diff --git a/a11y-query/hazel.js b/a11y-query/hazel.js index 3e395ed4..4e386644 100644 --- a/a11y-query/hazel.js +++ b/a11y-query/hazel.js @@ -567016,7 +567016,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, if(typeof action !== "number") switch(action[0]){ case 5: - if(action[1]){ + if(! action[1]){ var _F_ = model[2]; return [0, remove_last_char(model[1]), _F_]; } @@ -587042,7 +587042,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, break; case 11: var a$0 = update[1]; - if(model[2][9][2]) + if(model[2][9][2]){ var accessibilityModel = caml_call2(Haz3lweb_AccessibilityModel[11], model[6], [0, a$0]), @@ -587054,8 +587054,10 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, model[4], model[5], accessibilityModel, - model[7]], - _L_ = [0, model$1]; + model[7]]; + caml_call1(Haz3lweb_JsUtil[18], model$1[6][1]); + var _L_ = [0, model$1]; + } else{ a: { @@ -587305,7 +587307,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 32771 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 32773 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(globalThis){ "use strict"; var @@ -587369,7 +587371,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 32836 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 32838 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -587409,7 +587411,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 32877 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 32879 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -587455,7 +587457,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 32924 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 32926 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -587596,7 +587598,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 33066 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 33068 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -587716,7 +587718,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 33187 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 33189 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -587846,7 +587848,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 33318 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 33320 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -588396,7 +588398,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 33869 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 33871 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -588653,7 +588655,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 34127 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 34129 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -589234,7 +589236,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 34709 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 34711 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -589444,7 +589446,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 34957 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 34959 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -589735,7 +589737,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 35249 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35251 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -589877,7 +589879,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 35401 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35403 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -590126,7 +590128,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 35651 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35653 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -590162,7 +590164,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 35688 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35690 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -591263,7 +591265,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 36817 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 36819 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -591302,7 +591304,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 36857 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 36859 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -591600,7 +591602,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 37156 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37158 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -591870,7 +591872,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 37427 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37429 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -591924,7 +591926,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 37482 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37484 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -592005,7 +592007,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 37564 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37566 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -592147,7 +592149,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 37707 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37709 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -592266,7 +592268,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 37827 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37829 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -592349,7 +592351,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 37911 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37913 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -592611,7 +592613,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 38174 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 38176 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -592868,7 +592870,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 38432 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 38434 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593436,7 +593438,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 39034 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39036 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593492,7 +593494,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 39148 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39150 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593527,7 +593529,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 39184 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39186 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593910,7 +593912,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 39568 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39570 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594228,7 +594230,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 39887 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39889 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594309,7 +594311,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 39969 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39971 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594601,7 +594603,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 40262 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40264 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594871,7 +594873,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 40533 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40535 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594957,7 +594959,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 40620 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40622 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595068,7 +595070,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 40732 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40734 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595122,7 +595124,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 40787 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40789 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595549,7 +595551,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 41215 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 41217 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595971,7 +595973,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 41638 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 41640 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -596549,7 +596551,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 42217 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 42219 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -596727,7 +596729,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 44184 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 44186 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -596800,7 +596802,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } (globalThis)); -//# 44470 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 44472 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -596822,23 +596824,21 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, } var global_data = runtime.caml_get_global_data(), - cst = "", + cst$0 = "", + cst = ":", inputField_id = "a11y-input", outputArea_id = "a11y-output", Stdlib_Option = global_data.Stdlib__Option, Virtual_dom_Vdom = global_data.Virtual_dom__Vdom, Virtual_dom_Node = global_data.Virtual_dom__Node, - _a_ = [0, "a11y", 0], - cst_Your_input = "Your input...", - cst_text = "text"; + Stdlib = global_data.Stdlib, + _a_ = [0, "a11y", 0]; function input_view(id, input){ var - _g_ = [0, caml_call1(Virtual_dom_Node[5], input), 0], - _h_ = [0, caml_call1(Virtual_dom_Vdom[1][24], cst_Your_input), 0], - _i_ = [0, caml_call1(Virtual_dom_Vdom[1][22], id), _h_], - _j_ = [0, caml_call1(Virtual_dom_Vdom[1][35], cst_text), _i_], - _k_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _j_)]; - return caml_call3(Virtual_dom_Node[23], 0, _k_, _g_); + _g_ = caml_call2(Stdlib[28], cst, input), + _h_ = [0, caml_call1(Virtual_dom_Node[5], _g_), 0], + _i_ = [0, caml_call1(Virtual_dom_Vdom[1][22], id)]; + return caml_call3(Virtual_dom_Node[11], 0, _i_, _h_); } function output_view(id, content){ var @@ -596851,7 +596851,7 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, _b_ = [0, output_view - (outputArea_id, caml_call2(Stdlib_Option[3], model[2], cst)), + (outputArea_id, caml_call2(Stdlib_Option[3], model[2], cst$0)), 0], _c_ = [0, input_view(inputField_id, model[1]), _b_], _d_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _a_)]; @@ -607739,4 +607739,4 @@ Ou=[0,[0,0,[2,wr],v1,0,1],[2,M3],Cg,0,2],Ov=[2,xK],Ow=[0,[0,[0,[0,0,[2,LM],Ix,0, (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiR2VuZXJpY0hvb2siLCJpbml0IiwidXBkYXRlIiwiZGVzdHJveSIsImV4dHJhIiwiaG9va19zdGF0ZV9rZXkiLCJTeW1ib2wiLCJzdGF0ZSIsImZyb20iLCJ0byIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwianNvb19zeXNfZ2V0ZW52IiwicHJvY2VzcyIsImdsb2JhbFRoaXMiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJidWZmZXIiLCJjYW1sX2ludDY0X2Zvcm1hdCIsIndiYXNlIiwiY3Z0YmwiLCJwIiwiY2FtbF9leHBtMV9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJjMSIsImMyIiwidiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiZnNfbm9kZV9zdXBwb3J0ZWQiLCJtYWtlX3BhdGhfaXNfYWJzb2x1dGUiLCJwb3NpeCIsInBhdGgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwiY29tcCIsIm5jb21wIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJNbEJ5dGVzIiwiY29udGVudHMiLCJjb250ZW50IiwiY2FtbF9pc19tbF9ieXRlcyIsImNhbWxfaXNfbWxfc3RyaW5nIiwiY2FtbF9ieXRlc19vZl9hcnJheSIsIlVpbnQ4QXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfYmxpdF9ieXRlcyIsInMxIiwiaTEiLCJzMiIsImkyIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VGZCIsImZpbGUiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJzZWVuIiwibSIsImVudHJ5Iiwib2siLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJidWZfb2Zmc2V0IiwicmVhZCIsIk1sTm9kZURldmljZSIsImNvbnN0cyIsImlzQ2hhcmFjdGVyRGV2aWNlIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiY2FtbF9zeXNfcmVuYW1lIiwib19yb290Iiwibl9yb290IiwiY2FtbF9sb2cxMF9mbG9hdCIsImNhbWxfcnVudGltZV93YXJuaW5ncyIsImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MiLCJib29sIiwiY2FtbF9jbGFzc2lmeV9mbG9hdCIsImlzRmluaXRlIiwiaXNOYU4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9yZWZpbGwiLCJjaGFuIiwic3RyX2EiLCJucmVhZCIsImNhbWxfYXJyYXlfYm91bmRfZXJyb3IiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsImNoYW5pZCIsInByZXZfbWF4IiwiY2FtbF9nY19taW5vciIsInVuaXQiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImJhIiwiY2FtbF9tbF9pbnB1dF9ibG9jayIsImF2YWlsIiwiY2FtbF9tbF9pbnB1dF9iaWdhcnJheSIsImNhbWxfaW50NjRfb2ZfYnl0ZXMiLCJjYW1sX2JhX3VpbnQ4X2dldDY0IiwiaTAiLCJvZnMiLCJiMSIsImIyIiwiYjMiLCJiNCIsImI1IiwiYjYiLCJiNyIsImI4IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfaW50NjRfbWFyc2hhbCIsIndyaXRlciIsInNpemVzIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2ludF9jb21wYXJlIiwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyIsImJhMSIsImJhMV9vZmYiLCJiYTIiLCJiYTJfb2ZmIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsInBvczEiLCJieXRlczIiLCJwb3MyIiwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NyZWF0ZV9maWxlIiwianNvb19jcmVhdGVfZmlsZSIsImNhbWxfZnNfaW5pdCIsInRtcCIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwibmFyZ3MiLCJleHRyYV9hcmdzIiwiY2FtbF9jYWxsYmFjayIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3N5c19jaGRpciIsImRpciIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmciLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImJpZ3N0cmluZ19maW5kIiwiYnMiLCJjaHIiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCIsImNhbWxfYmFfc2V0XzIiLCJjYW1sX2FyZ3YiLCJtYWluIiwiYXJndiIsImFyZ3MyIiwiY2FtbF9leGVjdXRhYmxlX25hbWUiLCJjYW1sX2pzX2V2YWxfc3RyaW5nIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QiLCJ2b3V0cHV0IiwidnN0ZG91dCIsInZzdGRlcnIiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIiLCJjYW1sX2NoZWNrX2JvdW5kIiwiYXJyYXkiLCJjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyIsImJpZ3N0cmluZyIsImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJiYXNlIiwiYmFja3RyayIsImNhbWxfc3lzX2ZpbGVfZXhpc3RzIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfYXJyYXlfc3ViIiwiY2FtbF9ieXRlc19lcXVhbCIsImNhbWxfZ3Jfc2l6ZV94IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHoiLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfTUQ1SW5pdCIsIkFycmF5QnVmZmVyIiwiYjMyIiwiVWludDMyQXJyYXkiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjb21wYXJlX25hdF9yZWFsIiwiY2FtbF9nY19zZXQiLCJjYW1sX2pzX2dldCIsImpzX3BlcmZvcm1hbmNlIiwiX2UiLCJqc19wcm9mX21hcmsiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJCYXNlX2hhc2hfc3RyaW5nIiwiY2FtbF9nY19jb21wYWN0aW9uIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiY2FtbF9zeXNfZmRzIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2Nsb3NlX2NoYW5uZWwiLCJjb3JlX21kNV9mZCIsImljIiwiY2FtbF9lcGhlX2dldF9rZXkiLCJjYW1sX3VuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiIsImV4cG9uZW50Iiwib25lIiwibXVsIiwiY2FtbF9hdG9taWNfZXhjaGFuZ2UiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImlzX2RpZ2l0X3plcm8iLCJjYW1sX3VuaXhfbHN0YXQiLCJjYW1sX3VuaXhfbHN0YXRfNjQiLCJjYW1sX2pzX3NldCIsImNhbWxfYXJyYXlfZ2V0IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwidGEiLCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX3JlYWxsb2MiLCJuZXdfZGF0YSIsIm5ld19iaWdzdHJpbmciLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9tYXliZV9wcmludF9zdGF0cyIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF91bml4X2hhc19zeW1saW5rIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJCYXNlX2FtX3Rlc3RpbmciLCJjYW1sX2J5dGVzX2xlc3N0aGFuIiwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsImNhbWxfc3lzX2dldGN3ZCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3VsdCIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfaW50NjRfb3IiLCJjYW1sX2x4bV9uZXh0Iiwic2hpZnRfbCIsInNoaWZ0X3IiLCJvciIsInhvciIsInJvdGwiLCJnZXQiLCJzZXQiLCJNIiwiZGFiYSIsInEwIiwicTEiLCJzdCIsIngwIiwiY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiIsImNhbWxfbGlzdF90b19qc19hcnJheSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImJpZ3N0cmluZ19tZW1jbXBfc3R1YiIsInZfczEiLCJ2X3MxX3BvcyIsInZfczIiLCJ2X3MyX3BvcyIsInZfbGVuIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsIlVJbnQ4QXJyYXlSZWFkZXIiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwicmVhZHZscSIsIm92ZXJmbG93IiwibjciLCJoZWFkZXJfbGVuIiwiZGF0YV9sZW4iLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZGVjb21wcmVzc19pbnB1dCIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwibWFnaWMiLCJjb21wcmVzc2VkIiwidW5jb21wcmVzc2VkX2RhdGFfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwiY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJiaWdzdHJpbmdfYWxsb2MiLCJfIiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJyZV9zZWFyY2hfYmFja3dhcmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9vdXRwdXRfdGEiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwibmV3X2RpbXMiLCJjb3JlX2djX2NvbXBhY3Rpb25zIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9zdHJpbmdfaGFzaCIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJCYXNlX2ludF9tYXRoX2ludDMyX2N0eiIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCIsImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCIsImNhbWxfY3JlYXRlX3N0cmluZyIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiIsImJpZ3N0cmluZ19tZW1zZXRfc3R1YiIsInZfcG9zIiwidl9jaGFyIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyIsIkJhc2VfaW50X21hdGhfaW50NjRfY2x6IiwiY2FtbF9hcnJheV9hcHBlbmQiLCJsMSIsImwyIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF90aW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9qc19leHByIiwiY2FtbF9qc190b19zdHJpbmciLCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY29yZV9nY190b3BfaGVhcF93b3JkcyIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJsZW5ndGhfbmF0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQiLCJpbmZvIiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9tZW1wcm9mX2Rpc2NhcmQiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6IiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nIiwiYmFfb2ZmIiwic3RyX29mZiIsImNhbWxfYnVpbGRfc3ltYm9scyIsInRvYyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZ2Nfc3RhdCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImJpZ3N0cmluZ2FmX21lbWNociIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9tZXRob2RfY2FjaGUiLCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kIiwiY2FjaGVpZCIsIm1ldGhzIiwibGkiLCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX3JvdW5kX2Zsb2F0IiwianNfcHJvZl9tZWFzdXJlIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6IiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHoiLCJpc196ZXJvIiwibGFuZCIsInNtYWxsX2ludDY0IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF9kb21haW5fZGxzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MzIiLCJjYW1sX2ZyZXhwX2Zsb2F0IiwibmVnIiwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIiLCJjb3JlX3RpbWVfbnNfZm9ybWF0IiwidGltZSIsImZvcm1hdGpzIiwianN0cmluZyIsImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsIkJhc2VfaGFzaF9kb3VibGUiLCJjYW1sX2pzX25ldyIsImNhbWxfZ3JfY3VycmVudF95IiwiY2FtbF9mb3JtYXRfaW50IiwiY29yZV9nY19oZWFwX3dvcmRzIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8iLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4iLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjb3JlX2djX21pbm9yX3dvcmRzIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJtc190b19uYW5vIiwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvIiwibXMiLCJtc19pNjMiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2FycmF5X3NldCIsIm5ld3ZhbCIsImNhbWxfYWxsb2Nfc3RhY2siLCJodiIsImh4IiwiaGYiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsInNldF9kaWdpdF9uYXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY29yZV9nY19tYWpvcl93b3JkcyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJiaWdzdHJpbmdfYmxpdF9zdHViIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwibWF4X2ludCIsIm1pbl9pbnQiLCJzeW1ib2wiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsInIiLCJsZW4kMSIsIm9mcyQxIiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2xpbmUiLCJidWlsZF9yZXN1bHQiLCJidWYiLCJwb3MkMCIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9pbl9ub2VyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnQiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2Zsb2F0IiwicmVhZF9mbG9hdF9vcHQiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sJDEiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJkb19hdF9leGl0IiwiZXhpdCIsInJldGNvZGUiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwibWFwIiwidiQwIiwiZm9sZCIsImVxdWFsIiwiZTEiLCJlMiIsInYxIiwidjIiLCJ2MSQwIiwidjIkMCIsImNvbXBhcmUiLCJvY2FtbF92ZXJzaW9uIiwib2NhbWxfcmVsZWFzZSIsImV4ZWN1dGFibGVfbmFtZSIsIm9zX3R5cGUiLCJiYWNrZW5kX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJtYXhfYXJyYXlfbGVuZ3RoIiwibWF4X2Zsb2F0YXJyYXlfbGVuZ3RoIiwibWF4X3N0cmluZ19sZW5ndGgiLCJiaWdfZW5kaWFuIiwid29yZF9zaXplIiwiaW50X3NpemUiLCJnZXRlbnZfb3B0IiwiaW50ZXJhY3RpdmUiLCJzZXRfc2lnbmFsIiwic2lnX251bSIsInNpZ19iZWgiLCJzaWdhYnJ0Iiwic2lnYWxybSIsInNpZ2ZwZSIsInNpZ2h1cCIsInNpZ2lsbCIsInNpZ2ludCIsInNpZ2tpbGwiLCJzaWdwaXBlIiwic2lncXVpdCIsInNpZ3NlZ3YiLCJzaWd0ZXJtIiwic2lndXNyMSIsInNpZ3VzcjIiLCJzaWdjaGxkIiwic2lnY29udCIsInNpZ3N0b3AiLCJzaWd0c3RwIiwic2lndHRpbiIsInNpZ3R0b3UiLCJzaWd2dGFscm0iLCJzaWdwcm9mIiwic2lnYnVzIiwic2lncG9sbCIsInNpZ3N5cyIsInNpZ3RyYXAiLCJzaWd1cmciLCJzaWd4Y3B1Iiwic2lneGZzeiIsImNhdGNoX2JyZWFrIiwib24iLCJkZXZlbG9wbWVudF92ZXJzaW9uIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwiZm9yY2luZ190YWciLCJjb250X3RhZyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImN1c3RvbV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJvYmoiLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInNldCIsImluY3IiLCJkZWNyIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUkMCIsInJlc3VsdCQwIiwiY2xvc3VyZSIsInJlc3VsdCIsImUkMCIsImZvcmNlX2xhenlfYmxvY2siLCJmb3JjZV9nZW4iLCJsenYiLCJ0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJ4cyQxIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiYWNjdSQxIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmaW5kIiwiZmluZF9tYXAiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJub25lIiwic29tZSIsInZhbHVlIiwiZGVmYXVsdCQwIiwiZ2V0IiwiYmluZCIsImpvaW4iLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwicmV2X2luaXRfdGhyZXNob2xkIiwiZmxhdHRlbiIsInJldl9tYXAiLCJmb2xkX3JpZ2h0IiwiYTIiLCJhMSIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwibWFrZSIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXRfdXRmXzhfdWNoYXIiLCJsYXN0JDEiLCJsYXN0JDAiLCJsYXN0IiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJvZl9saXN0IiwiaW5wdXRfYXJyYXkiLCJlbHQiLCJvdXRwdXRfYXJyYXkiLCJlbHQkMCIsImFjYyQyIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImUkMSIsImokMCIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImkyJDAiLCJkJDAiLCJzMiQwIiwiaTEkMCIsImQkMSIsInMxJDAiLCJpc29ydHRvIiwic3Jjb2ZzIiwic29ydHRvIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInBpIiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic2l6ZSIsImR1bW15X3BvcyIsInplcm9fcG9zIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInJlYWRfZnVuIiwic3RoIiwid2l0aF9wb3NpdGlvbnMiLCJhdXhfYnVmZmVyIiwibGV4YnVmIiwicmVhZCIsIm5ld2xlbiIsIm5ld2J1ZiIsImZyb21fY2hhbm5lbCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiZXhuJDAiLCJleG4iLCJjdXJyX2NoYXIiLCJ0b2siLCJwZWVrX3ZhbCIsInN5bWJvbF9zdGFydF9wb3MiLCJzdCIsImVuIiwic3ltYm9sX2VuZF9wb3MiLCJyaHNfc3RhcnRfcG9zIiwicmhzX2VuZF9wb3MiLCJzeW1ib2xfc3RhcnQiLCJzeW1ib2xfZW5kIiwicmhzX3N0YXJ0IiwicmhzX2VuZCIsImlzX2N1cnJlbnRfbG9va2FoZWFkIiwicGFyc2VfZXJyb3IiLCJoZWlnaHQiLCJobCIsImgkMCIsImhyIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2IiwicmxsIiwiYWRkIiwic2luZ2xldG9uIiwiYWRkX21pbl9lbGVtZW50IiwiYWRkX21heF9lbGVtZW50IiwicmgiLCJsaCIsIm1pbl9lbHQiLCJtaW5fZWx0X29wdCIsIm1heF9lbHQiLCJtYXhfZWx0X29wdCIsInJlbW92ZV9taW5fZWx0IiwiciQwIiwicHJlcyIsInByZXMkMCIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwidG9fcmVhZCQxIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsInByZXZpb3VzJDAiLCJzdGFydCQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJyZWxlYXNlIiwiYWNxdWlyZSIsInRyeV9hY3F1aXJlIiwicmV0IiwiZ2V0X3ZhbHVlIiwibWFrZSQwIiwicmVsZWFzZSQwIiwiYWNxdWlyZSQwIiwidHJ5X2FjcXVpcmUkMCIsImNwdV9yZWxheCIsInVuaXF1ZV92YWx1ZSIsImNyZWF0ZV9kbHMiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJraSIsIm1heWJlX2dyb3ciLCJzeiIsIm5ld19zeiIsIm5ld19zdCIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJzcGF3biIsInBrIiwidGVybV9tdXRleCIsInRlcm1fY29uZGl0aW9uIiwidGVybV9zdGF0ZSIsImJvZHkiLCJleCQwIiwiZXgiLCJyZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5IiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwiZm10dHkkNCIsImZtdHR5JDUiLCJmbXR0eSQ2IiwiZm10dHkkNyIsImZtdHR5JDgiLCJmbXR0eSQ5Iiwic3ViX2ZtdHR5IiwiZm10dHkkMTAiLCJzdWJfZm10dHkkMCIsImZtdHR5JDExIiwiZm10dHkkMTIiLCJmbXR0eSQxMyIsImZtdHR5JDE0IiwiZm10dHkkMTUiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJjdXIiLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwic2VlbiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG8iLCJjb25zdHJ1Y3RvciIsImZpZWxkc19vcHQiLCJjb25zdHJ1Y3RvciQwIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwiZXZlbnRsb2dfcGF1c2UiLCJldmVudGxvZ19yZXN1bWUiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIiLCJpbnQ2NCIsImludCQwIiwibmF0aXZlaW50IiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiYXJyIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInJlaW5pdCIsInNlZWQiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJpbnRhdXgiLCJib3VuZCIsImZ1bGxfaW50IiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImZsb2F0JDAiLCJib29sIiwibWtfZGVmYXVsdCIsInJhbmRvbV9rZXkiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiYml0czMyJDAiLCJiaXRzNjQkMCIsIm5hdGl2ZWJpdHMkMCIsImZ1bGxfaW5pdCIsInNlbGZfaW5pdCIsInNwbGl0JDAiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmdfa2V5IiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInNlZWRlZF9oYXNoIiwiaGFzaF9wYXJhbSIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImNvdW50IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJmbHVzaCIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwic3RkYnVmX2tleSIsInN0cl9mb3JtYXR0ZXJfa2V5IiwiYnVmZmVyZWRfb3V0X3N0cmluZyIsImJ1ZmZlcmVkX291dF9mbHVzaCIsInN0ZF9idWZfa2V5IiwiZXJyX2J1Zl9rZXkiLCJzdGRfZm9ybWF0dGVyX2tleSIsImVycl9mb3JtYXR0ZXJfa2V5IiwiZ2V0X3N0ZF9mb3JtYXR0ZXIiLCJnZXRfZXJyX2Zvcm1hdHRlciIsImdldF9zdHJfZm9ybWF0dGVyIiwiZ2V0X3N0ZGJ1ZiIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIiwib3V0cHV0JDAiLCJmbHVzaCQwIiwic3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsImZzIiwiZnMkMCIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiY2xvc2VfaW4iLCJpYyQwIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJsb3dlcmNhc2UiLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZl9nZW4iLCJlZiIsImFyZ3MkMSIsImV4YyQwIiwiZXhjIiwiYXJncyQwIiwia3NjYW5mIiwia3NjYW5mX29wdCIsImJzY2FuZiIsImJzY2FuZl9vcHQiLCJrc3NjYW5mIiwic3NjYW5mIiwic3NjYW5mX29wdCIsInNjYW5mIiwic2NhbmZfb3B0IiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiZ2V0X2RhdGEiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsImluaXRfbW9kX2Jsb2NrIiwiY29tcHMkMCIsIm1vZHUiLCJzaGFwZSIsImZuJDAiLCJjb21wcyIsImluaXRfbW9kIiwidXBkYXRlX21vZF9ibG9jayIsImNsIiwidXBkYXRlX21vZCIsInBybmciLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwic2V0X2RhdGEiLCJlcGgiLCJxdWVyeSIsInNldF9rZXlfZGF0YSIsInRlc3Rfa2V5IiwidCQwIiwiZ2V0X2tleTEiLCJzZXRfa2V5MSIsImdldF9rZXkyIiwic2V0X2tleTIiLCJnZXRfZGF0YSQwIiwic2V0X2RhdGEkMCIsIm1ha2UkMSIsImtleTEiLCJrZXkyIiwicXVlcnkkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsInNlZWRlZF9oYXNoJDAiLCJtYWtlJDIiLCJhZGQkMCIsInRlc3Rfa2V5cyIsInJlbW92ZSQwIiwiZmluZCQwIiwibGVuZ3RoJDAiLCJjbGVhciQwIiwibGVuZ3RoJDEiLCJnZXRfa2V5JDAiLCJzZXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwic2V0X2RhdGEkMSIsIm1ha2UkMyIsInF1ZXJ5JDEiLCJtYWtlJDQiLCJhZGQkMSIsInRlc3Rfa2V5cyQwIiwicmVtb3ZlJDEiLCJmaW5kJDEiLCJsZW5ndGgkMiIsImNsZWFyJDEiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiZ2VuZXJpY19iYXNlbmFtZSIsImlzX2Rpcl9zZXAiLCJnZW5lcmljX2Rpcm5hbWUiLCJpc19yZWxhdGl2ZSIsImlzX2ltcGxpY2l0IiwiY2hlY2tfc3VmZml4Iiwic3VmZiIsImNob3Bfc3VmZml4X29wdCIsImxlbl9mIiwidGVtcF9kaXJfbmFtZSIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDAiLCJsb29wJDAiLCJsb29wX2JzIiwiYWRkX2JzIiwicXVvdGVfY21kX2ZpbGVuYW1lIiwicXVvdGVfY29tbWFuZCQwIiwiZHJpdmVfYW5kX3BhdGgiLCJkaXJuYW1lJDAiLCJwYXRoIiwiZHJpdmUiLCJkaXIiLCJiYXNlbmFtZSQwIiwiYmFzZW5hbWUkMSIsImRpcm5hbWUkMSIsIm51bGwkMyIsImN1cnJlbnRfZGlyX25hbWUkMiIsInBhcmVudF9kaXJfbmFtZSQyIiwiZGlyX3NlcCQyIiwiaXNfZGlyX3NlcCQxIiwiaXNfcmVsYXRpdmUkMSIsImlzX2ltcGxpY2l0JDEiLCJjaGVja19zdWZmaXgkMSIsImNob3Bfc3VmZml4X29wdCQxIiwidGVtcF9kaXJfbmFtZSQxIiwicXVvdGUkMSIsInF1b3RlX2NvbW1hbmQkMSIsImJhc2VuYW1lJDIiLCJkaXJuYW1lJDIiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJpMCIsImV4dGVuc2lvbiIsImNob3BfZXh0ZW5zaW9uIiwicmVtb3ZlX2V4dGVuc2lvbiIsInRlbXBfZmlsZV9uYW1lIiwidGVtcF9kaXIiLCJyYW5kb21fc3RhdGUiLCJybmQiLCJjdXJyZW50X3RlbXBfZGlyX25hbWUiLCJzZXRfdGVtcF9kaXJfbmFtZSIsImdldF90ZW1wX2Rpcl9uYW1lIiwidGVtcF9maWxlIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93Iiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4kMCIsIm5ld19sZW4kMSIsImlucHV0X2FsbCIsImNodW5rX3NpemUiLCJpbml0aWFsX3NpemUkMCIsImluaXRpYWxfc2l6ZSQxIiwibnJlYWQiLCJidWYkMiIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJzZXRfYmluYXJ5X21vZGUiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJtYXhfaW50IiwibWluX2ludCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJib29sX29mX3N0cmluZ19vcHQiLCJib29sX29mX3N0cmluZyIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnRfb3B0IiwicmVhZF9pbnQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfZmxvYXQiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsIm9wZW5fb3V0X2dlbiIsImZsdXNoIiwiZmx1c2hfYWxsIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0X2J5dGVzIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfdmFsdWUiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfb3V0Iiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwib3Blbl9pbl9nZW4iLCJpbnB1dF9jaGFyIiwiaW5wdXRfbGluZSIsImlucHV0IiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsImNsb3NlX2luX25vZXJyIiwic2V0X2JpbmFyeV9tb2RlX2luIiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCIsImV4aXQiLCJhdF9leGl0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiZG9fYXRfZXhpdCIsImRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IiwiYm9vbF90b19pbnQiLCJzeW1ib2wkMyIsInN5bWJvbCQ0Iiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsImFzY2VuZGluZyIsIm1heCQwIiwibWluJDAiLCJhc2NlbmRpbmckMCIsImRlc2NlbmRpbmckMCIsIm1heCQxIiwibWluJDEiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJhc2NlbmRpbmckMSIsImRlc2NlbmRpbmckMSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCQyIiwibWluJDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsIm1heCQzIiwibWluJDMiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJhc2NlbmRpbmckMyIsImRlc2NlbmRpbmckMyIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJtYXgkNCIsIm1pbiQ0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiYXNjZW5kaW5nJDQiLCJkZXNjZW5kaW5nJDQiLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwibWF4JDUiLCJtaW4kNSIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsImFzY2VuZGluZyQ1IiwiZGVzY2VuZGluZyQ1IiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQ2IiwibWluJDYiLCJpIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwic3ltYm9sJDQyIiwiYXNjZW5kaW5nJDYiLCJkZXNjZW5kaW5nJDYiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwibWF4JDciLCJtaW4kNyIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsImFzY2VuZGluZyQ3IiwiZGVzY2VuZGluZyQ3IiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsIm1heCQ4IiwibWluJDgiLCJzeW1ib2wkNDkiLCJzeW1ib2wkNTAiLCJzeW1ib2wkNTEiLCJzeW1ib2wkNTIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJhc2NlbmRpbmckOCIsImRlc2NlbmRpbmckOCIsImNvbXBhcmUkNSIsImVxdWFsJDUiLCJtYXgkOSIsIm1pbiQ5Iiwic3ltYm9sJDU1Iiwic3ltYm9sJDU2Iiwic3ltYm9sJDU3Iiwic3ltYm9sJDU4Iiwic3ltYm9sJDU5Iiwic3ltYm9sJDYwIiwiYXNjZW5kaW5nJDkiLCJkZXNjZW5kaW5nJDkiLCJjb21wYXJlJDYiLCJlcXVhbCQ2IiwibWF4JDEwIiwibWluJDEwIiwic3ltYm9sJDYxIiwic3ltYm9sJDYyIiwic3ltYm9sJDYzIiwic3ltYm9sJDY0IiwiYXNyIiwibGFuZCIsImxub3QkMCIsImxvciIsImxzbCIsImxzciIsImx4b3IiLCJtb2QiLCJhYnMkMCIsImZhaWx3aXRoJDAiLCJmc3QiLCJpbnZhbGlkX2FyZyQwIiwic25kIiwicGh5c19lcXVhbCIsImRlY3IiLCJpbmNyIiwiZmxvYXRfb2Zfc3RyaW5nIiwiYW1fdGVzdGluZyIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwidCIsImYiLCJmb2xkX3JpZ2h0IiwiaXRlciIsIml0ZXJpIiwibWFwIiwibWFwaSIsInN0YWJsZV9zb3J0Iiwic3dhcCIsImoiLCJlbHRfaSIsImVsdF9qIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInRvX2ludCIsInVuc2FmZV9vZl9pbnQiLCJ1cHBlcmNhc2UiLCJpbnRfaXNfb2siLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJvZl9pbnQiLCJvZl9pbnRfZXhuIiwidDEiLCJ0MiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJzdWNjIiwiaGRfZXhuIiwibGVuZ3RoIiwicmV2X2FwcGVuZCIsInRsX2V4biIsInVuemlwIiwiZXhpc3RzIiwiZXhpc3RzMl9vayIsImwxIiwibDIiLCJmb2xkMl9vayIsImZvcl9hbGwiLCJmb3JfYWxsMl9vayIsIml0ZXIyX29rIiwibm9udGFpbF9tYXAiLCJub250YWlsX21hcGkiLCJwYXJ0aXRpb24iLCJyZXZfbWFwIiwicmV2X21hcDJfb2siLCJzb3J0IiwibCIsInJldiIsInJlcyIsInJlc3QiLCJhIiwiYiIsImhhc2hfZm9sZF91bml0IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZm9sZF9zdHJpbmciLCJhc19pbnQiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImhhc2hfZm9sZF9vcHRpb24iLCJoYXNoX2ZvbGRfZWxlbSIsImhhc2hfZm9sZF9saXN0IiwicyQxIiwibGlzdCQxIiwicyQyIiwibGlzdCIsImxpc3QkMCIsInMkMCIsImhhc2hfZm9sZF9sYXp5X3QiLCJoYXNoX2ZvbGRfcmVmX2Zyb3plbiIsImhhc2hfZm9sZF9hcnJheV9mcm96ZW4iLCJhcnJheSIsImUiLCJpJDAiLCJoYXNoX25hdGl2ZWludCIsImhhc2hfaW50NjQiLCJoYXNoX2ludDMyIiwiaGFzaF9jaGFyIiwiaGFzaF9pbnQiLCJoYXNoX2Jvb2wiLCJoYXNoX3N0cmluZyIsImhhc2hfZmxvYXQiLCJoYXNoX3VuaXQiLCJzZWVkIiwib2ZfZm9sZCIsImhhc2hfZm9sZF90IiwicnVuIiwiZm9sZGVyIiwib3B0Iiwic3RoIiwiY29tcGFyZV9zdGF0ZSIsInN0YXRlX3RvX3N0cmluZyIsInN0YXRlIiwidCQwIiwidCQxIiwidCQyIiwidCQzIiwidCQ0IiwidCQ1IiwiY29tcGFyZV9hYnN0cmFjdCIsInR5cGVfbmFtZSIsImVxdWFsX2Fic3RyYWN0IiwiY29tcGFyZV9ib29sIiwiY29tcGFyZV9jaGFyIiwiY29tcGFyZV9mbG9hdCIsImNvbXBhcmVfaW50IiwiY29tcGFyZV9pbnQzMiIsImNvbXBhcmVfaW50NjQiLCJjb21wYXJlX25hdGl2ZWludCIsImNvbXBhcmVfc3RyaW5nIiwiY29tcGFyZV91bml0IiwiY29tcGFyZV9hcnJheSIsImNvbXBhcmVfZWx0IiwibGVuX2EiLCJsZW5fYiIsInJldCIsInIiLCJjb21wYXJlX2xpc3QiLCJhJDAiLCJiJDAiLCJ5cyIsInhzIiwiY29tcGFyZV9vcHRpb24iLCJjb21wYXJlX3JlZiIsImVxdWFsX2Jvb2wiLCJlcXVhbF9jaGFyIiwiZXF1YWxfaW50IiwiZXF1YWxfaW50MzIiLCJlcXVhbF9pbnQ2NCIsImVxdWFsX25hdGl2ZWludCIsImVxdWFsX3N0cmluZyIsImVxdWFsX3VuaXQiLCJlcXVhbF9mbG9hdCIsImVxdWFsX2FycmF5IiwiZXF1YWxfZWx0IiwiZXF1YWxfbGlzdCIsImVxdWFsX29wdGlvbiIsImVxdWFsX3JlZiIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsImhhc2giLCJoc3YiLCJhcmciLCJhMCIsImhzdiQwIiwiYTAkMCIsImhzdiQxIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJmdW5jIiwicmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UiLCJpbml0aWFsaXplX21vZHVsZSIsImNsZWFyX2JhY2t0cmFjZSIsIndpdGhfcmV0dXJuIiwiaXNfYWxpdmUiLCJyZXR1cm4kMCIsIndpdGhfcmV0dXJuX29wdGlvbiIsInByZXBlbmQiLCJwYXJhbSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwiYmluZCQwIiwicmV0dXJuJDEiLCJtYXAkMCIsInRvX21vbmFkIiwib2ZfbW9uYWQiLCJkZXJpdmVkX21hcCIsIm1hcDIiLCJ0YSIsInRiIiwibWFwMyIsInRjIiwic3ltYm9sJDAiLCJ1Iiwic3ltYm9sJDEiLCJ0ZiIsImZhYiIsImMiLCJhcHBseSIsIm1mIiwibXgiLCJ0eCIsImN1c3RvbV9tYXAiLCJhcHBseSQwIiwiYmxpdF9zdHJpbmciLCJtYWtlIiwidW5zYWZlX2JsaXQiLCJ1bnNhZmVfdG9fc3RyaW5nIiwidW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211IiwiY29tcGFyYXRvciIsImVycm9yX3NvdXJjZV8wMTEiLCJjbXBfZiIsImNtcF9zIiwiaGFzaF9mb2xkX2YiLCJoYXNoX2ZvbGRfcyIsInRfb2Zfc2V4cCIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwiZl9zZXhwX2dyYW1tYXIiLCJzX3NleHBfZ3JhbW1hciIsIm9wYXF1ZV9pZGVudGl0eSIsIm5hbWUiLCJnZXQiLCJmc2V0Iiwic2V0dGVyIiwidXBkYXRlciIsImZpZWxkIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInNlcCIsIm4iLCJuJDAiLCJuJDEiLCJoc3YkMiIsInBvc19jbnVtXzAxMCIsInBvc19ib2xfMDA4IiwicG9zX2xudW1fMDA2IiwicG9zX2ZuYW1lXzAwNCIsImFyZ18wMTEiLCJibmRzXzAwMyIsImFyZ18wMDkiLCJibmRzXzAwMyQwIiwiYXJnXzAwNyIsImJuZHNfMDAzJDEiLCJhcmdfMDA1IiwiYm5kc18wMDMkMiIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJtYWtlX2xvY2F0aW9uX3N0cmluZyIsInBvc19mbmFtZSIsInBvc19sbnVtIiwicG9zX2NudW0iLCJwb3NfYm9sIiwiaXNfZW1wdHkiLCJwYXJ0aXRpb25fbWFwIiwiZnN0JDAiLCJ5JDAiLCJzbmQkMCIsImVycm9yX3NvdXJjZV8wMDUiLCJvZl9hXzAwMSIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMyIsInJlczBfMDI0IiwiYV9zZXhwX2dyYW1tYXIiLCJiX3NleHBfZ3JhbW1hciIsImNtcF9hIiwiY21wX2IiLCJhXzAyNyIsImJfMDI4IiwiYV8wMjkiLCJiXzAzMCIsImFfMDMxIiwiYl8wMzIiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3IiwiYl8wMzgiLCJoYXNoX2ZvbGRfYSIsImhhc2hfZm9sZF9iIiwieCQwIiwiY2hlY2tfb2siLCJjaGVja19lcnJvciIsIm9rIiwiZXJyb3IiLCJmYWlsIiwiZmFpbGYiLCJtYXBfZXJyb3IiLCJiaW5kJDEiLCJtYXAkMSIsInJldHVybiQyIiwiaXNfb2siLCJpc19lcnJvciIsIm9mX29wdGlvbiIsIml0ZXJfZXJyb3IiLCJ0b19laXRoZXIiLCJvZl9laXRoZXIiLCJva19pZl90cnVlIiwiYm9vbCIsInRyeV93aXRoIiwib2tfZXhuIiwib2tfb3JfZmFpbHdpdGgiLCJjb21iaW5lIiwiZXJyIiwib2sxIiwib2syIiwiZXJyMSIsImVycjIiLCJjb21iaW5lX2Vycm9ycyIsImVycnMiLCJjb21iaW5lX2Vycm9yc191bml0IiwiY291bnQiLCJzdW0iLCJNIiwiZm9sZF9yZXN1bHQiLCJhY2MiLCJpdGVtIiwiZm9sZF91bnRpbCIsImZpbmlzaCIsIm1pbl9lbHQiLCJlbHQiLCJtYXhfZWx0IiwiZmluZF9tYXAiLCJmaW5kIiwidG9fYXJyYXkiLCJpdGVyJDAiLCJpdGVyJDEiLCJsZW5ndGgkMCIsImxlbmd0aCQxIiwiaXNfZW1wdHkkMCIsInN1bSQwIiwibSIsImNvdW50JDAiLCJleGlzdHMkMCIsImZvcl9hbGwkMCIsImZpbmRfbWFwJDAiLCJmaW5kJDAiLCJ0b19saXN0JDAiLCJ0b19hcnJheSQwIiwibWluX2VsdCQwIiwibWF4X2VsdCQwIiwiZm9sZF9yZXN1bHQkMCIsImZvbGRfdW50aWwkMCIsImZvbGQkMCIsIm1lbSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJzZXhwX29mX2EiLCJzbG93X2NoZWNrX3Bvc19sZW5fZXhuIiwicG9zIiwidG90YWxfbGVuZ3RoIiwiY2hlY2tfcG9zX2xlbl9leG4iLCJzdG9wIiwiZ2V0X3Bvc19sZW5fZXhuIiwibGVuJDAiLCJvZl9zdGF0ZSIsImFzc2lnbiIsImRzdCIsInNyYyIsImRzdCQwIiwic3JjJDAiLCJtYWtlX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJzcGxpdF9mcm9tX3BhcmVudCIsImdldF9zdGF0ZSIsInJhbmRvbV9rZXkiLCJmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMiLCJhbGxvd19pbl90ZXN0cyIsImJpdHMiLCJpbnQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJjaGFyJDAiLCJhc2NpaSIsIm1ha2Vfc2VsZl9pbml0IiwiaW50X29uXzY0Yml0cyIsImJvdW5kIiwiaW50X29uXzMyYml0cyIsImludCQxIiwiYml0cyQwIiwiZnVsbF9yYW5nZV9pbnQ2NCIsImJpdHMkMSIsImZ1bGxfcmFuZ2VfaW50MzIiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMkMCIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50IiwicmFpc2VfY3Jvc3NlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kIiwic3RyaW5nX29mX2JvdW5kIiwiaW50X2luY2wiLCJsbyIsImhpIiwiZGlmZiIsImludDMyX2luY2wiLCJuYXRpdmVpbnRfaW5jbCIsImludDY0X2luY2wiLCJmbG9hdCQwIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQyIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwic3RoJDAiLCJudW1fc3dhcHMiLCJ0aGlzX2kiLCJyYW5kb21faSIsImNvbnN0JDAiLCJub24iLCJmb3JldmVyIiwiZSQwIiwiY29tcG9zZSIsImciLCJmbGlwIiwiYXBwbHlfbl90aW1lcyIsIngkMSIsInNleHBfMDA2IiwiZXJyb3Jfc291cmNlXzAyMiIsImZvbGRfbGVmdCIsImFfMDA2IiwiYl8wMDciLCJhXzAwOCIsImJfMDA5Iiwib2ZfYV8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwic3RoJDEiLCJoZCIsInRsIiwibnRoIiwibnRoX2V4biIsInVub3JkZXJlZF9hcHBlbmQiLCJvZl9saXN0cyIsInNoYXJlZF9sZW5ndGgiLCJzaGFyZWRfbGVuZ3RoJDAiLCJjaGVja19sZW5ndGgyX2V4biIsInRhaWxfb2ZfYiIsInRhaWxfb2ZfYSIsImNoZWNrX2xlbmd0aDIiLCJvZl9saXN0cyQwIiwibDMiLCJjJDAiLCJjaGVja19sZW5ndGgzX2V4biIsInRhaWxfb2ZfYyIsIm4xIiwibjIiLCJuMyIsImNoZWNrX2xlbmd0aDMiLCJpdGVyMiIsIml0ZXIyX2V4biIsInJldl9tYXAyIiwicmV2X21hcDJfZXhuIiwiZm9sZDIiLCJmb2xkMl9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsImFjY3UiLCJmaWx0ZXIiLCJub3RfZm91bmQiLCJmaW5kX21hcF9leG4iLCJub3RfZm91bmQkMCIsImZpbmRfZXhuIiwiZmluZGkiLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsImZpbmRfbWFwaSIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsImZvcl9hbGxpIiwiZXhpc3RzaSIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDEkMCIsImwyJDAiLCJsMyQwIiwiYWMiLCJsMyQxIiwibDIkMSIsImwxJDEiLCJhYyQwIiwicmV2X21hcDMiLCJyZXZfbWFwM19leG4iLCJtYXAzX29rIiwibWFwM19leG4iLCJyZXZfbWFwX2FwcGVuZCIsImgiLCJsaXN0JDIiLCJ1bnppcDMiLCJ6IiwiemlwX2V4biIsInppcCIsInJldl9tYXBpIiwiZm9sZGluZ19tYXBpIiwiZm9sZF9tYXBpIiwiZm9sZGkiLCJmaWx0ZXJpIiwicmVkdWNlIiwicmVkdWNlX2V4biIsInJlZHVjZV9iYWxhbmNlZCIsInN0ZXBfYWNjdW0iLCJudW0iLCJudW0kMCIsImFjYyQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwic3ltYm9sJDIiLCJsYXN0X2V4biIsImxhc3QiLCJpc19wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsInByZWZpeCQxIiwiaGQkMCIsImZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIiwiYTEiLCJhMSQwIiwiYTIiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImwkMCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImNvdW50aSIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwiZmlsdGVyX21hcCIsInJldl9maWx0ZXJfbWFwaSIsImkkMSIsImZpbHRlcl9tYXBpIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJwYXJ0aXRpb25fdGYiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAxNCIsIm9mX2JfMDE1IiwieF8wMjMiLCJzZXhwXzAyMSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwic2V4cF9vZl90JDEiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsIm1lbSQwIiwicmVtb3ZlIiwiYWRkIiwiaW52ZXJzZSIsIm1hcCQyIiwiZWwiLCJzcGxpdF9uIiwidF9vcmlnIiwidGFrZSIsImRyb3AiLCJjaHVua3Nfb2YiLCJsJDEiLCJzdWJsaXN0Iiwic3BsaXRfd2hpbGUiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImRyb3BfbGFzdCIsImRyb3BfbGFzdF9leG4iLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsImxpc3QxIiwibGlzdDIiLCJjb25jYXRfbm9fb3JkZXIiLCJjb25zIiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwiYXJyIiwicmFuZG9tX2VsZW1lbnRfZXhuIiwicmFuZG9tX2VsZW1lbnQiLCJjbXAiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMV8wMTMiLCJyZXMyXzAxNCIsImFyZzFfMDE2IiwicmVzMV8wMTgiLCJhcmcyXzAyMSIsImFyZzFfMDIwIiwiYXJnMF8wMTkiLCJyZXMxXzAyMyIsInJlczJfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJ0b19zdHJpbmdzX2h1bSIsInN0cmluZyIsInNleHAkMCIsInNleHAkMSIsInRhZyIsInRhZyQwIiwic2V4cCQyIiwidGFnJDEiLCJib2R5IiwidHJ1bmNfYWZ0ZXIiLCJ0cyQwIiwidHMkMSIsImFjJDEiLCJ0b19zZXhwc19odW0iLCJoZXJlIiwiaGVyZSQwIiwidG9fc2V4cF9odW0iLCJzZXhwcyIsInRvX21lc3NhZ2UiLCJpbmZvIiwib2ZfbWVzc2FnZSIsInRvX3N0cmluZ19odW0iLCJtZXNzYWdlIiwidG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIiwib2ZfbGF6eSIsIm9mX2xhenlfc2V4cCIsIm9mX2xhenlfdCIsImxhenlfdCIsImNyZWF0ZWYiLCJvZl90aHVuayIsInN0cmljdCIsInNleHBfb2ZfeCIsInRhZ19zX2xhenkiLCJ0YWdfcyIsInRhZ19hcmciLCJ0b19leG4iLCJvZl9leG4iLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwiYmFja3RyYWNlJDIiLCJyYWlzZSIsInJhaXNlX3MiLCJ0b19pbmZvIiwib2ZfaW5mbyIsImNoZWNrX2ZpZWxkIiwiYV8wMDciLCJiXzAwOCIsIm9mX2FfMDEzIiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3IiwiaW52YXJpYW50X2EiLCJlMSIsImUyIiwidHJ5X3dpdGhfam9pbiIsIm9mX2V4bl9yZXN1bHQiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidW5pbXBsZW1lbnRlZCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImlzX3Bvc2l0aXZlIiwiaXNfbm9uX25lZ2F0aXZlIiwiaXNfbmVnYXRpdmUiLCJpc19ub25fcG9zaXRpdmUiLCJzaWduIiwiaGFzaF9wYXJhbSIsInBvbHkiLCJvZl9rZXkiLCJLZXkiLCJ0b19rZXkiLCJoYXNoX3BhcmFtJDAiLCJwb2x5JDAiLCJvZl9rZXkkMCIsInRvX2tleSQwIiwiaGFzaGFibGUiLCJnZXRfcG9zX2xlbiIsImZpbmRfZmlyc3Rfc2F0aXNmeWluZyIsInByZWQiLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsInNyY19wb3MiLCJkc3RfcG9zIiwiYmxpdG8iLCJzcmNfbGVuIiwic3VibyIsImNyZWF0ZV9saWtlIiwidW5zYWZlX2JsaXQkMCIsImlzX25vbmUiLCJpc19zb21lIiwidmFsdWVfbWFwIiwibyIsImNhbGwiLCJ2YWx1ZV9leG4iLCJlcnJvciQwIiwibSQwIiwibSQxIiwidmFsdWVfb3JfdGh1bmsiLCJzb21lIiwiZmlyc3Rfc29tZSIsInNvbWVfaWYiLCJjb25kIiwiYV9vZl9zZXhwIiwiYl9vZl9zZXhwIiwic2V4cF9vZl9iIiwiY19vZl9zZXhwIiwic2V4cF9vZl9jIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZWl0aGVyIiwib3RoZXJfbG9vcCIsInJldHVybl9sb29wIiwiY29tYmluZV9hbGwiLCJvdGhlcl9sb29wJDAiLCJyZXR1cm5fbG9vcCQwIiwiY29tYmluZV9hbGxfdW5pdCIsInRvX29wdGlvbiIsImVpdGhlciQwIiwiY29tYmluZSQwIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImVycm9yX3NvdXJjZV8wMjUiLCJvZl9zXzAwMiIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxOSIsImFfMDE3IiwiYl8wMjAiLCJiXzAxOCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIxIiwib2ZfYl8wMjIiLCJzZXhwXzAyNyIsInRhZ18wMjgiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfYXJnc18wMjkiLCJhcmcwXzAzMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsIm9mX2FfMDQ2Iiwib2ZfYl8wNDciLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsInNldCIsInN3YXAkMCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25pX3RmIiwidHJ1ZXMiLCJmYWxzZXMiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwidG9fc2VxdWVuY2UiLCJpMSIsImkyIiwidHQiLCJ3aWR0aCIsImRlcHRoIiwiZCIsInciLCJ0dCQwIiwiZ2V0JDAiLCJ6ZXJvX29iaiIsImNyZWF0ZV96ZXJvIiwidW5zYWZlX2dldCIsInVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSIsIm9iaiIsInNldF93aXRoX2NhbWxfbW9kaWZ5IiwidW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVuIiwib2xkX29iaiIsInVuc2FmZV9zZXQiLCJ1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGUiLCJ1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV8iLCJ1bnNhZmVfc2V0X2ludCIsInVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIiwidW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIiwiY3JlYXRlX29ial9hcnJheSIsIm9mX2FycmF5IiwiZ3JhbW1hciIsImNlaWwiLCJmbG9vciIsIm1vZF9mbG9hdCIsIm1vZGYiLCJtYXhfZmluaXRlX3ZhbHVlIiwiY2xhc3NpZnlfZmxvYXQiLCJhYnNfZmxvYXQiLCJpc19pbnRlZ2VyIiwiZnJleHAiLCJsZGV4cCIsImlzX25hbiIsInRvX2ludDY0X3ByZXNlcnZlX29yZGVyIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIiwib2ZfaW50NjRfcHJlc2VydmVfb3JkZXIiLCJvbmVfdWxwIiwiZGlyIiwidXBwZXJfYm91bmRfZm9yX2ludCIsImV4cCIsImlzX3hfbWludXNfb25lX2V4YWN0IiwibG93ZXJfYm91bmRfZm9yX2ludCIsIm1pbl9pbnRfYXNfZmxvYXQiLCJib3giLCJpc19sb3dlcmNhc2UiLCJpc191cHBlcmNhc2UiLCJpc19wcmludCIsImlzX3doaXRlc3BhY2UiLCJpc19kaWdpdCIsImlzX2FscGhhIiwiaXNfYWxwaGFudW0iLCJnZXRfZGlnaXRfdW5zYWZlIiwiZ2V0X2RpZ2l0X2V4biIsImdldF9kaWdpdCIsImlzX2hleF9kaWdpdCIsImlzX2hleF9kaWdpdF9sb3dlciIsImlzX2hleF9kaWdpdF91cHBlciIsImdldF9oZXhfZGlnaXRfZXhuIiwiZ2V0X2hleF9kaWdpdCIsInRfb2Zfc2V4cCQxIiwiYzEiLCJjMiIsImhhc2hfZm9sZF90JDEiLCJoYXNoJDEiLCJ0cl9jcmVhdGVfbWFwIiwidGFyZ2V0IiwicmVwbGFjZW1lbnQiLCJ0cl9tYXAiLCJpJDMiLCJpJDIiLCJpbmRleCQwIiwibGFzdF9yZXBsYWNlbWVudCIsImluZGV4IiwiZmlyc3RfdGFyZ2V0Iiwic3RhZ2UiLCJ1bnN0YWdlIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwiYV8wMDIiLCJiXzAwMyIsImttcF9hcnJheV8wMTEiLCJjYXNlX3NlbnNpdGl2ZV8wMDkiLCJwYXR0ZXJuXzAwNyIsImFyZ18wMTIiLCJibmRzXzAwNiIsImFyZ18wMTAiLCJibmRzXzAwNiQwIiwiYXJnXzAwOCIsImJuZHNfMDA2JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJsZmluZGkiLCJyZmluZGkiLCJsYXN0X25vbl9kcm9wIiwicnN0cmlwIiwiZmlyc3Rfbm9uX2Ryb3AiLCJsc3RyaXAiLCJzdHJpcCIsInRyIiwidHJfbXVsdGkiLCJjb25jYXRfYXJyYXkiLCJhciIsIm91dCIsIm91dF9wb3MiLCJvdXQkMCIsImNob3BfcHJlZml4IiwiY2hvcF9wcmVmaXhfaWZfZXhpc3RzIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3N1ZmZpeF9leG4iLCJzaG9ydGVyIiwic2hvcnRlc3QiLCJwb3NfZnJvbV9sZWZ0IiwicG9zX2Zyb21fcmlnaHQiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AiLCJnZXRfcG9zIiwibWF4X2xlbiIsImxlbl9zb19mYXIiLCJsZW5fc29fZmFyJDAiLCJsZW5fc29fZmFyJDEiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AiLCJmaXJzdCQwIiwibWF4X2xlbiQwIiwibWF4X2xlbiQxIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWMyIiwiY29tbW9uX2dlbmVyaWMiLCJjb21tb25fcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4X2xlbmd0aCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsInVuc2FmZV9ibGl0JDEiLCJtYXBpJDAiLCJvY2FtbF9sZXhfdGFibGVzIiwicGFyc2VfaGV4IiwibGV4YnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJjb252ZXJ0X2ZhaWx1cmUiLCJudW1fYml0c19pbnQiLCJudW1fYml0c19uYXRpdmVpbnQiLCJudW1fYml0c19pbnQzMiIsIm51bV9iaXRzX2ludDY0IiwibWluX2ludDMyIiwibWF4X2ludDMyIiwibWluX2ludDY0IiwibWF4X2ludDY0IiwibWluX25hdGl2ZWludCIsIm1heF9uYXRpdmVpbnQiLCJpbnQ2NF90b19zdHJpbmciLCJuYXRpdmVpbnRfdG9fc3RyaW5nIiwiaW50MzJfdG9faW50X3RydW5jIiwiaW50X3RvX2ludDMyX3RydW5jIiwiaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIiLCJpbnRfdG9faW50MzIiLCJpbnQzMl90b19pbnQiLCJpbnRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9faW50X2V4biIsImludF90b19pbnQ2NCIsImludDY0X3RvX2ludF90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IiwiaW50NjRfdG9faW50IiwiaW50NjRfdG9faW50X2V4biIsImludF90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludCIsIm5hdGl2ZWludF90b19pbnRfZXhuIiwiaW50MzJfdG9faW50NjQiLCJpbnQ2NF90b19pbnQzMl90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MyIsImludDY0X3RvX2ludDMyIiwiaW50NjRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9fbmF0aXZlaW50IiwibmF0aXZlaW50X3RvX2ludDMyX3RydW5jIiwibmF0aXZlaW50X3RvX2ludDMyIiwibmF0aXZlaW50X3RvX2ludDMyX2V4biIsImludDY0X3RvX25hdGl2ZWludF90cnVuYyIsIm5hdGl2ZWludF90b19pbnQ2NCIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aSIsImludDY0X3RvX25hdGl2ZWludCIsImludDY0X3RvX25hdGl2ZWludF9leG4iLCJpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYiLCJpbnQ2NF9maXRfb25faW50NjNfZXhuIiwiaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSIsImRlbGltaXRlciIsImNoYXJzX3Blcl9kZWxpbWl0ZXIiLCJpbnB1dF9sZW5ndGgiLCJoYXNfc2lnbiIsIm51bV9kaWdpdHMiLCJudW1fZGVsaW1pdGVycyIsIm91dHB1dF9sZW5ndGgiLCJpbnB1dF9wb3MiLCJvdXRwdXRfcG9zIiwibnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciIsImZpcnN0X2RpZ2l0X3BvcyIsImluc2VydF9kZWxpbWl0ZXIiLCJpbnNlcnRfdW5kZXJzY29yZXMiLCJzZXhwX29mX2ludF9zdHlsZSIsImRlbGltaXRlciQwIiwibWFrZV9zdWZmaXgiLCJ0b19zdHJpbmckMCIsImludmFsaWQiLCJvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIiLCJsZXgiLCJib2R5JDAiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW4iLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUiLCJpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIiwib3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIiwiaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbCIsImludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyIsIm5lZ2F0aXZlX2V4cG9uZW50Iiwib3ZlcmZsb3ciLCJpbnRfcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaW50NjRfcG93IiwiaW50NjNfcG93X29uX2ludDY0IiwicnZhbCIsIm9uZSIsInJvdW5kX2Rvd24iLCJtb2R1bHVzIiwicm91bmRfdXAiLCJyZW1haW5kZXIiLCJyb3VuZF90b3dhcmRzX3plcm8iLCJ0b19tdWx0aXBsZV9vZiIsInJvdW5kX25lYXJlc3QiLCJtb2R1bHVzX21pbnVzX3JlbWFpbmRlciIsInJvdW5kIiwiaDAxIiwibWFzayIsImludDY0X3BvcGNvdW50IiwieCQyIiwiaW50MzJfcG9wY291bnQiLCJuYXRpdmVpbnRfcG9wY291bnQiLCJtb2R1bGVfbmFtZSQwIiwib2Zfc3RyaW5nJDAiLCJmbG9hdF9sb3dlcl9ib3VuZCIsImZsb2F0X3VwcGVyX2JvdW5kIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwiZnVuYyQwIiwiemVybyIsIm1pbnVzX29uZSIsIm5lZyIsIm9mX3N0cmluZyQxIiwib2ZfaW50MzIiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMiIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0Iiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50IiwibWF4X3ZhbHVlXzMwX2JpdHMiLCJhYnMiLCJyZW0iLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwic2hpZnRfbGVmdCIsImJpdF9ub3QiLCJiaXRfb3IiLCJiaXRfYW5kIiwiYml0X3hvciIsInBvdyIsIm5vbl9wb3NpdGl2ZV9hcmd1bWVudCIsImNlaWxfcG93MiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsImZsb29yX3BvdzIiLCJpc19wb3cyIiwiZmxvb3JfbG9nMiIsImNlaWxfbG9nMiIsInBvcGNvdW50IiwibG5vdCIsInN1Y2NfZXhuIiwibXNnIiwicHJlZF9leG4iLCJvZl9zY2FsYXIiLCJvZl9zY2FsYXJfZXhuIiwidG9fc2NhbGFyIiwidG9fY2hhciIsInRvX2NoYXJfZXhuIiwidXRmOF9ieXRlX2xlbmd0aCIsInVjaGFyIiwiY29kZXBvaW50Iiwic29tZV90IiwicmVmbCIsInN5bSIsInRyYW5zIiwiY29udiIsImRldHVwbGUyIiwidHVwbGUyIiwid2l0bmVzcyIsInZfMDA1IiwidG9fc2V4cCIsInVpZCIsInNhbWVfd2l0bmVzcyIsInNhbWUiLCJzYW1lX3dpdG5lc3NfZXhuIiwibm9uZV9zdWJzdGl0dXRlIiwibm9uZSIsInZhbHVlX3Vuc2FmZSIsIm9mX3NleHBhYmxlIiwidG9fc2V4cGFibGUiLCJ4XzAwMyIsIm9mX2FfMDA0IiwieF8wMDUiLCJpbml0X3NvbWUiLCJnZXRfc29tZV9leG4iLCJpc19ub25lJDAiLCJpc19zb21lJDAiLCJzZXRfc29tZSIsInNldF9ub25lIiwidW5zYWZlX2dldF9zb21lX2V4biIsInVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIiwidW5zYWZlX2lzX3NvbWUiLCJ1bnNhZmVfc2V0X3NvbWUiLCJ1bnNhZmVfc2V0X25vbmUiLCJjbGVhciIsImVsZW0iLCJtYXBfc29tZSIsIm9mX2FycmF5X3NvbWUiLCJjYXBhY2l0eSIsImVsdHMiLCJsZW5ndGhfMDAzIiwiZWx0c18wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInJlc2l6ZSIsInNpemUiLCJzZXRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkkMCIsInB1c2giLCJwb3Bfbm9uZW1wdHkiLCJwb3BfZXJyb3IiLCJwb3AiLCJwb3BfZXhuIiwidG9wX25vbmVtcHR5IiwidG9wX2Vycm9yIiwidG9wIiwidG9wX2V4biIsInVudGlsX2VtcHR5IiwiaGFzaF9vdmVycmlkZSIsIm9mX3BvcyIsIm9mX3NpZ24iLCJ0b19zaWduX2V4biIsInRvX2ludF9leG4iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAyNyIsImludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbSIsImFsbF9vZl9hIiwiZW51bWVyYXRlXzAwMiIsImVudW1lcmF0ZV8wMDEiLCJhY2MkMiIsIm9mX2FfMDAzIiwic2V4cF8wMDgiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwidF8wMTQiLCJ0XzAxMyIsInRfMDE2IiwidF8wMTUiLCJyaWdodF8wMTgiLCJsZWZ0XzAxNyIsInJpZ2h0XzAyMiIsImxlZnRfMDIxIiwidF8wMjQiLCJ0XzAyMyIsInRfMDI2IiwidF8wMjUiLCJyaWdodF8wMjAiLCJsZWZ0XzAxOSIsInRfMDMwIiwidF8wMjkiLCJ0XzAzMiIsInRfMDMxIiwicmlnaHRfMDM0IiwibGVmdF8wMzMiLCJyaWdodF8wMzgiLCJsZWZ0XzAzNyIsInRfMDQwIiwidF8wMzkiLCJ0XzA0MiIsInRfMDQxIiwicmlnaHRfMDM2IiwibGVmdF8wMzUiLCJvZl9rXzA0MyIsIm9mX3ZfMDQ0Iiwic2V4cF8wNzEiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJhdG9tXzA0NyIsInNleHBfYXJnc18wNTAiLCJhdG9tXzA0NyQwIiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2NCIsInJlczBfMDY1IiwicmVzMV8wNzAiLCJvZl9rXzA3MiIsIm9mX3ZfMDczIiwiYXJnMV8wODIiLCJhcmcwXzA4MSIsInJlczBfMDgzIiwidl8wNzQiLCJyZXMxXzA4NCIsInZfMDc2IiwiYXJnMV8wNzgiLCJhcmcwXzA3NyIsInJlczBfMDc5IiwicmVzMV8wODAiLCJ2XzA3NSIsImtfc2V4cF9ncmFtbWFyIiwidl9zZXhwX2dyYW1tYXIiLCJjbXBfbGVmdCIsImNtcF9yaWdodCIsImFfMDg1IiwiYl8wODYiLCJyaWdodF8wOTIiLCJsZWZ0XzA5MSIsInRfMDk0IiwidF8wOTMiLCJ0XzA5NiIsInRfMDk1IiwicmlnaHRfMDg4IiwibGVmdF8wODciLCJyaWdodF8wOTAiLCJsZWZ0XzA4OSIsImFfMDk3IiwiYl8wOTgiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInRfMTA2IiwidF8xMDUiLCJ0XzEwOCIsInRfMTA3IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8xMDIiLCJsZWZ0XzEwMSIsIm9mX2xlZnRfMTA5Iiwib2ZfcmlnaHRfMTEwIiwidl8xMTMiLCJhcmcxXzExNSIsImFyZzBfMTE0IiwicmVzMF8xMTYiLCJyZXMxXzExNyIsInZfMTExIiwidl8xMTIiLCJzZXhwX29mX3QkMyIsImhlaWdodCIsImluX3JhbmdlIiwiaGwiLCJociIsImxvd2VyJDEiLCJpbnZhcmlhbnRzIiwiaCQxIiwiaCQwIiwic2wiLCJzciIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayIsImtsIiwiayQxIiwia2wkMCIsImskMiIsImtyIiwibGVmdF9sZW5ndGgiLCJyaWdodF9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwiYXJyYXlfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5IiwiaW5jcmVhc2luZyIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiQwIiwibHJsIiwibHJ2IiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2JDAiLCJybGwiLCJybHYiLCJhdXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInJlbW92ZV9pbmRleCIsImxfc2l6ZSIsInVuaW9uIiwidjEkMCIsInYyJDAiLCJyMiQwIiwicjEkMCIsInVuaW9uX2xpc3QiLCJ0b190cmVlIiwiaW50ZXIiLCJvdGhlcl9zZXQiLCJlJDEiLCJjb25zX3JpZ2h0Iiwib2Zfc2V0IiwiZW51bSQwIiwidHJlZSIsInN5bW1ldHJpY19kaWZmIiwiZWx0JDAiLCJlbnVtMSIsInRyZWUxIiwiZW51bTIiLCJ0cmVlMiIsImNvbXBhcmVfcmVzdWx0IiwibmV4dF9zdGF0ZSIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwiaW5jbHVzaXZlX2JvdW5kIiwic2lkZSIsIm1heWJlIiwidiQxIiwiaW5pdCQwIiwidiQyIiwidiQzIiwidiQ0IiwiZSQyIiwibWVyZ2VfdG9fc2VxdWVuY2UiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJ0MiQyIiwidDEkMiIsImlzX3N1YnNldCIsImFyZV9kaXNqb2ludCIsImFjY3UkMCIsImFjY3UkMSIsImZpbHQiLCJwYXJ0IiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJjaG9vc2VfZXhuIiwicG9zX3JlZiIsImdyb3VwX2J5IiwiZXF1aXYiLCJzZXQkMCIsImVxdWl2X2NsYXNzZXMiLCJub3RfZXF1aXZfeCIsImVxdWl2X3giLCJlcXVpdl9jbGFzc2VzJDAiLCJzdGFibGVfZGVkdXBfbGlzdCIsImxlZnRvdmVycyIsImFscmVhZHlfc2VlbiIsImFscmVhZHlfc2VlbiQwIiwibGVmdG92ZXJzJDAiLCJ0X29mX3NleHBfZGlyZWN0IiwiZWx0X2xzdCIsImVsX3NleHAiLCJpc19zdWJzZXQkMCIsInN1YnNldCIsInN1cGVyc2V0Iiwic2V4cF9vZl9lbHQiLCJpbnZhbGlkX2VsZW1lbnRzIiwiaW52YWxpZF9lbGVtZW50c19zZXhwIiwibGlrZSIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsImlzX3N1YnNldCQyIiwicGFydGl0aW9uX3RmJDAiLCJ0cmVlX2YiLCJ0cmVlX3QiLCJncm91cF9ieSQwIiwibnRoJDAiLCJyZW1vdmVfaW5kZXgkMCIsInRvX3NlcXVlbmNlJDAiLCJiaW5hcnlfc2VhcmNoJDAiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsImhhc2hfZm9sZF9kaXJlY3QiLCJ0X29mX3NleHBfZGlyZWN0JDAiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwiZWxlbWVudHMkMSIsIm1pbl9lbHQkMSIsIm1pbl9lbHRfZXhuJDEiLCJtYXhfZWx0JDEiLCJtYXhfZWx0X2V4biQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwiaXRlciQyIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJjb3VudCQxIiwic3VtJDEiLCJmaW5kJDEiLCJmaW5kX2V4biQxIiwiZmluZF9tYXAkMSIsImZvbGQkMSIsImZvbGRfdW50aWwkMSIsImZvbGRfcmlnaHQkMSIsImZpbHRlciQxIiwiZmlsdGVyX21hcCQwIiwicGFydGl0aW9uX3RmJDEiLCJpdGVyMiQxIiwibWVtJDEiLCJhZGQkMSIsInJlbW92ZSQxIiwidW5pb24kMSIsImludGVyJDEiLCJkaWZmJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiY29tcGFyZV9kaXJlY3QkMCIsImlzX3N1YnNldCQzIiwiYXJlX2Rpc2pvaW50JDEiLCJvZl9saXN0JDAiLCJvZl9zZXF1ZW5jZSQwIiwib2ZfYXJyYXkkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJudGgkMSIsInJlbW92ZV9pbmRleCQxIiwib2ZfdHJlZSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsImlzX3N1YnNldCQ0IiwidG9fdHJlZSQwIiwib2ZfdHJlZSQwIiwidF9vZl9zZXhwX2RpcmVjdCQxIiwiZW1wdHkkMCIsInNpbmdsZXRvbiQwIiwidW5pb25fbGlzdCQxIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQxIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX2xpc3QkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMSIsImZpbHRlcl9tYXAkMSIsImNvbXBhcmF0b3JfcyIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsInVuaW9uX2xpc3QkMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQyIiwib2Zfc29ydGVkX2FycmF5JDIiLCJvZl9saXN0JDIiLCJvZl9zZXF1ZW5jZSQyIiwib2ZfYXJyYXkkMiIsInN0YWJsZV9kZWR1cF9saXN0JDIiLCJmaWx0ZXJfbWFwJDIiLCJzZXhwX29mX21fdCIsIkVsdCIsIm1fdF9vZl9zZXhwIiwibV90X3NleHBfZ3JhbW1hciIsImNvbXBhcmVfbV90IiwiZXF1YWxfbV90IiwiaGFzaF9mb2xkX21fdCIsImhhc2hfbV90IiwiY29tcGFyYXRvciQwIiwiZW1wdHkkMiIsInNpbmdsZXRvbiQyIiwidW5pb25fbGlzdCQzIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQzIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDMiLCJvZl9zb3J0ZWRfYXJyYXkkMyIsIm9mX2xpc3QkMyIsIm9mX3NlcXVlbmNlJDMiLCJvZl9hcnJheSQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsIm1hcCQzIiwiZmlsdGVyX21hcCQzIiwib2ZfdHJlZSQxIiwidG9fdHJlZSQxIiwicmVwbGFjZSIsInNldF90ZW1wb3JhcmlseSIsInJlc3RvcmVfdG8iLCJzZXRzIiwic25hcHNob3QiLCJzZXRzX3RlbXBvcmFyaWx5IiwiYW5kX3ZhbHVlcyIsImluY19udW1fbXV0YXRpb25zIiwiZWx0c19pbmRleCIsImNoZWNrX2luZGV4X2V4biIsImVuc3VyZV9ub19tdXRhdGlvbiIsIm51bV9tdXRhdGlvbnMiLCJudW1fbXV0YXRpb25zXzAwMyIsImZyb250XzAwNSIsIm1hc2tfMDA3IiwibGVuZ3RoXzAwOSIsImVsdHNfMDExIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZnJvbnRfbm9uZW1wdHkiLCJsYXN0X25vbmVtcHR5IiwicGVlayIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwidF9yZXN1bHQiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcmlfaW5wbGFjZSIsInVucmVhY2hhYmxlX2NvZGUiLCJ6ZXJvJDAiLCJ6ZXJvJDEiLCJ0b19pbnRfdHJ1bmMiLCJ0b19pbnQzMl90cnVuYyIsIm9mX2ludDY0X3RydW5jIiwibmFtZSQwIiwib2ZfY29udGludWVfb3Jfc3RvcCIsInRvX2NvbnRpbnVlX29yX3N0b3AiLCJsZWZ0X3ZhbHVlIiwicmlnaHRfdmFsdWUiLCJ2YWx1ZXMiLCJsZWZ0X2RlZmF1bHQiLCJyaWdodF9kZWZhdWx0IiwicmlnaHQkMCIsImNvbXBhcmVfa2V5IiwidmwiLCJ2bCQwIiwidnIiLCJrMCIsImsxIiwibGQiLCJscmQiLCJscmQkMCIsInJkIiwicmxkIiwicmxkJDAiLCJyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50Iiwic2V4cF9vZl9rZXkiLCJmaW5kX2FuZF9hZGRfb3Jfc2V0IiwiZGF0YSIsImFkZF9vcl9zZXQiLCJkJDAiLCJhZGRfZXhuIiwiYWRkX2V4bl9pbnRlcm5hbCIsInNpbmdsZXRvbl90b190cmVlX2V4biIsImNvbGxhcHNlIiwiZ28iLCJhZGRfdW5jaGVja2VkIiwiZ28kMCIsInRvX3RyZWVfdW5jaGVja2VkIiwibWF4X2tleSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UiLCJidWlsZGVyIiwicHJldl9rZXkiLCJqb2luJDAiLCJsZCQwIiwibGskMCIsInJrIiwicmQkMCIsInJrJDAiLCJsayIsImNtcCQwIiwibWF5YmUkMCIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSIsImludG8iLCJib3VuZGFyeV9vcHQiLCJpbnNlcnRfaW50byIsInNwbGl0X3JhbmdlIiwibWlkX2FuZF9yaWdodCIsImxiJDEiLCJsYiQyIiwibWlkX2FuZF9yaWdodCQwIiwibGIiLCJsYiQwIiwibWlkJDAiLCJhZGRfbXVsdGkiLCJkYXRhJDAiLCJmaW5kX211bHRpIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJtaW5fdXBwZXIiLCJtYXhfbG93ZXIiLCJ1cHBlcl9wYXJ0X3dpdGhvdXRfbWluIiwiZ28kMSIsImNfbWluIiwiaW5pdCQxIiwiY19tYXgiLCJpbml0JDIiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInJhbmdlX3RvX2FsaXN0IiwiY29uY2F0X3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkMiIsImxlbmd0aCQzIiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwiZmlsdGVyX2tleXMiLCJwYXJ0aXRpb25fbWFwaSIsInBhaXIyIiwicGFpcjEiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMiIsImxlZnQkMiIsInJpZ2h0JDEiLCJrZXlzIiwib2ZfZm9sZGFibGVfZm9sZCIsImZvbGRhYmxlIiwicHJldl9kYXRhIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwibmV3X2RhdGEiLCJvZl9mb2xkYWJsZSIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2FsaXN0Iiwib2ZfYWxpc3Rfb3JfZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJvZl9mb2xkYWJsZV9tdWx0aSIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJ0b19hbGlzdCIsImtleV9vcmRlciIsIm1lcmdlX2xhcmdlX2ZpcnN0IiwibGVuZ3RoX2xhcmdlIiwidF9sYXJnZSIsInRfc21hbGwiLCJtZXJnZV9za2V3ZWQiLCJsZW5ndGgxIiwibGVuZ3RoMiIsInJlcGFja2FnZSIsIm1hcmtlciIsImNsb3Nlc3Rfa2V5IiwiZm91bmRfbWFya2VyIiwiZm91bmRfa2V5IiwiZm91bmRfdmFsdWUiLCJmb3VuZF92YWx1ZSQwIiwiZm91bmRfa2V5JDAiLCJyYW5rIiwibnVtX3RvX3NlYXJjaCIsInBhaXIiLCJwYWlyJDAiLCJiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCIsIm1heWJlX2JvdW5kIiwiaWZfZXhjbHVzaXZlIiwiaWZfaW5jbHVzaXZlIiwiZmluZF9ib3VuZCIsImJvdW5kJDAiLCJiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCQwIiwidXBwZXJfYm91bmQkMCIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwia2V5X29mX3NleHAiLCJ2YWx1ZV9vZl9zZXhwIiwiYWxpc3Rfc2V4cHMiLCJmb3VuZF9maXJzdF9rIiwiazJfc2V4cCIsInNleHBfb2ZfdmFsdWUiLCJlcnJvcl90cmVlIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJsaWtlMiIsImxpa2VfbWF5YmVfbm9fb3AiLCJvbGRfdCIsIm9sZF90cmVlIiwid2l0aF9zYW1lX2xlbmd0aCIsInNldCQxIiwiYWRkX2V4biQwIiwiYWRkX211bHRpJDAiLCJyZW1vdmVfbXVsdGkkMCIsImZpbmRfbXVsdGkkMCIsImNoYW5nZSQwIiwidXBkYXRlJDAiLCJpdGVyX2tleXMkMCIsIml0ZXJpX3VudGlsJDAiLCJmb2xkJDMiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlcmkkMCIsImZpbHRlcl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInN1YnJhbmdlIiwiaF9sIiwiaF9yIiwib3V0ZXJfam9pbmVkX2hlaWdodCIsIm1pZF9sZW5ndGgiLCJhcHBlbmQkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsInJhbmskMCIsInNleHBfb2ZfayIsInNleHBfb2ZfdiIsImhhc2hfZm9sZF9rZXkiLCJoYXNoX2ZvbGRfZGF0YSIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsInNldCQyIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJpdGVyX2tleXMkMSIsIml0ZXJpX3VudGlsJDEiLCJtYXBpJDEiLCJmb2xkJDQiLCJmb2xkMiQyIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwiY29tYmluZV9lcnJvcnMkMSIsImtleXMkMSIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzaSQxIiwiY291bnRpJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDAiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMiIsIm50aF9leG4kMCIsInJhbmskMSIsImtfb2Zfc2V4cCIsInZfb2Zfc2V4cCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UkMCIsIm1hcF9rZXlzJDAiLCJkdXAiLCJtYXBfa2V5c19leG4kMCIsImFkZF9leG4kMiIsIm9mX3RyZWUwIiwib2ZfdHJlZSQyIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2l0ZXJpJDEiLCJ0cmVlX2xlbmd0aCIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2ZfdHJlZSQzIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2FsaXN0X211bHRpJDIiLCJvZl9hbGlzdF9mb2xkJDIiLCJvZl9hbGlzdF9yZWR1Y2UkMiIsIm9mX2l0ZXJpJDIiLCJvZl9pdGVyaV9leG4kMiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMiIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDIiLCJvZl9zZXF1ZW5jZV9leG4kMiIsIm9mX3NlcXVlbmNlX211bHRpJDIiLCJvZl9zZXF1ZW5jZV9mb2xkJDIiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMiIsIm1hcF9rZXlzJDIiLCJtYXBfa2V5c19leG4kMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm1hcF9rZXlzJDMiLCJtYXBfa2V5c19leG4kMyIsInRyYW5zZmVyIiwicSIsInEkMCIsImZsb2F0X29mX2JpdHMiLCJiaXRzX29mX2Zsb2F0IiwiYnN3YXAxNiIsImJzd2FwMzIiLCJic3dhcDQ4IiwidG9fbmF0aXZlaW50X2V4biIsIndyYXBfZXhuIiwid3JhcF9tb2R1bG8iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsInNpZ25lZG5lc3MiLCJwb3Nfc3RyIiwiaW50NjMiLCJpbnQ2MyQwIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsInJlcHIiLCJvZl9pbnRfdHJ1bmMiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwidHJlZSQwIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJpbnZhcmlhbnRfa2V5IiwiaW52YXJpYW50X2RhdGEiLCJyZWFsX2xlbiIsIm5ld190IiwidDAiLCJuZXdfZGF0YSQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiZHVwZXMiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMiLCJzZXhwX29mX2RhdGEiLCJkX29mX3NleHAiLCJrX2dyYW1tYXIiLCJyb3ciLCJvbGQiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXlfZXhuIiwibWF5YmVfc2V0IiwidF9sZWZ0IiwidF9yaWdodCIsIm1lcmdlX2ludG8iLCJkc3RfZGF0YSIsImFjdGlvbiIsImRzdF9kYXRhJDAiLCJ0b19yZW1vdmUiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZmlsdGVyX21hcGlfaW5wbGFjZSIsIm1hcF9yZXN1bHRzIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwic2ltaWxhciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQwIiwiY3JlYXRlX21hcHBlZCQwIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQxIiwiY3JlYXRlX21hcHBlZCQxIiwiY3JlYXRlX3dpdGhfa2V5JDEiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMSIsImNyZWF0ZV93aXRoX2tleV9leG4kMSIsImdyb3VwJDEiLCJoYXNoYWJsZV9zIiwicG9seV9oYXNoYWJsZSIsInN0cmljdF9hZGQiLCJzdHJpY3RfYWRkX2V4biIsInN0cmljdF9yZW1vdmUiLCJzdHJpY3RfcmVtb3ZlX2V4biIsInNleHBfb2ZfZSIsImxhcmdlciIsInNtYWxsZXIiLCJvZl9oYXNodGJsX2tleXMiLCJoYXNodGJsIiwidG9faGFzaHRibCIsImVfb2Zfc2V4cCIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwicGkiLCJzcXJ0X3BpIiwic3FydF8ycGkiLCJldWxlciIsIm9mX2ludDYzIiwiaXJvdW5kX2xib3VuZCIsImlyb3VuZF91Ym91bmQiLCJpcm91bmRfdXAiLCJpcm91bmRfdXBfZXhuIiwiaXJvdW5kX2Rvd24iLCJpcm91bmRfZG93bl9leG4iLCJpcm91bmRfdG93YXJkc196ZXJvIiwiaXJvdW5kX3Rvd2FyZHNfemVyb19leG4iLCJyb3VuZF9uZWFyZXN0X2xiIiwicm91bmRfbmVhcmVzdF91YiIsIm9uZV91bHBfbGVzc190aGFuX2hhbGYiLCJhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCIsImlyb3VuZF9uZWFyZXN0XzMyIiwiaXJvdW5kX25lYXJlc3RfNjQiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzY2FsZSIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwiZXhwb25lbnRfbWFzazY0IiwiZXhwb25lbnRfbWFzayIsIm1hbnRpc3NhX21hc2siLCJtYW50aXNzYV9tYXNrNjQiLCJtYW50aXNzYV9iaXRzIiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJvcHQiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInN0aCIsInN0aCQwIiwicHJpbnRfbG9uZ2lkZW50IiwibG9uZ3ByZWZpeCIsInMkMCIsInkiLCJsb25naWRlbnRfbG9jIiwiY29uc3RhbnQiLCJpIiwibSIsImkkMCIsImkkMSIsImRlbGltIiwiaSQyIiwibSQwIiwibXV0YWJsZV9mbGFnIiwidmlydHVhbF9mbGFnIiwicmVjX2ZsYWciLCJyZiIsIm5vbnJlY19mbGFnIiwiZGlyZWN0aW9uX2ZsYWciLCJwcml2YXRlX2ZsYWciLCJjb25zdGFudF9zdHJpbmciLCJ0eXZhciIsInR5dmFyX2xvYyIsInN0cmluZ19xdW90IiwiY2xhc3NfcGFyYW1zX2RlZiIsImwiLCJ0eXBlX3BhcmFtIiwidHlwZV93aXRoX2xhYmVsIiwibGFiZWwiLCJjb3JlX3R5cGUxIiwiY29yZV90eXBlIiwiYXR0cmlidXRlcyIsImN0MiIsImN0MSIsImN0Iiwic2wiLCJjdCQwIiwiY3QkMSIsImwkMCIsImxpIiwibCQxIiwiY29yZV9maWVsZF90eXBlIiwiZmllbGRfdmFyIiwibCQyIiwibGkkMCIsImxvdyIsImNsb3NlZCIsImwkMyIsImZpcnN0X2lzX2luaGVyaXQiLCJ0eXBlX3ZhcmlhbnRfaGVscGVyIiwiY3RsIiwiY3N0cnMiLCJsaWQiLCJhdXgiLCJleHRlbnNpb24iLCJwYXR0ZXJuJDEiLCJwYXR0ZXJuIiwicCIsInAyIiwicDEiLCJvcnBhdHMiLCJwYXR0ZXJuMSIsInBhdHRlcm4xJDAiLCJwYXR0ZXJuX2xpc3RfaGVscGVyIiwicGF0MiIsInBhdDEiLCJzaW1wbGVfcGF0dGVybiIsInNpbXBsZV9wYXR0ZXJuJDAiLCJwbyIsInZsIiwiYzIiLCJjMSIsImxvbmdpZGVudF94X3BhdHRlcm4iLCJwJDAiLCJwJDEiLCJwJDIiLCJ3aXRoX3BhcmVuIiwibGFiZWxfZXhwIiwicmVzdCIsInR4dCQwIiwibyQwIiwic3VnYXJfZXhwciIsImFyZ3MiLCJpZCIsImxhYiIsInByaW50X2luZGV4b3AiLCJwYXRoX3ByZWZpeCIsImFzc2lnbiIsImxlZnQiLCJwcmludF9pbmRleCIsImluZGljZXMiLCJyZW1fYXJncyIsInByaW50X3BhdGgiLCJzaW1wbGVfZXhwciIsImUkMCIsInBhdGgiLCJmdW5jIiwib3RoZXJfYXJncyIsImEkMCIsImFzc2lnbiQwIiwicHJpbnQiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJpbmRleGVzIiwicmVzdCQzIiwiaTMiLCJpMiIsImkxIiwicmVzdCQ0IiwiaTIkMCIsImkxJDAiLCJyZXN0JDUiLCJpMSQxIiwibXVsdGlfaW5kaWNlcyIsIm4iLCJraW5kIiwicmlnaHQkMCIsImxlZnQkMCIsImwkNSIsImUkNyIsImFyZzEiLCJhcmcyIiwibGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIiwicyQxIiwicyQyIiwiZXhwcmVzc2lvbjIiLCJlbyQwIiwiZW8kMSIsImwkNiIsImUyJDEiLCJlMSQxIiwibGkkMSIsImUkOCIsInMkMyIsImwkNyIsInN0cmluZ194X2V4cHJlc3Npb24iLCJlJDkiLCJlJDEwIiwiZSQxMSIsImUkMTIiLCJjYXNlX2xpc3QiLCJlMCIsImUkMSIsImwkNCIsImUkMiIsImUkMyIsIm1lIiwibW9kdWxlX2V4cHIiLCJlJDQiLCJjZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImUkNSIsImUkNiIsImJvZHkiLCJhbmRzIiwibGV0JDAiLCJiaW5kaW5nX29wIiwiZW8iLCJlMiIsImV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSIsImUyJDAiLCJlMSQwIiwibHN0IiwiYmluZGluZ3MiLCJjcyIsImNsYXNzX3N0cnVjdHVyZSIsImV4cHJlc3Npb24yJDAiLCJzaW1wbGVfZXhwciQwIiwibG9uZ2lkZW50X3hfZXhwcmVzc2lvbiIsImUzIiwiZGYiLCJleHByZXNzaW9uIiwiY3RvMSIsInBheWxvYWQiLCJpdGVtX2F0dHJpYnV0ZXMiLCJmbG9hdGluZ19hdHRyaWJ1dGUiLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsIml0ZW1fZXh0ZW5zaW9uIiwiZXhjZXB0aW9uX2RlY2xhcmF0aW9uIiwiY2xhc3NfdHlwZV9maWVsZCIsImNsYXNzX3R5cGUiLCJ2ZiIsIm1mIiwidmYkMCIsInBmIiwiY2xhc3Nfc2lnbmF0dXJlIiwiY2wiLCJjbyIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJrd2QiLCJjbGFzc19maWVsZCIsInNvIiwiY2UiLCJvdmYiLCJjbGFzc19leHByIiwib3ZmJDAiLCJvdmYkMSIsImJpbmQiLCJiaW5kaW5nIiwiY2UkMCIsImNlJDEiLCJtb2R1bGVfdHlwZSQxIiwibW9kdWxlX3R5cGUiLCJtdDIkMCIsIm10MiIsIm10MSIsIm1vZHVsZV90eXBlMSIsIm10IiwidGQiLCJscyQwIiwidHlwZV9kZWNsYXJhdGlvbiIsImxpMiIsIm10eSIsIm10eSQwIiwibGkkMiIsInRkJDAiLCJscyQxIiwibGkkMyIsImxzJDIiLCJsaTIkMCIsImxpJDQiLCJtb2R1bGVfdHlwZTEkMCIsInNpZ25hdHVyZV9pdGVtIiwic2lnbmF0dXJlIiwidmQiLCJpbnRybyIsInR5cGVfZGVmX2xpc3QiLCJ0ZSIsInR5cGVfZXh0ZW5zaW9uIiwiZWQiLCJwbWQiLCJhbGlhcyIsInBtcyIsImRlY2xzIiwib3B0JDAiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwieDAiLCJjb3B5X3N0cnVjdHVyZSIsIngwJDAiLCJjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSIsInBkaXJfbG9jIiwiY29weV9sb2NhdGlvbiIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IiwiY29weV9sb2MiLCJwZGlyYV9sb2MiLCJwZGlyYV9kZXNjIiwiY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyIsIngxIiwieDAkMSIsImNvcHlfTG9uZ2lkZW50X3QiLCJ4MCQyIiwiY29weV9leHByZXNzaW9uIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsImNvcHlfYXR0cmlidXRlcyIsImNvcHlfbG9jYXRpb25fc3RhY2siLCJjb3B5X2V4cHJlc3Npb25fZGVzYyIsImNvcHlfY29uc3RhbnQiLCJ4MiIsImNvcHlfdmFsdWVfYmluZGluZyIsImNvcHlfcmVjX2ZsYWciLCJjb3B5X2Nhc2UiLCJ4MyIsIngyJDAiLCJ4MSQwIiwieDAkMyIsImNvcHlfcGF0dGVybiIsImNvcHlfYXJnX2xhYmVsIiwieDEkMSIsIngwJDQiLCJ4MSQyIiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDAkNyIsIngxJDQiLCJ4MCQ4IiwieDEkNSIsIngwJDkiLCJ4MSQ2IiwieDAkMTAiLCJ4MSQ3IiwieDAkMTEiLCJ4MiQxIiwieDEkOCIsIngwJDEyIiwieDAkMTMiLCJ4MiQyIiwieDEkOSIsIngwJDE0IiwieDEkMTAiLCJ4MCQxNSIsIngxJDExIiwieDAkMTYiLCJ4NCIsIngzJDAiLCJ4MiQzIiwieDEkMTIiLCJ4MCQxNyIsImNvcHlfZGlyZWN0aW9uX2ZsYWciLCJ4MSQxMyIsIngwJDE4IiwiY29weV9jb3JlX3R5cGUiLCJ4MiQ0IiwieDEkMTQiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJjb3B5X2xhYmVsIiwieDAkMjEiLCJ4MSQxNiIsIngwJDIyIiwieDAkMjMiLCJ4MiQ1IiwieDEkMTciLCJ4MCQyNCIsImNvcHlfbW9kdWxlX2V4cHIiLCJ4MSQxOCIsIngwJDI1IiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJ4MCQyNiIsIngwJDI3IiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwiY29weV9jbGFzc19zdHJ1Y3R1cmUiLCJ4MSQyMCIsIngwJDMwIiwieDAkMzEiLCJ4MSQyMSIsIngwJDMyIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwieDAkMzMiLCJjb3B5X2xldG9wIiwieDAkMzQiLCJjb3B5X2V4dGVuc2lvbiIsImNvcHlfYmluZGluZ19vcCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfY29uc3RyYWludCIsInB2Yl9leHByIiwicHZiX3BhdCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwcGF0X2xvYyIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiIsImdyb3VuZCIsImNvZXJjaW9uJDAiLCJwdHlwX2xvYyQwIiwidHlwJDMiLCJwdmJfcGF0JDMiLCJncm91bmQkMCIsInBleHBfbG9jJDAiLCJwdmJfZXhwciQzIiwicHZiX2V4cHIkMSIsInB2Yl9wYXQkMSIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsInR5cCQyIiwidHlwJDEiLCJwdHlwX2xvYyIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2Rlc2MiLCJjb3B5X3BhdHRlcm5fZGVzYyIsImNvcHlfY2xvc2VkX2ZsYWciLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJjb3B5X21vZHVsZV90eXBlIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJjb3B5X21vZHVsZV90eXBlX2Rlc2MiLCJjb3B5X3dpdGhfY29uc3RyYWludCIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsImNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyIsImNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIiwiY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIiwiY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIiwiY29weV9jbGFzc19kZXNjcmlwdGlvbiIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwiY29weV9jbGFzc190eXBlX2Rlc2MiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIiwiY29weV92aXJ0dWFsX2ZsYWciLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImNvcHlfcG9zaXRpb24iLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmciLCJ0eV9leHQiLCJydCQwIiwidmFsdWVfcGF0dGVybiIsInZhbHVlX2V4cCIsImlubmVyX2UiLCJleHRlcm5fY3QiLCJleHRlcm5fY3QkMCIsInB0X3R5dmFycyQwIiwid2l0aF9jb25zdHJhaW50IiwidHlfdmFycyIsInB2Yl9jb25zdHJhaW50JDAiLCJleHByJDAiLCJjb2VyY2UiLCJnciIsImV4cHIkMSIsInB2Yl9jb25zdHJhaW50JDEiLCJoZCIsInEiLCJpc191bml0IiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV9leHByIiwiY29weV9jYXNlcyIsImNvcHlfcGF0IiwiY29weV90eXAiLCJtYXBfb3B0aW9uIiwiY29weV9vcHRpb24iLCJjb3B5X2Jvb2wiLCJjb3B5X2xvbmdpZGVudCIsIngwX2xvYyIsIndyYXAiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwiZmllbGRzIiwiY3R5IiwibG9jJDEiLCJub2xvYyIsImZyb21fbG9jIiwicG9zIiwiaW5qZWN0X3ByZWRlZl9vcHRpb24iLCJkIiwiaWRlbnQiLCJ0eXBlX2RlY2xhcmF0aW9ucyIsInJlY2ZsYWciLCJ0eXBlcyIsImV4dHJhY3RfcHJlZGVmX29wdGlvbiIsImlzX25vbnJlYyIsImF0dHIiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImludDMyIiwib3B0Iiwic3RoIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiY2hhciQwIiwiYyIsInN0cmluZyIsInF1b3RhdGlvbl9kZWxpbWl0ZXIiLCJzIiwibG9jIiwibWsiLCJuYW1lIiwicGF5bG9hZCIsIm1rJDAiLCJkIiwic3RoJDAiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwibWF0Y2giLCJ0cnkkMCIsInR1cGxlJDEiLCJjb25zdHJ1Y3QkMCIsInZhcmlhbnQkMSIsInJlY29yZCQwIiwic2V0ZmllbGQiLCJhcnJheSQwIiwiaWZ0aGVuZWxzZSIsInNlcXVlbmNlIiwid2hpbGUkMCIsImZvciQwIiwiY29uc3RyYWludCQwIiwiY29lcmNlIiwic2VuZCIsIm5ldyQwIiwic2V0aW5zdHZhciIsIm92ZXJyaWRlIiwibGV0bW9kdWxlIiwibGV0ZXhjZXB0aW9uIiwiYXNzZXJ0IiwibGF6eSQwIiwicG9seSQwIiwib2JqZWN0JDAiLCJuZXd0eXBlIiwicGFjayIsIm9wZW4kMCIsImxldG9wIiwiYW5kcyIsImJvZHkiLCJleHRlbnNpb24kMSIsInVucmVhY2hhYmxlIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJtayQzIiwiYXR0ciQyIiwiaWRlbnQkMCIsImFsaWFzJDEiLCJzaWduYXR1cmUiLCJmdW5jdG9yIiwid2l0aCQwIiwidHlwZW9mJDAiLCJleHRlbnNpb24kMiIsIm1rJDQiLCJhdHRyJDMiLCJpZGVudCQxIiwic3RydWN0dXJlIiwiZnVuY3RvciQwIiwiYXBwbHkkMCIsIm0xIiwibTIiLCJjb25zdHJhaW50JDEiLCJtIiwibXR5IiwidW5wYWNrJDAiLCJleHRlbnNpb24kMyIsIm1rJDUiLCJ2YWx1ZSIsInR5cGUkMCIsInJlY19mbGFnIiwidHlwZV9zdWJzdCIsInR5cGVfZXh0ZW5zaW9uIiwiZXhjZXB0aW9uJDAiLCJtb2R1bGUiLCJtb2Rfc3Vic3QiLCJyZWNfbW9kdWxlIiwibW9kdHlwZSIsIm9wZW4kMSIsImluY2x1ZGUiLCJjbGFzcyQxIiwiY2xhc3NfdHlwZSIsImV4dGVuc2lvbiQ0IiwiYXR0cmlidXRlIiwibWskNiIsImV2YWwkMCIsInZhbHVlJDAiLCJwcmltaXRpdmUiLCJ0eXBlJDEiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiZXhjZXB0aW9uJDEiLCJtb2R1bGUkMCIsInJlY19tb2R1bGUkMCIsIm1vZHR5cGUkMCIsIm9wZW4kMiIsImNsYXNzJDIiLCJjbGFzc190eXBlJDAiLCJpbmNsdWRlJDAiLCJleHRlbnNpb24kNSIsImF0dHJpYnV0ZSQwIiwibWskNyIsImF0dHIkNCIsImNvbnN0ciQwIiwic3RydWN0dXJlJDAiLCJmdW4kMCIsImFwcGx5JDEiLCJsZXQkMSIsImNvbnN0cmFpbnQkMiIsImV4dGVuc2lvbiQ2Iiwib3BlbiQzIiwibWskOCIsImF0dHIkNSIsImNvbnN0ciQxIiwic2lnbmF0dXJlJDAiLCJhcnJvdyQwIiwiZXh0ZW5zaW9uJDciLCJvcGVuJDQiLCJtayQ5IiwiaW5oZXJpdCIsInZhbCIsIm1ldGhvZCIsImNvbnN0cmFpbnQkMyIsImV4dGVuc2lvbiQ4IiwiYXR0cmlidXRlJDEiLCJhdHRyJDYiLCJtayQxMCIsImluaGVyaXQkMCIsInZhbCQwIiwibWV0aG9kJDAiLCJjb25zdHJhaW50JDQiLCJpbml0aWFsaXplciIsImV4dGVuc2lvbiQ5IiwiYXR0cmlidXRlJDIiLCJ2aXJ0dWFsIiwiY3QiLCJjb25jcmV0ZSIsImF0dHIkNyIsIm1rJDExIiwic3RoJDEiLCJwcmltIiwibWskMTIiLCJtayQxMyIsInN5biIsIm1rJDE0IiwibWskMTUiLCJleHByIiwibWskMTYiLCJtayQxNyIsIm1leHByIiwibWskMTgiLCJtayQxOSIsInZpcnQiLCJzdGgkMiIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsInN0aCQzIiwia2luZCIsInN0aCQ0IiwicHJpdiIsImNvbnN0cnVjdG9yIiwicmVzIiwidmFycyIsImFyZ3MiLCJmaWVsZCQwIiwibXV0IiwibWskMjEiLCJwYXRoIiwiY29uc3RydWN0b3JzIiwibWtfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IkMCIsImRlY2wiLCJyZWJpbmQiLCJsaWQiLCJtayQyMiIsInNlbGYiLCJmaWVsZHMiLCJtayQyMyIsIm1rJDI0IiwidGFnIiwiY29uc3QkMCIsInR5cyIsImluaGVyaXQkMSIsInR5IiwibWskMjUiLCJ0YWckMCIsImluaGVyaXQkMiIsInN0cmluZ192ZXJzaW9uIiwic3RyaW5nX3ZlcnNpb24kMCIsInN0cmluZ192ZXJzaW9uJDEiLCJzdHJpbmdfdmVyc2lvbiQyIiwic3RyaW5nX3ZlcnNpb24kMyIsInN0cmluZ192ZXJzaW9uJDQiLCJzdHJpbmdfdmVyc2lvbiQ1Iiwic3RyaW5nX3ZlcnNpb24kNiIsInN0cmluZ192ZXJzaW9uJDciLCJzdHJpbmdfdmVyc2lvbiQ4Iiwic3RyaW5nX3ZlcnNpb24kOSIsInN0cmluZ192ZXJzaW9uJDEwIiwic3RyaW5nX3ZlcnNpb24kMTEiLCJzdHJpbmdfdmVyc2lvbiQxMiIsInN0cmluZ192ZXJzaW9uJDEzIiwibWlncmF0aW9uX2luZm8iLCJpZCIsIm1pZ3JhdGlvbl9pZGVudGl0eSIsImNvbXBvc2UiLCJnIiwibWlncmF0aW9uX2Z1bmN0aW9ucyIsImlzX3VuZGVmaW5lZCIsImltbWVkaWF0ZV9taWdyYXRpb24iLCJBIiwiZGlyZWN0aW9uIiwidmVyc2lvbiIsInRvIiwiZnVucyIsIkIiLCJtJDEiLCJUbyIsImFiIiwidG8yIiwiYmMiLCJtJDAiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwiY29weV9zaWduYXR1cmVfaXRlbSIsImNvcHlfbW9kdWxlX3R5cGUiLCJjb3B5X21vZHVsZV9leHByIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJjb3B5X2NsYXNzX3R5cGUiLCJjb3B5X2NsYXNzX2ZpZWxkIiwiY29weV9jbGFzc19leHByIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jYXNlIiwiY29weV9wYXR0ZXJuIiwiY29weV9leHByZXNzaW9uIiwiY29weV9jb3JlX3R5cGUiLCJjb3B5X3RvcGxldmVsX3BocmFzZSIsImNvcHlfc2lnbmF0dXJlIiwiY29weV9zdHJ1Y3R1cmUiLCJtaWdyYXRpb25faW5mbyQwIiwibWlncmF0aW9uX2luZm8kMSIsIm1pZ3JhdGlvbl9pbmZvJDIiLCJtaWdyYXRpb25faW5mbyQzIiwibWlncmF0aW9uX2luZm8kNCIsIm1pZ3JhdGlvbl9pbmZvJDUiLCJtaWdyYXRpb25faW5mbyQ2IiwibWlncmF0aW9uX2luZm8kNyIsIm1pZ3JhdGlvbl9pbmZvJDgiLCJtaWdyYXRpb25faW5mbyQ5IiwibWlncmF0aW9uX2luZm8kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwibWlncmF0aW9uX2luZm8kMTMiLCJhbGxfdmVyc2lvbnMiLCJ2ZXJzaW9uJDAiLCJ2ZXJzaW9uJDEiLCJ2ZXJzaW9uJDIiLCJ2ZXJzaW9uJDMiLCJ2ZXJzaW9uJDQiLCJ2ZXJzaW9uJDUiLCJ2ZXJzaW9uJDYiLCJ2ZXJzaW9uJDciLCJ2ZXJzaW9uJDgiLCJ2ZXJzaW9uJDkiLCJ2ZXJzaW9uJDEwIiwidmVyc2lvbiQxMSIsInZlcnNpb24kMTIiLCJ2ZXJzaW9uJDEzIiwiZnJvbV9tYWdpYyIsIm1hZ2ljIiwiYWxsX3ZlcnNpb25zX3RvcF9kb3duIiwidGFpbCIsIlZlcnNpb24iLCJvZl9vY2FtbCIsIm5vZGUiLCJ5IiwidG9fb2NhbWwiLCJvZl9vY2FtbF9tYXBwZXIiLCJpdGVtIiwiY3R4dCIsInRvX29jYW1sX21hcHBlciIsImltcGxlbWVudGF0aW9uIiwibGV4YnVmIiwiaW50ZXJmYWNlJDAiLCJ0b3BsZXZlbF9waHJhc2UiLCJ1c2VfZmlsZSIsImV4cHJlc3Npb24iLCJwYXR0ZXJuIiwiZGVmYXVsdF9wcmludF93YXJuaW5nIiwiYWJvdXRfaXRlX2JyYW5jaF9yZWYiLCJjYXJlX2Fib3V0X2l0ZV9icmFuY2giLCJhYm91dF9pdGVfYnJhbmNoIiwic2VsZl8xIiwiYSQwIiwiYSQxIiwiYSQyIiwiYiQwIiwiYSQzIiwiYSQ0IiwiYSQ1IiwiYSQ2IiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwicGRpcl9sb2MiLCJwZGlyX2FyZyIsInBkaXJfbmFtZSIsInBkaXJfbmFtZSQwIiwicGRpcl9hcmckMCIsInBkaXJfbG9jJDAiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1iX25hbWUkMCIsInBtYl9leHByJDAiLCJwbWJfYXR0cmlidXRlcyQwIiwicG1iX2xvYyQwIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2V4cHIiLCJwdmJfcGF0IiwicHZiX3BhdCQwIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJwdmJfbG9jJDAiLCJiJDEiLCJiJDIiLCJiJDMiLCJiJDQiLCJhJDciLCJhJDgiLCJhJDkiLCJhJDEwIiwiYSQxMSIsImEkMTIiLCJhJDEzIiwiYSQxNCIsImEkMTUiLCJhJDE2IiwiYSQxNyIsImEkMTgiLCJhJDE5IiwiYSQyMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImIkNSIsImEkMjciLCJhJDI4IiwiYiQ2IiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwiYiQ3IiwiYiQ4IiwiYiQ5IiwiYiQxMCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwaW5jbF9tb2QkMCIsInBpbmNsX2xvYyQwIiwicGluY2xfYXR0cmlidXRlcyQwIiwicG9wZW5fYXR0cmlidXRlcyIsInBvcGVuX2xvYyIsInBvcGVuX292ZXJyaWRlIiwicG9wZW5fZXhwciIsInBvcGVuX2V4cHIkMCIsInBvcGVuX292ZXJyaWRlJDAiLCJwb3Blbl9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJhJDI5IiwiYSQzMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsInBjZl9hdHRyaWJ1dGVzIiwicGNmX2xvYyIsInBjZl9kZXNjIiwicGNmX2Rlc2MkMCIsInBjZl9sb2MkMCIsInBjZl9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJkJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJkJDEiLCJkJDIiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsInBjc2lnX3NlbGYkMCIsInBjc2lnX2ZpZWxkcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwiYW5kcyQwIiwiYm9keSQwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImIkMTEiLCJiJDEyIiwiYiQxMyIsImIkMTQiLCJiJDE1IiwiYiQxNiIsImIkMTciLCJiJDE4IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYSQzMSIsImEkMzIiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInByZl9hdHRyaWJ1dGVzIiwicHJmX2xvYyIsInByZl9kZXNjJDAiLCJwcmZfbG9jJDAiLCJwcmZfYXR0cmlidXRlcyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJ0eHQiLCJ0eHQkMCIsImxvYyQwIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImxvY19zdGFydCQwIiwibG9jX2VuZCQwIiwibG9jX2dob3N0JDAiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJzZWxmXzIiLCJzZWxmXzMiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwiYWNjJDgiLCJhY2MkOSIsImFjYyQxMCIsImFjYyQxMSIsImFjYyQxMiIsImFjYyQxMyIsImFjYyQxNCIsImFjYyQxNSIsImFjYyQxNiIsImFjYyQxNyIsImFjYyQxOCIsImFjYyQxOSIsImFjYyQyMCIsImFjYyQyMSIsImFjYyQyMiIsImFjYyQyMyIsImFjYyQyNCIsImFjYyQyNSIsImFjYyQyNiIsImFjYyQyNyIsImFjYyQyOCIsImFjYyQyOSIsImFjYyQzMCIsImFjYyQzMSIsImFjYyQzMiIsImFjYyQzMyIsImFjYyQzNCIsImFjYyQzNSIsImFjYyQzNiIsImFjYyQzNyIsImFjYyQzOCIsImFjYyQzOSIsImFjYyQ0MCIsImFjYyQ0MSIsImFjYyQ0MiIsImFjYyQ0MyIsImFjYyQ0NCIsImFjYyQ0NSIsImFjYyQ0NiIsImFjYyQ0NyIsImFjYyQ0OCIsImFjYyQ0OSIsImFjYyQ1MCIsImFjYyQ1MSIsImFjYyQ1MiIsImFjYyQ1MyIsImFjYyQ1NCIsImFjYyQ1NSIsInNlbGZfNCIsImFjYyQ1NiIsImFjYyQ1NyIsImFjYyQ1OCIsImFjYyQ1OSIsImFjYyQ2MCIsImFjYyQ2MSIsImFjYyQ2MiIsImFjYyQ2MyIsImFjYyQ2NCIsImFjYyQ2NSIsImFjYyQ2NiIsImFjYyQ2NyIsImFjYyQ2OCIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInRvX2V4dGVuc2lvbiIsImVycm9yIiwic3ViX21zZ3MiLCJtYWluX21zZyIsImVycl9leHRlbnNpb25fbmFtZSIsIm1rX3N0cmluZ19jb25zdGFudCIsImV4dGVuc2lvbl9vZl9zdWJfbXNnIiwic3ViX21zZyIsInJlZ2lzdGVyX2Vycm9yX29mX2V4biIsIm1lc3NhZ2UiLCJzZXRfbWVzc2FnZSIsIm1ha2UiLCJzdWIiLCJzdWIkMCIsInVwZGF0ZV9sb2MiLCJnZXRfbG9jYXRpb24iLCJvZl9leG4iLCJyYWlzZSIsInByaW50IiwiZGlmZl9jb21tYW5kIiwib3B0IiwiZmlsZTEiLCJmaWxlMiIsInN0aCIsImV4dHJhX3BhdGRpZmZfYXJncyIsInN0aCQwIiwidXNlX2NvbG9yIiwiZXhlYyIsImNtZCIsImNtZCQwIiwibiIsInMiLCJhcmdzIiwiZXJyX2NvZGUiLCJhbGwiLCJyZWdpc3RlciIsIm5hbWUiLCJkZXJpdmVyIiwibG9va3VwIiwiZHJ2IiwiZGVyaXZlcnMiLCJhY2MiLCJ4Iiwic2VsZl8xIiwiZiIsIngkMCIsInNlbGZfMiIsImFjYyIsInNlbGZfMyIsImEiLCJyIiwiaSIsImxvb3AiLCJsIiwibCQwIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsInNlbGZfNCIsImxlbiIsImEkMCIsIngkMSIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInJlc19oZWFkIiwicmVzX3RhaWwiLCJyZXMiLCJmbGFncyQwIiwiZmxhZ3MiLCJjb21wYXJlIiwiZXF1YWwiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwibWluIiwibWF4IiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJtaW4kMCIsIm1heCQwIiwidG9fc3RyaW5nIiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsIm1pbiQxIiwibWF4JDEiLCJzdWJfc3RyaW5nIiwidCIsInBvcyIsImxlbiIsImJsaXRfc3RyaW5nIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwibWluJDIiLCJtYXgkMiIsInByb3RlY3R4IiwieCIsImYiLCJmaW5hbGx5JDAiLCJ5IiwiZXhuJDAiLCJleG4iLCJ0b19zdHJpbmckMSIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJtaW4kMyIsIm1heCQzIiwiaWQiLCJzZXQiLCJrZXkiLCJkYXRhIiwiYWRkIiwiYWRkX2V4biIsImZpbmRfb3B0IiwiZmluZF9vcl9hZGQiLCJkZWZhdWx0JDAiLCJkYXRhJDAiLCJhZGRfYWxpc3QiLCJhbGlzdCIsImFsaXN0JDAiLCJhbGlzdCQxIiwib2ZfYWxpc3QiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJjcmVhdGUkMCIsIm9wdCIsImZpbGUiLCJzdGgiLCJiaW5hcnkiLCJ3aXRoX2ZpbGUiLCJmaWxlbmFtZSIsImlucHV0X2FsbCIsImJ1ZiIsImNoYXIkMCIsInJlYWRfYWxsIiwibWF4X2ludCIsInRvX3N0cmluZyQyIiwiY29tcGFyZSQ1IiwiZXF1YWwkNSIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsIm1pbiQ0IiwibWF4JDQiLCJtZXJnZSIsInJlbW92ZV9hc3NvYyIsInJlbW92ZV9hc3NxIiwicmV2X21hcGkiLCJsaXN0IiwibGlzdCQwIiwiaSIsImFjYyIsInRhaWwiLCJoZWFkIiwiYWNjJDAiLCJpJDAiLCJmb2xkX3JpZ2h0MiIsImxpc3QxIiwibGlzdDIiLCJpbml0IiwibWFwJDAiLCJtYXBpJDAiLCJmb2xkX3JpZ2h0JDAiLCJhcHBlbmQiLCJjb25jYXQkMCIsInJldl9jb21iaW5lIiwiY29tYmluZSIsInNwbGl0IiwieXMiLCJ4cyIsIm1hcDIiLCJwYXJ0aXRpb25fbWFwIiwicCIsImwiLCJsZWZ0IiwicmlnaHQiLCJsJDAiLCJ2IiwidiQwIiwiaW5pdCQwIiwicG9zJDAiLCJpc19lbXB0eSIsInJldl9maWx0ZXJfb3B0Iiwib3B0aW9uIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJzb21lIiwiZmluZF9tYXBfZXhuIiwibGFzdCIsInJlc3QiLCJzcGxpdF93aGlsZSIsImZpbmRfYV9kdXAiLCJzZXQkMSIsInNldCQwIiwiYXNzb2Nfb3B0IiwiaXRlciQyIiwiaXNfc29tZSIsIml0ZXIkMyIsIm1hcCQxIiwidmFsdWUiLCJ0b19saXN0IiwiYmluZCIsImEiLCJlIiwibWFwJDIiLCJtYXBfZXJyb3IiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJoYW5kbGVfZXJyb3IiLCJzeW1ib2wkMzUiLCJxMiIsInQyIiwicTEiLCJ0MSIsImhkJDAiLCJ0b19saXN0JDAiLCJxIiwibWFwJDMiLCJjcmVhdGUkMSIsInN0aCQwIiwic3RoJDEiLCJmYWlsX2lmX2V4aXN0cyIsInN0aCQyIiwicGVybSIsImZsYWdzJDEiLCJmbGFncyQyIiwid2l0aF9maWxlJDAiLCJ3cml0ZV9hbGwiLCJpc19lbXB0eSQwIiwicHJlZml4Iiwic3VmZml4IiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImlzX3ByZWZpeCIsImlzX3N1ZmZpeCIsInN1ZmZpeF9vZmZzZXQiLCJwb3MkMSIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiaW5kZXhfb3B0JDAiLCJyaW5kZXhfb3B0JDAiLCJpbmRleF9mcm9tX29wdCQwIiwicmluZGV4X2Zyb21fb3B0JDAiLCJsc3BsaXQyIiwib24iLCJjYXBpdGFsaXplX2FzY2lpJDAiLCJsb3dlcmNhc2VfYXNjaWkkMSIsInVuY2FwaXRhbGl6ZV9hc2NpaSQwIiwic3BsaXRfb25fY2hhciQwIiwic2VwIiwiY29tcGFyZSQ3IiwiZXF1YWwkNyIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsIm1pbiQ1IiwibWF4JDUiLCJmaW5kX29wdCQxIiwic3ltYm9sJDQyIiwib3V0cHV0Iiwib2MiLCJieXRlcyIsIm91dHB1dF9zdWJzdHJpbmciLCJzdHJpbmciLCJpbl9maWxlIiwibmFtZSIsImxvYyIsInNldF9maWxlbmFtZSIsImZuIiwibG9jX3N0YXJ0IiwibG9jX2VuZCIsIm5vbmUiLCJpbml0IiwibGV4YnVmIiwiZm5hbWUiLCJyYWlzZV9lcnJvcmYiLCJmbXQiLCJyZXBvcnRfZXhjZXB0aW9uIiwib2ZfbGV4YnVmIiwicHJpbnQiLCJwcGYiLCJ0IiwiY29tcGFyZV9wb3MiLCJwMSIsInAyIiwiY29sdW1uIiwicCIsIm4iLCJtaW5fcG9zIiwibWF4X3BvcyIsImNvbXBhcmUiLCJsb2MxIiwibG9jMiIsImNyZWF0ZWYiLCJzdHIiLCJlcnJvcl9leHRlbnNpb25mIiwiZSIsImZhaWwiLCJleHBlY3RlZCIsImF0dHJpYnV0ZSIsInBheWxvYWQiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsInBjbF9jb25zdHIiLCJ4MCIsIngxIiwicGNsX3N0cnVjdHVyZSIsInBjbF9mdW4iLCJ4MiIsIngzIiwicGNsX2FwcGx5IiwicGNsX2xldCIsInBjbF9jb25zdHJhaW50IiwicGNsX2V4dGVuc2lvbiIsInBjbF9vcGVuIiwicGNmX2luaGVyaXQiLCJwY2ZfdmFsIiwicGNmX21ldGhvZCIsInBjZl9jb25zdHJhaW50IiwicGNmX2luaXRpYWxpemVyIiwicGNmX2F0dHJpYnV0ZSIsInBjZl9leHRlbnNpb24iLCJjbGFzc19pbmZvcyIsInZpcnQiLCJwYXJhbXMiLCJleHByIiwiY2xhc3Nfc2lnbmF0dXJlIiwic2VsZiIsImZpZWxkcyIsImNsYXNzX3N0cnVjdHVyZSIsInBjdHlfY29uc3RyIiwicGN0eV9zaWduYXR1cmUiLCJwY3R5X2Fycm93IiwicGN0eV9leHRlbnNpb24iLCJwY3R5X29wZW4iLCJwY3RmX2luaGVyaXQiLCJwY3RmX3ZhbCIsInBjdGZfbWV0aG9kIiwicGN0Zl9jb25zdHJhaW50IiwicGN0Zl9hdHRyaWJ1dGUiLCJwY3RmX2V4dGVuc2lvbiIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidmFycyIsImFyZ3MiLCJyZXMiLCJwdHlwX2FueSIsInB0eXBfdmFyIiwicHR5cF9hcnJvdyIsInB0eXBfdHVwbGUiLCJwdHlwX2NvbnN0ciIsInB0eXBfb2JqZWN0IiwicHR5cF9jbGFzcyIsInB0eXBfYWxpYXMiLCJwdHlwX3ZhcmlhbnQiLCJwdHlwX3BvbHkiLCJwdHlwX3BhY2thZ2UiLCJwdHlwX2V4dGVuc2lvbiIsInBkaXJfc3RyaW5nIiwicGRpcl9pbnQiLCJwZGlyX2lkZW50IiwicGRpcl9ib29sIiwicGV4cF9pZGVudCIsInBleHBfY29uc3RhbnQiLCJwZXhwX2xldCIsInBleHBfZnVuY3Rpb24iLCJwZXhwX2Z1biIsInBleHBfYXBwbHkiLCJwZXhwX21hdGNoIiwicGV4cF90cnkiLCJwZXhwX3R1cGxlIiwicGV4cF9jb25zdHJ1Y3QiLCJwZXhwX3ZhcmlhbnQiLCJwZXhwX3JlY29yZCIsInBleHBfZmllbGQiLCJwZXhwX3NldGZpZWxkIiwicGV4cF9hcnJheSIsInBleHBfaWZ0aGVuZWxzZSIsInBleHBfc2VxdWVuY2UiLCJwZXhwX3doaWxlIiwicGV4cF9mb3IiLCJ4NCIsInBleHBfY29uc3RyYWludCIsInBleHBfY29lcmNlIiwicGV4cF9zZW5kIiwicGV4cF9uZXciLCJwZXhwX3NldGluc3R2YXIiLCJwZXhwX292ZXJyaWRlIiwicGV4cF9sZXRtb2R1bGUiLCJwZXhwX2xldGV4Y2VwdGlvbiIsInBleHBfYXNzZXJ0IiwicGV4cF9sYXp5IiwicGV4cF9wb2x5IiwicGV4cF9vYmplY3QiLCJwZXhwX25ld3R5cGUiLCJwZXhwX3BhY2siLCJwZXhwX29wZW4iLCJwZXhwX2xldG9wIiwicGV4cF9leHRlbnNpb24iLCJwZXhwX3VucmVhY2hhYmxlIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwia2luZCIsImluY2x1ZGVfaW5mb3MiLCJtb2QiLCJsYWJlbF9kZWNsYXJhdGlvbiIsIm11dGFibGUiLCJ0eXBlIiwibGV0b3AiLCJsZXQkMCIsImFuZHMiLCJib2R5IiwibG9jYXRpb24iLCJzdGFydCIsImVuZCIsImdob3N0IiwibW9kdWxlX2JpbmRpbmciLCJtb2R1bGVfZGVjbGFyYXRpb24iLCJwbW9kX2lkZW50IiwicG1vZF9zdHJ1Y3R1cmUiLCJwbW9kX2Z1bmN0b3IiLCJwbW9kX2FwcGx5IiwicG1vZF9jb25zdHJhaW50IiwicG1vZF91bnBhY2siLCJwbW9kX2V4dGVuc2lvbiIsIm1vZHVsZV9zdWJzdGl0dXRpb24iLCJtYW5pZmVzdCIsInBtdHlfaWRlbnQiLCJwbXR5X3NpZ25hdHVyZSIsInBtdHlfZnVuY3RvciIsInBtdHlfd2l0aCIsInBtdHlfdHlwZW9mIiwicG10eV9leHRlbnNpb24iLCJwbXR5X2FsaWFzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb24iLCJvdGFnIiwib2luaGVyaXQiLCJvcGVuX2luZm9zIiwib3ZlcnJpZGUiLCJwcGF0X2FueSIsInBwYXRfdmFyIiwicHBhdF9hbGlhcyIsInBwYXRfY29uc3RhbnQiLCJwcGF0X2ludGVydmFsIiwicHBhdF90dXBsZSIsInBwYXRfY29uc3RydWN0IiwicHBhdF92YXJpYW50IiwicHBhdF9yZWNvcmQiLCJwcGF0X2FycmF5IiwicHBhdF9vciIsInBwYXRfY29uc3RyYWludCIsInBwYXRfdHlwZSIsInBwYXRfbGF6eSIsInBwYXRfdW5wYWNrIiwicHBhdF9leGNlcHRpb24iLCJwcGF0X2V4dGVuc2lvbiIsInBwYXRfb3BlbiIsInBvc2l0aW9uIiwibG51bSIsImJvbCIsImNudW0iLCJydGFnIiwicmluaGVyaXQiLCJwc2lnX3ZhbHVlIiwicHNpZ190eXBlIiwicHNpZ190eXBlc3Vic3QiLCJwc2lnX3R5cGV4dCIsInBzaWdfZXhjZXB0aW9uIiwicHNpZ19tb2R1bGUiLCJwc2lnX21vZHN1YnN0IiwicHNpZ19yZWNtb2R1bGUiLCJwc2lnX21vZHR5cGUiLCJwc2lnX21vZHR5cGVzdWJzdCIsInBzaWdfb3BlbiIsInBzaWdfaW5jbHVkZSIsInBzaWdfY2xhc3MiLCJwc2lnX2NsYXNzX3R5cGUiLCJwc2lnX2F0dHJpYnV0ZSIsInBzaWdfZXh0ZW5zaW9uIiwicHN0cl9ldmFsIiwicHN0cl92YWx1ZSIsInBzdHJfcHJpbWl0aXZlIiwicHN0cl90eXBlIiwicHN0cl90eXBleHQiLCJwc3RyX2V4Y2VwdGlvbiIsInBzdHJfbW9kdWxlIiwicHN0cl9yZWNtb2R1bGUiLCJwc3RyX21vZHR5cGUiLCJwc3RyX29wZW4iLCJwc3RyX2NsYXNzIiwicHN0cl9jbGFzc190eXBlIiwicHN0cl9pbmNsdWRlIiwicHN0cl9hdHRyaWJ1dGUiLCJwc3RyX2V4dGVuc2lvbiIsInRvcGxldmVsX2RpcmVjdGl2ZSIsImFyZyIsInR5cGVfZGVjbGFyYXRpb24iLCJjc3RycyIsInByaXZhdGUkMCIsInR5cGVfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IiLCJ0eXBlX2V4dGVuc2lvbiIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJ2YWx1ZV9iaW5kaW5nIiwidmFsdWVfZGVzY3JpcHRpb24iLCJwcmltIiwidHh0IiwibWFrZSIsIm1hcCIsImYiLCJpc19ub3JtYWxfaWRlbnRfY2hhciIsInNob3J0X25hbWUiLCJzdHJpbmciLCJzIiwiYiIsImEiLCJiJDAiLCJhJDAiLCJzZXhwX29mX3QiLCJmbGF0dGVuX2V4biIsImxpZCQwIiwiYWNjdSIsInMkMCIsImxpZCIsImxhc3RfZXhuIiwidW5mbGF0dGVuIiwibCIsImFjYyIsInBhcnNlIiwiaW52YWxpZCIsIm9wZW5fcGFyIiwiY2xvc2VfcGFyIiwiciIsImwkMCIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3QiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJmdW5jdG9yJDAiLCJmdW5jdG9yX3BhdGgiLCJyZXN0IiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGVuIiwicG9zIiwicG9zJDAiLCJsZXZlbnNodGVpbl9kaXN0YW5jZSIsImN1dG9mZiIsIm0iLCJkIiwiaSQwIiwiaiQwIiwibGluZV9taW4iLCJqIiwiaSIsInZhbHVlIiwiZGlzdGFuY2UiLCJzcGVsbGNoZWNrIiwibmFtZXMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJzdWdnZXN0aW9ucyIsInJldl9yZXN0IiwibGFzdCIsImZvbGRfZG90X3N1ZmZpeGVzIiwiY29sbGFwc2VfYWZ0ZXJfYXQiLCJwYXJ0cyIsInBhcnQiLCJwYXJ0cyQxIiwicGFydHMkMCIsImRvdF9zdWZmaXhlcyIsInNwbGl0X3BhdGgiLCJpJDIiLCJpJDQiLCJpJDMiLCJpJDEiLCJtYXRjaGVzIiwibWF0Y2hlZCIsInNwbGl0X291dGVyX25hbWVzcGFjZSIsImJlZm9yZV9kb3QiLCJhZnRlcl9kb3QiLCJjcmVhdGVfc2V0IiwiZnVsbHlfcXVhbGlmaWVkX25hbWVzIiwiYXR0cmlidXRlcyIsImV4dGVuc2lvbnMiLCJpc19hbGxvd2xpc3RlZCIsImdldF9hdHRyaWJ1dGVfbGlzdCIsImdldF9leHRlbnNpb25fbGlzdCIsImNyZWF0ZV9yZXNlcnZlZCIsInRibCIsInJlc2VydmUiLCJucyQwIiwibnMiLCJ0YmwkMCIsInJlc3RfbnMiLCJvdXRlcl9ucyIsInJlc3RfdGJsIiwiaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyIsImlnbm9yZV9jaGVja3MiLCJjcmVhdGUiLCJjdXJyZW50X2ZpbGUiLCJzdHJpbmdfb2ZfY29udGV4dCIsImdldF9hbGxfZm9yX2NvbnRleHQiLCJjb250ZXh0IiwiY2hlY2tfY29sbGlzaW9uc19sb2NhbCIsImNhbGxlciIsImFsbF9mb3JfY29udGV4dCIsImRlY2xhcmVkX2F0IiwiY29udGV4dCQwIiwiY2hlY2tfY29sbGlzaW9ucyIsInJlZ2lzdGVyIiwia2luZCQxIiwibGlzdCIsImtpbmQkMCIsImFsbCIsInQkMCIsIm9wdCIsInN0aCIsImFsbG93bGlzdCIsImtleSIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJvdGhlcl9jb250ZXh0cyIsInBwX3RleHQiLCJjdXJyZW50X2NvbnRleHQiLCJhX29yX2FuIiwieSIsImMiLCJyZXZfb3RoZXJzIiwib3RoZXJzIiwibXNnIiwicmFpc2VfZXJyb3JmJDAiLCJjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiIsInRkIiwiY2hvcCIsIm9yX21vcmUiLCJ0YXJnZXQiLCJjbnQiLCJnZW5fc3ltYm9sIiwicHJlZml4IiwicHJlZml4JDAiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyIsIm5hbWVfcGFyYW0iLCJ2YXJpYW5jZSIsInRwIiwicHR5cF9kZXNjIiwibyIsImVycm9ycyIsInB0eXBlX3BhcmFtcyIsInEiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkIiwiZXJyIiwiY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyIiwidGQkMCIsInJlc3VsdF90eXBlIiwic3RyaW5nX29mX2NvcmVfdHlwZSIsImN0IiwiYnVmIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMiLCJnZXRfdHlwZV9wYXJhbV9uYW1lIiwic2VsZl8xIiwiY3R5cGUiLCJpZCIsInRkcyIsInJlYWxseV9yZWN1cnNpdmUiLCJ4JDAiLCJ4JDEiLCJsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCIsImxvY19vZl9wYXlsb2FkIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwibG9jX29mX2F0dHJpYnV0ZSIsImxvY19vZl9leHRlbnNpb24iLCJjdXJyeV9hcHBsaWNhdGlvbnMiLCJvcmlnX2ZvcndhcmRfYXJncyIsImxvb3AiLCJyZXZfZnJvbnRfYXJncyIsImxhc3RfYXJnIiwiYXR0ciIsImF0dHJpYnV0ZXNfZXJyb3JzIiwic2VsZl8yIiwiY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyIsImFzc2VydF9ub19hdHRyaWJ1dGVzIiwic2VsZl8zIiwiYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4iLCJhdHRyaWJ1dGVfb2Zfd2FybmluZyIsImlzX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJzaWciLCJ0eXAkMCIsInR5cCIsIm1rX25hbWVkX3NpZyIsInNnX25hbWUiLCJoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCIsImFyaXR5IiwibXR5IiwiZm9yX3N1YnN0IiwiZXhuX3RvX2xvY19lcnJvciIsImV4biIsImVycm9yIiwicmV0dXJuJDAiLCJzeW1ib2xfYmluZCIsImVycm9yczEiLCJlcnJvcnMyIiwic3ltYm9sX21hcCIsIm9mX3Jlc3VsdCIsInJlc3VsdCIsImRlZmF1bHQkMCIsImNvbWJpbmVfZXJyb3JzIiwibm9sYWJlbCIsImsiLCJsYWJlbGxlZCIsImYwIiwiayQwIiwib3B0aW9uYWwiLCJrJDEiLCJrJDIiLCJwY2xfbG9jIiwiZjIiLCJmMSIsInBjbF9hdHRyaWJ1dGVzIiwiZjMiLCJrJDMiLCJwY2ZfbG9jIiwicGNmX2F0dHJpYnV0ZXMiLCJjZmtfdmlydHVhbCIsImNma19jb25jcmV0ZSIsImNsYXNzX2luZm9zX2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9hdHRyaWJ1dGVzIiwiY2xvc2VkIiwib3BlbiIsInBjb25zdF9pbnRlZ2VyIiwicGNvbnN0X2NoYXIiLCJwY29uc3Rfc3RyaW5nIiwicGNvbnN0X2Zsb2F0IiwicGNzdHJfdHVwbGUiLCJwY3N0cl9yZWNvcmQiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWIiLCJwdHlwX2xvYyIsInB0eXBfYXR0cmlidXRlcyIsInVwdG8iLCJkb3dudG8iLCJwZGlyYV9sb2MiLCJwZXhwX2xvYyIsInBleHBfYXR0cmlidXRlcyIsImY0IiwiayQ0IiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0IiwicGV4dF9kZWNsIiwicGV4dF9yZWJpbmQiLCJ1bml0IiwibmFtZWQiLCJpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMiLCJpbmplY3RpdmUiLCJub2luamVjdGl2aXR5IiwibGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImxkb3QiLCJsYXBwbHkiLCJtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIiwibW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfYXR0cmlidXRlcyIsIm1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9hdHRyaWJ1dGVzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmliIiwiaW1tdXRhYmxlIiwicG9mX2xvYyIsInBvZl9hdHRyaWJ1dGVzIiwib3Blbl9pbmZvc19hdHRyaWJ1dGVzIiwiZnJlc2giLCJwcGF0X2xvYyIsInBwYXRfYXR0cmlidXRlcyIsInBzdHIiLCJwc2lnIiwicHR5cCIsInBwYXQiLCJwdWJsaWMkMCIsIm5vbnJlY3Vyc2l2ZSIsInJlY3Vyc2l2ZSIsInByZl9sb2MiLCJwcmZfYXR0cmlidXRlcyIsInBzaWdfbG9jIiwicHN0cl9sb2MiLCJwdG9wX2RlZiIsInB0b3BfZGlyIiwidHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwiayQ1IiwidHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyIsInR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMiLCJwdHlwZV9hYnN0cmFjdCIsInB0eXBlX3ZhcmlhbnQiLCJwdHlwZV9yZWNvcmQiLCJwdHlwZV9vcGVuIiwidmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIiwidmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyIsImNvdmFyaWFudCIsImNvbnRyYXZhcmlhbnQiLCJub3ZhcmlhbmNlIiwidmlydHVhbCIsImNvbmNyZXRlIiwicHdpdGhfdHlwZSIsInB3aXRoX21vZHVsZSIsInB3aXRoX21vZHR5cGUiLCJwd2l0aF9tb2R0eXBlc3Vic3QiLCJwd2l0aF90eXBlc3Vic3QiLCJwd2l0aF9tb2RzdWJzdCIsInJlc3RvcmVfY29udGV4dCIsImJhY2t1cCIsImluY3JfbWF0Y2hlZCIsInBhcnNlX3JlcyIsIm9uX2Vycm9yIiwiZiQwIiwiciQwIiwicGFyc2VfcmVzJDAiLCJwYXJzZSQwIiwic3ltYm9sIiwic3ltYm9sJDAiLCJkcm9wIiwiYXMiLCJjc3QiLCJ0b19zdHJpbmciLCJlcXVhbCIsImludCQwIiwiY2hhciQwIiwiZmxvYXQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJib29sIiwiYm9vbCQwIiwiZnVuYyIsImZhbHNlJDAiLCJ0cnVlJDAiLCJuaWwiLCJzeW1ib2wkMSIsInNvbWUiLCJwYWlyIiwidHJpcGxlIiwiYWx0IiwiZTEkMCIsImUxIiwibTEiLCJlMiQwIiwiZTIiLCJtMiIsIm1hcCQwIiwibWFwX3Jlc3VsdCIsIm1hcDAiLCJtYXAxIiwibWFwMiIsIm1hcDAkMCIsIm1hcDEkMCIsIm1hcDIkMCIsIm1hcF92YWx1ZSIsIm1hcF92YWx1ZSQwIiwiYWx0X29wdGlvbiIsIm1hbnkiLCJhdXgiLCJ4cyIsInBhY2swIiwicGFjazIiLCJwYWNrMyIsInoiLCJjb25zdF9pbnQiLCJjb25zdF9pbnQzMiIsImNvbnN0X2ludDY0IiwiY29uc3RfbmF0aXZlaW50Iiwic2luZ2xlX2V4cHJfcGF5bG9hZCIsIm5vX2xhYmVsIiwiZXh0ZW5zaW9uIiwibmV4dCIsImV4cHIkMSIsIm9mX2Z1bmMiLCJ0b19mdW5jIiwicG9seV9lcXVhbCIsInBhdHRlcm4iLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjbGFzc19leHByIiwiY2xhc3NfZmllbGQiLCJtb2R1bGVfdHlwZSIsIm9wZW5fZGVzY3JpcHRpb24iLCJtb2R1bGVfZXhwciIsIm9iamVjdF90eXBlX2ZpZWxkIiwiZ2V0X3BzdHJfZXZhbCIsInN0IiwiZ2V0X3BzdHJfZXh0ZW5zaW9uIiwiZ2V0X3BzaWdfZXh0ZW5zaW9uIiwiZ2V0X2F0dHJpYnV0ZXMiLCJzZXRfYXR0cmlidXRlcyIsImF0dHJzIiwic3RydWN0dXJlX2l0ZW0iLCJzaWduYXR1cmVfaXRlbSIsImNsYXNzX2ZpZWxkJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJkZWNsYXJlIiwiZGVjbGFyZV93aXRoX25hbWVfbG9jIiwibmFtZV9sb2MiLCJkZWNsYXJlX3dpdGhfYXR0cl9sb2MiLCJhdHRyX2xvYyIsImRlY2xhcmVfZmxhZyIsInBheWxvYWRfcGF0dGVybiIsImNvbnRpbnVhdGlvbiIsIm5vcm1hbGl6ZSIsImhhc2giLCJub3Rfc2VlbiIsIm1hcmtfYXNfc2VlbiIsImV4cGxpY2l0bHlfZHJvcCIsImdldF9pbnRlcm5hbCIsImF0dHJpYnV0ZXMkMSIsImxvbmdlc3RfbWF0Y2giLCJhdHRyaWJ1dGVzJDAiLCJsZW4kMCIsImxvbmdlc3RfbWF0Y2gkMCIsImxvbmdlc3RfbWF0Y2gkMSIsImNvbnZlcnQiLCJkb19tYXJrX2FzX3NlZW4iLCJwYXR0ZXJuJDAiLCJnZXRfcmVzIiwiaGFzX2ZsYWdfcmVzIiwiaGFzX2ZsYWciLCJjb25zdW1lX3JlcyIsImF0dHIkMCIsImF0dHJzJDAiLCJjb25zdW1lIiwicmVtb3ZlX3NlZW5fcmVzIiwicGFja2VkcyIsInJlbW92ZV9zZWVuIiwicGF0dGVybl9yZXMiLCJkZWNsYXJlJDAiLCJjb252ZXJ0X3JlcyIsInRzIiwiY29udmVydCQwIiwiY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIiwiaXRlbSIsIml0ZW0kMCIsImVycm9yczIkMCIsIml0ZW0kMiIsIml0ZW0kMSIsImNsb3NlZF9mbGFnIiwiZXJyb3JzJDAiLCJmaWVsZHMkMCIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvIiwicmFpc2VfaWZfbm9uX2VtcHR5IiwiY2hlY2tfdW51c2VkIiwicmVzZXRfY2hlY2tzIiwic2VsZl80IiwiY29sbGVjdCIsImNvbGxlY3RfdW5zZWVuX2Vycm9ycyIsImNoZWNrX2FsbF9zZWVuIiwicmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiIsInRhYmxlIiwic2VsZl81IiwiY29weV9vZl9ub3Rfc2VlbiIsImNvcHkiLCJkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUiLCJkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUiLCJzZyIsInRvcF9sZXZlbCIsImZpbGVfcGF0aCIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtdGQiLCJtZCIsIm1iIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ2YiIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInZhcl9uYW1lIiwiaW5fYmluZGluZ19jdHh0IiwicGF0X2Vycm9ycyIsInB2Yl9wYXQkMCIsImV4cHJfZXJyb3JzIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJsb2NfZXJyb3JzIiwicHZiX2xvYyQwIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwid2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIndpdGhfbW9kdWxlX2RlY2xhcmF0aW9uIiwid2l0aF9tb2R1bGVfYmluZGluZyIsIm1lIiwid2l0aF9tb2R1bGVfZXhwciIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9kZXNjIiwid2l0aF92YWx1ZSIsImN0eHQkMCIsIm5hbWVfZXJyb3JzIiwid2l0aF9sZXRfbW9kdWxlIiwibW9kdWxlX2V4cHJfZXJyb3JzIiwibW9kdWxlX2V4cHIkMCIsImJvZHlfZXJyb3JzIiwiZGVzY19lcnJvcnMkMCIsInBleHBfZGVzYyQxIiwiZGVzY19lcnJvcnMiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJsb2Nfc3RhY2tfZXJyb3JzIiwicGV4cF9sb2Nfc3RhY2skMCIsInBleHBfYXR0cmlidXRlcyQwIiwidGFnIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFzdCIsImV4biQwIiwiSW5wdXRfdmVyc2lvbiIsImFzdCQwIiwiSW5wdXRfdmVyc2lvbiQwIiwiYXN0JDEiLCJhc3QkMiIsInJlYWQiLCJpbnB1dF9zb3VyY2UiLCJ3cml0ZSIsIm9jIiwiYWRkX3BweF9jb250ZXh0Iiwic2ckMCIsInN0JDAiLCJyZWFkX2JpbmFyeSIsInNpZ25hdHVyZSIsInN0cnVjdHVyZSIsImdldF9hc3QiLCJnZXRfaW5wdXRfbmFtZSIsInJ1bl9wcmVwcm9jZXNzb3IiLCJwcCIsImlucHV0Iiwib3V0cHV0IiwiY29tbWFuZCIsImVuZF9tYXJrZXJfc2lnIiwiZW5kX21hcmtlcl9zdHIiLCJleHRyYWN0X3ByZWZpeCIsInJlbW92ZV9sb2MiLCJyZW1vdmVfbG9jJDAiLCJwcmV2JDAiLCJwcmV2JDEiLCJkaWZmX2FzdHMiLCJnZW5lcmF0ZWQiLCJyb3VuZF90cmlwIiwid2l0aF90ZW1wX2ZpbGUiLCJmbjEiLCJmbjIiLCJvdXQiLCJkdW1wIiwiY21kIiwib2siLCJjbWQkMCIsInBhcnNlX3N0cmluZyIsIm1hdGNoX2xvb3AiLCJlbmRfcG9zIiwibWlzbWF0Y2hfaGFuZGxlciIsInNvdXJjZSIsImV4cGVjdGVkJDAiLCJzb3VyY2UkMCIsImxvYyQxIiwic291cmNlJDEiLCJleHBlY3RlZCQxIiwieSQwIiwiZG9fbWF0Y2giLCJnZXRfbG9jIiwiYXBwbHkiLCJ0b19zZXhwIiwiZ2V0X2xvYyQwIiwicHAkMCIsInRvX3NleHAkMCIsIm1hdGNoX3N0cnVjdHVyZV9yZXMiLCJtYXRjaF9zdHJ1Y3R1cmUiLCJtYXRjaF9zaWduYXR1cmVfcmVzIiwibWF0Y2hfc2lnbmF0dXJlIiwiZGVzYyIsImVxIiwiZ2V0X2V4dGVuc2lvbiIsInR5cGVfZGVjbCIsImUkMSIsImUkMiIsImEkMyIsImUkMyIsImEkNCIsImUkNCIsImEkNSIsImUkNSIsImEkNiIsImUkNiIsImEkNyIsImUkNyIsImEkOCIsImUkOCIsImEkOSIsImUkOSIsInZpcnR1YWxfcGF5bG9hZCIsIm1lcmdlX2F0dHJpYnV0ZXNfcmVzIiwicSQwIiwidCQxIiwicSQxIiwidCQyIiwibWVyZ2VfYXR0cmlidXRlcyIsIndpdGhfYXJnIiwiZmluZCIsImV4dCIsInNoaWZ0IiwiYXJnJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmciLCJwYXR0IiwiY29udmVydF9yZXMkMCIsImZvdW5kIiwiY29udmVydF9pbmxpbmVfcmVzIiwiY29udmVydF9pbmxpbmUiLCJjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUiLCJmaWx0ZXJfYnlfY29udGV4dCIsImV4cGFuZGVycyIsImV4cGFuZGVycyQwIiwiZXhwYW5kZXJzJDEiLCJ1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIiwiY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2VyIiwiZXJyb3JfbGlzdF90b19leGNlcHRpb24iLCJkZWNsYXJlX2lubGluZSIsImRlY2xhcmVfd2l0aF9wYXRoX2FyZyQwIiwiZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyIsImRlY2xhcmUkMSIsImRlY2xhcmVfaW5saW5lJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMSIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfcHB4X2ltcG9ydCIsImV4cGFuZCIsInNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IiwiYXR0cl9uYW1lJDAiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCQwIiwiZmlsdGVyIiwiZmllbGQiLCJmaWVsZCQwIiwic3BlY2lhbF9mdW5jdGlvbiIsImNvbnN0YW50Iiwic3VmZml4IiwiYXR0cl9zdHJfdHlwZV9kZWNsIiwiYXR0cl9zaWdfdHlwZV9kZWNsIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCIsImF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3N0cl90eXBlX2V4dCIsImF0dHJfc2lnX3R5cGVfZXh0IiwiYXR0cl9zdHJfZXhjZXB0aW9uIiwiYXR0cl9zaWdfZXhjZXB0aW9uIiwiYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCIsIm5vcCIsInJlcGxhY2UiLCJpbnNlcnRfYWZ0ZXIiLCJtYXBfbm9kZV9yZWMiLCJzdXBlcl9jYWxsIiwiYmFzZV9jdHh0IiwiZW1iZWRfZXJyb3JzIiwiY29udmVydGVkIiwibWFwX25vZGVzIiwiaG9vayIsImluX2dlbmVyYXRlZF9jb2RlIiwiZ2VuZXJhdGVkX2NvZGUiLCJjb2RlIiwiZ2V0X2dyb3VwIiwiYXR0cjIiLCJ2YWxzJDAiLCJ2YWxzIiwicmV2X2NvbmNhdCIsInNvcnRfYXR0cl9ncm91cF9pbmxpbmUiLCJzb3J0X2F0dHJfaW5saW5lIiwiY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljIiwibm9wJDAiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImZ1bmMkMCIsImxhYiIsIm9wdGlvbiIsIndpdGhfY29udGV4dCIsImV4cGFuZGVkIiwiZXhwYW5kX2NvbnN0YW50IiwidGV4dCIsImMkMCIsImV4biQxIiwiaWQkMCIsImdlbmVyYXRlZF9jb2RlJDAiLCJleG4kMiIsInN0aCQwIiwicnVsZXMiLCJzcGVjaWFsX2Z1bmN0aW9ucyIsInNwZWNpYWxfZnVuY3Rpb25zJDAiLCJjb25zdGFudHMiLCJwcHhfaW1wb3J0IiwiYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2RlY2xzIiwiYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xzIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHAiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyIsImF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2V4dHMiLCJhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRzIiwiYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25zIiwiYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3NpZ19leGNlcHRpb25zIiwibWFwX25vZGUiLCJtYXBfbm9kZXMkMCIsImhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSIsImV4cGFuZGVkX2l0ZW1zIiwiZzEiLCJnMiIsInZhbHVlcyIsImdlbmVyYXRlZF9jb2RlX2JlZ2luIiwiZ2VuZXJhdGVkX2NvZGVfZW5kIiwicGFyZW4iLCJzdG9wIiwibWFrZV90ZXh0IiwiYmxvY2siLCJwcmludGVyIiwiaWR4IiwiY291bnRfbmV3bGluZXMiLCJza2lwX2JsYW5rX2VvbCIsImNvbnRlbnRzIiwiY251bSQxIiwiY251bSQwIiwicmVjb25jaWxlIiwic3R5bGVyIiwicmVwbHMkMyIsImlucHV0X2ZpbGVuYW1lIiwicmVwbHMiLCJyZXBscyQyIiwicmVwbCQwIiwicHJldiIsInJlcGxzJDAiLCJyZXBscyQxIiwicmVwbHMkNCIsIm91dHB1dF9uYW1lIiwiY29weV9pbnB1dCIsInVwX3RvIiwibGluZSIsImxhc3RfaXNfdGV4dCIsImlzX3RleHQiLCJsaW5lJDAiLCJsaW5lJDEiLCJsb29wJDAiLCJsaW5lJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzJDAiLCJsYXN0X2lzX3RleHQkMCIsImVuZF9jb25zZWN1dGl2ZV9yZXBscyIsInBvcyQxIiwibGFzdF9pc190ZXh0JDEiLCJwb3MkMiIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJvZCIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImNlIiwibGFiZWxzIiwiZXhwcl9vIiwiY3RlIiwib3BuIiwiZV9sb2MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImN0cCIsInNpYmxpbmdzIiwiZXhlX25hbWUiLCJhZGRfYXJnIiwic3BlYyIsImRvYyIsImxvY19mbmFtZSIsInBlcmZvcm1fY2hlY2tzIiwicGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyIsInBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIiwiZGVidWdfYXR0cmlidXRlX2Ryb3AiLCJhcHBseV9saXN0IiwicHJlcHJvY2Vzc29yIiwibm9fbWVyZ2UiLCJyZXF1ZXN0X3ByaW50X3Bhc3NlcyIsInJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIiwidXNlX2NvbG9yIiwiZGlmZl9jb21tYW5kIiwicHJldHR5Iiwib3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIiwiY29ycmVjdGVkX3N1ZmZpeCIsImdldF9kZWZhdWx0X3BhdGgiLCJmbmFtZSQwIiwiZ2V0X2RlZmF1bHRfcGF0aF9zdHIiLCJnZXRfZGVmYXVsdF9wYXRoX3NpZyIsIm9mX3N0cmluZyIsImdpdmVuX3Rocm91Z2hfY2xpIiwic2V0IiwiaGFuZGxlcnMiLCJhZGRfaGFuZGxlciIsImFkZF9zaW1wbGVfaGFuZGxlciIsImFja25vd2xlZGdlX2Nvb2tpZXMiLCJwb3N0X2hhbmRsZXJzIiwiYWRkX3Bvc3RfaGFuZGxlciIsImNhbGxfcG9zdF9oYW5kbGVycyIsInRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtYXRpb24kMCIsImhhc19uYW1lIiwicHJpbnRfY2FsbGVyX2lkIiwiY2FsbGVyX2lkIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24iLCJlbmNsb3NlX2ltcGwiLCJlbmNsb3NlX2ludGYiLCJpbXBsIiwiaW50ZiIsImxpbnRfaW1wbCIsImxpbnRfaW50ZiIsInByZXByb2Nlc3NfaW1wbCIsInByZXByb2Nlc3NfaW50ZiIsImluc3RydW1lbnQiLCJzdGgkMSIsImFsaWFzZXMiLCJydWxlcyQwIiwiaW1wbCQwIiwiaW50ZiQwIiwicHJlcHJvY2Vzc19pbXBsJDAiLCJwcmVwcm9jZXNzX2ludGYkMCIsImN0JDAiLCJsb2Nfb2ZfbGlzdCIsImwkMiIsImZpcnN0IiwibWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMiLCJleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciIsImdlbl9oZWFkZXJfYW5kX2Zvb3RlciIsIndob2xlX2xvYyIsImZvb3RlciIsImhlYWRlciIsImxvY19oZWFkZXIiLCJsb2NfZm9vdGVyIiwibWFwX2ltcGwiLCJzdF93aXRoX2F0dHJzIiwibWFwX2ludGYiLCJzZ193aXRoX2F0dHJzIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfIiwiYWRkX2N0eHRfYXJnIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24kMCIsImxpbnRfaW1wbCQwIiwibGludF9pbnRmJDAiLCJlbmNsb3NlX2ltcGwkMCIsImVuY2xvc2VfaW50ZiQwIiwicmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyQwIiwiZ2V0X3dob2xlX2FzdF9wYXNzZXMiLCJjdHMiLCJhZnRfaSIsImJlZl9pIiwicmVkdWNlZF90IiwiaW5zdHIiLCJ0cmFuc2YiLCJ0cmFuc2YkMCIsInRyYW5zZm9ybXMiLCJhZnRlcl9pbnN0cnMiLCJiZWZvcmVfaW5zdHJzIiwicHJlcHJvY2VzcyIsImxpbnRlcnMiLCJnZXRfZW5jbG9zZXJzIiwiaW1wbF9lbmNsb3NlcnMiLCJpbnRmX2VuY2xvc2VycyIsIm1lcmdlX2VuY2xvc2VyIiwiZW5jbG9zZXJzIiwiZm9vdGVycyIsImhlYWRlcnMiLCJoZWFkZXJzJDAiLCJmb290ZXJzJDAiLCJhcHBseV90cmFuc2Zvcm1zIiwibGludF9maWVsZCIsImRyb3BwZWRfc29fZmFyIiwibGludF9lcnJvcnMiLCJvbGRfZHJvcHBlZCIsImxpbnRfZXJyb3JzJDAiLCJlcnJvcnMkMSIsIm1vcmVfZXJyb3JzIiwibmV3X2Ryb3BwZWQiLCJwcmludF9kaWZmIiwid2hhdCIsImRpZmYiLCJkcm9wcGVkIiwiZXJyb3JfdG9fZXh0ZW5zaW9uIiwiZXh0JDAiLCJleG5fdG9fZXh0ZW5zaW9uIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJmcCIsIm1zIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwicGFyYW0iLCJhcHBseV9hbGwiLCJlbnRyeSIsImdlbmVyYXRvcnMiLCJleHRfdG9faXRlbSIsImVtcHR5X2xhYmVsX2Vycm9yIiwiZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIiwiYWNjZXB0ZWRfYXJncyIsInNwZWxsY2hlY2tfbXNnIiwidW5hY2NlcHRlZF9hcmd1bWVudCIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImFjdHVhbF9kZXJpdmVyX25hbWUiLCJkdXBfZXJyb3IiLCJkZXAiLCJkZXBfbmFtZSIsImxfZXJyIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJ4IiwiZGVmYXVsdCQwIiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJpIiwidmFycyIsInZhciQwIiwiYmluZGluZ3MiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ0eHQiLCJ2YXJzJDAiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsInRwIiwiYm9keSQwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJvcHQiLCJzdGgiLCJpbnRlcm5hbCIsIm4iLCJhcmciLCJhcmdzJDAiLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJpbml0IiwiZmllbGRfcmVmcyIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwYXJhbSIsInByZSIsInNjcmlwdCIsInNlbGVjdCQwIiwic3R5bGUiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ1bCIsImF1ZGlvIiwidmlkZW8iLCJ1bnNhZmVDb2VyY2VFdmVudCIsIm1vdXNlRXZlbnQiLCJrZXlib2FyZEV2ZW50Iiwid2hlZWxFdmVudCIsIm1vdXNlU2Nyb2xsRXZlbnQiLCJwb3BTdGF0ZUV2ZW50IiwibWVzc2FnZUV2ZW50IiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwidG9fYXJyYXlmIiwiZiIsImEiLCJvZl9hcnJheWYiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ0b19saXN0ZiIsIm9mX2xpc3RmIiwib3B0ZGVmIiwieCIsInRvX29wdGRlZiIsIngkMCIsInVub3B0ZGVmX2YiLCJkZWYiLCJ1bm9wdGRlZiIsImNvbnZkZWYiLCJ0b19vcHQiLCJvcHQiLCJjb252b3B0IiwianNfbG9nIiwibyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsInN0aCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwib2JqZWN0X2NzIiwiYXNzaWduIiwibzEiLCJvMiIsImFzc2lnbl9saXN0IiwicmVtb3ZlX3VuZGVmaW5lZCIsImtleXMiLCJrIiwib2JqIiwiY3JlYXRlIiwiYWRkIiwidiIsImFkZF9saXN0IiwiYWRkX2xpc3RmIiwibWFrZSIsIm1ha2VmIiwicmVtb3ZlIiwiZmluZCIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwiY3MiLCJqdGhlbjAiLCJlcnJvciIsInByb20iLCJwIiwiZXhuJDAiLCJlZiIsImVycm9yJDAiLCJqdGhlbiIsImp0aGVuMF9vcHQiLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibzMiLCJsb2dfc3RyMiIsInMxIiwiczIiLCJsb2dfc3RyMyIsInMzIiwiZGVidWciLCJkZWJ1ZzIiLCJkZWJ1ZzMiLCJkZWJ1Z19zdHIiLCJkZWJ1Z19zdHIyIiwiZGVidWdfc3RyMyIsIndhcm4iLCJ3YXJuMiIsIndhcm4zIiwid2Fybl9zdHIiLCJ3YXJuX3N0cjIiLCJ3YXJuX3N0cjMiLCJlcnJvcjIiLCJlcnJvcjMiLCJlcnJvcl9zdHIiLCJlcnJvcl9zdHIyIiwiZXJyb3Jfc3RyMyIsImJpZ0ludCIsIm9mX3N0cmluZyIsIm9mX2ludCIsImkiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZSIsIm9mX2Zsb2F0IiwidG9fbG9jYWxlX3N0cmluZyIsIm9wdGlvbnMiLCJuIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsInN0aCQwIiwic3RoJDEiLCJsaXN0ZW4iLCJzdGgkMiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwidHIiLCJjcmVhdGUiLCJzdG9yZSIsImFkZCIsImtleSIsInN0IiwieCIsInB1dCIsInJhbmdlIiwib2xvd2VyIiwib3VwcGVyIiwibG93ZXIiLCJ1cHBlciIsInVwcGVyJDEiLCJsb3dlciQwIiwidXBwZXIkMCIsImNvdW50IiwiayIsImdldCIsIm9mX2pzIiwianMiLCJqcyQwIiwiZ2V0X2FsbCIsImdldF9rZXkiLCJnZXRfYWxsX2tleXMiLCJkZWxldGUkMCIsIml0ZXIiLCJkaXJlY3Rpb24iLCJjIiwidDgwIiwiZm9sZCIsInN0YXJ0IiwiYWNjIiwiY2FsbGJhY2skMCIsInQ5NSIsIml0ZXJfa2V5cyIsInQxMTAiLCJmb2xkX2tleXMiLCJ0MTI0IiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4Iiwib3B0aW9ucyQwIiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJsZW5ndGgiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMDI2IiwiZXJyb3Jfc291cmNlXzA0MiIsImVycm9yX3NvdXJjZV8yMDYiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJ0X29mX3NleHAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXZhbF9mYWlsIiwibG9jIiwiZm10IiwicyIsImN1c3RvbV9wcmludGZfMDAxIiwiZXF1YWxfb3B0aW9uIiwiZXF1YWwiLCJhIiwiYiIsInkiLCJ4IiwiY3JlYXRlIiwiZXEiLCJ4cyQxIiwiczIiLCJzMSIsInNvcnRlZCIsInhzJDAiLCJsYXN0X3ZhbHVlJDEiLCJsYXN0X2tleSQxIiwiYWNjIiwibGFzdF9rZXkiLCJsYXN0X3ZhbHVlIiwieHMiLCJsYXN0X3ZhbHVlJDAiLCJsYXN0X2tleSQwIiwic29ydGVkJDAiLCJtYXAiLCJ0IiwiZiIsInYiLCJrIiwidG9fbWQ1Iiwib2ZfbWQ1Iiwic2V4cF9vZl90JDEiLCJ0X29mX3NleHAkMCIsInV1aWQiLCJ1IiwiaW50JDAiLCJwYWlyIiwibGlzdCIsImwiLCJjb25zdHJ1Y3RvciIsInRfb2Zfc2V4cCQxIiwib2ZfYV8wMzkiLCJzZXhwXzA0NCIsInRhZ18wNDUiLCJzZXhwX2FyZ3NfMDQ2IiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDkzIiwicmVzMV8wOTQiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMV8wNTUiLCJhcmcwXzA1NCIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDg1IiwiYXJnMF8wODYiLCJvZl9hXzAxMCIsInJlczBfMDg3IiwiZmllbGRfc2V4cHNfMDEzIiwic29ydGVkXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3Iiwic2V4cF8wMTIiLCJmaWVsZF9zZXhwc18wMjAiLCJmaWVsZF9uYW1lXzAxOCIsInRhaWxfMDI5IiwieF8wMzAiLCJmaWVsZF9zZXhwXzAxOSIsInNleHBfMDI1IiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJmdmFsdWVfMDI3Iiwic29ydGVkXzAxNSIsInNleHBfYXJnc18wOTciLCJhcmcxXzA5OSIsImFyZzBfMDk4IiwicmVzMF8xMDAiLCJyZXMxXzEwMSIsInNleHBfYXJnc18wNjUiLCJhcmcwXzA3MSIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMwXzA3MiIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wODEiLCJzZXhwXzA4MCIsImFyZzFfMDc3IiwiYXJnMF8wNzYiLCJyZXMwXzA3OCIsInJlczFfMDc5IiwicmVzMF8wODIiLCJzZXhwX29mX3QkMiIsIm9mX2FfMTA4IiwiYXJnMV8xMTAiLCJhcmcwXzEwOSIsInJlczBfMTExIiwicmVzMV8xMTIiLCJhcmcxXzExNCIsImFyZzBfMTEzIiwicmVzMF8xMTUiLCJyZXMxXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzEyMyIsImFyZzFfMTIwIiwiYXJnMF8xMTkiLCJyZXMwXzEyMSIsInJlczFfMTIyIiwicmVzMF8xMjQiLCJhcmcwXzEyOSIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4IiwicmVzMF8xMzAiLCJhcmcwXzEzMSIsIm9mX2FfMDMxIiwic29ydGVkXzAzMyIsImJuZHNfMDMyIiwiYXJnMV8wMzYiLCJhcmcwXzAzNSIsInJlczBfMDM3IiwicmVzMV8wMzgiLCJhcmdfMDM0IiwiYm5kc18wMzIkMCIsInJlczBfMTMyIiwiYXJnMV8xMzQiLCJhcmcwXzEzMyIsInJlczBfMTM1IiwicmVzMV8xMzYiLCJhcmcxXzEzOCIsImFyZzBfMTM3IiwicmVzMF8xMzkiLCJyZXMxXzE0MCIsImFyZzBfMTQxIiwicmVzMF8xNDIiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJuIiwibiQwIiwidG9fZGlnZXN0IiwidG9fZGlnZXN0JDAiLCJ4JDIiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTk4IiwiYl8xOTkiLCJiXzIwMSIsImFfMjAwIiwiY21wX2EiLCJhXzIwMiIsImJfMjAzIiwiYV8xNDYiLCJiXzE0OSIsImJfMTQ3IiwiYV8xNDgiLCJhXzE1MiIsImFfMTUwIiwiYl8xNTMiLCJiXzE1MSIsImFfMTU0IiwiYl8xNTUiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsImFfMTYwIiwiYl8xNjEiLCJhXzE2MiIsImJfMTYzIiwidF8xNjUiLCJ0XzE2NCIsInRfMTY3IiwidF8xNjYiLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsInRfMTczIiwidF8xNzIiLCJ0XzE3NSIsInRfMTc0IiwiYV8xNzYiLCJiXzE3NyIsImFfMDAyIiwiYl8xNzkiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJhXzE4MiIsImJfMTgzIiwiYV8xODYiLCJhXzE4NCIsImJfMTg3IiwiYl8xODUiLCJuJDEiLCJhXzE4OCIsImJfMTg5IiwiYV8xOTIiLCJhXzE5MCIsImJfMTkzIiwiYl8xOTEiLCJuJDIiLCJhXzE5NCIsImJfMTk1IiwiYV8xOTYiLCJiXzE5NyIsInQwX29mX3NleHAiLCJzZXhwXzIwOCIsInRhZ18yMDkiLCJzZXhwX2FyZ3NfMjEwIiwiYXJnMF8yMTEiLCJyZXMwXzIxMiIsInNleHBfb2ZfdDAiLCJhcmcwXzIxMyIsInJlczBfMjE0IiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwic2V4cF9vZl90JDMiLCJvZl9zdHJpbmckMSIsInRvX3N0cmluZyQyIiwic3ltYm9sIiwiY29tcGFyZSQxIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQ0Iiwib2Zfc3RyaW5nJDIiLCJ0b19zdHJpbmckMyIsImNvbXBhcmF0b3IiLCJjb21wYXJlJDIiLCJzZXhwX29mX3QkNSIsImNyZWF0ZSQzIiwidHJpcHMiLCJnaWQiLCJ2cyIsIm1lbWJlcnMiLCJsb29rdXAiLCJnIiwic2NoZW1lIiwiY3VzdG9tX3ByaW50Zl8yODUiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwic2V4cF9vZl90JDYiLCJhcmcxXzI4NyIsImFyZzBfMjg2IiwicmVzMF8yODgiLCJyZXMxXzI4OSIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MiIsInJlczFfMjkzIiwiYXJnMF8yOTgiLCJhcmcxXzI5NSIsImFyZzBfMjk0IiwicmVzMF8yOTYiLCJyZXMxXzI5NyIsInJlczBfMjk5IiwiYXJnMF8zMDQiLCJhcmcxXzMwMSIsImFyZzBfMzAwIiwicmVzMF8zMDIiLCJyZXMxXzMwMyIsInJlczBfMzA1IiwiYXJnMF8zMDYiLCJyZXMwXzMwNyIsImFyZzBfMzEyIiwiYXJnMV8zMDkiLCJhcmcwXzMwOCIsInJlczBfMzEwIiwidl8yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInZfMjUwIiwiYXJnMV8yNTIiLCJhcmcwXzI1MSIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMxXzMxMSIsInJlczBfMzEzIiwiYXJnMF8zMTgiLCJhcmcxXzMxNSIsImFyZzBfMzE0IiwicmVzMF8zMTYiLCJyZXMxXzMxNyIsInJlczBfMzE5IiwiYXJnMV8zMjEiLCJhcmcwXzMyMCIsInJlczBfMzIyIiwicmVzMV8zMjMiLCJhcmcyXzMyNiIsImFyZzFfMzI1IiwiYXJnMF8zMjQiLCJtZW1iZXJzXzI3NSIsImxvY18yNzMiLCJnaWRfMjcxIiwiYm5kc18yNzAiLCJhcmcxXzI4MiIsImFyZzBfMjgxIiwicmVzMF8yODMiLCJhcmcxXzI3OCIsImFyZzBfMjc3IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczFfMjg0IiwiYXJnXzI3NiIsImJuZHNfMjcwJDAiLCJhcmdfMjc0IiwiYm5kc18yNzAkMSIsImFyZ18yNzIiLCJibmRzXzI3MCQyIiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5IiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImxvb2t1cCQwIiwiYV8zMzAiLCJiXzMzMSIsInRfMzMzIiwidF8zMzIiLCJ0XzMzNSIsInRfMzM0IiwiYXJnMV8zMzciLCJhcmcwXzMzNiIsInJlczBfMzM4IiwicmVzMV8zMzkiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl8zNDAiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfYXJyYXlfbG9vcCIsImFyIiwiZWxzX3Bvc19yZWYiLCJpIiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlX2hhc2h0YmwiLCJiaW5fd3JpdGVfa2V5IiwiYmluX3dyaXRlX3ZhbCIsInBsZW4iLCJjbnRfcmVmIiwiY29sbF9odGJsIiwicmVzX3BvcyIsImJpbl93cml0ZV9mbG9hdDMyX3ZlYyIsImJpbl93cml0ZV9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZV9mbG9hdDMyX21hdCIsIm0iLCJsZW4xIiwibGVuMiIsInBvcyQxIiwiYmluX3dyaXRlX2Zsb2F0NjRfbWF0IiwiYmluX3dyaXRlX2JpZ3N0cmluZyIsInMiLCJiaW5fd3JpdGVfdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVfaW50XzhiaXQiLCJiaW5fd3JpdGVfaW50XzE2Yml0IiwiYmluX3dyaXRlX2ludF8zMmJpdCIsImJpbl93cml0ZV9pbnRfNjRiaXQiLCJiaW5fd3JpdGVfaW50NjRfYml0cyIsImJpbl93cml0ZV9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IiwiYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImVsJDEiLCJtYXliZV9mbG9hdCIsImVsJDAiLCJmaXJzdCIsInJlcyIsImJpbl9yZWFkX2hhc2h0YmwiLCJiaW5fcmVhZF9rZXkiLCJiaW5fcmVhZF92YWwiLCJyZWFkX2t2X3BhaXIiLCJlbHMiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyIsInZlYyIsImJpbl9yZWFkX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQiLCJtYXQiLCJiaW5fcmVhZF9mbG9hdDY0X21hdCIsImJpbl9yZWFkX2JpZ3N0cmluZyIsImJpbl9yZWFkX3ZhcmlhbnRfaW50IiwiYmluX3JlYWRfaW50XzhiaXQiLCJiaW5fcmVhZF9pbnRfMTZiaXQiLCJiaW5fcmVhZF9pbnRfMzJiaXQiLCJiaW5fcmVhZF9pbnRfNjRiaXQiLCJiaW5fcmVhZF9pbnQ2NF9iaXRzIiwiYmluX3JlYWRfbmV0d29yazE2X2ludCIsImJpbl9yZWFkX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIiLCJiaW5fcmVhZF9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRfbmV0d29yazY0X2ludDY0IiwiYmluX3JlYWRfbWQ1IiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaGFwZV9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2hhcGVfaW50NjMiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2hhcGVfbmF0aXZlaW50IiwiYmluX3NoYXBlX25hdDAiLCJiaW5fc2hhcGVfZGlnZXN0IiwiYmluX3NoYXBlX2Zsb2F0MzJfdmVjIiwiYmluX3NoYXBlX2Zsb2F0NjRfdmVjIiwiYmluX3NoYXBlX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDMyX21hdCIsImJpbl9zaGFwZV9mbG9hdDY0X21hdCIsImJpbl9zaGFwZV9tYXQiLCJiaW5fc2hhcGVfYmlnc3RyaW5nIiwiYmluX3NoYXBlX2Zsb2F0YXJyYXkiLCJiaW5fc2hhcGVfdmFyaWFudF9pbnQiLCJiaW5fc2hhcGVfaW50XzhiaXQiLCJiaW5fc2hhcGVfaW50XzE2Yml0IiwiYmluX3NoYXBlX2ludF8zMmJpdCIsImJpbl9zaGFwZV9pbnRfNjRiaXQiLCJiaW5fc2hhcGVfaW50NjRfYml0cyIsImJpbl9zaGFwZV9uZXR3b3JrMTZfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyIiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0IiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaGFwZV9oYXNodGJsIiwieSIsImJpbl9zaGFwZV9mbG9hdF9hcnJheSIsImJpbl9zaGFwZV9sYXp5IiwiYmluX3NoYXBlX3BhaXIiLCJiaW5fc2hhcGVfdHJpcGxlIiwieiIsImJpbl9zaXplX3VuaXQiLCJiaW5fc2l6ZV9ib29sIiwiYmluX3NpemVfY2hhciIsImJpbl9zaXplX21kNSIsImJpbl9zaXplX2ludF9uYXQwIiwiYmluX3NpemVfaW50X25lZ2F0aXZlIiwiYmluX3NpemVfaW50IiwiYmluX3NpemVfaW50JDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfZmxvYXQiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl9zaXplX2ludDY0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fc2l6ZV91bml0JDAiLCJiaW5fc2l6ZV9ib29sJDAiLCJiaW5fc2l6ZV9jaGFyJDAiLCJiaW5fc2l6ZV9pbnQkMSIsImJpbl9zaXplX25hdDAkMCIsImJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyIsInNpemVfbGVuIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fc2l6ZV9tZDUkMSIsImJpbl9zaXplX2Zsb2F0JDAiLCJmIiwiYmluX3NpemVfaW50MzIkMCIsImJpbl9zaXplX2ludDY0JDAiLCJiaW5fc2l6ZV9uYXRpdmVpbnQiLCJiaW5fc2l6ZV9yZWYkMCIsImJpbl9zaXplX2VsIiwiYmluX3NpemVfbGF6eV90JDAiLCJiaW5fc2l6ZV9vcHRpb24kMCIsImJpbl9zaXplX3BhaXIkMCIsImJpbl9zaXplX2EiLCJiaW5fc2l6ZV9iIiwiYmluX3NpemVfdHJpcGxlJDAiLCJiaW5fc2l6ZV9jIiwiYmluX3NpemVfbGlzdCIsInNpemVfYWNjIiwibGVuX2FjYyIsImxlbl9hY2MkMCIsInNpemVfYWNjJDAiLCJiaW5fc2l6ZV9sZW4iLCJiaW5fc2l6ZV9mbG9hdGFycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheV9sb29wIiwidG90YWxfbGVuIiwidG90YWxfbGVuX3JlZiIsImJpbl9zaXplX2FycmF5IiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJiaW5fc2l6ZV9hcnJheV9ub19sZW5ndGgiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IiwiYmluX2Zsb2F0X2FycmF5IiwiYmluX3dyaXRlcl92YXJpYW50X2ludCIsImJpbl9yZWFkZXJfdmFyaWFudF9pbnQiLCJiaW5fdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVyX2ludF84Yml0IiwiYmluX3JlYWRlcl9pbnRfOGJpdCIsImJpbl9pbnRfOGJpdCIsImJpbl93cml0ZXJfaW50XzE2Yml0IiwiYmluX3JlYWRlcl9pbnRfMTZiaXQiLCJiaW5faW50XzE2Yml0IiwiYmluX3dyaXRlcl9pbnRfMzJiaXQiLCJiaW5fcmVhZGVyX2ludF8zMmJpdCIsImJpbl9pbnRfMzJiaXQiLCJiaW5fd3JpdGVyX2ludF82NGJpdCIsImJpbl9yZWFkZXJfaW50XzY0Yml0IiwiYmluX2ludF82NGJpdCIsImJpbl93cml0ZXJfaW50NjRfYml0cyIsImJpbl9yZWFkZXJfaW50NjRfYml0cyIsImJpbl9pbnQ2NF9iaXRzIiwiYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50IiwiYmluX25ldHdvcmsxNl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQiLCJiaW5fbmV0d29yazMyX2ludCIsImJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIiLCJiaW5fbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50IiwiYmluX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0IiwiYmluX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZXJfYXJyYXlfbm9fbGVuZ3RoIiwiY252X3dyaXRlciIsImNudiIsInRwX2NsYXNzIiwiY252X3JlYWRlciIsInZ0YWciLCJmb3Jfc2hhcGUiLCJmb3Jfd3JpdGVyIiwiZm9yX3JlYWRlciIsImJpbl93cml0ZV9zaXplX2hlYWRlciIsImJpbl9yZWFkX3NpemVfaGVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX2R1bXAiLCJvcHQiLCJ3cml0ZXIiLCJzdGgiLCJoZWFkZXIiLCJwb3NfbGVuIiwidG90X2xlbiIsInBvc19sZW4kMCIsImJ1ZiQwIiwiYnVmJDEiLCJiaW5fcmVhZF9zdHJlYW0iLCJtYXhfc2l6ZSIsInJlYWQiLCJyZWFkZXIiLCJtYXhfc2l6ZSQwIiwibXNnIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJtYXliZV9hbm5vdGF0ZV9zaGFwZSIsIm1heWJlX3V1aWQiLCJzaGFwZSIsInV1aWQiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ0IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2hhcGVfZWwiLCJiaW5fd3JpdGVyIiwiYmluX3JlYWRlciIsInR5cGVfY2xhc3MiLCJiaW5fc2hhcGVfZWwxIiwiYmluX3NoYXBlX2VsMiIsImJpbl9zaXplX2VsMSIsImJpbl9zaXplX2VsMiIsImJpbl93cml0ZV9lbDEiLCJiaW5fd3JpdGVfZWwyIiwiYmluX3JlYWRfZWwxIiwiYmluX3JlYWRfZWwyIiwiYmluX3dyaXRlcjEiLCJiaW5fd3JpdGVyMiIsImJpbl9yZWFkZXIxIiwiYmluX3JlYWRlcjIiLCJ0eXBlX2NsYXNzMSIsInR5cGVfY2xhc3MyIiwiYmluX3NoYXBlX2VsMyIsImJpbl9zaXplX2VsMyIsImJpbl93cml0ZV9lbDMiLCJiaW5fcmVhZF9lbDMiLCJiaW5fd3JpdGVyMyIsImJpbl9yZWFkZXIzIiwidHlwZV9jbGFzczMiLCJtYXliZV9jYWxsZXJfaWRlbnRpdHkiLCJ3aXRoX21vZHVsZV9uYW1lIiwibW9kdWxlX25hbWUiLCJmdW5jdGlvbl9uYW1lIiwibW9kdWxlX25hbWUkMCIsInJhaXNlX3JlYWRfdG9vX211Y2giLCJyYWlzZV9yZWFkX25vdF9lbm91Z2giLCJzaXplX3JlZiIsImlkeCIsInJlc3VsdCIsInQxIiwidDIiLCJ0MyIsImJpbl9yZWFkX3VuaXQkMCIsInZpbnQiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZF9zdHJpbmckMCIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZF9mbG9hdGFycmF5JDAiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwic2V4cF9vZl90Iiwib2ZfYV8wMDMiLCJzdGFydF9hIiwiZW5kX2EiLCJ3cml0dGVuIiwiZXhwZWN0ZWRfc2l6ZSIsIm9mX2JpbmFibGUiLCJ0b19iaW5hYmxlIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ0b19vcGFxdWUiLCJibG9iIiwib2Zfb3BhcXVlX2V4biIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQwIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsInN0cmluZ19vZl9iaWdzdHJpbmciLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJ0b19vcGFxdWUkMCIsImJpbl93cml0ZXJfdiIsIm9mX29wYXF1ZV9leG4kMCIsImJpbl9yZWFkZXJfdiIsImVycm9yIiwiY29tcGFyZSQxIiwic2V4cF9vZl90JDEiLCJiaW5fc2l6ZV90JDUiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQyIiwicHJlX3Rlc3RfaG9vayIsIm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2giLCJ0IiwiZW5hYmxlX2V2ZXJ5dGhpbmciLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIiLCJ0b19zdHJpbmciLCJjb21iaW5lIiwidDEiLCJ0MiIsImNvbWJpbmVfYWxsIiwidHMiLCJ0ZXN0X21vZHVsZXNfcmFuIiwidGVzdF9tb2R1bGVzX2ZhaWxlZCIsInRlc3RzX3JhbiIsInRlc3RzX2ZhaWxlZCIsImR5bmFtaWNfbGliIiwiYWN0aW9uIiwiZm9yY2VfZHJvcCIsImdldCIsImN1cnJlbnQiLCJmb3VuZF90ZXN0IiwiaXNfY3VycmVudCIsInAiLCJjdXJyZW50JDAiLCJjdXJyZW50X3RhZ3MiLCJ0IiwibSIsInZlcmJvc2UiLCJzdHJpY3QiLCJzaG93X2NvdW50cyIsImxpc3RfdGVzdF9uYW1lcyIsImRlbGF5ZWRfZXJyb3JzIiwic3RvcF9vbl9lcnJvciIsImxvZyIsInRpbWVfc2VjIiwidXNlX2NvbG9yIiwiaW5fcGxhY2UiLCJkaWZmX2NvbW1hbmQiLCJzb3VyY2VfdHJlZV9yb290IiwiYWxsb3dfb3V0cHV0X3BhdHRlcm5zIiwiZGlzcGxheWVkX2Rlc2NyIiwiZGVzY3IiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJzIiwic3RyIiwiZmlsZSIsImluZGV4IiwiaW5kZXgkMCIsImkiLCJmaWxlbmFtZSQwIiwiaW5kZXhfc3RyaW5nIiwiaW5kZXgkMSIsInRhZyIsImwiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiZGVzY3IkMCIsImNvbXBsZXRlX3RhZ3MiLCJ1c2VkIiwibGluZV9udW1iZXJfb3B0IiwicG9zaXRpb25fc3RhcnQiLCJlbmRfb2ZfZGVmX2ZpbGVuYW1lIiwibGluZV9udW1iZXIiLCJmb3VuZCIsInJlcSIsImRyb3BwZWQiLCJkZXNjciQxIiwic3Vic3RyaW5nIiwic2hvdWxkX3J1biIsImRlc2NyJDIiLCJjaCIsInJlc3VsdCQwIiwiY2FtbF9yYW5kb21fc3RhdGUiLCJiYXNlX3JhbmRvbV9zdGF0ZSIsInJlc3VsdCIsImJhY2t0cmFjZSQwIiwiZXhuX3N0ciIsInNlcCIsInNldF9saWJfYW5kX3BhcnRpdGlvbiIsInN0YXRpY19saWIiLCJ3aGljaF90ZXN0cyIsInJlcXVpcmVzX3BhcnRpdGlvbiIsInVuc2V0X2xpYiIsInRlc3QiLCJiIiwidGVzdF91bml0IiwidGVzdF9tb2R1bGUiLCJwYXJ0aWFsX3RhZ3MiLCJwcmV2IiwieCIsImUkMCIsImUiLCJzdW1tYXJpemUiLCJrIiwiYWNjIiwiY291bnQiLCJjb3VudF90ZXN0X21vZHVsZXMiLCJ1bnVzZWRfdGVzdHMiLCJlcnJvcnMiLCJ1c2VfY29sb3IkMCIsImluX3BsYWNlJDAiLCJkaWZmX2NvbW1hbmQkMCIsInNvdXJjZV90cmVlX3Jvb3QkMCIsImFsbG93X291dHB1dF9wYXR0ZXJucyQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJvcHQiLCJmaWxlIiwic3RoIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiYnVmZmVyIiwiY2h1bmtfc2l6ZSIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJzdGgkMCIsImFwcGVuZCIsInN0aCQxIiwiZmFpbF9pZl9leGlzdHMiLCJzdGgkMiIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxpc3QkMCIsIndpZHRoIiwibGVmdCIsImxlZnRfY29sdW1uX3dpZHRoIiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwicmVmbCIsImNvbnYiLCJ4IiwibGlmdCIsImNvbXBhcmUiLCJhIiwiYiIsImVxdWFsIiwidWlkIiwibmV4dCIsIm5hbWUiLCJjb2RlIiwiaGFzaCIsInN0YXRpYyQwIiwiY29tcGFyZSQwIiwiazEiLCJrMiIsImNtcCIsImIkMCIsImEkMCIsInlzIiwieSIsInhzIiwibiIsImVxdWFsJDAiLCJoYXNoJDAiLCJzdGF0aWMkMSIsImtleSIsInQiLCJ1aWQkMCIsIm5hbWUkMCIsImNyZWF0ZSIsIm9wdCIsInN0aCIsInNhbWUiLCJubTEiLCJubTIiLCJzYW1lX3dpdG5lc3MiLCJzYW1lX3dpdG5lc3NfZXhuIiwiaW50JDAiLCJtZW0iLCJ0YWJsZSIsInNldCIsImRhdGEiLCJmaW5kIiwiZGF0YSQwIiwiZmFpbCIsInVpZF9hIiwidWlkX2IiLCJtc2ciLCJ3aXRuZXNzIiwidHlwZW5hbWVfb2ZfdCIsImMiLCJkIiwiZSIsImxhYmVsIiwiYXJpdHkiLCJhcmdzX2xhYmVscyIsImluZGV4Iiwib2NhbWxfcmVwciIsInR5aWQiLCJ0cmF2ZXJzZSIsImludGVybmFsX3VzZV9vbmx5IiwibGVuZ3RoIiwidGFnIiwiaXNfcG9seW1vcnBoaWMiLCJ2YWx1ZSIsImZvbGQiLCJpbml0IiwiZiIsImludGVybmFsX3VzZV9vbmx5JDAiLCJsYWJlbCQwIiwiaW5kZXgkMCIsImdldCIsImlzX211dGFibGUiLCJ0eWlkJDAiLCJ0cmF2ZXJzZSQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMSIsInR5cGVuYW1lX29mX3QkMCIsImxlbmd0aCQwIiwiZmllbGQiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImNyZWF0ZSQwIiwiZm9sZCQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMiIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsIm5hbWUkNCIsIm5hbWUkNSIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwibmFtZSQxNSIsIm5hbWUkMTYiLCJuYW1lJDE3IiwibmFtZSQxOCIsIm5hbWUkMTkiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2Zfc3RyaW5nIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX2xpc3QiLCJ0eXBlbmFtZV9vZl9hcnJheSIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfdHVwbGUwIiwidHlwZW5hbWVfb2ZfdHVwbGUyIiwidHlwZW5hbWVfb2ZfdHVwbGUzIiwidHlwZW5hbWVfb2ZfdHVwbGU0IiwidHlwZW5hbWVfb2ZfdHVwbGU1IiwicmVwIiwicmVwJDAiLCJyZXAkMSIsInJlcCQyIiwicmVwJDMiLCJyZXAkNCIsIm5hbWUkMjAiLCJhcml0eSQwIiwiYyQwIiwiYiQxIiwiYSQxIiwiZCQwIiwiYyQxIiwiYiQyIiwiYSQyIiwidHlwZW5hbWVfb2ZfdCQxIiwicm5nIiwiZG9tIiwicmVwJDUiLCJyZXAkNiIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsInIxIiwicjIkMCIsInIxJDAiLCJyMiQxIiwieCQwIiwicjEkMSIsInIyJDIiLCJ4JDEiLCJyMSQyIiwicjIkMyIsIngkMiIsInIxJDMiLCJyMiQ0IiwieCQzIiwicm5nMSIsImRvbTEiLCJybmcyIiwiZG9tMiIsInQxJDEiLCJ0MiQyIiwiYjIiLCJhMiIsImIxIiwiYTEiLCJjMiIsImIyJDAiLCJhMiQwIiwiYzEiLCJiMSQwIiwiYTEkMCIsImQyIiwiYzIkMCIsImIyJDEiLCJhMiQxIiwiZDEiLCJjMSQwIiwiYjEkMSIsImExJDEiLCJlMiIsImQyJDAiLCJjMiQxIiwiYjIkMiIsImEyJDIiLCJlMSIsImQxJDAiLCJjMSQxIiwiYjEkMiIsImExJDIiLCJyMSQ0IiwicjIkNSIsInIxJDUiLCJyMiQ2IiwibmFtZTEiLCJyMiQ3IiwibmFtZTIiLCJyMSQ3IiwieCQ0IiwidDEkMyIsInQyJDMiLCJ0MiQ0IiwicjEkNiIsInQxJDIiLCJyMiIsInQyJDEiLCJwcm9vZiIsImhlYWQiLCJ0JDAiLCJ0JDEiLCJ0eXBlcmVwX29mX2ludCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX3JlZiIsInR5cGVyZXBfb2ZfZnVuY3Rpb24iLCJ0eXBlcmVwX29mX3R1cGxlMCIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlNCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidmFsdWVfdHVwbGUwIiwidHlwZW5hbWVfb2ZfaW50NjMiLCJ0eXBlcmVwX29mX2ludDYzIiwicmVwcl9vZl9wb2x5X3ZhcmlhbnQiLCJ2YXJpYW50Iiwic2l6ZSIsInJlcHIiLCJoYXNoX3ZhcmlhbnQiLCJzIiwiYWNjdSIsImkiLCJkb3VibGVfYXJyYXlfdmFsdWUiLCJkb3VibGUkMCIsInNpbXBsZSIsIm1hcF92YXJpYW50IiwibWFwIiwidHlwZW5hbWUiLCJwb2x5bW9ycGhpYyIsInRhZyQwIiwiZmN0IiwiayIsInRhZ3MiLCJhdGFnIiwiYnRhZyIsIm1hcF9yZWNvcmQiLCJyZWNvcmQiLCJmaWVsZCQwIiwiZmllbGRzIiwiZ2V0JDAiLCJhZmllbGQiLCJiZmllbGQiLCJyZXF1aXJlZCIsInRhYmxlJDAiLCJjaGVja19kZXBlbmRlbmNpZXMiLCJpbXBsZW1lbnRzJDAiLCJtZXNzYWdlIiwicmVwbGFjZSQwIiwibWVtJDAiLCJ0YWJsZTAiLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJ0YWJsZTUiLCJpc19yZWdpc3RlcmVkIiwiaWRlbnQiLCJ1bml0IiwicmVnaXN0ZXIwIiwiY29tcHV0ZSIsInJlZ2lzdGVyMSIsInJlZ2lzdGVyMiIsInJlZ2lzdGVyMyIsInJlZ2lzdGVyNCIsInJlZ2lzdGVyNSIsInJlZ2lzdGVyIiwidHlwZXJlcF9vZl9hIiwib2ZfdHlwZXJlcCIsImNvbnRleHQiLCJtZW1vX3RhYmxlIiwicmVwJDExIiwicmVwJDEyIiwicmVwJDEzIiwicmVwJDE0IiwicmVwJDE1IiwidHVwbGUiLCJyYSIsInJiIiwicmEkMCIsInJiJDAiLCJyYyIsInJhJDEiLCJyYiQxIiwicmMkMCIsInJkIiwicmEkMiIsInJiJDIiLCJyYyQxIiwicmQkMCIsInJlIiwiY29udGVudCIsIm5hbWVkIiwic2hhcmVkIiwiY3VzdG9tIiwiY3VzdG9tJDAiLCJjdXN0b20kMSIsInJlcCQ3IiwiY3VzdG9tJDIiLCJjdXN0b20kMyIsInJlcCQ4IiwiY3VzdG9tJDQiLCJjdXN0b20kNSIsInJlcCQ5IiwidHlwZW5hbWVfb2ZfdCQyIiwiY3VzdG9tJDYiLCJjdXN0b20kNyIsInJlcCQxMCIsInR5cGVuYW1lX29mX3QkMyIsImN1c3RvbSQ4IiwiY3VzdG9tJDkiLCJjb21wdXRhdGlvbiIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIiwic2hhcmUiLCJvZl9wMSIsIm9mX3AyIiwib2ZfcDMiLCJvZl9wNCIsIm9mX3A1IiwidHlwZW5hbWVfb2ZfbmFtZWQiLCJ0eXBlcmVwX29mX3QiLCJlcnJvcl9zb3VyY2VfMDI0IiwiaGFzaF9mb2xkX3QiLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsIm1pbiIsIm1heCIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJiZXR3ZWVuIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJjb21wYXJhdG9yIiwicHAiLCJoYXNoYWJsZSIsImVxdWFsIiwicmVsYXRpdmVfdG8iLCJkaXIiLCJ0IiwidiIsImV4biQwIiwiZXhuIiwiZGlyX29yX2Vycm9yIiwiaW5pdGlhbF9kaXIiLCJ0X29mX3NleHAkMCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZmlsZW5hbWVfMDA0IiwibGluZV9udW1iZXJfMDA2IiwibGluZV9zdGFydF8wMDgiLCJzdGFydF9wb3NfMDEwIiwiZW5kX3Bvc18wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI2IiwiZmllbGRfc2V4cF8wMTckNSIsImZpZWxkX3NleHBfMDE3IiwieF8wMjciLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE3JDQiLCJmdmFsdWVfMDE5IiwiZW5kX3Bvc18wMTMiLCJzdGFydF9wb3NfMDExIiwibGluZV9zdGFydF8wMDkiLCJsaW5lX251bWJlcl8wMDciLCJmaWxlbmFtZV8wMDUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDM3Iiwic3RhcnRfcG9zXzAzNSIsImxpbmVfc3RhcnRfMDMzIiwibGluZV9udW1iZXJfMDMxIiwiZmlsZW5hbWVfMDI5IiwiYXJnXzAzOCIsImJuZHNfMDI4IiwiYXJnXzAzNiIsImJuZHNfMDI4JDAiLCJhcmdfMDM0IiwiYm5kc18wMjgkMSIsImFyZ18wMzIiLCJibmRzXzAyOCQyIiwiYXJnXzAzMCIsImJuZHNfMDI4JDMiLCJjb21wYXJlJDAiLCJhXzAzOSIsImJfMDQwIiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwiZmlsZW5hbWUiLCJvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiIsInBvcyIsInNleHBfb2ZfdCQxIiwiY29tcGFyZSQyIiwidG9fc3RyaW5nJDAiLCJvZl9zdHJpbmckMCIsInMiLCJpIiwib2ZfYV8wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImNtcF9hIiwiYV8wMDciLCJiXzAwOCIsImFfMDA5IiwiYl8wMTAiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiZ2V0X2N1cnJlbnQiLCJzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXQiLCJsb2NhdGlvbiIsInBvcyIsInByZXZfcG9zIiwicHJldl9wb3MkMCIsImxlbiIsImJhc2ljX2ZsdXNoIiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dCIsImluc3RhbmNlIiwidGVzdHNfcnVuJDAiLCJzeW1ib2xfYmluZCIsInJldHVybiQwIiwiZmx1c2giLCJleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUiLCJzIiwiZ2V0X291dHB1dHNfYW5kX2NsZWFudXAiLCJsYXN0X29mcyIsIm5leHRfb2ZzIiwibG9jIiwiYWNjIiwib2ZzIiwib3V0cHV0cyIsInRyYWlsaW5nX291dHB1dCIsInNhdmVfb3V0cHV0IiwidHJhaWxpbmciLCJibG9ja3MiLCJmaW5hbF9mbHVzaCIsIm9wdCIsImsiLCJzdGgiLCJjb3VudCIsIm1heF9hdHRlbXB0cyIsInJ1biQwIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJhcHBlbmQiLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4IiwiYmluZCIsInQiLCJmIiwidG9fcnVuIiwic2FuaXRpemUiLCJzIiwicnVuIiwiZmx1c2hlZCIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsIm9wdCIsInN0aCIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyIsInRvY3MkMCIsInRvYyIsImZvcmdldF90b2NzIiwiZm9yZ2V0X3RvYyQwIiwiZm9yZ2V0X3QiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJlbXB0eSIsImdldF9tYW55Iiwic3RhY2skMCIsInN0YWNrIiwiZW1wdHkkMCIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwiY2FtbF9wYXJzZXJfZW52IiwiXzEiLCJfMiIsInl5YWN0IiwieXl0YWJsZXMiLCJzZXhwIiwibGV4ZnVuIiwibGV4YnVmIiwic2V4cF9vcHQiLCJzZXhwcyIsInJldl9zZXhwcyIsInNleHBzX2FicyIsIm9jYW1sX2xleF90YWJsZXMiLCJidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsInNjYW5fc3RyaW5nIiwibG9jcyIsImxvY3MkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJsb2NzJDEiLCJsb2NzJDIiLCJzdGFydCIsImdlbl9sb2FkX3NleHBfbG9jIiwidW5pdCIsIm9mX2ludF9zdHlsZSIsIm9mX2Zsb2F0X3N0eWxlIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX21hY2giLCJ0b19zdHJpbmdfaHVtIiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsImRlZmF1bHRfaW5kZW50IiwibWVzc2FnZSIsImNvbXBhcmUiLCJlcXVhbCIsInRfc2V4cF9ncmFtbWFyIiwid2l0aF9uZXdfYnVmZmVyIiwib2MiLCJvdXRwdXRfaHVtIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJpbmRlbnQiLCJvdXRwdXRfbWFjaCIsInBybmciLCJ0ZW1wX2ZpbGVfbmFtZSIsInByZWZpeCIsInN1ZmZpeCIsInYiLCJyYW5kX3N0YXRlIiwicmV0Iiwicm5kIiwib3Blbl90ZW1wX2ZpbGUiLCJvcHQiLCJzdGgiLCJwZXJtIiwiY291bnRlciIsIm5hbWUiLCJlJDAiLCJlIiwiY291bnRlciQwIiwic2F2ZV9vZl9vdXRwdXQiLCJvdXRwdXRfZnVuY3Rpb24iLCJmaWxlIiwidG1wX25hbWUiLCJvdXRwdXRfc2V4cF9ubCIsImRvX291dHB1dCIsInNhdmVfaHVtIiwic2F2ZV9tYWNoIiwib3V0cHV0X3NleHBzX25sIiwic2F2ZV9zZXhwc19odW0iLCJzYXZlX3NleHBzX21hY2giLCJzY2FuX3NleHAiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9zZXhwcyIsInNjYW5fcmV2X3NleHBzIiwiZ2V0X21haW5fYnVmIiwiYnVmJDAiLCJidWYkMSIsInNjYW5fZm9sZF9zZXhwcyIsImluaXQiLCJtYWluIiwiYWNjIiwiYWNjJDAiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBzX2NvbnYiLCJjb2xsIiwic2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UiLCJjb250YWluaW5nX3NleHAiLCJsb2NhdGlvbiIsImludmFsaWRfc2V4cCIsImV4biIsIngkMCIsIngkMSIsIngkMiIsImdldF9zZXhwIiwiZ2V0X3JhbmdlIiwicmFuZ2UiLCJzZXhwX29mX2NvbnYiLCJzZXhwX29mX2EiLCJhIiwiZmluZF9zZXhwIiwiYW5ub3Rfc2V4cCIsImxvb3AiLCJzdWJfc2V4cCIsImFubm90cyIsInJlcyIsImV4biQwIiwiaW52YWxpZF9zZXhwJDAiLCJjcmVhdGUiLCJ0ZXh0X2xpbmUiLCJzdGgkMCIsInRleHRfY2hhciIsInN0aCQxIiwiYnVmX3BvcyIsInN0aCQyIiwiZ2xvYmFsX29mZnNldCIsImZhaWwiLCJtc2ciLCJ3aXRoX2J1Zl9wb3MiLCJwZSIsInBwb3MiLCJhbm5vdGF0ZV9zZXhwIiwiaXRlciIsInN0YXJ0X3BvcyQwIiwiYW5ub3QiLCJlbmRfcG9zJDAiLCJyYWlzZV9mb3VuZCIsInN0YXRlIiwicmFpc2VfZm91bmQkMCIsInBvc2l0aW9ucyIsInBhcnNlX3Bvc19vZl9zdGF0ZSIsInJ1bl9mZWVkX2xvb3AiLCJzdGFjayIsImxlbiIsInN0ciIsInN0cl9sZW4iLCJwb3NfbGVuIiwibWF4X3BvcyIsInByZXZpb3VzX29mZnNldCIsInN0YWNrJDAiLCJyZXN1bHQiLCJvZmZzZXQiLCJuZXh0X3BvcyIsImVyciIsInBhcnNlX3N0YXRlIiwicGFyc2VfZXJyb3IiLCJ1c2VkX3JlZiIsInBhcnNlX2Z1biIsImNvbnRfc3RhdGUiLCJwYXJzZSIsInBhcnNlX3BvcyIsImxlbiQwIiwicmFpc2VfZm91bmQkMSIsImxlbmd0aCIsInVuc2FmZV9mZWVkX2xvb3AiLCJzdGFjayQxIiwicG9zJDEiLCJwYXJzZV9zdHIiLCJyYWlzZV9mb3VuZCQyIiwibGVuZ3RoJDAiLCJ1bnNhZmVfZmVlZF9sb29wJDAiLCJwYXJzZV9zdHJfYW5ub3QiLCJyYWlzZV9mb3VuZCQzIiwibGVuZ3RoJDEiLCJ1bnNhZmVfZmVlZF9sb29wJDEiLCJwYXJzZV9iaWdzdHJpbmciLCJyYWlzZV9mb3VuZCQ0IiwibGVuZ3RoJDIiLCJ1bnNhZmVfZmVlZF9sb29wJDIiLCJwYXJzZV9iaWdzdHJpbmdfYW5ub3QiLCJta190aGlzX3BhcnNlIiwibXlfcGFyc2UiLCJwYXJzZV9wb3MkMCIsInBhcnNlX3BvcyQxIiwiZmVlZF9lbmRfb2ZfaW5wdXQiLCJ0aGlzX3BhcnNlIiwid3NfYnVmIiwiZ2VuX2lucHV0X3NleHAiLCJpYyIsInRoaXNfcGFyc2UkMSIsInNleHAkMCIsInRoaXNfcGFyc2UkMCIsImlucHV0X3NleHAiLCJnZW5faW5wdXRfcmV2X3NleHBzIiwicmV2X3NleHBzX3JlZiIsImJ1Zl9sZW4iLCJsZW4kMiIsInRoaXNfcGFyc2UkMiIsIm5fcGFyc2VkIiwibmV3X2xlbiIsImxlbiQxIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJvZl9zdHJpbmdfYmlnc3RyaW5nIiwibG9jIiwiZ2V0X2xlbiIsImdldF9zdWIiLCJjb250X3N0YXRlX3N0ciIsIm9mX3N0cmluZyIsIm9mX3N0cmluZ19tYW55IiwiZ2V0X2JzdHJfc3ViX3N0ciIsImJzdHIiLCJpIiwiYnN0cl93c19idWYiLCJvZl9iaWdzdHJpbmciLCJnZW5fbG9hZF9yZXZfc2V4cHMiLCJleGMkMCIsImV4YyIsImxvYWRfcmV2X3NleHBzIiwibG9hZF9zZXhwcyIsImdlbl9sb2FkX3NleHAiLCJzdHJpY3QiLCJ0aGlzX3BhcnNlJDQiLCJzZXhwJDEiLCJ0aGlzX3BhcnNlJDMiLCJjb250X3N0YXRlJDAiLCJsb2FkX3NleHAiLCJnZXRfc2V4cCQwIiwiZ2V0X3JhbmdlJDAiLCJzZXhwX29mX2NvbnYkMCIsImZpbmRfc2V4cCQwIiwiaW5wdXRfcmV2X3NleHBzJDAiLCJpbnB1dF9zZXhwJDAiLCJpbnB1dF9zZXhwcyQwIiwib2Zfc3RyaW5nJDAiLCJvZl9iaWdzdHJpbmckMCIsImxvYWRfcmV2X3NleHBzJDAiLCJsb2FkX3NleHBzJDAiLCJsb2FkX3NleHAkMCIsImNvbnYiLCJiYWRfc2V4cCIsImJhZF9hbm5vdF9zZXhwIiwiZ2V0X2NvbnZfZXhuIiwibGluZSIsImxvYWRfc2V4cF9jb252IiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyQwIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIiwiYmlnc3RyaW5nX29mX3NleHAiLCJmbG9hdF92ZWNfb2Zfc2V4cCIsImVtcHR5X2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdF92ZWMiLCJjcmVhdGVfZmxvYXQzMl92ZWMiLCJjcmVhdGVfZmxvYXQ2NF92ZWMiLCJlbXB0eV9mbG9hdDMyX3ZlYyIsImVtcHR5X2Zsb2F0NjRfdmVjIiwiZmxvYXQzMl92ZWNfb2Zfc2V4cCIsImZsb2F0NjRfdmVjX29mX3NleHAiLCJ2ZWNfb2Zfc2V4cCIsImNoZWNrX3Rvb19tdWNoX2RhdGEiLCJkYXRhIiwiZmxvYXRfbWF0X29mX3NleHAiLCJjcmVhdGVfZmxvYXRfbWF0Iiwic24iLCJzbSIsImRhdGEkMCIsImRhdGEkMSIsImNvbCQwIiwiY3JlYXRlX2Zsb2F0MzJfbWF0IiwiY3JlYXRlX2Zsb2F0NjRfbWF0IiwiZmxvYXQzMl9tYXRfb2Zfc2V4cCIsImZsb2F0NjRfbWF0X29mX3NleHAiLCJtYXRfb2Zfc2V4cCIsInN0cmluZ19vZl9vZl9zZXhwX29mIiwidG9fc2V4cCIsIm9mX3N0cmluZ19vZl9vZl9zZXhwIiwib2Zfc2V4cCIsInRfb2Zfc2V4cCIsInRfb2Zfc2V4cCQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X29mX3NleHAiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYm9vbCIsImJvb2xfb2Zfc2V4cCIsImJvb2xfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2NoYXIiLCJjaGFyX29mX3NleHAiLCJjaGFyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50IiwiaW50X29mX3NleHAiLCJpbnRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfb2Zfc2V4cCIsImludDMyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9vZl9zZXhwIiwiaW50NjRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3JlZiIsInJlZl9vZl9zZXhwIiwicmVmX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fb2Zfc2V4cCIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2xpc3QiLCJsaXN0X29mX3NleHAiLCJsaXN0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwiYXJyYXlfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJleG5fc2V4cF9ncmFtbWFyIiwiY29lcmNlIiwiZG9jX2NvbW1lbnRfdGFnIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwidGFnIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwic2V4cDEiLCJyZWdpc3RlcjIiLCJzZXhwX29mX2FyZzIiLCJzZXhwMiIsInJlZ2lzdGVyMyIsInNleHBfb2ZfYXJnMyIsInNleHAzIiwicmVnaXN0ZXI0Iiwic2V4cF9vZl9hcmc0Iiwic2V4cDQiLCJyZWdpc3RlcjUiLCJzZXhwX29mX2FyZzUiLCJzZXhwNSIsInJlZ2lzdGVyNiIsInNleHBfb2ZfYXJnNiIsInNleHA2IiwicmVnaXN0ZXI3Iiwic2V4cF9vZl9hcmc3Iiwic2V4cDciLCJyZWdpc3RlcjgiLCJzZXhwX29mX2FyZzgiLCJzZXhwOCIsInJlZ2lzdGVyOSIsInNleHBfb2ZfYXJnOSIsInNleHA5IiwicmVnaXN0ZXIxMCIsInNleHBfb2ZfYXJnMTAiLCJzZXhwMTAiLCJpbnQ2NCQwIiwiZ29sZGVuX2dhbW1hIiwicG9wY291bnQiLCJvZl9pbnQiLCJzZWVkIiwiY29weSIsIm9kZF9nYW1tYSIsIm1peF9iaXRzIiwieiIsIm4iLCJtaXg2NCIsInokMCIsInokMSIsIm5leHRfc2VlZCIsInQiLCJuZXh0Iiwib2Zfc2VlZF9hbmRfZ2FtbWEiLCJnYW1tYSIsInNlZWQkMCIsInJhbmRvbV9pbnQ2NCIsInJhbmRvbV9zdGF0ZSIsImNyZWF0ZSIsInNwbGl0IiwibmV4dF9pbnQ2NCIsInBlcnR1cmIiLCJzYWx0IiwiYm9vbCIsInN0YXRlIiwieCIsImludDY0IiwibG8iLCJoaSIsInJlbWFpbmRlcl9tYXhpbXVtIiwiZHJhdyQwIiwicmVtYWluZGVyIiwiZHJhd19tYXhpbXVtIiwiZHJhdyIsImludCQwIiwibG8kMCIsImhpJDAiLCJpbnQzMiIsIm5hdGl2ZWludCIsImludDYzIiwiZG91YmxlX3VscCIsInVuaXRfZmxvYXRfZnJvbV9pbnQ2NCIsInVuaXRfZmxvYXQiLCJmbG9hdCQwIiwicmFuZ2UiLCJtaWQiLCJmIiwiYml0c190b19yZXByZXNlbnQiLCJ0JDAiLCJsb2dfdW5pZm9ybSIsIm1pbl9iaXRzIiwibWF4X2JpdHMiLCJiaXRzIiwidF9zZXhwX2dyYW1tYXIiLCJvZl9mbG9hdCIsInRvX2Zsb2F0Iiwib2ZfaW50X2V4biIsInRvX2ludF9leG4iLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcXVhbCIsImNvbXBhcmUiLCJtaW4iLCJtYXgiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiYmV0d2VlbiIsImNsYW1wX2V4biIsImNsYW1wIiwiY29tcGFyYXRvciIsInBwIiwiaGFzaGFibGUiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImludmFyaWFudCIsInRvX3N0cmluZ19odW0iLCJvbmUiLCJtaW51c19vbmUiLCJyZW0iLCJyb3VuZCIsInJvdW5kX3Rvd2FyZHNfemVybyIsInJvdW5kX2Rvd24iLCJyb3VuZF91cCIsInJvdW5kX25lYXJlc3QiLCJzdWNjIiwicHJlZCIsInBvdyIsImJpdF9hbmQiLCJiaXRfb3IiLCJiaXRfeG9yIiwiYml0X25vdCIsInBvcGNvdW50JDAiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJkZWNyIiwiaW5jciIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0X2V4biIsInRvX2ludDY0Iiwib2ZfbmF0aXZlaW50X2V4biIsInRvX25hdGl2ZWludF9leG4iLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJjZWlsX3BvdzIiLCJmbG9vcl9wb3cyIiwiY2VpbF9sb2cyIiwiZmxvb3JfbG9nMiIsImlzX3BvdzIiLCJjbHoiLCJjdHoiLCJzeW1ib2wiLCJsbm90IiwiYWJzIiwiemVybyIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInRfc2V4cF9ncmFtbWFyJDAiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsImVxdWFsJDAiLCJjb21wYXJlJDAiLCJtaW4kMCIsIm1heCQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjb21wYXJhdG9yJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwiemVybyQwIiwib25lJDAiLCJtaW51c19vbmUkMCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwibmVnIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwicmVtJDAiLCJzeW1ib2wkMTciLCJsYW5kIiwibG9yIiwibHhvciIsImxub3QkMCIsImxzbCIsImFzciIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJhYnMkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQxIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsIm51bV9iaXRzJDAiLCJtYXhfdmFsdWUkMCIsIm1pbl92YWx1ZSQwIiwibHNyIiwic2hpZnRfcmlnaHRfbG9naWNhbCQwIiwiY2VpbF9wb3cyJDAiLCJmbG9vcl9wb3cyJDAiLCJjZWlsX2xvZzIkMCIsImZsb29yX2xvZzIkMCIsImlzX3BvdzIkMCIsImNseiQwIiwiY3R6JDAiLCJ0X3NleHBfZ3JhbW1hciQyIiwib2ZfZmxvYXQkMiIsInRvX2Zsb2F0JDIiLCJvZl9pbnRfZXhuJDIiLCJ0b19pbnRfZXhuJDIiLCJoYXNoX2ZvbGRfdCQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDIiLCJlcXVhbCQyIiwiY29tcGFyZSQyIiwibWluJDIiLCJtYXgkMiIsImFzY2VuZGluZyQyIiwiZGVzY2VuZGluZyQyIiwiYmV0d2VlbiQyIiwiY2xhbXBfZXhuJDIiLCJjbGFtcCQyIiwiY29tcGFyYXRvciQyIiwicHAkMiIsImhhc2hhYmxlJDIiLCJpc19wb3NpdGl2ZSQyIiwiaXNfbm9uX25lZ2F0aXZlJDIiLCJpc19uZWdhdGl2ZSQyIiwiaXNfbm9uX3Bvc2l0aXZlJDIiLCJzaWduJDIiLCJpbnZhcmlhbnQkMiIsInRvX3N0cmluZ19odW0kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJyZW0kMiIsInJvdW5kJDIiLCJyb3VuZF90b3dhcmRzX3plcm8kMiIsInJvdW5kX2Rvd24kMiIsInJvdW5kX3VwJDIiLCJyb3VuZF9uZWFyZXN0JDIiLCJzdWNjJDIiLCJwcmVkJDIiLCJwb3ckMiIsImJpdF9hbmQkMiIsImJpdF9vciQyIiwiYml0X3hvciQyIiwiYml0X25vdCQyIiwicG9wY291bnQkMyIsInNoaWZ0X2xlZnQkMiIsInNoaWZ0X3JpZ2h0JDIiLCJkZWNyJDIiLCJpbmNyJDIiLCJvZl9pbnQzMl9leG4kMiIsInRvX2ludDMyX2V4biQyIiwib2ZfaW50NjRfZXhuJDIiLCJ0b19pbnQ2NCQyIiwib2ZfbmF0aXZlaW50X2V4biQyIiwidG9fbmF0aXZlaW50X2V4biQyIiwib2ZfZmxvYXRfdW5jaGVja2VkJDIiLCJudW1fYml0cyQyIiwibWF4X3ZhbHVlJDIiLCJtaW5fdmFsdWUkMiIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMiIsImNlaWxfcG93MiQyIiwiZmxvb3JfcG93MiQyIiwiY2VpbF9sb2cyJDIiLCJmbG9vcl9sb2cyJDIiLCJpc19wb3cyJDIiLCJjbHokMiIsImN0eiQyIiwic3ltYm9sJDMzIiwibG5vdCQyIiwiYWJzJDIiLCJ6ZXJvJDIiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJ0X3NleHBfZ3JhbW1hciQzIiwib2ZfZmxvYXQkMyIsInRvX2Zsb2F0JDMiLCJvZl9pbnRfZXhuJDMiLCJ0b19pbnRfZXhuJDMiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsIm9mX3N0cmluZyQzIiwidG9fc3RyaW5nJDMiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJlcXVhbCQzIiwiY29tcGFyZSQzIiwibWluJDMiLCJtYXgkMyIsImFzY2VuZGluZyQzIiwiZGVzY2VuZGluZyQzIiwiYmV0d2VlbiQzIiwiY2xhbXBfZXhuJDMiLCJjbGFtcCQzIiwiY29tcGFyYXRvciQzIiwicHAkMyIsImhhc2hhYmxlJDMiLCJpc19wb3NpdGl2ZSQzIiwiaXNfbm9uX25lZ2F0aXZlJDMiLCJpc19uZWdhdGl2ZSQzIiwiaXNfbm9uX3Bvc2l0aXZlJDMiLCJzaWduJDMiLCJpbnZhcmlhbnQkMyIsInRvX3N0cmluZ19odW0kMyIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJuZWckMSIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsInN5bWJvbCQ0OSIsInN5bWJvbCQ1MCIsInJlbSQzIiwic3ltYm9sJDUxIiwibGFuZCQxIiwibG9yJDEiLCJseG9yJDEiLCJsbm90JDMiLCJsc2wkMSIsImFzciQxIiwicm91bmQkMyIsInJvdW5kX3Rvd2FyZHNfemVybyQzIiwicm91bmRfZG93biQzIiwicm91bmRfdXAkMyIsInJvdW5kX25lYXJlc3QkMyIsImFicyQzIiwic3VjYyQzIiwicHJlZCQzIiwicG93JDMiLCJiaXRfYW5kJDMiLCJiaXRfb3IkMyIsImJpdF94b3IkMyIsImJpdF9ub3QkMyIsInBvcGNvdW50JDQiLCJzaGlmdF9sZWZ0JDMiLCJzaGlmdF9yaWdodCQzIiwiZGVjciQzIiwiaW5jciQzIiwib2ZfaW50MzJfZXhuJDMiLCJ0b19pbnQzMl9leG4kMyIsIm9mX2ludDY0X2V4biQzIiwidG9faW50NjQkMyIsIm9mX25hdGl2ZWludF9leG4kMyIsInRvX25hdGl2ZWludF9leG4kMyIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQzIiwibnVtX2JpdHMkMyIsIm1heF92YWx1ZSQzIiwibWluX3ZhbHVlJDMiLCJsc3IkMSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMyIsImNlaWxfcG93MiQzIiwiZmxvb3JfcG93MiQzIiwiY2VpbF9sb2cyJDMiLCJmbG9vcl9sb2cyJDMiLCJpc19wb3cyJDMiLCJjbHokMyIsImN0eiQzIiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5IiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsInN1bSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwidyIsIm4iLCJyZWNfbGlzdCIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm9wdCIsInN0aCIsIm1pbl9sZW5ndGgiLCJzdGgkMCIsIm1heF9sZW5ndGgiLCJ1cHBlcl9ib3VuZCIsIm1heF9sZW5ndGgkMCIsImxlbiIsInJlbWFpbmluZyIsIm1heF9pbmRleCIsInVuaXQiLCJib29sIiwib3B0aW9uIiwidmFsdWVfdCIsImVpdGhlciIsImZzdF90Iiwic25kX3QiLCJyZXN1bHQiLCJva190IiwiZXJyX3QiLCJvayIsImVyciIsImxpc3RfZ2VuZXJpYyIsImVsdF9nZW4iLCJsaXN0X25vbl9lbXB0eSIsImxpc3Rfd2l0aF9sZW5ndGgiLCJsZW5ndGgiLCJsaXN0X2ZpbHRlcmVkIiwiZWx0cyIsImVsdHMkMCIsImxlbmd0aF9vZl9pbnB1dCIsImxlbmd0aF9vZl9vdXRwdXQiLCJpbmRpY2VzIiwibGlzdF9wZXJtdXRhdGlvbnMiLCJyZWYiLCJjaGFyX3VuaWZvcm1faW5jbHVzaXZlIiwiY2hhcl91cHBlcmNhc2UiLCJjaGFyX2xvd2VyY2FzZSIsImNoYXJfZGlnaXQiLCJjaGFyX3ByaW50X3VuaWZvcm0iLCJjaGFyX3VuaWZvcm0iLCJjaGFyX2FscGhhIiwiY2hhcl9hbHBoYW51bSIsImNoYXJfd2hpdGVzcGFjZSIsImNoYXJfcHJpbnQiLCJjaGFyJDAiLCJzbWFsbF9pbnQiLCJhbGxvd196ZXJvIiwibG93ZXJfYm91bmQiLCJ3ZWlnaHRlZF9sb3ciLCJ3ZWlnaHRlZF9oaWdoIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsInVuaWZvcm0iLCJsb2dfdW5pZm9ybSIsImludCQwIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwidW5pZm9ybSQwIiwibG9nX3VuaWZvcm0kMCIsImludDMyIiwiaW50MzJfdW5pZm9ybSIsImludDMyX2luY2x1c2l2ZSIsImludDMyX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50MzJfbG9nX2luY2x1c2l2ZSIsImludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsInVuaWZvcm0kMSIsImxvZ191bmlmb3JtJDEiLCJpbnQ2MyIsImludDYzX3VuaWZvcm0iLCJpbnQ2M19pbmNsdXNpdmUiLCJpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSIsImludDYzX2xvZ19pbmNsdXNpdmUiLCJpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJzeW1ib2wkMzYiLCJsbm90JDIiLCJhYnMkMiIsInplcm8kMiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInVuaWZvcm0kMiIsImxvZ191bmlmb3JtJDIiLCJpbnQ2NCIsImludDY0X3VuaWZvcm0iLCJpbnQ2NF9pbmNsdXNpdmUiLCJpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2xvZ19pbmNsdXNpdmUiLCJpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJ1bmlmb3JtJDMiLCJsb2dfdW5pZm9ybSQzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X3VuaWZvcm0iLCJuYXRpdmVpbnRfaW5jbHVzaXZlIiwibmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlIiwibmF0aXZlaW50X2xvZ19pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXYiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X251bV9tYW50aXNzYV9iaXRzIiwibnVtX2JpdHMiLCJiaXRzIiwiZmxvYXRfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfZXhwb25lbnQiLCJmbG9hdF96ZXJvIiwibGV0X3N5bnRheF8wMTIiLCJsZXRfc3ludGF4XzAxMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJmbG9hdF9zdWJub3JtYWwiLCJmbG9hdF9ub3JtYWwiLCJmbG9hdF9pbmZpbml0ZSIsImxldF9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjIiLCJmbG9hdF9uYW4iLCJmbG9hdF9vZl9jbGFzcyIsImMiLCJmbG9hdF9tYXRjaGluZ19jbGFzc2VzIiwiZmxvYXRfZmluaXRlIiwiZmxvYXRfd2l0aG91dF9uYW4iLCJmbG9hdCQwIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJtYXhfdG90YWxfc2l6ZSIsImEiLCJiIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImJpZ2FycmF5Ml9kaW0iLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsInYiLCJkaW0yJDAiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImsiLCJkcm9wX2tleXMiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsIm1vZF9uYW1lIiwibW9kX25hbWUkMCIsIm1vZF9uYW1lJDEiLCJtb2RfbmFtZSQyIiwibW9kX25hbWUkMyIsIm1vZF9uYW1lJDQiLCJtb2RfbmFtZSQ1IiwibW9kX25hbWUkNiIsIm1vZF9uYW1lJDciLCJtb2RfbmFtZSQ4IiwibW9kX25hbWUkOSIsIm1heF92YWx1ZSQxMiIsIm1vZF9uYW1lJDEwIiwicmFpc2VfY2Fubm90X3JlcHIiLCJ0b19zdHJpbmciLCJ4IiwidHJ1bmNfdW5zaWduZWQiLCJjb252IiwibG9nYW5kIiwibWFzayIsImV4bl91bnNpZ25lZCIsImVxdWFsIiwieSIsInRydW5jX3NpZ25lZCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsInNoaWZ0IiwiZXhuX3NpZ25lZCIsImlkZW50aXR5X2lmX3Bvc2l0aXZlIiwiZ3JlYXRlcl9lcXVhbCIsInplcm8iLCJvZl9zZXhwX2Vycm9yIiwid2hhdCIsInNleHAiLCJ0b19pbnQzMiIsInRvX2ludDY0IiwiY29tcGFyZSIsImhhc2hfZm9sZF90IiwiZnVuYyIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJ0eXBlcmVwX29mX3QiLCJ0eXBlbmFtZV9vZl90IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwic2lnbmVkIiwibnVtX2JpdHMiLCJudW1fYnl0ZXMiLCJ0cnVuYyIsImV4biIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJsb2dhbmQ2NCIsIm1hc2s2NCIsImVxdWFsJDAiLCJlcXVhbDY0IiwidG9fc3RyaW5nJDAiLCJ0b19zdHJpbmc2NCIsInRydW5jJDAiLCJleG4kMCIsInRydW5jNjQiLCJleG42NCIsIm9mX2Jhc2VfaW50X3RydW5jJDAiLCJvZl9iYXNlX2ludF9leG4kMCIsInRvX2Jhc2VfaW50JDAiLCJvZl91aW50MTZfdHJ1bmMiLCJvZl91aW50MTZfZXhuIiwib2ZfdWludDMyX3RydW5jIiwib2ZfdWludDMyX2V4biIsIm9mX3VpbnQ2M190cnVuYyIsIm9mX3VpbnQ2M19leG4iLCJvZl91aW50NjRfdHJ1bmMiLCJvZl91aW50NjRfZXhuIiwib2ZfaW50OF93cmFwIiwib2ZfaW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiY29tcGFyZSQzIiwiaGFzaF9mb2xkX3QkMSIsImZ1bmMkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF9vZl90JDEiLCJ0eXBlcmVwX29mX3QkMSIsInR5cGVuYW1lX29mX3QkMSIsInplcm8kMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJtaW5fdmFsdWUkMSIsIm1heF92YWx1ZSQxIiwic2lnbmVkJDEiLCJudW1fYml0cyQxIiwibnVtX2J5dGVzJDEiLCJ0cnVuYyQxIiwiZXhuJDEiLCJvZl9iYXNlX2ludF90cnVuYyQxIiwib2ZfYmFzZV9pbnRfZXhuJDEiLCJ0b19iYXNlX2ludCQxIiwib2ZfaW50OCIsIm9mX2ludDMyX3RydW5jJDAiLCJvZl9pbnQzMl9leG4kMCIsIm9mX2ludDYzX3RydW5jJDAiLCJvZl9pbnQ2M19leG4kMCIsIm9mX2ludDY0X3RydW5jJDAiLCJvZl9pbnQ2NF9leG4kMCIsIm9mX3VpbnQxNl93cmFwIiwib2ZfdWludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsImNvbXBhcmUkNSIsImhhc2hfZm9sZF90JDIiLCJmdW5jJDIiLCJoYXNoJDIiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJ0eXBlbmFtZV9vZl90JDIiLCJ6ZXJvJDIiLCJtaW5fdmFsdWUkMiIsImNvbnYkMCIsIm1heF92YWx1ZSQyIiwic2lnbmVkJDIiLCJudW1fYml0cyQyIiwibnVtX2J5dGVzJDIiLCJsb2dhbmQkMCIsImxvZ2FuZDY0JDAiLCJtYXNrNjQkMCIsImVxdWFsJDIiLCJlcXVhbDY0JDAiLCJ0b19zdHJpbmckMiIsInRvX3N0cmluZzY0JDAiLCJtYXNrJDAiLCJ0cnVuYyQyIiwiZXhuJDIiLCJ0cnVuYzY0JDAiLCJleG42NCQwIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50X2V4biQyIiwidG9fYmFzZV9pbnQkMiIsIm9mX3VpbnQ4Iiwib2ZfdWludDMyX3RydW5jJDAiLCJvZl91aW50MzJfZXhuJDAiLCJvZl91aW50NjNfdHJ1bmMkMCIsIm9mX3VpbnQ2M19leG4kMCIsIm9mX3VpbnQ2NF90cnVuYyQwIiwib2ZfdWludDY0X2V4biQwIiwib2ZfaW50MTZfd3JhcCIsIm9mX2ludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMiIsInN5bWJvbCQ1MyIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImNvbXBhcmUkNyIsImhhc2hfZm9sZF90JDMiLCJmdW5jJDMiLCJoYXNoJDMiLCJ0X29mX3NleHAkMyIsInNleHBfb2ZfdCQzIiwidHlwZXJlcF9vZl90JDMiLCJ0eXBlbmFtZV9vZl90JDMiLCJ6ZXJvJDMiLCJtaW5fdmFsdWUkMyIsIm1heF92YWx1ZSQzIiwic2hpZnRfbGVmdCQxIiwic2hpZnRfcmlnaHQkMSIsInNoaWZ0JDEiLCJ0b19zdHJpbmckMyIsInNpZ25lZCQzIiwibnVtX2JpdHMkMyIsIm51bV9ieXRlcyQzIiwidHJ1bmMkMyIsImV4biQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwic2lnbmVkJDQiLCJudW1fYml0cyQ0IiwibnVtX2J5dGVzJDQiLCJsb2dhbmQkMSIsImxvZ2FuZDY0JDEiLCJtYXNrJDEiLCJtYXNrNjQkMSIsImVxdWFsJDQiLCJlcXVhbDY0JDEiLCJ0b19zdHJpbmckNCIsInRvX3N0cmluZzY0JDEiLCJ0cnVuYyQ0IiwiZXhuJDQiLCJ0cnVuYzY0JDEiLCJleG42NCQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsInRvX2Jhc2VfaW50X2V4biIsIm9mX3VpbnQ4JDAiLCJvZl91aW50MTYiLCJvZl91aW50NjNfdHJ1bmMkMSIsIm9mX3VpbnQ2M19leG4kMSIsIm9mX3VpbnQ2NF90cnVuYyQxIiwib2ZfdWludDY0X2V4biQxIiwib2ZfaW50MzJfd3JhcCIsIm9mX2ludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkNCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNCIsInN5bWJvbCQ4NSIsInN5bWJvbCQ4NiIsInN5bWJvbCQ4NyIsInN5bWJvbCQ4OCIsInN5bWJvbCQ4OSIsInN5bWJvbCQ5MCIsInN5bWJvbCQ5MSIsInN5bWJvbCQ5MiIsInN5bWJvbCQ5MyIsInN5bWJvbCQ5NCIsImNvbXBhcmUkMTEiLCJoYXNoX2ZvbGRfdCQ1IiwiZnVuYyQ1IiwiaGFzaCQ1IiwidF9vZl9zZXhwJDUiLCJzZXhwX29mX3QkNSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDUiLCJxdWlja2NoZWNrX29ic2VydmVyJDUiLCJxdWlja2NoZWNrX3Nocmlua2VyJDUiLCJ0eXBlcmVwX29mX3QkNSIsInR5cGVuYW1lX29mX3QkNSIsInplcm8kNSIsIm1pbl92YWx1ZSQ1IiwibWF4X3ZhbHVlJDUiLCJ0b19zdHJpbmckNSIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50MzJfZXhuJDAiLCJ0b19iYXNlX2ludDMyX3RydW5jJDAiLCJ0b19iYXNlX2ludDMyX2V4biQwIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQwIiwib2ZfYmFzZV9pbnQ2NF9leG4kMCIsInRvX2Jhc2VfaW50NjQkMCIsInRvX2Jhc2VfaW50X2V4biQwIiwib2ZfdWludDgkMSIsIm9mX3VpbnQxNiQwIiwib2ZfdWludDYzX3RydW5jJDIiLCJvZl91aW50NjNfZXhuJDIiLCJvZl91aW50NjRfdHJ1bmMkMiIsIm9mX3VpbnQ2NF9leG4kMiIsIm9mX2ludDMyX3dyYXAkMCIsIm9mX2ludDMyX2V4biQyIiwic2V4cF9vZl90JDYiLCJ0X29mX3NleHAkNiIsInMiLCJzeW1ib2wkMTExIiwic3ltYm9sJDExMiIsInN5bWJvbCQxMTMiLCJzeW1ib2wkMTE0Iiwic3ltYm9sJDExNSIsInN5bWJvbCQxMTYiLCJzeW1ib2wkMTE3Iiwic3ltYm9sJDExOCIsInN5bWJvbCQxMTkiLCJzeW1ib2wkMTIwIiwiaW1wbCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDciLCJxdWlja2NoZWNrX29ic2VydmVyJDciLCJxdWlja2NoZWNrX3Nocmlua2VyJDciLCJ0X29mX3NleHAkNyIsInNleHBfb2ZfdCQ3IiwidHlwZXJlcF9vZl90JDciLCJ0eXBlbmFtZV9vZl90JDciLCJzaWduZWQkNyIsIm51bV9iaXRzJDciLCJudW1fYnl0ZXMkNyIsInplcm8kNyIsIm1pbl92YWx1ZSQ3IiwibWF4X3ZhbHVlJDciLCJoYXNoX2ZvbGRfdCQ3IiwiaGFzaCQ3Iiwic3ltYm9sJDEyNyIsInN5bWJvbCQxMjgiLCJzeW1ib2wkMTI5Iiwic3ltYm9sJDEzMCIsInN5bWJvbCQxMzEiLCJzeW1ib2wkMTMyIiwiZXF1YWwkNyIsImNvbXBhcmUkMTUiLCJtaW4kNyIsIm1heCQ3Iiwib2ZfYmFzZV9pbnQzMiQxIiwidG9fYmFzZV9pbnQzMiQxIiwib2ZfaW50OCQyIiwib2ZfaW50MTYkMSIsIm9mX2ludDYzX3RydW5jJDMiLCJvZl9pbnQ2M19leG4kMyIsIm9mX2ludDY0X3RydW5jJDMiLCJvZl9pbnQ2NF9leG4kMyIsIm9mX3VpbnQzMl93cmFwJDEiLCJvZl91aW50MzJfZXhuJDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ4IiwicXVpY2tjaGVja19vYnNlcnZlciQ4IiwicXVpY2tjaGVja19zaHJpbmtlciQ4IiwidF9vZl9zZXhwJDgiLCJzZXhwX29mX3QkOCIsInR5cGVyZXBfb2ZfdCQ4IiwidHlwZW5hbWVfb2ZfdCQ4Iiwic2lnbmVkJDgiLCJudW1fYml0cyQ4IiwibnVtX2J5dGVzJDgiLCJ6ZXJvJDgiLCJtaW5fdmFsdWUkOCIsIm1heF92YWx1ZSQ4IiwiaGFzaF9mb2xkX3QkOCIsImhhc2gkOCIsInN5bWJvbCQxMzMiLCJzeW1ib2wkMTM0Iiwic3ltYm9sJDEzNSIsInN5bWJvbCQxMzYiLCJzeW1ib2wkMTM3Iiwic3ltYm9sJDEzOCIsImVxdWFsJDgiLCJjb21wYXJlJDE2IiwibWluJDgiLCJtYXgkOCIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50MzJfZXhuJDEiLCJ0b19iYXNlX2ludDMyX3RydW5jJDEiLCJ0b19iYXNlX2ludDMyX2V4biQxIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQxIiwib2ZfYmFzZV9pbnQ2NF9leG4kMSIsInRvX2Jhc2VfaW50NjQkMSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwic2lnbmVkJDkiLCJudW1fYml0cyQ5IiwibnVtX2J5dGVzJDkiLCJvZl9pbnQ4JDMiLCJvZl9pbnQxNiQyIiwib2ZfaW50MzIiLCJvZl9pbnQ2NF90cnVuYyQ0Iiwib2ZfaW50NjRfZXhuJDQiLCJvZl91aW50NjNfd3JhcCIsIm9mX3VpbnQ2M19leG4kNCIsInN5bWJvbCQxNDUiLCJzeW1ib2wkMTQ2Iiwic3ltYm9sJDE0NyIsInN5bWJvbCQxNDgiLCJzeW1ib2wkMTQ5Iiwic3ltYm9sJDE1MCIsInN5bWJvbCQxNTEiLCJzeW1ib2wkMTUyIiwic3ltYm9sJDE1MyIsInN5bWJvbCQxNTQiLCJoYXNoX2ZvbGRfdCQxMCIsImZ1bmMkOCIsImhhc2gkMTAiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEwIiwiY29tcGFyZSQxOSIsInR5cGVyZXBfb2ZfdCQxMCIsInR5cGVuYW1lX29mX3QkMTAiLCJ6ZXJvJDEwIiwibWluX3ZhbHVlJDEwIiwibWF4X3ZhbHVlJDEwIiwiZ3JlYXRlcl9lcXVhbCQyIiwidG9fc3RyaW5nJDgiLCJzaWduZWQkMTAiLCJudW1fYml0cyQxMCIsIm51bV9ieXRlcyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50NjRfZXhuJDIiLCJ0b19iYXNlX2ludDY0JDIiLCJvZl91aW50OCQzIiwib2ZfdWludDE2JDIiLCJvZl91aW50MzIiLCJvZl91aW50NjRfdHJ1bmMkNCIsIm9mX3VpbnQ2NF9leG4kNCIsIm9mX2ludDYzX3dyYXAiLCJvZl9pbnQ2M19leG4kNCIsInNleHBfb2ZfdCQxMCIsInRfb2Zfc2V4cCQxMCIsInN5bWJvbCQxNTUiLCJzeW1ib2wkMTU2Iiwic3ltYm9sJDE1NyIsInN5bWJvbCQxNTgiLCJzeW1ib2wkMTU5Iiwic3ltYm9sJDE2MCIsInN5bWJvbCQxNjEiLCJzeW1ib2wkMTYyIiwic3ltYm9sJDE2MyIsInN5bWJvbCQxNjQiLCJjb21wYXJlJDIxIiwiaGFzaF9mb2xkX3QkMTEiLCJmdW5jJDkiLCJoYXNoJDExIiwidF9vZl9zZXhwJDExIiwic2V4cF9vZl90JDExIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTEiLCJxdWlja2NoZWNrX29ic2VydmVyJDExIiwicXVpY2tjaGVja19zaHJpbmtlciQxMSIsInR5cGVyZXBfb2ZfdCQxMSIsInR5cGVuYW1lX29mX3QkMTEiLCJ6ZXJvJDExIiwibWluX3ZhbHVlJDExIiwibWF4X3ZhbHVlJDExIiwiZ3JlYXRlcl9lcXVhbCQzIiwidG9fc3RyaW5nJDkiLCJvZl9pbnQ4JDQiLCJvZl9pbnQxNiQzIiwic2lnbmVkJDExIiwibnVtX2JpdHMkMTEiLCJudW1fYnl0ZXMkMTEiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsInNpZ25lZCQxMiIsIm51bV9iaXRzJDEyIiwibnVtX2J5dGVzJDEyIiwiZXhuJDUiLCJvZl9iYXNlX2ludDY0X3RydW5jJDMiLCJvZl9iYXNlX2ludDY0X2V4biQzIiwidG9fYmFzZV9pbnQ2NF90cnVuYyIsInRvX2Jhc2VfaW50NjRfZXhuIiwib2ZfdWludDgkNCIsIm9mX3VpbnQxNiQzIiwib2ZfdWludDMyJDAiLCJvZl91aW50NjMiLCJvZl9pbnQ2NF93cmFwIiwib2ZfaW50NjRfZXhuJDUiLCJzZXhwX29mX3QkMTIiLCJ0X29mX3NleHAkMTIiLCJzeW1ib2wkMTg3Iiwic3ltYm9sJDE4OCIsInN5bWJvbCQxODkiLCJzeW1ib2wkMTkwIiwic3ltYm9sJDE5MSIsInN5bWJvbCQxOTIiLCJzeW1ib2wkMTkzIiwic3ltYm9sJDE5NCIsInN5bWJvbCQxOTUiLCJzeW1ib2wkMTk2IiwiZ2V0X2ludDgiLCJ0IiwicG9zIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwieCQwIiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfdWludDMyX2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsImdldF91aW50NjRfbGUiLCJnZXRfdWludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X2ludDgiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsIngkMSIsInNldF9pbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ2NF9sZSIsInNldF91aW50NjRfYmUiLCJnZXRfaW50OCQwIiwiZ2V0X3VpbnQ4JDAiLCJnZXRfaW50MTZfbGUkMCIsImdldF9pbnQxNl9iZSQwIiwiZ2V0X3VpbnQxNl9sZSQwIiwiZ2V0X3VpbnQxNl9iZSQwIiwiZ2V0X2ludDMyX2xlJDAiLCJnZXRfaW50MzJfYmUkMCIsImdldF91aW50MzJfbGUkMCIsImdldF91aW50MzJfYmUkMCIsImdldF9pbnQ2NF9sZSQwIiwiZ2V0X2ludDY0X2JlJDAiLCJnZXRfdWludDY0X2xlJDAiLCJnZXRfdWludDY0X2JlJDAiLCJzZXRfaW50OCQwIiwic2V0X3VpbnQ4JDAiLCJzZXRfaW50MTZfbGUkMCIsInNldF9pbnQxNl9iZSQwIiwic2V0X3VpbnQxNl9sZSQwIiwic2V0X3VpbnQxNl9iZSQwIiwic2V0X2ludDMyX2xlJDAiLCJzZXRfaW50MzJfYmUkMCIsInNldF91aW50MzJfbGUkMCIsInNldF91aW50MzJfYmUkMCIsInNldF9pbnQ2NF9sZSQwIiwic2V0X2ludDY0X2JlJDAiLCJzZXRfdWludDY0X2xlJDAiLCJzZXRfdWludDY0X2JlJDAiLCJnZXRfaW50OCQxIiwiZ2V0X3VpbnQ4JDEiLCJnZXRfaW50MTZfbGUkMSIsImdldF9pbnQxNl9iZSQxIiwiZ2V0X3VpbnQxNl9sZSQxIiwiZ2V0X3VpbnQxNl9iZSQxIiwiZ2V0X2ludDMyX2xlJDEiLCJnZXRfaW50MzJfYmUkMSIsImdldF91aW50MzJfbGUkMSIsImdldF91aW50MzJfYmUkMSIsImdldF9pbnQ2NF9sZSQxIiwiZ2V0X2ludDY0X2JlJDEiLCJnZXRfdWludDY0X2xlJDEiLCJnZXRfdWludDY0X2JlJDEiLCJnZXRfaW50OCQyIiwiZ2V0X3VpbnQ4JDIiLCJnZXRfaW50MTZfbGUkMiIsImdldF9pbnQxNl9iZSQyIiwiZ2V0X3VpbnQxNl9sZSQyIiwiZ2V0X3VpbnQxNl9iZSQyIiwiZ2V0X2ludDMyX2xlJDIiLCJnZXRfaW50MzJfYmUkMiIsImdldF91aW50MzJfbGUkMiIsImdldF91aW50MzJfYmUkMiIsImdldF9pbnQ2NF9sZSQyIiwiZ2V0X2ludDY0X2JlJDIiLCJnZXRfdWludDY0X2xlJDIiLCJnZXRfdWludDY0X2JlJDIiLCJsb2MkMCIsImxvYyIsInNwcmludGYiLCJhcmNoX3NpeHR5Zm91ciIsImFyY2hfYmlnX2VuZGlhbiIsIm5vdF9vbl8zMmJpdCIsImNyZWF0ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyIsInNpemUiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMkMCIsImxlbmd0aCIsImluaXQiLCJuIiwiZiIsInQiLCJpIiwiY2hlY2tfYXJncyIsInBvcyIsImxlbiIsImJzdHIiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwib3B0IiwiY2hyIiwic3RoIiwibGVuJDAiLCJyZXMiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsImdldF9pbnQ2NF90X2JlIiwicmVhZF9pbnQ2NF9zd2FwJDAiLCJzZXRfaW50NjRfdF9iZSIsInNldF9pbnQ2NF90X2xlIiwiaW50NjRfY29udl9lcnJvciIsInVpbnQ2NF9jb252X2Vycm9yIiwiaW50NjRfdG9faW50X2V4biIsInVpbnQ2NF90b19pbnRfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9iZV9leG4iLCJ1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biIsImdldF9pbnQ2NF9iZV9leG4iLCJnZXRfaW50NjRfbGVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfbGVfZXhuIiwiZ2V0X3VpbnQ2NF9iZV9leG4iLCJnZXRfdWludDY0X2xlX2V4biIsInNldF91aW50NjRfYmVfZXhuIiwic2V0X3VpbnQ2NF9sZV9leG4iLCJ1bnNhZmVfc2V0X3VpbnQ4IiwidW5zYWZlX3NldF9pbnQ4IiwibiQwIiwidW5zYWZlX2dldF91aW50OCIsInVuc2FmZV9nZXRfaW50OCIsInNldF91aW50OF9leG4iLCJzZXRfaW50OF9leG4iLCJnZXRfdWludDgiLCJnZXRfaW50OCIsInVpbnQzMl9vZl9pbnQzMl90IiwidW5zYWZlX3NldF91aW50MzJfbGUiLCJ1bnNhZmVfc2V0X3VpbnQzMl9iZSIsInVuc2FmZV9nZXRfdWludDMyX2xlIiwidW5zYWZlX2dldF91aW50MzJfYmUiLCJzZXRfdWludDMyX2xlX2V4biIsInNldF91aW50MzJfYmVfZXhuIiwiZ2V0X3VpbnQzMl9sZSIsImdldF91aW50MzJfYmUiLCJnZXRfdWludDgkMCIsInNldF91aW50OCIsImdldF91aW50MTZfbmUiLCJzZXRfdWludDE2X25lIiwiZ2V0X2ludDMyX25lIiwic2V0X2ludDMyX25lIiwiZ2V0X2ludDY0X25lIiwic2V0X2ludDY0X25lIiwiZ2V0X3VpbnQ4JDIiLCJzZXRfdWludDgkMSIsImdldF91aW50MTZfbmUkMCIsInNldF91aW50MTZfbmUkMCIsImdldF9pbnQzMl9uZSQwIiwic2V0X2ludDMyX25lJDAiLCJnZXRfaW50NjRfbmUkMCIsInNldF9pbnQ2NF9uZSQwIiwiZWx0MSIsImVsdDIiLCJlcXVhbCIsIm9mX2Jvb2wiLCJsZW5ndGgiLCJjcmVhdGVfYm9vbCIsImdldCIsInNldCIsIm92ZXJsYXBwaW5nX3NyY19kc3QiLCJsZW5ndGgkMCIsImdldCQwIiwic2V0JDAiLCJjcmVhdGVfYm9vbCQwIiwicGFzcyIsImZhaWxzIiwibWVzc2FnZSIsImEiLCJzZXhwX29mX2EiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJmYWlsX3MiLCJzZXhwIiwiY29tYmluZSIsInQxIiwidDIiLCJvZl9saXN0IiwibmFtZSIsInQiLCJlcnJvciIsInBhdGgiLCJuYW1lX2xpc3QiLCJuIiwibCIsImZhaWxfZm4iLCJwYXNzX2Jvb2wiLCJwYXNzX3VuaXQiLCJwcm90ZWN0IiwiZiIsInYiLCJleG4kMCIsImV4biIsInRyeV93aXRoIiwicGF0aF9zdHJpbmciLCJlcnJvcnMiLCJyZXN1bHQiLCJ4XzAwNSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwMyIsInJlczFfMDA0IiwibWF5YmVfcmFpc2UiLCJ2YWxpZF9vcl9lcnJvciIsImNoZWNrIiwieCIsImZpZWxkX2RpcmVjdCIsImZsZCIsInJlY29yZCIsImZpZWxkIiwiZmllbGRfZm9sZGVyIiwiYWNjIiwiZmllbGRfZGlyZWN0X2ZvbGRlciIsImFsbCIsImNoZWNrcyIsImNoZWNrcyQwIiwiZXJycyIsImNoZWNrcyQxIiwiZXJyIiwiZXJycyQwIiwib2ZfcmVzdWx0Iiwib2ZfZXJyb3IiLCJib29sdGVzdCIsImlmX2ZhbHNlIiwicGFpciIsImZzdCIsInNuZCIsInNuZF92YWx1ZSIsImZzdF92YWx1ZSIsImxpc3RfaW5kZXhlZCIsImxpc3QiLCJpIiwiZWwiLCJleHRyYWN0X25hbWUiLCJhbGlzdCIsImxpc3QkMCIsImtleSIsImZpcnN0X2ZhaWx1cmUiLCJvZl9lcnJvcl9vcHQiLCJib3VuZGVkIiwibG93ZXIiLCJ1cHBlciIsImNvbXBhcmUiLCJpbmNsIiwiZXhjbCIsImluY2wkMCIsImV4Y2wkMCIsInN5bWJvbCIsIm5hbWUiLCJzZXhwX29mX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9tYXQiLCJtYXRfb2Zfc2V4cCIsInNleHBfb2ZfdmVjIiwidmVjX29mX3NleHAiLCJzZXhwX29mX29wYXF1ZSIsIm9wYXF1ZV9vZl9zZXhwIiwic2V4cF9vZl9wYWlyIiwicGFpcl9vZl9zZXhwIiwib2Zfc2V4cF9lcnJvciIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZ3JvdXAiLCJiaW5fc2hhcGVfc2V4cF9vcGFxdWUiLCJhIiwiYmluX3NpemVfc2V4cF9vcGFxdWUiLCJzaXplX29mX2EiLCJiaW5fd3JpdGVfc2V4cF9vcGFxdWUiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl9zZXhwX29wYXF1ZSIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSIsIm9mX2EiLCJidWYiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3NleHBfb3BhcXVlJDAiLCJiaW5fcmVhZGVyX3NleHBfb3BhcXVlIiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl9zZXhwX29wYXF1ZSIsImJpbl9hIiwiY29tcGFyZV9zZXhwX29wYXF1ZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImhhc2hfZm9sZF9zZXhwX29wYXF1ZSIsImhhc2hfZm9sZF9hIiwiaHN2IiwiYXJnIiwidHlwZW5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlcmVwX29mX3NleHBfb3BhcXVlIiwibmFtZV9vZl9zZXhwX29wYXF1ZSIsInR5cGVuYW1lX29mX3R1cGxlNSIsInR5cGVuYW1lX29mX3R1cGxlNCIsInR5cGVuYW1lX29mX3R1cGxlMyIsInR5cGVuYW1lX29mX3R1cGxlMiIsInR5cGVuYW1lX29mX3R1cGxlMCIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfYXJyYXkiLCJ0eXBlbmFtZV9vZl9saXN0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX3N0cmluZyIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2ludDYzIiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidHlwZXJlcF9vZl90dXBsZTQiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTAiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2xhenlfdCIsInR5cGVyZXBfb2ZfYXJyYXkiLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX29wdGlvbiIsInZhbHVlX3R1cGxlMCIsInR5cGVyZXBfb2ZfdW5pdCIsInR5cGVyZXBfb2ZfYm9vbCIsInR5cGVyZXBfb2ZfYnl0ZXMiLCJ0eXBlcmVwX29mX3N0cmluZyIsInR5cGVyZXBfb2ZfZmxvYXQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2ludDYzIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9pbnQzMiIsInR5cGVyZXBfb2ZfaW50Iiwid2l0aF9yZXR1cm4iLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJvZl9zdHJpbmciLCJ4IiwidG9fc3RyaW5nIiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJjYWxsZXJfaWRlbnRpdHkiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ2MSIsInYxJDAiLCJiaW5fd3JpdGVfdCIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYXJnXzEiLCJhcmdfMSQwIiwieCQwIiwib2ZfYmlnc3RyaW5nIiwibSIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ19sZW5ndGgiLCJ0b19iaWdzdHJpbmciLCJvcHQiLCJzdGgiLCJwcmVmaXhfd2l0aF9sZW5ndGgiLCJ0X2xlbmd0aCIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludGYiLCJleGl0ZiIsImZtdCIsImNvbGxlY3RfdG9fc3RyaW5nIiwiZiIsImRvbmUiLCJvdXRwdXQiLCJlcnIkMyIsImVyciQyIiwiZXJyJDEiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDQiLCJlcnJvcl9zb3VyY2VfMDA5IiwibmFtZSQwIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjAiLCJuYW1lJDEiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzAzNSIsIm5hbWUkMiIsImVycm9yX3NvdXJjZV8wNTEiLCJlcnJvcl9zb3VyY2VfMDUzIiwibmFtZSQzIiwiZXJyb3Jfc291cmNlXzA2NCIsIm5hbWUkNCIsImVycm9yX3NvdXJjZV8wODIiLCJlcnJvcl9zb3VyY2VfMDg0IiwibmFtZSQ1IiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwieF8wMDUiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA2IiwiYl8wMDciLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwidF9vZl9zZXhwJDAiLCJ4XzAxMCIsInNleHBfb2ZfdCQwIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzAxMSIsImJfMDEyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMTYiLCJhdG9tXzAxNCIsImF0b21fMDE0JDAiLCJ0X29mX3NleHAkMiIsInNleHBfMDE5Iiwic2V4cF9vZl90JDEiLCJncm91cCQyIiwiYmluX3NoYXBlX3QkMiIsImJpbl9zaXplX3QkMiIsImFyZ3MiLCJzaXplX2FyZ3MiLCJiaW5fd3JpdGVfdCQyIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImJpbl90JDIiLCJjb21wYXJlJDIiLCJhXzAyMSIsImJfMDIyIiwicmlnaHRfMDI0IiwibGVmdF8wMjMiLCJoYXNoX2ZvbGRfdCQyIiwiaHN2JDAiLCJoYXNoJDIiLCJ0X29mX3NleHAkMyIsInNleHBfMDI4IiwiYXRvbV8wMjYiLCJzZXhwX2FyZ3NfMDI5IiwiYXRvbV8wMjYkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0X29mX3NleHAkNCIsInNleHBfMDM0Iiwic2V4cF9vZl90JDIiLCJ2XzAzNiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQzIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsImJpbl93cml0ZXJfdCQzIiwiYmluX3JlYWRfdCQ3IiwiYmluX3JlYWRfdCQ4IiwiYmluX3JlYWRlcl90JDMiLCJiaW5fdCQzIiwiY29tcGFyZSQzIiwiYV8wMzciLCJiXzAzOCIsInJpZ2h0XzA0MiIsImxlZnRfMDQxIiwiaGFzaF9mb2xkX3QkMyIsImhhc2gkMyIsInRfb2Zfc2V4cCQ1Iiwic2V4cF8wNTIiLCJhdG9tXzA0NCIsInNleHBfYXJnc18wNDciLCJhdG9tXzA0NCQwIiwiYXJnMF8wNDkiLCJyZXMwXzA1MCIsInNleHBfb2ZfdCQzIiwidl8wNTQiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfbm9ib2R5IiwiYmluX3NpemVfbm9ib2R5IiwiYmluX3dyaXRlX25vYm9keSIsImJpbl93cml0ZXJfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5JDAiLCJiaW5fcmVhZGVyX25vYm9keSIsImJpbl9ub2JvZHkiLCJjb21wYXJlX25vYm9keSIsImhhc2hfZm9sZF9ub2JvZHkiLCJmdW5jIiwiaGFzaF9ub2JvZHkiLCJub2JvZHlfb2Zfc2V4cCIsInNleHBfb2Zfbm9ib2R5IiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9tZSIsImJpbl9zaXplX21lIiwiYmluX3dyaXRlX21lIiwiYmluX3dyaXRlcl9tZSIsImJpbl9yZWFkX21lIiwiYmluX3JlYWRfbWUkMCIsImJpbl9yZWFkZXJfbWUiLCJiaW5fbWUiLCJjb21wYXJlX21lIiwiaGFzaF9mb2xkX21lIiwiZnVuYyQwIiwiaGFzaF9tZSIsIm1lX29mX3NleHAiLCJzZXhwX29mX21lIiwiZ3JvdXAkOCIsImJpbl9zaGFwZV90JDUiLCJiaW5fc2l6ZV90JDUiLCJiaW5fd3JpdGVfdCQ1IiwiYmluX3dyaXRlcl90JDUiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3QkNSIsImNvbXBhcmUkNSIsImFfMTAxIiwiYl8xMDIiLCJhXzEwMyIsImJfMTA0IiwicmlnaHRfMDcyIiwibGVmdF8wNzEiLCJoYXNoX2ZvbGRfcGVybXMiLCJwZXJtc19vZl9zZXhwIiwib2ZfYV8xMDciLCJ4XzEwOSIsInNleHBfMDc0IiwiYXRvbV8wNzUiLCJzZXhwX2FyZ3NfMDc4IiwiYXRvbV8wNzUkMCIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJzZXhwX29mX3Blcm1zIiwib2ZfYV8xMTAiLCJ4XzExMSIsInZfMDg2Iiwidl8wODciLCJncm91cCQ5IiwiYmluX3NoYXBlX3JlYWQiLCJiaW5fc2l6ZV9yZWFkIiwiYmluX3dyaXRlX3JlYWQiLCJiaW5fd3JpdGVyX3JlYWQiLCJiaW5fcmVhZF9yZWFkIiwiYmluX3JlYWRfcmVhZCQwIiwiYmluX3JlYWRlcl9yZWFkIiwiYmluX3JlYWQiLCJjb21wYXJlX3JlYWQiLCJoYXNoX2ZvbGRfcmVhZCIsImZ1bmMkMSIsImhhc2hfcmVhZCIsInJlYWRfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZCIsImNvbXBhcmVfd3JpdGUiLCJoYXNoX2ZvbGRfd3JpdGUiLCJmdW5jJDIiLCJoYXNoX3dyaXRlIiwid3JpdGVfb2Zfc2V4cCIsInNleHBfb2Zfd3JpdGUiLCJncm91cCQxMCIsImJpbl9zaGFwZV9pbW11dGFibGUiLCJiaW5fc2l6ZV9pbW11dGFibGUiLCJiaW5fd3JpdGVfaW1tdXRhYmxlIiwiYmluX3dyaXRlcl9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUkMCIsImJpbl9yZWFkZXJfaW1tdXRhYmxlIiwiYmluX2ltbXV0YWJsZSIsImNvbXBhcmVfaW1tdXRhYmxlIiwiaGFzaF9mb2xkX2ltbXV0YWJsZSIsImZ1bmMkMyIsImhhc2hfaW1tdXRhYmxlIiwiaW1tdXRhYmxlX29mX3NleHAiLCJzZXhwX29mX2ltbXV0YWJsZSIsImdyb3VwJDExIiwiYmluX3NoYXBlX3JlYWRfd3JpdGUiLCJiaW5fc2l6ZV9yZWFkX3dyaXRlIiwiYmluX3dyaXRlX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlIiwiYmluX3JlYWRfcmVhZF93cml0ZSQwIiwiYmluX3JlYWRlcl9yZWFkX3dyaXRlIiwiYmluX3JlYWRfd3JpdGUiLCJjb21wYXJlX3JlYWRfd3JpdGUiLCJoYXNoX2ZvbGRfcmVhZF93cml0ZSIsImZ1bmMkNCIsImhhc2hfcmVhZF93cml0ZSIsInJlYWRfd3JpdGVfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZF93cml0ZSIsImdyb3VwJDEyIiwiYmluX3NoYXBlX3Blcm1zIiwiYmluX3NpemVfcGVybXMiLCJiaW5fd3JpdGVfcGVybXMiLCJiaW5fd3JpdGVyX3Blcm1zIiwiYmluX3JlYWRfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyQwIiwiYmluX3JlYWRlcl9wZXJtcyIsImJpbl9wZXJtcyIsImNvbXBhcmVfcGVybXMiLCJhXzEyNCIsImJfMTI1IiwiYV8xMjYiLCJiXzEyNyIsIm1ha2UiLCJlcnJvcl9zb3VyY2VfMDExIiwidGVzdHMiLCJiIiwic2l6ZV9vZl9iIiwid3JpdGVfYiIsImJpbl93cml0ZXJfYiIsIm9mX2IiLCJiaW5fcmVhZGVyX2IiLCJiaW5fYiIsImNtcF9iIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJvZl9hXzAwNyIsIm9mX2JfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsIm9mX2FfMDI1Iiwib2ZfYl8wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsIm1hcCIsImYxIiwiZjIiLCJ4XzA0MCIsInhfMDQxIiwiZXF1YWwiLCJ4XzA0MiIsInhfMDQzIiwiYV8wMzUiLCJiXzAzNiIsInN5bWJvbCIsInkiLCJub3JtYWxpemUiLCJsZW5ndGhfZnVuIiwiaSIsInNsaWNlIiwic3ViX2Z1biIsInN0YXJ0Iiwic3RvcCIsInN0b3AkMCIsImxlbiIsInNpemVfb2ZfcyIsInYyIiwic2l6ZSIsIndyaXRlX3MiLCJwb3MkMiIsImJpbl93cml0ZXJfcyIsIm9mX3MiLCJhcmdfMiIsImJpbl9yZWFkZXJfcyIsImJpbl9zIiwidjEkMSIsInBvcyQzIiwiYXJnXzEkMSIsIm1lcmdlX2FsbCIsIkhlYXAiLCJzZXFzIiwibm90X3lldF9pbl9oZWFwIiwiaGVhcCIsImhlYXAkMCIsInNlcSQyIiwiZWx0JDAiLCJub3RfeWV0X2luX2hlYXAkMCIsInNlcSIsInNlcSQwIiwic2VxJDEiLCJlbHQiLCJ0X3NleHBfZ3JhbW1hciIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yIiwiZ2VuZXJhdG9yXzAwMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJvYnNlcnZlcl8wMDIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic2hyaW5rZXJfMDAxIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsImJpbmFyeV9zZWFyY2giLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsIm1lbSIsImlzX2VtcHR5IiwiaXRlciIsImZvbGQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNyZWF0ZSIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiaW5pdCIsIm1ha2VfbWF0cml4IiwiY29weV9tYXRyaXgiLCJhcHBlbmQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImJsaXQiLCJibGl0byIsInVuc2FmZV9ibGl0Iiwic3ViIiwic3VibyIsIm9mX2xpc3QiLCJmb2xkaW5nX21hcCIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwIiwiZm9sZF9tYXBpIiwiaXRlcmkiLCJtYXBpIiwiZm9sZGkiLCJmb2xkX3JpZ2h0Iiwic29ydCIsInN0YWJsZV9zb3J0IiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwibWVyZ2UiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJwYXJ0aXRpb25fdGYiLCJwYXJ0aXRpb25pX3RmIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJ0cmFuc3Bvc2UiLCJ0cmFuc3Bvc2VfZXhuIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJmaWx0ZXJfbWFwaSIsImZvcl9hbGxpIiwiZXhpc3RzaSIsImNvdW50aSIsIml0ZXIyX2V4biIsIm1hcDJfZXhuIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDJfZXhuIiwiZXhpc3RzMl9leG4iLCJmaWx0ZXIiLCJmaWx0ZXJpIiwic3dhcCIsInJldl9pbnBsYWNlIiwicmV2Iiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRfZXhuIiwiZmluZF9tYXBfZXhuIiwiZmluZGkiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJmaW5kX21hcGlfZXhuIiwiZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicGVybXV0ZSIsInJhbmRvbV9lbGVtZW50IiwicmFuZG9tX2VsZW1lbnRfZXhuIiwiemlwIiwiemlwX2V4biIsInVuemlwIiwic29ydGVkX2NvcHkiLCJsYXN0IiwidG9fc2VxdWVuY2UiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwibmdldCIsIm5zZXQiLCJsZW5ndGgiLCJnZXQiLCJzZXQiLCJjb21wYXJlX3QiLCJhXzAwNCIsImJfMDA1IiwieF8wMDkiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiYmluX3NoYXBlX3QkNiIsInNpemVfb2ZfZiIsIndyaXRlX2YiLCJiaW5fd3JpdGVyX2YiLCJvZl9mIiwiYmluX3JlYWRlcl9mIiwiYmluX2YiLCJjbXBfZiIsImNtcF9zIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJ2MCIsInRhZzAiLCJ0YWcxIiwidHlwZW5hbWUiLCJ0YWdzIiwicG9seW1vcnBoaWMiLCJ2YWx1ZSIsInYwJDAiLCJ4MSIsIngyIiwiYV8wMzYiLCJiXzAzNyIsImFfMDQwIiwiYl8wNDEiLCJhXzAzOCIsImJfMDM5IiwibmFtZXMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidjQiLCJ2MyIsInNpemUkMCIsInNpemUkMSIsInZfcG9zX2ZuYW1lIiwidl9wb3NfbG51bSIsInZfcG9zX2JvbCIsInZfcG9zX2NudW0iLCJuIiwibiQwIiwibiQxIiwicG9zX2NudW0iLCJyIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2NudW0kMCIsInBvc19ib2wkMCIsInBvc19sbnVtJDAiLCJwb3NfZm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsInBvc19mbmFtZV9mdW4iLCJwb3NfbG51bV9mdW4iLCJwb3NfYm9sX2Z1biIsInBvc19jbnVtX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsInBvc19mbmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwicG9zX2xudW1fZ2VuIiwiY29tcGlsZV9hY2MkMiIsInBvc19ib2xfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInBvc19jbnVtX2dlbiIsImFjYyIsIm1hcF9wb2x5IiwicmVjb3JkIiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwic2V4cF8wMDQiLCJmaWVsZF9zZXhwc18wMDUiLCJwb3NfZm5hbWVfMDA2IiwicG9zX2xudW1fMDA4IiwicG9zX2JvbF8wMTAiLCJwb3NfY251bV8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDA0JDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI1IiwiZmllbGRfc2V4cF8wMTckNCIsImZpZWxkX3NleHBfMDE3IiwieF8wMjYiLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIyIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMTkiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMCIsInBvc19jbnVtXzAxMyIsInBvc19ib2xfMDExIiwicG9zX2xudW1fMDA5IiwicG9zX2ZuYW1lXzAwNyIsInBvc19jbnVtXzAzNCIsInBvc19ib2xfMDMyIiwicG9zX2xudW1fMDMwIiwicG9zX2ZuYW1lXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImEwIiwiYTAkMCIsInYxJDIiLCJ2MSQzIiwidjIkMCIsInYxJDQiLCJ2MyQwIiwidjIkMSIsInYxJDUiLCJzaXplJDIiLCJzaXplJDMiLCJ2MiQyIiwidjEkNiIsInNpemUkNCIsInYyJDMiLCJ2MSQ3Iiwic2l6ZSQ1IiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMiIsImFyZ18xJDMiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJzZXhwX29mX3QkNiIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJiaW5fc2l6ZV90JDYiLCJiaW5fd3JpdGVfdCQ2IiwiZmFpbHdpdGhzIiwic3RyaWN0IiwiaGVyZSIsIm1lc3NhZ2UiLCJmYWlsd2l0aHAiLCJ0b19ydW4iLCJydW4iLCJzYW5pdGl6ZSIsImZsdXNoZWQiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSIsInRvX3J1biQwIiwicnVuJDAiLCJmbHVzaGVkJDAiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSQwIiwic2FuaXRpemUkMCIsIm9mX2FfMDEwIiwieF8wMTEiLCJhXzAxMiIsImJfMDEzIiwiYV8wMTYiLCJiXzAxNyIsImFfMDE0IiwiYl8wMTUiLCJvZl9hXzAxOCIsInhfMDIwIiwib2ZfYV8wMjEiLCJ4XzAyMiIsIm1hcCQxIiwiZGVmYXVsdF9zZWVkIiwiZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MiIsImdlbmVyYXRvcl8wMTIiLCJnZW5lcmF0b3JfMDEzIiwic2l6ZV8wMTYiLCJyYW5kb21fMDE3Iiwic2l6ZV8wMTQiLCJyYW5kb21fMDE1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MiIsIm9ic2VydmVyXzAwNSIsIm9ic2VydmVyXzAwNiIsInhfMDA3Iiwic2l6ZV8wMDgiLCJoYXNoXzAwOSIsImhhc2hfMDA5JDAiLCJoYXNoXzAwOSQxIiwiaGFzaF8wMDkkMiIsImhhc2hfMDA5JDMiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyIiwic2hyaW5rZXJfMDAyIiwieF8wMDQiLCJ4XzAwMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzIiwiZ2VuZXJhdG9yXzAzMyIsImdlbmVyYXRvcl8wMzQiLCJnZW5lcmF0b3JfMDM1Iiwic2l6ZV8wNDAiLCJyYW5kb21fMDQxIiwic2l6ZV8wMzgiLCJyYW5kb21fMDM5Iiwic2l6ZV8wMzYiLCJyYW5kb21fMDM3IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MyIsIm9ic2VydmVyXzAyNCIsIm9ic2VydmVyXzAyNSIsIm9ic2VydmVyXzAyNiIsInhfMDI3Iiwic2l6ZV8wMjgiLCJoYXNoXzAyOSIsInhfMDMwIiwiaGFzaF8wMjkkMCIsImhhc2hfMDI5JDEiLCJ4XzAzMSIsImhhc2hfMDI5JDIiLCJoYXNoXzAyOSQzIiwieF8wMzIiLCJoYXNoXzAyOSQ0IiwiaGFzaF8wMjkkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDMiLCJzaHJpbmtlcl8wMTgiLCJzaHJpbmtlcl8wMTkiLCJzaHJpbmtlcl8wMjAiLCJ4XzAyMSIsInhfMDIzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDQiLCJnZW5lcmF0b3JfMDYxIiwiZ2VuZXJhdG9yXzA2MiIsImdlbmVyYXRvcl8wNjMiLCJnZW5lcmF0b3JfMDY0Iiwic2l6ZV8wNzEiLCJyYW5kb21fMDcyIiwic2l6ZV8wNjkiLCJyYW5kb21fMDcwIiwic2l6ZV8wNjciLCJyYW5kb21fMDY4Iiwic2l6ZV8wNjUiLCJyYW5kb21fMDY2IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NCIsIm9ic2VydmVyXzA1MCIsIm9ic2VydmVyXzA1MSIsIm9ic2VydmVyXzA1MiIsIm9ic2VydmVyXzA1MyIsInhfMDU0Iiwic2l6ZV8wNTUiLCJoYXNoXzA1NiIsInhfMDU3IiwiaGFzaF8wNTYkMCIsImhhc2hfMDU2JDEiLCJ4XzA1OCIsImhhc2hfMDU2JDIiLCJoYXNoXzA1NiQzIiwieF8wNTkiLCJoYXNoXzA1NiQ0IiwiaGFzaF8wNTYkNSIsInhfMDYwIiwiaGFzaF8wNTYkNiIsImhhc2hfMDU2JDciLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0Iiwic2hyaW5rZXJfMDQyIiwic2hyaW5rZXJfMDQzIiwic2hyaW5rZXJfMDQ0Iiwic2hyaW5rZXJfMDQ1IiwieF8wNDYiLCJ4XzA0NyIsInhfMDQ4IiwieF8wNDkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NSIsImdlbmVyYXRvcl8wOTYiLCJnZW5lcmF0b3JfMDk3IiwiZ2VuZXJhdG9yXzA5OCIsImdlbmVyYXRvcl8wOTkiLCJnZW5lcmF0b3JfMTAwIiwic2l6ZV8xMDkiLCJyYW5kb21fMTEwIiwic2l6ZV8xMDciLCJyYW5kb21fMTA4Iiwic2l6ZV8xMDUiLCJyYW5kb21fMTA2Iiwic2l6ZV8xMDMiLCJyYW5kb21fMTA0Iiwic2l6ZV8xMDEiLCJyYW5kb21fMTAyIiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NSIsIm9ic2VydmVyXzA4MyIsIm9ic2VydmVyXzA4NCIsIm9ic2VydmVyXzA4NSIsIm9ic2VydmVyXzA4NiIsIm9ic2VydmVyXzA4NyIsInhfMDg4Iiwic2l6ZV8wODkiLCJoYXNoXzA5MCIsInhfMDkxIiwiaGFzaF8wOTAkMCIsImhhc2hfMDkwJDEiLCJ4XzA5MiIsImhhc2hfMDkwJDIiLCJoYXNoXzA5MCQzIiwiaGFzaF8wOTAkNCIsImhhc2hfMDkwJDUiLCJoYXNoXzA5MCQ2IiwiaGFzaF8wOTAkNyIsInhfMDk1IiwiaGFzaF8wOTAkOCIsImhhc2hfMDkwJDkiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1Iiwic2hyaW5rZXJfMDczIiwic2hyaW5rZXJfMDc0Iiwic2hyaW5rZXJfMDc1Iiwic2hyaW5rZXJfMDc2Iiwic2hyaW5rZXJfMDc3IiwieF8wNzgiLCJ4XzA3OSIsInhfMDgwIiwieF8wODEiLCJ4XzA4MiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2IiwiZ2VuZXJhdG9yXzEzOCIsImdlbmVyYXRvcl8xMzkiLCJnZW5lcmF0b3JfMTQwIiwiZ2VuZXJhdG9yXzE0MSIsImdlbmVyYXRvcl8xNDIiLCJnZW5lcmF0b3JfMTQzIiwic2l6ZV8xNTQiLCJyYW5kb21fMTU1Iiwic2l6ZV8xNTIiLCJyYW5kb21fMTUzIiwic2l6ZV8xNTAiLCJyYW5kb21fMTUxIiwic2l6ZV8xNDgiLCJyYW5kb21fMTQ5Iiwic2l6ZV8xNDYiLCJyYW5kb21fMTQ3Iiwic2l6ZV8xNDQiLCJyYW5kb21fMTQ1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NiIsIm9ic2VydmVyXzEyMyIsIm9ic2VydmVyXzEyNCIsIm9ic2VydmVyXzEyNSIsIm9ic2VydmVyXzEyNiIsIm9ic2VydmVyXzEyNyIsIm9ic2VydmVyXzEyOCIsInhfMTI5Iiwic2l6ZV8xMzAiLCJoYXNoXzEzMSIsInhfMTMyIiwiaGFzaF8xMzEkMCIsImhhc2hfMTMxJDEiLCJ4XzEzMyIsImhhc2hfMTMxJDIiLCJoYXNoXzEzMSQzIiwieF8xMzQiLCJoYXNoXzEzMSQ0IiwiaGFzaF8xMzEkNSIsInhfMTM1IiwiaGFzaF8xMzEkNiIsImhhc2hfMTMxJDciLCJ4XzEzNiIsImhhc2hfMTMxJDgiLCJoYXNoXzEzMSQ5IiwieF8xMzciLCJoYXNoXzEzMSQxMCIsImhhc2hfMTMxJDExIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NiIsInNocmlua2VyXzExMSIsInNocmlua2VyXzExMiIsInNocmlua2VyXzExMyIsInNocmlua2VyXzExNCIsInNocmlua2VyXzExNSIsInNocmlua2VyXzExNiIsInhfMTE3IiwieF8xMTgiLCJ4XzExOSIsInhfMTIwIiwieF8xMjEiLCJ4XzEyMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMiIsImdlbmVyYXRvcl8xNjYiLCJnZW5lcmF0b3JfMTY3Iiwic2l6ZV8xNjgiLCJyYW5kb21fMTY5IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTIiLCJvYnNlcnZlcl8xNjAiLCJvYnNlcnZlcl8xNjEiLCJzaXplXzE2NCIsImhhc2hfMTY1IiwieF8xNjMiLCJ4XzE2MiIsImhhc2hfMTY1JDAiLCJoYXNoXzE2NSQxIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTIiLCJzaHJpbmtlcl8xNTYiLCJzaHJpbmtlcl8xNTciLCJ4XzE1OSIsInhfMTU4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzIiwiZ2VuZXJhdG9yXzE4NCIsImdlbmVyYXRvcl8xODUiLCJnZW5lcmF0b3JfMTg2Iiwic2l6ZV8xODciLCJyYW5kb21fMTg4IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTMiLCJvYnNlcnZlcl8xNzYiLCJvYnNlcnZlcl8xNzciLCJvYnNlcnZlcl8xNzgiLCJzaXplXzE4MiIsImhhc2hfMTgzIiwieF8xODEiLCJ4XzE4MCIsInhfMTc5IiwiaGFzaF8xODMkMCIsImhhc2hfMTgzJDEiLCJoYXNoXzE4MyQyIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTMiLCJzaHJpbmtlcl8xNzAiLCJzaHJpbmtlcl8xNzEiLCJzaHJpbmtlcl8xNzIiLCJ4XzE3NSIsInhfMTc0IiwieF8xNzMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTQiLCJnZW5lcmF0b3JfMjA3IiwiZ2VuZXJhdG9yXzIwOCIsImdlbmVyYXRvcl8yMDkiLCJnZW5lcmF0b3JfMjEwIiwic2l6ZV8yMTEiLCJyYW5kb21fMjEyIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTQiLCJvYnNlcnZlcl8xOTciLCJvYnNlcnZlcl8xOTgiLCJvYnNlcnZlcl8xOTkiLCJvYnNlcnZlcl8yMDAiLCJzaXplXzIwNSIsImhhc2hfMjA2IiwieF8yMDQiLCJ4XzIwMyIsInhfMjAyIiwieF8yMDEiLCJoYXNoXzIwNiQwIiwiaGFzaF8yMDYkMSIsImhhc2hfMjA2JDIiLCJoYXNoXzIwNiQzIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTQiLCJzaHJpbmtlcl8xODkiLCJzaHJpbmtlcl8xOTAiLCJzaHJpbmtlcl8xOTEiLCJzaHJpbmtlcl8xOTIiLCJ4XzE5NiIsInhfMTk1IiwieF8xOTQiLCJ4XzE5MyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNSIsImdlbmVyYXRvcl8yMzUiLCJnZW5lcmF0b3JfMjM2IiwiZ2VuZXJhdG9yXzIzNyIsImdlbmVyYXRvcl8yMzgiLCJnZW5lcmF0b3JfMjM5Iiwic2l6ZV8yNDAiLCJyYW5kb21fMjQxIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTUiLCJvYnNlcnZlcl8yMjMiLCJvYnNlcnZlcl8yMjQiLCJvYnNlcnZlcl8yMjUiLCJvYnNlcnZlcl8yMjYiLCJvYnNlcnZlcl8yMjciLCJzaXplXzIzMyIsImhhc2hfMjM0IiwieF8yMzIiLCJ4XzIzMSIsInhfMjMwIiwieF8yMjkiLCJ4XzIyOCIsImhhc2hfMjM0JDAiLCJoYXNoXzIzNCQxIiwiaGFzaF8yMzQkMiIsImhhc2hfMjM0JDMiLCJoYXNoXzIzNCQ0IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTUiLCJzaHJpbmtlcl8yMTMiLCJzaHJpbmtlcl8yMTQiLCJzaHJpbmtlcl8yMTUiLCJzaHJpbmtlcl8yMTYiLCJzaHJpbmtlcl8yMTciLCJ4XzIyMiIsInhfMjIxIiwieF8yMjAiLCJ4XzIxOSIsInhfMjE4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2IiwiZ2VuZXJhdG9yXzI2OCIsImdlbmVyYXRvcl8yNjkiLCJnZW5lcmF0b3JfMjcwIiwiZ2VuZXJhdG9yXzI3MSIsImdlbmVyYXRvcl8yNzIiLCJnZW5lcmF0b3JfMjczIiwic2l6ZV8yNzQiLCJyYW5kb21fMjc1IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTYiLCJvYnNlcnZlcl8yNTQiLCJvYnNlcnZlcl8yNTUiLCJvYnNlcnZlcl8yNTYiLCJvYnNlcnZlcl8yNTciLCJvYnNlcnZlcl8yNTgiLCJvYnNlcnZlcl8yNTkiLCJzaXplXzI2NiIsImhhc2hfMjY3IiwieF8yNjUiLCJ4XzI2NCIsInhfMjYzIiwieF8yNjIiLCJ4XzI2MSIsInhfMjYwIiwiaGFzaF8yNjckMCIsImhhc2hfMjY3JDEiLCJoYXNoXzI2NyQyIiwiaGFzaF8yNjckMyIsImhhc2hfMjY3JDQiLCJoYXNoXzI2NyQ1IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTYiLCJzaHJpbmtlcl8yNDIiLCJzaHJpbmtlcl8yNDMiLCJzaHJpbmtlcl8yNDQiLCJzaHJpbmtlcl8yNDUiLCJzaHJpbmtlcl8yNDYiLCJzaHJpbmtlcl8yNDciLCJ4XzI1MyIsInhfMjUyIiwieF8yNTEiLCJ4XzI1MCIsInhfMjQ5IiwieF8yNDgiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjIiLCJvYnNlcnZlcl8yODIiLCJvYnNlcnZlcl8yODMiLCJnZW5lcmF0b3JfMjg0IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4zIiwib2JzZXJ2ZXJfMjkzIiwib2JzZXJ2ZXJfMjk0Iiwib2JzZXJ2ZXJfMjk1IiwiZ2VuZXJhdG9yXzI5NiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNCIsIm9ic2VydmVyXzMwNyIsIm9ic2VydmVyXzMwOCIsIm9ic2VydmVyXzMwOSIsIm9ic2VydmVyXzMxMCIsImdlbmVyYXRvcl8zMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjUiLCJvYnNlcnZlcl8zMjQiLCJvYnNlcnZlcl8zMjUiLCJvYnNlcnZlcl8zMjYiLCJvYnNlcnZlcl8zMjciLCJvYnNlcnZlcl8zMjgiLCJnZW5lcmF0b3JfMzI5IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm42Iiwib2JzZXJ2ZXJfMzQ0Iiwib2JzZXJ2ZXJfMzQ1Iiwib2JzZXJ2ZXJfMzQ2Iiwib2JzZXJ2ZXJfMzQ3Iiwib2JzZXJ2ZXJfMzQ4Iiwib2JzZXJ2ZXJfMzQ5IiwiZ2VuZXJhdG9yXzM1MCIsIm9mX2hhc2giLCJNIiwib2ZfcHJlZGljYXRlIiwic2luZ2xldG9uIiwiZG91YmxldG9uIiwiZW51bSQwIiwibGlzdCIsIm9mX2Z1biIsImNvbXBhcmlzb24iLCJlcSIsImx0IiwiZ3QiLCJjIiwicmV0dXJuJDAiLCJzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCIsInNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCIsInNpbmdsZXRvbiQwIiwiZG91YmxldG9uJDAiLCJyYW5kb20iLCJvZl9mdW4kMCIsIm9mX3NlcXVlbmNlIiwicCIsImsiLCJib3VuZGVkX2dlb21ldHJpYyIsIm1heGltdW0iLCJnZW9tZXRyaWMiLCJsaXN0X3dpdGhfbGVuZ3RoIiwiY29tcGFyZV9mbiIsImRvbSIsImdldF9pbmRleCIsImJfMzUyIiwiYV8zNTEiLCJlcXVhbF9mbiIsImNtcCIsImVtcHR5Iiwibm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSIsInJhbmRvbV9zdGF0ZV9vZl9zZWVkIiwic2VlZCIsInN0ciIsIm1ha2Vfc2VlZCIsInN0cmluZyIsIm1ha2Vfc2hyaW5rX2NvdW50IiwibWFrZV9jb25maWciLCJzaXplcyIsInRyaWFscyIsInNocmlua19hdHRlbXB0cyIsIm1ha2VfdGVzdF9tIiwiZ2VuIiwic2hyaW5rZXIiLCJzZXhwX29mIiwicmFuZG9tX3ZhbHVlIiwic3RoJDAiLCJyYW5kb21fc2VxdWVuY2UiLCJjb25maWciLCJzZXF1ZW5jZSIsInRlc3QiLCJleGFtcGxlcyIsInRlc3RfbSIsInRlc3Rfb3JfZXJyb3IiLCJ0ZXN0X2Rpc3RpbmN0X3ZhbHVlcyIsImRpc3RpbmN0X3ZhbHVlcyIsInNldCQwIiwiYWN0dWFsX2NvdW50Iiwic2V4cF9vZl9lbHQiLCJ4XzM1MyIsInZhbHVlcyIsIm1hdGNoIiwicmVzIiwiaCIsInRlc3RfY2FuX2dlbmVyYXRlIiwic2V4cF9vZl92YWx1ZSIsInhfMzU0IiwiZGVmYXVsdF90cmlhbF9jb3VudCIsImRlZmF1bHRfc2l6ZXMiLCJjb21wYXJlX2EiLCJjb21wYXJlX2IiLCJ0XzAwNiIsInRfMDA1IiwidF8wMDgiLCJ0XzAwNyIsImdlbl9ub25fZW1wdHkiLCJnZW5fd2l0aF9sZW5ndGgiLCJnZW5fZmlsdGVyZWQiLCJnZW5fcGVybXV0YXRpb25zIiwiZ2VuZXJhdGVfYSIsIm9ic2VydmVfYSIsInNocmlua19hIiwibW9kdWxlX25hbWUkMCIsIm1vZHVsZV9uYW1lIiwiaGFzaGFibGVfcyIsImZpbmRfbXVsdGkiLCJyZW1vdmVfbXVsdGkiLCJhZGRfbXVsdGkiLCJkZWNyIiwiaW5jciIsInRvX2FsaXN0Iiwic2ltaWxhciIsImZpbHRlcl9tYXBpX2lucGxhY2UiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJmaWx0ZXJpX2lucGxhY2UiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJkYXRhIiwia2V5cyIsIm1lcmdlX2ludG8iLCJmaW5kX2FuZF9yZW1vdmUiLCJmaW5kaV9hbmRfY2FsbDIiLCJmaW5kaV9hbmRfY2FsbDEiLCJmaW5kaV9hbmRfY2FsbCIsImZpbmRfYW5kX2NhbGwyIiwiZmluZF9hbmRfY2FsbDEiLCJmaW5kX2FuZF9jYWxsIiwiZmluZGlfb3JfYWRkIiwiZmluZF9vcl9hZGQiLCJwYXJ0aXRpb25fbWFwaSIsInBhcnRpdGlvbl9tYXAiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9leG4iLCJjaG9vc2UiLCJyZW1vdmUiLCJpdGVyX2tleXMiLCJjbGVhciIsInNleHBfb2Zfa2V5IiwiY3JlYXRlX3dpdGhfa2V5X2V4biIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV9tYXBwZWQiLCJvZl9hbGlzdF9tdWx0aSIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X29yX2Vycm9yIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIiwib2ZfYWxpc3QiLCJoYXNoX3BhcmFtIiwidmFsaWRhdGUiLCJncm93dGhfYWxsb3dlZCIsImhhc2hhYmxlIiwib2ZfYWxpc3QkMCIsImwiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMkMCIsIm9mX2FsaXN0X29yX2Vycm9yJDAiLCJvZl9hbGlzdF9leG4kMCIsIm9mX2FsaXN0X211bHRpJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwiY29tYmluZSIsImJpbl9zaGFwZV9lbCIsImJpbl9zaXplX2VsIiwiYmluX3dyaXRlX2VsIiwiYmluX3JlYWRfZWwiLCJpdGVyJDEiLCJrZXkiLCJuZXh0IiwiaW52YXJpYW50X2tleSIsInNleHBfb2ZfdiIsInZfb2Zfc2V4cCIsImVxdWFsX21fdCIsIm1fdF9zZXhwX2dyYW1tYXIiLCJtX3Rfb2Zfc2V4cCIsInNleHBfb2ZfbV90Iiwib2ZfYWxpc3Rfb3B0aW9uIiwiYWxpc3QiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9tX3QiLCJLZXkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhIiwic2l6ZV8wMDQiLCJyYW5kb21fMDA1IiwicXVpY2tjaGVja19vYnNlcnZlcl9tX3QiLCJxdWlja2NoZWNrX29ic2VydmVyX2RhdGEiLCJ4XzAwNiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfbV90IiwicXVpY2tjaGVja19zaHJpbmtlcl9kYXRhIiwiaGFzaGFibGUkMCIsIm9mX2xpc3QkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJzaXplX29mX2siLCJzaXplX29mX3YiLCJhcmdzJDAiLCJzaXplX2FyZ3MkMCIsImFyZ3MkMSIsInNpemVfYXJncyQxIiwid3JpdGVfayIsIndyaXRlX3YiLCJiaW5fd3JpdGVyX2siLCJiaW5fd3JpdGVyX3YiLCJvZl9rIiwib2ZfdiIsImJpbl9yZWFkZXJfayIsImJpbl9yZWFkZXJfdiIsImJpbl9rIiwiYmluX3YiLCJjbXBfayIsImNtcF92IiwidF8wMDQiLCJ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3IiwicmlnaHRfMDEyIiwibGVmdF8wMTEiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxMCIsImxlZnRfMDA5Iiwib2Zfa18wMTciLCJvZl92XzAxOCIsInNleHBfMDQ1IiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwiYXRvbV8wMjEiLCJzZXhwX2FyZ3NfMDI0IiwiYXRvbV8wMjEkMCIsImFyZzBfMDMyIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwicmVzMF8wMzMiLCJhcmcwXzAzNSIsInJlczBfMDM2IiwiYXJnMF8wMzgiLCJyZXMxXzA0NCIsIm9mX2tfMDQ2Iiwib2Zfdl8wNDciLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJ2XzA0OCIsInJlczFfMDU4Iiwidl8wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMF8wNTMiLCJyZXMxXzA1NCIsInZfMDQ5IiwiZGlmZiIsImskMCIsImRpZmYkMCIsInYkMCIsIm1hcF9kYXRhIiwibGVmdCIsInJpZ2h0IiwiZ2VuX3RyZWUiLCJjb21wYXJhdG9yIiwia19nZW4iLCJ2X2dlbiIsIm9ic190cmVlIiwia19vYnMiLCJ2X29icyIsInNocl90cmVlIiwia19zaHIiLCJ2X3NociIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJoYXNoX2ZvbGRfZGlyZWN0Iiwib2ZfaGFzaHRibF9leG4iLCJoYXNodGJsIiwidHJlZV9vZl9oYXNodGJsX2V4biIsImtleV9zZXQiLCJrZXlfc2V0X29mX3RyZWUiLCJvZl9rZXlfc2V0IiwidHJlZV9vZl9rZXlfc2V0IiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsInRvX3RyZWUkMCIsInJhbmsiLCJudGhfZXhuIiwibnRoIiwiY2xvc2VzdF9rZXkiLCJyYW5nZV90b19hbGlzdCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwic3VicmFuZ2UiLCJzcGxpdCIsIm1heF9lbHRfZXhuIiwibWluX2VsdF9leG4iLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwic3ltbWV0cmljX2RpZmYiLCJtZXJnZV9za2V3ZWQiLCJrZXlzJDAiLCJjb21wYXJlX2RpcmVjdCIsImNvbWJpbmVfZXJyb3JzIiwiZm9sZDIiLCJpdGVyMiIsIml0ZXJpX3VudGlsIiwiaW52YXJpYW50cyIsInZhbGlkYXRlaSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMCIsImtleV9zZXQkMCIsImtleV9zZXQkMSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVtcHR5JDAiLCJvZl9hbGlzdF9mb2xkJDAiLCJvZl9hbGlzdF9yZWR1Y2UkMCIsIm9mX2l0ZXJpJDAiLCJvZl9pdGVyaV9leG4kMCIsIm9mX3NvcnRlZF9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJmb3JfYWxsaSQwIiwiZXhpc3RzaSQwIiwiY291bnQkMCIsImNvdW50aSQwIiwic3BsaXQkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwidG9fdHJlZSIsImRhdGFfZXF1YWwiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJtaW4iLCJtYXgiLCJvcmRlciIsImtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byIsImtleXNfbGVzc19vcl9lcXVhbF90byIsImhvdyIsInNlZ21lbnRfb2YiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImluaXRfZm9yX2Jpbl9wcm90IiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2Zfc29ydGVkX2FycmF5JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX2FsaXN0JDEiLCJvZl9hbGlzdF9vcl9lcnJvciQxIiwib2ZfYWxpc3RfZXhuJDEiLCJvZl9hbGlzdF9tdWx0aSQxIiwib2ZfYWxpc3RfZm9sZCQxIiwib2ZfYWxpc3RfcmVkdWNlJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9rZXlfc2V0JDEiLCJ0b190cmVlJDIiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDEiLCJzZXQkMSIsImFkZCQxIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJmaW5kX2V4biQxIiwiZmluZCQxIiwicmVtb3ZlJDEiLCJtZW0kMSIsIml0ZXJfa2V5cyQxIiwiaXRlciQyIiwiaXRlcmkkMSIsIml0ZXJpX3VudGlsJDEiLCJpdGVyMiQxIiwibWFwJDIiLCJtYXBpJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlciQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcCQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJwYXJ0aXRpb25fdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJjb21wYXJlX2RpcmVjdCQxIiwia2V5cyQyIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsInZhbGlkYXRlJDEiLCJ2YWxpZGF0ZWkkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImZvcl9hbGwkMSIsImZvcl9hbGxpJDEiLCJleGlzdHMkMSIsImV4aXN0c2kkMSIsImNvdW50JDEiLCJjb3VudGkkMSIsInNwbGl0JDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInRfc2V4cF9ncmFtbWFyJDAiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxMCIsImVycm9yX3NvdXJjZV8wNTQiLCJzZXhwXzAxMiIsInRhZ18wMTMiLCJzZXhwX2FyZ3NfMDE0Iiwic2V4cF9hcmdzXzAxOSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJvZl9hXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjciLCJ4JDEiLCJnZW5lcmF0b3JfMDQ0Iiwic2l6ZV8wNDkiLCJyYW5kb21fMDUwIiwic2l6ZV8wNDciLCJyYW5kb21fMDQ4Iiwic2l6ZV8wNDUiLCJyYW5kb21fMDQ2Iiwib2JzZXJ2ZXJfMDM4IiwieF8wMzkiLCJoYXNoXzA0MSIsImhhc2hfMDQxJDAiLCJoYXNoXzA0MSQxIiwiaGFzaF8wNDEkMiIsImhhc2hfMDQxJDMiLCJoYXNoXzA0MSQ0Iiwic2hyaW5rZXJfMDM1IiwieF8wMzYiLCJ4XzAzNyIsIm9mX2FfMDUxIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsIm9mX2FfMDY3IiwiYXJnMF8wNjgiLCJyZXMwXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImVsdF9nZW4iLCJlbHRfb2JzIiwiZWx0X3NociIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInRvX21hcCIsIm9mX21hcF9rZXlzIiwib2ZfaGFzaF9zZXQiLCJoc2V0Iiwib2ZfaGFzaHRibF9rZXlzIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInJlbW92ZV9pbmRleCQwIiwiZ3JvdXBfYnkkMCIsImNob29zZV9leG4kMCIsImNob29zZSQwIiwiZWxlbWVudHMkMCIsImFyZV9kaXNqb2ludCQwIiwiaXNfc3Vic2V0JDAiLCJpbnRlciQwIiwidW5pb24kMCIsInRvX2FycmF5JDAiLCJmaW5kX21hcCQwIiwic3VtJDAiLCJmb2xkX3Jlc3VsdCQwIiwidG9fbWFwJDAiLCJ1bmlvbiQxIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMSIsImRpZmYkMSIsInN1bSQxIiwiZmluZF9tYXAkMSIsInJlbW92ZV9pbmRleCQxIiwiaXNfc3Vic2V0JDEiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2FycmF5JDAiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDEiLCJlbGVtZW50cyQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJncm91cF9ieSQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQxIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwib2ZfYXJyYXkiLCJzdGFibGVfZGVkdXBfbGlzdCIsInhzIiwib2YiLCJlcXVpdiIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwidCQwIiwiZWxlbWVudHMiLCJ1bmlvbiIsImludGVyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiZ3JvdXBfYnkiLCJyZW1vdmVfaW5kZXgiLCJtZXJnZV90b19zZXF1ZW5jZSIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwiaW52YXJpYW50cyQyIiwibGVuZ3RoJDIiLCJpc19lbXB0eSQyIiwiZWxlbWVudHMkMiIsIm1pbl9lbHQkMiIsIm1pbl9lbHRfZXhuJDIiLCJtYXhfZWx0JDIiLCJtYXhfZWx0X2V4biQyIiwiY2hvb3NlJDIiLCJjaG9vc2VfZXhuJDIiLCJ0b19saXN0JDIiLCJ0b19hcnJheSQyIiwiaXRlciQzIiwiaXRlcjIkMiIsImV4aXN0cyQyIiwiZm9yX2FsbCQyIiwiY291bnQkMiIsInN1bSQyIiwiZmluZCQyIiwiZmluZF9leG4kMiIsImZpbmRfbWFwJDIiLCJmb2xkJDIiLCJmb2xkX3VudGlsJDIiLCJmb2xkX3JpZ2h0JDIiLCJmb2xkX3Jlc3VsdCQyIiwibWFwJDMiLCJmaWx0ZXIkMiIsImZpbHRlcl9tYXAkMyIsInBhcnRpdGlvbl90ZiQyIiwibWVtJDIiLCJhZGQkMiIsInJlbW92ZSQyIiwidW5pb24kMiIsImludGVyJDIiLCJkaWZmJDIiLCJzeW1tZXRyaWNfZGlmZiQyIiwiY29tcGFyZV9kaXJlY3QkMiIsImVxdWFsJDIiLCJpc19zdWJzZXQkMiIsImFyZV9kaXNqb2ludCQyIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2hhc2hfc2V0JDMiLCJvZl9oYXNodGJsX2tleXMkMyIsIm9mX2FycmF5JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwidW5pb25fbGlzdCQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsImdyb3VwX2J5JDIiLCJzcGxpdCQyIiwibnRoJDIiLCJyZW1vdmVfaW5kZXgkMiIsIm9mX3RyZWUkMyIsInRvX3NlcXVlbmNlJDIiLCJiaW5hcnlfc2VhcmNoJDIiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQyIiwibWVyZ2VfdG9fc2VxdWVuY2UkMiIsIm9mX21hcF9rZXlzJDMiLCJ0b19tYXAkMiIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwic3RhYmxlX2RlZHVwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhXzAxMCIsImJfMDExIiwibm9uZSIsInNvbWUiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInIxIiwidDEkMCIsInIyIiwidDIkMCIsIm4xIiwibjIiLCJpc19jb21wcmVzc2VkIiwicGh5c19lcXVhbCIsInVuaW9uX2ZpbmRfZ2V0X2NoZWNrX25vX3BlbmRpbiIsImNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyIsImluY3JfbGVuZ3RoIiwiaW5jcl9wZW5kaW5nX2l0ZXJzIiwiZGVjcl9wZW5kaW5nX2l0ZXJzIiwid2l0aF9pdGVyYXRpb25fMiIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiaXNfZmlyc3QiLCJpc19sYXN0IiwibWVtX2VsdCIsInByZXYkMCIsImluc2VydF9hZnRlciQwIiwiaW5zZXJ0X2JlZm9yZSQwIiwibmV3X2VsdCIsImluc2VydF9lbXB0eSIsImluc2VydF9sYXN0IiwiaW5zZXJ0X2ZpcnN0IiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZmlyc3QiLCJzZWNvbmQiLCJuZXdfdCIsInZhbHVlJDAiLCJtb3ZlX2JlZm9yZSIsImFuY2hvciIsImFmdGVyX2VsdCIsIm1vdmVfdG9fZnJvbnQiLCJtb3ZlX2FmdGVyIiwibW92ZV90b19iYWNrIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJ0XzAxOCIsInRfMDE3IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdmFsdWUiLCJ2X3RleHQiLCJvZl90ZXh0IiwidmFsdWVfb2Zfc2V4cCIsInRleHQiLCJmaWxlbmFtZSIsImFubm90YXRlZCIsInRfc2V4cF9ncmFtbWFyJDEiLCJvZl92YWx1ZSIsImJpbl9zaGFwZV9ub19yYWlzZSIsImJpbl9zaXplX25vX3JhaXNlIiwiYmluX3dyaXRlX25vX3JhaXNlIiwiYmluX3dyaXRlcl9ub19yYWlzZSIsImJpbl9yZWFkX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UkMCIsImJpbl9yZWFkZXJfbm9fcmFpc2UiLCJiaW5fbm9fcmFpc2UiLCJub19yYWlzZV9vZl9zZXhwIiwib2ZfYV8wMTkiLCJzZXhwX29mX25vX3JhaXNlIiwib2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjIiwib2Zfc2V4cCIsInNleHBfb2ZfZGF0YSIsImFyZzFfMDAyIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImt2IiwicmVhZCIsImVuc3VyZV9jYW5fbW9kaWZ5IiwibG9va3VwIiwibG9va3VwX2V4biIsImVucXVldWUiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlX2JhY2siLCJlbnF1ZXVlX2Zyb250IiwiZW5xdWV1ZV9leG4iLCJlbnF1ZXVlX2JhY2tfZXhuIiwiZW5xdWV1ZV9mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFjayIsImxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQiLCJkZXF1ZXVlX3dpdGhfa2V5IiwibWF5YmVfa3YiLCJkZXF1ZXVlX3dpdGhfa2V5X2V4biIsImRlcXVldWVfYmFja193aXRoX2tleSIsImRlcXVldWVfYmFja193aXRoX2tleV9leG4iLCJkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9iYWNrIiwiZGVxdWV1ZV9mcm9udCIsImxhc3Rfd2l0aF9rZXkiLCJmaXJzdF93aXRoX2tleSIsImRlcXVldWVfZXhuIiwiZGVxdWV1ZV9iYWNrX2V4biIsImRlcXVldWVfZnJvbnRfZXhuIiwiYWMiLCJkZXF1ZXVlX2FsbCIsInJlbW92ZV9leG4iLCJsb29rdXBfYW5kX3JlbW92ZSIsInJlcGxhY2UiLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwiZXNjYXBlZCIsImNvbnRhaW5zIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsImluZGV4IiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tIiwicmluZGV4X2Zyb21fZXhuIiwic3Vic3RyX2luZGV4Iiwic3Vic3RyX2luZGV4X2V4biIsInN1YnN0cl9pbmRleF9hbGwiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCIsInN1YnN0cl9yZXBsYWNlX2FsbCIsImlzX3N1YnN0cmluZyIsImlzX3N1YnN0cmluZ19hdCIsInRvX2xpc3RfcmV2IiwiaXNfc3VmZml4IiwiaXNfcHJlZml4IiwibHNwbGl0Ml9leG4iLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJyc3BsaXQyIiwic3BsaXRfb25fY2hhcnMiLCJzcGxpdF9saW5lcyIsImxmaW5kaSIsInJmaW5kaSIsImxzdHJpcCIsInJzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNob3Bfc3VmZml4X2V4biIsImNob3BfcHJlZml4X2V4biIsImNob3Bfc3VmZml4IiwiY2hvcF9wcmVmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJzdWZmaXgiLCJwcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImRyb3BfcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4X2xlbmd0aCIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4MiIsImNvbW1vbl9zdWZmaXgyX2xlbmd0aCIsImNvbW1vbl9wcmVmaXgyX2xlbmd0aCIsImNvbmNhdF9hcnJheSIsIm9mX2NoYXIiLCJvZl9jaGFyX2xpc3QiLCJpc19zdWZmaXgkMCIsImlzX3ByZWZpeCQwIiwiaXNfc3Vic3RyaW5nJDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsInN1YnN0cl9pbmRleCQwIiwic3Vic3RyX2luZGV4X2V4biQwIiwic3Vic3RyX2luZGV4X2FsbCQwIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QkMCIsInN1YnN0cl9yZXBsYWNlX2FsbCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRhZzIiLCJ2YWxpZGF0ZV9vcmRpbmFyeSIsInJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSIsInJvYnVzdGx5X2NvbXBhcmUiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJyb2J1c3RseV9jb21wYXJlJDAiLCJyb2J1c3Rfc2lnbiIsInRvX3N0cmluZ18xMiIsImdlbl91bmlmb3JtX2V4Y2wiLCJnZW5faW5jbCIsImdlbl93aXRob3V0X25hbiIsImdlbl9maW5pdGUiLCJnZW5fcG9zaXRpdmUiLCJnZW5fbmVnYXRpdmUiLCJnZW5femVybyIsImdlbl9uYW4iLCJnZW5fc3Vibm9ybWFsIiwiZ2VuX25vcm1hbCIsImdlbl9pbmZpbml0ZSIsIm9mX2Zsb2F0IiwidG9fZmxvYXQiLCJ0b19pbnRfZXhuIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiYmluZCIsImpvaW4iLCJpZ25vcmVfbSIsImFsbF91bml0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsInV3IiwicGh5c19zYW1lIiwiYnByaW50ZiIsImNvbnN0JDAiLCJlcnJvciIsImVycm9yX3MiLCJmb3JjZSIsImlkZW50IiwiaW52YWxpZF9hcmdmIiwiaWZwcmludGYiLCJpc19ub25lIiwiaXNfc29tZSIsImtzcHJpbnRmIiwib2tfZXhuIiwicHJpbnRfcyIsImVwcmludF9zIiwicHJvdGVjdCIsInByb3RlY3R4IiwicmFpc2VfcyIsInNwcmludGYiLCJzdGFnZSIsInVuc3RhZ2UiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheSIsImJpbl93cml0ZV9hcnJheSIsImJpbl93cml0ZXJfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImJpbl9yZWFkX2FycmF5JDAiLCJiaW5fcmVhZGVyX2FycmF5IiwiYmluX2FycmF5IiwiY29tcGFyZV9hcnJheSIsImVxdWFsX2FycmF5IiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJhX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ib29sIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2l6ZV9jaGFyIiwiYmluX3dyaXRlX2NoYXIiLCJiaW5fd3JpdGVyX2NoYXIiLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRlcl9jaGFyIiwiYmluX2NoYXIiLCJjb21wYXJlX2NoYXIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfY2hhciIsImVxdWFsX2NoYXIiLCJjaGFyX29mX3NleHAiLCJzZXhwX29mX2NoYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3dyaXRlX2Zsb2F0IiwiYmluX3dyaXRlcl9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0IiwiYmluX3JlYWRfZmxvYXQkMCIsImJpbl9yZWFkZXJfZmxvYXQiLCJiaW5fZmxvYXQiLCJjb21wYXJlX2Zsb2F0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mbG9hdCIsImVxdWFsX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsInNleHBfb2ZfZmxvYXQiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Zsb2F0IiwiYmluX3NoYXBlX2ludCIsImJpbl9zaXplX2ludCIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVyX2ludCIsImJpbl9yZWFkX2ludCIsImJpbl9yZWFkX2ludCQwIiwiYmluX3JlYWRlcl9pbnQiLCJiaW5faW50IiwiY29tcGFyZV9pbnQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9pbnQiLCJlcXVhbF9pbnQiLCJpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaW50IiwiaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NpemVfaW50MzIiLCJiaW5fd3JpdGVfaW50MzIiLCJiaW5fd3JpdGVyX2ludDMyIiwiYmluX3JlYWRfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiQwIiwiYmluX3JlYWRlcl9pbnQzMiIsImJpbl9pbnQzMiIsImNvbXBhcmVfaW50MzIiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ludDMyIiwiZXF1YWxfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwic2V4cF9vZl9pbnQzMiIsImludDMyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50MzIiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2l6ZV9pbnQ2NCIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZXJfaW50NjQiLCJiaW5fcmVhZF9pbnQ2NCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZGVyX2ludDY0IiwiYmluX2ludDY0IiwiY29tcGFyZV9pbnQ2NCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfaW50NjQiLCJlcXVhbF9pbnQ2NCIsImludDY0X29mX3NleHAiLCJzZXhwX29mX2ludDY0IiwiaW50NjRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQ2NCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fd3JpdGVfbGF6eV90IiwiYmluX3dyaXRlcl9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QkMCIsImJpbl9yZWFkZXJfbGF6eV90IiwiYmluX2xhenlfdCIsImNvbXBhcmVfbGF6eV90IiwiYV8wNDYiLCJiXzA0NyIsImFfMDQ4IiwiYl8wNDkiLCJoYXNoX2ZvbGRfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJzZXhwX29mX2xhenlfdCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2xhenlfdCIsImJpbl9zaGFwZV9saXN0IiwiYmluX3NpemVfbGlzdCIsImJpbl93cml0ZV9saXN0IiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRfbGlzdCIsImJpbl9yZWFkX2xpc3QkMCIsImJpbl9yZWFkZXJfbGlzdCIsImJpbl9saXN0IiwiY29tcGFyZV9saXN0IiwiYV8wNTUiLCJiXzA1NiIsImFfMDU3IiwiYl8wNTgiLCJoYXNoX2ZvbGRfbGlzdCIsImVxdWFsX2xpc3QiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiZnVuYyQ1IiwiaGFzaF9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsInNleHBfb2ZfbmF0aXZlaW50IiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfbmF0aXZlaW50IiwiYmluX3NoYXBlX29wdGlvbiIsImJpbl9zaXplX29wdGlvbiIsImJpbl93cml0ZV9vcHRpb24iLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiQwIiwiYmluX3JlYWRlcl9vcHRpb24iLCJiaW5fb3B0aW9uIiwiY29tcGFyZV9vcHRpb24iLCJhXzA3MyIsImJfMDc0IiwiYV8wNzUiLCJiXzA3NiIsImVxdWFsX29wdGlvbiIsImFfMDc3IiwiYl8wNzgiLCJhXzA3OSIsImJfMDgwIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImhhc2hfZm9sZF9zdHJpbmciLCJmdW5jJDYiLCJoYXNoX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2l6ZV9ieXRlcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZXJfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZGVyX2J5dGVzIiwiYmluX2J5dGVzIiwiY29tcGFyZV9ieXRlcyIsImVxdWFsX2J5dGVzIiwiYnl0ZXNfb2Zfc2V4cCIsInNleHBfb2ZfYnl0ZXMiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2J5dGVzIiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaXplX3JlZiIsImJpbl93cml0ZV9yZWYiLCJiaW5fd3JpdGVyX3JlZiIsImJpbl9yZWFkX3JlZiIsImJpbl9yZWFkX3JlZiQwIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVmIiwiY29tcGFyZV9yZWYiLCJhXzA5NiIsImJfMDk3IiwiYV8wOTgiLCJiXzA5OSIsImVxdWFsX3JlZiIsImFfMTAwIiwiYl8xMDEiLCJhXzEwMiIsImJfMTAzIiwicmVmX29mX3NleHAiLCJzZXhwX29mX3JlZiIsInJlZl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3JlZiIsImdyb3VwJDEzIiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2l6ZV91bml0IiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZF91bml0IiwiYmluX3JlYWRfdW5pdCQwIiwiYmluX3JlYWRlcl91bml0IiwiYmluX3VuaXQiLCJjb21wYXJlX3VuaXQiLCJlcXVhbF91bml0IiwiaGFzaF9mb2xkX3VuaXQiLCJmdW5jJDciLCJoYXNoX3VuaXQiLCJ1bml0X29mX3NleHAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfdW5pdCIsImdyb3VwJDE0IiwiYmluX3NoYXBlX2Zsb2F0X2FycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVyX2Zsb2F0X2FycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRlcl9mbG9hdF9hcnJheSIsImJpbl9mbG9hdF9hcnJheSIsImNvbXBhcmVfZmxvYXRfYXJyYXkiLCJhXzExNCIsImJfMTE1IiwiYV8xMTYiLCJiXzExNyIsImZsb2F0X2FycmF5X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0X2FycmF5IiwiZmxvYXRfYXJyYXlfc2V4cF9ncmFtbWFyIiwidHlwZW5hbWVfb2ZfZmxvYXRfYXJyYXkiLCJuYW1lX29mX2Zsb2F0X2FycmF5IiwidHlwZXJlcF9vZl9mbG9hdF9hcnJheSIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwibWF4X21lbV93YWl0aW5nX2djIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic3ViX3NoYXJlZCIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdCIsIndyaXRlciIsImRhdGFfbGVuIiwidG90YWxfbGVuIiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4Iiwidl8wMDUiLCJyZXMwXzAxMSIsInZfMDA2IiwicmVzMV8wMTIiLCJ2XzAwNyIsInJlczJfMDEzIiwicG9zX2FmdGVyX3NpemVfaGVhZGVyIiwicG9zX2FmdGVyX2RhdGEiLCJhcmc0XzAyMyIsImFyZzNfMDIyIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5Iiwidl8wMTQiLCJyZXMwXzAyNCIsInZfMDE1IiwicmVzMV8wMjUiLCJ2XzAxNiIsInJlczJfMDI2Iiwidl8wMTciLCJyZXMzXzAyNyIsInZfMDE4IiwicmVzNF8wMjgiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsIm1pbl9wb3MiLCJkYXRhX2VuZCIsInNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmciLCJzbGVuIiwic2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmciLCJtYXhfcG9zIiwiZGF0YV9iZWdpbiIsInRvX2J5dGVzIiwib2ZfYnl0ZXMiLCJieXRlcyIsInRvX2hleCIsIm9mX2hleF9leG4iLCJvZl9iaW5hcnlfZXhuIiwiYWNjdW0iLCJ0b19iaW5hYmxlJDAiLCJkaWdlc3Rfc3RyaW5nIiwiZGlnZXN0X2J5dGVzIiwiZGlnZXN0X251bV9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDQ1IiwiZXJyb3Jfc291cmNlXzA2OCIsImVycm9yX3NvdXJjZV8xMDYiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDYiLCJpc19kc3RfMDA4IiwiYWJicnZfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIyIiwiZmllbGRfc2V4cF8wMTUkMyIsImZpZWxkX3NleHBfMDE1IiwiZmllbGRfc2V4cF8wMTUkMCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE4IiwiZmllbGRfc2V4cF8wMTUkMiIsImZ2YWx1ZV8wMTciLCJhYmJydl8wMTEiLCJpc19kc3RfMDA5IiwidXRjX29mZnNldF9pbl9zZWNvbmRzXzAwNyIsImFiYnJ2XzAyOSIsImlzX2RzdF8wMjciLCJ1dGNfb2Zmc2V0X2luX3NlY29uZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYXJnXzAyOCIsImJuZHNfMDI0JDAiLCJhcmdfMDI2IiwiYm5kc18wMjQkMSIsInZfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIiwidl9zZWNvbmRzIiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wMzMiLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMiLCJzZWNvbmRzXzAzNiIsImR1cGxpY2F0ZXNfMDM4IiwiZXh0cmFfMDM5Iiwic2V4cF8wMzIkMCIsImZpZWxkX3NleHBzXzA0MiIsImZpZWxkX25hbWVfMDQwIiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzA0MSQyIiwiZmllbGRfc2V4cF8wNDEiLCJmaWVsZF9zZXhwXzA0MSQwIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDQxJDEiLCJmdmFsdWVfMDQzIiwic2Vjb25kc18wMzciLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMkMCIsInNlY29uZHNfMDUyIiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzA1IiwiYXJnXzA1MyIsImJuZHNfMDQ5IiwiYXJnXzA1MSIsImJuZHNfMDQ5JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJzZXhwXzA1NSIsImZpZWxkX3NleHBzXzA1NiIsInN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcCIsIm5ld19yZWdpbWVfMDU5IiwiZHVwbGljYXRlc18wNjEiLCJleHRyYV8wNjIiLCJzZXhwXzA1NSQwIiwiZmllbGRfc2V4cHNfMDY1IiwiZmllbGRfbmFtZV8wNjMiLCJ0YWlsXzA3MCIsImZpZWxkX3NleHBfMDY0JDIiLCJmaWVsZF9zZXhwXzA2NCIsInhfMDcxIiwiZmllbGRfc2V4cF8wNjQkMCIsImZ2YWx1ZV8wNjciLCJmaWVsZF9zZXhwXzA2NCQxIiwiZnZhbHVlXzA2NiIsIm5ld19yZWdpbWVfMDYwIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwJDAiLCJuZXdfcmVnaW1lXzA3NSIsImFyZ18wNzYiLCJibmRzXzA3MiIsImFyZ18wNzQiLCJibmRzXzA3MiQwIiwidjUiLCJ2NyIsInY2Iiwidl9uYW1lIiwidl9vcmlnaW5hbF9maWxlbmFtZSIsInZfZGlnZXN0Iiwidl90cmFuc2l0aW9ucyIsInZfbGFzdF9yZWdpbWVfaW5kZXgiLCJ2X2RlZmF1bHRfbG9jYWxfdGltZV90eXBlIiwidl9sZWFwX3NlY29uZHMiLCJzZXhwXzA3OCIsImZpZWxkX3NleHBzXzA3OSIsIm5hbWVfMDgwIiwib3JpZ2luYWxfZmlsZW5hbWVfMDgyIiwiZGlnZXN0XzA4NCIsInRyYW5zaXRpb25zXzA4NiIsImxhc3RfcmVnaW1lX2luZGV4XzA4OCIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzA5MCIsImxlYXBfc2Vjb25kc18wOTIiLCJkdXBsaWNhdGVzXzA5NCIsImV4dHJhXzA5NSIsInNleHBfMDc4JDAiLCJmaWVsZF9zZXhwc18wOTgiLCJmaWVsZF9uYW1lXzA5NiIsInRhaWxfMTA4IiwiZmllbGRfc2V4cF8wOTckNyIsImZpZWxkX3NleHBfMDk3IiwiZmllbGRfc2V4cF8wOTckMCIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5NyQxIiwiZnZhbHVlXzEwNCIsImZpZWxkX3NleHBfMDk3JDIiLCJmdmFsdWVfMTA1IiwiZmllbGRfc2V4cF8wOTckMyIsImZ2YWx1ZV8wOTkiLCJmaWVsZF9zZXhwXzA5NyQ0IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDk3JDUiLCJmdmFsdWVfMTAzIiwiZmllbGRfc2V4cF8wOTckNiIsImZ2YWx1ZV8xMDAiLCJsZWFwX3NlY29uZHNfMDkzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDkxIiwibGFzdF9yZWdpbWVfaW5kZXhfMDg5IiwidHJhbnNpdGlvbnNfMDg3IiwiZGlnZXN0XzA4NSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzA4MyIsIm5hbWVfMDgxIiwidHJhbnNpdGlvbnNfMTE3IiwiZGlnZXN0XzExNSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzExMyIsIm5hbWVfMTExIiwibGFzdF9yZWdpbWVfaW5kZXhfMTE5IiwibGVhcF9zZWNvbmRzXzEyMyIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzEyMSIsImFyZ18xMjQiLCJibmRzXzExMCIsImFyZ18xMjIiLCJibmRzXzExMCQwIiwiYXJnXzEyMCIsImJuZHNfMTEwJDEiLCJhcmdfMTE4IiwiYm5kc18xMTAkMiIsImFyZ18xMTYiLCJibmRzXzExMCQzIiwiYXJnXzExNCIsImJuZHNfMTEwJDQiLCJhcmdfMTEyIiwiYm5kc18xMTAkNSIsIm9yaWdpbmFsX2ZpbGVuYW1lIiwiem9uZSIsImRpZ2VzdCIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kcyIsImlzX2RzdCIsImFiYnJ2X2luZGV4IiwiYWJicnYiLCJpbnB1dF90el9maWxlX2dlbiIsImlucHV0X3RyYW5zaXRpb24iLCJpbnB1dF9sZWFwX3NlY29uZCIsInV0Y19sb2NhbF9jb3VudCIsInN0ZF93YWxsX2NvdW50IiwibGVhcF9jb3VudCIsInRyYW5zaXRpb25fY291bnQiLCJ0eXBlX2NvdW50IiwiYWJicnZfY2hhcl9jb3VudCIsInRyYW5zaXRpb25fdGltZXMiLCJ0cmFuc2l0aW9uX2luZGljZXMiLCJyZWdpbWVzIiwicmF3X2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsImluZGV4ZWRfYWJicnZzIiwibGVhcF9zZWNvbmRzIiwicmVnaW1lcyQwIiwidGltZSIsInJlZ2ltZSIsInJhd190cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zIiwibHR0IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJyZXN0IiwibmV3X3JlZ2ltZSIsImlucHV0X2xlYXBfc2Vjb25kX2dlbiIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHMiLCJyZWFkX2hlYWRlciIsIm1hZ2ljIiwiYmFkX3ZlcnNpb24iLCJ2ZXJzaW9uIiwiaW5wdXRfdHpfZmlsZV92MSIsImlucHV0X3R6X2ZpbGUiLCJ6b25lbmFtZSIsInhfMTI1IiwibWFrZV96b25lIiwicmVhc29uIiwib2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIiwib2ZfdXRjX29mZnNldCIsImxpa2VseV9tYWNoaW5lX3pvbmVzIiwidXRjIiwicmVzZXRfdHJhbnNpdGlvbl9jYWNoZSIsImdldF9yZWdpbWVfZXhuIiwiZWZmZWN0aXZlX3N0YXJ0X3RpbWUiLCJtb2RlIiwiaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2VjIiwiaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2VjIiwiYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzIiwidHJhbnNpdGlvbiIsImluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2giLCJpbmRleCQwIiwiaW5kZXgkMSIsImluZGV4JDIiLCJpbmRleCQzIiwiaW5kZXgkNCIsIm9mX2ludDYzX3NlY29uZHMiLCJ0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXgiLCJvZl9zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3Bhbl9zaW5jZV9lcG9jaCIsIm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJpbmRleF9vZl9kYXRlX2FuZF9vZmRheSIsImluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IiwiaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF8iLCJhZnRlciIsImJlZm9yZSIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50XyIsImluZGV4X2FiYnJldmlhdGlvbl9leG4iLCJpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIiwicmF3IiwidmFsaWRhdGlvbl9mYWlsZWQiLCJhcmcyXzAwMyIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAwNiIsImNyZWF0ZV9leG4iLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwidHlwZV9pZDEiLCJ0eXBlX2lkMiIsIm5hbWVfb2Zfa2V5IiwidWlkX29mX2tleSIsInR5cGVfaWRfbmFtZSIsInR5cGVfaWRfdWlkIiwicGFja2VkIiwieF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm1lbV9ieV9pZCIsImlkIiwicmVtb3ZlX2J5X2lkIiwia2V5JDAiLCJjaGFuZ2VfZXhuIiwib3JpZyIsIm9mX2FfMDExIiwib2ZfYV8wMTIiLCJ4XzAxMyIsInhfMDE0Iiwib2ZfYV8wMTciLCJkZWZhdWx0JDAiLCJpZCQwIiwiaWQkMSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsInJhY2VfZnJlZV9jcmVhdGVfbG9vcCIsImNlbGwiLCJuZXdfeCIsImN1cnJlbnQiLCJpbW1lZGlhY3kiLCJhbGxvd2VkX2ludHMiLCJuZXZlcl93aXRoX25hbWUiLCJuZXZlciIsInVua25vd24iLCJvcHRpb24iLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsInJlZiIsInR1cGxlMiIsInR1cGxlMyIsInR1cGxlNCIsInR1cGxlNSIsImZ1bmN0aW9uJDAiLCJpbnQkMCIsInJlZiQwIiwiYXJyYXkkMCIsInR1cGxlMiQwIiwidHVwbGUzJDAiLCJ0dXBsZTQkMCIsInR1cGxlNSQwIiwiZnVuY3Rpb24kMSIsIm9wdGlvbiQwIiwibGlzdCQwIiwibGF6eV90IiwicG9zc2libHlfdW5ib3hlZCIsImNoaWxkX3R5cGUiLCJ0aGVfb25seV9maWVsZCIsInZhcmlhbnQiLCJ0YWciLCJtb3JlIiwibm8iLCJtb3JlX2FyZ19saXN0Iiwib25lX2FyZ19saXN0Iiwibm9fYXJnX2xpc3QiLCJub19hcmdfY291bnQiLCJoYXNoX3NldCIsInJlcXVpcmVkIiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzAzMCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwOCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczFfMDE1IiwiY3VycnkiLCJ1bmN1cnJ5IiwibWFwX2ZzdCIsIm1hcF9zbmQiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYl8wMjAiLCJvZl9jXzAyMSIsInNleHBfMDI5IiwiYXJnMl8wMjUiLCJyZXMwXzAyNiIsInJlczFfMDI3IiwicmVzMl8wMjgiLCJvZl9hXzAzMSIsIm9mX2JfMDMyIiwib2ZfY18wMzMiLCJhcmcyXzAzNiIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNyIsInJlczFfMDM4IiwicmVzMl8wMzkiLCJvZl9jIiwiY3VycnkkMCIsInVuY3VycnkkMCIsIm1hcF9mc3QkMCIsIm1hcF9zbmQkMCIsIm1hcF90cmQiLCJtYXAyJDAiLCJ6MiIsInoxIiwiZ2V0MyIsImNtcDMiLCJ6JDAiLCJjMSIsImMyIiwiZXEzIiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJhXzA1MSIsImJfMDUyIiwidF8wNTQiLCJ0XzA1MyIsInRfMDU2IiwidF8wNTUiLCJzZXhwXzA2MiIsImFyZzFfMDU5IiwiYXJnMF8wNTgiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwicmVzMF8wNjYiLCJyZXMxXzA2NyIsInMyIiwiczEiLCJzMiQwIiwiczEkMCIsIndlZWtkYXlzIiwid2Vla2VuZHMiLCJzaXplXzAxOCIsInJhbmRvbV8wMTkiLCJzaXplXzAxMiIsInJhbmRvbV8wMTMiLCJzaXplXzAxMCIsInJhbmRvbV8wMTEiLCJyYW5kb21fMDA5Iiwic2l6ZV8wMDYiLCJyYW5kb21fMDA3IiwiaGFzaF8wMDUiLCJoYXNoXzAwNSQwIiwiaGFzaF8wMDUkMSIsImhhc2hfMDA1JDIiLCJoYXNoXzAwNSQzIiwiaGFzaF8wMDUkNCIsImhhc2hfMDA1JDUiLCJoYXNoXzAwNSQ2IiwidG9fc3RyaW5nX2xvbmciLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwMyIsImN1c3RvbV9wcmludGZfMDA0IiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDIxIiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsImRheXNfaW5fbW9udGgiLCJpbnZhbGlkIiwibXNnIiwiZGF5c19pbl9tb250aCQwIiwidW5jaGVja2VkX3ZhbHVlIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJzZXhwXzAwNSQwIiwiZmllbGRfc2V4cHNfMDA2IiwieV8wMDciLCJtXzAwOSIsImRfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwNSIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjMiLCJmaWVsZF9zZXhwXzAxNiQzIiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNCIsImZpZWxkX3NleHBfMDE2JDAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZmllbGRfc2V4cF8wMTYkMiIsImRfMDEyIiwibV8wMTAiLCJ5XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInZhbHVlX2V4biIsInN5bWJvbCQ1IiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwib2ZfbXVsdCIsInRvX211bHQiLCJvZl9wZXJjZW50YWdlIiwidG9fcGVyY2VudGFnZSIsIm9mX2JwIiwidG9fYnAiLCJvZl9icF9pbnQiLCJ0b19icF9pbnQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWxfbXVsdCIsImRlY2ltYWxfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIiwicm91bmRfZGVjaW1hbF9icCIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiZXhwb25lbnQiLCJwcmVjaXNpb24iLCJleHBvbmVudF9FIiwiZGVjaW1hbCIsIm9jYW1sIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwieF9hYnMiLCJyZWFsbHlfb2Zfc3RyaW5nIiwiZmxvYXRfb2Zfc3RyaW5nIiwic3RyJDAiLCJzdHIkMSIsInN0ciQyIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImlzX3plcm8iLCJhcHBseSIsImlzX25hbiIsImlzX2luZiIsIm5lZyIsInNpZ25fZXhuIiwib2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIiwidF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIiwiZm9ybWF0JDAiLCJyYW5kb21pemUiLCJzcGFuIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJlcnJvcl9zb3VyY2VfMDMyIiwibiQyIiwibiQzIiwibiQ0Iiwic2lnbl8wMDYiLCJocl8wMDgiLCJtaW5fMDEwIiwic2VjXzAxMiIsIm1zXzAxNCIsInVzXzAxNiIsIm5zXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfc2V4cHNfMDI0IiwiZmllbGRfbmFtZV8wMjIiLCJ0YWlsXzAzNCIsImZpZWxkX3NleHBfMDIzJDciLCJmaWVsZF9zZXhwXzAyMyIsInhfMDM1IiwiZmllbGRfc2V4cF8wMjMkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAyMyQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDIzJDIiLCJmdmFsdWVfMDI4IiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZnZhbHVlXzAyNyIsImZpZWxkX3NleHBfMDIzJDUiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNiIsImZ2YWx1ZV8wMzAiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwibnNfMDQ5IiwidXNfMDQ3IiwibXNfMDQ1Iiwic2VjXzA0MyIsIm1pbl8wNDEiLCJocl8wMzkiLCJzaWduXzAzNyIsImFyZ18wNTAiLCJibmRzXzAzNiIsImFyZ18wNDgiLCJibmRzXzAzNiQwIiwiYXJnXzA0NiIsImJuZHNfMDM2JDEiLCJhcmdfMDQ0IiwiYm5kc18wMzYkMiIsImFyZ18wNDIiLCJibmRzXzAzNiQzIiwiYXJnXzA0MCIsImJuZHNfMDM2JDQiLCJhcmdfMDM4IiwiYm5kc18wMzYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50X3NlYyIsIm9mX2ludDMyX3NlY29uZHMiLCJvZl9taW4iLCJvZl9ociIsIm9mX2RheSIsImRpdmlkZV9ieV91bml0X29mX3RpbWUiLCJ1bml0X29mX3RpbWUiLCJzY2FsZV9ieV91bml0X29mX3RpbWUiLCJzdGgkMSIsInN0aCQyIiwic3RoJDMiLCJzdGgkNCIsInN0aCQ1Iiwic3RoJDYiLCJ0b19zaG9ydF9zdHJpbmciLCJ0X29mX3NleHBfdjFfdjIiLCJpc192MiIsInNleHBfb2ZfdF92MV92MiIsImFic190IiwidG9fdW5pdF9vZl90aW1lIiwib2ZfdW5pdF9vZl90aW1lIiwic3VmZml4X29mX3VuaXRfb2ZfdGltZSIsInBhcnNlX3N1ZmZpeCIsInVuaXRfb2ZfdGltZV9saXN0JDEiLCJ1bml0X29mX3RpbWVfbGlzdCIsInVuaXRfb2ZfdGltZV9saXN0JDAiLCJzdGF0ZV9pc19maW5hbCIsImludmFsaWRfc3RyaW5nJDAiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJzdGFydF9vZl9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJzJDAiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9pbnRfdXMiLCJvZl9pbnRfbXMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJvZl9pbnRfbnMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNpbmNlX3VuaXhfZXBvY2giLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJoYWxmX21pY3Jvc2Vjb25kIiwidG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwibWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwib2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3ZhbHVlX3JlcHJlc2VudGFibGUiLCJtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSIsImlzX2ludmFsaWQiLCJvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQiLCJzdWJfZXhuIiwidG9fc3RyaW5nX3dpdGhfdW5pdCIsInNpeHR5IiwidGhvdXNhbmQiLCJ1bml0JDAiLCJudW1fZGlnaXRzIiwidG9fbWljcm9zZWNvbmRfc3RyaW5nIiwiZXZlcnkiLCJzdGFydCQxIiwidG9faW50NjNfbnNfc2luY2VfZXBvY2giLCJvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCIsIm92ZXJmbG93IiwiYWRkX292ZXJmbG93ZWQiLCJzdWJfb3ZlcmZsb3dlZCIsImFkZF9zYXR1cmF0aW5nIiwic3ViX3NhdHVyYXRpbmciLCJ0b19pbnRfbnNfc2luY2VfZXBvY2giLCJvZl9pbnRfbnNfc2luY2VfZXBvY2giLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJ0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJuc19zaW5jZV9lcG9jaCIsIm5zX3Blcl9kYXkiLCJhcHByb3hfZGF5c19mcm9tX2Vwb2NoIiwibnNfc2luY2Vfc3RhcnRfb2ZfZGF5Iiwic3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJzcGFuX2luX2RheXNfc2luY2VfZXBvY2giLCJzcGFuX3NpbmNlX2Vwb2NoIiwidHdvX2RpZ2l0X29mX3N0cmluZyIsIm5zX29mXzEwMF9tcyIsIm5zX29mXzEwX21zIiwibnNfb2ZfMV9tcyIsIm5zX29mXzEwMF91cyIsIm5zX29mXzEwX3VzIiwibnNfb2ZfMV91cyIsIm5zX29mXzEwMF9ucyIsIm5zX29mXzEwX25zIiwibnNfb2ZfMV9ucyIsInNlY29uZHNfc3BhbiIsInN1Yl9zZWNvbmRfc3BhbiIsIm9mZGF5X3N0cmluZ193aXRoX3pvbmUiLCJkYXRlX3N0cmluZyIsIm9mZGF5X3N0cmluZyIsInN1ZmZpeF9sZW4iLCJzZWNvbmRzX3N0cmluZyIsInN1Yl9zZWNvbmRfc3RyaW5nIiwic19zdHJpbmciLCJtX3N0cmluZyIsImhfc3RyaW5nIiwibXVsdGlwbGllciIsImRheXNfZnJvbV9lcG9jaCQwIiwiZGF5c19mcm9tX2Vwb2NoX2luX25zIiwiYXR0ZW1wdCIsInNwYW5fb2ZfZHVyYXRpb24iLCJ0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQiLCJkdXJhdGlvbnMiLCJzcGFucyIsInN0cmluZ19ieXRlcyIsInNyY19wb3MiLCJzcmNfbGVuIiwiZHN0X3BvcyIsInNyY19wb3MkMCIsImJ5dGVzX2J5dGVzIiwic3RyaW5nX2JpZ3N0cmluZyIsImJ5dGVzX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19iaWdzdHJpbmciLCJiaWdzdHJpbmdfc3RyaW5nIiwiYmlnc3RyaW5nX2J5dGVzIiwic2l6ZV8wMDkiLCJyYW5kb21fMDEwIiwic2l6ZV8wMDciLCJoYXNoXzAwOCIsImhhc2hfMDA4JDAiLCJoYXNoXzAwOCQxIiwiaGFzaF8wMDgkMiIsImJhc2VfbGVuIiwiZ2V0X25vX2JvdW5kc19jaGVjayIsImZvbGRpJDAiLCJ3cmFwX3N1Yl9uIiwib25fZXJyb3IiLCJibGl0X3RvIiwiYmxpdF90b19zdHJpbmciLCJibGl0X3RvX2J5dGVzIiwiYmxpdF90b19iaWdzdHJpbmciLCJibGl0X2Jhc2UiLCJibGl0X2Zyb20iLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2JpZ3N0cmluZyIsIm9mX2Jhc2UiLCJjb25jYXRfZ2VuIiwiY3JlYXRlX2RzdCIsImJsaXRfZHN0IiwidHMiLCJjb25jYXRfc3RyaW5nIiwiY29uY2F0X2JpZ3N0cmluZyIsInNvcnRfYW5kX2FsaWduIiwiY2hlY2tfc3VmZml4IiwiY2hvcF9leHRlbnNpb24iLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAxIiwicDIiLCJzJDEiLCJzJDIiLCJ0b19hYnNvbHV0ZV9leG4iLCJyZWxhdGl2ZV90byIsIm1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSIsImlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCIsInNwbGl0X2V4dGVuc2lvbiIsImZuIiwiZm4kMCIsImZuJDEiLCJkaXIiLCJleHQiLCJiYXNlX2ZuIiwiZXh0JDAiLCJmbiQyIiwiZGlyJDAiLCJmbiQzIiwicGFydHMiLCJmaWxlbmFtZSQwIiwiZmlsZW5hbWUkMSIsIm9mX2Fic29sdXRlX2V4biIsImFfcGFydHMiLCJiX3BhcnRzIiwiYV9zdWZmaXgiLCJiX3N1ZmZpeCIsImgyIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJmbGFnX25hbWUiLCJlcnJvcl9zb3VyY2VfMDE3IiwiZXJyb3Jfc291cmNlXzA2MiIsImVycm9yX3NvdXJjZV8wOTkiLCJlcnJvcl9zb3VyY2VfMTM2IiwiZXJyb3Jfc291cmNlXzE3MSIsImVycm9yX3NvdXJjZV8yMTgiLCJlcnJvcl9zb3VyY2VfMjY5IiwiZXJyb3Jfc291cmNlXzMxOSIsImVycm9yX3NvdXJjZV8zNTYiLCJlcnJvcl9zb3VyY2VfMzg4IiwiZXJyb3Jfc291cmNlXzQxNSIsImVycm9yX3NvdXJjZV80NDQiLCJlcnJvcl9zb3VyY2VfNDc2IiwiZXJyb3Jfc291cmNlXzUwMSIsImVycm9yX3NvdXJjZV81MjYiLCJlcnJvcl9zb3VyY2VfNTY1IiwiZXJyb3Jfc291cmNlXzYxMCIsImVudW1lcmF0ZV82MjgiLCJlbnVtZXJhdGVfNjI5IiwibWF5YmVfbWlzc2luZ19wcmVmaXgiLCJtYXliZV9taXNzaW5nX3N1ZmZpeCIsIm1heWJlX21vcmVfc3VmZml4IiwibmFtZXMkMCIsImVycm9yX3NvdXJjZV82NjkiLCJpbmRlbnRhdGlvbiIsInNwYWNpbmdfZG90IiwibmFtZXMkMSIsImVycm9yX3NvdXJjZV83MDgiLCJuYW1lcyQyIiwiZXJyb3Jfc291cmNlXzc1NyIsIm5hbWVzJDMiLCJlcnJvcl9zb3VyY2VfODA3IiwiZXJyb3Jfc291cmNlXzgzOCIsImFfMDAxJDAiLCJiXzAwMiQwIiwidGFnXzAyMCIsInNleHBfYXJnc18wNDEiLCJhcmcwXzA0MiIsInNleHBfYXJnc18wMzYiLCJyZXMwXzAzOCIsInNleHBfYXJnc18wMjYiLCJzZXhwX2FyZ3NfMDMxIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzA0NCIsInJlczBfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwidXNhZ2UiLCJ1c2FnZSQwIiwidXNhZ2UkMSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1OCIsImJfMDU5Iiwic2V4cF8wNjQiLCJ0YWdfMDY1Iiwic2V4cF9hcmdzXzA2NiIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsImFyZzBfMDc0IiwicmVzMF8wNzUiLCJhcmcwXzA3NiIsInJlczBfMDc3Iiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJhXzA3OCIsImJfMDc5IiwiYV8wODAiLCJiXzA4MSIsInNleHBfMDgzIiwiZmllbGRfc2V4cHNfMDg0IiwibmFtZV8wODUiLCJkb2NfMDg3IiwiYWxpYXNlc18wODkiLCJkdXBsaWNhdGVzXzA5MSIsImV4dHJhXzA5MiIsInNleHBfMDgzJDAiLCJmaWVsZF9zZXhwc18wOTUiLCJmaWVsZF9uYW1lXzA5MyIsInRhaWxfMTAxIiwiZmllbGRfc2V4cF8wOTQkMyIsImZpZWxkX3NleHBfMDk0IiwieF8xMDIiLCJmaWVsZF9zZXhwXzA5NCQwIiwiZnZhbHVlXzA5OCIsImZpZWxkX3NleHBfMDk0JDEiLCJmdmFsdWVfMDk3IiwiZmllbGRfc2V4cF8wOTQkMiIsImZ2YWx1ZV8wOTYiLCJhbGlhc2VzXzA5MCIsImRvY18wODgiLCJuYW1lXzA4NiIsImFsaWFzZXNfMTA4IiwiZG9jXzEwNiIsIm5hbWVfMTA0IiwiYXJnXzEwOSIsImJuZHNfMTAzIiwiYXJnXzEwNyIsImJuZHNfMTAzJDAiLCJhcmdfMTA1IiwiYm5kc18xMDMkMSIsInZfc3VtbWFyeSIsInZfcmVhZG1lIiwidl9hbm9ucyIsInZfZmxhZ3MiLCJhXzExMCIsImJfMTExIiwiYV8xMTIiLCJiXzExMyIsInNleHBfMTE3IiwiZmllbGRfc2V4cHNfMTE4Iiwic3VtbWFyeV8xMTkiLCJyZWFkbWVfMTIxIiwiYW5vbnNfMTIzIiwiZmxhZ3NfMTI1IiwiZHVwbGljYXRlc18xMjciLCJleHRyYV8xMjgiLCJzZXhwXzExNyQwIiwiZmllbGRfc2V4cHNfMTMxIiwiZmllbGRfbmFtZV8xMjkiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMwJDQiLCJmaWVsZF9zZXhwXzEzMCIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzAkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMCQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMwJDIiLCJmdmFsdWVfMTMyIiwiZmllbGRfc2V4cF8xMzAkMyIsImZ2YWx1ZV8xMzMiLCJyZWFkbWVfMTIyIiwiZmxhZ3NfMTI2IiwiYW5vbnNfMTI0Iiwic3VtbWFyeV8xMjAiLCJmbGFnc18xNDkiLCJhbm9uc18xNDciLCJyZWFkbWVfMTQzIiwic3VtbWFyeV8xNDEiLCJhcmdfMTUwIiwiYm5kc18xNDAiLCJhcmdfMTQ4IiwiYm5kc18xNDAkMCIsInZfMTQ0IiwiYXJnXzE0NiIsImJuZF8xNDUiLCJibmRzXzE0MCQxIiwiYXJnXzE0MiIsImJuZHNfMTQwJDIiLCJiaW5fc2hhcGVfYSIsInZfc3ViY29tbWFuZHMiLCJhXzE4NiIsImJfMTg3IiwiYV8xODgiLCJiXzE4OSIsImFfMTkwIiwiYl8xOTEiLCJhXzE5MiIsImJfMTkzIiwidF8xOTUiLCJ0XzE5NCIsInRfMTk3IiwidF8xOTYiLCJvZl9hXzE5OCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwic3VtbWFyeV8yMDIiLCJyZWFkbWVfMjA0Iiwic3ViY29tbWFuZHNfMjA2IiwiZHVwbGljYXRlc18yMDgiLCJleHRyYV8yMDkiLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEyIiwiZmllbGRfbmFtZV8yMTAiLCJ0YWlsXzIyMyIsImZpZWxkX3NleHBfMjExJDMiLCJmaWVsZF9zZXhwXzIxMSIsInhfMjI0IiwiZmllbGRfc2V4cF8yMTEkMCIsImZ2YWx1ZV8yMjEiLCJmaWVsZF9zZXhwXzIxMSQxIiwic2V4cF8yMTciLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImZ2YWx1ZV8yMTkiLCJmaWVsZF9zZXhwXzIxMSQyIiwiZnZhbHVlXzIyMCIsInJlYWRtZV8yMDUiLCJzdWJjb21tYW5kc18yMDciLCJzdW1tYXJ5XzIwMyIsIm9mX2FfMjI1Iiwic3ViY29tbWFuZHNfMjMzIiwicmVhZG1lXzIyOSIsInN1bW1hcnlfMjI3IiwiYm5kc18yMjYiLCJhcmcxXzIzNiIsImFyZzBfMjM1IiwicmVzMF8yMzciLCJyZXMxXzIzOCIsImFyZ18yMzQiLCJibmRzXzIyNiQwIiwidl8yMzAiLCJhcmdfMjMyIiwiYm5kXzIzMSIsImJuZHNfMjI2JDEiLCJhcmdfMjI4IiwiYm5kc18yMjYkMiIsIm9mX2FfMjQ5Iiwic2V4cF8yNTEiLCJmaWVsZF9zZXhwc18yNTIiLCJzdW1tYXJ5XzI1MyIsInJlYWRtZV8yNTUiLCJzdWJjb21tYW5kc18yNTciLCJkdXBsaWNhdGVzXzI1OSIsImV4dHJhXzI2MCIsInNleHBfMjUxJDAiLCJmaWVsZF9zZXhwc18yNjMiLCJmaWVsZF9uYW1lXzI2MSIsInRhaWxfMjc0IiwiZmllbGRfc2V4cF8yNjIkMyIsImZpZWxkX3NleHBfMjYyIiwieF8yNzUiLCJmaWVsZF9zZXhwXzI2MiQwIiwiZnZhbHVlXzI3MiIsImZpZWxkX3NleHBfMjYyJDEiLCJzZXhwXzI2OCIsImFyZzFfMjY1IiwiYXJnMF8yNjQiLCJyZXMwXzI2NiIsInJlczFfMjY3IiwiZnZhbHVlXzI3MCIsImZpZWxkX3NleHBfMjYyJDIiLCJmdmFsdWVfMjcxIiwicmVhZG1lXzI1NiIsInN1YmNvbW1hbmRzXzI1OCIsInN1bW1hcnlfMjU0Iiwib2ZfYV8yNzYiLCJzdWJjb21tYW5kc18yODQiLCJyZWFkbWVfMjgwIiwic3VtbWFyeV8yNzgiLCJibmRzXzI3NyIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInJlczFfMjg5IiwiYXJnXzI4NSIsImJuZHNfMjc3JDAiLCJ2XzI4MSIsImFyZ18yODMiLCJibmRfMjgyIiwiYm5kc18yNzckMSIsImFyZ18yNzkiLCJibmRzXzI3NyQyIiwidG9fbGF0ZXN0Iiwic3ViY29tbWFuZHMiLCJyZWFkbWUiLCJzdW1tYXJ5Iiwib2ZfbGF0ZXN0IiwiYWJzX3BhdGgiLCJ2X3dvcmtpbmdfZGlyIiwidl9wYXRoX3RvX2V4ZSIsInZfY2hpbGRfc3ViY29tbWFuZCIsImFfMjkwIiwiYl8yOTEiLCJhXzI5MiIsImJfMjkzIiwiYV8yOTQiLCJiXzI5NSIsInNleHBfMjk3IiwiZmllbGRfc2V4cHNfMjk4Iiwic3VtbWFyeV8yOTkiLCJyZWFkbWVfMzAxIiwid29ya2luZ19kaXJfMzAzIiwicGF0aF90b19leGVfMzA1IiwiY2hpbGRfc3ViY29tbWFuZF8zMDciLCJkdXBsaWNhdGVzXzMwOSIsImV4dHJhXzMxMCIsInNleHBfMjk3JDAiLCJmaWVsZF9zZXhwc18zMTMiLCJmaWVsZF9uYW1lXzMxMSIsInRhaWxfMzIxIiwiZmllbGRfc2V4cF8zMTIkNSIsImZpZWxkX3NleHBfMzEyIiwieF8zMjIiLCJmaWVsZF9zZXhwXzMxMiQwIiwiZnZhbHVlXzMxNiIsImZpZWxkX3NleHBfMzEyJDEiLCJmdmFsdWVfMzE4IiwiZmllbGRfc2V4cF8zMTIkMiIsImZ2YWx1ZV8zMTciLCJmaWVsZF9zZXhwXzMxMiQzIiwiZnZhbHVlXzMxNSIsImZpZWxkX3NleHBfMzEyJDQiLCJmdmFsdWVfMzE0IiwicmVhZG1lXzMwMiIsImNoaWxkX3N1YmNvbW1hbmRfMzA4IiwicGF0aF90b19leGVfMzA2Iiwid29ya2luZ19kaXJfMzA0Iiwic3VtbWFyeV8zMDAiLCJjaGlsZF9zdWJjb21tYW5kXzMzNCIsInBhdGhfdG9fZXhlXzMzMiIsIndvcmtpbmdfZGlyXzMzMCIsInJlYWRtZV8zMjYiLCJzdW1tYXJ5XzMyNCIsImFyZ18zMzUiLCJibmRzXzMyMyIsImFyZ18zMzMiLCJibmRzXzMyMyQwIiwiYXJnXzMzMSIsImJuZHNfMzIzJDEiLCJ2XzMyNyIsImFyZ18zMjkiLCJibmRfMzI4IiwiYm5kc18zMjMkMiIsImFyZ18zMjUiLCJibmRzXzMyMyQzIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImJpbl9zaGFwZV90JDciLCJ0b192MyIsIm9mX3YzIiwidG9fbGF0ZXN0JDEiLCJvZl9sYXRlc3QkMSIsImJpbl9zaGFwZV90JDgiLCJ0b192MiIsIm9mX3YyIiwidG9fbGF0ZXN0JDIiLCJvZl9sYXRlc3QkMiIsImJpbl9zaGFwZV90JDkiLCJhXzQwMSIsImJfNDAyIiwiYV80MDEkMCIsImJfNDAyJDAiLCJhXzQwMyIsImJfNDA0IiwiYV80MDUiLCJiXzQwNiIsImFfNDA3IiwiYl80MDgiLCJhXzQxMSIsImFfNDA5IiwiYl80MTIiLCJiXzQxMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF80MTciLCJ0YWdfNDE4Iiwic2V4cF9hcmdzXzQyNCIsImFyZzBfNDI1IiwicmVzMF80MjYiLCJzZXhwX2FyZ3NfNDI5IiwiYXJnMV80MzEiLCJhcmcwXzQzMCIsInJlczBfNDMyIiwicmVzMV80MzMiLCJzZXhwX2FyZ3NfNDE5IiwiYXJnMF80MjAiLCJyZXMwXzQyMSIsImFyZzBfNDM0IiwicmVzMF80MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3IiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJiaW5fc2hhcGVfdCQxMCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF80NDYiLCJ0YWdfNDQ3Iiwic2V4cF9hcmdzXzQ2MyIsImFyZzBfNDY0IiwicmVzMF80NjUiLCJzZXhwX2FyZ3NfNDUzIiwiYXJnMF80NTQiLCJyZXMwXzQ1NSIsInNleHBfYXJnc180NTgiLCJhcmcwXzQ1OSIsInJlczBfNDYwIiwic2V4cF9hcmdzXzQ0OCIsImFyZzBfNDQ5IiwicmVzMF80NTAiLCJzZXhwX29mX3QkNyIsImFyZzBfNDY2IiwicmVzMF80NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJiaW5fc2hhcGVfdCQxMSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF80NzgiLCJ0YWdfNDc5Iiwic2V4cF9hcmdzXzQ4NSIsImFyZzBfNDg2IiwicmVzMF80ODciLCJzZXhwX2FyZ3NfNDkwIiwiYXJnMF80OTEiLCJyZXMwXzQ5MiIsImZpZWxkX3NleHBzXzMzOCIsInN1bW1hcnlfMzM5IiwicmVhZG1lXzM0MSIsIndvcmtpbmdfZGlyXzM0MyIsInBhdGhfdG9fZXhlXzM0NSIsImR1cGxpY2F0ZXNfMzQ3IiwiZXh0cmFfMzQ4Iiwic2V4cF8zMzciLCJmaWVsZF9zZXhwc18zNTEiLCJmaWVsZF9uYW1lXzM0OSIsInRhaWxfMzU4IiwiZmllbGRfc2V4cF8zNTAkNCIsImZpZWxkX3NleHBfMzUwIiwieF8zNTkiLCJmaWVsZF9zZXhwXzM1MCQwIiwiZnZhbHVlXzM1MyIsImZpZWxkX3NleHBfMzUwJDEiLCJmdmFsdWVfMzU1IiwiZmllbGRfc2V4cF8zNTAkMiIsImZ2YWx1ZV8zNTQiLCJmaWVsZF9zZXhwXzM1MCQzIiwiZnZhbHVlXzM1MiIsInJlYWRtZV8zNDIiLCJwYXRoX3RvX2V4ZV8zNDYiLCJ3b3JraW5nX2Rpcl8zNDQiLCJzdW1tYXJ5XzM0MCIsInNleHBfYXJnc180ODAiLCJhcmcwXzQ4MSIsInJlczBfNDgyIiwic2V4cF9vZl90JDgiLCJhcmcwXzQ5MyIsInJlczBfNDk0IiwiYXJnMF80OTUiLCJyZXMwXzQ5NiIsImFyZzBfNDk3IiwicGF0aF90b19leGVfMzY5Iiwid29ya2luZ19kaXJfMzY3IiwicmVhZG1lXzM2MyIsInN1bW1hcnlfMzYxIiwiYXJnXzM3MCIsImJuZHNfMzYwIiwiYXJnXzM2OCIsImJuZHNfMzYwJDAiLCJ2XzM2NCIsImFyZ18zNjYiLCJibmRfMzY1IiwiYm5kc18zNjAkMSIsImFyZ18zNjIiLCJibmRzXzM2MCQyIiwicmVzMF80OTgiLCJ0b19sYXRlc3QkMyIsImciLCJvZl9sYXRlc3QkMyIsInRodW5rIiwiYmluX3NoYXBlX3QkMTIiLCJ0X29mX3NleHAkMTAiLCJzZXhwXzUwMyIsInRhZ181MDQiLCJzZXhwX2FyZ3NfNTEwIiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsInNleHBfYXJnc181MTUiLCJhcmcwXzUxNiIsInJlczBfNTE3IiwiZmllbGRfc2V4cHNfMzczIiwic3VtbWFyeV8zNzQiLCJyZWFkbWVfMzc2IiwicGF0aF90b19leGVfMzc4IiwiZHVwbGljYXRlc18zODAiLCJleHRyYV8zODEiLCJzZXhwXzM3MiIsImZpZWxkX3NleHBzXzM4NCIsImZpZWxkX25hbWVfMzgyIiwidGFpbF8zOTAiLCJmaWVsZF9zZXhwXzM4MyQzIiwiZmllbGRfc2V4cF8zODMiLCJ4XzM5MSIsImZpZWxkX3NleHBfMzgzJDAiLCJmdmFsdWVfMzg3IiwiZmllbGRfc2V4cF8zODMkMSIsImZ2YWx1ZV8zODYiLCJmaWVsZF9zZXhwXzM4MyQyIiwiZnZhbHVlXzM4NSIsInJlYWRtZV8zNzciLCJwYXRoX3RvX2V4ZV8zNzkiLCJzdW1tYXJ5XzM3NSIsInNleHBfYXJnc181MDUiLCJhcmcwXzUwNiIsInJlczBfNTA3IiwiZmllbGRfc2V4cHNfMTUzIiwic3VtbWFyeV8xNTQiLCJyZWFkbWVfMTU2IiwidXNhZ2VfMTU4IiwiZmxhZ3NfMTYwIiwiZHVwbGljYXRlc18xNjIiLCJleHRyYV8xNjMiLCJzZXhwXzE1MiIsImZpZWxkX3NleHBzXzE2NiIsImZpZWxkX25hbWVfMTY0IiwidGFpbF8xNzMiLCJmaWVsZF9zZXhwXzE2NSQ0IiwiZmllbGRfc2V4cF8xNjUiLCJmaWVsZF9zZXhwXzE2NSQwIiwiZnZhbHVlXzE2OCIsImZpZWxkX3NleHBfMTY1JDEiLCJmdmFsdWVfMTcwIiwiZmllbGRfc2V4cF8xNjUkMiIsImZ2YWx1ZV8xNjkiLCJmaWVsZF9zZXhwXzE2NSQzIiwiZnZhbHVlXzE2NyIsInJlYWRtZV8xNTciLCJmbGFnc18xNjEiLCJ1c2FnZV8xNTkiLCJzdW1tYXJ5XzE1NSIsInNleHBfb2ZfdCQ5IiwiYXJnMF81MTgiLCJmbGFnc18xODQiLCJ1c2FnZV8xODIiLCJyZWFkbWVfMTc4Iiwic3VtbWFyeV8xNzYiLCJhcmdfMTg1IiwiYm5kc18xNzUiLCJhcmdfMTgzIiwiYm5kc18xNzUkMCIsInZfMTc5IiwiYXJnXzE4MSIsImJuZF8xODAiLCJibmRzXzE3NSQxIiwiYXJnXzE3NyIsImJuZHNfMTc1JDIiLCJyZXMwXzUxOSIsImFyZzBfNTIwIiwicmVzMF81MjEiLCJhcmcwXzUyMiIsInBhdGhfdG9fZXhlXzM5OSIsInJlYWRtZV8zOTUiLCJzdW1tYXJ5XzM5MyIsImFyZ180MDAiLCJibmRzXzM5MiIsInZfMzk2IiwiYXJnXzM5OCIsImJuZF8zOTciLCJibmRzXzM5MiQwIiwiYXJnXzM5NCIsImJuZHNfMzkyJDEiLCJyZXMwXzUyMyIsInRvX2xhdGVzdCQ0IiwiZmxhZ3MiLCJvZl9sYXRlc3QkNCIsImFub25zIiwiYmluX3NoYXBlX3QkMTMiLCJ0X29mX3NleHAkMTEiLCJzZXhwXzUyOCIsInRhZ181MjkiLCJzZXhwX2FyZ3NfNTQwIiwiYXJnMF81NDEiLCJyZXMwXzU0MiIsInNleHBfYXJnc181MzUiLCJhcmcwXzUzNiIsInJlczBfNTM3Iiwic2V4cF9hcmdzXzUzMCIsImFyZzBfNTMxIiwicmVzMF81MzIiLCJzZXhwX29mX3QkMTAiLCJhcmcwXzU0MyIsInJlczBfNTQ0IiwiYXJnMF81NDUiLCJyZXMwXzU0NiIsImFyZzBfNTQ3IiwicmVzMF81NDgiLCJvZl92ZXJzaW9uZWQiLCJncm91cCQxNSIsImJpbl9zaGFwZV90JDE0IiwiY29tcGFyZSQ2IiwiYV81NDkiLCJiXzU1MCIsImFfNTQ5JDAiLCJiXzU1MCQwIiwiYV81NTEiLCJiXzU1MiIsImFfNTUzIiwiYl81NTQiLCJhXzU1NSIsImJfNTU2IiwiYV81NTciLCJiXzU1OCIsImFfNTU5IiwiYl81NjAiLCJhXzU2MSIsImJfNTYyIiwidF9vZl9zZXhwJDEyIiwic2V4cF81NjciLCJ0YWdfNTY4Iiwic2V4cF9hcmdzXzU4OSIsImFyZzBfNTkwIiwicmVzMF81OTEiLCJzZXhwX2FyZ3NfNTg0IiwiYXJnMF81ODUiLCJyZXMwXzU4NiIsInNleHBfYXJnc181NzQiLCJhcmcwXzU3NSIsInJlczBfNTc2Iiwic2V4cF9hcmdzXzU3OSIsImFyZzBfNTgwIiwicmVzMF81ODEiLCJzZXhwX2FyZ3NfNTY5IiwiYXJnMF81NzAiLCJyZXMwXzU3MSIsInNleHBfb2ZfdCQxMSIsImFyZzBfNTkyIiwicmVzMF81OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1IiwiYXJnMF81OTYiLCJyZXMwXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJhcmcwXzYwMCIsInJlczBfNjAxIiwiZ3JvdXAkMTYiLCJiaW5fc2hhcGVfdCQxNSIsImNvbXBhcmUkNyIsImFfNjAyIiwiYl82MDMiLCJhXzYwNCIsImJfNjA1IiwiYV82MDYiLCJiXzYwNyIsInNleHBfb2ZfdCQxMiIsImFyZzBfNjIyIiwicmVzMF82MjMiLCJhcmcwXzYyNCIsInJlczBfNjI1IiwiY29tcGFyZSQ4IiwiYV82MjYiLCJiXzYyNyIsImVudW1lcmF0ZV82MzIiLCJlbnVtZXJhdGVfNjMzIiwiZW51bWVyYXRlXzYzMSIsImVudW1lcmF0ZV82MzQiLCJlbnVtZXJhdGVfNjMwIiwiZW51bWVyYXRlXzYzNCQwIiwiYXRfbW9zdF9vbmNlIiwiYXRfbGVhc3Rfb25jZSIsImF0X21vc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZV9mdW4iLCJhdF9tb3N0X29uY2VfZnVuIiwiYXRfbGVhc3Rfb25jZV9nZW4iLCJhdF9tb3N0X29uY2VfZ2VuIiwic2V4cF9vZl90JDEzIiwiYXRfbW9zdF9vbmNlXzYzOCIsImF0X2xlYXN0X29uY2VfNjM2IiwiYXJnXzYzOSIsImJuZHNfNjM1IiwiYXJnXzYzNyIsImJuZHNfNjM1JDAiLCJ0b19oZWxwX3N0cmluZyIsImRlc2NyaXB0aW9uIiwib2ZfaGVscF9zdHJpbmciLCJ4XzY0MCIsImZsYWdfbmFtZSQwIiwieF82NDEiLCJncm91cCQxNyIsImJpbl9zaGFwZV90JDE2IiwiYmluX3NpemVfdCQ3IiwiYmluX3dyaXRlX3QkNyIsImJpbl93cml0ZXJfdCQ2IiwiYmluX3JlYWRfdCQxNCIsImJpbl9yZWFkX3QkMTUiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl90JDYiLCJjb21wYXJlJDkiLCJhXzY0OCIsImJfNjQ5IiwiYV82NTAiLCJiXzY1MSIsImFsaWFzZXMiLCJkb2MiLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJhbGlhc2VzX2dlbiIsIm1hcF9wb2x5JDAiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxMyIsInNleHBfNjUzIiwiZmllbGRfc2V4cHNfNjU0IiwibmFtZV82NTUiLCJkb2NfNjU3IiwiYWxpYXNlc182NTkiLCJkdXBsaWNhdGVzXzY2MSIsImV4dHJhXzY2MiIsInNleHBfNjUzJDAiLCJmaWVsZF9zZXhwc182NjUiLCJmaWVsZF9uYW1lXzY2MyIsInRhaWxfNjcxIiwiZmllbGRfc2V4cF82NjQkMyIsImZpZWxkX3NleHBfNjY0IiwieF82NzIiLCJmaWVsZF9zZXhwXzY2NCQwIiwiZnZhbHVlXzY2OCIsImZpZWxkX3NleHBfNjY0JDEiLCJmdmFsdWVfNjY3IiwiZmllbGRfc2V4cF82NjQkMiIsImZ2YWx1ZV82NjYiLCJhbGlhc2VzXzY2MCIsImRvY182NTgiLCJuYW1lXzY1NiIsInNleHBfb2ZfdCQxNCIsImFsaWFzZXNfNjc4IiwiZG9jXzY3NiIsIm5hbWVfNjc0IiwiYXJnXzY3OSIsImJuZHNfNjczIiwiYXJnXzY3NyIsImJuZHNfNjczJDAiLCJhcmdfNjc1IiwiYm5kc182NzMkMSIsInBhcnNlX25hbWUiLCJudW1fb2NjdXJyZW5jZXMiLCJyZXF1aXJlc19hcmciLCJoZWxwX3NjcmVlbl9jb21wYXJlIiwid29yZF93cmFwX2FuZF9zdHJpcCIsIndpZHRoIiwiY2h1bmtzIiwid29yZCIsIndvcmRzIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4Iiwic2xhY2siLCJpbmRlbnRfYW5kX25ld2xpbmUiLCJsaHNfcGFkIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImZsYWciLCJmbGFnX25hbWVfd2l0aF9hbGlhc2VzIiwiZG9jdW1lbnRhdGlvbiIsImZsYWdfd2lkdGgiLCJmbGFnX29uX2l0c19vd25fbGluZSIsIndyYXBwZWRfZG9jdW1lbnRhdGlvbiIsImRvY193cmFwcGVkX3Jlc3RfbGluZXMiLCJkb2Nfd3JhcHBlZF9maXJzdF9saW5lIiwid3JhcHBlZF9kb2NfbGluZXMiLCJwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV8iLCJsb29rdXBfZXhwYW5kIiwia2V5X3R5cGUiLCJpc19kYXNoIiwiYWxpc3QkMCIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzY4MCIsIm1hdGNoaW5nX2tleXMiLCJjdXN0b21fcHJpbnRmXzY4MSIsImdyb3VwJDE4IiwiYmluX3NoYXBlX3QkMTciLCJiaW5fc2l6ZV90JDgiLCJiaW5fd3JpdGVfdCQ4IiwiYmluX3dyaXRlcl90JDciLCJiaW5fcmVhZF90JDE2IiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsImNvbXBhcmUkMTAiLCJhXzY4MiIsImJfNjgzIiwiYV82ODQiLCJiXzY4NSIsImFfNjg2IiwiYl82ODciLCJmbGFncyQwIiwiYW5vbnMkMCIsInJlYWRtZSQwIiwic3VtbWFyeSQwIiwibWFrZV9jcmVhdG9yJDEiLCJzdW1tYXJ5X2Z1biIsInJlYWRtZV9mdW4iLCJhbm9uc19mdW4iLCJmbGFnc19mdW4iLCJzdW1tYXJ5X2dlbiIsInJlYWRtZV9nZW4iLCJhbm9uc19nZW4iLCJmbGFnc19nZW4iLCJtYXAkNSIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDYiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJ0X29mX3NleHAkMTQiLCJzZXhwXzY4OSIsImZpZWxkX3NleHBzXzY5MCIsInN1bW1hcnlfNjkxIiwicmVhZG1lXzY5MyIsImFub25zXzY5NSIsImZsYWdzXzY5NyIsImR1cGxpY2F0ZXNfNjk5IiwiZXh0cmFfNzAwIiwic2V4cF82ODkkMCIsImZpZWxkX3NleHBzXzcwMyIsImZpZWxkX25hbWVfNzAxIiwidGFpbF83MTAiLCJmaWVsZF9zZXhwXzcwMiQ0IiwiZmllbGRfc2V4cF83MDIiLCJ4XzcxMSIsImZpZWxkX3NleHBfNzAyJDAiLCJmdmFsdWVfNzA3IiwiZmllbGRfc2V4cF83MDIkMSIsImZ2YWx1ZV83MDYiLCJmaWVsZF9zZXhwXzcwMiQyIiwiZnZhbHVlXzcwNCIsImZpZWxkX3NleHBfNzAyJDMiLCJmdmFsdWVfNzA1IiwidGFnXzYxMyIsInNleHBfYXJnc182MTQiLCJhcmcwXzYxNSIsInJlczBfNjE2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJyZWFkbWVfNjk0IiwiZmxhZ3NfNjk4IiwiYW5vbnNfNjk2Iiwic3VtbWFyeV82OTIiLCJzZXhwX29mX3QkMTUiLCJmbGFnc183MjEiLCJhbm9uc183MTkiLCJyZWFkbWVfNzE1Iiwic3VtbWFyeV83MTMiLCJhcmdfNzIyIiwiYm5kc183MTIiLCJhcmdfNzIwIiwiYm5kc183MTIkMCIsInZfNzE2IiwiYXJnXzcxOCIsImJuZF83MTciLCJibmRzXzcxMiQxIiwiYXJnXzcxNCIsImJuZHNfNzEyJDIiLCJmaW5kX2ZsYWciLCJjaG9pY2VzIiwiZmxhZ19pbmZvIiwiZ2V0X3VzYWdlIiwiZ3JvdXAkMTkiLCJiaW5fc2hhcGVfdCQxOCIsImJpbl9zaXplX3QkOSIsImJpbl93cml0ZV90JDkiLCJiaW5fd3JpdGVyX3QkOCIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZF90JDE5IiwiYmluX3JlYWRlcl90JDgiLCJiaW5fdCQ4IiwiY29tcGFyZSQxMSIsImFfNzI1IiwiYl83MjYiLCJhXzcyNyIsImJfNzI4IiwiYV83MjkiLCJiXzczMCIsImFfNzMxIiwiYl83MzIiLCJ0XzczNCIsInRfNzMzIiwidF83MzYiLCJ0XzczNSIsInJlYWRtZSQxIiwic3VtbWFyeSQxIiwic3ViY29tbWFuZHMkMCIsInJlYWRtZSQyIiwic3VtbWFyeSQyIiwibWFrZV9jcmVhdG9yJDIiLCJzdWJjb21tYW5kc19mdW4iLCJzdWJjb21tYW5kc19nZW4iLCJjcmVhdGUkMiIsIm1hcCQ3IiwiaXRlciQ1IiwiZm9sZCQ1IiwibWFwX3BvbHkkMiIsImZvcl9hbGwkNSIsImV4aXN0cyQ1IiwidG9fbGlzdCQ1IiwiaXRlciQ2IiwiZm9sZCQ2IiwiZm9yX2FsbCQ2IiwiZXhpc3RzJDYiLCJ0b19saXN0JDYiLCJtYXAkOCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMiIsInRfb2Zfc2V4cCQxNSIsIm9mX2FfNzM3Iiwic2V4cF83MzkiLCJmaWVsZF9zZXhwc183NDAiLCJzdW1tYXJ5Xzc0MSIsInJlYWRtZV83NDMiLCJzdWJjb21tYW5kc183NDUiLCJkdXBsaWNhdGVzXzc0NyIsImV4dHJhXzc0OCIsInNleHBfNzM5JDAiLCJmaWVsZF9zZXhwc183NTEiLCJmaWVsZF9uYW1lXzc0OSIsInRhaWxfNzYyIiwiZmllbGRfc2V4cF83NTAkMyIsImZpZWxkX3NleHBfNzUwIiwieF83NjMiLCJmaWVsZF9zZXhwXzc1MCQwIiwiZnZhbHVlXzc2MCIsImZpZWxkX3NleHBfNzUwJDEiLCJzZXhwXzc1NiIsImFyZzFfNzUzIiwiYXJnMF83NTIiLCJyZXMwXzc1NCIsInJlczFfNzU1IiwiZnZhbHVlXzc1OCIsImZpZWxkX3NleHBfNzUwJDIiLCJmdmFsdWVfNzU5IiwicmVhZG1lXzc0NCIsInN1YmNvbW1hbmRzXzc0NiIsInN1bW1hcnlfNzQyIiwic2V4cF9vZl90JDE2Iiwib2ZfYV83NjQiLCJzdWJjb21tYW5kc183NzIiLCJyZWFkbWVfNzY4Iiwic3VtbWFyeV83NjYiLCJibmRzXzc2NSIsImFyZzFfNzc1IiwiYXJnMF83NzQiLCJyZXMwXzc3NiIsInJlczFfNzc3IiwiYXJnXzc3MyIsImJuZHNfNzY1JDAiLCJ2Xzc2OSIsImFyZ183NzEiLCJibmRfNzcwIiwiYm5kc183NjUkMSIsImFyZ183NjciLCJibmRzXzc2NSQyIiwiZmluZF9zdWJjb21tYW5kIiwiZ3JvdXAkMjAiLCJiaW5fc2hhcGVfdCQxOSIsImJpbl9zaXplX3QkMTAiLCJiaW5fd3JpdGVfdCQxMCIsImJpbl93cml0ZXJfdCQ5IiwiYmluX3JlYWRfdCQyMCIsImJpbl9yZWFkX3QkMjEiLCJiaW5fcmVhZGVyX3QkOSIsImJpbl90JDkiLCJjb21wYXJlJDEyIiwiYV83NzgiLCJiXzc3OSIsImFfNzgwIiwiYl83ODEiLCJhXzc4MiIsImJfNzgzIiwiY2hpbGRfc3ViY29tbWFuZCIsInBhdGhfdG9fZXhlIiwid29ya2luZ19kaXIiLCJyZWFkbWUkMyIsInN1bW1hcnkkMyIsImNoaWxkX3N1YmNvbW1hbmQkMCIsInBhdGhfdG9fZXhlJDAiLCJ3b3JraW5nX2RpciQwIiwicmVhZG1lJDQiLCJzdW1tYXJ5JDQiLCJtYWtlX2NyZWF0b3IkMyIsIndvcmtpbmdfZGlyX2Z1biIsInBhdGhfdG9fZXhlX2Z1biIsImNoaWxkX3N1YmNvbW1hbmRfZnVuIiwid29ya2luZ19kaXJfZ2VuIiwicGF0aF90b19leGVfZ2VuIiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMTYiLCJzZXhwXzc4NSIsImZpZWxkX3NleHBzXzc4NiIsInN1bW1hcnlfNzg3IiwicmVhZG1lXzc4OSIsIndvcmtpbmdfZGlyXzc5MSIsInBhdGhfdG9fZXhlXzc5MyIsImNoaWxkX3N1YmNvbW1hbmRfNzk1IiwiZHVwbGljYXRlc183OTciLCJleHRyYV83OTgiLCJzZXhwXzc4NSQwIiwiZmllbGRfc2V4cHNfODAxIiwiZmllbGRfbmFtZV83OTkiLCJ0YWlsXzgwOSIsImZpZWxkX3NleHBfODAwJDUiLCJmaWVsZF9zZXhwXzgwMCIsInhfODEwIiwiZmllbGRfc2V4cF84MDAkMCIsImZ2YWx1ZV84MDQiLCJmaWVsZF9zZXhwXzgwMCQxIiwiZnZhbHVlXzgwNiIsImZpZWxkX3NleHBfODAwJDIiLCJmdmFsdWVfODA1IiwiZmllbGRfc2V4cF84MDAkMyIsImZ2YWx1ZV84MDMiLCJmaWVsZF9zZXhwXzgwMCQ0IiwiZnZhbHVlXzgwMiIsInJlYWRtZV83OTAiLCJjaGlsZF9zdWJjb21tYW5kXzc5NiIsInBhdGhfdG9fZXhlXzc5NCIsIndvcmtpbmdfZGlyXzc5MiIsInN1bW1hcnlfNzg4Iiwic2V4cF9vZl90JDE3IiwiY2hpbGRfc3ViY29tbWFuZF84MjIiLCJwYXRoX3RvX2V4ZV84MjAiLCJ3b3JraW5nX2Rpcl84MTgiLCJyZWFkbWVfODE0Iiwic3VtbWFyeV84MTIiLCJhcmdfODIzIiwiYm5kc184MTEiLCJhcmdfODIxIiwiYm5kc184MTEkMCIsImFyZ184MTkiLCJibmRzXzgxMSQxIiwidl84MTUiLCJhcmdfODE3IiwiYm5kXzgxNiIsImJuZHNfODExJDIiLCJhcmdfODEzIiwiYm5kc184MTEkMyIsImdyb3VwJDIxIiwiYmluX3NoYXBlX3QkMjAiLCJiaW5fc2l6ZV90JDExIiwiYmluX3dyaXRlX3QkMTEiLCJiaW5fd3JpdGVyX3QkMTAiLCJiaW5fcmVhZF90JDIyIiwiYmluX3JlYWRfdCQyMyIsImJpbl9yZWFkZXJfdCQxMCIsImJpbl90JDEwIiwiY29tcGFyZSQxMyIsImFfODI0IiwiYl84MjUiLCJhXzgyNCQwIiwiYl84MjUkMCIsImFfODI2IiwiYl84MjciLCJhXzgyOCIsImJfODI5IiwiYV84MzAiLCJiXzgzMSIsImFfODM0IiwiYV84MzIiLCJiXzgzNSIsImJfODMzIiwidF9vZl9zZXhwJDE3Iiwic2V4cF84NDAiLCJ0YWdfODQxIiwic2V4cF9hcmdzXzg0NyIsImFyZzBfODQ4IiwicmVzMF84NDkiLCJzZXhwX2FyZ3NfODUyIiwiYXJnMV84NTQiLCJhcmcwXzg1MyIsInJlczBfODU1IiwicmVzMV84NTYiLCJzZXhwX2FyZ3NfODQyIiwiYXJnMF84NDMiLCJyZXMwXzg0NCIsInNleHBfb2ZfdCQxOCIsImFyZzBfODU3IiwicmVzMF84NTgiLCJhcmcwXzg1OSIsInJlczBfODYwIiwiYXJnMV84NjIiLCJhcmcwXzg2MSIsInJlczBfODYzIiwicmVzMV84NjQiLCJleHBhbmRlZF9zdWJjb21tYW5kcyIsImV4cGFuZCIsInNleHBfb2ZfdCQxOSIsImFyZzBfODY1IiwicmVzMF84NjYiLCJhcmcwXzg2NyIsInJlczBfODY4IiwiYXJnMF84NjkiLCJyZXMwXzg3MCIsImFyZzBfODcxIiwicmVzMF84NzIiLCJleHRyYWN0aW9uX3ZhciIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJleHBlY3QiLCJleHBlY3QkMCIsImVycm9yX3NvdXJjZV8wMDciLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMxXzAxMSIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwibl9mcm9udCIsIm5fYmFjayIsImZyb250IiwiYmFjayIsInJldl9iYWNrIiwiZnJvbnQkMCIsInJldl9mcm9udCIsImJhY2skMCIsInJhaXNlX2Zyb250X2ludmFyaWFudCIsInJhaXNlX2JhY2tfaW52YXJpYW50IiwicGVla19mcm9udF9leG4iLCJwZWVrX2JhY2tfZXhuIiwiZHJvcF9mcm9udF9leG4iLCJkcm9wX2JhY2tfZXhuIiwib3B0aW9uYWwiLCJwZWVrX2Zyb250IiwicGVla19iYWNrIiwicGVlayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJidWlsZCIsIm9mX2Zvcm1hdCIsInRvX2Zvcm1hdCIsInNldF9hdCIsInNldF9pbnRlcm5hbCIsInNldF9pZl9ub25lIiwic2V0X2V4biIsImdldF9leG4iLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsImRpZSIsImtleV9jcmVhdGUiLCJtdWx0aV9hZGQiLCJzZXRfd2l0aF9kZWZhdWx0IiwicnVuX2FuZF9leGl0IiwiZW52IiwicGFydCIsImNvbXBsZXRpb25zIiwiZXh0cmFfZG9jIiwiY29tcGxldGUiLCJvZl9sYXp5IiwiZXh0cmFfZG9jJDAiLCJob3N0X2FuZF9wb3J0Iiwic2V4cF9jb252IiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJkdXBsaWNhdGVfa2V5cyIsIlMiLCJ1bml2X21hcCIsInZhbGlkX2FyZ3VtZW50c19leHRyYSIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImNvbW1hX3NlcGFyYXRlZCIsImFsbG93X2VtcHR5Iiwic3RyaXBfd2hpdGVzcGFjZSIsInVuaXF1ZV92YWx1ZXMiLCJjb21wbGV0ZV9lbHQiLCJoZCIsInByZWZpeGVzIiwic2Vlbl9hbHJlYWR5IiwiaXNfYWxsb3dlZCIsImNob2ljZSIsImNob2ljZXMkMCIsInN0cmluZyQwIiwicGFyc2UkMCIsImVudW1lcmF0ZV8wMTIiLCJlbnVtZXJhdGVfMDEzIiwiZW51bWVyYXRlXzAxMSIsImVudW1lcmF0ZV8wMTQiLCJlbnVtZXJhdGVfMDEwIiwiZW51bWVyYXRlXzAxNCQwIiwicGFyc2UkMSIsImFjdGlvbiIsImFyZ19kb2MiLCJkb2MkMSIsImFyZ19kb2MkMCIsIndyYXBfaWZfb3B0aW9uYWwiLCJoZWxwIiwiYWxpZ24iLCJhcmdfZmxhZyIsImFyZ190eXBlIiwid3JpdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJ3cml0ZV9vcHRpb24iLCJyZXF1aXJlZF92YWx1ZSIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsIm5vX2FyZ19nZW5lcmFsIiwia2V5X3ZhbHVlIiwiZGVwcmVjYXRlZF9ob29rIiwiYWN0aW9uJDAiLCJub19hcmciLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmdfc29tZSIsImxpc3RlZCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIiLCJxIiwib25lX29yX21vcmVfYXNfbGlzdCIsImVzY2FwZV9nZW5lcmFsIiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsInN1YmNvbW1hbmQiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJyZXBsYWNlX2ZpcnN0IiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsImNvbmNhdCQwIiwiY2RyIiwiY2FyIiwiY2RyJDAiLCJjYXIkMCIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInBhcnNlX21vcmUiLCJmb3JfY29tcGxldGlvbiIsInVwZGF0ZV9lbnYiLCJwYXJzZXIiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibW9yZSQwIiwidGVzdCQwIiwiYW5vbiIsImxvb3AiLCJjb25zdW1lIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsInQzIiwiYTMiLCJ0NCIsImE0Iiwic3RybGVuIiwic3BlY2lhbF9jaGFycyIsImhhc19zcGVjaWFsX2NoYXJzIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI3IiwiYl8wMjgiLCJhXzAzMSIsImJfMDMyIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiY3VzdG9tX3ByaW50Zl8wMzMiLCJjdXN0b21fcHJpbnRmXzAzNCIsInN1YmNvbW1hbmRfY21wX2ZzdCIsInNoYXBlIiwicGF0aF9rZXkiLCJhcmdzX2tleSIsImhlbHBfa2V5IiwiYXBwIiwicGYiLCJweCIsIm1mIiwibXgiLCJyZXR1cm4kMSIsIndyYXAiLCJtYWluIiwib2ZfcGFyYW0iLCJ0b19wYXJhbSIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiYm9vbCQwIiwicGVyY2VudCQwIiwiaG9zdF9hbmRfcG9ydCQwIiwic2V4cF9jb252JDAiLCJzcGVjIiwiZXNjYXBlX2Fub24iLCJmaW5hbF9hbm9uIiwiZnVsbF9mbGFnX3JlcXVpcmVkIiwiYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAiLCJjaGVja19hdmFpbGFibGUiLCJuYW1lX21hdGNoaW5nIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJib3RoIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0X2Jvb2wiLCJwYXNzZWQiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJmJDMiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1IiwiYXJnX25hbWVzIiwicGFyYW0iLCJmbGFnX25hbWVzIiwiYW5vbl9uYW1lcyIsIm5hbWVzX3dpdGhfY29tbWFzIiwidG9fc3RyaW5nJDEiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmUiLCJpZl9ub3RoaW5nX2Nob3NlbiIsInRzJDAiLCJjdXN0b21fcHJpbnRmXzA0MiIsImN1c3RvbV9wcmludGZfMDQzIiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInNoYXBlJDAiLCJzdWJjb21tYW5kX3RvX3NoYXBlIiwiY29tcF9jd29yZCIsInNoYXBlJDEiLCJzZXhwYWJsZV9zaGFwZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljX3NwZWMiLCJmbGFncyQxIiwiYmFzZSQwIiwic3Vic19rZXkiLCJsYXp5X2dyb3VwIiwicHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciIsImJvZHkiLCJwJDAiLCJwJDEiLCJwJDIiLCJvZl9sYXp5JDAiLCJwcm94eV9vZl9zZXhwYWJsZSIsInNleHBhYmxlIiwicGF0aF90b19zdWJjb21tYW5kIiwia2luZCIsImtpbmRfb2Zfc2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMCIsInByb3h5IiwicHJpbnRfdmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsInVudmVyc2lvbmVkIiwiYmFzZSQxIiwibm9ybWFsaXplX3ZlcnNpb25fbGluZXMiLCJkZWZhdWx0X3ZlcnNpb24iLCJkZWZhdWx0X2J1aWxkX2luZm8iLCJyZXByaW50X2J1aWxkX2luZm8iLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsInN0cmluZyQxIiwiaW50JDIiLCJjaGFyJDIiLCJmbG9hdCQyIiwiYm9vbCQxIiwicGVyY2VudCQxIiwiaG9zdF9hbmRfcG9ydCQxIiwic2V4cCQxIiwic2V4cF9jb252JDEiLCJiYXNpYyIsInBhcmFtcyIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsInNoYXBlJDIiLCJnZXRwaWQiLCJjbG9zZSIsImluX2NoYW5uZWxfb2ZfZGVzY3IiLCJ3YWl0IiwiZ2V0ZW52X2FuZF9jbGVhciIsInZhciQwIiwiaGVscF9zZXhwIiwicHJvZyIsImFyZ3YwIiwicHJvZ19zZWFyY2hfcGF0aCIsImNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0ciIsImVudl92YXIiLCJsaXN0JDEiLCJwcm9jZXNzX2luZm8iLCJzdGFydF9yZWFkaW5nIiwiZGVzY3IiLCJpbmZvIiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsInNoYXBlX29mX3Byb3h5Iiwic2hhcGVfb2ZfcHJveHlfa2luZCIsInNoYXBlX29mX2V4ZSIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwYXRoJDEiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsImVudiQxIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQiLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwid2hlbl9wYXJzaW5nX3N1Y2NlZWRzIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0IiwicGFyc2VyJDEiLCJjbWRsaW5lJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwiYWxpYXMiLCJmbGFnJDAiLCJmbGFnJDEiLCJjb21wbGV0aW5nIiwiY21kbGluZSQyIiwiZW52JDIiLCJwYXJzZV9mbGFnczIiLCJlbnYkMyIsInBhcnNlX2ZsYWdzJDAiLCJwYXJ0JDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJleG5fc3RyIiwidmVyYm9zZSIsImVycm9yX21zZyIsImRpZV9zaG93aW5nX2hlbHAiLCJwYXJzZV9ncm91cCIsIm1heWJlX25ld19jb21wX2N3b3JkJDAiLCJyZXNvbHZlIiwic3VicyQwIiwic3ViJDAiLCJib2R5JDAiLCJ0b19vdXRwdXQiLCJyZXN0X29mX3Jlc3QiLCJmaXJzdF9vZl9yZXN0IiwibmV3X3ZhbHVlJDAiLCJuZXdfdmFsdWUiLCJ0aHVuayQwIiwiYXJndiIsImJ1aWxkX2luZm8kMCIsInZlcnNpb24kMCIsInN1cHBvcnRlZF92ZXJzaW9ucyQwIiwicGF0aF90b19zdWJjb21tYW5kJDEiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMiIsImZuYW1lIiwiYXJndl8wIiwiY29tcF9jd29yZCQwIiwiZGVwcmVjYXRlZF9ydW4iLCJpc19oZWxwIiwiaXNfaGVscF9yZWMiLCJpc19oZWxwX3JlY19mbGFncyIsImlzX2V4cGFuZF9kb3RzIiwicGF0aF9zdHJpbmdzIiwiYXJncyQyIiwiYXJncyQzIiwiYXJncyQ0IiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsInR5cGVuYW1lX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJ0X3NleHBfZ3JhbW1hciQyIiwidHlwZW5hbWVfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJjaGVjayQyIiwidG9fc3RyaW5nJDIiLCJwcCQyIiwib2Zfc3RyaW5nJDIiLCJhcmdfdHlwZSQwIiwic2V4cF9hc19zdHJpbmciLCJ2XzAwMSIsInNlcmlhbGl6ZWRfc2V4cCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJ2XzAxMiIsInZfMDEzIiwicmVzMV8wMTciLCJleHBlY3RlZF9iaW5faW8iLCJiaW5hYmxlX20iLCJzZXJpYWxpemVkX2Jpbl9pbyIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJyZXMxXzAyNCIsInZfMDE5IiwicmVzMl8wMjUiLCJhcmcxXzAyOSIsImFyZzBfMDI4Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJyZXZfc2tpcHBlZCIsInN0cmluZ3MkMCIsImNvbnRpbnVlJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwidl8wNDQiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNDgiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwicGVybXV0YXRhdGlvbnMiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsImJsYW5nIiwiY21wX2EkMCIsImNtcF9hJDUiLCJjbXBfYSQxIiwiYV8wMTUiLCJiXzAxNiIsImNtcF9hJDYiLCJhXzAxNyIsImJfMDE4IiwiY21wX2EkMiIsImFfMDE5IiwiYl8wMjAiLCJjbXBfYSQ3IiwiY21wX2EkMyIsImFfMDIzIiwiYl8wMjQiLCJjbXBfYSQ4IiwiYV8wMzMiLCJiXzAzNCIsImNtcF9hJDQiLCJhXzAzNyQwIiwiYl8wMzgkMCIsImFfMDQxIiwiYV8wMzkiLCJiXzA0MiIsImJfMDQwIiwiYV8wNDMiLCJiXzA0NCIsImFfMDQ1IiwiYl8wNDYiLCJhXzA0OSIsImFfMDQ3IiwiYl8wNTAiLCJiXzA0OCIsImFfMDUzIiwiYl8wNTQiLCJhXzA2MyIsImJfMDY0IiwiYV8wNjUiLCJiXzA2NiIsImFfMDY3IiwiYl8wNjgiLCJhXzA2OSIsImJfMDcwIiwiYV8wNzEiLCJiXzA3MiIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidjAkMSIsInYwJDIiLCJ2MCQzIiwic3VidGVybXMiLCJ0MSQxIiwiY29udGFpbnNfbm9fY29uc3RhbnRzIiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5vdCIsImFuZGFsc28iLCJvdGhlciIsInQxYiIsInQxYSIsIm9yZWxzZSIsImlmJDAiLCJvZl9hXzA3MyIsImFyZzFfMDc1IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMF8wODIiLCJyZXMwXzA4MyIsImFyZzJfMDg2IiwiYXJnMV8wODUiLCJhcmcwXzA4NCIsInJlczBfMDg3IiwicmVzMV8wODgiLCJyZXMyXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJnYXRoZXJfY29uanVuY3RzIiwidHMkMSIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJraWxvYnl0ZXMiLCJtZWdhYnl0ZXMiLCJnaWdhYnl0ZXMiLCJ0ZXJhYnl0ZXMiLCJwZXRhYnl0ZXMiLCJleGFieXRlcyIsIndvcmRzX2ludF9leG4iLCJ3b3Jkc19mbG9hdCIsIm9mX2tpbG9ieXRlcyIsIm9mX21lZ2FieXRlcyIsIm9mX2dpZ2FieXRlcyIsIm9mX3RlcmFieXRlcyIsIm9mX3BldGFieXRlcyIsIm9mX2V4YWJ5dGVzIiwib2Zfd29yZHNfaW50Iiwib2Zfd29yZHNfZmxvYXRfZXhuIiwiYmFzZV9zdHIiLCJleHRfY2hhciIsImxhcmdlc3RfbWVhc3VyZSIsInRfYWJzIiwibm9fbWF0Y2giLCJ2YWxfc2V4cCIsInVuaXRfbmFtZSIsImN1c3RvbV9wcmludGZfMDA1IiwiY3VzdG9tX3ByaW50Zl8wMDYiLCJjdXN0b21fcHJpbnRmXzAwNyIsImN1c3RvbV9wcmludGZfMDA4IiwiY3VzdG9tX3ByaW50Zl8wMDkiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDExIiwidG9fc3RyaW5nX3Nob3J0IiwidG9fdW5pdHNfc3RyIiwidG9fdW5pdCIsImZfYWJzIiwiY3VzdG9tX3ByaW50Zl8wMTQiLCJjdXN0b21fcHJpbnRmXzAxNSIsImN1c3RvbV9wcmludGZfMDE2IiwiY3VzdG9tX3ByaW50Zl8wMTciLCJjdXN0b21fcHJpbnRmXzAxOCIsImN1c3RvbV9wcmludGZfMDE5IiwiY3VzdG9tX3ByaW50Zl8wMjAiLCJjdXN0b21fcHJpbnRmXzAyMSIsImN1c3RvbV9wcmludGZfMDIyIiwiY3VzdG9tX3ByaW50Zl8wMjMiLCJjdXN0b21fcHJpbnRmXzAyNCIsImN1c3RvbV9wcmludGZfMDI1IiwiY3VzdG9tX3ByaW50Zl8wMjYiLCJieXRlc19wZXJfd29yZCIsImVycm9yX3NvdXJjZV8wNjkiLCJlcnJvcl9zb3VyY2VfMTY5IiwiZXJyb3Jfc291cmNlXzI1MyIsInYxNiIsInYxNSIsInYxNCIsInYxMyIsInYxMiIsInYxMSIsInYxMCIsInY5IiwidjgiLCJzaXplJDYiLCJzaXplJDciLCJzaXplJDgiLCJzaXplJDkiLCJzaXplJDEwIiwic2l6ZSQxMSIsInNpemUkMTIiLCJzaXplJDEzIiwidl9taW5vcl93b3JkcyIsInZfcHJvbW90ZWRfd29yZHMiLCJ2X21ham9yX3dvcmRzIiwidl9taW5vcl9jb2xsZWN0aW9ucyIsInZfbWFqb3JfY29sbGVjdGlvbnMiLCJ2X2hlYXBfd29yZHMiLCJ2X2hlYXBfY2h1bmtzIiwidl9saXZlX3dvcmRzIiwidl9saXZlX2Jsb2NrcyIsInZfZnJlZV93b3JkcyIsInZfZnJlZV9ibG9ja3MiLCJ2X2xhcmdlc3RfZnJlZSIsInZfZnJhZ21lbnRzIiwidl9jb21wYWN0aW9ucyIsInZfdG9wX2hlYXBfd29yZHMiLCJ2X3N0YWNrX3NpemUiLCJuJDUiLCJuJDYiLCJuJDciLCJuJDgiLCJuJDkiLCJuJDEwIiwibiQxMSIsIm4kMTIiLCJuJDEzIiwiaHN2JDEwIiwiaHN2JDExIiwiaHN2JDEyIiwiaHN2JDEzIiwiaHN2JDE0Iiwic2V4cF8wMTQiLCJmaWVsZF9zZXhwc18wMTUiLCJtaW5vcl93b3Jkc18wMTYiLCJwcm9tb3RlZF93b3Jkc18wMTgiLCJtYWpvcl93b3Jkc18wMjAiLCJtaW5vcl9jb2xsZWN0aW9uc18wMjIiLCJtYWpvcl9jb2xsZWN0aW9uc18wMjQiLCJoZWFwX3dvcmRzXzAyNiIsImhlYXBfY2h1bmtzXzAyOCIsImxpdmVfd29yZHNfMDMwIiwibGl2ZV9ibG9ja3NfMDMyIiwiZnJlZV93b3Jkc18wMzQiLCJmcmVlX2Jsb2Nrc18wMzYiLCJsYXJnZXN0X2ZyZWVfMDM4IiwiZnJhZ21lbnRzXzA0MCIsImNvbXBhY3Rpb25zXzA0MiIsInRvcF9oZWFwX3dvcmRzXzA0NCIsInN0YWNrX3NpemVfMDQ2IiwiZHVwbGljYXRlc18wNDgiLCJleHRyYV8wNDkiLCJpdGVyXzA3MCIsInNleHBfMDE0JDAiLCJmaWVsZF9zZXhwc18wNTIiLCJmaWVsZF9uYW1lXzA1MCIsInRhaWxfMDcxIiwiZmllbGRfc2V4cF8wNTEkMTYiLCJmaWVsZF9zZXhwXzA1MSIsInhfMDcyIiwiZmllbGRfc2V4cF8wNTEkMCIsImZ2YWx1ZV8wNTQiLCJmaWVsZF9zZXhwXzA1MSQxIiwiZnZhbHVlXzA1MyIsImZpZWxkX3NleHBfMDUxJDIiLCJmaWVsZF9zZXhwXzA1MSQzIiwiZnZhbHVlXzA2OCIsImZpZWxkX3NleHBfMDUxJDQiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTEkNSIsImZpZWxkX3NleHBfMDUxJDYiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTEkNyIsImZ2YWx1ZV8wNjEiLCJmaWVsZF9zZXhwXzA1MSQ4IiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDUxJDkiLCJmdmFsdWVfMDU3IiwiZmllbGRfc2V4cF8wNTEkMTAiLCJmdmFsdWVfMDYzIiwiZmllbGRfc2V4cF8wNTEkMTEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTEkMTIiLCJmdmFsdWVfMDU5IiwiZmllbGRfc2V4cF8wNTEkMTMiLCJmdmFsdWVfMDU4IiwiZmllbGRfc2V4cF8wNTEkMTQiLCJmdmFsdWVfMDU2IiwiZmllbGRfc2V4cF8wNTEkMTUiLCJmdmFsdWVfMDU1Iiwic3RhY2tfc2l6ZV8wNDciLCJ0b3BfaGVhcF93b3Jkc18wNDUiLCJjb21wYWN0aW9uc18wNDMiLCJmcmFnbWVudHNfMDQxIiwibGFyZ2VzdF9mcmVlXzAzOSIsImZyZWVfYmxvY2tzXzAzNyIsImZyZWVfd29yZHNfMDM1IiwibGl2ZV9ibG9ja3NfMDMzIiwibGl2ZV93b3Jkc18wMzEiLCJoZWFwX2NodW5rc18wMjkiLCJoZWFwX3dvcmRzXzAyNyIsIm1ham9yX2NvbGxlY3Rpb25zXzAyNSIsIm1pbm9yX2NvbGxlY3Rpb25zXzAyMyIsIm1ham9yX3dvcmRzXzAyMSIsInByb21vdGVkX3dvcmRzXzAxOSIsIm1pbm9yX3dvcmRzXzAxNyIsInN0YWNrX3NpemVfMTA0IiwidG9wX2hlYXBfd29yZHNfMTAyIiwiY29tcGFjdGlvbnNfMTAwIiwiZnJhZ21lbnRzXzA5OCIsImxhcmdlc3RfZnJlZV8wOTYiLCJmcmVlX2Jsb2Nrc18wOTQiLCJmcmVlX3dvcmRzXzA5MiIsImxpdmVfYmxvY2tzXzA5MCIsImxpdmVfd29yZHNfMDg4IiwiaGVhcF9jaHVua3NfMDg2IiwiaGVhcF93b3Jkc18wODQiLCJtYWpvcl9jb2xsZWN0aW9uc18wODIiLCJtaW5vcl9jb2xsZWN0aW9uc18wODAiLCJtYWpvcl93b3Jkc18wNzgiLCJwcm9tb3RlZF93b3Jkc18wNzYiLCJtaW5vcl93b3Jkc18wNzQiLCJibmRzXzA3MyIsImFyZ18xMDMiLCJibmRzXzA3MyQwIiwiYXJnXzEwMSIsImJuZHNfMDczJDEiLCJhcmdfMDk5IiwiYm5kc18wNzMkMiIsImFyZ18wOTciLCJibmRzXzA3MyQzIiwiYXJnXzA5NSIsImJuZHNfMDczJDQiLCJhcmdfMDkzIiwiYm5kc18wNzMkNSIsImFyZ18wOTEiLCJibmRzXzA3MyQ2IiwiYXJnXzA4OSIsImJuZHNfMDczJDciLCJhcmdfMDg3IiwiYm5kc18wNzMkOCIsImFyZ18wODUiLCJibmRzXzA3MyQ5IiwiYXJnXzA4MyIsImJuZHNfMDczJDEwIiwiYXJnXzA4MSIsImJuZHNfMDczJDExIiwiYXJnXzA3OSIsImJuZHNfMDczJDEyIiwiYXJnXzA3NyIsImJuZHNfMDczJDEzIiwiYXJnXzA3NSIsImJuZHNfMDczJDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwiYV8xMDYiLCJiXzEwNyIsIm4kMTQiLCJhXzEwOCIsImJfMTA5IiwiaHN2JDE1Iiwic2V4cF8xMTEiLCJmaWVsZF9zZXhwc18xMTIiLCJtaW5vcl93b3Jkc18xMTMiLCJwcm9tb3RlZF93b3Jkc18xMTUiLCJtYWpvcl93b3Jkc18xMTciLCJtaW5vcl9jb2xsZWN0aW9uc18xMTkiLCJtYWpvcl9jb2xsZWN0aW9uc18xMjEiLCJoZWFwX3dvcmRzXzEyMyIsImhlYXBfY2h1bmtzXzEyNSIsImxpdmVfd29yZHNfMTI3IiwibGl2ZV9ibG9ja3NfMTI5IiwiZnJlZV93b3Jkc18xMzEiLCJmcmVlX2Jsb2Nrc18xMzMiLCJsYXJnZXN0X2ZyZWVfMTM1IiwiZnJhZ21lbnRzXzEzNyIsImNvbXBhY3Rpb25zXzEzOSIsInRvcF9oZWFwX3dvcmRzXzE0MSIsInN0YWNrX3NpemVfMTQzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzE0NSIsImR1cGxpY2F0ZXNfMTQ3IiwiZXh0cmFfMTQ4IiwiaXRlcl8xNzAiLCJzZXhwXzExMSQwIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTUwJDE3IiwiZmllbGRfc2V4cF8xNTAiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTUwJDAiLCJmdmFsdWVfMTU0IiwiZmllbGRfc2V4cF8xNTAkMSIsImZ2YWx1ZV8xNTMiLCJmaWVsZF9zZXhwXzE1MCQyIiwiZmllbGRfc2V4cF8xNTAkMyIsImZpZWxkX3NleHBfMTUwJDQiLCJmdmFsdWVfMTY1IiwiZmllbGRfc2V4cF8xNTAkNSIsImZ2YWx1ZV8xNjYiLCJmaWVsZF9zZXhwXzE1MCQ2IiwiZnZhbHVlXzE2NCIsImZpZWxkX3NleHBfMTUwJDciLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTAkOCIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1MCQ5IiwiZnZhbHVlXzE1NyIsImZpZWxkX3NleHBfMTUwJDEwIiwiZnZhbHVlXzE2MyIsImZpZWxkX3NleHBfMTUwJDExIiwiZnZhbHVlXzE2MiIsImZpZWxkX3NleHBfMTUwJDEyIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTUwJDEzIiwiZnZhbHVlXzE1OCIsImZpZWxkX3NleHBfMTUwJDE0IiwiZnZhbHVlXzE1NiIsImZpZWxkX3NleHBfMTUwJDE1IiwiZnZhbHVlXzE1MiIsImZpZWxkX3NleHBfMTUwJDE2IiwiZnZhbHVlXzE1NSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNDYiLCJzdGFja19zaXplXzE0NCIsInRvcF9oZWFwX3dvcmRzXzE0MiIsImNvbXBhY3Rpb25zXzE0MCIsImZyYWdtZW50c18xMzgiLCJsYXJnZXN0X2ZyZWVfMTM2IiwiZnJlZV9ibG9ja3NfMTM0IiwiZnJlZV93b3Jkc18xMzIiLCJsaXZlX2Jsb2Nrc18xMzAiLCJsaXZlX3dvcmRzXzEyOCIsImhlYXBfY2h1bmtzXzEyNiIsImhlYXBfd29yZHNfMTI0IiwibWFqb3JfY29sbGVjdGlvbnNfMTIyIiwibWlub3JfY29sbGVjdGlvbnNfMTIwIiwibWFqb3Jfd29yZHNfMTE4IiwicHJvbW90ZWRfd29yZHNfMTE2IiwibWlub3Jfd29yZHNfMTE0IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzIwNiIsInN0YWNrX3NpemVfMjA0IiwidG9wX2hlYXBfd29yZHNfMjAyIiwiY29tcGFjdGlvbnNfMjAwIiwiZnJhZ21lbnRzXzE5OCIsImxhcmdlc3RfZnJlZV8xOTYiLCJmcmVlX2Jsb2Nrc18xOTQiLCJmcmVlX3dvcmRzXzE5MiIsImxpdmVfYmxvY2tzXzE5MCIsImxpdmVfd29yZHNfMTg4IiwiaGVhcF9jaHVua3NfMTg2IiwiaGVhcF93b3Jkc18xODQiLCJtYWpvcl9jb2xsZWN0aW9uc18xODIiLCJtaW5vcl9jb2xsZWN0aW9uc18xODAiLCJtYWpvcl93b3Jkc18xNzgiLCJwcm9tb3RlZF93b3Jkc18xNzYiLCJtaW5vcl93b3Jkc18xNzQiLCJhcmdfMjA3IiwiYm5kc18xNzMiLCJhcmdfMjA1IiwiYm5kc18xNzMkMCIsImFyZ18yMDMiLCJibmRzXzE3MyQxIiwiYXJnXzIwMSIsImJuZHNfMTczJDIiLCJhcmdfMTk5IiwiYm5kc18xNzMkMyIsImFyZ18xOTciLCJibmRzXzE3MyQ0IiwiYXJnXzE5NSIsImJuZHNfMTczJDUiLCJhcmdfMTkzIiwiYm5kc18xNzMkNiIsImFyZ18xOTEiLCJibmRzXzE3MyQ3IiwiYXJnXzE4OSIsImJuZHNfMTczJDgiLCJhcmdfMTg3IiwiYm5kc18xNzMkOSIsImJuZHNfMTczJDEwIiwiYm5kc18xNzMkMTEiLCJibmRzXzE3MyQxMiIsImFyZ18xNzkiLCJibmRzXzE3MyQxMyIsImJuZHNfMTczJDE0IiwiYXJnXzE3NSIsImJuZHNfMTczJDE1Iiwidl9taW5vcl9oZWFwX3NpemUiLCJ2X21ham9yX2hlYXBfaW5jcmVtZW50Iiwidl9zcGFjZV9vdmVyaGVhZCIsInZfdmVyYm9zZSIsInZfbWF4X292ZXJoZWFkIiwidl9zdGFja19saW1pdCIsInZfYWxsb2NhdGlvbl9wb2xpY3kiLCJ2X3dpbmRvd19zaXplIiwidl9jdXN0b21fbWFqb3JfcmF0aW8iLCJ2X2N1c3RvbV9taW5vcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX21heF9zaXplIiwiYV8yMDgiLCJiXzIwOSIsImFfMjEwIiwiYl8yMTEiLCJzZXhwXzIxMyIsImZpZWxkX3NleHBzXzIxNCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTUiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yMTciLCJzcGFjZV9vdmVyaGVhZF8yMTkiLCJ2ZXJib3NlXzIyMSIsIm1heF9vdmVyaGVhZF8yMjMiLCJzdGFja19saW1pdF8yMjUiLCJhbGxvY2F0aW9uX3BvbGljeV8yMjciLCJ3aW5kb3dfc2l6ZV8yMjkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMjMxIiwiY3VzdG9tX21pbm9yX3JhdGlvXzIzMyIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzUiLCJkdXBsaWNhdGVzXzIzNyIsImV4dHJhXzIzOCIsIml0ZXJfMjU0Iiwic2V4cF8yMTMkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNTUiLCJmaWVsZF9zZXhwXzI0MCQxMSIsImZpZWxkX3NleHBfMjQwIiwieF8yNTYiLCJmaWVsZF9zZXhwXzI0MCQwIiwiZnZhbHVlXzI0NSIsImZpZWxkX3NleHBfMjQwJDEiLCJmdmFsdWVfMjQ5IiwiZmllbGRfc2V4cF8yNDAkMiIsImZ2YWx1ZV8yNDciLCJmaWVsZF9zZXhwXzI0MCQzIiwiZnZhbHVlXzI1MCIsImZpZWxkX3NleHBfMjQwJDQiLCJmdmFsdWVfMjUyIiwiZmllbGRfc2V4cF8yNDAkNSIsImZ2YWx1ZV8yNDgiLCJmaWVsZF9zZXhwXzI0MCQ2IiwiZnZhbHVlXzI1MSIsImZpZWxkX3NleHBfMjQwJDciLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkOCIsImZ2YWx1ZV8yNDIiLCJmaWVsZF9zZXhwXzI0MCQ5IiwiZnZhbHVlXzI0NCIsImZpZWxkX3NleHBfMjQwJDEwIiwiZnZhbHVlXzI0NiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzYiLCJjdXN0b21fbWlub3JfcmF0aW9fMjM0IiwiY3VzdG9tX21ham9yX3JhdGlvXzIzMiIsIndpbmRvd19zaXplXzIzMCIsImFsbG9jYXRpb25fcG9saWN5XzIyOCIsInN0YWNrX2xpbWl0XzIyNiIsIm1heF9vdmVyaGVhZF8yMjQiLCJ2ZXJib3NlXzIyMiIsInNwYWNlX292ZXJoZWFkXzIyMCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzIxOCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTYiLCJjdXN0b21fbWlub3JfbWF4X3NpemVfMjc4IiwiY3VzdG9tX21pbm9yX3JhdGlvXzI3NiIsImN1c3RvbV9tYWpvcl9yYXRpb18yNzQiLCJ3aW5kb3dfc2l6ZV8yNzIiLCJhbGxvY2F0aW9uX3BvbGljeV8yNzAiLCJzdGFja19saW1pdF8yNjgiLCJtYXhfb3ZlcmhlYWRfMjY2IiwidmVyYm9zZV8yNjQiLCJzcGFjZV9vdmVyaGVhZF8yNjIiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yNjAiLCJtaW5vcl9oZWFwX3NpemVfMjU4IiwiYm5kc18yNTciLCJhcmdfMjc3IiwiYm5kc18yNTckMCIsImFyZ18yNzUiLCJibmRzXzI1NyQxIiwiYXJnXzI3MyIsImJuZHNfMjU3JDIiLCJhcmdfMjcxIiwiYm5kc18yNTckMyIsImFyZ18yNjkiLCJibmRzXzI1NyQ0IiwiYXJnXzI2NyIsImJuZHNfMjU3JDUiLCJhcmdfMjY1IiwiYm5kc18yNTckNiIsImFyZ18yNjMiLCJibmRzXzI1NyQ3IiwiYXJnXzI2MSIsImJuZHNfMjU3JDgiLCJhcmdfMjU5IiwiYm5kc18yNTckOSIsImFfMjgwIiwiYl8yODEiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfMzE1Iiwic3RhY2tfc2l6ZV8zMTMiLCJ0b3BfaGVhcF93b3Jkc18zMTEiLCJjb21wYWN0aW9uc18zMDkiLCJmcmFnbWVudHNfMzA3IiwibGFyZ2VzdF9mcmVlXzMwNSIsImZyZWVfYmxvY2tzXzMwMyIsImZyZWVfd29yZHNfMzAxIiwibGl2ZV9ibG9ja3NfMjk5IiwibGl2ZV93b3Jkc18yOTciLCJoZWFwX2NodW5rc18yOTUiLCJoZWFwX3dvcmRzXzI5MyIsIm1ham9yX2NvbGxlY3Rpb25zXzI5MSIsIm1pbm9yX2NvbGxlY3Rpb25zXzI4OSIsIm1ham9yX3dvcmRzXzI4NyIsInByb21vdGVkX3dvcmRzXzI4NSIsIm1pbm9yX3dvcmRzXzI4MyIsImFyZ18zMTYiLCJibmRzXzI4MiIsImFyZ18zMTQiLCJibmRzXzI4MiQwIiwiYXJnXzMxMiIsImJuZHNfMjgyJDEiLCJhcmdfMzEwIiwiYm5kc18yODIkMiIsImFyZ18zMDgiLCJibmRzXzI4MiQzIiwiYXJnXzMwNiIsImJuZHNfMjgyJDQiLCJhcmdfMzA0IiwiYm5kc18yODIkNSIsImFyZ18zMDIiLCJibmRzXzI4MiQ2IiwiYXJnXzMwMCIsImJuZHNfMjgyJDciLCJhcmdfMjk4IiwiYm5kc18yODIkOCIsImFyZ18yOTYiLCJibmRzXzI4MiQ5IiwiYXJnXzI5NCIsImJuZHNfMjgyJDEwIiwiYXJnXzI5MiIsImJuZHNfMjgyJDExIiwiYXJnXzI5MCIsImJuZHNfMjgyJDEyIiwiYXJnXzI4OCIsImJuZHNfMjgyJDEzIiwiYXJnXzI4NiIsImJuZHNfMjgyJDE0IiwiYXJnXzI4NCIsImJuZHNfMjgyJDE1IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwic3RhY2tfc2l6ZSIsInRvcF9oZWFwX3dvcmRzIiwiY29tcGFjdGlvbnMiLCJmcmFnbWVudHMiLCJsYXJnZXN0X2ZyZWUiLCJmcmVlX2Jsb2NrcyIsImZyZWVfd29yZHMiLCJsaXZlX2Jsb2NrcyIsImxpdmVfd29yZHMiLCJoZWFwX2NodW5rcyIsImhlYXBfd29yZHMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwibWFqb3Jfd29yZHMiLCJwcm9tb3RlZF93b3JkcyIsIm1pbm9yX3dvcmRzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zJDAiLCJzdGFja19zaXplJDAiLCJ0b3BfaGVhcF93b3JkcyQwIiwiY29tcGFjdGlvbnMkMCIsImZyYWdtZW50cyQwIiwibGFyZ2VzdF9mcmVlJDAiLCJmcmVlX2Jsb2NrcyQwIiwiZnJlZV93b3JkcyQwIiwibGl2ZV9ibG9ja3MkMCIsImxpdmVfd29yZHMkMCIsImhlYXBfY2h1bmtzJDAiLCJoZWFwX3dvcmRzJDAiLCJtYWpvcl9jb2xsZWN0aW9ucyQwIiwibWlub3JfY29sbGVjdGlvbnMkMCIsIm1ham9yX3dvcmRzJDAiLCJwcm9tb3RlZF93b3JkcyQwIiwibWlub3Jfd29yZHMkMCIsIm1pbm9yX3dvcmRzX2Z1biIsInByb21vdGVkX3dvcmRzX2Z1biIsIm1ham9yX3dvcmRzX2Z1biIsIm1pbm9yX2NvbGxlY3Rpb25zX2Z1biIsIm1ham9yX2NvbGxlY3Rpb25zX2Z1biIsImhlYXBfd29yZHNfZnVuIiwiaGVhcF9jaHVua3NfZnVuIiwibGl2ZV93b3Jkc19mdW4iLCJsaXZlX2Jsb2Nrc19mdW4iLCJmcmVlX3dvcmRzX2Z1biIsImZyZWVfYmxvY2tzX2Z1biIsImxhcmdlc3RfZnJlZV9mdW4iLCJmcmFnbWVudHNfZnVuIiwiY29tcGFjdGlvbnNfZnVuIiwidG9wX2hlYXBfd29yZHNfZnVuIiwic3RhY2tfc2l6ZV9mdW4iLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZnVuIiwibWlub3Jfd29yZHNfZ2VuIiwicHJvbW90ZWRfd29yZHNfZ2VuIiwibWFqb3Jfd29yZHNfZ2VuIiwibWlub3JfY29sbGVjdGlvbnNfZ2VuIiwibWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiaGVhcF93b3Jkc19nZW4iLCJoZWFwX2NodW5rc19nZW4iLCJsaXZlX3dvcmRzX2dlbiIsImxpdmVfYmxvY2tzX2dlbiIsImZyZWVfd29yZHNfZ2VuIiwiZnJlZV9ibG9ja3NfZ2VuIiwibGFyZ2VzdF9mcmVlX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwiZnJhZ21lbnRzX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiY29tcGFjdGlvbnNfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJ0b3BfaGVhcF93b3Jkc19nZW4iLCJjb21waWxlX2FjYyQxNSIsInN0YWNrX3NpemVfZ2VuIiwiY29tcGlsZV9hY2MkMTYiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiYV8zMTciLCJiXzMxOCIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8zNDAiLCJjdXN0b21fbWlub3JfcmF0aW9fMzM4IiwiY3VzdG9tX21ham9yX3JhdGlvXzMzNiIsIndpbmRvd19zaXplXzMzNCIsImFsbG9jYXRpb25fcG9saWN5XzMzMiIsInN0YWNrX2xpbWl0XzMzMCIsIm1heF9vdmVyaGVhZF8zMjgiLCJ2ZXJib3NlXzMyNiIsInNwYWNlX292ZXJoZWFkXzMyNCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzMyMiIsIm1pbm9yX2hlYXBfc2l6ZV8zMjAiLCJhcmdfMzQxIiwiYm5kc18zMTkiLCJhcmdfMzM5IiwiYm5kc18zMTkkMCIsImFyZ18zMzciLCJibmRzXzMxOSQxIiwiYm5kc18zMTkkMiIsImJuZHNfMzE5JDMiLCJibmRzXzMxOSQ0IiwiYm5kc18zMTkkNSIsImFyZ18zMjciLCJibmRzXzMxOSQ2IiwiYm5kc18zMTkkNyIsImFyZ18zMjMiLCJibmRzXzMxOSQ4IiwiYXJnXzMyMSIsImJuZHNfMzE5JDkiLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJzcGFjZV9vdmVyaGVhZCIsIm1ham9yX2hlYXBfaW5jcmVtZW50IiwibWlub3JfaGVhcF9zaXplIiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWlub3JfaGVhcF9zaXplX2Z1biIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2Z1biIsInNwYWNlX292ZXJoZWFkX2Z1biIsInZlcmJvc2VfZnVuIiwibWF4X292ZXJoZWFkX2Z1biIsInN0YWNrX2xpbWl0X2Z1biIsImFsbG9jYXRpb25fcG9saWN5X2Z1biIsIndpbmRvd19zaXplX2Z1biIsImN1c3RvbV9tYWpvcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZnVuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2Z1biIsIm1pbm9yX2hlYXBfc2l6ZV9nZW4iLCJtYWpvcl9oZWFwX2luY3JlbWVudF9nZW4iLCJzcGFjZV9vdmVyaGVhZF9nZW4iLCJ2ZXJib3NlX2dlbiIsIm1heF9vdmVyaGVhZF9nZW4iLCJzdGFja19saW1pdF9nZW4iLCJhbGxvY2F0aW9uX3BvbGljeV9nZW4iLCJ3aW5kb3dfc2l6ZV9nZW4iLCJjdXN0b21fbWFqb3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX3JhdGlvX2dlbiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV9nZW4iLCJlcXVhbCQ1IiwidHVuZSIsImxvZ2dlciIsIm9sZF9jb250cm9sX3BhcmFtcyIsImZpZWxkIiwib2xkX3ZhbHVlIiwibmV3X2NvbnRyb2xfcGFyYW1zIiwiZGlzYWJsZV9jb21wYWN0aW9uIiwicG9saWN5Iiwia2VlcF9hbGl2ZSIsIm8iLCJwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWwiLCJtZWFzdXJlX2ludGVybmFsIiwib25fcmVzdWx0IiwibWlub3Jfd29yZHNfYmVmb3JlIiwibWFqb3Jfd29yZHNfYmVmb3JlIiwibWlub3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hZnRlciIsIm1ham9yX3dvcmRzX2FsbG9jYXRlZCIsIm1pbm9yX3dvcmRzX2FsbG9jYXRlZCIsImlzX3plcm9fYWxsb2MiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMzQ5IiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzM0NyIsImFyZ18zNTAiLCJibmRzXzM0NiIsImFyZ18zNDgiLCJibmRzXzM0NiQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzM1NiIsImlzX21ham9yXzM1NCIsInNpemVfaW5fd29yZHNfMzUyIiwiYXJnXzM1NyIsImJuZHNfMzUxIiwiYXJnXzM1NSIsImJuZHNfMzUxJDAiLCJhcmdfMzUzIiwiYm5kc18zNTEkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImJhY2t0cmFjZSIsImJhY2t0cmFjZSQwIiwiaW5mbyQwIiwidHJhY2tlciIsImFkZF9maW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmaW5hbGl6ZV9yZWxlYXNlIiwidG9fc3RhYmxlX2Zvcm1hdCIsIm9mX3N0YWJsZV9mb3JtYXQiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwiY2FuX3NlbmRfdG8iLCJvZl9zeXN0ZW1faW50Iiwic2VuZCIsInNlbmRfZXhuIiwic2VuZF9pIiwic2V4cF9vZl9waWRfc3BlYyIsInNpZ3BlbmRpbmciLCJzaWdwcm9jbWFzayIsInNpZ3N1c3BlbmQiLCJ0b19zeXN0ZW1faW50Iiwic2lnbmFsIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJwcmludCIsImNhdGNoJDAiLCJwcmludF9iYWNrdHJhY2UiLCJnZXRfYmFja3RyYWNlIiwicmVjb3JkX2JhY2t0cmFjZSIsImJhY2t0cmFjZV9zdGF0dXMiLCJjYXB0dXJlIiwiZ2VuZXJhbCIsImhhc2hhYmxlJDEiLCJjYWNoZV9zaXplX2JvdW5kIiwibWF4X2NhY2hlX3NpemUiLCJjYWNoZSQwIiwiY2FjaGUiLCJyZWFsbHlfY2FsbF9mIiwiZl9vbmVzdGVwIiwibWVtb2l6ZWQiLCJvZl9jb21wYXJhYmxlIiwidiQxIiwiaW5pdGlhbF9sZW5ndGgiLCJuZXZlcl9zaHJpbmsiLCJuZXZlcl9zaHJpbmskMCIsImluaXRpYWxfbGVuZ3RoJDAiLCJhcnJfbGVuZ3RoIiwiYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfIiwiYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lIiwiYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtIiwiYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wIiwiY2hlY2tlZCIsImFwcGFyZW50X2Zyb250X2luZGV4IiwiYXBwYXJlbnRfYmFja19pbmRleCIsImFwcGFyZW50X2Zyb250IiwiYXBwYXJlbnRfYmFjayIsImFjdHVhbF9mcm9udCIsImFjdHVhbF9iYWNrIiwiYXBwYXJlbnRfaSIsInJlYWxfaSIsInN0b3BfcG9zIiwiYXBwYXJlbnRfaSQwIiwicmVhbF9pJDAiLCJyZWFsX2kkMSIsImFwcGFyZW50X2kkMSIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiaXRlcmlfaW50ZXJuYWwiLCJuZXdfYXJyIiwib2xkX2FyciIsImJyZWFrX3BvcyIsIm1heWJlX3Nocmlua191bmRlcmx5aW5nIiwiZ3Jvd191bmRlcmx5aW5nIiwicGVla19mcm9udF9ub25lbXB0eSIsInBlZWtfYmFja19ub25lbXB0eSIsImRlcXVldWVfZnJvbnRfbm9uZW1wdHkiLCJkZXF1ZXVlX2JhY2tfbm9uZW1wdHkiLCJkcm9wX2dlbiIsImFzc2VydF9ub3RfZW1wdHkiLCJ0cnVlX2luZGV4X2V4biIsImlfZnJvbV96ZXJvIiwidHJ1ZV9pIiwiZ2V0X29wdCIsImJhY2tfaW5kZXhfZXhuIiwiZnJvbnRfaW5kZXhfZXhuIiwiZ2V0JDAiLCJ1bnRyYW5zbGF0ZWRfaSIsImVwcmludCIsImVwcmludHMiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwiYXJnMV8wMDYiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsImNvbmNhdF9xdW90ZWQiLCJzcGxpdF9jb21tYW5kIiwiYWRkX3VuaXQiLCJ1bnRpbF9lbXB0eSIsImJzdHJfMDAyIiwicG9zXzAwNCIsImxlbl8wMDYiLCJpbml0XzAwOCIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwicmVzaXplIiwibWluX2xlbiIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW50ZXJuYWwiLCJic3RyIiwiY29udGVudHNfYnl0ZXMiLCJiaWdfY29udGVudHMiLCJ2b2xhdGlsZV9jb250ZW50cyIsImFkZF9jaGFyIiwicmVzZXQiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3BvcyIsImFkZF9zdWJieXRlcyIsImFkZF9iaWdzdHJpbmciLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJ1Zl9kc3QiLCJidWZfc3JjIiwiYWRkX2Jpbl9wcm90IiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwiaSQ0IiwicHJldmlvdXMkMCIsImkkNSIsIm9wZW5pbmciLCJsaW0kMCIsImkkMiIsImkkMyIsIm5ld19zdGFydCIsImskMiIsImNsb3NpbmciLCJsaW0iLCJpJDEiLCJuZXh0X2kiLCJpJDYiLCJpJDciLCJpJDgiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwidl9pbmRleCIsInZfbWluX2luZGV4Iiwidl9tYXhfaW5kZXgiLCJhcmc1XzAwOSIsImFyZzRfMDA4IiwiYXJnM18wMDciLCJhcmcyXzAwNiIsInJlczJfMDEyIiwicmVzM18wMTMiLCJyZXM0XzAxNCIsInJlczVfMDE1IiwiYXJnNV8wMjMiLCJhcmc0XzAyMiIsImFyZzNfMDIxIiwiYXJnMl8wMjAiLCJhcmcxXzAxOSIsImFyZzBfMDE4IiwicmVzNV8wMjkiLCJsYWJlbCIsImNyZWF0ZV9hbGwiLCJtYXhfaW5kZXgiLCJtaW5faW5kZXgiLCJkb2VzX3JhaXNlIiwic3ltYm9sJDE4IiwiaGFuZGxlcnMiLCJrZXkiLCJpbnAiLCJjYWxsYmFjayIsInZhbHVlIiwiaW5qZWN0IiwidiIsImNhbGxlZCIsImNhbGxiYWNrJDAiLCJhIiwiaGFuZGxlIiwicyIsInByaW50X3MiLCJOZXZlciIsInJldHVybiQwIiwiYmluZCIsInQiLCJmIiwib2ZfZnVuIiwibGF6eSIsIm1hcCIsImV2YWwkMCIsInQkMCIsInQkMSIsImwiLCJmJDAiLCJ0JDIiLCJjYWxsYmFjayQzIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDQiLCJjYWxsYmFjayQyIiwiaGFuZGxlJDAiLCJoYW5kbGUkMSIsIm9uX3Jlc3BvbnNlIiwib2Zfc3luY19mdW4iLCJtYWtlIiwicmVxdWVzdCIsInJlc3BvbmRfdG8iLCJyZXNwb25zZSIsIm1ha2UkMCIsImV2YWx1YXRvciIsImNyZWF0ZSIsInVwb24iLCJoYW5kbGVyIiwieCIsImZpbGxfaWZfZW1wdHkiLCJwZWVrIiwiaGFuZGxlJDIiLCJvZl9zdmFyX2Z1biIsImNyZWF0ZSQwIiwicXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIiwicXVlcnkiLCJtYXliZV9yZXNwb25kIiwicmVzcCIsIm9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIiLCJxcnQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1MiIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyOCIsImVycm9yX3NvdXJjZV8xNjEiLCJlcnJvcl9zb3VyY2VfMTkzIiwiZXJyb3Jfc291cmNlXzI0MSIsImVycm9yX3NvdXJjZV8yNDMiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwic2V4cF8wMzMiLCJmaWVsZF9zZXhwc18wMzQiLCJyXzAzNSIsImdfMDM3IiwiYl8wMzkiLCJhXzA0MSIsImR1cGxpY2F0ZXNfMDQzIiwiZXh0cmFfMDQ0Iiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0NyIsImZpZWxkX25hbWVfMDQ1IiwidGFpbF8wNTQiLCJmaWVsZF9zZXhwXzA0NiQ0IiwiZmllbGRfc2V4cF8wNDYiLCJ4XzA1NSIsImZpZWxkX3NleHBfMDQ2JDAiLCJmdmFsdWVfMDUxIiwiZmllbGRfc2V4cF8wNDYkMSIsImZ2YWx1ZV8wNTAiLCJmaWVsZF9zZXhwXzA0NiQyIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDQ4IiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJzZXhwX29mX3QkMCIsImFfMDYzIiwiYl8wNjEiLCJnXzA1OSIsInJfMDU3IiwiYXJnXzA2NCIsImJuZHNfMDU2IiwiYXJnXzA2MiIsImJuZHNfMDU2JDAiLCJhcmdfMDYwIiwiYm5kc18wNTYkMSIsImFyZ18wNTgiLCJibmRzXzA1NiQyIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2NCIsInYzIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QkMCIsInBvcyQxIiwicG9zJDIiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsInZfciIsInZfZyIsInZfYiIsInZfYSIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDY1IiwiYl8wNjYiLCJuJDAiLCJuJDEiLCJhXzA2NyIsImJfMDY4IiwiZyIsImEiLCJ0X29mX3NleHAkMSIsInNleHBfMDcwIiwiZmllbGRfc2V4cHNfMDcxIiwiaF8wNzIiLCJzXzA3NCIsImxfMDc2IiwiYV8wNzgiLCJkdXBsaWNhdGVzXzA4MCIsImV4dHJhXzA4MSIsInNleHBfMDcwJDAiLCJmaWVsZF9zZXhwc18wODQiLCJmaWVsZF9uYW1lXzA4MiIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODMkNCIsImZpZWxkX3NleHBfMDgzIiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4MyQwIiwiZnZhbHVlXzA4NyIsImZpZWxkX3NleHBfMDgzJDEiLCJmdmFsdWVfMDg2IiwiZmllbGRfc2V4cF8wODMkMiIsImZ2YWx1ZV8wODgiLCJmaWVsZF9zZXhwXzA4MyQzIiwiZnZhbHVlXzA4NSIsImFfMDc5IiwibF8wNzciLCJzXzA3NSIsImhfMDczIiwic2V4cF9vZl90JDEiLCJhXzEwMCIsImxfMDk4Iiwic18wOTYiLCJoXzA5NCIsImFyZ18xMDEiLCJibmRzXzA5MyIsImFyZ18wOTkiLCJibmRzXzA5MyQwIiwiYXJnXzA5NyIsImJuZHNfMDkzJDEiLCJhcmdfMDk1IiwiYm5kc18wOTMkMiIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl93cml0ZXJfdCQxIiwiYmluX3JlYWRfdCQzIiwiYmluX3JlYWRfdCQ0Iiwidl9oIiwidl9zIiwidl9sIiwiYmluX3JlYWRlcl90JDEiLCJiaW5fdCQxIiwiY29tcGFyZSQxIiwiYV8xMDIiLCJiXzEwMyIsImFfMTA0IiwiYl8xMDUiLCJjcmVhdGUkMCIsImgiLCJsIiwidF9vZl9zZXhwJDIiLCJzZXhwXzEwOSIsImF0b21fMTA3Iiwic2V4cF9hcmdzXzExMCIsImF0b21fMTA3JDAiLCJhcmcwXzEyMiIsInJlczBfMTIzIiwiYXJnMF8xMTYiLCJyZXMwXzExNyIsImFyZzBfMTE5IiwicmVzMF8xMjAiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMjUiLCJyZXMwXzEyNiIsInRfb2Zfc2V4cCQzIiwic2V4cF8xMjciLCJzZXhwX29mX3QkMiIsInZfMTM0Iiwidl8xMzMiLCJ2XzEyOSIsInZfMTMxIiwidl8xMzAiLCJ2XzEzMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMTM1IiwiYl8xMzYiLCJyaWdodF8xNDYiLCJsZWZ0XzE0NSIsInJpZ2h0XzEzOCIsImxlZnRfMTM3IiwicmlnaHRfMTQyIiwibGVmdF8xNDEiLCJyaWdodF8xNDAiLCJsZWZ0XzEzOSIsInJpZ2h0XzE0NCIsImxlZnRfMTQzIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTU2IiwiYXRvbV8xNTQiLCJzZXhwX2FyZ3NfMTU3IiwiYXRvbV8xNTQkMCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE2NiIsInJlczBfMTY3IiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcwXzE2MyIsInJlczBfMTY0IiwiYXJnMF8xNTkiLCJyZXMwXzE2MCIsImFyZzBfMTg3IiwicmVzMF8xODgiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiYXJnMF8xNzgiLCJyZXMwXzE3OSIsImFyZzBfMTc1IiwicmVzMF8xNzYiLCJhcmcwXzE3MiIsInJlczBfMTczIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE5MiIsInNleHBfb2ZfdCQzIiwidl8yMDUiLCJ2XzIwMyIsInZfMjAxIiwidl8xOTgiLCJ2XzE5NiIsInZfMTk0Iiwidl8yMDQiLCJ2XzIwMiIsInZfMjAwIiwidl8xOTciLCJ2XzE5NSIsInZfMTk5IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzIwNiIsImJfMjA3IiwicmlnaHRfMjE3IiwibGVmdF8yMTYiLCJyaWdodF8yMTMiLCJsZWZ0XzIxMiIsInJpZ2h0XzIwOSIsImxlZnRfMjA4IiwicmlnaHRfMjI5IiwibGVmdF8yMjgiLCJyaWdodF8yMjciLCJsZWZ0XzIyNiIsInJpZ2h0XzIyMyIsImxlZnRfMjIyIiwicmlnaHRfMjI1IiwibGVmdF8yMjQiLCJyaWdodF8yMjEiLCJsZWZ0XzIyMCIsInJpZ2h0XzIxNSIsImxlZnRfMjE0IiwicmlnaHRfMjExIiwibGVmdF8yMTAiLCJyaWdodF8yMTkiLCJsZWZ0XzIxOCIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMjMyIiwiYl8yMzMiLCJ0X29mX3NleHAkNiIsInNleHBfMjM5IiwiYXRvbV8yMzciLCJhdG9tXzIzNyQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzI0MiIsInNleHBfb2ZfdCQ0Iiwidl8yNDQiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiaXNfZW1wdHkiLCJlbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsIndpZHRoIiwibWluX3dpZHRoIiwibWF4X3dpZHRoIiwiaGVpZ2h0IiwibWluX2hlaWdodCIsIm1heF9oZWlnaHQiLCJwYWRkaW5nX3RvcCIsInBhZGRpbmdfYm90dG9tIiwicGFkZGluZ19sZWZ0IiwicGFkZGluZ19yaWdodCIsInBhZGRpbmciLCJ1bmlmb3JtX3BhZGRpbmciLCJtYXJnaW5fdG9wIiwibWFyZ2luX2JvdHRvbSIsIm1hcmdpbl9sZWZ0IiwibWFyZ2luX3JpZ2h0IiwibWFyZ2luIiwidW5pZm9ybV9tYXJnaW4iLCJjb25jYXQydiIsImNvbmNhdDN2IiwiYm9yZGVyX3ZhbHVlIiwic3R5bGUkMCIsIndpZHRoJDAiLCJjb2xvciQwIiwiY3JlYXRlX2JvcmRlciIsInNpZGUiLCJib3JkZXJfdG9wIiwiYm9yZGVyX2JvdHRvbSIsImJvcmRlcl9sZWZ0IiwiYm9yZGVyX3JpZ2h0IiwiYm9yZGVyIiwib3V0bGluZSIsImJvcmRlcl9jb2xsYXBzZSIsImJvcmRlcl9zcGFjaW5nIiwiYm9yZGVyX3JhZGl1cyIsInRleHRfZGVjb3JhdGlvbiIsImxpbmUiLCJsaW5lJDAiLCJpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIiwiZmxleF9jb250YWluZXIiLCJvcHQiLCJhbGlnbl9pdGVtcyIsImp1c3RpZnlfY29udGVudCIsInN0aCIsImlubGluZSIsInN0aCQwIiwic3RoJDEiLCJ3cmFwIiwiZGlyZWN0aW9uJDAiLCJ3cmFwJDAiLCJhbGlnbl9pdGVtcyQwIiwianVzdGlmeV9jb250ZW50JDAiLCJmbGV4X2l0ZW0iLCJvcmRlciIsImdyb3ciLCJiYXNpcyIsInNocmluayIsIm9yZGVyJDAiLCJiYXNpcyQwIiwiZmxleCIsImFsaWduX3NlbGYiLCJyZXNpemUiLCJ2YWx1ZSQwIiwiYW5pbWF0aW9uIiwiZHVyYXRpb24iLCJkZWxheSIsImZpbGxfbW9kZSIsIml0ZXJfY291bnQiLCJ0aW1pbmdfZnVuY3Rpb24iLCJzcGFuX3RvX3N0cmluZyIsImQiLCJmaWxsX21vZGUkMCIsInVzZXJfc2VsZWN0IiwiY3NzIiwiczIiLCJ4IiwidHlwZV9vZiIsIngiLCJpbnN0YW5jZV9vZiIsImNvbnN0ciIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwiZ2xvYmFsIiwiYXJyYXlfbWFrZSIsIm4iLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9vZl9qc19mcm9tIiwiZiIsIm9ianMiLCJzdGFydCIsImkiLCJhcnJheV9vZl9qcyIsImFycmF5X3RvX2pzIiwiYXJyIiwiYSIsImxpc3Rfb2ZfanNfZnJvbSIsImxpc3Rfb2ZfanMiLCJsaXN0X3RvX2pzIiwibCIsIm9wdGlvbl9vZl9qcyIsIm9wdGlvbl90b19qcyIsInVuaXRfdG9fanMiLCJ1bml0X29mX2pzIiwic2VsZl8xIiwiaGFzX3Byb3BlcnR5IiwibyIsImVtcHR5X29iaiIsIml0ZXJfcHJvcGVydGllcyIsImFwcGx5X2FyciIsImNhbGxfYXJyIiwicyIsImlzX251bGwiLCJvYmpfdHlwZSIsInRfdG9fanMiLCJ0X29mX2pzIiwidF90b19qcyQwIiwidF9vZl9qcyQwIiwidF90b19qcyQxIiwidF9vZl9qcyQxIiwidF90b19qcyQyIiwidF9vZl9qcyQyIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInRvX2pzX3N0cmluZyIsInZhbHVlIiwidG9fanNfc3RyaW5nX2ZpeGVkIiwiZGlnaXRzIiwidG9fanNfc3RyaW5nX3ByZWNpc2lvbiIsInRvX2pzX3N0cmluZ19leHBvbmVudGlhbCIsInRvX3N0cmluZyIsInRvX3N0cmluZ19maXhlZCIsInRvX3N0cmluZ19wcmVjaXNpb24iLCJ0b19zdHJpbmdfZXhwb25lbnRpYWwiLCJwcmludCIsImYiLCJ2aXNpYmlsaXR5X2hhbmRsZXJzIiwic2VxdWVuY2VfYXNfc2libGluZyIsImxlZnQiLCJ1bmxlc3Nfc3RvcHBlZCIsImNvbnRhaW5zX3N0b3AiLCJlcyIsImN1cnJlbnRfZG9tX2V2ZW50IiwiaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIiwiaGFuZGxlIiwiZG9tX2V2ZW50IiwiZXZlbnQiLCJvbGQiLCJzZXhwX29mX3QiLCJ0eXBlX2lkIiwiZ2VuZXJpY19ob29rIiwicGFjayIsImlkIiwiZGVzdHJveSIsInVwZGF0ZSIsImluaXQiLCJpbnB1dF9pZCIsImlucHV0IiwiaW5pdCQwIiwidXBkYXRlJDAiLCJkZXN0cm95JDAiLCJnZW5lcmljX2hvb2skMCIsImV4dHJhIiwiY29tYmluZSIsInJpZ2h0IiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJlbGVtZW50Iiwic3RhdGUiLCJhbmltYXRpb25faWQiLCJvbGRfaW5wdXQiLCJjcmVhdGUiLCJjb21iaW5lX2lucHV0cyIsInNldCIsIng3IiwieDUiLCJ4NiIsImdldCIsIngxMSIsIngxMCIsImRlbGV0ZSQwIiwieDE2IiwieDE1IiwidF9vZl9qcyIsIngiLCJ0X3RvX2pzIiwidF9vZl9qcyQwIiwidF90b19qcyQwIiwic2V0X3Byb3BlcnR5IiwiaGFzX3Byb3BlcnR5IiwiaGFzX2F0dHJpYnV0ZSIsInQiLCJuYW1lIiwic2V0X2F0dHJpYnV0ZSIsInRfb2ZfanMkMSIsInRfdG9fanMkMSIsImlzX2VtcHR5IiwiZl9pZCIsImlkX3NleHAiLCJjcmVhdGUkMSIsImluZm8iLCJvcHQiLCJzdGgiLCJzdGgkMCIsInMiLCJlbHQiLCJkb21fbm9kZSIsInMwIiwicHJldl9zdGF0ZSIsImRvbV9ub2RlJDAiLCJlbXB0eSIsInJoYW5kbGVyIiwieF8wMDIiLCJsaGFuZGxlciIsInhfMDAxIiwiY3JlYXRlX2Zsb2F0IiwicHJvcGVydHkiLCJzdHJpbmdfcHJvcGVydHkiLCJib29sX3Byb3BlcnR5Iiwic3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MiLCJjcmVhdGVfaG9vayIsImhvb2siLCJtYW55IiwiYXR0cnMiLCJtYW55X3dpdGhvdXRfbWVyZ2UiLCJjb21iaW5lJDAiLCJ3YXJuaW5nX2NvdW50IiwiY3VycmVudCIsIndhcm5fcyIsInF1b3RhIiwid2FybmluZ19jb3VudCQwIiwicmVzZXRfd2FybmluZ19jb3VudCIsImNvbWJpbmluZ19tYXBfYWRkIiwibWFwIiwia2V5IiwiZXhpc3RpbmdfdmFsdWUiLCJlbXB0eV9tZXJnZSIsInN0eWxlIiwiY3NzIiwidmFsaWRfY2xhc3NfbmFtZSIsImludmFsaWQiLCJjbGFzcyQwIiwiY2xhc3NuYW1lIiwiY2xhc3NlcyIsImNsYXNzZXMkMCIsImNsYXNzbmFtZXMiLCJocmVmIiwiciIsInRhcmdldCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsImhpZGRlbiIsInJlYWRvbmx5IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImZvciQwIiwidHlwZSIsInZhbHVlX3Byb3AiLCJ0YWJpbmRleCIsInRpdGxlIiwic3JjIiwibWluIiwibWF4IiwiY29sc3BhbiIsInJvd3NwYW4iLCJkcmFnZ2FibGUiLCJiIiwiY3JlYXRlJDAiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwiY2xpcGJvYXJkIiwiZHJhZyIsInBvaW50ZXIiLCJhbmltYXRpb24iLCJvbiIsImhhbmRsZXIiLCJvbl9mb2N1cyIsIm9uX2JsdXIiLCJvbl9jbGljayIsIm9uX2NvbnRleHRtZW51Iiwib25fZG91YmxlX2NsaWNrIiwib25fZHJhZyIsIm9uX2RyYWdzdGFydCIsIm9uX2RyYWdlbmQiLCJvbl9kcmFnZW50ZXIiLCJvbl9kcmFnbGVhdmUiLCJvbl9kcmFnb3ZlciIsIm9uX2Ryb3AiLCJvbl9tb3VzZW1vdmUiLCJvbl9tb3VzZXVwIiwib25fbW91c2Vkb3duIiwib25fbW91c2VlbnRlciIsIm9uX21vdXNlbGVhdmUiLCJvbl9tb3VzZW92ZXIiLCJvbl9tb3VzZW91dCIsIm9uX2tleXVwIiwib25fa2V5cHJlc3MiLCJvbl9rZXlkb3duIiwib25fc2Nyb2xsIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fY29weSIsIm9uX2N1dCIsIm9uX3Bhc3RlIiwib25fcmVzZXQiLCJvbl9hbmltYXRpb25lbmQiLCJjb25zdF9pZ25vcmUiLCJydW5fY29lcmNpb24iLCJjb2VyY2lvbiIsInByZXYiLCJvbl9pbnB1dF9ldmVudCIsInRleHQiLCJvbl9jaGFuZ2UiLCJvbl9pbnB1dCIsInRvX3JhdyIsImF0dHIiLCJhdHRyc19vYmoiLCJ0YWtlX3NlY29uZF9zdHlsZXMiLCJmaXJzdCIsInNlY29uZCIsInRha2Vfc2Vjb25kX2NsYXNzZXMiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm5hbWUkMCIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwiZmlsdGVyX2J5X2tpbmQiLCJhIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJtb3VzZV91cF90eXBlX2lkIiwibW91c2VfbW92ZV90eXBlX2lkIiwicmVzMV8wMDkiLCJ0YWciLCJ3aXRoX2tleSIsIm1hcF9hdHRycyIsInJhd19hdHRycyIsImFkZF9jbGFzc2VzIiwiY2hpbGRyZW4iLCJ3Iiwia2luZCIsImNoaWxkcmVuX3JhdyIsIm90aGVyIiwiZWxlbWVudF9leHBlcnQiLCJ3aWRnZXQiLCJjcmVhdGVfY2hpbGRsZXNzIiwiY3JlYXRlX3N2ZyIsIm5vbmUiLCJ0ZXh0ZiIsImZvcm1hdCIsIndpZGdldF9vZl9tb2R1bGUiLCJtIiwiYXJnMF8wMDYiLCJzdGF0ZV8wMDQiLCJpbnB1dF8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsInJlczBfMDA4IiwicHJldl9pbnB1dCIsImVsZW1lbnQkMCIsInN0YXRlJDAiLCJpIiwidG9fZG9tIiwiaW5uZXJfaHRtbCIsImNvbnRlbnQiLCJidWlsZF9zZXhwIiwiZGVidWciLCJpbm5lcl9odG1sX3N2ZyIsImlubmVyX2h0bWwkMCIsImJvZHkiLCJidXR0b24iLCJjb2RlIiwiZGl2IiwibWFpbiIsImZpZWxkc2V0IiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZGVyIiwiaHRtbCIsInRleHRhcmVhIiwic2VsZWN0Iiwib3B0aW9uIiwibGFiZWwiLCJsaSIsInAiLCJwcmUiLCJzZWN0aW9uIiwic3BhbiIsInN0cm9uZyIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsInByZXZpb3VzIiwiYXBwbHkiLCJjcmVhdGUkMiIsImNyZWF0ZV9zdmckMCIsImhlcmUiLCJlcnJvcl9zb3VyY2VfMDA0IiwidF9vZl9zZXhwIiwic2V4cF9vZl90IiwidmFsaWRhdGUiLCJ0IiwiZXF1YWwiLCJ0MSIsInQyIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsInNleHBfb2ZfdCQxIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInQxIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInNleHBfb2ZfdCIsInZfMDA2Iiwic2xvdHNfcGVyX3R1cGxlXzAwMiIsImFyZ18wMDMiLCJibmRzXzAwMSIsInNleHBfb2ZfdCQwIiwib2ZfdHVwbGVfMDA3Iiwib2ZfdmFyaWFudF8wMDgiLCJzbG90c19wZXJfdHVwbGUiLCJuIiwic2V4cF9vZl90MSIsIm9mX2EwXzAwOSIsInNleHBfb2ZfdDIiLCJvZl9hMF8wMTAiLCJvZl9hMV8wMTEiLCJzZXhwX29mX3QzIiwib2ZfYTBfMDEyIiwib2ZfYTFfMDEzIiwib2ZfYTJfMDE0Iiwic2V4cF9vZl90NCIsIm9mX2EwXzAxNSIsIm9mX2ExXzAxNiIsIm9mX2EyXzAxNyIsIm9mX2EzXzAxOCIsInNleHBfb2ZfdDUiLCJvZl9hMF8wMTkiLCJvZl9hMV8wMjAiLCJvZl9hMl8wMjEiLCJvZl9hM18wMjIiLCJvZl9hNF8wMjMiLCJzZXhwX29mX3Q2Iiwib2ZfYTBfMDI0Iiwib2ZfYTFfMDI1Iiwib2ZfYTJfMDI2Iiwib2ZfYTNfMDI3Iiwib2ZfYTRfMDI4Iiwib2ZfYTVfMDI5Iiwic2V4cF9vZl90NyIsIm9mX2EwXzAzMCIsIm9mX2ExXzAzMSIsIm9mX2EyXzAzMiIsIm9mX2EzXzAzMyIsIm9mX2E0XzAzNCIsIm9mX2E1XzAzNSIsIm9mX2E2XzAzNiIsInNleHBfb2ZfdDgiLCJvZl9hMF8wMzciLCJvZl9hMV8wMzgiLCJvZl9hMl8wMzkiLCJvZl9hM18wNDAiLCJvZl9hNF8wNDEiLCJvZl9hNV8wNDIiLCJvZl9hNl8wNDMiLCJvZl9hN18wNDQiLCJzZXhwX29mX3Q5Iiwib2ZfYTBfMDQ1Iiwib2ZfYTFfMDQ2Iiwib2ZfYTJfMDQ3Iiwib2ZfYTNfMDQ4Iiwib2ZfYTRfMDQ5Iiwib2ZfYTVfMDUwIiwib2ZfYTZfMDUxIiwib2ZfYTdfMDUyIiwib2ZfYThfMDUzIiwic2V4cF9vZl90MTAiLCJvZl9hMF8wNTQiLCJvZl9hMV8wNTUiLCJvZl9hMl8wNTYiLCJvZl9hM18wNTciLCJvZl9hNF8wNTgiLCJvZl9hNV8wNTkiLCJvZl9hNl8wNjAiLCJvZl9hN18wNjEiLCJvZl9hOF8wNjIiLCJvZl9hOV8wNjMiLCJzZXhwX29mX3QxMSIsIm9mX2EwXzA2NCIsIm9mX2ExXzA2NSIsIm9mX2EyXzA2NiIsIm9mX2EzXzA2NyIsIm9mX2E0XzA2OCIsIm9mX2E1XzA2OSIsIm9mX2E2XzA3MCIsIm9mX2E3XzA3MSIsIm9mX2E4XzA3MiIsIm9mX2E5XzA3MyIsIm9mX2ExMF8wNzQiLCJzZXhwX29mX3QxMiIsIm9mX2EwXzA3NSIsIm9mX2ExXzA3NiIsIm9mX2EyXzA3NyIsIm9mX2EzXzA3OCIsIm9mX2E0XzA3OSIsIm9mX2E1XzA4MCIsIm9mX2E2XzA4MSIsIm9mX2E3XzA4MiIsIm9mX2E4XzA4MyIsIm9mX2E5XzA4NCIsIm9mX2ExMF8wODUiLCJvZl9hMTFfMDg2Iiwic2V4cF9vZl90MTMiLCJvZl9hMF8wODciLCJvZl9hMV8wODgiLCJvZl9hMl8wODkiLCJvZl9hM18wOTAiLCJvZl9hNF8wOTEiLCJvZl9hNV8wOTIiLCJvZl9hNl8wOTMiLCJvZl9hN18wOTQiLCJvZl9hOF8wOTUiLCJvZl9hOV8wOTYiLCJvZl9hMTBfMDk3Iiwib2ZfYTExXzA5OCIsIm9mX2ExMl8wOTkiLCJzZXhwX29mX3QxNCIsIm9mX2EwXzEwMCIsIm9mX2ExXzEwMSIsIm9mX2EyXzEwMiIsIm9mX2EzXzEwMyIsIm9mX2E0XzEwNCIsIm9mX2E1XzEwNSIsIm9mX2E2XzEwNiIsIm9mX2E3XzEwNyIsIm9mX2E4XzEwOCIsIm9mX2E5XzEwOSIsIm9mX2ExMF8xMTAiLCJvZl9hMTFfMTExIiwib2ZfYTEyXzExMiIsIm9mX2ExM18xMTMiLCJuYW1lJDEiLCJwcmVmaXgiLCJuYW1lJDAiLCJuYW1lIiwiZmFpbHdpdGhzIiwiYXJjaF9zaXh0eWZvdXIiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsInRvX3N0cmluZyIsInNwcmludGYiLCJjb25jYXQiLCJsIiwibWF4X3Nsb3QiLCJvZl9zbG90c18wMDciLCJvZl9hXzAwOCIsImVxdWFsIiwidDAiLCJhcnJheV9pbmRleF9udW1fYml0cyIsIm1hc2tlZF90dXBsZV9pZF9udW1fYml0cyIsIm1heF9hcnJheV9sZW5ndGgiLCJpbnZhcmlhbnQiLCJ0IiwiaW5pdCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInBoeXNfZXF1YWwiLCJwaHlzX2NvbXBhcmUiLCJudWxsJDAiLCJpc19udWxsIiwiY3JlYXRlIiwiaGVhZGVyX2luZGV4IiwidHVwbGVfaWQiLCJoZWFkZXJfaW5kZXhfbWFzayIsIm1hc2tlZF90dXBsZV9pZCIsImludmFyaWFudCQwIiwic2xvdF9pbmRleCIsInNsb3QiLCJmaXJzdF9zbG90X2luZGV4IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsIm51bGwkMSIsImlzX251bGwkMCIsImlzX2ZyZWUiLCJpc191c2VkIiwiaWQiLCJtZXRhZGF0YV9pbmRleCIsInN0YXJ0X29mX3R1cGxlc19pbmRleCIsIm1heF9jYXBhY2l0eSIsImR1bW15IiwiciIsImZpcnN0X2ZyZWUiLCJzZXRfZmlyc3RfZnJlZSIsInYiLCJuZXh0X2lkIiwic2V0X25leHRfaWQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiY2FwYWNpdHkiLCJkdW1teSQwIiwiZmlyc3RfZnJlZSQwIiwibmV4dF9pZCQwIiwibGVuZ3RoJDAiLCJjYXBhY2l0eSQwIiwic2xvdHNfcGVyX3R1cGxlJDAiLCJhcnJheV9pbmRpY2VzX3Blcl90dXBsZSIsImFycmF5X2xlbmd0aCIsInR1cGxlX251bV90b19oZWFkZXJfaW5kZXgiLCJ0dXBsZV9udW0iLCJ0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCIsIm1ldGFkYXRhIiwibGVuZ3RoJDEiLCJzZXhwX29mX3QkMyIsInNleHBfb2ZfdHkiLCJjYXBhY2l0eV8wMTgiLCJzbG90c19wZXJfdHVwbGVfMDE2IiwibGVuZ3RoXzAyMCIsIm5leHRfaWRfMDIyIiwiZmlyc3RfZnJlZV8wMjQiLCJkdW1teV8wMjYiLCJhcmdfMDI3IiwiYm5kc18wMTUiLCJhcmdfMDI1IiwiYm5kc18wMTUkMCIsImFyZ18wMjMiLCJibmRzXzAxNSQxIiwiYXJnXzAyMSIsImJuZHNfMDE1JDIiLCJhcmdfMDE5IiwiYm5kc18wMTUkMyIsImFyZ18wMTciLCJibmRzXzAxNSQ0IiwidW5zYWZlX2hlYWRlciIsInVuc2FmZV9zZXRfaGVhZGVyIiwiaGVhZGVyIiwiaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyIsInVuc2FmZV9wb2ludGVyX2lzX2xpdmUiLCJwb2ludGVyIiwiaGVhZGVyX2luZGV4JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMiIsInQkMCIsInNob3VsZF9lcXVhbCIsInQkMSIsInhfMDA5IiwiZXhuJDAiLCJleG4iLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImFyZzJfMDMwIiwiYXJnMV8wMjkiLCJhcmcwXzAyOCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJyZXMyXzAzMyIsImludmFyaWFudCQxIiwiaW52YXJpYW50X2EiLCJjaGVjayIsImYiLCJmaWVsZCIsImZpcnN0X3Nsb3QiLCJmcmVlIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczBfMDM2IiwicmVzMV8wMzciLCJjYXBhY2l0eSQxIiwiaXNfZnVsbCIsInVuc2FmZV9hZGRfdG9fZnJlZV9saXN0Iiwic2V0X21ldGFkYXRhIiwiY3JlYXRlX2FycmF5IiwidW5zYWZlX2luaXRfcmFuZ2UiLCJsbyIsImhpIiwidHVwbGVfbnVtJDAiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJvZl9zbG90c18wNzciLCJpc192YWxpZF8wNzkiLCJwb2ludGVyXzA4MSIsImFyZ18wODIiLCJibmRzXzA3OCIsImFyZ18wODAiLCJibmRzXzA3OCQwIiwiZmllbGQwIiwiZmllbGQxIiwidHlwZW5hbWUiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImZpZWxkcyIsImlzX3ZhbGlkIiwiZm9sbG93IiwieF8wODMiLCJpbnZhbGlkYXRlIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwidHMiLCJhcmciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ4XzA2OSIsInZfMDY4IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2IiwicG9zJDkiLCJwb3MkOCIsInBvcyQ3IiwicG9zJDYiLCJhcmdfMTA4IiwicG9zJDUiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwiZXJyb3Jfc291cmNlXzAzOSIsIm1heF90aW1lIiwibWluX3RpbWUiLCJtYXhfbnVtX2JpdHMiLCJtaW5fdmFsdWUiLCJpbnZhcmlhbnQiLCJ0Iiwib2ZfaW50IiwiaSIsInN5bWJvbCQyIiwidDEiLCJ0MiIsInN5bWJvbCQzIiwicG93MiIsInNleHBfb2ZfdCQwIiwieF8wMDciLCJudW1fYml0c19pbnRlcm5hbCIsIm51bV9iaXRzIiwiaW52YXJpYW50JDAiLCJudW1fa2V5X2JpdHMiLCJ0X29mX3NleHAkMCIsInhfMDA2IiwiY3JlYXRlX2V4biIsIm9wdCIsInhfMDA4Iiwic3RoIiwiZXh0ZW5kX3RvX21heF9udW1fYml0cyIsImJpdHMiLCJpbnRzIiwibGV2ZWxfYml0c19kZWZhdWx0IiwiY29tcGFyZSIsImVxdWFsJDAiLCJ4XzAxMiIsInhfMDEzIiwidG9fc2V4cGFibGUiLCJzZXhwX29mX3QkMSIsIm9uZV9uYW5vc2Vjb25kIiwiYWJvdXRfb25lX21pY3Jvc2Vjb25kIiwiYWJvdXRfb25lX21pbGxpc2Vjb25kIiwiYWJvdXRfb25lX3NlY29uZCIsImFib3V0X29uZV9kYXkiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJ2IiwibGV2ZWxfYml0cyQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzAxOSIsImZpZWxkX3NleHBzXzAyMCIsImFsYXJtX3ByZWNpc2lvbl8wMjEiLCJsZXZlbF9iaXRzXzAyMyIsImNhcGFjaXR5XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4Iiwic2V4cF8wMTkkMCIsImZpZWxkX3NleHBzXzAzMSIsImZpZWxkX25hbWVfMDI5IiwidGFpbF8wNDEiLCJmaWVsZF9zZXhwXzAzMCQzIiwiZmllbGRfc2V4cF8wMzAiLCJ4XzA0MiIsImZpZWxkX3NleHBfMDMwJDAiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMzAkMSIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAzMCQyIiwiZnZhbHVlXzAzNSIsImxldmVsX2JpdHNfMDI0IiwibWF0Y2giLCJhbGFybV9wcmVjaXNpb25fMDIyIiwidl8wMzgiLCJ2XzAzOCQwIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wNDgiLCJsZXZlbF9iaXRzXzA0NiIsImFsYXJtX3ByZWNpc2lvbl8wNDQiLCJibmRzXzA0MyIsInZfMDQ5IiwiYXJnXzA1MSIsImJuZF8wNTAiLCJibmRzXzA0MyQwIiwiYXJnXzA0NyIsImJuZHNfMDQzJDEiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMiIsImFsYXJtX3ByZWNpc2lvbiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJjYXBhY2l0eSIsImxvb3AiLCJyZW1haW5pbmciLCJ0JDAiLCJiIiwibWljcm9zZWNvbmRfcHJlY2lzaW9uIiwiZHVyYXRpb25zIiwibnVtX2JpdHNfYWNjdW0iLCJsZXZlbF9udW1fYml0cyIsIm51bV9iaXRzX2FjY3VtJDAiLCJkdXJhdGlvbiIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQ0IiwiY3JlYXRlJDAiLCJudW1fa2V5cyIsImNyZWF0ZSQxIiwiYml0c19wZXJfc2xvdCIsInRvX2ludDYzIiwib2ZfaW50NjMiLCJzY2FsZV9pbnQiLCJzZXhwX29mX3QkNyIsIm9mX2ludDYzJDAiLCJ0b19pbnQ2MyQwIiwiYWRkIiwiYWRkX2NsYW1wX3RvX21heCIsInN1YiIsImRpZmYiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2siLCJzZXhwX29mX3Bvb2xfc2xvdHMiLCJvZl9hXzA1NCIsInhfMDU1Iiwic2V4cF9vZl90JDgiLCJvZl9hXzA1NiIsInhfMDU3IiwibnVsbCQwIiwibnVsbCQxIiwiaXNfbnVsbCIsImZyZWUiLCJrZXkiLCJwIiwiYXQiLCJ2YWx1ZSIsImxldmVsX2luZGV4IiwicHJldiIsInNldF9wcmV2IiwieCIsIm5leHQiLCJzZXRfbmV4dCIsImlzX3ZhbGlkIiwiZ3JvdyIsImlzX2Z1bGwiLCJvZl9leHRlcm5hbF9leG4iLCJwb29sIiwibGluayIsIml0ZXIiLCJmaXJzdCIsImYiLCJjdXJyZW50IiwiY29udGludWUkMCIsIm5leHQkMCIsInNsb3RzIiwibWF4X2FsbG93ZWRfa2V5Iiwic2V0X21heF9hbGxvd2VkX2tleSIsIm1pbl9hbGxvd2VkX2tleSIsInNldF9taW5fYWxsb3dlZF9rZXkiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5Iiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDY1IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA3OSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDc3Iiwia2V5c19wZXJfc2xvdF8wNzUiLCJiaXRzX3Blcl9zbG90XzA3MyIsInNsb3RzX21hc2tfMDcxIiwiYml0c18wNjkiLCJpbmRleF8wNjciLCJsZW5ndGhfMDgxIiwibWluX2FsbG93ZWRfa2V5XzA4MyIsIm1heF9hbGxvd2VkX2tleV8wODUiLCJzbG90c18wODciLCJhcmdfMDg4IiwiYm5kc18wNjYiLCJhcmdfMDg2IiwiYm5kc18wNjYkMCIsImFyZ18wODQiLCJibmRzXzA2NiQxIiwiYXJnXzA4MiIsImJuZHNfMDY2JDIiLCJhcmdfMDgwIiwiYm5kc18wNjYkMyIsImFyZ18wNzgiLCJibmRzXzA2NiQ0IiwiYXJnXzA3NiIsImJuZHNfMDY2JDUiLCJhcmdfMDc0IiwiYm5kc18wNjYkNiIsImFyZ18wNzIiLCJibmRzXzA2NiQ3IiwiYXJnXzA3MCIsImJuZHNfMDY2JDgiLCJhcmdfMDY4IiwiYm5kc18wNjYkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCQwIiwiY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkiLCJwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSIsImxldmVscyIsImVsdF9rZXlfbG93ZXJfYm91bmQiLCJzZXRfZWx0X2tleV9sb3dlcl9ib3VuZCIsIm1pbl9lbHQiLCJzZXRfbWluX2VsdCIsInNldF9wb29sIiwibGVuZ3RoJDEiLCJzZXRfbGVuZ3RoJDAiLCJsZXZlbHMkMCIsImVsdF9rZXlfbG93ZXJfYm91bmQkMCIsIm1pbl9lbHQkMCIsInBvb2wkMCIsImxlbmd0aCQyIiwiaXNfZW1wdHkiLCJudW1fbGV2ZWxzIiwibWluX2FsbG93ZWRfa2V5JDEiLCJtYXhfYWxsb3dlZF9rZXkkMSIsImludGVybmFsX2l0ZXIiLCJsZXZlbCIsInNsb3RfaW5kZXgiLCJlbHQiLCJjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2siLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2FscmVhZHlfZm91bmQiLCJtaW5fa2V5X2FscmVhZHlfZm91bmQiLCJudW1fbGV2ZWxzJDAiLCJzbG90X21pbl9rZXkiLCJzbG90JDAiLCJjdXJyZW50X2tleSIsImFkZF9lbHQiLCJ4XzEzNSIsInRvX2FkZCIsImtleSQwIiwiZWx0c18xMTUiLCJtYXhfYWxsb3dlZF9rZXlfMTEzIiwibWluX2FsbG93ZWRfa2V5XzExMSIsImJuZHNfMTEwIiwia2V5XzEwNSIsImJuZHNfMTA0IiwiYXJnXzEwNiIsImJuZHNfMTA0JDAiLCJhcmdfMTE2IiwiYm5kc18xMTAkMCIsImFyZ18xMTQiLCJibmRzXzExMCQxIiwiYXJnXzExMiIsImJuZHNfMTEwJDIiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTY3Iiwic3RhcnRfMTY1IiwiY29uZmlnXzE2MyIsIm5vd18xNjkiLCJhbGFybSIsImFsYXJtc18xNzEiLCJibmRzXzE2MiIsInZhbHVlXzE1OSIsImF0XzE1NyIsImFyZ18xNjAiLCJibmRzXzE1NiIsImFyZ18xNTgiLCJibmRzXzE1NiQwIiwiYXJnXzE3MiIsImJuZHNfMTYyJDAiLCJhcmdfMTcwIiwiYm5kc18xNjIkMSIsImFyZ18xNjgiLCJibmRzXzE2MiQyIiwiYXJnXzE2NiIsImJuZHNfMTYyJDMiLCJhcmdfMTY0IiwiYm5kc18xNjIkNCIsImxlbmd0aCQzIiwiaXNfZW1wdHkkMCIsInBvb2wkMSIsImludGVydmFsX251bV9pbnRlcm5hbCIsInRpbWUiLCJpbnRlcnZhbF9udW1fdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtJDAiLCJpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtX3N0YXJ0IiwibmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biIsInhfMTc0IiwiY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIiwibm93X2ludGVydmFsX251bSIsIm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSIsImludGVydmFsX3N0YXJ0IiwiaW52YXJpYW50JDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwicHJpb3JpdHlfcXVldWVfZnVuIiwibGV2ZWxzX2Z1biIsInNsb3RzX2Z1biIsIm4iLCJ4XzA2MiIsIm1heF9hbGxvd2VkX2tleV9mdW4iLCJleHBlY3QiLCJlcXVhbCIsIm1lc3NhZ2UiLCJoZXJlIiwiY29tcGFyYXRvciIsImFfMTI4IiwiYl8xMjkiLCJtaW5fYWxsb3dlZF9rZXlfZnVuIiwiZ290Iiwic2V4cGlmaWVyIiwiYV8xMjYiLCJiXzEyNyIsImxlbmd0aF9mdW4iLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXlfZnVuIiwiZXRhIiwiYV8xMjQiLCJiXzEyNSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfZnVuIiwia2V5c19wZXJfc2xvdF9mdW4iLCJhXzEyMiIsImJfMTIzIiwiYml0c19wZXJfc2xvdF9mdW4iLCJleHBlY3QkMCIsInNsb3RzX21hc2tfZnVuIiwiYV8xMjAiLCJiXzEyMSIsImJpdHNfZnVuIiwiaW5kZXhfZnVuIiwieF8xMTkiLCJwcmV2X2xldmVsIiwiYV8xMzEiLCJiXzEzMiIsImdvdCQwIiwibWVzc2FnZSQwIiwiaGVyZSQwIiwiY29tcGFyYXRvciQwIiwiYV8xMzMiLCJiXzEzNCIsImVsdF9rZXlfbG93ZXJfYm91bmRfZnVuIiwibWluX2VsdF9mdW4iLCJwb29sX2Z1biIsInhfMTMwIiwib2ZfYV8wODkiLCJsZW5ndGhfMDkxIiwicG9vbF8wOTMiLCJtaW5fZWx0XzA5NSIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDk3IiwibGV2ZWxzXzA5OSIsImJuZHNfMDkwIiwiYXJnXzEwMCIsImJuZHNfMDkwJDAiLCJhcmdfMDk4IiwiYm5kc18wOTAkMSIsImFyZ18wOTYiLCJibmRzXzA5MCQyIiwiYXJnXzA5NCIsImJuZHNfMDkwJDMiLCJhcmdfMDkyIiwiYm5kc18wOTAkNCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWVfZnVuIiwiYV8xODMiLCJiXzE4NCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnRfZnVuIiwiYV8xODEiLCJiXzE4MiIsIm5vd19mdW4iLCJtYXhfaW50ZXJ2YWxfbnVtX2Z1biIsImFfMTc3IiwiYl8xNzgiLCJzZXhwaWZpZXIkMCIsImFfMTc5IiwiYl8xODAiLCJzdGFydF9mdW4iLCJjb25maWdfZnVuIiwieF8xNzYiLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTg1IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTg2IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE4NyIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMTkiLCJlcnJvcl9zb3VyY2VfMDMwIiwiZXJyb3Jfc291cmNlXzA0MyIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDUxIiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzExMiIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInNleHBfMDA2IiwiZmllbGRfc2V4cHNfMDA3IiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOCIsImhvd190b19kdW1wXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJob3dfdG9fZHVtcF8wMTEiLCJkdW1wX2lmX2RlbGF5ZWRfYnlfMDA5Iiwic2V4cF9vZl93YXRjaCIsImhvd190b19kdW1wXzAyNiIsImR1bXBfaWZfZGVsYXllZF9ieV8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF8wMzIiLCJ0YWdfMDMzIiwic2V4cF9hcmdzXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJzZXhwX29mX3QkNyIsImFyZzBfMDM3IiwicmVzMF8wMzgiLCJ0X29mX3NleHAkOCIsInNleHBfMDQ0Iiwic2V4cF9vZl90JDgiLCJlcXVhbCQwIiwieF8wNDUiLCJ4XzA0NiIsInRfb2Zfc2V4cCQ5Iiwic2V4cF8wNTIiLCJzZXhwX29mX3QkOSIsInRfb2Zfc2V4cCQxMCIsInNleHBfb2ZfdCQxMCIsInRpbWluZ193aGVlbF9jb25maWciLCJyIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciIsInJlY29yZF9iYWNrdHJhY2VzIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJtYXhfbnVtX3RocmVhZHMiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCIsImZpbGVfZGVzY3Jfd2F0Y2hlciIsImVwb2xsX21heF9yZWFkeV9ldmVudHMiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5IiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyIiwiY2hlY2tfaW52YXJpYW50cyIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyIsInYiLCJ0aW1pbmdfd2hlZWxfY29uZmlnJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMCIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMCIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsIm1heF9udW1fdGhyZWFkcyQwIiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzJDAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCQwIiwiZmlsZV9kZXNjcl93YXRjaGVyJDAiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDAiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5JDAiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIkMCIsImNoZWNrX2ludmFyaWFudHMkMCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQwIiwic2V4cF9vZl90JDExIiwidGltaW5nX3doZWVsX2NvbmZpZ18xNzQiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMTcwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8xIiwicmVjb3JkX2JhY2t0cmFjZXNfMTYyIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXzE1OCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XzE1NCIsIm1heF9udW1fdGhyZWFkc18xNDYiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNfMTQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMTM4IiwiZmlsZV9kZXNjcl93YXRjaGVyXzEzNCIsImVwb2xsX21heF9yZWFkeV9ldmVudHNfMTMwIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheV8xMjYiLCJjaGVja19pbnZhcmlhbnRzXzExOCIsImJuZHNfMTEzIiwidl8xNzUiLCJhcmdfMTc3IiwiYm5kXzE3NiIsImJuZHNfMTEzJDAiLCJ2XzE3MSIsImFyZ18xNzMiLCJibmRfMTcyIiwiYm5kc18xMTMkMSIsInZfMTY3IiwiYXJnXzE2OSIsImJuZF8xNjgiLCJibmRzXzExMyQyIiwidl8xNjMiLCJhcmdfMTY1IiwiYm5kXzE2NCIsImJuZHNfMTEzJDMiLCJ2XzE1OSIsImFyZ18xNjEiLCJibmRfMTYwIiwiYm5kc18xMTMkNCIsInZfMTU1IiwiYXJnXzE1NyIsImJuZF8xNTYiLCJibmRzXzExMyQ1Iiwidl8xNTEiLCJhcmdfMTUzIiwiYm5kXzE1MiIsImJuZHNfMTEzJDYiLCJ2XzE0NyIsImFyZ18xNDkiLCJibmRfMTQ4IiwiYm5kc18xMTMkNyIsInZfMTQzIiwiYXJnXzE0NSIsImJuZF8xNDQiLCJibmRzXzExMyQ4Iiwidl8xMzkiLCJhcmdfMTQxIiwiYm5kXzE0MCIsImJuZHNfMTEzJDkiLCJ2XzEzNSIsImFyZ18xMzciLCJibmRfMTM2IiwiYm5kc18xMTMkMTAiLCJ2XzEzMSIsImFyZ18xMzMiLCJibmRfMTMyIiwiYm5kc18xMTMkMTEiLCJ2XzEyNyIsImFyZ18xMjkiLCJibmRfMTI4IiwiYm5kc18xMTMkMTIiLCJ2XzEyMyIsImFyZ18xMjUiLCJibmRfMTI0IiwiYm5kc18xMTMkMTMiLCJ2XzExOSIsImFyZ18xMjEiLCJibmRfMTIwIiwiYm5kc18xMTMkMTQiLCJ2XzExNSIsImFyZ18xMTciLCJibmRfMTE2IiwiYm5kc18xMTMkMTUiLCJjcmVhdGUkMCIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mbyIsIndvcmRfc2l6ZSIsImxldmVsX2JpdHMkMSIsImFsYXJtX3ByZWNpc2lvbiIsImFsYXJtX3ByZWNpc2lvbiQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiZGVmYXVsdCQxIiwiZXhhbXBsZSIsInVzYWdlIiwiZmllbGQiLCJ0b19zZXhwIiwiZGVzY3JpcHRpb24iLCJhYyIsImQiLCJ4XzE3OCIsImZpZWxkcyIsIm5hbWUiLCJuYW1lMiIsIm5hbWUxIiwic3RyaW5nIiwic2V4cF8wNTQiLCJmaWVsZF9zZXhwc18wNTUiLCJjaGVja19pbnZhcmlhbnRzXzA1OCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjQiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY2IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY4IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MCIsIm1heF9udW1fdGhyZWFkc18wNzIiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzYiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc4IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XzA4NCIsInRpbWluZ193aGVlbF9jb25maWdfMDg2IiwiZHVwbGljYXRlc18wODgiLCJleHRyYV8wODkiLCJpdGVyXzEwOSIsInNleHBfMDU0JDAiLCJmaWVsZF9zZXhwc18wOTIiLCJmaWVsZF9uYW1lXzA5MCIsInRhaWxfMTEwIiwiZmllbGRfc2V4cF8wOTEkMTYiLCJmaWVsZF9zZXhwXzA5MSIsInhfMTExIiwiZmllbGRfc2V4cF8wOTEkMCIsImZ2YWx1ZV8wOTMiLCJmaWVsZF9zZXhwXzA5MSQxIiwiZnZhbHVlXzA5NCIsImZpZWxkX3NleHBfMDkxJDIiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTEkMyIsImZ2YWx1ZV8wOTYiLCJmaWVsZF9zZXhwXzA5MSQ0IiwiZnZhbHVlXzA5NyIsImZpZWxkX3NleHBfMDkxJDUiLCJmdmFsdWVfMDk4IiwiZmllbGRfc2V4cF8wOTEkNiIsImZ2YWx1ZV8xMDAiLCJmaWVsZF9zZXhwXzA5MSQ3IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDkxJDgiLCJmdmFsdWVfMDk5IiwiZmllbGRfc2V4cF8wOTEkOSIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5MSQxMCIsImZ2YWx1ZV8xMDMiLCJmaWVsZF9zZXhwXzA5MSQxMSIsImZ2YWx1ZV8xMDQiLCJmaWVsZF9zZXhwXzA5MSQxMiIsImZ2YWx1ZV8xMDUiLCJmaWVsZF9zZXhwXzA5MSQxMyIsImZ2YWx1ZV8xMDYiLCJmaWVsZF9zZXhwXzA5MSQxNCIsImZ2YWx1ZV8xMDciLCJmaWVsZF9zZXhwXzA5MSQxNSIsImZ2YWx1ZV8xMDgiLCJjaGVja19pbnZhcmlhbnRzXzA1OSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYzIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjUiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY3IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY5IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MSIsIm1heF9udW1fdGhyZWFkc18wNzMiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzciLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc5IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMDg1IiwidCIsInQkMCIsImV4biIsInQkMSIsInQkMiIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQxIiwidGFnIiwibCIsImFsbCIsImRlYnVnIiwiY2xvY2siLCJmZCIsImZpbGVfZGVzY3Jfd2F0Y2hlciQxIiwiZmluYWxpemVycyIsImludGVycnVwdG9yIiwibW9uaXRvciIsIm1vbml0b3Jfc2VuZF9leG4iLCJwYXJhbGxlbCIsInJlYWRlciIsInNjaGVkdWxlciIsInNodXRkb3duIiwidGhyZWFkX3Bvb2wiLCJ0aHJlYWRfc2FmZSIsIndyaXRlciIsInN5bWJvbCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQxIiwiY2hlY2tfaW52YXJpYW50cyQxIiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyJDEiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDEiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMSIsImZpbGVfZGVzY3Jfd2F0Y2hlciQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQkMSIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyQxIiwibWF4X251bV90aHJlYWRzJDEiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMSIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJyZWNvcmRfYmFja3RyYWNlcyQxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQxIiwidGltaW5nX3doZWVsX2NvbmZpZyQxIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheSQxIiwidCQzIiwidGFza19pZCIsIm5vbmUiLCJjcmVhdGUiLCJpc19ub25lIiwieCIsImlzX3NvbWUiLCJnZXRfc29tZV9leG4iLCJnZXQiLCJ0IiwidW5zYWZlX2dldCIsInNldF9zb21lIiwidiIsInNldF9ub25lIiwic2V0IiwidiQwIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInhfMDAyIiwiZW1wdHkiLCJpc19lbXB0eSIsImVxdWFsIiwiZHVtbXlfaWQiLCJjaGlsZCIsInQiLCJwb29sIiwic2libGluZyIsInByZXYiLCJpZCIsInNldF9jaGlsZCIsInYiLCJzZXRfc2libGluZyIsInNldF9wcmV2IiwidmFsdWVfZXhuIiwiYWxsb2NhdGUiLCJ2YWx1ZSIsImZyZWUiLCJkaXNjb25uZWN0X3NpYmxpbmciLCJzaWJsaW5nJDAiLCJkaXNjb25uZWN0X2NoaWxkIiwiY2hpbGQkMCIsImRldGFjaCIsInByZXYkMCIsInJlbGF0aW9uX3RvX3ByZXYiLCJjcmVhdGUiLCJjYXBhY2l0eSIsImludmFyaWFudCIsInRvX3Zpc2l0JDIiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJtYXliZV9wYXJlbnRfdmFsdWUiLCJleHBlY3RlZF9wcmV2Iiwibm9kZSIsInRoaXNfdmFsdWUiLCJwYXJlbnRfdmFsdWUiLCJ0b192aXNpdCQxIiwiY3JlYXRlJDAiLCJvcHQiLCJjbXAiLCJzdGgiLCJtaW5fc2l6ZSIsImNvcHkiLCJwb29sJDAiLCJzdGFydCIsIm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMiLCJjb3B5X25vZGUiLCJuZXdfbm9kZSIsIm5ld19zdGFydCIsInJlc3QiLCJub2RlX3RvX2NvcHkiLCJzbG90Iiwibm9kZV90b191cGRhdGUiLCJtZXJnZSIsInJvb3QxIiwicm9vdDIiLCJhZGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJjdXJyZW50X2NoaWxkIiwidjEiLCJ2MiIsInRvcF9leG4iLCJ0b3AiLCJhZGRfbm9kZSIsInQkMSIsInQkMCIsImFkZCIsIm1heF9zdGFja19kZXB0aCIsImxvb3AiLCJkZXB0aCIsImhlYWQkMCIsIm5leHQxJDAiLCJuZXh0MiQwIiwiYWNjIiwiaGVhZCIsIm5leHQxIiwibmV4dDIiLCJhY2MkMCIsImgiLCJ4cyIsImhlYXAiLCJyZW1vdmVfbm9uX2VtcHR5IiwibWVyZ2VkX2NoaWxkcmVuIiwibmV3X3Jvb3QiLCJyZW1vdmVfdG9wIiwiY2xlYXIiLCJub2RlJDAiLCJwb3BfZXhuIiwiciIsInBvcCIsInBvcF9pZiIsImYiLCJmb2xkIiwiaW5pdCIsIml0ZXIiLCJsZW5ndGgiLCJpdGVyJDAiLCJsZW5ndGgkMCIsImlzX2VtcHR5JDAiLCJtZW0iLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJzZXhwX29mX3QiLCJpc19ub2RlX3ZhbGlkIiwidmFsdWVfZXhuJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfYSIsInhfMDAxIiwicmVtb3ZlIiwidG9rZW4iLCJhZGRfcmVtb3ZhYmxlIiwidXBkYXRlIiwiZmluZF9lbHQiLCJub2RlcyQyIiwibm9kZXMiLCJub2RlcyQwIiwibm9kZXMkMSIsInVwZGF0ZSQwIiwiZWx0IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJ0X29mX3NleHAiLCJvZl9hXzAwMyIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsInBvcyIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhbV9ydW5uaW5nX3Rlc3QiLCJub25lIiwic29tZSIsIngiLCJ1bnNhZmVfdmFsdWUiLCJpc19ub25lIiwidCIsImlzX3NvbWUiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsImEiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsInZhbHVlXzAwMyIsIm5leHRfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJjcmVhdGUiLCJ1bnVzZWRfZWx0cyIsInIiLCJzZXRfdW51c2VkX2VsdHMiLCJ2IiwiYmFjayIsInNldF9iYWNrIiwiZnJvbnQiLCJzZXRfZnJvbnQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwidW51c2VkX2VsdHMkMCIsImJhY2skMCIsImZyb250JDAiLCJsZW5ndGgkMCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDciLCJsZW5ndGhfMDA5IiwiZnJvbnRfMDExIiwiYmFja18wMTMiLCJ1bnVzZWRfZWx0c18wMTUiLCJibmRzXzAwOCIsImFyZ18wMTYiLCJibmRzXzAwOCQwIiwiYXJnXzAxNCIsImJuZHNfMDA4JDEiLCJhcmdfMDEyIiwiYm5kc18wMDgkMiIsImFyZ18wMTAiLCJibmRzXzAwOCQzIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ0IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsInhfMDE3IiwiY3JlYXRlJDAiLCJlbnF1ZXVlIiwiYSIsIm5ld19iYWNrIiwiZGVxdWV1ZV9leG4iLCJ4XzAxOCIsImNsZWFyX2ludGVybmFsX3Bvb2wiLCJhZnRlciIsInQiLCJzcGFuIiwicmVzdWx0IiwibG9nIiwiYXJnMl8wMDMiLCJhcmczXzAwNCIsInNleHBfb2ZfYSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwNSIsInJlczFfMDA2IiwicmVzMl8wMDciLCJyZXMzXzAwOCIsImxvZ19zdHJpbmciLCJtZXNzYWdlIiwiY29uY2F0IiwiZXByaW50IiwiZXByaW50X3MiLCJlcHJpbnRzIiwicHJpbnRfcyIsInNleHAiLCJzZWMiLCJzZXhwX29mX3QiLCJ0b19yZXByIiwib2ZfcmVwciIsIm5hbWVzIiwiZGVidWciLCJmb3J3YXJkaW5nIiwiciIsInNldF9mb3J3YXJkaW5nIiwidiIsImhhc19zZWVuX2Vycm9yIiwic2V0X2hhc19zZWVuX2Vycm9yIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfdGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsInNldF9oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsIm5leHRfZXJyb3IiLCJzZXRfbmV4dF9lcnJvciIsImlkIiwiaGVyZSIsIm5hbWUiLCJmb3J3YXJkaW5nJDAiLCJoYXNfc2Vlbl9lcnJvciQwIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMkMCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzJDAiLCJuZXh0X2Vycm9yJDAiLCJpZCQwIiwiaGVyZSQwIiwibmFtZSQwIiwibWFrZV9jcmVhdG9yIiwibmFtZV9mdW4iLCJoZXJlX2Z1biIsImlkX2Z1biIsIm5leHRfZXJyb3JfZnVuIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZnVuIiwidGFpbHNfZm9yX2FsbF9lcnJvcnNfZnVuIiwiaGFzX3NlZW5fZXJyb3JfZnVuIiwiZm9yd2FyZGluZ19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJuYW1lX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJoZXJlX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJpZF9nZW4iLCJjb21waWxlX2FjYyQzIiwibmV4dF9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZ2VuIiwiY29tcGlsZV9hY2MkNSIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJoYXNfc2Vlbl9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ3IiwiZm9yd2FyZGluZ19nZW4iLCJhY2MiLCJjcmVhdGUiLCJtYXAiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJyZWNvcmQkMCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25zIiwidCQxIiwiYWMiLCJhYyQwIiwidCQwIiwieF8wMDEiLCJuZXh0X2lkIiwiY3JlYXRlX3dpdGhfcGFyZW50IiwiaW5mbyIsInBhcmVudCIsImkiLCJzIiwicyQwIiwieF8wMDIiLCJwYXJlbnQkMCIsIm1haW4iLCJiYWNrdHJhY2VfaGlzdG9yeSIsImxvY2FsX3N0b3JhZ2UiLCJwcmlvcml0eSIsIm1vbml0b3IiLCJiYWNrdHJhY2VfaGlzdG9yeSQwIiwibG9jYWxfc3RvcmFnZSQwIiwicHJpb3JpdHkkMCIsIm1vbml0b3IkMCIsIm1vbml0b3JfZnVuIiwicHJpb3JpdHlfZnVuIiwibG9jYWxfc3RvcmFnZV9mdW4iLCJiYWNrdHJhY2VfaGlzdG9yeV9mdW4iLCJtb25pdG9yX2dlbiIsInByaW9yaXR5X2dlbiIsImxvY2FsX3N0b3JhZ2VfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfMDA4IiwibG9jYWxfc3RvcmFnZV8wMDYiLCJwcmlvcml0eV8wMDQiLCJtb25pdG9yXzAwMiIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMiIsImludmFyaWFudCIsImNyZWF0ZV9saWtlIiwiZmluZF9sb2NhbCIsImtleSIsIndpdGhfbG9jYWwiLCJkYXRhIiwicmVjb3JkX2JhY2t0cmFjZSIsImR1bW15X2UiLCJkdW1teV9mIiwiZHVtbXlfYSIsInNleHBfb2Zfc2xvdHMiLCJvZl9ldmVudCIsImV2ZW50Iiwib2Zfam9iIiwiam9iIiwiaXNfZXZlbnQiLCJpc19qb2IiLCJraW5kIiwicHJvamVjdCIsImpvYl9vcl9ldmVudCIsImV2ZW50cyIsInNldF9leGVjdXRpb25fY29udGV4dCIsImV4ZWN1dGlvbl9jb250ZXh0IiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImZyb250Iiwic2V0X2Zyb250IiwibWFzayIsInNldF9tYXNrIiwiam9icyIsInNldF9qb2JzIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJudW1fam9ic19ydW4iLCJzZXRfbnVtX2pvYnNfcnVuIiwibGVuZ3RoJDAiLCJmcm9udCQwIiwibWFzayQwIiwiam9icyQwIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm51bV9qb2JzX3J1biQwIiwibnVtX2pvYnNfcnVuXzAwMiIsImpvYnNfbGVmdF90aGlzX2N5Y2xlXzAwNCIsImpvYnNfMDA2IiwibWFza18wMDgiLCJmcm9udF8wMTAiLCJsZW5ndGhfMDEyIiwiYXJnXzAxMyIsImFyZ18wMTEiLCJibmRzXzAwMSQzIiwiYm5kc18wMDEkNCIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiY2xlYXIiLCJzZXQiLCJhIiwib2Zmc2V0JDAiLCJlbnF1ZXVlIiwib2xkX2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5Iiwib2xkX2pvYnMiLCJvbGRfZnJvbnQiLCJsZW4xIiwibGVuMiIsIm5ld19qb2JzIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJuIiwiY2FuX3J1bl9hX2pvYiIsInJ1bl9qb2IiLCJzY2hlZHVsZXIiLCJydW5fZXh0ZXJuYWxfam9icyIsImV4dGVybmFsX2pvYnMiLCJydW5fam9icyIsInRoaXNfam9iIiwiZXhuJDAiLCJleG4iLCJiYWNrdHJhY2UiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsIm5hbWVzJDAiLCJpc19udWxsIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQxIiwidHJhbnNpdGlvbl9pc19hbGxvd2VkIiwiZnJvbSIsInRvIiwic2V4cF9vZl9ldmVudCIsImF0IiwiaW50ZXJ2YWwiLCJzdGF0dXMiLCJtYXRjaCIsIm5vbmUiLCJzb21lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJmaXJzdF9zb21lIiwidDEiLCJ0MiIsInVuc2FmZV92YWx1ZSIsInNleHBfb2ZfdCQyIiwicHB4X29wdGlvbmFsX2VfMCIsInZhbHVlJDAiLCJkZWZhdWx0JDAiLCJ2YWx1ZV9leG4iLCJ0b19vcHRpb24iLCJvZl9vcHRpb24iLCJzZXRfc3RhdHVzIiwicHJldl9maXJlZCIsInNldF9wcmV2X2ZpcmVkIiwibmV4dF9maXJlZCIsInNldF9uZXh0X2ZpcmVkIiwic2V0X2ludGVydmFsIiwiY2FsbGJhY2siLCJhdCQwIiwic2V0X2F0IiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJzdGF0dXMkMCIsInByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMCIsImludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQwIiwiY2FsbGJhY2skMCIsImF0JDEiLCJhbGFybSQwIiwiYWxhcm1fZnVuIiwiYXRfZnVuIiwiY2FsbGJhY2tfZnVuIiwiZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiaW50ZXJ2YWxfZnVuIiwibmV4dF9maXJlZF9mdW4iLCJwcmV2X2ZpcmVkX2Z1biIsInN0YXR1c19mdW4iLCJhbGFybV9nZW4iLCJhdF9nZW4iLCJjYWxsYmFja19nZW4iLCJleGVjdXRpb25fY29udGV4dF9nZW4iLCJpbnRlcnZhbF9nZW4iLCJuZXh0X2ZpcmVkX2dlbiIsInByZXZfZmlyZWRfZ2VuIiwic3RhdHVzX2dlbiIsImdvdCIsInNleHBpZmllciIsImV4cGVjdCIsImVxdWFsIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJwcHhfb3B0aW9uYWxfZV8wJDAiLCJhXzAxNyIsImJfMDE4IiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImV4cGVjdCQwIiwibWVzc2FnZSQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsInhfMDE2IiwiaW52YXJpYW50JDAiLCJzZXhwX29mX3QkNSIsInhfMDIxIiwiaW52YXJpYW50JDEiLCJpbnZhcmlhbnRfd2l0aF9qb2JzJDAiLCJzZXhwX29mX3QkNiIsInhfMDIyIiwiaWQkMSIsImlzX3dhbGxfY2xvY2skMSIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJyZWFkX29ubHkiLCJmaXJlIiwiY29udGludWUkMCIsIm5leHQkMCIsImNvbnRpbnVlJDEiLCJwcHhfb3B0aW9uYWxfZV8wJDEiLCJuZXh0IiwicHB4X29wdGlvbmFsX2VfMCQyIiwicHJldiIsImFsYXJtX3ByZWNpc2lvbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX3J1bnNfYXQiLCJub3ckMCIsInRpbWluZ193aGVlbF9ub3ckMCIsInNjaGVkdWxlIiwicmVtb3ZlX2Zyb21fZmlyZWQiLCJuZXdfc3RhdHVzIiwic2V4cF9vZl9ldmVudCQwIiwic3RhdHVzJDEiLCJwcmV2X2ZpcmVkJDEiLCJzZXRfcHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQxIiwic2V0X25leHRfZmlyZWQkMCIsImludGVydmFsJDEiLCJzZXRfaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDEiLCJjYWxsYmFjayQxIiwic2V0X2F0JDAiLCJhbGFybSQxIiwic2V0X2FsYXJtJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQyIiwic2V0X3N0YXR1cyQxIiwic2V0X3N0YXR1c19pZiQwIiwic2NoZWR1bGVkX2F0IiwiY3JlYXRlX2ludGVybmFsIiwiYWRkJDAiLCJjcmVhdGVfYW5kX2FkZCIsImF0JDIiLCJhZnRlciQwIiwicmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJhdF9pbnRlcnZhbHMiLCJzZXhwX29mX3QkOCIsImFib3J0IiwiYWJvcnRfaWZfcG9zc2libGUiLCJhYm9ydF9leG4iLCJyZWFzb24iLCJjcmVhdGUkMSIsInNjaGVkdWxlX2F0X2ludGVybmFsIiwic2NoZWR1bGVfYXQiLCJzY2hlZHVsZV9hZnRlciIsInNjaGVkdWxlX2F0X2ludGVydmFscyIsInJlc2NoZWR1bGVfYXQiLCJyZXNjaGVkdWxlX2FmdGVyIiwicnVuX2FmdGVyIiwicnVuX2F0IiwicnVuX2F0X2ludGVydmFscyIsInJ1bl9maXJlZF9ldmVudHMiLCJzZW5kX2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJzZW5kX2V4biQwIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF8iLCJhZHZhbmNlX2RpcmVjdGx5IiwiZHVyYXRpb25fb2YiLCJzdGFydCIsImR1cmF0aW9uIiwibWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193IiwiaGFzX2V2ZW50c190b19ydW4iLCJjcmVhdGVfd2l0aF9jZWxsIiwiY2VsbCIsImNyZWF0ZV9mdWxsIiwiZXhlYyIsImV4ZWMkMCIsImV4ZWNfZnVuIiwiZXhlY19nZW4iLCJzZXhwX29mX3QkMCIsImV4ZWN1dGlvbl9jb250ZXh0XzAwMiIsInJlY29yZF9iYWNrdHJhY2VzIiwic2V0X3JlY29yZF9iYWNrdHJhY2VzIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfIiwic2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfIiwiY2hlY2tfaW52YXJpYW50cyIsInNldF9jaGVja19pbnZhcmlhbnRzIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJzZXRfeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJ5aWVsZCQwIiwic2V0X3lpZWxkIiwiZXZlbnRfYWRkZWRfaG9vayIsInNldF9ldmVudF9hZGRlZF9ob29rIiwiam9iX3F1ZXVlZF9ob29rIiwic2V0X2pvYl9xdWV1ZWRfaG9vayIsInRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIiwic2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9oIiwidGltZV9zb3VyY2UiLCJzZXRfdGltZV9zb3VyY2UiLCJ0b3RhbF9jeWNsZV90aW1lIiwic2V0X3RvdGFsX2N5Y2xlX3RpbWUiLCJsYXN0X2N5Y2xlX251bV9qb2JzIiwic2V0X2xhc3RfY3ljbGVfbnVtX2pvYnMiLCJsYXN0X2N5Y2xlX3RpbWUiLCJzZXRfbGFzdF9jeWNsZV90aW1lIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9lbmQiLCJzZXRfcnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydCIsInNldF9ydW5fZXZlcnlfY3ljbGVfc3RhcnQiLCJpbl9jeWNsZSIsInNldF9pbl9jeWNsZSIsImN5Y2xlX3N0YXJ0Iiwic2V0X2N5Y2xlX3N0YXJ0IiwiY3ljbGVfY291bnQiLCJzZXRfY3ljbGVfY291bnQiLCJ1bmNhdWdodF9leG5fdW53cmFwcGVkIiwic2V0X3VuY2F1Z2h0X2V4biIsInNldF9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IiwibWFpbl9leGVjdXRpb25fY29udGV4dCIsInNldF9tYWluX2V4ZWN1dGlvbl9jb250ZXh0IiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyIsImxvd19wcmlvcml0eV9qb2JzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMiLCJqb2JfcG9vbCIsInNldF9qb2JfcG9vbCIsImNoZWNrX2FjY2VzcyIsInNldF9jaGVja19hY2Nlc3MiLCJyZWNvcmRfYmFja3RyYWNlcyQwIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDAiLCJjaGVja19pbnZhcmlhbnRzJDAiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiQwIiwieWllbGQkMSIsImV2ZW50X2FkZGVkX2hvb2skMCIsImpvYl9xdWV1ZWRfaG9vayQwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2skMCIsImV4dGVybmFsX2pvYnMkMCIsInRpbWVfc291cmNlJDAiLCJ0b3RhbF9jeWNsZV90aW1lJDAiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDAiLCJsYXN0X2N5Y2xlX3RpbWUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmQkMCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0JDAiLCJpbl9jeWNsZSQwIiwiY3ljbGVfc3RhcnQkMCIsImN5Y2xlX2NvdW50JDAiLCJ1bmNhdWdodF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzJDAiLCJsb3dfcHJpb3JpdHlfam9icyQwIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMkMCIsImpvYl9wb29sJDAiLCJjaGVja19hY2Nlc3MkMCIsImNoZWNrX2FjY2Vzc19mdW4iLCJqb2JfcG9vbF9mdW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19mdW4iLCJsb3dfcHJpb3JpdHlfam9ic19mdW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2Z1biIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9mdW4iLCJ1bmNhdWdodF9leG5fZnVuIiwiY3ljbGVfY291bnRfZnVuIiwiY3ljbGVfc3RhcnRfZnVuIiwiaW5fY3ljbGVfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2Z1biIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV9mdSIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9mdW4iLCJsYXN0X2N5Y2xlX3RpbWVfZnVuIiwibGFzdF9jeWNsZV9udW1fam9ic19mdW4iLCJ0b3RhbF9jeWNsZV90aW1lX2Z1biIsInRpbWVfc291cmNlX2Z1biIsImV4dGVybmFsX2pvYnNfZnVuIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfIiwiam9iX3F1ZXVlZF9ob29rX2Z1biIsImV2ZW50X2FkZGVkX2hvb2tfZnVuIiwieWllbGRfZnVuIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZnVuIiwiY2hlY2tfaW52YXJpYW50c19mdW4iLCJyZWNvcmRfYmFja3RyYWNlc19mdW4iLCJjaGVja19hY2Nlc3NfZ2VuIiwiam9iX3Bvb2xfZ2VuIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfZ2VuIiwibG93X3ByaW9yaXR5X2pvYnNfZ2VuIiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2Vyc19nZW4iLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwidW5jYXVnaHRfZXhuX2dlbiIsImN5Y2xlX2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDkiLCJjeWNsZV9zdGFydF9nZW4iLCJjb21waWxlX2FjYyQxMCIsImluX2N5Y2xlX2dlbiIsImNvbXBpbGVfYWNjJDExIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEyIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2dlIiwiY29tcGlsZV9hY2MkMTMiLCJydW5fZXZlcnlfY3ljbGVfZW5kX2dlbiIsImNvbXBpbGVfYWNjJDE0IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9nZW4iLCJjb21waWxlX2FjYyQxNSIsImxhc3RfY3ljbGVfdGltZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImxhc3RfY3ljbGVfbnVtX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJ0b3RhbF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE4IiwidGltZV9zb3VyY2VfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJleHRlcm5hbF9qb2JzX2dlbiIsImNvbXBpbGVfYWNjJDIwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfJDAiLCJjb21waWxlX2FjYyQyMSIsImpvYl9xdWV1ZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMiIsImV2ZW50X2FkZGVkX2hvb2tfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJ5aWVsZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluX2dlbiIsImNvbXBpbGVfYWNjJDI1IiwiY2hlY2tfaW52YXJpYW50c19nZW4iLCJjb21waWxlX2FjYyQyNiIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQxIiwiY29tcGlsZV9hY2MkMjciLCJyZWNvcmRfYmFja3RyYWNlc19nZW4iLCJjcmVhdGUkMiIsImNoZWNrX2FjY2Vzc18wMDciLCJqb2JfcG9vbF8wMDkiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzXzAxNSIsImxvd19wcmlvcml0eV9qb2JzXzAxMyIsIm5vcm1hbF9wcmlvcml0eV9qb2JzXzAxMSIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfMDE3IiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF8wMTkiLCJ1bmNhdWdodF9leG5fMDIxIiwiY3ljbGVfY291bnRfMDI3IiwiY3ljbGVfc3RhcnRfMDI5IiwiaW5fY3ljbGVfMDMxIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XzAzMyIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV8wMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfMDM3IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV8wMzkiLCJsYXN0X2N5Y2xlX3RpbWVfMDQxIiwibGFzdF9jeWNsZV9udW1fam9ic18wNDMiLCJ0b3RhbF9jeWNsZV90aW1lXzA0NSIsInRpbWVfc291cmNlXzA0NyIsImV4dGVybmFsX2pvYnNfMDQ5Iiwiam9iX3F1ZXVlZF9ob29rXzA1MyIsImV2ZW50X2FkZGVkX2hvb2tfMDU1IiwieWllbGRfMDU3IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fMDU5IiwiY2hlY2tfaW52YXJpYW50c18wNjEiLCJyZWNvcmRfYmFja3RyYWNlc18wNjUiLCJhcmdfMDY2IiwiYm5kc18wMDYiLCJhcmdfMDY0IiwiYm5kc18wMDYkMCIsImFyZ18wNjIiLCJibmRzXzAwNiQxIiwiYXJnXzA2MCIsImJuZHNfMDA2JDIiLCJhcmdfMDU4IiwiYm5kc18wMDYkMyIsImFyZ18wNTYiLCJibmRzXzAwNiQ0IiwiYXJnXzA1NCIsImJuZHNfMDA2JDUiLCJhcmdfMDUyIiwiYm5kc18wMDYkNiIsImFyZ18wNTAiLCJibmRzXzAwNiQ3IiwiYXJnXzA0OCIsImJuZHNfMDA2JDgiLCJhcmdfMDQ2IiwiYm5kc18wMDYkOSIsImFyZ18wNDQiLCJibmRzXzAwNiQxMCIsImFyZ18wNDIiLCJibmRzXzAwNiQxMSIsImFyZ18wNDAiLCJibmRzXzAwNiQxMiIsImFyZ18wMzgiLCJibmRzXzAwNiQxMyIsImFyZ18wMzYiLCJibmRzXzAwNiQxNCIsImFyZ18wMzQiLCJibmRzXzAwNiQxNSIsImFyZ18wMzIiLCJibmRzXzAwNiQxNiIsImFyZ18wMzAiLCJibmRzXzAwNiQxNyIsImFyZ18wMjgiLCJibmRzXzAwNiQxOCIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYXJnXzAyMiIsImJuZHNfMDA2JDE5IiwiYXJnXzAyMCIsImJuZHNfMDA2JDIwIiwiYXJnXzAxOCIsImJuZHNfMDA2JDIxIiwiYXJnXzAxNiIsImJuZHNfMDA2JDIyIiwiYXJnXzAxNCIsImJuZHNfMDA2JDIzIiwiYXJnXzAxMiIsImJuZHNfMDA2JDI0IiwiYXJnXzAxMCIsImJuZHNfMDA2JDI1IiwiYXJnXzAwOCIsImJuZHNfMDA2JDI2IiwidW5jYXVnaHRfZXhuJDAiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJyZXMxXzA3MCIsIm51bV9wZW5kaW5nX2pvYnMiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDEiLCJ1bm9yZGVyZWRfaXNfc3VibGlzdCIsInNtYWxsIiwibGFyZ2UiLCJ4IiwibCQwIiwieSIsImwiLCJjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCIsInRhYmxlIiwibGlzdCIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJ0X3JlZiIsImNoZWNrX2FjY2VzcyQxIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dCQxIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEiLCJ0bXBfY29udGV4dCIsIm9sZF9jb250ZXh0Iiwid2l0aF9leGVjdXRpb25fY29udGV4dCIsImNyZWF0ZV9qb2IiLCJnb3RfdW5jYXVnaHRfZXhuIiwiYXJnMV8wNzIiLCJhcmcwXzA3MSIsInJlczBfMDczIiwicmVzMV8wNzQiLCJzdGFydF9jeWNsZSIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkiLCJlIiwiZSQwIiwic3RhYmlsaXplIiwiY3JlYXRlX3RpbWVfc291cmNlIiwib3B0Iiwic3RoIiwidGltaW5nX3doZWVsX2NvbmZpZyIsIndhbGxfY2xvY2siLCJzZXRfcHJldiIsInBhcmFtIiwic2V0X25leHQiLCJydW4iLCJjcmVhdGUyIiwicnVuMSIsImV4ZWN1dGlvbl9jb250ZXh0MSIsInJ1bjIiLCJleGVjdXRpb25fY29udGV4dDIiLCJzY2hlZHVsZV9qb2JzIiwiYWRkIiwib2ZfbGlzdCIsImZpcnN0IiwibCQxIiwibCQyIiwicnVuJDAiLCJwcmV2JDAiLCJhY2MkMCIsImNlbGxfb2ZfaGFuZGxlciIsImluZGlyIiwic3F1YXNoIiwidCQzIiwidCQ0IiwiaW5kaXIkMSIsInQkNSIsImluZGlyJDAiLCJ0JDIiLCJhX2ludmFyaWFudCIsImhhbmRsZXIiLCJwZWVrIiwidmFsdWUiLCJpZl9lbXB0eV90aGVuX2ZhaWx3aXRoIiwiaXNfZW1wdHkiLCJpc19mdWxsIiwiZmlsbCIsInJlbW92ZV9oYW5kbGVyIiwiYWRkX2hhbmRsZXIiLCJoYW5kbGVyJDEiLCJoYW5kbGVyJDIiLCJydW4kMSIsImhhbmRsZXIkMCIsImhhc19oYW5kbGVycyIsInVwb24iLCJ1cG9uJDAiLCJjb25uZWN0IiwiYmluZF9yZXN1bHQiLCJiaW5kX3JocyIsImJpbmRfcmVzdWx0JDAiLCJpdmFyIiwiYmluZF9yaHNfY29udGVudHMiLCJpdmFyJDAiLCJsYXN0MSIsImxhc3QyIiwiaGFuZGxlcjEiLCJleGVjdXRpb25fY29udGV4dDIkMCIsInJ1bjIkMCIsImhhbmRsZXIxJDAiLCJ2JDAiLCJvZl9pdmFyIiwiaW52YXJpYW50X2EiLCJyZXR1cm4kMCIsImlzX2RldGVybWluZWQiLCJiaW5kIiwiaCIsInJlYWQiLCJmaWxsX2lmX2VtcHR5IiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJzZXhwX29mX2hvdyIsInZfMDAxIiwibmV2ZXIiLCJyZXR1cm4kMSIsInJldHVybiQyIiwicmV0dXJuJDMiLCJ1bml0IiwiYm90aCQwIiwiYTEiLCJhMiIsImRvbl90X3dhaXRfZm9yIiwiZjIiLCJmMSIsInByb2Nlc3MiLCJyZXN0IiwiY2hvaWNlIiwiZW5hYmxlZCIsImNob2ljZXMiLCJ1bnJlZ2lzdGVycyIsInJlYWR5IiwiY2hvb3NlX3Jlc3VsdCIsImNob2ljZXMkMCIsImNob2ljZXMkMSIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsImIiLCJ4cyIsInNlcW1hcCIsImJzIiwiYWxsIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJvayIsIm9mX2FfMDA1IiwieF8wMDYiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwieF8wMDciLCJjb2xsZWN0IiwiaXNfY2xvc2VkIiwiZmlsbF9leG4iLCJjbG9zZV9leG4iLCJjbG9zZV9pZl9vcGVuIiwiZXh0ZW5kIiwiZGVmZXJyZWQwIiwiZGVmZXJyZWQxIiwiaW1wb3J0MCIsImVycm9yIiwiZGV0YWNoIiwiZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyIsImhhbmRsZXJfc3RhdGVfcmVmIiwicnVuX2YiLCJiYWdfZWx0IiwiaW5uZXJfZXhuJDAiLCJpbm5lcl9leG4iLCJkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0iLCJ0YWlsIiwiZ2V0X25leHRfZXJyb3IiLCJkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIiwiZXh0cmFjdF9leG4iLCJjb2x1bW4iLCJtb25pdG9yJDEiLCJuYW1lJDEiLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwicmVzdCQwIiwicmVzdCQxIiwidDMiLCJyZXN0JDIiLCJyZXN0JDMiLCJ0cmFjZXMiLCJyZXN0JDQiLCJ0MSQwIiwicmVzdCQ1IiwidDIkMCIsInJlc3QkNiIsInQyJDEiLCJiYWNrdHJhY2UkMiIsImxpc3RfaWZfbm90X2VtcHR5IiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJleHRyYWN0X2V4biQwIiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwid2l0aGluX2NvbnRleHQiLCJjb250ZXh0Iiwid2l0aGluX2dlbiIsIndpdGhpbiIsIndpdGhpbl92Iiwid2l0aGluJDAiLCJzY2hlZHVsZV93aXRoX2RhdGEiLCJ3b3JrIiwidXBvbl93b3JrX2ZpbGxfaSIsInNjaGVkdWxlJDAiLCJwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsX2FuZF9maWxsIiwic3RyZWFtX2l0ZXIiLCJzdHJlYW0iLCJleG5zIiwiZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvIiwicmVzdWx0X2ZpbGxlciIsImhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCIsInRyeV93aXRoX2xvZ19leG4iLCJ0cnlfd2l0aCIsInN0aCQwIiwiZG9fZXh0cmFjdF9leG4iLCJzdGgkMSIsInN0aCQyIiwiaGFuZGxlX2V4biIsInJlcyIsInRyeV93aXRoX29yX2Vycm9yIiwidHJ5X3dpdGhfam9pbl9vcl9lcnJvciIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmciIsInIkMCIsImZpbmFsbHlfZXhuIiwiaGFuZGxlX2Vycm9ycyIsImNhdGNoX3N0cmVhbSIsImNhdGNoJDAiLCJjYXRjaF9lcnJvciIsImRlcHRoIiwibiQwIiwiZmlyc3RfZXhuIiwibG9vcCQwIiwibG9vcF9uZXh0IiwibG9vcF9uZXh0JDAiLCJjbG9zZWQiLCJ1bmZvbGQiLCJjb3B5X3RvX3RhaWwiLCJhcHBlbmQiLCJmaWx0ZXJfZGVwcmVjYXRlZCIsImZpbHRlcl9tYXBfZGVwcmVjYXRlZCIsImZpcnN0X24iLCJhdmFpbGFibGVfbm93Iiwic3BsaXQiLCJzdG9wIiwicmVhc29uX2Zvcl9zdG9wcGluZyIsInByZWZpeCIsImZpbmlzaCIsIm8iLCJmaW5kIiwiZm91bmQiLCJ1bmdyb3VwIiwiaW50ZXJsZWF2ZSIsIm51bV9vcGVuIiwiY2xvc2UiLCJvdXRlcl9jbG9zZWQiLCJ0YWtlX3VudGlsIiwieiIsIml0ZXJfZHVyYWJseSIsIml0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIiwiaXRlcl9kdXJhYmx5JDAiLCJvZl9mdW4iLCJzZXRfaXZhciIsImhhc19hbnlfd2FpdGVycyIsInNldF9oYXNfYW55X3dhaXRlcnMiLCJoYXNfYW55X3dhaXRlcnMkMCIsInJlcHIiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJvZl9hXzAwMSIsImhhc19hbnlfd2FpdGVyc18wMDMiLCJpdmFyXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwiYnJvYWRjYXN0Iiwid2FpdCIsImhhc19hbnlfd2FpdGVycyQxIiwieF8wMDMiLCJhZHZhbmNlX2RpcmVjdGx5X2J5IiwiYnkiLCJ3YWl0X2ZvciIsInJ1bl9xdWV1ZWRfYWxhcm1zIiwid2Fsa19hbGFybXMiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQkMCIsImFkdmFuY2VfYnlfYWxhcm1zX2J5Iiwic3Bhbl90b190aW1lIiwicnVuX2F0X2ludGVybmFsIiwidGltZSIsInJlbW92ZV9hbGFybSIsIm9mX2FfMDA4Iiwib2ZfaF8wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNldF9zY2hlZHVsZWRfYXQiLCJudW1fZmlyZXNfdG9fc2tpcCIsInNldF9udW1fZmlyZXNfdG9fc2tpcCIsImZpcmVkIiwic2NoZWR1bGVkX2F0JDAiLCJudW1fZmlyZXNfdG9fc2tpcCQwIiwiZmlyZWQkMCIsIm9mX2FfMDE2Iiwib2ZfaF8wMTciLCJhbGFybV8wMTkiLCJmaXJlZF8wMjMiLCJudW1fZmlyZXNfdG9fc2tpcF8wMjUiLCJzY2hlZHVsZWRfYXRfMDI3IiwidGltZV9zb3VyY2VfMDI5IiwiYm5kc18wMTgiLCJibmRzXzAxOCQwIiwiYXJnXzAyNiIsImJuZHNfMDE4JDEiLCJhcmdfMDI0IiwiYm5kc18wMTgkMiIsImJuZHNfMDE4JDMiLCJibmRzXzAxOCQ0Iiwic2V4cF9vZl90X3VuaXQiLCJ4XzAzMSIsImZpcmVkJDEiLCJpbnZhcmlhbnRfaCIsInNjaGVkdWxlZF9hdF9mdW4iLCJhXzAzMyIsImJfMDM0IiwibnVtX2ZpcmVzX3RvX3NraXBfZnVuIiwiZmlyZWRfZnVuIiwieF8wMzIiLCJvZl9hXzAzNSIsIm9mX2hfMDM2IiwiYXJnMF8wMzciLCJyZXMwXzAzOCIsImFyZzBfMDM5IiwicmVzMF8wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwib2ZfYV8wNDUiLCJvZl9oXzA0NiIsImFyZzBfMDQ3IiwicmVzMF8wNDgiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwieF8wNTMiLCJhJDAiLCJvZl9hXzA1NCIsIm9mX2hfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJhcmcxXzA2MyIsImFyZzBfMDYyIiwicmVzMF8wNjQiLCJyZXMxXzA2NSIsImlzX2luX3RpbWluZ193aGVlbCIsImFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZSIsInJ1bl9hdCQwIiwicnVuX2FmdGVyJDAiLCJhdF90aW1lcyIsIm5leHRfdGltZSIsImF0X3ZhcnlpbmdfaW50ZXJ2YWxzIiwiY29tcHV0ZV9zcGFuIiwic3RhcnQkMCIsImltbWVkaWF0ZWx5IiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsIm9mX2FfMDAyIiwicmVzMF8wMDQiLCJsZW5ndGhfMDA2IiwiYm5kc18wMDUiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwibWF4X2NvbmN1cnJlbnRfam9icyIsImNsZWFuZWQkMCIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQkMCIsImNhcGFjaXR5X2F2YWlsYWJsZSQwIiwibnVtX2pvYnNfcnVubmluZyQwIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0JDAiLCJqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UkMCIsIm1heF9jb25jdXJyZW50X2pvYnMkMCIsIm9mX2FfMDExIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0XzAxOSIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZV8wMTciLCJtYXhfY29uY3VycmVudF9qb2JzXzAxNSIsImNvbnRpbnVlX29uX2Vycm9yXzAxMyIsIm51bV9qb2JzX3J1bm5pbmdfMDIxIiwiY2FwYWNpdHlfYXZhaWxhYmxlXzAyMyIsImlzX2RlYWRfMDI1IiwiY2xlYW5zXzAyNyIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRfMDI5IiwiY2xlYW5lZF8wMzEiLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiYm5kc18wMTIkMiIsImJuZHNfMDEyJDMiLCJibmRzXzAxMiQ0Iiwib3V0Y29tZV8wMDkiLCJzdGFydF8wMDYiLCJibmRzXzAwNSQwIiwidl8wMDgiLCJibmRzXzAwNSQxIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2ZfYV8wMzQiLCJvZl9raW5kXzAzNSIsInhfMDM2IiwibnVtX2pvYnNfd2FpdGluZ190b19zdGFydCIsImNsZWFuX3Jlc291cmNlIiwia2lsbCIsImF0X2tpbGwiLCJjbGVhbmVkJDEiLCJzdGFydF9qb2IiLCJqb2JfcmVzb3VyY2UiLCJqb2JfcmVzb3VyY2VzIiwiY3JlYXRlX3dpdGgiLCJvdXRjb21lIiwiaW50ZXJuYWxfam9iIiwiaGFuZGxlX2VucXVldWVfcmVzdWx0IiwiZW5xdWV1ZSQwIiwiZW5xdWV1ZV9leGNsdXNpdmUiLCJkb25lIiwiZl9wbGFjZWhvbGRlciIsInNsb3QiLCJtb25hZF9zZXF1ZW5jZV9ob3ciLCJob3ciLCJtb25hZF9zZXF1ZW5jZV9ob3cyIiwicHJpb3Jfam9ic19kb25lIiwiYWxsX2R1bW15X2pvYnNfcnVubmluZyIsImR1bW15X2pvYnNfcnVubmluZyIsImNhcGFjaXR5X2F2YWlsYWJsZSQxIiwiaGFzX3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudCIsIm5leHRfdXBjb21pbmdfZXZlbnRfZXhuIiwiZXZlbnRfcHJlY2lzaW9uIiwiYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2siLCJoYW5kbGUiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2siLCJyZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2siLCJsc3QiLCJsc3QkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJxdWV1ZSIsInJ1bm5pbmciLCJ0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiIsImN5Y2xlX3N0YXJ0X25zIiwiY3ljbGVfdGltZXNfbnMiLCJjeWNsZV90aW1lcyIsImV2ZW50X3ByZWNpc2lvbl9ucyIsImJvb2wiLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayQwIiwiYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rJDAiLCJyZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va18kMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEkMCIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInZfMDA2IiwiZm9sZGkiLCJzZXFtYXBpIiwiaXRlcmkiLCJtYXBpIiwiZmlsdGVyaSIsImJvb2xzIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImZpbmRfbWFwaSIsImF1eCIsImZpbmRpIiwiZWx0IiwiZXhpc3RzaSIsImZvcl9hbGxpIiwiZmlsdGVyX21hcCIsImZpbHRlciIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInRsIiwiaGQiLCJjaGFuZ2UiLCJ1cGRhdGUiLCJpdGVyX2tleXMiLCJhbGlzdCIsImFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIiwiZm9sZF9yaWdodCIsImFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIiwic2VxdWVuY2UiLCJqb2JfbWFwIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInRodW5rIiwicmVyYWlzZSIsImdlbmVyYWwiLCJoYXNoYWJsZSIsImNvbWJpbmUiLCJlcnIiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImFwcGx5IiwiZTEiLCJlMiIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJva19leG4iLCJvZl9leG4iLCJvZl9leG5fcmVzdWx0IiwibXNnIiwic2V4cF9vZiIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ0YWciLCJ0YWdfcyIsInRhZ19zX2xhenkiLCJ0YWdfYXJnIiwidW5pbXBsZW1lbnRlZCIsImNvbWJpbmVfZXJyb3JzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCQwIiwidHJ5X3dpdGhfam9pbiIsInN0YXRlJDAiLCJmb2xkX21hcGkiLCJtYXBpX2YiLCJmb2xkX2YiLCJ0aHJvdHRsZSIsImMiLCJjJDEiLCJjJDAiLCJpJDAiLCJhY2N1bSIsIm1heWJlX3YiLCJzaG93X2RlYnVnX21lc3NhZ2VzIiwiY2hlY2tfaW52YXJpYW50IiwieF8wMDQiLCJ2YWx1ZXNfcmVhZCIsInNldF92YWx1ZXNfcmVhZCIsInZhbHVlc19yZWFkJDAiLCJwaXBlX2lkXzAwOSIsInZhbHVlc19yZWFkXzAxMSIsImJuZHNfMDA4IiwiYXJnXzAxNSIsImJuZHNfMDA4JDAiLCJ2XzAxMyIsImJuZHNfMDA4JDEiLCJibmRzXzAwOCQyIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbSIsInZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdSIsIndoZW5fc2VudF9kb3duc3RyZWFtIiwiY29uc3VtZXIiLCJ3YW50cyIsImNvbnN1bWVyJDAiLCJ3YW50cyQwIiwib2ZfYV8wMjkiLCJjb25zdW1lcl8wMzMiLCJ3YW50c18wMzEiLCJibmRzXzAzMCIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMSIsInZfMDIwIiwicmVzMF8wMjIiLCJhcmcxXzAyNSIsImFyZzBfMDI0IiwicmVzMF8wMjYiLCJ2XzAyMyIsInJlczFfMDI3IiwiYm5kc18wMzAkMCIsImZpbGxfd2l0aF9lb2YiLCJpJDEiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIiwicmVhZHlfMDM5IiwiZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF8wMzciLCJibmRzXzAzNiIsImJuZHNfMDM2JDAiLCJibmRzXzAzNiQxIiwiY29uc3VtZXJzIiwic2V0X2NvbnN1bWVycyIsImJsb2NrZWRfcmVhZHMiLCJibG9ja2VkX2ZsdXNoZXMiLCJwdXNoYmFjayIsInNldF9wdXNoYmFjayIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJzaXplX2J1ZGdldCQwIiwic2V4cF9vZl9waXBlIiwib2ZfYV8wNDEiLCJvZl9waGFudG9tXzA0MiIsImlkXzA0NCIsImluZm9fMDQ2IiwiYnVmZmVyXzA1MCIsInNpemVfYnVkZ2V0XzA1MiIsInB1c2hiYWNrXzA1NCIsIm51bV92YWx1ZXNfcmVhZF8wNTYiLCJyZWFkX2Nsb3NlZF8wNjQiLCJjbG9zZWRfMDYyIiwiYmxvY2tlZF9yZWFkc18wNjAiLCJibG9ja2VkX2ZsdXNoZXNfMDU4IiwiY29uc3VtZXJzXzA2NiIsInVwc3RyZWFtX2ZsdXNoZWRzXzA2OCIsImJuZHNfMDQzIiwiYXJnXzA2OSIsImJuZHNfMDQzJDAiLCJhcmdfMDY3IiwiYm5kc18wNDMkMSIsImFyZ18wNjUiLCJibmRzXzA0MyQyIiwiYXJnXzA2MyIsImJuZHNfMDQzJDMiLCJhcmdfMDYxIiwiYm5kc18wNDMkNCIsImFyZ18wNTkiLCJibmRzXzA0MyQ1IiwiYXJnXzA1NyIsImJuZHNfMDQzJDYiLCJhcmdfMDU1IiwiYm5kc18wNDMkNyIsImFyZ18wNTMiLCJibmRzXzA0MyQ4IiwiYXJnXzA1MSIsImJuZHNfMDQzJDkiLCJ2XzA0NyIsImFyZ18wNDkiLCJibmRfMDQ4IiwiYm5kc18wNDMkMTAiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMTEiLCJoYXNoIiwiaXNfcmVhZF9jbG9zZWQiLCJwdXNoYmFjayQxIiwieF8wNzMiLCJ4XzAzNSIsInNleHBfb2ZfcGhhbnRvbSIsIm9mX2FfMDc0IiwieF8wNzUiLCJzZXhwX29mX3BoYW50b20kMCIsIm9mX2FfMDc2IiwieF8wNzciLCJpZF9yZWYiLCJpbml0aWFsX2J1ZmZlciIsInZhbGlkYXRlX3NpemVfYnVkZ2V0IiwidXBkYXRlX3B1c2hiYWNrIiwieF8wNzgiLCJjbG9zZV9yZWFkIiwieF8wNzkiLCJmbHVzaCIsImNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4YyIsInciLCJjcmVhdGVfcmVhZGVyIiwiY2xvc2Vfb25fZXhjZXB0aW9uIiwiY3JlYXRlX3dyaXRlciIsInZhbHVlc193ZXJlX3JlYWQiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInN0YXJ0X3dyaXRlIiwieF8wODEiLCJ4XzA4MCIsImZpbmlzaF93cml0ZSIsImJsb2NrZWRfcmVhZCIsIml2YXIkMSIsInRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2siLCJ0cmFuc2Zlcl9pbiIsIndyaXRlIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlJDAiLCJ3cml0ZV93aGVuX3JlYWR5Iiwid3JpdGVfaWZfb3BlbiIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiIsImVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIiwieF8wODMiLCJzdGFydF9yZWFkIiwibGFiZWwiLCJ4XzA4NCIsImdlbl9yZWFkX25vdyIsImdldF9tYXhfcXVldWVfbGVuZ3RoIiwibWF4X3F1ZXVlX2xlbmd0aCQwIiwicmVhZF9ub3ciLCJyZWFkX25vdyQwIiwicmVhZCQwIiwicmVhZF9leG4iLCJ2YWx1ZXNfYXZhaWxhYmxlIiwicmVhZF9jaG9pY2UiLCJyZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXgiLCJyZWFkX2V4YWN0bHkiLCJudW1fdmFsdWVzIiwiYWxyZWFkeV9yZWFkIiwiZG93bnN0cmVhbV9mbHVzaGVkIiwidXBzdHJlYW1fZmx1c2hlZCIsImFkZF9jb25zdW1lciIsInBpcGVfaWQiLCJjb25zdW1lciQxIiwidXBzdHJlYW0iLCJkb3duc3RyZWFtIiwidXBzdHJlYW1fZmx1c2hlZCQwIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsImZvbGRfZ2VuIiwiZmx1c2hlZCIsImZvbGRfd2l0aG91dF9wdXNoYmFjayIsIndpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yIiwiaXRlcl93aXRob3V0X3B1c2hiYWNrIiwibWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMCIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMSIsInJlbWFpbmluZyIsInJlbWFpbmluZyQwIiwiZHJhaW4iLCJkcmFpbl9hbmRfY291bnQiLCJzdW0iLCJyZWFkX2FsbCIsImlucHV0IiwidG9fc3RyZWFtX2RlcHJlY2F0ZWQiLCJvZl9zdHJlYW1fZGVwcmVjYXRlZCIsInRyYW5zZmVyIiwibmV4dF9kZWZlcnJlZCIsImNoZWNrX2Nsb3NlZF9sb29wX25leHQiLCJ0cmFuc2Zlcl9nZW4iLCJvdXRwdXQiLCJsaW5rIiwidW5saW5rIiwib3V0cHV0X2Nsb3NlZCIsInRyYW5zZmVyJDAiLCJ0cmFuc2Zlcl9pZCIsIm1hcF9nZW4iLCJjb25jYXRfbWFwX2xpc3QiLCJmaWx0ZXJfbWFwJDAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAkMCIsIngkMCIsImZvbGRpbmdfbWFwIiwiYWNjdW0kMCIsImVtcHR5Iiwic2luZ2xldG9uIiwid3JpdGVyIiwicmVhZGVyIiwic3ltYm9sIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSQxIiwic2VxdWVuY2UkMCIsInRvX3NlcXVlbmNlIiwiaW50ZXJsZWF2ZV9waXBlIiwiaW5wdXRzIiwib3V0cHV0X3dyaXRlciIsIm51bV9waXBlc19yZW1haW5pbmciLCJkZWNyX251bV9waXBlc19yZW1haW5pbmciLCJoZWFwIiwiaGFuZGxlX3JlYWQiLCJlb2Zfb3Jfb2siLCJwb3BfaGVhcF9hbmRfbG9vcCIsImluaXRpYWxfcHVzaCIsImNvbmNhdF9waXBlIiwiZm9yayIsInB1c2hiYWNrX3VzZXMiLCJ3cml0ZXIwIiwicmVhZGVyMCIsIndyaXRlcjEiLCJyZWFkZXIxIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCIsInNvbWVfcmVhZGVyX3dhc19jbG9zZWQkMCIsInN0aWxsX29wZW4iLCJmaWx0ZXJfb3BlbiIsInN0aWxsX29wZW4kMCIsInNldF9pbmZvIiwidmFsdWVfYXZhaWxhYmxlIiwic2V0X3ZhbHVlX2F2YWlsYWJsZSIsInRha2VuIiwiY3VycmVudF92YWx1ZSIsInZhbHVlX2F2YWlsYWJsZSQwIiwidGFrZW4kMCIsImN1cnJlbnRfdmFsdWUkMCIsInZhbHVlX2F2YWlsYWJsZSQxIiwidmFsdWVfYXZhaWxhYmxlX2Z1biIsImFfMDExIiwiYl8wMTIiLCJ0YWtlbl9mdW4iLCJjdXJyZW50X3ZhbHVlX2Z1biIsInhfMDEwIiwidGFrZW5fMDA2IiwiY3VycmVudF92YWx1ZV8wMDQiLCJ2YWx1ZV9hdmFpbGFibGVfMDA4IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInBlZWtfZXhuIiwieF8wMTMiLCJvZl9hXzAxNCIsInhfMDE1IiwieF8wMTciLCJ3cml0ZV9vbmx5IiwidGFrZV9ub25lbXB0eSIsInRha2Vfbm93X2V4biIsInRha2Vfbm93IiwidGFrZSIsInVwZGF0ZV9leG4iLCJ0YWtlbiQxIiwicHV0IiwicGlwZV93aGVuX3JlYWR5IiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJvbl9ldmVudCIsImFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdCIsImN1cnJlbnRfY29ubmVjdGlvbiIsImNvbm4iLCJjbG9zZV9maW5pc2hlZCQwIiwiaXNfY2xvc2VkJDAiLCJjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QiLCJzZXhwX29mX3QkMSIsInBhcmFtIiwiY29ubl8wMjMiLCJuZXh0X2Nvbm5lY3RfcmVzdWx0XzAyNiIsImRvbl90X3JlY29ubmVjdF8wMzQiLCJjbG9zZV9maW5pc2hlZF8wMzIiLCJjbG9zZV9zdGFydGVkXzAzMCIsImV2ZW50X2hhbmRsZXJfMDI4IiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYm5kc18wMTAiLCJhcmdfMDE0IiwiYm5kc18wMTAkMCIsImFyZ18wMTIiLCJibmRzXzAxMCQxIiwiYXJnXzAyOSIsImJuZHNfMDE2JDUiLCJhcmdfMDI3IiwiYm5kc18wMTYkNiIsInZfMDI1IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwic3RoIiwic3RoJDAiLCJyYW5kb21fc3RhdGUiLCJzdGgkMSIsInRpbWVfc291cmNlIiwiZXZlbnRfaGFuZGxlciIsImRlZmF1bHRfcmV0cnlfZGVsYXkiLCJub25fcmFuZG9taXplZF9kZWxheSIsInJldHJ5X2RlbGF5X3NwYW4iLCJyYW5kb21fc3RhdGUkMCIsInNwYW4iLCJzcGFuJDAiLCJkaXN0YW5jZSIsIndhaXQiLCJyZXRyeV9kZWxheSIsInByZXZpb3VzX2FkZHJlc3MiLCJwcmV2aW91c19lcnJvciIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJlIiwic2FtZV9hc19wcmV2aW91c19lcnJvciIsImFkZHIiLCJwcmV2aW91c19hZGRyZXNzJDAiLCJzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MiLCJwb3MiLCJhbGwiLCJlcnJvcl9zb3VyY2VfMDA1IiwicmV0aXJlZF9rcmJfd29yZCIsImNvbXBhcmUiLCJ0X29mX3NleHAiLCJzZXhwXzAwNiIsInNleHBfb2ZfdCIsImdyb3VwIiwibWFnaWNfd29yZCIsIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSIsImdlbl9tYWdpY19udW1iZXIiLCJ3b3JkIiwiYWNjIiwiYyIsIm1hZ2ljX251bWJlciIsInQiLCJwIiwiYnlfbWFnaWNfbnVtYmVyIiwibWFnaWNfd29yZHMiLCJtYWdpY19udW1iZXJzIiwibiIsIm1hZ2ljX251bWJlciQwIiwic2l6ZSIsInNleHBpZmllciIsImVxdWFsIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMDciLCJiXzAwOCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJjcmVhdGVfZXhuIiwicHJvdG9jb2wiLCJzdXBwb3J0ZWRfdmVyc2lvbnMiLCJnZXRfcHJvdG9jb2wiLCJ2ZXJzaW9ucyIsInByb3RvY29scyIsIm5lZ290aWF0ZSIsImFsbG93X2xlZ2FjeV9wZWVyIiwidXMiLCJwZWVyIiwidXNfdmVyc2lvbnMiLCJ1c19wcm90b2NvbCIsInBlZXJfdmVyc2lvbnMiLCJwZWVyX3Byb3RvY29sIiwidmVyc2lvbiIsIngiLCJtYXRjaGVzX21hZ2ljX3ByZWZpeCIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImYiLCJhbnlfbWFnaWNfcHJlZml4IiwiZ3JvdXAkMCIsImJpbl9zaXplX3QkMCIsImFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZSIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkZXJfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlJDAiLCJib3VuZGVkX2xpc3RfYmluX3NpemUiLCJiaW5fc2hhcGVfdCIsImJpbl90IiwiYmluX3NpemVfdCIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZV90IiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJ1ZiIsInBvc19yZWYiLCJ2bmF0MCIsIm9mX2ludF9leG4iLCJvZl93cml0ZXIiLCJ3cml0ZSIsInNpemUiLCJ3cml0ZSQwIiwicG9zIiwiYSIsImxlbiIsInBvcyQwIiwic2l6ZSQwIiwib2ZfdHlwZV9jbGFzcyIsImJpbl9hIiwidGVzdCIsInMiLCJiaWdzdHJpbmciLCJiaWdzdHJpbmdfdmVyc2lvbiIsIndyaXRlcl93aXRoX2xlbmd0aCIsIndpdGhfbGVuZ3RoX3ZlcnNpb24iLCJwb3ciLCJ4IiwiZGVzY3JpcHRpb25zIiwiZXJyb3Jfc291cmNlXzAxNyIsImdyb3VwIiwidjIiLCJ2MSIsInZpbnQiLCJ2X25hbWUiLCJ2X3ZlcnNpb24iLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsIm4iLCJoYXNoX2ZvbGRfdCIsImhzdiIsImFyZyIsImhzdiQwIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfMDA0IiwiZmllbGRfc2V4cHNfMDA1IiwibmFtZV8wMDYiLCJ2ZXJzaW9uXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwic2V4cF8wMDQkMCIsImZpZWxkX3NleHBzXzAxNCIsImZpZWxkX25hbWVfMDEyIiwidGFpbF8wMTkiLCJmaWVsZF9zZXhwXzAxMyQyIiwiZmllbGRfc2V4cF8wMTMiLCJ4XzAyMCIsImZpZWxkX3NleHBfMDEzJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMSIsImZ2YWx1ZV8wMTYiLCJ2ZXJzaW9uXzAwOSIsIm5hbWVfMDA3Iiwic2V4cF9vZl90IiwidmVyc2lvbl8wMjQiLCJuYW1lXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImFyZ18wMjMiLCJibmRzXzAyMSQwIiwic3VtbWFyaXplIiwidHMiLCJ2ZXJzaW9uIiwibmFtZSIsInN1bW1hcnkiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDMiLCJ0IiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDg2IiwiaWRfMDg0IiwiYXJnXzA4NyIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX3QkOSIsImJpbl9yZWFkX3QkMTAiLCJiaW5fcmVhZGVyX3QkNCIsImJpbl9yZWFkX25hdDBfdCIsImJpbl9yZWFkX25hdDBfdCQwIiwiYmluX3JlYWRlcl9uYXQwX3QiLCJiaW5fc2l6ZV9uYXQwX3QiLCJiaW5fd3JpdGVfbmF0MF90IiwiYmluX3dyaXRlcl9uYXQwX3QiLCJncm91cCQ1IiwiYmluX3NoYXBlX3QkMiIsInJlc3BvbnNlIiwiZXJyb3IiLCJiaW5fc2l6ZV90JDIiLCJzaXplX29mX3Jlc3BvbnNlIiwic2l6ZV9vZl9lcnJvciIsImJpbl93cml0ZV90JDIiLCJ3cml0ZV9yZXNwb25zZSIsIndyaXRlX2Vycm9yIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlIiwiYmluX3dyaXRlcl9lcnJvciIsImJpbl9yZWFkX3QkMTEiLCJvZl9yZXNwb25zZSIsIm9mX2Vycm9yIiwiYmluX3JlYWRfdCQxMiIsInZfdW51c2VkX3F1ZXJ5X2lkIiwidl9pbml0aWFsIiwiYmluX3JlYWRlcl90JDUiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlIiwiYmluX3JlYWRlcl9lcnJvciIsImJpbl90JDIiLCJiaW5fcmVzcG9uc2UiLCJiaW5fZXJyb3IiLCJzZXhwX29mX3QkMiIsIm9mX3Jlc3BvbnNlXzA4OCIsIm9mX2Vycm9yXzA4OSIsImluaXRpYWxfMDkzIiwidW51c2VkX3F1ZXJ5X2lkXzA5MSIsImFyZ18wOTQiLCJibmRzXzA5MCIsImFyZ18wOTIiLCJibmRzXzA5MCQwIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMiIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMiIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ1IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDYiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkX3QkMTQiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkX25hdDBfdCQxIiwiYmluX3JlYWRfbmF0MF90JDIiLCJiaW5fcmVhZGVyX25hdDBfdCQwIiwiYmluX3NpemVfbmF0MF90JDAiLCJiaW5fd3JpdGVfbmF0MF90JDAiLCJiaW5fd3JpdGVyX25hdDBfdCQwIiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMyIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ3IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDgiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX25lZWRzX2xlbmd0aCQzIiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMSIsIm9mX2FfMDk1IiwiYXJnMF8wOTYiLCJyZXMwXzA5NyIsImFyZzBfMDk4IiwicmVzMF8wOTkiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDMiLCJiaW5fcmVhZF9uYXQwX3QkNCIsImJpbl9yZWFkZXJfbmF0MF90JDEiLCJiaW5fc2l6ZV9uYXQwX3QkMSIsImJpbl93cml0ZV9uYXQwX3QkMSIsImJpbl93cml0ZXJfbmF0MF90JDEiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJsZW5ndGgiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJyZWFkX2ZvcmV2ZXIiLCJvbl9tZXNzYWdlIiwib25fZW5kX29mX2JhdGNoIiwicmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCIsImJpbl9yZWFkZXIiLCJwYWNrJDAiLCJjbG9zZSQwIiwiaXNfY2xvc2VkJDAiLCJtb25pdG9yIiwiYnl0ZXNfdG9fd3JpdGUiLCJmbHVzaGVkIiwicmVhZHlfdG9fd3JpdGUiLCJzZW5kX2Jpbl9wcm90IiwiYmluX3dyaXRlciIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ubyIsInN0b3BwZWQiLCJjYW5fc2VuZCIsInRyYW5zZmVyIiwib3B0IiwicGlwZSIsImYiLCJzdGgiLCJtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCIsImNvbnN1bWVyIiwiaXZhciIsIml0ZXIiLCJxIiwiZW5kX29mX3BpcGUiLCJ3cml0ZXJfMDA2IiwicmVhZGVyXzAwNCIsImFyZ18wMDciLCJibmRzXzAwMyIsImJuZHNfMDAzJDAiLCJjbG9zZSQxIiwiY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fIiwiY2FsbGJhY2tfMDAyIiwiY2xvc2VfY29ubmVjdGlvbiIsImNvbnRpbnVlJDAiLCJoYW5kbGVfZXhuIiwiY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIiwiZXhuIiwiY2FsbGJhY2siLCJ3cml0ZXJfMDA0IiwicXVlcnlfaWRfMDAyIiwicmVzcG9uZGVkXzAwNiIsImJuZHNfMDAxJDEiLCJjcmVhdGUiLCJxdWVyeV9pZCIsIndyaXRlciIsImxpZnQiLCJpbXBsIiwiYmluX21zZyIsInN0YXRlIiwic3RyIiwiaW1wbCQwIiwicmVzdWx0X21vZGUiLCJpbXBsJDEiLCJiaW5fcXVlcnkiLCJyZXN1bHRfbW9kZSQwIiwiaW1wbCQyIiwicmVzcCIsImltcGwkMyIsImJpbl91IiwiYmluX2kiLCJiaW5fcSIsImltcGwkNCIsImltcGwkNSIsImltcGwkNiIsInciLCJvZl9jb25uZWN0aW9uX3N0YXRlXzAwOCIsIm9uX2V4Y2VwdGlvbl8wMTgiLCJzaGFwZXNfMDE2IiwiZl8wMTQiLCJ2ZXJzaW9uXzAxMiIsInRhZ18wMTAiLCJhcmdfMDE5IiwiYm5kc18wMDkiLCJhcmdfMDE3IiwiYm5kc18wMDkkMCIsImFyZ18wMTUiLCJibmRzXzAwOSQxIiwiYXJnXzAxMyIsImJuZHNfMDA5JDIiLCJhcmdfMDExIiwiYm5kc18wMDkkMyIsImRlc2NyaXB0aW9uIiwibGlmdCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiZGF0YSIsImFkZF9sZW4kMCIsImFkZF9sZW4kMSIsImUkMCIsImUiLCJhcmdfMDE4Iiwic3ltYm9sIiwiZGVmZXJfcmVzdWx0IiwiZCIsImQkMCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAzMCIsImJuZHNfMDA4IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmdfMDI0IiwiYm5kc18wMDgkMCIsImFyZ18wMjIiLCJibmRzXzAwOCQxIiwiYXJnXzAyMCIsImJuZHNfMDA4JDIiLCJibmRzXzAwOCQzIiwiYXJnXzAxNiIsImJuZHNfMDA4JDQiLCJhcmdfMDE0IiwiYm5kc18wMDgkNSIsImFyZ18wMTIiLCJibmRzXzAwOCQ2IiwiYXJnXzAxMCIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJpZCIsInJlc3VsdCIsInNleHAiLCJ4XzAzNCIsIndyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX2RhdGEiLCJiaW5fd3JpdGVfdm9pZCIsImJ1ZmZlciIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hcyIsImJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIiwic3RyX2xlbiIsIm5leHQiLCJiaW5fc2l6ZV9uYXQwX2hlYWRlciIsImhlYWRlcl9wcmVmaXgiLCJkYXRhX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuIiwic3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuIiwiYmluX3dyaXRlX25hdDBfaGVhZGVyIiwiYmluX3dyaXRlcl9uYXQwX2hlYWRlciIsImJpbl9zaXplX21lc3NhZ2UiLCJiaW5fd3JpdGVfbWVzc2FnZSIsImJpbl93cml0ZXJfbWVzc2FnZSIsImJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyIsImluc3RhbmNlIiwiY2xvc2VkIiwid3JpdGVfZW9mIiwid3JpdGVfbWVzc2FnZSQwIiwic3RyZWFtX3dyaXRlciIsImNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbiIsImdyb3VwcyIsImVsZW1lbnRfaW5fZ3JvdXAiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQwIiwiaW5zdGFuY2UkMCIsIndyaXRlJDEiLCJtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24iLCJvbl9leGNlcHRpb24iLCJhcHBseV9pbXBsZW1lbnRhdGlvbiIsImltcGxlbWVudGF0aW9uIiwicXVlcnkiLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJiaW5fcXVlcnlfcmVhZGVyIiwicXVlcnlfY29udGVudHMiLCJleG4kMCIsImYkMCIsImxlbiQwIiwiZiQxIiwiYmluX3Jlc3BvbnNlX3dyaXRlciIsImJpbl9xdWVyeV9yZWFkZXIkMCIsInF1ZXJ5X2NvbnRlbnRzJDAiLCJkYXRhJDAiLCJleG4kMSIsImJhY2t0cmFjZSIsImYkMiIsInJlc3BvbmRlciIsImlzX3VuY2F1Z2h0X2V4biIsInJlc3VsdCQwIiwiY2hlY2tfcmVzcG9uZGVkIiwiciIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciQxIiwic3RyZWFtX3F1ZXJ5IiwibGVuJDEiLCJkYXRhJDEiLCJmJDMiLCJpbXBsX3dpdGhfc3RhdGUiLCJmJDYiLCJ3cml0ZXIkMCIsInJ1bl9pbXBsIiwic3BsaXRfb2siLCJoYW5kbGVfb2siLCJvayIsImluaXRpYWwiLCJmJDQiLCJwaXBlX3IiLCJmJDUiLCJmbHVzaCIsImFjYyIsInByb2R1Y2Vyc19mbHVzaGVkIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsInRhZyIsImlfcyIsImR1cHMiLCJpIiwiaW5zdGFudGlhdGUiLCJjb25uZWN0aW9uX3N0YXRlIiwidW5wYWNrZWQiLCJjcmVhdGVfZXhuIiwibnVsbCQwIiwiYWRkX2V4biIsImRlc2MiLCJhZGQiLCJpbXBsZW1lbnRhdGlvbnMkMCIsIm9uX3Vua25vd25fcnBjJDAiLCJjYWxsIiwiZXhwZXJ0IiwiY2Fubm90X3NlbmQiLCJ4XzAzOSIsIm1hcmtfcmVzcG9uZGVkIiwic2NoZWR1bGUiLCJoZWFkZXIiLCJoYW5kbGVfc2VuZF9yZXN1bHQkMCIsIndyaXRlX2JpZ3N0cmluZyIsIndyaXRlX2Jpbl9wcm90IiwibXNnIiwiZXJyb3Jfc291cmNlXzA0NiIsIm5lZ290aWF0ZSQwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJ0X29mX3NleHAkMCIsInNleHBfMDMzIiwiZmllbGRfc2V4cHNfMDM0IiwidGltZW91dF8wMzUiLCJzZW5kX2V2ZXJ5XzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNDgiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA0OSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDQiLCJzZW5kX2V2ZXJ5XzAzOCIsInRpbWVvdXRfMDM2Iiwic2VuZF9ldmVyeV8wNTMiLCJ0aW1lb3V0XzA1MSIsImFyZ18wNTQiLCJibmRzXzA1MCIsImFyZ18wNTIiLCJibmRzXzA1MCQwIiwidl90aW1lb3V0Iiwidl9zZW5kX2V2ZXJ5Iiwic2VuZF9ldmVyeSIsInRpbWVvdXQiLCJzdGgkMCIsImhlYXJ0YmVhdF9jb25maWdfMDYzIiwiZGVzY3JpcHRpb25fMDYxIiwiaGVhcnRiZWF0X2NhbGxiYWNrc18wNjUiLCJsYXN0X3NlZW5fYWxpdmVfMDY3IiwiaGVhcnRiZWF0X2V2ZW50XzA4MyIsInRpbWVfc291cmNlXzA4MSIsImltcGxlbWVudGF0aW9uc19pbnN0YW5jZV8wNzkiLCJjbG9zZV9maW5pc2hlZF8wNzciLCJjbG9zZV9zdGFydGVkXzA3NSIsIm9wZW5fcXVlcmllc18wNzMiLCJ3cml0ZXJfMDcxIiwicmVhZGVyXzA2OSIsImFyZ18wODQiLCJibmRzXzA2MCIsImFyZ18wODIiLCJibmRzXzA2MCQwIiwiYXJnXzA4MCIsImJuZHNfMDYwJDEiLCJhcmdfMDc4IiwiYm5kc18wNjAkMiIsImFyZ18wNzYiLCJibmRzXzA2MCQzIiwiYXJnXzA3NCIsImJuZHNfMDYwJDQiLCJhcmdfMDcyIiwiYm5kc18wNjAkNSIsImFyZ18wNzAiLCJibmRzXzA2MCQ2IiwiYXJnXzA2OCIsImJuZHNfMDYwJDciLCJhcmdfMDY2IiwiYm5kc18wNjAkOCIsInRpbWVvdXRfMDU2Iiwic2VuZF9ldmVyeV8wNTgiLCJhcmdfMDU5IiwiYm5kc18wNTUiLCJhcmdfMDU3IiwiYm5kc18wNTUkMCIsImFyZ18wNjQiLCJibmRzXzA2MCQ5IiwiYXJnXzA2MiIsImJuZHNfMDYwJDEwIiwic2V4cF9vZl90X2h1bV93cml0ZXIiLCJ4XzA4NSIsImRpc3BhdGNoIiwicmVzcG9uc2VfaGFuZGxlciIsImJpbl93cml0ZXJfcXVlcnkiLCJtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyIsImRvX3NlbmQiLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImVycm9yJDAiLCJkdW1teV9idWZmZXIiLCJkdW1teV9yZWYiLCJjb250YWluc19tYWdpY19wcmVmaXgiLCJjcmVhdGUkMCIsImhhbmRzaGFrZV90aW1lb3V0IiwiaGVhcnRiZWF0X2NvbmZpZyIsInN0aCQxIiwic3RoJDIiLCJ0aW1lX3NvdXJjZSIsIndyaXRlciQxIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODgiLCJoZWFydGJlYXRfZnJvbV9ub3dfb24iLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJwZWVyIiwid2l0aF9jbG9zZSIsInRyYW5zcG9ydCIsImRpc3BhdGNoX3F1ZXJpZXMiLCJvbl9oYW5kc2hha2VfZXJyb3IiLCJoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIiwidCQwIiwic2VydmVyX3dpdGhfY2xvc2UiLCJvbl9oYW5kc2hha2VfZXJyb3IkMCIsImVycm9yX3NvdXJjZV8wMDkiLCJlcnJvcl9zb3VyY2VfMDI0Iiwic3ltYm9sJDAiLCJkaXNwYXRjaF9yYXciLCJjb25uIiwicXVlcnkkMCIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInNoYXBlcyIsImxzdCIsInNoYXBlIiwicXVlcnlfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQiLCJzaGFwZXMkMCIsImltcGxlbWVudCIsImltcGxlbWVudCQwIiwicmVzcG9uc2UkMCIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IiLCJkaXNwYXRjaCQwIiwiZGlzcGF0Y2hfZXhuIiwibWFrZV9kaXNwYXRjaCIsImRvX2Rpc3BhdGNoIiwicnBjX3RhZyIsImhhbmRsZV9yZXNwb25zZSIsImhhbmRsZV9lcnJvciIsInhfMDAyIiwiZGlzcGF0Y2gkMSIsInNjaGVkdWxlX2Rpc3BhdGNoIiwiaW1wbGVtZW50JDEiLCJpbXBsZW1lbnQkMiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uIiwiaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24kMCIsInZlcnNpb24kMCIsIm5hbWUkMCIsIm1zZ190eXBlX2lkIiwic2hhcGVzJDEiLCJkZXNjcmlwdGlvbiQwIiwiaW1wbGVtZW50JDMiLCJkaXNwYXRjaCQyIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciQwIiwiZGlzcGF0Y2gkMyIsImRpc3BhdGNoX2V4biQwIiwiaW1wbGVtZW50JDQiLCJkaXNwYXRjaCQ0Iiwic2NoZWR1bGVfZGlzcGF0Y2gkMCIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNyZWF0ZSQxIiwiY2xpZW50X3B1c2hlc19iYWNrIiwiYmluX2luaXRpYWxfcmVzcG9uc2UiLCJiaW5fdXBkYXRlX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2UiLCJhbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlIiwiY2xpZW50X3B1c2hlc19iYWNrJDAiLCJpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQiLCJ1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCIsImVycm9yX3Jlc3BvbnNlX3R5cGVfaWQiLCJtYWtlX2luaXRpYWxfbWVzc2FnZSIsImltcGxlbWVudF9nZW4iLCJpbXBsZW1lbnQkNSIsImMiLCJhYm9ydCIsInJlYWRfZXJyb3IiLCJoYW5kbGVyIiwiY29yZV9lcnIiLCJkaXNwYXRjaF9nZW4iLCJtYWtlX3VwZGF0ZV9oYW5kbGVyIiwiaW5pdGlhbF9zdGF0ZSIsImluaXRpYWxfaGFuZGxlciIsImVyciQxIiwiaW5pdGlhbF9tc2ciLCJpbml0aWFsJDAiLCJleHRyYSIsImhhbmRsZXIkMCIsImJpbl9yZWFkZXJfdXBkYXRlIiwiZXJyJDQiLCJlcnIkMyIsImVyciQyIiwiZGlzcGF0Y2gkNSIsImluaXQiLCJwaXBlX21ldGFkYXRhIiwicGlwZV93IiwiY3JlYXRlJDIiLCJiaW5fcXVlcnkkMCIsImJpbl9yZXNwb25zZSQwIiwiaW1wbGVtZW50JDYiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsImNyZWF0ZSQ0IiwiYiIsImJ1ZmZlciQwIiwib25lIiwib25lJDAiLCJ3cml0ZXJfZWxlbWVudF9pbl9ncm91cCIsImdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIiwicmVtb3ZlIiwidG9fbGlzdCIsImZsdXNoZWRfb3JfY2xvc2VkIiwiZGlyZWN0X3N0cmVhbV93cml0ZXIiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrJDEiLCJpbXBsZW1lbnRfZGlyZWN0IiwiZGlzcGF0Y2gkNiIsIm1ldGFkYXRhIiwiZGlzcGF0Y2hfZXhuJDEiLCJwaXBlX2FuZF9pZCIsImRpc3BhdGNoX2l0ZXIiLCJuYW1lJDEiLCJ2ZXJzaW9uJDEiLCJkZXNjcmlwdGlvbiQxIiwicXVlcnlfdHlwZV9pZCQwIiwiZXJyb3JfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQkMCIsImNyZWF0ZSQ1IiwiYmluX3N0YXRlIiwiYmluX3VwZGF0ZSIsImJpbl9xdWVyeSQxIiwiYmluX2Vycm9yJDAiLCJkaXNwYXRjaCQ3IiwidXBkYXRlX3IiLCJuYW1lJDIiLCJ2ZXJzaW9uJDIiLCJkZXNjcmlwdGlvbiQyIiwicXVlcnlfdHlwZV9pZCQxIiwic3RhdGVfdHlwZV9pZCIsInVwZGF0ZV90eXBlX2lkIiwiZXJyb3JfdHlwZV9pZCQwIiwiZGVzY3JpcHRpb24kMyIsInJwYyIsInJwYyQwIiwicnBjJDEiLCJycGMkMiIsInRoZV9ycGMiLCJub3RfdGhlX3JwYyIsInJwY19uYW1lJDAiLCJpbnB1dCIsImNvbnZlcnQiLCJmYWlsZWRfY29udmVyc2lvbiIsImFyZzNfMDA2IiwiYXJnMl8wMDUiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDciLCJ2XzAwMSIsInJlczFfMDA4Iiwidl8wMDIiLCJyZXMyXzAwOSIsInJlczNfMDEwIiwibXVsdGlwbGVfcmVnaXN0cmF0aW9ucyIsImFyZzFfMDE0Iiwidl8wMTEiLCJ2XzAxMiIsInJlczFfMDE2IiwiYWRhcHRlciIsImFkYXB0ZXJzIiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczFfMDI0IiwiYWRhcHRlcnMkMCIsImFkZF9ycGNfdmVyc2lvbiIsIm9sZF9ycGMiLCJ1cGdyYWRlIiwiZG93bmdyYWRlIiwiYWRhcHQiLCJmbiIsImFkYXB0ZWQiLCJvbGRfcXVlcnkiLCJhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIiwidXBncmFkZV9vcl9lcnJvciIsImRvd25ncmFkZV9vcl9lcnJvciIsInZhbHVlIiwiYWRkX3ZlcnNpb24iLCJhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJyZWdpc3RyeSIsImltcGxlbWVudF9tdWx0aSIsImxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpbyIsImxvZ192ZXJzaW9uIiwicnBjcyIsInZlcnNpb25zIiwicSQwIiwiciQwIiwiaW1wbGVtZW50X211bHRpX2dlbiIsImltcGxlbWVudF9kaXJlY3RfbXVsdGkiLCJ3cmFwcGVkX21vZGVsX29mX3F1ZXJ5Iiwid3JhcHBlZF9lcnJvcl9vZl9tb2RlbCIsImNvbnZlcnRfZWx0IiwiZHN3IiwiY29udmVydF9waXBlIiwibW9kZWxfc3RhdGUiLCJzdGF0ZSQwIiwiYmluX3NoYXBlX3F1ZXJ5IiwiYmluX3NpemVfcXVlcnkiLCJiaW5fd3JpdGVfcXVlcnkiLCJiaW5fcmVhZF9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5JDAiLCJiaW5fcmVhZGVyX3F1ZXJ5IiwiYmluX3NoYXBlX3N0YXRlIiwiYmluX3NpemVfc3RhdGUiLCJiaW5fd3JpdGVfc3RhdGUiLCJiaW5fd3JpdGVyX3N0YXRlIiwiYmluX3JlYWRfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSQwIiwiYmluX3JlYWRlcl9zdGF0ZSIsImJpbl9zaGFwZV91cGRhdGUiLCJiaW5fc2l6ZV91cGRhdGUiLCJiaW5fd3JpdGVfdXBkYXRlIiwiYmluX3dyaXRlcl91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciIsImJpbl9zaXplX2Vycm9yIiwiYmluX3dyaXRlX2Vycm9yIiwiYmluX3JlYWRfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciQwIiwibW9kZWxfb2ZfcXVlcnkiLCJzdGF0ZV9vZl9tb2RlbCIsImVycm9yX29mX21vZGVsIiwidXBkYXRlX29mX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlIiwiYmluX3NpemVfcmVzcG9uc2UiLCJiaW5fd3JpdGVfcmVzcG9uc2UiLCJiaW5fcmVhZF9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlJDAiLCJyZXNwb25zZV9vZl9tb2RlbCIsImFkZCQwIiwiaW1wbHMiLCJtZW51IiwibWVudV9pbXBscyIsInN1cHBvcnRlZF9ycGNzIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwib2ZfZW50cmllcyIsImVudHJpZXMiLCJyZXF1ZXN0IiwiY29ubmVjdGlvbiIsImNyZWF0ZV9kaXJlY3RseSIsIm1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIiwiY2FsbGVyX3ZlcnNpb25zIiwiY2FsbGVlX3ZlcnNpb25zIiwiY2FsbGVlX21lbnUiLCJ3aXRoX3NwZWNpZmljX3ZlcnNpb24iLCJkaXNwYXRjaGVyIiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwid2l0aF92ZXJzaW9uX21lbnUiLCJkaXNwYXRjaF9tdWx0aSIsImNvbm5fd2l0aF9tZW51IiwibXEiLCJxdWVyeV9vZl9tb2RlbCIsIm1vZGVsX29mX3Jlc3BvbnNlIiwiZGlzcGF0Y2hfaXRlcl9tdWx0aSIsImFib3J0X211bHRpIiwid3JhcHBlZF9xdWVyeV9vZl9tb2RlbCIsImNvbnZlcnRfcmVzdWx0IiwiY29udmVydF9vayIsIm1lc3NhZ2UiLCJ1IiwicnMiLCJtb2RlbF9vZl9zdGF0ZSIsIm1vZGVsX29mX2Vycm9yIiwibW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwiY2FsbGVlX21vZGVsX29mX3F1ZXJ5Iiwic3RhdGVfb2ZfY2FsbGVlX21vZGVsIiwiZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIiwidXBkYXRlX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9xdWVyeSQwIiwiYmluX3NpemVfcXVlcnkkMCIsImJpbl93cml0ZV9xdWVyeSQwIiwiYmluX3dyaXRlcl9xdWVyeSQwIiwiYmluX3JlYWRfcXVlcnkkMSIsImJpbl9yZWFkX3F1ZXJ5JDIiLCJiaW5fcmVhZGVyX3F1ZXJ5JDAiLCJiaW5fc2hhcGVfc3RhdGUkMCIsImJpbl9zaXplX3N0YXRlJDAiLCJiaW5fd3JpdGVfc3RhdGUkMCIsImJpbl93cml0ZXJfc3RhdGUkMCIsImJpbl9yZWFkX3N0YXRlJDEiLCJiaW5fcmVhZF9zdGF0ZSQyIiwiYmluX3JlYWRlcl9zdGF0ZSQwIiwiYmluX3N0YXRlJDAiLCJiaW5fc2hhcGVfdXBkYXRlJDAiLCJiaW5fc2l6ZV91cGRhdGUkMCIsImJpbl93cml0ZV91cGRhdGUkMCIsImJpbl93cml0ZXJfdXBkYXRlJDAiLCJiaW5fcmVhZF91cGRhdGUkMSIsImJpbl9yZWFkX3VwZGF0ZSQyIiwiYmluX3JlYWRlcl91cGRhdGUkMCIsImJpbl91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJxdWVyeV9vZl9jYWxsZXJfbW9kZWwiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwicmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlJDAiLCJiaW5fc2l6ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlX3Jlc3BvbnNlJDAiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlJDAiLCJiaW5fcmVhZF9yZXNwb25zZSQxIiwiYmluX3JlYWRfcmVzcG9uc2UkMiIsImJpbl9yZWFkZXJfcmVzcG9uc2UkMCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsInBpcGVfcmVhZCIsInhfMDA3Iiwib2ZfYV8wMDEiLCJidWZmZXJfMDA1IiwicGlwZV8wMDMiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlJDAiLCJ0b3RhbF9sZW4iLCJjb250aW51ZV9vcl93YWl0IiwibGVuZ3RoJDAiLCJzZXRfYnVmZmVyIiwicHJvY2Vzc19kYXRhIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSIsInByb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE1Iiwib2ZfYV8wMDkiLCJtb25pdG9yXzAxMyIsInBpcGVfMDExIiwiYm5kc18wMTAiLCJibmRzXzAxMCQwIiwiY2hlY2tfY2xvc2VkIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJjcmVhdGVfbWVzc2FnZSIsIm9uX21lc3NhZ2VfY291bnQiLCJnb3QiLCJzZXhwaWZpZXIiLCJlcXVhbCIsIm1lc3NhZ2UkMCIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMTYiLCJiXzAxNyIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJnb3QkMCIsInNleHBpZmllciQwIiwiZXF1YWwkMCIsImhlcmUkMCIsImNvbXBhcmF0b3IkMCIsIndyaXRlXzFfbXNnXzFfY2h1bmsiLCJ3cml0ZV8xX21zZ18zX2NodW5rIiwibXNnX2xlbiIsInNwbGl0X2F0IiwicGFydDEiLCJwYXJ0MiIsIndyaXRlXzJfbXNnXzFfY2h1bmsiLCJvbmVfbXNnIiwidHdvX21zZyIsIndyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZSIsIm51bSIsInN0b3BfYWZ0ZXJfb25fbWVzc2FnZSIsImFfMDIyIiwiYl8wMjMiLCJleHBlY3QiLCJhXzAyNiIsImJfMDI3Iiwib25lX21lc3NhZ2UiLCJ0d29fbWVzc2FnZXMiLCJvbmVfbWVzc2FnZV9wMSIsIm9uZV9tZXNzYWdlX3AyIiwicnBjX2Nvbm5lY3Rpb24iLCJjbG9zZV9maW5pc2hlZCQwIiwic3RyaW5nX2FmdGVyIiwicyIsIm4iLCJxdW90ZSIsImxlbiIsImJ1ZiIsImkiLCJjIiwib2ZfY2hhciIsImZ1bGxfc3BsaXQiLCJzdHIiLCJvbiIsInNlcCIsImxvb3AiLCJhY2MiLCJvZmZzZXQiLCJpbmRleCIsInRva2VuIiwic3BsaXQiLCJtYXgiLCJtYXgkMCIsInRva2VucyIsImxvb3AkMCIsInRyaW1fbGVmdF9zdWIiLCJsYXN0X2NoYXIiLCJjaGFycyIsImZpbmFsJDAiLCJsYXN0X2NoYXIkMCIsImkkMCIsImxhc3RfY2hhciQxIiwibmV3X2xlbiIsInNwbGl0X3RyaW1fbGVmdCIsInRyaW0iLCJ0cmltX2xlZnQiLCJub25fc3BhY2UiLCJmaW5kX2Zyb20iLCJvcHQiLCJwYXR0ZXJuIiwic3RoIiwic3RhcnQiLCJzdGFydCQwIiwicmVwbGFjZV9hbGwiLCJ3aXRoJDAiLCJwbGVuIiwic2xlbiIsImoiLCJyZXBsYWNlX2FsbF9hc3NvYyIsInRibCIsImZvdW5kIiwiZiQwIiwiZiIsInhzJDAiLCJ4JDEiLCJ4IiwiZngiLCJ4cyIsIngkMCIsImZ4JDAiLCJlIiwiaiQxIiwid2l0aCQyIiwicGF0dGVybiQxIiwiciIsIndpdGgkMSIsInBhdHRlcm4kMCIsImokMCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCIsImkkMSIsImFjYyQwIiwib2ZfYXJyYXkiLCJhIiwiYnl0ZXMiLCJ0b19hcnJheSIsImN1dCIsInNlcF9tYXgiLCJzX21heCIsImsiLCJsZWZ0X2VuZCIsInJpZ2h0X3N0YXJ0IiwicmN1dCIsInNlcF9zdGFydCIsImNob3BfcHJlZml4IiwicHJlZml4IiwicHJlZml4X2wiLCJzdHJpbmdfbCIsImRyb3AiLCJ0YWtlIiwiY3JlYXRlIiwic2l6ZSIsImVtcHR5IiwibGVuZ3RoIiwic3ViIiwiaW52YWxpZF9ib3VuZHMiLCJvcCIsImJ1ZmZlcl9sZW4iLCJvZmYiLCJsZW4iLCJtZXNzYWdlIiwiaW52YWxpZF9ib3VuZHNfYmxpdCIsInNyY19sZW4iLCJzcmNfb2ZmIiwiZHN0X2xlbiIsImRzdF9vZmYiLCJpbnZhbGlkX2JvdW5kc19tZW1jbXAiLCJidWYxX2xlbiIsImJ1ZjFfb2ZmIiwiYnVmMl9sZW4iLCJidWYyX29mZiIsImNvcHkiLCJ0IiwiZHN0Iiwic3Vic3RyaW5nIiwiYiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInMiLCJibGl0Iiwic3JjIiwiYmxpdF9mcm9tX3N0cmluZyIsImJsaXRfZnJvbV9ieXRlcyIsImJsaXRfdG9fYnl0ZXMiLCJtZW1jbXAiLCJidWYxIiwiYnVmMiIsIm1lbWNtcF9zdHJpbmciLCJtZW1jaHIiLCJidWYiLCJidWZfb2ZmIiwiY2hyIiwiYnVmX2xlbiIsImNhbWxfYmlnc3RyaW5nX3NldF8xNiIsImJzIiwiaSIsImNhbWxfYmlnc3RyaW5nX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX2dldF8xNiIsImNhbWxfYmlnc3RyaW5nX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX2dldF82NCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwieCIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQ2NF9iZSIsInNldF9pbnQ2NF9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCQwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50NjRfYmUiLCJnZXRfaW50NjRfbGUiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3NldF9pbnQxNl9sZSIsInVuc2FmZV9zZXRfaW50MzJfYmUiLCJ1bnNhZmVfc2V0X2ludDMyX2xlIiwidW5zYWZlX3NldF9pbnQ2NF9iZSIsInVuc2FmZV9zZXRfaW50NjRfbGUiLCJ1bnNhZmVfZ2V0X2ludDE2X2JlIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCQwIiwidW5zYWZlX2dldF9pbnQzMl9iZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInN0YXRlX3RvX29wdGlvbiIsIngiLCJ2IiwiZmFpbF90b19zdHJpbmciLCJtYXJrcyIsImVyciIsInN0YXRlX3RvX3Jlc3VsdCIsImNyZWF0ZSIsImJ1ZmZlciIsIm9mZiIsImxlbiIsImNvbW1pdHRlZF9ieXRlcyIsImxlbmd0aCIsInQiLCJjbGllbnRfY29tbWl0dGVkX2J5dGVzIiwicGFyc2VyX2NvbW1pdHRlZF9ieXRlcyIsImJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IiwicGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIiwiaW52YXJpYW50Iiwib2Zmc2V0X2luX2J1ZmZlciIsInBvcyIsImFwcGx5IiwiZiIsInVuc2FmZV9nZXRfY2hhciIsInVuc2FmZV9nZXRfaW50MTZfbGUiLCJ1bnNhZmVfZ2V0X2ludDMyX2xlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQ2NF9iZSIsImNvdW50X3doaWxlIiwiaSIsImxpbWl0IiwiY29tbWl0IiwiZmFpbF9rIiwiaW5wdXQiLCJtc2ciLCJzdWNjZWVkX2siLCJ0b19leHBvcnRlZF9zdGF0ZSIsImNvbnRpbnVlJDAiLCJjb21taXR0ZWQiLCJicyIsIm1vcmUiLCJ4JDAiLCJzIiwic2wiLCJpJDAiLCJwYXJzZSIsInAiLCJwYXJzZV9iaWdzdHJpbmciLCJpbnB1dCQwIiwicmV0dXJuJDAiLCJmYWlsIiwic3VjYyIsInN5bWJvbF9iaW5kIiwic3VjYyQwIiwic3ltYm9sX21hcCIsInN5bWJvbCIsIm0iLCJzeW1ib2wkMCIsInN1Y2MwIiwiaW5wdXQwIiwicG9zMCIsIm1vcmUwIiwic3VjYzEiLCJpbnB1dDEiLCJwb3MxIiwibW9yZTEiLCJsaWZ0IiwibGlmdDIiLCJtMSIsIm0yIiwic3VjYzIiLCJpbnB1dDIiLCJwb3MyIiwibW9yZTIiLCJsaWZ0MyIsIm0zIiwic3VjYzMiLCJpbnB1dDMiLCJwb3MzIiwibW9yZTMiLCJsaWZ0NCIsIm00Iiwic3VjYzQiLCJpbnB1dDQiLCJwb3M0IiwibW9yZTQiLCJzeW1ib2wkMSIsImEiLCJiIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsIm1hcmsiLCJmYWlsJDAiLCJzeW1ib2wkNCIsInEiLCJwb3MkMCIsIm1vcmUkMCIsInJldHVybiQxIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJsaWZ0MiQwIiwibGlmdDMkMCIsImxpZnQ0JDAiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwib2ZfYmlnc3RyaW5nIiwiYnVmIiwid3JpdGFibGVfc3BhY2UiLCJlbnN1cmUiLCJ0b19jb3B5Iiwib2xkX2xlbiIsIm5ld19sZW4iLCJzcGFjZSIsIm5ld19idWYiLCJ3cml0ZV9wb3MiLCJmZWVkX3N0cmluZyIsInN0ciIsImZlZWRfYmlnc3RyaW5nIiwiZmVlZF9pbnB1dCIsInNoaWZ0IiwibiIsImZvcl9yZWFkaW5nIiwidW5jb25zdW1lZCIsIm9wdCIsInN0aCIsIm9mX3VuY29uc3VtZWQiLCJmcm9tX3VuYnVmZmVyZWRfc3RhdGUiLCJidWZmZXJpbmciLCJjb25zdW1lZCIsImNvbnN1bWVkJDAiLCJ1bmNvbnN1bWVkJDAiLCJwYXJzZSQwIiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsImZlZWQiLCJzdGF0ZSIsImsiLCJidWZmZXJpbmckMCIsInN0YXRlX3RvX29wdGlvbiQwIiwic3RhdGVfdG9fcmVzdWx0JDAiLCJzdGF0ZV90b191bmNvbnN1bWVkIiwicHJvbXB0IiwiZGVtYW5kX2lucHV0IiwiZW5zdXJlX3N1c3BlbmRlZCIsImdvIiwidW5zYWZlX2FwcGx5IiwiYXRfZW5kX29mX2lucHV0IiwiZW5kX29mX2lucHV0IiwiYWR2YW5jZSIsImF2YWlsYWJsZSIsInVuc2FmZV9sb29rYWhlYWQiLCJwZWVrX2NoYXIiLCJwZWVrX2NoYXJfZmFpbCIsInNhdGlzZnkiLCJjIiwiY2hhciQwIiwibm90X2NoYXIiLCJjJDAiLCJhbnlfY2hhciIsImludDgiLCJwJDAiLCJhbnlfdWludDgiLCJwJDEiLCJhbnlfaW50OCIsInNraXAiLCJpbml0Iiwid2l0aF9idWZmZXIiLCJpbnB1dF9sZW4iLCJpbml0JDAiLCJjb3VudF93aGlsZTEiLCJzdWNjJDEiLCJmYWlsJDEiLCJzdHJpbmciLCJmJDAiLCJlIiwic3RyaW5nJDAiLCJzdHJpbmdfY2kiLCJza2lwX3doaWxlIiwidGFrZSIsIm4kMCIsInRha2VfYmlnc3RyaW5nIiwidGFrZV9iaWdzdHJpbmdfd2hpbGUiLCJ0YWtlX2JpZ3N0cmluZ193aGlsZTEiLCJ0YWtlX2JpZ3N0cmluZ190aWxsIiwicGVla19zdHJpbmciLCJ0YWtlX3doaWxlIiwidGFrZV93aGlsZTEiLCJ0YWtlX3RpbGwiLCJjaG9pY2UiLCJwcyIsImZhaWx1cmVfbXNnIiwiZml4X2RpcmVjdCIsInIiLCJmaXhfbGF6eSIsIm1heF9zdGVwcyIsInN0ZXBzIiwiZml4Iiwib3B0aW9uIiwiY29ucyIsInhzIiwibGlzdCIsInBzJDAiLCJjb3VudCIsImxvb3AiLCJtYW55IiwibWFueTEiLCJtYW55X3RpbGwiLCJzZXBfYnkxIiwic2VwX2J5Iiwic2tpcF9tYW55Iiwic2tpcF9tYW55MSIsImVuZF9vZl9saW5lIiwic2NhbiIsInN0YXRlJDAiLCJwYXJzZXIiLCJzY2FuJDAiLCJzY2FuX3N0YXRlIiwic2Nhbl9zdHJpbmciLCJjb25zdW1lX3dpdGgiLCJjb25zdW1lZF9iaWdzdHJpbmciLCJib3RoIiwibWFwIiwiYmluZCIsIm1hcDIiLCJtYXAzIiwibWFwNCIsImQiLCJpbnQxNiIsImJ5dGVzIiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJjc3QkMCIsIml0ZXJfY29uY2F0IiwiZm4iLCJzZXAiLCJidWYiLCJsYXN0IiwicmVzdCIsImNvbXBhcmVfb3B0IiwiYyIsInQkMCIsInQiLCJhIiwiYiIsImNvbXBhcmVfbGlzdCIsImYiLCJ0JDIiLCJ0JDEiLCJ4cyIsIngiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwib3B0Iiwic3RoIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwic3RoJDAiLCJ1c2VyaW5mbyIsInN0aCQxIiwiaG9zdCIsInN0aCQyIiwic3RoJDMiLCJxdWVyeV9rZXkiLCJzdGgkNCIsInF1ZXJ5X3ZhbHVlIiwic3RoJDUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfZGVjb2RlZF9vcHQiLCJjb21wYXJlX2hvc3QiLCJoMSIsImgyIiwiaXAyIiwiaXAxIiwiaXAyJDAiLCJpcDEkMCIsImgyJDAiLCJoMSQwIiwiY29tcGFyZSQwIiwiYyQzIiwiYyQxIiwiYyQ0Iiwia3ZsJDAiLCJrdmwiLCJyYXciLCJyYXckMCIsImMkMiIsInZsIiwidmwkMCIsImskMCIsImVxdWFsIiwidW5jYXN0X29wdCIsIm5vcm1hbGl6ZSIsInNjaGVtIiwiaW5pdCIsImhvc3QkMCIsImhvc3QkMSIsInRvX3N0cmluZyIsInVyaSIsImFkZF9wY3Rfc3RyaW5nIiwiZmlyc3Rfc2VnbWVudCIsInEiLCJnZXRfZGVjb2RlZF9vcHQiLCJ3aXRoX3NjaGVtZSIsImgkMCIsImhvc3Rfd2l0aF9kZWZhdWx0IiwiZGVmYXVsdCQwIiwid2l0aF91c2VyaW5mbyIsInVzZXJpbmZvJDAiLCJ1c2VyIiwicGFzc3dvcmQiLCJwYXNzIiwid2l0aF9wYXNzd29yZCIsInJlc3VsdCIsIndpdGhfcG9ydCIsIndpdGhfcGF0aCIsInBhdGgkMCIsIndpdGhfZnJhZ21lbnQiLCJmcmFnIiwicXVlcnkiLCJ2ZXJiYXRpbV9xdWVyeSIsImdldF9xdWVyeV9wYXJhbSIsImdldF9xdWVyeV9wYXJhbSQwIiwid2l0aF9xdWVyeSIsInFfcyIsIndpdGhfcXVlcnkkMCIsImFkZF9xdWVyeV9wYXJhbSIsImFkZF9xdWVyeV9wYXJhbSQwIiwiYWRkX3F1ZXJ5X3BhcmFtcyIsImFkZF9xdWVyeV9wYXJhbXMkMCIsInJlbW92ZV9xdWVyeV9wYXJhbSIsInBhdGhfYW5kX3F1ZXJ5IiwibWF0Y2giLCJzY2hlbWUkMCIsInJlc29sdmUiLCJiYXNlIiwic2NoZW1lJDEiLCJzY2hlbSQwIiwicGF0aF9zdHIiLCJyZWxwYXRoIiwiYnBhdGgiLCJiaG9zdCIsInJicGF0aCIsImNhbm9uaWNhbGl6ZSIsInVyaSQwIiwicHAiLCJwcGYiLCJwcF9odW0iLCJzdHJpbmdfb2ZfY2hhciIsInN0cmluZ19vZl9jaGFyX2xpc3QiLCJjaGFycyIsImlzX2RpZ2l0IiwiaGV4X2RpZ2l0IiwiaGV4YWRlY2ltYWwiLCJjX2RvdCIsImNfYXQiLCJjX2NvbG9uIiwibnVtIiwiZGVjX29jdGV0IiwidGhyZWUiLCJvbmUiLCJpcHY0X2FkZHJlc3MiLCJhZnRlcl9kb3VibGVfY29sb24iLCJkb3VibGVfY29sb24iLCJjb3VudCIsImZpbGxlcl9sZW5ndGgiLCJwYXJ0IiwiaGV4X3BhcnQiLCJzcGxpdF93aXRoIiwidHMiLCJ6cyIsImZvcm1hdF9hZGRyIiwic2VnbWVudHMiLCJzZWdtZW50IiwiYmVmb3JlX2RvdWJsZV9jb2xvbiIsImJlZm9yZSIsInJlcyIsImlwdjYiLCJpcHY2X2FkZHJlc3MiLCJwY3QiLCJkaWdpdHMiLCJwY3RfZW5jb2RlZCIsInN1Yl9kZWxpbXMkMCIsInVucmVzZXJ2ZWQiLCJyZWdfbmFtZSIsImRlY29kZWQiLCJwb3J0JDAiLCJhdXRob3JpdHkiLCJxdWVyeSQwIiwiZnJhZ21lbnQkMCIsInVyaV9yZWZlcmVuY2UiLCJ1cmlfcmVmZXJlbmNlJDAiLCJkZWNvZGVfaG9zdCIsInBhcnNlZCIsInBhcnNlZCQwIiwibWFrZSIsInBhdGgkMSIsIndpdGhfaG9zdCIsIndpdGhfdXJpIiwid2l0aF9wYXRoX29wdCIsIm8iLCJ3aXRoX3F1ZXJ5X29wdCIsIndpdGgkMCIsIm9mX3N0cmluZyIsImxldCQwIiwidG9fdXJpIiwib2ZfdXJpIiwidW5zdXBwb3J0ZWRfc2NoZW1lIiwib2Zfc3RyaW5nJDAiLCJlcnJvciIsInRvX3N0cmluZyQwIiwibWFrZSQwIiwiaG9zdCQyIiwiZXJyb3Jfc291cmNlXzAwNiIsImVycm9yX3NvdXJjZV8wMTgiLCJkZWZhdWx0XzA4MSIsImVycm9yX3NvdXJjZV8wNTUiLCJkZWZhdWx0XzExMSIsImNvbXBvbmVudF9vZl9zZXhwIiwiY29tcG9uZW50X29mX3NleHAkMCIsInNleHBfMDA0IiwiYXRvbV8wMDIiLCJzZXhwX2FyZ3NfMDA1IiwiYXRvbV8wMDIkMCIsImFyZzBfMDE1IiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsInJlczJfMDEzIiwicmVzMF8wMTYiLCJzZXhwXzAxNyIsInNleHBfb2ZfY29tcG9uZW50Iiwidl8wMTkiLCJhcmcyXzAyMiIsImFyZzFfMDIxIiwiYXJnMF8wMjAiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwicmVzMl8wMjUiLCJkZWZhdWx0XzA3MyIsImRlZmF1bHRfMDc1IiwiZGVmYXVsdF8wNzciLCJkZWZhdWx0XzA3OSIsImRlZmF1bHRfMDg0IiwidF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJzY2hlbWVfMDI5IiwidXNlcmluZm9fMDMxIiwiaG9zdF8wMzMiLCJwb3J0XzAzNSIsInBhdGhfMDM3IiwicXVlcnlfMDM5IiwiZnJhZ21lbnRfMDQxIiwiZHVwbGljYXRlc18wNDMiLCJleHRyYV8wNDQiLCJzZXhwXzAyNyQwIiwiZmllbGRfc2V4cHNfMDQ3IiwiZmllbGRfbmFtZV8wNDUiLCJ0YWlsXzA4NyIsImZpZWxkX3NleHBfMDQ2JDciLCJmaWVsZF9zZXhwXzA0NiIsInhfMDg4IiwiZmllbGRfc2V4cF8wNDYkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA0NiQxIiwiZnZhbHVlXzA2NiIsImZpZWxkX3NleHBfMDQ2JDIiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDYwIiwiZmllbGRfc2V4cF8wNDYkNCIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA0NiQ1IiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDQ2JDYiLCJmdmFsdWVfMDQ5Iiwic2NoZW1lXzAzMCIsInVzZXJpbmZvXzAzMiIsImhvc3RfMDM0IiwicG9ydF8wMzYiLCJwYXRoXzAzOCIsInF1ZXJ5XzA0MCIsImZyYWdtZW50XzA0MiIsInZfMDg1Iiwidl8wODUkMCIsInZfMDgzIiwidl8wODMkMCIsInZfMDgyIiwidl8wODIkMCIsInZfMDgwIiwidl8wODAkMCIsInZfMDc4Iiwidl8wNzgkMCIsInZfMDc2Iiwidl8wNzYkMCIsInZfMDc0Iiwidl8wNzQkMCIsImRlZmF1bHRfMDkxIiwiZGVmYXVsdF8wOTYiLCJkZWZhdWx0XzEwMSIsImRlZmF1bHRfMTA2IiwiZGVmYXVsdF8xMjQiLCJ0X29mX3NleHAkMCIsInNleHAiLCJ0Iiwic2V4cF9vZl90IiwiZnJhZ21lbnRfMTI1IiwicXVlcnlfMTE2IiwicGF0aF8xMTIiLCJwb3J0XzEwNyIsImhvc3RfMTAyIiwidXNlcmluZm9fMDk3Iiwic2NoZW1lXzA5MiIsImFyZ18xMjciLCJibmRzXzA4OSIsImJuZHNfMDg5JDAiLCJibmRfMTI2IiwiYm5kc18wODkkMSIsImFyZzFfMTE4IiwiYXJnMF8xMTciLCJyZXMwXzExOSIsInJlczFfMTIwIiwiYXJnXzEyMiIsImJuZF8xMjEiLCJhcmdfMTE0IiwiYm5kc18wODkkMiIsImJuZF8xMTMiLCJhcmdfMTA5IiwiYm5kc18wODkkMyIsImJuZF8xMDgiLCJhcmdfMTA0IiwiYm5kc18wODkkNCIsImJuZF8xMDMiLCJhcmdfMDk5IiwiYm5kc18wODkkNSIsImJuZF8wOTgiLCJhcmdfMDk0IiwiYm5kc18wODkkNiIsImJuZF8wOTMiLCJjb21wYXJlIiwiYSIsImIiLCJlcXVhbCIsImlzX3ZhbGlkX2ZpZWxkX25hbWUiLCJzZWVuIiwibmFtZSIsImFueV9vZl9zZXhwIiwicyIsImxpc3QkMCIsInYkMCIsIm5hbWUkMSIsInNlZW4kMiIsInJldl9hY2MiLCJsaXN0IiwicmVzdCIsInJldl9hY2MkMCIsInNlZW4kMCIsInJlc3QkMCIsInYiLCJuYW1lJDAiLCJyZXZfYWNjJDEiLCJzZWVuJDEiLCJsIiwibG9nX3MiLCJzZXhwIiwibG9nX3NfYXNfc3RyaW5nIiwic2V4cF9vZl90IiwiZmllbGQyXzA0MyIsImZpZWxkMV8wNDEiLCJhcmdfMDQ0IiwiYm5kc18wNDAiLCJzb21lX25hbWVfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2IiwiYXJnXzA0MiIsImJuZHNfMDQwJDAiLCJ0b19zdHJpbmciLCJhbnkiLCJzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMiLCJpIiwieF8wNDkiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMF8wNDciLCJyZXMxXzA0OCIsImNvbXBhcmVfY2xvc2VfZXZlbnRfY29kZSIsInNleHBfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImFsbF9vZl9jbG9zZV9ldmVudF9jb2RlIiwiY29tcGFyZSIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsImFjYyIsImwkMCIsImVudW1lcmF0ZV8wMTEiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwibCQyIiwiZW51bWVyYXRlXzAxMCIsImFjYyQyIiwiYWxsIiwibm9ybWFsX2Nsb3N1cmUiLCJvZl9pbnQiLCJjb2RlIiwidG9faW50IiwiY29kZSQwIiwieF8wMzEiLCJ4XzAzMCIsImNsaWVudCIsIm9wdCIsImhlYXJ0YmVhdF9jb25maWciLCJkZXNjcmlwdGlvbiIsImltcGxlbWVudGF0aW9ucyIsInN0aCIsInVyaSIsInNjaGVtZSIsInBvcnQiLCJwb3J0JDAiLCJob3N0IiwibWF0Y2gkMSIsInJlcyIsImgiLCJkZXNjcmlwdGlvbiQwIiwiZnJvbV9zZXJ2ZXJfdyIsImZyb21fc2VydmVyX3IiLCJ0b19zZXJ2ZXJfdyIsInRvX3NlcnZlcl9yIiwiZXJyb3IiLCJ0cmFuc3BvcnQiLCJjb25uZWN0aW9uIiwiZXhuIiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImltcGxlbWVudGF0aW9ucyQwIiwiZXhuJDEiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiYnVmZmVyIiwiZXhuJDAiLCJjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCIsImNsaWVudF9leG4iLCJjcmVhdGVfZnJvbV91cmkiLCJlcXVhbCQwIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJzZXhwX29mX3QkMSIsInhfMDA3IiwiY3JlYXRlX2Zyb21fdXJpX29wdGlvbiIsIm1ldGhvZF9zdHJpbmckMCIsInJlcXVlc3QiLCJvbl9wcm9ncmVzcyIsIm9uX3VwbG9hZF9wcm9ncmVzcyIsInVybCIsImhlYWRlcnMiLCJtZXRob2Rfd2l0aF9hcmdzIiwiYXJncyIsIm1ldGhvZF9zdHJpbmckMSIsInVybCQwIiwidmFsdWUiLCJyZXNwb25zZSIsImNvbnRlbnQiLCJnZXRfaGVhZGVyIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJib2R5IiwiYm9keSQwIiwiYiIsImQiLCJmZCIsImdldCIsImFyZ3VtZW50cyQwIiwicmVzcCIsInBvc3QiLCJyZWFkeV9zdGF0ZV9jaGFuZ2UiLCJjb21wbGV0ZSIsInNsZWVwIiwieWllbGQkMCIsImV4dHJhY3RfanNfZXJyb3IiLCJzdGF0ZSIsInRpbWVvdXRzIiwicnVuX2FmdGVyIiwiZiIsIm1zIiwibG9vcCIsInQiLCJuZXh0X3dha2V1cCIsIm5leHQiLCJub3ciLCJkX21zJDAiLCJlcnIiLCJlcnIkMCIsImRfbXMiLCJhdCIsInJ1bl90aW1lb3V0IiwicnVuIiwibG9nIiwiZXJyJDIiLCJleG4kMiIsImV4biQzIiwiZXJyJDEiLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwiY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0IiwicmlnaHQiLCJsZWZ0X2lzX25vbmUiLCJyaWdodF9pc19ub25lIiwiY3JlYXRlX2V4biIsIm9wdCIsIm51bV9sZWF2ZXMiLCJyZWR1Y2UiLCJzdGgiLCJudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwiLCJ2YWxpZGF0ZV9pbmRleCIsImxlbmd0aCIsInNldF9leG4iLCJjaGlsZF9pbmRleCIsInBhcmVudCIsImdldF9leG4iLCJ4XzAwMiIsImNvbXB1dGVfZXhuIiwic2V4cF9vZl90Iiwic3RlcHMiLCJyIiwiaW5pdCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDEiLCJzdGVwc18wMDUiLCJpbml0XzAwMyIsImJuZHNfMDAyIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJhcmdfMDA2IiwiYm5kc18wMDIkMCIsImFyZ18wMDQiLCJibmRzXzAwMiQxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ2YWx1ZSIsInQkMCIsImF0Iiwic3RlcHMkMSIsImluaXQkMSIsInN0ZXBzJDAiLCJpbml0JDAiLCJ0IiwiY29uc3RhbnQiLCJjcmVhdGVfZXhuIiwidGltZTIiLCJ0aW1lMSIsInhfMDExIiwiY3JlYXRlX2Zyb21fc2VxdWVuY2UiLCJjcmVhdGUiLCJsZW4iLCJsZW5ndGgiLCJ0Iiwic2V0Iiwic2V0X2V4biIsImkiLCJ4IiwiZ2V0IiwiaXNfc29tZSIsImlzX25vbmUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsIml0ZXIiLCJmIiwidiIsIml0ZXJpIiwiYmxpdCIsInNyYyIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY3JlYXRlIiwiaW5kZXgiLCJnZXQiLCJ0Iiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpc19ub25lIiwiaXNfc29tZSIsInNldCIsImJsb2NrIiwic2V4cF9vZl90Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsImtleXNfd2l0aF91bnVzZWRfZGF0YV8wMDYiLCJlbnRyeV9ieV9rZXlfMDA0IiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJyZXBsYWNlIiwiYWRkX2V4biIsInhfMDEwIiwiZmluZCIsImZpbmRfb3JfYWRkIiwiZGVmYXVsdCQwIiwidiIsInNleHBfb2ZfdCIsImNvbmNhdCIsImRlYnVnIiwidGFnIiwiYXJnMF8wMDEiLCJhcmcxXzAwMiIsInNleHBfb2ZfYSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJyZWFsbG9jIiwidCIsImxlbiIsImEiLCJuZXdfdCIsInJlYWxsb2MkMCIsInJlczBfMDA1IiwicmVzMF8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsImNyZWF0ZSIsImYiLCJvZl9jb21wYXJlIiwib2ZfZXF1YWwiLCJwb2x5X2VxdWFsIiwibmV2ZXIiLCJhbHdheXMiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwid2F0Y2hfZnVuIiwidCQwIiwic2V0X2F0X2Z1biIsInZhbHVlX2Z1biIsInhfMDExIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsImZvbGRfdmFsdWVfZnVuIiwiZ290IiwiZXhwZWN0Iiwic2V4cGlmaWVyIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInhfMDI4IiwidXBkYXRlJDAiLCJmX2ludmVyc2UiLCJ1cGRhdGUiLCJjb21wdXRlIiwicmVzdWx0IiwiZm9yY2VfZnVsbF9jb21wdXRlIiwiY2hpbGRfY2hhbmdlZCIsInhfMDMxIiwiY2hpbGRfaW5kZXgiLCJvbGRfdmFsdWVfb3B0IiwiY2hpbGRfYXRfaW5kZXgiLCJ4XzAwMSIsIm51bGwkMCIsImFsYXJtX3ZhbHVlIiwic2V0X2FsYXJtX3ZhbHVlIiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJhbGFybV92YWx1ZSQwIiwiYWxhcm0kMCIsIm1haW5fMDAzIiwiY2hpbGRfMDA1IiwiZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jIiwidmFsdWVfMDA5IiwidXBjb21pbmdfc3RlcHNfMDExIiwiYWxhcm1fMDE3IiwiYWxhcm1fdmFsdWVfMDE5IiwiY2xvY2tfMDIxIiwiYXJnXzAxOCIsImFyZzFfMDE0IiwicmVzMV8wMTYiLCJhcmdfMDEyIiwiYm5kc18wMDIkMyIsImJuZHNfMDAyJDQiLCJibmRzXzAwMiQ1IiwiYm5kc18wMDIkNiIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsInhfMDIzIiwiYWR2YW5jZSIsInRvIiwic3RlcHMkMCIsImExJDAiLCJhMSIsInN0ZXBzIiwic3RlcHMyIiwiYTIiLCJzdGVwX2F0Iiwib2ZfYWNjXzAwMiIsImNoaWxkcmVuXzAwOCIsImluaXRfMDA0IiwiYXJnXzAwOSIsImJuZHNfMDAzIiwiYXJnXzAwNyIsImJuZHNfMDAzJDAiLCJibmRzXzAwMyQxIiwieF8wMTAiLCJhdF8wMDQiLCJtYWluXzAwMiIsImFsYXJtXzAwNiIsImNsb2NrXzAwOCIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwiaW50ZXJ2YWwiLCJpbnRlcnZhbCQwIiwiaW50ZXJ2YWxfMDA2IiwiYmFzZV8wMDQiLCJhbGFybV8wMDgiLCJjbG9ja18wMTAiLCJhcmdfMDExIiwiYm5kc18wMDEkMyIsImludGVydmFsX2Z1biIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsInNldF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJyaHNfc2NvcGUiLCJzZXRfcmhzX3Njb3BlIiwibGhzX2NoYW5nZSIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyQwIiwicmhzX3Njb3BlJDAiLCJsaHNfY2hhbmdlJDAiLCJvZl9iXzAwMiIsIm1haW5fMDA0IiwibGhzX2NoYW5nZV8wMTAiLCJsaHNfMDA4IiwicmhzXzAxMiIsInJoc19zY29wZV8wMTQiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNfMDE2IiwiYm5kc18wMDMkMiIsImJuZHNfMDAzJDMiLCJibmRzXzAwMyQ0IiwiYm5kc18wMDMkNSIsInNhbWUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc19mdW4iLCJub2RlIiwicmhzX3Njb3BlX2Z1biIsImxoc19jaGFuZ2VfZnVuIiwieF8wMTgiLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJleHBlY3QkMCIsImVxdWFsJDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJ0b3AiLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsImN1cnJlbnRfYnJhbmNoX2Z1biIsInRlc3RfY2hhbmdlX2Z1biIsInhfMDE1IiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsImJlZm9yZV9mdW4iLCJ4XzAxMyIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiYmluZF9yaHNfY2hpbGRfaW5kZXgiLCJmcmVlemVfY2hpbGRfaW5kZXgiLCJpZl9icmFuY2hfY2hpbGRfaW5kZXgiLCJqb2luX3Joc19jaGlsZF9pbmRleCIsIml0ZXJpX2NoaWxkcmVuIiwicmhzIiwiaSQwIiwidGVzdCIsImxocyIsInJocyQwIiwibm9kZTAiLCJjaGlsZCQwIiwiY2hpbGRyZW4kMSIsImkkMSIsIm5vZGUxIiwibm9kZTAkMCIsIm5vZGUyIiwibm9kZTEkMCIsIm5vZGUwJDEiLCJub2RlMyIsIm5vZGUyJDAiLCJub2RlMSQxIiwibm9kZTAkMiIsIm5vZGU0Iiwibm9kZTMkMCIsIm5vZGUyJDEiLCJub2RlMSQyIiwibm9kZTAkMyIsIm5vZGU1Iiwibm9kZTQkMCIsIm5vZGUzJDEiLCJub2RlMiQyIiwibm9kZTEkMyIsIm5vZGUwJDQiLCJub2RlNiIsIm5vZGU1JDAiLCJub2RlNCQxIiwibm9kZTMkMiIsIm5vZGUyJDMiLCJub2RlMSQ0Iiwibm9kZTAkNSIsIm5vZGU3Iiwibm9kZTYkMCIsIm5vZGU1JDEiLCJub2RlNCQyIiwibm9kZTMkMyIsIm5vZGUyJDQiLCJub2RlMSQ1Iiwibm9kZTAkNiIsIm5vZGU4Iiwibm9kZTckMCIsIm5vZGU2JDEiLCJub2RlNSQyIiwibm9kZTQkMyIsIm5vZGUzJDQiLCJub2RlMiQ1Iiwibm9kZTEkNiIsIm5vZGUwJDciLCJub2RlOSIsIm5vZGU4JDAiLCJub2RlNyQxIiwibm9kZTYkMiIsIm5vZGU1JDMiLCJub2RlNCQ0Iiwibm9kZTMkNSIsIm5vZGUyJDYiLCJub2RlMSQ3Iiwibm9kZTAkOCIsIm5vZGUxMCIsIm5vZGU5JDAiLCJub2RlOCQxIiwibm9kZTckMiIsIm5vZGU2JDMiLCJub2RlNSQ0Iiwibm9kZTQkNSIsIm5vZGUzJDYiLCJub2RlMiQ3Iiwibm9kZTEkOCIsIm5vZGUwJDkiLCJub2RlMTEiLCJub2RlMTAkMCIsIm5vZGU5JDEiLCJub2RlOCQyIiwibm9kZTckMyIsIm5vZGU2JDQiLCJub2RlNSQ1Iiwibm9kZTQkNiIsIm5vZGUzJDciLCJub2RlMiQ4Iiwibm9kZTEkOSIsIm5vZGUwJDEwIiwibm9kZTEyIiwibm9kZTExJDAiLCJub2RlMTAkMSIsIm5vZGU5JDIiLCJub2RlOCQzIiwibm9kZTckNCIsIm5vZGU2JDUiLCJub2RlNSQ2Iiwibm9kZTQkNyIsIm5vZGUzJDgiLCJub2RlMiQ5Iiwibm9kZTEkMTAiLCJub2RlMCQxMSIsIm5vZGUxMyIsIm5vZGUxMiQwIiwibm9kZTExJDEiLCJub2RlMTAkMiIsIm5vZGU5JDMiLCJub2RlOCQ0Iiwibm9kZTckNSIsIm5vZGU2JDYiLCJub2RlNSQ3Iiwibm9kZTQkOCIsIm5vZGUzJDkiLCJub2RlMiQxMCIsIm5vZGUxJDExIiwibm9kZTAkMTIiLCJub2RlMTQiLCJub2RlMTMkMCIsIm5vZGUxMiQxIiwibm9kZTExJDIiLCJub2RlMTAkMyIsIm5vZGU5JDQiLCJub2RlOCQ1Iiwibm9kZTckNiIsIm5vZGU2JDciLCJub2RlNSQ4Iiwibm9kZTQkOSIsIm5vZGUzJDEwIiwibm9kZTIkMTEiLCJub2RlMSQxMiIsIm5vZGUwJDEzIiwic2xvd19nZXRfY2hpbGQiLCJpbmRleCIsImFyZzFfMzA2IiwiYXJnMF8zMDUiLCJyZXMwXzMwNyIsInJlczFfMzA4IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luIiwic2V0X215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luIiwic2V0X215X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hIiwib2JzZXJ2ZXJzIiwic2V0X29ic2VydmVycyIsInNldF9vbGRfdmFsdWVfb3B0IiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwic2V0X25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2giLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X25leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJwcmV2X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X3ByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X2hlaWdodCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwic2V0X25leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwiY3JlYXRlZF9pbiIsInNldF9jcmVhdGVkX2luIiwicGFyZW50MCIsInNldF9wYXJlbnQwIiwicGFyZW50MV9hbmRfYmV5b25kIiwic2V0X3BhcmVudDFfYW5kX2JleW9uZCIsIm51bV9wYXJlbnRzIiwic2V0X251bV9wYXJlbnRzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyIsInNldF9udW1fb25fdXBkYXRlX2hhbmRsZXJzIiwiY2hhbmdlZF9hdCIsInNldF9jaGFuZ2VkX2F0IiwiY3V0b2ZmIiwic2V0X2N1dG9mZiIsImtpbmQiLCJzZXRfa2luZCIsInZhbHVlX29wdCIsInNldF92YWx1ZV9vcHQiLCJyZWNvbXB1dGVkX2F0Iiwic2V0X3JlY29tcHV0ZWRfYXQiLCJpZCIsIm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbiQwIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luJDAiLCJvYnNlcnZlcnMkMCIsIm9sZF92YWx1ZV9vcHQkMCIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAkMCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAkMCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAkMCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0JDAiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZSQwIiwiY3JlYXRlZF9pbiQwIiwicGFyZW50MCQwIiwicGFyZW50MV9hbmRfYmV5b25kJDAiLCJudW1fcGFyZW50cyQwIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyQwIiwiY2hhbmdlZF9hdCQwIiwiY3V0b2ZmJDAiLCJraW5kJDAiLCJ2YWx1ZV9vcHQkMCIsInJlY29tcHV0ZWRfYXQkMCIsImlkJDAiLCJzdGF0ZV8wMDUiLCJpZF8wMDMiLCJyZWNvbXB1dGVkX2F0XzAwNyIsInZhbHVlX29wdF8wMDkiLCJraW5kXzAxMSIsImN1dG9mZl8wMTMiLCJjaGFuZ2VkX2F0XzAxNSIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfMDE3IiwibnVtX3BhcmVudHNfMDE5IiwicGFyZW50MV9hbmRfYmV5b25kXzAyMSIsInBhcmVudDBfMDIzIiwiY3JlYXRlZF9pbl8wMjUiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV8wMjciLCJoZWlnaHRfMDI5IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXzAzMSIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfMDMzIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcF8wMzUiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfMDMiLCJvbGRfdmFsdWVfb3B0XzA0MSIsIm9ic2VydmVyc18wNDMiLCJpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGkiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDQ3IiwiZm9yY2VfbmVjZXNzYXJ5XzA1MyIsInVzZXJfaW5mb18wNTUiLCJjcmVhdGlvbl9iYWNrdHJhY2VfMDU3IiwiYXJnXzA1OCIsImFyZ18wNTYiLCJhcmdfMDU0IiwiYXJnXzA1MiIsImFyZ18wNTAiLCJhcmdfMDQ4IiwiYXJnXzA0NiIsImFyZ18wNDQiLCJhcmdfMDQyIiwiYm5kc18wMDIkNyIsImFyZ18wNDAiLCJibmRzXzAwMiQ4IiwiYXJnXzAzOCIsImJuZHNfMDAyJDkiLCJhcmdfMDM2IiwiYm5kc18wMDIkMTAiLCJhcmdfMDM0IiwiYm5kc18wMDIkMTEiLCJhcmdfMDMyIiwiYm5kc18wMDIkMTIiLCJhcmdfMDMwIiwiYm5kc18wMDIkMTMiLCJhcmdfMDI4IiwiYm5kc18wMDIkMTQiLCJibmRzXzAwMiQxNSIsImJuZHNfMDAyJDE2IiwiYm5kc18wMDIkMTciLCJibmRzXzAwMiQxOCIsImJuZHNfMDAyJDE5IiwiYm5kc18wMDIkMjAiLCJibmRzXzAwMiQyMSIsImJuZHNfMDAyJDIyIiwiYm5kc18wMDIkMjMiLCJibmRzXzAwMiQyNCIsImJuZHNfMDAyJDI1IiwiYm5kc18wMDIkMjYiLCJwYWNrZWRfc2FtZSIsInVzZXJfaW5mbyIsIm90aGVyIiwic2V0X3VzZXJfaW5mbyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXoiLCJhdHRycyIsImVkZ2VfaXNfc3RhbGUiLCJwYXJlbnQiLCJpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGkiLCJpc19zdGFsZSIsImZvcmNlX3N0YWxlIiwiZm9yY2Vfc3RhbGUkMCIsIm5lZWRzX3RvX2JlX2NvbXB1dGVkIiwiaXNfaW5fcmVjb21wdXRlX2hlYXAiLCJpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwiZ2V0X3BhcmVudCIsIml0ZXJpX3BhcmVudHMiLCJoYXNfY2hpbGQiLCJoYXMiLCJoYXNfcGFyZW50IiwicGFyZW50JDAiLCJzaG91bGRfYmVfaW52YWxpZGF0ZWQiLCJsaHMkMCIsImZvbGRfb2JzZXJ2ZXJzIiwiYWMiLCJvYnNlcnZlciIsImFfMDYwIiwiYl8wNjEiLCJhXzA3MCIsImJfMDcxIiwicGFyZW50X2luZGV4IiwieCIsImFfMDY4IiwiYl8wNjkiLCJvYnNlcnZlcnNfZnVuIiwic3RhdGUiLCJvYnNlcnZpbmciLCJvbGRfdmFsdWVfb3B0X2Z1biIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF9mdSIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJwcmV2IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsImhlaWdodF9mdW4iLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV9mdW4iLCJjcmVhdGVkX2luX2Z1biIsInBhcmVudDBfZnVuIiwiYV8wNjYiLCJiXzA2NyIsInBhcmVudDFfYW5kX2JleW9uZF9mdW4iLCJhXzA2NCIsImJfMDY1IiwibnVtX3BhcmVudHNfZnVuIiwib25fdXBkYXRlX2hhbmRsZXJzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJldGEiLCJhXzA2MiIsImJfMDYzIiwiY2hhbmdlZF9hdF9mdW4iLCJjdXRvZmZfZnVuIiwia2luZF9mdW4iLCJ2YWx1ZV9vcHRfZnVuIiwicmVjb21wdXRlZF9hdF9mdW4iLCJpZF9mdW4iLCJ4XzA1OSIsInVuc2FmZV92YWx1ZSIsInZhbHVlX2V4biIsInhfMDcyIiwiZ2V0X2N1dG9mZiIsInNldF9jdXRvZmYkMCIsImlzX2NvbnN0Iiwib25fdXBkYXRlIiwib25fdXBkYXRlX2hhbmRsZXIiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzIiwicmVzdCQwIiwib25fdXBkYXRlX2hhbmRsZXIkMCIsInIkMCIsInIkMSIsInJlc3QiLCJzZXRfa2luZCQwIiwibWF4X251bV9wYXJlbnRzIiwic2V0X3BhcmVudCIsImxpbmsiLCJhZGRfcGFyZW50IiwibmV3X21heF9udW1fcGFyZW50cyIsIm1heF9udW1fY2hpbGRyZW4iLCJuZXdfbWF4X251bV9jaGlsZHJlbiIsInJlbW92ZV9wYXJlbnQiLCJsYXN0X3BhcmVudF9pbmRleCIsInN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQiLCJjaGlsZDEiLCJjaGlsZDIiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJzYW1lX2FzX3BhY2tlZCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjAiLCJ4XzAyMiIsInhfMDIxIiwib25fdXBkYXRlX2V4biIsInhfMDI0IiwicHJldiQwIiwibmV4dCQwIiwieF8wMjUiLCJ4XzAwMiIsIm5hbWVzIiwibmFtZXMkMCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfMDk1Iiwic2V4cF9vZl9zdGF0dXMiLCJhcmcxXzAwNCIsInJlczFfMDA2IiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuIiwic2V0X2V4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1IiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsInNldF9jdXJyZW50bHlfcnVubmluZ19ub2RlIiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlJDAiLCJtYWtlX2NyZWF0b3IiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQxIiwiYWNjIiwibWFwIiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlXzAwOCIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsInNleHBfb2ZfdCQxIiwibnVtX3Zhcl9zZXRzIiwic2V0X251bV92YXJfc2V0cyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQwIiwic2V0X251bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjJDAiLCJudW1fbm9kZXNfcmVjb21wdXRlZCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZCIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZCIsInNldF9udW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJudW1fbm9kZXNfY3JlYXRlZCIsInNldF9udW1fbm9kZXNfY3JlYXRlZCIsIm51bV9ub2Rlc19jaGFuZ2VkIiwic2V0X251bV9ub2Rlc19jaGFuZ2VkIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYSIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwic2V0X251bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSIsInNldF9rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYSIsIndlYWtfaGFzaHRibHMiLCJvbmx5X2luX2RlYnVnIiwic2V0X29ubHlfaW5fZGVidWciLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiIsInNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwibmV3X29ic2VydmVycyIsImZpbmFsaXplZF9vYnNlcnZlcnMiLCJhbGxfb2JzZXJ2ZXJzIiwic2V0X2FsbF9vYnNlcnZlcnMiLCJudW1fYWN0aXZlX29ic2VydmVycyIsInNldF9udW1fYWN0aXZlX29ic2VydmVycyIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5IiwiYWRqdXN0X2hlaWdodHNfaGVhcCIsImN1cnJlbnRfc2NvcGUiLCJzZXRfY3VycmVudF9zY29wZSIsInN0YWJpbGl6YXRpb25fbnVtIiwic2V0X3N0YWJpbGl6YXRpb25fbnVtIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkIiwic3RhdHVzIiwic2V0X3N0YXR1cyIsIm51bV92YXJfc2V0cyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDEiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMiIsIm51bV9ub2Rlc19yZWNvbXB1dGVkJDAiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQkMCIsIm51bV9ub2Rlc19jcmVhdGVkJDAiLCJudW1fbm9kZXNfY2hhbmdlZCQwIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSQwIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkkMCIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UkMCIsIndlYWtfaGFzaHRibHMkMCIsIm9ubHlfaW5fZGVidWckMCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMkMCIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uJDAiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzJDAiLCJuZXdfb2JzZXJ2ZXJzJDAiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzJDAiLCJhbGxfb2JzZXJ2ZXJzJDAiLCJudW1fYWN0aXZlX29ic2VydmVycyQwIiwicHJvcGFnYXRlX2ludmFsaWRpdHkkMCIsImFkanVzdF9oZWlnaHRzX2hlYXAkMCIsInJlY29tcHV0ZV9oZWFwJDAiLCJjdXJyZW50X3Njb3BlJDAiLCJzdGFiaWxpemF0aW9uX251bSQwIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDAiLCJzdGF0dXMkMCIsIm1ha2VfY3JlYXRvciQwIiwic3RhdHVzX2Z1biIsInN0YWJpbGl6YXRpb25fbnVtX2Z1biIsImN1cnJlbnRfc2NvcGVfZnVuIiwicmVjb21wdXRlX2hlYXBfZnVuIiwiYWRqdXN0X2hlaWdodHNfaGVhcF9mdW4iLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9mdW4iLCJudW1fYWN0aXZlX29ic2VydmVyc19mdW4iLCJhbGxfb2JzZXJ2ZXJzX2Z1biIsImZpbmFsaXplZF9vYnNlcnZlcnNfZnVuIiwibmV3X29ic2VydmVyc19mdW4iLCJkaXNhbGxvd2VkX29ic2VydmVyc19mdW4iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZnVuIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZnVuIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvbmx5X2luX2RlYnVnX2Z1biIsIndlYWtfaGFzaHRibHNfZnVuIiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV9mIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZnVuIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9mIiwibnVtX25vZGVzX2NoYW5nZWRfZnVuIiwibnVtX25vZGVzX2NyZWF0ZWRfZnVuIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2Z1biIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2Z1biIsIm51bV92YXJfc2V0c19mdW4iLCJzdGF0dXNfZ2VuIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDEiLCJjb21waWxlX2FjYyQyIiwic3RhYmlsaXphdGlvbl9udW1fZ2VuIiwiY29tcGlsZV9hY2MkMyIsImN1cnJlbnRfc2NvcGVfZ2VuIiwiY29tcGlsZV9hY2MkNCIsInJlY29tcHV0ZV9oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJhZGp1c3RfaGVpZ2h0c19oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9nZW4iLCJjb21waWxlX2FjYyQ3IiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOCIsImFsbF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImZpbmFsaXplZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTAiLCJuZXdfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDExIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl9nZW4iLCJjb21waWxlX2FjYyQxNCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTUiLCJvbmx5X2luX2RlYnVnX2dlbiIsImNvbXBpbGVfYWNjJDE2Iiwid2Vha19oYXNodGJsc19nZW4iLCJjb21waWxlX2FjYyQxNyIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZyIsImNvbXBpbGVfYWNjJDE4IiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5X2ciLCJjb21waWxlX2FjYyQyMCIsIm51bV9ub2Rlc19jaGFuZ2VkX2dlbiIsImNvbXBpbGVfYWNjJDIxIiwibnVtX25vZGVzX2NyZWF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjIiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQzIiwiY29tcGlsZV9hY2MkMjUiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kNCIsImNvbXBpbGVfYWNjJDI2IiwibnVtX3Zhcl9zZXRzX2dlbiIsImNyZWF0ZSQxIiwibWFwJDEiLCJpdGVyJDEiLCJmb2xkJDEiLCJtYXBfcG9seSQwIiwiZm9yX2FsbCQxIiwiZXhpc3RzJDEiLCJ0b19saXN0JDEiLCJpdGVyJDIiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInRvX2xpc3QkMiIsIm1hcCQyIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQwIiwic2V4cF9vZl90JDIiLCJzdGF0dXNfMDE1Iiwic3RhYmlsaXphdGlvbl9udW1fMDE5IiwiY3VycmVudF9zY29wZV8wMjEiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV8wMjciLCJhZGp1c3RfaGVpZ2h0c19oZWFwXzAyNSIsInJlY29tcHV0ZV9oZWFwXzAyMyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzXzAyOSIsImFsbF9vYnNlcnZlcnNfMDMxIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc18wNDMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl8wNDEiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fMDM5IiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfMDM3IiwibmV3X29ic2VydmVyc18wMzUiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzXzAzMyIsIm9ubHlfaW5fZGVidWdfMDQ1Iiwid2Vha19oYXNodGJsc18wNDciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlXzAiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeV8wNTEiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5XzAiLCJudW1fbm9kZXNfY2hhbmdlZF8wNTUiLCJudW1fbm9kZXNfY3JlYXRlZF8wNTciLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfMDU5IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfMDYxIiwibnVtX3Zhcl9zZXRzXzA2NyIsImFyZ18wNjgiLCJibmRzXzAxNCIsImFyZ18wNjYiLCJibmRzXzAxNCQwIiwiYXJnXzA2NCIsImJuZHNfMDE0JDEiLCJhcmdfMDYyIiwiYm5kc18wMTQkMiIsImFyZ18wNjAiLCJibmRzXzAxNCQzIiwiYm5kc18wMTQkNCIsImJuZHNfMDE0JDUiLCJibmRzXzAxNCQ2IiwiYm5kc18wMTQkNyIsImJuZHNfMDE0JDgiLCJibmRzXzAxNCQ5IiwiYm5kc18wMTQkMTAiLCJibmRzXzAxNCQxMSIsImJuZHNfMDE0JDEyIiwiYm5kc18wMTQkMTMiLCJibmRzXzAxNCQxNCIsImJuZHNfMDE0JDE1IiwiYm5kc18wMTQkMTYiLCJibmRzXzAxNCQxNyIsImJuZHNfMDE0JDE4IiwiYm5kc18wMTQkMTkiLCJibmRzXzAxNCQyMCIsImJuZHNfMDE0JDIxIiwiYm5kc18wMTQkMjIiLCJibmRzXzAxNCQyMyIsImJuZHNfMDE0JDI0IiwiYm5kc18wMTQkMjUiLCJmaXJlZF9hbGFybV92YWx1ZXMiLCJzZXRfZmlyZWRfYWxhcm1fdmFsdWVzIiwiaGFuZGxlX2ZpcmVkIiwidGltaW5nX3doZWVsIiwiZmlyZWRfYWxhcm1fdmFsdWVzJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm5vdyQwIiwidGltaW5nX3doZWVsJDAiLCJtYWtlX2NyZWF0b3IkMSIsInRpbWluZ193aGVlbF9mdW4iLCJub3dfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImZpcmVkX2FsYXJtX3ZhbHVlc19mdW4iLCJ0aW1pbmdfd2hlZWxfZ2VuIiwibm93X2dlbiIsImhhbmRsZV9maXJlZF9nZW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkMyIsIml0ZXIkMyIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDQiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJzZXhwX29mX3QkMyIsIm5vd18wNzIiLCJ0aW1pbmdfd2hlZWxfMDcwIiwiZmlyZWRfYWxhcm1fdmFsdWVzXzA3NiIsImFyZ18wNzciLCJibmRzXzA2OSIsImFyZ18wNzUiLCJibmRzXzA2OSQwIiwiYXJnXzA3MyIsImJuZHNfMDY5JDEiLCJhcmdfMDcxIiwiYm5kc18wNjkkMiIsImludmFyaWFudCQxIiwibm93JDEiLCJjbG9jayIsInRpbWluZ193aGVlbF9sZW5ndGgiLCJudW1fc3RhYmlsaXplcyIsIml0ZXJfb2JzZXJ2ZXJzIiwiZGlyZWN0bHlfb2JzZXJ2ZWQiLCJpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIiwidF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJtYXhfbnVtX3BhcmVudHNfMDgxIiwicGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyIiwiZHVwbGljYXRlc18wODUiLCJleHRyYV8wODYiLCJzZXhwXzA3OSQwIiwiZmllbGRfc2V4cHNfMDg5IiwiZmllbGRfbmFtZV8wODciLCJ0YWlsXzA5OSIsImZpZWxkX3NleHBfMDg4JDIiLCJmaWVsZF9zZXhwXzA4OCIsInhfMTAwIiwiZmllbGRfc2V4cF8wODgkMCIsInNleHBfMDk0IiwiYXJnMV8wOTEiLCJhcmcwXzA5MCIsInJlczBfMDkyIiwicmVzMV8wOTMiLCJmdmFsdWVfMDk2IiwiZmllbGRfc2V4cF8wODgkMSIsImZ2YWx1ZV8wOTciLCJwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXIkMCIsIm1heF9udW1fcGFyZW50c18wODIiLCJzZXhwX29mX3QkNCIsIm1heF9udW1fcGFyZW50c18xMDIiLCJibmRzXzEwMSIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnXzEwNSIsImJuZHNfMTAxJDAiLCJhcmdfMTAzIiwiYm5kc18xMDEkMSIsInN0YXRzIiwibnVtX25lY2Vzc2FyeV9ub2RlcyIsIm1heF9udW1fcGFyZW50cyQwIiwibnVtX25vZGVzX2J5X251bV9wYXJlbnRzIiwibnVtX25vZGVzIiwiYW1fc3RhYmlsaXppbmciLCJyYWlzZWRfZXhuIiwiaW52YXJpYW50JDIiLCJpbnRlcm5hbF9vYnNlcnZlciIsInhfMTEwIiwicGFja2VkIiwiZW5zdXJlX25vdF9zdGFiaWxpemluZyIsImFsbG93X2luX3VwZGF0ZV9oYW5kbGVyIiwiYmFja3RyYWNlIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImFyZzFfMTEyIiwiYXJnMF8xMTEiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQxIiwicmVtb3ZlX2NoaWxkcmVuIiwicmVtb3ZlX2NoaWxkIiwiY2hlY2tfaWZfdW5uZWNlc3NhcnkiLCJiZWNhbWVfdW5uZWNlc3NhcnkiLCJwIiwidSIsInJlbW92ZV9hbGFybSIsImludmFsaWRhdGVfbm9kZSIsImludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaCIsInJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJmaXJzdF9ub2RlX29uX3JocyIsIm5ld19zY29wZSIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDEiLCJleHBlcnQiLCJhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2giLCJ3YXNfbmVjZXNzYXJ5IiwieF8xMTUiLCJiZWNhbWVfbmVjZXNzYXJ5IiwicnVuX3dpdGhfc2NvcGUiLCJzY29wZSIsInNhdmVkIiwiZXhuJDAiLCJ3aXRoaW5fc2NvcGUiLCJjaGFuZ2VfY2hpbGQiLCJvbGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJvbGRfY2hpbGQkMCIsImFkZF9hbGFybSIsInJlY29tcHV0ZSIsIm1heWJlX2NoYW5nZV92YWx1ZSIsIm9sZF9yaHMiLCJvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiY29weV9jaGlsZCIsIm9ubHlfZnJlZXplX3doZW4iLCJlbHNlJDAiLCJ0aGVuIiwiZGVzaXJlZF9icmFuY2giLCJtYWluJDEiLCJvbGRfcmhzJDAiLCJyaHMkMSIsInJocyQyIiwibjEiLCJjbG9jayQwIiwiYXQkMCIsImNsb2NrJDEiLCJjaGlsZCQxIiwic3RlcF9mdW5jdGlvbiIsInN0ZXBfZnVuY3Rpb25fdmFsdWUiLCJhdCQxIiwibjIiLCJuMSQwIiwibjMiLCJuMiQwIiwibjEkMSIsImYkMiIsIm40IiwibjMkMCIsIm4yJDEiLCJuMSQyIiwiZiQzIiwibjUiLCJuNCQwIiwibjMkMSIsIm4yJDIiLCJuMSQzIiwiZiQ0IiwibjYiLCJuNSQwIiwibjQkMSIsIm4zJDIiLCJuMiQzIiwibjEkNCIsImYkNSIsIm43IiwibjYkMCIsIm41JDEiLCJuNCQyIiwibjMkMyIsIm4yJDQiLCJuMSQ1IiwiZiQ2IiwibjgiLCJuNyQwIiwibjYkMSIsIm41JDIiLCJuNCQzIiwibjMkNCIsIm4yJDUiLCJuMSQ2IiwiZiQ3IiwibjkiLCJuOCQwIiwibjckMSIsIm42JDIiLCJuNSQzIiwibjQkNCIsIm4zJDUiLCJuMiQ2IiwibjEkNyIsImYkOCIsIm4xMCIsIm45JDAiLCJuOCQxIiwibjckMiIsIm42JDMiLCJuNSQ0IiwibjQkNSIsIm4zJDYiLCJuMiQ3IiwibjEkOCIsImYkOSIsIm4xMSIsIm4xMCQwIiwibjkkMSIsIm44JDIiLCJuNyQzIiwibjYkNCIsIm41JDUiLCJuNCQ2IiwibjMkNyIsIm4yJDgiLCJuMSQ5IiwiZiQxMCIsIm4xMiIsIm4xMSQwIiwibjEwJDEiLCJuOSQyIiwibjgkMyIsIm43JDQiLCJuNiQ1IiwibjUkNiIsIm40JDciLCJuMyQ4IiwibjIkOSIsIm4xJDEwIiwiZiQxMSIsIm4xMyIsIm4xMiQwIiwibjExJDEiLCJuMTAkMiIsIm45JDMiLCJuOCQ0IiwibjckNSIsIm42JDYiLCJuNSQ3IiwibjQkOCIsIm4zJDkiLCJuMiQxMCIsIm4xJDExIiwiZiQxMiIsIm4xNCIsIm4xMyQwIiwibjEyJDEiLCJuMTEkMiIsIm4xMCQzIiwibjkkNCIsIm44JDUiLCJuNyQ2IiwibjYkNyIsIm41JDgiLCJuNCQ5IiwibjMkMTAiLCJuMiQxMSIsIm4xJDEyIiwiZiQxMyIsIm4xNSIsIm4xNCQwIiwibjEzJDEiLCJuMTIkMiIsIm4xMSQzIiwibjEwJDQiLCJuOSQ1IiwibjgkNiIsIm43JDciLCJuNiQ4IiwibjUkOSIsIm40JDEwIiwibjMkMTEiLCJuMiQxMiIsIm4xJDEzIiwiZiQxNCIsImNoaWxkX2luZGV4JDAiLCJ1JDAiLCJjYW5fcmVjb21wdXRlX25vdyIsImIiLCJqIiwicmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uIiwieF8xMTYiLCJ1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMiLCJkaXNhbGxvd19mdXR1cmVfdXNlIiwiZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyIsIm9ic2VydmVyX2ZpbmFsaXplciIsImNyZWF0ZV9vYnNlcnZlciIsIm9wdCIsInN0aCIsInNob3VsZF9maW5hbGl6ZSIsImFkZF9uZXdfb2JzZXJ2ZXJzIiwib2xkX2FsbF9vYnNlcnZlcnMiLCJvbGRfb2JzZXJ2ZXJzIiwib2JzZXJ2ZXJfdmFsdWVfZXhuIiwieF8xMTciLCJvYnNlcnZlcl92YWx1ZSIsIm5vZGVfb25fdXBkYXRlIiwib2JzZXJ2ZXJfb25fdXBkYXRlX2V4biIsInNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIiwic2V0X3ZhciIsInJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyIsIndlYWtfaGFzaHRibCIsInN0YWJpbGl6ZV9zdGFydCIsInN0YWJpbGl6ZV9lbmQiLCJtYXRjaCQwIiwibm9kZV91cGRhdGUkMCIsInJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIiwic3RhYmlsaXplIiwic2V4cF9vZl90JDUiLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUiLCJjcmVhdGVfbm9kZV9pbiIsImNyZWF0ZV9ub2RlIiwiY3JlYXRlX25vZGVfdG9wIiwiY3JlYXRlX3ZhciIsInVzZV9jdXJyZW50X3Njb3BlIiwiY29uc3QkMCIsIm1hcCQ1IiwibWFwMiIsImJvdGgiLCJtYXAzIiwibWFwNCIsIm1hcDUiLCJtYXA2IiwibWFwNyIsIm1hcDgiLCJtYXA5IiwibWFwMTAiLCJtYXAxMSIsIm1hcDEyIiwibWFwMTMiLCJtYXAxNCIsIm1hcDE1IiwicHJlc2VydmVfY3V0b2ZmIiwiaW5wdXQiLCJvdXRwdXQiLCJkZXBlbmRfb24iLCJuZWNlc3NhcnlfaWZfYWxpdmUiLCJiaW5kMiIsInYyIiwidjEiLCJiaW5kMyIsInYzIiwiYmluZDQiLCJ2NCIsImlmJDAiLCJsYXp5X2Zyb21fZnVuIiwiZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6IiwibWVtb2l6ZV9mdW5fYnlfa2V5IiwiaGFzaGFibGUiLCJwcm9qZWN0X2tleSIsImluaXRpYWxfc2l6ZSIsInRhYmxlIiwia2V5IiwiYiQwIiwiYWxsIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIiwibnVtX2ludmFsaWQiLCJhY2N1bSIsIngkMCIsImZfaW52ZXJzZSQwIiwiYXRfbGVhc3Rfa19vZiIsImJvb2xfdG9faW50IiwibnVtX3RydWUiLCJleGlzdHMkNSIsImZvcl9hbGwkNSIsInN1bSIsInplcm8iLCJzdWIiLCJvcHRfc3VtIiwic3VtX2ludCIsInN1bV9mbG9hdCIsInNldF9mcmVlemUiLCJ0aW1lIiwiYWZ0ZXIiLCJzcGFuIiwibmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QiLCJiYXNlIiwidmFsdWVfYXQiLCJpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIiwiYWR2YW5jZV9jbG9jayIsIm1haW4kMiIsImNyZWF0ZV9jbG9jayIsInRpbWluZ193aGVlbF9jb25maWciLCJzdGFydCIsImNyZWF0ZSQzIiwiQ29uZmlnIiwid2Vha19tZW1vaXplX2Z1bl9ieV9rZXkiLCJleHBlcnRfa2luZF9vZl9ub2RlIiwieF8xMTgiLCJjcmVhdGUkNCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIiwiY3VycmVudCIsImFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlXyIsInhfMTIwIiwieF8xMTkiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8kMCIsInhfMTIyIiwieF8xMjEiLCJtYWtlX3N0YWxlJDAiLCJlX29wdCIsImludmFsaWRhdGUiLCJhZGRfZGVwZW5kZW5jeSIsImRlcCIsInJlbW92ZV9kZXBlbmRlbmN5IiwiZWRnZSIsImVkZ2VfaW5kZXgiLCJsYXN0X2VkZ2UiLCJsYXN0X2VkZ2VfaW5kZXgiLCJvbl9jaGFuZ2UiLCJyZWR1Y2UiLCJyZWR1Y2VyIiwibGV2ZWxfYml0cyIsImNyZWF0ZV9pbnRlcm5hbCIsImRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkIiwic2V4cF9vZl9zdGF0ZV93aXRuZXNzIiwid2l0aGluIiwicGFjayIsInJldHVybiQwIiwibWFwMiQwIiwibWFwMyQwIiwibWFwNCQwIiwibWFwNSQwIiwibWFwNiQwIiwibWFwNyQwIiwibWFwOCQwIiwibWFwOSQwIiwibWFwMTAkMCIsIm1hcDExJDAiLCJtYXAxMiQwIiwibWFwMTMkMCIsIm1hcDE0JDAiLCJtYXAxNSQwIiwiYmluZDIkMCIsImJpbmQzJDAiLCJiaW5kNCQwIiwic3ltYm9sX21hcCIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCQwIiwic3ltYm9sX2JpbmQkMCIsImxhenlfZnJvbV9mdW4kMCIsIm1lbW9pemVfZnVuIiwiYXJyYXlfZm9sZCQwIiwicmVkdWNlX2JhbGFuY2VkIiwicmVwbGFjZSIsInhfMDE3IiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQwIiwiaW5jcl9zdGF0ZSQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQkMCIsImFsYXJtX3ByZWNpc2lvbiQwIiwid2F0Y2hfbm93IiwiYWR2YW5jZV9jbG9ja19ieSIsImZyZWV6ZSQwIiwid2hlbiIsImRlcGVuZF9vbiQwIiwic3RhYmlsaXplJDAiLCJhbV9zdGFiaWxpemluZyQwIiwib2ZfYV8wMTgiLCJhcmcwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJub2RlX3ZhbHVlIiwic2V4cF9vZl90JDYiLCJib3RoJDAiLCJ4MSIsIngyIiwibWFwMiQxIiwibWFwMyQxIiwibWFwNCQxIiwibWFwNSQxIiwibWFwNiQxIiwibWFwNyQxIiwibWFwOCQxIiwibWFwOSQxIiwibWFwMTAkMSIsIm1hcDExJDEiLCJtYXAxMiQxIiwibWFwMTMkMSIsIm1hcDE0JDEiLCJtYXAxNSQxIiwiYmluZDIkMSIsImJpbmQzJDEiLCJiaW5kNCQxIiwid2Vha19tZW1vaXplX2Z1biIsImRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSQwIiwicmV0dXJuJDEiLCJ3aXRoaW4kMCIsImNvbnN0JDEiLCJyZXR1cm4kMiIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwiYXJyYXlfZm9sZCQxIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic3RhYmlsaXplJDEiLCJhbV9zdGFiaWxpemluZyQxIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1Iiwid2l0aF9vbGQiLCJpIiwiZiIsIm9sZCIsImEiLCJiIiwidW5vcmRlcmVkX2ZvbGQiLCJvcHQiLCJ1cGRhdGUiLCJzcGVjaWFsaXplZF9pbml0aWFsIiwibWFwIiwiaW5pdCIsImFkZCIsInJlbW92ZSIsInN0aCIsImRhdGFfZXF1YWwiLCJzdGgkMCIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJrZXkiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwiYWNjIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJpbml0aWFsIiwib2xkX291dCIsIm9sZF9pbiIsImNoYW5nZSIsIm5ldyQwIiwib2xkJDAiLCJuZXckMSIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzIiwiaW5jcl9tYXAiLCJ1cGRhdGUkMSIsIm91dGVyX2tleSIsImlubmVyX2tleSIsImlubmVyX21hcCIsImRhdGEiLCJvbGRfaW5uZXJfbWFwIiwibmV3X2lubmVyX21hcCIsImRpZmYiLCJkYXRhX3JlbW92ZWQiLCJkYXRhX2FkZGVkIiwid2l0aF9jb21wYXJhdG9yIiwiZ2V0X2NvbXBhcmF0b3IiLCJ4Iiwid2l0aF9jb21wYXJhdG9yJDAiLCJvZl9zZXQiLCJzZXQiLCJjb21wYXJhdG9yIiwib2xkX2lucHV0Iiwib2xkX291dHB1dCIsIm5ld19pbnB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJuZXdfb3V0cHV0IiwiZ2VuZXJpY19tYXBpIiwid2l0bmVzcyIsImlucHV0IiwicmVzIiwib3V0cHV0X2RhdGEiLCJtYXBpIiwiZmlsdGVyX21hcGkiLCJmaWx0ZXJfbWFwIiwid2l0aF9vbGQyIiwiaTEiLCJpMiIsImExIiwiYTIiLCJtYXBpX2NvdW50IiwibmV3X2tleSIsIm4iLCJwcmV2X2tleSIsIm1hcF9jb3VudCIsIm1pbl9oZWxwZXIiLCJtaW4iLCJtYXhfaGVscGVyIiwibWF4IiwiYm91bmRzX2hlbHBlciIsIm1hcGlfbWluIiwibWFwaV9tYXgiLCJtYXBpX2JvdW5kcyIsIm1hcGlfbW4iLCJtYXBfbWF4IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwibWFwX2JvdW5kcyIsInZhbHVlX2JvdW5kcyIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0IiwibmV3X2xlZnRfbWFwIiwibmV3X3JpZ2h0X21hcCIsIm9sZF9yaWdodF9tYXAiLCJvbGRfbGVmdF9tYXAiLCJvbGRfbGVmdF9tYXAkMCIsImxlZnRfZGlmZiIsInJpZ2h0X2RpZmYiLCJkaWZmX2VsZW1lbnQiLCJyaWdodF9rZXkiLCJsZWZ0X2tleSIsImtleSQwIiwicmlnaHRfZGF0YV9vcHQkMCIsImxlZnRfZGF0YV9vcHQiLCJyaWdodF9kaWZmJDAiLCJsZWZ0X2RpZmYkMCIsInJpZ2h0X2RhdGFfb3B0JDIiLCJsZWZ0X2RhdGFfb3B0JDAiLCJ5Iiwib3V0cHV0X2RhdGFfb3B0IiwieSQwIiwiZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvciIsImN1dG9mZiIsImluY3JlbWVudGFsX3N0YXRlIiwiZW1wdHlfbWFwIiwicHJldl9tYXAiLCJwcmV2X25vZGVzIiwicmVzdWx0Iiwib25faW5uZXJfY2hhbmdlIiwibGhzX2NoYW5nZSIsIm5vZGVzIiwiY2hhbmdlZCIsImRlcCIsIm5vZGUiLCJub2RlcyQwIiwibm9kZSQwIiwibm9kZSQxIiwiYyIsInVzZXJfZnVuY3Rpb25fZGVwIiwibmV3X25vZGVzIiwiZmlsdGVyX21hcGkkMCIsIm1hcGkkMCIsIm1hcCQwIiwiZmlsdGVyX21hcCQwIiwibWVyZ2UkMCIsIm1hcDEiLCJtYXAyIiwidW56aXBfbWFwaSIsImxlZnRfcmVzdWx0X2VxdWFsIiwicmlnaHRfcmVzdWx0X2VxdWFsIiwicGFpciIsImRhdGFfZXF1YWwkMCIsImxlZnRfcmVzdWx0X2VxdWFsJDAiLCJzdGgkMSIsInJpZ2h0X3Jlc3VsdF9lcXVhbCQwIiwibGVmdF9hY2MiLCJsZWZ0X3Jlc3VsdCIsInJpZ2h0X2FjYyIsInJpZ2h0X3Jlc3VsdCIsImwiLCJsZWZ0JDAiLCJyIiwicmlnaHQkMCIsInJpZ2h0IiwibGVmdCIsInByZXYiLCJwcmV2X2IiLCJwcmV2X2EiLCJuZXdfYiIsIm5ld19hIiwiZWxlbWVudCIsImlucHV0X2NoYW5nZSIsInVuemlwIiwidW56aXBfbWFwaSQwIiwicmlnaHRfZGVwIiwibGVmdF9kZXAiLCJyaWdodF9pbmNyIiwibGVmdF9pbmNyIiwibGVmdF91c2VyX2Z1bmN0aW9uX2RlcCIsInJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwIiwia2V5cyIsInBhcnRpdGlvbl9tYXBpIiwiZW1wdHkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsImZsYXR0ZW4iLCJzdGF0ZSIsImluY3IiLCJqb2luIiwibWFwX2luY3IiLCJyZXN1bHRfbWFwIiwib2xkX21hcF9vZl9pbmNycyIsImN1cnJlbnRfZGVwZW5kZW5jaWVzIiwiYWRkX3N1Ym5vZGUiLCJkYXRhX25vZGUiLCJuZXdfZGVwIiwicmVtb3ZlX3N1Ym5vZGUiLCJtYXBfb2ZfaW5jcnMiLCJkYXRhX25vZGUkMCIsIm5ld19kZXBlbmRlbmN5X21hcCIsInNlcGFyYXRlIiwiaW5wdXRfbWFwIiwib3V0cHV0X21hcF9ub2RlIiwibWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfIiwiaW5wdXRfbWFwX2NoYW5nZWQiLCJkZXBlbmRlbmN5IiwicHJldl9pbnB1dF9tYXAiLCJvdXRwdXRfbWFwIiwiZXhwZXJ0X25vZGVzIiwib2xkX25vZGUiLCJzdWJyYW5nZSIsInJhbmdlIiwiY29tcGFyZSIsImVxdWFsIiwibWF5YmVfYm91bmRfZXF1YWwiLCJhXzAwMiIsImJfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJyYW5nZV9pc19lbXB0eSIsIm1pbiQwIiwibWF4JDAiLCJtYXgkMSIsIm1pbiQxIiwicmFuZ2VfaW5jbHVkZXMiLCJyYW5nZSQwIiwiZnJvbV9zY3JhdGNoIiwib2xkX3JhbmdlIiwib2xkX21pbiIsIm9sZF9tYXAiLCJvbGRfbWF4Iiwib2xkX3JlcyIsIm9sZF9tYXgkMCIsInBhcmFtIiwiYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24iLCJvdXRzaWRlIiwib3V0c2lkZSQwIiwib3V0c2lkZV9jdXRvZmYiLCJ3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2UiLCJ3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIiwibWFwX2FwcGVuZF9leG4iLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm9sZF9taW4kMCIsIm9sZF9taW4kMSIsIm9sZF9tYXgkMSIsIndpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlIiwicmVrZXkiLCJvdXRlcl9jb21wYXJhdG9yIiwiaW5kZXhfYnlpIiwiaW5kZXgiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfbWFwIiwiaW5uZXJfbWFwJDAiLCJpbmRleF9ieSIsImlzX2tub3duIiwidG9fb3B0aW9uIiwiZmluZF9rZXlfcmFuZ2VfbGluZWFyIiwiZnJvbSIsInRvIiwibGVuIiwiYmVnaW5fa2V5IiwiZW5kX2tleSIsImZpbmRfa2V5cyIsImZvbGQiLCJzdGFydF9wb3MiLCJhZHZhbmNlX3BvcyIsInBvcyIsImJlZ2luX2tleSQwIiwiZW5kX2tleSQwIiwicmFuayIsImNvbXBhcmVfa2V5Iiwic2FtZV9rZXkiLCJwcm9jZXNzIiwibmV3X21hcCIsIm9sZF9yYW5rIiwib2xkX2tleSIsIm9sZF9yYW5rJDAiLCJ1cHBlcl9ib3VuZCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQkMCIsImxvd2VyX2JvdW5kJDAiLCJzdWJyYW5nZSQwIiwiZGlmZl9rZXkiLCJvbGRfcmFuayQxIiwib2xkJDEiLCJzdWJyYW5nZV9ieV9yYW5rIiwiZmluZF9rZXlfcmFuZ2UiLCJlbmRfa2V5X29wdCQwIiwib2xkX3RvIiwib2xkX2Zyb20iLCJmaW5kX29mZnNldCIsImNoYW5nZWRfa2V5IiwicmFuZ2Vfb2Zmc2V0X2JlZ2luIiwicmFuZ2Vfb2Zmc2V0X2VuZCIsImFkanVzdF9hbmRfb2Zmc2V0IiwiYnkkMSIsImtleSQxIiwiYnkkMiIsImJ5IiwiY2xvc2VzdF9kaXIiLCJieSQwIiwib2Zmc2V0X2VuZCIsIm9mZnNldF9iZWdpbiIsIm1hcF9vZmZzZXRfZW5kIiwibWFwX29mZnNldF9iZWdpbiIsImVuZF9rZXlfb3B0JDIiLCJiZWdpbl9rZXlfb3B0IiwibWFwX29mZnNldF9iZWdpbiQwIiwiZW5kX2tleV9vcHQiLCJiZWdpbl9rZXlfb3B0JDAiLCJzeW1ib2wiLCJib3VuZCIsInJldHVybiQwIiwicGF0dGVybl9zeW50YXhfMDA4IiwicGF0dGVybl9zeW50YXhfMDA5IiwibGIiLCJwYXR0ZXJuX3N5bnRheF8wMTAiLCJ1IiwicGF0dGVybl9zeW50YXhfMDExIiwidWIiLCJsZXRfc3ludGF4XzAxNiIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxMiIsImwkMCIsInBhdHRlcm5fc3ludGF4XzAxMyIsImxiJDAiLCJsZXRfc3ludGF4XzAyMCIsInBhdHRlcm5fc3ludGF4XzAxNCIsInUkMCIsInBhdHRlcm5fc3ludGF4XzAxNSIsInViJDAiLCJsZXRfc3ludGF4XzAyMyIsInRyYW5zcG9zZSIsImsyX2NvbXBhcmF0b3IiLCJtIiwiazFfY29tcGFyYXRvciIsImsxIiwiazIiLCJ2YWx1ZSIsImFjY19pbm5lciIsImFjY19pbm5lciQwIiwiY29sbGFwc2VfYnkiLCJtZXJnZV9rZXlzIiwiY29sbGFwc2UiLCJpbm5lcl9jb21wYXJhdG9yJDAiLCJleHBhbmQiLCJjb3VudGkiLCJjb3VudCIsImV4aXN0c2kiLCJleGlzdHMiLCJzdW0iLCJHcm91cCIsInYiLCJmb3JfYWxsaSIsImZvcl9hbGwiLCJjcmVhdGUiLCJzZWxmIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsIm5ld192YWx1ZSIsInVwZGF0ZXJfbm9kZSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsInNhdmVkX3ZhbHVlIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJtYXRjaCQ0IiwidiQxIiwibWF0Y2gkNSIsInYkMiIsIm1hdGNoJDAiLCJpbmZvX3Blcl9rZXkiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJhIiwiY29udGVudHNfYmlnc3RyIiwiYmxvYiIsInVybCIsImNyZWF0ZSQwIiwib3B0IiwiZ2V0X2Rvd25sb2FkIiwiYnV0dG9uX3RleHQiLCJzdGgiLCJlbmFibGVkIiwic3RoJDAiLCJvbl9jbGljayIsInN0aCQxIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMjIiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wNDAiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwidG9wXzAwNSIsImxlZnRfMDA3IiwiYm90dG9tXzAwOSIsInJpZ2h0XzAxMSIsImR1cGxpY2F0ZXNfMDEzIiwiZXh0cmFfMDE0Iiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjQiLCJmaWVsZF9zZXhwXzAxNiQ0IiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNSIsImZpZWxkX3NleHBfMDE2JDAiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMSIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNiQyIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE2JDMiLCJmdmFsdWVfMDE5IiwicmlnaHRfMDEyIiwiYm90dG9tXzAxMCIsImxlZnRfMDA4IiwidG9wXzAwNiIsInNleHBfb2ZfdCIsIm9mX2FfMDI2IiwicmlnaHRfMDM0IiwiYm90dG9tXzAzMiIsImxlZnRfMDMwIiwidG9wXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInY0IiwidjMiLCJ2MiIsInYxIiwic2l6ZSIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwidl90b3AiLCJ2X2xlZnQiLCJ2X2JvdHRvbSIsInZfcmlnaHQiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDM2IiwiYl8wMzciLCJuIiwibiQwIiwibiQxIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwicmlnaHQkMCIsImJvdHRvbSQwIiwibGVmdCQwIiwidG9wJDAiLCJtYWtlX2NyZWF0b3IiLCJ0b3BfZnVuIiwibGVmdF9mdW4iLCJib3R0b21fZnVuIiwicmlnaHRfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwidG9wX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJsZWZ0X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJib3R0b21fZ2VuIiwiY29tcGlsZV9hY2MkMyIsInJpZ2h0X2dlbiIsImFjYyIsIm1hcCIsIml0ZXIiLCJmb2xkIiwiaW5pdCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsIm1hcCQxIiwidCIsImYiLCJpbnRfaGVpZ2h0IiwiaW50X3dpZHRoIiwiZmxvYXRfaGVpZ2h0IiwiZmxvYXRfd2lkdGgiLCJyb3VuZF9mbG9hdF9yZWN0Iiwib3B0Iiwic3RoIiwicm91bmQiLCJyb3dzX29yX2NvbHVtbnNfb2Zfc2V4cCIsInNleHBfMDQxIiwic2V4cF9vZl9yb3dzX29yX2NvbHVtbnMiLCJncm91cCQwIiwiYmluX3NoYXBlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9zaXplX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZV9yb3dzX29yX2NvbHVtbnMiLCJiaW5fd3JpdGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyQwIiwiYmluX3JlYWRlcl9yb3dzX29yX2NvbHVtbnMiLCJiaW5fcm93c19vcl9jb2x1bW5zIiwicm93cyIsImNvbHVtbnMiLCJpc19yb3dzIiwiaXNfY29sdW1ucyIsInJvd3NfdmFsIiwiY29sdW1uc192YWwiLCJyb3dzJDAiLCJjb2x1bW5zJDAiLCJmb2xkJDEiLCJyb3dzX2Z1biIsImNvbHVtbnNfZnVuIiwiaXRlciQxIiwibWFwJDIiLCJtYWtlX21hdGNoZXIiLCJyb3dzX2dlbiIsImNvbHVtbnNfZ2VuIiwidG9fcmFuayIsInRvX25hbWUiLCJjb21wYXJlX3Jvd3Nfb3JfY29sdW1ucyIsImlubmVySGVpZ2h0IiwiaW5uZXJXaWR0aCIsImVsZW1lbnRfaXNfaW5fdmlld3BvcnQiLCJlbHQiLCJzY3JvbGwiLCJpZCIsInZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCIsInZpZXdwb3J0X3JlY3QiLCJjbGllbnRfcmVjdF9vZl9lbGVtZW50IiwiYm91bmRpbmdfcmVjdCIsImNsaWVudF9yZWN0IiwiZmluZF92aXNpYmxlX3JhbmdlIiwibGVuZ3RoIiwibnRoX2VsZW1lbnRfaWQiLCJsYXlvdXQiLCJlbGVtZW50X3NlYXJjaCIsInNlYXJjaF9ieSIsIm1vZGUiLCJ4IiwibnRoX2VsZW1lbnQiLCJmaXJzdCIsImxhc3QiLCJnZXQiLCJpc19hc2NlbmRpbmciLCJsZW5ndGgkMCIsInZpZXdwb3J0X3JlY3QkMCIsInRhcmdldCIsInRhcmdldCQwIiwic2VhcmNoX2J5JDAiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIiwiZ2V0X3Njcm9sbF9jb250YWluZXIiLCJlbCIsImZpbGVuYW1lIiwicHJpbnRfZXJyb3JmIiwiZm10IiwicyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwiY2FsbGJhY2siLCJjdXJyZW50X2NvbnRleHQiLCJyZXF1ZXN0X2lkcyIsImNhbGxiYWNrJDAiLCJzZXRfdGltZW91dF9pZCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsImFuaW1hdGlvbl9jYWxsYmFjayIsInRpbWVvdXRfY2FsbGJhY2siLCJhc19mb2N1c2FibGUiLCJtYXJrX2RpcnR5IiwiaXNfZGlydHkiLCJ4XzAwMiIsInhfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJzZXRfbG9nZ2luZ19maWx0ZXIiLCJsb2dnaW5nX2ZpbHRlciIsImdsb2JhbF9pc19pbml0aWFsaXplZCIsImFwcF9zdGF0ZXMiLCJzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCIsInN0cmluZ3MiLCJzdHIiLCJtdWx0aV9saW5lX3N0cmluZ19saXN0IiwiZ2V0X3RhZ19uYW1lIiwibm9kZSIsImUiLCJzdGFydF9ib25zYWkiLCJiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCIsImluaXRpYWxfbW9kZWwiLCJkZWJ1ZyIsInN0aCQwIiwic3RvcCIsInN0aCQxIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImN1dG9mZiIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJnZXRfdmlldyIsIm5hbWVkX2xvZ2dpbmdfZmlsdGVycyQwIiwiZmlsdGVyX25hbWVzIiwid2l0aF9hcHBfaWRfb3B0IiwidXBkYXRlX3N0YXRlIiwiYXBwX2lkX29wdCIsImFwcF9pZF9vcHQkMCIsImFwcF9pZCIsInN0YXRlIiwidXBkYXRlX2xvZ2dpbmdfZmlsdGVyIiwidXBkYXRlX3Nob3VsZF9wcm9maWxlIiwic2hvdWxkX3Byb2ZpbGUiLCJ1cGRhdGVfc2hvdWxkX2RlYnVnIiwic2hvdWxkX2RlYnVnIiwiYmxhbmdfc3RyIiwiYmxhbmdfc3RyJDAiLCJhcHBfc3RhdGUiLCJibGFuZyIsImludmFsaWRfbmFtZXMiLCJuYW1lIiwiZmlsdGVyIiwiZmlsdGVyJDAiLCJhY3Rpb25fc2V4cCIsImNvbnRlbnRzIiwiYXBwX2luaXRfbWVzc2FnZSIsInNob3VsZF9kZWJ1ZyQwIiwic2hvdWxkX3Byb2ZpbGUkMCIsImh0bWwiLCJodG1sX2RvbSIsInBhcmVudCIsImNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCIsImV2ZW50X25hbWUiLCJ3aGVyZSIsInByZXZfaHRtbCIsInByZXZfZWx0IiwicmVmb2N1c19yb290X2VsZW1lbnQiLCJlbGVtZW50IiwidGltZXJfc3RhcnQiLCJwcm9maWxlIiwidGltZXJfc3RvcCIsImJlZm9yZSIsImFmdGVyIiwicmVsYXRlZF90YXJnZXQiLCJzYWZlX2ZpbHRlciIsInNob3VsZF9sb2ciLCJlcnIiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDEyIiwibmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIiwicGVyZm9ybV91cGRhdGUiLCJkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsImFkZF9uZXdfYXR0cnMiLCJhdHRycyIsImh0bWwkMCIsInBhdGNoIiwib2xkX3RhZ19uYW1lIiwibmV3X3RhZ19uYW1lIiwidGFnc190aGVfc2FtZSIsInN0YXJ0IiwiYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24iLCJvbGRfbW9kZWwiLCJpbmplY3QiLCJjb21wb25lbnQiLCJzY2hlZHVsZV9ldmVudCIsInNjaGVkdWxlX2FjdGlvbiIsImVycm9yX3NvdXJjZV8wMTQiLCJpbnZhcmlhbnQiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsInRvX3N0cmluZyIsImVxdWFsIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDUiLCJiXzAwNiIsImFfMDA5IiwiYl8wMTAiLCJ1cGRhdGVfb2Zfc2V4cCIsIm9mX2FfMDExIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTYiLCJpbnB1dF8wMTkiLCJ2YWx1ZV8wMjEiLCJkdXBsaWNhdGVzXzAyMyIsImV4dHJhXzAyNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjciLCJmaWVsZF9uYW1lXzAyNSIsInRhaWxfMDMxIiwiZmllbGRfc2V4cF8wMjYkMiIsImZpZWxkX3NleHBfMDI2IiwieF8wMzIiLCJmaWVsZF9zZXhwXzAyNiQwIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI2JDEiLCJmdmFsdWVfMDI5IiwidmFsdWVfMDIyIiwiaW5wdXRfMDIwIiwiZmllbGRfc2V4cHNfMDMzIiwiaW5wdXRfMDM2IiwibGFzdF92YWxpZF8wMzgiLCJlcnJvcl8wNDAiLCJkdXBsaWNhdGVzXzA0MiIsImV4dHJhXzA0MyIsInNleHBfMDM0IiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MSIsImZpZWxkX3NleHBfMDQ1JDMiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDUyIiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDgiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDQ3IiwiZXJyb3JfMDQxIiwibGFzdF92YWxpZF8wMzkiLCJpbnB1dF8wMzciLCJzZXhwX29mX3VwZGF0ZSIsIm9mX2FfMDU0IiwidmFsdWVfMDU4IiwiaW5wdXRfMDU2IiwiYXJnXzA1OSIsImJuZHNfMDU1IiwiYXJnXzA1NyIsImJuZHNfMDU1JDAiLCJlcnJvcl8wNjUiLCJsYXN0X3ZhbGlkXzA2MyIsImlucHV0XzA2MSIsImFyZ18wNjYiLCJibmRzXzA2MCIsImFyZ18wNjQiLCJibmRzXzA2MCQwIiwiYXJnXzA2MiIsImJuZHNfMDYwJDEiLCJncm91cCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2MiIsInYxIiwic2l6ZSIsInYzIiwidjIkMCIsInYxJDAiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCIsIndyaXRlX2EiLCJidWYiLCJwb3MiLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X2lucHV0Iiwidl92YWx1ZSIsInZfaW5wdXQkMCIsInZfbGFzdF92YWxpZCIsInZfZXJyb3IiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJhXzA2OCIsImJfMDY5IiwiYV8wNzIiLCJiXzA3MyIsIm4iLCJuJDAiLCJhXzA3NiIsImJfMDc3IiwibiQxIiwiZXF1YWxfdXBkYXRlIiwiYV8wNzgiLCJiXzA3OSIsImFfMDgwIiwiYl8wODEiLCJncm91cCQwIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJiaW5fdXBkYXRlIiwiY29tcGFyZV91cGRhdGUiLCJhXzA4NyIsImJfMDg4IiwiYV8wODkiLCJiXzA5MCIsImxpZnQiLCJNIiwiaW5wdXQkMSIsInZhbHVlIiwiaW5wdXQiLCJpbnB1dCQwIiwiZXhuJDAiLCJleG4iLCJpbml0aWFsX2VtcHR5IiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwibGFzdF92YWxpZCIsImdldF9lcnJvciIsImVycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJzdHJ1Y3R1cmFsX2xpc3QiLCJvcHQiLCJjaGlsZHJlbiIsInN0aCIsIm9yaWVudGF0aW9uIiwibGF5b3V0X3N0eWxlIiwiY2hpbGQiLCJzZXhwX29mX3QiLCJjb21iaW5lIiwibGVmdCIsInJpZ2h0IiwiaW5pdCIsImVsZW1lbnQiLCJmIiwiZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQiLCJjaGFuZ2VfaGFuZGxlciIsIm5vcm1hbGl6ZWQiLCJjaGFuZ2VfaGFuZGxlciQwIiwiZXZlbnRfaWQiLCJvbl9tb3VudCIsInN0YXRlIiwiZGVzdHJveSIsInVwZGF0ZSQwIiwib2xkX2lucHV0IiwibmV3X2lucHV0IiwiY3JlYXRlIiwiaW1wbCIsInZhbHVlcyIsInNlbGVjdGVkIiwib25fY2hhbmdlIiwiZXh0cmFfYXR0cnMiLCJzdGgkMCIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInZhbHVlcyQwIiwiYV8wOTEiLCJiXzA5MiIsImFfMDkzIiwiYl8wOTQiLCJvZl9lbnVtIiwib2ZfZW51bV9vcHQiLCJhXzA5NSIsImJfMDk2IiwiYV8wOTciLCJiXzA5OCIsImltcGwkMCIsImlzX2NoZWNrZWQiLCJsYWJlbCIsIm9uX3RvZ2dsZSIsImV2Iiwic2ltcGxlIiwiaW1wbCQxIiwiaXRlbSIsIm9mX3ZhbHVlcyQwIiwib2ZfZW51bSQwIiwiaW1wbCQyIiwicmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IiLCJzdGgkMSIsInRhcmdldCIsImkiLCJvcHRpb25zIiwic2VsZWN0ZWRfdmFsdWVzIiwiaXNfc2VsZWN0ZWQiLCJ3YXNfcmVwZWF0ZWRfY2xpY2siLCJvZl92YWx1ZXMkMSIsIm9mX2VudW0kMSIsImxpc3RlbmVyIiwibm9ybWFsaXplIiwibWF5YmVfb25fcmV0dXJuIiwib25fcmV0dXJuIiwib25fcmV0dXJuJDAiLCJpbnB1dF9ub2RlIiwicGxhY2Vob2xkZXIiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwiY2FsbF9vbl9pbnB1dF93aGVuIiwic2hvdWxkX25vcm1hbGl6ZSIsInR5cGVfYXR0cnMiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm9mX3N0cmluZ2FibGUiLCJ2YWxpZGF0ZWQiLCJWIiwidmFsdWVfYXR0ciIsInRleHQiLCJudW1iZXIiLCJzdGVwIiwicmFuZ2UiLCJ0aW1lIiwiZGF0ZSIsImRhdGV0aW1lX2xvY2FsIiwidXRjX29mZnNldCIsImhvdXJzIiwiem9uZSIsInBhcnRzIiwiaHIiLCJtaW4iLCJvZmRheSIsIlpvbmVkX3RpbWUiLCJ0ZXh0X2FyZWEiLCJzdGgkMiIsImNvbG9yX3BpY2tlciIsImV4dHJhX2F0dHIiLCJ3aXRoX3ZhbGlkYXRpb24iLCJ2YWxpZGF0aW9uIiwib25fY2xpY2siLCJyZXN1bHQiLCJyZWFzb24iLCJzaW1wbGUkMCIsImJhcmVib25lc19idXR0b25fbGlrZSIsImNoZWNrZWQiLCJoaWRlX25hdGl2ZV9pbnB1dHMiLCJpbXBsJDMiLCJuYW1lIiwic3R5bGUiLCJleHRyYV9hdHRycyQwIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJvZl92YWx1ZXMkMiIsIkUiLCJvZl92YWx1ZXNfaG9yaXpvbnRhbCIsImFjY2VwdF9hdHRycyIsImFjY2VwdHMiLCJzJDAiLCJsaXN0IiwiYWNjZXB0IiwiZmlsZXMiLCJzaW5nbGUiLCJmaWxlX2xpc3QiLCJmaWxlIiwiZW1wdHkiLCJpc19lbXB0eSIsInQiLCJ6ZXJvX2JpdCIsImsiLCJtIiwibWVtIiwiaiIsInIiLCJsIiwibCQwIiwiZmluZCIsIngiLCJmaW5kX29wdCIsImZpbmRfZmlyc3Rfb3B0IiwiZiIsInJ2IiwicmsiLCJsdiIsImxrIiwidiQwIiwiZmluZF9maXJzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX2xhc3QiLCJtYXNrIiwicCIsImpvaW4iLCJ0MSIsInAxIiwidDAiLCJwMCIsIm1hdGNoX3ByZWZpeCIsImFkZCIsImlucyIsInNpbmdsZXRvbiIsInYiLCJicmFuY2giLCJ0JDAiLCJyZW1vdmUiLCJybXYiLCJjYXJkaW5hbCIsIml0ZXIiLCJtYXAiLCJtYXBpIiwiZm9sZCIsInMiLCJhY2N1IiwicyQwIiwiYWNjdSQwIiwiYWNjdSQxIiwiZm9yX2FsbCIsImV4aXN0cyIsImZpbHRlciIsInByIiwiZmlsdGVyX21hcCIsInBhcnRpdGlvbiIsInBhcnQiLCJhY2MkMCIsImNob29zZSIsImNob29zZV9vcHQiLCJzcGxpdCIsImNvbGwiLCJiIiwibWluX2JpbmRpbmciLCJicyIsImtzIiwiYnQiLCJrdCIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwiYmluZGluZ3MiLCJhY2MiLCJjb21wYXJlIiwiY21wIiwidDIiLCJjb21wYXJlX2F1eCIsInQxJDAiLCJ0MiQwIiwieDEiLCJrMSIsIngyIiwiazIiLCJjIiwicjEiLCJsMSIsIm0xIiwicjIiLCJsMiIsIm0yIiwicDIiLCJjJDAiLCJjJDEiLCJjJDIiLCJlcXVhbCIsImVxIiwiZXF1YWxfYXV4IiwibWVyZ2UiLCJhZGQkMCIsInYxIiwidjIiLCJ1cGRhdGUiLCJ6IiwidW5zaWduZWRfbHQiLCJuIiwidCQyIiwiczEiLCJzMCIsImskMCIsInEiLCJ0JDEiLCJ1bmlvbiIsInRvX3NlcSIsInByZXBlbmRfc2VxIiwibSQwIiwicyQxIiwidG9fc2VxX2Zyb20iLCJrZXkiLCJhZGRfc2VxIiwib2Zfc2VxIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwicmVhZF9qdW5rIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsImZpZWxkcyQwIiwicmVzdCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJzeW1ib2wiLCJjbHNzIiwiZGl2X2MiLCJjbHMiLCJzcGFuX2MiLCJkaXZfZW1wdHkiLCJkaXZfaWYiLCJwIiwiYXRzIiwibnMiLCJzcGFuX2lmIiwidW5sZXNzIiwiYSIsInN3YXAiLCJiIiwibWFwMiIsImYiLCJtYXAzIiwiYyIsInByaW50X3RpbWVfcHJlZml4IiwibmFtZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsInByaW50X3RpbWUiLCJwcmludF90aW1lcyIsInRpbWVzIiwibGFzdCIsImdvIiwicHJldmlvdXNfdGltZSIsInByZXZpb3VzX3RpbWUkMCIsInRpbWVzJDAiLCJ0aW1lcyQxIiwicHJldmlvdXNfdGltZSQxIiwibWVhc3VyZV90aW1lIiwibWVhc3VyZSIsIngiLCJjYXQiLCJyZW1vdmVfbnRoIiwibiIsInQiLCJyZW1vdmVfZmlyc3QiLCJyZW1vdmVfbGFzdCIsImluc2VydF9udGgiLCJzIiwic3BsaXRfbnRoIiwidG9fbGlzdCIsImkiLCJyZXBlYXQiLCJhYmJyZXZpYXRlIiwibWF4X2xlbiIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInppcCIsInkiLCJzZXF1ZW5jZSIsIm1zIiwiYWNjIiwibXMkMCIsIm0iLCJvZl9hXzAwMSIsIm9mX2FfMDAzIiwieGYiLCJtYXRjaCIsImV4biQwIiwiZXhuIiwicyQwIiwiZ2V0IiwicHV0IiwibW9kaWZ5IiwibW9kaWZ5JDAiLCJnZXQkMCIsInB1dCQwIiwibW9kaWZ5JDEiLCJtb2RpZnkkMiIsImxldCQwIiwicmVzdWx0IiwibGV0JDEiLCJtYXBfZnN0IiwibWFwX3NuZCIsImlmX25vbmUiLCJvIiwiZ2V0X29yX2ZhaWwiLCJnZXRfb3JfcmFpc2UiLCJlIiwibzEiLCJvMiIsInYyIiwidjEiLCJzb21lX2lmIiwiY29uZCIsInVuemlwIiwibCIsInhzIiwiYW5kX3RoZW4iLCJ0cF9sb2MiLCJlcnJvcl9zb3VyY2VfMDA4IiwicHAiLCJwcF92IiwiayIsInYiLCJiaW5kaW5nX29mX3NleHAiLCJvZl92XzAwMSIsInNleHBfMDA3IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInJlczBfMDA1IiwicmVzMV8wMDYiLCJzZXhwX29mX2JpbmRpbmciLCJvZl92XzAwOSIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwic2V4cF9vZl92Iiwidl9vZl9zZXhwIiwic2V4cCIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInlvanNvbiIsInYwIiwidjAkMCIsInYxJDAiLCJ5b2pzb25fb2ZfYmluZGluZyIsInlvanNvbl9vZl90IiwieW9qc29uX29mX3YiLCJ0X29mX3lvanNvbiIsInZfb2ZfeW9qc29uIiwicmV2X2lmIiwiZGVkdXAiLCJkZWR1cGVkIiwiYXJlX2R1cGxpY2F0ZXMiLCJncm91cF9ieSIsImtleSIsImdyb3VwZWQiLCJrX2dyb3VwIiwicmFuZ2UiLCJvcHQiLCJoaSIsInN0aCIsImxvIiwibWtfZnJhbWUiLCJpbnZhbGlkX2FyZyIsInhzJDAiLCJzdWZmaXgiLCJwcmVmaXgiLCJzcGxpdCIsInBvc3QiLCJ4JDAiLCJwcmUiLCJzcGxpdF9mcmFtZSIsInhzJDEiLCJzdWJqIiwib2ZfZnJhbWUiLCJzdWJqZWN0IiwiY29tYmluZV9vcHQiLCJ5cyIsInh5cyIsImlzX2VtcHR5IiwiZmxhdF9tYXAiLCJqb2luIiwic2VwIiwiaGRfb3B0IiwiaGQiLCJudGhfb3B0IiwibiQwIiwidGwiLCJuJDEiLCJzcGxpdF9uX29wdCIsInNwbGl0X24iLCJyIiwic3BsaXRfc3VibGlzdF9vcHQiLCJqIiwicmlnaHQiLCJsZWZ0IiwibWlkIiwibGVmdCQwIiwic3BsaXRfc3VibGlzdCIsInN1Ymxpc3QiLCJzcGxpdF9udGhfb3B0IiwicHV0X250aCIsInRsJDAiLCJ0bCQxIiwibWFwX250aCIsImhkJDAiLCJzcGxpdF9sYXN0X29wdCIsImxlYWRpbmciLCJzcGxpdF9sYXN0IiwibGFzdF9vcHQiLCJsZW5ndGgiLCJzcGxpdF9maXJzdF9vcHQiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfZmlyc3QiLCJmb2xkX2xlZnRfbWFwIiwic3RhcnQiLCJuZXdfYWNjIiwiZmluYWwkMCIsInRha2Vfd2hpbGUiLCJyZXN0IiwidGFrZW4iLCJwcm9kdWN0Iiwib3JkZXJlZF9wYWlycyIsIm5laWdoYm9ycyIsIngyIiwieDEiLCJtYXBfYWx0IiwiZngiLCJmeSIsImludGVybGVhdmUiLCJwX2luZGljZXMiLCJpZHhzIiwic3BsaXRzIiwiZWxlbV9zcGxpdHMiLCJyb3RhdGUiLCJzaW5nbGVfZWxlbSIsImNvdW50X3ByZWQiLCJmb3JfYWxsMl9vcHQiLCJtYXAyX29wdCIsInJlcGxpY2F0ZSIsImMkMCIsImMkMSIsIm9wdF96aXAiLCJ5cyQwIiwiemlwX2RlZmF1bHRzIiwiZGVmYXVsdF94IiwiZGVmYXVsdF95IiwieXMkMSIsInkkMCIsInVwZGF0ZV9udGgiLCJkaXNqb2ludF9wYWlycyIsImZpbmRpX29wdCIsInBhaXIiLCJpbml0X2ZvbGQiLCJlbHQiLCJhY2MkMCIsInJldl94cyIsImFzc29jX2VyciIsImVyciIsInVwZGF0ZV9hc3NvYyIsInYkMCIsImskMCIsInNwbGl0X2F0X25vbmVzIiwiYWNjcyIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsInhzJDIiLCJhY2MkNCIsImZpcnN0X2FuZF9sYXN0IiwieHNzIiwiZXJyb3Jfc291cmNlXzAwMyIsImZtdCIsInNob3ciLCJzZXhwXzAwNCIsInRvZ2dsZSIsInNpZ24iLCJjaG9vc2UiLCJkIiwibWtfb3B0IiwibWsiLCJmaW5kX21rIiwib3JpZW50IiwicHJlZml4JDAiLCJhcHBlbmQiLCJzdWZmaXgkMCIsIm51bV9kaWdpdHMiLCJtb2R1bG8iLCJpcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaXBvd19pdGVyIiwiYiQwIiwiZSQwIiwiciQwIiwiZSQxIiwiYiQxIiwiciQxIiwiZSQyIiwiYiQyIiwic2luZ2xldG9uIiwiZGlzal91bmlvbiIsIm0kMCIsImVycm9yX3NvdXJjZV8wMDUiLCJwb2x5X2wiLCJwb2x5X3IiLCJhMCIsImEwJDAiLCJvZl9sXzAwMSIsIm9mX3JfMDAyIiwidGFnXzAwOCIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwic2V4cF9hcmdzXzAwOSIsInJlczBfMDExIiwib2ZfbF8wMTkiLCJvZl9yXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJhcmcwXzAyMyIsInJlczBfMDI0Iiwib2ZfbCIsIm9mX3IiLCJ0YWciLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsImlzX0wiLCJpc19SIiwiZ2V0X0wiLCJnZXRfUiIsImVycm9yX3NvdXJjZV8wMDkiLCJwb2x5X2EiLCJwb2x5X2IiLCJhMSIsIm9mX2JfMDAyIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm9mX2FfMDEwIiwib2ZfYl8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMF8wMTQiLCJyZXMxXzAxNSIsIm9mX2EiLCJvZl9iIiwiYXMiLCJicyIsImZpcnN0X2EiLCJsYXN0X2EiLCJyZXYiLCJyZXZfYSIsInJldl9iIiwiY29ucyIsInNub2MiLCJnZXRfYXMiLCJnZXRfYnMiLCJhYmFfdHJpcGxlcyIsImFiYSIsImEyIiwibWFwX2EiLCJmX2EiLCJtYXBfYiIsImZfYiIsIm1hcF9hYmFzIiwiZl9hYmEiLCJ0cmltIiwiYXMkMCIsImFzJDEiLCJjcyIsImZvbGRfbGVmdCIsImZfYmEiLCJtYXBwZWQiLCJmb2xkX3JpZ2h0IiwiZl9hYiIsImVxdWFsIiwieCIsInkiLCJjb21wYXJlIiwidG9faW50IiwicHAiLCJpbnRlcnNlY3QiLCJzeW1ib2wiLCJkdW1teSIsImluZXhpc3RhbnQiLCJsZXR0ZXIiLCJub3RfbGV0dGVyIiwibmV3bGluZSIsImxhc3RuZXdsaW5lIiwic2VhcmNoX2JvdW5kYXJ5IiwiZnJvbV9jaGFyIiwic2V4cCIsImZtdCIsInMiLCJwYWlyIiwicHAxIiwicHAyIiwidjIiLCJ2MSIsInRyaXBsZSIsInBwMyIsInYzIiwib3B0aW50IiwiaSIsInF1b3RlIiwicHBfb2xpc3QiLCJwcF9lbGVtIiwicHBfc3RyX2xpc3QiLCJ0b190b19zdHJpbmciLCJiIiwiY2FueSIsInVuaW9uIiwibCQwIiwibCIsImwkMiIsImwkMSIsInIiLCJjMiIsImMxIiwiciQwIiwiYzIkMCIsImMxJDAiLCJsJDMiLCJsJDQiLCJpbnRlciIsImRpZmYiLCJyJDEiLCJzaW5nbGUiLCJjIiwiYWRkIiwic2VxIiwiYyQwIiwib2Zmc2V0IiwibyIsImVtcHR5IiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwibWVyZ2VfbWFya3Nfb2Zmc2V0Iiwib2xkIiwibnciLCJtZXJnZSIsIm0iLCJhY2N1JDEiLCJhY2N1JDIiLCJhIiwiYWNjdSQwIiwiaWR4IiwibWFya3MiLCJtYXJrc19zZXRfaWR4IiwicHBfbWFya3MiLCJwcF9zZW0iLCJrIiwicHBfcmVwX2tpbmQiLCJlIiwiZSQwIiwiZSQxIiwiZSQyIiwiayQwIiwiZSQzIiwiaSQwIiwiZmlyc3QiLCJyZXMiLCJjcmVhdGVfaWRzIiwibWtfZXhwciIsImlkcyIsImRlZiIsImVtcHR5JDAiLCJjc3QiLCJhbHQiLCJraW5kIiwiaXNfZXBzIiwiZXhwciIsImVwcyIsInJlcCIsInNlbSIsIm1hcmsiLCJwbWFyayIsImVyYXNlIiwibSQwIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZW5hbWUiLCJ6IiwieSQwIiwiZyIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsInIxIiwiZTEiLCJsMSQxIiwicjIiLCJlMiIsImwyJDEiLCJyMSQwIiwiZTEkMCIsIm1hcmtzMSIsInIyJDAiLCJlMiQwIiwibWFya3MyIiwicjEkMSIsIm1hcmtzMSQwIiwicjIkMSIsIm1hcmtzMiQwIiwiaGFzaCQwIiwibWFya3MkMCIsImFjY3UkMyIsInRzZXEiLCJwcmludF9zdGF0ZV9yZWMiLCJwcmludF9zdGF0ZV9sc3QiLCJwcCQwIiwibWsiLCJjYXQiLCJkZXNjIiwiY3JlYXRlIiwiZXF1YWwkMCIsImhhc2gkMSIsImNyZWF0ZV93b3JraW5nX2FyZWEiLCJpbmRleF9jb3VudCIsInciLCJtYXJrX3VzZWRfaW5kaWNlcyIsInRibCIsImZyZWVfaW5kZXgiLCJ0YmxfcmVmIiwibGVuIiwiaWR4JDAiLCJyZW1vdmVfbWF0Y2hlcyIsInNwbGl0X2F0X21hdGNoIiwicmVtb3ZlX2R1cGxpY2F0ZXMiLCJwcmV2IiwicHJldiQwIiwicHJldiQxIiwicHJldiQyIiwiciQyIiwiciQzIiwieCQxIiwicHJldiQzIiwiciQ0Iiwic2V0X2lkeCIsImZpbHRlcl9tYXJrcyIsImRlbHRhXzEkMCIsIm5leHRfY2F0IiwicHJldl9jYXQiLCJkZWx0YV8yJDAiLCJkZWx0YV8xIiwiZGVsdGFfc2VxJDAiLCJ5JDEiLCJraW5kJDAiLCJyZXBfa2luZCIsInkkMiIsIm1hcmtzJDEiLCJ5JDMiLCJtYXJrcyQyIiwiY2F0JDAiLCJtYXJrcyQzIiwiZGVsdGFfMiIsImRlbHRhX3NlcSIsImRlbHRhXzQiLCJyZW0kMCIsImRlbHRhIiwiY2hhciQwIiwic3QiLCJleHByJDAiLCJyZWRfdHIiLCJ0cjIiLCJzdDIiLCJzMiIsInRyMSIsInN0MSIsInMxIiwicHJlcGVuZF9kZXJpdiIsInJlc3RyaWN0IiwicyQxIiwicHJlcGVuZF9tYXJrc19leHByX2xzdCIsIm0kMSIsImRlcml2XzEkMCIsImFsbF9jaGFycyIsImNhdGVnb3JpZXMiLCJyZW0kMSIsImRlcml2XzIkMCIsImRlcml2XzEiLCJkZXJpdl9zZXEiLCJ6JDAiLCJyZW0kMiIsImNhdCQxIiwiZGVyaXZfMiIsInhsIiwieiQxIiwiZGVyaXZfNCIsImRlcml2IiwiZGVyIiwiZXhwciQxIiwic3RhdHVzIiwibWEiLCJzdCQwIiwibWFrZSIsImZsYXR0ZW4iLCJjbSIsImNvbG9yX3JlcHIiLCJzcGxpdCIsImR1bW15X29mZnNldCIsIm0xIiwicDEiLCJwMiIsImdldCIsInN0YXJ0Iiwic3VicyIsInN0b3AiLCJ0ZXN0IiwiZ2V0X29wdCIsImFsbF9vZmZzZXQiLCJhbGwiLCJvZmZzZXRzIiwic3RycyIsIm1hdGNoZXMiLCJwcF9tYXRjaCIsInN0ciIsIm5iX2dyb3VwcyIsIm4iLCJuJDAiLCJ2JDAiLCJ2JDEiLCJuJDEiLCJ1bmtub3duIiwiYnJlYWskMCIsInBwX3JlIiwicmUiLCJncm91cF9jb3VudCIsImdyb3VwX25hbWVzIiwiY2F0ZWdvcnkiLCJjb2xvciIsImR1bW15X25leHQiLCJ1bmtub3duX3N0YXRlIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvbCIsImVvbCIsImJvdyIsImVvdyIsIndvcmQiLCJub3RfYm91bmRhcnkiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsZW9sIiwibG9uZ2VzdCIsInNob3J0ZXN0Iiwibm9uX2dyZWVkeSIsImdyb3VwIiwibm9fZ3JvdXAiLCJuZXN0Iiwic2V0IiwicmciLCJjb21wbCIsImFueSIsIm5vdG5sIiwibG93ZXIiLCJ1cHBlciIsImFscGhhIiwiZGlnaXQiLCJhbG51bSIsIndvcmRjIiwiYXNjaWkiLCJibGFuayIsImNudHJsIiwiZ3JhcGgiLCJwcmludCIsInB1bmN0Iiwic3BhY2UiLCJ4ZGlnaXQiLCJjYXNlJDAiLCJub19jYXNlIiwiY29tcGlsZSIsInJlZ2V4cCQwIiwicmVnZXhwIiwibG5sIiwiY29sb3JpemUiLCJyZWdleHAkMSIsInJlZ2V4cCQyIiwibmVlZF9sbmwiLCJuY29sb3IiLCJjb2xvcnMiLCJsbmwkMCIsIm5jb2xvciQwIiwiaW5pdGlhbCIsImV4ZWNfaW50ZXJuYWwiLCJzdGgiLCJzdGgkMCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwic3RoJDEiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInN0aCQyIiwicGVyaW9kIiwic3RoJDMiLCJleHBhbmRfYnJhY2VzIiwic3RoJDQiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9zbGFzaCQwIiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5IiwiZW5jbG9zZWRfc2V0JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsIm5ld19zdG9yZSIsImNvcHkiLCJtYWtlIiwicyIsInYiLCJmaW5kIiwieCIsInkiLCJ6IiwibGlua190b196IiwiaXNfcmVwcmVzZW50YXRpdmUiLCJlcSIsImdldCIsIngkMCIsInYkMSIsInYkMCIsInNldCIsInIkMSIsInIkMCIsInIiLCJ1bmlvbiIsInkkMCIsInZ4IiwicngiLCJyeSIsIm1lcmdlIiwiZiIsInZ5IiwibGluayIsIm1hdGNoIiwicm9vdHgiLCJyb290eSIsImNoZWNrIiwiY29tcGFyZSIsImN1cnJlbnQiLCJzdGFjayIsImNvbW1pdCIsInJvbGxiYWNrIiwidGVudGF0aXZlbHkiLCJiJDAiLCJlJDAiLCJlIiwiYiIsImRlZmF1bHRfaW5pdGlhbF9sZW5ndGgiLCJjb250ZW50IiwibGVuZ3RoIiwibGVuZ3RoJDAiLCJjb250ZW50JDAiLCJlcnJvcl9zb3VyY2VfMDA4IiwidHBfbG9jIiwic2V4cF9vZl90IiwidCIsInRfb2Zfc2V4cCIsInMiLCJ5b2pzb25fb2ZfdCIsInRfb2ZfeW9qc29uIiwibWsiLCJjb21wYXJlIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicHAiLCJmIiwiaWQiLCJzaG93IiwiYmluZGluZ19vZl9zZXhwIiwib2Zfdl8wMDEiLCJzZXhwXzAwNyIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNSIsInJlczFfMDA2Iiwic2V4cF9vZl9iaW5kaW5nIiwib2Zfdl8wMDkiLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInlvanNvbiIsInYxIiwidjAiLCJ2MCQwIiwidjEkMCIsInlvanNvbl9vZl9iaW5kaW5nIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3YiLCJtYXAiLCJ0X29mX3NleHAkMCIsInZfb2Zfc2V4cCIsInNleHAiLCJ5b2pzb25fb2ZfdCQwIiwieW9qc29uX29mX3YiLCJ0X29mX3lvanNvbiQwIiwidl9vZl95b2pzb24iLCJqc29uIiwicHAkMCIsInBwX3YiLCJmbXQiLCJ2IiwiayIsImludmFsaWQiLCJudWxsYXJ5X2FwX2ZsYWciLCJpc19udWxsYXJ5X2FwX2ZsYWciLCJpZHMiLCJpbml0IiwicnJlZiIsImFkZCQwIiwiYSIsInIiLCJnZXQiLCJnZXRfb3B0Iiwic2V0IiwibWVyZ2UkMCIsImlkJDAiLCJ4IiwibWF4IiwidW5xdW90ZSIsImFwIiwibmVnIiwicG93ZXIiLCJtdWx0IiwicGx1cyIsImNvbnMiLCJjb25jYXQiLCJlcXMiLCJhbmQiLCJvciIsImFubiIsImlmJDAiLCJmdW4iLCJwcm9kIiwic2VtaSIsImxldCQwIiwiZmlsdGVyIiwicnVsZV9hcnIiLCJydWxlX3ByZSIsInJ1bGVfc2VwIiwiY2FzZSQwIiwibWluIiwicDEiLCJwMiIsImFzc29jaWF0aXZpdHlfbWFwIiwiYXNzb2NpYXRpdml0eSIsInAiLCJlcnJvcl9zb3VyY2VfMDAzIiwiYWxsIiwic2V4cF8wMDQiLCJyb290IiwiY29uc2lzdGVudCIsInMkMCIsInRvX3N0cmluZ192ZXJib3NlIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwiXzAiLCJhMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5IiwicmVzMF8wMTEiLCJ0YWciLCJ5b2pzb25fYXJncyIsImNvbmNhdmUiLCJwJDAiLCJwJDEiLCJmaXRzIiwibCIsImZpdHRpbmciLCJmbGlwIiwiYWJzb2x1dGUiLCJkIiwicmVsYXRpdmUiLCJuaWIiLCJzaWRlIiwic2hvdyQwIiwiXzEiLCJfMCQwIiwic2V4cF8wMTMiLCJmaWVsZF9zZXhwc18wMTQiLCJzaGFwZV8wMTUiLCJzb3J0XzAxNyIsImR1cGxpY2F0ZXNfMDE5IiwiZXh0cmFfMDIwIiwiaXRlcl8wMjciLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZ2YWx1ZV8wMjQiLCJmaWVsZF9zZXhwXzAyMiQxIiwiZnZhbHVlXzAyNSIsInNvcnRfMDE4Iiwic2hhcGVfMDE2Iiwic29ydF8wMzMiLCJzaGFwZV8wMzEiLCJhcmdfMDM0IiwiYm5kc18wMzAiLCJhcmdfMDMyIiwiYm5kc18wMzAkMCIsImZpZWxkX3lvanNvbnMiLCJzaGFwZV9maWVsZCIsInNvcnRfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJpdGVyIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInNvcnRfdmFsdWUiLCJzaGFwZV92YWx1ZSIsInZfc29ydCIsInZfc2hhcGUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJzaGFwZSIsIm4iLCJmaXRzJDAiLCJmaXR0aW5nJDAiLCJmbGlwJDAiLCJlcnJvcl9zb3VyY2VfMDE5IiwicHBfc2hhcGUiLCJzaG93X3NoYXBlIiwic2hhcGVfb2Zfc2V4cCIsInNleHBfb2Zfc2hhcGUiLCJzaGFwZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2hhcGUiLCJzZXhwXzAwNiIsImZpZWxkX3NleHBzXzAwNyIsImlkXzAwOCIsInNoYXBlXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwiaXRlcl8wMjAiLCJzZXhwXzAwNiQwIiwiZmllbGRfc2V4cHNfMDE2IiwiZmllbGRfbmFtZV8wMTQiLCJ0YWlsXzAyMSIsImZpZWxkX3NleHBfMDE1JDIiLCJmaWVsZF9zZXhwXzAxNSIsInhfMDIyIiwiZmllbGRfc2V4cF8wMTUkMCIsImZ2YWx1ZV8wMTciLCJmaWVsZF9zZXhwXzAxNSQxIiwiZnZhbHVlXzAxOCIsInNoYXBlXzAxMSIsImlkXzAwOSIsInNoYXBlXzAyNiIsImlkXzAyNCIsImFyZ18wMjciLCJibmRzXzAyMyIsImFyZ18wMjUiLCJibmRzXzAyMyQwIiwiaWRfZmllbGQiLCJpZF92YWx1ZSIsInZfaWQiLCJnIiwic2hhcGVzIiwibWtfZml0c19zaGFwZSIsImZpdHNfc2hhcGUiLCJnJDAiLCJtZXJnZSIsImdzIiwidGwiLCJoZCIsImZ0IiwibGVuZ3RoIiwicm1fbnRoIiwicm1fbGFzdCIsInJtX2ZpcnN0Iiwic3BsaXRfbnRoIiwiaW5zZXJ0X250aCIsInNlcCIsInhfMDAyIiwieF8wMDMiLCJyZXYiLCJoZF90bCIsImxibCIsImVycm9yX3NvdXJjZV8wMDciLCJhMSIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwiYXJnMV8wMDkiLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfc2hhcGVzIiwic2hvd19zaGFwZXMiLCJfMSQwIiwib2ZfaG9sZSIsInNvcnQiLCJlcnJvcl9zb3VyY2VfMDE4IiwiXzIiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsIm91dF8wMDQiLCJpbl8wMDYiLCJuaWJzXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwiaXRlcl8wMTkiLCJzZXhwXzAwMiQwIiwiZmllbGRfbmFtZV8wMTIiLCJ0YWlsXzAyMCIsImZpZWxkX3NleHBfMDEzJDMiLCJmaWVsZF9zZXhwXzAxMyIsInhfMDIxIiwiZmllbGRfc2V4cF8wMTMkMCIsImZpZWxkX3NleHBfMDEzJDEiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMiIsImZ2YWx1ZV8wMTYiLCJuaWJzXzAwOSIsImluXzAwNyIsIm91dF8wMDUiLCJuaWJzXzAyNyIsImluXzAyNSIsIm91dF8wMjMiLCJhcmdfMDI4IiwiYm5kc18wMjIiLCJhcmdfMDI2IiwiYm5kc18wMjIkMCIsImFyZ18wMjQiLCJibmRzXzAyMiQxIiwib3V0X2ZpZWxkIiwiaW5fZmllbGQiLCJuaWJzX2ZpZWxkIiwiZnZhbHVlJDEiLCJuaWJzX3ZhbHVlIiwiaW5fdmFsdWUiLCJvdXRfdmFsdWUiLCJ2X25pYnMiLCJ2X2luIiwidl9vdXQiLCJhcmckMSIsImJuZHMkMSIsImZsaXBfbmlicyIsIm0iLCJta19vcCIsIm91dCIsImluJDAiLCJta19wcmUiLCJta19wb3N0IiwibWtfYmluIiwibCQwIiwiciQwIiwibWtfcHJlJDAiLCJzb3J0X2wiLCJzb3J0X3IiLCJta19wb3N0JDAiLCJta19iaW4kMCIsIm5pYnMiLCJpbmRleCIsIm1vbGQiLCJpIiwibmliX3NoYXBlcyIsIm5pYl9yIiwibmliX2wiLCJvZl9ncm91dCIsIm4kMCIsIm9mX3NlY29uZGFyeSIsImNvbnNpc3RlbnRfc2hhcGVzIiwibXMiLCJpc19pbmZpeF9vcCIsImNoZXZyb24iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxNCIsImVycm9yX3NvdXJjZV8wMzYiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMiIsInNzIiwiaWkiLCJpcyIsImRzIiwic3BhY2UiLCJsaW5lYnJlYWsiLCJjb21tZW50X3JlZ2V4cCIsInN0cmluZ19kZWxpbSIsImtleXdvcmRzIiwicmVzZXJ2ZWRfa2V5d29yZHMiLCJib29scyIsImJhc2VfdHlwcyIsIndpbGQiLCJsaXN0X3N0YXJ0IiwibGlzdF9lbmQiLCJ0dXBsZV9zdGFydCIsInR1cGxlX2VuZCIsImV4cGxpY2l0X2hvbGUiLCJyZWdleHAiLCJwcF9sYWJlbCIsInNob3dfbGFiZWwiLCJsYWJlbF9vZl9zZXhwIiwic2V4cF9vZl9sYWJlbCIsImxhYmVsX29mX3lvanNvbiIsInlvanNvbl9vZl9sYWJlbCIsInBwX2V4cGFuc2lvbl90aW1lIiwic2hvd19leHBhbnNpb25fdGltZSIsImV4cGFuc2lvbl90aW1lX29mX3NleHAiLCJzZXhwX29mX2V4cGFuc2lvbl90aW1lIiwiZXhwYW5zaW9uX3RpbWVfb2ZfeW9qc29uIiwieW9qc29uX29mX2V4cGFuc2lvbl90aW1lIiwicHBfZXhwYW5zaW9uIiwic2hvd19leHBhbnNpb24iLCJleHBhbnNpb25fb2Zfc2V4cCIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMxXzAxMiIsInNleHBfb2ZfZXhwYW5zaW9uIiwiYXJnMV8wMTYiLCJhcmcwXzAxNSIsInJlczBfMDE3IiwicmVzMV8wMTgiLCJleHBhbnNpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2V4cGFuc2lvbiIsIl8wJDEiLCJzZXhwXzAyMCIsImZpZWxkX3NleHBzXzAyMSIsImxhYmVsXzAyMiIsImV4cGFuc2lvbl8wMjQiLCJtb2xkXzAyNiIsImR1cGxpY2F0ZXNfMDI4IiwiZXh0cmFfMDI5IiwiaXRlcl8wMzciLCJzZXhwXzAyMCQwIiwiZmllbGRfc2V4cHNfMDMyIiwiZmllbGRfbmFtZV8wMzAiLCJ0YWlsXzAzOCIsImZpZWxkX3NleHBfMDMxJDMiLCJmaWVsZF9zZXhwXzAzMSIsInhfMDM5IiwiZmllbGRfc2V4cF8wMzEkMCIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQxIiwiZnZhbHVlXzAzNSIsImZpZWxkX3NleHBfMDMxJDIiLCJmdmFsdWVfMDM0IiwibW9sZF8wMjciLCJleHBhbnNpb25fMDI1IiwibGFiZWxfMDIzIiwibW9sZF8wNDUiLCJleHBhbnNpb25fMDQzIiwibGFiZWxfMDQxIiwiYXJnXzA0NiIsImJuZHNfMDQwIiwiYXJnXzA0NCIsImJuZHNfMDQwJDAiLCJhcmdfMDQyIiwiYm5kc18wNDAkMSIsImxhYmVsX2ZpZWxkIiwiZXhwYW5zaW9uX2ZpZWxkIiwibW9sZF9maWVsZCIsIm1vbGRfdmFsdWUiLCJleHBhbnNpb25fdmFsdWUiLCJsYWJlbF92YWx1ZSIsInZfbW9sZCIsInZfZXhwYW5zaW9uIiwidl9sYWJlbCIsInBwX2JhZF90b2tlbl9jbHMiLCJzaG93X2JhZF90b2tlbl9jbHMiLCJiYWRfdG9rZW5fY2xzX29mX3NleHAiLCJzZXhwXzA1MCIsInNleHBfb2ZfYmFkX3Rva2VuX2NscyIsImJhZF90b2tlbl9jbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2JhZF90b2tlbl9jbHMiLCJleHBhbnNpb24iLCJsYWJlbCIsIm1rX2luZml4IiwicHJlYyIsImlzX2NvbW1lbnQiLCJpc19jb21tZW50X2RlbGltIiwiaXNfc2Vjb25kYXJ5IiwiaXNfc3RyaW5nIiwiZW1wdHlfc3RyaW5nIiwiaXNfc3RyaW5nX2RlbGltIiwic3RyaXBfcXVvdGVzIiwic3RyaW5nX3F1b3RlIiwiaXNfa2V5d29yZCIsImlzX3Jlc2VydmVkX2tleXdvcmQiLCJpc19wb3RlbnRpYWxfb3BlcmFuZCIsImlzX3BvdGVudGlhbF9vcGVyYXRvciIsImlzX3BvdGVudGlhbF90b2tlbiIsImlzX2FyYml0YXJ5X2ludCIsImlzX2FyYml0YXJ5X2Zsb2F0IiwiaXNfaW50Iiwic3RyIiwiaXNfYmFkX2ludCIsImlzX2Zsb2F0IiwiaXNfYmFkX2Zsb2F0IiwiaXNfYm9vbCIsImlzX3ZhciIsImlzX2NhcGl0YWxpemVkX25hbWUiLCJpc19iYXNlX3R5cCIsImlzX3dpbGQiLCJsaXN0bGl0X2xibCIsImVtcHR5X2xpc3QiLCJpc19lbXB0eV9saXN0IiwidHVwbGVfbGJsIiwiZW1wdHlfdHVwbGUiLCJpc19lbXB0eV90dXBsZSIsImR1b3NwbGl0cyIsImR1b21lcmdlcyIsImNvbnN0X21vbm9fZGVsaW1zIiwiaXNfZXhwbGljaXRfaG9sZSIsImJhZF90b2tlbl9jbHMiLCJhdG9taWNfZm9ybXMiLCJmb3JtcyIsIm5hbWUiLCJhY2MiLCJkZWxpbXMiLCJhdG9taWNfbW9sZHMiLCJtb2xkcyIsInRlc3QiLCJpc19hdG9taWMiLCJpc19kZWxpbSIsImlzX3ZhbGlkX3Rva2VuIiwibWtfYXRvbWljIiwiZXJyb3Jfc291cmNlXzAzNyIsInBwX2NscyIsInNob3dfY2xzIiwiY2xzX29mX3NleHAiLCJzZXhwX29mX2NscyIsImNsc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2xzIiwicHBfc2Vjb25kYXJ5X2NvbnRlbnQiLCJhMCQwIiwic2hvd19zZWNvbmRhcnlfY29udGVudCIsInNlY29uZGFyeV9jb250ZW50X29mX3NleHAiLCJzZXhwXzAwOSIsInRhZ18wMTAiLCJzZXhwX2FyZ3NfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNleHBfYXJnc18wMTYiLCJhcmcwXzAxNyIsInJlczBfMDE4Iiwic2V4cF9vZl9zZWNvbmRhcnlfY29udGVudCIsImFyZzBfMDE5IiwicmVzMF8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2Vjb25kYXJ5X2NvbnRlbnRfb2ZfeW9qc29uIiwieW9qc29uX2FyZ3MkMCIsInYwJDEiLCJ2MCQyIiwieW9qc29uX29mX3NlY29uZGFyeV9jb250ZW50Iiwic2V4cF8wMjQiLCJmaWVsZF9zZXhwc18wMjUiLCJpZF8wMjYiLCJjb250ZW50XzAyOCIsImR1cGxpY2F0ZXNfMDMwIiwiZXh0cmFfMDMxIiwiaXRlcl8wMzgiLCJzZXhwXzAyNCQwIiwiZmllbGRfc2V4cHNfMDM0IiwiZmllbGRfbmFtZV8wMzIiLCJ0YWlsXzAzOSIsImZpZWxkX3NleHBfMDMzJDIiLCJmaWVsZF9zZXhwXzAzMyIsInhfMDQwIiwiZmllbGRfc2V4cF8wMzMkMCIsImZ2YWx1ZV8wMzYiLCJmaWVsZF9zZXhwXzAzMyQxIiwiY29udGVudF8wMjkiLCJpZF8wMjciLCJjb250ZW50XzA0NCIsImlkXzA0MiIsImFyZ18wNDUiLCJibmRzXzA0MSIsImFyZ18wNDMiLCJibmRzXzA0MSQwIiwiY29udGVudF9maWVsZCIsImNvbnRlbnRfdmFsdWUiLCJ2X2NvbnRlbnQiLCJjbHNfb2YiLCJta19zcGFjZSIsImNvbnN0cnVjdF9jb21tZW50IiwiY29udGVudCIsImlzX3NwYWNlIiwidyIsImlzX2xpbmVicmVhayIsImNvbnRlbnRfaXNfY29tbWVudCIsImdldF9zdHJpbmciLCJlcnJvcl9zb3VyY2VfMDA1IiwiZXJyb3Jfc291cmNlXzA0NSIsInBwX3NlZ21lbnQiLCJzaG93X3NlZ21lbnQiLCJwcF9waWVjZSIsInNob3dfcGllY2UiLCJwcF90aWxlIiwic2hvd190aWxlIiwiYTAkMSIsIl8zIiwiXzIkMCIsInNlZ21lbnRfb2Zfc2V4cCIsInBpZWNlX29mX3NleHAiLCJ0aWxlX29mX3NleHAiLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsInNleHBfYXJnc18wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwic2V4cF9hcmdzXzAxNCIsInJlczBfMDE2Iiwic2V4cF8wMjMiLCJmaWVsZF9zZXhwc18wMjQiLCJpZF8wMjUiLCJsYWJlbF8wMjciLCJtb2xkXzAyOSIsInNoYXJkc18wMzEiLCJjaGlsZHJlbl8wMzMiLCJkdXBsaWNhdGVzXzAzNSIsImV4dHJhXzAzNiIsIml0ZXJfMDQ2Iiwic2V4cF8wMjMkMCIsImZpZWxkX3NleHBzXzAzOSIsImZpZWxkX25hbWVfMDM3IiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzAzOCQ1IiwiZmllbGRfc2V4cF8wMzgiLCJ4XzA0OCIsImZpZWxkX3NleHBfMDM4JDAiLCJmdmFsdWVfMDQxIiwiZmllbGRfc2V4cF8wMzgkMSIsImZ2YWx1ZV8wNDIiLCJmaWVsZF9zZXhwXzAzOCQyIiwiZnZhbHVlXzA0MyIsImZpZWxkX3NleHBfMDM4JDMiLCJmdmFsdWVfMDQ0IiwiZmllbGRfc2V4cF8wMzgkNCIsImZ2YWx1ZV8wNDAiLCJjaGlsZHJlbl8wMzQiLCJzaGFyZHNfMDMyIiwibW9sZF8wMzAiLCJsYWJlbF8wMjgiLCJzZXhwX29mX3NlZ21lbnQiLCJ4XzA0OSIsInNleHBfb2ZfcGllY2UiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwic2V4cF9vZl90aWxlIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzBfMDU0IiwicmVzMF8wNTUiLCJjaGlsZHJlbl8wNjUiLCJzaGFyZHNfMDYzIiwibW9sZF8wNjEiLCJsYWJlbF8wNTkiLCJpZF8wNTciLCJhcmdfMDY2IiwiYm5kc18wNTYiLCJhcmdfMDY0IiwiYm5kc18wNTYkMCIsImFyZ18wNjIiLCJibmRzXzA1NiQxIiwiYXJnXzA2MCIsImJuZHNfMDU2JDIiLCJhcmdfMDU4IiwiYm5kc18wNTYkMyIsInNlZ21lbnRfb2ZfeW9qc29uIiwicGllY2Vfb2ZfeW9qc29uIiwidGlsZV9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJzaGFyZHNfZmllbGQiLCJjaGlsZHJlbl9maWVsZCIsImZ2YWx1ZSQyIiwiZnZhbHVlJDMiLCJjaGlsZHJlbl92YWx1ZSIsInNoYXJkc192YWx1ZSIsInlvanNvbl9vZl9zZWdtZW50IiwieW9qc29uX29mX3BpZWNlIiwieW9qc29uX29mX3RpbGUiLCJ2X2NoaWxkcmVuIiwidl9zaGFyZHMiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwibWtfc2Vjb25kYXJ5Iiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzX2NsZWFyIiwic190b3VjaCIsInNfdG91Y2hlZCIsInBwX2V4cGFuc2lvbnMiLCJzaG93X2V4cGFuc2lvbnMiLCJleHBhbnNpb25zX29mX3NleHAiLCJ4XzAxMyIsInNleHBfMDEyIiwic2V4cF9vZl9leHBhbnNpb25zIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJyZXMxXzAxNyIsInJlczFfMDIxIiwiZXhwYW5zaW9uc19vZl95b2pzb24iLCJ2MSQxIiwidjEkMiIsInlvanNvbl9vZl9leHBhbnNpb25zIiwib2xkX21vbGRzIiwiZm9ybXNfYXNzb2MiLCJtb2xkcyQwIiwiaGQkMCIsImRlbGF5ZWRfZXhwYW5zaW9ucyIsImluc3RhbnRfZXhwYW5zaW9ucyIsImRlbGF5ZWRfZXhwYW5zaW9uIiwiaW5zdGFudF9leHBhbnNpb24iLCJpc19kZWxheWVkIiwia3ciLCJhbGxvd19tZXJnZSIsImFsbG93X2FwcGVuZF9yaWdodCIsImNoYXIkMCIsImFsbG93X2FwcGVuZF9sZWZ0IiwiYWxsb3dfaW5zZXJ0aW9uIiwibmV3X3QiLCJpc19jb21wbGV0ZSIsImxfc2hhcmQiLCJyX3NoYXJkIiwiaGFzX2VuZCIsImhhc19lbmRzIiwidG9fcGllY2UiLCJzb3J0ZWRfY2hpbGRyZW4iLCJjaGlsZHJlbiIsInNoYXJkcyIsImNoaWxkIiwiY29udGFpbmVkX2NoaWxkcmVuIiwic3BsaXRfc2hhcmRzIiwiZGlzYXNzZW1ibGUiLCJzaGFyZHMkMCIsImRpc2ludGVncmF0ZSIsInJlYXNzZW1ibGUiLCJtYXRjaCIsInBvcF9sIiwidGlsZSIsInBvcF9yIiwic2Vjb25kYXJ5IiwiZ3JvdXQiLCJmX3ciLCJmX2ciLCJmX3QiLCJuaWJfc29ydHMiLCJpc19ncm91dCIsImlzX3RpbGUiLCJtb25vdGlsZSIsImdldF9vdXRzaWRlX3NvcnRzIiwib3B0Iiwic3RoIiwiZGVmYXVsdF9zb3J0IiwibW9sZF9vZiIsImVtcHR5IiwicHBfcm9vdCIsInNob3dfcm9vdCIsIl83IiwiXzYiLCJfNSIsIl80IiwiYTEkMCIsImEyIiwiYTEkMSIsImEwJDIiLCJyb290X29mX3NleHAiLCJhcmcxXzAxNCIsInJlczBfMDE1IiwicmVzMV8wMTYiLCJhcmcxXzAyMSIsInJlczFfMDIzIiwic2V4cF9hcmdzXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJhcmcwXzAyNyIsInJlczBfMDMwIiwicmVzMV8wMzEiLCJyZXMyXzAzMiIsInhfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfb2Zfcm9vdCIsImFyZzFfMDM4IiwiYXJnMF8wMzciLCJyZXMwXzAzOSIsInJlczFfMDQwIiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwicmVzMV8wNDQiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0OCIsInJlczFfMDQ5IiwicmVzMl8wNTAiLCJ4XzA1MSIsInJvb3Rfb2ZfeW9qc29uIiwieW9qc29uX2FyZ3MkMiIsInYyIiwidjEkMyIsInYwJDUiLCJ2MCQ2IiwidjEkNCIsInYyJDAiLCJ5b2pzb25fb2Zfcm9vdCIsInBwX2lwIiwic2hvd19pcCIsInJlbCIsInQxIiwidDIiLCJsYmwxIiwibGJsMiIsImVxIiwicjEiLCJsMiIsInNoYXBlJDAiLCJwcF9za2VsIiwic2hvd19za2VsIiwiXzAkMiIsIl8xJDEiLCJfMCQzIiwicG9wX2NoYWluIiwib3B0JDAiLCJwb3BwZWQiLCJvcHQkMSIsIm9wdCQyIiwic2hhcGVzX29mX2NoYWluIiwiY2hhaW4iLCJsYXN0IiwiZmlyc3QiLCJwdXNoX291dHB1dCIsInN0YWNrcyIsInN0YWNrcyQwIiwic2h1bnRlZCIsInByZWMkMCIsInByZWMkMSIsInNwbGl0X2tpZHMkMCIsInNwbGl0X2tpZHMiLCJvdXRwdXQiLCJraWRzIiwia2lkcyQwIiwia2lkcyQxIiwib3V0cHV0JDAiLCJvdXRwdXQkMSIsImtpZHMkMiIsImtpZHMkMyIsImwkMSIsIm91dHB1dCQyIiwia2lkcyQ0IiwiciQxIiwia2lkcyQ1Iiwib3V0cHV0JDMiLCJraWRzJDYiLCJzdGFja3MkMSIsInB1c2hfc2h1bnRlZCIsImlwIiwiZmluaXNoIiwic2VnIiwiZm9sZF9yaWdodCIsIm9mX3RpbGUiLCJ0aWxlcyIsImluY29tcGxldGVfdGlsZXMiLCJjb252ZXhfZ3JvdXQiLCJjb250YWluc19tYXRjaGluZyIsInQkMCIsInJlbW92ZV9tYXRjaGluZyIsInNub2MiLCJzaGFwZV9hZmZpeCIsImFmZml4IiwiZW1wdHlfd2d3IiwiZ28iLCJ0bCQwIiwid2d3Iiwid3NzIiwid3NzJDAiLCJ3cyIsImNvbnZleCIsInNwbGl0X2J5X2dyb3V0IiwicmVtb2xkIiwicmVtb2xkX3BhdCIsInJlbW9sZF90eXAiLCJyZW1vbGRfdHBhdCIsInJlbW9sZF9ydWwiLCJyZW1vbGRfZXhwIiwicmVtb2xkX3RpbGUiLCJyZW1vbGRlZCIsImNoaWxkJDAiLCJ0cyIsInJlbW9sZF90eXBfdW5pIiwicmVzdCQwIiwic2hhcGUkMiIsInJlbW9sZGVkJDEiLCJyZW1vbGRlZCQwIiwic2hhcGUkMSIsInJlc3QiLCJyZW1vbGRfcGF0X3VuaSIsInJlc3QkMiIsInNoYXBlJDUiLCJzaGFwZSQ0IiwicmVtb2xkZWRfdHlwIiwicmVtb2xkZWRfcGF0IiwicmVzdCQxIiwic2hhcGUkMyIsInJlbW9sZF90cGF0X3VuaSIsInJlbW9sZF9leHBfdW5pIiwicmVzdCQ2Iiwic2hhcGUkOSIsInJlbW9sZGVkX2V4cCIsInJlc3QkMyIsInJlbW9sZGVkX2V4cCQwIiwicmVzdCQ0Iiwic2hhcGUkNiIsInJlbW9sZGVkX3RwYXQiLCJyZXN0JDUiLCJzaGFwZSQ3IiwicmVtb2xkZWRfZXhwJDEiLCJzaGFwZSQ4Iiwic2tlbCIsImVtcHR5JDAiLCJyZXYkMCIsImNvbnNfdyIsImNvbnNfZyIsInJtX3VwX3RvX29uZV9zcGFjZSIsIndzJDAiLCJ3c3MkMSIsImFkZF9ncm91dCIsInJlZ3JvdXQiLCJ0cmltIiwibmV3X3NwYWNlcyIsIm1lcmdlZCIsImdzJDAiLCJ0b19zZWciLCJyZWdyb3V0JDAiLCJyZWdyb3V0X2FmZml4IiwidHJpbSQwIiwiYWZmaXgkMCIsInNwbGl0X2J5X21hdGNoaW5nIiwic2VnX3IiLCJzZWdfbCIsInRyaW1fZiIsInRyaW1fbCIsInBzIiwidHJpbV9zZWNvbmRhcnkiLCJ4cyIsInhzJDAiLCJ4cyQxIiwidHJpbV9ncm91dCIsInRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCIsInRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeSIsInhzJDIiLCJlZGdlX3NoYXBlX29mIiwidHJpbW1lZCIsImVkZ2VfZGlyZWN0aW9uX29mIiwic2VyaWFsaXplIiwic2FtZWxpbmVfc2Vjb25kYXJ5IiwiZXhwZWN0ZWRfc29ydHMiLCJuX3IiLCJraWQiLCJuX2wiLCJzX2wiLCJzX3IiLCJpbnNpZGVfc29ydHMiLCJucyIsImxfc29ydCIsInJfc29ydCIsIm91dHNpZGVfc29ydHMiLCJob2xlcyIsInNlZ21lbnQiLCJnZXRfY2hpbGRyZW5zIiwiZ2V0X2luY29tcGxldGVfaWRzIiwiaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkIiwibm9fc2libGluZ3MiLCJ1bnppcCIsInppcCIsInN1ZiIsInByZSIsInNlbCIsInByZXBlbmQiLCJzaWJzcyIsInNpYnMiLCJpc19taXNtYXRjaCIsInMxIiwicHVzaCIsIm9udG8iLCJwb3AiLCJmcm9tIiwic3VmJDAiLCJwcmUkMCIsImxlZnRfbmVpZ2hib3IiLCJyaWdodF9uZWlnaGJvciIsIm5laWdoYm9ycyIsInJfc2licyIsImxfc2licyIsImRpcmVjdGlvbl9iZXR3ZWVuIiwibW9sZF9maXR0aW5nX2JldHdlZW4iLCJlcnJvcl9zb3VyY2VfMDI1IiwicHBfc3RlcCIsInNob3dfc3RlcCIsInN0ZXBfb2Zfc2V4cCIsInNleHBfb2Zfc3RlcCIsInN0ZXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXAiLCJzZXhwXzAwMyIsImZpZWxkX3NleHBzXzAwNCIsImlkXzAwNSIsImxhYmVsXzAwNyIsIm1vbGRfMDA5Iiwic2hhcmRzXzAxMSIsImNoaWxkcmVuXzAxMyIsImR1cGxpY2F0ZXNfMDE1IiwiZXh0cmFfMDE2IiwiaXRlcl8wMzYiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDE5IiwiZmllbGRfbmFtZV8wMTciLCJ0YWlsXzAzNyIsImZpZWxkX3NleHBfMDE4JDUiLCJmaWVsZF9zZXhwXzAxOCIsInhfMDM4IiwiZmllbGRfc2V4cF8wMTgkMCIsInJlczBfMDI5IiwicmVzMV8wMzAiLCJmdmFsdWVfMDMyIiwiZmllbGRfc2V4cF8wMTgkMSIsImZpZWxkX3NleHBfMDE4JDIiLCJmaWVsZF9zZXhwXzAxOCQzIiwiZmllbGRfc2V4cF8wMTgkNCIsImZ2YWx1ZV8wMjYiLCJjaGlsZHJlbl8wMTQiLCJzaGFyZHNfMDEyIiwibW9sZF8wMTAiLCJsYWJlbF8wMDgiLCJpZF8wMDYiLCJjaGlsZHJlbl8wNTIiLCJzaGFyZHNfMDQ2IiwibW9sZF8wNDQiLCJsYWJlbF8wNDIiLCJpZF8wNDAiLCJhcmcxXzA1NSIsInJlczBfMDU2IiwicmVzMV8wNTciLCJhcmdfMDUzIiwiYm5kc18wMzkiLCJhcmcxXzA0OSIsImFyZzBfMDQ4IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsImFyZ18wNDciLCJibmRzXzAzOSQwIiwiYm5kc18wMzkkMSIsImJuZHNfMDM5JDIiLCJhcmdfMDQxIiwiYm5kc18wMzkkMyIsImoiLCJraWRzX3IiLCJraWRzX2wiLCJzaGFyZHNfciIsInNoYXJkc19sIiwiZmxhdHRlbiIsImNvbnRhaW5lcl9zaGFyZHMiLCJtYXRjaF9sIiwibWF0Y2hfciIsInRfciIsInRfbCIsInBwX2dlbmVyYXRpb24iLCJzaG93X2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3NleHAiLCJzZXhwX29mX2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9nZW5lcmF0aW9uIiwieF8wMTQiLCJwYXJlbnQiLCJ6aXBfZ2VuIiwiYW5jcyIsImEkMCIsInJlZ3JvdXRlZCIsInRyaW1fciIsInRyaW1fbCQwIiwidHJpbV9yJDAiLCJwYXJlbnRfbWF0Y2hlcyIsInRpY2siLCJ0aW1lIiwibHQiLCJtYXhfdGltZSIsInVwZGF0ZSIsImVzIiwidGQiLCJlIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJlbGxpcHNpcyIsInN0b3AiLCJkaXN0YW5jZV9hdXgiLCJzdGFydCIsImNvdW50Iiwic3RhcnQkMCIsImNvdW50JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwiY291bnQkMyIsInN0YXJ0JDMiLCJzdGFydCQ0IiwiZXJyb3Jfc291cmNlXzAxNyIsInplcm8iLCJlcnJvcl9zb3VyY2VfMDQwIiwiZXJyb3Jfc291cmNlXzA1NSIsInBwX3JvdyIsInNob3dfcm93Iiwicm93X29mX3NleHAiLCJzZXhwX29mX3JvdyIsInJvd19vZl95b2pzb24iLCJ5b2pzb25fb2Zfcm93IiwicHBfY29sIiwic2hvd19jb2wiLCJjb2xfb2Zfc2V4cCIsInNleHBfb2ZfY29sIiwiY29sX29mX3lvanNvbiIsInlvanNvbl9vZl9jb2wiLCJmaWVsZF9zZXhwc18wMDUiLCJyb3dfMDA2IiwiY29sXzAwOCIsIml0ZXJfMDE4Iiwic2V4cF8wMDQkMCIsInRhaWxfMDE5IiwieF8wMjAiLCJjb2xfMDA5Iiwicm93XzAwNyIsImNvbF8wMjQiLCJyb3dfMDIyIiwiYm5kc18wMjEiLCJhcmdfMDIzIiwiYm5kc18wMjEkMCIsInJvd19maWVsZCIsImNvbF9maWVsZCIsImNvbF92YWx1ZSIsInJvd192YWx1ZSIsInZfY29sIiwidl9yb3ciLCJlcXVhbHMiLCJxIiwiY29tcCIsImN1cnJlbnQiLCJ0YXJnZXQiLCJkY29tcCIsImRpcmVjdGlvbiIsImIiLCJwcF9tZWFzdXJlbWVudCIsInNob3dfbWVhc3VyZW1lbnQiLCJtZWFzdXJlbWVudF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJvcmlnaW5fMDI5IiwibGFzdF8wMzEiLCJkdXBsaWNhdGVzXzAzMyIsImV4dHJhXzAzNCIsIml0ZXJfMDQxIiwic2V4cF8wMjckMCIsImZpZWxkX3NleHBzXzAzNyIsImZpZWxkX25hbWVfMDM1IiwidGFpbF8wNDIiLCJmaWVsZF9zZXhwXzAzNiQyIiwiZmllbGRfc2V4cF8wMzYiLCJ4XzA0MyIsImZpZWxkX3NleHBfMDM2JDAiLCJmdmFsdWVfMDM5IiwiZmllbGRfc2V4cF8wMzYkMSIsImZ2YWx1ZV8wMzgiLCJsYXN0XzAzMiIsIm9yaWdpbl8wMzAiLCJzZXhwX29mX21lYXN1cmVtZW50IiwibGFzdF8wNDciLCJvcmlnaW5fMDQ1IiwiYXJnXzA0OCIsImJuZHNfMDQ0IiwiYm5kc18wNDQkMCIsIm1lYXN1cmVtZW50X29mX3lvanNvbiIsIm9yaWdpbl9maWVsZCIsImxhc3RfZmllbGQiLCJsYXN0X3ZhbHVlIiwib3JpZ2luX3ZhbHVlIiwieW9qc29uX29mX21lYXN1cmVtZW50Iiwidl9sYXN0Iiwidl9vcmlnaW4iLCJtYXhfY29sIiwicnMiLCJtaW5fY29sIiwicHBfc2hhcmQiLCJzaG93X3NoYXJkIiwic2hhcmRfb2Zfc2V4cCIsInNleHBfMDU0IiwiYXJnMV8wNTEiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwic2V4cF9vZl9zaGFyZCIsImFyZzFfMDU3IiwiYXJnMF8wNTYiLCJyZXMwXzA1OCIsInJlczFfMDU5Iiwic2hhcmRfb2ZfeW9qc29uIiwieW9qc29uX29mX3NoYXJkIiwicHAkMSIsInRfb2Zfc2V4cCQxIiwieF8wNjEiLCJzZXhwX29mX3QkMSIsInhfMDYyIiwidF9vZl95b2pzb24kMSIsInlvanNvbl9vZl90JDEiLCJzcGxpdF9ieV9yb3ciLCJyb3dzIiwicm93IiwiYWRkX3MiLCJhZGRfdCIsImFkZF9nIiwiYWRkX3ciLCJhZGRfcCIsImFkZF9yb3ciLCJhZGRfbGIiLCJpbmRlbnQiLCJzaW5nbGV0b25fdyIsInNpbmdsZXRvbl9nIiwic2luZ2xldG9uX3MiLCJzaGFyZCIsImZpbmRfb3B0X3NoYXJkcyIsImZpbmRfc2hhcmRzIiwiZmluZF9vcHRfbGIiLCJmaW5kX3NoYXJkcyQwIiwiZmluZF93IiwiZmluZF9nIiwiZmluZF90IiwiZmluZF9wIiwiZmluZF9ieV9pZCIsIm0kMCIsInBvc3RfdGlsZV9pbmRlbnQiLCJjb21wbGV0ZV9mdW4iLCJtaXNzaW5nX3JpZ2h0X2V4dHJlbWUiLCJjb21wbGV0ZV9mdW4kMCIsIm1pc3NpbmdfbGVmdF9leHRyZW1lIiwiaXNfaW5kZW50ZWRfbWFwIiwiaXNfaW5kZW50ZWQiLCJzdGgkMCIsImlzX2luZGVudGVkJDAiLCJtYXAkMCIsIm9mX3NlZ21lbnQiLCJvbGQiLCJ0b3VjaGVkIiwiZ29fbmVzdGVkIiwiY29udGFpbmVyX2luZGVudCIsIm9yaWdpbiIsInRpbWUkMCIsInRpbWUkMSIsImZpcnN0X3RvdWNoZWRfaW5jb21wbGV0ZSIsImdvX3NlcSIsImNvbnRhaW5lZF9pbmRlbnQiLCJtYXAkNiIsInRva2VuIiwiYWRkX3NoYXJkIiwiY2hpbGRfbWFwIiwiY2hpbGRfbGFzdCIsIm1hcCQxIiwib3JpZ2luJDAiLCJjb250YWluZWRfaW5kZW50JDAiLCJsYXN0JDAiLCJtYXAkMyIsInJvd19pbmRlbnQiLCJpbmRlbnQkMCIsInRvdWNoZWQkMCIsInRvdWNoZWQkMSIsImluZGVudCQxIiwibGFzdCQxIiwibWFwJDQiLCJ3c3BhY2VfbGVuZ3RoIiwib3JpZ2luJDEiLCJtYXAkNSIsIm1hcCQyIiwidGxfbGFzdCIsInNlZ21lbnRfb3JpZ2luIiwic2VnbWVudF9sYXN0Iiwic2VnbWVudF9oZWlnaHQiLCJzZWdtZW50X3dpZHRoIiwiZXJyb3Jfc291cmNlXzAzMyIsInBwX2J1ZmZlciIsInNob3dfYnVmZmVyIiwiYnVmZmVyX29mX3NleHAiLCJzZXhwX29mX2J1ZmZlciIsImJ1ZmZlcl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYnVmZmVyIiwicHBfbW9kZSIsInNob3dfbW9kZSIsIm1vZGVfb2Zfc2V4cCIsInNleHBfb2ZfbW9kZSIsIm1vZGVfb2ZfeW9qc29uIiwieW9qc29uX29mX21vZGUiLCJzZXhwXzAxNyIsImZpZWxkX3NleHBzXzAxOCIsImZvY3VzXzAxOSIsImNvbnRlbnRfMDIxIiwibW9kZV8wMjMiLCJkdXBsaWNhdGVzXzAyNSIsImV4dHJhXzAyNiIsIml0ZXJfMDM0Iiwic2V4cF8wMTckMCIsImZpZWxkX3NleHBzXzAyOSIsImZpZWxkX25hbWVfMDI3IiwidGFpbF8wMzUiLCJmaWVsZF9zZXhwXzAyOCQzIiwiZmllbGRfc2V4cF8wMjgiLCJ4XzAzNiIsImZpZWxkX3NleHBfMDI4JDAiLCJmdmFsdWVfMDMwIiwiZmllbGRfc2V4cF8wMjgkMSIsImZpZWxkX3NleHBfMDI4JDIiLCJmdmFsdWVfMDMxIiwibW9kZV8wMjQiLCJjb250ZW50XzAyMiIsImZvY3VzXzAyMCIsIm1vZGVfMDQyIiwiY29udGVudF8wNDAiLCJmb2N1c18wMzgiLCJibmRzXzAzNyIsImJuZHNfMDM3JDAiLCJhcmdfMDM5IiwiYm5kc18wMzckMSIsImZvY3VzX2ZpZWxkIiwibW9kZV9maWVsZCIsIm1vZGVfdmFsdWUiLCJmb2N1c192YWx1ZSIsInZfbW9kZSIsInZfZm9jdXMiLCJtb2RlIiwiZm9jdXMiLCJta19idWZmZXIiLCJidWZmZXIiLCJpc19idWZmZXIiLCJidWZmZXJfaWRzIiwidG9nZ2xlX2ZvY3VzIiwic2VsZWN0aW9uIiwiaXNfZW1wdHkiLCJjb250ZW50JDAiLCJwJDIiLCJzcGxpdF9waWVjZSIsIm9yZCIsImlfciIsImlfbCIsImd0IiwidW4iLCJkaXNvcmRlcmVkIiwibHRfb3JfdW4iLCJscyIsImFkZF90aWxlIiwidHJhbl9jbG9zZSIsImtleXMiLCJtZW0iLCJleGlzdHNfbWVtIiwibWVyZ2UkMSIsImFkZF90aWxlJDAiLCJjcyIsImMiLCJjJDAiLCJpbml0JDEiLCJhZGRfc2VsIiwiY291bnRzIiwib3JkZXIiLCJwcmV2IiwiY3VyciIsInByZXYkMCIsInNoYXJkX2luZm8iLCJicCIsImluZm8iLCJzaGFyZF9pbmZvJDAiLCJwdXNoX3MiLCJmaXJzdCQwIiwicmVzdHJpY3RlZCIsIndpbGxfYmFyZiIsInJlbW92ZV91bmlfdGlsZXNfd2l0aF9kZWVwX21hdCIsImVycm9yX3NvdXJjZV8wMTUiLCJzaWJsaW5nc18wMDQiLCJhbmNlc3RvcnNfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJpdGVyXzAxNiIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJhbmNlc3RvcnNfMDA3Iiwic2libGluZ3NfMDA1IiwiYW5jZXN0b3JzXzAyMiIsInNpYmxpbmdzXzAyMCIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJzaWJsaW5nc19maWVsZCIsImFuY2VzdG9yc19maWVsZCIsImFuY2VzdG9yc192YWx1ZSIsInNpYmxpbmdzX3ZhbHVlIiwidl9hbmNlc3RvcnMiLCJ2X3NpYmxpbmdzIiwic2libGluZ3MiLCJhbmNlc3RvcnMiLCJzaWJsaW5ncyQwIiwiYW5jZXN0b3IiLCJzaWJsaW5ncyQxIiwibG9jYWxfaW5jb21wbGV0ZV90aWxlcyIsImRlbGV0ZV9wYXJlbnQiLCJhbmNlc3RvcnMkMCIsInBfc2licyIsImdzX2wiLCJnc19yIiwiZ19sIiwiZ19yIiwidHJpbV9yJDEiLCJwcmVwZW5kX2dlbmVyYXRpb24iLCJwcmVwZW5kX3NpYmxpbmdzIiwicnNzIiwiY2F0IiwicmVhc3NlbWJsZV9wYXJlbnQiLCJmbGF0dGVuX21hdGNoIiwiaW5uZXJfbCIsIm91dGVyX2wiLCJhJDEiLCJvdXRlcl9yIiwiaW5uZXJfciIsImEkMiIsImEkMyIsInJlYXNzZW1ibGVfc2libGluZ3MiLCJycyQwIiwib3V0ZXJfciQwIiwibWF0Y2hfciQwIiwiaW5uZXJfciQwIiwiZXJyb3Jfc291cmNlXzA1MSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJkZWNyZW1lbnQiLCJvZmZzZXQiLCJzZWxlY3Rpb25fMDE5IiwiYmFja3BhY2tfMDIxIiwicmVsYXRpdmVzXzAyMyIsImNhcmV0XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4IiwiZmllbGRfc2V4cHNfMDMxIiwiZmllbGRfbmFtZV8wMjkiLCJmaWVsZF9zZXhwXzAzMCQ0IiwiZmllbGRfc2V4cF8wMzAiLCJmaWVsZF9zZXhwXzAzMCQwIiwiZmllbGRfc2V4cF8wMzAkMSIsImZpZWxkX3NleHBfMDMwJDIiLCJmaWVsZF9zZXhwXzAzMCQzIiwiY2FyZXRfMDI2IiwicmVsYXRpdmVzXzAyNCIsImJhY2twYWNrXzAyMiIsInNlbGVjdGlvbl8wMjAiLCJjYXJldF8wNDciLCJyZWxhdGl2ZXNfMDQ1IiwiYmFja3BhY2tfMDQzIiwic2VsZWN0aW9uXzA0MSIsImJuZHNfMDQwJDIiLCJzZWxlY3Rpb25fZmllbGQiLCJiYWNrcGFja19maWVsZCIsInJlbGF0aXZlc19maWVsZCIsImNhcmV0X2ZpZWxkIiwiY2FyZXRfdmFsdWUiLCJyZWxhdGl2ZXNfdmFsdWUiLCJiYWNrcGFja192YWx1ZSIsInNlbGVjdGlvbl92YWx1ZSIsInZfY2FyZXQiLCJ2X3JlbGF0aXZlcyIsInZfYmFja3BhY2siLCJ2X3NlbGVjdGlvbiIsIm5leHRfYmxhbmsiLCJwcF9jaHVua2luZXNzIiwic2hvd19jaHVua2luZXNzIiwiY2h1bmtpbmVzc19vZl9zZXhwIiwic2V4cF8wNTIiLCJzZXhwX29mX2NodW5raW5lc3MiLCJjaHVua2luZXNzX29mX3lvanNvbiIsInlvanNvbl9vZl9jaHVua2luZXNzIiwicHBfcGxhbmFyIiwic2hvd19wbGFuYXIiLCJwbGFuYXJfb2Zfc2V4cCIsInNleHBfMDU3IiwidGFnXzA1OCIsInNleHBfYXJnc18wNjQiLCJhcmcwXzA2NSIsInJlczBfMDY2Iiwic2V4cF9hcmdzXzA1OSIsImFyZzBfMDYwIiwicmVzMF8wNjEiLCJzZXhwX29mX3BsYW5hciIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJhcmcwXzA2OSIsInJlczBfMDcwIiwicGxhbmFyX29mX3lvanNvbiIsInlvanNvbl9vZl9wbGFuYXIiLCJmcm9tX3BsYW5lIiwidXBkYXRlX2NhcmV0IiwieiIsInNldF9jYXJldCIsImNhcmV0IiwidXBkYXRlX3JlbGF0aXZlcyIsInVwZGF0ZV9zaWJsaW5ncyIsInNpYnNfd2l0aF9zZWwiLCJwb3BfYmFja3BhY2siLCJsZWZ0X25laWdoYm9yX21vbm90aWxlIiwicmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUiLCJuZWlnaGJvcl9tb25vdGlsZXMiLCJyZWxhdGl2ZXMiLCJyZW1vbGRfcmVncm91dCIsImNsZWFyX3VucGFyc2VkX2J1ZmZlciIsInVuc2VsZWN0IiwiZXJhc2VfYnVmZmVyIiwieiQwIiwidW5zZWxlY3RfYW5kX3ppcCIsInVwZGF0ZV9zZWxlY3Rpb24iLCJwdXRfc2VsZWN0aW9uIiwiZ3Jvd19zZWxlY3Rpb24iLCJzaHJpbmtfc2VsZWN0aW9uIiwic2VsZWN0aW9uJDAiLCJkaXJlY3Rpb25hbF91bnNlbGVjdCIsIm1vdmUiLCJyZWxhdGl2ZXMkMCIsInNlbGVjdCIsInBpY2tfdXAiLCJzZWxlY3RlZCIsImJhY2twYWNrIiwiZGVzdHJ1Y3QiLCJkZXN0cm95X2tpZHMiLCJ0b19yZW1vdmUiLCJ0b19waWNrX3VwIiwidG9fcGlja191cCQwIiwiYmFja3BhY2skMCIsImRlbGV0ZSQwIiwicHV0X2Rvd24iLCJjb25zdHJ1Y3QiLCJsYWJlbCQwIiwibGFiZWwkMSIsInokMSIsInNlbGVjdGlvbnMkMCIsImJhY2twYWNrJDEiLCJjb250ZW50JDEiLCJpZCQxIiwic2VsZWN0aW9ucyIsImNvbnN0cnVjdF9tb25vIiwicmVwbGFjZSIsInJlcGxhY2VfbW9ubyIsInJlcHJlc2VudGF0aXZlX3BpZWNlIiwiY2FyZXRfZGlyZWN0aW9uIiwiYmFzZV9wb2ludCIsIm1lYXN1cmVkIiwiY2FyZXRfcG9pbnQiLCJjb2wiLCJkZXNlcmlhbGl6ZSIsImRhdGEiLCJjYW5fcHV0X2Rvd24iLCJzZXRfYnVmZmVyIiwiaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0IiwidHJ5X3RvX2R1bXBfYmFja3BhY2siLCJ6aXBwZXIiLCJ6aXBwZXIkMCIsIm1vdmVfdW50aWxfY2FudF9wdXRfZG93biIsInpfbGFzdCIsInpfbGFzdCQxIiwiel9sYXN0JDAiLCJ6X25ldyIsIm1vdmVfdW50aWxfY2FuX3B1dF9kb3duIiwiel9jYW4iLCJ6JDIiLCJ6X2NhbiQwIiwiel9jYW4kMSIsInokMyIsInokNCIsInNtYXJ0X3NlZyIsImR1bXBfYmFja3BhY2siLCJzZWdfZm9yX3ZpZXciLCJzZWdfZm9yX3NlbSIsInNlZ193aXRob3V0X2J1ZmZlciIsInBwX3QiLCJzaG93X3QiLCJwb2x5X2EiLCJvZl9hXzAwMSIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxNSIsImFyZzFfMDEyIiwiYXJnMF8wMTEiLCJyZXMxXzAxNCIsIm9mX2EiLCJleHRlbmQiLCJjdHgiLCJ4YSIsIm5ld19jdHgiLCJsb29rdXAiLCJjb250YWlucyIsInRvX2xpc3QiLCJmaW5kX21hcCIsImN0eCQwIiwiaXNfTGV0IiwiaXNfQ2FzZSIsImlzX0Z1biIsImlzX1Rlc3QiLCJ0ZXh0Iiwic2V4cF8wMTYiLCJ0YWdfMDE3Iiwic2V4cF9hcmdzXzAxOCIsImFyZzFfMDIwIiwicmVzMV8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImVxdWFsIiwicHBfYmluZGluZyIsInNob3dfYmluZGluZyIsIm9mX2FfMDA5Iiwib2ZfYV8wMTQiLCJ4XzAxNiIsIm9mX2FfMDE3IiwiYWRkIiwiY3RyIiwidmFsdWUiLCJoZWFkIiwidmFsdWUkMCIsImN0ciQwIiwic2luZ2xldG9uIiwiY29tcGFyZV9iaW5kaW5ncyIsImN0cjIiLCJjdHIxIiwidmFsX2VxdWFsIiwibWFwMSIsIm1hcDIiLCJlcXVhbF9iaW5kaW5ncyIsInZhbDIiLCJ2YWwxIiwibWFwMSQwIiwibWFwMiQwIiwiY2FyZGluYWwiLCJjdHJzX29mIiwic2FtZV9jb25zdHJ1Y3RvcnNfc2FtZV9vcmRlciIsImN0cnNfZXF1YWwiLCJjdHJzMSIsImN0cnMyIiwiZm9yX2FsbCIsImJpbmRpbmdzIiwiZmluZF9vcHQiLCJiaW5kaW5nIiwidmFscyIsImN0cnMiLCJ2YWxzJDAiLCJvZl9saXN0IiwiaXNfZ3JvdW5kIiwiaXNfZ3JvdW5kX3ZhbHVlIiwidmFsaWRfcmVnZXgiLCJpc192YWxpZCIsImNoZWNrX3ZhbGlkIiwicmVzdWx0IiwiaXNfdHJ1ZSIsImlzX2ZhbHNlIiwiaXNfbGV0IiwiaXNfZnVuIiwiaXNfY2FzZSIsInNwbGl0IiwicG9zIiwibGVmdF92YXIiLCJyaWdodF92YXIiLCJ5IiwiZXJyb3Jfc291cmNlXzA5MyIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTQ3IiwidHBfbG9jJDMiLCJlcnJvcl9zb3VyY2VfMTYwIiwidHBfbG9jJDQiLCJlcnJvcl9zb3VyY2VfMTg4IiwidHBfbG9jJDUiLCJwcF90eXBlX3Byb3ZlbmFuY2UiLCJzaG93X3R5cGVfcHJvdmVuYW5jZSIsInByZWNlZGVuY2VfUHJvZCIsInByZWNlZGVuY2VfQXJyb3ciLCJwcmVjZWRlbmNlX1N1bSIsInByZWNlZGVuY2VfQ29uc3QiLCJ0eXBlX3Byb3ZlbmFuY2Vfb2Zfc2V4cCIsInNleHBfb2ZfdHlwZV9wcm92ZW5hbmNlIiwidHlwZV9wcm92ZW5hbmNlX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBlX3Byb3ZlbmFuY2UiLCJwcF9zdW1fbWFwIiwic2hvd19zdW1fbWFwIiwiXzgiLCJhMCQzIiwiYTAkNCIsImEwJDUiLCJzdW1fbWFwX29mX3NleHAiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfYXJnc18wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMV8wNTQiLCJzZXhwX2FyZ3NfMDQwIiwicmVzMF8wNDIiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMF8wMjQiLCJzZXhwX2FyZ3NfMDMzIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczFfMDM3Iiwic2V4cF9hcmdzXzAyOCIsImFyZzBfMDI5IiwieF8wNTYiLCJhcmcwXzA1NyIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMV8wNjQiLCJhcmcwXzA2MyIsInJlczBfMDY1IiwicmVzMV8wNjYiLCJzZXhwX29mX3N1bV9tYXAiLCJhcmcxXzA3MiIsImFyZzBfMDcxIiwicmVzMF8wNzMiLCJyZXMxXzA3NCIsInhfMDc1Iiwic3VtX21hcF9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQzIiwidjAkNyIsInYwJDgiLCJ5b2pzb25fYXJncyQ1IiwidjAkMTEiLCJ2MCQxMiIsInlvanNvbl9hcmdzJDQiLCJ2MCQ5IiwidjAkMTAiLCJ5b2pzb25fb2Zfc3VtX21hcCIsInBwX3N1bV9lbnRyeSIsInNob3dfc3VtX2VudHJ5Iiwic3VtX2VudHJ5X29mX3NleHAiLCJ4XzA3NyIsInNleHBfb2Zfc3VtX2VudHJ5IiwieF8wNzgiLCJzdW1fZW50cnlfb2ZfeW9qc29uIiwieW9qc29uX29mX3N1bV9lbnRyeSIsInBwX3NvdXJjZSIsInNob3dfc291cmNlIiwiXzEkMiIsInNvdXJjZV9vZl9zZXhwIiwic2V4cF8wODAiLCJmaWVsZF9zZXhwc18wODEiLCJpZF8wODIiLCJ0eV8wODQiLCJkdXBsaWNhdGVzXzA4NiIsImV4dHJhXzA4NyIsIml0ZXJfMDk0Iiwic2V4cF8wODAkMCIsImZpZWxkX3NleHBzXzA5MCIsImZpZWxkX25hbWVfMDg4IiwidGFpbF8wOTUiLCJmaWVsZF9zZXhwXzA4OSQyIiwiZmllbGRfc2V4cF8wODkiLCJ4XzA5NiIsImZpZWxkX3NleHBfMDg5JDAiLCJmdmFsdWVfMDkxIiwiZmllbGRfc2V4cF8wODkkMSIsImZ2YWx1ZV8wOTIiLCJ0eV8wODUiLCJpZF8wODMiLCJzZXhwX29mX3NvdXJjZSIsInR5XzEwMCIsImlkXzA5OCIsImFyZ18xMDEiLCJibmRzXzA5NyIsImFyZ18wOTkiLCJibmRzXzA5NyQwIiwic291cmNlX29mX3lvanNvbiIsInR5X2ZpZWxkIiwidHlfdmFsdWUiLCJ5b2pzb25fb2Zfc291cmNlIiwidl90eSIsInNvdXJjZSIsIm9mX3NvdXJjZSIsImpvaW5fdHlwZV9wcm92ZW5hbmNlIiwidHYxIiwidHYyIiwicHJlY2VkZW5jZSIsInR5Iiwic3Vic3QiLCJwcm92IiwidHkkMCIsInR5MiIsInR5MSIsInNtIiwidHlzIiwieSQwIiwidHkkMSIsInR5JDIiLCJ1bnJvbGwiLCJ0eV9ib2R5IiwidDEkMCIsInQyJDAiLCJuMSIsIm4yIiwidDEkMSIsInQyJDEiLCJ0MSQyIiwidDIkMiIsInQxJDMiLCJ0MiQzIiwic20xIiwic20yIiwidHlzMSIsInR5czIiLCJ4MSIsInQyJDQiLCJ4MiIsInQxJDQiLCJ0MiQ1IiwiZnJlZV92YXJzIiwiYm91bmQiLCJ0eXAiLCJqb2luIiwiZml4IiwicmVzb2x2ZSIsImpvaW4kMCIsInR5X2pvaW4iLCJ0eTEkMCIsInR5MiQwIiwidHkyJDEiLCJ0eTEkMSIsInR5MiQyIiwidHkxJDIiLCJzb3J0ZWQyIiwic29ydGVkMSIsInNvcnRlZDIkMCIsInNvcnRlZDEkMCIsImpvaW5fc3VtX2VudHJpZXMiLCJ0eTEkMyIsInR5MiQzIiwidHlfbmFtZSIsImpvaW5fZml4Iiwiam9pbl9hbGwiLCJpc19jb25zaXN0ZW50Iiwid2Vha19oZWFkX25vcm1hbGl6ZSIsIm5vcm1hbGl6ZSIsInRzJDAiLCJtYXRjaGVkX2Fycm93IiwidHlfb3V0IiwidHlfaW4iLCJtYXRjaGVkX3Byb2QiLCJtYXRjaGVkX2xpc3QiLCJzdW1fZW50cnkiLCJnZXRfc3VtX2NvbnN0cnVjdG9ycyIsInR5X2JvZHkkMCIsInNtJDAiLCJpc191bmtub3duIiwicHBfdmFyX2VudHJ5Iiwic2hvd192YXJfZW50cnkiLCJfMSQzIiwiXzAkNCIsInZhcl9lbnRyeV9vZl9zZXhwIiwic2V4cF8xMDMiLCJmaWVsZF9zZXhwc18xMDQiLCJuYW1lXzEwNSIsImlkXzEwNyIsInR5cF8xMDkiLCJkdXBsaWNhdGVzXzExMSIsImV4dHJhXzExMiIsIml0ZXJfMTIwIiwic2V4cF8xMDMkMCIsImZpZWxkX3NleHBzXzExNSIsImZpZWxkX25hbWVfMTEzIiwidGFpbF8xMjEiLCJmaWVsZF9zZXhwXzExNCQzIiwiZmllbGRfc2V4cF8xMTQiLCJ4XzEyMiIsImZpZWxkX3NleHBfMTE0JDAiLCJmdmFsdWVfMTE2IiwiZmllbGRfc2V4cF8xMTQkMSIsImZ2YWx1ZV8xMTgiLCJmaWVsZF9zZXhwXzExNCQyIiwiZnZhbHVlXzExNyIsInR5cF8xMTAiLCJpZF8xMDgiLCJuYW1lXzEwNiIsInNleHBfb2ZfdmFyX2VudHJ5IiwidHlwXzEyOCIsImlkXzEyNiIsIm5hbWVfMTI0IiwiYXJnXzEyOSIsImJuZHNfMTIzIiwiYXJnXzEyNyIsImJuZHNfMTIzJDAiLCJhcmdfMTI1IiwiYm5kc18xMjMkMSIsInZhcl9lbnRyeV9vZl95b2pzb24iLCJuYW1lX2ZpZWxkIiwidHlwX2ZpZWxkIiwidHlwX3ZhbHVlIiwibmFtZV92YWx1ZSIsInlvanNvbl9vZl92YXJfZW50cnkiLCJ2X3R5cCIsInZfbmFtZSIsInBwX3R2YXJfZW50cnkiLCJzaG93X3R2YXJfZW50cnkiLCJfMiQxIiwiXzEkNCIsIl8wJDUiLCJ0dmFyX2VudHJ5X29mX3NleHAiLCJzZXhwXzEzMSIsImZpZWxkX3NleHBzXzEzMiIsIm5hbWVfMTMzIiwiaWRfMTM1Iiwia2luZF8xMzciLCJkdXBsaWNhdGVzXzEzOSIsImV4dHJhXzE0MCIsIml0ZXJfMTQ4Iiwic2V4cF8xMzEkMCIsImZpZWxkX3NleHBzXzE0MyIsImZpZWxkX25hbWVfMTQxIiwidGFpbF8xNDkiLCJmaWVsZF9zZXhwXzE0MiQzIiwiZmllbGRfc2V4cF8xNDIiLCJ4XzE1MCIsImZpZWxkX3NleHBfMTQyJDAiLCJmdmFsdWVfMTQ2IiwiZmllbGRfc2V4cF8xNDIkMSIsImZ2YWx1ZV8xNDQiLCJmaWVsZF9zZXhwXzE0MiQyIiwiZnZhbHVlXzE0NSIsImtpbmRfMTM4IiwiaWRfMTM2IiwibmFtZV8xMzQiLCJzZXhwX29mX3R2YXJfZW50cnkiLCJraW5kXzE1NiIsImlkXzE1NCIsIm5hbWVfMTUyIiwiYXJnXzE1NyIsImJuZHNfMTUxIiwiYXJnXzE1NSIsImJuZHNfMTUxJDAiLCJhcmdfMTUzIiwiYm5kc18xNTEkMSIsInR2YXJfZW50cnlfb2ZfeW9qc29uIiwia2luZF9maWVsZCIsImtpbmRfdmFsdWUiLCJ5b2pzb25fb2ZfdHZhcl9lbnRyeSIsInZfa2luZCIsInBwX2VudHJ5Iiwic2hvd19lbnRyeSIsIl8yJDIiLCJfMSQ1IiwiXzAkNiIsImVudHJ5X29mX3NleHAiLCJzZXhwXzE2MiIsInRhZ18xNjMiLCJzZXhwX2FyZ3NfMTY0IiwiYXJnMF8xNjUiLCJyZXMwXzE2NiIsInNleHBfYXJnc18xNzQiLCJhcmcwXzE3NSIsInJlczBfMTc2Iiwic2V4cF9hcmdzXzE2OSIsImFyZzBfMTcwIiwicmVzMF8xNzEiLCJzZXhwX29mX2VudHJ5IiwiYXJnMF8xNzciLCJyZXMwXzE3OCIsImFyZzBfMTc5IiwicmVzMF8xODAiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiZW50cnlfb2ZfeW9qc29uIiwieW9qc29uX29mX2VudHJ5IiwiXzAkNyIsInhfMTg0IiwieF8xODUiLCJlbnRyeSIsImV4dGVuZF90dmFyIiwidHZhcl9lbnRyeSIsImV4dGVuZF9hbGlhcyIsImV4dGVuZF9kdW1teV90dmFyIiwibG9va3VwX3R2YXIiLCJsb29rdXBfYWxpYXMiLCJnZXRfaWQiLCJsb29rdXBfdmFyIiwibG9va3VwX2N0ciIsImlzX2FsaWFzIiwiYWRkX2N0cnMiLCJ0eXAkMCIsInN1YnRyYWN0X3ByZWZpeCIsInByZWZpeF9jdHgiLCJwcmVmaXhfbGVuZ3RoIiwiY3R4X2xlbmd0aCIsImFkZGVkX2JpbmRpbmdzIiwiY3R4X2FmdGVyIiwiY3R4X2JlZm9yZSIsIm5ld19jb3VudCIsImZpbHRlcl9kdXBsaWNhdGVzIiwidHlwX3NldCIsInRlcm1fc2V0IiwibmFtZSQwIiwic2hhZG93c190eXAiLCJzaG93JDEiLCJfMCQ4Iiwic2V4cF8xOTAiLCJ0YWdfMTkxIiwic2V4cF9hcmdzXzE5MiIsImFyZzBfMTkzIiwicmVzMF8xOTQiLCJhcmcwXzE5NSIsInJlczBfMTk2Iiwic2luZ2xldG9uJDAiLCJ1cGRhdGUkMCIsInVuaW9uJDAiLCJjdHgxIiwiY3R4MiIsImZpbHRlciQwIiwiZm9sZCQwIiwicHBfdCQwIiwic2hvd190JDAiLCJvZl9hXzAxOSIsInNleHBfMDIxIiwiZmllbGRfc2V4cHNfMDIyIiwibWFwXzAyMyIsInJldl9vcmRlcl8wMjUiLCJpdGVyXzA0MCIsInNleHBfMDIxJDAiLCJ0YWlsXzA0MSIsInhfMDQyIiwic2V4cF8wMzYiLCJhcmcxXzAzMyIsImFyZzBfMDMyIiwicmVzMF8wMzQiLCJyZXMxXzAzNSIsInJldl9vcmRlcl8wMjYiLCJtYXBfMDI0Iiwib2ZfYV8wNDMiLCJyZXZfb3JkZXJfMDQ3IiwibWFwXzA0NSIsImFyZzFfMDUwIiwiYXJnMF8wNDkiLCJyZXMxXzA1MiIsImJuZHNfMDQ0JDEiLCJtYXBfZmllbGQiLCJyZXZfb3JkZXJfZmllbGQiLCJyZXZfb3JkZXJfdmFsdWUiLCJtYXBfdmFsdWUiLCJ2X3Jldl9vcmRlciIsInZfbWFwIiwiZmFpbHdpdGhfa2V5c2luY29uc2lzdGVudCIsImlzX2VtcHR5JDAiLCJzaW5nbGV0b24kMSIsImV4dGVuZCQwIiwicmV2X29yZGVyIiwidW5pb24kMSIsInJldl9vcmRlcjIiLCJyZXZfb3JkZXIxIiwidW5pb25fb3JkZXIiLCJvcmRlcjEiLCJvcmRlcjEkMCIsInJldl9vcmRlcjIkMCIsInJldl9vcmRlcjIkMSIsImxvb2t1cCQwIiwiY29udGFpbnMkMCIsIm1hcGsiLCJtYXBvIiwiZmlsdGVyayIsInJldl9vcmRlciQwIiwiZmlsdGVybyIsImZvbGRrIiwiZm9sZG8iLCJ0b19saXN0ayIsInRvX2xpc3RvIiwib2ZfbGlzdCQwIiwid2l0aG91dF9rZXlzIiwiYXJnMV8wMTciLCJhcmcwXzAxNiIsInJlczFfMDE5IiwiXzIwIiwiXzE5IiwiXzE4IiwiXzE3IiwiXzE2IiwiXzE1IiwiXzE0IiwiXzEzIiwiXzEyIiwiXzExIiwiXzEwIiwiXzkiLCJhMyIsImEyJDAiLCJhMiQxIiwiYTEkMiIsImEyJDIiLCJhMSQzIiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTEkNCIsImEwJDkiLCJhMSQ1IiwiYTAkMTAiLCJhMCQxMSIsImEwJDEyIiwiYTEkNiIsImEwJDEzIiwic2V4cF9hcmdzXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMl8wMzciLCJhcmcxXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJyZXMyXzA0MCIsInNleHBfYXJnc18wNzciLCJhcmcxXzA3OSIsImFyZzBfMDc4IiwicmVzMF8wODAiLCJyZXMxXzA4MSIsImFyZzNfMDE4IiwiYXJnMl8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwicmVzMl8wMjEiLCJyZXMzXzAyMiIsInNleHBfYXJnc18wNzIiLCJhcmcwXzA3MyIsInJlczBfMDc0Iiwic2V4cF9hcmdzXzA5MSIsImFyZzBfMDkyIiwicmVzMF8wOTMiLCJzZXhwX2FyZ3NfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsInNleHBfYXJnc18xMDEiLCJhcmcxXzEwMyIsImFyZzBfMTAyIiwicmVzMF8xMDQiLCJyZXMxXzEwNSIsInNleHBfYXJnc18wNDMiLCJhcmcyXzA0NiIsImFyZzFfMDQ1IiwiYXJnMF8wNDQiLCJyZXMxXzA0OCIsInJlczJfMDQ5Iiwic2V4cF9hcmdzXzA2NyIsImFyZzBfMDY4IiwicmVzMF8wNjkiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMV8wODYiLCJhcmcwXzA4NSIsInJlczBfMDg3IiwicmVzMV8wODgiLCJzZXhwX2FyZ3NfMDk2IiwiYXJnMF8wOTciLCJyZXMwXzA5OCIsInNleHBfYXJnc18wMjUiLCJhcmcyXzAyOCIsImFyZzFfMDI3IiwiYXJnMF8wMjYiLCJyZXMyXzAzMSIsInNleHBfYXJnc18wNjIiLCJyZXMwXzA2NCIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnM18xMTMiLCJhcmcyXzExMiIsImFyZzFfMTExIiwiYXJnMF8xMTAiLCJyZXMwXzExNCIsInJlczFfMTE1IiwicmVzMl8xMTYiLCJyZXMzXzExNyIsImFyZzJfMTIwIiwiYXJnMV8xMTkiLCJhcmcwXzExOCIsInJlczBfMTIxIiwicmVzMV8xMjIiLCJyZXMyXzEyMyIsImFyZzJfMTI2IiwiYXJnMV8xMjUiLCJhcmcwXzEyNCIsInJlczBfMTI3IiwicmVzMV8xMjgiLCJyZXMyXzEyOSIsImFyZzJfMTMyIiwiYXJnMV8xMzEiLCJhcmcwXzEzMCIsInJlczBfMTMzIiwicmVzMV8xMzQiLCJyZXMyXzEzNSIsImFyZzBfMTM2IiwicmVzMF8xMzciLCJhcmcwXzEzOCIsInJlczBfMTM5IiwiYXJnMF8xNDAiLCJyZXMwXzE0MSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzE0NCIsInJlczBfMTQ1IiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJhcmcxXzE1MSIsImFyZzBfMTUwIiwicmVzMF8xNTIiLCJyZXMxXzE1MyIsImFyZzBfMTU0IiwicmVzMF8xNTUiLCJhcmcwXzE1NiIsInJlczBfMTU3IiwiYXJnMV8xNTkiLCJhcmcwXzE1OCIsInJlczBfMTYwIiwicmVzMV8xNjEiLCJ2MiQxIiwidjIkMiIsInYzIiwidjMkMCIsInlvanNvbl9hcmdzJDEzIiwidjEkMTMiLCJ2MCQyNyIsInYwJDI4IiwidjEkMTQiLCJ5b2pzb25fYXJncyQxMiIsInYyJDUiLCJ2MSQxMSIsInYwJDI1IiwidjAkMjYiLCJ2MSQxMiIsInYyJDYiLCJ5b2pzb25fYXJncyQxMSIsInYwJDIzIiwidjAkMjQiLCJ5b2pzb25fYXJncyQxMCIsInYxJDkiLCJ2MCQyMSIsInYwJDIyIiwidjEkMTAiLCJ5b2pzb25fYXJncyQ5IiwidjAkMTkiLCJ2MCQyMCIsInlvanNvbl9hcmdzJDgiLCJ2MSQ3IiwidjAkMTciLCJ2MCQxOCIsInYxJDgiLCJ5b2pzb25fYXJncyQ3IiwidjIkMyIsInYxJDUiLCJ2MCQxNSIsInYwJDE2IiwidjEkNiIsInYyJDQiLCJ5b2pzb25fYXJncyQ2IiwidjAkMTMiLCJ2MCQxNCIsIm1rX3R1cGxlIiwiZHBzIiwiYmluZHNfdmFyIiwiZHAiLCJkcCQwIiwiZF9saXN0IiwibmV3X2xpc3QiLCJkcDIiLCJkcDEiLCJib3VuZF92YXJzIiwiZHBzJDAiLCJkcDEkMCIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwX29mX2FjdGlvbiIsImFjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWN0aW9uIiwicHBfY291bnQiLCJzaG93X2NvdW50IiwiY291bnRfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9jb3VudCIsImNvdW50X29mX3lvanNvbiIsInlvanNvbl9vZl9jb3VudCIsInNleHBfMDE0Iiwic3RyaW5nX29mX3QiLCJlcnJfbXNnIiwiZXJyIiwic3RydWN0dXJlX3NoYXJlX21hcCIsInN0cnVjdHVyZV9zaGFyZWRfb2Zfc2V4cCIsInNleHBfb2Zfc3RydWN0dXJlX3NoYXJlZCIsInN0cnVjdHVyZV9zaGFyZV9oZXJlIiwia2V5X2YiLCJ0aGluZyIsImtleSIsInRoaW5nX3MiLCJzdHJ1Y3R1cmVfc2hhcmVfaW4iLCJzZXhwJDAiLCJlcnJvcl9zb3VyY2VfMDU2IiwiZXJyb3Jfc291cmNlXzA2MCIsImVycm9yX3NvdXJjZV8wNjQiLCJlcnJvcl9zb3VyY2VfMDY4IiwiZXJyb3Jfc291cmNlXzA3MiIsImVycm9yX3NvdXJjZV8wNzYiLCJlcnJvcl9zb3VyY2VfMDgwIiwidHBfbG9jJDYiLCJlcnJvcl9zb3VyY2VfMDg0IiwidHBfbG9jJDciLCJlcnJvcl9zb3VyY2VfMTA5IiwidHBfbG9jJDgiLCJlcnJvcl9zb3VyY2VfMTQxIiwidHBfbG9jJDkiLCJlcnJvcl9zb3VyY2VfMTU5IiwiZXJyb3Jfc291cmNlXzM0MSIsInRwX2xvYyQxMCIsInRwX2xvYyQxMSIsImVycm9yX3NvdXJjZV80NDIiLCJlcnJvcl9zb3VyY2VfNTM0IiwidHBfbG9jJDEyIiwidHBfbG9jJDEzIiwiZXJyb3Jfc291cmNlXzU3OSIsImVycm9yX3NvdXJjZV82MzciLCJlcnJvcl9zb3VyY2VfNjY3IiwidHBfbG9jJDE0IiwidHBfbG9jJDE1IiwidHBfbG9jJDE2IiwiZXJyb3Jfc291cmNlXzcxMCIsImVycm9yX3NvdXJjZV83NDEiLCJ0cF9sb2MkMTciLCJ0cF9sb2MkMTgiLCJlcnJvcl9zb3VyY2VfNzU4IiwiZXJyb3Jfc291cmNlXzc5NiIsInRwX2xvYyQxOSIsInRwX2xvYyQyMCIsInNleHBfYXJnc18wMzciLCJhcmcwXzAzOCIsInNleHBfYXJnc18wMzIiLCJhcmcwXzAzMyIsInNleHBfYXJnc18wMjciLCJhcmcwXzAyOCIsInNleHBfYXJnc18wMjIiLCJyZXMwXzAyNCIsInNleHBfYXJnc18wMTciLCJhcmcwXzA0MCIsInJlczBfMDQxIiwiYXJnMF8wNDIiLCJyZXMwXzA0NSIsInJlczBfMDQ5IiwiaXNfZXhwIiwiaXNfcGF0IiwiaXNfdHlwIiwicHBfb3BfdW5fYm9vbCIsInNob3dfb3BfdW5fYm9vbCIsIm9wX3VuX2Jvb2xfb2Zfc2V4cCIsInNleHBfb2Zfb3BfdW5fYm9vbCIsIm9wX3VuX2Jvb2xfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX3VuX2Jvb2wiLCJwcF9vcF91bl9tZXRhIiwic2hvd19vcF91bl9tZXRhIiwib3BfdW5fbWV0YV9vZl9zZXhwIiwic2V4cF8wNjEiLCJzZXhwX29mX29wX3VuX21ldGEiLCJvcF91bl9tZXRhX29mX3lvanNvbiIsInlvanNvbl9vZl9vcF91bl9tZXRhIiwicHBfb3BfdW5faW50Iiwic2hvd19vcF91bl9pbnQiLCJvcF91bl9pbnRfb2Zfc2V4cCIsInNleHBfMDY1Iiwic2V4cF9vZl9vcF91bl9pbnQiLCJvcF91bl9pbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX3VuX2ludCIsInBwX29wX2Jpbl9ib29sIiwic2hvd19vcF9iaW5fYm9vbCIsIm9wX2Jpbl9ib29sX29mX3NleHAiLCJzZXhwXzA2OSIsInNleHBfb2Zfb3BfYmluX2Jvb2wiLCJvcF9iaW5fYm9vbF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2Jvb2wiLCJwcF9vcF9iaW5faW50Iiwic2hvd19vcF9iaW5faW50Iiwib3BfYmluX2ludF9vZl9zZXhwIiwic2V4cF8wNzMiLCJzZXhwX29mX29wX2Jpbl9pbnQiLCJvcF9iaW5faW50X29mX3lvanNvbiIsInlvanNvbl9vZl9vcF9iaW5faW50IiwicHBfb3BfYmluX2Zsb2F0Iiwic2hvd19vcF9iaW5fZmxvYXQiLCJvcF9iaW5fZmxvYXRfb2Zfc2V4cCIsInNleHBfMDc3Iiwic2V4cF9vZl9vcF9iaW5fZmxvYXQiLCJvcF9iaW5fZmxvYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9mbG9hdCIsInBwX29wX2Jpbl9zdHJpbmciLCJzaG93X29wX2Jpbl9zdHJpbmciLCJvcF9iaW5fc3RyaW5nX29mX3NleHAiLCJzZXhwXzA4MSIsInNleHBfb2Zfb3BfYmluX3N0cmluZyIsIm9wX2Jpbl9zdHJpbmdfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9zdHJpbmciLCJwcF9vcF91biIsInNob3dfb3BfdW4iLCJvcF91bl9vZl9zZXhwIiwic2V4cF8wODYiLCJ0YWdfMDg3Iiwic2V4cF9hcmdzXzA4OCIsImFyZzBfMDg5IiwicmVzMF8wOTAiLCJzZXhwX2FyZ3NfMDkzIiwiYXJnMF8wOTQiLCJyZXMwXzA5NSIsInNleHBfYXJnc18wOTgiLCJhcmcwXzA5OSIsInJlczBfMTAwIiwic2V4cF9vZl9vcF91biIsImFyZzBfMTAxIiwicmVzMF8xMDIiLCJhcmcwXzEwMyIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJvcF91bl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW4iLCJwcF9vcF9iaW4iLCJzaG93X29wX2JpbiIsIl8zJDAiLCJvcF9iaW5fb2Zfc2V4cCIsInNleHBfMTExIiwidGFnXzExMiIsInNleHBfYXJnc18xMjgiLCJhcmcwXzEyOSIsInJlczBfMTMwIiwic2V4cF9hcmdzXzExMyIsImFyZzBfMTE0IiwicmVzMF8xMTUiLCJzZXhwX2FyZ3NfMTE4IiwiYXJnMF8xMTkiLCJyZXMwXzEyMCIsInNleHBfYXJnc18xMjMiLCJyZXMwXzEyNSIsInNleHBfb2Zfb3BfYmluIiwiYXJnMF8xMzEiLCJyZXMwXzEzMiIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzNSIsInJlczBfMTM2IiwiYXJnMF8xMzciLCJyZXMwXzEzOCIsIm9wX2Jpbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluIiwic2V4cF8xNDMiLCJ0YWdfMTQ0Iiwic2V4cF9hcmdzXzE0NSIsInJlczBfMTQ3Iiwic2V4cF9hcmdzXzE1MCIsImFyZzBfMTUxIiwiYXJnMF8xNTMiLCJyZXMwXzE1NCIsImFyZzBfMTU1IiwicmVzMF8xNTYiLCJwcF90ZXJtIiwic2hvd190ZXJtIiwiXzM3IiwiXzM2IiwiXzM1IiwiXzM0IiwiXzMzIiwiXzMyIiwiXzMxIiwiXzMwIiwiXzI5IiwiXzI4IiwiXzI3IiwiXzI2IiwiXzI1IiwiXzI0IiwiXzIzIiwiXzIyIiwiXzIxIiwiXzQkMCIsIl8zJDEiLCJhMCQxNCIsImEwJDE1IiwiYTAkMTYiLCJhMCQxNyIsImEwJDE4IiwiYTEkNyIsImEwJDE5IiwiYTEkOCIsImEwJDIwIiwiYTEkOSIsImEwJDIxIiwiYTIkMyIsImExJDEwIiwiYTAkMjIiLCJhMSQxMSIsImEwJDIzIiwidGVybV9vZl9zZXhwIiwic2V4cF8xNjEiLCJ0YWdfMTYyIiwic2V4cF9hcmdzXzI5NCIsImFyZzFfMjk2IiwiYXJnMF8yOTUiLCJyZXMwXzI5NyIsInJlczFfMjk4Iiwic2V4cF9hcmdzXzE4OCIsImFyZzBfMTg5IiwicmVzMF8xOTAiLCJzZXhwX2FyZ3NfMjY4IiwiYXJnMF8yNjkiLCJyZXMwXzI3MCIsInNleHBfYXJnc18yMTAiLCJhcmcwXzIxMSIsInJlczBfMjEyIiwic2V4cF9hcmdzXzIyOSIsImFyZzJfMjMyIiwiYXJnMV8yMzEiLCJhcmcwXzIzMCIsInJlczBfMjMzIiwicmVzMV8yMzQiLCJyZXMyXzIzNSIsInNleHBfYXJnc18zMDEiLCJhcmcxXzMwMyIsImFyZzBfMzAyIiwicmVzMF8zMDQiLCJyZXMxXzMwNSIsInNleHBfYXJnc18yMTUiLCJhcmcwXzIxNiIsInJlczBfMjE3Iiwic2V4cF9hcmdzXzE5MyIsImFyZzBfMTk0IiwicmVzMF8xOTUiLCJzZXhwX2FyZ3NfMzE3IiwiYXJnMV8zMjQiLCJhcmcwXzMyMyIsInJlczBfMzI1Iiwic2V4cF8zMjIiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJzZXhwX2FyZ3NfMjgyIiwiYXJnMF8yODMiLCJyZXMwXzI4NCIsInNleHBfYXJnc18yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInNleHBfYXJnc18yNjEiLCJhcmcxXzI2MyIsImFyZzBfMjYyIiwicmVzMF8yNjQiLCJyZXMxXzI2NSIsInNleHBfYXJnc18yNzMiLCJhcmcyXzI3NiIsImFyZzFfMjc1IiwiYXJnMF8yNzQiLCJyZXMwXzI3NyIsInJlczFfMjc4IiwicmVzMl8yNzkiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18yMDMiLCJhcmcxXzIwNSIsImFyZzBfMjA0IiwicmVzMF8yMDYiLCJyZXMxXzIwNyIsInNleHBfYXJnc18yNTIiLCJhcmcyXzI1NSIsImFyZzFfMjU0IiwiYXJnMF8yNTMiLCJyZXMwXzI1NiIsInJlczFfMjU3IiwicmVzMl8yNTgiLCJzZXhwX2FyZ3NfMTc4Iiwic2V4cF9hcmdzXzE2MyIsImFyZzBfMTY0IiwicmVzMF8xNjUiLCJzZXhwX2FyZ3NfMjIwIiwiYXJnMl8yMjMiLCJhcmcxXzIyMiIsImFyZzBfMjIxIiwicmVzMF8yMjQiLCJyZXMxXzIyNSIsInJlczJfMjI2Iiwic2V4cF9hcmdzXzIzOCIsImFyZzFfMjQwIiwiYXJnMF8yMzkiLCJyZXMwXzI0MSIsInJlczFfMjQyIiwic2V4cF9hcmdzXzMwOCIsImFyZzJfMzExIiwiYXJnMV8zMTAiLCJhcmcwXzMwOSIsInJlczBfMzEyIiwicmVzMV8zMTMiLCJyZXMyXzMxNCIsInNleHBfYXJnc18xNzMiLCJhcmcwXzE3NCIsInJlczBfMTc1Iiwic2V4cF9hcmdzXzI4NyIsImFyZzFfMjg5IiwiYXJnMF8yODgiLCJyZXMwXzI5MCIsInJlczFfMjkxIiwic2V4cF9hcmdzXzE5OCIsImFyZzBfMTk5IiwicmVzMF8yMDAiLCJzZXhwXzMyOCIsImZpZWxkX3NleHBzXzMyOSIsImlkc18zMzAiLCJ0ZXJtXzMzMiIsImR1cGxpY2F0ZXNfMzM0IiwiZXh0cmFfMzM1IiwiaXRlcl8zNDIiLCJzZXhwXzMyOCQwIiwiZmllbGRfc2V4cHNfMzM4IiwiZmllbGRfbmFtZV8zMzYiLCJ0YWlsXzM0MyIsImZpZWxkX3NleHBfMzM3JDIiLCJmaWVsZF9zZXhwXzMzNyIsInhfMzQ0IiwiZmllbGRfc2V4cF8zMzckMCIsImZ2YWx1ZV8zMzkiLCJmaWVsZF9zZXhwXzMzNyQxIiwiZnZhbHVlXzM0MCIsInRlcm1fMzMzIiwiaWRzXzMzMSIsInNleHBfb2ZfdGVybSIsImFyZzBfMzQ1IiwicmVzMF8zNDYiLCJhcmcwXzM0NyIsInJlczBfMzQ4IiwiYXJnMF8zNDkiLCJyZXMwXzM1MCIsImFyZzBfMzUxIiwicmVzMF8zNTIiLCJhcmcwXzM1MyIsInJlczBfMzU0IiwiYXJnMF8zNTUiLCJyZXMwXzM1NiIsImFyZzBfMzU3IiwicmVzMF8zNTgiLCJhcmcwXzM1OSIsInJlczBfMzYwIiwiYXJnMV8zNjIiLCJhcmcwXzM2MSIsInJlczBfMzYzIiwicmVzMV8zNjQiLCJhcmcwXzM2NSIsInJlczBfMzY2IiwiYXJnMF8zNjciLCJyZXMwXzM2OCIsImFyZzJfMzcxIiwiYXJnMV8zNzAiLCJhcmcwXzM2OSIsInJlczBfMzcyIiwicmVzMV8zNzMiLCJyZXMyXzM3NCIsImFyZzJfMzc3IiwiYXJnMV8zNzYiLCJhcmcwXzM3NSIsInJlczBfMzc4IiwicmVzMV8zNzkiLCJyZXMyXzM4MCIsImFyZzFfMzgyIiwiYXJnMF8zODEiLCJyZXMwXzM4MyIsInJlczFfMzg0IiwiYXJnMV8zODYiLCJhcmcwXzM4NSIsInJlczBfMzg3IiwicmVzMV8zODgiLCJhcmcyXzM5MSIsImFyZzFfMzkwIiwiYXJnMF8zODkiLCJyZXMwXzM5MiIsInJlczFfMzkzIiwicmVzMl8zOTQiLCJhcmcxXzM5NiIsImFyZzBfMzk1IiwicmVzMF8zOTciLCJyZXMxXzM5OCIsImFyZzBfMzk5IiwicmVzMF80MDAiLCJhcmcyXzQwMyIsImFyZzFfNDAyIiwiYXJnMF80MDEiLCJyZXMwXzQwNCIsInJlczFfNDA1IiwicmVzMl80MDYiLCJhcmcwXzQwNyIsInJlczBfNDA4IiwiYXJnMV80MTAiLCJhcmcwXzQwOSIsInJlczBfNDExIiwicmVzMV80MTIiLCJhcmcxXzQxNCIsImFyZzBfNDEzIiwicmVzMF80MTUiLCJyZXMxXzQxNiIsImFyZzFfNDE4IiwiYXJnMF80MTciLCJyZXMwXzQxOSIsInJlczFfNDIwIiwiYXJnMl80MjMiLCJhcmcxXzQyMiIsImFyZzBfNDIxIiwicmVzMF80MjQiLCJyZXMxXzQyNSIsInJlczJfNDI2IiwiYXJnMV80MzIiLCJhcmcwXzQzMSIsInJlczBfNDMzIiwiYXJnMV80MjgiLCJhcmcwXzQyNyIsInJlczBfNDI5IiwicmVzMV80MzAiLCJyZXMxXzQzNCIsInRlcm1fNDM4IiwiaWRzXzQzNiIsImFyZ180MzkiLCJibmRzXzQzNSIsImFyZ180MzciLCJibmRzXzQzNSQwIiwidGVybV9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQxOCIsInYxJDE3IiwidjAkMzciLCJ2MCQzOCIsInYxJDE4IiwieW9qc29uX2FyZ3MkMTciLCJ2MCQzNSIsInYwJDM2IiwieW9qc29uX2FyZ3MkMTYiLCJ2MSQxNSIsInYwJDMzIiwidjAkMzQiLCJ2MSQxNiIsInlvanNvbl9hcmdzJDE1IiwidjAkMzEiLCJ2MCQzMiIsInlvanNvbl9hcmdzJDE0IiwidjAkMjkiLCJ2MCQzMCIsInlvanNvbl9hcmdzJDIzIiwidjEkMjMiLCJ2MCQ0NyIsInYwJDQ4IiwidjEkMjQiLCJ5b2pzb25fYXJncyQyMiIsInYyJDciLCJ2MSQyMSIsInYwJDQ1IiwidjAkNDYiLCJ2MSQyMiIsInYyJDgiLCJ5b2pzb25fYXJncyQyMSIsInYwJDQzIiwidjAkNDQiLCJ5b2pzb25fYXJncyQyMCIsInYxJDE5IiwidjAkNDEiLCJ2MCQ0MiIsInYxJDIwIiwieW9qc29uX2FyZ3MkMTkiLCJ2MCQzOSIsInYwJDQwIiwiaWRzX2ZpZWxkIiwidGVybV9maWVsZCIsInRlcm1fdmFsdWUiLCJpZHNfdmFsdWUiLCJ5b2pzb25fb2ZfdGVybSIsInZfdGVybSIsInZfaWRzIiwiYm9vbF9vcF90b19zdHJpbmciLCJvcCIsImludF9vcF90b19zdHJpbmciLCJmbG9hdF9vcF90b19zdHJpbmciLCJzdHJpbmdfb3BfdG9fc3RyaW5nIiwicHBfdGVybSQwIiwic2hvd190ZXJtJDAiLCJfMTAkMCIsIl85JDAiLCJfOCQwIiwiXzckMCIsIl82JDAiLCJfNSQwIiwiXzQkMSIsIl8zJDIiLCJfMiQzIiwiXzEkNiIsInRlcm1fb2Zfc2V4cCQwIiwic2V4cF80NDQiLCJ0YWdfNDQ1Iiwic2V4cF9hcmdzXzQ3NiIsImFyZzBfNDc3IiwicmVzMF80NzgiLCJzZXhwX2FyZ3NfNDUxIiwiYXJnMF80NTIiLCJyZXMwXzQ1MyIsInNleHBfYXJnc181MDMiLCJhcmcwXzUwNCIsInJlczBfNTA1Iiwic2V4cF9hcmdzXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJzZXhwX2FyZ3NfNDk4IiwiYXJnMF80OTkiLCJyZXMwXzUwMCIsInNleHBfYXJnc181MTUiLCJhcmcxXzUxNyIsImFyZzBfNTE2IiwicmVzMF81MTgiLCJyZXMxXzUxOSIsInNleHBfYXJnc180OTMiLCJhcmcwXzQ5NCIsInJlczBfNDk1Iiwic2V4cF9hcmdzXzUwOCIsImFyZzFfNTEwIiwiYXJnMF81MDkiLCJyZXMwXzUxMSIsInJlczFfNTEyIiwic2V4cF9hcmdzXzQ2NiIsImFyZzBfNDY3IiwicmVzMF80NjgiLCJzZXhwX2FyZ3NfNDg2IiwiYXJnMV80ODgiLCJhcmcwXzQ4NyIsInJlczBfNDg5IiwicmVzMV80OTAiLCJzZXhwX2FyZ3NfNDgxIiwiYXJnMF80ODIiLCJyZXMwXzQ4MyIsInNleHBfYXJnc180NjEiLCJhcmcwXzQ2MiIsInJlczBfNDYzIiwic2V4cF9hcmdzXzQ1NiIsImFyZzBfNDU3IiwicmVzMF80NTgiLCJzZXhwX2FyZ3NfNDQ2IiwiYXJnMF80NDciLCJyZXMwXzQ0OCIsInNleHBfNTIxIiwiZmllbGRfc2V4cHNfNTIyIiwiaWRzXzUyMyIsInRlcm1fNTI1IiwiZHVwbGljYXRlc181MjciLCJleHRyYV81MjgiLCJpdGVyXzUzNSIsInNleHBfNTIxJDAiLCJmaWVsZF9zZXhwc181MzEiLCJmaWVsZF9uYW1lXzUyOSIsInRhaWxfNTM2IiwiZmllbGRfc2V4cF81MzAkMiIsImZpZWxkX3NleHBfNTMwIiwieF81MzciLCJmaWVsZF9zZXhwXzUzMCQwIiwiZnZhbHVlXzUzMiIsImZpZWxkX3NleHBfNTMwJDEiLCJmdmFsdWVfNTMzIiwidGVybV81MjYiLCJpZHNfNTI0Iiwic2V4cF9vZl90ZXJtJDAiLCJhcmcwXzUzOCIsInJlczBfNTM5IiwiYXJnMF81NDAiLCJyZXMwXzU0MSIsImFyZzBfNTQyIiwicmVzMF81NDMiLCJhcmcwXzU0NCIsInJlczBfNTQ1IiwiYXJnMF81NDYiLCJyZXMwXzU0NyIsImFyZzBfNTQ4IiwicmVzMF81NDkiLCJhcmcwXzU1MCIsInJlczBfNTUxIiwiYXJnMF81NTIiLCJyZXMwXzU1MyIsImFyZzFfNTU1IiwiYXJnMF81NTQiLCJyZXMwXzU1NiIsInJlczFfNTU3IiwiYXJnMF81NTgiLCJyZXMwXzU1OSIsImFyZzBfNTYwIiwicmVzMF81NjEiLCJhcmcwXzU2MiIsInJlczBfNTYzIiwiYXJnMV81NjUiLCJhcmcwXzU2NCIsInJlczBfNTY2IiwicmVzMV81NjciLCJhcmcxXzU2OSIsImFyZzBfNTY4IiwicmVzMF81NzAiLCJyZXMxXzU3MSIsInRlcm1fNTc1IiwiaWRzXzU3MyIsImFyZ181NzYiLCJibmRzXzU3MiIsImFyZ181NzQiLCJibmRzXzU3MiQwIiwidGVybV9vZl95b2pzb24kMCIsInlvanNvbl9vZl90ZXJtJDAiLCJwcF90ZXJtJDEiLCJzaG93X3Rlcm0kMSIsInBwX3ZhcmlhbnQiLCJzaG93X3ZhcmlhbnQiLCJwcCQyIiwic2hvdyQyIiwiXzgkMSIsIl83JDEiLCJfNiQxIiwiXzUkMSIsIl80JDIiLCJfMyQzIiwiXzIkNCIsIl8xJDciLCJfMyQ0IiwiXzIkNSIsIl8xJDgiLCJfMSQ5IiwiXzAkOSIsInRlcm1fb2Zfc2V4cCQxIiwidmFyaWFudF9vZl9zZXhwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzU4MSIsInRhZ181ODIiLCJzZXhwX2FyZ3NfNTgzIiwiYXJnMF81ODQiLCJyZXMwXzU4NSIsInNleHBfYXJnc181OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1Iiwic2V4cF9hcmdzXzU4OCIsImFyZzBfNTg5IiwicmVzMF81OTAiLCJzZXhwX2FyZ3NfNjIwIiwiYXJnMF82MjEiLCJyZXMwXzYyMiIsInNleHBfYXJnc182MzIiLCJhcmcwXzYzMyIsInJlczBfNjM0Iiwic2V4cF9hcmdzXzYxNSIsImFyZzBfNjE2IiwicmVzMF82MTciLCJzZXhwX2FyZ3NfNTk4IiwiYXJnMF81OTkiLCJyZXMwXzYwMCIsInNleHBfYXJnc182MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsInNleHBfYXJnc182MDgiLCJhcmcxXzYxMCIsImFyZzBfNjA5IiwicmVzMF82MTEiLCJyZXMxXzYxMiIsInNleHBfYXJnc182MDMiLCJhcmcwXzYwNCIsInJlczBfNjA1Iiwic2V4cF82MzkiLCJ0YWdfNjQwIiwic2V4cF9hcmdzXzY0MSIsImFyZzJfNjQ0IiwiYXJnMV82NDMiLCJhcmcwXzY0MiIsInJlczBfNjQ1IiwicmVzMV82NDYiLCJyZXMyXzY0NyIsInNleHBfYXJnc182NTAiLCJhcmcwXzY1MSIsInJlczBfNjUyIiwic2V4cF82NTQiLCJmaWVsZF9zZXhwc182NTUiLCJpZHNfNjU2IiwidGVybV82NTgiLCJkdXBsaWNhdGVzXzY2MCIsImV4dHJhXzY2MSIsIml0ZXJfNjY4Iiwic2V4cF82NTQkMCIsImZpZWxkX3NleHBzXzY2NCIsImZpZWxkX25hbWVfNjYyIiwidGFpbF82NjkiLCJmaWVsZF9zZXhwXzY2MyQyIiwiZmllbGRfc2V4cF82NjMiLCJ4XzY3MCIsImZpZWxkX3NleHBfNjYzJDAiLCJmdmFsdWVfNjY1IiwiZmllbGRfc2V4cF82NjMkMSIsImZ2YWx1ZV82NjYiLCJ0ZXJtXzY1OSIsImlkc182NTciLCJzZXhwX29mX3Rlcm0kMSIsImFyZzBfNjcxIiwicmVzMF82NzIiLCJhcmcwXzY3MyIsInJlczBfNjc0IiwiYXJnMF82NzUiLCJyZXMwXzY3NiIsInNleHBfb2ZfdCQyIiwiYXJnMF82NzciLCJyZXMwXzY3OCIsImFyZzBfNjc5IiwicmVzMF82ODAiLCJhcmcxXzY4MiIsImFyZzBfNjgxIiwicmVzMF82ODMiLCJyZXMxXzY4NCIsImFyZzBfNjg1IiwicmVzMF82ODYiLCJhcmcwXzY4NyIsInJlczBfNjg4IiwiYXJnMV82OTAiLCJhcmcwXzY4OSIsInJlczBfNjkxIiwicmVzMV82OTIiLCJhcmcwXzY5MyIsInJlczBfNjk0Iiwic2V4cF9vZl92YXJpYW50IiwiYXJnMl82OTciLCJhcmcxXzY5NiIsImFyZzBfNjk1IiwicmVzMF82OTgiLCJyZXMxXzY5OSIsInJlczJfNzAwIiwiYXJnMF83MDEiLCJyZXMwXzcwMiIsInRlcm1fNzA2IiwiaWRzXzcwNCIsImFyZ183MDciLCJibmRzXzcwMyIsImFyZ183MDUiLCJibmRzXzcwMyQwIiwidGVybV9vZl95b2pzb24kMSIsInZhcmlhbnRfb2ZfeW9qc29uIiwidF9vZl95b2pzb24kMiIsInlvanNvbl9vZl90ZXJtJDEiLCJ5b2pzb25fb2ZfdCQyIiwieW9qc29uX29mX3ZhcmlhbnQiLCJwcF90ZXJtJDIiLCJzaG93X3Rlcm0kMiIsInBwJDMiLCJzaG93JDMiLCJfMSQxMCIsIl8wJDEwIiwiXzEkMTEiLCJfMCQxMSIsInRlcm1fb2Zfc2V4cCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwXzcxMiIsInRhZ183MTMiLCJzZXhwX2FyZ3NfNzI0IiwiYXJnMF83MjUiLCJyZXMwXzcyNiIsInNleHBfYXJnc183MTkiLCJhcmcwXzcyMCIsInJlczBfNzIxIiwic2V4cF9hcmdzXzcxNCIsImFyZzBfNzE1IiwicmVzMF83MTYiLCJzZXhwXzcyOCIsImZpZWxkX3NleHBzXzcyOSIsImlkc183MzAiLCJ0ZXJtXzczMiIsImR1cGxpY2F0ZXNfNzM0IiwiZXh0cmFfNzM1IiwiaXRlcl83NDIiLCJzZXhwXzcyOCQwIiwiZmllbGRfc2V4cHNfNzM4IiwiZmllbGRfbmFtZV83MzYiLCJ0YWlsXzc0MyIsImZpZWxkX3NleHBfNzM3JDIiLCJmaWVsZF9zZXhwXzczNyIsInhfNzQ0IiwiZmllbGRfc2V4cF83MzckMCIsImZ2YWx1ZV83MzkiLCJmaWVsZF9zZXhwXzczNyQxIiwiZnZhbHVlXzc0MCIsInRlcm1fNzMzIiwiaWRzXzczMSIsInNleHBfb2ZfdGVybSQyIiwiYXJnMF83NDUiLCJyZXMwXzc0NiIsImFyZzBfNzQ3IiwicmVzMF83NDgiLCJhcmcwXzc0OSIsInJlczBfNzUwIiwic2V4cF9vZl90JDMiLCJ0ZXJtXzc1NCIsImlkc183NTIiLCJhcmdfNzU1IiwiYm5kc183NTEiLCJhcmdfNzUzIiwiYm5kc183NTEkMCIsInRlcm1fb2ZfeW9qc29uJDIiLCJ0X29mX3lvanNvbiQzIiwieW9qc29uX29mX3Rlcm0kMiIsInlvanNvbl9vZl90JDMiLCJwcF90ZXJtJDMiLCJzaG93X3Rlcm0kMyIsInBwJDQiLCJzaG93JDQiLCJfMyQ1IiwiXzIkNiIsIl8xJDEyIiwiXzAkMTIiLCJfMSQxMyIsIl8wJDEzIiwidGVybV9vZl9zZXhwJDMiLCJ0X29mX3NleHAkNCIsInNleHBfNzYwIiwidGFnXzc2MSIsInNleHBfYXJnc183NzIiLCJhcmcxXzc3OSIsImFyZzBfNzc4IiwicmVzMF83ODAiLCJzZXhwXzc3NyIsImFyZzFfNzc0IiwiYXJnMF83NzMiLCJyZXMwXzc3NSIsInJlczFfNzc2IiwicmVzMV83ODEiLCJzZXhwX2FyZ3NfNzYyIiwiYXJnMF83NjMiLCJyZXMwXzc2NCIsInNleHBfYXJnc183NjciLCJhcmcwXzc2OCIsInJlczBfNzY5Iiwic2V4cF83ODMiLCJmaWVsZF9zZXhwc183ODQiLCJpZHNfNzg1IiwidGVybV83ODciLCJkdXBsaWNhdGVzXzc4OSIsImV4dHJhXzc5MCIsIml0ZXJfNzk3Iiwic2V4cF83ODMkMCIsImZpZWxkX3NleHBzXzc5MyIsImZpZWxkX25hbWVfNzkxIiwidGFpbF83OTgiLCJmaWVsZF9zZXhwXzc5MiQyIiwiZmllbGRfc2V4cF83OTIiLCJ4Xzc5OSIsImZpZWxkX3NleHBfNzkyJDAiLCJmdmFsdWVfNzk0IiwiZmllbGRfc2V4cF83OTIkMSIsImZ2YWx1ZV83OTUiLCJ0ZXJtXzc4OCIsImlkc183ODYiLCJzZXhwX29mX3Rlcm0kMyIsImFyZzBfODAwIiwicmVzMF84MDEiLCJhcmcwXzgwMiIsInJlczBfODAzIiwiYXJnMV84MDkiLCJhcmcwXzgwOCIsInJlczBfODEwIiwiYXJnMV84MDUiLCJhcmcwXzgwNCIsInJlczBfODA2IiwicmVzMV84MDciLCJyZXMxXzgxMSIsInNleHBfb2ZfdCQ0IiwidGVybV84MTUiLCJpZHNfODEzIiwiYXJnXzgxNiIsImJuZHNfODEyIiwiYXJnXzgxNCIsImJuZHNfODEyJDAiLCJ0ZXJtX29mX3lvanNvbiQzIiwidF9vZl95b2pzb24kNCIsInlvanNvbl9vZl90ZXJtJDMiLCJ5b2pzb25fb2ZfdCQ0IiwiZXJyb3Jfc291cmNlXzQ5MiIsImVycm9yX3NvdXJjZV8yODUiLCJlcnJvcl9zb3VyY2VfMjk4IiwiZXJyb3Jfc291cmNlXzUxMSIsImVycm9yX3NvdXJjZV81MjIiLCJwcF9pZl9jb25zaXN0ZW5jeSIsInNob3dfaWZfY29uc2lzdGVuY3kiLCJpZl9jb25zaXN0ZW5jeV9vZl9zZXhwIiwic2V4cF9vZl9pZl9jb25zaXN0ZW5jeSIsImlmX2NvbnNpc3RlbmN5X29mX3lvanNvbiIsInlvanNvbl9vZl9pZl9jb25zaXN0ZW5jeSIsInhfNDg0IiwieF80ODUiLCJzZXhwXzQ5MSIsImFyZzFfNDk0IiwiYXJnMF80OTMiLCJyZXMxXzQ5NiIsIndyYXAiLCJlaSIsImlkX29mIiwibWFwX29mIiwiZW52Iiwib2ZfZW52aXJvbm1lbnQiLCJpZF9lcXVhbCIsImVudjEiLCJlbnYyIiwibGVuZ3RoJDAiLCJ1cGRhdGVfa2VlcF9pZCIsInhyIiwiZXh0ZW5kX2tlZXBfaWQiLCJ1bmlvbl9rZWVwX2lkIiwibWFwX2tlZXBfaWQiLCJmaWx0ZXJfa2VlcF9pZCIsImZvbGQiLCJwbGFjZWhvbGRlciIsIndpdGhvdXRfa2V5cyQwIiwicHBfY2FzZSIsInNob3dfY2FzZSIsInBwX3J1bGUiLCJzaG93X3J1bGUiLCJfNzMiLCJfNzIiLCJfNzEiLCJfNzAiLCJfNjkiLCJfNjgiLCJfNjciLCJfNjYiLCJfNjUiLCJfNjQiLCJfNjMiLCJfNjIiLCJfNjEiLCJfNjAiLCJfNTkiLCJfNTgiLCJfNTciLCJfNTYiLCJfNTUiLCJfNTQiLCJfNTMiLCJfNTIiLCJfNTEiLCJfNTAiLCJfNDkiLCJfNDgiLCJfNDciLCJfNDYiLCJfNDUiLCJfNDQiLCJfNDMiLCJfNDIiLCJfNDEiLCJfNDAiLCJfMzkiLCJfMzgiLCJhMiQ0IiwiYTIkNSIsImEzJDAiLCJhMiQ2IiwiYTEkMTIiLCJhMSQxMyIsImEyJDciLCJhMSQxNCIsImEyJDgiLCJhMSQxNSIsImEyJDkiLCJhMSQxNiIsImEyJDEwIiwiYTEkMTciLCJhMyQxIiwiYTIkMTEiLCJhMSQxOCIsImEwJDI0IiwiYTEkMTkiLCJhMCQyNSIsImExJDIwIiwiYTAkMjYiLCJhMCQyNyIsImExJDIxIiwiYTAkMjgiLCJhMCQyOSIsImEwJDMwIiwiYTIkMTIiLCJhMSQyMiIsImEwJDMxIiwiYTIkMTMiLCJhMSQyMyIsImEwJDMyIiwiYTEkMjQiLCJhMCQzMyIsImEzJDIiLCJhMiQxNCIsImExJDI1IiwiYTAkMzQiLCJjYXNlX29mX3NleHAiLCJydWxlX29mX3NleHAiLCJzZXhwX2FyZ3NfMTAwIiwiYXJnMl8xMDMiLCJhcmcxXzEwMiIsInJlczJfMTA2IiwiYXJnMl8wOTQiLCJhcmcxXzA5MyIsInJlczFfMDk2IiwicmVzMl8wOTciLCJyZXMwXzIyMyIsInJlczFfMjI0Iiwic2V4cF9hcmdzXzIwMiIsImFyZzNfMjA2IiwiYXJnMl8yMDUiLCJhcmcxXzIwNCIsImFyZzBfMjAzIiwicmVzMF8yMDciLCJyZXMxXzIwOCIsInJlczJfMjA5IiwicmVzM18yMTAiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwicmVzMF8wMjMiLCJyZXMxXzAyNCIsInJlczJfMDI1IiwicmVzM18wMjYiLCJzZXhwX2FyZ3NfMjMyIiwiYXJnMV8yMzQiLCJhcmcwXzIzMyIsInJlczBfMjM1IiwicmVzMV8yMzYiLCJzZXhwX2FyZ3NfMTYxIiwiYXJnMF8xNjIiLCJyZXMwXzE2MyIsInNleHBfYXJnc18xMzkiLCJhcmcxXzE0MSIsInJlczBfMTQyIiwicmVzMV8xNDMiLCJzZXhwX2FyZ3NfMjI3IiwiYXJnMF8yMjgiLCJyZXMwXzIyOSIsInNleHBfYXJnc18xNTYiLCJhcmcwXzE1NyIsInJlczBfMTU4Iiwic2V4cF9hcmdzXzAzOCIsImFyZzJfMDQxIiwiYXJnMV8wNDAiLCJhcmcwXzAzOSIsInJlczFfMDQzIiwicmVzMl8wNDQiLCJzZXhwX2FyZ3NfMTA5Iiwic2V4cF9hcmdzXzI3NCIsImFyZzNfMjc4IiwiYXJnMl8yNzciLCJhcmcxXzI3NiIsImFyZzBfMjc1IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczJfMjgxIiwicmVzM18yODIiLCJzZXhwX2FyZ3NfMDU2IiwiYXJnMl8wNTkiLCJhcmcxXzA1OCIsInJlczFfMDYxIiwicmVzMl8wNjIiLCJzZXhwX2FyZ3NfMTUxIiwiYXJnMF8xNTIiLCJyZXMwXzE1MyIsInNleHBfYXJnc18yNjciLCJhcmcxXzI2OSIsImFyZzBfMjY4IiwicmVzMV8yNzEiLCJzZXhwX2FyZ3NfMDQ3IiwiYXJnMl8wNTAiLCJyZXMyXzA1MyIsInNleHBfYXJnc18yNDkiLCJhcmcyXzI1MiIsImFyZzFfMjUxIiwiYXJnMF8yNTAiLCJyZXMwXzI1MyIsInJlczFfMjU0IiwicmVzMl8yNTUiLCJzZXhwX2FyZ3NfMDY1IiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczFfMDY5Iiwic2V4cF9hcmdzXzIxMyIsImFyZzFfMjE1IiwiYXJnMF8yMTQiLCJyZXMwXzIxNiIsInJlczFfMjE3Iiwic2V4cF9hcmdzXzI0NCIsImFyZzBfMjQ1IiwicmVzMF8yNDYiLCJzZXhwX2FyZ3NfMjM5IiwiYXJnMF8yNDAiLCJzZXhwX2FyZ3NfMDI5IiwiYXJnMl8wMzIiLCJhcmcxXzAzMSIsImFyZzBfMDMwIiwicmVzMF8wMzMiLCJyZXMxXzAzNCIsInJlczJfMDM1Iiwic2V4cF9hcmdzXzI1OCIsImFyZzJfMjYxIiwiYXJnMV8yNjAiLCJhcmcwXzI1OSIsInJlczBfMjYyIiwicmVzMV8yNjMiLCJyZXMyXzI2NCIsImFyZzFfMDc0IiwicmVzMF8wNzUiLCJyZXMxXzA3NiIsInNleHBfYXJnc18xMjAiLCJhcmcxXzEyMiIsImFyZzBfMTIxIiwicmVzMF8xMjMiLCJyZXMxXzEyNCIsInNleHBfYXJnc18xMjciLCJhcmcxXzEyOSIsImFyZzBfMTI4IiwicmVzMV8xMzEiLCJzZXhwX2FyZ3NfMTY2IiwiYXJnMl8xNjkiLCJhcmcxXzE2OCIsImFyZzBfMTY3IiwicmVzMV8xNzEiLCJyZXMyXzE3MiIsInNleHBfYXJnc18xODQiLCJhcmcyXzE4NyIsImFyZzFfMTg2IiwiYXJnMF8xODUiLCJyZXMwXzE4OCIsInJlczFfMTg5IiwicmVzMl8xOTAiLCJzZXhwX2FyZ3NfMTc1IiwiYXJnMl8xNzgiLCJhcmcxXzE3NyIsImFyZzBfMTc2IiwicmVzMF8xNzkiLCJyZXMxXzE4MCIsInJlczJfMTgxIiwiYXJnMl8xOTYiLCJhcmcxXzE5NSIsInJlczBfMTk3IiwicmVzMV8xOTgiLCJyZXMyXzE5OSIsInNleHBfYXJnc18xNDYiLCJhcmcwXzE0NyIsInNleHBfYXJnc18wNzkiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9hcmdzXzEzNCIsInNleHBfMjg3IiwidGFnXzI4OCIsInNleHBfYXJnc18yODkiLCJhcmcyXzI5MiIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MyIsInJlczFfMjk0IiwicmVzMl8yOTUiLCJzZXhwXzMwMCIsInRhZ18zMDEiLCJzZXhwX2FyZ3NfMzAyIiwiYXJnMV8zMDQiLCJhcmcwXzMwMyIsInJlczBfMzA1IiwicmVzMV8zMDYiLCJhcmcxXzMwOCIsImFyZzBfMzA3IiwicmVzMF8zMDkiLCJyZXMxXzMxMCIsImFyZzNfMzE0IiwiYXJnMl8zMTMiLCJhcmcxXzMxMiIsImFyZzBfMzExIiwicmVzMF8zMTUiLCJyZXMxXzMxNiIsInJlczJfMzE3IiwicmVzM18zMTgiLCJhcmcyXzMyMSIsImFyZzFfMzIwIiwiYXJnMF8zMTkiLCJyZXMwXzMyMiIsInJlczFfMzIzIiwicmVzMl8zMjQiLCJhcmcyXzMyNyIsImFyZzFfMzI2IiwiYXJnMF8zMjUiLCJyZXMwXzMyOCIsInJlczFfMzI5IiwicmVzMl8zMzAiLCJhcmcyXzMzMyIsImFyZzFfMzMyIiwiYXJnMF8zMzEiLCJyZXMwXzMzNCIsInJlczFfMzM1IiwicmVzMl8zMzYiLCJhcmcyXzMzOSIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzM0MCIsInJlczFfMzQxIiwicmVzMl8zNDIiLCJzZXhwX29mX2Nhc2UiLCJhcmcxXzM0NCIsImFyZzBfMzQzIiwicmVzMF8zNDUiLCJyZXMxXzM0NiIsImFyZzFfMzQ4IiwicmVzMF8zNDkiLCJyZXMxXzM1MCIsImFyZzFfMzU0IiwicmVzMF8zNTUiLCJyZXMxXzM1NiIsImFyZzJfMzU5IiwiYXJnMV8zNTgiLCJyZXMxXzM2MSIsInJlczJfMzYyIiwiYXJnMl8zNjUiLCJhcmcxXzM2NCIsImFyZzBfMzYzIiwicmVzMV8zNjciLCJyZXMyXzM2OCIsImFyZzNfMzcyIiwicmVzMF8zNzMiLCJyZXMxXzM3NCIsInJlczJfMzc1IiwicmVzM18zNzYiLCJhcmcxXzM3OCIsImFyZzBfMzc3IiwicmVzMF8zNzkiLCJyZXMxXzM4MCIsInJlczBfMzg2IiwiYXJnMV8zODgiLCJhcmcwXzM4NyIsInJlczBfMzg5IiwicmVzMV8zOTAiLCJhcmcwXzM5MSIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJyZXMwXzM5NiIsImFyZzBfMzk3IiwicmVzMF8zOTgiLCJhcmcyXzQwMSIsImFyZzFfNDAwIiwicmVzMF80MDIiLCJyZXMxXzQwMyIsInJlczJfNDA0IiwiYXJnMl80MDciLCJhcmcxXzQwNiIsImFyZzBfNDA1IiwicmVzMV80MDkiLCJyZXMyXzQxMCIsImFyZzJfNDEzIiwiYXJnMV80MTIiLCJhcmcwXzQxMSIsInJlczBfNDE0IiwicmVzMV80MTUiLCJyZXMyXzQxNiIsImFyZzJfNDE5IiwicmVzMF80MjAiLCJyZXMxXzQyMSIsInJlczJfNDIyIiwiYXJnM180MjYiLCJhcmcyXzQyNSIsImFyZzFfNDI0IiwiYXJnMF80MjMiLCJyZXMwXzQyNyIsInJlczFfNDI4IiwicmVzMl80MjkiLCJyZXMzXzQzMCIsImFyZzFfNDM2IiwiYXJnMF80MzUiLCJyZXMwXzQzNyIsInJlczFfNDM4IiwiYXJnMF80MzkiLCJyZXMwXzQ0MCIsImFyZzFfNDQyIiwiYXJnMF80NDEiLCJyZXMwXzQ0MyIsInJlczFfNDQ0IiwiYXJnMF80NDUiLCJyZXMwXzQ0NiIsImFyZzJfNDUxIiwiYXJnMV80NTAiLCJhcmcwXzQ0OSIsInJlczBfNDUyIiwicmVzMV80NTMiLCJyZXMyXzQ1NCIsImFyZzJfNDU3IiwiYXJnMV80NTYiLCJhcmcwXzQ1NSIsInJlczFfNDU5IiwicmVzMl80NjAiLCJhcmcxXzQ2MiIsImFyZzBfNDYxIiwicmVzMV80NjQiLCJhcmczXzQ2OCIsImFyZzJfNDY3IiwiYXJnMV80NjYiLCJhcmcwXzQ2NSIsInJlczBfNDY5IiwicmVzMV80NzAiLCJyZXMyXzQ3MSIsInJlczNfNDcyIiwiYXJnMl80NzUiLCJhcmcxXzQ3NCIsImFyZzBfNDczIiwicmVzMF80NzYiLCJyZXMxXzQ3NyIsInNleHBfb2ZfcnVsZSIsInJlczJfNDc4IiwiYXJnMV80ODAiLCJhcmcwXzQ3OSIsInJlczBfNDgxIiwicmVzMV80ODIiLCJjYXNlX29mX3lvanNvbiIsInJ1bGVfb2ZfeW9qc29uIiwidjIkMTUiLCJ2MSQyNSIsInYxJDI2IiwidjIkMTYiLCJ2MyQxIiwidjMkMiIsInYyJDEzIiwidjIkMTQiLCJ2MyQ1IiwidjIkMTEiLCJ2MiQxMiIsInYzJDYiLCJ2MyQzIiwidjIkOSIsInYyJDEwIiwidjMkNCIsInlvanNvbl9hcmdzJDI1IiwidjIkMjEiLCJ2MSQzOSIsInYwJDUxIiwidjAkNTIiLCJ2MSQ0MCIsInYyJDIyIiwieW9qc29uX2FyZ3MkMjQiLCJ2MSQzNyIsInYwJDQ5IiwidjAkNTAiLCJ2MSQzOCIsInYxJDM1IiwidjEkMzYiLCJ2MSQzMyIsInYxJDM0IiwidjIkMTkiLCJ2MSQzMSIsInYxJDMyIiwidjIkMjAiLCJ2MiQxNyIsInYxJDI5IiwidjEkMzAiLCJ2MiQxOCIsInYxJDI3IiwidjEkMjgiLCJ5b2pzb25fYXJncyQzNCIsInYxJDUxIiwidjAkNjkiLCJ2MCQ3MCIsInYxJDUyIiwieW9qc29uX2FyZ3MkMzMiLCJ2MSQ0OSIsInYwJDY3IiwidjAkNjgiLCJ2MSQ1MCIsInlvanNvbl9hcmdzJDMyIiwidjIkMjkiLCJ2MSQ0NyIsInYwJDY1IiwidjAkNjYiLCJ2MSQ0OCIsInYyJDMwIiwieW9qc29uX2FyZ3MkMzEiLCJ2MiQyNyIsInYxJDQ1IiwidjAkNjMiLCJ2MCQ2NCIsInYxJDQ2IiwidjIkMjgiLCJ5b2pzb25fYXJncyQzMCIsInYyJDI1IiwidjEkNDMiLCJ2MCQ2MSIsInYwJDYyIiwidjEkNDQiLCJ2MiQyNiIsInlvanNvbl9hcmdzJDI5IiwidjIkMjMiLCJ2MSQ0MSIsInYwJDU5IiwidjAkNjAiLCJ2MSQ0MiIsInYyJDI0IiwieW9qc29uX2FyZ3MkMjgiLCJ2MCQ1NyIsInYwJDU4IiwieW9qc29uX2FyZ3MkMjciLCJ2MCQ1NSIsInYwJDU2IiwieW9qc29uX2FyZ3MkMjYiLCJ2MCQ1MyIsInYwJDU0IiwieW9qc29uX29mX2Nhc2UiLCJ5b2pzb25fb2ZfcnVsZSIsImNvbnN0cnVjdG9yX3N0cmluZyIsImNhc3QiLCJhcHBseV9jYXN0cyIsImNhc3RzIiwic3RyaXBfY2FzdHMiLCJwYXJhbSQwIiwidSIsInJ1bGVzIiwic2NydXQiLCJpJDAiLCJ1JDAiLCJzdHJpcF9jYXN0c19ydWxlIiwiZCQwIiwiYiQwIiwiYiQxIiwiYiQyIiwiZCQxIiwiYyQxIiwiYiQzIiwiYiQ0IiwiYXJncyIsImZuIiwiZm4kMCIsImMkMiIsImIkNSIsImEkNCIsImMkMyIsImIkNiIsImEkNSIsImMkNCIsImIkNyIsImEkNiIsImMkNSIsImIkOCIsImEkNyIsImMkNiIsImIkOSIsImEkOCIsImQyIiwiZDEiLCJkMiQwIiwiZDEkMCIsImRzJDAiLCJkJDIiLCJiJDEwIiwiYSQ5IiwiZCQzIiwiZCQ0IiwiZDIkMSIsImQxJDEiLCJjJDciLCJmYXN0X2VxdWFsIiwidTEiLCJpMiIsInUyIiwiaTEiLCJyZWFzb24xIiwiaTIkMCIsInUyJDAiLCJyZWFzb24yIiwiaTEkMCIsInUxJDAiLCJ1MSQxIiwia3cyIiwiaTIkMSIsInUyJDEiLCJrdzEiLCJpMSQxIiwidTEkMiIsImkyJDIiLCJ1MiQyIiwiaTEkMiIsInUxJDMiLCJ0ZXh0MiIsImkyJDMiLCJ1MiQzIiwidGV4dDEiLCJpMSQzIiwidTEkNCIsImNhc2UyIiwiaTIkNCIsInUyJDQiLCJjYXNlMSIsImkxJDQiLCJmYXN0X2VxdWFsX2Nhc2UiLCJzaWdtYTEiLCJkMiQyIiwic2lnbWEyIiwiZDEkMiIsImYxIiwiZDIkMyIsImYyIiwiZDEkMyIsImQxMSIsImQyMiIsImQxMiIsImQyMSIsImQyMiQwIiwiZDEyJDAiLCJkMjEkMCIsImQxMSQwIiwiZjEkMCIsImQyJDQiLCJmMiQwIiwiZDEkNCIsInMyIiwiZDIkNSIsImRwMiQwIiwiZDEkNSIsImQyMiQxIiwiZDEyJDEiLCJkMjEkMSIsImQxMSQxIiwiZjEkMSIsImQyJDYiLCJmMiQxIiwiZDEkNiIsImYxJDIiLCJmMiQyIiwiaWQxIiwiZDIkNyIsImlkMiIsImQxJDciLCJzMSQwIiwiczIkMCIsIm9wMSIsImQyMiQyIiwiZDEyJDIiLCJvcDIiLCJkMjEkMiIsImQxMSQyIiwib3AxJDAiLCJkMjIkMyIsImQxMiQzIiwib3AyJDAiLCJkMjEkMyIsImQxMSQzIiwib3AxJDEiLCJkMjIkNCIsImQxMiQ0Iiwib3AyJDEiLCJkMjEkNCIsImQxMSQ0Iiwib3AxJDIiLCJkMjIkNSIsImQxMiQ1Iiwib3AyJDIiLCJkMjEkNSIsImQxMSQ1IiwiZHMyIiwiZHMxIiwiZDExJDYiLCJkMjIkNiIsImQxMiQ2IiwiZDIxJDYiLCJkczEkMCIsImRzMiQwIiwiZDEkOCIsImQyJDgiLCJjYXNlMSQwIiwiY2FzZTIkMCIsInR5MjIiLCJ0eTEyIiwiZDIkOSIsInR5MjEiLCJ0eTExIiwiZDEkOSIsImQxJDEwIiwicmVhc29uMiQwIiwiZDIkMTAiLCJyZWFzb24xJDAiLCJjMSIsImQyMyIsImQyMiQ3IiwiZDIxJDciLCJjMiIsImQxMyIsImQxMiQ3IiwiZDExJDciLCJydWxlczIiLCJydWxlczEiLCJzZXhwXzQ5OCIsImZpZWxkX3NleHBzXzQ5OSIsInBhdF81MDAiLCJhY3RfNTAyIiwiZHVwbGljYXRlc181MDQiLCJleHRyYV81MDUiLCJpdGVyXzUxMiIsInNleHBfNDk4JDAiLCJmaWVsZF9zZXhwc181MDgiLCJmaWVsZF9uYW1lXzUwNiIsInRhaWxfNTEzIiwiZmllbGRfc2V4cF81MDckMiIsImZpZWxkX3NleHBfNTA3IiwieF81MTQiLCJmaWVsZF9zZXhwXzUwNyQwIiwiZnZhbHVlXzUxMCIsImZpZWxkX3NleHBfNTA3JDEiLCJmdmFsdWVfNTA5IiwiYWN0XzUwMyIsInBhdF81MDEiLCJhY3RfNTE4IiwicGF0XzUxNiIsImFyZ181MTkiLCJibmRzXzUxNSIsImFyZ181MTciLCJibmRzXzUxNSQwIiwicGF0X2ZpZWxkIiwiYWN0X2ZpZWxkIiwiYWN0X3ZhbHVlIiwicGF0X3ZhbHVlIiwidl9hY3QiLCJ2X3BhdCIsInBhdCIsImFjdCIsImZhc3RfZXF1YWwkMCIsInN0cmlwX2Nhc3RzJDAiLCJ0X29mX3NleHAkNSIsInNleHBfNTI0IiwidGFnXzUyNSIsInNleHBfYXJnc181MzEiLCJhcmcxXzUzMyIsImFyZzBfNTMyIiwicmVzMF81MzQiLCJyZXMxXzUzNSIsInNleHBfYXJnc181MjYiLCJhcmcwXzUyNyIsInJlczBfNTI4Iiwic2V4cF9vZl90JDUiLCJhcmcwXzUzNiIsInJlczBfNTM3IiwiYXJnMV81MzkiLCJyZXMwXzU0MCIsInJlczFfNTQxIiwiZmFzdF9lcXVhbCQxIiwiZmx0MSIsImZsdDIiLCJhY3QxIiwiaWR4MSIsImFjdDIiLCJpZHgyIiwic3RyaXBfY2FzdHMkMSIsImZsdCIsImlkeCIsIm1hcHBlciIsInRfb2Zfc2V4cCQ2IiwieF81NDMiLCJzZXhwX29mX3QkNiIsInhfNTQ0IiwidF9vZl95b2pzb24kNSIsInlvanNvbl9vZl90JDUiLCJleHRlbmRzJDAiLCJzZXhwX2FyZ3NfMDQyIiwiYXJnMF8wNDMiLCJyZXMwXzA0NCIsImFyZzFfMDU5IiwicmVzMF8wNzIiLCJhcmcwXzA3NSIsInJlczBfMDc2IiwiYXJnMF8wNzciLCJyZXMwXzA3OCIsImFyZzBfMDc5IiwiYXJnMF8wODEiLCJyZXMwXzA4MiIsImFyZzBfMDgzIiwicmVzMF8wODQiLCJyZXMwXzA4NiIsImFyZzFfMDg4IiwiYXJnMF8wODciLCJyZXMwXzA4OSIsInJlczFfMDkwIiwiYXJnMF8wOTEiLCJyZXMwXzA5MiIsInBwX2J1aWx0aW4iLCJzaG93X2J1aWx0aW4iLCJidWlsdGluX29mX3NleHAiLCJyZXMyXzAyMCIsInNleHBfb2ZfYnVpbHRpbiIsImFyZzFfMDIyIiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJyZXMyXzAzMCIsImJ1aWx0aW5fb2ZfeW9qc29uIiwieW9qc29uX29mX2J1aWx0aW4iLCJ4XzAzMiIsInhfMDMzIiwicHBfZm9ybXMiLCJzaG93X2Zvcm1zIiwiZm9ybXNfb2Zfc2V4cCIsInhfMDM1Iiwic2V4cF9vZl9mb3JtcyIsImZvcm1zX29mX3lvanNvbiIsInlvanNvbl9vZl9mb3JtcyIsImNvbnN0JDAiLCJidWlsdGlucyIsImltcGwiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsImVwc2lsb25fZmxvYXQiLCJwaSIsIm1heF9pbnQiLCJtaW5faW50IiwidW5hcnkiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInN0cmluZ19vZl9pbnQiLCJzdHJpbmdfb2ZfZmxvYXQiLCJzdHJpbmdfb2ZfYm9vbCIsImludF9vZl9mbG9hdCIsImZsb2F0X29mX2ludCIsImFicyIsImZsb2F0X29wIiwiYWJzX2Zsb2F0IiwiY2VpbCIsImZsb29yIiwic3FydCIsImV4cCIsImxvZyIsImxvZzEwIiwic2luIiwiY29zIiwidGFuIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiY29udmVydCIsImludF9vZl9zdHJpbmciLCJmbG9hdF9vZl9zdHJpbmciLCJib29sX29mX3N0cmluZyIsImludF9tb2QiLCJzdHJpbmdfbGVuZ3RoIiwic3RyaW5nX2NvbXBhcmUiLCJzdHJpbmdfdHJpbSIsInN0cmluZ19vZiIsInN0cmluZ19jb25jYXQiLCJzdHJpbmdfc3ViIiwibGVuIiwibWV0YV9jb25zX21hcCIsIm1ldGEiLCJjdHhfaW5pdCIsImZvcm1zX2luaXQiLCJlbnZfaW5pdCIsImVycm9yX3NvdXJjZV8wNzciLCJzaG93X2Nhc2VfY2xhdXNlc18wMDQiLCJzaG93X2ZuX2JvZGllc18wMDYiLCJzaG93X2ZpeHBvaW50c18wMDgiLCJzaG93X2Nhc3RzXzAxMCIsInNob3dfbG9va3VwX3N0ZXBzXzAxMiIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzAxNCIsInN0ZXBwZXJfaGlzdG9yeV8wMTYiLCJzaG93X3NldHRpbmdzXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfbmFtZV8wMjIiLCJmaWVsZF9zZXhwXzAyMyQ4IiwiZmllbGRfc2V4cF8wMjMiLCJmaWVsZF9zZXhwXzAyMyQwIiwiZmllbGRfc2V4cF8wMjMkMSIsImZ2YWx1ZV8wMjciLCJmaWVsZF9zZXhwXzAyMyQyIiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjgiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZmllbGRfc2V4cF8wMjMkNSIsImZpZWxkX3NleHBfMDIzJDYiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNyIsInNob3dfc2V0dGluZ3NfMDE5Iiwic3RlcHBlcl9oaXN0b3J5XzAxNyIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzAxNSIsInNob3dfbG9va3VwX3N0ZXBzXzAxMyIsInNob3dfY2FzdHNfMDExIiwic2hvd19maXhwb2ludHNfMDA5Iiwic2hvd19mbl9ib2RpZXNfMDA3Iiwic2hvd19jYXNlX2NsYXVzZXNfMDA1Iiwic2hvd19zZXR0aW5nc18wNTIiLCJzdGVwcGVyX2hpc3RvcnlfMDUwIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfMDQ4Iiwic2hvd19sb29rdXBfc3RlcHNfMDQ2Iiwic2hvd19jYXN0c18wNDQiLCJzaG93X2ZpeHBvaW50c18wNDIiLCJzaG93X2ZuX2JvZGllc18wNDAiLCJzaG93X2Nhc2VfY2xhdXNlc18wMzgiLCJhcmdfMDUxIiwiYXJnXzA0OSIsImJuZHNfMDM3JDIiLCJibmRzXzAzNyQzIiwiYm5kc18wMzckNCIsImJuZHNfMDM3JDUiLCJibmRzXzAzNyQ2Iiwic2hvd19jYXNlX2NsYXVzZXNfZmllbGQiLCJzaG93X2ZuX2JvZGllc19maWVsZCIsInNob3dfZml4cG9pbnRzX2ZpZWxkIiwic2hvd19jYXN0c19maWVsZCIsInNob3dfbG9va3VwX3N0ZXBzX2ZpZWxkIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfZmllbGQiLCJzdGVwcGVyX2hpc3RvcnlfZmllbGQiLCJzaG93X3NldHRpbmdzX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2Iiwic2hvd19zZXR0aW5nc192YWx1ZSIsInN0ZXBwZXJfaGlzdG9yeV92YWx1ZSIsInNob3dfc3RlcHBlcl9maWx0ZXJzX3ZhbHVlIiwic2hvd19sb29rdXBfc3RlcHNfdmFsdWUiLCJzaG93X2Nhc3RzX3ZhbHVlIiwic2hvd19maXhwb2ludHNfdmFsdWUiLCJzaG93X2ZuX2JvZGllc192YWx1ZSIsInNob3dfY2FzZV9jbGF1c2VzX3ZhbHVlIiwidl9zaG93X3NldHRpbmdzIiwidl9zdGVwcGVyX2hpc3RvcnkiLCJ2X3Nob3dfc3RlcHBlcl9maWx0ZXJzIiwidl9zaG93X2xvb2t1cF9zdGVwcyIsInZfc2hvd19jYXN0cyIsInZfc2hvd19maXhwb2ludHMiLCJ2X3Nob3dfZm5fYm9kaWVzIiwidl9zaG93X2Nhc2VfY2xhdXNlcyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsInNleHBfMDU1IiwiZmllbGRfc2V4cHNfMDU2Iiwic3RhdGljc18wNTciLCJlbGFib3JhdGVfMDU5IiwiYXNzaXN0XzA2MSIsImR5bmFtaWNzXzA2MyIsImV2YWx1YXRpb25fMDY1IiwiZHVwbGljYXRlc18wNjciLCJleHRyYV8wNjgiLCJpdGVyXzA3OCIsInNleHBfMDU1JDAiLCJmaWVsZF9zZXhwc18wNzEiLCJmaWVsZF9uYW1lXzA2OSIsInRhaWxfMDc5IiwiZmllbGRfc2V4cF8wNzAkNSIsImZpZWxkX3NleHBfMDcwIiwieF8wODAiLCJmaWVsZF9zZXhwXzA3MCQwIiwiZnZhbHVlXzA3NiIsImZpZWxkX3NleHBfMDcwJDEiLCJmdmFsdWVfMDcyIiwiZmllbGRfc2V4cF8wNzAkMiIsImZ2YWx1ZV8wNzUiLCJmaWVsZF9zZXhwXzA3MCQzIiwiZnZhbHVlXzA3MyIsImZpZWxkX3NleHBfMDcwJDQiLCJmdmFsdWVfMDc0IiwiZXZhbHVhdGlvbl8wNjYiLCJkeW5hbWljc18wNjQiLCJhc3Npc3RfMDYyIiwiZWxhYm9yYXRlXzA2MCIsInN0YXRpY3NfMDU4IiwiZXZhbHVhdGlvbl8wOTAiLCJkeW5hbWljc18wODgiLCJhc3Npc3RfMDg2IiwiZWxhYm9yYXRlXzA4NCIsInN0YXRpY3NfMDgyIiwiYXJnXzA5MSIsImJuZHNfMDgxIiwiYXJnXzA4OSIsImJuZHNfMDgxJDAiLCJhcmdfMDg3IiwiYm5kc18wODEkMSIsImFyZ18wODUiLCJibmRzXzA4MSQyIiwiYXJnXzA4MyIsImJuZHNfMDgxJDMiLCJzdGF0aWNzX2ZpZWxkIiwiZWxhYm9yYXRlX2ZpZWxkIiwiYXNzaXN0X2ZpZWxkIiwiZHluYW1pY3NfZmllbGQiLCJldmFsdWF0aW9uX2ZpZWxkIiwiZXZhbHVhdGlvbl92YWx1ZSIsImR5bmFtaWNzX3ZhbHVlIiwiYXNzaXN0X3ZhbHVlIiwiZWxhYm9yYXRlX3ZhbHVlIiwic3RhdGljc192YWx1ZSIsInZfZXZhbHVhdGlvbiIsInZfZHluYW1pY3MiLCJ2X2Fzc2lzdCIsInZfZWxhYm9yYXRlIiwidl9zdGF0aWNzIiwib2ZmIiwib24iLCJlcnJvcl9zb3VyY2VfMDM1IiwiZXJyb3Jfc291cmNlXzM5MyIsInJlczBfMDI2IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsIl8xMDgiLCJfMTA3IiwiXzEwNiIsIl8xMDUiLCJfMTA0IiwiXzEwMyIsIl8xMDIiLCJfMTAxIiwiXzEwMCIsIl85OSIsIl85OCIsIl85NyIsIl85NiIsIl85NSIsIl85NCIsIl85MyIsIl85MiIsIl85MSIsIl85MCIsIl84OSIsIl84OCIsIl84NyIsIl84NiIsIl84NSIsIl84NCIsIl84MyIsIl84MiIsIl84MSIsIl84MCIsIl83OSIsIl83OCIsIl83NyIsIl83NiIsIl83NSIsIl83NCIsImE0IiwiYTMkMyIsImExJDI2IiwiYTEkMjciLCJhMSQyOCIsImEzJDQiLCJhMiQxNSIsImExJDI5IiwiYTIkMTYiLCJhMSQzMCIsImEyJDE3IiwiYTEkMzEiLCJhMSQzMiIsImE0JDAiLCJhMyQ1IiwiYTIkMTgiLCJhMSQzMyIsImEyJDE5IiwiYTEkMzQiLCJhMCQzNSIsImE2IiwiYTUiLCJhNCQxIiwiYTMkNiIsImEyJDIwIiwiYTEkMzUiLCJhMCQzNiIsInNleHBfMDM3IiwidGFnXzAzOCIsImFyZzJfMDk5IiwiYXJnMV8wOTgiLCJyZXMxXzEwMSIsInJlczJfMTAyIiwiYXJnMV8yODQiLCJyZXMwXzI4NSIsInJlczFfMjg2IiwicmVzMF8yOTIiLCJyZXMxXzI5MyIsInNleHBfYXJnc18yNTAiLCJhcmc0XzI2MCIsImFyZzNfMjU5IiwiYXJnMl8yNTgiLCJhcmcxXzI1NyIsImFyZzBfMjU2IiwicmVzMF8yNjEiLCJyZXMxXzI2MiIsInJlczJfMjYzIiwicmVzM18yNjQiLCJhcmcxXzI1MiIsImFyZzBfMjUxIiwicmVzNF8yNjUiLCJzZXhwX2FyZ3NfMzAzIiwiYXJnM18zMDciLCJhcmcyXzMwNiIsImFyZzFfMzA1IiwiYXJnMF8zMDQiLCJyZXMwXzMwOCIsInJlczFfMzA5IiwicmVzMl8zMTAiLCJyZXMzXzMxMSIsInNleHBfYXJnc18yOTYiLCJhcmcxXzI5OCIsImFyZzBfMjk3IiwicmVzMF8yOTkiLCJyZXMxXzMwMCIsInNleHBfYXJnc18wNTMiLCJzZXhwX2FyZ3NfMDYwIiwiYXJnMV8wNjIiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzI0MyIsImFyZzFfMjQ1IiwiYXJnMF8yNDQiLCJyZXMxXzI0NyIsInNleHBfYXJnc18yMjQiLCJyZXMwXzIzMiIsImFyZzFfMjI2IiwiYXJnMF8yMjUiLCJyZXMwXzIyNyIsInJlczFfMjI4IiwicmVzMV8yMzMiLCJzZXhwX2FyZ3NfMDg1IiwiYXJnM18wODkiLCJhcmcyXzA4OCIsImFyZzFfMDg3IiwiYXJnMF8wODYiLCJyZXMxXzA5MSIsInJlczJfMDkyIiwicmVzM18wOTMiLCJzZXhwX2FyZ3NfMTE5IiwiYXJnM18xMjMiLCJhcmcyXzEyMiIsImFyZzFfMTIxIiwiYXJnMF8xMjAiLCJyZXMwXzEyNCIsInJlczFfMTI1IiwicmVzMl8xMjYiLCJyZXMzXzEyNyIsInNleHBfYXJnc18xMzAiLCJhcmczXzEzNCIsImFyZzJfMTMzIiwiYXJnMV8xMzIiLCJyZXMwXzEzNSIsInJlczFfMTM2IiwicmVzMl8xMzciLCJyZXMzXzEzOCIsInNleHBfYXJnc18xNDEiLCJhcmczXzE0NSIsImFyZzJfMTQ0IiwiYXJnMV8xNDMiLCJyZXMwXzE0NiIsInJlczFfMTQ3IiwicmVzMl8xNDgiLCJyZXMzXzE0OSIsInNleHBfYXJnc18zNjIiLCJzZXhwX2FyZ3NfMzcxIiwiYXJnNl8zODMiLCJhcmc1XzM4MiIsImFyZzRfMzgxIiwiYXJnM18zODAiLCJhcmcyXzM3OSIsInJlczBfMzg0IiwicmVzMV8zODUiLCJyZXMyXzM4NiIsInJlczNfMzg3IiwicmVzNF8zODgiLCJhcmcxXzM3MyIsImFyZzBfMzcyIiwicmVzMF8zNzQiLCJyZXMxXzM3NSIsInJlczVfMzg5IiwicmVzNl8zOTAiLCJzZXhwX2FyZ3NfMzMyIiwiYXJnMV8zMzQiLCJhcmcwXzMzMyIsInJlczBfMzM1IiwicmVzMV8zMzYiLCJhcmcyXzA3MCIsImFyZzFfMDY5IiwicmVzMF8wNzEiLCJyZXMxXzA3MiIsInJlczJfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzJfMDc5IiwiYXJnMV8wNzgiLCJyZXMyXzA4MiIsInNleHBfYXJnc18yMDYiLCJhcmcyXzIwOSIsImFyZzFfMjA4IiwiYXJnMF8yMDciLCJyZXMwXzIxMCIsInJlczFfMjExIiwicmVzMl8yMTIiLCJhcmcyXzIxOCIsImFyZzFfMjE3IiwicmVzMF8yMTkiLCJyZXMxXzIyMCIsInJlczJfMjIxIiwic2V4cF9hcmdzXzMxNCIsImFyZzJfMzE3IiwiYXJnMV8zMTYiLCJhcmcwXzMxNSIsInJlczBfMzE4IiwicmVzMV8zMTkiLCJyZXMyXzMyMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzFfMjcwIiwicmVzMF8yNzEiLCJyZXMxXzI3MiIsInNleHBfYXJnc18yNzUiLCJhcmcxXzI3NyIsImFyZzBfMjc2IiwicmVzMF8yNzgiLCJyZXMxXzI3OSIsInNleHBfYXJnc18zMzkiLCJhcmcwXzM0MCIsInJlczBfMzQxIiwic2V4cF9hcmdzXzM0NCIsImFyZzRfMzU0IiwiYXJnM18zNTMiLCJhcmcyXzM1MiIsImFyZzFfMzUxIiwiYXJnMF8zNTAiLCJyZXMyXzM1NyIsImFyZzFfMzQ2IiwicmVzMF8zNDciLCJyZXMxXzM0OCIsInJlczNfMzU4IiwicmVzNF8zNTkiLCJzZXhwX2FyZ3NfMzIzIiwiYXJnMl8zMjYiLCJhcmcxXzMyNSIsImFyZzBfMzI0IiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5Iiwic2V4cF9hcmdzXzA0NiIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMxXzA1MCIsInNleHBfYXJnc18xMDUiLCJzZXhwX2FyZ3NfMTEyIiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzIzNiIsImFyZzFfMjM4IiwiYXJnMF8yMzciLCJyZXMwXzIzOSIsInJlczFfMjQwIiwic2V4cF9hcmdzXzE1MiIsImFyZzJfMTU1IiwiYXJnMV8xNTQiLCJyZXMxXzE1NyIsInJlczJfMTU4IiwiYXJnMl8xNjQiLCJhcmcxXzE2MyIsInJlczFfMTY2IiwicmVzMl8xNjciLCJhcmcyXzE5MSIsImFyZzFfMTkwIiwicmVzMF8xOTIiLCJyZXMxXzE5MyIsInJlczJfMTk0Iiwic2V4cF9hcmdzXzE5NyIsImFyZzJfMjAwIiwiYXJnMV8xOTkiLCJhcmcwXzE5OCIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInNleHBfYXJnc18xNzAiLCJhcmcyXzE3MyIsImFyZzFfMTcyIiwiYXJnMF8xNzEiLCJyZXMwXzE3NCIsInJlczFfMTc1IiwicmVzMl8xNzYiLCJzZXhwX2FyZ3NfMTc5IiwiYXJnMl8xODIiLCJhcmcxXzE4MSIsImFyZzBfMTgwIiwicmVzMF8xODMiLCJyZXMxXzE4NCIsInJlczJfMTg1Iiwic2V4cF8zOTUiLCJ0YWdfMzk2Iiwic2V4cF9hcmdzXzM5NyIsImFyZzJfNDAwIiwiYXJnMV8zOTkiLCJhcmcwXzM5OCIsInJlczBfNDAxIiwicmVzMV80MDIiLCJyZXMyXzQwMyIsInJlczBfNDA3IiwicmVzMV80MDgiLCJhcmcyXzQyOSIsInJlczBfNDMwIiwicmVzMV80MzEiLCJyZXMyXzQzMiIsImFyZzNfNDM2IiwiYXJnMl80MzUiLCJhcmcxXzQzNCIsImFyZzBfNDMzIiwicmVzMl80MzkiLCJyZXMzXzQ0MCIsImFyZzJfNDQzIiwicmVzMF80NDQiLCJyZXMxXzQ0NSIsInJlczJfNDQ2IiwiYXJnMV80NDgiLCJyZXMwXzQ0OSIsInJlczFfNDUwIiwiYXJnMV80NTIiLCJhcmcwXzQ1MSIsInJlczFfNDU0IiwiYXJnM180NTgiLCJyZXMwXzQ1OSIsInJlczFfNDYwIiwicmVzMl80NjEiLCJyZXMzXzQ2MiIsImFyZzNfNDY2IiwiYXJnMl80NjUiLCJhcmcxXzQ2NCIsImFyZzBfNDYzIiwicmVzMF80NjciLCJyZXMxXzQ2OCIsInJlczJfNDY5IiwicmVzM180NzAiLCJhcmczXzQ3NCIsImFyZzJfNDczIiwiYXJnMV80NzIiLCJhcmcwXzQ3MSIsInJlczBfNDc1IiwicmVzMV80NzYiLCJyZXMyXzQ3NyIsInJlczNfNDc4IiwiYXJnMl80ODEiLCJyZXMwXzQ4MiIsInJlczFfNDgzIiwicmVzMl80ODQiLCJhcmcyXzQ4NyIsImFyZzFfNDg2IiwiYXJnMF80ODUiLCJyZXMwXzQ4OCIsInJlczFfNDg5IiwicmVzMl80OTAiLCJhcmcyXzQ5MyIsImFyZzFfNDkyIiwiYXJnMF80OTEiLCJyZXMwXzQ5NCIsInJlczFfNDk1IiwicmVzMl80OTYiLCJhcmcyXzQ5OSIsImFyZzFfNDk4IiwiYXJnMF80OTciLCJyZXMxXzUwMSIsInJlczJfNTAyIiwiYXJnMl81MDUiLCJhcmcxXzUwNCIsImFyZzBfNTAzIiwicmVzMF81MDYiLCJyZXMxXzUwNyIsInJlczJfNTA4IiwiYXJnMl81MTEiLCJyZXMwXzUxMiIsInJlczFfNTEzIiwicmVzMl81MTQiLCJhcmcyXzUxNyIsImFyZzFfNTE2IiwiYXJnMF81MTUiLCJyZXMyXzUyMCIsImFyZzJfNTIzIiwiYXJnMV81MjIiLCJhcmcwXzUyMSIsInJlczBfNTI0IiwicmVzMV81MjUiLCJyZXMyXzUyNiIsImFyZzFfNTMyIiwiYXJnMF81MzEiLCJyZXMwXzUzMyIsImFyZzFfNTI4IiwicmVzMF81MjkiLCJyZXMxXzUzMCIsInJlczFfNTM0IiwiYXJnMV81MzYiLCJhcmcwXzUzNSIsInJlczFfNTM4IiwiYXJnMV81NDAiLCJhcmcwXzUzOSIsInJlczFfNTQyIiwiYXJnNF81NTEiLCJhcmczXzU1MCIsImFyZzJfNTQ5IiwiYXJnMV81NDgiLCJhcmcwXzU0NyIsInJlczBfNTUyIiwicmVzMV81NTMiLCJyZXMyXzU1NCIsInJlczNfNTU1IiwiYXJnMV81NDQiLCJhcmcwXzU0MyIsInJlczFfNTQ2IiwicmVzNF81NTYiLCJhcmcxXzU1OCIsImFyZzBfNTU3IiwicmVzMV81NjAiLCJhcmcxXzU2MiIsImFyZzBfNTYxIiwicmVzMV81NjQiLCJhcmcxXzU2NiIsImFyZzBfNTY1IiwicmVzMF81NjciLCJyZXMxXzU2OCIsImFyZzFfNTcwIiwiYXJnMF81NjkiLCJyZXMwXzU3MSIsInJlczFfNTcyIiwiYXJnMV81NzQiLCJhcmcwXzU3MyIsInJlczBfNTc1IiwicmVzMV81NzYiLCJhcmczXzU4MCIsImFyZzJfNTc5IiwiYXJnMV81NzgiLCJhcmcwXzU3NyIsInJlczBfNTgxIiwicmVzMV81ODIiLCJyZXMyXzU4MyIsInJlczNfNTg0IiwiYXJnMl81ODciLCJhcmcxXzU4NiIsImFyZzBfNTg1IiwicmVzMF81ODgiLCJyZXMxXzU4OSIsInJlczJfNTkwIiwiYXJnMl81OTMiLCJhcmcxXzU5MiIsImFyZzBfNTkxIiwicmVzMF81OTQiLCJyZXMxXzU5NSIsInJlczJfNTk2IiwiYXJnMV81OTgiLCJhcmcwXzU5NyIsInJlczBfNTk5IiwicmVzMV82MDAiLCJhcmcwXzYwMSIsInJlczBfNjAyIiwiYXJnNF82MTEiLCJhcmczXzYxMCIsImFyZzJfNjA5IiwiYXJnMV82MDgiLCJhcmcwXzYwNyIsInJlczBfNjEyIiwicmVzMV82MTMiLCJyZXMyXzYxNCIsImFyZzFfNjA0IiwiYXJnMF82MDMiLCJyZXMxXzYwNiIsInJlczNfNjE1IiwicmVzNF82MTYiLCJhcmcyXzYxOSIsImFyZzFfNjE4IiwiYXJnMF82MTciLCJyZXMwXzYyMCIsInJlczFfNjIxIiwicmVzMl82MjIiLCJhcmc2XzYzMyIsImFyZzVfNjMyIiwiYXJnNF82MzEiLCJhcmczXzYzMCIsImFyZzJfNjI5IiwiYXJnMV82MjgiLCJhcmcwXzYyNyIsInJlczFfNjM1IiwicmVzMl82MzYiLCJyZXMzXzYzNyIsInJlczRfNjM4IiwiYXJnMV82MjQiLCJhcmcwXzYyMyIsInJlczBfNjI1IiwicmVzMV82MjYiLCJyZXM1XzYzOSIsInJlczZfNjQwIiwiYXJnMl82NDMiLCJhcmcxXzY0MiIsImFyZzBfNjQxIiwicmVzMF82NDQiLCJyZXMxXzY0NSIsInJlczJfNjQ2IiwidjQiLCJ2NCQwIiwidjMkMTEiLCJ2MyQxMiIsInYzJDkiLCJ2MyQxMCIsInYzJDciLCJ2MyQ4IiwidjYiLCJ2NSIsInY0JDEiLCJ2NCQyIiwidjUkMCIsInY2JDAiLCJ2MSQ2MSIsInYxJDYyIiwidjEkNTkiLCJ2MSQ2MCIsInYxJDU3IiwidjEkNTgiLCJ2MSQ1NSIsInYxJDU2IiwidjEkNTMiLCJ2MSQ1NCIsInY0JDMiLCJ2MyQxMyIsInYzJDE0IiwidjQkNCIsInlvanNvbl9hcmdzJDM2IiwidjEkNzkiLCJ2MCQ4MSIsInYwJDgyIiwidjEkODAiLCJ5b2pzb25fYXJncyQzNSIsInYxJDc3IiwidjAkNzkiLCJ2MCQ4MCIsInYxJDc4IiwidjEkNzUiLCJ2MCQ3NyIsInYwJDc4IiwidjEkNzYiLCJ2MiQ0MSIsInYxJDczIiwidjAkNzUiLCJ2MCQ3NiIsInYxJDc0IiwidjIkNDIiLCJ2MiQzOSIsInYxJDcxIiwidjAkNzMiLCJ2MCQ3NCIsInYxJDcyIiwidjIkNDAiLCJ2MiQzNyIsInYxJDY5IiwidjAkNzEiLCJ2MCQ3MiIsInYxJDcwIiwidjIkMzgiLCJ2MiQzNSIsInYxJDY3IiwidjEkNjgiLCJ2MiQzNiIsInYyJDMzIiwidjEkNjUiLCJ2MSQ2NiIsInYyJDM0IiwidjIkMzEiLCJ2MSQ2MyIsInYxJDY0IiwidjIkMzIiLCJmdXp6eV9tYXJrIiwidW53cmFwIiwibGQiLCJsZCQwIiwic2NydXQkMCIsImN0eCQzIiwiY3R4JDIiLCJjdHgkMSIsImNvbnN0X3Vua25vd24iLCJjYXN0X3N1bV9tYXBzIiwidHlzMSQwIiwidHlzMiQwIiwibWF0Y2hlcyQwIiwibjEkMCIsIm4yJDAiLCJiMSIsImIyIiwiZCQ1IiwiZCQ2IiwibWF0Y2hlcyIsImVudiQwIiwiZCQ3IiwibWF0Y2hlc19jYXN0X1R1cGxlIiwidHlzJDAiLCJ0eXMkMSIsImQkOCIsImNhc3RtYXAiLCJtYXRjaGVzX2Nhc3RfU3VtIiwiZCQxMCIsImQkOSIsImRwX29wdCIsImN0ciQxIiwic20xJDAiLCJzbTIkMCIsImNhc3RtYXAkMCIsIm1hdGNoZXNfY2FzdF9Db25zIiwiY2FzdG1hcHMiLCJjYXN0bWFwcyQwIiwic2lkZV9jYXN0cyIsImNhc3RtYXBzJDEiLCJlbHRfY2FzdHMiLCJlbHRfY2FzdHMkMCIsImVsdF9jYXN0cyQxIiwidHlzJDIiLCJlbHRfY2FzdHMkMiIsInR5cyQzIiwiZWx0X2Nhc3RzJDMiLCJkdGwiLCJkaGQiLCJsc3QiLCJtYXRjaDEiLCJtYXRjaDIiLCJsaXN0X2Nhc3RzIiwiZHB0bCIsImRwaGQiLCJlbnYxJDAiLCJsaXN0X2Nhc3RzJDAiLCJlbnYyJDAiLCJkcDIkMSIsImVudjEkMSIsImxpc3RfY2FzdHMkMSIsImVudjIkMSIsInBwX2luc3RhbmNlX3JlcG9ydCIsInNob3dfaW5zdGFuY2VfcmVwb3J0IiwiaW5zdGFuY2VfcmVwb3J0X29mX3NleHAiLCJzZXhwX29mX2luc3RhbmNlX3JlcG9ydCIsImluc3RhbmNlX3JlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfaW5zdGFuY2VfcmVwb3J0Iiwiam9pbnRfc3RhdHVzIiwicmVwb3J0cyIsInBwX3JlcG9ydCIsInNob3dfcmVwb3J0IiwicmVwb3J0X29mX3NleHAiLCJzZXhwX29mX3JlcG9ydCIsInJlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVwb3J0IiwieF8wMjQiLCJ4XzAyNSIsImxvb2t1cF9hbmRfam9pbiIsInRlc3RfbWFwIiwicmVwb3J0IiwiY291bnRfc3RhdHVzIiwic3RhdHVzIiwiaW5zdGFuY2VzIiwiZ3JvdW5kZWRfQXJyb3ciLCJncm91bmRlZF9MaXN0IiwicHBfc3RlcF9raW5kIiwic2hvd19zdGVwX2tpbmQiLCJzdGVwX2tpbmRfb2Zfc2V4cCIsInNleHBfb2Zfc3RlcF9raW5kIiwicmVzMF8wNDAiLCJyZXMwXzA0NiIsInN0ZXBfa2luZF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcF9raW5kIiwiZ3JvdW5kX2Nhc2VzX29mX3NleHAiLCJzZXhwXzA1MSIsInRhZ18wNTIiLCJzZXhwX29mX2dyb3VuZF9jYXNlcyIsInJlczBfMDU3IiwiZ3JvdW5kZWRfUHJvZCIsImdyb3VuZGVkX1N1bSIsImdyb3VuZF9jYXNlc19vZiIsImlzX2dyb3VuZF9hcmciLCJldmFsdWF0ZV9leHRlbmRfZW52IiwibmV3X2JpbmRpbmdzIiwidG9fZXh0ZW5kIiwibGV0X21hdGNoIiwibWF0Y2hfcmVzdWx0IiwidHJhbnNpdGlvbiIsInJlcSIsInN0YXRlIiwicmVhc29uIiwiZDMiLCJpZGVudCIsImQzJDAiLCJidWlsdGluIiwib3AkMCIsIm9wJDEiLCJkMSQxMSIsImQxJDEyIiwidHMyIiwiZDEkMTMiLCJ0Ml9ncm91bmRlZCIsInQzIiwidDFfZ3JvdW5kZWQiLCJkMSQxNCIsImQxJDE1Iiwic2hvdWxkX2hpZGVfc3RlcCIsInNldHRpbmdzIiwiY29tYmluZSIsInIyIiwiYjIkMCIsInJlcV92YWx1ZSIsInZjIiwicmVxX2FsbF92YWx1ZSIsInJlcV9maW5hbCIsInJlcV9hbGxfZmluYWwiLCJvdGhlcndpc2UiLCJydWxlIiwidXBkYXRlX3Rlc3QiLCJjaGVja192YWx1ZSIsImNoZWNrX3ZhbHVlJDAiLCJjaGVja192YWx1ZV9tb2RfY3R4IiwiY2hlY2tfdmFsdWVfbW9kX2N0eCQwIiwiaXNfZXhwYW5kZXJfdG9rIiwidHJpbV9sYXN0IiwiaXNfZXhwYW5kZXIiLCJtYXJrIiwiY29tcGxldGlvbiIsImlkXzAwNCIsImV4cGVjdGVkX3R5XzAwNiIsImV4cGVjdGVkX3R5XzAwNyIsImV4cGVjdGVkX3R5XzAyMiIsImlkXzAyMCIsImV4cGVjdGVkX3R5X2ZpZWxkIiwiZXhwZWN0ZWRfdHlfdmFsdWUiLCJ2X2V4cGVjdGVkX3R5IiwieF8wMjYiLCJjb19jdHgiLCJjb19jdHgxIiwiY29fY3R4MiIsInVuaW9uIiwiZXhwZWN0ZWRfdHkiLCJlbnRyaWVzIiwiZXhwZWN0ZWRfdHlzIiwiYW5hIiwidHlfb2YiLCJvZl9hcnJvdyIsIm9mX3Byb2QiLCJvZl9jb25zX2hkIiwib2ZfY29uc190bCIsImhkX3R5Iiwib2ZfbGlzdF9jb25jYXQiLCJvZl9saXN0X2xpdCIsImN0cl9hbmFfdHlwIiwidHlfYW5hIiwidHlfZW50cnkiLCJvZl9jdHJfaW5fYXAiLCJvZl9hcCIsIm1vZGUkMCIsImVycm9yX3NvdXJjZV8wNjUiLCJlcnJvcl9zb3VyY2VfMDgzIiwicHBfam9pbl90eXBlIiwic2hvd19qb2luX3R5cGUiLCJqb2luX3R5cGVfb2Zfc2V4cCIsInNleHBfb2Zfam9pbl90eXBlIiwiam9pbl90eXBlX29mX3lvanNvbiIsInlvanNvbl9vZl9qb2luX3R5cGUiLCJhc3luX3R5IiwiYW5hbWUiLCJuYW1lXzAzNCIsInN5bl90eV8wMzYiLCJkdXBsaWNhdGVzXzAzOCIsImV4dHJhXzAzOSIsIml0ZXJfMDQ1Iiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wNDIiLCJmaWVsZF9uYW1lXzA0MCIsInRhaWxfMDQ2IiwiZmllbGRfc2V4cF8wNDEkMiIsImZpZWxkX3NleHBfMDQxIiwieF8wNDciLCJmaWVsZF9zZXhwXzA0MSQwIiwiZmllbGRfc2V4cF8wNDEkMSIsInN5bl90eV8wMzciLCJuYW1lXzAzNSIsImFyZzFfMDE4Iiwic3luX3R5XzA2MSIsIm5hbWVfMDU5IiwiYm5kc18wNTgiLCJibmRzXzA1OCQwIiwic3luX3R5X2ZpZWxkIiwic3luX3R5X3ZhbHVlIiwidl9zeW5fdHkiLCJwcF9leHAiLCJzaG93X2V4cCIsImV4cF9vZl9zZXhwIiwic2V4cF8wNjciLCJ0YWdfMDY4Iiwic2V4cF9hcmdzXzA2OSIsImFyZzBfMDcwIiwic2V4cF9hcmdzXzA3NCIsInNleHBfb2ZfZXhwIiwiZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9leHAiLCJwcF9wYXQiLCJzaG93X3BhdCIsInBhdF9vZl9zZXhwIiwic2V4cF8wODUiLCJ0YWdfMDg2Iiwic2V4cF9hcmdzXzA4NyIsImFyZzBfMDg4Iiwic2V4cF9vZl9wYXQiLCJhcmcwXzA5MCIsInJlczBfMDkxIiwicGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9wYXQiLCJqb2luX29mIiwidHlwX29mIiwic3luX3R5IiwidHlwX29mX2V4cCIsInNlbGYiLCJ0eXBfb2ZfcGF0Iiwib2ZfZXhwX3ZhciIsInZhciQwIiwib2ZfY3RyIiwiYWRkX3NvdXJjZSIsImxpc3RsaXQiLCJsaXN0X2NvbmNhdCIsImVycm9yX3NvdXJjZV8wMTEiLCJyZXBfaWQiLCJob2xlIiwidG1zIiwiY2xzX29mX3Rlcm0iLCJpc19hcnJvdyIsInR5cCQxIiwidG9fdHlwIiwidXR5cCIsInV0eXAkMCIsInVzIiwidXR5cCQxIiwidXRzIiwidG9fY3RyX21hcCIsInRvX3ZhcmlhbnQiLCJ1dCIsInBwX2NscyQwIiwiY2xzX29mX3NleHAkMCIsInNleHBfb2ZfY2xzJDAiLCJjbHNfb2ZfeW9qc29uJDAiLCJ5b2pzb25fb2ZfY2xzJDAiLCJyZXBfaWQkMCIsImhvbGUkMCIsImNsc19vZl90ZXJtJDAiLCJzaG93X2NscyQwIiwicHBfY2xzJDEiLCJjbHNfb2Zfc2V4cCQxIiwic2V4cF9vZl9jbHMkMSIsImNsc19vZl95b2pzb24kMSIsInlvanNvbl9vZl9jbHMkMSIsInJlcF9pZCQxIiwiaG9sZSQxIiwiY2xzX29mX3Rlcm0kMSIsInNob3dfY2xzJDEiLCJwYXQkMCIsInBhdCQxIiwiaXNfZnVuX3ZhciIsInBhdCQyIiwiaXNfdHVwbGVfb2ZfYXJyb3dzIiwicGF0cyIsImdldF92YXIiLCJnZXRfZnVuX3ZhciIsImdldF9yZWN1cnNpdmVfYmluZGluZ3MiLCJmdW5fdmFycyIsImN0cl9uYW1lIiwicHBfY2xzJDIiLCJzaG93X2NscyQyIiwiY2xzX29mX3NleHAkMiIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDI0Iiwic2V4cF9vZl9jbHMkMiIsImNsc19vZl95b2pzb24kMiIsInlvanNvbl9vZl9jbHMkMiIsImhvbGUkMiIsInJlcF9pZCQyIiwiY2xzX29mX3Rlcm0kMiIsInNob3dfdW5vcCIsInNob3dfYmlub3AiLCJvcCQyIiwic2hvd19jbHMkMyIsImUkMCIsImUkMSIsImlzX3R1cGxlX29mX2Z1bmN0aW9ucyIsImN0cl9uYW1lJDAiLCJwcF9jbHMkMyIsInNob3dfY2xzJDQiLCJjbHNfb2Zfc2V4cCQzIiwic2V4cF8wMzQiLCJzZXhwX29mX2NscyQzIiwiY2xzX29mX3lvanNvbiQzIiwieW9qc29uX29mX2NscyQzIiwiYW55X2lkcyIsInRlcm0iLCJ0bSIsInJlcF9pZCQzIiwicHAkNSIsInNob3ckNSIsInNleHBfMDM5IiwidGFnXzA0MCIsInNleHBfYXJnc18wNDEiLCJzZXhwX2FyZ3NfMDYxIiwiYXJnMF8wNjIiLCJzZXhwX2FyZ3NfMDY2Iiwic2V4cF9hcmdzXzA1MSIsInNob3ckNiIsImNscyIsImNscyQwIiwiY2xzJDEiLCJjbHMkMiIsImNscyQzIiwiY2xzJDQiLCJjbHMkNSIsImlkcyQwIiwidG0kMCIsInRtJDEiLCJ0bSQyIiwidG0kMyIsInJlcF9pZCQ0IiwiZXJyb3Jfc291cmNlXzA0NiIsImVycm9yX3NvdXJjZV8wNzEiLCJlcnJvcl9zb3VyY2VfMDg5IiwiZXJyb3Jfc291cmNlXzEwNyIsImVycm9yX3NvdXJjZV8xMTgiLCJlcnJvcl9zb3VyY2VfMTcxIiwiZXJyb3Jfc291cmNlXzE5MSIsImVycm9yX3NvdXJjZV8yMDkiLCJlcnJvcl9zb3VyY2VfMjI3IiwiZXJyb3Jfc291cmNlXzI0NSIsImVycm9yX3NvdXJjZV8yNDkiLCJlcnJvcl9zb3VyY2VfMjc1IiwiZXJyb3Jfc291cmNlXzMwNyIsImVycm9yX3NvdXJjZV8zNDciLCJlcnJvcl9zb3VyY2VfMzY1IiwiZXJyb3Jfc291cmNlXzM2OSIsImVycm9yX3NvdXJjZV8zODciLCJlcnJvcl9zb3VyY2VfMzk4IiwiZXJyb3Jfc291cmNlXzQ0OSIsImVycm9yX3NvdXJjZV81MDciLCJlcnJvcl9zb3VyY2VfNTU5IiwiZXJyb3Jfc291cmNlXzYwMSIsInRwX2xvYyQyMSIsImVycm9yX3NvdXJjZV82MzYiLCJ0cF9sb2MkMjIiLCJlcnJvcl9zb3VyY2VfNjUxIiwidHBfbG9jJDIzIiwiZXJyb3Jfc291cmNlXzY5MCIsInRwX2xvYyQyNCIsInBwX2FuY2VzdG9ycyIsInNob3dfYW5jZXN0b3JzIiwiYW5jZXN0b3JzX29mX3NleHAiLCJzZXhwX29mX2FuY2VzdG9ycyIsImFuY2VzdG9yc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfYW5jZXN0b3JzIiwicHBfZXJyb3JfaW5jb25zaXN0ZW50Iiwic2hvd19lcnJvcl9pbmNvbnNpc3RlbnQiLCJhc3luIiwiYWFuYSIsImVycm9yX2luY29uc2lzdGVudF9vZl9zZXhwIiwiZmllbGRfc2V4cHNfMDA4IiwiYW5hXzAxMSIsInN5bl8wMTMiLCJpdGVyXzAyMiIsInNleHBfMDA5JDAiLCJ0YWlsXzAyMyIsImZ2YWx1ZV8wMjAiLCJmdmFsdWVfMDIxIiwic3luXzAxNCIsImFuYV8wMTIiLCJzZXhwX29mX2Vycm9yX2luY29uc2lzdGVudCIsInN5bl8wMzgiLCJhbmFfMDM2IiwiYm5kc18wMzUiLCJhcmdfMDM3IiwiYm5kc18wMzUkMCIsImVycm9yX2luY29uc2lzdGVudF9vZl95b2pzb24iLCJhbmFfZmllbGQiLCJzeW5fZmllbGQiLCJzeW5fdmFsdWUiLCJhbmFfdmFsdWUiLCJ5b2pzb25fb2ZfZXJyb3JfaW5jb25zaXN0ZW50Iiwidl9zeW4iLCJ2X2FuYSIsInBwX2Vycm9yX25vX3R5cGUiLCJzaG93X2Vycm9yX25vX3R5cGUiLCJlcnJvcl9ub190eXBlX29mX3NleHAiLCJzZXhwXzA0OCIsInRhZ18wNDkiLCJzZXhwX2FyZ3NfMDU1Iiwic2V4cF9vZl9lcnJvcl9ub190eXBlIiwiZXJyb3Jfbm9fdHlwZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3Jfbm9fdHlwZSIsInBwX2Vycm9yX2NvbW1vbiIsInNob3dfZXJyb3JfY29tbW9uIiwiZXJyb3JfY29tbW9uX29mX3NleHAiLCJ0YWdfMDc0Iiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJzZXhwX2FyZ3NfMDgwIiwic2V4cF9vZl9lcnJvcl9jb21tb24iLCJlcnJvcl9jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX2NvbW1vbiIsInBwX2Vycm9yX2V4cCIsInNob3dfZXJyb3JfZXhwIiwiZXJyb3JfZXhwX29mX3NleHAiLCJzZXhwXzA5MSIsInRhZ18wOTIiLCJzZXhwX29mX2Vycm9yX2V4cCIsImVycm9yX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfZXhwIiwicHBfZXJyb3JfcGF0Iiwic2hvd19lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2Zfc2V4cCIsInNleHBfMTA5IiwidGFnXzExMCIsInNleHBfYXJnc18xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwic2V4cF9vZl9lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX3BhdCIsInBwX29rX2FuYSIsInNob3dfb2tfYW5hIiwiYWpvaW4iLCJhbm9qb2luIiwiYWFuYSQwIiwib2tfYW5hX29mX3NleHAiLCJzZXhwXzEyMSIsImZpZWxkX3NleHBzXzE0MCIsImFuYV8xNDMiLCJub2pvaW5fMTQ1IiwiZHVwbGljYXRlc18xNDciLCJleHRyYV8xNDgiLCJpdGVyXzE1NCIsInNleHBfMTQxIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE1NSIsImZpZWxkX3NleHBfMTUwJDIiLCJmaWVsZF9zZXhwXzE1MCIsInhfMTU2IiwiZmllbGRfc2V4cF8xNTAkMCIsImZ2YWx1ZV8xNTIiLCJmaWVsZF9zZXhwXzE1MCQxIiwiZnZhbHVlXzE1MyIsIm5vam9pbl8xNDYiLCJhbmFfMTQ0IiwiZmllbGRfc2V4cHNfMTIwIiwiYW5hXzEyMyIsInN5bl8xMjUiLCJqb2luXzEyNyIsImR1cGxpY2F0ZXNfMTI5IiwiZXh0cmFfMTMwIiwiaXRlcl8xMzciLCJzZXhwXzEyMSQwIiwiZmllbGRfc2V4cHNfMTMzIiwiZmllbGRfbmFtZV8xMzEiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMyJDMiLCJmaWVsZF9zZXhwXzEzMiIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzIkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMiQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMyJDIiLCJmdmFsdWVfMTM2Iiwiam9pbl8xMjgiLCJzeW5fMTI2IiwiYW5hXzEyNCIsInNleHBfb2Zfb2tfYW5hIiwiam9pbl8xNjIiLCJzeW5fMTYwIiwiYW5hXzE1OCIsImFyZ18xNjMiLCJibmRzXzE1NyIsImFyZ18xNjEiLCJibmRzXzE1NyQwIiwiYXJnXzE1OSIsImJuZHNfMTU3JDEiLCJub2pvaW5fMTY3IiwiYW5hXzE2NSIsImFyZ18xNjgiLCJibmRzXzE2NCIsImFyZ18xNjYiLCJibmRzXzE2NCQwIiwib2tfYW5hX29mX3lvanNvbiIsIm5vam9pbl9maWVsZCIsIm5vam9pbl92YWx1ZSIsImZpZWxkX3lvanNvbnMkMCIsImFuYV9maWVsZCQwIiwiam9pbl9maWVsZCIsImR1cGxpY2F0ZXMkMCIsImV4dHJhJDAiLCJpdGVyJDAiLCJqb2luX3ZhbHVlIiwiYW5hX3ZhbHVlJDAiLCJ5b2pzb25fb2Zfb2tfYW5hIiwidl9qb2luIiwidl9ub2pvaW4iLCJ2X2FuYSQwIiwicHBfb2tfY29tbW9uIiwic2hvd19va19jb21tb24iLCJva19jb21tb25fb2Zfc2V4cCIsInNleHBfMTczIiwidGFnXzE3NCIsInJlczBfMTc3Iiwic2V4cF9hcmdzXzE4MCIsInNleHBfb2Zfb2tfY29tbW9uIiwiYXJnMF8xODMiLCJyZXMwXzE4NCIsInJlczBfMTg2Iiwib2tfY29tbW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9va19jb21tb24iLCJwcF9va19leHAiLCJzaG93X29rX2V4cCIsInBwX29rX3BhdCIsInNob3dfb2tfcGF0IiwicHBfc3RhdHVzX2NvbW1vbiIsInNob3dfc3RhdHVzX2NvbW1vbiIsInN0YXR1c19jb21tb25fb2Zfc2V4cCIsInNleHBfMTkzIiwidGFnXzE5NCIsInNleHBfYXJnc18yMDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwic2V4cF9hcmdzXzE5NSIsImFyZzBfMTk2Iiwic2V4cF9vZl9zdGF0dXNfY29tbW9uIiwicmVzMF8yMDQiLCJhcmcwXzIwNSIsInN0YXR1c19jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXR1c19jb21tb24iLCJwcF9zdGF0dXNfZXhwIiwic2hvd19zdGF0dXNfZXhwIiwic3RhdHVzX2V4cF9vZl9zZXhwIiwic2V4cF8yMTEiLCJ0YWdfMjEyIiwic2V4cF9hcmdzXzIxOCIsImFyZzBfMjE5IiwicmVzMF8yMjAiLCJyZXMwXzIxNSIsInNleHBfb2Zfc3RhdHVzX2V4cCIsInJlczBfMjIyIiwiYXJnMF8yMjMiLCJzdGF0dXNfZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfZXhwIiwicHBfc3RhdHVzX3BhdCIsInNob3dfc3RhdHVzX3BhdCIsInN0YXR1c19wYXRfb2Zfc2V4cCIsInNleHBfMjI5IiwidGFnXzIzMCIsInJlczBfMjM4Iiwic2V4cF9hcmdzXzIzMSIsImFyZzBfMjMyIiwic2V4cF9vZl9zdGF0dXNfcGF0IiwicmVzMF8yNDAiLCJhcmcwXzI0MSIsInJlczBfMjQyIiwic3RhdHVzX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3BhdCIsInBwX3N0YXR1c192YXJpYW50Iiwic2hvd19zdGF0dXNfdmFyaWFudCIsInN0YXR1c192YXJpYW50X29mX3NleHAiLCJzZXhwXzI0NiIsInNleHBfb2Zfc3RhdHVzX3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3ZhcmlhbnQiLCJwcF90eXBfZXhwZWN0cyIsInNob3dfdHlwX2V4cGVjdHMiLCJ0eXBfZXhwZWN0c19vZl9zZXhwIiwic2V4cF8yNTEiLCJ0YWdfMjUyIiwic2V4cF9hcmdzXzI2MCIsImFyZzFfMjYyIiwiYXJnMF8yNjEiLCJyZXMwXzI2MyIsInJlczFfMjY0Iiwic2V4cF9hcmdzXzI1MyIsImFyZzFfMjU1IiwiYXJnMF8yNTQiLCJzZXhwX29mX3R5cF9leHBlY3RzIiwiYXJnMV8yNjYiLCJhcmcwXzI2NSIsInJlczBfMjY3IiwicmVzMV8yNjgiLCJ0eXBfZXhwZWN0c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHlwX2V4cGVjdHMiLCJwcF9lcnJvcl90eXAiLCJzaG93X2Vycm9yX3R5cCIsImVycm9yX3R5cF9vZl9zZXhwIiwic2V4cF8yNzciLCJ0YWdfMjc4Iiwic2V4cF9hcmdzXzI3OSIsImFyZzBfMjgwIiwicmVzMF8yODEiLCJyZXMwXzI5MSIsInNleHBfYXJnc18yODQiLCJhcmcwXzI4NSIsInJlczBfMjg2IiwicmVzMF8yOTYiLCJzZXhwX29mX2Vycm9yX3R5cCIsInJlczBfMjk4IiwiYXJnMF8yOTkiLCJyZXMwXzMwMCIsImFyZzBfMzAxIiwicmVzMF8zMDIiLCJlcnJvcl90eXBfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX3R5cCIsInBwX29rX3R5cCIsInNob3dfb2tfdHlwIiwiXzAkMTQiLCJva190eXBfb2Zfc2V4cCIsInNleHBfMzA5IiwidGFnXzMxMCIsInNleHBfYXJnc18zMTgiLCJzZXhwX2FyZ3NfMzExIiwiYXJnMV8zMTMiLCJhcmcwXzMxMiIsInJlczBfMzE0IiwicmVzMV8zMTUiLCJyZXMwXzMyNiIsInJlczFfMzI3Iiwic2V4cF9hcmdzXzMzMCIsInJlczBfMzMyIiwic2V4cF9vZl9va190eXAiLCJyZXMwXzMzOCIsImFyZzFfMzQwIiwiYXJnMF8zMzkiLCJyZXMxXzM0MiIsInJlczBfMzQ0Iiwib2tfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9va190eXAiLCJwcF9zdGF0dXNfdHlwIiwic2hvd19zdGF0dXNfdHlwIiwiXzAkMTUiLCJzdGF0dXNfdHlwX29mX3NleHAiLCJzZXhwXzM0OSIsInRhZ18zNTAiLCJzZXhwX2FyZ3NfMzU2Iiwic2V4cF9hcmdzXzM1MSIsImFyZzBfMzUyIiwicmVzMF8zNTMiLCJzZXhwX29mX3N0YXR1c190eXAiLCJyZXMwXzM2MiIsInN0YXR1c190eXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXR1c190eXAiLCJwcF90eXBlX3Zhcl9lcnIiLCJzaG93X3R5cGVfdmFyX2VyciIsInR5cGVfdmFyX2Vycl9vZl9zZXhwIiwic2V4cF8zNjYiLCJzZXhwX29mX3R5cGVfdmFyX2VyciIsInR5cGVfdmFyX2Vycl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHlwZV92YXJfZXJyIiwicHBfZXJyb3JfdHBhdCIsInNob3dfZXJyb3JfdHBhdCIsIl8wJDE2IiwiZXJyb3JfdHBhdF9vZl9zZXhwIiwic2V4cF8zNzEiLCJ0YWdfMzcyIiwic2V4cF9hcmdzXzM3MyIsImFyZzBfMzc0IiwicmVzMF8zNzUiLCJzZXhwX2FyZ3NfMzc4IiwiYXJnMF8zNzkiLCJyZXMwXzM4MCIsInNleHBfb2ZfZXJyb3JfdHBhdCIsInJlczBfMzgyIiwiYXJnMF8zODMiLCJlcnJvcl90cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9lcnJvcl90cGF0IiwicHBfb2tfdHBhdCIsInNob3dfb2tfdHBhdCIsIl8wJDE3Iiwib2tfdHBhdF9vZl9zZXhwIiwic2V4cF8zODkiLCJ0YWdfMzkwIiwic2V4cF9hcmdzXzM5MSIsImFyZzBfMzkyIiwicmVzMF8zOTMiLCJzZXhwX29mX29rX3RwYXQiLCJhcmcwXzM5NCIsInJlczBfMzk1Iiwib2tfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb2tfdHBhdCIsInBwX3N0YXR1c190cGF0Iiwic2hvd19zdGF0dXNfdHBhdCIsIl8wJDE4Iiwic3RhdHVzX3RwYXRfb2Zfc2V4cCIsInNleHBfNDAwIiwidGFnXzQwMSIsInNleHBfYXJnc180MDIiLCJhcmcwXzQwMyIsInNleHBfYXJnc180MDciLCJhcmcwXzQwOCIsInJlczBfNDA5Iiwic2V4cF9vZl9zdGF0dXNfdHBhdCIsImFyZzBfNDEwIiwiYXJnMF80MTIiLCJyZXMwXzQxMyIsInN0YXR1c190cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfdHBhdCIsIl8xJDE0IiwiXzAkMTkiLCJzZXhwXzQxNSIsImZpZWxkX3NleHBzXzQxNiIsInRlcm1fNDE3IiwiYW5jZXN0b3JzXzQxOSIsImN0eF80MjEiLCJtb2RlXzQyMyIsInNlbGZfNDI1IiwiY29fY3R4XzQyNyIsImNsc180MjkiLCJzdGF0dXNfNDMxIiwidHlfNDMzIiwiZHVwbGljYXRlc180MzUiLCJleHRyYV80MzYiLCJpdGVyXzQ1MCIsInNleHBfNDE1JDAiLCJmaWVsZF9zZXhwc180MzkiLCJmaWVsZF9uYW1lXzQzNyIsInRhaWxfNDUxIiwiZmllbGRfc2V4cF80MzgkOSIsImZpZWxkX3NleHBfNDM4IiwieF80NTIiLCJmaWVsZF9zZXhwXzQzOCQwIiwiZnZhbHVlXzQ0MCIsImZpZWxkX3NleHBfNDM4JDEiLCJmdmFsdWVfNDQ4IiwiZmllbGRfc2V4cF80MzgkMiIsImZ2YWx1ZV80NDEiLCJmaWVsZF9zZXhwXzQzOCQzIiwiZnZhbHVlXzQ0NCIsImZpZWxkX3NleHBfNDM4JDQiLCJmdmFsdWVfNDQ1IiwiZmllbGRfc2V4cF80MzgkNSIsImZ2YWx1ZV80NDYiLCJmaWVsZF9zZXhwXzQzOCQ2IiwiZnZhbHVlXzQ0MyIsImZpZWxkX3NleHBfNDM4JDciLCJmdmFsdWVfNDQyIiwiZmllbGRfc2V4cF80MzgkOCIsImZ2YWx1ZV80NDciLCJ0eV80MzQiLCJzdGF0dXNfNDMyIiwiY2xzXzQzMCIsImNvX2N0eF80MjgiLCJzZWxmXzQyNiIsIm1vZGVfNDI0IiwiY3R4XzQyMiIsImFuY2VzdG9yc180MjAiLCJ0ZXJtXzQxOCIsInR5XzQ3MCIsInN0YXR1c180NjgiLCJjbHNfNDY2IiwiY29fY3R4XzQ2NCIsInNlbGZfNDYyIiwibW9kZV80NjAiLCJjdHhfNDU4IiwiYW5jZXN0b3JzXzQ1NiIsInRlcm1fNDU0IiwiYXJnXzQ3MSIsImJuZHNfNDUzIiwiYXJnXzQ2OSIsImJuZHNfNDUzJDAiLCJhcmdfNDY3IiwiYm5kc180NTMkMSIsImFyZ180NjUiLCJibmRzXzQ1MyQyIiwiYXJnXzQ2MyIsImJuZHNfNDUzJDMiLCJhcmdfNDYxIiwiYm5kc180NTMkNCIsImFyZ180NTkiLCJibmRzXzQ1MyQ1IiwiYXJnXzQ1NyIsImJuZHNfNDUzJDYiLCJhcmdfNDU1IiwiYm5kc180NTMkNyIsImN0eF9maWVsZCIsInNlbGZfZmllbGQiLCJjb19jdHhfZmllbGQiLCJjbHNfZmllbGQiLCJzdGF0dXNfZmllbGQiLCJmdmFsdWUkNyIsInN0YXR1c192YWx1ZSIsImNsc192YWx1ZSIsImNvX2N0eF92YWx1ZSIsInNlbGZfdmFsdWUiLCJjdHhfdmFsdWUiLCJ2X3N0YXR1cyIsInZfY2xzIiwidl9jb19jdHgiLCJ2X3NlbGYiLCJ2X2N0eCIsImFyZyQ3IiwiYm5kcyQ3IiwiXzEkMTUiLCJfMCQyMCIsInNleHBfNDczIiwiZmllbGRfc2V4cHNfNDc0IiwidGVybV80NzUiLCJhbmNlc3RvcnNfNDc3IiwiY3R4XzQ3OSIsImNvX2N0eF80ODEiLCJtb2RlXzQ4MyIsInNlbGZfNDg1IiwiY2xzXzQ4NyIsInN0YXR1c180ODkiLCJ0eV80OTEiLCJkdXBsaWNhdGVzXzQ5MyIsImV4dHJhXzQ5NCIsIml0ZXJfNTA4Iiwic2V4cF80NzMkMCIsImZpZWxkX3NleHBzXzQ5NyIsImZpZWxkX25hbWVfNDk1IiwidGFpbF81MDkiLCJmaWVsZF9zZXhwXzQ5NiQ5IiwiZmllbGRfc2V4cF80OTYiLCJ4XzUxMCIsImZpZWxkX3NleHBfNDk2JDAiLCJmdmFsdWVfNDk4IiwiZmllbGRfc2V4cF80OTYkMSIsImZ2YWx1ZV81MDYiLCJmaWVsZF9zZXhwXzQ5NiQyIiwiZnZhbHVlXzQ5OSIsImZpZWxkX3NleHBfNDk2JDMiLCJmdmFsdWVfNTAxIiwiZmllbGRfc2V4cF80OTYkNCIsImZ2YWx1ZV81MDIiLCJmaWVsZF9zZXhwXzQ5NiQ1IiwiZnZhbHVlXzUwNCIsImZpZWxkX3NleHBfNDk2JDYiLCJmdmFsdWVfNTAzIiwiZmllbGRfc2V4cF80OTYkNyIsImZ2YWx1ZV81MDAiLCJmaWVsZF9zZXhwXzQ5NiQ4IiwiZnZhbHVlXzUwNSIsInR5XzQ5MiIsInN0YXR1c180OTAiLCJjbHNfNDg4Iiwic2VsZl80ODYiLCJtb2RlXzQ4NCIsImNvX2N0eF80ODIiLCJjdHhfNDgwIiwiYW5jZXN0b3JzXzQ3OCIsInRlcm1fNDc2IiwidHlfNTI4Iiwic3RhdHVzXzUyNiIsImNsc181MjQiLCJzZWxmXzUyMiIsIm1vZGVfNTIwIiwiY29fY3R4XzUxOCIsImN0eF81MTYiLCJhbmNlc3RvcnNfNTE0IiwidGVybV81MTIiLCJhcmdfNTI5IiwiYm5kc181MTEiLCJhcmdfNTI3IiwiYm5kc181MTEkMCIsImFyZ181MjUiLCJibmRzXzUxMSQxIiwiYXJnXzUyMyIsImJuZHNfNTExJDIiLCJhcmdfNTIxIiwiYm5kc181MTEkMyIsImJuZHNfNTExJDQiLCJibmRzXzUxMSQ1IiwiYXJnXzUxNSIsImJuZHNfNTExJDYiLCJhcmdfNTEzIiwiYm5kc181MTEkNyIsInBwX3R5cCIsInNob3dfdHlwIiwiXzUkMiIsIl80JDMiLCJfMyQ2IiwiXzIkNyIsIl8xJDE2IiwiXzAkMjEiLCJ0eXBfb2Zfc2V4cCIsInNleHBfNTMxIiwiZmllbGRfc2V4cHNfNTMyIiwidGVybV81MzMiLCJhbmNlc3RvcnNfNTM1IiwiY3R4XzUzNyIsImV4cGVjdHNfNTM5IiwiY2xzXzU0MSIsInN0YXR1c181NDMiLCJ0eV81NDUiLCJkdXBsaWNhdGVzXzU0NyIsImV4dHJhXzU0OCIsIml0ZXJfNTYwIiwic2V4cF81MzEkMCIsImZpZWxkX3NleHBzXzU1MSIsImZpZWxkX25hbWVfNTQ5IiwidGFpbF81NjEiLCJmaWVsZF9zZXhwXzU1MCQ3IiwiZmllbGRfc2V4cF81NTAiLCJ4XzU2MiIsImZpZWxkX3NleHBfNTUwJDAiLCJmdmFsdWVfNTUyIiwiZmllbGRfc2V4cF81NTAkMSIsImZ2YWx1ZV81NTgiLCJmaWVsZF9zZXhwXzU1MCQyIiwiZnZhbHVlXzU1MyIsImZpZWxkX3NleHBfNTUwJDMiLCJmdmFsdWVfNTU1IiwiZmllbGRfc2V4cF81NTAkNCIsImZ2YWx1ZV81NTYiLCJmaWVsZF9zZXhwXzU1MCQ1IiwiZnZhbHVlXzU1NCIsImZpZWxkX3NleHBfNTUwJDYiLCJmdmFsdWVfNTU3IiwidHlfNTQ2Iiwic3RhdHVzXzU0NCIsImNsc181NDIiLCJleHBlY3RzXzU0MCIsImN0eF81MzgiLCJhbmNlc3RvcnNfNTM2IiwidGVybV81MzQiLCJzZXhwX29mX3R5cCIsInR5XzU3NiIsInN0YXR1c181NzQiLCJjbHNfNTcyIiwiZXhwZWN0c181NzAiLCJjdHhfNTY4IiwiYW5jZXN0b3JzXzU2NiIsInRlcm1fNTY0IiwiYXJnXzU3NyIsImJuZHNfNTYzIiwiYXJnXzU3NSIsImJuZHNfNTYzJDAiLCJhcmdfNTczIiwiYm5kc181NjMkMSIsImFyZ181NzEiLCJibmRzXzU2MyQyIiwiYXJnXzU2OSIsImJuZHNfNTYzJDMiLCJhcmdfNTY3IiwiYm5kc181NjMkNCIsImFyZ181NjUiLCJibmRzXzU2MyQ1IiwidHlwX29mX3lvanNvbiIsImV4cGVjdHNfZmllbGQiLCJleHBlY3RzX3ZhbHVlIiwieW9qc29uX29mX3R5cCIsInZfZXhwZWN0cyIsInBwX3RwYXQiLCJzaG93X3RwYXQiLCJfNCQ0IiwiXzMkNyIsIl8yJDgiLCJfMSQxNyIsIl8wJDIyIiwidHBhdF9vZl9zZXhwIiwic2V4cF81NzkiLCJmaWVsZF9zZXhwc181ODAiLCJ0ZXJtXzU4MSIsImFuY2VzdG9yc181ODMiLCJjdHhfNTg1IiwiY2xzXzU4NyIsInN0YXR1c181ODkiLCJkdXBsaWNhdGVzXzU5MSIsImV4dHJhXzU5MiIsIml0ZXJfNjAyIiwic2V4cF81NzkkMCIsImZpZWxkX3NleHBzXzU5NSIsImZpZWxkX25hbWVfNTkzIiwidGFpbF82MDMiLCJmaWVsZF9zZXhwXzU5NCQ1IiwiZmllbGRfc2V4cF81OTQiLCJ4XzYwNCIsImZpZWxkX3NleHBfNTk0JDAiLCJmdmFsdWVfNjAwIiwiZmllbGRfc2V4cF81OTQkMSIsImZ2YWx1ZV81OTYiLCJmaWVsZF9zZXhwXzU5NCQyIiwiZnZhbHVlXzU5OCIsImZpZWxkX3NleHBfNTk0JDMiLCJmdmFsdWVfNTk3IiwiZmllbGRfc2V4cF81OTQkNCIsImZ2YWx1ZV81OTkiLCJzdGF0dXNfNTkwIiwiY2xzXzU4OCIsImN0eF81ODYiLCJhbmNlc3RvcnNfNTg0IiwidGVybV81ODIiLCJzZXhwX29mX3RwYXQiLCJzdGF0dXNfNjE0IiwiY2xzXzYxMiIsImN0eF82MTAiLCJhbmNlc3RvcnNfNjA4IiwidGVybV82MDYiLCJhcmdfNjE1IiwiYm5kc182MDUiLCJhcmdfNjEzIiwiYm5kc182MDUkMCIsImFyZ182MTEiLCJibmRzXzYwNSQxIiwiYXJnXzYwOSIsImJuZHNfNjA1JDIiLCJhcmdfNjA3IiwiYm5kc182MDUkMyIsInRwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3RwYXQiLCJwcF9zZWNvbmRhcnkiLCJzaG93X3NlY29uZGFyeSIsIl8zJDgiLCJfMiQ5IiwiXzEkMTgiLCJfMCQyMyIsInNlY29uZGFyeV9vZl9zZXhwIiwic2V4cF82MTciLCJmaWVsZF9zZXhwc182MTgiLCJpZF82MTkiLCJjbHNfNjIxIiwic29ydF82MjMiLCJjdHhfNjI1IiwiZHVwbGljYXRlc182MjciLCJleHRyYV82MjgiLCJpdGVyXzYzNyIsInNleHBfNjE3JDAiLCJmaWVsZF9zZXhwc182MzEiLCJmaWVsZF9uYW1lXzYyOSIsInRhaWxfNjM4IiwiZmllbGRfc2V4cF82MzAkNCIsImZpZWxkX3NleHBfNjMwIiwieF82MzkiLCJmaWVsZF9zZXhwXzYzMCQwIiwiZnZhbHVlXzYzMyIsImZpZWxkX3NleHBfNjMwJDEiLCJmdmFsdWVfNjM1IiwiZmllbGRfc2V4cF82MzAkMiIsImZ2YWx1ZV82MzIiLCJmaWVsZF9zZXhwXzYzMCQzIiwiZnZhbHVlXzYzNCIsImN0eF82MjYiLCJzb3J0XzYyNCIsImNsc182MjIiLCJpZF82MjAiLCJzZXhwX29mX3NlY29uZGFyeSIsImN0eF82NDciLCJzb3J0XzY0NSIsImNsc182NDMiLCJpZF82NDEiLCJhcmdfNjQ4IiwiYm5kc182NDAiLCJhcmdfNjQ2IiwiYm5kc182NDAkMCIsImFyZ182NDQiLCJibmRzXzY0MCQxIiwiYXJnXzY0MiIsImJuZHNfNjQwJDIiLCJzZWNvbmRhcnlfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlY29uZGFyeSIsIl80JDUiLCJfMyQ5IiwiXzIkMTAiLCJfMSQxOSIsIl8wJDI0Iiwic2V4cF82NTMiLCJ0YWdfNjU0Iiwic2V4cF9hcmdzXzY1NSIsImFyZzBfNjU2IiwicmVzMF82NTciLCJzZXhwX2FyZ3NfNjYwIiwiYXJnMF82NjEiLCJyZXMwXzY2MiIsInNleHBfYXJnc182NzAiLCJzZXhwX2FyZ3NfNjY1IiwiYXJnMF82NjYiLCJyZXMwXzY2NyIsInNleHBfYXJnc182NzUiLCJhcmcwXzY3NiIsInJlczBfNjc3IiwiYXJnMF82NzgiLCJyZXMwXzY3OSIsImFyZzBfNjgwIiwicmVzMF82ODEiLCJhcmcwXzY4MiIsImFyZzBfNjg0IiwicmVzMF82ODUiLCJhcmcwXzY4NiIsInJlczBfNjg3IiwicHBfZXJyb3IiLCJzaG93X2Vycm9yIiwiXzMkMTAiLCJfMiQxMSIsIl8xJDIwIiwiXzAkMjUiLCJlcnJvcl9vZl9zZXhwIiwic2V4cF82OTIiLCJ0YWdfNjkzIiwic2V4cF9hcmdzXzcwNCIsImFyZzBfNzA1IiwicmVzMF83MDYiLCJzZXhwX2FyZ3NfNzA5IiwiYXJnMF83MTAiLCJyZXMwXzcxMSIsInNleHBfYXJnc182OTkiLCJhcmcwXzcwMCIsInJlczBfNzAxIiwic2V4cF9hcmdzXzY5NCIsInJlczBfNjk2Iiwic2V4cF9vZl9lcnJvciIsImFyZzBfNzEyIiwicmVzMF83MTMiLCJhcmcwXzcxNCIsInJlczBfNzE1IiwiYXJnMF83MTYiLCJyZXMwXzcxNyIsImFyZzBfNzE4IiwicmVzMF83MTkiLCJlcnJvcl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3IiLCJzb3J0X29mIiwiY3R4X29mIiwiYW5jZXN0b3JzX29mIiwiaSQxIiwiaSQyIiwiZXJyb3Jfb2YiLCJlcnIkMCIsImVyciQxIiwiZXJyJDIiLCJleHBfY29fY3R4IiwiZXhwX3R5IiwicGF0X2N0eCIsInBhdF90eSIsInN0YXR1c19jb21tb24iLCJzZWxmJDAiLCJzeW4iLCJhbmEkMCIsInN5biQwIiwiYW5hX3R5Iiwic2VsZiQxIiwic3luX3R5JDAiLCJzZWxmJDIiLCJzdGF0dXNfcGF0Iiwic2VsZl9wYXQiLCJlcnJfcGF0Iiwib2tfZXhwIiwic3RhdHVzX2V4cCIsInN0YXR1c190eXAiLCJleHBlY3RzIiwidHlfdmFyaWFudCIsInN0YXR1c192YXJpYW50Iiwic3VtX3R5Iiwic3RhdHVzX3RwYXQiLCJ1dHBhdCIsImlzX2Vycm9yIiwiY2kiLCJ0ZXJtJDAiLCJmaXhlZF90eXBfb2siLCJmaXhlZF90eXBfcGF0Iiwib2siLCJmaXhlZF90eXBfZXhwIiwiZGVyaXZlZF9leHAiLCJ1ZXhwIiwiZGVyaXZlZF9wYXQiLCJ1cGF0IiwiZGVyaXZlZF90eXAiLCJkZXJpdmVkX3RwYXQiLCJnZXRfYmluZGluZ19zaXRlIiwibmFtZSQxIiwiZXJyb3Jfc291cmNlXzAzMiIsImVycm9yX3NvdXJjZV8wNDMiLCJlcnJvcl9zb3VyY2VfMDYxIiwicHBfc3RyYXRlZ3lfYWxsIiwic2hvd19zdHJhdGVneV9hbGwiLCJzdHJhdGVneV9hbGxfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfYWxsIiwic3RyYXRlZ3lfYWxsX29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV9hbGwiLCJwcF9zdHJhdGVneV9jb21tb24iLCJzaG93X3N0cmF0ZWd5X2NvbW1vbiIsInN0cmF0ZWd5X2NvbW1vbl9vZl9zZXhwIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwic2V4cF9vZl9zdHJhdGVneV9jb21tb24iLCJyZXMwXzAyNyIsInN0cmF0ZWd5X2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfY29tbW9uIiwicHBfc3RyYXRlZ3lfZXhwIiwic2hvd19zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2Zfc2V4cCIsInRhZ18wMzUiLCJzZXhwX2FyZ3NfMDM2Iiwic2V4cF9vZl9zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0cmF0ZWd5X2V4cCIsInBwX3N0cmF0ZWd5X3BhdCIsInNob3dfc3RyYXRlZ3lfcGF0Iiwic3RyYXRlZ3lfcGF0X29mX3NleHAiLCJzZXhwXzA0NSIsInRhZ18wNDYiLCJzZXhwX29mX3N0cmF0ZWd5X3BhdCIsImFyZzBfMDU1Iiwic3RyYXRlZ3lfcGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV9wYXQiLCJwcF9zdHJhdGVneV90eXAiLCJzaG93X3N0cmF0ZWd5X3R5cCIsInN0cmF0ZWd5X3R5cF9vZl9zZXhwIiwic2V4cF8wNjIiLCJzZXhwX29mX3N0cmF0ZWd5X3R5cCIsInN0cmF0ZWd5X3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfdHlwIiwicHBfc3RyYXRlZ3kiLCJzaG93X3N0cmF0ZWd5Iiwic3RyYXRlZ3lfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3kiLCJyZXMwXzA4OCIsImFyZzBfMDkzIiwicmVzMF8wOTQiLCJzdHJhdGVneV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3kiLCJzZXhwXzA5NiIsImZpZWxkX3NleHBzXzA5NyIsImNvbnRlbnRfMDk4Iiwic3RyYXRlZ3lfMTAwIiwiZHVwbGljYXRlc18xMDIiLCJleHRyYV8xMDMiLCJpdGVyXzExMCIsInNleHBfMDk2JDAiLCJmaWVsZF9zZXhwc18xMDYiLCJmaWVsZF9uYW1lXzEwNCIsInRhaWxfMTExIiwiZmllbGRfc2V4cF8xMDUkMiIsImZpZWxkX3NleHBfMTA1IiwieF8xMTIiLCJmaWVsZF9zZXhwXzEwNSQwIiwiZnZhbHVlXzEwNyIsImZpZWxkX3NleHBfMTA1JDEiLCJmdmFsdWVfMTA4Iiwic3RyYXRlZ3lfMTAxIiwiY29udGVudF8wOTkiLCJzdHJhdGVneV8xMTYiLCJjb250ZW50XzExNCIsImFyZ18xMTciLCJibmRzXzExMyIsImFyZ18xMTUiLCJibmRzXzExMyQwIiwic3RyYXRlZ3lfZmllbGQiLCJzdHJhdGVneV92YWx1ZSIsInZfc3RyYXRlZ3kiLCJleHBhbmRlciIsImZyZWVfdmFyaWFibGVzIiwiam9pbnRfdXNlX3R5cCIsImJvdW5kX3ZhcmlhYmxlcyIsInR5X2V4cGVjdCIsImJvdW5kX2NvbnN0cnVjdG9ycyIsImJvdW5kX2FwcyIsInR5X2FyciIsImJvdW5kX2NvbnN0cnVjdG9yX2FwcyIsInR5cF9jb250ZXh0X2VudHJpZXMiLCJzdWdnZXN0X3ZhcmlhYmxlIiwic3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUiLCJyZXN0cmF0ZWdpemUiLCJzdWZmaXgiLCJzdHJhdGVneSIsImV4cF9yZWZzIiwiZXhwX2FwcyIsImNvbW1hcyIsInBhdF9yZWZzIiwicGF0X2FwcyIsImNvbW1hcyQwIiwidW5rIiwibGVhZGluZ19leHBhbmRlciIsIm9mX2NvbnN0X21vbm9fZGVsaW0iLCJvZl9sZWFkaW5nX2RlbGltIiwib2ZfaW5maXhfZGVsaW0iLCJleHBlY3RlZCIsImZpbHRlcl9ieSIsInNlbGZfdHlzIiwiZGVsaW0iLCJzZWxmX3R5IiwiZGVsYXllZF9sZWFkaW5nIiwiZGVsYXRlZF9sZWFkaW5nX2V4cCIsImRlbGF0ZWRfbGVhZGluZ19wYXQiLCJkZWxhdGVkX2xlYWRpbmdfdHlwIiwiZGVsYXllZF9sZWFkaW5nJDAiLCJpbmZpeCIsImluZml4X2V4cCIsImluZml4X3BhdCIsImluZml4X3R5cCIsImluZml4JDAiLCJjb25zdF9tb25vIiwiY29uc3RfbW9ub19leHAiLCJjb25zdF9tb25vX3BhdCIsImNvbnN0X21vbm9fdHlwIiwiY29uc3RfbW9ubyQwIiwic3VnZ2VzdF9mb3JtIiwidHlfbWFwIiwiZGVsaW1zX29mX3NvcnQiLCJmaWx0ZXJlZCIsInN1Z2dlc3Rfb3BlcmF0b3IiLCJzdWdnZXN0X29wZXJhbmQiLCJzdWdnZXN0X2xlYWRpbmciLCJlcnJvcl9zb3VyY2VfMDEzIiwiaG9sZV9zb3J0X29mX3NleHAiLCJzZXhwX29mX2hvbGVfc29ydCIsImFyZzJfMDA4IiwiYXJnMV8wMDciLCJhcmcwXzAwNiIsInJlczFfMDEwIiwicmVzMl8wMTEiLCJyYW5nZSIsInJhbmdlX2hhc2giLCJyb290X2wiLCJyb290X3IiLCJ1bmljaGlsZF9tYXAiLCJtYXBfbCIsImwkMiIsIm1hcF9yIiwiciQyIiwidW5pY2hpbGRfbWFwJDAiLCJyYW5nZSQwIiwiYmV0d2Vlbl9jaGlsZF9tYXAiLCJtayQwIiwicmVzIiwiZXJyb3JfaWRzIiwidGVybV9yYW5nZXMiLCJpbmZvX21hcCIsIm1hcF9tIiwiYWRkX2luZm8iLCJleHRlbmRfbGV0X2RlZl9jdHgiLCJkZWYiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdCIsInR5cF9leHBfYmlub3BfYmluX3N0cmluZyIsInR5cF9leHBfYmlub3AiLCJ0eXBfZXhwX3Vub3AiLCJhbnlfdG9faW5mb19tYXAiLCJhbnkiLCJ1ZXhwX3RvX2luZm9fbWFwIiwibSQxIiwidXBhdF90b19pbmZvX21hcCIsInV0eXBfdG9faW5mb19tYXAiLCJ0cCIsInV0cGF0X3RvX2luZm9fbWFwIiwibXVsdGkiLCJjb19jdHhzIiwiY3R4X2RlZiIsImlzX2luX2ZpbHRlciIsInVleHBfdG9faW5mb19tYXAkMCIsImlzX2luX2ZpbHRlciQwIiwic3RoJDEiLCJnbyQwIiwibWFwX21fZ28iLCJnb19wYXQiLCJhdG9taWMiLCJtb2RlcyIsImVzJDAiLCJtb2RlX2JvZHkiLCJtb2RlX3BhdCIsIm0kMiIsIm0kMyIsImVzJDEiLCJtb2RlcyQwIiwibSQ0IiwiZXMkMiIsImJvZHkiLCJwX3N5biIsImRlZl9jdHgiLCJtJDUiLCJkZWYkMCIsInBfYW5hIiwibSQ2IiwiYm9keSQwIiwibSQ3IiwicF9hbmEkMCIsImJvZHkkMSIsInR5cGF0IiwibSQ4IiwidHlfcHJlIiwidHlfcmVjIiwiY3R4X2RlZiQxIiwiY3R4X2JvZHkkMCIsImN0eF9kZWYkMCIsInR5X2RlZiQwIiwidHlfZGVmIiwiY3R4X2JvZHkiLCJjdHhfYm9keSQxIiwibSQxMSIsImNvX2N0eCQwIiwidHlfZXNjYXBlIiwibSQxMiIsIm0kOSIsIm0kMTAiLCJlMiIsImUxIiwiZTAiLCJicmFuY2hfaWRzIiwibSQxNSIsImNvbmQiLCJtJDE2IiwibSQxNyIsImFsdCIsImUyJDAiLCJlMSQwIiwibSQxOCIsImUxJDEiLCJtJDE5IiwiZTIkMSIsIm0kMjAiLCJlJDIiLCJib2R5JDIiLCJjb25kJDAiLCJtJDIxIiwiY29uZCQxIiwibSQyMiIsImJvZHkkMyIsImUkMyIsIm0kMjMiLCJlJDQiLCJtJDI0IiwibSQyNSIsImUyJDIiLCJlMSQyIiwiaWRzJDEiLCJtb2RlJDEiLCJtJDI2IiwiZTEkMyIsIm0kMjciLCJlMiQzIiwiZSQ1IiwiZSQ2IiwibSQyOCIsImUkNyIsImUkOCIsInR5X291dCQxIiwidHlfaW4kMSIsIm0kMjkiLCJlJDkiLCJlMiQ0IiwiZTEkNCIsInR5X291dCQyIiwibSQzMCIsImUxJDUiLCJtJDMxIiwiZTIkNSIsIm0kMzIiLCJlcyQzIiwiYnJhbmNoX2lkcyQwIiwicHMkMCIsInBfY3R4cyIsIm0kMzMiLCJlcyQ0IiwiZV90eXMiLCJlX2NvX2N0eHMiLCJtJDM0IiwiZm5fbW9kZSIsIm0kMTMiLCJ0eV9vdXQkMCIsInR5X2luJDAiLCJtJDE0IiwiaXNfc3luc3dpdGNoIiwidW5rbm93biIsImN0eF9mb2xkIiwiY3R4X3R5cCIsImFubiQwIiwidDFfbW9kZSIsInZhcmlhbnRzIiwidHlfc3VtIiwidmFyaWFudF90b19pbmZvX21hcCIsInV0eSIsInV0eSQwIiwicGFyYW1fdHkiLCJjb2xsZWN0X2Vycm9ycyIsInN1YnN0X3ZhciIsImQzJDEiLCJ1JDEiLCJkMyQyIiwicnVsZXMkMCIsInN1YnN0X3Zhcl9ydWxlcyIsImQzJDMiLCJzdWJzdF92YXJfZW52IiwiZDMkNCIsImRib2R5IiwiZGJvZHkkMCIsInN1YnN0X3Zhcl9maWx0ZXIiLCJkNCIsImQzJDUiLCJkMyQ2IiwiZDQkMCIsImQ0JDEiLCJkMyQ3IiwiZDMkOCIsImQ0JDIiLCJkMyQ5IiwiZDMkMTAiLCJkMyQxMSIsImQzJDEyIiwiZDQkMyIsImQzJDEzIiwiZDMkMTQiLCJkNCQ0IiwiaWRlbnQkMCIsImQzJDE1IiwiZDQkNSIsImQzJDE2IiwiZDMkMTciLCJkNCQ2IiwiZDQkNyIsImQzJDE4IiwiZDMkMTkiLCJkNCQ4IiwiZDQkOSIsImQzJDIwIiwiZDMkMjEiLCJkNCQxMCIsImQ0JDExIiwiZDMkMjIiLCJkMyQyMyIsImQ0JDEyIiwiZDQkMTMiLCJkMyQyNCIsImQzJDI1IiwiZDQkMTQiLCJkNCQxNSIsImQzJDI2IiwiZDMkMjciLCJkNCQxNiIsIm4kMSIsInJ1bGVzJDEiLCJkMyQyOCIsImQzJDI5IiwicnVsZXMkMiIsImQ2IiwiZDUiLCJkNCQxNyIsImQzJDMwIiwiZDQkMTgiLCJkNSQwIiwiZDYkMCIsIngkMCIsInhkIiwiZF9ydWxlcyIsImFyZzJfMDEwIiwicmVzMl8wMTMiLCJhcmcyXzAxNiIsInJlczJfMDE5IiwiZXhwX2Jpbm9wX29mIiwiZml4ZWRfZXhwX3R5cCIsImZpeGVkX3BhdF90eXAiLCJhbmFfdHkkMCIsImFuYV9vdXQiLCJzZWxmX2luIiwicHJvdiQyIiwicHJvdiQxIiwicHJvdiQwIiwic2VsZl90eSQwIiwiZGhleHBfb2ZfdWV4cCIsImluX2ZpbHRlciIsImRoZXhwX29mX3VleHAkMCIsImluX2ZpbHRlciQwIiwiZXJyX3N0YXR1cyIsImRocGF0X29mX3VwYXQiLCJhZGRfbmFtZSIsImRkZWYiLCJmcyIsImRkZWYkMCIsInVuaXFfaWQiLCJzZWxmX2lkIiwic2VsZl92YXIiLCJzdWJzdGl0dXRlZF9kZWYiLCJkdGVzdCIsImRjb25kIiwiZGMxIiwiZGMyIiwiZGMiLCJkX3NjcnV0IiwiZF9wIiwiZF9lIiwiY19mbiIsImNfYXJnIiwidXBhdCQwIiwibWF5YmVfcmVhc29uIiwid3JhcCQwIiwiZF9oZCIsImRfdGwiLCJ1cGF0JDEiLCJkX3AxIiwiZF9wMiIsInVleHBfZWxhYiIsInVuYm94IiwiZXJyb3Jfc291cmNlXzAxMiIsImluaXRpYWwiLCJzdGVwXzAwNCIsImR1cGxpY2F0ZXNfMDA2IiwiZXh0cmFfMDA3IiwiaXRlcl8wMTMiLCJmaWVsZF9zZXhwc18wMTAiLCJmaWVsZF9uYW1lXzAwOCIsInRhaWxfMDE0IiwiZmllbGRfc2V4cF8wMDkkMSIsImZpZWxkX3NleHBfMDA5IiwiZmllbGRfc2V4cF8wMDkkMCIsImZ2YWx1ZV8wMTEiLCJzdGVwXzAwNSIsInN0ZXBfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2Iiwic3RlcF9maWVsZCIsInN0ZXBfdmFsdWUiLCJ2X3N0ZXAiLCJ0YWtlX3N0ZXAiLCJzdGVwIiwiZ2V0X3N0ZXAiLCJwdXRfc3RlcCIsInN0YXRzXzAwNCIsInRlc3RzXzAwNiIsInRlc3RzXzAwNyIsInN0YXRzXzAwNSIsInRlc3RzXzAyMiIsInN0YXRzXzAyMCIsInN0YXRzX2ZpZWxkIiwidGVzdHNfZmllbGQiLCJ0ZXN0c192YWx1ZSIsInN0YXRzX3ZhbHVlIiwidl90ZXN0cyIsInZfc3RhdHMiLCJzdGF0cyIsImFkZF90ZXN0IiwidGVzdHMiLCJ0ZXN0cyQwIiwiZ2V0X3Rlc3RzIiwicHV0X3Rlc3RzIiwic3ltYm9sIiwieCQxIiwiYXBwbHkiLCJhcHBseSQwIiwiYXBwbHkkMSIsImV2YWx1YXRlIiwicmVzdWx0JDAiLCJwaWVjZSIsIm5vX3dzIiwiaWduIiwicGFyZW50JDAiLCJwYXJlbnQkMSIsInBpZWNlJDAiLCJzaGFyZF9pbmRleCIsInJlbGF0aW9uIiwiYmVmb3JlIiwiYmVmb3JlJDAiLCJjaV9vZiIsInByb3h5X2lkIiwic2wiLCJzciIsImFkZF9hbGwiLCJ0b2tlbnMiLCJwcF90aWxlcyIsInNob3dfdGlsZXMiLCJ0aWxlc19vZl9zZXhwIiwic2V4cF9vZl90aWxlcyIsInRpbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl90aWxlcyIsInNpbmdsZSIsInBwX3Vuc29ydGVkIiwic2hvd191bnNvcnRlZCIsInVuc29ydGVkX29mX3NleHAiLCJzZXhwXzAxOSIsInRhZ18wMjAiLCJhcmcyXzA0MyIsInJlczFfMDQ1IiwicmVzMl8wNDYiLCJzZXhwX29mX3Vuc29ydGVkIiwiYXJnMV8wNTQiLCJyZXMxXzA1NiIsInVuc29ydGVkX29mX3lvanNvbiIsInlvanNvbl9vZl91bnNvcnRlZCIsImlzX25hcnkiLCJpc19zb3J0IiwiaXNfdHVwbGVfZXhwIiwiaXNfdHVwbGVfcGF0IiwiaXNfdHVwbGVfdHlwIiwiaXNfdHlwX2JzdW0iLCJpc19ydWxlcyIsImNsYXVzZXMiLCJjbGF1c2UiLCJpZHNfb2ZfdGlsZXMiLCJraWRzX29mX3RpbGUiLCJraWRzX29mX3RpbGVzIiwia2lkc19vZl91bnNvcnRlZCIsInRpbGVzJDAiLCJ0aWxlcyQxIiwidGlsZXMkMiIsInJldHVybiQwIiwicGFyc2Vfc3VtX3Rlcm0iLCJpZHNfY3RyIiwiZ29fcyIsImV4cF90ZXJtIiwicGF0X3Rlcm0iLCJ0eXBfdGVybSIsInRwYXQiLCJ0cGF0X3Rlcm0iLCJydWwiLCJ1bnNvcnRlZCIsImlubmVyX2lkcyIsInJldCIsInQkMSIsImNvbnNlcSIsImZpbHRlciQxIiwiZmlsdGVyJDIiLCJ0JDIiLCJiZXR3ZWVuX2tpZHMiLCJ0JDMiLCJyZXQkMCIsInJldCQxIiwidDAiLCJiZXR3ZWVuX2tpZHMkMCIsInJldCQyIiwibGFzdF9jbGF1c2UiLCJsZWFkaW5nX2NsYXVzZXMiLCJ0aWxlX2tpZHMiLCJwX3IiLCJwX2wiLCJmcm9tX3ppcCIsImZyb21femlwX2Zvcl92aWV3IiwiZnJvbV96aXBfZm9yX3NlbSIsImVycm9yX3NvdXJjZV8wNDQiLCJwcF9pbm5lciIsInNob3dfaW5uZXIiLCJpbm5lcl9vZl9zZXhwIiwicmVzdWx0XzAwNCIsInN0YXRlXzAwNiIsInN0YXRlXzAwNyIsInJlc3VsdF8wMDUiLCJzZXhwX29mX2lubmVyIiwic3RhdGVfMDIyIiwicmVzdWx0XzAyMCIsImlubmVyX29mX3lvanNvbiIsInJlc3VsdF9maWVsZCIsInN0YXRlX2ZpZWxkIiwic3RhdGVfdmFsdWUiLCJyZXN1bHRfdmFsdWUiLCJ5b2pzb25fb2ZfaW5uZXIiLCJ2X3N0YXRlIiwidl9yZXN1bHQiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDM1IiwiYXJnMF8wMzYiLCJyZXMwXzAzNyIsInNleHBfYXJnc18wMzAiLCJzZXhwXzA0NiIsInRhZ18wNDciLCJzZXhwX2FyZ3NfMDU4Iiwic2V4cF9hcmdzXzA0OCIsImdldF9kaGV4cCIsImdldF9zdGF0ZSIsIm1rX21hcCIsIm1rX21hcCQwIiwiY29yZSIsIm1rX21hcF9hbmRfaW5mb19jdHgiLCJta19tYXBfY3R4IiwiZGhfZXJyIiwiZXJyb3IiLCJlbGFib3JhdGUiLCJleG4kMCIsImV4biIsImV2YWxfeiIsInN1Z2dlc3RfYmFja3BhY2siLCJzdWdnZXN0IiwidG9rZW5fdG9fbGVmdCIsInRva190b19sZWZ0IiwibWtfdW5wYXJzZWRfYnVmZmVyIiwic3VmZml4X29mIiwiY2FuZGlkYXRlIiwiY2FuZGlkYXRlX3N1ZmZpeCIsInpfdG9fY2kiLCJnZXRfYnVmZmVyIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0aW9ucyQwIiwidG9wX3N1Z2dlc3Rpb24iLCJzdWdnZXN0aW9uX3N1ZmZpeCIsImVycm9yX3NvdXJjZV8wMzAiLCJ0ZXN0X21hcF8wMDQiLCJzdGF0dXNlc18wMDYiLCJkZXNjcmlwdGlvbnNfMDA4IiwidG90YWxfMDEwIiwicGFzc2luZ18wMTIiLCJmYWlsaW5nXzAxNCIsInVuZmluaXNoZWRfMDE2IiwiZHVwbGljYXRlc18wMTgiLCJleHRyYV8wMTkiLCJpdGVyXzAzMSIsImZpZWxkX25hbWVfMDIwIiwidGFpbF8wMzIiLCJmaWVsZF9zZXhwXzAyMSQ3IiwiZmllbGRfc2V4cF8wMjEiLCJmaWVsZF9zZXhwXzAyMSQwIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDIxJDEiLCJmaWVsZF9zZXhwXzAyMSQyIiwiZmllbGRfc2V4cF8wMjEkMyIsImZpZWxkX3NleHBfMDIxJDQiLCJmaWVsZF9zZXhwXzAyMSQ1IiwiZmllbGRfc2V4cF8wMjEkNiIsInVuZmluaXNoZWRfMDE3IiwiZmFpbGluZ18wMTUiLCJwYXNzaW5nXzAxMyIsInRvdGFsXzAxMSIsImRlc2NyaXB0aW9uc18wMDkiLCJzdGF0dXNlc18wMDciLCJ0ZXN0X21hcF8wMDUiLCJ1bmZpbmlzaGVkXzA0NyIsImZhaWxpbmdfMDQ1IiwicGFzc2luZ18wNDMiLCJ0b3RhbF8wNDEiLCJkZXNjcmlwdGlvbnNfMDM5Iiwic3RhdHVzZXNfMDM3IiwidGVzdF9tYXBfMDM1IiwiYm5kc18wMzQiLCJibmRzXzAzNCQwIiwiYm5kc18wMzQkMSIsImJuZHNfMDM0JDIiLCJhcmdfMDQwIiwiYm5kc18wMzQkMyIsImFyZ18wMzgiLCJibmRzXzAzNCQ0IiwiYXJnXzAzNiIsImJuZHNfMDM0JDUiLCJ0ZXN0X21hcF9maWVsZCIsInN0YXR1c2VzX2ZpZWxkIiwiZGVzY3JpcHRpb25zX2ZpZWxkIiwidG90YWxfZmllbGQiLCJwYXNzaW5nX2ZpZWxkIiwiZmFpbGluZ19maWVsZCIsInVuZmluaXNoZWRfZmllbGQiLCJ1bmZpbmlzaGVkX3ZhbHVlIiwiZmFpbGluZ192YWx1ZSIsInBhc3NpbmdfdmFsdWUiLCJ0b3RhbF92YWx1ZSIsImRlc2NyaXB0aW9uc192YWx1ZSIsInN0YXR1c2VzX3ZhbHVlIiwidGVzdF9tYXBfdmFsdWUiLCJ2X3VuZmluaXNoZWQiLCJ2X2ZhaWxpbmciLCJ2X3Bhc3NpbmciLCJ2X3RvdGFsIiwidl9kZXNjcmlwdGlvbnMiLCJ2X3N0YXR1c2VzIiwidl90ZXN0X21hcCIsIm1rX3Jlc3VsdHMiLCJkZXNjcmlwdGlvbnMiLCJyZXN1bHRfc3VtbWFyeV9zdHIiLCJuX3N0ciIsIm5zX3N0ciIsInBfc3RyIiwicV9zdHIiLCJyX3N0ciIsIm9uZV9wIiwib25lX3EiLCJtbnlfcCIsIm1ueV9xIiwib2ZfbiIsInRlc3Rfc3VtbWFyeV9zdHIiLCJ0ZXN0X3Jlc3VsdHMiLCJlcnJvcl9zb3VyY2VfMDI0IiwiZXJyb3Jfc291cmNlXzA1OSIsImRfMDA0IiwiZF9sb2NfMDA4IiwiY3R4XzAxMCIsImtuZF8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsIml0ZXJfMDI1IiwiZmllbGRfbmFtZV8wMTYiLCJ0YWlsXzAyNiIsImZpZWxkX3NleHBfMDE3JDUiLCJmaWVsZF9zZXhwXzAxNyIsInhfMDI3IiwiZmllbGRfc2V4cF8wMTckMCIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQxIiwiZnZhbHVlXzAxOSIsImZpZWxkX3NleHBfMDE3JDIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZmllbGRfc2V4cF8wMTckNCIsImtuZF8wMTMiLCJjdHhfMDExIiwiZF9sb2NfMDA5IiwiZF8wMDUiLCJrbmRfMDM3IiwiY3R4XzAzNSIsImRfbG9jXzAzMyIsInN0YXRlXzAzMSIsImRfMDI5IiwiYm5kc18wMjgiLCJibmRzXzAyOCQwIiwiYm5kc18wMjgkMSIsImJuZHNfMDI4JDIiLCJhcmdfMDMwIiwiYm5kc18wMjgkMyIsImRfZmllbGQiLCJkX2xvY19maWVsZCIsImtuZF9maWVsZCIsImtuZF92YWx1ZSIsImRfbG9jX3ZhbHVlIiwiZF92YWx1ZSIsInZfa25kIiwidl9kX2xvYyIsInZfZCIsInVud3JhcF91bnNhZmUiLCJzZXhwXzA0MCIsImZpZWxkX3NleHBzXzA0MSIsImVudl8wNDIiLCJkX2xvY18wNDQiLCJjdHhfMDQ2Iiwia25kXzA0OCIsImR1cGxpY2F0ZXNfMDUwIiwiZXh0cmFfMDUxIiwiaXRlcl8wNjAiLCJzZXhwXzA0MCQwIiwiZmllbGRfc2V4cHNfMDU0IiwiZmllbGRfbmFtZV8wNTIiLCJ0YWlsXzA2MSIsImZpZWxkX3NleHBfMDUzJDQiLCJmaWVsZF9zZXhwXzA1MyIsImZpZWxkX3NleHBfMDUzJDAiLCJmdmFsdWVfMDU1IiwiZmllbGRfc2V4cF8wNTMkMSIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA1MyQyIiwiZnZhbHVlXzA1NyIsImZpZWxkX3NleHBfMDUzJDMiLCJmdmFsdWVfMDU2Iiwia25kXzA0OSIsImN0eF8wNDciLCJkX2xvY18wNDUiLCJlbnZfMDQzIiwia25kXzA3MCIsImN0eF8wNjgiLCJkX2xvY18wNjYiLCJlbnZfMDY0IiwiYXJnXzA3MSIsImJuZHNfMDYzIiwiYXJnXzA2OSIsImJuZHNfMDYzJDAiLCJhcmdfMDY3IiwiYm5kc18wNjMkMSIsImFyZ18wNjUiLCJibmRzXzA2MyQyIiwiZW52X2ZpZWxkIiwiZW52X3ZhbHVlIiwidl9lbnYiLCJkX2xvYyIsImtuZCIsImdldF9jdHgiLCJvYmoiLCJnZXRfa2luZCIsIm9ianMiLCJjb250Iiwid3IiLCJzczEiLCJzczIiLCJ2cyIsInJlcV9hbGxfdmFsdWUkMCIsInJlcV9hbGxfZmluYWwkMCIsInJxIiwicmwiLCJ1bmRvIiwibyIsImRlY29tcG9zZSIsInJlcV92YWx1ZSQwIiwicmVxX2FsbF92YWx1ZSQxIiwicmVxX2ZpbmFsJDAiLCJyZXFfYWxsX2ZpbmFsJDEiLCJsZXQkMSIsImFuZCQwIiwib3RoZXJ3aXNlJDAiLCJ1cGRhdGVfdGVzdCQwIiwidGFrZV9zdGVwJDAiLCJyZXZfY29uY2F0IiwibHMkMCIsInJzJDEiLCJjb21wb3NlIiwiY3R4JDQiLCJjdHgkNSIsImN0eCQ2IiwiZHAkMSIsImN0eCQ3IiwidiQwIiwiY3R4JDgiLCJjdHgkOSIsImN0eCQxMCIsImN0eCQxMSIsImN0eCQxMiIsImN0eCQxMyIsImN0eCQxNCIsImN0eCQxNSIsImN0eCQxNiIsImN0eCQxNyIsIm9wJDMiLCJjdHgkMTgiLCJvcCQ0IiwiZDIkMTEiLCJkMiQxMiIsImN0eCQxOSIsIm9wJDUiLCJjdHgkMjAiLCJvcCQ2IiwiZDIkMTMiLCJyZCIsImN0eCQyMSIsImN0eCQyMiIsImN0eCQyMyIsImxpdCIsInJkJDAiLCJjdHgkMjQiLCJkJDExIiwiZDIkMTQiLCJjdHgkMjUiLCJjdHgkMjYiLCJkMSQxNiIsImQyJDE1IiwiZDIkMTYiLCJjdHgkMjciLCJkMSQxNyIsImN0eCQyOCIsImQxJDE4IiwiZDIkMTciLCJjdHgkMjkiLCJkJDEyIiwiY3R4JDMwIiwiZCQxMyIsImN0eCQzMSIsImQkMTQiLCJjdHgkMzIiLCJkJDE1IiwiY3R4JDMzIiwiZCQxNiIsImN0eCQzNCIsImQkMTciLCJyciIsImxyIiwiY3R4JDM1Iiwic2NyIiwiZCQxOCIsIm4kMiIsInJ1bGUkMCIsImN0eCQzNiIsImQkMTkiLCJuJDMiLCJyciQwIiwibHIkMCIsImN0eCQzNyIsImhpIiwibXYiLCJzY3IkMCIsImQkMjAiLCJkZWNvbXBvc2UkMCIsImV2YWx1YXRlX3dpdGhfaGlzdG9yeSIsIm5leHQiLCJtYXRjaGVzX2V4cCIsImYkMCIsImZ4JDAiLCJmaSIsImZ1IiwiZHgkMCIsImRpIiwiZHUiLCJmcnVsZSIsImZzY3J1dCIsImRydWxlIiwiZHNjcnV0IiwiZmQiLCJmZiIsImRkIiwiZGYiLCJmeCQxIiwiZHgkMSIsImZwJDAiLCJtYXRjaGVzX3BhdCIsImZuYW1lMSIsImZ0eTEiLCJmcDEiLCJkbmFtZTEiLCJkdHkxIiwiZmFyZyIsImZuYW1lIiwiZGFyZyIsImRuYW1lIiwiZG4iLCJmdiIsImR2IiwiZnYkMCIsImR2JDAiLCJmdiQxIiwiZHYkMSIsImZ2JDIiLCJkdiQyIiwiZjIkMyIsImYxJDMiLCJmX29wX2JpbiIsImRfb3BfYmluIiwiZjIkNCIsImYxJDQiLCJmX29wX2JpbiQwIiwiZF9vcF9iaW4kMCIsImYyJDUiLCJmMSQ1IiwiZl9vcF9iaW4kMSIsImRfb3BfYmluJDEiLCJmMiQ2IiwiZjEkNiIsImZfb3BfYmluJDIiLCJkX29wX2JpbiQyIiwiZnYkMyIsImZ0JDAiLCJkdiQzIiwiZHQkMCIsImYyJDciLCJmMSQ3IiwiZnYkNCIsImR2JDQiLCJmaSQwIiwiZnYkNSIsImRpJDAiLCJkdiQ1IiwiZjMiLCJmMiQ4IiwiZjEkOCIsImZjJDAiLCJkYyQwIiwibWF0Y2hlc19ydWwiLCJyZXMkMCIsImYkMiIsImVudiQyIiwiZmMiLCJmcCIsImYkMyIsImYkNCIsImYkNSIsImVudiQxIiwiZHgiLCJkdCIsImZ4IiwiZiQxIiwiZmwiLCJkbCIsIm1hdGNoZXNfdHlwIiwiZGwkMCIsImZsJDAiLCJyZXMkMSIsImZsdF9lbnYiLCJmbHRfZW52JDAiLCJpZHgkMCIsImZsdF9lbnYkMSIsImFjdCQwIiwiaWR4JDEiLCJlcnJvcl9zb3VyY2VfMDgxIiwicHBfY3VycmVudCIsInNob3dfY3VycmVudCIsImN1cnJlbnRfb2Zfc2V4cCIsInNleHBfb2ZfY3VycmVudCIsImFyZzJfMDI3IiwiY3VycmVudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY3VycmVudCIsImZpZWxkX3NleHBzXzAzMyIsImVsYWJfMDM0IiwicHJldmlvdXNfMDM2IiwiY3VycmVudF8wMzgiLCJuZXh0XzA0MCIsImR1cGxpY2F0ZXNfMDQyIiwiZXh0cmFfMDQzIiwiaXRlcl8wNTIiLCJzZXhwXzAzMiQwIiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MyIsImZpZWxkX3NleHBfMDQ1JDQiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDU0IiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDkiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0NyIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDUwIiwiZmllbGRfc2V4cF8wNDUkMyIsImZ2YWx1ZV8wNDgiLCJuZXh0XzA0MSIsImN1cnJlbnRfMDM5IiwicHJldmlvdXNfMDM3IiwiZWxhYl8wMzUiLCJuZXh0XzA2MiIsImN1cnJlbnRfMDYwIiwicHJldmlvdXNfMDU4IiwiZWxhYl8wNTYiLCJhcmdfMDYzIiwiYm5kc18wNTUiLCJhcmdfMDYxIiwiYm5kc18wNTUkMCIsImFyZ18wNTkiLCJibmRzXzA1NSQxIiwiYXJnXzA1NyIsImJuZHNfMDU1JDIiLCJlbGFiX2ZpZWxkIiwicHJldmlvdXNfZmllbGQiLCJjdXJyZW50X2ZpZWxkIiwibmV4dF9maWVsZCIsIm5leHRfdmFsdWUiLCJjdXJyZW50X3ZhbHVlIiwicHJldmlvdXNfdmFsdWUiLCJlbGFiX3ZhbHVlIiwidl9uZXh0Iiwidl9jdXJyZW50Iiwidl9wcmV2aW91cyIsInZfZWxhYiIsInBhY3QiLCJwaWR4IiwiY29tcG9zZWQiLCJtaWR4IiwibWFjdCIsInJjdHgiLCJyaWR4IiwicmFjdCIsImZsdCQwIiwiZmx0JDEiLCJyY3R4JDAiLCJyaWR4JDAiLCJyYWN0JDAiLCJ0eSQzIiwidHkkNCIsInR5JDUiLCJkcGF0IiwiZGV4cCIsInJpIiwiaSQzIiwicmkkMCIsInJzJDIiLCJjdHgkMzgiLCJkcGF0JDAiLCJpJDQiLCJ1JDIiLCJkZXhwJDAiLCJyY3R4JDEiLCJyaWR4JDEiLCJyYWN0JDEiLCJzaG91bGRfaGlkZV9ldmFsX29iaiIsImdldF9lbGFiIiwiZWxhYiIsImdldF9uZXh0X3N0ZXBzIiwiY3VycmVudF9leHByIiwic3RlcF9wZW5kaW5nIiwicHJldmlvdXMiLCJlbyIsInVwZGF0ZV9yZXN1bHQiLCJza2lwcGVkX3N0ZXBzIiwibmV4dF9ldmFsX29ianMiLCJldmFsdWF0ZV9wZW5kaW5nIiwic3RhdGVfcmVmIiwiZW8kMCIsImV2YWx1YXRlX2Z1bGwiLCJ0aW1lb3V0IiwidW5kb19wb2ludCIsInN0ZXBfYmFja3dhcmQiLCJnZXRfanVzdGlmaWNhdGlvbiIsImdldF9oaXN0b3J5Iiwic3RlcHBlciIsInN0ZXBzIiwiaGlkZGVuIiwicHBfcGVyc2lzdGVudCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsImZpZWxkX3NleHBzXzA2NiIsImVsYWJfMDY3IiwicHJldmlvdXNfMDY5IiwiY3VycmVudF8wNzEiLCJkdXBsaWNhdGVzXzA3MyIsImV4dHJhXzA3NCIsIml0ZXJfMDgyIiwic2V4cF8wNjUkMCIsImZpZWxkX3NleHBzXzA3NyIsImZpZWxkX25hbWVfMDc1IiwidGFpbF8wODMiLCJmaWVsZF9zZXhwXzA3NiQzIiwiZmllbGRfc2V4cF8wNzYiLCJ4XzA4NCIsImZpZWxkX3NleHBfMDc2JDAiLCJmdmFsdWVfMDc5IiwiZmllbGRfc2V4cF8wNzYkMSIsImZ2YWx1ZV8wODAiLCJmaWVsZF9zZXhwXzA3NiQyIiwiZnZhbHVlXzA3OCIsImN1cnJlbnRfMDcyIiwicHJldmlvdXNfMDcwIiwiZWxhYl8wNjgiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJjdXJyZW50XzA5MCIsInByZXZpb3VzXzA4OCIsImVsYWJfMDg2IiwiYm5kc18wODUiLCJibmRzXzA4NSQwIiwiYm5kc18wODUkMSIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3NleHAkMCIsInNleHBfb2ZfcGVyc2lzdGVudCQwIiwidG9fcGVyc2lzdGVudCIsInByZXZpb3VzJDAiLCJmcm9tX3BlcnNpc3RlbnQiLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8xMDUiLCJlcnJvcl9zb3VyY2VfMTY1IiwicHBfcGllY2VfZ29hbCIsInNob3dfcGllY2VfZ29hbCIsInBpZWNlX2dvYWxfb2Zfc2V4cCIsInNleHBfb2ZfcGllY2VfZ29hbCIsInBpZWNlX2dvYWxfb2ZfeW9qc29uIiwieW9qc29uX29mX3BpZWNlX2dvYWwiLCJvZl9waWVjZV9nb2FsIiwicHBfZ29hbCIsInNob3dfZ29hbCIsImdvYWxfb2Zfc2V4cCIsInNleHBfb2ZfZ29hbCIsImdvYWxfb2ZfeW9qc29uIiwieW9qc29uX29mX2dvYWwiLCJwcF9tb3ZlIiwic2hvd19tb3ZlIiwibW92ZV9vZl9zZXhwIiwic2V4cF8wMzEiLCJ0YWdfMDMyIiwicmVzMF8wMzUiLCJzZXhwX29mX21vdmUiLCJtb3ZlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZlIiwicHBfanVtcF90YXJnZXQiLCJzaG93X2p1bXBfdGFyZ2V0IiwianVtcF90YXJnZXRfb2Zfc2V4cCIsInNleHBfMDU2IiwidGFnXzA1NyIsInNleHBfb2ZfanVtcF90YXJnZXQiLCJqdW1wX3RhcmdldF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfanVtcF90YXJnZXQiLCJwcF9yZWwiLCJzaG93X3JlbCIsInJlbF9vZl9zZXhwIiwiYXJnMV8wNzEiLCJyZXMxXzA3MyIsInNleHBfb2ZfcmVsIiwiYXJnMV8wNzUiLCJhcmcwXzA3NCIsInJlczFfMDc3IiwicmVsX29mX3lvanNvbiIsInlvanNvbl9vZl9yZWwiLCJwcF9zZWxlY3QiLCJzaG93X3NlbGVjdCIsInNlbGVjdF9vZl9zZXhwIiwic2V4cF8wODIiLCJ0YWdfMDgzIiwic2V4cF9hcmdzXzA5NCIsImFyZzBfMDk1IiwicmVzMF8wOTYiLCJzZXhwX2FyZ3NfMDg5Iiwic2V4cF9vZl9zZWxlY3QiLCJzZWxlY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdCIsInNleHBfMTA3IiwidGFnXzEwOCIsInNleHBfYXJnc18xMTQiLCJhcmcwXzExNSIsInJlczBfMTE2Iiwic2V4cF9hcmdzXzEyNCIsImFyZzBfMTI1IiwicmVzMF8xMjYiLCJzZXhwX2FyZ3NfMTI5IiwicmVzMF8xMzEiLCJyZXMwXzExMSIsInNleHBfYXJnc18xNDQiLCJhcmcwXzE0NSIsImFyZzBfMTQ5IiwicmVzMF8xNTAiLCJhcmcwXzE1OSIsImFyZzBfMTYxIiwicmVzMF8xNjIiLCJzZXhwXzE2NiIsImlzX2VkaXQiLCJ1bnNlbGVjdGVkIiwidGVybXMiLCJ2aWV3X3Rlcm0iLCJtb2R1bGVfb2ZfdCIsImNvbF90YXJnZXQiLCJlZmZlY3RzIiwibWVhc3VyZWQkMCIsImNvbF90YXJnZXQkMCIsInRlcm1zJDAiLCJ2aWV3X3Rlcm0kMCIsInppcHBlcl8wMDQiLCJtZXRhXzAwNiIsIm1ldGFfMDA3IiwiemlwcGVyXzAwNSIsIm1ldGFfMDIyIiwiemlwcGVyXzAyMCIsInppcHBlcl9maWVsZCIsIm1ldGFfZmllbGQiLCJtZXRhX3ZhbHVlIiwiemlwcGVyX3ZhbHVlIiwidl9tZXRhIiwidl96aXBwZXIiLCJpbml0JDAiLCJuZXh0JDAiLCJwcF9hZmZpeCIsInNob3dfYWZmaXgiLCJhZmZpeF9vZl9zZXhwIiwieF8wMzEiLCJzZXhwXzAyOSIsInJlczFfMDI4Iiwic2V4cF9vZl9hZmZpeCIsImFmZml4X29mX3lvanNvbiIsInlvanNvbl9vZl9hZmZpeCIsInNleHBfMDQyIiwiYXJnMV8wMzkiLCJyZXMxXzA0MSIsInJlczFfMDQ3Iiwic2V4cF8wNDkiLCJmaWVsZF9zZXhwc18wNTAiLCJzdGF0ZV8wNTEiLCJoaXN0b3J5XzA1MyIsInJlYWRfb25seV8wNTUiLCJkdXBsaWNhdGVzXzA1NyIsImV4dHJhXzA1OCIsIml0ZXJfMDY2Iiwic2V4cF8wNDkkMCIsImZpZWxkX3NleHBzXzA2MSIsImZpZWxkX25hbWVfMDU5IiwidGFpbF8wNjciLCJmaWVsZF9zZXhwXzA2MCQzIiwiZmllbGRfc2V4cF8wNjAiLCJ4XzA2OCIsImZpZWxkX3NleHBfMDYwJDAiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNjAkMSIsImZ2YWx1ZV8wNjIiLCJmaWVsZF9zZXhwXzA2MCQyIiwiZnZhbHVlXzA2MyIsInJlYWRfb25seV8wNTYiLCJoaXN0b3J5XzA1NCIsInN0YXRlXzA1MiIsInJlYWRfb25seV8wNzQiLCJoaXN0b3J5XzA3MiIsInN0YXRlXzA3MCIsImFyZ18wNzUiLCJibmRzXzA2OSIsImFyZ18wNzMiLCJibmRzXzA2OSQwIiwiYm5kc18wNjkkMSIsImhpc3RvcnlfZmllbGQiLCJyZWFkX29ubHlfZmllbGQiLCJyZWFkX29ubHlfdmFsdWUiLCJoaXN0b3J5X3ZhbHVlIiwidl9yZWFkX29ubHkiLCJ2X2hpc3RvcnkiLCJyZWFkX29ubHkiLCJ1cGRhdGVfeiIsImVkIiwicHV0X3oiLCJ1cGRhdGVfel9vcHQiLCJuZXdfc3RhdGUiLCJoaXN0b3J5IiwiYWZ0ZXIiLCJyZWRvIiwiY2FuX3VuZG8iLCJjYW5fcmVkbyIsInNldF9yZWFkX29ubHkiLCJ0cmFpbGluZ19ob2xlX2N0eCIsImluZm8kMCIsInBwX21vdmFiaWxpdHkiLCJzaG93X21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZhYmlsaXR5IiwibW92YWJpbGl0eSIsImNodW5raW5lc3MiLCJkZWxpbV9pZHgiLCJjaGFyX21heCIsIm5laWdoYm9yX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5JDAiLCJsX2tpZHMiLCJzdXBlcm5oYnJfciQwIiwic3VwZXJuaGJyX2wiLCJyX25oYnIiLCJsX25oYnIiLCJ3JDAiLCJjb250ZW50X3N0cmluZyQwIiwiY29udGVudF9zdHJpbmciLCJwb3Bfb3V0IiwicG9wX21vdmUiLCJpbm5lcl9pbmNyIiwiaW5uZXJfZGVjciIsImlubmVyX3N0YXJ0IiwiZF9pbml0IiwiaW5uZXJfZW5kIiwiY19tYXgiLCJwcmltYXJ5IiwiY19tYXgkMCIsImRsbSIsImlzX2F0X3NpZGVfb2Zfcm93IiwiY29scCIsInJvd3AiLCJkb190b3dhcmRzIiwiYW5jaG9yIiwiZ29hbCIsImN1cnIkMCIsImN1cnJfcCIsImRfY3VyciIsImRfcHJldiIsImFuY2hvciQwIiwiYW5jaG9yX2QiLCJkb192ZXJ0aWNhbCIsImN1cl9wIiwiZG9fZXh0cmVtZSIsInRvX3N0YXJ0IiwidG9fZW5kIiwidG9fZWRnZSIsImRvX3VudGlsIiwibW92ZV9maXJzdCIsInBpZWNlX3AiLCJkb191bnRpbF93cmFwIiwianVtcF90b19pZCIsInZlcnRpY2FsIiwidGFyZ2V0c193aXRoaW5fcm93IiwidG9fYmFja3BhY2tfdGFyZ2V0IiwiZG9uZV9vcl90cnlfYWdhaW4iLCJ6MSIsInoyIiwiZGlzdDEiLCJkaXN0MiIsInpzIiwiY2h1bmsiLCJjaHVuayQwIiwibGFzdF9pbm5lcl9wb3MiLCJkZWxldGVfcmlnaHQiLCJkZWxldGVfbGVmdCIsImNvbnN0cnVjdF9yaWdodCIsImNvbnN0cnVjdF9sZWZ0IiwiY19pZHgiLCJjX2lkeCQwIiwicGFyZW50X2R1b21lcmdlcyIsImJhcmYiLCJkZWxheWVkX2V4cGFuZCIsIm5ld19sYWJlbCIsImV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3IiLCJleHBhbmRfb3JfYmFyZl9yaWdodF9uZWlnaGJvciIsImdldF9kdW9fc2hhcmQiLCJuZWlnaGJvcl9jYW5fZHVvbWVyZ2UiLCJtb25vX2xibCIsInRpbGUkMCIsIm1ha2VfbmV3X3RpbGUiLCJsYmwkMCIsImV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3XyIsInJlcGxhY2VfdGlsZSIsInBwX2FwcGVuZGFiaWxpdHkiLCJzaG93X2FwcGVuZGFiaWxpdHkiLCJhcHBlbmRhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX2FwcGVuZGFiaWxpdHkiLCJhcHBlbmRhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9hcHBlbmRhYmlsaXR5Iiwic2libGluZ19hcHBlbmRhYmlsaXR5IiwiaW5zZXJ0X291dGVyIiwiaW5zZXJ0X2R1byIsImluc2VydF9tb25vcyIsIm9wdF9yZWdyb2xkIiwibW92ZV9pbnRvX2lmX3N0cmluZ2xpdF9vcl9jb21tIiwiY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudCIsImRfaWR4IiwiY2FyZXQkMCIsImlzX3dyaXRlX2FjdGlvbiIsImdvX3oiLCJtZXRhJDAiLCJzZWxlY3RfdGVybV9jdXJyZW50IiwianVtcF90YXJnZXQiLCJzdGF0aWNzIiwiYmluZGluZ19pZCIsImlkJDIiLCJ6JDUiLCJ6JDYiLCJpZCQzIiwieiQ3IiwiaWQkNCIsInokOCIsInokOSIsInRpbGVfaXNfdGVybSIsInN0YXRpY3MkMCIsInokMTAiLCJjYXJldF9zdHIiLCJjb2RlX2ZpZWxkIiwiY29kZV92YWx1ZSIsInZfY29kZSIsInNlZ19vZl96aXAiLCJvZl9waWVjZSIsIm9mX2RlbGltIiwidG9fc3RyaW5nX2Jhc2ljIiwibGluZXNfdG9fbGlzdCIsInRvX3Jvd3MiLCJpbmRlbnRfb2YiLCJta19pbmRlbnQiLCJjYXJldF9yb3ciLCJjYXJldF9yb3ckMCIsInByZXR0eV9wcmludCIsInRvX3N0cmluZ19lZGl0b3IiLCJ0b19zdHJpbmdfc2VsZWN0aW9uIiwiZWRpdG9yIiwidG9fbG9nIiwidG9fbG9nX2ZsYXQiLCJjb2RlIiwiemlwcGVyX29mX3N0cmluZyIsInppcHBlcl9pbml0IiwiaW5zZXJ0IiwicGFzdGVfaW50b196aXAiLCJiYWNrdXBfdGV4dF8wMDYiLCJiYWNrdXBfdGV4dF8wMDciLCJiYWNrdXBfdGV4dF8wMjIiLCJiYWNrdXBfdGV4dF9maWVsZCIsImJhY2t1cF90ZXh0X3ZhbHVlIiwidl9iYWNrdXBfdGV4dCIsInBlcnNpc3QiLCJ1bnBlcnNpc3QiLCJwZXJzaXN0ZWQiLCJvcmllbnQiLCJvcmllbnQkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJwcF9ldmFsX3Jlc3VsdCIsInNob3dfZXZhbF9yZXN1bHQiLCJldmFsX3Jlc3VsdF9vZl9zZXhwIiwiZWxhYl8wMDQiLCJldmFsdWF0aW9uXzAwNiIsInByZXZpb3VzXzAwOCIsInByZXZpb3VzXzAwOSIsImV2YWx1YXRpb25fMDA3IiwiZWxhYl8wMDUiLCJzZXhwX29mX2V2YWxfcmVzdWx0IiwicHJldmlvdXNfMDI3IiwiZXZhbHVhdGlvbl8wMjUiLCJlbGFiXzAyMyIsImV2YWxfcmVzdWx0X29mX3lvanNvbiIsInlvanNvbl9vZl9ldmFsX3Jlc3VsdCIsInNleHBfMDMzIiwidGFnXzAzNCIsImluaXRfZXZhbCIsInVwZGF0ZV9lbGFiIiwiZXZhbHVhdGlvbiIsImVsYWIyIiwidXBkYXRlX3N0ZXBwZXIiLCJwYXJhbSIsInN0ZXBfZm9yd2FyZCIsIm1yIiwicnVuX3BlbmRpbmciLCJ0b2dnbGVfc3RlcHBlciIsImVsYWIkMCIsInByIiwib2ZfcGVyc2lzdGVudCIsInhfMDA0IiwidXBkYXRlX2VsYWJzIiwicmVzdWx0cyIsInRpbWVvdXRfYWxsIiwiYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0Iiwic3RlcHBlcl9yZXN1bHRfb3B0IiwidG9fZXZhbHVhdGUiLCJlbGFicyIsInRvX3N0ZXAiLCJ1X29mIiwiaV9vZiIsInhfMDA4IiwicGljayIsImNsZWFyIiwiaGNwIiwiYWRkX3BhcmVudCIsIm5ld19wYXJlbnQiLCJudW1faW5zdGFuY2VzIiwiaGlpIiwiaGlzIiwiZmluZF9pbnN0YW5jZSIsInVfaW5zdGFuY2VzIiwicGFyZW50cyIsImVycm9yX3NvdXJjZV8wMDkiLCJ4XzAxMCIsImFyZzJfMDA0IiwicmVzMl8wMDciLCJ4XzAxNyIsImFyZzJfMDEzIiwicmVzMl8wMTYiLCJhZGRfaW5zdGFuY2UiLCJoaXMkMSIsImhpaSQxIiwiaGlzJDAiLCJoaWkkMCIsInRvX2hvbGVfaW5zdGFuY2VfaW5mbyIsImhpcCIsInBlIiwiZ2V0X3BlIiwicGVfYWRkIiwiaGlpX2FkZF9pbnN0YW5jZSIsInNleHBfMDE1IiwicHBfZXZhbCIsImNhc2VfaSIsInBwX3VuZXZhbCIsInBwX3VuZXZhbF9ydWxlcyIsInBwX2V2YWxfZW52IiwidSQzIiwidSQ0IiwicmVhc29uJDAiLCJ0cmFja19jaGlsZHJlbl9vZl9ob2xlIiwiaGlpJDIiLCJoaWkkMyIsInRyYWNrX2NoaWxkcmVuX29mX2hvbGVfcnVsZXMiLCJoaWkkNSIsImhpaSQ2IiwiaGlpJDciLCJoaWkkOCIsImhpaSQ0IiwidHJhY2tfY2hpbGRyZW4iLCJoYyIsInBvc3Rwcm9jZXNzIiwidV9yZXN1bHQiLCJlZGl0b3Jfb2ZfY29kZSIsImVkaXRvcnNfZm9yIiwiYWNjX3pzIiwic3oiLCJlZGl0b3JzX29mX3N0cmluZ3MiLCJhZXMiLCJvZSIsImFwcGVuZF9leHAiLCJlYm9keSIsImVkZWYiLCJlYm9keSQwIiwiZWJvZHkkMSIsInRkZWYiLCJlYm9keSQyIiwiZTEyIiwiZTExIiwiZTEyJDAiLCJlYm9keSQzIiwiZWNvbmQiLCJlYm9keSQ0IiwicHBfc3RhdGljcyIsInNob3dfc3RhdGljcyIsInN0YXRpY3Nfb2Zfc2V4cCIsInRlcm1fMDA0IiwiaW5mb19tYXBfMDA2IiwiZXJyb3JfaWRzXzAwOCIsImVycm9yX2lkc18wMDkiLCJpbmZvX21hcF8wMDciLCJ0ZXJtXzAwNSIsInNleHBfb2Zfc3RhdGljcyIsImVycm9yX2lkc18wMjciLCJpbmZvX21hcF8wMjUiLCJ0ZXJtXzAyMyIsInN0YXRpY3Nfb2ZfeW9qc29uIiwiaW5mb19tYXBfZmllbGQiLCJlcnJvcl9pZHNfZmllbGQiLCJlcnJvcl9pZHNfdmFsdWUiLCJpbmZvX21hcF92YWx1ZSIsInlvanNvbl9vZl9zdGF0aWNzIiwidl9lcnJvcl9pZHMiLCJ2X2luZm9fbWFwIiwiZW1wdHlfc3RhdGljcyIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsImVtcHR5Iiwic2luZ2xldG9uIiwicG9zIiwieCIsInVuaW9uIiwiZiIsInQxIiwidDIiLCJ4czIiLCJ4MiIsInAyIiwieHMxIiwieDEiLCJwMSIsIm1hcCIsInJlc3QiLCJtYXBpIiwibWFwayIsImZvbGRfbGVmdCIsInokMCIsImVycm9yX3NvdXJjZV8wMTUiLCJ6ZXJvIiwidF9vZl9zZXhwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfMDA0IiwiY29sXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfMDA3Iiwicm93XzAwNSIsInNleHBfb2ZfdCIsImNvbF8wMjIiLCJyb3dfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJjb21wYXJlIiwicG9zMSIsInBvczIiLCJlcnJvcl9zb3VyY2VfMDA0Iiwib2ZfYW5ub3RfMDAxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJzZXhwX2FyZ3NfMDEzIiwiYXJnMV8wMTUiLCJhcmcwXzAxNCIsInJlczBfMDE2IiwicmVzMV8wMTciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsIm9mX2Fubm90XzAzMSIsImFyZzBfMDMyIiwicmVzMF8wMzMiLCJhcmcxXzAzNSIsImFyZzBfMDM0IiwicmVzMF8wMzYiLCJyZXMxXzAzNyIsImFyZzBfMDM4IiwicmVzMF8wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsImFsaWduIiwibCIsImFubm90IiwicmVtb3ZlX2Fubm90cyIsImxheW91dCIsImxheW91dCQwIiwic3RyaW5nIiwibDIiLCJsMSIsImxheW91dCQxIiwibWtfb2ZfbGF5b3V0IiwidGV4dCIsImNvbHVtbiIsImdvIiwiaW5kZW50IiwiaW5kZW50JDAiLCJpbXAxIiwiaW1wMiIsImluZGVudCQxIiwic3RyaW5nX29mX2xheW91dCIsImltcCIsInMxIiwiczIiLCJyZWNvcmQiLCJzdHJpbmdzX29mX2xheW91dCIsInJlc3QyIiwiZmlyc3Rfc3RyaW5nXzIiLCJmaXJzdF9pbmRlbnRfMiIsInJlc3QxIiwibGFzdF9zdHJpbmdfMSIsImxhc3RfaW5kZW50XzEiLCJzcGxpdF9maXJzdCIsInhzIiwidHJhaWxpbmciLCJmaXJzdCIsInNwbGl0X2xhc3Rfb3B0IiwieXMiLCJ5Iiwic3BsaXRfbGFzdCIsInIiLCJib3giLCJlcnJvcl9zb3VyY2VfMDM5IiwiZXJyb3Jfc291cmNlXzA0NiIsImJveF9vZl9zZXhwIiwiaGVpZ2h0XzAwNCIsIndpZHRoXzAwNiIsIndpZHRoXzAwNyIsImhlaWdodF8wMDUiLCJzZXhwX29mX2JveCIsIndpZHRoXzAyMiIsImhlaWdodF8wMjAiLCJ0X29mX3NleHAkMCIsIm9mX2Fubm90XzAyNCIsInNleHBfMDI2IiwiZmllbGRfc2V4cHNfMDI3IiwibGF5b3V0XzAyOCIsIm1ldHJpY3NfMDMwIiwiZHVwbGljYXRlc18wMzIiLCJleHRyYV8wMzMiLCJzZXhwXzAyNiQwIiwiZmllbGRfc2V4cHNfMDM2IiwiZmllbGRfbmFtZV8wMzQiLCJ0YWlsXzA0MSIsImZpZWxkX3NleHBfMDM1JDIiLCJmaWVsZF9zZXhwXzAzNSIsInhfMDQyIiwiZmllbGRfc2V4cF8wMzUkMCIsImZ2YWx1ZV8wMzciLCJmaWVsZF9zZXhwXzAzNSQxIiwiZnZhbHVlXzAzOCIsIm1ldHJpY3NfMDMxIiwibGF5b3V0XzAyOSIsIm9mX2Fubm90XzA0MyIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJhcmcwXzA1NiIsInJlczBfMDU3Iiwic2V4cF9hcmdzXzA2NyIsImFyZzFfMDY5IiwiYXJnMF8wNjgiLCJyZXMwXzA3MCIsInJlczFfMDcxIiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzA1MCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJvZl9hbm5vdF8wNzMiLCJtZXRyaWNzXzA3NyIsImxheW91dF8wNzUiLCJhcmdfMDc4IiwiYm5kc18wNzQiLCJhcmdfMDc2Iiwic2V4cF9vZl90JDAiLCJibmRzXzA3NCQwIiwib2ZfYW5ub3RfMDc5IiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsImFyZzFfMDg5IiwiYXJnMF8wODgiLCJyZXMwXzA5MCIsInJlczFfMDkxIiwiaGVpZ2h0IiwibSIsIndpZHRoIiwib3B0Iiwic3RoIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJjb2wiLCJyb3ciLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsInN0aCQwIiwibWlkIiwidGFibGUiLCJtayIsIm1pZF9ib3giLCJsJDAiLCJidyIsImJoIiwiYm91bmRpbmdfYm94IiwibCQxIiwibSQyIiwib3ZlcmZsb3dfY29zdCIsImhlaWdodF9jb3N0IiwibWtfaGVpZ2h0IiwibWtfb3ZlcmZsb3ciLCJpbmYiLCJhZGQiLCJjMSIsImMyIiwiZXEiLCJsdCIsImxlcSIsImVycm9yX3NvdXJjZV8wMTYiLCJlcnJvcl9zb3VyY2VfMDIzIiwiZXJyb3Jfc291cmNlXzA5NiIsImVycm9yX3NvdXJjZV8xMDMiLCJoYXNoIiwiZXF1YWwiLCJ3MiIsIncxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJtZW1fMDA1IiwiZG9jXzAwNyIsImR1cGxpY2F0ZXNfMDA5IiwiZXh0cmFfMDEwIiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxMyIsImZpZWxkX25hbWVfMDExIiwidGFpbF8wMTgiLCJmaWVsZF9zZXhwXzAxMiQyIiwiZmllbGRfc2V4cF8wMTIiLCJ4XzAxOSIsImZpZWxkX3NleHBfMDEyJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTIkMSIsImRvY18wMDgiLCJtZW1fMDA2Iiwib2ZfYW5ub3RfMDIwIiwic2V4cF8wMjUiLCJ0YWdfMDI2Iiwic2V4cF9hcmdzXzAzOSIsInJlczBfMDQxIiwic2V4cF9hcmdzXzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4Iiwic2V4cF9hcmdzXzAzMiIsImFyZzFfMDM0IiwiYXJnMF8wMzMiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJ0X29mX3NleHAkMSIsInRfb2Zfc2V4cCQyIiwib2ZfYW5ub3RfMDgxIiwic2V4cF8wODMiLCJmaWVsZF9zZXhwc18wODQiLCJtZW1fMDg1IiwiZG9jXzA4NyIsImR1cGxpY2F0ZXNfMDg5IiwiZXh0cmFfMDkwIiwic2V4cF8wODMkMCIsImZpZWxkX3NleHBzXzA5MyIsImZpZWxkX25hbWVfMDkxIiwidGFpbF8wOTgiLCJmaWVsZF9zZXhwXzA5MiQyIiwiZmllbGRfc2V4cF8wOTIiLCJ4XzA5OSIsImZpZWxkX3NleHBfMDkyJDAiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTIkMSIsImZ2YWx1ZV8wOTQiLCJkb2NfMDg4IiwibWVtXzA4NiIsIm9mX2Fubm90XzEwMCIsInNleHBfMTA1IiwidGFnXzEwNiIsInNleHBfYXJnc18xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwic2V4cF9hcmdzXzEyNCIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4Iiwic2V4cF9hcmdzXzExMiIsImFyZzFfMTE0IiwiYXJnMF8xMTMiLCJyZXMwXzExNSIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzEzMSIsImFyZzFfMTMzIiwiYXJnMF8xMzIiLCJyZXMwXzEzNCIsInJlczFfMTM1Iiwic2V4cF9hcmdzXzEwNyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJvZl9hbm5vdF8xMzciLCJkb2NfMTQxIiwibWVtXzEzOSIsImFyZ18xNDIiLCJibmRzXzEzOCIsImFyZ18xNDAiLCJibmRzXzEzOCQwIiwib2ZfYW5ub3RfMTQzIiwiYXJnMF8xNDQiLCJyZXMwXzE0NSIsImFyZzFfMTQ3IiwiYXJnMF8xNDYiLCJyZXMwXzE0OCIsInJlczFfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzFfMTUzIiwiYXJnMF8xNTIiLCJyZXMwXzE1NCIsInJlczFfMTU1IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU4IiwicmVzMV8xNTkiLCJ0X29mX3QiLCJ0IiwiZG9jIiwiZmFpbCIsInNwYWNlIiwiaW5kZW50X2FuZF9hbGlnbiIsImhjYXQiLCJoY2F0cyIsImRvY3MiLCJoc2VwIiwiaHNlcHMiLCJ2c2VwIiwidnNlcHMiLCJjaG9pY2UiLCJjaG9pY2VzIiwibWFwX3QiLCJkIiwibWFwX2Fubm90IiwiZDIiLCJkMSIsImQkMCIsImQkMSIsImQyJDAiLCJkMSQwIiwiYWxsIiwibHMxIiwibHMyIiwibV91bmlvbiIsImNvc3RfdW5pb24iLCJjb3N0MiIsImNvc3QxIiwibGF5b3V0X29mX2RvYyIsImgiLCJwb3MkMCIsImtleSIsInZhbHVlIiwidmFsdWUkMCIsImNvc3QiLCJvdmVyZmxvdyIsInoiLCJsYXlvdXQxIiwibGF5b3V0MiIsImxheW91dHMiLCJwIiwiYyIsImwxJDAiLCJsYXlvdXRfb2ZfZG9jJDAiLCJ4X2Nvc3QiLCJ4X3BvcyIsInNleHBfYXJnc18wMTgiLCJhcmcwXzAxOSIsInJlczBfMDIwIiwicmVzMF8wMTUiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJvZl9hbm5vdF8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhbm5vdCQwIiwiYm94ZXMiLCJib3hlczEiLCJsZWFkaW5nJDAiLCJib3hlczIiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwicHBfc3ludGF4X3Jlc3VsdCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzaG93X3N5bnRheF9yZXN1bHQiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJlc3VsdHNfMDA0IiwicGVyY2VudGFnZV8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsInNleHBfb2Zfc3ludGF4X3Jlc3VsdCIsInBlcmNlbnRhZ2VfMDIyIiwicmVzdWx0c18wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInN5bnRheF9yZXN1bHRfb2ZfeW9qc29uIiwieW9qc29uIiwiZmllbGRfeW9qc29ucyIsInJlc3VsdHNfZmllbGQiLCJwZXJjZW50YWdlX2ZpZWxkIiwiZHVwbGljYXRlcyIsImV4dHJhIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInBlcmNlbnRhZ2VfdmFsdWUiLCJyZXN1bHRzX3ZhbHVlIiwieW9qc29uX29mX3N5bnRheF9yZXN1bHQiLCJ2X3BlcmNlbnRhZ2UiLCJ2X3Jlc3VsdHMiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJmaW5kX3Zhcl91cGF0IiwibmFtZSIsInVwYXQiLCJ1cGF0JDAiLCJ1cGF0JDEiLCJ1cDEiLCJ1cGF0JDIiLCJ1cGF0JDMiLCJ1cDEkMCIsInVwYXQkNCIsImwiLCJhY2MiLCJ1cCIsInZhcl9tZW50aW9uIiwidWV4cCIsInVleHAkMCIsImJvZHkiLCJhcmdzIiwiYm9keSQwIiwiZGVmIiwicCIsInVleHAkMyIsInUyIiwidTEkMCIsInVleHAkMSIsInVleHAkMiIsInUxIiwibCQwIiwiZyIsInBlIiwiZSIsInVlIiwidmFyX2FwcGxpZWQiLCJ1ZXhwJDQiLCJ1ZXhwJDUiLCJ1ZXhwJDYiLCJ1MSQxIiwiZmluZF9pbl9sZXQiLCJkZWYkMCIsInBsIiwidWwiLCJkZWYkMiIsImRlZiQxIiwiZmluZF9mbiIsImwkMSIsImwkMiIsInVsJDAiLCJsJDMiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwidTIkMCIsInUiLCJ1MiQxIiwiaXNfdGFpbF9yZWN1cnNpdmUiLCJjaGVjayIsInByZWRpY2F0ZXMiLCJwcmVkIiwicmVzdWx0cyIsImxlbmd0aCIsInJlcyIsInBhc3NpbmciLCJwcF9wcmVkaWNhdGUiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsInNob3dfcHJlZGljYXRlIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDMwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInNleHBfYXJnc18wNDUiLCJhcmcwXzA0NiIsInJlczBfMDQ3Iiwic2V4cF9hcmdzXzAzNSIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwX2FyZ3NfMDQwIiwiYXJnMF8wNDEiLCJyZXMwXzA0MiIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wNDgiLCJyZXMwXzA0OSIsImFyZzBfMDUwIiwicmVzMF8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDE2IiwiZXJyb3Jfc291cmNlXzA0MSIsImVycm9yX3NvdXJjZV8wNTgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wODQiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8xMTMiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8yMDUiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8yMTIiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8yNDQiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8yNTkiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8yOTAiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwicHBfd3JvbmdfaW1wbCIsInBvbHlfY29kZSIsInNob3dfd3JvbmdfaW1wbCIsIndyb25nX2ltcGxfb2Zfc2V4cCIsIm9mX2NvZGVfMDAxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJpbXBsXzAwNSIsImhpbnRfMDA3IiwiZHVwbGljYXRlc18wMDkiLCJleHRyYV8wMTAiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDEzIiwiZmllbGRfbmFtZV8wMTEiLCJ0YWlsXzAxOCIsImZpZWxkX3NleHBfMDEyJDIiLCJmaWVsZF9zZXhwXzAxMiIsInhfMDE5IiwiZmllbGRfc2V4cF8wMTIkMCIsImZ2YWx1ZV8wMTUiLCJmaWVsZF9zZXhwXzAxMiQxIiwiaGludF8wMDgiLCJpbXBsXzAwNiIsInNleHBfb2Zfd3JvbmdfaW1wbCIsIm9mX2NvZGVfMDIwIiwiaGludF8wMjQiLCJpbXBsXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImJuZHNfMDIxJDAiLCJ3cm9uZ19pbXBsX29mX3lvanNvbiIsIm9mX2NvZGUiLCJpbXBsX2ZpZWxkIiwiaGludF9maWVsZCIsImhpbnRfdmFsdWUiLCJpbXBsX3ZhbHVlIiwieW9qc29uX29mX3dyb25nX2ltcGwiLCJ2X2hpbnQiLCJ2X2ltcGwiLCJwcF9oaWRkZW5fdGVzdHMiLCJzaG93X2hpZGRlbl90ZXN0cyIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMjYiLCJmaWVsZF9zZXhwc18wMjkiLCJ0ZXN0c18wMzAiLCJoaW50c18wMzIiLCJkdXBsaWNhdGVzXzAzNCIsImV4dHJhXzAzNSIsInNleHBfMDI4JDAiLCJmaWVsZF9zZXhwc18wMzgiLCJmaWVsZF9uYW1lXzAzNiIsInRhaWxfMDQzIiwiZmllbGRfc2V4cF8wMzckMiIsImZpZWxkX3NleHBfMDM3IiwieF8wNDQiLCJmaWVsZF9zZXhwXzAzNyQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM3JDEiLCJmdmFsdWVfMDM5IiwiaGludHNfMDMzIiwidGVzdHNfMDMxIiwic2V4cF9vZl9oaWRkZW5fdGVzdHMiLCJvZl9jb2RlXzA0NSIsImhpbnRzXzA0OSIsInRlc3RzXzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwiaGlkZGVuX3Rlc3RzX29mX3lvanNvbiIsInRlc3RzX2ZpZWxkIiwiaGludHNfZmllbGQiLCJoaW50c192YWx1ZSIsInRlc3RzX3ZhbHVlIiwieW9qc29uX29mX2hpZGRlbl90ZXN0cyIsInZfaGludHMiLCJ2X3Rlc3RzIiwicHBfaGludCIsInNob3dfaGludCIsImhpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaGludCIsImhpbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpbnQiLCJwcF9zeW50YXhfdGVzdCIsInNob3dfc3ludGF4X3Rlc3QiLCJhMSIsInN5bnRheF90ZXN0X29mX3NleHAiLCJzZXhwXzA1NyIsImFyZzFfMDU0IiwiYXJnMF8wNTMiLCJyZXMxXzA1NiIsInNleHBfb2Zfc3ludGF4X3Rlc3QiLCJhcmcxXzA2MCIsImFyZzBfMDU5IiwicmVzMF8wNjEiLCJyZXMxXzA2MiIsInN5bnRheF90ZXN0X29mX3lvanNvbiIsInYxIiwidjEkMCIsInlvanNvbl9vZl9zeW50YXhfdGVzdCIsInBwX3N5bnRheF90ZXN0cyIsInNob3dfc3ludGF4X3Rlc3RzIiwic3ludGF4X3Rlc3RzX29mX3NleHAiLCJ4XzA2NCIsInNleHBfb2Zfc3ludGF4X3Rlc3RzIiwieF8wNjUiLCJzeW50YXhfdGVzdHNfb2ZfeW9qc29uIiwidCIsInlvanNvbl9vZl9zeW50YXhfdGVzdHMiLCJ2IiwicHBfeW91cl90ZXN0cyIsInNob3dfeW91cl90ZXN0cyIsInlvdXJfdGVzdHNfb2Zfc2V4cCIsIm9mX2NvZGVfMDY2Iiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJ0ZXN0c18wNzAiLCJyZXF1aXJlZF8wNzIiLCJwcm92aWRlZF8wNzQiLCJkdXBsaWNhdGVzXzA3NiIsImV4dHJhXzA3NyIsInNleHBfMDY4JDAiLCJmaWVsZF9zZXhwc18wODAiLCJmaWVsZF9uYW1lXzA3OCIsInRhaWxfMDg2IiwiZmllbGRfc2V4cF8wNzkkMyIsImZpZWxkX3NleHBfMDc5IiwieF8wODciLCJmaWVsZF9zZXhwXzA3OSQwIiwiZnZhbHVlXzA4MyIsImZpZWxkX3NleHBfMDc5JDEiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMiIsImZ2YWx1ZV8wODEiLCJwcm92aWRlZF8wNzUiLCJyZXF1aXJlZF8wNzMiLCJ0ZXN0c18wNzEiLCJzZXhwX29mX3lvdXJfdGVzdHMiLCJvZl9jb2RlXzA4OCIsInByb3ZpZGVkXzA5NCIsInJlcXVpcmVkXzA5MiIsInRlc3RzXzA5MCIsImFyZ18wOTUiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJ5b3VyX3Rlc3RzX29mX3lvanNvbiIsInJlcXVpcmVkX2ZpZWxkIiwicHJvdmlkZWRfZmllbGQiLCJmdmFsdWUkMSIsInByb3ZpZGVkX3ZhbHVlIiwicmVxdWlyZWRfdmFsdWUiLCJ5b2pzb25fb2ZfeW91cl90ZXN0cyIsInZfcHJvdmlkZWQiLCJ2X3JlcXVpcmVkIiwiYXJnJDEiLCJibmRzJDEiLCJwcF9wb2ludF9kaXN0cmlidXRpb24iLCJzaG93X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwic2V4cF8wOTciLCJmaWVsZF9zZXhwc18wOTgiLCJ0ZXN0X3ZhbGlkYXRpb25fMDk5IiwibXV0YXRpb25fdGVzdGluZ18xMDEiLCJpbXBsX2dyYWRpbmdfMTAzIiwiZHVwbGljYXRlc18xMDUiLCJleHRyYV8xMDYiLCJzZXhwXzA5NyQwIiwiZmllbGRfc2V4cHNfMTA5IiwiZmllbGRfbmFtZV8xMDciLCJ0YWlsXzExNSIsImZpZWxkX3NleHBfMTA4JDMiLCJmaWVsZF9zZXhwXzEwOCIsInhfMTE2IiwiZmllbGRfc2V4cF8xMDgkMCIsImZ2YWx1ZV8xMTIiLCJmaWVsZF9zZXhwXzEwOCQxIiwiZnZhbHVlXzExMSIsImZpZWxkX3NleHBfMTA4JDIiLCJmdmFsdWVfMTEwIiwiaW1wbF9ncmFkaW5nXzEwNCIsIm11dGF0aW9uX3Rlc3RpbmdfMTAyIiwidGVzdF92YWxpZGF0aW9uXzEwMCIsInNleHBfb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwiaW1wbF9ncmFkaW5nXzEyMiIsIm11dGF0aW9uX3Rlc3RpbmdfMTIwIiwidGVzdF92YWxpZGF0aW9uXzExOCIsImFyZ18xMjMiLCJibmRzXzExNyIsImFyZ18xMjEiLCJibmRzXzExNyQwIiwiYXJnXzExOSIsImJuZHNfMTE3JDEiLCJwb2ludF9kaXN0cmlidXRpb25fb2ZfeW9qc29uIiwidGVzdF92YWxpZGF0aW9uX2ZpZWxkIiwibXV0YXRpb25fdGVzdGluZ19maWVsZCIsImltcGxfZ3JhZGluZ19maWVsZCIsImltcGxfZ3JhZGluZ192YWx1ZSIsIm11dGF0aW9uX3Rlc3RpbmdfdmFsdWUiLCJ0ZXN0X3ZhbGlkYXRpb25fdmFsdWUiLCJ5b2pzb25fb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwidl9pbXBsX2dyYWRpbmciLCJ2X211dGF0aW9uX3Rlc3RpbmciLCJ2X3Rlc3RfdmFsaWRhdGlvbiIsInZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiIsImltcGxfZ3JhZGluZyIsIm11dGF0aW9uX3Rlc3RpbmciLCJ0ZXN0X3ZhbGlkYXRpb24iLCJwcF9wIiwic2hvd19wIiwicF9vZl9zZXhwIiwib2ZfY29kZV8xMjQiLCJzZXhwXzEyNiIsImZpZWxkX3NleHBzXzEyNyIsInRpdGxlXzEyOCIsInZlcnNpb25fMTMwIiwibW9kdWxlX25hbWVfMTMyIiwicHJvbXB0XzEzNCIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xMzYiLCJwcmVsdWRlXzEzOCIsImNvcnJlY3RfaW1wbF8xNDAiLCJ5b3VyX3Rlc3RzXzE0MiIsInlvdXJfaW1wbF8xNDQiLCJoaWRkZW5fYnVnc18xNDYiLCJoaWRkZW5fdGVzdHNfMTQ4Iiwic3ludGF4X3Rlc3RzXzE1MCIsImR1cGxpY2F0ZXNfMTUyIiwiZXh0cmFfMTUzIiwiaXRlcl8xNzAiLCJzZXhwXzEyNiQwIiwiZmllbGRfc2V4cHNfMTU2IiwiZmllbGRfbmFtZV8xNTQiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTU1JDEyIiwiZmllbGRfc2V4cF8xNTUiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTU1JDAiLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTUkMSIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1NSQyIiwiZnZhbHVlXzE2NyIsImZpZWxkX3NleHBfMTU1JDMiLCJmdmFsdWVfMTY4IiwiZmllbGRfc2V4cF8xNTUkNCIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NSQ1IiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU1JDYiLCJmdmFsdWVfMTYzIiwiZmllbGRfc2V4cF8xNTUkNyIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NSQ4IiwiZnZhbHVlXzE2NiIsImZpZWxkX3NleHBfMTU1JDkiLCJmdmFsdWVfMTU4IiwiZmllbGRfc2V4cF8xNTUkMTAiLCJmdmFsdWVfMTU5IiwiZmllbGRfc2V4cF8xNTUkMTEiLCJmdmFsdWVfMTYyIiwic3ludGF4X3Rlc3RzXzE1MSIsImhpZGRlbl90ZXN0c18xNDkiLCJoaWRkZW5fYnVnc18xNDciLCJ5b3VyX2ltcGxfMTQ1IiwieW91cl90ZXN0c18xNDMiLCJjb3JyZWN0X2ltcGxfMTQxIiwicHJlbHVkZV8xMzkiLCJwb2ludF9kaXN0cmlidXRpb25fMTM3IiwicHJvbXB0XzEzNSIsIm1vZHVsZV9uYW1lXzEzMyIsInZlcnNpb25fMTMxIiwidGl0bGVfMTI5Iiwic2V4cF9vZl9wIiwib2ZfY29kZV8xNzMiLCJzeW50YXhfdGVzdHNfMTk3IiwiaGlkZGVuX3Rlc3RzXzE5NSIsImhpZGRlbl9idWdzXzE5MyIsInlvdXJfaW1wbF8xOTEiLCJ5b3VyX3Rlc3RzXzE4OSIsImNvcnJlY3RfaW1wbF8xODciLCJwcmVsdWRlXzE4NSIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xODMiLCJwcm9tcHRfMTgxIiwibW9kdWxlX25hbWVfMTc5IiwidmVyc2lvbl8xNzciLCJ0aXRsZV8xNzUiLCJhcmdfMTk4IiwiYm5kc18xNzQiLCJhcmdfMTk2IiwiYm5kc18xNzQkMCIsImFyZ18xOTQiLCJibmRzXzE3NCQxIiwiYXJnXzE5MiIsImJuZHNfMTc0JDIiLCJhcmdfMTkwIiwiYm5kc18xNzQkMyIsImFyZ18xODgiLCJibmRzXzE3NCQ0IiwiYXJnXzE4NiIsImJuZHNfMTc0JDUiLCJhcmdfMTg0IiwiYm5kc18xNzQkNiIsImFyZ18xODIiLCJibmRzXzE3NCQ3IiwiYXJnXzE4MCIsImJuZHNfMTc0JDgiLCJhcmdfMTc4IiwiYm5kc18xNzQkOSIsImFyZ18xNzYiLCJibmRzXzE3NCQxMCIsInBfb2ZfeW9qc29uIiwidGl0bGVfZmllbGQiLCJ2ZXJzaW9uX2ZpZWxkIiwibW9kdWxlX25hbWVfZmllbGQiLCJwcm9tcHRfZmllbGQiLCJwb2ludF9kaXN0cmlidXRpb25fZmllbGQiLCJwcmVsdWRlX2ZpZWxkIiwiY29ycmVjdF9pbXBsX2ZpZWxkIiwieW91cl90ZXN0c19maWVsZCIsInlvdXJfaW1wbF9maWVsZCIsImhpZGRlbl9idWdzX2ZpZWxkIiwiaGlkZGVuX3Rlc3RzX2ZpZWxkIiwic3ludGF4X3Rlc3RzX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJmdmFsdWUkOSIsImZ2YWx1ZSQxMCIsInN5bnRheF90ZXN0c192YWx1ZSIsImhpZGRlbl90ZXN0c192YWx1ZSIsImhpZGRlbl9idWdzX3ZhbHVlIiwieW91cl9pbXBsX3ZhbHVlIiwieW91cl90ZXN0c192YWx1ZSIsImNvcnJlY3RfaW1wbF92YWx1ZSIsInByZWx1ZGVfdmFsdWUiLCJwb2ludF9kaXN0cmlidXRpb25fdmFsdWUiLCJwcm9tcHRfdmFsdWUiLCJtb2R1bGVfbmFtZV92YWx1ZSIsInZlcnNpb25fdmFsdWUiLCJ0aXRsZV92YWx1ZSIsInlvanNvbl9vZl9wIiwidl9zeW50YXhfdGVzdHMiLCJ2X2hpZGRlbl90ZXN0cyIsInZfaGlkZGVuX2J1Z3MiLCJ2X3lvdXJfaW1wbCIsInZfeW91cl90ZXN0cyIsInZfY29ycmVjdF9pbXBsIiwidl9wcmVsdWRlIiwidl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X3Byb21wdCIsInZfbW9kdWxlX25hbWUiLCJ2X3ZlcnNpb24iLCJ2X3RpdGxlIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiYXJnJDgiLCJibmRzJDgiLCJhcmckOSIsImJuZHMkOSIsImFyZyQxMCIsImJuZHMkMTAiLCJwcF9rZXkiLCJzaG93X2tleSIsImtleV9vZl9zZXhwIiwic2V4cF8yMDQiLCJhcmcxXzIwMSIsImFyZzBfMjAwIiwicmVzMF8yMDIiLCJyZXMxXzIwMyIsInNleHBfb2Zfa2V5IiwiYXJnMV8yMDciLCJhcmcwXzIwNiIsInJlczBfMjA4IiwicmVzMV8yMDkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBwX3BvcyIsInNob3dfcG9zIiwicG9zX29mX3NleHAiLCJzZXhwXzIxNCIsInRhZ18yMTUiLCJzZXhwX2FyZ3NfMjE2IiwiYXJnMF8yMTciLCJyZXMwXzIxOCIsInNleHBfb2ZfcG9zIiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsInBvc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9zIiwicHBfc3BlYyIsInNob3dfc3BlYyIsInNwZWNfb2Zfc2V4cCIsInhfMjIyIiwic2V4cF9vZl9zcGVjIiwieF8yMjMiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwicHBfdHJhbnNpdGlvbmFyeV9zcGVjIiwic2hvd190cmFuc2l0aW9uYXJ5X3NwZWMiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2Zfc2V4cCIsInhfMjI1Iiwic2V4cF9vZl90cmFuc2l0aW9uYXJ5X3NwZWMiLCJ4XzIyNiIsInRyYW5zaXRpb25hcnlfc3BlY19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwibWFwIiwiZiIsIndyb25nX2ltcGwiLCJwcF9lZHMiLCJzaG93X2VkcyIsImVkc19vZl9zZXhwIiwieF8yMjgiLCJzZXhwX29mX2VkcyIsInhfMjI5IiwiZWRzX29mX3lvanNvbiIsInlvanNvbl9vZl9lZHMiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF8yMzEiLCJmaWVsZF9zZXhwc18yMzIiLCJwb3NfMjMzIiwiZWRzXzIzNSIsImR1cGxpY2F0ZXNfMjM3IiwiZXh0cmFfMjM4Iiwic2V4cF8yMzEkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNDYiLCJmaWVsZF9zZXhwXzI0MCQyIiwiZmllbGRfc2V4cF8yNDAiLCJ4XzI0NyIsImZpZWxkX3NleHBfMjQwJDAiLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkMSIsImZ2YWx1ZV8yNDIiLCJlZHNfMjM2IiwicG9zXzIzNCIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMjUxIiwicG9zXzI0OSIsImFyZ18yNTIiLCJibmRzXzI0OCIsImFyZ18yNTAiLCJibmRzXzI0OCQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImVkcyIsInBwX3BlcnNpc3RlbnRfc3RhdGUiLCJzaG93X3BlcnNpc3RlbnRfc3RhdGUiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3NleHAiLCJzZXhwXzI2NCIsImFyZzFfMjYxIiwiYXJnMF8yNjAiLCJyZXMwXzI2MiIsInNleHBfMjU4IiwiYXJnMV8yNTUiLCJhcmcwXzI1NCIsInJlczBfMjU2IiwicmVzMV8yNTciLCJyZXMxXzI2MyIsInNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImFyZzFfMjcwIiwiYXJnMF8yNjkiLCJyZXMwXzI3MSIsImFyZzFfMjY2IiwiYXJnMF8yNjUiLCJyZXMwXzI2NyIsInJlczFfMjY4IiwicmVzMV8yNzIiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X3N0YXRlIiwiZWRpdG9yX29mX3N0YXRlIiwicG9zIiwiaSIsInB1dF9lZGl0b3IiLCJzdGF0ZSIsImVkaXRvciIsIm4iLCJlZGl0b3JzIiwiZWRpdG9yX3Bvc2l0aW9ucyIsInBvc2l0aW9uZWRfZWRpdG9ycyIsImlkeF9vZl9wb3MiLCJwb3Nfb2ZfaWR4IiwiaWR4Iiwic3dpdGNoX2VkaXRvciIsImluc3RydWN0b3JfbW9kZSIsImV4ZXJjaXNlIiwiemlwcGVyX29mX2NvZGUiLCJjb2RlIiwiemlwcGVyIiwidHJhbnNpdGlvbiIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInRlc3RzIiwieW91cl90ZXN0cyQwIiwieW91cl9pbXBsJDAiLCJoaW50IiwiaW1wbCIsImltcGwkMCIsImhpZGRlbl9idWdzJDAiLCJoaW50cyIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiIsImVkc19vZl9zcGVjIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwid3JhcCIsInRlcm1fb2YiLCJzdGl0Y2gzIiwiZWQxIiwiZWQyIiwiZWQzIiwic3RpdGNoX3Rlcm0iLCJpbnN0cnVjdG9yIiwieW91cl9pbXBsX3Rlcm0iLCJwcmVsdWRlX3Rlcm0iLCJ1c2VyX2ltcGxfdGVybSIsInRlc3RfdmFsaWRhdGlvbl90ZXJtIiwidXNlcl90ZXN0c190ZXJtIiwiaGlkZGVuX3Rlc3RzX3Rlcm0iLCJzdGl0Y2hfdGVybSQwIiwic3RpdGNoX3N0YXRpYyIsInNldHRpbmdzIiwibWsiLCJ0ZXJtX3JhbmdlcyIsImluZm9fbWFwIiwic3RpdGNoX3N0YXRpYyQwIiwic3RhdGljc19vZl9zdGljaGVkIiwicyIsInN0YXRpY3Nfb2YiLCJoaWRkZW5fYnVnc19rZXkiLCJrZXlfZm9yX3N0YXRpY3MiLCJzcGxpY2VkX2VsYWJzIiwidXNlcl90ZXN0cyIsInVzZXJfaW1wbCIsImVsYWIiLCJoaWRkZW5fYnVnIiwibWtfc3RhdGljcyIsInN0aXRjaGVkIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGl0Y2hfZHluYW1pYyIsInJlc3VsdF9vZiIsInJlc3VsdHMkMCIsInRlc3RfdmFsaWRhdGlvbiQwIiwidXNlcl9pbXBsJDAiLCJ1c2VyX3Rlc3RzJDAiLCJpbnN0cnVjdG9yJDAiLCJzdGF0aWNzX2l0ZW0iLCJzdGl0Y2hfZHluYW1pYyQwIiwiZWRpdG9yX3BwIiwic2VyaWFsaXphdGlvbiIsImV4cG9ydF9tb2R1bGUiLCJyZWNvcmQiLCJkYXRhIiwidHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAiLCJleHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUiLCJleHBvcnRfZ3JhZGluZ19tb2R1bGUiLCJoZWFkZXIiLCJibGFua19zcGVjIiwicmVxdWlyZWRfdGVzdHMiLCJwcm92aWRlZF90ZXN0cyIsIm51bV93cm9uZ19pbXBscyIsInBwX2V4ZXJjaXNlX2V4cG9ydCIsInNob3dfZXhlcmNpc2VfZXhwb3J0IiwiZXhlcmNpc2VfZXhwb3J0X29mX3NleHAiLCJzZXhwXzI3NCIsImZpZWxkX3NleHBzXzI3NSIsImN1cl9leGVyY2lzZV8yNzYiLCJleGVyY2lzZV9kYXRhXzI3OCIsImR1cGxpY2F0ZXNfMjgwIiwiZXh0cmFfMjgxIiwic2V4cF8yNzQkMCIsImZpZWxkX3NleHBzXzI4NCIsImZpZWxkX25hbWVfMjgyIiwidGFpbF8yOTQiLCJmaWVsZF9zZXhwXzI4MyQyIiwiZmllbGRfc2V4cF8yODMiLCJ4XzI5NSIsImZpZWxkX3NleHBfMjgzJDAiLCJzZXhwXzI4OSIsImFyZzFfMjg2IiwiYXJnMF8yODUiLCJyZXMwXzI4NyIsInJlczFfMjg4IiwiZnZhbHVlXzI5MSIsImZpZWxkX3NleHBfMjgzJDEiLCJmdmFsdWVfMjkyIiwiZXhlcmNpc2VfZGF0YV8yNzkiLCJjdXJfZXhlcmNpc2VfMjc3Iiwic2V4cF9vZl9leGVyY2lzZV9leHBvcnQiLCJleGVyY2lzZV9kYXRhXzI5OSIsImN1cl9leGVyY2lzZV8yOTciLCJibmRzXzI5NiIsImFyZzFfMzAyIiwiYXJnMF8zMDEiLCJyZXMwXzMwMyIsInJlczFfMzA0IiwiYXJnXzMwMCIsImJuZHNfMjk2JDAiLCJhcmdfMjk4IiwiYm5kc18yOTYkMSIsImV4ZXJjaXNlX2V4cG9ydF9vZl95b2pzb24iLCJjdXJfZXhlcmNpc2VfZmllbGQiLCJleGVyY2lzZV9kYXRhX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV92YWx1ZSIsImN1cl9leGVyY2lzZV92YWx1ZSIsInlvanNvbl9vZl9leGVyY2lzZV9leHBvcnQiLCJ2X2V4ZXJjaXNlX2RhdGEiLCJ2X2N1cl9leGVyY2lzZSIsInNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlIiwiZGVzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0IiwiZXJyb3Jfc291cmNlXzAwOSIsInBwX3BlcmNlbnRhZ2UiLCJzaG93X3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicHBfcG9pbnRzIiwic2hvd19wb2ludHMiLCJwb2ludHNfb2Zfc2V4cCIsInNleHBfb2ZfcG9pbnRzIiwicG9pbnRzX29mX3lvanNvbiIsInlvanNvbl9vZl9wb2ludHMiLCJwcF9zY29yZSIsInNob3dfc2NvcmUiLCJzY29yZV9vZl9zZXhwIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsInNleHBfb2Zfc2NvcmUiLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInNjb3JlX29mX3lvanNvbiIsInlvanNvbl9vZl9zY29yZSIsInNjb3JlX29mX3BlcmNlbnQiLCJwZXJjZW50IiwibWF4X3BvaW50cyIsInRlc3RfcmVzdWx0cyIsInBlcmNlbnRhZ2UiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJyZXF1aXJlZCIsInByb3ZpZGVkIiwibnVtX3Bhc3NpbmciLCJ0ZXN0X3N1bW1hcnlfc3RyIiwiaGlkZGVuX2J1Z19zdGF0dXMiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSIsImhpZGRlbl9idWdfZGF0YSIsImhpZGRlbl9idWdfZGF0YSQwIiwidGVzdF92YWxpZGF0aW9uX2RhdGEkMCIsInZhbGlkYXRpb25fdGVzdF9tYXAiLCJoaWRkZW5fYnVnX3Rlc3RfbWFwIiwiaW5zdGFuY2VfcmVwb3J0cyIsImlkIiwic3RhdHVzIiwidmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMiLCJyZXBvcnRzIiwic3RhdHVzJDAiLCJmb3VuZCIsIm1rJDAiLCJoaWRkZW5fYnVnc19zdGF0ZSIsInBlcmNlbnRhZ2UkMCIsIm51bV9wYXNzZWQiLCJzdW1tYXJ5X3N0ciIsInRvdGFsIiwibWskMSIsImgiLCJzeW50YXhfcmVzdWx0cyIsInIiLCJtayQyIiwidGVzdF9yZXN1bHRzJDAiLCJzdGF0dXNlcyIsImhpbnRlZF9yZXN1bHRzIiwicGVyY2VudGFnZSQxIiwic3ludGF4X3JlcG9ydCIsInRlc3Rfc3VtbWFyeV9zdHIkMCIsIm1rJDMiLCJzdGl0Y2hlZF9keW5hbWljcyIsIm92ZXJhbGxfc2NvcmUiLCJpbXBsX2dyYWRpbmdfcmVwb3J0IiwibXV0YXRpb25fdGVzdGluZ19yZXBvcnQiLCJ0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0IiwidHZfbWF4IiwidHZfcG9pbnRzIiwibXRfbWF4IiwibXRfcG9pbnRzIiwiaWdfbWF4IiwiaWdfcG9pbnRzIiwidG90YWxfcG9pbnRzIiwib3V0cHV0X2hlYWRlciIsIkRFQlVHIiwiT01EX0RFQlVHIiwiZGVidWciLCJ3YXJuIiwib3B0IiwibXNnIiwic3RoIiwid2UiLCJ0cmFja2ZpeCIsInJhaXNlIiwiZSIsIm9mX2xpc3QiLCJsIiwiciIsImZzcGxpdF9yZXYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwiZiIsInJldiIsImlkX29mX3N0cmluZyIsImlkcyIsInMiLCJuIiwib3V0Iiwic3RhcnRlZCIsImkiLCJjIiwiaSQyIiwiaSQwIiwiaSQxIiwicyQwIiwiaSQ0IiwibGFzdF90cmFpbGluZyIsImkkMyIsImh0bWxlbnRpdGllcyIsIm1kIiwiYiIsImokMSIsImoiLCJqJDAiLCJqJDQiLCJqJDIiLCJqJDMiLCJtaW5pbWFsaXplX2JsYW5rcyIsImYkMCIsImVhdCIsImV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIiwiaHRtbCIsImh0bWwkMCIsImN1dF9vbl9jaGFyX2Zyb20iLCJyZW1vdmVfcHJlZml4X3NwYWNlcyIsImh0bWwkMiIsInJlcyIsImFmdGVyX2VxIiwibmFtZSIsIm5hbWUkMCIsImFmdGVyX2VxJDAiLCJyZXN0IiwidmFsdWUiLCJuZXdfcyIsImEiLCJyZXMkMCIsImh0bWwkMSIsImV4dHJhY3RfaW5uZXJfaHRtbCIsInAiLCJodG1sX3ZvaWRfZWxlbWVudHMiLCJzeW1ib2wiLCJsMSIsImwyIiwic2VsZl8xIiwibG4iLCJ0aXRsZSIsInVybCIsImxvb3NlX2NvbXBhcmUiLCJ0MSIsInQyIiwidDEkMCIsInQyJDAiLCJlMSIsInRsMiQwIiwiZTIkMCIsInRsMSQwIiwiZTEkMCIsInRsMiIsImUyIiwidGwxIiwidGwyJDEiLCJlMiQxIiwidGwxJDEiLCJlMSQxIiwidGwxJDIiLCJjMSIsInRsMiQyIiwiYzIiLCJpJDUiLCJ0bDEkMyIsInRpdGxlMSIsInQxJDEiLCJocmVmMSIsInRsMiQzIiwidGl0bGUyIiwidDIkMSIsImhyZWYyIiwiaSQ2IiwiaSQ3IiwiaSQ4IiwidGwyJDQiLCJmYWxsYmFjazIiLCJ4MiIsIm5hbWUyIiwicmVmX2NvbnRhaW5lcjIiLCJ0bDEkNCIsImZhbGxiYWNrMSIsIngxIiwibmFtZTEiLCJyZWZfY29udGFpbmVyMSIsImUxJDIiLCJ0bDIkNSIsImUyJDIiLCJ0bDEkNSIsImkkMTEiLCJpJDEyIiwiaSQ5IiwiY2ZmIiwiaSQxMCIsImwxJDAiLCJsMiQwIiwidGwyJDYiLCJlMiQzIiwidGwxJDYiLCJlMSQzIiwiaSQxMyIsInNlbGZfMiIsImVtcHR5X2V4dGVuc2lvbiIsIm5vcm1hbGlzZV9tZCIsImxvb3AiLCJ2IiwidGwkMiIsInYkMCIsInRsJDMiLCJ2JDEiLCJ0bCQ0IiwidiQyIiwidGwkNSIsInYkMyIsInRsJDYiLCJ2JDQiLCJ0bCQ3IiwidiQ1IiwidGwkMTAiLCJ0bCQ5IiwidGwkOCIsInRsJDExIiwidGwkMTIiLCJ2JDYiLCJ0bCQxMyIsInYkNyIsInRsJDE0IiwidiQ4IiwidGwkMTUiLCJ2JDkiLCJ0bCQxNiIsInYkMTAiLCJ0bCQxNyIsInYkMTEiLCJ0bCQxOCIsInYkMTIiLCJocmVmIiwidGwkMTkiLCJ2JDEzIiwic2VsZl8zIiwidmlzaXQiLCJsJDEiLCJsJDIiLCJsJDMiLCJsJDQiLCJsJDUiLCJsJDYiLCJsJDciLCJsJDgiLCJsJDkiLCJsJDEwIiwibCQxMSIsImwkMTIiLCJsJDEzIiwibCQxNCIsImwkMTUiLCJsJDE2IiwibCQxNyIsImwkMTgiLCJsJDE5IiwidGwkMjAiLCJsJDIwIiwidGwkMjEiLCJsJDIxIiwidGwkMjIiLCJsJDIyIiwidGwkMjMiLCJsJDIzIiwidGwkMjQiLCJsJDI0IiwidGwkMjUiLCJsJDI1IiwidGwkMjYiLCJsJDI2IiwidGwkMjciLCJsJDI3IiwidGwkMjgiLCJsJDI4IiwiZGVmYXVsdF9sYW5ndWFnZSIsInRleHRfb2ZfbWQiLCJtZCQwIiwidCIsIm1kJDEiLCJtZCQyIiwiYyQwIiwiYm9keSIsImJvZHkkMCIsInQkMCIsInQkMSIsInEiLCJhbHQiLCJpdGVtIiwiZGVmYXVsdF9jb2RlX3N0eWxpc3QiLCJsYW5nIiwiY29kZSIsImZpbHRlcl90ZXh0X29tZF9yZXYiLCJyZW1vdmVfbGlua3MiLCJodG1sX2FuZF9oZWFkZXJzX29mX21kIiwic3RyaW5nX29mX2F0dHJzIiwiaHRtbF9vZl9tZCIsImhlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwic3RoJDAiLCJvdmVycmlkZSIsInN0aCQxIiwicGluZGVudCIsInN0aCQyIiwibmwyYnIiLCJzdGgkMyIsImNvZGVfc3R5bGUiLCJpZCIsImlkeCIsImhlYWRlcnMiLCJpbmRlbnQiLCJzJDEiLCJlJDAiLCJlJDEiLCJzJDIiLCJpaCIsIm1kJDMiLCJtZCQ0IiwiZSQyIiwibWQkNSIsImUkMyIsInMkMyIsImloJDAiLCJpZCQwIiwibWQkNiIsIm1kJDciLCJlJDQiLCJtZCQ4IiwiZSQ1IiwicyQ0IiwiaWgkMSIsImlkJDEiLCJtZCQ5IiwibWQkMTAiLCJlJDYiLCJtZCQxMSIsImUkNyIsInMkNSIsImloJDIiLCJpZCQyIiwibWQkMTIiLCJtZCQxMyIsImUkOCIsIm1kJDE0IiwiZSQ5IiwicyQ2IiwiaWgkMyIsImlkJDMiLCJtZCQxNSIsIm1kJDE2IiwiZSQxMCIsIm1kJDE3IiwiZSQxMSIsInMkNyIsImloJDQiLCJpZCQ0IiwibWQkMTgiLCJzJDgiLCJzJDkiLCJzJDEwIiwibWQkMTkiLCJzJDExIiwibWQkMjAiLCJzJDEyIiwicyQxNCIsIm5ld19jIiwibGFuZyQwIiwicyQxNSIsIm5ld19jJDAiLCJzJDE2IiwicyQxNyIsInMkMTgiLCJmYWxsYmFjayIsInRleHQiLCJyYyIsInMkMTkiLCJ0aXRsZSQwIiwiaHJlZiQwIiwiZmFsbGJhY2skMCIsInJjJDAiLCJzJDIwIiwidGl0bGUkMSIsInNyYyIsInRhZ25hbWUiLCJhdHRycyQxIiwiYXR0cnMkMiIsInMkMjIiLCJhdHRycyIsImF0dHJzJDAiLCJzJDIxIiwiYXR0cnMkMyIsInRhZ25hbWUkMCIsImF0dHJzJDQiLCJzJDIzIiwicyQyNCIsInMkMjUiLCJzJDI2IiwicyQyNyIsInMkMjgiLCJzJDI5IiwicyQzMCIsInRpdGxlJDIiLCJzcmMkMCIsImFsdCQwIiwicyQzMSIsIngiLCJzJDMyIiwicyQzMyIsInMkMTMiLCJsaSIsImNzIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJsb29wJDAiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsInN0cmluZ19vZl90YWdzdGF0dXMiLCJ0YWdzdGF0dXMiLCJsb29wJDIiLCJ0b2tlbnMiLCJib2R5JDEiLCJ0YWdzdGF0dXMkMCIsInRva2VucyQwIiwidCQ1IiwidG9rZW5zJDUiLCJib2R5JDUiLCJ0b2tlbnMkMTkiLCJib2R5JDciLCJ0YWdzdGF0dXMkMSIsInRva2VucyQyMCIsImJvZHkkNiIsInRva2VucyQyMSIsInQkMiIsImJvZHkkOCIsInRva2VucyQyMiIsInRva2VucyQyMyIsInQkNCIsInRva2VucyQyNCIsImJvZHkkOSIsInRva2VucyQyNSIsInRhZ3N0YXR1cyQyIiwidGFnbmFtZSQxIiwiYm9keSQxMCIsImJvZHkkMTEiLCJ0b2tlbnMkMjYiLCJib2R5JDEyIiwidG9rZW5zJDI3IiwidG9rZW5zJDI4IiwidG9rZW5zJDYiLCJ0b2tlbnMkNyIsInRva2VucyQ4IiwidG9rZW5zJDEwIiwidG9rZW5zJDkiLCJ0b2tlbnMkMTEiLCJhdHRyaWJ1dGVuYW1lIiwidG9rZW5zJDEyIiwiYXR0cmlidXRlbmFtZSQwIiwidG9rZW5zJDEzIiwidG9rZW5zJDE0IiwiYXRfdmFsIiwidG9rZW5zJDE1IiwidG9rZW5zJDE2IiwiYXRfdmFsJDAiLCJ0b2tlbnMkMTciLCJ0b2tlbnMkMTgiLCJhdHRycyQ1IiwidG9rZW5zJDMiLCJ0b2tlbnMkNCIsImJvZHkkNCIsImJvZHkkMyIsInRva2VucyQxIiwidG9rZW5zJDIiLCJ0YWciLCJ0YWckMCIsImJvZHkkMiIsImxleGVtZXMkMTUiLCJyJDE3IiwicHJldmlvdXMkNjQiLCJyJDE4IiwibGV4ZW1lcyQxNiIsInByZXZpb3VzJDY1IiwiciQxOSIsInByZXZpb3VzJDY2IiwiciQyMCIsImxleGVtZXMkMTciLCJ3JDMiLCJodG1sX3N0dWZmJDAiLCJ0YWduYW1ldG9wJDAiLCJsZXhlbWVzJDE5IiwicHJldmlvdXMkNjkiLCJyJDIzIiwicHJldmlvdXMkNzAiLCJyJDI0IiwiZl9hIiwibWRfb2ZfaW50ZXJtX2xpc3QkMSIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzJDAiLCJhZGRfdG9rZW5fdG9fYm9keSIsImxvb3AkMSIsInQkNiIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImhfbGV2ZWwiLCJzdWJzZWN0aW9ucyQwIiwic3Vic2VjdGlvbnMkMSIsImZpbmRfc3RhcnQiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCIsImtleV9vZl9zZXhwIiwic2V4cF9vZl9rZXkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsInZhbHVlX29mX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwidmFsdWVfb2ZfeW9qc29uIiwieW9qc29uX29mX3ZhbHVlIiwic2VyaWFsaXplIiwicHJvZ3JhbSIsImRlc2VyaWFsaXplIiwic2V4cCIsInZhbHVlX29mX3NleHAkMCIsInNleHBfb2ZfdmFsdWUkMCIsInZhbHVlX29mX3lvanNvbiQwIiwieW9qc29uX29mX3ZhbHVlJDAiLCJzZXJpYWxpemUkMCIsInIiLCJkZXNlcmlhbGl6ZSQwIiwid29yayIsInJlcyIsIm9uX3JlcXVlc3QiLCJyZXEiLCJzdGFydCIsIm5hbWUiLCJ0aW1lb3V0RHVyYXRpb24iLCJpbml0V29ya2VyIiwid29ya2VyUmVmIiwidGltZW91dElkIiwicmVzdGFydF93b3JrZXIiLCJyZXF1ZXN0IiwicmVxIiwiaGFuZGxlciIsInRpbWVvdXQiLCJzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyIiwiZXZ0IiwiaWQiLCJvblRpbWVvdXQiLCJidXR0b24iLCJvcHQiLCJpY29uIiwiYWN0aW9uIiwic3RoIiwidG9vbHRpcCIsImJ1dHRvbl9uYW1lZCIsImJ1dHRvbl9kIiwibGluayIsInVybCIsInRvZ2dsZSIsImxhYmVsIiwiYWN0aXZlIiwidG9nZ2xlX25hbWVkIiwiZmlsZV9zZWxlY3RfYnV0dG9uIiwib25faW5wdXQiLCJmaWxlX3NlbGVjdF9idXR0b25fbmFtZWQiLCJtayIsImMiLCJtayQwIiwiaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uX2ltIiwiaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uIiwieCIsIm1rJDEiLCJnZXQiLCJ0IiwiayIsIm1hcCIsInNldCIsInYiLCJta19zZWNvbmRhcnkiLCJjb250ZW50IiwibWtfdGlsZSIsImZvcm0iLCJjaGlsZHJlbiIsImkiLCJta19hbmNlc3RvciIsImwiLCJta19tb25vdGlsZSIsImludCQwIiwibiIsImV4cCIsInBhdCIsIm1rX2Z1biIsIm1rX2Z1bl9hbmNlc3RvciIsIm1rX3BhcmVuc19hbmNlc3RvciIsIm1rX2xldF9hbmNlc3RvciIsInBsdXMiLCJsX3NpYmxpbmciLCJyX3NpYmxpbmciLCJhbmNlc3RvcnMiLCJiYWNrcGFjayIsInppcHBlciIsImNvbnNfZXhwIiwibGlzdF9jb25jYXRfZXhwIiwiY29uc19wYXQiLCJzZXEiLCJleHAkMCIsInBhdCQwIiwidHlwIiwidHBhdCIsInR5cF9wYXRfdmFyIiwibWtfcGFyZW5zX2V4cCIsIm1rX3BhcmVuc19wYXQiLCJta19wYXJlbnNfdHlwIiwibWtfbGlzdF9leHAiLCJta19saXN0X3BhdCIsIm1rX2xpc3RfdHlwIiwiYXJyb3ciLCJ1bmFyeV9taW51cyIsInVuYXJ5X25vdCIsInBsdXMkMCIsIm1pbnVzIiwidGltZXMiLCJwb3dlciIsImRpdmlkZSIsImVxdWFscyIsIm5vdF9lcXVhbHMiLCJsdCIsImx0ZSIsImd0IiwiZ3RlIiwiZnBsdXMiLCJmbWludXMiLCJmdGltZXMiLCJmcG93ZXIiLCJmZGl2aWRlIiwiZmVxdWFscyIsImZub3RfZXF1YWxzIiwiZmx0IiwiZmx0ZSIsImZndCIsImZndGUiLCJzZXF1YWxzIiwic2NvbmNhdCIsImxvZ2ljYWxfYW5kIiwibG9naWNhbF9vciIsImNvbW1hX2V4cCIsImNvbW1hX3BhdCIsImNvbW1hX3R5cCIsInBpcGVsaW5lIiwibmlsIiwidHlwZWFubiIsIm1rX2Z1biQwIiwibWtfYXBfZXhwIiwibWtfYXBfcGF0IiwibWtfbGV0IiwibWtfdHlhbGlhcyIsIm1rX2lmIiwibWtfdGVzdCIsIm1rX2Nhc2UiLCJta19ydWxlIiwibWtfaGlkZSIsIm1rX2V2YWwiLCJta19wYXVzZSIsIm1rX2RlYnVnIiwibWtfdW5xdW90ZSIsImxpbmVicmVhayIsInNwYWNlIiwibWtfZXhhbXBsZSIsInN0ciIsInoiLCJhYmJyZXZpYXRlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMDciLCJ0cF9sb2MkMCIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMTUiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wMTkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNzMiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wODYiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8wOTAiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xNDUiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkOCIsImVycm9yX3NvdXJjZV8yMTMiLCJ0cF9sb2MkOSIsImVycm9yX3NvdXJjZV8yNDciLCJ0cF9sb2MkMTAiLCJwcF9saXN0X2V4YW1wbGVzIiwiZm10Iiwic2hvd19saXN0X2V4YW1wbGVzIiwibGlzdF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX2xpc3RfZXhhbXBsZXMiLCJsaXN0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbiIsInlvanNvbl9vZl9saXN0X2V4YW1wbGVzIiwicHBfZnVuX2V4YW1wbGVzIiwic2hvd19mdW5fZXhhbXBsZXMiLCJmdW5fZXhhbXBsZXNfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9mdW5fZXhhbXBsZXMiLCJmdW5fZXhhbXBsZXNfb2ZfeW9qc29uIiwieW9qc29uX29mX2Z1bl9leGFtcGxlcyIsInBwX2xldF9leGFtcGxlcyIsInNob3dfbGV0X2V4YW1wbGVzIiwibGV0X2V4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAxMiIsInNleHBfb2ZfbGV0X2V4YW1wbGVzIiwibGV0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9sZXRfZXhhbXBsZXMiLCJwcF9udW1lcmljX2Jpbl9vcF9leGFtcGxlcyIsInNob3dfbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMiLCJudW1lcmljX2Jpbl9vcF9leGFtcGxlc19vZl9zZXgiLCJzZXhwXzAxNiIsInNleHBfb2ZfbnVtZXJpY19iaW5fb3BfZXhhbXBsZSIsIm51bWVyaWNfYmluX29wX2V4YW1wbGVzX29mX3lvaiIsInlvanNvbl9vZl9udW1lcmljX2Jpbl9vcF9leGFtcCIsInBwX2V4YW1wbGVfaWQiLCJzaG93X2V4YW1wbGVfaWQiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsImEwJDMiLCJleGFtcGxlX2lkX29mX3NleHAiLCJzZXhwXzAyMSIsInRhZ18wMjIiLCJzZXhwX2FyZ3NfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInNleHBfYXJnc18wMzMiLCJhcmcwXzAzNCIsInJlczBfMDM1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJzZXhwX2FyZ3NfMDQzIiwiYXJnMF8wNDQiLCJyZXMwXzA0NSIsInNleHBfYXJnc18wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwic2V4cF9vZl9leGFtcGxlX2lkIiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzBfMDU0IiwicmVzMF8wNTUiLCJleGFtcGxlX2lkX29mX3lvanNvbiIsInRhZyIsInlvanNvbl9hcmdzJDEiLCJ2MCQzIiwidjAkNCIsInlvanNvbl9hcmdzJDAiLCJ2MCQxIiwidjAkMiIsInlvanNvbl9hcmdzIiwidjAiLCJ2MCQwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX2FyZ3MkMiIsInYwJDUiLCJ2MCQ2IiwieW9qc29uX29mX2V4YW1wbGVfaWQiLCJwcF9leGFtcGxlIiwic2hvd19leGFtcGxlIiwiZXhhbXBsZV9vZl9zZXhwIiwic2V4cF8wNTciLCJmaWVsZF9zZXhwc18wNTgiLCJzdWJfaWRfMDU5IiwidGVybV8wNjEiLCJtZXNzYWdlXzA2MyIsImR1cGxpY2F0ZXNfMDY1IiwiZXh0cmFfMDY2Iiwic2V4cF8wNTckMCIsImZpZWxkX3NleHBzXzA2OSIsImZpZWxkX25hbWVfMDY3IiwidGFpbF8wNzUiLCJmaWVsZF9zZXhwXzA2OCQzIiwiZmllbGRfc2V4cF8wNjgiLCJ4XzA3NiIsImZpZWxkX3NleHBfMDY4JDAiLCJmdmFsdWVfMDcxIiwiZmllbGRfc2V4cF8wNjgkMSIsImZ2YWx1ZV8wNzIiLCJmaWVsZF9zZXhwXzA2OCQyIiwiZnZhbHVlXzA3MCIsIm1lc3NhZ2VfMDY0IiwidGVybV8wNjIiLCJzdWJfaWRfMDYwIiwic2V4cF9vZl9leGFtcGxlIiwibWVzc2FnZV8wODIiLCJ0ZXJtXzA4MCIsInN1Yl9pZF8wNzgiLCJhcmdfMDgzIiwiYm5kc18wNzciLCJhcmdfMDgxIiwiYm5kc18wNzckMCIsImFyZ18wNzkiLCJibmRzXzA3NyQxIiwiZXhhbXBsZV9vZl95b2pzb24iLCJmaWVsZF95b2pzb25zIiwic3ViX2lkX2ZpZWxkIiwidGVybV9maWVsZCIsIm1lc3NhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwiZnZhbHVlJDEiLCJtZXNzYWdlX3ZhbHVlIiwidGVybV92YWx1ZSIsInN1Yl9pZF92YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlIiwidl9tZXNzYWdlIiwidl90ZXJtIiwidl9zdWJfaWQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsInBwX3BhdF9zdWJfZm9ybV9pZCIsInNob3dfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3NleHAiLCJzZXhwXzA4NyIsInNleHBfb2ZfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3lvanNvbiIsInlvanNvbl9vZl9wYXRfc3ViX2Zvcm1faWQiLCJwcF9mb3JtX2lkIiwic2hvd19mb3JtX2lkIiwiZm9ybV9pZF9vZl9zZXhwIiwic2V4cF8wOTIiLCJ0YWdfMDkzIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMF8wOTUiLCJyZXMwXzA5NiIsInNleHBfYXJnc18wOTkiLCJhcmcwXzEwMCIsInJlczBfMTAxIiwic2V4cF9hcmdzXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJzZXhwX29mX2Zvcm1faWQiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMTQiLCJyZXMwXzExNSIsImFyZzBfMTE2IiwicmVzMF8xMTciLCJhcmcwXzExOCIsInJlczBfMTE5IiwiZm9ybV9pZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZm9ybV9pZCIsInBwX2Zvcm0iLCJzaG93X2Zvcm0iLCJ4JDAiLCJhMSIsIngkMSIsInNlcCIsImZvcm1fb2Zfc2V4cCIsInNleHBfMTIxIiwiZmllbGRfc2V4cHNfMTIyIiwiaWRfMTIzIiwic3ludGFjdGljX2Zvcm1fMTI1IiwiZXhwYW5kYWJsZV9pZF8xMjciLCJleHBsYW5hdGlvbl8xMjkiLCJleGFtcGxlc18xMzEiLCJkdXBsaWNhdGVzXzEzMyIsImV4dHJhXzEzNCIsInNleHBfMTIxJDAiLCJmaWVsZF9zZXhwc18xMzciLCJmaWVsZF9uYW1lXzEzNSIsInRhaWxfMTUwIiwiZmllbGRfc2V4cF8xMzYkNSIsImZpZWxkX3NleHBfMTM2IiwieF8xNTEiLCJmaWVsZF9zZXhwXzEzNiQwIiwiZnZhbHVlXzE0NyIsImZpZWxkX3NleHBfMTM2JDEiLCJmdmFsdWVfMTQ4IiwiZmllbGRfc2V4cF8xMzYkMiIsImZ2YWx1ZV8xMzkiLCJmaWVsZF9zZXhwXzEzNiQzIiwic2V4cF8xNDQiLCJhcmcxXzE0MSIsImFyZzBfMTQwIiwicmVzMF8xNDIiLCJyZXMxXzE0MyIsImZ2YWx1ZV8xNDYiLCJmaWVsZF9zZXhwXzEzNiQ0IiwiZnZhbHVlXzEzOCIsImV4YW1wbGVzXzEzMiIsImV4cGxhbmF0aW9uXzEzMCIsImV4cGFuZGFibGVfaWRfMTI4Iiwic3ludGFjdGljX2Zvcm1fMTI2IiwiaWRfMTI0Iiwic2V4cF9vZl9mb3JtIiwiZXhhbXBsZXNfMTY1IiwiZXhwbGFuYXRpb25fMTYzIiwiZXhwYW5kYWJsZV9pZF8xNTciLCJzeW50YWN0aWNfZm9ybV8xNTUiLCJpZF8xNTMiLCJhcmdfMTY2IiwiYm5kc18xNTIiLCJhcmdfMTY0IiwiYm5kc18xNTIkMCIsImFyZzFfMTYwIiwiYXJnMF8xNTkiLCJyZXMwXzE2MSIsInJlczFfMTYyIiwiYXJnXzE1OCIsImJuZHNfMTUyJDEiLCJhcmdfMTU2IiwiYm5kc18xNTIkMiIsImFyZ18xNTQiLCJibmRzXzE1MiQzIiwiZm9ybV9vZl95b2pzb24iLCJpZF9maWVsZCIsInN5bnRhY3RpY19mb3JtX2ZpZWxkIiwiZXhwYW5kYWJsZV9pZF9maWVsZCIsImV4cGxhbmF0aW9uX2ZpZWxkIiwiZXhhbXBsZXNfZmllbGQiLCJ2MSIsInYxJDAiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZXhhbXBsZXNfdmFsdWUiLCJleHBsYW5hdGlvbl92YWx1ZSIsImV4cGFuZGFibGVfaWRfdmFsdWUiLCJzeW50YWN0aWNfZm9ybV92YWx1ZSIsImlkX3ZhbHVlIiwieW9qc29uX29mX2Zvcm0iLCJ2X2V4YW1wbGVzIiwidl9leHBsYW5hdGlvbiIsInZfZXhwYW5kYWJsZV9pZCIsInZfc3ludGFjdGljX2Zvcm0iLCJ2X2lkIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsInBwX2dyb3VwX2lkIiwic2hvd19ncm91cF9pZCIsImdyb3VwX2lkX29mX3NleHAiLCJzZXhwXzE3MSIsInRhZ18xNzIiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzMiLCJhcmcwXzE3NCIsInJlczBfMTc1Iiwic2V4cF9hcmdzXzE3OCIsImFyZzBfMTc5IiwicmVzMF8xODAiLCJzZXhwX2FyZ3NfMTg4IiwiYXJnMF8xODkiLCJyZXMwXzE5MCIsInNleHBfb2ZfZ3JvdXBfaWQiLCJhcmcwXzE5MSIsInJlczBfMTkyIiwiYXJnMF8xOTMiLCJyZXMwXzE5NCIsImFyZzBfMTk1IiwicmVzMF8xOTYiLCJhcmcwXzE5NyIsInJlczBfMTk4IiwiZ3JvdXBfaWRfb2ZfeW9qc29uIiwieW9qc29uX29mX2dyb3VwX2lkIiwicHBfZ3JvdXAiLCJzaG93X2dyb3VwIiwiZ3JvdXBfb2Zfc2V4cCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwiaWRfMjAyIiwiZm9ybXNfMjA0IiwiZHVwbGljYXRlc18yMDYiLCJleHRyYV8yMDciLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEwIiwiZmllbGRfbmFtZV8yMDgiLCJ0YWlsXzIxNSIsImZpZWxkX3NleHBfMjA5JDIiLCJmaWVsZF9zZXhwXzIwOSIsInhfMjE2IiwiZmllbGRfc2V4cF8yMDkkMCIsImZ2YWx1ZV8yMTIiLCJmaWVsZF9zZXhwXzIwOSQxIiwiZnZhbHVlXzIxMSIsImZvcm1zXzIwNSIsImlkXzIwMyIsInNleHBfb2ZfZ3JvdXAiLCJmb3Jtc18yMjAiLCJpZF8yMTgiLCJhcmdfMjIxIiwiYm5kc18yMTciLCJhcmdfMjE5IiwiYm5kc18yMTckMCIsImdyb3VwX29mX3lvanNvbiIsImZvcm1zX2ZpZWxkIiwiZm9ybXNfdmFsdWUiLCJ5b2pzb25fb2ZfZ3JvdXAiLCJ2X2Zvcm1zIiwicHAiLCJzaG93IiwidF9vZl9zZXhwIiwic2V4cF8yMjMiLCJmaWVsZF9zZXhwc18yMjQiLCJncm91cF9pZF8yMjUiLCJmb3JtX2lkXzIyNyIsImFic3RyYWN0XzIyOSIsImV4cGxhbmF0aW9uXzIzMSIsImV4YW1wbGVzXzIzMyIsImR1cGxpY2F0ZXNfMjM1IiwiZXh0cmFfMjM2Iiwic2V4cF8yMjMkMCIsImZpZWxkX3NleHBzXzIzOSIsImZpZWxkX25hbWVfMjM3IiwidGFpbF8yNTciLCJmaWVsZF9zZXhwXzIzOCQ1IiwiZmllbGRfc2V4cF8yMzgiLCJ4XzI1OCIsImZpZWxkX3NleHBfMjM4JDAiLCJmdmFsdWVfMjU1IiwiZmllbGRfc2V4cF8yMzgkMSIsImZ2YWx1ZV8yNTQiLCJmaWVsZF9zZXhwXzIzOCQyIiwiZnZhbHVlXzI0MSIsImZpZWxkX3NleHBfMjM4JDMiLCJmdmFsdWVfMjQwIiwiZmllbGRfc2V4cF8yMzgkNCIsImFyZzFfMjQ5IiwiYXJnMF8yNDgiLCJyZXMwXzI1MCIsInNleHBfMjQ2IiwiYXJnMV8yNDMiLCJhcmcwXzI0MiIsInJlczBfMjQ0IiwicmVzMV8yNDUiLCJyZXMxXzI1MSIsImZ2YWx1ZV8yNTMiLCJleGFtcGxlc18yMzQiLCJleHBsYW5hdGlvbl8yMzIiLCJhYnN0cmFjdF8yMzAiLCJmb3JtX2lkXzIyOCIsImdyb3VwX2lkXzIyNiIsInNleHBfb2ZfdCIsImV4YW1wbGVzXzI3NiIsImV4cGxhbmF0aW9uXzI3NCIsImFic3RyYWN0XzI2NCIsImZvcm1faWRfMjYyIiwiZ3JvdXBfaWRfMjYwIiwiYXJnXzI3NyIsImJuZHNfMjU5IiwiYXJnXzI3NSIsImJuZHNfMjU5JDAiLCJhcmcxXzI3MSIsImFyZzBfMjcwIiwicmVzMF8yNzIiLCJhcmcxXzI2NyIsImFyZzBfMjY2IiwicmVzMF8yNjgiLCJyZXMxXzI2OSIsInJlczFfMjczIiwiYXJnXzI2NSIsImJuZHNfMjU5JDEiLCJhcmdfMjYzIiwiYm5kc18yNTkkMiIsImFyZ18yNjEiLCJibmRzXzI1OSQzIiwidF9vZl95b2pzb24iLCJncm91cF9pZF9maWVsZCIsImZvcm1faWRfZmllbGQiLCJhYnN0cmFjdF9maWVsZCIsImFic3RyYWN0X3ZhbHVlIiwiZm9ybV9pZF92YWx1ZSIsImdyb3VwX2lkX3ZhbHVlIiwieW9qc29uX29mX3QiLCJ2X2Fic3RyYWN0Iiwidl9mb3JtX2lkIiwidl9ncm91cF9pZCIsInRvX2dyb3VwIiwiZXhhbXBsZXMiLCJleHBsYW5hdGlvbiIsImNvbG9yaW5ncyIsInN5bnRhY3RpY19mb3JtIiwiZm9ybV9pZCIsImdyb3VwX2lkIiwibWtfMSIsIm1rX2Zvcm0iLCJwIiwibWtfMiIsImlkXzIiLCJuMiIsImlkXzEiLCJuMSIsInAyIiwicDEiLCJta18zIiwiaWRfMyIsIm4zIiwicDMiLCJ2YXJfdHlwX3BhdCIsInZhcl90eXBfcGF0cyIsImVycm9yX3NvdXJjZV8wMjYiLCJlcnJvcl9zb3VyY2VfMDQyIiwiaW5pdCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZW5hYmxlXzAwNCIsImlzX2VkaXRpbmdfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJzZXhwXzAwMiQwIiwiZmllbGRfc2V4cHNfMDEyIiwiZmllbGRfbmFtZV8wMTAiLCJ0YWlsXzAxNyIsImZpZWxkX3NleHBfMDExJDIiLCJmaWVsZF9zZXhwXzAxMSIsInhfMDE4IiwiZmllbGRfc2V4cF8wMTEkMCIsImZ2YWx1ZV8wMTMiLCJmaWVsZF9zZXhwXzAxMSQxIiwiZnZhbHVlXzAxNCIsImlzX2VkaXRpbmdfMDA3IiwiZW5hYmxlXzAwNSIsImlzX2VkaXRpbmdfMDIyIiwiZW5hYmxlXzAyMCIsImFyZ18wMjMiLCJibmRzXzAxOSIsImFyZ18wMjEiLCJibmRzXzAxOSQwIiwiZW5hYmxlX2ZpZWxkIiwiaXNfZWRpdGluZ19maWVsZCIsImlzX2VkaXRpbmdfdmFsdWUiLCJlbmFibGVfdmFsdWUiLCJ2X2lzX2VkaXRpbmciLCJ2X2VuYWJsZSIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwXzAyNyIsInNleHBfb2ZfYWN0aW9uIiwiYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hY3Rpb24iLCJwcCQwIiwic2hvdyQwIiwidF9vZl9zZXhwJDAiLCJzZXhwXzAyOSIsImZpZWxkX3NleHBzXzAzMCIsImlucHV0XzAzMSIsInF1ZXJ5X3Jlc3VsdF8wMzMiLCJkdXBsaWNhdGVzXzAzNSIsImV4dHJhXzAzNiIsInNleHBfMDI5JDAiLCJmaWVsZF9zZXhwc18wMzkiLCJmaWVsZF9uYW1lXzAzNyIsInRhaWxfMDQ0IiwiZmllbGRfc2V4cF8wMzgkMiIsImZpZWxkX3NleHBfMDM4IiwieF8wNDUiLCJmaWVsZF9zZXhwXzAzOCQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM4JDEiLCJmdmFsdWVfMDQxIiwicXVlcnlfcmVzdWx0XzAzNCIsImlucHV0XzAzMiIsInNleHBfb2ZfdCQwIiwicXVlcnlfcmVzdWx0XzA0OSIsImlucHV0XzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwidF9vZl95b2pzb24kMCIsImlucHV0X2ZpZWxkIiwicXVlcnlfcmVzdWx0X2ZpZWxkIiwicXVlcnlfcmVzdWx0X3ZhbHVlIiwiaW5wdXRfdmFsdWUiLCJ5b2pzb25fb2ZfdCQwIiwidl9xdWVyeV9yZXN1bHQiLCJ2X2lucHV0IiwicmVtb3ZlX2xhc3RfY2hhciIsInBlcmZvcm1fYWN0aW9uIiwibW9kZWwiLCJzIiwidXBkYXRlIiwiY29kZSIsImVxdWl2IiwicHJvbXB0IiwiZGVmYXVsdCQwIiwib3V0cHV0X2hlYWRlciIsIm1vZHVsZV9uYW1lIiwiZXhlcmNpc2UiLCJmaWxlbmFtZSIsImV4ZXJjaXNlcyIsImVycm9yX3NvdXJjZV8wNDgiLCJlcnJvcl9zb3VyY2VfMDc1IiwiZXJyb3Jfc291cmNlXzEwMSIsImVycm9yX3NvdXJjZV8xMTQiLCJlcnJvcl9zb3VyY2VfMTQwIiwiZXJyb3Jfc291cmNlXzE1MyIsImVycm9yX3NvdXJjZV8xNjQiLCJpbml0JDAiLCJwcF9mZWVkYmFja19vcHRpb24iLCJzaG93X2ZlZWRiYWNrX29wdGlvbiIsImZlZWRiYWNrX29wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9mZWVkYmFja19vcHRpb24iLCJmZWVkYmFja19vcHRpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2ZlZWRiYWNrX29wdGlvbiIsInBwX2V4YW1wbGVfbW9kZWwiLCJzaG93X2V4YW1wbGVfbW9kZWwiLCJleGFtcGxlX21vZGVsX29mX3NleHAiLCJzZXhwXzAwNiIsImZpZWxkX3NleHBzXzAwNyIsInN1Yl9pZF8wMDgiLCJmZWVkYmFja18wMTAiLCJkdXBsaWNhdGVzXzAxMiIsImV4dHJhXzAxMyIsInNleHBfMDA2JDAiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIxIiwiZmllbGRfc2V4cF8wMTUkMiIsImZpZWxkX3NleHBfMDE1IiwieF8wMjIiLCJmaWVsZF9zZXhwXzAxNSQwIiwiZnZhbHVlXzAxOCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE3IiwiZmVlZGJhY2tfMDExIiwic3ViX2lkXzAwOSIsInNleHBfb2ZfZXhhbXBsZV9tb2RlbCIsImZlZWRiYWNrXzAyNiIsInN1Yl9pZF8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsImV4YW1wbGVfbW9kZWxfb2ZfeW9qc29uIiwiZmVlZGJhY2tfZmllbGQiLCJmZWVkYmFja192YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlX21vZGVsIiwidl9mZWVkYmFjayIsInBwX2Zvcm1fbW9kZWwiLCJzaG93X2Zvcm1fbW9kZWwiLCJmb3JtX21vZGVsX29mX3NleHAiLCJncm91cF8wMzEiLCJmb3JtXzAzMyIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzAzNSIsImV4YW1wbGVzXzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwiZmllbGRfc2V4cHNfMDQzIiwiZmllbGRfbmFtZV8wNDEiLCJ0YWlsXzA1MCIsImZpZWxkX3NleHBfMDQyJDQiLCJmaWVsZF9zZXhwXzA0MiIsInhfMDUxIiwiZmllbGRfc2V4cF8wNDIkMCIsImZ2YWx1ZV8wNDciLCJmaWVsZF9zZXhwXzA0MiQxIiwiZnZhbHVlXzA0NiIsImZpZWxkX3NleHBfMDQyJDIiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMyIsImZ2YWx1ZV8wNDQiLCJleGFtcGxlc18wMzgiLCJleHBsYW5hdGlvbl9mZWVkYmFja18wMzYiLCJmb3JtXzAzNCIsImdyb3VwXzAzMiIsInNleHBfb2ZfZm9ybV9tb2RlbCIsImV4YW1wbGVzXzA1OSIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzA1NyIsImZvcm1fMDU1IiwiZ3JvdXBfMDUzIiwiYXJnXzA2MCIsImJuZHNfMDUyIiwiYXJnXzA1OCIsImJuZHNfMDUyJDAiLCJhcmdfMDU2IiwiYm5kc18wNTIkMSIsImFyZ18wNTQiLCJibmRzXzA1MiQyIiwiZm9ybV9tb2RlbF9vZl95b2pzb24iLCJncm91cF9maWVsZCIsImZvcm1fZmllbGQiLCJleHBsYW5hdGlvbl9mZWVkYmFja19maWVsZCIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZhbHVlIiwiZm9ybV92YWx1ZSIsImdyb3VwX3ZhbHVlIiwieW9qc29uX29mX2Zvcm1fbW9kZWwiLCJ2X2V4cGxhbmF0aW9uX2ZlZWRiYWNrIiwidl9mb3JtIiwidl9ncm91cCIsInBwX2dyb3VwX21vZGVsIiwic2hvd19ncm91cF9tb2RlbCIsImdyb3VwX21vZGVsX29mX3NleHAiLCJzZXhwXzA2MiIsImZpZWxkX3NleHBzXzA2MyIsImdyb3VwXzA2NCIsInNlbGVjdGVkXzA2NiIsImR1cGxpY2F0ZXNfMDY4IiwiZXh0cmFfMDY5Iiwic2V4cF8wNjIkMCIsImZpZWxkX3NleHBzXzA3MiIsImZpZWxkX25hbWVfMDcwIiwidGFpbF8wNzciLCJmaWVsZF9zZXhwXzA3MSQyIiwiZmllbGRfc2V4cF8wNzEiLCJ4XzA3OCIsImZpZWxkX3NleHBfMDcxJDAiLCJmdmFsdWVfMDczIiwiZmllbGRfc2V4cF8wNzEkMSIsImZ2YWx1ZV8wNzQiLCJzZWxlY3RlZF8wNjciLCJncm91cF8wNjUiLCJzZXhwX29mX2dyb3VwX21vZGVsIiwic2VsZWN0ZWRfMDgyIiwiZ3JvdXBfMDgwIiwiYm5kc18wNzkiLCJibmRzXzA3OSQwIiwiZ3JvdXBfbW9kZWxfb2ZfeW9qc29uIiwic2VsZWN0ZWRfZmllbGQiLCJzZWxlY3RlZF92YWx1ZSIsInlvanNvbl9vZl9ncm91cF9tb2RlbCIsInZfc2VsZWN0ZWQiLCJzZXhwXzA4NSIsImZpZWxkX3NleHBzXzA4NiIsInNwZWNpZmljaXR5X29wZW5fMDg3IiwiZm9ybXNfMDg5IiwiZ3JvdXBzXzA5MSIsImR1cGxpY2F0ZXNfMDkzIiwiZXh0cmFfMDk0Iiwic2V4cF8wODUkMCIsImZpZWxkX3NleHBzXzA5NyIsImZpZWxkX25hbWVfMDk1IiwidGFpbF8xMDMiLCJmaWVsZF9zZXhwXzA5NiQzIiwiZmllbGRfc2V4cF8wOTYiLCJ4XzEwNCIsImZpZWxkX3NleHBfMDk2JDAiLCJmdmFsdWVfMTAwIiwiZmllbGRfc2V4cF8wOTYkMSIsImZ2YWx1ZV8wOTgiLCJmaWVsZF9zZXhwXzA5NiQyIiwiZnZhbHVlXzA5OSIsImdyb3Vwc18wOTIiLCJmb3Jtc18wOTAiLCJzcGVjaWZpY2l0eV9vcGVuXzA4OCIsImdyb3Vwc18xMTAiLCJmb3Jtc18xMDgiLCJzcGVjaWZpY2l0eV9vcGVuXzEwNiIsImFyZ18xMTEiLCJibmRzXzEwNSIsImFyZ18xMDkiLCJibmRzXzEwNSQwIiwiYXJnXzEwNyIsImJuZHNfMTA1JDEiLCJzcGVjaWZpY2l0eV9vcGVuX2ZpZWxkIiwiZ3JvdXBzX2ZpZWxkIiwiZ3JvdXBzX3ZhbHVlIiwic3BlY2lmaWNpdHlfb3Blbl92YWx1ZSIsInZfZ3JvdXBzIiwidl9zcGVjaWZpY2l0eV9vcGVuIiwicHBfaGlnaGxpZ2h0Iiwic2hvd19oaWdobGlnaHQiLCJoaWdobGlnaHRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwic2V4cF9vZl9oaWdobGlnaHQiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiaGlnaGxpZ2h0X29mX3lvanNvbiIsInlvanNvbl9vZl9oaWdobGlnaHQiLCJzZXhwXzEyNCIsImZpZWxkX3NleHBzXzEyNSIsInNob3dfMTI2Iiwic2hvd19mZWVkYmFja18xMjgiLCJoaWdobGlnaHRfMTMwIiwiZHVwbGljYXRlc18xMzIiLCJleHRyYV8xMzMiLCJzZXhwXzEyNCQwIiwiZmllbGRfc2V4cHNfMTM2IiwiZmllbGRfbmFtZV8xMzQiLCJ0YWlsXzE0MiIsImZpZWxkX3NleHBfMTM1JDMiLCJmaWVsZF9zZXhwXzEzNSIsInhfMTQzIiwiZmllbGRfc2V4cF8xMzUkMCIsImZpZWxkX3NleHBfMTM1JDEiLCJmaWVsZF9zZXhwXzEzNSQyIiwiZnZhbHVlXzEzNyIsImhpZ2hsaWdodF8xMzEiLCJzaG93X2ZlZWRiYWNrXzEyOSIsInNob3dfMTI3IiwiaGlnaGxpZ2h0XzE0OSIsInNob3dfZmVlZGJhY2tfMTQ3Iiwic2hvd18xNDUiLCJhcmdfMTUwIiwiYm5kc18xNDQiLCJhcmdfMTQ4IiwiYm5kc18xNDQkMCIsImFyZ18xNDYiLCJibmRzXzE0NCQxIiwic2hvd19maWVsZCIsInNob3dfZmVlZGJhY2tfZmllbGQiLCJoaWdobGlnaHRfZmllbGQiLCJoaWdobGlnaHRfdmFsdWUiLCJzaG93X2ZlZWRiYWNrX3ZhbHVlIiwic2hvd192YWx1ZSIsInZfaGlnaGxpZ2h0Iiwidl9zaG93X2ZlZWRiYWNrIiwidl9zaG93IiwicHBfaGlnaGxpZ2h0X2FjdGlvbiIsInNob3dfaGlnaGxpZ2h0X2FjdGlvbiIsImhpZ2hsaWdodF9hY3Rpb25fb2Zfc2V4cCIsInNleHBfMTU1IiwidGFnXzE1NiIsInNleHBfYXJnc18xNTciLCJhcmcwXzE1OCIsInJlczBfMTU5Iiwic2V4cF9vZl9oaWdobGlnaHRfYWN0aW9uIiwiYXJnMF8xNjAiLCJoaWdobGlnaHRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9oaWdobGlnaHRfYWN0aW9uIiwic2V4cF8xNjYiLCJ0YWdfMTY3Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE3MSIsInJlczBfMTcyIiwiZ2V0X2V4cGxhbmF0aW9uX2ZlZWRiYWNrIiwiZm9ybXMiLCJnZXRfZXhhbXBsZV9mZWVkYmFjayIsImV4YW1wbGVfaWQiLCJleGFtcGxlIiwiZ2V0X2Zvcm1faW5fZ3JvdXAiLCJncm91cCIsImdldF9zZWxlY3RlZF9vcHRpb24iLCJncm91cCQwIiwic2VsZWN0ZWQiLCJzZWxlY3RlZCQwIiwiZ2V0X29wdGlvbnMiLCJnZXRfZm9ybV9hbmRfb3B0aW9ucyIsImVycm9yX3NvdXJjZV8wNDMiLCJwcF9tb2RlIiwic2hvd19tb2RlIiwibW9kZV9vZl9zZXhwIiwic2V4cF9vZl9tb2RlIiwibW9kZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfbW9kZSIsIm1vZGVfb2Zfc3RyaW5nIiwiY2FwdGlvbnNfMDA4Iiwic2Vjb25kYXJ5X2ljb25zXzAxMCIsImNvcmVfMDEyIiwiYXN5bmNfZXZhbHVhdGlvbl8wMTQiLCJjb250ZXh0X2luc3BlY3Rvcl8wMTYiLCJpbnN0cnVjdG9yX21vZGVfMDE4IiwiYmVuY2htYXJrXzAyMCIsImV4cGxhaW5UaGlzXzAyMiIsImFjY2Vzc2liaWxpdHlfMDI0IiwibW9kZV8wMjYiLCJkdXBsaWNhdGVzXzAyOCIsImV4dHJhXzAyOSIsImZpZWxkX3NleHBzXzAzMiIsImZpZWxkX25hbWVfMDMwIiwidGFpbF8wNDUiLCJmaWVsZF9zZXhwXzAzMSQxMCIsImZpZWxkX3NleHBfMDMxIiwieF8wNDYiLCJmaWVsZF9zZXhwXzAzMSQwIiwiZmllbGRfc2V4cF8wMzEkMSIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQyIiwiZnZhbHVlXzAzNyIsImZpZWxkX3NleHBfMDMxJDMiLCJmdmFsdWVfMDM1IiwiZmllbGRfc2V4cF8wMzEkNCIsImZpZWxkX3NleHBfMDMxJDUiLCJmdmFsdWVfMDM4IiwiZmllbGRfc2V4cF8wMzEkNiIsImZ2YWx1ZV8wNDIiLCJmaWVsZF9zZXhwXzAzMSQ3IiwiZnZhbHVlXzAzNiIsImZpZWxkX3NleHBfMDMxJDgiLCJmdmFsdWVfMDM5IiwiZmllbGRfc2V4cF8wMzEkOSIsImZ2YWx1ZV8wMzQiLCJtb2RlXzAyNyIsImFjY2Vzc2liaWxpdHlfMDI1IiwiZXhwbGFpblRoaXNfMDIzIiwiYmVuY2htYXJrXzAyMSIsImluc3RydWN0b3JfbW9kZV8wMTkiLCJjb250ZXh0X2luc3BlY3Rvcl8wMTciLCJhc3luY19ldmFsdWF0aW9uXzAxNSIsImNvcmVfMDEzIiwic2Vjb25kYXJ5X2ljb25zXzAxMSIsImNhcHRpb25zXzAwOSIsIm1vZGVfMDY2IiwiYWNjZXNzaWJpbGl0eV8wNjQiLCJleHBsYWluVGhpc18wNjIiLCJiZW5jaG1hcmtfMDYwIiwiaW5zdHJ1Y3Rvcl9tb2RlXzA1OCIsImNvbnRleHRfaW5zcGVjdG9yXzA1NiIsImFzeW5jX2V2YWx1YXRpb25fMDU0IiwiY29yZV8wNTIiLCJzZWNvbmRhcnlfaWNvbnNfMDUwIiwiY2FwdGlvbnNfMDQ4IiwiYXJnXzA2NyIsImJuZHNfMDQ3IiwiYXJnXzA2NSIsImJuZHNfMDQ3JDAiLCJhcmdfMDYzIiwiYm5kc18wNDckMSIsImFyZ18wNjEiLCJibmRzXzA0NyQyIiwiYXJnXzA1OSIsImJuZHNfMDQ3JDMiLCJhcmdfMDU3IiwiYm5kc18wNDckNCIsImFyZ18wNTUiLCJibmRzXzA0NyQ1IiwiYXJnXzA1MyIsImJuZHNfMDQ3JDYiLCJhcmdfMDUxIiwiYm5kc18wNDckNyIsImFyZ18wNDkiLCJibmRzXzA0NyQ4IiwiY2FwdGlvbnNfZmllbGQiLCJzZWNvbmRhcnlfaWNvbnNfZmllbGQiLCJjb3JlX2ZpZWxkIiwiYXN5bmNfZXZhbHVhdGlvbl9maWVsZCIsImNvbnRleHRfaW5zcGVjdG9yX2ZpZWxkIiwiaW5zdHJ1Y3Rvcl9tb2RlX2ZpZWxkIiwiYmVuY2htYXJrX2ZpZWxkIiwiZXhwbGFpblRoaXNfZmllbGQiLCJhY2Nlc3NpYmlsaXR5X2ZpZWxkIiwibW9kZV9maWVsZCIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJtb2RlX3ZhbHVlIiwiYWNjZXNzaWJpbGl0eV92YWx1ZSIsImV4cGxhaW5UaGlzX3ZhbHVlIiwiYmVuY2htYXJrX3ZhbHVlIiwiaW5zdHJ1Y3Rvcl9tb2RlX3ZhbHVlIiwiY29udGV4dF9pbnNwZWN0b3JfdmFsdWUiLCJhc3luY19ldmFsdWF0aW9uX3ZhbHVlIiwiY29yZV92YWx1ZSIsInNlY29uZGFyeV9pY29uc192YWx1ZSIsImNhcHRpb25zX3ZhbHVlIiwidl9tb2RlIiwidl9hY2Nlc3NpYmlsaXR5Iiwidl9leHBsYWluVGhpcyIsInZfYmVuY2htYXJrIiwidl9pbnN0cnVjdG9yX21vZGUiLCJ2X2NvbnRleHRfaW5zcGVjdG9yIiwidl9hc3luY19ldmFsdWF0aW9uIiwidl9jb3JlIiwidl9zZWNvbmRhcnlfaWNvbnMiLCJ2X2NhcHRpb25zIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImZpeF9pbnN0cnVjdG9yX21vZGUiLCJzZXR0aW5ncyIsInBwX3N0YXRlIiwic2hvd19zdGF0ZSIsInN0YXRlX29mX3NleHAiLCJzZXhwX29mX3N0YXRlIiwic3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXRlIiwicHBfcGVyc2lzdGVudF9zdGF0ZSIsInNob3dfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cCIsInNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJzY3JhdGNoX2tleSIsInBlcnNpc3QiLCJlZGl0b3IiLCJ1bnBlcnNpc3QiLCJ6aXBwZXIkMCIsInNlcmlhbGl6ZSIsInN0YXRlIiwiZGVzZXJpYWxpemUiLCJkYXRhIiwiZGVzZXJpYWxpemVfb3B0Iiwic2V4cCIsImV4cG9ydCQwIiwiaW1wb3J0JDAiLCJleHBvcnRfaW5pdCIsIm1rX3N0YXRpY3MiLCJjdHhfaW5pdCIsInRlcm0iLCJpbmZvX21hcCIsImVycm9yX2lkcyIsImVycm9yX3NvdXJjZV8wMzEiLCJwcF9zY3JhdGNoIiwic2hvd19zY3JhdGNoIiwiYTIiLCJzY3JhdGNoX29mX3NleHAiLCJzZXhwXzAxNCIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJhcmcxXzAwMyIsImFyZzBfMDAyIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDEzIiwic2V4cF9vZl9zY3JhdGNoIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5IiwicmVzMF8wMjIiLCJyZXMxXzAyMyIsImFyZzFfMDE2IiwiYXJnMF8wMTUiLCJyZXMwXzAxNyIsInJlczFfMDE4IiwicmVzMl8wMjQiLCJzY3JhdGNoX29mX3lvanNvbiIsInYyIiwidjIkMCIsInlvanNvbl9vZl9zY3JhdGNoIiwicHBfZG9jdW1lbnRhdGlvbiIsInNob3dfZG9jdW1lbnRhdGlvbiIsImRvY3VtZW50YXRpb25fb2Zfc2V4cCIsInNleHBfMDQzIiwiYXJnMl8wMzkiLCJhcmcxXzAzOCIsImFyZzBfMDM3Iiwic2V4cF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInJlczFfMDQxIiwic2V4cF8wMzYiLCJhcmcxXzAzMyIsImFyZzBfMDMyIiwicmVzMF8wMzQiLCJyZXMxXzAzNSIsInJlczJfMDQyIiwic2V4cF9vZl9kb2N1bWVudGF0aW9uIiwiYXJnMl8wNTQiLCJhcmcxXzA1MyIsImFyZzFfMDQ1IiwicmVzMF8wNDYiLCJyZXMxXzA0NyIsInJlczFfMDU2IiwiYXJnMV8wNDkiLCJyZXMwXzA1MCIsInJlczFfMDUxIiwicmVzMl8wNTciLCJkb2N1bWVudGF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9kb2N1bWVudGF0aW9uIiwic2V4cF8wNTkiLCJmaWVsZF9zZXhwc18wNjAiLCJzZXR0aW5nc18wNjEiLCJzY3JhdGNoXzA2MyIsImRvY3VtZW50YXRpb25fMDY1IiwiZHVwbGljYXRlc18wNjciLCJleHRyYV8wNjgiLCJzZXhwXzA1OSQwIiwiZmllbGRfc2V4cHNfMDcxIiwiZmllbGRfbmFtZV8wNjkiLCJmaWVsZF9zZXhwXzA3MCQzIiwiZmllbGRfc2V4cF8wNzAiLCJmaWVsZF9zZXhwXzA3MCQwIiwiZmllbGRfc2V4cF8wNzAkMSIsImZpZWxkX3NleHBfMDcwJDIiLCJkb2N1bWVudGF0aW9uXzA2NiIsInNjcmF0Y2hfMDY0Iiwic2V0dGluZ3NfMDYyIiwiZG9jdW1lbnRhdGlvbl8wODQiLCJzY3JhdGNoXzA4MiIsInNldHRpbmdzXzA4MCIsImFyZ18wODUiLCJibmRzXzA3OSQxIiwic2V0dGluZ3NfZmllbGQiLCJzY3JhdGNoX2ZpZWxkIiwiZG9jdW1lbnRhdGlvbl9maWVsZCIsImRvY3VtZW50YXRpb25fdmFsdWUiLCJzY3JhdGNoX3ZhbHVlIiwic2V0dGluZ3NfdmFsdWUiLCJ2X2RvY3VtZW50YXRpb24iLCJ2X3NjcmF0Y2giLCJ2X3NldHRpbmdzIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wNDAiLCJlcnJvcl9zb3VyY2VfMDQ5IiwicmVzMF8wMTAiLCJyZXMxXzAxMSIsInBwX2V4YW1wbGVzIiwic2hvd19leGFtcGxlcyIsImV4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAyMyIsInJlczBfMDIxIiwic2V4cF8wMTciLCJhcmcxXzAxNCIsImFyZzBfMDEzIiwicmVzMF8wMTUiLCJyZXMxXzAxNiIsInJlczFfMDIyIiwic2V4cF9vZl9leGFtcGxlcyIsImFyZzFfMDI5IiwiYXJnMF8wMjgiLCJhcmcxXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMxXzAzMSIsImV4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9leGFtcGxlcyIsInBwX2V4ZXJjaXNlcyIsInNob3dfZXhlcmNpc2VzIiwiZXhlcmNpc2VzX29mX3NleHAiLCJzZXhwXzAzOSIsImFyZzJfMDM1IiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM2IiwicmVzMV8wMzciLCJyZXMyXzAzOCIsInNleHBfb2ZfZXhlcmNpc2VzIiwiYXJnMl8wNDMiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsInJlczJfMDQ2IiwiZXhlcmNpc2VzX29mX3lvanNvbiIsInlvanNvbl9vZl9leGVyY2lzZXMiLCJhMSQwIiwiYTEkMSIsInNleHBfMDUxIiwidGFnXzA1MiIsInNleHBfYXJnc18wNTMiLCJhcmcxXzA1NSIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDcyIiwiYXJnMl8wNzUiLCJhcmcxXzA3NCIsImFyZzBfMDczIiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsInJlczJfMDc4Iiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDY3IiwiYXJnMF8wNjYiLCJyZXMwXzA2OCIsInNleHBfMDY1IiwiYXJnMV8wNjIiLCJhcmcwXzA2MSIsInJlczBfMDYzIiwicmVzMV8wNjQiLCJyZXMxXzA2OSIsImFyZzFfMDgwIiwiYXJnMF8wNzkiLCJyZXMwXzA4MSIsInJlczFfMDgyIiwiYXJnMV8wODgiLCJhcmcwXzA4NyIsInJlczBfMDg5IiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJyZXMxXzA5MCIsImFyZzJfMDkzIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDk0IiwicmVzMV8wOTUiLCJyZXMyXzA5NiIsInYxJDMiLCJ2MSQ0IiwidjEkMSIsInYxJDIiLCJnZXRfZWRpdG9yIiwiZWRpdG9ycyIsInNsaWRlcyIsInNsaWRlcyQwIiwicHV0X2VkaXRvciIsImVkIiwiZWRzIiwic3BlY3MiLCJuJDAiLCJnZXRfemlwcGVyIiwiZ2V0X2N0eF9pbml0IiwiZ2V0X2Vudl9pbml0IiwiaWR4Iiwia2V5Iiwia2V5JDAiLCJsb29rdXBfc3RhdGljcyIsInN0YXRpY3MiLCJrZXkkMSIsImdldF9zcGxpY2VkX2VsYWJzIiwiZCIsImluZm9fbWFwJDAiLCJ0ZXJtJDAiLCJkJDAiLCJzZXRfaW5zdHJ1Y3Rvcl9tb2RlIiwiaW5zdHJ1Y3Rvcl9tb2RlIiwicmVzZXRfbnRoX3NsaWRlIiwiaW5pdF9lZGl0b3JzIiwiaW5pdF9udGgiLCJyZXNldF9uYW1lZF9zbGlkZSIsImluaXRfbmFtZSIsInJlc2V0X2N1cnJlbnQiLCJpbXBvcnRfY3VycmVudCIsImRhdGEkMCIsInN3aXRjaF9leGFtcGxlX3NsaWRlIiwiY3VyIiwicHBfdXBkYXRlIiwic2hvd191cGRhdGUiLCJhMyIsImEyJDAiLCJ1cGRhdGVfb2Zfc2V4cCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMzIiLCJyZXMxXzAzNiIsInNleHBfYXJnc18wMTIiLCJhcmcyXzAxNSIsInJlczBfMDE2IiwicmVzMV8wMTciLCJyZXMyXzAxOCIsInNleHBfYXJnc18wMjEiLCJhcmczXzAyNSIsImFyZzJfMDI0IiwiYXJnMV8wMjMiLCJhcmcwXzAyMiIsInJlczJfMDI4IiwicmVzM18wMjkiLCJzZXhwX2FyZ3NfMDA3IiwicmVzMF8wMDkiLCJzZXhwX29mX3VwZGF0ZSIsInJlczBfMDM4IiwiYXJnMl8wNDEiLCJhcmcxXzA0MCIsInJlczBfMDQyIiwicmVzMV8wNDMiLCJyZXMyXzA0NCIsImFyZzNfMDQ4IiwiYXJnMl8wNDciLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNTAiLCJyZXMyXzA1MSIsInJlczNfMDUyIiwiYXJnMV8wNTQiLCJhcmcwXzA1MyIsInVwZGF0ZV9vZl95b2pzb24iLCJ2MyIsInYyJDEiLCJ2MiQyIiwidjMkMCIsInlvanNvbl9vZl91cGRhdGUiLCJzZXRfdXBkYXRlIiwiZXhwbGFpblRoaXNNb2RlbCIsInUiLCJiIiwiZmVlZGJhY2tfb3B0aW9uIiwiZiIsInBvc3QiLCJwcmUiLCJmb3JtJDAiLCJmZWVkYmFjayIsImZvcm0kMSIsImZlZWRiYWNrX29wdGlvbiQwIiwiZm9ybV9pZCQwIiwiZ3JvdXBfaWQkMCIsInBvc3RfZm9ybSIsImZvcm0kMiIsInByZV9mb3JtIiwiZm9ybSQzIiwiZSIsInBvc3RfZXhhbXBsZSIsInByZV9leGFtcGxlIiwiZXhhbXBsZSQwIiwiZm9ybSQ0IiwiZm9ybV9pZCQxIiwiZ3JvdXBfaWQkMSIsImciLCJwb3N0X2dyb3VwIiwicHJlX2dyb3VwIiwicm93X2hlaWdodF8wMDQiLCJjb2xfd2lkdGhfMDA2IiwiY29sX3dpZHRoXzAwNyIsInJvd19oZWlnaHRfMDA1IiwiY29sX3dpZHRoXzAyMiIsInJvd19oZWlnaHRfMDIwIiwicm93X2hlaWdodF9maWVsZCIsImNvbF93aWR0aF9maWVsZCIsImNvbF93aWR0aF92YWx1ZSIsInJvd19oZWlnaHRfdmFsdWUiLCJ2X2NvbF93aWR0aCIsInZfcm93X2hlaWdodCIsImNsaXBib2FyZF9zaGltX2lkIiwiZ2V0X2VsZW1fYnlfaWQiLCJkb2MiLCJkYXRlX25vdyIsInRpbWVzdGFtcCIsImdldF9rZXkiLCJjdHJsX2hlbGQiLCJzaGlmdF9oZWxkIiwiYWx0X2hlbGQiLCJtZXRhX2hlbGQiLCJudW1fY2xpY2tzIiwiaXNfZG91YmxlX2NsaWNrIiwiZG93bmxvYWRfc3RyaW5nX2ZpbGUiLCJjb250ZW50X3R5cGUiLCJjb250ZW50cyIsImJsb2IiLCJkb3dubG9hZF9qc29uIiwicmVhZF9maWxlIiwiZmlsZSIsInJlc3VsdCIsIm9wdGlvbiIsInNldF9sb2NhbHN0b3JlIiwibG9jYWxfc3RvcmUiLCJnZXRfbG9jYWxzdG9yZSIsImNsZWFyX2xvY2Fsc3RvcmUiLCJjb25maXJtIiwibWVzc2FnZSIsImxvZyIsImZvY3VzX2NsaXBib2FyZF9zaGltIiwiY2xpcGJvYXJkX3NoaW0iLCJjb3B5Iiwic2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlIiwiY2FyZXRfZWxlbSIsIm1haW4iLCJzZXRfY3VycmVudCIsImZyYWciLCJmcmFnJDAiLCJoaXN0b3J5IiwiZ2V0X2N1cnJlbnQiLCJmcmFnbWVudF9vZl91cmwiLCJ0eV92aWV3IiwiY2xzIiwiYWxpYXNfdmlldyIsInByb3ZfdmlldyIsInZpZXdfdHkiLCJ0eSIsInByb3YiLCJ0MiIsInQxIiwidHMiLCJ0MCIsInRzJDAiLCJjdHJfdmlldyIsInRzX3ZpZXdzIiwidDAkMCIsInRzJDEiLCJ0JDAiLCJjdHIiLCJ0eXAkMCIsInZpZXciLCJraW5kIiwicHJlZml4Iiwic2F2ZV9zZXR0aW5nc19rZXkiLCJzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5Iiwic2F2ZV9zY3JhdGNoX2tleSIsInNhdmVfZG9jdW1lbnRhdGlvbl9rZXkiLCJjdXJfZXhlcmNpc2Vfa2V5IiwiZnVsbF9rZXkiLCJzYXZlIiwidmFsdWUiLCJsb2FkIiwic2F2ZSQwIiwibG9hZCQwIiwic2VyaWFsaXplJDAiLCJkZXNlcmlhbGl6ZSQwIiwic2F2ZSQxIiwibG9hZCQxIiwiZXhwb3J0JDEiLCJpbXBvcnQkMSIsInBwX3BlcnNpc3RlbnQiLCJzaG93X3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3NleHAiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsInJlc3VsdHMiLCJvZl9wZXJzaXN0ZW50Iiwic2VyaWFsaXplJDEiLCJzY3JhdGNoIiwiZGVzZXJpYWxpemUkMSIsInNhdmUkMiIsImluaXQkMSIsImxvYWQkMiIsImV4cG9ydCQyIiwiaW1wb3J0JDIiLCJwcF9wZXJzaXN0ZW50JDAiLCJzaG93X3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9wZXJzaXN0ZW50JDAiLCJwZXJzaXN0ZW50X29mX3lvanNvbiQwIiwieW9qc29uX29mX3BlcnNpc3RlbnQkMCIsInRvX3BlcnNpc3RlbnQkMCIsInN0cmluZyIsIm9mX3BlcnNpc3RlbnQkMCIsInNlcmlhbGl6ZSQyIiwiZGVzZXJpYWxpemUkMiIsInNhdmUkMyIsImluaXQkMiIsImRvY3VtZW50YXRpb24iLCJsb2FkJDMiLCJleHBvcnQkMyIsImltcG9ydCQzIiwia2V5c3RyaW5nX29mX2tleSIsImtleXN0cmluZ19vZiIsImtleV9vZl9rZXlzdHJpbmciLCJrZXlzdHJpbmciLCJzYXZlX2V4ZXJjaXNlX2tleSIsInNhdmVfZXhlcmNpc2UiLCJpbml0X2V4ZXJjaXNlIiwic3BlYyIsImxvYWRfZXhlcmNpc2UiLCJzYXZlJDQiLCJpbml0JDMiLCJsb2FkJDQiLCJmaXJzdF9zcGVjIiwiZmlyc3Rfa2V5IiwiZXhlcmNpc2UkMCIsInByZXBfZXhlcmNpc2VfZXhwb3J0Iiwic2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImV4cG9ydCQ0IiwiaW1wb3J0JDQiLCJleGVyY2lzZV9leHBvcnQiLCJwZXJzaXN0ZW50X3N0YXRlIiwic3BlYyQwIiwicHBfdGltZXN0YW1wIiwic2hvd190aW1lc3RhbXAiLCJ0aW1lc3RhbXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3RpbWVzdGFtcCIsInRpbWVzdGFtcF9vZl9zZXhwIiwic2V4cF9vZl90aW1lc3RhbXAiLCJwcF91aV9zdGF0ZSIsInNob3dfdWlfc3RhdGUiLCJ1aV9zdGF0ZV9vZl95b2pzb24iLCJmb250X21ldHJpY3NfZmllbGQiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfZmllbGQiLCJtb3VzZWRvd25fZmllbGQiLCJtb3VzZWRvd25fdmFsdWUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfdmFsdWUiLCJmb250X21ldHJpY3NfdmFsdWUiLCJ5b2pzb25fb2ZfdWlfc3RhdGUiLCJ2X21vdXNlZG93biIsInZfc2hvd19iYWNrcGFja190YXJnZXRzIiwidl9mb250X21ldHJpY3MiLCJ1aV9zdGF0ZV9vZl9zZXhwIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJmb250X21ldHJpY3NfMDA1Iiwic2hvd19iYWNrcGFja190YXJnZXRzXzAwNyIsIm1vdXNlZG93bl8wMDkiLCJkdXBsaWNhdGVzXzAxMSIsImV4dHJhXzAxMiIsInNleHBfMDAzJDAiLCJmaWVsZF9zZXhwc18wMTUiLCJmaWVsZF9uYW1lXzAxMyIsImZpZWxkX3NleHBfMDE0JDMiLCJmaWVsZF9zZXhwXzAxNCIsImZpZWxkX3NleHBfMDE0JDAiLCJmaWVsZF9zZXhwXzAxNCQxIiwiZnZhbHVlXzAxNiIsImZpZWxkX3NleHBfMDE0JDIiLCJtb3VzZWRvd25fMDEwIiwic2hvd19iYWNrcGFja190YXJnZXRzXzAwOCIsImZvbnRfbWV0cmljc18wMDYiLCJzZXhwX29mX3VpX3N0YXRlIiwibW91c2Vkb3duXzAyOCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wMjYiLCJmb250X21ldHJpY3NfMDI0IiwiYXJnXzAyOSIsImJuZHNfMDIzJDEiLCJ1aV9zdGF0ZV9pbml0IiwiY3V0b2ZmIiwiYmxhbmsiLCJsb2FkX2VkaXRvcnMiLCJtb2RlIiwicmVzdWx0cyQwIiwic2F2ZV9lZGl0b3JzIiwiaW5pdF9tb2RlbCIsImFjY2Vzc2liaWxpdHlNb2RlbCIsInVpX3N0YXRlIiwic2F2ZV9hbmRfcmV0dXJuIiwicmVzZXQiLCJuZXdfbW9kZWwiLCJ0b19zdHJpbmciLCJxdWVyeSIsImdldF9wb3NpdGlvbiIsIm1lYXN1cmVkIiwibSIsImluZm9fZXhwX3N0ciIsImluZm9fcGF0X3N0ciIsImluZm9fdHlwX3N0ciIsImluZm9fdHBhdF9zdHIiLCJpbmZvX3NlY19zdHIiLCJzZWMiLCJpbmZvX3N0ciIsImluZm8iLCJxdWVyeV9yZXBseSIsInVuc2VsZWN0ZWQiLCJpbmRleCIsInBvc2l0aW9uIiwiY29sIiwicm93IiwiaWQkMCIsImNpIiwiYWN0aW9uJDAiLCJpc19saW5lX25lZWRlZCIsInByb2dyYW0iLCJyb3dzIiwiY29sJDAiLCJyb3ckMCIsImNvbnRleHRfZW50cnkiLCJlbnRyeSIsIm5hbWUkMCIsImlkJDEiLCJjaSQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVycm9yX3NvdXJjZV8wNTAiLCJlcnJvcl9zb3VyY2VfMDU0IiwiZXJyb3Jfc291cmNlXzA2NSIsImVycm9yX3NvdXJjZV8wODMiLCJlcnJvcl9zb3VyY2VfMDg3IiwiZXJyb3Jfc291cmNlXzIzNSIsInBwX2V2YWx1YXRpb25fc2V0dGluZ3NfYWN0aW9uIiwic2hvd19ldmFsdWF0aW9uX3NldHRpbmdzX2FjdGlvIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfIiwic2V4cF9vZl9ldmFsdWF0aW9uX3NldHRpbmdzX2FjIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfJDAiLCJ5b2pzb25fb2ZfZXZhbHVhdGlvbl9zZXR0aW5nc18iLCJwcF9zZXR0aW5nc19hY3Rpb24iLCJzaG93X3NldHRpbmdzX2FjdGlvbiIsInNldHRpbmdzX2FjdGlvbl9vZl9zZXhwIiwic2V4cF8wMDkiLCJ0YWdfMDEwIiwic2V4cF9hcmdzXzAxMSIsImFyZzBfMDEyIiwicmVzMF8wMTMiLCJzZXhwX2FyZ3NfMDE2IiwiYXJnMF8wMTciLCJyZXMwXzAxOCIsInNleHBfYXJnc18wMjYiLCJhcmcwXzAyNyIsInJlczBfMDIzIiwic2V4cF9vZl9zZXR0aW5nc19hY3Rpb24iLCJhcmcwXzAzMSIsInJlczBfMDMyIiwiYXJnMF8wMzUiLCJzZXR0aW5nc19hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NldHRpbmdzX2FjdGlvbiIsInBwX3N0ZXBwZXJfYWN0aW9uIiwic2hvd19zdGVwcGVyX2FjdGlvbiIsInN0ZXBwZXJfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA0MSIsInRhZ18wNDIiLCJzZXhwX29mX3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBwZXJfYWN0aW9uIiwicHBfYWdlbnQiLCJzaG93X2FnZW50IiwiYWdlbnRfb2Zfc2V4cCIsInNleHBfb2ZfYWdlbnQiLCJhZ2VudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWdlbnQiLCJwcF9hZ2VudF9hY3Rpb24iLCJzaG93X2FnZW50X2FjdGlvbiIsImFnZW50X2FjdGlvbl9vZl9zZXhwIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX29mX2FnZW50X2FjdGlvbiIsInJlczBfMDYyIiwiYWdlbnRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudF9hY3Rpb24iLCJwcF9zZXRfbWV0YSIsInNob3dfc2V0X21ldGEiLCJzZXRfbWV0YV9vZl9zZXhwIiwic2V4cF8wNjciLCJ0YWdfMDY4Iiwic2V4cF9hcmdzXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJzZXhwX2FyZ3NfMDc0IiwiYXJnMF8wNzUiLCJzZXhwX29mX3NldF9tZXRhIiwiYXJnMF8wNzciLCJyZXMwXzA3OCIsInJlczBfMDgwIiwic2V0X21ldGFfb2ZfeW9qc29uIiwieW9qc29uX29mX3NldF9tZXRhIiwicHBfYmVuY2htYXJrX2FjdGlvbiIsInNob3dfYmVuY2htYXJrX2FjdGlvbiIsImJlbmNobWFya19hY3Rpb25fb2Zfc2V4cCIsInNleHBfMDg0Iiwic2V4cF9vZl9iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYmVuY2htYXJrX2FjdGlvbiIsImEwJDQiLCJhMCQ1IiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTAkOSIsImEwJDEwIiwiYTAkMTEiLCJhMCQxMiIsImEwJDEzIiwiYTAkMTQiLCJhMCQxNSIsImEwJDE2Iiwic2V4cF8wODkiLCJ0YWdfMDkwIiwic2V4cF9hcmdzXzEyNiIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJzZXhwX2FyZ3NfMTIxIiwiYXJnMF8xMjIiLCJyZXMwXzEyMyIsInNleHBfYXJnc18xNDEiLCJhcmcwXzE0MiIsInJlczBfMTQzIiwic2V4cF9hcmdzXzE3NiIsImFyZzBfMTc3IiwicmVzMF8xNzgiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMF8xMDIiLCJyZXMwXzEwMyIsInNleHBfYXJnc18wOTEiLCJhcmcwXzA5MiIsInJlczBfMDkzIiwic2V4cF9hcmdzXzA5NiIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJzZXhwX2FyZ3NfMTgxIiwiYXJnMV8xODMiLCJhcmcwXzE4MiIsInJlczBfMTg0IiwicmVzMV8xODUiLCJzZXhwX2FyZ3NfMTM2IiwiYXJnMF8xMzciLCJyZXMwXzEzOCIsInNleHBfYXJnc18xMTEiLCJzZXhwX2FyZ3NfMTMxIiwiYXJnMF8xMzIiLCJyZXMwXzEzMyIsInNleHBfYXJnc18xNTYiLCJhcmcwXzE1NyIsInJlczBfMTU4Iiwic2V4cF9hcmdzXzE1MSIsImFyZzBfMTUyIiwicmVzMF8xNTMiLCJzZXhwX2FyZ3NfMTQ2IiwiYXJnMF8xNDciLCJyZXMwXzE0OCIsInNleHBfYXJnc18xNzEiLCJhcmcwXzE3MiIsInJlczBfMTczIiwic2V4cF9hcmdzXzE2NiIsImFyZzBfMTY3IiwicmVzMF8xNjgiLCJzZXhwX2FyZ3NfMTYxIiwiYXJnMF8xNjIiLCJyZXMwXzE2MyIsInNleHBfYXJnc18xMDYiLCJhcmcwXzEwNyIsInJlczBfMTA4Iiwic2V4cF9hcmdzXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzE5OSIsInJlczBfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsImFyZzBfMjAzIiwicmVzMF8yMDQiLCJhcmcwXzIwNSIsInJlczBfMjA2IiwiYXJnMF8yMDciLCJyZXMwXzIwOCIsImFyZzBfMjA5IiwicmVzMF8yMTAiLCJhcmcwXzIxMSIsInJlczBfMjEyIiwiYXJnMF8yMTMiLCJyZXMwXzIxNCIsImFyZzBfMjE1IiwicmVzMF8yMTYiLCJhcmcwXzIxNyIsInJlczBfMjE4IiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsImFyZzBfMjIxIiwicmVzMF8yMjIiLCJhcmcwXzIyMyIsInJlczBfMjI0IiwiYXJnMF8yMjUiLCJyZXMwXzIyNiIsImFyZzFfMjI4IiwiYXJnMF8yMjciLCJyZXMwXzIyOSIsInJlczFfMjMwIiwiYXJnMF8yMzEiLCJyZXMwXzIzMiIsInlvanNvbl9hcmdzJDQiLCJ2MCQ5IiwidjAkMTAiLCJ5b2pzb25fYXJncyQ3IiwidjAkMTUiLCJ2MCQxNiIsInlvanNvbl9hcmdzJDYiLCJ2MCQxMyIsInYwJDE0IiwieW9qc29uX2FyZ3MkNSIsInYwJDExIiwidjAkMTIiLCJ5b2pzb25fYXJncyQxNCIsInYwJDI5IiwidjAkMzAiLCJ5b2pzb25fYXJncyQxMyIsInYwJDI3IiwidjAkMjgiLCJ5b2pzb25fYXJncyQxMiIsInYwJDI1IiwidjAkMjYiLCJ5b2pzb25fYXJncyQxMSIsInYwJDIzIiwidjAkMjQiLCJ5b2pzb25fYXJncyQxMCIsInYwJDIxIiwidjAkMjIiLCJ5b2pzb25fYXJncyQ5IiwidjAkMTkiLCJ2MCQyMCIsInlvanNvbl9hcmdzJDgiLCJ2MCQxNyIsInYwJDE4IiwieW9qc29uX2FyZ3MkMTgiLCJ2MCQzNyIsInYwJDM4IiwieW9qc29uX2FyZ3MkMTciLCJ2MCQzNSIsInYwJDM2IiwieW9qc29uX2FyZ3MkMTYiLCJ2MCQzMyIsInYwJDM0IiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwic2V4cF8yMzciLCJ0YWdfMjM4Iiwic2V4cF9hcmdzXzI0NCIsImFyZzBfMjQ1IiwicmVzMF8yNDYiLCJzZXhwX2FyZ3NfMjM5IiwiYXJnMF8yNDAiLCJyZXMwXzI0MSIsImFyZzBfMjQ3IiwicmVzMF8yNDgiLCJhcmcwXzI0OSIsImlzX2VkaXQiLCJzX2FjdGlvbiIsImEiLCJyZWV2YWx1YXRlX3Bvc3RfdXBkYXRlIiwic2hvdWxkX3Njcm9sbF90b19jYXJldCIsIm1ldGFfYWN0aW9uIiwiZWRfaW5pdCIsImVyciIsInJlc2V0X2J1ZmZlciIsInokMCIsImVkJDAiLCJhcHBseSIsInNjaGVkdWxlX2FjdGlvbiIsInRyaW0iLCJjb21wbGV0aW9uIiwic3RhcnQiLCJhY3Rpb25zJDEiLCJtb2RlbCQwIiwiYWN0aW9ucyIsImFjdGlvbnMkMCIsImhkIiwibW9kZWwkMSIsInNhbXBsZV8xIiwic3RyX3RvX2luc2VydHMiLCJjJDAiLCJhY3Rpb25zXzEiLCJ0aW1lIiwiZmluaXNoIiwiZWxhcHNlZCIsInByaW50IiwiZW52X2luaXQiLCJpbmRleCQwIiwiZGJfbmFtZSIsInRhYmxlX25hbWUiLCJpc19hY3Rpb25fbG9nZ2VkIiwia3Zfc3RvcmUiLCJkYiIsIndpdGhfZGIiLCJlcnJvciIsInVwZ3JhZGUiLCJhZGQiLCJnZXRfYWxsIiwiY2xlYXJfYW5kIiwiY2FsbGJhY2siLCJwcF9zIiwic2hvd19zIiwic19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcyIsInNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9zIiwieF8wMTQiLCJnZXRfYW5kIiwiZW50cmllcyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDY0IiwicHBfYWxsIiwic2hvd19hbGwiLCJhbGxfb2Zfc2V4cCIsInNldHRpbmdzXzAwNCIsImV4cGxhaW5UaGlzTW9kZWxfMDA2Iiwic2NyYXRjaF8wMDgiLCJleGVyY2lzZV8wMTAiLCJkb2N1bWVudGF0aW9uXzAxMiIsImxvZ18wMTQiLCJkdXBsaWNhdGVzXzAxNiIsImV4dHJhXzAxNyIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmdmFsdWVfMDI2IiwiZmllbGRfc2V4cF8wMTkkMSIsImZ2YWx1ZV8wMjQiLCJmaWVsZF9zZXhwXzAxOSQyIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE5JDMiLCJmdmFsdWVfMDI1IiwiZmllbGRfc2V4cF8wMTkkNCIsImZ2YWx1ZV8wMjMiLCJmaWVsZF9zZXhwXzAxOSQ1IiwiZnZhbHVlXzAyMiIsImxvZ18wMTUiLCJkb2N1bWVudGF0aW9uXzAxMyIsImV4ZXJjaXNlXzAxMSIsInNjcmF0Y2hfMDA5IiwiZXhwbGFpblRoaXNNb2RlbF8wMDciLCJzZXR0aW5nc18wMDUiLCJzZXhwX29mX2FsbCIsImxvZ18wNDIiLCJkb2N1bWVudGF0aW9uXzA0MCIsImV4ZXJjaXNlXzAzOCIsInNjcmF0Y2hfMDM2IiwiZXhwbGFpblRoaXNNb2RlbF8wMzQiLCJzZXR0aW5nc18wMzIiLCJhcmdfMDQzIiwiYm5kc18wMzEiLCJhcmdfMDQxIiwiYm5kc18wMzEkMCIsImFyZ18wMzkiLCJibmRzXzAzMSQxIiwiYXJnXzAzNyIsImJuZHNfMDMxJDIiLCJhcmdfMDM1IiwiYm5kc18wMzEkMyIsImFyZ18wMzMiLCJibmRzXzAzMSQ0IiwiYWxsX29mX3lvanNvbiIsImV4cGxhaW5UaGlzTW9kZWxfZmllbGQiLCJleGVyY2lzZV9maWVsZCIsImxvZ19maWVsZCIsImxvZ192YWx1ZSIsImV4ZXJjaXNlX3ZhbHVlIiwiZXhwbGFpblRoaXNNb2RlbF92YWx1ZSIsInlvanNvbl9vZl9hbGwiLCJ2X2xvZyIsInZfZXhlcmNpc2UiLCJ2X2V4cGxhaW5UaGlzTW9kZWwiLCJwcF9hbGxfZjIyIiwic2hvd19hbGxfZjIyIiwiYWxsX2YyMl9vZl9zZXhwIiwic2V4cF8wNDUiLCJmaWVsZF9zZXhwc18wNDYiLCJzZXR0aW5nc18wNDciLCJzY3JhdGNoXzA0OSIsImV4ZXJjaXNlXzA1MSIsImxvZ18wNTMiLCJkdXBsaWNhdGVzXzA1NSIsImV4dHJhXzA1NiIsInNleHBfMDQ1JDAiLCJmaWVsZF9zZXhwc18wNTkiLCJmaWVsZF9uYW1lXzA1NyIsInRhaWxfMDY2IiwiZmllbGRfc2V4cF8wNTgkNCIsImZpZWxkX3NleHBfMDU4IiwieF8wNjciLCJmaWVsZF9zZXhwXzA1OCQwIiwiZnZhbHVlXzA2MyIsImZpZWxkX3NleHBfMDU4JDEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTgkMiIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQzIiwiZnZhbHVlXzA2MSIsImxvZ18wNTQiLCJleGVyY2lzZV8wNTIiLCJzY3JhdGNoXzA1MCIsInNldHRpbmdzXzA0OCIsInNleHBfb2ZfYWxsX2YyMiIsImxvZ18wNzUiLCJleGVyY2lzZV8wNzMiLCJzY3JhdGNoXzA3MSIsInNldHRpbmdzXzA2OSIsImFyZ18wNzYiLCJibmRzXzA2OCIsImFyZ18wNzQiLCJibmRzXzA2OCQwIiwiYXJnXzA3MiIsImJuZHNfMDY4JDEiLCJhcmdfMDcwIiwiYm5kc18wNjgkMiIsImFsbF9mMjJfb2ZfeW9qc29uIiwieW9qc29uX29mX2FsbF9mMjIiLCJta19hbGwiLCJleHBvcnRfYWxsIiwiaW1wb3J0X2FsbCIsImFsbCIsImFsbF9mMjIiLCJwcF9zZWxlY3Rpb24iLCJzaG93X3NlbGVjdGlvbiIsInNlbGVjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9zZWxlY3Rpb24iLCJzZWxlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdGlvbiIsInBwX3F1ZXJ5Iiwic2hvd19xdWVyeSIsInF1ZXJ5X29mX3NleHAiLCJzZXhwX29mX3F1ZXJ5IiwicXVlcnlfb2ZfeW9qc29uIiwieW9qc29uX29mX3F1ZXJ5Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsImFyZzBfMDI1IiwiZ2V0X2lucHV0X3ZhbHVlIiwicXVlcnlfcGFyc2VyIiwidXBkYXRlX3NldHRpbmdzIiwibmV3X21vZGUiLCJldmFsdWF0aW9uIiwiZXZhbHVhdGlvbiQwIiwiZXhwbGFpblRoaXMiLCJzZXR0aW5ncyQwIiwiZXhwbGFpblRoaXMkMCIsInNldHRpbmdzJDEiLCJhJDAiLCJoaWdobGlnaHQiLCJleHBsYWluVGhpcyQxIiwic2V0dGluZ3MkMiIsImFjY2Vzc2liaWxpdHkiLCJzZXR0aW5ncyQzIiwiYWNjZXNzaWJpbGl0eSQwIiwic2V0dGluZ3MkNCIsInNjaGVkdWxlX2V2YWx1YXRpb24iLCJlbGFicyIsImV2YWxfcnMiLCJycXMiLCJycyIsInN0ZXBfcnMiLCJuZXdfcnMiLCJ1cGRhdGVfY2FjaGVkX2RhdGEiLCJ1cGRhdGVfc3RhdGljcyIsInVwZGF0ZV9keW5hbWljcyIsInVwZGF0ZV9zdGF0aWNzJDAiLCJtJDAiLCJzd2l0Y2hfc2NyYXRjaF9zbGlkZSIsInNwZWNzJDAiLCJzd2l0Y2hfZXhlcmNpc2VfZWRpdG9yIiwicG9zIiwiZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSIsInVpX3N0YXRlX3VwZGF0ZSIsImZvbnRfbWV0cmljcyIsInppcHBlcl9pbml0IiwiZWRfc3RyIiwiZWRpdG9ycyQwIiwiZWQkMSIsImVkJDIiLCJlZCQzIiwiZWQkNCIsImluc3RydWN0b3JfbW9kZSQwIiwiZWRpdG9ycyQxIiwiZWRpdG9ycyQyIiwiZmlsZSQwIiwiZGF0YSQxIiwiZWRpdG9ycyQzIiwiaW5zdHJ1Y3Rvcl9tb2RlJDEiLCJlZGl0b3JzJDQiLCJtb2RlbCQyIiwibW9kZWwkMyIsImNsaXBib2FyZCIsImVkJDUiLCJ6JDEiLCJlZCQ2IiwiZWRpdG9ycyQ1IiwiciIsInIkMCIsImxhbSIsInVwX2Fycm93IiwiZG93bl9hcnJvdyIsImxlZnRfYXJyb3ciLCJyaWdodF9hcnJvdyIsIm5ic3AiLCJ6d3NwIiwidHlwZUFycm93U3ltIiwiY2FzdEFycm93U3ltIiwiZWxsaXBzaXMiLCJsZW5ndGgiLCJzdG9wIiwiY291bnQiLCJjb3VudCQwIiwic3RhcnQkMCIsImNvdW50JDEiLCJzdGFydCQxIiwiY291bnQkMiIsInN0YXJ0JDIiLCJzdGFydCQzIiwidHlwYW5uX3BhdF9jb2xvcmluZ19pZHMiLCJwYXRfaWQiLCJ0eXBfaWQiLCJ0eXBhbm5fcGF0IiwidHlwYW5uIiwidHlwX2RlZiIsInR5YWxpYXNfYmFzZV9leHBfY29sb3JpbmdfaWRzIiwidHBhdF9pZCIsImRlZl9pZCIsInR5YWxpYXNfZXhwIiwidHlhbGlhc19leHBzIiwiZXhwbGFuYXRpb24kMCIsImV4cGxhbmF0aW9uJDEiLCJleHBsYW5hdGlvbiQyIiwiY29tbWEiLCJ0dXBsZV90eXAiLCJ0dXBsZTBfdHlwIiwidHlwX2VsZW0xIiwidHlwX2VsZW0yIiwidHVwbGUyX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtMV9pZCIsImVsZW0yX2lkIiwiY29tbWEkMCIsInR1cGxlMl90eXAiLCJ0eXBfZWxlbTEkMCIsInR5cF9lbGVtMiQwIiwidHlwX2VsZW0zIiwidHVwbGUzX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtM19pZCIsImNvbW1hJDEiLCJ0dXBsZTNfdHlwIiwidHVwbGUiLCJ0dXBsZTAiLCJ0dXBsZTIiLCJ0dXBsZTMiLCJ0dXBsZV9wYXQiLCJwYXQxIiwicGF0MiIsInR1cGxlX3BhdF9zaXplMl9jb2xvcmluZ19pZHMiLCJ0dXBsZV9wYXRfc2l6ZTIiLCJwYXQxJDAiLCJwYXQyJDAiLCJwYXQzIiwidHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyIsInR1cGxlX3BhdF9zaXplMyIsInR1cGxlX2V4YW1wbGVfMSIsInR1cGxlX2V4YW1wbGVfMiIsInR1cGxlX2V4cCIsImV4cDEiLCJleHAyIiwidHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyIsImV4cDFfaWQiLCJleHAyX2lkIiwidHVwbGVfZXhwX3NpemUyIiwiZXhwMSQwIiwiZXhwMiQwIiwiZXhwMyIsInR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMiLCJleHAzX2lkIiwidHVwbGVfZXhwX3NpemUzIiwidHVwbGVzIiwidHVwbGVzMiIsInR1cGxlczMiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInNleHBfYXJnc18wNDgiLCJhcmcwXzA0OSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJhcmcxXzA1OCIsImFyZzBfMDU3IiwicmVzMF8wNTkiLCJyZXMxXzA2MCIsImFyZzBfMDY1IiwicmVzMF8wNjYiLCJhcmcwXzA2NyIsImFyZzBfMDY5IiwicmVzMF8wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwidmFsdWVzIiwic29ydGVkX3ZhbHVlcyIsInkiLCJvcmRpbmFscyIsInZhbHVlcyQwIiwibWtfbm9kZSIsInNoYXBlIiwibWlkIiwicGVyZm9ybSIsIm9wIiwidHJlZSIsImdvIiwiaW50ZXJ2YWwiLCJub2RlIiwiYiQwIiwibm9kZSQwIiwibCQwIiwibCQxIiwiciQxIiwic3RhdHVzIiwibmV3X3Jvb3QiLCJtc2ciLCJpbnNlcnQiLCJkZWxldGUkMCIsImNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uIiwic3RhY2siLCJyZXN0IiwiYiQxIiwiYSQxIiwic3RhY2skMCIsIm9yZGluYWwyIiwib3JkaW5hbDEiLCJvMiIsIm8xIiwiY21kZnVkZ2UiLCJzdGgkMCIsInkkMCIsInkkMSIsIngkMiIsInkkMiIsImR4IiwiZHkiLCJoIiwiaCQwIiwidiQwIiwic2NhbGVfY21kIiwic2NhbGVfeCIsInNjYWxlX3kiLCJkeSQwIiwiZHgkMCIsImR4JDEiLCJkeSQxIiwic2NhbGUiLCJyZXZlcnNlIiwidHJhbnNsYXRlX2NtZCIsImNtZCIsInRyYW5zbGF0ZSIsInN0cmluZ19vZl9mbGFnIiwic3RyaW5nX29mX2NvbW1hbmQiLCJkeSQyIiwiZHgkMiIsInN3ZWVwX2ZsYWciLCJsYXJnZV9hcmNfZmxhZyIsInhfYXhpc19yb3RhdGlvbiIsInJ5IiwicngiLCJhdHRycyIsInBhdGgiLCJidWZmZXIiLCJsaW5rZWRfZWRnZV9lcSIsImUxIiwiZTIiLCJjbWRfb2ZfbGlua2VkX2VkZ2UiLCJlZGdlIiwic3JjIiwiZHN0Iiwicm91bmRfY29ybmVycyIsIm1heF9yYWRpaSIsInJ4X21pbiIsInJ5X21pbiIsImNtZDIiLCJjbWQxIiwicnkkMCIsInJ4JDAiLCJjbG9ja3dpc2UiLCJyeSQxIiwicngkMSIsImNsb2Nrd2lzZSQwIiwiaXNfbGVmdF9zaWRlIiwibWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlIiwiZWRnZXMiLCJyaWdodF9lZGdlcyIsImxlZnRfZWRnZXMiLCJ0bCIsIm1lcmdlZF9sZWZ0X2VkZ2VzIiwibWVyZ2VkX3JpZ2h0X2VkZ2VzIiwidmVydGljYWxfY29udG91cl9lZGdlcyIsInJlY3RzIiwiaGVpZ2h0Iiwid2lkdGgiLCJtaW4iLCJtYXhfeCIsIm1heF95IiwibWF4IiwibWluX21heCIsIm1heF9taW4iLCJpc19sZWZ0MSIsImlzX2xlZnQyIiwic29ydGVkX3ZlcnRpY2FsX3NpZGVzIiwic2VnbWVudF90cmVlIiwieXMiLCJta19jb250b3VyX2VkZ2UiLCJ5X2RzdCIsInlfc3JjIiwibmV3X2NvbnRvdXJfZWRnZXMiLCJ1cGRhdGVkX3RyZWUiLCJ1cGRhdGVkX3RyZWUkMCIsIm5ld19jb250b3VyX2VkZ2VzJDAiLCJjb3JuZXJfcmFkaWkiLCJ2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzJDAiLCJpc19zcmMyIiwiaXNfc3JjMSIsInB0MSIsInB0MiIsIm5leHQiLCJwcmV2IiwieF9kc3QiLCJ4X3NyYyIsInhfZHN0JDAiLCJ4X3NyYyQwIiwiYnVpbGRfcGF0aCIsImNvbnRhaW5lciIsImNvbnRhaW5lcl90eXBlIiwib3JpZ2luIiwiYnVmZmVyZWRfaGVpZ2h0IiwiYnVmZmVyZWRfd2lkdGgiLCJidWZmZXJlZF9oZWlnaHRfcHgiLCJidWZmZXJlZF93aWR0aF9weCIsImNvbnRhaW5lcl9vcmlnaW5feCIsImNvbnRhaW5lcl9vcmlnaW5feSIsImlubmVyIiwiaW5kZW50IiwidnRyaW0iLCJib3giLCJpc19sYXN0IiwiaXNfZmlyc3QiLCJ2dHJpbSQwIiwidnRyaW0kMSIsInZ0cmltJDIiLCJzdWJqZWN0Iiwib2Zmc2V0IiwidmlldyQwIiwieF8wMDIiLCJ4XzAwMyIsImxibCIsInByZWNlZGVuY2VfY29uc3QiLCJwcmVjZWRlbmNlX0FwIiwicHJlY2VkZW5jZV9Qb3dlciIsInByZWNlZGVuY2VfVGltZXMiLCJwcmVjZWRlbmNlX0RpdmlkZSIsInByZWNlZGVuY2VfUGx1cyIsInByZWNlZGVuY2VfTWludXMiLCJwcmVjZWRlbmNlX0NvbnMiLCJwcmVjZWRlbmNlX0VxdWFscyIsInByZWNlZGVuY2VfTGVzc1RoYW4iLCJwcmVjZWRlbmNlX0dyZWF0ZXJUaGFuIiwicHJlY2VkZW5jZV9BbmQiLCJwcmVjZWRlbmNlX09yIiwicHJlY2VkZW5jZV9Db21tYSIsInByZWNlZGVuY2VfbWF4IiwicGFkX2NoaWxkIiwiZW5mb3JjZV9pbmxpbmUiLCJjaGlsZCIsImlubGluZV9jaG9pY2UiLCJwYXJhX2Nob2ljZSIsImRlbGltX3RleHQiLCJlbXB0eV9ob2xlIiwibGlzdF9uaWwiLCJ0cml2Iiwid2lsZCIsIm9wZW5fUGFyZW50aGVzaXplZCIsImNsb3NlX1BhcmVudGhlc2l6ZWQiLCJzeW1fRnVuIiwiY29sb25fRnVuIiwiYXJyb3dfRnVuIiwiZml4X0ZpeEYiLCJhcnJvd19GaXhGIiwiY29sb25fRml4RiIsInByb2plY3Rpb25fZG90Iiwib3Blbl9DYXNlIiwiY2xvc2VfQ2FzZSIsImJhcl9SdWxlIiwiYXJyb3dfUnVsZSIsIm9wZW5fQ2FzdCIsImFycm93X0Nhc3QiLCJjbG9zZV9DYXN0Iiwib3Blbl9GYWlsZWRDYXN0IiwiYXJyb3dfRmFpbGVkQ2FzdCIsImNsb3NlX0ZhaWxlZENhc3QiLCJta19FbXB0eUhvbGUiLCJta19FeHBhbmRpbmdLZXl3b3JkIiwiaGMiLCJta19JbnZhbGlkVGV4dCIsIm1rX1NlcXVlbmNlIiwiZG9jMSIsImRvYzIiLCJta19JbnRMaXQiLCJta19TdHJpbmdMaXQiLCJta19UZXN0IiwibWtfRmxvYXRMaXQiLCJta19Cb29sTGl0IiwibWtfQ29uc3RydWN0b3JMaXQiLCJta19Db25zIiwibWtfTGlzdENvbmNhdCIsIm1rX2NvbW1hX3NlcSIsImxkIiwicmQiLCJta19jb21tYV9zZXFfaW5uZXIiLCJta19MaXN0TGl0IiwibWtfVHVwbGUiLCJlbHRzIiwibWtfQXAiLCJta19QcmoiLCJ0YXJnIiwicHJlY2VkZW5jZSIsImRwIiwicGFyZW50aGVzaXplIiwiZHAkMCIsImkkMCIsInUkMCIsInJlYXNvbiIsImkkMSIsInUkMSIsImkkMiIsInUkMiIsImkkMyIsInUkMyIsImRfbGlzdCIsIm9sIiwiZHAyIiwiZHAxIiwicHJlY2VkZW5jZV9vcCIsImRvYzIkMCIsImRvYzEkMCIsImRzIiwiZHAyJDAiLCJkcDEkMCIsInByZWNlZGVuY2Vfb3AkMCIsIm1rX2RlbGltIiwicGFyZW50aGVzaXplJDAiLCJ0eSQwIiwidHkyIiwidHkxIiwiZDIiLCJkMSIsInN1bV9tYXAiLCJjZW50ZXIiLCJoZWFkIiwiY2VudGVyJDAiLCJ0eSQxIiwiZG9jJDEiLCJkb2MkMCIsInByb21vdGVfYW5ub3QiLCJwcmVjZWRlbmNlX2Jpbl9ib29sX29wIiwicHJlY2VkZW5jZV9iaW5faW50X29wIiwiYmlvIiwicHJlY2VkZW5jZV9iaW5fZmxvYXRfb3AiLCJiZm8iLCJwcmVjZWRlbmNlX2Jpbl9zdHJpbmdfb3AiLCJic28iLCJzaG93X2Nhc3RzIiwicHJlY2VkZW5jZSQwIiwib3AkMCIsIm9wJDEiLCJvcCQyIiwibWtfYmluX2Jvb2xfb3AiLCJta19iaW5faW50X29wIiwibWtfYmluX2Zsb2F0X29wIiwibWtfYmluX3N0cmluZ19vcCIsInNlbGVjdGVkX2hvbGVfaW5zdGFuY2UiLCJwcmV2aW91c19zdGVwIiwiaGlkZGVuX3N0ZXBzIiwiY2hvc2VuX3N0ZXAiLCJuZXh0X3N0ZXBzIiwiZW52IiwicmVjZW50X3N1YnN0IiwicmVjdXJzaXZlX2NhbGxzIiwicHMiLCJwJDAiLCJyZWNlbnRfc3Vic3QkMCIsImdvJDAiLCJjdHgiLCJlbnYkMCIsImVuZm9yY2VfaW5saW5lJDAiLCJzdGgkMSIsInN0aCQyIiwicmVjdXJzaXZlX2NhbGxzJDAiLCJnb19jYXNlIiwiZHNjcnV0IiwiZHJzIiwiY29uc2lzdGVudCIsInNjcnV0X2RvYyIsInJ1bGVfaWR4IiwiZGNsYXVzZSIsImhpZGRlbl9jbGF1c2UiLCJjbGF1c2VfZG9jIiwiZ29fZm9ybWF0dGFibGUiLCJta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzIiwibWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMiLCJpJDQiLCJ1JDQiLCJpJDUiLCJ1JDUiLCJkJDEiLCJkJDIiLCJhY3QiLCJrZXl3b3JkIiwiZmx0X2RvYyIsImFjdCQwIiwia2V5d29yZCQwIiwiZCQzIiwiZGJvZHkiLCJkZGVmIiwiYmluZGluZ3MiLCJkZWZfZG9jIiwiZGJvZHkkMCIsImRvY19ib2R5IiwiZCQ0IiwicyQwIiwiZCQ1IiwiZW52JDEiLCJiaW5kaW5ncyQxIiwiYm9keV9kb2MkMCIsImRib2R5JDEiLCJiaW5kaW5ncyQwIiwiYm9keV9kb2MiLCJkMiQwIiwiZDEkMCIsImRvYzEkNiIsImQkNiIsImlkZW50IiwiZCQ3IiwiZiQwIiwicyQxIiwiZDIkMSIsImQxJDEiLCJkb2MyJDEiLCJkMiQyIiwiZDEkMiIsImRvYzIkMiIsImRvYzEkMSIsImQyJDMiLCJkMSQzIiwiZG9jMiQzIiwiZG9jMSQyIiwiZDIkNCIsImQxJDQiLCJkb2MyJDQiLCJkb2MxJDMiLCJkMiQ1IiwiZDEkNSIsImRvYzIkNSIsImRvYzEkNCIsImQyJDYiLCJkMSQ2IiwiZG9jMiQ2IiwiZG9jMSQ1IiwiZCQ4IiwibmFtZSQxIiwiZHJzJDAiLCJkc2NydXQkMCIsImQkOSIsInR5JDIiLCJkb2MkMiIsImRvYyQzIiwidHkzIiwidHkyJDAiLCJkJDExIiwiZF9kb2MiLCJjYXN0X2RlY29yYXRpb24iLCJkJDEyIiwiZF9kb2MkMCIsImRlY29yYXRpb24iLCJkMiQ3IiwiZDEkNyIsImNfZG9jIiwiZDFfZG9jIiwiZDJfZG9jIiwic3RlcHBhYmxlIiwic3RlcHBlZCIsInN0ZXAiLCJzdWJzdGl0dXRpb24iLCJmdWxsIiwid2l0aF9jbHMiLCJ2aWV3X29mX2xheW91dCIsImluamVjdCIsInJlc3VsdF9rZXkiLCJhbm5vdCIsInR4dCIsIm9iaiIsImRzMiIsInR4dDIiLCJkczEiLCJ0eHQxIiwiZGVjb3JhdGlvbnMiLCJ0ZXh0Iiwic3RoJDMiLCJ0ZXN0X2luc3RhbmNlX3ZpZXciLCJqdW1wX3RvX3Rlc3QiLCJlZmZlY3QxIiwiZWZmZWN0MiIsInJlc3VsdDEiLCJ0ZXN0X3JlcG9ydF92aWV3IiwiZGVzY3JpcHRpb24iLCJpbnN0YW5jZV9yZXBvcnRzIiwidGVzdF9yZXBvcnRzX3ZpZXciLCJ0ZXN0X3Jlc3VsdHMiLCJ0ZXN0X3Jlc3VsdHMkMCIsInRlc3RfYmFyX3NlZ21lbnQiLCJyZXBvcnRzIiwidGVzdF9iYXIiLCJwZXJjZW50X3ZpZXciLCJwZXJjZW50YWdlIiwidGVzdF9wZXJjZW50YWdlIiwidGVzdF90ZXh0IiwidGVzdF9zdW1tYXJ5Iiwidmlld19vZl9tYWluX3RpdGxlX2JhciIsInRpdGxlX3RleHQiLCJpbnNwZWN0b3JfdmlldyIsInRlc3RfbWFwIiwiaW5zdGFuY2VzIiwidGVzdF90cnVlX2V4IiwidGVzdF9mYWxzZV9leCIsImV4cF9ib2R5IiwidGVzdF9leHBfY29sb3JpbmdfaWRzIiwiYm9keV9pZCIsInRlc3RfZXhwIiwidGVzdHMiLCJleHBsYW5hdGlvbiQzIiwiaW50X3R5cCIsImZsb2F0X3R5cCIsImJvb2xfdHlwIiwic3RyX3R5cCIsInZhcl90eXAiLCJmbG9hdCQwIiwiYm9vbCIsInZhciQwIiwiZXhwbGFuYXRpb24kNiIsImV4cGxhbmF0aW9uJDUiLCJleHBsYW5hdGlvbiQ0Iiwid2lsZF9wYXQiLCJpbnRsaXRfcGF0IiwiZmxvYXRsaXRfcGF0IiwiYm9vbGxpdF9wYXQiLCJzdHJsaXRfcGF0IiwidHJpdl9wYXQiLCJ2YXJfcGF0IiwiY3RyX3BhdCIsImludGxpdCIsImZsb2F0bGl0IiwiYm9vbGxpdCIsInN0cmxpdCIsInRyaXZfZXhwIiwidHJpdl9leHBzIiwiYm9vbF9leHAiLCJib29sX2V4cHMiLCJpbnRfZXhwIiwiaW50X2V4cHMiLCJmbG9hdF9leHAiLCJmbG9hdF9leHBzIiwic3RyaW5nX2V4cCIsInN0cmluZ19leHBzIiwidmFyX2V4cCIsInZhcl9leHBzIiwiY3RyX2V4cCIsImRpdmlkZXIiLCJsYWJlbGxlZF9zdW1fdHlwIiwic3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWYiLCJzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGUiLCJsYWJlbGxlZF9zdW1fdHlwcyIsInN1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmcyIsInN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZSQwIiwiaWNvbl9zaXplIiwic2ltcGxlX2ljb24iLCJ0cmFuc2Zvcm0iLCJnZWFyIiwic3RhciIsImJvbWIiLCJ1bmRvIiwicmVkbyIsImNpcmNsZV9xdWVzdGlvbiIsImdpdGh1YiIsImJhY2siLCJmb3J3YXJkIiwiZXllIiwidHJhc2giLCJoYXplbG51dCIsIm1hZ25pZnkiLCJjaGVzdCIsInNwcm91dCIsInNldHRpbmdzX21vZGFsIiwic2V0dGluZyIsImN1cnJlbnQiLCJzdGVwcGVyX3ZpZXciLCJzdGVwcGVyIiwiYnV0dG9uX2JhY2siLCJwcmV2aW91cyIsImhpZGRlbiIsImhpZGVfc3RlcHBlciIsInNob3dfaGlzdG9yeSIsImV2YWxfc2V0dGluZ3MiLCJzdGVwX3dpdGhfcHJldmlvdXMiLCJub2Rlc19wcmV2aW91cyIsImltZyIsInNsaWRlIiwiaGVhZGVyIiwiZW0iLCJnZXRfY29udGVudCIsInNlcV9iYXNpY19leHBfZXgiLCJzZXFfdGVzdF9leHBfZXgiLCJzZXFfZXhwX2NvbG9yaW5nX2lkcyIsInNlcV9leHAiLCJzZXFzIiwiZW1wdHkiLCJmaWxsZWRfc2xpZGVzIiwibnVtX2VtcHR5IiwiaW5pdF9kYXRhIiwic3ZnIiwicmFpc2VkX3NoYWRvd19keCIsInJhaXNlZF9zaGFkb3dfZHkiLCJmemVybyIsInRpcF93aWR0aCIsImNvbmNhdmVfYWRqIiwiY29udmV4X2FkaiIsInNoYWRvd19hZGoiLCJjYXJldF9hZGp1c3QiLCJzaWRlIiwiY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyIsInNob3J0X3RpcF9oZWlnaHQiLCJzdHJldGNoX2R4IiwiZXh0cmFfdGFpbCIsImphZ2dlZF9lZGdlX2giLCJqYWdnZWRfZWRnZV93Iiwic2hvcnRfdGlwX3dpZHRoIiwicG9zX3N0ciIsImZ1ZGdlIiwiY29kZV9zdmdfc2l6ZWQiLCJsYXN0IiwiYmFzZV9jbHMiLCJwYXRoX2NscyIsInRvcCIsImxlZnQiLCJzdHlsZSIsImxlZnRfZnVkZ2UiLCJ0b3BfZnVkZ2UiLCJ3aWR0aF9mdWRnZSIsImhlaWdodF9mdWRnZSIsInN0aCQ0IiwiYWJzX3Bvc2l0aW9uIiwiY29kZV9zdmciLCJzdGgkNSIsInN0aCQ2Iiwic3RoJDciLCJhYnNfcG9zIiwicmFpc2VkX3NoYWRvd19maWx0ZXIiLCJzb3J0Iiwic2hhZG93X2ZpbHRlciIsImZpbHRlcnMiLCJwcF90aXBfc2hhcGUiLCJzaG93X3RpcF9zaGFwZSIsInRpcF9zaGFwZV9vZl9zZXhwIiwic2V4cF9vZl90aXBfc2hhcGUiLCJ0aXBfc2hhcGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3RpcF9zaGFwZSIsInRyX2JsIiwid2l0aF9jaGlsZF9ib3JkZXIiLCJzdHJldGNoX3giLCJzdHJldGNoX3kiLCJqdW5jdGlvbiQwIiwiZGlhZyIsImp1bmN0aW9uJDEiLCJkaWFnJDAiLCJibF90ciIsImhlbWkiLCJ0bF9iciIsImp1bmN0aW9uIiwiYnJfdGwiLCJsZWZ0X3RpcF9wYXRoIiwic194Iiwic195IiwiamFnIiwiYm90dG9tX2hhbGYiLCJ0b3BfaGFsZiIsInJpZ2h0X3RpcF9wYXRoIiwidGlwX2wiLCJ0aXBfciIsIm1vbGQiLCJtZWFzdXJlbWVudCIsImNfY2xzIiwidGlwX3IkMCIsInRpcF9sJDAiLCJpc19jb21wbGV0ZSIsImlzX2NvbnNpc3RlbnQiLCJpc19pbl9idWZmZXIiLCJwbHVyYWxpdHkiLCJsYWJlbCQwIiwib2ZfZGVsaW0iLCJvZl9kZWxpbSQwIiwib2ZfZ3JvdXQiLCJzZWNvbmRhcnlfaWNvbnMiLCJzdHIkMCIsIm9mX3NlY29uZGFyeSIsIm9mX3NlZ21lbnQiLCJidWZmZXJfaWRzIiwibm9fc29ydHMiLCJzZWciLCJleHBlY3RlZF9zb3J0cyIsIm9mX3BpZWNlIiwiZXhwZWN0ZWRfc29ydCIsIm9mX3RpbGUiLCJjaGlsZHJlbl9hbmRfc29ydHMiLCJob2xlcyIsInNpbXBsZV92aWV3IiwiaG9sZXMkMCIsIm9mX2hvbGUiLCJiYWNrcGFja19zZWxfdmlldyIsInhfb2ZmIiwieV9vZmYiLCJvcGFjaXR5IiwiaGVpZ2h0X2hlYWQiLCJjYW5fcHV0X2Rvd24iLCJzaWRlJDAiLCJjYXJldF9hZGoiLCJjYXJldF9hZGpfcHgiLCJtYXhfZGlzcCIsInZlcnRpY2FsX2Rpc3AiLCJzZWxlY3Rpb25zX3N0eWxlIiwic2NhbGVfZm4iLCJpbml0X29wYWNpdHkiLCJpbml0X2lkeCIsImR5X2ZuIiwiYmFzZV9oZWlnaHQiLCJpbml0X3lfb2Zmc2V0IiwidnMiLCJ5X29mZnNldCIsInhfb2Zmc2V0IiwibmV3X3lfb2Zmc2V0IiwibmV3X2lkeCIsIm5ld19vcGFjaXR5Iiwic2VsZWN0aW9ucyIsInNlbGVjdGlvbnNfdmlldyIsImhkJDAiLCJqb2luZXJfc3R5bGUiLCJqb2luZXIiLCJnZW5pZV92aWV3IiwiZ2VuaWVfc3R5bGUiLCJjYXJldF9iZW5kIiwiY2FyZXRfd2lkdGhfc3RyYWlnaHQiLCJjYXJldF93aWR0aF9iZW50IiwiY2FyZXRfcGF0aCIsImNhcmV0X2JlbmRfcGFyYW0iLCJjYXJldF93aWR0aF9wYXJhbSIsImxfYWRqIiwiY2FyZXRfcG9zaXRpb25fcmFkaWkiLCJyX3kiLCJyX3giLCJjaGlsZF9jb2xvcnMiLCJnZXRfY29sb3IiLCJtYXBwaW5nIiwiY29sb3IiLCJjb2xvciQwIiwibWFwcGluZyQwIiwidG9fbGlzdCIsImJhc2VfY2xzJDAiLCJydW4iLCJhZGoiLCJsX2hvb2siLCJyX2hvb2siLCJzaW1wbGVfc2hhcmRfcGF0aCIsInNpbXBsZV9zaGFyZCIsInNoYXBlcyIsInNpbXBsZV9zaGFyZF9zZWxlY3RlZCIsInNpbXBsZV9zaGFyZF9pbmRpY2F0ZWQiLCJoYXNfY2FyZXQiLCJzaW1wbGVfc2hhcmRzX2luZGljYXRlZCIsImNhcmV0Iiwic2hhcmRzIiwic2hhZG93ZnVkZ2UiLCJzaGFyZHNfb2ZfdGlsZXMiLCJ0aWxlcyIsIm0yIiwibTEiLCJiaV9saW5lcyIsInNoYXJkX3Jvd3MiLCJpbnRyYV9saW5lcyIsInJvd19zaGFyZHMiLCJyb3dfc2hhcmRzJDAiLCJvcmlnaW4kMCIsInZfZGVsdGEiLCJpbnRlcl9saW5lcyIsImNsc3MiLCJ1bmlfbGluZXMiLCJtX2ZpcnN0IiwibV9sYXN0X29mX2ZpcnN0IiwibF9saW5lIiwibWF4X2NvbCIsIm1fbGFzdCIsImhvb2siLCJyX2xpbmUiLCJtaW5fY29sIiwic2hhcmRfcm93cyQwIiwibV9mbGFzdCIsImluZGljYXRlZCIsInJhbmdlIiwidGlsZSIsInNlbF9zaGFyZF9zdmciLCJzdGFydF9zaGFwZSIsInNlbF9vZl9waWVjZSIsInNoYXJkX2RhdGEiLCJzZWxfb2ZfdGlsZSIsInciLCJzdGFydF9zaGFwZSQwIiwidGlsZV9zaGFyZHMiLCJzZWxfb2Zfc2VnbWVudCIsImNoaWxkcmVuX3NoYXJkcyIsInNlbGVjdGVkX3BpZWNlcyIsInIyIiwibDEiLCJpbmRpY2F0ZWRfcGllY2VfZGVjbyIsIm5pYiIsInBfciIsInBfbCIsInJhbmdlJDAiLCJ0YXJnZXRzIiwiY29udGFpbmVyX3NoYXJkcyIsImJwIiwic2licyIsInN1ZiIsInNpYnMkMCIsInByb2ZpbGUiLCJyb290X3RhcmdldHMiLCJ0YXJnZXRzJDAiLCJ0ZXJtX2RlY29yYXRpb24iLCJkZWNvIiwicl9lZGdlIiwibF9lZGdlIiwidGVybV9oaWdobGlnaHQiLCJjb2xvcl9oaWdobGlnaHRzIiwiZXJyX2hvbGVzIiwic2VsX3NlZyIsImdldF9nb2FsIiwidGFyZ2V0X2lkIiwiZ29hbF94IiwiZ29hbF95IiwibW91c2Vkb3duX292ZXJsYXkiLCJnb2FsIiwibW91c2Vkb3duX2hhbmRsZXIiLCJtb3VzZWRvd25fdXBkYXRlcyIsImV2ZW50cyIsImdvYWwkMCIsIm5hcnJhdGl2ZV9jZWxsIiwic2ltcGxlX2NlbGxfaXRlbSIsImNhcHRpb24iLCJib2xkZWQiLCJzaW1wbGVfY2VsbF92aWV3IiwiaXRlbXMiLCJ0ZXN0X3N0YXR1c19pY29uX3ZpZXciLCJpbnN0cyIsIm1zIiwidGVzdF9yZXN1bHRfbGF5ZXIiLCJzaG93X2JhY2twYWNrX3RhcmdldHMiLCJoaWdobGlnaHRzIiwidGVybXMiLCJzZWdtZW50IiwidGVybV9yYW5nZXMiLCJkZWNvcyIsImRlY29zJDAiLCJjb2xvck1hcCIsImVycm9yX21zZyIsImVyciQwIiwic3RhdHVzX29mIiwibGl2ZV9ldmFsIiwibG9ja2VkIiwicmVzIiwiZGhleHAiLCJyZXMkMCIsImRoY29kZV92aWV3IiwiZXhuX3ZpZXciLCJmb290ZXIiLCJyZXN1bHQkMCIsImVkaXRvcl92aWV3IiwibW91c2Vkb3duIiwib3ZlcmxheWVyIiwiY29kZV90ZXh0X3ZpZXciLCJkZWNvX3ZpZXciLCJjb2RlX3ZpZXciLCJtb3VzZWRvd24kMCIsIm1vdXNlZG93bl9vdmVybGF5JDAiLCJvbl9tb3VzZWRvd24iLCJyZXBvcnRfZm9vdGVyX3ZpZXciLCJ0ZXN0X3JlcG9ydF9mb290ZXJfdmlldyIsInBhbmVsIiwiY2xhc3NlcyIsInRpdGxlX2NlbGwiLCJ0aXRsZSIsImxvY2tlZF9ub19zdGF0aWNzIiwiZXhwYW5kZXJfZGVjbyIsImVsYWIiLCJmb290ZXIkMCIsImV4cG9ydF9idXR0b24iLCJqc29uX2RhdGEiLCJpbXBvcnRfYnV0dG9uIiwicmVzZXRfYnV0dG9uIiwiY29uZmlybWVkIiwiZXJyb3Jfc291cmNlXzAwNiIsInBwX3RleHRvYmplY3QiLCJzaG93X3RleHRvYmplY3QiLCJ0ZXh0b2JqZWN0X29mX3NleHAiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXhwX29mX3RleHRvYmplY3QiLCJ0ZXh0b2JqZWN0X29mX3lvanNvbiIsInlvanNvbl9vZl90ZXh0b2JqZWN0IiwiZmllbGRfc2V4cHNfMDMxIiwicmVzdWx0XzAzMiIsInRfb2JqZWN0XzAzNCIsImR1cGxpY2F0ZXNfMDM2IiwiZXh0cmFfMDM3Iiwic2V4cF8wMzAkMCIsImZpZWxkX3NleHBzXzA0MCIsImZpZWxkX25hbWVfMDM4IiwiZmllbGRfc2V4cF8wMzkkMiIsImZpZWxkX3NleHBfMDM5IiwiZmllbGRfc2V4cF8wMzkkMCIsImZpZWxkX3NleHBfMDM5JDEiLCJ0X29iamVjdF8wMzUiLCJyZXN1bHRfMDMzIiwidF9vYmplY3RfMDUwIiwicmVzdWx0XzA0OCIsInJlc3VsdF9maWVsZCIsInRfb2JqZWN0X2ZpZWxkIiwidF9vYmplY3RfdmFsdWUiLCJyZXN1bHRfdmFsdWUiLCJ2X3Rfb2JqZWN0Iiwidl9yZXN1bHQiLCJ0X29iamVjdCIsImV4ZWN1dGUiLCJwbGFuIiwiZXhlY3V0ZV9jb21tYW5kIiwiY29tbWFuZCIsIm9jaSIsImVycm9yX3NvdXJjZV8wMTAiLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAzNyIsImVycm9yX3NvdXJjZV8wNjYiLCJwcF9jb3VudCIsInNob3dfY291bnQiLCJjb3VudF9vZl9zZXhwIiwic2V4cF9vZl9jb3VudCIsImNvdW50X29mX3lvanNvbiIsInlvanNvbl9vZl9jb3VudCIsInBwX3RleHRfb2JqZWN0X2tleSIsInNob3dfdGV4dF9vYmplY3Rfa2V5IiwidGV4dF9vYmplY3Rfa2V5X29mX3NleHAiLCJzZXhwXzAwNyIsInNleHBfb2ZfdGV4dF9vYmplY3Rfa2V5IiwidGV4dF9vYmplY3Rfa2V5X29mX3lvanNvbiIsInlvanNvbl9vZl90ZXh0X29iamVjdF9rZXkiLCJwcF9hY3Rpb25fa2V5Iiwic2hvd19hY3Rpb25fa2V5IiwiYWN0aW9uX2tleV9vZl9zZXhwIiwic2V4cF8wMTEiLCJzZXhwX29mX2FjdGlvbl9rZXkiLCJhY3Rpb25fa2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9hY3Rpb25fa2V5IiwicHBfcXVlcnlfZGVjb3JhdGlvbiIsInNob3dfcXVlcnlfZGVjb3JhdGlvbiIsInF1ZXJ5X2RlY29yYXRpb25fb2Zfc2V4cCIsInNleHBfMDE1Iiwic2V4cF9vZl9xdWVyeV9kZWNvcmF0aW9uIiwicXVlcnlfZGVjb3JhdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcXVlcnlfZGVjb3JhdGlvbiIsInBwX3F1ZXJ5X2tleSIsInNob3dfcXVlcnlfa2V5IiwicXVlcnlfa2V5X29mX3NleHAiLCJzZXhwXzAxOSIsInNleHBfb2ZfcXVlcnlfa2V5IiwicXVlcnlfa2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9xdWVyeV9rZXkiLCJwcF9xdWVyeV9vcCIsInNob3dfcXVlcnlfb3AiLCJxdWVyeV9vcF9vZl9zZXhwIiwic2V4cF8wMjUiLCJhcmcxXzAyMiIsInJlczFfMDI0Iiwic2V4cF9vZl9xdWVyeV9vcCIsInF1ZXJ5X29wX29mX3lvanNvbiIsInlvanNvbl9vZl9xdWVyeV9vcCIsInBwX3RleHRfb2JqZWN0Iiwic2hvd190ZXh0X29iamVjdCIsInRleHRfb2JqZWN0X29mX3NleHAiLCJzZXhwXzA0MiIsInRhZ18wNDMiLCJzZXhwX2FyZ3NfMDQ5Iiwic2V4cF9hcmdzXzA0NCIsInJlczBfMDU0Iiwic2V4cF9vZl90ZXh0X29iamVjdCIsInJlczFfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwidGV4dF9vYmplY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3RleHRfb2JqZWN0IiwiYXJnMV8wNjgiLCJyZXMwXzA2OSIsInJlczFfMDcwIiwicHBfY29tbWFuZCIsInNob3dfY29tbWFuZCIsImNvbW1hbmRfb2Zfc2V4cCIsInNleHBfMDc1IiwidGFnXzA3NiIsInNleHBfYXJnc18wODIiLCJyZXMwXzA4NCIsInNleHBfYXJnc18wNzciLCJhcmcwXzA3OCIsInJlczBfMDc5Iiwic2V4cF9vZl9jb21tYW5kIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsInJlczBfMDg4IiwiY29tbWFuZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY29tbWFuZCIsInNpbmdsZSIsImFyZ19pZCIsImZuX2lkIiwiZV9hcmciLCJlX2ZuIiwiZVJSIiwibWVuaGlyX2dvdG9fdGV4dF9vYmplY3QkMCIsIm1lbmhpcl9zdGFjayIsIm1lbmhpcl9sZXhidWYiLCJtZW5oaXJfbGV4ZXIiLCJfMSIsIm1lbmhpcl9zIiwidG9rIiwibWVuaGlyX3N0YWNrJDIiLCJ2XzAkMCIsIm1lbmhpcl9ydW5fMDUiLCJ2XzEkMCIsIm1lbmhpcl9ydW5fMDYiLCJ2XzAiLCJtZW5oaXJfc3RhY2skMCIsInZfMSIsIm1lbmhpcl9zdGFjayQxIiwidl8yIiwidG9rJDAiLCJfMSQwIiwibWVuaGlyX2dvdG9fcXVlcnlfb3AiLCJfMiIsIm1lbmhpcl9zJDAiLCJtZW5oaXJfZ290b190ZXh0X29iamVjdCIsIm1lbmhpcl9ydW5fMDIiLCJtZW5oaXJfcyQxIiwiaW5wdXRGaWVsZF9pZCIsIm91dHB1dEFyZWFfaWQiLCJpbnB1dF92aWV3IiwiaW5wdXQiLCJvdXRwdXRfdmlldyIsImZ1bmFwcF9leHBfZXgiLCJjb25hcHBfZXhwX2V4IiwiZXhwX2Z1biIsImV4cF9hcmciLCJmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsInhfaWQiLCJmdW5hcHBfZXhwIiwiZXhwX2NvbiIsImV4cF9hcmckMCIsImNvbmFwcF9leHBfY29sb3JpbmdfaWRzIiwiY29uYXBwX2V4cCIsImZ1bmFwcyIsImNvbmFwcyIsInBhdF9jb24iLCJwYXRfYXJnIiwiYXBfcGF0X2NvbG9yaW5nX2lkcyIsImNvbl9pZCIsImFwX3BhdCIsImFwIiwidHlwX2FyZyIsInR5cF9vdXQiLCJhcnJvd190eXBfY29sb3JpbmdfaWRzIiwicmVzdWx0X2lkIiwiYXJyb3dfdHlwIiwidHlwX2FyZzEiLCJ0eXBfYXJnMiIsInR5cF9vdXQkMCIsImFycm93M190eXBfY29sb3JpbmdfaWRzIiwiYXJnMV9pZCIsImFyZzJfaWQiLCJhcnJvdzIiLCJhcnJvdzNfdHlwIiwiYXJyb3czIiwiY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlIiwiY2FzZV9leGFtcGxlX3dpbGRfdHVwbGUiLCJjYXNlX2V4YW1wbGVfaW50IiwiY2FzZV9leGFtcGxlX2Jvb2wiLCJleHBfc2NydXQiLCJjYXNlX2V4cF9jb2xvcmluZ19pZHMiLCJzY3J1dF9pZCIsImNhc2UkMCIsImNhc2VfZXhwIiwiY2FzZSQxIiwianVtcF90byIsImNvbnRleHRfZW50cnlfdmlldyIsImRpdl9uYW1lIiwiY3R4X3ZpZXciLCJjdHhfc29ydHNfdmlldyIsImVycmMiLCJva2MiLCJkaXZfZXJyIiwiZGl2X29rIiwiY29kZV9lcnIiLCJleHBsYWluX3RoaXNfdG9nZ2xlIiwic2hvd19leHBsYWluX3RoaXMiLCJ0b2dnbGVfZXhwbGFpbl90aGlzIiwiY2xzX3ZpZXciLCJjdHhfdG9nZ2xlIiwiY29udGV4dF9pbnNwZWN0b3IiLCJ0ZXJtX3ZpZXciLCJlbGVtZW50c19ub3VuIiwiY29tbW9uX2Vycl92aWV3Iiwic3luIiwiYW5hIiwidHlzIiwidG9rZW4iLCJjb21tb25fb2tfdmlldyIsIm9rIiwiYW5hJDIiLCJhbmEkMyIsImFuYSQxIiwic3luJDAiLCJzeW4kMSIsImFuYSQwIiwidHlwX29rX3ZpZXciLCJ0eV9sb29rdXAiLCJ0eXBfZXJyX3ZpZXciLCJleHBfdmlldyIsInBhdF92aWV3IiwidHlwX3ZpZXciLCJ0cGF0X3ZpZXciLCJzZWNvbmRhcnlfdmlldyIsInZpZXdfb2ZfaW5mbyIsIndyYXBwZXIiLCJzdGF0dXNfdmlldyIsInN0YXR1cyQwIiwiY2xzJDAiLCJzdGF0dXMkMSIsImNscyQxIiwic3RhdHVzJDIiLCJjbHMkMiIsImVycmMkMCIsImN1cnNvcl9pbmZvIiwiYmFyX3ZpZXciLCJvcHRpb25fdmlldyIsIm1vZGVfbWVudSIsInNsaWRlX3NlbGVjdCIsImN1cl9zbGlkZSIsIm51bV9zbGlkZXMiLCJuZXh0X2VkIiwicHJldl9lZCIsInNjcmF0Y2hfdmlldyIsImRvY3VtZW50YXRpb25fdmlldyIsImVkaXRvcl9uYW1lcyIsInByZXYkMCIsIm5leHQkMCIsImluc3RydWN0b3JfdG9nZ2xlIiwiZXhlcmNpc2VzX3ZpZXciLCJjdXJfc2xpZGUkMCIsInNjb3JlX3ZpZXciLCJlYXJuZWQiLCJwZXJjZW50YWdlX3ZpZXciLCJ0ZXh0dWFsX3N1bW1hcnkiLCJyZXBvcnQiLCJ0b3RhbF90ZXN0cyIsInJlcXVpcmVkIiwibnVtX3Rlc3RzX21lc3NhZ2UiLCJtYXhfcG9pbnRzIiwic3VtbWFyeV9tZXNzYWdlIiwic2NvcmUiLCJ0b3RhbCIsImZvdW5kIiwiYmFyIiwic3VtbWFyeSIsInN0YXR1c19jbGFzcyIsImluZGl2aWR1YWxfcmVwb3J0IiwiaGludCIsImluZGl2aWR1YWxfcmVwb3J0cyIsImNvdmVyYWdlX3Jlc3VsdHMiLCJpbmRpdmlkdWFsX3JlcG9ydCQwIiwicmVzdWx0X3N0cmluZyIsImluZGl2aWR1YWxfcmVwb3J0cyQwIiwiaGludGVkX3Jlc3VsdHMiLCJ2aWV3JDEiLCJzeW50YXhfcmVwb3J0IiwidGV4dHVhbF9zdW1tYXJ5JDAiLCJpbmRpdmlkdWFsX3JlcG9ydCQxIiwiaW5kaXZpZHVhbF9yZXBvcnRzJDEiLCJ2aWV3JDIiLCJ2aWV3X292ZXJhbGxfc2NvcmUiLCJjb250ZW50X3R5cGUkMSIsImNvbnRlbnRfdHlwZSQwIiwicmVuZGVyX2NlbGxzIiwidmlzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJoaWRkZW5fYnVncyIsImluc3RydWN0b3IiLCJwcmVsdWRlIiwidXNlcl90ZXN0cyIsInVzZXJfaW1wbCIsInRlc3RfdmFsaWRhdGlvbiIsImdyYWRpbmdfcmVwb3J0Iiwic3ViY2FwdGlvbiIsImRpIiwidGhpc19wb3MiLCJ0aXRsZV92aWV3IiwicHJvbXB0X3ZpZXciLCJwcmVsdWRlX3ZpZXciLCJjb3JyZWN0X2ltcGxfdmlldyIsImNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCIsInByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgiLCJwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4JDAiLCJjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgkMCIsInNwZWNpZmljX2N0eCIsInNwZWNpZmljX2N0eCQwIiwiZXhwX2N0eF92aWV3IiwiY29ycmVjdF9pbXBsX2N0eF92aWV3IiwieW91cl90ZXN0c192aWV3IiwiaW1wbCIsIndyb25nX2ltcGxfdmlld3MiLCJtdXRhdGlvbl90ZXN0aW5nX3ZpZXciLCJ5b3VyX2ltcGxfdmlldyIsInN5bnRheF9ncmFkaW5nX3ZpZXciLCJpbXBsX3ZhbGlkYXRpb25fdmlldyIsImhpZGRlbl90ZXN0c192aWV3IiwiaW1wbF9ncmFkaW5nX3ZpZXciLCJpbnN0cnVjdG9yX2V4cG9ydCIsImluc3RydWN0b3JfdHJhbnNpdGlvbmFyeV9leHBvciIsImluc3RydWN0b3JfZ3JhZGluZ19leHBvcnQiLCJkb3dubG9hZF9lZGl0b3Jfc3RhdGUiLCJleHBvcnRfc3VibWlzc2lvbiIsImltcG9ydF9zdWJtaXNzaW9uIiwiZmlsdGVyX3BhdXNlIiwicF9pZCIsImVfYm9keSIsImZpbHRlcl9ldmFsIiwiZmlsdGVyX2hpZGUiLCJmaWx0ZXJfZGVidWciLCJ1bnF1b3RlIiwic2VsX2lkIiwic2VsIiwiZXhwbGFuYXRpb24kNyIsImV4cGxhbmF0aW9uJDgiLCJleHBsYW5hdGlvbiQ5IiwiZXhwbGFuYXRpb24kMTAiLCJleHBsYW5hdGlvbiQxMSIsImV4cGxhbmF0aW9uJDEyIiwiZXhwbGFuYXRpb24kMTMiLCJleHBsYW5hdGlvbiQxNCIsImV4cGxhbmF0aW9uJDE1IiwiZXhwbGFuYXRpb24kMTYiLCJiYXNpY19mdW5fZXgiLCJ3aWxkX2Z1bl9leCIsImludGxpdF9mdW5fZXgiLCJmbG9hdGxpdF9mdW5fZXgiLCJib29sbGl0X2Z1bl9leCIsInN0cmxpdF9mdW5fZXgiLCJ0cml2X2Z1bl9leCIsImxpc3RuaWxfZnVuX2V4IiwibGlzdGxpdF9mdW5fZXgiLCJjb25zX2hkX2Z1bl9leCIsImNvbnNfc25kX2Z1bl9leCIsInZhcl9pbmNyX2Z1bl9leCIsInZhcl9hbmRfZnVuX2V4IiwidHVwbGUyX2Z1bl9leCIsInR1cGxlM19mdW5fZXgiLCJjdHJfZnVuX2V4IiwiYXBfZnVuX2V4IiwicGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nIiwic2ZfcGF0X2lkIiwic2ZfYm9keV9pZCIsImZ1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMiLCJmdW5jdGlvbl9leHAiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cCIsInBhdCQxIiwiZXhwJDEiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cCIsImV4cCQyIiwiZnVuY3Rpb25fd2lsZF9leHBfY29sb3JpbmdfaWRzIiwicGF0JDIiLCJmdW5jdGlvbl93aWxkX2V4cCIsInBhdCQzIiwiZXhwJDMiLCJmdW5jdGlvbl9pbnRsaXRfZXhwX2NvbG9yaW5nX2kiLCJmdW5jdGlvbl9pbnRsaXRfZXhwIiwicGF0JDQiLCJleHAkNCIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZyIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cCIsInBhdCQ1IiwiZXhwJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ18iLCJmb3JtJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cCIsInBhdCQ2IiwiZXhwJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2kiLCJmb3JtJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwIiwicGF0JDciLCJleHAkNyIsImZ1bmN0aW9uX3RyaXZfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kNyIsImZ1bmN0aW9uX3RyaXZfZXhwIiwicGF0JDgiLCJleHAkOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwX2NvbG9yaW5nXyIsImZvcm0kOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwIiwicGF0JDkiLCJleHAkOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nXyIsImZvcm0kOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwIiwicGF0X2hkIiwicGF0X3RsIiwiZXhwJDEwIiwiZnVuY3Rpb25fY29uc19leHBfY29sb3JpbmdfaWRzIiwiaGRfaWQiLCJ0bF9pZCIsImNvbnMiLCJmb3JtJDEwIiwiZnVuY3Rpb25fY29uc19leHAiLCJwYXQkMTAiLCJleHAkMTEiLCJmdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTEiLCJmdW5jdGlvbl92YXJfZXhwIiwiZXhwJDEyIiwiZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkIiwiZm9ybSQxMiIsImZ1bmN0aW9uX3R1cGxlX2V4cCIsImV4cCQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaSIsInBhdDFfaWQiLCJwYXQyX2lkIiwiZm9ybSQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHAiLCJleHAkMTQiLCJmdW5jdGlvbl90dXBsZTNfZXhwX2NvbG9yaW5nX2kiLCJwYXQzX2lkIiwiZm9ybSQxNCIsImZ1bmN0aW9uX3R1cGxlM19leHAiLCJwYXQkMTEiLCJleHAkMTUiLCJmdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTUiLCJmdW5jdGlvbl9jdHJfZXhwIiwiZXhwJDE2IiwiZnVuY3Rpb25fYXBfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTYiLCJmdW5jdGlvbl9hcF9leHAiLCJmdW5jdGlvbnMiLCJmdW5jdGlvbnNfZW1wdHlfaG9sZSIsImZ1bmN0aW9uc19tdWx0aV9ob2xlIiwiZnVuY3Rpb25zX3dpbGQiLCJmdW5jdGlvbnNfaW50IiwiZnVuY3Rpb25zX2Zsb2F0IiwiZnVuY3Rpb25zX2Jvb2wiLCJmdW5jdGlvbnNfc3RyIiwiZnVuY3Rpb25zX3RyaXYiLCJmdW5jdGlvbnNfbGlzdG5pbCIsImZ1bmN0aW9uc19saXN0bGl0IiwiZnVuY3Rpb25zX2NvbnMiLCJmdW5jdGlvbnNfdmFyIiwiZnVuY3Rpb25zX3R1cGxlIiwiZnVuY3Rpb25zX3R1cGxlMiIsImZ1bmN0aW9uc190dXBsZTMiLCJmdW5jdGlvbnNfY3RyIiwiZnVuY3Rpb25zX2FwIiwiZW1wdHlfaG9sZV90ZW1wbGF0ZSIsIm11bHRpX2hvbGVfdGVtcGxhdGUiLCJlbXB0eV9ob2xlX2V4cCIsImVtcHR5X2hvbGVfZXhwcyIsIm11bHRpX2hvbGVfZXhwIiwibXVsdGlfaG9sZV9leHBzIiwiZW1wdHlfaG9sZV9wYXQiLCJtdWx0aV9ob2xlX3BhdCIsIm11bHRpX2hvbGUiLCJlbXB0eV9ob2xlX3RwYXQiLCJlbXB0eV9ob2xlX3RwYXRzIiwibXVsdGlfaG9sZV90cGF0IiwibXVsdGlfaG9sZV90cGF0cyIsImVtcHR5X2hvbGVfdHlwIiwibXVsdGlfaG9sZV90eXAiLCJpZl9iYXNpYzFfZXhwX2V4IiwiaWZfYmFzaWMyX2V4cF9leCIsImV4cF9jb25kIiwiZXhwX3RoZW4iLCJleHBfZWxzZSIsImlmX2V4cF9jb2xvcmluZ19pZHMiLCJjb25kX2lkIiwidGhlbl9pZCIsImVsc2VfaWQiLCJpZl9leHAiLCJpZnMiLCJsZXRfYmFzZV9leCIsImxldF93aWxkX2V4IiwibGV0X2ludF9leCIsImxldF9mbG9hdF9leCIsImxldF9ib29sX2V4IiwibGV0X3N0cl9leCIsImxldF90cml2X2V4IiwibGV0X2xpc3RsaXRfZXgiLCJsZXRfbGlzdG5pbF9leCIsImxldF9jb25zX2hkX2V4IiwibGV0X2NvbnNfc25kX2V4IiwibGV0X3Zhcl9leCIsImxldF90dXBsZTJfZXgiLCJsZXRfdHVwbGUzX2V4IiwibGV0X2N0cl9leCIsImxldF9hcF9leCIsInBhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nXyIsInNmX2RlZl9pZCIsInBhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMiLCJleHBfZGVmIiwibGV0X2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9iYXNlX2V4cCIsImV4cF9kZWYkMCIsImxldF9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZCIsImxldF9lbXB0eV9ob2xlX2V4cCIsImV4cF9kZWYkMSIsImxldF9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZCIsImxldF9tdWx0aV9ob2xlX2V4cCIsImV4cF9kZWYkMiIsImxldF93aWxkX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfd2lsZF9leHAiLCJleHBfZGVmJDMiLCJleHBfYm9keSQwIiwibGV0X2ludF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2ludF9leHAiLCJleHBfZGVmJDQiLCJleHBfYm9keSQxIiwibGV0X2Zsb2F0X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfZmxvYXRfZXhwIiwiZXhwX2RlZiQ1IiwiZXhwX2JvZHkkMiIsImxldF9ib29sX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfYm9vbF9leHAiLCJleHBfZGVmJDYiLCJleHBfYm9keSQzIiwibGV0X3N0cl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3N0cl9leHAiLCJleHBfZGVmJDciLCJleHBfYm9keSQ0IiwibGV0X3RyaXZfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90cml2X2V4cCIsImV4cF9kZWYkOCIsImxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfbGlzdGxpdF9leHAiLCJleHBfZGVmJDkiLCJleHBfYm9keSQ1IiwibGV0X2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9saXN0bmlsX2V4cCIsImV4cF9kZWYkMTAiLCJsZXRfY29uc19leHBfY29sb3JpbmdfaWRzIiwibGV0X2NvbnNfZXhwIiwiZXhwX2RlZiQxMSIsImV4cF9ib2R5JDYiLCJsZXRfdmFyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdmFyX2V4cCIsImV4cF9kZWYkMTIiLCJsZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90dXBsZV9leHAiLCJleHBfZGVmJDEzIiwibGV0X3R1cGxlMl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3R1cGxlMl9leHAiLCJleHBfZGVmJDE0IiwibGV0X3R1cGxlM19leHBfY29sb3JpbmdfaWRzIiwibGV0X3R1cGxlM19leHAiLCJleHBfZGVmJDE1IiwiZXhwX2JvZHkkNyIsImxldF9jdHJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9jdHJfZXhwIiwiZXhwX2RlZiQxNiIsImxldF9hcF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2FwX2V4cCIsImxldHNfZW1wdHlob2xlIiwibGV0c19tdXRsaWhvbGUiLCJsZXRzX3dpbGQiLCJsZXRzX2ludCIsImxldHNfZmxvYXQiLCJsZXRzX2Jvb2wiLCJsZXRzX3N0ciIsImxldHNfdHJpdiIsImxldHNfbGlzdGxpdCIsImxldHNfbGlzdG5pbCIsImxldHNfY29ucyIsImxldHNfdmFyIiwibGV0c190dXBsZSIsImxldHNfdHVwbGUyIiwibGV0c190dXBsZTMiLCJsZXRzX2N0ciIsImxldHNfYXAiLCJpbnRfbGlzdCIsInR1cGxlX2xpc3QiLCJsaXN0X2V4cCIsImNvbnMxX2V4IiwiY29uczJfZXgiLCJleHBfaGQiLCJleHBfdGwiLCJjb25zX2V4cF9jb2xvcmluZ19pZHMiLCJleHBfeHMiLCJleHBfeXMiLCJjb25jYXRfZXhwX2NvbG9yaW5nX2lkcyIsInhzX2lkIiwieXNfaWQiLCJsaXN0bGl0cyIsImxpc3Rjb25zIiwibGlzdGNvbmNhdHMiLCJsaXN0bGl0X3BhdCIsImxpc3RuaWxfcGF0IiwiY29uc19iYXNlX3BhdF9jb2xvcmluZ19pZHMiLCJjb25zX2Jhc2VfcGF0IiwicGF0X2ZzdCIsInBhdF9zbmQiLCJwYXRfdGwkMCIsImNvbnMyX3BhdF9jb2xvcmluZ19pZHMiLCJmc3RfaWQiLCJzbmRfaWQiLCJjb25zMl9wYXQiLCJsaXN0bGl0IiwibGlzdG5pbCIsImNvbnMyIiwidHlwX2VsZW0iLCJsaXN0X3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtX2lkIiwibGlzdF90eXAiLCJsaXN0IiwiZXhwbGFuYXRpb24kMTciLCJleHBsYW5hdGlvbiQxOCIsImV4cGxhbmF0aW9uJDE5IiwiZXhwbGFuYXRpb24kMjAiLCJleHBsYW5hdGlvbiQyMSIsImV4cGxhbmF0aW9uJDIyIiwiZXhwbGFuYXRpb24kMjMiLCJleHBsYW5hdGlvbiQyNCIsImV4cGxhbmF0aW9uJDI1IiwiZXhwbGFuYXRpb24kMjYiLCJpbnRfdW5hcnlfbWludXNfZXgiLCJpbnRfcGx1c19leCIsImludF9taW51c19leCIsImludF90aW1lc19leCIsImludF9wb3dlcl9leCIsImludF9kaXZpZGVfZXgiLCJpbnRfbHQxX2V4IiwiaW50X2x0Ml9leCIsImludF9sdGUxX2V4IiwiaW50X2x0ZTJfZXgiLCJpbnRfbHRlM19leCIsImludF9ndDFfZXgiLCJpbnRfZ3QyX2V4IiwiaW50X2d0ZTFfZXgiLCJpbnRfZ3RlMl9leCIsImludF9ndGUzX2V4IiwiaW50X2VxMV9leCIsImludF9lcTJfZXgiLCJmbG9hdF9wbHVzX2V4IiwiZmxvYXRfbWludXNfZXgiLCJmbG9hdF90aW1lc19leCIsImZsb2F0X3Bvd2VyX2V4IiwiZmxvYXRfZGl2aWRlX2V4IiwiZmxvYXRfbHQxX2V4IiwiZmxvYXRfbHQyX2V4IiwiZmxvYXRfbHRlMV9leCIsImZsb2F0X2x0ZTJfZXgiLCJmbG9hdF9sdGUzX2V4IiwiZmxvYXRfZ3QxX2V4IiwiZmxvYXRfZ3QyX2V4IiwiZmxvYXRfZ3RlMV9leCIsImZsb2F0X2d0ZTJfZXgiLCJmbG9hdF9ndGUzX2V4IiwiZmxvYXRfZXExX2V4IiwiZmxvYXRfZXEyX2V4IiwiYm9vbF9hbmQxX2V4IiwiYm9vbF9hbmQyX2V4IiwiYm9vbF9vcjFfZXgiLCJib29sX29yMl9leCIsInN0cl9lcTFfZXgiLCJzdHJfZXEyX2V4IiwidW5vcF9leHBfY29sb3JpbmdfaWRzIiwic2ZfZXhwX2lkIiwiZXhwX2lkIiwiYm9vbF91bmFyeV9ub3RfZXhwX2NvbG9yaW5nX2lkIiwiYm9vbF91bmFyeV9ub3RfZXhwIiwiaW50X3VuYXJ5X21pbnVzX2V4cF9jb2xvcmluZ19pIiwiaW50X3VuYXJ5X21pbnVzX2V4cCIsImJpbm9wX2V4cF9jb2xvcmluZ19pZHMiLCJzZl9sZWZ0X2lkIiwic2ZfcmlnaHRfaWQiLCJsZWZ0X2lkIiwicmlnaHRfaWQiLCJpbnRfcGx1c19leHBfY29sb3JpbmdfaWRzIiwiaW50X3BsdXNfZXhwIiwiaW50X21pbnVzX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbWludXNfZXhwIiwiZXhwMSQxIiwiZXhwMiQxIiwiaW50X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfdGltZXNfZXhwIiwiaW50X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfcG93ZXJfZXhwIiwiZXhwMSQyIiwiZXhwMiQyIiwiaW50X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2RpdmlkZV9leHAiLCJleHAxJDMiLCJleHAyJDMiLCJpbnRfbHRfZXhwX2NvbG9yaW5nX2lkcyIsImludF9sdF9leHAiLCJleHAxJDQiLCJleHAyJDQiLCJpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbHRlX2V4cCIsImV4cDEkNSIsImV4cDIkNSIsImludF9ndF9leHBfY29sb3JpbmdfaWRzIiwiaW50X2d0X2V4cCIsImV4cDEkNiIsImV4cDIkNiIsImludF9ndGVfZXhwX2NvbG9yaW5nX2lkcyIsImludF9ndGVfZXhwIiwiZXhwMSQ3IiwiZXhwMiQ3IiwiaW50X2VxX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZXFfZXhwIiwiZXhwMSQ4IiwiZXhwMiQ4IiwiaW50X25lcV9leHBfY29sb3JpbmdfaWRzIiwiaW50X25lcV9leHAiLCJleHAxJDkiLCJleHAyJDkiLCJmbG9hdF9wbHVzX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9wbHVzX2V4cCIsImV4cDEkMTAiLCJleHAyJDEwIiwiZmxvYXRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X21pbnVzX2V4cCIsImV4cDEkMTEiLCJleHAyJDExIiwiZmxvYXRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X3RpbWVzX2V4cCIsImZsb2F0X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9wb3dlcl9leHAiLCJleHAxJDEyIiwiZXhwMiQxMiIsImZsb2F0X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZGl2aWRlX2V4cCIsImV4cDEkMTMiLCJleHAyJDEzIiwiZmxvYXRfbHRfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2x0X2V4cCIsImV4cDEkMTQiLCJleHAyJDE0IiwiZmxvYXRfbHRlX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9sdGVfZXhwIiwiZXhwMSQxNSIsImV4cDIkMTUiLCJmbG9hdF9ndF9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZ3RfZXhwIiwiZXhwMSQxNiIsImV4cDIkMTYiLCJmbG9hdF9ndGVfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2d0ZV9leHAiLCJleHAxJDE3IiwiZXhwMiQxNyIsImZsb2F0X2VxX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9lcV9leHAiLCJleHAxJDE4IiwiZXhwMiQxOCIsImZsb2F0X25lcV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbmVxX2V4cCIsImV4cDEkMTkiLCJleHAyJDE5IiwiYm9vbF9hbmRfZXhwX2NvbG9yaW5nX2lkcyIsImJvb2xfYW5kX2V4cCIsImV4cDEkMjAiLCJleHAyJDIwIiwiYm9vbF9vcl9leHBfY29sb3JpbmdfaWRzIiwiYm9vbF9vcl9leHAiLCJleHAxJDIxIiwiZXhwMiQyMSIsInN0cl9lcV9leHBfY29sb3JpbmdfaWRzIiwic3RyX2VxX2V4cCIsImV4cDEkMjIiLCJleHAyJDIyIiwic3RyX2NvbmNhdF9leHBfY29sb3JpbmdfaWRzIiwic3RyX2NvbmNhdF9leHAiLCJib29sX3VuX25vdCIsImludF91bl9taW51cyIsImludF9wbHVzIiwiaW50X21pbnVzIiwiaW50X3RpbWVzIiwiaW50X3Bvd2VyIiwiaW50X2RpdmlkZSIsImludF9sZXNzX3RoYW4iLCJpbnRfbGVzc190aGFuX2VxdWFsIiwiaW50X2dyZWF0ZXJfdGhhbiIsImludF9ncmVhdGVyX3RoYW5fZXF1YWwiLCJpbnRfZXF1YWwiLCJpbnRfbm90X2VxdWFsIiwiZmxvYXRfcGx1cyIsImZsb2F0X21pbnVzIiwiZmxvYXRfdGltZXMiLCJmbG9hdF9wb3dlciIsImZsb2F0X2RpdmlkZSIsImZsb2F0X2xlc3NfdGhhbiIsImZsb2F0X2xlc3NfdGhhbl9lcXVhbCIsImZsb2F0X2dyZWF0ZXJfdGhhbiIsImZsb2F0X2dyZWF0ZXJfdGhhbl9lcXVhbCIsImZsb2F0X2VxdWFsIiwiZmxvYXRfbm90X2VxdWFsIiwiYm9vbF9hbmQiLCJib29sX29yIiwic3RyaW5nX2VxdWFsIiwic3RyaW5nX2NvbmNhdCIsImZlZWRiYWNrX3ZpZXciLCJ1cF9hY3RpdmUiLCJ1cF9hY3Rpb24iLCJkb3duX2FjdGl2ZSIsImRvd25fYWN0aW9uIiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfdmlldyIsImV4YW1wbGVfZmVlZGJhY2tfdmlldyIsImNvZGVfbm9kZSIsImluamVjdCQwIiwiYXR0ciIsIm1rX3RyYW5zbGF0aW9uIiwib21kIiwiZWxlbSIsIm5vZGVzIiwibWFwcGluZyQxIiwiYnVsbGV0cyIsIm1hcHBpbmckMiIsIm1hcHBpbmckMyIsImlubmVyX21zZyIsIm1rX2V4cGxhbmF0aW9uIiwiY29sb3JfbWFwIiwiZG9jcyIsIm9wdGlvbnMiLCJleHBhbmRhYmxlIiwic3BlY2lmaWNpdHlfcG9zIiwic3BlY2lmaWNpdHlfc3R5bGUiLCJnZXRfY2xzcyIsInVwZGF0ZV9ncm91cF9zZWxlY3Rpb24iLCJzcGVjaWZpY2l0eV9tZW51IiwiZXhwYW5kX2Fycm93X3N0eWxlIiwiZXhwYW5kX2Fycm93IiwiZXhwYW5kYWJsZV9kZWNvIiwiZXhhbXBsZV92aWV3Iiwic3ViX2lkIiwiYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0IiwiYnlwYXNzX3BhcmVuc19wYXQiLCJieXBhc3NfcGFyZW5zX2V4cCIsImJ5cGFzc19wYXJlbnNfdHlwIiwidHlwJDEiLCJwcF9tZXNzYWdlX21vZGUiLCJzaG93X21lc3NhZ2VfbW9kZSIsIm1lc3NhZ2VfbW9kZV9vZl9zZXhwIiwic2V4cF9vZl9tZXNzYWdlX21vZGUiLCJhcmcyXzAxNiIsImFyZzFfMDE1IiwicmVzMl8wMTkiLCJtZXNzYWdlX21vZGVfb2ZfeW9qc29uIiwieW9qc29uX29mX21lc3NhZ2VfbW9kZSIsImdldF9kb2MiLCJzaW1wbGUiLCJnZXRfc3BlY2lmaWNpdHlfbGV2ZWwiLCJnZXRfbWVzc2FnZSIsImZvcm1hdCIsImV4cGxhbmF0aW9uX21zZyIsImNvbG9yX21hcCQwIiwiY29kZV9pZCIsInN5bnRhY3RpY19mb3JtX2lkIiwiZXhwYW5kZXJfZGVjbyQwIiwic3ludGFjdGljX2Zvcm1fdmlldyIsImV4YW1wbGVfdmlldyQwIiwibWVzc2FnZV9zaW5nbGUiLCJnZXRfbWVzc2FnZV9leHAiLCJib2R5IiwiYmFzaWMiLCJlbGVtZW50cyIsInBhdF9pZCQwIiwiYm9keV9pZCQwIiwiZWxlbWVudHMkMCIsInBhdF9pZCQxIiwiYm9keV9pZCQxIiwiYmFzaWNfdHVwbGUiLCJkb2NfaWQiLCJkb2NfaWQkMCIsInBhdDFfaWQkMCIsInBhdDJfaWQkMCIsImNvbiIsInRlcm1zJDAiLCJiYXNpYyQwIiwiZXhwMV9pZCQwIiwiZXhwMl9pZCQwIiwiYm9keSQwIiwiZGVmIiwicGF0X2lkJDIiLCJib2R5X2lkJDIiLCJiYXNpYyQxIiwiZiQxIiwiZWxlbWVudHMkMSIsInYkMSIsInRsJDAiLCJoZF9pZCQwIiwidGxfaWQkMCIsInZhciQxIiwiZWxlbWVudHMkMiIsImJhc2ljX3R1cGxlJDAiLCJkb2NfaWQkMSIsInBhdDFfaWQkMSIsInBhdDJfaWQkMSIsImRvY19pZCQyIiwicGF0MV9pZCQyIiwicGF0Ml9pZCQyIiwicGF0M19pZCQwIiwiY29uJDAiLCJjb25faWQkMCIsImFyZ19pZCQwIiwidHlfZGVmIiwidHlfcGF0IiwiZGVmX2lkJDAiLCJhcmdfaWQkMSIsImJhc2ljJDIiLCJjb2xvcmluZ19pZHMiLCJ2JDIiLCJmbiIsImVsc2UkMCIsInRoZW4iLCJjb25kIiwicmlnaHQiLCJleHAxX2lkJDEiLCJleHAyX2lkJDEiLCJib2R5JDEiLCJib2R5X2lkJDMiLCJib2R5JDIiLCJib2R5JDMiLCJib2R5JDQiLCJib2R5JDUiLCJ0ZXJtJDEiLCJ0ZXJtJDIiLCJ0bCQxIiwiaGQkMSIsImhkX2lkJDEiLCJ0bF9pZCQxIiwieHMiLCJleHBfaWQkMCIsInJpZ2h0JDAiLCJsZWZ0JDAiLCJjb2xvcmluZ19pZHMkMCIsInNjcnV0IiwidGwyIiwiaGQyIiwiaGQyX2lkIiwidGwyX2lkIiwiZWxlbTFfaWQkMCIsImVsZW0yX2lkJDAiLCJyZXN1bHQyIiwiYXJnMiIsInJlc3VsdDJfaWQiLCJlbGVtMV9pZCQxIiwiZWxlbTJfaWQkMSIsImVsZW0xX2lkJDIiLCJlbGVtMl9pZCQyIiwiZWxlbTNfaWQkMCIsImMkMSIsImluZm8kMCIsInNlY3Rpb24iLCJzZWN0aW9uX2Nsc3MiLCJnZXRfY29sb3JfbWFwIiwic3luX2Zvcm0iLCJpc19tYWMiLCJwcF9kaXIiLCJzaG93X2RpciIsImRpcl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZGlyIiwicHBfa2V5Iiwic2hvd19rZXkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsInBwX3N5cyIsInNob3dfc3lzIiwic3lzX29mX3lvanNvbiIsInlvanNvbl9vZl9zeXMiLCJwcF9oZWxkIiwic2hvd19oZWxkIiwiaGVsZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfaGVsZCIsImtleV9maWVsZCIsInN5c19maWVsZCIsInNoaWZ0X2ZpZWxkIiwibWV0YV9maWVsZCIsImN0cmxfZmllbGQiLCJhbHRfZmllbGQiLCJhbHRfdmFsdWUiLCJjdHJsX3ZhbHVlIiwibWV0YV92YWx1ZSIsInNoaWZ0X3ZhbHVlIiwic3lzX3ZhbHVlIiwia2V5X3ZhbHVlIiwidl9hbHQiLCJ2X2N0cmwiLCJ2X21ldGEiLCJ2X3NoaWZ0Iiwidl9zeXMiLCJ2X2tleSIsImtleV9vZiIsImRpciIsInRvX2hlbGQiLCJtb2RpZmllcl9zdHJpbmciLCJtb2RpZmllcnNfc3RyaW5nIiwia2V5X2Rpcl9zdHJpbmciLCJpc19kaWdpdCIsImlzX2Zfa2V5IiwiaGFuZGxlX2tleV9ldmVudCIsIm5vdyIsInNoaWZ0IiwicmVzZXRfaGF6ZWwiLCJyZXBhcnNlIiwic2V0dGluZ3NfbWVudSIsImJlbmNobWFyayIsImNvcmUiLCJleHBvcnRfbWVudSIsInNsaWRlX2lkeCIsInN0YXRlJDAiLCJpbXBvcnRfbWVudSIsInN1Ym1lbnUiLCJtZW51IiwiaGFuZGxlcnMiLCJnZXRfc2VsZWN0aW9uIiwia2V5X2hhbmRsZXIiLCJwYXN0ZWRfdGV4dCIsIm1haW5fdmlldyIsInN0YXRpY3MkMCIsInRvcF9iYXIiLCJib3R0b21fYmFyIiwiYTExeV9iYXIiLCJzaWRlYmFyIiwiZWRpdG9yc192aWV3IiwicmVzdWx0X2tleSQwIiwibWVtb2l6ZSIsInRhYmxlIiwib2NhbWxfbGV4X3RhYmxlcyIsInRva2VuJDAiLCJsZXhidWYiLCJvY2FtbF9sZXhfdG9rZW5fcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3Rva2VuX3JlYyIsInBwX3JlYXNvbiIsInNob3dfcmVhc29uIiwicmVhc29uX29mX3NleHAiLCJzZXhwX29mX3JlYXNvbiIsImFyZzBfMDEwIiwicmVhc29uX29mX3lvanNvbiIsInlvanNvbl9vZl9yZWFzb24iLCJmaWVsZF9zZXhwc18wMTQiLCJyZWFzb25fMDE1IiwicHJpb3JfYXR0ZW1wdHNfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZpZWxkX3NleHBfMDIyJDEiLCJwcmlvcl9hdHRlbXB0c18wMTgiLCJyZWFzb25fMDE2IiwicHJpb3JfYXR0ZW1wdHNfMDMzIiwicmVhc29uXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwicmVhc29uX2ZpZWxkIiwicHJpb3JfYXR0ZW1wdHNfZmllbGQiLCJwcmlvcl9hdHRlbXB0c192YWx1ZSIsInJlYXNvbl92YWx1ZSIsInZfcHJpb3JfYXR0ZW1wdHMiLCJ2X3JlYXNvbiIsInByaW9yX2F0dGVtcHRzIiwicmVwbGFjZV9vcl9pbmNyZW1lbnRfYXR0ZW1wdHMiLCJmYWlsZWRfaW5wdXQiLCJidG4iLCJvbl9zdGFydHVwIiwiY3JlYXRlIiwiY29sb25fTGFtIiwib3Blbl9MYW0iLCJjbG9zZV9MYW0iLCJvcGVuX0ZpeEYiLCJjbG9zZV9GaXhGIiwibWtfS2V5d29yZCIsIm1rX1BhaXIiLCJmc3RyIiwiY3giLCJjeSIsInN0cm9rZV93aWR0aCIsInZlY3Rvcl9lZmZlY3QiLCJmaWx0ZXIiLCJzdG9wX2NvbG9yIiwic3RvcF9vcGFjaXR5IiwiaWQiLCJzY3JvbGxfdG9fY2FyZXQiLCJlZGl0X2FjdGlvbl9hcHBsaWVkIiwibGFzdF9lZGl0X2FjdGlvbiIsIm9uX3N0YXJ0dXAiLCJzY2hlZHVsZV9hY3Rpb24iLCJtIiwiZW50cmllcyIsImZtIiwic3RhdGUiLCJjcmVhdGUiLCJtb2RlbCIsImluamVjdCIsImFjdGlvbiIsIm5ld19tb2RlbCIsImV4YyQwIiwiZXhjIiwibW9kZWwkMCIsImVyciIsImVyciQwIl0sInNvdXJjZXMiOlsiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyZnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbGRvbS5jb21waWxlZC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5qcyIsIi9idWlsdGluLytpbnQ2NC5qcyIsIi9idWlsdGluLyttbEJ5dGVzLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2J1aWx0aW4vK2ZzLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX2JpZ3N0cmluZy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2ludHMuanMiLCIvYnVpbHRpbi8raGFzaC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jhc2VfaW50ZXJuYWxoYXNoX3R5cGVzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb2xsZWN0b3IvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcnVudGltZS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLyt6c3RkLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29qcy9vanNfcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90aW1lX25vdy9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGRsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N5cy5tbC5pbiIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZmlsZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL291dF9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG9seTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbXBvcnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9jb21wYXJlX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9oYXNoX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS93b3JkX3NpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcmV0dHlfcHJpbnRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3dpdGhfcmV0dXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbW9uYWRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21vbmFkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXBwbGljYXRpdmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb21wYXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZWl0aGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ZpZWxkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RyaW5nMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29udGFpbmVyX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yZGVyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2luZm8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2lnbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb21wYXJhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaGFibGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2lkZW50aWZpYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2luZGV4ZWRfY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29ial9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VuaWZvcm1fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHB4X2VudW1lcmF0ZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaHRibF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXZsdHJlZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNoX3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmFja3RyYWNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmFzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL3N0ZGxpYjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9wcHJpbnRhc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9zZXhwX2NvbnYvcnVudGltZS1saWIvcHB4X3NleHBfY29udl9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2VudW1lcmF0ZS9ydW50aW1lLWxpYi9wcHhfZW51bWVyYXRlX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfYXNzZXJ0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2JlbmNoL3J1bnRpbWUtbGliL2JlbmNobWFya19hY2N1bXVsYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21kNS9tZDVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3NoYXBlL2Jpbl9zaGFwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X21vZHVsZV90aW1lci9ydW50aW1lL3BweF9tb2R1bGVfdGltZXJfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfZXF1YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3ZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvc3RkX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZXJlcF9vYmoubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWNfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfZ2VuZXJpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL21ha2VfdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2Fic3RyYWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29tbW9uL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9leHBlY3RhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9leHBlY3RfdGVzdF9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb25maWdfdHlwZXMvZXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb25maWdfdHlwZXMvZXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb2xsZWN0b3IvZXhwZWN0X3Rlc3RfY29sbGVjdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29uZmlnL2V4cGVjdF90ZXN0X2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3Bvc2l0aW9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcGFyc2VfZXJyb3JfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX2FjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL29sZF9wYXJzZXJfY29udF9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl90YWJsZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9vZl9zZXhwX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvY29udl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc3JjX3Bvcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3R5cGVfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXJzZXJfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3ByZV9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc2V4cF93aXRoX2xheW91dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zdGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zZXhwX2dyYW1tYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvZXhuX21hZ2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NwbGl0dGFibGVfcmFuZG9tL3NwbGl0dGFibGVfcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svYmlnYXJyYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svb2JzZXJ2ZXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9nZW5lcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50NjQubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9zaHJpbmtlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL2Jhc2VfcXVpY2tjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbnRfcmVwci9pbnRfcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX2JpZ3N0cmluZy9iYXNlX2JpZ3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jhc2VfZm9yX3Rlc3RzL3Rlc3RfYmxpdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jhc2VfZm9yX3Rlc3RzL3Rlc3RfYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGFibGVfdW5pdF90ZXN0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZXByZWNhdGVfcGlwZV9iYW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saXN0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1aWNrY2hlY2thYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQ2My5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RkX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZV91bml0czAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb3JlX2Jpbl9wcm90Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWQ1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmluYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3pvbmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS92YWxpZGF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bml0X29mX3RpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bmlxdWVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90eXBlX2ltbWVkaWFjeS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3R1cGxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF5X29mX3dlZWsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kaWdpdF9zdHJpbmdfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21vbnRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF0ZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcGVyY2VudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5faGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5fZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lX2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWVfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kYXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Bhbl9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29mZGF5X25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdGltZV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21ha2Vfc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYXJnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZF9lbnZfdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmlsZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21tYW5kX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3BpZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZkZXF1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oZWFwX2Jsb2NrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYWtlX3N0YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbl9vcl9uYW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29wdGlvbl9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xhenkubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbm9fcG9seW1vcnBoaWNfY29tcGFyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21lbW8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saW5rZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZXJpdmluZ19oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvcmVfc3lzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmFnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnYnVmZmVyX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZXMubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYm91bmRlZF9pbmRleC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc190b2tlbml6ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX2dlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vanMvb2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29qcy9vanNfZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2RvbV9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9lZmZlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vaG9va3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vanNfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9hdHRyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2dsb2JhbF9saXN0ZW5lcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vbm9kZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS92ZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxfZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV90eXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3R1cGxlX3Bvb2wvdHVwbGVfcG9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90aW1pbmdfd2hlZWwvdGltaW5nX3doZWVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9jb25maWcvYXN5bmNfa2VybmVsX2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9tb3B0aW9uL21vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvcGFpcmluZ19oZWFwL3BhaXJpbmdfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9zZXhwX2hpZGRlbl9pbl90ZXN0L3NleHBfaGlkZGVuX2luX3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdW9wdC91b3B0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3RocmVhZF9zYWZlX3F1ZXVlL3RocmVhZF9zYWZlX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aW1lX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9wcmlvcml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9leGVjdXRpb25fY29udGV4dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZXh0ZXJuYWxfam9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2JfcG9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2Jfb3JfZXZlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zY2hlZHVsZXIxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25hZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWQxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zdGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2l2YXJfZmlsbGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90YWlsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25pdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2J2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY3ljbGVfaG9vay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsX3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY2xvY2tfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY2xvY2tfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9saXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX21lbW8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9waXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9sYXp5X2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19jb25kaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19pbnZhcmlhbnRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19rZXJuZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3Byb3RvY29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfbWFwL2luY3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3Jfc2VsZWN0L2luY3Jfc2VsZWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL2phdmFzY3JpcHRfcHJvZmlsaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3Zkb21fZmlsZV9kb3dubG9hZC92ZG9tX2ZpbGVfZG93bmxvYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vdWlfaW5jci91aV9pbmNyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2NvbXBvbmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9hcHBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9qc19taXNjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3N0YXJ0X2FwcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9pbnB1dF93aWRnZXRzL3Zkb21faW5wdXRfd2lkZ2V0cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wdG1hcC9wdG1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi95b2pzb24vY29kZWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIveW9qc29uL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi95b2pzb24vbGV4ZXJfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udl9saWIvcHB4X3lvanNvbl9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZGVyaXZpbmcvcnVudGltZS9wcHhfZGVyaXZpbmdfcnVudGltZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9XZWIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvVHVwbGVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1RpbWVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1N0cmluZ1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTW9uYWRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1N0YXRlTW9uYWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1BhaXJVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL09wdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTWFwVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9EaXJlY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTGlzdEZyYW1lLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0ludFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvSW50TWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0VpdGhlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9BYmEucmUiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY2F0ZWdvcnkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZm10Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NzZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcG1hcmsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvYXV0b21hdGEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY29sb3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2dyb3VwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZW1hY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvc3RyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2dsb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcGVybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9wY3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3Bvc2l4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRPdmVyU3RvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1VuaW9uRmluZEJhc2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9TdG9yZU1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlVHJhbnNhY3Rpb25hbFJlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVWZWN0b3IubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9JZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvUHJlY2VkZW5jZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvU29ydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL0dyb3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvVG9rZW4ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9MYWJlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9Nb2xkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Gb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvU2Vjb25kYXJ5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vRWZmZWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Nb2xkcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1RpbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9QaWVjZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1NrZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9TZWdtZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1NpYmxpbmdzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9ycy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9UaW1lLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1RvdWNoZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9Vbmljb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvTWVhc3VyZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvU2VsZWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0JhY2twYWNrLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1JlbGF0aXZlcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9aaXBwZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9WYXJNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FeHBhbmRpbmdLZXl3b3JkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvTWV0YVZhci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckVyclN0YXR1cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvQ29uc3RydWN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvbnN0cnVjdG9yTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UeXBWYXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1Zhci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVHlwQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckN0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckJzdE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0VyclN0YXR1cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL01ldGFWYXJJbnN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvREhQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9GaWx0ZXJBY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9Ib2xlSW5zdGFuY2VJZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ludmFsaWRPcGVyYXRpb25FcnJvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0tleXdvcmRJRC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1N0cnVjdHVyZVNoYXJlU2V4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVGVybUJhc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9ESC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvckVycm9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvQnVpbHRpbnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL0NvcmVTZXR0aW5ncy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWxDdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9QYXR0ZXJuTWF0Y2gucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UZXN0U3RhdHVzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVGVzdE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1RyYW5zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9WYWx1ZUNoZWNrZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50RXhwYW5kZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvQ3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9Nb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9TZWxmLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UZXJtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9JbmZvLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L1N1Z2dlc3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50Q3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L0Fzc2lzdGFudEZvcm1zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRGVsdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UZXJtUmFuZ2VzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9TdGF0aWNzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvU3Vic3RpdHV0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRWxhYm9yYXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclN0YXRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yU3RhdGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL0luZGljYXRlZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1Rlcm1NYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UaWxlTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9NYWtlVGVybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvUHJvZ3JhbVJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvSW50ZXJmYWNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L1R5RGkucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UZXN0UmVzdWx0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclN0ZXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9GaWx0ZXJNYXRjaGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvU3RlcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vQWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0VkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vTW92ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vU2VsZWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9EZXN0cnVjdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vSW5zZXJ0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9QZXJmb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1ByaW50ZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvUGVyc2lzdGVudFppcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9PcmllbnRhdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvTW9kZWxSZXN1bHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL01vZGVsUmVzdWx0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0hvbGVJbnN0YW5jZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0luc3RhbmNlUGF0aC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0lualNpZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvSW5jb21wbGV0ZUJpZGVsaW0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9Ib2xlSW5zdGFuY2VQYXJlbnRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvSG9sZUluc3RhbmNlSW5mby5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0hvbGVJbnN0YW5jZUluZm9fLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yUG9zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL0NvZGVTdHJpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvRWRpdG9yVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvQ2FjaGVkU3RhdGljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Qb3NNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9NZWFzdXJlZFBvc2l0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGlzdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9NZWFzdXJlZExheW91dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0Nvc3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Eb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXRPZkRvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0JveC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvU3ludGF4VGVzdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvRXhlcmNpc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0dyYWRpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0dyYWRlUHJlbHVkZS5yZSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfcmVwcmVzZW50YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9iYWNrZW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9sZXhlcl9mcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Xb3JrZXJTZXJ2ZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV29ya2VyQ2xpZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1dpZGdldHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV2Vha01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhhbXBsZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhwbGFpblRoaXNGb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1ZhclRQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9BY2Nlc3NpYmlsaXR5TW9kZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X09kZGx5UmVjdXJzaXZlX3Byb21wdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhlcmNpc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9PZGRseVJlY3Vyc2l2ZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X1JlY3Vyc2l2ZUZpYm9uYWNjaV9wcm9tcHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9SZWN1cnNpdmVGaWJvbmFjY2kubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlU2V0dGluZ3NfYmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhwbGFpblRoaXNNb2RlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU2V0dGluZ3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvUGVyc2lzdGVudERhdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0VkaXRvcnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Gb250TWV0cmljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Kc1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVHlwZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9LaW5kLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TdG9yZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvTW9kZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9RdWVyeS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlQWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2Fzc2lzdGFudC9VcGRhdGVBc3Npc3RhbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0JlbmNobWFyay5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRGVidWdDb25zb2xlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Mb2cucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4cG9ydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9hMTF5L1F1ZXJ5Q29tbWFuZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9hMTF5L1F1ZXJ5UGFyc2VyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TdGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHlwQW5uUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R5QWxpYXNFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESEFubm90LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1NlZ21lbnRUcmVlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1N2Z1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL0RlY29yYXRpb25fY29tbW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19jb21tb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19QYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9IVHlwRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2NfVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2NfRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhMYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESE1lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9ESENvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVGVzdFZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVGVzdEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9TdW1UeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvSWNvbnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvU3RlcHBlclZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NsaWRlQ29udGVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9TZXFFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZXNJbml0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL05vZGVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9EZWNVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9EaWFnLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9FbXB0eUhvbGVEZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQ29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9CYWNrcGFja1ZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0NhcmV0RGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9DYXJldFBvc0RlYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvQ29sb3JTdGVwcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvUGllY2VEZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRGVjby5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9DZWxsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1NjcmF0Y2hNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvUXVlcnlFbmdpbmUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvUXVlcnlBc3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvUGlwZWxpbmVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHkiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9BY2Nlc3NpYmlsaXR5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0FwcEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9BcHBQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQXJyb3dUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQ2FzZUV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9DdHhJbnNwZWN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQ3Vyc29ySW5zcGVjdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0VkaXRvck1vZGVWaWV3LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9HcmFkaW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0V4ZXJjaXNlTW9kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9GaWx0ZXJFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRnVuY3Rpb25FeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVRlbXBsYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlVFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0lmRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xldEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MaXN0RXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xpc3RQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvTGlzdFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9PcEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9FeHBsYWluVGhpcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9Gb250U3BlY2ltZW4ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL09zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL0tleS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvS2V5Ym9hcmQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvTnV0TWVudS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9QYWdlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL01lbW8ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0xvZ0VudHJ5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRmFpbGVkSW5wdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRGVidWdNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2NfVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0JsYW5rVGVtcGxhdGUubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvQXR0clV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL01haW4ucmUiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBLEM7O0c7OztRO1M7OztHO0k7STtJO0c7RTs7OztHQVdDLENBQUM7TUFFRTtPQUFJQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkFDLHNCQUFzQkMsU0FBU0Y7T0FDL0JHLG9CQUFvQkM7T0FDcEJDO01BR0osR0FBSUYsV0FBWTtPQUNaRSxZQUFZRCxpQkFBaUJFO09BQzdCRCxxQkFBcUJFO09BQ3JCLEdBQUdDLG1CQUFtQkEsNkJBQTZCRjs7VUFHbEQ7T0FFREQ7UUFBWUcscUJBQXNCLFdBQWEsT0FBT0MsUUFBUSxJQUFHQyxjQUEvQjtPQUNsQ0wscUJBQXFCQzs7TUFJekI7T0FBSUssV0FBV1I7T0FDWFM7TUFDSixTQUFTQyxtQkFBbUJDLE1BQU1DO09BQzlCLEtBQUtILHFCQUFxQkUsTUFBTztRQUM3QjtpQkFBV0Usa0NBQWtDQTtTQUN6Q0E7MEJBQTRCRjs7O2FBQTZFQzs7UUFFN0dILHFCQUFxQkU7O01BRTdCO01BRUFULHVCQUF1Qlk7TUFDdkJaLHdCQUF3QmE7TUFDeEJiLDhCQUE4QmM7TUFHOUIsU0FBU0MsY0FBY0M7T0FDbkJBLGNBQWNwQiw4QkFBOEJBO09BQzVDb0IsY0FBY3BCLDhCQUE4QkE7T0FDNUNvQixTQUFTcEIseUJBQXlCQTtNQUN0QztNQUVBbUIsY0FBY2Q7TUFDZCxTQUFTQSxnQkFBZ0JnQixLQUFLQyxHQUFHQztPQUU3QixHQUFJRCxLQUFLQSxPQUFRLENBQ2JDLFNBQVNELEdBQ1RBLElBQUlFO09BRVIsR0FBSUQ7UUFDQVg7Z0JBQXlCRjt1QkFBdURBO09BRXZFO1FBQVRlLFdBQVdGLFNBQVN2Qix5QkFBeUJ1QixVQUFVdkI7T0FDM0QsT0FBT3lCLFNBQVNKLEtBQUtDO01BQ3pCO01BRUFILGNBQWNiO01BQ2QsU0FBU0EsbUJBQW1CZSxLQUFLQyxHQUFHQztPQUNoQyxHQUFJQTtRQUNBWDtnQkFBeUJGO3VCQUFnRUE7O1FBR3pGRTtnQkFBeUJGO1VBQXlDQTtPQUV6RDtRQUFUZSxXQUFXRixTQUFTdkIseUJBQXlCdUIsVUFBVXZCO09BQzNELE9BQU95QixTQUFTSixLQUFLQztNQUN6QjtNQUVBLFNBQVNOLHFCQUFxQkssS0FBS0MsR0FBR0MsUUFBUUc7T0FFMUM7aUJBQVlILDZCQUE2QkE7WUFBdUJHLFlBQVlDLEtBQU07UUFDOUVELFdBQVdIO1FBQ1hBLFNBQVNDOztPQUdiLEdBQUlEO1FBQ0FYO2dCQUF5QkY7dUJBQWtFQTs7WUFBK0VBOzs7UUFHMUtFO2dCQUF5QkY7dUJBQTBEQTtZQUFzREE7O09BR2hJO1FBQVRlO1VBQVcsQ0FBQ0YsU0FBU3ZCLHlCQUF5QnVCLFVBQVV2QjtZQUEwQjBCO09BQ3RGLE9BQU9ELFNBQVNKLEtBQUtDO01BQ3pCO01BRWdCLElBQVpNLGNBQWM1QjtNQUNsQixTQUFTaUIsc0JBQXNCSSxLQUFLQyxHQUFHQztPQUNuQyxHQUFJQTtRQUNBWDtnQkFBeUJGO3VCQUErREE7O1FBR3hGRTtnQkFBeUJGO3VCQUF5REE7T0FFekUsSUFBVGUsV0FBV0YsU0FBU0sscUJBQXFCTCxVQUFVSztPQUN2RCxPQUFPSCxTQUFTSixLQUFLQztNQUN6QjtNQUVBLFNBQVNKLDRCQUE0Qks7T0FDakNYO2VBQXlCRjtTQUEwQ0E7T0FDbkUsT0FBT1YseUJBQXlCdUI7TUFDcEM7TUFJQSxVQUFXTTtPQUNQQSxzQkFDRSxhQUFZQSxPQURIO01BS2YsU0FBUzVCLFNBQVNzQixRQUFRTyxzQkFBc0JDO09BQzVDO1FBQUlDLFVBQVVULFVBQVV4QjtRQUNwQmtDLHdCQUF3Qkg7UUFDeEJJLG1CQUFtQkg7UUFNbkJJO1FBQ0FDO09BRUosU0FBU0MsVUFBVUMsUUFBUUM7UUFDdkIsSUFBSUM7UUFFSixLQUFLRCxLQUFNO1NBQ2MsSUFBakJFLG1CQUFtQlo7U0FDdkIsR0FBSVksbUJBQW1CTixxQkFBc0I7VUFDekNBLHVCQUF1Qk07VUFDdkJMLGtCQUFrQlAsS0FBS007VUFFdkJLLFlBQVlMO1VBRVosR0FBSUQ7V0FHQUU7O2FBQWtCUDtjQUFLTSx1QkFBdUJPLDJCQUEyQk47Z0JBQWVIOztTQUdoR00sT0FBT0g7O1lBRU47U0FDREksWUFBWUQ7U0FFWixHQUFJTDtVQUNBSzs7WUFBV1Y7YUFBS1UsaUJBQWlCRywyQkFBMkJIO2VBQVFOOztRQUk1RSxPQUFPVSxlQUFlTCxRQUFRQyxNQUFNUCxTQUFTUTtPQUNqRDtPQUVBLFNBQVNHLGVBQWVMLFFBQVFDLE1BQU1oQixRQUFRaUI7UUFDMUM7U0FBSUk7U0FDQUMsVUFBVWxCO1NBQ1ZtQjtTQUNBQyxTQUFTVDtTQUNUVTtRQUVKLElBQVcsSUFBRkMsT0FBT0EsSUFBSUYsUUFBUUUsSUFBSztTQUVULElBQWhCQyxrQkFBa0JaLGtCQUFrQlc7U0FFeEMsR0FBSUgsbUJBQW9CO1VBRXBCLEdBQUlJLHVCQUF3QixDQUN4QkwsY0FDQTtrQkFHS0ssdUJBQXdCLENBQzdCTCxlQUNBO2tCQUdLSyx1QkFBd0IsQ0FDN0JMLGVBQ0E7a0JBR0tLLHVCQUF3QjtXQUMvQixHQUFJRjtZQUFZO3FCQUNIakM7d0JBQWtDQTthQUMzQ0E7O1dBR0ppQztXQUNBOztVQUdGLE9BQVFFOzthQU9BTixnQkFBZ0JyQixZQUFZZ0IsZ0JBQzVCOzthQUtBSyxnQkFBZ0JyQixjQUFjZ0Isa0JBQzlCOzthQUtBSztjQUFnQk8sU0FBU0MsV0FBV2IsMkJBQTJCTTthQUMvRDs7YUFLQUQ7Y0FBZ0JELGVBQWVwQixrQkFBa0JnQixNQUFNaEIsUUFBUWlCO2FBQy9EOzthQUtBSTtjQUFnQkQsZUFBZXBCLGtCQUFrQmdCLE1BQU1oQixRQUFRaUI7YUFDL0Q7O2FBS0FJLGdCQUFnQk8sU0FBU1osaUJBQWlCTSxVQUMxQzs7YUFLQUQsZ0JBQWdCTyxTQUFTRSxRQUFRZCxrQkFBa0JNO2FBQ25EOzthQUtBRCxnQkFBZ0JVLFNBQVNGLFdBQVdaLG9CQUNwQzs7YUFLQUksZ0JBQWdCTyxTQUFTWixtQkFBbUJNLFVBQzVDOzthQUtBRCxnQkFBZ0JMLHVCQUF1QmhCLFlBQVlBO2FBQ25EOzthQUtBcUI7Y0FBZ0JELGVBQWVwQixrQkFBa0JnQixNQUFNaEIsUUFBUWlCO2FBQy9EOzthQUtBSSxnQkFBZ0JPLFNBQVNaLG1CQUFtQk0sVUFDNUM7O2FBS0FEO2NBQWdCRCxlQUFlcEIsa0JBQWtCZ0IsTUFBTWhCLFFBQVFpQjthQUMvRDs7YUFLQUksZ0JBQWdCTyxTQUFTSSxXQUFXaEIsaUJBQWlCTTthQUNyRDs7YUFLQUQsZ0JBQWdCTyxTQUFTSSxXQUFXaEIsaUJBQWlCTTthQUNyRDs7YUFLQUQ7Y0FBZ0JELGVBQWVwQixrQkFBa0JnQixNQUFNaEIsUUFBUWlCO2FBQy9EOzthQUtBSSxnQkFBZ0JMLG9CQUNoQjs7YUFLQSxHQUFJTCxvQkFBb0JEO2NBQ3BCVztpQkFFQztjQUVZLElBQVRZLFdBQVdqQjtjQUNmSyxnQkFBZ0JZLFlBQVlBOzthQUVoQzs7YUFLQVosZ0JBQWdCckIsaUJBQWlCZ0IsZ0JBQ2pDOzthQUtBSyxnQkFBZ0JyQixtQkFBbUJnQixrQkFDbkM7O2FBS0FLO2NBQWdCRCxlQUFlcEIsa0JBQWtCZ0IsTUFBTWhCLFFBQVFpQjthQUMvRDs7YUFLQUksZ0JBQWdCTyxTQUFTWixnQkFBZ0JNLFVBQ3pDOzthQUtBRDtjQUFnQk8sU0FBU1osZ0JBQWdCTSxXQUFXbEIsYUFBYWtCO2FBQ2pFOzthQUtBRCxnQkFBZ0JyQixtQkFBbUJnQixrQkFDbkM7O2FBS0E7Y0FBSWtCLFFBQVE1QixLQUFLVTtjQUNibUI7Z0JBQU1OO21CQUFXYixpQkFBaUJrQjthQUN0Q2IsZ0JBQWdCVSxTQUFTSTthQUN6Qjs7YUFLQWQ7Y0FBZ0JPLFNBQVNaLGlCQUFpQk0sV0FBV2xCLGFBQWFrQjthQUNsRTs7YUFLQUQ7Y0FBZ0JPO2dCQUFTRSxRQUFRZCxrQkFBa0JNLFdBQVdsQixhQUFha0I7YUFDM0U7O2FBS0FELGdCQUFnQk8sU0FBU1oscUJBQXFCTSxVQUM5Qzs7YUFLQUQsc0JBQ0E7O2FBS0FBLGdCQUFnQmUsT0FBT3BCLGtCQUFrQnFCLFFBQVFyQjthQUNqRDs7YUFLQUssZ0JBQWdCTCx1QkFBdUJoQixZQUFZQTthQUNuRDs7YUFLQXFCO2NBQWdCRCxlQUFlcEIsa0JBQWtCZ0IsTUFBTWhCLFFBQVFpQjthQUMvRDs7YUFLQUksZ0JBQWdCUSxXQUFXWixtQkFDM0I7O2FBS0FJLHNCQUNBOzthQUtRLElBQUpjLE1BQU1uQjthQUNWSyxnQkFBZ0JjLGdCQUFnQkE7YUFDaEM7O2FBS0FkO2NBQWdCRCxlQUFlcEIsa0JBQWtCZ0IsTUFBTWhCLFFBQVFpQjthQUMvRDs7YUFLQUksZ0JBQWdCTCxlQUNoQjs7YUFLQUs7Y0FBZ0JELGVBQWVwQixrQkFBa0JnQixNQUFNaEIsUUFBUWlCO2FBQy9EOzthQUtBSSxnQkFBZ0IsTUFBTUwsOEJBQ3RCOzthQUtBLEdBQUlMLG9CQUFvQkQ7Y0FDcEJXLGdCQUFnQkk7aUJBRWY7Y0FDRCxJQUFJYTtjQUNKLEdBQUk1QjtlQUNBNEIsTUFBTTVCOztlQUdONEIsUUFBT3RCO2NBRVg7ZUFBSXVCLE9BQU9EO2VBQ1BFLE1BQU1mO2VBQ05nQixRQUFRWixXQUFXQSxTQUFTUztlQUM1QkksT0FBT2IsU0FBU1M7Y0FDcEJqQixnQkFBZ0JrQixPQUFPWCxTQUFTYSxTQUFTRCxNQUFNWixTQUFTYzs7YUFFNUQ7cUJBR0FyQixnQkFBZ0JOLE9BQU9XLElBQ3ZCOztVQUdSSixVQUFVbEI7VUFDVm1CO1VBQ0E7O1NBSUosR0FBSUksdUJBQXdCLENBQ3hCSixrQkFDQTtTQUdKRixnQkFBZ0JOLE9BQU9XOztRQUczQixPQUFPTDtPQUNYO09BRWEsSUFBVG5CLFdBQVdZO09BRWZaO2lCQUE2QkY7U0FDekI7aUJBQVd0QjtrQkFBU3NCLFVBQVVTLFNBQVNDLHVCQUF1QkM7UUFEOUM7T0FJcEJUO2lCQUE2QkM7U0FDekI7VUFBSUksdUJBQXVCRztVQUN2QmlDLGtCQUFrQmhDO1VBRWxCaUMsc0JBQXNCekM7U0FDMUIsR0FBSXlDLDZCQUE2QkEsMEJBQTJCO1VBQ3hERDtVQUdBLEdBQUlDLDBCQUEyQjtXQUMzQjtZQUFJTCxPQUFPcEM7WUFDUHNDLFFBQVFJLFNBQVMxQztZQUNqQjJDLFVBQVVELFNBQVMxQztXQUV2QkksdUJBQXVCZ0MsYUFBY0UsUUFBU0s7O2tCQUd6Q0Y7V0FDTHJDLHVCQUF1Qko7O1NBSS9CLFdBQVd6QixTQUFTK0IsU0FBU0Ysc0JBQXNCb0M7UUF0Qm5DO09BeUJwQnpDO21CQUNJLFdBQVd4QixTQUFTK0IsU0FBU0MsNkJBRGxCO09BSWYsT0FBT1I7TUFDWDtNQUVBLFNBQVMwQixTQUFTbUIsYUFBYUM7T0FDM0IsR0FBSUEsc0JBQXNCRCxpQkFBaUIsT0FDaENBO09BRVgsR0FBSUMsZUFBZTVDLE1BQ2Y0QztPQUVKLE9BQU9BLGNBQWNEO01BQ3pCO01BRUEsU0FBU2hCLFNBQVNnQjtPQUNkLEdBQUlBLGtCQUFrQixPQUNYQTtPQUVYLEdBQUlBLGlCQUFpQixhQUNKQTtPQUVqQixjQUFjQTtNQUNsQjtNQUVBLFNBQVNqQixRQUFRbUI7T0FDYixHQUFJQSxZQUFZLG1CQUdQQSxXQUFXLE9BQ1RBO09BRVgsT0FBT0E7TUFDWDtNQUtBLFNBQVNqQixXQUFXaEIsTUFBTWtDO09BQ3RCQSxlQUFlQTtPQUlILElBQVJDLFVBQVVuQztPQUNkLEdBQUlrQztRQUEyQixHQUN2QkMsZUFDQUEsa0JBRUFBO09BR1I7UUFBSUMsb0JBQW9COUMsU0FBU1U7UUFDN0JxQztVQUFVL0MsU0FBU1Usb0JBQW9CQSxpQkFBaUJBO1FBQ3hEc0MsT0FBT3pCLFlBQVl3QixVQUFVRDtRQUM3QkcsV0FBV0QsV0FBV0g7T0FFMUIsT0FBT3RCLFdBQVcwQjtNQUN0QjtNQUdBLFNBQVNsQixRQUFRbUI7T0FDYixJQUFJOUIsSUFBSThCLGFBQ0pDLEtBQUtEO09BRVQsR0FBS0MsWUFBWUEsWUFBYS9CLFdBQVdBLFFBQVE7T0FHakQsT0FBUUEsV0FDSSxvQkFDQSxvQkFDQTs7TUFFaEI7TUFFQSxTQUFTUCwyQkFBMkJIO09BQ2hDLFFBQVFBO01BQ1o7S0FybUJGOztFOzs7R0NYRixDQUFBLFNBQVUwQztNQUFHLFVBQVVDLCtCQUEyQi9FO09BQXNCQSxpQkFBZThFO3FCQUFtQkUseUJBQXFCQTtPQUFZQSxXQUFVRjtVQUFPO09BQUMsSUFBSUc7T0FBRSxVQUFVQztRQUFzQkQsSUFBRUM7c0JBQXNCQztRQUFzQkYsSUFBRUU7c0JBQXNCQyxzQkFBb0JILElBQUVHLFdBQVVILElBQUU1RTtPQUFLNEUsZUFBZUg7O0tBQTlUOztPQUFnVixJQUFJRSxRQUFPaEYsUUFBTytFO09BQVEsT0FBTyxTQUFVTSxFQUFFQyxHQUFFQyxHQUFFQztpQkFBRyxTQUFTQyxFQUFFQyxHQUFFQztrQkFBRyxLQUFJSixFQUFFRyxHQUFHO21CQUFDLEtBQUlKLEVBQUVJLEdBQUc7b0JBQU0sSUFBREUsV0FBU0MseUJBQXFCQTtvQkFBUSxLQUFJRixLQUFHQyxHQUFFLE9BQU9BLEVBQUVGO29CQUFNLEdBQUc1QyxHQUFFLE9BQU9BLEVBQUU0QztvQkFBVyxJQUFEWixRQUFNZ0IsK0JBQTZCSjtvQkFBTyxNQUFNWiw2QkFBMEJBOzttQkFBTyxJQUFEaUIsSUFBRVIsRUFBRUc7bUJBQWdCSixFQUFFSTtxQkFBV0s7OEJBQW1CVixHQUFRLElBQURFLElBQUVELEVBQUVJLE1BQU1MLElBQUcsT0FBT0ksRUFBRUYsSUFBRUEsSUFBRUYsR0FBMUM7cUJBQThDVTtxQkFBRUE7cUJBQVVWO3FCQUFFQztxQkFBRUM7cUJBQUVDOztrQkFBRyxPQUFPRCxFQUFFRztpQkFBVTtpQkFBTSxJQUFENUMsV0FBUytDLHlCQUFxQkE7aUJBQVEsSUFBUyxJQUFESCxPQUFJQSxJQUFFRixVQUFTRSxLQUFJRCxFQUFFRCxFQUFFRTtpQkFBSSxPQUFPRDtnQkFBdGI7OzRCQUF1Y0ksU0FBUTdGLFFBQU8rRTtvQkFDdnpCLElBQWRpQixnQkFBZ0JIO29CQUVwQjdGLGlCQUFpQmdHO21CQUhneUI7Ozs0QkFLbHdCSCxTQUFRN0YsUUFBTytFO29CQUNyRCxJQUFMa0IsT0FBT0o7b0JBRVg3RixpQkFBaUJpRzttQkFIcUI7Ozs0QkFLQUosU0FBUTdGLFFBQU8rRTtvQkFnQ3JEL0U7cUJBQWlCLFNBQWdCa0c7dUJBRS9CO3dCQUFJQyxjQUFjM0M7d0JBQ2hCNEMsb0JBQW9CLHVCQUF1QkY7d0JBRTNDZDt1QkFFRkE7aUNBQWdCaUIsS0FBS0MsV0FBV0M7eUJBRTlCOzJCQUFJQywrQkFBK0JGOzswQkFBa0MsT0FDNURILGlCQUFpQkUsS0FBS0MsV0FBV0M7eUJBRTFDOzBCQUFJRTswQkFDRkM7NkJBQVNKOytCQUFvQ0E7K0JBQW1DQTsrQkFDL0VBOzBCQUVESzswQkFFQUwsZ0JBQWdCTSxPQUFPTixrQkFBa0JJOzBCQUN6Q0c7MEJBQVlDOzBCQUFPQzswQkFBV0M7eUJBQ2hDWDt5QkFDQSxLQUFLRDswQkFFSFM7K0JBQWlCRCxhQUFhTiwrQkFBK0JJO3lCQVMvREgsUUFBUUEsVUFBVUwsb0JBQ2xCSzt5QkFDQSxNQUFPTyxRQUFRUixlQUFlRCxLQUFNOzBCQUVsQ1UsWUFBWUQsY0FBY0E7MEJBQzFCLEdBQUlDLFlBQVlKLGNBQWU7MkJBQzdCRixZQUFZSixVQUFVTSxlQUFlRzsyQkFHckMsS0FBS1YscUJBQXFCVTs0QkFDeEJBOzhCQUFpQkQ7OytCQUNmLElBQVcsSUFBRi9ELE9BQU9BLElBQUltRSxzQkFBc0JuRTtnQ0FBSyxHQUN6Q21FLFVBQVVuRSxPQUFPb0QsT0FDbkJZLE1BQU1oRSxLQUFLb0Q7OEJBSFk7MkJBUS9CLEdBQUlZLG9CQUFvQkEsY0FBY1Q7NEJBQ3BDYSwyQkFBMkJULFFBQVFLOzJCQUVyQ0UsYUFBYUY7MkJBQ2JILGdCQUFnQkk7MkJBQ2hCLEdBQUlOLGlCQUFpQkYsT0FBTzs7MEJBSTlCLEdBQUlELHdCQUF3QlE7MkJBQzFCUjs7eUJBR0osR0FBSUssa0JBQWtCTjswQkFBWSxHQUM1QlcsZ0JBQWVWLG9CQUNqQkc7OzswQkFHRkEsWUFBWUosVUFBVU07eUJBRXhCLE9BQU9GLGdCQUFnQkY7bUNBQVFFLGdCQUFnQkY7bUNBQVNFO3dCQS9EbkQ7dUJBa0VQLE9BQU9yQjtzQkF6RVM7O21CQWhDVzs7OzRCQTRHWFMsU0FBUTdGLFFBQU8rRTtvQkFDakM7b0JBRUE7cUJBQUlvQyx1QkFBdUJ0QjtxQkFFdkJ1QjtvQkFDSkQsaUNBQWlDQztvQkFFckIsSUFBUkMsOEJBQThCRDtvQkFFbENwSCxpQkFBaUJzSDtvQkFFakIsU0FBU0EsUUFBUUM7cUJBQ0osSUFBTEMsT0FBT0QsS0FBS0Y7cUJBRWhCLEtBQUtHLE1BQ0RBLE9BQU9ELEtBQUtGO3FCQUdoQixPQUFPRztvQkFDWDttQkFwQlM7Ozs0QkFzQm1DM0IsU0FBUTdGLFFBQU8rRTtvQkFDM0QsQ0FBQSxTQUFXSTt1QkFDWDt1QkFJUzt3QkFBTHNDO2lDQUFjdkM7NkJBQ2RBO29DQUFnQkMseUJBQ2hCQTt1QkFFSm5GLGlCQUFpQjBIO3VCQUVqQixTQUFTQSxXQUFXQyxLQUFLQzt3QkFDckIsR0FBSUQsT0FBT0YsTUFBTSxPQUNOQSxLQUFLRTt3QkFHaEJGLEtBQUtFLE9BQU9DO3dCQUVaLE9BQU9BO3VCQUNYO3NCQW5CQzt1QkFxQk92SDs4QkFBWThFOzBCQUF5QkE7OzBCQUFnQkM7OzRCQUF1QkE7bUNBQWNGLHlCQUF5QkE7bUJBdEJ4Rjs7OzRCQXVCakJXLFNBQVE3RixRQUFPK0U7b0JBQ2pDO29CQUVlLElBQVgyQyxhQUFhN0I7b0JBRWpCN0YsaUJBQWlCNkg7b0JBRWpCLFNBQVNBLFdBQVdDLFlBQVlDLFNBQVNDO3FCQUNyQztzQkFBSUwsb0NBQW9DRztzQkFDcENHLGFBQWFOO3NCQUViTyxlQUFlUixXQUFXTyxZQUFZRjtxQkFFMUMsR0FBSUcsaUJBQWlCSDtzQkFBUzs2QkFDaEJqQzs2REFDTmdDOztnQ0FDOEJJOzs7Z0NBRWFIO3FCQUduRCxPQUFPTCxXQUFXQyxLQUFLSztvQkFDM0I7bUJBdEJTOzs7NEJBd0J1Qm5DLFNBQVE3RixRQUFPK0U7b0JBQy9DLENBQUEsU0FBV0k7dUJBQ1g7d0JBQUlnRDtpQ0FBa0JoRDs2QkFBeUJBO29DQUNwQ0QseUJBQXlCQTt3QkFDaENrRCxTQUFTdkM7dUJBRWIsVUFBV3dDO3dCQUNQckksaUJBQWlCcUk7MkJBQ2Q7d0JBQ08sSUFBTkMsUUFBUUg7d0JBRVosS0FBS0c7eUJBQ0RBLFFBQVFILHdDQUF3Q0M7d0JBR3BEcEksaUJBQWlCc0k7O3NCQWRwQjt1QkFpQk9qSTs4QkFBWThFOzBCQUF5QkE7OzBCQUFnQkM7OzRCQUF1QkE7bUNBQWNGLHlCQUF5QkE7bUJBbEJwRzs7OzRCQW1CWVcsU0FBUTdGLFFBQU8rRTtvQkFDbEQ7cUJBQUl3RCxVQUFVMUM7cUJBRVYyQyxVQUFVM0M7cUJBQ1Y0QyxVQUFVNUM7cUJBQ1Y2QyxhQUFhN0M7cUJBQ2I4QyxtQkFBbUI5QztxQkFDbkIrQyxRQUFRL0M7cUJBQ1JnRCxnQkFBZ0JoRDtxQkFDaEJpRCxtQkFBbUJqRDtxQkFDbkJrRDt1QkFBc0JsRDtvQkFFMUI3RixpQkFBaUJnSjtvQkFFakIsU0FBU0E7cUJBQ0wsTUFBTTNJLGdCQUFnQjJJLFdBQVcsV0FDbEJBO3FCQUdmM0ksWUFBWUE7cUJBQ1pBLFlBQVlBO3FCQUNaQSx1QkFBdUJBO3FCQUN2QkEsaUNBQWlDQTtxQkFDakNBLGlDQUFpQ0E7cUJBQ2pDQSxtQkFBbUJBO3FCQUNuQkE7b0JBQ0o7b0JBRVUsSUFBTjRJLFFBQVFEO29CQUNaQzs4QkFBK0NyQixPQUMzQyxXQUFXYSxRQUFRYixPQUFPdkgsTUFEUDtvQkFJdkI0STs4QkFBaURoSixXQUFXaUo7c0JBQ2pELElBQUhDLEtBQUtsSixjQUFjdUIsT0FBT0EsT0FBT2dDLE9BQU92RDtzQkFDNUMsV0FBV3lJLFdBQVdRLFNBQVM3SSxNQUFNOEk7cUJBRmpCO29CQUt4QkY7OEJBQTZDQyxTQUN6QyxXQUFXUixXQUFXUSxTQUFTN0ksTUFEYjtvQkFJdEI0STtnQ0FDSSxXQUFXTixpQkFBaUJ0SSxNQUREO29CQUkvQjRJOzhCQUF5Q0csUUFDckMsV0FBV1IsTUFBTVEsUUFERDtvQkFJcEJIOzhCQUE2Q0ksTUFDekMsV0FBV2IsUUFBUWEsTUFBTWhKLE1BRFA7b0JBSXRCNEk7OEJBQStDSztzQkFDM0NBLEtBQUs5RixPQUFPOEY7c0JBRUQ7dUJBQVBDO3lCQUFTaEI7MkJBQVFsSTtvQ0FBMkJtSixNQUM1QyxHQUFJaEcsT0FBT2dHLGFBQWFGLElBQUksT0FDakJFLEtBRnVCO3NCQU10QyxPQUFPRCxVQUFVL0g7cUJBVEU7b0JBWXZCeUg7cUJBQStCUDtvQkFDL0JPO3FCQUE2QlA7b0JBQzdCTyxpQkFBaUJQO29CQUVqQk8sNEJBQTRCRjtvQkFDNUJFLHlCQUF5Qkg7b0JBQ3pCRyxzQkFBc0JKO21CQXhFSTs7Ozs7Ozs7Ozs7NEJBMEVrTmhELFNBQVE3RixRQUFPK0U7b0JBQzNQL0UsaUJBQWlCd0k7b0JBRWpCLFNBQVNBLFFBQVFhLE1BQU1JO3FCQUNuQixNQUFNcEosZ0JBQWdCbUk7c0JBQVUsV0FDakJBLFFBQVFhLE1BQU1JO3FCQUc3QnBKLFlBQVlnSjtxQkFDWmhKLGlCQUFpQmdKO3FCQUNqQmhKLGNBQWNnSjtxQkFDZGhKLHFCQUFxQm9KLFNBQVNqSTtvQkFDbEM7b0JBRUFnSDtvQkFDQUE7b0JBRUFBO2dDQUNJLDBCQUR5QjttQkFqQnNNOzs7NEJBcUJoTjNDLFNBQVE3RixRQUFPK0U7b0JBQ2xDO3FCQUFJd0QsVUFBVTFDO3FCQUNWZ0QsZ0JBQWdCaEQ7cUJBQ2hCaUQsbUJBQW1CakQ7cUJBQ25Ca0Q7dUJBQXNCbEQ7cUJBQ3RCNkQsZ0JBQWdCN0Q7cUJBRWhCOEQ7b0JBRUozSixpQkFBaUIwSTtvQkFFakIsU0FBU0EsV0FBV1EsU0FBU08sT0FBT3hKO3FCQUNoQyxNQUFNSSxnQkFBZ0JxSTtzQkFBYSxXQUNwQkEsV0FBV1E7cUJBR25CO3NCQUFIQyxLQUFLbEosY0FBY29CLFlBQVlzSSxTQUFVMUosYUFBYXVCO3FCQUUxRG5CO3NCQUFlOEksT0FBT1EsU0FBU25HLE9BQU8wRix5QkFBeUJBO3FCQUMvRDdJLGdCQUFnQkE7cUJBQ2hCQTtxQkFDQUE7cUJBQ0FBO3FCQUNBQSxrQkFBa0JtQjtxQkFDbEJuQjtxQkFDQUEscUJBQXFCb0osU0FBU2pJO3FCQUM5Qm5CLG9CQUFvQjhJO3FCQUNwQjlJO3FCQUVBLEdBQUlBLDBCQUNGQTtvQkFFTjtvQkFFQXFJO29CQUNBQTtvQkFFQUE7OEJBQWlFa0I7c0JBQzdELEdBQUlBLGtCQUNBQSw2QkFBNkJBO3NCQUdqQ3ZKLHFCQUFxQnVKO3NCQUNyQkEsbUJBQW1Cdko7c0JBRW5CLE9BQU91SjtxQkFSd0I7b0JBV25DbEI7OEJBQ21DbkIsTUFBTXNDO3NCQUdqQyxHQUFJdEMsaUJBQ0FBLDRCQUE0QkE7c0JBR3RCLElBQU51QyxRQUFRekosd0JBQXdCd0o7c0JBRXBDQSxvQkFBb0JySTtzQkFDcEJuQixnQkFBZ0J5SixTQUFTdkM7c0JBQ3pCQSxrQkFBa0JsSDtzQkFFbEIsT0FBT3dKO3FCQWJYO29CQWdCSm5COzhCQUFpRW5CO3NCQUduRCxJQUFOdUMsUUFBUXpKLHdCQUF3QmtIO3NCQUNwQ2xILHVCQUF1QnlKO3NCQUV2QnZDLGtCQUFrQi9GO3NCQUNsQixPQUFPK0Y7cUJBUHdCO29CQVVuQ21COzhCQUNtQ25CLE1BQU1zQztzQkFJakMsR0FBSXRDLGlCQUNBQSw0QkFBNEJBO3NCQUd0Qjt1QkFBTnVDO3lCQUFRRCxXQUFXckksUUFBUXFJLFdBQVd4STs7NEJBRXRDaEIsd0JBQXdCd0o7c0JBRTVCLEdBQUlDO3VCQUNBekosdUJBQXVCeUosVUFBVXZDOzt1QkFFakNsSCxxQkFBcUJrSDtzQkFHekJBLGtCQUFrQmxIO3NCQUNsQixPQUFPa0g7cUJBbkJYO29CQXNCSm1COzhCQUNxQ3pJLFdBQVdTLE1BQU1rSDtzQkFDOUM7dUJBQUltQyxTQUFTdkk7dUJBQ1R3SSxZQUFZdEo7dUJBQ1p1SixnQkFBZ0J2SjtzQkFDcEIsR0FBSXVKLG9CQUFvQjt1QkFDcEJGLFNBQVNySixlQUFldUo7dUJBQ3hCRCxZQUFZdEosWUFBWXVKOztzQkFFYjt1QkFBWEM7eUJBQWE3SixpQkFBaUJKOzZCQUFlSSxpQkFBaUJKO3NCQUNsRWlLLFdBQVdGLHFCQUFxQnBDLGVBQWVtQztxQkFUbkQ7b0JBWUpyQjs4QkFDcUN6SSxXQUFXUztzQkFDeEM7dUJBQUl3SixhQUFhN0osaUJBQWlCSjt1QkFDOUIySDt5QkFBUXNDLGNBQWNBLFdBQVd4SixTQUFTd0osV0FBV3hKO3NCQUN6RCxVQUFXa0gsb0JBQW9CLE9BQ3BCcEc7c0JBR1gsT0FBT29HO3FCQVBYO29CQVVKYzs4QkFDd0N6SSxXQUFXUztzQkFDNUIsSUFBWHdKLGFBQWE3SixpQkFBaUJKO3NCQUNsQyxHQUFJaUssWUFBWSxPQUNMQSxXQUFXeEo7cUJBSDFCO29CQU9KZ0k7OEJBQ3FDekksV0FBV1M7c0JBQ3pCLElBQVh3SixhQUFhN0osaUJBQWlCSjtzQkFDbEMsV0FBU2lLLGNBQWN4SixRQUFRd0o7cUJBRm5DO29CQUtKeEI7OEJBQW1FaEksTUFBTWtIO3NCQUNyRSxPQUFPdkgsb0JBQW9CbUIsTUFBTWQsTUFBTWtIO3FCQURQO29CQUlwQ2M7OEJBQW1FaEksTUFDL0QsT0FBT0wsb0JBQW9CbUIsTUFBTWQsTUFERDtvQkFJcENnSTs4QkFBeUVoSSxNQUNyRSxPQUFPTCx1QkFBdUJtQixNQUFNZCxNQUREO29CQUl2Q2dJOzhCQUFtRWhJLE1BQy9ELE9BQU9MLG9CQUFvQm1CLE1BQU1kLE1BREQ7b0JBSXBDZ0ksMkNBQTJDSztvQkFDM0NMLHdDQUF3Q0k7b0JBQ3hDSixxQ0FBcUNHO29CQUdyQ0gsd0NBQ0ksY0FEeUI7b0JBSTdCQTtnQ0FDSSxPQUFPZ0IsY0FBY3JKLE1BRE87b0JBSWhDcUk7OEJBQXVGeUI7c0JBQ25GLElBQUlDLFVBQVVELHVCQUNWRTtzQkFFSjlCO3dCQUFRbEk7aUNBQWdCbUo7eUJBQ3BCLEdBQUlBLG9CQUFxQjswQkFDckI7MkJBQUljLGdCQUFnQmQ7MkJBQ2hCZSxjQUFjRDswQkFFbEI7NEJBQUlGO3VDQUF3QkksTUFDeEIsT0FBT0Qsb0JBQW9CQyxjQURiOzJCQUdkSCxXQUFXYjs7d0JBUlQ7c0JBYWQsT0FBT2E7cUJBakJtQztvQkFvQjlDM0I7OEJBQW1GUTtzQkFDL0VBLFVBQVVBO3NCQUNBLElBQU5tQjtzQkFFSjlCO3dCQUFRbEk7aUNBQTJCbUo7eUJBQy9COzJCQUFJQTs7NkJBQXdCTixtQkFBbUJNLCtCQUErQk47MEJBQzFFbUIsV0FBV2I7d0JBRk07c0JBTXpCLE9BQU9hO3FCQVZpQztvQkFhNUMzQjs4QkFBMkQrQjtzQkFDdkQsT0FBT2xDOytCQUFRbEksZUFBZ0JtSixNQUMzQixPQUFPaUIsWUFBWWpCLEtBREY7O3FCQURPO21CQXRNdEI7Ozs7Ozs7NEJBNE1rSjNELFNBQVE3RixRQUFPK0U7b0JBQzVKLElBQVgyRCxhQUFhN0M7b0JBRWpCN0YsaUJBQWlCMkk7b0JBRWpCLFNBQVNBLGlCQUFpQmM7cUJBQ3RCLE1BQU1wSixnQkFBZ0JzSTtzQkFBbUIsV0FDMUJBO3FCQUdmdEk7cUJBQ0FBLGtCQUFrQm1CO3FCQUNsQm5CLHFCQUFxQm9KLFNBQVNqSTtvQkFDbEM7b0JBRUFtSDtvQkFDQUE7b0JBQ0FBO29CQUVBQSx5Q0FBMENEO29CQUMxQ0MsMENBQTBDRDtvQkFDMUNDLHlDQUEwQ0Q7b0JBRTFDQzs7c0JBRVEsT0FBT3RJO3lDQUE4Qm1KLE1BQ2pDLE9BQU9oRyxPQUFPZ0csTUFEUzs7cUJBRC9CO21CQXhCK0k7Ozs0QkE4QjNHM0QsU0FBUTdGLFFBQU8rRTtvQkFDdkQvRSxpQkFBaUJ5STtvQkFFakIsU0FBU0EsUUFBUWIsT0FBTzZCO3FCQUNwQixNQUFNcEosZ0JBQWdCb0ksVUFBVSxXQUNqQkEsUUFBUWI7cUJBR3ZCdkgsWUFBWXVIO3FCQUNadkgsY0FBY0E7cUJBQ2RBLHFCQUFxQm9KLFNBQVNqSTtvQkFDbEM7b0JBRUFpSDtvQkFDQUE7b0JBQ0FBO29CQUVBQSx3Q0FDSSxPQUFPcEksVUFEa0I7b0JBSTdCb0k7OEJBQXFEcUIsT0FBT2xILFFBQVFnRjtzQkFDaEU7dUJBQUk4QyxVQUFVcks7dUJBQ1ZzSyxPQUFPRCxxQkFBcUJaO3VCQUM1QmMsUUFBUUYsa0JBQWtCWixRQUFRbEgsUUFBUThIO3NCQUM5Q3JLLFlBQVlzSyxPQUFPL0MsUUFBUWdEO3NCQUMzQnZLLGNBQWNBO3FCQUxjO21CQXJCRDs7OzRCQTZCWndGLFNBQVE3RixRQUFPK0U7b0JBQ2xDL0UsaUJBQWlCNEk7b0JBRWpCLFNBQVNBLE1BQU1RLFFBQVM7b0JBRXhCUjs4QkFBc0RpQyxNQUFNQyxTQUFTQztzQkFDakUxSyxZQUFZd0s7c0JBQ1p4SyxlQUFleUs7c0JBQ2Z6SyxrQkFBa0IwSztxQkFITTtvQkFNNUJuQyw0Q0FBaUM7bUJBWHZCOzs7NEJBZVMvQyxTQUFRN0YsUUFBTytFO29CQUNsQy9FLGlCQUFpQjhJO29CQUVqQixTQUFTQSxpQkFBaUIrQixNQUFNRztxQkFDbkIsSUFBTHpELE9BQU9sSDtxQkFFWCxLQUFLa0gsZ0JBQ0RBO3FCQUdKLEtBQUtBLGVBQWVzRCxPQUNoQnRELGVBQWVzRDtxQkFHbkIsR0FBSXRELGVBQWVzRCxjQUFjRztzQkFDN0J6RCxlQUFlc0QsV0FBV0c7b0JBRWxDO21CQWpCVTs7OzRCQW1CU25GLFNBQVE3RixRQUFPK0U7b0JBQ2xDL0UsaUJBQWlCNkk7b0JBRWpCLFNBQVNBLGNBQWNvQztxQkFDbkIsSUFBSTFELE9BQU9sSCxNQUNQd0ssT0FBT0k7cUJBRVgsS0FBS0EsV0FDREEsWUFBWTFEO3FCQUdoQixLQUFLQSxnQkFDREE7cUJBR1UsSUFBVjJELFlBQVkzRCxlQUFlc0Q7cUJBRS9CLEdBQUlLO3NCQUFXLE9BQ0pBO3dDQUE0QkY7Z0NBQy9CQyxtQkFBbUIxRDtnQ0FDbkIsVUFBV3lEO2lDQUNQQSxTQUFTQzs7aUNBRVRELHFCQUFxQkM7K0JBTEo7cUJBVTdCLEdBQUkxRCxpQkFDQUEsOEJBQThCMEQ7b0JBRXRDO21CQS9CVTs7OzRCQWlDU3BGLFNBQVE3RixRQUFPK0U7b0JBQ2xDL0UsaUJBQWlCK0k7b0JBRWpCLFNBQVNBLG9CQUFvQjhCLE1BQU1HO3FCQUN0QixJQUFMekQsT0FBT2xIO3FCQUVYLEtBQUtrSCxnQkFBZ0I7cUJBSXJCLEtBQUtBLGVBQWVzRCxPQUFPO3FCQUkzQjtzQkFBSU0sT0FBTzVELGVBQWVzRDtzQkFDdEJmLFFBQVFxQixhQUFhSDtxQkFDekIsR0FBSWxCLGVBQ0FxQixZQUFZckI7b0JBRXBCO21CQW5CVTs7OzRCQXFCU2pFLFNBQVE3RixRQUFPK0U7b0JBQ3JCLElBQVRpRSxXQUFXbkQ7b0JBRWY3RixxQkFBcUJnSjttQkFIWDs7OzRCQUswQm5ELFNBQVE3RixRQUFPK0U7b0JBQ3pDLElBQU5xRyxRQUFRbEU7b0JBRVpsSCxpQkFBaUJxTDtvQkFFakIsU0FBU0EsZ0JBQWdCQyxPQUFPQztxQkFDNUIsa0JBQWtCRCxRQUNkQSxTQUFTQTtxQkFHYkEsUUFBUUYsV0FBV0U7cUJBRW5CLE1BQU1BLGFBQWM7c0JBQ2hCLElBQUk5QixPQUFPOEIsZUFDUEUsTUFBTUQsR0FBRy9CO3NCQUViLEdBQUlnQyxLQUFLLE9BQ0VBO3NCQUdYLEdBQUloQyxtQkFBbUJBO3VCQUNuQjhCLFFBQVFGLFdBQVc1Qix3QkFBd0I4Qjs7b0JBR3ZEO21CQXhCMkI7Ozs0QkEwQlJ6RixTQUFRN0YsUUFBTytFO29CQUNsQy9FLGlCQUFpQjBKO29CQUVBO3FCQUFiK0I7O29CQUVKLFNBQVMvQixjQUFjRjtxQkFDbkIsT0FBUUE7O3dCQUVBLE9BQU9rQyxXQUFXbEM7O3dCQUVsQixnQkFBZ0JBO2dDQUVoQixPQUFPbUMsaUJBQWlCbkM7O29CQUVwQztvQkFFQSxTQUFTbUMsaUJBQWlCcEU7cUJBQ3RCLElBQUlxRSxjQUVBQyxVQUFVdEU7cUJBRWQsR0FBSUE7c0JBQ0FzRSxVQUFVQTtxQkFHZEQ7NkJBQW1CQyxVQUFVQyxXQUFXdkUsUUFBUXdFLFdBQVd4RTtxQkFFM0QsR0FBSWtFLGtCQUFrQkk7c0JBQ2xCRDt5QkFDRztzQkFDSEE7c0JBRUEsR0FBSXJFO3VCQUNBcUU7eUJBQW1CQSxTQUFTckUsb0JBQW9CbUM7OEJBQ3pDbkMsb0JBQW9CQTt1QkFDM0JxRSxhQUFhRixXQUFXbkUsb0JBQW9CQTs4QkFDckNBLGdCQUNQcUUsYUFBYXJFO3NCQUdqQnFFLHFCQUFvQkM7O3FCQUd4QixPQUFPRDtvQkFDWDtvQkFFQSxTQUFTSSxXQUFXekUsTUFBTUk7cUJBQ2IsSUFBTGtELGNBQWN0RCxLQUFLSTtxQkFFdkIsR0FBSUEsbUJBQW1CbkIsWUFBWWU7c0JBQXdCO3FCQUkzRCxPQUFPQSxvQkFBb0JJOzs4QkFDdEJrRCxxQkFBcUJBO2dDQUFzQkE7K0JBQzVDbEQ7K0JBQXNCQTsrQkFBdUJBOytCQUM3Q0E7K0JBQXlCQTsrQkFBdUJBOytCQUEyQkE7b0JBQ25GO29CQUVBLFNBQVNzRSxRQUFRQztxQkFDYixVQUFXQSxxQkFBcUIsT0FBT0E7cUJBQzlCLElBQUxDO3FCQUNKM0YsWUFBWTBGO2dDQUEwQnZFO3dCQUN4QixJQUFOQyxRQUFRc0UsT0FBT3ZFO3dCQUNuQkE7eUJBQU1BOzhDQUErQnlFLEdBQ2pDLGFBQWFBLGdCQURXO3dCQUc1QkQsUUFBUXhFLFlBQVlDO3VCQUxJO3FCQU81QixPQUFPdUU7b0JBQ1g7b0JBRUEsU0FBU0osV0FBV3hFO3FCQUNoQixJQUFJOEUsS0FBSzlFLGNBQ0wrRTtxQkFFSixRQUFTM0UsT0FBTzBFO3NCQUNaQyw0QkFBNkIzRSxZQUFZMEUsR0FBRzFFO3FCQUdoRCxPQUFPMkUsZUFBZUMsVUFBVUQ7b0JBQ3BDO29CQUVBLFNBQVNDLFVBQVVwQjtxQkFDQSxJQUFYakI7cUJBQ0ppQjtnQ0FBdUJxQjt3QkFDbkIsSUFBSTlMLE9BQU84TCxZQUNQNUUsUUFBUTRFO3dCQUVaLEdBQUk5TCxrQkFDQWtILFFBQVFxRSxRQUFRckU7d0JBR3BCc0M7MEJBQWdCeEosbUJBQW9CK0wscUJBQXFCN0U7dUJBUmhEO3FCQVdiLE9BQU9zQywwQkFBMEJBO29CQUNyQztvQkFFQSxTQUFTNEIsV0FBV3ZFO3FCQUNOLElBQU4rRTtxQkFDSixRQUFTM0UsT0FBT0o7c0JBQU0sR0FDZHlFLFdBQVd6RSxNQUFNSTt1QkFDakIyRSxrQkFBbUIzRSxZQUFZSixLQUFLSTtxQkFJNUMsUUFBU3dCLE1BQU01QjtzQkFBa0IsUUFDdEJtRixhQUFhbkYsaUJBQWlCNEIsSUFBSzt1QkFDMUM7d0JBQUl3RCxPQUFPcEYsaUJBQWlCNEIsSUFBSXVEO3dCQUM1QmhNLFFBQVFpTSxjQUFjQSwwQkFBMEJEO3VCQUNwREosa0JBQW1CNUwsYUFBYWlNOztxQkFJcEMsR0FBSXBGO3NCQUNBK0Usa0NBQW1DL0U7cUJBR3ZDLE9BQU8rRSxlQUFlQyxVQUFVRDtvQkFDcEM7b0JBRUEsU0FBU1osV0FBV2pHO3FCQUNSLElBQUpZO3FCQUVKLFVBQVdaO3NCQUNQWSxNQUFNWjs2QkFDQ0EsR0FDUFksTUFBTVo7cUJBR1YsT0FBT1k7O29CQUlYO29CQUVBLFNBQVNvRyxxQkFBcUJwRztxQkFDMUIsT0FBT3FGLFdBQVdyRjtvQkFDdEI7bUJBM0lVOzs7NEJBNklTUixTQUFRN0YsUUFBTytFO29CQUNsQztvQkFFQS9FOzhCQUFtQzRNLEdBQ2xDLGNBQWNBLGtCQUFrQkEsTUFBTXBMLEtBRHRCO21CQUhQOzs7NEJBT1NxRSxTQUFRN0YsUUFBTytFO29CQUNsQztxQkFBSThILGdCQUFnQjNGO3FCQUNoQjRGLFdBQVd0RztvQkFFZnhHLGlCQUFpQjZNLGlCQUFpQkU7b0JBRWxDLFNBQVNBLFFBQVFDO3FCQUNiLE9BQU9GLGNBQWNFO29CQUN6QjttQkFSVTs7OzRCQVVTbkgsU0FBUTdGLFFBQU8rRTtvQkFDeEIsSUFBTmtJLFFBQVFwSDtvQkFFWjdGLGlCQUFpQmlOO21CQUhQOzs7NEJBSzZCcEgsU0FBUTdGLFFBQU8rRTtvQkFDdEQ7cUJBQUltSSxXQUFXckg7cUJBQ1hzSCxTQUFTdEg7b0JBRWI3RixpQkFBaUJvTjtvQkFFakIsU0FBU0EsZ0JBQWdCNUQsTUFBTThDLE9BQU9lO3FCQUNsQyxRQUFTQyxZQUFZaEIsTUFBTztzQkFDVixJQUFWaUIsWUFBWWpCLE1BQU1nQjtzQkFFdEIsR0FBSUMsY0FBY2xNO3VCQUNkbU0sZUFBZWhFLE1BQU04RCxVQUFVQyxXQUFXRjs4QkFDbkNGLE9BQU9JLFdBQVk7dUJBQzFCQyxlQUFlaEUsTUFBTThELFVBQVVDLFdBQVdGO3VCQUMxQyxHQUFJRTt3QkFDQUE7MEJBQWUvRCxNQUNYOEQsVUFDQUQsV0FBV0EsU0FBU0MsWUFBWWpNOzs4QkFHcEM2TCxTQUFTSzt1QkFDVEUsWUFBWWpFLE1BQU04QyxPQUFPZSxVQUFVQyxVQUFVQzs7dUJBRTdDL0QsS0FBSzhELFlBQVlDOztvQkFJakM7b0JBRUEsU0FBU0MsZUFBZWhFLE1BQU04RCxVQUFVQyxXQUFXRjtxQkFDL0MsR0FBSUEsU0FBVTtzQkFDUSxJQUFkSyxnQkFBZ0JMLFNBQVNDO3NCQUU3QixLQUFLSCxPQUFPTzt1QkFBZ0IsR0FDcEJKO3dCQUEyQixRQUNsQkssWUFBWUQ7eUJBQ2pCbEUscUJBQXFCbUU7K0JBRWxCTDt3QkFBc0IsUUFDcEJ4SyxLQUFLNEssZUFDVmxFLFdBQVcxRztzQ0FFRDRLO3dCQUNkbEUsS0FBSzhEOzt3QkFFTDlELEtBQUs4RCxZQUFZOUw7OEJBRWRrTTt1QkFDUEEscUJBQXFCbEUsTUFBTThELFVBQVVDOztvQkFHakQ7b0JBRUEsU0FBU0U7cUJBQVlqRSxNQUFNOEMsT0FBT2UsVUFBVUMsVUFBVUM7cUJBQ2hDO3NCQUFkRyxnQkFBZ0JMLFdBQVdBLFNBQVNDLFlBQVlqTTtxQkFHcEQsR0FBSWlNLDBCQUEyQjtzQkFDM0IsUUFBU0ssWUFBWUosVUFBVzt1QkFDZCxJQUFWSyxZQUFZTCxVQUFVSTt1QkFFMUIsR0FBSUMsY0FBY3ZNO3dCQUNkbUkscUJBQXFCbUU7O3dCQUVyQm5FLGtCQUFrQm1FLFVBQVVDOztzQkFJcEM7O3FCQUdKO3VCQUFHRixpQkFBaUJSLFNBQVNROzBCQUN6QkcsYUFBYUgsbUJBQW1CRyxhQUFhTixXQUFZLENBQ3pEL0QsS0FBSzhELFlBQVlDLFdBQ2pCO3FCQUdKLEtBQUtMLFNBQVMxRCxLQUFLOEQsWUFDZjlELEtBQUs4RDtxQkFHSSxJQUFUUSxXQUFXUiw0QkFBNEJqTTtxQkFFM0MsUUFBUzBNLEtBQUtSLFVBQVc7c0JBQ1gsSUFBTjNGLFFBQVEyRixVQUFVUTtzQkFDdEJ2RSxLQUFLOEQsVUFBVVMsS0FBTW5HLFVBQVV2RyxZQUFheU0sV0FBV2xHOztvQkFFL0Q7b0JBRUEsU0FBU2lHLGFBQWFqRztxQkFDbEIsR0FBSXBCO3NCQUF1QixPQUNoQkEsc0JBQXNCb0I7NkJBQ3RCQTtzQkFBaUIsT0FDakJBOzZCQUNBQTtzQkFBbUIsT0FDbkJBO29CQUVmO21CQWpHOEI7Ozs0QkFtRzZCL0IsU0FBUTdGLFFBQU8rRTtvQkFDMUU7cUJBQUlzRCxXQUFXeEM7cUJBRVh1SCxrQkFBa0J2SDtxQkFFbEJtSSxVQUFVbkk7cUJBQ1ZvSSxVQUFVcEk7cUJBQ1ZxSSxXQUFXckk7cUJBQ1hzSSxjQUFjdEk7b0JBRWxCN0YsaUJBQWlCZ0c7b0JBRWpCLFNBQVNBLGNBQWNvSSxPQUFPQztxQkFDMUI7c0JBQUlDLE1BQU1ELE9BQU9BLGlCQUFpQmhHLFdBQVdBO3NCQUN6Q2tHLE9BQU9GLE9BQU9BLFlBQVk3TTtxQkFFOUI0TSxRQUFRRCxZQUFZQztxQkFFcEIsR0FBSUYsU0FBU0U7c0JBQVEsT0FDVkE7NkJBQ0FILFFBQVFHO3NCQUFRLE9BQ2hCRSxtQkFBbUJGOytCQUNsQkosUUFBUUksT0FBUTtzQkFDeEIsR0FBSUc7dUJBQ0FBLDZDQUE2Q0g7c0JBRWpELE9BQU81TTs7cUJBR1g7c0JBQUlnSTt3QkFBUTRFLG9CQUFvQjVNOzJCQUM1QjhNLGtCQUFrQkY7MkJBQ2xCRSxvQkFBb0JGLGlCQUFpQkE7c0JBRXJDOUIsUUFBUThCO3FCQUNaaEIsZ0JBQWdCNUQsTUFBTThDO3FCQUVULElBQVRrQyxXQUFXSjtxQkFFZixJQUFXLElBQUZ0TCxPQUFPQSxJQUFJMEwsaUJBQWlCMUwsSUFBSztzQkFDeEIsSUFBVjJMLFlBQVl6SSxjQUFjd0ksU0FBUzFMLElBQUl1TDtzQkFDM0MsR0FBSUksV0FDQWpGLGlCQUFpQmlGOztxQkFJekIsT0FBT2pGO29CQUNYO21CQTlDa0Q7Ozs7Ozs7OzRCQWdEeUgzRCxTQUFRN0YsUUFBTytFO29CQU85SyxJQUFSMko7b0JBRUoxTyxpQkFBaUIyTztvQkFFakIsU0FBU0EsU0FBU0MsVUFBVUMsTUFBTUMsU0FBU3hEO3FCQUN2QyxLQUFLd0QsV0FBV0E7c0JBQXNCO3lCQUUvQjtzQkFDSEEsYUFBYUM7c0JBQ2IsT0FBT0MsUUFBUUosVUFBVUMsTUFBTUMsU0FBU3hEOztvQkFFaEQ7b0JBRUEsU0FBUzBELFFBQVFKLFVBQVVDLE1BQU1DLFNBQVN4RCxPQUFPMkQ7cUJBQzdDM0QsUUFBUUE7cUJBR1IsR0FBSXNELFNBQVU7c0JBQ1YsR0FBSU0sYUFBYUosU0FBU0csV0FBV0E7dUJBQ2pDM0QsTUFBTTJELGFBQWFMO3NCQUdULElBQVZPLFlBQVlOO3NCQUVoQixHQUFJTSxVQUFXO3VCQUVJLElBQVhDLGFBQWFSO3VCQUVqQixJQUFXLElBQUY5TCxPQUFPQSxJQUFJK0wsc0JBQXNCL0wsSUFBSzt3QkFDM0NtTTt3QkFFQTt5QkFBSUksU0FBU0YsVUFBVXJNLE1BQU00TDt5QkFDekJZLFlBQVlMLGFBQWFJO3dCQUc3QixHQUFJSCxhQUFhSixTQUFTRyxXQUFXSzt5QkFDakNOLFFBQVFJLFdBQVd0TSxJQUFJdU0sUUFBUVAsU0FBU3hELE9BQU8yRDt3QkFHbkRBLFlBQVlLOzs7O3FCQUt4QixPQUFPaEU7b0JBQ1g7b0JBR0EsU0FBUzRELGFBQWFKLFNBQVNuRSxNQUFNQztxQkFDakMsR0FBSWtFLHNCQUFzQjtxQkFJMUI7c0JBQUlTO3NCQUNBQyxXQUFXVjtzQkFDWFc7c0JBQ0FDO3FCQUVKLE1BQU9ILFlBQVlDLFNBQVU7c0JBQ3pCQyxnQkFBaUJELFdBQVdEO3NCQUM1QkcsY0FBY1osUUFBUVc7c0JBRXRCLEdBQUlGLGFBQWFDO3VCQUFVLE9BQ2hCRSxlQUFlL0UsUUFBUStFLGVBQWU5RTs4QkFDdEM4RSxjQUFjL0U7dUJBQ3JCNEUsV0FBV0U7OEJBQ0hDLGNBQWM5RTt1QkFDdEI0RSxXQUFXQzs7dUJBQ1I7O3FCQUtYO29CQUNKO29CQUVBLFNBQVNWLFVBQVVuSixHQUFHK0osR0FDbEIsT0FBTy9KLElBQUkrSixZQUNmO21CQXJGa0s7Ozs0QkF1Ri9JOUosU0FBUTdGLFFBQU8rRTtvQkFDbEM7cUJBQUlxSSxrQkFBa0J2SDtxQkFFbEJxSSxXQUFXckk7cUJBQ1grSixTQUFTL0o7cUJBRVRnSyxlQUFlaEs7b0JBRW5CN0YsaUJBQWlCOFA7b0JBRWpCLFNBQVNBLFdBQVdDLFFBQVFDLFNBQVNDO3FCQUNqQztzQkFBSXBGLE9BQU9rRjtzQkFDUEcsUUFBUUg7c0JBQ1I5QyxRQUFROEM7cUJBRVosT0FBUWxGOzRCQUNDK0U7d0JBQ0QsT0FBT08sV0FBV0gsU0FBU0U7NEJBQzFCTjt3QkFDRCxPQUFPUSxXQUFXSixTQUFTL0MsT0FBT2dEOzRCQUNqQ0w7d0JBQ0QsT0FBT1MsWUFBWUwsU0FBU0UsT0FBT2pELE9BQU9nRDs0QkFDekNMO3dCQUNELE9BQU9VLFlBQVlOLFNBQVNFLE9BQU9qRCxPQUFPZ0Q7NEJBQ3pDTDt3QkFDRCxPQUFPVyxXQUFXUCxTQUFTRSxPQUFPakQsT0FBT2dEOzRCQUN4Q0w7d0JBQ0RZLGdCQUFnQlIsU0FBUy9DLFFBQ3pCLE9BQU8rQzs0QkFDTko7d0JBQ0R4QyxnQkFBZ0I0QyxTQUFTL0MsT0FBT2lEO3dCQUNoQyxPQUFPRjs0QkFDTko7d0JBQ0QsT0FBT2E7aUNBQVlUO2lDQUNmQyxvQkFBb0JELFNBQVMvQyxPQUFPZ0Q7Z0NBRXhDLE9BQU9EOztvQkFFbkI7b0JBRUEsU0FBU0csV0FBV0gsU0FBU0U7cUJBQ1YsSUFBWFEsYUFBYVY7cUJBRWpCLEdBQUlVLFlBQ0FBLHVCQUF1QlY7cUJBRzNCVyxjQUFjWCxTQUFTRTtxQkFFdkIsT0FBTzFPO29CQUNYO29CQUVBLFNBQVM0TyxXQUFXTSxZQUFZUixPQUFPRDtxQkFDdkIsSUFBUlcsVUFBVVgscUJBQXFCQyxPQUFPRDtxQkFFMUMsR0FBSVMsWUFDQUEsdUJBQXVCRTtxQkFHM0IsT0FBT0Y7b0JBQ1g7b0JBRUEsU0FBU0w7cUJBQVlMLFNBQVNhLFdBQVdDLE9BQU9iO3FCQUM1QyxJQUFJVztxQkFFSixHQUFJWix1QkFBd0I7c0JBQ3hCQSx1QkFBdUJBLGdCQUFnQmM7c0JBQ3ZDRixVQUFVWjs7eUJBQ1A7c0JBQ1ksSUFBWFUsYUFBYVY7c0JBQ2pCWSxVQUFVWCxxQkFBcUJhLE9BQU9iO3NCQUV0QyxHQUFJUyxjQUFjRSxZQUFZWjt1QkFDMUJVLHdCQUF3QkUsU0FBU1o7O3FCQUl6QyxPQUFPWTtvQkFDWDtvQkFFQSxTQUFTTjtxQkFBWU4sU0FBU2EsV0FBV0UsUUFBUWQ7cUJBQzdDLElBQUllLFdBQVduQixhQUFhZ0IsV0FBV0UsU0FDbkNIO3FCQUVKLEdBQUlJO3NCQUNBSixVQUFVRyxjQUFjRixXQUFXYixZQUFZQTs7c0JBRS9DWSxVQUFVWCxxQkFBcUJjLFFBQVFkO3FCQUc1QixJQUFYUyxhQUFhVjtxQkFFakIsR0FBSVUsY0FBY0UsWUFBWVo7c0JBQzFCVSx3QkFBd0JFLFNBQVNaO3FCQUdyQyxLQUFLZ0IsVUFDREwsY0FBY1gsU0FBU2E7cUJBRzNCLE9BQU9EO29CQUNYO29CQUVBLFNBQVNMO3FCQUFXUCxTQUFTYSxXQUFXWCxPQUFPRDtxQkFDM0M7c0JBQUlTLGFBQWFWO3NCQUNiWSxVQUFVWCxxQkFBcUJDLE9BQU9EO3FCQUUxQyxHQUFJUyxjQUFjRSxZQUFZWjtzQkFDMUJVLHdCQUF3QkUsU0FBU1o7cUJBR3JDLE9BQU9ZO29CQUNYO29CQUVBLFNBQVNELGNBQWNYLFNBQVNpQjtxQkFDNUIsVUFBV0EsNEJBQTRCL0MsU0FBUytDO3NCQUM1Q0EsVUFBVWpCO29CQUVsQjtvQkFFQSxTQUFTUSxnQkFBZ0JSLFNBQVNrQjtxQkFDOUI7c0JBQUk5QixhQUFhWTtzQkFDYm1CO3NCQUNBM0g7c0JBQ0E0SDtzQkFDQUM7cUJBRUosSUFBVyxJQUFGdk8sT0FBT0EsSUFBSW9PLHNCQUFzQnBPLElBQUs7c0JBQzNDc08sU0FBU0YsY0FBY3BPO3NCQUN2QjBHLE9BQU80RixXQUFXZ0M7c0JBQ2xCLEdBQUlBLFlBQ0FELE9BQU9DLGNBQWM1SDtzQkFFekJ3RyxvQkFBb0J4Rzs7cUJBR2IsSUFBUDVHLFNBQVN3TTtxQkFDYixJQUFXLElBQUZrQyxPQUFPQSxJQUFJSixzQkFBc0JJLElBQUs7c0JBQzNDRCxTQUFTSCxjQUFjSTtzQkFDdkI5SCxPQUFPMkgsT0FBT0U7c0JBRWRyQjt3QkFBcUJ4RyxNQUFNNkgsYUFBYXpPLFdBQVdwQixPQUFPNE4sV0FBV2lDOztvQkFFN0U7b0JBRUEsU0FBU1osWUFBWWMsU0FBU0M7cUJBQzFCO3VCQUFJRCxXQUFXQyxXQUFXRCxZQUFZQzswQkFBV0Q7c0JBQzdDQSxnQ0FBZ0NDLFNBQVNEO3FCQUc3QyxPQUFPQztvQkFDWDttQkF2SlU7Ozs7Ozs0QkF5SndHM0wsU0FBUTdGLFFBQU8rRTtvQkFDakk7cUJBQUlzRCxXQUFXeEM7cUJBQ1hrSCxVQUFVbEg7cUJBRVY0TCxTQUFTNUw7cUJBQ1Q4SSxXQUFXOUk7cUJBQ1g2TCxVQUFVN0w7b0JBQ2Q3RixpQkFBaUJpTjtvQkFFakIsU0FBU0EsTUFBTTJCLFVBQVUrQyxTQUFTMUI7cUJBQzlCQSxnQkFBZ0JBO3FCQUNoQkE7c0JBQXNCQSx1QkFBdUJBLHdCQUF3QmhEO3lCQUMvRGdEO3lCQUNBMkI7cUJBQ04zQix1QkFBdUJBLHdCQUF3QndCO3FCQUUvQyxPQUFPeEIsb0JBQW9CckIsVUFBVStDLFNBQVMxQjtvQkFDbEQ7b0JBRUEsU0FBUzJCLGVBQWVoRCxVQUFVK0MsU0FBUzFCO3FCQUMzQixJQUFSbkIsVUFBVStDLGFBQWFGO3FCQUUzQixHQUFJN0Msc0JBQXNCLE9BQ2ZGO3FCQUdYO3NCQUFJOUUsUUFBUTZFLFNBQVNDLFVBQVUrQyxXQUFXN0M7c0JBQ3RDZ0QsZ0JBQWdCbEQ7cUJBRXBCLEtBQUtxQiwwQkFBMEI2QixrQkFBa0J6SjtzQkFDN0M0SCx5QkFBeUI2QjtxQkFHN0IsSUFBVyxJQUFGaFAsT0FBT0EsSUFBSWdNLGdCQUFnQmhNLElBQUs7c0JBQ3ZCLElBQVZpUCxZQUFZakQsUUFBUWhNO3NCQUN4QjhMO3VCQUFXa0I7eUJBQVdsQjt5QkFDbEI5RSxNQUFNaUk7eUJBQ05KLFFBQVFJO3lCQUNSOUI7O3FCQUdSLE9BQU9yQjtvQkFDWDtvQkFFQSxTQUFTa0I7cUJBQVdsQixVQUFVb0IsU0FBU2dDLFdBQVcvQjtxQkFDOUMsS0FBS0QsU0FBUyxPQUNIcEI7cUJBR1gsSUFBSWdDO3FCQUVKLEdBQUk3RCxRQUFRaUY7c0JBQVksSUFDVCxJQUFGbFAsT0FBT0EsSUFBSWtQLGtCQUFrQmxQLElBQUs7dUJBQ3ZDOE4sVUFBVWMsUUFBUU0sVUFBVWxQLElBQUlrTixTQUFTQzt1QkFFekMsR0FBSUQsWUFBWXBCLFVBQ1pBLFdBQVdnQzs7eUJBR2hCO3NCQUNIQSxVQUFVYyxRQUFRTSxXQUFXaEMsU0FBU0M7c0JBRXRDLEdBQUlELFlBQVlwQixVQUNaQSxXQUFXZ0M7O3FCQUluQixPQUFPaEM7b0JBQ1g7b0JBRUEsU0FBU2lELGFBQWFGO3FCQUNOLElBQVI3QztxQkFFSixRQUFTbkgsT0FBT2dLO3NCQUFTLEdBQ2pCaEssYUFDQW1ILGFBQWFtRCxPQUFPdEs7cUJBSTVCLE9BQU9tSDtvQkFDWDttQkFoRnlHOzs7Ozs7OzRCQWtGSWpKLFNBQVE3RixRQUFPK0U7b0JBQy9HLElBQVRtSixXQUFXckk7b0JBRWY3RixpQkFBaUI2UDtvQkFFakIsU0FBU0EsYUFBYWpLLEdBQUcrSjtxQkFDckIsR0FBSXpCLFNBQVN0SSxNQUFNc0ksU0FBU3lCO3NCQUFJLGlCQUNkL0osZUFBZStKO2dDQUNsQi9KLFNBQVMrSjtnQ0FFVC9KLFdBQVcrSjtxQkFJMUI7b0JBQ0o7bUJBZm9HOzs7NEJBaUJ2RDlKLFNBQVE3RixRQUFPK0U7b0JBQzVEO29CQUVBL0UsaUJBQWlCa1M7b0JBRWpCLFNBQVNBLGNBQWNqUyxXQUFXMkg7cUJBQzlCLE1BQU12SCxnQkFBZ0I2UjtzQkFBZ0IsV0FDdkJBLGNBQWNqUyxXQUFXMkg7cUJBR3hDdkgsaUJBQWlCSjtxQkFDakJJLGFBQWF1SDtvQkFDakI7b0JBRUFzSzs4QkFBeUMxSSxNQUFNbUQsTUFBTXdGO3NCQUNqRDt3QkFBSUEsUUFBUUE7MkJBQ1JBLGVBQWU5UjsyQkFDZjhSLG1CQUFtQjlSO3VCQUFnQjtzQkFJdkNtSixvQkFBb0JuSixnQkFBZ0JzTSxNQUFNdE07cUJBUGY7b0JBVS9CNlI7OEJBQTJDMUksTUFBTW1ELE1BQU15RjtzQkFDbkQ7d0JBQUlBLFFBQVFBOzJCQUNSQSxtQkFBbUIvUjt1QkFBZ0I7c0JBSXZDO3VCQUFJNEosZ0JBQWdCMEM7dUJBQ2hCM0M7eUJBQVlDLHNCQUFxQjBDLFlBQVkxQyxxQkFBcUIwQztzQkFDdEVuRCx1QkFBdUJuSixnQkFBZ0IySjtxQkFSVjtvQkFXakNrSTttQkFuQ29DOzs7NEJBcUNqQnJNLFNBQVE3RixRQUFPK0U7b0JBQ2xDO29CQUVZLElBQVJ1QyxVQUFVekI7b0JBRWQ3RixpQkFBaUJxUztvQkFFakIsU0FBU0EsT0FBT3pLO3FCQUNaLE1BQU12SCxnQkFBZ0JnUyxTQUFTLFdBQ2hCQSxPQUFPeks7cUJBR3RCdkgsYUFBYXVIO29CQUNqQjtvQkFFQXlLOzhCQUFrQzdJLE1BQU04STtzQkFDcEMsSUFBSUMsS0FBS2pMLFFBQVFrQyxPQUNiOEQsV0FBV2dGO3NCQUVmQyxHQUFHakYsWUFBWWpOO3FCQUpLO29CQU94QmdTOzhCQUFtQzdJLE1BQU04STtzQkFDckMsSUFBSUMsS0FBS2pMLFFBQVFrQyxPQUNiOEQsV0FBV2dGO3NCQUVmQyxHQUFHakYsWUFBWWpNO3FCQUpPO21CQXRCaEI7Ozs0QkE2QnFCd0UsU0FBUTdGLFFBQU8rRTtvQkFDOUM7b0JBRUEvRSxpQkFBaUJ3UztvQkFFakIsU0FBU0EsWUFBWTVLO3FCQUNqQixNQUFNdkgsZ0JBQWdCbVM7c0JBQWMsV0FDckJBLFlBQVk1SztxQkFHM0J2SCxhQUFhdUg7b0JBQ2pCO29CQUVBNEs7OEJBQXVDaEosTUFBTThJO3NCQUN6QyxHQUFJOUksS0FBSzhJLGtCQUFrQmpTO3VCQUN2Qm1KLEtBQUs4SSxnQkFBZ0JqUztxQkFGQTttQkFiUDs7OzRCQW1CSHdGLFNBQVE3RixRQUFPK0U7b0JBQ2xDO29CQUVBO3FCQUFJZ0ksVUFBVWxIO3FCQUVWNE0sUUFBUTVNO3FCQUNSNk0sUUFBUTdNO3FCQUNSbUksVUFBVW5JO3FCQUNWb0ksVUFBVXBJO3FCQUNWcUksV0FBV3JJO3FCQUNYc0gsU0FBU3RIO3FCQUNUOE0sV0FBVzlNO3FCQUVYK00sV0FBVy9NO3FCQUNYZ04sY0FBY2hOO3FCQUNkaU4sU0FBU2pOO29CQUViN0YsaUJBQWlCK1M7b0JBRWpCLFNBQVNBLEVBQUU3SixTQUFTNEMsWUFBWTBDO3FCQUM1QixJQUFJWSxpQkFDQTRELEtBQUsxRyxPQUFPM0UsS0FBSzFIO3FCQUVyQixLQUFLdU8sWUFBWXlFLFdBQVduSCxZQUFhLENBQ3JDMEMsV0FBVzFDLFlBQ1hRO3FCQUdKQSxRQUFRQSxTQUFTUjtxQkFDakJrSCxNQUFNSixTQUFTMUosU0FBU29EO3FCQUd4QixHQUFJQSw0QkFBNkI7c0JBQzdCM0UsTUFBTTJFO3NCQUNOQSxZQUFZakw7O3FCQUloQixHQUFJaUwsa0NBQW1DO3NCQUNuQ3JNLFlBQVlxTTtzQkFDWkEsa0JBQWtCakw7O3FCQUl0Qjt1QkFBSTJSLHFCQUNDL1M7MEJBQ0RxTTswQkFDQUEsZ0JBQWdCakw7NEJBQ2Y4TCxPQUFPYjtzQkFFUkEsY0FBY3VHLFlBQVl2RztxQkFHOUI0RyxvQkFBb0I1RztxQkFFcEIsR0FBSWtDLGFBQWFuTixhQUFhbU4sYUFBYWhOO3NCQUN2QzJSLFNBQVMzRSxVQUFVWSxZQUFZNEQsS0FBSzFHO3FCQUl4QyxXQUFXbUcsTUFBTU8sS0FBSzFHLE9BQU84QyxZQUFZekgsS0FBSzFIO29CQUNsRDtvQkFFQSxTQUFTa1QsU0FBUy9HLEdBQUdnRCxZQUFZNEQsS0FBSzFHO3FCQUNsQyxVQUFXRjtzQkFDUGdELG9CQUFvQnNELE1BQU10RztvQ0FDWkE7c0JBQ2RnRCxvQkFBb0JzRCxNQUFNbFAsT0FBTzRJOzZCQUMxQmdILFFBQVFoSDtzQkFDZmdELGdCQUFnQmhEOzZCQUNUVyxRQUFRWDtzQkFBSSxJQUNSLElBQUZ0SixPQUFPQSxJQUFJc0osVUFBVXRKO3VCQUMxQnFRLFNBQVMvRyxFQUFFdEosSUFBSXNNLFlBQVk0RCxLQUFLMUc7NkJBRTdCRixNQUFNNUssUUFBUTRLLE1BQU0vSztzQkFBVzs7c0JBRW5DLE1BQ0dnUzs4Q0FDYWpIO3NEQUVGNEcsaUJBQ0cxRztvQkFJNUI7b0JBRUEsU0FBUzRHLG9CQUFvQjVHO3FCQUN6QixRQUFTZ0IsWUFBWWhCO3NCQUFPLEdBQ3BCQSxxQkFBcUJnQixVQUFXO3VCQUN0QixJQUFOMUYsUUFBUTBFLE1BQU1nQjt1QkFFbEIsR0FBSUgsT0FBT3ZGLFFBQVE7dUJBSW5CLEdBQUkwRjt3QkFFQWhCLE1BQU1nQixZQUFZd0YsT0FBT2xMOztvQkFJekM7b0JBRUEsU0FBU3dMLFFBQVF4RztxQkFDYixPQUFPb0IsUUFBUXBCLE1BQU1xQixRQUFRckIsTUFBTXNCLFNBQVN0QjsrQkFBTStGLFNBQVMvRjtvQkFDL0Q7b0JBRUEsU0FBU3FHLFdBQVdyRztxQkFDaEIsY0FBY0Esa0JBQWtCRyxRQUFRSCxNQUFNd0csUUFBUXhHO29CQUMxRDtvQkFFQSxTQUFTeUcseUJBQXlCaEs7cUJBQ3RCLElBQUppSyxVQUFVeE47cUJBRWR3TjtxQkFDQUE7Ozs7d0JBR0lDLFlBQVlsSzs7O3dCQUdaa0ssWUFBWWxLO3FCQUNaOztxQkFFSmlLLG9CQUFvQmpLO3FCQUNwQmlLLGtCQUFrQmpLO3FCQUVsQixPQUFPaUs7b0JBQ1g7b0JBRUEsU0FBU0MsWUFBWXZHO3FCQUNqQixJQUNJLE9BQU93RyxlQUFleEcsS0FBS3hMOzJCQUN0QjZELEdBQ0wsT0FBTzdCLE9BQU93SjtvQkFFdEI7bUJBeklVOzs7Ozs7Ozs7Ozs7OzRCQTJJb1FuSCxTQUFRN0YsUUFBTytFO29CQUM3UjtvQkFFQTtxQkFBSTBPLFFBQVE1TjtxQkFFUjZOO3FCQUNBQztvQkFFSjNULGlCQUFpQjRTO29CQUVqQixTQUFTQSxTQUFTSSxLQUFLMUc7cUJBQ25CLEtBQUswRyxLQUFLO3FCQUlWO3NCQUFJWSxTQUFTdEg7c0JBRVR1SCxXQUFXSixNQUFNVCxLQUFLVTtzQkFDdEJ4SyxVQUFVMUg7cUJBRWQsR0FBSW1TLGdCQUFnQkUsY0FDaEIzSztxQkFHSixJQUFJa0IsU0FBUzBKLE1BQU1qSixNQUFNL0g7cUJBRXpCLElBQUtBLE9BQU9BLElBQUkrUSxpQkFBaUIvUSxJQUFLO3NCQUNsQ2dSLE9BQU9ELFNBQVMvUTtzQkFFaEIsS0FBS2dSLE1BQU07c0JBSVhqSixPQUFPaUo7c0JBRVAsS0FBSzVLO3VCQUNEQSxVQUFVNEs7OEJBQ0hqSixhQUFjO3VCQUNyQlQsVUFBVUE7dUJBQ1ZBLGFBQWEwSixrQkFBa0JBOzs4QkFDeEJqSixnQkFBZ0IrSTt1QkFDdkJ0SCxXQUFXd0gsa0JBQWtCQTs7cUJBSXJDLEdBQUkxSixRQUFTO3NCQUNULEdBQUlrQyxpQkFDQWxDLGFBQWFrQztzQkFHakJBLGtCQUFrQmxDOztxQkFHdEIsT0FBT2tDLGtCQUFrQnBELFVBQVVBO29CQUN2QzttQkF0RHFROzs7NEJBd0RqT3JELFNBQVE3RixRQUFPK0U7b0JBQ25EO29CQUVBO3FCQUFJZ1Asb0JBQW9CdlM7cUJBQ3BCd1M7cUJBQ0FDO3FCQUNBQztxQkFJQUM7aUNBQ1NKO3lDQUNRQTtzQ0FDSEE7b0NBQ0ZBOzhDQUNVQTtzQ0FDUkE7cUNBQ0RBO3VDQUNFQTtrQ0FDTEE7eUNBQ09BO3lDQUNBQTttQ0FDTkE7cUNBQ0VBO3lDQUNJQTt1Q0FDRkE7MENBQ0dBO2dDQUNWQTtpQ0FDQ0E7Z0NBQ0RBOzhCQUNGQTtvQ0FDTUE7c0NBQ0VBO2lDQUNMQTtnQ0FDREE7cUNBQ0tBO3FDQUNBQTt5Q0FDSUE7aUNBQ1JBOytDQUNjQTt1REFDUUE7eUNBQ2RBOzJDQUNFQTttQ0FDUkE7NkNBQ1VBOzRDQUNEQTtrQ0FDVkE7OEJBQ0pBOzhCQUNBQTs2QkFDREE7b0NBQ09BO3lDQUNLQTttQ0FDTkE7MkNBQ1FBO3FDQUNOQTttQ0FDRkE7bUNBQ0FBOzZDQUNVQTsrQkFDZEE7OEJBQ0RBOzhCQUNBQTtvQ0FDTUE7b0NBQ0FBO3FDQUNDQTs2Q0FDUUE7K0JBQ2RBO29DQUNLQztpQ0FDSEQ7b0NBQ0dBO3FEQUNpQkE7Z0NBQ3JCQTt3Q0FDUUE7cUNBQ0hBO2tDQUNIQTtxQ0FDR0E7dUNBQ0VBO3VDQUNBQTt5Q0FDRUE7MENBQ0NBO3FDQUNMQTt1Q0FDRUE7cUNBQ0ZBOzRDQUNPQTt3Q0FDSkE7c0NBQ0ZBO3dDQUNFQTt1Q0FDREE7a0NBQ0xBO2dDQUNGQTs4QkFDRkE7OEJBQ0FBOzhCQUNBQTs4QkFDQUE7c0NBQ1FBO3dEQUNrQkE7c0RBQ0ZBO29DQUNsQkE7NkNBQ1NBO3lDQUNKQTttQ0FDTkE7bUNBQ0FBO2tDQUNEQTt1Q0FDS0E7MENBQ0dBOzBDQUNBQTs4QkFDWkE7dUNBQ1NBOzJDQUNJQTs4QkFDYkE7K0JBQ0NBOzZDQUNjQTtxQ0FDUkE7NkJBQ1JBOzhCQUNDQTs4QkFDQUE7OEJBQ0FBOzhCQUNBQTt3Q0FDVUE7NENBQ0lBO21DQUNUQTtxQ0FDRUE7c0NBQ0NBO29DQUNGQTtnQ0FDSkE7d0NBQ1FBOzBDQUNFQTswQ0FDQUE7NkNBQ0dBO2lDQUNaQTtzQ0FDS0E7c0NBQ0FBO3dDQUNFQTt3Q0FDQUE7dUNBQ0RBO3VDQUNBQTtnQ0FDUEE7NENBQ1lBO3FDQUNQQTt3Q0FDR0E7K0JBQ1RBO2lDQUNFQTtrREFDaUJBO2lEQUNEQTtxQ0FDWkE7cUNBQ0FBO2tDQUNIQTsrQkFDSEE7Z0NBQ0NBO2dDQUNBQTtvQ0FDSUE7eUNBQ0tBOzBDQUNDQTtvQ0FDTkE7b0NBQ0FBO29DQUNBQTtxQ0FDQ0E7a0NBQ0hBO3VDQUNLQTt3Q0FDQ0E7c0NBQ0ZBO29DQUNGQTtrQ0FDRkE7bUNBQ0NBO29DQUNDQTtpQ0FDSEE7a0NBQ0NBO3VDQUNLQTtrQ0FDTEE7b0NBQ0VBO21DQUNEQTs2Q0FDVUE7OENBQ0NBO29DQUNWQTtnQ0FDSkE7c0NBQ01BOytDQUNTQTs0Q0FDSEE7d0NBQ0pBO2lDQUNQQTt5Q0FDUUE7MENBQ0NBO2tDQUNSQTtxQ0FDR0E7cUNBQ0FBO3FDQUNBQTt5Q0FDSUE7K0NBQ01BOzBDQUNMQTtxQ0FDTEE7b0NBQ0RBOzZCQUNQQTtrQ0FDS0E7Z0NBQ0ZBO2dDQUNBQTsrQkFDREE7NENBQ2FBO3VDQUNMQTtxQ0FDRkE7OENBQ1NBOzRDQUNGQTt5Q0FDSEE7MkNBQ0VBO29DQUNQQTttQ0FDREE7a0NBQ0RBOytCQUNIQTtnQ0FDQ0E7a0NBQ0VBOzhCQUNKQTs4QkFDQUE7aUNBQ0dBO2dDQUNEQTsyQ0FDV0E7aUNBQ1ZBO3dDQUNPQTttQ0FDTEE7NENBQ1NBOzRDQUNBQTt3Q0FDSkE7dUNBQ0RBO3dDQUNDQTtpQ0FDUEE7aUNBQ0FBO3VDQUNNQTtzQ0FDREE7d0NBQ0VBO2tEQUNVQTttREFDQ0E7a0NBQ2pCQTtrQ0FDQUE7NENBQ1VBOzZDQUNDQTswQ0FDSEE7MkNBQ0NBOzZDQUNFQTswQ0FDSEE7d0NBQ0ZBO3dDQUNBQTt3Q0FDQUE7K0NBQ09BO3NDQUNUQTt5Q0FDR0E7Z0RBQ09BOzBDQUNOQTt1Q0FDSEE7a0NBQ0xBO21DQUNDQTttQ0FDQUE7dUNBQ0lBOzJDQUNJQTswQ0FDREE7c0NBQ0pBO3lDQUNHQTtpQ0FDUkE7OEJBQ0hBO3FDQUNPQTs2Q0FDUUE7Z0NBQ2JBO2tDQUNFQTs4QkFDSkE7OEJBQ0FBOzhDQUNnQkE7K0NBQ0NBO21DQUNaQTt3Q0FDS0E7eUNBQ0NBO3dDQUNEQTt3Q0FDQUE7cUNBQ0hBO3lDQUNJQTswQ0FDQ0E7a0NBQ1JBO21DQUNDQTtzQ0FDR0E7eUNBQ0dBO3lDQUNBQTttQ0FDTkE7c0NBQ0dBO3NDQUNBQTtpQ0FDTEE7a0NBQ0NBO3dDQUNNQTt3Q0FDQUE7NkJBQ1hBO29DQUNPQTs4QkFDTkE7OEJBQ0FBOzRDQUNjQTt5Q0FDSEU7eUNBQ0FBO3NDQUNIQTtzQ0FDQUE7c0NBQ0FBO3VDQUNDQTtzQ0FDREE7b0NBQ0ZDO2tDQUNGQTtvQ0FDRUE7cUNBQ0NBOzZCQUNSSDs4QkFDQ0E7OEJBQ0FBOzRDQUNjQTs2QkFDZkE7c0NBQ1NBO29CQUdsQi9ULGlCQUFpQm9VO29CQUVqQixTQUFTQSxzQkFBc0J4TTtxQkFDN0IsR0FBSXVNLDhCQUE4QnZNO3NCQUFRLE9BQ2pDdU0sZUFBZXZNO29CQUUxQjttQkF6VDJCOzs7NEJBMlRSL0IsU0FBUTdGLFFBQU8rRTtvQkFDbEM7b0JBRUE7cUJBQUlnSSxVQUFVbEg7cUJBRVZrTixJQUFJbE47cUJBR0p1Tyx3QkFBd0J2TztxQkFDeEJ3TyxnQkFBZ0J4TztxQkFFaEJ5TztvQkFFSnRVLGlCQUFpQnVVO29CQUVqQixTQUFTQSxJQUFJckwsU0FBUzRDLFlBQVkwQztxQkFDOUIsS0FBS0EsWUFBWXlFLFdBQVduSCxZQUFhLENBQ3JDMEMsV0FBVzFDLFlBQ1hBOztxQkFHSkEsYUFBYUE7cUJBR2JBLHVCQUF1QndJO3FCQUVSO3NCQUFYcEs7d0JBQWE0QiwwQkFBMEJBO3FCQUUzQyxRQUFTbkUsT0FBT21FLFdBQVk7c0JBQ3hCLEtBQUtBLDBCQUEwQm5FLE1BQU07c0JBSXZCLElBQVYxSCxZQUFZbVUsc0JBQXNCek07c0JBRXRDLEdBQUkxSCxjQUFjb0IsV0FBVztzQkFJbkIsSUFBTnVHLFFBQVFrRSxXQUFXbkU7c0JBRXZCOytCQUFXQyw2QkFDQUE7a0NBQ0FBO3VCQUNUO3NCQUlGLEdBQUkzSCxjQUFjdUIsS0FBTTt1QkFDcEJzSyxXQUFXbkUsT0FBTzBNLGNBQWNwVSxXQUFXMkg7dUJBQzNDOztzQkFHSnNDLFdBQVd2QyxPQUFPQztzQkFDbEJrRSxXQUFXbkUsT0FBT3RHOztxQkFHdEIsT0FBTzBSLEVBQUU3SixTQUFTNEMsWUFBWTBDO29CQUNsQztvQkFFQSxTQUFTeUUsV0FBV3JHO3FCQUNoQixjQUFjQSxrQkFBa0JHLFFBQVFIO29CQUM1QzttQkE5RFU7Ozs7Ozs0QkFnRW1HL0csU0FBUTdGLFFBQU8rRTtvQkFDNUg7cUJBQUlpSixVQUFVbkk7cUJBQ1ZvSSxVQUFVcEk7cUJBQ1ZxSSxXQUFXckk7cUJBQ1gyTyxVQUFVM087b0JBRWQ3RixpQkFBaUJtTztvQkFFakIsU0FBU0EsWUFBWXZJLEdBQUcrSjtxQkFDcEIsSUFBSThFLFlBQVk3TyxHQUNaOE8sWUFBWS9FO3FCQUVoQixHQUFJNkUsUUFBUTdFLElBQ1IrRSxZQUFZQyxZQUFZaEYsR0FBRy9KO3FCQUcvQixHQUFJNE8sUUFBUTVPLElBQ1I2TyxZQUFZRSxZQUFZL08sR0FBR3BFO3FCQUcvQixXQUNPaVQsY0FDQUM7b0JBRVg7b0JBRUEsU0FBU0MsWUFBWUMsT0FBT3ZIO3FCQUNOLElBQWR3SCxnQkFBZ0JEO3FCQUVwQixLQUFLQztzQkFDREEsZ0JBQWdCRCxjQUFjQSxhQUFhdkg7cUJBRy9DOzt3QkFBTVcsUUFBUTZHLGtCQUNONUcsUUFBUTRHOzBCQUNSM0csU0FBUzJHO3NCQUFpQixVQUNwQi9PO3FCQUdkLE9BQU8rTztvQkFDWDttQkF4Q29HOzs7Ozs7NEJBMENqQmhQLFNBQVE3RixRQUFPK0U7b0JBQ2xHL0UsaUJBQWlCd1U7b0JBRWpCLFNBQVNBLFFBQVFsUCxHQUNiLE9BQU9BLEtBQUtBLG1CQUNoQjttQkFMMEU7Ozs0QkFPdkRPLFNBQVE3RixRQUFPK0U7b0JBQ2xDL0UsaUJBQWlCbU47b0JBRWpCLFNBQVNBLE9BQU8ySDtxQkFDWixPQUFPQTs7cUNBQ0dBO2tDQUE2QkE7O3FDQUM3QkE7bUNBQStCQTtvQkFDN0M7bUJBUFU7Ozs0QkFTU2pQLFNBQVE3RixRQUFPK0U7b0JBQ3RCLElBQVJnRCxVQUFVbEM7b0JBRWQ3RixpQkFBaUIrVTtvQkFFakIsU0FBU0EsY0FBY25JO3FCQUNuQixPQUFPQSxLQUFLQTsrQkFBNEJBLGNBQWM3RTtvQkFDMUQ7bUJBUFU7Ozs0QkFTdUJsQyxTQUFRN0YsUUFBTytFO29CQUNwQyxJQUFSZ0QsVUFBVWxDO29CQUVkN0YsaUJBQWlCZ1Y7b0JBRWpCLFNBQVNBLGNBQWNwSTtxQkFDbkIsT0FBT0EsS0FBS0E7K0JBQTRCQSxjQUFjN0U7b0JBQzFEO21CQVB3Qjs7OzRCQVNTbEMsU0FBUTdGLFFBQU8rRTtvQkFDaEQvRSxpQkFBaUJrTztvQkFFakIsU0FBU0EsU0FBUytDLEdBQ2QsT0FBT0EsS0FBS0Esb0JBQ2hCO21CQUx3Qjs7OzRCQU9McEwsU0FBUTdGLFFBQU8rRSxTQUNsQy9FLHFCQURVOzs7NEJBR1M2RixTQUFRN0YsUUFBTytFO29CQUNsQztxQkFBSWdELFVBQVVsQztxQkFDVm1JLFVBQVVuSTtxQkFDVnFJLFdBQVdySTtxQkFDWDJPLFVBQVUzTztxQkFDVm9QLFVBQVVwUDtvQkFFZDdGLGlCQUFpQmtWO29CQUVqQixJQUFJQyxtQkFDQUM7b0JBRUosU0FBU0Y7cUJBQVloTSxTQUFTNEMsWUFBWTBDLFVBQVU3RyxLQUFLMUg7cUJBQ3JESSxlQUFlNkk7cUJBQ2Y3SSxrQkFBa0J5TCxjQUFjcUo7cUJBQ2hDOVUsZ0JBQWdCbU8sWUFBWTRHO3FCQUM1Qi9VLFdBQVdzSCxPQUFPbkcsT0FBT2dDLE9BQU9tRSxPQUFPdEc7cUJBQ3ZDaEI7NkJBQXlCSix5QkFBMEJBLFlBQVl1QjtxQkFFL0Q7c0JBQUk2VCxRQUFTN0csWUFBWUE7c0JBQ3JCOEc7c0JBQ0FDO3NCQUNBQztzQkFDQUM7c0JBQ0FDO3FCQUVKLFFBQVNwSSxZQUFZeEI7c0JBQVksR0FDekJBLDBCQUEwQndCLFVBQVc7dUJBQ3hCLElBQVRxSSxXQUFXN0osV0FBV3dCO3VCQUMxQixHQUFJMkgsUUFBUVUsYUFBYUEsZ0JBQWlCO3dCQUN0QyxLQUFLRCxPQUNEQTt3QkFHSkEsTUFBTXBJLFlBQVlxSTs7O3FCQUs5QixJQUFXLElBQUY3UyxPQUFPQSxJQUFJdVMsT0FBT3ZTLElBQUs7c0JBQ2xCLElBQU44RyxRQUFRNEUsU0FBUzFMO3NCQUNyQixHQUFJa0wsUUFBUXBFLE9BQVE7dUJBQ2hCMEwsZUFBZTFMO3VCQUVmLEtBQUsyTCxjQUFjM0wsa0JBQ2YyTDt1QkFHSixLQUFLQyxhQUFhNUwsaUJBQ2Q0TDt1QkFHSjsyQkFBS0Msb0JBQW9CN0wsZUFBZUE7d0JBQ3BDNkw7Ozt1QkFFRCxLQUFLRixjQUFjckgsU0FBU3RFO3dCQUFRLFVBQzVCQSw4QkFDUDJMOztpQ0FFSUMsYUFBYWhCLFFBQVE1SyxRQUM3QjRMOztxQkFJUm5WLGFBQWFnVixRQUFRQztxQkFDckJqVixrQkFBa0JrVjtxQkFDbEJsVixpQkFBaUJtVjtxQkFDakJuVixhQUFhcVY7cUJBQ2JyVix1QkFBdUJvVjtvQkFDM0I7b0JBRUFQLGdDQUFnQ25OO29CQUNoQ21OO21CQXhFVTs7Ozs7Ozs0QkEwRXdGclAsU0FBUTdGLFFBQU8rRTtvQkFDckcsSUFBUmdELFVBQVVsQztvQkFFZCtQO29CQUNBQTtvQkFDQUE7b0JBQ0FBO29CQUNBQTtvQkFDQUE7b0JBQ0FBO29CQUNBQTtvQkFDQUE7b0JBRUE1VixpQkFBaUI0VjtvQkFFakIsU0FBU0EsYUFBYS9LLE1BQU1xRixPQUFPakQ7cUJBQy9CNU0sWUFBWTRSLE9BQU9wSDtxQkFDbkJ4SyxhQUFhNlA7cUJBQ2I3UCxhQUFhNE07b0JBQ2pCO29CQUVBMkksaUNBQWlDN047b0JBQ2pDNk47bUJBdEJ5Rjs7OzRCQXdCeEQvUCxTQUFRN0YsUUFBTytFO29CQUNwQyxJQUFSZ0QsVUFBVWxDO29CQUVkN0YsaUJBQWlCNlY7b0JBRWpCLFNBQVNBLFlBQVlDLE1BQ2pCelYsWUFBWW1ELE9BQU9zUyxNQUN2QjtvQkFFQUQsZ0NBQWdDOU47b0JBQ2hDOE47bUJBVndCOzs7NEJBWVNoUSxTQUFRN0YsUUFBTytFO29CQUNoRDtxQkFBSW1JLFdBQVdySDtxQkFDWHNILFNBQVN0SDtvQkFFYjdGLGlCQUFpQitWO29CQUVqQixTQUFTQSxVQUFVblEsR0FBRytKO3FCQUNsQixJQUFJMUo7cUJBRUosUUFBUytQLFFBQVFwUSxFQUFHO3NCQUNoQixNQUFNb1EsUUFBUXJHLEdBQUk7dUJBQ2QxSixPQUFPQTt1QkFDUEEsS0FBSytQLFFBQVEzVTs7c0JBR2pCLElBQUk0VSxTQUFTclEsRUFBRW9RLE9BQ1hFLFNBQVN2RyxFQUFFcUc7c0JBRWYsR0FBSUMsV0FBV0M7dUJBQVE7OEJBRVpoSixTQUFTK0ksV0FBVy9JLFNBQVNnSjt1QkFBUyxHQUN6Q3JJLGFBQWFxSSxZQUFZckksYUFBYW9JLFFBQVMsQ0FDL0NoUSxPQUFPQSxZQUNQQSxLQUFLK1AsUUFBUUU7K0JBQ04vSSxPQUFPK0ksUUFBUzt3QkFDdEJqUSxPQUFPQTt3QkFDUEEsS0FBSytQLFFBQVFFOzsyQkFDWDt3QkFDWSxJQUFYQyxhQUFhSixVQUFVRSxRQUFRQzt3QkFDbkMsR0FBSUMsV0FBWSxDQUNabFEsT0FBT0EsWUFDUEEsS0FBSytQLFFBQVFHOzswQkFHbEIsQ0FDSGxRLE9BQU9BLFlBQ1BBLEtBQUsrUCxRQUFRRTs7cUJBSXJCLFFBQVNFLFFBQVF6RztzQkFBRyxNQUNWeUcsUUFBUXhRLEdBQUksQ0FDZEssT0FBT0EsWUFDUEEsS0FBS21RLFFBQVF6RyxFQUFFeUc7cUJBSXZCLE9BQU9uUTtvQkFDWDtvQkFFQSxTQUFTNEgsYUFBYWpHO3FCQUNwQixHQUFJcEI7c0JBQXVCLE9BQ2xCQSxzQkFBc0JvQjs2QkFDcEJBO3NCQUFpQixPQUNuQkE7NkJBQ0VBO3NCQUFtQixPQUNyQkE7b0JBRVg7bUJBMUR3Qjs7OzRCQTREZ0MvQixTQUFRN0YsUUFBTytFO29CQUN2RTtxQkFBSWdJLFVBQVVsSDtxQkFFVitKLFNBQVMvSjtxQkFDVG1JLFVBQVVuSTtxQkFDVm9JLFVBQVVwSTtxQkFDVnFJLFdBQVdySTtxQkFDWDJPLFVBQVUzTztxQkFDVnNJLGNBQWN0STtxQkFFZGtRLFlBQVlsUTtvQkFFaEI3RixpQkFBaUJpRztvQkFFakIsU0FBU0EsS0FBS0wsR0FBRytKO3FCQUNILElBQU4xQyxZQUFhckg7cUJBQ2pCeVEsS0FBS3pRLEdBQUcrSixHQUFHMUM7cUJBQ1gsT0FBT0E7b0JBQ1g7b0JBRUEsU0FBU29KLEtBQUt6USxHQUFHK0osR0FBRzFDLE9BQU9uRDtxQkFDdkIsR0FBSWxFLE1BQU0rSixHQUFHO3FCQUliLElBQUkyRyxRQUFRckosTUFBTW5ELFFBQ2R5TTtxQkFFSixHQUFJL0IsUUFBUTVPLE1BQU00TyxRQUFRN0U7c0JBQ3RCNkcsT0FBTzVRLEdBQUcrSixHQUFHMUMsT0FBT25EOzZCQUNiNkYsS0FBS25PLEtBQU07c0JBS2xCLEtBQUswTSxTQUFTdEksR0FBSTt1QkFDZDZRLFdBQVc3USxHQUFHcUgsT0FBT25EO3VCQUNyQndNLFFBQVFySixNQUFNbkQ7O3NCQUdsQndNLFFBQVFJLFlBQVlKLFdBQVcxRyxPQUFPQSxlQUFlaEssR0FBRytKOzs2QkFDakQzQixRQUFRMkI7c0JBQUksR0FDZjNCLFFBQVFwSTt1QkFBSTt5QkFDUkEsY0FBYytKLGFBQ2QvSixnQkFBZ0IrSjs0QkFDaEIvSixVQUFVK0osTUFBTzt3QkFDRixJQUFYZ0gsYUFBYVosVUFBVW5RLGNBQWMrSjt3QkFDekMsR0FBSWdIO3lCQUNBTDswQkFBUUksWUFBWUosV0FDWjFHLE9BQU9BLGNBQWNoSyxHQUFHK1E7d0JBRXBDTCxRQUFRTSxhQUFhaFIsR0FBRytKLEdBQUcxQyxPQUFPcUosT0FBT3hNOzsyQkFDdEM7d0JBQ0h3TSxRQUFRSSxZQUFZSixXQUFXMUcsT0FBT0EsY0FBY2hLLEdBQUcrSjt3QkFDdkQ0Rzs7MEJBRUQ7dUJBQ0hELFFBQVFJLFlBQVlKLFdBQVcxRyxPQUFPQSxjQUFjaEssR0FBRytKO3VCQUN2RDRHOzs7c0JBRUQsR0FBSXRJLFFBQVEwQjt1QkFBSSxLQUNkMUIsUUFBUXJJLEdBQUk7d0JBQ2IwUSxRQUFRSSxZQUFZSixXQUFXMUcsT0FBT0EsY0FBY2hLLEdBQUcrSjt3QkFDdkQ0Rzs7K0JBQ08zUSxXQUFXK0o7d0JBQ2xCMkcsUUFBUUksWUFBWUosV0FBVzFHLE9BQU9BLGNBQWNoSyxHQUFHK0o7OzhCQUVwRHpCLFNBQVN5QixHQUFJO3VCQUNwQixLQUFLekIsU0FBU3RJLElBQ1YyUTt1QkFHSkQsUUFBUUksWUFBWUosV0FBVzFHLE9BQU9BLGVBQWVoSyxHQUFHK0o7O3FCQUc1RCxHQUFJMkcsT0FDQXJKLE1BQU1uRCxTQUFTd007cUJBR25CLEdBQUlDLFlBQ0FFLFdBQVc3USxHQUFHcUgsT0FBT25EO29CQUU3QjtvQkFFQSxTQUFTOE0sYUFBYWhSLEdBQUcrSixHQUFHMUMsT0FBT3FKLE9BQU94TTtxQkFDdEM7c0JBQUkrTSxZQUFZalI7c0JBQ1prUixhQUFhQyxRQUFRRixXQUFXbEg7c0JBQ2hDcUgsWUFBWUY7c0JBRVpHLE9BQU9KO3NCQUNQSyxPQUFPRjtzQkFDUEcsTUFBTUYsT0FBT0MsT0FBT0QsT0FBT0M7cUJBRS9CLElBQVcsSUFBRnBVLE9BQU9BLElBQUlxVSxLQUFLclUsSUFBSztzQkFDMUIsSUFBSXNVLFdBQVdQLFVBQVUvVCxJQUNyQnVVLFlBQVlMLFVBQVVsVTtzQkFDMUJnSDtzQkFFQSxLQUFLc047dUJBQVUsR0FDUEM7d0JBRUFmO3lCQUFRSTsyQkFBWUosV0FDWjFHLE9BQU9BLGVBQWVwTyxNQUFNNlY7Ozt1QkFHeENoQixLQUFLZSxVQUFVQyxXQUFXcEssT0FBT25EO3NCQUdyQyxHQUFJa0UsUUFBUW9KLGFBQWFBO3VCQUNyQnROLFNBQVNzTjs7cUJBSWpCLEdBQUlOO3NCQUVBUjt1QkFBUUk7eUJBQVlKLFdBQVcxRyxPQUMzQkEsY0FDQWhLLEdBQ0FrUjtxQkFJUixPQUFPUjtvQkFDWDtvQkFFQSxTQUFTRyxXQUFXdkcsT0FBT2pELE9BQU9uRDtxQkFFOUJ3TixPQUFPcEgsT0FBT2pELE9BQU9uRDtxQkFDckJ5TixlQUFlckgsT0FBT2pELE9BQU9uRDtvQkFDakM7b0JBSUEsU0FBU3lOLGVBQWVySCxPQUFPakQsT0FBT25EO3FCQUNsQyxHQUFJb0UsU0FBU2dDO3NCQUFRLFVBQ05BO3VCQUNQakQsTUFBTW5EO3dCQUFTNE07MEJBQ1h6SixNQUFNbkQsWUFDRjhGLE9BQU9BLGVBQWVNLE9BQU8xTzs7O3VCQUdsQ3dNLFFBQVFrQyxXQUFXQSxvQkFBb0JBLGlCQUFrQjtzQkFDaEUsSUFBSTFCLFdBQVcwQixnQkFDWGlILE1BQU0zSTtzQkFDVixJQUFXLElBQUYxTCxPQUFPQSxJQUFJcVUsS0FBS3JVLElBQUs7dUJBQ2hCLElBQU44RyxRQUFRNEUsU0FBUzFMO3VCQUNyQmdIO3VCQUVBeU4sZUFBZTNOLE9BQU9xRCxPQUFPbkQ7dUJBRTdCLEdBQUlrRSxRQUFRcEUsVUFBVUEsYUFDbEJFLFNBQVNGOzs7NkJBR1Y0SyxRQUFRdEUsUUFDZnNHLE9BQU90RyxPQUFPMU8sTUFBTXlMLE9BQU9uRDtvQkFFbkM7b0JBR0EsU0FBUzBNLE9BQU81USxHQUFHK0osR0FBRzFDLE9BQU9uRDtxQkFDekI7c0JBQUl3QixRQUFRNkMsWUFBWXZJLEdBQUcrSjtzQkFDdkI2SCxhQUFhdlIsS0FBS3FGLFNBQVNBO3FCQUMvQixHQUFJbU0sV0FBV0Q7c0JBQ1h2SyxNQUFNbkQsYUFBYThGLE9BQU9BLGNBQWNwTyxNQUFNZ1c7b0JBRXREO29CQUVBLFNBQVNDLFdBQVd4SztxQkFDaEIsUUFBU25ELFNBQVNtRCxPQUFPLEdBQ2pCbkQsZUFBZTtxQkFLdkI7b0JBQ0o7b0JBR0EsU0FBU3dOLE9BQU9wSCxPQUFPakQsT0FBT25EO3FCQUMxQixHQUFJa0UsUUFBUWtDLE9BQVE7c0JBQ2hCLEdBQUlBO3VCQUNBakQsTUFBTW5EO3dCQUFTNE07MEJBQ1h6SixNQUFNbkQ7OEJBQ0Y4RixPQUNBQSxjQUNBTSxPQUNBd0gsY0FBY3hIO3NCQUsxQixHQUFJQSx5QkFBeUJBLGdCQUFpQjt1QkFDMUMsSUFBSTFCLFdBQVcwQixnQkFDWGlILE1BQU0zSTt1QkFDVixJQUFXLElBQUYxTCxPQUFPQSxJQUFJcVUsS0FBS3JVLElBQUs7d0JBQ2hCLElBQU44RyxRQUFRNEUsU0FBUzFMO3dCQUNyQmdIO3dCQUVBd04sT0FBTzFOLE9BQU9xRCxPQUFPbkQ7d0JBRXJCLEdBQUlrRSxRQUFRcEUsVUFBVUEsYUFDbEJFLFNBQVNGOzs7OzZCQUlkNEssUUFBUXRFLFFBQ2ZzRyxPQUFPdEcsT0FBTzFPLE1BQU15TCxPQUFPbkQ7b0JBRW5DO29CQUVBLFNBQVM0TixjQUFjMUs7cUJBQ1IsSUFBUHpEO3FCQUVKLFFBQVM1QixPQUFPcUYsS0FDWnpELE9BQU81QixPQUFPdEc7cUJBR2xCLE9BQU9rSTtvQkFDWDtvQkFHQSxTQUFTd04sUUFBUUYsV0FBV0c7cUJBRXhCO3NCQUFJVyxjQUFjQyxTQUFTWjtzQkFDdkJhLFFBQVFGO3NCQUNSRyxRQUFRSDtxQkFFWixHQUFJRyxpQkFBaUJkO3NCQUFrQixrQkFFckJBLGtCQUNIeFY7cUJBS2Y7c0JBQUl1VyxjQUFjSCxTQUFTZjtzQkFDdkJtQixRQUFRRDtzQkFDUkUsUUFBUUY7cUJBRVosR0FBSUUsaUJBQWlCcEI7c0JBQWtCLGtCQUVyQkcsa0JBQ0h4VjtxQkFLZjtzQkFBSTBXO3NCQUVBQztzQkFDQUMsWUFBWU47c0JBQ1pPO3FCQUlKLElBQVcsSUFBRnZWLE9BQVFBLElBQUkrVCxrQkFBa0IvVCxJQUFLO3NCQUN4QyxJQUFJd1YsUUFBUXpCLFVBQVUvVCxJQUNsQnlWO3NCQUVKLEdBQUlEO3VCQUFXLEdBQ1BULHFCQUFxQlMsV0FBWTt3QkFFakNDLFlBQVlWLE1BQU1TO3dCQUNsQkosaUJBQWlCbEIsVUFBVXVCOzsyQkFFeEIsQ0FFSEEsWUFBWXpWLElBQUl1VixnQkFDaEJILGlCQUFpQjFXOzs4QkFJakIyVyxZQUFZQyxVQUFXO3VCQUN2QkcsWUFBWVQsTUFBTUs7dUJBQ2xCRCxpQkFBaUJsQixVQUFVdUI7OzBCQUN4QixDQUlIQSxZQUFZelYsSUFBSXVWLGdCQUNoQkgsaUJBQWlCMVc7OztxQkFLWDtzQkFBZGdYO3dCQUFnQkwsYUFBYUw7MkJBQzdCZDsyQkFDQWMsTUFBTUs7cUJBSVYsSUFBVyxJQUFGN0csT0FBT0EsSUFBSTBGLGtCQUFrQjFGLElBQUs7c0JBQzNCLElBQVJtSCxVQUFVekIsVUFBVTFGO3NCQUV4QixHQUFJbUg7dUJBQWEsS0FDUlQscUJBQXFCUzt3QkFJdEJQLGlCQUFpQk87OzhCQUVkbkgsS0FBS2tILGVBRVpOLGlCQUFpQk87O3FCQUl6QjtzQkFBSUMsV0FBV1I7c0JBQ1hTO3NCQUNBQztzQkFDQUM7c0JBQ0FDO3FCQUVKLElBQVcsSUFBRi9LLE9BQU9BLElBQUlpSixrQkFBbUI7c0JBQ3BCLElBQVgrQixhQUFhL0IsVUFBVWpKO3NCQUMzQitLLGVBQWVKLFNBQVNDO3NCQUd4QixNQUFPRyxpQkFBaUJ0WCxRQUFRa1gsZ0JBQWlCO3VCQUM3Q0UsYUFBYXhILE9BQU9zSCxVQUFVQyxlQUFlblg7dUJBQzdDc1gsZUFBZUosU0FBU0M7O3NCQUc1QixLQUFLRyxnQkFBZ0JBLHFCQUFxQkM7dUJBQWdCLEdBRWxEQSxlQUFnQjt3QkFDaEIsR0FBSUQsZ0JBQWdCQTt5QkFBa0IsR0FFOUJqQixNQUFNaUIsc0JBQXNCL0ssTUFBTzswQkFDbkM2Szs0QkFBYXhILE9BQU9zSCxVQUFVQyxlQUFlRzswQkFDN0NBLGVBQWVKLFNBQVNDOzBCQUV4QixLQUFLRyxnQkFBZ0JBLHFCQUFxQkM7MkJBQ3RDRixtQkFBbUJFLG9CQUFvQmhMOzsyQkFJdkM0Szs7OzBCQUlKRSxtQkFBbUJFLG9CQUFvQmhMOzt5QkFJM0M4SyxtQkFBbUJFLG9CQUFvQmhMO3dCQUUzQ0E7OytCQUdLK0ssZ0JBQWdCQTt3QkFDckJGOzBCQUFheEgsT0FBT3NILFVBQVVDLGVBQWVHOzswQkFHaEQsQ0FDREgsaUJBQ0E1Szs7cUJBS1IsTUFBTTRLLGdCQUFnQkQsZ0JBQWlCO3NCQUNuQ0ksZUFBZUosU0FBU0M7c0JBQ3hCQzt3QkFBYXhIOzBCQUFPc0gsVUFBVUMsZUFBZUcsZ0JBQWdCQTs7cUJBS2pFLEdBQUlGLG1CQUFtQlAsa0JBQWlCUTtzQkFBZ0Isa0JBRXRDWCxvQkFDSDFXO3FCQUlmLGtCQUNjMFc7OENBRUdVLGtCQUNBQztvQkFHckI7b0JBRUEsU0FBU3pILE9BQU80SCxLQUFLbFAsT0FBT25DO3FCQUN4QnFSLFdBQVdsUDtxQkFFWCxjQUNVQSxZQUNEbkM7b0JBRWI7b0JBRUEsU0FBU2lRLFNBQVNwSjtxQkFDZCxJQUFJeUssV0FDQUMsV0FDQXRXLFNBQVM0TDtxQkFFYixJQUFXLElBQUYxTCxPQUFPQSxJQUFJRixRQUFRRSxJQUFLO3NCQUNuQixJQUFOOEcsUUFBUTRFLFNBQVMxTDtzQkFFckIsR0FBSThHLFdBQ0FxUCxLQUFLclAsYUFBYTlHLFFBRWxCb1csVUFBVXBXOztxQkFJbEIsY0FDVW1XLFlBQ0FDO29CQUVkO29CQUVBLFNBQVN4QyxZQUFZSixPQUFPcko7cUJBQ3hCLEdBQUlxSixNQUFPO3NCQUNQLEdBQUl2SixRQUFRdUo7dUJBQ1JBLFdBQVdySjs7dUJBRVhxSixTQUFTQSxPQUFPcko7c0JBR3BCLE9BQU9xSjs7O3NCQUNKLE9BQ0lySjtvQkFFZjttQkEzYStDOzs7Ozs7Ozs7OzRCQTZha0pwSCxTQUFRN0YsUUFBTytFO29CQUNoTixDQUFBLFNBQVdJO3VCQUNGO3dCQUFMZ1U7a0NBQ0t0VDtrQ0FDQUE7aUNBQ0RBO2tDQUNDQTswQ0FDUUE7Z0NBQ1ZBO3VCQUdQVixvQkFBb0JnVTt1QkFDcEJuWixpQkFBaUJtWjtzQkFYaEI7dUJBYU85WTs4QkFBWThFOzBCQUF5QkE7OzBCQUFnQkM7OzRCQUF1QkE7bUNBQWNGLHlCQUF5QkE7bUJBZDZEOzs7Ozs7Ozs7O01BcG5GOEk7RTs7OztHQ0d0VTlFO2FBQXlDd0g7S0FDckMsTUFBTXZILGdCQUFnQm1TLGNBQWMsV0FDckJBLFlBQVk1SztLQUczQnZILGFBQWF1SDtJQUxlO0dBUWhDeEg7YUFBeURvSixNQUFNOEk7S0FDM0QsR0FBSTlJLEtBQUs4SSxrQkFBa0JqUyxZQUN2Qm1KLEtBQUs4SSxnQkFBZ0JqUztJQUZrQjtHQU8vQixTQUFaK1ksWUFBd0JDLE1BQU1DLFFBQVFDLFNBQVNqUSxJQUFJa1E7SUFDbkQsTUFBTW5aLGdCQUFnQitZO0tBQWMsV0FDckJBLFlBQVlDLE1BQU1DLFFBQVFDLFNBQVNqUSxJQUFJa1E7SUFHdERuWixZQUFZZ1o7SUFDWmhaLGNBQWNpWjtJQUNkalosZUFBZWtaO0lBQ2ZsWixVQUFVaUo7SUFDVmpKLGFBQWFtWjtHQVRDO0dBWUMsSUFBZkM7R0FFSixHQUFJcFosYUFDQW9aLGlCQUFpQkMsT0FBT0Q7R0FHNUJMO2FBQW9DNVAsTUFBTThELFVBQVVxTTtLQUNoRCxLQUFLblEsS0FBS2lRLGlCQUNOalEsS0FBS2lRO0tBRVRqUSxLQUFLaVEsZ0JBQWdCbk0sWUFBWXFNO0lBSlg7R0FPMUJQO2FBQW1DNVAsTUFBTThELFVBQ3JDLE9BQU85RCxLQUFLaVEsZ0JBQWdCbk0sVUFEUDtHQUl6QjhMO2FBQXFDNVAsTUFBTThELFVBQ3ZDLE9BQU85RCxLQUFLaVEsZ0JBQWdCbk0sVUFETDtHQUkzQjhMO2FBQXNDUSxNQUFNQztLQUN4QyxPQUFPRCxnQkFBZ0J2WixRQUFRd1osY0FBY3haLFFBQVF1WixZQUFZQztlQUFTQTtJQURsRDtHQUk1QlQ7YUFBdUM1UCxNQUFNOEQsVUFBVTZFO0tBQ25ELEdBQUlpSCwwQkFBMEJqSCxNQUFNOVIsTUFBTztNQUM3QixJQUFOc1osUUFBUVAsdUJBQXVCNVAsTUFBTThEO01BQ3pDcU0sUUFBUXRaLFlBQVlzWixPQUFPblE7TUFDM0I0UCx3QkFBd0I1UCxNQUFNOEQsVUFBVXFNOztTQUNyQztNQUNPLElBQU5BLFFBQVF0WixVQUFVbUo7TUFDdEI0UCx3QkFBd0I1UCxNQUFNOEQsVUFBVXFNOztJQVBuQjtHQVc3QlA7YUFBeUM1UCxNQUFNOEQsVUFBVThFO0tBQ3JELEdBQUlnSCwwQkFBMEIvWSxNQUFNK1I7TUFBTztTQUVwQztNQUNPLElBQU51SCxRQUFRUCx1QkFBdUI1UCxNQUFNOEQ7TUFDekNqTixhQUFhc1osT0FBT25RO01BQ3BCNFAseUJBQXlCNVAsTUFBTThEOztJQU5SO0dBVS9CbE4sZ0NBQWdDZ1o7RTs7Ozs7R0M4SmhDLFNBQVNVLG1CQUFtQmxOLEdBQUssU0FBUUEsV0FBWTtHQ3pMckQsU0FBU21OLGdCQUFnQnhVLEdBQUdFO0lBQzFCLEdBQUdGLFFBQVE7SUFDWCxHQUFJRSxVQUFVLE9BQVFBLFNBQVNGO0lBQy9CLElBQUlDLFFBQVFPO0lBQ1osT0FBUTtLQUNOLEdBQUlSLE9BQU9DLEtBQUtDO0tBQ2hCRjtLQUNBLEdBQUlBLFFBQVEsT0FBT0M7S0FDbkJDLEtBQUtBO0tBQ0xNO0tBQ0EsR0FBSUEsUUFDRk47O0dBS047R0Q3Q3NCLElBQWxCdVUsb0JBQW9CL1c7R0VBeEIsU0FBU2dYLG9CQUFxQmpILEtBQU8sTUFBTUEsSUFBSztHQzRIM0IsSUFBakJrSDtHRHJGSixTQUFTQztJQUNQRixvQkFBb0JDO0dBQ3RCO0dGckNBLFNBQVNFLFFBQVNDLElBQUdDLElBQUdDO0lBQ3RCbGEsVUFBVWdhO0lBQ1ZoYSxVQUFVaWE7SUFDVmphLFVBQVVrYTtHQUNaO0dBQ0FIO0dBQ0FBO2VBQ0UsV0FBV0EsUUFBUS9aLFNBQVFBLFNBQVFBLFNBRFo7R0FJekIrWjthQUF1Q3hOO0tBQ3JDLEdBQUl2TSxVQUFVdU0sTUFBTTtLQUNwQixHQUFJdk0sVUFBVXVNLE1BQU07S0FDcEIsR0FBSXZNLFVBQVV1TSxNQUFNO0tBQ3BCLEdBQUl2TSxVQUFVdU0sTUFBTTtLQUNwQixHQUFJdk0sVUFBVXVNLE1BQU07S0FDcEIsR0FBSXZNLFVBQVV1TSxNQUFNO0tBQ3BCO0lBUDJCO0dBUzdCd047YUFBc0N4TjtLQUNwQyxJQUFJMk4sS0FBS2xhLGVBQ0xtYSxNQUFNNU47S0FDVixHQUFJMk4sS0FBS0MsS0FBSztLQUNkLEdBQUlELEtBQUtDLEtBQUs7S0FDZCxHQUFJbmEsVUFBVXVNLE1BQU07S0FDcEIsR0FBSXZNLFVBQVV1TSxNQUFNO0tBQ3BCLEdBQUl2TSxVQUFVdU0sTUFBTTtLQUNwQixHQUFJdk0sVUFBVXVNLE1BQU07S0FDcEI7SUFUMEI7R0FXNUJ3Tjs7S0FDRTtNQUFJQyxPQUFPaGE7TUFDUGlhLE9BQU9qYSxXQUFXZ2E7TUFDbEJFLE9BQU9sYSxXQUFXaWE7S0FDdEIsV0FBV0YsUUFBUUMsSUFBSUMsSUFBSUM7SUFKTDtHQU14Qkg7YUFBa0N4TjtLQUNoQztNQUFJeU4sS0FBS2hhLFVBQVV1TTtNQUNmME4sS0FBS2phLFVBQVV1TSxRQUFReU47TUFDdkJFLEtBQUtsYSxVQUFVdU0sUUFBUTBOO0tBQzNCLFdBQVdGLFFBQVFDLElBQUlDLElBQUlDO0lBSkw7R0FNeEJIO2FBQWtDeE47S0FDaEM7TUFBSXlOLEtBQUtoYSxVQUFVdU07TUFDZjBOLEtBQUtqYSxVQUFVdU0sUUFBUXlOO01BQ3ZCRSxLQUFLbGEsVUFBVXVNLFFBQVEwTjtLQUMzQixXQUFXRixRQUFRQyxJQUFJQyxJQUFJQztJQUpMO0dBTXhCSDthQUFrQ3hOO0tBQ2hDO01BQUl5TixLQUFLaGEsVUFBVXVNO01BQ2YwTixNQUFPRCxLQUFLTCx5QkFBMEIzWixVQUFVdU0sT0FBT3ZNLFVBQVV1TTtNQUNqRTJOO1NBQU9ELEtBQUtOLHlCQUEwQjNaLFVBQVV1TSxPQUFPdk0sVUFBVXVNO1VBQU92TSxVQUFVdU07S0FDdEYsV0FBV3dOLFFBQVFDLElBQUlDLElBQUlDO0lBSkw7R0FNeEJIO2VBQ0UsUUFBUS9aLFVBQVFBLFVBQVFBLGNBREM7R0FHM0IrWixxQ0FDRSxPQUFRL1osa0JBRGdCO0dBRzFCK1o7YUFBa0N4TjtLQUNoQyxXQUFXd04sUUFBUS9aLFVBQVV1TSxNQUFNdk0sVUFBVXVNLE1BQU12TSxVQUFVdU07SUFEdkM7R0FHeEJ3TjthQUFpQ3hOO0tBQy9CLFdBQVd3TixRQUFRL1osVUFBUXVNLE1BQU12TSxVQUFRdU0sTUFBTXZNLFVBQVF1TTtJQURsQztHQUd2QndOO2FBQWtDeE47S0FDaEMsV0FBV3dOLFFBQVEvWixVQUFRdU0sTUFBTXZNLFVBQVF1TSxNQUFNdk0sVUFBUXVNO0lBRGpDO0dBR3hCd047YUFBeUMzVTtLQUN2Q0EsSUFBSUE7S0FDSixHQUFJQSxRQUFRLE9BQU9wRjtLQUNuQixHQUFJb0Y7TUFBUTtjQUNDMlU7ZUFBUy9aLFdBQVdvRjtlQUNWcEYsV0FBV29GLElBQU1wRixnQkFBaUJvRjtlQUNsQ3BGLFdBQVdvRixJQUFNcEYsZ0JBQWlCb0Y7S0FFekQsR0FBSUE7TUFDRjtjQUFXMlU7a0JBQ1MvWixXQUFZb0YsUUFDWHBGLFdBQVlvRixTQUFZcEYsZ0JBQWlCb0Y7S0FDaEUsV0FBVzJVLGNBQWMvWixXQUFZb0Y7SUFaUjtHQWMvQjJVO2FBQW1EM1U7S0FDakRBLElBQUlBO0tBQ0osR0FBSUEsUUFBUSxPQUFPcEY7S0FDbkIsR0FBSW9GO01BQ0Y7Y0FBVzJVO2VBQ1IvWixXQUFXb0YsSUFBTXBGLGdCQUFpQm9GO2VBQ2xDcEYsV0FBV29GLElBQU1wRixnQkFBaUJvRjtlQUNsQ3BGLFdBQVdvRjtLQUNoQixHQUFJQTtNQUNGO2NBQVcyVTtlQUNSL1osV0FBWW9GLFNBQVlwRixnQkFBaUJvRixHQUN6Q3BGLFdBQVlvRjtLQUVqQixXQUFXMlUsUUFBUy9aLFdBQVlvRjtJQWJPO0dBZXpDMlU7YUFBMEMzVTtLQUN4Q0EsSUFBSUE7S0FDSixHQUFJQSxRQUFRLE9BQU9wRjtLQUNiLElBQUYwUyxJQUFLMVM7S0FDVCxHQUFJb0Y7TUFDRjtjQUFXMlU7ZUFDUi9aLFdBQVdvRixJQUFNcEYsZ0JBQWlCb0Y7ZUFDbENwRixXQUFXb0YsSUFBTXNOLFVBQVd0TjtlQUMzQnBGLGlCQUFrQm9GO0tBQ2YsSUFBTDlCLE9BQVF0RDtLQUNaLEdBQUlvRjtNQUNGO2NBQVcyVTtlQUNSL1osV0FBWW9GLFNBQVlwRixnQkFBaUJvRjtlQUN6Q3BGLGlCQUFtQm9GO2VBQ3BCOUI7S0FDSixXQUFXeVcsUUFBVS9aLGlCQUFtQm9GLFFBQVM5QixNQUFNQTtJQWZ6QjtHQWlCaEN5Vzs7S0FDRS9aLFVBQVdBLGVBQWlCQTtLQUM1QkEsV0FBWUEsZUFBaUJBO0tBQzdCQSxVQUFXQTtJQUhZO0dBS3pCK1o7O0tBQ0UvWixXQUFZQSxnQkFBa0JBO0tBQzlCQSxXQUFZQSxnQkFBa0JBO0tBQzlCQSxVQUFVQTtJQUhhO0dBS3pCK1o7YUFBc0N4TjtLQUNwQztNQUFJNk47TUFDQUMsVUFBVXJhO01BQ1ZzYSxVQUFVL047TUFDVmdPLGVBQWVSO0tBQ25CLE1BQU9NLGlCQUFpQkMsYUFBYyxDQUNwQ0YsVUFDQUU7S0FFRixNQUFPRixZQUFhO01BQ2xCQTtNQUNBRztNQUNBLEdBQUlGLGlCQUFpQkMsY0FBZTtPQUNsQ0M7T0FDQUYsVUFBVUEsWUFBWUM7O01BRXhCQTs7S0FFRixrQkFBb0JDLG1CQUFvQkY7SUFsQmQ7R0FvQjVCTjthQUFrQzlXO0tBRTFCLElBQUZzSixJQUFJdk07S0FDUixHQUFJaUQsWUFBWTZXO0tBQ1AsSUFBTHhXLE9BQU9pSixPQUFPdEo7S0FDbEIsR0FBSXNKLGVBQWVBLElBQUlBO0tBQ3ZCLEdBQUl0SixlQUFlQSxJQUFJQTtLQUNqQixJQUFGdVgsSUFBSWpPLFVBQVV0SjtLQUNsQixHQUFJSyxlQUFla1gsSUFBSUE7S0FDdkIsT0FBT0E7SUFUZTtHQVd4QlQ7YUFBa0M5VztLQUUxQixJQUFGc0osSUFBSXZNO0tBQ1IsR0FBSWlELFlBQVk2VztLQUNQLElBQUx4VyxPQUFPaUo7S0FDWCxHQUFJQSxlQUFlQSxJQUFJQTtLQUN2QixHQUFJdEosZUFBZUEsSUFBSUE7S0FDakIsSUFBRmtDLElBQUlvSCxVQUFVdEo7S0FDbEIsR0FBSUssZUFBZTZCLElBQUlBO0tBQ3ZCLE9BQU9BO0lBVGU7R0FXeEI0VSxxQ0FDRSxPQUFPL1osVUFBV0EsY0FETTtHQUcxQitaOztLQUNFLFFBQVMvWixpQkFBaUI0QyxrQkFBa0I1QyxVQUFVNEM7Y0FBbUI1QztJQUQvQztHQUc1QitaOztLQUNFLFFBQVEvWjthQUNBQTthQUNBQTthQUNDQTthQUNEQTthQUNBQTthQUNDQTthQUNEQTtJQVJrQjtHQVU1QitaO2VBQ0UsT0FBTy9aLFdBQVlBLHNCQURJO0dBR3pCK1o7ZUFDRSxPQUFTL1oseUJBQTRCQSxjQURkO0dBdUR6QixTQUFTeWEsb0JBQXFCbE87SUFDNUIsV0FBV3dOLFFBQVF4TixjQUFlQSxvQkFBc0JBO0dBQzFEO0dBR0EsU0FBU21PLG9CQUFxQm5PLEdBQUssT0FBT0EsVUFBVTtHQWpDcEQsU0FBU29PLHVCQUF1QnBPLEdBQUssU0FBUUEsVUFBVztHQWhCeEQsU0FBU3FPLGVBQWdCck8sR0FBSyxPQUFPQSxRQUFRO0dDMmU3QyxTQUFTc08sdUJBQXVCdE8sR0FBSyxPQUFPQSxFQUFFO0dHMWxCOUMsU0FBU3VPLGdCQUFnQjVWO0lBQ1gsSUFBUjZWLFVBQVVDO0lBRWQsR0FBR0QsV0FDR0EsZUFDQUEsWUFBWTdWLE1BQU1sRTtLQUN0QixPQUFPK1osWUFBWTdWO0lBQ3JCLEdBQUc4Viw4QkFDR0EsMkJBQTJCOVY7S0FDL0IsT0FBTzhWLDJCQUEyQjlWO0dBQ3RDO0dDcEcrQixJQUEzQitWO0dBRUosQ0FBQTtNQUNRLElBQUY5VixJQUFJMlY7TUFDUixHQUFHM1YsTUFBTW5FLFVBQVU7T0FDWCxJQUFGMEUsSUFBSVA7T0FDUixJQUFVLElBQUYxQyxPQUFPQSxJQUFJaUQsVUFBVWpEO1FBQUksR0FDNUJpRCxFQUFFakQsVUFBVztTQUFFd1k7U0FBZ0M7O2dCQUN6Q3ZWLEVBQUVqRDtTQUNUd1ksK0JBQStCdlYsRUFBRWpEOztTQUM5Qjs7S0FSVjs7R0N1SkQsU0FBU3lZLDJCQUEyQkMsS0FBS0M7SUFFdkMsS0FBSUQsZ0JBQWdCQyxTQUFTRDtLQUFlQSxtQkFBbUJIO0lBQy9ELE9BQU9HO0dBQ1Q7R0FiQSxTQUFTRSw0QkFBNEJGLEtBQUtDO0lBQ3hDLE9BQUdIO2NBQ01DLDJCQUEyQkMsS0FBS0M7Y0FDN0JEO0dBQ2Q7R0poSkEsU0FBU0csb0JBQXFCM0ksS0FBSzRJO0lBQU8sTUFBTUYsZ0NBQWdDMUksS0FBSzRJO0dBQU87R0Q0cUI1RixTQUFTQyx1QkFBdUJqUCxHQUFLLE9BQU9BLEVBQUU7R0NwcUI5QyxTQUFTa1AsdUJBQXdCOUksS0FBSytJO0lBQ3BDSixvQkFBcUIzSSxLQUFLNkksdUJBQXVCRTtHQUNuRDtHQWFBLFNBQVNDLHNCQUF1QkQ7SUFDOUJELHVCQUF1QjVCLG1DQUFtQzZCO0dBQzVEO0dLNUJBLFNBQVNFLGtCQUFtQi9hO0lBQzFCQSxNQUFNZ2EsdUJBQXVCaGE7SUFDckIsSUFBSmlXLE1BQU1qVztJQUNWLEdBQUlpVyxVQUFVNkU7SUFDUjtLQUFGbFg7Ozs7Ozs7Ozs7OztJQUlKLElBQVcsSUFBRmhDLE9BQU9BLElBQUlxVSxLQUFLclUsSUFBSztLQUN0QixJQUFGc0osSUFBSWxMLFdBQVc0QjtLQUNuQixPQUFRc0o7O1FBRU50SCxpQkFBaUI7OztRQUVqQkEsY0FBY3NILEdBQUc7O1FBRWpCdEgsZ0JBQWdCOztRQUVoQkEsb0JBQW9COzs7Ozs7Ozs7O1FBR3BCQTtRQUNBLE1BQU9zSCxJQUFFbEwsZUFBZTRCLFNBQVNzSixVQUFVQSxPQUFRLENBQ2pEdEgsVUFBVUEsZUFBZXNILEdBQUd0SjtRQUU5QkE7UUFDQTs7UUFFQWdDO1FBQ0FoQztRQUNBLE1BQU9zSixJQUFFbEwsZUFBZTRCLFNBQVNzSixVQUFVQSxPQUFRLENBQ2pEdEgsU0FBU0EsY0FBY3NILEdBQUd0SjtRQUU1QkE7OztRQUVBZ0M7O1FBRUFBLGFBQWE7O1FBRWJBLGFBQWE7O1FBRWJBLGFBQWFBLG9CQUFvQjs7UUFFakNBLFlBQVk7Ozs7UUFFWkEscUJBQXFCQSxTQUFTc0gsR0FBRzs7OztRQUVqQ3RIO1FBQXFCQTtRQUNyQkEsU0FBU3NIO1FBQWtCOzs7SUFHL0IsT0FBT3RIO0dBQ1Q7R0FJQSxTQUFTb1gsdUJBQXVCcFgsR0FBR3FYO0lBQ2pDLEdBQUlyWCxhQUFhcVgsWUFBWUE7SUFDckIsSUFBSmhGLE1BQU1nRjtJQUVWLEdBQUlyWCxpQkFBaUJBLGNBQWNBLHFCQUFxQnFTO0lBQ3hELEdBQUlyUyxZQUFhLENBQ2YsR0FBSUEsYUFBYXFTLFVBQ2pCLEdBQUlyUyxjQUFjcVM7SUFHVCxJQUFQaUY7SUFDSixHQUFJdFgsb0JBQW9CQTtLQUN0QixJQUFXLElBQUZoQyxJQUFJcVUsS0FBS3JVLElBQUlnQyxTQUFTaEMsS0FBS3NaO0lBQ3RDLEdBQUl0WDtLQUFjLEdBQ1pBO01BQVlzWDthQUNQdFgsb0JBQW9Cc1gsVUFBVXRYO0lBRXpDLEdBQUlBLGVBQWVBLGFBQWFzWDtJQUNoQyxHQUFJdFgsZUFBZUEsY0FBY3NYLFVBQVV0WDtJQUMzQyxHQUFJQSxvQkFBb0JBO0tBQ3RCLElBQVcsSUFBRmhDLElBQUlxVSxLQUFLclUsSUFBSWdDLFNBQVNoQyxLQUFLc1o7SUFDdENBLFVBQVVEO0lBQ1YsR0FBSXJYLGtCQUNGLElBQVcsSUFBRmhDLElBQUlxVSxLQUFLclUsSUFBSWdDLFNBQVNoQyxLQUFLc1o7SUFDdEMsT0FBT1AsdUJBQXVCTztHQUNoQztHUDRMQSxTQUFTQyxrQkFBbUJuYixLQUFLMEw7SUFDekIsSUFBRjlILElBQUltWCxrQkFBa0IvYTtJQUMxQixHQUFJNEQsZ0JBQWdCa1csdUJBQXVCcE8sR0FBSSxDQUM3QzlILGNBQWE4SCxJQUFJcU8sZUFBZXJPO0lBRWxDO0tBQUl3UDtLQUNBRSxRQUFReEIsb0JBQW9CaFc7S0FDNUJ5WDtJQUNKLEVBQUc7S0FDSyxJQUFGQyxJQUFJNVAsVUFBVTBQO0tBQ2xCMVAsSUFBSTRQO0tBQ0pKLFNBQVNHLGFBQWF4QixvQkFBb0J5QixjQUFjSjs7O1FBQy9DdEMsbUJBQW1CbE47SUFDOUIsR0FBSTlILFlBQWE7S0FDZkE7S0FDTSxJQUFGUyxJQUFJVCxTQUFTc1g7S0FDakIsR0FBSTdXLE9BQU82VyxTQUFTckMsZ0JBQWlCeFUsVUFBVTZXOztJQUVqRCxPQUFPRix1QkFBdUJwWCxHQUFHc1g7R0FDbkM7R1EzQ0EsU0FBU0ssaUJBQWtCN1AsR0FBSyxPQUFPM0osV0FBVzJKLEdBQUk7R0N6RnRELFNBQVM4UCw0QkFBNEJwWCxHQUNqQyxTQUNKO0dSZkEsU0FBU3FYLGNBQWVsWDtJQUV0QixHQUFJQSxjQUFlO0tBRWpCLElBQVcsSUFBRjNDLE9BQU9BLElBQUkyQyxVQUFVM0MsS0FBSyxHQUFJMkMsYUFBYTNDLFVBQVU7S0FDOUQ7OztLQUVBLFNBQVEsb0JBQW9CMkM7R0FDaEM7R0F2REEsU0FBU21YLG1CQUFtQm5YO0lBQzFCLFFBQVNrSyxRQUFRckssUUFBUThHLEdBQUd5USxJQUFJQyxJQUFJQyxHQUFHamEsT0FBT2lELElBQUlOLFVBQVUzQyxJQUFJaUQsR0FBR2pELElBQUs7S0FDdEUrWixLQUFLcFgsYUFBYTNDO0tBQ2xCLEdBQUkrWixVQUFXO01BQ2IsSUFBVyxJQUFGdkwsSUFBSXhPLE9BQVF3TyxJQUFJdkwsTUFBTzhXLEtBQUtwWCxhQUFhNkwsWUFBWUEsS0FBSTtNQUNsRSxHQUFJQSxJQUFJeE8sUUFBUztPQUFFd0M7T0FBZ0JxSyxLQUFLcks7T0FBR0E7T0FBUXFLLEtBQUtsSyxRQUFRM0MsR0FBR3dPOzs7T0FDOURoTSxLQUFLRyxRQUFRM0MsR0FBR3dPO01BQ3JCLEdBQUlBLEtBQUt2TCxHQUFHO01BQ1pqRCxJQUFJd087O0tBRU55TDtLQUNBLEtBQU9qYSxJQUFJaUQsT0FBUytXLEtBQUtyWCxhQUFhM0MsbUJBQW9CO01BQ3hEc0osSUFBSTBRLE1BQU1EO01BQ1YsR0FBSUEsVUFBVztPQUNiRSxJQUFJM1E7T0FDSixHQUFJMlEsVUFBVUE7O1VBQ1Q7T0FDTEE7T0FDQSxLQUFPamEsSUFBSWlELE9BQVMrVyxLQUFLclgsYUFBYTNDLG1CQUFvQjtRQUN4RHNKLElBQUkwUSxNQUFNMVE7UUFDVixHQUFJeVEsVUFBVztTQUNiRSxJQUFJM1E7U0FDSixHQUFLMlEsYUFBZ0JBLGVBQWlCQSxZQUFjQTs7WUFDL0M7U0FDTEE7U0FDQSxLQUFPamEsSUFBSWlELE9BQVMrVyxLQUFLclgsYUFBYTNDLHNCQUNqQytaLFVBQVk7VUFDZkUsSUFBSUQsa0JBQWtCMVE7VUFDdEIsR0FBSTJRLGVBQWVBLGNBQWNBOzs7Ozs7S0FNM0MsR0FBSUEsTUFBTztNQUNUamEsS0FBS2lhO01BQ0x6WDs7YUFDU3lYO01BQ1R6WCxLQUFLOUIsOEJBQThCdVosb0JBQW9CQTs7TUFFdkR6WCxLQUFLOUIsb0JBQW9CdVo7S0FDM0IsR0FBSXpYLGdCQUFpQixDQUFDQSxnQkFBZ0JxSyxLQUFLckssR0FBR0E7O0lBRWhELE9BQU9xSyxJQUFFcks7R0FDWDtHQTRpQkEsU0FBUzBYLHdCQUF3QnZYO0lBQy9CLEdBQUdrWCxjQUFjbFgsSUFDZixPQUFPQTtJQUNULE9BQU9tWCxtQkFBbUJuWDtHQUFJO0dTNXJCaEMsU0FBU3dYO0lBQ1AsY0FDUzVCO3FCQUNLQTtxQkFDQUE7R0FDaEI7R0MwQkEsU0FBUzZCO0lBQ1AsU0FBU0MsTUFBTUM7S0FDYixHQUFJQSx3QkFBd0IsWUFBWUE7S0FDeEM7SUFDRjtJQUVBLFNBQVNDLE1BQU1EO0tBRWI7TUFBSUU7O01BQ0EvVCxTQUFTK1QsbUJBQW1CRjtNQUM1QkcsU0FBU2hVO01BQ1RpVSxRQUFRQyxRQUFRRixVQUFVQTtLQUc5QixHQUFJRSxRQUFRbFUsYUFBYWlVLE9BQVE7TUFDL0IsSUFBSS9WLE9BQVE4QixpQkFDUjNGLE1BQU8yRjtNQUNYLFFBQVE5QixNQUFNMlYsZUFBZTNWLGNBQWM3RDs7S0FFN0M7SUFDRjtJQUNBLE9BQUdxWix1QkFBd0I1QjtlQUFzQkE7Y0FDeENBLDBDQUEwQ2dDLFFBQVFGO2NBRS9DQTtHQUNkO0dBQ3FCLElBQWpCTyxtQkFBbUJSO0dBdkR2QixTQUFTUyxvQkFBb0JqZDtJQUMzQixPQUFRQSwwQkFBMkJBLGFBQWNBO0dBQ25EO0dBSUEsR0FBR3VjLHVCQUF3QjVCLHNCQUFzQkE7SUFDMUIsSUFBakJ1QyxtQkFBbUJ2Qzs7SUFFRixJQUFqQnVDO0dBQ05BLG1CQUFtQkQsb0JBQW9CQztHQWtEdkMsU0FBU0MsZUFBZ0JuZDtJQUN2QkEsT0FBS3NjLHdCQUF3QnRjO0lBQzdCLEtBQUtnZCxpQkFBaUJoZCxPQUNwQkEsT0FBT2tkLG1CQUFtQmxkO0lBQzVCO0tBQUlvZCxRQUFRSixpQkFBaUJoZDtLQUN6QnFkLE9BQU9EO0tBQ1BFO0lBQ0osSUFBVSxJQUFGbGIsT0FBT0EsSUFBRWliLGFBQWFqYjtLQUFJLE9BQ3pCaWIsS0FBS2piOztRQUNELEdBQUdrYixrQkFBZ0JBLGFBQWE7aUJBQ2pDO2dCQUNEO2dCQUNBQSxXQUFXRCxLQUFLamIsS0FBSTs7SUFHL0JrYixjQUFjRjtJQUNkRSxhQUFhdGQ7SUFDYixPQUFPc2Q7R0FDVDtHVmxCQSxTQUFTQyxtQkFBbUJ4WTtJQUMxQixRQUFTa0ssUUFBUXJLLElBQUlxSyxHQUFHdkQsR0FBR2pMLEdBQUcyQixPQUFPaUQsSUFBSU4sVUFBVTNDLElBQUlpRCxHQUFHakQsSUFBSztLQUM3RHNKLElBQUkzRyxhQUFhM0M7S0FDakIsR0FBSXNKLFNBQVU7TUFDWixJQUFXLElBQUZrRixJQUFJeE8sT0FBUXdPLElBQUl2TCxNQUFPcUcsSUFBSTNHLGFBQWE2TCxZQUFZQSxLQUFJO01BQ2pFLEdBQUlBLElBQUl4TyxRQUFTO09BQUV3QztPQUFnQnFLLEtBQUtySztPQUFHQTtPQUFRcUssS0FBS2xLLFFBQVEzQyxHQUFHd087OztPQUM5RGhNLEtBQUtHLFFBQVEzQyxHQUFHd087TUFDckIsR0FBSUEsS0FBS3ZMLEdBQUc7TUFDWmpELElBQUl3Tzs7S0FFTixHQUFJbEYsVUFBVztNQUNiOUcsS0FBSzlCLDJCQUE0QjRJO01BQ2pDOUcsS0FBSzlCLDJCQUE0QjRJOzthQUN4QkEsY0FBY0E7TUFDdkI5RztPQUFLOUI7Z0JBQTRCNEksZ0JBQ0NBLHNCQUNEQTs7T0FDeEJBLGVBQWV0SixTQUFTaUQsTUFDdkI1RSxJQUFJc0UsYUFBYTNDO1VBQW9CM0I7TUFFL0NtRTtTQUNLO01BQ0x4QztNQUNBc0osS0FBS0EsV0FBV2pMO01BQ2hCbUU7T0FBSzlCO2dCQUE0QjRJO2dCQUNDQTtnQkFDQUE7Z0JBQ0RBOztLQUVuQyxHQUFJOUcsZ0JBQWlCLENBQUNBLGdCQUFnQnFLLEtBQUtySyxHQUFHQTs7SUFFaEQsT0FBT3FLLElBQUVySztHQUNYO0dBbW1CQSxTQUFTNFksd0JBQXlCelk7SUFDaEMsT0FBSWtYLGNBQWNsWDtjQUNUb1csdUJBQXVCcFc7Y0FDcEJvVyx1QkFBdUJvQyxtQkFBbUJ4WTtHQUN4RDtHV3BvQmU7SUFBWDBZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkosU0FBU0MsbUJBQW1CQyxNQUFNQyxTQUFTbEIsTUFBTW1CO0lBQ25DLElBQVJDLFVBQVVMLG1CQUFtQkU7SUFDakMsR0FBSUcsWUFBYSxDQUVmLEdBQUlELFNBQVMvYyxNQUNYK2MsZ0JBR0ZDLGNBQW1CRDtJQUVaO0tBQUxFO1FBQ0ZEO1FBQ0FOLHdCQUF3Qkk7UUFDeEJKLHdCQUF3QmQ7SUFFMUIsT0FBT3FCO0dBQ1Q7R1RVc0IsSUFBbEJDO0dBV0osU0FBU0MsaUJBQWlCQyxJQUN4QixPQUFPRixrQkFBa0JFLElBQzNCO0dEakhBLFNBQVNDLHFCQUFzQjdMLEtBQUt5TDtJQUFRLE1BQU0vQyw0QkFBNEIsSUFBSTFJLFlBQVl5TDtHQUFRO0dENEN0RyxTQUFTSyx5QkFBMEJsWixHQUFHOUMsR0FBR3FVO0lBQ2pDLElBQUZyUyxJQUFJdEI7SUFDUixHQUFJVixVQUFVcVUsZUFBZUEsT0FBT3ZSLFVBQVUsT0FBT2QsUUFBU3RELE1BQU1vRTtJQUM5RCxJQUFGSDtJQUNKLFVBQVcwUixLQUFLclUsV0FBVXFVO0tBQ3hCMVIsS0FBS1gsUUFBU3RELE1BQU1vRSxRQUFROUMsR0FBRUEsSUFBSUcsU0FBU2tVO0lBQzdDLE9BQU8xUjtHQUNUO0dBMldBLFNBQVNzWiw2QkFBOEJ0WjtJQUVyQyxHQUFJQTtLQUNGQSxPQUFPc1UsZ0JBQWdCdFUsTUFBTUE7O0tBRTdCQSxNQUFNcVoseUJBQTBCclosUUFBUUE7SUFDMUNBO0dBQ0Y7R0F0Q0EsU0FBU3VaLFFBQVNoTSxLQUFLaU0sVUFBVXJjO0lBQy9CdkMsU0FBTzJTO0lBQUszUyxTQUFPNGU7SUFBVTVlLFNBQU91QztHQUN0QztHQUNBb2M7O0tBQ0UsT0FBUTNlOztRQUVOLE9BQU9BO2dCQUVQMGUsNkJBQTZCMWU7O1FBRTdCLEdBQUlzYyxjQUFjdGMsUUFBUyxDQUN6QkEsWUFDQSxPQUFPQSxTQUVUQTs7UUFFQSxPQUFPQTs7SUFia0I7R0FnQjdCMmU7O0tBQ1EsSUFBRnhaLElBQUluRjtLQUNSLEdBQUdBLGFBQWEsT0FBT21GO0tBQ3ZCLE9BQU9vWCxtQkFBbUJwWDtJQUhBO0dBSzVCd1o7O0tBQ2MsSUFBUkUsVUFBVTdlLGNBQWNBLGlCQUFpQkE7S0FDN0MsV0FBVzJlLFFBQVEzZSxRQUFPNmUsU0FBUTdlO0lBRlY7R0FtWTFCLFNBQVM4ZSxpQkFBaUIxWixHQUN4QixPQUFRQSxhQUFhdVosUUFDdkI7R0FrQkEsU0FBU0ksa0JBQWtCM1o7SUFDekIsY0FBZUEsb0JBQW1CLG9CQUFvQkE7R0FDeEQ7R0E3VUEsU0FBUzRaLG9CQUFxQnpaO0lBQzVCLE1BQU1BLGFBQWEwWixhQUNqQjFaLFFBQVEwWixXQUFXMVo7SUFFckIsV0FBV29aLFdBQVVwWixHQUFFQTtHQUN6QjtHQXlOQSxTQUFTMlosc0JBQXNCOVosR0FBSyxXQUFXdVosV0FBVXZaLEdBQUVBLFVBQVc7R0EvQnRFLFNBQVMrWixxQkFBcUIvWjtJQUM1QixPQUFPOFosc0JBQXNCckUsdUJBQXVCelY7R0FDdEQ7R0czcUJBLFNBQVNnYSxxQkFBc0IxRDtJQUM3QkQsdUJBQXVCNUIsNEJBQTRCNkI7R0FDckQ7R093S0EsU0FBUzJELHdCQUF3QmhmO0lBQy9CK2UscUJBQXNCL2U7R0FDeEI7R1ZtUUEsU0FBU2lmLDRCQUE2QmxhO0lBRXBDLElBQUlHLFFBQVEwWixXQUFXN1osTUFDbkJrSyxJQUFJbEssS0FBS00sSUFBSTRKLFVBQVU3TTtJQUMzQixNQUFPQSxJQUFJaUQsR0FBR2pELEtBQUs4QyxFQUFFOUMsS0FBSzZNLGFBQWE3TTtJQUN2QyxJQUFLaUQsSUFBSU4sS0FBSzNDLElBQUlpRCxHQUFHakQsS0FBSzhDLEVBQUU5QztJQUM1QjJDLE1BQU1HO0lBQ05IO0lBQ0EsT0FBT0c7R0FDVDtHQUlBLFNBQVNnYSwwQkFBMkJuYTtJQUNsQyxHQUFJQSxVQUFzQmthLDRCQUE0QmxhO0lBQ3RELE9BQU9BO0dBQ1Q7R0E4QkEsU0FBU29hLGtCQUFrQjFJO0lBQ3pCLEdBQUlBLFNBQVM2RTtJQUNiLFdBQVdnRCxRQUFRN0gsaUJBQVdBO0dBQ2hDO0dBZ0pBLFNBQVMySSxxQkFBcUJyYSxHQUFLLE9BQU9BLElBQUk7R0F2QzlDLFNBQVNzYSxnQkFBZ0JDLElBQUlDLElBQUlDLElBQUlDLElBQUloSjtJQUN2QyxHQUFJQSxVQUFVO0lBQ2QsR0FBS2dKLFlBQ0FoSixPQUFPK0ksUUFBU0EsYUFBMkIvSSxPQUFPK0ksYUFBZTtLQUNwRUE7TUFBUUY7U0FDTmxCLHlCQUF5QmtCLE1BQU1DLElBQUk5STtTQUNsQzhJLFdBQVdELGVBQWU3SSxNQUFLNkksT0FBS0EsWUFBWUMsSUFBSTlJO0tBQ3ZEK0ksT0FBUUEsZUFBZUE7O1lBQ2RBLGFBQTJCQyxNQUFNRCxZQUFhO0tBQ3ZEQTtNQUFTRjtTQUNQbEIseUJBQXlCa0IsTUFBTUMsSUFBSTlJO1NBQ2xDOEksV0FBV0QsZUFBZTdJLE1BQUs2SSxPQUFLQSxZQUFZQyxJQUFJOUk7S0FDdkQrSSxPQUFRQSxlQUFlQTs7UUFDbEI7S0FDTCxHQUFJQSxXQUF1QlAsNEJBQTRCTztLQUN2RCxJQUFJckQsS0FBS21ELE1BQU1sRCxLQUFLb0Q7S0FDcEIsR0FBSUY7TUFBdUIsR0FDckJHLE1BQU1GO09BQUksSUFDRCxJQUFGbmQsT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUFLZ2EsR0FBSXFELEtBQUtyZCxLQUFLK1osR0FBSW9ELEtBQUtuZDs7T0FDaEQsSUFDTSxJQUFGQSxJQUFJcVUsU0FBU3JVLFFBQVFBLEtBQUtnYSxHQUFJcUQsS0FBS3JkLEtBQUsrWixHQUFJb0QsS0FBS25kO1NBRXZEO01BQ0MsSUFBRmlELElBQUk5QyxTQUFVa1UsS0FBSzBGLFlBQVlvRDtNQUNuQyxJQUFXLElBQUZuZCxPQUFPQSxJQUFJaUQsR0FBR2pELEtBQUtnYSxHQUFJcUQsS0FBS3JkLEtBQUsrWixjQUFjb0QsS0FBS25kO01BQzdELE1BQU9BLElBQUlxVSxLQUFLclUsS0FBS2dhLEdBQUlxRCxLQUFLcmQ7OztJQUdsQztHQUNGO0dVNWtCQSxTQUFTc2QsU0FBVztHRTZOcEIsU0FBU0MsV0FBV25CLFNBQ2xCN2UsWUFBWTZlLFFBQ2Q7R0FDQW1CLDJCQUEyQkQ7R0FDM0JDLG1DQUFtQ0E7R0FDbkNBO2FBQXlDbEo7S0FDL0IsSUFBSm1KLE1BQU1qZ0I7S0FDVkEsWUFBWXdmLGtCQUFrQjFJO0tBQzlCNEksZ0JBQWdCTyxRQUFRamdCLGNBQWM4VztJQUhSO0dBS2hDa0o7ZUFDRSxPQUFPUCxxQkFBcUJ6ZixXQURBO0dBRzlCZ2dCO2FBQXNDNUYsUUFBTzhGLEtBQUlDLEtBQUlySjtLQUMxQyxJQUFMc0osT0FBT3BnQjtLQUNYLEdBQUdvYSxTQUFTdEQsT0FBT3NKLEtBQU07TUFDdkIsSUFBSUMsVUFBVWIsa0JBQWtCcEYsU0FBU3RELE1BQ3JDd0osV0FBV3RnQjtNQUNmQSxZQUFZcWdCO01BQ1pYLGdCQUFnQlksYUFBYXRnQixjQUFjb2dCOztLQUU3Q1YsZ0JBQWdCVixvQkFBb0JrQixNQUFNQyxLQUFLbmdCLFdBQVdvYSxRQUFRdEQ7S0FDbEU7SUFUMkI7R0FXN0JrSjthQUFxQzVGLFFBQU84RixLQUFJQyxLQUFJcko7S0FDekMsSUFBTHNKLE9BQU9wZ0I7S0FDWCxHQUFHb2EsU0FBU3RELE9BQU9zSixNQUNqQnRKLE1BQU1zSixPQUFPaEc7S0FFZixHQUFHdEQsSUFBSztNQUNHLElBQUw5TixPQUFPd1csa0JBQWtCMUk7TUFDN0I0SSxnQkFBZ0IxZixXQUFXb2EsUUFBUXBSLFNBQVM4TjtNQUM1Q29KLFFBQVFYLDBCQUEwQnZXLE9BQU9tWDs7S0FFM0MsT0FBT3JKO0lBVm1CO0dBd0Q1QixTQUFTeUosU0FBU2xnQixNQUFNbWdCLE1BQUtuYTtJQUMzQnJHLFlBQVl3Z0I7SUFDWnhnQixZQUFZSztJQUNaTCxhQUFhcUc7R0FDZjtHQUVBa2E7O0tBQ0VuQixxQkFBcUJwZjtJQURTO0dBR2hDdWdCO2VBQ0UsR0FBR3ZnQixXQUFXLE9BQU9BLG9CQUNyQkEsa0JBRjBCO0dBSTVCdWdCO2FBQXFDbkcsUUFBTzhGLEtBQUlDLEtBQUlySjtLQUNsRCxHQUFHOVcsV0FBVyxPQUFPQSxnQkFBZ0JvYSxRQUFPOEYsS0FBSUMsS0FBSXJKO0tBQ3BEOVc7SUFGeUI7R0FJM0J1Z0I7YUFBb0NuRyxRQUFROEYsS0FBS0MsS0FBS3JKO0tBQ3BELEdBQUc5VyxXQUFXLE9BQU9BLGVBQWVvYSxRQUFROEYsS0FBS0MsS0FBS3JKO0tBQ3REOVc7SUFGd0I7R0FJMUJ1Z0Isc0NBQ0V2Z0IsWUFBWWdCLFVBRGE7R0F0VjNCLFNBQVN5ZixhQUFjclosTUFBTTNDO0lBQzNCekU7SUFDQUEsWUFBWW9IO0lBQ1pwSCxpQkFBaUJ5RTtHQUNuQjtHQUNBZ2MscUNBQXFDcGdCLE1BQ25DLE9BQVFMLFlBQVlLLEtBRE07R0FHNUJvZ0I7YUFBdURwZ0I7S0FDckQsSUFBSXFkLE9BQU9yZCxpQkFDUHFnQjtLQUNKLElBQVUsSUFBRmplLE9BQU9BLElBQUlpYixpQkFBaUJqYixJQUFJO01BQ3RDaWUsT0FBT2hELEtBQUtqYjtNQUNaLEdBQUd6QyxhQUFhMGdCLE1BQU07TUFDdEIxZ0IsYUFBYTBnQixPQUFPckg7O0lBTnNCO0dBUzlDb0g7YUFBd0NwZ0IsTUFDdEMsT0FBTyxXQUFXQSxRQUFNQSxPQUFNQSxXQUREO0dBRy9Cb2dCO2FBQXlDcGdCO0tBQ3ZDLEtBQUlMLGFBQWFLLFNBQVNMLGVBQWdCO01BQ2hDO09BQUowZ0I7U0FBTTFnQjtXQUFld2IsdUJBQXVCeGIsWUFBWXdiLHVCQUF1Qm5iO01BQ25GLEdBQUdxZ0IsVUFBVztPQUNaMWdCLDBCQUEwQks7T0FDMUJMLGFBQWFLLFlBQVUyZixXQUFXYixxQkFBcUJ1Qjs7O0lBTDdCO0dBU2hDRDthQUF5Q3BnQjtLQUV2QyxHQUFHQSxZQUFZO0tBRUEsSUFBWHNnQixhQUFhM2dCLFdBQVdLO0tBQzVCLEdBQUdMLGFBQWEyZ0IsYUFBYTtLQUU3QjNnQixZQUFZSztLQUNaLE9BQU9MLGFBQWFLO0lBUlU7R0FVaENvZ0I7YUFBeUNwZ0IsTUFDdkMsT0FBR0wsWUFBWUssV0FBVUwsWUFBWUssY0FEUDtHQVFoQ29nQjthQUF3Q3BnQixNQUFLdWdCLE1BQU1DO0tBQ2xDLElBQVgvQyxhQUFhK0MsY0FBY3ZDO0tBQy9CLEdBQUd0ZSxZQUFZSztNQUFPLEdBQ2hCeWQ7T0FDRlU7U0FBcUJWLFlBQVlDLHNDQUFzQy9kLFFBQVFLOztPQUcvRStlLHFCQUFxQi9lO0tBR2QsSUFBUHlnQixTQUFTLG9CQUFvQnpnQjtLQUNqQ3lnQixTQUFVQSxVQUFVQTtLQUNwQixLQUFJOWdCLFlBQVk4Z0I7TUFBUSxHQUNsQmhEO09BQ0ZVO1NBQXFCVixZQUFZQyxzQ0FBc0MvZCxRQUFROGdCOztPQUcvRTFCLHFCQUFxQjBCO0tBR3pCLEtBQUk5Z0IsWUFBWThnQjtNQUFRLEdBQ2xCaEQ7T0FDRlU7U0FBcUJWLFlBQVlDLHVDQUF1Qy9kLFFBQVE4Z0I7O09BR2hGMUIscUJBQXFCMEI7S0FHekI5Z0IsMEJBQTBCQSxXQUFXSztJQTVCUjtHQThCL0JvZ0I7YUFBd0NwZ0IsTUFBTXdnQjtLQUM1QztNQUFJL0MsYUFBYStDLGNBQWN2QztNQUMzQnFDLGFBQWN0Z0Isa0JBQWdCTCxXQUFXSztNQUN6QzhFLFFBQVFvQixhQUFhb2E7S0FDekIsS0FBSTNnQixZQUFZSztNQUFPLEdBQ2pCeWQ7T0FDRlU7U0FBcUJWLFlBQVlDLHNDQUFzQy9kLFFBQVFLOztPQUcvRStlLHFCQUFxQi9lO0tBR3pCLEtBQUlMLFlBQVlLO01BQU8sR0FDakJ5ZDtPQUNGVTtTQUFxQlYsWUFBWUMsdUNBQXVDL2QsUUFBUUs7O09BR2hGK2UscUJBQXFCL2U7S0FHekIsUUFBUTZFLEtBQUtsRjtNQUFjLEdBQ3RCa0YsUUFBUUM7T0FBSSxHQUNUMlk7UUFDRlU7VUFBcUJWLFlBQVlDLHlDQUF5Qy9kLFFBQVFLOztRQUVsRitlLHFCQUFxQnBmLFFBQVFLO0tBSW5DLE9BQU9MLGFBQWEyZ0I7SUE3QlM7R0ErQi9CRjthQUEwQ3BnQjtLQUN6QixJQUFYc2dCLGFBQWN0Z0Isa0JBQWdCTCxXQUFXSztLQUM3QyxLQUFJTCxZQUFZSztNQUNkK2UscUJBQXFCL2U7S0FFdkIsS0FBSUwsWUFBWUssT0FDZCtlLHFCQUFxQi9lO0tBRXZCLElBQUk4RSxRQUFRb0IsYUFBYW9hLHlCQUNyQkksV0FDQXhiO0tBQ0osUUFBUUwsS0FBS2xGLGFBQWM7TUFDbkIsSUFBRmdoQixJQUFJOWIsUUFBUUM7TUFDaEIsR0FBRzZiLE9BQU1ELEtBQUtDLE1BQU8sQ0FBQ0QsS0FBS0MsY0FBY3piLE9BQU95Yjs7S0FFbEQsT0FBT3piO0lBZndCO0dBaUJqQ2tiO2FBQTBDcGdCLE1BQU13Z0I7S0FDOUM7TUFBSS9DLGFBQWErQyxjQUFjdkM7TUFFM0IvWSxJQUFJdkYsYUFBYUs7TUFDakIwTDtNQUNBdEo7S0FDSjs7Y0FDRSxHQUFJc0o7ZUFBRyxHQUNEK1I7Z0JBQ0ZVO2tCQUFxQlY7a0JBQVlDLHdDQUF3Qy9kLFFBQVFLOztnQkFHakYrZSxxQkFBcUIvZTtjQUd6QixHQUFHb0MsS0FBSzhDLFVBQVUsT0FBT3BFO2NBQ2YsSUFBTjhmLFFBQVExYixFQUFFOUM7Y0FDZEE7Y0FDQSxjQUFld2U7YUFaSTs7O2NBZWpCLEdBQUlsVjtlQUFHLEdBQ0QrUjtnQkFDRlU7a0JBQXFCVjtrQkFBWUMsd0NBQXdDL2QsUUFBUUs7O2dCQUdqRitlLHFCQUFxQi9lO2NBR3pCMEw7Y0FDQXhHO2FBVlk7SUFwQmU7R0FrQ2pDa2I7YUFBeUNwZ0I7S0FDdkMsR0FBR0EsWUFBYTtLQUNELElBQVhzZ0IsYUFBYTNnQixXQUFXSztLQUM1QixPQUFPTCxhQUFhMmdCO0lBSFU7R0FLaENGO2FBQXlDcGdCO0tBQ2hDLElBQUg2Z0IsS0FBS2xoQixhQUFhSztLQUN0QixPQUFPTCxhQUFhSztLQUNwQixPQUFPNmdCO0lBSHVCO0dBS2hDVDthQUF1Q3BnQixNQUFNb0U7S0FDM0MsSUFBSStiO0tBQ0osR0FBRy9iLFlBQVlBO01BQ2IyYTtRQUFxQnBmLFFBQVFLOztLQUMvQixHQUFHb0UsVUFBVUE7TUFDWDJhO1FBQXFCcGYsUUFBUUs7O0tBQy9CTCxZQUFZSztLQUNaLEdBQUlMLGFBQWFLLE1BQU87TUFDdEIsR0FBSUwsWUFBWUs7T0FBTytlLHFCQUFxQnBmLFFBQVFLO01BQ3BELEdBQUlvRSxZQUFZQTtPQUFRMmEscUJBQXFCcGYsUUFBUUs7TUFDckRtZ0IsT0FBT3hnQixhQUFhSztNQUNwQixHQUFHb0UsWUFBWStiOzthQUNOL2IsU0FBVTtNQUNuQnpFLDBCQUEwQks7TUFDMUJMLGFBQWFLLFlBQVkyZixXQUFXUjtNQUNwQ2dCLE9BQU94Z0IsYUFBYUs7OztNQUVwQmdmLHdCQUF5QnJmLFFBQVFLO0tBRW5DLFdBQVdrZ0IsU0FBU3ZnQixRQUFRSyxPQUFPbWdCLE1BQU0vYjtJQW5CYjtHQXNCOUJnYzthQUF1Q3BnQixNQUFNb0U7S0FDM0MsSUFBSStiO0tBQ0osR0FBRy9iLFlBQVlBO01BQ2IyYTtRQUFxQnBmLFFBQVFLOztLQUMvQixHQUFHb0UsVUFBVUE7TUFDWDJhO1FBQXFCcGYsUUFBUUs7O0tBQy9CTCxZQUFZSztLQUNaLEdBQUlMLGFBQWFLLE1BQU87TUFDdEIsR0FBSUwsWUFBWUs7T0FBTytlLHFCQUFxQnBmLFFBQVFLO01BQ3BELEdBQUlvRSxZQUFZQTtPQUFRMmEscUJBQXFCcGYsUUFBUUs7TUFDckRtZ0IsT0FBT3hnQixhQUFhSztNQUNwQixHQUFHb0UsWUFBWStiOzthQUNOL2IsU0FBVTtNQUNuQnpFLDBCQUEwQks7TUFDMUJMLGFBQWFLLFlBQVkyZixXQUFXUjtNQUNwQ2dCLE9BQU94Z0IsYUFBYUs7OztNQUVwQmdmLHdCQUF5QnJmLFFBQVFLO0tBRW5DLFdBQVdrZ0IsU0FBU3ZnQixRQUFRSyxPQUFPbWdCLE1BQU0vYjtJQW5CYjtHQXNCOUJnYzthQUEyQ3BnQixNQUFLd2U7S0FDOUMsSUFBSTJCO0tBQ0osR0FBR3hnQixhQUFhSztNQUFPK2UscUJBQXFCcGYsUUFBUUs7S0FDcEQsR0FBR3llLGlCQUFpQkQsVUFDbEIyQixXQUFXUixXQUFXbkI7S0FDeEIsR0FBR0Usa0JBQWtCRjtNQUNuQjJCLFdBQVdSLFdBQVdiLHFCQUFxQk47YUFDckNBLG1CQUFtQmhZO01BQ3pCMlosV0FBV1IsV0FBV2hCLG9CQUFvQkg7b0JBQzdCQTtNQUNiMkIsV0FBV1IsV0FBV2Qsc0JBQXNCTDthQUN0Q0EsaUJBQWtCO01BQ2Q7T0FBTnNDO1NBQVFoQyxxQkFBcUJ0Qix3QkFBd0JnQjtNQUN6RDJCLFdBQVdSLFdBQVdtQjs7S0FFeEIsR0FBR1gsS0FBSztNQUNOeGdCLDBCQUEwQks7TUFDMUJMLGFBQWFLLFFBQVFtZ0I7OztNQUVsQnBCO1FBQXFCcGYsUUFBUUs7SUFuQkg7R0FzQmpDb2dCLHFDQUFxQ0E7R1pnWnJDLFNBQVNXLHNCQUFzQmhjLEdBQzdCLE9BQU9BLFNBQ1Q7R0FmQSxTQUFTaWMsdUJBQXdCamMsR0FBRzNDLEdBQ2xDLE9BQU8yQyxhQUFhM0MsR0FDdEI7R0FsTEEsU0FBUzZlLDJCQUE0QmxjO0lBQ25DLElBQUlNLElBQUkwYixzQkFBc0JoYyxJQUMxQkcsUUFBUXNCLE1BQU1uQixJQUNkakQ7SUFDSixNQUFPQSxJQUFJaUQsR0FBR2pELEtBQUs4QyxFQUFFOUMsS0FBSzRlLHVCQUF1QmpjLEdBQUUzQztJQUNuRCxPQUFPOEM7R0FDVDtHQTVRQSxTQUFTZ2M7SUFDUDVGO0dBQ0Y7R0F6QkEsU0FBUzZGLHNCQUF1QnBjLEdBQUczQyxHQUFHc0o7SUFFcENBO0lBQ0EsR0FBSTNHLFNBQXNCO0tBQ3hCLEdBQUkzQyxLQUFLMkMsV0FBWTtNQUNuQkEsT0FBT2pDLG9CQUFxQjRJO01BQzVCLEdBQUl0SixTQUFTMkMsS0FBS0E7TUFDbEI7O0tBRUZrYSw0QkFBNkJsYTs7SUFFL0JBLElBQUkzQyxLQUFLc0o7SUFDVDtHQUNGO0dBaU1BLFNBQVMwVixlQUFnQnJjLEdBQUczQyxHQUFHc0o7SUFDN0IsR0FBSXRKLFdBQVcyQyxLQUFLbWM7SUFDcEIsT0FBT0Msc0JBQXVCcGMsR0FBRzNDLEdBQUdzSjtHQUN0QztHU3JKQSxTQUFTMlYsU0FBU0MsSUFBSXRiO0lBQ3BCckcsVUFBVXdGO0lBQ1Z4RixVQUFVMmhCO0lBQ1YzaEIsYUFBYXFHO0dBQ2Y7R0FDQXFiLHlCQUF5QjNCO0dBQ3pCMkIsaUNBQWlDQTtHQUVqQ0E7YUFBdUM1SztLQUNyQyxJQUNFOVcsc0JBQXNCQSxTQUFROFc7V0FDdkI3RCxLQUNQbU0scUJBQXFCbk07SUFKSztHQU85QnlPOztLQUNFLElBQ0UsT0FBTzFoQixrQkFBa0JBO1dBQ2xCaVQsS0FDUG1NLHFCQUFxQm5NO0lBSkc7R0FPNUJ5TzthQUFvQ3RILFFBQU84RixLQUFJMEIsWUFBVzlLO0tBQ3hEO01BQ0UsR0FBRzlXO09BQ0RBLGtCQUFrQkEsU0FBU2tnQixLQUFLMEIsWUFBWTlLOztPQUU1QzlXLGtCQUFrQkEsU0FBU2tnQixLQUFLMEIsWUFBWTlLLEtBQUtzRDs7V0FDNUNuSCxLQUNQbU0scUJBQXFCbk07S0FFdkI7SUFUeUI7R0FXM0J5TzthQUFtQ3RILFFBQU83VSxHQUFFcWMsWUFBVzlLO0tBQ3JEO01BQ0UsR0FBRzlXO09BQ1EsSUFBTDZoQixPQUFPN2hCLGlCQUFpQkEsU0FBU3VGLEdBQUdxYyxZQUFZOUs7O09BRTNDLElBQUwrSyxPQUFPN2hCLGlCQUFpQkEsU0FBU3VGLEdBQUdxYyxZQUFZOUssS0FBS3NEO01BQzNELE9BQU95SDs7V0FDQTVPLEtBQ1BtTSxxQkFBcUJuTTtJQVJDO0dBVzFCeU87O0tBQ0UsSUFDRTFoQixrQkFBa0JBLFVBQ2xCO1dBQ09pVCxLQUNQbU0scUJBQXFCbk07SUFMRTtHQWhRM0IsU0FBUzZPLGFBQWExYSxNQUNwQnBILFVBQVV3RixlQUNWeEYsWUFBWW9ILEtBQ2Q7R0FDQTBhLHFDQUFxQ3poQixNQUNuQyxPQUFRTCxZQUFZSyxLQURNO0dBRzVCeWhCO2FBQXlDemhCO0tBQ3ZDLElBQ0UsT0FBT0wsbUJBQW1CQSxRQUFRSztXQUMzQjRTLEtBQ1A7SUFKNEI7R0FPaEM2TzthQUF5Q3poQjtLQUN2QyxJQUNFLE9BQU9MLGlCQUFpQkEsUUFBUUs7V0FDekI0UyxLQUNQbU0scUJBQXFCbk07SUFKTztHQU9oQzZPO2FBQXdDemhCLE1BQU11Z0IsTUFBTUM7S0FDbEQsSUFDRTdnQixrQkFBa0JBLFFBQVFLLGNBQVl1Z0IsUUFDdEM7V0FDTzNOLEtBQ1BqVCx3QkFBd0JpVCxLQUFLNE47SUFMRjtHQVEvQmlCO2FBQXdDemhCLE1BQU13Z0I7S0FDNUMsSUFDRTdnQixrQkFBa0JBLFFBQVFLLFFBQzFCO1dBQ080UyxLQUNQalQsd0JBQXdCaVQsS0FBSzROO0lBTEY7R0FRL0JpQjthQUEwQ3poQixNQUFNd2dCO0tBQzlDLElBQ0UsT0FBTzdnQixvQkFBb0JBLFFBQVFLO1dBQzVCNFMsS0FDUGpULHdCQUF3QmlULEtBQUs0TjtJQUpBO0dBT2pDaUI7YUFBeUN6aEI7S0FDdkMsSUFDRSxPQUFPTCxpQkFBaUJBLFFBQVFLO1dBQ3pCNFMsS0FDUG1NLHFCQUFxQm5NO0lBSk87R0FPaEM2TzthQUF5Q3poQixNQUFNd2dCO0tBQzdDO01BQ1EsSUFBRnZSLElBQUl0UCxtQkFBbUJBLFFBQVFLO01BQ25DTCxtQkFBbUJBLFFBQVFLO01BQzNCLE9BQU9pUDs7V0FDQTJELEtBQ1BqVCx3QkFBd0JpVCxLQUFLNE47SUFORDtHQVNoQ2lCO2FBQXVDemhCLE1BQU1vRSxHQUFHb2M7S0FDOUMsSUFBSWtCLFNBQVN2YyxzQkFDVGtiO0tBQ0osUUFBUXBaLE9BQU83QztNQUFFLE9BQ1I2Qzs7U0FDVW9aLE9BQU9xQixpQkFBaUI7O1NBQ3hCckIsT0FBT3FCLGlCQUFpQjs7U0FFdkNyQixPQUFPcUIsa0JBQWtCQSxpQkFDekI7O1NBQ2dCckIsT0FBT3FCLGdCQUFtQjs7U0FDMUJyQixPQUFPcUIsZ0JBQW1COztTQUMxQnJCLE9BQU9xQixlQUFtQjs7U0FDMUJyQixPQUFPcUIsaUJBQW1COztTQUMxQnJCLE9BQU9xQixlQUFtQjs7U0FDMUJyQixPQUFPcUIsbUJBQW1COztLQUc5QztNQUNFO09BQUlKLEtBQUszaEIsaUJBQWlCQSxRQUFRSyxPQUFPcWdCO09BQ3JDc0I7U0FBb0JoaUIsa0JBQWtCQSxRQUFRSztNQUNsRG9FLHNCQUFzQnVkO01BQ3RCLFdBQVdOLFNBQVNDLElBQUlsZDs7V0FDakJ3TyxLQUNQalQsd0JBQXdCaVQsS0FBSzROO0lBeEJIO0dBNEI5QmlCO2FBQXlDemMsR0FBR0gsR0FBRzJiO0tBQzdDLElBQ0U3Z0IsbUJBQW1CQSxRQUFRcUYsSUFBSXJGLFFBQVFrRjtXQUNoQytOLEtBQ1BqVCx3QkFBd0JpVCxLQUFLNE47SUFKRDtHQU9oQ2lCO2FBQXVDemhCLE1BQU13Z0I7S0FDM0M7TUFDZSxJQUFUb0IsV0FBV2ppQixpQkFBaUJBLFFBQVFLO01BQ3hDLE9BQU9MLG1CQUFtQmlpQjs7V0FDbkJoUCxLQUNQalQsd0JBQXdCaVQsS0FBSzROO0lBTEg7R0FROUJpQjthQUF3Q3poQixNQUFNd2dCO0tBQzVDO01BQ2UsSUFBVG9CLFdBQVdqaUIsa0JBQWtCQSxRQUFRSztNQUN6QyxPQUFPTCxtQkFBbUJpaUI7O1dBQ25CaFAsS0FDUGpULHdCQUF3QmlULEtBQUs0TjtJQUxGO0dBUS9CaUI7YUFBMENJLFFBQVFDLFFBQVFwRixNQUFNOEQ7S0FDOUQ7TUFDRTdnQjtRQUFvQkEsUUFBUW1pQixTQUFTbmlCLFFBQVErYyxPQUFPbUY7TUFDcEQ7O1dBQ09qUCxLQUNQalQsd0JBQXdCaVQsS0FBSzROO0lBTEE7R0FRakNpQjthQUEyQ3poQixNQUFNd2dCO0tBQy9DO01BQ1csSUFBTHVCLE9BQU9waUIscUJBQXFCQSxRQUFRSztNQUN4QyxPQUFPd2Qsd0JBQXdCdUU7O1dBQ3hCblAsS0FDUGpULHdCQUF3QmlULEtBQUs0TjtJQUxDO0dBUWxDaUI7YUFBMEN6aEIsTUFBTXdnQjtLQUM5QyxJQUNFLE9BQU83Z0Isb0JBQW9CQSxRQUFRSztXQUM1QjRTLEtBQ1BqVCx3QkFBd0JpVCxLQUFLNE47SUFKQTtHQU9qQ2lCO2FBQXFEN08sS0FBSzROO0tBQ3pDLElBQVgvQyxhQUFhUTtLQUNqQixHQUFJdUMsY0FBYy9DLFdBQVk7TUFDbkI7T0FBTE0sT0FBT0wsbUJBQW1COUssVUFBVUEsYUFBYUEsVUFBVUE7TUFDL0R1TCxxQkFBcUJWLFlBQVlNOzs7TUFFakNnQixxQkFBcUJuTTtJQU5tQjtHQVM1QzZPO2FBQWdERztLQVc5QyxJQUFJSTtLQUNKLEdBQUlKO01BQ0ZJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKO01BQ1RJO2FBQ1NKLHFCQUNUSTtLQWtCRjthQUVFSjthQUNBQTthQUNBSTthQUNBSjthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTthQUNBQTtJQXhEbUM7R0E0RHZDSCxxQ0FBcUNBO0dDM01yQyxTQUFTUSxjQUFjdkY7SUFDZixJQUFGeFEsSUFBSThRLGlCQUFpQk47SUFDekIsS0FBS3hRLEdBQUc7SUFDUixPQUFPQTtHQUFVO0dURG5CLFNBQVNnVyxjQUFlN0c7SUFDdEIsS0FBSTdCO0tBQ0ZBLGlDQUE4QjJCO0lBQ2hDQyx1QkFBdUI1QiwwQkFBMEI2QjtHQUNuRDtHU0NBO0lBQUk4RztNQUFZRixjQUFjL0U7U0FBcUJnRjtJQTZEL0NFO0dBQ0osR0FBSTdGO0lBQ0Y2RjthQUE0QkQsdUJBQXFCVixhQUFhVTs7SUFFOURDO2FBQTRCRCx1QkFBcUIvQixhQUFhK0I7R0FFaEVDO29DQUFtRGhDO0dBZW5ELFNBQVNpQyxrQkFBa0JyaUI7SUFDekI7S0FBSTBjLE9BQU9TLGVBQWVuZDtLQUN0QkEsT0FBTzBjO0tBQ1A0RCxhQUFhckQsb0JBQW9CamQ7S0FDakNxZ0I7SUFDSixJQUFVLElBQUZqZSxPQUFPQSxJQUFJZ2dCLHlCQUF5QmhnQixJQUFLO0tBQ3pDLElBQUZ1ZSxJQUFJeUIsaUJBQWlCaGdCO0tBQ3pCO09BQUdrZSxrQkFBa0JLO2FBQ2JOLE9BQU9BLGtCQUFrQk07TUFDL0JOO2NBQVlNO2dCQUFjQTtjQUFjM2dCLGVBQWUyZ0IsZUFBYzNnQjs7SUFFekUsS0FBS3FnQixPQUFPOUQsb0JBQXFCO0tBQ3RCLElBQUx4VixPQUFPa2IsY0FBY2ppQjtLQUN6QixHQUFJK0csUUFBUUEsNEJBQTRCO01BQ2hDLElBQUY0WixXQUFVNVosa0JBQWdCMGEsYUFBYTFhO01BQzNDcWIsc0JBQXNCekI7TUFDdEJOO2NBQVlNO2dCQUFjQTtjQUFjM2dCLGVBQWUyZ0IsZUFBYzNnQjs7O0lBR3pFLEdBQUlxZ0IsS0FBTSxPQUFPQTtJQUNqQnRCLDhDQUE4Q3VCO0dBQ2hEO0dBc0ZBLFNBQVNnQyxzQkFBc0J0aUI7SUFDN0IsSUFBSStHLE9BQU9zYixrQkFBa0JyaUIsT0FDekJrRixJQUFJNkIsbUJBQW1CQTtJQUMzQixPQUFPN0I7R0FDVDtHVDNLQSxTQUFTcWQ7SUFDUGhKLG9CQUFvQkM7R0FBNkI7R0U2RG5ELFNBQVNnSixnQkFBaUJ4aUI7SUFDbEIsSUFBRjhFLElBQUkyVixnQkFBZ0I2Qix3QkFBd0J0YztJQUNoRCxHQUFHOEUsTUFBTW5FLFdBQ1A0aEI7SUFDRixPQUFPL0Usd0JBQXdCMVk7R0FDakM7R1UrTUEsU0FBUzJkLGdCQUFnQkMsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUM7SUFDckQsR0FBR0EsV0FBWSxDQUNiRixVQUFVQyxXQUNWO0lBRU8sSUFBTEU7SUFDSixJQUFVLElBQUY1Z0IsSUFBSXdnQixVQUFReGdCLFFBQVFBLElBQUs7S0FDekIsSUFBRjhDLElBQUl3ZCxVQUFVQyxPQUFLdmdCO0tBQ3ZCc2dCLFVBQVVDLE9BQUt2Z0IsS0FBTThDLE1BQU02ZCxRQUFTQztLQUNwQ0EsT0FBTzlkLFVBQVc2ZDs7SUFFcEJGLFVBQVVDLFFBQVFFO0lBQ2xCO0dBQ0Y7R0M3VUEsSUFBSUM7R0FNSixTQUFTQztJQUNQLEdBQUdELGVBQWUsT0FDVEE7SUFFVCxNQUFNakk7O2FBQStCaUQ7YUFBOEM5QztHQUNyRjtHQTJMQSxTQUFTZ0ksb0JBQW9CalgsR0FBRXRKO0lBQzdCO0tBQUltQyxJQUFJbWU7S0FDSkUsS0FBR3JlLHVCQUF1Qm1ILEdBQUVuSCxXQUFXbkM7S0FDdkNuQyxJQUFJMmlCO0lBQ1IsUUFBUTNpQixlQUFlQSxhQUFhQTtHQUN0QztHQzdNQSxTQUFTNGlCLG1DQUNQLFNBQ0Y7R0MwaEJBLElBQUlDO0dBQ0osVUFBVzNJO0lBQ1QySTtLQUFnQjtPQUVkLFNBQVNDLFlBQVlDLE1BQVE3akIsWUFBWTZqQixLQUFNO09BQy9DRDtpQkFBcUNsSDtTQUNuQyxJQUFXLElBQUZqYSxPQUFPQSxJQUFJekMsa0JBQWtCeUM7VUFBSyxHQUNyQ3pDLFVBQVV5QyxPQUFPaWEsR0FBRyxPQUFPamE7UUFGUDtPQUs1Qm1oQix1Q0FBNEI7T0FJNUI7UUFDRTVqQjtRQUFnQkEsa0JBQWtCNGpCLFlBQVk1akIsV0FEekM7TUFaTzs7O0lBa0JoQjJqQjtnQkFDRTNqQixnQkFBZ0JBLGtCQUFrQmdiLGlCQURwQjtHQUtsQjJJO2FBQXlDakgsR0FDdkMxYyxnQkFBZ0IwYyxHQUFHMWMsbUJBQ25CQSxlQUFlMGMsR0FGZTtHQUtoQ2lIO2FBQTBDakg7S0FDbEMsSUFBRmphLElBQUl6QyxnQkFBZ0IwYztLQUN4QixPQUFRamEsTUFBTXpCLFlBQ1ZBLFlBQVloQixtQkFBbUJ5QztJQUhKO0dOM1ZqQyxTQUFTcWhCLGdCQUFnQnplLEdBQUVIO0lBQ3pCLElBQUk2ZSxTQUFTckIsa0JBQWtCcmQsSUFDM0IyZSxTQUFTdEIsa0JBQWtCeGQ7SUFDL0IsR0FBRzZlLGlCQUFpQkM7S0FDbEJ6QjtJQUNGLEtBQUl3QjtLQUNGeEI7SUFDRndCLHFCQUFxQkEsYUFBYUM7R0FDcEM7R0g0QkEsU0FBU0MsaUJBQWtCMVgsR0FBSyxPQUFPM0osV0FBVzJKLEdBQUk7R0pnQzVCLElBQXRCMlg7R0FJSixTQUFTQyxnQ0FBaUNDLE1BQ3hDRix3QkFBd0JFLE1BQ3hCO0dBQ0Y7R0lwSUEsU0FBU0Msb0JBQXFCOVg7SUFDNUIsR0FBSStYLFNBQVUvWCxHQUFJO0tBQ2hCLEdBQUkzSixTQUFTMkosK0JBQStCO0tBQzVDLEdBQUlBLFFBQVE7S0FDWjs7SUFFRixPQUFPZ1ksTUFBTWhZO0dBQ2Y7R1U1RnFCLElBQWpCaVksdUJBQXVCM2Q7R0FzSTNCLFNBQVM0ZCxZQUFhQztJQUNwQixHQUFHQSxlQUFldmpCLEtBQUs7S0FDckIsSUFBSTZFLE1BQU0wZSxlQUNOQyxRQUFRckQsMkJBQTJCdGI7S0FDdkMsR0FBSTJlO01BQ0ZELGNBQWN2akI7U0FFWDtNQUNILEdBQUd1akIscUJBQXFCQSxrQkFBa0JDLGFBQWE7T0FDL0MsSUFBRnJWLFFBQVEyUCxXQUFXeUYsa0JBQWtCQztPQUN6Q3JWLE1BQU1vVjtPQUNOQSxjQUFjcFY7O01BRWhCb1YsZ0JBQWdCQyxPQUFNRDtNQUN0QkEsZUFBZUM7TUFDZkQsbUJBQW1CQzs7O1FBRWhCO0tBQ0s7TUFBTkM7UUFBUUY7VUFBZUE7VUFBYUE7VUFBYUE7VUFBaUJBLHFCQUFxQkE7S0FDM0ZBLGVBQWVFO0tBQ2ZGLG1CQUFtQkU7O0dBRXZCO0doQnZMQSxTQUFTQztJQUNQbEo7R0FDRjtHZ0JnV0EsU0FBU21KLHdCQUF3QkM7SUFDL0IsSUFBSUwsT0FBT0YsaUJBQWlCTyxTQUN4QjVJLElBQUl1STtJQUNSO0tBQUcsR0FDRXZJLEtBQUt1SSxnQkFBaUI7TUFDdkIsR0FBR0EscUJBQXNCO09BQ3ZCQSxnQkFBZ0JBLHFCQUFxQkE7T0FDckN2SSxLQUFLdUk7T0FDTEEsbUJBQW1CQTtPQUNuQkE7O01BRUYsR0FBR0EsbUJBQW1CQSxvQkFBb0IsU0FDL0JBO01BRUUsSUFBVE0sV0FBV047TUFDZkQsWUFBYUM7TUFDYixHQUFHTSxZQUFZTixpQkFBaUIsU0FDckJBOzs7TUFHTkEsWUFBWXZJO0lBQ3JCLE9BQVFBLElBQUl1STtHQUNkO0dDNWJBLFNBQVNPLGNBQWNDO0lBRXJCLFVBQVVsSyw2QkFBNkJBO0lBQ3ZDO0dBQ0Y7R0NjQSxTQUFTbUssc0JBQXlCLFNBQVM7R1hrSjNDLFNBQVNDLHNCQUFzQkYsTUFDM0Isc0JBQ0o7R1k4ckJBLFNBQVNHLHVCQUF1QkMsSUFDOUIsT0FBT0EsUUFDVDtHSHZsQkEsU0FBU0Msb0JBQXFCUixRQUFRTyxJQUFJN2lCLEdBQUdpRDtJQUMzQztLQUFJZ2YsT0FBT0YsaUJBQWlCTztLQUN4QjdmLElBQUlRO0tBQ0o4ZixRQUFRZCxrQkFBa0JBO0lBQzlCLEdBQUdoZixLQUFLOGYsTUFBTztLQUNiRixPQUFPWixxQkFBcUJBLGtCQUFpQkEsbUJBQW1CaGYsSUFBSWpEO0tBQ3BFaWlCLG9CQUFvQmhmOztZQUVkOGYsVUFBVztLQUNqQkY7T0FBT1oscUJBQXFCQSxrQkFBaUJBLG1CQUFtQmMsUUFBUS9pQjtLQUN4RWlpQixvQkFBb0JjO0tBQ3BCdGdCLElBQUlzZ0I7O1FBQ0M7S0FDTGQ7S0FDQUE7S0FDQUQsWUFBWUM7S0FDRixJQUFOYyxRQUFRZCxrQkFBa0JBO0tBQzlCLEdBQUd4ZixJQUFJc2dCLE9BQU90Z0IsSUFBSXNnQjtLQUNsQkYsT0FBT1oscUJBQXFCQSxrQkFBaUJBLG1CQUFtQnhmLElBQUl6QztLQUNwRWlpQixvQkFBb0J4Zjs7SUFFdEIsT0FBT0E7R0FDVDtHQTdCQSxTQUFTdWdCLHVCQUF3QlYsUUFBUXpWLEdBQUc3TSxHQUFHaUQ7SUFDdEMsSUFBSDRmLEtBQUtELHVCQUF1Qi9WO0lBQ2hDLE9BQU9pVyxvQkFBb0JSLFFBQVFPLElBQUk3aUIsR0FBR2lEO0dBQzVDO0dsQmlHQSxTQUFTZ2dCLG9CQUFvQm5nQjtJQUMzQjtZQUFXd1U7YUFBUXhVLFlBQWFBLFlBQWNBO2FBQzNCQSxZQUFhQSxZQUFjQTthQUMzQkEsWUFBYUE7R0FDbEM7R3FCdUNBLFNBQVNvZ0Isb0JBQW9CTCxJQUFJTTtJQUN2QixJQUFKQyxNQUFNUCxVQUFVTTtJQUNwQixHQUFHQyxXQUFXUCxnQkFBZ0JUO0lBQzlCO0tBQUlpQixLQUFLUixPQUFPTztLQUNaRSxLQUFLVCxPQUFPTztLQUNaRyxLQUFLVixPQUFPTztLQUNaSSxLQUFLWCxPQUFPTztLQUNaSyxLQUFLWixPQUFPTztLQUNaTSxLQUFLYixPQUFPTztLQUNaTyxLQUFLZCxPQUFPTztLQUNaUSxLQUFLZixPQUFPTztJQUNoQixPQUFPSCxxQkFBcUJXLElBQUdELElBQUdELElBQUdELElBQUdELElBQUdELElBQUdELElBQUdEO0dBQ25EO0dyQmpEQSxTQUFTUSxvQkFBb0IvWixHQUFLLE9BQU9BLFlBQVk7R2lCaEtyRCxTQUFTZ2EsbUJBQW1CQyxRQUFROUosR0FBRytKO0lBQy9CLElBQUZuWCxJQUFJZ1gsb0JBQXFCNUo7SUFDN0IsSUFBVyxJQUFGamEsT0FBT0EsT0FBT0EsS0FBSytqQixnQkFBaUJsWCxFQUFFN007SUFDL0Nna0I7SUFBY0E7R0FDaEI7R0lpSUEsU0FBU0MsaUJBQWlCcEIsSUFDeEIsT0FBT0EsZUFDVDtHQTZFQSxTQUFTcUIsY0FBY3JCLElBQUlNLElBQ3pCLE9BQU9OLE9BQU9BLFVBQVVNLEtBQzFCO0dDM0xBLFNBQVNnQixpQkFBa0JyaEIsR0FBRytKO0lBQzVCLEdBQUkvSixJQUFJK0osR0FBRztJQUFhLEdBQUkvSixLQUFLK0osR0FBRztJQUFVO0dBQ2hEO0dDN0xBLFNBQVN1WCw2QkFBNkJDLEtBQUtDLFNBQVNDLEtBQUtDLFNBQVNuUTtJQUNoRSxJQUFXLElBQUZyVSxPQUFPQSxJQUFJcVUsS0FBS3JVLElBQUs7S0FDdEI7TUFBRnNKO1FBQUk2YTtVQUFpQkQsY0FBY0csS0FBS0MsVUFBVXRrQixJQUFJa2tCLGNBQWNLLEtBQUtDLFVBQVV4a0I7S0FDdkYsR0FBSXNKLFFBQVEsT0FBT0E7O0lBRXJCO0dBQ0Y7R0NnREEsU0FBU21iLGdDQUFnQ0osS0FBS0ssTUFBTUMsUUFBUUMsTUFBTXZRO0lBQ2hFLFNBQVNnUTtLQUNQbkw7SUFDRixHQUFHN0UsVUFBVTtJQUNKLElBQUxrTSxPQUFPOEQsV0FBV0s7SUFDdEIsR0FBR25FLE9BQU9sTSxNQUFNZ1EsaUJBQ2RqQztJQUVGLEdBQUd3QyxPQUFPdlEsTUFBTTJJLHFCQUFxQjJILFNBQ25DdkM7SUFFUSxJQUFOOVosUUFBUStiLGVBQWU5RCxNQUFNQSxPQUFLbE07SUFDdEM0SSxnQkFBZ0JWLG9CQUFvQmpVLFdBQVdxYyxRQUFRQyxNQUFNdlE7SUFDN0Q7R0FDRjtHQzlGQSxTQUFTd1E7SUFBb0NDLEtBQUtDLFNBQVNDLEtBQUtDLFNBQVM1UTtJQUN2RSxPQUFPb1EsZ0NBQWdDSyxLQUFJQyxTQUFRQyxLQUFJQyxTQUFRNVE7R0FDakU7R25Cc0dBLFNBQVM2USxvQkFBb0IzaUI7SUFDTjtLQUNuQixHQUFHQSxhQUFhNkIsT0FBTyxPQUFPN0I7S0FDOUIsSUFBSW1XO0tBRUo7T0FBR0gseUJBQ0doVyxhQUFhZ1c7VUFDYmhXO1VBQ0FBO01BQ0ptVyxNQUFNdEI7O09BRUFtQiw0QkFDRmhXLGFBQWFnVztVQUNiaFc7VUFDQUE7TUFDSm1XLE1BQU10QjthQUVBN1UsYUFBYWdXLG9CQUFvQnNEO01BQ3ZDbkQsVUFBU21ELDZCQUE0QnRaOztNQUdyQ21XLFVBQVN0QiwwQkFBeUJnRSx3QkFBeUIxYSxPQUFPNkI7S0FFcEUsR0FBSUEsYUFBYWdXLGtCQUNmRyxlQUFlblc7S0FDakIsT0FBT21XOztHQUdYO0dLbUpBLFNBQVN5TSxpQkFBaUJ2bkIsTUFBS3dlO0lBQ3BCLElBQUx6WCxPQUFPc2Isa0JBQWtCcmlCO0lBQzdCLEtBQUsrRyxzQkFBc0JtYjtJQUMzQm5iLHFCQUFxQkEsV0FBVXlYO0lBQy9CO0dBQ0Y7R0FLQSxTQUFTZ0osaUJBQWlCeG5CLE1BQUt3ZTtJQUM3QjtLQUFJeGUsT0FBT21iLHVCQUF1Qm5iO0tBQzlCd2UsVUFBVXJELHVCQUF1QnFEO0lBQ3JDLE9BQU8rSSxpQkFBaUJ2bkIsTUFBTXdlO0dBQ2hDO0dBNUJBLFNBQVNpSjtJQUNBLElBQUhDLE1BQUkvTTtJQUNSLEdBQUcrTTtLQUFJLElBQ0ssSUFBRnRsQixPQUFPQSxJQUFJc2xCLFlBQVl0bEI7TUFDN0JvbEIsaUJBQWlCRSxJQUFJdGxCLFNBQVFzbEIsSUFBSXRsQjtJQUdyQ3VZLDhCQUE4QjZNO0lBQzlCN007SUFDQTtHQUNGO0dlak5BLFNBQVNnTixTQUFTemlCLEdBQUUrSixHQUNsQixPQUFPMU0sVUFBVTJDLEdBQUUrSixHQUNyQjtHQ1RBLFNBQVMyWSxrQkFBa0J2VixHQUFFNVI7SUFDM0JBLElBQUlrbkIsU0FBU2xuQjtJQUNiQSxJQUFNQSxVQUFZQTtJQUNsQkEsSUFBSWtuQixTQUFTbG5CO0lBQ2I0UixLQUFLNVI7SUFDTDRSLElBQU1BLFVBQVlBO0lBQ2xCLFFBQVVBLEtBQUtBO0dBQ2pCO0dBNkJBLFNBQVN3VixzQkFBc0J4VixHQUFHdE47SUFDaEMsSUFBSTBSLE1BQU0xUixVQUFVM0MsR0FBR21PO0lBQ3ZCLElBQUtuTyxPQUFPQSxTQUFTcVUsS0FBS3JVLE9BQVE7S0FDaENtTztNQUFJeEwsYUFBYTNDLEtBQ1oyQyxhQUFhM0MsY0FDYjJDLGFBQWEzQztRQUNiMkMsYUFBYTNDO0tBQ2xCaVEsSUFBSXVWLGtCQUFrQnZWLEdBQUc5Qjs7SUFFM0JBO0lBQ0EsT0FBUWtHOztPQUNBbEcsSUFBS3hMLGFBQWEzQzs7T0FDbEJtTyxLQUFLeEwsYUFBYTNDOztPQUV4Qm1PLEtBQUt4TCxhQUFhM0MsSUFDbEJpUSxJQUFJdVYsa0JBQWtCdlYsR0FBRzlCOztJQUczQjhCLEtBQUtvRTtJQUNMLE9BQU9wRTtHQUNUO0dBdUNBLFNBQVN5VixxQkFBcUJ6VixHQUFHZ0s7SUFDL0IsT0FBT3dMLHNCQUFzQnhWLEdBQUdtSSx1QkFBdUI2QjtHQUN6RDtHQzVLa0MsSUFBOUIwTCxnQ0FBZ0NEO0duQnlKcEMsU0FBU0Usa0NBQXFDLFdBQVk7R29CaEpwQyxJQUFsQkM7R0E2UUosU0FBU0Msc0JBQXNCbkU7SUFDakIsSUFBUm9FLFVBQVVGO0lBQ2RBLG9CQUFvQmxFO0lBQ3BCLE9BQU9vRTtHQUNUO0d2QjdFQSxTQUFTQyxzQkFBc0JsakI7SUFDdkIsSUFBRkc7SUFDSixJQUFTLElBQURqRCxJQUFFOEMsY0FBYzlDLFFBQU1BLElBQUksQ0FDMUIsSUFBRnVDLElBQUlPLEVBQUU5QyxJQUNWaUQsUUFBT1YsR0FBRVU7SUFFWCxPQUFPQTtHQUNUO0dRL0hBLFNBQVNnakIsZUFBZUMsS0FBSzlDLEtBQUsvTztJQUNoQyxJQUFVLElBQUZyVSxJQUFJcVUsU0FBU3JVLFFBQVFBLEtBQUssR0FDN0JrbUIsU0FBUzlDLE1BQUlwakIsU0FBUyxPQUFPQTtJQUVsQztHQUNGO0dBMUVBLFNBQVNtbUIsY0FBY3JjO0lBQ3JCLElBQUl1SyxNQUFNNFIsZUFBZW5jLE1BQU1BLGdCQUMzQm1HO0lBQ0osSUFBVyxJQUFGalEsT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUN2QmlRLElBQUl1VixrQkFBa0J2VixHQUFHbkcsT0FBTzlKO0lBRWxDLE9BQU9pUTtHQUNUO0dYWkEsU0FBU21XLGNBQWNwa0IsR0FBRzJaO0lBQ3hCO0tBQUlsWixJQUFLVCxXQUFVQSxNQUFLQSxNQUFNQTtLQUMxQnFrQixVQUFVMUs7S0FDVnRkLElBQUlvRSxJQUFJNGpCO0lBQ1osR0FBSWhvQjtLQUNGLE9BQU8yRCxRQUFRdEQsTUFBTWlkO1lBQ2R0ZCxNQUFPO0tBQ1IsSUFBRjhELElBQUlILFFBQVF0RCxNQUFLaWQsY0FBYWxaO0tBQ2xDLFVBQVVOLGtCQUFrQixPQUFPQTtLQUNuQyxPQUFPaWtCLGNBQWNqa0IsR0FBRXdaLFdBQVdsWjs7UUFFL0I7S0FDSCxPQUFRcEU7O1FBQ0E7U0FDQTtVQUFGOEQ7cUJBQWMySDthQUNOLElBQU53YyxZQUFZbGlCLE1BQU1paUI7YUFDdEIsSUFBVSxJQUFGcm1CLE9BQU9BLElBQUlxbUIsU0FBU3JtQixLQUFNc21CLE1BQU10bUIsS0FBSzJiLEtBQUszYjthQUNsRHNtQixNQUFNRCxXQUFXdmM7YUFDakIsT0FBTzlILFFBQVF0RCxNQUFNNG5CO1lBSmY7U0FNUjs7O1FBRU07U0FDQTtVQUFGbmtCO3FCQUFjMkgsR0FBR3RKO2FBQ1QsSUFBTjhsQixZQUFZbGlCLE1BQU1paUI7YUFDdEIsSUFBVSxJQUFGcm1CLE9BQU9BLElBQUlxbUIsU0FBU3JtQixLQUFNc21CLE1BQU10bUIsS0FBSzJiLEtBQUszYjthQUNsRHNtQixNQUFNRCxXQUFXdmM7YUFDakJ3YyxNQUFNRCxlQUFlN2xCO2FBQ3JCLE9BQU93QixRQUFRdEQsTUFBTTRuQjtZQUxmO1NBT1I7OztRQUdNO1NBQUZua0I7O1lBQ0Y7YUFBSW9rQixhQUFjcGlCLDRCQUF5QkE7YUFDdkNtaUIsWUFBWWxpQixNQUFNdVgsY0FBWTRLO1lBQ2xDLElBQVUsSUFBRnZtQixPQUFPQSxJQUFJMmIsYUFBYTNiLEtBQU1zbUIsTUFBTXRtQixLQUFLMmIsS0FBSzNiO1lBQ3RELElBQVUsSUFBRkEsT0FBT0EsSUFBSW1FLGtCQUFrQm5FO2FBQU1zbUIsTUFBTTNLLGNBQVkzYixLQUFLbUUsVUFBVW5FO1lBQzVFLE9BQU9vbUIsY0FBY3BrQixHQUFHc2tCO1dBTGxCOztLQVFWbmtCLE1BQU05RDtLQUNOLE9BQU84RDs7R0FFWDtHR0NrQixJQUFkcWtCLGdCQUFnQko7R0E4UHBCLFNBQVNLLGdDQUFnQ3prQjtJQUN2QztLQUNFLElBQUlxUyxNQUFNbFEsa0JBQ053WCxXQUFXdlgsTUFBTWlRO0tBQ3JCLElBQVcsSUFBRnJVLE9BQU9BLElBQUlxVSxLQUFLclUsS0FBSzJiLEtBQUszYixLQUFLbUUsVUFBVW5FO0tBQ2xELE9BQU93bUIsY0FBY3hrQixJQUFJMlosT0FKcEI7R0FNVDtHS3ZKQSxTQUFTK0ssZUFBZUM7SUFDYixJQUFMaGlCLE9BQU9zYixrQkFBa0IwRztJQUM3QixHQUFHaGlCLG1CQUFtQkEsV0FBWTtLQUNoQyxHQUFHQTtNQUFXbVcsbUJBQW1CRCxvQkFBb0JsVyxZQUFZQTs7TUFDNURtVyxtQkFBbUJuVztLQUN4Qjs7O0tBR0FpWSx3QkFBd0J4RSx1QkFBdUJ1TztHQUVuRDtHbUJwQkEsU0FBU0Msb0JBQW9CL1osR0FBRWpLLEdBQUVIO0lBQzdCLEdBQUdvSyxRQUFNakssRUFBRyxDQUFFaUssT0FBT3BLLEdBQUc7SUFDeEI7R0FDSjtHQUlBLFNBQVNva0IsNEJBQTRCamtCO0lBQ25DLE9BQUtBLGFBQWF3QixTQUFVeEIsUUFBU0E7ZUFDakNna0Isb0JBQW9CaGtCOzs7R0FLMUI7R1g5SkEsU0FBU2trQixtQkFBcUIsc0JBQW1CO0dKbWRqRCxTQUFTQztJQUNQakg7R0FDRjtHU3hhQSxTQUFTa0gsaUNBQWlDQyxNQUFNdkMsTUFBTUgsS0FBS0ssTUFBTXZRO0lBQy9ELFNBQVNrUTtLQUNQckw7SUFDRixHQUFHN0UsVUFBVTtJQUNKLElBQUxxTSxPQUFPNkQsV0FBV0s7SUFDdEIsR0FBR0YsT0FBT3JRLE1BQU1zSyxzQkFBc0JzSSxPQUNwQzdFO0lBRUYsR0FBRzFCLE9BQU9yTSxNQUFNa1EsaUJBQ2RuQztJQUVRLElBQU45WixRQUFRdVcsMkJBQTJCb0ksWUFBWXZDLE1BQUtBLE9BQU9yUTtJQUMvRGtRLGFBQWFqYyxPQUFNb1k7SUFDbkI7R0FDRjtHRG5DQSxTQUFTd0csNEJBQTRCcEMsS0FBS3FDLFNBQVNuQyxLQUFLb0MsU0FBUy9TO0lBQy9ELE9BQU8yUyxpQ0FBaUNsQyxLQUFLcUMsU0FBU25DLEtBQUtvQyxTQUFTL1M7R0FDdEU7R1hvT0EsU0FBU2dULG1CQUFtQkM7SUFDMUIsSUFDSUE7VUFDSy9rQjtLQUNVLElBQVg4WSxhQUFhUTtLQUNqQkU7T0FBcUJWLFlBQVlDLHdDQUF3Q2dNOztHQUUvRTtHQXZDQSxTQUFTQyxrQkFBa0JqTjtJQUNoQixJQUFMM1YsT0FBT3NiLGtCQUFrQjNGO0lBQzdCLEtBQUszVjtLQUNIbWI7SUFFYSxJQUFYd0gsYUFBYTNpQixvQkFBb0JBO0lBQ3JDLGlCQUFtQjJpQixrQkFBa0JoTjtHQUN2QztHQXFDQSxTQUFTa04sb0JBQW9CRjtJQUMzQkQsbUJBQW1CQztJQUNBLElBQWZHLGlCQUFpQkYsa0JBQWtCRDtJQUN2Q0EscUJBQXFCRztJQUNyQjtHQUNGO0dWalBBLFNBQVNDO0lBQ1B2USxvQkFBb0JDO0dBQ3RCO0dVNE1BLFNBQVN1USxrQkFBa0JMO0lBQ3pCLElBQUk5STtJQUNKLElBQ0lBLFFBQVE4STtVQUNIL2tCO0tBQ1UsSUFBWDhZLGFBQWFRO0tBQ2pCRTtPQUFxQlYsWUFBWUMsdUNBQXVDZ007O0lBRTVFLEdBQUk5SSxVQUFVOWY7S0FDVmdwQjs7S0FDRyxPQUNJdE0sd0JBQXdCb0Q7R0FFckM7R0E0QkEsU0FBU29KLG9CQUFvQnROO0lBRWYsSUFBUnVOLFVBQVUzTix3QkFBd0JJO0lBQ3RDdU4sVUFBVUE7SUFDVnZOLE9BQU9jLHdCQUF3QnlNO0lBRS9CO0tBQUlQLGFBQWFDLGtCQUFrQmpOO0tBQy9Cd04sY0FBY0gsa0JBQWtCTDtJQUVwQyxXQUFXUSxhQUFhUjtHQUMxQjtHa0JqR0EsU0FBU1MseUJBQXlCdmxCLEdBQ2hDLE9BQVFBLGlCQUNWO0d0Qm5NWSxJQUFSd2xCLFVBQVU3bkIsYUFBYUE7R0FDM0IsU0FBUzhuQixnQkFBZ0JuZTtJQUN2QixHQUFHa2UsU0FBUyxPQUFPN25CLFdBQVdBLFVBQVUySjtJQUNsQyxJQUFGOUo7SUFDSixHQUFJOEosUUFBUSxTQUFRb2U7SUFDcEIsR0FBR3BlLFFBQU0sTUFBUUEsT0FBTSxDQUFDQSxRQUFNOUosV0FDekIsTUFBUThKLE1BQU8sQ0FBQ0EsUUFBTTlKO0lBQzNCLE9BQU9BO0dBQ1Q7R0F3Q0EsU0FBU21vQix5QkFBMEJyZTtJQUNwQixJQUFUc2UsZUFBZUM7SUFDbkJELGNBQWN0ZTtJQUNILElBQVB3ZSxhQUFhQyxXQUFXSDtJQUM1QixPQUFPRTtHQUNUO0dSbVJBLFNBQVNFLDJCQUEyQmpSLElBQUlDLElBQUlDLElBQzFDLFdBQVdILFFBQVFDLElBQUlDLElBQUlDO0dBQzdCO0dROVRBLFNBQVNnUix5QkFBMEIzZTtJQUNqQyxLQUFLK1gsU0FBUy9YLEdBQUk7S0FDaEIsR0FBSWdZLE1BQU1oWSxJQUNSLE9BQU8wZTtLQUNULE9BQUkxZTtlQUNLMGU7ZUFFQUE7O0lBRUYsSUFBTDNuQixPQUFRaUosY0FBVUEsT0FBTW9lLG9CQUFrQnBlO0lBQzlDLEdBQUlqSixNQUFNaUosTUFBS0E7SUFHUCxJQUFKNGUsTUFBTVQsZ0JBQWdCbmU7SUFDMUIsR0FBSTRlLFNBQVU7S0FDWkE7S0FDQTVlLEtBQUszSjs7UUFDQTtLQUNMMkosS0FBSzNKLFlBQVd1b0I7S0FDaEIsR0FBSTVlLE9BQVEsQ0FDVkEsUUFBUTRlO0tBQ1YsR0FBSUEsVUFDRjVlOztJQUVKLElBQUltQixJQUFJOUssaUJBQ0p3b0IsS0FBSzdlO0lBQ1RBLEtBQUtBLElBQUk2ZSxNQUFNMWQ7SUFDUixJQUFIMmQsS0FBSzllO0lBQ1RBLEtBQUtBLElBQUk4ZSxNQUFNM2Q7SUFDUixJQUFINGQsS0FBSy9lO0lBQ1Q2ZSxLQUFNQSxXQUFXOW5CLE9BQU82bkI7SUFDeEIsT0FBT0YsMkJBQTJCSyxJQUFJRCxJQUFJRDtHQUM1QztHYTRoQkEsU0FBU0csa0JBQWtCL0UsUUFBUWxCLElBQUlrRztJQUNyQ2hGLGlCQUFpQmxCO0lBQ2pCa0IsaUJBQWtCbEIsVUFBV0E7SUFDN0IsR0FBR0E7S0FDRCxJQUFVLElBQUY3aUIsT0FBT0EsSUFBSTZpQixnQkFBZ0I3aUI7TUFBSyxHQUNuQzZpQixRQUFRN2lCO09BQ1QrakIsaUJBQWlCbEIsUUFBUTdpQjtVQUN0QjtPQUNIK2pCO09BQ0FBO09BQ0FBLGlCQUFpQmxCLFFBQVE3aUI7OztLQUk3QixJQUFVLElBQUZBLE9BQU9BLElBQUk2aUIsZ0JBQWdCN2lCLEtBQUsrakIsaUJBQWdCbEIsUUFBUTdpQjtJQUNsRSxPQUFPNmlCOzs7O09BSUwsSUFBVSxJQUFGN2lCLE9BQU9BLElBQUk2aUIsZ0JBQWdCN2lCLEtBQ2pDK2pCLGdCQUFnQmxCLFFBQVE3aUI7T0FFMUI7OztPQUdBLElBQVUsSUFBRkEsT0FBT0EsSUFBSTZpQixnQkFBZ0I3aUIsS0FDakMrakIsaUJBQWlCbEIsUUFBUTdpQjtPQUUzQjs7T0FFQSxJQUFVLElBQUZBLE9BQU9BLElBQUk2aUIsZ0JBQWdCN2lCLEtBQ2pDK2pCLGlCQUFpQmxCLFFBQVE3aUI7T0FFM0I7OztPQUdBK2pCO09BQ0EsSUFBVSxJQUFGL2pCLE9BQU9BLElBQUk2aUIsZ0JBQWdCN2lCLEtBQ2pDK2pCLGlCQUFpQmxCLFFBQVE3aUI7T0FFM0I7O09BRUEsSUFBVSxJQUFGQSxPQUFPQSxJQUFJNmlCLG9CQUFvQjdpQixJQUFJO1FBQ25DLElBQUY2TSxJQUFJZ1gsb0JBQW9CaEIsT0FBTzdpQjtRQUNuQyxJQUFXLElBQUZ3TyxPQUFPQSxPQUFPQSxLQUFLdVYsZ0JBQWlCbFgsRUFBRTJCOztPQUVqRDs7T0FFQSxJQUFVLElBQUZ4TyxPQUFPQSxJQUFJNmlCLGdCQUFnQjdpQixJQUFJO1FBQy9CLElBQUY2TSxJQUFJZ1gsb0JBQW9CNEUseUJBQXlCNUYsT0FBTzdpQjtRQUM1RCxJQUFXLElBQUZ3TyxPQUFPQSxPQUFPQSxLQUFLdVYsZ0JBQWlCbFgsRUFBRTJCOztPQUVqRDs7T0FFQSxJQUFVLElBQUZ4TyxPQUFPQSxJQUFJNmlCLGdCQUFnQjdpQixJQUFJO1FBQy9CLElBQUY2TSxJQUFJc2IseUJBQXlCdEYsT0FBTzdpQjtRQUN4QytqQixpQkFBaUJsWDs7T0FFbkI7O09BRUEsSUFBVSxJQUFGN00sT0FBT0EsSUFBSTZpQixvQkFBb0I3aUIsSUFBSTtRQUNuQyxJQUFGd08sSUFBSXFVLE9BQU83aUI7UUFDZitqQixpQkFBaUJvRSx5QkFBeUIzWjtRQUMxQ3VWLGlCQUFpQm9FLHlCQUF5QjNaOztPQUU1Qzs7T0FFQSxJQUFVLElBQUZ4TyxPQUFPQSxJQUFJNmlCLG9CQUFvQjdpQixJQUFJO1FBQ3pDO1NBQUlncEIsVUFBVW5HLE9BQU83aUI7U0FDakI2TSxJQUFJZ1gsb0JBQW9CNEUseUJBQXlCTztRQUNyRCxJQUFXLElBQUZ4YSxPQUFPQSxPQUFPQSxLQUFLdVYsZ0JBQWlCbFgsRUFBRTJCO1FBQ3pDLElBQUYzQixJQUFJZ1gsb0JBQW9CNEUseUJBQXlCTztRQUNyRCxJQUFXLElBQUZ4YSxPQUFPQSxPQUFPQSxLQUFLdVYsZ0JBQWlCbFgsRUFBRTJCOztPQUVqRDs7SUFFRnVhLGFBQWFsRztJQUNia0csYUFBYWxHO0dBQ2Y7R0E3bkJBLFNBQVNvRyw2QkFBNkJDO0lBQ3BDLE9BQU9BLDhCQUNtQixrQkFDakI7O0dBRVg7R0FLQSxTQUFTQyxzQkFBc0JELE1BQU1FO0lBQ25DLElBQUlDO0lBQ0osT0FBT0g7O09BQ0VHLE9BQU9oQixjQUFjOztPQUNyQmdCLE9BQU9DLGNBQWM7O09BQ3JCRCxPQUFPRSxXQUFXOztPQUNsQkYsT0FBTzdNLFlBQVk7O09BQ25CNk0sT0FBT0csWUFBWTs7T0FDbkJILE9BQU9JLGFBQWE7O09BQ3BCSixPQUFPZCxZQUFZOztPQUNuQmMsT0FBT2QsWUFBWTs7T0FDbkJjLE9BQU9kLFlBQVk7O09BQ25CYyxPQUFPZCxZQUFZOztPQUNuQmMsT0FBT2hCLGNBQWM7O09BQ3JCZ0IsT0FBT0MsY0FBYzs7T0FDckJELE9BQU83TSxZQUFZOztJQUU1QixLQUFLNk0sTUFBTW5RO0lBQ0YsSUFBTDNTLFdBQVc4aUIsS0FBS0QsT0FBT0gsNkJBQTZCQztJQUN4RCxPQUFPM2lCO0dBQ1Q7R2JvR0EsU0FBU21qQix5QkFBMEI1ZjtJQUN0QixJQUFQd2UsYUFBYUM7SUFDakJELFlBQVl4ZTtJQUNDLElBQVRzZSxlQUFlQyxhQUFhQztJQUNoQyxPQUFPRjtHQUNUO0dBckRBLFNBQVN1Qix5QkFBMEI3ZjtJQUNqQyxJQUFJeU4sS0FBS3pOLE1BQ0wwTixLQUFLMU4sTUFDTDJOLEtBQUszTixNQUNMNGUsT0FBT2pSO0lBQ1gsR0FBSWlSO0tBQWEsUUFDVm5SLEtBQUdDLEtBQUlDO2VBQ0ZBLGdCQUFleVEsV0FBVUE7ZUFFMUIwQjtJQUVYLElBQUkzZSxJQUFJOUssbUJBQ0o4ZCxPQUFPMUcsS0FBR3RNLElBQUV1TSxNQUFJdk0sS0FBR3dNO0lBQ3ZCLEdBQUlpUixRQUFTO0tBQ1h6SztLQUNBQSxPQUFPOWQsWUFBV3VvQjs7O0tBRWxCekssT0FBTzlkO0lBQ1QsR0FBSXNYLGFBQWF3RyxRQUFRQTtJQUN6QixPQUFPQTtHQUNUO0dhbEhBLFNBQVM0TCxpQkFBaUJDO0lBQ3hCLElBQUlDLFNBQVNELGFBQ1RWO0lBQ0osSUFBVyxJQUFGcHBCLE9BQU9BLElBQUkrcEIsUUFBUS9wQixJQUFLO0tBQy9CLEdBQUk4cEIsS0FBSzlwQjtNQUNQa1o7S0FDRmtRLE9BQU9BLE9BQU9VLEtBQUs5cEI7O0lBRXJCLE9BQU9vcEI7R0FDVDtHckJ1VEEsU0FBU1ksd0JBQXdCelMsSUFBSUU7SUFDbkM7WUFBV0g7YUFDVEM7YUFDRUEsb0JBQXVCRTthQUN4QkE7R0FDTDtHQUtBLFNBQVN3UyxnQkFBZ0JoUSxHQUFJLE9BQU9BLFNBQVM7R0FIN0MsU0FBU2lRLGdCQUFnQmpRLEdBQUksT0FBT0EsU0FBUztHcUJyUnJCLElBQXBCa1E7R0FLSixTQUFTQyxZQUFhbEIsTUFBTW1CLFFBQVFQLE1BQU14UTtJQUV4Qy9iLFlBQWMyckI7SUFDZDNyQixjQUFjOHNCO0lBQ2Q5c0IsWUFBY3VzQjtJQUNkdnNCLFlBQVkrYjtHQUNkO0dBRUE4USxvQ0FBb0NEO0dBRXBDQzthQUF5Q3RSO0tBQy9CLElBQUpzSztLQUNKLFVBQVV0SyxrQkFBa0JBLE9BQU9BO0tBQ25DLE1BQU9BLGVBQWUxVTtNQUFROFU7S0FDOUIsR0FBSTNiLG9CQUFvQnViO01BQ3RCSTtLQUNGLEdBQUczYjtNQUFpQyxJQUN2QixJQUFGeUMsT0FBT0EsSUFBSXpDLGtCQUFrQnlDLElBQUs7T0FDekMsR0FBSThZLElBQUk5WSxVQUFVOFksSUFBSTlZLE1BQU16QyxVQUFVeUMsSUFDcENvaUI7T0FDRmdCLE1BQU9BLE1BQU03bEIsVUFBVXlDLEtBQU04WSxJQUFJOVk7OztNQUU5QixJQUNNLElBQUZBLElBQUl6QyxzQkFBc0J5QyxRQUFRQSxJQUFLO09BQzlDLEdBQUk4WSxJQUFJOVksVUFBVThZLElBQUk5WSxLQUFLekMsVUFBVXlDLElBQ25Db2lCO09BRUZnQixNQUFPQSxNQUFNN2xCLFVBQVV5QyxNQUFPOFksSUFBSTlZOztLQUd0QyxPQUFPb2pCO0lBcEJzQjtHQXVCL0JnSDthQUFzQ2hIO0tBQ3BDLE9BQU83bEI7O1FBR0wsSUFBSTBGLElBQUkxRixVQUFVNmxCLGNBQ2RuVCxJQUFJMVMsVUFBVTZsQjtRQUNsQixPQUFPNEcsd0JBQXdCL21CLEdBQUVnTjs7O1FBR2pDLElBQUl2TixJQUFJbkYsVUFBVTZsQixjQUNkcGpCLElBQUl6QyxVQUFVNmxCO1FBQ2xCLGFBQWExZ0IsR0FBRzFDO2dCQUVoQixPQUFPekMsVUFBVTZsQjs7SUFiTztHQWlCNUJnSDthQUFzQ2hILEtBQUluSjtLQUN4QyxPQUFPMWM7O1FBR0xBLFVBQVU2bEIsZUFBZThHLGdCQUFnQmpRO1FBQ3pDMWMsVUFBVTZsQixlQUFlNkcsZ0JBQWdCaFE7UUFDekM7OztRQUdBMWMsVUFBVTZsQixlQUFlbkosTUFDekIxYyxVQUFVNmxCLGVBQWVuSixNQUN6QjtnQkFFQTFjLFVBQVU2bEIsT0FBT25KLEdBQ2pCOztLQUVGO0lBaEIwQjtHQW9CNUJtUTthQUF1Q25RO0tBQ3JDLE9BQU8xYzs7UUFHTCxJQUFJdUYsSUFBSW9uQixnQkFBZ0JqUSxJQUNwQnBOLElBQUlvZCxnQkFBZ0JoUTtRQUN4QixHQUFHblgsS0FBSytKO1NBQ050UCxlQUFldUY7O1NBRVosSUFDTyxJQUFGOUMsT0FBT0EsSUFBRXpDLGtCQUFrQnlDO1VBQ2pDekMsVUFBVXlDLEtBQU1BLGFBQVk4QyxJQUFJK0o7UUFHcEM7OztRQUdBLElBQUltVSxLQUFLL0csTUFDTHFRLEtBQUtyUTtRQUNULEdBQUcrRyxNQUFNc0o7U0FDUC9zQixlQUFleWpCOztTQUVaLElBQ08sSUFBRmhoQixPQUFPQSxJQUFFekMsa0JBQWtCeUM7VUFDakN6QyxVQUFVeUMsS0FBTUEsYUFBWWdoQixLQUFLc0o7UUFHckM7Z0JBRUEvc0IsZUFBZTBjLElBQ2Y7O0lBOUJ5QjtHQW1DN0JtUTthQUEwQ3ZkLEdBQUcwZDtLQUMzQyxHQUFJaHRCLGVBQWVzUCxZQUFZdFAsYUFBYXNQLE9BQVE7TUFDbEQsSUFBSTJkLEtBQUtqdEIsWUFBYUEsa0JBQ2xCa3RCLEtBQVE1ZCxTQUFVQTtNQUN0QixPQUFPNGQsS0FBS0Q7O0tBRWQsR0FBSWp0QixvQkFBb0JzUDtNQUFlLE9BQzlCQSxnQkFBZ0J0UDtLQUV6QixJQUFXLElBQUZ5QyxPQUFPQSxJQUFJekMsa0JBQWtCeUM7TUFDcEMsR0FBSXpDLFVBQVV5QyxNQUFNNk0sT0FBTzdNLElBQ3pCLE9BQVF6QyxVQUFVeUMsS0FBSzZNLE9BQU83TTtLQUNsQyxPQUFRekM7Ozs7O1FBTU4sSUFBSXVNLEdBQUd0SjtRQUNQLElBQVcsSUFBRlIsT0FBT0EsSUFBSXpDLGtCQUFrQnlDLElBQUs7U0FDekM4SixJQUFJdk0sVUFBVXlDO1NBQ2RRLElBQUlxTSxPQUFPN007U0FDWCxHQUFJOEosSUFBSXRKLEdBQ047U0FDRixHQUFJc0osSUFBSXRKLEdBQ047U0FDRixHQUFJc0osS0FBS3RKLEVBQUc7VUFDVixLQUFLK3BCLE9BQU8sT0FBT1g7VUFDbkIsR0FBSTlmLEtBQUtBLEdBQUc7VUFDWixHQUFJdEosS0FBS0EsR0FBRzs7O1FBR2hCOztRQUdBLElBQVcsSUFBRlIsT0FBT0EsSUFBSXpDLGtCQUFrQnlDLE9BQU07U0FFMUMsR0FBSXpDLFVBQVV5QyxTQUFPNk0sT0FBTzdNLFFBQzFCO1NBQ0YsR0FBSXpDLFVBQVV5QyxTQUFPNk0sT0FBTzdNLFFBQzFCO1NBQ0YsR0FBS3pDLFVBQVV5QyxXQUFhNk0sT0FBTzdNLFVBQ2pDO1NBQ0YsR0FBS3pDLFVBQVV5QyxXQUFhNk0sT0FBTzdNLFVBQ2pDOztRQUVKOzs7Ozs7Ozs7UUFTQSxJQUFXLElBQUZBLE9BQU9BLElBQUl6QyxrQkFBa0J5QyxJQUFLO1NBQ3pDLEdBQUl6QyxVQUFVeUMsS0FBSzZNLE9BQU83TSxJQUN4QjtTQUNGLEdBQUl6QyxVQUFVeUMsS0FBSzZNLE9BQU83TSxJQUN4Qjs7UUFFSjs7S0FFRjtJQS9EOEI7R0FvRWhDLFNBQVMwcUIsa0JBQWtCeEIsTUFBTW1CLFFBQVFQLE1BQU14UTtJQUM3Qy9iLFlBQWMyckI7SUFDZDNyQixjQUFjOHNCO0lBQ2Q5c0IsWUFBY3VzQjtJQUNkdnNCLFlBQWMrYjtHQUNoQjtHQUVBb1Isa0NBQWtDTjtHQUNsQ007YUFBK0M1UjtLQUM3QyxVQUFVQTtNQUFpQixHQUNyQkEsZUFBZTFVLFNBQVUwVTtPQUMzQkEsTUFBTUE7O09BQ0hJO0tBRVAsR0FBSUosV0FBV0EsT0FBT3ZiLGNBQ3BCNmtCO0tBQ0YsT0FBT3RKO0lBUjRCO0dBV3JDNFIsMkNBQTRDdEgsS0FDMUMsT0FBTzdsQixVQUFVNmxCLEtBRGU7R0FJbENzSDthQUE0Q3RILEtBQUluSixHQUM5QzFjLFVBQVU2bEIsT0FBT25KLEdBQ2pCLFNBRmdDO0dBS2xDeVE7YUFBNkN6USxHQUMzQzFjLGVBQWUwYyxJQUNmLFNBRmlDO0dBYW5DLFNBQVMwUSxzQkFBc0J6QixNQUFNbUIsUUFBUVAsTUFBTXZqQjtJQUM1QixJQUFqQnFrQixtQkFBbUIzQiw2QkFBNkJDO0lBQ3BELEdBQUdXLGlCQUFpQkMsUUFBUWMsb0JBQW9CcmtCO0tBQzlDMlM7SUFFRixHQUFHbVIsZUFDQVAsb0JBQ0FjO0tBQ0QsV0FBV0Ysa0JBQWtCeEIsTUFBTW1CLFFBQVFQLE1BQU12akI7SUFDbkQsV0FBVzZqQixZQUFZbEIsTUFBTW1CLFFBQVFQLE1BQU12akI7R0FFN0M7R0F5WEEsU0FBU3NrQixvQkFBb0JDLFFBQVEvQixJQUFJbnJCO0lBQzFCLElBQVRtdEIsV0FBV0Q7SUFDZixHQUFJQyxnQkFBZ0JBO0tBQ2xCakw7SUFDRjtLQUFJNVAsTUFBTTRhO0tBQ041QixPQUFPaFo7S0FDUG1hLFNBQVVuYTtLQUNWNFo7SUFDSixHQUFHbHNCO0tBQ0QsSUFBVyxJQUFGb0MsT0FBT0EsSUFBSStxQixVQUFVL3FCLElBQUs7TUFDcEIsSUFBVGdyQixXQUFXRjtNQUNmLEdBQUdFLG1CQUFtQjtPQUNwQixJQUFJQyxjQUFjSCxrQkFDZEksY0FBY0o7T0FDbEIsR0FBR0c7UUFDRG5MO09BQ0ZrTCxXQUFXRTs7TUFFYnBCLFVBQVVrQjs7O0tBR1osSUFBVyxJQUFGaHJCLE9BQU9BLElBQUkrcUIsVUFBVS9xQixLQUFLOHBCLFVBQVVnQjtJQUMvQztLQUFJMUIsT0FBT1MsaUJBQWlCQztLQUN4QnZqQixPQUFPNGlCLHNCQUFzQkQsTUFBTUU7S0FDbkN2RyxLQUFLOEgsc0JBQXNCekIsTUFBTW1CLFFBQVFQLE1BQU12akI7SUFDbkQsT0FBTzJpQjs7T0FFTCxJQUFVLElBQUZscEIsT0FBT0EsSUFBSW9wQixNQUFNcHBCLEtBQ3ZCdUcsS0FBS3ZHLEtBQUs4cUIsaUJBRVo7OztPQUdBLElBQVUsSUFBRjlxQixPQUFPQSxJQUFJb3BCLE1BQU1wcEIsS0FDdkJ1RyxLQUFLdkcsS0FBSzhxQixpQkFFWjs7T0FFQSxJQUFVLElBQUY5cUIsT0FBT0EsSUFBSW9wQixNQUFNcHBCLEtBQ3ZCdUcsS0FBS3ZHLEtBQUs4cUIsa0JBRVo7O09BRUEsSUFBVSxJQUFGOXFCLE9BQU9BLElBQUlvcEIsTUFBTXBwQixLQUN2QnVHLEtBQUt2RyxLQUFLOHFCLGtCQUVaOztPQUVBLElBQVUsSUFBRjlxQixPQUFPQSxJQUFJb3BCLE1BQU1wcEIsS0FDdkJ1RyxLQUFLdkcsS0FBSzhxQixrQkFFWjs7O09BR1UsSUFBTkssUUFBUUw7T0FDWixHQUFHSztRQUFPckw7O09BQ1YsSUFBVSxJQUFGOWYsT0FBT0EsSUFBSW9wQixNQUFNcHBCLEtBQ3ZCdUcsS0FBS3ZHLEtBQUs4cUI7T0FFWjs7T0FFTSxJQUFGdG9CLFFBQVE0QjtPQUNaLElBQVUsSUFBRnBFLE9BQU9BLElBQUlvcEIsTUFBTXBwQixJQUFJO1FBQzNCLElBQVcsSUFBRndPLE9BQU1BLE9BQU1BLEtBQUtoTSxFQUFFZ00sS0FBS3NjO1FBQ3ZCLElBQU5NLFFBQVFuSSxvQkFBb0J6Z0I7UUFDaENxZ0IsT0FBTzdpQixHQUFFb3JCOztPQUVYOztPQUVNLElBQUY1b0IsUUFBUTRCO09BQ1osSUFBVSxJQUFGcEUsT0FBT0EsSUFBSW9wQixNQUFNcHBCLElBQUk7UUFDM0IsSUFBVyxJQUFGd08sT0FBTUEsT0FBTUEsS0FBS2hNLEVBQUVnTSxLQUFLc2M7UUFDM0IsSUFBRjlvQixJQUFJMm5CLHlCQUF5QjFHLG9CQUFvQnpnQjtRQUNyRHFnQixPQUFPN2lCLEdBQUVnQzs7T0FFWDs7T0FFQSxJQUFVLElBQUZoQyxPQUFPQSxJQUFJb3BCLE1BQU1wcEIsSUFBSTtRQUNyQixJQUFGZ0MsSUFBSTBuQix5QkFBeUJvQjtRQUNqQ2pJLE9BQU83aUIsR0FBRWdDOztPQUVYOztPQUVBLElBQVUsSUFBRmhDLE9BQU9BLElBQUlvcEIsTUFBTXBwQixJQUFJO1FBQzNCO1NBQUlzcUIsS0FBS1oseUJBQXlCb0I7U0FDOUI5SixLQUFLMEkseUJBQXlCb0I7UUFDbENqSSxPQUFPN2lCLFNBQU9zcUIsSUFBR3RKOztPQUVuQjs7T0FFTSxJQUFGeGUsUUFBUTRCO09BQ1osSUFBVSxJQUFGcEUsT0FBT0EsSUFBSW9wQixNQUFNcHBCLElBQUk7UUFDM0IsSUFBVyxJQUFGd08sT0FBTUEsT0FBTUEsS0FBS2hNLEVBQUVnTSxLQUFLc2M7UUFDMUIsSUFBSFIsS0FBS1gseUJBQXlCMUcsb0JBQW9CemdCO1FBQ3RELElBQVcsSUFBRmdNLE9BQU1BLE9BQU1BLEtBQUtoTSxFQUFFZ00sS0FBS3NjO1FBQzFCLElBQUg5SixLQUFLMkkseUJBQXlCMUcsb0JBQW9CemdCO1FBQ3REcWdCLE9BQU83aUIsU0FBT3NxQixJQUFHdEo7O09BRW5COztJQUVGK0gsYUFBYWdDO0lBQ2IsT0FBT0osc0JBQXNCekIsTUFBTW1CLFFBQVFQLE1BQU12akI7R0FDbkQ7R0FqZkEsU0FBUzhrQixnQkFBZ0J2b0IsR0FBRStKLEdBQUUwZCxPQUMzQixPQUFPem5CLFVBQVUrSixHQUFFMGQsT0FDckI7R012TEEsU0FBU2Usb0JBQXFCcmIsR0FBR2dLO0lBQy9CaEssSUFBSXVWLGtCQUFrQnZWLEdBQUdpYSxnQkFBZ0JqUTtJQUN6Q2hLLElBQUl1VixrQkFBa0J2VixHQUFHZ2EsZ0JBQWdCaFE7SUFDekMsT0FBT2hLO0dBQ1Q7R0FWQSxTQUFTc2Isb0JBQXFCdGIsR0FBR3ViO0lBQy9CLE9BQU9GLG9CQUFvQnJiLEdBQUd3WSx5QkFBMEIrQztHQUMxRDtHTndyQkEsU0FBU0MsYUFBYTVJO0lBQ3BCLElBQUk2SSxXQUFXN0IsaUJBQWlCaEgsVUFDNUI1UztJQUNKLE9BQU80Uzs7OztPQUlMLEdBQUc2SSxnQkFBZ0JBO09BQ25CLElBQUl2ZCxPQUFPbk87T0FDWCxJQUFJQSxPQUFPQSxTQUFTNmlCLGdCQUFnQjdpQixPQUFLO1FBQ3ZDbU87U0FBSTBVLFFBQVE3aUIsU0FBUTZpQixRQUFRN2lCLGNBQWM2aUIsUUFBUTdpQjtXQUFlNmlCLFFBQVE3aUI7UUFDekVpUSxJQUFJdVYsa0JBQWtCdlYsR0FBRTlCOztPQUUxQkE7T0FDQSxPQUFRdWQ7O1VBQ0F2ZCxJQUFLMFUsUUFBUTdpQjs7VUFDYm1PLEtBQUswVSxRQUFRN2lCOztVQUNibU8sS0FBSzBVLFFBQVE3aUIsUUFDbkJpUSxJQUFJdVYsa0JBQWtCdlYsR0FBRzlCOztPQUUzQjs7O09BR0EsR0FBR3VkLGdCQUFnQkE7T0FDbkIsSUFBSXZkLE9BQU9uTztPQUNYLElBQUlBLE9BQU9BLFNBQVM2aUIsZ0JBQWdCN2lCLE9BQUs7UUFDdkNtTyxJQUFJMFUsUUFBUTdpQixTQUFRNmlCLFFBQVE3aUI7UUFDNUJpUSxJQUFJdVYsa0JBQWtCdlYsR0FBRTlCOztPQUUxQixJQUFLdWQsb0JBQ0h6YixJQUFJdVYsa0JBQWtCdlYsR0FBRzRTLFFBQVE3aUI7T0FDbkM7O09BRUEsR0FBSTByQixlQUFlQTtPQUNuQixJQUFXLElBQUYxckIsT0FBT0EsSUFBSTByQixVQUFVMXJCLEtBQUtpUSxJQUFJdVYsa0JBQWtCdlYsR0FBRzRTLFFBQVE3aUI7T0FDcEU7OztPQUdBLEdBQUkwckIsZUFBZUE7T0FDbkIsSUFBVyxJQUFGMXJCLE9BQU9BLElBQUkwckIsVUFBVTFyQixLQUFLaVEsSUFBSXVWLGtCQUFrQnZWLEdBQUc0UyxRQUFRN2lCO09BQ3BFOztPQUVBLEdBQUkwckIsZUFBZUE7T0FDbkJBO09BQ0EsSUFBVyxJQUFGMXJCLE9BQU9BLElBQUkwckIsVUFBVTFyQixLQUM1QmlRLElBQUl1VixrQkFBa0J2VixHQUFHNFMsUUFBUTdpQjtPQUVuQzs7T0FFQTByQjs7T0FFQSxHQUFJQSxlQUFlQTtPQUNuQixJQUFXLElBQUYxckIsT0FBT0EsSUFBSTByQixVQUFVMXJCO1FBQUtpUSxJQUFJc2Isb0JBQW9CdGIsR0FBRzRTLFFBQVE3aUI7T0FDdEU7O09BRUEwckI7O09BRUEsR0FBSUEsZUFBZUE7T0FDbkIsSUFBVyxJQUFGMXJCLE9BQU9BLElBQUkwckIsVUFBVTFyQjtRQUFLaVEsSUFBSXNiLG9CQUFvQnRiLEdBQUc0UyxRQUFRN2lCO09BQ3RFOztJQUVGLE9BQU9pUTtHQUNUO0dKeG9CQSxTQUFTMGIscUJBQXFCYixRQUFRMUIsTUFDcENBLGFBQ0EsT0FBTzBCO0dBQ1Q7R0FJQSxTQUFTYyx5QkFBeUJkLFFBQVExQjtJQUN4QyxPQUFRMEI7O09BRU4xQixhQUNBLE9BQU8wQjs7T0FFUGhMO2VBQ09BOztHQUVYO0dBaENBLFNBQVMrTCxxQkFBcUJmLFFBQVExQjtJQUM5QixJQUFGNW1CLFFBQVE0QjtJQUNaLElBQVcsSUFBRm9LLE9BQU1BLE9BQU1BLEtBQUtoTSxFQUFFZ00sS0FBS3NjO0lBQ2pDMUI7SUFDQSxPQUFPbkcsb0JBQXFCemdCO0dBQzlCO0dqQlNBLFNBQVNzcEIsbUJBQW1CaGlCLEdBQUV0SixHQUFHK3BCLE9BQVMsT0FBT3pnQixVQUFVdEosR0FBRztHQThKOUQsU0FBU3VyQixnQkFBZ0I5UixHQUN2QixPQUFRQSxXQUFhQSxTQUN2QjtHaUJ4SW9CO0lBQWhCK1I7O3FCQUVnQkg7bUJBQ0QvSDs7aUJBRUhnSTtjQUNIQzsyQkFHUUo7MkJBSUFDOzs7aUJBSVdkLFFBQVEvQjtTQUFLLE9BQU84QixvQkFBcUJDLFFBQU8vQjtRQUExRDttQkFDSEQ7aUJBQ0Z1QztjQUNKSTs7O2lCQUdtQlgsUUFBUS9CO1NBQUssT0FBTzhCLG9CQUFxQkMsUUFBTy9CO1FBQTFEO21CQUNIRDtpQkFDRnVDO2NBQ0pJO0dLbE9iLFNBQVNRLDRCQUE0Qm5wQjtJQUNuQyxPQUFPa3BCLGdCQUFnQmxwQjtjQUFrQmtwQixnQkFBZ0JscEI7R0FDM0Q7R0FJQSxTQUFTb3BCLCtCQUErQkMsS0FBS0MsUUFBUUMsTUFBTTlCO0lBQ2hELElBQUx0UCxPQUFPZ1IsNEJBQTRCRztJQUN2QyxHQUFHblIsS0FBTTtLQUNELElBQUZuUixJQUFLdWlCLFdBQVVwUixLQUFLbVIsUUFBT0QsS0FBSTVCLFNBQU90UCxLQUFLa1IsS0FBSUMsUUFBTzdCO0tBQzFELEdBQUdBLFNBQVN6Z0IsS0FBS0EsR0FBRyxPQUFPdWlCO0tBQzNCLEtBQUl2aUIsT0FBTUEsR0FBRyxTQUFRQTtLQUNyQixJQUFJQSxhQUFhLE9BQVFBOztJQUUzQixPQUFPdWlCO0dBQ1Q7R0F0Q0EsU0FBU0MscUJBQXFCeHBCO0lBQzVCLFVBQVdBO0tBQWdCO1lBQ2xCdVosaUJBQWlCdlo7S0FBSTtZQUNyQndaLGtCQUFrQnhaO0tBQUk7WUFDdEJBLGFBQWFzQixTQUFTdEIsU0FBVUEsY0FBYUEsWUFBYSxDQUV6RCxJQUFKb04sTUFBTXBOLFVBR1YsT0FBUW9OLGlCQUFjQTtZQUVmcE4sYUFBYXBDO0tBQVE7bUJBQ2RvQztLQUFlO1lBQ3RCQSxhQUFhcU07S0FBUTtZQUNyQnJNLEtBQUtBO0tBQWU7WUFDcEJBLEtBQUtBO0tBQVc7bUJBQ1RBO0tBQWlCO21CQUNqQkEsZUFBZTtJQUMvQjtHQUNGO0dyQnNuQkEsU0FBU3lwQixvQkFBb0JyUCxJQUFJRTtJQUMvQixPQUFRRixLQUFLRSxXQUFRRixLQUFLRTtHQUM1QjtHQXRKQSxTQUFTb1AsbUJBQW1CdFAsSUFBSUU7SUFDN0JGLFlBQWFqQiw2QkFBNkJpQjtJQUMxQ0UsWUFBYW5CLDZCQUE2Qm1CO0lBQzNDLE9BQVFGLE9BQU9FLGFBQVVGLE9BQU9FO0dBQ2xDO0dxQjNjQSxTQUFTcVAsaUJBQWtCM3BCLEdBQUcrSixHQUFHMGQ7SUFDckIsSUFBTm1DO0lBQ0osT0FBUTtLQUNOLE1BQU1uQyxTQUFTem5CLE1BQU0rSixHQUFJO01BQ2IsSUFBTjhmLFFBQVFMLHFCQUFxQnhwQjtNQUVqQyxHQUFHNnBCLGFBQWMsQ0FBRTdwQixJQUFJQSxNQUFNO01BRW5CLElBQU44cEIsUUFBUU4scUJBQXFCemY7TUFFakMsR0FBRytmLGFBQWMsQ0FBRS9mLElBQUlBLE1BQU07TUFHN0IsR0FBRzhmLFVBQVVDLE1BQU87T0FDbEIsR0FBR0QsY0FBZTtRQUNoQixHQUFHQztTQUFlLE9BQ1RWLCtCQUErQnBwQixHQUFHK0osUUFBTzBkO1FBRWxEOztPQUVGLEdBQUdxQyxjQUFlO1FBQ2hCLEdBQUdEO1NBQWUsT0FDVFQsK0JBQStCcmYsR0FBRy9KLE1BQU15bkI7UUFFakQ7O09BRUYsT0FBUW9DLFFBQVFDOztNQUVsQixPQUFPRDs7U0FJTHpULG9EQUNBOztTQUVNLElBQUZwUCxJQUFJcWEsaUJBQWlCcmhCLE1BQU0rSixPQUMvQixHQUFJL0MsUUFBUSxPQUFRQSxPQUNwQjs7U0FHQW9QLG9EQUNBOztTQUdBQTtTQUNBOztTQUVBQSxnREFDQTs7U0FFQSxHQUFJcFcsTUFBTStKLEVBQUc7VUFDTCxJQUFGL0MsSUFBSTBpQixtQkFBbUIxcEIsR0FBRytKO1VBQzlCLEdBQUkvQyxRQUFRLE9BQVFBOztTQUV0Qjs7U0FHQW9QO1NBQ0E7O1NBR0FBOztTQUNBOztTQUVBQTtTQUNBOztTQUVBQSxvREFDQTs7U0FFUyxJQUFMK0IsT0FBT2dSLDRCQUE0Qm5wQjtTQUN2QyxHQUFHbVksUUFBUWdSLDRCQUE0QnBmO1VBQUcsT0FDaEMvSixnQkFBYytKO1NBRXhCLEtBQUlvTyxNQUNGL0I7U0FDSSxJQUFGcFAsSUFBSW1SLEtBQUtuWSxHQUFFK0osR0FBRTBkO1NBQ2pCLEdBQUd6Z0IsS0FBS0EsR0FBRSxPQUNEeWdCLGNBQVN6Z0I7U0FFbEIsR0FBR0EsT0FBT0EsUUFBSztTQUdmLEdBQUlBLFFBQVEsT0FBUUE7U0FDcEI7O1NBRU0sSUFBRkEsSUFBSWhILFVBQVUrSixHQUFFMGQ7U0FDcEIsR0FBR3pnQixLQUFLQSxHQUFHLE9BQ0Z5Z0IsY0FBU3pnQjtTQUVsQixHQUFHQSxPQUFPQSxRQUFLO1NBR2YsR0FBSUEsUUFBUSxPQUFRQTtTQUNwQjs7U0FFQWhILE1BQUtBO1NBQ0wrSixNQUFLQTtTQUNMLEdBQUkvSixJQUFJK0osR0FBRztTQUNYLEdBQUkvSixJQUFJK0osR0FBRztTQUNYLEdBQUkvSixLQUFLK0osRUFBRztVQUNWLEtBQUswZCxPQUFPLE9BQU9YO1VBQ25CLEdBQUk5bUIsS0FBS0EsR0FBRztVQUNaLEdBQUkrSixLQUFLQSxHQUFHOztTQUVkOztTQWVBLEdBQUkvSixJQUFJK0osR0FBRztTQUNYLEdBQUkvSixJQUFJK0osR0FBRztTQUNYLEdBQUkvSixLQUFLK0osRUFBRztVQUNWLEtBQUswZCxPQUFPLE9BQU9YO1VBQ25CLEdBQUk5bUIsS0FBS0EsR0FBRztVQUNaLEdBQUkrSixLQUFLQSxHQUFHOztTQUVkOztTQUVBLEdBQUcvSixNQUFNK0osRUFBRyxDQUNWLEtBQUswZCxPQUFPLE9BQU9YLEtBQ25CLFdBRUY7O1NBRUEsSUFBSTltQixJQUFJc1YsdUJBQXVCdFYsSUFDM0IrSixJQUFJdUwsdUJBQXVCdkw7U0FDL0IsR0FBRy9KLE1BQU0rSixFQUFHLENBQ1YsR0FBRy9KLElBQUkrSixHQUFHLFlBQ1YsR0FBRy9KLElBQUkrSixHQUFHO1NBRVo7O1NBRUEsSUFBSS9KLElBQUlBLGNBQ0orSixJQUFJQTtTQUNSLEdBQUcvSixNQUFNK0osRUFBRyxDQUNWLEdBQUcvSixJQUFJK0osR0FBRyxZQUNWLEdBQUcvSixJQUFJK0osR0FBRztTQUVaOzs7O1NBSUEsR0FBR2tiLHlCQUF5QjRFLE9BQVE7VUFDbEN6VDtVQUNBOztTQUVGLEdBQUlwVyxZQUFZK0osVUFBVSxPQUFRL0osV0FBVytKO1NBQzdDLEdBQUkvSixjQUFjNHBCLFdBQVc1cEIsR0FBRytKO1NBQ2hDOzs7S0FHSixHQUFJNmYsbUJBQW1CO0tBQ2pCLElBQUYxc0IsSUFBSTBzQjtLQUNSN2YsSUFBSTZmO0tBQ0o1cEIsSUFBSTRwQjtLQUNKLEdBQUkxc0IsUUFBUThDLFVBQVU0cEIsV0FBVzVwQixHQUFHK0osR0FBRzdNO0tBQ3ZDOEMsSUFBSUEsRUFBRTlDO0tBQ042TSxJQUFJQSxFQUFFN007O0dBRVY7R0FtQkEsU0FBUzZzQixpQkFBa0IvaUIsR0FBR3RKO0lBQUssVUFBU2lzQixpQkFBaUIzaUIsR0FBRXRKO0dBQWU7R1JxQjlFLFNBQVNzc0IsV0FBV2hxQixHQUFHK0osR0FBR3ZEO0lBQ3hCO0tBQUlRLElBQUloSCxhQUFhK0o7S0FDakJyTSxJQUFJTCxXQUFXMkosSUFBRVI7S0FDakJ5akIsSUFBS2pqQixJQUFJUjtLQUNUNkUsSUFBSTRlLEtBQUtsZ0I7SUFDYixRQUFRck0sSUFBSUwsV0FBV2dPLElBQUU3RSxJQUFJNkUsSUFBSTdFO0dBQ25DO0dBS0EsU0FBUzBqQixjQUFjQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNOU0sTUFBTUMsTUFBTWxNLEtBQUtvTSxNQUFNQztJQUM1RCxJQUFKMk0sTUFBTy9NLFVBQVVDLE9BQUtsTTtJQUcxQixJQUFVLElBQUZyVSxJQUFJcVUsU0FBT3JVLFFBQVFBLElBQUs7S0FDeEI7TUFBRjhKLElBQUlnakIsV0FBV08sS0FBTS9NLFVBQVVDLE9BQUt2Z0IsVUFBWXlnQixVQUFVQztLQUM5RHVNLFVBQVVDLE9BQUtsdEIsS0FBSzhKO0tBQ3BCdWpCLE1BQU12akI7O0lBRVJxakIsVUFBVUMsUUFBUUM7SUFDbEI7R0FDRjtHQWpNQSxTQUFTQywrQkFBK0JwSCxLQUFLOUM7SUFDM0MsSUFBSXRnQixJQUFJb2pCLFNBQVM5QyxNQUNidlc7SUFDSixHQUFHL0osZUFBZ0IsQ0FBRStKLFNBQVEvSjtJQUM3QixHQUFHQSxXQUFnQixDQUFFK0osUUFBUS9KO0lBQzdCLEdBQUdBLFNBQWdCLENBQUUrSixRQUFRL0o7SUFDN0IsR0FBR0EsT0FBZ0IsQ0FBRStKLFFBQVEvSjtJQUM3QixHQUFHQSxNQUFnQixDQUFFK0osUUFBUS9KO0lBQzdCLEdBQUdBLE9BQWtCK0o7SUFDckIsWUFBWUE7R0FDZDtHQWdKQSxTQUFTMGdCLGVBQWVqTixNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQztJQUNwRCxHQUFHQSxXQUFZLENBQ2JGLFVBQVVDLFdBQ1Y7SUFFTyxJQUFMRTtJQUNKLElBQVUsSUFBRjVnQixPQUFPQSxJQUFJd2dCLE1BQU14Z0IsSUFBSztLQUN0QixJQUFGOEMsSUFBS3dkLFVBQVVDLE9BQUt2Z0I7S0FDeEJzZ0IsVUFBVUMsT0FBS3ZnQixLQUFNOEMsS0FBSzZkLFFBQVNDO0tBQ25DQSxPQUFPOWQsV0FBWTZkOztJQUVyQkYsVUFBVUMsUUFBUUU7SUFDbEI7R0FDRjtHQW5RQSxTQUFTNE0sTUFBTTFqQjtJQUNidk0sZ0JBQWdCZ3JCLFdBQVd6ZTtJQU8zQnZNLGNBQWNBO0dBQ2hCO0dBRUFpd0I7R0EwQkEsU0FBU0MsV0FBV3JFO0lBQ1YsSUFBSmxULFVBQVVzWCxNQUFNcEU7SUFDcEIsSUFBVSxJQUFGcHBCLE9BQU9BLElBQUlvcEIsTUFBTXBwQixLQUN2QmtXLFNBQVNsVztJQUVYLE9BQU9rVztHQUNUO0dBR0EsU0FBU3dYLGdCQUFnQnhILEtBQUs5QyxLQUFLL087SUFDakMsSUFBVSxJQUFGclUsT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUN0QmttQixTQUFTOUMsTUFBSXBqQjtJQUVmO0dBQ0Y7R0F3RUEsU0FBUzJ0QixTQUFTekgsS0FBSzlDLEtBQUsvTyxLQUFLdVo7SUFDckIsSUFBTkMsUUFBUUQ7SUFDWixJQUFVLElBQUY1dEIsT0FBT0EsSUFBSXFVLEtBQUtyVSxJQUFLO0tBQ3JCLElBQUY4SixLQUFLb2MsU0FBUzlDLE1BQUlwakIsWUFBWTZ0QjtLQUNsQzNILFNBQVM5QyxNQUFJcGpCLEtBQU04SjtLQUNuQixHQUFHQSxLQUFNQSxRQUFVLENBQ2pCK2pCLFdBQ0EsYUFFQUE7O0lBR0osT0FBT0E7R0FDVDtHQUtBLFNBQVNDLFFBQVF4TixNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNcU4sTUFBTUg7SUFDekMsSUFBTkMsUUFBUUQ7SUFDWixJQUFVLElBQUY1dEIsT0FBT0EsSUFBSSt0QixNQUFNL3RCLElBQUs7S0FDdEI7TUFBRjhKLEtBQUt3VyxVQUFVQyxPQUFLdmdCLGFBQWF5Z0IsVUFBVUMsT0FBSzFnQixZQUFZNnRCO0tBQ2hFdk4sVUFBVUMsT0FBS3ZnQixLQUFLOEo7S0FDcEIsR0FBR0EsS0FBTUEsU0FDUCtqQixnQkFFQUE7O0lBR0osT0FBT0YsU0FBU3JOLE1BQU1DLE9BQUt3TixNQUFNdk4sT0FBS3VOLE1BQU1GO0dBQzlDO0dBMUhBLFNBQVNHLGFBQWEvcUIsR0FDcEIsV0FBV3VxQixNQUFNdnFCLEdBQ25CO0dBd0tBLFNBQVNnckIsZUFBZTNOLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1xTixNQUFNRyxNQUFNQztJQUNoRSxJQUFJTixXQUNBL3FCLElBQUtvckIsVUFBVUM7SUFDbkIsSUFBVSxJQUFGbnVCLE9BQU9BLElBQUkrdEIsTUFBTS90QixJQUFLO0tBQzVCO01BQUlvdUI7U0FBTTlOLFVBQVVDLE9BQUt2Z0I7V0FBYXlnQixVQUFVQyxPQUFLMWdCLGFBQWE4QztVQUFrQitxQjtNQUNoRlEsTUFBTTVOLFVBQVVDLE9BQUsxZ0IsYUFBYThDO0tBQ3RDK3FCLFFBQVExdEIsV0FBV2t1QjtLQUNaLElBQUhDLEtBQUtGLEtBQU1DO0tBQ2YvTixVQUFVQyxPQUFLdmdCLEtBQUtzdUI7S0FDcEJULFNBQVMxdEIsV0FBV211Qjs7SUFHdEIsT0FBR1AsT0FBT3ZOLFFBQVFxTjtjQUNUQztlQUFReE4sTUFBTUMsT0FBS3dOLE1BQU12TixPQUFLdU4sTUFBTUMsY0FBY0g7Y0FFbERBO0dBRVg7R0F0REEsU0FBU1UsU0FBU3JJLEtBQUs5QyxLQUFLL08sS0FBS3VaO0lBQ3BCLElBQVBZLFNBQVVaO0lBQ2QsSUFBVSxJQUFGNXRCLE9BQU9BLElBQUlxVSxLQUFLclUsSUFBSztLQUNyQixJQUFGOEosS0FBS29jLFNBQVM5QyxNQUFJcGpCLFlBQVd3dUI7S0FDakN0SSxTQUFTOUMsTUFBSXBqQixLQUFLOEo7S0FDbEIsR0FBSUEsT0FBUSxDQUNWMGtCLFlBQ0EsYUFFQUE7O0lBR0osT0FBUUE7R0FDVjtHQU1BLFNBQVNDLFFBQVFuTyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNcU4sTUFBTUg7SUFDeEMsSUFBUFksU0FBVVo7SUFDZCxJQUFVLElBQUY1dEIsT0FBT0EsSUFBSSt0QixNQUFNL3RCLElBQUs7S0FDdEI7TUFBRjhKLEtBQUt3VyxVQUFVQyxPQUFLdmdCLGFBQWF5Z0IsVUFBVUMsT0FBSzFnQixZQUFZd3VCO0tBQ2hFbE8sVUFBVUMsT0FBS3ZnQixLQUFLOEo7S0FDcEIsR0FBSUEsUUFDRjBrQixpQkFFQUE7O0lBR0osT0FBT0QsU0FBU2pPLE1BQU1DLE9BQUt3TixNQUFNdk4sT0FBS3VOLE1BQU9TO0dBQy9DO0dBNEpBLFNBQVNFLFlBQVlwTyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNcU47SUFDakQ7S0FBSWpyQixJQUFJbWpCLGVBQWUzRixNQUFNQyxNQUFNQztLQUMvQjNULElBQUlvWixlQUFleEYsTUFBTUMsTUFBTXFOO0lBQ25DLEdBQUdqckIsSUFBSStKLEdBQUc7SUFDVixHQUFHL0osSUFBSStKLEdBQUc7SUFDVixJQUFVLElBQUY3TSxJQUFJd2dCLFVBQVV4Z0IsUUFBUUEsSUFBSztLQUNqQyxHQUFLc2dCLFVBQVVDLE9BQUt2Z0IsV0FBYXlnQixVQUFVQyxPQUFLMWdCLFVBQVc7S0FDM0QsR0FBS3NnQixVQUFVQyxPQUFLdmdCLFdBQWF5Z0IsVUFBVUMsT0FBSzFnQixVQUFXOztJQUU3RDtHQUNGO0dBckVBLFNBQVMydUIsUUFBUXJPLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1DLE1BQU1xTjtJQUM3QyxHQUFHQSxVQUFXO0tBQ1pmLGNBQWMxTSxNQUFNQyxVQUFRRCxNQUFNQyxNQUFNRCxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQztLQUNoRTs7SUFHSSxJQUFGL2QsSUFBSTJxQiwrQkFBK0I3TSxNQUFNQyxPQUFLcU47SUFDbERSLGVBQWU5TSxNQUFNQyxNQUFNcU4sTUFBTUMsc0JBQXNCcnJCO0lBQ3ZENHFCLGVBQWVqTixNQUFNQyxNQUFNQyxNQUFNd04sc0JBQXNCcnJCO0lBRXZELElBQUl0RSxLQUFLb2lCLFVBQVVDLE9BQUtxTixzQkFDcEJqckIsSUFBSTJxQixXQUFXTTtJQUNuQixJQUFXLElBQUYvdEIsSUFBSXdnQixVQUFVeGdCLEtBQUsrdEIsTUFBTS90QixJQUFLO0tBRTdCO01BQUo0dUI7UUFBTXZ3QjtXQUFtQmlpQixVQUFVQyxPQUFLdmdCO1dBQVk4c0I7YUFBWXhNLFVBQVVDLE9BQUt2Z0IsVUFBWXNnQixVQUFVQyxPQUFLdmdCLGNBQVkzQjs7S0FDMUhxdkIsZ0JBQWdCNXFCLE1BQU1pckI7S0FDdEJFLGVBQWVuckIsTUFBTWlyQixVQUFRdE4sTUFBTUMsTUFBTXFOLE1BQU1DLGNBQWNZO0tBQzdESCxRQUFRbk8sTUFBTUMsT0FBS3ZnQixJQUFFK3RCLE1BQU1BLFVBQVFqckIsTUFBTWlyQjtLQUV6QztNQUFPek4sVUFBVUMsT0FBS3ZnQjtTQUFXMHVCLFlBQVlwTyxNQUFNQyxPQUFLdmdCLElBQUUrdEIsTUFBTUEsTUFBTXROLE1BQU1DLE1BQU1xTixXQUFZO01BQzVGYSxNQUFNQTtNQUNOSCxRQUFRbk8sTUFBTUMsT0FBS3ZnQixJQUFFK3RCLE1BQU1BLFVBQVF0TixNQUFNQyxNQUFNcU47O0tBR2pEek4sVUFBVUMsT0FBS3ZnQixLQUFLNHVCOztJQUd0QnZPLGdCQUFnQkMsTUFBTUMsTUFBTXdOLE1BQU1DLHNCQUFzQnJyQjtJQUN4RDBkLGdCQUFnQkksTUFBTUMsTUFBTXFOLE1BQU1DLHNCQUFzQnJyQjtJQUN4RDtHQUNGO0dPMEtBLFNBQVNrc0IsYUFBYS9KLEtBQUtFO0lBQ3pCLEdBQUlBLG1CQUFtQkY7S0FDckI1TDtJQUNGLElBQVcsSUFBRmxaLE9BQU9BLElBQUlnbEIsaUJBQWlCaGxCO0tBQ25DLEdBQUlnbEIsU0FBU2hsQixNQUFNOGtCLFNBQVM5a0I7TUFDMUJrWjtJQUNKOEwsYUFBYUY7SUFDYjtHQUNGO0dQM1lBLFNBQVNnSyxhQUFhNUksS0FBSzlDLEtBQ3pCLEdBQUk4QyxTQUFTOUMsV0FBVyxVQUN4QixTQUNGO0dkMElBLFNBQVMyTCxlQUFnQmpsQixHQUFHdEosR0FBSyxPQUFPc0osTUFBTXRKLEdBQUc7R3lCdExqRCxTQUFTd3VCLGVBQWVDLElBQUlDLEtBQUt4UixLQUFLcko7SUFDcEMsTUFBTUEsUUFBUTtLQUNaLEdBQUc2UCxjQUFjK0ssSUFBR3ZSLFFBQVF3UixLQUFLLE9BQU94UjtLQUN4Q0E7S0FDQXJKOztJQUVGO0dBQ0Y7R00zQ0EsU0FBUzhhLHNCQUFzQnhzQjtJQUNsQixJQUFQeXNCO0lBQ0osR0FBR3pzQixRQUFReXNCLFFBQ1g7S0FDRSxJQUFJN3JCLEtBQUs4ckIsT0FBTzlwQjtLQUNoQjhwQixpQkFBZ0Ixc0I7S0FDaEJZLE1BQUs4ckIsb0JBQW9CQTtLQUN6QkEsT0FBSzN3QjtLQUNMLE9BQU82RTs7O0tBR1B1YyxrQ0FBa0NuZDtHQUV0QztHOUIybEJBLFNBQVMyc0IsdUJBQXdCM3NCLEdBQUczQyxHQUFHc0o7SUFDckN3VztHQUNGO0dEN1hBLFNBQVN5UCxvQkFBcUJ6bEI7SUFDNUIsR0FBSUEsT0FBT0EsSUFBSTNKLFVBQVUySjtJQUN6QjtZQUFXd047YUFDVHhOO2FBQ0EzSixXQUFXMkosSUFBSW9OO2FBQ2YvVyxXQUFXMkosSUFBSW9OLG9CQUFvQkE7R0FDdkM7R2tCekVBLFNBQVNzWSx3QkFBd0JsTjtJQUN0QixJQUFMTCxPQUFPRixpQkFBaUJPO0lBQzVCLE9BQU9pTixvQkFBb0J0TjtHQUM3QjtHR2dSQSxTQUFTd04sY0FBYzVNLElBQUlNLElBQUloRyxJQUFJbEQ7SUFDakM0SSxPQUFPQSxXQUFXTSxJQUFHaEcsTUFBTWxEO0lBQzNCO0dBQ0Y7R2pCMVZBO0lBQUl5VjtNQUFhO1FBQ2YsSUFBSXBYLFVBQVVDLG9CQUNWb1gsZ0JBQ0FoVTtRQUVKLEdBQUdyRCxXQUNHQSxnQkFDQUEsd0JBQXlCO1NBQ3BCLElBQUxzWCxPQUFPdFg7U0FFWHFYLE9BQU9DO1NBQ1BqVSxPQUFPaVU7O1FBR1QsSUFBSWxXLElBQUkwQix3QkFBd0J1VSxPQUM1QkUsWUFBWW5XO1FBQ2hCLElBQVUsSUFBRjFaLE9BQU9BLElBQUkyYixhQUFhM2I7U0FDOUI2dkIsV0FBV3pVLHdCQUF3Qk8sS0FBSzNiO1FBQzFDLE9BQU82dkI7T0FsQlM7O0lBdUJkQyx1QkFBdUJKO0dFMFAzQixTQUFTSyxvQkFBcUJwdEIsR0FBSSxPQUFPbkYsS0FBSzBjLHdCQUF3QnZYLElBQUk7R1FkMUUsU0FBU3F0QixjQUFjak0sUUFBUW1DLEtBQUs2QztJQUMxQixJQUFKMVUsTUFBTTZSO0lBQ1ZuQyxpQkFBaUIxUDtJQUNqQixJQUFVLElBQUZyVSxPQUFPQSxJQUFJcVUsS0FBS3JVLEtBQ3RCK2pCLGlCQUFpQm1DLFNBQVNsbUI7SUFFNUIrb0IsUUFBUTFVO0lBQ1IwVSxRQUFRMVU7R0FDVjtHSzNXQSxTQUFTNGIsaUJBQWlCQyxVQUN4QixTQUNGO0dmckJBLFNBQVNDLGNBQWU1VTtJQUN0QixHQUFHaEQsaUJBQWlCQSxnQkFBZ0JnRDtJQUVwQyxHQUFHaEQsc0JBQXNCQTtLQUN2QkEsd0JBQXdCZ0Q7SUFDMUJyQztHQUNGO0djOElBLFNBQVNrWCx3QkFBd0I5TjtJQUN0QixJQUFMTCxPQUFPRixpQkFBaUJPO0lBQzVCLE9BQU9MO0dBQ1Q7R1p5QkEsU0FBU29PLG1CQUFtQnZ0QixHQUMxQixPQUFPQSxXQUNUO0dlcVhBLFNBQVN3dEIsZ0JBQWdCek4sSUFBSTBOO0lBQzNCQSxPQUFPRixtQkFBbUJFO0lBQzFCLElBQUlDLGNBQ0F6RixXQUFXd0Y7SUFFZixHQUFJeEYsZ0JBQWdCQTtLQUNsQjdSO0lBRVcsSUFBVHdTO0lBQ0osSUFBVyxJQUFGMXJCLE9BQU9BLElBQUkrcUIsVUFBVS9xQixJQUFLO0tBQ2pDd3dCLFFBQVF4d0IsS0FBS3V3QixLQUFLdndCO0tBQ2xCLEdBQUl3d0IsUUFBUXh3QjtNQUNWa1o7S0FDRndTLFdBQVdBLFdBQVc4RSxRQUFReHdCOztJQUd2QixJQUFMb3BCLE9BQU9TLGlCQUFpQmhIO0lBRTVCLEdBQUk2SSxZQUFZdEM7S0FDZGxRO0lBQ0YsT0FBT3lSLHNCQUFzQjlILFNBQVNBLFdBQVcyTixTQUFTM047R0FDNUQ7R1dwbEJBLElBQUk0TixvQ0FGQUM7R0FPSixTQUFTQyxrQ0FBbUNDLFNBQVNDLFNBQVNDO0lBQzVETCxxQ0FBcUMxTyxpQkFBaUIrTztJQUN0REoscUNBQXFDM08saUJBQWlCOE87SUFDM0MsSUFBUGx0QixTQUFTb2UsaUJBQWlCNk87SUFDOUI3TyxpQkFBaUI4TyxXQUFXbHRCO0lBQzVCb2UsaUJBQWlCK08sV0FBV250QjtJQUM1QjtHQUNGO0dGeUhvQixJQUFoQm90QjtHQUlKLFNBQVNDLGVBQWdCbmtCLEdBQ3ZCQSxPQUFLa2tCLG1CQUNMLE9BQU9sa0IsRUFDVDtHZjBLQSxTQUFTb2tCLGtCQUFrQm5uQixHQUFFdEosR0FBRTJOLEdBQUU4QjtJQUN6QixJQUFGdE4sSUFBSW1lO0lBQ1JuZSxtQkFBbUJtSCxHQUFFbkgsV0FBV25DLEdBQUUyTixLQUFHOEI7SUFDckM7R0FDRjtHQXJMQSxTQUFTaWhCLHlCQUF5QnR6QjtJQUMxQixJQUFGK0UsSUFBSW1lO0lBQ1JuZSxVQUFVL0U7SUFDQyxJQUFQdXpCLFNBQVNqWCx3QkFBd0J0YztJQUNyQyxHQUFHK0UsYUFBYUEsWUFBWXd1QjtJQUM1QjtHQUNGO0dabURBLFNBQVNDLHVCQUEwQixPQUFPaGEsaUJBQWtCO0dIMkQ1RCxTQUFTaWEsZ0NBQWlDdm5CLEdBQUduSCxHQUFLLE9BQU9tSCx1QkFBdUJuSDtHQUFHO0dxQnFJbkYsU0FBUzJ1QixvQkFBb0J6TyxJQUFJTTtJQUN2QixJQUFKQyxNQUFNUCxVQUFVTTtJQUNwQixHQUFHQyxXQUFXUCxnQkFBZ0JUO0lBQzlCLElBQUlpQixLQUFLUixPQUFPTyxNQUNaRSxLQUFLVCxPQUFPTztJQUNoQixPQUFRQyxLQUFNQztHQUNoQjtHSTlYQSxTQUFTaU8sMEJBQTBCem5CLEdBQ2pDLFNBQ0Y7R1FzRkEsU0FBUzBuQixpQkFBa0JDLE9BQU96cUI7SUFDaEMsR0FBSUEsZUFBZXlxQixrQkFBa0JyUDtJQUNyQyxPQUFPcVA7R0FDVDtHQ2hHQSxTQUFTQywyQkFBMkJDLFdBQVczeEI7SUFDN0MsR0FBSUEsV0FBVzJ4Qix1QkFBdUJ2UDtHQUN4QztHQUlBLFNBQVN3UDtJQUFtQzdNLFNBQVNELEtBQUtHLFNBQVNELEtBQUszUTtJQUN0RSxHQUFHQSxVQUFVO0lBQ2JtZCxpQkFBaUJ4TSxLQUFJQztJQUNyQnVNLGlCQUFpQnhNLEtBQUlDLFVBQVE1UTtJQUM3QnFkLDJCQUEyQjVNLEtBQUtDO0lBQ2hDMk0sMkJBQTJCNU0sS0FBS0MsVUFBVTFRO0lBQzFDO0tBQUlnVixXQUFXL3JCLCtCQUErQitXO0tBQzFDaUYsYUFBYWhjLDZCQUE2QityQjtJQUM5Qy9QLFdBQVd3TCxrQkFBa0JDLFNBQVNBLFVBQVcxUTtJQUNqRCxJQUFVLElBQUZyVSxPQUFPQSxJQUFJcVUsS0FBS3JVLEtBRXRCZ2xCLElBQUlDLFVBQVFqbEIsU0FBT3FwQixLQUFLcnBCO0lBRTFCO0dBQ0Y7R1pzTkEsU0FBUzZ4QixhQUFjL3VCLEdBQUcrSixHQUFLLE9BQU80ZixpQkFBa0IzcEIsR0FBRytKLFNBQVU7R2E1TC9DO0lBQWxCaWxCO01BQW9CO1FBQ3RCLFNBQVNDLElBQUtqb0IsR0FBR3RKLEdBQUssT0FBUXNKLElBQUl0SixNQUFRO1FBQzFDLFNBQVN3eEIsR0FBR2phLEdBQUVqVixHQUFFK0osR0FBRS9DLEdBQUVuSCxHQUFFSDtTQUNwQk0sSUFBSWl2QixJQUFJQSxJQUFJanZCLEdBQUdpVixJQUFJZ2EsSUFBSWpvQixHQUFHdEg7U0FDMUIsT0FBT3V2QixJQUFLanZCLEtBQUtILElBQU1HLFdBQVlILEdBQUtrSztRQUMxQztRQUNBLFNBQVNvbEIsR0FBR252QixHQUFFK0osR0FBRXZELEdBQUVqTCxHQUFFeUwsR0FBRW5ILEdBQUVIO1NBQ3RCLE9BQU93dkIsR0FBSW5sQixJQUFJdkQsTUFBUXVELElBQUt4TyxHQUFJeUUsR0FBRytKLEdBQUcvQyxHQUFHbkgsR0FBR0g7UUFDOUM7UUFDQSxTQUFTMHZCLEdBQUdwdkIsR0FBRStKLEdBQUV2RCxHQUFFakwsR0FBRXlMLEdBQUVuSCxHQUFFSDtTQUN0QixPQUFPd3ZCLEdBQUlubEIsSUFBSXhPLElBQU1pTCxNQUFNakwsR0FBS3lFLEdBQUcrSixHQUFHL0MsR0FBR25ILEdBQUdIO1FBQzlDO1FBQ0EsU0FBUzJ2QixHQUFHcnZCLEdBQUUrSixHQUFFdkQsR0FBRWpMLEdBQUV5TCxHQUFFbkgsR0FBRUgsR0FBSyxPQUFPd3ZCLEdBQUdubEIsSUFBSXZELElBQUlqTCxHQUFHeUUsR0FBRytKLEdBQUcvQyxHQUFHbkgsR0FBR0gsR0FBSTtRQUNsRSxTQUFTVCxHQUFHZSxHQUFFK0osR0FBRXZELEdBQUVqTCxHQUFFeUwsR0FBRW5ILEdBQUVIO1NBQUssT0FBT3d2QixHQUFHMW9CLEtBQUt1RCxNQUFNeE8sSUFBS3lFLEdBQUcrSixHQUFHL0MsR0FBR25ILEdBQUdIO1FBQUk7UUFFdkUsZ0JBQWlCMkwsR0FBR21MO1NBQ2xCLElBQUl4VyxJQUFJcUwsTUFBTXRCLElBQUlzQixNQUFNN0UsSUFBSTZFLE1BQU05UCxJQUFJOFA7U0FFdENyTCxJQUFJbXZCLEdBQUdudkIsR0FBRytKLEdBQUd2RCxHQUFHakwsR0FBR2liO1NBQ25CamIsSUFBSTR6QixHQUFHNXpCLEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUkyb0IsR0FBRzNvQixHQUFHakwsR0FBR3lFLEdBQUcrSixHQUFHeU07U0FDbkJ6TSxJQUFJb2xCLEdBQUdwbEIsR0FBR3ZELEdBQUdqTCxHQUFHeUUsR0FBR3dXO1NBQ25CeFcsSUFBSW12QixHQUFHbnZCLEdBQUcrSixHQUFHdkQsR0FBR2pMLEdBQUdpYjtTQUNuQmpiLElBQUk0ekIsR0FBRzV6QixHQUFHeUUsR0FBRytKLEdBQUd2RCxHQUFHZ1E7U0FDbkJoUSxJQUFJMm9CLEdBQUczb0IsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSW9sQixHQUFHcGxCLEdBQUd2RCxHQUFHakwsR0FBR3lFLEdBQUd3VztTQUNuQnhXLElBQUltdkIsR0FBR252QixHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJNHpCLEdBQUc1ekIsR0FBR3lFLEdBQUcrSixHQUFHdkQsR0FBR2dRO1NBQ25CaFEsSUFBSTJvQixHQUFHM29CLEdBQUdqTCxHQUFHeUUsR0FBRytKLEdBQUd5TTtTQUNuQnpNLElBQUlvbEIsR0FBR3BsQixHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FDbkJ4VyxJQUFJbXZCLEdBQUdudkIsR0FBRytKLEdBQUd2RCxHQUFHakwsR0FBR2liO1NBQ25CamIsSUFBSTR6QixHQUFHNXpCLEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUkyb0IsR0FBRzNvQixHQUFHakwsR0FBR3lFLEdBQUcrSixHQUFHeU07U0FDbkJ6TSxJQUFJb2xCLEdBQUdwbEIsR0FBR3ZELEdBQUdqTCxHQUFHeUUsR0FBR3dXO1NBRW5CeFcsSUFBSW92QixHQUFHcHZCLEdBQUcrSixHQUFHdkQsR0FBR2pMLEdBQUdpYjtTQUNuQmpiLElBQUk2ekIsR0FBRzd6QixHQUFHeUUsR0FBRytKLEdBQUd2RCxHQUFHZ1E7U0FDbkJoUSxJQUFJNG9CLEdBQUc1b0IsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSXFsQixHQUFHcmxCLEdBQUd2RCxHQUFHakwsR0FBR3lFLEdBQUd3VztTQUNuQnhXLElBQUlvdkIsR0FBR3B2QixHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJNnpCLEdBQUc3ekIsR0FBR3lFLEdBQUcrSixHQUFHdkQsR0FBR2dRO1NBQ25CaFEsSUFBSTRvQixHQUFHNW9CLEdBQUdqTCxHQUFHeUUsR0FBRytKLEdBQUd5TTtTQUNuQnpNLElBQUlxbEIsR0FBR3JsQixHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FDbkJ4VyxJQUFJb3ZCLEdBQUdwdkIsR0FBRytKLEdBQUd2RCxHQUFHakwsR0FBR2liO1NBQ25CamIsSUFBSTZ6QixHQUFHN3pCLEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUk0b0IsR0FBRzVvQixHQUFHakwsR0FBR3lFLEdBQUcrSixHQUFHeU07U0FDbkJ6TSxJQUFJcWxCLEdBQUdybEIsR0FBR3ZELEdBQUdqTCxHQUFHeUUsR0FBR3dXO1NBQ25CeFcsSUFBSW92QixHQUFHcHZCLEdBQUcrSixHQUFHdkQsR0FBR2pMLEdBQUdpYjtTQUNuQmpiLElBQUk2ekIsR0FBRzd6QixHQUFHeUUsR0FBRytKLEdBQUd2RCxHQUFHZ1E7U0FDbkJoUSxJQUFJNG9CLEdBQUc1b0IsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSXFsQixHQUFHcmxCLEdBQUd2RCxHQUFHakwsR0FBR3lFLEdBQUd3VztTQUVuQnhXLElBQUlxdkIsR0FBR3J2QixHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJOHpCLEdBQUc5ekIsR0FBR3lFLEdBQUcrSixHQUFHdkQsR0FBR2dRO1NBQ25CaFEsSUFBSTZvQixHQUFHN29CLEdBQUdqTCxHQUFHeUUsR0FBRytKLEdBQUd5TTtTQUNuQnpNLElBQUlzbEIsR0FBR3RsQixHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FDbkJ4VyxJQUFJcXZCLEdBQUdydkIsR0FBRytKLEdBQUd2RCxHQUFHakwsR0FBR2liO1NBQ25CamIsSUFBSTh6QixHQUFHOXpCLEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUk2b0IsR0FBRzdvQixHQUFHakwsR0FBR3lFLEdBQUcrSixHQUFHeU07U0FDbkJ6TSxJQUFJc2xCLEdBQUd0bEIsR0FBR3ZELEdBQUdqTCxHQUFHeUUsR0FBR3dXO1NBQ25CeFcsSUFBSXF2QixHQUFHcnZCLEdBQUcrSixHQUFHdkQsR0FBR2pMLEdBQUdpYjtTQUNuQmpiLElBQUk4ekIsR0FBRzl6QixHQUFHeUUsR0FBRytKLEdBQUd2RCxHQUFHZ1E7U0FDbkJoUSxJQUFJNm9CLEdBQUc3b0IsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSXNsQixHQUFHdGxCLEdBQUd2RCxHQUFHakwsR0FBR3lFLEdBQUd3VztTQUNuQnhXLElBQUlxdkIsR0FBR3J2QixHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJOHpCLEdBQUc5ekIsR0FBR3lFLEdBQUcrSixHQUFHdkQsR0FBR2dRO1NBQ25CaFEsSUFBSTZvQixHQUFHN29CLEdBQUdqTCxHQUFHeUUsR0FBRytKLEdBQUd5TTtTQUNuQnpNLElBQUlzbEIsR0FBR3RsQixHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FFbkJ4VyxJQUFJZixHQUFHZSxHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJMEQsR0FBRzFELEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUl2SCxHQUFHdUgsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSTlLLEdBQUc4SyxHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FDbkJ4VyxJQUFJZixHQUFHZSxHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJMEQsR0FBRzFELEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUl2SCxHQUFHdUgsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSTlLLEdBQUc4SyxHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FDbkJ4VyxJQUFJZixHQUFHZSxHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJMEQsR0FBRzFELEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUl2SCxHQUFHdUgsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSTlLLEdBQUc4SyxHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FDbkJ4VyxJQUFJZixHQUFHZSxHQUFHK0osR0FBR3ZELEdBQUdqTCxHQUFHaWI7U0FDbkJqYixJQUFJMEQsR0FBRzFELEdBQUd5RSxHQUFHK0osR0FBR3ZELEdBQUdnUTtTQUNuQmhRLElBQUl2SCxHQUFHdUgsR0FBR2pMLEdBQUd5RSxHQUFHK0osR0FBR3lNO1NBQ25Cek0sSUFBSTlLLEdBQUc4SyxHQUFHdkQsR0FBR2pMLEdBQUd5RSxHQUFHd1c7U0FFbkJuTCxPQUFPNGpCLElBQUlqdkIsR0FBR3FMO1NBQ2RBLE9BQU80akIsSUFBSWxsQixHQUFHc0I7U0FDZEEsT0FBTzRqQixJQUFJem9CLEdBQUc2RTtTQUNkQSxPQUFPNGpCLElBQUkxekIsR0FBRzhQLE1BMUVUO09BZmdCOztHQXlHekIsU0FBU2lrQixlQUFlQyxLQUFLQyxPQUFPQztJQUNsQyxJQUFJQyxTQUFTSCxnQkFDVEk7SUFDSkosV0FBV0U7SUFDWCxHQUFHQyxPQUFPO0tBQ0ksSUFBUkUsZUFBZUY7S0FDbkIsR0FBR0QsWUFBWUcsUUFBUztNQUN0QkwsV0FBV0Msa0JBQWlCQyxZQUFXQztNQUN2Qzs7S0FFRkgsV0FBV0Msa0JBQWlCSSxVQUFTRjtLQUNyQ1Ysa0JBQWtCTyxPQUFPQTtLQUN6QkUsYUFBYUc7S0FDYkQsYUFBYUM7O0lBRWYsTUFBTUgsZ0JBQWdCO0tBQ3BCRixXQUFXQyxlQUFlRyxXQUFVQTtLQUNwQ1gsa0JBQWtCTyxPQUFPQTtLQUN6QkU7S0FDQUU7O0lBRUYsR0FBR0Y7S0FDREYsV0FBV0MsZUFBZUcsV0FBVUEsWUFBWUY7R0FDcEQ7R25CbklBLFNBQVNJLDhCQUE4QkMsUUFBUUMsV0FBVzFHLEtBQ3hELFNBQ0Y7R2NrR0EsU0FBUzJHLG1CQUNQLE9BQU8vQixrQkFDVDtHOUI0SEEsU0FBU2dDLG9CQUFxQmpwQixHQUFLLE9BQU9BLFlBQWE7R3dCL092RCxTQUFTa3BCLHNCQUFzQjlWLElBQUl3SCxNQUFNdEgsSUFBSXdILE1BQU12UTtJQUNqRCxJQUFXLElBQUZyVSxPQUFPQSxJQUFJcVUsS0FBS3JVLElBQUs7S0FDNUIsSUFBSThDLElBQUlvaEIsY0FBY2hILElBQUd3SCxPQUFPMWtCLElBQzVCNk0sSUFBSXFYLGNBQWM5RyxJQUFHd0gsT0FBTzVrQjtLQUNoQyxHQUFJOEMsSUFBSStKLEdBQUc7S0FDWCxHQUFJL0osSUFBSStKLEdBQUc7O0lBRWI7R0FDRjtHdkJtekJBLFNBQVNvbUIsZ0JBQWlCdHdCLEdBQUssT0FBT29XLHVCQUF1QnBXLEdBQUc7R085aUJoRSxTQUFTdXdCLGVBQWVwcEI7SUFDdEI7S0FBSXFwQjtLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBN1o7S0FFQTdZO0lBQ0osR0FBSWlKLE9BQ0ZqSjtJQUVGaUosSUFBSTNKLFNBQVMySjtJQUNiO0tBQUl0SCxpQkFBaUJrWCxJQUFJNVA7S0FDckJ0Sjs7O1lBQWMreUIsS0FBSy93QixJQUFJOHdCLE1BQU05d0IsSUFBSTZ3QixNQUFNN3dCLElBQUk0d0IsTUFBTTV3QixJQUFJMndCLE1BQU0zd0I7VUFBSXJDLFlBQVUySixJQUFJQTtJQUVqRixPQUFPakosT0FBT0w7R0FDaEI7R2EyRUEsU0FBU2d6QixvQkFBb0IzUSxJQUFJTTtJQUN2QixJQUFKQyxNQUFNUCxVQUFVTTtJQUNwQixHQUFHQyxXQUFXUCxnQkFBZ0JUO0lBQzlCO0tBQUlpQixLQUFLUixPQUFPTztLQUNaRSxLQUFLVCxPQUFPTztLQUNaRyxLQUFLVixPQUFPTztLQUNaSSxLQUFLWCxPQUFPTztJQUNoQixPQUFVQyxVQUNBQyxVQUNBQyxXQUNBQztHQUNaO0doQm5XQSxTQUFTaVEsNEJBQThCLFNBQVU7RytCK1JqRCxTQUFTQyxvQkFBb0JqUixNQUMzQixTQUNGO0dOOVJBLFNBQVNrUixlQUFnQnpqQixLQUFLa1o7SUFDdEIsSUFBRnhtQixRQUFRd0IsTUFBTWdsQjtJQUNsQnhtQixPQUFLc047SUFDTCxJQUFXLElBQUZsUSxPQUFPQSxLQUFLb3BCLE1BQU1wcEIsS0FBSzRDLEVBQUU1QztJQUNsQyxPQUFPNEM7R0FDVDtHZmtHQSxTQUFTZ3hCO0lBQ0QsSUFBRmp4QixJQUFJbWU7SUFDUm5lLGlCQUFpQkE7SUFDakJBLGtCQUFrQkE7SUFFbEI7R0FDRjtHUzFKQSxTQUFTa3hCLDBCQUEwQjVFLElBQ2pDLE9BQU9BLGVBQ1Q7R3BCK1RBLFNBQVM2RSxzQ0FBc0NDLE9BQzdDLFNBQ0Y7R1U4REEsU0FBU0MsZUFBZTFULE1BQU1DLE1BQU1FLE1BQU1DLE1BQ3hDSixVQUFVQyxTQUFTRSxVQUFVQyxPQUM3QjtHQUNGO0dnQjNPQSxTQUFTdVQsb0JBQW9CaGEsR0FBRXRDO0lBQzdCbUk7R0FDRjtHWG5HQSxTQUFTb1UscUJBQXdCLFNBQVU7R0YyYmQsSUFBekJDO0dYN1NKLFNBQVNDLGlCQUFpQnR4QjtJQUN4QixJQUFJdVIsTUFBTXZSLFVBQ04rSixRQUFRekksTUFBTWlRO0lBQ2xCeEg7SUFDQSxJQUFTLElBQUQ3TSxPQUFJQSxJQUFFcVUsS0FBSXJVLEtBQUs2TSxFQUFFN00sU0FBTzhDLEVBQUU5QztJQUNsQyxPQUFPNk07R0FDVDtHRnVJQSxTQUFTd25CLHlCQUF5QnoyQjtJQUN2QixJQUFMK0csT0FBT3NiLGtCQUFrQnJpQjtJQUM3QixPQUFPK0csbUJBQW1CQTtHQUM1QjtHV3ZKQSxTQUFTMnZCLGFBQWF4cUIsR0FBRXRKO0lBQ3RCO0tBQUltQyxJQUFJbWU7S0FDSkUsS0FBR3JlO0tBQ0h0RSxJQUFJMmlCO0tBQ0p1VCxRQUFRNXhCO0lBQ1p0RSxPQUFRazJCO0lBQ1JsMkIsT0FBUWsyQixtQkFDUmwyQixPQUFRazJCO0lBQ1JsMkI7SUFDQXNFLE1BQUltSDtJQUNKbkgsTUFBSW5DO0lBQ0ptQyx1QkFBdUJxZSxJQUFHbFgsR0FBRW5ILFdBQVduQztJQUN2QztHQUNGO0dkNEpBLFNBQVNnMEIsaUJBQWlCN3hCLEdBQUUzQyxHQUFFeTBCO0lBQzVCLEdBQUl6MEIsV0FBVzJDLFNBQVNtYztJQUNsQixJQUFGaGMsSUFBSStnQixvQkFBb0I0UTtJQUM1QixJQUFVLElBQUZqbUIsT0FBT0EsT0FBT0EsS0FDcEJ1USxzQkFBdUJwYyxHQUFHM0MsUUFBUXdPLEdBQUcxTCxFQUFFMEw7SUFFekM7R0FDRjtHQWxEQSxTQUFTa21CLGtCQUFrQi94QixHQUFFM0MsR0FBRTIwQixLQUM3QjdVLG1DQUNGO0d5QjNNQSxTQUFTOFUsaUJBQWlCOXFCO0lBQ2xCLElBQUZ0SixJQUFJcWpCLG9CQUFvQi9aO0lBQzVCLE9BQU9tWjtjQUFxQnppQixNQUFNQSxNQUFNQSxNQUFNQSxNQUFNQSxNQUFNQSxNQUFNQSxNQUFNQTtHQUN4RTtHUHZIQSxTQUFTcTBCLGNBQWNwUztJQUVyQixVQUFVbEssNkJBQTZCQTtJQUN2QztHQUNGO0drQk1BLFNBQVN1YyxlQUFlbnlCO0lBQ3RCQSxJQUFJeVYsdUJBQXVCelY7SUFDM0IsSUFBSU0sSUFBSU4sY0FDSkcsUUFBUXNCLE1BQU1uQjtJQUNsQixJQUFXLElBQUZqRCxPQUFPQSxJQUFJaUQsR0FBR2pEO0tBQ3JCOEMsRUFBRTlDLE1BQU0yQyxpQkFBaUIzQyxLQUFNMkMsaUJBQWlCM0M7SUFDbEQsT0FBTzhDO0dBQ1Q7R0FJQSxTQUFTaXlCLGdCQUFnQkMsS0FBS0MsYUFBYUM7SUFDekM7S0FBSUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7SUFFSixLQUFLZCxnQkFBaUI7S0FDcEJBLGVBQWtCRixlQUFnQkUsSUFBSVU7S0FDdENWLGtCQUFrQkYsZUFBZ0JFLElBQUlXO0tBQ3RDWCxnQkFBa0JGLGVBQWdCRSxJQUFJYztLQUN0Q2QsZ0JBQWtCRixlQUFnQkUsSUFBSWE7S0FDdENiLGtCQUFrQkYsZUFBZ0JFLElBQUlZOztJQUd4QztLQUFJdHNCO0tBQUd1TixRQUFRb2U7S0FFWDNiLFNBQVN3RCwwQkFBMEJvWSxPQUFPQztJQUU5QyxHQUFJdGUsV0FBWTtLQUVkcWUsT0FBT0ssZ0JBQWdCTCxPQUFPRyxpQkFBaUJILE9BQU9JO0tBQ3RESixPQUFPTTs7O0tBR1AzZSxVQUFTQTtJQUVYLE9BQVE7S0FFRyxJQUFMa2YsT0FBT2YsYUFBYW5lO0tBQ3hCLEdBQUlrZixVQUFVLFNBQVFBO0tBRVYsSUFBUkMsVUFBVWhCLGdCQUFnQm5lO0tBQzlCLEdBQUltZixhQUFjO01BQ2hCZCxPQUFPSyxnQkFBZ0JMLE9BQU9JO01BQzlCSixPQUFPTSxtQkFBbUJROztLQUc1QixHQUFJZCxPQUFPSSxpQkFBaUJKLE9BQU9FO01BQWdCLEdBQzdDRixPQUFPTyx1QkFDVCxTQUFRNWUsZ0JBRVJ2TjtTQUNDLENBRUhBLElBQUlnUSxPQUFPNGIsT0FBT0ksZ0JBQ2xCSixPQUFPSTtLQUdULEdBQUlOLGNBQWNlLE9BQU96c0IsTUFBTXVOO01BQzdCQSxRQUFRbWUsY0FBY2UsT0FBT3pzQjs7TUFFN0J1TixRQUFRbWUsZ0JBQWdCbmU7S0FFMUIsR0FBSUEsVUFBVztNQUNicWUsT0FBT0ksZ0JBQWdCSixPQUFPSztNQUM5QixHQUFJTCxPQUFPTTtPQUNUMVY7O09BRUEsT0FBT29WLE9BQU9NOzthQUtabHNCLFVBQVU0ckIsT0FBT087O0dBRzNCO0cxQm1HQSxTQUFTUSxxQkFBc0JyNEI7SUFDcEIsSUFBTCtHLE9BQU9zYixrQkFBa0JyaUI7SUFDN0IsT0FBTytHLG1CQUFtQkE7R0FDNUI7R041SUEsU0FBU3V4QjtJQUNQcFc7R0FDRjtHNEJoREEsU0FBU3FXLGVBQWdCcnpCLEdBQUc5QyxHQUFHcVU7SUFDdEIsSUFBSCtlLFNBQVNodkIsTUFBTWlRO0lBQ25CK2U7SUFDQSxRQUFRL1YsUUFBUUYsS0FBSW5kLE9BQUtxZCxNQUFNaEosS0FBS2dKLE1BQUtGLE1BQ3ZDaVcsR0FBRy9WLE1BQUl2YSxFQUFFcWE7SUFFWCxPQUFPaVc7R0FDVDtHaENzZkEsU0FBU2dELGlCQUFpQmxaLElBQUlFO0lBQzVCLEdBQUdGLE9BQU9FLElBQUk7SUFDYkYsWUFBYWpCLDZCQUE2QmlCO0lBQzFDRSxZQUFhbkIsNkJBQTZCbUI7SUFDM0MsT0FBUUYsUUFBUUU7R0FDbEI7R2MvV0EsU0FBU2laLGlCQUNELElBQUYxekIsSUFBSW1lLHFCQUNSLE9BQU9uZSxRQUNUO0d1QnhKQSxTQUFTMnpCLHdCQUF3QnhzQjtJQUMvQixJQUFJckgsUUFDQWpDO0lBQ0pBLElBQUlzSjtJQUFRLEdBQUl0SixPQUFRLENBQUVpQyxJQUFJQSxRQUFPcUgsSUFBSXRKO0lBQ3pDQSxJQUFJc0o7SUFBUSxHQUFJdEosT0FBUSxDQUFFaUMsSUFBSUEsT0FBT3FILElBQUl0SjtJQUN6Q0EsSUFBSXNKO0lBQVEsR0FBSXRKLE9BQVEsQ0FBRWlDLElBQUlBLE9BQU9xSCxJQUFJdEo7SUFDekNBLElBQUlzSjtJQUFRLEdBQUl0SixPQUFRLENBQUVpQyxJQUFJQSxPQUFPcUgsSUFBSXRKO0lBQ3pDQSxJQUFJc0o7SUFBUSxHQUFJdEosUUFBUSxPQUFPaUM7SUFDL0IsT0FBT0EsSUFBSXFIO0dBQ2I7R2pDVUEsU0FBU3lzQiw0QkFBK0IsU0FBVTtHa0NObEQsU0FBU0Msc0JBQXNCQyxLQUFLejJCO0lBQzFCLElBQUp3ZCxNQUFNaVo7SUFDVkEsVUFBVXoyQjtJQUNWLE9BQU93ZDtHQUNUO0duQ2tQWTtJQUFSa1o7TUFBV25lLHNCQUNBQTtVQUNBQTs7O0dBWGYsU0FBU29lLCtCQUFrQyxPQUFPRDtHQUE2QjtHSVUvRSxTQUFTRSxnQkFBaUI5c0IsR0FBSyxPQUFPM0osVUFBVTJKLEdBQUk7R2dDcFJwRCxTQUFTK3NCLFVBQ1B0NUIsb0JBQ0Y7R0FJQSxTQUFTdTVCLGtCQUFrQnJVLE1BQ3pCLFdBQVdvVSxVQUNiO0dDWXlCLElBQXJCRTtHQTZGSixTQUFTQyxvQkFBb0JsdEIsR0FBRzlKO0lBQ3JCLElBQUxpM0IsT0FBT250QixFQUFFaXRCLHVCQUF1Qi8yQjtJQUNwQyxHQUFHdVksc0JBQXNCMGUsZ0JBQWdCMWU7S0FBb0IwZSxPQUFPQTtJQUNwRSxPQUFHQSxTQUFPMTRCO0dBSVo7R2R6QkEsU0FBUzI0QixvQkFBb0JqbkI7SUFDM0JBLEtBQUtBO0lBQ0xBLElBQUlzVixTQUFVdFY7SUFDZEEsS0FBS0E7SUFDTEEsSUFBSXNWLFNBQVV0VjtJQUNkQSxLQUFLQTtJQUNMLE9BQU9BO0dBQ1Q7R1o4UkEsU0FBU2tuQixrQkFBa0JDO0lBQ3pCO0tBQUl6MEIsSUFBSW1lO0tBQ0ozUyxJQUFJeEwsc0JBQXNCdVgsd0JBQXdCa2Q7SUFDdEQsV0FBVWpwQixHQUFFeEw7R0FDZDtHc0J6UkEsU0FBUzAwQixpQkFBaUIxMEIsR0FBRzNDLEdBQUdzM0IsS0FBS0M7SUFDbkMsT0FBUztLQUNDLElBQUp2UyxNQUFNcmlCLGFBQWEzQztLQUFJQTtLQUMzQixHQUFJZ2xCLGFBQWE7S0FDVCxJQUFKRixNQUFNbmlCLGFBQWEzQztLQUFJQTtLQUMzQixHQUFJOGtCO01BQ0Z3UyxJQUFLdFMsV0FBV3VTOztNQUVoQkQsSUFBS3RTLFdBQVdzUyxJQUFLeFM7O0dBRTNCO0dBRUEsU0FBUzBTLGlCQUFpQjcwQixHQUFHM0MsR0FBR3MzQjtJQUM5QixPQUFTO0tBQ0MsSUFBSnRTLE1BQU1yaUIsYUFBYTNDO0tBQUlBO0tBQzNCLEdBQUlnbEIsYUFBYTtLQUNULElBQUpGLE1BQU1uaUIsYUFBYTNDO0tBQUlBO0tBQzNCLEdBQUk4a0IsYUFDRndTLElBQUt0UyxxQkFFTHNTLElBQUt0UyxXQUFXc1MsSUFBS3hTOztHQUUzQjtHQUVBLFNBQVMyUyxvQkFBb0J6QyxLQUFLQyxhQUFhQztJQUM3QztLQUFJQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBaUM7S0FDQWhDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0E2QjtLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztJQUVKLEtBQUtoRCxnQkFBaUI7S0FDcEJBLGVBQWtCRixlQUFnQkUsSUFBSVU7S0FDdENWLGtCQUFrQkYsZUFBZ0JFLElBQUlXO0tBQ3RDWCxnQkFBa0JGLGVBQWdCRSxJQUFJYztLQUN0Q2QsZ0JBQWtCRixlQUFnQkUsSUFBSWE7S0FDdENiLGtCQUFrQkYsZUFBZ0JFLElBQUlZOztJQUV4QyxLQUFLWixxQkFBc0I7S0FDekJBLG9CQUF1QkYsZUFBZ0JFLElBQUkyQztLQUMzQzNDLHVCQUF1QkYsZUFBZ0JFLElBQUk0QztLQUMzQzVDLHFCQUF1QkYsZUFBZ0JFLElBQUkrQztLQUMzQy9DLHFCQUF1QkYsZUFBZ0JFLElBQUk4QztLQUMzQzlDLHVCQUF1QkYsZUFBZ0JFLElBQUk2Qzs7SUFFN0MsR0FBSTdDLGdCQUFnQnQyQjtLQUFNczJCLGVBQWU1Yyx1QkFBdUI0YyxJQUFJZ0Q7SUFFcEU7S0FBSTF1QjtLQUFHdU4sUUFBUW9lO0tBRVgzYixTQUFTd0QsMEJBQTBCb1ksT0FBT0M7SUFFOUMsR0FBSXRlLFdBQVk7S0FFZHFlLE9BQU9LLGdCQUFnQkwsT0FBT0csaUJBQWlCSCxPQUFPSTtLQUN0REosT0FBT007OztLQUdQM2UsVUFBU0E7SUFFWCxPQUFRO0tBRUcsSUFBTGtmLE9BQU9mLGFBQWFuZTtLQUN4QixHQUFJa2YsU0FBVTtNQUNELElBQVBrQyxTQUFTakQsa0JBQWtCbmU7TUFDL0IyZ0IsaUJBQWlCeEMsY0FBY2lELFFBQVEvQyxPQUFPd0M7TUFDOUMsU0FBUTNCOztLQUdFLElBQVJDLFVBQVVoQixnQkFBZ0JuZTtLQUM5QixHQUFJbWYsYUFBYztNQUNMLElBQVBpQyxTQUFTakQscUJBQXFCbmU7TUFDbEMyZ0IsaUJBQWlCeEMsY0FBY2lELFFBQVEvQyxPQUFPd0M7TUFDOUN4QyxPQUFPSyxnQkFBZ0JMLE9BQU9JO01BQzlCSixPQUFPTSxtQkFBbUJROztLQUc1QixHQUFJZCxPQUFPSSxpQkFBaUJKLE9BQU9FO01BQWdCLEdBQzdDRixPQUFPTyx1QkFDVCxTQUFRNWUsZ0JBRVJ2TjtTQUNDLENBRUhBLElBQUlnUSxPQUFPNGIsT0FBT0ksZ0JBQ2xCSixPQUFPSTtLQUdFLElBQVA0QyxTQUFTcmhCO0tBQ2IsR0FBSW1lLGNBQWNlLE9BQU96c0IsTUFBTXVOO01BQzdCQSxRQUFRbWUsY0FBY2UsT0FBT3pzQjs7TUFFN0J1TixRQUFRbWUsZ0JBQWdCbmU7S0FFMUIsR0FBSUEsVUFBVztNQUNicWUsT0FBT0ksZ0JBQWdCSixPQUFPSztNQUM5QixHQUFJTCxPQUFPTTtPQUNUMVY7O09BRUEsT0FBT29WLE9BQU9NOztTQUNiO01BRUgsSUFBSTJDLFlBQVluRCxrQkFBa0JrRCxTQUFTRDtNQUMzQyxHQUFJakQsbUJBQW1CbUQsWUFBWTd1QixNQUFNNHVCO09BQ3ZDRCxTQUFTakQsbUJBQW1CbUQsWUFBWTd1Qjs7T0FFeEMydUIsU0FBU2pELHFCQUFxQmtEO01BQ2hDLEdBQUlEO09BQ0ZaO1NBQ0RyQyxjQUFjaUQsUUFBUS9DLE9BQU93QyxVQUFVeEMsT0FBT0k7TUFJL0MsR0FBSWhzQixVQUFVNHJCLE9BQU9POzs7R0FHM0I7R2hCb09BLFNBQVMyQyxvQkFBb0J2VixJQUFJTSxJQUFJbEo7SUFDM0IsSUFBSm1KLE1BQU1QLFVBQVVNO0lBQ3BCLEdBQUdDLFdBQVdQLGdCQUFnQlQ7SUFDeEIsSUFBRm5JLElBQUk0SixvQkFBb0I1SjtJQUM1QixJQUFVLElBQUZqYSxPQUFPQSxPQUFPQSxLQUFLNmlCLE9BQU9PLE1BQUlwakIsR0FBR2lhLE1BQUlqYTtJQUM3QztHQUNGO0dqQmhTQSxTQUFTcTRCLHlCQUF5QnYxQixHQUNoQyxPQUFPZ3RCLHFCQUNUO0drQm1FQSxTQUFTd0ksZUFBZ0J4dUIsR0FBR3RKO0lBQUssVUFBU2lzQixpQkFBaUIzaUIsR0FBRXRKO0dBQWdCO0dkdUI3RSxTQUFTKzNCLGlCQUFrQnp1QixHQUFLLE9BQU8zSixXQUFXMkosR0FBSTtHMkJ6SXRELFNBQVMwdUI7SUFDUDtLQUFJbGYsYUFBYW1mO0tBQ2JDLFVBQVVDLFlBQVlyZjtLQUN0QnNLLFNBQVNwSCxXQUFXbEQ7SUFDeEI7O2dCQUNjcWY7aUJBQ0ZEO2dCQUNEOVU7R0FDYjtHakI2U0EsU0FBU2dWLGNBQWV0VztJQUNiLElBQUxMLE9BQU9GLGlCQUFpQk87SUFDNUIsS0FBS0wsYUFBYXRGO0lBQ2xCLEtBQUlzRixlQUFlQSx1QkFBdUI7SUFDMUMsR0FBR0E7S0FDREEsWUFBWWpHLHlCQUF5QmlHLGdCQUFnQkE7O0tBRXJEQSxnQkFBZ0JBLGFBQWFBLGdCQUFnQkE7SUFFL0NBLGVBQWVBO0lBQ2ZBO0lBQ0E7R0FDRjtHQTJGQSxTQUFTNFcsY0FBY3ZXLFFBQVE1RTtJQUM3QmtiLGNBQWN0VztJQUNMLElBQUxMLE9BQU9GLGlCQUFpQk87SUFDNUJMLGNBQWN2RTtJQUNkO0dBQ0Y7R0FTQSxTQUFTb2Isb0JBQW9CeFcsUUFBTzVFO0lBQzFCLElBQUpBLE1BQU1xVixvQkFBb0JyVjtJQUM5QixPQUFPbWIsY0FBY3ZXLFFBQVE1RTtHQUMvQjtHSm5NQSxTQUFTcWIsaUJBQWlCelksTUFBS0c7SUFDN0IsT0FBT2lPLFlBQVlwTyxTQUFPQSxrQkFBaUJHLFNBQU9BO0dBQ3BEO0dLdlZBLFNBQVN1WSxZQUFZOUksVUFDbkIsU0FDRjtHYlZBLFNBQVMrSSxZQUFZcjJCLEdBQUVaLEdBQUssT0FBT1ksRUFBRVosR0FBSTtHb0MzQnRCLElBQWZrM0IsbUNBQXlCLHVCQUEyQjtHQUN4RCxVQUFXNTdCO0lBQ1A0N0IsaUJBQWlCNTdCOztJQUNkLElBRUg0N0IsaUJBQWlCbjJCO1VBQ1ZvMkI7S0FDUDc3Qjs7R0FNSixTQUFTODdCLGFBQWF4N0I7SUFDbEIsSUFDSXM3QixvQkFBb0I5Z0IsdUJBQXVCeGE7VUFDdEMyRSxHQUNMakYsK0JBQStCaUY7SUFFbkM7R0FDSjtHOUI2Q0EsU0FBUzgyQixpQkFBaUJDO0lBQ3hCLEdBQUduZixvQkFBcUI7S0FDZCxJQUFKb2YsTUFBTXgyQjtLQUNWLE9BQU93MkIsV0FBV0Q7OztLQUNiO0dBR1Q7R00waEJBLFNBQVNFLHFCQUFxQmxYLFFBQU9ySTtJQUNuQzhILGlCQUFpQk8sbUJBQW1Cckk7SUFDcEMsS0FBSUEsR0FBRzJlLGNBQWN0VztJQUNyQjtHQUNGO0dTcmRBLFNBQVNtWCx3QkFBd0J4cEIsR0FBR3ROO0lBQ2xDLElBQUkwUixNQUFNMVIsVUFBVTNDLEdBQUdtTztJQUN2QixJQUFLbk8sT0FBT0EsU0FBU3FVLEtBQUtyVSxPQUFRO0tBQ2hDbU8sSUFBSXhMLEVBQUUzQyxLQUNEMkMsRUFBRTNDLGNBQ0YyQyxFQUFFM0MsZUFDRjJDLEVBQUUzQztLQUNQaVEsSUFBSXVWLGtCQUFrQnZWLEdBQUc5Qjs7SUFFM0JBO0lBQ0EsT0FBUWtHOztPQUNBbEcsSUFBS3hMLEVBQUUzQzs7T0FDUG1PLEtBQUt4TCxFQUFFM0M7O09BQ1BtTyxLQUFLeEwsRUFBRTNDLElBQ2JpUSxJQUFJdVYsa0JBQWtCdlYsR0FBRzlCOztJQUczQjhCLEtBQUtvRTtJQUNMLE9BQU9wRTtHQUNUO0cxQnVwQkEsU0FBU3lwQixzQkFBc0IvMkI7SUFDN0IsT0FBUUE7ZUFFTnNaLDZCQUE2QnRaOztPQUU3QixPQUFPQTs7T0FFUCxPQUFPQTs7R0FFWDtHMEIxcEJBLFNBQVNnM0Isb0JBQW9CMXBCLEdBQUdnSztJQUNsQixJQUFSbUMsVUFBVXNkLHNCQUFzQnpmO0lBQ3BDLGNBQVVtQztjQUNEcUosc0JBQXNCeFYsR0FBR21NO2NBRXpCcWQsd0JBQXdCeHBCLEdBQUdtTTtHQUN0QztHQWVBLFNBQVN3ZCxVQUFXcm5CLE9BQU85TyxPQUFPbzJCLE1BQU0zdkI7SUFDdEMsSUFBSTR2QixPQUFPQyxJQUFJQyxJQUFJalIsSUFBSW9ELEtBQUtsYyxHQUFHZ0ssR0FBR2phLEdBQUdxVTtJQUNyQzBVLEtBQUt0bEI7SUFDTCxHQUFJc2xCLFVBQVVBLFVBQVVBO0lBQ3hCb0QsTUFBTTVaO0lBQ050QyxJQUFJNHBCO0lBQ0pDLFNBQVM1dkI7SUFBTTZ2QjtJQUFRQztJQUN2QixNQUFPRCxLQUFLQyxNQUFNN04sUUFBUztLQUN6QmxTLElBQUk2ZixNQUFNQztLQUNWLEdBQUk5ZixLQUFLQTtNQUFjO1FBQ2xCK1IsZ0JBQWdCL1Isa0JBQWtCK1IsZ0JBQWdCL1Isb0JBQXFCO09BQ2pFLElBQUhrWSxLQUFLbkcsZ0JBQWdCL1Isb0JBQW9CQTtPQUM3Q2hLLElBQUl1VixrQkFBbUJ2VixHQUFHa2lCO09BQzFCaEc7OzthQUdLbFMsYUFBYTdWLFNBQVM2VixVQUFVQTtNQUFTLE9BQ3hDQTs7U0FHTmhLLElBQUl1VixrQkFBa0J2VixHQUFHZ0ssT0FDekJrUyxPQUNBOztTQUdBMk4sUUFBUUMsTUFBTTlmLE1BQ2Q7O1NBRUEsR0FBRzhOLHlCQUF5QjlOLE9BQU87U0FLM0IsSUFBSi9KLE1BQVErSixxQkFBdUJBO1NBQ25DaEssSUFBSXVWLGtCQUFrQnZWLEdBQUdDO1NBQ3pCLElBQUtsUSxPQUFPcVUsTUFBTTRGLFVBQVVqYSxJQUFJcVUsS0FBS3JVLElBQUssQ0FDeEMsR0FBSWc2QixNQUFNalIsSUFBSSxPQUNkK1EsTUFBTUUsUUFBUS9mLEVBQUVqYTs7U0FFbEI7O2FBRU9xYyxpQkFBaUJwQyxHQUFJO01BQzlCaEssSUFBSTBwQixvQkFBb0IxcEIsR0FBRWdLO01BQzFCa1M7O2FBQ1M3UCxrQkFBa0JyQyxHQUFJO01BQy9CaEssSUFBSXlWLHFCQUFxQnpWLEdBQUVnSztNQUMzQmtTOztvQkFDZ0JsUyxlQUFnQjtNQUNoQ2hLLElBQUl3VixzQkFBc0J4VixHQUFFZ0s7TUFDNUJrUzs7YUFDU2xTLE9BQU9BLE9BQU07TUFFdEJoSyxJQUFJdVYsa0JBQWtCdlYsR0FBR2dLLElBQUVBO01BQzNCa1M7O29CQUNnQmxTLGVBQWdCLENBRWhDaEssSUFBSXNiLG9CQUFvQnRiLEdBQUVnSyxJQUMxQmtTOztJQUdKbGMsSUFBSWluQixvQkFBb0JqbkI7SUFDeEIsT0FBT0E7R0FDVDtHV3JIQSxTQUFTZ3FCLGlCQUFpQnQzQixHQUN4QixPQUFPaTNCLG1CQUFnQmozQixHQUN6QjtHbkJ0SEEsU0FBU3UzQixxQkFBc0IsU0FBUTtHZVd2QyxTQUFTQztJQUFtQ3BWLFNBQVFELEtBQUtHLFNBQVNELEtBQUszUTtJQUNyRSxHQUFHQSxVQUFVO0lBQ2JtZCxpQkFBa0IxTSxLQUFLQztJQUN2QnlNLGlCQUFrQjFNLEtBQUtDLFVBQVUxUTtJQUNqQ3FkLDJCQUEyQjFNLEtBQUtDO0lBQ2hDeU0sMkJBQTJCMU0sS0FBS0MsVUFBVTVRO0lBRTFDMFEsVUFBVUE7SUFDVjtLQUFJcVY7V0FBYzk4QiwrQkFBK0J3bkIsVUFBVUMsU0FBUUEsVUFBVTFRO0tBQ3pFZ21CLG9CQUFvQi84Qiw2QkFBNkI4OEI7S0FDakQvUSxPQUFPckUsa0JBQWtCQyxTQUFTQSxVQUFXNVE7SUFDakRnVixTQUFTZ1I7SUFDVDtHQUNGO0d4QnlRQSxTQUFTQyx1QkFBdUJwYixJQUFJdGI7SUFDbEMsR0FBR0E7S0FBWTtNQUVYLElBQUkyMkIsS0FBS3gzQixlQUNMeTNCLE1BQU1ELFlBQVkzMkI7TUFDdEIsV0FBV3FiLFNBQVN1YixLQUFLNTJCOztXQUNuQnJCO0lBRVYsV0FBVzBjLFNBQVNDLElBQUl0YjtHQUMxQjtHUXpTaUIsSUFBYjYyQixtQkFBbUJyMkI7R0wrUnZCLFNBQVNzMkIsYUFBYXhiLElBQUd0YjtJQUN2QjJaLGdCQUFnQmhnQixNQUFNd2Y7SUFDdEJ4ZixvQkFBc0JvRixHQUFLLFNBQWY7SUFDWixHQUFHdWMsa0JBQWtCcGhCO0tBQ25CUCxXQUFXTztZQUNMb2hCLGtCQUFrQnBoQjtLQUN4QlAsV0FBV087bUJBQ0VBLDJCQUNiUCxXQUFXTztJQUNiUCxhQUFhcUc7R0FDZjtHQUNBODJCLDJDQUE2QyxTQUFiO0dBQ2hDQTthQUF5Qy9pQixRQUFPOEYsS0FBSUMsS0FBSXJKO0tBQ3RELEdBQUc5VyxTQUFVO01BQ1g7UUFBRzhXLFdBQ0dxSixZQUNBQSxNQUFJckosT0FBT29KO1dBQ1hBLElBQUlDLE1BQUlySjtPQUNaQTtNQUdNLElBQUp5USxNQUFNL0gsa0JBQWtCMUk7TUFDNUI0SSxnQkFBZ0JWLG9CQUFvQmtCLE1BQU1DLEtBQUtvSCxRQUFRelE7TUFDdkQ5VyxTQUFTdW5CO01BQ1Q7O0tBRUZuSSxxQkFBcUJwZjtJQWRRO0dBZ0IvQm05QjthQUF3Qy9pQixRQUFROEYsS0FBS0MsS0FBS3JKO0tBQ3hEc0kscUJBQXFCcGY7SUFETztHQUc5Qm05QiwwQ0FDRW45QixXQUFXZ0IsVUFEa0I7R0sxUy9CLFNBQVNvOEIsdUJBQXVCNWMsTUFBSzZjO0lBQ25DLEdBQUdBLE9BQU9yOEIsV0FDUnE4QixNQUFNSDtJQUVSQSxhQUFhRyxPQUFPN2M7SUFDcEIsT0FBTzZjO0dBQ1Q7R0FDQSxTQUFTQyxjQUFlajlCLE1BQU1nRyxPQUFPazNCO0lBQzdCLElBQUY5NEI7SUFDSixNQUFNNEIsTUFBTTtLQUNWLE9BQU9BOztRQUNDNUIsY0FBYTs7UUFDYkEsY0FBYTs7UUFDYkEsY0FBYTs7UUFDYkEsY0FBYTs7UUFDYkEsZ0JBQWU7O1FBQ2ZBLFlBQVk7O1FBQ1pBLGNBQWE7O1FBQ2JBLFlBQVc7O1FBQ1hBLGdCQUFlOztLQUV2QjRCLFFBQU1BOztJQUVSLEdBQUc1QixZQUFZQTtLQUNiMmE7T0FBcUJ2RSx1QkFBdUJ4YTs7SUFDOUMsR0FBR29FLFVBQVVBO0tBQ1gyYTtPQUFxQnZFLHVCQUF1QnhhOztJQUM5QyxJQUFJK0csT0FBT3NiLGtCQUFrQnJpQixPQUN6Qm1nQixPQUFPcFosaUJBQWlCQSxXQUFVM0M7SUFDdEMsT0FBTzI0Qix1QkFBd0I1YyxNQUFNeGY7R0FDdkM7R0FDQSxDQUFBO01BQ0UsU0FBU3dmLEtBQUttQixJQUFJdGI7T0FDaEIsT0FBR3VXO2lCQUNNbWdCLHVCQUF1QnBiLElBQUl0YjtxQkFHdkI4MkIsYUFBYXhiLElBQUl0YjtNQUNoQztNQUNBKzJCO1FBQXVCNWM7O01BQ3ZCNGM7UUFBdUI1YztNQUN2QjRjO1FBQXVCNWM7S0FWeEI7O0dBaUVELFNBQVNnZCwyQkFBNEI3YjtJQUMxQixJQUFMbkIsT0FBTzBjLGFBQWF2YjtJQUN4QixHQUFHbkIsbUJBQW1CcEIsNkJBQTRCdUM7SUFDbEQ7S0FBSThiLFNBQVN0OEI7S0FDVHU4QjtjQUNHbGQ7Z0JBQ0VBLG9CQUFrQkE7WUFDdEJtQjs7Ozs7b0JBS1ExQztnQkFDSndlO0lBRVRqWixpQkFBaUJrWixjQUFZQTtJQUM3QixPQUFPQTtHQUNUO0dpQjJCQSxTQUFTQyxjQUFjN0k7SUFDVixJQUFQRyxTQUFTSDtJQUNiQSxPQUFPRztJQUNQQTtJQUNBLEdBQUdBLFlBQWE7S0FDZCxJQUFVLElBQUZoa0IsSUFBSWdrQixRQUFRaGtCLFFBQVFBLEtBQzFCNmpCLE9BQU83akI7S0FFVHNqQixrQkFBa0JPLE9BQU9BO0tBQ3pCLElBQVUsSUFBRjdqQixPQUFPQSxRQUFRQSxLQUNyQjZqQixPQUFPN2pCOzs7S0FFSixJQUNLLElBQUZBLElBQUlna0IsUUFBUWhrQixRQUFRQSxLQUMxQjZqQixPQUFPN2pCO0lBR1g2akIsY0FBY0E7SUFDZEEsY0FBZUE7SUFDZlAsa0JBQWtCTyxPQUFPQTtJQUNuQixJQUFGN3ZCLFFBQVFnYTtJQUNaLElBQVcsSUFBRnhjLE9BQU9BLE9BQU9BO0tBQ3JCLElBQVcsSUFBRndPLE9BQU9BLE9BQU9BLEtBQ3JCaE0sRUFBRXhDLFFBQVF3TyxLQUFNNmpCLE1BQU1yeUIsVUFBV3dPO0lBQ3JDLE9BQU9oTTtHQUNUO0dsQzBTQSxTQUFTMjRCLHFCQUFzQnI0QjtJQUM3QixPQUFPaVcsdUJBQXVCaUQseUJBQXlCbFosTUFBSUE7R0FDN0Q7R2tDcGVBLFNBQVNzNEIsY0FBYzlZLFFBQU8rWTtJQUM1QixJQUFJaEosTUFBTW1HLGdCQUNObGYsYUFBYWtEO0lBQ2pCLEdBQUc2ZTtLQUFXLFdBQ0Q7TUFDQSxJQUFMamMsT0FBTzBELG9CQUFvQlIsUUFBT2hKLFdBQVNBO01BQy9DLEdBQUc4RixXQUFXO01BQ2RnVCxlQUFlQyxLQUFJL1ksbUJBQW1COEYsT0FBT0E7OztLQUUxQyxNQUNDaWMsV0FBWTtNQUNQO09BQUxqYztTQUFPMEQ7V0FBb0JSLFFBQU9oSixXQUFXK2hCLFNBQVMvaEIsZ0JBQWdCQSxnQkFBZ0IraEI7TUFDMUYsR0FBR2pjLFdBQVdzSTtNQUNkMEssZUFBZUMsS0FBSS9ZLG1CQUFtQjhGLE9BQU9BO01BQzdDaWMsVUFBVWpjOztJQUdkLE9BQU8rYixxQkFBcUJELGNBQWM3STtHQUM1QztHakJmQSxTQUFTaUosZUFBZXBjO0lBQ2IsSUFBTG5CLE9BQU8wYyxhQUFhdmI7SUFDeEIsR0FBR25CLE1BQU1BO0lBQ1QsT0FBTzBjLGFBQWF2YjtJQUNwQjtHQUNGO0dBbUtBLFNBQVNxYyxzQkFBdUJqWjtJQUNyQixJQUFMTCxPQUFPRixpQkFBaUJPO0lBQzVCTDtJQUNBcVosZUFBZXJaO0lBQ2Y7R0FDRjtHRXZKQSxTQUFTdVosWUFBWXRjO0lBQ1YsSUFBSHVjLEtBQUtWLDJCQUEyQjdiO0lBQ3BDLElBQ0ksT0FBT2tjLGNBQWNLLGtCQUVyQkYsc0JBQXNCRTtHQUU5QjtHcUJvQ0EsU0FBU0Msa0JBQWtCNXhCLEdBQUc5SjtJQUM1QixHQUFHQSxTQUFTKzJCLHVCQUF1Qi8yQixLQUFLOEo7S0FDdENvUDtJQUNPLElBQUwrZCxPQUFPbnRCLEVBQUVpdEIsdUJBQXVCLzJCO0lBQ3BDLEdBQUd1WSxzQkFBc0IwZSxnQkFBZ0IxZTtLQUFvQjBlLE9BQU9BO0lBQ3BFLE9BQVFBLFNBQU8xNEIsb0JBQWlCMDRCO0dBQ2xDO0c3QnJFQSxTQUFTMEUsb0JBQXFCbjVCO0lBQzVCO0tBQUluRSxRQUFRTyxLQUFNNEQ7S0FDZG81QixRQUFRdjlCO0tBQ1J3OUIsZUFBZSxJQUFLajlCLEtBQUtQO0tBQ3pCeTlCLE1BQU0zN0IsWUFBWXk3QixRQUFRQztLQUMxQkUsVUFBVW45QixLQUFLUDtLQUNmMjlCLFVBQVVwOUIsS0FBS1A7S0FDZjQ5QjtPQUFvQjk3QixTQUFTNDdCLHlCQUF5QkM7SUFDMUQ7WUFBZ0IzOUI7WUFBZ0JBO1lBQWdCQTtZQUNuQ0E7WUFBYUE7WUFBY0E7WUFDM0JBO1lBQVl5OUI7WUFDWHo5Qix3QkFBd0I0OUI7R0FDeEM7R0FLQSxTQUFTQyxpQkFBaUJDO0lBQ3hCO0tBQUk5OUIsSUFBSSxJQUFLTyxLQUFLdTlCLGNBQVdBLE9BQU1BLE9BQU1BLE9BQU1BLE9BQU1BO0tBQ2pEMzVCLElBQUlyQyxXQUFXOUI7S0FDZis5QixNQUFNVCxvQkFBb0JuNUI7SUFDOUIsV0FBZUEsR0FBRTQ1QjtHQUNuQjtHWXFDQSxTQUFTQyxnQ0FBZ0NwVixNQUFNdkMsTUFBTUgsS0FBS0ssTUFBTXZRO0lBQzlELFNBQVNrUTtLQUNQckw7SUFDRixHQUFHN0UsVUFBVTtJQUNKLElBQUxxTSxPQUFPNkQsV0FBV0s7SUFDdEIsR0FBR0YsT0FBT3JRLE1BQU0ySSxxQkFBcUJpSyxPQUNuQzdFO0lBRUYsR0FBRzFCLE9BQU9yTSxNQUFNa1EsaUJBQ2RuQztJQUVRLElBQU45WixRQUFRd1UsMEJBQTBCbUssWUFBWXZDLE1BQUtBLE9BQU9yUTtJQUM5RGtRLGFBQWFqYyxPQUFNb1k7SUFDbkI7R0FDRjtHY0dBLFNBQVM0YiwyQkFBMkJ2RyxNQUFNd0c7SUFDeEMsSUFBSUMsU0FDQUMsT0FBT0QsS0FBS3pHLE1BQU15RyxLQUFLQSxNQUN2QnZlLE1BQU11ZTtJQUNWLFFBQVFELGNBQWE7S0FDbkJFLFNBQVVBLFNBQVNBO0tBQ25CQSxTQUFVQSxTQUFTQTtLQUNuQkEsU0FBVUEsU0FBU0E7S0FDbkJ4ZSxNQUFPQSxNQUFNd2UsSUFBSUY7S0FDakJBLFdBQVdBOztJQUViLE9BQU90ZTtHQUNUO0dDOUVBLFNBQVN5ZSxxQkFBcUJqRyxLQUFLeGM7SUFDM0IsSUFBRnZYLElBQUkrekI7SUFDUkEsU0FBU3hjO0lBQ1QsT0FBT3ZYO0dBQ1Q7R25DdVBBLFNBQVNpNkIsZ0JBQWdCQyxPQUN2QixTQUNGO0dVeEtBLFNBQVNDLGNBQWMzVyxLQUFLOUM7SUFDMUIsR0FBRzhDLFNBQVM5QyxXQUFXO0lBQ3ZCO0dBQ0Y7R0ZpQkEsU0FBUzBaLGdCQUFnQmwvQjtJQUNkLElBQUwrRyxPQUFPc2Isa0JBQWtCcmlCO0lBQzdCLEtBQUsrRyxtQkFDSG1iO0lBRUYsT0FBT25iLGtCQUFrQkE7R0FDM0I7R0FLQSxTQUFTbzRCLG1CQUFtQm4vQjtJQUNwQixJQUFGOEUsSUFBSW82QixnQkFBZ0JsL0I7SUFDeEI4RSxPQUFPc1Ysb0JBQW9CdFY7SUFDM0IsT0FBT0E7R0FDVDtHTnBJQSxTQUFTczZCLFlBQVlwNkIsR0FBRVosR0FBRWlZLEdBQUtyWCxFQUFFWixLQUFHaVksR0FBRSxTQUFRO0cyQndEN0MsU0FBU2dqQixlQUFnQnhMLE9BQU96cUI7SUFDOUIsR0FBS0EsYUFBZUEsU0FBU3lxQixrQkFBbUJyUDtJQUNoRCxPQUFPcVAsTUFBTXpxQjtHQUNmO0d4QmdFQSxTQUFTazJCLDRCQUE0QkM7SUFDMUIsSUFBTHpRLFFBQU15UTtJQUNWQTtJQUNBLE9BQU96UTtHQUNUO0dHcUJBLFNBQVMwUSxnQkFBZ0J4L0I7SUFDZCxJQUFMK0csT0FBT3NiLGtCQUFrQnJpQjtJQUM3QixLQUFLK0csbUJBQ0htYjtJQUVGLE9BQU9uYixrQkFBa0JBO0dBQzNCO0dKNEZBLFNBQVMwNEIsZ0JBQWdCdnpCLEdBQUssT0FBTzNKLFVBQVUySixHQUFJO0dXekxuRCxTQUFTd3pCLDRCQUE0QjdhLE1BQVEsU0FBVTtHSHZEdkQsU0FBUzhhLDZCQUNQLFNBQ0Y7R2tCbUJBLFNBQVNDLDZCQUE4QnpZLFNBQVNELEtBQUtHLFNBQVNELEtBQUszUTtJQUNqRSxPQUFPMlMsaUNBQWlDbEMsS0FBSUMsU0FBU0MsS0FBS0MsU0FBUTVRO0dBQ3BFO0c5QjhSQSxTQUFTb3BCO0lBQ1AzZDtHQUNGO0dKcEhBLFNBQVM0ZCxlQUFnQjV6QixHQUFHdEosR0FBSyxPQUFPc0osTUFBTXRKLEdBQUc7R3dCckxqRCxTQUFTbTlCLDZCQUE2QnRaLEtBQUtLLE1BQU1ILEtBQUtLLE1BQU12UTtJQUMxRCxTQUFTZ1E7S0FDUG5MO0lBQ0YsU0FBU3FMO0tBQ1ByTDtJQUNGLEdBQUc3RSxVQUFVO0lBQ2IsSUFBSWtNLE9BQU84RCxXQUFXSyxPQUNsQmhFLE9BQU82RCxXQUFXSztJQUN0QixHQUFHckUsT0FBT2xNLE1BQU1nUSxpQkFDZGpDO0lBRUYsR0FBRzFCLE9BQU9yTSxNQUFNa1EsaUJBQ2RuQztJQUVRLElBQU45WixRQUFRK2Isa0JBQWtCOUQsTUFBS0EsT0FBS2xNO0lBQ3hDa1EsYUFBYWpjLE9BQU1zYztJQUNuQjtHQUNGO0dBcENBLFNBQVNnWix5QkFBeUIvYTtJQUN6QjtLQUFIZ2I7O1FBQVNyaEI7U0FBV3FHLFdBQVdBLGVBQWVBLFlBQVlBO0lBQzlELE9BQU84SCw4QkFBOEJrVCxZQUFZQTtHQUNuRDtHVTZCQSxTQUFTQyx1QkFBd0IvWSxTQUFTRCxLQUFLRyxTQUFTRCxLQUFLM1E7SUFHM0QsR0FBR3lRLGdCQUNEQSxNQUFNOFkseUJBQXlCOVk7SUFDakMsR0FBR0UsZ0JBQ0RBLE1BQU00WSx5QkFBeUI1WTtJQUNqQyxPQUFPMlksNkJBQTZCN1ksS0FBSUMsU0FBUUMsS0FBSUMsU0FBUTVRO0dBQzlEO0doQm9UQSxTQUFTMHBCLGFBQWF6YixRQUFRNUU7SUFDbkIsSUFBTHVFLE9BQU9GLGlCQUFpQk87SUFDNUIsR0FBSUwsZUFBZXZqQixNQUFNaWU7SUFDekI7TUFBR2UsT0FBT3VFLGNBQWNBLG1CQUNsQnZFLE9BQU91RTtTQUNQQTtLQUNKQSxtQkFBbUJBLG1CQUFtQkEsY0FBY3ZFO1FBQy9DLENBQ0x1RSxjQUFjdkUsS0FDZHVFLHNCQUNBQTtJQUVGO0dBQ0Y7R0FVQSxTQUFTK2IsbUJBQW1CMWIsUUFBTzVFO0lBQ3pCLElBQUpBLE1BQU1xVixvQkFBb0JyVjtJQUM5QixPQUFPcWdCLGFBQWF6YixRQUFRNUU7R0FDOUI7R3FCL1VtQixJQUFmdWdCO0dDbkNKLFNBQVNDLHFCQUFxQjE3QixHQUM1QkEsa0JBQ0EsU0FDRjtHRHlEMkIsSUFBdkIyN0I7R0FDSixTQUFTQyxrQkFBa0JwOEIsR0FBRXE4QjtJQUN6QixJQUFJNzNCLEtBQUsyM0IsMEJBQ0wzZ0IsTUFBTXlnQjtJQUNWQSxpQkFBaUJ6M0I7SUFDVCxJQUFKeVgsTUFBTXVJLGNBQWN4a0I7SUFDeEJpOEIsaUJBQWlCemdCO0lBQ2pCMGdCLHFCQUFxQkc7SUFDckIsT0FBTzczQjtHQUNYO0czQitEQSxTQUFTODNCLGdCQUFnQjFnQyxNQUFNMmdDO0lBQ3BCLElBQUw1NUIsT0FBT3NiLGtCQUFrQnJpQjtJQUM3QixLQUFLK0csbUJBQ0htYjtJQUVGLE9BQU9uYixrQkFBa0JBLFdBQVc0NUI7R0FDdEM7R1pnRkEsU0FBU0Msc0JBQXVCMTBCLEdBQUduSCxHQUFLLE9BQU9tSCxhQUFhbkgsR0FBRztHc0JEL0QsU0FBUzg3QixjQUFlMzBCLEdBQUd0SjtJQUFLLFVBQVNpc0IsaUJBQWlCM2lCLEdBQUV0SjtHQUFnQjtHbEJLNUUsU0FBU2srQiwwQkFBNkIsVUFBVztHRW9EakQsU0FBU0Msc0JBQXNCMzhCO0lBQzdCO0tBQ1UsSUFBSnFTLE1BQU1sUTtLQUNWLEdBQUdrUSxRQUFRO01BQ0EsSUFBTHNILFdBQVd2WCxNQUFNaVE7TUFDckIsSUFBVyxJQUFGclUsT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUFLMmIsS0FBSzNiLEtBQUttRSxVQUFVbkU7OztNQUVsRDJiLFFBQVFwZDtLQUVGLElBQUowZixNQUFNdUksY0FBY3hrQixHQUFHMlo7S0FDM0IsT0FBUXNDLGVBQWUyZ0IsV0FBVUQsc0JBQXNCMWdCLE9BQUtBLElBVHZEO0dBV1Q7R0FrQ0EsU0FBUzRnQiwyQkFBMkI3OEI7SUFDbEM7S0FDRSxJQUFJcVMsTUFBTWxRLGtCQUNOd1gsV0FBV3ZYLE1BQU1pUTtLQUNyQnNILFVBQVVwZTtLQUNWLElBQVcsSUFBRnlDLE9BQU9BLElBQUlxVSxLQUFLclUsS0FBSzJiLEtBQUszYixTQUFPbUUsVUFBVW5FO0tBQzVDLElBQUppZSxNQUFNdUksY0FBY3hrQixHQUFFMlo7S0FDMUIsT0FBUXNDLGVBQWUyZ0IsV0FBVUQsc0JBQXNCMWdCLE9BQUtBLElBTnZEO0dBUVQ7R0FyUEEsU0FBUzZnQixhQUNQLFNBQ0Y7R3NCN0dpQyxJQUE3QkMsK0JBQStCeFQ7R0VpTGpDLFNBQVN5VCw0QkFBNEJwOEI7SUFDckNna0Isb0JBQW9CaGtCO0lBQ3BCO0dBQ0Y7R1RvS0EsU0FBU3E4QixZQUFZcGMsSUFBSTdpQjtJQUN2QixHQUFJQSxTQUFTQSxLQUFLNmlCLGdCQUNoQjNKO0lBQ0YsT0FBTzJKLFFBQVE3aUI7R0FDakI7R0FJQSxTQUFTay9CLGNBQWNyYyxJQUNyQixPQUFPb2MsWUFBWXBjLE9BQ3JCO0dmaEdBLFNBQVNzYyxrQkFBa0J2OEIsR0FBR1osR0FBRzJaO0lBQy9CLE9BQU8vWSxFQUFFc1gsd0JBQXdCbFksVUFBVVksR0FBR3l0QixtQkFBbUIxVTtHQUNuRTtHbUNuUDBCLElBQXRCeWpCO0dBZ0RKLFNBQVNDLGlCQUFrQjU4QjtJQUN6QixHQUFJQSxPQUFPeVc7SUFDTCxJQUFGcFA7SUFDSkEsV0FBV2l0Qix1QkFBdUJ0MEI7SUFDbEMsT0FBT3FIO0dBQ1Q7R0FaQSxTQUFTdzFCLGlCQUFrQjc4QixHQUNuQixJQUFGcUgsSUFBSXUxQixpQkFBaUI1OEIsSUFDekIsT0FBT3FILEVBQ1Q7R3JCR0EsU0FBU3kxQix1QkFBdUJDO0lBQzlCLEdBQUlBO0tBQ0Z0bUI7O0lBR0ZzbUI7SUFDQUEsa0JBQWtCQTtJQUNsQkE7SUFDQTtHQUNGO0dBSUEsU0FBU0Msa0JBQWtCOU4sV0FBV3ZJO0lBQ2xDLEdBQUl1STtLQUNBelk7O0lBR1MsSUFBVHdtQixlQUFlL04scUNBQXFDdkk7SUFDeERzVyxhQUFhL04sd0JBQXdCdkk7SUFDbkI7S0FBZHVXO09BQWdCaFY7U0FBc0JnSCxnQkFBZ0JBLG1CQUFtQnZJLE9BQU9zVztJQUNwRkgsdUJBQXVCNU47SUFFdkIsT0FBT2dPO0dBQ1g7R25CeXZCQSxTQUFTQyx1QkFBdUJqOUIsR0FBSyxPQUFPb1csdUJBQXVCcFcsR0FBRztHS2x6QnRFLFNBQVNrOUIsZ0JBQWdCNWhCO0lBQ2pCLElBQUYzVTtJQUNKLE1BQU0yVSxPQUFPQSxjQUFjO0tBQ3pCQSxNQUFNQSxvQkFBb0J2ZixNQUFNdWY7S0FDaEMzVTs7SUFFRixPQUFPMlU7R0FDVDtHSHlKQSxTQUFTNmhCLHVCQUF1QnJkLE1BQVEsU0FBUztHRnhCakQsU0FBU3NkLHNCQUF1QnA5QixHQUFHM0M7SUFDakMsT0FBUTJDO2VBRU4sR0FBSTNDLEtBQUsyQyxZQUFZOztPQUVyQixPQUFPQSxlQUFlM0M7O09BRXRCLE9BQU8yQyxJQUFJM0M7O0dBRWY7R0FpR0EsU0FBU2dnQyxpQkFBaUJyOUIsR0FBRTNDO0lBQzFCLEdBQUlBLFdBQVcyQyxTQUFTbWM7SUFDbEIsSUFBRmhjLFFBQVFzQjtJQUNaLElBQVUsSUFBRm9LLE9BQU9BLE9BQU9BLEtBQ3BCMUwsTUFBTTBMLEtBQUt1eEIsc0JBQXVCcDlCLEdBQUczQyxJQUFJd087SUFFM0MsT0FBT3lVLG9CQUFvQm5nQjtHQUM3QjtHZTlSNEIsSUFBeEJtOUI7R0FJSixTQUFTQztJQUFrQ0MsWUFBWUMsV0FBV0M7SUFDaEVKO0lBQ0EsV0FBV0EseUJBQXlCRSxZQUFZRSxZQUFZRDtHQUM5RDtHSnFPQSxTQUFTRSxzQkFBc0I3ZCxNQUM3QixPQUFPdEksNEJBQ1Q7RzZCbk5BLFNBQVNvbUIsa0JBQWtCejJCLEdBQUc5SixHQUFHaWE7SUFDL0IsR0FBR2phLFNBQVMrMkIsdUJBQXVCLzJCLEtBQUs4SjtLQUN0Q29QO0lBQ0YsR0FBSWUsYUFBYXZXLFVBQVU2VSxtQkFBb0I7S0FDN0MsR0FBR3pPLGVBQWVBLGNBQWNtUSxHQUFHMWIsV0FBVzBiO0tBQzlDblEsRUFBRWl0Qix1QkFBdUIvMkIsU0FBU3VZLG1CQUFtQjBCOzs7S0FFbERuUSxFQUFFaXRCLHVCQUF1Qi8yQixLQUFLaWE7SUFDbkM7R0FDRjtHQUlBLFNBQVN1bUIsb0JBQW9CMTJCLEdBQUc5SjtJQUM5QixHQUFHQSxTQUFTKzJCLHVCQUF1Qi8yQixLQUFLOEo7S0FDdENvUDtJQUNGO01BQUdYO1NBQXNCek8sRUFBRWl0Qix1QkFBdUIvMkIsY0FBY3VZO1NBQXNCek8sZ0JBQWlCO0tBQzdGLElBQUowVCxNQUFNMVQsRUFBRWl0Qix1QkFBdUIvMkI7S0FDbkMsR0FBR3dkLFFBQVFqZixVQUFXO01BQ1YsSUFBTmdVO01BQ0osSUFBVSxJQUFGL0QsSUFBSXVvQixzQkFBc0J2b0IsSUFBSTFFLFVBQVUwRSxJQUFJO09BQzFDLElBQUozSixNQUFNaUYsRUFBRTBFO09BQ1osR0FBRzNKLGVBQWUwVCxtQkFBbUI7UUFDbkMxVCxNQUFNQTtRQUNOLEdBQUdBLFFBQVEyWSxLQUFLakw7OztNQUdwQixHQUFHQSxZQUFZekksZ0JBQWdCMFQ7OztJQUduQzFULEVBQUVpdEIsdUJBQXVCLzJCLEtBQUt6QjtJQUM5QjtHQUNGO0dBc0JBLFNBQVNraUMsY0FBYzMyQixHQUFHOUosR0FBR2lhO0lBQzNCLEdBQUdBLFFBQVF1bUIsb0JBQW9CMTJCLEdBQUU5SixTQUM1QnVnQyxrQkFBa0J6MkIsR0FBRTlKLEdBQUVpYTtJQUMzQjtHQUNGO0c5QndJQSxTQUFTeW1CLGdCQUFnQjlpQztJQUN2QixJQUFJK0csT0FBT3NiLGtCQUFrQnJpQixPQUN6QjZnQixLQUFLOVosbUJBQW1CQTtJQUM1QixHQUFHOFosU0FBUzdCLHdCQUF3QnhFLHVCQUF1QnhhO0lBQzNEO0dBQ0Y7R1Z2QkEsU0FBUytpQztJQUNQem5CO0dBQ0Y7R0FzQ0EsU0FBUzBuQixrQkFBa0JqK0IsR0FBRTNDO0lBQzNCLEdBQUlBLFdBQVcyZSxzQkFBc0JoYyxRQUFRZytCO0lBQzdDO0tBQUl0ZCxLQUFLekUsdUJBQXdCamMsR0FBRzNDO0tBQ2hDc2pCLEtBQUsxRSx1QkFBd0JqYyxHQUFHM0M7S0FDaEN1akIsS0FBSzNFLHVCQUF3QmpjLEdBQUczQztLQUNoQ3dqQixLQUFLNUUsdUJBQXdCamMsR0FBRzNDO0lBQ3BDLE9BQVF3akIsV0FBV0QsV0FBV0QsVUFBVUQ7R0FDMUM7R0F3Q0EsU0FBU3dkLGVBQWdCbCtCLEdBQUczQztJQUMxQixHQUFJQSxXQUFXMkMsS0FBS21jO0lBQ3BCLE9BQU9paEIsc0JBQXVCcDlCLEdBQUczQztHQUNuQztHT3JCQSxTQUFTOGdDLGlCQUFrQmgzQixHQUFHdEosR0FBSyxPQUFPTCxXQUFXMkosR0FBR3RKLEdBQUk7R0YzQjVELFNBQVN1Z0MsYUFBYS8rQixHQUFHWSxHQUFHK1k7SUFBUSxPQUFPM1osUUFBUVksR0FBR3l0QixtQkFBbUIxVTtHQUFRO0dGV2pGLFNBQVNxbEIsNEJBQStCLDBCQUEwQjtHUXVFbEUsU0FBU0MsZ0NBQWtDLFNBQVM7RzBCckxwRCxTQUFTQyxnQkFBZ0JwM0IsR0FDdkIsU0FDRjtHckNvWkEsU0FBU3EzQixvQkFBb0Jqa0IsSUFBSUU7SUFDOUJGLFlBQWFqQiw2QkFBNkJpQjtJQUMxQ0UsWUFBYW5CLDZCQUE2Qm1CO0lBQzNDLE9BQVFGLE9BQU9FO0dBQ2pCO0dzQjNnQkEsU0FBU2drQiwwQkFBMEJ0YyxLQUFLcUMsU0FBU25DLEtBQUtvQyxTQUFTL1M7SUFDN0QsT0FBT29RLGdDQUFnQ0ssS0FBSXFDLFNBQVFuQyxLQUFJb0MsU0FBUS9TO0dBQ2pFO0dmK1JBLFNBQVNndEIsZ0JBQWdCdjNCLEdBQ3ZCLFdBQVdvcEIsZUFBZXBwQixHQUM1QjtHT05BLFNBQVN3M0Isa0JBQWtCQztJQUNuQixJQUFGNStCLElBQUltZTtJQUNSbmU7SUFDQUEsaUJBQWlCNCtCLFVBQVM1K0IsV0FBVzQrQjtJQUNyQyxJQUFVLElBQUZ2aEMsT0FBT0EsSUFBSXVoQyxXQUFXdmhDO0tBQzVCMkMsaUJBQWlCNCtCLEdBQUd2aEMsT0FBTTJDLFdBQVc0K0IsR0FBR3ZoQztJQUMxQzJDLGlCQUFpQjQrQixVQUFTNStCLFdBQVc0K0I7SUFDckM1K0I7SUFDQTtHQUNGO0dJaFRBLFNBQVM2K0I7SUFDUDtHQUNGO0dEZ1VBLFNBQVNDLG1CQUFvQm5mO0lBQ2xCLElBQUxMLE9BQU9GLGlCQUFpQk87SUFDNUIsR0FBR0wsb0JBQW9CQSxnQkFBZ0I7S0FDckNBO0tBQ0FBO0tBQ0FELFlBQVlDOztJQUVkLEdBQUlBLG9CQUFvQkEsaUJBQ3RCeUY7SUFDTSxJQUFKekosTUFBTWdFLFlBQVlBO0lBQ3RCQTtJQUNBLE9BQU9oRTtHQUNUO0dBS0EsU0FBU3lqQixrQkFBbUJwZjtJQUMxQixJQUFJTCxPQUFPRixpQkFBaUJPLFNBQ3hCckU7SUFDSixJQUFVLElBQUZqZSxPQUFPQSxPQUFPQTtLQUNwQmllLE9BQU9BLFlBQVl3akIsbUJBQW1CbmY7SUFFeEMsT0FBT3JFO0dBQ1Q7R0hpSUEsU0FBUzBqQjtJQUNQN2hCO0dBQ0Y7R2V4VkEsU0FBUzhoQix5QkFBeUJoL0IsR0FBSyxTQUFVO0doQjlFakQsU0FBU2kvQixjQUFjM2IsS0FBSzlDLEtBQzFCLE9BQU84QyxTQUFTOUMsS0FDbEI7R21CN0JBLFNBQVMwZSxnQkFBZ0IzTyxJQUFJaFcsSUFBSWlXLElBQUkvVixJQUFJaEo7SUFDdkMsR0FBSWdKLE1BQU1GO0tBQUksSUFDRCxJQUFGM08sT0FBT0EsS0FBSzZGLEtBQUs3RixLQUFLNGtCLEdBQUcvVixLQUFLN08sS0FBSzJrQixHQUFHaFcsS0FBSzNPOztLQUMvQyxJQUNNLElBQUZBLElBQUk2RixLQUFLN0YsUUFBUUEsS0FBSzRrQixHQUFHL1YsS0FBSzdPLEtBQUsya0IsR0FBR2hXLEtBQUszTztJQUV0RDtHQUNGO0d6QndiQSxTQUFTdXpCLHFCQUFxQnAvQjtJQUM1QixJQUFJc2I7SUFDSnRiLElBQUl5Vix1QkFBdUJ6VjtJQUMzQnNiLFFBQU90YjtJQUNQLEdBQUtBLGdCQUFrQnNiLFFBQVFBLEtBQU0sT0FBT0E7SUFDNUN0YixJQUFJQTtJQUNKc2IsUUFBT3RiO0lBQ1AsR0FBTUEsZ0JBQWtCc2IsUUFBUUEsT0FBUyxtQkFBbUJ0YixJQUFJLE9BQU9zYjtJQUNqRSxJQUFGTSxJQUFJLCtEQUErRDViO0lBRXZFLEdBQUc0YixFQUFFO0tBQ0g7TUFBSXlqQixLQUFLempCO01BQ0wwakIsV0FBVzlnQyxTQUFTb2QsT0FBT0EsT0FBT3lqQjtNQUNsQ3pGLFlBQVloZSxnQkFBWXlqQjtLQUM1Qi9qQixNQUFNZ2tCLFdBQVc5aEMsWUFBWW84QjtLQUM3QixPQUFPdGU7O0lBRVQsR0FBRyx5QkFBeUJ0YixJQUFJLE9BQU91bEI7SUFDdkMsR0FBRyx1QkFBdUJ2bEIsSUFBSSxTQUFRdWxCO0lBQ3RDcEk7R0FDRjtHRzdWQSxTQUFTb2lCO0lBQ1AsT0FBT25wQix1QkFBdUIrQjtHQUNoQztHWG1EQSxTQUFTcW5CLGVBQWdCcjRCLEdBQUd0SixHQUFLLE9BQU9zSixNQUFNdEosR0FBRztHQU9qRCxTQUFTNGhDLGVBQWV0NEIsR0FBRXRKLEdBQUssT0FBT3NKLE1BQU10SixHQUFHO0dBaEIvQyxTQUFTNmhDLGVBQWV2NEIsR0FBRXRKLEdBQUssT0FBT3NKLFdBQVd0SixPQUFRO0cwQnBMekQsU0FBUzhoQyx5QkFBMEIzL0I7SUFDakMsSUFBSTNDLE9BQU9xVSxNQUFNc0ssc0JBQXNCaGMsSUFBSW96QixXQUFXbDFCO0lBQ3RELEdBQUl3VDtLQUFTLE9BQ0h1Syx1QkFBdUJqYyxHQUFFM0M7O1FBQ3hCQSxLQUFLYSxZQUFXOztRQUNoQmIsS0FBS2EsVUFBVTs7SUFHMUIsR0FBSWIsUUFBUXFVLE9BQU91Syx1QkFBdUJqYyxHQUFHM0M7S0FDM0MsT0FBUTRlLHVCQUF1QmpjLEdBQUczQzs7O1FBQ2YrMUIsV0FBVy8xQixRQUFROzs7UUFDbkIrMUIsVUFBVy8xQixRQUFROzs7UUFDbkIrMUIsVUFBVy8xQixRQUFROzs7UUFDbkJBLFFBQVE7O0lBRTdCLFFBQVFBLEdBQUdhLE1BQU1rMUI7R0FDbkI7R0FHQSxTQUFTd00saUJBQWlCajVCO0lBQ3hCLEdBQUlBLFdBQVdBLFNBQVUsT0FBT0E7SUFDaEMsR0FBSUEsV0FBV0EsU0FBVSxPQUFPQTtJQUNoQyxHQUFJQSxXQUFXQSxVQUFVLE9BQU9BO0lBQ2hDO0dBQ0Y7RzFCaVFBLFNBQVNrNUIscUJBQXFCNy9CO0lBQzVCO0tBQUlELElBQUk0L0IseUJBQTBCMy9CO0tBQzlCM0MsSUFBSTBDO0tBQU03QixPQUFPNkI7S0FBTXF6QixPQUFPcnpCO0tBQzlCKy9CLFNBQVN6cUIsb0JBQW9CK2Q7S0FDN0IyTTtPQUNBLElBQUlwckIsNkNBQTZDbXJCO0tBQ2pEbjVCLElBQUlzVix1QkFBdUJqYyxHQUFHM0M7S0FDOUIzQixJQUFJa2tDLGlCQUFpQmo1QjtJQUN6QixHQUFJakwsU0FBU0EsS0FBSzAzQixNQUFNalc7SUFDaEIsSUFBSjdCLE1BQU1qRyxvQkFBb0IzWjtJQUM5QixPQUFTO0tBQ1AyQjtLQUNBc0osSUFBSXNWLHVCQUF1QmpjLEdBQUczQztLQUM5QixHQUFJc0osU0FBUztLQUNiakwsSUFBSWtrQyxpQkFBaUJqNUI7S0FDckIsR0FBSWpMLFNBQVNBLEtBQUswM0IsTUFBTTtLQUV4QixHQUFJc00sZUFBZUssV0FBV3prQixNQUFNNkI7S0FDcEN6aEIsSUFBSTJaLG9CQUFvQjNaO0tBQ3hCNGYsTUFBTWtrQixlQUFlQyxlQUFlSyxRQUFReGtCLE1BQU01ZjtLQUVsRCxHQUFJZ2tDLGVBQWVwa0IsS0FBSzVmLElBQUl5aEI7O0lBRTlCLEdBQUk5ZixLQUFLMmUsc0JBQXNCaGMsSUFBSW1kO0lBQ25DLEdBQUlpVyxjQUFjc00sbUJBQW1CL3FCLHVCQUF1QjJHO0tBQzFENkI7SUFDRixHQUFJamYsVUFBVW9kLE1BQU05RixlQUFlOEY7SUFDbkMsT0FBT0E7R0FDVDtHcUJ1SUEsU0FBUzBrQixjQUFjOWYsSUFBSU0sSUFBSWxKLEdBQzdCNEksT0FBT0EsVUFBVU0sS0FBS2xKLElBQ3RCLFNBQ0Y7R3JCNU9BLFNBQVMyb0IsZUFBZ0I5NEIsR0FBR3RKLEdBQUssT0FBT3NKLE1BQU10SixHQUFHO0dBSGpELFNBQVNxaUMsY0FBZS80QixHQUFHdEosR0FBSyxPQUFPc0osS0FBS3RKLEdBQUk7RzJDdk9oRCxTQUFTc2lDLGNBQWM3b0I7SUFDckIsU0FBUzhvQixRQUFRajVCLEdBQUdtQixHQUNsQixPQUFPdXpCLHNCQUFzQjEwQixHQUFFbUIsR0FDakM7SUFDQSxTQUFTKzNCLFFBQVFsNUIsR0FBR21CLEdBQ2xCLE9BQU9vbUIsZ0NBQWdDdm5CLEdBQUVtQixHQUMzQztJQUNBLFNBQVNnNEIsR0FBR25nQyxHQUFHK0osR0FDYixPQUFPZzJCLGNBQWMvL0IsR0FBRStKLEdBQ3pCO0lBQ0EsU0FBU3EyQixJQUFJcGdDLEdBQUcrSixHQUNkLE9BQU8rMUIsZUFBZTkvQixHQUFFK0osR0FDMUI7SUFDQSxTQUFTa2xCLElBQUlqdkIsR0FBRytKLEdBQ2QsT0FBT3MxQixlQUFlci9CLEdBQUUrSixHQUMxQjtJQUNBLFNBQVM0dkIsSUFBSTM1QixHQUFHK0osR0FDZCxPQUFPdTFCLGVBQWV0L0IsR0FBRStKLEdBQzFCO0lBQ0EsU0FBU3MyQixLQUFLcjVCLEdBQUdtQixHQUNmLE9BQU9nNEIsR0FBR0YsUUFBUWo1QixHQUFFbUIsSUFBRyszQixRQUFTbDVCLFFBQVFtQixJQUMxQztJQUNBLFNBQVNtNEIsSUFBSXRnQyxHQUFHOUMsR0FDZCxPQUFPa2tCLGNBQWNwaEIsR0FBRzlDLEdBQzFCO0lBQ0EsU0FBU3FqQyxJQUFJdmdDLEdBQUc5QyxHQUFHOEosR0FDakIsT0FBTzY0QixjQUFjNy9CLEdBQUc5QyxHQUFHOEosR0FDN0I7SUFDQTtLQUFJdzVCLElBQUlkLHFCQUFxQnZQO0tBQ3pCc1EsT0FBT2YscUJBQXFCdlA7S0FDNUJsRztLQUFHeVc7S0FBSUM7S0FDUEMsS0FBS3pwQjtLQUNMblgsSUFBSXNnQyxJQUFJTTtLQUNSL2dDLElBQUl5Z0MsSUFBSU07S0FDUkMsS0FBS1AsSUFBSU07S0FDVHRWLEtBQUtnVixJQUFJTTtJQUViM1csSUFBSWdGLElBQUlwdkIsR0FBR2doQztJQUVYNVcsSUFBSTBQLElBQUl5RyxJQUFJblcsR0FBRWlXLFFBQVFqVyxTQUFRd1c7SUFDOUJ4VyxJQUFJMFAsSUFBSXlHLElBQUluVyxHQUFFaVcsUUFBUWpXLFNBQVF3VztJQUM5QnhXLElBQUltVyxJQUFJblcsR0FBRWlXLFFBQVFqVztJQUVsQnNXLElBQUlLLE9BQU8zUixJQUFLMEssSUFBSTk1QixHQUFFMmdDLElBQUl4Z0M7SUFFMUIsSUFBSTBnQyxLQUFLRyxJQUNMRixLQUFLclY7SUFDVHFWLEtBQUtQLElBQUlPLElBQUdEO0lBQ1pBLEtBQUtMLEtBQUtLO0lBQ1ZBLEtBQUtOLElBQUlBLElBQUlNLElBQUlDLEtBQU1WLFFBQVFVO0lBQy9CQSxLQUFLTixLQUFLTTtJQUNWSixJQUFJSyxPQUFPRjtJQUNYSCxJQUFJSyxPQUFPRDtJQUVYLE9BQU8xVztHQUNUO0d2Q29MQSxTQUFTNlcsNEJBQStCLFNBQVU7R0VyQmxELFNBQVNDLHNCQUFzQjVnQztJQUN2QixJQUFGSDtJQUNKLE1BQU1HLFNBQVNBLElBQUlBLE1BQ2pCSCxPQUFPRztJQUVULE9BQU9IO0dBQ1Q7R1dnWG9CO0lBQWhCZ2hDO01BQWtCO1FBQ3BCLFNBQVNDLFNBQVl4bUMsZ0JBQWlCO1FBQ3RDd21DOzs7Ozs7O21CQUVrQjNhLE1BQU10a0I7V0FDcEIsSUFBVyxJQUFGOUUsSUFBSW9wQixVQUFTcHBCLFFBQU9BO1lBQzNCekMsV0FBV0Esb0JBQXFCdUgsU0FBUzlFO1VBRnZDOzttQkFJYTBkLEtBQUswTCxNQUFNdGtCO1dBQ3BCLElBQUo0WSxNQUFNQTtXQUNWLElBQVcsSUFBRjFkLElBQUlvcEIsVUFBU3BwQixRQUFPQTtZQUMzQnpDLFdBQVdtZ0IsU0FBVTVZLFNBQVM5RTtVQUh6Qjs7bUJBS1lvcEIsTUFBTTdOLE1BQU16VztXQUMvQnZILFdBQVdBLG9CQUFvQmdlO1dBQy9CLElBQVcsSUFBRnZiLElBQUlvcEIsVUFBU3BwQixRQUFPQTtZQUMzQnpDLFdBQVdBLG9CQUFxQnVILFNBQVM5RTtVQUhsQzs7bUJBS1kyWDtXQUNyQixHQUFJQTtZQUFtQnBhLHlCQUE4Q29hO21CQUM1REE7WUFBb0JwYSwwQkFBZ0RvYTs7WUFDeEVwYSwwQkFBZ0RvYTtVQUgxQzswQkFLSyxPQUFPcGEsZUFBckI7OztXQUVGQSxpQkFBaUJBO1dBQ2pCQTtXQUNBQTtXQUNBQSxlQUFnQkE7V0FDaEJBLGVBQWdCQTtXQUNoQkEsZUFBZ0JBO1dBQ2hCQSxlQUFnQkE7V0FDaEIsT0FBT0E7VUFSQTtRQVdYLGdCQUFpQjBjLEdBQUdyVztTQUNsQkEsUUFBUWlnQyxzQkFBc0JqZ0M7U0FFOUI7VUFBSW9nQyxhQUFjcGdDO1VBQ2RxZ0MsV0FBYXJnQztTQUdqQixHQUFJcWdDO1VBQ0ZubUM7O1NBRUY7VUFBSWltQixhQUFhZ2dCO1VBQ2JyWDtVQUNBd1gsbUJBQW1CRixhQUFhdGxDLFdBQVd3aUI7U0FFL0MsU0FBU2lqQixLQUFLbHFCO1VBQ1osR0FBSStwQixZQUFZO1VBQ0ksSUFBaEJJLGtCQUFrQkYsd0JBQXdCanFCO1VBQzlDLEdBQUltcUIsZ0JBQWlCO1dBQUVyZ0Isb0JBQW9CcWdCO1dBQWtCOztjQUN4RCxDQUFFRix1QkFBdUJqcUIsSUFBSTtTQUNwQztTQUVBLFNBQVNvcUIsV0FBWXBxQjtVQUNuQixHQUFJQSxjQUFlO1dBQ2pCLEdBQUlrcUIsS0FBS2xxQixJQUFJO1dBQ2I7WUFBSXJjLE9BQU9xYztZQUNQcXFCLE1BQU10WSxnQkFBZ0JwdUI7WUFDdEIybUM7V0FDSixLQUFJRDtZQUNGcHJCO1dBQ0YsR0FBR29yQixvQkFBb0IvbEMsVUFBVTtZQUMvQndsQjtZQUNBLElBQVcsSUFBRi9qQixPQUFPQSxJQUFJcEMsYUFBYW9DO2FBQy9CK2pCLGdCQUFpQm5tQixnQkFBZ0JvQztZQUNuQytqQjtZQUNlLElBQVh5Z0IsYUFBYXpnQjtZQUNqQixJQUFVLElBQUYvakIsT0FBT0EsUUFBUUEsS0FDckIrakI7WUFFRnVnQixjQUFjdmdCLFFBQVE5SixHQUFHc3FCO1lBQ3pCeGdCLGdCQUFnQnlnQixnQkFBZ0JEO1lBQ2hDeGdCLGdCQUFnQnlnQjtZQUNoQnpnQixnQkFBZ0J5Z0Isb0JBQW9CRDs7ZUFDL0I7WUFDTHhnQjtZQUNBLElBQVcsSUFBRi9qQixPQUFPQSxJQUFJcEMsYUFBYW9DO2FBQy9CK2pCLGdCQUFpQm5tQixnQkFBZ0JvQztZQUNuQytqQjtZQUNZLElBQVIwZ0IsVUFBVTFnQjtZQUNkdWdCLGNBQWN2Z0IsUUFBUTlKLEdBQUdzcUI7WUFDekIsR0FBSUQsb0JBQW9CdmdCLGVBQWUwZ0I7YUFDckMza0I7cUVBQW9FbGlCOztXQUV4RW1tQix1QkFBd0J3Z0I7V0FDeEJ4Z0IsdUJBQXdCd2dCOztrQkFFakJ0cUIsYUFBYTdWLFNBQVM2VixVQUFVQSxVQUFTO1dBQ2hELEdBQUlBO1lBQ0Y2RjtXQUVGLEdBQUlpSSx5QkFBeUI5TjtZQUMzQmY7V0FDRixHQUFJZSxnQkFBZ0JrcUIsS0FBS2xxQixJQUFJO1dBQzdCLEdBQUlBLGFBQWFBO1lBQ2Y4Six1QkFBbUQ5SixRQUFTQTs7WUFFNUQ4Siw0QkFBbUQ5SixxQkFBcUJBO1dBQzFFOEosa0JBQWtCOUo7V0FDbEI4SixrQkFBa0I5SjtXQUNsQixHQUFJQSxjQUFjeVMsV0FBWXpTOztrQkFDckJvQyxpQkFBaUJwQyxHQUFJO1dBQzlCLEtBQUtvQyxpQkFBaUJ0RDtZQUNwQitHOztXQUVGLEdBQUlxa0IsS0FBS2xxQixJQUFJO1dBQ0wsSUFBSjVGLE1BQU0ySSxxQkFBcUIvQztXQUMvQixHQUFJNUY7WUFDRjBQLHVCQUFvRDFQO21CQUM3Q0E7WUFDUDBQLDJCQUFnRDFQOztZQUVoRDBQLDRCQUFtRDFQO1dBQ3JELElBQVcsSUFBRnJVLE9BQU1BLElBQUlxVSxLQUFJclU7WUFDckIrakIsZ0JBQWlCZ2Msc0JBQXNCOWxCLEdBQUVqYTtXQUMzQytqQix3QkFBeUIxUDtXQUN6QjBQLHdCQUF5QjFQOztrQkFDaEJpSSxrQkFBa0JyQyxHQUFJO1dBQy9CLEdBQUlrcUIsS0FBS2xxQixJQUFJO1dBQ0wsSUFBSjVGLE1BQU1zSyxzQkFBc0IxRTtXQUNoQyxHQUFJNUY7WUFDRjBQLHVCQUFvRDFQO21CQUM3Q0E7WUFDUDBQLDJCQUFnRDFQOztZQUVoRDBQLDRCQUFtRDFQO1dBQ3JELElBQVcsSUFBRnJVLE9BQU1BLElBQUlxVSxLQUFJclU7WUFDckIrakIsZ0JBQWlCbkYsdUJBQXVCM0UsR0FBRWphO1dBQzVDK2pCLHdCQUF5QjFQO1dBQ3pCMFAsd0JBQXlCMVA7O2tCQUVyQjRGLE1BQU1BLE9BQUs7V0FDQyxJQUFWeXFCLG1CQUFtQnpxQjtXQVN2QjZGLGlEQUErQzRrQjs7a0JBS3hDenFCLFVBQVVBO1dBQ2pCOEosdUJBQWlEOUo7a0JBRTdDQSxtQkFBa0JBO1dBQ3BCOEosMkJBQTZDOUo7a0JBQ3RDQSxvQkFBbUJBO1dBQzFCOEosNEJBQStDOUo7O1dBRS9DOEosNEJBQStDOUo7U0FHdkQ7U0FDQW9xQixXQUFZcHFCO1NBQ1osTUFBT3lTLGlCQUFrQjtVQUN2QixJQUFJMXNCLElBQUkwc0IsYUFDSnpTLElBQUl5UztVQUNSLEdBQUkxc0IsUUFBUWlhLFVBQVV5UyxXQUFZelMsR0FBR2phO1VBQ3JDcWtDLFdBQVlwcUIsRUFBRWphOztTQUVoQixHQUFJa2tDO1VBQWtCbmdCLHFCQUFxQm1nQjtTQUMzQ25nQjtTQUNBLE9BQU9BLGFBdklGO09BbkNhOztHQWdMdEIsU0FBUzRnQiw0QkFBNkIxcUIsR0FBR3JXO0lBQ3ZDLE9BQU91M0IscUJBQXNCMkksZ0JBQWlCN3BCLEdBQUdyVztHQUNuRDtHTnJrQkEsU0FBU2doQyxxQkFBcUJobkM7SUFDNUIrZSxxQkFBc0IvZTtHQUN4QjtHUExBLFNBQVNpbkMsd0JBQXdCQztJQUN2QixJQUFKQSxNQUFNNXFCLHdCQUF3QjRxQjtJQUNsQyxVQUFXL2hDLHVCQUF1QjtLQUNkLElBQWRnaUMsZ0JBQWdCaGlDO0tBQ3BCLEdBQUdnaUMsaUJBQWlCQTtNQUNsQixJQUNFQSx1QkFBdUJELDBCQUN2QjtZQUNPdmlDLEdBQ1A7OztLQUdEO0dBQ1A7RzJCOUhBLFNBQVN5aUMsMkJBQTJCdHNCO0lBQ2xDLEdBQUdBLGNBQWMsT0FBU0E7SUFDMUIsT0FBT2hhO0dBQ1Q7R25CeUlBLFNBQVN1bUMsaUJBQWlCeGlCO0lBQ3hCLEdBQUdsSyxzQkFBc0JBO0tBQTBCLE9BQzFDQTtJQUVUNEg7R0FDRjtHRTJMQSxTQUFTK2tCLGdCQUFnQnBhLFFBQVEvQjtJQUMvQixJQUFJMVUsTUFBTXlXLGtCQUNONUUsVUFBVXNILE1BQU1uWjtJQUNwQixJQUFVLElBQUZyVSxPQUFPQSxJQUFJcVUsS0FBS3JVLEtBQ3RCa21CLFNBQVNsbUIsS0FBSzhxQjtJQUVoQi9CLFFBQVExVTtJQUNSLE9BQU82UjtHQUNUO0dBbGFBLFNBQVNpZjtJQUNQblo7bUJBQ2tCa1o7aUJBQ0ZsVjtZQUNMN0o7R0FFYjtHYndZQSxTQUFTaWYsNkJBQThCemlDO0lBQzdCLElBQUp1TjtJQUNKLEtBQUsySixjQUFjbFgsSUFDakJ1TixTQUFpQ3ZOLElBQUl3WSxtQkFBbUJ4WTtJQUMxRCxXQUFXdVosUUFBUWhNLEtBQUt2TixHQUFHQTtHQUM3QjtHd0J2V0EsU0FBUzBpQyxzQkFBc0JDLE1BQU1DLFVBQVVDLE1BQU1DLFVBQVVDO0lBQzdELElBQVcsSUFBRjFsQyxPQUFPQSxJQUFJMGxDLE9BQU8xbEMsSUFBSztLQUM5QjtNQUFJOEMsSUFBSW9oQixjQUFjb2hCLE1BQUtDLFdBQVd2bEM7TUFDbEM2TSxJQUFJcVgsY0FBY3NoQixNQUFLQyxXQUFXemxDO0tBQ3RDLEdBQUk4QyxJQUFJK0osR0FBRztLQUNYLEdBQUkvSixJQUFJK0osR0FBRzs7SUFFYjtHQUNGO0dWeWNBLFNBQVM4NEIsdUJBQXVCN2lDLEdBQUUrSixHQUFFdkQsR0FBRWpMO0lBQ3BDeWhCO0dBQ0Y7R0UvY0EsU0FBUzhsQixpQkFBa0JqakMsR0FBRzNDLEdBQUt6QyxTQUFTb0YsR0FBR3BGLFNBQVN5QyxFQUFHO0dBQzNENGxDO3dCQUN1QixPQUFPcm9DLE9BQU9BLFVBQTVCO3dCQUNjLE9BQU9BLE9BQU9BLHNCQUE1Qjs7O01BRUwsSUFBSW9GLElBQUlwRixRQUFReUMsSUFBSXpDO01BQ3BCQSxTQUFTeUM7TUFDVCxPQUFRMkMsRUFBRTNDLFVBQVcyQyxFQUFFM0M7S0FIakI7OztNQU1OLElBQUkyQyxJQUFJcEYsUUFBUXlDLElBQUl6QztNQUNwQkEsU0FBU3lDO01BQ1QsT0FBUTJDLEVBQUUzQyxpQkFBa0IyQyxFQUFFM0M7S0FIeEI7OztNQU1OLElBQUkyQyxJQUFJcEYsUUFBUXlDLElBQUl6QztNQUNwQkEsU0FBU3lDO01BQ1QsUUFBUzJDLEVBQUUzQyxXQUFhMkMsRUFBRTNDLGVBQ2pCMkMsRUFBRTNDLGNBQWEyQyxFQUFFM0M7S0FKcEI7OztNQU9OLElBQUkyQyxJQUFJcEYsUUFBUXlDLElBQUl6QztNQUNwQkEsU0FBU3lDO01BQ1QsT0FBUTJDLEVBQUUzQyxXQUFhMkMsRUFBRTNDLGVBQ3RCMkMsRUFBRTNDLGNBQWEyQyxFQUFFM0M7S0FKZDs7Y0FNVXFVO01BQ1YsSUFBRnJVLElBQUl6QztNQUNSQSxTQUFTeUMsSUFBSXFVO01BQ2IsT0FBTzhtQixxQkFBcUI1OUIsZ0JBQWdCeUMsR0FBR0EsSUFBSXFVO0tBSDdDOztjQUtpQkE7TUFDakIsSUFBRnJVLElBQUl6QztNQUNSQSxTQUFTeUMsSUFBSXFVO01BQ2IsT0FBTzlXLGdCQUFnQnlDLEdBQUdBLElBQUlxVTtLQUhqQjtHQXViakIsU0FBU3d4Qix1QkFBd0JsakMsR0FBR3lnQjtJQUM1QixJQUFGMWdCLFFBQVFrakMsaUJBQWlCOW9CLDBCQUEwQm5hLElBQUl5Z0I7SUFDM0QsU0FBUzBpQixRQUFRQztLQUNmLElBQUl6OEIsSUFBSTVHLFlBQ0pELElBQUk2RztLQUNSLE9BQVFBLGVBQWdCO01BQ3RCQSxJQUFJNUc7TUFDRyxJQUFIc2pDLEtBQUt2akM7TUFDVCxHQUFJQSxLQUFLdWpDLFNBQVNEO01BQ2xCdGpDLElBQUl1akMsS0FBTTE4Qjs7S0FFWixPQUFPN0c7SUFDVDtJQUVBLE9BQU9DOztPQUVMLElBQUl1akMsaUJBQ0FDLFdBQVd4akMsYUFDZjs7T0FFQTtRQUFJdWpDLGFBQWF2akM7UUFDYnFqQztRQUNBRyxXQUFXSixRQUFRQztPQUN2QixHQUFHQTtRQUNEam1COztPQUVGOztlQUdBQSxnREFDQTs7SUFFRixPQUFPbW1CLGFBQWE5UiwyQkFBMkIrUjtHQUNqRDtHQTljQSxTQUFTQyxlQUFnQnhqQyxHQUFHM0M7SUFBS3pDLFNBQVM2YSx1QkFBdUJ6VjtJQUFJcEYsU0FBU3lDO0dBQUc7R0FDakZtbUM7d0JBQ3VCLE9BQU81b0Msa0JBQWtCQSxVQUF2Qzt3QkFDYyxPQUFPQSxrQkFBa0JBLHNCQUF2Qzs7O01BRUwsSUFBSW9GLElBQUlwRixRQUFReUMsSUFBSXpDO01BQ3BCQSxTQUFTeUM7TUFDVCxPQUFRMkMsYUFBYTNDLFVBQVcyQyxhQUFhM0M7S0FIdkM7OztNQU1OLElBQUkyQyxJQUFJcEYsUUFBUXlDLElBQUl6QztNQUNwQkEsU0FBU3lDO01BQ1QsT0FBUTJDLGFBQWEzQyxpQkFBa0IyQyxhQUFhM0M7S0FIOUM7OztNQU1OLElBQUkyQyxJQUFJcEYsUUFBUXlDLElBQUl6QztNQUNwQkEsU0FBU3lDO01BQ1QsUUFBUzJDLGFBQWEzQyxXQUFhMkMsYUFBYTNDO2VBQ3ZDMkMsYUFBYTNDO2VBQWEyQyxhQUFhM0M7O0tBSjFDOzs7TUFPTixJQUFJMkMsSUFBSXBGLFFBQVF5QyxJQUFJekM7TUFDcEJBLFNBQVN5QztNQUNULE9BQVEyQyxhQUFhM0MsV0FBYTJDLGFBQWEzQztlQUM1QzJDLGFBQWEzQztlQUFhMkMsYUFBYTNDO0tBSnBDOztjQU1VcVU7TUFDVixJQUFGclUsSUFBSXpDO01BQ1JBLFNBQVN5QyxJQUFJcVU7TUFDYixPQUFPMEUsdUJBQXVCeGIsaUJBQWlCeUMsR0FBR0EsSUFBSXFVO0tBSGhEOztjQUtpQkE7TUFDdkIsSUFBSXhILFFBQVEyUCxXQUFXbkksTUFDbkIxUixJQUFJcEYsUUFDSnlDLElBQUl6QztNQUNSLElBQVUsSUFBRmlSLE9BQU9BLElBQUk2RixLQUFLN0YsS0FDdEIzQixFQUFFMkIsS0FBSzdMLGFBQWEzQyxJQUFJd087TUFFMUJqUixTQUFTeUMsSUFBSXFVO01BQ2IsT0FBT3hIO0tBUk07RzJCZ2hCUyxJQUF0QnU1Qix3QkFBd0IxbkM7RzNCbmQ1QixTQUFTMm5DLG9CQUFxQnZqQztJQUM1QixPQUFPNm1CLHlCQUEwQjFHLG9CQUFxQm5nQjtHQUN4RDtHQTJGQSxTQUFTd2pDLDZCQUE2QnhiLFFBQVExSDtJQUM1QyxTQUFTMGlCLFFBQVFDO0tBQ2YsSUFBSXo4QixJQUFJd2hCLGlCQUNKcm9CLElBQUk2RztLQUNSLE9BQVFBLGVBQWdCO01BQ3RCQSxJQUFJd2hCO01BQ0csSUFBSGtiLEtBQUt2akM7TUFDVCxHQUFJQSxLQUFLdWpDLFNBQVNEO01BQ2xCdGpDLElBQUl1akMsS0FBTTE4Qjs7S0FFWixPQUFPN0c7SUFDVDtJQUNVLElBQU44akMsUUFBUXpiO0lBQ1osT0FBT3liOztPQUVMO1FBQUlOO1FBQ0FPO1FBQ0FOLFdBQVdwYjtRQUNYMmIsd0JBQXdCUDtRQUN4QlEsY0FBYzViO1FBQ2Q2YixXQUFXN2I7UUFDWDhiLFdBQVc5YjtPQUNmOztPQUVBO1FBQUltYixhQUFhbmI7UUFDYjBiO1FBQ0FUO1FBQ0FHLFdBQVdKLFFBQVFDO1FBQ25CVSx3QkFBd0JYLFFBQVFDO1FBQ2hDVyxjQUFjWixRQUFRQztRQUN0QlksV0FBV2IsUUFBU0M7UUFDcEJhLFdBQVdkLFFBQVNDO09BQ3hCLEdBQUdBO1FBQ0NqbUI7O09BRUo7O09BRUFBOztPQUNBOztPQUVBQSwyREFDQTs7SUFFRjtLQUFJNE07S0FDQXdYLG1CQUFvQndDLHVCQUFvQmhvQztLQUN4Q21vQztJQUNKLFNBQVNDLFdBQVloYztLQUNWLElBQUx2UCxPQUFPdVA7S0FDWCxHQUFJdlA7TUFBdUMsR0FDckNBLGFBQXlDO09BQzNDLElBQUlyTCxNQUFNcUwsWUFDTjZOLE9BQVE3TixpQkFDUnRCLEtBQUsvSjtPQUNULEdBQUlrWixXQUFXLE9BQU9uUDtPQUN0QixHQUFJaXFCLGtCQUFrQkEsaUJBQWlCMkMsaUJBQWlCNXNCO09BQ3hEeVMsV0FBV3pTLEdBQUdtUDtPQUNkLE9BQU9uUDs7O09BRVAsT0FBUXNCO2FBRU5BLGFBQTBDO01BQzVDLElBQUlsSCxNQUFNa0gsYUFDTnRCLElBQUk2USxlQUFnQnpXO01BQ3hCLEdBQUk2dkIsa0JBQWtCQSxpQkFBaUIyQyxpQkFBaUI1c0I7TUFDeEQsT0FBT0E7OztNQUNGLE9BQ0VzQjs7U0FFTCxPQUFPdVA7O1NBRVAsT0FBT0E7O1NBRVAsT0FBT0E7O1NBRVBoTCxpREFDQTs7U0FFVyxJQUFQbkksU0FBU21UO1NBQ2IsR0FBRzBiLGlCQUFpQjd1QixTQUFTa3ZCLGNBQWNsdkI7U0FDM0MsT0FBT3VzQixpQkFBaUJ2c0I7O1NBRWIsSUFBUEEsU0FBU21UO1NBQ2IsR0FBRzBiLGlCQUFpQjd1QixTQUFTa3ZCLGNBQWNsdkI7U0FDM0MsT0FBT3VzQixpQkFBaUJ2c0I7O1NBRWIsSUFBUEEsU0FBU21UO1NBQ2IsR0FBRzBiLGlCQUFpQjd1QixTQUFTa3ZCLGNBQWNsdkI7U0FDM0MsT0FBT3VzQixpQkFBaUJ2c0I7O1NBRXhCO1VBQUlvdkIsU0FBU2pjO1VBQ1Q1YSxNQUFNNjJCO1VBQ04zZCxPQUFPMmQ7VUFDUDlzQixLQUFLL0o7U0FDVCxHQUFJa1osV0FBVyxPQUFPblA7U0FDdEIsR0FBSWlxQixrQkFBa0JBLGlCQUFpQjJDLGlCQUFpQjVzQjtTQUN4RHlTLFdBQVd6UyxHQUFHbVA7U0FDZCxPQUFPblA7O1NBRVA2RixvREFDQTs7U0FFQSxJQUFJekwsTUFBTXlXLGlCQUNON1EsSUFBSTZRLGVBQWdCelc7U0FDeEIsR0FBSTZ2QixrQkFBa0JBLGlCQUFpQjJDLGlCQUFpQjVzQjtTQUN4RCxPQUFPQTs7U0FFUCxJQUFJNUYsTUFBTXlXLGtCQUNON1EsSUFBSTZRLGVBQWdCelc7U0FDeEIsR0FBSTZ2QixrQkFBa0JBLGlCQUFpQjJDLGlCQUFpQjVzQjtTQUN4RCxPQUFPQTs7U0FFRCxJQUFGelgsUUFBUTRCO1NBQ1osSUFBVyxJQUFGcEUsT0FBTUEsT0FBTUEsS0FBS3dDLE1BQU14QyxLQUFLOHFCO1NBQy9CLElBQUY3USxJQUFJb3NCLG9CQUFxQjdqQztTQUM3QixHQUFJMGhDLGtCQUFrQkEsaUJBQWlCMkMsaUJBQWlCNXNCO1NBQ3hELE9BQU9BOztTQUVELElBQUZ6WCxRQUFRNEI7U0FDWixJQUFXLElBQUZwRSxPQUFNQSxPQUFNQSxLQUFLd0MsRUFBRXhDLEtBQUs4cUI7U0FDM0IsSUFBRjdRLElBQUlvc0Isb0JBQXFCN2pDO1NBQzdCLEdBQUkwaEMsa0JBQWtCQSxpQkFBaUIyQyxpQkFBaUI1c0I7U0FDeEQsT0FBT0E7O1NBRVAsSUFBSTVGLE1BQU15VyxpQkFDTjdRLFFBQVE3VixNQUFNaVE7U0FDbEI0RjtTQUNNLElBQUZ6WCxRQUFRNEI7U0FDWixHQUFJOC9CLGtCQUFrQkEsaUJBQWlCMkMsaUJBQWlCNXNCO1NBQ3hELElBQVcsSUFBRmphLE9BQU1BLEtBQUtxVSxLQUFJclUsSUFBSztVQUMzQixJQUFXLElBQUZ3TyxPQUFNQSxPQUFNQSxLQUFLaE0sTUFBTWdNLEtBQUtzYztVQUNyQzdRLEVBQUVqYSxLQUFLcW1DLG9CQUFxQjdqQzs7U0FFOUIsT0FBT3lYOztTQUVQLElBQUk1RixNQUFNeVcsaUJBQ043USxRQUFRN1YsTUFBTWlRO1NBQ2xCNEY7U0FDTSxJQUFGelgsUUFBUTRCO1NBQ1osR0FBSTgvQixrQkFBa0JBLGlCQUFpQjJDLGlCQUFpQjVzQjtTQUN4RCxJQUFXLElBQUZqYSxPQUFNQSxLQUFLcVUsS0FBSXJVLElBQUs7VUFDM0IsSUFBVyxJQUFGd08sT0FBTUEsT0FBTUEsS0FBS2hNLEVBQUVnTSxLQUFLc2M7VUFDakM3USxFQUFHamEsS0FBS3FtQyxvQkFBcUI3akM7O1NBRS9CLE9BQU95WDs7U0FFUCxJQUFJNUYsTUFBTXlXLGtCQUNON1EsUUFBUTdWLE1BQU1pUTtTQUNsQjRGO1NBQ0EsR0FBSWlxQixrQkFBa0JBLGlCQUFpQjJDLGlCQUFpQjVzQjtTQUNsRCxJQUFGelgsUUFBUTRCO1NBQ1osSUFBVyxJQUFGcEUsT0FBTUEsS0FBS3FVLEtBQUlyVSxJQUFLO1VBQzNCLElBQVcsSUFBRndPLE9BQU1BLE9BQU1BLEtBQUtoTSxNQUFNZ00sS0FBS3NjO1VBQ3JDN1EsRUFBRWphLEtBQUtxbUMsb0JBQXFCN2pDOztTQUU5QixPQUFPeVg7O1NBRVAsSUFBSTVGLE1BQU15VyxrQkFDTjdRLFFBQVE3VixNQUFNaVE7U0FDbEI0RjtTQUNNLElBQUZ6WCxRQUFRNEI7U0FDWixJQUFXLElBQUZwRSxPQUFNQSxLQUFLcVUsS0FBSXJVLElBQUs7VUFDM0IsSUFBVyxJQUFGd08sT0FBTUEsT0FBTUEsS0FBS2hNLEVBQUVnTSxLQUFLc2M7VUFDakM3USxFQUFHamEsS0FBS3FtQyxvQkFBcUI3akM7O1NBRS9CLE9BQU95WDs7O1NBR1A2Riw0Q0FDQTs7OztTQUlBLElBQUl4VyxHQUFHM0c7U0FDUCxPQUFRMkcsSUFBSXdoQix1QkFBd0Jub0IsS0FBS2pDLG9CQUFxQjRJO1NBQzlELElBQUlnN0IsTUFBTXRZLGdCQUFnQnJwQixJQUN0QnFrQztTQUNKLEtBQUkxQztVQUNGeGtCO1NBQ0YsT0FBT3ZFO3NCQUVMOztZQUVBLEtBQUkrb0I7YUFDRnhrQjtZQUNGa25CLGdCQUFnQjFDO1lBQ2hCOztZQUVBMEMsZ0JBQWdCbGM7WUFFaEJBO1lBQWtCQTtZQUNsQjs7U0FFRjtVQUFJMlosVUFBVTNaO1VBQ1YxQjtVQUNBblAsSUFBSXFxQixnQkFBZ0J4WixRQUFRMUI7U0FDaEMsR0FBRzRkLGlCQUFpQnpvQztVQUFVLEdBQ3pCeW9DLGlCQUFpQjVkO1dBQ2xCdEo7O1NBRUosR0FBSW9rQixrQkFBa0JBLGlCQUFpQjJDLGlCQUFpQjVzQjtTQUN4RCxPQUFPQTtpQkFFUDZGOztJQUlSO0lBQ0EsR0FBRzBtQjtLQUFZLEdBQ1ZKO01BQ0Q7T0FBSTcvQixPQUFPdWtCLHNCQUFzQm9iO09BQzdCam9CLFVBQVV6QixXQUFXaXFCO09BQ3JCeG9CLE1BQU1tb0Isc0JBQXNCNy9CLE1BQU0wWDtPQUNsQzZNLGFBQWE4YSxpQkFBaUIzbkI7O01BRWxDNkI7SUFHSSxJQUFKN0IsTUFBTTZvQixXQUFZaGM7SUFDdEIsTUFBTzRCLGlCQUFrQjtLQUN2QixJQUFJdEQsT0FBT3NELGFBQ1B6UyxJQUFJeVMsYUFDSnJ1QixJQUFJNGI7S0FDUixHQUFJNWIsSUFBSStxQixNQUFNc0QsV0FBV3pTLEdBQUdtUDtLQUM1Qm5QLEVBQUU1YixLQUFLeW9DLFdBQVloYzs7SUFFckIsVUFBVzFILGlCQUFlQSxTQUFTMEg7SUFDbkMsT0FBTzdNO0dBQ1Q7R2hCOExBLFNBQVNncEIscUJBQXFCdGtDO0lBQzNCQSxXQUFZc1osNkJBQTZCdFo7SUFDMUMsT0FBT29XLHVCQUF1QnBXO0dBQ2hDO0dnQnBmQSxTQUFTdWtDLDRCQUE0QnZrQyxHQUFFeWdCO0lBQzFCO0tBQVAwSDs7UUFBYXFiO1NBQWdCYyxxQkFBcUJ0a0MsV0FBV3lnQixrQkFBY0EsTUFBSUE7SUFDbkYsT0FBT2tqQiw2QkFBNkJ4YixRQUFRMUg7R0FDOUM7R0NzR0EsU0FBUytqQixpQkFBa0I3a0I7SUFDekI7S0FBSUwsT0FBT0YsaUJBQWlCTztLQUN4QnlrQixhQUFhdnFCLFdBQVcyWDtJQUM1QixTQUFTaVQsTUFBTTl0QixRQUFRM0IsUUFBUWxWO0tBQ3ZCLElBQUZDO0tBQ0osTUFBTUEsSUFBSUQsRUFBRTtNQUNWLEdBQUd3ZixvQkFBb0JBLGdCQUFnQjtPQUNyQ0E7T0FDQUE7T0FDQUQsWUFBWUM7O01BRWQsR0FBSUEsb0JBQW9CQSxpQkFDdEI7TUFDRjNJLE9BQU8zQixTQUFPalYsS0FBS3VmLFlBQVlBO01BQy9CQTtNQUNBdmY7O0tBRUYsT0FBT0E7SUFDVDtJQUNNLElBQUZBLElBQUkwa0MsTUFBTUwsV0FBVzVTO0lBQ3pCLEdBQUd6eEI7S0FDRGdsQjtZQUNPaGxCLElBQUl5eEI7S0FDWHJVO0lBQ0Y7S0FBSXpMLE1BQU13eEIsdUJBQXdCdHBCLG9CQUFvQndxQjtLQUNsRHRwQixVQUFVakIsV0FBV25JLE1BQU04ZjtJQUMvQjFXLFFBQVFzcEI7SUFDRixJQUFGcmtDLElBQUkwa0MsTUFBTTNwQixLQUFLMFcsMEJBQTBCOWY7SUFDN0MsR0FBRzNSLElBQUkyUjtLQUNMeUwsaURBQWlEcGQsV0FBVzJSO0lBQzlEO0tBQUlzRDtLQUNBc0csTUFBTWlwQiw0QkFBNEIzcUIsb0JBQW9Ca0IsTUFBTTlGO0lBQ2hFc0ssY0FBY0EsY0FBY3RLO0lBQzVCLE9BQU9zRztHQUNUO0dBSUEsU0FBU29wQixpQ0FBaUMvOUIsR0FDeEMsT0FBTzY5QixpQkFBaUI3OUIsR0FDMUI7R3FCaFVBLFNBQVNnK0IsZ0JBQWdCN1EsS0FBSTd6QixHQUFFSDtJQUM3QixHQUFHZzBCLFdBQVc3ekIsRUFBRSxDQUNkNnpCLFNBQVNoMEIsR0FDVDtJQUVGO0dBQ0Y7Ry9CaU9BLFNBQVM4a0Msb0JBQXFCejlCLEdBQUd0SjtJQUMvQixHQUFJQSxRQUFRQSxRQUFRQTtJQUNwQnNKLElBQUkzSixTQUFTMko7SUFDYixPQUFRdEosVUFBU3NKLElBQUdBO0dBQ3RCO0dPMkhBLFNBQVMwOUIsc0JBQXNCcGU7SUFDdkIsSUFBRnptQixJQUFJbWU7SUFDUm5lLGNBQWN5bUI7SUFDZHptQixpQkFBaUJBLHNCQUFzQnVYLHdCQUF3QnZYO0lBQy9EO0dBQ0Y7R3dCaFhBLFNBQVM4a0MsaUJBQWlCaFIsS0FDeEIsT0FBT0EsT0FDVDtHSmtNQSxTQUFTaVIsZUFBZS9rQyxHQUFHeWdCLEtBQUsvTztJQUM5QixJQUFJZ2UsTUFBTW1HLGdCQUNOMTFCLElBQUlnYSwwQkFBMEJuYTtJQUNsQ3l2QixlQUFlQyxLQUFJdnZCLFdBQVdzZ0IsS0FBS0EsTUFBTS9PLE1BQU1BO0lBQy9DLE9BQU84bUIscUJBQXFCRCxjQUFjN0k7R0FDNUM7R2QrTkEsU0FBU3NWLG9CQUFvQjlrQixJQUFJN2lCLEdBQUdpYTtJQUNsQzRJLE9BQU9BLFVBQVV3TixtQkFBbUJyd0IsS0FBS2lhO0lBQ3pDO0dBQ0Y7R1poUkEsU0FBUzJ0Qix1QkFBdUJwbEMsR0FBRXFsQyxRQUM5QixTQUNKO0dSMmZBLFNBQVNDLHNCQUFzQjVxQixJQUFJRSxJQUNqQyxPQUFRRixNQUFNRSxXQUNoQjtHQXpIQSxTQUFTMnFCLHlCQUF5QjdxQixJQUFJRSxJQUNwQyxPQUFPMHFCLHNCQUFzQjFxQixJQUFHRjtHQUNsQztHTzdaQSxTQUFTOHFCLHFCQUFzQmwrQixHQUFFdEo7SUFDL0IsR0FBR3NoQixNQUFNaFksTUFBTWdZLE1BQU10aEIsSUFBSSxPQUFPb3BCO0lBQ2hDLEdBQUc5ZixLQUFHdEosR0FBRyxPQUFPQTtJQUNoQixHQUFHc0osUUFBSyxPQUNIdEosVUFDT0wsc0JBRURBO0lBRVgsSUFBSThuQyxPQUFPeGYseUJBQXlCM2UsSUFDaEMweUIsTUFBTXhrQjtJQUNWLEdBQUtsTyxJQUFFdEosS0FBT3NKO0tBQ1ptK0IsT0FBTzlGLGVBQWU4RixNQUFNekw7O0tBRTVCeUwsT0FBT3ZLLGVBQWV1SyxNQUFNekw7SUFDOUIsT0FBTzdTLHlCQUF5QnNlO0dBQ2xDO0dPTUEsU0FBU0MsaUJBQ0QsSUFBRnZsQyxJQUFJbWUscUJBQ1IsT0FBT25lLFNBQ1Q7R0tqSkEsU0FBU3dsQyw0QkFBK0IsU0FBUztHRnNYakQsU0FBU0MsWUFBWTlsQjtJQUNWLElBQUxMLE9BQU9GLGlCQUFpQk87SUFDNUIsT0FBT0wsZUFBZUEsa0JBQWtCQTtHQUMxQztHQUlBLFNBQVNvbUIsZUFBZS9sQixRQUN0QixPQUFPOGxCLFlBQVk5bEIsUUFDckI7R2xCOUtBLFNBQVNnbUIsZUFBZ0J4K0IsR0FBR3RKLEdBQUssT0FBT3NKLE1BQU10SixHQUFJO0dzQ3ZIbEQsU0FBUytuQyw2QkFBNkJ4UyxNQUFNd0c7SUFDMUM7S0FBSUMsTUFBTXhTO0tBQ055UyxPQUFPRCxLQUFLekcsTUFBTXlHLEtBQUtBO0tBQ3ZCdmUsTUFBTXVlO0lBQ1YsUUFBUXhsQixtQkFBbUJ1bEIsVUFBVztLQUNwQ0UsU0FBUzJGLGVBQWUzRixRQUFRQTtLQUNoQ0EsU0FBUzJGLGVBQWUzRixRQUFRQTtLQUNoQ0EsU0FBUzJGLGVBQWUzRixRQUFRQTtLQUNoQ3hlLE1BQU1ta0IsZUFBZW5rQixLQUFLd2UsSUFBSXZTLGdCQUFnQnFTO0tBQzlDQSxXQUFXbEwsZ0NBQWdDa0w7O0lBRTdDLE9BQU90ZTtHQUNUO0dsQ3FIQSxTQUFTdXFCLDJCQUE4QixVQUFXO0dZL05sRCxTQUFTQyw0QkFDUCxTQUNGO0dKcUxBLFNBQVNDLGlCQUFpQjlxQztJQUNmLElBQUwrRyxPQUFPc2Isa0JBQWtCcmlCO0lBQzdCLEtBQUsrRztLQUNIbWI7SUFFRixPQUFPbmIsbUJBQW1CQTtHQUM1QjtHU3dHQSxTQUFTZ2tDLGVBQWV6ZixNQUFNbUIsUUFBUXVlO0lBQ3BDO0tBQUk5ZSxPQUFPdUcsbUJBQW1CdVk7S0FDMUJyaUMsT0FBTzRpQixzQkFBc0JELE1BQU1XLGlCQUFpQkM7SUFDeEQsT0FBT2Esc0JBQXNCekIsTUFBTW1CLFFBQVFQLE1BQU12akI7R0FDbkQ7R0loVUEsU0FBU3NpQyxnQkFBZ0JDLEdBQUUxZixNQUN6QixPQUFPdWYsMEJBQXlCdmYsT0FDbEM7R3hCb05BLFNBQVMyZixnQkFBaUJwbUMsR0FBRzNDO0lBQzNCLEdBQUlBLFdBQVcyZSxzQkFBc0JoYyxJQUFJZytCO0lBQ3pDLE9BQU8vaEIsdUJBQXdCamMsR0FBRzNDO0dBQ3BDO0dtQ25NYTtJQUFUZ3BDO01BQVc7UUFDYjtTQUFJQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBV0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQVVKLFNBQVNDLGVBQWU3L0I7U0FDdEIsT0FBUTIvQixnQkFBbUIzL0IsWUFBYUE7UUFDMUM7UUFFQSxTQUFTOC9CLFVBQVV6bUMsR0FBRTNDO1NBQ25CLE9BQVErb0MsZ0JBQWdCcG1DLEdBQUczQyxZQUFhQTtRQUMxQztRQUVBLFNBQVNxcEMsY0FBYy9lLElBQUkzbkIsR0FBRythLEtBQUs0ckI7U0FFakM7VUFBSUMsT0FBZ0JsWixtQkFBbUIvRjtVQUNuQ2tmLFFBQWdCblosbUJBQW1CL0Y7VUFDbkNtZixZQUFnQnJ4Qix1QkFBdUJrUztVQUN2Q29mLFlBQWdCcGY7VUFDaEJxZixlQUFnQnJmO1VBQ2hCc2YsYUFBZ0J0ZjtVQUVoQjNuQixJQUFJa2MsMkJBQTJCbGM7VUFFL0JrbkM7VUFDQUM7VUFDQXBkO1VBQ0FxZCxhQUFhM2xDLE1BQU1zbEM7VUFDbkJNLGtCQUFrQjVsQyxNQUFNdWxDO1NBRTVCLElBQVUsSUFBRjNwQyxPQUFPQSxJQUFJK3BDLGVBQWUvcEM7VUFDaEMrcEMsT0FBTy9wQztTQUVUK3BDLGtCQUFrQnJzQjtTQUVKLFNBQVZ1c0I7VUFDRixNQUFPdmQsYUFBYztXQUNWLElBQUxobEIsT0FBT2dsQjtXQUNYLEdBQUlobEI7WUFDRkEsY0FBY0Esa0JBQWtCQTttQkFFMUJBLFNBQVUsQ0FDaEJtaUMsS0FBS25pQyxhQUNMZ1csTUFBTWhXLGNBQ047O1VBR0pvaUM7U0FaYztTQWVQLFNBQUxJLEtBQWdCeGlDLE1BQVFnbEIsV0FBV2hsQixNQUE1QjtTQUVBLFNBQVB5aUM7VUFDRkosZ0JBQWdCcnNCO1VBQ0wsSUFBUGpYLGFBQWFyQyxVQUFVMmxDO1VBQzNCdGpDO1VBQ0EsSUFBVSxJQUFGekcsT0FBT0EsSUFBSStwQyxlQUFlL3BDLElBQUk7V0FDOUIsSUFBRm1DLElBQUk0bkMsT0FBTy9wQztXQUNmLEdBQUdtQyxlQUFlQSxXQUNoQkEsVUFBVUE7V0FFWnNFLFdBQVN6RyxTQUFVbUM7V0FDbkJzRSxXQUFTekcsYUFBY21DOztVQUV6QixPQUFPc0U7U0FaSTtTQWVJLFNBQWIyakM7VUFDRixHQUFHZCxTQUFTLE9BQU9hLGVBQ2RGO1NBRlk7U0FNbkIsUUFBUUgsS0FBTTtVQUNaO1dBQUlPLEtBQUtkLEtBQUtNO1dBQ1ZTLE9BQU9mLEtBQUtNO1dBQ1pVLE9BQU9EO1dBQ1BoaEMsSUFBSTNHLEVBQUUrYTtXQUNOOHNCO1VBRUpYO1VBRUEsT0FBUVE7aUJBQ0huQjthQUNILEdBQUd4ckIsUUFBUS9hLFNBQVUsQ0FBQ3luQyxnQkFBaUI7YUFDdkMsR0FBSTlnQyxNQUFNaWhDLE1BQU03c0IsWUFDWHVzQjthQUNMO2lCQUNHZjthQUNILEdBQUd4ckIsUUFBUS9hLFNBQVUsQ0FBQ3luQyxnQkFBaUI7YUFDdkMsR0FBSVgscUJBQXFCbmdDLE9BQU9paEMsTUFBTTdzQixZQUNqQ3VzQjthQUNMO2lCQUNHZjthQUNIO2tCQUFTcHdCLE1BQU1WLHVCQUF1Qm94QixNQUFNZSxRQUFRdnFDO2NBQU9BLElBQUk4WTtjQUFZOVksSUFBSztjQUM5RSxHQUFHMGQsUUFBUS9hLFNBQVUsQ0FBQ3luQyxnQkFBaUI7Y0FDdkMsR0FBSTlnQyxNQUFNd1AsZUFBZTlZO2VBQ3ZCc0osSUFBSTNHLElBQUkrYTtrQkFDTCxDQUFFdXNCLGFBQWE7O2FBRXRCO2lCQUNHZjthQUNIO2tCQUFTcHdCLE1BQU1WLHVCQUF1Qm94QixNQUFNZSxRQUFRdnFDO2NBQU9BLElBQUk4WTtjQUFZOVksSUFBSztjQUM5RSxHQUFHMGQsUUFBUS9hLFNBQVUsQ0FBQ3luQyxnQkFBaUI7Y0FDdkMsR0FBSVgscUJBQXFCbmdDLE9BQU93UCxlQUFlOVk7ZUFDN0NzSixJQUFJM0csSUFBSSthO2tCQUNMLENBQUV1c0IsYUFBYTs7YUFFdEI7aUJBQ0dmO2FBQ0gsR0FBR3hyQixRQUFRL2EsU0FBVSxDQUFDeW5DLGdCQUFpQjthQUN2QyxHQUFJaEIsVUFBVUksTUFBTWUsT0FBT2poQyxJQUFJb1UsWUFDMUJ1c0I7YUFDTDtpQkFDR2Y7YUFDSCxHQUFHeHJCLFdBQVcvYSxFQUFFK2EsZ0JBQTBCdXNCLGFBQzFDO2lCQUNHZjthQUNILEdBQUd4ckIsTUFBTS9hLFlBQVlBLEVBQUUrYSxZQUFzQnVzQixhQUM3QztpQkFDR2Y7YUFDSCxHQUFHeHJCLFNBQVU7Y0FDWCxHQUFHQSxRQUFRL2EsU0FBVSxDQUFDeW5DLGdCQUFpQjtjQUN2QyxHQUFHakIsZUFBZXhtQyxPQUFPO2NBQ3pCc25DOztxQkFFT3ZzQixRQUFRL2EsU0FBVTtjQUN6QixHQUFHd21DLGVBQWV4bUMsRUFBRSthLFdBQVc7Y0FDL0J1c0I7O2lCQUVHO2NBQ0gsR0FBR2QsZUFBZXhtQyxFQUFFK2EsYUFBYXlyQixlQUFleG1DLEVBQUUrYSxPQUFPO2NBQ3pEdXNCOzthQUVGO2lCQUNHZjthQUNIc0IsUUFBUVQsT0FBT1E7YUFDZkwsa0JBQWlCTSw2QkFFR0E7YUFDcEJBLGNBQWM5c0I7YUFDZDtpQkFDR3dyQjthQUNIc0IsUUFBUVQsT0FBT1E7YUFDZkwsa0JBQWtCTSwyQkFFRUE7YUFDcEJBLFlBQVk5c0I7YUFDWjtpQkFDR3dyQjthQUNIc0IsUUFBUVQsT0FBT1E7YUFDZixHQUFHQyxtQkFBbUJBLGNBQWUsQ0FBQ1AsYUFBYzthQUNwRCxJQUFXLElBQUZqcUMsSUFBSXdxQyxhQUFheHFDLElBQUl3cUMsV0FBV3hxQyxJQUFJO2NBQzNDLEdBQUcwZCxRQUFRL2EsU0FBVSxDQUFDeW5DLGdCQUFpQjtjQUN2QyxHQUFHem5DLEVBQUUzQyxNQUFNMkMsRUFBRSthLEtBQU0sQ0FBQ3VzQixhQUFjO2NBQ2xDdnNCOzthQUVGO2lCQUNHd3JCO2FBQ0gsR0FBSUUsVUFBVUksTUFBTWUsT0FBT2poQyxJQUFJb1UsT0FDL0I7aUJBQ0d3ckI7YUFDSCxNQUFPRSxVQUFVSSxNQUFNZSxPQUFPamhDLElBQzVCQSxJQUFJM0csSUFBSSthLE1BQ1Y7aUJBQ0d3ckI7YUFDSCxHQUFHeHJCLFFBQVEvYSxTQUFVLENBQUN5bkMsZ0JBQWlCO2FBQ3ZDLEdBQUloQixVQUFVSSxNQUFNZSxPQUFPamhDO2NBQUksR0FFM0JBLElBQUkzRyxJQUFJK2EsV0FDRDByQixVQUFVSSxNQUFNZSxPQUFPamhDOztjQUU3QjJnQzthQUNMO2lCQUNHZixnQkFDSCxPQUFPaUI7aUJBQ0pqQjthQUNIVyxLQUFLQSxLQUFLUyxNQUNWO2lCQUNHcEI7YUFDSGdCLGdCQUFnQkwsS0FBS1MsV0FBVzVzQixRQUNoQztpQkFDR3dyQjthQUNIZ0I7NEJBQWlCRixtQkFDRU8sYUFDQ1AsWUFBWU87YUFDaENQLFlBQVlPLFFBQVE3c0I7YUFDcEI7aUJBQ0d3ckI7YUFDSCxHQUFJYyxZQUFZTyxVQUFVN3NCLEtBQUt1c0IsYUFDL0I7cUJBQ08sVUFBVWpuQzs7O1NBR3JCO1FBQ0Y7UUFFQSxPQUFPcW1DO09BdE5NOztHQTBPZixTQUFTb0IsbUJBQW1CbmdCLElBQUkzbkIsR0FBRythO0lBQ2pDLEdBQUdBLFdBQVdBLE1BQU1pQixzQkFBc0JoYztLQUN4Q3VXO0lBQ0YsTUFBT3dFLFNBQVU7S0FDUCxJQUFKTyxNQUFNK3FCLFNBQVMxZSxJQUFJM25CLEdBQUcrYTtLQUMxQixHQUFJTyxLQUFLLE9BQU9BO0tBQ2hCUDs7SUFHRjtHQUNGO0duQ21sQkEsU0FBU2d0QixvQkFBb0IvbkMsR0FDM0IsT0FBT3VYLHdCQUF3QnZYLEdBQ2pDO0dpQjVZQSxTQUFTZ29DLGtCQUFrQnJvQixRQUFPaEosUUFBTzNCLFFBQU90RDtJQUNyQyxJQUFMNE4sT0FBT0YsaUJBQWlCTztJQUM1QixLQUFLTDtLQUFhdEY7SUFDbEJyRCxTQUFTQSxnQkFBZ0IzQixRQUFRQSxTQUFTdEQ7SUFDMUMsR0FBRzROLG1CQUFtQjNJLGdCQUFnQjJJLG1CQUFvQjtLQUNsRCxJQUFGcFYsUUFBUTJQLFdBQVd5RixtQkFBbUIzSTtLQUMxQ3pNLE1BQU1vVjtLQUNOQSxjQUFjcFY7O0lBRWhCLE9BQU9vVjs7T0FFTEEsZ0JBQWdCM0ksUUFBUTJJO09BQ3hCQSxvQkFBb0IzSTtPQUNwQnNmLGNBQWV0VztPQUNmOztPQUVBTCxnQkFBZ0IzSSxRQUFRMkk7T0FDeEJBLG9CQUFvQjNJO09BQ3BCLEdBQUcySSxvQkFBb0JBLG9CQUNyQjJXLGNBQWV0VztPQUNqQjs7T0FFTyxJQUFIOWIsS0FBSzhTO09BQ1QsR0FBRzlTLE9BQVE7UUFDVHliLGdCQUFnQjNJLFFBQVEySTtRQUN4QkEsb0JBQW9CM0k7UUFDcEIsR0FBRzJJLG9CQUFvQkEsb0JBQ3JCMlcsY0FBZXRXOztXQUVkO1FBQ0hMLGdCQUFnQjNJLG1CQUFtQjlTLFNBQVN5YjtRQUM1Q0Esb0JBQW9CemI7UUFDcEJveUIsY0FBZXRXO1FBQ2ZMLGdCQUFnQjNJLGdCQUFnQjlTLFNBQVN5YjtRQUN6Q0Esb0JBQW9CM0ksZ0JBQWdCOVM7O09BRXRDOztJQUVGO0dBQ0Y7R0dPQSxTQUFTb2tDLFlBQVkvbkIsSUFBSU8sS0FBSy9PO0lBQzVCLElBQUl3MkIsYUFDQXBPO0lBQ0osR0FBSTVaLGVBQWdCO0tBQ2xCLElBQVcsSUFBRjdpQixPQUFPQSxJQUFJNmlCLGdCQUFnQjdpQixLQUNsQ3k4QixNQUFNQSxNQUFNNVosUUFBUTdpQjtLQUN0QjZxQzs7UUFDSztLQUNMLElBQVcsSUFBRjdxQyxPQUFPQSxJQUFLNmlCLG9CQUFxQjdpQixLQUN4Q3k4QixNQUFNQSxNQUFNNVosUUFBUTdpQjtLQUN0QjZxQyxjQUFjaG9CO0tBQ2RPLE1BQU1BOztJQUVSLEdBQUlBLFdBQVcvTyxXQUFZK08sTUFBTS9PLE1BQU93TyxRQUFRZ29CO0tBQzlDM3hCO0lBRVcsSUFBVDR4QjtJQUNKLElBQVcsSUFBRjlxQyxPQUFPQSxJQUFJNmlCLGdCQUFnQjdpQixLQUNsQzhxQyxTQUFTOXFDLEtBQUs2aUIsUUFBUTdpQjtJQUN4QjhxQyxTQUFTRCxlQUFleDJCO0lBQ3hCb29CLE9BQU94VCw2QkFBNkJwRztJQUN2QixJQUFUNmMsV0FBVzdjLGlCQUFpQk8sTUFBTXFaLE1BQU1yWixNQUFNL08sT0FBT29vQjtJQUN6RCxPQUFPOVIsc0JBQXNCOUgsU0FBU0EsV0FBV2lvQixVQUFVcEw7R0FDN0Q7R0R6Z0JBLFNBQVNxTCxzQkFBeUIsU0FBUztHREozQyxTQUFTQyxtQkFBbUJ2b0I7SUFFMUIsVUFBVWxLLDZCQUE2QkE7SUFDdkM7R0FDRjtHcUJHQSxTQUFTMHlCLHVCQUF1QnpvQztJQUM5QixLQUFJQSxTQUFVLENBQ1pBLGlCQUNBO0lBRUY7R0FDRjtHdkN1VEEsU0FBUzBvQyxpQkFBaUJ2b0MsR0FBRTNDLEdBQUVtckM7SUFDNUIsR0FBSW5yQyxXQUFXMkMsU0FBU21jO0lBQ3hCO0tBQUkwRSxZQUFZMm5CO0tBQ1o1bkIsWUFBWTRuQjtLQUNaN25CLFlBQVk2bkI7S0FDWjluQixZQUFZOG5CO0lBQ2hCcHNCLHNCQUF1QnBjLEdBQUczQyxPQUFPcWpCO0lBQ2pDdEUsc0JBQXVCcGMsR0FBRzNDLE9BQU9zakI7SUFDakN2RSxzQkFBdUJwYyxHQUFHM0MsT0FBT3VqQjtJQUNqQ3hFLHNCQUF1QnBjLEdBQUczQyxPQUFPd2pCO0lBQ2pDO0dBQ0Y7R2NtSUEsU0FBUzRuQix1QkFBdUIsU0FBUTtHTXZCeEMsU0FBU0Msb0JBQW9CeG9CLElBQUlNLElBQUlsSjtJQUMzQixJQUFKbUosTUFBTVAsVUFBVU07SUFDcEIsR0FBR0MsV0FBV1AsZ0JBQWdCVDtJQUM5QlMsT0FBT08sU0FBUW5KO0lBQ2Y0SSxPQUFPTyxTQUFRbko7SUFDZjRJLE9BQU9PLFNBQVFuSjtJQUNmNEksT0FBT08sU0FBUW5KO0lBQ2Y7R0FDRjtHakI1TUEsU0FBU3F4Qiw2QkFBZ0MsT0FBTzVVLDBCQUEyQjtHUXZQM0UsU0FBUzZVLGlCQUFrQi9vQztJQUN6QjtLQUFJbkUsUUFBUU8sS0FBTTREO0tBQ2RvNUIsUUFBUXY5QjtLQUNSdzlCLGVBQWUsSUFBS2o5QixLQUFLQSxTQUFTUDtLQUNsQ3k5QixNQUFNMzdCLFlBQVl5N0IsUUFBUUM7SUFDOUI7WUFBZ0J4OUI7WUFBbUJBO1lBQW1CQTtZQUN6Q0E7WUFBZ0JBO1lBQWlCQTtZQUNqQ0E7WUFBZXk5Qjs7R0FFOUI7R0o0T0EsU0FBUzBQLG1CQUFtQjFoQyxHQUMxQixHQUFJQSxRQUFRQSxRQUFRQSxHQUNwQixPQUFRQSxjQUNWO0dPN0JBLFNBQVMyaEMsb0JBQ0QsSUFBRjlvQyxJQUFJbWUscUJBQ1IsT0FBT25lLElBQ1Q7R0FtRUEsU0FBUytvQyx1QkFBdUJ2OUI7SUFDeEIsSUFBRnhMLElBQUltZTtJQUNSbmUsZUFBZXdMO0lBQ2Z4TCxzQkFBc0J3TDtJQUN0QjtHQUNGO0dBNkRBLFNBQVN3OUIsaUJBQWlCM3BDO0lBQ2xCLElBQUZXLElBQUltZTtJQUNSbmUsU0FBU1g7SUFDVFcsaUJBQWlCQSxzQkFBc0J1WCx3QkFBd0J2WDtJQUMvRDtHQUNGO0dBbE1BLFNBQVNpcEMsa0JBQWtCclg7SUFDbkIsSUFBRjV4QixJQUFJbWU7SUFDUixTQUFTK3FCLFFBQVEvcEM7S0FDUCxJQUFKeUIsV0FBV3pCO0tBQ2YsTUFBT3lCLGdCQUFnQkEsWUFBWUE7S0FDbkMsT0FBT0E7SUFDVDtJQUNBLElBQ0FiLElBQUs2eEIsb0JBQ0xweUIsSUFBS295QixtQkFDTDFuQixJQUFLMG5CO0lBQ0w1eEIsVUFBUTR4QjtJQUNFLElBQU51WCxjQUFjRCxRQUFRbnBDLEtBQUttcEMsUUFBUTFwQyxLQUFLMHBDLFFBQVFoL0I7SUFDcERsSyxzQkFBd0JtcEM7SUFDeEJucEMsd0JBQXdCbXBDO0lBQ3hCO0dBQ0Y7R0E0QkEsU0FBU0MsZUFBZWppQyxHQUFFdEo7SUFDbEIsSUFBRm1DLElBQUltZTtJQUNSbmUsTUFBSW1IO0lBQ0puSCxNQUFJbkM7SUFDSjtHQUNGO0dBcEZBLFNBQVN3ckMsc0JBQXNCNzlCLEdBQUU4QjtJQUN6QixJQUFGdE4sSUFBSW1lO0lBQ1JuZSxVQUFVd0w7SUFDVnhMLFdBQVdzTjtJQUNYdE4saUJBQWlCd0w7SUFDakJ4TCxrQkFBa0JzTjtJQUNsQjtHQUNGO0dBbEVBLFNBQVNnOEI7SUFDUEYsZUFBZWxyQixpQkFBZ0JBO0lBQy9CbXJCLHNCQUFzQm5yQixxQkFBb0JBO0lBQzFDNnFCLHVCQUF1QjdxQjtJQUN2QjJtQixzQkFBc0IzbUI7SUFDdEI4cUIsaUJBQWlCOXFCO0lBQ2pCK3FCLGtCQUFrQi9xQjtJQUNsQnFRLHlCQUF5QnJRO0lBRXpCQTtHQUNGO0dNNHdCQSxTQUFTcXJCLDRCQUE0QnJPO0lBQ25DLElBQUkzVTtJQUNKLEdBQVMyVSxjQUFjeFY7S0FBY2E7WUFDNUIyVSxjQUFjdlU7S0FBY0o7WUFDNUIyVSxjQUFjdFU7S0FBV0w7WUFDekIyVSxjQUFjcmhCO0tBQVkwTTtZQUMxQjJVLGNBQWNzTztLQUFtQmpqQjtZQUNqQzJVLGNBQWNyVTtLQUFZTjtZQUMxQjJVLGNBQWNwVTtLQUFhUDtZQUMzQjJVLGNBQWN0VjtLQUFZVztZQUMxQjJVLGNBQWNsRjtLQUFhelA7O0tBQy9CaFE7SUFDTCxPQUFPZ1E7R0FDVDtHQUtBLFNBQVNrakIseUJBQXlCdk87SUFDaEM7S0FBSTNVLE9BQU9nakIsNEJBQTRCck87S0FDbkNBO09BR0FBLGNBQWNsRjtjQUNWcFEsV0FBV3NWLFdBQVdBLGVBQWVBO1VBQWFBO0lBQzFELE9BQU9sVCxzQkFBc0J6QixVQUFVMlUsWUFBWUE7R0FDckQ7R0huVkEsU0FBU3dPLGlCQUFpQi9wQixRQUFPNUUsS0FDL0IsT0FBT21iLGNBQWN2VyxRQUFRNUUsS0FDL0I7R1psaEJBLFNBQVM0dUIsZUFBZTFwQyxHQUFLLGNBQWNBLEVBQUc7R3FCOE45QyxTQUFTMnBDLGlCQUFpQnQ4QixHQUFHZ0s7SUFDM0IsSUFBSWhLLElBQUl5VixxQkFBcUJ6VixHQUFFZ0ssSUFDM0JoSyxJQUFJaW5CLG9CQUFvQmpuQjtJQUM1QixPQUFPQTtHQUNUO0d0QjFNQSxTQUFTdThCLDJCQUEyQjl6QixLQUFLK3pCLElBQU0sU0FBUztHaUNGeEQsU0FBU0Msd0JBQXdCNWlDO0lBQy9CLEdBQUlBLFNBQVM7SUFDUCxJQUFGckg7SUFDSixJQUFNcUgsc0JBQXVCLENBQUVySCxJQUFJQSxRQUFRcUgsSUFBSUE7SUFDL0MsSUFBTUEsc0JBQXVCLENBQUVySCxJQUFJQSxPQUFRcUgsSUFBSUE7SUFDL0MsSUFBTUEsc0JBQXVCLENBQUVySCxJQUFJQSxPQUFRcUgsSUFBSUE7SUFDL0MsSUFBTUEsc0JBQXVCLENBQUVySCxJQUFJQSxPQUFRcUgsSUFBSUE7SUFDL0MsT0FBT3JILEtBQUtxSDtHQUNkO0dBUUEsU0FBUzZpQyw0QkFBNEI3aUMsR0FBSyxPQUFPNGlDLHdCQUF3QjVpQyxHQUFJO0dOdEQ3RSxTQUFTOGlDLGlDQUFrQy9iLFNBQVNDO0lBQ2xEL08saUJBQWlCOE8sV0FBV0g7SUFDNUIzTyxpQkFBaUIrTyxXQUFXTDtJQUM1QjtHQUNGO0dqQjhOQSxTQUFTb2MsZUFBZS9pQyxHQUFFdEo7SUFDbEIsSUFBRm1DLElBQUltZTtJQUNSbmU7SUFDQUEsaUJBQWlCQSxLQUFJQSxXQUFXQTtJQUNoQ0EsaUJBQWlCbUgsR0FBRW5ILFdBQVduQztJQUM5Qm1DO0lBQ0FBLE1BQUltSDtJQUNKbkgsTUFBSW5DO0lBQ0o7R0FDRjtHVDRJQSxTQUFTc3NDLHVCQUF1QjlxQyxHQUM5QixPQUFRQSxXQUFVQSxNQUFLQSxNQUFNQSxTQUMvQjtHQWJBLFNBQVMrcUMsa0NBQWtDL3FDO0lBQ3pDO0tBQ0UsSUFBSXFTLE1BQU15NEIsdUJBQXVCOXFDLFFBQzdCMlosV0FBV3ZYLE1BQU1pUTtLQUNyQnNILFVBQVVwZTtLQUNWLElBQVcsSUFBRnlDLE9BQU9BLElBQUlxVSxLQUFLclUsS0FBSzJiLEtBQUszYixTQUFPbUUsVUFBVW5FO0tBQ3BELE9BQU93bUIsY0FBY3hrQixHQUFHMlosTUFMbkI7R0FNVDtHZW5CQSxTQUFTcXhCLGNBQWNucUIsSUFDckIsT0FBT29jLFlBQVlwYyxPQUNyQjtHakJsVkEsU0FBU29xQiwwQkFBMEJ2MEI7SUFDakMsT0FBT0Esc0NBSUwsa0JBRUE7O0dBRUo7R0FJQSxTQUFTdzBCLHNCQUFzQngwQjtJQUN2QixJQUFGaFc7SUFDSixHQUFHZ1csWUFBYTtLQUNkaFcsS0FBS2dXO0tBQ0w7T0FBR0EsbUJBQW1CQSxrQkFBa0J1MEIsMEJBQTBCdjBCO01BRWhFLElBQUl5MEIsU0FBU3owQixRQUNUMDBCOztNQUVKLElBQUlBLFdBQ0FELFNBQVN6MEI7S0FFZmhXO0tBQ0EsSUFBVSxJQUFGMUMsSUFBSW90QyxPQUFPcHRDLElBQUltdEMsZUFBZW50QyxJQUFLO01BQ3pDLEdBQUdBLElBQUlvdEMsT0FBTzFxQztNQUNSLElBQUZ1WCxJQUFJa3pCLE9BQU9udEM7TUFDZixVQUFVaWE7T0FDUnZYLEtBQUl1WDtjQUNFQSxhQUFhaUM7T0FDbkJ4WixXQUFVdVg7cUJBRUdBO09BQ2J2WCxXQUFVdVg7O09BRVB2WDs7S0FFUEE7O1lBQ1NnVyxlQUNUaFcsS0FBS2dXO0lBRVAsT0FBT2hXO0dBQ1Q7R0FJQSxTQUFTMnFDLDhCQUE4Qjc4QjtJQUNyQyxHQUFHQSxlQUFlcE0sVUFBVW9NLGVBQWVBLGVBQWdCO0tBQzdDLElBQVI4OEIsVUFBVXp4QjtLQUNkLEdBQUd5eEI7TUFBUzltQixjQUFjOG1CLFVBQVU5OEI7U0FDL0I7TUFDSDtPQUFJeUksTUFBTWkwQixzQkFBc0IxOEI7T0FDNUIrOEIsVUFBVTF4QjtNQUNkLEdBQUcweEIsU0FBUy9tQixjQUFjK21CO01BQzFCenZDLDBDQUEwQ21iO01BQzFDLEdBQUd6SSxjQUFjLE1BQU1BOzs7O0tBR3RCLE1BQ0dBO0dBRVY7R3FDMEdBLFNBQVNnOUIscUJBQXFCMWpDO0lBQzVCLE9BQUdBLEVBQUVzMUIsMkJBQTJCN2dDO0dBSWxDO0d4Q3lCQSxTQUFTa3ZDLGlCQUFpQjlxQyxHQUFFM0M7SUFDMUIsR0FBSUEsV0FBVzJDLFNBQVNtYztJQUN4QjtLQUFJdUUsS0FBSzBjLHNCQUF1QnA5QixHQUFHM0M7S0FDL0JzakIsS0FBS3ljLHNCQUF1QnA5QixHQUFHM0M7SUFDbkMsT0FBUXNqQixVQUFVRDtHQUNwQjtHNkJ4SkEsU0FBU3FxQixzQkFBdUI3Z0MsR0FBRW9OLEdBQ2hDcE4sWUFDQUEsT0FBS29OLEdBQ0wsU0FDRjtHeEJpR0EsU0FBUzB6QixrQkFBa0I3akMsR0FBSyxXQUFTQSxFQUFHO0dZbEc1QyxTQUFTOGpDLHlCQUF5QnRyQixRQUFRMWtCO0lBQy9CLElBQUxxa0IsT0FBT0YsaUJBQWlCTztJQUM1QkwsWUFBWXJrQjtJQUNaO0dBQ0Y7R1Y2S0EsU0FBU2l3QyxnQkFBZ0IvakMsR0FBSyxPQUFPM0osWUFBWTJKLEdBQUk7R085SXJELFNBQVNna0M7SUFDRCxJQUFGbnJDLElBQUltZTtJQUNSbmU7SUFDQUE7SUFDQTtHQUNGO0dVeEVBLFNBQVNvckMsNEJBQTRCekksTUFBTUMsVUFBVUMsTUFBTUMsVUFBVUM7SUFDbkUsSUFBVyxJQUFGMWxDLE9BQU9BLElBQUkwbEMsT0FBTzFsQyxJQUFLO0tBQzlCO01BQUk4QyxJQUFJb2hCLGNBQWNvaEIsTUFBTUMsV0FBV3ZsQztNQUNuQzZNLElBQUlnMEIsZUFBZTJFLE1BQU1DLFdBQVd6bEM7S0FDeEMsR0FBSThDLElBQUkrSixHQUFHO0tBQ1gsR0FBSS9KLElBQUkrSixHQUFHOztJQUdiO0dBQ0Y7R0cvRCtCLElBQTNCbWhDLDZCQUE2QnhvQjtHVzBHakMsU0FBU3lvQix5QkFBeUJ4ckIsTUFDOUIsU0FDSjtHdEMyWEEsU0FBU3lyQixtQkFBbUI3NUIsS0FDMUI2RSx1Q0FDRjtHcUMzY0EsU0FBU2kxQiw0QkFBNEJya0MsR0FBSyxPQUFPd3NCLHdCQUF3QnhzQixHQUFJO0diSTdFLFNBQVNza0Msc0JBQXNCemMsV0FBVzBjLE9BQU8zSSxPQUFPNEk7SUFDdEQsSUFBVyxJQUFGdHVDLE9BQU9BLElBQUkwbEMsT0FBTzFsQztLQUN6QjJpQyxjQUFjaFIsV0FBVzBjLFFBQVFydUMsR0FBR3N1QztHQUV4QztHakJxUEEsU0FBU0MsaUJBQWtCemtDLEdBQUssT0FBTzNKLFdBQVcySixHQUFJO0dDMUd0RCxTQUFTMGtDLHlCQUF5QmhzQyxHQUM5QixTQUNKO0dHbUlBLFNBQVNpc0MsbUJBQW1Cbm5CLFlBQzFCLE9BQU9LLGtCQUFrQkw7R0FDM0I7R01xTUEsU0FBU29uQixxQkFBcUJwc0IsUUFBT2hKLFFBQU8zQixRQUFPdEQ7SUFDdEMsSUFBUGlGLFNBQVN3RCwwQkFBMEJ4RDtJQUN2QyxPQUFPcXhCLGtCQUFrQnJvQixRQUFPaEosUUFBTzNCLFFBQU90RDtHQUNoRDtHQWNBLFNBQVNzNkIsZUFBZXJzQixRQUFPaEosUUFBTzNCLFFBQU90RDtJQUMzQyxPQUFPcTZCO2FBQXFCcHNCLFFBQU81RixxQkFBcUJwRCxTQUFRM0IsUUFBT3REO0dBQ3pFO0dxQjVhQSxTQUFTdTZCLGtCQUFrQm5zQixNQUN2QixPQUFPd2IsZUFDWDtHRXdDQSxTQUFTNFEsbUJBQW1CL2tDO0lBQzFCLE9BQUdBLEVBQUVzMUIsMkJBQTJCN2dDOztrQkFHbkJ1TCxFQUFFczFCO0dBQ2pCO0dWcEZBLFNBQVMwUCwyQkFBMkJyc0I7SUFDbEMsVUFBVWxLO0tBQ1IsSUFBTSxXQUFXQSxpQ0FBbUNoVztJQUV0RCxVQUFVZ1cseUNBQTBDO0tBQ2xELElBQU0sV0FBV0Esa0RBQW1EaFc7S0FDcEUsSUFBTSxXQUFXZ1csa0RBQW1EaFc7S0FDcEUsSUFBTSxXQUFXZ1cscURBQXNEaFc7O0lBRXpFdWQ7R0FDRjtHekI3QkEsU0FBU2l2Qix1QkFBdUIvc0MsR0FBRTJaLE1BQ2hDLG1CQUFrQjNaLGFBQVcyWjtHQUMvQjtHWTBpQkEsU0FBU3F6QixvQkFBb0Ixc0I7SUFDM0IsT0FBT1AsaUJBQWlCTztHQUMxQjtHTTNsQkEsU0FBUzJzQix3QkFBd0JoL0IsR0FBR2dmO0lBQ2xDLE9BQU93Syx3QkFBd0J4cEIsR0FBRWdmO0dBQ25DO0dDa0VnQyxJQUE1QmlnQiw4QkFBOEJEO0dhakNsQyxTQUFTRSx3QkFBd0JybEM7SUFDL0IsSUFBSXJILFFBQ0FqQztJQUNKQSxJQUFJNndCLGdDQUFnQ3ZuQjtJQUNwQyxLQUFLa04sbUJBQW1CeFcsR0FBSSxDQUFFaUMsSUFBSUEsUUFBT3FILElBQUl0SjtJQUM3Q0EsSUFBSTZ3QixnQ0FBZ0N2bkI7SUFDcEMsS0FBS2tOLG1CQUFtQnhXLEdBQUksQ0FBRWlDLElBQUlBLFFBQU9xSCxJQUFJdEo7SUFDN0NBLElBQUk2d0IsZ0NBQWdDdm5CO0lBQ3BDLEtBQUtrTixtQkFBbUJ4VyxHQUFJLENBQUVpQyxJQUFJQSxPQUFPcUgsSUFBSXRKO0lBQzdDQSxJQUFJNndCLGdDQUFnQ3ZuQjtJQUNwQyxLQUFLa04sbUJBQW1CeFcsR0FBSSxDQUFFaUMsSUFBSUEsT0FBT3FILElBQUl0SjtJQUM3Q0EsSUFBSTZ3QixnQ0FBZ0N2bkI7SUFDcEMsS0FBS2tOLG1CQUFtQnhXLEdBQUksQ0FBRWlDLElBQUlBLE9BQU9xSCxJQUFJdEo7SUFDN0NBLElBQUk2d0IsZ0NBQWdDdm5CO0lBQ3BDLEtBQUtrTixtQkFBbUJ4VyxJQUFJLE9BQU9pQztJQUNuQyxPQUFPQSxJQUFJd1Ysb0JBQW9Cbk87R0FDakM7R0x6QkEsU0FBU3NsQyxrQkFBa0JqYyxJQUFJQztJQUM3QixJQUFJaWMsS0FBS2xjLFdBQVdtYyxLQUFLbGMsV0FDckJud0IsSUFBSW9zQyxLQUFHQyxRQUNQeHNDLFFBQVFzQixNQUFNbkI7SUFDbEJIO0lBQ0EsSUFBSTlDLE9BQU13TztJQUNWLE1BQUt4TyxJQUFFcXZDLElBQUdydkMsS0FBSzhDLEVBQUU5QyxLQUFHbXpCLEdBQUduekI7SUFDdkIsTUFBS0EsSUFBRWlELEdBQUVqRCxLQUFJd08sS0FBSzFMLEVBQUU5QyxLQUFHb3pCLEdBQUc1a0I7SUFDMUIsT0FBTzFMO0dBQ1Q7R3JCckNBLFNBQVN5c0MseUJBQ1AsT0FBTyxJQUFLM3dDLHdCQUNkO0dBS0EsU0FBUzR3QyxpQkFDUCxPQUFPcnZDLFdBQVdvdkMsMEJBQ3BCO0dNc05BLFNBQVNFLDJCQUEyQm50QixRQUFPdGdCO0lBQ3pDK2YsaUJBQWlCTyxpQkFBaUJ0Z0I7SUFDbEM7R0FDRjtHd0I3TEEsU0FBUzB0QztJQUNMLElBQ0l4VztVQUNLMzJCLEdBQ0xqRiwrQkFBK0JpRjtJQUVuQztHQUNKO0cxQlRBLFNBQVNvdEMsa0NBQWtDandCLFFBQ3pDLFVBQ0Y7R2ZtaUJBLFNBQVNrd0IsZ0JBQWdCanRDLEdBQUczQyxHQUFHaUQsR0FBR3FHO0lBQ2hDLEdBQUlyRztLQUFPLEdBQ0xqRCxXQUFXaUQsS0FBS04sT0FBUUEsWUFBMEJNLEtBQUtOO01BQWMsR0FDbkUyRyxPQUFRO09BQ1YzRztPQUNBQTs7VUFDSztPQUNMQSxNQUFNc1UsZ0JBQWlCaFUsR0FBR3ZDLG9CQUFvQjRJO09BQzlDM0csTUFBT00sS0FBS047O1NBRVQ7TUFDTCxHQUFJQSxVQUFzQmthLDRCQUE0QmxhO01BQ3RELElBQUtNLEtBQUtqRCxHQUFHQSxJQUFJaUQsR0FBR2pELEtBQUsyQyxJQUFJM0MsS0FBS3NKOztJQUd0QztHQUNGO0dLdkxBLFNBQVN1bUMsYUFBYWx0QztJQUNwQjdFO0lBQ0EsT0FBT04sS0FBSzBjLHdCQUF3QnZYO0dBQUk7R0x3YzFDLFNBQVNtdEMsa0JBQW1CbnRDLEdBQzFCLE9BQU95WSx3QkFBd0J6WSxHQUNqQztHNENyMkJBLFNBQVNvdEMsNEJBQTRCbnRDLEdBQUdaO0lBQ3RDLElBQUlwRTtJQUNKLElBQUlBLFFBQVFnRixHQUFHLEdBQ1ZBLGlCQUFpQmhGLE9BQ2xCb0UsRUFBRXBFO0dBR1I7R3pDOFNBLFNBQVNveUMsaUNBQWtDamMsT0FDekMsT0FBT3RTO0dBQ1Q7R2dCMVJBLFNBQVN3dUIsZ0NBQW1DLFNBQVM7R0h1dUJyRCxTQUFTQywyQkFBNEJqMkIsR0FBR3JXO0lBQ3RDLE9BQU8yWSxvQkFBcUJ1bkIsZ0JBQWlCN3BCLEdBQUdyVztHQUNsRDtHRS9yQkEsU0FBU3VzQyxxQkFBcUIxdEIsTUFBUSxTQUFVO0dnQnBDaEQsU0FBUzJ0QixnQkFBZ0J6dEMsR0FBR3lnQixLQUFLL087SUFDL0IsT0FBT3F6QixlQUFlaHJCLHFCQUFxQi9aLElBQUd5Z0IsS0FBSS9PO0dBQ3BEO0dsQ3EwQkEsU0FBU2c4QixxQkFBcUJ2bUMsR0FBSyxPQUFPK1UsMkJBQTJCL1UsR0FBRztHQWxOeEUsU0FBU3dtQyxrQkFBa0JwekIsSUFBSUUsSUFDN0IsR0FBR0YsT0FBT0UsSUFBSSxVQUNkLFNBQ0Y7R0s3aUJBLFNBQVNtekIsOEJBQThCOXRCLE1BQ3JDLFNBQ0Y7R1cwcEJBLFNBQVMrdEIsNEJBQTZCN3RDLEdBQUd5Z0IsS0FBSy9PLEtBQUs0RixHQUFHclc7SUFDOUMsSUFBRnBCLElBQUlzaEMsZ0JBQWlCN3BCLEdBQUdyVztJQUM1QixHQUFJcEIsV0FBVzZSLEtBQUt5TDtJQUNwQjdDLGdCQUFnQnphLE1BQU1HLEdBQUd5Z0IsS0FBSzVnQjtJQUM5QjtHQUNGO0dtQi9lQSxTQUFTaXVDLG9CQUFvQkMsTUFBSzNHLFFBQU80RztJQUN2QztLQUFJRCxPQUFPdDRCLHVCQUF1QnM0QjtLQUM5QnI4QixNQUFNcThCO0tBQ05DLE9BQU92NEIsdUJBQXVCdTRCO0tBQzlCMXlCO0tBQ0F4YjtLQUNBbXVDO0tBQ0F4RDtLQUFPeUQ7S0FBS3ZuQztJQUNoQixNQUFNN0csSUFBSTRSLElBQUk7S0FDWnU4QixNQUFNRixZQUFZanVDO0tBQ2xCLEdBQUdtdUM7TUFDRDN5QixPQUFPMnlCO1NBRUo7TUFDSCxHQUFHbnVDLEtBQUs0UixLQUFLeUw7TUFDYjh3QixNQUFNRixZQUFZanVDO01BQ2xCLE9BQU9tdUM7O1NBRUwzeUIsT0FBTzJ5QixLQUNQOzs7Ozs7Ozs7OztTQUdBdG5DLE1BQUtzbkM7U0FDTCxHQUFJdG5DLFNBQU95Z0M7VUFDVGpxQjtTQUNGc3RCLFFBQVFuUSxlQUFlOE0sUUFBT3pnQztTQUM5QnVuQyxNQUFNNVQsZUFBZThNLFFBQVF6Z0M7U0FDN0IsR0FBSThqQztVQUNGdHRCO1NBQ0Y3QixPQUFLMHlCLFdBQVd2RCxPQUFNeUQ7U0FDdEI7aUJBRUE1eUIsY0FBZ0IyeUI7Ozs7SUFJdEIsT0FBTzczQix1QkFBdUJrRjtHQUFNO0c5QjJGdEMsU0FBUzZ5QixrQkFBbUJudUM7SUFDMUI3RTtJQUNBLE9BQU9OLEtBQUswYyx3QkFBd0J2WDtHQUFJO0dMb04xQyxTQUFTb3VDLGlCQUFpQmp1QyxHQUFFK0osR0FBRXZELEdBQUVqTCxHQUFFa0U7SUFDaEMwYSxnQkFBZ0JQLHFCQUFxQjVaLElBQUcrSixHQUFFdkQsR0FBRWpMLEdBQUVrRTtJQUM5QztHQUNGO0dhaGtCQSxTQUFTeXVDLFNBQVMxd0IsTUFBTUMsTUFBTUUsTUFBTUMsTUFBTXJNO0lBQ3hDLElBQVUsSUFBRnJVLE9BQU9BLElBQUlxVSxLQUFLclUsS0FDdEJzZ0IsVUFBVUMsT0FBS3ZnQixLQUFLeWdCLFVBQVVDLE9BQUsxZ0I7SUFFckM7R0FDRjtHTWxDQSxTQUFTaXhDLHlCQUE0QixTQUFTO0dSc0Y5QyxTQUFTQyxlQUFldHpDO0lBQ2IsSUFBTCtHLE9BQU9zYixrQkFBa0JyaUI7SUFDN0IsS0FBSytHLGtCQUNIbWI7SUFFRixPQUFPbmIsaUJBQWlCQTtHQUMxQjtHVEdBLFNBQVN3c0MsMEJBQTBCcjFCLElBQUc3QjtJQUNwQzJCLGtCQUFrQnhELHVCQUF1QjBELE9BQU83QjtJQUNoRDtHQUNGO0dRaUpBLFNBQVNtM0Isd0JBQXdCeHpDLE1BQUt3ZTtJQUNwQyxHQUFHN0Q7S0FDREEsNEJBQTRCM2EsTUFBS3dlO1FBQzlCO0tBQ0gsS0FBSTdELHdCQUF3QkE7S0FDNUJBLG1DQUFrQzNhLGVBQWF3ZTs7SUFFakQ7R0FDRjtHQzFKQSxTQUFTaTFCLGtCQUFrQnp6QztJQUNuQixJQUFGOEUsSUFBSXd1QyxlQUFldHpDO0lBQ3ZCOEUsT0FBT3NWLG9CQUFvQnRWO0lBQzNCLE9BQU9BO0dBQ1Q7R1g2dEJBLFNBQVM0dUMsa0JBQWtCM3VDLEdBQ3pCLE9BQU91WCx3QkFBd0J2WCxHQUNqQztHdUMzMUJBLFNBQVM0dUMsbUJBQW1CL3VDO0lBQzFCLEdBQUdBO0tBQ0RzZDs7S0FDR3RkO0lBQ0w7R0FDRjtHSm1PQSxTQUFTZ3ZDLGtCQUFrQmxuQixJQUFJM25CLEdBQUcrYTtJQUNoQyxHQUFHQSxXQUFXQSxNQUFNaUIsc0JBQXNCaGM7S0FDeEN1VztJQUNGLE1BQU93RSxPQUFPaUIsc0JBQXNCaGMsR0FBSTtLQUM5QixJQUFKc2IsTUFBTStxQixTQUFTMWUsSUFBSTNuQixHQUFHK2E7S0FDMUIsR0FBSU8sS0FBSyxPQUFPQTtLQUNoQlA7O0lBR0Y7R0FDRjtHSHhKQSxTQUFTK3pCLGVBQWdCcDlCLEtBQUtrQztJQUM1QixHQUFJbEMsU0FBUytOO0lBQ2IsSUFBSS9OLE1BQU1BLGFBQ054SCxRQUFRekksTUFBTWlRO0lBQ2xCeEg7SUFDQSxJQUFXLElBQUY3TSxPQUFPQSxJQUFJcVUsS0FBS3JVLEtBQUs2TSxFQUFFN00sS0FBS3VXO0lBQ3JDLE9BQU8xSjtHQUNUO0dmeVJBLFNBQVM2a0MsZ0JBQWdCcHZCLFFBQU81RSxLQUM5QixPQUFPcWdCLGFBQWF6YixRQUFPNUUsS0FDN0I7R1B2TEEsU0FBU2kwQix3QkFBd0IvekM7SUFDL0I7S0FBSStHLE9BQU9zYixrQkFBa0JyaUI7S0FDekJrRixJQUFJNkIsb0JBQW9CQTtLQUN4QjFCLFFBQVFtQixNQUFNdEI7SUFDbEJHO0lBQ0EsSUFBUyxJQUFEakQsT0FBSUEsSUFBRThDLFVBQVM5QyxLQUNyQmlELEVBQUVqRCxTQUFPK1ksdUJBQXVCalcsRUFBRTlDO0lBQ3BDLE9BQU9pRDtHQUNUO0dPK1RBLFNBQVMydUMsb0JBQXFCdHZCLFFBQU9oWjtJQUM3QixJQUFGM0csSUFBSW9XLHVCQUF1QnJZLG9CQUFvQjRJO0lBQ25EcWxDLGVBQWVyc0IsUUFBTzNmO0lBQ3RCO0dBQ0Y7R2RyUkEsU0FBU2t2Qyw4QkFBaUMsT0FBT25iLDJCQUE0QjtHMEIxTzdFLFNBQVNvYixrQkFBbUJob0MsR0FBSyxVQUFTQSxhQUFhMUYsT0FBUTtHQTRIL0QsU0FBUzJ0Qyx1QkFBdUJudkMsR0FBRTVDLEdBQUVpYSxHQUFLLE9BQU9yWCxFQUFFNUMsU0FBT2lhLEVBQUU7R3hCaUYzRCxTQUFTKzNCLFlBQVlsb0M7SUFDYixJQUFGQSxJQUFJb1Esd0JBQXdCcFE7SUFFaEMsS0FBSUE7S0FDRmhNOzBCQUFrQ2dNOztJQUdwQyxPQUFPdE0sS0FBS3NNO0dBQ2Q7R0UxRUEsU0FBU21vQyxpQkFBaUJub0MsR0FDeEIsT0FBTzNKLFdBQVcySixHQUNwQjtHaUNjQSxTQUFTb29DLHFCQUFxQnBvQztJQUM1QixHQUFHeU8sbUNBQW1DQTtLQUFvQixHQUNyRHpPLGdCQUFnQnlPO01BQWdDLElBRXZDLElBQUYvSixJQUFJdW9CLHNCQUFzQnZvQixJQUFJMUUsVUFBVTBFLElBQUk7T0FDMUMsSUFBSjNKLE1BQU1pRixFQUFFMEU7T0FDWixHQUFHM0osZUFBZTBULG1CQUFvQjtRQUNwQzFULE1BQU1BO1FBQ04sR0FBR0EsS0FBS2lGLGdCQUFnQmpGOzs7SUFLaENpRixFQUFFczFCLHlCQUF5QjdnQztJQUMzQjtHQUNGO0dBbkNBLFNBQVM0ekMsbUJBQW1Ccm9DLEdBQUd2RDtJQUM3QixHQUFHZ1MsbUNBQW1DQTtLQUFvQixNQUNsRHpPLGdCQUFnQnlPLGlDQUFrQztNQUN0RHpPOztRQUFXeU87b0JBQThDMjVCLHFCQUFxQnBvQyxHQUFuQztNQUUzQyxJQUFVLElBQUYwRSxJQUFJdW9CLHNCQUFzQnZvQixJQUFJMUUsVUFBVTBFLElBQUk7T0FDMUMsSUFBSjNKLE1BQU1pRixFQUFFMEU7T0FDWixHQUFHM0osZUFBZTBULG1CQUFvQjtRQUNwQzFULE1BQU1BO1FBQ04sR0FBR0EsS0FBS2lGLGNBQWNqRixLQUFLdEcsV0FBV3NHOzs7O0lBSzlDaUYsRUFBRXMxQix5QkFBeUI3NEI7SUFDM0I7R0FDRjtHQTVDQSxTQUFTNnJDLG9CQUFvQnR0QixLQUFLRTtJQUMxQixJQUFGdmlCLElBQUlxaUIsSUFBSXNhO0lBQ1osR0FBRzM4QixNQUFNbEU7S0FBVzJ6QyxxQkFBcUJsdEI7O0tBQ3BDbXRCLG1CQUFtQm50QixLQUFLdmlCO0lBQzdCO0dBQ0Y7RzNCMUdBLFNBQVM0dkMsV0FBV3ZvQyxHQUNsQixPQUFPQSxjQUNUO0djckNpQyxJQUE3QndvQywrQkFBK0JobkI7R3pCa01uQyxTQUFTaW5CLGtCQUFrQmpwQyxHQUFLLFVBQVNBLFVBQVVBLFNBQVU7R0Y4VjdELFNBQVNrcEMscUJBQXFCdDFCLElBQUlFO0lBQy9CRixZQUFhakIsNkJBQTZCaUI7SUFDMUNFLFlBQWFuQiw2QkFBNkJtQjtJQUMzQyxPQUFRRixRQUFRRTtHQUNsQjtHQWtWQSxTQUFTcTFCLG9CQUFvQjNvQyxHQUFLLE9BQU9nVCwwQkFBMEJoVCxHQUFHO0dxQm5vQnRFLFNBQVM0b0MsV0FBWTVvQyxHQUFHdEosR0FBSyxVQUFTaXNCLGlCQUFpQjNpQixHQUFFdEosZ0JBQWdCO0djd0N6RSxTQUFTbXlDLGlCQUFpQnJvQixJQUFHM25CLEdBQUUrYTtJQUM3QixHQUFHQSxXQUFXQSxNQUFNaUIsc0JBQXNCaGM7S0FDeEN1VztJQUNNLElBQUorRSxNQUFNK3FCLFNBQVMxZSxJQUFJM25CLEdBQUcrYTtJQUMxQixPQUFJTyxNQUFZQTtHQUVsQjtHaEM1REEsU0FBUzIwQjtJQUNQLEdBQUlyNkI7S0FBbUIsR0FDaEJBLGtDQUFtQztNQUMvQixJQUFGelYsSUFBSXlWLHNDQUFzQ2dRO01BQzlDLFdBQVd6bEIsTUFBTUEsTUFBTUEsTUFBTUE7O2FBQ3BCeVYsOEJBQStCO01BQ2xDLElBQUZ6VixRQUFReWxCLFdBQVdoUTtNQUN2QixXQUFXelYsTUFBTUEsTUFBTUEsTUFBTUE7O0lBR2xDLElBQUkrdkMsTUFBTSxJQUFLajBDLGtCQUNYa0wsSUFBSStvQyxtQkFBZTF5QztJQUN2QixXQUFVMko7R0FDWjtHZTlMbUIsSUFBZmdwQyxxQkFBcUJ2NkI7R0FDekIsU0FBU3c2Qix5Q0FBMEN0cUMsSUFBSTNGO0lBQ3JELEdBQUd5VixtQ0FBbUN6VixhQUFhWSxPQUFRO0tBQ25EO01BQUZvRzs7U0FBUXlPO21CQUEwQ3pPLEdBQUdncEMsc0JBQXNCaHBDLElBQUlyQixPQUFPLE9BQTlDO0tBQzVDcUIsV0FBV2hILEdBQUVnSDtLQUNiZ3BDLG1CQUFtQmhwQzs7SUFFckI7R0FDRjtHRWdYQSxTQUFTa3BDLGNBQWNud0IsSUFBSU0sSUFBSWhHLElBQzdCLE9BQU8wRixPQUFPQSxXQUFXTSxJQUFHaEcsTUFDOUI7R0FnQkEsU0FBUzgxQixvQkFBb0Jwd0IsSUFBSU0sSUFBSWxKO0lBQzNCLElBQUptSixNQUFNUCxVQUFVTTtJQUNwQixHQUFHQyxXQUFXUCxnQkFBZ0JUO0lBQzlCUyxPQUFPTyxTQUFRbko7SUFDZjRJLE9BQU9PLFNBQVFuSjtJQUNmO0dBQ0Y7R1NyUUEsU0FBU2k1Qix3QkFBd0J0d0M7SUFDL0Jna0Isb0JBQW9CaGtCO0lBQ3BCO0dBQ0Y7R3hCdEtBLFNBQVN1d0MsZUFBZXZ3QyxHQUFFWixHQUFLLE9BQU9ZLEVBQUVaLElBQUksU0FBUTtHb0JrQ3BELFNBQVNveEMsbUJBQW9CendDO0lBQzNCO0tBQUlELElBQUk0L0IseUJBQTBCMy9CO0tBQzlCM0MsSUFBSTBDO0tBQU03QixPQUFPNkI7S0FBTXF6QixPQUFPcnpCO0tBQzlCMlIsTUFBTXNLLHNCQUFzQmhjO0tBQzVCKy9CO0tBQ0FwNUIsSUFBS3RKLElBQUlxVSxNQUFLdUssdUJBQXVCamMsR0FBRzNDO0tBQ3hDM0IsSUFBSWtrQyxpQkFBaUJqNUI7SUFDekIsR0FBSWpMLFNBQVNBLEtBQUswM0IsTUFBTWpXO0lBQ2hCLElBQUo3QixNQUFNNWY7SUFDVixJQUFLMkIsS0FBSUEsSUFBRXFVLEtBQUlyVSxJQUFLO0tBQ2xCc0osSUFBSXNWLHVCQUF1QmpjLEdBQUczQztLQUM5QixHQUFJc0osU0FBUztLQUNiakwsSUFBSWtrQyxpQkFBaUJqNUI7S0FDckIsR0FBSWpMLFNBQVNBLEtBQUswM0IsTUFBTTtLQUN4QjlYLE1BQU04WCxPQUFPOVgsTUFBTTVmO0tBQ25CLEdBQUk0ZixNQUFNeWtCLFdBQVc1aUI7O0lBRXZCLEdBQUk5ZixLQUFLcVUsS0FBS3lMO0lBSWQ3QixNQUFNcGQsT0FBT29kO0lBQ2IsR0FBSzhYLGVBQWlCOVgsWUFBWUEsS0FFaEM2QjtJQUNGLE9BQU83QjtHQUNUO0dmd0JBLFNBQVNvMUI7SUFDRSxJQUFMaGtDO0lBQ0osSUFBVSxJQUFGclAsT0FBT0EsSUFBSWdnQix5QkFBeUJoZ0IsSUFBSTtLQUN0QyxJQUFKd2QsTUFBTW5PO0tBQ1ZBLFdBQVcwSix1QkFBdUJpSCxpQkFBaUJoZ0IsVUFBVXdkOztJQUUvRCxPQUFPbk87R0FDVDtHTXJHMkI7SUFBdkJpa0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dhb0lKLFNBQVNDLG1CQUFtQjN3QyxHQUFFNUMsR0FBSyxPQUFPNEMsRUFBRTVDLE9BQUs7R3hCZ1FqRCxTQUFTd3pDLGVBQWdCMXBDLEdBQUd0SixHQUFLLFVBQVNzSixLQUFLdEosR0FBSTtHd0J6VG5ELFNBQVNpekMsMEJBQTBCM3BDLEdBQUU5SixHQUFFd2QsS0FBSS9hO0lBQ3pDLEdBQUdxSCxFQUFFOUosVUFBUXdkLElBQUssQ0FDaEIxVCxFQUFFOUosU0FBT3lDLEdBQ1Q7SUFFRjtHQUNGO0dOdkZBLFNBQVNpeEMseUJBQXlCemtCLElBQ2hDLE9BQU9BLFFBQ1Q7R1R5UEEsU0FBUzBrQixnQkFBZ0J0aEIsS0FBSXVoQixJQUFHQyxJQUFHQyxJQUFHQyxJQUFHNWdCLElBQUdDO0lBQzFDLE1BQU1ELEtBQUdDLElBQUlBO0lBQ2JEO0lBQ0FDO0lBQ0E7S0FBSTRnQjtLQUFRQztLQUFLQztLQUFLQztLQUFVQztLQUM1QkM7S0FDQWxvQixPQUFTaUgsS0FBS0QsTUFBTWh6QixZQUFZNHpDLEtBQUdELFdBQVVPO0tBQzdDQyxTQUFTbGhCLEtBQUtELE1BQU1oekIsVUFBVWdzQjtLQUM5Qm5zQixJQUFJbXpCLEtBQUtoekI7SUFDYixJQUFVLElBQURxTyxPQUFJQSxLQUFHMmQsS0FBSTNkLElBQUk7S0FDdEJ5bEM7TUFBT0wsS0FBTUcsS0FBSzV6QyxTQUFTSCxLQUFNRyxTQUFTNnpDLE1BQU03ekM7UUFBWTJ6QyxLQUFLM3pDLFNBQVNILEtBQU1HLFNBQVM2ekMsTUFBTTd6QztLQUMvRjh6QyxPQUFPQTtLQUNQQztNQUFPTCxLQUFNQyxLQUFLM3pDLFNBQVNILEtBQU1HLFNBQVM2ekMsTUFBTTd6QztRQUFZNHpDLEtBQUs1ekMsU0FBU0gsS0FBTUcsU0FBUzZ6QyxNQUFNN3pDO0tBQy9GK3pDLE9BQU9BO0tBQ1AsR0FBSTFsQztNQUNGNmpCLFdBQVc0aEIsTUFBTUM7YUFDUkMsYUFBV0YsUUFBUUcsYUFBV0YsTUFDdkM3aEIsV0FBVzRoQixNQUFNQztLQUVuQkMsWUFBVUY7S0FDVkcsWUFBVUY7S0FDVmwwQyxLQUFJczBDOztJQUVOO0dBQ0Y7R0E0Q0EsU0FBU0MsaUJBQWlCenFDLEdBQUV0SixHQUFFdXpDLElBQUdELElBQUczZ0IsSUFBR0M7SUFDL0IsSUFBRnp3QixJQUFJbWU7SUFDUm5lO0lBQ0FneEMsZ0JBQWdCaHhDLFdBQVVtSCxHQUFFbkgsV0FBV25DLEdBQUV1ekMsSUFBR0QsSUFBRzNnQixJQUFHQztJQUNsRHp3QjtJQUNBO0dBQ0Y7R004TUEsU0FBUzZ4QyxjQUFjM3hCLElBQUkwTjtJQUN6QkEsT0FBT0YsbUJBQW1CRTtJQUMxQixJQUFJa2tCLFdBQVdsa0IsYUFDWHZwQixZQUNBMHRDLGVBQ0F0eEI7SUFFSixHQUFJcXhCLFdBQVc1eEI7S0FDYjNKO0lBR0YsR0FBSTJKLGVBQWdCO0tBQ2xCLElBQVcsSUFBRjdpQixPQUFPQSxJQUFJeTBDLFVBQVV6MEMsS0FDNUJnSCxNQUFNaEgsS0FBS3V3QixLQUFLdndCO0tBQ2xCLE1BQU9BLElBQUk2aUIsZ0JBQWdCN2lCLEtBQ3pCZ0gsTUFBTWhIO0tBQ1IwMEMsV0FBVzd4QixjQUFjNHhCOztRQUNwQjtLQUNMLElBQVcsSUFBRnowQyxPQUFPQSxJQUFJeTBDLFVBQVV6MEM7TUFDNUJnSCxNQUFNNmIsaUJBQWlCNHhCLFdBQVd6MEMsS0FBS3V3QixLQUFLdndCO0tBQzlDLElBQVcsSUFBRkEsT0FBT0EsSUFBSTZpQixpQkFBaUI0eEIsVUFBVXowQyxLQUM3Q2dILE1BQU1oSDtLQUNSMDBDLFdBQVc3eEIsaUJBQWlCQSxpQkFBaUI0eEI7O0lBRS9DcnhCLE1BQU1QLFVBQVU3YjtJQUNoQjtLQUFJb2lCLE9BQU9TLGlCQUFpQjZxQjtLQUN4QjlwQixtQkFBbUIzQiw2QkFBNkJwRztLQUNoRDZjO09BQVc3YztTQUFpQk8sTUFBTXdILG1CQUFtQnhILE1BQU1nRyxRQUFRd0I7SUFDdkUsT0FBT0Qsc0JBQXNCOUgsU0FBU0EsV0FBVzZ4QixVQUFVaFY7R0FDN0Q7R2Z4T0EsU0FBU2lWLDZCQUE2QjN5QztJQUNwQztLQUNFLElBQUlxUyxNQUFNeTRCLHVCQUF1QjlxQyxJQUM3QjJaLFdBQVd2WCxNQUFNaVE7S0FDckIsSUFBVyxJQUFGclUsT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUFLMmIsS0FBSzNiLEtBQUttRSxVQUFVbkU7S0FDbEQsT0FBT3dtQixjQUFjeGtCLEdBQUcyWixNQUpuQjtHQUtUO0dlWkEsU0FBU2k1QixhQUFhL3hCLElBQ3BCLE9BQU9BLFFBQ1Q7R1N4VEEsU0FBU2d5QjtJQUNQLGdCQUFnQjd5QyxFQUFHOEgsR0FBSyxPQUFPc2MsY0FBY3BrQixRQUFROEgsSUFBOUM7R0FDVDtHRUFBLFNBQVNnckMsd0JBQXdCN3lCO0lBQ3RCLElBQUw4eUIsT0FBT2h6QixpQkFBaUJFO0lBQzVCLE9BQU84eUI7R0FDVDtHMUI0WEEsU0FBU0Msc0JBQXVCbHJDLEdBQUd0SixHQUFLLFVBQVNzSixNQUFNdEosR0FBSTtHQWpLM0QsU0FBU3kwQyxpQkFBaUJqekMsR0FBR2M7SUFDM0IsT0FBUUE7O09BQ0EsT0FBT2Q7O09BQ1AsT0FBT0EsRUFBR2M7O09BQ1YsT0FBT2QsRUFBR2MsTUFBS0E7O09BQ2YsT0FBT2QsRUFBR2MsTUFBS0EsTUFBS0E7O09BQ3BCLE9BQU9kLEVBQUdjLE1BQUtBLE1BQUtBLE1BQUtBOztPQUN6QixPQUFPZCxFQUFHYyxNQUFLQSxNQUFLQSxNQUFLQSxNQUFLQTs7T0FDOUIsT0FBT2QsRUFBR2MsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0E7O09BQ25DLE9BQU9kLEVBQUdjLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBOztJQUVoRCxPQUFPZCxRQUFRdEQsTUFBTTJ4QixtQkFBbUJ2dEI7R0FDMUM7R2E1S0EsU0FBU295QyxvQkFBb0JDLE1BQVEsU0FBVTtHYm5FL0MsU0FBU0Msa0JBQW1CcHpDLEdBQUssT0FBT3drQixjQUFjeGtCLFFBQVM7R2NuQmhDLElBQTNCcXpDLDZCQUE2QnZUO0dOK1ZqQyxTQUFTd1QsbUJBQW1CaDFCLE1BQU1DLE1BQU1FLE1BQU1DO0lBQzVDLEdBQUdKLFVBQVVDLFFBQVFFLFVBQVVDLE9BQU87SUFDdEMsR0FBR0osVUFBVUMsUUFBUUUsVUFBVUMsT0FBTztJQUN0QztHQUNGO0dJcEdBLFNBQVM2MEIsY0FBZWp6QixRQUFRelYsR0FBRzdNLEdBQUdpRDtJQUM3QixJQUFINGYsS0FBSy9GLDBCQUEwQmpRO0lBQ25DLE9BQU9pVyxvQkFBb0JSLFFBQVFPLElBQUk3aUIsR0FBR2lEO0dBQzVDO0dIOE5BLFNBQVN1eUMsbUJBQW1CQztJQUMxQjMxQjs7R0FDRjtHQVBBLFNBQVM0MUIsd0JBQXdCLFNBQVE7R0lqWnpDLFNBQVNDLHFCQUFxQm56QyxHQUFLLFNBQVM7R2QvQjVDLFNBQVNvekMsc0JBQXVCL29DO0lBQUsyTCw2QkFBNkIzTDtJQUFHO0dBQVU7R09VL0UsU0FBU2dwQyxvQkFBcUI7R1JtTzlCLFNBQVNDO0lBQ1AsV0FBVy84Qix1QkFBdUIyZDtHQUNwQztHQWRBLFNBQVNxZjtJQUNQLFdBQVdoOUI7R0FDYjtHZ0J4T0EsU0FBU2k5Qiw4QkFBOEJsc0MsR0FDckMsVUFBU0EsYUFBYTFGLE9BQ3hCO0dVNERBLFNBQVM2eEMsbUJBQW1CbnNDLEdBQzFCLFNBQ0Y7R1Z2RUEsU0FBU29zQyx5QkFBNEIsU0FBUztHRm1FOUMsU0FBU0M7SUFDRCxJQUFGbHpDO0lBQ0osSUFBVSxJQUFGcUcsT0FBT0EsSUFBSXlZLHlCQUF5QnpZO0tBQUk7T0FDM0N5WSxpQkFBaUJ6WSxNQUFNeVksaUJBQWlCelk7VUFBYXlZLGlCQUFpQnpZO01BQ3ZFckcsUUFBSzhlLGlCQUFpQnpZLE9BQU1yRztJQUVoQyxPQUFPQTtHQUNUO0dWK0tBLFNBQVNtekMsaUJBQWtCdHNDLEdBQUssT0FBTzNKLFdBQVcySixHQUFJO0dVb1N0RCxTQUFTdXNDLGFBQWEvekI7SUFDWCxJQUFMTCxPQUFPRixpQkFBaUJPO0lBQzVCLE9BQU9MLGNBQWNBO0dBQ3ZCO0dNL2lCQSxTQUFTcTBCLDBCQUEwQkM7SUFDMUIsSUFBSDFZLFNBQVNyaEIsV0FBVys1QjtJQUN4QixPQUFPNXJCLDhCQUE4QmtULFlBQVlBO0dBQ25EO0dFbUZBLFNBQVMyWSxTQUFTMXNDLEdBQUV0SixHQUNsQixHQUFJQSxRQUFRNlcsMEJBQ1osT0FBT3ZOLElBQUV0SixFQUNYO0dMbEZBLFNBQVNpMkMsZUFDUCxTQUNGO0dUZ0NBLFNBQVNDLDBCQUEwQjVzQyxHQUFJLE9BQU9BLEVBQUU7R3dCc05oRCxTQUFTNnNDLGdCQUFnQnJzQixJQUFHM25CLEdBQUUrYTtJQUM1QixHQUFHQSxXQUFXQSxNQUFNaUIsc0JBQXNCaGM7S0FDeEN1VztJQUNNLElBQUorRSxNQUFNK3FCLFNBQVMxZSxJQUFJM25CLEdBQUcrYTtJQUMxQixPQUFJTyxNQUFZQTtHQUVsQjtHbkJoSkEsU0FBUzI0QixnQkFBaUIzbkIsSUFBSWp2QixHQUFLekMsU0FBUzB4QixJQUFJMXhCLFNBQVN5QyxFQUFHO0dBQzVENDJDO3dCQUN1QixPQUFPMXlCLGNBQWMzbUIsUUFBT0EsVUFBMUM7d0JBQ2MsT0FBTzJtQixjQUFjM21CLFFBQU9BLHNCQUExQzs7O01BRUwsSUFBSW9GLElBQUlwRixRQUFReUMsSUFBSXpDO01BQ3BCQSxTQUFTeUM7TUFDVCxPQUFRa2tCLGNBQWN2aEIsR0FBRTNDLFVBQVdra0IsY0FBY3ZoQixHQUFFM0M7S0FIN0M7OztNQU1OLElBQUkyQyxJQUFJcEYsUUFBUXlDLElBQUl6QztNQUNwQkEsU0FBU3lDO01BQ1QsT0FBUWtrQixjQUFjdmhCLEdBQUUzQyxpQkFBa0Jra0IsY0FBY3ZoQixHQUFFM0M7S0FIcEQ7OztNQU1OLElBQUkyQyxJQUFJcEYsUUFBUXlDLElBQUl6QztNQUNwQkEsU0FBU3lDO01BQ1QsUUFBU2trQixjQUFjdmhCLEdBQUUzQyxXQUFla2tCLGNBQWN2aEIsR0FBRTNDO2VBQy9Da2tCLGNBQWN2aEIsR0FBRTNDO2VBQWNra0IsY0FBY3ZoQixHQUFFM0M7O0tBSmpEOzs7TUFPTixJQUFJMkMsSUFBSXBGLFFBQVF5QyxJQUFJekM7TUFDcEJBLFNBQVN5QztNQUNULE9BQVFra0IsY0FBY3ZoQixHQUFFM0MsV0FBZWtrQixjQUFjdmhCLEdBQUUzQztlQUNwRGtrQixjQUFjdmhCLEdBQUUzQztlQUFja2tCLGNBQWN2aEIsR0FBRTNDO0tBSjNDOztjQU1VcVU7TUFDaEIsSUFBSXJVLElBQUl6QyxRQUNKMlksVUFBVTlSLE1BQU1pUTtNQUNwQixJQUFVLElBQUY3RixPQUFPQSxJQUFJNkYsS0FBSzdGLEtBQ3RCMEgsSUFBSTFILEtBQUswVixjQUFjM21CLFFBQVF5QyxJQUFFd087TUFFbkNqUixTQUFTeUMsSUFBSXFVO01BQ2IsT0FBTzhtQixxQkFBcUJqbEI7S0FQdEI7O2NBU2lCN0I7TUFDdkIsSUFBSXJVLElBQUl6QyxRQUNKb2EsU0FBU3BhLFlBQVl5QztNQUN6QnpDLFNBQVN5QyxJQUFJcVU7TUFDYixPQUFPOVcscUJBQXFCb2EsUUFBUUEsU0FBU3REO0tBSmhDO0dGNlBqQixTQUFTd2lDLG1CQUFtQjcxQjtJQUNqQixJQUFMemE7SUFDSixJQUFTLElBQUR2RyxPQUFLQSxJQUFFZ2hCLFdBQVVoaEIsSUFBSTtLQUMzQnVHLEtBQUt2RztLQUNMLElBQVMsSUFBRHdPLE9BQUtBLElBQUV3UyxVQUFTeFMsSUFBSTtNQUMxQjtPQUFJNUwsSUFBSTVDLEtBQUdnaEIsZ0JBQWV4UztPQUN0QjlMLElBQUlzZSxRQUFRcGU7T0FDWlQsSUFBSTZlLFFBQVFwZTtPQUNaaUssSUFBSW1VLFFBQVFwZTtNQUNoQjJELEtBQUt2RyxPQUFLd08sVUFBUTlMLFlBQVlQLFVBQVUwSzs7O0lBRzVDLE9BQU90RztHQUNUO0dNNURBLFNBQVN1d0Msb0JBQW9CajBCLElBQUk3aUI7SUFDdkIsSUFBSm9qQixNQUFNUCxVQUFVd04sbUJBQW1CcndCO0lBQ3ZDLE9BQU82aUIsT0FBT087R0FDaEI7R1R4VUEsU0FBUzJ6QixvQkFBcUI7R1BYOUIsU0FBU0MsK0JBQWtDLFNBQVU7R0d3WXJELFNBQVNDLGtCQUFtQjc0QyxLQUFLMEw7SUFDL0IsU0FBU290QyxRQUFRcHRDLEdBQUVxdEM7S0FDakIsR0FBSWgzQyxTQUFTMko7TUFBVSxPQUNkQSxVQUFVcXRDO1NBQ1o7TUFDQyxJQUFGNTBDLElBQUlwQixTQUFTMkk7TUFDakIsR0FBSXZILE9BQVE7T0FDVkE7T0FDQXVILEtBQUszSixhQUFZb0M7T0FDakJ1SCxLQUFLLElBQUsxRixNQUFNN0I7T0FDaEIsR0FBRzQwQyxRQUNEcnRDLElBQUlBLFVBQVUsSUFBSzFGLE1BQU0reUM7T0FFM0IsT0FBT3J0Qzs7O09BRUosT0FBT0EsVUFBVXF0Qzs7SUFFMUI7SUFDQSxJQUFJeDBDLEdBQUdYLElBQUltWCxrQkFBa0IvYSxNQUN6Qmc1QyxPQUFRcDFDLGlCQUFjQTtJQUMxQixHQUFJOEgsU0FBVUEsY0FBWUEsT0FBTW9lLFNBQVcsQ0FBRWxtQixjQUFhOEgsTUFBS0E7SUFDL0QsR0FBSWdZLE1BQU1oWSxHQUFJO0tBQUVuSDtLQUFXWDs7Y0FDakI2ZixTQUFTL1gsR0FBSTtLQUFFbkg7S0FBV1g7OztLQUVsQyxPQUFRQTs7UUFFTixJQUFJVyxJQUFJbUgsZ0JBQWdCc3RDLE9BRXBCcDNDLElBQUkyQztRQUNSLEdBQUlBLFNBQVMzQztTQUNYMkMsSUFBSUEsV0FBWTNDLGVBQWUyQyxRQUFTM0M7UUFDMUM7O1FBRUEyQyxJQUFJdTBDLFFBQVFwdEMsR0FBR3N0QyxPQUFPOztRQUV0QkEsT0FBT0EsT0FBS0E7UUFDWnowQyxJQUFJbUgsZ0JBQWdCc3RDO1FBQ3BCLElBQUk1b0MsSUFBSTdMLGdCQUNKK2xCLFFBQU8vbEIsUUFBUTZMO1FBQ25CLEdBQUlrYSxhQUFZNWUsYUFBYUEsc0JBQXNCc3RDLEtBQU07U0FFakQsSUFBRnAzQyxJQUFJd087U0FBTyxNQUFPN0wsU0FBUzNDLFdBQVdBO1NBQzFDLEdBQUkyQyxTQUFTM0MsV0FBV0E7U0FDeEIyQyxJQUFJQSxXQUFXM0MsU0FBUzJDLFFBQVE2TDtTQUNoQ3hPLElBQUkyQztTQUNKLEdBQUlBLFNBQVMzQztVQUNYMkMsSUFBSUEsV0FBWTNDLGVBQWUyQyxRQUFTM0M7U0FDMUM7O1lBQ0s7U0FDQyxJQUFGMFosSUFBSTA5QjtTQUNSLEdBQUkxdUIsUUFBUztVQUFFaFAsS0FBS2dQO1VBQVMvbEIsSUFBSW1ILFVBQVU0UDs7O1VBQ3RDLE1BQU8vVyxJQUFJbUgsVUFBVTRQLElBQUkvVyxXQUFXeTBDLFVBQVUxOUI7U0FDbkQsR0FBSUEsRUFBRztVQUVDLElBQUYxWixJQUFJMkM7VUFBYyxNQUFPQSxTQUFTM0MsV0FBV0E7VUFDakQsR0FBSTJDLFNBQVMzQyxXQUFXQTtVQUN4QjJDLElBQUlBLFdBQVczQzs7O1FBR25COztJQUVKLE9BQU9vWix1QkFBdUJwWCxHQUFHVztHQUNuQztHRzFWQSxTQUFTMDBDLG9CQUFvQno1QyxNQUFLb0U7SUFDaEM7S0FBSXNZLE9BQU9TLGVBQWVuZDtLQUN0QkEsT0FBT2lkLG9CQUFvQlA7SUFDL0IwRiw2QkFBNEJwaUIsa0JBQWdCb2dCLGFBQWFwZ0IsTUFBS29FO0lBQzlEO0dBQ0Y7RzJCNUhBLFNBQVNzMUMsc0JBQXNCeHRDLEdBQUssT0FBT3dzQix3QkFBd0J4c0IsR0FBSTtHSW1CdkUsU0FBU3l0QztJQUNMLElBQ0lyZTtVQUNLMzJCLEdBQ0xqRiwrQkFBK0JpRjtJQUVuQztHQUNKO0d6Q3NuQkEsU0FBU2kxQyxxQkFBcUJ0NkIsSUFBSUUsSUFDaEMsT0FBUUYsS0FBS0UsV0FDZjtHQXBIQSxTQUFTcTZCLHdCQUF3QnY2QixJQUFJRSxJQUNuQyxPQUFPbzZCLHFCQUFxQnA2QixJQUFJRjtHQUNsQztHeUI1ZEEsU0FBU3c2QixTQUFTNXRDLEdBQUV0SjtJQUNsQixHQUFJQSxRQUFRNlc7SUFDWixPQUFRdk4sSUFBRXRKO0dBQ1o7R0kvQkEsU0FBU20zQyxhQUFjN3RDO0lBQ3JCLElBQUk3RyxJQUFJNkcsVUFDSmhILFFBQVFzQixNQUFNbkI7SUFDbEIsSUFBVSxJQUFGakQsT0FBT0EsSUFBSWlELEdBQUdqRCxLQUFNOEMsRUFBRTlDLEtBQUs4SixFQUFFOUo7SUFDckMsT0FBTzhDO0dBQ1Q7R1dpRkEsU0FBUzgwQyx3QkFBd0I5dEM7SUFDL0IsT0FBR0EsRUFBRXMxQiwyQkFBMkI3Z0M7O2tCQUduQm81QyxhQUFhN3RDLEVBQUVzMUI7R0FDOUI7R3RCOUZBLFNBQVN5WSxtQkFBbUJDLE1BQUtDLFlBQVdDLFNBQzFDLFNBQ0Y7R2ZtR0EsU0FBU0Msa0JBQW1CbjFDLEdBQzFCLFdBQVc0c0IsY0FBY0EsV0FDM0I7R21DbEhBLFNBQVN3b0Isd0JBQXdCQyxPQUMvQixTQUNGO0dqQ29JQSxTQUFTQyxnQkFBZ0J0dUMsR0FBSyxTQUFRQSxFQUFHO0dTOFF6QyxTQUFTdXVDLHFCQUFxQnZ1QyxHQUFFdEo7SUFDeEIsSUFBRm1DLElBQUltZTtJQUNSLE9BQU9uZSwwQkFBMEJtSCxHQUFFdEo7R0FDckM7RzBCMVdBLFNBQVM4M0MsdUJBQXVCeHVDLEdBQUc5SjtJQUNqQyxHQUFHQSxTQUFTKzJCLHVCQUF1Qi8yQixLQUFLOEo7S0FDdENvUDtJQUNJLElBQUYxWSxJQUFJazdCLGtCQUFrQjV4QixHQUFHOUo7SUFDN0IsR0FBSVEsU0FBUyxPQUFPQTtJQUNkLElBQUZ1c0IsSUFBSXZzQjtJQUNSLEdBQUl1c0IsYUFBYTNvQixPQUFPLFdBQVd1ekMsYUFBYTVxQjtJQUNoRCxPQUFPdnNCO0dBQ1Q7R25Cc0pBLFNBQVMrM0MsY0FBZXp1QyxHQUFHdEosR0FBSyxVQUFTaXNCLGlCQUFpQjNpQixHQUFFdEosZUFBZTtHakIvTTNFLFNBQVNnNEMsK0JBQWlDLFNBQVM7R2tCVW5ELFNBQVNDLDBCQUEwQjUxQixJQUFJNjFCLFFBQVFuMUMsS0FBS28xQyxTQUFTdGtDO0lBQzNELElBQVcsSUFBRnJVLE9BQU9BLElBQUlxVSxLQUFLclUsSUFBSztLQUN0QjtNQUFGc0o7UUFBSTZhO1VBQWlCRCxjQUFjckIsSUFBSTYxQixTQUFTMTRDO1VBQUk0ZSx1QkFBdUJyYixLQUFLbzFDLFVBQVUzNEM7S0FDOUYsR0FBSXNKLFFBQVEsT0FBT0E7O0lBRXJCO0dBQ0Y7R3BCK0VBLFNBQVNzdkMsbUJBQW1CQztJQUMxQixJQUFJQztJQUNKLE1BQU1EO0tBQUssR0FDTjMrQix3QkFBd0IyK0IscUJBQXNCLENBQy9DQyxPQUFPRCxXQUNQOztNQUVHQSxNQUFNQTtJQUVQLElBQUZuMkM7SUFDSixHQUFHbzJDO0tBQU0sSUFDRyxJQUFGOTRDLE9BQU9BLElBQUk4NEMsYUFBYTk0QztNQUM5QjBDLEVBQUV3WCx3QkFBd0I0K0IsS0FBSzk0QyxVQUFVODRDLEtBQUs5NEM7SUFHbEQsT0FBTzBDO0dBQ1Q7R0FLQSxTQUFTcTJDLHFCQUFzQnQyQyxHQUFHd1gsR0FBRysrQjtJQUNuQyxHQUFJQSxTQUFVO0tBQ0gsSUFBTHA3QyxPQUFPbzdDO0tBQ1gsR0FBR3pnQztNQUNEOVYsSUFBSStqQixjQUFjak8sMkJBQTJCM2E7YUFFdEN3WixxQkFBc0I7TUFDN0IsS0FBSUE7T0FDRkEsMkJBQTJCd2hDLG1CQUFtQnhoQztNQUV4QyxJQUFKNmhDLE1BQU03aEMseUJBQXlCeFo7TUFDbkMsR0FBR3E3QztPQUNEeDJDLElBQUl3MkM7O09BRUpuNUIsdURBQXVEbGlCOzs7SUFJN0R3WixpQkFBaUIzVSxTQUFTd1g7SUFDMUIsR0FBRysrQixVQUFVNWhDLGlCQUFpQjRoQyxZQUFZLytCO0dBQzVDO0dXK0NBLFNBQVNpL0IsU0FBUzU0QixNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNcU4sTUFBTUcsTUFBTUMsTUFBTWdyQjtJQUN0RCxJQUFOdHJCO0lBQ0osSUFBVSxJQUFGN3RCLE9BQU9BLElBQUltNUMsTUFBTW41QztLQUN2QjZ0QjtNQUFTSTtRQUFlM04sTUFBTUMsT0FBS3ZnQixHQUFHd2dCLE9BQUt4Z0IsR0FBR3lnQixNQUFNQyxNQUFNcU4sTUFBTUcsTUFBTUMsT0FBS251QjtJQUU3RSxPQUFPNnRCO0dBQ1Q7R0FNQSxTQUFTdXJCLFdBQVc5NEIsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTUMsTUFBTXFOO0lBQ3RDLElBQU5GO0lBQ0pBLFNBQVNDLFFBQVF4TixNQUFNQyxNQUFNQyxNQUFNRixNQUFNQyxNQUFNQztJQUMvQ3FOLFNBQVNxckIsU0FBUzU0QixNQUFNQyxNQUFNQyxNQUFNQyxNQUFNQyxNQUFNcU4sTUFBTXROLE1BQU1DLE1BQU1xTjtJQUNsRSxPQUFPRjtHQUNUO0dNak1BLFNBQVN3ckIsNkJBQTZCNTdCLEtBQUsyRixLQUFLL08sS0FBSzRKO0lBQ3ZDLElBQU5TLFFBQVEzQixrQkFBa0IxSTtJQUM5QndRLG9DQUFvQ3BILEtBQUsyRixLQUFLMUUsVUFBVXJLO0lBQy9DLElBQUxpbEMsT0FBT2xKLGdCQUFnQm5KLHFCQUFxQnZvQixXQUFXcks7SUFDM0QwOEIsaUJBQWlCdUksU0FBU3I3QjtJQUMxQjtHQUNKO0dkaUlBLFNBQVNzN0IsbUJBQW1CenZDLEdBQUssT0FBT0EsRUFBRztHMkJ0RTNDLFNBQVMwdkMsdUJBQXVCbmxDO0lBQzlCLEdBQUlBLFNBQVMrTjtJQUNiLElBQUkvTixNQUFNQSxhQUNOeEgsUUFBUXpJLE1BQU1pUTtJQUNsQnhIO0lBQ0EsSUFBVyxJQUFGN00sT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUFLNk0sRUFBRTdNO0lBQ2hDLE9BQU82TTtHQUNUO0dkdkdBLFNBQVM0c0M7SUFHUDtHQUNGO0dBcUVBLFNBQVNDLHNCQUFzQmozQyxHQUFLLFNBQVU7R0k3QjlDLFNBQVNrM0MsbUJBQW1COTJCLElBQUk2MUIsUUFBUXhwQixLQUFLN2E7SUFDM0MsSUFBVyxJQUFGclUsT0FBT0EsSUFBSXFVLEtBQUtyVTtLQUFLLEdBQ3hCa2tCLGNBQWNyQixJQUFJNjFCLFNBQVMxNEMsTUFBTWt2QixLQUFLLE9BQ2hDd3BCLFNBQVMxNEM7SUFHckI7R0FDRjtHbkJxR0EsU0FBUzQ1QyxxQkFBcUI5Z0MsS0FDNUI0VyxZQUFZNVcsS0FDWixTQUNGO0cwQnZFc0IsSUFBbEIrZ0M7R0FDSixTQUFTQyx1QkFBd0I1dkMsS0FBS2dHLEtBQUs2cEM7SUFDekMsSUFBSUMsUUFBUTl2QyxRQUNSa1osTUFBTXkyQixrQkFBa0JFO0lBQzVCLEdBQUkzMkIsUUFBUTdrQjtLQUFXLElBRVYsSUFBRnlCLElBQUk2NUMsMEJBQTBCNzVDLElBQUkrNUMsU0FBUy81QztNQUNsRDY1QyxrQkFBa0I3NUM7WUFDWGc2QyxNQUFNNTJCLFNBQVNsVCxLQUFLLE9BQ3RCOHBDLE1BQU01MkI7SUFFZixJQUFJNjJCLFFBQVF4aUMsS0FBS3VpQyxrQkFBa0J4aUM7SUFDbkMsTUFBT3lpQyxLQUFLeGlDLEdBQUk7S0FDZEQsS0FBT3lpQyxLQUFHeGlDO0tBQ1YsR0FBSXZILE1BQU04cEMsTUFBTXhpQyxTQUFPQyxLQUFLRCxhQUN2QnlpQyxLQUFLemlDOztJQUVacWlDLGtCQUFrQkUsV0FBV0U7SUFFN0IsT0FBUS9wQyxPQUFPOHBDLE1BQU1DLFVBQVFELE1BQU1DO0dBQ3JDO0dJMUdBLFNBQVNDLDZCQUE2Qm4xQixTQUFTRCxLQUFLRyxTQUFTRCxLQUFLM1E7SUFDaEUsT0FBT29RLGdDQUFnQ0ssS0FBS0MsU0FBU0MsS0FBS0MsU0FBUzVRO0dBQ3JFO0dIMkJBLFNBQVM4bEM7SUFDUDtLQUFJN3dDLElBQUl4TDtLQUNKeWdCOzs7Ozs7Ozs7Ozs7Ozs7SUFFSixTQUFTdmMsSUFBTTtJQUNmLElBQVcsSUFBRmhDLE9BQU9BLElBQUl1ZSxVQUFVdmUsS0FBSyxLQUFLc0osRUFBRWlWLEVBQUV2ZSxLQUFLc0osRUFBRWlWLEVBQUV2ZSxNQUFJZ0M7SUFDekQsT0FBT3NIO0dBQ1Q7RzNCeUVBLFNBQVM4d0MsdUJBQXVCeDhDLE1BQzlCLE9BQU93aUIsZ0JBQWlCeGlCLE1BQzFCO0dJd0pBLFNBQVN5OEMsaUJBQWtCdndDO0lBQ3pCLEdBQUlBLE9BQVE7S0FDSixJQUFGdEosSUFBSUwsV0FBVzJKO0tBQ25CLE9BQVFBLElBQUl0SixXQUFXQSxRQUFPQTs7UUFDekIsQ0FDQyxJQUFGQSxJQUFJTCxVQUFVMkosSUFDbEIsT0FBUXRKLElBQUlzSixXQUFXdEosUUFBT0E7R0FFbEM7R2tDalJBLFNBQVM4NUMsZ0JBQWdCMThDLE1BQU13dkMsT0FBT3lEO0lBQ2xDO0tBQ0kzWDtPQUNJOWdCLHVCQUF1QnhhO09BQ3ZCd2EsdUJBQXVCZzFCO09BQ3ZCaDFCLHVCQUF1Qnk0Qjs7VUFDdEJ0dUMsR0FDTGpGLCtCQUErQmlGO0lBRW5DO0dBQ0o7R3BDNlBBLFNBQVNnNEMsaUJBQWlCanhDLEdBQUd4RztJQUMzQixPQUFRQTs7T0FDQSxXQUFXd0c7O09BQ1gsV0FBV0EsRUFBR3hHOztPQUNkLFdBQVd3RyxFQUFHeEcsTUFBS0E7O09BQ25CLFdBQVd3RyxFQUFHeEcsTUFBS0EsTUFBS0E7O09BQ3hCLFdBQVd3RyxFQUFHeEcsTUFBS0EsTUFBS0EsTUFBS0E7O09BQzdCLFdBQVd3RyxFQUFHeEcsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0E7O09BQ2xDLFdBQVd3RyxFQUFHeEcsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0E7O09BQ3ZDLFdBQVd3RyxFQUFHeEcsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0EsTUFBS0E7O0lBRXBELFNBQVMwM0MsSUFBTSxPQUFPbHhDLFFBQVEvTCxNQUFNdUYsR0FBSTtJQUN4QzAzQyxjQUFjbHhDO0lBQ2QsV0FBV2t4QztHQUNiO0dRdElBLFNBQVNDLGVBQWV2MEIsS0FBSzlDLEtBQUsvTztJQUNoQyxJQUFVLElBQUZyVSxPQUFPQSxJQUFJcVUsS0FBS3JVO0tBQ3RCa21CLFNBQVM5QyxNQUFJcGpCLG9CQUFtQmttQixTQUFTOUMsTUFBSXBqQjtHQUVqRDtHeUIzS29CLElBQWhCMDZDO0dBSUosU0FBU0Msb0JBQW9CNzNDLEdBQzNCNDNDLGtCQUFrQjUzQyxFQUNwQjtHVDZCQSxTQUFTODNDLGFBQWM5d0M7SUFDckIsR0FBS0EsYUFBYTFGLFNBQVUwRixRQUFTQTtLQUNuQyxPQUFPQTtZQUNBdVMsaUJBQWlCdlM7S0FDeEI7WUFDT3dTLGtCQUFrQnhTO0tBQ3pCO1lBQ1FBLGFBQWE4MEIsbUJBQW9COTBCO0tBQ3pDO1lBQ09BLEtBQUtBLGVBQ1osaUJBRUE7R0FDSjtHQXVKQSxTQUFTK3dDLHNCQUFzQmo0QztJQUM3QixPQUFRZzRDLGFBQWFoNEMsWUFBV0EsT0FBS0E7R0FDdkM7R0M1S29CLElBQWhCazRDO0dBQ0osU0FBU0Msb0JBQXFCcDRDO0lBQzVCLEtBQUttNEMseUJBQXlCbjRDLElBQUksT0FBT0E7SUFDekMsT0FBT0EsVUFBVW00QztjQUNOQTthQUNBQTtHQUNiO0dWMFVBLFNBQVNFLGNBQWNuNEIsSUFDckIsT0FBT29jLFlBQVlwYyxPQUNyQjtHZkxBLFNBQVNvNEIscUNBQXFDajVDO0lBQzVDO0tBQ0UsSUFBSXFTLE1BQU1sUSxrQkFDTndYLFdBQVd2WCxNQUFNaVE7S0FDckIsSUFBVyxJQUFGclUsT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUFLMmIsS0FBSzNiLEtBQUttRSxVQUFVbkU7S0FDbEQsT0FBT3dtQixjQUFjeGtCLElBQUd6RSxNQUFLb2UsT0FKeEI7R0FNVDtHRXhGQSxTQUFTdS9CLGdCQUFpQnB4QyxHQUFLLE9BQU8zSixVQUFVMkosR0FBSTtHWS9QcEQsU0FBU3F4QyxpQ0FBb0MsU0FBUztHWmtMdEQsU0FBU0MsaUJBQWtCdHhDLEdBQUU0ZTtJQUMzQkE7SUFDQSxHQUFJQSxXQUFZO0tBQ2RBO0tBQ0E1ZSxLQUFLM0o7S0FDTCxHQUFJdW9CLFdBQVksQ0FDZEEsYUFDQTVlLEtBQUszSjs7SUFHVCxHQUFJdW9CLGFBQWEsQ0FDZkEsYUFDQTVlLEtBQUszSjtJQUVQMkosS0FBSzNKLFlBQVl1b0I7SUFDakIsT0FBTzVlO0dBQ1Q7R081TEEsU0FBU3V4QyxrQkFBa0JocEI7SUFDekJ4UixnQkFBY3dSO0lBQ2Q0WjtJQUNBO0dBQ0Y7R1RzU0EsU0FBU3FQLDZCQUE2QkMsT0FBT3Y1QztJQUMzQztLQUNFO01BQUlTLElBQUkwQjtNQUNKd1gsV0FBV3ZYLE1BQU1tM0M7TUFDakJsbkMsTUFBTWxVLFNBQVNnRSxrQkFBa0JvM0M7S0FDckMsSUFBVyxJQUFGdjdDLE9BQU9BLElBQUlxVSxLQUFLclUsS0FBSzJiLEtBQUszYixLQUFLbUUsVUFBVW5FO0tBQ2xELE9BQU93bUIsY0FBY3hrQixHQUFHMlosTUFMbkI7R0FPVDtHYXRQQSxTQUFTNi9CLG9CQUFvQi80QixNQUFRLFNBQVU7R2QvQi9DLFNBQVNnNUIsNkJBQWdDLFdBQVk7R1NnVXJELFNBQVNDLGVBQWVwN0IsTUFBTUMsTUFBTUUsTUFBTUMsTUFDeENKLFVBQVVDLFNBQVNFLFVBQVVDLE9BQzdCO0dBQ0Y7R2Q1SEEsU0FBU2k3QixlQUFnQjd4QyxHQUFHdEosR0FBSyxPQUFPc0osTUFBTXRKLEdBQUc7RzhCak5qRCxTQUFTbzdDLGlCQUFrQjl4QyxHQUFHb0csS0FBT3BHLE9BQU9vRyxLQUFLLFNBQVU7R0ppRTNELFNBQVMyckMsaUJBQWlCL3hDO0lBQ3hCLFFBQVVBLHlCQUNBQTtjQUNBQTtjQUNBQTtHQUNaO0dMaVhBLFNBQVNneUMsY0FBY2o1QixJQUFJTSxJQUFJaEcsSUFBSUUsSUFBSXBEO0lBQ3JDNEksT0FBT0EsV0FBV00sSUFBR2hHLElBQUdFLE1BQU1wRDtJQUM5QjtHQUNGO0dmN2NBLFNBQVM4aEMsbUJBQW1CbjVDLEdBQUUwRyxHQUFLLE9BQVExRyxhQUFhMEcsVUFBWTtHYWtFcEUsU0FBUzB5QyxzQkFBc0J2NUMsR0FBSyxTQUFVO0dMUjlDLFNBQVN3NUMscUJBQXFCLzFCLEtBQUs5QyxLQUNqQyxPQUFPOEMsU0FBUzlDLEtBQ2xCO0dBUkEsU0FBUzg0QixxQkFBcUJoMkIsS0FBSzlDLEtBQUsrNEIsT0FDdENqMkIsU0FBUzlDLE9BQU8rNEIsT0FDaEI7R0FDRjtHYnFTQSxTQUFTQyxrQkFBa0J6NUMsR0FBRTNDLEdBQUV5MEIsS0FDN0IzVSxtQ0FDRjtHYzFSQSxTQUFTdThCLHFCQUFxQkMsUUFBT251QyxHQUFFOEI7SUFDekIsSUFBUnNzQyxVQUFVRDtJQUNkLGlCQUNXQztvQkFDQUQ7OzttQkFHRG51QztvQkFDQzhCOztrQkFFRjhJOzs7bUJBR0NBO0dBRVo7R0FrTEEsU0FBU3lqQyxpQkFBaUIxeUMsR0FBRXRKLEdBQUV1ekMsSUFBR0QsSUFBRzNnQixJQUFHQztJQUMvQixJQUFGendCLElBQUltZTtJQUNSbmU7SUFDQWd4QyxnQkFBZ0JoeEMsV0FBVW1ILEdBQUVuSCxXQUFXbkMsR0FBRXV6QyxJQUFHRCxJQUFHM2dCLElBQUdDO0lBQ2xEendCO0lBQ0E7R0FDRjtHSmhDQSxTQUFTODVDLGlCQUFpQkMsS0FBS3h6QixNQUFNbUIsUUFBUXN5QixRQUFRN3lCLE1BQU1wTSxLQUV6RG9DO0dBQ0Y7R0FJQSxTQUFTODhCLDBCQUEwQmh0QixNQUFLaXRCO0lBQ3RDLE9BQU9KO2FBQWlCN3NCLFNBQVFBLFNBQVFBLFNBQVFBLFNBQVFBLFNBQVFBO0dBQ2xFO0dVd2dCQSxTQUFTa3RCLG9CQUFvQkMsT0FBT0MsT0FBT0MsT0FBTy96QixNQUFNbUIsUUFBUVA7SUFDOUQsR0FBR2t6QixTQUFTL3pCLDZCQUE2QkM7S0FDdkNoUTs7SUFFRixPQUFPeVIsc0JBQXNCekIsTUFBTW1CLFFBQVFQLE1BQU1pekI7R0FDbkQ7R2JwZ0JBLFNBQVNHLGdCQUFpQnB6QyxHQUFLLE9BQU8zSixVQUFVMkosR0FBSTtHOEJ4TnBELFNBQVNxekMsc0JBQXNCcnpDLEdBQUssT0FBTzRpQyx3QkFBd0I1aUMsR0FBSTtHYnJDdkUsU0FBU3N6QztJQUFxQ3Q0QixLQUFLQyxTQUFTQyxLQUFLQyxTQUFTNVE7SUFDeEUsT0FBTzJTLGlDQUFpQ2xDLEtBQUlDLFNBQVFDLEtBQUlDLFNBQVE1UTtHQUNsRTtHVGJBLFNBQVNncEMsNEJBQ1AsU0FDRjtHRCtUQSxTQUFTQyxpQkFBaUIvNUM7SUFDeEIsSUFBSVosSUFBSW1lLHFCQUNKdkMsSUFBSTViLHNCQUFzQlksTUFDMUJnNkMsS0FBS2gvQjtJQUNUNWIsbUJBQW1CWSxLQUFJWixLQUFJQSxXQUFXQTtJQUN0Q0EsT0FBTzQ2QztJQUNQO0dBQ0Y7R0FZQSxTQUFTQyxvQkFBb0JqNkM7SUFDM0IrNUMsaUJBQWlCcGpDLHdCQUF3QjNXO0lBQ3pDO0dBQ0Y7R0FYQSxTQUFTazZDLGtCQUFrQm4wQztJQUN6QmcwQyxpQkFBaUI1OEMsb0JBQW9CNEk7SUFDckM7R0FDRjtHSnRNQSxTQUFTbzBDLGFBQWE5L0M7SUFDcEI7S0FBSTBjLE9BQU9TLGVBQWVuZDtLQUN0QkEsT0FBT2lkLG9CQUFvQlA7S0FDM0JzZ0I7SUFDSixJQUFVLElBQUY1NkIsT0FBT0EsSUFBSWdnQix5QkFBeUJoZ0I7S0FDMUMsR0FBR2dnQixpQkFBaUJoZ0IsV0FBV3BDLE1BQU1nOUIsTUFBTTU2QjtJQUM3QyxHQUFHNDZCLFdBQVU1YSx3QkFBd0I0YTtJQUNyQztHQUNGO0dNdUJBLFNBQVMraUIsNkJBQTZCaDdDLEdBQUV5Z0I7SUFDM0IsSUFBUDBILGFBQWFxYixlQUFnQnhqQyxVQUFVeWdCLGtCQUFjQSxNQUFJQTtJQUM3RCxPQUFPa2pCLDZCQUE2QnhiLFFBQVExSDtHQUM5QztHQ2lPQSxTQUFTdzZCLGtCQUFrQnQ3QjtJQUN6QixPQUFPaU4sb0JBQW9CNlksWUFBWTlsQjtHQUN6QztHSHFCQSxTQUFTdTdCLG1CQUFtQjc4QixJQUFHbFgsR0FBRXRKO0lBQ3pCLElBQUZtQyxJQUFJbWU7SUFDUixLQUFJRSxTQUFVO0tBQ0QsSUFBUHM3QixTQUFTLzJDO0tBQ2IrMkMsZUFBZTM1QztLQUNmMjVDLGdCQUFnQjM1QztLQUNoQjI1QyxxQ0FBcUN0N0I7S0FDM0IsSUFBTjg4QixZQUFZdmxDO0tBQ2hCdWxDOztPQUNFbjdDLG9CQUFvQm03QyxPQUFNaDBDLEdBQUVuSCxXQUFXcWUsWUFBWXhnQjtPQUNuRHdnQixXQUFXODhCO01BRkU7S0FJZkEsWUFBWXhCOzs7S0FFWjM1QyxvQkFBb0JxZSxVQUFTbFgsR0FBRW5ILFdBQVdxZSxZQUFZeGdCO0lBRXhEO0dBQ0Y7R1gzSEEsU0FBU3U5QyxvQ0FBb0NDLFVBQzNDLFNBQ0Y7R0hyQ0EsU0FBU0MsZ0JBQWlCdDdDLEdBQUczQyxHQUFHc0osR0FDOUJ3VyxpQ0FDRjtHVTFDQSxTQUFTbytCLGVBQWV0Z0Q7SUFDYixJQUFMK0csT0FBT3NiLGtCQUFrQnJpQjtJQUM3QitHLGtCQUFrQkE7SUFDbEI7R0FDRjtHQy9FQSxTQUFTdzVDLGtCQUFrQjErQixRQUFRcUYsS0FBS0U7SUFDdEMsSUFBSW81QixXQUFXbitCLGtCQUFrQjZFLE1BQzdCdTVCLFdBQVdwK0Isa0JBQWtCK0U7SUFDakMsR0FBR281QixtQkFBbUJDO0tBQ3BCditCOztJQUNGLEtBQUtzK0I7S0FDSHQrQjtJQUVGLE9BQU9zK0Isd0JBQXdCMytCLFFBQVEyK0IsZUFBZUM7R0FDeEQ7RzBCbkhBLFNBQVNDLHdCQUF3QngwQztJQUMvQixHQUFJa04sbUJBQW1CbE4sSUFBSTtJQUNyQixJQUFGckg7SUFDSixTQUFTODdDLFFBQVN6MEMsR0FBUSxPQUFPa04sbUJBQW1CbE4sR0FBSTtJQUN4RCxTQUFTMDBDLEtBQU0xMEMsR0FBRXRKLEdBQVMsT0FBTzhuQyxlQUFleCtCLEdBQUd0SixHQUFJO0lBQ3ZELFNBQVNpK0MsWUFBWTMwQyxHQUFLLE9BQU8wZSwyQkFBMkIxZSxTQUFRO0lBQ3BFO01BQUl5MEMsUUFBUUMsS0FBSzEwQyxHQUFHMGUseURBQTBELENBQzVFL2xCLElBQUlBLFFBQVFxSCxJQUFJdW5CLGdDQUFnQ3ZuQjtJQUVsRCxHQUFJeTBDLFFBQVFDLEtBQUsxMEMsR0FBRzIwQyx3QkFBeUI7S0FDM0NoOEMsSUFBSUE7S0FBUXFILElBQUl1bkIsZ0NBQWdDdm5COztJQUVsRCxHQUFJeTBDLFFBQVFDLEtBQUsxMEMsR0FBRzIwQyx3QkFBeUI7S0FDM0NoOEMsSUFBSUE7S0FBUXFILElBQUl1bkIsZ0NBQWdDdm5COztJQUVsRCxHQUFJeTBDLFFBQVFDLEtBQUsxMEMsR0FBRzIwQyx3QkFBeUI7S0FDM0NoOEMsSUFBSUE7S0FBUXFILElBQUl1bkIsZ0NBQWdDdm5COztJQUVsRCxHQUFJeTBDLFFBQVFDLEtBQUsxMEMsR0FBRzIwQyx3QkFBeUI7S0FDM0NoOEMsSUFBSUE7S0FBUXFILElBQUl1bkIsZ0NBQWdDdm5COztJQUVsRCxPQUFPckgsSUFBS3dWLG9CQUFvQnF3QixlQUFleCtCLEdBQUcyMEM7R0FDcEQ7R3BCa2VBLFNBQVNDLGdCQUFnQnA4QixRQUN2QixPQUFPK3pCLGFBQWEvekIsUUFDdEI7R0Vsa0JpQyxJQUE3QnE4QiwrQkFBK0I3YztHa0JNbkMsU0FBUzhjLGlDQUFpQzkwQyxHQUN4QyxTQUNGO0dsQ3NUQSxTQUFTKzBDLHVCQUF1QjlxQixPQUM5QixTQUNGO0dIdU5BLFNBQVMrcUIsb0JBQW9CNWhDLElBQUlFLElBQU0sV0FBU2daLGlCQUFpQmxaLElBQUlFLElBQUs7R0dsUDFFLFNBQVMyaEMsd0JBQXdCaHJCLE9BQy9CLE9BQU9oYiwyQkFDVDtHRWlJQSxTQUFTaW1DLGVBQWdCbDhDO0lBQ2pCLElBQUZGO0lBQ0osSUFBVyxJQUFGNUMsT0FBT0EsSUFBSThDLFVBQVU5QyxJQUFLO0tBQzNCLElBQUYwWixJQUFJNVcsRUFBRTlDO0tBQ1Y0QyxFQUFFc1gsd0JBQXdCUixTQUFTQTs7SUFFckMsT0FBTzlXO0dBQ1Q7R1N5REEsU0FBU3E4QztJQUNQbi9CO0dBQ0Y7R2FuZUEsU0FBU28vQixpQ0FBaUNybEI7SUFDbEMsSUFBRjVwQixJQUFJaW5CLG9CQUFvQjJDO0lBQzVCLE9BQU81cEI7R0FDVDtHcEJ5VEEsU0FBU2t2QyxlQUFlcjFDLEdBQUd0SixHQUFHdXNCO0lBQzVCO0tBQUlxeUIsUUFBUWovQztLQUNSay9DLFlBQVlsL0M7S0FDWm0vQyxVQUFVbi9DO0tBQ1ZvL0M7S0FDQUMsSUFBSXIvQyxjQUFhby9DO0tBQ2pCRSxJQUFJdC9DLGNBQWFvL0M7SUFFckIsU0FBU0csU0FBVTU4QyxHQUFHK0o7S0FDcEI7TUFBSTh5QyxLQUFLUCxRQUFRdDhDO01BQ2I4OEMsTUFBTUQsTUFBTUEsS0FBSzc4QztNQUNqQis4QyxNQUFNLzhDLElBQUk4OEM7TUFDVm5ULEtBQUsyUyxRQUFRdnlDO01BQ2JpekMsTUFBTXJULE1BQU1BLEtBQUs1L0I7TUFDakJrekMsTUFBTWx6QyxJQUFJaXpDO01BQ1ZwbUMsSUFBSTVXLElBQUkrSjtNQUNSdEssSUFBTXE5QyxNQUFNRSxNQUFNcG1DLElBQUtrbUMsTUFBTUcsTUFBTUYsTUFBTUMsTUFBT0QsTUFBTUU7S0FDMUQsV0FDS3JtQyxNQUNBblg7SUFFUDtJQUVBLFNBQVN3dkIsSUFBS2p2QixHQUFHK0o7S0FDZixJQUFJbEssSUFBSUcsSUFBSStKLEdBQ1JvTixJQUFJdFgsSUFBSUcsR0FDUlAsSUFBS08sS0FBS0gsSUFBSXNYLE1BQU9wTixJQUFJb047S0FDN0IsV0FDS3RYLE1BQ0FKO0lBRVA7SUFFQSxTQUFTeTlDLE9BQVFsMkMsR0FBR3RKO0tBQ2xCLE9BQU9zSixXQUFXdEosV0FBVzQrQyxRQUFRdDFDLEtBQUtzMUMsUUFBUXQxQyxJQUFJQSxPQUFPQTtlQUFJQSxVQUFVQSxzQkFBb0J0SixxQkFBbUI4K0M7ZUFBV3gxQztJQUMvSDtJQUVBO01BQUlBLFdBQVdBLE1BQU1BLEtBQUtBLG1CQUFnQkEsbUJBQ3RDdEo7U0FBV0EsTUFBTUE7U0FBS0E7U0FBZ0JBO0tBQWMsT0FDL0NzSixJQUFJdEosSUFBSXVzQjtJQUVqQixHQUFJQSxTQUFTLE9BQ0pqakIsSUFBSXRKO0lBRWIsR0FBSXVzQixNQUFNQSxLQUFLQSxtQkFBZ0JBLGlCQUFjLE9BQ3BDQTtJQUdDLElBQU5rekI7SUFDSixNQUFPOS9DLFNBQVMySixLQUFLMDFDLEVBQUcsQ0FDdEJTLFNBQVNULEdBQ1QxMUMsS0FBSzIxQztJQUVQLE1BQU90L0MsU0FBU0ssS0FBS2cvQyxFQUFHLENBQ3RCUyxTQUFTVCxHQUNUaC9DLEtBQUtpL0M7SUFFUCxHQUFJUSxpQkFBaUIsT0FDWm4yQyxJQUFJdEosSUFBSXkvQztJQUVqQixNQUFPOS9DLFNBQVMySixLQUFLMjFDLEVBQUcsQ0FDdEJRLFNBQVNSLEdBQ1QzMUMsS0FBSzAxQztJQUVQLE1BQU9yL0MsU0FBU0ssS0FBS2kvQyxFQUFHLENBQ3RCUSxTQUFTUixHQUNUai9DLEtBQUtnL0M7SUFFUCxHQUFJUyxhQUFhLE9BQ1JsekI7SUFHVCxJQUFJbXpCLEtBQUtwMkMsR0FDTHEyQyxLQUFLMy9DLEdBQ0w0L0MsS0FBS3J6QixJQUFJa3pCO0lBRWIsR0FBSTkvQyxTQUFTaWdELE1BQU1qZ0QsU0FBUysvQyxLQUFLQyxVQUFVYixTQUFTLE9BQzNDdnlCO0lBRVQsR0FBSTVzQixTQUFTaWdELE1BQU1qZ0QsU0FBUysvQyxLQUFLQyxNQUFNYixjQUFjQTtLQUNuRGMsTUFBTXJ6QixxQkFBbUJzeUI7SUFHM0I7S0FBSWdCLEtBQUtYLFNBQVNRLElBQUlDO0tBQ2xCeDlDLElBQUlvdkIsSUFBSXN1QixNQUFNRDtLQUNkdjlDLElBQUlrdkIsSUFBSXN1QixNQUFNMTlDO0tBQ2QzQyxJQUFJK3hCLElBQUlwdkIsS0FBS0U7S0FFYmIsSUFBSWhDLE1BQU1nZ0QsT0FBT2hnRCxLQUFLNkM7SUFDMUIsR0FBSWIsU0FBUyxPQUNKQTtJQUdGLElBQUh1NEIsS0FBS3Y0QixJQUFJaStDO0lBQ2IsR0FBSTkvQyxTQUFTbzZCLE1BQU04a0IsV0FBVyxPQUNyQjlrQjtJQUlULE9BQU9BLEtBQUt5bEIsT0FBT2grQyxJQUFJdTRCLEtBQUswbEIsT0FBT2pnRCxPQUFPaWdEO0dBQzVDO0crQmhYQSxTQUFTSyw4QkFBOEI3OUIsTUFBUSxTQUFTO0dia0R4RCxTQUFTODlCLGFBQWF6MkMsR0FDcEIsUUFBV0Esb0JBQ0FBLGlCQUNiO0dSbUVBLFNBQVMwMkMsd0JBQXdCbCtCLFFBQU9uRTtJQUM3QixJQUFMOEQsT0FBT0YsaUJBQWlCTztJQUM1QkwseUJBQXdCOUQ7SUFDeEI4RCx5QkFBeUI5RDtJQUN6QjtHQUNGO0dDeElBLFNBQVNzaUMsc0JBQXlCLFNBQVU7R0orTTVDLFNBQVNDLGtCQUFrQjUyQyxHQUFFdEosR0FBRTJOLEdBQUU4QjtJQUN6QixJQUFGdE4sSUFBSW1lO0lBQ1JuZSxxQkFBcUJtSCxHQUFFbkgsV0FBV25DLEdBQUUyTixLQUFHOEI7SUFDdkM7R0FDRjtHZHBDQSxTQUFTMHdDLGtCQUFrQmgrQyxHQUFFM0M7SUFDM0IsR0FBSUEsV0FBVzJlLHNCQUFzQmhjLFFBQVFnK0I7SUFDN0M7S0FBSXRkLEtBQUt6RSx1QkFBd0JqYyxHQUFHM0M7S0FDaENzakIsS0FBSzFFLHVCQUF3QmpjLEdBQUczQztJQUNwQyxPQUFRc2pCLFVBQVVEO0dBQ3BCO0dtQjlNQSxTQUFTdTlCLDRCQUErQixTQUFTO0dkK0tqRCxTQUFTQyxpQkFBaUIvMkMsR0FBSyxPQUFPQSxNQUFLO0dZMFYzQyxTQUFTZzNDLGtCQUFtQngrQixRQUFPckksR0FBRXJXO0lBQzdCLElBQUZqQixJQUFJZ2lDLDRCQUE0QjFxQixHQUFHclc7SUFDdkMrcUMsZUFBZXJzQixRQUFPM2YsTUFBSWdjLHNCQUFzQmhjO0lBQ2hEO0dBQ0Y7R0E1QkEsU0FBU28rQyx3QkFBd0J6K0IsUUFBT2hKLFFBQU8zQixRQUFPdEQ7SUFDekMsSUFBUGlGLFNBQVNzSix1QkFBdUJ0SjtJQUNwQyxPQUFPcXhCLGtCQUFrQnJvQixRQUFPaEosUUFBTzNCLFFBQU90RDtHQUNoRDtHRzFGQSxTQUFTMnNDLGNBQWNuK0IsSUFBSU0sSUFBSWhHLElBQUlFO0lBQ2pDLE9BQU93RixPQUFPQSxXQUFXTSxJQUFHaEcsSUFBR0U7R0FDakM7R29CclRBLFNBQVM0akMsbUJBQW1COXRCLElBQUloVyxJQUFJaVcsSUFBSS9WLElBQUloSjtJQUUxQ3l0QjtNQUFnQjNPO01BQUk0RCx1QkFBdUI1WjtNQUMzQmlXO01BQUkyRCx1QkFBdUIxWjtNQUMzQmhKO0lBQ2hCO0dBQ0Y7R3JDbUZzQixJQUFsQjZzQyxvQkFBb0IsSUFBS3RpRDtHQUM3QixTQUFTdWlEO0lBQ0MsSUFBSnRPLE1BQU0sSUFBS2owQztJQUNmLE9BQU9pMEMsY0FBY3FPO0dBQ3ZCO0dBSUEsU0FBU0UsK0JBQStCdjBDLEdBQ3RDLE9BQU9zMEMsZ0JBQ1Q7R2tDM05BLFNBQVNFLDhCQUE4QnYzQyxHQUNyQyxTQUNGO0cxQjZOQSxTQUFTdzNDLG1CQUFtQjcrQixNQUMxQnRDLHVCQUNGO0cyQjlOQSxTQUFTb2hDLG9CQUFvQjkrQixNQUMzQixPQUFPaTRCLGdCQUNUO0d0Q21QQSxTQUFTOEcsaUJBQWlCNytDLEdBQUUzQztJQUMxQixHQUFJQSxXQUFXMkMsU0FBU21jO0lBQ3hCO0tBQUl1RSxLQUFLMGMsc0JBQXVCcDlCLEdBQUczQztLQUMvQnNqQixLQUFLeWMsc0JBQXVCcDlCLEdBQUczQztLQUMvQnVqQixLQUFLd2Msc0JBQXVCcDlCLEdBQUczQztLQUMvQndqQixLQUFLdWMsc0JBQXVCcDlCLEdBQUczQztJQUNuQyxPQUFRd2pCLFdBQVdELFdBQVdELFVBQVVEO0dBQzFDO0dPdkNBLFNBQVNvK0IsaUJBQWtCMzNDO0lBQ3pCLEdBQUtBLFlBQVkrWCxTQUFTL1gsSUFBSSxXQUFXQTtJQUNqQyxJQUFKNDNDLE1BQU01M0M7SUFDVixHQUFJNDNDLEtBQUs1M0MsTUFBTUE7SUFDUCxJQUFKNGUsTUFBTXZvQixpQkFBZ0I4bkIsZ0JBQWdCbmU7SUFDMUNBLEtBQUszSixjQUFZdW9CO0lBQ2pCLE1BQU81ZSxRQUFTLENBQ2RBLFFBQ0E0ZTtJQUVGLE1BQU81ZSxPQUFRLENBQ2JBLFVBQ0E0ZTtJQUVGLEdBQUlnNUIsS0FBSzUzQyxNQUFNQTtJQUNmLFdBQVdBLEdBQUc0ZTtHQUNoQjtHaUIzTkEsU0FBU2k1QjtJQUFvQzc4QixLQUFLQyxTQUFTQyxLQUFLQyxTQUFTNVE7SUFDdkUsT0FBT2dvQixnQ0FBZ0N2WCxLQUFJQyxTQUFRQyxLQUFJQyxTQUFRNVE7R0FDakU7R0xaQSxTQUFTdXRDLG9CQUFvQkMsTUFBS3hpRDtJQUNoQztLQUFJaEIsUUFBUU8sS0FBS2lqRDtLQUNiQyxXQUFXMXBDLHVCQUF1Qi9ZO0tBQ2xDMGlELFVBQVV6a0QsMkJBQTJCd2tELFVBQVV6akQ7SUFDbkQsT0FBTzBhLHVCQUF1QmdwQztHQUNoQztHeUJkQSxTQUFTQyw0QkFBNEJoZ0Q7SUFDbkMsa0JBQ0UsT0FBTzI4QixzQkFBc0IzOEIsR0FBR21DLFdBRDNCO0dBR1Q7RzVDdVFBLFNBQVM4OUMsa0JBQWtCdC9DLEdBQUUzQztJQUMzQixHQUFJQSxXQUFXMmUsc0JBQXNCaGMsUUFBUWcrQjtJQUN2QyxJQUFGNzlCLFFBQVFzQjtJQUNaLElBQVUsSUFBRm9LLE9BQU9BLE9BQU9BLEtBQ3BCMUwsTUFBTTBMLEtBQUtvUSx1QkFBd0JqYyxHQUFHM0MsSUFBSXdPO0lBRTVDLE9BQU95VSxvQkFBb0JuZ0I7R0FDN0I7R0svRkEsU0FBU28vQyxrQ0FBa0N4cEM7SUFDekMsR0FBR0EsY0FBYyxXQUFhQTtJQUM5QjtHQUNGO0dZcVpBLFNBQVN5cEMsbUJBQW1CNy9CO0lBQzFCLE9BQU9pTixvQkFBcUI4bUIsYUFBYS96QjtHQUMzQztHTjdRQSxTQUFTOC9CLG9CQUFvQjk2QixZQUMzQixPQUFPRCxtQkFBbUJDO0dBQzVCO0dHa01BLFNBQVMrNkIsd0JBQXdCdi9DO0lBQy9CZ2Q7R0FDRjtHa0J6Y0EsU0FBU3dpQyxxQkFBcUJudkIsSUFBSWhXLElBQUlpVyxJQUFJL1YsSUFBSWhKO0lBQzVDLEdBQUlnSixNQUFNRjtLQUFJLElBQ0QsSUFBRjNPLE9BQU9BLEtBQUs2RixLQUFLN0YsS0FBSzRrQixHQUFHL1YsS0FBSzdPLEtBQUsya0IsR0FBR2hXLEtBQUszTzs7S0FDL0MsSUFDTSxJQUFGQSxJQUFJNkYsS0FBSzdGLFFBQVFBLEtBQUs0a0IsR0FBRy9WLEtBQUs3TyxLQUFLMmtCLEdBQUdoVyxLQUFLM087SUFFdEQ7R0FDRjtHZDBCQSxTQUFTK3pDLG9CQUFvQjkvQixNQUFRLFNBQVU7R2ZNL0MsU0FBUysvQixvQkFBb0J2M0MsR0FBRWdQO0lBQzdCLEtBQUkxQiw0QkFDRkE7SUFDRkEsMkJBQTJCdE4sS0FBS2dQO0lBQ2hDO0dBQ0Y7R2lCNk5BLFNBQVN3b0Msc0JBQXNCNS9CLElBQUl3SDtJQUNqQyxHQUFHeEgsYUFBYXdILFFBQVEsT0FBT3hIO0lBQ2xCLElBQVRpb0I7SUFDSixJQUFVLElBQUY5cUMsT0FBT0EsSUFBSTZpQixnQkFBZ0I3aUI7S0FBSzhxQyxTQUFTOXFDLEtBQUs2aUIsUUFBUUEsaUJBQWlCN2lCO0lBQy9FLE9BQU8ycUIsc0JBQXNCOUgsU0FBU3dILFFBQVF5Z0IsVUFBVWpvQjtHQUMxRDtHaUIvTEEsU0FBUzYvQixpQkFBaUJya0QsR0FDeEIsT0FBT3U3QixtQkFBZ0J2N0IsR0FDekI7R2hDK0hBLFNBQVNza0QsWUFBWXI1QyxHQUFHeEc7SUFDdEIsT0FBUUE7O09BQ0EsV0FBV3dHOztPQUNYLFdBQVdBLEVBQUd4Rzs7T0FDZCxXQUFXd0csRUFBR3hHLE1BQUtBOztPQUNuQixXQUFXd0csRUFBR3hHLE1BQUtBLE1BQUtBOztPQUN4QixXQUFXd0csRUFBR3hHLE1BQUtBLE1BQUtBLE1BQUtBOztPQUM3QixXQUFXd0csRUFBR3hHLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBOztPQUNsQyxXQUFXd0csRUFBR3hHLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBOztPQUN2QyxXQUFXd0csRUFBR3hHLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBLE1BQUtBOztJQUVwRCxTQUFTMDNDLElBQU0sT0FBT2x4QyxRQUFRL0wsTUFBTTh5QixtQkFBbUJ2dEIsSUFBSztJQUM1RDAzQyxjQUFjbHhDO0lBQ2QsV0FBV2t4QztHQUNiO0dTN0NBLFNBQVNvSSxvQkFDRCxJQUFGamdELElBQUltZSxxQkFDUixPQUFPbmUsSUFDVDtHVy9OQSxTQUFTa2dELGdCQUFnQnprRCxLQUFLNEI7SUFDNUIsR0FBSW9ZLHVCQUF1QmhhO0tBQWMsT0FBTzJhLDRCQUEwQi9ZO0lBQ3BFLElBQUZnQyxJQUFJbVgsa0JBQWtCL2E7SUFDMUIsR0FBSTRCLE9BQU8sR0FBTWdDLGFBQWMsQ0FBRUEsY0FBYWhDLE1BQUtBLFNBQVVBO0lBQ3ZELElBQUYyQyxJQUFJM0MsV0FBV2dDO0lBQ25CLEdBQUlBLFlBQWE7S0FDZkE7S0FDTSxJQUFGUyxJQUFJVCxTQUFTVztLQUNqQixHQUFJRixPQUFPRSxJQUFJc1UsZ0JBQWlCeFUsVUFBVUU7O0lBRTVDLE9BQU95Vyx1QkFBdUJwWCxHQUFHVztHQUNuQztHTlJBLFNBQVNtZ0QscUJBQXdCLFNBQVM7R1hzSzFDLFNBQVNDO0lBQ1BqakM7R0FDRjtHOEI3SWlDLElBQTdCa2pDO0dBQ0osU0FBU0MsNEJBQTRCeGdDLE1BQ25DLE9BQU91Z0M7R0FDVDtHOUJ3R0EsU0FBU0U7SUFBK0MvbEIsTUFBTWdtQixNQUFNQyxNQUFNQztJQUM5RCxJQUFOMzJCLFFBQVF3USw0QkFBNEJDO0lBQ3hDelEsZUFBZXkyQixNQUFNQyxNQUFNQztJQUMzQixPQUFPMzJCO0dBQ1Q7R3FCakZBLFNBQVM0MkIsa0JBQW1CeDVDLEdBQUduSDtJQUM3QixHQUFJQSxVQUFRQSxRQUFRbUgsVUFDbEJvUDtJQUNGLEdBQUlwUCxZQUFZbkgsT0FBT21ILFdBQVduSDtJQUNsQztHQUNGO0dWcERBLFNBQVM0Z0Qsc0JBQXlCLFNBQVM7R05nRzNDLFNBQVNDLGFBQWF0OUIsS0FBSzlDLEtBQ3pCLEdBQUc4QyxTQUFTOUMsVUFBVSxVQUN0QixTQUNGO0dWbUtBLFNBQVNxZ0MscUJBQXFCMXZCLE9BQzVCLE9BQU9oYiwyQkFDVDtHY3JMQSxTQUFTMnFDLDRCQUE2QnhrQztJQUMzQixJQUFMbkIsT0FBTzBjLGFBQWF2YjtJQUN4QixHQUFHbkIsbUJBQW1CcEIsNkJBQTRCdUM7SUFDbEQ7S0FBSXlrQyxXQUFZNWxDLHdCQUF3QnhmLFlBQWF3ZjtLQUNqRGtkO2NBQ0dsZDtnQkFDRUEsb0JBQWtCQTtZQUN0Qm1COzs7O29CQUlRMUM7a0JBQ0ZtbkM7SUFFWDVoQyxpQkFBaUJrWixjQUFZQTtJQUM3QixPQUFPQTtHQUNUO0dlMUZBLFNBQVMyb0Isa0JBQWtCM2dEO0lBQ25CLElBQUZIO0lBQ0osTUFBT0csUUFBUztLQUNSLElBQUY0SixJQUFJNUo7S0FDUixJQUFXLElBQUZqRCxPQUFPQSxJQUFJNk0sVUFBVTdNLEtBQUs4QyxPQUFPK0osRUFBRTdNO0tBQzVDaUQsSUFBSUE7O0lBRU4sT0FBT0g7R0FDVDtHbEJOQSxTQUFTK2dELG1CQUFtQjlPO0lBQ2pCLElBQUxBLE9BQU83NkIsd0JBQXdCNjZCO0lBQ25DLFNBQVMzUixJQUFJeGxDO0tBQ0gsSUFBSnFnQixNQUFNODJCLHVCQUFxQm4zQztLQUMvQixHQUFHcWdCLEtBQUssT0FBT0E7SUFDakI7SUFDVSxJQUFONmxDO0lBQ0osTUFBSy9PLGFBQVcrTyxXQUFXL087SUFDaEIsSUFBUHIxQixTQUFTMGpCO0lBQ2IsS0FBSTFqQixRQUFRQTtJQUNELElBQVBxa0MsU0FBUzNnQjtJQUNiLEtBQUkyZ0IsUUFBUUQ7SUFFTixJQUFGMzFDLElBQUlpMUI7SUFDUmoxQixJQUFJQSxJQUFFaE4sU0FBU2dOO0lBQ2YyMUMsc0JBQW9CMzFDO0lBRWQsSUFBRjhCLElBQUltekI7SUFDUm56QixJQUFJQSxJQUFFOU8sU0FBUzhPO0lBQ2Y2ekMsdUJBQXFCN3pDO0lBRWIsSUFBSit6QyxNQUFNenJDLCtCQUE4Qm1ILFFBQU9va0M7SUFDL0MsS0FBSUUsS0FBTWxrQztJQUNWLElBQUl0VSxNQUFNdzRDLGNBQ04xSCxTQUFTOXdDO0lBQ2I4d0MsZUFBZW51QztJQUNmbXVDLGdCQUFnQnJzQztJQUNSLElBQUpvaUIsTUFBTWdxQixxQkFBcUJDLFFBQU9udUMsR0FBRThCO0lBQ3hDb2lCLHlCQUEwQjR4QixPQUN4Qno0QyxZQUFZeTRDLE1BREU7SUFHaEI1SSxrQkFBa0JocEI7SUFDVCxJQUFMNnhCLE9BQU8xNEM7SUFDWDA0QztJQUNBQSxpQkFBaUI1SDtJQUNqQjtHQUNGO0drQm1DQSxTQUFTNkgscUJBQXFCOXZDO0lBQzVCLEdBQUlBLFNBQVMrTjtJQUNiLElBQUkvTixNQUFNQSxhQUNOeEgsUUFBUXpJLE1BQU1pUTtJQUNsQnhIO0lBQ0EsSUFBVyxJQUFGN00sT0FBT0EsSUFBSXFVLEtBQUtyVSxLQUFLNk0sRUFBRTdNO0lBQ2hDLE9BQU82TTtHQUNUO0d6QmtMQSxTQUFTdTNDLGdCQUFpQnQ2QyxHQUFLLE9BQU8zSixVQUFVMkosR0FBSTtHV3hOcEQsU0FBU3U2QyxvQkFBb0I1aEMsTUFBUSxTQUFVO0dBWC9DLFNBQVM2aEMsa0JBQWtCN2hDLE1BQ3pCLFNBQ0Y7R0dnTEEsU0FBUzhoQyxrQkFBbUJ6NkMsR0FBR3RKO0lBQUssVUFBU2lzQixpQkFBaUIzaUIsR0FBRXRKO0dBQWdCO0dqQi9NaEYsU0FBU2drRCxtQ0FBc0MsV0FBWTtHR2tPM0QsU0FBU0MsaUJBQWlCMzZDLEdBQUssT0FBTzNKLFdBQVcySixHQUFJO0dlck9yRCxTQUFTNDZDLDhCQUE4QjUvQixLQUFLcUMsU0FBU25DLEtBQUtvQyxTQUFTL1MsS0FDakUsT0FBT3NwQiw2QkFBNkI3WSxLQUFLcUMsU0FBU25DLEtBQUtvQyxTQUFTL1M7R0FDbEU7R3VCdkNlLElBQVhzd0MsYUFBYTNzQztHQUNqQixTQUFTNHNDO0lBQ0wsSUFBSUMsS0FBS2ptRCxZQUVMa21ELFNBQVN2MUIsb0JBQW9CczFCO0lBQ2pDLE9BQU96aUIsZUFBZTBpQixRQUFPSDtHQUNqQztHOUJnQ0EsU0FBU0ksZ0NBQWdDbnlCLFFBQ3ZDLFNBQ0Y7R2NpRUEsU0FBU295Qix1QkFBd0IvcUMsR0FBSyxhQUFhQSxHQUFJO0doQnVSdkQsU0FBU2dyQyxjQUFjM2tDLE1BQU1DLE1BQU1FLE1BQU1DLE1BQ3ZDSixVQUFVQyxTQUFTRSxVQUFVQyxPQUM3QjtHQUNGO0dDNEVBLFNBQVN3a0MsbUJBQW1CbGtDLElBQUdsWCxHQUFFdEo7SUFDL0I7S0FBSW1DLElBQUltZTtLQUNKcWtDO09BQU14aUQ7U0FBdUJtSCxHQUFFbkgsV0FBV3FlLFlBQVl4Z0IsR0FBRXdnQixVQUFTQTtJQUNyRSxJQUFXLElBQUZoaEIsT0FBT0EsSUFBSW1sRCxpQkFBaUJubEQsT0FBSztLQUN4Q2doQixRQUFRaGhCLEtBQUttbEQsU0FBU25sRDtLQUN0QmdoQixRQUFRaGhCLFNBQU9tbEQsU0FBU25sRDtLQUN4QmdoQixRQUFRaGhCLFNBQU9tbEQsU0FBU25sRDtLQUN4QmdoQixRQUFRaGhCLFNBQU9tbEQsU0FBU25sRDs7SUFFMUI7R0FDRjtHQTZCQSxTQUFTb2xELGtCQUFrQnRpRDtJQUN6QmdkO0dBQ0Y7R3dCL2NBLFNBQVN1bEMsMkJBQTJCdmlELEdBQ2xDLFdBQVdBLEdBQ2I7R1J6QkEsU0FBU3dpRDtJQUNBO0tBQUhDO09BQ0NodEMsd0JBQXNCQTtVQUN0QkE7O0lBQ0wsT0FBT2d0Qyw2QkFBNEJBO0dBQ3JDO0cvQm9PQSxTQUFTQyx1QkFBd0IxN0MsR0FBR25ILEdBQUssT0FBT21ILGNBQWNuSCxHQUFHO0dxQnNGakUsU0FBUzhpRCxlQUFlNWlDLElBQ3RCLE9BQU9BLFVBQ1Q7R2hCdFNBLFNBQVM2aUMsNkJBQWdDLFdBQVk7RzRCMEJyRCxTQUFTQyxlQUFnQmwwQixPQUFPenFCLE9BQU80K0M7SUFDckMsR0FBSzUrQyxhQUFlQSxTQUFTeXFCLGtCQUFtQnJQO0lBQ2hEcVAsTUFBTXpxQixhQUFTNCtDO0lBQVE7R0FDekI7R3hCa0VBLFNBQVNDLGlCQUFpQkMsSUFBSUMsSUFBSUMsSUFDaEMsU0FDRjtHUnFhQSxTQUFTQyx3QkFBd0Ivb0MsSUFBSUUsSUFDbkMsT0FBT28xQixxQkFBcUJwMUIsSUFBR0Y7R0FDakM7R2EvZUEsU0FBU2dwQyxjQUFjaGdDLEtBQUs5QyxLQUFLKzRCLE9BQy9CajJCLFNBQVM5QyxPQUFPKzRCLE9BQ2hCLFNBQ0Y7R2I2T0EsU0FBU2dLLGlCQUFpQnhqRCxHQUFFM0MsR0FBRTIwQjtJQUM1QixHQUFJMzBCLFdBQVcyQyxTQUFTbWM7SUFDeEIsSUFBSXdFLFlBQVlxUixVQUNadFIsWUFBWXNSO0lBQ2hCNVYsc0JBQXVCcGMsR0FBRzNDLE9BQU9xakI7SUFDakN0RSxzQkFBdUJwYyxHQUFHM0MsT0FBT3NqQjtJQUNqQztHQUNGO0djMU1BLFNBQVM4aUMscUJBQXFCdnZDO0lBQzVCLEdBQUdBLDRCQUNELE9BQU9BO0dBQ1g7R0cwZEEsU0FBU3d2QyxtQkFBb0IvakMsUUFBT3RpQjtJQUNsQztLQUFJa1csT0FBUWxXLGdCQUFlQSxnQkFBZUEsZUFBYUE7S0FDbkQyQyxJQUFJdzRCLHFCQUFxQmpsQjtJQUM3Qnk0QixlQUFlcnNCLFFBQU8zZjtJQUN0QjtHQUNGO0dZM2hCQSxTQUFTMmpELGtCQUFrQnAyQyxLQUFJcEc7SUFDN0IsSUFBSTdHLElBQUk2RyxVQUNKaEgsUUFBUXNCLE1BQU1uQjtJQUNsQkgsT0FBT29OO0lBQ1AsSUFBVSxJQUFGbFEsT0FBT0EsSUFBSWlELEdBQUdqRCxLQUFNOEMsRUFBRTlDLEtBQUs4SixFQUFFOUo7SUFDckMsT0FBTzhDO0dBQ1Q7R1p1SUEsU0FBU3lqRCxxQkFBcUJqa0M7SUFDbkIsSUFBTEwsT0FBT0YsaUJBQWlCTztJQUM1QixPQUFPTDtHQUNUO0dnQjlKQSxTQUFTdWtDLDhCQUErQnpoQyxTQUFTRCxLQUFLRyxTQUFTRCxLQUFLM1E7SUFDbEUsT0FBTzJTLGlDQUFpQ2xDLEtBQUlDLFNBQVNDLEtBQUtDLFNBQVE1UTtHQUNwRTtHN0JNQSxTQUFTb3lDO0lBQ1B2dEM7O0dBQ0Y7R0dzQkEsU0FBU3d0Qyx3QkFBeUI1OEMsR0FBR3N0QyxNQUFNdVA7SUFDekMsS0FBSzlrQyxTQUFTL1gsR0FBSTtLQUNoQixHQUFJZ1ksTUFBTWhZLElBQUksT0FBT3NSO0tBQ3JCLE9BQU9BLHdCQUEwQnRSOztJQUUxQixJQUFMakosT0FBUWlKLGNBQVVBLE9BQU1vZSxlQUFhcGU7SUFDekMsR0FBR2pKLE1BQU1pSixNQUFLQTtJQUNOLElBQUo0ZTtJQUNKLEdBQUk1ZTtLQUFRO1lBQ0hBO0tBQU8sTUFDUEEsU0FBUzRlLGFBQWMsQ0FBRTVlLFFBQVE0ZTs7S0FDbkMsTUFDRTVlLE9BQVEsQ0FBRUEsUUFBUTRlO0lBRTNCLElBQUlrK0IsV0FBV2wrQixvQkFDWG0rQjtJQUNKLEdBQUlobUQ7S0FBTWdtRDs7S0FDTCxPQUNJRjs7UUFDWUUsZ0JBQWdCOztRQUNoQkEsZ0JBQWdCO2dCQUMxQjs7SUFHWCxHQUFJelAsYUFBYUEsVUFBVztLQUVsQixJQUFKMFAsTUFBTTNtRCxZQUFXaTNDO0tBQ3JCdHRDLElBQUkzSixXQUFXMkosSUFBSWc5QyxPQUFPQTs7SUFFbEIsSUFBTkMsUUFBUWo5QztJQUNaLEdBQUdzdEMsVUFBVTtLQUNILElBQUp4YyxNQUFNbXNCO0tBQ1YsR0FBR25zQjtNQUNEbXNCLGVBQWU5dkMsZ0JBQWdCbWdDO1NBRTVCO01BQ00sSUFBTGh1QixPQUFPd1IsVUFBTXdjO01BQ2pCLEdBQUcyUCxlQUFlMzlCO09BQ2hCMjlCLFNBQVM5dkMsZ0JBQWdCbVMsT0FBTzI5Qjs7T0FFaENBLFFBQVFBLGdCQUFlMzlCOzs7SUFHN0IsT0FBT2hPO2FBQXlCeXJDLGtCQUFrQkUsY0FBY0gsV0FBV2wrQjtHQUM3RTtHUWhIQSxTQUFTcytCLCtCQUErQkMsT0FBT0MsZUFDN0MsU0FDRjtHVnVXQSxTQUFTQyxrQ0FBa0M1TCxPQUFPdjVDO0lBQ2hEO0tBQ0UsSUFBSTJaLFdBQVd2WCxNQUFNbTNDLFlBQ2pCbG5DLE1BQU1sVSxTQUFTZ0Usa0JBQWtCbzNDO0tBQ3JDNS9CLFVBQVVwZTtLQUNWLElBQVcsSUFBRnlDLE9BQU9BLElBQUlxVSxLQUFLclUsS0FBSzJiLEtBQUszYixTQUFPbUUsVUFBVW5FO0tBQ3BELE9BQU93bUIsY0FBY3hrQixHQUFHMlosTUFMbkI7R0FPVDtHTXRMQSxTQUFTeXJDLG1CQUFtQnhwRDtJQUNqQixJQUFMK0csT0FBT3NiLGtCQUFrQnJpQjtJQUM3QixLQUFLK0c7S0FDSG1iO0lBRUYsT0FBT25iLHFCQUFxQkE7R0FDOUI7R1ByS0EsU0FBUzBpRCxzQkFBdUJ0ekI7SUFBUyxPQUFPdmI7R0FBb0M7R0R5UXBGLFNBQVM4dUMsOEJBQThCLFNBQVE7R0FsSS9DLFNBQVNDLGNBQWV6a0QsR0FDdEIsT0FBTzRzQixVQUNUO0dpQmdVQSxTQUFTODNCLGFBQWEza0MsSUFBSTVJLEdBQ3hCNEksUUFBUTVJLElBQ1IsU0FDRjtHYnBUQSxTQUFTd3RDLGdCQUFpQjM5QztJQUN4QixHQUFJK1gsU0FBVS9YLEdBQUk7S0FDUixJQUFKNDNDLFVBQVM1M0M7S0FDYkEsSUFBSTNKLFNBQVMySjtLQUNiLElBQUk5SixJQUFJRyxXQUFZMkosSUFDaEI5SCxJQUFJOEgsSUFBSTlKO0tBQ1osR0FBSTBoRCxJQUFLLENBQUUxaEQsTUFBS0EsR0FBR2dDLE1BQUtBO0tBQ3hCLFdBQVdBLEdBQUdoQzs7SUFFaEIsR0FBSThoQixNQUFPaFksSUFBSSxXQUFXOGYsS0FBS0E7SUFDL0IsZUFBYTlmLEdBQUdBO0dBQ2xCO0dXbEtBLFNBQVM0OUMsY0FDUCw0Q0FDRjtHWHdNQSxTQUFTQyxtQkFBb0I3OUMsR0FBR3RKO0lBQzlCLEdBQUlzSixNQUFNdEosR0FBRztJQUNiLEdBQUlzSixJQUFJdEosR0FBRztJQUNYLEdBQUlzSixJQUFJdEosR0FBRztJQUNYLEdBQUlzSixNQUFNQSxHQUFHO0lBQ2IsR0FBSXRKLE1BQU1BLEdBQUc7SUFDYjtHQUNGO0dQeUdBLFNBQVNvbkQsa0JBQWtCamxELEdBQUUzQyxHQUFFbXJDLEtBQzdCcnJCLG1DQUNGO0c0QjNVQSxTQUFTK25DLGtCQUFrQkMsUUFBUUMsS0FBS2pqQixLQUFLaHNCO0lBRTNDO0tBQUlrdkM7S0FRQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FHQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FDQUM7SUFHSixTQUFTQyxJQUFJNWdEO0tBQ0wsSUFBRm5ILElBQUlvVyx1QkFBdUJqUDtLQUMvQjZrQyxrQkFBa0Joc0MsTUFBTWdjLHNCQUFzQmhjO0lBQ2hEO0lBRUEsU0FBU2dvRCxXQUFXQyxPQUFPOW9EO0tBRWpCLElBQUp5QixNQUFNMlcsd0JBQXdCMHdDO0tBQ2xDLEdBQUlybkQsa0JBQ0Y7S0FDRixPQUFPQSxrQkFBa0J6QjtJQUMzQjtJQUVBLFNBQVMrb0QsWUFBWWgwQyxPQUFPaTBDO0tBRTFCLElBQUlDLE9BQU83aEM7S0FDWCxHQUFJNGhDLGVBQWUxbUQsTUFBTztNQUN4QjJtRCxRQUFRSixXQUFXN0MsT0FBTzJDLGtCQUFrQks7TUFDNUMsVUFBV0E7T0FDVDVoQyxZQUFZNGhDO3FCQUNFQTtPQUNkNWhDLE9BQU80aEM7Y0FDQUEsa0JBQWtCNXVDO09BQ3pCZ04sT0FBTzlRLHVCQUF1QjB5Qzs7T0FFOUI1aEM7TUFDRndoQyxlQUFlN3pDLDBCQUEwQmswQyxjQUFjN2hDOztTQUNsRDtNQUNMNmhDLFFBQVFKLFdBQVc3QyxPQUFPMEMsa0JBQWtCTTtNQUM1Q0osZUFBZTd6QywwQkFBMEJrMEM7O0lBRTdDO0lBRUEsS0FBS2pELGFBQWM7S0FDakJBLGdCQUFnQmh6QixlQUFnQmd6QixPQUFPa0M7S0FDdkNsQyxnQkFBZ0JoekIsZUFBZ0JnekIsT0FBT29DO0tBQ3ZDcEMsZUFBZ0JoekIsZUFBZ0JnekIsT0FBT3lDO0tBQ3ZDekMsZ0JBQWdCaHpCLGVBQWdCZ3pCLE9BQU9xQztLQUN2Q3JDLGVBQWdCaHpCLGVBQWdCZ3pCLE9BQU93QztLQUN2Q3hDLGFBQWdCaHpCLGVBQWdCZ3pCLE9BQU9pQztLQUN2Q2pDLGFBQWdCaHpCLGVBQWdCZ3pCLE9BQU9nQztLQUN2Q2hDLGdCQUFnQmh6QixlQUFnQmd6QixPQUFPc0M7S0FDdkN0QyxlQUFnQmh6QixlQUFnQmd6QixPQUFPbUM7O0lBR3pDO0tBQUloc0M7S0FBU3hiO0tBQUd1b0Q7S0FBSUM7S0FBSUM7S0FHcEJDLEtBQUtwRCxJQUFJMEI7S0FDVDV5QyxRQUFRa3hDLElBQUkyQjtLQUNaMEIsVUFBVXJELElBQUk0QjtJQUVsQjtJQUFLO0tBQVM7S0FDUCxPQUFPN2tCOztRQUVWanVCLFdBQ0F1MEM7O1FBSUEzb0QsSUFBSXFsRCxjQUFjanhDO1FBQ2xCLEdBQUlwVSxPQUFRLENBQUVxaUMsTUFBTXVqQixRQUFRO1FBQzVCLEdBQUlOLElBQUltQixvQkFBcUIsQ0FBRXBrQixNQUFNb2pCLFdBQVc7UUFDaERqcUMsTUFBTXFxQztRQUNOOztRQUlBLEdBQUl4dkMsZUFBZTFVLE1BQU87U0FDeEIyakQsSUFBSW1CLGlCQUFpQnBCLE9BQU8rQixrQkFBa0Ivd0M7U0FDOUNpdkMsSUFBSW9CLFlBQVlyd0M7O1lBQ1g7U0FDTGl2QyxJQUFJbUIsaUJBQWlCcEIsT0FBTzhCLGtCQUFrQjl3QztTQUM5Q2l2QyxJQUFJb0I7O1FBRU4sR0FBSXRqQyxtQkFBbUJnbEMsWUFBYWgwQyxPQUFPaUM7O1FBSTNDa3lDLEtBQUtsRCxjQUFjanhDO1FBQ25CbzBDLEtBQUtELEtBQUtqRCxJQUFJbUI7UUFDZDtVQUFJOEIsV0FBV0MsV0FBV0EsTUFBTW5ELE9BQU91QzthQUNuQ3ZDLGFBQWFtRCxPQUFPbEQsSUFBSW1CLGVBQWdCLENBQzFDcGtCLE1BQU1xakIsT0FBTztRQUVmNkMsS0FBS2xELGNBQWNqeEM7UUFDbkJvMEMsS0FBS0QsS0FBS2pELElBQUltQjtRQUNkO1VBQUk4QixXQUFXQyxXQUFXQSxNQUFNbkQsT0FBT3VDO2FBQ25DdkMsYUFBYW1ELE9BQU9sRCxJQUFJbUIsZUFBZ0I7U0FDMUN6bUQsSUFBSXFsRCxhQUFhbUQ7U0FDakJubUIsTUFBTXVqQjtTQUFROztRQUVoQixHQUFJK0MsYUFBYyxDQUNoQm50QyxNQUFNMHFDLHFCQUNOOztRQUtGLEdBQUl5QyxZQUFhO1NBQ2ZBO1NBQ0EsT0FBUztVQUNQRixTQUFTbkQsSUFBSWEsYUFBYXVDO1VBQzFCSCxLQUFLbEQsY0FBY29EO1VBQ25CRCxLQUFLRCxLQUFLaEQ7VUFDVjtZQUFJZ0QsV0FBV0MsV0FBV0EsTUFBTW5ELE9BQU91QztlQUNuQ3ZDLGFBQWFtRCxPQUFPakQsUUFBUztXQUMvQixHQUFJbmlDLG1CQUNGNmtDLDZCQUE2QlE7V0FDL0JwbUIsTUFBTXNqQjtXQUFlOztjQUNoQjtXQUNMLEdBQUl2aUMsbUJBQ0Y2a0MsMEJBQTBCUTtXQUM1QixHQUFJQyxNQUFNcEQsSUFBSWtCLGVBQWdCO1lBQzVCLEdBQUlwakMsbUJBQ0Y2a0M7WUFDRixPQUFPbkM7O1dBR1Q0Qzs7OztZQUdDO1NBQ0wsR0FBSXBELElBQUltQixxQkFDTixPQUFPWDtTQUNULEdBQUkxaUMsbUJBQ0Y2a0M7U0FDRjNDLElBQUltQjtTQUNKcGtCLE1BQU1takI7U0FBTTs7O1FBSWRGLElBQUltQixzQkFDSixHQUFJa0MsYUFBYUE7O1FBR2pCLEdBQUl2bEM7U0FDRjZrQyxlQUFlN3pDLDhCQUE4Qml4QyxhQUFhbUQ7UUFDNURwMEMsUUFBUWl4QyxhQUFhbUQ7UUFDckJFO1FBQ0EsR0FBSUEsTUFBTXBELElBQUlpQixlQUFnQixDQUM1Qi9xQyxNQUFNdXFDLGVBQ047O1FBS0ZULElBQUlhLGFBQWF1QyxVQUFVdDBDO1FBQzNCa3hDLElBQUljLGFBQWFzQyxVQUFVcEQsSUFBSW9CO1FBQy9CcEIsSUFBSWUsc0JBQXNCcUMsVUFBVXBELElBQUlxQjtRQUN4Q3JCLElBQUlnQixvQkFBb0JvQyxVQUFVcEQsSUFBSXNCO1FBQ3RDdmtCLE1BQU1takI7UUFDTjs7UUFHQSxHQUFJcGlDLG1CQUNGNmtDLGVBQWU3ekMsOEJBQThCcFU7UUFDekMsSUFBRjhiLElBQUl1cEMsV0FBV3JsRDtRQUNuQnNsRCxJQUFJdUIsV0FBVzZCO1FBQ2ZwRCxJQUFJeUIsbUJBQW1CL21EO1FBQ3ZCc2xELElBQUl3QixnQkFBZ0JockM7UUFDcEI0c0MsS0FBS0EsS0FBSzVzQztRQUNWQSxJQUFJdXBDLFdBQVdybEQ7UUFDZnlvRCxTQUFTbkQsSUFBSWEsYUFBYXVDO1FBQzFCSCxLQUFLbEQsY0FBY3ZwQztRQUNuQjBzQyxLQUFLRCxLQUFLRTtRQUNWO1VBQUlGLFdBQVdDLFdBQVdBLE1BQU1uRCxPQUFPdUM7YUFDbkN2QyxhQUFhbUQsT0FBT0M7U0FDdEJyMEMsUUFBUWl4QyxhQUFhbUQ7O1NBRXJCcDBDLFFBQVFpeEMsYUFBYXZwQztRQUN2QixHQUFJNHNDLE1BQU1wRCxJQUFJaUIsZUFBZ0IsQ0FDNUIvcUMsTUFBTXdxQyxlQUNOOztRQUtGeHFDLE1BQU15cUMseUJBQ047O1FBR0FYLElBQUlhLGFBQWF1QyxVQUFVdDBDO1FBQzNCa3hDLElBQUljLGFBQWFzQyxVQUFVcnlDO1FBQ25CLElBQUp1eUMsTUFBTXRELElBQUl1QjtRQUNkdkIsSUFBSWdCLG9CQUFvQm9DLFVBQVVwRCxJQUFJZ0Isb0JBQW9Cc0M7UUFDMUQsR0FBSUYsS0FBS0U7U0FFUHRELElBQUllLHNCQUFzQnFDLFVBQVVwRCxJQUFJZ0Isb0JBQW9Cc0M7UUFFOUR2bUIsTUFBTW1qQjtRQUFNO2dCQUdaLE9BQU9NOztJQUlYUixJQUFJMEIsVUFBVTBCO0lBQ2RwRCxJQUFJMkIsYUFBYTd5QztJQUNqQmt4QyxJQUFJNEIsZUFBZXlCO0lBQ25CLE9BQU9udEM7R0FDVDtHdkJoS0EsU0FBU3F0Qyx3QkFBd0I3b0MsTUFDL0IsU0FDRjtHY2xHQSxTQUFTOG9DLHNCQUF5QixTQUFTO0dVWDNDLFNBQVNDLGtCQUFtQjFoRCxHQUFHdEo7SUFDN0IsR0FBSUEsTUFBUSxDQUFFc0osUUFBUXRKLE9BQU87SUFDN0IsVUFBV0EsaUJBQWlCLENBQUVzSixRQUFRdEosR0FBRztJQUNuQyxJQUFGUixJQUFJUTtJQUFVLE1BQU9SLEtBQUs4SixFQUFFOUosS0FBS1EsRUFBRVI7SUFBSTtHQUM3QztHR2tFQSxTQUFTeXJELGdCQUFnQmg2QixPQUFPck8sS0FBSy9PLEtBQUs0RjtJQUN4QyxJQUFVLElBQUZqYSxPQUFPQSxJQUFJcVUsS0FBS3JVLEtBQ3RCeXhCLE1BQU1yTyxNQUFJcGpCLFNBQU9pYTtJQUVuQjtHQUNGO0d0QitKQSxTQUFTeXhDLGVBQWU5dEQsTUFBTTJnQztJQUNuQixJQUFMNTVCLE9BQU9zYixrQkFBa0JyaUI7SUFDN0IrRyxrQkFBa0JBLFdBQVU0NUI7SUFDNUI7R0FDRjtHY2pQQSxTQUFTb3RCLG9CQUFvQnp1QyxJQUFJQyxJQUFJQyxJQUFJQyxJQUFJaEo7SUFDM0MsT0FBT3NwQiw2QkFBNkJ6Z0IsSUFBR0MsSUFBR0MsSUFBR0MsSUFBR2hKO0dBQ2xEO0d4QnlnQkEsU0FBU3UzQyxxQkFBcUIxdUMsSUFBSUU7SUFBTSxXQUFTa3pCLGtCQUFrQnB6QixJQUFJRTtHQUFLO0dBeUM1RSxTQUFTeXVDLHVCQUF1QjN1QyxJQUFJRSxJQUNsQyxPQUFPK2pCLG9CQUFvQi9qQixJQUFJRjtHQUNqQztHY3RMQSxTQUFTNHVDLG1CQUFtQjUxQztJQUMxQjtLQUFJdlQsSUFBSW1lO0tBQ0o3USxJQUFJaUc7S0FDSi9ILElBQUkrSDtLQUNKOEssS0FBS3JlLDBCQUEwQndMLEdBQUU4QjtJQUNyQyxJQUFTLElBQURqUSxPQUFJQSxJQUFFaVEsR0FBRWpRO0tBQUksSUFDVCxJQUFEd08sT0FBSUEsSUFBRUwsR0FBRUssSUFBSTtNQUNsQixJQUFJbEYsSUFBSTRNLElBQUlsVyxPQUFLd08sUUFDYjVMLElBQUk1QyxLQUFHbU8sU0FBUUs7TUFDbkIsR0FBR2xGLFNBQVM7T0FDVjBYLFFBQVFwZTtPQUNSb2UsUUFBUXBlO09BQ1JvZSxRQUFRcGU7T0FDUm9lLFFBQVFwZTs7VUFDSDtPQUNMb2UsUUFBUXBlLFNBQVMwRztPQUNqQjBYLFFBQVFwZSxTQUFTMEc7T0FDakIwWCxRQUFRcGUsU0FBUzBHO09BQ2pCMFgsUUFBUXBlOzs7SUFJZCxPQUFPb2U7R0FDVDtHdUJyYUEsU0FBUytxQywyQkFBMkI5eEM7SUFDbENBLElBQUlBLEtBQU1BO0lBQ1ZBLEtBQUtBLG1CQUFvQkE7SUFDekIsUUFBU0EsS0FBS0E7R0FDaEI7R3BCb05BLFNBQVMreEMsMkJBQTJCMXBDLFFBQU90Z0I7SUFDaEMsSUFBTGlnQixPQUFPRixpQkFBaUJPO0lBQzVCTCx1QkFBeUJ0ZixHQUFJWCxFQUFFVyxHQUFoQjtJQUNmO0dBQ0Y7R1B5R0EsU0FBU3NwRCx1QkFBd0JydUQ7SUFDL0I7S0FBSUEsY0FBZUEsbUJBQWtCbWIsdUJBQXVCbmIsUUFBTUE7S0FDOUQrRyxPQUFPc2Isa0JBQWtCcmlCO0lBQzdCLEdBQUcrRyxtQkFBbUJBLFdBQVk7S0FDaEM7TUFBSW9aLE9BQU9wWixpQkFBaUJBO01BQ3hCMFAsTUFBTzBKO01BQ1BOLFVBQVVqQixXQUFXbkk7S0FDekIwSixhQUFZTixRQUFNcEo7S0FDbEIsT0FBTzhtQixxQkFBcUIxZDs7SUFFOUJiLHdCQUF3QnhFLHVCQUF1QnhhO0dBQ2pEO0dMNUlBLFNBQVNzdUQsaUJBQWlCcGlELEdBQUssT0FBT0EsRUFBRztHRjZKekMsU0FBU3FpRDtJQUNLLElBQVI3ekMsVUFBVUM7SUFDZCxHQUFHRCxXQUFXQTtLQUNaQTs7Z0JBQTBDOUgsS0FBSzQ3QztRQUM3Qy9lLDhCQUE4Qjc4QjtRQUM5QjhIO09BRjhCO1lBSzFCQztLQUNOQTs7Z0JBQThDMHVDO1FBQzVDLEdBQUdBLGFBQ0Q1Wiw4QkFBOEI0WjtPQUZHO0dBTXpDO0dBQ0FrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztZQ3pIQUMsV0FBV0MsR0FBRUMsR0FBSSxPQUFBLGFBQUpBLEdBQUZELEdBQWlCOztJQUM1QkU7SUFDQUM7bUNBRkFKLFlBRUFJLEtBREFEOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHQzRCVTs7Ozs7Ozs7SUF2Q1ZFO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF1Q1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFHQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQUM7SUFVQUM7SUFJQUM7SUFJQ0M7SUFTREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFFQ0M7SUFTREM7SUFJQUM7SUFJQUM7SUFVQUM7SUFJQUM7SUFJQ0M7SUFVREM7SUFDQUM7SUFFQUM7SUFJQUM7SUFJQ0M7SUFRREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMENEaG1HO0lBWUEyYjtJQUNBRTtJQU9Bblg7SUFDQUU7SUFDQXFoRztJQUlBQzs7OztHQWdCRzs7Ozs7O09BamlCTDl1RztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7OztPQTBKRWlrRztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQU1BQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUdBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVBQztPQVVBQztPQUlBQztPQUlDQztPQVNEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUVDQztPQVNEQztPQUlBQztPQUlBQztPQVVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVFEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUNBQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQ0RobUc7T0FZQTJiO09BQ0FFO09BT0FuWDtPQUNBRTtPQUNBcWhHO09BSUFDOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SyxXO0s7O1EsUTtzQztRO087SztPOztLLE07SyxNO0ssWTtLLE07SyxNO0ssUTtLLE07OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLE87Ozs7O0k7SyxJLE87Ozs7Ozs7OztHLEk7OztJOzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLHNCO0cscUIsc0I7RyxzQixzQjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJOzt5QixPOzt5QixPOzt5QixPOzs7Ozs7SyxPOztJO0ksTztHOztJLFk7Z0I7O0k7Ozs7MkI7bUM7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQixnQjtJLE87Rzs7SSxVO0k7SztlOzs7aUI7OzttQjttQjtJO0k7SSxPO0c7O0ksVTs7SztLOztPLFc7TSxJLEksMkI7Ozs7OztZO1k7Vzs2QjtTLE87UTtTLE07Uzs7OztZOztZOztZOztRLE87OztzQyxPO007TSxJOztJO0k7Rzs7STs7OztLO0ksTzs7O0ksSSxnQjs7OzJCLE87OztJO0ssaUI7SztPOzs7OztLO0s7Ozs7O007Ozs7OztJO0c7OztLLFk7O0s7STtJLFU7SSxPLFc7Rzs7STs7SyxnRDtLOzRDOztLLE07STtJLFk7SSxJLFU7Ozs7O0s7O0k7Rzs7O0ssWTs7Ozt5Qzs7Szs7UTtLLE87STtJO0s7TSxNO00sTTs7OzsyQjs7O2M7STs7OztLO087Ozs7dUM7SSxXO0c7O0k7Z0I7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7eUIsTSw0QztJLE87Rzs2QixPLG1DOztJOzs7a0MsTztJOzs7eUMsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07O0c7O0ksUztJOztJLE07Rzs7eUIsbUQ7SSxPO0c7Rzt5QixrQixvQjtJLGE7STt5Qix3QjtJLE87Rzs7SSxTO0ksNEI7SSxXO0c7O0ksWTtJLGtDLE07STs7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7Rzs7SSxZOztJLE87OztJO0ssTTs7bUI7STs7Szs7O0k7Rzs7STtJOzs7Z0I7SyxnQyxJO0ssWTs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7STtnQixXOzs7TSxNO0s7OztNLEk7TTs7Ozs7Rzs7STtJO2UsVzs7aUI7Syw4Qjs7Rzs7STtJO21CLFc7O00sTTtLOzs7TTtNOzs7OztHOztJO0k7OztnQjtLLGtDLE87SyxXOzs7Rzs7STtJOzs7TSxHO087UTs7Ozs7OztLLFc7O0c7O0ksUSxPOztJLE87RztHOztJOztLOztJO2lCO0ssRyxxQztLLEk7O0c7O0k7STtpQjtLLEssNEI7SyxJOztHOztJO0s7OztTLFk7O1M7UTtNLFc7Szs7Ozs0Qjs7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7TSxXLGM7TTs7Ozs7Rzs0QixPLHNDOztJLEs7SyxHLDRCO0ssTTs7O0k7aUIsTTtLOzs7TSxXO0ssRyxnQzs7O0c7O0k7SztLO007TyxPO08sTTtNLEcsNkI7TSxLO087TyxPOzs7O0k7O0k7aUIsTTtLOzs7TSxvQjtLLEcsZ0M7OztHOztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7STs7Yzs7Rzs7SSxVOztLO0ssTztJO0k7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7OztHOztJO0ssSTtLLE87STtLLFE7SyxZLE87Szs7Rzs7STtJO0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOztHOztJLGM7eUIsTyx1QjtJLCtCLDZCO0k7aUMsTyxnQzs7O0c7b0Isd0M7O0k7Rzs7SSxvQjtHOztJLFk7Rzs7STs7Ozs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7OztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STtJLHFDO0c7O0k7SSxxQztHOztJOztHOztJO0kscUM7Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO1c7dUI7O0s7Ozs7NEI7OztHOztJO0k7eUM7O00sTTtLLFc7UTtNLEk7Ozs7Rzs7STtJO0ssSTs7OztNO087Uzs7Ozs7TyxPO00sTzs7SztNLFM7c0I7TTs7OztHOztJO0k7dUM7SyxXOzs7Ozs7O007Ozs7O087O1MsVztRLFc7Ozs7O1EsSTs7OztNO087TyxZOzs7OztLLEk7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7O0ssTTtLO0s7Ozs7TSxXO007TTs7Ozs7STtLO0ssTztJO0k7Rzs7STs7SztLLE87O0c7O0k7OztJLE87Rzs7STs7O0ksTztHOztJLHdCOzs7O007TTs7Ozs7O0c7O0ksd0I7Ozs7TSx5QjtNOzs7Ozs7Rzs7STs7OztNO007TTs7Ozs7O0c7O0k7O0s7YztLOzs7STtJLE87Rzs7STtJO0k7RztHOzs7Ozs7Ozs7Ozs7O0k7OztLLE87SyxXO2tCLHFDO0k7UztJO0k7Ozs7TTtNOzs7OztJOzs7O007TTs7Ozs7STs7OztNO08sTztPLE87Ozs7UTtTLE87Z0I7UztTO1M7Uzs7Ozs7UztTOztTOztvQjtTLE87Ozs7VSxXO2E7VyxXO1csRztZO2E7YTthOzs7OztzQjs7Ozs7OztRO1E7Ozs7O007Ozs7O0k7OztHOztJOzs7OzswQixPLHFDO0k7SyxRO0s7STtLO2lCO0sscUI7Ozs7O0ksTztHOztJO0ksYztrQjtJO0s7Ozs7SyxPO0ksTztHOztJO0ssTTtLO087Ozs7O0ksVztHOztJOzs7Ozs7USxXOztRLFc7Z0IsVzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O0ssa0I7SyxPOztJLG9CO0ksTztHOztJOztNO08sTztjOzs7Ozs7O0ksVztJLE87RztHO0k7STs4QixxQjswQiw0Qjs7STs7Ozs7O3VCLE07O0k7RztHOztJO0ssWTs7OztJO0s7TTs7TTs7Ozs2QixPOzs7O0k7O0s7OztTO1U7Vzs7VTs7OztpQyxPOzs7Ozs7O0k7STtJO0c7RztJO0k7Ozs7O0c7STs7TyxJLEksTzs7Ozs7O08sVztPO1E7UyxPO1MsYzs7O087O087ZTs7Rzs7STs7SztLOzs7Ozs7O0k7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TztROzs7Ozs7Ozs7O087O1EsZTs7Ozs7Ozs7Ozs7TztPO1E7Ozs7OztNOzs7O1E7OztVO1E7Ozs7Ozs7Ozs7OztLLE87O0c7O0k7STs7SztLLE8sZ0M7STtJO0ssbUI7SyxXOzs7Ozs7TztROzs7Ozs7Ozs7O0k7O0s7OEI7bUQ7SyxPOzs7Ozs7OztJO0k7SSxPOzs7STtJLE87Rzs7SSxZO2dCLE87O0k7SSxPO0c7RyxJLGlCOztJOzs7SyxJLGtCOzs7Ozs7SyxZOzs7Ozs4Qjs7O0c7O0ksZ0I7STtnQjs7O0ssZTtLOzs7O00sTztNLE87SyxXO0k7SSxPO0c7O0ksWTtJO0c7RztzQixpQjtHO0ksTTtJLE07c0IsaUI7RztJLE07SSxNO0ksWTs7STs7Ozs7O3lCOzBEOzBEOzBEOzBEOzs7Ozs7OzBEOzsyRDsyRDsyRDsyRDs7Ozs7TTs7Szs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7Ozs7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztHOztJO0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztLLHVCO0ssTzs7SSx5QjtJLE87RztHLEk7O0k7Ozs7Ozs7OztJOztPOztJLE87Rzs7STtLO007UTs7O1M7VTtVLE87UyxPO2tCO1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOztlLE07O0c7O0k7Szs7OztNO007TTtNO0ssTzs7STs7Ozs7O0s7SztJLE87Rzs7O0ksRztLO0k7Ozs7STs2QztJOztLLE87Szt5Qjs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztNLEk7SyxpQjs7OztLLE87OztLOzs7TSxNO00sVTtLLE87OztLOzs7OztNLE07Szs7OztLLE87O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxPO0s7SyxPO0k7O0ssTzs7O2U7dUM7OztlLE87Ozs7O21COzs7Ozs7Ozs7OzBCO2UsTztjOzs7STs7SyxPOzs7ZTs7NEI7ZTtjOzs7STtnQywyQjs7O007OztRLFc7Ozs7OztNO0s7SyxPO0k7O0ssSSxVLHdCOzs7NEI7OztJOztLLFU7O007TSxXO0s7SyxlO0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SztLLE87O3NDLE8sNkI7OztJOztLLFU7dUI7SyxPO0k7OzBCLE8sbUIsdUI7SyxPO0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNOzhCLE8sd0I7UyxPO1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87OzttQjtrQjs7O1E7O1MsUTs7VTtVLE87UztTO1M7UTsyQixpRDs7UyxRLG1COzRCLE8sMkI7UztTO1E7O1MsSSxVLDRCOzs7O1UsUTtVO1U7O1E7O1M7UyxjO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSwwQjtJLE87RztzQixTO0c7O0ksOEI7SSxPO0c7RztJO00sdUI7STtNO1E7O0k7VztjOztJLE87Rzt3QixTOzs0QixPLHlDO3NCLE8sa0M7MEIsc0I7Rzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLHlDOztTO1E7O1M7OztVLE07UztROztTO1E7O1M7UTs7UyxVO1M7UTtROzs7O1MsVTtTLGtCO1M7VSxTLFc7OztVLEksYTs7OztXLEksWTs7O1ksTTs7Vzs7VSxhOzs7WSxNOzs7OztXLFU7VyxJLFk7OztZLE07O1c7O2M7Ozs7O1csSSxjOzs7WSxNOztXOztVLE07UztTLGE7OztROztTLEk7Ozs7O1U7O1csTTtXLE07VTtVLE87O1M7UTs7UyxJOzs7Ozs7VTs7UztROztTO1UsYztVOzs7Ozs7MEM7VTtXLGM7Vzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7NEIsMEI7O0k7SyxNOzs7Szs7ZTs7Ozs7O0k7SSxPO0c7O3lCLE8seUI7STtJO0ssTTs7STtHOztJO0k7SyxNOztJO0c7O0k7O0s7O00sZ0I7OztLO0k7SSxZOztJO0c7O0k7SyxNOzs7Szs7O0k7STs7eUIsaUM7Szs7O0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxRO0ksYzs7Ozs7Ozs7b0IsWTt1QixZOztJLE87a0I7O0c7O0ksVzs7SyxPLGtCO21COztJO0ksTztHOztJO0s7TSxNO00sTTs7Ozs7Ozs7SSxpQjtHO0csVzs7SSxNO0c7Rzs7SSxtQjtLLE07STtJOzs7O0c7dUIsMkM7O0k7Rzs7STs7SyxTO0s7SyxVO0ssTztJO0ksTztHOztJO2M7STs7O0c7O0ksbUI7SyxNOztvQixPLHdDO0k7SyxXO2lCOzs7OztVOzs7OztHOztJLG1CO0ssTTs7O0ssUztZO007SztNLFE7TSxVOztlOztJO0k7OztHO3lCLHdCOztJLG1CO0ssTTtJO2M7O0c7O0ksTyxrQjtHO0csYTs7STs7OztjO3VCLG1COztHO0csZ0I7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJLG1CO0ssTTtJOzs7O2lCOzs7TSxJLDBCOztLOzs7OztNLE87OztHOztJLG1CO0ssTTtJOzs7O087USxNO2M7OztNLEksMEI7O0s7Ozs7O0ssZTtLLE87O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLHNCO0ksVTtJLE87Rzs7STtHO0c7STtJOztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJO0k7VTtJO1U7SSx1QjtJLHdCO0ksdUI7SSx5QjtJLDJCO0ksMkI7SSw2QjtJLHdCO0ksdUI7STtJO0k7STtJOzs7Ozs7Ozs7O0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7O00sb0I7TSxtQjtNOzs7Ozs7O0c7RyxJLHlCLG1COztJOztPOztPO2U7O0c7RztJOzs7UTs7Ozs7O087Ozs7STt1QiwwQztHO0k7OztROzs7Tzs7OztJO3lCLE8sc0M7O0k7O087O087O087ZTs7Rzs7STs7Ozs7Ozs7O0c7O0k7O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7O007TTtLOztJO0ssTSxXO0ssTSxXO0ksTyxXO0c7O0k7SSxPO0c7O0ksWSxPO0k7SSxPO0c7O0k7SyxNO0ssVTtJO0s7OztTO1U7VSxROzs7O2U7bUI7O1M7UTtNLEs7SztNOztPO08sUTs7Ozs7Vzs7Ozs7OztHO0c7O0k7eUM7O2dCO0kscUI7STtHO0c7O0k7Rzs7STtJLGtCO0k7SyxlO0s7OztHO0csSSxtQjs7STs7O0c7OztLO0s7TSxXO007TTtNLFU7TTs7Ozs7b0I7O087OztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SztLO0ksVztHO0c7MEIsUSw0Qjs7STs7Ozs7Rzs0QixPLG9DO0csSSw4Qjs7STs7O0c7O0k7SSxJLCtCOzs7O0ssSSxVOzs7O007TyxhOzs7Ozs7Szs7OztLO00sZTtNOzs7O0k7O0s7OztTO1M7VTtVOztTLE87Ozs7O1E7SSxPO0c7O0k7K0MsTyxpQjtHOztJO0ssTztJOztLO0ssTztJOztLLE87STtJO0c7a0MsdUM7RztJO0s7SyxZO0ssUTtLLGU7O0ssa0I7SSxPO0c7Rzs7SSxJLCtCOztnQztLLG9CO0ssVzs7Rzs7O0s7TTs7O3dCO007SyxPO0k7O0s7O007UTs7Ozs7TyxxQjtPLE87Ozs7Ozs7SztJO0k7Rzs7STswQix5QjtJLFE7O0s7O0k7SSxXOzs7O0s7TTtNO007OztTLG1COzs7UTtLOzs7UTs7STs7Szs7Ozs7O007Ozs7a0I7TSxROzs7TTs7SztJO0ksTztHOztJLGM7Ozs7OztJO0s7Szs7O0s7OztLLHdCLGtCLHNCOztNOzsrQjs7OzsrQjs7O007TTs7NkI7SztLLFc7STtJOzs7OzswQzs7O0ksVztJOzs7TTtNLE87OztlLDZCO0s7SztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7OztNOztPO007TyxnQztNO0s7SztLLE87O0k7Ozs7TTtLO0s7TSxNLFc7TSxROzs7cUIsUztLLEc7TSxVO007O0ssVTt1QjtLLE87O3NCO0ksTztHO3FCO0c7SSxlO0ksTTtJLGM7cUI7RztJLGM7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJLEksSSxNOzs7Ozs7STtNO1Msc0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SztLO0s7O0ksVTs7SyxNO0k7RztpQyxrQixTOztvQixPLGdDO0k7SyxRO0ssUztLLEk7O2U7Szs7VTs7Szs7STtLLFE7OztvQixPLHlDO0k7STt3QixPLG1DO0k7SSxPO0c7O29CLE8sZ0M7SSxZO29CLE8sOEI7SSxZO0k7Rzs7SSxZOztJLE87Rzs7STs7O1E7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssOEI7SyxNO0ssTTs7O0sscUI7Ozs7OEI7Ozs7Ozs7OztROzs7O0k7OztTOzs7Ozs7Ozs7Ozs7O0ksRztLLFE7SztNLFk7TSxHLDRCO087TTtPLFU7Tzs7O2dCLDJCOztJO0c7O0k7SSxxQjtJLG9COztLO0ssZTs7O0ssTTtJO0k7YTs7Rzs7O0s7Ozs7Ozs7VyxLLDZDO1c7WTtZO2M7Ozs7O1ksTTtZLFU7VyxJLFUsbUM7OztrQzs7O1U7bUIsVzs7TTs7O1U7OzthO3VCO1c7WTtjOzs7Ozs4Qix5QjtXLE87O1U7UztPO3FCLFc7TywrQjtPLE07O1M7OztNO087TyxNO08sTTtPLDhCO08sTTs7Ozs7Ozs7Ozs7OztVLE07Ozs7Uzs7O0s7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO2dDLG9DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEk7O0k7O0ssTztJO0ksTztHO0c7OEIsTyxvQzs7STs7SyxNOzs7Tyx1Qiw2QztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztJOzs7UTtROzs7STs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFMsSTs7O08sTTs7TSxTO007TSxrQixPOztNOztJO3FCO0k7Rzs7SSxJLHlCO0k7Rzs7STtLLFE7SyxTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7TSxnQyxLO007Ozs7TTtPO08sc0I7TSxPOztLOzs7O00sTzs7OztPO087Ozs7OztJOztLO00sTTs7SztLO007TTsyQztjLG9DO087UTtnQzs7OztLOztNO007O1EsTztPLFk7Ozs7Ozs7O1M7VTtVLG1COzs7Ozs7O1UsSTtVO1csTzs7O1U7Ozs7OztZLEk7WTthLE87OztZOzs7WSxJO1k7YSxPOzs7WTs7O087O0s7O00sb0M7TSxXOzs7USxJOzs7Uzt5Qjs7bUI7c0I7VTtXOzs7c0I7Ozs7OztROzs7UztRO1MsTzs7UTs7OztPO1E7USxlO087USxPOztPOztNO0s7OEI7SztLO0s7TTs7UyxPOztTLE87aUIsTzs7O0s7TSxzQixXO007O0s7Ozs7Tzs7TTs7SztNO1E7OztNO0ssMEI7Szs7TTtLO007O08sVztPLE87TTtNOztTO00sMEI7Szs7TTtPOzs7a0I7O2tCOzs7Ozs7USxPOztPO1EsWTs7TyxPOztNLE87SztLOztNLDJCLHNCLFc7TSxPO007UTs7SztJO0k7Ozs7Szs7O1k7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0csb0I7Rzs7SSxPO0c7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztRO08sVztPLE87Ozs7USxNOztRO1MsTztTLE87USxPOztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7OztpQjs7O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7MkI7O087O1EsTztPLE87OztPLE87OztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87Ozs7O1UsVztVLE87O1U7a0I7VSxPOztVOzthO1UsTzs7O087Ozs7UTtRLE87USxPO087O1UsTzs7VSxPOzs7VSxPOzs7Ozs7UTs7UyxPO1MsTztRLE87OztRLE07TztRLE87USxPO1EsTztRLE87TyxPOzs7O1E7Ozs7UztXOztTLE87UyxPO1MsTztRLE87Ozs7USxNO087O1E7VTtRLE87USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxPO1EsYTtPLE87Ozs7USxPOztPLE87OztPOzs7O08sa0I7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLFM7TztRLE07OztRO1MsUztTLE87UyxPOzRCOztRO1MsTztTLE87NEI7TyxPOzs7Ozs7O08sTzs7TyxxQixPO08sTzs7eUIsTzs7Tzs7USxPO08sTzs7O08sTzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Ozs7VSxXO1UsTzs7VTtrQjtVLE87O1UsVztVLE87OztPLGtCLE87TyxPOztHO0c7O0ksbUI7STtJLEksb0IsbUIsZTt5QixtRDtJLFk7Ozs7OztrQzs7OztnQjs7STtHOztJOzs7Ozs7Z0I7OztrQjs7Ozs7Ozs7UTs7O0k7SSxjOzs7Ozs7Ozs7Ozs7O0k7RztHOytCLHlCOztJOzs7SSxNO0c7OztLOzs7OztLO007O08sTztjOzs7O007Ozs7O00sTztLO0ssTzs7STtJO0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxPO1E7O1MsSSxNLGdEOztVO1c7a0I7WTtXOzs7O2lDOzs7UztTLE87UTs7Uzs7VTtXO2tCO1ksTTtXOzs7OztZLE87OztTO1MsTztROztTOztVO1csVTs7O1M7Uzs7O1U7VyxLO1c7O1M7UyxPO1E7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7MkI7UztVLFE7VTtVO1U7Ozs7VyxtQjtxQjtXOzs7Ozs7O1U7O1csSSxJLE07Ozs7b0I7O1c7VTtVLE87UztTO1UsZ0I7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7OztXO1c7Ozs7O1M7OztVLGE7OztXOztXO1U7VSxPO1M7UztTO1UsVztVLGE7VTs7VTtvQjtVOztVO1U7VSxPO1M7Uzs7OztXOztZOzs7Vzs7Ozs7Uzs7VSw4QjtVLGtCOztVOzs7OztVO1c7Vzs7VztXLE87VTtVO1c7VTtTO1M7Uzs7WTs7VTtXLE07OztXO1k7OzZCLCtDO1csZTs7VTtXO1c7VzthOzs7VTtTO1MsTztROztTOzJCO1MsTztROzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQzs7O0ssTTs7OztRLGtEO1EsTztPOzt3QixTO3dCLFM7O29CLGM7MEIsTyw0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLFM7MEIsUztzQixjOztJLE87Rzs7Ozt5Qjt5Qjt5Qjt5Qjs4Qjs4Qjs4Qjs4Qjs4Qjs4Qjs7Ozs4Qjs4Qjs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7O0c7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7O087Ozs7VyxRO1csTztVO1E7VTs7USxNO08sTzs7O08sTzs7MkIsTzs7RztHOztJOzs7O0ssTTs0Qjs7Ozs7UTs7OztJO0ssMEIsMEIsSTtLLE87O0c7O0k7STsyQjtLLFE7VztLLEk7O0c7O0k7eUIsTyw4QjtHOztJLFU7STtJO0c7O0ksTyx1QjtHOzZCLHdCOzs7STtjO2M7Ozs7STtjO2M7OztJLEksNkIsUTs7SyxNOytCOztJO0c7OztJO2M7Yzs7O0k7OztHOztJLFk7Z0IsTTs7STtHOztJO0k7Rzs7O0k7Ozs7Ozs7O2tCO0s7O0k7Rzs7O0s7aUM7STtJO0c7Ozs7OzBCLDRCO3lCLE8sdUM7Ozs7Ozs7a0I7Szs7STtHOzs7STs7YztjLE87YTs7Rzs7STtJO0ssVTtLLFU7SyxVO0ssVTtLLFc7Ozs7Ozs7Ozs7Ozs7O007TTtPO08sVTs7Ozs7Ozs7Ozs7TyxNOzhCOztNLEk7Ozs7Ozs7MEM7Uzs7Ozs7OztNO087TztPO087Tzt5QjtPOzs7VTtXO1c7Ozs7VztZO1k7WTtZOzs7VTtTO08sZ0I7Tzs7O1ksWTs7WTtXOzs7Tzs7Ozs7O1E7O1E7UTs7O1c7O1k7O1ksUztZO1c7VTtvQjs7O007Tzs7VTtXO1c7c0I7O1U7O087O1U7VztXO1UsTzs7TTs7OztPO087UTtRLDRCO087TztRO1EsVTtPLEc7USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0IsTztpQjs7d0I7O1k7b0I7O3NCO2lDO1c7OzhCO087Ozs7WTtZLE87VztXLE87O087Ozs7O007TTtPO08sSTs7Ozs7Ozs7OztPLFU7Ozs7Ozs7Ozs7UTtTO1M7UztTO1M7UztTO1EsRzs7O1M7VTtnQztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1U7VTs7O2E7O2M7Yzs7O2M7Yzs7Yzs7Ozs7Yzs7Ozs7YTs7Ozs7Ozs7WTtVLFc7Uzs7O1U7Vzs7Ozs7YztjOzs7Ozs7OzthO3dCOztROzs7O1UsTTtTOztVOztXO1c7Vzs7O2M7O2U7O2U7O2U7YzthOztxQjs7Ozs7O1E7Uzs7WTt3QjtZOzs7O2E7ZTs7O1ksVzs7Uzs7WTtZLE87O1E7O08sTTsyQzs7TSxNOzJDOzs7SSxNO0c7O0k7SztNLEs7NEIsYTs0QixPLDJCO00sSTs7Ozs0Qjs7O0s7O0k7Rzs7O0ksTzs7OztJLE87Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7OztJOzs7MkI7O3lCLE07OztPLEksUTs7OztRLE07OztPOztHOztJO3VCOztJO0c7O0k7Ozt5Qjs7eUIsTTtpQzs7RztzQixtQjs2QixtQjs2QixtQjt1QixjOztJOzs7MkI7O3lCLE07OztPLEksVTs7OztRLE07Ozs7OztHOztJO0k7aUI7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOzsyQix5QjtTLE87Ozs7UTs7MkIseUI7UyxPOzs7O1E7O1M7UTs7UztROztTO1E7MEIsdUI7O1M7UztTO1M7UTs7UztVO1U7UztTOzs7O1E7O1M7VTtVOztVOzs7O1csdUI7Ozs7YTs7Ozs7Ozs7O2E7Yzs7Ozs7ZTs7Ozs7OzthOzs7OztXOzs7Ozs7O1UsTTs7OztxQztVOztXLE07O1U7Ozs7Ozs7VSxJOztROzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7O1csTzs7Ozs7c0I7c0I7OEI7O3FCO3FCO29CO1U7VSxnQixjO1U7VztXO1UsZ0IsYztVO1c7Vzs7OzthLFk7OztjOzs7YTtZO1ksTztXO1csTztVO1U7VyxTO1c7Vzs7Vzs7Ozs7WSxRO1c7VTtVO1c7O2E7Ozs7Ozs7YztnQjs7O2E7Ozs7OztXO1U7VTttQjs7Uzs7VSx3Qjs7Ozs7c0I7VTtTOztVOzs7VzthOztXO2E7Ozs7O1c7O2M7Ozs7OztVOztVO1c7WTtZO1k7O1k7Ozs7YSxrQjs7Ozs7OztvQjtxQjs7Ozs7Z0M7OztlO2U7Ozs7O2E7Ozs7OztnRTtXOzs7Ozs7a0I7bUI7OztpQjtpQixPO2dCO2dCLE87ZTs7OztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7VTtXLFE7OztXO1U7Uzs7O1U7VTtTOzs7Ozs7VTtXLFE7Ozs7VTtTOzs7VTtVO1M7Ozs7Ozs7a0IsVTtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLDRCO0ksTztHOztJOzs7Ozs7O0k7SyxVO0s7dUIsTyxzQztLLE87STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07dUIsb0I7O29DOzs7c0I7O3VCLE07dUI7dUIsb0I7O29DOzs7OztzQjs7O3VCLEs7dUIsSzt1Qjt5Qjs7O3VCO3VCLG9CO2lDOzttQixXOzs7O3FCOzs7Ozs7Ozs7bUI7Ozs7O3NCLG9COzs7c0I7O3NCOzs7O3VCLEs7dUIsSzt1Qjt1QixROzs7Ozs7eUI7Ozs7Ozs7OzBCLFU7MEIsVTs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7a0I7a0IsTztpQjs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STt5QiwrQjs7STs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxHO0s7TSxPO2tDOzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TyxHO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7SyxPOzs7OztLO0k7SyxpQztJOztLLGE7SyxPO0k7STs7Ozs7Ozs7Ozs7O0k7SztLOztJO0k7SztLOztLO0s7OztLO0s7Ozs7O0k7SztLO0s7O0ksTztHOztJOzs7NkIsTyx5QztJLE87Rzs7O0s7OztNLE87TSxjO0s7STtJLE87Rzs7STtLOztrQixNO0ssSTs7OztpQjtPOzs7OztLLFc7MEIsTTtLO0s7SztLO0ssdUM7Ozs7a0I7Ozs7WSxxQixpQzs7O08sRztROzs7O1kscUIsaUM7OztPLEc7UTtPLFE7Tzs7Tzs7Ozs7SztLO0ssVztLOzs7OzRCOzs7Rzs7STtJO0s7SztLO0ssSTs7SztNLFc7TTs7Ozs7STtJOztNLFk7OztPO29COztPOzs7TTs7OztHOztJO3VCLHFCO0ksTztHOztJOzs7Szs7SztNLE87TSxjOzs7STtHOztJOzs7Ozs7Ozs7Ozs7Szs7Ozs7aUI7SztLLFc7SyxJLG9COztNOztPO007SztLLGdCOztNOzs7Ozs7O00sTzs7O0s7SztNLE87TSxPOztNO00sbUIsMkI7TTtNLE87SztLLFUsVzs7TTtNOztROztPOzs7TyxNOzt3Qjs7TTtLO0s7TSxROzs7SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7O007Ozs7Ozs7Ozs7TSxXOztNO087USxNO1E7O1csSSxlLDhCOzs7b0M7OztVO1E7O2tDO087Tzs7OztrQzs7O0s7SyxJOzs7Ozs7O1E7UztTLHFCLHVCOzs7WSxXO2lDO1ksUTtZO1k7VztTOzs7Ozs7OzJDLHFCO087UTtTOzRCLDRCOzs7WSxzQjtZLFE7WTtZO1c7Ozs7Ozs7Ozs7TTs7OzhCOztPOzs7Ozs7O08sRyxnQztRO08sRyxnQztRO087TTtNLFk7Ozs7O007SztLLFksVzs7TTs7Ozs7TSxXOzttQjtNOztPO007SztLO00sVTs7Ozs7Ozs7OztXO1c7VTtlOzs7Ozs7TTs7Ozs7TTs7Yzs7SztLLGMsVztLOzs7Ozs7OztRO1E7Ozs7O1k7O2E7YSxPO1k7cUI7YTtZO2E7OztjOztjOzthO2EsTztZOzZCOzBCO1c7UTtROzs7OztNOzs7VTs7VztVO1UsYTtVO1M7TyxPO00sVzs7O0ssTztJO0ksTzs7RztHO0ksTztHOztJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7OztJO0k7Ozs7Ozs7OztJOzs7SyxPOztLLE87OztLLE87O0ssTztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87RztHO0k7SyxPOzs7d0IsTzs7O08sTzs7O08sTzs7O08sTzs7O0csNkM7RztHLDRDLHdCO0c7O0ssVztLLE87STtJLE87RztHO0k7OztLLE87SyxPO0ksTzs7RztJOztHO0csOEMsd0I7Rzs7Ozs7Ozs7Ozs7OztLOzswQixvQixXO0s7TSxXO007TTtRO0s7SyxPO0k7SSw4QyxTO0k7Szs7ZTs7STtJOzs7Ozs7Ozs7Rzs7SSxnQzs7OztLOztJO0c7O0ksTzs7O0c7Rzs7SSxjO0ksTztHO21DLGtDOztJOztJLG9CO0ksTzs7O0k7STtJOzs7O2MsTzthO0c7O0k7STtJLHVDLE8sdUI7Rzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLE87STtJO0ssTztLLHlCOztLO0sseUI7STtJLFU7STtHOzhCLG9DO0c7RztJOztHOztJLE87RztHOztJO2dCOztJO0c7O0k7Rzs4QixvQztHO0c7STs7Rzs7SSxPO0c7O0k7Z0I7O0k7Rzs7STtHOztJO0k7STtHOztJO0c7O0k7SyxVO0s7OztROzs7STtHOztJO0s7TztLOzs7UTs7O0k7RztHO3FDLGtDOzs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7OztlLE07O21DOztLOztHO0c7Rzs7TSx1Qjs7TTtLOztJOzs7SyxNO0k7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7MEI7O1E7OztTOzs7O2dCLE87O0c7O0k7O3lCOzsyQjtlLE87O0c7O0k7SztNLE07TTtNLFU7Szs7Ozs7TTtjOzs7Ozs7OztHOztJLFE7SSwwQjt1QixpQjtJLFc7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7Ozs7O0ksVztJLFc7SSxXOztLOztRLE87O1E7b0M7O0k7SSxPO0c7aUMsK0IsVTt5QixpRDsrQixhOzhCLGE7Rzs7STs7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7STs7Ozs7O087UTtrQjs7Ozs7O0k7Rzs7O0k7OztNO00sTzs7O0k7RztHO0k7Ozs7STs7SztLO0s7STtHOzt3QixtRDtJO0ssTztLLE07SSxPO0c7O0k7STtpQjs7MEQ7OztHOztJOztpQixPOzs7Ozs7O00sSTs7O0c7O3FCLCtDO0ksTztHO0csZ0I7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0ssVTtLO0s7Ozs7MkI7OztHO0csaUI7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHFCOztJO2lCO0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0csc0I7O0k7O2M7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHVCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0ksd0I7SSx3QjtHOztJO0ssSztLLEs7STs7YTthOztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSxjO0ksc0I7Rzs7SSxjO0ksc0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksZ0I7Rzs7SSxVO0ksMkI7Rzs7SSxnQjtHOztJLHFCO0c7O0ksWTtJLDJCO0c7O0ksMEI7Rzs7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSw0QztJOzs7O0k7O2E7YTs7OztJO0k7Rzs7STs7YTthOztHOzs7STtJO0k7OztJO0k7STtHO2tDLHdCOytCLHdCO29DLDBCOztJLDJCO0c7NEIscUI7aUMsMEI7O0ksMkI7Rzs4QztHOzZDO0c7c0MsK0I7dUMsZ0M7O0k7STtJO0k7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7OztHOzs7O0k7STtxQyxrQixTOztJLE07Rzs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7O0ksTztHOytCLHNCOztJLFc7Rzs7STtJLFc7Rzs7STtJLFc7Rzs7STtJLFc7RzsrQixzQjtzQixjOztJO0k7Rzs7STtJO0c7Rzs7STtJO0k7Rzs7SSxXO0k7RzttQywyQjtpQyxnQzt1QyxzQztpQyxnQztxQyxtQztxQyxtQztzQyxtQztvQyxtQzs7STtHO21DLG1DOztJO0c7cUMsaUM7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7cUIsWTtJLGtCOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7Ozs7OzZCLCtDO1M7Ozs7Ozs7Ozs7YTthO1k7O2lDOzs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQzttQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztpQyxnQztzQyxnQzt1QyxzQzs7STtHO3NDLGdDO29DLG1DO29DLG1DO29DLG1DO21DLGdDOzBDLG1DO3dDLG9DO3VDLG9DO29DLG9DOztJO0c7bUMsaUM7NEM7Rzt1QyxvQztzQyxvQzs7STtHOzJDO0c7O0k7RzttQyxvQztpQyxpQzt5QyxvQztvQyxpQzs7STtHOzJDO0c7a0MsaUM7a0MsaUM7cUMsb0M7b0MsaUM7c0Msb0M7Z0MsaUM7cUMsb0M7O0k7Rzt1QyxpQzsyQywyQjtvQyw0QjswQyw4Qjs7STtJO0k7Rzs7SSxXO0k7RzttQyxnQzttQyxnQztxQyxnQztzQyxtQztxQyxtQztvQyxnQzt1QyxnQztHOzs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7STtJO0c7MEIseUI7cUMsbUM7K0IseUI7bUMseUI7Z0MseUI7MkIseUI7OEIseUI7K0IseUI7NEIseUI7a0MseUI7MkIsMEI7NEIsMEI7NEIsMEI7K0IsMEI7O0k7STtHOzhCLDBCOzs7SyxPLHFCO0k7SSxZOztLLFc7SyxxQjtJO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7STtHOytCLDRCOzhCLHlCO3FDLG1DO3FDLHlCO2dDLHlCOzZCLHlCO2lDLHlCOzhCLHlCOzJCLHlCOzRCLDBCO2lDLDBCOzhCLDBCOztJO0k7RztnQywwQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3NDLG1DO3VDLHNDOzJDO0c7dUMsZ0M7cUMsbUM7Rzs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3VDLGdDO3FDLG1DO0c7Ozs7STtJO0k7Ozs7SSxtQjtHO21DLG1DOztJO0c7O0k7Rzs7STtHO3VDLG1DO2dDLCtCOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHOztJLFc7STtHOztJO0k7STs7OztJLG1CO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt1QyxvQzt1QyxvQztnQyxnQzs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87Rzt3QixlOzJCLGlCOztJLFc7STtHOztJO0k7STs7OztJO0ksNEI7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHVCO0c7Rzs7STtJO0k7STtJLGdDO0c7Rzs7STtJO0k7SSx1QjtHO0c7O0k7STtJO0k7SSxVO0ksc0I7RztHOztJO0k7STtJO0k7STtJLFU7STs7Ozs7O1k7RztHOztJO0k7STtJO0k7STtJO0k7SSxVO0k7Ozs7Ozs7WTs7Rzs7STtJO0k7STtJO0k7Ozs7OztZO0c7O0k7STtJO0k7SSxnQztHO0c7O0k7STtJO0k7STtJOzs7Ozs7WTtHOztJO0k7STtJLDZCO0c7O0k7STtJO0k7SSxVO0ksNEI7Rzs7STtJO0k7STtJO0k7SSxVO0k7Ozs7WTtHOztJO0k7STtJO0ksVTtJLGdDO0c7RztnQyx5QjtHO2dDLHlCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHOztJO0k7STtHOztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0ksRztLO0ksVztJLEc7SztJLFc7SSxHO0s7SSxVLHVCOzs7Ozt5Qjs7MEI7OzJCOztTO1UsTztpQjs7Ozs7Ozs7Ozs7Ozs7O0ksUzs7Ozs7d0I7OzBCOzsyQjs7UztVLE87Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0ssTztLLGM7STtHOztJO0ssTztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPLFc7TyxXO08sVztPLE87Ozs7O0k7Rzs7STtJO0c7O0k7Rzs7STtJLE87Rzs0QiwyQjs7STs7Ozs7K0M7O2dEOzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7O2E7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHOzZCLGdDOztJOzs7YTtpQyxPO0k7Ozs7TSxNOztvQix3QixPOztLO0s7OztHOztJOztJLFE7O0k7STtJLE87Rzs7STtJO0k7ZTs7YztjO2M7YztjO0c7O0k7O3lCOztPOzs7UTtPLE87Ozs7Ozs7OztPLE87Ozs7O0ksTztHOztJOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7MkIsTzs7O3FCLE87O08sTzs7OztROztTOzs7WTtZLE87VztROzs4QixPLHVCO087OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO0c7OEIsd0I7OEIsTywwQjs7SSxRO0ksMEI7SSxJO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7OzttQzs7OztJLE87Ozs7O2tDOzs7O0k7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O1M7Ozs7VSw0QjtVO1MsTzs7Ozs7bUI7Ozs7Ozs7UyxPOzs7O3VDOzs7Ozs7O1U7O1csNEI7VSxPOzs7OztvQixPOzs7Ozs4QixROzs4QixPOzs7Ozt3Qzs7OzZCOzttQjs7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7TyxPOzs7OztpQixROztrQjs7OztnRDs7OztpQixPOzs7OytDOztnQjs7Ozs7Ozs7OztXOztZOzs7YTthLDRCO2EsNEI7WSxPOzs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOztZOzs7YTthLDRCOzs7Z0IsUTtnQiwwQjtnQixJO2dCLE87Ozs7OzBCOzs7ZTtZLE87Ozs7OztzQjs7Ozs7Ozs7O1c7VTs7O1c7Ozs7YSxPOzs7Ozt1Qjs7Ozs7VztVO08sTzs7Ozs7aUIsd0I7O2lCO2tCOzs7Ozs7OztpQixPO2dCOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7Szs7TSw0QjtNO0ssTzs7OzttQzs7Ozs7OztLLGdDO0ssTzs7OzttQzs7Ozs7O0k7Ozs7O007OztPOzs7OztLOztNO08sNEI7Tzs7TSxPOzs7OztnQjs7Ozs7SztNLE87O0s7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7O3FDOzs7Ozs7O0s7OztLO00sTzs7Szs7Ozs7Ozs7Ozs7Ozs7UztVLE87O1M7OztRLEc7UyxPO2lCLE87OztTOztVO2lDOzs7UyxPOzs7Ozs7O21COzs7Ozs7O1EsTzs7Ozs7OztrQjs7Ozs7OztTLE87Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7SztNLE87O0s7OztrQyxPOzs7OEI7O3lCLE87OztPLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxHO2MsTzs7OztXLE87Ozs7Ozt5Qzs7O087O1EsTzs7Ozs7a0I7Ozs7OztPLE87Ozs7O2lCOzs7OztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087USw0Qjs7O08sTzs7Ozs7OztpQjs7OztJOzs7O2tDOzs7Rzs7STs7O0k7OztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sRyw2QixPOzs7SyxPOzs7OzttQzs7O0ksaUI7Ozs7O0ssSztlLE87O0ssTzs7Ozs7bUM7Ozs7SyxPOzs7OzttQzs7O0ksMEI7SSxPOzs7OztrQzs7Ozs7O0ksZTs7Ozs7Ozs7Ozs4Qiw2QztNLEs7TTs7Ozs7Ozs7Ozs7OztXLFk7O1csTzs7VTs7WTs7YTtvQzs7O2E7YTs7Z0I7O1k7Ozs7bUM7Ozs7Ozs7Ozs7WTs7OztXOzs7WTtZOztlOztXOzs7O2tDOzs7Ozs7OztXOztVOzs2QjtPLFE7Ozs7Ozs7O1c7Ozs7a0M7O1c7Ozs7Ozs7Ozs7Ozs7WTs7O2EsVzthO2E7O2dCOzs7WTs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7O2dCOzs7aUI7Z0I7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OzttRDs7Ozs7Ozs7Ozs7cUI7Ozs7O3NCO3FCOzs7O21EOzs7Ozs7Ozs7O21COzs7O29CO21COzs7O2lEOzs7Ozs7O2lCOzs7a0I7aUI7Ozs7K0M7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7UztVO1csZ0I7Vzs7Ozs7WTs7OztVO1c7VyxJO1c7O2dCO2dCOzs7Ozs7O1ksTTs7Ozs7OztVO3NCO1csUzs7O3FDO3FDO1U7Ozs7Ozs7Ozs7Ozs7O007OztJOzs7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlOzs7bUI7O2UsTzs7Ozs7eUI7Ozs7Ozs7Ozs7VztZOztlOztZOzs7WTs7ZTs7VyxPOzs7O3lDOzs7Ozs7Ozs7WSxHOzs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7O1c7Ozs7YSxPOzs7OzsyQzs7OztXO1k7O2U7O1k7OztZOztlOztXLE87Ozs7eUM7Ozs7OztTO1MsTzs7Ozs7bUI7bUI7b0I7O21CLEk7bUI7b0I7O21CLE87Ozs7aUQ7Ozs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7dUM7OztTOzs7O1UsNEI7UyxPOzs7O3VDOzs7Ozs7OztTLE87O1M7OztVLDRCO1MsTzs7Ozs7OzthLDBCO2EsTzs7OztTLE87Ozs7O21COzs7Ozs7UyxPOzs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozs7VSxPOzs7O3dDOztTOztVLDRCO1MsTzs7Ozt1Qzs7Ozs7OEI7Ozs7Ozs7O1U7Ozs7d0M7Ozs7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVLE87Ozs7d0M7OztVOzs7OztXLDRCO1c7VSxPOzs7O3dDOzs7OztVOzs7Vyw0QjtVLE87Ozs7d0M7Ozs7O1U7OztXLDRCO1UsTzs7Ozt3Qzs7Ozs7VTs7OztXLDRCO1c7a0M7VSxPOzs7O21COzs7Ozs7VTs7O1csNEI7VSxPOzs7OztvQjs7Ozs7O1U7OztXLDRCO1UsTzs7VTs7O1csNEI7O1csNEI7VSxPOzs7VTs7Ozs7Vyw0QjtXLDRCO1c7O1c7O2M7O1UsTzs7Ozt3Qzs7Ozs7Ozs7O1c7Ozs7eUM7Ozs7OzthOzs7O2M7YztxQzthLE87Ozs7Ozs7Ozt1QixTO3VCLGU7dUIsTzs7OztxRDs7c0I7Ozs7Ozs7OztlOzs7Z0I7Ozs7O2M7ZSxNO2U7ZSw0QjtlOztjLE87Ozs7O3dCOzs7Ozs7O007Ozs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O08sTzs7Ozs7aUI7Ozs7TTtPLE87O007OztHOztJOzs7Ozs7UyxPOzs7O3VDOzs7OztTLGtDO1MsTzs7Ozt1Qzs7OztLO00sTzs7Szs7SSxrQixPOztJO0c7O0k7SyxrQixPOztLOzs7Ozs7MkI7OzBCOztROztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7UTtTOztrQyxPO29DLE87Ozs7O1c7O1k7WSw0QjtZOztXLE87Ozs7O3FCOzs7Ozs7Vzs7O1MsTTs7Ozs7O1MsTzs7OztROzs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1M7O1k7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7OztROztTO1MsNEI7Uzs7USxPOzs7OztrQjs7OztROzs7Uyw0QjtRLE87Ozs7c0M7Ozs7O1E7Ozs7OztTLGtDO1EsTzs7OztzQzs7Ozs7Ozs7Ozs7UTs7O1MsNEI7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7Uyw0QjtTO2dDO1EsTzs7OztzQzs7Ozs7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7NEI7O0k7OztJOzs7STs7SywwQjtLLE87O0ksTztHOztJOztLLDBCO0ssTzs7SSxPO0c7O0k7SSwwQjtJLE87Rzs7O0s7OztLLE87Ozs7O2U7OztJOztJLE87Ozs7a0M7Ozs7Rzs7O0ksMEI7SSxPOzs7O0ksMEI7SSxPOzs7STtJLDBCOztJLE87Ozs7O2M7Ozs7O0c7O0k7OztPOztRO1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1E7USw0QjtRLDRCO08sTzs7OztxQzs7Ozs7Ozt5Qjs7O087OztHOztJOzs7Tzs7O1E7USw0QjtPLE87Ozs7O2lCLFE7aUI7a0I7O2lCLEk7aUIsTzs7Ozs7MkI7OztnQjs7Ozs7OztPOzs7O1E7K0I7UTs7UTs7Vzs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7Ozs7OztPOzs7O1EsNEI7UTtPLE87Ozs7O2lCOzs7Ozs7O087OztPOzs7USw0Qjs7TyxPOzs7Rzs7O0ssOEI7SywwQjs7SywwQjtLLDBCO0ssTzs7Ozs7Ozs7Ozs7Ozs7STtJLFE7O2U7O0k7Szs7SSxJO0k7Szs7SSxPOzs7OztjOzs7OztHOztJOzs7Tzs7OztRO1EsNEI7OztXLFM7O1csTztVO1EsNEI7TyxPOzs7OztROztTO1M7Z0M7Uyw0QjtRLE87OztPOzs7UTtRLDRCO1EsNEI7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7O1M7UztnQztTLDRCO1EsTzs7Ozs7Ozs7Ozs7O087Ozs7O1c7Ozs7VTtRO1EsNEI7OztXOzs7Ozs7YTs7Yyw0QjtjLDRCO2EsTzs7O1k7OztVO08sTzs7Ozs7Ozs7Ozs7O087Ozs7UTtRLDRCO1EsNEI7TyxPOzs7O3FDOzs7Ozs7O087O1E7USw0QjtPLE87Ozs7cUM7Ozs7O3lCOzs7Tzs7O0c7OztJLDBCO0ksSTtJO0s7O0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Ozs7STs7Ozs7USxPOzs7OztrQjs7a0I7bUI7O2tCLEk7a0IsTzs7Ozs7NEI7OztpQjs7Ozs7MkI7O1E7Ozs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTOztZOztTOzs7Uzs7WTs7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTLDRCO1EsTzs7OztzQzs7Ozs7NEI7O1E7OztTLDRCOztRLE87Ozs7O0ksMEI7STtJLE87Ozs7a0M7Ozs7Rzs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7OztTLE87Ozs7dUM7OztRLGlEOztTOztVLDRCO1MsTzs7Ozs7dUM7Ozs7O1E7cUM7USxPOzs7O3NDOzs7Ozs7O1M7O1U7O2E7O2dCOzs7O2lCOztvQjs7Z0IsTzs7Ozs4Qzs7Ozs7Ozs7Z0IsTzs7OztnQixPOzs7Ozs7OEM7Ozs7Z0IsTzs7Ozs7OzhDOzs7Z0I7Ozs7aUI7O29COztnQixPOzs7OzhDOzs7Ozs7OztnQixPOzs7O1U7O1U7O2E7O1MsTzs7Ozt1Qzs7Ozs7Ozs7UTtTLE87O1E7OztHOztJOzs7OzJCLE87O1E7O1MsNEI7Uzs7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7OzBCOzs7USxPOztROzs7O3NDOzs7OztJO0ssTzs7STtHOztJOzs7STs7O0k7Ozs7a0M7OztHOztJOzs7Tzs7O1E7USw0QjtROytCO08sTzs7Ozs7Ozs7Ozs7OztPOzsyQjs7MEI7OzBCOzs7O1E7O1M7UztnQztRLE87Ozs7aUI7Ozs7OztPO1E7USw0Qjs7USw0QjtPLE87Ozs7Z0I7Ozs7OztPOztRO1EsNEI7TyxPOzs7O087O1EsVTs7UTtTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7OztTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87Ozs7Ozs7TztRLE07Tzs7USw0QjtRLDRCO08sTzs7Tzs7UTtRLDRCOztPLE87OztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7Ozs7O1csOEI7VztZOzs7VywwQjtXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7O08sVTs7b0I7Tzs7UTs7Vzs7UTs7UTs7Vzs7TyxPOzs7OztpQjs7Ozs7OzJCOzt5Qjs7O087Tzs7Rzs7STtLOztNLDRCO007SyxPOzs7O21DOzs7Ozs7OzswQixPOztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7OztROzs7O1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7TyxPOzs7O3FDOzs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7OztPLE87Ozs7cUM7O21DOztHOztJOzs7O2tDOzs7Rzs7STs7Ozs7O1M7OztVO2lDO1MsTzs7Ozt1Qzs7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7VSxPOzs7OztvQjs7Ozs7UztTLE87Ozs7dUM7Ozs7OztTLE87O0ssTzs7OzttQzs7STtJO3NCLFk7SyxPO0k7Ozs7Ozs7Ozs7UTtTLDRCO1MsNEI7USxPOzs7OztrQjs7Ozs7Ozs7Ozs7O0ssZ0M7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O1c7OztZOzs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7OztNOzs7Ozs7Ozs7TztNLEc7TyxVO08sRzs7Ozs7Ozs7Ozs7OztNOzs7O08sNEI7Tyw0QjtPOzs7O087O1U7O00sTzs7OztvQzs7Ozs7Ozs7O0s7OztNLDRCO00sNEI7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7a0I7Ozs7Ozs7USxpQzs7OztTO1UsNEI7VSw0QjtTLE87Ozs7O21COzs7Ozs7OztRO1MsNEI7Uyw0QjtRLE87Ozs7O2tCOzs7Ozs7OztJLDBCO0ksTzs7OztrQzs7Ozs7Ozs7SztLLDBCO0ssTzs7Ozs7OzttQzs7OztJO0ksUTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7OztJOzs7Ozs7Ozs7O00sRztPLE87Ozs7O0ksMEI7SSwwQjtJLE87Rzs7STs7O087OztRLDRCO08sTzs7OztxQzs7Ozs7TyxpQztPLE87Ozs7cUM7OztPOztRO1EsNEI7UTsrQjtPLE87Ozs7O1EsTTs7Tzs7MEI7OzBCOztPOzs7USw0Qjs7OztXO1c7Ozs7YTtjOzs7ZTtzQztjOzs7O2dCOzs7OztjOzs7O1k7Ozs7Yzs7c0M7YyxPOzs7OzRDOzs7Ozs7WSxPOzs7OzBDOzs7VTtPLE87Ozs7Z0I7Ozs7Ozs7Ozs7OztZOzs7YTthO29DO2E7b0M7YTtvQztZLE87Ozs7cUI7Ozs7Ozs7O1c7VztZOzs7VywwQjtXLE87Ozs7b0I7Ozs7OztPO1EsTTs7O1E7Ozs7OztZLG9CO1ksTztXOztTO2dDO1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7Ozs7Tzs7OztXLG9CO1csTztVOztRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7Ozs7Tzs7Ozs7USw0Qjs7O1csUzs7VztXLE87Ozs7eUM7O1U7TyxPOztPOztRO1EsNEI7O1EsNEI7TyxPOzs7Ozs7VyxPOzs7O3lDOztVOzs7Vyw4Qjs7Ozs7Ozs7O2E7Ozs7O2M7Ozs7OztXLEksTzs7Ozs7Ozs7O1c7VztZOztXLDBCOztXO1k7O1csMEI7VyxJO1c7WTs7VztZOztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztROztXOztPLE87Ozs7O2lCOzs7Ozs7MkI7O087O1E7USw0Qjs7TyxPOzs7O3FDOzs7Ozt5Qjs7O087Tzs7Rzs7O0ksMEI7Ozs7Ozs7OztJLE87OztJLFE7SSwwQjtJLE87Ozs7O2M7Ozs7Ozs7Szs7Ozs7SztLLDBCO0ssMEI7O0ssTzs7Ozs7OzttQzs7Ozs7Ozs7STtJLFEsTTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7Ozs7SztLLDBCOztLLDBCO0ssTzs7Ozs7Ozs7Ozs7STs7SSxPOzs7OztjOzs7Rzs7cUIsa0Isd0I7O0s7aUI7OztlOzs7OztxQzs7ZTs7OztxQzs7STs7SztLOztJOzt1Qix3Qix3QjtLOzsrQjs7Ozs7O1UsYSxPOztVLE87Ozs7O29COzs7O1M7TSxPOzs7SyxPOzs7Ozs7O2U7OztJOztLOztNO00sMEI7TSxPOzs7O29DOzs7O0s7SyxPO0k7SSxPO0c7OztLLE87Ozs7O2U7OztJO0k7SSwwQjs7STtLOzs7SSxPOzs7OztjLFE7YywwQjtjLE87Ozs7O3dCOzs7YTs7Ozs7Ozs7OztHOzs7Ozs7Ozs7O0ssUzs7SyxPOzs7OztlOzs7STtJO0s7O00sNEI7SyxPOzs7Ozs7OztlO2dCOztpQjt3QztnQixPOzs7OzswQjs7Ozs7Ozs7ZSwwQjtlLDBCO2UsSTtlLE87Ozs7O3lCOzs7OztjOzs7OztJLDBCO0ksTzs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs7O3NCO2MsMEI7YyxJO2MsTzs7Ozs7d0I7OzthOzs7Ozs7STs7O0s7O0ksbUI7SSwwQjtJLE87Rzs7O0s7Ozs7TTtLLDBCO0ssMEI7SztLLDBCO0ssTzs7OzttQzs7Ozs7OztJO0c7O0ksZ0M7Ozs7Ozs7Ozs7Ozs7SSwwQjtJOztLLE87ZTtlOzs7OztxQzs7OztJLE87YztjOzs7OztvQzs7OztJOzs7eUIsTzs7O3FCLE87O08sTzs7MEIsTzs7O08sTyx3Qjs7Rzs7STtLOztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COztHOztJO0k7Z0I7O0ssUyx1Qjs7O0c7O0ksUzs7STtHOztJLGlCO0c7O0k7Ozs7Ozs7O2dCOzs7Rzs7STs7Ozs7Ozs7Z0I7O0ksTztHOzs7SSxhOztLLFk7a0I7a0I7SyxPO0k7SSxPO0c7OztLLFk7SyxPO0k7SSxPO0c7O3lCLHFCLFk7eUIsdUIsYzt5QixzQixhO0k7SztHOzt1QyxnQztJO0s7RztHO0k7STtJO0k7O0k7Ozs7Ozs7Rzs7STs7SyxNOztLLHdCLE87SyxPOztJOzs7SyxPO0ssTztJLE87Rzs7STs7SyxNOztJO0c7O0k7STs7O2EsWTthO2E7WTtHOztJO0k7OzthO2MsUzs7O2E7YTtZO0c7O0k7OztLOzs7STtLLFc7Szs7OzsrQjs7Ozs7cUIsd0I7SSxPO0c7O0k7SyxJO0ssSTs7OztJO2dCLE87SyxJLGlCLEksOEI7Ozs7Ozs7TTtNLEk7OztLO00sc0I7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHOzs7STs7SyxJOztJO2dCLE87SyxJLGlCLEk7SzttQixNO007OztPO1EsTTs7O087Ozt1QixNO007TztTO1c7TyxPO007Ozs7OztNOzs7OztHOztJO0k7Rzs7STtLLEk7SyxPO0ssTztJO0ksYTtJO0c7O0k7OztHOzs7Ozs7Ozs7SSxTLE87STs7Szs7O0ksTzs7b0IsYyw2Qjs7SSxVLE07SSxrQjs7O0s7O08sYztPOzs7Ozs7OztHO3NCLGMsbUI7O0k7STs7O0c7c0IsWTtzQixrRDs7SSxzQjs7Szs7TTs7Ozs7Ozs7Ozs7SyxPO0k7SSxRO0k7O00sTTtLOzs7TSxJO007TTs7OztPLEksd0M7Ozs7Uzs7O1c7O1M7Ozs7O087Ozs7O0ssYzs7O0ssTTtJOzs7O0ssTTtLO0s7Ozs7O00sSSxZOzs7Ozs7OztTOzs7OztROzs7OztNLHVCO007Ozs7O0ksYztHOztJO0ssSTtrQjs7STtHOztJLGdDOzs7O1E7O1E7UyxJOzJCOztROztRO1MsTTs2Qjs7UTs7USxPOzs7Z0I7aUI7Ozs7SyxNOztnQjthOzs7YTs7O2E7Ozs7Ozs7O0k7OztHOztJO0ssTTtJLHNCOzs7OztPLE07TTs7Ozs7O0ssSTtLO2dCO007TSxHOzs7TztROzs7Ozs7O0k7SSxXOztLOztJO0k7SSxJLGUsc0I7O0s7OztNO087Ozs7Ozs7O1U7Ozs7WSxNOztXO1csSyxrQzs7Ozs7Ozs7Ozs7O087TyxJOzs7Ozs7Ozs7Ozs7OztPO087Ozs7Ozs7TTs7O0k7STtJO0c7Ozs7Szs7O007O0ssTTs7SSxNOzs7STs7O0ssVzs7OztJLHNCOztLOztLO0k7SSxJLFEsOEM7O0ssTTtJLEksWTs7SztNLGlCOztPOzs7UTs7OztPOzs7OztJO0ksVztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7SSxvQjtJOzRCOzs7O0csSSxtQjt1QixXO0c7STs7OzsyQixTOzs7Ozs7O1M7UztzQjtVO1csUzs7Ozs7UTs7UztTLE07UTtxQyx5QixTO29DLHlCLFM7O1M7UzttQjttQjtRO2dDLDJCOztTO1E7O1M7O1U7Vzs7O1UsZSxPOztVLE87OztxQixPO1MsTTtROztTO1M7UTs7UztROztTO1M7UyxNO1E7OztTO1M7UTs7Uzs7VTtVOztvQixTOzt5QyxTOztxQjtvQjs7Ozs7cUUsUzs7OzttQjs7UztTOzswQywrQjs7O1E7OztTO21COztROztTO29CO1M7O1U7UyxPO1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVOztVO1MsTzs7UTs7UyxlO1E7O1MsZTtROztTO21COztRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxvQjtTO2lDOzs7UztVLE07O1M7bUI7bUI7UTs7UztTLEcsVztVO1MsTTtROztTLEcsVztVO1MsTTtROztTO1M7UTs7UztTO1E7O1M7Ozs2Qjs7VTs7OzhCOztTO1E7bUQseUI7O1M7Ozs7O1U7Uzs7O1M7VTtVO1U7UztROztTO1MsTztROztTO1MsTztROzZCLHVDOztTO1U7VTtTLE87UTs7UztVLE07O1E7O1M7UztROztTLEksZTtTO1E7O1M7Ozs7OztTO1E7O1M7Uzt3QjtVO1csUzs7Ozs7UTs7UztTOzs7O21CLE8sYztrQjs7UTs7UztTOzs7O21COzs2QixjO2tCOztROztTLE87UTttQyx1QjsrQix1Qjs7UztVOztXOzs7O2M7YzthO1UsTzs7Ozs7Ozs7OztTOztVOztVLFE7cUI7Uzs7VTtTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7O1c7Vzs7OzsyQjs7VztXOzs7UTs7UyxvQixXO1MsTztROzs7Ozs7O1MsSSxRLHdCLFU7OztVO1U7VSxPOztTO1E7O1M7O1E7O1MsbUMsTztTO1M7UyxpQjs7OzBDLGtDO3dDLGlDOztTO1MsWTs7VTs7VyxPO1csTztVO1U7VSxXO1UsTzs7Uzs7UTs7UztTOztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLFE7O1M7O1UsTzs7Uzs7VTtXOztZLE87WSxPO1csTzs7Ozs7Ozs7OztrQjtVO1M7O1UsUTtVOzs7O1c7VztVO1M7O1UsSyx5QjtrQjs7VTtTOztVLFE7VSxJLFk7Ozs4Qjs7O1U7VyxVO1c7VTtTOztVLFE7VTtVO1M7O1U7OztVO1U7Uzs7VTs7VztZO2E7Ozs7YyxPO2E7O1k7WTs7VSxPO1M7O1U7Ozs7VTtXOzs7Yzs7O2M7Ozs7ZSxNO2M7ZTs7a0IsMkI7a0IscUI7b0M7a0I7a0I7O2U7O2tCLFE7Ozs7O2U7O2tCLEcsOEI7MkI7Ozs7bUI7O2tCLE07OztjLE87OztVLE87Uzs7VTtXLFE7Vzs7VTtTOztVO1U7Ozs7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7O29COzs7Uzs7VTtVOzs7O2U7Z0IsUztnQixlOzs7O3dDLE87OztlO2dCOzs7O1csTzs7Uzs7VTs7Ozs7O1csTTs7OztXO1k7O2U7Z0IsUztnQixhOzs7O3VDLE87OztlO2dCOzs7O1csTzs7Uzs7VTtVOzs7OzBDOztlO2dCOzs7O2U7O1csTTs7Uzs7VTtXO1csZTs7Uzs7VTs7O3FDO21CO21COztTOzZCLDJCOztVLG1COzs7O1M7O1U7O1c7WSxNO2tCOzs7VTtTOztVO1M7OztVOzs7VTs0QixTO2tDLFM7VSxPO1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7O1M7O1U7c0I7O1U7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0k7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7STs7OztJOzs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7NEIsTyxzQzs0QixPLHVDOzZCLGdDOztJLGlCLDZCO0k7Rzs7STtHO2dDLHlDOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzBCLDhCOztJO0ksTztHOztJO0c7O0ksMEM7OztJLE87Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7O0k7K0I7OztLLE07O0k7OztJLFk7O0k7OztJLFk7O0k7OztJLE07Rzs7STtLO0s7SSxNO0c7O0k7SSxNO0c7O0k7SSxNO0c7O0k7Ozt3QjtJOzs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTTs7OztJO0c7O0kscUI7Ozs7Ozs7Ozs7OztnQjs7Z0I7OztNOzs7STtHO0c7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7O0k7Ozs7OztLO0ssUTs7O0ssSztJOzs7O0ksVztJOzs7SSxJO0k7Rzs7STtJLFc7Rzs7STtJO0c7eUIsaUM7O0k7OzRCLFcsOEI7SSxPO0c7O0ksbUMsYztJLE87Rzs7STtJLE87Rzs7Z0Msc0M7SSxPO0c7O0k7OztJOzs7Ozs7ZTtHOztJO0s7OztLLE87SztJLFU7OztHOztJO0s7OztLLE87SztJLFU7O0k7Rzs7SSxxQztjOztJOzs7SSxxQztjO0k7O0s7SztJLE87OztJOzs7Ozs7SyxTO0s7STs7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0ssTztLLE87dUIsd0I7SSxPO0c7O0k7SztNLGE7TSxjO00sTztNLE87TSxPO0ssTzs7STtLLE87SyxnQjtLLE87SyxPO0ksTztHOztJO0c7O0k7Rzs7STtHOztJOzs7O2MsVztpQyx3QjtjLE87YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7OztLO3FDO0k7Ozs7O1k7Ozs7O0k7YTtJO0c7O0k7STtHOztJO0ssTTtJOztLLG1CO0sscUM7dUI7dUI7dUI7O00sTTs7TSxNOzs7TSxNOztLO0k7STs7OzJCOzs7O1EsMEM7USxrQjs7OztJO0c7cUMsNkI7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssSztLLE87SztJOzs7STs7Szs7Ozs7OztLLEs7SyxLO0s7STtHOztJOztLOzs7OztLO0s7Tzs7VTs7OztJO0c7O0k7O0s7Ozs7O0s7SztPOztVOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SyxNO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJLE07Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLE87SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLOztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0ssTztLLFE7SztLLEk7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SyxPO0ssUTtLO0ssSTtJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87SztPO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLLFE7SyxPO0s7Tzs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLE87SztLLFE7SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLLGdCO0s7SztJO0c7O0k7O0s7Ozs7O0s7OztLOzs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0k7STtLLFc7SyxPO0s7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SyxLO0k7STtLLE87SztJOzs7STs7Szs7Ozs7SyxLO0ssSztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLOzs7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssTztLLFc7SztPO0ssUTtJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLOzs7O0s7STtJO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0ssSztLLEs7SztLOzs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztLO0s7O0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztLLEs7SztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLLFc7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLLGlCOztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0s7O0s7STtHOztJOztLOzs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7OztLOztLLFE7STtHOztJOztLOzs7Ozs7Szs7SyxRO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7TztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0ssTztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0k7SyxNO0k7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87Syx5QjtJO0c7O0k7O0s7Ozs7O0ssUTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLLE87SyxXO0s7Tzs7Ozs7Ozs7OztLLFE7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7Ozs7SyxJO0ksSSx1QjtJOzs7STs7Szs7Ozs7Ozs7O0s7Szs7OztLLEk7SSxJLHVCO0k7Rzs7STs7Szs7Ozs7Ozs7SztLOzs7O0ssSTtJLEksdUI7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLOztROzs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SyxJO0k7Rzs7STs7Ozs7Ozs7O0ssTztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7Ozs7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLLE87SyxPO0ssTztLLEk7STs7O0k7O0s7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7OztJOztLOzs7Ozs7OztLLE87SyxPO0ssTztLLEk7STtHOztJOzs7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJOzs7STs7Szs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7O0s7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLLEs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SyxlO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7O0s7STtJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7OztLOztLO0s7O0k7SSxNO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0s7SztLLE87SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SyxPO0ssUTtLO0ssTztLO0k7OztJOztLOzs7Ozs7O0s7SztLLE87SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0ssTztLOztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7O0ssSTtJOzs7STs7Ozs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7STtJO0s7SyxJO0s7STtHOztJOztLOzs7Ozs7O0s7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SyxLO0k7STtLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7OztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLLE87SztPOzs7Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0ssTztLO0ssTztLO087Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxRO0ssTztLLE87SztPOzs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SyxPO0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLOzs7Szs7SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0ssTztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7Ozs7TSxNOzs7STtLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0s7Szs7Ozs7STs7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLOztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7OztLO0ssbUI7OzJCO0ssVztLO0s7Tzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SyxPO0s7SztPOzs7Ozs7OztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLOzs7SyxPO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLLE87SztLO0k7OztJOzs7Ozs7Ozs7O0ssSztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7SyxLO0s7STs7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0s7Szs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7STtLO0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxPO0s7SztPOztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssTztLO0s7Tzs7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0ssTztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0k7SyxXO0s7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7O0s7SztLOztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0s7SztPOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLLEk7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7SyxNO0s7STtHOztJOztLOzs7OztLO0ssTTtLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztLOzs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0ssSztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxLO0s7STs7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SyxLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87SztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOztLO0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztJO0c7O0k7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SyxPO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0ksZTs7SyxNO0k7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLLE87SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLEk7STtHOztJOzs7Ozs7Ozs7SyxPO0ssTztLO0ssSTtJO0c7O0k7O0s7Ozs7O0s7SyxJO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SyxLO0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7O0s7Szs7Syw0QjtJOzs7O0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7RztJOzs7UTs7Uzs7OztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO3dELE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHOztJO0c7O0k7OztLO0s7Ozs7OztJOzs7STtJOzs7MEI7SSxjOzs7STtJO0c7O0ksZ0I7O0k7SSxJLFUsNkI7STtJO0c7O0ksTTswQjtHOztJLE07Rzs7STs7OztNLFU7Ozs7Ozs7Ozs7TyxNOzs7TyxNOztNOzs7Ozs7Rzs7STs7OztTOztTOztTOzs7c0I7STtHOztJLGdCO0ksTTs4QjtHOztJOzJCLE87STs7cUM7Rzs7STsyQixPO0k7O3FDO0c7O0k7SSxPO0c7O0ksVztJO0c7O0k7STs7Ozs7OztHO0csSSx1Qjs7SSxXO0ksTzs7RztHLEksNEI7O0k7O0c7O0k7Rzs7SSx1Qjs7OztpQjs7TTtPLFU7Yzs7OztROztTLE87Z0I7OztROzs7Uzs7WSxrQjs7WSxPO1c7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7OzttQjs7UTs7UyxlO2dCOzs7OztnQjs7Ozs7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7O0k7RztHOztJLGE7STtJO0ssTzs7STtHOztJO0k7Szs7UTs7Ozs7OztVOztVOzthOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1UsbUI7VTs7OztTLFM7cUM7UztTO1UsTzs7Uzs7UyxnQzs7UztVLE87O1M7O1M7O1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7UzttQjtTO1UsVztVOzs7O2lDOzs7O1M7bUI7UztTOztTO21CO1M7O1M7bUI7UztTOztTO2dCO1M7O1M7VTtZOztVLFE7Uzs7UztrQjtTOztTO1U7WTs7VSxVO1M7O1M7O1k7Uzs7UztVOzs7Uzs7UztVO1k7O1U7OzZCOzs7Uzs7UztVO1k7O1UsVztVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTO1U7WTs7VSxhO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1MsZ0M7O1MsUTtTOztTLFU7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7UztVOzs7Uzs7UztVOzs7O3dCOzRCOztTO1U7WTs7VTs7O2UsYTtlO2M7Ozs7Uzs7O1UsVztVOztTO1U7OztTOztTOztZOztTLDJCO1UsVztVLFk7O1MseUI7O1MsWTtTOzs7O1M7O1M7UyxzQjtTO3VCOztVOztVO1c7O2M7Ozs7OztXOzs7VTtXO1c7VyxNO1c7VztXLFM7VztXLFk7OztXLEksZTs7Ozs7OztrQjs7OztXOzs7VTs7OztvQzs7OztTOztTOztTOztTOztTOztTOztTOztTOztTO2lCOzs7Szs7O0c7MEI7O0k7a0I7O0s7TTs7Uzs7O007Ozs7OzttQztROzs7OztTLE07OztTLE87Ozs7UTs7OzhCO1E7OztZOzs7Ozs7Vyx3Qjs7WSxNO1c7O1ksTztZLFE7O1c7Ozs7Ozs7UTs7O1E7O1M7UyxROzhCO1E7OztZOzs7Ozs7Vyw0Qjs7WSxNO1c7O1ksTztZLFU7O1c7Ozs7Ozs7UTtRO1E7OztROztRLGdDOztROztROztROztROztROzs7O1MsTTtROztTLE87UyxVOztROztRLGdDOztRO2dCOzs7Rzs7STtrQjs7SztNOztTOzs7TTs7Ozs7OztROztTO1MsUTtRO1Esa0I7OztRLFE7UTs7O1E7O1E7O1E7OztRO1MsTTtTLE07Uzs7Ozs7O1M7VTtVO1k7ZTtzQztRO1M7O1M7Ozs7UyxVO1M7O1E7Ozs7UyxVO1M7O1E7UTs7OzZCOztRLFU7UTs7O0c7O0k7O0s7TTs7Uzs7O007Ozs7O1EsZ0M7OzZCOztROztXOztRLEc7UTs7O1EsUTtROzs7Rzs7STtJO0s7O1E7Ozs7O1M7O1M7aUI7O0s7OztHOztJO2M7O0ksTztHOztJLGU7O0s7SztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtVO1csTTtXLE07VyxVO1U7VSxHLGtCOzs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7O1U7Ozs7Ozs7Ozs7O00sYzs7Ozs7UyxVO1M7UyxVO1M7OztTLFU7UztTOzs7Ozs7UyxVO1M7UztVLE07VSxNO1M7UztVLE07VSxNO1M7UyxVO1M7OztTLFU7UztTO1UsTTtVLE07UztTLFU7UztTLFU7UztTOzs7TTs7STtJO0c7O0k7Ozs7Yzs7SSxPO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TyxLO087TyxNOzs7Ozs7TyxVO08sRztRO08sTTs7TSxHO087TyxNOzs7OztHOztHLDZCO0c7RywwQjtHO0csOEI7RztHLHVCO0c7Ryx3QjtHO0cseUI7RztHLHNCO0c7RywwQjtHO0csMEI7RztHLHdCO0c7Ryx3QjtHO0csMkI7RztHLG1DO0c7RyxpQztHO0cseUI7O0ksOEI7Ozs7Tzs7Ozs7UTs7ZTtjOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7Ozs7OztVOzs7O2lDOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7STtLLGE7O0ksMEI7O0ksMEI7STs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7O0s7STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7OzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7O1E7Ozs7O1E7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1EsTzs7OztRO1E7OztRO1E7OztrQjtrQjtrQjtpQjs7Ozs7UTtROzs7UTtROzs7UTtROzs7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7OztROzs7OztRLE87OztROzs7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7Ozs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1EsTzs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtROzs7UTtROzs7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7OztRO1E7OztRO1E7UTtROzs7UTtROzs7OztRO1E7Ozs7Ozs7Ozs7UTtRO1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztROzs7OztRLE87OztROzs7OztRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7UTtRO1E7Ozs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7eUI7OzJCOzs7TztRLE87O087Ozs7O1E7UTs7UTtTLE87O1E7O087USxPOztPOzs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7O1E7UTtRO1MsTzs7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJOzs7STs7O0k7OztJOzs7STs7OztJO0k7OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJOztLO0s7SztJO0ksTztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTtROzs7O1E7UTtROzs7OztRO1E7OztROzs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPOztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087Ozs7OztPOzs7TztPO087OztPO087OztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7SSxZOztJOzs7STs7O087Tzs7O08sTzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7Ozs7O0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7Rzs7STtJO0k7O0c7OztJO0k7Ozs7STtJOzs7O0k7STtJOzs7STs7Szs7OztNLE87O0s7SztLOzs7STtJO0c7Z0MsdUM7bUMsdUM7O0k7OztLO0s7Ozs7Ozs7STttQjs7Ozs2QixPOzs7cUIsTzs7TyxPOzs7TyxPOztPLG9CLE87TyxPOztHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXOzs7O0ksYzs7O0ksZ0MsTztJLFc7OztJLFk7O0ksVzs7OztJLGdCOzs7SSxlO0k7Ozs7SyxRO0ksTztHOztJOzs7O0ssUTtLLFU7STtLLE87STs7O08sTzs7Tzs7OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O087OztROztXOzs7O1ksTTtZLFE7VztZOzs7YSxPOzs7OEM7VyxPOztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O08sZ0MsTztPLE87OztPOzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7Ozs7YSxPO2EsTzs7OzRDO1csTzs7USxPO08sTzs7O087OztRLE87USxzQjtRLE87TyxPOzs7Tzs7OztRLE87USxzQjtRLHNCO1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7STtLOzs7O00sTztNLE87SyxXOztJO0ssVztLLE87SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7Ozs7OztJOztLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLLE87SztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7O0k7Ozs7SyxNO0ssUTtLLE87SSxPOzs7STs7Ozs7SyxNO0ssUTs7Szs7OztNLGU7TTtNLHNCO2lCOzs7STtJLE87Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7OztRLE87USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O08sa0IsTztPLE87O087Ozs7OztRLE87UTtPLE87OztPOzs7Ozs7USxPO1E7TyxPOzs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SyxPO0ksTzs7O0ksWTtJLGlDLE87STs7O0k7Ozs7SyxRO0ssVTtJOztPLGlCO08sTzs7TyxrQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O087OztRLE87USxPO1EsTztPLE87OztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CO08sTzs7OztJOztPLGtDLE87Tzs7Tyx1QztPOztPOzs7USxPO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPLG9DO087Ozs7STs7O0ssUTtJOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPOzs7USxVO1EsTztPLE87Ozs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxRO0k7O087OztRLFU7USxPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O08sbUIsTztPLE87O087Ozs7USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLGU7UTtPLE87OztPOzs7USxlO08sTzs7O087OztRLGU7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O087Ozs7USxPO1E7USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7O1EsZTtRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087Ozs7OztRLE87USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87USxPO08sTzs7O087Ozs7USxPO1EsZTtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O08scUI7TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7USxPO1Esc0I7USxzQjtRLE87TyxPOztPOzs7O1EsTztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPOzs7USxlO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7TyxvQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7USxPO1EsTztRLE87USxPO08sTzs7O08sbUIsTztPLE87Ozs7STs7Ozs7SztLLE07SyxNO0ssTTtJLE87OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O087OztRO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1E7OzthOzs7YyxPO2Esb0I7YSxXO1k7O1E7TyxPOzs7Tzs7O1EsZTtPLE87OztPOzs7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08sbUI7TyxPOztPLG1CLE87TyxPOztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxpQixPO08sTzs7Tzs7O1EsTztRO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87Ozs7O0k7O0ssVzs7O0ksYzs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7O1EsOEI7USxPO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7OztRO1E7TyxPOzs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7OztJOzs7Ozs7SyxPO0s7SyxXO0ssVztJLE87O0c7O0k7Ozs7O0ssTztLLE87SyxXO0ssVztJLE87Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7O3lCLFc7OzJCLFc7OzJCLFc7O087OztRLGU7TyxXOztHOztJOzs7OztLO0ssVztLLFc7SSxPOztHOztJOzs7OztLLE87SyxXO0ssVztJLE87O0c7O0k7Ozs7O0s7SyxlO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0s7SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOzJCLFM7O0k7Ozs7OztLLE87SztLLFc7SyxXO0ksTzs7Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7SSxnQyxPO0k7Rzs7STs7Ozs7OztLO0ssZTtLO0ksb0I7STtLLFc7SyxXO0ssVztJLE87Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksTztHOztJOzs7O0ssTztLLGU7SSxXO0c7O0ksVztJLE87RztHOzs7O1E7UyxPO1MsTztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07O0k7SyxPO0k7O0s7O007TSxPO00sZTtLLE87Ozs7O0k7STtLLE87O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7NkIsd0I7c0IsbUM7O0ksVztJLE87Rzs7STtLO0ssTzs7STtJLE87Rzs7STtLOzs7O00sVztNLFc7TTtLLE87O0k7SSxPO0c7O0k7SyxPO0s7OztVOzs7VztVLE87OztJO0c7O0k7SztLLE87SyxlO0k7Rzs7STs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7OztLOztNO007YTs7SztNO2E7STs7Szs7Syw4Qjs7Szs7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O1E7Ozs7O0ksTztHOzs7SzswQjs7O007Ozs7Ozs7Tzs7TSxPO0s7O007Ozs7Ozs7OztROzs7Tzs7TSxPO0s7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7O1EsbUM7USxXOzs7O00sTzs7Ozs7Tzs7Ozs7Tzs7Ozs7Ozs7O087Ozs7O087Ozs7O087Ozs7O087TyxjOzs7OztPO1E7Ozs7Ozs7Ozs7OztjOzthLE87Ozs7OztXO1csTztVO29COzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7O087Ozs7O087UTs7VyxtQixNO1c7VyxPO1U7UTtPLE87OztPOzs7OztLO0k7SSxPO0c7OztLOztNO0s7STtJO0ssVztLO0ksTztHOztJLFk7Z0IsTTs7O0s7O0k7Rzs7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztNO08sVztPLE87Ozs7TTs7Tzs7O0ssSSxtQztLLFc7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJO0k7SyxLO0s7TywyQjs7SyxVOztLLFU7SztLO00sUTtNLEs7SztLO0s7SyxPO0k7SSxPOztjOzs7aUI7O2dCO0c7O0k7Ozs7OztPLGM7Tzs7OztJOzs7STs7Ozs7O08sYztPOzs7O0k7OztJO0ksVztHOztJO0ksVztHOztJLGtELGM7Rzs7STtLLGtDO0s7TTs7O1U7VztZLE07WSxNLG1CO1c7OztXOztZO21DLE0sb0M7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087TztPOzs7TTtnQjs7Szs7O0s7O00sTTtLO0ssTzs7RztHLDhDLG1COztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztpRCxPO2lELE87OztJO0ksTzs7O0ksWTs7SSxPOzs7O0ksTzs7OztJO0k7O0ssc0IsTztLLE87OztJLE87Ozs7STtJOzs7SyxPOzs7SSxPOzs7O0k7STs7Ozs7UTtRLE87O1EsbUIsTztRLE87OztRO1EsVztRLE87O1E7O1Msc0I7USxPOzs7UTtRLFc7USxPOzt5QixPOztRLGtCLHNCO1EsTzs7MkIsTzs7O1E7UTtTLE87UyxzQjtTLHNCO1EsTzs7eUIsTzs7STs7Ozs7Ozs7Ozs7STtJLFc7SSxvQjtJO0k7SyxLO0ssSztLLEs7STs7SztLO0ssTzs7STtJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJLG9CO0k7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7Szs7OztNLHNCO0s7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVztPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFc7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFc7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxXO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE87TyxPOzt5QixPOztPLGlCLE87TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGdDLE07TztPLE87OzBCLE87OztPLFM7TztPLE87OztPO087USxPO1Esc0I7TyxPOzs7TztPLE87OztPO08sTzs7TyxrQixPO08sTzs7O087TyxnQjs7eUIsZ0I7O087OztRLE87USxzQjtRLHNCO087TyxnQjs7O087Tzs7O087TztPLE87O08sb0IsTztPLE87OztPO087TyxnQjs7O087TyxPOzs7TztPLE87OztPO087TztPLE87OztPO08sTzs7O087TyxTO08sTzs7MEIsTzs7NEI7OztPO08sTzs7Tzs7USxPO1Esc0I7USxzQjtPLE87OztPO087TyxPOzs7TztPLE87OzJCLE87OzJCLE87OztPO08sZ0I7OzBCLE87OzJCLE87OzJCLE87OztPO08sTzs7Ozs7OztPO08sVztPO08sTztrQyxPOzs7Ozs7Ozs7STtJO0k7SSxPOzs7O0k7STtpQzs7O3dCOzs7TztPOztPOztPOztPLGtCLE07TyxPOzs7TztPOztpQjtpQixrQjtpQjtpQixPO2dCOzs7MEIsZ0I7O087O1EsTTtRLG9CO1Esb0I7TyxPOztPLG9CLE07TyxPOzs7TztPLE87OztPO08sTzs7MEI7OzBCLE87OzBCOzswQixPOzt3QixPOzs7TztPLE87Ozs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOztPLG1DLE07TztPLE87OztPO08sTzs7d0IsTzs7O087TyxPOzs7O0kscUMsTzs7SSxPOzs7O0k7STs7O3lCLE87OztPO087OztPO087OztPO08sTzs7d0IsTzs7d0IsTztrQyxPOzs7OztJO0ksVTtJLE87OztJOzs7Ozs7SyxNO0ksa0I7STtJO0k7STtJLE87OztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7O0ksVTtJLE87Rzs7SSxVO0ksTztHOztJOzt5QixPOzsyQixPOzsyQixPOzs7TztPLGdCOztHOztJOzs7O0k7STtJLE87Rzs7STs7OztJO0k7SSxPO0c7O0k7Ozs7O0k7SSxTO0k7SSxPO0c7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7MkIsUzs7STs7Ozs7STtJO0k7SSxPO0c7O0k7Ozs7STtJO0ksTztHOztJOzs7O0k7STtJLE87Rzs7STtJO0ksTztHOztJOzs7Ozs7O0k7SSxrQjtJO0k7SSxTO0k7SSxPO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLE87Rzs7STtJO0ksUztJLE87Rzs7SSxVO0ksTztHO0c7STs7O1E7UTs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7Ozs7Ozs7b0IsdUQ7SSxZO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O3VCOztROzs7OztJO0c7O0k7Z0I7O0k7Rzs7SSxJOzs7OztLLE87Ozs7OztnQixNOzs7Ozs7O087OztROzs7O1k7O3FCLE87b0I7Ozs7Ozs7WTs7cUIsTztvQjs7Ozs7Ozs7Ozs7Ozs7OztlOzt3QixPO3VCOzs7Ozs7Vzs7b0IsTzttQjs7O1EsTTtPLE87Ozs7Ozs7OztJLE87Rzs7STs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7O0k7Rzs7SSxHLHNDO0ksVztJLE87Rzs7STs7Ozs7eUQ7O0s7O0k7Z0I7O0k7RzsyQixPLDJDOztJLEk7O0s7O007OzBDOztNO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7SSxPO0c7O0ksSSw4Qjs7SyxjO2U7SztLLE87STtJLE87Rzs7STtJO21COzs7Ozs7Szs7Rzs7STtnQjtJOztLO0ssTTtJLE87Rzs7STtLO0s7STtLOztNO00sTTtLLE87O0k7Rzs7STs7OztNOzs7STtHOzhCLHlDOztJOzs7O007OztJO0c7K0IsMEM7O0k7O0s7SyxPO0k7SSxPO0c7O0ksTztHOztJOztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7O1M7OztROzs7Ozs7Ozs7Ozs7OztXLGMsTzs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7UyxJLFUsNEI7Ozs7OztVOzs7Ozs7Szs7Ozs7O2tFOzs7SSxXO0k7SztNLE07TTtLO0ssVTtLO0s7Ozs7SztLLE07O0c7O0k7Ozs7SztJO0c7Ryw4Qjs7STs7OztLO0k7RztHLHFCOztJOzs7O0s7STtHO0csZ0I7O0k7Ozs7SztJO0c7RyxrQjt3QixPLHdDOztJLGtCO0ksTztHOztJLGtCO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7O0k7SSxpQjs7SztJO0c7O0k7SSxpQjs7OzttRDs7Ozs7MkIsbUIsNEI7USxPOztJO0c7O0k7Ozs7Ozs7OztRLEs7UTs7Ozs7Szs7SSxrQjs7Ozs7O1E7OzJCOzs7cUI7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs0Qjs7NEI7Ozs7UTs7O3FCOzs7MkIsbUIsNEI7USxPOzs7Ozs7Ozs7O0s7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7MEI7O3NCOztJO0c7O0k7O3VCOztJO0c7RztJLE87Rzs7STtrQjs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OztvQjs7b0I7O0k7Rzs7STtJLGlCOzs7b0I7OztRLE87OztJO0c7O0k7Ozs7Ozs7Z0I7Rzs7STs7Ozs7OztnQjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsTyx1QzswQixPLHVDOzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJO0k7O0k7SSxXO0c7eUIsa0M7OztJLG9CO0ksVztJLFc7Ozs7O0s7SyxPO0k7SSxPOzs7SSxRLE07STs7O0ssUTs7O0ksSSxrQzs7OzRCOzs7Rzs7STs7dUIsTzs7Tyw4QjtPLE87ZSxNOztHO0c7O0k7Szs7Rzs7OztLO0s7OztRLEksSTs7OztvQjs7UTs7UTs7O1M7Ozs7OztROzs7Ozs7SSxJOzs7O0s7Szs7O0k7SSxPO0c7O0k7dUI7O0k7RztxQywrQjs7STs7OztLO0ksVztJLE07Rzs7STtJOzttQzs7O1E7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRLDBCO1EsTzs7Ozs7O1k7WTs7YTs7O1k7VztRLE87OztRO1EsMEI7USxPOzs7Ozs7OztZO1k7YTs7YyxzQjthLE87OztZO1c7USxPOzs7OztRO1E7Z0Msa0IsUztTLE87UyxzQjtRLE87a0M7OztHOztJLFk7O0ksTzs7O0k7SyxrQixzQjtLLE87OztxQiwwQjtJLE87OztJOztLO0s7SztJO0k7STtJOzs7Szs7TTs7Uzs7UyxvQjtTLE87O0ssTzs7O3VCLDRCO0ksTztHOztJOzs7SztLLDBCO0ssTzs7O0k7Rzs7STs7SSxvQjtJLE87Rzs7STtHO0c7O0k7STs7bUM7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRO3FDLGtCLGtCOzs7OzJCOzs7Ozs7WTtZO1k7VztRLE87O1EscUIsc0I7USxPOzs7UTs7Ozs7UTtROzsyQjs7OztROztTOzs7WTthOztXO1EsTzs7OzswQjs7UTs7O1M7Ozs7Z0I7OztHOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7Ozs4Qjs7O1E7USxJOzs7O1E7OytCLGtCLHlCO1EsTzs7O1E7UTs7O1E7UTs7UTs7UyxxQjtRLE87OztRO1E7OytCOzs7Ozs7O1k7WTtZO1c7UTtROzs7UTtROzs7UTtROzs7O1E7O1MscUI7USxPOzs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7Ozs7K0Isa0IseUI7USxPOztROzs7O1M7Uzs7OztpQjs7Ozs7Ozs7Ozs7OztRO1E7O1E7Ozs7UztTLHFCO1EsTzs7Ozs7UTtTLE87O1E7O1E7OztTOzs7OztROzs7OztTO1M7O2E7Yzs7O1MsTzs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7WTs7a0M7O21DOzttQzs7cUM7O29DOztxQzs7VztRLE87OztRO1MsTzs7UTs7MEI7b0M7OztHOztJO0k7Ozs7MEI7OzBCLHdCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1MsTzs7UTtvQzs7O0c7OEI7O0k7OztJOzs7STtLOzs7O007SztLOztJLE87Rzs7d0IsNkI7STtLLE87SztvQiw0QjtJO0k7Rzs7STs7Rzs7STtJO0ksSSxnQzs7Ozs7MEM7SztLOztHOztJOzs7eUI7OzRCOzt5QjtlLHNCOztHO2tDLCtCLFM7O0ksTzs7O0c7O0ksaUM7OzswQixxQjs7Ozs7OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtRLFE7USxNO08sVzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTs0QixpQztPO087OzBCOztPOztROzs7TztPO1EsUTtRLE07TyxXOztPOztRLG9CO087Tzs7Tzs7USxvQjtPO087O087O3lCLHFCOztPLGtCO3lDO087O0ksa0I7STtJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7Ozs7UTtRLHdCO1EsTzs7O1E7UTs7Ozs7O21DOztxQzs7dUM7OztlO2U7O2U7eUM7OztRLE87OztROzs7OzBCOztROzs7Uzs7Ozs7Rzs2QztHO2tEO0c7O0k7Szs7O0k7STtHOztJLE87Ozs7O0c7O0ksaUM7Ozt5QixpQjs7TyxtQztPOzswQixxQjs7Tzs7USxvQjtPO087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTswQixtQztPO087O08sb0I7eUM7Tzs7MEI7O087O1EscUI7TztPOztPOztRLG9CO087Tzs7Tzs7UTs7OzBCLG1CO087USxRO1EsTTtPLFc7O087bUMsdUI7Ozs7STtJO0c7c0MsOEIsUzs4QztHOztJLG1COztJOzs7STtJOzs7OztRO1Esd0I7USxPOztROzs7O1M7UyxvQjtRLE87OztRO1EsSTs7OztROzsrQixrQix5QjtRLE87O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1E7OztTOzs7OztHOztJOzs7OzsyQjs7Ozs7Ozs7Ozs7OztRO1E7OzRCOztRO29DOztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxlO0ksYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0ksYyxPOztJO0k7Rzs7STs7OEIsTzs7OEI7O087OztRLE07USxNO08sTzs7Rzs7SSx3QztJOzs7SyxNO0ssTTtJLE87Rzs4Qiw4Qjs7STs7Ozs7Ozs7Ozs7O0s7O0ksTztHOztJOzs7Ozs7Ozs7O1MsTzs7Ozs7Szs7O0c7O0k7O087OzZCOzs7RztHOztJOzs7RzswQiw0Qjs2Qiw4Qjs7STtLOzs7OztnQztRLE87O1E7Ozs7UyxtQjs7NEI7USxPOzs7USxPOzs7Ozs7NEI7USxPO007RztzQyx1QjsyQix1Qjs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7O0ssSTtJOzs7Ozs7OztJLFksTzs7OztLOzs7STtHOztJLFE7STs7Ozs7SyxJO0k7O007OztLOzs7O2tDO2E7YTs7STtpQixNOzsrQjs7Ozs7OzttQixNO0s7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7O21CLE07Szs7OztNLEk7SyxZOzs7OztJLFk7SSxrQjtJO0c7Ozs7bUI7Szs7OztNLEk7SyxZLHlCOzs7Ozs7OztNOzs7O08sUztPOzs7OztvQjs7Ozs7Ozs7O0k7STt5QixpQztHOztJLFE7SSxjO0ksTztHOztJO0k7O2M7YyxxQjthOzs7O0c7Ozs7bUI7O0s7Szs7Ozs7STtJO0sscUIsTzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7Ozs7O1UsTzs7Ozs7O1U7OztXLE07VSxVOzs7Ozs7OztVLG9DO1UsVTs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7VSxPOzs7Ozs7VSxrQztVLGlCOzs7Ozs7UyxvQztTLGM7Ozs7d0I7O0s7O0c7Ozs7OztRLHFCLE07USxPOzs7O1Esc0M7Z0I7Ozs7Z0MscUM7O0k7STs7OzZCLE87Ozs7UTs7O1M7UztRLE87O0c7MEIsUzs7STtJOzswQixPOzs7TyxHO1E7UyxNO2U7O2tCO087TyxPOztPOzs7UTtRLE07USxNO1E7TyxPOzs7O0k7OzBCLE87OztPLE87OztPLE87Ozs7STtJOzs7NkI7Ozs7USxNOztHOztJOzs7OzJCOztROzs7Uzs7OztnQjs7Rzs7STtLO0s7OzswQjs7OztTOzs7VTs7OztJO0k7Rzs7STtJOzs7NkIsTzs7NEI7OztHOztJLEc7aUI7SSxNO0c7O0k7OztPLGEsNEI7Ozs7TztROzs7STtHOztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kseUM7STtHOztJLDZDO0k7Rzs7SSw0QztJO0c7O0k7Rzs7STtHOztJOztZOzs7OztHOztJO0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksd0I7STtLO00sTTtNOzs7O1ksTTs7Ozs7SyxNO0k7STtLOzs7Szs7SSxVO0k7SztNLE07TTs7OztZLE07STs7Ozs7Ozs7O0k7Ozs7Ozs7Rzs7STs7OztNOzs7Ozs7TztNOzs7O007Ozs7K0M7OztvQix1QjtJLEcseUM7SSxNO0c7O0k7O087OztJO0ssVTtLLGE7STtJO0s7Szs7Szs7Ozs7Szs7O1M7Ozs7O0k7STtLO0ssTTtLLGE7SztJO0c7O0ksTztHO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SyxNO0ssbUI7O0c7O0k7O08sTzs7TyxPO2UsTzs7Rzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7STs7Ozs7STs7Ozs7OzRCOzs7Ozs7Z0I7O0k7Rzs7STtLLFE7SyxVOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STswQixxQjs2QixTLGdDOztJLE87SyxXO0s7O0ksVztHOztJLE87SyxXO0s7O0ksVztHOzs7SSxnRDtJO0c7O0k7O087O087O087O087O087O087ZTs7Rzs7SSx5QjtJO0c7RztJOzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4Qjs0QixXLDhCOztJLFc7Rzt3QixXLDhCOzJCLFcsOEI7O0k7OztLLE87SSxPOzs7OztLO0k7SSxvQjs7O0s7TSxXO00sTzs7Szs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7OztRO1MsTzs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7O0ksTztHOztJO0ksWTtJO0c7RyxnQzsyQiw4QjtrQyxrQzswQiwwQjtzQix3Qjs7STtrQzt1Qjs7SSxJLFcsa0M7Ozs0Qjs7O0c7NkIsNkI7O0k7OztLOztJO0c7O2tDLG9DOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxPO0s7STs7SztLLG1CO0s7STs7O0ssMEIsc0I7Syw4QixzQjs7O007O0ssd0IsdUI7cUI7O21DOzs7O1EsSSxVOzs7O1MsSSxVOzs7Z0M7OztTLE87Ozs7a0I7O1E7O1E7OztTO1E7O1E7OztTO1M7O1M7Ozs7VTtVOzs7OztVOzs7UTtROztROztTLG9CO1MsTTtROztROzs7UztpQyxrQztTOzs7UyxJLFM7OztnQzs7O1M7OztROztRLDBCLFU7c0I7O1E7Ozs7SyxrQjtLO0k7O0s7SztJOzs4QiwwQjs7O007OztLLDZCO0s7O3lCOztRLGtDO1E7O3VDOzs7USxXOzs7UTs7eUI7aUM7O0k7O0s7TTtNLG9CO00sdUI7TTtNOzs7Ozs7OztJO0k7O0c7bUMsUzs7SSxNO0c7O2dDLDRDO0c7OztLOzsyQixPOzs7UTs7USxrQztROztJO0kscUI7Rzs7SSxzQztHO29DLHNDOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksaUI7SSxPO0c7O0k7SSxPO0c7O0ksSSxtQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksd0I7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtDO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSxvQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksdUI7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qix5QjtvQixZOzBCLHlCOztJOztPOztPOztPOztPOztPOztPO2U7O0c7MEIsZTswQixlOzJCLGdDO3VCLHlCOztJO0k7ZTtHOztJO0kscUI7RztHO0k7STs7Ozs7O0k7STtHO3lCLGlDO3lCLHFCLDJCOztJLEksaUIsaUI7STtHOztJO0ksTztHO3lCLHlCOztJLHNCLGlCLGtCOztHOztJO0ksTztHO3dCLHFEOztJOztPLE87O08sTztlLE87Ozs7STtLLE87STtJLFU7SSxPO0c7O0k7SSxPO0c7O0k7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1UsTTtVOzs7O0k7Rzs7STs7Ozs7O0s7STtHOztJOzs7Ozs7OztJO0c7O0k7STttQjs7Ozs7O1M7Ozs7O1E7Ozs7Uzs7Ozs7UTs7OztHO3FDLG1CLFU7RztxQjtHLFk7O0k7Ozs7Rzs7STtJOzs7Ozs7OztLOztHOztJOztHOztpQyxjOztJO0k7Ozs7Rzs7NkIsYzs7Ozs7Ozs7OztTOzs7Ozs7Szs7Szs7Ozs7Ozs7OztRLHNDOzs7d0I7O0k7OztJOzs7OztRLHNDOzs7NEI7O0k7Rzt3QixrQjt5QixrQjt5QixrQjtzQixrQjtnRDtHOzRCLG9COztJLEs7SyxNOzs7Rzs4QixxQjs4QixxQjt1QixVOzBCLFU7O0k7Ozs7SyxJOztHOztJO0ksTztHOzBEO0c7O0k7O0ssc0I7SyxPOzs7Rzs7STtJO0s7OztLOztHOzBCLGtDOzRCLGtDOzJCLGtDOzBCLGtDOztJO0k7O0s7OztNLEcsdUM7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sSSxPOzs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7O0k7Ozs7STtHOztJLFk7O0k7Rzs7STtJO0c7O0ksVztJO29CLDBCO0ksTztHOztJLDBCLE87aUMsTztJOzs7OztLOzs7SSxPO0c7RyxhOztJOztHO2dDLHNDOztJOzsyQzs7K0M7OzhDOzs4Qzs7Ozs7Ozs7Ozs7RztHLG9COztJOztHOztJLEksbUI7c0I7STs7STs7Ozs7O0s7Ozs7O0s7Szs7STtHOztJLEk7O0c7O0ksSTs7b0M7STtHOztJLEk7O29DO0k7Rzs7STs7O0c7NEIsZ0Q7O0k7STs7O21EOzs7O0ssTzs7Rzs7STtJOztNLE87OztNO087Ozs7Ozs7Rzs7STtJOztNLE87Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztHOzRCLHdCOztJOztJO0c7O0ksNEM7OztlOztJOzs7OztPLE07TTs7Ozs7O0ssb0M7O0ssSTs7OztJLHdCO2tDOztJOzs7O3VDOztJOzs7Ozs7VTs7Ozs7NEI7OztVO1M7TSxPOzs7TSxxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0cscUI7RyxxQjtHLDJCOztJLG9CO0ksTztHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0IsMEI7dUIsMEI7NEIsMEI7O0ksb0I7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxvQjtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXOztLLGtDLE87SyxPLGtCO0k7SSxPLFc7RztHO0k7OztRLE07TztJOzs7MkIsTywyQzttQywyQjs7SSxPO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0k7Ozs7Ozt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLFE7VTtJLEksSyw0QixROzs7OzBCOztROzs7USxNOztJO0c7MEIsTyxtQzs7STtHOztJLFc7SSxXO0ksVzs7SyxrQixRO3FEO0s7STtJLE87Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTtXOztJO0c7O0ksWTs7Ozs7O1EsZ0IsbUI7Ozs0Qjs7O0k7Rzs7STtnQjtJLG1CLFU7OztLO00sWTtNLE87OztJO0c7O0ksVzs7SyxtQixROzs7O08sTzs7O3VDLE87O0s7STtJO0ssUztLLE87SyxROzs7Ozs7OztRLE07O0ksVzs7SztLLE87STtJLGM7a0I7O0k7Rzs7STtJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7Ozs7O1c7VyxPO1U7TyxPO2UsTTs7Rzs7STtJO2dDLE8saUI7Rzs7OztxQzs7O007TTs7Ozs7Ozs7STs7SyxPOzs7cUIsTyxvQjtJLE87OztJOztLLFc7Ozs7SywyQyxPO0s7STtJLFc7OztJOzs2QyxPLG9CO0ssTzs7OztLO0ssTztJO0ksTzs7O0ksVztJLE87Rzs7STs7MEIsTzs7MEIsTzs7NEIsTzs7MEIsTzs7MkIsTzs7MEIsTzttQyxPOzs7O0k7Rzs7SSxrQixPO0k7SSxrQixPO0k7O0c7O0k7SSxrQixPO0k7O0kseUI7SSxrQixPO0ksTztHOzBDO0c7O0ksbUIsTztJLE87Rzs7SSxrQixPO0k7STtJLGtCLE87STs7Rzs7SSxtQixPO0k7STs7Rzs7SSxZOztJLE87OztJOzswQixPOzs7TztPLE87aUMsTzs7OztJOzs7TztPLFc7TztPLE87OztPO087Ozs7O1c7VyxPO1U7Tzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7OztJLDJCO0c7O0ksZTtJLFk7Ozs7Ozs7UTs7UyxPOzsyQixrQixPLHNCO1EsTzs7Ozs7O0ssTzs7STtHO3VCLFM7O0k7SyxROzs7Ozs7SyxpQyxROzs7O007O08sTztjOztNOzs7O087TztPLE87YztLO0k7SSxhO0k7Ozs7OzJCOzs7STtJLE87Rzs7STtJOztLLDZCO0s7Ozs7UTs7Ozs7UyxPLHFDO1MsTztRLGM7O3lCLFc7OztRLGdCOzs7bUIsVztROzs7O1Msd0I7USxXOztROzs7OztTLE87UyxPO1EsZ0I7O1E7O1MsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7Ozs7O1k7WSxjO1c7USxpQjs7O0c7O0ksVzs7SSxPO0c7O0ksSSxnQixNOztLO0ssTztJO0k7STtHO0c7Ozs7cUM7Ozs7O00sVyw2Qjs7Ozs7OztHLFc7O0k7d0Isc0I7STs7O0c7O0k7OztHOztJLDRCOzs7O0ssTTs7O0ksRyxtQzs7STtHOztJOzs7NEI7OztHO0c7O0ksWTs7SSxnRDtJO0c7O0ksOEI7O0k7Rzs7SSw4Qjs7O0ssTzs7O0ksTztHOztJOztpQjs7SyxHO007MEM7SyxJOztHOztJO0k7Ozs7OytCOzs7Rzs7STtJOzs7UTs7UTs7O0c7O0k7STt3Qjs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksSTtrQyxvQjtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7STs7SztLLFk7STtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7SSxJO2lDLG9CO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJOztLO0ssWTtJO0ksTztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7STs7Rzs7STtJOzsyQixrQixzQjtJOzsyQixrQixzQjtJLE87Rzs7SSxPO0c7O0ksWTtzRTtJLE07Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLFcseUI7OzsyQixPOzs7Rzs7STtjO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7Rzs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7Ozs7Ozs7STtHOztJO2M7YztHOztJLGM7O3FCO0ksUztZOzs7SztNLEs7O2E7O1c7OztJO2dCLE87SyxZOzs7O007O0ssSTs7Rzs7SSxVO0k7bUI7Rzs7O0s7Ozs7Ozs7VyxPOzs7Ozs7OztVOzs7Yzs7VSxPOzs7Ozs7Ozs7Ozs7OztVLE87Ozs7Ozs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07OztROztTOztZOztRLE87OztRLE87OzBDOzs7USxtQjtRLE87OztRLE87OztRLE87OztRLE87OztRLE87O1E7O1M7O1k7O1EsTzs7MkIsTzs7UTs7UztTOzs7O3lCOzs7Ozs7NkI7YTs7O2lCOzthOzs7OztTLDRCO1EsTzs7O1E7Uzs7VSxXOzs7ZTs7UztVOztVLGM7O1csb0IsVTs7Ozs7O1U7VztZOztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksUTs7WSwrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZSxXOzs7ZTs7a0I7OztlLFc7Ozs7Yzs7Ozs7dUI7O1c7OztXOzs7O3dCO1M7Ozs7O1UsTzs7OzsyQixPOztROztTOztZOztRLE87Ozs7UyxPOzs7SywwQjtLLE87OztLO0s7Ozs7NEI7O2dDO2dCOzs7Ozs7STtJO0c7Rzs7OzttQjs7c0IsTzs7SztLOzs7O3FCLE8seUM7d0IsTyw0QztHLGdDO0c7cUIsTyx5QztHLDZCOztJOzs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7OztJOzs7STs7SztLLEc7TTtNOztLO0s7SztLO0ssTzs7STs7O0k7Szs7TTs7Uzs7SyxPOztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtRO1EsTzs7UTs7O1MsNEI7USxPOzswQjs7dUIsTzs7UTs7O1MsYztRLE87O1E7Ozs7O1M7O1k7OztjLE87O1k7Ozs7WTs7YTs7O3VCLE87c0I7Ozs7O1k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7UTtRO1M7OztZOzs7O1ksTzs7VztRO1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJOzs7a0I7O007TTs7OztJLE87Rzs7Ozs7aUI7TSx1QjtNLE87Ozs7TTs7O08sNEI7TSxPOzs7O0s7Yzs7Ozs7OztLO2U7OztpQjtpQjtJO0k7Szs7SSxPOzs7OzttQjs7c0IsTzs7SztLO0s7Ozs7O0ksVTs7SztLO0s7SztLO0ssTzs7O0k7SSxPOzs7Ozs7OztJLE87OztHLEksa0M7O0ksTztjO2M7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJLFU7dUIsTywwQztJO0s7O0ksTzs7O0k7Ozs7Ozs7VyxVOztXO1k7O1csTzs7TyxPOzs7Tzs7OztRO1U7YTs7TyxPOzs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7UTs7Vzs7TyxPOzs7OztJOzs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sTzs7OztHO0k7STs7O1EsTztPO0k7O3VCLE8sK0M7STs7O1EsTztPO0k7OztRLE87TztJOzs7USxPO087Z0Q7Rzs7STs7O007O087Ozs7O0ssYTtLLE87Ozs7Ozs7OztHOzs7SyxZLE87Szs7O00sTztLLE87Ozs7Syw0Qjs7Ozs7O08sTzs7Ozs7Ozs7OztLO00sUTs7O0s7Ozs7OztTOzs7VTs7Ozs7OztNO08sTztPO1M7O00sTzs7OztJO0c7O0ksbUM7OztPLE87Ozs7Ozs7O08sTzs7O087aUI7O2lCOzs7TyxPOzs7O0ksWTs7bUIsTzs7OztLOzs7TTs7O0s7Ozs7OztROzs7Uzs7Ozs7O007TyxPO087TSxPOzs7Ozs7Ozs7OztJLE87Ozs7Ozs7Ozs7STtLLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7WTs7Ozs7Z0IsTztlO2E7O2dCOzs7OztXLE87Ozs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1c7O1k7WSxPOzs7Ozs7OztXO1csTztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXO1c7WTs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQjttQjs7a0IsTzs7aUI7YyxPOzs7Ozs7Ozs7YyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1E7O1csWTs7Vzs7WSxPO1c7VyxPOztROzs7O1ksTztXO1csTztVO08sTzs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJOztLO00sTzs7Ozs7OztLOzs7Uzs7SyxPOzs7Ozs7Ozs7O2MsTztJO0s7O0ksTztHOzs7Szs7O00sTzs7Ozs7Ozs7d0IsTywwQztLO007OztJO0k7dUIsTywwQztJO0s7OztJLE87Ozs7Ozs7O0c7Rzs7Ozs7OztJLFk7OztLOzs7TTs7O0s7Ozs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO007OztnQjs7Ozs7O0k7O0s7Ozs7Szs7O2M7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O1EsTzs2QixPOztRLE87TyxZOztRLE87O08sTzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7STtJO1k7Ozs7O0c7K0Isb0M7O0k7STtZOzs7OztHOztJOzs7O0ssTztJO0c7aUMsc0M7O0ksOEIsTztJO0c7bUMsd0M7MEIsc0M7Z0MsNkM7O0k7Z0M7a0M7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1CO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OztHOztJOzs7Z0I7Ozs7OztLLE87STtHOztJLEksVyxzQzs7Ozs7O1M7O3VDOztTLGdDO1M7Ozs7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7O3FCLE87O0k7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7OztLLE07O0k7Rzs7SSxZOzs7MkI7OztPOztPOzs7Tzs7Rzs7SSxJLFU7Ozs0Qjs7OztHO0csYTtvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7Rzs7OztRLE07Tzs7SSxXO0k7Szs7O1E7Ozs7VztvQjs7WSxrQzs7Ozs0Qjs7O1Esa0IsMkI7Ozs7UztVLE87aUI7UTtROztJO0ssSztLLFc7NEI7Ozs7SyxJLE8sa0M7STs7OztNLFk7Ozs7UTs7OztTO1c7Ozs7YTs7Ozs7TSxNOzs7OztTOzs7VSxzQjtVLFM7OztVLEksVTs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7OztTOzs7VTtVOzs7VTs7O1c7WSxzQjtZLE87Ozs7Ozs7Ozs7UyxTOzs7Ozs7Uzs7VSxPO1UsUTs7O1U7Ozs7WTs7Ozs7Ozs7O1c7O1ksTztXOzs7WTthLE87YSxjOzs7Ozs7WTs7Ozs7Ozs7O2UsVTs2Qjs7Ozs7O1ksTTs7OztVO1U7OztXLHNCO1csUTtXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7Ozs7YTthO1k7VSxPOzs7O0s7TSxzQjtlOztJO0k7Rzs7OEIsaUM7SSxPO0c7O0k7O0s7SztLO0k7Rzs7STtLOztNLHNCO0ssVzs7O0ksb0I7SSxXOzs7STs7OztLO0s7O0s7Ozs7Ozs7Ozs7OztLOzs7TSxzQjtpQjs7Szs7O007O1M7O1U7VTs7UyxvQjtTO1UsTztVO1M7O2lCOztJLG9CO0k7WTs7Ozs7Ozs7Ozs7Ozs7Rzs7OEIsNkM7SSxPO0c7O0k7O087Ozs7UTtRLHNCO1EsUTtRO087O087Ozs7O1c7VztVO1EsTzs7OztXO1c7VTtRLE87UTtPOztPOzs7O1E7Tzs7OztJOztLO0s7Ozs7Ozs7STtLO0s7O0ksb0I7STtZOzs7Ozs7OztHOzs4Qiw4QztJLE87Rzs7STs7SztLOztLO0s7O0ksb0I7STtZOzs7Ozs7O0c7OzhCLCtDO0ksTztHOzs4QiwrQjtJLE87Rzs7STs7SztLOztJO0c7OzhCLCtDO0ksTztHOztJOztLOzs7O0ksb0I7STtLLE87Szs7SSxvQjtJLFc7STtHOzs7SztJO0ksTztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7Rzs7STtLO0s7SztJO0c7O0k7STtHOztJOzt5Qjs7MEIsVzs7OztROzs7O1M7UTs7O087bUM7O0c7O0k7OztPLEksVTs7Ozs7O1k7O3NDO29CLE87Ozs7Tzs7MEI7Ozs7O1E7Ozs7UTs7OztTLE87UztROztPOzs7UTtPO21DOzs7O0k7O3lCOzswQjs7O087Ozs7Ozs7TzttQzs7Rzs7SSxnQjtJO0c7O0k7O0s7Szs7SSxvQjtJLFc7Rzs7SSxlO0k7Rzs7SSxZOzs7SyxPOzs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLE87Rzs7STthO0c7O0k7O0ssTzs7O0k7Rzs7STs7OztLOzs7Ozs7OztXO1ksTztZLE87VyxPO1U7Ozs7OztTLFc7UyxPO1E7Ozs7Ozs7VTtXOztVLFc7UztNLE87Ozs7O1E7Ozs7O1MsTztTOzs7OztROzs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLE87Uzs7Ozs7UTs7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7Ozs7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087Ozs7Ozs7O087OztPOzs7Tzs7Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7O087OztPOzs7Tzs7Rzs7STtHOztJLG9CO3dCO0k7Ozs7Ozs7OztLOzt3Qjs7O0s7O3dCOzs7STs7O2U7O2dCOzs7O2dCLG1CO2dCO2lCLFc7aUI7Z0I7ZTtlLE87Ozs7Ozs7O0c7OztLO0k7SSxPO0c7NkIsTyx1Qzs7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7SSxTOztJOztHO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7SSxXO0ksWTtJLGE7SSxhO0ksWTtJLFk7SSxXOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7SSxpQjtJLGE7SSxhOztJLE87RztHO0ksYztJO007SSxrQjtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOztJLFU7STtHO0c7STtJO0k7STtJO0k7STs7STtLO0s7SztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzs7aUMsUztLO00sUTtNLE07OztNOzs7O1M7Ozs7Ozs7Ozs7OztLLE87STs7SztNLE07TSxNO00sVTtLLE87Ozs7STtJLDBCLHVCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Uzs7UztROzs7Ozs7OztLOzs7UztTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7b0IsVywrQjtHO0ksaUI7SSxtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsSSxPOzs7TSxPOztJO0k7STs7Rzs7SSxPO0c7O0k7Ozs7O3dCLFk7WTtJO0s7O00sNEI7TTtNLE07cUI7OztJO0c7O0k7Szs7O0kseUM7STs7Syw4QjtLLGM7SyxRO0ssTTs7O0ssTTtLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7O0c7O0k7Ozs7O0k7Szs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7OztVOzs7Ozs7O0s7O0c7O0k7O0s7OztNO007TTs7O1M7UyxPOzs7UTtLOzs7O1MsWTs7Ozs7Ozs7OztTOzs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtXOztXOzs7O1M7VSxZO1U7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O2E7Ozs7Ozs7Ozs7Uzs7Szs7STtHOztJOztLOzs7TTtNO007UTtVOzs7UyxZO1M7OztVOzs7OztVOzthOzs7Ozs7Ozs7OztTO1M7Uzs7Szs7STtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0ssTztLLFE7STtHOztJLFM7STtLO2U7SyxLO007TTtNOztLO0s7O00sTTtLOztPO1M7TSxNO0s7O1E7OztLLE07Ozs7Ozs7TTtNLE07O0s7SyxNOztHOztJO0k7STtJO0ssTTtLO0k7STtJO0c7O0k7OztPLE87OztPLE87Ozs7Ozs7OztPLE87Ozs7O0ksdUI7O0ksVztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7dUIsTSxnRDtHO0k7OztRO1M7VSxNO1UsVzs7OzsrQjs7O1EseUI7TztJOztJO0ssTTtLO0s7SSxXO0c7O0k7Ozs7OztJOzs7STs7STtHOzs7K0Isc0M7STtLO087SyxNO0ksTzs7Ozt3Qjs7Ozs7O0s7Ozs7O0ksSSxVOzs7MkI7OztjOztJOzs7STs7O0ssVzs7SztLLE87O0ksTztHO2dDLGtCOzZDLCtCOztJLFU7d0IsTyxpQjtJLFU7STtJO0c7Ozs7SyxVOztLLE87STtJLE87OztJOzs7SztLO0s7SztJLEc7Szs7O0ssOEI7Ozs7STtJOztLLEk7Ozs7OztNOzs7STtJO0c7O0k7SSxHO0ssTTtJLEksVTs7Ozs2QixNO0ssWTs7O007TTtPLEs7TztNOztLO0ssTTs7YyxNOztJO0c7O0k7STtLLE07SztLLEs7STtJO0c7Z0MsNkM7O0k7O0ssVTs7SztLLFU7Szs7OztVLEksb0MsYTs7OztZO1ksTzs7O1k7O2EsTTthO1ksTzs7OztXOzs7Ozs7O2lCOzs7Ozs7Ozs7YyxNOzs7O3VCOztXO1csTzs7UztNLE87Ozs7OztJO0c7O0k7SSxJLFc7Ozs7TSxNOzs7SSxXLE07O0k7Rzs7STs7O0ssTTtJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87OztJOzs7OztLLFE7SztJO0c7O0k7O0s7SztNLE87SztLO00sTTtNOzs7O007Szs7OztNOzs7SztLO0s7SztJO0ksOEIsTywrQjtJLE87Rzs7STtLOzs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7TTtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7SSxhOztJLE87RztzQyxxQjs7STs7Ozs7Ozs7O0c7c0Msb0I7O0k7Ozs7c0M7STtHO0c7SSxvQjtJLGM7O0ksOEI7Ozs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzt5QyxXOzsyQixZOzs7TyxZOzs7TyxZOzs7TyxZOzs7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztpQixNOzs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNOzs7VTs7Ozs7ZSxXLE87O2UsTztjOzs7VTtTO08sTztnQjs7Ozs7O0ksVzt5QixxQiwwQjtJLFc7SSxPO0c7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztvQyxNOzs7TyxPOzs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7O1M7UyxjO1E7YTtJLFc7O0s7SztJO0ksVztJLE87Rzs7STtJO0s7Ozs7VTtXLE8sYyw0Qzs7O00sUTtNO21DOztNOzs7Ozs7VztZLE87bUQseUI7OztPO1MsVzs7Ozs7Ozs7OztXO1csTyw4QjtVOzs7Ozs7OztHOztJO0k7Ozs7O1U7VyxPLHNDOzs7Szs7bUM7Ozs7Ozs7O1c7WTthLGE7YSx5QjtZLE8sYyw0Qzs7O007Ozs7Ozs7Ozs7VztXLE8sNEI7VTs7Ozs7OztHOztJO0k7Szs7c0Msb0I7TSxRO007Ozs7O1UsSSx1QixjOzs7a0M7OztTO00sTzs7OztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQztHO0k7OztRLE07TztJOzs7USxNO087STs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLOztzQyxvQjtNLFE7TTs7TTs7O1UsSTs7Ozs7Ozs7Ozs7VSxXO2MscUIsYzs7O2tDOzs7UztPLE87TyxPO087TSxPOzs7O0c7NkIsUzs0QixnQjs2QixnQjtHO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07Tzt3QixpRDs7STtLLG1CLE87SyxPOzs7SSxPOztHO2lDLHVCO2dDLGlDO3FCLE8seUM7O0ksVztJLGlCO0c7O0ksTztLO0ksaUI7Ozs7O007Tzs7USxnQzs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7O1k7O0c7O0k7O0s7SztLO0ssSztLOzs7Syw4Qjs7SztJO0k7SyxTO0ssTztLO0ssYztLLE87SyxrQjtLLFk7SyxNO0k7Szs7TSxXO2M7OztJOzs7Ozs7Ozs7OztJOzs7RyxnQztHO0ksaUI7STs7SSxPO0c7O0k7Rzs7SSxPO0c7O0ksTzs7Rzs7SSxPOztHOztJLE87Rzs7SSxPO0c7O0k7STtJO0k7STtJO0k7Rzs7STtJO0k7STtHOztJO0k7STtHOztJLFk7Ozs7SSxPOztHOztJO3VCOztJO0c7O0k7cUI7SSxJLFcsNkM7Ozs7SyxJLFEsa0M7Ozs7OztvQjs7Ozs7O0ssWTtLO0s7O0c7O0k7O1EsSTs7O0ssd0I7Ozs7SyxxQjt1QixNOztJO0c7O0k7O3lCOztPLDhCO08sTzs7Tzs7O1E7USxNO08sTzs7O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPOztHOztJO0s7SyxNO0ksTztHOztJOztPLGtCOzBCLE07O087O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs7OztLLE07SSxxQixPO3dCO0ksSSxTLHlDOzs7SztLOztJLE07OztJLFk7Ozs7TyxJLFc7OzsrQjs7O087Tzs7O08sSTs7OztTLE07OztPLEksWTs7OztTLE07OztPLFc7OztROztPLE07OztPLEk7Ozs7UyxNOzs7Tzs7O08sSTs7OztTLE07OztPOzs7UTtTO2dDLE8sZ0M7VSxTOzs7OztVLE07OztROztPLE07O0c7OEIsaUM7cUMsaUM7O0k7O3lCOztPLDhCO08sbUI7ZSxNOztHOztJOztLOzs7STtHOztJLE87Rzs7STtHOztJO0c7O0k7O08sa0IsK0I7cUIsTTs7Tzs7Tzs7O1E7Z0I7TztvQixNO1EscUM7b0M7Ozs7ZSxNOztHOztJOztPOztRLE87USxPOztPOztPOzs7UTtRLFM7USxRO087ZSxNOztHOztJO0s7O1E7MkIsTTs7UTs7UTs7USxJOzs7Uyx3QjtVLFc7VSxPOzs7OztTLFc7UyxPOzs7UyxNOztROztROztROztRO2dCOzs7SSxPO0c7O0ksWSxPOztJOztHLHVCOzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7Tzs7OztJOzs7TSxzQjs7O087USxPO1EsTztPO1E7UyxPO29COzs7Z0I7Ozs7Ozs7Szs7Ozs7O007O3FDOzs7OztNOzs7O0c7O0ksSSwrQzs7Ozs7TSxNOztLOztHOztJOztPOztPLDhCOztlLE07O0c7O0k7O087Ozs7O1EsRztTLFc7UyxLOzs7Ozs7OztlLE07O0c7O0k7STtLOzs7TSxJOzs7Ozs7Ozs7OztLOztHOztJOztPLGtCO08sTzs7Tzs7O1E7USxTO08sTzs7TyxnQztPOztHOztJO0c7O0ksSSw2Qjs7OztLLHVDOztLOztJLE07Rzs7SSxJLDZCO2dCLE07O0k7Rzs7STtnQixNOztJO0c7O0k7SSxPO0c7O0k7STs7OztRLEksbUMsYzs7O2dDOzs7OztnQjs7Rzs7SSxXO0k7SyxtQjtLOztNOzs7Ozs7SztNO08sTztPLE87Ozs7OztNO08sSztPLE87TTs7O0s7SztJO0ksSSxnQjtJO0s7Ozs7Ozs7Ozs7OztzQjtHO0c7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO3FCLE8saUI7STtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLO0ssb0MsdUI7OztPLFk7Ozs7O08sWTtPOzRCO08sd0I7MkIsaUQ7Tzs7O1E7TztPLE87TTs7O0s7O0s7OztlO2U7Z0I7aUIsVTtpQjttQjs0Qjs7Z0I7O2UsbUI7O2U7Yzs7Rzs7STs7OztHOztJOzJCLE8scUM7SSxPO0c7O0ksa0M7dUI7O0k7SztNLE87TSxJO00sMEI7Szs7Ozs0Qjs7Ozs7STs7Tzs7UTtRLCtCOzs7VztXLCtEO1c7VTtPLE87O087OztROytCLGdCO1E7eUI7USxNO08sTztlOztHOzswQixnQjs7O087O1E7eUM7OztPOzs7UTtROztXOztRLE07ZTs7Ozt3QjtJLE87Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7UztVLG9CO1U7VTs7O2E7YTthLE87WTs7O2E7YTs7Z0I7OztpQixTO2lCOzs7OzZCOzs7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1Qjs7O2dCOzs7aUIsYTtpQixPO2dCOzs7OztpQjs7a0IsTzt3QztrQixPOzs7cUI7O29CO2lCOzs7O2lCOztrQjtrQixPO3dDO2tCLFE7OztxQjtzQixZO3NCOzs7b0I7aUI7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1QjtnQjs7aUI7OztpQjs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7OztnQjs7O2lCLFE7aUI7aUIsUTtpQjtpQixPO2lCLFk7aUI7aUI7a0M7OztnQjs7OztpQixXO2lCLE87Z0I7OztrQixNOzs7OzJCOzs7O2dCO2lCLFM7aUIsTztpQixRO2lCOzs7Ozs7Ozs7O2lCO2lCO2lCLE87dUI7Ozs7O2dCOzs7aUIsVztpQjttQjtpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7OztnQjs7O2lCLFM7aUI7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztnQjs7O2lCLFM7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztZO1M7Uzs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7Ozs7O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0ssSSxlLHVCLHNCO0s7SyxXO0s7Ozs7cUI7OEI7Ozs7OztVOztVLFc7VSxPO1M7TSxPOzs7Ozs7O0c7O0k7O0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssZ0Q7Ozs7aUIsMEI7Tzs7Ozs7Ozs7OztHOztJO0ksaUI7O0s7STtJO0k7Szs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STt5RCxlO0s7O0ksSSxxQjs7Ozs7OztLOztNLFM7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO1c7aUI7VztZO1k7O2U7Ozs7Ozs7Ozs7OztXO1csVztXOzs7OzJCO29DOzs7OztnQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MkI7O2dCO2dCLE87ZTtZOzs7O1M7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCOzttQjs7Szs7TTtNLGU7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO2lCO1c7WTtZLHNCO1c7VztZLE87WSx1Qjs7Ozs7Z0I7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7UztVLFk7Ozs7Ozs7Ozs7O1U7Uzs7Ozs7Ozs7Ozs7OztRO00sUTs0QjtNLGU7OztJO0s7OztLOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7O0s7SyxPO0s7STswQzs7O0k7Szs7TSxlO007TTtZO007TztPLHNCO007Ozs7VTs7Vzs7cUI7OztVO1UsTztTO007OztJOzs7Szs7Ozs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Ozs7STs7SztJO0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7O0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Szs7O0s7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7STs7O0s7b0MsZTs7O21DLGU7Ozs7STtLLE87SztLO0s7STtHOztJO0s7SyxRO0s7OztJO0c7O0k7SSw0QjtHOztJLFk7STtHOztJO0s7SztJO0c7O0k7STtHOztJO0c7O0k7STtHOztJLG9CLE87STs7Ozs7Ozs7Ozs7OztHOztJLEksUSwrQjtJLE87Rzs7STtLLEs7SztLOzBDO0k7Rzs7STtLLEs7SyxnQztJO0c7O0k7SyxLO0s7SyxRO0s7STtHOztJLFM7STs7O0c7O0k7SyxLO0ssUTtLLDZCO0k7Rzs7STtLLEs7SztLLG9DO0k7Rzs7STtLLEs7SywrQjtJO0c7O0k7Rzs7Ozs7SyxXOzs7Ozs7O1UsZ0I7VTs7VyxRO1UsVztTOzs7O0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7Ozs7STtLLE87Szs7O0k7Rzs7STtLOzs7STtHOytFO0c7Ozs7Szs7OztJO0s7Ozs7STtLOztHO0c7STs7RztHO0k7O0c7RztJOzs7STtJO0c7O0k7SyxLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLEs7OztLOzs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJOzs7NEI7OztxQjs7dUI7OztLOzs7OzRCLE8saUIscUI7OztLO0k7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STtJO0s7O0ssNEIseUI7Szs7SywyQix3QjtLOztLLHlCLDBCO0s7O0ssd0IseUI7Szs7SywyQix5QjtLOztLLDBCLDBCO0s7O0ssMEIseUI7Szs7SywwQiwwQjtJOzs7Ozs7Ozs7Ozs7OztHOzs7SztNLE07MEI7O0ssRyw4QjtLLE07STtJLEk7Ozs0Qjs7OztLOzs7TSxHOztPLFc7OztLLE07STs7Szs7O00sRzs7TyxXOzs7SyxNO0k7STs7OztLO0s7SztLO0s7SztLO0k7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7O0ssTTtJO0c7O0k7STtJO0k7Szs7ZTtlO0ssYztLLGlCO0ssaUI7Ozs7Szs7OztVOzt1Qzs7UztNOztLO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHOzs7Ozs7Ozs7Ozs7O1U7O2lCOzs7Ozs7Ozs7Vzs7Ozs7O1E7Szs7STtHOztJO0s7Tzs7Ozs7O0ssSztLOztLLE07O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLHdCO0s7STtLLE87SyxPO0ksTzs7O0c7O0k7SyxPO0ssTztLO08sVztJLE87Rzs7O0k7STtJO0ssTztLLE87SztPOztTOzs7STtJO0c7O0k7MkIsVztHOzs7K0IsNEM7STs7RztHLGM7Rzs7OztHO0k7SSxVOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOzt5QixPLDBCO0ksTztHOztJLGtCO0ksTTtHOztJLFU7O0k7OztLO007UTs7VztNLE87TSxPO0ssTztJO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7SSxXO0ksTztHOztJLFU7SSxvQjs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJLFU7Ozs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0k7OztNLFk7OztPOzs7USxJLFc7Ozs7OztROztPOztPOzs7OztNLE07Ozs7STtHOztJLFU7SSxjO0k7OztLO00sVzs7Ozs7OztLOzs7Rzs7STtHOztJOzs7UyxJOzs7TTtPLEksVzs7Ozs7Ozs7Ozs7OztJO0ssa0I7O0s7Ozs7Szs7Szs7SSxJOzs7O007OztJO0k7Rzs7STtnQjs7Szs7TTtNLE87SztLO0k7SSxPO0c7O0k7O087O1E7OztPOztPOzs7UTs7O087O087UTs7OztRO1U7O087O0c7O0k7Szs7O0s7Ozs7TTs7Szs7O2tCOztJO0c7O0k7OztLOzs7TTs7O007Ozs7O0s7SztJO0k7SyxrQjtLOzs7OztLOzs7Ozs7Tyx1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7WTtNOzs7Ozs7Ozs7OztLO0k7OztpQixPOzs7TTs7O087Ozs7O007O0s7Ozs7TTs7Ozs7TTtROzs7Ozs7O007Ozs7O0c7O0k7O087O1E7OztRLE87Tzs7Tzs7O1E7OztRLE87Tzs7TztROzs7O1E7Tzs7Rzs7STtLOzs7SSxJLFU7Ozs7TTs7O0k7STtJO0c7O0k7OztPLEk7Ozs7Uzs7Ozs7O1E7UTs7Tyx1Qjs7OztXOztXO21COztPOzs7O1E7Tzs7Tzs7O1E7OztPLEksWTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7Ozs7Ozs7Tzs7OztPOzs7UTs7O08sSSxVOzs7Ozs7O087Tzs7OztPLE07OztJO0c7O0k7OztPLEk7Ozs7Uzs7OztPO087O087OztROzs7TyxJLFU7Ozs7Uzs7O087TztPOztPLE07O0c7O0k7Szs7O0ksaUI7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7TyxnQjtrQjs7OztXOztZO1ksTztXO1c7VTtPLE87Ozs7Ozs7O1EsSSxhOzs7Ozs7Ozs7OztjO2E7YTtZO1MsTzs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7Ozs7O2M7YTthO1k7UyxPOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJOzs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Rzs7STtJO0c7O0k7SSxpQjtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJLEk7Ozs7Ozs7Tzs7Ozs7STtHOztJOztJLHNCO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7OztVO1M7UztRO0ssTzs7STtHOztJO0ksSTs7Ozs7OztPOzs7OztJO0c7O0k7O0ksc0I7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7aUMsNEM7UztRO0ssTzs7STtHOztJO0ksSTs7OzRCOzs7Ozs7Ozs7Uzs7UztpQjs7Szs7SSxvQixlOzs7SztLOztJO0c7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7SyxXO0s7OztlO2UsTztjOzs7O0k7O0s7OztLO3lCO0ksb0IsTzs7SyxPLDRCO0k7SSxPO0c7O0k7Szs7O007MEI7Szs7TSxPOzs7UyxZOztTLE87UTtLLE87O0ksWTs0QixPLHlCOztJO0s7OzZCLHNCLHNCO00sUTtNO2dCO0s7Ozs7NEIsd0M7TTtRLFc7Ozs7Rzs7STs7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7Ozs7STs7Szs7O0s7eUI7OztLLFM7SyxPO0k7SSxPO0c7OztLLGdCOztLLE87STtzQixhO3VCLGM7STtLO0c7OzRCLE8sMkI7c0IsYTt1QixjO0k7SztHOztzQixhO3VCLGM7STtLO0c7O2tDLE8saUM7c0IsYTt1QixjO0k7SztHOztJO0s7SyxPLHVCO0k7c0IsYTt1QixjO0k7SztHOzttQyxPLGtDO3NCLGE7dUIsYztJO0s7Rzs7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7STs7O0s7Ozs7VTtVO29COzs7c0I7MkI7O3dCOztTOzs7STtLO0s7TSxHLHVDOztPOzs7USxPO08sRztRO1MsTztTLFE7Ozs7OztNOzJCLGdDOztJO0k7OztLOzs7Ozs7O0ssSSxLO0ssVztJO0ksVztJOzs7Ozs7Ozs7Ozs7O0c7O0ksTztHO0c7SSxXO0ksbUI7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPO0k7OztRLE07Tzs7O0ssVztLLE87STtJOzs4QyxxQjtPLE87Ozs7OytCLDRCO08sTztlOztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOzhDLHNCOzs7O0c7O0k7SSw2Qyx5Qjs7Rzs7STtJLHVDLHlCOztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJLEk7STs7ZTs7Z0I7ZTtjOztHOztJO0ssTzs7OztPO087a0I7cUM7TyxPOzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7Ozs7TztPLE87Ozs7Ozs7Ozs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTztTLE87UTs7TztRLE87USxPO08sTzs7Ozs7Ozs7O08sTzs7O087Ozs7SSx1QjtJOztLO0s7Tzs7VTtJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJO0s7O3dCOzs7OztTLG1COzs7O0s7O0ksTztHO3FEO0c7O0k7O3VCOzs7Ozs7O1c7OztXOzs7Ozs7OztTOzs7UTs7OztxQzs7STtHOzBCLE8seUM7O0k7SyxNO0k7Rzs7STtLLE07STtHOztJO0ssTTtJO0c7MEM7O0k7SyxNO0k7Rzs7SSxzQztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJO0c7O0ksOEI7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPLGtDO087OztHO2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7Ozs7MkIsb0IsTyxzQjtRLE87OztRLE87OzRCLE87OzRCLE87OzRCLE87OztRO1EsTzs7STtHOztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7Ozs7OztZO1ksbUI7VztRLFc7OztRLFc7O3lCLFc7O3NCLFc7O3dCLFk7O1EseUMsTTtRLFk7O0k7Rzs7STs7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7a0MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O3dCLG1CLFU7SSxPO0c7O0k7SSxPO0c7O0k7Rzs7STtJO0s7O0k7cUIscUM7STs7Rzs7STtJLE87Rzs7STtHOytCLE8scUM7O0k7Ozs7Ozs7Ozs7OztZLEk7Ozs7OztROztRLHdDO1E7Uzs7Ozs7O1U7Ozs7Ozs7O1M7Ozs7K0I7Ozs7STs7O3lCLHlCO0k7Rzs7O0k7Szs7K0IsVzs7O21CO0s7STtJO0s7STs7Szs7Ozs2Qjs7Uzs7O1U7OztVOzs7VTs7aUM7Uzs7c0M7Ozs7OztLO0k7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O3VCLHVCOztJLHFDOztJO0c7O0ksWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Ozs7Ozs7OztPLE07OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TSxJOzs7TSxJO007TztxQjtPOzs7O1E7O1EsSTs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztXLFU7VyxPO1U7Ozs7TTtNOzs7TyxVOztNO087Uzs7OztLO007Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7O0ksWSxPOztJLE87OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7Rzs7SSxPO0c7O0k7O3FCLE87O3FCLE87Ozs7USxPOztPLE87Ozt1QixPOzt1QixPOzt1QixPOzt1QixPOztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJLFc7STtJLE87Rzs7SSxRO0k7SSxXO0k7STtHOztJLFE7O0k7SSxPO0c7O0ksTztHOzhCLE8saUM7O0ksOEI7OztLLE87OztJLE87Ozs7SztJO0ksTztHOztJO0k7O0c7O0k7O0s7SztLLE87STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7WTs7YTthO2E7OztZO1k7VztRLE87OztRO1E7OztROzs7OztRO1E7UTs7O2tCO21CO2lCOzs7Ozs7Ozs7O2EsTztZO1ksTztXO1E7Ozs7O1E7UTs7O0c7OztJO0k7OztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7YTs7O2dCO2dCO2dCOzs7Z0I7Z0I7OztnQjtnQjs7WTtZOzs7TTs7O21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1E7UTs7O1E7UTtROzs7a0I7O21COztvQixPO29CLE87bUIsTztrQjtrQjttQixRO21CLE87a0I7a0I7aUI7Ozs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7OztlO2U7ZTs7O2U7ZTtlO2U7OztlO2U7ZTs7O2U7ZTs7OztNOzs7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7O1E7UTtRO1E7O1M7O1M7Uzs7VTs7O2dDOzthO2E7O1M7Uzs7UTtROzs7VTs7VTs7Ozs7WTs7OztZOzs7O1k7O1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7Vzs7Ozs7Vzs7Ozs7Vzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7OztRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzs7UTs7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7OztTOzs7Ozs7UTtROzs7Ozs7O1M7UztTO1UsTzs7Uzs7Ozs7O1E7UTtTLE87O1E7OztHOztJO0k7STs7O0s7Szs7O0k7SyxPOztJO0c7O0k7OztJOzs7STs7O0k7OztJO0k7STtJOztHOztJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7O1E7Ozs7O0c7O0k7STtJO0k7Ozs7O087Tzs7Ozs7Ozs7Tzs7Tzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7Ozs7OztTO1M7Uzs7Ozs7O1E7Ozs7O0c7OztJO0k7STs7O0k7STtJO0k7Ozs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087O3lCOztHOztJOztLO0s7OztJO0k7OztJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7O0c7O0k7STtJOztHOztJO0k7STs7Rzs7SSxZOztJOzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO2tDLG1CLFU7Tzs7OztnQjs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztPO087O3lCOztHOzs7STs7Ozs7TztPOzt1QixPOzs7TztPOzs7TztPOzs7TyxPOzs7TztPOzs7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7O0k7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxNOztPLE07ZSxNOztHOzBDLGtDO2lDLDBDO0c7Ozt5QixvQjs2QixpQzs7SSxNO0c7O0ksTTtHO0c7O0ksc0I7STs7O0ssVztJLFc7RztHO0c7STtJO0k7STs7STtJO0ksZ0I7SSxlO0ksZTtJLGM7O0k7Ozs7O0c7O0k7Ozs7O0c7cUMsd0I7O0k7OztHOztJOzs7OztHOztJOzs7O0c7O0k7Ozs7Rzs7STtLLFE7OztxQjs7OztHOztJOztHOztJOztHOztJOztJO0c7cUMsK0I7O0k7O2dDOzs7ZSxNOztrQjtHO0c7O0k7O0s7TSxPO007O3lDOzs7O0k7Rzs7STs7Rzs7SSxJLHFDLEk7STtJO0c7Rzs7STs7OztLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztJO0k7STtJO0k7O0k7Rzs7SSxPOzs7Ozs7Ozs7O0c7cUMsOEI7O0k7MkM7STtHOztJLFk7MkU7SSxNO0c7O0k7STtLLFk7O007Ozs7O087Ozs7Ozs7O1M7UyxPO1E7SyxXOztHOzs7SztLLE87STtJLE87Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Tzs7O2E7TSxJOztNOzs7O087Ozs7Rzs7STtJO0ssWTs7Ozs7Ozs7Szs7Rzs7SSxJLHVCLFE7OzRDO0k7Rzs7SSxJLHVCLFE7b0Q7STtHOztJLGM7Ozs7UTs7O1E7UyxZOzs7O2EsTzs7Ozs7UyxNOzs7SSxPO0c7O0ksWTs7OztROzsyQixPOztJLE87Rzs7STtJLE87RztHLHNCOztJOzs7TSxLO087Ozs7TSxLO087O0s7TSxRO00sUTs7Ozs7O0s7O08sVztPLFc7OztPLFc7TyxXOzs7Ozs7Ozs7OztNLEc7TztROzs7O2M7TyxJOztPLEk7OztJO0c7O0ksWTtJOzs7O0s7SyxRO2tDOztLO0s7O0k7O0c7STtJO0k7O0k7STtLLFc7SyxXO0ssSSxPOzs7Ozs7OztVO3NCO2M7Ozs7Ozs7VTs7VyxzQjtVLE87Ozs7Ozs7Uzs7OztTOztVO1U7O2Msc0I7OztTO1MsZTtvQjtTLEksTzs7O0ssYyxzQjtLLE87O0c7O0k7O0k7Ozs7STtHOztJO3dCO0ksUztJO0k7Rzs7STtnQjs7SSxNO0c7O0k7Szs7Ozs7MkMseUI7TTs7Ozs7OztVO1UsVzs7O1csTzs7OzJCLHlCO1UsTztTO007Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7O0k7STtJOzs7OztTOztTLEksNEI7Ozs7O1UsTTs7O1E7SztLO0s7SztLOzs7Ozs7SztLO0s7O0c7K0IsTyxvQzs7STtLLFE7Ozs7STtJLFk7Ozs7Szs7O0ksTztHOzZCLHVCLHNCOztJLEksUTs7UTs7OztNLFk7Ozs7UTs7O1M7Ozs7Ozs7Ozs7OztNO00sTzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtLLFk7O00sWTs7Ozs7VTtVOzs7OztVO1UsTzs7O1U7Vzs7VyxPOzs7OztVOzs7OztVOzs7NkIsbUIsNEI7VSxPOztNOztLOztHO0c7Ozs7USxNO087O0k7STtLLEksSSxPOzs7Ozs7Szs7OztzQjtLLDZCLE87SyxHLCtCO0ssSTs7Rzs7STtJO0s7TSxhO00sTztLLFc7Z0IsNkI7SyxZOzs7OztvQjtVLEksVzs7O3NDOzs7Ozs7Ozs7b0I7VTtVLEcsK0I7VTtXLE87Ozs7OztLLDBCO0ssTzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sMEI7TSxPOzs7Ozs7O0c7O0ksSSxvQzs7Ozs7Szs7Rzs7STtLLG1CO2dCO2dCLDJCO0ssWTs7Ozs7b0I7VTtXLFc7VztXO1c7Ozs7c0M7Ozs7VSxJLEksTzs7Ozs7bUMsb0I7dUI7O1U7Ozs7OztlO2dCLE87Z0Isc0I7ZTtjOzJCO1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csMEI7VyxPOzs7Ozs7OztxQjtXOzs7Ozs7OztXO3NCO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLDBCO1MsTzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SywwQjtLLE87O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJLHVCOzs7O007TyxPO08sYzs7Ozs7Ozs7SyxJOzs7O0ksaUI7SSxXO0k7STtLOztJLFk7Ozs7d0I7OztRO1E7Ozt1Qjs7O1M7VSxNOzs7Ozs7Ozs7UztVO2lDLG9COztxQjs7UTs7UyxzQjtRLEcsNkM7Ozs7O2EsTzs7dUI7Ozs7WTtZLE87VztRLHFCO1EsSSxXOzs7b0M7OztROzs7O2dDLG1CLHdCO1EsTzs7SSxvQjtJLE87Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7Ozs7O1k7WSxPO1c7UTs7Ozs7WTtZLE87VztRLE87OztROzs7OztJO0c7O0k7RzsrQiwwQjs7STtLLFE7SztLOztLLFk7Ozs7cUI7b0I7Ozs7Ozs7O0s7OztxQjtLO0s7SztLLG9CO0ssTztJOztLLEksTTs7TTtpQjtNO00sWTs7Tzs7USxPO1EsSzs7OztxQjs7Ozs7O0s7STtJO0k7TztLLGMsc0I7Szs7STs7Szs7O00sTzs7STtJLE87Rzs7STs0QjtHOztJO0ssWTtnQjs7Ozs7OztLO0s7SztNO00sc0I7SyxPOztHOztJLGU7STtJLG1CO0k7SyxZOztNOztPLE87TyxPO00sRyx5Qzs7SztNO08sUTtPLFc7O2tCO087O1Esc0I7ZTs7OztNOzs7OztNLGU7TTtNOztPLHNCO00sTzs7STs7SyxXO0s7STtJO0k7SztNLFc7TTs7Ozs7O007Rzs7STtLLFc7SyxXO0s7UTtNLE07SztLLE87STtJLEksUyxJOzs7Ozs7STtJO0c7Rzs7SSxzQjtJLFc7c0U7SSxZOzRDOzs7OztNLE07Szs7OztNLE87TTtROzs7Ozs0QixPO0ksZ0I7STs7Ozs7O1M7OztVOzs7Ozs7Ozs7OztjLEc7Ozs7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7Ozs7O3FCOzs7Ozs7Uzs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjO2dCO2M7O2lCLGtCLFE7aUU7aUI7O2MsUzthO2Usa0M7YyxXO2M7Z0I7cUI7ZTtnQixPO3dCOzs7Ozs7Ozs7OztVOztzQjs7Ozs7a0I7O0k7STs7O0k7Ozs7eUIsc0M7SSxPO0c7O0k7O0k7O0k7Rzs7O3NCLDRCO0ssTztJO0ksTztHO0c7O0k7O0c7O0k7SztNLE87Ozs7Ozs7OztLO0k7OztPO2lCO0s7SSxPO0c7O0k7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTtHOztJLFk7Ozs7TTs7TyxPO08sTztNLE87Ozs7Rzs7O0s7Ozs7OztVO1c7Vzs7VztXLFE7Ozs7VTtXO1c7VSxLO1csTTtVO1U7Uzs7Ozs7O3dCO0s7TSxRO007TTs7O0ssb0I7SyxjO0s7STtJLE87Rzs7O3NCLHFDO0s7TSxVO007SztJO0ksTztHOzs7SztLLG9CO0s7TSxVOzs7SyxvQjtLO00sUztNO0s7STtJLE87Rzs7STs7Ozs7OztTOzs7O1UsTztTO1E7SyxXOzs7O0s7Ozs7TSxPO00sTztLO0k7SSxXOzs7O0s7Ozs7Ozs7Ozs7Ozs7SyxvQjtLO00sTzs7Ozs7TTtnQzs7Ozs7SyxvQjtLO2E7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7O0k7O0k7Rzs7O0s7O1E7Ozs7OztTLHNCO1MsUTtTO1E7O1E7O1M7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7UTs7OztTO1E7Ozs7SztLLG9CO0s7TSxXO007SztJO0ksTztHOztJLGM7YSxPOztJO0c7Rzs7O0ksYzs7UztLLGdCO0s7TTtPLE87TyxROzs7TyxVOzs7TztRLFE7OztXLFc7VyxPO1U7ZTs7O00sUyxNO007Ozs7O007TyxjO08sTzs7O087UTs7O1csTTs7Ozs7Ozs7c0I7Ozs7Ozs7O1U7Vzs7Ozs7TztROztXOzs7OztZO1k7NEI7OztXOztZLE87WSxPO1c7OztvQjs7O1c7VztZO2EsTzthLGtCOzs7VztZO1ksUTs7OztXOzs7K0IsYSx5QjtZLE87WSxVOzs7ZSxXO2M7WSxPO1ksWTtZOzs7OztPLEksNkI7O007TTs7O0k7TyxvQztJLEksWSw0Qjs7Ozs7UTtRLE87OztJOzs7O0ssWTs7O007O0ssTTtJO0ksVzt3QixXLHFDO0ksWTs7STtLOztLOzs7Ozs7O0k7O0k7Rzs7STs7SztJO0ksTztHOzs7SyxZOzs7Ozs7Ozs7Ozs7TSxJOztLO0s7STtJLE87RztHOzs7O1EsTTtPOztJLFc7TztLLE07OztJOzs7SztNLGlCLFE7O087OztRO087OzswQixPLHNDOzs7TSxNOzt1QyxPOzs7STtLOzs7O0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOztJO0s7Szs7Ozs7TSxNOzs7Rzs7RywrQjs7Rzs7STtLOzs7SSxZOztLOzs7O00sUTtNLFE7TTtNLFU7O00sSSxVOzs7O08sYTtPLEc7USxNO08sTzs7O007TztROzs7Ozs7OztNO08sTztPLFU7TTtNO007Ozs7TSxJOzs7OztLLEk7Ozs7O0s7O0ksTTs7O0k7Rzs7SSxJLG1DOzs7OztLLE07O0c7O0ksVztJLEksd0IsYzs7O2dDLDZCOztLO0s7Szs7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHFDOzs7O0s7SztLLE07O0c7O0ksVztJLEksaUQ7OztnQzs7O0c7O0ksSSxzRDs7OytCOzs7Szs7Rzs7SSxJLHNEOzs7Z0M7OztHOzs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7OzJCO1MsSTs7O3FDOzs7Uzs7O1M7Ozs7O1M7OztTLE07O0s7O0c7O0k7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHlDOzs7O0s7SyxNOztHOztJLEksMEQ7Ozs7Z0M7OztHOztJO0ssSSxJOzs7O007TSxTO007TztROzs7Ozs7OztNOzs7OztJLFk7Ozs7Ozs7TyxHO1EsVztRLE87Ozs7O0k7Rzs7STtLO2E7O00sTztLOzs7OzRCOzs7Rzs7STtLLEksTyw2QjtLO1UsZ0MsSTs7Ozs7Ozs7SztNOzs7Ozs7NEI7OztHO0c7O0ksRztLLE07SSxZOzs7OztRLDhDO1E7UyxHO1UsTTtTO1UsWTtVOzthOztVLE87Uzs7Ozs7UztVO1c7VztVOzs7OztXLE07Ozs7OztROztJLDBCO0s7TSxZO007O1M7O0ssTzs7STtHO0c7d0IsdUI7O0k7Ozs7Ozs7STtJOzs7YTtPOzRCLDBCOzs7OztLO0ssTTs7Rzs7SSxJLG9COzs7d0I7OztHOztJLEksb0IsYzs7O3dCOzs7Rzs7STtLLE87SyxXOztLLFk7Ozs7O1MsRztVLE07UyxzRDtTLG9CO1M7VTs7Ozs7Ozs7O1U7Ozs7OztVLEksSSxPOzs7Ozs7Ozs7Yyw2QjtjO2E7VSxPOzs7O1MsYTs7Szs7TTtPLGdCOztPO3dCO00sTzs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1M7VTs7O2M7YyxPO2E7ZTtXO1U7Ozs7aUM7OztRO007TTs7Ozs7O1EsRyxnQzs7Ozs7O1E7USxPOzs7OztLLE07Ozs7SSxJLCtDOzs7O007OztHOztJO0k7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLLFk7Ozs7O3dCOztTO1U7VyxLO1c7OztjOzs7b0I7d0I7O2E7VyxPO1U7Ozs7Ozs7VSwwQjtVLE87OztTLGU7OztTOzs7VSxVO1M7VSxPOztTOztLLG9CO0ssTztJOztLOzs7Szs7eUIsa0M7STtLO0ssMkIsaUM7SSxPO0c7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHOztJO0ksTztHO0csa0I7O0k7OztLOzs7O21COzs7VTtVLE87UztTLE87bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTs7O2UsZTs7YztZLE87Vzs7Ozs7WSxPOzs7O1UsVztVOzs7Ozs4QixPLG9DO1UsRyx5Qzs7OztNLE87O0k7STtHOztJOztLO0ssTztJO0ksb0I7cUIsTywyQztJLEc7SztxQixPLDJDO0ksRztLO3FCLHNCO0ksVTtxQixzQjtJLFU7O3lCLE8sc0I7STtLO0ssMkIsd0M7SSxPO0c7O0k7SztLOzs7Ozs7Szs7RztHOztJLG9CO0ksYTtJLG9CO0ksYTs7SztNLFk7OztVO1E7UTtROzs7TTs7SztNLE87TTtNLE87TSxPO00sTztNLFc7SztJO0ksTztHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7O00sdUI7O0c7aUMsd0M7O0ksTztpQztHOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxvQjtJLFc7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxNOztJO0c7O0k7O0s7Z0M7OztLO007O007TSxROzs7TTtNLEk7O0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7UztVO1UsTzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STtLO00sTzs7Ozs7Ozs7Ozs7OzRCOzs7Rzs7SSxJLDZCOztHOztJO0ssSSxPOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OzRCOzs7Rzs7SSxZOzs7SztNO08sbUI7TztNOzs7Ozs7TTs7O0k7Rzs7OztLLEcsbUM7SztNLFE7TSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsRyxpQzs7Ozs7Ozs7Ozs7TTs7SyxJLG1DO0ssRyxtQztLLGU7Z0I7SztLO00sVTtNLFU7Ozs7Ozs7Ozs7OzsyQzs7Ozs7Ozs7Ozs7Ozs7Ozt1QjttQjt1QiwrQjs7OztrQjs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7OzZDLFM7NEI7O29CO3FCLE87Ozt3Qjt3Qjt1Qjs0Qjs7O29CO3FCLE07Ozs7Ozs7Ozs7Ozs7OzBCLEs7MEI7Ozs7Ozs7Ozs7Ozt5Qjs7eUI7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Ozs7NkIsTTs7Ozs7Ozs7OytCOzs7Ozs7OzsrQjs7Ozs2QixNOzs0QixXOzRCLEssa0I7NkIsTTs7Ozs7OzBCLE07Ozs7Ozs7d0I7Ozs7Ozs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07Ozs7c0I7Ozt1QixRO3VCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7Ozt1QixNOztzQjtxQjtrQixPOzs7Ozs7O2lCO2tCO2tCOzs7OzttQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksMEI7SSxPO0c7O0k7SztLOztLLE07STtLOzs7Szs7O0s7Ozs7STtLO2tCO0k7SSxrQjtJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07O0s7Ozs7O00sTztNLE87OztNOzs7Ozs7O00sTTs7SztJO0ksTztHOzs7SztLOzs7O1E7USxXOztVLGtCOzs7OztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJLE87Rzs7STtLOzs7Ozs7OztJOztLOztzQjs7SyxJOzs7Ozs7O0ksVztJO0s7SztLLE87SyxrQjtLO2E7SSxPO0c7RyxtQjs7SSxXO1c7Rzs7SSxXO0ksUztJO0s7SztJLE87RztHO0k7OztRLE07TztJOzs7USxNO087STs7O0k7Szs7MEI7OztROzs7UTtNO0c7O0k7STtLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7OztTO1UsUzs7Ozs7O1c7Ozs7Ozs7Ozs2QixNOzs7O1M7Ozs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7Rzs7STtLO0s7d0I7SSxXO3dCO0ksdUI7OztLO087VTs7SyxNOztJO0c7Rzs7SSxXO0k7Ozs7TTtNLE87Ozs7STtHOztJLEs7SyxNO0k7SSxJOzs7a0Q7OztJO0ssa0I7SyxhOzs7Ozs7Szs7STtJO0c7O0k7O0ssTTs7SSxPO0c7O0k7SSxJOzs7O007TTtNO007Ozs7OztJLE87Rzs7SSxxQjtJO0k7O0ssSSxRLDBCLFU7Ozs7Ozs7OztXOzt3RDtXO1c7Ozs7Ozs7Ozs7Z0Isa0M7Ozs7Ozs7aUI7bUI7Ozs7O2tCLFc7a0I7a0Isb0I7a0I7OztpQjttQjs7a0I7bUI7O29COztvQjs7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7STtJO0k7SztLO0ssTztLLE87SyxLO0ssTztLLE87SyxRO0k7STtJO0k7SSx5Qjs7Ozs7OztNLFk7Ozs7OztNLGM7Ozs7Ozs7Ozs7O0k7SyxJLHFDOzs7OztNLDBCOztJO0c7O0k7SyxNO0s7SyxLO0ssVzs7OztLO007O1M7Ozs7O1k7Ozs7Ozs7OztZO1ksTzs7Ozs7OztNOzs7SztLOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OztrQjtzQiwrQjs7Ozs7Z0I7Z0I7Z0I7aUIsVTtpQixVOzsrQjs7O2lCOztpQjs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7O2MsRzs7Ozs7OztxQyxxQztrQjs7Ozs7OztpQjtrQjttQjs7bUI7b0M7a0IsSzttQjtvQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7NEMsUzsyQjs7bUI7b0IsTzs7O3VCO3VCLE07O3dCLFc7d0IsSSw2Qjs7Ozs7eUI7eUI7eUI7O3VCO3VCOztzQjttQjs7OztpQjs7O2dCOzs7Ozs7OztjOzs7O2UsVzt5Qjs7OztlO2U7Ozs7YTtjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztpQixXO2lCLEk7Ozs7O2tCO2tCO2tCO2tCO21CO21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7OztpQjs7O2tCLDRCO2lCOzs7Ozs7Ozs7Ozs7Ozs7Z0I7aUI7a0IsTztrQixPO2tCO3lDO2lCOzs7Ozs7b0M7aUI7a0IsTzs7b0MsbUIsc0I7aUI7Ozs7Ozs7Ozs7VTs7OztXO1c7Vzs7Ozs7Ozs7O1E7UTtRO1E7UTs7Ozs7USxLLDhCO1M7c0I7UyxTOzs7USxHO1M7O1M7O1M7Ozs7O2lEOztxRDtNOzs7O00sWTs7OztPO087TztPLEksbUIsSTs7Ozs7O087TztrQjs7OztLOzs7Ozs7SztLOzs7O0ksVztPLDBDO0ksMEI7SSxPO0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxTO0ssZ0I7Ozs7Uzs7Ozs7O1M7Uzs7VyxXO1c7VyxvQjs7VTtVOzs7Ozs7O1U7MEI7O1E7SztLOzs7O0s7SztLLE07Ozs7SSxJLFEsMEIsVTs7O3VCLE87Ozs7VSxPOztVOzs7O0ksTTtHOztJO0ssUTs7Ozs7SyxVOzs7OztJLHVCO0k7Szs7Ozs7OztLO00sTztNLEs7OztTLGtCLE87UyxPO1E7Szs7OztTO1M7VSxXO1UsTTsrQjs7OztpQzs7O1E7Szs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJOztNOzs7TyxROzs7b0I7NkI7O0s7SyxPO0k7STs7TTttQjtLO0ssTztJO0k7SyxJLGtCOztNLEksa0I7Ozs7O1c7Ozt5QjtrQzs7VTtlOzs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTsrQjtTLGE7UTs7Ozs7OztxQjtNLFM7O0ssUzs7TTtPLE87TyxPO007O0ssSztNO08sVztPLEs7TyxPO007TSxvQjtNLE87O0ssRyxpQztLLE87ZTs7STtJO0ssTTtLLE07Szs7STtLO0s7Ozs7UztTO1U7O1U7Ozs7Ozs7VTs7UTtLO0ssRztNLFM7TSxHO087USxPO1EsTztPOzs7Szs7OztLO0s7SyxNOzs7O0k7Szs7OztTLFksTztTLG9CO1M7O007TTs7Ozs7O21CO0s7TSxRO00sVTs7c0M7O087O2dDLE8sOEI7Ozs7Ozs7OzswQzs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3FCLHNCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7OzswQjs7O1M7O2tDLE8sOEI7Ozs7OztROztpQyxPLDhCOzs7OztRLEcsK0I7USxJO1E7UyxXO1k7VSxRO1U7VTtVLGdDO1UsTzs7O1E7Ozs7Ozs7Ozs7d0I7aUM7Ozs7O1MsYzs7O1UsVzs7OztlO2dCLG9CO2dCLE8sc0M7OztrQjs7Ozs7Ozs7UTtRO1M7OzthLFc7YSxXO1k7WSxPO1c7UyxRO1MsUTs7UyxzQjtTLFU7Ozs7UyxzQjtTLFU7Ozs7O1M7OztXOztZLE87WSxzQjtXOzs7Ozs7Uzs7Ozs7O2EsVzthO2EsMkI7WTtZLE87VztRO1E7UTtTLE87UyxPO1E7USxPOzs7O1M7O2tDLE8sOEI7Ozs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3lDLDBCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7O0s7Ozs7SSxXO0ksSSwrQjs7Ozs7SztLLE07OztHOztJOzs7SyxvQjtLOzs7O3VCLDBCOztLO0s7Ozs7O0s7SyxNOztHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0s7SztNO00seUI7TSxvQjtNO007TTs7Ozs7O007TSxNOzs7Ozs7O0k7Rzs7O0k7STtHO2lDLDBDOztJO0s7SztJO0k7RztHOzs7OztLO007TTtNLEk7SztJO0ksSTs7Ozs2QztLLE07Ozs7Ozs7SSxZOzs7O1E7Uyx3Qjs7OztRO1E7Ozs7YTtTLGtDOztTLE07OztROztJLE07RztHOzs7O0k7STs7OztTO1U7VTtVLEs7UztRO0ssSTs7OztNOztPLFE7O00sTTs7Ozs7Ozs7SyxZOzs7O1M7VSxVO1U7OztTO1M7OztTLEc7VTtVOzs7OztLLE07O0c7OztLO007TSxLO007SztJO0ksSTs7OztLOztNLFE7TSxROztLLE07Ozs7Ozs7O0ksWTs7OztRO1MsVTtTLFU7Uzs7O1E7UTs7MEI7O0ksTTtHO0c7Ozs7SSxJLDZCLFE7O0ssRztNLE07YyxNO0ssSSxRLDZCO0s7Ozs7TztRLFU7UTtROzs7O1E7UyxTO1M7OztPO2U7TztPOzs7TyxHOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7Rzs7Ozs7OztTLFk7Ozs7TSxJOzs7O1EsTTs7OztNLEk7Ozs7O08sTTs7Ozs7Ozs7Szs7TTtjOztVOzs7VSxNOzs7Ozs7Ozs7O0s7SyxJOzs7OztNLE07Ozs7STtlOzs7O0c7Ozs7STs7O0ssSSxVOzs7Ozs7O0s7Ozs7TTtLOzs7O08sTTs7O00sSTs7Ozs7TyxNOzs7Ozs7SSxhOzs7RztHOzs7O0ksMkI7SSxJOzs7Ozs7Ozs7O1E7OztTLFE7UztRLE07Ozs7O0ssTTs7Ozs7SztLOztNLFM7TyxNOzs7OztLLEk7Ozs7O00sc0I7TSxNOzs7SztJO0k7OztLO0ssSTs7Ozs7TSxzQjtNLE07OztLO0k7SSxPO0c7O0k7SztLOzs7Szs7Szs7Ozs7OztLLEc7TTtLLEksVTs7OzthOztTO1UsVTtVOzs7OztTO1UsVTtVOzs7Ozs7O007O0s7Ozs7TSxROztNO08sVTtPOzs7OztLO0k7STtLLFU7Ozs7OztJO0c7O0k7Szs7O0s7WSw4QjtJO0ksTztHOztJO0s7Szs7STtLLEksNkIsUTttQzs7O1E7UyxRO1MsTztRO1E7OztRLEcsbUM7Ozs7USxNOzs7Rzs7STsrQixrQiw0QjtJOztLO0s7STtJLGdCOztLO0s7STtJOzs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCOzs7b0I7a0M7b0I7cUIsUTtxQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7MEI7MEI7Ozs7Ozs7MEI7Ozs7OztxRTs7dUI7O3NCOzs7Ozs7O3lCLE87Ozs7Ozt5QjswQjsyQjsyQjs7OytCOzhCOzRCLE87MkI7Ozs7Ozs7MkI7Ozs7dUI7OztzQjt1QixlOzs7aUM7d0IsVzt3Qjt3QixXOzJCO3lCOzBCOzs2Qjs7aUM7Ozs7Ozs2Qjs0QjtpQzs7Ozs7Ozs7O3VCOzs7Ozs7O3VCOzs7a0MsTzs7b0I7bUI7aUIsTzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0IsTztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOztJO0s7OztLOzs7Szs7OztJLCtCO0k7Ozs7O00sd0I7O0s7Ozs7OztNLFE7TSxVOzs7Ozt5Qjs7OztZLE07Ozs7Ozs7TSxNOztLLEksdUQ7Ozs7O007c0I7O0k7SSxPO0c7O0k7STtHOztJOztJLEksbUM7O0k7O0s7TTs7OEI7TTs7Ozs7OztNO00sTTs7O0k7STtLO0ssMkIsdUM7SSxPO0c7O0ksSTs7OzZCOzs7STtHOztJO0k7SyxXO0ssVztLLFk7Ozs7UztVLFc7OzswQjs7OztTOztVLFU7Ozs7VSxPO1Usa0I7O1U7VyxPO1csTztXLFM7VyxRO1csTztXLE87VTs7UywwQjtTO1MsZTtvQjtTLEksTzs7O0ssMEI7SyxPOztHOztJO0k7STs7Rzs7STs7SztLLE87Ozs7aUI7ZTtJO0ksTztHOztJLEksTywwQjtJO0ksSTs7Ozs7SztLLE07OztLLE87STs7Ozs7O0ksTTs7OzthOztHOztJLEk7OztxQzs7O0k7Rzs7STs7STs7STtHOztJOztLOzs7TSxTO00sUzswQjs4QjtLO0k7SSxPOzs7OztjO0c7O0ksRywrQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7TTtPO087TSxHOzs7TyxlOztRO1E7UyxVO1MsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtlOztzQiwrQjs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YyxLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Z0I7aUIsOEI7aUIsVTs7Ozs7O2M7ZSxPO2UsMkI7Ozs7ZSxPO2lCO2UsVztlOztxQjs7Z0I7MkI7Yzt1QjtjO3VCO3FCO2UsVztlOzs7OztpQjs7Ozs7OztnQztrQjttQixRO21CLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1Qjt3Qjt3Qjs7Ozs7Ozt3Qjs7Ozs7O21FOztxQjs7Ozs7Ozs7Ozs7Ozt5QjswQjswQixXOzZCOzJCOzRCOzsrQjs7bUM7OzJCOzs7K0I7OzJCOzs7OytCOzhCO21DOzswQjs7Ozs7OzswQjs7Ozs7Ozs7O3VDOzs7O3FCOzs7O21COztrQjs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7Ozs7Ozs7Ozs7O2M7ZTtnQixPO2dCLE87Z0I7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7c0M7Ozs7Uzs7Ozs7O1UsTztVLE87Ozs7VTs7YTs7OztVOzs7UztVO1U7Ozs7Ozs7VTswQjs7UTtLLE87Ozs7STtJLFc7O0s7STtJO0s7SywyQixPLDRCO0ksTztHOztJO0c7O0k7STtLOzs7a0I7Szs7Ozs7O0ssTTs7O0c7O0ksSTs7OzhCOzs7STtHOztJO0k7SztNLFc7TSxjOzs7OztNLEk7OztrQyxNOzs7Ozs7Szs7RztHOztJLEk7O0s7SyxJLFU7Ozs2Qjs7OztLOzJCOzttQjtzQjtLO0k7SSxJLFM7O0s7SyxHLHlDOztLO0k7STtLLFc7OztLO0ssSSxVOzs7NkI7Ozs7d0I7c0I7SztJO0k7SyxXOzs7SztLLGlCO007SztJO0ksTztHOztJOzs7Ozs7OztVOzs7Ozs7OzthOztjOzs7aUI7aUIsSSxVOzs7O21CLE07Ozs7O2lCLEk7Ozs7OztrQixNOzs7Ozs7OztpQjtnQjthOzs7OztpQjtpQixJLFU7Ozs7bUIsTTs7Ozs7aUIsSTs7Ozs7O2tCLE07Ozs7Ozs7O2lCO2dCO2E7Ozs7Ozs7Ozs7OzthLEc7YyxJOzs7Ozs7ZSxNOzs7Ozs7Yzs7Ozs7TyxNOzs7TTs7Szs7Ozs7Ozs7TSxNOzs7Ozs7O0k7STtLLFE7SyxRO0s7SSxXOzs7STs7SyxPOztJOztLLGE7SyxVO0ssVTtLO0s7SztLO0k7STs7O0ssSTs7Ozs7O007Ozs7Ozs7STs7OztJO0ssUTtLLFE7SztJLFc7STtLO007TSxhO007TTtNO007SztLO0s7TSxLO00sSzs7TSxNOzs7O1MsSSxvRDs7Ozs7O1UsTTs7Ozs7Ozs7UTtLO0s7Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7Ozs7SztNLHlCLDBCO00sYztNLE87TTs7cUI7Szs7Ozs7O0s7OztHOzRCLHlDOztJOztpQzs7Szs7STtHOztJOzZCLG1CLDBCO0ksTztHOztJO0k7ZTs7aUU7OztHOztJLE87Rzs7SSxJLFUsNkI7O0ssTTtJLG1CLFU7Ozs7O00sRyw2Qjs7O0ksTTtHOztJO0ksTztHOztJLFk7O2Msc0I7O0s7Ozs7a0I7TztRO1MsTztTLE07O1E7UTs7OzsrQjs7OztPOzs7O1EsSztPLDJCO087UTtROzs7UTs7O1E7Tzs7TyxzQixPO08sNkI7TztRO1E7O1c7O1EsVTtRO08sYTtpQztPLHFCOzs7Tzs7Ozs7UTs7Ozs7OztRO1MsYztTOzs7VTtXOzs7VTtXOzs7Ozs7O1ksTTs7O1UsYzs7Ozs7WSxHO2EsMEI7YSxHO2MsTTthO2E7YztjLGtCO2M7Yzs7O3NCOzs7Ozs7O2EsSztjLE07OztjOzs7YTthLEk7Ozs7ZSxNOzs7YTthOzs7O1UsTTs7UyxNOzs7OztTO1U7OztTOzs7TyxxQixPO08sNkI7TztPO1EsSSxPOztTO1M7VTtXO1c7Ozs7Ozs7UTs7OztZO2EsUTs7O1k7Ozs7Ozs7VztTLE87UztROztnQzs7NkI7OztROzs7OytCOzs7O08scUIsTztPO1E7Uzs7UztTOzs7UTs7Tzs7Tzs7OztROzs7UTs7O1E7Tzs7OztPLG9CLE87TyxpQztRO1M7O1M7Uyw4Qjs7O1ksOEIsUTs7Ozs7bUM7O2E7O2M7Ozs7Ozt5Qjs7O3dCOzthOztZLE07VztTLFc7Uzs4QjtTO1M7K0I7UyxPO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RyxlOztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCOzs7O3FCOztvQjtpQixPOzs7Ozs7Ozs7Ozs7Ozs7O2tCLEcsaUM7Ozs7Ozs7Ozs7Ozs7OztpQixzQjtpQixHO2tCO2tCLEc7bUI7Ozs7aUI7a0I7OztrQjs7O2tCOzs7O2lCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QjtzQzs7OztpQjs7O2tCOzttQjs7Ozs7O3VCO3NDOzs7Ozs7cUI7cUI7O29CO2lCLE87Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUIsVTs7OzttQixVOzs7O21COzs7O21CO21CO21CLFU7bUIsVzs7Ozs7Ozs7Ozs7eUIsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjt5Qjs7Ozs7Ozs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCOzs7Ozs2Qjs7NEIsTTsyQjtnQzs7Ozs7Ozs7Ozs7eUI7OzswQixROzBCLFU7dUQ7Ozs7Ozs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7Ozs0Qjs7Ozs7Ozs7MkI7O3lCLE07d0I7NkI7Ozs7bUIsTTs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7Ozs7c0Isa0M7c0I7OzhCOzs7cUI7bUIsVTs7O21CO29CLGE7OztxQjs7OzswQjswQjt5QjtzQjs7Ozs7OztxQjt1QjtzQjtpQzs7OztvQjtvQixNOzs4Qjs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7UTs7OztRO1MsSTs7Ozs7OztPO1EsSTs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPOzs7O2M7OztlLFE7OztjOzs7Ozs7ZTs7Yzs7ZSxPO2UsTztlLE87Yzs7O3VCOzs7O2E7VyxPO1U7Ozs7O1c7Ozs7TztRLEksUTs7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTLEk7Ozs7OztLOzs7O0k7O0k7STtJO0ssVzs7TTtNLEksaUQ7Ozs7USxrQzs7O0s7SyxPLHdDO0c7O0ksSSxRLDJCLE87Ozs7UTs7UTs7Ozs7UztRLE87O1E7OztRLE07O0ksTztHOztJLEksUSwyQixPOzs7O1E7OztTO1EsTzs7UTs7UyxROzs7Ozs7UyxPO1MsTztTLE87UyxXO1EsTzs7O1E7O0ksTztHOztJLFk7O0k7RztHO0k7STs7STtJO0ssRyw0QztrQjtLLFk7Ozs7UztZO1UsTTs7OztTO1U7VyxzQjtXLE87VTs7Ozs7VTs7Vzs7OztXOzs7OztZLE07Ozs7OztrQiw0Qjs7OztTOztVLHNCO1M7UyxlO29CO1MsSSxPOzs7SywwQjtLLE87O0c7O0k7STtLOztLO0s7Ozs7OztLOztHOztJO0ksb0I7SSxXO0ksUzs7STs7O1E7O1M7UyxzQjtRLE87O1EscUI7UTs7O1M7Uzs7O1U7Ozs7YztjO2E7VyxPO1U7Ozs7O2U7ZTtjO1csTzs7Ozs7UTs7USxtQztRLFM7OztHOztJLGU7ZTtpQjtJLFM7OztLLEssNkI7TSxjOzs7O1E7Ozs7UztXO3NDO1E7Ozs7TSxNOztLLFk7Ozs7O1Msa0M7Ozs7O1csa0I7WTs7WSxjOzthOzs7Ozt3Qjs7Ozs7Vzs7UyxZOztVO1c7OztXLE87VyxPO1U7Ozs7Uzs7VSxVOzs7Ozs7OzthLGdDLFE7Ozs7Ozs7O2lCOzs7O2tCOzs7O3NCO3FCO3FCLE87OztvQjtrQixRO2tCLE87b0I7a0I7bUIsTzswQjs7Ozs7Ozs7OzthO1k7VSxXOzs7YTswQjtZO1UsTzs7O2E7YSxPO1k7VSxXO1U7Z0I7Uzs7OztJLG9CO0ksTztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7STs7OztJLFk7a0U7SSxJLFcsMkM7Ozs7SyxJLE8sMkIsTztLO0ssVzs7Ozs7OztVO1csYzs7O1ksTTs7VztZOztZOzZCO1ksYzs7Ozs7OztXO1k7YSxPO2EsSTs7Ozs7YTs7Ozs7O2EsTTs7Ozs7OztVLGtDOzs7VyxHOzs7WTs7YTs4QjtpQzs7Ozs7Ozs7VSxtQixPO1U7VyxVO1c7VyxJOzs7OztXO1c7WSxXO1k7O2lCOzs7OztZOzZCO1ksUTtZLFU7Ozs7O2EsRzs2Qjs7Ozs7Ozs7Ozs7O1UsRztXO1k7WSxVOzs7WSxNOzs7Ozs7O2U7Ozt3Qjs7Ozs7TTs7TyxzQjtnQjs7SztLOztHOztJO0s7SztLOzs7Ozs7SztLLE07O0c7OztJO0s7OztNLHNCO00sUzs7O007OztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOzs7TyxzQjtPLGdCOzs7O0s7OztNLHNCO00sTztNOztNLHNCO00sVztLO0s7Ozs7Ozs7Ozs7O0s7Ozs7OztLO0ssTTs7Rzs7Ozs7OztRLEs7Uzs7O1U7O1Usc0I7UyxjOzs7OztROzs7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7OztJLG9CO0k7OztROzs7Ozs7OztJO0k7Rzs7SSxHO0ssTTtJOzs7Ozs7Szs7O0ksb0I7STs7O1E7Ozs7Ozs7STtJO0c7O0ksUztJLEcsMEM7SSxJLDhCLFE7O0s7O00sTzs7O1MsbUIsUTs7Ozs7O1k7O2Esc0I7WSxPOzs7O1M7UTtLO0ssMEI7SyxPOztJLG9CO0ksTztHOztJO0ksb0I7SSxPO0c7O0k7SztLO0ssUTtLLFU7Ozs7O0ssTzs7STtHOzs7SSxZOzs7OztRO1MsSSxZLDZCO1M7Ozs7Z0M7Ozs7O1EsRztTO1UsTzs7O2Esa0IsUTs7Ozs7OztjOzthO1k7UyxLLHlDOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixPOzs7TyxPOzs7TyxPOzs7OztzQixjO3FCLFk7NkIsd0I7Rzs7STtHOztJLFc7SSxPO0c7O0k7O087O087O087O087O087ZTs7Rzs7O0k7O087O087O087O087O087ZTs7Rzs7STtJLE87Rzs7SSx1QjtHOztJO0k7OzttQzs7bUM7O21DOzttQzs7bUM7OztLO0s7Ozs7NEI7OztHO0c7O0k7SztLLFk7SyxXOztLOztNOztPOztPOzs7Ozs7O0k7Rzs7SSxpQjs7O0c7O0ksVztJLE87Rzt5QiwrQzs7STtJO0ksVzt3QjtJLFcsVztJLE8sVztHOztJO0ssTztJO0k7SztLLFE7OztJO0s7STtLLE87STtJO0ssTztJO3FCLHVCO0k7SyxhO0ssb0I7SyxVOztLOztNO007TTtLO0s7STtJO0k7SyxZOzs7TSxPOzt5QjtLO00sTztNLE87SyxPOzs7Ozs7Ozs7OztJLE87Rzs7SSxXO0c7RztzQix5Qjs7O3lCLHNCO3FCO0ksbUI7Rzs7SSxJLGUseUM7Ozs0Qjs7O0c7NkIsTyx5QztHLFU7O0k7STtHOztJO0k7STtHO0csSSx1Qzs7STtLLFc7SyxPO0k7STs7Ozs7Uzs7SSxPO0c7O0k7OztNOztPLE87Yzs7O0s7TSxXO007TztRO1EsTTs7Ozs7TyxJLGU7O29CO087Ozs7Uzs7VTs7O1M7UzswQjtTOzs7UyxHLGlDO1M7O1U7OztVOzs7UztTO1U7OzthO2E7WTtTO1M7O3NCO1M7OztTLFM7UztVOzs7VTs7c0I7Uzs7OztJLFc7Rzs7SSxXOztPOzs7Szs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7Ozs7NEIsTSwwQzs7TTs7Ozs7Ozs7OzttQztJO0c7OztLO0s7SztJOztHOztJO0ksTztHO0csbUI7O0k7STs0QjtLLFUsZ0M7TTtLLEk7O0c7O0k7O087O1EsTztRO3FCO087O1E7VTs7Ozs7USxPO1EscUI7TyxJLFk7OzsrQjs7OztPOzs7UyxJLFU7Ozs7Ozs7OztVLHVCLE87VTs7Ozs7O1E7Ozs2Qzs7TyxzQztPOztHO21EO0c7O0k7OzZCOzs7Ozs7OztVOzs7VyxPO1U7Yyw0Qjs7Ozs7OztzQzs7Ozs7O087OztTO1U7VztXLE07Ozs7O1UsSSxlOzJCOzs7Ozs7OztZOzs7YTs7O1k7WTtZOzt5Qjs7Ozs7Ozs7UTs7OztRO1MsVztTLEs7VTs7OztPOztPLG9DO087Ozs7STtHOztJO0ksTztHOztJLE87Rzs7STtJLG9CO0k7SyxRO0ssTztJLE87Rzs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOzs7c0IsTyxnRDtLLE87STtJLE87O0c7O0k7STtxQzs7O007Ozs7Rzs7SSxZLE87O0ksTzs7O0ksOEI7eUM7O0ksTztHO0c7O0k7STtLLEksSzs7OztNLEc7TSxJOzs7SyxPOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjtHOztJO0ssTzs7OztPLE87O087Ozs7O1EsTztRO08sTzs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztRO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O1c7c0IsTzs7VyxPOztVO08sTzs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXLGEsTzs7VyxPOztVOzs7VztXLE87VTtRLDRCO08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87OztPLE87Ozs7Ozs7OztPOzs7OEI7USxPO08sTzs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7OztNLFEsTzs7TSxPO0s7SyxPOztJO3lCLE8seUM7O0ssWSxPOztLLE87STtJLE87Rzs7STs7STs7OztHOzs7SSxnRDtJO0c7O0ksYzsrQjs7O0ssVzs7SSxnQixPO0ksTztHO0c7STtJO0k7STtJOztJLFEsTTs7SSxPO0c7O0k7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1ksc0I7WSxLO1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7O0c7O0k7O087O1EsUztRLEk7OztRLEcseUM7OztPOztPLGtCO087O087OztROzs7Tzs7Rzs7STtLLFk7SyxPO0k7Yzs7Rzs7STtJOzs7Ozt3Qjs7O0s7OztTOztVOzs7OztTO1U7VyxJO1c7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztRO00sTzs7OztJO0c7O0k7STtJOztLLDJCLGdDO0ksTztHOztJLFk7SSxvQjtJLE87Rzs7STs7MEIsVzs7d0M7O08sb0M7Tzs7Rzs7SSwrQjt1QjtJO0s7Ozs7SyxRO0s7OzJDOztjLE07Ozs7O1U7O1csb0I7VyxHLGtEOztVOztXLEk7VyxPO1csTzs7O1c7Ozs7YTs7Ozs0QiwyQztjOzs7aUI7aUIsTztnQjtjLE87YTs7O2M7ZTtrQyxPLCtCO2UsTztjO2U7Z0IsTzt1Qjs7Ozs7Ozs7Ozs7O1U7O1M7TTs7STs7Ozs7Ozs7Ozs7Ozs7TTtPO1EsTzs4QjswQjs7Ozs7SyxJLEk7Ozs7OztLOztHOztJLFc7SSxPO0c7O0ksVztJLFc7STtpQzs7O0k7Rzs7SSxpQjs7SSxXOztLLGtCLFE7O00sZ0MsTztNOzt3Qjs7Ozs7O0s7STtJLE87Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87OztrQjs7O1k7OzswQjswQjtXO1EsTzs7O2lCLDRCO1EsTzs7USxvQixVOzs7UyxzQixPOztRLE87O0ksTztHO0c7STtJO0k7STtJO0k7STtJOztJO0ssTTtLO0ssVztlOzs7Ozs7Ozs7Ozs7Ozs7YSxPOzs7Ozs7UTs7STtHOztJO0k7SyxJLFc7Ozs2Qjs7Ozs7Rzs7SSxXO0k7OztLOzs7O1M7UyxPO1E7TSxPO0s7Ozs7STtHOztJOztNO08sTztPLE87TyxPO2M7O007TyxPO2M7SztLLGlDOztHOztJO0s7TSxPO00sTztLO0s7O087d0I7TTs7O0c7O0k7SSxJLFcsNEM7Ozs7SztNLFc7TTs7Ozs7Ozs7Ozs7Ozs7WSx1Qiw0Qjs7Ozs7O2lCO2lCLE87Z0I7YSxLO2EsVzsrQjs7Ozs7O2tCOztNLEc7O007OztHOztJLEksUSw4Qzs7SztLLFc7STtlOztHOztJLDBCOzs7STs7Szs7O1M7OztRO0ksTztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJOzs7RztrQywwQzs7SSxZOzs7OzBCOzs7O1E7O0k7Rzs7STtJO0s7SyxHO007SztNLE07TTtNOzs7OztTOzs7OztTLEc7VTtTLFk7Ozs7Ozt5Qjs7NkM7Ozs7O1M7UztpQzs7O0s7NkI7O0c7MkIsNkI7NkIsbUIsc0I7O0k7Ozs7O0c7O0k7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87RztHOztJO0k7TTtXO0s7TTttQztNO0s7OztLLEksTSw4Qjs7OztTO1U7VTs7OEI7O1M7Ozs7O1UsMEI7OztTLEc7VSxjOzs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7O1M7OzZCOztTOzs7VTs7O1U7O1UsNEI7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7Uzs7OztjOzJCO2E7c0I7OztTOzs7YSxrQixROzZEO2E7WTtVLFU7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDO1csaUM7Vzs7OzttQzt3QjtXOzs7Uzs7OztvQztVOzthLGdDLFE7MkM7Ozs7Ozs7ZTs7Ozs7OztlOzs7YTs7VSxXO1M7Ozs7aUM7d0I7Uzs7Uzs7O3dCOztTLGdCO1M7VSxRO1U7UztTO1Usc0I7VSxLO1U7Uzs7Uzs7Uzs7Ozs7YTs7O2M7YyxPO2EsVztZO1UsTztTOztLO0k7SSxHO0s7O00sc0I7a0I7O0k7SztLO0s7O0k7Rzs7SSxvQjtJLE87Rzs7STtLO00sVTs7Ozs7O1M7c0I7UTtNLGlCOzs7UztTLE87UTtNLGdCO007OztLOzs7Z0IsTztJOzs7O0s7SztLOzs7SSxZO0ksTTtHOztJO0s7Ozs7O007TTs7O0s7O0ksYzs7Ozs7Ozs7Ozs2Qjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7Rzs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0k7O0ssSSxPLDRCOzRCO0s7SztJO0ksTztHOztJOztLLFc7SyxPO21COztJO0ksYTtJLE87Rzs7STs7SyxPOzs7cUIsMEI7SSxPO0c7O0kscUM7O0ksZTtHOztJLFc7d0IsNEM7STtnQjs7STs7YyxJLDhCO2M7YTtHOztJLEk7SSxXO0c7O0k7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHOztJO0k7SSxJLGlDOztLOztNLE87OztTLFcsVztTO1U7VyxPO2tCOzs7UyxjO1E7Szs7STtJO0k7OztLLHVCLFU7Ozs7TyxzQixVOzs7Ozs7O1UsRztXO1ksVzttQjs7Ozs7Ozs7Ozs7O0s7Ozs7O0k7Ozs7NEMsMEI7Szs7Ozs7OztTOztRO0s7OztLLGtCOztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCLDJCO2M7OztJLEk7O0ssYTtLLHNCOzs7TSxXO007Ozs7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7OztLO00sVTs7O007O0s7STtJLFc7O0s7Ozs7OztLO0k7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7OztjOzs7Szs7Ozs7TTs7Yzs7OztJOzs7Ozs7YTs7OztHOztJO0ksTztHOztJO0ksTztHOztJLG1COztJOztjO2U7ZTtjO2E7Rzs7STtJO0ssVTtLO0k7STtJO0k7STs7Szt5RTtLO0k7STtLLGM7SyxPO0s7OztLO0k7Ozs7Ozs7STtHOztJO0ksTztHOztJO0k7STtJO0ssTztLOzs7SSxPOzs7Ozs7Rzs7STtLLE87SztLO0s7Ozs7K0I7Ozs7O0k7Rzs7STtJLE87Rzs7SSxZOzs7Szs7STtHOzs7STs7Ozs7OztROzs7UyxNO1M7UztROztVO2E7UyxXO1MsSztVLE87Ozs7O1EsdUI7USxHO1M7Ozs7OztpQyxrQix3QjtROzs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztTO1M7Ozs7O1E7O1M7Uzs7O1M7OztZO1k7VztTLFM7Uzs7OztZO1k7VztTLFc7UyxhOzs7WTtZOzs7Ozs7O1c7UyxTO1M7Ozs7WTtZO1c7UyxZO1MsYzs7O1k7Ozs7O2E7OzthO1ksYTs7WTtXO1MsUztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssTztLOzs7Ozs7STtHOztJO0s7SztPO1U7O0k7RztHLHFCOztJO0k7STtJO0ksZTtJO0k7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STtJLHlCO0ksSSxPLDhCOztLOztJO0k7SyxtQjtLOzs7Szs7STtJO0ssb0I7SztLO0ssTztLLE87SyxPO0s7STtHOztJO0ksTztHOztJOztLO0s7SztLO0ksaUI7SSxXOzs7Ozs7Ozs7O0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CO0ksb0I7STs7O2UsYztnQixXO2dCLE87O2U7YztjLE87Ozs7Rzs7SSxXO0ksTztHOztJO0k7O3lCOztPLG1CO087Ozs7OztTOztVLFE7O3FCOztTLEksc0IsVzs7Ozt1QyxTO087OztRO1E7O2dDO087bUM7Ozs7O0s7O007MEI7TSxPO0s7SyxPO0k7SSw4QixXO0c7O0k7SyxPO0ssYTs7Szs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OzhDOztjO2E7VyxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO007TTtPLFE7Tzs7TyxrQjtPOzs7O087a0Q7O087TTtNO08sTTtPOzs7O1ksTztXO00sVztLO0s7TSxNO007TTs7O1U7UztNLFE7OztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7STs7Szs7TSxvQjs7SyxPOztJO0ksTyxXO0c7O0ksTztHOztJO0ksTztHOztJO0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7O0ksTzs7Ozs7Ozs7OztJLG9CO0ksVztJLE87Rzs7O0ksRywrQjtJO0k7OztJOztLLE87OztJLE87Ozs7Ozs7Ozs7SSxZOztnQjs7SSwwQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSyxrQyw4QiwrQyxVO0k7OztJOzt5Qjs7OzRDOzs7STtHOzs7SyxPOztROztvQjs7SztJO0ksUzs7SSxnQjtHOztJOzhCO0c7Ozs7bUI7Ozs7TTs7O007Ozs7O0c7STs7NEIsTyx5QztJLGlCOztJLFk7O0s7O00sVTs7Ozs7O0ssZTtLO00sTztNLE87TSxXO00sTztLLE87O0k7Rzs7STs7O0s7STtzQztJOzsyQixPLDBDOztJLE87RztHLGlCOztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87Ozs7Szs7UTs7OztTOztTLFE7UyxVOzs7UztVOzttQixPO2tCOzs7O1M7VTs7bUIsTztrQjs7UTs7OztTLFc7Ozt5QixXOztXOzs7a0M7WSxPO1c7bUI7Ozs7Ozs7OztnRDs7Ozs7a0I7aUM7OztZOzs7ZTs7Ozs7Ozs7O1k7O2E7YSxPOztlOztXO21COzs7Vzs7OztZLE87VzttQjs7Ozs7Ozs7O1csa0IsTztXO21COzs7Ozs7Ozs7OztTLFc7OztTO2lCOzs7USxXOzs7Ozs7Uzs7O1k7Ozs7Ozs7Ozs7OztXO1c7OztjOzs7Ozs7Ozs7OztrQzs7Ozt1Qjs7Ozs7VyxXOzs7VztXO21COzs7Ozs7OztXLFc7OztXO1c7bUI7Ozs7Ozs7Ozs7USxXOzs7UTtRO1EsYzs7Ozs7WTs7cUI7cUI7cUI7cUIsTzs7Ozs7Ozs7b0I7O1EsMEI7O0k7SSxPO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSw2Qjs7OztPLE87Ozs7STtHOzs7STtJOzs7cUQsUztJOzs7O2M7O2U7ZTtjO2M7ZSxVOzs7ZTs7O2dCLE87ZSxXO2M7YyxXOzhCO2M7ZTs7O29CO29CO21COztlO2M7ZSxNOztjOztlO2dCOzs7Z0I7O2lCOztvQjs7O3FCLFE7Ozs7O3FDLG1COztvQjs7NEI7OztlO2dCLE87Z0IsTzs7Z0I7O2lCO2tDO2lCLE07O21COzs7Ozs7Ozs7O2dEO2U7Z0IsTztnQixzQjs7Ozs7Ozs7ZTtnQjtnQjt1QztlOzs7Ozs7Ozs7a0I7O2dCO2dCOztlOzs7Ozs7OztlLE07O2E7Rzs7O0k7Szs7O0k7Ozs7Szs7STtLOzs7SSxjO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7Ryw4Qzs7O0ksWTs7STs7O0k7OztJLG1CO0kscUI7SSxvQjtJLFc7Rzs7SSxxQjtJLG9CO0ksVztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7ZTs7Ozs7Ozs7O2M7O2UsTztjOzs7bUI7YyxvQjs7YztlOzs7Ozs7Ozs7YyxPOzs7Ozs7OzthOzs7STs7OztjO2M7YztlLE07O2U7O2tCOztlLE87Ozs7Ozs7Ozs7O2MsaUI7YyxPOzs7Ozs7Ozs7O2E7Rzs7Ryw4QjtHLGlDOztJO0c7O0k7OzZCLCtDO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOztPOzs7USxvQixPLHlDOzRCLE8seUM7TyxPOztPOzs7O1Esb0IsTyx5Qzs7d0IsTyw4QztPLE87O087Ozs7USxvQixPLHlDOzs7VyxPO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0ksWTs7OztNLHVCO00sTztLO0ssTztJO0ksdUI7SSxPOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOztJLEksNEIsOEI7Ozs7NEI7OztHOztJLGlCO0ksZ0I7SSxPO0c7O0ksTztHOztJOzs7Tzs7USxPO1E7TyxXOzs7Ozs7OztVLFk7VTs7Ozs7Ozs7VTtXLE87VyxVO1U7Ozs7Ozs7O0k7Rzs7OztnQjs7Ozs7UTs7OztTLHFCLE87UyxHOzs7Ozs7Ozs7OztTOztVLGtCO1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7UTs7UTs7Ozs7OztTOzt3QztTLFE7UTs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs0Qjs7Ozs7USxZO1E7Ozs7O1E7OztROzs7OztJO3FCO2tCOztJO0c7OztJOzZDO0ksTztHOztJOzs0QztJLE87Rzs7STs7Tzs7d0I7OztPO2U7O0c7O0ksUzs7O0s7Ozs7Ozs7TTs7O007Szs7Ozs7STtHOztJO0k7OztRLGtCLFE7b0I7O1EsSSxnQjs7OztVLE07Ozs7OztROztTLFE7UyxVOzs7UyxzQjtTLFk7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztRLEk7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7O1Msc0I7Uzs7O2dCOztROzs7OztlLE07UTs7OztPLGlCOzs7TyxpQjs7OztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTtJLEksZ0I7Ozs0Qjs7O2lDO0k7SyxPO0ssVTtLLE87SyxTO0ssUTtJLEk7Ozs0Qjs7O0ksZ0I7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksaUI7O0k7Szs7O1E7Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7K0I7Ozs7OztnQjs7O0ksVztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRO1MsUTs7Ozs7O1E7Ozs7RztxQyx1Qzs7Ozs7OztRO1MsWTtxQixNO1Msb0I7Uzs7Ozs7VSxNOzs7O1E7O1M7O1k7Ozs7Ozs7Ozs7O3VDOzs7O2EsTTs7WTs7USxPLFc7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7OztROzs7UztTO1MsTTtTO1MsTTtRLE87O0c7O0k7STtLLEksYyx1Qzs7Ozt1QjtNLDZCO00sRywrQjtNLEk7O0c7O0k7OztJO0s7TSxtQzs7Ozs7Ozs7SSxPO0c7O0k7SztLLFE7Ozs7Ozs7O087USxRO1E7VTs7Ozs7Ozs7Rzs7SSxTOzs7Ozs7Ozs7Ozs7Ozs7O1MsRzs7Ozs7Ozs7Ozs7O087OztZO087Ozs7O087OztpQjs7d0I7O0c7OztLLEksNkIsYTs7OzRCOzs7STs7STtHOztJO0s7TTtNO007OztTLG9CO29COztROzs7Uzs7Ozs7Ozs7O2lCLG1CO2lCOztrQjtrQixtQjs0Qjs7Z0I7YSxPOzs7MkI7Ozs7UztROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7O1M7UyxPO1E7TSxPO00sMEIsTyxrQztNLDhCLFc7O0s7Ozs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STtJLFk7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7SyxVO0s7Ozs7Ozs7Ozs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7VTtVLFM7VSxROzs7VyxNO1UsTTs7Ozs7Ozs7Ozs7OztVLEc7VztZO1ksTTtrQjs7OztTLE07O1M7OztVOzs7YTtjLE07YyxNO2EsTztZO2dCOzs7Uzs7VTtnQjs7O1M7OztVO2dCOzs7Uzs7OztVO2dCOzs7Uzs7OztVO2dCOztLO0s7O0c7O0ksTztHOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXLEk7Ozs7Ozs7Ozs7OztvQjs7TSxNOztLO0s7OztLLE07STtHOztJLFk7O0s7TSxPO00sVTs7d0M7Szs7STtHO3VDLDRCOztJO0c7O3VCLE8seUM7STtnQzs7Szs7TSxxQixPLHlDOzJCLE8seUM7SyxPOzs7cUIsTyx5QztJO0s7O1E7O1E7O1E7Z0I7O0k7Szs7TTtNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxtQixPLHlDO3VCLE8seUM7SSxPO0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7O1k7O1c7O1k7WTtZLE87VyxPOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxXO08sTzs7O08sVztPLE87OztHOztJLHdCLE8seUM7SSwrQixTOztLOztNLE87SyxPOztJO0s7TztLLE87SSxPO0c7O3FCLE8seUM7SSw0QjtJOzsyQjs7O087OztPOztRO1E7USxPO08sTzs7Tzs7UTtRO1EsTztPLE87O0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7OztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sVztPLE87OztPLFc7TyxPOzs7Rzs7cUIsTyx5QztJLFU7O0k7Szs7STtLLE87SyxPO0ksTztHOzt1QixPLHlDO0k7Ozs7UTs7UTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7TztPOzs2Qjs7OzsyQixPLHlDO087UTs7Vzs7O1k7VyxPOzs7VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTyxXOzs7Tzs7O087O1E7OztPLG9CO08sTztnQjs7Ozs7O087OztPLHNCO08sTzs7O087O1EsVTtPO2lCO2lCOztHOztJOztLOztJO0ssTTtLLE07SSxJOzs7OztLOztJO0c7O0k7Ozs7O0k7OztPOzs7OztRLE87TyxHLHFCLHNDO08sVztPOzsrRDtPO1E7UTs7Ozs7Ozs7MEI7Szs7RztHLEk7OztJLGU7O0k7OztJOztPOztPOztPOzs7O0c7bUIsbUM7O0k7Szs7Ozs7O00sUTtNLFE7SyxHOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7OzJCLG9CO0ksTztHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHLEk7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7Vzs7O2U7ZTtjO1ksTztZLFU7OztXO1k7YSxPO2EsTztZOzs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7O1Msa0I7VSxlO1UsSztXLE07VTtXLE87VyxPO1csUTs7OztXLGM7VyxjOzs7VztXLGM7Ozs7Ozs7Ozs7Ozs7Vzs7O2Usa0IsUTsrRDtlO2M7WSxVO1c7Ozs7Vzs7WTs7YTs7Ozs7O2MsVTtjLFU7Ozs7Ozs7Ozs7O2dCLFc7bUI7aUI7a0IsUTtrQixROzs7Ozs7Ozs7Ozs7Ozs7OztlOztpQjs7O2tCO2tCOzs7Ozs7Ozs7Ozs7Yzs7Z0I7OztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7WSxJOzs7Ozs7Ozs7Ozs7Ozs7eUI7O1U7Ozs7Ozs7O00sYzs7Ozs7Ozs7c0M7Ozs7O3NDOzs7Ozs7Ozs7O0k7O007O007TyxPO08sTztNOzs7Ozs7O0s7O0k7Rzs7STtJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7UTs7dUI7OztTOztVLFE7VSxVOzs7O2EscUIsTzthLEc7OzthLHNCLE87YSxHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7O087UTtTOztZLFc7WSxPO1c7O1E7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7TztRO1M7O1ksVztZLE87Vzs7UTtxQjs7Tzs7O1EsTztRLE87Ozs7O1k7YSxPO2E7ZSwwQjtZO2EsVzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7WTtXO2dCOzs7Tzs7O1E7UyxrQixtQztTOztZOzs7Ozs7YSxRO2EsUTtZLEc7Ozs7Ozs7YTs7WTs7Ozt3Qjs7WTs7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7OztJO0ssYzs7Ozs7Ozs7O0ksZ0I7STs7Ozs7O0ksb0I7STtLOzs7SyxPOzs7SztLLG1CLGdEO0s7TSxROzs7TSxVOzs7OztNLEksc0I7O00sbUI7Ozs7O2dCO0s7TSxVOzs7OztNLFU7Ozs7O007SztNO007TyxJLG9COzs7Ozs7SztJO0ksTzs7O0k7O0s7O0k7SyxNO0ssTTtLO0s7SSxJOzs7OztLOztJOzs7O0ksc0I7OzBCO0k7Rzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7O0ssTztJO0ksTzs7O0k7O0s7SyxPO0k7STs7Rzs7SSx5QixPO0ksTzs7OztJLE87OzZDLFM7OztJLE87OztJLHdCO0c7O0ksd0I7Rzs7O0k7Ozs4QixPOzs7TyxPOzs0QixPOzs7TyxPOzs2QixPOzs4QixPOzs2QixPOztPLDBCLE87TyxPOzs0QixPOzs2QixPOzs7Ozs7VztXLE87VTtPLE87Ozs7OztXO1csTztVO08sTzs7O08scUI7ZTs7O3NDLHNDOzs7SSxPOzs7STtLLGtCLE87SyxPOzs7SSxvQjtJLE87OztJOztLOztNOzs7UztTLFc7UyxPOztLLE87OztJLG9CO0ksTzs7Ozs7Ozs7O0s7SztLLE87STtJO0k7SSxXO0k7O0s7SyxPO0k7SSxPOzs7SSxxQixNO0ksTzs7Ozt3QixrQixPLDRCO0k7SSxVO0ksTzs7OztJLE87Ozs7SSxzQjs7STtJLFU7SSxPOzs7STtJO0k7O0ssMEI7Szs7dUIsTzs7UTtnQyxPOzs7STtxQzs7O087OzRCLE87O087O08scUIsTTtPLE87O087OztRLE07Tzs7OztXO1csTztVO08sTzs7TyxzQixNO08sTzs7Ozs7O1c7VyxPO1U7TyxPOztPLHVCLE07TyxPOzs4QixPOzs4QixPOzs4QixPOzs7TztPLE87O0c7Ozs7Szs7O3dCLE87O1EsOEIsTTtRO1EsTzs7USxnQixNO1EsTztnQjs7STtJO0k7cUM7OztPOztPOzs7TztPLE87O08seUIsTTtPLE87OztPOzs7O1csa0IsTTtXLE87VTtPLE87OztPO08sVTtPLE87OztPO08sVTtPLE87O08sMEIsTTtPLE87O08sd0IsTTtPLE87O08sd0IsTTtPLE87Ozs7Ozs7Vzs4Qjs7VyxPO1U7TztPLFU7TyxPOztnQyxPOzs7TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztPOztPOztnQyxPOzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O087OztPO08sTzs7Ozs7d0Isa0IsTyw0QjtJLE87Ozs7SSxPOzs7O0k7SSxVO0ksTzs7OztJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08scUI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJLHdCO0c7O0ksWTs7SSxPOzs7O0k7OztPOzs2QixPOzs7TztPLE87OztPOzs7O1c7VyxPO1U7TyxPOztnQyxPO2U7Ozs7STs7NEIsTzs7Tzs7Tzs7OEIsTzs7TztlOzs7OztJLE87Ozs7STtJLE87OztJLDhCOzs7Ozs7OztXO1csTztVO087Ozs7VztXLE87VTtPLE87OztPO08sTzs7aUMsTzs7O087TyxPOzs7OztJOzs7Tzs7NkIsTzs7O087TyxPOzs7TztPO08sTzs7Ozs7UTtRO1EsTzs7O087TyxPO3NDLE87Ozs7O0ksTzs7OztJOzs7TyxzQixNO08sTzs7K0IsTzs7O087Ozs7VztXLE87VTtPO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7Ozs7OztPOzs7O1c7VyxPO1U7TztPLE87OztPO08sVTtPLE87OztPO08sTzs7Ozs7STs7O08sMEIsTTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO2U7Ozs7O0k7c0M7OztPOzs7TztPLE87O08seUIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87OzhCLE87O08sMkIsTTtPLE87O2dDLE87d0MsTzs7Ozs7STtJLFU7SSxPOzs7O0k7Syx1QixNO0ssTzs7O0ksTzs7OztJOztLLE87OztJLE87OztJOztLLE87OztJLE87Ozs7STs7NEIsTzs7MkI7OzZCOzs7TztPLE87OzZCLE87ZTs7OztJLHFCLE07SSxPOzs7O0k7SSxVO0k7SSxPOzs7O0k7SSxPOzs0QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztrQixTOztJLGdDLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7OztJOzs7OztLLE87Ozs7Ozs7SyxPO0ksb0I7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SyxPO0ssVztJO0c7O0ksYztJO0c7MEMsUzs7STtJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0k7Ozs7O3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7OztPOztRLE87USxzQjswQjs7O087O1EsTztRLHNCOzBCOzs7Ozt3Qzs7OztJOzs7SSxlO0k7Rzs7SSxjO0k7Rzs7STtLLGtCLE87SyxXOzs7SSxvQjtJLFc7OztJOztLOztNOztTO1U7VTtVLE87VSxTO1M7O0ssVzs7O0ksb0I7SSxXOzs7STs7SyxPO0ssTztJLG9CO0k7SyxZO0ssVztLO0ssTztLLGU7SztLLE87SSxvQjtJLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7SSxpQixPO0ksb0I7STtLLGU7SztLLE87SyxxQjtJO0c7O0ksd0I7STtHOztJOztLOzs7O00sTztNLE87Ozs7STtHOztJLEksVSxnQztJO0s7Ozt3QixXOzs7UyxzQjs7Szs7SSxvQjtJLEksWSx5Qzs7Ozs7Ozs7Ozt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7Ozs7YTthLGU7WTtVLFE7VSxPOzt5Qjs7O1M7Ozs7VSxPOzhCOzs7Uzs7O1UsTztVLHNCO3lCOzs7Uzs7VSxPO3lCOzs7NEM7OztTOztVLE87cUI7Ozs2Qzs7O1M7Ozs7VSxPOzBCOzs7OztJO0c7OztLOzt3QixXOztROzs7UyxPO1MsTztRLFc7O1EsZ0IsTztRLFc7Z0I7O0k7STtJLG9CO0k7SyxZO0ssVTtLOzs7Ozs7UTs7OztTLFE7Ozs0Qzs7O1E7Ozs7O1MsTztTLFU7Ozs7UTs7O1MsTztTLE87UyxzQjtTLE87d0I7OztROzs7O1MsTztTLE87d0I7OztROzs7UyxPO1MsTzt3Qjs7O1E7O1MsTzt3Qjs7O1E7Ozs7UyxPO2lDOzs7UTs7O1MsTzsyQjs7O1E7Ozs7OztZOzs7YTs7O1ksMkI7VztTLFc7UyxPOzs7OztZOzs7Ozs7O3lCOzs7UTs7Ozs7UyxPO3lCOzs7UTs7UyxPO3lCOzs7UTs7OztTLE87UyxPO1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7UyxPO3lCOzs7UTs7Ozs7OztTLE87UyxPOzsyQjs7Ozs7O3lCOzs7Ozs7Ozs2Qzs7O1E7OztTLE87UyxzQjsrQjs7O1E7Ozs7OztTLE87d0M7OztROzs7UyxPO3lCOzs7MEM7OzswQzs7Ozs7O3lCOzs7Ozt5Qjs7O1E7Ozs7OztTLE87UyxPO1MsTzs7O1k7Ozs7Ozs7OztROzs7UyxPO3lCOzs7Ozs7O0k7Rzs7SSxpQixPO0ksb0I7SSxrQjtJO0c7O0ksaUIsTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJLEksVSxnQzs7O29DOztPOzs7USxROzs7Ozs7OztpQjs7OztxQzs7c0M7O3NDOztzQzs7Tzs7USxPO3VCOzs7c0M7O3NDOztzQzs7OztzQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OztJO0c7O0ksd0I7Rzs7SSxZOztJLGtCOzs7SSxJLFUsZ0M7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1Esc0I7USxPO3VCOzs7d0M7Ozs7STtHOztJOzt3QixXOzt1QixXOzswQixXOzt5QixXO2U7Ozs7SSxnQyxPO0k7Rzs7STs7O0ssTTs7O0ksVztHOztJLDhCOzs7Tzs7Ozs7VztXLGM7VTtRLE87OztXO1csa0I7VTtRLE87Tzs7TyxrQyxNO08sVzs7TyxnQyxNO087O087Ozs7USxNO08sVzs7OztJLEksVSxnQzs7Ozs7cUM7O087OztRLE07Ozs7Tzs7OztRLE07USxNO3VCOzs7OztROzs7UyxNO1MsVTttQjs7UTs7UyxNO21COzs7Ozs7O3VCOztJO0c7O0ksYztJO0c7O0ksSSxTLGdDOzs7Tzs7OztRLE07aUM7OzsyQzs7O087Ozs7OztRLE07USxNO1Esb0I7USxNOzZCOzs7Tzs7O1EsTTtRLE07USxvQjtRLE07c0I7OztPOzs7OztRLFU7OztRLE07USxNO1Esb0I7Ozs7O1c7Ozs7Tzs7Ozs7O1EsTTtRLE07c0I7OztPOzs7USxNO3NCOztJO0c7O0ksSSxZLGdDOzs7Tzs7OztRLE07b0M7Ozs0Qzs7O087Ozs7USxNO2dDOzs7Tzs7O1EsTTt5Qjs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOzs7cUM7Ozs7Ozs7O3lDOzs7Ozs7Ozs7OEM7OztPOzs7O1EsTTsyQjs7OztJO0c7O0ksSSxXLGdDOzs7Ozs7Uzs7OztVLE07aUM7OztTOztVLE07MEI7OztTOzs7O1UsTTtxQzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTs7K0I7Ozs7OzswQjs7O1M7Ozs7VSxNOztnQjs7Ozs7OzhCOzs7MEM7Ozs7O0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7STs7Szs7OztNLE07OEI7O3NDO0k7Rzs7STs7Ozs7MkI7O3dDO0k7Rzs7STs7SyxXOzs7SSxnQjs7O0k7Ozs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7USxNO3NCOzs7cUM7OztJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7Rzs7STtLLFM7SyxVO0k7Rzt3QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RyxJLHNCOztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLLEk7d0IsaUM7SztNLEs7Ozs7O0s7OztPOztROztXOzs7Ozs7Ozs7YyxHO2U7ZTs7Yzs7Ozs7Ozs7YztjO2M7OztjLEc7ZTtlOztjOztlO2U7ZTs7OztlO2U7ZTtlO2U7Ozs7ZTtlO2U7ZTtlOztjO2M7c0I7O1csRztZO1k7O1c7Vzs7Ozs7Yzs7Ozs7WTs7OztnQixPO2U7WTtZO1ksUTtZO1k7WTs7O087Tzs7OztNLEk7O0k7STs7Szs7O0s7OztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLG1DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixXOzsyQixXOzt5QixXOzs7TyxxQjs7MEIsVzs7MkIsVzs7MkIsVzs7MkIsVzs7RztHOzBCLE8sMkI7O0ksUzs7SztLLEc7OztNLEs7TyxNO00sWTtNO087TyxHO1EsSTs7Ozs7Ozs7SztJO0k7SztLLDBCLE8sMkI7SSxPO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7RztHLEksc0I7eUIsZ0Q7O0k7O0c7bUMsc0I7K0IsNkI7O0k7SyxNO0s7O0c7OztJOzs7OztTOzs7O2lCOzs7UztVO1k7VSxNO1UsTTtVLE07OztlOztVLE07VSxNO1UsTTs7VSxNOzs7Ozs7Ozs7d0I7Ozs7O3dCOzs7Ozt3Qjs7Ozs7d0I7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UyxPO1E7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Szs7Ozs7Ozs7Ozs7TSxVO007OztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksbUIsTyw4QjtHOztJO29CLGU7SSxPO0c7OztLO0s7TSxvQjs7O0s7STtJLE87Rzs7SSxVO0ksTztHOztJO0k7SztLLE87STs7SztLO0ssTztJOztLOzs7Ozs7Uzs7VSxZO1Usb0I7UztVO1csTztXOzs7Ozs7Ozs7Uzs7Ozs7VTs7OztVOzs7Ozs7NEI7Ozs7Uzs7O1U7VSxNO1M7Ozs7TTs7O0s7SyxPO0k7O0ssYztLO0ssTztJOztLLGtCOzs7Ozs7OztZO1c7UTtTOzJDLHFCOzs7O1E7OztROztTO1Msb0I7UTs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJO29DOzs7STtJOzs7TztPLE87O087O1Esb0I7TztPLE87ZTs7Rzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1U7Vzs7STtHOztJOzswQixXOzt1Qzs7TyxrQztPOztHOzs7SSxnQjs7O0ksWTs7Ozs7OztPOzs7UTs7O087Ozs7O0ssWTtLO0s7STtJO0k7Rzs7STs7eUIsVzs7eUI7O3VEOzt5Qjs7MkIsVzs7MkIsVzs7O08sVzs7Rzs7STtJO0c7O0ksVztJLE87Rzs7SSxtQixPO0ksTztHOztJO0ssTTtLLFE7OztHOztJO0ssTTtLLFE7SyxPO0ksTzs7Rzs7SSxJLE0sbUM7Ozs7OzttQjs7O087OztRLE87NkI7OztxQzs7Tzs7O1EsTzsrQjs7O3dDOzs7c0M7O3FDOztPOztRLE87bUI7OztzQzs7cUM7Ozs7OztXO1csTztVO29COzs7Ozs7O1c7VyxPO1U7b0I7Ozt3Qzs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7O0ksVzs7O0k7SyxNO0ssUTtLOztLLE87SyxPO0s7SyxXOzs7Szs7OztNLE87TSxPO0ssVztJO0ksSSxXO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLOztJLG9CO0ksZTtJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7OztjO2MsVzthO1csTzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2MsTzthO1k7cUI7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7Rzs7STtLLE07SyxRO0ssTztLLE87SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7OztROzs7O1MsTztTLE87OEI7Ozs7Ozs7OztXOzs7WSxPO3FDOzs7OztVOztXLE87c0I7O1UsMEM7VTtXO1ksTztZLE87VyxLO1csSTs7VTtXLE87VyxPO1c7YTtXLE87Ozs7O2M7Ozs7Ozs7UTs7Ozs7O1k7WSxXOztZLHNCO1c7UyxPO29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzRCOzs7UTs7O1M7OztZOytCOztZLG9CO1c7UyxTO1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87O3dCOzs7O1E7Ozs7bUI7OztXOztZLE87bUI7OztXOztZLE87bUI7O3dCOzs7OztROzs7UyxPOzs7O1E7OztTLE87Ozs7Ozs7O1k7OzthLE87WTtXO3FCOzs7UTs7OztTLE87NkI7OztROzs7UyxPO3FCOzs7MEM7OzsyQzs7O3VDOzs7O3FCOzs7UTs7OztTO1M7a0M7OztTLFE7UyxPO1MsUztTLFM7Ozs7UTs7UztTLE87Ozs7O3FCOzs7UTs7O1MsTztxQjs7STtLLE87O0k7Szs7OztNLFE7TSxVO0s7OzhDOzs7UTs7O1MsTztTLE87MkI7OztROztTLE87MkI7Ozs7O3FCOztLLE87O0ksTztHOztJOztLLFc7SyxXO0s7STtHOztJOztLO0ssYztJO0ksVztJO0c7O0k7SyxNO0ssUTtLOztLLE87SyxPO0ksTzs7Rzs7SSxrQixPO0ksTztHOztJLEksTSxtQzs7O29DOztPOzs7USxPOzZCOzs7Tzs7USxPO21COzs7d0M7OztzQzs7cUM7O3FDOztPOztRLE87bUI7OztzQzs7d0M7OztzQzs7d0M7OztPOztRLE87b0I7OztPOztRLE87b0I7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0ksTztHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0k7SyxNO0ssUTtLLE87Szs7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7O0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTs7SSxpQjs7O0k7SyxNO0ssUTtLOzs7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1EsTzttQjs7O3dDOzs7O0ksTztHOzs7STs7TyxvQixPO087O08sb0I7Tzs7TyxtQixRO087O08sc0IsTztPOztPLHNCO087O08scUIsUTtPOzs7O0k7SyxNO0ssUTtLOzs7SyxPOzs7Ozs7O3FDOztPOzs7USxNOzs7O087OztRLE07bUI7Ozs7O1EsTTtPOztRLE07bUI7OzhDOztJLE87Rzs7STtLLE07SyxRO0s7OztPLE07O3dDOzs7Tzs7OztRLE07NkI7OztPOzs7Ozs7VztXLFc7O1csc0I7VTtRLE07bUI7OztPOzs7O1EsTTtRLE07NkI7Ozs7Ozs7Uzs7O1UsTTtVLE07Ozs7OztTLE07UTs7UyxNO21COzs7OztPOzs7USxNO21COztJLE87Rzs7STtLLE07SyxRO0s7OztPOzs7USxNO1EsTTs7OztzQzs7Tzs7OztRLE07MEI7OztPOzs7USxNO21COztJLE87Rzs7STs7SyxNO0ssTTtJLFc7Rzs7STtLLE07SyxRO0s7OztxQzs7Tzs7Ozs7O1EsTTt1Qjs7O087Ozs7OztRLE07O2tCOzs7Tzs7OztRLE07dUI7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7Ozs7OztROzs7O1MsTTsyQjs7O1E7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7O1E7OztTLE07b0I7OztROzs7UyxNO1MsTTs7Ozs7OztvQjs7O1E7Ozs7UyxNO29COzs7UTs7OzJCLE8sa0M7UyxTOzRCOzs7d0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7O0ssa0M7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7OzBCLE8sa0M7USxNO3dCOzs7Ozs7O3FDOzs7Ozt3Qzs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUM7Ozs7O087OztRLE07dUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7OztJLE87Rzs2QixTO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7a0I7O3FCLE87O007TTs7OztJLE87Rzs7cUIsTyx5QztJLDBCO0k7O087OztROztXOztROztXOztPLE87OztPLE87O087Ozs7UTs7TyxPOzs7TyxPOztHOzs7SSxPOzs7STs7OztLLE87SSxPOzs7O0ksVztJLFM7STtLLE87SyxPO0ssTztJLE87Rzs7STs7OztRLGdCO29CLFc7Ozs7USxXOztROzs7Uzs7Ozs7USxrQjs7UyxXOzs7Rzs7eUIscUI7SSxPO0c7OztJO29CO0ksb0IsUztJO0c7Ozs7Ozs7Ozs7VTtXLE87Vzt3Qjs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7OztTOzs7OztZOzthOzs7NEI7O1k7O1k7Ozs7Ozs7O1k7OzthOzs7Ozs7YSxVOzs7Ozs7Ozs7YTtjLFc7OztjLGM7OztZOzs7Ozs7Ozs7Ozs7Ozs7O3FCO2U7Ozs7Ozs7Ozs7O29CO2M7Ozs7Ozs7O2U7O2dCOzs7Z0I7OztnQjs7OztlOzs7Ozs7YTs7WTthOzs7YTs7O2E7Ozs7WTs7Ozs7Ozs7VSxHLGdDO1UsVztVOzs7VztZLE87WSxPO1ksTzttQjtVOztTLEksVzs7Ozs7OztZOzs7OztTO3NEO1M7O1U7Ozs7Ozs7Ozs7Ozt3Qjs7Uzs7O087O1EsTztRLE87UTs7MkI7TztRO1E7Tzs7O0s7TTtNO007Szs7OztJOztNOzs7OztPLFM7Tzs7Ozs7Ozs7O1E7O1MsVTs7aUI7Ozs7aUI7OztPOztRLFE7USxVOztnQjs7O007OztzQjtJOzs7O0k7O0ssNEM7O0ksYTtJO0c7O0k7SyxPO0ssVTs7Szs7O007O0s7SztJOzttQjs7Ozs7Ozs7O0s7Ozs7UTs7O007Tzs7O08sTTs7Ozs7Ozs7Szs7O2E7TTtLO0k7STtLLFU7Ozs7Ozs7OztLOzs7TTs7Ozs7OztPLEc7Ozs7O1k7Ozs7Ozs7Ozs7O0ssSSxVOzs7Ozs7Ozs7OztLOzt3Qjs7d0I7O3dCOzs7O0s7TTs7Ozs7STtLLE87Szs7Ozs7Ozs7Ozs7Szs7Ozs7OztrQjs7O007Ozs7Ozs7Ozs7OztpQixJOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztpQyxxQjtVLE87VTs7Ozs7O1M7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTs7O1U7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTtVLE87VTtZOzs7Ozs7O1M7VTtVO1k7Ozs7Ozs7Ozs7Uzs7Ozs7O1UsTztVLGU7VSxPO1M7Ozs7Ozs7O1M7UywwQjtTOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxZO3lCOzs7O1U7O1c7YTtXOzs7Ozs7Ozs7YSxNOzs7Z0MsdUI7c0I7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7OztTOzs7O1UsTztTOzs7Ozs7OztTO1UsVTtVOzs7Ozs7Ozs7Ozs7OztVOztXOzs7O1M7Ozs7UztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsVTtVLFc7OztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsUTtVLFM7O1U7VTtZOzs7Ozs7OztLLE07OztJO0s7O007Ozs7STs7OztJO0s7Ozs7Ozs7Ozs7Ozs7SyxPO0ssTzs7O0k7WTs7Ozs7OztJO0k7OztLO007O0k7Ozs7OztPOzs7Szs7Ozs7Ozs7O0s7Ozs7MEM7O0k7Rzs7STtJOzs7Ozs7OztLLHNCO0s7O0c7RztJO0k7O0k7SztLOzs7d0I7SSxPLFc7Rzs7STt1Qjs7STtHOzs7Ozs7Ozs7OztJOzs7O0s7aUIsTTs7Szs7O007TSxNO0s7O0k7SyxRO0ssUztLO0ksTTs7Rzs7OztJOztLOzs7Uzs7Ozs7Ozt5QztJLHdCO0ksTTtHO0csSTs7SSxZOztJO0c7O0k7O087O087O087OztRO1E7OztTOzs7VSxPO1UsTztTLE87OzswQjtPO2U7O0c7O0ksOEIseUI7O0c7O0k7STtLOztNOzs7TTs7TyxPOzs7Ozs7O2tCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxZO007bUI7Tzs7USxRO087Ozs7Tzs7USxRO1EsUTtPOztNLFk7TTs7Szs7STtLLFE7SyxNO0k7Rzs7O0k7SztNOztLO0k7STs7SyxTO0ssUztLO0s7SSxPOztHLEk7O0k7O087O087O087OztRO1E7cUMsWTs7OztTOzs7VSxNO1UsTTtTLEcsd0M7O2tCOztPO2U7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO007O087OztVO1csUTtXLFE7VSxPO1M7TyxRO08sUTtNOztzQjtLOztNLFE7TSxNO007TSxNO00sTTtLOztJO0c7O0k7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Szs7STs7SyxTO0ssVztLO0s7SSxPO0c7O0k7OztLOzs7SSxNO0c7O0k7NkM7O0ksTTtHOztJOzs7NkM7O0ksTTtHOztJOzt1Qjs7O0ssTTs7SSxNOztHOzs7STs7Ozs7TTs7O0s7TSxNOzs7Z0Q7O0ksTTtHOztJOztLLE07OztJO0c7O0k7dUI7O0ksTTs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztNOzs7Tzs7OztxQjs7O1EsTTtPOzs7USxtQjs7Ozs7O0ksTTtHOztJLFksTzs7Ozs7TyxPOzs7O08sTzs7Ozs7Ozs7O08sb0M7TyxPOzs7TyxzQztPLE87Ozs7O0k7SyxPO0k7OztJOzs7O1EsZ0M7USxPOzs7USxvQztRLE87OztJLE87OztJLFk7O2dCOztJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxRO21CO0c7O0ksOEI7OztPOztRO1Esc0I7O087Ozs7OEI7OzttQixlOzs7Ozs7OztPOzs7UTtRLHNCO1E7TzsrQjs7OztlLE07O0c7Ozs7bUI7OztNOzs7TztPLHNCO087TTs4Qjs7Ozs7SyxvQjs7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7STtJLE87Rzs7STs7O0ssTztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7OztTLGUsVTt1QixNOzs7O00sTTs7Ozs7NEIsTzs7OztHOztJO0ksTzs7YztHOzs7STtJOzs7SSxXO0ksTztHOztJLE87RztpQyxtQjs7STs7Ozs7Szs7STtHOztJO2dCOztJO0c7O0kscUMsTzs7SSxPOzs7STtnQixPOztJLCtDO0k7Ozs7SztJLE87Rzs7STtnQixPOztJO0c7O0k7Z0IsTzs7O0s7OztNO00sTztLLE87Ozs7OztNLE87O0k7Rzs7STs7Szs7TTs7TTtLLE87O1ksTztJO0ksaUQ7STs7OztLO0ksTztHOztJOzs7SyxxQixPLGdDOztZLE87STtJO0c7O0k7d0M7STtHOzs7Szs7O00sTztNLE07TTtNLE87SyxPOzs7Ozs7Ozs7d0I7STtLLE87SyxTLFc7SSxPO0c7OztLOztROzs7OztLO0k7STtHOztJO0ssSSxTO0s7Ozs7O2M7Ozs7Ozs7Szs7bUI7O21COzs7SztJOztLO0s7Ozs7Ozs7OztROzs7O1M7Ozs7UTs7OztTOzs7SztJO0ksTztHOztJO0ksTztHOztJO0ssTztJLE87Rzs7SSwrQzt5QixtRDtJO0ssTzs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7Ozs7d0IsTyw0QztNLE87SzthOzs7OztpQjs7O007O087K0IseUM7TSxPOztLOztNOzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7SSxXOzBCLE8sc0I7SSxXO0ksTztHOztJOztPOztRO1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7UTs7UTtVOzs7Ozs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7USxPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Tzs7Ozs7USxLO1EsSztRO1EsTztPLE87Ozs7Ozs7Ozs7O0c7O0k7SyxROzs7O0k7Szs7SSx3QixPO0ksTzs7Rzs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7SyxPOztLLE87SSxPOzs7O0k7Rzs7STtLLE87O0ksVztHOzs7STs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7SztLO0k7SyxPOzs7O0k7O0c7OztJOztPLHFCO21COztPLFc7OztPOzs7OztROzs7TztRLE87Ozs7Tzs7O087O1EsVTtPOzs7TztRLE87Ozs7Tzs7Ozs7STs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87Ozs7Szs7O007TTtPLE87TyxPO087TSxPOzs7TSxNOztLOzs7UTs7UTs7Uzs7Ozs7Yzs7O2UsTzs7ZSxPO2MsTzs7OztTO1M7Ozs7O1ksTTtXLHNCO1c7Ozs7MEM7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7O1ksZTtXOzs7Ozs7OztXOzs7Ozs7Ozs7O1E7OztJO0ksTztHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO1Esc0I7TyxPOztHOztJOztPLHNCO08sTzs7NkI7O08sZ0M7Ozs7OztVOztXOzBCOzs7OzBDOztPO08sTzs7O2dEO087O1E7UTtRO1Esc0I7TyxPOztHOzs7STs7Szs7UTs7UyxROzs7Ozs7Ozs7Ozs7Vzs7WTtZO1k7Ozs7cUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTO29COzs7USxtQjs7UyxNOzs7b0I7O0ssYTtrQixzQjs7NEIsTyxzQjtNLE87SztLO0k7SSxPOzs7O0s7TTs7TztPLFc7TSxXOztxQzs7Ozs7Ozs7TTtPLGM7O08sTztNOzs7NkI7TTs7Ozs7O1UsaUI7VSxPOzs7O1MsdUM7Ozs7a0I7UztVO1Usc0I7VTtVLE87UyxPOzs7O007TyxlOztPO007TTtPO087TztPLE07TSxPOzs7Ozs7OztLO0ssVztJO0ksTztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztRLE07Tzs7OztLO0ssRztNLE07SyxPO0k7STtLLE07SyxPOztLOzs7TTs7O00sTztNOztTOzs7Ozs7OztLLE87Ozs7O0k7SSxnQjs7RztJO0k7STtJOztJO0k7OztHOztJO0ksVztHOzs7STs7Ozs7SSxROztJLEc7SyxJLEk7Ozs7Ozs7Ozs7SyxTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxXO0s7Ozs7O0ssZTtLLE07O0c7O0k7SyxPO0sscUI7O0c7OztLLG1COztNO007OztNLE07O0s7O08sZ0I7TyxNOztNO00sTTs7Ozs7TTs7TztNOztJO0ksTztHOztJOztJO0c7O3dCLHVDO0ksTztHOzt5QixrQixPLHlCO0ksVzs7Szs7O00sSTtNLFE7OztTO087Tzs7O0ssTTtJO0ksTyxXO0c7O0k7O0ssWTs7O00sTzs7SyxNO0k7SSxXO0k7Rzs7eUIsMEM7SSxPO0c7Ozs7SztJO0k7Ozs7OztPLE07OztLOzs7Ozs7USxnQjtRLE07O087UTtTLE87UyxPOzs7Ozs7UTtTO1UsTztVLE87Ozs7Ozs7Ozs7VTs7Ozs7O087O087Ozs7UTtRO1E7UTtVO2E7O1EsTztPOzs7TyxPO1EsTTtPO1Esc0I7USxPOzhCLGU7USxXO1EsTztPOztPOzs7USxVOzs7OztROzs7OztrQyxTO21COzs7Ozs7TztVO1EsVztRLE07OztPO1Esc0I7USxPO1EsUztROzs7OztnQjs7OztPO1EsTzs7O1c7VztZLFc7WTs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxPO1EsUztPOztPOzs7USxZOzs7VztZLFc7WSxLO2EsSTs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7Ozs7Ozs7O1k7YTs7YztjLFE7Ozs7OzthO2MsSTtjLFU7Ozs7OztrQixNOzs7OztpQixxQixVOzs7Ozs7O2tCLEc7bUIsTTs7O2tCO21CLGM7Ozs7OztvQixNOzs7bUI7Ozs7OzthLE07OztZOzs7OztnQjtzQztlO2E7ZTthO1k7OztXOztRLGdCO1E7a0MsMEI7USxXO1E7OzthOzs7VztXLE87VTtRLFE7TyxtQzs7Ozs7UTtTLFU7Ozs7Ozs7Uzs7d0IsTTtVLHVCLFU7Ozs7YTs7YyxTOzs7Ozs7Ozs7UyxHO1U7O1U7Ozs7O1EsTTs7Ozs7UTs7OzsyQzs7Ozs7OzJCOzsrQjs7UztVLFU7OztTOzs7Ozs7UztTLE07Ozs7VTtRLFc7USxNOzs7TztRLHNCO1EsUztRLFc7USxPOzs7VztXLEksVyx3Qzs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxVO1EsTztRLE87USxVOzs7OztxQzs7Ozs7Vzs7WSxPOzs7ZTs7O2dCLFE7Ozs7MkM7Ozs7O2U7YztZLFc7WTtZO2M7O21COzs7O1E7O08sTTs7O087O1M7VSxPOzs7Ozs7UztVLE87Z0I7O1E7USxJOzs7OztTLHNCLFE7UyxNOzs7Ozs7OzsyQjtROztTOztRO1EsSTs7OztTLGtCLFE7UyxNOzs7O1M7Uzs7UTtTLE07UyxLO1MsVTs7Ozs7O2E7Ozs7OzthOzs7Ozs7O087O087Ozs7UTtROztXO1k7WTtrQjtXLE87VTtRLFU7OztXLFE7VztZO2EsUTs7O1ksRzthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7O1csdUIsMEI7Ozs7YTs7YztjO2MsVTs7Ozs7Ozs7Ozs7O2E7MkI7O2E7YyxPO2MsVTs7Ozs7O2tCLE07Ozs7OztpQixHO2tCO21CLEs7OztzQjs7O3VCOzt3QixLO3lCLFk7O29EOzs7eUIsTTs7Ozs7O3NCO3FCO2tCOzs7Ozs7YSxNOzs7OztZOzs7Z0Isb0I7Z0IsTztlO2EsSzs7O2E7O2MsSztlO3FDLGM7Z0IsUTtvQjs7Ozs7eUI7OztjLE07OztrQzs7c0I7O1k7OztXO1U7USxVO1E7cUMsaUI7USxPO1EsVztPOzs7OztZLGU7O2EsTTs7WTtXO1E7O087Ozs7VyxPOztVO1E7UTtVO2E7O1E7USxPO087O087OzsyQixZO1EsUztPO08sSSx5QztvQjtPLEksd0M7O087TztPO1E7MkIsTyxnQztRLFk7USxRO1E7TztPOztPOzs7O1E7OztRO1EsUTtPO087OztXO1c7VTtRLE87USxTOzs7VztXO1U7USxvQjtRLFE7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7OztTLHdCLFE7OztVLGM7O1M7UTtNLFc7TTs7UztLO0ssTzs7SSxPO0c7O0k7SSxPO0c7O0c7STs7O0ksSSxZOztLOzs7TTtNLE87SyxJLG1DLEk7aUI7Z0I7Szs7OztvQjs7Ozs7Ozs7eUI7TTtPLE07d0M7O007OztPOzs7STtJOztJO0s7O007TSxJLFcsb0M7Ozs7O08sTTs7SztLLE8sd0M7Rzs7STs7O0ksMEI7STtJO0k7Rzs7STs7O0k7SSxJLGlDOzs7SztNLE87TTs7OzthOzs7O0k7STtJO0k7STs7O0ssWTs7O1M7TztPOzs7SztJO0ksWTtJO0k7Ozs7SyxPO0ssTztJO0c7O0k7O0k7STtJO0k7STtJO0ksZ0I7Rzs7STs7OztLO0s7eUIsWTtNLFM7TTtNO0s7SztLO0s7O0k7STtJO0k7STtHOztJO0ssTzs7O087O1E7O1csTzs7eUI7VTtRO1U7OEIsTyxrQztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOztRLG9CLE8seUM7NEIsTyx5QztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7eUIsTzs7O08sTzs7Ozs7OztXO1c7WSxNOztZLE87VyxPOzs7Ozs7Ozs7O1U7TyxPOzs7TztPLFk7Ozs7Uzs7VTs0QixXLHFDO1MsTzs7O087OztPLE87Ozs7Ozs7OztPLE87OztPO08sRztRO2U7UTs7UTtPLE87OztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOzs7Ozs7VyxZLE87O1csTztVO08sTzs7O08sTzs7OztJO0s7Ozs7TSx5QjtLLFc7O21DOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7cUIsTzs7dUIsTzs7cUIsTzs7cUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJOztLOzs7TTs7SztNLE87Szs7USxPOztRLE87O1EsTzs7Ozs7SyxPOzs7TyxvQixPO08sTzs7O08sTzs7O08sb0I7TyxPOztPOztRLDRCO08sTzs7Ozs7O1EsTzs7O087Ozs7UTs7Ozs7UyxPOzs7Ozs7Ozs7OztRO3FDO1EsTzs7OztROzRCLG1DO1MsTztTLDRCO1MsTztRLE87OztPO29DO08sTzs7O3FCLE87O08sTzs7Tzs7OzBCLCtDO1EsZTtPLG1CLE87Ozs7OztXLGU7O3FCOztVO08sTzs7Ozs7Ozs7Tzs7USw0QjtPLE87OztPLE87OztPLE87OztPLE87ZSxPOztHOztJOzs7Ozs7O087USxPOzs7O0k7Rzs7STs7Ozs7OztPO1EsTzs7Ozs7STtHOztJOzs7Ozs7Ozs7O0ssTzs7STtHOztJOzs7SyxPOzs7STtHOztJLFk7O21COztJLHVCO0ksTzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7SSxVO0ksTztHOzs7SztLO0ssTztJO0ksTztHOztJOztLO0ssTztJO0k7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7O3NCLGlEOzt3QixhO0ksTztHOztJO0ssTTs7STtHOzs7SSxXOztHO0k7STtJO0k7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtJOzs7OztPOztPLHdCOzs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7OEIsb0IsVztRLE87OEIsb0IsVztRLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxNO1csUTttRjtVLE07Uzs7Ozs7Ozs7Ozs7STtHOztJOzs7O3lCOztPOzt5QixPOzsrQjtpQzs7Rzs7c0IseUM7STs7Ozs7O1E7O1M7Ozs7Ozs7O1E7Ozs7WTtZO1c7UyxNOzs7O1E7Ozs7Uzs7Ozs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7Rzs7Ozs7O0ksTTtJLHlCOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7O1M7Z0Q7UztRO00sWTs7Ozs0Qjs7O0ksb0I7SSxPO0c7O3lCLHdCLFk7SSxPO0c7O0ksVztpQjtHOztJOzs7Szs7STtHOztJOzs7OztRLE87Ozs7OztRLGUsTztRLE8sMkI7Ozs7SSxPO0c7O0k7STs7Ozs7O1E7UztTOzs7OztRO1M7Uzs7Ozs7UTtTO1M7Ozs7Ozs7TztRO1E7Ozs7Ozs7O08sVztPLFc7O007OztPO087Ozs7OztHOzs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0IsTztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7OztrQixPO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7O0s7OztPLGtCLE87O087OzttQjtLO0k7MEI7O0s7Szs7O1E7Ozs7O1M7USxXOzs7OztzQjtNOztJO0k7OzBCLDJDO0c7Ozs7STs7STtXOztjO0c7O0k7SztLLE87SyxRO3lFO0ksTTtHOztJOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07Uzs7O1k7WTthOzs7aUI7O2dCO2MsTTs7Ozs7Ozs7WTtXO1EsTzs7STtHOztJLFksa0M7Ozs7Ozs7a0I7TSw0Qzs7Ozs7OztVOztXOzs7K0IsK0I7YyxPO2E7VyxTO1c7Ozs7OztrQjs7TTs7O0k7Rzs7SSxTO1ksTztJOzs7O0s7OztJO0c7O0k7Ozs7UTs7Uzs7O1E7O1E7Ozs7Uzs7O1E7Ozs7O1UsTTs7Ozs7UTs7UTs7O1M7Ozs7Ozs7WTtZOztzQjs7WTtXO1E7OzttQjs7Ozs7O1E7O1M7OztROztnQixPOztROztnQixPOztJO0c7MkIsNEI7eUMsNEI7OztLO0s7TTtPLE87TyxPOztPOzs7O1E7Ozs7O00sTzs7ZTs7Ozs7O0k7STtHOztJLFk7OztLLE07O0ksOEIsMEI7STtHOzs7SztLO29COzs7Ozs7OztNO087TztlOzs7Ozs7STtJO0c7OztLLFU7SztJOztLLFk7O0s7Ozs7OztNO007SztLLE87STs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtPLFk7TztTOzs7VTtVLGtCO1M7TyxVLFc7TTs7Szs7Ozs7OztNO0s7TTtPOzs7OztLO007Ozs7RztHOztJLG1CO0ksdUM7O0s7TSxNOztvQixXOztLO0k7O2dCLFc7O0k7RztHLG1COztJLFU7SSx1Qjs7Ozs7Ozt1RDs7UyxPOzs7eUI7OztTOzs7O2Esa0I7aUY7YSxNO1k7VSxTO1UsTTtTLGdCO1U7VyxPOzs7Yzs7O2UsUTs7OztlLE87O2M7YTtVLE87O1MsVztTLFc7UztVLE87OzthOzs7MkI7a0M7WTtTLE87Ozs7TTs7O00sTTs7STtHOztJOzs7Ozs7SyxPO0k7Z0I7Ozs7OztHOztJO0ssTTs7bUI7SSxtQjtJO0c7O0ksWTs7O0s7TTtPLFU7TyxVOzs7OztRO1M7O3lDOzttQjs7O007Ozs7O08sTzs7OztJLE87Rzs7STtHOzs7STs7SztLLGlCOztLLFc7STtJLGE7eUIsOEI7STtLLFE7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7OztTOzJFO1MsTztRO00sZTtNO00sUztLLGdCLE07SywwQjtLLGtCOztJO0c7O3lCLGtCLE8sdUI7SSxJLE07STtLLEs7O00sZ0I7O0ssSSxNOztHOztJO0k7Ozs7Ozs7Ozs7Ozs7VSxvQjs7Ozs7OztrQyxrQixTO1UscUI7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTs7OztXLGtDO3NCO1c7Vyx3QjtVO08sTzs7Ozs7OztPOzs7O1E7TyxTO08sSTs7Ozs7USxvQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTs7Ozs7O0c7O0ksVTthO0k7OztLLE87SyxPOztLO0ssd0M7SztNOzs7UzsyQixrQjtTLE87UTtNOzs7Ozs7Ozs7VTtVLHFCO1U7VztXOzBDO1csTTtVLG9CO1UsTztTO1MsVztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksb0I7SSxPO0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNO087O1U7Ozs7WTs7O1U7UztPOzs7O007Ozs7TztNLFM7TSxJOzs7TTtPO08sVTs7O087TyxPO087Ozs7Rzs7STtLLFc7SyxPOzs7ZTtlO0k7OztLLE87O0s7TTs7Tzs0QixxQjtNLE87O0s7O00sVztNLE87SztLLE87STtJLE8sVztHOztJO0ksd0M7STtLO0s7OztLOztrQyx1QjtNLE87TSxPO00sTzs7O1M7Ozs7O1UsdUI7VTtXO1c7NEI7VyxNO1csc0I7VSxPOztTOzs7O1c7WSxNO1csdUI7OzthLE07Ozs7O1k7YTtvQjs7Ozs7OztVLFc7O1M7Uzs7O1csdUI7Ozs7OztnQjtpQjs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7O2tCO3lDO21CO3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7O2tCOzs7c0Isa0I7Ozs0RDs7c0IsTTs7cUI7bUIsWTttQixPOzs7Ozs7Ozt5QztrQjs7Ozs7OztvQjs7cUI7O3VCLE07c0IsUztzQixLO3VCLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO3lDO21COzs7c0I7c0I7a0M7cUI7Ozs7d0I7Ozs7MEIsTzs7O3dCLE07O3VCOzs7Ozs7OztrQjtzQyxjO21COztpQyxlLDRCOzs7O3dCOzs7OzBCLE87Ozt3QixNOzt1Qjs7Ozs7Ozs7Ozs7c0MsbUI7Ozs7d0I7OzhEOzt3QixNOzt1Qjs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7ZTs7Ozs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsTzs7O21CO21CO2tCO2dCLE07Z0IsTztnQjs7O21CO21CLEcsd0M7bUIsWTtpRDs7O29COzs7bUI7a0I7Z0IsVTs7Ozs7OztvQjttQjt1Qjs7O2UsRzs7OztnQjtpQixLO2lCO2tCLFE7Ozs7Ozs7ZTs7O21CLGtCO3VGO21CLE07O2tCO2dCLGM7O2U7Z0IsSzs7OztxQzs7O2dCLEk7Ozs7Ozs7Ozs7OzZCLE87Ozs2QixzQjtTLE87UTtLLE8sVzs7STtLO0ssTzt1QixzQjtJLE87Rzs7STs7SywwQztLLE07STtJLE8sVztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VyxZO1c7OztZO1k7WTtXO1U7Ozs7TTtPOztPO087OztRO1MsTzs7Ozs7O1EseUM7OztTLDJCLE07O2M7VTtXLFE7Ozs7OztXOzs7Yzs7OztlLFE7Ozs7MEI7YzthO1csVTs7O1c7Vzs7Vzs7eUIsMEI7WSxXO1ksTztXOzs7Ozs7OztPOzs7Ozs7Ozt5QixxQjs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7Rzs7SSxPO0c7O0ksWTtJLHFDOztLLE07O0k7SztJO0k7O0c7MkIsd0M7OztLLFk7Szs7O007O00sTztLLGU7OztHOztJO0k7Ozs7TztPO2lCOzs7O00sSSxVOztPLFc7O1EsTTtPOzs7MkIsaUI7USxJOzhCLGlCO1EsTztlOzs7OzsrQixTO2U7Ozs7VSxpQzs7Ozs7Vzs7Ozs7Ozs7O1ksTTs7Vzs7O1k7WTtZO1k7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7Ozs7MEI7Ozs7Ozs7OztjLFc7O3lCOzs7WTs7Vzs7VSxNO1M7TSxPOztLOzs7TSxPO00sTzs7Ozs7VTs7VyxNO1U7O1csTztXLE87MkQ7VTtTO00sRztPO1E7USxNOzs7O087UTtROzs7Ozs7Ozs7UTtTO1M7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7aUIsTztnQixXOzs7Ozs7Ozs7Ozs7O2UsTzs7OztVOzs7Ozs7OztjOztlOzs7Yzs7Ozs7Ozs7OztjOztlLE87ZSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0c7O0k7STs7TTs7Ozs7TztNLFc7Ozs7Szs7Rzs7Ozs7b0I7Ozs7O3FCLG9CLE8sc0I7TSxHOzs7TyxJOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsSztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEcsNkI7Ozs7Ozs7Ozs7Ozs7OztnQjs7OztvQixTOzZCOzs7Ozs7Ozs7Ozs7O3FCOztxQjtvQjtvQjttQjtpQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0IscUIsTzttQjtnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0Isb0I7Z0I7Ozs7Ozs7OztROzs7Ozs7UTtTLE87O1E7O087Ozs7TztRLE87O087OztLLE07O0c7O0k7SztLO007Ozs7OztPOzs7Ozs7OztLOzs7OztLLGtCLE87O0s7O0c7c0I7O0k7Szs7Ozs7TTtLOztJO0c7O3FCLDZCO0ksZ0I7STtHOztJO0ssWTs7SztJOztLOzs7TSxROzs7TTtLO0k7STtLLFE7OztJO0k7Rzs7STtJO21COzs7O007Ozs7Rzs7STtJO21COzs7O007Ozs7Rzt3QixPLHlDO0c7O0k7O0k7SyxPO0ssTztJLE87Rzs7STtLLFU7SyxTOztLO0s7Ozs7Ozs7Vzs7Ozs7NEIsaUI7OztVLGlCOztVOzs7O1c7VztVO1UsWTs7Ozs7Ozs7OztVOztVOzs7VyxRO1U7O1U7Ozs7YyxrQztjO2M7YyxXO2E7VyxTO1U7OztVLGlCOzs4Qjs7VSxrQztVOztNOztJO0k7STtHOztJO0ssSztLLFE7Ozs7Ozs7Ozs7O21CLG1COzs7Ozs7O1MsSSxVOzs7Ozs7Ozs7O1c7Ozs7ZSxXO2M7WSxTOzs7OztVLE87bUMsYTtXLEs7O1U7VztXLHNCO2tCOzs7Ozs7OztlOztpRDs7SztNOzs7O0s7O0k7Szs7OztJO0c7O0ksWTs7SSxPOzs7STtJOzs7Ozs7Ozs7Ozs7VTs7VztXLE87VTs7O1csVztXOzs7WTthLE87YSxlOztVO1UsTzs7Ozs7Ozs7O2M7YzthO1UsTzs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7SSxXO0k7Ozs7eUIsNkI7YTtJLFc7OztpQjtLOzs7Ozs7TTtLO007TyxPO087O1c7Ozs7O29CLFc7TztPOzRCOzs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTOzs7YSwwQzthLE07WTtVLFE7VTtVOzs7O1U7OztVO2Msa0U7Ozs7Ozs7O2dCOzs7Ozs0QixPLGtDO1E7Ozs7Ozs7O00sTTs7O00sSTs7OztHOzZCLDBCOztJLGM7STtLO0s7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7O2U7O2M7VyxPOztXLG9DO1csVzs7Ozs7Vzs7OytCLGU7USxPOzs7OztNOztJO0k7Rzs7SSxJLDZCOztLOztNLHlCO007O1M7VTs7OztTLE87O00sbUIsVztNLFE7OztNLEc7TztRO1MsTTtTLE07UTtRO1M7Ozs7WTs7OzthOztZO1c7USxHO1M7USxJLE87OztPOzs7Ozs7OztLLFk7TTs7Ozs7bUI7STtLOzs0Qix1QztNLE87Ozs7OztVOztzQzthLDBCO1UsZTtVLE87UztNOzs7STtHOztJLFk7Ozs7O007Ozs7O087Ozs7VTtVO1csVzs7OzthOzs7O2M7Ozs7OzthOzs7YztnQjs7Ozs7O2E7Ozs7YztnQjs7Ozs7O1c7WTtZO2M7OztXOztTO007Ozs7OztNOzs7O08sZ0MsK0I7TTs7OztJLE07Rzs7STs7O00sVzs7Ozs7O0k7Rzs7SSxpQjs7Ozs7SztNLG1EOzs7Uzs7O1UsTTs7O1MsWSxNO1MsTTtRO0s7TSxtQjs7OztzQzs7O0ssUTs7Ozs7NEI7OytCO0s7YTs7O0ksNEIsOEI7SSxHLHNEO0k7SSxvQztJO0s7O00sZTs7O0ssVzs7STtLO0s7Ozt3QjtJO0ssYztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjs7VTs7OztZOzthLE87OztnQixTOztlO1k7OztXOzs7O1csTztVO1UsVztVLFc7Ozs7Ozs7Ozs7O2EsSztjLE07OztjLEs7d0I7Ozs7YTs7OztVLE07UztTOztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxPO1UsTztVLE07Z0I7VTtXO2lDLHNCO1c7Z0M7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7SztLLE87STtJLEksUTtJO0s7OztTO1MsZTtRO00sWTs7O1M7O1UsTztTO1MsTztRO00sVTtNLE07OztVO1c7Ozs7WSxXO1csTyx3Qzs7O00sWTtLLEc7Ozs7VTtVLE87UztNO007Ozs7Rzs7d0IsUztJLFU7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7OztJLEksVywwQzs7Ozs7O0c7OztLO0ssRyx3QztLLGE7a0I7Syw0QjtLLFk7Ozs7Uzs7O1UsSTs7O1U7O1k7aUI7bUI7O1M7Uzs7O1MsTzs7O1MsZTtTO1U7VyxPO1csb0IsTyxxQztXOzs7NkIsTyxnQztjLEksaUI7Yzs7O2U7Z0I7Z0I7Z0I7YyxXO2M7ZSxLO2UsTztlLEs7ZSxPO2UsTztlLE87ZSxPO2UsTztlLE87ZSxPO2UsSztlO2M7ZSxJLGM7OztjOzs7ZTtnQjtnQjtnQjtjLFM7YzthO1csTztVOzs7OztVOztXLHNCO1UsTzs7OzhCOzs7UztTOztTLE07O1M7O1UsTzs7O2Esa0IsUTs7O2U7Ozs7aUMsTyxrQztnQixRO2dCLEk7Z0Isc0I7ZSxPOzs7K0M7O2E7WTtTO1Msb0I7OzhCOzs7OztVOztZO2lCOzs7Ozs7YTthO1k7UyxPOztLO0k7STtHOztJO0ssTztLLE87SyxPO0ksTztHO0csZ0I7Ozs7Ozs7Szs7OztNO29CO0s7STtJO0ssYTtLO0s7O0s7Ozs7SztJO0k7Ozs7O1MsSztVO1UsSztXO1k7OztlO2U7Z0IsRyw0Qzs2QjtnQjtnQixHLG9DO2dCLFk7Ozs7b0IsTTs7O29CO3FCLFc7cUI7Ozs7Ozs7cUIsVztxQixHO3NCLE07Ozs7O2dCLE87O2M7VztZO1k7WTs7OzttQzs7Ozs7UztRO0s7OztLO007OztTO1M7UztVO1UsUTs7O1UsSztVLE87Uzs7Ozs7Ozs7O1UsTTs7Ozs7OztRO0s7SztNLE87TSxNOzs7UyxXO1MsVztRO00sUTtLO007Tzs7O1U7VSxHLDJCOzs7OztnQjtVO1M7TTtNO087OztVLEcsMEM7VSxnQjs7VTtXO1csTztXOzs7VyxPO3FCOztVO1UsUztVO1U7VyxROzs7VyxVOzs7O1c7OztVLFc7VSxLO1csTzs7Ozs7Ozs7VSxNOzs7Uzs4QixtQixtQjtNOzs7O0s7Ozs7TTtNOzs7O00sZTs7O0s7O007TSxNOzs7TTtRLHFDO00sRzs7Ozs7OzthO2M7Ozs7bUM7SyxXO0ssTztJO0ksTzs7b0Isa0I7RyxnQjs7SSxxQyxPOzs7SztLO0k7SSxPO0c7Ozs7Ozs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdDLFE7O0s7O00sTTtNLE07TTs7O1M7UztVLE07UyxpQzs7VTtXLE87VyxROzs7O1k7YSxNO2EsTTttQjs7Ozs7Ozs7O1MsUSxNO1M7UTtLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs7Ozs7Ozs7Ozs7VTs7Ozs7OztTO00sTzs7Ozs7STs7Szs7Szs7OztTO1M7UTtNLE07SztzQzs7O29CLDBCO0ksRztLO3dCLHdCO00sTTtNLE07SztzQzs7d0IsbUIsK0I7SSxXO29CLHVCO0k7SyxNO0ssUTtJO0s7O0ksYzs7SyxNO0k7OztLLE07SyxPOztLLEcsbUM7O0s7STtJLE87OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtHOztJO0ssVTtLOztlO0c7RztJLE87RztHO0k7d0Isb0I7SSxPO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7OztHO0c7Ozs7Ozs7Ozs7O0k7OztzQjtJLFU7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7O0s7Ozs7OztLOzs7STtJO0ssUTs7O0s7Tzs7Szs7Ozs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sYzs7Ozs7O087UTtRLE87Ozs7O007O0s7O0c7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsTyxpQztPLE87O00sYztvQjs7TSxPOzs7OztNLE87OztJO0c7O0csZ0MsZ0I7Ryx5QixTO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHO0k7SyxrQjtLLFE7dUI7O0ksTTtHO0c7O0ksTztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7OzRCLDhDOzsrQixXLDhCO0csSSxTOztJO0k7SyxZO21DO3dCO0s7OztNOzs7O0c7O0ksVzs7SyxZOzs7TSxpQjs7SyxNO0k7SSxPLFc7RztHOztJOztJOztJO0c7OztLLEksbUI7SyxXO0k7SSxPO0c7Ozs7Ozs7STs7O0ksSSxVLG1DOzs7Ozs7Rzs7O0s7SztNLEksNkIsVTs7Tzs7USxNO3FCOzs7TTs7Ozs7OztXO1csTztVOzs7O00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7WTthOzs7aUIsbUIsUTs7OzttQixPOzs7bUQ7O2lCOztjLE07YyxRO2MsUTtjLFU7Ozs7Ozs7Ozs7O3VDOzs7OztZLE07Ozs7Ozs7O1csTztVO08sTzs7OztJO0k7Rzs7STt3QixTO0ksTztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssb0I7SyxPOzs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7O1UsdUIsVTs7VSxNOzs7Ozs7Ozs7Ozs7dUI7a0I7OEMsUztLLE87OztLLDhCOzs7SSw4Qjs7Rzs7SSxlO0ksSSxnQzs7OzBCOzs7Rzs7STtLLE07SyxNOztHO0csa0MsZ0I7Ryx5Qix1QjtHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RyxxQyxTO0c7O0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLE8sMEM7SSxPO0c7O0k7a0I7Ozs7OztNOzs7Ozs7Ozs7Ozs7OztROztPOzs7Ozs7OztHOztJOztLLE07STs7SyxLO0ssVTs7Ozs7USxxQixJO2U7UyxNOzs7O1E7O1MsVTs7Ozs7UyxXO1E7USxHO1MsTTs7Ozs7SyxPOztJLE07Rzs7OztLLEksZSx3Qzs7OztPLE07Ozs7SSxPO0c7O0k7SyxNO0k7O0s7SyxHO00sTTtxQjs7STtJOzs7Ozs7Ozs7TTtPLFE7TyxNO00sVztLO0ssTzs7SSxhOztLLG1CLFE7Ozs7OztLLEksTyx5QixPO0s7STtJLGE7STtHOztJO0s7O00sTztNLE07TTt5QixZO0ssZTs7STs7Szs7O0k7Ozs7STtLO007OztLOztJLGdDLEk7STs7SztLO007eUIsWTtNLE87O29COzs7O0k7Szs7O0ssWTtLO0ssVTs7O0ssRzs7O087TztPO087Tzs7O1csVztXLE87VTtPO087O007TTs7O0k7SyxPO0ssWTtLLGdCO0ksTTtHOzs7STtJO0k7eUIsb0IsYztJLEksUyw0Qzs7Szs7OztNLE87SyxXO0k7STtLLFE7SyxVO0ssUTtJOztNLE07Ozs7Ozs7Szs7O1MsTTtRO007OztPOztPOzs7TTs7O1E7Ozs7OztzQjs7O1U7Ozs7Ozs7VzsyQjs7O1U7Ozs7O087Ozs7TTs7O1E7d0I7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO08sb0I7TyxVOzs7Ozs7Ozs7Ozs7OzRCLDZCO1E7O007O0s7TTs7O1M7UyxHO1UsTTs7MEI7O1E7SztLO007MEIsTyxrQztNLE87ZTtNLE07SztNOzs7VTtXLE87Vzs7Ozs7OztXOzs7Ozs7Ozs7VyxPO1csTztXO1U7UztTLE87UTtNO00sTztNLFU7Ozs7Ozs7Szs7TTs7O0s7OztNOzs7VSxpQixRO3NCO1UsbUIsVTs7O1csTzs7VTtTO08sUTtLO007TTs7Ozs7O0s7O007TSxNOzs7OztJO0ssUTs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7TTtNO0ssSSxXLHNDOzs7OztNLE07O0k7STtJO0k7SztNO08sTztPLFc7TyxVOzs7OztPLE07Ozs7Szs7STs7Ozs7Ozs7Ozs7OztJO0k7O2dCOztJLE87Rzs7STtJO0ssRyw0QztrQjtLLFk7Ozs7O1MsSSxXOzs7O1csTTs7O1M7VSxPO1UsTztTLEk7Ozs7O1UsTTs7O1M7OzthOztTLE87Ozs7O2lCOzs7O0s7O3VCO0ssTzs7Rzs7O0s7OztNLFM7Ozs7TyxNOztNLEc7Tzs7O0k7SSxPO0c7Ozs7Ozs7O00sbUIsVTs7O087UTtTLFM7UyxPOztXOzs7UyxJOzs7Ozs7O1M7VSxPO1UsTztVLE87O1k7Ozs7O1MsTTs7Ozs7OztTLE07Ozs7TSxNOzs7STs7O0k7O0ssRztNLFk7Ozs7aUM7Ozs7OztPLE07bUM7TSxNO2tDOzs7TSxXO00sRzs7O087USxPO1E7Ozs7Ozs7OztjO0ssYzs7Ozs7O1U7O1c7eUI7Ozs7Ozs7OztLLGdCO0s7O007O2dDO08sc0I7TTtNLEk7Ozs7Ozs7SyxjOzs7O00sc0I7TSxHO2lDO087OztPOztRLHNCO087O007TztRLE87USxRO1Esb0I7Tzs7Ozs7aUM7TyxPOzs7eUI7SyxPO0k7SSxXO0k7Szs7TSxzQjtNLE87Szs7Ozs4QixPOzs7Rzs7SSxJOztLO007STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SSxPO0c7O0ksa0I7STs7SztLO00sZTtpQjttQjtNLFk7Ozs7O1UsRztrQjtZLFc7WSxNOzs7O3FDOzs7OztXO1ksTztZO3lCOztZO2E7YyxVOzs7YyxVOzs7YTtjLFc7Yzs7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1U7OztjOzs7VSxPOzs7OztrQjs7OztNOzs7VTs7TSxPOztJOzs7SztNLFE7Ozs7O0ssb0I7SztLO0k7SSxPO0c7O0k7Ozs7O007TztRLE87USxPO1EsTztPLEssaUM7TztRO1EsTztRLE87TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLEc7TSxPOzs7STtHOzs7SztLO0k7SSxPO0c7O0k7SSxrQjs7Szs7TTtNLE87TSxhO007TTtLOzs7Ozs7Ozs7STtJO0ssTztLLGU7SyxROztLLEksTyx5QixPO0ssVztJO0ksZTtJO0k7O0s7Ozs7Ozs7Ozs7Vzs7WSxNOztVO087OztNO08sTztnQjs7SyxZO0ssYTtLOzs7O00sTztNLE87Ozs7NEI7Ozs7MEIsTywyQjtLOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Szs7STtLO087SztLLGM7Ozs7TTtPO08sSzs7O1U7Ozs7OztVLFc7VTtVLE87UztNO007O0s7Ozs7OztNO0s7SyxPOztJO0ssTztLO087eUIsK0I7SSxZOztJO0ssUztLLFU7O0s7Ozs7Ozs7VTtXO1ksTztZO2M7Ozs7Vzs7Ozs7WSxPOzs7O1M7TSxPOzs7O007TTtPO1EsTztRO1U7O087Ozs7O1EsTzs7O0s7SyxPO0k7STtJO0k7Ozs7Uzs7VTtVO1UsTztVO3FCO1MsbUI7OEIsTyw0QjtTLGE7UztVO1csTztXLE87VTs7Ozs7O1UsTTs7O1E7Szs7STt5QixxQiw2QjtJO2dDLG1CLHlCO0k7bUI7O0s7OztNO00sTTt1Qjs7MEIsTyw0QjtLO00sTztNLE87SztrQztJO0k7O0ssbUI7O0ssTztJOztLO0s7O2M7Ozs7STtJO0k7SyxxQjtLOzs7Yzs7Ozs7STs7SyxxQixRO2lCOztLLE07STtJO0k7Szs7TTtNOzs7TTtNO0s7Szs7Ozs7O1Esa0I7OztTOzs7USxNOztPLG9COztROztTOztZLE87VztTO1c7OztZO1k7YTtjLE87YyxROzs7OztjLE07Ozs7OzthOzs7Ozs7O21CO2tCO2U7Ozs7Ozs7O2U7Ozs7YSxNOzs7O2E7O1k7VztROzs7TyxNOzs7OzttQjtLLHFCOztNLE07O0s7O0k7STtLOzs7UztTO1E7TSxPO007UTtVO00sTyxXO007USxXOzs7Ozs7TSxNOzs7O00sTTs7Ozs7SyxNOztJO0k7O0s7O0k7O0s7Szs7Ozs7Ozs7Ozs7STtJLGtCO0k7Rzs7SSxJLEs7Ozs7TTs7TztPLFM7TyxVOzs7O087USxTO1EsTTtRLGlCOzs7O087USxROzs7TSxJOzs7OztPLE07Ozs7TztRLE87USxPOzs7VyxXLG1CO1c7WTthLE87b0I7OztXLGM7VTtPOztNO08saUI7TyxtQjtPOztVOztPOztVOzthO08sTTs7O08sTTs7O08sdUI7Ozs7Uzs7VSxVOzs7Ozs7Vzs7WSxTO1ksTztjO1ksTTtXLHNCLE87Vzs7Ozs7Ozs7O1csTTs7O1MsTTs7OztPO1E7Ozs7OztNLE07O0s7Ozs7TTs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7STs7Ozs7SztJO0ksTztHOzJCLCtCOzs7SyxZO0s7SztLOztNLFE7OztNOzs7O087UTs7Z0MsaUM7UyxNOzs7Ozs7OztPLE07OztNOzs7O1U7VyxROzs7VTtTO08sZ0I7TyxPOzs7O087USxPOzs7Vzs7Ozs7WTtZOzs7Ozs7VTtRLE07TTs7TyxNOzs7TTtPOzhCLG9CLGM7TyxjO08sTztPLE87TTtNOzs7O087O1U7OztPLGU7TTtNOzs7O1U7O1M7TTs7OztVLFk7c0I7O1UsTTs7UztNOzs7O1U7Vzs7Yzs7Ozs7O1c7Ozs7Ozs7VyxNOztTO007TTs7O1U7VSxPO1M7TyxTO087Ozs7Ozs7OztNOztLLE07STtJLE87Rzs7SSxZO0k7STtJOztJO0k7STtJLFk7OztLLE07OztJO0s7SyxTO0k7Rzs7STt5QixtQztJO0ssUTs7O0k7Rzs7STtLLFE7SyxVOzs7b0M7Ozs7O3dCOztNOzt1Qjs7O0ksTTtHOztJO0s7Ozs7Ozs7Ozs7O0s7aUIsTzs7SyxNOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7OztPLEc7Ozs7O00sRztNLEc7TSxHO00sRzs7Ozs7SyxNOzs7STtHOztJO0k7Szs7TSxVO007Ozs7Ozs7Ozs7OztXLE07OztVOzs7VztXOzs7VTs7Ozs7Ozs7Ozs7TTs7SyxNOztHOzs7SyxJLE0sMEM7O007Ozs7O007Tzs7OztPO1M7OztPO1EsTztRLHVCOzs7O08sTTs7Ozs7c0I7OztNO08sTTtNOzs7VSxXO1U7VyxZOzs7O2E7O2MsUztrQzs7Ozs7O1c7Ozs7a0M7OztTO087UztPOzs7VSxnQjtVLE87UztNO007TyxPO08sTzs7OztNLEs7TyxNO007TyxPO08sTzs7O0s7O00sdUIsZTtNLFU7OztNO0s7STtJLE87Rzs7O0k7STtJO0ksSSxnQjt5QixvQixjO0k7SyxTO0ssUTtLOztLOzs7O00sTTtNLFE7SztJO0k7SyxjO0s7OztLOztNLE07Ozs7O0k7SyxhOztJOzs7OztTO1M7VSxXO1U7Ozs7OztVLE07OztRO0s7OztLO0s7TSxXO007Ozs7OztNLE07O0k7STs7Ozs7Ozs7STs7Ozs7O2E7Ozs7Ozs7OztJO0ssTztLLE87OztLOzs7Ozs7OztROzs7Ozs7Ozs7SztJO0k7SSxjOzs7SyxNOzs7STtLO0ssVztJO0s7O1E7Ozs7Ozs7SyxNOztJOztPO0k7Szs7UTs7Ozs7OztLLE07O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOzs7Ozs7Ozs7Ozs7O0k7SyxXO0s7SyxXO0k7STtJOzs7O0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFk7O0s7O007c0M7SyxXO0k7SSxPO0c7OzRCLE8sc0M7STtJO0k7Rzs7STtLOzs7UyxXO1MsTztRO00sSztNLE07TSxXO0s7SztLOzs7OzRCOzs7Rzs7STs7Ozs7OztjO2UsTztlO2UsTztjLE87O2E7Rzs7SSxzQzs7cUIsWTtJLE87Rzs7STs7O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztRLE87Ozs7Ozs7O087O1E7VTs7TyxPOzs7Ozs7Ozs7Ozs7Tzs7O3dCLE8sMEM7O3dCLE8sMEM7TztPLE87OztPOzs7d0IsTywwQzs7d0IsTywwQztPO08sTzs7Tzs7O1E7d0IsTywwQzs7d0IsTywwQztPLE87O087Ozs7O1E7OztXLE87Ozs7Ozs7OztROztXLE87VTs7O1csTztvQjs7O1U7TztPOztRO1MsTzs7UyxPOztTLE87USxPOzs7Ozs7Ozs7Ozs7TztRLE87O1EsTzs7USxPO08sTzs7OztPOzs7OztTOzs7O2EscUIsVzthOzs7O2tDLFM7OztZO1UsUTs7Ozs7O2M7O2UsVTs7O2MsRyxpQztjOzs7a0I7a0IsTztpQjtjOzs7O2dDLGtCLFM7Ozs7O2Msb0IsTztjLEcsbUM7YztlOztrQjs7bUIsTztrQixPO2lCOzs7a0Isa0IsUTs7Ozs2RDs7b0IsTzs7O21EOztrQixPO2lCO2M7MkI7OztVOzs7Ozs7Ozs7O1ksVztZLE87VztRO3VDLFk7Ozs7Ozs7WTs7Ozs7Ozs7VztROzs7OztXO1csTztVOzs7O08sTzs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087Ozs7UTtVOzs7Ozs7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1E7d0IsTywwQzs7O1csTztVO08sTzs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Tzs7OztROztXOzs7O1k7Vzs7dUI7dUI7O3VCO3VCOzs7OztXOzs7Ozs7OztXOzs7Ozs7OztXOzs7Ozs7OztRLGdCLE87UTs7Ozs7Ozs7O3dDO08sSSxxQjtPLE87OztPLE87OztPO087UTsrQixhO087c0MsUztPLE87OztpQjtpQjs7TyxxQjtPLE87O087O1E7Ozs7TyxPOzs7Tzs7UTs7VyxZLE87O1csTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxNO00sTztNLFU7OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7TyxjO3FCOztPOztNOztLOztJO0c7O0k7SSxPO0c7O0k7OztLOztJO0c7O0k7OztLLE87O0k7Rzs7STs7Tzs7Tzs7Ozs7OztHOztJO0ksb0I7RzsrQiwwQzs7STtJLHdDO0ksWTs7Ozs7USxHLG9DO1EsRyxvQztROztVOzs7Vzs7O1k7OzthOzs7YzttQjtTO1UsVTs7O1c7OztVOzs7O2dDOzs7UTs7O1E7Ozs7O1EsTTs7STtHOztJLEksMkIsSTs7OzsrQjs7Ozs7Ozs7OztPLEc7OztXOzs7OzttQjs7OzthLG9DOztJO0c7NEIsdUM7b0MsdUM7O0k7Ozs7Ozs7TztTO1c7USxJLFUsNkM7Ozs7K0I7Ozs7OztJO0c7O0k7Ozs7Ozs7O1E7OztTO1E7Ozs7O0k7Rzs7STtJLGdCLG9DO0ksWTs7O0ssRyxvQztLLEcsb0M7SyxHLG9DO0ssRyxvQzs7STtHOztJO2dCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7O0k7Ozs7O3VCOzs7STtHO3FDLHdCOztJO0k7Ozs7Ozs7MkI7O1MsSSxXLGlDOzs7aUM7Ozs7Uzs7Ozs7O2M7O2UsbUI7ZSxPOztjO2E7Ozs7VTtZOzs7Ozs7a0YsZTs7UyxPOzs7Ozs7Uzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7O0s7O0c7Rzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHOztJLFU7O0ksSSxXLDRCOzs7NEI7OztHOzs7O0ssSSxxQjtLLE87STtJLE87Rzs7SSxPO0c7O0ksb0I7SSxPO0c7OztLO0s7STtJLE87Rzs7OzJCLE8sMEI7SSxPO0c7O0ksbUI7Rzs7SSxPO0c7O0k7O0ksTztHOzs2QixtQix3QjtJLE87Rzs7cUIsd0I7SSxpQjtHOzJCLGE7O0ksTztHOztJLE8seUI7Rzs7STtrQzs7OzJCOztPOztPOzs7O1E7UTs7Vzs7TyxzQjs7Tzs7USwwQix1Qjs7USxzQjtPLHNCOzs7Ozs7Ozs7OztRO1EsSSxVO1Esc0I7O087Ozs7O1csc0I7O1E7VTtRO2tDO1E7USxzQjtPLHNCOzs7Tzt5Qix1QjtRO1MsTztTLFE7OztTLE87UztRLHVDOztPOzs7USw0Qix1Qjs7OzZCO1E7TyxzQjs7Tzs7O1Esc0I7TyxzQjs7Tyx5Qzs7OztTOzs7VTs7MkI7Ozs7O087OztRLHNCO1E7Ozs4QjtPLHNCOztPOzs7USxzQjtPLHNCOzs7OztRO1M7Ozs7O087O1E7USxzQjtrQztROzs7WTtZOzs7O1k7VztXLE87O1E7NkI7TyxzQjs7Tyw4QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087O1EsVTs7USxzQjtPLHNCOztPOzs7Ozs7NkI7OztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRO2tDOztRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1E7UTtRLDBCO08sc0I7O08sZ0M7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1EsNEM7O1E7USxzQjtrQzs7UTtRLDBCO08sc0I7O087Ozs7UTtRO1EsNEI7TyxzQjs7TywwQztPLG1CLE87O08sOEI7TyxzQjs7TyxvQixVOzs7Ozs7TztPLHNCOztnQzs7O08sa0IsTzs7Tzs7Tzs7Ozs7UTtRLG1CO2tDOztRO1Esc0I7USwwQjtPLHNCOztPLGdDO08sc0I7O087OztRO1EsNEI7TyxzQjs7Rzs7STs7OzJCOzs7Tzs7O1M7Ozs4Qjs7O1k7O1k7O1k7O1k7O29DLG1CLFU7YSxVO2E7WTs7WSx1QixPO1k7OztZOztZOzs7O2dCO2dCO2U7YSxhO21DO2EsTzs7OztnQjtpQjs7a0I7a0I7a0I7MEM7O2lCO2tCO2tCOzBDO2dCOzthO1k7OytCOztZOzthLGlEO2EsWTs7OztnQjs7YTtZOztZOzs7O2EsZTthO1k7b0I7O1E7USxPOztPLDRCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Ozs7OztXO1csc0I7VTs7O087c0M7OztXOzs7Ozs7OztnQjtnQixzQjtlOzs7Ozs7O21COzs7Ozs7TztRLE87O087O0c7NEI7eUI7O0ksdUM7SSxzQjtHOztJO0ksc0I7Rzs7STs7O08sNkI7TyxzQjs7MkI7OzZCOztPOztPLDRCO08sc0I7ZTs7Rzs7SSxpQjtJLDBCO0ksc0I7Rzs7STs7O08sc0I7O08seUI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztHOztJOztLOztNLE07TTtNO007TSx1Qjs7OztLOztNO00seUI7OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7O1EsNkI7USxxQjs7MkI7O1E7Ozs2QjtTLE07UztTO1EsbUI7O1E7Ozs7OztZLHFCOzs7UztTLG9CO2lDOztTO1Msd0I7USxxQjs7UTs7OztTO1M7O1k7O1EscUI7Ozs7OztHOztJO3VCOztJO0c7O3FCLGE7STtLLGlCO0s7STtLOzs7Uzs7O1U7VTtVOzs7VTs7UztVLGU7VTtTOztNLE07TSxROzs7O0s7TTs7OztXOzs7c0I7VTs7OztPLFE7TSxHOzs7Ozs7OztTOzs7VTtTOzs7STtHOztJOzs7Ozs7SSxrQjtJLDRCO0k7SywwQjtLLHdDO0c7O0k7SztLLE07cUIscUI7STtLLE0sVztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7Szs7O0ksSTs7Ozs7UztTO1E7a0I7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7OztTOzs7Ozs7O0k7O0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztxQixzQyxZO3FCLHlDLFk7eUMsNEI7NkIsd0I7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOztHOztJOzs7O1EsSSxtQiw4Qjs7O21DOzs7Ozs7OztZLEksbUIsOEI7Ozt1Qzs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7OztRLEksbUIsOEI7OzttQzs7O087OzJCOzs7Tzs7O21COztPOztHOztJO3lDOztJLE07Rzs7SSxPO0c7O0k7Rzs7SSxZO0ksaUI7Rzs7STtLLFE7Szs7SztJO2lCOzs7O0c7O0k7SyxPO0ssUTs7Ozs7TSxHLHVDOzs7SSxNO0c7O0ksTywyQjtHOztJO0ksTztHOztJOzRDOzs7OztNOzs7STtHOztJOzRDOzs7O3dCOzs7O007OztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7Rzs7STs7SyxNOztJO0c7RyxzQjs7STtJOztNOztPO2M7VTs7Szs7Ozs7O00sTTs7Ozs7SyxNOzs7Rzs7STtJO0c7O0k7SztLOzs7Ozs7Ozs7O08sTTs7Ozs7O0c7O0k7Ozs7Uzt1RDtTO1E7SSxPO0c7O0k7Ozs7Uzs7VTs7OztXLE87VyxROzs7O1c7WSxJO1ksVTsyQzs7OzthLHFCO2MsVztjLE87Ozs7Ozs7YyxLO2UsVztlOztnQixNO2U7O2dCO2dCOztnQixzQjtlLE87Ozs7WSxtQjthLFc7YSxPOzs7Vzs7VSxNOztTO1E7SSxPO0c7RztJO0k7STtJOztJOzs7OztHOztJO0k7Ozs7STs7SyxzQjtLLE8sa0I7STtJLEc7SyxNOztJLFM7Ozs7O00sTTs7O0k7Rzs7O0ssK0IsTztLLE8sNEI7STtJLE87Rzs7STtLOztJOzs7Ozs7OztTOztVLHNCO1UsTTtrQjs7Ozs7Ozs7Ozs7Ozs7UztTO1Usc0I7VSxRO1UsVTs7O1UsTzs7O2E7OztjO2M7YSxzQjtZO1M7Ozs7Uzs7O1Usc0I7VSxLO1Usb0I7VSxPO1UsVztrQjs7O1M7O1UsTztVLE07O1M7VSxPOzs7YTthO1k7VSxNOzs7YTtjLFE7OzthOzs7Ozs7O2MsVztjO2UsYzs7Ozs7Ozs7Ozs7OzthO2M7ZSxNOzs7ZTtjOzs7Ozs7YTtjLFU7OzthO2E7WTtTOzs7OztTO1U7O1csVTs7OztXLE87VyxXO21COzs7UyxJLGtDO1M7Ozs7Ozs7STs7SztLOztNO00sUztNO007TTtPLE87TyxPO007TTs7SztJO0ksTztHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7Rzs7OztJLFk7c0U7SSxNO0c7OztLLDRCO0k7O0s7TSxTO007d0IsTTs7SztNOzs7VTtVLE8sa0I7UztPLE07Ozs7O007O3lCLG1CLE8sd0I7TyxjO00sTTs7Ozs7Ozs7SztLO0k7Ozs7b0IsTztNLHNDLE87TSxHOzs7TyxJOzs7O0s7MEIsb0IsMEI7SztNLFc7TTtNOzsrQjs7OytCOztNO00sTztLO0ssTztJOztLLGtCLE07OztNLG9CO007O0ssTztJOztLLEc7TTtNO087TyxZOztPOzttQjtPLE87Ozs7STs7SztNLE87TSxPO00sVztLLE87STs7SyxXO0ssVzswQixPLCtCO0s7TSxTO00sd0I7SyxPO0k7O0s7O3VEOztLLGdCO0ssTztJOztLLHdDOztLLE87STs7O0s7Szs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTs7O2E7O2M7YzthO1k7VSxNO1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzswQixjOzBCLGM7O0ksTztHOztJOzs7O0s7O0k7Rzs7Ozs7STtzQixPLGMsZ0M7O0ssTyw2QixPLDBCO0k7SSxPO0c7OztJOzs7Ozs7TyxHOzs7O1ksa0M7O2EsTTs7WSxnQjtXO3dCOzs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7VSxrQzs2Qjs7VTtTO3NCOzs7Szs7O1M7UyxPO1E7TSxNO007TTtNO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztROzs7Uzs7O1UsUTtTOztXOztZLE87WTs7WSxPO1c7VztXLFc7VyxPOzs7VyxvQjtXOzs7OztvQjtXOztVLGE7dUI7VSxlOzs7Uzs7Ozs7Ozs7Ozs7O1E7TSxhOztNOztNLFU7O087Ozs7OztXO1c7VTtRLFE7USxPO1EseUM7USxPO1Esc0I7TyxHO1EsZ0I7UTs7Ozs7O1k7WSxPO1c7UTs7Ozs7TSxXO007Ozs7O0s7O0k7SSxtQjtJO0c7OzZCLGU7NkIsZTs7SSxRO1U7SSxXOztLOzs7UzsrQzs7UTtLLE87O0k7Rzs0QixTOzs7Ozs7STtJOzs7Ozs7Ozs7Ozs7OzRCLGtCLDhCO1MsTzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7RztHO0k7STs7SSxtQixPO0ksVztHOztJO0k7OztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOztJLFk7O0k7Rzs7SSxrQjtHOztJLHdCO0c7OztLOztJO0ksTztHOzs7O0s7O0s7TTs7SSxJLGE7O0ssK0I7SztJOztLOztrQjs7O0k7SSxvQixPLHVCO3VCLE8sdUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztTO1M7Ozs7OzttQjs7O1E7SyxXOztLLHdCO0ssZTs7bUI7TSxNOzs7Ozs7O0s7O08sTTs7Ozs7SztLOzs7O087O1EsTztRO1U7YTs7Tzs7O087USxNOzs7O1c7VztXO1c7VztXOzs7VTtPOztPOztRO1E7Ozs7Ozs7Ozs7O1M7OztVO1U7O2E7YyxPO2E7YyxZO2MsTzthLE87WTs7VTtTOzs7O08sTTs7O08sTztRLE07TzsrQixPLDJCO1EsZTtRLE87USxjO087TztRLFU7OztXOzRCLFk7VyxlO1c7Ozs7OztxQjs7O1U7Tzs7aUIsZ0M7aUI7OztnQjs7OztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087Ozs7O1MsSztVLE07c0I7OztRO1MsYTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE07OztROztTLE87UyxNO1M7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7dUI7Ozs7OztXLHVCOzs7Ozs7Ozs7Ozs7OztPLEc7UTtvQjs7O1M7Ozs7VTtRLFc7USxNOzs7O1E7UyxPO1MsTztTLE87UyxPO1MsSztROztPO087USxnQjs7O1c7Ozs7O1c7O1U7UTs7UTs7OztTOztTLFU7Ozs7UztTOzs7WTthLE87YTtlOzs7O1k7VztTLE07UTtRO1MsVTs7OztRO1E7O1E7UyxNO1MsTTtRO1MsTTs7OztVLFc7VTtVO1csTztXLFU7O1UsTTs7O1M7Ozs7Uzs2QixZO1UsUTs7O2EsWTs7Ozs7ZSxHO2dCLE87OzthLE07O1k7VSxNOztVLE07OztRO1M7Ozs7Ozs7UTtTLFU7OztTOzs7Ozs7UTtPO087TztPOzs7UTs7Ozs7YTthO2E7YTtjLE87YyxjO2M7d0I7YTs7Z0I7O2E7YSxNO1k7Uzs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTs7OztZO1k7VztROztPOzs7VztXOzs7Ozs7cUI7OztVO1EsTztPOztpQixnQztpQjs7O2dCOzs7OztPLEc7OztTLE07O087O3NDO1E7dUI7UTt5QixPLDZDO1EsZTtRLGdCO08sRztROzs7O1U7O087USxXO1EsaUI7OztXOzs7Ozs7Ozs7VTs7UTs7O1MsbUIsbUI7UTs7Tzs7O087USxNO087OztTO1MsTTs7O3dCOzs7UTs7O1MsYztTOzs7Ozs7O1c7VztZLFE7OztXO1k7Ozs7O2M7Ozs7Ozs7O2MsTTs7Ozs7OztXO1c7Vzs7WSxPO1c7Vzs7OztXOztZOzthO2EsVTs7O2dCLHNCO2dCO2lCLE07OztnQjtnQjs7WTs7OzJCO1k7YTtjOztjOzs7Ozs7OztlOzs7Ozs7YztlLE87ZSxJO2M7Ozs7OztXOzs7O21COzs7VTs0QixtQztPOzs7O2tDLDBDO1E7Ozs7Ozs7Ozs7OztPOzs7OzttQjs7Ozs7Ozs7Ozs7OztPOztRLFM7USxnQjtPO2dDOzs7O1c7Vzs7Ozs7O3FCOzs7VTtPOztpQjtpQjs7O2dCOzs7OztPO1E7O1M7UztTLGE7UTtRLFU7O1E7OztZLGlCLFM7WTtXO1M7UztTO1M7OztRLEksb0I7UTs7Ozs7O1k7WTtXO1E7Ozs7WTtZO1c7UTtROztTO1M7OztZO1k7YTs7O3NDLHNCLGE7aUIsTztnQjthOzs7Ozs7Ozs7O2UsSztnQjtpQixPO2lCO21CO3NCOzs7Z0IsTTs7Ozs7OztlO2dCLFc7Z0I7Z0I7Ozs7Ozs7Z0IsTTs7O2U7Ozs7Z0M7YSxNOzs7VztTO1MsTzs7OztROzs7Ozs7a0I7Ozs7Tzs7UTtROzs7Vzs7cUI7cUI7b0I7O1U7TyxlO087OztXOzs7YSxNOzs7OztXO1k7Z0MsUzthOzs7Ozs7d0M7c0M7OztXO1U7UTtROzs7UTs7Ozs7WSxNOzs7Ozs7Ozs7OztTO1UsTTtTOzs7O1Msa0I7Uzs7Ozs7O21COzs7Ozs7Tzs7Ozs7Ozs7UztVLE07UztVLFE7Ozs7Uzs7Ozs7Vzs7UyxjOzs7VTtVO3FCO1U7VTtVOzs7Ozs7Ozs7O1MsTTs7Ozs7TztRLE07TztPO1EsVTs7OztPOztPO08sVztPO3NDOzs7O1c7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csTztVO087OztPO1EsTTtPOztRLFU7OztROytCLE8sNEI7USxRO1EsTztRLE87USxVOzs7USxHO1M7VSxPOzs7YTs7Ozs7YyxROzs7O2U7O2dCLE07ZTs7OztjLFU7Yzs7YTtZO1UsVTs7O1UsVztVOzs7YSxPO1k7VSxzQjtVLE87VTtVLHVCOzs7YTthO1k7VSxTO1M7VSxNOztTOzs7OzthO1k7VSxJO1U7UyxPOzs7Ozs7Ozs7Ozs7OztPLE07OztPOztRLEs7USxPO087Z0M7Ozs7VztXOzs7Ozs7cUI7OztVO087OztPO1EsTTtPLEksSSx5Qzs7UTs7O087O1E7UTtPOzs7Ozs7Ozs7O087Ozs7Vzt3QixPO1csTTtVO1E7Tzs7O08sTTtrQzs7O087USxNO087USxXOzs7Ozs7O1csc0IsUTs7WSxNOzs7VyxPOzs7Ozs7Ozs7VTtPOzs7OztJO0k7OztlOztLOzs7Ozs7OzBCLFM7STtJLE87O0c7OztJO0k7SztLO0s7STtLO0s7SztLO0s7Ozs7OztLO0s7O0c7O0k7OztlOzs7STtJO0s7OztJLE87Rzs7STs7O2U7O0s7Ozs7TTtPLE07OztLO0k7SSxPO0c7OztLO0ssTztJO0ksTztHOzs7Szs7Ozs7O007TSxPO007K0M7SyxPO0k7SSxPO0c7O0k7STtLLEs7SztJO0s7Szs7SSxXO3FCLE8saUI7STtJLEc7Syw0QztJLEk7O0s7Ozs7Ozs7OztLLGtCLHFDO0s7TSxLO00sTztNLFU7TTtROzs7Ozs7TTtROzs7Ozs7SztJO0k7SyxROzs7O0k7Rzs7STtLLGlCO0ssUztJO0k7SyxLO0s7SyxPO3FCLE8saUI7STs7O0k7RztHO3dDLGdDOztJO21DOztHOztJO0ssTztLLFE7SyxPOztLO0s7SyxPO0k7STtJO0k7SSxPO0c7O0k7STs7Ozs7Ozs7VTs7OytCLDhCO1csTztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7bUM7YSxPO1ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1Usc0M7VSxXOzs7O2M7Ozs7ZTtjO2U7ZTtnQjtpQjs7O3FCO29FO3FCO29COzRCOzs7Ozs7YzthO1UsTzs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7OztjO2Msd0I7OzthO1csTztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OztpQjs7O2tEOztpQjtpQjs7aUI7O2lCOztxQzt5Qjs7YTtXLE87VTtXOzs7O2U7ZTs7O2M7WSxPO1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7STs7OztROztTOzs7WTs7Ozs7b0MsOEI7ZSxPOztlOztnQjt1QyxpQztlLE87Ozs7Ozs7Ozs7bUI7bUI7a0I7ZSxPOztlOztlOzs7O3VCOztZO1c7USxPOztROzs7OztRO1MsTzs7UTtnQjs7O0c7O0ksWTs7STtLLE87O0k7Rzs7STs7O0k7OztJOzsrQiw4Qjs7SSxVOztLOztNLFc7O00sTTtLO0k7SSxPO0c7OztLLGU7O00sTTtLO0k7SSxPO0c7O0k7Ozs7O00sTzs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VSxzQjtVLFc7UyxPOztTOzs7VSxVOzs7VTtZO1UsTztTO1Usc0I7VSxNO1MsTzs7OztLLE87O0c7O0k7STs7Ozs7Ozs7O1U7OztXO1csYztVLE87Ozs7Uzs7O1U7WTsyQjtlO1U7VTtTLE87Ozs7Ozs7O1M7O1Usc0I7VSxXO1MsTzs7Ozs7O1M7OztVO1U7UyxJLHVDOzs7OztVLE07Ozs7Uzs7OztVOzs7O3NCO1M7UyxJLHlDOzs7Ozs7VSxNOzs7O0ssTzs7Rzs7STtJOztLO00sUztNLEc7TyxXO00sWTs7Tzs7O1E7USxZOzs7Ozs7TSxXO00sVzs7O0ksTztHOzs7STtJO0k7SSxVO0k7SSxZOztLOzs7VztNLFU7OztLO0s7SztLO0s7TSxVOzs7TTtnQjtLO00sYztNLFc7TSxrQjtLLE07O0ksTTtHOzs7SztLO00sTztNLEs7SztNOztTOzs7UyxHLG9DOzs7Ozs7OztPOzs7Ozs7Ozs7Ozs7O007OEIsaUM7TyxROztNLE87O0k7O0s7TSxPO00sSztLOzs7Ozs7Ozs7O21DLGlDO1csRztZOzs7Ozs7Ozs7O2tDLHNCLG9CO2UsTzs7O2U7OztrQyxzQixvQjtlLE87Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7OztLLFc7SyxXO1E7TSxNO0s7SyxPO0k7SSxJLFcsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87Ozs7aUMsa0IsZTtTLE87OzhCLE87OztTO1Msa0IsTzs7Uzs7Ozs7Ozs7OztNLGtCLE87O007O0s7STtxQjtJLEk7Ozt3Qjs7O0k7Rzs7STs7Yzs7K0M7YzthOztHOztJOztjOzREO2M7YTs7Rzs7OzttQixPO0ssc0M7Ozs7NEI7OzhCOzs7Ozs7cUIsWTtJLCtCO0c7O0k7STs7Ozs7Ozs7SztNO007Ozs7Ozs7Ozs7USxNOzs7Ozs7O0c7O0k7STs7Ozs7OztVLHdDO1UsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O0s7O0c7O0ksWTs7OztLLGdDLFU7Ozs7OztNLGM7Ozs7TyxzQyxPO087USxXO1E7UyxXO1M7VSxXO1U7VyxXO1csUyxPOzs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7O0ksa0IsTzs7SSxJLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7Rzs7STt1QztHOztJLDJCOztLOztJO0ksVTtJO0k7Rzs7STtJO0s7O0s7STtLOzs7Szs7USxXO1E7TztLO0k7STs7O0s7NkI7Ozs7Tzs7UTs7O1E7Ozs7OztZOzthLFc7eUI7YTs7YSxNOzs7Ozs7WTs7YSxXO3NCOzs7Ozs7TztPOzs7OztpQjs7Ozs7O1EsSSwwQztROztPOztRO1E7USxTO1E7O2U7O1EsVTs7Ozs7UyxHOzs7OzttQjs7O21COzs7Ozs7O087O1E7Ozs7O2tCOzs7O087TztROzBDLG1DO29DLHVCOzs7WTtZOzs7Ozs7O1k7VztTLHVCLDRCO1M7dUIsa0IsbUM7bUMsa0M7aUMsd0I7OztZO1k7Vzs7O1k7O2U7O2U7dUI7O1c7OztZOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlO3VCOztXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7YSxrQjthOztZO1k7Vzs7O1k7YTs7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Vzs7O1ksNEI7OzthOzs7WTtXOzs7WTs7Ozs7WTtXOzs7WTthOzs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7ZTs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2UsTTs7Vzs7O1c7O1M7Ozs7Ozs7USxNOzs7TztPOzs7Ozs7Ozs7O1U7O1c7Ozs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7Ozs7O1E7MEI7Tzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OztROzs7UyxXO1E7Ozs7Ozs7Ozs7TyxLO1EsTTtPOztRLE87USxPO21CO1EsTztRLE87USxPO1E7cUI7USxPO1EsTztRLGE7UTtRLE87USxPO1EsUztRLE87USxNO1E7YztRLE87USxlO1E7VTtRLFc7Tzs7Ozs7Ozs7OztPO1EsTTtPOzs7Vzs4QjtXOztZO1k7O1csUztXOztXOztZO2EsUzthLEcsc0M7YSxZOzs7YztlLFc7ZTs7Ozs7Z0IsTTs7OztjO2UsUzs7Ozs7YTs7O1c7VztVO1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7VztZOzs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7Ozs7Ozs7Ozs7TztPO1E7OztZO1ksTztXO1csTztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQixnQztnQjtlO1k7Ozs7OzRCOzs7OztXO1k7O2dCOzs7OztZLFU7OzthO2M7OztjO2E7YyxNOzs7WSxNOzs7VyxlO1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7NkIsVyx5QjtVLFM7VSxPO1UsTzs7VTtrQyx5QztXLE87VTtXOytCLHVCO1ksTztXO1k7YSxzQjthLE87YSxXO1k7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztROzs7VSx1QjtVOztZLFc7WTtZLEk7Ozs7Ozs7Ozs7VTtXO1ksTztZLFc7OztZO1c7Ozs7OztROztTLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21CO3FCOzs7Ozs7O21CLE87O21COytCOzttQixrQjtrQjtrQjttQixTO21CO21CLFk7a0I7aUI7Ozs7O2E7YTtjLFc7YyxXO2MsTztjLFc7Ozs7Ozs7Ozs7OzthLEs7YTtjLEs7Ozs7a0I7Ozs7Ozs7OzRDOztpQjs7OztjLFM7YyxXOzs7O2tCOzttQixpQjtvQjs7Ozt3Qjt3Qjs7Ozt1Qjs7Ozs7O3VCO3NCOztrQjtpQjs7Ozs7OztrQjs7O2tCOzsyQjsyQix3QjswQjtpQjs7Ozs7Ozs7ZSxNOzs7Ozs7O21CLDBCOzs7Ozs7cUI7c0I7c0IsTyx3QiwwQjs7O2dCLEs7Ozs7cUI7b0I7aUIsRzs7Ozs7Ozs7ZSxNOzs7Ozs7Ozs7YyxlOzs7Ozs7OztlLGE7Ozs4QjtlO2dCLGdCO2dCOzs7Ozs7Ozs7Z0IsZTtnQjs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPLHVCLE87TztPO08sSSxxQjs7Ozs7OztrQyx5QztVLE87Ozs7Ozs7TztPO087Tyx5QjtPO087UTs7Ozs7UTtPOzs7OztpQjs7OztPOzs7UTs7Ozs7Tzs7O08sTztRLE07TzsrQixPLDJCO1EsVztRLFc7Tzs7VTt1QztTO087OzZCLGdEO1EsTztROzJCLFk7USxXO087dUM7OztPOzs7Tzs7O1E7USxlO087UTtTLE87UyxVO1MsTztTLFU7Ozs7Ozs7O1M7Ozs7VSxPO1UsVztVLE87VSxXOzs7Ozs7Ozs7WTs7YTthOzs7WTs7OztTLE07O1EsTTs7Ozs7UTs7UyxzQjtTLFE7OEIsYztTLFc7UyxPO1Msb0I7UyxNO1M7UTs7Ozs7a0I7Ozs7OztPO1EsTTs7OzJCO1E7O1M7Uzs7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7USw2QixPO1E7UTtTLE87UyxjO1E7UTs7O087OzJCLFM7OztXLE87VTtROztROzs7OzthOzs7Ozs7Ozs7Ozs7Tzs7VSxXO1U7NkI7Uzs7Tzs7Ozs7O1UsTTs7Ozs7TztjO1E7OztZOztXO1csTztVO087UTs7UyxXOzs7WTthLFE7OztZO1ksSTs7Ozs7YTtjLFU7OzthO2E7O2dCO21DO2U7YTs7O1k7VztTLG9COzs7Ozs7UTs7OztZLEk7Ozs7O2E7cUMsb0IsYztjO2dCO2M7O2MsTTthOztpQyxZO2MsYztjOzs7O2dDOztrQixLO21CO2tCLEk7OztjO2EsTTs7OztZO1c7UyxzQjs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O29DLHVCO1E7VTtRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Tzs7VTt5QztTO087O3lCLGtEO1EsTztRO087Ozs7O2lCOzs7O087Ozs7UTtPO1E7O1M7UztRO1E7Ozs7Ozs7OztPO087O087OztRO1E7Tzs7Tzs7O1E7UTtRO087Ozs7O2lCOzs7O087Ozs7OztRO1E7OztrQzs7O1MsTTtROztTLE87UyxPO1MsVztTLHVCLGU7Ozs7Ozs7TyxJLG1EO087Ozs7O2lCOzs7OztPO08sSSxNLHlDO087TztPO1EsTztROztxQztPOzs7Ozs7Ozs7Ozs7UTtRO1MsVzs7OztTLFc7Ozs7UTtRO1E7UTtTO1UsTztVLE87VSxVO1M7UztTOzs7Ozs7UyxNOzs7UTtTO1MsTzs7Ozs7O3NDOzs7UTtTLFc7Ozs7UTtRO1E7UTtTLEs7UztTLG9CO1E7UTs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7WSxLOztZOzs7Ozs7UztpQjtvQjtVO1c7WSxPO21CO1c7WTtZO1ksSTs7Ozs7O1k7Ozs7O1U7VyxjO1c7Vzs7b0I7Ozs7Ozs7O1csTTs7OztTO1UsVzs7O1M7UyxJOzs7OztVOztXLFc7VSxNOzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OzBCO08sSTs7Ozs7Ozs7Ozs7O2MsSSxXOzs7OztlO2dCO2lELHFCO2dCO2tCO2UsTTs7O2M7ZSxROzs7Ozs7YyxJLFc7Ozs7O2U7Z0IsTztnQixROztnQjtlO2U7Ozs7YztlLFE7Ozs7Ozs7Ozs7O2EsSSxXOzs7OztjO2U7Z0QscUI7ZTtpQjtjLE07OzthO2MsUTtjLFc7NEI7Ozs7OztRLEksVTs7Ozs7O1M7VTtXLE87VyxXOzs7O1k7O3dCO2E7OztnQixhOzs7OzttQjs7Ozs7Ozs7Ozs7UyxNOztRLEk7OztRO1E7O08sZTs7Ozs7VztZLFE7WSxPO1ksTztXOzs7Ozs7WSxzQjs7OztxQjs7O3FCO3VCOzs7dUI7Ozs7O1E7O08sTTs7Tzs7USxXOzs7UTs7USxNOztPLHlCO087Ozs7O2lCOzs7O087OztRLFc7Ozs7O087USxNOztPO1E7O3NDO1EsVztvQjtRO087Ozs7O2lCOzs7Ozs7Ozs7Vzs0QixPLGdDO1csRztZLE07O1c7VTtPO087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2M7Ozs7OzJDO2E7Ozs7OzthO2M7Z0Qsc0I7YyxTO2EsTTs7OztTLFM7UTs7O08sTTs7Tzs7OztRLFE7TztPO1EsVTtRLFc7OztRO1EsTztPO087O1EsUTtRLE87USxPO1E7OztROztTO1c7Ozs7Ozs7O087Tzs7TztPO087Ozs7Ozs7OztPOzs7USxXOzs7UTtPOztPOztRO1E7Ozs7OzRGO3VCOztPOztPOztRLFE7USxhO087O1U7eUM7UztPLEksb0Q7Tzs7Ozs7aUI7Ozs7OzBCOztROztTLFE7UyxROzs7O1E7Uzs7OztRO1E7OztROztXLFc7Vzs4QjtVO087USxPO1EsVzs7Ozs7VztZOzs7WSxPO1k7Vzs7Ozs7OztZOytCO1k7YSxXOzs7O2E7YTs7WTtZO1k7O1k7OzthLE87Ozs7WTthOzs7YSxPOzs7Ozs7UTs7Ozs7Ozs7O08sTTs7Tzs7USxXOzs7Tzs7O087OztRO1U7YTthO087TztRLFM7USxVO1EsVzs7O1E7USxPOzs7VyxXO1csRywyQztXLFc7VztXLFk7Ozs7OzZCLE87OztXLE87VTtRLE07TztPO087Ozs7Ozs7OztPOztRLE87USxPO1EsVzs7OztXLE07O1cseUM7O1k7O2E7YSxPO29COzs7b0I7VztZLFc7OztZO1c7Ozs7O3FCOzs7O08sTTs7O087OztRLE87USxXOzs7UTtPO087Ozs7Ozs7MEI7Tzs7UTs7O1EsVTtRLFc7Ozs7O087O1E7OztTLFE7O1M7UztXOzs7OztTLFM7Ozs7O087USxpQjtRO1U7USxZO1EsYztRO1E7Ozs7Vzs7USxRO08sSTs7Ozs7USxNOzs7O1E7UTtRO1E7UTs7Tzs7OztXO1k7Ozs7Ozs7Ozs4QjtXO1k7OztZLFU7WSxTO1ksVTtZLFk7WTtjO1k7YztXLEk7Ozs7O1ksTTs7OztZO1k7WTtZOztXO1k7OztZO1c7WTthLE87YSxPO1k7Ozs7Ozs7WSxNOzs7VztXOztROzRCOzs7USxPO1EsUTtROzs7Ozs7Ozs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7O1c7O1ksTztZOztZLDBCO1k7Ozs7O3NCOzs7O1csTTs7Ozs7TyxNOzs7O0k7STtLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJO0c7O0k7O0ssTTtLOzs7Szs7Ozs7O3NCOzs7Uzs7VSxXO21COzs7Ozs7STtHOzs7Ozs7Ozs7SztNLFc7OztrRDtJLGE7STtLO00sTztNLFE7Ozs7OztLOzs7Ozs7Ozs7Ozs7SyxNOzs7SSxHO0ssUztLLEksNEI7Ozs7O08sTTs7Ozs7OztJO0s7SztLOztJO0s7Ozs7Ozs7Ozs7OztLLE87STtLO007OztNLHNCO00sTztNOzs7O0k7Z0I7Szs7STtLO0ssTztJOzs7OztjOzs7OztJLG1CO0k7O0s7Szs7SSx3Qjs7O007TSxNOzs7Ozs7Ozs7STtLLFM7Ozs7Szs7Ozs7Ozs7O0k7Rzs7O0k7a0Q7SSxhLDBCO0k7SyxROzs7O0k7SztLO0s7O0k7SztNLE87TSxPO0s7Ozs7OztLLE07OztJLGU7SSxhLDBCOzs7TSxNOztLLE07OztJO2lDO0s7O29DO0k7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7SztLO007TTtNO007TTtNO007OztPLE87TztNLHNCO007TTs7TTs7O08sTztPOzs7Ozs7OztRLE07O00sTTs7O0k7Ozs7O0s7TTs7O007Z0I7O0ssb0I7SyxPO0k7STs7OztTO1UsSztVLFE7Ozs7VSx3QixPO1U7O1M7UTtLLEc7TTtPLE87TztPLDJCLE8sNEI7Yzs7Ozs7OztJO0s7OztLO0s7Ozt1QjtJOztLO0s7Ozs7Ozs7Ozs7OztPO1E7UyxPO1MsVTs7Ozs7OztXLEs7Vzs7WSxzQjtZOzs7Ozs7Ozs7TztRO3NCOzs7d0I7Ozs7O0k7Ozs7OztLLE87Szs7SztLOzs7Ozs7Ozs7O2M7Ozs7STtLLFc7SyxPO0ssVTs7Ozs7Szs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7Uzs7MEI7Ozs7Ozs7UTtNOzs7O3dCLGtCLE8sNEI7TSxZO0s7YztLO007Ozs7Ozs7Ozs7O007Ozs7VTs7Ozs7O007TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7O0s7OztNO087TztPO00sTTs7Ozs7Ozs7O0k7SyxVOzs7OztLOzs7Ozs7Ozs7STs7Ozs7OztPLHVCOzs7Ozs7Ozs7OztJO087SyxXO0ssTTs7O2tEO0ksYSwwQjtJO0ssVTs7O0s7STtLO0s7Szs7O1E7UyxPOzs7UyxPO1E7O087SztLO0s7O0ksYzs7SyxNO0k7OztLOztLLHVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0ksVzs7SztLO0k7SSxXOztLOzs7Ozs7Ozs7SyxNOztJLE07OztJO0k7STtJO0ssSztLLEs7SyxPO0k7SztNLE87b0I7Ozs7SyxpQjtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7OztLLGtCO0s7O3VCLDBDO0s7O0k7STtJO0c7O0k7SztJLEksSyw2Qjs7SztLO0s7TSxVO00sTztNLE87TSxPO00sUTs7O007TSxPO0s7Szs7TSxRO007TTtROzs7O0s7SztJO0k7SyxROzs7SztLO0s7SyxPO0sscUI7O0s7SztLO0s7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7O3lCLGtCLFM7STtLLFc7SztPO0k7Szs7O1MsVztTLFc7UyxZOzs7aUI7VztZLE87OztlLGtCLFE7O2dCLE07ZTtjO1c7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7O087Ozs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O0ksa0I7SSx3QjtJO0ssTTtLO0k7STs7Szt3QjtLO0ssa0I7SztLO0s7SztNO007TSxNO00sVTtNLFE7OzBCOztNO007TTs7O08sTzs7Ozs7SztLO007TTs7O1U7dUY7VTtTO0s7Ozs7Ozs7YTtJO0ksdUI7eUIsMEIsaUI7SSxXO3lCLDhCLHFCO0k7eUI7Ozs7TTtPLGtCOztrQjs7O0s7TSw4QixXOzs7O0ksZTs7O007TTtLO0ssTztJO0k7SSxHO0s7TSxzQjtNLE87SztLOzs7cUIsTyxpQjtJOztLLFc7O0s7SyxPOzs7aUIsVztpQixPO2dCOztJO0k7STtJOztLO0ssTztJO0k7STtLO2E7SyxXO3VCOztLOzs7Ozs7Ozs7TTt3QjtNLHVCLGU7TTs7MEIsZTs7TSxxQyxPO00sc0I7SztLLGdCOzs7O3lCOzs7OztLOzs7Ozs7OztLOzs7Ozs7OztLOzs7O0k7SSxZO3VCO0k7STtLO00sTztxQjs7OztLO007O1MsWTs7Uzs7OztTOzs7OztVLFE7OztVLE07UyxtQjtTO1E7TSxPOzs7Ozs7OzthLE07Ozs7Ozs7O007OztPO087OztXOztZOzs7O2E7YSxPOzs7Z0I7OztpQixPO2lCLG9COztlOztpQjthOztlO29COzs7MkM7OzthO2M7Ozs7a0I7O2MsTztjLFE7YyxPOzs7YyxPO2E7Ozs7OztZOztXO1U7TSxPLFc7SztLO2lCLDBCO0s7SztpQjtLO0ssTztJO0k7SyxrQyx1Qjs7Szs7SztLLG9DOztJOzs7O0k7Ozs2QixlO0k7OztvQyxlO0k7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7O0s7STtJLFk7eUIsTyw0QjtJLG1CO0k7SSxJOzs7O007O0s7SyxPOztJO0ssVztLLE07SyxPOztLLHFDLE87SyxzQjtJO0k7SyxVO0s7SyxRO3dCO0k7SyxhOztJOzs7O1MsWTs7OztXOzs7OztZLE87Ozs7OztTO1E7Szs7O0s7SztnQjs7OztJO0k7O0s7Szs7OztTO1M7OztVLE87UztRO21COzs7O3FCLE8saUI7STtJO0sscUI7aUU7Szs7STs7WTs7TSxNOzs7OztTLHNCLE87UyxPOzttQjtRO2dCOzs7O0ksSSx1Qjs7O007TyxPO08sTztNOzs7TztRLE87USxPO087Ozs7Ozs7TTtLO0ssTztJO0k7O087OztNLGlDO007TztPO08sTzs7TztRLEs7USxPO1E7USxPO087Ozs7dUI7Z0M7O1E7O1c7O1c7O1ksTztXLE87VTs7UTs7Ozs7OztRLFc7UTs7OztPO08sTztNO007TTtLO0ssTztJO0k7cUI7O0s7Ozs7O0s7SyxZOzs7eUI7TTtPLFU7Ozs7TztPOztNOzs7VTs7O1M7TyxRO007OztNOzs7SztLLFU7SztJO0k7O087Ozs7SztNLFE7OztNLHVCLE8seUM7Szs7O0s7SztJO0ksVzs7Szs7TTtNO007SztLLE87STtJOztLOzs7O00sTztLO0k7SSxZO0k7O0ssb0I7SztJO0k7STs7SztLOztLLHlCO0s7O0k7STtJLFE7O0s7SztJO0ksVTtJOzs7O1Msb0I7Ozs7YTs7Z0Q7O1MsTTtRO0s7OztLO3FDOzs7TTtvRDtNO0s7SyxlOztJO0k7STs7O0k7STs7O0ssdUIsZTtLOzt5QixlOzs7Ozs7Ozs7STtHOztJO0s7OztJO0c7O0k7STtJO0k7SSx5QjtJOzs7Szs7TTthO0s7O0k7Rzs7O0ssTztJO0ksTztHOzs7STtLLGtCOztLO0k7SSxPO0c7O0ksWTtJLG1CLFE7Ozs7OzRDOzs7Ozt5Qjs7Ozs7eUI7Ozs7O3lCOzs7O0s7O1E7O1c7OzthOzs7ZTs7O00sVzs7Szs7STs7O0ksVzs7O0ssTztJO0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7O0k7O0s7Ozs7Ozs7O0k7SSxPO0c7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPOztnQjs7O087OztROzs7Ozs7Ozs7Ozs7OztPOzt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixXO2lCLE87Z0I7Ozs7TyxPOzs7Ozs7OztXLFc7VztXLFc7Vyx1QjtVO08sTzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OztPO1E7d0IsTywwQzs7d0IsTywwQztPOzs7Ozs7O2tCOzs7OztPLG9CLFU7O1EsTzs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROzs7WSxXO1ksTztXO1csTztVO08sTzs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1k7WSxHO2E7Ozs7Ozs7O2E7OztjLE87Yzs7aUI7O2E7Ozs7Ozs7Ozs7Ozs7WTtXO1csTztVO08sTzs7Tzs7Ozs7USxZO1EsUztROzs7O1ksTzs7Vzs7WSxPOzs7Ozs7OztXOztZLE87Ozs7Ozs7O1c7VyxPOztVO08sTzs7O08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7Ozs7Ozs7O1k7Z0M7O1k7VztXLE87VTtPLE87Ozs7Ozs7O1c7VztVO08sTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7Ozs7O1csTzs7VTtPLE87OztPLE87Ozs7Ozs7Ozs7WSxPO1c7O1k7YSxXO2EsTztZLE87VztXOztxQjs7Ozs7Ozs7VTtPLE87O087OztROztXOztPLE87OztPOzs7UTs7Vzs7TyxPOzs7Tzs7Ozs7UTs7VywwQjtXO1ksTzs7VyxPOzs7Ozs7O087UTs7UTtROztXOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7O08sTzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87Z0I7Ozs7TyxPOzs7Tzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1ksTzt5QjtXO1MsVTs7Ozs7UyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Vzs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O3lCLDJCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7STtHOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJLG9COztJO0ssTztLLE87SyxPO0ksVztHO3FCLHNDLFk7OztJO0ssUTs7OztLLE07Ozs7Ozs7a0I7Rzs7STtJLE87Rzs7SSxXO0k7Rzs7SSxXO0k7SyxRO0ssUTtJLHVCO0ksTTs7Rzs7STtJOzs7TTs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxPO0ksTztHO0c7OzsrQiw2QztLOzs7UTs7O1MsVTs7O1EsRztTLE07O1E7UyxVOzs7UyxPO1E7USxXO1c7UztVLE87VSxPO1MsTTs7O1E7OztZLEksTSx5QztZLEksc0M7Ozs7OzthLE07OztXO1MsTztTO1E7UTs7UTs7Ozs7UyxPO1E7UTtTLFc7UztRLEk7Ozs7VSxNOzs7O1E7OztZOztrQyw4Qjs7bUMsYSxrQjtjLE87YTthOzs7O2dCOzswQjswQjswQjswQjt5Qjs7Ozs7Ozs7Z0I7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7Ozs7O2dCOzswQjsyQixNOzJCOzs7OzJCOzs0QixjOzJCOzJCOzRCLE07NEI7NEI7OzsrQixJLE0scUM7K0IsSTs7Ozs7O2dDLE07Ozs7Ozs4Qjs7Z0M7MkI7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7OztnQjs7MEI7MkI7OzswQjt5Qjs7O2dCO2dCOzs7Z0IsTTsyQzs7OztZLE87VztTLFM7UTtRLEkscUM7UTs7UTs7OztTLE07UztTO1c7Yzs7UztTO1E7OztRLE07bUM7O1E7OztTLFU7OztTO1E7O0k7SSxPO0c7O0k7STtLO0ssTzs7Ozs7OztJOztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7Szs7Szs7OztNLE87TTtNO0s7STtJO0ssVTs7O0ksSTs7OztNLE07Ozs7STtLO0s7SztLO0s7Szs7Ozs7Ozs7Ozs7SztNOzs7Ozs7Ozs7TztPO007TyxPO007TTs7OztTOzttQjs7O21CO21CO21CO29CLGM7b0IscUI7b0Isb0I7b0I7c0I7b0I7c0I7bUI7OzsrQzs7OzJCO3FCOzt1QztxQjs7MkI7cUI7NEM7cUI7Ozs7b0I7cUIsTztxQixjO29CO3FCLE07OzttQjtvQjtzQjtvQjtzQjtvQjs7O29COzs7OztxQjtxQjtxQixLO3FCO3FCLFM7b0I7bUI7bUI7b0IsVTs7Ozs7OztvQixzQjttQjttQjs7c0I7O29COztxQjtxQjs7Ozs7Ozs7O21CO29COzs7Ozs7Ozs7b0I7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztvQixtQjtvQjtxQixNO3FCOztxQjtxQjs7b0I7Ozs7eUIsVzs7Ozs7c0I7O3VCO3VCO3VCLEs7dUIsUzs7Ozs7Ozs7Ozs7Ozs7O29CO3FCOzs7Ozs7Ozs7cUI7b0I7Ozs7Ozs7OzttQjs7O1M7O21CLEc7b0IsTTs7Ozs7OzttQixHOztxQjs7O29CLE07Ozs7Ozs7c0M7bUI7aUM7O29CO29COzttQjs7Ozt3QixXOzs7OztxQjs7c0I7c0I7c0IsSztzQixTOzs7Ozs7Ozs7Ozs7Ozs7bUI7b0I7Ozs7Ozs7Ozs7b0I7b0I7c0I7b0I7c0I7bUI7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1U7O29CO3FCLFE7cUIsTTtxQjtvQjtvQjtxQjtxQjtvQjs7Ozs7Ozs7O21COzs7Uzs7bUIsRztvQixNOzs7bUIsRzs7cUI7OztvQixNOzs7Ozs7Ozs7dUI7O21COzs7b0I7cUI7O3NCLFE7c0IsTTs7OzhCO29COzs7cUIsYzs7Ozs7eUI7MEIsTzswQixPO3lCO3lCLFc7eUI7Ozt5Qjs7O2tDOzBCLE07eUI7Ozs7OztxQixNOzs7Ozs7OztxQixNOzs7Ozs7OztvQjtxQjtxQixnQjtxQjs7Ozs7Ozs7O3FCO3FCO3VCO3FCO3VCO29COzs7Ozs7Ozs7O21CLE07O2tCOzs7Uzs7bUI7b0I7OztvQjtvQjttQjs7Ozs7Ozs7O2tCOzs7Uzs7bUI7b0I7b0IsZ0I7b0I7b0I7bUI7Ozs7Ozs7OztrQjs7O1M7UztVO1U7Uzs7Ozs7Ozs7Ozs7UyxNO29DOzs7O0ssTztJO0k7SyxNO0s7SyxTOztJO0k7OztLLFc7SyxPO0k7SSxZO3dCO0ssTTs7STs7O0s7Ozs7Ozs7O3VCLGU7dUIsZTtNO00sTztNOzs7Ozs7UztLLE87STtJO0ssWTtLOztLO0s7O1E7Ozs7Ozs7Ozs7WTtZOztXO1M7VztRO1M7Ozs7O2E7YSxPO1k7VSxRO1UsSztVO1Usb0IsZTtVO1UsTztVLGlDO3NCOzs7O1E7Uzs7OztROzs7Ozs7OztTOzs7OztTO1M7Ozs7UTs7Ozs7Ozs7O1M7Ozs7O1M7Uzs7OztROzs7Ozs7UztTOzs7Ozs7Ozs7Ozs7OztZO2EsSzthO2EsTzthLFk7WTtZOztlO1k7WTthO2E7WTtXO2lCOzs7UTs7Ozs7Uzs7Ozs7Ozs7Ozs7WTtZO2EsWTthO2E7ZTthLFk7YSxPO1k7WTtZO1c7aUI7OztROzs7O1M7Ozs7SztJO0k7ZTtLLFc7STs7Ozs7STs7OztLO0k7SSxPO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPOzt3QixPLDRDO1EsTTtRLFU7OztRLFM7USxPO087TyxXO1U7UTtTLE87UyxPO1EsTTs7Ozs7O1c7VztZLFc7WTs7Ozs7O1ksTTs7O1U7TztPO087UTtROzs7O087Ozs7Ozs7O087O1E7OztPOzs7O1E7Ozs7UztTLE87UyxPO29CO1MsTztTLE87UyxPO1Msa0I7UyxPO1MsTztTLGE7UyxPO1MsTztTLFM7UztlO1MsTztTLE87UyxPO1M7VztROzs7MEI7TztRLFU7Ozs7OztRO1E7Ozs7WSxPOztROztPOzs7Vzs7O1k7WSxLO1ksTzs7WSxXO1c7Ozs4Qjs7Ozs7O1U7USxPO1EsTztRLFE7UTtVOzs7Ozs7O087Tzs7O087TyxXO087Ozs7OztVOzs7Ozs7Ozs7Ozs7OztPLFM7Tzs7O1EsYztPOzs7Ozs7Ozs7TztRLE07MEI7Tzs7O1E7UTs7Ozs7OztROzs7UyxHOzs7VSxJOztRO1MsTztTLE87O1M7aUMseUM7VSxPO1M7VTs4Qix1QjtXLE87VTtXO1ksc0I7WSxPO1ksVztXOzs7Ozs7Ozs7Ozs7OztvQjs7Ozs7Ozs7Ozs7UTs7Ozs7UztTO1UsTztVLFc7Ozs7Yzs7ZSxpQjtnQjtpQixPO2lCLFE7aUIsTTt3Qjs7OzBCOztjO2E7Ozs7Ozs7YyxXO2E7Ozs7Ozs7VyxNOzs7Ozs7O2Usd0I7Ozs7OztpQjtrQjtrQixPLHdCLDBCOzs7WSxLOzs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7OztZO1k7VztTLFE7UyxTO1E7OztPO1EsTTs7TyxNOzs7Tzs7OztRLFU7OztRO1EsTzs7O1c7Ozs7WTtZLEs7VztXO1ksTzs7WSxXO1k7O3lCOzs7Ozs7VztXO1c7WTtZLE87WSxPO1c7O21CO1U7USxXOzs7UTs7MEI7Tzs7Ozs7Ozs7O087TztRLFU7UTtPO087TztRLFk7UTtPO087TztPLG9CLE87TztPLHNCLE87TztPLFk7O1EsTTs7TztROzs7O1EsTztRLE87TztPOzs7Ozs7Ozs7TyxNO2tDOztPOzs7UTtRO1U7Ozs7VTtROztPOzs7RztJLE07SSxhOztJO0k7Ozs7UTs7O1M7VztjO2M7UztTO1EsTzs7Ozs7Z0IsTzs7O0c7O0k7dUIsTztJOzs7SztPO1U7VTtLO0s7SSxPO0c7O0ksSSxpQjs7Ozs7c0I7TTs7Ozs7STtLLE87SyxLOztLLE87SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7O0k7STs7O0ssSSxlLHdDOzs7O08sTTs7OztJLGdCO3lCLG9CLGM7STtLLFM7SztJOztLO00sUTtNLE87Ozs7OztLLE07O0kscUMsTztJO0ksVztJO0k7STtLLFE7OztLLFM7SyxNO0ssTztJO0k7SyxXO0s7Ozs7O0s7OzZCO0ssTTs7SSxTO0ksSTs7OztLLDJCO0ssTTs7SSxXO0k7STtLLFU7OztLLE87STtLLFc7Szs7Ozs7SztNLE87TSxtQjtLLE07O0ksSTs7OztLLGU7SyxNOzs7STtLO00sTztNO0s7Ozs7OztLLE07OztJO0ssTztLLGU7Szs7O0s7OztROzs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7OztLOzs7UTs7Ozs7Ozs7O3dCO0s7O0ssVTtLOzs7SyxPO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0ssTztLLFU7OztJO0k7SyxVO0s7OztLLE87Szs7Ozs7OztROzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxPO00sTztNLE87TSxPO00sTztNLE87Szs7YTs7Ozs7STtJLFk7STtJO0k7Szs7Ozs7Ozs7O00sUTtNOzs7O007Ozs7d0I7SyxrQjs7TTtNOztLO00sZ0I7TTs7OztNOztNO3VCO007UTs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTzs7STtLLFU7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7OztNLE07OztLO0s7SztLO0s7SztLO0ssRztNLE07O0s7TSxPO00sUTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7TTs7eUIsTyx3Qzt5QixPLDJDO0ssTTs7O0k7SyxRO0ssUTtJLEksYzs7Ozs7O0ssTTs7SSxZO0k7Ozs7Ozs7Ozs7O007TyxPO2M7OztLO00sTztNLE87TSxPO00sTztNLE87SyxPOztJLFk7STs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxrQjs7Tzs7O1EsVTs7O1EsVTs7O1EsTztPO08sSTs7Ozs7USxNOzs7YztRLE07Ozs7TSxNOztLOzs7Ozs7Ozs7Ozs7OztJLFk7STtHO0c7O0k7STtLLGE7Szs7Uzs7Ozs7O0k7STtHOztJO0ssYTtLO0k7STtHOztJO0s7OztzQiw2QjtJO0ssTztLLFU7OztJO0k7Rzs7STtHOztJO0s7Ozs7Szs7Ozs7Ozs7O0k7SSxXO0c7O0k7STs7Szs7Uzs7Ozs7Ozs7STtJLFk7STtHOzs7STtLLE87SyxPO0ssTztJO0c7O0k7bUI7O0c7O0k7O087O087ZTs7Rzs7STtLLE87Ozs7Tzs7NkIsTyx5Qzs2QixPLHlDO087TyxPOztPOzs7O1EscUIsTyx5Qzs7O1csTztVO08sTzs7O08sTzs7O08sTzs7TyxPOzs7Ozs7UTtTLE87Z0I7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7TyxPOzs7TztPO1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7USxxQixPLHlDOzt3QixPLDRDO08sTzs7Tzs7OztRO1E7Ozs7USxPO1E7VTs7TyxPOzs7Ozs7Ozs7O087OztRO1E7VTs7TyxPOzs7TyxPOzs7Ozs7Ozs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7TztPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Tzs7O1E7O1c7Ozs7O1ksbUI7VztXO1c7WSxPOztZLE87VyxPOzs7Ozs7Ozs7O08sTzs7O087OztRLE87TyxPOzs7TyxPOztPOzs7Ozs7VztZLE87Vzs7WSxPO1c7VyxPO1U7USxPO08sTzs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7Ozs7O08sTzs7OztRLE87OztPLE87OztPLE87OztPLE87Ozs7eUIsMEI7SSxPO0c7O0k7Szs7OztNLDRCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3dCLHNCOztpQztlLE07O0c7O0ksWTs7OzBCOzs7TyxNO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07O08sTTs7Rzs7STtLLE87SztPOzZDO0ksUztJO0ksTTtHOztJOztLO00sUztNLE87SztLLFU7SztJO0k7O00sVztNLE87SztLLE87STtJO0ssTztLLFE7OztLOzs7TyxLO1E7Uzs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7SSxPOztHOzs7SztJO0k7SyxROzs7SztJO0c7Rzs7OztRLE07Tzs7d0I7SSxpQjs7Szs7O00sTzs7TSxXO00sTztLO0ssTztJO0ksTztHOztJO0ssVztLO0ssTTs7Szs7TSxtQjtNLFE7Ozs7O0k7SyxZO0ssUztLLE87SyxPO0ssUTtJOzs7Yzs7O0ksWTtJO0ksTzs7O0k7STs7O1E7Ozs7O1E7UTtRLE87O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7OztJO0c7O0k7SztLOzs7Ozs7O0ssaUIsTztLLHVDO0s7O007Ozs7Ozs7Ozs7Ozs7O1UsTzs7OztLOzs7STs7Ozs7Ozs7Ozs7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7Ozs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7OzRCLFM7STs7Ozs7Ozs7Ozs7Ozs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEcsa0I7UTs7TTs7Tzs7OztJOzs7O007TTtLO0s7Szs7Ozs7Ozs7Ozs7O1k7Ozs7OztnQixrQjttQjthO2MsUTtjLE87YyxPOzs7YyxPO2M7Ozs7Ozs7aUI7Ozs7Ozs7O2lCOzs7O2tCLE87a0IsTztrQixPO2lCLE87Z0I7YyxPO2M7Ozs7cUMsTywyQjtjOztpQjs7Ozs7Ozs7Ozs7Ozs7YyxPO2MsUztjO2dCO2MsWTtjO2dCOzs7Ozs7OztjO2M7Ozs7YTs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7O2M7YztnQjs7OzthOzs7Ozs7Ozs7OztTLEcsa0I7VTtXLFU7VzthOztXOztXOzs7O1csVztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlO2UsUTtlO2UsVTtjO2M7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlLGdCO2M7OztjOzs7OztTLEcsa0I7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7OztVLEcsa0I7VztZLFk7WTs7O1k7OztXO1k7YSxPO2EsTzthO1k7Ozs7O1c7Ozs7Vzs7Ozs7O0s7OztLO007O0ssWTs7TSxNOzs7SztJO0k7SztNLFE7TTs7O0s7Ozs7O087UTs7O1EsVTs7USxNO087OztROztRLE07Ozs7O1k7Ozs7dUI7c0I7c0IsVzs7O3VCOzs7Ozs7Ozs7d0I7eUIsYzt5QixVO3lCLFE7Ozs7MEI7OzJCOzZCOzs7OzJCLE07Ozs7Ozs7Ozs7Ozt3QixNOzs7OztzQjtxQjtXOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7O2tCO2lCO2MsRztlO2dCOzs7Ozs7Ozs7O2UsTTs7OztZLE87Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7UTtTLE07Ozs7Ozs7O1c7OztZLE87YztXOzs7OztnQixrQjs7Ozs7O2tCLEcsMkI7Ozs7O2dCLE07ZTtZOzs7Ozs7Ozs7Ozs7Ozs7O1MsSSxjOzs7O1csTTs7Ozs7OzthLE87WTs7O1M7VSxPOztTO1UsTTs7Ozs7YSxPO1k7O1E7UyxNO1M7VztnQjs7O1E7O1MsUTtTOzs2QixPLHlDO1MsUTtnQjs7O1E7O1MscUIsTyxvQztTLFE7UyxRO2dCOzs7O0s7O0s7Szs7Ozs7O0ssTTs7Ozs7SSxZO0k7OztLLE87SyxPO0ksVztHOztJLFk7STs7O0s7SyxPO0ssTztJLFc7Rzs7SSxZO0ksa0MsTztJLEs7SztJO0ksVztHOztJLFc7STs7O0ssTztLLE87SSxXO0c7O0k7OztPOztRLE87Tzs7MkI7Ozs7UTs7O1M7Uzs7Uzs7VSxPO1UsUTtVLFU7Ozs7Ozs7Ozs7TztPOztPOzs7UTs7O1c7OztjO2M7OztjO2M7c0I7O1U7TztPOzs7O2M7Tzs7O08sTTtrQzs7Tzs7USxTO087O0c7O0k7STtHOztJO0k7aUI7SyxzQzs7O1E7OztTLFE7UztROzs7a0I7a0I7aUI7Ozs7Ozs7O1M7VSxRO1U7O1UsTztVLFU7OztTOzs7OztROztTLFU7Z0I7OztXOzs7Ozs7UTs7UyxVOzs7WTs7YTthLFc7WTtZLE87VztTLFU7OztZO1ksTztXO1MsVztTO1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7Ozs7UTs7UztTO1MsVTtTO1MsVTs7O1M7USxPOzs7UTs7UyxVO1M7UztTOzs7Yzs7Ozs7YTs7O1EsTzs7OztHOztJO0ksb0I7SSxXO0c7O0k7SztLLE87SyxPO0ssTztLLE87SyxPO0ssTztJOzthOzs7Ozs7OztHOztJOzs7O087Ozs7Ozs7O3lCOzs7Ozt5Qjt5Qjs7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUTtnQixPOzs7SyxNOzs7STtJLEksdUI7O0s7TTs7Ozs7O0k7SSxPO0c7O0k7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJOzswQjs7NEI7OzRCOzs0Qjs7NEI7OzRCO29DOztHOztJLFc7STtLO00sTztNLE07eUI7SyxZOztNOzs7OztNO0s7SyxPOztJLE87Rzs7STs7SztLLE87STtJLG9COztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGdEOzs7O2E7TztRLG9CLGU7USxPOzRCLGU7USxRO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOzs7SyxtQjs7O1E7O1M7UTs7USxvQjtROzs7O1M7OztVOzs7VTs7VyxRO1csTztXLE87VztXLFU7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7O1M7UztTOztTO1M7Ozs7Ozs7Ozs7OztlOzs7Z0IsVTs7Ozs7OztlOzs7Z0I7Ozs7O2U7OztnQjs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Z0I7Ozs7WTthOzs7WTs7UyxVOzs7UyxVO1M7UyxPO1E7MkI7Ozs7OztROztTLFE7UyxVOzs7UTs7O1EsTTttQzs7UTs7UztTLE87UTs7STtJLE87Rzs7STtLOzs7O0ssTztJO0c7O0k7O0ssUztLLGdDLGU7OztROztTLFU7OztRO1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7Ozs7WTtZO2EsTzthLFc7O1c7UTtRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7OztZOzs7Ozs7OzthLE07O1k7YSxNO1k7O2EsTzthLFE7YTtZOztXO1E7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7OztZOztXO1E7UTtTOzs7O1M7OytCLGtDOzs7UTs7Ozs7UTs7UyxVOzs7UztRO1E7UTtTOzs7O1M7UTs7UTs7UyxRO2dDLG1DO1MsTzs7UyxPO1MsTztTOzs7Uzs7VSxXOzs7Uzs7Ozs7UTtRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7UTtTOzs7O1E7Ozs7Ozs7Ozs7UTs7Uzs7Ozs7WSxtQzt3Qjs7WTtXO1MsVTs7O1k7WTs7VztRO1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O2dDLG1CLFU7UTs7O3VCOzs7OztROztTOzs7O1E7UTtRO1M7Ozs7UztROztROztTOzs7O1M7O1MsTTtROztTO1MsUTtTOzs7O1E7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztnQyxpQztTLFM7UztTLFU7UztTLFc7Ozs7O1M7MEI7UTtRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7OzthOzs7UyxPOytCLGdCO1M7O3VCOztROztROztTLFc7Ozs7O1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7YTs7O1MsTzsrQixlO1M7OzttQjs7UTs7O1E7UTtTOzs7O1E7Ozs7OztRLE07bUM7Ozs7SSwyQjs7SztNLG1COzs7O007TTtLO0s7STtJLE87Rzs7O0s7Ozs7O00sTztLLG9CO0s7TSxPO00sTztNLE87c0IsWTtLO007O1M7Ozs7TSxRO00sUTs7O007SztJO0ksTztHOzs7O007O087TyxPO007TSxPO0s7SyxPO0k7OztNOzJCLHFDO007TyxPO087TTtLO0ssTztJO0k7O007MkIsbUIsbUI7TSxPO0s7SyxPO0k7SSxZOztLLG9CLE87SyxPO0k7SSxVOzs7TSxXO00sTztLO0ssTztJO0ksaUI7O0s7TSxPO00sUzs7OzswQiw2QjtLLGE7dUIsZSxrQztLLGU7SztJO0k7SyxPO0s7eUIsOEI7SSxJLE8sK0I7STtJLEksK0I7STs7Szs7Ozs7TTs7O3lCO0s7OztTOzs7Ozs7eUI7SyxXO0s7STtJLGE7STtHO0c7O0k7STs7OzswQjs7OztTO1M7Ozs7OztLLE07O0c7O0ksSSxzQzs7OzZCOzs7Rzs7Ozs7O1E7O1E7O1MsUTtTOztZOzs7ZSxPOztrQzt1Qjs7O1EsTzs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7O2dCOzs7O0k7Szs7USxzQixPO1E7UyxNOztROztRLHNCO1E7UyxNOztRO2dCOzs7SSxPO0c7b0IsZTtHLHVCOztJOztLLE87O0k7Rzs7SSxrQjtJLFk7Ozs7TyxNOzs7Ozs7Vzs7OztlOzs7O2dCLFc7ZSxHO2dCO2lCLFc7aUIsSztnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7O2U7O2tCO2tCO2lDOzs7Ozs7cUIsRyxxQjtzQjs7Ozs7aUI7Ozs7ZTtlOzs7Ozs7Yzs7VztVO08sVztlLE07O0c7OztLLGdDLE87SyxXO0k7STs7OzJCO0ksTztHOzs7O007bUI7SztLLFc7SztJO1EsSSx1Qjs7Ozs7cUQ7Ozs7Ozs7SyxJLFU7Ozs7OztpQzs7STtHOzs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtvQjtnQjs7STtHOztJOztLO0k7SSxPO0c7Ozs7O087O1EsTztRO1EsZ0I7USxROzs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7OztPOzs7UTs7O1M7OztTO1M7Ozs7O1k7Ozs7Uzs7OztPOzs7O1k7O1c7d0I7OztPO1E7OztRO1E7O1c7OztZLGM7Ozs7Ozs7Z0IsTTs7Ozs7cUI7O2U7Z0IsTTs7ZSxXO2U7Ozs7Ozs7Ozs7Ozs7YztlOztrQjs7Ozs7Ozs7Ozs7O2U7Z0I7a0I7Z0I7ZSxNOzs7Yzs7ZSx1QixRO2U7Ozt5Qjs7OzsyQjs7OztnQjs7aUI7bUI7Z0I7Ozs7O2dCO2lCO2tCLE87Ozs7Ozs7O2lCO2lCLE07Ozs7Ozs7O2dCO2lCOztvQjs7Ozs7OztpQjs7OztpQjs7OztjOztjLFc7Yzs7Ozs7Ozs7OztjLE07OztjO2UsTztlO2MsTTs7OztPLE87O087OztROzs7UTtROzs7OztPOzs7OzswQjtPLFU7O1E7UTs7TztRLE87USxVOzs7O1csTTs7Ozs7Ozs7ZTs0QjtjO1csRztZLE07Ozs7OztxQjs7b0I7VztZO1ksb0I7VztZLE07Vzs7OztPLE07Ozs7TyxNO2tDOzs7OztLOztNOztPOzs7TztPO007O0s7TTs7O00sUTtNO00sVTs7Ozs7Ozs7SyxvQjtLOztNOzsyQzs7O1M7OztTOzs7Uzs7O1M7OztTOzs7Uzs7SztLO00sTztNO0s7STtJLE87Rzs7STtJOzs7Szs7UTs7OzsyQixPLHVDO1MsTztROztROzs7UyxROzs7MkI7UTtTLE87Uzs7O1k7Ozs7O1k7WSxTO1k7WTs7b0I7VztTLFU7OztROztnQjs7OztROztTLFU7OztRO1E7UTtnQjtROzs7Ozs7UTs7O1MsVTs7OzZCLDBDO1E7UTs7Uzs7O2dDLG9DOzs7OztZO2EsTTtZOzs7YSxPO1ksTzs7dUI7OztXO1MsYzs7Ozs7O2E7OztjLGM7YyxTO2EsTztZO2lCOzs7UTs7UTs7UyxVOzs7Uzs7O1k7WTs7VztTO1c7O1E7OztvQyxrQzs7Ozs7O1E7O1MsVTs7O1M7UTtRO1E7O1c7O1E7Ozs7OztROzs7Ozs7UyxjO1MsVTs7O1k7Ozs7Ozs7Ozs7OztZO1c7UyxVOzs7O1MsTztTLFM7Uzs7Ozs7O1MsYTtRO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7OztZOzthLE07Ozs7Ozs7O1k7VztTLFU7OztZOzs7OztZO1c7Uzs7cUI7Ozs7O1ksbUI7WSxvQjtZLE87VztRO1E7OztZOzs7Ozs7Ozs7O2E7Ozs7c0I7OztZO1k7YSxVOzs7YTtZO1c7UyxjOzs7WTs7Ozs7OztZLGE7WSxvQjtZLE87VztTLFc7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7VTs7O2M7Ozs7Ozs7Ozs7ZSxhO2U7O2M7ZTs7a0I7Ozs7Ozs7Ozs7Ozs7O2UsTTs7O2M7OztlOzs7Ozs7O2U7Yzs7VzthOzs7Yzs7OztlO2dDLCtCO2MsTzthO1csTTs7O2M7Ozs7O2M7YyxPO2E7VyxjOztXOzs7Z0I7Z0I7ZTs7O2tDLG1CLFU7VTtzQjs7Ozs7Uzs7O2M7ZTs7Z0IsVztnQixlO2U7ZSxVO2UsbUM7OztVLFk7OztjO2U7ZSxVO2U7Ozs7Z0I7Ozs7ZSxPOzRFOzs7VSxRO1U7OzthO2EsVTs7YSxPO1k7VSxNOzs7Ozs7Ozs7UTs7Uzs7OztRO1E7UTs7UyxNO1E7O1E7O1M7Ozs7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTtZO1k7O2E7WTtZO2E7Ozs7VztTLGM7O1M7OztjOzs7Ozs7O2E7OztTLE87OEIsNkI7UTtxQjs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O2E7WTtZO2E7OztXO1MsYzs7Uzs7O2M7Ozs7O2E7OztTLE87NkIsZ0M7UTtxQjs7Ozs7UTs7Uzs7O1k7VztTLFc7OztTLFU7UztTO1c7Ozs7O1Msc0I7UTtRO1E7OztRO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7Rzs7STtJO0c7O0c7STs7O0c7STs7RyxJO0c7STs7O0ksTztHOztJOzs4QixPOzs7Tzs7OzhCOzs7bUI7OztlOztHOztJO0s7Szs7Szs7TSxVOzs7Ozs7SSxVO0k7SyxNO0k7Rzs7STs7MEI7OztPO2UsTTs7Rzs7STtJO0ssVTs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7OztPO1E7USxVOzs7UTs7O1c7O2M7O2U7O2UsTztlLFU7Yzs7Yzs7ZTs7ZSxPO2U7aUI7YztzQjs7VTtRLFE7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNO08sMkI7Ozs7SztNOzs7UztTLEk7OztpQzs7O1MsSSxXOzs7aUM7Ozt5QjtTLFE7UztRO00sTzs7Ozs7O0k7Ozs7SztLO007TyxPO08sTztNOzs7OztPLE07Ozs7STtJO0k7SyxPO0ssTzs7SztJO0s7aUI7Ozs7OztLLE07OztJOzs7STtHOztJO0c7O0k7Rzs7Ozs7O0k7Szs7Ozs7Ozs7SSxlO0ksTztHOzs7STs7SztLO3dCO0s7TTs7Ozs7O00sTztNLE87TSxVO007O007TTtPLFU7OztVLFc7VSxPOzs7Ozs7UztNO007TTs7Szs7TSxPO00sYTtLLDZCO00sVztNO007TztTOzs7Ozs7Ozs7OztNO007TTtNLGM7O087USxTO1EsTztRLE07UTtRLE87Tzs7Ozs7Ozs7O087O007Ozs7OztNO087USxPO1EsTzs7Ozs7O087TyxNOzs7Z0I7Ozs7O0s7TSxTO007UTs7Ozs7Ozs7Ozs7SztLO00sVTtNO00sTztLOzs7Ozs7Ozs7SztLOztJOzs7O1M7VSxPO1UsYTtVLE87Uzs7Ozs7Ozs7O1M7UTtJLE87Rzs7O0ksVztJLE87Ozs7Ozs7OztHO3FDLGtDOzs7SztNLE87TSxPO00sVTtNLE87TSxLO00sTztNLGtCOztNLE07O0ssVztLLG9CO0k7SSxZO0k7O0s7OztNLFE7TSxRO0s7STtJO0ssaUI7Szs7SztLLE87STtJLFk7O0s7OztNLE87TSxPO00sTztNO0s7STtJO0ssSztLLFM7SyxPO0ssVzs7O0s7O00sSztNLE87SyxPO0k7STtLLE87SyxRLFc7SyxVO0ksRztZO007TSxNOzs7ZTs7Ozs7SztNLFM7O1E7Ozs7Ozs7Ozs7TSxPO0s7Ozs7Ozs7OztLOzt3QjtJO0ssYTtLLE87O0s7SyxXO0k7SSxjOztLO00sTztNO1E7O007TSxPO0s7Ozs7Ozs7Ozs7STtHOztJOzs7USxPOztRLE87O1EsTzs7Ozs7OztRLE87O1EsTztnQixPOzs7OztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87O087OztRLFM7TyxPOzs7Tzs7OztRLFM7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O08sTzs7OztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7O08sTzs7O08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7Uyx1QjtTO1MsTztTLE87OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRLHFCO1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPLG9CLE87TyxPOztPOzs7UTtRLE87TyxPOzs7O3lCLDBCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0c7OztJOzs7SyxZOzs7Ozs7Ozs7OztNO08sTTthOzs7Ozs7O0ksYTtJLHFCLE07SSxPO0c7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzsyQixxQjs7SSxVOztLO0k7STtLLFE7SyxNO0ssTTtJLE87Rzs7SSxZOztJLEc7SyxNO0k7SyxlO0s7Ozs7OztJOzs7Ozs7Ozs7OztHOztJLFk7STs7SztLO0k7RzsrQixPLG1DOztJO0ssUTtLLFE7OztJOzs7ZTtLOzs7TSxJO0ssRyxxRDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDs7O0c7O0k7O0ssTztJO0ksTztHOztJO0k7Ozs7Uzs7UyxVO1M7OztRO0ssVTs7a0I7O0s7Szs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7Rzs2Qix5Qzs7STtPO0s7SSxNO0c7RztJO0k7Ozs7Ozs7Ozs7STtLO0s7SyxXOztLO0s7O3dCLE07Ozs7O1UsTTtTOztTOzs7OztVO1M7Ozs7Ozs7VyxHOztVOzs7OztXO1csSTtVOzs7Ozt5Qjs7Uzs7OztVO1UsUTs7Ozs7Uzs7Ozs7VTtVLE07Uzs7Ozt3Qjs7c0M7O1M7Ozs7VTs7OzthO2E7WTtVLE87Ozs7O2E7YTtZO1UsTztVO1M7O1M7Ozs7O1U7OzthO2E7WTtVLE87Uzs7d0M7O1MsMkM7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7O1Msa0M7Uzs7eUM7O1M7Ozs7O1U7VTtTOzs7Uzs7OztTLEksVyxrQzs7O2lDOzs7aUIsTTs7O0k7O0ssb0I7SyxPO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O007O087Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7Tzs7K0Isb0IsTyxtQjtPLE87Ozs7Ozs7OztVO1UsTzs7Ozs7TyxPOzs7Tzs7Ozs7VztXLE87VTtPOzs7OztXO1csTztVO087Ozs7Tzs7OzBCLG9CLE8sc0I7TztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7K0I7UyxPO1MsTztTO1EsTzs7Ozs7O1E7OzsrQjtTLE87UzsrQjtTLE87UyxPO1EsTzs7O1E7O1E7OztTOytCO1MsTzs7K0I7UyxPO1M7OztTO3NCO1EsNkI7USxPOztROzs7OytCO1MsTztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7K0I7UyxPO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7OztLO0ssTztJO0ksTztHO0c7b0Msd0M7O0k7STs7Ozs7O3lEOzs7OztLOztHOztJOzs7Ozs7OztPOzs7OztROzs7OztPOztJLE87OztJOztLLE87OztJOzs7SSxJLFc7Ozs7SztNLE87TSxPO0ssTzs7STtHOztJO0c7O0k7RztrRDtHOztJO0c7O0k7SyxPO0ssTTtLO0ksSSxVOzs7O0s7TSxPO00sTztLLE87OztJO0c7O0k7O21CLE87SSxvQixNO0k7OztJOzs7O0k7SyxxQztLLGlCO0k7STtLOztNOzs7OztPOzs7TTtLO0ssTztJOztLOzs7USxJLFc7Ozs7UyxJLFUsaUM7OztnQzs7OztROzs7USxJLFc7Ozs7UyxJLFUsbUM7OztnQzs7OztROztROztROzs7Ozs7UztROztROztTOzs7OztTO1E7O1E7Ozs7OztTOzs7UztROztROzs7OztTOzs7UztROztROzs7Uzs7O1M7Uzs7O1k7O1EsVzs7O1E7O1E7Ozs7Uzs7UyxzQjtTLE87OztTLHNCO1MsTztTO1E7O1E7Ozs7O1M7Uzs7O1k7O1MsTztROzs7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7Uzs7O1M7UTs7UTs7OztTO1M7UTs7USxrQztROztRLGtDO1E7O1E7Ozs7OztTOzs7UztTO1E7OztRLEc7UyxNO1EsSSxJLE87Ozs7OztROztROzs7Ozs7UztTO1E7O1E7OztTO1M7d0IsTyxzQzs7O1k7Ozs7d0IsSTs7O2dEOzs7d0IsTzs7OztZLE87Ozs7dUIsSTs7OytDOzs7dUIsTzs7VztTLGM7MEMsTyx3QjtTLFU7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssa0I7SyxPO0k7OztLOzs7SyxZOztLOztJO0c7OztLLFk7SyxPO0k7eUIsbUI7SSxRO0k7Rzs7STtJLHVDLFc7Rzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7Ozs7Ozs7Ozs7Tyx1Qzs7Tzs7Ozs7O1EsTTtPLHNCOztPOzs7OztRLE07TyxxQjs7Tzs7O1EsTTs7O1c7VyxjO1U7TyxXOzs7TyxjOztPOzs7O1EsTTs7OztXO1csYztVO1EsTTs7Ozs7VztXLGM7VTtRLE07UTtPLFc7O087Ozs7O1EsTTs7O1c7VyxjO1U7USxNO08sWTs7O08sZTs7Tzs7OztRLE07TyxZOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO1EsTTtPLFk7O08sa0MsTTtPLFk7O08sa0MsTTtPLFk7O087Ozs7OztRLE07USxNO08saUI7O3VDLGlCOztPOzs7Ozs7USxNO1EsTTtPLGlCOztvQyxZOzt1QyxpQjtlOzs7O29CLE8sbUM7STtHOzs7STs7SyxHLHFDOztJOzs7STtHOztJOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087ZTs7Rzs7SSw0QztnRDtJLE87RztzQyx1Qjs7STtzQjs7Ozs7Ozs7c0Isd0M7aUMsZ0I7UyxXOzs7Ozs7OzswQjs7Ozs7OztJO0c7eUIsNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7TyxPOzs7O0k7O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1EsTztnQixPOztJLG1CO0ksTzs7O0k7OztROztRO2dCOzs7STtHOztJOztrQjs7a0I7MEI7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO0ksTztHOztJOztlO2U7Ozs7aUI7aUI7O3FCLE87OztPLE87O0c7O0k7OztNOztPLHNCO00sRyxzQzs7O08sYztPOzs7O1c7VyxPO1U7TztPLE87O007TSxPOzs7STtHOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7Ozs2Qjs7Ozs7Ozs7Ozs7OzZCOzs2Qjs7NkI7OzZCOzs4Qjs7OEI7Ozs7O1c7O1c7O1c7O1c7O1c7bUI7Ozs7UTs7O1E7OztRLE87OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztROzs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROzs7UTtrQjtrQjs7Ozs7TyxPOzs7TyxPOzs7OztRLE87Ozs7TyxPOzs7Tzs7OztRO08sTzs7Tzs7OztRO087Ozs7Ozs7TyxPOztPOzs7UTtPOzs7Ozs7O08sTzs7O08sTzs7O087Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOztPLGtCLE87TyxPOzs7aUI7aUI7OztpQjtpQjs7MkI7O08sbUI7TyxPOzs7TyxPOzs7TyxPOzs2Qjs7OztRO1EsTzs7TztPLE87Ozs7UTtRLE87O087TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87OzRCOzs0Qjs7Tzs7O1E7UTtPLE87OzRCOzs0Qjs7NEI7Ozs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7UTs7Ozs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7Rzs7SSxTO2E7Ozs7O1E7O1E7O1E7OzJCOzs7Tzs7Tzs7OztPOztPOzthO3NCO0c7O0k7OztnQjtnQjs7OztJOzs7USxPOztRLE87O1EsTztnQjs7O0ksTzs7O0k7O08sTzs7TyxPO2U7Ozs7Ozs7O3lCLE87OztRLE87OzBCOztROztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthO2E7Yzs7O2lCOzs7O2tCO2lCO2lCO2dCO2E7YSxPOzs7YTthLE87Ozs7Ozs7O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7WTs7YTs7Yzs7O2EsTzs7WTtZLE87VztRLE87Ozs7Ozs7OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLEksYzs7YTs7Yzs7O2EsTztZO1k7OzthOztjOzs7YSxPO1k7WTs7d0I7OzthOzs7WSxPO1c7O1EsTzs7Ozs7Ozs7O1k7O2E7O2M7OzthLFc7YSxPO1k7WTs0Qjs7O2E7OztZLE87VztRLE87OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7YTthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7Ozs7Uzs7O2EsTztZO1ksTztXO1M7USxPOzs7Ozs7Ozs7Ozs7USxrQzs7Ozs7Ozs7Ozs7Ozs7bUI7UTs7O1MsTztROzs7Ozs7OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7SztNOztTOzs7WTs7ZTs7ZTt1Qjs7O1k7O1ksTTs7UTtNO0s7Ozs7Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7O2lCLE87O007TTs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87OztxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007MkIsb0IsVztNLFc7TSxPO0s7O007O087TztNO007TyxPO08sTztPOztPO087TzswQjs7TztPO007TTtNO0s7O0ssMEI7SztLOzs7a0M7O0k7STs7OztLO0s7STtJOztLO0k7Ozs7Ozs7OztLOzs7Szs7O0k7O0s7O00sTztLLGM7STs7Szs7OztNO1E7O00sSzs7O0s7Ozs7O007O087Ozs7Tzs7OztNLEc7TztRO1U7O1E7UTs7OztTO1M7Uzs7Ozs7O1E7Uzs7Ozs7Ozs7Ozs7OztPO087Tyx5Qjs7OztTOztVO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO087Tyx5Qjs7OztTLDJCO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO08seUI7Ozs7UywyQjtTO1M7Ozs7Ozs7O2tCOztLOzs7YTs7STtJLEksSSxzQzs7SyxJLGU7Ozs7Ozs7UTtROzs7Ozs7O08sRyx1Qjs7Ozs7TSxPOzs7Szs7TSxVO007Tzs7Ozs7TztPOztNO007SztLOztNOzs7O007TTtLLEksVyx1Qzs7Ozs7TTtPLE07TTs7TztPOzs7Ozs7UTs7UyxJLHVCLE87Uzs7Ozs7Ozs7TTs7Ozs7Tzs7UTs7Ozs7Ozs7USxHO1M7VTs7Ozs7Ozs7Ozs7O1U7O1U7UztTO1M7VTs7VTs7Ozs7OztRO1M7OztPO1E7Ozs7OztNO007O0k7O0s7OztNOzs7TTtNOzs7Ozs7O0s7SztLLHlCLHdCO0s7STs7Szs7TTtNO007TTs7OztPO1E7OztRO1E7Ozs7Ozs7TztPO08seUIsd0I7TztnQjs7OztPOzs7Ozs7O007TztPO087TztPOzs7Ozs7OztVO1c7Ozs7Ozs7Ozs7OztXOztXO1U7VTtVO1c7O1c7VTs7Ozs7VTs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7TTtPO087TztPO087Ozs7UTtTOzs7Ozs7Uzs7Ozs7OztVO1U7UztTO1M7VTs7VTtTOzs7Ozs7UTs7Ozs7Ozs7OztLLEksK0I7SztLOzs7SztNLG9CO00sTztLLE87STs7SyxXO0ssTztJOztLLFc7SyxPO0k7O0ssa0M7SztNLE07O007TSxPOzs7SztNO00sTzs7SztNOzs7Tzs7Ozs7Ozs7TztRO1M7Uzs7O1E7O087UTtROzs7Tzs7TTs7Z0MsdUM7Z0Msc0M7Ozs7USxJLHFCO1EscUI7O087OztXO1k7WTtZO1cscUI7VTtRLE87TyxPOzs7aUMsc0M7aUMsdUM7Ozs7TyxJLHVCO08sc0I7O007OztVO1c7VztXO1Usc0I7UztPLE87TSxPOztLOztNOzs7Ozs7TTtNOzs7Ozs7O1M7VTtVOztVLE87UyxPOzs7TztRO1E7O1EsTztPLE87OztLO007TztPOzs7Ozs7O0s7TTtNOzs7Ozs7OztLOzs7TTtNLE07a0I7O2dDO0s7O00sZTtNLEk7SztNO0s7SyxJOzs7O087Ozs7Ozs7Ozs7Ozs7OzJCOzs7Ozs7VztZOzs7Ozs7WTs7Ozs7Ozs7OzswQjs7Ozs7Ozs7OztVOzs7Ozs7Ozs7UztVO1c7Ozs7O1U7VTtVOztTOzs7OztPOzs7OztLOztNO007TSxJO00sTTtNO007TTtNOzs7SztNOztPO1E7Ozs7TyxjOzs7OztRO1E7Ozs7O2M7ZSwrQzs7O1E7OztPOzs7Tzs7Ozs7USxNO1EsTTtROzs7O1M7VTs7OztTO1UsSSxNOzs7Ozs7VTtVOzs7Ozs7O1c7Vzs7Ozs7Uzs7Ozs7TztRO1EsTzs7O1k7YTthO2EsUzs7O087Ozs7O1k7YSxPOzthLE87WTtZLFU7WSxPO1c7Ozs7O087O087Tzs7O087UTs7VyxNO1U7USxTOzs7VztXO1c7VTtPO087Tzs7TSxJLG1COzs7O0ssK0IsUzs7TTtPOztRLFE7OztRO21DLE8sYyxxQjtPLE87OztNO0s7SyxnQjtLO0k7O0s7TSxNO0s7TSxZO007OztLLE87STs7SztNLE07SztNLFk7TTs7O007O2dDOzhCLFc7SyxtQjtLLE87STs7Ozs7NkIsWTs7OztrQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFcsTzs7O0s7SyxXO0k7SSxROztLO0s7SztJO0k7SSxPO0c7O0k7OztnQixPOzs7Ozs7OztLO2lCOzs7Ozs7O0k7Rzs7SSxRO0ksTztHOztJO0c7OztJLFc7OztJLG9CO0ksTztHOzs7STs7Ozs7Ozs7Ozs7OztROzs7Ozs7OztROzs7UztROztROzs7O1M7UztRLE87Ozs7Z0I7O0k7RztHOztvQixPLGlDOztzQiw0QjtJLE87Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHOztJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUztLLFE7Ozt3QixPLGtDO0ksbUIsTSx3QztzQiwwQjtJLEk7O29CO3FDO2lCOzs7Ozs7Ozs7UyxhOztROzs7Ozs7NEI7O1E7Ozs7Ozs7O1E7Ozs7O1Msc0IsTztTLGE7O1E7Ozs7O1M7OztVLE87VTs7O1E7Ozs7Ozs7O1E7O0ksTztHOztJLFk7O0ksTztHOztJLFc7STtHOzs7STtLLE07O0k7Ozs7STtLLE07O0k7Ozs7SSxXLE07O0k7Ozs7SSxXLE07O0ksZTs7O3FCLGtCLGdDOzRCLHFCOztJO087SyxPO0ksVztJLE87RzswQixPLHlDOztJO0s7OztNOzs7SyxtQjs7SSxPO0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxJOzs7Ozs7O00saUI7TTs7STtJO0c7OztLO0ssWSxPOztLO00sNkI7TTs7OzsrQjs7O0k7SSxPO0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJOztLLGlDO0ssTztJO0ksTztHOzs7STtHOzs7SztLO29COzs7O087O007OztPOztVO1csTTs7VTtTO08sUTs7O1U7VTt5QjtXOzs7OztZLE07WTs7Ozs7O2M7O2U7ZSxPOzs7Ozs7Ozs7YSxJLDhCOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7VztXLEksa0I7Ozs7Ozs7VyxXO2M7WTtXLE07O1M7b0Msc0M7Tzs7Ozs7STtJO0c7O0ksMEI7SSxvQjtHOztJLFk7O0k7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOzs7SztLLGM7STtJLE87RztHOztJOzt5QixrQjs7STtJOzs7Ozs7NkM7O0s7O0c7O0k7Z0MsNEIsVztJLFU7STs7O2EsbUI7OztZO0c7O0ksWTs7c0M7STs7O0ssVzttQjs7O0ssTyxXOztJLE87Rzs7OztLOzs7OztNLFE7TSxVOzs7O3NEOzs7OztLOzs7TTtPLFc7a0IsNEI7SztJO0ksTzs7O0ksb0I7Ozs7TTs7Ozs7Ozs7Vzs7OztVOzs7Ozs7O1c7OztVOzs7O087cUM7Ozs7UTs7OztTOzJCOzs7OzttQjtROztTO1E7Ozs7O1E7UyxRLG1DO1M7O1M7UTs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHO0csYTs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7O0s7SyxXO0k7SSxXO0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7Ozs7Z0I7Z0I7ZTthOzs7O2lCOzs7O2E7OztnQixvQixPO2dCLE87ZTthLFE7YSxPOzs7Z0I7Z0IsTztlO2EsTyxXOzs7Z0I7Z0IsZTtlO2E7ZSxXO2EsUzthLFc7bUM7YTtlOzs7Z0I7Z0I7aUI7OztxQixlO29CO2tCOzs7OzttQjs7OzttQjs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCOzs7Ozs7d0I7MkMsTyxrQzs7Ozs7Ozs7MkI7OzRCOzZDO2tEOzs7Ozs7MEI7Ozs7MkI7Ozs4Qjs7Ozs7a0M7OzBCOzsyQjs0Qzs7NEM7Ozs7eUI7Ozs7OzBCOzJDOzs7Ozs7OEI7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs7OEI7Ozt1Qjt3Qjt3QixPOzJDLGM7d0I7dUM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjt3Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7O2lCOzs7O2U7YTs7O2dCO2dCO2U7YSxZLFc7YTs7YTs7O1k7b0I7OztXO1k7OztXOzs7Ozs7OztROzs7USxxQjtRLFc7Tzs7Ozs7TTtPOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7UztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WSxJOzs7VyxJOzs7Ozs7Ozs7UTs7OzthO2M7Ozs7O2UsTTtlOztlO2U7O2MsUzs7O1MsTztROzs7O2M7ZTtlLG1CLHNCOzs7aUI7OztROzs7O2M7Ozs7Ozs7Ozs7Ozs7OztPO1E7Ozs7O0k7Rzs7O0s7Ozs7Ozs7TztRLFE7USxLO087Ozs7O087OztrQztRLEk7Ozs7O007TyxJOzs7Ozs7Ozs7Ozs7TTs7USxNO08sVTtPOztNLEk7O0k7O0s7Ozs7Ozs7OztLLFM7SztNOzs7Ozs7TSxPO0s7Ozs7O0k7STtHOztJLFcsTTs7Ozs7OzBCO007Tzs7O1U7VTtXLE07VSxJOzs7UztPLFU7TywyQyxXO087Ozs7O00sWTtNOzs7VTs7Z0M7O2E7c0M7O1M7OztVOzs7VztVLHNCO1M7TyxPO087OztVO1U7UztPLFM7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJO3lCLGtCLE8sMkI7SSxZOzs7Ozs7O0ssYTs7OztJO0c7OztLOzs7OztNO00sTTtNLFc7TSxPOztLOztlOzs7Ozs7O0ksTztHOzs7Szs7Ozs7TSxNO00sa0I7O0s7Ozs7Szs7O007b0I7O2dCO0ksVztJLGlCO0c7aUMsVzswQyxXOztJOzt5RTtLO0s7SyxNOztJOzs7YyxhO2E7Ozs7O0c7O0k7eUU7SSxNO0c7O0k7OztLLE87O0ksTTtHOztJOztHOztJO2tDOztLLE07O0k7RztHLG1COztJOzthO2MsWTtjLE07YyxROztjO2UsTztlLE87YyxPOzs7YSxJLFU7Ozs7O2M7ZSxPO2UsTztlLE87ZSxPO2MsTzs7O2EsTzs7RztHO0k7O0k7O0k7Ozs7Ozs7Ozs7O0k7O0c7O0k7O007TyxVO087Tzs7TztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO00sUTtNO00sTTs7O1M7UTtNOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLEksOEI7Ozs7Ozs7O0k7Rzs7SSxXOztLO0s7SztJO0k7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7OztlO2U7Ozs7Ozs7YztjLE87YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7O0s7SyxnQjtJO0k7SyxPO0ssTztLOzs7SyxTO0k7Ozs7O0s7SztJO0ksVztJO0c7O0k7STs7Ozs7TyxTO1E7TyxJOzs7O0s7O0c7OztLO0ssTztJO0ksVTtJO0c7O0ksWTs7STs7Ozs7O0ksWSxPOzs7O0s7Ozs7OztJOzs7STtLO0s7Ozs7O0ssUTtNO087O1c7Ozs7TztPO007Ozs7OzRCOzs7OztrQjs7SztJO0ksTztHOytCLHVCOztJO0c7O0k7OztLO00sVzs7O0ksVztJLE87RzswQix3QjsrQix1Qzs4Qiw4Qzs7STtHOzZCLFc7dUMsK0I7O0ksSSxZOzs7O00saUI7O007Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLLE8sNkI7STtJLE87Rzs7STtJO0s7O00sUTtNOzJCLFEsOEIsUzs7Ozs7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7VTs7Ozs7VztVO1c7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7ZSxNOzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7ZSxpQztLO00sTTtLO007aUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7SSxPO0c7O0ksWSxPOzttQjs7Ozs7Ozs7STtHOztJLFk7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTs7UTtRO1MsTztTLE87USxPOztJO0c7Rzs7STs7aUI7Szs7Ozs7OztNOzs7O1U7Vzs7O1k7OztXLEksWTs7O3FDOzs7VyxlOztVLE87Uzs7OztNLE87TSxNO0ssSSxVOzs7O00sSTs7O0s7OztNLFE7Ozs7O087UTtRLDBCO1EsTztPO2U7Ozs7OztNO087Tzs7O2Esc0I7Ozs7TztPOzs7OztHOztJO0ssVztLOzs7OztPLG1CO087O3FCLEk7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7Ozs7Tzs7O1E7Ozs7Tzs7O21COzs7OztJO2lCLE87SSxJO2dCLE07O0k7Rzs7Ozs7OzZCLE87O1E7OztTLHNDO1MsUzs7Ozs7Ozs7OEIsOEI7USxPOzs7OzhCLDhCO1EsTzs7Szs7OztJOzs7O1E7a0I7Ozs7Ozs7OztTO1U7Ozs7VztVOzs7Ozs7Ozs7Ozs7UztVOztXO1U7Ozs7OztPOzs7O1E7UTtRO087OztRLFc7O08sTzs7SSxPO0c7O0k7Z0IsTzs7STtHOzs7STtJOztNLE87SyxJLFk7Ozs7MEIsTTs7Ozs7Ozs7Ozs7Ozs7O2tCO007Ozs7O087OztNOzs7O08sSSxVOzs7O1E7Uzs7Ozs7O087OztRO1E7Ozs7Ozs7Rzs7STs7Ozs7TSxLO087TTtPOzs7TTtpQzs7Ozs7STs7Ozs7O2M7OztHOztJLHFCOzs7SyxNO0k7Ozs7O0s7Ozs7Ozs7OztRLDBDOzs7Ozs7Ozs7OztpQjs7Ozs7O0k7OztLO0s7SSxvQjtJO0ssUTtLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjtxQixvQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7O1U7OztXOzs7Ozs7Yzs7ZTs7Yzs7ZTtnQjs7O2dCO2tCO2dCOzttQixZO21COzs7OztvQjs7O21COzs7Ozs7bUIsTTs7a0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQixNOzs7Ozs7Ozs7O2dCO2lCLE07OztvQjs7O3FCLE07b0I7Ozs7bUI7aUI7bUI7Ozs7O2U7OzttQjs7O29CLE07bUI7Ozs7a0I7Z0I7a0I7ZTs7YztlLFM7Ozs7OztlOzs7bUI7bUI7a0I7Z0I7a0I7O2dCLE07ZTs7Z0IsbUMsbUI7Z0I7O21CLE87Ozs7Ozs7OztrQjtnQixPO2dCLE87Z0IsWTtnQjtrQjtnQjtzQywrQjtpQixZOzs7O2dCO2lCOzs7aUI7Ozs7Ozs7O3NCO3VCOzt3QjswQyxPLGdDO3dCLE87dUI7dUIsTyx5Qzs7O2tCLFU7OztpQjtrQjt5QzttQjs2Qjs7Ozs7OztnQjtpQjs7O29COzs7OztxQjs7cUI7b0I7b0I7cUIsVTtxQjs7cUIsVTs7cUIsTzs7K0I7Ozs7b0I7b0I7b0I7bUI7aUIsVTs7Ozs7O2dCO2lCOzs7Ozs7Ozs7Ozs7YztlO2lCO2U7O21COzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQjs7Ozs7O3FCOzs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7aUI7OztrQixROzs7O2dDOzs7aUI7OztxQjtxQixjO29CO2tCLFM7OztxQjtxQixjO29CO2tCLFM7a0IsTztrQjs7O2tCLFM7aUI7Ozs7OztpQjs7O3FCO3FCO29CO2tCLE87OztxQjtxQjtvQjtrQjs7O3FCOzs7Ozs7OztrQjttQixJOzs7c0Isa0I7a0M7O3NCO3VCLEksTzs7Ozs7Ozs7c0IsTzs7a0I7a0I7a0I7bUI7bUI7OztzQjs7OztxQjtrQjs7bUI7Ozs7dUIsb0I7bUM7OztzQjtvQixTO29CO29CLE87O29CLE87Ozs7OzRCOzs7Ozs7Yzs7Vzs7O2U7YztjOzt3QixvQjs7Ozs7O2lDOzt3Qjs7OzswQjs7Ozs7eUI7eUI7d0I7MkM7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7Ozs7Ozs7VTs7Vzs7Yzs7O2U7OztjOztpQjs7O3FCOztzQixNOzs7cUI7b0I7a0I7b0I7Ozs7Ozs7Ozs7O2lCOzs7cUI7O3NCLE07OztxQjtvQjtrQjtvQjs7Ozs7O2lCO2tCOzs7cUI7cUI7c0IsTTs7O3FCO29CO2tCLEs7a0I7Ozs7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOztVOztvQjs7Ozs7Ozs7VTs7O29CLFk7b0I7OztzQixXO3NCLE87OztzQixNOzs7cUIsTzs7b0I7cUI7O3NCO3NCLFE7O3NCOzs7OztxQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7OztzQjtzQixPOzs7c0IsTTs7cUI7O3NCO3FCLE87O29CO3FCOztzQjtzQjs7Ozt1Qjs7d0I7OzsyQjsyQjs0Qjs0QixNOzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjswQjt1Qjs7O3FCLE07OztvQjs0Qzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Yzs7O2U7YyxHO2U7Z0IsTzs7O21CLGtCLFE7Ozs7Ozs7bUI7a0I7ZTs7Ozs7ZTtjO2M7ZTtlO2lCO2U7OztlOzs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7Ozs7Ozs7O2lCOzs7OztpQjs7Ozs7O2tCLE07aUI7Ozs7Ozs7Ozs7aUI7Ozs7aUI7Ozs7Ozs7Ozs7ZTtnQjs7Ozs7Ozs7Z0I7Ozs7OztjOzs7Vzs7OztlLFk7ZTs7Ozs7OztnQjs7Z0I7Ozs7aUI7aUI7aUIsTztnQixTLDZCO2dCLFU7Z0I7aUI7O2tCO2tCOztrQjs7cUIsb0I7cUI7O2lCOzsyQjs7Ozs7OztnQjtpQjtpQjs7Z0I7OzBCOzs7Ozs7O2UsTTs7Yzs7VTs7b0I7Ozs7Ozs7O1U7VyxPO1c7O2M7OztlOzs7ZSxTO2U7OztlO2lCOzs7Ozs7Yzs7Vzs7d0M7Yzs7d0Isb0I7O3lCOzswQjs7OzZCOzs7Ozs7OzRCO3lCOzt3QixNOzs7Ozs7Ozs7VTs7b0I7Ozs7Ozs7OztHOzs7STtLLFE7OztLOzs7STtHOztJO2tEO0k7Rzt3QixPLHlDOztJOzs7OzZCLDBDO0ssTzs7STtHOztJLE87Rzs7SSxZOzs7OztTOzs7VSxPO1M7VSxXO1U7Ozs7O1M7UTtLLEssaUQ7O0k7OztJO0s7Rzs7O0k7SztNO00sVTs7O0ssc0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJLFU7Ozs7TSxNOzs7O0ksd0I7Ozs7SztNLE87TSxPO00sUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7STtLO0s7SztPO21DLG1CO0k7Ozs7Ozs7O2M7O2E7Rzs7STs7Rzs7STs7Rzs7STs7Rzs7STs7Ozs7UTs7O1E7O3NDOzs7Ozs7UTs7Ozs7OzthO2E7WTtZLE87Vzs7UyxzQjtTLE87Uzs7UztROztROzs7OztTLHNCO1MsTzs7O1k7WTtXO1E7O2dCOzs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7a0M7O0ssbUIsSTtLOztJO0s7SyxTO0ssWTs7SztLLGU7STtJLHFCO3lCLG1CLFU7STtLLGM7Szs7OztXOzs7Ozs7Ozs7OzswQyxrQztnQixPOzs7Ozs7Ozs7Z0IsTzs7Ozs7VyxjOzZCLGUsMkI7VyxnQjtXOzs7b0I7OztVO1U7VztXLGM7VTs7VyxPOztVOztXLE87O1U7aUI7VSx1QixXLGdDO1U7OzBCOzs7Vzs7VSxPOzs7Ozs7Rzs7STtLLE87OztTOzs7O3NCLHVCO0ksSSxPOzs7Ozs7Ozs7Yzs7Ozs2Qjs7YTtHOztJO2tDLE87dUIsTTs7STtHOztJOztLO0s7STtJLEksTzs7SztpQixPOzs7b0I7Ozs7TSxXO007O007TyxNO2lCOzs7TSxNOztLO0k7SSxXO0c7O0k7O087Ozs7O1E7OztXOztRLE87Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJLGU7eUIsa0IsYztJO0ssVztLLE87SztLO0s7SztPLG1DLGlCO0s7Ozs7Ozs7Ozs7O1U7VSxvQjtVO1csZTtXOzs7VyxPOztXLG1CLE87O1c7VTtVLFU7NEIsdUI7VTtXLE87Vzs7VztXO1U7VTtXLGE7VztXOzs7Z0I7aUI7Ozs7a0I7Ozs7aUI7OzJCOzs7Ozs7OztnQjs7Ozs7Ozs7VyxPO1U7a0I7O1M7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksUzs7Ozs7Ozs7O0k7O0s7TSxJLGMsMkM7Ozs7O08sUztPO087OztJO0c7RztJO0k7STtJOztJO0k7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLGtDO2EsVTs7Ozs7Ozs7O007O0s7O0c7O0ksc0I7O0ssbUI7SztNLFE7TTtPLEksZTs7Ozs7Tzs7OztNOzs7OztNOztNOzs7STtHOztJOzs7O0c7cUIsd0I7RyxxQjs7SSxJLFE7OEIsbUM7SSxhO0k7STtHOztJO0ssTTs7SyxNOztJLFc7Ozs7Szs7TTs7Ozs7Ozs7Ozs7TTs7O0k7SztpRCwyQjs7O0k7Rzs7SSxxQjs7SyxNO0ksc0I7O0ksSSxROzs7Ozs7Ozs7Ozs7O0k7NkIseUI7RztHO0k7STtJO0k7O0k7STtHOztJOzs7O1M7OztTLEksUyxrQjs7VTs7Ozs7Ozs7O1M7UyxlO1M7UTtLLE87OzswQixPO3dCLE8saUI7SSxPO0c7O0k7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7cUI7O0s7O0k7Rzs7STs7Ozs7OztvQjs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7SztJO0c7O0k7Rzs7cUIsMkI7STtLLFE7OztJOzs7O007Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7O1EsTzs7OztLLFc7Rzs7STtLLGlDO0s7SyxPLHFEO0c7O0k7Ozs7OztLOztJO0c7O0k7Ozs7Ozs7SyxJLFE7OztnQzs7O0s7O0k7Rzs7STtLOzs7STs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztLLFE7SyxnQixPO0s7TSxNLFc7TSxNLFc7TSxNLFc7Szs7STtJO3VCOztrQjtJLHFCLFU7a0I7O0k7Rzs7SSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7OztJLFU7STs2QztJO0k7Rzs7SSxXOzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtHOztJO2U7Ozs7Ozs7STtHOztJOzs7O0ssTzs7STtHOztJOzs7O0ssTzs7STtHOztJOzJCLE87STtHOzs7Ozs7OztJLE87OztJO2tEOzs7O007Ozs7Tzs7TTs7O007TTtNOzs7STtJO0c7O0k7d0I7Ozs7c0I7TTs7O007OztJO0k7Rzs7STttQjs7OztzQjtNOzs7TTtNO007OztJO0k7Rzs7STtLOzs7SztJO0c7OztLO007OztNOzs7TTs7Ozs7Tzs7Ozs7Ozs7TTtPOzs7Ozs7Szs7Ozs7Ozs7STtJO0c7O0k7Szs7O0s7STtHOztJO0s7Ozs7TTtLO0k7STtLLFE7OztJOzs7Ozs7OztLOztNOztLOzs7Ozs7O1U7Ozs7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O00sTzs7O2lEO0ssTzs7STs7Ozs7Ozs7dUQ7O0ssTzs7K0I7OztJO0s7SztLOztLOzs7O007SztJO0ksRzs7O3NCO007O087OztVOzs7Ozs7Ozs7Ozs7OzthOzs7O3NCO007Ozs7Ozs7Ozs7TTtNO007OztNOzs7STtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7SztJO0c7O0k7SztJO0c7RyxzQjs7STtHOztJO29DLHNCO0ksTztHO0c7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssVztLOzs7Ozs7OzJCOztNLE07Szs7Rzs7STs7Ozs7O087USxTO1EsTztRLE87UTs7aUI7OztPOzs7O0s7O0k7Rzs7STs7Ozs7Ozs7Ozs7NkI7Ozs7NkI7Ozs7OEM7O0s7O0k7Rzs7SSxZOztLOzs7O00sVTs7Ozs7Ozs7O0k7SztLOzs7Ozs7O1k7Ozs7YSxPO2EsUTtrQyx5QjthLFM7WTs7O1k7Ozs7YSxVOzs7O3VCOzs7WTs7Ozs7Ozs7Ozs7O21COzs7Ozs7WTs7OzthLCtCOzs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7Ozs7WTs7Ozs7YSxVOzs7MkI7WTs7Ozs7WTs7Ozs7YSxVOzs7K0I7WTs7O1ksdUIsVTs7Ozt5Qjs7O1k7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O1UsUzs7Uzs7Vzs7O1k7cUI7VSxPOztvQjs7O3NCOzs7d0I7OzswQjs7OzRCOzs7O1M7Ozs7STtHO0c7SSxhO0ksb0I7SSxtQjtJLGdCO0k7TTtJO007SSxpQjtJO007STtNO0ksZ0I7STtNO0k7TTtJLG9CO0k7TTtJO007SSxtQjtJO007STtNO0ksZTtJO007STtNOztJOzs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7OztHOztJO0ssTTtLO0ssUTs7OztLO087O1U7O0k7O087O087O087USxXO1EsTztPLEc7UTtTLE87dUI7OztPOztPO2dCO087O087Ozs7Ozs7OztPLGlCO087O0c7RztJO007SSxVOztJLE87Rzs7SSxPO0c7O0k7Ozs7Ozs7OztTOzs7VSxPOzs7VTs7Ozs7Ozs7Ozs7VyxNOzs7O1M7Ozs7Ozs7Ozs7Ozs7OztTLE87Ozs7Ozs7Uzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsVzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O007Ozs7O3FCO1M7Ozs7USxPOzs7MEI7Ozs7Ozs7O1UsbUI7VTs7Ozs7Ozs7Ozs7O1csRzs7Ozs7O1U7Ozs7OztXLE07Ozs7Uzs7Ozs7bUI7O1MscUI7Uzs7OztJLE07dUI7Rzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7OztJO2EsTTtJO0c7O0k7Szs7UztLOztJO0ssVztLO0ssZTtJO0k7eUIsbUIsZTtJO0ssTztLO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7O0k7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzs7USxNO087STtVOzs7SyxXO0ssTztJO0k7SyxTO0s7Ozs7TTs7TyxPO2M7O2lCOzs7O2dCO0ksSSxNLDZDOzs7Ozt1Qzs7Szs7Ozs7O0ksTztHO0c7O0ksbUIsTTs7STtHOztJOzswQzs7SSxPO0c7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztJO0ksTztHOztJOzs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthO2M7Yzs7Ozs7Ozs7Ozs7Ozs7O1E7UTs7OztNO087USxRO1E7USxNO1EsTztROzs7VyxXOztRLFU7Ozs7Ozs7O1E7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7O087Ozs0Qjs7Ozs7Ozs7Ozs7Szs7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SztLLFE7Ozs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOztJLFk7WSxPO0k7OztLOzs7STtHOztJO0k7Ozs7OzRCLE87OztTOzs7O0s7O0c7O0k7Ozs7O1EsTzs7USxPOztRLE07MkI7O0ksTztHOztJO0k7SyxPOztJO0c7O0ksaUIsTztJOzs7Ozs7OztJO0s7NEI7SyxPOztJO0ssTzs7O0k7Rzs7OztLLE07Ozs7TztnQjs7Ozs7OzJCOztPOzs7O1E7Tzs7Tzs7OztRLG1DO1E7Ozs7O2E7OztjLGM7YTs7WTs7Ozs7OztRLFE7UTtVOztPLE87Ozs7Ozs7Uzs7Ozs7VTtvQjs7OzZCLDZDO1UsRztXO1k7Ozs7O2U7O2dCLE07O2U7YztZLFc7WTtZOztZLE87WTtjOzs7Ozs7Ozs7O1cscUI7VztZLFU7OztZLFU7OztZLFU7OztZO1c7Ozs7Ozs7Ozs7c0I7Ozs7Ozs7Tzs7USxVOzs7USxVOzs7USxVOzs7UTtRLE87Tzs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7OEI7VztZLFE7OztXOzthLE07WTs7YTs7WTs7OztZO1k7OztXO1ksTTtXLFU7Vzs4QixlO1ksaUI7VztXLGU7Z0MsbUIsVTtXLFU7O1k7WSxlO1c7VztZLFk7WSxPO1ksTztZLE87Vzs7WTtXO1c7WTtZO2tDLHlDO1ksTTtZO1c7Ozs7O1E7VTs7OztRLGtCO1EsWTtRLFk7OzsrQjtXO1ksTztZLEs7WSxzQjtXOzs7O29COzs7VTtROzs7Ozs7VTs7O2MsVztjLFc7YTtXLFU7a0MsbUIsZTtXLFE7VzthOzs7OztXLE07VTtXOzthOzs7Ozs7UztnQztVLE87VSxTO1UsSTtVO1k7Ozs7OztTO1UsTTtTO1U7O1k7Ozs7Ozs7Vzs7OztXO1U7TyxPOztPOzs7USxLOzJCLDZCO1EsVTtRLHNCO1EsTztRLE87Tzs7Tzs7UTs7O087UTsyQjtROzs7OztTOzs7aUI7Ozs7Tzs7O1E7Ozs7Ozs7O2lDLFc7OztZO2E7OzswQjthOzs7OztjOzs7c0I7Ozs7WTs7OzthLE87YSxRO1k7Ozs7O3NCOzsrQztRLE07OzhDO08sTTs7TyxvQyxNO08sWSxXO08sc0I7TztROztTLHNCO1E7Ozs7O1EsVztROzt3Qjs7OztPOzs7Ozs7O1E7O1E7UyxVOzs7O1ksd0I7Ozs7YTtjOzs7Yzs7aUIsTTs7O2lCO2tCLE87Ozs7YTtjLE87OztZLFc7WTs7Ozs7OztRO1MsTTtROztTO1c7UyxPO1E7Ozs7Ozs7Ozs7TztRLFU7OztXO1c7WTs7YSxlO1k7O1c7OztZLGE7OztZO2E7OzthOztnQixNOzs7O2tDOzs7Z0M7O1c7Ozs7b0I7O1U7USxLO1EsTztRLFc7Ozs7MEIsZ0Q7USxNO087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVzs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtROzs7VztXOzs7VTtRLE87Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7OztVLGE7VTtVOzthOzs7O1U7aUI7Uzs7OztROzs7O1MsUTtTO1E7Ozs7aUI7Ozs7TztRLE87O087O087OztRO1E7Tzs7Ozs7O1E7OzBCO08sSSxpQztPOztPLG9CLFc7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1E7USxlO1EsSztRLE87Tzs7Tzs7O1E7USxPO08sTzs7Ozs7Ozs7TyxPOztPOzs7Ozs7Ozs7O1csWTtXOzs7WSxVO1ksVzs7OztZOztnQjs7Ozs7WTtZOzs7OztnQjs7OztZLE07WTtXLE87Ozs7O1E7O1k7Ozs7O1E7USxjOzs7Vzs7Ozs7Ozs7VTtROzs7Ozs7O1EsUztRO1U7O087Ozs7Ozs7a0I7Ozs7O087OztRLE87TyxPOztPLG1DOztRO1MsTzs7UTs7TztRLE07USxPO1E7OztXO1c7Ozs7Ozs7O3FCOzs7VTtpQjtPOzs7O2U7Ozs7O0k7OztJOzs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLG9CO0ksTztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJOztLO0k7STtLO0ssMkIsNEM7SSxPOzs7STtJO0k7Ozs7O0s7O1E7Ozs7O1MsTztROzs7USwyQjs7Ozs7Ozs7O1M7Ozs7aUI7Ozs7O0s7STs7Ozs7aUM7TyxtQjs7OztPOzs7UTtROztXOzs7Yzs7YyxTOztjOztVOytCLG9CLFc7TyxHOzs7Ozs7OzsrQjs2QjtPO1E7OztXO1csb0I7VyxXO1U7USxNO1EsUztROzs7Ozs7O1U7Ozs7OztXLE87YTs7O2M7Ozs7Ozs7Ozs7Ozs7O1c7OztPO1E7OztXO1c7VTtPLE87O007Ozs7Tzs7Ozs7O0ssZ0MsTztLLG9CO0ssVztJO0ksMkI7Rzs7O0ksZ0I7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7USxHO1M7VSxPO1UsYztVOzs7Ozs7Ozs7Ozs7O1M7O2lCOzs7Ozs7Ozs7b0I7UTs7Ozs7Szs7O0k7Rzs7O0k7Ozs7OztPLFU7VTtRO1M7VSxPOzs7YTthLFc7WTtVLGlCO1M7VSxNO1M7Ozs4Qiw4QztVLG1COzs7YTs7YyxVO2MsTzthO2EsTztZO1UsUTs7O2EsVztZO1UsVTs4QjtVLFM7Z0MsNEM7VSxpQjs7O2E7YTtZO1UsTTtVOzs7YTtTOzs7OztVOzs7Ozs7OztJOzs7OztJO0s7OztNLE07OztTLG9CLE07UyxPO1E7YTs7O29CLDZCO0ksWTtJLGtCO0ksVTtJOztZOztHOzRDO0c7O0k7Ozs7OztJLFk7OztLO00seUI7O0k7Rzs7STtJO0s7OztTLG9COzs7O2dDOztzRTs7O1MsTTtRO00sUzs7O1M7Ozs7O1U7VSxRO1M7O007UTtLLHNCLDBCOzs7SyxZLHNCLFk7Szs7Ozs7OztNO00sUTtNO0s7TTtNLE8seUQ7STtJO0c7O0k7SSxlO0c7O0k7YztjOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7OztNOzs7OztPLE87TyxPO1U7TyxXO08sTzs7OztJLE87Rzs7O0k7OztJLE87Rzt5Qiw0Qzs0QixPLGlDOztJLGMsVzt1QixnQjtJLGtCO0ksTztHOztJOzs7O3lCO0ksZTtHOzs7Szs7O007O0s7Ozs7d0I7O0k7SSxPO0c7Ozs7SztLO0k7STs7Ozs7YTs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjs7OztZOzs7O2E7OztlOztnQjs7Ozs7OztvQyxrQjs7OztlOzs7OztnQjs7Ozs7OztlOztZO1c7UyxVOzs7Ozs7WTtZOztXO1MsYTtRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7Uzs7OztZOzs7OzthOzs7ZTs7OztnQjs7Z0I7OzttQjttQjtvQjtxQjs7O2dDO3FCOzs7OztvQzs7b0I7Ozs7MkM7OztrQjtnQjs7Ozs7OztxQjs7Ozs7Ozs7ZTs7ZTs7OztnQjtlOzs7O2dCOztpQixXO2lCO21CO2dDOzs7aUI7OzRCO2tCO21CLE87bUIsTTs7Ozs7Ozt1Qjs7Ozs7OztnQjs7O3dCOztnQjs7O3dCOzs7OztlOztnQjs7O21CO2dDO2U7Ozs7OEI7Ozs7O2U7O1k7VztTLFU7Ozs7O1M7O1M7c0MsNkI7UyxRO1MsTTtTLFE7Ozs7VTtXOztjO2M7Ozs7OzRCOzs7a0I7Ozs7Ozs7UyxJLE0sZ0M7Ozs7VTtXO2lDO1c7OytCOzs7O1M7VSxPOzs7YTthO2E7WTtVLE87O2dDO1U7Ozs7K0I7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7OztZLFc7VztTLGE7UyxnQjs7O1M7OztROzs7Ozs7Ozs7O1E7Ozs7Ozs7OztTLEs7VSxNO1M7VSxNO1UsTTs7Ozs7YTthOzs7Ozs7WTtVLFk7OzthO2E7Ozs7OztZO1UsWTtVO1U7O1UsK0I7VSxPO1M7Ozs7Ozs2Qjs7Ozs7O1k7Ozs7Ozs7Ozs7VztRLFM7UTtTOzs7O29COzs7O1E7Ozs7dUI7Ozs7Ozs7STs7Szs7OztNOzs7Szs7O2M7YyxPOzthOztJLGlCLFM7STtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLO007OztTO1U7OzthLFc7O2E7Ozs7Yzs7ZSxLO2tDLFcsK0I7YyxPOzs7O1U7O1M7O007Ozs7VSxrQjs7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7aUQ7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7Ozs7Ozs7O2UsRztnQjs7Ozs7VSxNO1M7Ozs7Szs7Ozs7Ozs7VztZO2E7OzthLE87YSxPO1ksVzs7VztZLEk7WTtvQjs7Ozs7O1UsSTtVLFc7Ozs7Ozs7OztVOzs7Vzs7Ozs7Ozs7O21CLEc7b0I7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtxQjt3QjtvQjs7Ozs7ZSxNOzs7VTs7O1EsTTs7Ozs7UyxHO1UsSTs7Ozs7Ozs7Ozs7Ozs7OzthLEs7YSxJO2E7cUI7Ozs7Ozs7WSxHO2E7Ozs7O1k7OzthOzs7WTtvQjs7Ozs7Ozs7O2E7OztjOzs7YTtxQjs7Ozs7OztLLEk7SyxXOztHOztJO0s7TSxhO00sUztNOzs7TTs7Ozs7O08sTTs7OztLO007OztNO1E7Szs7O007TyxNO08sVztPLFc7TyxRO08sUzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxHLDJDO0k7SyxXO0ssTTtLLE07SyxTO0ssVTs7O0s7Szs7O0ssb0I7SyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Tzs7NkIsbUI7a0I7Ozs7OztLO00sTztNLE87TTs7SztNOzs7Ozs7O2EsUTs7WTtTLE87Ozs7Ozs7Ozs7YTtxQjs7WTtTLE87Ozs7OzthO3FCOztZO1MsTzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLO0s7SztNLE87TSxPOztLO007UTtNLE87TSxPO29CO0ssSSxxQjs7TTtNO00sTztLO0ssTztJO0k7SSx5QyxXOztLOzs7Ozs7O1M7Ozs7VSxNO1M7OztVO1c7b0I7Uzs7bUIsTTtVO1c7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csbUI7Vzs7VSxNOzs7OztVO1csTztXO1c7YTs7Ozs7Ozs7VTs7Ozs7O0ssTTs7STtLO0ssTztLLFM7O0s7Ozs7Ozs7O0k7SSxJLFc7STs7O0s7OztNLFc7Ozs7STtLLE87SyxPO0s7SztLOzs7OztLOzs7OztLO007TSxNOztNOzs7STtLO0ssYTtLOzs7Ozs7Ozs7Ozs7O0k7SyxNO0k7SyxVO0ssTTtLLE07SyxhO0ssYTtLLGE7O0ssVztLLE8seUI7STtJO0ssYztLLE87SyxVOztLO00sUztNLE87SztNLE07O0s7STtJOztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7cUI7Ozs7OztLO007O1U7Ozs7Ozs7O00sSzswQixXLGdDO0ssRztNO087eUI7O007O087Ozs7O087Ozs7YTs7Ozs7Ozs7Ozs7O0s7OztLO007Ozs7Uzs7O0s7O0k7SyxTO0ssUzs7Ozs7Ozs7O0s7TTs7MEIsZTtzQjs7OztLO007OzBCLGU7OzJCO0ksVzs7SztLO0k7SSxnQjs7SztLOzs7O3dCOztJOztLLHFCLE87SyxPO0k7SSxnQjs7SztLO0k7SSxlOztLO0k7STtLO007TTs7OztZOzs7Ozs7O0s7TTs7OztNO21COztNOzs7Ozs7Uzs7O0s7O007Ozs7O1U7Ozs7Ozs7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7O2E7OztJOzs7SSxrQjtJLE87Rzs7STtHOzs7O0ksTzs7OztJLHVCOztJLFc7RztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QixzQjs7SSxXOztJO0c7O0ksVzs7SSxrQjtHOztJOztLO007TSxNO0s7STtJLE87Rzs7SSw4Qjs7Ozs7Ozs7O1k7OztXO1c7O1k7O1c7O3VCO1c7VTtPLE87O087OztRLFE7UTtRO1E7Ozs7Tzs7Uzs7O1UsVTtVO1U7VTs7Ozs7Ozs7O1k7O2E7YTs7Ozs7Ozs7bUI7Ozs7O2EsTzs7VztRLE87Ozs7Ozs7O08sTzs7Tzs7OztRLE07K0IsdUM7TyxPOztHOztJLEksSyw2Qjs7Szs7Ozs7O0ssSyxpQztLO00sTztNLE87TSxPO0s7Ozs7O3dDOzs7STtJO0ssUTs7O3VDO0c7O0ksMkI7Ozs7Ozs7Ozs7WTs7O2EsSzs7O2dCOzs7O2lCOzs7Z0I7ZTthLFM7YSxPOzs7Z0I7NEQ7Z0I7O2lCOzs7Z0I7ZTtZLFc7Ozs7Ozs7Ozs7WTs7O2E7WTs7Ozs7Z0M7OztNOzs7SSxPO0c7Rzs7STs7O0s7Ozs7STtHO0c7SSxXO0k7Ozs7Szs7Ozs7O1UsWTs7OzthOzthLE07OzthLE07OztTOzs7VTtVO3NCOzs7Ozs7Ozs7O2U7OztnQixPO2dCLFU7Ozs7O2dDOzs7bUIsSztnQzs7OztnQjs7ZTtlLE07Ozs7ZSxNOzs7O2M7Ozs7ZSxROzs7Ozs7YyxNOzs7OztlOzs7Z0I7O29CO2U7O2M7OztlLFE7Ozs7O2M7Ozs7ZSxROzs7OztjLHFCO2MsVzs7OztTO007TztROztRLFE7Ozs7bUI7UTs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7TTtPLFE7Tzs7O0ssVztLO0k7SSxpQjt5QixtQixVO0k7SyxPO0ssSzt5QixvQixXO0k7SyxPO0ssTTt5QixxQixZO0k7SyxPO0ssTzt5QixvQixXO0k7SyxPO0ssTTtLLEs7SztLLFM7Szs7Szs7TTs7OztVOztXLE07VSxrQjs7VyxNOztVO1M7OztNO087Ozs7OztVO1UsTTs7Ozs7OztTLEk7Ozs7TyxNOzs7aUI7Ozs7SztNO00sSSw2Qjs7OztROzs7Uzs7VTtTLEc7VTs7OztROzs7Ozs7Szs7TTtNOzs7Ozs7Ozs7Ozs7O0s7SztJO0ksSSw2Qjs7OztNOztPLE07a0I7TTs7Ozs7OztLO0s7Ozs7OztROzs7Ozs7UztROzs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7O0k7O0s7Szs7Ozs7O1E7Ozs7O087Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O3lCLG1CLGE7SSxVOztLOzs7Ozs7Szs7YTtJO0ksZ0I7Rzs7STtJO0ssc0IsTztLO0s7TSxNO007Ozs7UTs7OztpQjs7O1E7O1E7Uzs7O1k7Ozs7OztZO2E7O2E7OztjLHFCOzs7Ozs7Ozs7Ozs7OzthLFk7Ozs7Ozs7OztlO2dCLE87Ozs7OzRCO2E7O2dCOztjLE07aUM7YTs7Yzs7Ozs7OztZLE87YSxNO1k7Ozs7YTs7Ozs7O2MsVTtjO2M7YzthO1k7WTthO2U7OztZLE87Ozs7Ozs7O1c7USxPOztROzs7O1MsVTs7O1M7Uzs7Ozs7Ozs7OztTOzBCO1EsTzs7UTs7O1M7Ozs7OztRO21DOzs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87NEIsZTs7MEI7O087OztRLE87USxJO1E7O1c7OztVO1EsUTs7O1c7VztZOzs7OzthLE87WSxPOztXO1U7USxpQjs7O1c7VyxXO1U7USxnQjtRLFU7UTs7Ozs7Ozs7Ozs7Ozs7OztNOztLLHlDOzs7UTs7Uzs7OztRLGdCOztROzs7UztXO1MsTztTLGE7Uzs7Ozs7USxXOzs7UTs7Ozs7O1E7O1M7OEIsYztTLE07Uzs7OzthOzs7Ozs7O1E7Ozs7O1E7OztTO1M7Ozs7O1E7Ozs7O2lCOzs7Ozs7O1M7Ozt1Qjs7O1M7O1Usc0I7VTs7NEI7VTtZOzs7OztTO1U7Ozs7UztVOzs7OztvQjs7O1M7OztVOzs7O2M7Ozs7Uzs7a0I7Ozs7Ozs7USxJLGMsTztRO1EscUIsTztROzs7O1E7OzZCLGE7UyxPO1MsZTtTOzs7OztTOzs7O2MsUztjOztlO2U7O21CO2U7Yzs7O3VCOzs7O2E7OztROztRLG1CLE87O1E7UyxRO1MsTTs7O1k7OztZOzs7YTs7O1k7Ozs7Ozs7O3NCOzs7O1M7OztROzs7O1E7O1M7OztTOzs7O2E7Ozs7Ozs7UTs7UTs7UyxRO1M7UyxROzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1M7UTtvQjs7Ozs7Ozs7STtJO0s7Ozs7O29COzs7O0s7STtJOzs7SyxnQix3QztLLE87STtJO0ssTzs7O0ssa0I7STtJO0ssVztLLE87SyxhO0k7STtJO0c7OztJOztJO0k7SyxZO0ssUzs7SztJO0k7SyxROzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7UTs7UztTLE87USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87Ozs7Rzs7STtJO21CO0sseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSSx5QjtTLE87Ozs7Ozs7OztRLG1COzZCO1Esd0I7USxPOzs7Ozs7Ozs7O1U7O1c7VztVLE87Ozs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxJLHdCO1UsTzs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7USxtQjs7Uzs7VTtVLE87VSxPO1MsTzs7USxXO1EsTzs7UTs7UztnQyxtQixhO1MsTztRLE87Ozs7Ozs7O1U7OztXO1c7VyxPO1csTztVLE87OztRLEksd0IsTztRLE87Ozs7RztHOztJO0ssWTs7Ozs7Ozs7Ozs7OztRLG1DO1E7Ozs7O0ssTTs7Ozs7SztNLE87TSxPO0ssTzs7Rzs7STtLO0ssTTtJO0s7SztNOzs7Ozs7O1MsTzs7Uzs7OztVLE07Uzs7SztvRTtHOzs7STs7STtJO0ssWTtLO0s7STs7O29CO007OztPLFE7Tzs7Ozs7Ozs7O0s7O00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7O1c7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7OztNOzs7TztPLFU7TyxRO087Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRO1MsTzs7OzJDLFc7USxPOzs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VztnQyxjO1csUTtXO1c7O1c7OztVO2tCOzs7VTs7O1c7VyxNO1csUTtXOzs7VztVOzs7OzttQjs7Ozs7Ozs7OztlOzs7O2dCLE87ZTtlO2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7b0MsZTtnQjsyQjtlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFE7Vzs7O1c7VTs7O29CO3FCOztzQjs7OzBCOzs7b0IsTzttQjs7Ozs7O1c7O1k7O1ksUTtZO1ksUTtZLE87WTs7O2U7OztlOzs7Z0I7Z0I7ZTs7Ozs7OztZO1c7O21COztVLFc7O1U7VyxRO1csTTtXLFE7OztjOzs7Yzs7O2U7Yzs7Ozs7OztXO1c7VTs7OztrQjs7O1U7O1c7OztXO1c7OztVO2tCOzs7Ozs7Ozs7YTs7Ozs7O2MsTzthO2E7YztjO2M7O2tCO2MsUzs7O2lCOzttQjs7Ozs7b0I7b0I7O21DOztvQjttQjs7OzsyQjs7Ozs7Ozs7Ozs7aUIsTTs7Z0I7YTs7OztVO1csUTtXO1csUTtXOzs7Yzs7O2M7OztlO2U7OzhCOztjOzs7Ozs7O3VCOzs7VztXO1U7Ozs7a0I7Ozs7Ozs7TTtPO1EsUTs7O1E7UTs7Ozs7Tzs7Ozs7TztRLE87USxPO08sTzs7Szs7TSxvQjtNLE87Szs7TTtPO1EsUTs7Ozs7O1c7Ozs7Ozs7UyxNOzs7Tzs7Ozs7USxNOzs7Szs7TSwwQjtNLE87Szs7O007Ozs7OztpQjs7Ozs7O007Ozs7O08sVztPO007Ozs7O0s7TSxVOztNO0ssTztJO0ksTzs7O0k7SyxPO0ssUztJO0c7O0ksc0M7O0k7SyxlO0ssUztLOzs7O0k7O0c7SSxnQjtJO0k7OztJLDhCLE87d0I7O0c7O0ksSSxXLDhDOzs7NEIsTzs7O0c7O0k7STs7Ozs7Ozs7Ozs7RztvQyxxQzs7STtJOztJOztNOzs7Tzs7Ozs7Ozs7Ozs7OztVOztXLFM7VyxNOzthOzs7OztVOzs7O1U7O1c7Z0MsYztXLFc7VTtVO1csTzs7Ozs7VTtVO1csTzs7Ozs7Ozs7WTtZO2E7O2lCOzs7Ozs7Ozs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFc7VyxPOzs7OztnQixTOztnQjt5Qjs7OztlOzs7OztVLG1CLE87O1U7VyxNO1csTTs7O2MsWTtjOzs7ZTtjOzs7OztXOzs7O1U7O1c7OztVOzs7OztjOzs7VTs7VyxRO1c7VyxROzs7YyxZO2M7OztlO2M7Ozs7O1c7Ozs7O2tCOztNO0s7SztZO00sTTs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJLE87Rzs7SSxZOztJO0c7O0k7Z0I7OztNLE07aUM7O0k7Ozs7Ozs7O2U7O0c7O0k7Ozs7UTs7STs7OztHOztJO0ssVTtLLDhCO0ssWTtJOztLOztNOzs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07SztLOzs7VTs7Ozs7O1M7OztLO0ksVztHOztJO0ssa0IsTTtLLE87O0k7SyxPO0k7STtLLE07SyxNO0ssTTtJLE87O0c7OztJO0ssTTs7O0s7TSxNO00sTTtNLFU7SyxPO0k7STs7Tzs7Tzs7TztlOzs7O0ksWSxPO0k7O0ssVTtJLE87Ozs7SSx1Qjs7STtHO0c7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO0ssYSxXO0k7RztHOztJO0s7Ozs7SyxrQjtLO0ssWTtJOzs7OztZOztHOzs7Szs7SyxTO0s7TSxPO00sSTtLO0k7STtLLE8sVztLLFE7OztLLE87O0ssYzs7SztJO0ksTztHOzs2Qix3QjtJO0ssTTs7OztJO0c7RyxhLHVDLFM7OEIsTywrQjs7STtJOzthLGMsTzs7Ozs7dUIsVzt1QjtzQjtZOztHO3NCLHdCOztJLEk7eUIsUztJO0k7OztjO2E7Ozs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87O0ssVztLLFc7STs7STs7O2MsVztjLFc7YTs7Ozs7OztHOzs7O0ksbUMsUzs7STt5QixPLGMscUI7O0k7OztjLE8sYzthOzs7Ozs7Rzt3Qix5Qjs7SSxRLHFDLFM7O0kscUIsaUMsa0I7STtHOzs7SztLO0k7SSxPO0c7O0ksdUQ7STtHOztJLHNDO2dCO0k7O0ssUTtLLE87SyxPO0ssUztLO0s7SSxXOzs7STs7Tzs7Ozs7O1E7OztRO087O087OztROzs7Tzs7TywwQjtPLE87Ozs7STtLO0s7STtHOztJLFk7SSxvQjtJLGlCO0k7Rzs7SSxzQztnQjtJOztLLFU7O0s7O0s7O1Esb0I7Ozs7d0IsTTs7Ozs7Uzs4QixNOztTLEksa0I7Ozs7O1csVztXOztVLE07O1M7VTs7VSxVO3VCLE07Uzs7VSwwQixzQjtVO1U7OzthLDBDO2E7O1k7VTs7OztnQjs7O2lCOzs7Z0I7Ozs7Ozs7O2U7Ozs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTs7OztpQyw2QjtTOzs7UTs7Ozs7O1M7Ozs4QixxQztROztROzs7OztTOzhCLHFDO1E7O1E7OztTOzs7UyxxQiw2QjtROzs7Ozs7Ozs7Ozs7eUI7O1ksd0IsZ0M7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthOzs7Z0I7ZTtZOzs7Uzs7OztVO1Usc0I7VSxVO1UsNEIsMEI7VSwwQixZOzs7YTs7O2UsTTs7OztlO2U7Ozt1Qjs7YztlOzs7O1k7NEIsd0I7VSxvQjtTOztXO1k7YztZOzs7Ozs7Ozs7OzRCOzs7O1k7O1k7Ozs7O2E7Ozs7O2dCOzs7O2EsTTtZOzs7Ozs7Z0I7Ozs7NEI7NEI7MkI7O2U7Ozs7O3dDOzthO1k7OztzQixlOzt1QjtxQzs7d0I7Ozs7Ozs7Ozt3QixPO3VCOztzQjs7cUI7Ozs7Ozs7WTs7Ozs4Qiw2QzthOzs7OztZOzs7dUIsaUIsaUI7dUI7Ozs7MkI7dUIsTTs7O2dDOzs7c0I7Ozs7Ozs7UTtROztROzs7O1MsVTs7O1MsVTs7O1M7OztZOzs7OzthLFk7YSxZO2E7WTtXO1M7O1E7O1E7Ozs7O1MsVTs7O1M7OztZOzs7YSxRO1k7VztTO1E7O1EsMEI7UTs7UTs7OztTOztZO1k7VztTO1E7O1E7Ozs7Uzs0Qiw0QjtROztROzs7O1M7Uzs7WTtZO1c7UztROztROzs7UztTLG1CLHNCO1E7O1E7OztTLG9CLHNCO1E7O1EsNEIsb0Isb0I7UTtnQiw0Qjs7STs7SyxrQjtLLFk7STs7SyxrQjtLLFU7ZSxxQyxTOztLLDRCLGM7STs7O0ssVTtLOztJOzs7Ozs7SztLO087SztLLFM7SyxRO0s7OztLOztLO087Ozs7Ozs7O0ssUTtLO0k7OztJLGtCO0ksTztHO3VCLDRCLHdCOztJLHVCOzs7Szs7TTs7UyxPOztRO007O1MsVTtTLE87UTt3QixZO00sTSxXO00sTTsyQixlO00sTSxXO00sUyxXO0s7YTs7O0k7SyxPOztJO0k7SyxVO0ssTztJO29CLFk7STtLLE0sVztLLE07SyxXLFc7STtZOztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOzs7TyxHO1EsTTtPOztPOzs7Ozs7O1Esc0I7USxPO087O08sVztPLEc7USxNO087O087Ozs7OztRO087O087Ozs7O1E7Tzs7Tzs7O1E7OztXO1c7VTtPLFc7Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7OztPOzs7USxzQjtPLGM7O087Ozs7O1Esc0I7USxPOzs7O1c7VztVO1EsTzs7Ozs7VztXO1U7USxPO1E7Tzs7Tzs7Ozs7USxzQjtRLE87OztXO1c7VTtRLE87Tzs7Tzs7O1Esc0I7TyxlOztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7USxzQjtRLE87UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7OztLO0s7STtJLE87Rzs7STtJOzs7UTs7UTs7UTs7USxzQjs7OztVLFc7VTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7WTtZO1c7UTs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7UTtrRDs7O1E7a0Q7O1E7O1Msc0I7USxPOzs7UTs7OztZO1k7VztRO1EsMEI7USxPOzs7USxPOzs7UTs7Ozs7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztxQixnQyxrQjtJLE87Rzs7SSxvQjtJLE87Rzs7OztLOzs7Ozs7Ozs7Ozs7VzthO2U7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7O00sbUIsTztNLFMsTTtNO0s7SztLO00sTztNLE87TSxXO0s7TSxJLFcscUM7Ozs4Qjs7O0s7MEIsa0IseUI7SztNLE87TTt5QjtLO00sTztNLGU7TSxVOzs7TSxPO0s7SztNLFE7TSxTO3VCLGtCO0s7TSxPO00sWTtLOztJO0s7TTs7OztNOzs7O1U7O0s7Ozs7O007OztlOzs7O0c7OEI7RztJOzs7STtLLFE7SyxZO0ssVztLO0k7Szs7SyxXO0ssTztJOztLOzt5QixPOzs7O1M7OztVLFU7Ozs7O1U7Vzs7OztXOzs7Ozs7UyxPOzs7OztRO1EsTzs7OztTOzs7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7VTtVLGM7Ozs7WTs7YSxLOztZO1k7Ozs7VTs7Ozs7O0ssTztJOzJCLDRCOztLOztLOzs7STtJOztLOzs7Ozs7O1UsRztXO1ksSztZLE87WTs7WSxNOzs7MkI7Ozs7Ozs7UyxHOzs7Z0I7O0ssVzs7TSxrQztNO0s7SyxPO0k7SSxhO0c7O0k7OzsrQjs7Ozs7SSxJLG9CLFE7STtLLEksVyx5Qzs7OzZCOzs7STs7SyxZOzs7O2E7OztLO0ssTztJOzs7Ozs7O1M7Uzs7VSxzQjtTLE87Ozs7Ozs7Ozs7Ozs0QixrQiwyQjtTOzs7O1M7O1Usc0I7UyxPOzs7OztVOztXLFU7VyxVOztXO1c7Ozs7VyxNO1U7O1M7Ozs7NEIsa0IsMkI7Uzs7Ozs0QixrQiwyQjtTLE87OztTOzs7NEIsa0IsMkI7UztpQjs7O1U7Ozs7Ozs7O1M7UywwQjtTLE87Ozs7Ozs7VztXO1k7WSxPO1c7Ozs7Uzs7Ozs7OztTOzs7OztTO1M7Ozs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7O1M7Ozs7VTtVLHNCO1MsTzs7Ozs7aUI7O007Ozs7STtJLFk7Ozs7OztTOzs7Ozs7O1Usc0I7VSxPO1M7OztTOzs7Ozs7OztVO1MsTzs7O1M7Ozs7OztVO1M7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7O1M7Ozs7VSxzQjtVLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7OztTOztTOzs7O1U7Ozs7YTthO1k7VSxhOzs7O2E7YTtZO1UsYTs7VSxzQjtVLFc7Uzs7Ozs7Uzs7Ozs7VSxzQjtVLE87OzthO2E7WTtVLE87Uzs7OztVOzJCOzs7OztrQzs7O1M7O1Usc0I7VSxPO1M7VTtXLFU7Ozs7O2M7YyxXO2E7VyxLOzs7O2M7YyxPO2E7VyxNO1csTzs7O2M7YzthO1csTztVOzs7O2lDOzs7Ozs7OztXO1c7Ozs7O1M7OztVOzs7Uzs7O1ksTTtXO1c7Ozs7VTtVOzs7OztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7O1M7O1M7Ozs7OztVLHNCO1UsTztVO1M7OztTOzs7UztpQjs7O0k7Szs7O0ssTTtJO0ssSSxXLDBDOzs7NkI7OztJOztLO0s7SyxPO0k7O0s7TSxVOzs7Ozs7OztNO08sUTs7Ozs7Ozs4Qjs7OztJOzs7Ozs7NkI7O1M7O1M7Ozs7Ozs7OztjO2Msb0I7YyxPO2E7Ozs7Uzs7VTtXO3lCOzs7Ozs7O1M7Ozs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7Ozs7O2M7ZTtlLHNCOzs7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7aUMsa0Isd0I7Uzs7O2lDLGtCLHdCO1MsTzs7O1M7Ozs7YztlO2Usc0I7OztTO2lCOzs2Qjs7OztTOztVLHNCO1MsTzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7Ozs7Uzs7OztVO1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7STtJLGM7STtLOztNLGUsNkI7O0s7STtJO0s7O00sZSw2Qjs7SztJOzs7Ozs7O1MsSSxVLDJDOzs7Z0M7Ozs7Ozs7Ozs7O2M7Ozs7O2UsTztjO2E7Ozs7Uzs7VTtXO3VCO1c7O1k7Ozs7O1M7O1M7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7O1k7YSxNO2EsTTtnQjthLFU7YSxPOzs7Ozs7UyxPOzs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7OztTLGM7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhO1UsVztTOzs7OztTOzs7OztVLE07OzthO2E7WTtVLE07Uzs7O1MsZTs7Uzs7Ozs7O1U7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7Ozs7VSxtQjtVOzs7UztVO1U7Ozs7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzt5Qzs7Uzs7Ozs7O1UsTTtVO1M7O3dDOzs7Uyx5Qjs7O2lCOzs7STtLO0ssUTtLO0ssYTtJLFE7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7STs7O0ksdUI7OztHOztJLFU7Ozs7O0c7O0ksVTs7SztLO0ssTztJO0k7SSxVO0k7STs7O0c7Rzs7OztJLGtCO0k7STtLLGU7SztPLDJCO0ksRztLLE07STs7STs7OztNO08sTztPLE07O007Ozs7OztHO3VCLG9EOztJOztlO21COzs7O2lCLE07O0ssRztNO007Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7STsrQiwyQztJO0ssTTtlO2E7Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0ksbUI7O0ksTztHO0csSSxzQjs7SSxpQjs7Rzs7STtvQixXLHFDO3FCOztHOztJLEc7SyxPO0k7OztPO1M7Szs7UTs7SyxPOztJO0c7O0k7SyxXO0s7TTtPLGE7TztTO1k7Ozs7Ozs7OztLO2dCOzs7O08sSSxZOzs7O1E7O1MsTTtTLE07ZTs7Ozs7O08sWTs7OztROztTLE07UyxNO1MsTTtlOzs7Ozs7Ozs7OztJLE87Rzs7STs7OztHOztJOztpQjs7OztNLEcsdUM7TSxJOzs7TTs7O08sTztNOzttQztPOztNLEk7OztHO0c7O0k7O0ksaUI7O0ksTTtHOztJO0k7SztNLE07TSxLO0s7OztxQjs7Ozs7O007Ozs7Ozs7O0c7O0ksSSxROzs7MkI7OztJLE87Rzs7STs7SztxQjs7Rzs7STtLO0ssTTtLLE07SztxQjtJO0ssTTtLLE07c0IsZ0I7cUI7Ozs7Rzs7STs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STsyQixxQzs7Szs0QjtLO0k7O0s7O0s7STtJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0k7Rzs7SSxJLHlEOzs7O00sTTs2Qjs7O0c7O0k7RztHOztJO0k7Rzs7SSxJLHlEOzs7Ozs7Ozs7UTs7TSxZO2tCLE07O29CO00sdUI7TTtNOztLOztHOztJO21COztJO0c7O0k7SyxPOzs7SztLO0k7STtJO0c7O0k7SztLLEk7O0s7Ozs7TTtNO007TTs7Ozs7SSxPO0c7O0k7SSxPO0c7O0ksSSwwRDs7OztNO007TTs7Ozs7STtJO0ksb0M7Ozs7TTtNO007Ozs7O0k7STtJLG9DOzs7O007TTtNOzs7OztJLE87Rzs7STs7SyxJLEksTzs7OztlOztLO007TTs7Ozs7Ozs7STtJOztLLFM7O00sSSxRLGU7OzsrQjs7O0s7SztNO00sMkIsTywyQjtLLE87STs7OztLLE87SSxlOztLOztROztjO00sTTtLO0k7STtLO0ssMkIsTywrQjtJLE87Rzs7STtJO0k7O0c7OztLOzs7UTs7O1M7O1E7OztROzs7UTs7O1E7O0k7SSxPO0c7O0k7Ozs7OzRCOzs0Qjs7NEI7OzRCLE87OzhCOzs4QjtzQzs7O087OztRO1UsNEI7UTs7O1c7Vzs7O1U7TztPOztPOztRO1UsK0I7OztXLE8sK0I7VTtPO087bUM7O0c7O0ksSSxPLHVDOztLLHFDO0s7SztJO0k7O0k7Rzs7STtHO21DLHVCOztJO087SztJLEksTyx5Qjs7SyxxQztLO0s7STtJOzs7Rzs7STtLO007TyxXO08sc0IsTzs7d0IsTyw0QztPOzt5QixPLDRDOzs7Ozs7OztNLFM7TTtNOzZCLE8sMkI7TyxNO2tCOzt1QjtLLFk7O0s7OztNLFE7TTtROzs7SyxJLEksTTs7Ozs7O0s7SyxJLEksTTs7Ozs7O0s7Szs7Ozs7O0ssTzs7RztvQyw4Qjs7STtJLHdCO0c7O0k7SSxpQjtJO0c7O0k7O0s7d0I7O0s7STtJLE87Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCO0s7O00sVTs7O00sTTs2QjtLO0k7SSxPO0c7aUMsdUI7OEIsK0I7O0k7Szs7O0c7O0ksSSwyQjs7SztNLE07TTs7d0I7OztJO0k7STtHOztJO0c7O0k7Rzs7O0k7O3lCLE87OztPLE87OztPLE87OztPLE87Ozs7SSx1Qjs7SSxXO0c7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxVO0ssTTtLLE87YSw0QjtJO0ksTTtHOztJO2dCOztJLGtCO0ksTztHOztJLHdCO0c7aUMsdUM7O0ksSSxLLDRCO0k7STtJO0ksTztHOztJLFM7O0s7TTtNLFMsMkI7SyxLO00sTTtLLFU7O0ssTztJO0k7SztLOzs7Uzs7UTtJLE87Rzs7SSxTO0k7SSxVO0k7SztNO00sUztNLE07TSxNO00sTztpQjtLOztNO00sTTs7WTtNLE07SyxTO0s7TTtPLE07Ozs7Ozs7O0s7SyxLLDZDO0s7SyxNOztJLFc7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STtJO2U7STs7O2tCLFc7SyxRLFc7STtJO0c7O0k7OztHO0c7OztJLFM7STtLO2U7SyxHOzs7TSxVO00sRyxrQjtPLE07Ozs7Ozs7Ozs7Vzs7OztJO0c7O0ksYywrQjtHOztJO0s7Szs7O0k7O00sVTs7O08sVTtPOztNLFU7K0I7Ozs7TTtNLGE7TTs7OzZCLE8sOEI7ZTs7Ozs7SztLLE07O0k7d0Isb0Q7SSxPO0c7O0k7Ozs7MkI7O0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7O0k7STs7O007SztLLE8sVztJO0k7SztLLDBCLHNDO0ksTztHOztJO0ksa0I7STtHOztJO0ksa0I7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJLE87Rzs7STtJO0k7STtJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0ksTTtHOztJLFk7O0k7Rzs7SSxZOztJO0c7RztJO0k7STtJO0k7STtJO0k7STs7STtLLEc7TSxNO2E7TSxNO0ssZ0Q7Ozs7TyxZOzs7O1M7Ozs7Ozs7Ozs7O1E7Ozs7O08sTTs7O0s7Szs7Ozs0Qjs7O0c7O0k7ZTtJLFc7SSxPO0c7O0ksZTtJO0s7TSxNO00sTzs7Ozs7Ozs7SSxhO0k7STtHO0c7O0ksTzs7Rzs7STs7O08sTTs7Ozs7Szt5QixPLDhCO00sTztLOzs7OztLLDBCO0ssTzs7Rzs7SSxnQjs7SywwQjtLLE87O0c7O0kscUM7eUM7SSxvQjtJO0k7Rzs7STtLLFM7SyxPO0ssUTtrQyxPO0ksVztJLG9CO0k7STtHO0c7O0k7SyxPO0ssTztJLE8sVztHOzs7SywrQixTO0k7O0ssK0IsYTtJOzs7Ozs7Ozs7O1Esb0I7OztTLDBCO1MsTzs7Ozs7MEI7Ozs7VTs7VTs7VTs7VTs7Uzs7MEI7Ozs7O1U7O1M7O1E7Ozs7OztTOzs7OzthLFU7YSxvQjthO2E7WTtTOzs7O1M7Ozs7Uzs7VTs7O1UsTzs7Ozs7O1E7O3lCOztRO1MseUIsUztTO1M7b0I7USxxQjs7OztRLDBCO1EsTzs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOzs7UTs7O007TyxRO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOztTOztTLGM7dUI7Uzs7VSxPO1Usc0I7UyxPOzs7UyxPOzs7Ozs7OztTOztTOzs7O1MsYzs7Ozs7O1M7O1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7Ozs7O1M7Ozs7Ozs7Ozs7O1M7Ozs7OztVLGM7Ozs7OztVOztXLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs7USxPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7O1E7Ozs7SSxlO2U7O0ksb0I7SSxPO0c7O0k7Ozs7STs7Tzs7SSxHO0ssSSxTOztNOztPLE87TyxXO08sTztNLFc7TSxNOztLO00sTTs7OztLO007TztROztXOztXO1U7USxPOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7d0IscUQ7aUI7O0s7O007OztTLGM7Uzs7VSxhO1UsWTtTLE87O2lCOztLO0s7STtJO0k7SyxRO0ssRzs7O087OztRLFE7Ozs7Ozs7OztxQjs7O1M7VSxPO2lCOzs7OztPOzs7Ozs7VSxJLGM7Ozs7WSxNOzs7cUI7Ozs7VTtXLEk7O1c7WTs7Ozs7O1U7VyxNOzs7Ozs7O087USxNOztPO1EsTztRLE87Ozs7Ozs7O087Ozs7Ozs7Ozs7O1U7VTtTO007Ozs7Ozs7SSxXOztJLFc7OztHOztJO0k7SyxNO0ssTTtJLE87RztHOztJO0s7SyxNO0ssTTtJLE87RztHOztJOztHOztJOztLOztPO1k7TSxHO00sRzs7Ozs7O0k7RzsyQiw0QjsyQiw0Qjs7STs7O0s7OzRCLDRCO00sTTtZO007Ozs7Ozs7O1MsbUI7O1MsTztRO1k7OztJLFE7SSxVO0k7Ozs7Ozs7O007TTtNO007O08sVTs7O0s7Szs7OEI7OztRO1E7UTs7O1M7O1UsVTs7Ozs7Ozs7O1E7Ozs7Ozs7aUI7UyxNOzs7OztROztVO2U7O1c7Uzs7VztnQjtVOzs7ZTs7OztVLGM7Ozs7Vzs7VTs7YTtVLE07Ozs7Ozs7OztROztTLE07Ozs7UTs7UyxNOzs7OztJOzs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7O0k7STtLO1k7Szs7Ozs7TTs7TyxZO08sTSxXO08sTTtPLFk7TTtNLE07OztLOztNLE0sVztNLFksVztNLFc7SztLLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLCtDOztJLDhCO0c7O0k7Rzs7STtHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzt5QixTO0ksaUI7STs7OztHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7Rzs7RztJOztHO0c7STs7RztHO0k7O0c7RztJOztHO0c7STs7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7Ozs7MkIsUzs7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7MkIsNkM7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7SSxNOztHO0c7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJLDBCO0c7O0k7OztZO0c7O0k7Rzs7SSxvQztHOztJOzs7WTtHOztJO0c7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG1EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt5QixvRDs7STtHO3VCLGtEO3VCLGtEOztJO0c7dUIsa0Q7d0IsbUQ7eUIsb0Q7eUIsb0Q7O0k7Rzs7STtHO3lCLG9EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7a0IsMEQ7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOztLLHNEOztNOzs7aUMsaUM7O21DO007TztrQjs7TTtrQyxXLGM7TTs7O1MsdUIsa0IsaUI7OztTOztrQjtrQix1QjtpQjs7O1MsMkIsWSxpQjs7O1MsMkIsWSxpQjs7O1M7NkIsb0IsMEI7OztTLHVCLFksMEI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O3FCO1M7OztVO1Usc0I7VSxPO1M7OztTOzs2QixvQiwwQjs7O1M7O2tCOzJEO2tCO2lCOzs7Uzs7a0I7a0I7a0IsTztpQjtvQzs7SztLO0k7SSxPO0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csNkI7RztHLDRCO0c7Ryw0QjtHO0csMkI7RztHLGlDO0c7RyxrQztHO0csZ0M7RztHLHdCO0c7Ryx3QjtHO0csd0I7RztHLHFCO29CLGtEOztHLHlCO0c7Ryx3QjtHO0csMkI7RztHLDhCO0c7RywrQjtHO0csNkI7O0k7SyxPO0ssTztJLE8sVztHOzttQixvRDtHO0ksUTtJO0csdUI7RztHLDBCO0c7RywwQjtHO0csdUI7RztHLDBCO0c7RyxzQjtHO0csMkI7RztHLDhCO0c7RywwQjtHO0csNkI7RztJLGM7STtHLDRCO21CLGtEOztHLHNCOztJO0ssTztLLE87SSxPLFc7Rzs7RyxpQjtrQyw4QjtvQyw4Qjs7Ryx1QjtHO0csc0I7RztHLHdCO0c7RyxvQjtHO0csK0I7RztHLHdCO0c7RyxvQjtHO0csd0I7RztHLG1DO2dDLHNDOztHLHNDOztJO0k7Rzs7Ryx5QjtHO0csdUI7RztHLHVCO3lCLDZCOztHLHVCO0c7RywyQjtHO0csMkI7RztHLHVCO0c7RywyQjtHO0csb0I7RztHLHNCO0c7RyxzQjtHO0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO0c7Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLGlCO2tCLGtDOztJLGU7SSxPO0c7cUIsa0Q7d0Isa0M7OzRCLHVDOzRCLGlDOztHLDhCO3dCLG1DO3dCLGtDOztHLGlCO0c7RyxpQjtHLEk7MkIsNEI7O0cseUI7RztHLHlCO0c7Ryx1QjtrQyw2Qjs7Ryw0QjtHO0csNEI7RztHLDBCO2lCLGtDOztHLHNCO0c7RyxvQjtzQiw2QjtrQixrQzsrQiw4Qjs7SSxZO2dCO0ksdUI7Ozs7ZTs7Ozs7Rzs7SSxZO2dCOztJLE87Rzs7RyxzQjtHO0cseUI7MkIsTywwQjt3QixPLDBCO3lCLE8sMEI7O0csNEI7RztHLCtCOzBCLFc7MkIsVztvQixrQzs7RywwQjtHO0csc0I7RztHLHdCO0c7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOztHLDBCOztJLE87RzswQixtRDtxQixPLGlEO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOztHLHdCOztJLE87Rzs7Ryx5QjtHOzJCO0csSTtHLHlCO0c7RyxzQjtHO0csMEI7RztHLHdCOztJLGU7SSxPO0c7O0ksVzs7O0c7O0k7Ozs7Rzs7Ryw4Qjs7STs7OztHOztJOzs7Rzs7STs7O0c7eUIsNkI7MkIsNkI7dUIsTyxxQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7O0k7STs7SyxNO0ssTTtLLFM7SyxNO0ssVztLLE07SyxNOztLLFM7STtJLE87Rzs7STtJO0k7O0ssTTtLLE07SSxPO0c7OztJO0ssWSxrQjs7OztnQjtLOzs7OzJCOzs7OztJO0ksVTtJO0s7TSxNO1k7OztJO0k7STtHOztJLEcsbUM7SSxlO0k7STtHOztJO0ssVTtLOzs7YztjLE87YTtJOzs7Szs7TSxNLFc7SyxlO0s7TSxNO1c7Ozs7OztLO00sTTtvQjs7OztLO00sMEI7TTs7O3dCLE8sd0I7SSxPO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixnQztHOytCLGdDOztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87MkIsTyxxQztNLFE7TSxRO00sTzsyQixPLG1DO00sUzs7SztrQixNOzs7Ozs7Ozs7OztROztTO1MsRztTLEc7UyxJOzs7Ozs7Ozs7O0s7O007UTs7VztNLFc7TSxXO00sVztNOzs7UyxPLHFCO1E7TSxhO007OztTLE8scUI7UTtNLFk7Szs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O087UTs7d0I7TTs7Ozs7TyxPO2tCOztLOzs7OzRCOzs7OztJO0ssRzs7OzswQix5QjtjOzs7OztJLEs7SyxPOztJOztLLFU7TSxJOztNLEk7O0k7SztPOzs7STs7TSxPO0ssVTtNO007TSxJOzs7TSwwQjtNLEk7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0ssaUI7SztNO087Uzs7TyxPOzs7O1U7VyxTO1csTztVO1UsVTtVLE87UztPLGE7TyxJO007TTs7OztNO00sTTs7Szs7OztLOztNO007OztLLFM7SztNOztNLGE7TTtNO087O1E7UyxZOzs7Ozs7Ozs7Ozs7Ozs7OzthO2MsYzs7Yzs7Ozs7Ozs7Ozs7Ozs7YTs7YyxPOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7TTtNOzs7Szs7Rzs7Ozs7Ozs7SztLOzs7O1M7O1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiw0Qjs7UTtLO0ssTzs7O0s7TSxhOztNLDRCOztRO00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXOzs7SyxPLHFCO0k7SSxHOzs7OztLOztNOzs7O0ksMEI7STtLO087Ozs7SyxXO0s7Tzs7OztLLFc7SztPOzs7TSxXO007ZTs7Ozs7Ozs7O0k7SyxjLGUsd0IsUztLO00sTztNLE87SyxPO0k7Ozs7Ozs7OztHOztJOzs7Ozs7Rzs7STs7STs7SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOzs7Szs7O00sSTtLLEc7TTtPLE87Tyw0QjtNLE87O0ssVztLLE87STtJLE87Rzs7RztJOzs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0s7TSxPO00sTztNLFU7SyxHO007YztNOztLLFM7O007TyxPO08sNEI7OztVLFc7VSxPO1M7TTs7SztNLE87TSxPOztNOzs7OztLOzs7O0s7TTs7O1M7OztLO007OztTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7STtLOzJCOztJOztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7Ozs7OzswQixrQzs7Ozs7OzswQiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs2Qjs7Ozs7Ozs2Qjs7O3dCLGM7Ozs7OzZCOzs7eUIsbUI7Ozs7OzZCOzs7eUIsbUI7Ozs7Ozs7OEI7Ozs7Ozs7Ozs7OEI7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt5QixpQjtNLHNCO0s7SyxlO0s7Szs7TTs7TyxJO087OztVOzs7OztXLE87VyxPO1csVTtXO1c7VTs7VTtTO08sVTs7O1U7Ozs7O1U7Vzs7VTs7VztZLEc7YTtZLFc7WTs7VyxHO1k7VyxXO1c7VTtVOzs7VyxXO1csUzs7Ozs7VTtTO007TTs7Ozs7Ozs7OztXO1ksUTs7O1k7OztZO2EsTzthOztXO1c7Ozs7O3FCO3FCOztVO087OztPO2M7TyxXO087UTs7cUMsd0M7TztPOzs7O1c7VyxPO1U7USxjOzs7VztXOzs7WTs7O2E7WSxPOztXO1c7VztXLE87VTtPO087O007OztNLFc7TTs7SztLOzs7OytDO0s7Szs7Rzs7STtJLE87Rzs7STtNOztLO0s7O0k7OztlO0s7SyxjO0ssTztLO0k7STtJLE87Rzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQixPLHNDO21CLE8seUM7bUIsTyxzQztxQixPLHdDOzs7STtJLGtCO0k7STtLLE07SztPOztLLE87Ozs7Ozs7Ozs7STtJLE8sVztHOztJO0ssTTtLO08sVztJLE87YTtHOzs7SztNLE0sVztNO1E7VTtNOzs7OztVLFU7VSxPO21COzs7O1M7TTs7SztLO0s7SztJO0ksTyxXO0c7O0k7SyxTO0ssTTtLLEs7SSxPOztHOzs7SztLLEcsNkI7SyxJOztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7O0k7SyxNO0s7TztTLFc7SztPLFc7O0s7SyxPO0k7SSxPLFc7Rzs7OztNOztPLFU7TyxPO007TSxPO0s7O007TSxLO087TyxLLDZCOztNLE87SztLLE87STtJLE8sVztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7R2dHampCTTs7OztJQUFBO0lBc0hNO0lBTVo0NEg7SUFFQUM7SUE1Qk8sa0JBMEJQRCxTQUVBQztJQTRCSjtHQUVRO0dBRWUsU0FBbkJDLFcsVTtHQVBBO0lBQUE7O09BT0FBOzs7O0lBUzBCO0lBb0NYO0lBbEJBO0lBaUNOOzs7OztFOzs7Ozs7Ozs7Ozs7R0V4TUQ7Ozs7O0lBQUE7WUFtQ1JDLElBQUtDLEdBQVNDLEdBQUksT0FBSkEsS0FBVEQsSUFBQUEsSUFBU0MsRUFBMkI7WUFFekNDLElBQUtGLEdBQVNDLEdBQUksT0FBYkQsS0FBU0MsSUFBVEQsSUFBU0MsRUFBMkI7R0FuQk47SUFBQSxxQ0FpQm5DRixLQUVBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU1BQztJQUhVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdWQTs7Ozs7O1lBTUFDLFFBQU9KLEdBQVdDLEdBQVksT0FBdkJELE1BQVdDLFVBQTBCO0dBSHBDO0lBQUE7Ozs7Ozs7T0FHUkc7SUFkQUM7SUFFQUM7OzhEQUZBRCxPQUVBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NhVzs7Ozs7O0lBQVRDO0lBekNVLGFBeUNWQTtJQWtDRkM7SUFJQUM7Ozs7WUFxQ0VDLGM7WUFNQUMsSUFBSVgsR0FBRVksR0FBSSxPQUFOWixLQS9DTlEsU0FBQUEsU0ErQ21ELFdBQTNDSSxHQUFGWixHQUFrRDtZQUV0RGEsS0FBS2IsR0FBRVksR0FBSSxPQUFOWixLQWpEUFEsU0FBQUEsU0FpRDZDLFdBQXBDSSxHQUFGWixHQUF5QztZQUU5Q2MsS0FBS2QsR0FBSSxZQUFKQSxLQW5EUFEsZ0JBbUQ4QjtZQUU1Qk8sS0FBS2YsR0FBRVk7SUFBVyxlQUFiWixLQXJEUFE7aUJBcUR5QyxXQUFoQ0ksR0FBRlo7R0FBcUM7WUFFMUNnQixPQUFLaEIsR0FBRVksR0FBRUs7SUFBSSxPQUFSakIsS0F2RFBRLFNBdURxQyxXQUE1QkksUUFBc0MsV0FBcENLLEdBQUpqQjtHQUEyQztZQUVoRGtCLElBQUlsQixHQUFFWSxHQUFJLE9BQU5aLEtBekROUSxTQXlEa0MsV0FBMUJJLFFBQUZaLEVBQXVDO1lBRTNDbUIsT0FBT25CLEdBQ1QsS0FEU0EsR0F2RGUsT0FKeEJRLFlBOERPWSxNQUhFcEIsTUFHRyxPQUFMb0IsSUFBYTtZQUVsQkMsVUFBVXJCO0lBQUksYUFBNkJBLEdBQUssV0FBTEEsR0FBVztJQUFoQixPQVR0Q2dCLE9BU1VoQixtQkFBc0IsU0FBSTtHQUFtQjtHQTVCbEI7OztPQXBDdkNRO09BeUNFRTtPQU1BQztPQUVBRTtPQUVBQztPQUVBQztPQUVBQztPQUVBRTtPQUVBQztPQUtBRTtZQVFBQyxjO1lBTUFDLE1BQUl2QixHQUFFWTtJQUFJLE9BQU5aLE1BMUVOUyxjQUFBQSxjQTBFb0UsV0FBNURHLEdBQUZaO0dBQW1FO1lBRXZFd0IsT0FBS3hCLEdBQUVZO0lBQUksT0FBTlosTUE1RVBTLGNBQUFBLGNBNEU4RCxXQUFyREcsR0FBRlo7R0FBMEQ7WUFFL0R5QixPQUFLekIsR0FBSSxZQUFKQSxNQTlFUFMscUJBOEUwQztZQUV4Q2lCLE9BQUsxQixHQUFFWTtJQUFXLGVBQWJaLE1BaEZQUztpQkFnRnFELFdBQTVDRyxHQUFGWjtHQUFpRDtZQUV0RDJCLE9BQUszQixHQUFFWSxHQUFFSztJQUFJLE9BQVJqQixNQWxGUFMsY0FrRmlELFdBQXhDRyxRQUFrRCxXQUFoREssR0FBSmpCO0dBQXVEO1lBRTVENEIsTUFBSTVCLEdBQUVZLEdBQUksT0FBTlosTUFwRk5TLGNBb0Y4QyxXQUF0Q0csUUFBRlosRUFBbUQ7WUFFdkQ2QixTQUFPN0I7SUFDVCxLQURTQSxHQXRGZSxPQUF4QlM7UUF5Rk9XLE1BSEVwQjtJQUdHLE9BQUxvQjtHQUFhO1lBRWxCVSxZQUFVOUI7SUFBSSxhQUE2QkEsR0FBSyxXQUFMQSxHQUFXO0lBQWhCLE9BVHRDMkIsT0FTVTNCLG1CQUFzQixTQUFJO0dBQW1CO0dBNUJaOzs7T0EvRDdDUztPQW9FRWE7T0FNQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FLQUM7WUFLRkMsT0FBTy9CLEdBQUVZLEdBQUVLO3dCQUE2QixPQUF6QixXQUFKQSxHQUFKakIsR0FBb0M7SUFBcEIsVUFBQSxXQUFkWSxHQUFGWjtJQUFzQixPQUFBO0dBQWU7WUFFNUNnQyxXQUFXaEMsR0FBRVksR0FBRUs7d0JBQXNDLE9BQWxDLFdBQUpBLEdBQUpqQixHQUE2QztJQUE3QixVQUFBLG1CQUFoQkEsR0FBRVk7SUFBNkIsT0FBQTtHQUFlO0dBb0NqRDtJQUFScUI7SUFFQUM7SUF3SEFDO0lBRUFDO0lBRUFDO0lBRUFDOztJQVNGQzs7SUFFQUM7O0lBNkVBQztZQUVBQyxZQUFZQyxHQUE2QixPQUZ6Q0Ysd0JBRVlFLEdBQXVEOzs7SUFFbkVDO0lBTUFDO0lBRUFDO1lBTUFDLFVBQVVuQyxHQUFFb0M7SUFBSSxPQUFKQTthQUFxQjt3QkFBb0JoRCxHQUFFaUQsWUFBVSxPQUFBLFdBQXZEckMsR0FBMkNaLEdBQWU7R0FBRTtZQUV0RWtELFdBQVd0QyxHQUFFb0M7SUFBSSxPQUFKQTthQUFxQjt3QkFBb0JoRCxHQUFFaUQsWUFBUyxPQUFBLFdBQXREckMsR0FBNkNxQyxLQUFGakQsR0FBa0I7R0FBRTtZQVUxRW1ELGU7WUFFQUMsa0I7R0ErTWU7O0lBL0ZmQzs7SUFtRkFDOztJQVlBQztJQUFlOztJQThDZkM7OztZQW5DRUMsVUFBUyxPQUFBLGtDQUE2QjtZQUV0Q0MsYUFBWSxPQUFBLHFDQUFnQztZQUU1Q0M7SUFDWSxVQUFBO0lBQUEsT0FBQTtHQUF3QztZQUVwREMsVUFBVUMsR0FBSSxPQUFBLHdCQUFKQSxjQUFvQztZQXdCaERDLGVBQWVELEdBQUksT0FBQSxrQkFBSkEsR0FBeUM7WUFFeERFLGdCQUFnQkYsR0FBSSxPQTFCbEJELFVBMEJjQyxHQUE0Qzt3QkFZNURHO1lBRUFDLFVBQVdDLEdBQ2IscUJBQUEsT0FBQSxjQURhQSxHQUNrRDtZQUU3REMsbUJBQW9CRDtJQUN0QjtJQUFBLE9BQUEsdUJBRHNCQTtHQUNrRDtZQUV0RUUsVUFBV0YsR0FDYixxQkFBQSxPQUFBLGNBRGFBLEdBQ2tEO1lBRTdERyxtQkFBb0JIO0lBQ3RCO0lBQUEsT0FBQSx1QkFEc0JBO0dBQ2tEO1lBRXRFSSxPQUFRSixHQUNWLHFCQUFBLE9BQUEsV0FEVUEsR0FDa0Q7WUFFMURLLFNBQVVMLEdBQ1oscUJBQUEsT0FBQSxhQURZQSxHQUNrRDtZQWtDNURNLE1BQU9DLEdBQ1QscUJBQUEsT0FBUSxVQURDQSxPQUM0RDtZQUVuRUMsU0FBVVI7SUFDWixxQkFBSVMsTUFBSSxhQURJVDtJQUVULE9BTERNLE1BSUVHLE9BQ1ksc0NBRFpBO0dBQ3NDO1lBRXhDQyxXQUFZVjtJQUNkLHFCQUFJUyxNQUFJLGVBRE1UO0lBRVgsT0FURE0sTUFRRUcsT0FDWSx3Q0FEWkE7R0FDd0M7O0lBR2xCLHVCQUVmO1FBRFFkO0lBQUssV0F2R3BCRCxVQXVHZUM7R0FDSDtHQUZoQjtnQkFNUUE7SUFBSixPQUFJQSxhQXpXTmpCOztrQkEwV3dELHdCQURsRGlCO0dBQ3lFO0dBRmpGO0dBQUEsU0FJRWdCLFVBQVdDLE9BQXFCOUU7SUFJZixVQUFBLCtCQUplQTs7O0tBTXpCO09BRkg7Y0FKNEJBO2dCQU9oQixzQkFQZ0JBOzs7ZUFBQUE7O0lBQ2xDLG9CQURhOEU7R0FRSDtZQUVSQyxTQUFPRCxPQUFNOUU7SUFBSSxPQVZqQjZFLFVBVTJCLGdDQUFwQkMsUUFBTTlFO0dBQThCO1lBRTNDZ0YsV0FBV0M7SUFDRixJQUFQQyxPQTNYRnhDLFlBMFhXdUM7V0FDVEM7YUFFRjt3QkFBcUJDLGlCQUEwQixPQWYvQ04sVUFlcUJNLEtBSFZGLElBR1VFLE1BQTREO0dBQUU7O3FCOzs7O09BOUhqRnZCO09BUEFIO09BRUFDO09BRUFDOztPQStCRkg7OztxQjs7cUI7Ozs7T0EvbkJFaEQ7cUI7T0FJQUM7Ozs7T0FzSUF3QjtPQUVBQztPQTBIQUU7T0FGQUQ7T0FNQUc7T0FGQUQ7T0FXRkU7T0FFQUM7T0FBQUE7T0FBQUE7T0ErRUFFO09BRUFFO09BQUFBO09BTUFDO09BRUFDO09BTUFDO09BRUFHO09BVUFDO09BRUFDO09BZ0hBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQUM7T0FZQUM7O09Bd0RBUztPQUVBQztPQUdBRTtPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQW1DQUM7T0FHQUU7T0FJQUU7T0FobUJFN0M7T0FFQUM7T0FzbkJGK0M7T0FFQUM7O09BakdBakI7T0FGQUQ7T0FJQU47Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztZQ3hzQkE0QjtJQUNGLElBQUlDLDBCQUNhQyxTQUFJYjtJQUNuQjtRQURtQkEsS0FEakJZLFFBT0csT0FBQSwyQkFOVUM7S0FHTztNQUFBLE1BQUEsY0FISGI7TUFHWCxRQUFBOztNQUVNO09BQUxaO09BTFUwQixNQUFBZDtPQUFKZSxZQUtOM0IsR0FMTXlCO09BQUFBLE1BQUFFO09BQUlmLElBQUFjOztNQUlQLElBSk9FLE1BQUFoQixXQUFBQSxJQUFBZ0I7O0dBUVI7O0lBdUJUQztJQUVBQztJQUVBQztJQUVBQztJQUVBQztJQUVBQztZQUVBQyxJQUFJQyxHQUFFQyxNQUFPLFFBQVRELElBQUVDLFVBQUFBLGFBQXlCO1lBRS9CQyxJQUFJbkcsR0FBRUMsR0FBSSxPQUFORCxJQUFFQyxFQUFXO0dBbkJHOzs7T0FLcEJ5RjtPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBRztPQUFBQTtZQTZDRkMsWUFBYUMsR0FBY0MsR0FBZEQsY0FBY0MsSUFBc0IsU0FBOEI7WUFFL0VDLFlBQWFGLEdBQWNDLEdBQWRELGNBQWNDLElBQXNCLFNBQThCO1lBRS9FRSxhQUFjSCxHQUFjQyxHQUFjM0QsR0FBNUIwRCxlQUFjQyxHQUFjM0QsSUFDckMsU0FBNkM7WUFFbEQ4RCxhQUFjSixHQUFjQyxHQUFjM0QsR0FBNUIwRCxlQUFjQyxHQUFjM0QsSUFDckMsU0FBaUQ7WUF5SHREK0QsU0FBU0M7SUFDWCxZQURXQTs7OztRQUVFLFdBRkZBOztRQUdJLFdBSEpBOzs7UUFJZSxXQUpmQTs7SUFLSixXQUxJQTtHQUtlO1lBR3RCQyxLQUFNQyxLQUFnQlo7SUFDeEIsT0FEUVksaUJBQWdCWjtjQUNFLDhCQURsQlk7O0dBQzJEO1lBRWpFQyxRQUFRakQsR0FBMEIsT0FIbEMrQyxLQUdRL0MsTUFBd0M7WUFFaERrRDtJQUNGLDZDQUVLO0lBREEsT0FBQTtHQUNPO1lBRVZDLEtBQUtuRCxHQUF1QixPQVY1QitDLEtBVUsvQyxNQUF1QztPQXlCOUNvRDtZQU1BQyxRQUFRdEc7SUFFUjs7T0FBQTtrQkFBeUJpRDtVQUVBLFVBQUEsOEJBRkFBO1VBRWIsR0FBQTtXQU9LLElBQU5zRCxNQUFNLFdBWFR2RyxHQUVpQmlEO21CQVNkc0QsVUFUY3REO1dBVVcsT0FEekJzRDs7VUFMSSxJQUFBLGFBQ0UsUUFBQSxXQVBUdkc7O1VBUTRCO1NBSzFCO0lBWFYsT0FBQTtHQVdZO1lBRVp3RyxhQUFheEc7SUFFYjs7T0FBQTtrQkFBOEJ5RyxRQUFLeEQ7VUFFVixVQUFBLDhCQUZVQTtVQUV2QixHQUFBO1dBT0ssSUFBTnNELE1BQU0sV0FYSnZHLEdBRWlCeUcsUUFBS3hEO21CQVN4QnNELFVBVHdCdEQ7V0FVQyxPQUR6QnNEOztVQUxJLElBQUEsYUFDRSxRQUFBLFdBUEp2RyxHQUVpQnlHOztVQU1NO1NBSzFCO0lBWFYsT0FBQTtHQVdZO1lBRVpDLGVBQWdCMUcsR0FBOEJ5RyxRQUFZRSxPQUM1RCxPQURrQjNHLE9BQThCeUcsUUFBWUUsT0FDVjtZQUVoREM7O0tBRThCLG9CQUFrQyxNQUFBLDBDQUFlO0tBQTFCLE9BQUE7SUFBMkI7SUFBaEY7S0FBQSxTQUFBOztJQUVDLG1DQU9FO0lBSEEsMEJBRUU7SUFEQTtLQUEwRCxNQUFBO0lBQVk7SUFBdkIsT0FBQTtHQUUzQztHQUVFLElBR1RDLHdDQUhTLFlBR1RBO1lBYUZDLDRCQUE2QkMsS0FBc0JDLEtBQUtDLFNBQVNDLE1BQU1DLFNBQVFDO0lBQ2pGLEdBQU8saUNBRHdCTDtLQVFTO01BQUE7TUFDbEM1RztpQkFBS2tGLEdBQUVyRixHQUNULEtBRE9xRixHQUVHLFlBQ0hnQyxJQUhBaEMsTUFHSyxPQUFBLFdBSEhyRixHQUdGcUgsR0FBUTtLQUhibEgsS0FUb0Q4Ryx1QkFjakMsMEJBQW1CO0tBTHRDOUcsS0FUNkQrRyxvQkFlN0MsdUJBQWdCO0tBTmhDL0csS0FUbUVnSCx1QkFnQmhELDBCQUFtQjtLQWhCYkoscUJBQXNCQyxLQUE0Qkk7S0FrQi9FLHVCQUFVLE9BbEJtQkwsd0JBQXNCQyxLQUE0QkksU0FrQmpCOztJQWZyRCxJQUFMRSxLQUFLLFlBSDBDTjtJQUluRCxTQUFJTyxTQUFTdEU7S0FBbUIsY0FKK0NtRSxHQUlsRW5FO0tBQW1CLDBCO0lBQVk7SUFKZjhELGdCQUd6Qk8sSUFDQUM7SUFFSix1QkFBVSxPQU5tQlIsZ0JBR3pCTyxJQUNBQyxVQUVtRDtHQVlPO1lBRTlEQyxpQkFBa0J2RSxHQUFzQitELEtBQUlJLEdBQUVLO0lBQ2hELE9BckJFWCw0QkFvQmtCN0QsR0FBc0IrRCxTQUFNUyxhQUFGTDtHQUNHO1lBRS9DTSxvQkFBb0JDLElBQUssT0FBQSxXQUFMQSxPQUFVO1lBRTlCQztJQUNGLEdBQUc7O0lBRXlDOztHQUFhO1lBRXZEQyxrQkFBbUJDLFNBQVNDLFlBQVlDLFFBQU9oQjtJQUNqRCxTQUFJaUIsU0FBU2pJO0ssWUFDRDtTQUNIWjtLQUFLLE9BQUEsV0FGRFksR0FFSlo7O0lBRUU7SUFKUDZJO2VBS1U3SSxHQUF1QixjQUF2QkEsNkJBQTZCLEdBTnRCMEk7SUFDakJHO2VBTVU3SSxHQUEwQixjQUExQkEsZ0NBQWdDLEdBUGhCMkk7SUFDMUJFO2VBT1U3STtPQUFzQixVQUFBLDhCQUF0QkE7O01BQTRCO01BUkE0STtxQ0FTdENFO0lBT0osV0FQSUEsT0FUNkNsQjtHQWdCM0I7Ozs7O09BdlJwQm5CO09BSEFEO09BRkFEO09BRkFIO09BNUZBaEI7T0E2TkFzQjtXQVdFSSxTQUVBQyxNQUtBQztPQXlCRkM7T0FNQUM7T0FlQUU7T0FlQUU7T0FHQUU7O09BNkJBRTtPQW9CQVU7T0FHQUU7T0FFQUU7T0FLQUM7OztFOzs7Ozs7Ozs7OztHOzs7Ozs7Ozs7SUN2V0FNOztJQTZEQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7O0lBVUFDO1lBVUFDLElBQ0N4RyxHQUFFeUIsR0FBRWdGLEdBQUssT0FBQSwrQkFBVHpHLEdBQUV5QixHQUFFZ0YsR0FBb0M7O0lBRXpDdkk7SUFFQXdJOztJQThEQUM7WUFtQkVDLGVBQWVDO0lBQ0wsSUFBUkMsWUE3SkpiLFdBNEppQlk7SUFFakIsT0FBQSxxQkFESUM7R0FDZTs7OztPQXJPbkJmOzs7O09BNkRBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUdBdEk7T0FFQXdJO09BOERBQztPQUFBQTs7Ozs7O1dBbUJFQzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0lDak9GRzs7Ozs7Ozs7Ozs7OztZQUtJQyxXQUFXcEo7OzttQkFDVDtLQUVFLElBREhxSixnQkFBTFIsZ0JBQ1EsUUFBQSxXQUhPN0ksR0FFZjZJO21CQUdTUyxnQkFBTSxXQUFOQSxLQUxMRixXQUFXcEosR0FFVnFKO21CQUFBQTs7O1lBd0JMRSxTQUFVQyxhQUFhQyxTQUFRckg7SUFsQmpDO09Ba0J5QnFIOzRCQUFBQTs7O0lBWnJCO0tBQUEsd0JBWVFEO0tBbEJSRTtPQVJFTjs7VUFVRixJQUFZUCxjQUFOaEc7VUFDSixLQURVZ0csR0FFQTtjQUNIUyxNQUhHVDtVQUdFLGVBSFJoRyxNQUdrQyx3QkFBL0J5RztTQUEyQzs7S0FjcERLO09BbkJBRDtVQWdCRyx1QkFBVyw2QkFoQmRBOztJQW9CSixXQWpDRVAsWUFpQ2lCLDJCQUZjL0csSUFDN0J1SDtHQUNnQztZQUVsQ0MsaUJBQWtCSixhQUFhQyxTQUFRbkc7SUFDekMsT0FMRWlHLFNBSWtCQyxhQUFhQyxhQUNDLHdCQURPbkc7R0FDSTtZQUUzQ3VHLGNBQWVMLGFBQWFDLFNBQVFLOztLQUdsQzsrQkFJZXhHLGNBQUssT0FBTEE7O2dDQUhFbEIsY0FBSyxPQUFMQTtVQUNJMkg7TUFBSyxPQUFMQTs7O1VBQ1RoRztNQUFtQixPQUFBLHdCQUFuQkE7O1NBRUZzRDtLQUFLLE9BQUxBO0lBQXFCO0lBTmpDLElBREUyQyxNQUNGLGlDQUZvQ0Y7SUFXUCxPQWxCN0JQLFNBT2VDLGFBQWFDLFNBV0MsNkJBVjNCTztHQVU0QztZQWlCOUNDO0lBRUksWUFBQTtrQkFLQ3BILGlCQUFRLE9BQVJBO0lBSEcsY0FBQTs7S0FDSSxPQUFBO1FBQ0hxSDtJQUFRLE9BQVJBO0dBQ1E7bUNBSWpCQztZQUtFQyxTQUFVbkg7SUFDWixPQURZQSxhQUxaa0g7Y0FPSyw4QkFGT2xIOztHQUdBO1lBRVZvSCxLQUFNcEg7SUFDUixPQURRQSxhQXZGUmtHO2NBd0ZpQyw4QkFEekJsRzs7R0FDeUU7WUFFL0VxSCxPQUFRckg7SUFDVixjQURVQTtjQUVMLDhCQUZLQTs7R0FHRTtZQUVWa0YsWUFBYWxGO0lBQ2YsT0FEZUE7Y0FFViw4QkFGVUE7O0dBR0g7R0FpRUU7SUFBWnNILFlBQVk7SUFFWkMsV0FBVztJQUVYQyxRQUFRO0lBRVJDLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxVQUFVO0lBYkssa0JBR2ZMLFdBRUFDLFVBRUFDLE9BRUFDLE9BRUFDLE1BRUFDOztJQUdGQztJQUVBckQ7OztPQS9JQW9DO09BR0FDO1dBNENFTyxVQUtBQyxvQixjQUdBQyxRQUtBbkM7O09BN0JGOEI7T0E4R0FZO09BRUFyRDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDM0xPOzs7Ozs7Ozs7O0lBQVBzRCxPQUFrQjtJQWd1QmxCekU7SUFFQUM7SUFFQUU7SUFFQUU7SUFLRXFFLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxNQUFNO0lBRU5DLFFBQVE7SUFFUkMsV0FBVztJQUVYQyxZQUFZO0lBRVpDLFVBQVU7SUFFVkMsWUFBWTtJQUVaQyxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsV0FBVztJQUVYQyxVQUFVO0lBRVZDLFFBQVE7SUFFUkMsYUFBYTtJQUViQyxRQUFRO0lBRVJDLGlCQUFrQjtJQUVsQkMsYUFBYTtJQUViQyxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsY0FBYztJQUVkQyxZQUFZO0lBRVpDLFVBQVU7SUFFVkMsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLFlBQVk7SUFFWkMsT0FBTztJQUVQQyxPQUFPO0lBRVBDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxRQUFRO0lBRVJDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxTQUFTO0lBRVRDLFFBQVE7SUFFUkMsT0FBTztJQUVQdEMsT0FBTztJQUVQdUMsU0FBUztJQUVUQyxlQUFlO0lBRWZDLFNBQVM7SUFFVEM7TUFBb0I7SUFFcEJDLFdBQVc7SUFFWDVDLFFBQVE7SUFFUkQsUUFBUTtJQUVSOEMsU0FBUztJQUVUQyxTQUFTO0lBRVRDLFVBQVU7SUFFVkMsV0FBVztJQUVYQyxXQUFXO0lBRVhDLGNBQWM7SUFFZHBELFdBQVc7SUFFWHFELGNBQWM7SUFFZEMsU0FBUztJQUVUQyxXQUFXO0lBRVhDLG1CQUFtQjtJQUVuQkMsaUJBQWlCO0lBRWpCQyxlQUFlO0lBRWZDO01BQXFCO0lBRXJCQyxrQkFBa0I7SUFFbEJDLGdCQUFnQjtJQUVoQkMsa0JBQWtCO0lBRWxCQyxnQkFBZ0I7SUFFaEJDLG1CQUFtQjtJQUVuQkMsVUFBVTtJQUVWQyxpQkFBaUI7SUFFakJDLGlCQUFpQjtJQUVqQkMsVUFBVTtJQUVWQyxRQUFRO0lBRVJDO01BQW9CO0lBRXBCQyxhQUFhO0lBRWJDLGlCQUFpQjtJQUVqQnpFLFlBQVk7SUFFWjBFO01BQXFCO0lBRXJCbk0sVUFBVTtJQUVWb00sUUFBUTtJQUVSQyxPQUFPO0lBRVBDLFVBQVU7SUFFVkMsZUFBZTtJQUVmQyxnQkFBZ0I7SUFFaEJDLGNBQWM7SUFFZEMsZUFBZTtJQUVmQyxjQUFjO0lBRWRDLGFBQWE7SUFFYkMsY0FBYztJQUVkQyxZQUFZO0lBRVpDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxVQUFVO0lBRVZDLFVBQVU7SUFFVkMsVUFBVTtJQUVWQyxlQUFlO0lBRWZDLFVBQVU7SUFFVnRKO0lBS0ZXO0lBRUFWO0lBRUFZO0lBRUFHO0lBK3ZCQXVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQW9aQUM7SUFDRixjQVdPdE8sR0FBSyxPQUFMQSxFQUFNOztLQVJUO0tBRzRCLG1EQUN2QjtLQUVVLElBQVR1TyxTQUFTO0tBQ1YseUJBRENBLCtCQUFBQTtJQUM2RTtJQUNyRixPQUFBO0dBQVk7T0F3TVpDLDJDQUFBQTtZQU1BQyxlQUFlN0k7SUFDakIsY0FHTzhJLE9BQVMsT0FBVEEsTUFBYzt5QkFEUixNQUFBLDBDQUFlO0lBRDFCLFdBQUEsd0JBQTBCLHdCQUZYOUk7SUFJZixPQUFBO0dBQW9CO1lBRXBCK0ksbUJBQW1CL0k7SUFDckIsY0FHTzhJLE9BQVMsT0FBVEEsTUFBYzs7S0FEQyxXQUFBLGtDQUhEOUk7S0FHQyxPQUFBO0lBQXNEO0lBRDFFLFdBQUEsd0JBQTBCLHdCQUZQQTtJQUluQixPQUFBO0dBQW9CO1lBRXBCZ0osbUJBQW1CaEo7SUFBc0IsV0FBQSx3QkFBMEIsd0JBQWhEQTtJQUFzQixPQUFBO0dBQXlDO1lBRWxGaUosc0JBQXNCakosSUFBR3hHO2tCQUlwQjhCO0tBQXNCLFdBQUEsV0FKRjlCLFFBSXBCOEI7S0FBc0IsT0FBQTtJQUFVO3lCQUQxQixTQUFJO0lBRGYsV0FBQSx3QkFBMEIsd0JBRkowRTtJQUl0QixPQUFBO0dBQXNDO1lBZ0V0Q00sU0FBUzdJLEdBQUVZO0lBQ2IsS0FEV1osR0FFRDtRQUNIeUosSUFISXpKO0lBR0MsT0FBQSxXQUhDWSxHQUdONkk7R0FBUTtZQUViZ0ksY0FBZUMsS0FBa0JqTztJQUFPLE9BQXpCaU8sa0JBQTRDLHdCQUExQmpPO0dBQTBDO1lBRTNFa08sb0JBQW9CRCxLQUFJak8sTUFBTyxPQUYvQmdPLGNBRW9CQyxLQUFJak8sTUFBZ0Q7R0FFbEQsSUFBdEJtTztZQUVJQyxzQkFBdUJDLE1BQU9yTyxNQUFLaU8sS0FBSUs7SUFDN0M7Y0FENkJELGNBQU9yTyxNQUUvQixPQVJIZ08sY0FNdUNDLEtBQUlLO2dCQUYzQ0g7OztXQWFRNU87T0FBQUEsWUFDOEIsd0JBWksrTztPQVgzQ2xKO1NBVzJCaUo7a0JBYUg3TDtVQUZoQmpELGtCQUd5QyxvQkFEekJpRDtVQUNUO1NBQW1FO09BekJsRjRDO1NBV2tDcEY7a0JBZVg2QztVQUpmdEQsa0JBS3lDLG9CQUQxQnNEO1VBQ1I7U0FBbUU7T0FMMUV0RDtjQVgrQjBPLGtCQVcvQjFPOztNQUx1QixVQVovQnlPLGNBTXVDQyxLQUFJSztNQVgzQ2xKLFNBVzJCaUosb0JBT0Usc0JBQWdCO01BbEI3Q2pKLFNBV2tDcEYsb0JBUU4sc0JBQWU7TUFBdkM7O0tBWUE7TUFJVztPQUFBLE1BQUE7T0FFSixPQUFVO09BQVY7Ozs7O0tBNUJYbU87O0dBaUM4QztZQUU5Q0ksV0FBV04sS0FBc0IsT0FyQ2pDQyxvQkFxQ1dELGVBQW9EO1lBRS9ETyxXQUFXUCxLQUFzQixPQXZDakNDLG9CQXVDV0QsZUFBb0Q7WUFFL0RRLFdBQVdSLEtBQXNCLE9BekNqQ0Msb0JBeUNXRCxlQUFvRDtZQUUvRFMsWUFBWVQsS0FBdUIsT0EzQ25DQyxvQkEyQ1lELGdCQUFzRDtZQUVsRVUsV0FBV1YsS0FBc0IsT0E3Q2pDQyxvQkE2Q1dELGVBQW9EO1lBRS9EVyxXQUFXWCxLQUFzQixPQS9DakNDLG9CQStDV0QsZUFBb0Q7WUFFL0RZLFlBQVlaLEtBQXVCLE9BakRuQ0Msb0JBaURZRCxnQkFBc0Q7WUFFbEVhLFdBQVdiLEtBQXNCLE9BbkRqQ0Msb0JBbURXRCxlQUFvRDtZQUUvRGMsV0FBV2QsS0FBc0IsT0FyRGpDQyxvQkFxRFdELGVBQW9EO1lBRS9EZSxlQUFlZjtJQUEwQixPQXZEekNDLG9CQXVEZUQ7R0FBNEQ7WUFFM0VnQixhQUFhaEIsS0FBd0IsT0F6RHJDQyxvQkF5RGFELGlCQUF3RDtZQUVyRWlCLGFBQWNiLE1BQU9yTyxNQUFLaU87SUFDNUIsT0F4RE1HLHNCQXVEVUMsTUFBT3JPLE1BQUtpTztHQUNtQjtZQUU3Q2tCLFlBQWFkLE1BQU9yTyxNQUFLaU87SUFDM0IsT0EzRE1HLHNCQTBEU0MsTUFBT3JPLE1BQUtpTztHQUNtQjtZQUU1Q21CLGVBQWdCZixNQUFPck8sTUFBS2lPO0lBQzlCLE9BOURNRyxzQkE2RFlDLE1BQU9yTyxNQUFLaU87R0FDbUI7WUFFL0NvQixhQUFjaEIsTUFBT3JPLE1BQUtpTztJQUM1QixPQWpFTUcsc0JBZ0VVQyxNQUFPck8sTUFBS2lPO0dBQ21CO1lBRTdDcUIsWUFBWXJCLEtBQXVCLE9BdkVuQ0Msb0JBdUVZRCxnQkFBc0Q7WUFFbEVzQixlQUFldEI7SUFBMEIsT0F6RXpDQyxvQkF5RWVEO0dBQTREO1lBRTNFdUIsYUFBYXZCLEtBQXdCLE9BM0VyQ0Msb0JBMkVhRCxpQkFBd0Q7WUFFckV3QixTQUFTeEIsS0FBdUIsT0E3RWhDQyxvQkE2RVNELGFBQW1EO1lBRTVEeUIsU0FBU3pCLEtBQXVCLE9BL0VoQ0Msb0JBK0VTRCxhQUFtRDtZQUU1RDBCLFNBQVMxQixLQUF1QixPQWpGaENDLG9CQWlGU0QsYUFBbUQ7WUFFNUQyQixTQUFTM0IsS0FBb0IsT0FuRjdCQyxvQkFtRlNELGFBQWdEO1lBRXpENEIsVUFBVTVCLEtBQXFCLE9BckYvQkMsb0JBcUZVRCxjQUFrRDtZQUU1RDZCLFlBQVk3QixLQUF1QixPQXZGbkNDLG9CQXVGWUQsZ0JBQXNEO1lBRWxFOEIsUUFBUTlCLEtBQTJCLE9BekZuQ0Msb0JBeUZRRCxZQUFzRDtZQUU5RCtCLFNBQVMvQixLQUF5QixPQTNGbENDLG9CQTJGU0QsYUFBcUQ7WUFFOURnQyxTQUFTaEMsS0FBeUIsT0E3RmxDQyxvQkE2RlNELGFBQXFEO1lBRTlEaUMsU0FBU2pDLEtBQXlCLE9BL0ZsQ0Msb0JBK0ZTRCxhQUFxRDtZQUU5RGtDLFNBQVNsQyxLQUF5QixPQWpHbENDLG9CQWlHU0QsYUFBcUQ7WUFFOURtQyxTQUFTbkMsS0FBeUIsT0FuR2xDQyxvQkFtR1NELGFBQXFEO1lBRTlEb0MsU0FBU3BDLEtBQXlCLE9BckdsQ0Msb0JBcUdTRCxhQUFxRDtZQUU5RHFDLFFBQVFyQyxLQUF1QixPQXZHL0JDLG9CQXVHUUQsWUFBa0Q7WUFFMURzQyxpQkFBaUJ0QztJQUF1QixPQXpHeENDLG9CQXlHaUJEO0dBQTJEO1lBRTVFdUMsVUFBVXZDLEtBQXFCLE9BM0cvQkMsb0JBMkdVRCxjQUFrRDtZQUU1RHdDLFNBQVN4QyxLQUFvQixPQTdHN0JDLG9CQTZHU0QsYUFBZ0Q7WUFFekR5QyxTQUFTekMsS0FBb0IsT0EvRzdCQyxvQkErR1NELGFBQWdEO1lBRXpEMEMsVUFBVTFDLEtBQXFCLE9BakgvQkMsb0JBaUhVRCxjQUFrRDtZQUU1RDJDLFVBQVUzQyxLQUFxQixPQW5IL0JDLG9CQW1IVUQsY0FBa0Q7WUFFNUQ0QyxRQUFRNUMsS0FBd0IsT0FySGhDQyxvQkFxSFFELFlBQW1EO1lBRTNENkMsVUFBVTdDLEtBQXVCLE9BdkhqQ0Msb0JBdUhVRCxjQUFvRDtZQUU5RDhDLGFBQWE5QyxLQUF3QixPQXpIckNDLG9CQXlIYUQsaUJBQXdEO1lBRXJFK0MsWUFBWS9DLEtBQXVCLE9BM0huQ0Msb0JBMkhZRCxnQkFBc0Q7WUFFbEVnRCxVQUFVaEQsS0FBcUIsT0E3SC9CQyxvQkE2SFVELGNBQWtEO1lBRTVEaUQsV0FBV2pELEtBQXNCLE9BL0hqQ0Msb0JBK0hXRCxlQUFvRDtZQUUvRGtELGFBQWFsRCxLQUF3QixPQWpJckNDLG9CQWlJYUQsaUJBQXdEO1lBRXJFbUQsWUFBWW5ELEtBQXVCLE9BbkluQ0Msb0JBbUlZRCxnQkFBc0Q7WUFFbEVvRCxjQUFjcEQsS0FBOEIsT0FySTVDQyxvQkFxSWNELGtCQUErRDtZQUU3RXFELFVBQVVyRCxLQUEwQixPQXZJcENDLG9CQXVJVUQsY0FBdUQ7WUFFakVzRCxlQUFldEQ7SUFBMEIsT0F6SXpDQyxvQkF5SWVEO0dBQTREO1lBRTNFdUQsWUFBWXZELEtBQThCLE9BM0kxQ0Msb0JBMklZRCxnQkFBNkQ7WUFFekV3RCxZQUFZeEQsS0FBOEIsT0E3STFDQyxvQkE2SVlELGdCQUE2RDtZQUV6RXlELFlBQVl6RCxLQUE4QixPQS9JMUNDLG9CQStJWUQsZ0JBQTZEO1lBRXpFMEQsU0FBUzFELEtBQTBCLE9BakpuQ0Msb0JBaUpTRCxhQUFzRDtZQUUvRDJELFNBQVMzRCxLQUEyQixPQW5KcENDLG9CQW1KU0QsYUFBdUQ7WUFFaEU0RCxTQUFTNUQsS0FBMkIsT0FySnBDQyxvQkFxSlNELGFBQXVEO1lBRWhFNkQsVUFBVTdELEtBQU0sT0F6SmhCRCxjQXlKVUMsY0FBNkI7WUFFdkM4RCxVQUFVOUQsS0FBTSxPQTNKaEJELGNBMkpVQyxjQUE2QjtZQUV2QytELFdBQVcvRCxLQUFNLE9BN0pqQkQsY0E2SldDLGVBQThCO1lBRXpDZ0UsU0FBU2hFLEtBQU0sT0EvSmZELGNBK0pTQyxhQUE0QjtZQUVyQ2lFLFFBQVFqRSxLQUFNLE9BaktkRCxjQWlLUUMsWUFBMkI7WUFFbkNrRSxRQUFRbEUsS0FBTSxPQW5LZEQsY0FtS1FDLFlBQTJCO1lBRW5DbUUsVUFBVW5FLEtBQU0sT0FyS2hCRCxjQXFLVUMsY0FBNkI7WUFFdkNvRSxZQUFZcEUsS0FBTSxPQXZLbEJELGNBdUtZQyxnQkFBK0I7WUFFM0NxRSxTQUFTckUsS0FBTSxPQXpLZkQsY0F5S1NDLGFBQTRCO1lBRXJDc0UsYUFBYXRFLEtBQU0sT0EzS25CRCxjQTJLYUMsaUJBQWdDO1lBRTdDdUUsV0FBV3ZFLEtBQU0sT0E3S2pCRCxjQTZLV0MsZUFBOEI7WUFFekN3RSxVQUFVeEUsS0FBTSxPQS9LaEJELGNBK0tVQyxjQUE2QjtZQUV2Q3lFLFdBQVd6RSxLQUFNLE9BakxqQkQsY0FpTFdDLGVBQThCO1lBRXpDMEUsV0FBVzFFLEtBQU0sT0FuTGpCRCxjQW1MV0MsZUFBOEI7WUFFekMyRSxVQUFVM0UsS0FBTSxPQXJMaEJELGNBcUxVQyxjQUE2QjtZQUV2QzRFLFVBQVU1RSxLQUFNLE9BdkxoQkQsY0F1TFVDLGNBQTZCO1lBRXZDNkUsV0FBVzdFLEtBQU0sT0F6TGpCRCxjQXlMV0MsZUFBOEI7WUFFekM4RSxTQUFTOUUsS0FBTSxPQTNMZkQsY0EyTFNDLGFBQTRCO1lBRXJDK0UsU0FBUy9FLEtBQU0sT0E3TGZELGNBNkxTQyxhQUE0QjtZQUVyQ2dGLGVBQWVoRixLQUFNLE9BL0xyQkQsY0ErTGVDLG1CQUFrQztZQUVqRGlGLGNBQWNqRixLQUFNLE9Bak1wQkQsY0FpTWNDLGtCQUFpQztZQUUvQ2tGLGVBQWVsRjtJQUEwQixPQWpNekNDLG9CQWlNZUQ7R0FBNEQ7WUFFM0VtRixZQUFZbkYsS0FBdUIsT0FuTW5DQyxvQkFtTVlELGdCQUFzRDtZQUVsRW9GLGFBQWFwRixLQUF3QixPQXJNckNDLG9CQXFNYUQsaUJBQXdEO1lBRXJFcUYsWUFBWXJGLEtBQXVCLE9Bdk1uQ0Msb0JBdU1ZRCxnQkFBc0Q7WUFFbEVzRixZQUFZdEYsS0FBdUIsT0F6TW5DQyxvQkF5TVlELGdCQUFzRDtHQUV0RTs7O1lBRUl1RixhQUFhdkY7SUFDUCxVQTlNTkMsb0JBNk1hRDtXQUVSO0tBQStCLE1BQUE7SUFDdEM7R0FBQztHQU13Qjs7SUFKdkJ3RjtJQUl1QixNQUFBLDhCQUp2QkE7SUFHRXBRO01BQ0s7O1NBU0RqRDtTQUNKLE9BRElBLGFBYk5xVDttQkFjdUMsOEJBRGpDclQ7O1FBQzBFOztTQU4xRXNUO1NBQ21CLFdBQUEsOEJBRG5CQTtTQUNHLE9BQUE7bUJBRUYsOEJBSERBOztRQUc2QjtZQUtqQ0MsYUFBYUMsS0FBS0M7SUFDcEIsT0FEb0JBLDZCQUNrQix3QkFEdkJEO2NBRVYsOEJBRmVDOztHQUdSO1lBRVZ0VSxFQUFFYSxHQUFJLE9BTE51VCxzQkFLRXZULEdBQXNCO1lBRXhCMFQsS0FBSzFULEdBQUksT0FQVHVULHlCQU9LdlQsR0FBeUI7WUFFOUIyVCxLQUFLM1QsR0FBSSxPQVRUdVQseUJBU0t2VCxHQUF5QjtZQUU5QjRULFdBQVc1VCxHQUFJLE9BWGZ1VCwrQkFXV3ZULEdBQStCO1lBRTFDNlQsS0FBSzdULEdBQUksT0FiVHVULHlCQWFLdlQsR0FBeUI7WUFFOUI4VCxHQUFHOVQsR0FBSSxPQWZQdVQsdUJBZUd2VCxHQUF1QjtZQUUxQitULE9BQU8vVCxHQUFJLE9BakJYdVQsMkJBaUJPdlQsR0FBMkI7WUFFbENnVSxPQUFPaFUsR0FBSSxPQW5CWHVULDJCQW1CT3ZULEdBQTJCO1lBRWxDaVUsUUFBUWpVLEdBQUksT0FyQlp1VCw0QkFxQlF2VCxHQUE0QjtZQUVwQ2tVLElBQUlsVSxHQUFJLE9BdkJSdVQsd0JBdUJJdlQsR0FBd0I7WUFFNUJtVSxTQUFTblUsR0FBSSxPQXpCYnVULDZCQXlCU3ZULEdBQTZCO1lBRXRDb1UsSUFBSXBVLEdBQUksT0EzQlJ1VCx3QkEyQkl2VCxHQUF3QjtZQUU1QnFVLElBQUlyVSxHQUFJLE9BN0JSdVQsd0JBNkJJdlQsR0FBd0I7WUFFNUJzVSxHQUFHdFUsR0FBSSxPQS9CUHVULHVCQStCR3ZULEdBQXVCO1lBRTFCdVUsU0FBU3ZVLEdBQUksT0FqQ2J1VCw2QkFpQ1N2VCxHQUE2QjtZQUV0Q3dVLE1BQU14VSxHQUFJLE9BbkNWdVQsMEJBbUNNdlQsR0FBMEI7WUFFaEN5VSxLQUFLelUsR0FBSSxPQXJDVHVULHlCQXFDS3ZULEdBQXlCO1lBRTlCMFUsU0FBUzFVLEdBQUksT0F2Q2J1VCw2QkF1Q1N2VCxHQUE2QjtZQUV0QzJVLE1BQU0zVSxHQUFJLE9BekNWdVQsMEJBeUNNdlQsR0FBMEI7WUFFaEM0VSxHQUFHNVUsR0FBSSxPQTNDUHVULHVCQTJDR3ZULEdBQXVCO1lBRTFCNlUsR0FBRzdVLEdBQUksT0E3Q1B1VCx1QkE2Q0d2VCxHQUF1QjtZQUUxQjhVLEdBQUc5VSxHQUFJLE9BL0NQdVQsdUJBK0NHdlQsR0FBdUI7WUFFMUIrVSxHQUFHL1UsR0FBSSxPQWpEUHVULHVCQWlER3ZULEdBQXVCO1lBRTFCZ1YsR0FBR2hWLEdBQUksT0FuRFB1VCx1QkFtREd2VCxHQUF1QjtZQUUxQmlWLEdBQUdqVixHQUFJLE9BckRQdVQsdUJBcURHdlQsR0FBdUI7WUFFMUJrVixLQUFLbFYsR0FBSSxPQXZEVHVULHlCQXVES3ZULEdBQXlCO1lBRTlCbVYsR0FBR25WLEdBQUksT0F6RFB1VCx1QkF5REd2VCxHQUF1QjtZQUUxQm9WLEtBQUtwVixHQUFJLE9BM0RUdVQseUJBMkRLdlQsR0FBeUI7WUFFOUJxVixPQUFPclYsR0FBSSxPQTdEWHVULDJCQTZET3ZULEdBQTJCO1lBRWxDc1YsSUFBSXRWLEdBQUksT0EvRFJ1VCx3QkErREl2VCxHQUF3QjtZQUU1QnVWLFFBQU12VixHQUFJLE9BakVWdVQsMEJBaUVNdlQsR0FBMEI7WUFFaEN3VixJQUFJeFYsR0FBSSxPQW5FUnVULHdCQW1FSXZULEdBQXdCO1lBRTVCeVYsTUFBTXpWLEdBQUksT0FyRVZ1VCwwQkFxRU12VCxHQUEwQjtZQUVoQzBWLE9BQU8xVixHQUFJLE9BdkVYdVQsMkJBdUVPdlQsR0FBMkI7WUFFbEMyVixHQUFHM1YsR0FBSSxPQXpFUHVULHVCQXlFR3ZULEdBQXVCO1lBRTFCNFYsS0FBSzVWLEdBQUksT0EzRVR1VCx5QkEyRUt2VCxHQUF5QjtZQUU5QmxELElBQUlrRCxHQUFJLE9BN0VSdVQsd0JBNkVJdlQsR0FBd0I7WUFFNUI2VixLQUFLN1YsR0FBSSxPQS9FVHVULHlCQStFS3ZULEdBQXlCO1lBRTlCOFYsT0FBUTlWLEdBQUksT0FqRlp1VCwyQkFpRlF2VCxHQUEyQjtZQUVuQytWLEdBQUcvVixHQUFJLE9BbkZQdVQsdUJBbUZHdlQsR0FBdUI7WUFFMUJnVyxTQUFTaFcsR0FBSSxPQXJGYnVULDZCQXFGU3ZULEdBQTZCO1lBRXRDMUMsT0FBTzBDLEdBQUksT0F2Rlh1VCwyQkF1Rk92VCxHQUEyQjtZQUVsQ3dDLEVBQUV4QyxHQUFJLE9BekZOdVQsc0JBeUZFdlQsR0FBc0I7WUFFeEJpVyxNQUFNalcsR0FBSSxPQTNGVnVULDBCQTJGTXZULEdBQTBCO1lBRWhDa1csSUFBSWxXLEdBQUksT0E3RlJ1VCx3QkE2Rkl2VCxHQUF3QjtZQUU1Qm9HLEVBQUVwRyxHQUFJLE9BL0ZOdVQsc0JBK0ZFdlQsR0FBc0I7WUFFeEJtVyxPQUFPblcsR0FBSSxPQWpHWHVULDJCQWlHT3ZULEdBQTJCO1lBRWxDb1csU0FBT3BXLEdBQUksT0FuR1h1VCwyQkFtR092VCxHQUEyQjtZQUVsQ3FXLE1BQU1yVyxHQUFJLE9BckdWdVQsMEJBcUdNdlQsR0FBMEI7WUFFaENzVyxNQUFNdFcsR0FBSSxPQXZHVnVULDBCQXVHTXZULEdBQTBCO1lBRWhDdVcsTUFBTXZXLEdBQUksT0F6R1Z1VCwwQkF5R012VCxHQUEwQjtZQUVoQ3dXLEdBQUd4VyxHQUFJLE9BM0dQdVQsdUJBMkdHdlQsR0FBdUI7WUFFMUJ5VyxTQUFTelcsR0FBSSxPQTdHYnVULDZCQTZHU3ZULEdBQTZCO1lBRXRDMFcsTUFBTTFXLEdBQUksT0EvR1Z1VCwwQkErR012VCxHQUEwQjtZQUVoQzJXLEdBQUczVyxHQUFJLE9BakhQdVQsdUJBaUhHdlQsR0FBdUI7WUFFMUI0VyxNQUFNNVcsR0FBSSxPQW5IVnVULDBCQW1ITXZULEdBQTBCO1lBRWhDNlcsTUFBTTdXLEdBQUksT0FySFZ1VCwwQkFxSE12VCxHQUEwQjtZQUVoQzhXLEdBQUc5VyxHQUFJLE9BdkhQdVQsdUJBdUhHdlQsR0FBdUI7WUFFMUIrVyxHQUFHL1csR0FBSSxPQXpIUHVULHVCQXlIR3ZULEdBQXVCO1lBRTFCZ1gsTUFBTWhYLEdBQUksT0EzSFZ1VCwwQkEySE12VCxHQUEwQjtZQUVoQ2lYLE1BQU1qWCxHQUFJLE9BN0hWdVQsMEJBNkhNdlQsR0FBMEI7WUFFaENrWCxrQkFBa0JqUyxRQUFRWjtJQUNWLFdBQUEsOEJBREVZO0lBQ2MsR0FBL0IsMENBRHlCWixjQUFSWTtLQUVmLE9BQUEsOEJBRnVCWjtJQUd2QjtHQUFPO1lBRVY4UyxXQUFXOVM7SUFBSztJQUFBLE9BTGhCNlMsa0NBS1c3UztHQUF3RDtZQUVuRStTLGNBQWMvUztJQUFLO0lBQUEsT0FQbkI2UyxxQ0FPYzdTO0dBQTJEO1lBRXpFZ1QsV0FBV2hUO0lBQUs7SUFBQSxPQVRoQjZTLGtDQVNXN1M7R0FBd0Q7WUFFbkVpVCxpQkFBaUJqVDtJQUFLO0lBQUEsT0FYdEI2Uyx3Q0FXaUI3UztHQUE4RDtZQUUvRWtULGNBQWNsVDtJQUFLO0lBQUEsT0FibkI2UyxxQ0FhYzdTO0dBQTJEO1lBRXpFbVQsYUFBYW5UO0lBQUs7SUFBQSxPQWZsQjZTLG9DQWVhN1M7R0FBMEQ7T0FLekVWO1lBRUE4VDs7S0FFUSxZQUFBOztNQUVVOzs7VUFBb0MsTUFBQTtTQUFZO01BQXZCLE9BQUE7O29EQUNsQztLQUZVO01BQXNDLE1BQUE7S0FBWTtLQUF2QixPQUFBO0lBRTlCO0lBSlcsT0FBQTtHQUlWO1lBRWpCQztJQUNGO0lBRUE7OztHQUNxRDtZQUVuREM7aUJBSUt4YjtrQkFBcUVDLEdBQUssV0FBMUVELEdBQXFFQyxHQUFTOzBCQUF4QyxPQVYzQ3NiLDJCQVVtRTtLQUFFLE9BQUE7SUFBZTt3QkFEekUsT0FUWEEsMkJBU21DO0lBQ25DLE9BQUE7R0FBcUY7WUFFckZFLHNCQUF1QjVYO0lBQ3pCO0tBQVEsTUFEaUJBOzs7SUFJekI7OztHQUN3RTtZQUV0RTZYO0lBQ0Y7SUFFQTs7O0dBQTBFO1lBRXhFQztJQUNGLGFBUU8zYixHQUFLLE9BQUxBLEVBQU07O0tBTEg7Ozs7U0FDQzs7U0FDQTs7aUJBQ0E7O0tBQ0E7SUFBUztJQUNsQixPQUFBO0dBQVk7WUFFWjRiLCtCQUFzQy9YLEdBQUdnRSxTQUFTQyxNQUFNQyxTQUFRQztJQUNsRSxPQU1FO2FBbDNEQU47YUEyMkRzQzdEO2FBNWdFcEM0STthQTRnRXVDNUU7YUFBU0M7YUFBTUM7YUFPeEQ7ZUF4akVBYjs7b0NBeWpFcUQsU0FBQzs7aUJBQTdDMlU7O21CQUFNOzs7O29DQUNzQyxzQkFBYzs7aUJBQTFEQzs7bUJBQU07Ozs7Z0JBQ1YsT0FBQSxXQVYyRDlULFFBUXZENlQsSUFDQUM7ZUFDeUI7R0FBRTtZQUVwQ0MsMkJBQTJCbFksR0FBRW1FLEdBQUVLO0lBQ2pDLE9BYkV1VCwrQkFZMkIvWCxPQUFJd0UsYUFBRkw7R0FDd0I7WUE4WnBDZ1UsU0E3UU52UztJQUNYO0tBQU0sUUFBQSx3QkFES0E7Ozt1QkFVQzs7O3dCQXNFRzs7O3lCQTZCRDs7OzBCQVRJO21EQXZDTDttREFoQkE7aURBRkY7d0RBd0VPO3dEQURBO3NEQUVGOzs7bURBc0JIO29EQTlFQzt5REEyRUs7bURBL0VOO3dEQThFSzt1REEvRUQ7dURBNENBOzs7Ozs7MEJBUEc7eURBREQ7eURBREE7NERBSkc7NERBQ0E7b0RBNkNSO3FEQUNDO3NEQXZCQzs7O3FEQTdCRDtxREFDQTtxREFDQTtxREFDQTtxREFDQTt1REFHRTsyREFDSTs7Ozs7Ozt5QkEvRFQ7OzswQkF3RUs7bURBMURKO3FEQXFERTtxREFqQkE7cURBQ0E7cURBQ0E7cURBQ0E7OztrREFwREg7a0RBQ0E7NERBNEZVO3VEQUNMOzREQUZLO2dFQURJO3NEQXJCVjs7Ozs7OzBCQS9FSjtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTs7O2tEQWRBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBOzs7Ozs7Ozt3QkFtQkU7Ozt5QkFnQ0o7OzsyQkFqRUU7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7OztnREE0REY7Z0RBQ0E7Z0RBQ0E7a0RBd0NFO29EQTlERTsyREF1Rk87cURBQ047Ozs7OzsyQkExRUw7aURBU0M7aURBQ0E7aURBQ0E7Z0RBVkQ7Z0RBQ0E7Z0RBQ0E7Z0RBQ0E7OztvREE5Qkk7b0RBQ0E7b0RBQ0E7aURBeUVIO21EQXBFRTttREFIQTtvREFNQzs7Ozs7OzswQkFnRlE7OzsyQkE3RVI7b0RBcEJBO29EQUNBO29EQUNBO29EQUNBO29EQUNBO29EQUNBOzs7MkRBeUZPO3lEQUlGO3NEQTdFSDttREFRSDt5REFnRU07eURBNUJBOzBEQUNDOzs7Ozs7MkJBdENIO3VEQVZBO3lEQUtFOzBEQUNDO3lEQTRFRDs4REFKSzs0REFHRjt5REFKSDs7O3FEQXhCSjtzREFDQzt1REFLQzt1REFIQTt3REFDQztxREFDSDt1REFqREU7Ozs7O0lBa0ZWO0dBQVk7WUFFakJ3UztJQUFvQjtzQkFJZDs7Ozs7UUFIQTs7UUFDQTtnQkFDQTs7SUFFRDtHQUFZO1lBRWpCQztJQUFxQjtzQkFJZjs7Ozs7UUFIQTs7UUFDQTtnQkFDQTs7SUFFRDtHQUFZO1lBRWpCQztJQUFzQjs7Ozs7U0FrQmhCOztTQUNBOztTQUNBOztTQUNBOztTQUNDOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQVhBOztTQUZBOzs7U0FDQTs7U0FFQTtpQkFKQTs7Ozs7O1FBTkQ7O1FBS0E7O1FBREE7O1FBTkE7O1FBRkE7O1FBTUE7O1FBSEE7O1FBSUE7O1FBRkE7O1FBSkE7O1FBRkE7O1FBREE7O0lBMkJEO0dBQVk7WUFFakJDO0lBQXNCOzs7Ozs7U0FxRGhCOztTQUNBOztTQVVBOztTQURBOztTQXZCQTs7U0FDQTs7U0FUQTs7U0FHQTs7U0FZQTs7U0FYQTs7U0FFQTs7U0F1QkE7O1NBNUJBOztTQTBCQTs7U0F0QkE7O1NBcUJBOztTQVdBOztTQW5FQzs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FFQTs7U0F3Q0E7O1NBMUJBOztTQW9DQTs7U0FyQ0E7O1NBc0NBOztTQUNBOztTQWxEQTs7U0F5QkE7O1NBRUE7O1NBREE7O1NBYUE7Ozs7O1NBMUJGOztTQUNBOztTQTBCQzs7U0F6Q0E7O1NBNkJBOztTQTVDQTs7U0FtRUE7O1NBSUE7O1NBR0E7O1NBREE7O1NBSEE7O1NBS0E7O1NBR0E7O1NBREE7O1NBREE7O1NBL0RBOztTQXdEQTs7U0FHQTs7U0E5Q0E7O1NBVEE7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBb0JBOztTQWdCQTs7U0FGQTs7U0FaQTs7U0FkQTs7U0FlQTs7U0FDQTs7U0FDQTs7U0FaQTs7U0FhQTs7O0lBNEJEO0dBQVk7WUFFakJDLHlCQUFzQixTQUFZO1lBTWxDQyxTQUFTQyxPQUFNM2IsR0FFZjZJLEcsT0FBQUEsSUFBQUEsSUFEZ0IsV0FERDdJLEdBQU4yYjtZQWFUQyxPQUFPeGMsR0FBRVksR0FBSSxPQUFBLFdBQUpBLEdBQUZaLEdBQVM7WUFFaEJ5YztJQUlVO0lBQVQsa0IsT0FuQkRILGNBeEZBRjtJQStGSTs7ZUFiSkM7Ozs7UUFjYztTQUFBOzZCLE9BUmRDLGNBcElBTDs7O1FBNkljO1NBQUE7NkIsT0FUZEssY0E3SEFKOzs7UUF1SWM7U0FBQTs2QixPQVZkSSxjQXRIQUg7O1FBa0hTSTtJQXVCUixPQU5EQzthQUFBQTtlQUFBQTs7MEJBZkEvUztrQixPQUFBQTs0QkFBQUE7NEJBRGdCO21EQURQOFMsT0FGVEYsbUJBRWVMOzs7O0dBdUJpQztZQVFoRFUsWUFBWUg7SUFDZCxRQURjQSxPQUNzRDtJQUFsRCxJQUFJLGNBQUssNEJBRGJBLFNBQ1E7ZUFBb0M7R0FBYztZQUV0RUksb0JBQWlCLFdBQVk7WUFFN0JDLFlBQVMsU0FBSTtZQUViQztJQUNGO0tBQVUsT0FBQSwyQ0FMUkY7Ozs7b0RBRUFDLE1BTEFGOzRCQUFBQSxZQVc0QztHQUNuQztZQUtYSSxlO1lBb0VBQyxPQUFRQztJQUNBLElBQU4zRixNQUFNLCtCQURBMkY7YUFFViw4QkFESTNGLE1BRUMsWUFISzJGO2tEQUNOM0Y7Ozs7b0NBQUFBOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzBCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7K0JBRE0yRjs4QkFBQUE7NEJBQUFBOzBCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGO3VCQURNMkY7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7OzRCQUFBQTs7OEJBQUFBOztnQ0FBQUE7O2tDQUFBQTt1Q0FETTJGO3VDQUFBQTtxQ0FBQUE7bUNBQUFBO2lDQUFBQTsrQkFBQUE7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7eUJBRE0yRjt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGLHFCQURNMkYsYUFBQUE7O29DQUNOM0Y7O29CQUFBQTs7c0JBQUFBOzJCQURNMkY7MkJBQUFBO3lCQUFBQTt1QkFBQUE7O29DQUNOM0Y7O29CQUFBQTs7c0JBQUFBOzt3QkFBQUE7OzBCQUFBQTs7NEJBQUFBOzs4QkFBQUE7O2dDQUFBQTs7a0NBQUFBO3VDQURNMkY7dUNBQUFBO3FDQUFBQTttQ0FBQUE7aUNBQUFBOytCQUFBQTs2QkFBQUE7MkJBQUFBO3lCQUFBQTt1QkFBQUE7O29DQUNOM0Ysc0JBRE0yRixhQUFBQTs7b0NBQ04zRjt1QkFETTJGO3VCQUFBQTs7SUFzSEQsWUF0SENBO0dBc0hNO1lBRWRDLFdBQVdwWjtpQkFBcUNBLEdBQUssV0F4SHJEa1osT0F3SGdEbFosSUFBb0I7d0JBQS9CLFNBQUk7SUFBRSxPQUFBLGlDQUFoQ0E7R0FBMEQ7WUFXckVxWixZQUFhaFY7SUFDZixhQXVCT0EsSUFBTSxXQUFOQSxJQUFtQjs7S0FwQnRCLGFBbUJPQSxJQUFNLFdBQU5BLElBQXNCOztNQWhCekIsYUFlT0EsSUFBTSxXQUFOQSxJQUF3Qjs7T0FaM0IsYUFXT0EsSUFBTSxXQUFOQSxJQUF5Qjs7UUFSNUIsYUFPT0EsSUFBTSxXQUFOQSxJQUFzQjs7U0FKekIsYUFHT0EsSUFBTSxXQUFOQSxJQUFxQjs2QkFEZixXQWxCbEJBLElBa0I0QztTQURyQyxVQXB1QmxCbVQsYUFtdEJXblQ7U0FtQk8sT0FBQTtRQUEyQjtRQUwvQixVQW51QmRrVCxjQXF0QldsVDtRQW9CRyxPQUFBO09BQTRCO09BVGhDLFVBbHVCVmlULGlCQXV0QldqVDtPQXFCRCxPQUFBO01BQStCO01BYm5DLFVBanVCTmdULFdBeXRCV2hUO01Bc0JMLE9BQUE7S0FBOEI7S0FqQmxDLFVBaHVCRitTLGNBMnRCVy9TO0tBdUJULE9BQUE7SUFBNEI7SUFyQmhDLFVBL3RCRThTLFdBNnRCVzlTO0lBd0JiLE9BQUE7R0FBeUI7WUFFekJpVixnQkFBZ0JqVjtpQkFBdUNBLElBQU0sV0ExQjdEZ1YsWUEwQnVEaFYsS0FBMkI7d0JBQXRDLFNBQUk7SUFBRSxPQUFBLGlDQUFsQ0E7R0FBbUU7WUFFbkZrVjtJQUVGLG9CQUdZLDhCQUFtQjs7S0FEbEI7O0lBQTRCO0lBQ3ZDLE9BQUE7R0FBOEI7R0FHaEM7SUFERUM7TUFDRjs7U0FHTTtVQURFM1M7O2FBeHNDTnlHOztjQUFBQTs7ZUFBQUE7O2dCQUFBQTtvQkFBQUE7U0FndENFO1VBQ1k7MEJBQWVtTSxHQUFLLE9BQUEsaUNBQUxBLEdBQXFCO1dBQTFDQyxNQUFNLGlDQVRSN1M7V0FVRixlQUFJdkMsVUFBWSxPQURab1YsSUFDQXBWLFVBQWtFO1VBQXRFOzs7OztVQUVBO1dBQUlxVixzQkFBUyxPQUFZLG1DQUE2QjtXQUNsREMsV0FEQUQ7VUFFSixnQkFBSXJWO1dBQ0Y7WUFBSWxDLElBSEZ1WDtZQUlFRSxLQUhGRCwrQkFFRXhYO1lBRUEwWCxPQURBRCxlQUFBQTtXQUhGRCxVQUVFeFg7V0F2dENWa0wsa0JBc3RDUWhKLFVBR0V3VjtXQUVHLFNBQTJDOztRQUFBO1lBSXhEQztJQUFrQixXQS90Q2xCek07SUErdENpQyxPQUFBO0dBQStDO1lBRWhGME07SUFDTSxXQXJrQ05qTDtJQXNrQ2EsT0FBQTtHQUFrQztZQUUvQ2tMO0lBQ00sV0F6a0NObEw7SUEwa0NhLE9BQUE7R0FBK0I7T0FFNUNtTDtZQU1BQyxXQUFXN1YsVUFBUzZJO0lBQ2IsSUFBTHpJO2FBQ0kwVixLQUFLak47S0FDWCxpQkFEV0E7VUFDRGtOLFNBRENsTixpQkFDUG1OLE9BVEpKOztVQVNVRyxhQUFOQyxPQURPbk47O01BSVBvTixLQUhNRixlQUhDL1YseUIsT0FFTDhWLEtBQ0lDO0tBRlIzVixZQWh2Q0Y0SSxrQkFzdkMrQiw4QkFEM0JpTixLQUhBRDs7SUFJaUU7SUFML0RGLEtBRmNqTjtJQVN0QixPQVJJekk7R0FTRjtZQUVBOFYsYUFBYzlWO0lBQ2hCLFlBRGdCQTtnQkFFTjtRQUNIdkk7SUFIU3VJO1dBM3ZDZDRJLG9CQTh2Q0tuUjtHQUVtQjtZQUV4QnNlLHVCQUF3QmhCLEdBRTFCLE9BQVcsY0FGZUEsR0FFc0M7Ozs7T0E1MkQ5RHRNOztPQTBuQkFPO09BTkFEO09BUUFFO09BZEFKO09BMU5BSDtPQW9OQUU7T0FuakRBbEs7T0FFQUM7T0FFQUU7T0FFQUU7T0FpZ0VBRTtPQUVBOFQ7O1FBOS9ERTNQO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBSUFFO1FBRkFEO1FBSUFFO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF0QztRQUVBdUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTVDO1FBRUFEO1FBRUE4QztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBcEQ7UUFFQXFEO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF6RTtRQUVBMEU7UUFFQW5NO1FBRUFvTTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBdEo7T0FPRkM7T0FGQVU7T0FJQUU7T0F5MkRBc1Q7T0FZQUc7T0FuM0RBdFQ7T0E0MURBa1Q7T0FsQkFIO09BTUFDO09BT0FDO1dBOGNFZSxVQXZHQUw7V0EwSEFTO09BNzBCRjdLO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDOztPQUlBQztPQStxQkE2RjtPQW9FQUM7T0F3SEFFO09BV0FDO09BMEJBQztPQUVBQzs7UUExNEJFdFc7UUFrQkE5RDtRQUVBdVU7UUFvSEFzRDtRQWxIQXJEO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBTUFHO1FBSkFGO1FBRUFDO1FBSUFFO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUE5WTtRQUVBK1k7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTFZO1FBRUFrRjtRQUVBeVQ7UUFFQUM7UUFFQTlQO1FBRUErUDtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUlBRTtRQU9BRTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztPQWd5QkYyQztPQVlBSztPQU9BQztPQTdEQWpCOztPQXg5R0EzUjtPQWsvR0FrUztPQUVBQztPQUlBQzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztJRzE5R0EyQjs7OztZQUVBQyxPQUFPMUY7SUFBUyxXQUZoQnlGLE9BRThCLHdCQUF2QnpGO0dBQXNDO1lBRTdDMkYsZUFBZUM7SUFDakI7V0FBTztLQUNGO0lBRzRDO0tBQUEsTUFBQSw2QkFMaENBO0tBS2YsTUFBQTs7SUFGRixPQUFBO0dBRXlFO1lBRXZFQyxjQUFjM1k7SUFDaEI7V0FBTztLQUNGO2FBQ0Q0WSxlQUF5QyxPQUFRLFdBSHJDNVksa0JBRzhDO0lBQ2pDO0tBQUEsS0FBQSw4QkFEekI0WTs7O0dBQ2lEO1lBRW5EQyxhQUFhQztJQUNmO1dBQU87S0FDRjs2Q0FGVUE7R0FHZTs7O1VBbEI1Qk4sUUFFQUMsZ0JBT0FFLGVBTUFFOzs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lHL0NBWSxPQUFPemM7SUFBSSw4QkFBMkIsdUJBQS9CQTtHQUFnRTtZQUV2RTBjLGlCQUFpQjFjO0lBQUksOEJBQTJCLHVCQUEvQkE7R0FBaUU7WUFFbEYyYyxpQkFBaUIzYyxHQUFFdEQ7SUFDd0I7V0FBQSxnQ0FBVyw4QkFEbkNBO0lBQ3JCLDhCQUEyQix1QkFEUnNEO0dBQytDO1lBRWhFNGMsb0JBQW9COWQsR0FBRXlCO0lBQ3hCO0tBQThELE1BQUE7SUFBWTtJQUExQyxVQUFBLCtCQURWekIsR0FBRXlCO0lBQ3hCLE9BQUEsdUJBQWlCO0dBQTJEO1lBRTFFc2Msa0JBQWU3YztJQUNqQjtJQUFBO0tBQUE7S0FDNkIsTUFBQSxTQUFTLHVCQUZyQkE7S0FFQSxNQUFBO0lBQUEsT0FBQTtHQUF3RDtZQUV2RThjLFlBQVM5YztJQUNYO0lBQUEsYUFJVStjO0tBQ08sVUFBQSwrQkFEUEE7S0FFSDtJQUFnQjtJQUhsQjtLQUFBLE1BQUEsU0FBUyx1QkFKSC9jO0tBR1QsTUFBQTtJQUFBLE9BQUE7R0FJdUI7WUFJdkJnZCxlQUFlQyxHQUFJLE9BbEJuQkwsb0JBa0JlSyxNQUEyQjtZQUUxQ0MsY0FBY0QsR0FBRTFjO0lBQ2xCO0tBQW1DLE1BQUEsK0JBRG5CMGMsR0FBRTFjO0tBQ0UsTUFBQTtJQUFBLE9BQUE7R0FBbUQ7R0FFckQsSUFBaEI0YztZQUVBQyxXQUFXcGQ7SUFBSSxPQUFBLHVCQUFKQSxXQUZYbWQ7R0FFMEU7WUFFMUVFLG9CQUFpQnJkLEdBQUVzZDtJQUNyQjtJQUNBLE9BQUE7YUFBaUIsdUJBRkV0ZCxnQkFGakJvZCxXQUVtQkU7R0FFOEM7WUFFakVDLGNBQWNDLEtBQUV4ZCxHQUFFc2Q7SUFDcEI7S0FDbUMsUUFGbkJFO0tBQ1pDLFFBRFlEO0tBUVpQLDJCQVJZTyxZQUNaQztJQVFKLE9BQUE7YUFBaUIsdUJBVEN6ZCxXQVFkaWQsR0FkRkcsV0FNa0JFO0dBU2dEO1lBRWxFSTtJQUNGLElBQWlCQyw0QkFBTEMsVUFBSzdlLE1BQUE0ZTtJQUNmO1lBRGU1ZSxLQUNDLE9BRE42ZTtLQUNnQjtNQURYQyxRQUFBOWU7TUFBTCtlLGFBM0NWbEIseUJBMkNlN2QsTUFBTDZlO01BQUFBLE9BQUFFO01BQUsvZSxNQUFBOGU7O0dBR007WUFFckJFLFdBQVEvZDtJQUNWO0lBQytCLFVBQUEsdUJBRnJCQTtJQUVPLE9BUmYwZCxpQkFRZTtHQUFvRDtZQUVuRU0sbUJBQWdCaGUsR0FBRU87SUFDcEI7SUFDK0IsVUFBQSx1QkFGYlAsY0FBRU87SUFFSCxPQVpmbWQsaUJBWWU7R0FBNkQ7R0FJakUsSUFBWE8sV0FqRUF4QjtZQW1FQXlCLE1BQU1sZTtJQUFJLE9BQUE7YUFBaUIsdUJBQXJCQSxXQUZOaWU7R0FFcUY7WUFFckZFLGNBQWNuZSxHQUFJLE9BckVsQnljLE9BbUVBeUIsTUFFY2xlLElBQW9CO1lBRWxDb2Usd0JBQXdCcGUsR0FBSSxPQXJFNUIwYyxpQkFpRUF3QixNQUl3QmxlLElBQThCOzs7O09BdkV0RHljO09BRUFDO09BRUFDO09BK0RBdUI7T0FFQUM7T0FFQUM7T0E3REF2QjtPQUlBQztPQUFBQTtPQVdBRTtPQUVBRTtPQU9BRztPQUlBRTtPQWlCQVE7T0FJQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDdkRKOzs7OztJQUFBOzs7Ozs7O1lBRUlLLGlCQUFlLE1BQUEsMENBQWU7R0FJcEI7SUFBVkMsVUFBVTtJQU1VO1lBTXBCQywyQkFBMkJ2ZTtJQUM3QjtlQUQ2QkE7SUFDN0IsT0FBQSx1QkFBaUI7R0FBeUM7WUFFeER3ZSxVQUFVeGU7SUFBa0M7O09BQUE7U0FYMUIsbUNBSmxCc2UsU0FlVXRlO0lBQUksT0FBQSx1QkFBaUI7R0FBK0M7WUFLOUV5ZSxVQUFZQyxLQUFrQjFlO0lBQ2hDLEdBRGMwZSxTQUFZaEUsTUFBWmdFLFFBQUFDLFlBQVlqRSxjQUFaaUU7SUFDZCxLQURjQTtLQUdULE9BQUE7Y0FBaUIsK0JBQVcsdUJBSEQzZTtJQUVmO0tBcEJIUztPQW9CRztTQUFrQiwrQkFBVyx1QkFGZFQ7SUFsQmQsT0FBQSxtQ0FGaEJzZSxTQUVZN2Q7R0FxQnFDO0dBNkJyRDtJQUFBOztJQVNJbWU7SUFFQUM7WUFHQUMsb0JBQW9COWU7SUFDdEIsSUFBSXdHLDBCQURrQnhHO2FBRWQrZSxJQUFJeGU7S0FDVixJQUFZLElBQUEsT0FBQSxzQ0FIUVAsR0FFVk8sUUFDTnllOzs7OztVQUFBQSxJQUZGeFk7O0tBR1MsSUFBUHlZLE9BQU8sc0NBSlNqZixHQUVWTyxHQUNOeWUsSUFETXplO1lBRFJpRyxLQUVFd1ksUUFDQUMsZUFBQUEsTUFGRUYsSUFDRkM7SUFFNEM7SUFFNUMsSUFHSmxnQixJQVJNaWdCO09BUU5qZ0IsNEJBQUFBO2dCQUFBQTtnQkFGVTs4REFDSTs7SUFDVCxPQUFMQTtHQUFNO1lBR05vZ0IsaUJBQWlCMVk7O0tBQ1M7TUFBU2pCO01BQUhuRDtNQUE2QixPQTVEN0RxYyxhQTREbUNsWjtNQUFvQixPQUFBO01BQWQsT0E1RHpDa1osYUE0RGdDcmM7S0FBdUIsT0FBQTtJQUFrQjtJQUF6RCxXQUFBLGtDQURDb0U7SUFDRCxPQUFBO0dBQTREO1lBRTVFMlksMkJBQTJCbmY7SUFDN0I7S0EvRjJCO09BOEZFQTtTQTlGUSx3QkFBVztLQUFyQixNQUFBO0tBZ0d2Qm9mO2FBRUlMLElBQUkzZCxLQUFJckM7S0FDZCxJQURjOGUsUUFBQTllO0tBQ2Q7YUFEYzhlLE9BRVQsT0FGS3pjO01BSVI7T0FFb0I7ZUFOUnljOzttQkFNOEM3ZDs7WUFDSDthQUFTakU7YUFBSEQ7YUFFekMsT0FuRnRCeWlCLDJCQWlGa0V4aUI7WUFFbkQsV0FuRmZ3aUIsMkJBaUYrRHppQjtXQUVuQztXQXhHbEI7WUFBUnVqQjtjQXFHMERyZjtnQkFyR3ZDO2tCQUFXO1dBQ2xDLFFBRElxZjtZQUMwRDthQUFBLE9Bb0dBcmYsUUFyRzFEcWY7YUFDdUMsV0FvR21CcmYsV0FyRzFEcWY7b0JBQ3VDOzs7V0FxR2dCLE9BQUEsdUNBakd6RGhCO1VBbUc0QjtRQUhOLE9BQUEsb0NBTlJSO1FBS1Y7VUFMRWtCO2dCQU1DLHVDQWhHUFYsa0JBMEZVamQ7O09BS047Ozs7O09BT2dCLElBWk51YyxRQUFBRSxlQUFBQSxRQUFBRjs7O0lBWXdCO0lBRXhDLE9BZFFvQixPQUZKSztHQWdCWTtZQUVkRSxpQkFBaUJ0ZjtJQUFJLE9BcEJyQm1mLDJCQW9CZ0QsdUJBQS9CbmY7R0FBZ0Q7R0FHbkU7SUFERXVmOzs7O0lBS0FDOzs7O1lBSUFDLGlCQUFpQnpmO2lCQXVCWjBmO0tBQ0g7TUFBSXpjLE1BQU0sK0JBRFB5YztNQUVnQyxPQUFBLCtCQUQvQnpjO01BbkZJMGMsY0FvRlksdUNBOUl0QnRCO01BMkRJLFFBQUEsdUJBRE1zQjs7Ozs7Ozs7Ozs7Ozs7WUFvRkpDOzs7V0FBQUE7O01BS0o7T0FBQSx1QkFFbUQsY0FBZ0I7T0FBaEQsT0FBQSwrQkFSZjNjO09BTUE0YztTQW5JTnRCO1dBcUlNO09BRUosdUJBY3dELGNBQWdCO09BQWpELE9BQUEsK0JBeEJuQnRiO09BdUJFO1NBcEpSc2I7V0FxSlU7OEJBSCtDLGNBQWdCO09BQWhELE9BQUEsK0JBckJuQnRiO09Bb0JFO1NBM0VSa2M7V0E0RVU7T0FKTSxPQXhGaEJMLG9CQTZFTWU7OEJBVXNELGNBQWdCO09BQWhELE9BQUEsK0JBaEJ0QjVjO09BSUFqRDtTQVdJLHVCQUNHOzs4QkFaUEE7WUFBSyxtQkFBTEE7WUFIQTRmO09BVzRDLE9BQUEsK0JBWjVDM2M7T0FVQTZjOztVQXZJTnZCO1lBeUltQyx1Q0F6Sm5DRjs7O1VBbUpNd0I7OztPQXFCSixPQTFCSUQsVUFTQUUsV0FBQUE7TUFpQko7O0tBMUdzQixNQUFBO0lBMEdvQjs7a0JBNUNuQ0o7TUFDSDtPQUFJemMsTUFBTSwrQkFEUHljO09BR3lDLE9BQUEsK0JBRnhDemM7T0FDQTRjO1NBOUdWdEI7V0ErR21DLHVDQS9IbkNGO01BaUlNLHFCQVMwRCxjQUFnQjtNQUFoRDtPQUFBLE9BQUEsK0JBYnRCcGI7T0FZSztTQUFBLHVCQUNFOzJCQUgrQyxjQUFnQjtNQUFoRDtPQUFBLE9BQUEsK0JBVnRCQTtPQVNLO1NBaERma2M7V0FpRGlCO01BTlg7c0JBM0ROTCxvQkF3RFVlLFdBQUFBO0tBYUc7eUJBaEJFLFNBQUk7S0FEZixVQVRKTCxhQUlpQnhmO0tBT2IsT0FBQTtJQWVVO0lBcEJkLFVBWEF1ZixZQVNpQnZmO0lBdUJqQixPQUFBO0dBNEI2QztZQUU3QytmLGNBQWMvZjtJQUFJLE9BckRsQnlmLGlCQXFEbUMsdUJBQXJCemY7R0FBc0M7WUFFcERnZ0I7SUFBZ0I7Ozs7UUFnQkVDO1FBRENDO1FBRExDO1FBREFDO1FBREFDOytCQUlJSjtRQWdCSDtTQUFBLE1BcExmeEIsYUFvS2tCd0I7ZUFnQlQ7OztVQWpCVUM7UUFhRjtTQUFBLE1BckhqQmhCLGlCQXdHbUJnQjtlQWFSOzs7T0FGUDtRQUFBLE1BQUE7dUJBRGlDcGtCLEdBQUssT0E3SzFDMmlCLGFBNktxQzNpQixHQUFnQjtRQUEvQixNQUFBLGlDQVhScWtCO1FBV1YsTUFBQTtRQUFBLE1BQUE7UUFEQSxNQUFBO2lCQVhVQzs7O1FBVUc7U0FBQSxNQUFBLHVCQVZIQTtlQVVIO09BRlA7UUFBQSxNQUFBO1FBREEsTUF4S0ozQixhQWdLYzRCO1FBUVYsTUFBQTtPQUFBLE9BQUE7Ozs7UUFrQmNDO1FBRENDO1FBRExDO1FBREFDO1FBREFDOytCQUlJSjtRQWdCSDtTQUFBLE1BMU1mN0IsYUEwTGtCNkI7ZUFnQlQ7OztVQWpCVUM7UUFhRjtTQUFBLE1BM0lqQnJCLGlCQThIbUJxQjtlQWFSOzs7T0FGUDtRQUFBLE1BQUE7dUJBRGlDemtCLEdBQUssT0FuTTFDMmlCLGFBbU1xQzNpQixHQUFnQjtRQUEvQixNQUFBLGlDQVhSMGtCO1FBV1YsTUFBQTtRQUFBLE1BQUE7UUFEQSxNQUFBO2tCQVhVQzs7O1FBVUc7U0FBQSxNQUFBLHVCQVZIQTtlQVVIO09BRlA7UUFBQSxNQUFBO1FBREEsTUE5TEpoQyxhQXNMY2lDO1FBUVYsTUFBQTtPQUFBLE9BQUE7Ozs7UUF6Q3NEQztRQUFwQkM7UUFBckJDOytCQUF5Q0Y7UUFTM0M7U0FBQSxNQTlKZmxDLGFBcUowRGtDO2VBU2pEOzs7VUFUNkJDO1FBS3JCO1NBQUEsTUEvRmpCMUIsaUJBMEZzQzBCO2VBSzNCOzs7T0FGUDtRQUFBLE1BQUE7dUJBRGlDOWtCLEdBQUssT0F2SjFDMmlCLGFBdUpxQzNpQixHQUFnQjtRQUEvQixNQUFBLGlDQUZMK2tCO1FBRWIsTUFBQTtRQUFBLE1BQUE7T0FBQSxPQUFBOztHQW1EdUI7R0FJVDs7SUFBQSxNQUFBO0dBQWYsR0FBQTs7OztnQ0EyQm1CLFNBQUU7Z0NBRkQsU0FBRTsyQkFGTCxTQUFFOzs7Ozs7Ozs7Ozs7Ozs7R0FPYjtJQUFQUixPQXBQRjlCO0lBc1BFdUMsV0F0UEZ2QztHQTBQRTtJQUFJO0tBQUEsVUFBSyxtQkFBZTtLQUZ4QjZCOzs7OztRQUFBQTs7R0FLYztJQUFkVyxjQTdQRnhDO0lBK1BFNEIsT0F6TUZyQixvQkF1TUVpQztJQU1JLE1BQVUsaUNBQ1I7SUFITkMsY0EzTEY3QjtZQWlNRThCO0lBQ00sSUFBSmpoQixJQUFJO1dBQ1Isc0JBRElBO0tBQ2lDLFVBQUEsd0JBRGpDQTtLQUNzQixHQUFBO01BRGxCLE9BQUE7O2VBQUpBOztxQ0FBQUE7O0lBR0MsT0FIREE7R0FHRTtZQUVKa2hCLGFBQWFsaEI7SUFBZ0IsVUFBQSx1QkFBaEJBOztHQUErQjtZQUU1Q2hELFdBQVMsT0ExS1h5aUIsMkJBMEtvQztZQUVsQ25hLElBQUk2YjtJQUFnQixVQUFBLHVCQXJIdEJuQixjQXFITW1COztHQUErQztHQUV2QztJQUFaQyxZQW5SRjdDOzs7T0FHQUM7T0FLQUM7T0F5Q0FHO09BRUFDO09BR0FDO09BYUFJO09BdUJBSTtPQWdFQVM7T0FFQUM7O1FBd0ZFSztRQUlBRDtRQUZBVTtRQU9BQztRQUVBWjtRQUVBYTtRQU1BQztRQU1BQztRQUVBbGtCO1FBRUFzSTtRQUVBOGI7OztFOzs7Ozs7OztHOzs7Ozs7OztZRS9RRmEscUNBQWdFLFVBQWtCO21DQU1sRkM7WUFGQWxHO0lBQWtCLE9BRkQsaUNBSWpCa0c7R0FGK0M7WUFTL0NDLFFBQ0VDLE1BQ0ExbEIsR0FDQTJsQjtJQUVNLElBQU5DLFVBWkZKLGVBWThCLDhCQUg1QnhsQjtJQUlKLEdBSEkybEI7S0FNVyxZQU5YQSxRQU1XOztLQUpYQyxZQUpBRjs7O0tBSUFFLFlBSkFGO0lBTU0sT0FGTkU7R0FPRDs7OztPQXpCREw7T0FNQUM7T0FGQWxHO09BU0FtRzs7OztFOzs7Ozs7R1MrRFU7O0lBQVZtTSxVQUFVOzhCQUFWQTs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZSWxIQWEsVUFBVUMsR0FBRUM7SUFBSSxPQUFZLDZCQUFsQkQsR0FBa0IsaUJBQWhCQztHQUE0QjtZQUV4Q0MsVUFBVUYsR0FBRUM7SUFBSSxPQUFBLG1CQUFNLDZCQUFaRCxHQUFFQztHQUF5QjtZQUVyQ0UsUUFBUUY7SUFBSSxPQUFpQiw0QkFBQSxpQkFBckJBO0dBQStCO1lBRXZDRyxRQUFRQztJQUFJLE9BQUEsbUJBQVMsNkJBQWJBO0dBQStCO1lBRXZDQyxTQUFTTixHQUFFQztJQUFxQixVQVJoQ0YsVUFRU0MsR0FBRUM7SUFBcUIsT0FBQTtHQUFhO1lBRTdDTSxTQUFTUCxHQUFFQztJQUFJLE9BUmZDLFVBUVNGLEdBQXFCLDZCQUFuQkM7R0FBa0M7WUFFN0NPLE9BQU9SO0k7UUFBc0NTO0lBQVMsT0FBQSxnQkFBQSxXQUEvQ1QsR0FBc0NTOztZQUU3Q0MsVUFBVVYsR0FBRVM7SUFDUixZQUFBLHVCQURRQTtnQkFDd0I7UUFBWUU7SUFBSyxXQUFLLFdBRGhEWCxHQUNzQ1c7R0FBZTtZQUUvREMsV0FBV0MsS0FBSWIsR0FBRVM7SUFDYixZQUFBLHVCQURhQTtnQkFDbUIsT0FEekJJO1FBQ29DRjtJQUFLLE9BQUEsV0FEckNYLEdBQ2dDVztHQUFRO1lBRXZERyxTQUFTRCxLQUFJSjtJQUFVLFlBQUEsdUJBQVZBO2dCQUEwQyxPQUE5Q0k7UUFBeURGO0lBQUssT0FBTEE7R0FBTTtZQUV4RUksUUFBUWYsR0FBRVM7SUFDTixZQUFBLHVCQURNQTs7UUFDMkNFO0lBQVMsT0FBQSxnQkFBQSxXQUR0RFgsR0FDNkNXO0dBQWM7WUFFbkVLLE9BQU9oQixHQUFFUztJQUNMLFlBQUEsb0JBREtBO2dCQUN3QjtRQUFZRTtJQUFLLFdBQUssV0FEaERYLEdBQ3NDVztHQUFlO1lBRTVETSxJQUFJakI7STtRQUFpQ1M7SUFBVSxPQUFBLGlCQUFBLFdBQTNDVCxHQUFpQ1M7O1lBRXJDUyxRQUFRbEIsR0FBRVM7SUFDTixZQUFBLG9CQURNQTs7UUFDbUNFO0lBQVUsT0FBQSxpQkFBQSxXQUQvQ1gsR0FDcUNXO0dBQWU7WUFFNURRLE9BQU9DLEdBQUksa0NBQUpBLEdBQTBCO1lBRWpDQyxRQUFRQztJQUFJLGtDQUFxQix3QkFBekJBO0dBQW1DO1lBRTNDQyxJQUFJQztJQUNOO2lCQUNPQTtLQUFRLE9BTmJMLE9BTW9CLHdCQUFRO0lBQWdDO0lBRDlELE9BQUEseUNBRE1LO0dBR29CO1lBRXhCQyxnQkFBZ0JIO0lBQUksd0JBQW9CLHdCQUF4QkE7R0FBa0M7WUFDbERJLFVBQVUxQixHQUVWMkI7SSxHQUFBQTtLQUFZLE9BQUE7Y0FGRjNCLEdBRFZ5QixnQkFHK0IsK0JBQS9CRTtRQURhQyxJQUNiRDtJQURvQixPQUFBLFdBRFYzQixHQUNVLHlCQUFQNEI7O0dBS0csSUFBZEMsZUFFQUM7WUFLQUMsUUFBU3RCO0lBQW1CLFVBQW5CQSxNQUxUcUIsbUNBS1NyQixLQVBUb0I7SUFPOEM7R0FBZ0I7WUFDOURHLElBQU1mO0ksR0FBQUEsU0FBS2dCLE1BQUxoQixRQUFBaUIsT0FBS0QsY0FBTEMsT0FOTko7b0JBTWtDOUIsR0FDcEMsT0FGRStCLGFBQ01HLGtCQUE0QmxDLE1BQ2E7O1lBQy9DbUMsS0FBT2xCO0ksR0FBQUEsU0FBS2dCLE1BQUxoQixRQUFBaUIsT0FBS0QsY0FBTEMsT0FSUEo7b0JBUW1DOUIsR0FDckMsT0FKRStCLGFBR09HLGtCQUE0QmxDLE1BQ0c7O1lBQ3RDb0MsS0FBTTNCLEdBQW1CLFdBTHpCc0IsUUFLTXRCLEdBQWtDO1lBQ3hDNEIsS0FBTTVCLEdBQVdUO0lBQWdDLGNBTmpEK0IsUUFNTXRCO2lCQUE0RCxXQUFqRFQsR0FBWFM7R0FBd0U7WUFDOUU2QixPQUFNN0IsR0FBV1QsR0FBaUJ1QztJQUFxQixPQVB2RFIsUUFPTXRCLEtBQW1FLFdBQXhEVCxRQUFrRSxXQUFqRHVDLEdBQTVCOUI7R0FBeUY7WUFDL0YrQixJQUFLL0IsR0FBV1QsR0FBdUIsT0FSdkMrQixRQVFLdEIsS0FBb0QsV0FBekNULFFBQVhTLEVBQXdFO1lBQzdFZ0MsT0FBU3hCO0ksR0FBQUEsU0FBS2dCLE1BQUxoQixRQUFBaUIsT0FBS0QsY0FBTEMsT0FkVEo7SUFja0QsUUFDMUMsT0FEQ0k7UUFFSnZCO0lBQUssT0FBTEE7O1lBQ0wrQixVQUFXakM7SUFBd0IsYUFBNkJBLEdBQUssV0FBTEEsR0FBVztJQUFoQixPQUwzRDZCLE9BS1c3QixtQkFBMEMsU0FBSTtHQUFtQjtZQUM1RWtDLEtBQU8xQjtJLEdBQUFBLFNBQUtnQixNQUFMaEIsUUFBQWlCLE9BQUtELGNBQUxDLE9BbEJQSjtJQWtCcUU7S0FBQSxZQUFBLE9BQTlESTtTQUVGekI7S0FBSyxPQUFBLGNBQUxBLEdBQWlCOztZQUN0Qm1DLFFBQVM1QyxHQUFlUztpQkFBcURBLEdBQUssV0FBSyxXQUE5RVQsR0FBb0VTLElBQWU7SUFBcEIsT0FUeEU2QixPQVN3QjdCLG1CQUEwQyxTQUFJO0dBQXVCO0dBekJyRjs7O09BRVJvQjtPQUVBQztPQUtBQztPQUNBQztPQUVBRztPQUVBQztPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUdBQztPQUNBQztPQUdBQztZQU1FQztJQUFrQjtJQUFBOztTQUVqQkMsZ0JBQUxDO1FBQWdCLHVCQUFoQkEsSUFBOEUsT0FBOUVBO21CQUFLRDs7R0FBMEU7WUFFL0VFLFlBQVkzQztJQUFJLE9BSlp3QyxnQkFJNEIsdUNBQXBCeEM7R0FBOEM7dUJBRTFENEM7WUFDQUMsT0FBUUMsSUFBV0MsSUFBWSxPQUQvQkgsaUJBQ1FFLElBQVdDLElBQW1EO1lBQ3RFQyxZQUFZaEQ7SUFBSSxPQUFjO2FBRjlCNEMsdUJBRW1FLDZCQUF2RDVDO0dBQXlFO1lBRXJGaUQsaUJBQWlCbEM7SUFDUixJQUFQbUMsT0FBTyx3QkFEUW5DO1dBQ2ZtQzthQUNVO3dCQUFvQkM7Z0JBQzlCO2lCQUFvQixNQUhMcEMsRUFFZW9DO2lCQUN2QixVQUFBO29DQUhRcEMsRUFFZW9DO2dCQUNhO2VBQWlCO0dBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EzRmhFekQ7T0FFQUc7T0FFQUM7T0FFQUM7T0FFQUU7T0FFQUM7T0FFQUM7T0FFQUU7T0FHQUU7T0FHQUU7T0FFQUM7T0FHQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FFQUU7T0FFQUU7T0FLQUU7T0FDQUM7O09BbUNJbUI7T0FJSkc7T0FFQUM7T0FDQUM7T0FDQUc7T0FFQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lNaEZBZ0k7SUFBYzs7T0FDRjs7T0FDQztlQUNJOztHQUFzQjtZQUV2Q0M7SUFBbUI7O09BQ1g7O09BQ0E7O09BQ007ZUFDQTs7R0FBbUI7R0FFUSxJQUF6Q0MsMkJBQ0FDO1lBRUFDLFdBQVcsaUJBQVU7WUFFckJDLEtBQU1DLE9BQU9DLFVBQVNDO0lBQ3hCOzRCQUR3QkE7OztlQUFBQTs7OENBQUFBOytDQUFBQTs7S0FHTDs7aUJBQWVDO1NBQUssT0FBQTsyQkFBbUJDLEdBQU0sT0FBRSxXQUFoQ0QsY0FBMEM7UUFBQztNQUExRCxLQUFBLHFDQUhKRjs7S0FJRTs7aUJBQWVFO1NBQUssT0FBQSwrQkFBbUJDLEdBQU0sT0FBekIsV0FBTEQsT0FBaUM7UUFBQztNQUFqRCxLQUFBLHFDQUpUSDs7S0FJTjs7VUFDR0s7U0FBQUMsMEJBQUFEO0tBQ0gsS0FOTUwsT0FNbUIsTUFBQSw0QkFEdEJNO1NBQ3VDSCxJQU5wQ0gseUJBTXdESSxHQUFLLE9BQUEsV0FBekJELEdBQW9CQyxHQUF3QjtLQUF2QyxPQUFBLDhCQUQ1Q0U7O0dBQ3dGO1lBRTNGQyxNQUFPUCxPQUFPQyxVQUFTTyxHQUFFTjtJQUMzQjs0QkFEMkJBOzs7ZUFBQUE7OzhDQUFBQTsrQ0FBQUE7O0tBR1I7O2lCQUFlQztTQUFLLE9BQUE7MkJBQW1CQyxHQUFNLE9BQUUsV0FBaENELEdBQWdDLFdBSHpDSyxlQUd3RDtRQUFDO01BQS9ELEtBQUEscUNBSEhQOztLQUlDOztpQkFBZUU7U0FBSyxPQUFBLCtCQUFtQkMsR0FBTSxPQUF6QixXQUFMRCxPQUFpQztRQUFDO01BQWpELEtBQUEscUNBSlJIOztLQUlQOztVQUNHSztTQUFBQywwQkFBQUQ7S0FDSCxLQU5PTCxPQU1rQixNQUFBLDRCQUR0Qk07U0FDdUNILElBTm5DSCx5QkFNdURJLEdBQUssT0FBQSxXQUF6QkQsR0FBb0JDLEdBQXdCO0tBQXZDLE9BQUEsOEJBRDVDRTs7R0FDd0Y7WUFFM0ZHLHNCQUFpRCwyQ0FHcEQ7WUFFR0MsT0FBUUMsU0FBU1gsT0FBT1ksU0FBUUMsTUFBS1o7SUFDdkM7S0FBSUo7S0FDQUs7OztTLE9BREFMO2tCQUMyQix3QkFGR2dCO2tCQUVXLGdDQUZuQkQ7O0lBckJ4QmIsS0FxQmlCQyxXQUFvQkMsV0FFbkNDOzJCQUFBQTs7O2VBQUFBOzs4Q0FBQUE7K0NBQUFBOztpQkFJYVk7S0FBSyxPQUFBO3VCQUFtQlY7ZUFDbkMsSUFBSVcsSUFaUk4saUJBV3VDTCxJQUUvQlk7ZUFDSixPQUFBLFdBSFdGLEdBRVBFLElBREFEO2NBRUU7SUFBQztJQUhYLFVBQUEscUNBTlFKOztHQVNZO1lBRXBCTSxpQkFBbUMsdUJBQWU7WUFFbERDO0lBRWtCO0tBRldDO0tBQVZDO0tBRUQsTUFBQSxtREFGV0Q7O1lBQ2pCLHlEQURPQzs7O1lBS25CQyxhQUFjQyxTQUFTTixJQUFvQkg7SUFDN0MsT0FEeUJHO2FBRUgsd0JBRnVCSDthQUVULGdDQVBsQ0ssbUJBS2NJO0dBRXlEO1lBRXZFQyxVQUFXQyxNQUFNUixJQUFvQkg7SUFDdkM7S0FBbUQsTUFBQSxnQ0E1RGpEbkIsYUEyRFc4QjtLQUNUQztPQURlVDtTQUNNLCtCQUFVLHdCQURJSDtXQUNuQ1ksZUFDNkIsd0JBRk1aO0dBRU87O2FBTzFDYSxPQUFRSixTQUFRTixJQUFHSDtLQUNyQixPQWRBUSxhQWFVQyxTQUFRTixJQUFHSDtJQUNRO2FBRTNCYyxNQUFPSCxNQUFLUixJQUFHSCxNQUNqQixPQWJBVSxVQVlTQyxNQUFLUixJQUFHSCxNQUNNO2FBRXJCZSxJQUFLM0IsVUFBVUQsT0FBTzZCLEtBQUtDLElBQWFDO0tBQ0g7Ozs7VUFBcUIsVUFBQSxzQ0FEcENGO2lCQUFLQyxPQUNtQixpQkFETkM7O1lBbEQxQ3hCLE1Ba0RpQlAsT0FBVkM7SUFDNkU7YUFFbEYrQixJQUFLL0IsVUFBVUQsT0FBTzZCLEtBQUtDLElBQWFDO0tBQzFDLE9BOURBaEM7Y0E2RGlCQztjQUFWQzs7O2dCQUM0QyxVQUFBLHNDQUQzQjRCO3VCQUFLQyxPQUNVLGlCQURHQzs7SUFDaUM7YUFFekVFLE1BQU9DLFFBQVFDLFFBQVFDLE9BQU9DO0tBQ08sSUFBbkN6QztLQUNKLEtBRnlCd0M7V0FBT0M7T0FHaEIsTUFBQTtNQUk4QjtPQURqQ0MsVUFObUJEO09BT2MsTUFBQSxtREFQN0JGO01BT2YsV0FORXZDLHVCQU0wQixpQkFEakIwQzs7U0FGTkMsVUFKa0JIO1FBQU9DO01BV0E7T0FIYkcsVUFSYUg7T0FXQSxNQUFBLG1EQVhmRjtPQVdULE1BQUEsbURBWENEO09BVWUsTUFBQSxpQkFGTE07TUFDakIsV0FSRTVDLGtCQVNJLGlCQU5EMkM7O0tBQ3VDLFVBQUEsbURBTHJDTDtLQUtQLFdBSkV0Qyx1QkFJMEIsaUJBRHZCMkM7SUFPaUQ7YUFFdERFLE1BQU96QyxPQUFPNkIsS0FBS0MsSUFBYTdCO0tBQ2xDLEtBRGdCNEI7YUE3RWhCOUI7ZUE2RVNDO21CQUF5QkM7bUMsT0FBYjZCO2lCQUFMRDs7VUFHTmE7YUFoRlYzQztlQTZFU0M7bUJBQXlCQztxQyxPQUFiNkIsU0FHOEMsaUJBQXpEWTs7U0FDQ3hDO1lBakZYSDtjQTZFU0MsV0FBeUJDLCtCLE9BQWI2QixTQUlWNUI7SUFBa0U7YUFFM0V5QyxJQUFLM0MsT0FBTzhCLElBQXFDN0IsVUFBK0J5QztjQUM5RUUsTUFBTUM7TUFBVyxZQUFBLDZCQUFYQTtrQkFDRTtVQUNIQztNQUFNLFdBQUssaUJBQVhBO0tBQXVCO0tBQ2hDLFNBSmtGSjtVQUs5RWIsTUFMOEVhO2FBM0VsRm5DO2VBMkVPUDttQkFBNENDO2VBQy9DMkM7cUMsT0FEVWQsT0FLMkMsaUJBQXJERDs7U0FDQ0ksUUFONkVTO1lBM0VsRm5DO2NBMkVPUDtrQkFBNENDO2NBQy9DMkM7a0MsT0FEVWQsT0FNVEc7SUFBbUU7YUFFdEVjLFFBQVMvQyxPQUFPNkIsS0FBS1ksT0FBT1gsSUFBcUM3QjtLQUNuRSxLQURrQjRCO01BRTBDOzs7O1dBQTJCLFVBQUEsZ0NBRmhFWTtrQkFBT1g7O2FBbkY5QnZCLE1BbUZXUCxXQUF3REMsV0FFbEM7O2lCQUZmNEI7O01BR2dEO09BQXhEYTtPQUF3RDs7O1dBQW1DLFVBQUEsZ0NBSDlFRDtrQkFBT1gsVUFHMEQsaUJBQTlFWTs7YUF0RlZuQyxNQW1GV1AsV0FBd0RDLFdBRzVCOztLQUM0QjtNQUF4REM7TUFBd0Q7OztVLE9BSnJDNEIsVUFJbkI1QixHQUF1RixnQ0FKM0V1Qzs7WUFuRnZCbEMsTUFtRldQLFdBQXdEQyxXQUkzQjtJQUE4RTthQUVwSCtDLFFBQVNoRCxPQUFPOEIsSUFBa0M3QixVQUErQnlDO2NBQy9FRSxNQUFNQztNQUFXLFlBQUEsNkJBQVhBO2tCQUNFO1VBQ0hDO01BQU0sV0FBSyxpQkFBWEE7S0FBdUI7S0FDaEMsU0FKbUZKO1VBSy9FYixNQUwrRWE7YUF6Rm5GbkM7ZUF5RldQO21CQUF5Q0M7ZUFDaEQyQzs7Z0MsT0FEY2QsVUFLMEMsaUJBQXhERDs7U0FDQ0ksUUFOOEVTO1lBekZuRm5DO2NBeUZXUDtrQkFBeUNDO2NBQ2hEMkM7a0MsT0FEY2QsVUFNYkc7SUFBc0U7YUFFekVnQixhQUFjakQsT0FBTzZCLEtBQUtZLE9BQU9YLElBQWtDN0I7S0FDckUsS0FEdUI0QjtNQUVxQzs7OztXQUErQixVQUFBLGdDQUYvRFk7a0JBQU9YOzthQWpHbkN2QixNQWlHZ0JQLFdBQXFEQyxXQUVwQzs7aUJBRlY0Qjs7TUFHMkM7T0FBeERhO09BQXdEOzs7V0FBdUMsVUFBQSxnQ0FIN0VEO2tCQUFPWCxjQUd5RCxpQkFBbEZZOzthQXBHVm5DLE1BaUdnQlAsV0FBcURDLFdBRzlCOztLQUM0QjtNQUF4REM7TUFBd0Q7OztVLE9BSmhDNEIsY0FJeEI1QixHQUEyRixnQ0FKMUV1Qzs7WUFqRzVCbEMsTUFpR2dCUCxXQUFxREMsV0FJN0I7SUFBa0Y7YUFFeEhpRCxTQUFRakQsVUFBVUQsT0FBTzhCO0s7VUFDdkJEO2FBaEhKOUI7ZUErR29CQztlQUFWQzs7Z0MsT0FBaUI2QixVQUMwQixpQkFBakREOztTQUNDSTtZQWpITGxDO2NBK0dvQkMsT0FBVkMsOEIsT0FBaUI2QixVQUV0Qkc7O2FBRUhrQixLQUFNbkQsT0FBTzZCLEtBQUt1QixXQUFXdEIsSUFDNUIzQjtjQUNDRixTQUFTb0Q7TUFDTCxZQUFBLDZCQURLQTtrQkFFRDtNQUVGO09BRERDO09BQ0MsVUFBQSxtQ0FEREE7MkJBQUFBO1VBRUVaO01BQ0wsV0FQSHZDLEdBTVF1QyxHQUNELGlCQUhEWTthQUFBQTtLQUsrQjtLQUN4QyxLQVhlekI7YUFuSGY5QjtlQW1IUUM7bUJBRUpDOzs7aUJBV2tDOztvQkFBQSxnQ0EzSXRDTixrQkE4SG9CeUQ7d0JBQVd0Qjs7aUJBQWhCRDs7VUFjTGE7YUFqSVYzQztlQW1IUUM7bUJBRUpDOzs7aUJBYTBDOztvQkFBQSxnQ0E3STlDTixrQkE4SG9CeUQ7d0JBQVd0QixjQWVFLGlCQUR2Qlk7OztTQUVDeEM7WUFuSVhIO2NBbUhRQztrQkFFSkM7OztnQixPQUYyQjZCO3lCQWdCcEI1Qjt5QkFDK0IsZ0NBL0kxQ1Asa0JBOEhvQnlEOztJQWlCNkQ7YUFFL0VHLEtBQU12RCxPQUFPNkIsS0FBS3VCLFdBQVd0QixJQUM1QjNCLEdBQTZCcUQsT0FBYXZEO0tBQ25DLElBQU53RCxVQUQ0QkQ7Y0FFNUJFLFdBQVNMO01BQ0wsWUFBQSw2QkFES0E7a0JBQWIsT0FBQSxXQUY2Q3BELFVBQ3pDd0Q7TUFLTTtPQURERTtPQUNDLFVBQUEsbUNBRERBOzJCQUFBQTtNQUdILElBREtqQixnQkFDTCxNQVBGZTtNQUFBQSxTQU9TLFdBUlZ0RCxHQU9RdUMsR0FDTSxpQkFIUmlCO2FBQUFBO0tBSytCO0tBQ3hDLEtBWmU5QjthQXRJZjlCO2VBc0lRQzttQkFHSjBEOzs7aUJBV2tDOztvQkFBQSxnQ0EvSnRDL0Qsa0JBaUpvQnlEO3dCQUFXdEI7O2lCQUFoQkQ7O1VBZUxhO2FBckpWM0M7ZUFzSVFDO21CQUdKMEQ7OztpQkFhMEM7O29CQUFBLGdDQWpLOUMvRCxrQkFpSm9CeUQ7d0JBQVd0QixjQWdCRSxpQkFEdkJZOzs7U0FFQ3hDO1lBdkpYSDtjQXNJUUM7a0JBR0owRDs7O2dCLE9BSDJCNUI7eUJBaUJwQjVCO3lCQUMrQixnQ0FuSzFDUCxrQkFpSm9CeUQ7O0lBa0I2RDthQUUvRVEsVUFBVzVELE9BQU82QixLQUFLdUIsV0FBV3RCLElBQ2pDM0I7Y0FDQ0YsU0FBU29EO01BQ0wsWUFBQSw2QkFES0E7a0JBRUQ7TUFFRjtPQUREUTtPQUNDLFVBQUEsbUNBRERBOzJCQUFBQTtVQUVFbkI7TUFDTCxXQVBIdkMsR0FNUXVDO2FBRkZtQjtLQUsrQjtLQUN4QyxLQVhvQmhDO2FBMUpwQjlCO2VBMEphQzttQkFFVEM7OztpQkFXcUM7O29CQUFBLGdDQWxMekNOLGtCQXFLeUJ5RDt3QkFBV3RCOztpQkFBaEJEOztVQWNWYTthQXhLVjNDO2VBMEphQzttQkFFVEM7OztpQkFhNkM7O29CQUFBLGdDQXBMakROLGtCQXFLeUJ5RDt3QkFBV3RCLGlCQWVBLGlCQUQxQlk7OztTQUVDeEM7WUExS1hIO2NBMEphQztrQkFFVEM7OztnQixPQUZnQzZCO3lCQWdCekI1Qjt5QkFDa0MsZ0NBdEw3Q1Asa0JBcUt5QnlEOztJQWlCMkQ7YUFFbEZVLFVBQVc5RCxPQUFPNkIsS0FBS3VCLFdBQVd0QixJQUNqQzNCLEdBQXNCcUQsT0FBYXZEO0tBQzVCLElBQU53RCxVQURxQkQ7Y0FFckJFLFdBQVNMO01BQ0wsWUFBQSw2QkFES0E7a0JBQWIsT0FBQSxXQUZzQ3BELFVBQ2xDd0Q7TUFLTTtPQURETTtPQUNDLFVBQUEsbUNBRERBOzJCQUFBQTtVQUVFckI7TUFOUGUsU0FPUyxXQVJWdEQsR0FPUXVDLEdBTlBlO2FBSUtNO0tBSytCO0tBQ3hDLEtBWm9CbEM7YUE3S3BCOUI7ZUE2S2FDO21CQUdUMEQ7OztpQkFXcUM7O29CQUFBLGdDQXRNekMvRCxrQkF3THlCeUQ7d0JBQVd0Qjs7aUJBQWhCRDs7VUFlVmE7YUE1TFYzQztlQTZLYUM7bUJBR1QwRDs7O2lCQWE2Qzs7b0JBQUEsZ0NBeE1qRC9ELGtCQXdMeUJ5RDt3QkFBV3RCLGlCQWdCQSxpQkFEMUJZOzs7U0FFQ3hDO1lBOUxYSDtjQTZLYUM7a0JBR1QwRDs7O2dCLE9BSGdDNUI7eUJBaUJ6QjVCO3lCQUNrQyxnQ0ExTTdDUCxrQkF3THlCeUQ7O0lBa0IyRDthQUVsRlksTUFBT2hFLE9BQU9DLFVBQVU2QjtLQUNtQiw4QixPQURuQkE7WUF6TDFCdkIsTUF5TFNQLE9BQU9DLDBCQUNpQixTQUFFO0lBQW1CO2FBRXBEZ0U7S0FHVztNQUhnQ0M7TUFBYkM7TUFBUkM7TUFHWCxNQUFBLG1EQUhnQ0Y7TUFFNUIsTUFBQSxtREFGZUM7O2FBQ25CLG1EQURXQzs7OzthQU10QkMsYUFBYy9DLFNBQVNRLElBQW9DakIsTUFBS087S0FDcEQ7TUFBVmtEO1FBQVUsZ0NBUFpMLHNCQU1jM0M7WUFBU1E7Y0FFVCx3QkFGNkNqQjtjQUUvQix3QkFGb0NPO2NBQzlEa0Q7SUFDbUQ7YUFFckRDLGFBQWN6QyxJQUFvQ2pCO0tBQXBDaUIsZUFDVSx3QkFEMEJqQjtLQUMxQztJQUE2QjthQUVyQzJELFVBQVcxQyxJQUFvQ2pCO0tBQ2pELE9BRGFpQixTQUNILHdCQUR1Q2pCO0lBQzFCO0lBbktZO1lBS2pDYTtZQUdBQztZQUdBQztZQUdBSTtZQUdBQztZQWFBUTtZQU1BRTtZQVFBSTtZQU1BQztZQVFBQztZQU1BQztZQUlBQztZQW1CQUk7WUFvQkFLO1lBbUJBRTtZQW9CQUU7WUFHQUM7WUFNQUk7WUFJQUU7WUFHQUM7OzthQVFBQyxNQUFNMUMsR0FBSSxPQUFKQSxFQUFLO2FBQ1hhLE1BQU1iLEdBQUksT0FBSkEsRUFBSztJQUo4RCxXQUd6RTBDLE9BQ0E3Qjs7R0FLb0U7O0lBR3BFNkI7SUFDQTdCO0lBSm9FLGVBR3BFNkIsT0FDQTdCO1lBTUE4QixRQUFNM0MsR0FBSSxPQUFKQSxFQUFxQjtZQUMzQjRDLFFBQU01QyxHQUFJLE9BQUpBLEVBQXFCO0dBSnFDLG1CQUdoRTJDLFNBQ0FDO1lBTUFDLFFBQU03QztJQUE4QixVQUFBLG1CQUFhLHdCQUEzQ0E7SUFBSTtHQUFrRDtZQUM1RDhDLFFBQU05QyxHQUFJLE9BQUEsd0JBQUpBLG9CQUErQjtHQUp3QjtJQUFBLGFBRzdENkMsU0FDQUM7OztPQWpRRm5GO09BS0FDO09BTUFDO09BQ0FDO09BRUFDO09BRUFDO09BUUFRO09BUUFFO09BS0FDO09BV0FPO09BRUFDO09BS0FHO09BSUFFOzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCLE87O1E7OztRLE87O1Esc0M7USxROzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EsTzs7NEI7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7O0c7eUI7NkI7O0k7Ozs7Ozs7OztLOztNO0ssTzs7SSxNO0c7RyxJLEk7O0ksc0M7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7Ozs7USxrQixRO3dCOzs7O2tEO3VDO1E7UyxRO1M7UztTO1M7Ozs7Ozs7Ozt1Qjs7Ozs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksSSxlLG9DOztLO0s7STtJOzs7OztJO1k7Ozs7Ozs7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7dUIsVztHLDZCOztJLFU7STs7Rzs7SSxVO0k7O0c7O0ksVTtJOzZCLE07STtHOztJLFU7STs2QixNO0k7Rzs7STtLO087OztLO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7STs7TztJLE87Rzs7STtLO007O2dCO007TSxNO0s7Ozs7MkI7OztHOztJLEksMkM7OzsyQjs7O0c7O0k7STs7UTs7O007O087O1E7USxZOztROzs7O1k7Ozs7Ozs7OztLLFU7SyxPOztHOztJO2lDO0c7O0k7aUM7Rzs7STtnQjs7Ozs7Ozs7Rzs7STtLOzs7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs4QixvQzs7SSxHLGdDOztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7O0k7Rzs7STtJOzs7Ozs7TTs7TyxvQjs7UTtTO1M7Uzs7OztpQjs7Ozs7OztPO1E7UTtROzs7Ozs7OztLLE87O0c7bUMseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7R0M1RVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR1J1RDtJQUhROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdSQTs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0VrQk47Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O1lBRUlDLGVBQWdCQyxTQUFTQyxLQUFLQyxPQUFNQyxLQUFJQztJQUMxQyxHQURrQko7S0FJQTtNQUFUSyxJQUpTTDtNQUlBLE1BQUEsMkJBSm9CRztNQUNsQ0csWUFHVSxzQkFBTEQ7O1NBSExDLFlBRGtDSDtJQU10QztLQUFBO09BTmdDRDs7Ozs7b0VBQUFBOzs7S0FTMUIsTUFBQSwrQ0FUcUJEO0tBTXZCTSxXQUNRLHNC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QUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2RUFTO09BN0VBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F0RUFUO09Bc0VBUztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUdBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEZBVTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BMERBTTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvR0FXO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVUFDO09BcEJBRjtPQVVBQztPQW9CQUU7T0E5QkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09Bd0NBSTtPQVdBQztPQW5EQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0E2REFNO09BV0FDO09BeEVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQVE7T0FuRkFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNEZBUztPQTVGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxR0FVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQkFFO09BcEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BMkJBRztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bck5BeEI7T0FxTkF3QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWxCQUY7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQUFBQTtPQStEQU87T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0VBUTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXhFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpRkFTO09BakZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTBGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bek1BdkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvT0EwQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBPQTFCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNk9BMkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E3T0EzQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpTEFvQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0FTQUM7T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtP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O0lBQUFDO0lBSVJDO0lBSUFDO0lBQ0FDO0lBTUFDO0lBTUFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBT0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBbURBQztJQUdBQztJQUdBQztJQUdBQztJQUlBQztJQUlBQztJQUlBQztJQUdBQztJQUdBQztJQUdBQztJQU1BQztJQU1BQzs7Ozs7U0F0T0E1RjtTQUlRQztTQUFBQztTQUNBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQzs7U0FJUkM7U0FJQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FJQUM7U0FDQUM7U0FzQkFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBSVFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBSVJDO1NBSUFDO1NBQ0FDO1NBTUFDO1NBTUFDO1NBRUFDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBT0FDO1NBR0FDO1NBSUFDO1NBQ0FDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBTUFDO1NBbURBQztTQUdBQztTQUdBQztTQUdBQztTQUlBQztTQUlBQztTQUlBQztTQUdBQztTQUdBQztTQUdBQztTQU1BQztTQU1BQzs7U0EzR0V2TDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FZQUU7SUF2SUZzTDtJQUlRQztJQUFBQztJQUNBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQzs7SUFJUkM7SUFLQUM7SUFDQUM7SUFvQ0FDO0lBeUJRQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQVFSQztJQUNBQztJQU1BQztJQU1BQztJQUVBQztJQUNBQztJQUNBQztJQUdBQztJQU9BQztJQUdBQztJQUlBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQU1BQztJQW1EQUM7SUFHQUM7SUFHQUM7SUFPQUM7SUFJQUM7SUFJQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFNQUM7SUFNQUM7O0lDMVJBQztJQVVBQztJQUNBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQzs7OztTRG9DQTFFO1NBSVFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDOztTQUlSQztTQ25EQTBDO1NEd0RBekM7U0FDQUM7Ozs7U0N0RUFxQzs7O1NBZUFLO1NBREFEOztTRDRGQXhDO1NDMUZBMEM7Ozs7U0FOQUw7OztTRHlIUXBDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NDeEhSaUM7U0RnSUFoQztTQUNBQztTQU1BQztTQU1BQztTQUVBQztTQUNBQztTQUNBQztTQUdBQztTQU9BQztTQUdBQztTQUlBQztTQUNBQztTQUlBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQU1BQztTQW1EQUM7U0FHQUM7U0FHQUM7O1NBT0FDO1NBSUFDO1NBSUFDO1NBR0FDO1NBR0FDO1NBR0FDO1NBTUFDO1NBTUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0EvSUV0UTtJQXZGRjhRO0lBSVFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDOztJQUlSQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUlBQztJQUNBQztJQXNCQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFJUUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFJUkM7SUFJQUM7SUFDQUM7SUFNQUM7SUFNQUM7SUFFQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFPQUM7SUFHQUM7SUFJQUM7SUFDQUM7SUFJQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFNQUM7SUFtREFDO0lBR0FDO0lBR0FDO0lBR0FDO0lBSUFDO0lBSUFDO0lBSUFDO0lBR0FDO0lBR0FDO0lBR0FDO0lBTUFDO0lBTUFDOzs7OztTQXRPQTVGO1NBSVFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFD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O1lBUUFFO1lBQ0FDO1lBQ0FDO1lBRUFwRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXRXdHO0lBQ0FDOzRCOzRCOzRCOzs0Qjs0Qjs0Qjs7c0I7OzRCOzRCOzRCOzRCOzRCOzRCOztzQjs7NEI7R0FKc0I7Ozs0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qjs0Qjs0Qjs0Qjs0Qjs0Qjs7c0I7c0I7OzRCOzRCOzRCOzRCOzRCOzRCOzRCO0dBcUVKOzs7Ozs7Ozs7Ozs7Ozs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWxFbEJEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLSUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FEQUQ7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7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QUo7WUFuREFoSTtZQUNBMEo7WUFzREFqaUM7WUFDQUU7O1lBc0JFMVo7WUFSRks7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJNbUU7Ozs7Ozs7Ozs7Ozs7S0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaEJ4Qjs7Ozs7S0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFyQmtCOzs7O0tBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSztLQUVRUTtLQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSVo7WUFOSUs7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDO1lBQUEzRTtZQUFBSztZQUVRUTtZQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNDUks7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSztLQUdRUTtLQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSVo7WUFQSUs7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDO1lBQUEzRTtZQUFBSztZQUdRUTtZQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCS0s7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUFBdkQ7VUFBQUc7VUFBQUk7VUFBQUM7VUFBQVQ7VUFBQXNEO1VBQUFDO1VBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBU1BzdEM7Ozs7Ozs7V0FUTzd3QztXQUFBRztXQUFBSTtXQUFBQztXQUFBVDtXQUFBc0Q7V0FBQUM7V0FBQUM7Ozs7O1VBU1BzdEM7Ozs7Ozs7O1lBVE83d0M7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBakJidkQ7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUE1RTtLQUFBSztLQUVRNDRDO0tBQ0FwNEM7S0FB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VUFqRkFqRztVQUFBRztVQUFBSztVQUFBRDtVQUFLUjtVQUFMc0Q7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQStSO1VBQUE5UjtVQUFBQztVQUFBOUU7VUFBQUs7OztVQXFJQW1IO1VBQUFHO1VBQUFHO1VBQUFEO1VBQUtOO1VBQUxLO1VBQUFHO1VBQUFDO1VBQUFDO1VBQUF3dkQ7VUFBQXR3RDtVQUFBK0I7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0dqRlE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEwQlZ4Z0U7SUFDQUM7SUFDQWk1TjtJQUNBdHhHO0lBQ0F1eEc7R0FPSztHQUdhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1E7Ozs7WTtZO1c7UyxPO1Esc0I7O08sZ0IsTztPLHNCOzs7OzRDOzs7bUI7O087Ozs7STtHOztJO0ksTztHOztJO0k7OztHOztJO0ksSSwyRDs7OztNLFE7OztPOzs7Ozs7Ozs7O2E7O2E7O2E7O2E7O2E7O2E7Ozs7Ozs7Ozs7OztPO087TztPO087Tzs7O007Ozs7O0k7Szs7Ozs7Ozs7O0s7Ozs7OztLLE07O0ksTztHOztJLFM7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7O0ksWTs7STtJO0ssSTtLLE87SSxPO0c7O0k7Ozs7Z0I7aUI7Rzs7STs7Ozs7TyxZOzs7Ozs7O1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJLFk7OztLLE87O21CLE87STtLLEs7O087O1U7STtJO0ksYztHOztJOzthOzs7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7d0I7O0k7STtJLGM7Rzs7SSxZOzs7ZTs7O0ksTztHOztJLFk7Ozs7Ozs7SyxPOzs7SyxPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7SSxZOzs7ZTs7Ozs7OztJLE87Rzs7O0ksYzs7STs7O2lCOztLO0s7Ozs7c0IsTyxzQzs7SSwwQjs7OzBDOzs0Qzs7TTs7eUM7O0s7Ozt5Qzs7Szs7OztLLE87OztJO0c7Ozs7SztLO0s7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STs7O0s7Szs7SSxPO0c7O0ksMEI7OzswQzs7Ozs7Ozs7VztXO1c7O087TztPLE87OztNO007TSxPOzt5Qzs7Szs7O3lDOztLOzs7O0ssTzs7O0k7Rzs7STtJO0ksTztHOztJLFE7O0k7STtJO0k7SSxPO0c7O0k7STtJLFEsNEI7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjtJO0k7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxXO0k7OztNOzs7SSxPO0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STtJO0ksb0I7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjs7SztLO0ssTztJO0ksTztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7Ozs7TyxjLE87TyxzQjs7O087Ozs7VztXO1U7USxPO1EsTTs7O1c7VyxPO1U7TyxzQjs7Ozs7O08sK0I7Ozs7O00sZ0IsTztNLHNCOzs7STtHOzs7SyxPO0k7SSxPO0c7O0k7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7STs7TSxPOzs7OztRLGtCLE87USxPOzs7TztRLFc7UTtrQjs7O1EsUztRO2tCOztPLE87Ozs7TyxPOztNLGtCO00sTzs7OztNO21CLE87MEI7Tzs7USw0QjtRLDRCO087O3FCOztNLEk7Ozs7OztrQixPOzJCO1E7Uzs7O1ksMEI7WTtZLE87O1M7Z0M7UTs7c0I7OztpQixPOzBCO08sRztROztTLDRCO1M7Z0M7UTs7O1E7O1MsNEI7UztnQztROzs7cUI7Ozs7TyxPOzs7OztPO1E7Uzs7Uyw0QjtRLE87O087UTtROzs7OztRO1EsTzs7TyxJOzs7O0c7O0k7O0ksMEI7SSxPO0c7O0k7SyxPOzs7OztNO007Ozs7O1UsUTtVO1U7UztNO007TSxPOzs7OztPO087Ozs7O1c7VyxRO1c7VztXO1c7VztXO1U7TztPO08sTzs7O007TTs7Ozs7VSxRO1U7VTtTO007TTtNLE87Ozs7TTtNO00sTzs7O0s7SztLO0s7OztNO007TTs7O007SztLLE87Ozs7O007TTtNLE87OztLO0s7SyxPOzs7O0s7SztLLE87OztJO0k7SSxPOztvQixPLDhDOztJO0k7Ozs7Tzs7Ozs7Ozs7OztTOzs7VTs7YTthLE87WTtVLE87VSxPO1M7VTs7O2M7Ozs7O3FCOzs7YTtXLFc7VTs7OztvQzs7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7YywwQjs7Ozs7OzswQjtTOzs7Ozs7TztRLGE7UTs7OztrQzs7Ozs7Ozs7UyxPOzs7O2dILE87Ozs7OztTLE87Ozs7Ozs7USxPOzs7Szs7RztzQyx1Qjs7SSwwQjtJLE87Rzs7SSxVO0ksMEI7SSxPO0c7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0ssTTtJO0ksaUI7STthOzs7RztHOzs7OztJOztJOztLO0s7SztLOzs7O3dCLE07TSxXOztNOzs7Ozs7SSxNO0c7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7O2lCLE07O0c7O0k7OztHOztJO0ksTztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UTs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTs7Z0IscUI7O1E7UTtTO1M7UztTO1M7Uzs7OztVO1U7VTtVO1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7Ozs7UTs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxjLE87USxPLGM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxRO08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O087USxJO1EsSTtRLE07USxJO1E7UTtROzs7O1E7Uzs7WTs7Uzs7Ozs7VztZLE07WSxNO1ksTTtZLE07WTtZO1k7OztZLE87Vzs7Vzs7Vzs7O08sTzs7TztlOztHOztJO0k7Szs7UTs7OztTOztVLEk7UztTO1MsTzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLG9DOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLEkseUM7Ozs7Vzs7OztTLEkseUM7Ozs7Vzs7OztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcsbUI7VTs7cUI7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxxQjtVOztxQjs7UztTO1MsSSxXLHlCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1MsTyxxQjs7UztTO1MsSSxXLHlCOzs7Ozs7Ozs7Ozs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7UyxRO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOzs7UyxPOztrQjs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7aUI7O1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7O3FCOztTO1M7Uzs7c0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxJLGM7TztRO1E7aUI7OztTO1M7UztrQjs7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztpQjtTLE07O2lCLE07UztpQjs7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O2lCO1MsTTs7aUIsTTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7USxpQjtRO1E7UTtpQjs7UztTO1M7UyxtQjtTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UztTO1M7UztTO1M7UztTO1U7VTtVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7UztTO1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7UTtTOztZOztTOzs7OztXO1c7Vzs7VztZOztlOzs7O2dCLE87O2dCOztnQjs7WTs7Ozs7VyxPOztXOztXOzs7O1E7O1E7UTs7O1EseUM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLDBCOztRO1E7OztRLHlDOztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UyxPOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLE87O1E7O1EseUM7Z0I7OztHOztJOzJCLE87STtHOztJO0ksTztHOztJO1k7STs7O0ssTTtLLEk7SztLOzs7O00sVztNO2E7TTs7Ozs7STtHOztJO0s7Rzs7O0k7STtJO0ssTTtJOztLOztNOztJO0c7O0k7SztNLFM7TSxJO007Szs7Ozs7TSxPOzs7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJLFM7STtLO0s7Szs7OztLO0ssTTs7RztHOztJOzs7K0IsTzs7SyxJLG1EOzs7aUMsb0I7TSxJOzs7TyxNOztNLE07O0k7STtHOztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs7OytCLE87STtJLHVCOztLO007TyxPO087TyxzQjtPOzs7O007Ozs7MkIsb0I7TTtNLDJDOztJO0ksc0I7Rzs7SSxTO0ksb0IsTywyQjtJO0k7Rzs7STtHOztJO0c7Rzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07NEI7RztHOztJOztLLEksVyx3Qzs7OzZCOzs7O0ksVztJLGM7OztJO0k7ZTs7OztNLEksWTs7OzhCOzs7Ozs7Szs7Rzs7STtLOztNLE07TTs7TSxPO0s7TSxPO00sTztLLE07NEI7O0k7SyxPO0ssTztJLGM7OztJOztLLHNCOztJOzs7SSxtRTtJO0c7O0ksNkM7SSxXOzs7SSxpRTtJO0c7O0k7MEI7O2dEO0k7Rzs7STs7eUM7MkM7O0k7Rzs7STswQjs7Ozt5QzsyQzs7STtHOztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJLCtEO0k7Rzs7STswQjs7OEM7STtHOztJLGlFO0k7Rzs7SSxrRTtJO0c7O0k7MEI7O2lEO0k7Rzs7STs7SyxPOztJOzs7STtJO2EsTztLLHlCLFE7O00sa0I7Ozs7Rzs7STtJO2EsTzs7O007O08sUTs7Ozs7OztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yyx3RTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztzRDswRDs7YzthOztHOztJOztjLDJFO2M7YTs7Rzs7STt5QixvQixXO0ksTyxXO0c7O0k7eUIsc0IsYTtJLE8sVztHOztJOzs7Ozs7SyxzQjs7SSxNOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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S3RCLE1BQUE7O0dBQWdCO1lBRWhCSixLQUFNQyxHQUFlQztJQUN2QixJQS9CSXdDLFVBOEJJekMsTUE3QkowQyxTQURBRDtPQThCSXpDLFNBN0JKMEM7U0FFRUMsaUJBRkZELFNBVEZGLDZCQVNFRTtRQTZCSTFDLFFBM0JGMkM7TUFNSixNQUFBO0tBQ2UsSUFBWEMsWUFBVyx1QkFQWEQsVUEyQmlCMUM7S0FuQnJCLDRCQVhFd0MsWUFVRUcsY0FURkY7S0E2QkkxQyxPQXBCRjRDOztRQXNCRnpDLElBRklIO0lBQUFBLE9BRUpHO0lBRklILFNBRUpHLEtBRm1CRjtJQUl2QixPQUZJRTtHQUdIO1lBRUNNLElBQUtULEdBQWVHLEdBZHBCMEIsTUFjSzdCLEdBQWVHLElBRXRCLE9BRk9ILFNBQWVHLEdBRU07WUFFMUJVLElBQUtiLEdBQWVHLEdBQWNGLEdBbEJsQzRCLE1Ba0JLN0IsR0FBZUcsSUFBZkgsU0FBZUcsS0FBY0YsR0FFcEMsU0FBOEI7WUFFNUJPLEdBQUtSLEdBQWVHLEdBQWNDLEdBdEJsQ3lCLE1Bc0JLN0IsR0FBZUcsSUF0QnBCMEIsTUFzQks3QixHQUE2QkksV0FBZEQsTUFBY0MsVUFHL0I7bUNBMUVIUCxXQU9BQyxNQWlEQUMsTUFPQVUsS0FJQUksS0FJQUw7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STt1Qix1QztJOzs7O0s7SyxJO0k7STtJOztLO0s7SztLOztJO0k7STtJO0k7SyxJO0s7SztLO0s7SztLO0s7SztLO0s7O0s7Ozs7OztPOztRLE07USxNO1EsTTtRLE07TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLE07OztPOztRO1M7UztTO1M7UztTO1E7OztPO1E7O1E7Ozs7OztPOzs7Ozs7Ozs7TTs7Ozs7SSxROztLO0s7SztLO0s7STtJO0k7STtJO0k7SSxPOzs7STtLLE0sbUI7SyxNO0ssSTtrQzsrQjtJLE87RztzQiwrQjtzQixpQzs7STtLLEk7ZTtnQjtJO0k7SSxPO0c7MkIsTyxvQztHLFU7RywyQjs7STtLLEs7SyxLO0ssSztLLEs7SyxLO0ssSTs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0kscUI7SSx1QixvQztHOztJLDhCOzs7Szs7O0k7RzswQixhLG9DOzt3QixTOztJO0ksVTs2QjtnQztJLFc7Rzs7STtLLFE7SyxxQjtLO0s7STtJLFE7STtJO0k7STtJLE87RztxQyxzQjs7STtnQjs7STtHOytCLFM7K0IsUzs7STtJLFU7STs7O2M7O2U7O2dCO21CO0s7TTtPLEk7TztPO087O1UsVyxNO3NCO3FCLE07c0I7cUIsTTtzQixNO1U7UztPOztVLGU7c0I7Uzs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztRLGM7UTs7TztPOzs7Ozs7OzRCOzs7STtHOztJO0k7SSx1Qiw0QztJO0ssSTtLO0s7O0s7OztJOzs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7OztvQixPO0ssVTtLOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7SUN4QkpxQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUExQ0lDLFVBQ0ZDOzRDQUFLO3FEQUFrQjs0QkFBdkJBOzRDQUEwQztZQUV4Q0M7NENBQ0Y7NkNBSU8sK0NBQUE7OzRDQUZMO0tBRGtCQzs2Q0FDbEI7K0NBQUEseUJBRGtCQTs7OENBRU8sZ0RBQUE7OzZDQUErQzs0Q0FEeEUsK0NBQUE7cURBQ0c7Ozs0Q0FDaUQ7WUFFcERDLFlBQXdDSDs2Q0FBSzs7cURBQU87NEJBQVpBOzRDQUFnQztZQUV4RUk7NENBQ0Y7OzZDQUVFO01BRE9GOzhDQUNQO2dEQUFBLHlCQURPQTs7O2lEQUdGLCtDQUFBOztpREFBaUQ7NkNBRnRELCtDQUFBO3NEQUNHOzs7OzRDQUdFLCtDQUFBOzs0Q0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDekNKbi9IO0lBQUFoRztJQThDQW9sSTtJQTREQUM7SUE1REE3K0g7SUE0REFpTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FRQUc7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDcElKQztJQUFBQztJQU9BQztJQUFBQztJQW9CQUM7SUFBQUM7SUFtQkFDO0lBQUFDO0lBb0JBQztJQUFBQztJQW1DQUM7SUFBQUM7SUFPQUM7SUFBQUM7SUFxQkFDO0lBQUFDO0lBMEVBQztJQUFBQztJQVdBQztJQUFBQztJQTBFQUM7SUFBQUM7SUFPRUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUF4U0ZDLGlCQUNB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QUFBLG1DQUNBQSxNQURBaUM7VUFBQSxPQUFBLCtCQUNBakM7O2NBREFrQztVQUNBLCtCQUFBbEM7VUFEQSxXQUFBLG1DQUNBQSxNQURBa0M7VUFBQSxPQUFBLCtCQUNBbEM7Ozs7OztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOzs7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NB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Ozt3R0FBQUE7d0dBQUFBOzs7O2tGQUFBQTs7OztxR0FBQUE7O3dHQUFBQTt3R0FBQUE7d0dBQUFBO3NHQUFBQTs7O3VHQUFBQTt1R0FBQUE7dUdBQUFBOzt1R0FBQUE7O3VHQUFBQTs7dUdBQUFBOzt1R0FBQUE7O3FHQUFBQTs7OzJHQUFBQTs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3NHQUFBQTs7O3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTtxR0FBQUE7Ozs7MkdBQUFBOzt1R0FBQUE7dUdBQUFBO3VHQUFBQTs7dUdBQUFBOzt1R0FBQUE7dUdBQUFBO3VHQUFBQTtxR0FBQUE7Ozs7c0dBQUFBO3NHQUFBQTtzR0FBQUE7c0dBQUFBO3NHQUFBQTs7c0dBQUFBO3NHQUFBQTs7b0dBQUFBOzs7MkdBQUFBOzs0R0FBQUE7Ozs2R0FBQUE7Ozt5R0FBQUE7O3lHQUFBQTt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7O3lHQUFBQTt1R0FBQUE7Ozs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTt3R0FBQUE7c0dBQUFBOzs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7O3dHQUFBQTs7c0dBQUFBOzs7O3VHQUFBQTt1R0FBQUE7O3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7cUdBQUFBOzs7OzRHQUFBQTs7OzZHQUFBQTs7O3lHQUFBQTs7eUdBQUFBOzt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7eUdBQUFBO3VHQUFBQTs7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7c0dBQUFBOzs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTt3R0FBQUE7Ozs7O2tGQUFBQTs7Ozs7a0ZBQUFBOzt3R0FBQUE7d0dBQUFBO3NHQUFBQTs7O3VHQUFB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Q0FBQXRSLGtCQUFBc1I7U0FBQUMsOENBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyR0FBQUE7Ozs0R0FBQUE7Ozs2R0FBQUE7Ozt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7eUdBQUFBO3lHQUFBQTt1R0FBQUE7Ozt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7c0dBQUFBOzs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTs7OztrRkFBQUE7Ozs7cUdBQUFBOzt3R0FBQUE7d0dBQUFBO3dHQUFBQTtzR0FBQUE7Ozt1R0FBQUE7dUdBQUFBO3VHQUFBQTs7dUdBQUFBOzt1R0FBQUE7O3VHQUFBQTs7dUdBQUFBOztxR0FBQUE7OzsyR0FBQUE7OzRHQUFBQTs7O3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOztzR0FBQUE7Ozt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7cUdBQUFBOzs7OzJHQUFBQTs7dUdBQUFBO3VHQUFBQTt1R0FBQUE7O3VHQUFBQTs7dUdBQUFBO3VHQUFBQTt1R0FBQUE7cUdBQUFBOzs7O3NHQUFBQTtzR0FBQUE7c0dBQUFBO3NHQUFBQTtzR0FBQUE7O3NHQUFBQTtzR0FBQUE7O29HQUFBQTs7OzJHQUFBQTs7NEdBQUFBOzs7NkdBQUFBOzs7eUdBQUFBOzt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7eUdBQUFBOzt5R0FBQUE7dUdBQUFBOzs7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7d0dBQUFBO3NHQUFBQTs7OzRHQUFBQTs7O3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FB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QkFBQU87ZUFBQUEsaUJBQUFBO2FBQUE7Y0FBQUMsS0FBQUQ7Y0FBQUUsT0FBQSxtQ0FBQUQ7YUFBQSxXQUFBQzs7WUFBQSxPQUFBO3dEQUFBakYsVUFBQXdFLEtBQUE1RDs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7OztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOzs7Ozs2Q0FBQTREOzs7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7Ozs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JB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R2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7SUExQm5DOzs7Ozs7Ozs7O2FBV3lCOzs7Ozs7Ozs7O0lBcEJULG1CQUFlO3VCQUZJO3VC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V0w7WUFFR0MsT0FFRUMsY0FFQ0M7aUJBR0dEO0tBR1I7TUFHRSxNQUFBLDZCQVRHQyxRQUdHRDtNQU9NOzt5QkFBS047VUFBb0IsVUE3R3ZDSDs7O2tCQUNBQzswQkE4R1c7Ozs7V0EvR1hEO1dBb0hNO1dBQ0EsV0FSYUc7O29CQTlHbkJKOztxQkFBQUE7OztvQkEwSE07O1NBRUg7TUFkVztNQUhFOztrQkExRUFZLFFBQVFKLE9BQVFKO1VBVGxDO1dBQ21CLGlCQUFBO1dBQ2pCO1dBQ1E7V0FDUjs7O1VBT0MsR0FBQSxzQ0FGZVE7V0EvQmhCVixzQkFrQ29CO1dBbkNwQkQ7O1VBc0NDLEdBQUEsZ0NBTmVXLFNBakNoQlo7VUFFQUUsc0JBd0NrQjtVQUNwQjtXQUVvQjtZQUFaVztjQUFZO3FDQTBEVkgsT0F0RVFFLFFBQVFKLE9BQVFKO1dBYTlCLDRCQWJjUTt1QkFZVkM7O2dCQUlOQztXQUdJO1lBSEpDLDBCQUFBRDtZQUdJLE1BQUEsK0JBSEpDO1dBQ0U7K0JBSWdCLCtCQUxsQkE7O2lDQVFHQyxvQkFBVSxPQUFWQTtjQU1HQztvQkFBQUEsMEJBQUFBO1dBSFE7WUFGUUMsUUFLaEJEO1lBSFEsTUFBQSx1Q0FGUUM7V0FFdEI7V0FBQSxPQTJDUVI7O1VBdkNNLFVBQUEsbUNBRFJPO1VBQ047VUFBQSxPQXVDUVA7O0tBTU4sT0FBQSxpREFOTUE7SUFzQk47K0NBM0JFQTtHQTRCTDtHQUdJLFlBQUE7OzttRUFDWTtJQUdQO0tBQUE7Ozs7O1FBM0ROUDtRQXNCQU07S0F3Q2EsTUFBQTtJQUpqQjs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7Ozs7OztHQ3ZITTtHQUFBOzs7RSIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vLyBzdHJmdGltZVxuLy8gZ2l0aHViLmNvbS9zYW1zb25qcy9zdHJmdGltZVxuLy8gQF9zanNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxMCAtIDIwMTUgU2FtaSBTYW1odXJpIDxzYW1pQHNhbWh1cmkubmV0PlxuLy9cbi8vIE1JVCBMaWNlbnNlXG4vLyBodHRwOi8vc2pzLm1pdC1saWNlbnNlLm9yZ1xuLy9cblxuOyhmdW5jdGlvbigpIHtcblxuICAgIHZhciBEZWZhdWx0TG9jYWxlID0ge1xuICAgICAgICAgICAgZGF5czogWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddLFxuICAgICAgICAgICAgc2hvcnREYXlzOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLFxuICAgICAgICAgICAgbW9udGhzOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSxcbiAgICAgICAgICAgIHNob3J0TW9udGhzOiBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10sXG4gICAgICAgICAgICBBTTogJ0FNJyxcbiAgICAgICAgICAgIFBNOiAnUE0nLFxuICAgICAgICAgICAgYW06ICdhbScsXG4gICAgICAgICAgICBwbTogJ3BtJyxcbiAgICAgICAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgICAgICAgICBEOiAnJW0vJWQvJXknLFxuICAgICAgICAgICAgICAgIEY6ICclWS0lbS0lZCcsXG4gICAgICAgICAgICAgICAgUjogJyVIOiVNJyxcbiAgICAgICAgICAgICAgICBUOiAnJUg6JU06JVMnLFxuICAgICAgICAgICAgICAgIFg6ICclVCcsXG4gICAgICAgICAgICAgICAgYzogJyVhICViICVkICVYICVZJyxcbiAgICAgICAgICAgICAgICByOiAnJUk6JU06JVMgJXAnLFxuICAgICAgICAgICAgICAgIHY6ICclZS0lYi0lWScsXG4gICAgICAgICAgICAgICAgeDogJyVEJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0U3RyZnRpbWUgPSBuZXcgU3RyZnRpbWUoRGVmYXVsdExvY2FsZSwgMCwgZmFsc2UpLFxuICAgICAgICBpc0NvbW1vbkpTID0gdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcsXG4gICAgICAgIG5hbWVzcGFjZTtcblxuICAgIC8vIENvbW1vbkpTIC8gTm9kZSBtb2R1bGVcbiAgICBpZiAoaXNDb21tb25KUykge1xuICAgICAgICBuYW1lc3BhY2UgPSBtb2R1bGUuZXhwb3J0cyA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gZGVwcmVjYXRlZFN0cmZ0aW1lO1xuICAgICAgICBpZihqb29fZ2xvYmFsX29iamVjdCkgam9vX2dsb2JhbF9vYmplY3Quc3RyZnRpbWUgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgfVxuICAgIC8vIEJyb3dzZXJzIGFuZCBvdGhlciBlbnZpcm9ubWVudHNcbiAgICBlbHNlIHtcbiAgICAgICAgLy8gR2V0IHRoZSBnbG9iYWwgb2JqZWN0LiBXb3JrcyBpbiBFUzMsIEVTNSwgYW5kIEVTNSBzdHJpY3QgbW9kZS5cbiAgICAgICAgbmFtZXNwYWNlID0gam9vX2dsb2JhbF9vYmplY3QgfHwgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB8fCAoMSxldmFsKSgndGhpcycpOyB9KCkpO1xuICAgICAgICBuYW1lc3BhY2Uuc3RyZnRpbWUgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgfVxuXG4gICAgLy8gRGVwcmVjYXRlZCBBUEksIHRvIGJlIHJlbW92ZWQgaW4gdjEuMFxuICAgIHZhciBfcmVxdWlyZSA9IGlzQ29tbW9uSlMgPyBcInJlcXVpcmUoJ3N0cmZ0aW1lJylcIiA6IFwic3RyZnRpbWVcIjtcbiAgICB2YXIgX2RlcHJlY2F0aW9uV2FybmluZ3MgPSB7fTtcbiAgICBmdW5jdGlvbiBkZXByZWNhdGlvbldhcm5pbmcobmFtZSwgaW5zdGVhZCkge1xuICAgICAgICBpZiAoIV9kZXByZWNhdGlvbldhcm5pbmdzW25hbWVdKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIltXQVJOSU5HXSBcIiArIG5hbWUgKyBcIiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAxLjAuIEluc3RlYWQsIHVzZSBgXCIgKyBpbnN0ZWFkICsgXCJgLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9kZXByZWNhdGlvbldhcm5pbmdzW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5hbWVzcGFjZS5zdHJmdGltZVRaID0gZGVwcmVjYXRlZFN0cmZ0aW1lVFo7XG4gICAgbmFtZXNwYWNlLnN0cmZ0aW1lVVRDID0gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDO1xuICAgIG5hbWVzcGFjZS5sb2NhbGl6ZWRTdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZUxvY2FsaXplZDtcblxuICAgIC8vIEFkYXB0IHRoZSBvbGQgQVBJIHdoaWxlIHByZXNlcnZpbmcgdGhlIG5ldyBBUEkuXG4gICAgZnVuY3Rpb24gYWRhcHRGb3J3YXJkcyhmbikge1xuICAgICAgICBmbi5sb2NhbGl6ZSA9IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnRpbWV6b25lID0gZGVmYXVsdFN0cmZ0aW1lLnRpbWV6b25lLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICAgICAgZm4udXRjID0gZGVmYXVsdFN0cmZ0aW1lLnV0Yy5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgfVxuXG4gICAgYWRhcHRGb3J3YXJkcyhhZGFwdGVkU3RyZnRpbWUpO1xuICAgIGZ1bmN0aW9uIGFkYXB0ZWRTdHJmdGltZShmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICAvLyBkIGFuZCBsb2NhbGUgYXJlIG9wdGlvbmFsLCBjaGVjayBpZiB0aGlzIGlzIChmb3JtYXQsIGxvY2FsZSlcbiAgICAgICAgaWYgKGQgJiYgZC5kYXlzKSB7XG4gICAgICAgICAgICBsb2NhbGUgPSBkO1xuICAgICAgICAgICAgZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdLCBbbG9jYWxlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoZGVwcmVjYXRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZShmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZShmb3JtYXQsIFtkYXRlXSlgXCIsIF9yZXF1aXJlICsgXCIoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWVUWihmbXQsIGQsIGxvY2FsZSwgdGltZXpvbmUpIHtcbiAgICAgICAgLy8gbG9jYWxlIGlzIG9wdGlvbmFsLCBjaGVjayBpZiB0aGlzIGlzIChmb3JtYXQsIGRhdGUsIHRpbWV6b25lKVxuICAgICAgICBpZiAoKHR5cGVvZiBsb2NhbGUgPT0gJ251bWJlcicgfHwgdHlwZW9mIGxvY2FsZSA9PSAnc3RyaW5nJykgJiYgdGltZXpvbmUgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGltZXpvbmUgPSBsb2NhbGU7XG4gICAgICAgICAgICBsb2NhbGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVFooZm9ybWF0LCBkYXRlLCBsb2NhbGUsIHR6KWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGB2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzLnRpbWV6b25lKHR6KShmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVFooZm9ybWF0LCBkYXRlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopOyBzKGZvcm1hdCwgW2RhdGVdKWAgb3IgYFwiICsgX3JlcXVpcmUgKyBcIi50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gKGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lKS50aW1lem9uZSh0aW1lem9uZSk7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIHZhciB1dGNTdHJmdGltZSA9IGRlZmF1bHRTdHJmdGltZS51dGMoKTtcbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWVVVEMoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIGRhdGUsIGxvY2FsZSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS51dGMoKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVVRDKGZvcm1hdCwgW2RhdGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi51dGMoKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gdXRjU3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IHV0Y1N0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQobG9jYWxlKSB7XG4gICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemVkU3RyZnRpbWUobG9jYWxlKWBcIiwgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpXCIpO1xuICAgICAgICByZXR1cm4gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSk7XG4gICAgfVxuICAgIC8vIEVuZCBvZiBkZXByZWNhdGVkIEFQSVxuXG4gICAgLy8gUG9seWZpbGwgRGF0ZS5ub3cgZm9yIG9sZCBicm93c2Vycy5cbiAgICBpZiAodHlwZW9mIERhdGUubm93ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIERhdGUubm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICtuZXcgRGF0ZSgpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIFN0cmZ0aW1lKGxvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y1RpbWV6b25lKSB7XG4gICAgICAgIHZhciBfbG9jYWxlID0gbG9jYWxlIHx8IERlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBjdXN0b21UaW1lem9uZU9mZnNldCB8fCAwLFxuICAgICAgICAgICAgX3VzZVV0Y0Jhc2VkRGF0ZSA9IHVzZVV0Y1RpbWV6b25lIHx8IGZhbHNlLFxuXG4gICAgICAgICAgICAvLyB3ZSBzdG9yZSB1bml4IHRpbWVzdGFtcCB2YWx1ZSBoZXJlIHRvIG5vdCBjcmVhdGUgbmV3IERhdGUoKSBlYWNoIGl0ZXJhdGlvbiAoZWFjaCBtaWxsaXNlY29uZClcbiAgICAgICAgICAgIC8vIERhdGUubm93KCkgaXMgMiB0aW1lcyBmYXN0ZXIgdGhhbiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICAvLyB3aGlsZSBtaWxsaXNlY29uZCBwcmVjaXNlIGlzIGVub3VnaCBoZXJlXG4gICAgICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIHZlcnkgaGVscGZ1bCB3aGVuIHN0cmZ0aW1lIHRyaWdnZXJlZCBhIGxvdCBvZiB0aW1lcyBvbmUgYnkgb25lXG4gICAgICAgICAgICBfY2FjaGVkRGF0ZVRpbWVzdGFtcCA9IDAsXG4gICAgICAgICAgICBfY2FjaGVkRGF0ZTtcblxuICAgICAgICBmdW5jdGlvbiBfc3RyZnRpbWUoZm9ybWF0LCBkYXRlKSB7XG4gICAgICAgICAgICB2YXIgdGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lc3RhbXAgPiBfY2FjaGVkRGF0ZVRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZVRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IF9jYWNoZWREYXRlVGltZXN0YW1wO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBob3cgdG8gYXZvaWQgZHVwbGljYXRpb24gb2YgZGF0ZSBpbnN0YW50aWF0aW9uIGZvciB1dGMgaGVyZT9cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIHRpZWQgdG8gZ2V0VGltZXpvbmVPZmZzZXQgb2YgdGhlIGN1cnJlbnQgZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGUgPSBuZXcgRGF0ZShfY2FjaGVkRGF0ZVRpbWVzdGFtcCArIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKF9jYWNoZWREYXRlKSArIF9jdXN0b21UaW1lem9uZU9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0ZSA9IF9jYWNoZWREYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSArIF9jdXN0b21UaW1lem9uZU9mZnNldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gX3Byb2Nlc3NGb3JtYXQoZm9ybWF0LCBkYXRlLCBfbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gX3Byb2Nlc3NGb3JtYXQoZm9ybWF0LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdFN0cmluZyA9ICcnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmcgPSBudWxsLFxuICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxlbmd0aCA9IGZvcm1hdC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudENoYXJDb2RlID0gZm9ybWF0LmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNJblNjb3BlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICctJ1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSA0NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJ18nXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gOTUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA0OCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICc6J1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDU4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVuZGVkVFopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIltXQVJOSU5HXSBkZXRlY3RlZCB1c2Ugb2YgdW5zdXBwb3J0ZWQgJTo6IG9yICU6OjogbW9kaWZpZXJzIHRvIHN0cmZ0aW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBleHRlbmRlZFRaID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY3VycmVudENoYXJDb2RlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4YW1wbGVzIGZvciBuZXcgRGF0ZSgwKSBpbiBHTVRcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1RodXJzZGF5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuZGF5c1tkYXRlLmdldERheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbnVhcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdCJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5tb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihNYXRoLmZsb29yKGRhdGUuZ2V0RnVsbFllYXIoKSAvIDEwMCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEvMDEvNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLkQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE5NzAtMDEtMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLkYsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdJJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGhvdXJzMTIoZGF0ZS5nZXRIb3VycygpKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwzKE1hdGguZmxvb3IodGltZXN0YW1wICUgMTAwMCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0TWludXRlcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ2FtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5hbSA6IGxvY2FsZS5wbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5SLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRTZWNvbmRzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDA6MDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdUJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMih3ZWVrTnVtYmVyKGRhdGUsICdzdW5kYXknKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnbW9uZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTY6MDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdYJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlgsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdZJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0dNVCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSAmJiBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFwiR01UXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhtZSBvcHRpbWl6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHpTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkubWF0Y2goL1xcKChbXFx3XFxzXSspXFwpLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSB0elN0cmluZyAmJiB0elN0cmluZ1sxXSB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHUnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydERheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdiJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5jLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXREYXRlKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0TW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdqJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF5ID0gTWF0aC5jZWlsKChkYXRlLmdldFRpbWUoKSAtIHkuZ2V0VGltZSgpKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwzKGRheSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2snOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0SG91cnMoKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGhvdXJzMTIoZGF0ZS5nZXRIb3VycygpKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0TW9udGgoKSArIDEsIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnXFxuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTExOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpICsgb3JkaW5hbChkYXRlLmdldERhdGUoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdBTSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gbG9jYWxlLkFNIDogbG9jYWxlLlBNO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTI6MDA6MDAgQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5yLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gTWF0aC5mbG9vcih0aW1lc3RhbXAgLyAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXHQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRheSA9PT0gMCA/IDcgOiBkYXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEgLSA3LCBNb25kYXkgaXMgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMS1KYW4tMTk3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLnYsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAwIC0gNiwgU3VuZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTIvMzEvNjknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy54LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgnJyArIGRhdGUuZ2V0RnVsbFllYXIoKSkuc2xpY2UoMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcrMDAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBleHRlbmRlZFRaID8gXCIrMDA6MDBcIiA6IFwiKzAwMDBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvZmY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfY3VzdG9tVGltZXpvbmVPZmZzZXQgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IF9jdXN0b21UaW1lem9uZU9mZnNldCAvICg2MCAqIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IG9mZiA8IDAgPyAnLScgOiAnKyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXAgPSBleHRlbmRlZFRaID8gJzonIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBob3VycyA9IE1hdGguZmxvb3IoTWF0aC5hYnMob2ZmIC8gNjApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pbnMgPSBNYXRoLmFicyhvZmYgJSA2MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBzaWduICsgcGFkVGlsbDIoaG91cnMpICsgc2VwICsgcGFkVGlsbDIobWlucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBmb3JtYXRbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaXNJblNjb3BlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vICclJ1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDM3KSB7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBmb3JtYXRbaV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRTdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBfc3RyZnRpbWU7XG5cbiAgICAgICAgc3RyZnRpbWUubG9jYWxpemUgPSBmdW5jdGlvbihsb2NhbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUobG9jYWxlIHx8IF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgX3VzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudGltZXpvbmUgPSBmdW5jdGlvbih0aW1lem9uZSkge1xuICAgICAgICAgICAgdmFyIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gX2N1c3RvbVRpbWV6b25lT2Zmc2V0O1xuICAgICAgICAgICAgdmFyIHVzZVV0Y0Jhc2VkRGF0ZSA9IF91c2VVdGNCYXNlZERhdGU7XG5cbiAgICAgICAgICAgIHZhciB0aW1lem9uZVR5cGUgPSB0eXBlb2YgdGltZXpvbmU7XG4gICAgICAgICAgICBpZiAodGltZXpvbmVUeXBlID09PSAnbnVtYmVyJyB8fCB0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdXNlVXRjQmFzZWREYXRlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIC8vIElTTyA4NjAxIGZvcm1hdCB0aW1lem9uZSBzdHJpbmcsIFstK11ISE1NXG4gICAgICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSB0aW1lem9uZVswXSA9PT0gJy0nID8gLTEgOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG91cnMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgxLCAzKSwgMTApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlcyA9IHBhcnNlSW50KHRpbWV6b25lLnNsaWNlKDMsIDUpLCAxMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBzaWduICogKCg2MCAqIGhvdXJzKSArIG1pbnV0ZXMpICogNjAgKiAxMDAwO1xuICAgICAgICAgICAgICAgICAgICAvLyBpbiBtaW51dGVzOiA0MjBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXpvbmVUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICBjdXN0b21UaW1lem9uZU9mZnNldCA9IHRpbWV6b25lICogNjAgKiAxMDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShfbG9jYWxlLCBjdXN0b21UaW1lem9uZU9mZnNldCwgdXNlVXRjQmFzZWREYXRlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHJmdGltZS51dGMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgX2N1c3RvbVRpbWV6b25lT2Zmc2V0LCB0cnVlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gc3RyZnRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFkVGlsbDIobnVtYmVyVG9QYWQsIHBhZGRpbmdDaGFyKSB7XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PT0gJycgfHwgbnVtYmVyVG9QYWQgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhZGRpbmdDaGFyID09IG51bGwpIHtcbiAgICAgICAgICAgIHBhZGRpbmdDaGFyID0gJzAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYWRkaW5nQ2hhciArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwzKG51bWJlclRvUGFkKSB7XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDk5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuICcwJyArIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnMDAnICsgbnVtYmVyVG9QYWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaG91cnMxMihob3VyKSB7XG4gICAgICAgIGlmIChob3VyID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMTI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaG91ciA+IDEyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91ciAtIDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBob3VyO1xuICAgIH1cblxuICAgIC8vIGZpcnN0V2Vla2RheTogJ3N1bmRheScgb3IgJ21vbmRheScsIGRlZmF1bHQgaXMgJ3N1bmRheSdcbiAgICAvL1xuICAgIC8vIFBpbGZlcmVkICYgcG9ydGVkIGZyb20gUnVieSdzIHN0cmZ0aW1lIGltcGxlbWVudGF0aW9uLlxuICAgIGZ1bmN0aW9uIHdlZWtOdW1iZXIoZGF0ZSwgZmlyc3RXZWVrZGF5KSB7XG4gICAgICAgIGZpcnN0V2Vla2RheSA9IGZpcnN0V2Vla2RheSB8fCAnc3VuZGF5JztcblxuICAgICAgICAvLyBUaGlzIHdvcmtzIGJ5IHNoaWZ0aW5nIHRoZSB3ZWVrZGF5IGJhY2sgYnkgb25lIGRheSBpZiB3ZVxuICAgICAgICAvLyBhcmUgdHJlYXRpbmcgTW9uZGF5IGFzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgIHZhciB3ZWVrZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgaWYgKGZpcnN0V2Vla2RheSA9PT0gJ21vbmRheScpIHtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5ID09PSAwKSAvLyBTdW5kYXlcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gNjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB3ZWVrZGF5LS07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZmlyc3REYXlPZlllYXJVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpLFxuICAgICAgICAgICAgZGF0ZVV0YyA9IERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSksXG4gICAgICAgICAgICB5ZGF5ID0gTWF0aC5mbG9vcigoZGF0ZVV0YyAtIGZpcnN0RGF5T2ZZZWFyVXRjKSAvIDg2NDAwMDAwKSxcbiAgICAgICAgICAgIHdlZWtOdW0gPSAoeWRheSArIDcgLSB3ZWVrZGF5KSAvIDc7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3Iod2Vla051bSk7XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBvcmRpbmFsIHN1ZmZpeCBmb3IgYSBudW1iZXI6IHN0LCBuZCwgcmQsIG9yIHRoXG4gICAgZnVuY3Rpb24gb3JkaW5hbChudW1iZXIpIHtcbiAgICAgICAgdmFyIGkgPSBudW1iZXIgJSAxMDtcbiAgICAgICAgdmFyIGlpID0gbnVtYmVyICUgMTAwO1xuXG4gICAgICAgIGlmICgoaWkgPj0gMTEgJiYgaWkgPD0gMTMpIHx8IGkgPT09IDAgfHwgaSA+PSA0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RoJztcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuICdzdCc7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiAnbmQnO1xuICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gJ3JkJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIChkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgfHwgMCkgKiA2MDAwMDtcbiAgICB9XG5cbn0oKSk7XG4iLCIoZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlIT09XCJ1bmRlZmluZWRcIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PVwidW5kZWZpbmVkXCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT1cInVuZGVmaW5lZFwiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5WaXJ0dWFsRG9tID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkoezE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKFwiLi92ZG9tL2NyZWF0ZS1lbGVtZW50LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRWxlbWVudFxuXG59LHtcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiOjI0fV0sMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZGlmZiA9IHJlcXVpcmUoXCIuL3Z0cmVlL2RpZmYuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbn0se1wiLi92dHJlZS9kaWZmLmpzXCI6NDd9XSwzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbi8qIVxuICogQ3Jvc3MtQnJvd3NlciBTcGxpdCAxLjEuMVxuICogQ29weXJpZ2h0IDIwMDctMjAxMiBTdGV2ZW4gTGV2aXRoYW4gPHN0ZXZlbmxldml0aGFuLmNvbT5cbiAqIEF2YWlsYWJsZSB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqIEVDTUFTY3JpcHQgY29tcGxpYW50LCB1bmlmb3JtIGNyb3NzLWJyb3dzZXIgc3BsaXQgbWV0aG9kXG4gKi9cblxuLyoqXG4gKiBTcGxpdHMgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBzdHJpbmdzIHVzaW5nIGEgcmVnZXggb3Igc3RyaW5nIHNlcGFyYXRvci4gTWF0Y2hlcyBvZiB0aGVcbiAqIHNlcGFyYXRvciBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHQgYXJyYXkuIEhvd2V2ZXIsIGlmIGBzZXBhcmF0b3JgIGlzIGEgcmVnZXggdGhhdCBjb250YWluc1xuICogY2FwdHVyaW5nIGdyb3VwcywgYmFja3JlZmVyZW5jZXMgYXJlIHNwbGljZWQgaW50byB0aGUgcmVzdWx0IGVhY2ggdGltZSBgc2VwYXJhdG9yYCBpcyBtYXRjaGVkLlxuICogRml4ZXMgYnJvd3NlciBidWdzIGNvbXBhcmVkIHRvIHRoZSBuYXRpdmUgYFN0cmluZy5wcm90b3R5cGUuc3BsaXRgIGFuZCBjYW4gYmUgdXNlZCByZWxpYWJseVxuICogY3Jvc3MtYnJvd3Nlci5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgU3RyaW5nIHRvIHNwbGl0LlxuICogQHBhcmFtIHtSZWdFeHB8U3RyaW5nfSBzZXBhcmF0b3IgUmVnZXggb3Igc3RyaW5nIHRvIHVzZSBmb3Igc2VwYXJhdGluZyB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtsaW1pdF0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSBpbiB0aGUgcmVzdWx0IGFycmF5LlxuICogQHJldHVybnMge0FycmF5fSBBcnJheSBvZiBzdWJzdHJpbmdzLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBCYXNpYyB1c2VcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnKTtcbiAqIC8vIC0+IFsnYScsICdiJywgJ2MnLCAnZCddXG4gKlxuICogLy8gV2l0aCBsaW1pdFxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcsIDIpO1xuICogLy8gLT4gWydhJywgJ2InXVxuICpcbiAqIC8vIEJhY2tyZWZlcmVuY2VzIGluIHJlc3VsdCBhcnJheVxuICogc3BsaXQoJy4ud29yZDEgd29yZDIuLicsIC8oW2Etel0rKShcXGQrKS9pKTtcbiAqIC8vIC0+IFsnLi4nLCAnd29yZCcsICcxJywgJyAnLCAnd29yZCcsICcyJywgJy4uJ11cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSAoZnVuY3Rpb24gc3BsaXQodW5kZWYpIHtcblxuICB2YXIgbmF0aXZlU3BsaXQgPSBTdHJpbmcucHJvdG90eXBlLnNwbGl0LFxuICAgIGNvbXBsaWFudEV4ZWNOcGNnID0gLygpPz8vLmV4ZWMoXCJcIilbMV0gPT09IHVuZGVmLFxuICAgIC8vIE5QQ0c6IG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwXG4gICAgc2VsZjtcblxuICBzZWxmID0gZnVuY3Rpb24oc3RyLCBzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBgbmF0aXZlU3BsaXRgXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzZXBhcmF0b3IpICE9PSBcIltvYmplY3QgUmVnRXhwXVwiKSB7XG4gICAgICByZXR1cm4gbmF0aXZlU3BsaXQuY2FsbChzdHIsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH1cbiAgICB2YXIgb3V0cHV0ID0gW10sXG4gICAgICBmbGFncyA9IChzZXBhcmF0b3IuaWdub3JlQ2FzZSA/IFwiaVwiIDogXCJcIikgKyAoc2VwYXJhdG9yLm11bHRpbGluZSA/IFwibVwiIDogXCJcIikgKyAoc2VwYXJhdG9yLmV4dGVuZGVkID8gXCJ4XCIgOiBcIlwiKSArIC8vIFByb3Bvc2VkIGZvciBFUzZcbiAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gXCJ5XCIgOiBcIlwiKSxcbiAgICAgIC8vIEZpcmVmb3ggMytcbiAgICAgIGxhc3RMYXN0SW5kZXggPSAwLFxuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHNlcGFyYXRvciA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLnNvdXJjZSwgZmxhZ3MgKyBcImdcIiksXG4gICAgICBzZXBhcmF0b3IyLCBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoO1xuICAgIHN0ciArPSBcIlwiOyAvLyBUeXBlLWNvbnZlcnRcbiAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnKSB7XG4gICAgICAvLyBEb2Vzbid0IG5lZWQgZmxhZ3MgZ3ksIGJ1dCB0aGV5IGRvbid0IGh1cnRcbiAgICAgIHNlcGFyYXRvcjIgPSBuZXcgUmVnRXhwKFwiXlwiICsgc2VwYXJhdG9yLnNvdXJjZSArIFwiJCg/IVxcXFxzKVwiLCBmbGFncyk7XG4gICAgfVxuICAgIC8qIFZhbHVlcyBmb3IgYGxpbWl0YCwgcGVyIHRoZSBzcGVjOlxuICAgICAqIElmIHVuZGVmaW5lZDogNDI5NDk2NzI5NSAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgICogSWYgMCwgSW5maW5pdHksIG9yIE5hTjogMFxuICAgICAqIElmIHBvc2l0aXZlIG51bWJlcjogbGltaXQgPSBNYXRoLmZsb29yKGxpbWl0KTsgaWYgKGxpbWl0ID4gNDI5NDk2NzI5NSkgbGltaXQgLT0gNDI5NDk2NzI5NjtcbiAgICAgKiBJZiBuZWdhdGl2ZSBudW1iZXI6IDQyOTQ5NjcyOTYgLSBNYXRoLmZsb29yKE1hdGguYWJzKGxpbWl0KSlcbiAgICAgKiBJZiBvdGhlcjogVHlwZS1jb252ZXJ0LCB0aGVuIHVzZSB0aGUgYWJvdmUgcnVsZXNcbiAgICAgKi9cbiAgICBsaW1pdCA9IGxpbWl0ID09PSB1bmRlZiA/IC0xID4+PiAwIDogLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgIGxpbWl0ID4+PiAwOyAvLyBUb1VpbnQzMihsaW1pdClcbiAgICB3aGlsZSAobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdHIpKSB7XG4gICAgICAvLyBgc2VwYXJhdG9yLmxhc3RJbmRleGAgaXMgbm90IHJlbGlhYmxlIGNyb3NzLWJyb3dzZXJcbiAgICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgaWYgKGxhc3RJbmRleCA+IGxhc3RMYXN0SW5kZXgpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgIGZvclxuICAgICAgICAvLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cHNcbiAgICAgICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZyAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgbWF0Y2hbMF0ucmVwbGFjZShzZXBhcmF0b3IyLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykge1xuICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZikge1xuICAgICAgICAgICAgICAgIG1hdGNoW2ldID0gdW5kZWY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMSAmJiBtYXRjaC5pbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShvdXRwdXQsIG1hdGNoLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0TGVuZ3RoID0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICBsYXN0TGFzdEluZGV4ID0gbGFzdEluZGV4O1xuICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW1pdCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2VwYXJhdG9yLmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHtcbiAgICAgICAgc2VwYXJhdG9yLmxhc3RJbmRleCsrOyAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yLnRlc3QoXCJcIikpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goXCJcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQubGVuZ3RoID4gbGltaXQgPyBvdXRwdXQuc2xpY2UoMCwgbGltaXQpIDogb3V0cHV0O1xuICB9O1xuXG4gIHJldHVybiBzZWxmO1xufSkoKTtcblxufSx7fV0sNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBPbmVWZXJzaW9uQ29uc3RyYWludCA9IHJlcXVpcmUoJ2luZGl2aWR1YWwvb25lLXZlcnNpb24nKTtcblxudmFyIE1ZX1ZFUlNJT04gPSAnNyc7XG5PbmVWZXJzaW9uQ29uc3RyYWludCgnZXYtc3RvcmUnLCBNWV9WRVJTSU9OKTtcblxudmFyIGhhc2hLZXkgPSAnX19FVl9TVE9SRV9LRVlAJyArIE1ZX1ZFUlNJT047XG5cbm1vZHVsZS5leHBvcnRzID0gRXZTdG9yZTtcblxuZnVuY3Rpb24gRXZTdG9yZShlbGVtKSB7XG4gICAgdmFyIGhhc2ggPSBlbGVtW2hhc2hLZXldO1xuXG4gICAgaWYgKCFoYXNoKSB7XG4gICAgICAgIGhhc2ggPSBlbGVtW2hhc2hLZXldID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2g7XG59XG5cbn0se1wiaW5kaXZpZHVhbC9vbmUtdmVyc2lvblwiOjZ9XSw1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbid1c2Ugc3RyaWN0JztcblxuLypnbG9iYWwgd2luZG93LCBnbG9iYWwqL1xuXG52YXIgcm9vdCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID9cbiAgICB3aW5kb3cgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/XG4gICAgZ2xvYmFsIDoge307XG5cbm1vZHVsZS5leHBvcnRzID0gSW5kaXZpZHVhbDtcblxuZnVuY3Rpb24gSW5kaXZpZHVhbChrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSBpbiByb290KSB7XG4gICAgICAgIHJldHVybiByb290W2tleV07XG4gICAgfVxuXG4gICAgcm9vdFtrZXldID0gdmFsdWU7XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7fV0sNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBJbmRpdmlkdWFsID0gcmVxdWlyZSgnLi9pbmRleC5qcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9uZVZlcnNpb247XG5cbmZ1bmN0aW9uIE9uZVZlcnNpb24obW9kdWxlTmFtZSwgdmVyc2lvbiwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIGtleSA9ICdfX0lORElWSURVQUxfT05FX1ZFUlNJT05fJyArIG1vZHVsZU5hbWU7XG4gICAgdmFyIGVuZm9yY2VLZXkgPSBrZXkgKyAnX0VORk9SQ0VfU0lOR0xFVE9OJztcblxuICAgIHZhciB2ZXJzaW9uVmFsdWUgPSBJbmRpdmlkdWFsKGVuZm9yY2VLZXksIHZlcnNpb24pO1xuXG4gICAgaWYgKHZlcnNpb25WYWx1ZSAhPT0gdmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBvbmx5IGhhdmUgb25lIGNvcHkgb2YgJyArXG4gICAgICAgICAgICBtb2R1bGVOYW1lICsgJy5cXG4nICtcbiAgICAgICAgICAgICdZb3UgYWxyZWFkeSBoYXZlIHZlcnNpb24gJyArIHZlcnNpb25WYWx1ZSArXG4gICAgICAgICAgICAnIGluc3RhbGxlZC5cXG4nICtcbiAgICAgICAgICAgICdUaGlzIG1lYW5zIHlvdSBjYW5ub3QgaW5zdGFsbCB2ZXJzaW9uICcgKyB2ZXJzaW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gSW5kaXZpZHVhbChrZXksIGRlZmF1bHRWYWx1ZSk7XG59XG5cbn0se1wiLi9pbmRleC5qc1wiOjV9XSw3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbnZhciB0b3BMZXZlbCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDpcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9XG52YXIgbWluRG9jID0gcmVxdWlyZSgnbWluLWRvY3VtZW50Jyk7XG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudDtcbn0gZWxzZSB7XG4gICAgdmFyIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXTtcblxuICAgIGlmICghZG9jY3kpIHtcbiAgICAgICAgZG9jY3kgPSB0b3BMZXZlbFsnX19HTE9CQUxfRE9DVU1FTlRfQ0FDSEVANCddID0gbWluRG9jO1xuICAgIH1cblxuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jY3k7XG59XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJtaW4tZG9jdW1lbnRcIjoxN31dLDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcblxudmFyIENvbW1lbnQgPSByZXF1aXJlKFwiLi9kb20tY29tbWVudC5qc1wiKVxudmFyIERPTVRleHQgPSByZXF1aXJlKFwiLi9kb20tdGV4dC5qc1wiKVxudmFyIERPTUVsZW1lbnQgPSByZXF1aXJlKFwiLi9kb20tZWxlbWVudC5qc1wiKVxudmFyIERvY3VtZW50RnJhZ21lbnQgPSByZXF1aXJlKFwiLi9kb20tZnJhZ21lbnQuanNcIilcbnZhciBFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50LmpzXCIpXG52YXIgZGlzcGF0Y2hFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCIpXG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudDtcblxuZnVuY3Rpb24gRG9jdW1lbnQoKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvY3VtZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IERvY3VtZW50KCk7XG4gICAgfVxuXG4gICAgdGhpcy5oZWFkID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiaGVhZFwiKVxuICAgIHRoaXMuYm9keSA9IHRoaXMuY3JlYXRlRWxlbWVudChcImJvZHlcIilcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImh0bWxcIilcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhlYWQpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5ib2R5KVxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFt0aGlzLmRvY3VtZW50RWxlbWVudF1cbiAgICB0aGlzLm5vZGVUeXBlID0gOVxufVxuXG52YXIgcHJvdG8gPSBEb2N1bWVudC5wcm90b3R5cGU7XG5wcm90by5jcmVhdGVUZXh0Tm9kZSA9IGZ1bmN0aW9uIGNyZWF0ZVRleHROb2RlKHZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVFbGVtZW50TlMgPSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCB0YWdOYW1lKSB7XG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSBudWxsID8gbnVsbCA6IFN0cmluZyhuYW1lc3BhY2UpXG4gICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUsIHRoaXMsIG5zKVxufVxuXG5wcm90by5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWdOYW1lKSB7XG4gICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUsIHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBmdW5jdGlvbiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkge1xuICAgIHJldHVybiBuZXcgRG9jdW1lbnRGcmFnbWVudCh0aGlzKVxufVxuXG5wcm90by5jcmVhdGVFdmVudCA9IGZ1bmN0aW9uIGNyZWF0ZUV2ZW50KGZhbWlseSkge1xuICAgIHJldHVybiBuZXcgRXZlbnQoZmFtaWx5KVxufVxuXG5wcm90by5jcmVhdGVDb21tZW50ID0gZnVuY3Rpb24gY3JlYXRlQ29tbWVudChkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBDb21tZW50KGRhdGEsIHRoaXMpXG59XG5cbnByb3RvLmdldEVsZW1lbnRCeUlkID0gZnVuY3Rpb24gZ2V0RWxlbWVudEJ5SWQoaWQpIHtcbiAgICBpZCA9IFN0cmluZyhpZClcblxuICAgIHZhciByZXN1bHQgPSBkb21XYWxrKHRoaXMuY2hpbGROb2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKFN0cmluZyhub2RlLmlkKSA9PT0gaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlc3VsdCB8fCBudWxsXG59XG5cbnByb3RvLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lXG5wcm90by5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IERPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lXG5wcm90by5jb250YWlucyA9IERPTUVsZW1lbnQucHJvdG90eXBlLmNvbnRhaW5zXG5cbnByb3RvLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyXG5wcm90by5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lclxucHJvdG8uZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnRcblxufSx7XCIuL2RvbS1jb21tZW50LmpzXCI6OSxcIi4vZG9tLWVsZW1lbnQuanNcIjoxMCxcIi4vZG9tLWZyYWdtZW50LmpzXCI6MTEsXCIuL2RvbS10ZXh0LmpzXCI6MTIsXCIuL2V2ZW50LmpzXCI6MTMsXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiOjE0LFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiOjE1LFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIjoxNixcImRvbS13YWxrXCI6MTh9XSw5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gQ29tbWVudFxuXG5mdW5jdGlvbiBDb21tZW50KGRhdGEsIG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENvbW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCBvd25lcilcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgdGhpcy5ub2RlVmFsdWUgPSBkYXRhXG4gICAgdGhpcy5sZW5ndGggPSBkYXRhLmxlbmd0aFxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbn1cblxuQ29tbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSA4XG5Db21tZW50LnByb3RvdHlwZS5ub2RlTmFtZSA9IFwiI2NvbW1lbnRcIlxuXG5Db21tZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9Db21tZW50X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgQ29tbWVudF1cIlxufVxuXG59LHt9XSwxMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9tV2FsayA9IHJlcXVpcmUoXCJkb20td2Fsa1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgc2VyaWFsaXplTm9kZSA9IHJlcXVpcmUoXCIuL3NlcmlhbGl6ZS5qc1wiKVxuXG52YXIgaHRtbG5zID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcblxubW9kdWxlLmV4cG9ydHMgPSBET01FbGVtZW50XG5cbmZ1bmN0aW9uIERPTUVsZW1lbnQodGFnTmFtZSwgb3duZXIsIG5hbWVzcGFjZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBET01FbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSlcbiAgICB9XG5cbiAgICB2YXIgbnMgPSBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IGh0bWxucyA6IChuYW1lc3BhY2UgfHwgbnVsbClcblxuICAgIHRoaXMudGFnTmFtZSA9IG5zID09PSBodG1sbnMgPyBTdHJpbmcodGFnTmFtZSkudG9VcHBlckNhc2UoKSA6IHRhZ05hbWVcbiAgICB0aGlzLm5vZGVOYW1lID0gdGhpcy50YWdOYW1lXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcIlwiXG4gICAgdGhpcy5kYXRhc2V0ID0ge31cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLnN0eWxlID0ge31cbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG4gICAgdGhpcy5uYW1lc3BhY2VVUkkgPSBuc1xuICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSB7fVxuXG4gICAgaWYgKHRoaXMudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgdGhpcy50eXBlID0gJ3RleHQnXG4gICAgfVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS50eXBlID0gXCJET01FbGVtZW50XCJcbkRPTUVsZW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gMVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uIF9FbGVtZW50X2FwcGVuZENoaWxkKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkLnBhcmVudE5vZGUpIHtcbiAgICAgICAgY2hpbGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjaGlsZClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChjaGlsZClcbiAgICBjaGlsZC5wYXJlbnROb2RlID0gdGhpc1xuXG4gICAgcmV0dXJuIGNoaWxkXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfcmVwbGFjZUNoaWxkKGVsZW0sIG5lZWRsZSkge1xuICAgICAgICAvLyBUT0RPOiBUaHJvdyBOb3RGb3VuZEVycm9yIGlmIG5lZWRsZS5wYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgbmVlZGxlLnBhcmVudE5vZGUgPSBudWxsXG4gICAgICAgIHRoaXMuY2hpbGROb2Rlc1tpbmRleF0gPSBlbGVtXG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgICAgICByZXR1cm4gbmVlZGxlXG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUNoaWxkKGVsZW0pIHtcbiAgICAvLyBUT0RPOiBUaHJvdyBOb3RGb3VuZEVycm9yIGlmIGVsZW0ucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZWxlbSlcbiAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAxKVxuXG4gICAgZWxlbS5wYXJlbnROb2RlID0gbnVsbFxuICAgIHJldHVybiBlbGVtXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmluc2VydEJlZm9yZSA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfaW5zZXJ0QmVmb3JlKGVsZW0sIG5lZWRsZSkge1xuICAgICAgICAvLyBUT0RPOiBUaHJvdyBOb3RGb3VuZEVycm9yIGlmIHJlZmVyZW5jZUVsZW1lbnQgaXMgYSBkb20gbm9kZVxuICAgICAgICAvLyBhbmQgcGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gbmVlZGxlID09PSBudWxsIHx8IG5lZWRsZSA9PT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgIC0xIDpcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKG5lZWRsZSlcblxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMCwgZWxlbSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG4gICAgICAgIHJldHVybiBlbGVtXG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgcHJlZml4ID0gbnVsbFxuICAgICAgICB2YXIgbG9jYWxOYW1lID0gbmFtZVxuICAgICAgICB2YXIgY29sb25Qb3NpdGlvbiA9IG5hbWUuaW5kZXhPZihcIjpcIilcbiAgICAgICAgaWYgKGNvbG9uUG9zaXRpb24gPiAtMSkge1xuICAgICAgICAgICAgcHJlZml4ID0gbmFtZS5zdWJzdHIoMCwgY29sb25Qb3NpdGlvbilcbiAgICAgICAgICAgIGxvY2FsTmFtZSA9IG5hbWUuc3Vic3RyKGNvbG9uUG9zaXRpb24gKyAxKVxuICAgICAgICB9XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdIHx8ICh0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV0gPSB7fSlcbiAgICAgICAgYXR0cmlidXRlc1tsb2NhbE5hbWVdID0ge3ZhbHVlOiB2YWx1ZSwgcHJlZml4OiBwcmVmaXh9XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdO1xuICAgICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZXNbbmFtZV0gJiYgYXR0cmlidXRlc1tuYW1lXS52YWx1ZVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdO1xuICAgICAgICBpZiAoYXR0cmlidXRlcykge1xuICAgICAgICAgICAgZGVsZXRlIGF0dHJpYnV0ZXNbbmFtZV1cbiAgICAgICAgfVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXVxuICAgICAgICByZXR1cm4gISFhdHRyaWJ1dGVzICYmIG5hbWUgaW4gYXR0cmlidXRlcztcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnNldEF0dHJpYnV0ZU5TKG51bGwsIG5hbWUsIHZhbHVlKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaGFzQXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfaGFzQXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxuRE9NRWxlbWVudC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbi8vIFVuLWltcGxlbWVudGVkXG5ET01FbGVtZW50LnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uIF9FbGVtZW50X2ZvY3VzKCkge1xuICAgIHJldHVybiB2b2lkIDBcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfRWxlbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gc2VyaWFsaXplTm9kZSh0aGlzKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWVzKSB7XG4gICAgdmFyIGNsYXNzZXMgPSBjbGFzc05hbWVzLnNwbGl0KFwiIFwiKTtcbiAgICB2YXIgZWxlbXMgPSBbXVxuXG4gICAgZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc05hbWUgPSBub2RlLmNsYXNzTmFtZSB8fCBcIlwiXG4gICAgICAgICAgICB2YXIgbm9kZUNsYXNzZXMgPSBub2RlQ2xhc3NOYW1lLnNwbGl0KFwiIFwiKVxuXG4gICAgICAgICAgICBpZiAoY2xhc3Nlcy5ldmVyeShmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlQ2xhc3Nlcy5pbmRleE9mKGl0ZW0pICE9PSAtMVxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICBlbGVtcy5wdXNoKG5vZGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGVsZW1zXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkge1xuICAgIHRhZ05hbWUgPSB0YWdOYW1lLnRvTG93ZXJDYXNlKClcbiAgICB2YXIgZWxlbXMgPSBbXVxuXG4gICAgZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxICYmICh0YWdOYW1lID09PSAnKicgfHwgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUpKSB7XG4gICAgICAgICAgICBlbGVtcy5wdXNoKG5vZGUpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGVsZW1zXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gX0VsZW1lbnRfY29udGFpbnMoZWxlbWVudCkge1xuICAgIHJldHVybiBkb21XYWxrKHRoaXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50ID09PSBub2RlXG4gICAgfSkgfHwgZmFsc2Vcbn1cblxufSx7XCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiOjE0LFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiOjE1LFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIjoxNixcIi4vc2VyaWFsaXplLmpzXCI6MTksXCJkb20td2Fsa1wiOjE4fV0sMTE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIERPTUVsZW1lbnQgPSByZXF1aXJlKFwiLi9kb20tZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50RnJhZ21lbnRcblxuZnVuY3Rpb24gRG9jdW1lbnRGcmFnbWVudChvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQoKVxuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbFxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbn1cblxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRG9jdW1lbnRGcmFnbWVudFwiXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDExXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5ub2RlTmFtZSA9IFwiI2RvY3VtZW50LWZyYWdtZW50XCJcblxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgID0gRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlcGxhY2VDaGlsZFxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgID0gRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRcblxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPVxuICAgIGZ1bmN0aW9uIF9Eb2N1bWVudEZyYWdtZW50X3RvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhub2RlKVxuICAgICAgICB9KS5qb2luKFwiXCIpXG4gICAgfVxuXG59LHtcIi4vZG9tLWVsZW1lbnQuanNcIjoxMH1dLDEyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRE9NVGV4dFxuXG5mdW5jdGlvbiBET01UZXh0KHZhbHVlLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBET01UZXh0KSkge1xuICAgICAgICByZXR1cm4gbmV3IERPTVRleHQodmFsdWUpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gdmFsdWUgfHwgXCJcIlxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aFxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbn1cblxuRE9NVGV4dC5wcm90b3R5cGUudHlwZSA9IFwiRE9NVGV4dE5vZGVcIlxuRE9NVGV4dC5wcm90b3R5cGUubm9kZVR5cGUgPSAzXG5ET01UZXh0LnByb3RvdHlwZS5ub2RlTmFtZSA9IFwiI3RleHRcIlxuXG5ET01UZXh0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9UZXh0X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFcbn1cblxuRE9NVGV4dC5wcm90b3R5cGUucmVwbGFjZURhdGEgPSBmdW5jdGlvbiByZXBsYWNlRGF0YShpbmRleCwgbGVuZ3RoLCB2YWx1ZSkge1xuICAgIHZhciBjdXJyZW50ID0gdGhpcy5kYXRhXG4gICAgdmFyIGxlZnQgPSBjdXJyZW50LnN1YnN0cmluZygwLCBpbmRleClcbiAgICB2YXIgcmlnaHQgPSBjdXJyZW50LnN1YnN0cmluZyhpbmRleCArIGxlbmd0aCwgY3VycmVudC5sZW5ndGgpXG4gICAgdGhpcy5kYXRhID0gbGVmdCArIHZhbHVlICsgcmlnaHRcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbn1cblxufSx7fV0sMTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBFdmVudFxuXG5mdW5jdGlvbiBFdmVudChmYW1pbHkpIHt9XG5cbkV2ZW50LnByb3RvdHlwZS5pbml0RXZlbnQgPSBmdW5jdGlvbiBfRXZlbnRfaW5pdEV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlXG4gICAgdGhpcy5idWJibGVzID0gYnViYmxlc1xuICAgIHRoaXMuY2FuY2VsYWJsZSA9IGNhbmNlbGFibGVcbn1cblxuRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24gX0V2ZW50X3ByZXZlbnREZWZhdWx0KCkge1xuICAgIFxufVxuXG59LHt9XSwxNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGFkZEV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICBlbGVtLmxpc3RlbmVyc1t0eXBlXSA9IFtdXG4gICAgfVxuXG4gICAgaWYgKGVsZW0ubGlzdGVuZXJzW3R5cGVdLmluZGV4T2YobGlzdGVuZXIpID09PSAtMSkge1xuICAgICAgICBlbGVtLmxpc3RlbmVyc1t0eXBlXS5wdXNoKGxpc3RlbmVyKVxuICAgIH1cbn1cblxufSx7fV0sMTU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBkaXNwYXRjaEV2ZW50XG5cbmZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXYpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcbiAgICB2YXIgdHlwZSA9IGV2LnR5cGVcblxuICAgIGlmICghZXYudGFyZ2V0KSB7XG4gICAgICAgIGV2LnRhcmdldCA9IGVsZW1cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzID0ge31cbiAgICB9XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cblxuICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICAgICAgZXYuY3VycmVudFRhcmdldCA9IGVsZW1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcihldilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuaGFuZGxlRXZlbnQoZXYpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICBlbGVtLnBhcmVudE5vZGUuZGlzcGF0Y2hFdmVudChldilcbiAgICB9XG59XG5cbn0se31dLDE2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGxpc3QgPSBlbGVtLmxpc3RlbmVyc1t0eXBlXVxuICAgIHZhciBpbmRleCA9IGxpc3QuaW5kZXhPZihsaXN0ZW5lcilcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbn1cblxufSx7fV0sMTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIERvY3VtZW50ID0gcmVxdWlyZSgnLi9kb2N1bWVudC5qcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBEb2N1bWVudCgpO1xuXG59LHtcIi4vZG9jdW1lbnQuanNcIjo4fV0sMTg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlXG5cbm1vZHVsZS5leHBvcnRzID0gaXRlcmF0aXZlbHlXYWxrXG5cbmZ1bmN0aW9uIGl0ZXJhdGl2ZWx5V2Fsayhub2RlcywgY2IpIHtcbiAgICBpZiAoISgnbGVuZ3RoJyBpbiBub2RlcykpIHtcbiAgICAgICAgbm9kZXMgPSBbbm9kZXNdXG4gICAgfVxuICAgIFxuICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlcylcblxuICAgIHdoaWxlKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzLnNoaWZ0KCksXG4gICAgICAgICAgICByZXQgPSBjYihub2RlKVxuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmNoaWxkTm9kZXMgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgbm9kZXMgPSBzbGljZS5jYWxsKG5vZGUuY2hpbGROb2RlcykuY29uY2F0KG5vZGVzKVxuICAgICAgICB9XG4gICAgfVxufVxuXG59LHt9XSwxOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHNlcmlhbGl6ZU5vZGVcblxudmFyIHZvaWRFbGVtZW50cyA9IC9hcmVhfGJhc2V8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxrZXlnZW58bGlua3xtZW51aXRlbXxtZXRhfHBhcmFtfHNvdXJjZXx0cmFja3x3YnIvaTtcblxuZnVuY3Rpb24gc2VyaWFsaXplTm9kZShub2RlKSB7XG4gICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKSB7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiBlc2NhcGVUZXh0KG5vZGUuZGF0YSlcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIFwiPCEtLVwiICsgbm9kZS5kYXRhICsgXCItLT5cIlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUVsZW1lbnQobm9kZSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVsZW1lbnQoZWxlbSkge1xuICAgIHZhciBzdHJpbmdzID0gW11cblxuICAgIHZhciB0YWduYW1lID0gZWxlbS50YWdOYW1lXG5cbiAgICBpZiAoZWxlbS5uYW1lc3BhY2VVUkkgPT09IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKSB7XG4gICAgICAgIHRhZ25hbWUgPSB0YWduYW1lLnRvTG93ZXJDYXNlKClcbiAgICB9XG5cbiAgICBzdHJpbmdzLnB1c2goXCI8XCIgKyB0YWduYW1lICsgcHJvcGVydGllcyhlbGVtKSArIGRhdGFzZXRpZnkoZWxlbSkpXG5cbiAgICBpZiAodm9pZEVsZW1lbnRzLnRlc3QodGFnbmFtZSkpIHtcbiAgICAgICAgc3RyaW5ncy5wdXNoKFwiIC8+XCIpXG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RyaW5ncy5wdXNoKFwiPlwiKVxuXG4gICAgICAgIGlmIChlbGVtLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2guYXBwbHkoc3RyaW5ncywgZWxlbS5jaGlsZE5vZGVzLm1hcChzZXJpYWxpemVOb2RlKSlcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0KSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2goZXNjYXBlVGV4dChlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0KSlcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtLmlubmVySFRNTCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVsZW0uaW5uZXJIVE1MKVxuICAgICAgICB9XG5cbiAgICAgICAgc3RyaW5ncy5wdXNoKFwiPC9cIiArIHRhZ25hbWUgKyBcIj5cIilcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5ncy5qb2luKFwiXCIpXG59XG5cbmZ1bmN0aW9uIGlzUHJvcGVydHkoZWxlbSwga2V5KSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgZWxlbVtrZXldXG5cbiAgICBpZiAoa2V5ID09PSBcInN0eWxlXCIgJiYgT2JqZWN0LmtleXMoZWxlbS5zdHlsZSkubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICh0eXBlID09PSBcInN0cmluZ1wiIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiIHx8IHR5cGUgPT09IFwibnVtYmVyXCIpICYmXG4gICAgICAgIGtleSAhPT0gXCJub2RlTmFtZVwiICYmIGtleSAhPT0gXCJjbGFzc05hbWVcIiAmJiBrZXkgIT09IFwidGFnTmFtZVwiICYmXG4gICAgICAgIGtleSAhPT0gXCJ0ZXh0Q29udGVudFwiICYmIGtleSAhPT0gXCJpbm5lclRleHRcIiAmJiBrZXkgIT09IFwibmFtZXNwYWNlVVJJXCIgJiYgIGtleSAhPT0gXCJpbm5lckhUTUxcIlxufVxuXG5mdW5jdGlvbiBzdHlsaWZ5KHN0eWxlcykge1xuICAgIGlmICh0eXBlb2Ygc3R5bGVzID09PSAnc3RyaW5nJykgcmV0dXJuIHN0eWxlc1xuICAgIHZhciBhdHRyID0gXCJcIlxuICAgIE9iamVjdC5rZXlzKHN0eWxlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlc1trZXldXG4gICAgICAgIGtleSA9IGtleS5yZXBsYWNlKC9bQS1aXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgICAgICAgICByZXR1cm4gXCItXCIgKyBjLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIGF0dHIgKz0ga2V5ICsgXCI6XCIgKyB2YWx1ZSArIFwiO1wiXG4gICAgfSlcbiAgICByZXR1cm4gYXR0clxufVxuXG5mdW5jdGlvbiBkYXRhc2V0aWZ5KGVsZW0pIHtcbiAgICB2YXIgZHMgPSBlbGVtLmRhdGFzZXRcbiAgICB2YXIgcHJvcHMgPSBbXVxuXG4gICAgZm9yICh2YXIga2V5IGluIGRzKSB7XG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBcImRhdGEtXCIgKyBrZXksIHZhbHVlOiBkc1trZXldIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShsaXN0KSB7XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBbXVxuICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAodHVwbGUpIHtcbiAgICAgICAgdmFyIG5hbWUgPSB0dXBsZS5uYW1lXG4gICAgICAgIHZhciB2YWx1ZSA9IHR1cGxlLnZhbHVlXG5cbiAgICAgICAgaWYgKG5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgdmFsdWUgPSBzdHlsaWZ5KHZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5hbWUgKyBcIj1cIiArIFwiXFxcIlwiICsgZXNjYXBlQXR0cmlidXRlVmFsdWUodmFsdWUpICsgXCJcXFwiXCIpXG4gICAgfSlcblxuICAgIHJldHVybiBhdHRyaWJ1dGVzLmxlbmd0aCA/IFwiIFwiICsgYXR0cmlidXRlcy5qb2luKFwiIFwiKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gcHJvcGVydGllcyhlbGVtKSB7XG4gICAgdmFyIHByb3BzID0gW11cbiAgICBmb3IgKHZhciBrZXkgaW4gZWxlbSkge1xuICAgICAgICBpZiAoaXNQcm9wZXJ0eShlbGVtLCBrZXkpKSB7XG4gICAgICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZToga2V5LCB2YWx1ZTogZWxlbVtrZXldIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBucyBpbiBlbGVtLl9hdHRyaWJ1dGVzKSB7XG4gICAgICBmb3IgKHZhciBhdHRyaWJ1dGUgaW4gZWxlbS5fYXR0cmlidXRlc1tuc10pIHtcbiAgICAgICAgdmFyIHByb3AgPSBlbGVtLl9hdHRyaWJ1dGVzW25zXVthdHRyaWJ1dGVdXG4gICAgICAgIHZhciBuYW1lID0gKHByb3AucHJlZml4ID8gcHJvcC5wcmVmaXggKyBcIjpcIiA6IFwiXCIpICsgYXR0cmlidXRlXG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZTogcHJvcC52YWx1ZSB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbGVtLmNsYXNzTmFtZSkge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJjbGFzc1wiLCB2YWx1ZTogZWxlbS5jbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubGVuZ3RoID8gc3RyaW5naWZ5KHByb3BzKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gZXNjYXBlVGV4dChzKSB7XG4gICAgdmFyIHN0ciA9ICcnO1xuXG4gICAgaWYgKHR5cGVvZihzKSA9PT0gJ3N0cmluZycpIHsgXG4gICAgICAgIHN0ciA9IHM7IFxuICAgIH0gZWxzZSBpZiAocykge1xuICAgICAgICBzdHIgPSBzLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0clxuICAgICAgICAucmVwbGFjZSgvJi9nLCBcIiZhbXA7XCIpXG4gICAgICAgIC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuICAgICAgICAucmVwbGFjZSgvPi9nLCBcIiZndDtcIilcbn1cblxuZnVuY3Rpb24gZXNjYXBlQXR0cmlidXRlVmFsdWUoc3RyKSB7XG4gICAgcmV0dXJuIGVzY2FwZVRleHQoc3RyKS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxufVxuXG59LHt9XSwyMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc09iamVjdCh4KSB7XG5cdHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiB4ICE9PSBudWxsO1xufTtcblxufSx7fV0sMjE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIG5hdGl2ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5XG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nXG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSXNBcnJheSB8fCBpc0FycmF5XG5cbmZ1bmN0aW9uIGlzQXJyYXkob2JqKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiXG59XG5cbn0se31dLDIyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBwYXRjaCA9IHJlcXVpcmUoXCIuL3Zkb20vcGF0Y2guanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaFxuXG59LHtcIi4vdmRvbS9wYXRjaC5qc1wiOjI3fV0sMjM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZShcImlzLW9iamVjdFwiKVxudmFyIGlzSG9vayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12aG9vay5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UHJvcGVydGllc1xuXG5mdW5jdGlvbiBhcHBseVByb3BlcnRpZXMobm9kZSwgcHJvcHMsIHByZXZpb3VzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXVxuXG4gICAgICAgIGlmIChwcm9wVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cylcbiAgICAgICAgICAgIGlmIChwcm9wVmFsdWUuaG9vaykge1xuICAgICAgICAgICAgICAgIHByb3BWYWx1ZS5ob29rKG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHByb3BOYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA/IHByZXZpb3VzW3Byb3BOYW1lXSA6IHVuZGVmaW5lZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcGF0Y2hPYmplY3Qobm9kZSwgcHJvcHMsIHByZXZpb3VzLCBwcm9wTmFtZSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBwcm9wVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpIHtcbiAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzVmFsdWUgPSBwcmV2aW91c1twcm9wTmFtZV1cblxuICAgICAgICBpZiAoIWlzSG9vayhwcmV2aW91c1ZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGF0dHJOYW1lIGluIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3R5bGVbaV0gPSBcIlwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJldmlvdXNWYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gXCJcIlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwcmV2aW91c1ZhbHVlLnVuaG9vaykge1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZS51bmhvb2sobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcGF0Y2hPYmplY3Qobm9kZSwgcHJvcHMsIHByZXZpb3VzLCBwcm9wTmFtZSwgcHJvcFZhbHVlKSB7XG4gICAgdmFyIHByZXZpb3VzVmFsdWUgPSBwcmV2aW91cyA/IHByZXZpb3VzW3Byb3BOYW1lXSA6IHVuZGVmaW5lZFxuXG4gICAgLy8gU2V0IGF0dHJpYnV0ZXNcbiAgICBpZiAocHJvcE5hbWUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgIGZvciAodmFyIGF0dHJOYW1lIGluIHByb3BWYWx1ZSkge1xuICAgICAgICAgICAgdmFyIGF0dHJWYWx1ZSA9IHByb3BWYWx1ZVthdHRyTmFtZV1cblxuICAgICAgICAgICAgaWYgKGF0dHJWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCBhdHRyVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZihwcmV2aW91c1ZhbHVlICYmIGlzT2JqZWN0KHByZXZpb3VzVmFsdWUpICYmXG4gICAgICAgIGdldFByb3RvdHlwZShwcmV2aW91c1ZhbHVlKSAhPT0gZ2V0UHJvdG90eXBlKHByb3BWYWx1ZSkpIHtcbiAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBwcm9wVmFsdWVcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFpc09iamVjdChub2RlW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSB7fVxuICAgIH1cblxuICAgIHZhciByZXBsYWNlciA9IHByb3BOYW1lID09PSBcInN0eWxlXCIgPyBcIlwiIDogdW5kZWZpbmVkXG5cbiAgICBmb3IgKHZhciBrIGluIHByb3BWYWx1ZSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwcm9wVmFsdWVba11cbiAgICAgICAgbm9kZVtwcm9wTmFtZV1ba10gPSAodmFsdWUgPT09IHVuZGVmaW5lZCkgPyByZXBsYWNlciA6IHZhbHVlXG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRQcm90b3R5cGUodmFsdWUpIHtcbiAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5fX3Byb3RvX18pIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLl9fcHJvdG9fX1xuICAgIH0gZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZVxuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy12aG9vay5qc1wiOjM4LFwiaXMtb2JqZWN0XCI6MjB9XSwyNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKFwiZ2xvYmFsL2RvY3VtZW50XCIpXG5cbnZhciBhcHBseVByb3BlcnRpZXMgPSByZXF1aXJlKFwiLi9hcHBseS1wcm9wZXJ0aWVzXCIpXG5cbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxudmFyIGhhbmRsZVRodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2hhbmRsZS10aHVuay5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh2bm9kZSwgb3B0cykge1xuICAgIHZhciBkb2MgPSBvcHRzID8gb3B0cy5kb2N1bWVudCB8fCBkb2N1bWVudCA6IGRvY3VtZW50XG4gICAgdmFyIHdhcm4gPSBvcHRzID8gb3B0cy53YXJuIDogbnVsbFxuXG4gICAgdm5vZGUgPSBoYW5kbGVUaHVuayh2bm9kZSkuYVxuXG4gICAgaWYgKGlzV2lkZ2V0KHZub2RlKSkge1xuICAgICAgICByZXR1cm4gdm5vZGUuaW5pdCgpXG4gICAgfSBlbHNlIGlmIChpc1ZUZXh0KHZub2RlKSkge1xuICAgICAgICByZXR1cm4gZG9jLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpXG4gICAgfSBlbHNlIGlmICghaXNWTm9kZSh2bm9kZSkpIHtcbiAgICAgICAgaWYgKHdhcm4pIHtcbiAgICAgICAgICAgIHdhcm4oXCJJdGVtIGlzIG5vdCBhIHZhbGlkIHZpcnR1YWwgZG9tIG5vZGVcIiwgdm5vZGUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9ICh2bm9kZS5uYW1lc3BhY2UgPT09IG51bGwpID9cbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQodm5vZGUudGFnTmFtZSkgOlxuICAgICAgICBkb2MuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5hbWVzcGFjZSwgdm5vZGUudGFnTmFtZSlcblxuICAgIHZhciBwcm9wcyA9IHZub2RlLnByb3BlcnRpZXNcbiAgICBhcHBseVByb3BlcnRpZXMobm9kZSwgcHJvcHMpXG5cbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGROb2RlID0gY3JlYXRlRWxlbWVudChjaGlsZHJlbltpXSwgb3B0cylcbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZE5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVuay5qc1wiOjM2LFwiLi4vdm5vZGUvaXMtdm5vZGUuanNcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0LmpzXCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4vYXBwbHktcHJvcGVydGllc1wiOjIzLFwiZ2xvYmFsL2RvY3VtZW50XCI6N31dLDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbi8vIE1hcHMgYSB2aXJ0dWFsIERPTSB0cmVlIG9udG8gYSByZWFsIERPTSB0cmVlIGluIGFuIGVmZmljaWVudCBtYW5uZXIuXG4vLyBXZSBkb24ndCB3YW50IHRvIHJlYWQgYWxsIG9mIHRoZSBET00gbm9kZXMgaW4gdGhlIHRyZWUgc28gd2UgdXNlXG4vLyB0aGUgaW4tb3JkZXIgdHJlZSBpbmRleGluZyB0byBlbGltaW5hdGUgcmVjdXJzaW9uIGRvd24gY2VydGFpbiBicmFuY2hlcy5cbi8vIFdlIG9ubHkgcmVjdXJzZSBpbnRvIGEgRE9NIG5vZGUgaWYgd2Uga25vdyB0aGF0IGl0IGNvbnRhaW5zIGEgY2hpbGQgb2Zcbi8vIGludGVyZXN0LlxuXG52YXIgbm9DaGlsZCA9IHt9XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tSW5kZXhcblxuZnVuY3Rpb24gZG9tSW5kZXgocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzKSB7XG4gICAgaWYgKCFpbmRpY2VzIHx8IGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7fVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGljZXMuc29ydChhc2NlbmRpbmcpXG4gICAgICAgIHJldHVybiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2RlcywgMClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlY3Vyc2Uocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzLCByb290SW5kZXgpIHtcbiAgICBub2RlcyA9IG5vZGVzIHx8IHt9XG5cblxuICAgIGlmIChyb290Tm9kZSkge1xuICAgICAgICBpZiAoaW5kZXhJblJhbmdlKGluZGljZXMsIHJvb3RJbmRleCwgcm9vdEluZGV4KSkge1xuICAgICAgICAgICAgbm9kZXNbcm9vdEluZGV4XSA9IHJvb3ROb2RlXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdkNoaWxkcmVuID0gdHJlZS5jaGlsZHJlblxuXG4gICAgICAgIGlmICh2Q2hpbGRyZW4pIHtcblxuICAgICAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSByb290Tm9kZS5jaGlsZE5vZGVzXG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJvb3RJbmRleCArPSAxXG5cbiAgICAgICAgICAgICAgICB2YXIgdkNoaWxkID0gdkNoaWxkcmVuW2ldIHx8IG5vQ2hpbGRcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEluZGV4ID0gcm9vdEluZGV4ICsgKHZDaGlsZC5jb3VudCB8fCAwKVxuXG4gICAgICAgICAgICAgICAgLy8gc2tpcCByZWN1cnNpb24gZG93biB0aGUgdHJlZSBpZiB0aGVyZSBhcmUgbm8gbm9kZXMgZG93biBoZXJlXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIG5leHRJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjdXJzZShjaGlsZE5vZGVzW2ldLCB2Q2hpbGQsIGluZGljZXMsIG5vZGVzLCByb290SW5kZXgpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcm9vdEluZGV4ID0gbmV4dEluZGV4XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbn1cblxuLy8gQmluYXJ5IHNlYXJjaCBmb3IgYW4gaW5kZXggaW4gdGhlIGludGVydmFsIFtsZWZ0LCByaWdodF1cbmZ1bmN0aW9uIGluZGV4SW5SYW5nZShpbmRpY2VzLCBsZWZ0LCByaWdodCkge1xuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICB2YXIgbWluSW5kZXggPSAwXG4gICAgdmFyIG1heEluZGV4ID0gaW5kaWNlcy5sZW5ndGggLSAxXG4gICAgdmFyIGN1cnJlbnRJbmRleFxuICAgIHZhciBjdXJyZW50SXRlbVxuXG4gICAgd2hpbGUgKG1pbkluZGV4IDw9IG1heEluZGV4KSB7XG4gICAgICAgIGN1cnJlbnRJbmRleCA9ICgobWF4SW5kZXggKyBtaW5JbmRleCkgLyAyKSA+PiAwXG4gICAgICAgIGN1cnJlbnRJdGVtID0gaW5kaWNlc1tjdXJyZW50SW5kZXhdXG5cbiAgICAgICAgaWYgKG1pbkluZGV4ID09PSBtYXhJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtID49IGxlZnQgJiYgY3VycmVudEl0ZW0gPD0gcmlnaHRcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SXRlbSA8IGxlZnQpIHtcbiAgICAgICAgICAgIG1pbkluZGV4ID0gY3VycmVudEluZGV4ICsgMVxuICAgICAgICB9IGVsc2UgIGlmIChjdXJyZW50SXRlbSA+IHJpZ2h0KSB7XG4gICAgICAgICAgICBtYXhJbmRleCA9IGN1cnJlbnRJbmRleCAtIDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gICAgcmV0dXJuIGEgPiBiID8gMSA6IC0xXG59XG5cbn0se31dLDI2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBhcHBseVByb3BlcnRpZXMgPSByZXF1aXJlKFwiLi9hcHBseS1wcm9wZXJ0aWVzXCIpXG5cbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBWUGF0Y2ggPSByZXF1aXJlKFwiLi4vdm5vZGUvdnBhdGNoLmpzXCIpXG5cbnZhciB1cGRhdGVXaWRnZXQgPSByZXF1aXJlKFwiLi91cGRhdGUtd2lkZ2V0XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHlQYXRjaFxuXG5mdW5jdGlvbiBhcHBseVBhdGNoKHZwYXRjaCwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciB0eXBlID0gdnBhdGNoLnR5cGVcbiAgICB2YXIgdk5vZGUgPSB2cGF0Y2gudk5vZGVcbiAgICB2YXIgcGF0Y2ggPSB2cGF0Y2gucGF0Y2hcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFZQYXRjaC5SRU1PVkU6XG4gICAgICAgICAgICByZXR1cm4gcmVtb3ZlTm9kZShkb21Ob2RlLCB2Tm9kZSlcbiAgICAgICAgY2FzZSBWUGF0Y2guSU5TRVJUOlxuICAgICAgICAgICAgcmV0dXJuIGluc2VydE5vZGUoZG9tTm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZURVhUOlxuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1BhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guV0lER0VUOlxuICAgICAgICAgICAgcmV0dXJuIHdpZGdldFBhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guVk5PREU6XG4gICAgICAgICAgICByZXR1cm4gdk5vZGVQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLk9SREVSOlxuICAgICAgICAgICAgcmVvcmRlckNoaWxkcmVuKGRvbU5vZGUsIHBhdGNoKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guUFJPUFM6XG4gICAgICAgICAgICBhcHBseVByb3BlcnRpZXMoZG9tTm9kZSwgcGF0Y2gsIHZOb2RlLnByb3BlcnRpZXMpXG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgICAgICBjYXNlIFZQYXRjaC5USFVOSzpcbiAgICAgICAgICAgIHJldHVybiByZXBsYWNlUm9vdChkb21Ob2RlLFxuICAgICAgICAgICAgICAgIHJlbmRlck9wdGlvbnMucGF0Y2goZG9tTm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkb21Ob2RlKVxuICAgIH1cblxuICAgIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdk5vZGUpO1xuXG4gICAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gaW5zZXJ0Tm9kZShwYXJlbnROb2RlLCB2Tm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodk5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKG5ld05vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudE5vZGVcbn1cblxuZnVuY3Rpb24gc3RyaW5nUGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB2VGV4dCwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoZG9tTm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICBkb21Ob2RlLnJlcGxhY2VEYXRhKDAsIGRvbU5vZGUubGVuZ3RoLCB2VGV4dC50ZXh0KVxuICAgICAgICBuZXdOb2RlID0gZG9tTm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG4gICAgICAgIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2VGV4dCwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICBpZiAocGFyZW50Tm9kZSAmJiBuZXdOb2RlICE9PSBkb21Ob2RlKSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gd2lkZ2V0UGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB3aWRnZXQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdXBkYXRpbmcgPSB1cGRhdGVXaWRnZXQobGVmdFZOb2RlLCB3aWRnZXQpXG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmICh1cGRhdGluZykge1xuICAgICAgICBuZXdOb2RlID0gd2lkZ2V0LnVwZGF0ZShsZWZ0Vk5vZGUsIGRvbU5vZGUpIHx8IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIod2lkZ2V0LCByZW5kZXJPcHRpb25zKVxuICAgIH1cblxuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG5cbiAgICBpZiAocGFyZW50Tm9kZSAmJiBuZXdOb2RlICE9PSBkb21Ob2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGluZykge1xuICAgICAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIGxlZnRWTm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiB2Tm9kZVBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgIHZhciBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodk5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICBpZiAocGFyZW50Tm9kZSAmJiBuZXdOb2RlICE9PSBkb21Ob2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gZGVzdHJveVdpZGdldChkb21Ob2RlLCB3KSB7XG4gICAgaWYgKHR5cGVvZiB3LmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIiAmJiBpc1dpZGdldCh3KSkge1xuICAgICAgICB3LmRlc3Ryb3koZG9tTm9kZSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBtb3Zlcykge1xuICAgIHZhciBjaGlsZE5vZGVzID0gZG9tTm9kZS5jaGlsZE5vZGVzXG4gICAgdmFyIGtleU1hcCA9IHt9XG4gICAgdmFyIG5vZGVcbiAgICB2YXIgcmVtb3ZlXG4gICAgdmFyIGluc2VydFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb3Zlcy5yZW1vdmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlbW92ZSA9IG1vdmVzLnJlbW92ZXNbaV1cbiAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbcmVtb3ZlLmZyb21dXG4gICAgICAgIGlmIChyZW1vdmUua2V5KSB7XG4gICAgICAgICAgICBrZXlNYXBbcmVtb3ZlLmtleV0gPSBub2RlXG4gICAgICAgIH1cbiAgICAgICAgZG9tTm9kZS5yZW1vdmVDaGlsZChub2RlKVxuICAgIH1cblxuICAgIHZhciBsZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aFxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbW92ZXMuaW5zZXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBpbnNlcnQgPSBtb3Zlcy5pbnNlcnRzW2pdXG4gICAgICAgIG5vZGUgPSBrZXlNYXBbaW5zZXJ0LmtleV1cbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgd2VpcmRlc3QgYnVnIGkndmUgZXZlciBzZWVuIGluIHdlYmtpdFxuICAgICAgICBkb21Ob2RlLmluc2VydEJlZm9yZShub2RlLCBpbnNlcnQudG8gPj0gbGVuZ3RoKysgPyBudWxsIDogY2hpbGROb2Rlc1tpbnNlcnQudG9dKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVJvb3Qob2xkUm9vdCwgbmV3Um9vdCkge1xuICAgIGlmIChvbGRSb290ICYmIG5ld1Jvb3QgJiYgb2xkUm9vdCAhPT0gbmV3Um9vdCAmJiBvbGRSb290LnBhcmVudE5vZGUpIHtcbiAgICAgICAgb2xkUm9vdC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdSb290LCBvbGRSb290KVxuICAgIH1cblxuICAgIHJldHVybiBuZXdSb290O1xufVxuXG59LHtcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxLFwiLi4vdm5vZGUvdnBhdGNoLmpzXCI6NDQsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcIi4vdXBkYXRlLXdpZGdldFwiOjI4fV0sMjc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKFwieC1pcy1hcnJheVwiKVxuXG52YXIgcmVuZGVyID0gcmVxdWlyZShcIi4vY3JlYXRlLWVsZW1lbnRcIilcbnZhciBkb21JbmRleCA9IHJlcXVpcmUoXCIuL2RvbS1pbmRleFwiKVxudmFyIHBhdGNoT3AgPSByZXF1aXJlKFwiLi9wYXRjaC1vcFwiKVxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaFxuXG5mdW5jdGlvbiBwYXRjaChyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHJlbmRlck9wdGlvbnMgPSByZW5kZXJPcHRpb25zIHx8IHt9XG4gICAgcmVuZGVyT3B0aW9ucy5wYXRjaCA9IHJlbmRlck9wdGlvbnMucGF0Y2ggJiYgcmVuZGVyT3B0aW9ucy5wYXRjaCAhPT0gcGF0Y2hcbiAgICAgICAgPyByZW5kZXJPcHRpb25zLnBhdGNoXG4gICAgICAgIDogcGF0Y2hSZWN1cnNpdmVcbiAgICByZW5kZXJPcHRpb25zLnJlbmRlciA9IHJlbmRlck9wdGlvbnMucmVuZGVyIHx8IHJlbmRlclxuXG4gICAgcmV0dXJuIHJlbmRlck9wdGlvbnMucGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIHBhdGNoUmVjdXJzaXZlKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIGluZGljZXMgPSBwYXRjaEluZGljZXMocGF0Y2hlcylcblxuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcm9vdE5vZGVcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBkb21JbmRleChyb290Tm9kZSwgcGF0Y2hlcy5hLCBpbmRpY2VzKVxuICAgIHZhciBvd25lckRvY3VtZW50ID0gcm9vdE5vZGUub3duZXJEb2N1bWVudFxuXG4gICAgaWYgKCFyZW5kZXJPcHRpb25zLmRvY3VtZW50ICYmIG93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50KSB7XG4gICAgICAgIHJlbmRlck9wdGlvbnMuZG9jdW1lbnQgPSBvd25lckRvY3VtZW50XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlSW5kZXggPSBpbmRpY2VzW2ldXG4gICAgICAgIHJvb3ROb2RlID0gYXBwbHlQYXRjaChyb290Tm9kZSxcbiAgICAgICAgICAgIGluZGV4W25vZGVJbmRleF0sXG4gICAgICAgICAgICBwYXRjaGVzW25vZGVJbmRleF0sXG4gICAgICAgICAgICByZW5kZXJPcHRpb25zKVxuICAgIH1cblxuICAgIHJldHVybiByb290Tm9kZVxufVxuXG5mdW5jdGlvbiBhcHBseVBhdGNoKHJvb3ROb2RlLCBkb21Ob2RlLCBwYXRjaExpc3QsIHJlbmRlck9wdGlvbnMpIHtcbiAgICBpZiAoIWRvbU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmIChpc0FycmF5KHBhdGNoTGlzdCkpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRjaExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG5ld05vZGUgPSBwYXRjaE9wKHBhdGNoTGlzdFtpXSwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICAgICAgaWYgKGRvbU5vZGUgPT09IHJvb3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3QsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKGRvbU5vZGUgPT09IHJvb3ROb2RlKSB7XG4gICAgICAgICAgICByb290Tm9kZSA9IG5ld05vZGVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290Tm9kZVxufVxuXG5mdW5jdGlvbiBwYXRjaEluZGljZXMocGF0Y2hlcykge1xuICAgIHZhciBpbmRpY2VzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBwYXRjaGVzKSB7XG4gICAgICAgIGlmIChrZXkgIT09IFwiYVwiKSB7XG4gICAgICAgICAgICBpbmRpY2VzLnB1c2goTnVtYmVyKGtleSkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5kaWNlc1xufVxuXG59LHtcIi4vY3JlYXRlLWVsZW1lbnRcIjoyNCxcIi4vZG9tLWluZGV4XCI6MjUsXCIuL3BhdGNoLW9wXCI6MjYsXCJnbG9iYWwvZG9jdW1lbnRcIjo3LFwieC1pcy1hcnJheVwiOjIxfV0sMjg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVwZGF0ZVdpZGdldFxuXG5mdW5jdGlvbiB1cGRhdGVXaWRnZXQoYSwgYikge1xuICAgIGlmIChpc1dpZGdldChhKSAmJiBpc1dpZGdldChiKSkge1xuICAgICAgICBpZiAoXCJuYW1lXCIgaW4gYSAmJiBcIm5hbWVcIiBpbiBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pZCA9PT0gYi5pZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGEuaW5pdCA9PT0gYi5pbml0XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MX1dLDI5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBBdHRyaWJ1dGVIb29rO1xuXG5mdW5jdGlvbiBBdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQXR0cmlidXRlSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBwcmV2KSB7XG4gICAgaWYgKHByZXYgJiYgcHJldi50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgcHJldi52YWx1ZSA9PT0gdGhpcy52YWx1ZSAmJlxuICAgICAgICBwcmV2Lm5hbWVzcGFjZSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5vZGUuc2V0QXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIHByb3AsIHRoaXMudmFsdWUpO1xufTtcblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3AsIG5leHQpIHtcbiAgICBpZiAobmV4dCAmJiBuZXh0LnR5cGUgPT09ICdBdHRyaWJ1dGVIb29rJyAmJlxuICAgICAgICBuZXh0Lm5hbWVzcGFjZSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjb2xvblBvc2l0aW9uID0gcHJvcC5pbmRleE9mKCc6Jyk7XG4gICAgdmFyIGxvY2FsTmFtZSA9IGNvbG9uUG9zaXRpb24gPiAtMSA/IHByb3Auc3Vic3RyKGNvbG9uUG9zaXRpb24gKyAxKSA6IHByb3A7XG4gICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGVOUyh0aGlzLm5hbWVzcGFjZSwgbG9jYWxOYW1lKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnR5cGUgPSAnQXR0cmlidXRlSG9vayc7XG5cbn0se31dLDMwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIEV2U3RvcmUgPSByZXF1aXJlKCdldi1zdG9yZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2SG9vaztcblxuZnVuY3Rpb24gRXZIb29rKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEV2SG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFdkhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuRXZIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIHZhciBlcyA9IEV2U3RvcmUobm9kZSk7XG4gICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlOYW1lLnN1YnN0cigzKTtcblxuICAgIGVzW3Byb3BOYW1lXSA9IHRoaXMudmFsdWU7XG59O1xuXG5Fdkhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIHZhciBlcyA9IEV2U3RvcmUobm9kZSk7XG4gICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlOYW1lLnN1YnN0cigzKTtcblxuICAgIGVzW3Byb3BOYW1lXSA9IHVuZGVmaW5lZDtcbn07XG5cbn0se1wiZXYtc3RvcmVcIjo0fV0sMzE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNvZnRTZXRIb29rO1xuXG5mdW5jdGlvbiBTb2Z0U2V0SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTb2Z0U2V0SG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTb2Z0U2V0SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5Tb2Z0U2V0SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICBpZiAobm9kZVtwcm9wZXJ0eU5hbWVdICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGVbcHJvcGVydHlOYW1lXSA9IHRoaXMudmFsdWU7XG4gICAgfVxufTtcblxufSx7fV0sMzI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIFZOb2RlID0gcmVxdWlyZSgnLi4vdm5vZGUvdm5vZGUuanMnKTtcbnZhciBWVGV4dCA9IHJlcXVpcmUoJy4uL3Zub2RlL3Z0ZXh0LmpzJyk7XG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZub2RlJyk7XG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZ0ZXh0Jyk7XG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy13aWRnZXQnKTtcbnZhciBpc0hvb2sgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12aG9vaycpO1xudmFyIGlzVlRodW5rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdGh1bmsnKTtcblxudmFyIHBhcnNlVGFnID0gcmVxdWlyZSgnLi9wYXJzZS10YWcuanMnKTtcbnZhciBzb2Z0U2V0SG9vayA9IHJlcXVpcmUoJy4vaG9va3Mvc29mdC1zZXQtaG9vay5qcycpO1xudmFyIGV2SG9vayA9IHJlcXVpcmUoJy4vaG9va3MvZXYtaG9vay5qcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGg7XG5cbmZ1bmN0aW9uIGgodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IFtdO1xuICAgIHZhciB0YWcsIHByb3BzLCBrZXksIG5hbWVzcGFjZTtcblxuICAgIGlmICghY2hpbGRyZW4gJiYgaXNDaGlsZHJlbihwcm9wZXJ0aWVzKSkge1xuICAgICAgICBjaGlsZHJlbiA9IHByb3BlcnRpZXM7XG4gICAgICAgIHByb3BzID0ge307XG4gICAgfVxuXG4gICAgcHJvcHMgPSBwcm9wcyB8fCBwcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHRhZyA9IHBhcnNlVGFnKHRhZ05hbWUsIHByb3BzKTtcblxuICAgIC8vIHN1cHBvcnQga2V5c1xuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eSgna2V5JykpIHtcbiAgICAgICAga2V5ID0gcHJvcHMua2V5O1xuICAgICAgICBwcm9wcy5rZXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydCBuYW1lc3BhY2VcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ25hbWVzcGFjZScpKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IHByb3BzLm5hbWVzcGFjZTtcbiAgICAgICAgcHJvcHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIGZpeCBjdXJzb3IgYnVnXG4gICAgaWYgKHRhZyA9PT0gJ0lOUFVUJyAmJlxuICAgICAgICAhbmFtZXNwYWNlICYmXG4gICAgICAgIHByb3BzLmhhc093blByb3BlcnR5KCd2YWx1ZScpICYmXG4gICAgICAgIHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgIWlzSG9vayhwcm9wcy52YWx1ZSlcbiAgICApIHtcbiAgICAgICAgcHJvcHMudmFsdWUgPSBzb2Z0U2V0SG9vayhwcm9wcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtUHJvcGVydGllcyhwcm9wcyk7XG5cbiAgICBpZiAoY2hpbGRyZW4gIT09IHVuZGVmaW5lZCAmJiBjaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgICBhZGRDaGlsZChjaGlsZHJlbiwgY2hpbGROb2RlcywgdGFnLCBwcm9wcyk7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gbmV3IFZOb2RlKHRhZywgcHJvcHMsIGNoaWxkTm9kZXMsIGtleSwgbmFtZXNwYWNlKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2hpbGQoYywgY2hpbGROb2RlcywgdGFnLCBwcm9wcykge1xuICAgIGlmICh0eXBlb2YgYyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKG5ldyBWVGV4dChjKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKG5ldyBWVGV4dChTdHJpbmcoYykpKTtcbiAgICB9IGVsc2UgaWYgKGlzQ2hpbGQoYykpIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKGMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFkZENoaWxkKGNbaV0sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChjID09PSBudWxsIHx8IGMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50KHtcbiAgICAgICAgICAgIGZvcmVpZ25PYmplY3Q6IGMsXG4gICAgICAgICAgICBwYXJlbnRWbm9kZToge1xuICAgICAgICAgICAgICAgIHRhZ05hbWU6IHRhZyxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wcykge1xuICAgICAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG5cbiAgICAgICAgICAgIGlmIChpc0hvb2sodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwcm9wTmFtZS5zdWJzdHIoMCwgMykgPT09ICdldi0nKSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIGV2LWZvbyBzdXBwb3J0XG4gICAgICAgICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZXZIb29rKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNDaGlsZCh4KSB7XG4gICAgcmV0dXJuIGlzVk5vZGUoeCkgfHwgaXNWVGV4dCh4KSB8fCBpc1dpZGdldCh4KSB8fCBpc1ZUaHVuayh4KTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpIHx8IGlzQ2hpbGQoeCk7XG59XG5cbmZ1bmN0aW9uIFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudChkYXRhKSB7XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcigpO1xuXG4gICAgZXJyLnR5cGUgPSAndmlydHVhbC1oeXBlcnNjcmlwdC51bmV4cGVjdGVkLnZpcnR1YWwtZWxlbWVudCc7XG4gICAgZXJyLm1lc3NhZ2UgPSAnVW5leHBlY3RlZCB2aXJ0dWFsIGNoaWxkIHBhc3NlZCB0byBoKCkuXFxuJyArXG4gICAgICAgICdFeHBlY3RlZCBhIFZOb2RlIC8gVnRodW5rIC8gVldpZGdldCAvIHN0cmluZyBidXQ6XFxuJyArXG4gICAgICAgICdnb3Q6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEuZm9yZWlnbk9iamVjdCkgK1xuICAgICAgICAnLlxcbicgK1xuICAgICAgICAnVGhlIHBhcmVudCB2bm9kZSBpczpcXG4nICtcbiAgICAgICAgZXJyb3JTdHJpbmcoZGF0YS5wYXJlbnRWbm9kZSlcbiAgICAgICAgJ1xcbicgK1xuICAgICAgICAnU3VnZ2VzdGVkIGZpeDogY2hhbmdlIHlvdXIgYGgoLi4uLCBbIC4uLiBdKWAgY2FsbHNpdGUuJztcbiAgICBlcnIuZm9yZWlnbk9iamVjdCA9IGRhdGEuZm9yZWlnbk9iamVjdDtcbiAgICBlcnIucGFyZW50Vm5vZGUgPSBkYXRhLnBhcmVudFZub2RlO1xuXG4gICAgcmV0dXJuIGVycjtcbn1cblxuZnVuY3Rpb24gZXJyb3JTdHJpbmcob2JqKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgJyAgICAnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcob2JqKTtcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCIuLi92bm9kZS9pcy12bm9kZVwiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHRcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldFwiOjQxLFwiLi4vdm5vZGUvdm5vZGUuanNcIjo0MyxcIi4uL3Zub2RlL3Z0ZXh0LmpzXCI6NDUsXCIuL2hvb2tzL2V2LWhvb2suanNcIjozMCxcIi4vaG9va3Mvc29mdC1zZXQtaG9vay5qc1wiOjMxLFwiLi9wYXJzZS10YWcuanNcIjozMyxcIngtaXMtYXJyYXlcIjoyMX1dLDMzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIHNwbGl0ID0gcmVxdWlyZSgnYnJvd3Nlci1zcGxpdCcpO1xuXG52YXIgY2xhc3NJZFNwbGl0ID0gLyhbXFwuI10/W2EtekEtWjAtOVxcdTAwN0YtXFx1RkZGRl86LV0rKS87XG52YXIgbm90Q2xhc3NJZCA9IC9eXFwufCMvO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlVGFnO1xuXG5mdW5jdGlvbiBwYXJzZVRhZyh0YWcsIHByb3BzKSB7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgICAgcmV0dXJuICdESVYnO1xuICAgIH1cblxuICAgIHZhciBub0lkID0gIShwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnaWQnKSk7XG5cbiAgICB2YXIgdGFnUGFydHMgPSBzcGxpdCh0YWcsIGNsYXNzSWRTcGxpdCk7XG4gICAgdmFyIHRhZ05hbWUgPSBudWxsO1xuXG4gICAgaWYgKG5vdENsYXNzSWQudGVzdCh0YWdQYXJ0c1sxXSkpIHtcbiAgICAgICAgdGFnTmFtZSA9ICdESVYnO1xuICAgIH1cblxuICAgIHZhciBjbGFzc2VzLCBwYXJ0LCB0eXBlLCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHRhZ1BhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhcnQgPSB0YWdQYXJ0c1tpXTtcblxuICAgICAgICBpZiAoIXBhcnQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZSA9IHBhcnQuY2hhckF0KDApO1xuXG4gICAgICAgIGlmICghdGFnTmFtZSkge1xuICAgICAgICAgICAgdGFnTmFtZSA9IHBhcnQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJy4nKSB7XG4gICAgICAgICAgICBjbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaChwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcjJyAmJiBub0lkKSB7XG4gICAgICAgICAgICBwcm9wcy5pZCA9IHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICAgIGlmIChwcm9wcy5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaChwcm9wcy5jbGFzc05hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lID0gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLm5hbWVzcGFjZSA/IHRhZ05hbWUgOiB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7XG59XG5cbn0se1wiYnJvd3Nlci1zcGxpdFwiOjN9XSwzNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBERUZBVUxUX05BTUVTUEFDRSA9IG51bGw7XG52YXIgRVZfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyc7XG52YXIgWExJTktfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnO1xudmFyIFhNTF9OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJztcblxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHVGlueTEyL2F0dHJpYnV0ZVRhYmxlLmh0bWxcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9hdHRpbmRleC5odG1sXG52YXIgU1ZHX1BST1BFUlRJRVMgPSB7XG4gICAgJ2Fib3V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY2VudC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWNjdW11bGF0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhZGRpdGl2ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbGlnbm1lbnQtYmFzZWxpbmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbXBsaXR1ZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXJhYmljLWZvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZU5hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXR0cmlidXRlVHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhemltdXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JhbmR3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlRnJlcXVlbmN5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VQcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VsaW5lLXNoaWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jib3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmlhcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdieSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjYWxjTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjYXAtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsYXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcC1wYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwUGF0aFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXByb2ZpbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudFNjcmlwdFR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudFN0eWxlVHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjdXJzb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkYXRhdHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZWZhdWx0QWN0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rlc2NlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlmZnVzZUNvbnN0YW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpcmVjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXNwbGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rpdmlzb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZG9taW5hbnQtYmFzZWxpbmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VkZ2VNb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VkaXRhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VsZXZhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbmFibGUtYmFja2dyb3VuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXY6ZXZlbnQnOiBFVl9OQU1FU1BBQ0UsXG4gICAgJ2V2ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V4cG9uZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1ydWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXJSZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmxvb2QtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmxvb2Qtb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb2N1c0hpZ2hsaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb2N1c2FibGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1mYW1pbHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZS1hZGp1c3QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zdHJldGNoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3R5bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC12YXJpYW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtd2VpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zvcm1hdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmcm9tJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Z4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Z5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2cxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2cyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW5hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaFJlZic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdncmFkaWVudFRyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdncmFkaWVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmRsZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGFuZ2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaG9yaXotYWR2LXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaG9yaXotb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaG9yaXotb3JpZ2luLXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaWRlb2dyYXBoaWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW1hZ2UtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbml0aWFsVmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbnRlcmNlcHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnayc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrMyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrNCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuZWxNYXRyaXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsVW5pdExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVBvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlTcGxpbmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVRpbWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xhbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGVuZ3RoQWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xldHRlci1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xpZ2h0aW5nLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xpbWl0aW5nQ29uZUFuZ2xlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xvY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1lbmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLW1pZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItc3RhcnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VySGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlcldpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza0NvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWF0aGVtYXRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21heCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNoYXJhY3RlckVuY29kaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhQ29udGVudEVuY29kaW5ncyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYVNpemUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFUaW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21ldGhvZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24tcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LW5leHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXByZXYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAtbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAtcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbnVtT2N0YXZlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvYnNlcnZlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcGVyYXRvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmllbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJmbG93JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxpbmUtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Bhbm9zZS0xJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0aExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuQ29udGVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5UcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVyblVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BoYXNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BsYXliYWNrT3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRlci1ldmVudHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRaJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQWxwaGEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJlc2VydmVBc3BlY3RSYXRpbyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmltaXRpdmVVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcm9wYWdhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGVydHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyYWRpdXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWZZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZW5kZXJpbmctaW50ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcGVhdENvdW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcGVhdER1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEV4dGVuc2lvbnMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGZWF0dXJlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRm9ybWF0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXNvdXJjZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc3VsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm9sZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyb3RhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncngnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2NhbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2VlZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzaGFwZS1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2xvcGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc25hcHNob3RUaW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGVjdWxhckV4cG9uZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwcmVhZE1ldGhvZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGFydE9mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGREZXZpYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RlbWgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RlbXYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RpdGNoVGlsZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdG9wLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNoYXJyYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWxpbmVjYXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWxpbmVqb2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1taXRlcmxpbWl0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS13aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdXJmYWNlU2NhbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY0JlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvckRlZmF1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY01hc3Rlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNUb2xlcmFuY2VEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5c3RlbUxhbmd1YWdlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhYmxlVmFsdWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldFknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1hbmNob3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1kZWNvcmF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGltZWxpbmVCZWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0aXRsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0byc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0cmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtQmVoYXZpb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0eXBlb2YnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndTInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5kZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlLWJpZGknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1yYW5nZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bml0cy1wZXItZW0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1hbHBoYWJldGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtaGFuZ2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWlkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtbWF0aGVtYXRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJzaW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtYWR2LXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdCb3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlld1RhcmdldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aXNpYmlsaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dpZHRocyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3b3JkLXNwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd3JpdGluZy1tb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneDEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneDInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneENoYW5uZWxTZWxlY3Rvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4bGluazphY3R1YXRlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazphcmNyb2xlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazpocmVmJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazpyb2xlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazpzaG93JzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazp0aXRsZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dHlwZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneG1sOmJhc2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6aWQnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6bGFuZyc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDpzcGFjZSc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneTInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneUNoYW5uZWxTZWxlY3Rvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3pvb21BbmRQYW4nOiBERUZBVUxUX05BTUVTUEFDRVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTVkdBdHRyaWJ1dGVOYW1lc3BhY2U7XG5cbmZ1bmN0aW9uIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSh2YWx1ZSkge1xuICBpZiAoU1ZHX1BST1BFUlRJRVMuaGFzT3duUHJvcGVydHkodmFsdWUpKSB7XG4gICAgcmV0dXJuIFNWR19QUk9QRVJUSUVTW3ZhbHVlXTtcbiAgfVxufVxuXG59LHt9XSwzNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG52YXIgaCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxuXG52YXIgU1ZHQXR0cmlidXRlTmFtZXNwYWNlID0gcmVxdWlyZSgnLi9zdmctYXR0cmlidXRlLW5hbWVzcGFjZScpO1xudmFyIGF0dHJpYnV0ZUhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2F0dHJpYnV0ZS1ob29rJyk7XG5cbnZhciBTVkdfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcblxubW9kdWxlLmV4cG9ydHMgPSBzdmc7XG5cbmZ1bmN0aW9uIHN2Zyh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbikge1xuICAgIGlmICghY2hpbGRyZW4gJiYgaXNDaGlsZHJlbihwcm9wZXJ0aWVzKSkge1xuICAgICAgICBjaGlsZHJlbiA9IHByb3BlcnRpZXM7XG4gICAgICAgIHByb3BlcnRpZXMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCB7fTtcblxuICAgIC8vIHNldCBuYW1lc3BhY2UgZm9yIHN2Z1xuICAgIHByb3BlcnRpZXMubmFtZXNwYWNlID0gU1ZHX05BTUVTUEFDRTtcblxuICAgIHZhciBhdHRyaWJ1dGVzID0gcHJvcGVydGllcy5hdHRyaWJ1dGVzIHx8IChwcm9wZXJ0aWVzLmF0dHJpYnV0ZXMgPSB7fSk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAoIXByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmFtZXNwYWNlID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlKGtleSk7XG5cbiAgICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkKSB7IC8vIG5vdCBhIHN2ZyBhdHRyaWJ1dGVcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcGVydGllc1trZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hbWVzcGFjZSAhPT0gbnVsbCkgeyAvLyBuYW1lc3BhY2VkIGF0dHJpYnV0ZVxuICAgICAgICAgICAgcHJvcGVydGllc1trZXldID0gYXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYXR0cmlidXRlc1trZXldID0gdmFsdWVcbiAgICAgICAgcHJvcGVydGllc1trZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIGgodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pO1xufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IGlzQXJyYXkoeCk7XG59XG5cbn0se1wiLi9ob29rcy9hdHRyaWJ1dGUtaG9va1wiOjI5LFwiLi9pbmRleC5qc1wiOjMyLFwiLi9zdmctYXR0cmlidXRlLW5hbWVzcGFjZVwiOjM0LFwieC1pcy1hcnJheVwiOjIxfV0sMzY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi9pcy12bm9kZVwiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4vaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuL2lzLXRodW5rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaGFuZGxlVGh1bmtcblxuZnVuY3Rpb24gaGFuZGxlVGh1bmsoYSwgYikge1xuICAgIHZhciByZW5kZXJlZEEgPSBhXG4gICAgdmFyIHJlbmRlcmVkQiA9IGJcblxuICAgIGlmIChpc1RodW5rKGIpKSB7XG4gICAgICAgIHJlbmRlcmVkQiA9IHJlbmRlclRodW5rKGIsIGEpXG4gICAgfVxuXG4gICAgaWYgKGlzVGh1bmsoYSkpIHtcbiAgICAgICAgcmVuZGVyZWRBID0gcmVuZGVyVGh1bmsoYSwgbnVsbClcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhOiByZW5kZXJlZEEsXG4gICAgICAgIGI6IHJlbmRlcmVkQlxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyVGh1bmsodGh1bmssIHByZXZpb3VzKSB7XG4gICAgdmFyIHJlbmRlcmVkVGh1bmsgPSB0aHVuay52bm9kZVxuXG4gICAgaWYgKCFyZW5kZXJlZFRodW5rKSB7XG4gICAgICAgIHJlbmRlcmVkVGh1bmsgPSB0aHVuay52bm9kZSA9IHRodW5rLnJlbmRlcihwcmV2aW91cylcbiAgICB9XG5cbiAgICBpZiAoIShpc1ZOb2RlKHJlbmRlcmVkVGh1bmspIHx8XG4gICAgICAgICAgICBpc1ZUZXh0KHJlbmRlcmVkVGh1bmspIHx8XG4gICAgICAgICAgICBpc1dpZGdldChyZW5kZXJlZFRodW5rKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGh1bmsgZGlkIG5vdCByZXR1cm4gYSB2YWxpZCBub2RlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJlZFRodW5rXG59XG5cbn0se1wiLi9pcy10aHVua1wiOjM3LFwiLi9pcy12bm9kZVwiOjM5LFwiLi9pcy12dGV4dFwiOjQwLFwiLi9pcy13aWRnZXRcIjo0MX1dLDM3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNUaHVua1xyXG5cclxuZnVuY3Rpb24gaXNUaHVuayh0KSB7XHJcbiAgICByZXR1cm4gdCAmJiB0LnR5cGUgPT09IFwiVGh1bmtcIlxyXG59XHJcblxufSx7fV0sMzg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc0hvb2tcblxuZnVuY3Rpb24gaXNIb29rKGhvb2spIHtcbiAgICByZXR1cm4gaG9vayAmJlxuICAgICAgKHR5cGVvZiBob29rLmhvb2sgPT09IFwiZnVuY3Rpb25cIiAmJiAhaG9vay5oYXNPd25Qcm9wZXJ0eShcImhvb2tcIikgfHxcbiAgICAgICB0eXBlb2YgaG9vay51bmhvb2sgPT09IFwiZnVuY3Rpb25cIiAmJiAhaG9vay5oYXNPd25Qcm9wZXJ0eShcInVuaG9va1wiKSlcbn1cblxufSx7fV0sMzk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaXNWaXJ0dWFsTm9kZVxuXG5mdW5jdGlvbiBpc1ZpcnR1YWxOb2RlKHgpIHtcbiAgICByZXR1cm4geCAmJiB4LnR5cGUgPT09IFwiVmlydHVhbE5vZGVcIiAmJiB4LnZlcnNpb24gPT09IHZlcnNpb25cbn1cblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbFRleHRcblxuZnVuY3Rpb24gaXNWaXJ0dWFsVGV4dCh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxUZXh0XCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzV2lkZ2V0XG5cbmZ1bmN0aW9uIGlzV2lkZ2V0KHcpIHtcbiAgICByZXR1cm4gdyAmJiB3LnR5cGUgPT09IFwiV2lkZ2V0XCJcbn1cblxufSx7fV0sNDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBcIjJcIlxuXG59LHt9XSw0MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxudmFyIGlzVkhvb2sgPSByZXF1aXJlKFwiLi9pcy12aG9va1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxOb2RlXG5cbnZhciBub1Byb3BlcnRpZXMgPSB7fVxudmFyIG5vQ2hpbGRyZW4gPSBbXVxuXG5mdW5jdGlvbiBWaXJ0dWFsTm9kZSh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbiwga2V5LCBuYW1lc3BhY2UpIHtcbiAgICB0aGlzLnRhZ05hbWUgPSB0YWdOYW1lXG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCBub1Byb3BlcnRpZXNcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgbm9DaGlsZHJlblxuICAgIHRoaXMua2V5ID0ga2V5ICE9IG51bGwgPyBTdHJpbmcoa2V5KSA6IHVuZGVmaW5lZFxuICAgIHRoaXMubmFtZXNwYWNlID0gKHR5cGVvZiBuYW1lc3BhY2UgPT09IFwic3RyaW5nXCIpID8gbmFtZXNwYWNlIDogbnVsbFxuXG4gICAgdmFyIGNvdW50ID0gKGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCkgfHwgMFxuICAgIHZhciBkZXNjZW5kYW50cyA9IDBcbiAgICB2YXIgaGFzV2lkZ2V0cyA9IGZhbHNlXG4gICAgdmFyIGhhc1RodW5rcyA9IGZhbHNlXG4gICAgdmFyIGRlc2NlbmRhbnRIb29rcyA9IGZhbHNlXG4gICAgdmFyIGhvb2tzXG5cbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gcHJvcGVydGllc1twcm9wTmFtZV1cbiAgICAgICAgICAgIGlmIChpc1ZIb29rKHByb3BlcnR5KSAmJiBwcm9wZXJ0eS51bmhvb2spIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhvb2tzKSB7XG4gICAgICAgICAgICAgICAgICAgIGhvb2tzID0ge31cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBob29rc1twcm9wTmFtZV0gPSBwcm9wZXJ0eVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG4gICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSkge1xuICAgICAgICAgICAgZGVzY2VuZGFudHMgKz0gY2hpbGQuY291bnQgfHwgMFxuXG4gICAgICAgICAgICBpZiAoIWhhc1dpZGdldHMgJiYgY2hpbGQuaGFzV2lkZ2V0cykge1xuICAgICAgICAgICAgICAgIGhhc1dpZGdldHMgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGFzVGh1bmtzICYmIGNoaWxkLmhhc1RodW5rcykge1xuICAgICAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFkZXNjZW5kYW50SG9va3MgJiYgKGNoaWxkLmhvb2tzIHx8IGNoaWxkLmRlc2NlbmRhbnRIb29rcykpIHtcbiAgICAgICAgICAgICAgICBkZXNjZW5kYW50SG9va3MgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1dpZGdldHMgJiYgaXNXaWRnZXQoY2hpbGQpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIGhhc1dpZGdldHMgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1RodW5rcyAmJiBpc1RodW5rKGNoaWxkKSkge1xuICAgICAgICAgICAgaGFzVGh1bmtzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY291bnQgPSBjb3VudCArIGRlc2NlbmRhbnRzXG4gICAgdGhpcy5oYXNXaWRnZXRzID0gaGFzV2lkZ2V0c1xuICAgIHRoaXMuaGFzVGh1bmtzID0gaGFzVGh1bmtzXG4gICAgdGhpcy5ob29rcyA9IGhvb2tzXG4gICAgdGhpcy5kZXNjZW5kYW50SG9va3MgPSBkZXNjZW5kYW50SG9va3Ncbn1cblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsTm9kZS5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbE5vZGVcIlxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdmhvb2tcIjozOCxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtd2lkZ2V0XCI6NDEsXCIuL3ZlcnNpb25cIjo0Mn1dLDQ0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5WaXJ0dWFsUGF0Y2guTk9ORSA9IDBcblZpcnR1YWxQYXRjaC5WVEVYVCA9IDFcblZpcnR1YWxQYXRjaC5WTk9ERSA9IDJcblZpcnR1YWxQYXRjaC5XSURHRVQgPSAzXG5WaXJ0dWFsUGF0Y2guUFJPUFMgPSA0XG5WaXJ0dWFsUGF0Y2guT1JERVIgPSA1XG5WaXJ0dWFsUGF0Y2guSU5TRVJUID0gNlxuVmlydHVhbFBhdGNoLlJFTU9WRSA9IDdcblZpcnR1YWxQYXRjaC5USFVOSyA9IDhcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsUGF0Y2hcblxuZnVuY3Rpb24gVmlydHVhbFBhdGNoKHR5cGUsIHZOb2RlLCBwYXRjaCkge1xuICAgIHRoaXMudHlwZSA9IE51bWJlcih0eXBlKVxuICAgIHRoaXMudk5vZGUgPSB2Tm9kZVxuICAgIHRoaXMucGF0Y2ggPSBwYXRjaFxufVxuXG5WaXJ0dWFsUGF0Y2gucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsUGF0Y2gucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxQYXRjaFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsVGV4dFxuXG5mdW5jdGlvbiBWaXJ0dWFsVGV4dCh0ZXh0KSB7XG4gICAgdGhpcy50ZXh0ID0gU3RyaW5nKHRleHQpXG59XG5cblZpcnR1YWxUZXh0LnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFRleHQucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxUZXh0XCJcblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQ2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmUHJvcHNcblxuZnVuY3Rpb24gZGlmZlByb3BzKGEsIGIpIHtcbiAgICB2YXIgZGlmZlxuXG4gICAgZm9yICh2YXIgYUtleSBpbiBhKSB7XG4gICAgICAgIGlmICghKGFLZXkgaW4gYikpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2FLZXldID0gdW5kZWZpbmVkXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYVZhbHVlID0gYVthS2V5XVxuICAgICAgICB2YXIgYlZhbHVlID0gYlthS2V5XVxuXG4gICAgICAgIGlmIChhVmFsdWUgPT09IGJWYWx1ZSkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChhVmFsdWUpICYmIGlzT2JqZWN0KGJWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChnZXRQcm90b3R5cGUoYlZhbHVlKSAhPT0gZ2V0UHJvdG90eXBlKGFWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNIb29rKGJWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgb2JqZWN0RGlmZiA9IGRpZmZQcm9wcyhhVmFsdWUsIGJWYWx1ZSlcbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0RGlmZikge1xuICAgICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gb2JqZWN0RGlmZlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBiS2V5IGluIGIpIHtcbiAgICAgICAgaWYgKCEoYktleSBpbiBhKSkge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYktleV0gPSBiW2JLZXldXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlmZlxufVxuXG5mdW5jdGlvbiBnZXRQcm90b3R5cGUodmFsdWUpIHtcbiAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG4gIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgcmV0dXJuIHZhbHVlLl9fcHJvdG9fX1xuICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZVxuICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2tcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sNDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKFwieC1pcy1hcnJheVwiKVxuXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaFwiKVxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZ0ZXh0XCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy10aHVua1wiKVxudmFyIGhhbmRsZVRodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiKVxuXG52YXIgZGlmZlByb3BzID0gcmVxdWlyZShcIi4vZGlmZi1wcm9wc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcblxuZnVuY3Rpb24gZGlmZihhLCBiKSB7XG4gICAgdmFyIHBhdGNoID0geyBhOiBhIH1cbiAgICB3YWxrKGEsIGIsIHBhdGNoLCAwKVxuICAgIHJldHVybiBwYXRjaFxufVxuXG5mdW5jdGlvbiB3YWxrKGEsIGIsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBhcHBseSA9IHBhdGNoW2luZGV4XVxuICAgIHZhciBhcHBseUNsZWFyID0gZmFsc2VcblxuICAgIGlmIChpc1RodW5rKGEpIHx8IGlzVGh1bmsoYikpIHtcbiAgICAgICAgdGh1bmtzKGEsIGIsIHBhdGNoLCBpbmRleClcbiAgICB9IGVsc2UgaWYgKGIgPT0gbnVsbCkge1xuXG4gICAgICAgIC8vIElmIGEgaXMgYSB3aWRnZXQgd2Ugd2lsbCBhZGQgYSByZW1vdmUgcGF0Y2ggZm9yIGl0XG4gICAgICAgIC8vIE90aGVyd2lzZSBhbnkgY2hpbGQgd2lkZ2V0cy9ob29rcyBtdXN0IGJlIGRlc3Ryb3llZC5cbiAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBhZGRpbmcgdHdvIHJlbW92ZSBwYXRjaGVzIGZvciBhIHdpZGdldC5cbiAgICAgICAgaWYgKCFpc1dpZGdldChhKSkge1xuICAgICAgICAgICAgY2xlYXJTdGF0ZShhLCBwYXRjaCwgaW5kZXgpXG4gICAgICAgICAgICBhcHBseSA9IHBhdGNoW2luZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guUkVNT1ZFLCBhLCBiKSlcbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUoYikpIHtcbiAgICAgICAgaWYgKGlzVk5vZGUoYSkpIHtcbiAgICAgICAgICAgIGlmIChhLnRhZ05hbWUgPT09IGIudGFnTmFtZSAmJlxuICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlID09PSBiLm5hbWVzcGFjZSAmJlxuICAgICAgICAgICAgICAgIGEua2V5ID09PSBiLmtleSkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wc1BhdGNoID0gZGlmZlByb3BzKGEucHJvcGVydGllcywgYi5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAgIGlmIChwcm9wc1BhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5QUk9QUywgYSwgcHJvcHNQYXRjaCkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFwcGx5ID0gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVk5PREUsIGEsIGIpKVxuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dChiKSkge1xuICAgICAgICBpZiAoIWlzVlRleHQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZURVhULCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoYS50ZXh0ICE9PSBiLnRleHQpIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZURVhULCBhLCBiKSlcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKCFpc1dpZGdldChhKSkge1xuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLldJREdFVCwgYSwgYikpXG4gICAgfVxuXG4gICAgaWYgKGFwcGx5KSB7XG4gICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGx5XG4gICAgfVxuXG4gICAgaWYgKGFwcGx5Q2xlYXIpIHtcbiAgICAgICAgY2xlYXJTdGF0ZShhLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBkaWZmQ2hpbGRyZW4oYSwgYiwgcGF0Y2gsIGFwcGx5LCBpbmRleCkge1xuICAgIHZhciBhQ2hpbGRyZW4gPSBhLmNoaWxkcmVuXG4gICAgdmFyIG9yZGVyZWRTZXQgPSByZW9yZGVyKGFDaGlsZHJlbiwgYi5jaGlsZHJlbilcbiAgICB2YXIgYkNoaWxkcmVuID0gb3JkZXJlZFNldC5jaGlsZHJlblxuXG4gICAgdmFyIGFMZW4gPSBhQ2hpbGRyZW4ubGVuZ3RoXG4gICAgdmFyIGJMZW4gPSBiQ2hpbGRyZW4ubGVuZ3RoXG4gICAgdmFyIGxlbiA9IGFMZW4gPiBiTGVuID8gYUxlbiA6IGJMZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGxlZnROb2RlID0gYUNoaWxkcmVuW2ldXG4gICAgICAgIHZhciByaWdodE5vZGUgPSBiQ2hpbGRyZW5baV1cbiAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgIGlmICghbGVmdE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChyaWdodE5vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBFeGNlc3Mgbm9kZXMgaW4gYiBuZWVkIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSxcbiAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guSU5TRVJULCBudWxsLCByaWdodE5vZGUpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2FsayhsZWZ0Tm9kZSwgcmlnaHROb2RlLCBwYXRjaCwgaW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNWTm9kZShsZWZ0Tm9kZSkgJiYgbGVmdE5vZGUuY291bnQpIHtcbiAgICAgICAgICAgIGluZGV4ICs9IGxlZnROb2RlLmNvdW50XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3JkZXJlZFNldC5tb3Zlcykge1xuICAgICAgICAvLyBSZW9yZGVyIG5vZGVzIGxhc3RcbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChcbiAgICAgICAgICAgIFZQYXRjaC5PUkRFUixcbiAgICAgICAgICAgIGEsXG4gICAgICAgICAgICBvcmRlcmVkU2V0Lm1vdmVzXG4gICAgICAgICkpXG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcGx5XG59XG5cbmZ1bmN0aW9uIGNsZWFyU3RhdGUodk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBhIHNpbmdsZSB3YWxrLCBub3QgdHdvXG4gICAgdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG4gICAgZGVzdHJveVdpZGdldHModk5vZGUsIHBhdGNoLCBpbmRleClcbn1cblxuLy8gUGF0Y2ggcmVjb3JkcyBmb3IgYWxsIGRlc3Ryb3llZCB3aWRnZXRzIG11c3QgYmUgYWRkZWQgYmVjYXVzZSB3ZSBuZWVkXG4vLyBhIERPTSBub2RlIHJlZmVyZW5jZSBmb3IgdGhlIGRlc3Ryb3kgZnVuY3Rpb25cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNXaWRnZXQodk5vZGUpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygdk5vZGUuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUkVNT1ZFLCB2Tm9kZSwgbnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNWTm9kZSh2Tm9kZSkgJiYgKHZOb2RlLmhhc1dpZGdldHMgfHwgdk5vZGUuaGFzVGh1bmtzKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB2Tm9kZS5jaGlsZHJlblxuICAgICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG4gICAgICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgICAgIGRlc3Ryb3lXaWRnZXRzKGNoaWxkLCBwYXRjaCwgaW5kZXgpXG5cbiAgICAgICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSAmJiBjaGlsZC5jb3VudCkge1xuICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGh1bmsodk5vZGUpKSB7XG4gICAgICAgIHRodW5rcyh2Tm9kZSwgbnVsbCwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuLy8gQ3JlYXRlIGEgc3ViLXBhdGNoIGZvciB0aHVua3NcbmZ1bmN0aW9uIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICB2YXIgbm9kZXMgPSBoYW5kbGVUaHVuayhhLCBiKVxuICAgIHZhciB0aHVua1BhdGNoID0gZGlmZihub2Rlcy5hLCBub2Rlcy5iKVxuICAgIGlmIChoYXNQYXRjaGVzKHRodW5rUGF0Y2gpKSB7XG4gICAgICAgIHBhdGNoW2luZGV4XSA9IG5ldyBWUGF0Y2goVlBhdGNoLlRIVU5LLCBudWxsLCB0aHVua1BhdGNoKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gaGFzUGF0Y2hlcyhwYXRjaCkge1xuICAgIGZvciAodmFyIGluZGV4IGluIHBhdGNoKSB7XG4gICAgICAgIGlmIChpbmRleCAhPT0gXCJhXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuLy8gRXhlY3V0ZSBob29rcyB3aGVuIHR3byBub2RlcyBhcmUgaWRlbnRpY2FsXG5mdW5jdGlvbiB1bmhvb2sodk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChpc1ZOb2RlKHZOb2RlKSkge1xuICAgICAgICBpZiAodk5vZGUuaG9va3MpIHtcbiAgICAgICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGVuZFBhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGNoW2luZGV4XSxcbiAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFxuICAgICAgICAgICAgICAgICAgICBWUGF0Y2guUFJPUFMsXG4gICAgICAgICAgICAgICAgICAgIHZOb2RlLFxuICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRLZXlzKHZOb2RlLmhvb2tzKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2Tm9kZS5kZXNjZW5kYW50SG9va3MgfHwgdk5vZGUuaGFzVGh1bmtzKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB2Tm9kZS5jaGlsZHJlblxuICAgICAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG4gICAgICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdW5ob29rKGNoaWxkLCBwYXRjaCwgaW5kZXgpXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gY2hpbGQuY291bnRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGh1bmsodk5vZGUpKSB7XG4gICAgICAgIHRodW5rcyh2Tm9kZSwgbnVsbCwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gdW5kZWZpbmVkS2V5cyhvYmopIHtcbiAgICB2YXIgcmVzdWx0ID0ge31cblxuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIExpc3QgZGlmZiwgbmFpdmUgbGVmdCB0byByaWdodCByZW9yZGVyaW5nXG5mdW5jdGlvbiByZW9yZGVyKGFDaGlsZHJlbiwgYkNoaWxkcmVuKSB7XG4gICAgLy8gTyhNKSB0aW1lLCBPKE0pIG1lbW9yeVxuICAgIHZhciBiQ2hpbGRJbmRleCA9IGtleUluZGV4KGJDaGlsZHJlbilcbiAgICB2YXIgYktleXMgPSBiQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGJGcmVlID0gYkNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGJGcmVlLmxlbmd0aCA9PT0gYkNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE4pIHRpbWUsIE8oTikgbWVtb3J5XG4gICAgdmFyIGFDaGlsZEluZGV4ID0ga2V5SW5kZXgoYUNoaWxkcmVuKVxuICAgIHZhciBhS2V5cyA9IGFDaGlsZEluZGV4LmtleXNcbiAgICB2YXIgYUZyZWUgPSBhQ2hpbGRJbmRleC5mcmVlXG5cbiAgICBpZiAoYUZyZWUubGVuZ3RoID09PSBhQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogYkNoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE8oTUFYKE4sIE0pKSBtZW1vcnlcbiAgICB2YXIgbmV3Q2hpbGRyZW4gPSBbXVxuXG4gICAgdmFyIGZyZWVJbmRleCA9IDBcbiAgICB2YXIgZnJlZUNvdW50ID0gYkZyZWUubGVuZ3RoXG4gICAgdmFyIGRlbGV0ZWRJdGVtcyA9IDBcblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBhIGFuZCBtYXRjaCBhIG5vZGUgaW4gYlxuICAgIC8vIE8oTikgdGltZSxcbiAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBhQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGFJdGVtID0gYUNoaWxkcmVuW2ldXG4gICAgICAgIHZhciBpdGVtSW5kZXhcblxuICAgICAgICBpZiAoYUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICBpZiAoYktleXMuaGFzT3duUHJvcGVydHkoYUl0ZW0ua2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIE1hdGNoIHVwIHRoZSBvbGQga2V5c1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGJLZXlzW2FJdGVtLmtleV1cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKGJDaGlsZHJlbltpdGVtSW5kZXhdKVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBvbGQga2V5ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBNYXRjaCB0aGUgaXRlbSBpbiBhIHdpdGggdGhlIG5leHQgZnJlZSBpdGVtIGluIGJcbiAgICAgICAgICAgIGlmIChmcmVlSW5kZXggPCBmcmVlQ291bnQpIHtcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiRnJlZVtmcmVlSW5kZXgrK11cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKGJDaGlsZHJlbltpdGVtSW5kZXhdKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbm8gZnJlZSBpdGVtcyBpbiBiIHRvIG1hdGNoIHdpdGhcbiAgICAgICAgICAgICAgICAvLyB0aGUgZnJlZSBpdGVtcyBpbiBhLCBzbyB0aGUgZXh0cmEgZnJlZSBub2Rlc1xuICAgICAgICAgICAgICAgIC8vIGFyZSBkZWxldGVkLlxuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGkgLSBkZWxldGVkSXRlbXMrK1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYXN0RnJlZUluZGV4ID0gZnJlZUluZGV4ID49IGJGcmVlLmxlbmd0aCA/XG4gICAgICAgIGJDaGlsZHJlbi5sZW5ndGggOlxuICAgICAgICBiRnJlZVtmcmVlSW5kZXhdXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYiBhbmQgYXBwZW5kIGFueSBuZXcga2V5c1xuICAgIC8vIE8oTSkgdGltZVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYkNoaWxkcmVuLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBuZXdJdGVtID0gYkNoaWxkcmVuW2pdXG5cbiAgICAgICAgaWYgKG5ld0l0ZW0ua2V5KSB7XG4gICAgICAgICAgICBpZiAoIWFLZXlzLmhhc093blByb3BlcnR5KG5ld0l0ZW0ua2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIEFkZCBhbnkgbmV3IGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIGFkZGluZyBuZXcgaXRlbXMgdG8gdGhlIGVuZCBhbmQgdGhlbiBzb3J0aW5nIHRoZW1cbiAgICAgICAgICAgICAgICAvLyBpbiBwbGFjZS4gSW4gZnV0dXJlIHdlIHNob3VsZCBpbnNlcnQgbmV3IGl0ZW1zIGluIHBsYWNlLlxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobmV3SXRlbSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChqID49IGxhc3RGcmVlSW5kZXgpIHtcbiAgICAgICAgICAgIC8vIEFkZCBhbnkgbGVmdG92ZXIgbm9uLWtleWVkIGl0ZW1zXG4gICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2ltdWxhdGUgPSBuZXdDaGlsZHJlbi5zbGljZSgpXG4gICAgdmFyIHNpbXVsYXRlSW5kZXggPSAwXG4gICAgdmFyIHJlbW92ZXMgPSBbXVxuICAgIHZhciBpbnNlcnRzID0gW11cbiAgICB2YXIgc2ltdWxhdGVJdGVtXG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGJDaGlsZHJlbi5sZW5ndGg7KSB7XG4gICAgICAgIHZhciB3YW50ZWRJdGVtID0gYkNoaWxkcmVuW2tdXG4gICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG5cbiAgICAgICAgLy8gcmVtb3ZlIGl0ZW1zXG4gICAgICAgIHdoaWxlIChzaW11bGF0ZUl0ZW0gPT09IG51bGwgJiYgc2ltdWxhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBudWxsKSlcbiAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbXVsYXRlSXRlbSB8fCBzaW11bGF0ZUl0ZW0ua2V5ICE9PSB3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgLy8gaWYgd2UgbmVlZCBhIGtleSBpbiB0aGlzIHBvc2l0aW9uLi4uXG4gICAgICAgICAgICBpZiAod2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgYW4gaW5zZXJ0IGRvZXNuJ3QgcHV0IHRoaXMga2V5IGluIHBsYWNlLCBpdCBuZWVkcyB0byBtb3ZlXG4gICAgICAgICAgICAgICAgICAgIGlmIChiS2V5c1tzaW11bGF0ZUl0ZW0ua2V5XSAhPT0gayArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSByZW1vdmUgZGlkbid0IHB1dCB0aGUgd2FudGVkIGl0ZW0gaW4gcGxhY2UsIHdlIG5lZWQgdG8gaW5zZXJ0IGl0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNpbXVsYXRlSXRlbSB8fCBzaW11bGF0ZUl0ZW0ua2V5ICE9PSB3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRlbXMgYXJlIG1hdGNoaW5nLCBzbyBza2lwIGFoZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZUluZGV4KytcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaysrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBhIGtleSBpbiBzaW11bGF0ZSBoYXMgbm8gbWF0Y2hpbmcgd2FudGVkIGtleSwgcmVtb3ZlIGl0XG4gICAgICAgICAgICBlbHNlIGlmIChzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICBrKytcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlbW92ZSBhbGwgdGhlIHJlbWFpbmluZyBub2RlcyBmcm9tIHNpbXVsYXRlXG4gICAgd2hpbGUoc2ltdWxhdGVJbmRleCA8IHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG9ubHkgbW92ZXMgd2UgaGF2ZSBhcmUgZGVsZXRlcyB0aGVuIHdlIGNhbiBqdXN0XG4gICAgLy8gbGV0IHRoZSBkZWxldGUgcGF0Y2ggcmVtb3ZlIHRoZXNlIGl0ZW1zLlxuICAgIGlmIChyZW1vdmVzLmxlbmd0aCA9PT0gZGVsZXRlZEl0ZW1zICYmICFpbnNlcnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IG5ld0NoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgbW92ZXM6IHtcbiAgICAgICAgICAgIHJlbW92ZXM6IHJlbW92ZXMsXG4gICAgICAgICAgICBpbnNlcnRzOiBpbnNlcnRzXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZShhcnIsIGluZGV4LCBrZXkpIHtcbiAgICBhcnIuc3BsaWNlKGluZGV4LCAxKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogaW5kZXgsXG4gICAgICAgIGtleToga2V5XG4gICAgfVxufVxuXG5mdW5jdGlvbiBrZXlJbmRleChjaGlsZHJlbikge1xuICAgIHZhciBrZXlzID0ge31cbiAgICB2YXIgZnJlZSA9IFtdXG4gICAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuXG4gICAgICAgIGlmIChjaGlsZC5rZXkpIHtcbiAgICAgICAgICAgIGtleXNbY2hpbGQua2V5XSA9IGlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZyZWUucHVzaChpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5czoga2V5cywgICAgIC8vIEEgaGFzaCBvZiBrZXkgbmFtZSB0byBpbmRleFxuICAgICAgICBmcmVlOiBmcmVlICAgICAgLy8gQW4gYXJyYXkgb2YgdW5rZXllZCBpdGVtIGluZGljZXNcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFwcGVuZFBhdGNoKGFwcGx5LCBwYXRjaCkge1xuICAgIGlmIChhcHBseSkge1xuICAgICAgICBpZiAoaXNBcnJheShhcHBseSkpIHtcbiAgICAgICAgICAgIGFwcGx5LnB1c2gocGF0Y2gpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseSA9IFthcHBseSwgcGF0Y2hdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXBwbHlcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGF0Y2hcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaGFuZGxlLXRodW5rXCI6MzYsXCIuLi92bm9kZS9pcy10aHVua1wiOjM3LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaFwiOjQ0LFwiLi9kaWZmLXByb3BzXCI6NDYsXCJ4LWlzLWFycmF5XCI6MjF9XSw0ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdmRvbSA9IHtcbiAgVk5vZGU6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlJyksXG4gIFZUZXh0OiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92dGV4dCcpLFxuICBkaWZmOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS9kaWZmJyksXG4gIHBhdGNoOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS9wYXRjaCcpLFxuICBjcmVhdGVFbGVtZW50OiByZXF1aXJlKCd2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudCcpLFxuICBzdmc6IHJlcXVpcmUoXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiKSxcbn07XG5cbmdsb2JhbC5WaXJ0dWFsRG9tID0gdmRvbTtcbm1vZHVsZS5leHBvcnRzID0gdmRvbTtcblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHtcInZpcnR1YWwtZG9tL2NyZWF0ZS1lbGVtZW50XCI6MSxcInZpcnR1YWwtZG9tL2RpZmZcIjoyLFwidmlydHVhbC1kb20vcGF0Y2hcIjoyMixcInZpcnR1YWwtZG9tL3ZpcnR1YWwtaHlwZXJzY3JpcHQvc3ZnXCI6MzUsXCJ2aXJ0dWFsLWRvbS92bm9kZS92bm9kZVwiOjQzLFwidmlydHVhbC1kb20vdm5vZGUvdnRleHRcIjo0NX1dfSx7fSxbNDhdKSg0OClcbn0pO1xuIiwiLy8gVXNlZCBieSB3b3JrYXJvdW5kIGZvciBpbnB1dCBlbGVtZW50IHZhbHVlIGZpZWxkXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2Jsb2IvOTQ3ZWNmOTJiNjdkMjViYjY5M2EwZjYyNWZhOGU5MGMwOTk4ODdkNS92aXJ0dWFsLWh5cGVyc2NyaXB0L2hvb2tzL3NvZnQtc2V0LWhvb2suanNcblxuam9vX2dsb2JhbF9vYmplY3QuU29mdFNldEhvb2sgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTb2Z0U2V0SG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTb2Z0U2V0SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufTtcblxuam9vX2dsb2JhbF9vYmplY3QuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cblxudmFyIEdlbmVyaWNIb29rID0gZnVuY3Rpb24gKGluaXQsIHVwZGF0ZSwgZGVzdHJveSwgaWQsIGV4dHJhKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEdlbmVyaWNIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNIb29rKGluaXQsIHVwZGF0ZSwgZGVzdHJveSwgaWQsIGV4dHJhKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXQgPSBpbml0O1xuICAgIHRoaXMudXBkYXRlID0gdXBkYXRlO1xuICAgIHRoaXMuZGVzdHJveSA9IGRlc3Ryb3k7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZXh0cmEgPSBleHRyYTtcbn07XG5cbnZhciBob29rX3N0YXRlX2tleSA9IFwidmRvbV9ob29rX3N0YXRlX2tleVwiO1xuXG5pZiAodGhpcy5TeW1ib2wpIHtcbiAgICBob29rX3N0YXRlX2tleSA9IFN5bWJvbChob29rX3N0YXRlX2tleSk7XG59XG5cbkdlbmVyaWNIb29rLndyaXRlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSkge1xuICAgIGlmICghbm9kZVtob29rX3N0YXRlX2tleV0pIHtcbiAgICAgICAgbm9kZVtob29rX3N0YXRlX2tleV0gPSB7fTtcbiAgICB9XG4gICAgbm9kZVtob29rX3N0YXRlX2tleV1bcHJvcE5hbWVdID0gc3RhdGU7XG59XG5cbkdlbmVyaWNIb29rLnJlYWRfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUpIHtcbiAgICByZXR1cm4gbm9kZVtob29rX3N0YXRlX2tleV1bcHJvcE5hbWVdO1xufVxuXG5HZW5lcmljSG9vay5yZW1vdmVfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUpIHtcbiAgICBkZWxldGUgbm9kZVtob29rX3N0YXRlX2tleV1bcHJvcE5hbWVdO1xufVxuXG5HZW5lcmljSG9vay5jYW5UcmFuc2l0aW9uID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgcmV0dXJuIGZyb20gaW5zdGFuY2VvZiB0aGlzICYmIHRvIGluc3RhbmNlb2YgdGhpcyAmJiBmcm9tLmlkID09PSB0by5pZCAmJiB0by51cGRhdGU7XG59O1xuXG5HZW5lcmljSG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgcHJldikge1xuICAgIGlmIChHZW5lcmljSG9vay5jYW5UcmFuc2l0aW9uKHByZXYsIHRoaXMpKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IEdlbmVyaWNIb29rLnJlYWRfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgICAgICBzdGF0ZSA9IHRoaXMudXBkYXRlKHN0YXRlLCBub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUobm9kZSwgcHJvcE5hbWUsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLmluaXQobm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfVxufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgbmV4dCkge1xuICAgIGlmIChHZW5lcmljSG9vay5jYW5UcmFuc2l0aW9uKHRoaXMsIG5leHQpKSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcsIHRoZSBpbXBlbmRpbmcgW2hvb2tdIHdpbGwgaGFuZGxlIHRoZSBjYWxsIHRvIHVwZGF0ZS5cbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgdGhpcy5kZXN0cm95KHN0YXRlLCBub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICB9XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5HZW5lcmljSG9vayA9IEdlbmVyaWNIb29rO1xuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICBpZighIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBhID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ191bnNhZmVfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIHMubGVuZ3RoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmUgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8tMTooczEgPiBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPD0gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0Zjhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykge1xuICBpZihqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBzO1xuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocylcbiAgZWxzZSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3V0Zjhfb2ZfdXRmMTYocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7IHJldHVybiBuZXcgTWxCeXRlcygwLHMscy5sZW5ndGgpOyB9XG5cblxuLy8gVGhlIHNlY3Rpb24gYmVsb3cgc2hvdWxkIGJlIHVzZWQgd2hlbiB1c2UtanMtc3RyaW5nPWZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsaSxjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19lcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgeyByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIHMuYyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocyl7XG4gIHJldHVybiBzLnRvVXRmMTYoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfYnl0ZXMocykge1xuICByZXR1cm4gKHMgaW5zdGFuY2VvZiBNbEJ5dGVzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHMuY1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuICh0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiAmJiAhL1teXFx4MDAtXFx4ZmZdLy50ZXN0KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaXNfbWxfYnl0ZXMocyk7XG59XG5cbi8vIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGRlcHJlY2F0ZWRcblxuLy9Qcm92aWRlczogY2FtbF9qc190b19ieXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9qc190b19ieXRlX3N0cmluZyhzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX25ld19zdHJpbmcgKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF90b19qc19zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF90b19qc19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc190b19zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3RvX3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KSB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1JhaXNlIGV4Y2VwdGlvblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2NvbnN0YW50IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfY29uc3RhbnQgKHRhZykgeyB0aHJvdyB0YWc7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZyAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX3N0cmluZyAodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG1zZykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhaWx3aXRoIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmFpbHdpdGggKG1zZykge1xuICBpZighY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlKVxuICAgIGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZT1bMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJGYWlsdXJlXCIpLC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfaW52YWxpZF9hcmd1bWVudCAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkVuZF9vZl9maWxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5EaXZpc2lvbl9ieV96ZXJvKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogIWVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYuYXBwbHkobnVsbCxhcmdzLnNsaWNlKDAsbikpO1xuICAgIGlmKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsYXJncy5zbGljZShuKSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAxKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSBuYXJnc1thcmdzLmxlbmd0aCtpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZDtcbiAgICByZXR1cm4gZztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6IGVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMCkge1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW4gLSAxXTtcbiAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICBhcmdzW24gLSAxXSA9IGZ1bmN0aW9uIChnKSB7XG4gICAgICBpZiAodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGsoZyk7XG4gICAgICB2YXIgYXJncyA9IHJlc3Quc2xpY2UoKTtcbiAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLCBhcmdzKTsgfTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuXTtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHksIHope1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDMpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyBleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApXG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIGldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlc1xudmFyIGNhbWxfbmFtZWRfdmFsdWVzID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUgKGNvbnN0LG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J1aWxkX3N5bWJvbHModG9jKSB7XG4gIHZhciBzeW1iO1xuICB3aGlsZSh0b2MpIHtcbiAgICBpZihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0b2NbMV1bMV0pID09IFwiU1lKU1wiKSB7XG4gICAgICBzeW1iID0gdG9jWzFdWzJdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGVsc2UgdG9jID0gdG9jWzJdXG4gIH1cbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEudG9jKSB7XG4gICAgICBpZighY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzKSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scyA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnRvYylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHNbbmFtZV1cbiAgICAgIGlmKG5pZCA+PSAwKVxuICAgICAgICBuID0gbmlkXG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfcmVnaXN0ZXJfZ2xvYmFsOiBjYW5ub3QgbG9jYXRlIFwiICsgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX3ByaW50X3N0YXRzXG5mdW5jdGlvbiBjYW1sX21heWJlX3ByaW50X3N0YXRzKHVuaXQpIHsgcmV0dXJuIDAgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgaWYoZ2xvYmFsVGhpcy5xdWl0KSBnbG9iYWxUaGlzLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdClcbiAgICBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsZmFsc2VdKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIGNhbWxfY2FsbGJhY2soYXRfZXhpdCwgWzBdKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnKTtcbiAgICAgIGlmKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fc3lzX2dldGVudiAoY29uc3QpXG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5lbnZcbiAgICAgJiYgcHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9jZXNzLmVudltuXTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKSk7XG4gIGlmKHIgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmFyZ3ZcbiAgICAgJiYgcHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IHByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIil7XG4gICAgdmFyIGNoaWxkX3Byb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgaWYoY2hpbGRfcHJvY2VzcyAmJiBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICB2YXIgYSA9IGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSg0KSk7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgIHZhciBhID0gbmV3IEludDMyQXJyYXkoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLmJ1ZmZlcik7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmlzRmlsZShyb290LnJlc3QpO1xufVxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYocHJvY2VzcyAmJiBwcm9jZXNzLm9uKSB7XG4gICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBGTEFHKFwid2l0aC1qcy1lcnJvclwiKTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoXCJPQ0FNTFJVTlBBUkFNXCIpXG4gIGlmKHIgIT09IHVuZGVmaW5lZCl7XG4gICAgdmFyIGwgPSByLnNwbGl0KFwiLFwiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKyl7XG4gICAgICBpZihsW2ldID09IFwiYlwiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gMTsgYnJlYWsgfVxuICAgICAgZWxzZSBpZiAobFtpXS5zdGFydHNXaXRoKFwiYj1cIikpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSArKGxbaV0uc2xpY2UoMikpfVxuICAgICAgZWxzZSBjb250aW51ZTtcbiAgICB9XG4gIH1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgKF91bml0KSB7IHJldHVybiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfcmVjb3JkX2JhY2t0cmFjZSAoYikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IGI7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90OiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlKGV4biwgYnQpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfanNfc2V0KG8sZix2KSB7IG9bZl09djtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0IChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0KG8sZikgeyByZXR1cm4gb1tmXTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobyxmKSB7IGRlbGV0ZSBvW2ZdOyByZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19pbnN0YW5jZW9mIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2luc3RhbmNlb2YobyxjKSB7IHJldHVybiAobyBpbnN0YW5jZW9mIGMpID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc190eXBlb2YgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190eXBlb2YobykgeyByZXR1cm4gdHlwZW9mIG87IH1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZShyZXMpIHtcbiAgdmFyIGMgPSAxO1xuICB3aGlsZShyZXMgJiYgcmVzLmpvb190cmFtcCl7XG4gICAgcmVzID0gcmVzLmpvb190cmFtcC5hcHBseShudWxsLCByZXMuam9vX2FyZ3MpO1xuICAgIGMrKztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKSB7XG4gIHJldHVybiB7am9vX3RyYW1wOmYsam9vX2FyZ3M6YXJnc307XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19kZXB0aFxuLy9JZjogZWZmZWN0c1xudmFyIGNhbWxfc3RhY2tfZGVwdGggPSAwO1xuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfY2hlY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aFxuZnVuY3Rpb24gY2FtbF9zdGFja19jaGVja19kZXB0aCgpIHtcbiAgICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGgsIGNhbWxfY2FsbF9nZW4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9mcmVzaF9vb19pZCwgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF9jYWxsYmFjayhmLGFyZ3MpIHtcbiAgZnVuY3Rpb24gdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXIoZWZmLGssbXMpIHtcbiAgICAvLyBSZXN1bWVzIHRoZSBjb250aW51YXRpb24gayBieSByYWlzaW5nIGV4Y2VwdGlvbiBVbmhhbmRsZWQuXG4gICAgY2FtbF9yZXN1bWVfc3RhY2soa1sxXSxtcyk7XG4gICAgdmFyIGV4biA9IGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuVW5oYW5kbGVkXCIpO1xuICAgIGlmKGV4bikgY2FtbF9yYWlzZV93aXRoX2FyZyhleG4sIGVmZik7XG4gICAgZWxzZSB7XG4gICAgICBleG4gPSBbMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJFZmZlY3QuVW5oYW5kbGVkXCIpLCBjYW1sX2ZyZXNoX29vX2lkKDApXTtcbiAgICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoZXhuKTtcbiAgICB9XG4gIH1cbiAgdmFyIHNhdmVkX3N0YWNrX2RlcHRoID0gY2FtbF9zdGFja19kZXB0aDtcbiAgdmFyIHNhdmVkX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrO1xuICB2YXIgc2F2ZWRfZmliZXJfc3RhY2sgPSBjYW1sX2ZpYmVyX3N0YWNrO1xuICB0cnkge1xuICAgIGNhbWxfZXhuX3N0YWNrID0gMDtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOlswLCAwLCAwLCB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcl0sIHI6e2s6MCwgeDowLCBlOjB9fTtcbiAgICB2YXIgcmVzID0ge2pvb190cmFtcDogZixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBhcmdzLmNvbmNhdChmdW5jdGlvbiAoeCl7cmV0dXJuIHg7fSl9O1xuICAgIGRvIHtcbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IGNhbWxfY2FsbF9nZW4ocmVzLmpvb190cmFtcCwgcmVzLmpvb19hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogSGFuZGxlIGV4Y2VwdGlvbiBjb21pbmcgZnJvbSBKYXZhU2NyaXB0IG9yIGZyb20gdGhlIHJ1bnRpbWUuICovXG4gICAgICAgIGlmICghY2FtbF9leG5fc3RhY2spIHRocm93IGU7XG4gICAgICAgIHZhciBoYW5kbGVyID0gY2FtbF9leG5fc3RhY2tbMV07XG4gICAgICAgIGNhbWxfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2tbMl07XG4gICAgICAgIHJlcyA9IHtqb29fdHJhbXA6IGhhbmRsZXIsXG4gICAgICAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlKHJlcyAmJiByZXMuam9vX2FyZ3MpXG4gIH0gZmluYWxseSB7XG4gICAgY2FtbF9zdGFja19kZXB0aCA9IHNhdmVkX3N0YWNrX2RlcHRoO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc2F2ZWRfZXhuX3N0YWNrO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPSBzYXZlZF9maWJlcl9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc19lZmZlY3RzKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcImVmZmVjdHNcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAobXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmIChGTEFHKFwiZXhjd3JhcFwiKSkge1xuICAgIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gICAgdmFyIGV4bjtcbiAgICAvL1N0YWNrX292ZXJmbG93OiBjaHJvbWUsIHNhZmFyaVxuICAgIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9TdGFja19vdmVyZmxvdzogZmlyZWZveFxuICAgIGVsc2UgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gICAgZWxzZSBpZihlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvciAmJiBjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSlcbiAgICAgIGV4biA9IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAgIGVsc2VcbiAgICAgIC8vZmFsbGJhY2s6IHdyYXBwZWQgaW4gRmFpbHVyZVxuICAgICAgZXhuID0gWzAsY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcilcbiAgICAgIGV4bi5qc19lcnJvciA9IGU7XG4gICAgcmV0dXJuIGV4bjtcbiAgfSBlbHNlXG4gICAgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICBpZihjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4blxufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21faW50MzJcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19pbnQzMiBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc190b19pbnQzMih4KSB7IHJldHVybiB4fDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3RfdG9fanNfYXJyYXkobCl7XG4gIHZhciBhID0gW107XG4gIGZvcig7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc192YXI6IFxcXCJcIiArIHggKyBcIlxcXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLlwiKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MgPSBbdW5kZWZpbmVkXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIC0gMTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuICgoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpKSAtIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZT9cIjBYXCI6XCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zLm5vZGUgIT09ICd1bmRlZmluZWQnKVxufVxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHZhciBpc0NoYXJhY3RlckRldmljZSA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzQ2hhcmFjdGVyRGV2aWNlKCk7XG4gICAgZi5pc0NoYXJhY3RlckRldmljZSA9IGlzQ2hhcmFjdGVyRGV2aWNlO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24obywgbiwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubHN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKHRvX2RpciwgdGFyZ2V0LCBwYXRoLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5zeW1saW5rU3luYyh0aGlzLm5tKHRhcmdldCksIHRoaXMubm0ocGF0aCksIHRvX2RpciA/ICdkaXInIDogJ2ZpbGUnKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkbGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgbGluayA9IHRoaXMuZnMucmVhZGxpbmtTeW5jKHRoaXMubm0obmFtZSksICd1dGY4Jyk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGxpbmspO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMub3BlbmRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sTm9kZUZkKGZkLCBmbGFncyl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sTm9kZUZkLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbE5vZGVGZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGZDtcblxuTWxOb2RlRmQucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxhLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgICByZXR1cm4gcmVhZDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGZCgpe1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vUmVxdWlyZXM6IE1sTm9kZUZkXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIGlmKGZsYWdzLm5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgdmFyIGZkMiA9IGZzLm9wZW5TeW5jKGZsYWdzLm5hbWUsIFwicnNcIik7XG4gICAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkMiwgZmxhZ3MpO1xuICAgIH0gY2F0Y2goZSkgeyAgfVxuICB9XG4gIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGZsYWdzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF90aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF90aW1lICgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nbXRpbWVcbi8vQWxpYXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb2NhbHRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoamFuLmdldFRpbWV6b25lT2Zmc2V0KCksIGp1bC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0U2Vjb25kcygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXREYXRlKCksIGQuZ2V0TW9udGgoKSwgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIChkLmdldFRpbWV6b25lT2Zmc2V0KCkgPCBzdGRUaW1lem9uZU9mZnNldCkgfCAwIC8qIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAgZmllbGQuICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X21rdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpO1xuICByZXR1cm4gQkxPQ0soMCx0LHRtMik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhcnR1cCBjb25zdFxuLy9BbGlhczogd2luX3N0YXJ0dXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NsZWFudXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9jbGVhbnVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xlYW51cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQgY29uc3Rcbi8vQWxpYXM6IHdpbl9oYW5kbGVfZmRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQoeCkge3JldHVybiB4O31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9zdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X3N0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9sc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5sc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9sc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfbHN0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ta2RpclxuZnVuY3Rpb24gY2FtbF91bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JtZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHB3dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlciA6IGRpcl9oYW5kbGUsIHBhdGg6IHBhdGggfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfcmVhZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSkge1xuICB2YXIgZW50cnk7XG4gIHRyeSB7XG4gICAgICBlbnRyeSA9IGRpcl9oYW5kbGUucG9pbnRlci5yZWFkU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJyZWFkZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGVudHJ5Lm5hbWUpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICAgIGRpcl9oYW5kbGUucG9pbnRlci5jbG9zZVN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3Jld2luZGRpclxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyLCBjYW1sX3VuaXhfb3BlbmRpclxuLy9BbGlhczogdW5peF9yZXdpbmRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZXdpbmRkaXIoZGlyX2hhbmRsZSkge1xuICBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG4gIHZhciBuZXdfZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKGRpcl9oYW5kbGUucGF0aCk7XG4gIGRpcl9oYW5kbGUucG9pbnRlciA9IG5ld19kaXJfaGFuZGxlLnBvaW50ZXI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGZpcnN0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9vcGVuZGlyLCBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRmaXJzdFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRmaXJzdChwYXRoKSB7XG4gIC8vIFRoZSBXaW5kb3dzIGNvZGUgYWRkcyB0aGlzIGdsb2IgdG8gdGhlIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0XG4gIHZhciBwYXRoX2pzID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocGF0aCk7XG4gIHBhdGhfanMgPSBwYXRoX2pzLnJlcGxhY2UoLyhefFtcXFxcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgY29uc3Rcbi8vQWxpYXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yKHRhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IoY3Vyc29yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoY3Vyc29yLCBjYWxsYmFja3MsIG51bSkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gVUludDhBcnJheVJlYWRlciAocywgaSkgeyB0aGlzLnMgPSBzOyB0aGlzLmkgPSBpOyB9XG5VSW50OEFycmF5UmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK107IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgOCkgfCBzW2kgKyAxXVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQgPj4gMTYpIHwgc1tpICsgMV07XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSh0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB2YXIgcyA9IHRoaXMucztcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGJbal0gPSBzLmNoYXJDb2RlQXQoaSArIGopO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldChpKTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICB2YXIgbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICBzd2l0Y2gobWFnaWMpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHJlYWRlci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiKTtcbiAgICBicmVha1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrO1xuICB9XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKHJlYWRlcikge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYoY29tcHJlc3NlZCkge1xuICAgIGlmKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgYnVmZmVyZWQgPSAoZmlsZS5mbGFncy5idWZmZXJlZCAhPT0gdW5kZWZpbmVkKSA/IGZpbGUuZmxhZ3MuYnVmZmVyZWQgOiAxO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6dHJ1ZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgYnVmZmVyZWQ6YnVmZmVyZWRcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luIChmZCkgIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6IGZhbHNlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyX21heDowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dChmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL0FsaWFzOiB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWxcbmZ1bmN0aW9uIGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlKGNoYW5pZCxtb2RlKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4uZmlsZS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSA9IG1vZGVcbiAgcmV0dXJuIDA7XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjYW1sX3N5c19jbG9zZShjaGFuLmZkKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVscywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIC8vIEEgZmllbGQgd2FzIGFkZGVkIGluIE9DYW1sIDQuMTIuIEl0IGlzIHVubGlrZWx5IHRvIGJlIGFuIGlzc3VlIHRvXG4gIC8vIHJldHVybiB0b28gbWFueSBmaWVsZHMgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwuXG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9kaXNjYXJkXG5mdW5jdGlvbiBjYW1sX21lbXByb2ZfZGlzY2FyZCh0KSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvLy8vLy8vLy8gQ09SRVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG52YXIgY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXQgPSBjYW1sX2FycmF5X2JsaXRcbi8vUHJvdmlkZXM6IGNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQgPSBjYW1sX2FycmF5X2JsaXRcblxuLy9Qcm92aWRlczogY29yZV90aW1lX25zX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY29yZV90aW1lX25zX2Zvcm1hdCh0aW1lLGZvcm1hdCl7XG4gIHZhciBkID0gbmV3IERhdGUodGltZSAqIDEwMDApO1xuICB2YXIgZm9ybWF0anMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZvcm1hdCk7XG4gIHZhciBqc3RyaW5nID0gam9vX2dsb2JhbF9vYmplY3Quc3RyZnRpbWUoZm9ybWF0anMsIGQpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc3RyaW5nKTtcbn1cblxuLy9Qcm92aWRlczogY29yZV9nY19jb21wYWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19jb21wYWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfaGVhcF9jaHVua3NcbmZ1bmN0aW9uIGNvcmVfZ2NfaGVhcF9jaHVua3MgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3JfY29sbGVjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWFqb3JfY29sbGVjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWFqb3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcHJvbW90ZWRfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfcHJvbW90ZWRfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3RvcF9oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3RvcF9oZWFwX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3NcbmZ1bmN0aW9uIGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzICgpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1xuZnVuY3Rpb24gY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2soeCl7XG4gIHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2ZkXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiwgY2FtbF9tZDVfY2hhbiwgY2FtbF9tbF9jbG9zZV9jaGFubmVsXG5mdW5jdGlvbiBjb3JlX21kNV9mZChmZCl7XG4gICAgdmFyIGljID0gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBjYW1sX21kNV9jaGFuKGljLCAtMSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY2FtbF9tbF9jbG9zZV9jaGFubmVsKGljKTtcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWQ1X3N0cmluZywgY2FtbF9ibGl0X3N0cmluZywgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZyhidWYsIG9mcywgbGVuLCByZXMpe1xuICAgIHZhciBieXRlcyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIoYnVmLCBvZnMsIGJ5dGVzLCAwLCBsZW4pO1xuICAgIHZhciByZXMyID0gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ5dGVzKSwgMCwgbGVuKTtcbiAgICBjYW1sX2JsaXRfc3RyaW5nKHJlczIsIDAsIHJlcywgMCwgMTYpO1xuICAgIHJldHVybiAwO1xufVxuXG4vL0JpZ3N0cmluZ1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIodl9ic3RyKSB7XG4gIGlmICh2X2JzdHIuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19kZXN0cm95OiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgfVxuICAvLyBNdXRhdGUgdGhlIG9yaWdpbmFsIGJpZ3N0cmluZyBpbi1wbGFjZSwgdG8gc2ltdWxhdGUgd2hhdCB0aGUgQyB2ZXJzaW9uIGRvZXNcbiAgdl9ic3RyLl9faXNfZGVhbGxvY2F0ZWQgPSB0cnVlO1xuICB2X2JzdHIuZGF0YSA9IG5ldyB2X2JzdHIuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3IoMCk7XG4gIHZfYnN0ci5kaW1zID0gWyAwIF07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfcmVhbGxvY1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19yZWFsbG9jKGJpZ3N0cmluZywgc2l6ZSkge1xuICAgIGlmIChiaWdzdHJpbmcuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfcmVhbGxvYzogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gICAgfVxuXG4gICAgdmFyIG5ld19kYXRhID0gbmV3IGJpZ3N0cmluZy5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcihzaXplKTtcbiAgICBuZXdfZGF0YS5zZXQoYmlnc3RyaW5nLmRhdGEuc2xpY2UoMCwgc2l6ZSkpO1xuICAgIHZhciBuZXdfYmlnc3RyaW5nID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJpZ3N0cmluZy5raW5kLCBiaWdzdHJpbmcubGF5b3V0LCBbc2l6ZV0sIG5ld19kYXRhKTtcbiAgICBiaWdzdHJpbmdfZGVzdHJveV9zdHViKGJpZ3N0cmluZyk7XG5cbiAgICByZXR1cm4gbmV3X2JpZ3N0cmluZztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxOiAgdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBJbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgNDogIHZpZXcgPSBJbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IFVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDc6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDEwOiB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgfVxuICBpZiAoIXZpZXcpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgdmFyIGRhdGEgPSBuZXcgdmlldyhzaXplICogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246IDwgNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnJheVwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPj0gNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnIwMlwiXG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2hpMzIsIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gTWxfQmlnYXJyYXkgKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG5cbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICB2YXIgb2ZzID0gMDtcbiAgaWYodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikgYXJnID0gW2FyZ107XG4gIGlmICghIChhcmcgaW5zdGFuY2VvZiBBcnJheSkpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYXJnLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5nZXQvc2V0OiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIGlmKHRoaXMubGF5b3V0ID09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ1tpXSA8IDAgfHwgYXJnW2ldID49IHRoaXMuZGltc1tpXSlcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyBhcmdbaV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmRpbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSl7XG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgKGFyZ1tpXSAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2ZzO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBoID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobCxoKTtcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciByID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaSA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXVxuICB9XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSB2WzJdO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMFxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBhID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHZhciBiID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGlmKGEgPT0gYil7XG4gICAgICB0aGlzLmRhdGEuZmlsbChhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBhIDogYjtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgaW0gPSB2WzFdO1xuICAgIHZhciByZSA9IHZbMl07XG4gICAgaWYoaW0gPT0gcmUpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoaW0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGltIDogcmU7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YS5maWxsKHYpO1xuICAgIGJyZWFrO1xuICB9XG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYiwgdG90YWwpIHtcbiAgaWYgKHRoaXMubGF5b3V0ICE9IGIubGF5b3V0IHx8IHRoaXMua2luZCAhPSBiLmtpbmQpIHtcbiAgICB2YXIgazEgPSB0aGlzLmtpbmQgfCAodGhpcy5sYXlvdXQgPDwgOCk7XG4gICAgdmFyIGsyID0gICAgYi5raW5kIHwgKGIubGF5b3V0IDw8IDgpO1xuICAgIHJldHVybiBrMiAtIGsxO1xuICB9XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGIuZGltcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYi5kaW1zLmxlbmd0aCAtIHRoaXMuZGltcy5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHRoaXMuZGltc1tpXSAhPSBiLmRpbXNbaV0pXG4gICAgICByZXR1cm4gKHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSkgPyAtMSA6IDE7XG4gIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICBjYXNlIDEwOlxuICBjYXNlIDExOlxuICAgIC8vIEZsb2F0c1xuICAgIHZhciB4LCB5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgeSA9IGIuZGF0YVtpXTtcbiAgICAgIGlmICh4IDwgeSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHggPiB5KVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICh4ICE9IHkpIHtcbiAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKHggPT0geCkgcmV0dXJuIDE7XG4gICAgICAgIGlmICh5ID09IHkpIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSs9Mikge1xuICAgICAgLy8gQ2hlY2sgaGlnaGVzdCBiaXRzIGZpcnN0XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPCBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdID4gYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApIDwgKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA+IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMjpcbiAgY2FzZSAzOlxuICBjYXNlIDQ6XG4gIGNhc2UgNTpcbiAgY2FzZSA2OlxuICBjYXNlIDg6XG4gIGNhc2UgOTpcbiAgY2FzZSAxMjpcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA8IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA+IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheV9jXzFfMVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhICAgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZSA9IG5ldyBNbF9CaWdhcnJheSgpXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICBpZih0eXBlb2YgYXJnICE9PSBcIm51bWJlclwiKXtcbiAgICBpZigoYXJnIGluc3RhbmNlb2YgQXJyYXkpICYmIGFyZy5sZW5ndGggPT0gMSlcbiAgICAgIGFyZyA9IGFyZ1swXTtcbiAgICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKTtcbiAgfVxuICBpZiAoYXJnIDwgMCB8fCBhcmcgPj0gdGhpcy5kaW1zWzBdKVxuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFyZztcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jb21wYXJlXG5mdW5jdGlvbiBjYW1sX2JhX2NvbXBhcmUoYSxiLHRvdGFsKXtcbiAgcmV0dXJuIGEuY29tcGFyZShiLHRvdGFsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBNbF9CaWdhcnJheV9jXzFfMSwgY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKXtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpO1xuICBpZihjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPSBkYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImxlbmd0aCBkb2Vzbid0IG1hdGNoIGRpbXNcIik7XG4gIH1cbiAgaWYobGF5b3V0ID09IDAgJiYgLy8gY19sYXlvdXRcbiAgICAgZGltcy5sZW5ndGggPT0gMSAmJiAvLyBBcnJheTFcbiAgICAgc2l6ZV9wZXJfZWxlbWVudCA9PSAxKSAvLyAxLXRvLTEgbWFwcGluZ1xuICAgIHJldHVybiBuZXcgTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmKGJhLmxheW91dCA9PSBsYXlvdXQpIHJldHVybiBiYTtcbiAgdmFyIG5ld19kaW1zID0gW11cbiAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZGltXCIpO1xuICByZXR1cm4gYmEuZGltc1tpXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMVxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzEoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMlxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzIoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fM1xuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzMoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9nZW5lcmljKGJhLCBpKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKTtcbiAgcmV0dXJuIGJhLmdldChvZnMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDE2KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICByZXR1cm4gKGIxIHwgKGIyIDw8IDgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgcmV0dXJuICggKGIxIDw8IDApICB8XG4gICAgICAgICAgIChiMiA8PCA4KSAgfFxuICAgICAgICAgICAoYjMgPDwgMTYpIHxcbiAgICAgICAgICAgKGI0IDw8IDI0KSApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzKzQpO1xuICB2YXIgYjYgPSBiYS5nZXQob2ZzKzUpO1xuICB2YXIgYjcgPSBiYS5nZXQob2ZzKzYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzKzcpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbYjgsYjcsYjYsYjUsYjQsYjMsYjIsYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMV0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMyhiYSwgaTAsIGkxLCBpMikge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDE2KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQzMihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzIsICh2ID4+PiAxNikgJiAweGZmKTtcbiAgYmEuc2V0KG9mcyszLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgdiA9IGNhbWxfaW50NjRfdG9fYnl0ZXModik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA4OyBpKyspIGJhLnNldChvZnMraSwgdls3LWldKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMShiYSwgaTAsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChpMCksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8yXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8yKGJhLCBpMCwgaTEsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxLGkyXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9maWxsXG5mdW5jdGlvbiBjYW1sX2JhX2ZpbGwoYmEsIHYpIHtcbiAgYmEuZmlsbCh2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2JsaXQoc3JjLCBkc3QpIHtcbiAgaWYgKGRzdC5kaW1zLmxlbmd0aCAhPSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPSBzcmMuZGltc1tpXSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZHN0LmRhdGEuc2V0KHNyYy5kYXRhKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc3ViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zdWIoYmEsIG9mcywgbGVuKSB7XG4gIHZhciBjaGFuZ2VkX2RpbTtcbiAgdmFyIG11bCA9IDE7XG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSAwO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgKGJhLmRpbXMubGVuZ3RoIC0gMSk7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSBiYS5kaW1zLmxlbmd0aCAtIDE7XG4gICAgb2ZzID0gb2ZzIC0gMTtcbiAgfVxuICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IChvZnMgKyBsZW4pID4gYmEuZGltc1tjaGFuZ2VkX2RpbV0pe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tpXTtcbiAgbmV3X2RpbXNbY2hhbmdlZF9kaW1dID0gbGVuO1xuICBtdWwgKj0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBtdWwsIChvZnMgKyBsZW4pICogbXVsKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2xpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc2xpY2UoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG51bV9pbmRzID0gdmluZC5sZW5ndGg7XG4gIHZhciBpbmRleCA9IFtdO1xuICB2YXIgc3ViX2RpbXMgPSBbXTtcbiAgdmFyIG9mcztcblxuICBpZiAobnVtX2luZHMgPiBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zbGljZTogdG9vIG1hbnkgaW5kaWNlc1wiKTtcblxuICAvLyBDb21wdXRlIG9mZnNldCBhbmQgY2hlY2sgYm91bmRzXG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gdmluZFtpXTtcbiAgICBmb3IgKDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAxO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZSgwLCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzKTtcbiAgfVxuICBvZnMgPSBiYS5vZmZzZXQoaW5kZXgpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoc3ViX2RpbXMpO1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogc2l6ZV9wZXJfZWxlbWVudCwgKG9mcyArIHNpemUpICogc2l6ZV9wZXJfZWxlbWVudCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgfVxuICB2YXIgbnVtX2VsdHMgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICBuZXdfZGltW2ldID0gdmluZFtpXTtcbiAgICBpZiAobmV3X2RpbVtpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgbnVtX2VsdHMgPSBudW1fZWx0cyAqIG5ld19kaW1baV07XG4gIH1cblxuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIC8vIENoZWNrIHRoYXQgc2l6ZXMgYWdyZWVcbiAgaWYgKG51bV9lbHRzICE9IHNpemUpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogc2l6ZSBtaXNtYXRjaFwiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW0sIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfc2VyaWFsaXplKHdyaXRlciwgYmEsIHN6KSB7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEuZGltcy5sZW5ndGgpO1xuICB3cml0ZXIud3JpdGUoMzIsIChiYS5raW5kIHwgKGJhLmxheW91dCA8PCA4KSkpO1xuICBpZihiYS5jYW1sX2N1c3RvbSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihiYS5kaW1zW2ldIDwgMHhmZmZmKVxuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRpbXNbaV0pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgMHhmZmZmKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCAwKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLGJhLmRpbXNbaV0pXG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSg4LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHdyaXRlci53cml0ZSg4LDApO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsxXSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsyXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBjb21wbGV4ID0gYmEuZ2V0KGkpO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN6WzBdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA0O1xuICBzelsxXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kZXNlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzLCBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2Rlc2VyaWFsaXplKHJlYWRlciwgc3osIG5hbWUpe1xuICB2YXIgbnVtX2RpbXMgPSByZWFkZXIucmVhZDMycygpO1xuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB3cm9uZyBudW1iZXIgb2YgYmlnYXJyYXkgZGltZW5zaW9uc1wiKTtcbiAgdmFyIHRhZyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBraW5kID0gdGFnICYgMHhmZlxuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW11cbiAgaWYobmFtZSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmKHNpemVfZGltID09IDB4ZmZmZil7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmKHNpemVfZGltX2hpICE9IDApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBiaWdhcnJheSBkaW1lbnNpb24gb3ZlcmZsb3cgaW4gMzJiaXRcIik7XG4gICAgICAgIHNpemVfZGltID0gc2l6ZV9kaW1fbG87XG4gICAgICB9XG4gICAgICBkaW1zLnB1c2goc2l6ZV9kaW0pO1xuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYoc2l4dHkpIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAvLyAoaW50NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGludDY0ID0gY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KTtcbiAgICAgIGJhLnNldChpLGludDY0KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL0RlcHJlY2F0ZWRcbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2Zyb21cbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9mcm9tKGRhdGExLCBkYXRhMiwganN0eXAsIGtpbmQsIGxheW91dCwgZGltcyl7XG4gIGlmKGRhdGEyIHx8IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkgPT0gMil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9jcmVhdGVfZnJvbTogdXNlIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcIik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKXtcbiAgdmFyIG51bV9lbHRzID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgdmFyIGggPSAwO1xuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDI1NikgbnVtX2VsdHMgPSAyNTY7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDQgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgOCkgfCAoYmEuZGF0YVtpKzJdIDw8IDE2KSB8IChiYS5kYXRhW2krM10gPDwgMjQpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIHcgPSAwO1xuICAgIHN3aXRjaCAobnVtX2VsdHMgJiAzKSB7XG4gICAgY2FzZSAzOiB3ICA9IGJhLmRhdGFbaSsyXSA8PCAxNjsgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDI6IHcgfD0gYmEuZGF0YVtpKzFdIDw8IDg7ICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMTogdyB8PSBiYS5kYXRhW2krMF07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAxMjgpIG51bV9lbHRzID0gMTI4O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyAyIDw9IGJhLmRhdGEubGVuZ3RoOyBpKz0yKXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDE2KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICBpZiAoKG51bV9lbHRzICYgMSkgIT0gMClcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBudW1fZWx0cyAqPSAyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKXtcbiAgcmV0dXJuIGJhLmRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kO1xuICBpZiAgICAgICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQgPSBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpO1xuICB2YXIgdGEgPVxuICAgICAgLyogTmVlZGVkIHRvIGF2b2lkIHVuc2lnbmVkIHNldHRlcnMgb3ZlcmZsb3dpbmdcbiAgICAgICAgIHRoZSByYW5nZSBvZiBPQ2FtbCBbaW50MzJdIHZhbHVlcy4gKi9cbiAgICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkgP1xuICAgICAgbmV3IEludDMyQXJyYXkodGEuYnVmZmVyICx0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpIDogdGE7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0YWdfYSkpIHtcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gKGEubGVuZ3RoIDwgYi5sZW5ndGgpPy0xOjE7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+IDEpIHN0YWNrLnB1c2goYSwgYiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhY2subGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIHZhciBpID0gc3RhY2sucG9wKCk7XG4gICAgYiA9IHN0YWNrLnBvcCgpO1xuICAgIGEgPSBzdGFjay5wb3AoKTtcbiAgICBpZiAoaSArIDEgPCBhLmxlbmd0aCkgc3RhY2sucHVzaChhLCBiLCBpICsgMSk7XG4gICAgYSA9IGFbaV07XG4gICAgYiA9IGJbaV07XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlIChhLCBiKSB7IHJldHVybiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0cnVlKTsgfVxuLy9Qcm92aWRlczogY2FtbF9pbnRfY29tcGFyZSBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlIChhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuICgtMSk7IGlmIChhID09IGIpIHJldHVybiAwOyByZXR1cm4gMTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9lcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgIT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcmVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVydGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3NlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPD0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc3RoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzdGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPCAwKTsgfVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19vZmYsZHN0LGRzdF9vZmYsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyhiYTEsIGJhMV9vZmYsIGJhMiwgYmEyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYTEsIGJhMV9vZmYgKyBpKSwgY2FtbF9iYV9nZXRfMShiYTIsIGJhMl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZyhiYSwgYmFfb2ZmLCBzdHIsIHN0cl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHN0ciwgc3RyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jaHJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNocihiYSwgYmFfb2ZmLCBjaHIsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpID09IGNocikge1xuICAgICAgcmV0dXJuIChiYV9vZmYgKyBpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYmEuYnVmZmVyLCBiYS5ieXRlT2Zmc2V0LCBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX21lbWNtcFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfbWVtY21wKHMxLCBwb3MxLCBzMiwgcG9zMiwgbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSxwb3MxICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHMyLHBvczIgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoYmExLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc3ViYXJyYXkob2ZzMSxvZnMxK2xlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxwb3MyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoYmExLCBwb3MxLCBieXRlczIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKHBvczIgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChieXRlczIpKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc2xpY2Uob2ZzMSwgb2ZzMStsZW4pO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShzbGljZSksIDAsIGJ5dGVzMiwgcG9zMiwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2FsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZVxuZnVuY3Rpb24gYmlnc3RyaW5nX2FsbG9jKF8sc2l6ZSl7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZSgxMiwgMCwgWzAsc2l6ZV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXG5mdW5jdGlvbiBiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViKHgpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfc3R1YihzMSwgaTEsIHMyLCBpMiwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoczEsaTEsczIsaTIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1zZXRfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbXNldF9zdHViKGJpZ3N0cmluZywgdl9wb3MsIHZfbGVuLCB2X2NoYXIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgY2FtbF9iYV9zZXRfMShiaWdzdHJpbmcsIHZfcG9zICsgaSwgdl9jaGFyKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1jbXBfc3R1Yih2X3MxLCB2X3MxX3Bvcywgdl9zMiwgdl9zMl9wb3MsIHZfbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHZfczEsdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEodl9zMix2X3MyX3BvcyArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1jbXBfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9ieXRlc19nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1jbXBfYnl0ZXNfc3R1Yih2X3MxLCB2X3MxX3Bvcywgdl9zMiwgdl9zMl9wb3MsIHZfbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLCB2X3MxX3BvcyArIGkpO1xuICAgIHZhciBiID0gY2FtbF9ieXRlc19nZXQodl9zMiwgdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbnZhciBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmcgPSBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfZmluZFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX2ZpbmQoYnMsIGNociwgcG9zLCBsZW4pe1xuICB3aGlsZShsZW4gPiAwKXtcbiAgICBpZihjYW1sX2JhX2dldF8xKGJzLHBvcykgPT0gY2hyKSByZXR1cm4gcG9zO1xuICAgIHBvcysrO1xuICAgIGxlbi0tO1xuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0ID0gY2FtbF9oYXNoX21peF9pbnQ2NDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50ID0gY2FtbF9oYXNoX21peF9pbnQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCA9IGNhbWxfaGFzaF9taXhfZmxvYXQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZyA9IGNhbWxfaGFzaF9taXhfc3RyaW5nO1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbmZ1bmN0aW9uIEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlKHNlZWQpIHtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKHNlZWQpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKVxue1xuICB2YXIgRVJSQ09ERSA9IDI1NjtcblxuICAvL3ZhciBTVEFSVCA9IDA7XG4gIC8vdmFyIFRPS0VOX1JFQUQgPSAxO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8yID0gMztcbiAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0gNDtcbiAgLy92YXIgRVJST1JfREVURUNURUQgPSA1O1xuICB2YXIgbG9vcCA9IDY7XG4gIHZhciB0ZXN0c2hpZnQgPSA3O1xuICB2YXIgc2hpZnQgPSA4O1xuICB2YXIgc2hpZnRfcmVjb3ZlciA9IDk7XG4gIHZhciByZWR1Y2UgPSAxMDtcblxuICB2YXIgUkVBRF9UT0tFTiA9IDA7XG4gIHZhciBSQUlTRV9QQVJTRV9FUlJPUiA9IDE7XG4gIHZhciBHUk9XX1NUQUNLU18xID0gMjtcbiAgdmFyIEdST1dfU1RBQ0tTXzIgPSAzO1xuICB2YXIgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04gPSA0O1xuICB2YXIgQ0FMTF9FUlJPUl9GVU5DVElPTiA9IDU7XG5cbiAgdmFyIGVudl9zX3N0YWNrID0gMTtcbiAgdmFyIGVudl92X3N0YWNrID0gMjtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0X3N0YWNrID0gMztcbiAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDQ7XG4gIHZhciBlbnZfc3RhY2tzaXplID0gNTtcbiAgdmFyIGVudl9zdGFja2Jhc2UgPSA2O1xuICB2YXIgZW52X2N1cnJfY2hhciA9IDc7XG4gIHZhciBlbnZfbHZhbCA9IDg7XG4gIHZhciBlbnZfc3ltYl9zdGFydCA9IDk7XG4gIHZhciBlbnZfc3ltYl9lbmQgPSAxMDtcbiAgdmFyIGVudl9hc3AgPSAxMTtcbiAgdmFyIGVudl9ydWxlX2xlbiA9IDEyO1xuICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTM7XG4gIHZhciBlbnZfc3AgPSAxNDtcbiAgdmFyIGVudl9zdGF0ZSA9IDE1O1xuICB2YXIgZW52X2VycmZsYWcgPSAxNjtcblxuICAvLyB2YXIgX3RibF9hY3Rpb25zID0gMTtcbiAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAyO1xuICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDM7XG4gIHZhciB0YmxfbGhzID0gNDtcbiAgdmFyIHRibF9sZW4gPSA1O1xuICB2YXIgdGJsX2RlZnJlZCA9IDY7XG4gIHZhciB0YmxfZGdvdG8gPSA3O1xuICB2YXIgdGJsX3NpbmRleCA9IDg7XG4gIHZhciB0YmxfcmluZGV4ID0gOTtcbiAgdmFyIHRibF9naW5kZXggPSAxMDtcbiAgdmFyIHRibF90YWJsZXNpemUgPSAxMTtcbiAgdmFyIHRibF90YWJsZSA9IDEyO1xuICB2YXIgdGJsX2NoZWNrID0gMTM7XG4gIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7XG4gIHZhciB0YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgdmFyIHRibF9uYW1lc19ibG9jayA9IDE2O1xuXG5cbiAgZnVuY3Rpb24gbG9nKHgpIHtcbiAgICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCArIFwiXFxuXCIpO1xuICAgIGNhbWxfbWxfb3V0cHV0KDIsIHMsIDAsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlbl9uYW1lKG5hbWVzLCBudW1iZXIpXG4gIHtcbiAgICB2YXIgc3RyID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZXMpO1xuICAgIGlmIChzdHJbMF0gPT0gJ1xceDAwJylcbiAgICAgIHJldHVybiBcIjx1bmtub3duIHRva2VuPlwiO1xuICAgIHJldHVybiBzdHIuc3BsaXQoJ1xceDAwJylbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spXG4gIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKHRvayBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19ibG9ja10sIHRva1swXSk7XG4gICAgICBpZiAodHlwZW9mIHRva1sxXSA9PSBcIm51bWJlclwiKVxuICAgICAgICBraW5kID0gXCJcIiArIHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJzdHJpbmdcIilcbiAgICAgICAga2luZCA9IHRva1sxXVxuICAgICAgZWxzZSBpZiAodG9rWzFdIGluc3RhbmNlb2YgTWxCeXRlcylcbiAgICAgICAga2luZCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodG9rWzFdKVxuICAgICAgZWxzZVxuICAgICAgICBraW5kID0gXCJfXCJcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGVmcmVkXSk7XG4gICAgdGFibGVzLnNpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3NpbmRleF0pO1xuICAgIHRhYmxlcy5jaGVjayAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9jaGVja10pO1xuICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9yaW5kZXhdKTtcbiAgICB0YWJsZXMudGFibGUgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfdGFibGVdKTtcbiAgICB0YWJsZXMubGVuICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGVuXSk7XG4gICAgdGFibGVzLmxocyAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9naW5kZXhdKTtcbiAgICB0YWJsZXMuZGdvdG8gID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLCBuLCBuMSwgbjIsIHN0YXRlMTtcblxuICAvLyBSRVNUT1JFXG4gIHZhciBzcCA9IGVudltlbnZfc3BdO1xuICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTtcbiAgdmFyIGVycmZsYWcgPSBlbnZbZW52X2VycmZsYWddO1xuXG4gIGV4aXQ6Zm9yICg7Oykge1xuICAgIG5leHQ6c3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpIHByaW50X3Rva2VuIChzdGF0ZSwgYXJnKTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIlJlY292ZXJpbmcgaW4gc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWsgbmV4dDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICAgIGxvZyhcIk5vIG1vcmUgc3RhdGVzIHRvIGRpc2NhcmRcIik7XG4gICAgICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMClcbiAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgODovL3NoaWZ0OlxuICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICBpZiAoZXJyZmxhZyA+IDApIGVycmZsYWctLTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgOTovL3NoaWZ0X3JlY292ZXI6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVkdWNlIGJ5IHJ1bGUgXCIgKyBuKTtcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlcl90cmFjZVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKGJvb2wpIHtcbiAgdmFyIG9sZGZsYWcgPSBjYW1sX3BhcnNlcl90cmFjZTtcbiAgY2FtbF9wYXJzZXJfdHJhY2UgPSBib29sO1xuICByZXR1cm4gb2xkZmxhZztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggeS5mdW4gKSB7IHguZnVuID0geS5mdW47IHJldHVybiAwOyB9XG4gIGlmKCB0eXBlb2YgeT09PVwiZnVuY3Rpb25cIiApIHsgeC5mdW4gPSB5OyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2NfZHVtbXlfaW5maXhcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfYWxsb2NfZHVtbXlfaW5maXggKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZiAoeCkgeyByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgW3hdKSB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX29ial9kdXAgKHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUgKHgsIHMpIHtcbiAgaWYgKHM8PTAgfHwgcyArIDEgPiB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiT2JqLnRydW5jYXRlXCIpO1xuICBpZiAoeC5sZW5ndGggIT0gcyArIDEpIHgubGVuZ3RoID0gcyArIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9tYWtlX2ZvcndhcmRcbmZ1bmN0aW9uIGNhbWxfb2JqX21ha2VfZm9yd2FyZCAoYix2KSB7XG4gIGJbMF09MjUwO1xuICBiWzFdPXY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXBcbmZ1bmN0aW9uIGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAoeCxpLG9sZCxuKXtcbiAgaWYoeFtpKzFdID09IG9sZCkge1xuICAgIHhbaSsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfc2hhcmVkXG5mdW5jdGlvbiBjYW1sX29ial9pc19zaGFyZWQoeCl7XG4gIHJldHVybiAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLG8sbikge1xuICAgIGlmKGJbMF09PW8pIHsgYlswXSA9IG47IHJldHVybiAxIH1cbiAgICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmICgobyBpbnN0YW5jZW9mIEFycmF5KSAmJiBvWzBdID09IChvWzBdID4+PiAwKSAmJlxuICAgICAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDYsIDI0NCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbiAgZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkKG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZXNldF90b19sYXp5XG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eShvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjQ2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZWFkX3Jlc3VsdFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVhZF9yZXN1bHQobykge1xuICByZXR1cm4gKGNhbWxfb2JqX3RhZyhvKSA9PSAyNTApP29bMV06bztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAodCA9PSAyNDUpID8gMSA6IDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICAoZ2xvYmFsVGhpcy5uYXZpZ2F0b3ImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICAgID9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGNvbnNvbGU7XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCAodm91dHB1dCwgdnN0ZG91dCwgdnN0ZGVycil7XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdO1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0ID0gY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XTtcbiAgdmFyIG91dHB1dCA9IGNhbWxfbWxfY2hhbm5lbHNbdm91dHB1dF07XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBvdXRwdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBvdXRwdXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QgKHZzdGRvdXQsIHZzdGRlcnIpe1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX291dF9jaGFubmVsX3Bvc19mZChjaGFuKXtcbiAgdmFyIGluZm8gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5dO1xuICByZXR1cm4gaW5mby5vZmZzZXRcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy8vLy8vLy8vIEJJTl9QUk9UXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhiaWdzdHJpbmcsIGkpe1xuICBpZiAoaSA+Pj4gMCA+PSBiaWdzdHJpbmcuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3Bvcyk7IC8vIGZpcnN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zK2xlbi0xKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zKTsgIC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIHZhciB2aWV3ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShsZW4pO1xuICB2YXIgYnVmZmVyID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkodmlldy5idWZmZXIpO1xuICBidWZmZXIuc2V0KHNyYy5kYXRhLnN1YmFycmF5KHNyY19wb3MsIHNyY19wb3MgKyAobGVuICogOCkpKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDAgXG4gICAgZHN0W2RzdF9wb3MraSsxXSA9IHZpZXdbaV07XG4gIH1cbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWIoc3JjX3BvcyxzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MpOyAvLyBmaXJzdCBwb3MgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3BvcyArIGxlbiAtIDEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MpOyAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDBcbiAgc3JjX3BvcyA9IHNyY19wb3MgKyAxXG4gIHZhciBmbG9hdDY0ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShzcmMuc2xpY2Uoc3JjX3BvcyxzcmNfcG9zICsgbGVuKSk7XG4gIHZhciBmbG9hdDY0X3VpbnQ4ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkoZmxvYXQ2NC5idWZmZXIpO1xuICB2YXIgdmlldyA9IGRzdC5kYXRhLnN1YmFycmF5KGRzdF9wb3MsIGRzdF9wb3MgKyAobGVuICogOCkpO1xuICB2aWV3LnNldChmbG9hdDY0X3VpbnQ4KTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhLCBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICAvLyBbYmluX3Byb3RfYmxpdF9idWZfc3R1Yl0gaXMgdXNlZCB3aXRoIG1peGVkIGJpZ2FycmF5IGtpbmRzLlxuICAvLyBDb252ZXJ0ZXIgZXZlcnl0aGluZyB0byBiaWdhcnJheSBvZiBjaGFyIGJlZm9yZSB0aGUgYmxpdC5cbiAgaWYoc3JjLmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBzcmMgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoc3JjLmRhdGEpO1xuICBpZihkc3Qua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIGRzdCA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShkc3QuZGF0YSk7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLHRvcmVhZCl7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDQwOTYpO1xuICBpZih0b3JlYWQgPCAwKXtcbiAgICB3aGlsZSh0cnVlKXtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCk7XG4gICAgICBpZihyZWFkID09IDApIGJyZWFrO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsICh0b3JlYWQgPiBidWZmZXIubGVuZ3RoID8gYnVmZmVyLmxlbmd0aCA6IHRvcmVhZCkpO1xuICAgICAgaWYocmVhZCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICAgIHRvcmVhZCAtPSByZWFkXG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVUcmFuc2Zvcm1cbnZhciBjYW1sX01ENVRyYW5zZm9ybSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGFkZCAoeCwgeSkgeyByZXR1cm4gKHggKyB5KSB8IDA7IH1cbiAgZnVuY3Rpb24geHgocSxhLGIseCxzLHQpIHtcbiAgICBhID0gYWRkKGFkZChhLCBxKSwgYWRkKHgsIHQpKTtcbiAgICByZXR1cm4gYWRkKChhIDw8IHMpIHwgKGEgPj4+ICgzMiAtIHMpKSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZmYoYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gZ2coYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTsgfVxuICBmdW5jdGlvbiBpaShhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7IH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHcsIGJ1ZmZlcikge1xuICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyAxXSwgMTIsIDB4RThDN0I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNywgMHhGNTdDMEZBRik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDddLCAyMiwgMHhGRDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE3LCAweEZGRkY1QkIxKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWzEzXSwgMTIsIDB4RkQ5ODcxOTMpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA1LCAweEY2MUUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyAwXSwgMjAsIDB4RTlCNkM3QUEpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweEQ4QTFFNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzE0XSwgOSwgMHhDMzM3MDdENik7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA1LCAweEE5RTNFOTA1KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OEQyQTRDOEEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE2LCAweDZEOUQ2MTIyKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA0XSwgMTEsIDB4NEJERUNGQTkpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNCwgMHgyODlCN0VDNik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDZdLCAyMywgMHgwNDg4MUQwNSk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFGQTI3Q0Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDddLCAxMCwgMHg0MzJBRkY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA2LCAweDY1NUI1OUMzKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMV0sIDIxLCAweDg1ODQ1REQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTUsIDB4QTMwMTQzMTQpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhCRDNBRjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICB3WzFdID0gYWRkKGIsIHdbMV0pO1xuICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgfX0pKClcblxuLy9Qcm92aWRlczogY2FtbF9NRDVJbml0XG5mdW5jdGlvbiBjYW1sX01ENUluaXQoKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpO1xuICB2YXIgYjMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gIHZhciBiOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIHJldHVybiB7bGVuOjAsXG4gICAgICAgICAgdzpuZXcgVWludDMyQXJyYXkoWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdKSxcbiAgICAgICAgICBiMzI6YjMyLFxuICAgICAgICAgIGI4OmI4fVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbil7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgdmFyIGlucHV0X3BvcyA9IDA7XG4gIGN0eC5sZW4gKz0gaW5wdXRfbGVuO1xuICBpZihpbl9idWYpe1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYoaW5wdXRfbGVuIDwgbWlzc2luZykge1xuICAgICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLGlucHV0X2xlbiksaW5fYnVmKTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsbWlzc2luZyksaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUoaW5wdXRfbGVuID49IDY0KXtcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmKGlucHV0X2xlbilcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyBpbnB1dF9sZW4pLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVGaW5hbFxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1RmluYWwoY3R4KXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZiArKztcbiAgaWYoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA2NDsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MUZGRkZGRkY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgdFtpICogNCArIGpdID0gKGN0eC53W2ldID4+ICg4ICogaikpICYgMHhGRjtcbiAgcmV0dXJuIHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LGEuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pLCBsZW4pO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIEh1Z28gSGV1emFyZFxuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gU2hhY2hhciBJdHpoYWt5XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvYmxvYi80LjA3L290aGVybGlicy9zdHIvc3Ryc3R1YnMuY1xuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pzY29xL2pzY29xL2Jsb2IvdjguMTEvY29xLWpzL2pzX3N0dWIvc3RyLmpzXG5cbi8vUHJvdmlkZXM6IHJlX21hdGNoXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcblxudmFyIHJlX21hdGNoID0gZnVuY3Rpb24oKXtcbiAgdmFyIHJlX3dvcmRfbGV0dGVycyA9IFtcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDAwLTB4MUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweEZGLCAweDAzLCAgICAgICAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDg3LCAgICAgICAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4MDcsICAgICAgIC8qIDB4NjAtMHg3RjogYSB0byB6ICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHg4MC0weDlGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHhBMC0weEJGOiBub25lICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiwgICAgICAgLyogMHhDMC0weERGOiBMYXRpbi0xIGFjY2VudGVkIHVwcGVyY2FzZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYgICAgICAgIC8qIDB4RTAtMHhGRjogTGF0aW4tMSBhY2NlbnRlZCBsb3dlcmNhc2UgKi9cbiAgXTtcblxuICB2YXIgb3Bjb2RlcyA9IHtcbiAgICBDSEFSOiAwLCBDSEFSTk9STTogMSwgU1RSSU5HOiAyLCBTVFJJTkdOT1JNOiAzLCBDSEFSQ0xBU1M6IDQsXG4gICAgQk9MOiA1LCBFT0w6IDYsIFdPUkRCT1VOREFSWTogNyxcbiAgICBCRUdHUk9VUDogOCwgRU5ER1JPVVA6IDksIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsIFNJTVBMRVNUQVI6IDEzLCBTSU1QTEVQTFVTOiAxNCxcbiAgICBHT1RPOiAxNSwgUFVTSEJBQ0s6IDE2LCBTRVRNQVJLOiAxNyxcbiAgICBDSEVDS1BST0dSRVNTOiAxOFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1sgIChjID4+IDMpXSA+PiAoYyAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiBpbl9iaXRzZXQocyxpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywoaSA+PiAzKSkgPj4gKGkgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVfbWF0Y2hfaW1wbChyZSwgcywgcG9zLCBwYXJ0aWFsKSB7XG5cbiAgICB2YXIgcHJvZyAgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICAgIGNwb29sICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMl0pLFxuICAgICAgICBub3JtdGFibGUgICAgID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZVszXSksXG4gICAgICAgIG51bWdyb3VwcyAgICAgPSByZVs0XSB8IDAsXG4gICAgICAgIG51bXJlZ2lzdGVycyAgPSByZVs1XSB8IDAsXG4gICAgICAgIHN0YXJ0Y2hhcnMgICAgPSByZVs2XSB8IDA7XG5cbiAgICB2YXIgcyA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHMpO1xuXG4gICAgdmFyIHBjID0gMCxcbiAgICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgICBzdGFjayA9IFtdLFxuICAgICAgICBncm91cHMgPSBuZXcgQXJyYXkobnVtZ3JvdXBzKSxcbiAgICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgZ3JvdXBzW2ldID0ge3N0YXJ0OiAtMSwgZW5kOi0xfVxuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihpdGVtLnBvcykge1xuICAgICAgICAgIHBjID0gaXRlbS5wb3MucGM7XG4gICAgICAgICAgcG9zID0gaXRlbS5wb3MudHh0O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVpdCA9IHRydWU7XG4gICAgfTtcblxuICAgIHZhciBwdXNoID0gZnVuY3Rpb24oaXRlbSkgeyBzdGFjay5wdXNoKGl0ZW0pOyB9O1xuXG4gICAgdmFyIGFjY2VwdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGdyb3Vwc1swXS5lbmQgPSBwb3M7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KDEgKyBncm91cHMubGVuZ3RoKjIpO1xuICAgICAgcmVzdWx0WzBdID0gMDsgLy8gdGFnXG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmKGcuc3RhcnQgPCAwIHx8IGcuZW5kIDwgMCkge1xuICAgICAgICAgIGcuc3RhcnQgPSBnLmVuZCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxIF0gPSBnLnN0YXJ0O1xuICAgICAgICByZXN1bHRbMippICsgMSArIDEgXSA9IGcuZW5kO1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmKHBhcnRpYWwpIHJldHVybiBhY2NlcHQgKCk7XG4gICAgICBlbHNlIGJhY2t0cmFjayAoKTtcbiAgICB9XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgICAgc2FyZyA9IHByb2dbcGNdID4+IDgsXG4gICAgICAgICAgdWFyZyA9IHNhcmcgJiAweGZmLFxuICAgICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgICAgZ3JvdXA7XG5cbiAgICAgIHBjKys7XG5cbiAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChjID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUk5PUk06XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkdOT1JNOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUkNMQVNTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICBpZihwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVPTDpcbiAgICAgICAgaWYocG9zIDwgcy5sZW5ndGggJiYgc1twb3NdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5XT1JEQk9VTkRBUlk6XG4gICAgICAgIGlmKHBvcyA9PSAwKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbMF0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSAhPSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQkVHR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLnN0YXJ0fX0pO1xuICAgICAgICBncm91cC5zdGFydCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU5ER1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuZW5kfX0pO1xuICAgICAgICBncm91cC5lbmQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlJFRkdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgaWYoZ3JvdXAuc3RhcnQgPCAwIHx8IGdyb3VwLmVuZCA8IDApIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKyl7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKHNbaV0gIT0gc1twb3NdKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpXG4gICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVQTFVTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIH0gd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkFDQ0VQVDpcbiAgICAgICAgcmV0dXJuIGFjY2VwdCgpO1xuICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgIHBjID0gcGMgKyBzYXJnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgcHVzaCh7cG9zOiB7cGM6IHBjICsgc2FyZywgdHh0OiBwb3N9fSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNFVE1BUks6XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6cmVfcmVnaXN0ZXIsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOiB1YXJnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlX3JlZ2lzdGVyW3VhcmddfX0pO1xuICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hFQ0tQUk9HUkVTUzpcbiAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KCk7XG5cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2ZvcndhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2ZvcndhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2ZvcndhcmRcIilcbiAgd2hpbGUgKHBvcyA8PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MrKztcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9iYWNrd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfYmFja3dhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2JhY2t3YXJkXCIpXG4gIHdoaWxlIChwb3MgPj0gMCkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcy0tO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuXG4vL1Byb3ZpZGVzOiByZV9zdHJpbmdfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc3RyaW5nX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcGFydGlhbF9tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9wYXJ0aWFsX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnBhcnRpYWxfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCxncm91cHMsb3JpZykge1xuICB2YXIgcmVwbCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVwbCk7XG4gIHZhciBsZW4gPSByZXBsLmxlbmd0aDtcbiAgdmFyIG9yaWcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9yaWcpO1xuICB2YXIgcmVzID0gXCJcIjsgLy9yZXN1bHRcbiAgdmFyIG4gPSAwOyAvLyBjdXJyZW50IHBvc2l0aW9uXG4gIHZhciBjdXI7IC8vY3VycmVudCBjaGFyXG4gIHZhciBzdGFydCwgZW5kLCBjO1xuICB3aGlsZShuIDwgbGVuKXtcbiAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgIGlmKGN1ciAhPSAnXFxcXCcpe1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihuID09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2goY3VyKXtcbiAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICByZXMgKz0gY3VyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzpcbiAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgIGlmIChjKjIgPj0gZ3JvdXBzLmxlbmd0aCAtIDEgKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiICk7XG4gICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLGMqMik7XG4gICAgICAgIGVuZCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcywgYyoyICsxKTtcbiAgICAgICAgaWYgKHN0YXJ0ID09IC0xKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiKTtcbiAgICAgICAgcmVzKz1vcmlnLnNsaWNlKHN0YXJ0LGVuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzICs9ICgnXFxcXCcgICsgY3VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX2luaXRpYWxpemVcbmZ1bmN0aW9uIGNhbWxfc3RyX2luaXRpYWxpemUodW5pdCkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQodikge1xuICB2ID0gdiAtICgodiA+Pj4gMSkgJiAweDU1NTU1NTU1KTtcbiAgdiA9ICh2ICYgMHgzMzMzMzMzMykgKyAoKHYgPj4+IDIpICYgMHgzMzMzMzMzMyk7XG4gIHJldHVybiAoKHYgKyAodiA+Pj4gNCkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+Pj4gMjQ7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvcyh4KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biBjb25zdFxuZnVuY3Rpb24gQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4oeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpIHtcbiAgdmFyIG4gPSAzMjtcbiAgdmFyIHk7XG4gIHkgPSB4ID4+MTY7IGlmICh5ICE9IDApIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0geCA+PiA4OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IHggPj4gNDsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDI7IGlmICh5ICE9IDApIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0geCA+PiAxOyBpZiAoeSAhPSAwKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0geDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2NseiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2Nseih4KSB7XG4gIHZhciBuID0gNjQ7XG4gIHZhciB5O1xuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0zMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDEpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIGNhbWxfaW50NjRfdG9faW50MzIoeCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KSB7XG4gIGlmICh4ID09PSAwKSB7IHJldHVybiAzMjsgfVxuICB2YXIgbiA9IDE7XG4gIGlmICggKHggJiAweDAwMDBGRkZGKSA9PT0gMCkgeyBuID0gbiArIDE2OyB4ID0geCA+PiAxNjsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDBGRikgPT09IDApIHsgbiA9IG4gKyAgODsgeCA9IHggPj4gIDg7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMEYpID09PSAwKSB7IG4gPSBuICsgIDQ7IHggPSB4ID4+ICA0OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDAzKSA9PT0gMCkgeyBuID0gbiArICAyOyB4ID0geCA+PiAgMjsgfVxuICByZXR1cm4gbiAtICh4ICYgMSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hbmQsIGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eih4KSB7XG4gIGlmIChjYW1sX2ludDY0X2lzX3plcm8oeCkpIHsgcmV0dXJuIDY0OyB9XG4gIHZhciBuID0gMTtcbiAgZnVuY3Rpb24gaXNfemVybyAoeCkgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9pc196ZXJvKHgpOyB9XG4gIGZ1bmN0aW9uIGxhbmQgKHgseSkgICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfYW5kKHgsIHkpOyB9XG4gIGZ1bmN0aW9uIHNtYWxsX2ludDY0KHgpIHsgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHgsMCwwKTsgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDB4RkZGRkZGLCAweDAwMDBGRiwgMHgwMDAwKSkpKSB7XG4gICAgbiA9IG4gKyAzMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMEZGRkYpKSkpIHtcbiAgICBuID0gbiArIDE2OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDBGRikpKSkge1xuICAgIG4gPSBuICsgIDg7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMEYpKSkpIHtcbiAgICBuID0gbiArICA0OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAzKSkpKSB7XG4gICAgbiA9IG4gKyAgMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIH1cbiAgcmV0dXJuIG4gLSAoY2FtbF9pbnQ2NF90b19pbnQzMihjYW1sX2ludDY0X2FuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMSkpKSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gMTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFleHBvbmVudD09MCkge1xuICAgIG11bFsxXSA9IChtdWxbMV0gKiBtdWxbM10pIHwgMDtcbiAgICBtdWxbMl0gPSAobXVsWzFdICogbXVsWzFdKSB8IDA7XG4gICAgbXVsWzNdID0gKG11bFsyXSAqIG11bFsxXSkgfCAwO1xuICAgIHJlcyA9IChyZXMgKiBtdWxbZXhwb25lbnQgJiAzXSkgfCAwO1xuICAgIGV4cG9uZW50ID0gZXhwb25lbnQgPj4gMjtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgxLDApO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWNhbWxfaW50NjRfaXNfemVybyhleHBvbmVudCkpIHtcbiAgICBtdWxbMV0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFszXSk7XG4gICAgbXVsWzJdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbMV0pO1xuICAgIG11bFszXSA9IGNhbWxfaW50NjRfbXVsKG11bFsyXSwgbXVsWzFdKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X211bChyZXMsIG11bFtjYW1sX2ludDY0X2xvMzIoZXhwb25lbnQpICYgM10pO1xuICAgIGV4cG9uZW50ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZChleHBvbmVudCwgMik7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9oYXNoX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLHMpXG59XG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfZG91YmxlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9kb3VibGUoZCkge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2FtX3Rlc3RpbmcgY29uc3Rcbi8vV2Vha2RlZlxuZnVuY3Rpb24gQmFzZV9hbV90ZXN0aW5nKHgpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCIvL1Byb3ZpZGVzOiBqc19wZXJmb3JtYW5jZVxudmFyIGpzX3BlcmZvcm1hbmNlID0ge21hcms6IChmdW5jdGlvbiAoKSB7fSksIG1lYXN1cmU6IChmdW5jdGlvbiAoKSB7fSkgfTtcbmlmICh0eXBlb2Ygam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAganNfcGVyZm9ybWFuY2UgPSBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZTtcbn0gZWxzZSB7XG4gIHRyeSB7XG4gICAganNfcGVyZm9ybWFuY2UgPSByZXF1aXJlKCdwZXJmX2hvb2tzJykucGVyZm9ybWFuY2U7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKFwiY291bGRuJ3QgbG9hZCBwZXJmb3JtYW5jZSBob29rc1wiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21hcmtcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWFyayhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWFyayhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWVhc3VyZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tZWFzdXJlKG5hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tZWFzdXJlKFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0YXJ0KSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGVuZCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tYXJrc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tYXJrcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1hcmtzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21lYXN1cmVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21lYXN1cmVzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIi8vUHJvdmlkZXM6IGNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX29qc193cmFwX2Z1bl9hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKShhcmd1bWVudHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX2l0ZXJhdGVfcHJvcGVydGllc1xuLy9SZXF1aXJlczogY2FtbF9qc190b19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2pzX2l0ZXJhdGVfcHJvcGVydGllcyhvLCBmKSB7XG4gIHZhciBuYW1lO1xuICBmb3IobmFtZSBpbiBvKSB7XG4gICAgaWYoby5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgZihuYW1lKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLyBUSU1FX05PV1xuXG4vL1Byb3ZpZGVzOiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX2ludDY0X29mX2ludDMyXG52YXIgbXNfdG9fbmFubyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMTAwMCoxMDAwKTtcbmZ1bmN0aW9uIHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybygpe1xuICAgIHZhciBtcyA9IERhdGUubm93KCk7XG4gICAgLy8gbXVsdGlwbGUgYnkgdHdvIC0gaW50NjMgaW50ZWdlcnMgYXJlIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgICB2YXIgbXNfaTYzID0gY2FtbF9pbnQ2NF9vZl9mbG9hdChtcyoyKTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwobXNfaTYzLG1zX3RvX25hbm8pO1xufVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+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+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0IHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGhkIDo6IHRsIC0+IGhkIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxuKCogZm9yIGF0X2V4aXQgKilcbnR5cGUgJ2EgYXRvbWljX3RcbmV4dGVybmFsIGF0b21pY19tYWtlIDogJ2EgLT4gJ2EgYXRvbWljX3QgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBhdG9taWNfZ2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBhdG9taWNfY29tcGFyZV9hbmRfc2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgLT4gJ2EgLT4gYm9vbFxuICA9IFwiJWF0b21pY19jYXNcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IGF0b21pY19tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gYXRvbWljX21ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2RvbWFpbl9sb2NhbF9hdF9leGl0ID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgKCFkb19kb21haW5fbG9jYWxfYXRfZXhpdCkgKCk7XG4gIChhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICAgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICAgID0gQ29tcGxleFxubW9kdWxlIENvbmRpdGlvbiAgICAgID0gQ29uZGl0aW9uXG5tb2R1bGUgRGlnZXN0ICAgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBEb21haW4gICAgICAgICA9IERvbWFpblxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbl9jaGFubmVsICAgICA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbnQgICAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE11dGV4ICAgICAgICAgID0gTXV0ZXhcbm1vZHVsZSBOYXRpdmVpbnQgICAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICAgID0gT3B0aW9uXG5tb2R1bGUgT3V0X2NoYW5uZWwgICAgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBhcnNpbmcgICAgICAgID0gUGFyc2luZ1xubW9kdWxlIFByaW50ZXhjICAgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlbWFwaG9yZSAgICAgID0gU2VtYXBob3JlXG5tb2R1bGUgU2VxICAgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmluZyAgICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzICAgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgICA9IFN5c1xubW9kdWxlIFVjaGFyICAgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqIEBjb25maWd1cmVfaW5wdXRAICopXG4jMyBcInN5cy5tbC5pblwiXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuKCogU3lzdGVtIGludGVyZmFjZSAqKVxuXG5leHRlcm5hbCBnZXRfY29uZmlnOiB1bml0IC0+IHN0cmluZyAqIGludCAqIGJvb2wgPSBcImNhbWxfc3lzX2dldF9jb25maWdcIlxuZXh0ZXJuYWwgZ2V0X2V4ZWN1dGFibGVfbmFtZSA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWVcIlxuZXh0ZXJuYWwgYXJndiA6IHN0cmluZyBhcnJheSA9IFwiJXN5c19hcmd2XCJcbmV4dGVybmFsIGJpZ19lbmRpYW4gOiB1bml0IC0+IGJvb2wgPSBcIiViaWdfZW5kaWFuXCJcbmV4dGVybmFsIHdvcmRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIld29yZF9zaXplXCJcbmV4dGVybmFsIGludF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVpbnRfc2l6ZVwiXG5leHRlcm5hbCBtYXhfd29zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVtYXhfd29zaXplXCJcbmV4dGVybmFsIHVuaXggOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfdW5peFwiXG5leHRlcm5hbCB3aW4zMiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV93aW4zMlwiXG5leHRlcm5hbCBjeWd3aW4gOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfY3lnd2luXCJcbmV4dGVybmFsIGdldF9iYWNrZW5kX3R5cGUgOiB1bml0IC0+IGJhY2tlbmRfdHlwZSA9IFwiJWJhY2tlbmRfdHlwZVwiXG5cbmxldCBleGVjdXRhYmxlX25hbWUgPSBnZXRfZXhlY3V0YWJsZV9uYW1lKClcbmxldCAob3NfdHlwZSwgXywgXykgPSBnZXRfY29uZmlnKClcbmxldCBiYWNrZW5kX3R5cGUgPSBnZXRfYmFja2VuZF90eXBlICgpXG5sZXQgYmlnX2VuZGlhbiA9IGJpZ19lbmRpYW4gKClcbmxldCB3b3JkX3NpemUgPSB3b3JkX3NpemUgKClcbmxldCBpbnRfc2l6ZSA9IGludF9zaXplICgpXG5sZXQgdW5peCA9IHVuaXggKClcbmxldCB3aW4zMiA9IHdpbjMyICgpXG5sZXQgY3lnd2luID0gY3lnd2luICgpXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IG1heF93b3NpemUgKClcbmxldCBtYXhfZmxvYXRhcnJheV9sZW5ndGggPSBtYXhfYXJyYXlfbGVuZ3RoIC8gKDY0IC8gd29yZF9zaXplKVxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxXG5leHRlcm5hbCBydW50aW1lX3ZhcmlhbnQgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3ZhcmlhbnRcIlxuZXh0ZXJuYWwgcnVudGltZV9wYXJhbWV0ZXJzIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXCJcblxuZXh0ZXJuYWwgZmlsZV9leGlzdHM6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19maWxlX2V4aXN0c1wiXG5leHRlcm5hbCBpc19kaXJlY3RvcnkgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfZGlyZWN0b3J5XCJcbmV4dGVybmFsIHJlbW92ZTogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbW92ZVwiXG5leHRlcm5hbCByZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbmFtZVwiXG5leHRlcm5hbCBnZXRlbnY6IHN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGVudlwiXG5cbmxldCBnZXRlbnZfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChnZXRlbnYgcylcbiAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5leHRlcm5hbCBjb21tYW5kOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFwiXG5leHRlcm5hbCB0aW1lOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9zeXNfdGltZVwiIFwiY2FtbF9zeXNfdGltZV91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGNoZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2hkaXJcIlxuZXh0ZXJuYWwgbWtkaXI6IHN0cmluZyAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfbWtkaXJcIlxuZXh0ZXJuYWwgcm1kaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19ybWRpclwiXG5leHRlcm5hbCBnZXRjd2Q6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRjd2RcIlxuZXh0ZXJuYWwgcmVhZGRpciA6IHN0cmluZyAtPiBzdHJpbmcgYXJyYXkgPSBcImNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XCJcblxubGV0IGludGVyYWN0aXZlID0gcmVmIGZhbHNlXG5cbnR5cGUgc2lnbmFsX2JlaGF2aW9yID1cbiAgICBTaWduYWxfZGVmYXVsdFxuICB8IFNpZ25hbF9pZ25vcmVcbiAgfCBTaWduYWxfaGFuZGxlIG9mIChpbnQgLT4gdW5pdClcblxuZXh0ZXJuYWwgc2lnbmFsIDogaW50IC0+IHNpZ25hbF9iZWhhdmlvciAtPiBzaWduYWxfYmVoYXZpb3JcbiAgICAgICAgICAgICAgICA9IFwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyXCJcblxubGV0IHNldF9zaWduYWwgc2lnX251bSBzaWdfYmVoID0gaWdub3JlKHNpZ25hbCBzaWdfbnVtIHNpZ19iZWgpXG5cbmxldCBzaWdhYnJ0ID0gLTFcbmxldCBzaWdhbHJtID0gLTJcbmxldCBzaWdmcGUgPSAtM1xubGV0IHNpZ2h1cCA9IC00XG5sZXQgc2lnaWxsID0gLTVcbmxldCBzaWdpbnQgPSAtNlxubGV0IHNpZ2tpbGwgPSAtN1xubGV0IHNpZ3BpcGUgPSAtOFxubGV0IHNpZ3F1aXQgPSAtOVxubGV0IHNpZ3NlZ3YgPSAtMTBcbmxldCBzaWd0ZXJtID0gLTExXG5sZXQgc2lndXNyMSA9IC0xMlxubGV0IHNpZ3VzcjIgPSAtMTNcbmxldCBzaWdjaGxkID0gLTE0XG5sZXQgc2lnY29udCA9IC0xNVxubGV0IHNpZ3N0b3AgPSAtMTZcbmxldCBzaWd0c3RwID0gLTE3XG5sZXQgc2lndHRpbiA9IC0xOFxubGV0IHNpZ3R0b3UgPSAtMTlcbmxldCBzaWd2dGFscm0gPSAtMjBcbmxldCBzaWdwcm9mID0gLTIxXG5sZXQgc2lnYnVzID0gLTIyXG5sZXQgc2lncG9sbCA9IC0yM1xubGV0IHNpZ3N5cyA9IC0yNFxubGV0IHNpZ3RyYXAgPSAtMjVcbmxldCBzaWd1cmcgPSAtMjZcbmxldCBzaWd4Y3B1ID0gLTI3XG5sZXQgc2lneGZzeiA9IC0yOFxuXG5leGNlcHRpb24gQnJlYWtcblxubGV0IGNhdGNoX2JyZWFrIG9uID1cbiAgaWYgb24gdGhlblxuICAgIHNldF9zaWduYWwgc2lnaW50IChTaWduYWxfaGFuZGxlKGZ1biBfIC0+IHJhaXNlIEJyZWFrKSlcbiAgZWxzZVxuICAgIHNldF9zaWduYWwgc2lnaW50IFNpZ25hbF9kZWZhdWx0XG5cblxuZXh0ZXJuYWwgZW5hYmxlX3J1bnRpbWVfd2FybmluZ3M6IGJvb2wgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1wiXG5leHRlcm5hbCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQ6IHVuaXQgLT4gYm9vbCA9XG4gIFwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcIlxuXG4oKiBUaGUgdmVyc2lvbiBzdHJpbmcgaXMgZm91bmQgaW4gZmlsZSAuLi9WRVJTSU9OICopXG5cbmxldCBvY2FtbF92ZXJzaW9uID0gXCJAVkVSU0lPTkBcIlxuXG5sZXQgZGV2ZWxvcG1lbnRfdmVyc2lvbiA9IEBPQ0FNTF9ERVZFTE9QTUVOVF9WRVJTSU9OQFxuXG50eXBlIGV4dHJhX3ByZWZpeCA9IFBsdXMgfCBUaWxkZVxuXG50eXBlIGV4dHJhX2luZm8gPSBleHRyYV9wcmVmaXggKiBzdHJpbmdcblxudHlwZSBvY2FtbF9yZWxlYXNlX2luZm8gPSB7XG4gIG1ham9yIDogaW50O1xuICBtaW5vciA6IGludDtcbiAgcGF0Y2hsZXZlbCA6IGludDtcbiAgZXh0cmEgOiBleHRyYV9pbmZvIG9wdGlvblxufVxuXG5sZXQgb2NhbWxfcmVsZWFzZSA9IHtcbiAgbWFqb3IgPSBAT0NBTUxfVkVSU0lPTl9NQUpPUkA7XG4gIG1pbm9yID0gQE9DQU1MX1ZFUlNJT05fTUlOT1JAO1xuICBwYXRjaGxldmVsID0gQE9DQU1MX1ZFUlNJT05fUEFUQ0hMRVZFTEA7XG4gIGV4dHJhID0gQE9DQU1MX1JFTEVBU0VfRVhUUkFAXG59XG5cbigqIE9wdGltaXphdGlvbiAqKVxuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbm1vZHVsZSBJbW1lZGlhdGU2NCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZShJbW1lZGlhdGUgOiBJbW1lZGlhdGUpKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuICAgIGV4dGVybmFsIG1hZ2ljIDogXyByZXByIC0+IHQgcmVwciA9IFwiJWlkZW50aXR5XCJcbiAgICBsZXQgcmVwciA9XG4gICAgICBpZiB3b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIG1hZ2ljIEltbWVkaWF0ZVxuICAgICAgZWxzZVxuICAgICAgICBtYWdpYyBOb25faW1tZWRpYXRlXG4gIGVuZFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBjb21wYXJlX2FuZF9zd2FwX2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB0IC0+IGJvb2xcbiAgPSBcImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXBcIlxuZXh0ZXJuYWwgaXNfc2hhcmVkIDogdCAtPiBib29sID0gXCJjYW1sX29ial9pc19zaGFyZWRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQzXG5cbmxldCBmb3JjaW5nX3RhZyA9IDI0NFxubGV0IGNvbnRfdGFnID0gMjQ1XG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIENsb3N1cmUgPSBzdHJ1Y3RcbiAgdHlwZSBpbmZvID0ge1xuICAgIGFyaXR5OiBpbnQ7XG4gICAgc3RhcnRfZW52OiBpbnQ7XG4gIH1cblxuICBsZXQgaW5mb19vZl9yYXcgKGluZm8gOiBuYXRpdmVpbnQpID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnQgaW5cbiAgICBsZXQgYXJpdHkgPVxuICAgICAgKCogc2lnbmVkOiBuZWdhdGl2ZSBmb3IgdHVwbGVkIGZ1bmN0aW9ucyAqKVxuICAgICAgaWYgU3lzLndvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDU2KVxuICAgICAgZWxzZVxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gMjQpXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfZW52ID1cbiAgICAgICgqIHN0YXJ0X2VudiBpcyB1bnNpZ25lZCwgYnV0IHdlIGtub3cgaXQgY2FuIGFsd2F5cyBmaXQgYW4gT0NhbWxcbiAgICAgICAgIGludGVnZXIgc28gd2UgdXNlIFt0b19pbnRdIGluc3RlYWQgb2YgW3Vuc2lnbmVkX3RvX2ludF0uICopXG4gICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKHNoaWZ0X2xlZnQgaW5mbyA4KSA5KSBpblxuICAgIHsgYXJpdHk7IHN0YXJ0X2VudiB9XG5cbiAgKCogbm90ZTogd2UgZXhwZWN0IGEgY2xvc3VyZSwgbm90IGFuIGluZml4IHBvaW50ZXIgKilcbiAgbGV0IGluZm8gKG9iaiA6IHQpID1cbiAgICBhc3NlcnQgKHRhZyBvYmogPSBjbG9zdXJlX3RhZyk7XG4gICAgaW5mb19vZl9yYXcgKHJhd19maWVsZCBvYmogMSlcbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIlxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTctMjAxOCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZS4gICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBtYWtlIDogJ2EgLT4gJ2EgdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBleGNoYW5nZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgPSBcIiVhdG9taWNfZXhjaGFuZ2VcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc2V0IDogJ2EgdCAtPiAnYSAtPiAnYSAtPiBib29sID0gXCIlYXRvbWljX2Nhc1wiXG5leHRlcm5hbCBmZXRjaF9hbmRfYWRkIDogaW50IHQgLT4gaW50IC0+IGludCA9IFwiJWF0b21pY19mZXRjaF9hZGRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbmxldCBzZXQgciB4ID0gaWdub3JlIChleGNoYW5nZSByIHgpXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxuKCogW3VwZGF0ZV90b19mb3JjaW5nIGJsa10gdHJpZXMgdG8gdXBkYXRlIGEgW2Jsa10gd2l0aCBbbGF6eV90YWddIHRvXG4gICBbZm9yY2luZ190YWddIHVzaW5nIGNvbXBhcmUtYW5kLXN3YXAgKENBUyksIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoZSBoZWFkZXIgd29yZCBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiBSZXR1cm5zIFswXSBpZiB0aGVcbiAgIENBUyBpcyBzdWNjZXNzZnVsLiBJZiB0aGUgQ0FTIGZhaWxzLCB0aGVuIHRoZSB0YWcgd2FzIG9ic2VydmVkIHRvIGJlXG4gICBzb21ldGhpbmcgb3RoZXIgdGhhbiBbbGF6eV90YWddIGR1ZSB0byBhIGNvbmN1cnJlbnQgbXV0YXRvci4gSW4gdGhpcyBjYXNlLFxuICAgdGhlIGZ1bmN0aW9uIHJldHVybnMgWzFdLiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcmNpbmcgOiBPYmoudCAtPiBpbnQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1wiIFtAQG5vYWxsb2NdXG5cbigqIFtyZXNldF90b19sYXp5IGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGggW09iai5mb3JjaW5nX3RhZ11cbiAgIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5sYXp5X3RhZ10sIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuICopXG5leHRlcm5hbCByZXNldF90b19sYXp5IDogT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcIiBbQEBub2FsbG9jXVxuXG4oKiBbdXBkYXRlX3RvX2ZvcndhcmQgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aFxuICAgW09iai5mb3JjaW5nX3RhZ10gYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmZvcndhcmRfdGFnXSwgdGFraW5nIGNhcmUgdG9cbiAgIGhhbmRsZSBjb25jdXJyZW50IG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC5cbiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcndhcmQgOiBPYmoudCAtPiB1bml0ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcIiBbQEBub2FsbG9jXVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJlc2V0X3RvX2xhenkgYjtcbiAgICByYWlzZSBlXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfdmFsX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICByZXN1bHRcblxuKCogQ2FsbGVkIGJ5IFtmb3JjZV9nZW5dICopXG5sZXQgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBXZSBleHBlY3QgdGhlIHRhZyB0byBiZSBbbGF6eV90YWddLCBidXQgbWF5IGJlIG90aGVyIHRhZ3MgZHVlIHRvXG4gICAgIGNvbmN1cnJlbnQgZm9yY2luZyBvZiBsYXp5IHZhbHVlcy4gKilcbiAgbWF0Y2ggdXBkYXRlX3RvX2ZvcmNpbmcgKE9iai5yZXByIGJsaykgd2l0aFxuICB8IDAgd2hlbiBvbmx5X3ZhbCAtPiBkb19mb3JjZV92YWxfYmxvY2sgYmxrXG4gIHwgMCAtPiBkb19mb3JjZV9ibG9jayBibGtcbiAgfCBfIC0+IHJhaXNlIFVuZGVmaW5lZFxuXG4oKiB1c2VkIGluIHRoZSAlbGF6eV9mb3JjZSBwcmltaXRpdmUgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIGJsayA9IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbDpmYWxzZSBibGtcblxuKCogW2ZvcmNlX2dlbiB+b25seV92YWw6ZmFsc2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXNcbiAgIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0c1xuICAgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbCBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxubGV0IGZvcmNlX2dlbiB+b25seV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0IGNvdWxkIGhhdmUgYmVlblxuICAgICAgIHNob3J0Y3V0IGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpLiBUaGlzIGlzIG5vdCBhbiBpc3N1ZSBoZXJlIGF0IHRoZSBtb21lbnQgc2luY2VcbiAgICAgICBbT2JqLnRhZ10gaXMgbm90IHNpbXBsaWZpZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgR1BSIzcxMyBhbHNvXG4gICAgICAgZW5zdXJlcyB0aGF0IG5vIHZhbHVlIHdpbGwgYmUga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZy5cbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gICgqIFNUQVJUIG5vIHNhZmUgcG9pbnRzLiBJZiBhIEdDIG9jY3VycyBoZXJlLCB0aGVuIHRoZSBvYmplY3QgW3hdIG1heSBiZVxuICAgICBzaG9ydC1jaXJjdWl0ZWQsIGFuZCBnZXR0aW5nIHRoZSBmaXJzdCBmaWVsZCBvZiBbeF0gd291bGQgZ2V0IHVzIHRoZSB3cm9uZ1xuICAgICB2YWx1ZS4gTHVja2lseSwgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGluc2VydCBHQyBzYWZlIHBvaW50cyBhdCB0aGlzIHBsYWNlLFxuICAgICBzbyBpdCBpcyBvay4gKilcbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZylcbiAgKCogRU5EIG5vIHNhZmUgcG9pbnRzICopXG4gIGVsc2UgaWYgdCA9IE9iai5mb3JjaW5nX3RhZyB0aGVuIHJhaXNlIFVuZGVmaW5lZFxuICBlbHNlIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IGZvcmNlX3ZhbCBsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV9nZW4gfm9ubHlfdmFsOnRydWUgbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fFxuICAgICB0ID0gT2JqLmZvcmNpbmdfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGZyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IHJlYyBmaW5kX21hcCBmIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgZmluZF9tYXAgZiB4c1xuICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgcmVzdWx0XG5cbigqIFtpdGVyMl0sIFtmb2xkX2xlZnQyXSwgW2Zvcl9hbGwyXSwgW2V4aXN0czJdLCBbbWFwMl0sIFt6aXBdIHdvcmsgYWxzbyBpblxuICAgdGhlIGNhc2Ugd2hlcmUgdGhlIHR3byBzZXF1ZW5jZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3Rocy4gVGhleSBzdG9wIGFzIHNvb25cbiAgIGFzIG9uZSBzZXF1ZW5jZSBpcyBleGhhdXN0ZWQuIFRoZWlyIGJlaGF2aW9yIGlzIHNsaWdodGx5IGFzeW1tZXRyaWM6IHdoZW5cbiAgIFt4c10gaXMgZW1wdHksIHRoZXkgZG8gbm90IGZvcmNlIFt5c107IGhvd2V2ZXIsIHdoZW4gW3lzXSBpcyBlbXB0eSwgW3hzXSBpc1xuICAgZm9yY2VkLCBldmVuIHRob3VnaCB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBhcHBsaWNhdGlvbiBbeHMoKV0gdHVybnMgb3V0XG4gICB0byBiZSB1c2VsZXNzLiAqKVxuXG5sZXQgcmVjIGl0ZXIyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHk7XG4gICAgICAgICAgaXRlcjIgZiB4cyB5c1xuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgYWNjdVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBsZXQgYWNjdSA9IGYgYWNjdSB4IHkgaW5cbiAgICAgICAgICBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5c1xuXG5sZXQgcmVjIGZvcl9hbGwyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5ICYmIGZvcl9hbGwyIGYgeHMgeXNcblxubGV0IHJlYyBleGlzdHMyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgfHwgZXhpc3RzMiBmIHhzIHlzXG5cbmxldCByZWMgZXF1YWwgZXEgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBlcSB4IHkgJiYgZXF1YWwgZXEgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgZmFsc2VcblxubGV0IHJlYyBjb21wYXJlIGNtcCB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICAwXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGxldCBjID0gY21wIHggeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNvbXBhcmUgY21wIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKSAtPlxuICAgICAgLTFcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICArMVxuXG5cblxuKCogW2luaXRfYXV4IGYgaSBqXSBpcyB0aGUgc2VxdWVuY2UgW2YgaSwgLi4uLCBmIChqLTEpXS4gKilcblxubGV0IHJlYyBpbml0X2F1eCBmIGkgaiAoKSA9XG4gIGlmIGkgPCBqIHRoZW4gYmVnaW5cbiAgICBDb25zIChmIGksIGluaXRfYXV4IGYgKGkgKyAxKSBqKVxuICBlbmRcbiAgZWxzZVxuICAgIE5pbFxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTZXEuaW5pdFwiXG4gIGVsc2VcbiAgICBpbml0X2F1eCBmIDAgblxuXG5sZXQgcmVjIHJlcGVhdCB4ICgpID1cbiAgQ29ucyAoeCwgcmVwZWF0IHgpXG5cbmxldCByZWMgZm9yZXZlciBmICgpID1cbiAgQ29ucyAoZigpLCBmb3JldmVyIGYpXG5cbigqIFRoaXMgcHJlbGltaW5hcnkgZGVmaW5pdGlvbiBvZiBbY3ljbGVdIHJlcXVpcmVzIHRoZSBzZXF1ZW5jZSBbeHNdXG4gICB0byBiZSBub25lbXB0eS4gQXBwbHlpbmcgaXQgdG8gYW4gZW1wdHkgc2VxdWVuY2Ugd291bGQgcHJvZHVjZSBhXG4gICBzZXF1ZW5jZSB0aGF0IGRpdmVyZ2VzIHdoZW4gaXQgaXMgZm9yY2VkLiAqKVxuXG5sZXQgcmVjIGN5Y2xlX25vbmVtcHR5IHhzICgpID1cbiAgYXBwZW5kIHhzIChjeWNsZV9ub25lbXB0eSB4cykgKClcblxuKCogW2N5Y2xlIHhzXSBjaGVja3Mgd2hldGhlciBbeHNdIGlzIGVtcHR5IGFuZCwgaWYgc28sIHJldHVybnMgYW4gZW1wdHlcbiAgIHNlcXVlbmNlLiBPdGhlcndpc2UsIFtjeWNsZSB4c10gcHJvZHVjZXMgb25lIGNvcHkgb2YgW3hzXSBmb2xsb3dlZFxuICAgd2l0aCB0aGUgaW5maW5pdGUgc2VxdWVuY2UgW2N5Y2xlX25vbmVtcHR5IHhzXS4gVGh1cywgdGhlIG5vbmVtcHRpbmVzc1xuICAgY2hlY2sgaXMgcGVyZm9ybWVkIGp1c3Qgb25jZS4gKilcblxubGV0IGN5Y2xlIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cycpIC0+XG4gICAgICBDb25zICh4LCBhcHBlbmQgeHMnIChjeWNsZV9ub25lbXB0eSB4cykpXG5cbigqIFtpdGVyYXRlMSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbZiB4LCBmIChmIHgpLCAuLi5dLlxuICAgSXQgaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoaXRlcmF0ZSBmIHgpXS5cbiAgIFtpdGVyYXRlMV0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyBpdGVyYXRlMSBmIHggKCkgPVxuICBsZXQgeSA9IGYgeCBpblxuICBDb25zICh5LCBpdGVyYXRlMSBmIHkpXG5cbigqIFtpdGVyYXRlIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFt4LCBmIHgsIC4uLl0uICopXG5cbigqIFRoZSByZWFzb24gd2h5IHdlIGdpdmUgdGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXSxcbiAgIGFzIG9wcG9zZWQgdG8gdGhlIG1vcmUgbmFpdmUgZGVmaW5pdGlvbiB0aGF0IG1heSBjb21lIHRvIG1pbmQsIGlzIHRoYXRcbiAgIHdlIGFyZSBjYXJlZnVsIHRvIGF2b2lkIGV2YWx1YXRpbmcgW2YgeF0gdW50aWwgdGhpcyBmdW5jdGlvbiBjYWxsIGlzXG4gICBhY3R1YWxseSBuZWNlc3NhcnkuIFRoZSBuYWl2ZSBkZWZpbml0aW9uIChub3Qgc2hvd24gaGVyZSkgY29tcHV0ZXMgdGhlXG4gICBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIHNlcXVlbmNlLCBbZiB4XSwgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXNcbiAgIHJlcXVlc3RlZCBieSB0aGUgdXNlci4gKilcblxubGV0IGl0ZXJhdGUgZiB4ID1cbiAgY29ucyB4IChpdGVyYXRlMSBmIHgpXG5cblxuXG5sZXQgcmVjIG1hcGlfYXV4IGYgaSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChmIGkgeCwgbWFwaV9hdXggZiAoaSsxKSB4cylcblxubGV0W0BpbmxpbmVdIG1hcGkgZiB4cyA9XG4gIG1hcGlfYXV4IGYgMCB4c1xuXG4oKiBbdGFpbF9zY2FuIGYgcyB4c10gaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoc2NhbiBmIHMgeHMpXS5cbiAgIFt0YWlsX3NjYW5dIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbc2Nhbl0uICopXG5cbigqIFRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbc2Nhbl0gaXMgbWVhbnQgdG8gYXZvaWQgY29tcHV0aW5nXG4gICBlbGVtZW50cyB0b28gZWFybHk7IHNlZSB0aGUgYWJvdmUgY29tbWVudCBhYm91dCBbaXRlcmF0ZTFdIGFuZCBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgdGFpbF9zY2FuIGYgcyB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgcyA9IGYgcyB4IGluXG4gICAgICBDb25zIChzLCB0YWlsX3NjYW4gZiBzIHhzKVxuXG5sZXQgc2NhbiBmIHMgeHMgPVxuICBjb25zIHMgKHRhaWxfc2NhbiBmIHMgeHMpXG5cbigqIFt0YWtlXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbdGFrZSAwIHhzXSByZXR1cm5zIFtlbXB0eV1cbiAgIGltbWVkaWF0ZWx5LCB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IHJlYyB0YWtlX2F1eCBuIHhzID1cbiAgaWYgbiA9IDAgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgQ29ucyAoeCwgdGFrZV9hdXggKG4tMSkgeHMpXG5cbmxldCB0YWtlIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLnRha2VcIjtcbiAgdGFrZV9hdXggbiB4c1xuXG4oKiBbZm9yY2VfZHJvcCBuIHhzXSBpcyBlcXVpdmFsZW50IHRvIFtkcm9wIG4geHMgKCldLlxuICAgW2ZvcmNlX2Ryb3AgbiB4c10gcmVxdWlyZXMgW24gPiAwXS5cbiAgIFtmb3JjZV9kcm9wXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2Ryb3BdLiAqKVxuXG5sZXQgcmVjIGZvcmNlX2Ryb3AgbiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZXQgbiA9IG4gLSAxIGluXG4gICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgIHhzKClcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbigqIFtkcm9wXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbZHJvcCAwIHhzXSByZXR1cm5zIFt4c10gaW1tZWRpYXRlbHksXG4gICB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IGRyb3AgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEuZHJvcFwiXG4gIGVsc2UgaWYgbiA9IDAgdGhlblxuICAgIHhzXG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG5sZXQgcmVjIHRha2Vfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBDb25zICh4LCB0YWtlX3doaWxlIHAgeHMpIGVsc2UgTmlsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgYXMgbm9kZSAtPlxuICAgICAgaWYgcCB4IHRoZW4gZHJvcF93aGlsZSBwIHhzICgpIGVsc2Ugbm9kZVxuXG5sZXQgcmVjIGdyb3VwIGVxIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGNvbnMgeCAodGFrZV93aGlsZSAoZXEgeCkgeHMpLCBncm91cCBlcSAoZHJvcF93aGlsZSAoZXEgeCkgeHMpKVxuXG5leGNlcHRpb24gRm9yY2VkX3R3aWNlXG5cbm1vZHVsZSBTdXNwZW5zaW9uID0gc3RydWN0XG5cbiAgdHlwZSAnYSBzdXNwZW5zaW9uID1cbiAgICB1bml0IC0+ICdhXG5cbiAgKCogQ29udmVyc2lvbnMuICopXG5cbiAgbGV0IHRvX2xhenkgOiAnYSBzdXNwZW5zaW9uIC0+ICdhIExhenkudCA9XG4gICAgTGF6eS5mcm9tX2Z1blxuICAgICgqIGZ1biBzIC0+IGxhenkgKHMoKSkgKilcblxuICBsZXQgZnJvbV9sYXp5IChzIDogJ2EgTGF6eS50KSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPiBMYXp5LmZvcmNlIHNcblxuICAoKiBbbWVtb2l6ZV0gdHVybnMgYW4gYXJiaXRyYXJ5IHN1c3BlbnNpb24gaW50byBhIHBlcnNpc3RlbnQgc3VzcGVuc2lvbi4gKilcblxuICBsZXQgbWVtb2l6ZSAocyA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnJvbV9sYXp5ICh0b19sYXp5IHMpXG5cbiAgKCogW2ZhaWx1cmVdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGZhaWxzIHdoZW4gZm9yY2VkLiAqKVxuXG4gIGxldCBmYWlsdXJlIDogXyBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEEgc3VzcGVuc2lvbiBjcmVhdGVkIGJ5IFtvbmNlXSBoYXMgYmVlbiBmb3JjZWQgdHdpY2UuICopXG4gICAgICByYWlzZSBGb3JjZWRfdHdpY2VcblxuICAoKiBJZiBbZl0gaXMgYSBzdXNwZW5zaW9uLCB0aGVuIFtvbmNlIGZdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGNhbiBiZSBmb3JjZWRcbiAgICAgYXQgbW9zdCBvbmNlLiBJZiBpdCBpcyBmb3JjZWQgbW9yZSB0aGFuIG9uY2UsIHRoZW4gW0ZvcmNlZF90d2ljZV0gaXNcbiAgICAgcmFpc2VkLiAqKVxuXG4gIGxldCBvbmNlIChmIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBsZXQgYWN0aW9uID0gQXRvbWljLm1ha2UgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogR2V0IHRoZSBmdW5jdGlvbiBjdXJyZW50bHkgc3RvcmVkIGluIFthY3Rpb25dLCBhbmQgd3JpdGUgdGhlXG4gICAgICAgICBmdW5jdGlvbiBbZmFpbHVyZV0gaW4gaXRzIHBsYWNlLCBzbyB0aGUgbmV4dCBhY2Nlc3Mgd2lsbCByZXN1bHRcbiAgICAgICAgIGluIGEgY2FsbCB0byBbZmFpbHVyZSgpXS4gKilcbiAgICAgIGxldCBmID0gQXRvbWljLmV4Y2hhbmdlIGFjdGlvbiBmYWlsdXJlIGluXG4gICAgICBmKClcblxuZW5kICgqIFN1c3BlbnNpb24gKilcblxubGV0IHJlYyBtZW1vaXplIHhzID1cbiAgU3VzcGVuc2lvbi5tZW1vaXplIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBtZW1vaXplIHhzKVxuICApXG5cbmxldCByZWMgb25jZSB4cyA9XG4gIFN1c3BlbnNpb24ub25jZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgb25jZSB4cylcbiAgKVxuXG5cbmxldCByZWMgemlwIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoKHgsIHkpLCB6aXAgeHMgeXMpXG5cbmxldCByZWMgbWFwMiBmIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoZiB4IHksIG1hcDIgZiB4cyB5cylcblxubGV0IHJlYyBpbnRlcmxlYXZlIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB5cygpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zICh4LCBpbnRlcmxlYXZlIHlzIHhzKVxuXG4oKiBbc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgeXNdLlxuXG4gICBbc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgeHMgKGNvbnMgeSB5cyldLlxuXG4gICBbc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIChjb25zIHkgeXMpXS5cblxuICAgVGhlc2UgdGhyZWUgZnVuY3Rpb25zIGFyZSB1c2VkIGFzIGJ1aWxkaW5nIGJsb2NrcyBpbiB0aGUgZGVmaW5pdGlvblxuICAgb2YgW3NvcnRlZF9tZXJnZV0uICopXG5cbmxldCByZWMgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMgKCkgPVxuICBtYXRjaCB5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHgsIHhzKVxuICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeSwgeXMpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5cyA9XG4gIGlmIGNtcCB4IHkgPD0gMCB0aGVuXG4gICAgQ29ucyAoeCwgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMpXG4gIGVsc2VcbiAgICBDb25zICh5LCBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cylcblxubGV0IHNvcnRlZF9tZXJnZSBjbXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgICB8IE5pbCwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgTmlsLCBjXG4gICAgfCBjLCBOaWwgLT5cbiAgICAgICAgY1xuICAgIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cblxubGV0IHJlYyBtYXBfZnN0IHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKCh4LCBfKSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeCwgbWFwX2ZzdCB4eXMpXG5cbmxldCByZWMgbWFwX3NuZCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoXywgeSksIHh5cykgLT5cbiAgICAgIENvbnMgKHksIG1hcF9zbmQgeHlzKVxuXG5sZXQgdW56aXAgeHlzID1cbiAgbWFwX2ZzdCB4eXMsIG1hcF9zbmQgeHlzXG5cbmxldCBzcGxpdCA9XG4gIHVuemlwXG5cbigqIFtmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4c10gaXMgZXF1aXZhbGVudCB0b1xuICAgW2ZpbHRlcl9tYXAgRWl0aGVyLmZpbmRfbGVmdCAobWFwIGYgeHMpXS4gKilcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCB5IC0+XG4gICAgICAgICAgQ29ucyAoeSwgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMpXG4gICAgICB8IEVpdGhlci5SaWdodCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKClcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgeiAtPlxuICAgICAgICAgIENvbnMgKHosIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cylcblxubGV0IHBhcnRpdGlvbl9tYXAgZiB4cyA9XG4gIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzLFxuICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHNcblxubGV0IHBhcnRpdGlvbiBwIHhzID1cbiAgZmlsdGVyIHAgeHMsIGZpbHRlciAoZnVuIHggLT4gbm90IChwIHgpKSB4c1xuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbcGVlbCB4c3NdIGlzIGEgcGFpciBvZlxuICAgdGhlIGZpcnN0IGNvbHVtbiAoYSBzZXF1ZW5jZSBvZiBlbGVtZW50cykgYW5kIG9mIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygc2hvcnRlciByb3dzKS4gVGhlc2UgdHdvIHNlcXVlbmNlcyBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIEFuIGVtcHR5IHJvdyBpcyBpZ25vcmVkLiAqKVxuXG4oKiBCZWNhdXNlIFtwZWVsXSB1c2VzIFt1bnppcF0sIGl0cyBhcmd1bWVudCBtdXN0IGJlIHBlcnNpc3RlbnQuIFRoZSBzYW1lXG4gICByZW1hcmsgYXBwbGllcyB0byBbdHJhbnNwb3NlXSwgW2RpYWdvbmFsc10sIFtwcm9kdWN0XSwgZXRjLiAqKVxuXG5sZXQgcGVlbCB4c3MgPVxuICB1bnppcCAoZmlsdGVyX21hcCB1bmNvbnMgeHNzKVxuXG5sZXQgcmVjIHRyYW5zcG9zZSB4c3MgKCkgPVxuICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCB4c3MgaW5cbiAgaWYgaXNfZW1wdHkgaGVhZHMgdGhlbiBiZWdpblxuICAgIGFzc2VydCAoaXNfZW1wdHkgdGFpbHMpO1xuICAgIE5pbFxuICBlbmRcbiAgZWxzZVxuICAgIENvbnMgKGhlYWRzLCB0cmFuc3Bvc2UgdGFpbHMpXG5cbigqIFRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbZGlhZ29uYWxzXSB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCwgW3JlbWFpbmRlcnNdLFxuICAgd2hpY2ggY29udGFpbnMgdGhlIHJlbWFpbmRlcnMgb2YgdGhlIHJvd3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlblxuICAgZGlzY292ZXJlZC4gKilcblxubGV0IHJlYyBkaWFnb25hbHMgcmVtYWluZGVycyB4c3MgKCkgPVxuICBtYXRjaCB4c3MoKSB3aXRoXG4gIHwgQ29ucyAoeHMsIHhzcykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBub25lbXB0eSByb3cgW3ggOjogeHNdLiBUaHVzLCB0aGUgbmV4dCBkaWFnb25hbFxuICAgICAgICAgICAgIGlzIFt4IDo6IGhlYWRzXTogdGhpcyBkaWFnb25hbCBiZWdpbnMgd2l0aCBbeF0gYW5kIGNvbnRpbnVlcyB3aXRoXG4gICAgICAgICAgICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgZXZlcnkgcm93IGluIFtyZW1haW5kZXJzXS4gSW4gdGhlIHJlY3Vyc2l2ZVxuICAgICAgICAgICAgIGNhbGwsIHRoZSBhcmd1bWVudCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGggW3hzIDo6XG4gICAgICAgICAgICAgdGFpbHNdLCB3aGljaCBtZWFucyB0aGF0IHdlIGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdywgW3hzXSxcbiAgICAgICAgICAgICBhbmQgdGhhdCB3ZSBrZWVwIHRoZSB0YWlscyBvZiB0aGUgcHJlLWV4aXN0aW5nIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChjb25zIHggaGVhZHMsIGRpYWdvbmFscyAoY29ucyB4cyB0YWlscykgeHNzKVxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBlbXB0eSByb3cuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaWFnb25hbCBpc1xuICAgICAgICAgICAgIGp1c3QgW2hlYWRzXSwgYW5kIFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBqdXN0IFt0YWlsc10sXG4gICAgICAgICAgICAgYXMgd2UgZG8gbm90IGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoaGVhZHMsIGRpYWdvbmFscyB0YWlscyB4c3MpXG4gICAgICBlbmRcbiAgfCBOaWwgLT5cbiAgICAgICgqIFRoZXJlIGFyZSBubyBtb3JlIHJvd3MgdG8gYmUgZGlzY292ZXJlZC4gVGhlcmUgcmVtYWlucyB0byBleGhhdXN0XG4gICAgICAgICB0aGUgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICB0cmFuc3Bvc2UgcmVtYWluZGVycyAoKVxuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbZGlhZ29uYWxzIHhzc10gaXNcbiAgIHRoZSBzZXF1ZW5jZSBvZiBpdHMgZGlhZ29uYWxzLlxuXG4gICBUaGUgZmlyc3QgZGlhZ29uYWwgY29udGFpbnMganVzdCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIGZpcnN0IHJvdy4gVGhlIHNlY29uZCBkaWFnb25hbCBjb250YWlucyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIHNlY29uZCByb3cgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgZmlyc3Qgcm93OyBhbmQgc28gb24uXG4gICBUaGlzIGtpbmQgb2YgZGlhZ29uYWwgaXMgaW4gZmFjdCBzb21ldGltZXMga25vd24gYXMgYW4gYW50aWRpYWdvbmFsLlxuXG4gICAtIEV2ZXJ5IGRpYWdvbmFsIGlzIGEgZmluaXRlIHNlcXVlbmNlLlxuICAgLSBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG4gICAtIFRoZSBtYXRyaXggW3hzc10gaXMgbm90IHJlcXVpcmVkIHRvIGJlIGZpbml0ZSAoaW4gZWl0aGVyIGRpcmVjdGlvbikuXG4gICAtIFRoZSBtYXRyaXggW3hzc10gbXVzdCBiZSBwZXJzaXN0ZW50LiAqKVxuXG5sZXQgZGlhZ29uYWxzIHhzcyA9XG4gIGRpYWdvbmFscyBlbXB0eSB4c3NcblxubGV0IG1hcF9wcm9kdWN0IGYgeHMgeXMgPVxuICBjb25jYXQgKGRpYWdvbmFscyAoXG4gICAgbWFwIChmdW4geCAtPlxuICAgICAgbWFwIChmdW4geSAtPlxuICAgICAgICBmIHggeVxuICAgICAgKSB5c1xuICAgICkgeHNcbiAgKSlcblxubGV0IHByb2R1Y3QgeHMgeXMgPVxuICBtYXBfcHJvZHVjdCAoZnVuIHggeSAtPiAoeCwgeSkpIHhzIHlzXG5cbmxldCBvZl9kaXNwZW5zZXIgaXQgPVxuICBsZXQgcmVjIGMgKCkgPVxuICAgIG1hdGNoIGl0KCkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBOaWxcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBDb25zICh4LCBjKVxuICBpblxuICBjXG5cbmxldCB0b19kaXNwZW5zZXIgeHMgPVxuICBsZXQgcyA9IHJlZiB4cyBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAoIXMpKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBzIDo9IHhzO1xuICAgICAgICBTb21lIHhcblxuXG5cbmxldCByZWMgaW50cyBpICgpID1cbiAgQ29ucyAoaSwgaW50cyAoaSArIDEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcblxuKCogVVRGIGNvZGVjcyB0b29scyAqKVxuXG50eXBlIHV0Zl9kZWNvZGUgPSBpbnRcbigqIFRoaXMgaXMgYW4gaW50IFsweERVVVVVVVVdIGRlY29tcG9zZWQgYXMgZm9sbG93czpcbiAgIC0gW0RdIGlzIGZvdXIgYml0cyBmb3IgZGVjb2RlIGluZm9ybWF0aW9uLCB0aGUgaGlnaGVzdCBiaXQgaXMgc2V0IGlmIHRoZVxuICAgICBkZWNvZGUgaXMgdmFsaWQuIFRoZSB0aHJlZSBsb3dlciBiaXRzIGluZGljYXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgICAgZnJvbSB0aGUgc291cmNlIHRoYXQgd2VyZSBjb25zdW1lZCBieSB0aGUgZGVjb2RlLlxuICAgLSBbVVVVVVVVXSBpcyB0aGUgZGVjb2RlZCBVbmljb2RlIGNoYXJhY3RlciBvciB0aGUgVW5pY29kZSByZXBsYWNlbWVudFxuICAgICBjaGFyYWN0ZXIgVStGRkZEIGlmIGZvciBpbnZhbGlkIGRlY29kZXMuICopXG5cbmxldCB2YWxpZF9iaXQgPSAyN1xubGV0IGRlY29kZV9iaXRzID0gMjRcblxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaXNfdmFsaWQgZCA9IChkIGxzciB2YWxpZF9iaXQpID0gMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfbGVuZ3RoIGQgPSAoZCBsc3IgZGVjb2RlX2JpdHMpIGxhbmQgMGIxMTFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX3VjaGFyIGQgPSB1bnNhZmVfb2ZfaW50IChkIGxhbmQgMHhGRkZGRkYpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZSBuIHUgPSAoKDggbG9yIG4pIGxzbCBkZWNvZGVfYml0cykgbG9yICh0b19pbnQgdSlcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2ludmFsaWQgbiA9IChuIGxzbCBkZWNvZGVfYml0cykgbG9yIHJlcFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+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+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG5cbigqKiB7MSBDb21wYXJpc29ufSAqKVxuXG4oKiBOb3RlOiB3ZSBhcmUgKm5vdCogc2hvcnRjdXR0aW5nIHRoZSBsaXN0IGJ5IHVzaW5nXG4gICBbTGlzdC5jb21wYXJlX2xlbmd0aHNdIGZpcnN0OyB0aGlzIG1heSBiZSBzbG93ZXIgb24gbG9uZyBsaXN0c1xuICAgaW1tZWRpYXRlbHkgc3RhcnQgd2l0aCBkaXN0aW5jdCBlbGVtZW50cy4gSXQgaXMgYWxzbyBpbmNvcnJlY3QgZm9yXG4gICBbY29tcGFyZV0gYmVsb3csIGFuZCBpdCBpcyBiZXR0ZXIgKHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZSkgdG9cbiAgIHVzZSB0aGUgc2FtZSBhcHByb2FjaCBmb3IgYm90aCBmdW5jdGlvbnMuICopXG5sZXQgcmVjIGVxdWFsIGVxIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gdHJ1ZVxuICB8IFtdLCBfOjpfIHwgXzo6XywgW10gLT4gZmFsc2VcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPiBlcSBhMSBhMiAmJiBlcXVhbCBlcSBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfOjpfIC0+IC0xXG4gIHwgXzo6XywgW10gLT4gMVxuICB8IGExOjpsMSwgYTI6OmwyIC0+XG4gICAgbGV0IGMgPSBjbXAgYTEgYTIgaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjXG4gICAgZWxzZSBjb21wYXJlIGNtcCBsMSBsMlxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGwgPVxuICBsZXQgcmVjIGF1eCBsICgpID0gbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBTZXEuTmlsXG4gICAgfCB4IDo6IHRhaWwgLT4gU2VxLkNvbnMgKHgsIGF1eCB0YWlsKVxuICBpblxuICBhdXggbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCByZWMgZGlyZWN0IGRlcHRoIHNlcSA6IF8gbGlzdCA9XG4gICAgaWYgZGVwdGg9MFxuICAgIHRoZW5cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIHNlcVxuICAgICAgfD4gcmV2ICgqIHRhaWxyZWMgKilcbiAgICBlbHNlIG1hdGNoIHNlcSgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbXVxuICAgICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT4geCA6OiBkaXJlY3QgKGRlcHRoLTEpIG5leHRcbiAgaW5cbiAgZGlyZWN0IDUwMCBzZXFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgdW5zYWZlX2VzY2FwZSBzID1cbiAgKCogV2UgcGVyZm9ybSB0d28gcGFzc2VzIG9uIHRoZSBpbnB1dCBzZXF1ZW5jZSwgb25lIHRvIGNvbXB1dGUgdGhlXG4gICAgIHJlc3VsdCBzaXplIGFuZCBvbmUgdG8gd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgICAjMTE1MDgsICMxMTUwOTogVGhpcyBsb2dpYyB3b3VsZCBiZSBpbmNvcnJlY3QgaW4gcHJlc2VuY2Ugb2ZcbiAgICAgY29uY3VycmVudCBtb2RpZmljYXRpb24gdG8gdGhlIGlucHV0LCBtYWtpbmcgdGhlIHVzZSBvZlxuICAgICBbdW5zYWZlX3NldF0gYmVsb3cgbWVtb3J5LXVuc2FmZS5cblxuICAgICBQcmVjb25kaXRpb246IFRoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgb246XG4gICAgIC0gYW4gaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2VcbiAgICAgLSBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgKHRoZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXApXG5cbiAgICAgSW4gZWl0aGVyIGNhc2Ugd2UgcmV0dXJuIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZS5cbiAgKilcbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBzXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgZXNjYXBlZCBiID1cbiAgbGV0IGIgPSBjb3B5IGIgaW5cbiAgKCogV2UgY29weSBvdXIgaW5wdXQgdG8gb2J0YWluIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSBbYl1cbiAgICAgdG8gc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gKilcbiAgdW5zYWZlX2VzY2FwZSBiXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBiID0gYm9zIHMgaW5cbiAgKCogV2Ugc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gYnkgcGFzc2luZyBhblxuICAgICBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZSBbYl0uICopXG4gIGJ0cyAoQi51bnNhZmVfZXNjYXBlIGIpXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zdHJpbmdfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2ggMCB4XG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiBVVEYgZGVjb2RlcnMgYW5kIHZhbGlkYXRvcnMgKilcblxubGV0IGdldF91dGZfOF91Y2hhciBzIGkgPSBCLmdldF91dGZfOF91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfOCBzID0gQi5pc192YWxpZF91dGZfOCAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2YmVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2YmUgKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmxlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmxlIChib3MgcylcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMjBcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwMiBmIGEgYiA9XG4gIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gIGlmIGxhIDw+IGxiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZSBiZWdpblxuICAgIGlmIGxhID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgKGYgKHVuc2FmZV9nZXQgYSAwKSAodW5zYWZlX2dldCBiIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuICBlbmRcblxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgbWFwaSBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZiAwICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHJlYyB0b2xpc3QgaSByZXMgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmVzIGVsc2UgdG9saXN0IChpIC0gMSkgKHVuc2FmZV9nZXQgYSBpIDo6IHJlcykgaW5cbiAgdG9saXN0IChsZW5ndGggYSAtIDEpIFtdXG5cbigqIENhbm5vdCB1c2UgTGlzdC5sZW5ndGggaGVyZSBiZWNhdXNlIHRoZSBMaXN0IG1vZHVsZSBkZXBlbmRzIG9uIEFycmF5LiAqKVxubGV0IHJlYyBsaXN0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2N1XG4gIHwgXzo6dCAtPiBsaXN0X2xlbmd0aCAoc3VjYyBhY2N1KSB0XG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBhID0gY3JlYXRlIChsaXN0X2xlbmd0aCAwIGwpIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaSsxKSB0bCBpblxuICAgICAgZmlsbCAxIHRsXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjYyBpbnB1dF9hcnJheSA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXRfYXJyYXkgaW5cbiAgaWYgbGVuID0gMCB0aGVuIChhY2MsIFt8fF0pIGVsc2UgYmVnaW5cbiAgICBsZXQgYWNjLCBlbHQgPSBmIGFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSAwKSBpblxuICAgIGxldCBvdXRwdXRfYXJyYXkgPSBjcmVhdGUgbGVuIGVsdCBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBhY2MnLCBlbHQgPSBmICFhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgaSkgaW5cbiAgICAgIGFjYyA6PSBhY2MnO1xuICAgICAgdW5zYWZlX3NldCBvdXRwdXRfYXJyYXkgaSBlbHQ7XG4gICAgZG9uZTtcbiAgICAhYWNjLCBvdXRwdXRfYXJyYXlcbiAgZW5kXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5mb3JfYWxsMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGV4aXN0czIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmV4aXN0czJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW0geCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbXEgeCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgeCA9PSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZpbmRfb3B0IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgZWxzZSBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB4ID1cbiAgaWYgeCA9IFt8fF0gdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYTAsIGIwID0gdW5zYWZlX2dldCB4IDAgaW5cbiAgICBsZXQgbiA9IGxlbmd0aCB4IGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbiBhMCBpblxuICAgIGxldCBiID0gY3JlYXRlIG4gYjAgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBhaSwgYmkgPSB1bnNhZmVfZ2V0IHggaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgYWk7XG4gICAgICB1bnNhZmVfc2V0IGIgaSBiaVxuICAgIGRvbmU7XG4gICAgYSwgYlxuICBlbmRcblxubGV0IGNvbWJpbmUgYSBiID1cbiAgbGV0IG5hID0gbGVuZ3RoIGEgaW5cbiAgbGV0IG5iID0gbGVuZ3RoIGIgaW5cbiAgaWYgbmEgPD4gbmIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmNvbWJpbmVcIjtcbiAgaWYgbmEgPSAwIHRoZW4gW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHggPSBjcmVhdGUgbmEgKHVuc2FmZV9nZXQgYSAwLCB1bnNhZmVfZ2V0IGIgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbmEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHggaSAodW5zYWZlX2dldCBhIGksIHVuc2FmZV9nZXQgYiBpKVxuICAgIGRvbmU7XG4gICAgeFxuICBlbmRcblxuZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbmxldCBzb3J0IGNtcCBhID1cbiAgbGV0IG1heHNvbiBsIGkgPVxuICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgIXhcbiAgICBlbmQgZWxzZVxuICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICB0aGVuIGkzMSsxXG4gICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gIGluXG4gIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgYnViYmxlZG93biBsIGpcbiAgaW5cbiAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICBkb25lO1xuICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG5cbmxldCBjdXRvZmYgPSA1XG5sZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgIGVuZFxuICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICBpblxuICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICBkZWNyIGo7XG4gICAgICBkb25lO1xuICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgIGRvbmU7XG4gIGluXG4gIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICBsZXQgdCA9IG1ha2UgbDIgKGdldCBhIDApIGluXG4gICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gIGVuZFxuXG5cbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9yZXZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgbGVuID0gbGlzdF9sZW5ndGggMCBsIGluXG4gICAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgICBpblxuICAgICAgZmlsbCAobGVuLTIpIHRsXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICBvZl9yZXZfbGlzdCBsXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgIE5pY29sYXMgT2plZGEgQmFyLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIG5lZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgYWRkIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCBzdWIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsIG11bCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgZGl2IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCByZW0gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZtYSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2ZtYV9mbG9hdFwiIFwiY2FtbF9mbWFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IGluZmluaXR5ID0gU3RkbGliLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gU3RkbGliLm5lZ19pbmZpbml0eVxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpc19maW5pdGUgKHg6IGZsb2F0KSA9IHggLS4geCA9IDAuXG5sZXQgaXNfaW5maW5pdGUgKHg6IGZsb2F0KSA9IDEuIC8uIHggPSAwLlxubGV0IGlzX25hbiAoeDogZmxvYXQpID0geCA8PiB4XG5cbmxldCBwaSA9IDB4MS45MjFmYjU0NDQyZDE4cCsxXG5sZXQgbWF4X2Zsb2F0ID0gU3RkbGliLm1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IFN0ZGxpYi5taW5fZmxvYXRcbmxldCBlcHNpbG9uID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Zsb2F0XG50eXBlIGZwY2xhc3MgPSBTdGRsaWIuZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcG93IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjYnJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2JydF9mbG9hdFwiIFwiY2FtbF9jYnJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cDIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHAyX2Zsb2F0XCIgXCJjYW1sX2V4cDJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzJfZmxvYXRcIiBcImNhbWxfbG9nMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmX2Zsb2F0XCIgXCJjYW1sX2VyZlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmZjIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmY19mbG9hdFwiIFwiY2FtbF9lcmZjXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRydW5jIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdHJ1bmNfZmxvYXRcIiBcImNhbWxfdHJ1bmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcm91bmQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9yb3VuZF9mbG9hdFwiIFwiY2FtbF9yb3VuZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG5bQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgaXNfaW50ZWdlciB4ID0geCA9IHRydW5jIHggJiYgaXNfZmluaXRlIHhcblxuZXh0ZXJuYWwgbmV4dF9hZnRlciA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gID0gXCJjYW1sX25leHRhZnRlcl9mbG9hdFwiIFwiY2FtbF9uZXh0YWZ0ZXJcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgc3VjYyB4ID0gbmV4dF9hZnRlciB4IGluZmluaXR5XG5sZXQgcHJlZCB4ID0gbmV4dF9hZnRlciB4IG5lZ19pbmZpbml0eVxuXG5leHRlcm5hbCBjb3B5X3NpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpZ25fYml0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGJvb2xcbiAgPSBcImNhbWxfc2lnbmJpdF9mbG9hdFwiIFwiY2FtbF9zaWduYml0XCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbnR5cGUgdCA9IGZsb2F0XG5leHRlcm5hbCBjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgZXF1YWwgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldFtAaW5saW5lXSBtaW4gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB8fCBpc19uYW4geSB0aGVuIChuYW4sIG5hbilcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgsIHkpIGVsc2UgKHksIHgpXG5cbmxldFtAaW5saW5lXSBtaW5fbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB0aGVuICh5LHkpXG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiAoeCx4KVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCx5KSBlbHNlICh5LHgpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiBpbnQgLT4gZmxvYXQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IGZsb2F0YXJyYXlcblxuICBleHRlcm5hbCBsZW5ndGggOiB0IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICBsZXQgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGZvciBpID0gb2ZzIHRvIG9mcyArIGxlbiAtIDEgZG8gdW5zYWZlX3NldCBhIGkgdiBkb25lXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXQ6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID1cbiAgICBcImNhbWxfZmxvYXRhcnJheV9ibGl0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IG1ha2UgbiB2ID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIG4gaW5cbiAgICB1bnNhZmVfZmlsbCByZXN1bHQgMCBuIHY7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGluaXQgbCBmID1cbiAgICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdFwiXG4gICAgZWxzZVxuICAgICAgbGV0IHJlcyA9IGNyZWF0ZSBsIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgICAgZG9uZTtcbiAgICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gIGxldCBtYXAyIGYgYSBiID1cbiAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gICAgaWYgbGEgPD4gbGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXJpIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgbGV0IG1hcGkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICAgICAgU29tZSAodG9faW50IG4pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gIHwgNjQgLT5cbiAgICAgICgqIFNvIHRoYXQgaXQgY29tcGlsZXMgaW4gMzItYml0ICopXG4gICAgICBsZXQgbWFzayA9IDB4RkZGRiBsc2wgMTYgbG9yIDB4RkZGRiBpblxuICAgICAgZnVuIG4gLT4gU29tZSAodG9faW50IG4gbGFuZCBtYXNrKVxuICB8IF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZzogc3RyaW5nIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzdWJzZXQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIGZvcl9hbGw6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiAga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbigqIFRoZSBbaW5uZXJfYnVmZmVyXSB0eXBlIGVuc3VyZXMgdGhhdCB0aGUgW2xlbmd0aF0gYW5kIFtidWZmZXJdIGZpZWxkcyBhcmVcbiAgIGFsd2F5cyBzeW5jaHJvbml6ZWQsIFtsZW5ndGggPSBCeXRlcy5sZW5ndGggYnVmZmVyXSwgZXZlbiBpbiBwcmVzZW5jZVxuICAgb2YgZGF0YSByYWNlcy5cbiopXG50eXBlIGlubmVyX2J1ZmZlciA9IHtcbiAgYnVmZmVyOiBieXRlcztcbiAgbGVuZ3RoOiBpbnQ7XG59XG5cbnR5cGUgdCA9XG4ge211dGFibGUgaW5uZXIgOiBpbm5lcl9idWZmZXI7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gW2lubmVyLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBpbm5lci5idWZmZXJdXG4gICBJbiBhYnNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIGFsc28gaGF2ZVxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIuaW5uZXIubGVuZ3RoXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIuaW5uZXIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHsgaW5uZXIgPSB7IGJ1ZmZlciA9IHM7IGxlbmd0aCA9IG59OyBwb3NpdGlvbiA9IDA7IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLmJsaXQgc3JjLmlubmVyLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBwb3NpdGlvbiB8fCBwb3NpdGlvbiA+IGxlbmd0aCB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGxldCBpbm5lciA9XG4gICAgeyBidWZmZXIgPSBiLmluaXRpYWxfYnVmZmVyOyBsZW5ndGggPSBCeXRlcy5sZW5ndGggYi5pbml0aWFsX2J1ZmZlciB9XG4gIGluXG4gIGIuaW5uZXIgPC0gaW5uZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5pbm5lci5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuaW5uZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5pbm5lci5sZW5ndGhdLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5pbm5lci5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuaW5uZXIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuaW5uZXIgPC0geyBidWZmZXIgPSBuZXdfYnVmZmVyOyBsZW5ndGggPSAhbmV3X2xlbiB9XG5cbigqIE5vdGU6XG4gICAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IGhhdmUgYSBmYXN0IHBhdGggd2hlbiB0aGUgaW5uZXJcbiAgYnVmZmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBleHRlbmRlZC5cbiAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB1bnNhZmUgYWNjZXNzZXMgb24gdGhlXG4gIGNvbnRlbnRzIG9mIHRoZSBbaW5uZXJdIGZpZWxkIHNpbmNlIGl0cyBmaWVsZHMgYXJlIGltbXV0YWJsZS5cbiAgSW4gcHJlc2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgbWF5IGFjY2VzcyB0aGUgd3JvbmcgaW5uZXIgYnVmZmVyLCBidXQgd2VcbiAgd2lsbCB1c2UgdGhpcyBidWZmZXIgc2FmZWx5LlxuICBBcyBzb29uIGFzIHdlIG5lZWQgdG8gcmVzaXplIHRoZSBidWZmZXIsIHdlIGZhbGwgYmFjayB0byBzYWZlIGFjY2Vzc2VzLlxuKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIHBvcyA+PSBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBCeXRlcy5zZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBjXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxubGV0IHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCA9IDRcbmxldCB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4ID0gNFxuXG5sZXQgcmVjIGFkZF91dGZfOF91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl84X3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl84X3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZiZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmxlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZsZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjsgbGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIDAgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIDAgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmlubmVyLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHRoaXMgKHByaXZhdGUpIGZ1bmN0aW9uIGNvdWxkIG1vdmUgaW50byB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxubGV0IHJlYWxseV9pbnB1dF91cF90byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkID1cbiAgICBpZiB0b19yZWFkID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIG9mcyB0b19yZWFkIGluXG4gICAgICBpZiByID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYWxyZWFkeV9yZWFkID0gYWxyZWFkeV9yZWFkICsgciBpblxuICAgICAgICBsZXQgb2ZzID0gb2ZzICsgciBpblxuICAgICAgICBsZXQgdG9fcmVhZCA9IHRvX3JlYWQgLSByIGluXG4gICAgICAgIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQ6MCB+b2ZzIH50b19yZWFkOmxlblxuXG5cbmxldCB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gPVxuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGxldCBuID0gcmVhbGx5X2lucHV0X3VwX3RvIGljIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuIGluXG4gIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gIG5cblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBsZXQgbiA9IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiBpblxuICAoKiBJdCBpcyBpbnRlbnRpb25hbCB0aGF0IGEgY29uc3VtZXIgY2F0Y2hpbmcgRW5kX29mX2ZpbGVcbiAgICAgd2lsbCBzZWUgdGhlIGRhdGEgd3JpdHRlbiAoc2VlICM2NzE5LCAjNzEzNikuICopXG4gIGlmIG4gPCBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgKClcblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIGlmIHMuW2ldID0gb3BlbmluZyB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbSBlbHNlXG4gICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyB8ICdfJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgfCBfIC0+IGkgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgIFN0cmluZy5zdWIgcyBzdGFydCAoc3RvcCAtIHN0YXJ0KSwgc3RvcFxuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbSB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICAgbGV0IGogPSBpICsgMSBpblxuICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICBzdWJzdCAnICcgMFxuXG5sZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJCdWZmZXIudHJ1bmNhdGVcIlxuICAgIGVsc2VcbiAgICAgIGIucG9zaXRpb24gPC0gbGVuXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy5nZXQgYi5pbm5lci5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy5nZXQgYi5pbm5lci5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBhZGRfc2VxIGIgc2VxID0gU2VxLml0ZXIgKGFkZF9jaGFyIGIpIHNlcVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgYiA9IGNyZWF0ZSAzMiBpblxuICBhZGRfc2VxIGIgaTtcbiAgYlxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cblxubGV0IGFkZF9pbnQ4IGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDEgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgc2V0X2ludDggYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50OCBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9uZSBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAyIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAyO1xuICAgIHNldF9pbnQxNiBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQxNiBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQzMl9uZSBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyA0IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiA0O1xuICAgIHNldF9pbnQzMiBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQzMiBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQ2NF9uZSBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyA4IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiA4O1xuICAgIHNldF9pbnQ2NCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ2NCBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9sZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MTZfYmUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuXG5sZXQgYWRkX2ludDMyX2xlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQzMl9iZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG5cbmxldCBhZGRfaW50NjRfbGUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDY0X2JlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcblxubGV0IGFkZF91aW50OCA9IGFkZF9pbnQ4XG5sZXQgYWRkX3VpbnQxNl9uZSA9IGFkZF9pbnQxNl9uZVxubGV0IGFkZF91aW50MTZfbGUgPSBhZGRfaW50MTZfbGVcbmxldCBhZGRfdWludDE2X2JlID0gYWRkX2ludDE2X2JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIENvbGzDqGdlIGRlIEZyYW5jZSBhbmQgSU5SSUEgUGFyaXMgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogU2VtYXBob3JlcyAqKVxuXG50eXBlIHNlbSA9IHtcbiAgbXV0OiBNdXRleC50OyAgICAgICAgICAgICAgICAgICAgICAgICAoKiBwcm90ZWN0cyBbdl0gKilcbiAgbXV0YWJsZSB2OiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAoKiB0aGUgY3VycmVudCB2YWx1ZSAqKVxuICBub256ZXJvOiBDb25kaXRpb24udCAgICAgICAgICAgICAgICAgICgqIHNpZ25hbGVkIHdoZW4gW3YgPiAwXSAqKVxufVxuXG5tb2R1bGUgQ291bnRpbmcgPSBzdHJ1Y3RcblxudHlwZSB0ID0gc2VtXG5cbmxldCBtYWtlIHYgPVxuICBpZiB2IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VtYXBob3JlLkNvdW50aW5nLmluaXQ6IHdyb25nIGluaXRpYWwgdmFsdWVcIjtcbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTsgdjsgbm9uemVybyA9IENvbmRpdGlvbi5jcmVhdGUoKSB9XG5cbmxldCByZWxlYXNlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBpZiBzLnYgPCBtYXhfaW50IHRoZW4gYmVnaW5cbiAgICBzLnYgPC0gcy52ICsgMTtcbiAgICBDb25kaXRpb24uc2lnbmFsIHMubm9uemVybztcbiAgICBNdXRleC51bmxvY2sgcy5tdXRcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gICAgcmFpc2UgKFN5c19lcnJvciBcIlNlbWFwaG9yZS5Db3VudGluZy5yZWxlYXNlOiBvdmVyZmxvd1wiKVxuICBlbmRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSBzLnYgLSAxO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSBzLnYgLSAxOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5sZXQgZ2V0X3ZhbHVlIHMgPSBzLnZcblxuZW5kXG5cbm1vZHVsZSBCaW5hcnkgPSBzdHJ1Y3RcblxudHlwZSB0ID0gc2VtXG5cbmxldCBtYWtlIGIgPVxuICB7IG11dCA9IE11dGV4LmNyZWF0ZSgpO1xuICAgIHYgPSBpZiBiIHRoZW4gMSBlbHNlIDA7XG4gICAgbm9uemVybyA9IENvbmRpdGlvbi5jcmVhdGUoKSB9XG5cbmxldCByZWxlYXNlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBzLnYgPC0gMTtcbiAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgd2hpbGUgcy52ID0gMCBkbyBDb25kaXRpb24ud2FpdCBzLm5vbnplcm8gcy5tdXQgZG9uZTtcbiAgcy52IDwtIDA7XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgdHJ5X2FjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGxldCByZXQgPSBpZiBzLnYgPSAwIHRoZW4gZmFsc2UgZWxzZSAocy52IDwtIDA7IHRydWUpIGluXG4gIE11dGV4LnVubG9jayBzLm11dDtcbiAgcmV0XG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICBLQyBTaXZhcmFtYWtyaXNobmFuLCBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFN0ZXBoZW4gRG9sYW4sIFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgVG9tIEtlbGx5LCBPQ2FtbCBMYWJzIENvbnN1bHRhbmN5ICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBPQ2FtbCBMYWJzIENvbnN1bHRhbmN5IEx0ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gICgqIExvdy1sZXZlbCBwcmltaXRpdmVzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lICopXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50XG4gIGV4dGVybmFsIHNwYXduIDogKHVuaXQgLT4gdW5pdCkgLT4gTXV0ZXgudCAtPiB0XG4gICAgPSBcImNhbWxfZG9tYWluX3NwYXduXCJcbiAgZXh0ZXJuYWwgc2VsZiA6IHVuaXQgLT4gdFxuICAgID0gXCJjYW1sX21sX2RvbWFpbl9pZFwiXG4gIGV4dGVybmFsIGNwdV9yZWxheCA6IHVuaXQgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcIlxuICBleHRlcm5hbCBnZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50OiB1bml0IC0+IGludFxuICAgID0gXCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFwiIFtAQG5vYWxsb2NdXG5lbmRcblxubGV0IGNwdV9yZWxheCAoKSA9IFJhdy5jcHVfcmVsYXggKClcblxudHlwZSBpZCA9IFJhdy50XG5cbnR5cGUgJ2Egc3RhdGUgPVxufCBSdW5uaW5nXG58IEZpbmlzaGVkIG9mICgnYSwgZXhuKSByZXN1bHRcblxudHlwZSAnYSB0ID0ge1xuICBkb21haW4gOiBSYXcudDtcbiAgdGVybV9tdXRleDogTXV0ZXgudDtcbiAgdGVybV9jb25kaXRpb246IENvbmRpdGlvbi50O1xuICB0ZXJtX3N0YXRlOiAnYSBzdGF0ZSByZWYgKCogcHJvdGVjdGVkIGJ5IFt0ZXJtX211dGV4XSAqKVxufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgdHlwZSBkbHNfc3RhdGUgPSBPYmoudCBhcnJheVxuXG4gIGxldCB1bmlxdWVfdmFsdWUgPSBPYmoucmVwciAocmVmIDApXG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjcmVhdGVfZGxzICgpID1cbiAgICBsZXQgc3QgPSBBcnJheS5tYWtlIDggdW5pcXVlX3ZhbHVlIGluXG4gICAgc2V0X2Rsc19zdGF0ZSBzdFxuXG4gIGxldCBfID0gY3JlYXRlX2RscyAoKVxuXG4gIHR5cGUgJ2Ega2V5ID0gaW50ICogKHVuaXQgLT4gJ2EpXG5cbiAgbGV0IGtleV9jb3VudGVyID0gQXRvbWljLm1ha2UgMFxuXG4gIHR5cGUga2V5X2luaXRpYWxpemVyID1cbiAgICBLSTogJ2Ega2V5ICogKCdhIC0+ICdhKSAtPiBrZXlfaW5pdGlhbGl6ZXJcblxuICBsZXQgcGFyZW50X2tleXMgPSBBdG9taWMubWFrZSAoW10gOiBrZXlfaW5pdGlhbGl6ZXIgbGlzdClcblxuICBsZXQgcmVjIGFkZF9wYXJlbnRfa2V5IGtpID1cbiAgICBsZXQgbCA9IEF0b21pYy5nZXQgcGFyZW50X2tleXMgaW5cbiAgICBpZiBub3QgKEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcGFyZW50X2tleXMgbCAoa2kgOjogbCkpXG4gICAgdGhlbiBhZGRfcGFyZW50X2tleSBraVxuXG4gIGxldCBuZXdfa2V5ID9zcGxpdF9mcm9tX3BhcmVudCBpbml0X29ycGhhbiA9XG4gICAgbGV0IGlkeCA9IEF0b21pYy5mZXRjaF9hbmRfYWRkIGtleV9jb3VudGVyIDEgaW5cbiAgICBsZXQgayA9IChpZHgsIGluaXRfb3JwaGFuKSBpblxuICAgIGJlZ2luIG1hdGNoIHNwbGl0X2Zyb21fcGFyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc3BsaXQgLT4gYWRkX3BhcmVudF9rZXkgKEtJKGssIHNwbGl0KSlcbiAgICBlbmQ7XG4gICAga1xuXG4gICgqIElmIG5lY2Vzc2FyeSwgZ3JvdyB0aGUgY3VycmVudCBkb21haW4ncyBsb2NhbCBzdGF0ZSBhcnJheSBzdWNoIHRoYXQgW2lkeF1cbiAgICogaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkuICopXG4gIGxldCBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiB1bmlxdWVfdmFsdWUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgIHNldF9kbHNfc3RhdGUgbmV3X3N0O1xuICAgICAgbmV3X3N0XG4gICAgZW5kXG5cbiAgbGV0IHNldCAoaWR4LCBfaW5pdCkgeCA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmoucmVwciAoU3lzLm9wYXF1ZV9pZGVudGl0eSB4KVxuXG4gIGxldCBnZXQgKGlkeCwgaW5pdCkgPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgbGV0IHYgPSBzdC4oaWR4KSBpblxuICAgIGlmIHYgPT0gdW5pcXVlX3ZhbHVlIHRoZW5cbiAgICAgIGxldCB2JyA9IE9iai5yZXByIChpbml0ICgpKSBpblxuICAgICAgc3QuKGlkeCkgPC0gKFN5cy5vcGFxdWVfaWRlbnRpdHkgdicpO1xuICAgICAgT2JqLm1hZ2ljIHYnXG4gICAgZWxzZSBPYmoubWFnaWMgdlxuXG4gIGxldCBnZXRfaW5pdGlhbF9rZXlzICgpIDogKGludCAqIE9iai50KSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKChpZHgsIF8pIGFzIGssIHNwbGl0KSkgLT5cbiAgICAgICAgICAgKGlkeCwgT2JqLnJlcHIgKHNwbGl0IChnZXQgaykpKSlcbiAgICAgIChBdG9taWMuZ2V0IHBhcmVudF9rZXlzKVxuXG4gIGxldCBzZXRfaW5pdGlhbF9rZXlzIChsOiAoaW50ICogT2JqLnQpIGxpc3QpID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKGlkeCwgdikgLT5cbiAgICAgICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW4gc3QuKGlkeCkgPC0gdilcbiAgICAgIGxcblxuZW5kXG5cbigqKioqKioqKiBJZGVudGl0eSAqKioqKioqKioqKVxuXG5sZXQgZ2V0X2lkIHsgZG9tYWluOyBfIH0gPSBkb21haW5cblxubGV0IHNlbGYgKCkgPSBSYXcuc2VsZiAoKVxuXG5sZXQgaXNfbWFpbl9kb21haW4gKCkgPSAoc2VsZiAoKSA6PiBpbnQpID0gMFxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgICgqIFRoZSBkb21haW4gdGVybWluYXRpb24gY2FsbGJhY2tzIChbYXRfZXhpdF0pIGFyZSBydW4gaW5cbiAgICAgICBsYXN0LWluLWZpcnN0LW91dCAoTElGTykgb3JkZXIgaW4gb3JkZXIgdG8gYmUgc3ltbWV0cmljIHdpdGggdGhlIGRvbWFpblxuICAgICAgIGNyZWF0aW9uIGNhbGxiYWNrcyAoW2F0X2VhY2hfc3Bhd25dKSB3aGljaCBydW4gaW4gZmlyc3QtaW4tZmlzcnQtb3V0XG4gICAgICAgKEZJRk8pIG9yZGVyLiAqKVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogVGhlIFt0ZXJtX211dGV4XSBhbmQgW3Rlcm1fY29uZGl0aW9uXSBhcmUgdXNlZCB0b1xuICAgICBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fbXV0ZXggPSBNdXRleC5jcmVhdGUgKCkgaW5cbiAgbGV0IHRlcm1fY29uZGl0aW9uID0gQ29uZGl0aW9uLmNyZWF0ZSAoKSBpblxuICBsZXQgdGVybV9zdGF0ZSA9IHJlZiBSdW5uaW5nIGluXG5cbiAgbGV0IGJvZHkgKCkgPVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgRExTLmNyZWF0ZV9kbHMgKCk7XG4gICAgICAgIERMUy5zZXRfaW5pdGlhbF9rZXlzIHBrO1xuICAgICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgICByZXNcbiAgICAgIHdpdGhcbiAgICAgIHwgeCAtPiBPayB4XG4gICAgICB8IGV4Y2VwdGlvbiBleCAtPiBFcnJvciBleFxuICAgIGluXG5cbiAgICBsZXQgcmVzdWx0JyA9XG4gICAgICAoKiBSdW4gdGhlIFthdF9leGl0XSBjYWxsYmFja3Mgd2hlbiB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIGVpdGhlclxuICAgICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgICAgbWF0Y2ggZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8ICgpIC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gZXggLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgXyAtPlxuICAgICAgICAgICAgICAoKiBJZiB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIHRlcm1pbmF0ZWQgbm9ybWFsbHksIGJ1dCB0aGVcbiAgICAgICAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyByYWlzZWQgYW4gZXhjZXB0aW9uLCB0aGVuIHJldHVybiB0aGVcbiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uLiAqKVxuICAgICAgICAgICAgICBFcnJvciBleFxuICAgICAgICAgIHwgRXJyb3IgXyAtPlxuICAgICAgICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgICAgICAgIHJhaXNlZCBleGNlcHRpb25zLCB0aGVuIGlnbm9yZSB0aGUgZXhjZXB0aW9uIGZyb20gdGhlXG4gICAgICAgICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgYW5kIHJldHVybiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLiAqKVxuICAgICAgICAgICAgICByZXN1bHRcbiAgICAgICAgICBlbmRcbiAgICBpblxuXG4gICAgKCogU3luY2hyb25pemUgd2l0aCBqb2luaW5nIGRvbWFpbnMgKilcbiAgICBNdXRleC5sb2NrIHRlcm1fbXV0ZXg7XG4gICAgbWF0Y2ggIXRlcm1fc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICB0ZXJtX3N0YXRlIDo9IEZpbmlzaGVkIHJlc3VsdCc7XG4gICAgICAgIENvbmRpdGlvbi5icm9hZGNhc3QgdGVybV9jb25kaXRpb247XG4gICAgfCBGaW5pc2hlZCBfIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiaW50ZXJuYWwgZXJyb3I6IEFtIEkgYWxyZWFkeSBmaW5pc2hlZD9cIlxuICAgICgqIFt0ZXJtX211dGV4XSBpcyB1bmxvY2tlZCBpbiB0aGUgcnVudGltZSBhZnRlciB0aGUgY2xlYW51cCBmdW5jdGlvbnMgb25cbiAgICAgICB0aGUgQyBzaWRlIGFyZSBmaW5pc2hlZC4gKilcbiAgaW5cbiAgeyBkb21haW4gPSBSYXcuc3Bhd24gYm9keSB0ZXJtX211dGV4O1xuICAgIHRlcm1fbXV0ZXg7XG4gICAgdGVybV9jb25kaXRpb247XG4gICAgdGVybV9zdGF0ZSB9XG5cbmxldCBqb2luIHsgdGVybV9tdXRleDsgdGVybV9jb25kaXRpb247IHRlcm1fc3RhdGU7IF8gfSA9XG4gIE11dGV4LmxvY2sgdGVybV9tdXRleDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCAhdGVybV9zdGF0ZSB3aXRoXG4gICAgfCBSdW5uaW5nIC0+XG4gICAgICAgIENvbmRpdGlvbi53YWl0IHRlcm1fY29uZGl0aW9uIHRlcm1fbXV0ZXg7XG4gICAgICAgIGxvb3AgKClcbiAgICB8IEZpbmlzaGVkIHJlcyAtPlxuICAgICAgICBNdXRleC51bmxvY2sgdGVybV9tdXRleDtcbiAgICAgICAgcmVzXG4gIGluXG4gIG1hdGNoIGxvb3AgKCkgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4IC0+IHJhaXNlIGV4XG5cbmxldCByZWNvbW1lbmRlZF9kb21haW5fY291bnQgPSBSYXcuZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAoKiBUb29scyB0byBtYW5pcHVsYXRlIHNjYW5uaW5nIHNldCBvZiBjaGFycyAoc2VlICVbLi4uXSkgKilcblxudHlwZSBtdXRhYmxlX2NoYXJfc2V0ID0gYnl0ZXNcblxuKCogQ3JlYXRlIGEgZnJlc2gsIGVtcHR5LCBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGNyZWF0ZV9jaGFyX3NldCAoKSA9IEJ5dGVzLm1ha2UgMzIgJ1xcMDAwJ1xuXG4oKiBBZGQgYSBjaGFyIGluIGEgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICBCeXRlcy5zZXQgY2hhcl9zZXQgc3RyX2luZFxuICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKEJ5dGVzLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsb3IgbWFzaykpXG5cbmxldCBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBCeXRlcy50b19zdHJpbmcgY2hhcl9zZXRcblxuKCogQ29tcHV0ZSB0aGUgY29tcGxlbWVudCBvZiBhIGNoYXIgc2V0LiAqKVxubGV0IHJldl9jaGFyX3NldCBjaGFyX3NldCA9XG4gIGxldCBjaGFyX3NldCcgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIDMxIGRvXG4gICAgQnl0ZXMuc2V0IGNoYXJfc2V0JyBpXG4gICAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IGkpIGx4b3IgMHhGRikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGNoYXJfc2V0J1xuXG4oKiBSZXR1cm4gdHJ1ZSBpZiBhIGBjJyBpcyBpbiBgY2hhcl9zZXQnLiAqKVxubGV0IGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxhbmQgbWFzaykgPD4gMFxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogSWdub3JlZCBwYXJhbSBjb252ZXJzaW9uICopXG5cbigqIEdBRFQgdXNlZCB0byBhYnN0cmFjdCBhbiBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlci4gKilcbigqIFNlZSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiID0gUGFyYW1fZm9ybWF0X0VCQiA6XG4gICAgKCd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiXG5cbigqIENvbXB1dGUgYSBwYWRkaW5nIGFzc29jaWF0ZWQgdG8gYSBwYWRfb3B0aW9uIChzZWUgXCIlXzQyZFwiKS4gKilcbmxldCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wYWRkaW5nXG4gIHwgU29tZSB3aWR0aCAtPiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuXG4oKiBDb21wdXRlIGEgcHJlY2lzaW9uIGFzc29jaWF0ZWQgdG8gYSBwcmVjX29wdGlvbiAoc2VlIFwiJV8uNDJmXCIpLiAqKVxubGV0IHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQgPSBtYXRjaCBwcmVjX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wcmVjaXNpb25cbiAgfCBTb21lIG5kZWMgLT4gTGl0X3ByZWNpc2lvbiBuZGVjXG5cbigqIFR1cm4gYW4gaWdub3JlZCBwYXJhbSBpbnRvIGl0cyBlcXVpdmFsZW50IG5vdC1pZ25vcmVkIGZvcm1hdCBub2RlLiAqKVxuKCogVXNlZCBmb3IgZm9ybWF0IHByZXR0eS1wcmludGluZyBhbmQgU2NhbmYuICopXG5sZXQgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+ICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYXJhbV9mb3JtYXRfZWJiID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2hhciBmbXQpXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX2NoYXIgZm10KVxuICB8IElnbm9yZWRfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDMyIChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50MzIgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChOYXRpdmVpbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQ2NCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDY0IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfZmxvYXQgKHBhZF9vcHQsIHByZWNfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGbG9hdCAoKEZsb2F0X2ZsYWdfLCBGbG9hdF9mKSxcbiAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Jvb2wgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEJvb2wgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChSZWFkZXIgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10KVxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlcyAqKVxuXG50eXBlICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlbiA9XG4gIHwgQWNjX29wZW5fdGFnIG9mICgnYiwgJ2MpIGFjY1xuICB8IEFjY19vcGVuX2JveCBvZiAoJ2IsICdjKSBhY2NcblxuKCogUmV2ZXJzZWQgbGlzdCBvZiBwcmludGluZyBhdG9tcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBwcmludGYgYXJndW1lbnRzLiAqKVxuYW5kICgnYiwgJ2MpIGFjYyA9XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IG9mICgnYiwgJ2MpIGFjYyAqIGZvcm1hdHRpbmdfbGl0XG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gb2YgKCdiLCAnYykgYWNjICogKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuXG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBMaXRlcmFsIHN0cmluZyAqKVxuICB8IEFjY19jaGFyX2xpdGVyYWwgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIExpdGVyYWwgY2hhciAqKVxuICB8IEFjY19kYXRhX3N0cmluZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIEdlbmVyYXRlZCBzdHJpbmcgKilcbiAgfCBBY2NfZGF0YV9jaGFyICAgICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBHZW5lcmF0ZWQgY2hhciAqKVxuICB8IEFjY19kZWxheSAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IgLT4gJ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBEZWxheWVkIHByaW50aW5nICglYSwgJXQpICopXG4gIHwgQWNjX2ZsdXNoICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAgICAgICAgICAgICAgKCogRmx1c2ggKilcbiAgfCBBY2NfaW52YWxpZF9hcmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nXG4gICAgICAoKiBSYWlzZSBJbnZhbGlkX2FyZ3VtZW50IG1zZyAqKVxuICB8IEVuZF9vZl9hY2NcblxuKCogTGlzdCBvZiBoZXRlcm9nZW5lb3VzIHZhbHVlcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBzY2FuZiBjYWxsYmFjayBhcmd1bWVudHMuICopXG50eXBlICgnYSwgJ2IpIGhldGVyX2xpc3QgPVxuICB8IENvbnMgOiAnYyAqICgnYSwgJ2IpIGhldGVyX2xpc3QgLT4gKCdjIC0+ICdhLCAnYikgaGV0ZXJfbGlzdFxuICB8IE5pbCA6ICgnYiwgJ2IpIGhldGVyX2xpc3RcblxuKCogRXhpc3RlbnRpYWwgQmxhY2sgQm94ZXMuICopXG4oKiBVc2VkIHRvIGFic3RyYWN0IHNvbWUgZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRkaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmIgPSBQYWRkaW5nX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRwcmVjIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmIgPSBQYWRwcmVjX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICd6KSBwcmVjaXNpb24gKiAoJ3osICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZGRpbmdfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiID0gUGFkZGluZ19mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwYWRkaW5nICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wcmVjaXNpb25fZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmIgPSBQcmVjaXNpb25fZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkcHJlY19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmIgPSBQYWRwcmVjX2ZtdF9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAncCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgdGhlICdhIGFuZCAnZCBwYXJhbWV0ZXJzIG9mIGFuIGZtdC4gKilcbigqIE91dHB1dCB0eXBlIG9mIHRoZSBmb3JtYXQgcGFyc2luZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiID0gRm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2Zvcm1hdF9nZW4gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiID0gRm10X2ZtdHR5X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXQgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYiA9IEZtdHR5X2ZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10dHkgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10X2ZtdHR5X2ViYiAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgZm10dHkgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIGZvcm1hdCB0eXBlcy4gKilcbnR5cGUgZm10dHlfZWJiID0gRm10dHlfRUJCIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+IGZtdHR5X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcGFkZGluZyB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcGFkZGluZ3MuICopXG50eXBlIHBhZGRpbmdfZWJiID0gUGFkZGluZ19FQkIgOiAoJ2EsICdiKSBwYWRkaW5nIC0+IHBhZGRpbmdfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwcmVjaXNpb24gdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHByZWNpc2lvbnMuICopXG50eXBlIHByZWNpc2lvbl9lYmIgPSBQcmVjaXNpb25fRUJCIDogKCdhLCAnYikgcHJlY2lzaW9uIC0+IHByZWNpc2lvbl9lYmJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb25zdGFudHMgKilcblxuKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0IHByaW50aW5nLiAqKVxubGV0IGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252ID1cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyB8IEZsb2F0X2ggfCBGbG9hdF9IXG4gIHwgRmxvYXRfQ0YgLT4gLTZcbiAgKCogRm9yICVoICVIIGFuZCAlI0YgZm9ybWF0cywgYSBuZWdhdGl2ZSBwcmVjaXNpb24gbWVhbnMgXCJhcyBtYW55IGRpZ2l0cyBhc1xuICAgICBuZWNlc3NhcnlcIi4gIEZvciB0aGUgb3RoZXIgRlAgZm9ybWF0cywgd2UgdGFrZSB0aGUgYWJzb2x1dGUgdmFsdWVcbiAgICAgb2YgdGhlIHByZWNpc2lvbiwgaGVuY2UgNiBkaWdpdHMgYnkgZGVmYXVsdC4gKilcbiAgfCBGbG9hdF9GIC0+IDEyXG4gICgqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBPQ2FtbCBmbG9hdCBwcmludGluZyAoJUYpLiAqKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEV4dGVybmFscyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQ6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDMyOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfbmF0aXZlaW50OiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ2NDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxuZXh0ZXJuYWwgaGV4c3RyaW5nX29mX2Zsb2F0OiBmbG9hdCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0XCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICgqIFRvb2xzIHRvIHByZXR0eS1wcmludCBmb3JtYXRzICopXG5cbigqIFR5cGUgb2YgZXh0ZW5zaWJsZSBjaGFyYWN0ZXIgYnVmZmVycy4gKilcbnR5cGUgYnVmZmVyID0ge1xuICBtdXRhYmxlIGluZCA6IGludDtcbiAgbXV0YWJsZSBieXRlcyA6IGJ5dGVzO1xufVxuXG4oKiBDcmVhdGUgYSBmcmVzaCBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NyZWF0ZSBpbml0X3NpemUgPSB7IGluZCA9IDA7IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGluaXRfc2l6ZSB9XG5cbigqIENoZWNrIHNpemUgb2YgdGhlIGJ1ZmZlciBhbmQgZ3JvdyBpdCBpZiBuZWVkZWQuICopXG5sZXQgYnVmZmVyX2NoZWNrX3NpemUgYnVmIG92ZXJoZWFkID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYuYnl0ZXMgaW5cbiAgbGV0IG1pbl9sZW4gPSBidWYuaW5kICsgb3ZlcmhlYWQgaW5cbiAgaWYgbWluX2xlbiA+IGxlbiB0aGVuIChcbiAgICBsZXQgbmV3X2xlbiA9IEludC5tYXggKGxlbiAqIDIpIG1pbl9sZW4gaW5cbiAgICBsZXQgbmV3X3N0ciA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYuYnl0ZXMgMCBuZXdfc3RyIDAgbGVuO1xuICAgIGJ1Zi5ieXRlcyA8LSBuZXdfc3RyO1xuICApXG5cbigqIEFkZCB0aGUgY2hhcmFjdGVyIGBjJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfY2hhciBidWYgYyA9XG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiAxO1xuICBCeXRlcy5zZXQgYnVmLmJ5dGVzIGJ1Zi5pbmQgYztcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgMVxuXG4oKiBBZGQgdGhlIHN0cmluZyBgcycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX3N0cmluZyBidWYgcyA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBzdHJfbGVuO1xuICBTdHJpbmcuYmxpdCBzIDAgYnVmLmJ5dGVzIGJ1Zi5pbmQgc3RyX2xlbjtcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgc3RyX2xlblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY29udGVudHMgYnVmID1cbiAgQnl0ZXMuc3ViX3N0cmluZyBidWYuYnl0ZXMgMCBidWYuaW5kXG5cbigqKiopXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciBjb252ZXJzaW9uIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9pY29udiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCB8IEludF9DZCAtPiAnZCcgfCBJbnRfaSB8IEludF9waSB8IEludF9zaVxuICB8IEludF9DaSAtPiAnaScgfCBJbnRfeCB8IEludF9DeCAtPiAneCcgfCBJbnRfWCB8IEludF9DWCAtPiAnWCcgfCBJbnRfb1xuICB8IEludF9DbyAtPiAnbycgfCBJbnRfdSB8IEludF9DdSAtPiAndSdcblxuKCogQ29udmVydCBhIGZsb2F0IGNvbnZlcnNpb24gdG8gY2hhci4gKilcbigqIGBjRicgd2lsbCBiZSAnRicgZm9yIGRpc3BsYXlpbmcgZm9ybWF0IGFuZCAnZycgdG8gY2FsbCBsaWJjIHByaW50ZiAqKVxubGV0IGNoYXJfb2ZfZmNvbnYgPyhjRj0nRicpIGZjb252ID0gbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIC0+ICdmJyB8IEZsb2F0X2UgLT4gJ2UnXG4gIHwgRmxvYXRfRSAtPiAnRScgfCBGbG9hdF9nIC0+ICdnJ1xuICB8IEZsb2F0X0cgLT4gJ0cnIHwgRmxvYXRfRiAtPiBjRlxuICB8IEZsb2F0X2ggLT4gJ2gnIHwgRmxvYXRfSCAtPiAnSCdcbiAgfCBGbG9hdF9DRiAtPiAnRidcblxuXG4oKiBDb252ZXJ0IGEgc2Nhbm5pbmcgY291bnRlciB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfY291bnRlciBjb3VudGVyID0gbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyICAtPiAnbCdcbiAgfCBDaGFyX2NvdW50ZXIgIC0+ICduJ1xuICB8IFRva2VuX2NvdW50ZXIgLT4gJ04nXG5cbigqKiopXG5cbigqIFByaW50IGEgY2hhcl9zZXQgaW4gYSBidWZmZXIgd2l0aCB0aGUgT0NhbWwgZm9ybWF0IGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0ID1cbiAgbGV0IHJlYyBwcmludF9zdGFydCBzZXQgPVxuICAgIGxldCBpc19hbG9uZSBjID1cbiAgICAgIGxldCBiZWZvcmUsIGFmdGVyID0gQ2hhci4oY2hyIChjb2RlIGMgLSAxKSwgY2hyIChjb2RlIGMgKyAxKSkgaW5cbiAgICAgIGlzX2luX2NoYXJfc2V0IHNldCBjXG4gICAgICAmJiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCBiZWZvcmUgJiYgaXNfaW5fY2hhcl9zZXQgc2V0IGFmdGVyKSBpblxuICAgIGlmIGlzX2Fsb25lICddJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nO1xuICAgIHByaW50X291dCBzZXQgMTtcbiAgICBpZiBpc19hbG9uZSAnLScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICctJztcbiAgYW5kIHByaW50X291dCBzZXQgaSA9XG4gICAgaWYgaSA8IDI1NiB0aGVuXG4gICAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW4gcHJpbnRfZmlyc3Qgc2V0IGlcbiAgICAgIGVsc2UgcHJpbnRfb3V0IHNldCAoaSArIDEpXG4gIGFuZCBwcmludF9maXJzdCBzZXQgaSA9XG4gICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnXFwyNTUnIC0+IHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICB8ICddJyB8ICctJyAtPiBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgfCBfIC0+IHByaW50X3NlY29uZCBzZXQgKGkgKyAxKTtcbiAgYW5kIHByaW50X3NlY29uZCBzZXQgaSA9XG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuXG4gICAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICAgIHwgJ1xcMjU1JyAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTQ7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICAgIHwgJ10nIHwgJy0nIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgICB8IF8gd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAyKTtcbiAgICAgIHwgXyAtPlxuICAgICAgICBwcmludF9pbiBzZXQgKGkgLSAxKSAoaSArIDIpO1xuICAgIGVsc2UgKFxuICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICApXG4gIGFuZCBwcmludF9pbiBzZXQgaSBqID1cbiAgICBpZiBqID0gMjU2IHx8IG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBqKSkgdGhlbiAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGludF9vZl9jaGFyICctJyk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaiAtIDEpO1xuICAgICAgaWYgaiA8IDI1NiB0aGVuIHByaW50X291dCBzZXQgKGogKyAxKTtcbiAgICApIGVsc2VcbiAgICAgIHByaW50X2luIHNldCBpIChqICsgMSk7XG4gIGFuZCBwcmludF9jaGFyIGJ1ZiBpID0gbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnJScgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIHwgJ0AnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICdAJztcbiAgICB8IGMgICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGluXG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1snO1xuICBwcmludF9zdGFydCAoXG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgJ1xcMDAwJ1xuICAgIHRoZW4gKCBidWZmZXJfYWRkX2NoYXIgYnVmICdeJzsgcmV2X2NoYXJfc2V0IGNoYXJfc2V0IClcbiAgICBlbHNlIGNoYXJfc2V0XG4gICk7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nXG5cbigqKiopXG5cbigqIFByaW50IGEgcGFkdHkgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWR0eSBidWYgcGFkdHkgPSBtYXRjaCBwYWR0eSB3aXRoXG4gIHwgTGVmdCAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSdcbiAgfCBSaWdodCAtPiAoKVxuICB8IFplcm9zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJzAnXG5cbigqIFByaW50IHRoZSAnXycgb2YgYW4gaWdub3JlZCBmbGFnIGlmIG5lZWRlZC4gKilcbmxldCBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZyA9XG4gIGlmIGlnbl9mbGFnIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXydcblxuKCoqKilcblxubGV0IGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgd2lkdGggLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHdpZHRoKVxuXG4oKioqKVxuXG4oKiBQcmludCBwYWRkaW5nIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkZGluZyA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwYWRkaW5nIC0+IHVuaXQgPVxuZnVuIGJ1ZiBwYWQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+ICgpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCBuKSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcqJ1xuXG4oKiBQcmludCBwcmVjaXNpb24gaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wcmVjaXNpb24gOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcHJlY2lzaW9uIC0+IHVuaXQgPVxuICBmdW4gYnVmIHByZWMgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uIC0+ICgpXG4gIHwgTGl0X3ByZWNpc2lvbiBuIC0+XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wcmVjaXNpb24gLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIuKlwiXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBvciAnIycgYXNzb2NpYXRlZCB0byBhbiBpbnQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X3BkIHwgSW50X3BpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgSW50X3NkIHwgSW50X3NpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgSW50X0N4IHwgSW50X0NYIHwgSW50X0NvIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEludF9kIHwgSW50X2kgfCBJbnRfeCB8IEludF9YIHwgSW50X28gfCBJbnRfdSAtPiAoKVxuXG4oKiBQcmludCBhbiBjb21wbGV0ZSBpbnQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlMy4qZFwiKS4gKilcbmxldCBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBhbmQvb3IgJyMnIGFzc29jaWF0ZWQgdG8gYSBmbG9hdCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udiA9XG4gIGJlZ2luIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZmxhZ19wIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgRmxvYXRfZmxhZ19zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgRmxvYXRfZmxhZ18gLT4gKCkgZW5kO1xuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X0NGIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0dcbiAgfCBGbG9hdF9GIHwgRmxvYXRfaCB8IEZsb2F0X0ggLT4gKClcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmbG9hdCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUrKi4zZlwiKS4gKilcbmxldCBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2Zjb252IGZjb252KVxuXG4oKiBDb21wdXRlIHRoZSBsaXRlcmFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEZvcm1hdHRpbmdfbGl0LiAqKVxuKCogVXNlZCBieSBQcmludGYgYW5kIFNjYW5mIHdoZXJlIGZvcm1hdHRpbmcgaXMgbm90IGludGVycHJldGVkLiAqKVxubGV0IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCA9IG1hdGNoIGZvcm1hdHRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAtPiBcIkBdXCJcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAtPiBcIkB9XCJcbiAgfCBCcmVhayAoc3RyLCBfLCBfKSAgICAtPiBzdHJcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAtPiBcIkA/XCJcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAtPiBcIkBcXG5cIlxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgIC0+IFwiQC5cIlxuICB8IE1hZ2ljX3NpemUgKHN0ciwgXykgIC0+IHN0clxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgIC0+IFwiQEBcIlxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgIC0+IFwiQCVcIlxuICB8IFNjYW5faW5kaWMgYyAtPiBcIkBcIiBeIChTdHJpbmcubWFrZSAxIGMpXG5cbigqKiopXG5cbigqIFByaW50IGEgbGl0ZXJhbCBjaGFyIGluIGEgYnVmZmVyLCBlc2NhcGUgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHIgPSBtYXRjaCBjaHIgd2l0aFxuICB8ICclJyAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlJVwiXG4gIHwgXyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGNoclxuXG4oKiBQcmludCBhIGxpdGVyYWwgc3RyaW5nIGluIGEgYnVmZmVyLCBlc2NhcGUgYWxsICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHIgPVxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgc3RyLltpXVxuICBkb25lXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwcmV0dHktcHJpbnRpbmcgKilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgdHlwZSAoYW4gZm10dHkpIGluIGEgYnVmZmVyLiAqKVxubGV0IHJlYyBicHJpbnRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgICBidWZmZXIgLT4gKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiB1bml0ID1cbmZ1biBidWYgZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVjXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlaVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDMyX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVsaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJW5pXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlTGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZsb2F0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVmXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQm9vbF90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbHBoYV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlYVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFRoZXRhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV0XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQW55X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJT9cIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBSZWFkZXJfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlclwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVfclwiO1xuICAgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIle1wiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlfVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHksIF8sIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJShcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRW5kX29mX2ZtdHR5IC0+ICgpXG5cbigqKiopXG5cbmxldCByZWMgaW50X29mX2N1c3RvbV9hcml0eSA6IHR5cGUgYSBiIGMgLlxuICAoYSwgYiwgYykgY3VzdG9tX2FyaXR5IC0+IGludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQ3VzdG9tX3plcm8gLT4gMFxuICB8IEN1c3RvbV9zdWNjIHggLT4gMSArIGludF9vZl9jdXN0b21fYXJpdHkgeFxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfZm10IGJ1ZiBmbXQgPVxuICBsZXQgcmVjIGZtdGl0ZXIgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYm9vbCAtPiB1bml0ID1cbiAgZnVuIGZtdCBpZ25fZmxhZyAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdzJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdTJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ2wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICduJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdMJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdDJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdhJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAndCc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICBmb3IgX2kgPSAxIHRvIGludF9vZl9jdXN0b21fYXJpdHkgYXJpdHkgZG9cbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIGRvbmU7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBSZWFkZXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncic7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUhXCI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0cjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICd7JztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICd9JztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgd2lkdGhfb3B0OyBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0O1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfY291bnRlciBjb3VudGVyKTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgXCIwY1wiOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICAgIGZtdGl0ZXIgZm10JyB0cnVlO1xuXG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0KTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZm10aW5nX2dlbiB3aXRoXG4gICAgICB8IE9wZW5fdGFnIChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkB7XCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIHwgT3Blbl9ib3ggKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQFtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgZW5kO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+ICgpXG5cbiAgaW4gZm10aXRlciBmbXQgZmFsc2VcblxuKCoqKilcblxuKCogQ29udmVydCBhIGZvcm1hdCB0byBzdHJpbmcuICopXG5sZXQgc3RyaW5nX29mX2ZtdCBmbXQgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10IGJ1ZiBmbXQ7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZSBleHRyYWN0aW9uICopXG5cbnR5cGUgKF8sIF8pIGVxID0gUmVmbCA6ICgnYSwgJ2EpIGVxXG5cbigqIEludmFyaWFudDogdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgb24gdmFsdWVzLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBpZiAodHkxLCB0eTIpIGhhdmUgZXF1YWwgdmFsdWVzLCB0aGVuXG4gICAodHJhbnMgKHN5bW0gdHkxKSB0eTIpIHJlc3BlY3RzIHRoZSAndHJhbnMnIHByZWNvbmRpdGlvbi4gKilcbmxldCByZWMgc3ltbSA6IHR5cGUgYTEgYjEgYzEgZDEgZTEgZjEgYTIgYjIgYzIgZDIgZTIgZjIgLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXR0eV9yZWxcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT4gQ2hhcl90eSAoc3ltbSByZXN0KVxuICB8IEludF90eSByZXN0IC0+IEludF90eSAoc3ltbSByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT4gSW50MzJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+IEludDY0X3R5IChzeW1tIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gTmF0aXZlaW50X3R5IChzeW1tIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPiBGbG9hdF90eSAoc3ltbSByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPiBCb29sX3R5IChzeW1tIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT4gU3RyaW5nX3R5IChzeW1tIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPiBUaGV0YV90eSAoc3ltbSByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT4gQWxwaGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPiBBbnlfdHkgKHN5bW0gcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPiBSZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+IElnbm9yZWRfcmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyLCB0eTEsIHN5bW0gcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbmxldCByZWMgZm10dHlfcmVsX2RldCA6IHR5cGUgYTEgYiBjIGQxIGUxIGYxIGEyIGQyIGUyIGYyIC5cbiAgKGExLCBiLCBjLCBkMSwgZTEsIGYxLFxuICAgYTIsIGIsIGMsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoZjEsIGYyKSBlcSAtPiAoYTEsIGEyKSBlcSlcbiAgKiAoKGExLCBhMikgZXEgLT4gKGYxLCBmMikgZXEpXG4gICogKChlMSwgZTIpIGVxIC0+IChkMSwgZDIpIGVxKVxuICAqICgoZDEsIGQyKSBlcSAtPiAoZTEsIGUyKSBlcSlcbj0gZnVuY3Rpb25cbiAgfCBFbmRfb2ZfZm10dHkgLT5cbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbClcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgRm9ybWF0X2FyZ190eSAoX3R5LCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgbGV0IGFnLCBnYSwgZGosIGpkID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZyBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGdhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gbGV0IFJlZmwgPSBkaiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGpkIFJlZmwgaW4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG5cbigqIFByZWNvbmRpdGlvbjogd2UgYXNzdW1lIHRoYXQgdGhlIHR3byBmbXR0eV9yZWwgYXJndW1lbnRzIGhhdmUgZXF1YWxcbiAgIHZhbHVlcyAoYXQgcG9zc2libHkgZGlzdGluY3QgdHlwZXMpOyB0aGlzIGludmFyaWFudCBjb21lcyBmcm9tIHRoZSB3YXlcbiAgIGZtdHR5X3JlbCB3aXRuZXNzZXMgYXJlIHByb2R1Y2VkIGJ5IHRoZSB0eXBlLWNoZWNrZXJcblxuICAgVGhlIGNvZGUgYmVsb3cgdXNlcyAoYXNzZXJ0IGZhbHNlKSB3aGVuIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4uIFRoZVxuICAgY29kZSBwYXR0ZXJuIGlzIHRoZSBmb2xsb3dpbmc6XG5cbiAgICAgfCBGb28geCwgRm9vIHkgLT5cbiAgICAgICAoKiBjYXNlIHdoZXJlIGluZGVlZCBib3RoIHZhbHVlc1xuICAgICAgICAgIHN0YXJ0IHdpdGggY29uc3RydWN0b3IgRm9vICopXG4gICAgIHwgRm9vIF8sIF9cbiAgICAgfCBfLCBGb28gXyAtPlxuICAgICAgICgqIGRpZmZlcmVudCBoZWFkIGNvbnN0cnVjdG9yczogYnJva2VuIHByZWNvbmRpdGlvbiAqKVxuICAgICAgIGFzc2VydCBmYWxzZVxuKilcbmFuZCB0cmFucyA6IHR5cGVcbiAgYTEgYjEgYzEgZDEgZTEgZjFcbiAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgYTMgYjMgYzMgZDMgZTMgZjNcbi5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG4tPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbj0gZnVuIHR5MSB0eTIgLT4gbWF0Y2ggdHkxLCB0eTIgd2l0aFxuICB8IENoYXJfdHkgcmVzdDEsIENoYXJfdHkgcmVzdDIgLT4gQ2hhcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgU3RyaW5nX3R5IHJlc3QxLCBTdHJpbmdfdHkgcmVzdDIgLT4gU3RyaW5nX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBCb29sX3R5IHJlc3QxLCBCb29sX3R5IHJlc3QyIC0+IEJvb2xfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludF90eSByZXN0MSwgSW50X3R5IHJlc3QyIC0+IEludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50MzJfdHkgcmVzdDEsIEludDMyX3R5IHJlc3QyIC0+IEludDMyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQ2NF90eSByZXN0MSwgSW50NjRfdHkgcmVzdDIgLT4gSW50NjRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IE5hdGl2ZWludF90eSByZXN0MSwgTmF0aXZlaW50X3R5IHJlc3QyIC0+IE5hdGl2ZWludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRmxvYXRfdHkgcmVzdDEsIEZsb2F0X3R5IHJlc3QyIC0+IEZsb2F0X3R5ICh0cmFucyByZXN0MSByZXN0MilcblxuICB8IEFscGhhX3R5IHJlc3QxLCBBbHBoYV90eSByZXN0MiAtPiBBbHBoYV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQWxwaGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbHBoYV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgVGhldGFfdHkgcmVzdDEsIFRoZXRhX3R5IHJlc3QyIC0+IFRoZXRhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBUaGV0YV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFRoZXRhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBBbnlfdHkgcmVzdDEsIEFueV90eSByZXN0MiAtPiBBbnlfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFueV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFueV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgUmVhZGVyX3R5IHJlc3QxLCBSZWFkZXJfdHkgcmVzdDIgLT4gUmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBSZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBSZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QxLCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MiAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIElnbm9yZWRfcmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfYXJnX3R5ICh0eTEsIHJlc3QxKSwgRm9ybWF0X2FyZ190eSAodHkyLCByZXN0MikgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0cmFucyB0eTEgdHkyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfYXJnX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X2FyZ190eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTEyLCByZXN0MSksXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIxLCB0eTIyLCByZXN0MikgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEyKSB0eTIxIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MjIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9zdWJzdF90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9zdWJzdF90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRW5kX29mX2ZtdHR5LCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG4gIHwgRW5kX29mX2ZtdHR5LCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEVuZF9vZl9mbXR0eSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHJlYyBmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBFeHRyYWN0IHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIChhbiBmbXR0eSkgb2YgYSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfZm10IDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuXG4gIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQzMl90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoTmF0aXZlaW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDY0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEZsb2F0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuXG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAgICAgICAgICAgLT5cbiAgICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChCb29sX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gQWxwaGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgIC0+IFRoZXRhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAgICAtPiBmbXR0eV9vZl9jdXN0b20gYXJpdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFJlYWRlciByZXN0ICAgICAgICAgICAgICAgIC0+IFJlYWRlcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5LCB0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+IFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT4gSW50X3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAtPiBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdFxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpICAtPlxuICAgIGNvbmNhdF9mbXR0eSAoZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gZm10aW5nX2dlbikgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgLT4gRW5kX29mX2ZtdHR5XG5cbmFuZCBmbXR0eV9vZl9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICh5LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gYXJpdHkgZm10dHkgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IGZtdHR5XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT4gQW55X3R5IChmbXR0eV9vZl9jdXN0b20gYXJpdHkgZm10dHkpXG5cbigqIEV4dHJhY3QgdGhlIGZtdHR5IG9mIGFuIGlnbm9yZWQgcGFyYW1ldGVyIGZvbGxvd2VkIGJ5IHRoZSByZXN0IG9mXG4gICB0aGUgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gY29uY2F0X2ZtdHR5IGZtdHR5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gSWdub3JlZF9yZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwYWRkaW5nIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKnNcIikuICopXG5hbmQgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAgLT4gZm10dHlcbiAgICB8IExpdF9wYWRkaW5nIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wYWRkaW5nIF8gLT4gSW50X3R5IGZtdHR5XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwcmVjaXNpb24gaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikuKilcbmFuZCBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMgd2l0aFxuICAgIHwgTm9fcHJlY2lzaW9uICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcHJlY2lzaW9uIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wcmVjaXNpb24gICAtPiBJbnRfdHkgZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwaW5nICopXG5cbigqIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBhIGdpdmVuIGZvcm1hdCB0eXBlLiAqKVxuZXhjZXB0aW9uIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIHBhZGRpbmcuICopXG4oKiBUYWtlIGFuIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiB0aGUgaW50ZWdlciBzaG91bGQgYmUga2VwdCBhcyBhcmd1bWVudC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkZGluZyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCwgZm10dHkgd2l0aFxuICB8IE5vX3BhZGRpbmcsIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKE5vX3BhZGRpbmcsIGZtdHR5KVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKExpdF9wYWRkaW5nIChwYWR0eSx3KSxmbXR0eSlcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgSW50X3R5IHJlc3QgLT4gUGFkZGluZ19mbXR0eV9FQkIgKEFyZ19wYWRkaW5nIHBhZHR5LHJlc3QpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIENvbnZlcnQgYSAodXBhZGRpbmcsIHVwcmVjaXNpb24pIHRvIGEgKHBhZGRpbmcsIHByZWNpc2lvbikuICopXG4oKiBUYWtlIG9uZSBvciB0d28gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIG5lZWRlZC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkcHJlYyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IHogLlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeikgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYywgdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIE5vX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAsIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTGl0X3ByZWNpc2lvbiBwLCByZXN0KVxuICB8IEFyZ19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEludF90eSByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIEFyZ19wcmVjaXNpb24sIHJlc3QpXG4gIHwgXywgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBJZiB0eXBpbmcgc3VjY2VlZCwgZ2VuZXJhdGUgYSBjb3B5IG9mIHRoZSBmb3JtYXQgd2l0aCB0aGUgc2FtZVxuICAgIHR5cGUgcGFyYW1ldGVycyBhcyB0aGUgZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCByZWMgdHlwZV9mb3JtYXQgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgd2l0aFxuICB8IEZtdF9mbXR0eV9FQkIgKGZtdCcsIEVuZF9vZl9mbXR0eSkgLT4gZm10J1xuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXRfZ2VuIDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggZm10LCBmbXR0eSB3aXRoXG4gIHwgQ2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXIgZm10JywgZm10dHknKVxuICB8IENhbWxfY2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfY2hhciBmbXQnLCBmbXR0eScpXG4gIHwgU3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfc3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50MzJfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDY0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgRmxvYXRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEJvb2wgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEJvb2xfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEJvb2wgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbHVzaCBmbXRfcmVzdCwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGbHVzaCBmbXQnLCBmbXR0eScpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10JyksIGZtdHR5JylcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXJfbGl0ZXJhbCAoY2hyLCBmbXQnKSwgZm10dHknKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5JywgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5MSwgX3N1Yl9mbXR0eTIsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkxKSB0aGVuXG4gICAgICByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID1cbiAgICAgIHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCAoZXJhc2VfcmVsIGZtdHR5X3Jlc3QpXG4gICAgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eTEsIGZtdCcpLCBmbXR0eScpXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBBbHBoYSBmbXRfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChBbHBoYSBmbXQnLCBmbXR0eScpXG4gIHwgVGhldGEgZm10X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoVGhldGEgZm10JywgZm10dHknKVxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nX2dlbiwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9mb3JtYXR0aW5nX2dlbiBmb3JtYXR0aW5nX2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciBmbXRfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoUmVhZGVyIGZtdCcsIGZtdHR5JylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXRfcmVzdCksIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpLCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQnKSwgZm10dHknKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW0gaWduIHJlc3QgZm10dHlfcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdCAtPiBGbXRfZm10dHlfRUJCIChFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0KVxuXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhMSBhMyBiMSBiMyBjMSBjMyBkMSBkMyBlMSBlMiBlMyBmMSBmMiBmMyAuXG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGYxLCBiMSwgYzEsIGUxLCBlMiwgZjIpIGZtdCAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eSAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXRfZm10dHlfZWJiID1cbmZ1biBmb3JtYXR0aW5nX2dlbiBmbXQwIGZtdHR5MCAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcblxuKCogVHlwZSBhbiBJZ25vcmVkX3BhcmFtIG5vZGUgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbSA6IHR5cGUgcCBxIHggeSB6IHQgdSB2IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgeSwgeiwgdCwgcSwgcCkgaWdub3JlZCAtPlxuICAgIChwLCB5LCB6LCBxLCB1LCB2KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10X2ZtdHR5X2ViYiA9XG5mdW4gaWduIGZtdCBmbXR0eSAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50IF8gICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50MzIgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfbmF0aXZlaW50IF8gICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50NjQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZmxvYXQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgKElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSkgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5JywgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSkgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5IGZtdCBmbXR0eSBpblxuICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHknKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQnKSxcbiAgICAgICAgICAgICAgICAgICBmbXR0eScpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT4gKFxuICAgIG1hdGNoIGZtdHR5IHdpdGhcbiAgICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10JyksIGZtdHR5JylcbiAgICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG5cbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIDogdHlwZSBhMSBhMiBiMSBiMiBjMSBjMiBkMSBkMiBlMSBlMiBmMSBmMiAuXG4gICAgKGEyLCBiMiwgYzIsIGQyLCBkMiwgYTIpIGlnbm9yZWQgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGlnbiBmbXQgZm10dHkgLT5cbiAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IGluXG4gIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbiwgZm10JyksIGZtdHR5JylcblxuKCogVHlwaW5nIG9mIHRoZSBjb21wbGV4IGNhc2U6IFwiJV8oLi4uJSlcIi4gKilcbmFuZCB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiA6IHR5cGUgdyB4IHkgeiBwIHMgdCB1IGEgYiBjIGQgZSBmIC5cbiAgICAodywgeCwgeSwgeiwgcywgcCkgZm10dHkgLT5cbiAgICAocCwgeCwgeSwgcywgdCwgdSkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eV9mbXRfZWJiID1cbmZ1biBzdWJfZm10dHkgZm10IGZtdHR5IC0+IG1hdGNoIHN1Yl9mbXR0eSwgZm10dHkgd2l0aFxuICB8IENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQ2hhcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0LCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQzMl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQzMl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCwgSW50NjRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0LCBGbG9hdF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGbG9hdF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQm9vbF90eSBzdWJfZm10dHlfcmVzdCwgQm9vbF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChCb29sX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBBbHBoYV90eSBzdWJfZm10dHlfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChUaGV0YV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eSwgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWIyX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWIyX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5Jywgc3ViX2ZtdHR5X3Jlc3QnKSwgZm10JylcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHksICBzdWIyX2ZtdHR5LCAgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgICgqIFRPRE8gZGVmaW5lIEZtdHR5X3JlbF9FQkIgdG8gcmVtb3ZlIHRob3NlIGVyYXNlX3JlbCAqKVxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IHN1Yl9mbXR0eScgPSB0cmFucyAoc3ltbSBzdWIxX2ZtdHR5Jykgc3ViMl9mbXR0eScgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCBzdWJfZm10dHknIGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gKGVyYXNlX3JlbCBzdWJfZm10dHlfcmVzdCkgZm10IGZtdHR5X3Jlc3RcbiAgICBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbSBzdWJfZm10dHlfcmVzdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdCcpXG4gIHwgRW5kX29mX2ZtdHR5LCBmbXR0eSAtPlxuICAgIEZtdHR5X2ZtdF9FQkIgKEVuZF9vZl9mbXR0eSwgdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSlcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgcmVjYXN0YCBpcyBhIGJpdCBkaXNhcHBvaW50aW5nLiBUaGVcbiAgIGludmFyaWFudCBwcm92aWRlZCBieSB0aGUgdHlwZSBhcmUgdmVyeSBzdHJvbmc6IHRoZSBpbnB1dCBmb3JtYXQnc1xuICAgdHlwZSBpcyBpbiByZWxhdGlvbiB0byB0aGUgb3V0cHV0IHR5cGUncyBhcyB3aXRuZXNzZWQgYnkgdGhlXG4gICBmbXR0eV9yZWwgYXJndW1lbnQuIE9uZSB3b3VsZCBhdCBmaXJzdCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZVxuICAgdG90YWwsIGFuZCBpbXBsZW1lbnRhYmxlIGJ5IGV4aGF1c3RpdmUgcGF0dGVybiBtYXRjaGluZy4gSW5zdGVhZCxcbiAgIHdlIHJldXNlIHRoZSBoaWdobHkgcGFydGlhbCBhbmQgbXVjaCBsZXNzIHdlbGwtZGVmaW5lZCBmdW5jdGlvblxuICAgYHR5cGVfZm9ybWF0YCB0aGF0IGhhcyBsb3N0IGFsbCBrbm93bGVkZ2Ugb2YgdGhlIGNvcnJlc3BvbmRlbmNlXG4gICBiZXR3ZWVuIHRoZSBhcmd1bWVudCdzIHR5cGVzLlxuXG4gICBCZXNpZGVzIHRoZSBmYWN0IHRoYXQgdGhpcyBmdW5jdGlvbiByZXVzZXMgYSBsb3Qgb2YgdGhlXG4gICBgdHlwZV9mb3JtYXRgIGxvZ2ljIChlZy46IHNlZWluZyBJbnRfdHkgaW4gdGhlIGZtdHR5IHBhcmFtZXRlciBkb2VzXG4gICBub3QgbGV0IHlvdSBtYXRjaCBvbiBJbnQgb25seSwgYXMgeW91IG1heSBpbiBmYWN0IGhhdmUgRmxvYXRcbiAgIChBcmdfcGFkZGluZywgLi4uKSAoXCIlLipkXCIpIGJlZ2lubmluZyB3aXRoIGFuIEludF90eSksIGl0IGlzIGFsc29cbiAgIGEgcGFydGlhbCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgdHlwaW5nIGluZm9ybWF0aW9uIGluIGEgZm9ybWF0IGlzXG4gICBub3QgcXVpdGUgZW5vdWdoIHRvIHJlY29uc3RydWN0IGl0IHVuYW1iaWd1b3VzbHkuIEZvciBleGFtcGxlLCB0aGVcbiAgIGZvcm1hdCB0eXBlcyBvZiBcIiVkJV9yXCIgYW5kIFwiJV9yJWRcIiBoYXZlIHRoZSBzYW1lIGZvcm1hdDZcbiAgIHBhcmFtZXRlcnMsIGJ1dCB0aGV5IGFyZSBub3QgYXQgYWxsIGV4Y2hhbmdlYWJsZSwgYW5kIHB1dHRpbmcgb25lXG4gICBpbiBwbGFjZSBvZiB0aGUgb3RoZXIgbXVzdCByZXN1bHQgaW4gYSBkeW5hbWljIGZhaWx1cmUuXG5cbiAgIEdpdmVuIHRoYXQ6XG4gICAtIHdlJ2QgaGF2ZSB0byBkdXBsaWNhdGUgYSBsb3Qgb2Ygbm9uLXRyaXZpYWwgdHlwaW5nIGxvZ2ljIGZyb20gdHlwZV9mb3JtYXRcbiAgIC0gdGhpcyB3b3VsZG4ndCBldmVuIGVsaW1pbmF0ZSAoYWxsKSB0aGUgZHluYW1pYyBmYWlsdXJlc1xuICAgd2UgZGVjaWRlZCB0byBqdXN0IHJldXNlIHR5cGVfZm9ybWF0IGRpcmVjdGx5IGZvciBub3cuXG4qKVxubGV0IHJlY2FzdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+XG4gIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUHJpbnRpbmcgdG9vbHMgKilcblxuKCogQWRkIHBhZGRpbmcgc3BhY2VzIGFyb3VuZCBhIHN0cmluZy4gKilcbmxldCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoLCBwYWR0eSA9XG4gICAgYWJzIHdpZHRoLFxuICAgICgqIHdoaWxlIGxpdGVyYWwgcGFkZGluZyB3aWR0aHMgYXJlIGFsd2F5cyBub24tbmVnYXRpdmUsXG4gICAgICAgZHluYW1pY2FsbHktc2V0IHdpZHRocyAoQXJnX3BhZGRpbmcsIGVnLiAlKmQpIG1heSBiZSBuZWdhdGl2ZTtcbiAgICAgICB3ZSBpbnRlcnByZXQgdGhvc2UgYXMgc3BlY2lmeWluZyBhIHBhZGRpbmctdG8tdGhlLWxlZnQ7IHRoaXNcbiAgICAgICBtZWFucyB0aGF0ICcwJyBtYXkgZ2V0IGRyb3BwZWQgZXZlbiBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQsXG4gICAgICAgYnV0OlxuICAgICAgIC0gdGhpcyBpcyB3aGF0IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gZG9lcywgYW5kXG4gICAgICAgICB3ZSBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IGlmIHBvc3NpYmxlXG4gICAgICAgLSB3ZSBjb3VsZCBvbmx5IHNpZ25hbCB0aGlzIGlzc3VlIGJ5IGZhaWxpbmcgYXQgcnVudGltZSxcbiAgICAgICAgIHdoaWNoIGlzIG5vdCB2ZXJ5IG5pY2UuLi4gKilcbiAgICBpZiB3aWR0aCA8IDAgdGhlbiBMZWZ0IGVsc2UgcGFkdHkgaW5cbiAgaWYgd2lkdGggPD0gbGVuIHRoZW4gc3RyIGVsc2VcbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSB3aWR0aCAoaWYgcGFkdHkgPSBaZXJvcyB0aGVuICcwJyBlbHNlICcgJykgaW5cbiAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgfCBMZWZ0ICAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgMCBsZW5cbiAgICB8IFJpZ2h0IC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAwICYmIChzdHIuWzBdID0gJysnIHx8IHN0ci5bMF0gPSAnLScgfHwgc3RyLlswXSA9ICcgJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMCBzdHIuWzBdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzICh3aWR0aCAtIGxlbiArIDEpIChsZW4gLSAxKVxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAxICYmIHN0ci5bMF0gPSAnMCcgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzICh3aWR0aCAtIGxlbiArIDIpIChsZW4gLSAyKVxuICAgIHwgWmVyb3MgLT5cbiAgICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIGVuZDtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBBZGQgJzAnIHBhZGRpbmcgdG8gaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKilcbmxldCBmaXhfaW50X3ByZWNpc2lvbiBwcmVjIHN0ciA9XG4gIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIG1hdGNoIHN0ci5bMF0gd2l0aFxuICB8ICgnKycgfCAnLScgfCAnICcpIGFzIGMgd2hlbiBwcmVjICsgMSA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMSkgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAwIGM7XG4gICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzIChwcmVjIC0gbGVuICsgMikgKGxlbiAtIDEpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIHdoZW4gcHJlYyArIDIgPiBsZW4gJiYgbGVuID4gMSAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMikgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzIChwcmVjIC0gbGVuICsgNCkgKGxlbiAtIDIpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIHdoZW4gcHJlYyA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHByZWMgJzAnIGluXG4gICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzIChwcmVjIC0gbGVuKSBsZW47XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCBfIC0+XG4gICAgc3RyXG5cbigqIEVzY2FwZSBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGluZyBjb252ZW50aW9uLiAqKVxubGV0IHN0cmluZ190b19jYW1sX3N0cmluZyBzdHIgPVxuICBsZXQgc3RyID0gU3RyaW5nLmVzY2FwZWQgc3RyIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFxcIicgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfaW50L2ludDMyL25hdGl2ZWludC9pbnQ2NCBmaXJzdCBhcmd1bWVudFxuICAgZnJvbSBhbiBpbnRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfaWNvbnYgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWRcIiB8IEludF9wZCAtPiBcIiUrZFwiIHwgSW50X3NkIC0+IFwiJSBkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVpXCIgfCBJbnRfcGkgLT4gXCIlK2lcIiB8IEludF9zaSAtPiBcIiUgaVwiXG4gIHwgSW50X3ggLT4gXCIleFwiIHwgSW50X0N4IC0+IFwiJSN4XCJcbiAgfCBJbnRfWCAtPiBcIiVYXCIgfCBJbnRfQ1ggLT4gXCIlI1hcIlxuICB8IEludF9vIC0+IFwiJW9cIiB8IEludF9DbyAtPiBcIiUjb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIldVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZMID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVMZFwiIHwgSW50X3BkIC0+IFwiJStMZFwiIHwgSW50X3NkIC0+IFwiJSBMZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlTGlcIiB8IEludF9waSAtPiBcIiUrTGlcIiB8IEludF9zaSAtPiBcIiUgTGlcIlxuICB8IEludF94IC0+IFwiJUx4XCIgfCBJbnRfQ3ggLT4gXCIlI0x4XCJcbiAgfCBJbnRfWCAtPiBcIiVMWFwiIHwgSW50X0NYIC0+IFwiJSNMWFwiXG4gIHwgSW50X28gLT4gXCIlTG9cIiB8IEludF9DbyAtPiBcIiUjTG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJUx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udmwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWxkXCIgfCBJbnRfcGQgLT4gXCIlK2xkXCIgfCBJbnRfc2QgLT4gXCIlIGxkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVsaVwiIHwgSW50X3BpIC0+IFwiJStsaVwiIHwgSW50X3NpIC0+IFwiJSBsaVwiXG4gIHwgSW50X3ggLT4gXCIlbHhcIiB8IEludF9DeCAtPiBcIiUjbHhcIlxuICB8IEludF9YIC0+IFwiJWxYXCIgfCBJbnRfQ1ggLT4gXCIlI2xYXCJcbiAgfCBJbnRfbyAtPiBcIiVsb1wiIHwgSW50X0NvIC0+IFwiJSNsb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252biA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbmRcIiB8IEludF9wZCAtPiBcIiUrbmRcIiB8IEludF9zZCAtPiBcIiUgbmRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJW5pXCIgfCBJbnRfcGkgLT4gXCIlK25pXCIgfCBJbnRfc2kgLT4gXCIlIG5pXCJcbiAgfCBJbnRfeCAtPiBcIiVueFwiIHwgSW50X0N4IC0+IFwiJSNueFwiXG4gIHwgSW50X1ggLT4gXCIlblhcIiB8IEludF9DWCAtPiBcIiUjblhcIlxuICB8IEludF9vIC0+IFwiJW5vXCIgfCBJbnRfQ28gLT4gXCIlI25vXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVudVwiXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfZmxvYXQgZmlyc3QgYXJndW1lbnQgZnJvbSBhIGZsb2F0X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMgPVxuICAgIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgICBsZXQgc3ltYiA9IGNoYXJfb2ZfZmNvbnYgfmNGOidnJyBmY29udiBpblxuICAgIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBwcmVjKTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmIHN5bWI7XG4gICAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG5sZXQgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgcyA9XG4gIG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICBsZXQgZGlnaXRzID1cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgIHwgJzAnLi4nOScgLT4gaW5jciBuXG4gICAgICAgIHwgXyAtPiAoKVxuICAgICAgZG9uZTtcbiAgICAgICFuXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAoZGlnaXRzIC0gMSkgLyAzKSBpblxuICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgIGxldCBwdXQgYyA9IEJ5dGVzLnNldCBidWYgIXBvcyBjOyBpbmNyIHBvcyBpblxuICAgIGxldCBsZWZ0ID0gcmVmICgoZGlnaXRzIC0gMSkgbW9kIDMgKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnMCcuLic5JyBhcyBjIC0+XG4gICAgICAgICAgaWYgIWxlZnQgPSAwIHRoZW4gKHB1dCAnXyc7IGxlZnQgOj0gMyk7IGRlY3IgbGVmdDsgcHV0IGNcbiAgICAgIHwgYyAtPiBwdXQgY1xuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgfCBfIC0+IHNcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byBhIGNvbnZlcnNpb24uICopXG5sZXQgY29udmVydF9pbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50IChmb3JtYXRfb2ZfaWNvbnYgaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQzMiBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQzMiAoZm9ybWF0X29mX2ljb252bCBpY29udikgbilcbmxldCBjb252ZXJ0X25hdGl2ZWludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9uYXRpdmVpbnQgKGZvcm1hdF9vZl9pY29udm4gaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQ2NCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQ2NCAoZm9ybWF0X29mX2ljb252TCBpY29udikgbilcblxuKCogQ29udmVydCBhIGZsb2F0IHRvIHN0cmluZy4gKilcbigqIEZpeCBzcGVjaWFsIGNhc2Ugb2YgXCJPQ2FtbCBmbG9hdCBmb3JtYXRcIi4gKilcbmxldCBjb252ZXJ0X2Zsb2F0IGZjb252IHByZWMgeCA9XG4gIGxldCBoZXggKCkgPVxuICAgIGxldCBzaWduID1cbiAgICAgIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gICAgICB8IEZsb2F0X2ZsYWdfcCAtPiAnKydcbiAgICAgIHwgRmxvYXRfZmxhZ19zIC0+ICcgJ1xuICAgICAgfCBfIC0+ICctJyBpblxuICAgIGhleHN0cmluZ19vZl9mbG9hdCB4IHByZWMgc2lnbiBpblxuICBsZXQgYWRkX2RvdF9pZl9uZWVkZWQgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGlzX3ZhbGlkIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGlzX3ZhbGlkIChpICsgMSkgaW5cbiAgICBpZiBpc192YWxpZCAwIHRoZW4gc3RyIGVsc2Ugc3RyIF4gXCIuXCIgaW5cbiAgbGV0IGNhbWxfc3BlY2lhbF92YWwgc3RyID0gbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+IHN0clxuICAgIHwgRlBfaW5maW5pdGUgLT4gaWYgeCA8IDAuMCB0aGVuIFwibmVnX2luZmluaXR5XCIgZWxzZSBcImluZmluaXR5XCJcbiAgICB8IEZQX25hbiAtPiBcIm5hblwiIGluXG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfaCAtPiBoZXggKClcbiAgfCBGbG9hdF9IIC0+IFN0cmluZy51cHBlcmNhc2VfYXNjaWkgKGhleCAoKSlcbiAgfCBGbG9hdF9DRiAtPiBjYW1sX3NwZWNpYWxfdmFsIChoZXggKCkpXG4gIHwgRmxvYXRfRiAtPlxuICAgIGxldCBzdHIgPSBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4IGluXG4gICAgY2FtbF9zcGVjaWFsX3ZhbCAoYWRkX2RvdF9pZl9uZWVkZWQgc3RyKVxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIC0+XG4gICAgZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeFxuXG4oKiBDb252ZXJ0IGEgY2hhciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBmb3JtYXRfY2FtbF9jaGFyIGMgPVxuICBsZXQgc3RyID0gQ2hhci5lc2NhcGVkIGMgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXCcnIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHR5cGUgdG8gc3RyaW5nICopXG5sZXQgc3RyaW5nX29mX2ZtdHR5IGZtdHR5ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBwcmludGluZyBmdW5jdGlvbiAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBwcmludGluZyBmdW5jdGlvbi4gKilcbigqIFVzZWQgdG8gZ2VuZXJhdGUgUHJpbnRmIGFuZCBGb3JtYXQgcHJpbnRpbmcgZnVuY3Rpb25zLiAqKVxuKCogUGFyYW1ldGVyczpcbiAgICAgazogYSBjb250aW51YXRpb24gZmluYWxseSBhcHBsaWVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGUgYWNjdW11bGF0b3IuXG4gICAgIG86IHRoZSBvdXRwdXQgc3RyZWFtIChzZWUgaywgJWEgYW5kICV0KS5cbiAgICAgYWNjOiByZXYgbGlzdCBvZiBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzaCwgZm9ybWF0dGluZywgLi4uKS5cbiAgICAgZm10OiB0aGUgZm9ybWF0LiAqKVxubGV0IHJlYyBtYWtlX3ByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2NhbWxfY2hhciBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgKGZ1biBzdHIgLT4gc3RyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ190b19jYW1sX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50IGljb252XG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDMyIGljb252XG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9uYXRpdmVpbnQgaWNvbnZcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50NjQgaWNvbnZcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgZmNvbnZcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ19vZl9ib29sXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIGZ1biBmIHggLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGZ1biBvIC0+IGYgbyB4KSkgcmVzdFxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBmdW4gZiAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgKCkpXG4gIHwgUmVhZGVyIF8gLT5cbiAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICopXG4gICAgKCogSW5kZWVkLCBzaW5jZSBwcmludGYgYW5kIGNvLiB0YWtlIGEgZm9ybWF0NCBhcyBhcmd1bWVudCwgdGhlICdkIGFuZCAnZVxuICAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiBmbXQgYXJlIG9idmlvdXNseSBlcXVhbHMuIFRoZSBSZWFkZXIgaXMgdGhlXG4gICAgICAgb25seSBjb25zdHJ1Y3RvciB3aGljaCB0b3VjaCAnZCBhbmQgJ2UgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBmb3JtYXRcbiAgICAgICB0eXBlLCBpdCBhZGRzIGFuICgtPikgdG8gdGhlICdkIHBhcmFtZXRlcnMuIENvbnNlcXVlbnRseSwgYSBmb3JtYXQ0XG4gICAgICAgY2Fubm90IGNvbnRhaW4gYSBSZWFkZXIgbm9kZSwgZXhjZXB0IGluIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG9cbiAgICAgICBhbiAley4uLiV9LiBJdCdzIG5vdCBhIHByb2JsZW0gYmVjYXVzZSBtYWtlX3ByaW50ZiBkbyBub3QgY2FsbFxuICAgICAgIGl0c2VsZiByZWN1cnNpdmVseSBvbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvICV7Li4uJX0uICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mbHVzaCBhY2MpIHJlc3RcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX3N0cmluZ19saXRlcmFsIChhY2MsIHN0cikpIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfY2hhcl9saXRlcmFsIChhY2MsIGNocikpIHJlc3RcblxuICB8IEZvcm1hdF9hcmcgKF8sIHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSBzdHJpbmdfb2ZfZm10dHkgc3ViX2ZtdHR5IGluXG4gICAgKGZ1biBzdHIgLT5cbiAgICAgIGlnbm9yZSBzdHI7XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHkpKSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+IG1ha2VfcHJpbnRmIGsgYWNjXG4gICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgbGV0IG5ld19hY2MgPSBBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbXCIpIGluXG4gICAgZnVuIF8gLT4gbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICgqIFRoaXMgY2FzZSBzaG91bGQgYmUgcmVmdXNlZCBmb3IgUHJpbnRmLiAqKVxuICAgICgqIEFjY2VwdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqKVxuICAgICgqIEludGVycHJldCAlbCwgJW4gYW5kICVMIGFzICV1LiAqKVxuICAgIGZ1biBuIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfaW50IFwiJXVcIiBuKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbWFrZV9pZ25vcmVkX3BhcmFtIGsgYWNjIGlnbiByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19saXQgKGFjYywgZm10aW5nX2xpdCkpIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl90YWcga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl9ib3gga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBrIGFjY1xuXG4oKiBEZWxheSB0aGUgZXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpLiAqKVxuKCogR2VuZXJhdGUgZnVuY3Rpb25zIHRvIHRha2UgcmVtYWluaW5nIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIFwiJV9cIikuICopXG5hbmQgbWFrZV9pZ25vcmVkX3BhcmFtIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgZm10dHkgZm10XG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcblxuXG4oKiBTcGVjaWFsIGNhc2Ugb2YgcHJpbnRmIFwiJV8oXCIuICopXG5hbmQgbWFrZV9mcm9tX2ZtdHR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgZm10dHkgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBSZWFkZXJfdHkgXyAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogSW5zZXJ0IGFuIEFjY19pbnZhbGlkX2FyZyBpbiB0aGUgYWNjdW11bGF0b3IgYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlXG4gICBjbG9zdXJlcyB0byBnZXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG5hbmQgbWFrZV9pbnZhbGlkX2FyZyA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPlxuICBtYWtlX3ByaW50ZiBrIChBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpKSBmbXRcblxuKCogRml4IHBhZGRpbmcsIHRha2UgaXQgYXMgYW4gZXh0cmEgaW50ZWdlciBhcmd1bWVudCBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9wYWRkaW5nIDogdHlwZSB4IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHogLT4gYSkgcGFkZGluZyAtPiAoeiAtPiBzdHJpbmcpIC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCB0cmFucyAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHJhbnMgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcblxuKCogRml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBmb3IgaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0LiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IChpbnRfY29udiAtPiB6IC0+IHN0cmluZykgLT5cbiAgICBpbnRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyB0cmFucyBpY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gdHJhbnMgaWNvbnYgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuXG4oKiBDb252ZXJ0IGEgZmxvYXQsIGZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gaWYgbmVlZGVkLiAqKVxuKCogVGFrZSB0aGUgZmxvYXQgYXJndW1lbnQgYW5kIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgZmxvYXQgLT4gYSkgcHJlY2lzaW9uIC0+IGZsb2F0X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgZmNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbmFuZCBtYWtlX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geCAtPiB5ID1cbiAgZnVuIGsgYWNjIHJlc3QgYXJpdHkgZiAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiB4KVxuXG5sZXQgY29uc3QgeCBfID0geFxuXG5sZXQgcmVjIG1ha2VfaXByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuICBmdW4gayBvIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBDYW1sX3N0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBCb29sIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyByZXN0IGFyaXR5XG4gICAgfCBSZWFkZXIgXyAtPlxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICBTZWUgdGhlXG4gICAgICAgICAgIG5vdGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY2FzZSBmb3IgbWFrZV9wcmludGYuICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+XG4gICAgICAgICAgbWFrZV9pcHJpbnRmIGsgb1xuICAgICAgICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG4gICAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pZ25vcmVkX3BhcmFtIChmdW4gXyAtPiBrIG8pIChFbmRfb2ZfYWNjKSBpZ24gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgICAgIGsgb1xuYW5kIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIDpcbiAgdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IHggPVxuICBmdW4gayBvIGZtdCBwYWQgcHJlYyAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICwgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpKVxuYW5kIGZuX29mX2N1c3RvbV9hcml0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT5cbiAgc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHkgPVxuICBmdW4gayBvIGZtdCAtPiBmdW5jdGlvblxuICAgIHwgQ3VzdG9tX3plcm8gLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyBmbXRcbiAgICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgICAgIGNvbnN0IChmbl9vZl9jdXN0b21fYXJpdHkgayBvIGZtdCBhcml0eSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29udGludWF0aW9ucyBmb3IgbWFrZV9wcmludGYgKilcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBvIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQHtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQFtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X2NoYXIgbyBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmIG9cbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGZsdXNoIG9cbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBvIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIGJ1ZnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBmIGJcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IGJ1ZnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBidWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiAlYSBhbmQgJXQuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiAoZiAoKSlcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEVycm9yIG1hbmFnZW1lbnQgKilcblxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBwcmV0dHktcHJpbnRlZCBlcnJvciBtZXNzYWdlLiAqKVxubGV0IGZhaWx3aXRoX21lc3NhZ2UgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGsgYWNjID0gc3RycHV0X2FjYyBidWYgYWNjOyBmYWlsd2l0aCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdHRpbmcgdG9vbHMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhbiBvcGVuIGJsb2NrIGRlc2NyaXB0aW9uIChpbmRlbnQsIGJsb2NrX3R5cGUpICopXG5sZXQgb3Blbl9ib3hfb2Zfc3RyaW5nIHN0ciA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiAoMCwgUHBfYm94KSBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGludmFsaWRfYm94ICgpID0gZmFpbHdpdGhfbWVzc2FnZSBcImludmFsaWQgYm94IGRlc2NyaXB0aW9uICVTXCIgc3RyIGluXG4gICAgbGV0IHJlYyBwYXJzZV9zcGFjZXMgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gaSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIC0+IHBhcnNlX3NwYWNlcyAoaSArIDEpXG4gICAgICAgIHwgXyAtPiBpXG4gICAgYW5kIHBhcnNlX2x3b3JkIGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICdhJyAuLiAneicgLT4gcGFyc2VfbHdvcmQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqXG4gICAgYW5kIHBhcnNlX2ludCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHBhcnNlX2ludCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGogaW5cbiAgICBsZXQgd3N0YXJ0ID0gcGFyc2Vfc3BhY2VzIDAgaW5cbiAgICBsZXQgd2VuZCA9IHBhcnNlX2x3b3JkIHdzdGFydCB3c3RhcnQgaW5cbiAgICBsZXQgYm94X25hbWUgPSBTdHJpbmcuc3ViIHN0ciB3c3RhcnQgKHdlbmQgLSB3c3RhcnQpIGluXG4gICAgbGV0IG5zdGFydCA9IHBhcnNlX3NwYWNlcyB3ZW5kIGluXG4gICAgbGV0IG5lbmQgPSBwYXJzZV9pbnQgbnN0YXJ0IG5zdGFydCBpblxuICAgIGxldCBpbmRlbnQgPVxuICAgICAgaWYgbnN0YXJ0ID0gbmVuZCB0aGVuIDAgZWxzZVxuICAgICAgICB0cnkgaW50X29mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHIgbnN0YXJ0IChuZW5kIC0gbnN0YXJ0KSlcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICBsZXQgZXhwX2VuZCA9IHBhcnNlX3NwYWNlcyBuZW5kIGluXG4gICAgaWYgZXhwX2VuZCA8PiBsZW4gdGhlbiBpbnZhbGlkX2JveCAoKTtcbiAgICBsZXQgYm94X3R5cGUgPSBtYXRjaCBib3hfbmFtZSB3aXRoXG4gICAgICB8IFwiXCIgfCBcImJcIiAtPiBQcF9ib3hcbiAgICAgIHwgXCJoXCIgICAgICAtPiBQcF9oYm94XG4gICAgICB8IFwidlwiICAgICAgLT4gUHBfdmJveFxuICAgICAgfCBcImh2XCIgICAgIC0+IFBwX2h2Ym94XG4gICAgICB8IFwiaG92XCIgICAgLT4gUHBfaG92Ym94XG4gICAgICB8IF8gICAgICAgIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgKGluZGVudCwgYm94X3R5cGUpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUGFyc2luZyB0b29scyAqKVxuXG4oKiBDcmVhdGUgYSBwYWRkaW5nX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcgYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZGRpbmdfZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcGFkZGluZ19mbXRfZWJiID1cbmZ1biBwYWQgZm10IC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoTm9fcGFkZGluZywgZm10KVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRkaW5nX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgZm10KVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIGZtdClcblxuKCogQ3JlYXRlIGEgcHJlY2lzaW9uX2ZtdF9lYmIgZnJvbSBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wcmVjaXNpb25fZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcHJlY2lzaW9uIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwcmVjaXNpb25fZm10X2ViYiA9XG5mdW4gcHJlYyBmbXQgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uICAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChOb19wcmVjaXNpb24sIGZtdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKExpdF9wcmVjaXNpb24gcCwgZm10KVxuICB8IEFyZ19wcmVjaXNpb24gICAtPiBQcmVjaXNpb25fZm10X0VCQiAoQXJnX3ByZWNpc2lvbiwgZm10KVxuXG4oKiBDcmVhdGUgYSBwYWRwcmVjX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgYW5kIHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnRzXG4gICBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkcHJlY19mbXRfZWJiIDogdHlwZSB4IHkgeiB0IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+XG4gICAgKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgIChfLCBfLCBfLCBfLCBfKSBwYWRwcmVjX2ZtdF9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdCAtPlxuICBsZXQgUHJlY2lzaW9uX2ZtdF9FQkIgKHByZWMsIGZtdCcpID0gbWFrZV9wcmVjaXNpb25fZm10X2ViYiBwcmVjIGZtdCBpblxuICBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIHByZWMsIGZtdCcpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZHByZWNfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBwcmVjLCBmbXQnKVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIHByZWMsIGZtdCcpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwYXJzaW5nICopXG5cbigqIFBhcnNlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIGZvcm1hdCBhbmQgY3JlYXRlIGEgZm10X2ViYi4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSBpbiBjYXNlIG9mIGludmFsaWQgZm9ybWF0LiAqKVxubGV0IGZtdF9lYmJfb2Zfc3RyaW5nID9sZWdhY3lfYmVoYXZpb3Igc3RyID1cbiAgKCogUGFyYW1ldGVycyBuYW1pbmcgY29udmVudGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gbGl0X3N0YXJ0OiBzdGFydCBvZiB0aGUgbGl0ZXJhbCBzZXF1ZW5jZS4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzdHJfaW5kOiBjdXJyZW50IGluZGV4IGluIHRoZSBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGVuZF9pbmQ6IGVuZCBvZiB0aGUgY3VycmVudCAoc3ViLSlmb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcGN0X2luZDogaW5kZXggb2YgdGhlICclJyBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICopXG4gICgqICAgLSB6ZXJvOiAgaXMgdGhlICcwJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIG1pbnVzOiBpcyB0aGUgJy0nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGx1czogIGlzIHRoZSAnKycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBoYXNoOiAgaXMgdGhlICcjJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHNwYWNlOiBpcyB0aGUgJyAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaWduOiAgIGlzIHRoZSAnXycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwYWQ6IHBhZGRpbmcgb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHByZWM6IHByZWNpc2lvbiBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3ltYjogY2hhciByZXByZXNlbnRpbmcgdGhlIGNvbnZlcnNpb24gKCdjJywgJ3MnLCAnZCcsIC4uLikuICopXG4gICgqICAgLSBjaGFyX3NldDogc2V0IG9mIGNoYXJhY3RlcnMgYXMgYml0bWFwIChzZWUgc2NhbmYgJVsuLi5dKS4gICAgKilcblxuICBsZXQgbGVnYWN5X2JlaGF2aW9yID0gbWF0Y2ggbGVnYWN5X2JlaGF2aW9yIHdpdGhcbiAgICB8IFNvbWUgZmxhZyAtPiBmbGFnXG4gICAgfCBOb25lIC0+IHRydWVcbiAgKCogIFdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQsIHRoZSBmb3JtYXQgcGFyc2VyIHRyaWVzIHRvIGJlaGF2ZSBhc1xuICAgICAgdGhlIDw0LjAyIGltcGxlbWVudGF0aW9ucywgaW4gcGFydGljdWxhciBpdCBpZ25vcmVzIG1vc3QgYmVuaW5lXG4gICAgICBub25zZW5zaWNhbCBmb3JtYXQuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+PSAxICYmIHMuWzBdID0gJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGFjdGlvbiwgZm9sbG93ID1cbiAgICAgICAgICB0cnkgYXNzb2MzIHMgIXNwZWNsaXN0LCBOb25lXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBrZXl3b3JkLCBhcmcgPSBzcGxpdCBzIGluXG4gICAgICAgICAgICBhc3NvYzMga2V5d29yZCAhc3BlY2xpc3QsIFNvbWUgYXJnXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFN0b3AgKFVua25vd24gcykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub19hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJubyBhcmd1bWVudFwiKSkpIGluXG4gICAgICAgIGxldCBnZXRfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiAhY3VycmVudCArIDEgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2LighY3VycmVudCArIDEpXG4gICAgICAgICAgICAgIGVsc2UgcmFpc2UgKFN0b3AgKE1pc3NpbmcgcykpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBhcmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbmNyIGN1cnJlbnRcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIHRyZWF0X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5pdCBmIC0+IG5vX2FyZyAoKTsgZiAoKTtcbiAgICAgICAgfCBCb29sIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBib29sX29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGJvb2xlYW5cIikpKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gZiBzXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXQgciAtPiBub19hcmcgKCk7IHIgOj0gdHJ1ZTtcbiAgICAgICAgfCBDbGVhciByIC0+IG5vX2FyZyAoKTsgciA6PSBmYWxzZTtcbiAgICAgICAgfCBTdHJpbmcgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU3ltYm9sIChzeW1iLCBmKSAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFyZyBzeW1iIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwib25lIG9mOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAobWFrZV9zeW1saXN0IFwiXCIgXCIgXCIgXCJcIiBzeW1iKSkpKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+XG4gICAgICAgICAgICByIDo9IGdldF9hcmcgKCk7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBJbnQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9pbnQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEZsb2F0IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9mbG9hdCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBUdXBsZSBzcGVjcyAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgTGlzdC5pdGVyIHRyZWF0X2FjdGlvbiBzcGVjcztcbiAgICAgICAgfCBSZXN0IGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgLSAxIGRvXG4gICAgICAgICAgICAgIGYgIWFyZ3YuKCFjdXJyZW50ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgfCBSZXN0X2FsbCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IEFycmF5Lmxlbmd0aCAhYXJndiAtIDEgZG9cbiAgICAgICAgICAgICAgYWNjIDo9ICFhcmd2LighY3VycmVudCArIDEpIDo6ICFhY2M7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGYgKExpc3QucmV2ICFhY2MpXG4gICAgICAgIHwgRXhwYW5kIGYgLT5cbiAgICAgICAgICAgIGlmIG5vdCBhbGxvd19leHBhbmQgdGhlblxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkFyZy5FeHBhbmQgaXMgaXMgb25seSBhbGxvd2VkIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZy5wYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY1wiKTtcbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBsZXQgbmV3YXJnID0gZiBhcmcgaW5cbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IEFycmF5LnN1YiAhYXJndiAwICghY3VycmVudCArIDEpXG4gICAgICAgICAgICBhbmQgYWZ0ZXIgPVxuICAgICAgICAgICAgICBBcnJheS5zdWIgIWFyZ3YgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXkubGVuZ3RoICFhcmd2KSAtICFjdXJyZW50IC0gMSkgaW5cbiAgICAgICAgICAgIGFyZ3Y6PSBBcnJheS5jb25jYXQgW2JlZm9yZTtuZXdhcmc7YWZ0ZXJdO1xuICAgICAgICBpblxuICAgICAgICB0cmVhdF9hY3Rpb24gYWN0aW9uIGVuZFxuICAgICAgZWxzZSBhbm9uZnVuIHNcbiAgICB3aXRoIHwgQmFkIG0gLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgKE1lc3NhZ2UgbSkpO1xuICAgICAgICAgfCBTdG9wIGUgLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgZSk7XG4gICAgZW5kO1xuICAgIGluY3IgY3VycmVudFxuICBkb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggdHJ1ZSBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2dcblxubGV0IHBhcnNlX2FyZ3ZfZHluYW1pYyA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBmYWxzZSBjdXJyZW50IChyZWYgYXJndikgc3BlY2xpc3QgYW5vbmZ1blxuICAgIGVycm1zZ1xuXG5cbmxldCBwYXJzZV9hcmd2ID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYXJndl9keW5hbWljIH5jdXJyZW50OmN1cnJlbnQgYXJndiAocmVmIHNwZWNsaXN0KSBhbm9uZnVuIGVycm1zZ1xuXG5cbmxldCBwYXJzZSBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndiBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBwYXJzZV9keW5hbWljIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2X2R5bmFtaWMgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxubGV0IHBhcnNlX2V4cGFuZCBsIGYgbXNnID1cbiAgdHJ5XG4gICAgbGV0IGFyZ3YgPSByZWYgU3lzLmFyZ3YgaW5cbiAgICBsZXQgc3BlYyA9IHJlZiBsIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgKCFjdXJyZW50KSBpblxuICAgIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBzZWNvbmRfd29yZCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+PSBsZW4gdGhlbiBsZW5cbiAgICBlbHNlIGlmIHMuW25dID0gJyAnIHRoZW4gbG9vcCAobisxKVxuICAgIGVsc2UgblxuICBpblxuICBtYXRjaCBTdHJpbmcuaW5kZXggcyAnXFx0JyB3aXRoXG4gIHwgbiAtPiBsb29wIChuKzEpXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggU3RyaW5nLmluZGV4IHMgJyAnIHdpdGhcbiAgICAgIHwgbiAtPiBsb29wIChuKzEpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gbGVuXG4gICAgICBlbmRcblxuXG5sZXQgbWF4X2FyZ19sZW4gY3VyIChrd2QsIHNwZWMsIGRvYykgPVxuICBtYXRjaCBzcGVjIHdpdGhcbiAgfCBTeW1ib2wgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QpXG4gIHwgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QgKyBzZWNvbmRfd29yZCBkb2MpXG5cblxubGV0IHJlcGxhY2VfbGVhZGluZ190YWIgcyA9XG4gIGxldCBzZWVuID0gcmVmIGZhbHNlIGluXG4gIFN0cmluZy5tYXAgKGZ1bmN0aW9uICdcXHQnIHdoZW4gbm90ICFzZWVuIC0+IHNlZW4gOj0gdHJ1ZTsgJyAnIHwgYyAtPiBjKSBzXG5cbmxldCBhZGRfcGFkZGluZyBsZW4ga3NkID1cbiAgbWF0Y2gga3NkIHdpdGhcbiAgfCAoXywgXywgXCJcIikgLT5cbiAgICAgICgqIERvIG5vdCBwYWQgdW5kb2N1bWVudGVkIG9wdGlvbnMsIHNvIHRoYXQgdGhleSBzdGlsbCBkb24ndCBzaG93IHVwIHdoZW5cbiAgICAgICAqIHJ1biB0aHJvdWdoIFt1c2FnZV0gb3IgW3BhcnNlXS4gKilcbiAgICAgIGtzZFxuICB8IChrd2QsIChTeW1ib2wgXyBhcyBzcGVjKSwgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlICgoSW50Lm1heCAwIChsZW4gLSBjdXRjb2wpKSArIDMpICcgJyBpblxuICAgICAgKGt3ZCwgc3BlYywgXCJcXG5cIiBeIHNwYWNlcyBeIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICB8IChrd2QsIHNwZWMsIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBrd2RfbGVuID0gU3RyaW5nLmxlbmd0aCBrd2QgaW5cbiAgICAgIGxldCBkaWZmID0gbGVuIC0ga3dkX2xlbiAtIGN1dGNvbCBpblxuICAgICAgaWYgZGlmZiA8PSAwIHRoZW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSBkaWZmICcgJyBpblxuICAgICAgICBsZXQgcHJlZml4ID0gU3RyaW5nLnN1YiAocmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpIDAgY3V0Y29sIGluXG4gICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3ViIG1zZyBjdXRjb2wgKFN0cmluZy5sZW5ndGggbXNnIC0gY3V0Y29sKSBpblxuICAgICAgICAoa3dkLCBzcGVjLCBwcmVmaXggXiBzcGFjZXMgXiBzdWZmaXgpXG5cblxubGV0IGFsaWduID8obGltaXQ9bWF4X2ludCkgc3BlY2xpc3QgPVxuICBsZXQgY29tcGxldGVkID0gYWRkX2hlbHAgc3BlY2xpc3QgaW5cbiAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IG1heF9hcmdfbGVuIDAgY29tcGxldGVkIGluXG4gIGxldCBsZW4gPSBJbnQubWluIGxlbiBsaW1pdCBpblxuICBMaXN0Lm1hcCAoYWRkX3BhZGRpbmcgbGVuKSBjb21wbGV0ZWRcblxubGV0IHRyaW1fY3IgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuID4gMCAmJiBTdHJpbmcuZ2V0IHMgKGxlbiAtIDEpID0gJ1xccicgdGhlblxuICAgIFN0cmluZy5zdWIgcyAwIChsZW4gLSAxKVxuICBlbHNlXG4gICAgc1xuXG5sZXQgcmVhZF9hdXggdHJpbSBzZXAgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIGxldCB3b3JkcyA9IHJlZiBbXSBpblxuICBsZXQgc3Rhc2ggKCkgPVxuICAgIGxldCB3b3JkID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGxldCB3b3JkID0gaWYgdHJpbSB0aGVuIHRyaW1fY3Igd29yZCBlbHNlIHdvcmQgaW5cbiAgICB3b3JkcyA6PSB3b3JkIDo6ICF3b3JkcztcbiAgICBCdWZmZXIuY2xlYXIgYnVmXG4gIGluXG4gIGJlZ2luXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgbGV0IGMgPSBpbnB1dF9jaGFyIGljIGluXG4gICAgICAgIGlmIGMgPSBzZXAgdGhlbiBzdGFzaCAoKSBlbHNlIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgICAgZG9uZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gKClcbiAgZW5kO1xuICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA+IDAgdGhlbiBzdGFzaCAoKTtcbiAgY2xvc2VfaW4gaWM7XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2ICF3b3JkcylcblxubGV0IHJlYWRfYXJnID0gcmVhZF9hdXggdHJ1ZSAnXFxuJ1xuXG5sZXQgcmVhZF9hcmcwID0gcmVhZF9hdXggZmFsc2UgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfYXV4IHNlcCBmaWxlIGFyZ3MgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZmlsZSBpblxuICBBcnJheS5pdGVyIChmdW4gcyAtPiBmcHJpbnRmIG9jIFwiJXMlY1wiIHMgc2VwKSBhcmdzO1xuICBjbG9zZV9vdXQgb2NcblxubGV0IHdyaXRlX2FyZyA9IHdyaXRlX2F1eCAnXFxuJ1xuXG5sZXQgd3JpdGVfYXJnMCA9IHdyaXRlX2F1eCAnXFx4MDAnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IGRlc3RydWN0X2V4dF9jb25zdHJ1Y3RvciB4ID1cbiAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICgoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZyksIE5vbmUpXG4gIGVsc2VcbiAgICBsZXQgY29uc3RydWN0b3IgPVxuICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIChPYmouZmllbGQgeCAwKSAwKSA6IHN0cmluZykgaW5cbiAgICAoY29uc3RydWN0b3IsIFNvbWUgKGZpZWxkcyB4KSlcblxubGV0IHN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgdCA9XG4gIGxldCBjb25zdHJ1Y3RvciwgZmllbGRzX29wdCA9IGRlc3RydWN0X2V4dF9jb25zdHJ1Y3RvciB0IGluXG4gIG1hdGNoIGZpZWxkc19vcHQgd2l0aFxuICB8IE5vbmUgLT4gY29uc3RydWN0b3JcbiAgfCBTb21lIGYgLT4gY29uc3RydWN0b3IgXiBmXG5cbmxldCB0b19zdHJpbmdfZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgT3V0X29mX21lbW9yeSAtPiBcIk91dCBvZiBtZW1vcnlcIlxuICB8IFN0YWNrX292ZXJmbG93IC0+IFwiU3RhY2sgb3ZlcmZsb3dcIlxuICB8IE1hdGNoX2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzUpIFwiUGF0dGVybiBtYXRjaGluZyBmYWlsZWRcIlxuICB8IEFzc2VydF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIkFzc2VydGlvbiBmYWlsZWRcIlxuICB8IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIlVuZGVmaW5lZCByZWN1cnNpdmUgbW9kdWxlXCJcbiAgfCB4IC0+XG4gICAgICBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIChPYmoucmVwciB4KVxuXG5sZXQgdG9fc3RyaW5nIGUgPVxuICBtYXRjaCB1c2VfcHJpbnRlcnMgZSB3aXRoXG4gIHwgU29tZSBzIC0+IHNcbiAgfCBOb25lIC0+IHRvX3N0cmluZ19kZWZhdWx0IGVcblxubGV0IHByaW50IGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBmbHVzaCBzdGRlcnI7XG4gICAgcmFpc2UgeFxuXG5sZXQgY2F0Y2ggZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZmx1c2ggc3Rkb3V0O1xuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBleGl0IDJcblxudHlwZSByYXdfYmFja3RyYWNlX3Nsb3RcbnR5cGUgcmF3X2JhY2t0cmFjZV9lbnRyeSA9IHByaXZhdGUgaW50XG50eXBlIHJhd19iYWNrdHJhY2UgPSByYXdfYmFja3RyYWNlX2VudHJ5IGFycmF5XG5cbmxldCByYXdfYmFja3RyYWNlX2VudHJpZXMgYnQgPSBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZTpcbiAgdW5pdCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZVwiXG5cbmV4dGVybmFsIHJhaXNlX3dpdGhfYmFja3RyYWNlOiBleG4gLT4gcmF3X2JhY2t0cmFjZSAtPiAnYVxuICA9IFwiJXJhaXNlX3dpdGhfYmFja3RyYWNlXCJcblxudHlwZSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICAgOiBzdHJpbmc7XG4gICAgICBsaW5lX251bWJlciA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgIDogaW50O1xuICAgICAgZW5kX2NoYXIgICAgOiBpbnQ7XG4gICAgICBpc19pbmxpbmUgICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgICA6IHN0cmluZztcbiAgICB9XG4gIHwgVW5rbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSA6IGJvb2xcbiAgICB9XG5cbigqIHRvIGF2b2lkIHdhcm5pbmcgKilcbmxldCBfID0gW0tub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZTsgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlciA9IDA7IHN0YXJ0X2NoYXIgPSAwOyBlbmRfY2hhciA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2lubGluZSA9IGZhbHNlOyBkZWZuYW1lID0gXCJcIiB9O1xuICAgICAgICAgVW5rbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2UgfV1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAoaW5mbyBsLmlzX3JhaXNlKSBsLmRlZm5hbWUgbC5maWxlbmFtZVxuICAgICAgICAgICAgICAoaWYgbC5pc19pbmxpbmUgdGhlbiBcIiAoaW5saW5lZClcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgIGwubGluZV9udW1iZXIgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwubGluZV9udW1iZXI7XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfY2hhcjtcbiAgICB9XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF9cbiAgfCBLbm93bl9sb2NhdGlvbiB7IGRlZm5hbWUgPSBcIlwiIH0gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gU29tZSBsLmRlZm5hbWVcblxubGV0IGJhY2t0cmFjZV9zbG90cyByYXdfYmFja3RyYWNlID1cbiAgKCogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgU29tZSBpc1xuICAgICByZXR1cm5lZCBvbmx5IGlmIGEgcGFydCBvZiB0aGUgdHJhY2UgaXMgdXNhYmxlLiBUaGlzIGdpdmVzIHVzXG4gICAgIGEgYml0IG1vcmUgd29yayB0aGFuIGp1c3QgY29udmVydF9yYXdfYmFja3RyYWNlLCBidXQgaXQgbWFrZXMgdGhlXG4gICAgIEFQSSBtb3JlIHVzZXItZnJpZW5kbHkgLS0gb3RoZXJ3aXNlIG1vc3QgdXNlcnMgd291bGQgaGF2ZSB0b1xuICAgICByZWltcGxlbWVudCB0aGUgXCJQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgc29ycnlcIiBsb2dpY1xuICAgICB0aGVtc2VsdmVzLiAqKVxuICBtYXRjaCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYmFja3RyYWNlIC0+XG4gICAgICBsZXQgdXNhYmxlX3Nsb3QgPSBmdW5jdGlvblxuICAgICAgICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuICAgICAgICB8IEtub3duX2xvY2F0aW9uIF8gLT4gdHJ1ZSBpblxuICAgICAgbGV0IHJlYyBleGlzdHNfdXNhYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCAoLTEpIC0+IGZhbHNlXG4gICAgICAgIHwgaSAtPiB1c2FibGVfc2xvdCBiYWNrdHJhY2UuKGkpIHx8IGV4aXN0c191c2FibGUgKGkgLSAxKSBpblxuICAgICAgaWYgZXhpc3RzX3VzYWJsZSAoQXJyYXkubGVuZ3RoIGJhY2t0cmFjZSAtIDEpXG4gICAgICB0aGVuIFNvbWUgYmFja3RyYWNlXG4gICAgICBlbHNlIE5vbmVcblxubGV0IGJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkgZW50cnkgPVxuICBiYWNrdHJhY2Vfc2xvdHMgW3wgZW50cnkgfF1cblxubW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGZvcm1hdCA9IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdFxuICBsZXQgaXNfcmFpc2UgPSBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZVxuICBsZXQgaXNfaW5saW5lID0gYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lXG4gIGxldCBsb2NhdGlvbiA9IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uXG4gIGxldCBuYW1lID0gYmFja3RyYWNlX3Nsb3RfZGVmbmFtZVxuZW5kXG5cbmxldCByYXdfYmFja3RyYWNlX2xlbmd0aCBidCA9IEFycmF5Lmxlbmd0aCBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZSAtPiBpbnQgLT4gcmF3X2JhY2t0cmFjZV9zbG90ID0gXCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiByYXdfYmFja3RyYWNlX3Nsb3Qgb3B0aW9uXG4gID0gXCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XCJcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6XG4gICByZXR1cm5zIHRoZSAqc3RyaW5nKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBnZXRfYmFja3RyYWNlICgpID0gcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5leHRlcm5hbCByZWNvcmRfYmFja3RyYWNlOiBib29sIC0+IHVuaXQgPSBcImNhbWxfcmVjb3JkX2JhY2t0cmFjZVwiXG5leHRlcm5hbCBiYWNrdHJhY2Vfc3RhdHVzOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfYmFja3RyYWNlX3N0YXR1c1wiXG5cbmxldCByZWMgcmVnaXN0ZXJfcHJpbnRlciBmbiA9XG4gIGxldCBvbGRfcHJpbnRlcnMgPSBBdG9taWMuZ2V0IHByaW50ZXJzIGluXG4gIGxldCBuZXdfcHJpbnRlcnMgPSBmbiA6OiBvbGRfcHJpbnRlcnMgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IHByaW50ZXJzIG9sZF9wcmludGVycyBuZXdfcHJpbnRlcnMgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiByZWdpc3Rlcl9wcmludGVyIGZuXG5cbmV4dGVybmFsIGdldF9jYWxsc3RhY2s6IGludCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFja1wiXG5cbmxldCBleG5fc2xvdCB4ID1cbiAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gIGlmIE9iai50YWcgeCA9IDAgdGhlbiBPYmouZmllbGQgeCAwIGVsc2UgeFxuXG5sZXQgZXhuX3Nsb3RfaWQgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMSkgOiBpbnQpXG5cbmxldCBleG5fc2xvdF9uYW1lIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDApIDogc3RyaW5nKVxuXG5leHRlcm5hbCBnZXRfZGVidWdfaW5mb19zdGF0dXMgOiB1bml0IC0+IGludCA9IFwiY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1c1wiXG5cbigqIERlc2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHN0YXJ0dXAuaC4gU2VlIGFsc28gYmFja3RyYWNlLmMgKilcbmxldCBlcnJvcnMgPSBbfCBcIlwiO1xuICAoKiBGSUxFX05PVF9GT1VORCAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgbm90IGZvdW5kKVwiO1xuICAoKiBCQURfQllURUNPREUgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdClcIjtcbiAgKCogV1JPTkdfTUFHSUMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGhhcyB3cm9uZyBtYWdpYyBudW1iZXIpXCI7XG4gICgqIE5PX0ZEUyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgY2Fubm90IGJlIG9wZW5lZDtcXG4gXFxcbiAgICAgIC0tIHRvbyBtYW55IG9wZW4gZmlsZXMuIFRyeSBydW5uaW5nIHdpdGggT0NBTUxSVU5QQVJBTT1iPTIpXCJcbnxdXG5cbmxldCBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlID1cbiAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIGxldCBzdGF0dXMgPSBnZXRfZGVidWdfaW5mb19zdGF0dXMgKCkgaW5cbiAgaWYgc3RhdHVzIDwgMCB0aGVuXG4gICAgcHJlcnJfZW5kbGluZSBlcnJvcnMuKGFicyBzdGF0dXMpO1xuICBmbHVzaCBzdGRlcnJcblxubGV0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyID0gcmVmIGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXJcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBmbiA9IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIDo9IGZuXG5cbmxldCBlbXB0eV9iYWNrdHJhY2UgOiByYXdfYmFja3RyYWNlID0gW3wgfF1cblxubGV0IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSA9XG4gIHRyeVxuICAgIGdldF9yYXdfYmFja3RyYWNlICgpXG4gIHdpdGggXyAoKiBPdXRfb2ZfbWVtb3J5PyAqKSAtPlxuICAgIGVtcHR5X2JhY2t0cmFjZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgICgqIEdldCB0aGUgYmFja3RyYWNlIG5vdywgaW4gY2FzZSBvbmUgb2YgdGhlIFthdF9leGl0XSBmdW5jdGlvblxuICAgICAgIGRlc3Ryb3lzIGl0LiAqKVxuICAgIGxldCByYXdfYmFja3RyYWNlID1cbiAgICAgIGlmIGRlYnVnZ2VyX2luX3VzZSAoKiBTYW1lIHRlc3QgYXMgaW4gW3J1bnRpbWUvcHJpbnRleGMuY10gKikgdGhlblxuICAgICAgICBlbXB0eV9iYWNrdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpXG4gICAgaW5cbiAgICAodHJ5IFN0ZGxpYi5kb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgdHJ5XG4gICAgICAhdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2VcbiAgICB3aXRoIGV4bicgLT5cbiAgICAgIGxldCByYXdfYmFja3RyYWNlJyA9IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yIGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyOiBleGNlcHRpb24gJXNcXG5cIlxuICAgICAgICAodG9fc3RyaW5nIGV4bicpO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZSc7XG4gICAgICBmbHVzaCBzdGRlcnJcbiAgd2l0aFxuICAgIHwgT3V0X29mX21lbW9yeSAtPlxuICAgICAgICBwcmVycl9lbmRsaW5lXG4gICAgICAgICAgXCJGYXRhbCBlcnJvcjogb3V0IG9mIG1lbW9yeSBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlclwiXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IFtjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbl0gaW5cbiAgIFtydW50aW1lL3ByaW50ZXhjLmNdIHdoaWNoIGV4cGVjdHMgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlXG4gIHdpdGggXyAtPlxuICAgICgqIFRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50ICopXG4gICAgKClcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiXG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIHZlcmJvc2UgOiBpbnQ7XG4gIG1heF9vdmVyaGVhZCA6IGludDtcbiAgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcblxubGV0IGV2ZW50bG9nX3BhdXNlICgpID0gKClcbmxldCBldmVudGxvZ19yZXN1bWUgKCkgPSAoKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgQXRvbWljLnRcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmIEF0b21pYy5nZXQgYXJlYy5hY3RpdmUgdGhlbiBiZWdpblxuICAgIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgICBhcmVjLmYgKCk7XG4gIGVuZFxuXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSBBdG9taWMubWFrZSB0cnVlOyBmID0gZiB9IGluXG4gIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgYXJlYy5hY3RpdmVcblxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBBdG9taWMuc2V0IGEgZmFsc2VcblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB1bml0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTWVzc2FnZSBkaWdlc3QgKE1ENSkgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbmxldCBzdHJpbmcgc3RyID1cbiAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbmxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbmxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxubGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbmxldCBmaWxlIGZpbGVuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZW5hbWUgaW5cbiAgbWF0Y2ggY2hhbm5lbCBpYyAoLTEpIHdpdGhcbiAgICB8IGQgLT4gY2xvc2VfaW4gaWM7IGRcbiAgICB8IGV4Y2VwdGlvbiBlIC0+IGNsb3NlX2luIGljOyByYWlzZSBlXG5cbmxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPVxuICBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbmxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbmxldCBjaGFyX2hleCBuID1cbiAgQ2hhci51bnNhZmVfY2hyIChuICsgaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyBlbHNlIChDaGFyLmNvZGUgJ2EnIC0gMTApKVxuXG5sZXQgdG9faGV4IGQgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAzMiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgZnJvbV9oZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRGlnZXN0LmZyb21faGV4XCIpXG4gIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBCeXRlcy5zZXQgcmVzdWx0IGkgKENoYXIuY2hyIChieXRlICgyICogaSkpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gICAgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kIGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBmbG9hdDMyID0gRmxvYXQzMlxubGV0IGZsb2F0NjQgPSBGbG9hdDY0XG5sZXQgaW50OF9zaWduZWQgPSBJbnQ4X3NpZ25lZFxubGV0IGludDhfdW5zaWduZWQgPSBJbnQ4X3Vuc2lnbmVkXG5sZXQgaW50MTZfc2lnbmVkID0gSW50MTZfc2lnbmVkXG5sZXQgaW50MTZfdW5zaWduZWQgPSBJbnQxNl91bnNpZ25lZFxubGV0IGludDMyID0gSW50MzJcbmxldCBpbnQ2NCA9IEludDY0XG5sZXQgaW50ID0gSW50XG5sZXQgbmF0aXZlaW50ID0gTmF0aXZlaW50XG5sZXQgY29tcGxleDMyID0gQ29tcGxleDMyXG5sZXQgY29tcGxleDY0ID0gQ29tcGxleDY0XG5sZXQgY2hhciA9IENoYXJcblxubGV0IGtpbmRfc2l6ZV9pbl9ieXRlcyA6IHR5cGUgYSBiLiAoYSwgYikga2luZCAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEZsb2F0MzIgLT4gNFxuICB8IEZsb2F0NjQgLT4gOFxuICB8IEludDhfc2lnbmVkIC0+IDFcbiAgfCBJbnQ4X3Vuc2lnbmVkIC0+IDFcbiAgfCBJbnQxNl9zaWduZWQgLT4gMlxuICB8IEludDE2X3Vuc2lnbmVkIC0+IDJcbiAgfCBJbnQzMiAtPiA0XG4gIHwgSW50NjQgLT4gOFxuICB8IEludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IE5hdGl2ZWludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IENvbXBsZXgzMiAtPiA4XG4gIHwgQ29tcGxleDY0IC0+IDE2XG4gIHwgQ2hhciAtPiAxXG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9sYXlvdXQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGNfbGF5b3V0ID0gQ19sYXlvdXRcbmxldCBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBHZW5hcnJheSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0XG4gIGV4dGVybmFsIGNyZWF0ZTogKCdhLCAnYikga2luZCAtPiAnYyBsYXlvdXQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgID0gXCJjYW1sX2JhX2NyZWF0ZVwiXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhXG4gICAgID0gXCJjYW1sX2JhX2dldF9nZW5lcmljXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9zZXRfZ2VuZXJpY1wiXG5cbiAgbGV0IHJlYyBjbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sID0gQXJyYXkubGVuZ3RoIGlkeCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMCB0byBwcmVkIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgY2xvb3AgYXJyIGlkeCBmIChzdWNjIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCByZWMgZmxvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA8IDAgdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDEgdG8gbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBmbG9vcCBhcnIgaWR4IGYgKHByZWQgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbXMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW1zIGluXG4gICAgbGV0IGRsZW4gPSBBcnJheS5sZW5ndGggZGltcyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAwKSBmIDAgZGltczsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAxKSBmIChwcmVkIGRsZW4pIGRpbXM7IGFyclxuXG4gIGV4dGVybmFsIG51bV9kaW1zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcImNhbWxfYmFfbnVtX2RpbXNcIlxuICBleHRlcm5hbCBudGhfZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2JhX2RpbVwiXG4gIGxldCBkaW1zIGEgPVxuICAgIGxldCBuID0gbnVtX2RpbXMgYSBpblxuICAgIGxldCBkID0gQXJyYXkubWFrZSBuIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvIGQuKGkpIDwtIG50aF9kaW0gYSBpIGRvbmU7XG4gICAgZFxuXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoQXJyYXkuZm9sZF9sZWZ0ICggKiApIDEgKGRpbXMgYXJyKSlcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc2xpY2VfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgc2xpY2VfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5lbmRcblxubW9kdWxlIEFycmF5MCA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8fF1cbiAgbGV0IGdldCBhcnIgPSBHZW5hcnJheS5nZXQgYXJyIFt8fF1cbiAgbGV0IHNldCBhcnIgPSBHZW5hcnJheS5zZXQgYXJyIFt8fF1cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPSBraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKVxuXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5cbiAgbGV0IG9mX3ZhbHVlIGtpbmQgbGF5b3V0IHYgPVxuICAgIGxldCBhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGluXG4gICAgc2V0IGEgdjtcbiAgICBhXG4gIGxldCBpbml0ID0gb2ZfdmFsdWVcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0gYXJyKVxuXG4gIGV4dGVybmFsIHN1YjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCAnYykgdCA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2UgKHR5cGUgdCkgKGEgOiAoXywgXywgdCkgR2VuYXJyYXkudCkgbiA9XG4gICAgbWF0Y2ggbGF5b3V0IGEgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XSA6IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF06IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAxIHRvIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbSBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IChBcnJheS5sZW5ndGggZGF0YSkgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkYXRhIC0gMSBkbyB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSBkYXRhLihpKSBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTJ8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8yXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzJcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdCBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0IGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgcm93LihqKVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkzID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yOyBkaW0zfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3NldF8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfM1wiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwgZGltMzogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fM1wiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycikgKiAoZGltMyBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9sZWZ0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICBmb3IgayA9IDAgdG8gcHJlZCBkaW0zIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBrID0gMSB0byBkaW0zIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBkaW0zID0gaWYgZGltMiA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIGxldCBjb2wgPSByb3cuKGopIGluXG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjb2wgPD4gZGltMyB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgICBmb3IgayA9IDAgdG8gZGltMyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgKGsgKyBvZnMpIGNvbC4oaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTA6ICgnYSwgJ2IsICdjKSBBcnJheTAudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTE6ICgnYSwgJ2IsICdjKSBBcnJheTEudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTI6ICgnYSwgJ2IsICdjKSBBcnJheTIudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTM6ICgnYSwgJ2IsICdjKSBBcnJheTMudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5sZXQgYXJyYXkwX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMCB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MF9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkxX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMSB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MV9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkyX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMiB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkzX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMyB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheVwiXG5cbmV4dGVybmFsIHJlc2hhcGU6XG4gICAoJ2EsICdiLCAnYykgR2VuYXJyYXkudCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCJjYW1sX2JhX3Jlc2hhcGVcIlxubGV0IHJlc2hhcGVfMCBhID0gcmVzaGFwZSBhIFt8fF1cbmxldCByZXNoYXBlXzEgYSBkaW0xID0gcmVzaGFwZSBhIFt8ZGltMXxdXG5sZXQgcmVzaGFwZV8yIGEgZGltMSBkaW0yID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yfF1cbmxldCByZXNoYXBlXzMgYSBkaW0xIGRpbTIgZGltMyA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMjtkaW0zfF1cblxuKCogRm9yY2UgY2FtbF9iYV9nZXRfezEsMiwzLE59IHRvIGJlIGxpbmtlZCBpbiwgc2luY2Ugd2UgZG9uJ3QgcmVmZXJcbiAgIHRvIHRob3NlIHByaW1pdGl2ZXMgZGlyZWN0bHkgaW4gdGhpcyBmaWxlICopXG5cbmxldCBfID1cbiAgbGV0IF8gPSBHZW5hcnJheS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTEuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkyLmdldCBpblxuICBsZXQgXyA9IEFycmF5My5nZXQgaW5cbiAgKClcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cbmV4dGVybmFsIGdldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMVwiXG5leHRlcm5hbCBnZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzJcIlxuZXh0ZXJuYWwgZ2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8zXCJcbmV4dGVybmFsIHNldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCBzZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENhbWJpdW0sIENvbGxlZ2UgZGUgRnJhbmNlIGFuZCBJbnJpYSAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yICopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICBvcGVuIEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gKGludDY0LCBpbnQ2NF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG4gIGV4dGVybmFsIG5leHQ6IHQgLT4gKGludDY0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2x4bV9uZXh0XCIgXCJjYW1sX2x4bV9uZXh0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjcmVhdGUgKCkgOiB0ID1cbiAgICBBcnJheTEuY3JlYXRlIEludDY0IENfbGF5b3V0IDRcblxuICBsZXQgc2V0IHMgaTEgaTIgaTMgaTQgPVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMCAoSW50NjQubG9nb3IgaTEgMUwpOyAoKiBtdXN0IGJlIG9kZCAqKVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMSBpMjtcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDIgKGlmIGkzIDw+IDBMIHRoZW4gaTMgZWxzZSAxTCk7ICgqIG11c3Qgbm90IGJlIDAgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDMgKGlmIGk0IDw+IDBMIHRoZW4gaTQgZWxzZSAyTCkgKCogbXVzdCBub3QgYmUgMCAqKVxuXG4gIGxldCBtayBpMSBpMiBpMyBpNCA9XG4gICAgbGV0IHMgPSBjcmVhdGUgKCkgaW5cbiAgICBzZXQgcyBpMSBpMiBpMyBpNDsgc1xuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgKCogUmV0dXJuIDMwIHJhbmRvbSBiaXRzIGFzIGFuIGludGVnZXIgMCA8PSB4IDwgMTA3Mzc0MTgyNCAqKVxuICBsZXQgYml0cyBzID1cbiAgICBJbnQ2NC50b19pbnQgKG5leHQgcykgbGFuZCAweDNGRkZfRkZGRlxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkgKilcbiAgbGV0IHJlYyBpbnRhdXggcyBuID1cbiAgICBsZXQgciA9IGJpdHMgcyBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gMHgzRkZGRkZGRiAtIG4gKyAxIHRoZW4gaW50YXV4IHMgbiBlbHNlIHZcblxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICopXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIG1heF9pbnQgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIDMyIHJhbmRvbSBiaXRzIGFzIGFuIFtpbnQzMl0gKilcbiAgbGV0IGJpdHMzMiBzID1cbiAgICBJbnQ2NC50b19pbnQzMiAobmV4dCBzKVxuXG4gICgqIFJldHVybiBhbiBbaW50MzJdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgaW50MzJhdXggcyBuID1cbiAgICBsZXQgciA9IEludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJpdHMzMiBzKSAxIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuKHN1YiByIHYgPiBhZGQgKHN1YiBtYXhfaW50IG4pIDFsKVxuICAgIHRoZW4gaW50MzJhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDMyIHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQzMlwiXG4gICAgZWxzZSBpbnQzMmF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIDY0IHJhbmRvbSBiaXRzIGFzIGFuIFtpbnQ2NF0gKilcbiAgbGV0IGJpdHM2NCBzID1cbiAgICBuZXh0IHNcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzNjQgcykgMSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxTClcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiAzMiBvciA2NCByYW5kb20gYml0cyBhcyBhIFtuYXRpdmVpbnRdICopXG4gIGxldCBuYXRpdmViaXRzID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGJpdHMzMiBzKVxuICAgIGVsc2UgZnVuIHMgLT4gSW50NjQudG9fbmF0aXZlaW50IChiaXRzNjQgcylcblxuICAoKiBSZXR1cm4gYSBbbmF0aXZlaW50XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgMCA8IHggPCAxIHVuaWZvcm1seSBkaXN0cmlidXRlZCBhbW9uZyB0aGVcbiAgICAgbXVsdGlwbGVzIG9mIDJeLTUzICopXG4gIGxldCByZWMgcmF3ZmxvYXQgcyA9XG4gICAgbGV0IGIgPSBuZXh0IHMgaW5cbiAgICBsZXQgbiA9IEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYiAxMSBpblxuICAgIGlmIG4gPD4gMEwgdGhlbiBJbnQ2NC50b19mbG9hdCBuICouIDB4MS5wLTUzIGVsc2UgcmF3ZmxvYXQgc1xuXG4gICgqIFJldHVybiBhIGZsb2F0IGJldHdlZW4gMCBhbmQgW2JvdW5kXSAqKVxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICAoKiBSZXR1cm4gYSByYW5kb20gQm9vbGVhbiAqKVxuICBsZXQgYm9vbCBzID0gbmV4dCBzIDwgMExcblxuICAoKiBTcGxpdCBhIG5ldyBQUk5HIG9mZiB0aGUgZ2l2ZW4gUFJORyAqKVxuICBsZXQgc3BsaXQgcyA9XG4gICAgbGV0IGkxID0gYml0czY0IHMgaW4gbGV0IGkyID0gYml0czY0IHMgaW5cbiAgICBsZXQgaTMgPSBiaXRzNjQgcyBpbiBsZXQgaTQgPSBiaXRzNjQgcyBpblxuICAgIG1rIGkxIGkyIGkzIGk0XG5lbmRcblxubGV0IG1rX2RlZmF1bHQgKCkgPVxuICAoKiBUaGlzIGlzIHRoZSBzdGF0ZSBvYnRhaW5lZCB3aXRoIFtTdGF0ZS5tYWtlIFt8IDMxNDE1OTI2NSB8XV0uICopXG4gIFN0YXRlLm1rICgtNjE5Njg3NDI4OTU2NzcwNTA5N0wpXG4gICAgICAgICAgIDU4NjU3MzI0OTgzMzcxMzE4OUxcbiAgICAgICAgICAgKC04NTkxMjY4ODAzODY1MDQzNDA3TClcbiAgICAgICAgICAgNjM4ODYxMzU5NTg0OTc3MjA0NExcblxubGV0IHJhbmRvbV9rZXkgPVxuICBEb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50OlN0YXRlLnNwbGl0IG1rX2RlZmF1bHRcblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBmdWxsX2ludCBib3VuZCA9IFN0YXRlLmZ1bGxfaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludDMyIGJvdW5kID0gU3RhdGUuaW50MzIgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzMzIgKCkgPSBTdGF0ZS5iaXRzMzIgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czY0ICgpID0gU3RhdGUuYml0czY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IG5hdGl2ZWJpdHMgKCkgPSBTdGF0ZS5uYXRpdmViaXRzIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5yZWluaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogU3BsaXR0aW5nICopXG5cbmxldCBzcGxpdCAoKSA9IFN0YXRlLnNwbGl0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gdGhlIGxvYWQgZmFjdG9yIGJlY29tZXMgdG9vIGhpZ2guICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IEF0b21pYy5tYWtlIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gQXRvbWljLnNldCByYW5kb21pemVkIHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gQXRvbWljLmdldCByYW5kb21pemVkXG5cbmxldCBwcm5nX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KSBlbHNlIDBcbiAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHNlZWRlZF9oYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+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+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyXG4gKiAgICAtIExpbmtcbiAqICAgIC0gRGF0YSAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMiAoKiBDQU1MX0VQSEVfRklSU1RfS0VZIGluIHdlYWsuaCAqKVxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6IHQgLT4gaW50ICogaW50ICogaW50ICogaW50ICogaW50ICogaW50XG5lbmRcblxubW9kdWxlIE1ha2UgKEggOiBIYXNodGJsLkhhc2hlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGRhdGEgPSBILnQpID0gc3RydWN0XG5cbiAgdHlwZSAnYSB3ZWFrX3QgPSAnYSB0XG4gIGxldCB3ZWFrX2NyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgZW1wdHlidWNrZXQgPSB3ZWFrX2NyZWF0ZSAwXG5cbiAgdHlwZSBkYXRhID0gSC50XG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgdGFibGUgOiBkYXRhIHdlYWtfdCBhcnJheTtcbiAgICBtdXRhYmxlIGhhc2hlcyA6IGludCBhcnJheSBhcnJheTtcbiAgICBtdXRhYmxlIGxpbWl0IDogaW50OyAgICAgICAgICAgICAgICgqIGJ1Y2tldCBzaXplIGxpbWl0ICopXG4gICAgbXV0YWJsZSBvdmVyc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBudW1iZXIgb2Ygb3ZlcnNpemUgYnVja2V0cyAqKVxuICAgIG11dGFibGUgcm92ZXIgOiBpbnQ7ICAgICAgICAgICAgICAgKCogZm9yIGludGVybmFsIGJvb2trZWVwaW5nICopXG4gIH1cblxuICBsZXQgZ2V0X2luZGV4IHQgaCA9IChoIGxhbmQgbWF4X2ludCkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuICBsZXQgbGltaXQgPSA3XG4gIGxldCBvdmVyX2xpbWl0ID0gMlxuXG4gIGxldCBjcmVhdGUgc3ogPVxuICAgIGxldCBzeiA9IGlmIHN6IDwgNyB0aGVuIDcgZWxzZSBzeiBpblxuICAgIGxldCBzeiA9IGlmIHN6ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIHN6IGluXG4gICAge1xuICAgICAgdGFibGUgPSBBcnJheS5tYWtlIHN6IGVtcHR5YnVja2V0O1xuICAgICAgaGFzaGVzID0gQXJyYXkubWFrZSBzeiBbfCB8XTtcbiAgICAgIGxpbWl0ID0gbGltaXQ7XG4gICAgICBvdmVyc2l6ZSA9IDA7XG4gICAgICByb3ZlciA9IDA7XG4gICAgfVxuXG4gIGxldCBjbGVhciB0ID1cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgICB0LnRhYmxlLihpKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgIHQuaGFzaGVzLihpKSA8LSBbfCB8XTtcbiAgICBkb25lO1xuICAgIHQubGltaXQgPC0gbGltaXQ7XG4gICAgdC5vdmVyc2l6ZSA8LSAwXG5cblxuICBsZXQgZm9sZCBmIHQgaW5pdCA9XG4gICAgbGV0IHJlYyBmb2xkX2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGZvbGRfYnVja2V0IChpKzEpIGIgKGYgdiBhY2N1KVxuICAgICAgfCBOb25lIC0+IGZvbGRfYnVja2V0IChpKzEpIGIgYWNjdVxuICAgIGluXG4gICAgQXJyYXkuZm9sZF9yaWdodCAoZm9sZF9idWNrZXQgMCkgdC50YWJsZSBpbml0XG5cblxuICBsZXQgaXRlciBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGYgdjsgaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgICAgfCBOb25lIC0+IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXIgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCBpdGVyX3dlYWsgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgaiBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBjaGVjayBiIGkgd2l0aFxuICAgICAgfCB0cnVlIC0+IGYgYiB0Lmhhc2hlcy4oaikgaTsgaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgICB8IGZhbHNlIC0+IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgIGluXG4gICAgQXJyYXkuaXRlcmkgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCByZWMgY291bnRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgY291bnRfYnVja2V0IChpKzEpIGIgKGFjY3UgKyAoaWYgY2hlY2sgYiBpIHRoZW4gMSBlbHNlIDApKVxuXG5cbiAgbGV0IGNvdW50IHQgPVxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGNvdW50X2J1Y2tldCAwKSB0LnRhYmxlIDBcblxuXG4gIGxldCBuZXh0X3N6IG4gPSBJbnQubWluICgzICogbiAvIDIgKyAzKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuICBsZXQgcHJldl9zeiBuID0gKChuIC0gMykgKiAyICsgMikgLyAzXG5cbiAgbGV0IHRlc3Rfc2hyaW5rX2J1Y2tldCB0ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4odC5yb3ZlcikgaW5cbiAgICBsZXQgaGJ1Y2tldCA9IHQuaGFzaGVzLih0LnJvdmVyKSBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHByZXZfbGVuID0gcHJldl9zeiBsZW4gaW5cbiAgICBsZXQgbGl2ZSA9IGNvdW50X2J1Y2tldCAwIGJ1Y2tldCAwIGluXG4gICAgaWYgbGl2ZSA8PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGxvb3AgaSBqID1cbiAgICAgICAgaWYgaiA+PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBsb29wIChpICsgMSkgalxuICAgICAgICAgIGVsc2UgaWYgY2hlY2sgYnVja2V0IGogdGhlbiBiZWdpblxuICAgICAgICAgICAgYmxpdCBidWNrZXQgaiBidWNrZXQgaSAxO1xuICAgICAgICAgICAgaGJ1Y2tldC4oaSkgPC0gaGJ1Y2tldC4oaik7XG4gICAgICAgICAgICBsb29wIChpICsgMSkgKGogLSAxKTtcbiAgICAgICAgICBlbmQgZWxzZSBsb29wIGkgKGogLSAxKTtcbiAgICAgICAgZW5kO1xuICAgICAgaW5cbiAgICAgIGxvb3AgMCAobGVuZ3RoIGJ1Y2tldCAtIDEpO1xuICAgICAgaWYgcHJldl9sZW4gPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gZW1wdHlidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBbfCB8XTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBwcmV2X2xlbiBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHByZXZfbGVuO1xuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBBcnJheS5zdWIgaGJ1Y2tldCAwIHByZXZfbGVuXG4gICAgICBlbmQ7XG4gICAgICBpZiBsZW4gPiB0LmxpbWl0ICYmIHByZXZfbGVuIDw9IHQubGltaXQgdGhlbiB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgLSAxO1xuICAgIGVuZDtcbiAgICB0LnJvdmVyIDwtICh0LnJvdmVyICsgMSkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuXG4gIGxldCByZWMgcmVzaXplIHQgPVxuICAgIGxldCBvbGRsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBuZXdsZW4gPSBuZXh0X3N6IG9sZGxlbiBpblxuICAgIGlmIG5ld2xlbiA+IG9sZGxlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgbmV3dCA9IGNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgIGxldCBhZGRfd2VhayBvYiBvaCBvaSA9XG4gICAgICAgIGxldCBzZXR0ZXIgbmIgbmkgXyA9IGJsaXQgb2Igb2kgbmIgbmkgMSBpblxuICAgICAgICBsZXQgaCA9IG9oLihvaSkgaW5cbiAgICAgICAgYWRkX2F1eCBuZXd0IHNldHRlciBOb25lIGggKGdldF9pbmRleCBuZXd0IGgpO1xuICAgICAgaW5cbiAgICAgIGl0ZXJfd2VhayBhZGRfd2VhayB0O1xuICAgICAgdC50YWJsZSA8LSBuZXd0LnRhYmxlO1xuICAgICAgdC5oYXNoZXMgPC0gbmV3dC5oYXNoZXM7XG4gICAgICB0LmxpbWl0IDwtIG5ld3QubGltaXQ7XG4gICAgICB0Lm92ZXJzaXplIDwtIG5ld3Qub3ZlcnNpemU7XG4gICAgICB0LnJvdmVyIDwtIHQucm92ZXIgbW9kIEFycmF5Lmxlbmd0aCBuZXd0LnRhYmxlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICB0LmxpbWl0IDwtIG1heF9pbnQ7ICAgICAgICAgICAgICgqIG1heGltdW0gc2l6ZSBhbHJlYWR5IHJlYWNoZWQgKilcbiAgICAgIHQub3ZlcnNpemUgPC0gMDtcbiAgICBlbmRcblxuICBhbmQgYWRkX2F1eCB0IHNldHRlciBkIGggaW5kZXggPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5ld3N6ID1cbiAgICAgICAgICBJbnQubWluICgzICogc3ogLyAyICsgMykgKFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXMpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5ld3N6IDw9IHN6IHRoZW4gZmFpbHdpdGggXCJXZWFrLk1ha2U6IGhhc2ggYnVja2V0IGNhbm5vdCBncm93IG1vcmVcIjtcbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIG5ld3N6IGluXG4gICAgICAgIGxldCBuZXdoYXNoZXMgPSBBcnJheS5tYWtlIG5ld3N6IDAgaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBzejtcbiAgICAgICAgQXJyYXkuYmxpdCBoYXNoZXMgMCBuZXdoYXNoZXMgMCBzejtcbiAgICAgICAgc2V0dGVyIG5ld2J1Y2tldCBzeiBkO1xuICAgICAgICBuZXdoYXNoZXMuKHN6KSA8LSBoO1xuICAgICAgICB0LnRhYmxlLihpbmRleCkgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4oaW5kZXgpIDwtIG5ld2hhc2hlcztcbiAgICAgICAgaWYgc3ogPD0gdC5saW1pdCAmJiBuZXdzeiA+IHQubGltaXQgdGhlbiBiZWdpblxuICAgICAgICAgIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSArIDE7XG4gICAgICAgICAgZm9yIF9pID0gMCB0byBvdmVyX2xpbWl0IGRvIHRlc3Rfc2hyaW5rX2J1Y2tldCB0IGRvbmU7XG4gICAgICAgIGVuZDtcbiAgICAgICAgaWYgdC5vdmVyc2l6ZSA+IEFycmF5Lmxlbmd0aCB0LnRhYmxlIC8gb3Zlcl9saW1pdCB0aGVuIHJlc2l6ZSB0O1xuICAgICAgZW5kIGVsc2UgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBiZWdpblxuICAgICAgICBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldHRlciBidWNrZXQgaSBkO1xuICAgICAgICBoYXNoZXMuKGkpIDwtIGg7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBhZGQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIChnZXRfaW5kZXggdCBoKVxuXG5cbiAgbGV0IGZpbmRfb3IgdCBkIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kIGggaW5kZXhcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IG1lcmdlIHQgZCA9XG4gICAgZmluZF9vciB0IGQgKGZ1biBoIGluZGV4IC0+IGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpbmRleDsgZClcblxuXG4gIGxldCBmaW5kIHQgZCA9IGZpbmRfb3IgdCBkIChmdW4gX2ggX2luZGV4IC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgZmluZF9vcHQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBmaW5kX3NoYWRvdyB0IGQgaWZmb3VuZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBpZmZvdW5kIGJ1Y2tldCBpXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgcmVtb3ZlIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIHcgaSAtPiBzZXQgdyBpIE5vbmUpICgpXG5cblxuICBsZXQgbWVtIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIF93IF9pIC0+IHRydWUpIGZhbHNlXG5cblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpIGFjY3VcbiAgICBpblxuICAgIGxvb3AgMCBbXVxuXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBiID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBiIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cbigqIEluaXRpYWxpc2UgZG9tYWluIGxvY2FsIHN0YXRlICopXG5tb2R1bGUgRExTID0gRG9tYWluLkRMU1xuXG5sZXQgc3RkYnVmX2tleSA9IERMUy5uZXdfa2V5IHBwX21ha2VfYnVmZmVyXG5sZXQgXyA9IERMUy5zZXQgc3RkYnVmX2tleSBzdGRidWZcblxubGV0IHN0cl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBmb3JtYXR0ZXJfb2ZfYnVmZmVyIChETFMuZ2V0IHN0ZGJ1Zl9rZXkpKVxubGV0IF8gPSBETFMuc2V0IHN0cl9mb3JtYXR0ZXJfa2V5IHN0cl9mb3JtYXR0ZXJcblxubGV0IGJ1ZmZlcmVkX291dF9zdHJpbmcga2V5IHN0ciBvZnMgbGVuID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgKERvbWFpbi5ETFMuZ2V0IGtleSkgc3RyIG9mcyBsZW5cblxubGV0IGJ1ZmZlcmVkX291dF9mbHVzaCBvYyBrZXkgKCkgPVxuICBsZXQgYnVmID0gRG9tYWluLkRMUy5nZXQga2V5IGluXG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0ciAwIGxlbiA7XG4gIFN0ZGxpYi5mbHVzaCBvYztcbiAgQnVmZmVyLmNsZWFyIGJ1ZlxuXG5sZXQgc3RkX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxubGV0IGVycl9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcblxubGV0IHN0ZF9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IHN0ZF9mb3JtYXR0ZXJfa2V5IHN0ZF9mb3JtYXR0ZXJcblxubGV0IGVycl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IGVycl9mb3JtYXR0ZXJfa2V5IGVycl9mb3JtYXR0ZXJcblxubGV0IGdldF9zdGRfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleVxubGV0IGdldF9lcnJfZm9ybWF0dGVyICgpID0gRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdHJfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdGRidWYgKCkgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXlcblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPVxuICBsZXQgc3RkYnVmID0gRExTLmdldCBzdGRidWZfa2V5IGluXG4gIGxldCBzdHJfZm9ybWF0dGVyID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleSBpblxuICBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbmxldCBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IG91dHB1dCcgPSBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgaW5cbiAgICBsZXQgZmx1c2gnICgpID1cbiAgICAgIG91dHB1dCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgMCAoQnVmZmVyLmxlbmd0aCBidWYpO1xuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGZsdXNoICgpXG4gICAgaW5cbiAgICBtYWtlX2Zvcm1hdHRlciBvdXRwdXQnIGZsdXNoJylcblxubGV0IHN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCB2ID0gcHBfb3Blbl9oYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl92Ym94IHYgPSBwcF9vcGVuX3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2h2Ym94IHYgPSBwcF9vcGVuX2h2Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ob3Zib3ggdiA9IHBwX29wZW5faG92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ib3ggdiA9IHBwX29wZW5fYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfYm94IHYgPSBwcF9jbG9zZV9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3N0YWcgdiA9IHBwX29wZW5fc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3N0YWcgdiA9IHBwX2Nsb3NlX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9hcyB2IHcgPSBwcF9wcmludF9hcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfc3RyaW5nIHYgPSBwcF9wcmludF9zdHJpbmcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ieXRlcyB2ID0gcHBfcHJpbnRfYnl0ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pbnQgdiA9IHBwX3ByaW50X2ludCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Zsb2F0IHYgPSBwcF9wcmludF9mbG9hdCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2NoYXIgdiA9IHBwX3ByaW50X2NoYXIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ib29sIHYgPSBwcF9wcmludF9ib29sIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnJlYWsgdiB3ID0gcHBfcHJpbnRfYnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X2N1dCB2ID0gcHBfcHJpbnRfY3V0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3BhY2UgdiA9IHBwX3ByaW50X3NwYWNlIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZm9yY2VfbmV3bGluZSB2ID0gcHBfZm9yY2VfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ZsdXNoIHYgPSBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X25ld2xpbmUgdiA9IHBwX3ByaW50X25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pZl9uZXdsaW5lIHYgPSBwcF9wcmludF9pZl9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBvcGVuX3Rib3ggdiA9IHBwX29wZW5fdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3Rib3ggdiA9IHBwX2Nsb3NlX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YnJlYWsgdiB3ID0gcHBfcHJpbnRfdGJyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcblxuYW5kIHNldF90YWIgdiA9IHBwX3NldF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YWIgdiA9IHBwX3ByaW50X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21hcmdpbiB2ID0gcHBfc2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJnaW4gdiA9IHBwX2dldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfaW5kZW50IHYgPSBwcF9zZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfaW5kZW50IHYgPSBwcF9nZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBzYWZlX3NldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBnZXRfZ2VvbWV0cnkgdiA9IHBwX2dldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHVwZGF0ZV9nZW9tZXRyeSB2ID0gcHBfdXBkYXRlX2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2JveGVzIHYgPSBwcF9zZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9ib3hlcyB2ID0gcHBfZ2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG92ZXJfbWF4X2JveGVzIHYgPSBwcF9vdmVyX21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX3NldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX2dldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiB3ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfc2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfbWFya190YWdzIHYgPVxuICBwcF9zZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmtfdGFncyB2ID1cbiAgcHBfZ2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF90YWdzIHYgPVxuICBwcF9zZXRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG4oKiBUbyBmb3JtYXQgYSBsaXN0ICopXG5sZXQgcmVjIHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFt2XSAtPiBwcF92IHBwZiB2XG4gIHwgdiA6OiB2cyAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9wcmludF9saXN0IH5wcF9zZXAgcHBfdiBwcGYgdnNcblxuKCogVG8gZm9ybWF0IGEgc2VxdWVuY2UgKilcbmxldCByZWMgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbmxldCBwcF9wcmludF9zZXEgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxuKCogVG8gZm9ybWF0IGZyZWUtZmxvd2luZyB0ZXh0ICopXG5sZXQgcHBfcHJpbnRfdGV4dCBwcGYgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxlZnQgPSByZWYgMCBpblxuICBsZXQgcmlnaHQgPSByZWYgMCBpblxuICBsZXQgZmx1c2ggKCkgPVxuICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKFN0cmluZy5zdWIgcyAhbGVmdCAoIXJpZ2h0IC0gIWxlZnQpKTtcbiAgICBpbmNyIHJpZ2h0OyBsZWZ0IDo9ICFyaWdodDtcbiAgaW5cbiAgd2hpbGUgKCFyaWdodCA8PiBsZW4pIGRvXG4gICAgbWF0Y2ggcy5bIXJpZ2h0XSB3aXRoXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGZsdXNoICgpO1xuICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgZmx1c2ggKCk7IHBwX3ByaW50X3NwYWNlIHBwZiAoKVxuICAgICAgKCogdGhlcmUgaXMgbm8gc3BlY2lmaWMgc3VwcG9ydCBmb3IgJ1xcdCdcbiAgICAgICAgIGFzIGl0IGlzIHVuY2xlYXIgd2hhdCBhIHJpZ2h0IHNlbWFudGljcyB3b3VsZCBiZSAqKVxuICAgICAgfCBfIC0+IGluY3IgcmlnaHRcbiAgZG9uZTtcbiAgaWYgIWxlZnQgPD4gbGVuIHRoZW4gZmx1c2ggKClcblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3N0YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxuXG5sZXQgcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGVwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxubGV0ICgpID0gRG9tYWluLmJlZm9yZV9maXJzdF9zcGF3biAoZnVuICgpIC0+XG4gIGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCk7XG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXl9O1xuXG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXl9O1xuKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogYWxpYXMgdG8gYXZvaWQgd2FybmluZyBmb3IgYW1iaWd1aXR5IGJldHdlZW5cbiAgIFN0ZGxpYi5mb3JtYXQ2XG4gICBhbmQgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcblxuICAgKHRoZSBmb3JtZXIgaXMgaW4gZmFjdCBhbiBhbGlhcyBmb3IgdGhlIGxhdHRlcixcbiAgICBidXQgdGhlIGFtYmlndWl0eSB3YXJuaW5nIGRvZXNuJ3QgY2FyZSlcbiopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIFN0ZGxpYi5mb3JtYXQ2XG5cblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5uZXJzLiAqKVxuXG4oKiBTY2FubmluZyBidWZmZXJzLiAqKVxubW9kdWxlIHR5cGUgU0NBTk5JTkcgPSBzaWdcblxuICB0eXBlIGluX2NoYW5uZWxcblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB2YWwgc3RkaW4gOiBpbl9jaGFubmVsXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBuZXh0X2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLm5leHRfY2hhciBpYl0gYWR2YW5jZSB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyLlxuICAgICBJZiBubyBtb3JlIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJdIG1hcmsgdGhlIGN1cnJlbnRfY2hhciBhcyBhbHJlYWR5XG4gICAgIHNjYW5uZWQuICopXG5cbiAgdmFsIHBlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcucGVla19jaGFyIGliXSByZXR1cm5zIHRoZSBjdXJyZW50IGNoYXIgYXZhaWxhYmxlIGluXG4gICAgIHRoZSBidWZmZXIgb3IgcmVhZHMgb25lIGlmIG5lY2Vzc2FyeSAod2hlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXNcbiAgICAgYWxyZWFkeSBzY2FubmVkKS5cbiAgICAgSWYgbm8gY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGFuIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBjaGVja2VkX3BlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBTYW1lIGFzIFtTY2FubmluZy5wZWVrX2NoYXJdIGFib3ZlIGJ1dCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGNoYXIgb3JcbiAgICAgZmFpbHM6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbnVsbCBjaGFyIHdoZW4gdGhlIHJlYWRpbmcgbWV0aG9kIG9mIHRoZVxuICAgICBpbnB1dCBidWZmZXIgaGFzIHJlYWNoZWQgYW4gZW5kIG9mIGZpbGUsIHRoZSBmdW5jdGlvbiByYWlzZXMgZXhjZXB0aW9uXG4gICAgIFtFbmRfb2ZfZmlsZV0uICopXG5cbiAgdmFsIHN0b3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBjaGFyIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc3RvcmVfY2hhciBsaW0gaWIgY10gYWRkcyBbY10gdG8gdGhlIHRva2VuIGJ1ZmZlclxuICAgICBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyIFtpYl0uIEl0IGFsc28gYWR2YW5jZXMgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3RlciBhbmQgcmV0dXJucyBbbGltIC0gMV0sIGluZGljYXRpbmcgdGhlIG5ldyBsaW1pdCBmb3IgdGhlXG4gICAgIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4gKilcblxuICB2YWwgc2tpcF9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5za2lwX2NoYXIgbGltIGliXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gKilcblxuICB2YWwgaWdub3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmlnbm9yZV9jaGFyIGliIGxpbV0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kXG4gICAgIGRlY3JlbWVudHMgdGhlIGxpbWl0LiAqKVxuXG4gIHZhbCB0b2tlbiA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy50b2tlbiBpYl0gcmV0dXJucyB0aGUgc3RyaW5nIHN0b3JlZCBpbnRvIHRoZSB0b2tlblxuICAgICBidWZmZXIgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlcjogaXQgcmV0dXJucyB0aGUgdG9rZW4gbWF0Y2hlZCBieSB0aGVcbiAgICAgZm9ybWF0LiAqKVxuXG4gIHZhbCByZXNldF90b2tlbiA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWJdIHJlc2V0cyB0aGUgdG9rZW4gYnVmZmVyIG9mXG4gICAgIHRoZSBnaXZlbiBzY2FubmluZyBidWZmZXIuICopXG5cbiAgdmFsIGNoYXJfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuY2hhcl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnNcbiAgICAgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBsaW5lX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmxpbmVfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBuZXcgbGluZVxuICAgICBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgdG9rZW5fY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcudG9rZW5fY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiB0b2tlbnMgcmVhZFxuICAgICBzbyBmYXIgZnJvbSBbaWJdLiAqKVxuXG4gIHZhbCBlb2YgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVvZiBpYl0gcmV0dXJucyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBlbmRfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlciAoaWYgbm8gY2hhciBoYXMgZXZlciBiZWVuIHJlYWQsIGFuIGF0dGVtcHQgdG9cbiAgICAgcmVhZCBvbmUgaXMgcGVyZm9ybWVkKS4gKilcblxuICB2YWwgYmVnaW5uaW5nX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5iZWdpbm5pbmdfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBiZWdpbm5pbmcgb2YgaW5wdXRcbiAgICAgY29uZGl0aW9uIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIG5hbWVfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcubmFtZV9vZl9pbnB1dCBpYl0gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyXG4gICAgIHNvdXJjZSBmb3IgaW5wdXQgYnVmZmVyIFtpYl0uICopXG5cbiAgdmFsIG9wZW5faW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgb3Blbl9pbl9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZV9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9mdW5jdGlvbiA6ICh1bml0IC0+IGNoYXIpIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcblxuICB2YWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXRcblxuZW5kXG5cblxubW9kdWxlIFNjYW5uaW5nIDogU0NBTk5JTkcgPSBzdHJ1Y3RcblxuICAoKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2NhbmYuICopXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB0eXBlIGluX2NoYW5uZWxfbmFtZSA9XG4gICAgfCBGcm9tX2NoYW5uZWwgb2YgU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZmlsZSBvZiBmaWxlX25hbWUgKiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9mdW5jdGlvblxuICAgIHwgRnJvbV9zdHJpbmdcblxuXG4gIHR5cGUgaW5fY2hhbm5lbCA9IHtcbiAgICBtdXRhYmxlIGljX2VvZiA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXIgOiBjaGFyO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2NoYXJfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY19saW5lX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfdG9rZW5fY291bnQgOiBpbnQ7XG4gICAgaWNfZ2V0X25leHRfY2hhciA6IHVuaXQgLT4gY2hhcjtcbiAgICBpY190b2tlbl9idWZmZXIgOiBCdWZmZXIudDtcbiAgICBpY19pbnB1dF9uYW1lIDogaW5fY2hhbm5lbF9uYW1lO1xuICB9XG5cblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgbGV0IG51bGxfY2hhciA9ICdcXDAwMCdcblxuICAoKiBSZWFkcyBhIG5ldyBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBidWZmZXIuXG4gICAgIE5leHRfY2hhciBuZXZlciBmYWlscywgZXZlbiBpbiBjYXNlIG9mIGVuZCBvZiBpbnB1dDpcbiAgICAgaXQgdGhlbiBzaW1wbHkgc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uLiAqKVxuICBsZXQgbmV4dF9jaGFyIGliID1cbiAgICB0cnlcbiAgICAgIGxldCBjID0gaWIuaWNfZ2V0X25leHRfY2hhciAoKSBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gdHJ1ZTtcbiAgICAgIGliLmljX2NoYXJfY291bnQgPC0gc3VjYyBpYi5pY19jaGFyX2NvdW50O1xuICAgICAgaWYgYyA9ICdcXG4nIHRoZW4gaWIuaWNfbGluZV9jb3VudCA8LSBzdWNjIGliLmljX2xpbmVfY291bnQ7XG4gICAgICBjIHdpdGhcbiAgICB8IEVuZF9vZl9maWxlIC0+XG4gICAgICBsZXQgYyA9IG51bGxfY2hhciBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2U7XG4gICAgICBpYi5pY19lb2YgPC0gdHJ1ZTtcbiAgICAgIGNcblxuXG4gIGxldCBwZWVrX2NoYXIgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY3VycmVudF9jaGFyXG4gICAgZWxzZSBuZXh0X2NoYXIgaWJcblxuXG4gICgqIFJldHVybnMgYSB2YWxpZCBjdXJyZW50IGNoYXIgZm9yIHRoZSBpbnB1dCBidWZmZXIuIEluIHBhcnRpY3VsYXJcbiAgICAgbm8gaXJyZWxldmFudCBudWxsIGNoYXJhY3RlciAoYXMgc2V0IGJ5IFtuZXh0X2NoYXJdIGluIGNhc2Ugb2YgZW5kXG4gICAgIG9mIGlucHV0KSBpcyByZXR1cm5lZCwgc2luY2UgW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlblxuICAgICBbbmV4dF9jaGFyXSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24gd2hpbGUgdHJ5aW5nIHRvIHJlYWQgYVxuICAgICBuZXcgY2hhcmFjdGVyLiAqKVxuICBsZXQgY2hlY2tlZF9wZWVrX2NoYXIgaWIgPVxuICAgIGxldCBjID0gcGVla19jaGFyIGliIGluXG4gICAgaWYgaWIuaWNfZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICAgY1xuXG5cbiAgbGV0IGVuZF9vZl9pbnB1dCBpYiA9XG4gICAgaWdub3JlIChwZWVrX2NoYXIgaWIpO1xuICAgIGliLmljX2VvZlxuXG5cbiAgbGV0IGVvZiBpYiA9IGliLmljX2VvZlxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfaW5wdXQgaWIgPSBpYi5pY19jaGFyX2NvdW50ID0gMFxuXG4gIGxldCBuYW1lX29mX2lucHV0IGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBfaWMgLT4gXCJ1bm5hbWVkIFN0ZGxpYiBpbnB1dCBjaGFubmVsXCJcbiAgICB8IEZyb21fZmlsZSAoZm5hbWUsIF9pYykgLT4gZm5hbWVcbiAgICB8IEZyb21fZnVuY3Rpb24gLT4gXCJ1bm5hbWVkIGZ1bmN0aW9uXCJcbiAgICB8IEZyb21fc3RyaW5nIC0+IFwidW5uYW1lZCBjaGFyYWN0ZXIgc3RyaW5nXCJcblxuXG4gIGxldCBjaGFyX2NvdW50IGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2NoYXJfY291bnQgLSAxXG4gICAgZWxzZSBpYi5pY19jaGFyX2NvdW50XG5cblxuICBsZXQgbGluZV9jb3VudCBpYiA9IGliLmljX2xpbmVfY291bnRcblxuICBsZXQgcmVzZXRfdG9rZW4gaWIgPSBCdWZmZXIucmVzZXQgaWIuaWNfdG9rZW5fYnVmZmVyXG5cbiAgbGV0IGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliID0gaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgbGV0IHRva2VuIGliID1cbiAgICBsZXQgdG9rZW5fYnVmZmVyID0gaWIuaWNfdG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHRvayA9IEJ1ZmZlci5jb250ZW50cyB0b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuY2xlYXIgdG9rZW5fYnVmZmVyO1xuICAgIGliLmljX3Rva2VuX2NvdW50IDwtIHN1Y2MgaWIuaWNfdG9rZW5fY291bnQ7XG4gICAgdG9rXG5cblxuICBsZXQgdG9rZW5fY291bnQgaWIgPSBpYi5pY190b2tlbl9jb3VudFxuXG4gIGxldCBza2lwX2NoYXIgd2lkdGggaWIgPVxuICAgIGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliO1xuICAgIHdpZHRoXG5cblxuICBsZXQgaWdub3JlX2NoYXIgd2lkdGggaWIgPSBza2lwX2NoYXIgKHdpZHRoIC0gMSkgaWJcblxuICBsZXQgc3RvcmVfY2hhciB3aWR0aCBpYiBjID1cbiAgICBCdWZmZXIuYWRkX2NoYXIgaWIuaWNfdG9rZW5fYnVmZmVyIGM7XG4gICAgaWdub3JlX2NoYXIgd2lkdGggaWJcblxuXG4gIGxldCBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplID0gMTAyNFxuXG4gIGxldCBjcmVhdGUgaW5hbWUgbmV4dCA9IHtcbiAgICBpY19lb2YgPSBmYWxzZTtcbiAgICBpY19jdXJyZW50X2NoYXIgPSBudWxsX2NoYXI7XG4gICAgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkID0gZmFsc2U7XG4gICAgaWNfY2hhcl9jb3VudCA9IDA7XG4gICAgaWNfbGluZV9jb3VudCA9IDA7XG4gICAgaWNfdG9rZW5fY291bnQgPSAwO1xuICAgIGljX2dldF9uZXh0X2NoYXIgPSBuZXh0O1xuICAgIGljX3Rva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZTtcbiAgICBpY19pbnB1dF9uYW1lID0gaW5hbWU7XG4gIH1cblxuXG4gIGxldCBmcm9tX3N0cmluZyBzID1cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpID49IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2VcbiAgICAgIGxldCBjID0gcy5bIWldIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjIGluXG4gICAgY3JlYXRlIEZyb21fc3RyaW5nIG5leHRcblxuXG4gIGxldCBmcm9tX2Z1bmN0aW9uID0gY3JlYXRlIEZyb21fZnVuY3Rpb25cblxuICAoKiBTY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwuICopXG5cbiAgKCogUG9zaXRpb24gb2YgdGhlIHByb2JsZW06XG5cbiAgICAgV2UgY2Fubm90IHByZXZlbnQgdGhlIHNjYW5uaW5nIG1lY2hhbmlzbSB0byB1c2Ugb25lIGxvb2thaGVhZCBjaGFyYWN0ZXIsXG4gICAgIGlmIG5lZWRlZCBieSB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmljYXRpb25zIChlLmcuIGFcbiAgICAgdHJhaWxpbmcgJ3NraXAgc3BhY2UnIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm1hdCBzdHJpbmcpOyBpbiB0aGlzIGNhc2UsXG4gICAgIHRoZSBtYW5kYXRvcnkgbG9va2FoZWFkIGNoYXJhY3RlciBpcyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBpbnB1dCBhbmQgbm90XG4gICAgIHVzZWQgdG8gcmV0dXJuIHRoZSB0b2tlbiByZWFkLiBJdCBpcyB0aHVzIG1hbmRhdG9yeSB0byBiZSBhYmxlIHRvIHN0b3JlXG4gICAgIGFuIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIHNvbWV3aGVyZSB0byBnZXQgaXQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgICBvZiB0aGUgbmV4dCBzY2FuLlxuXG4gICAgIFRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCBhbGwgdGhlIHNjYW5uaW5nIGZ1bmN0aW9ucyBnZXQgYSBsb3cgbGV2ZWxcbiAgICAgaW5wdXQgYnVmZmVyIGFyZ3VtZW50IHdoZXJlIHRoZXkgc3RvcmUgdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXIgd2hlblxuICAgICBuZWVkZWQ7IGFkZGl0aW9uYWxseSwgdGhlIGlucHV0IGJ1ZmZlciBpcyB0aGUgb25seSBzb3VyY2Ugb2YgY2hhcmFjdGVyIG9mXG4gICAgIGEgc2Nhbm5lci4gVGhlIFtzY2FuYnVmXSBpbnB1dCBidWZmZXJzIGFyZSBkZWZpbmVkIGluIG1vZHVsZSB7IVNjYW5uaW5nfS5cblxuICAgICBOb3cgd2UgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCByZWxhdGVkIGFuZFxuICAgICBzdWNjZXNzaXZlIGNhbGxzIHRvIHNjYW5uZXJzIGluZGVlZCByZWFkIGZyb20gdGhlIHNhbWUgaW5wdXQgYnVmZmVyLlxuICAgICBJbiBlZmZlY3QsIGlmIGEgc2Nhbm5lciBbc2NhbjFdIGlzIHJlYWRpbmcgZnJvbSBbaWIxXSBhbmQgc3RvcmVzIGFuXG4gICAgIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIFtjMV0gaW50byBpdHMgaW5wdXQgYnVmZmVyIFtpYjFdLCB0aGVuXG4gICAgIGFub3RoZXIgc2Nhbm5lciBbc2NhbjJdIG5vdCByZWFkaW5nIGZyb20gdGhlIHNhbWUgYnVmZmVyIFtpYjFdIHdpbGwgbWlzc1xuICAgICB0aGUgY2hhcmFjdGVyIFtjMV0sIHNlZW1pbmdseSB2YW5pc2hlZCBpbiB0aGUgYWlyIGZyb20gdGhlIHBvaW50IG9mIHZpZXdcbiAgICAgb2YgW3NjYW4yXS5cblxuICAgICBUaGlzIG1lY2hhbmlzbSB3b3JrcyBwZXJmZWN0bHkgdG8gcmVhZCBmcm9tIHN0cmluZ3MsIGZyb20gZmlsZXMsIGFuZCBmcm9tXG4gICAgIGZ1bmN0aW9ucywgc2luY2UgaW4gdGhvc2UgY2FzZXMsIGFsbG9jYXRpbmcgdHdvIGJ1ZmZlcnMgcmVhZGluZyBmcm9tIHRoZVxuICAgICBzYW1lIHNvdXJjZSBpcyB1bm5hdHVyYWwuXG5cbiAgICAgU3RpbGwsIHRoZXJlIGlzIGEgZGlmZmljdWx0eSBpbiB0aGUgY2FzZSBvZiBzY2FubmluZyBmcm9tIGFuIGlucHV0XG4gICAgIGNoYW5uZWwuIEluIGVmZmVjdCwgd2hlbiBzY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwgW2ljXSwgdGhpcyBjaGFubmVsXG4gICAgIG1heSBub3QgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiB0aGlzIGxpYnJhcnkuIEhlbmNlLCBpdCBtYXkgYmVcbiAgICAgc2hhcmVkICh0d28gZnVuY3Rpb25zIG9mIHRoZSB1c2VyJ3MgcHJvZ3JhbSBtYXkgc3VjY2Vzc2l2ZWx5IHJlYWQgZnJvbVxuICAgICBbaWNdKS4gVGhpcyBpcyBoaWdobHkgZXJyb3IgcHJvbmUgc2luY2UsIG9uZSBvZiB0aGUgZnVuY3Rpb24gbWF5IHNlZWsgdGhlXG4gICAgIGlucHV0IGNoYW5uZWwsIHdoaWxlIHRoZSBvdGhlciBmdW5jdGlvbiBoYXMgc3RpbGwgYW4gdW51c2VkIGxvb2thaGVhZFxuICAgICBjaGFyYWN0ZXIgaW4gaXRzIGlucHV0IGJ1ZmZlci4gSW4gY29uY2x1c2lvbiwgeW91IHNob3VsZCBuZXZlciBtaXggZGlyZWN0XG4gICAgIGxvdyBsZXZlbCByZWFkaW5nIGFuZCBoaWdoIGxldmVsIHNjYW5uaW5nIGZyb20gdGhlIHNhbWUgaW5wdXQgY2hhbm5lbC5cblxuICAqKVxuXG4gICgqIFBlcmZvcm0gYnVmZmVyaXplZCBpbnB1dCB0byBpbXByb3ZlIGVmZmljaWVuY3kuICopXG4gIGxldCBmaWxlX2J1ZmZlcl9zaXplID0gcmVmIDEwMjRcblxuICAoKiBUaGUgc2Nhbm5lciBjbG9zZXMgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0LiAqKVxuICBsZXQgc2Nhbl9jbG9zZV9hdF9lbmQgaWMgPSBTdGRsaWIuY2xvc2VfaW4gaWM7IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgKCogVGhlIHNjYW5uZXIgZG9lcyBub3QgY2xvc2UgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0OlxuICAgICBpdCBqdXN0IHJhaXNlcyBbRW5kX29mX2ZpbGVdLiAqKVxuICBsZXQgc2Nhbl9yYWlzZV9hdF9lbmQgX2ljID0gcmFpc2UgRW5kX29mX2ZpbGVcblxuICBsZXQgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIGluYW1lIGljID1cbiAgICBsZXQgbGVuID0gIWZpbGVfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGltID0gcmVmIDAgaW5cbiAgICBsZXQgZW9mID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPCAhbGltIHRoZW4gYmVnaW4gbGV0IGMgPSBCeXRlcy5nZXQgYnVmICFpIGluIGluY3IgaTsgYyBlbmQgZWxzZVxuICAgICAgaWYgIWVvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2UgYmVnaW5cbiAgICAgICAgbGltIDo9IGlucHV0IGljIGJ1ZiAwIGxlbjtcbiAgICAgICAgaWYgIWxpbSA9IDAgdGhlbiBiZWdpbiBlb2YgOj0gdHJ1ZTsgc2Nhbl9jbG9zZV9pYyBpYyBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIGkgOj0gMTtcbiAgICAgICAgICBCeXRlcy5nZXQgYnVmIDBcbiAgICAgICAgZW5kXG4gICAgICBlbmQgaW5cbiAgICBjcmVhdGUgaW5hbWUgbmV4dFxuXG5cbiAgbGV0IGZyb21faWNfY2xvc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX2Nsb3NlX2F0X2VuZFxuICBsZXQgZnJvbV9pY19yYWlzZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIE9uZSBjb3VsZCB0cnkgdG8gZGVmaW5lIFtzdGRpbl0gYXMgYSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBhIGNoYXJhY3RlclxuICAgICBhdCBhIHRpbWUgKG5vIGJ1ZmZlcml6YXRpb24gYXQgYWxsKSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlIHRvcC1sZXZlbFxuICAgICBpbnRlcmFjdGlvbiB3b3VsZCBiZSB3cm9uZy4gVGhpcyBpcyBkdWUgdG8gc29tZSBraW5kIG9mXG4gICAgICdyYWNlIGNvbmRpdGlvbicgd2hlbiByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0sXG4gICAgIHNpbmNlIHRoZSBpbnRlcmFjdGl2ZSBjb21waWxlciBhbmQgW1NjYW5mLnNjYW5mXSB3aWxsIHNpbXVsdGFuZW91c2x5XG4gICAgIHJlYWQgdGhlIG1hdGVyaWFsIHRoZXkgbmVlZCBmcm9tIFtTdGRsaWIuc3RkaW5dOyB0aGVuLCBjb25mdXNpb25cbiAgICAgd2lsbCByZXN1bHQgZnJvbSB3aGF0IHNob3VsZCBiZSByZWFkIGJ5IHRoZSB0b3AtbGV2ZWwgYW5kIHdoYXQgc2hvdWxkIGJlXG4gICAgIHJlYWQgYnkgW1NjYW5mLnNjYW5mXS5cbiAgICAgVGhpcyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgYnkgdGhlIG9uZSBjaGFyYWN0ZXIgbG9va2FoZWFkIHRoYXRcbiAgICAgW1NjYW5mLnNjYW5mXSBpcyBzb21ldGltZXMgb2JsaWdlZCB0byBtYWludGFpbjogdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXJcbiAgICAgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IFtTY2FuZi5zY2FuZl0gZW50cnksIHNlZW1pbmdseSBjb21pbmcgZnJvbVxuICAgICBub3doZXJlLlxuICAgICBBbHNvIG5vIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW4gcmVhZGluZyBmcm9tIHN0ZGluOiBpZiBub3QgZW5vdWdoXG4gICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHJlYWQsIHdlIHNpbXBseSBhc2sgdG8gcmVhZCBtb3JlLiAqKVxuICBsZXQgc3RkaW4gPVxuICAgIGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcbiAgICAgIChGcm9tX2ZpbGUgKFwiLVwiLCBTdGRsaWIuc3RkaW4pKSBTdGRsaWIuc3RkaW5cblxuICBsZXQgb3Blbl9pbl9maWxlIG9wZW5faW4gZm5hbWUgPVxuICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICB8IFwiLVwiIC0+IHN0ZGluXG4gICAgfCBmbmFtZSAtPlxuICAgICAgbGV0IGljID0gb3Blbl9pbiBmbmFtZSBpblxuICAgICAgZnJvbV9pY19jbG9zZV9hdF9lbmQgKEZyb21fZmlsZSAoZm5hbWUsIGljKSkgaWNcblxuXG4gIGxldCBvcGVuX2luID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luXG4gIGxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9maWxlID0gb3Blbl9pblxuICBsZXQgZnJvbV9maWxlX2JpbiA9IG9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBpYyA9XG4gICAgZnJvbV9pY19yYWlzZV9hdF9lbmQgKEZyb21fY2hhbm5lbCBpYykgaWNcblxuXG4gIGxldCBjbG9zZV9pbiBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgaWMgLT5cbiAgICAgIFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9maWxlIChfZm5hbWUsIGljKSAtPiBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZnVuY3Rpb24gfCBGcm9tX3N0cmluZyAtPiAoKVxuXG5lbmRcblxuXG4oKiBGb3JtYXR0ZWQgaW5wdXQgZnVuY3Rpb25zLiAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lciA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXJfb3B0ID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkIG9wdGlvbiwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxuKCogUmVwb3J0aW5nIGVycm9ycy4gKilcbmV4Y2VwdGlvbiBTY2FuX2ZhaWx1cmUgb2Ygc3RyaW5nXG5cbmxldCBiYWRfaW5wdXQgcyA9IHJhaXNlIChTY2FuX2ZhaWx1cmUgcylcblxubGV0IGJhZF9pbnB1dF9lc2NhcGUgYyA9XG4gIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgJUNcIiBjKVxuXG5cbmxldCBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgdGhlIHNwZWNpZmllZCBsZW5ndGggd2FzIHRvbyBzaG9ydCBmb3IgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICBwcmVtYXR1cmUgZW5kIG9mIGZpbGUgb2NjdXJyZWQgYmVmb3JlIGVuZCBvZiB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm8gZG90IG9yIGV4cG9uZW50IHBhcnQgZm91bmQgaW4gZmxvYXQgdG9rZW5cIlxuXG5cbmxldCBiYWRfaGV4X2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm90IGEgdmFsaWQgZmxvYXQgaW4gaGV4YWRlY2ltYWwgbm90YXRpb25cIlxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kgPVxuICBQcmludGYuc3ByaW50ZiBcImxvb2tpbmcgZm9yICVDLCBmb3VuZCAlQ1wiIGMgY2lcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoIGMgY2kgPVxuICBiYWRfaW5wdXQgKGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSlcblxuXG5sZXQgcmVjIHNraXBfd2hpdGVzIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW4gYmVnaW5cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPlxuICAgICAgU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IHNraXBfd2hpdGVzIGliXG4gICAgfCBfIC0+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+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAoKiBEZWZpbmluZyBbc2NhbmZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW3NjYW5mXSAqKVxuXG5sZXQga3NjYW5mX2dlbiBpYiBlZiBhZiAoRm9ybWF0IChmbXQsIHN0cikpID1cbiAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiIC4gYSAtPiAoYSwgYikgaGV0ZXJfbGlzdCAtPiBiID1cbiAgICBmdW4gZiBhcmdzIC0+IG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgQ29ucyAoeCwgcikgLT4gYXBwbHkgKGYgeCkgclxuICAgIHwgTmlsIC0+IGZcbiAgaW5cbiAgbGV0IGsgcmVhZGVycyBmID1cbiAgICBTY2FubmluZy5yZXNldF90b2tlbiBpYjtcbiAgICBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiAoU2Nhbl9mYWlsdXJlIF8gfCBGYWlsdXJlIF8gfCBFbmRfb2ZfZmlsZSBhcyBleGMpIC0+XG4gICAgICAgIGVmIGliIGV4Y1xuICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgbXNnIC0+XG4gICAgICAgIGludmFsaWRfYXJnIChtc2cgXiBcIiBpbiBmb3JtYXQgXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgc3RyIF4gXCJcXFwiXCIpXG4gICAgfCBhcmdzIC0+XG4gICAgICAgIGFmIChhcHBseSBmIGFyZ3MpXG4gIGluXG4gIHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxubGV0IGtzY2FuZiBpYiBlZiBmbXQgPVxuICBrc2NhbmZfZ2VuIGliIGVmIChmdW4geCAtPiB4KSBmbXRcblxubGV0IGtzY2FuZl9vcHQgaWIgZm10ID1cbiAga3NjYW5mX2dlbiBpYiAoZnVuIF8gXyAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KSBmbXRcblxuKCoqKilcblxubGV0IGtic2NhbmYgPSBrc2NhbmZcbmxldCBic2NhbmYgaWIgZm10ID0ga2JzY2FuZiBpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgYnNjYW5mX29wdCBpYiBmbXQgPSBrc2NhbmZfb3B0IGliIGZtdFxuXG5sZXQga3NzY2FuZiBzIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGVmIGZtdFxubGV0IHNzY2FuZiBzIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzc2NhbmZfb3B0IHMgZm10ID0ga3NjYW5mX29wdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm10XG5cbmxldCBzY2FuZiBmbXQgPSBrc2NhbmYgU2Nhbm5pbmcuc3RkaW4gc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IHNjYW5mX29wdCBmbXQgPSBrc2NhbmZfb3B0IFNjYW5uaW5nLnN0ZGluIGZtdFxuXG4oKioqKVxuXG4oKiBTY2FubmluZyBmb3JtYXQgc3RyaW5ncy4gKilcbmxldCBic2NhbmZfZm9ybWF0IDpcbiAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIGliIGZvcm1hdCBmIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nIG1heF9pbnQgaWIgaW5cbiAgICBsZXQgc3RyID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCcgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciBmb3JtYXRcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZyBpblxuICAgIGYgZm10J1xuXG5cbmxldCBzc2NhbmZfZm9ybWF0IDpcbiAgc3RyaW5nIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gcyBmb3JtYXQgZiAtPiBic2NhbmZfZm9ybWF0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmb3JtYXQgZlxuXG5cbmxldCBmb3JtYXRfZnJvbV9zdHJpbmcgcyBmbXQgPVxuICBzc2NhbmZfZm9ybWF0IChcIlxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHMgXiBcIlxcXCJcIikgZm10IChmdW4geCAtPiB4KVxuXG5cbmxldCB1bmVzY2FwZWQgcyA9XG4gIHNzY2FuZiAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCIpIFwiJVMlIVwiIChmdW4geCAtPiB4KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBSZWdpc3RlcmluZyBPQ2FtbCB2YWx1ZXMgd2l0aCB0aGUgQyBydW50aW1lIGZvciBsYXRlciBjYWxsYmFja3MgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gT2JqLnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSB2ID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSAoT2JqLnJlcHIgdilcblxubGV0IHJlZ2lzdGVyX2V4Y2VwdGlvbiBuYW1lIChleG4gOiBleG4pID1cbiAgbGV0IGV4biA9IE9iai5yZXByIGV4biBpblxuICBsZXQgc2xvdCA9IGlmIE9iai50YWcgZXhuID0gT2JqLm9iamVjdF90YWcgdGhlbiBleG4gZWxzZSBPYmouZmllbGQgZXhuIDAgaW5cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSBzbG90XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBKZXJvbWUgVm91aWxsb24sIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gT2JqXG5cbigqKioqIE9iamVjdCByZXByZXNlbnRhdGlvbiAqKioqKVxuXG5leHRlcm5hbCBzZXRfaWQ6ICdhIC0+ICdhID0gXCJjYW1sX3NldF9vb19pZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIE9iamVjdCBjb3B5ICoqKiopXG5cbmxldCBjb3B5IG8gPVxuICBsZXQgbyA9IChPYmoub2JqIChPYmouZHVwIChPYmoucmVwciBvKSkpIGluXG4gIHNldF9pZCBvXG5cbigqKioqIENvbXByZXNzaW9uIG9wdGlvbnMgKioqKilcbigqIFBhcmFtZXRlcnMgKilcbnR5cGUgcGFyYW1zID0ge1xuICAgIG11dGFibGUgY29tcGFjdF90YWJsZSA6IGJvb2w7XG4gICAgbXV0YWJsZSBjb3B5X3BhcmVudCA6IGJvb2w7XG4gICAgbXV0YWJsZSBjbGVhbl93aGVuX2NvcHlpbmcgOiBib29sO1xuICAgIG11dGFibGUgcmV0cnlfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBidWNrZXRfc21hbGxfc2l6ZSA6IGludFxuICB9XG5cbmxldCBwYXJhbXMgPSB7XG4gIGNvbXBhY3RfdGFibGUgPSB0cnVlO1xuICBjb3B5X3BhcmVudCA9IHRydWU7XG4gIGNsZWFuX3doZW5fY29weWluZyA9IHRydWU7XG4gIHJldHJ5X2NvdW50ID0gMztcbiAgYnVja2V0X3NtYWxsX3NpemUgPSAxNlxufVxuXG4oKioqKiBQYXJhbWV0ZXJzICoqKiopXG5cbmxldCBpbml0aWFsX29iamVjdF9zaXplID0gMlxuXG4oKioqKiBJdGVtcyAqKioqKVxuXG50eXBlIGl0ZW0gPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbmxldCBkdW1teV9pdGVtID0gKG1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgbWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IG9iaiAoT2JqLm5ld19ibG9jayAwIDApXG4oKiBpZiBkZWJ1Z2dpbmcgaXMgbmVlZGVkLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCBpZGVhOiAqKVxuKCogbGV0IGR1bW15X21ldCAoKSA9IGZhaWx3aXRoIFwiVW5kZWZpbmVkIG1ldGhvZFwiICopXG5cbmxldCByZWMgZml0X3NpemUgbiA9XG4gIGlmIG4gPD0gMiB0aGVuIG4gZWxzZVxuICBmaXRfc2l6ZSAoKG4rMSkvMikgKiAyXG5cbmxldCBuZXdfdGFibGUgcHViX2xhYmVscyA9XG4gIGluY3IgdGFibGVfY291bnQ7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggcHViX2xhYmVscyBpblxuICBsZXQgbWV0aG9kcyA9IEFycmF5Lm1ha2UgKGxlbioyKzIpIGR1bW15X21ldCBpblxuICBtZXRob2RzLigwKSA8LSBtYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIG1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gbWFnaWMgcHViX2xhYmVscy4oaSkgZG9uZTtcbiAgeyBtZXRob2RzID0gbWV0aG9kcztcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gaW5pdGlhbF9vYmplY3Rfc2l6ZSB9XG5cbmxldCByZXNpemUgYXJyYXkgbmV3X3NpemUgPVxuICBsZXQgb2xkX3NpemUgPSBBcnJheS5sZW5ndGggYXJyYXkubWV0aG9kcyBpblxuICBpZiBuZXdfc2l6ZSA+IG9sZF9zaXplIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2J1Y2sgPSBBcnJheS5tYWtlIG5ld19zaXplIGR1bW15X21ldCBpblxuICAgIEFycmF5LmJsaXQgYXJyYXkubWV0aG9kcyAwIG5ld19idWNrIDAgb2xkX3NpemU7XG4gICAgYXJyYXkubWV0aG9kcyA8LSBuZXdfYnVja1xuIGVuZFxuXG5sZXQgcHV0IGFycmF5IGxhYmVsIGVsZW1lbnQgPVxuICByZXNpemUgYXJyYXkgKGxhYmVsICsgMSk7XG4gIGFycmF5Lm1ldGhvZHMuKGxhYmVsKSA8LSBlbGVtZW50XG5cbigqKioqIENsYXNzZXMgKioqKilcblxubGV0IG1ldGhvZF9jb3VudCA9IHJlZiAwXG5sZXQgaW5zdF92YXJfY291bnQgPSByZWYgMFxuXG4oKiB0eXBlIHQgKilcbnR5cGUgbWV0aCA9IGl0ZW1cblxubGV0IG5ld19tZXRob2QgdGFibGUgPVxuICBsZXQgaW5kZXggPSBBcnJheS5sZW5ndGggdGFibGUubWV0aG9kcyBpblxuICByZXNpemUgdGFibGUgKGluZGV4ICsgMSk7XG4gIGluZGV4XG5cbmxldCBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG5hbWUgPVxuICB0cnlcbiAgICBNZXRocy5maW5kIG5hbWUgdGFibGUubWV0aG9kc19ieV9uYW1lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGxhYmVsID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBNZXRocy5hZGQgbmFtZSBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWJlbCB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWw7XG4gICAgbGFiZWxcblxubGV0IGdldF9tZXRob2RfbGFiZWxzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBuYW1lc1xuXG5sZXQgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBlbGVtZW50ID1cbiAgaW5jciBtZXRob2RfY291bnQ7XG4gIGlmIExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHRoZW5cbiAgICBwdXQgdGFibGUgbGFiZWwgZWxlbWVudFxuICBlbHNlXG4gICAgdGFibGUuaGlkZGVuX21ldGhzIDwtIChsYWJlbCwgZWxlbWVudCkgOjogdGFibGUuaGlkZGVuX21ldGhzXG5cbmxldCBnZXRfbWV0aG9kIHRhYmxlIGxhYmVsID1cbiAgdHJ5IExpc3QuYXNzb2MgbGFiZWwgdGFibGUuaGlkZGVuX21ldGhzXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRhYmxlLm1ldGhvZHMuKGxhYmVsKVxuXG5sZXQgdG9fbGlzdCBhcnIgPVxuICBpZiBhcnIgPT0gbWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IG1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZSlcblxubGV0IGluaGVyaXRzIGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgKF8sIHN1cGVyLCBfLCBlbnYpIHRvcCA9XG4gIG5hcnJvdyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzO1xuICBsZXQgaW5pdCA9XG4gICAgaWYgdG9wIHRoZW4gc3VwZXIgY2xhIGVudiBlbHNlIE9iai5yZXByIChzdXBlciBjbGEpIGluXG4gIHdpZGVuIGNsYTtcbiAgQXJyYXkuY29uY2F0XG4gICAgW1t8IHJlcHIgaW5pdCB8XTtcbiAgICAgbWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiByZXByIChnZXRfbWV0aG9kIGNsYSAoZ2V0X21ldGhvZF9sYWJlbCBjbGEgbm0pIDogY2xvc3VyZSkpXG4gICAgICAgKHRvX2FycmF5IGNvbmNyX21ldGhzKSBdXG5cbmxldCBtYWtlX2NsYXNzIHB1Yl9tZXRocyBjbGFzc19pbml0ID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIChlbnZfaW5pdCAoT2JqLnJlcHIgMCksIGNsYXNzX2luaXQsIGVudl9pbml0LCBPYmoucmVwciAwKVxuXG50eXBlIGluaXRfdGFibGUgPSB7IG11dGFibGUgZW52X2luaXQ6IHQ7IG11dGFibGUgY2xhc3NfaW5pdDogdGFibGUgLT4gdCB9XG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG5sZXQgbWFrZV9jbGFzc19zdG9yZSBwdWJfbWV0aHMgY2xhc3NfaW5pdCBpbml0X3RhYmxlID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIGluaXRfdGFibGUuY2xhc3NfaW5pdCA8LSBjbGFzc19pbml0O1xuICBpbml0X3RhYmxlLmVudl9pbml0IDwtIGVudl9pbml0XG5cbmxldCBkdW1teV9jbGFzcyBsb2MgPVxuICBsZXQgdW5kZWYgPSBmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKSBpblxuICAoT2JqLm1hZ2ljIHVuZGVmLCB1bmRlZiwgdW5kZWYsIE9iai5yZXByIDApXG5cbigqKioqIE9iamVjdHMgKioqKilcblxubGV0IGNyZWF0ZV9vYmplY3QgdGFibGUgPVxuICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICBPYmoub2JqIChzZXRfaWQgb2JqKVxuXG5sZXQgY3JlYXRlX29iamVjdF9vcHQgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgICBPYmoub2JqIChzZXRfaWQgb2JqKVxuICBlbmRcblxubGV0IHJlYyBpdGVyX2Ygb2JqID1cbiAgZnVuY3Rpb25cbiAgICBbXSAgIC0+ICgpXG4gIHwgZjo6bCAtPiBmIG9iajsgaXRlcl9mIG9iaiBsXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZSA9XG4gIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICBpZiBpbml0cyA8PiBbXSB0aGVuXG4gICAgaXRlcl9mIG9iaiBpbml0c1xuXG5sZXQgcnVuX2luaXRpYWxpemVyc19vcHQgb2JqXzAgb2JqIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqIGVsc2UgYmVnaW5cbiAgICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgICBpZiBpbml0cyA8PiBbXSB0aGVuIGl0ZXJfZiBvYmogaW5pdHM7XG4gICAgb2JqXG4gIGVuZFxuXG5sZXQgY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpemVycyBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICBsZXQgb2JqID0gY3JlYXRlX29iamVjdCB0YWJsZSBpblxuICAgIHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlO1xuICAgIG9ialxuICBlbmRcblxuKCogRXF1aXZhbGVudCBwcmltaXRpdmUgYmVsb3dcbmxldCBzZW5kc2VsZiBvYmogbGFiID1cbiAgKG1hZ2ljIG9iaiA6IChvYmogLT4gdCkgYXJyYXkgYXJyYXkpLigwKS4obGFiKSBvYmpcbiopXG5leHRlcm5hbCBzZW5kIDogb2JqIC0+IHRhZyAtPiAnYSA9IFwiJXNlbmRcIlxuZXh0ZXJuYWwgc2VuZGNhY2hlIDogb2JqIC0+IHRhZyAtPiB0IC0+IGludCAtPiAnYSA9IFwiJXNlbmRjYWNoZVwiXG5leHRlcm5hbCBzZW5kc2VsZiA6IG9iaiAtPiBsYWJlbCAtPiAnYSA9IFwiJXNlbmRzZWxmXCJcbmV4dGVybmFsIGdldF9wdWJsaWNfbWV0aG9kIDogb2JqIC0+IHRhZyAtPiBjbG9zdXJlXG4gICAgPSBcImNhbWxfZ2V0X3B1YmxpY19tZXRob2RcIiBbQEBub2FsbG9jXVxuXG4oKioqKiB0YWJsZSBjb2xsZWN0aW9uIGFjY2VzcyAqKioqKVxuXG50eXBlIHRhYmxlcyA9XG4gIHwgRW1wdHlcbiAgfCBDb25zIG9mIHtrZXkgOiBjbG9zdXJlOyBtdXRhYmxlIGRhdGE6IHRhYmxlczsgbXV0YWJsZSBuZXh0OiB0YWJsZXN9XG5cbmxldCBzZXRfZGF0YSB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGEgPC0gdlxubGV0IHNldF9uZXh0IHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dCA8LSB2XG5sZXQgZ2V0X2tleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmtleVxubGV0IGdldF9kYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YVxubGV0IGdldF9uZXh0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dFxuXG5sZXQgYnVpbGRfcGF0aCBuIGtleXMgdGFibGVzID1cbiAgbGV0IHJlcyA9IENvbnMge2tleSA9IE9iai5tYWdpYyAwOyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgbGV0IHIgPSByZWYgcmVzIGluXG4gIGZvciBpID0gMCB0byBuIGRvXG4gICAgciA6PSBDb25zIHtrZXkgPSBrZXlzLihpKTsgZGF0YSA9ICFyOyBuZXh0ID0gRW1wdHl9XG4gIGRvbmU7XG4gIHNldF9kYXRhIHRhYmxlcyAhcjtcbiAgcmVzXG5cbmxldCByZWMgbG9va3VwX2tleXMgaSBrZXlzIHRhYmxlcyA9XG4gIGlmIGkgPCAwIHRoZW4gdGFibGVzIGVsc2VcbiAgbGV0IGtleSA9IGtleXMuKGkpIGluXG4gIGxldCByZWMgbG9va3VwX2tleSAodGFibGVzOnRhYmxlcykgPVxuICAgIGlmIGdldF9rZXkgdGFibGVzID09IGtleSB0aGVuXG4gICAgICBtYXRjaCBnZXRfZGF0YSB0YWJsZXMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgQ29ucyBfIGFzIHRhYmxlc19kYXRhIC0+XG4gICAgICAgICAgbG9va3VwX2tleXMgKGktMSkga2V5cyB0YWJsZXNfZGF0YVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGdldF9uZXh0IHRhYmxlcyB3aXRoXG4gICAgICB8IENvbnMgXyBhcyBuZXh0IC0+IGxvb2t1cF9rZXkgbmV4dFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBuZXh0IDogdGFibGVzID0gQ29ucyB7a2V5OyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgICAgICAgICBzZXRfbmV4dCB0YWJsZXMgbmV4dDtcbiAgICAgICAgICBidWlsZF9wYXRoIChpLTEpIGtleXMgbmV4dFxuICBpblxuICBsb29rdXBfa2V5IHRhYmxlc1xuXG5sZXQgbG9va3VwX3RhYmxlcyByb290IGtleXMgPVxuICBtYXRjaCBnZXRfZGF0YSByb290IHdpdGhcbiAgfCBDb25zIF8gYXMgcm9vdF9kYXRhIC0+XG4gICAgbG9va3VwX2tleXMgKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290X2RhdGFcbiAgfCBFbXB0eSAtPlxuICAgIGJ1aWxkX3BhdGggKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290XG5cbigqKioqIGJ1aWx0aW4gbWV0aG9kcyAqKioqKVxuXG5sZXQgZ2V0X2NvbnN0IHggPSByZXQgKGZ1biBfb2JqIC0+IHgpXG5sZXQgZ2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogLT4gQXJyYXkudW5zYWZlX2dldCBvYmogbilcbmxldCBnZXRfZW52IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pXG5sZXQgZ2V0X21ldGggbiAgPSByZXQgKGZ1biBvYmogLT4gc2VuZHNlbGYgb2JqIG4pXG5sZXQgc2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogeCAtPiBBcnJheS51bnNhZmVfc2V0IG9iaiBuIHgpXG5sZXQgYXBwX2NvbnN0IGYgeCA9IHJldCAoZnVuIF9vYmogLT4gZiB4KVxubGV0IGFwcF92YXIgZiBuICAgPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2VudiBmIGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9tZXRoIGYgbiAgPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9jb25zdCBmIHggeSA9IHJldCAoZnVuIF9vYmogLT4gZiB4IHkpXG5sZXQgYXBwX2NvbnN0X3ZhciBmIHggbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2NvbnN0X21ldGggZiB4IG4gPSByZXQgKGZ1biBvYmogLT4gZiB4IChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX3Zhcl9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSB4KVxubGV0IGFwcF9tZXRoX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSB4KVxubGV0IGFwcF9jb25zdF9lbnYgZiB4IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX2Vudl9jb25zdCBmIGUgbiB4ID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgeClcbmxldCBtZXRoX2FwcF9jb25zdCBuIHggPSByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSB4KVxubGV0IG1ldGhfYXBwX3ZhciBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoQXJyYXkudW5zYWZlX2dldCBvYmogbSkpXG5sZXQgbWV0aF9hcHBfZW52IG4gZSBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXylcbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBtKSlcbmxldCBtZXRoX2FwcF9tZXRoIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChzZW5kc2VsZiBvYmogbSkpXG5sZXQgc2VuZF9jb25zdCBtIHggYyA9XG4gIHJldCAoZnVuIG9iaiAtPiBzZW5kY2FjaGUgeCBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfdmFyIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIDogb2JqKSBtXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX2VudiBtIGUgbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlXG4gICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSA6IG9iailcbiAgICAgIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9tZXRoIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChzZW5kc2VsZiBvYmogbikgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBuZXdfY2FjaGUgdGFibGUgPVxuICBsZXQgbiA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gbW9kIDIgPSAwIHx8IG4gPiAyICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IG1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IG1hZ2ljIGNsb1xuXG5sZXQgc2V0X21ldGhvZHMgdGFibGUgbWV0aG9kcyA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggbWV0aG9kcyBpbiBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgbGV0IGxhYmVsID0gbWV0aG9kcy4oIWkpIGluIGxldCBjbG8gPSBtZXRob2RfaW1wbCB0YWJsZSBpIG1ldGhvZHMgaW5cbiAgICBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGNsbztcbiAgICBpbmNyIGlcbiAgZG9uZVxuXG4oKioqKiBTdGF0aXN0aWNzICoqKiopXG5cbnR5cGUgc3RhdHMgPVxuICB7IGNsYXNzZXM6IGludDsgbWV0aG9kczogaW50OyBpbnN0X3ZhcnM6IGludDsgfVxuXG5sZXQgc3RhdHMgKCkgPVxuICB7IGNsYXNzZXMgPSAhdGFibGVfY291bnQ7XG4gICAgbWV0aG9kcyA9ICFtZXRob2RfY291bnQ7IGluc3RfdmFycyA9ICFpbnN0X3Zhcl9jb3VudDsgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNoYXBlID1cbiAgfCBGdW5jdGlvblxuICB8IExhenlcbiAgfCBDbGFzc1xuICB8IE1vZHVsZSBvZiBzaGFwZSBhcnJheVxuICB8IFZhbHVlIG9mIE9iai50XG5cbmxldCByZWMgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBzaGFwZSA9XG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgIGxldCByZWMgZm4gKHggOiAnYSkgPVxuICAgICAgICAgbGV0IGZuJyA6ICdhIC0+ICdiID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgIGlmIGZuID09IGZuJyB0aGVuXG4gICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGZuJyB4IGluXG4gICAgICAgT2JqLnJlcHIgZm5cbiAgICB8IExhenkgLT5cbiAgICAgICBsZXQgcmVjIGwgPVxuICAgICAgICAgbGF6eSAoXG4gICAgICAgICAgIGxldCBsJyA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICAgIGlmIGwgPT0gbCcgdGhlblxuICAgICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBMYXp5LmZvcmNlIGwnKSBpblxuICAgICAgIE9iai5yZXByIGxcbiAgICB8IENsYXNzIC0+XG4gICAgICAgT2JqLnJlcHIgKENhbWxpbnRlcm5hbE9PLmR1bW15X2NsYXNzIGxvYylcbiAgICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gICAgfCBWYWx1ZSB2IC0+IHZcbiAgaW5cbiAgT2JqLnNldF9maWVsZCBtb2R1IGkgaW5pdFxuXG5hbmQgaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb21wcyBpblxuICBsZXQgbW9kdSA9IE9iai5uZXdfYmxvY2sgMCBsZW5ndGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIGNvbXBzLihpKVxuICBkb25lO1xuICBtb2R1XG5cbmxldCBpbml0X21vZCBsb2Mgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC5pbml0X21vZDogbm90IGEgbW9kdWxlXCJcblxubGV0IHJlYyB1cGRhdGVfbW9kX2ZpZWxkIG1vZHUgaSBzaGFwZSBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEZ1bmN0aW9uIHwgTGF6eSAtPlxuICAgICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBuXG4gIHwgVmFsdWUgXyAtPlxuICAgICAoKSAoKiB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZSAqKVxuICB8IENsYXNzIC0+XG4gICAgIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID0gNCk7XG4gICAgIGxldCBjbCA9IE9iai5maWVsZCBtb2R1IGkgaW5cbiAgICAgZm9yIGogPSAwIHRvIDMgZG9cbiAgICAgICBPYmouc2V0X2ZpZWxkIGNsIGogKE9iai5maWVsZCBuIGopXG4gICAgIGRvbmVcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyAoT2JqLmZpZWxkIG1vZHUgaSkgblxuXG5hbmQgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG4gPVxuICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA+PSBBcnJheS5sZW5ndGggY29tcHMpO1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNvbXBzIC0gMSBkb1xuICAgIHVwZGF0ZV9tb2RfZmllbGQgbyBpIGNvbXBzLihpKSAoT2JqLmZpZWxkIG4gaSlcbiAgZG9uZVxuXG5sZXQgdXBkYXRlX21vZCBzaGFwZSBvIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogP3JhbmRvbSAoKnRod2FydCB0b29scy9zeW5jX3N0ZGxpYl9kb2NzKikgOiBib29sIC0+IGludCAtPiAnYSB0XG4gIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgZmluZF9vcHQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0XG4gIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgZmluZF9vcHQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIEdlbkhhc2hUYWJsZSA9IHN0cnVjdFxuXG4gIHR5cGUgZXF1YWwgPVxuICB8IEVUcnVlIHwgRUZhbHNlXG4gIHwgRURlYWQgKCoqIHRoZSBnYXJiYWdlIGNvbGxlY3RvciByZWNsYWltZWQgdGhlIGRhdGEgKilcblxuICBtb2R1bGUgTWFrZVNlZWRlZChIOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlICdhIGNvbnRhaW5lclxuICAgIHZhbCBjcmVhdGU6IHQgLT4gJ2EgLT4gJ2EgY29udGFpbmVyXG4gICAgdmFsIHNlZWRlZF9oYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICdhIGNvbnRhaW5lciAtPiB0IC0+IGVxdWFsXG4gICAgdmFsIGdldF9kYXRhOiAnYSBjb250YWluZXIgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIHNldF9rZXlfZGF0YTogJ2EgY29udGFpbmVyIC0+IHQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBjaGVja19rZXk6ICdhIGNvbnRhaW5lciAtPiBib29sXG4gIGVuZCkgOiBTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnRcbiAgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgICAgIG11dGFibGUgZGF0YTogJ2EgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgICAgIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICAgICAgfVxuXG4gICAgYW5kICdhIGJ1Y2tldGxpc3QgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbnMgb2YgaW50ICgqIGhhc2ggb2YgdGhlIGtleSAqKSAqICdhIEguY29udGFpbmVyICogJ2EgYnVja2V0bGlzdFxuXG4gICAgKCoqIHRoZSBoYXNoIG9mIHRoZSBrZXkgaXMga2VwdCBpbiBvcmRlciB0byB0ZXN0IHRoZSBlcXVhbGl0eSBvZiB0aGUgaGFzaFxuICAgICAgYmVmb3JlIHRoZSBrZXkuIFNhbWUgcmVhc29uIGFzIGZvciBXZWFrLk1ha2UgKilcblxuICAgIHR5cGUga2V5ID0gSC50XG5cbiAgICBsZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgICAgIGlmIHggPj0gbiB0aGVuIHhcbiAgICAgIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgICAgIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxuICAgIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbiAgICBsZXQgY3JlYXRlID8ocmFuZG9tID0gKEhhc2h0YmwuaXNfcmFuZG9taXplZCAoKSkpIGluaXRpYWxfc2l6ZSA9XG4gICAgICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gICAgICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICAgICAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG4gICAgbGV0IGNsZWFyIGggPVxuICAgICAgaC5zaXplIDwtIDA7XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgZG9uZVxuXG4gICAgbGV0IHJlc2V0IGggPVxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGlmIGxlbiA9IGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICAgICAgY2xlYXIgaFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBoLnNpemUgPC0gMDtcbiAgICAgICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgaC5pbml0aWFsX3NpemUgRW1wdHlcbiAgICAgIGVuZFxuXG4gICAgbGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5jb3B5IGguZGF0YSB9XG5cbiAgICBsZXQga2V5X2luZGV4IGggaGtleSA9XG4gICAgICBoa2V5IGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGNsZWFuIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBub3QgKEguY2hlY2tfa2V5IGMpIC0+XG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgIHwgQ29ucyhoa2V5LCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgQ29ucyhoa2V5LCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgICgqKiByZXNpemUgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdG8gZG8gdGhlIGFjdHVhbCBjbGVhbmluZyBvZiBkZWFkIGtleXNcbiAgICAgICAgKHJlbW92ZSBkb2VzIGl0IGp1c3QgYmVjYXVzZSBpdCBjb3VsZCkuXG5cbiAgICAgICAgVGhlIGdvYWwgaXMgdG86XG5cbiAgICAgICAgLSBub3QgcmVzaXplIGluZmluaXRlbHkgd2hlbiB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGl2ZSBrZXlzIGlzXG4gICAgICAgIGJvdW5kZWQgYnV0IGtleXMgYXJlIGNvbnRpbnVvdXNseSBhZGRlZC4gVGhhdCB3b3VsZCBoYXBwZW4gaWZcbiAgICAgICAgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmVzaXplLlxuICAgICAgICAtIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBhZGRpdGlvbiwgdGhhdCB3b3VsZCBoYXBwZW4gaWYgdGhpc1xuICAgICAgICBmdW5jdGlvbiBkb24ndCByZXNpemUgZXZlbiB3aGVuIG9ubHkgb25lIGtleSBpcyBkZWFkLlxuXG4gICAgICAgIFNvIHRoZSBhbGdvcml0aG06XG4gICAgICAgIC0gY2xlYW4gdGhlIGtleXMgYmVmb3JlIHJlc2l6aW5nXG4gICAgICAgIC0gaWYgdGhlIG51bWJlciBvZiByZW1haW5pbmcga2V5cyBpcyBsZXNzIHRoYW4gaGFsZiB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgYXJyYXksIGRvbid0IHJlc2l6ZS5cbiAgICAgICAgLSBpZiBpdCBpcyBtb3JlLCByZXNpemUuXG5cbiAgICAgICAgVGhlIHNlY29uZCBwcm9ibGVtIHJlbWFpbnMgaWYgdGhlIHRhYmxlIHJlYWNoZXMgeyFTeXMubWF4X2FycmF5X2xlbmd0aH0uXG5cbiAgICAqKVxuICAgIGxldCByZXNpemUgaCA9XG4gICAgICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICAgICAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gICAgICBjbGVhbiBoO1xuICAgICAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCAmJiBoLnNpemUgPj0gb3NpemUgbHNyIDEgdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgKCogc28gdGhhdCBrZXlfaW5kZXggc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgICAgICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgICAgICB8IENvbnMoaGtleSwgZGF0YSwgcmVzdCkgLT5cbiAgICAgICAgICAgICAgaW5zZXJ0X2J1Y2tldCByZXN0OyAoKiBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiBlbGVtZW50cyAqKVxuICAgICAgICAgICAgICBsZXQgbmlkeCA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgICAgICAgICAgbmRhdGEuKG5pZHgpIDwtIENvbnMoaGtleSwgZGF0YSwgbmRhdGEuKG5pZHgpKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gb3NpemUgLSAxIGRvXG4gICAgICAgICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgICAgICAgZG9uZVxuICAgICAgZW5kXG5cbiAgICBsZXQgYWRkIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29ucyhoa2V5LCBjb250YWluZXIsIGguZGF0YS4oaSkpIGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBoLnNpemUgPC0gaC5zaXplIC0gMTsgbmV4dFxuICAgICAgICAgICAgfCBFRmFsc2UgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KVxuICAgICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICAgICgqIFRoZSBkZWFkIGtleSBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuIEl0IGlzIGFjY2VwdGFibGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgYWxyZWFkeSByZW1vdmVzIGEgYmluZGluZyAqKVxuICAgICAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgICAgIHJlbW92ZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhoayxjLG5leHQpIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dCkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgaC5kYXRhLihpKSA8LSByZW1vdmVfYnVja2V0IGguZGF0YS4oaSlcblxuICAgICgqKiB7IWZpbmR9IGRvbid0IHJlbW92ZSBkZWFkIGtleXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdXJwcmlzaW5nIGZvclxuICAgICAgICB0aGUgdXNlciB0aGF0IGEgcmVhZC1vbmx5IGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHN0YXRlIChlZy4gY29uY3VycmVudFxuICAgICAgICBhY2Nlc3MpLiBTYW1lIGZvciB7IW1lbX0uXG4gICAgKilcbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWMga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gW11cbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZDo6ZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IEguc2V0X2tleV9kYXRhIGMga2V5IGluZm9cbiAgICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhfLF8sbmV4dCkgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICB0cnlcbiAgICAgICAgcmVwbGFjZV9idWNrZXQgbFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29ucyhoa2V5LCBjb250YWluZXIsIGwpO1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGsgPSBoa2V5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiB0cnVlXG4gICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiBtZW1faW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfaGssIF9jLCByZXN0KSAtPiBtZW1faW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG4gICAgbGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgcmVzdFxuXG4gICAgbGV0IHN0YXRzIGggPVxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIEguY2hlY2tfa2V5IGMgLT5cbiAgICAgICAgICBidWNrZXRfbGVuZ3RoX2FsaXZlIChhY2N1ICsgMSkgcmVzdFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSByZXN0XG5cbiAgICBsZXQgc3RhdHNfYWxpdmUgaCA9XG4gICAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYikpIDAgaC5kYXRhXG4gICAgICBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYiBpblxuICAgICAgICAgICBzaXplIDo9ICFzaXplICsgbDtcbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSAhc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9iakVwaCA9IE9iai5FcGhlbWVyb25cblxubGV0IF9vYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgdiAtPiBTb21lIChPYmoub2JqIHYpXG5cbigqKiBUaGUgcHJldmlvdXMgZnVuY3Rpb24gaXMgdHlwZWQgc28gdGhpcyBvbmUgaXMgYWxzbyBjb3JyZWN0ICopXG5sZXQgb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPiBPYmoubWFnaWMgeFxuXG5cbm1vZHVsZSBLMSA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgMVxuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKGs6J2spIDogdW5pdCA9IE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkgZXBoIGtleTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleSA9XG4gICAgbWF0Y2ggZ2V0X2tleSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleSAtPiBnZXRfZGF0YSBlcGhcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggPSBILnNlZWRlZF9oYXNoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgKCogeyFnZXRfa2V5X2NvcHl9IGlzIG5vdCB1c2VkIGJlY2F1c2UgdGhlIGVxdWFsaXR5IG9mIHRoZSB1c2VyIGNhbiBiZVxuICAgICAgICAgICAgdGhlIHBoeXNpY2FsIGVxdWFsaXR5ICopXG4gICAgICAgIG1hdGNoIGdldF9rZXkgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsnIC0+XG4gICAgICAgICAgICBpZiBILmVxdWFsIGsgaycgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSA9IGNoZWNrX2tleVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazFfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGsxX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXkgayBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkgZSB3aXRoXG4gICAgICB8IFNvbWUgeCB3aGVuIHggPT0gayAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXkgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5IGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEsyID0gc3RydWN0XG4gIHR5cGUgKCdrMSwgJ2syLCAnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnazEsJ2syLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAyXG5cbiAgbGV0IGdldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDEpXG4gIGxldCBzZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2syKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMSAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIChkOidkKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleTEga2V5MiBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleTEgZXBoIGtleTE7XG4gICAgc2V0X2tleTIgZXBoIGtleTI7XG4gICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IGtleTEpO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5MSBrZXkyID1cbiAgICBtYXRjaCBnZXRfa2V5MSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleTEgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZ2V0X2tleTIgZXBoIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleTIgLT4gZ2V0X2RhdGEgZXBoXG4gICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkXG4gICAgICAoSDE6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKVxuICAgICAgKEgyOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSDEudCxIMi50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBIMS50ICogSDIudFxuICAgICAgbGV0IGNyZWF0ZSAoazEsazIpIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCBzZWVkIChrMSxrMikgPVxuICAgICAgICBIMS5zZWVkZWRfaGFzaCBzZWVkIGsxICsgSDIuc2VlZGVkX2hhc2ggc2VlZCBrMiAqIDY1NTk5XG4gICAgICBsZXQgZXF1YWwgYyAoazEsazIpID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPlxuICAgICAgICAgICAgaWYgSDEuZXF1YWwgazEgazEnICYmIEgyLmVxdWFsIGsyIGsyJ1xuICAgICAgICAgICAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIChrMSxrMikgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPSBjaGVja19rZXkxIGMgJiYgY2hlY2tfa2V5MiBjXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEgxOiBIYXNodGJsLkhhc2hlZFR5cGUpKEgyOiBIYXNodGJsLkhhc2hlZFR5cGUpOlxuICAgIChTIHdpdGggdHlwZSBrZXkgPSBIMS50ICogSDIudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWRcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgxLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMS5lcXVhbFxuICAgICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgxLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMi50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDIuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2sxLCAnazIsICdkKSB0ID0gKCdrMSwgJ2syLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsxIGsyIGQgPSBiIDo9IGsyX21ha2UgazEgazIgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrMSBrMiBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkxIGUsIGdldF9rZXkyIGUgd2l0aFxuICAgICAgfCBTb21lIHgxLCBTb21lIHgyIHdoZW4geDEgPT0gazEgJiYgeDIgPT0gazIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgazEgazIgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgazEgazIgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgazEgazIgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGsxIGsyKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIChrOidrKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgbiAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IG5cblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleXMgZGF0YSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGgga2V5cyBpblxuICAgIGxldCBlcGggPSBjcmVhdGUgbCBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyBzZXRfa2V5IGVwaCBpIGtleXMuKGkpIGRvbmU7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXlzID1cbiAgICBsZXQgbCA9IGxlbmd0aCBlcGggaW5cbiAgICB0cnlcbiAgICAgIGlmIGwgPD4gQXJyYXkubGVuZ3RoIGtleXMgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIG1hdGNoIGdldF9rZXkgZXBoIGkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2UgRXhpdFxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5cy4oaSkgLT4gKClcbiAgICAgICAgfCBTb21lIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGdldF9kYXRhIGVwaFxuICAgIHdpdGggRXhpdCAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudCBhcnJheVxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoQXJyYXkubGVuZ3RoIGspIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCBrID1cbiAgICAgICAgbGV0IGggPSByZWYgMCBpblxuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgaCA6PSBILnNlZWRlZF9oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID1cbiAgICAgICAgbGV0IHJlYyBjaGVjayBjIGkgPVxuICAgICAgICAgIGkgPCAwIHx8IChjaGVja19rZXkgYyBpICYmIGNoZWNrIGMgKGktMSkpIGluXG4gICAgICAgIGNoZWNrIGMgKGxlbmd0aCBjIC0gMSlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCBhcnJheSkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGtuX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrbl9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrIGUgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIGxlbmd0aCBlIDw+IEFycmF5Lmxlbmd0aCBrIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBrIC0gMSBkb1xuICAgICAgICAgIG1hdGNoIGdldF9rZXkgZSBpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCB3aGVuIHggPT0gay4oaSkgLT4gKClcbiAgICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgICAgICBkb25lO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIEV4aXQgLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgRGFtaWVuIERvbGlnZXosIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZ2VuZXJpY19xdW90ZSBxdW90ZXF1b3RlIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIGlmIHMuW2ldID0gJ1xcJydcbiAgICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcXVvdGVxdW90ZVxuICAgIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGIgIHMuW2ldXG4gIGRvbmU7XG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzFdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvYmFzZW5hbWUuaHRtbFxuICBJbiBzdGVwIDEgb2YgW1sxXV0sIHdlIGNob29zZSB0byByZXR1cm4gXCIuXCIgZm9yIGVtcHR5IGlucHV0LlxuICAgIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sKVxuICBJbiBzdGVwIDIsIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiAgU3RlcCA2IGlzIG5vdCBpbXBsZW1lbnRlZDogd2UgY29uc2lkZXIgdGhhdCB0aGUgW3N1ZmZpeF0gb3BlcmFuZCBpc1xuICAgIGFsd2F5cyBhYnNlbnQuICBTdWZmaXhlcyBhcmUgaGFuZGxlZCBieSBbY2hvcF9zdWZmaXhdIGFuZCBbY2hvcF9leHRlbnNpb25dLlxuKilcbmxldCBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyBmaW5kX2VuZCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gZmluZF9lbmQgKG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgbiAobiArIDEpXG4gIGFuZCBmaW5kX2JlZyBuIHAgPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgcFxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBTdHJpbmcuc3ViIG5hbWUgKG4gKyAxKSAocCAtIG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgKG4gLSAxKSBwXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIGZpbmRfZW5kIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzJdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvZGlybmFtZS5odG1sXG4gIEluIHN0ZXAgNiBvZiBbWzJdXSwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuKilcbmxldCBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIHRyYWlsaW5nX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gdHJhaWxpbmdfc2VwIChuIC0gMSlcbiAgICBlbHNlIGJhc2UgblxuICBhbmQgYmFzZSBuID1cbiAgICBpZiBuIDwgMCB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCBuXG4gICAgZWxzZSBiYXNlIChuIC0gMSlcbiAgYW5kIGludGVybWVkaWF0ZV9zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgKG4gLSAxKVxuICAgIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKG4gKyAxKVxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSB0cmFpbGluZ19zZXAgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbm1vZHVsZSB0eXBlIFNZU0RFUFMgPSBzaWdcbiAgdmFsIG51bGwgOiBzdHJpbmdcbiAgdmFsIGN1cnJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHBhcmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgZGlyX3NlcCA6IHN0cmluZ1xuICB2YWwgaXNfZGlyX3NlcCA6IHN0cmluZyAtPiBpbnQgLT4gYm9vbFxuICB2YWwgaXNfcmVsYXRpdmUgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaXNfaW1wbGljaXQgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hlY2tfc3VmZml4IDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaG9wX3N1ZmZpeF9vcHQgOiBzdWZmaXg6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCB0ZW1wX2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBxdW90ZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHF1b3RlX2NvbW1hbmQgOlxuICAgIHN0cmluZyAtPiA/c3RkaW46IHN0cmluZyAtPiA/c3Rkb3V0OiBzdHJpbmcgLT4gP3N0ZGVycjogc3RyaW5nXG4gICAgICAgICAgIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuICB2YWwgYmFzZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBkaXJuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVbml4IDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gcy5baV0gPSAnLydcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPSBTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJ1xuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDpzdWZmIG5hbWVcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiByID0gc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJUTVBESVJcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi90bXBcIlxuICBsZXQgcXVvdGUgPSBnZW5lcmljX3F1b3RlIFwiJ1xcXFwnJ1wiXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIChjbWQgOjogYXJncykpXG4gICAgXiAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlIGYpXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBXaW4zMiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIk5VTFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiXFxcXFwiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IGxldCBjID0gcy5baV0gaW4gYyA9ICcvJyB8fCBjID0gJ1xcXFwnIHx8IGMgPSAnOidcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPVxuICAgIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnXFxcXCcpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgbi5bMV0gPD4gJzonKVxuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuXFxcXFwiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi5cXFxcXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgIFN0cmluZy5sZW5ndGggbmFtZSA+PSBTdHJpbmcubGVuZ3RoIHN1ZmYgJiZcbiAgIChsZXQgcyA9IFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcubGVuZ3RoIHN1ZmYpIGluXG4gICAgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmKVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgciA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRFTVBcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi5cIlxuICBsZXQgcXVvdGUgcyA9XG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIicgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnXFxcIicgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgYyAgICAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjOyBsb29wIChpKzEpO1xuICAgIGFuZCBsb29wX2JzIG4gaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICAgICAgYWRkX2JzIG47XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJ1xcXCInIC0+IGFkZF9icyAoMipuKzEpOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7IGxvb3AgKGkrMSk7XG4gICAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgKG4rMSkgKGkrMSk7XG4gICAgICAgIHwgXyAgICAtPiBhZGRfYnMgbjsgbG9vcCBpXG4gICAgICBlbmRcbiAgICBhbmQgYWRkX2JzIG4gPSBmb3IgX2ogPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnOyBkb25lXG4gICAgaW5cbiAgICBsb29wIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbigqXG5RdW90aW5nIGNvbW1hbmRzIGZvciBleGVjdXRpb24gYnkgY21kLmV4ZSBpcyBkaWZmaWN1bHQuXG4xLSBFYWNoIGFyZ3VtZW50IGlzIGZpcnN0IHF1b3RlZCB1c2luZyB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlLCB0b1xuICAgcHJvdGVjdCBpdCBhZ2FpbnN0IHRoZSBwcm9jZXNzaW5nIHBlcmZvcm1lZCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSxcbiAgIHRoZW4gY21kLmV4ZSdzIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgZXNjYXBlZCB3aXRoICdeJywgdXNpbmdcbiAgIHRoZSBcInF1b3RlX2NtZFwiIGZ1bmN0aW9uIGJlbG93LiAgRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlLzIwMTEvMDQvMjNcbjItIFRoZSBjb21tYW5kIGFuZCB0aGUgcmVkaXJlY3Rpb24gZmlsZXMsIGlmIGFueSwgbXVzdCBiZSBkb3VibGUtcXVvdGVkXG4gICBpbiBjYXNlIHRoZXkgY29udGFpbiBzcGFjZXMuICBUaGlzIHF1b3RpbmcgaXMgaW50ZXJwcmV0ZWQgYnkgY21kLmV4ZSxcbiAgIG5vdCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSwgaGVuY2UgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZVxuICAgY2Fubm90IGJlIHVzZWQuICBUaGUgdHdvIGNoYXJhY3RlcnMgd2UgZG9uJ3Qga25vdyBob3cgdG8gcXVvdGVcbiAgIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY21kLmV4ZSBzdHJpbmcgYXJlIGRvdWJsZS1xdW90ZSBhbmQgcGVyY2VudC5cbiAgIFdlIGp1c3QgZmFpbCBpZiB0aGUgY29tbWFuZCBuYW1lIG9yIHRoZSByZWRpcmVjdGlvbiBmaWxlIG5hbWVzXG4gICBjb250YWluIGEgZG91YmxlIHF1b3RlIChub3QgYWxsb3dlZCBpbiBXaW5kb3dzIGZpbGUgbmFtZXMsIGFueXdheSlcbiAgIG9yIGEgcGVyY2VudC4gIFNlZSBmdW5jdGlvbiBcInF1b3RlX2NtZF9maWxlbmFtZVwiIGJlbG93LlxuMy0gVGhlIHdob2xlIHN0cmluZyBwYXNzZWQgdG8gU3lzLmNvbW1hbmQgaXMgdGhlbiBlbmNsb3NlZCBpbiBkb3VibGVcbiAgIHF1b3Rlcywgd2hpY2ggYXJlIGltbWVkaWF0ZWx5IHN0cmlwcGVkIGJ5IGNtZC5leGUuICBPdGhlcndpc2UsXG4gICBzb21lIG9mIHRoZSBkb3VibGUgcXVvdGVzIGZyb20gc3RlcCAyIGFib3ZlIGNhbiBiZSBtaXNwYXJzZWQuXG4gICBTZWUgZS5nLiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTk2NTE0MVxuKilcbiAgbGV0IHF1b3RlX2NtZCBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIDIwKSBpblxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJygnIHwgJyknIHwgJyEnIHwgJ14nIHwgJyUnIHwgJ1xcXCInIHwgJzwnIHwgJz4nIHwgJyYnIHwgJ3wnIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXic7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjKVxuICAgICAgcztcbiAgICBCdWZmZXIuY29udGVudHMgYlxuICBsZXQgcXVvdGVfY21kX2ZpbGVuYW1lIGYgPVxuICAgIGlmIFN0cmluZy5jb250YWlucyBmICdcXFwiJyB8fCBTdHJpbmcuY29udGFpbnMgZiAnJScgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgXCJcXFwiXCIgXiBmIF4gXCJcXFwiXCJcbiAgICBlbHNlXG4gICAgICBmXG4gICgqIFJlZGlyZWN0aW9ucyBpbiBjbWQuZXhlOiBzZWUgaHR0cHM6Ly9zczY0LmNvbS9udC9zeW50YXgtcmVkaXJlY3Rpb24uaHRtbFxuICAgICBhbmQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvd2luZG93cy9pdC1wcm8vd2luZG93cy14cC9iYjQ5MDk4Mih2PXRlY2huZXQuMTApXG4gICopXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXG4gICAgICBcIlxcXCJcIjtcbiAgICAgIHF1b3RlX2NtZF9maWxlbmFtZSBjbWQ7XG4gICAgICBcIiBcIjtcbiAgICAgIHF1b3RlX2NtZCAoU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgYXJncykpO1xuICAgICAgKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIFwiXFxcIlwiXG4gICAgXVxuICBsZXQgaGFzX2RyaXZlIHMgPVxuICAgIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvblxuICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIGlzX2xldHRlciBzLlswXSAmJiBzLlsxXSA9ICc6J1xuICBsZXQgZHJpdmVfYW5kX3BhdGggcyA9XG4gICAgaWYgaGFzX2RyaXZlIHNcbiAgICB0aGVuIChTdHJpbmcuc3ViIHMgMCAyLCBTdHJpbmcuc3ViIHMgMiAoU3RyaW5nLmxlbmd0aCBzIC0gMikpXG4gICAgZWxzZSAoXCJcIiwgcylcbiAgbGV0IGRpcm5hbWUgcyA9XG4gICAgbGV0IChkcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgbGV0IGRpciA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aCBpblxuICAgIGRyaXZlIF4gZGlyXG4gIGxldCBiYXNlbmFtZSBzID1cbiAgICBsZXQgKF9kcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBDeWd3aW4gOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCA9IFdpbjMyLmlzX2Rpcl9zZXBcbiAgbGV0IGlzX3JlbGF0aXZlID0gV2luMzIuaXNfcmVsYXRpdmVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gV2luMzIuaXNfaW1wbGljaXRcbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IFdpbjMyLmNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gV2luMzIuY2hvcF9zdWZmaXhfb3B0XG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gVW5peC50ZW1wX2Rpcl9uYW1lXG4gIGxldCBxdW90ZSA9IFVuaXgucXVvdGVcbiAgbGV0IHF1b3RlX2NvbW1hbmQgPSBVbml4LnF1b3RlX2NvbW1hbmRcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFN5c2RlcHMgPVxuICAodmFsIChtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgfCBcIldpbjMyXCIgLT4gKG1vZHVsZSBXaW4zMjogU1lTREVQUylcbiAgICAgICB8IFwiQ3lnd2luXCIgLT4gKG1vZHVsZSBDeWd3aW46IFNZU0RFUFMpXG4gICAgICAgfCBfIC0+IChtb2R1bGUgVW5peDogU1lTREVQUykpKVxuXG5pbmNsdWRlIFN5c2RlcHNcblxubGV0IGNvbmNhdCBkaXJuYW1lIGZpbGVuYW1lID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGRpcm5hbWUgaW5cbiAgaWYgbCA9IDAgfHwgaXNfZGlyX3NlcCBkaXJuYW1lIChsLTEpXG4gIHRoZW4gZGlybmFtZSBeIGZpbGVuYW1lXG4gIGVsc2UgZGlybmFtZSBeIGRpcl9zZXAgXiBmaWxlbmFtZVxuXG5sZXQgY2hvcF9zdWZmaXggbmFtZSBzdWZmID1cbiAgaWYgY2hlY2tfc3VmZml4IG5hbWUgc3VmZlxuICB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX3N1ZmZpeFwiXG5cbmxldCBleHRlbnNpb25fbGVuIG5hbWUgPVxuICBsZXQgcmVjIGNoZWNrIGkwIGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpMCAoaSAtIDEpXG4gICAgZWxzZSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBpMFxuICBpblxuICBsZXQgcmVjIHNlYXJjaF9kb3QgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkgKGkgLSAxKVxuICAgIGVsc2Ugc2VhcmNoX2RvdCAoaSAtIDEpXG4gIGluXG4gIHNlYXJjaF9kb3QgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbmxldCBleHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbCkgbFxuXG5sZXQgY2hvcF9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX2V4dGVuc2lvblwiXG4gIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmxldCByZW1vdmVfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIG5hbWUgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxuZXh0ZXJuYWwgb3Blbl9kZXNjOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5leHRlcm5hbCBjbG9zZV9kZXNjOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuXG5sZXQgcHJuZ19rZXkgPVxuICBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbmxldCB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJhbmRvbV9zdGF0ZSA9IERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5IGluXG4gIGxldCBybmQgPSAoUmFuZG9tLlN0YXRlLmJpdHMgcmFuZG9tX3N0YXRlKSBsYW5kIDB4RkZGRkZGIGluXG4gIGNvbmNhdCB0ZW1wX2RpciAoUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4KVxuXG5sZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpGdW4uaWQgKGZ1biAoKSAtPiB0ZW1wX2Rpcl9uYW1lKVxuXG5sZXQgc2V0X3RlbXBfZGlyX25hbWUgcyA9IERvbWFpbi5ETFMuc2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSBzXG5sZXQgZ2V0X3RlbXBfZGlyX25hbWUgKCkgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWVcblxubGV0IHRlbXBfZmlsZSA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIGNsb3NlX2Rlc2Mob3Blbl9kZXNjIG5hbWUgW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2xdIDBvNjAwKTtcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSlcbiAgICBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPSBGbG9hdC5oeXBvdCB4LnJlIHguaW1cblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiB3aXRoXG4gIHwgKCkgLT4gU29tZSAoKVxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG4oKiBSZWFkIHVwIHRvIFtsZW5dIGJ5dGVzIGludG8gW2J1Zl0sIHN0YXJ0aW5nIGF0IFtvZnNdLiBSZXR1cm4gdG90YWwgYnl0ZXNcbiAgIHJlYWQuICopXG5sZXQgcmVhZF91cHRvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIG9mcyBsZW4gPVxuICAgIGlmIGxlbiA9IDAgdGhlbiBvZnNcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IFN0ZGxpYi5pbnB1dCBpYyBidWYgb2ZzIGxlbiBpblxuICAgICAgaWYgciA9IDAgdGhlblxuICAgICAgICBvZnNcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCAob2ZzICsgcikgKGxlbiAtIHIpXG4gICAgZW5kXG4gIGluXG4gIGxvb3Agb2ZzIGxlbiAtIG9mc1xuXG4oKiBCZXN0IGVmZm9ydCBhdHRlbXB0IHRvIHJldHVybiBhIGJ1ZmZlciB3aXRoID49IChvZnMgKyBuKSBieXRlcyBvZiBzdG9yYWdlLFxuICAgYW5kIHN1Y2ggdGhhdCBpdCBjb2luY2lkZXMgd2l0aCBbYnVmXSBhdCBpbmRpY2VzIDwgW29mc10uXG5cbiAgIFRoZSByZXR1cm5lZCBidWZmZXIgaXMgZXF1YWwgdG8gW2J1Zl0gaXRzZWxmIGlmIGl0IGFscmVhZHkgaGFzIHN1ZmZpY2llbnRcbiAgIGZyZWUgc3BhY2UuXG5cbiAgIFRoZSByZXR1cm5lZCBidWZmZXIgbWF5IGhhdmUgKmZld2VyKiB0aGFuIFtvZnMgKyBuXSBieXRlcyBvZiBzdG9yYWdlIGlmIHRoaXNcbiAgIG51bWJlciBpcyA+IFtTeXMubWF4X3N0cmluZ19sZW5ndGhdLiBIb3dldmVyIHRoZSByZXR1cm5lZCBidWZmZXIgd2lsbFxuICAgKmFsd2F5cyogaGF2ZSA+IFtvZnNdIGJ5dGVzIG9mIHN0b3JhZ2UuIEluIHRoZSBsaW1pdGluZyBjYXNlIHdoZW4gW29mcyA9IGxlblxuICAgPSBTeXMubWF4X3N0cmluZ19sZW5ndGhdIChzbyB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byByZXNpemUgdGhlIGJ1ZmZlciBhdFxuICAgYWxsKSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcblxubGV0IGVuc3VyZSBidWYgb2ZzIG4gPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPj0gb2ZzICsgbiB0aGVuIGJ1ZlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5ld19sZW4gPSByZWYgbGVuIGluXG4gICAgd2hpbGUgIW5ld19sZW4gPCBvZnMgKyBuIGRvXG4gICAgICBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiArIDFcbiAgICBkb25lO1xuICAgIGxldCBuZXdfbGVuID0gIW5ld19sZW4gaW5cbiAgICBsZXQgbmV3X2xlbiA9XG4gICAgICBpZiBuZXdfbGVuIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIG5ld19sZW5cbiAgICAgIGVsc2UgaWYgb2ZzIDwgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIGZhaWx3aXRoIFwiSW5fY2hhbm5lbC5pbnB1dF9hbGw6IGNoYW5uZWwgY29udGVudCBcXFxuICAgICAgICAgICAgICAgICAgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bSBzdHJpbmcgbGVuZ3RoXCJcbiAgICBpblxuICAgIGxldCBuZXdfYnVmID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1ZiAwIG5ld19idWYgMCBvZnM7XG4gICAgbmV3X2J1ZlxuICBlbmRcblxubGV0IGlucHV0X2FsbCBpYyA9XG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW4gKCogSU9fQlVGRkVSX1NJWkUgKilcbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgdHJ5XG4gICAgICBTdGRsaWIuaW5fY2hhbm5lbF9sZW5ndGggaWMgLSBTdGRsaWIucG9zX2luIGljXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgLTFcbiAgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9IGlmIGluaXRpYWxfc2l6ZSA8IDAgdGhlbiBjaHVua19zaXplIGVsc2UgaW5pdGlhbF9zaXplIGluXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIGlmIGluaXRpYWxfc2l6ZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgaW5pdGlhbF9zaXplXG4gICAgZWxzZVxuICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgaW5pdGlhbF9zaXplIGluXG4gIGxldCBucmVhZCA9IHJlYWRfdXB0byBpYyBidWYgMCBpbml0aWFsX3NpemUgaW5cbiAgaWYgbnJlYWQgPCBpbml0aWFsX3NpemUgdGhlbiAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIHBhcnRpYWxseSBmaWxsZWQgKilcbiAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIG5yZWFkXG4gIGVsc2UgYmVnaW4gKCogbnJlYWQgPSBpbml0aWFsX3NpemUsIG1heWJlIEVPRiByZWFjaGVkICopXG4gICAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAgICgqIEVPRiByZWFjaGVkLCBidWZmZXIgaXMgY29tcGxldGVseSBmaWxsZWQgKilcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgICB8IGMgLT5cbiAgICAgICAgKCogRU9GIG5vdCByZWFjaGVkICopXG4gICAgICAgIGxldCByZWMgbG9vcCBidWYgb2ZzID1cbiAgICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBvZnMgY2h1bmtfc2l6ZSBpblxuICAgICAgICAgIGxldCByZW0gPSBCeXRlcy5sZW5ndGggYnVmIC0gb2ZzIGluXG4gICAgICAgICAgKCogW3JlbV0gY2FuIGJlIDwgW2NodW5rX3NpemVdIGlmIGJ1ZmZlciBzaXplIGNsb3NlIHRvXG4gICAgICAgICAgICAgW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKilcbiAgICAgICAgICBsZXQgciA9IHJlYWRfdXB0byBpYyBidWYgb2ZzIHJlbSBpblxuICAgICAgICAgIGlmIHIgPCByZW0gdGhlbiAoKiBFT0YgcmVhY2hlZCAqKVxuICAgICAgICAgICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCAob2ZzICsgcilcbiAgICAgICAgICBlbHNlICgqIHIgPSByZW0gKilcbiAgICAgICAgICAgIGxvb3AgYnVmIChvZnMgKyByZW0pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG5yZWFkIChjaHVua19zaXplICsgMSkgaW5cbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiBucmVhZCBjO1xuICAgICAgICBsb29wIGJ1ZiAobnJlYWQgKyAxKVxuICBlbmRcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gb3V0X2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3Rkb3V0ID0gU3RkbGliLnN0ZG91dFxubGV0IHN0ZGVyciA9IFN0ZGxpYi5zdGRlcnJcbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX291dF9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9vdXRcbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX291dF9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBvYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnIgb2MpXG4gICAgKGZ1biAoKSAtPiBmIG9jKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0X2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXQgcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19vdXRcbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX291dFxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX291dF9ub2VyclxubGV0IGZsdXNoID0gU3RkbGliLmZsdXNoXG5sZXQgZmx1c2hfYWxsID0gU3RkbGliLmZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gU3RkbGliLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBTdGRsaWIub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfc3RyaW5nID0gU3RkbGliLm91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBTdGRsaWIub3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0ID0gU3RkbGliLm91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N1YnN0cmluZ1xubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5cbmV4dGVybmFsIHNldF9idWZmZXJlZCA6IHQgLT4gYm9vbCAtPiB1bml0ID0gXCJjYW1sX21sX3NldF9idWZmZXJlZFwiXG5cbmV4dGVybmFsIGlzX2J1ZmZlcmVkIDogdCAtPiBib29sID0gXCJjYW1sX21sX2lzX2J1ZmZlcmVkXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gLi5cbmV4dGVybmFsIHBlcmZvcm0gOiAnYSB0IC0+ICdhID0gXCIlcGVyZm9ybVwiXG5cbnR5cGUgZXhuICs9IFVuaGFuZGxlZDogJ2EgdCAtPiBleG5cbmV4Y2VwdGlvbiBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbmxldCAoKSA9XG4gIGxldCBwcmludGVyID0gZnVuY3Rpb25cbiAgICB8IFVuaGFuZGxlZCB4IC0+XG4gICAgICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIlN0ZGxpYi5FZmZlY3QuVW5oYW5kbGVkKCVzKVwiXG4gICAgICAgICAgICAoUHJpbnRleGMuc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBAQCBPYmoucmVwciB4KVxuICAgICAgICBpblxuICAgICAgICBTb21lIG1zZ1xuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgcHJpbnRlclxuXG4oKiBSZWdpc3RlciB0aGUgZXhjZXB0aW9ucyBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiBhY2Nlc3MgaXQgKilcbnR5cGUgXyB0ICs9IFNob3VsZF9ub3Rfc2VlX3RoaXNfXyA6IHVuaXQgdFxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuVW5oYW5kbGVkXCJcbiAgICAgICAgICAoVW5oYW5kbGVkIFNob3VsZF9ub3Rfc2VlX3RoaXNfXylcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIlxuICAgICAgICAgIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxudHlwZSAoJ2EsICdiKSBzdGFja1xuXG5leHRlcm5hbCByZXN1bWUgOiAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+ICdiID0gXCIlcmVzdW1lXCJcbmV4dGVybmFsIHJ1bnN0YWNrIDogKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiAnYiA9IFwiJXJ1bnN0YWNrXCJcblxubW9kdWxlIERlZXAgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG4gIHR5cGUgbGFzdF9maWJlclxuXG4gIGV4dGVybmFsIHRha2VfY29udF9ub2V4YyA6ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiAoJ2EsICdiKSBzdGFjayA9XG4gICAgXCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBhbGxvY19zdGFjayA6XG4gICAgKCdhIC0+ICdiKSAtPlxuICAgIChleG4gLT4gJ2IpIC0+XG4gICAgKCdjIHQgLT4gKCdjLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgc3RhY2sgPSBcImNhbWxfYWxsb2Nfc3RhY2tcIlxuXG4gIGxldCBjb250aW51ZSBrIHYgPSByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIHggLT4geCkgdlxuXG4gIGxldCBkaXNjb250aW51ZSBrIGUgPSByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIGUgLT4gcmFpc2UgZSkgZVxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIGUgYnQgPSByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIGUgLT5cbiAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KSBlXG5cbiAgdHlwZSAoJ2EsJ2IpIGhhbmRsZXIgPVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyB0IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBtYXRjaF93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPiBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgdHlwZSAnYSBlZmZlY3RfaGFuZGxlciA9XG4gICAgeyBlZmZjOiAnYi4gJ2IgdCAtPiAoKCdiLCdhKSBjb250aW51YXRpb24gLT4gJ2EpIG9wdGlvbiB9XG5cbiAgbGV0IHRyeV93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjJyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgKGZ1biB4IC0+IHgpIChmdW4gZSAtPiByYWlzZSBlKSBlZmZjJyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICBleHRlcm5hbCBnZXRfY2FsbHN0YWNrIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPiBpbnQgLT4gUHJpbnRleGMucmF3X2JhY2t0cmFjZSA9XG4gICAgXCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXCJcbmVuZFxuXG5tb2R1bGUgU2hhbGxvdyA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cbiAgdHlwZSBsYXN0X2ZpYmVyXG5cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuXG4gIGxldCBmaWJlciA6IHR5cGUgYSBiLiAoYSAtPiBiKSAtPiAoYSwgYikgY29udGludWF0aW9uID0gZnVuIGYgLT5cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3QgdHlwZSBfIHQgKz0gSW5pdGlhbF9zZXR1cF9fIDogYSB0IGVuZCBpblxuICAgIGxldCBleGNlcHRpb24gRSBvZiAoYSxiKSBjb250aW51YXRpb24gaW5cbiAgICBsZXQgZicgKCkgPSBmIChwZXJmb3JtIE0uSW5pdGlhbF9zZXR1cF9fKSBpblxuICAgIGxldCBlcnJvciBfID0gZmFpbHdpdGggXCJpbXBvc3NpYmxlXCIgaW5cbiAgICBsZXQgZWZmYyBlZmYgayBfbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBlZmYgd2l0aFxuICAgICAgfCBNLkluaXRpYWxfc2V0dXBfXyAtPiByYWlzZV9ub3RyYWNlIChFIGspXG4gICAgICB8IF8gLT4gZXJyb3IgKClcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgZXJyb3IgZXJyb3IgZWZmYyBpblxuICAgIG1hdGNoIHJ1bnN0YWNrIHMgZicgKCkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEUgayAtPiBrXG4gICAgfCBfIC0+IGVycm9yICgpXG5cbiAgdHlwZSAoJ2EsJ2IpIGhhbmRsZXIgPVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyB0IC0+ICgoJ2MsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuICBleHRlcm5hbCB1cGRhdGVfaGFuZGxlciA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT5cbiAgICAoJ2IgLT4gJ2MpIC0+XG4gICAgKGV4biAtPiAnYykgLT5cbiAgICAoJ2QgdCAtPiAoJ2QsJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdjKSAtPlxuICAgICgnYSwnYykgc3RhY2sgPSBcImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHJlcGVyZm9ybSA6XG4gICAgJ2EgdCAtPiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYyA9IFwiJXJlcGVyZm9ybVwiXG5cbiAgbGV0IGNvbnRpbnVlX2dlbiBrIHJlc3VtZV9mdW4gdiBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBzdGFjayA9IHVwZGF0ZV9oYW5kbGVyIGsgaGFuZGxlci5yZXRjIGhhbmRsZXIuZXhuYyBlZmZjIGluXG4gICAgcmVzdW1lIHN0YWNrIHJlc3VtZV9mdW4gdlxuXG4gIGxldCBjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIHggLT4geCkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiByYWlzZSBlKSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayB2IGJ0IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KSB2IGhhbmRsZXJcblxuICBleHRlcm5hbCBnZXRfY2FsbHN0YWNrIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPiBpbnQgLT4gUHJpbnRleGMucmF3X2JhY2t0cmFjZSA9XG4gICAgXCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXCJcbmVuZFxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiBibGl0X3N0cmluZyBkb2Vzbid0IGV4aXN0IGluIFtTdGRMYWJlbHMuQnl0ZXNdLi4uICAqKVxubGV0IGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG47O1xuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBGb3JtYXRcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5cbmxldCBzZXhwX29mX3QgdCA9IHRcbmxldCB0X29mX3NleHAgdCA9IHRcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IHJlcyA9IGNvbXBhcmUgeCB5IGluXG4gICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgeHMgeXNcblxuYW5kIGNvbXBhcmUgYSBiID1cbiAgaWYgYSA9PSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEF0b20gYSwgQXRvbSBiIC0+IFN0cmluZy5jb21wYXJlIGEgYlxuICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgIHwgTGlzdCBhLCBMaXN0IGIgLT4gY29tcGFyZV9saXN0IGEgYilcbjs7XG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zIG9mIHRcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIHRcblxubW9kdWxlIFByaW50aW5nID0gc3RydWN0XG4gICgqIERlZmF1bHQgaW5kZW50YXRpb24gbGV2ZWwgZm9yIGh1bWFuLXJlYWRhYmxlIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IGRlZmF1bHRfaW5kZW50ID0gcmVmIDFcblxuICAoKiBFc2NhcGluZyBvZiBzdHJpbmdzIHVzZWQgYXMgYXRvbXMgaW4gUy1leHByZXNzaW9ucyAqKVxuXG4gIGxldCBtdXN0X2VzY2FwZSBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxlbiA9IDBcbiAgICB8fFxuICAgIGxldCByZWMgbG9vcCBzdHIgaXggPVxuICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgfCAnXCInIHwgJygnIHwgJyknIHwgJzsnIHwgJ1xcXFwnIC0+IHRydWVcbiAgICAgIHwgJ3wnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJyMnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJyMnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJ3wnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJ1xcMDAwJyAuLiAnXFwwMzInIHwgJ1xcMTI3JyAuLiAnXFwyNTUnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBpeCA+IDAgJiYgbG9vcCBzdHIgKGl4IC0gMSlcbiAgICBpblxuICAgIGxvb3Agc3RyIChsZW4gLSAxKVxuICA7O1xuXG4gIGxldCBlc2NhcGVkIHMgPVxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgblxuICAgICAgOj0gIW5cbiAgICAgICAgICtcbiAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgICB8IF8gLT4gNFxuICAgIGRvbmU7XG4gICAgaWYgIW4gPSBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBzJyA9IEJ5dGVzLmNyZWF0ZSAhbiBpblxuICAgICAgbiA6PSAwO1xuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICAgICB8ICcgJyAuLiAnficgYXMgYyAtPiBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICBsZXQgYSA9IENoYXIuY29kZSBjIGluXG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAgbW9kIDEwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIG1vZCAxMCkpKSk7XG4gICAgICAgIGluY3IgblxuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcycpXG4gIDs7XG5cbiAgbGV0IGVzY19zdHIgc3RyID1cbiAgICBsZXQgZXN0ciA9IGVzY2FwZWQgc3RyIGluXG4gICAgbGV0IGVsZW4gPSBTdHJpbmcubGVuZ3RoIGVzdHIgaW5cbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChlbGVuICsgMikgaW5cbiAgICBieXRlc19ibGl0X3N0cmluZyB+c3JjOmVzdHIgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczoxIH5sZW46ZWxlbjtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAwICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgKGVsZW4gKyAxKSAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIDs7XG5cbiAgbGV0IGluZGV4X29mX25ld2xpbmUgc3RyIHN0YXJ0ID1cbiAgICB0cnkgU29tZSAoU3RyaW5nLmluZGV4X2Zyb20gc3RyIHN0YXJ0ICdcXG4nKSB3aXRoXG4gICAgfCBOb3RfZm91bmQgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBlbmRfcG9zX29wdCA9XG4gICAgbGV0IGVuZF9wb3MgPVxuICAgICAgbWF0Y2ggZW5kX3Bvc19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICB8IFNvbWUgZW5kX3BvcyAtPiBlbmRfcG9zXG4gICAgaW5cbiAgICBTdHJpbmcuc3ViIHN0ciB+cG9zOmluZGV4IH5sZW46KGVuZF9wb3MgLSBpbmRleClcbiAgOztcblxuICBsZXQgaXNfb25lX2xpbmUgc3RyID1cbiAgICBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBpbmRleCAtPiBpbmRleCArIDEgPSBTdHJpbmcubGVuZ3RoIHN0clxuICA7O1xuXG4gIGxldCBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyID1cbiAgICBpZiBub3QgKG11c3RfZXNjYXBlIHN0cilcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyXG4gICAgZWxzZSBpZiBpc19vbmVfbGluZSBzdHJcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY19zdHIgc3RyKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGluZGV4ID1cbiAgICAgICAgbGV0IG5leHRfbmV3bGluZSA9IGluZGV4X29mX25ld2xpbmUgc3RyIGluZGV4IGluXG4gICAgICAgIGxldCBuZXh0X2xpbmUgPSBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBuZXh0X25ld2xpbmUgaW5cbiAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjYXBlZCBuZXh0X2xpbmUpO1xuICAgICAgICBtYXRjaCBuZXh0X25ld2xpbmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5ld2xpbmVfaW5kZXggLT5cbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXFwiO1xuICAgICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpO1xuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcblwiO1xuICAgICAgICAgIGxvb3AgKG5ld2xpbmVfaW5kZXggKyAxKVxuICAgICAgaW5cbiAgICAgIHBwX29wZW5fYm94IHBwZiAwO1xuICAgICAgKCogdGhlIGxlYWRpbmcgc3BhY2UgaXMgdG8gbGluZSB1cCB0aGUgbGluZXMgKilcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXFxcIlwiO1xuICAgICAgbG9vcCAwO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXCJcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgPSBpZiBtdXN0X2VzY2FwZSBzdHIgdGhlbiBlc2Nfc3RyIHN0ciBlbHNlIHN0clxuXG4gICgqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZvcm1hdHRlcnMgKilcblxuICBsZXQgcmVjIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9vcGVuX2JveCBwcGYgaW5kZW50O1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBMaXN0IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiXG5cbiAgYW5kIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBwcF9wcmludF9zcGFjZSBwcGYgKCk7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIDs7XG5cbiAgbGV0IHJlYyBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPlxuICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXCI7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIHN0cic7XG4gICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHQ7XG4gICAgICBmYWxzZVxuICAgIHwgTGlzdCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCI7XG4gICAgICBmYWxzZVxuXG4gIGFuZCBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0XG4gICAgfCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiXG4gIDs7XG5cbiAgbGV0IHBwX2h1bSBwcGYgc2V4cCA9IHBwX2h1bV9pbmRlbnQgIWRlZmF1bHRfaW5kZW50IHBwZiBzZXhwXG4gIGxldCBwcF9tYWNoIHBwZiBzZXhwID0gaWdub3JlIChwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBzZXhwKVxuICBsZXQgcHAgPSBwcF9tYWNoXG5cbiAgKCogU2V4cCBzaXplICopXG5cbiAgbGV0IHJlYyBzaXplX2xvb3AgKCh2LCBjKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHYgKyAxLCBjICsgU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB8IExpc3QgbHN0IC0+IExpc3QuZm9sZF9sZWZ0IGxzdCB+aW5pdDphY2MgfmY6c2l6ZV9sb29wXG4gIDs7XG5cbiAgbGV0IHNpemUgc2V4cCA9IHNpemVfbG9vcCAoMCwgMCkgc2V4cFxuXG4gICgqIEJ1ZmZlciBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19idWZmZXJfaHVtIH5idWYgPyhpbmRlbnQgPSAhZGVmYXVsdF9pbmRlbnQpIHNleHAgPVxuICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYUA/XCIgKHBwX2h1bV9pbmRlbnQgaW5kZW50KSBzZXhwXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlcl9tYWNoIH5idWYgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlciA9IHRvX2J1ZmZlcl9tYWNoXG5cbiAgbGV0IHRvX2J1ZmZlcl9nZW4gfmJ1ZiB+YWRkX2NoYXIgfmFkZF9zdHJpbmcgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBhZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBhZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IGFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gICgqIFRoZSBtYXhpbXVtIHNpemUgb2YgYSB0aGluZyBvbiB0aGUgbWlub3IgaGVhcCBpcyAyNTYgd29yZHMuXG4gICAgIFByZXZpb3VzbHksIHRoaXMgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyIGhlcmUgd2FzIDQwOTYgYnl0ZXMsIHdoaWNoXG4gICAgIGNhdXNlZCB0aGUgQnVmZmVyIHRvIGJlIGFsbG9jYXRlZCBvbiB0aGUgKm1ham9yKiBoZWFwIGV2ZXJ5IHRpbWUuXG5cbiAgICAgQWNjb3JkaW5nIHRvIGEgc2ltcGxlIGJlbmNobWFyayBieSBSb24sIHdlIGNhbiBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvclxuICAgICBzbWFsbCBzLWV4cHJlc3Npb25zIGJ5IGEgZmFjdG9yIG9mIH40IGlmIHdlIG9ubHkgYWxsb2NhdGUgMTAyNCBieXRlc1xuICAgICAoMTI4IHdvcmRzICsgc29tZSBzbWFsbCBvdmVyaGVhZCkgd29ydGggb2YgYnVmZmVyIGluaXRpYWxseS4gIEFuZCBvbmVcbiAgICAgY2FuIGFyZ3VlIHRoYXQgaWYgaXQncyBmcmVlIHRvIGFsbG9jYXRlIHN0cmluZ3Mgc21hbGxlciB0aGFuIDI1NiB3b3JkcyxcbiAgICAgbGFyZ2Ugcy1leHByZXNzaW9ucyByZXF1aXJpbmcgbGFyZ2VyIGV4cGVuc2l2ZSBidWZmZXJzIHdvbid0IG5vdGljZVxuICAgICB0aGUgZXh0cmEgdHdvIGRvdWJsaW5ncyBmcm9tIDEwMjQgYnl0ZXMgdG8gMjA0OCBhbmQgNDA5Ni4gQW5kIGVzcGVjaWFsbHlcbiAgICAgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFwcGxpY2F0aW9ucyB0byBhbHdheXMgcGFzcyBpbiBhIGxhcmdlciBidWZmZXIgdG9cbiAgICAgdXNlLiAqKVxuICBsZXQgYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSAxMDI0XG5cbiAgKCogU3RyaW5nIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gP2luZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0clxuICAgICAgd2hlbiBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIF8gLT4gZmFsc2UgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX2h1bSA/aW5kZW50IHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX21hY2ggPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfbWFjaFxuZW5kXG5cbmluY2x1ZGUgUHJpbnRpbmdcblxubGV0IG9mX2Zsb2F0X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5sZXQgb2ZfaW50X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUHJpbnRpbmdcbmVuZFxuXG5sZXQgbWVzc2FnZSBuYW1lIGZpZWxkcyA9XG4gIGxldCByZWMgY29udl9maWVsZHMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChmbmFtZSwgZnNleHApIDo6IHJlc3QgLT5cbiAgICAgIChtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgfCBcIlwiIC0+IGZzZXhwIDo6IGNvbnZfZmllbGRzIHJlc3RcbiAgICAgICB8IF8gLT4gTGlzdCBbIEF0b20gZm5hbWU7IGZzZXhwIF0gOjogY29udl9maWVsZHMgcmVzdClcbiAgaW5cbiAgTGlzdCAoQXRvbSBuYW1lIDo6IGNvbnZfZmllbGRzIGZpZWxkcylcbjs7XG4iLCIoKiogUmVwcmVzZW50YXRpb24gb2YgUy1leHByZXNzaW9uIGdyYW1tYXJzICopXG5cbigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgcmVwcmVzZW50YXRpb24gZm9yIHMtZXhwcmVzc2lvbiBncmFtbWFycy4gVXNpbmcgcHB4X3NleHBfY29udlxuICAgIGFuZCBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gcHJvZHVjZXMgYSBncmFtbWFyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXJpdmVkXG4gICAgW29mX3NleHBdIGZvciBhIGdpdmVuIHR5cGUuXG5cbiAgICBBcyB3aXRoIG90aGVyIGRlcml2ZWQgZGVmaW5pdGlvbnMsIHBvbHltb3JwaGljIHR5cGVzIGRlcml2ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYVxuICAgIGdyYW1tYXIgZm9yIGVhY2ggdHlwZSBhcmd1bWVudCBhbmQgcHJvZHVjZXMgYSBncmFtbWFyIGZvciB0aGUgbW9ub21vcnBoaXplZCB0eXBlLlxuXG4gICAgTW9ub21vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZ3JhbW1hciBkaXJlY3RseS4gVG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cyxcbiAgICBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gd3JhcHMgZ3JhbW1hcnMgaW4gdGhlIFtMYXp5XSBjb25zdHJ1Y3RvciBhcyBuZWVkZWQuXG5cbiAgICBUaGlzIHR5cGUgbWF5IGNoYW5nZSBvdmVyIHRpbWUgYXMgb3VyIG5lZWRzIGZvciBleHByZXNzaXZlIGdyYW1tYXJzIGNoYW5nZS4gV2Ugd2lsbFxuICAgIGF0dGVtcHQgdG8gbWFrZSBjaGFuZ2VzIGJhY2t3YXJkLWNvbXBhdGlibGUsIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSByZWFzb25hYmxlIHVwZ3JhZGVcbiAgICBwYXRoLiAqKVxuXG5bQEBAd2FybmluZyBcIi0zMFwiXSAoKiBhbGxvdyBkdXBsaWNhdGUgZmllbGQgbmFtZXMgKilcblxuKCoqIEdyYW1tYXIgb2YgYSBzZXhwLiAqKVxudHlwZSBncmFtbWFyID1cbiAgfCBBbnkgb2Ygc3RyaW5nICgqKiBhY2NlcHRzIGFueSBzZXhwOyBzdHJpbmcgaXMgYSB0eXBlIG5hbWUgZm9yIGh1bWFuIHJlYWRhYmlsaXR5ICopXG4gIHwgQm9vbCAoKiogYWNjZXB0cyB0aGUgYXRvbXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiLCBtb2R1bG8gY2FwaXRhbGl6YXRpb24gKilcbiAgfCBDaGFyICgqKiBhY2NlcHRzIGFueSBzaW5nbGUtY2hhcmFjdGVyIGF0b20gKilcbiAgfCBJbnRlZ2VyICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGludGVnZXIgc3ludGF4LCByZWdhcmRsZXNzIG9mIGJpdCB3aWR0aCAqKVxuICB8IEZsb2F0ICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGZsb2F0IHN5bnRheCAqKVxuICB8IFN0cmluZyAoKiogYWNjZXB0cyBhbnkgYXRvbSAqKVxuICB8IE9wdGlvbiBvZiBncmFtbWFyICgqKiBhY2NlcHRzIGFuIG9wdGlvbiwgYm90aCBbTm9uZV0gdnMgW1NvbWUgX10gYW5kIFsoKV0gdnMgWyhfKV0uICopXG4gIHwgTGlzdCBvZiBsaXN0X2dyYW1tYXIgKCoqIGFjY2VwdHMgYSBsaXN0ICopXG4gIHwgVmFyaWFudCBvZiB2YXJpYW50ICgqKiBhY2NlcHRzIGNsYXVzZXMga2V5ZWQgYnkgYSBsZWFkaW5nIG9yIHNvbGUgYXRvbSAqKVxuICB8IFVuaW9uIG9mIGdyYW1tYXIgbGlzdCAoKiogYWNjZXB0cyBhIHNleHAgaWYgYW55IG9mIHRoZSBsaXN0ZWQgZ3JhbW1hcnMgYWNjZXB0cyBpdCAqKVxuICB8IFRhZ2dlZCBvZiBncmFtbWFyIHdpdGhfdGFnXG4gICgqKiBhbm5vdGF0ZXMgYSBncmFtbWFyIHdpdGggYSBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIgKilcbiAgfCBUeXZhciBvZiBzdHJpbmdcbiAgKCoqIE5hbWUgb2YgYSB0eXBlIHZhcmlhYmxlLCBlLmcuIFtUeXZhciBcImFcIl0gZm9yIFsnYV0uIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBib2R5IG9mXG4gICAgICB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbZGVmbl0gZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSB2YXJpYWJsZS4gKilcbiAgfCBUeWNvbiBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMuIEZvciBleGFtcGxlLCBbVHljb24gKFwibGlzdFwiLCBbIEludGVnZXIgXSldXG4gICAgICByZXByZXNlbnRzIFtpbnQgbGlzdF0uIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBpbm5lcm1vc3QgZW5jbG9zaW5nIFtSZWN1cnNpdmVdXG4gICAgICBncmFtbWFyIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgY29uc3RydWN0b3IuICopXG4gIHwgUmVjdXJzaXZlIG9mIGdyYW1tYXIgKiBkZWZuIGxpc3RcbiAgKCoqIFtSZWN1cnNpdmUgKGdyYW1tYXIsIGRlZmluaXRpb25zKV0gYWxsb3dzIFtncmFtbWFyXSB0byByZWZlciB0byB0eXBlIGNvbnN0cnVjdG9yc1xuICAgICAgZnJvbSB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIFtkZWZpbml0aW9uc10uIFRoZSBkZWZpbml0aW9ucyBtYXkgYWxzbyByZWZlciB0byBlYWNoXG4gICAgICBvdGhlcnMnIHR5cGUgY29uc3RydWN0b3JzLlxuXG4gICAgICBPcmRpbmFyaWx5LCBbZ3JhbW1hcl0gaXRzZWxmIGlzIGp1c3QgYSBbVHljb25dIGFyZ3VtZW50LCBhbHRob3VnaCB0ZWNobmljYWxseSBpdCBjYW5cbiAgICAgIGJlIGFueSBncmFtbWFyLlxuXG4gICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBkZWZpbmUgYSBiaW5hcnkgdHJlZSBwYXJhbWV0ZXJpemVkIGJ5IGEgdHlwZVxuICAgICAgc3RvcmVkIGF0IGl0cyBsZWF2ZXMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBkZWZucyA9XG4gICAgICAgICAgWyB7IHR5Y29uID0gXCJ0cmVlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJUcmVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcIm5vZGVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBMaXN0IChNYW55IChUeWNvbiBcInRyZWVcIiwgW1R5dmFyIFwiYVwiXSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJsZWFmXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gW1R5dmFyIFwiYVwiXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOztcbiAgICAgIF19XG5cbiAgICAgIE5vcm1hbGx5LCB0aGUgdHlwZSBvZiBhIHRyZWUgc3RvcmluZyBpbnRlZ2VycyB3b3VsZCBiZSB3cml0dGVuIGxpa2UgdGhpczpcblxuICAgICAge1tcbiAgICAgICAgUmVjdXJzaXZlIChUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdKSwgZGVmbnMpXG4gICAgICBdfVxuXG4gICAgICBJdCBpcyBlcXVpdmFsZW50LCB0aG91Z2ggbmVlZGxlc3NseSB2ZXJib3NlLCB0byByZXBsYWNlIHRoZSBbVHljb25dIHJlZmVyZW5jZSB3aXRoXG4gICAgICB0aGUgZ3JhbW1hciBvZiBbXCJ0cmVlXCJdLCBzdWJzdGl0dXRpbmcgW0ludGVnZXJdIGZvciBbVHl2YXIgXCJhXCJdOlxuXG4gICAgICB7W1xuICAgICAgICBSZWN1cnNpdmVcbiAgICAgICAgICAoIFZhcmlhbnRcbiAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIlRyZWVcIlxuICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgLCBkZWZucyApXG4gICAgICBdfVxuICAqKVxuICB8IExhenkgb2YgZ3JhbW1hciBsYXp5X3RcbiAgKCoqIExhemlseSBjb21wdXRlZCBncmFtbWFyLiBVc2UgW0xhenldIHRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMuIFRvIGRlZmluZVxuICAgICAgcmVjdXJzaXZlIGdyYW1tYXJzLCB1c2UgW1JlY3Vyc2l2ZV0gaW5zdGVhZC4gKilcblxuKCoqIEdyYW1tYXIgb2YgYSBsaXN0IG9mIHNleHBzLiAqKVxuYW5kIGxpc3RfZ3JhbW1hciA9XG4gIHwgRW1wdHkgKCoqIGFjY2VwdHMgYW4gZW1wdHkgbGlzdCBvZiBzZXhwcyAqKVxuICB8IENvbnMgb2YgZ3JhbW1hciAqIGxpc3RfZ3JhbW1hclxuICAoKiogYWNjZXB0cyBhIG5vbi1lbXB0eSBsaXN0IHdpdGggaGVhZCBhbmQgdGFpbCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hcnMgKilcbiAgfCBNYW55IG9mIGdyYW1tYXIgKCoqIGFjY2VwdHMgemVybyBvciBtb3JlIHNleHBzLCBlYWNoIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFyICopXG4gIHwgRmllbGRzIG9mIHJlY29yZCAoKiogYWNjZXB0cyBzZXhwcyByZXByZXNlbnRpbmcgZmllbGRzIG9mIGEgcmVjb3JkICopXG5cbigqKiBDYXNlIHNlbnNpdGl2aXR5IG9wdGlvbnMgZm9yIG5hbWVzIG9mIHZhcmlhbnQgY29uc3RydWN0b3JzLiAqKVxuYW5kIGNhc2Vfc2Vuc2l0aXZpdHkgPVxuICB8IENhc2VfaW5zZW5zaXRpdmUgKCoqIENvbXBhcmlzb24gaXMgY2FzZSBpbnNlbnNpdGl2ZS4gVXNlZCBmb3IgY3VzdG9tIHBhcnNlcnMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmUgKCoqIENvbXBhcmlzb24gaXMgY2FzZSBzZW5zaXRpdmUuIFVzZWQgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgKCoqIENvbXBhcmlzb24gaXMgY2FzZSBpbnNlbnNpdGl2ZSBmb3IgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgY2FzZSBzZW5zaXRpdmUgYWZ0ZXJ3YXJkLlxuICAgICAgVXNlZCBmb3IgcmVndWxhciB2YXJpYW50cy4gKilcblxuKCoqIEdyYW1tYXIgb2YgdmFyaWFudHMuIEFjY2VwdHMgYW55IHNleHAgbWF0Y2hpbmcgb25lIG9mIHRoZSBjbGF1c2VzLiAqKVxuYW5kIHZhcmlhbnQgPVxuICB7IGNhc2Vfc2Vuc2l0aXZpdHkgOiBjYXNlX3NlbnNpdGl2aXR5XG4gIDsgY2xhdXNlcyA6IGNsYXVzZSB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZS4gQWNjZXB0cyBzZXhwcyBiYXNlZCBvbiB0aGUgW2NsYXVzZV9raW5kXS4gKilcbmFuZCBjbGF1c2UgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyBjbGF1c2Vfa2luZCA6IGNsYXVzZV9raW5kXG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UncyBjb250ZW50cy4gW0F0b21fY2xhdXNlXSBhY2NlcHRzIGFuIGF0b20gbWF0Y2hpbmdcbiAgICB0aGUgY2xhdXNlJ3MgbmFtZS4gW0xpc3RfY2xhdXNlXSBhY2NlcHRzIGEgbGlzdCB3aG9zZSBoZWFkIGlzIGFuIGF0b20gbWF0Y2hpbmcgdGhlXG4gICAgY2xhdXNlJ3MgbmFtZSBhbmQgd2hvc2UgdGFpbCBtYXRjaGVzIFthcmdzXS4gVGhlIGNsYXVzZSdzIG5hbWUgaXMgbWF0Y2hlZCBtb2R1bG8gdGhlXG4gICAgdmFyaWFudCdzIFtuYW1lX2tpbmRdLiAqKVxuYW5kIGNsYXVzZV9raW5kID1cbiAgfCBBdG9tX2NsYXVzZVxuICB8IExpc3RfY2xhdXNlIG9mIHsgYXJncyA6IGxpc3RfZ3JhbW1hciB9XG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjb3JkLiBBY2NlcHRzIGFueSBsaXN0IG9mIHNleHBzIHNwZWNpZnlpbmcgZWFjaCBvZiB0aGUgZmllbGRzLFxuICAgIHJlZ2FyZGxlc3Mgb2Ygb3JkZXIuIElmIFthbGxvd19leHRyYV9maWVsZHNdIGlzIHNwZWNpZmllZCwgaWdub3JlcyBzZXhwcyB3aXRoIG5hbWVzXG4gICAgbm90IGZvdW5kIGluIFtmaWVsZHNdLiAqKVxuYW5kIHJlY29yZCA9XG4gIHsgYWxsb3dfZXh0cmFfZmllbGRzIDogYm9vbFxuICA7IGZpZWxkcyA6IGZpZWxkIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjb3JkIGZpZWxkLiBBIGZpZWxkIG11c3Qgc2hvdyB1cCBleGFjdGx5IG9uY2UgaW4gYSByZWNvcmQgaWZcbiAgICBbcmVxdWlyZWRdLCBvciBhdCBtb3N0IG9uY2Ugb3RoZXJ3aXNlLiBBY2NlcHRzIGEgbGlzdCBoZWFkZWQgYnkgW25hbWVdIGFzIGFuIGF0b20sXG4gICAgZm9sbG93ZWQgYnkgc2V4cHMgbWF0Y2hpbmcgW2FyZ3NdLiAqKVxuYW5kIGZpZWxkID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgcmVxdWlyZWQgOiBib29sXG4gIDsgYXJncyA6IGxpc3RfZ3JhbW1hclxuICB9XG5cbigqKiBHcmFtbWFyIHRhZ2dlZCB3aXRoIGNsaWVudC1zcGVjaWZpYyBrZXkvdmFsdWUgcGFpci4gKilcbmFuZCAnYSB3aXRoX3RhZyA9XG4gIHsga2V5IDogc3RyaW5nXG4gIDsgdmFsdWUgOiBTZXhwLnRcbiAgOyBncmFtbWFyIDogJ2FcbiAgfVxuXG5hbmQgJ2Egd2l0aF90YWdfbGlzdCA9XG4gIHwgVGFnIG9mICdhIHdpdGhfdGFnX2xpc3Qgd2l0aF90YWdcbiAgfCBOb190YWcgb2YgJ2FcblxuKCoqIEdyYW1tYXIgb2YgYSByZWN1cnNpdmUgdHlwZSBkZWZpbml0aW9uLiBOYW1lcyB0aGUgW3R5Y29uXSBiZWluZyBkZWZpbmVkLCBhbmQgdGhlXG4gICAgW3R5dmFyc10gaXQgdGFrZXMgYXMgcGFyYW1ldGVycy4gU3BlY2lmaWVzIHRoZSBbZ3JhbW1hcl0gb2YgdGhlIFt0eWNvbl0uIFRoZSBncmFtbWFyXG4gICAgbWF5IHJlZmVyIHRvIGFueSBvZiB0aGUgW3R5dmFyc10sIGFuZCB0byBhbnkgb2YgdGhlIFt0eWNvbl1zIGZyb20gdGhlIHNhbWUgc2V0IG9mXG4gICAgW1JlY3Vyc2l2ZV0gZGVmaW5pdGlvbnMuICopXG5hbmQgZGVmbiA9XG4gIHsgdHljb24gOiBzdHJpbmdcbiAgOyB0eXZhcnMgOiBzdHJpbmcgbGlzdFxuICA7IGdyYW1tYXIgOiBncmFtbWFyXG4gIH1cblxuKCoqIFRvcC1sZXZlbCBncmFtbWFyIHR5cGUuIEhhcyBhIHBoYW50b20gdHlwZSBwYXJhbWV0ZXIgdG8gYXNzb2NpYXRlIGVhY2ggZ3JhbW1hciB3aXRoXG4gICAgdGhlIHR5cGUgaXRzIHNleHBzIHJlcHJlc2VudC4gVGhpcyBtYWtlcyBpdCBoYXJkZXIgdG8gYXBwbHkgZ3JhbW1hcnMgdG8gdGhlIHdyb25nXG4gICAgdHlwZSwgd2hpbGUgZ3JhbW1hcnMgY2FuIHN0aWxsIGJlIGVhc2lseSBjb2VyY2VkIHRvIGEgbmV3IHR5cGUgaWYgbmVlZGVkLiAqKVxudHlwZSBfIHQgPSB7IHVudHlwZWQgOiBncmFtbWFyIH0gW0BAdW5ib3hlZF1cblxubGV0IGNvZXJjZSAodHlwZSBhIGIpICh7IHVudHlwZWQgPSBfIH0gYXMgdCA6IGEgdCkgOiBiIHQgPSB0XG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpcyB1c2VkIGZvciBhbGwgdGFncyBnZW5lcmF0ZWQgZnJvbSBkb2MgY29tbWVudHMuICopXG5sZXQgZG9jX2NvbW1lbnRfdGFnID0gXCJzZXhwX2dyYW1tYXIuZG9jX2NvbW1lbnRcIlxuIiwibGV0IHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgRW1wdHkgfVxubGV0IGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEJvb2wgfVxubGV0IHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBDaGFyIH1cbmxldCBpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBGbG9hdCB9XG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBzZXhwX3Rfc2V4cF9ncmFtbWFyIDogU2V4cC50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQW55IFwiU2V4cC50XCIgfVxubGV0IHJlZl9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxuXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gb3B0aW9uIFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gT3B0aW9uIHVudHlwZWQgfVxuOztcblxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBsaXN0IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBhcnJheSBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGVtcHR5X3NleHBfZ3JhbW1hciA6IF8gU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG5sZXQgb3BhcXVlX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxubGV0IGZ1bl9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbiIsIigqIFV0aWxpdHkgTW9kdWxlIGZvciBTLWV4cHJlc3Npb24gQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cFxuXG4oKiBDb252ZXJzaW9uIG9mIE9DYW1sLXZhbHVlcyB0byBTLWV4cHJlc3Npb25zICopXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqICclLjE3ZycgaXMgZ3VhcmFudGVlZCB0byBiZSByb3VuZC10cmlwcGFibGUuXG5cbiAgICclLjE1Zycgd2lsbCBiZSByb3VuZC10cmlwcGFibGUgYW5kIG5vdCBoYXZlIG5vaXNlIGF0IHRoZSBsYXN0IGRpZ2l0IG9yIHR3byBmb3IgYSBmbG9hdFxuICAgd2hpY2ggd2FzIGNvbnZlcnRlZCBmcm9tIGEgZGVjaW1hbCAoc3RyaW5nKSB3aXRoIDw9IDE1IHNpZ25pZmljYW50IGRpZ2l0cy4gIFNvIGl0J3NcbiAgIHdvcnRoIHRyeWluZyBmaXJzdCB0byBhdm9pZCB0aGluZ3MgbGlrZSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiLlxuXG4gICBTZWUgY29tbWVudCBhYm92ZSBbdG9fc3RyaW5nX3JvdW5kX3RyaXBwYWJsZV0gaW4geyFDb3JlLkZsb2F0fSBmb3JcbiAgIGRldGFpbGVkIGV4cGxhbmF0aW9uIGFuZCBleGFtcGxlcy4gKilcbmxldCBkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCA9XG4gIHJlZiAoZnVuIHggLT5cbiAgICBsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVHXCIgeCBpblxuICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHgpXG47O1xuXG5sZXQgcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IGxpc3RfbWFwIGYgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgbCB+ZilcbmxldCBzZXhwX29mX3VuaXQgKCkgPSBMaXN0IFtdXG5sZXQgc2V4cF9vZl9ib29sIGIgPSBBdG9tIChzdHJpbmdfb2ZfYm9vbCBiKVxubGV0IHNleHBfb2Zfc3RyaW5nIHN0ciA9IEF0b20gc3RyXG5sZXQgc2V4cF9vZl9ieXRlcyBieXRlcyA9IEF0b20gKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCBzZXhwX29mX2NoYXIgYyA9IEF0b20gKFN0cmluZy5tYWtlIDEgYylcbmxldCBzZXhwX29mX2ludCBuID0gQXRvbSAoc3RyaW5nX29mX2ludCBuKVxubGV0IHNleHBfb2ZfZmxvYXQgbiA9IEF0b20gKCFkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBuKVxubGV0IHNleHBfb2ZfaW50MzIgbiA9IEF0b20gKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfaW50NjQgbiA9IEF0b20gKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfbmF0aXZlaW50IG4gPSBBdG9tIChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9yZWYgc2V4cF9vZl9fYSByZiA9IHNleHBfb2ZfX2EgIXJmXG5sZXQgc2V4cF9vZl9sYXp5X3Qgc2V4cF9vZl9fYSBsdiA9IHNleHBfb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCBzZXhwX29mX29wdGlvbiBzZXhwX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbIHNleHBfb2ZfX2EgeCBdXG4gIHwgU29tZSB4IC0+IExpc3QgWyBBdG9tIFwic29tZVwiOyBzZXhwX29mX19hIHggXVxuICB8IE5vbmUgd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbXVxuICB8IE5vbmUgLT4gQXRvbSBcIm5vbmVcIlxuOztcblxubGV0IHNleHBfb2ZfcGFpciBzZXhwX29mX19hIHNleHBfb2ZfX2IgKGEsIGIpID0gTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiIF1cblxubGV0IHNleHBfb2ZfdHJpcGxlIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiBzZXhwX29mX19jIChhLCBiLCBjKSA9XG4gIExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYjsgc2V4cF9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9fYSBsc3QgPSBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGxzdCB+ZjpzZXhwX29mX19hKSlcblxubGV0IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfaGFzaHRibCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gTGlzdCBbIHNleHBfb2Zfa2V5IGs7IHNleHBfb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCBzZXhwX29mX29wYXF1ZSBfID0gQXRvbSBcIjxvcGFxdWU+XCJcbmxldCBzZXhwX29mX2Z1biBfID0gQXRvbSBcIjxmdW4+XCJcblxuKCogRXhjZXB0aW9uIGNvbnZlcnRlciByZWdpc3RyYXRpb24gYW5kIGxvb2t1cCAqKVxuXG5tb2R1bGUgRXhuX2NvbnZlcnRlciA9IHN0cnVjdFxuICAoKiBUaGVzZSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCBjb250ZXh0LXN3aXRjaGVzXG4gICAgIGNhbm5vdCBoYXBwZW4gdW5sZXNzIHRoZXJlIGlzIGFuIGFsbG9jYXRpb24uICBJdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdFxuICAgICB0aGF0IHRoaXMgd2lsbCByZW1haW4gdHJ1ZSBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZS4gIFRoYXQgd2F5IHdlXG4gICAgIGF2b2lkIHVzaW5nIG11dGV4ZXMgYW5kIHRodXMgYSBkZXBlbmRlbmN5IG9uIHRoZSB0aHJlYWRzIGxpYnJhcnkuICopXG5cbiAgKCogRmFzdCBhbmQgYXV0b21hdGljIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gKilcblxuICBtb2R1bGUgUmVnaXN0cmF0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2V4cF9vZl9leG4gOiBleG4gLT4gU2V4cC50XG4gICAgICA7ICgqIElmIFtwcmludGV4YyA9IHRydWVdIHRoZW4gdGhpcyBzZXhwIGNvbnZlcnRlciBpcyB1c2VkIGZvciBQcmludGV4Yy50b19zdHJpbmcgKilcbiAgICAgICAgcHJpbnRleGMgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBFeG5fdGFibGUgPSBFcGhlbWVyb24uSzEuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcblxuICAgICAgbGV0IGVxdWFsID0gKCA9PSApXG4gICAgICBsZXQgaGFzaCA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICBlbmQpXG5cbiAgbGV0IHRoZV9leG5fdGFibGUgOiBSZWdpc3RyYXRpb24udCBFeG5fdGFibGUudCA9IEV4bl90YWJsZS5jcmVhdGUgMTdcblxuICAoKiBFcGhlbWVyb25zIGFyZSB1c2VkIHNvIHRoYXQgW3NleHBfb2ZfZXhuXSBjbG9zdXJlIGRvbid0IGtlZXAgdGhlXG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXZlLiAqKVxuICBsZXQgYWRkID8ocHJpbnRleGMgPSB0cnVlKSA/ZmluYWxpc2U6XyBleHRlbnNpb25fY29uc3RydWN0b3Igc2V4cF9vZl9leG4gPVxuICAgIEV4bl90YWJsZS5hZGQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3IgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfVxuICA7O1xuXG4gIGxldCBmaW5kX2F1dG8gfmZvcl9wcmludGV4YyBleG4gPVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleG4gaW5cbiAgICBtYXRjaCBFeG5fdGFibGUuZmluZF9vcHQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3Igd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH0gLT5cbiAgICAgIChtYXRjaCBmb3JfcHJpbnRleGMsIHByaW50ZXhjIHdpdGhcbiAgICAgICB8IGZhbHNlLCBfIHwgXywgdHJ1ZSAtPiBTb21lIChzZXhwX29mX2V4biBleG4pXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPiBOb25lKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdW5pdF90ZXN0c19vbmx5ID0gc3RydWN0XG4gICAgbGV0IHNpemUgKCkgPSAoRXhuX3RhYmxlLnN0YXRzX2FsaXZlIHRoZV9leG5fdGFibGUpLm51bV9iaW5kaW5nc1xuICBlbmRcbmVuZFxuXG5sZXQgc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOnRydWUgZXhuXG5sZXQgc2V4cF9vZl9leG5fb3B0IGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6ZmFsc2UgZXhuXG5cbmxldCBzZXhwX29mX2V4biBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IExpc3QgWyBBdG9tIChQcmludGV4Yy50b19zdHJpbmcgZXhuKSBdXG4gIHwgU29tZSBzZXhwIC0+IHNleHBcbjs7XG5cbmxldCBleG5fdG9fc3RyaW5nIGUgPSBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpXG5cbigqIHtbZXhjZXB0aW9uIEJsYWggW0BAZGVyaXZpbmcgc2V4cF1dfSBnZW5lcmF0ZXMgYSBjYWxsIHRvIHRoZSBmdW5jdGlvblxuICAgW0V4bl9jb252ZXJ0ZXIuYWRkXSBkZWZpbmVkIGluIHRoaXMgZmlsZS4gIFNvIHdlIGFyZSBndWFyYW50ZWQgdGhhdCBhcyBzb29uIGFzIHdlXG4gICBtYXJrIGFuIGV4Y2VwdGlvbiBhcyBzZXhwYWJsZSwgdGhpcyBtb2R1bGUgd2lsbCBiZSBsaW5rZWQgaW4gYW5kIHRoaXMgcHJpbnRlciB3aWxsIGJlXG4gICByZWdpc3RlcmVkLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuICopXG5sZXQgKCkgPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZXhuIC0+XG4gICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHNleHAgLT4gU29tZSAoU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwKSlcbjs7XG5cbmxldCBwcmludGV4Y19wcmVmZXJfc2V4cCBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IFByaW50ZXhjLnRvX3N0cmluZyBleG5cbiAgfCBTb21lIHNleHAgLT4gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIFMtZXhwcmVzc2lvbnMgdG8gT0NhbWwtdmFsdWVzICopXG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gU2V4cC5PZl9zZXhwX2Vycm9yXG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl9zZXhwX2Vycm9yX2V4biBleGMgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChleGMsIHNleHApKVxubGV0IG9mX3NleHBfZXJyb3Igd2hhdCBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG5cbmxldCB1bml0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gKClcbiAgfCBBdG9tIF8gfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInVuaXRfb2Zfc2V4cDogZW1wdHkgbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYm9vbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIChcInRydWVcIiB8IFwiVHJ1ZVwiKSAtPiB0cnVlXG4gIHwgQXRvbSAoXCJmYWxzZVwiIHwgXCJGYWxzZVwiKSAtPiBmYWxzZVxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiB1bmtub3duIHN0cmluZ1wiIHNleHBcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwic3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJ5dGVzX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJ5dGVzX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNoYXJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgc2V4cDtcbiAgICBzdHIuWzBdXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgaW50X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBmbG9hdF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJmbG9hdF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50MzJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDMyLm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDMyX29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQzMl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQ2NF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50NjQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50NjRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDY0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG5hdGl2ZWludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgTmF0aXZlaW50Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcIm5hdGl2ZWludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwibmF0aXZlaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHJlZl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IHJlZiAoYV9fb2Zfc2V4cCBzZXhwKVxubGV0IGxhenlfdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IExhenkuZnJvbV92YWwgKGFfX29mX3NleHAgc2V4cClcblxubGV0IG9wdGlvbl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIGlmICFyZWFkX29sZF9vcHRpb25fZm9ybWF0XG4gIHRoZW4gKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBbXSB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBlbCBdIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgcmVwcmVzZW50IG9wdGlvbmFsIHZhbHVlXCIgc2V4cFxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHBcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCBiZSAoc29tZSBlbClcIiBzZXhwKVxuOztcblxubGV0IHBhaXJfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBhLCBiXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0d28gZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgdHJpcGxlX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIGNfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cDsgY19zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGxldCBjID0gY19fb2Zfc2V4cCBjX3NleHAgaW5cbiAgICBhLCBiLCBjXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHRocmVlIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbGlzdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3NleHAgaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJsaXN0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGFycmF5X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBbfHxdXG4gIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2Zfc2V4cCBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJhcnJheV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBoYXNodGJsX29mX3NleHAga2V5X29mX3NleHAgdmFsX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IExpc3QgWyBrX3NleHA7IHZfc2V4cCBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3NleHAga19zZXhwKSB+ZGF0YToodmFsX29mX3NleHAgdl9zZXhwKVxuICAgICAgfCBMaXN0IF8gfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogdHVwbGUgbGlzdCBuZWVkZWRcIiBzZXhwXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG9wYXF1ZV9vZl9zZXhwIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIFwib3BhcXVlX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiBzZXhwXG47O1xuXG5sZXQgZnVuX29mX3NleHAgc2V4cCA9IG9mX3NleHBfZXJyb3IgXCJmdW5fb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgc2V4cFxuXG4oKiBTZXhwIEdyYW1tYXJzICopXG5cbmluY2x1ZGUgU2V4cF9jb252X2dyYW1tYXJcblxuKCogUmVnaXN0ZXJpbmcgZGVmYXVsdCBleGNlcHRpb24gcHJpbnRlcnMgKilcblxubGV0IGdldF9mbGNfZXJyb3IgbmFtZSAoZmlsZSwgbGluZSwgY2hyKSA9IEF0b20gKHNwcmludGYgXCIlcyAlczolZDolZFwiIG5hbWUgZmlsZSBsaW5lIGNocilcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOmZhbHNlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXNzZXJ0X2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXNzZXJ0X2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJBc3NlcnRfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhpdF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFeGl0IC0+IEF0b20gXCJFeGl0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVuZF9vZl9maWxlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEVuZF9vZl9maWxlIC0+IEF0b20gXCJFbmRfb2ZfZmlsZVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiRmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kIC0+IEF0b20gXCJOb3RfZm91bmRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgSW52YWxpZF9hcmd1bWVudF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGFyZyAtPiBMaXN0IFsgQXRvbSBcIkludmFsaWRfYXJndW1lbnRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWF0Y2hfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBNYXRjaF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiTWF0Y2hfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kX3NdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kX3MgYXJnIC0+IExpc3QgWyBBdG9tIFwiTm90X2ZvdW5kX3NcIjsgYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5c19lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXNfZXJyb3IgYXJnIC0+IExpc3QgWyBBdG9tIFwiU3lzX2Vycm9yXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5IZWxwXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5IZWxwIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5IZWxwXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5CYWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkJhZCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuQmFkXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIExhenkuVW5kZWZpbmVkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IExhenkuVW5kZWZpbmVkIC0+IEF0b20gXCJMYXp5LlVuZGVmaW5lZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzaW5nLlBhcnNlX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gQXRvbSBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUXVldWUuRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUXVldWUuRW1wdHkgLT4gQXRvbSBcIlF1ZXVlLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNjYW5mLlNjYW5fZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiU2NhbmYuU2Nhbl9mYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN0YWNrLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN0YWNrLkVtcHR5IC0+IEF0b20gXCJTdGFjay5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXMuQnJlYWtdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzLkJyZWFrIC0+IEF0b20gXCJTeXMuQnJlYWtcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6dHJ1ZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSAtPlxuICAgICAgICAgIExpc3QgWyBBdG9tIFwiU2V4cGxpYi5Db252Lk9mX3NleHBfZXJyb3JcIjsgc2V4cF9vZl9leG4gZXhjOyBzZXhwIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgUy1leHByZXNzaW9uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cF9jb252XG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3NleHA6IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2Mgbikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyBzZXhwID1cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWcgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zZXhwX2Jvb2xfd2l0aF9wYXlsb2FkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IGEgW3NleHAuYm9vbF0gZmllbGQgd2FzIGdpdmVuIGEgcGF5bG9hZC5cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBvbmx5IHBhaXJzIGV4cGVjdGVkLCB0aGVpciBmaXJzdCBlbGVtZW50IG11c3QgYmUgYW4gXFxcbiAgICAgICBhdG9tXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2Mgc2V4cCBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3NleHA6IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl9zZXhwOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkc1wiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgc2V4cFxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgc2V4cFxuOztcbiIsIigqKiBQcmltaXRpdmVzIGZvciBwb2x5bW9ycGhpYyBjb21wYXJlLiAqKVxuXG4oKl8gUG9seW1vcnBoaWMgY29tcGlsZXIgcHJpbWl0aXZlcyBjYW4ndCBiZSBhbGlhc2VzIGFzIHRoaXMgZG9lc24ndCBwbGF5IHdlbGwgd2l0aFxuICBpbmxpbmluZy4gKElmIGFsaWFzZWQgd2l0aG91dCBhIHR5cGUgYW5ub3RhdGlvbiwgdGhlIGNvbXBpbGVyIHdvdWxkIGltcGxlbWVudCB0aGVtXG4gIHVzaW5nIHRoZSBnZW5lcmljIGNvZGUgZG9pbmcgYSBDIGNhbGwsIGFuZCBpdCdzIHRoaXMgY29kZSB0aGF0IHdvdWxkIGJlIGlubGluZWQuKSBBcyBhXG4gIHJlc3VsdCB3ZSBoYXZlIHRvIGNvcHkgdGhlIFtleHRlcm5hbCAuLi5dIGRlY2xhcmF0aW9uIGhlcmUuICopXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGFzY2VuZGluZyA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG5sZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxubGV0IG1heCA9IENhbWwubWF4XG5sZXQgbWluID0gQ2FtbC5taW5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIGluY2x1ZGVkIGluIFtJbXBvcnRdLiAgSXQgaXMgYWltZWQgYXQgbW9kdWxlcyB0aGF0IGRlZmluZSB0aGUgc3RhbmRhcmRcbiAgIGNvbWJpbmF0b3JzIGZvciBbc2V4cF9vZl0sIFtvZl9zZXhwXSwgW2NvbXBhcmVdIGFuZCBbaGFzaF0gYW5kIGFyZSBpbmNsdWRlZCBpblxuICAgW0ltcG9ydF0uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICgqIFRoZXNlIG1vZHVsZXMgYXJlIHJlZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgUHJpbnRmIDo9IFNoYWRvd19zdGRsaWIuUHJpbnRmXG4gIHdpdGggbW9kdWxlIFF1ZXVlIDo9IFNoYWRvd19zdGRsaWIuUXVldWVcbiAgd2l0aCBtb2R1bGUgUmFuZG9tIDo9IFNoYWRvd19zdGRsaWIuUmFuZG9tXG4gIHdpdGggbW9kdWxlIFJlc3VsdCA6PSBTaGFkb3dfc3RkbGliLlJlc3VsdFxuICB3aXRoIG1vZHVsZSBTZXQgOj0gU2hhZG93X3N0ZGxpYi5TZXRcbiAgd2l0aCBtb2R1bGUgU3RhY2sgOj0gU2hhZG93X3N0ZGxpYi5TdGFja1xuICB3aXRoIG1vZHVsZSBTdHJpbmcgOj0gU2hhZG93X3N0ZGxpYi5TdHJpbmdcbiAgd2l0aCBtb2R1bGUgU3lzIDo9IFNoYWRvd19zdGRsaWIuU3lzXG4gIHdpdGggbW9kdWxlIFVjaGFyIDo9IFNoYWRvd19zdGRsaWIuVWNoYXJcbiAgd2l0aCBtb2R1bGUgVW5pdCA6PSBTaGFkb3dfc3RkbGliLlVuaXQpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbnR5cGUgJ2EgcmVmID0gJ2EgQ2FtbC5yZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbigqIFJlc2h1ZmZsZSBbQ2FtbF0gc28gdGhhdCB3ZSBjaG9vc2UgdGhlIG1vZHVsZXMgdXNpbmcgbGFiZWxzIHdoZW4gYXZhaWxhYmxlLiAqKVxubW9kdWxlIENhbWwgPSBzdHJ1Y3RcblxuICBpbmNsdWRlIENhbWxcblxuICBtb2R1bGUgQXJnID0gQ2FtbC5BcmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5BcmcgKilcblxuICBtb2R1bGUgQXJyYXkgPSBDYW1sLlN0ZExhYmVscy5BcnJheSAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5BcnJheSAqKVxuXG4gIG1vZHVsZSBCb29sID0gQ2FtbC5Cb29sICgqKiBAY2Fub25pY2FsIENhbWwuQm9vbCAqKVxuXG4gIG1vZHVsZSBCdWZmZXIgPSBDYW1sLkJ1ZmZlciAoKiogQGNhbm9uaWNhbCBDYW1sLkJ1ZmZlciAqKVxuXG4gIG1vZHVsZSBCeXRlcyA9IENhbWwuU3RkTGFiZWxzLkJ5dGVzICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLkJ5dGVzICopXG5cbiAgbW9kdWxlIENoYXIgPSBDYW1sLkNoYXIgKCoqIEBjYW5vbmljYWwgQ2FtbC5DaGFyICopXG5cbiAgbW9kdWxlIEVwaGVtZXJvbiA9IENhbWwuRXBoZW1lcm9uICgqKiBAY2Fub25pY2FsIENhbWwuRXBoZW1lcm9uICopXG5cbiAgbW9kdWxlIEZsb2F0ID0gQ2FtbC5GbG9hdCAoKiogQGNhbm9uaWNhbCBDYW1sLkZsb2F0ICopXG5cbiAgbW9kdWxlIEZvcm1hdCA9IENhbWwuRm9ybWF0ICgqKiBAY2Fub25pY2FsIENhbWwuRm9ybWF0ICopXG5cbiAgbW9kdWxlIEZ1biA9IENhbWwuRnVuICgqKiBAY2Fub25pY2FsIENhbWwuRnVuICopXG5cbiAgbW9kdWxlIEdjID0gQ2FtbC5HYyAoKiogQGNhbm9uaWNhbCBDYW1sLkdjICopXG5cbiAgbW9kdWxlIEhhc2h0YmwgPSBDYW1sLk1vcmVMYWJlbHMuSGFzaHRibCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuSGFzaHRibCAqKVxuXG4gIG1vZHVsZSBJbnQzMiA9IENhbWwuSW50MzIgKCoqIEBjYW5vbmljYWwgQ2FtbC5JbnQzMiAqKVxuXG4gIG1vZHVsZSBJbnQgPSBDYW1sLkludCAoKiogQGNhbm9uaWNhbCBDYW1sLkludCAqKVxuXG4gIG1vZHVsZSBJbnQ2NCA9IENhbWwuSW50NjQgKCoqIEBjYW5vbmljYWwgQ2FtbC5JbnQ2NCAqKVxuXG4gIG1vZHVsZSBMYXp5ID0gQ2FtbC5MYXp5ICgqKiBAY2Fub25pY2FsIENhbWwuTGF6eSAqKVxuXG4gIG1vZHVsZSBMZXhpbmcgPSBDYW1sLkxleGluZyAoKiogQGNhbm9uaWNhbCBDYW1sLkxleGluZyAqKVxuXG4gIG1vZHVsZSBMaXN0ID0gQ2FtbC5TdGRMYWJlbHMuTGlzdCAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5MaXN0ICopXG5cbiAgbW9kdWxlIE1hcCA9IENhbWwuTW9yZUxhYmVscy5NYXAgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLk1hcCAqKVxuXG4gIG1vZHVsZSBOYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludCAoKiogQGNhbm9uaWNhbCBDYW1sLk5hdGl2ZWludCAqKVxuXG4gIG1vZHVsZSBPYmogPSBDYW1sLk9iaiAoKiogQGNhbm9uaWNhbCBDYW1sLk9iaiAqKVxuXG4gIG1vZHVsZSBPcHRpb24gPSBDYW1sLk9wdGlvbiAoKiogQGNhbm9uaWNhbCBDYW1sLk9wdGlvbiAqKVxuXG4gIG1vZHVsZSBQYXJzaW5nID0gQ2FtbC5QYXJzaW5nICgqKiBAY2Fub25pY2FsIENhbWwuUGFyc2luZyAqKVxuXG4gIG1vZHVsZSBQcmludGV4YyA9IENhbWwuUHJpbnRleGMgKCoqIEBjYW5vbmljYWwgQ2FtbC5QcmludGV4YyAqKVxuXG4gIG1vZHVsZSBQcmludGYgPSBDYW1sLlByaW50ZiAoKiogQGNhbm9uaWNhbCBDYW1sLlByaW50ZiAqKVxuXG4gIG1vZHVsZSBRdWV1ZSA9IENhbWwuUXVldWUgKCoqIEBjYW5vbmljYWwgQ2FtbC5RdWV1ZSAqKVxuXG4gIG1vZHVsZSBSYW5kb20gPSBDYW1sLlJhbmRvbSAoKiogQGNhbm9uaWNhbCBDYW1sLlJhbmRvbSAqKVxuXG4gIG1vZHVsZSBSZXN1bHQgPSBDYW1sLlJlc3VsdCAoKiogQGNhbm9uaWNhbCBDYW1sLlJlc3VsdCAqKVxuXG4gIG1vZHVsZSBTY2FuZiA9IENhbWwuU2NhbmYgKCoqIEBjYW5vbmljYWwgQ2FtbC5TY2FuZiAqKVxuXG4gIG1vZHVsZSBTZXEgPSBDYW1sLlNlcSAoKiogQGNhbm9uaWNhbCBDYW1sLlNlcSAqKVxuXG4gIG1vZHVsZSBTZXQgPSBDYW1sLk1vcmVMYWJlbHMuU2V0ICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5TZXQgKilcblxuICBtb2R1bGUgU3RhY2sgPSBDYW1sLlN0YWNrICgqKiBAY2Fub25pY2FsIENhbWwuU3RhY2sgKilcblxuICBtb2R1bGUgU3RyaW5nID0gQ2FtbC5TdGRMYWJlbHMuU3RyaW5nICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLlN0cmluZyAqKVxuXG4gIG1vZHVsZSBTeXMgPSBDYW1sLlN5cyAoKiogQGNhbm9uaWNhbCBDYW1sLlN5cyAqKVxuXG4gIG1vZHVsZSBVY2hhciA9IENhbWwuVWNoYXIgKCoqIEBjYW5vbmljYWwgQ2FtbC5VY2hhciAqKVxuXG4gIG1vZHVsZSBVbml0ID0gQ2FtbC5Vbml0ICgqKiBAY2Fub25pY2FsIENhbWwuVW5pdCAqKVxuXG4gIGV4Y2VwdGlvbiBOb3RfZm91bmQgPSBDYW1sLk5vdF9mb3VuZFxuZW5kXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gZ2V0IHRoZSBsYXp5IGJlaGF2aW9yICopXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbigqIFdlIHVzZSBbT2JqLm1hZ2ljXSBoZXJlIGFzIG90aGVyIGltcGxlbWVudGF0aW9ucyBnZW5lcmF0ZSBhIGNvbmRpdGlvbmFsIGp1bXAgYW5kIHRoZVxuICAgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBpcyBub3RpY2VhYmxlLiAqKVxubGV0IGJvb2xfdG9faW50ICh4IDogYm9vbCkgOiBpbnQgPSBDYW1sLk9iai5tYWdpYyB4XG5cbigqIFRoaXMgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBmb3IgdGhlIHdhcm5pbmdzIHRvIHdvcmsgcHJvcGVybHkgKilcbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbmxldCAoICE9ICkgPSBDYW1sLiggIT0gKVxubGV0ICggKiApID0gQ2FtbC4oICogKVxubGV0ICggKiogKSA9IENhbWwuKCAqKiApXG5sZXQgKCAqLiApID0gQ2FtbC4oICouIClcbmxldCAoICsgKSA9IENhbWwuKCArIClcbmxldCAoICsuICkgPSBDYW1sLiggKy4gKVxubGV0ICggLSApID0gQ2FtbC4oIC0gKVxubGV0ICggLS4gKSA9IENhbWwuKCAtLiApXG5sZXQgKCAvICkgPSBDYW1sLiggLyApXG5sZXQgKCAvLiApID0gQ2FtbC4oIC8uIClcblxubW9kdWxlIFBvbHkgPSBQb2x5MCAoKiogQGNhbm9uaWNhbCBCYXNlLlBvbHkgKilcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgKCogRGVjbGFyZWQgYXMgZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX2FwcGx5X1ggd3JhcHBpbmcgZXZlbiB3aGVuXG4gICAgIGNvbXBpbGluZyB3aXRob3V0IGNyb3NzIGxpYnJhcnkgaW5saW5pbmcuICopXG4gIGV4dGVybmFsICggPSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG4gIGV4dGVybmFsICggPCApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbiAgZXh0ZXJuYWwgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IENhbWwuSW50MzIudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLkludDMyLnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgKCogRGVjbGFyZWQgYXMgZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX2FwcGx5X1ggd3JhcHBpbmcgZXZlbiB3aGVuXG4gICAgIGNvbXBpbGluZyB3aXRob3V0IGNyb3NzIGxpYnJhcnkgaW5saW5pbmcuICopXG4gIGV4dGVybmFsICggPSApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlZXF1YWxcIlxuICBleHRlcm5hbCAoIDw+ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG4gIGV4dGVybmFsICggPCApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA8PSApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbiAgZXh0ZXJuYWwgY29tcGFyZSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG4gIGV4dGVybmFsIGVxdWFsIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLkludDY0LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLkludDY0LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBtYXggKHggOiBDYW1sLkludDY0LnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYm9vbCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYm9vbCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBib29sKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGJvb2wpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogY2hhcikgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogY2hhcikgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBjaGFyKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGNoYXIpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0IGkgeCA9IENhbWwuVWNoYXIudG9faW50IHhcbiAgbGV0ICggPCApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PSApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPD4gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PiApIChpIHgpIChpIHkpXG4gIGxldCAoID0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPiApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+PSApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgKGkgeCkgKGkgeSlcblxuICBsZXQgYXNjZW5kaW5nICh4IDogQ2FtbC5VY2hhci50KSB5ID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmFzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5VY2hhci50KSB5ID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmRlc2NlbmRpbmcgKGkgeCkgKGkgeSlcbiAgOztcblxuICBsZXQgY29tcGFyZSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSAoaSB4KSAoaSB5KVxuICBsZXQgZXF1YWwgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIChpIHgpIChpIHkpXG4gIGxldCBtYXggKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5VY2hhci50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGZsb2F0KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBmbG9hdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBmbG9hdCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBmbG9hdCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBzdHJpbmcpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogc3RyaW5nKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJ5dGVzKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBieXRlcykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBieXRlcykgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBieXRlcykgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuKCogVGhpcyBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBzcGVjaWFsaXplIGl0IGFzIGFcbiAgIGRpcmVjdCBzZXQgb3IgY2FtbF9tb2RpZnkgKilcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgd29uJ3QgdW5ib3hcbiAgIHJlZmVyZW5jZXMgKilcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcblxubGV0ICggQCApID0gQ2FtbC4oIEAgKVxubGV0ICggXiApID0gQ2FtbC4oIF4gKVxubGV0ICggfi0gKSA9IENhbWwuKCB+LSApXG5sZXQgKCB+LS4gKSA9IENhbWwuKCB+LS4gKVxubGV0ICggYXNyICkgPSBDYW1sLiggYXNyIClcbmxldCAoIGxhbmQgKSA9IENhbWwuKCBsYW5kIClcbmxldCBsbm90ID0gQ2FtbC5sbm90XG5sZXQgKCBsb3IgKSA9IENhbWwuKCBsb3IgKVxubGV0ICggbHNsICkgPSBDYW1sLiggbHNsIClcbmxldCAoIGxzciApID0gQ2FtbC4oIGxzciApXG5sZXQgKCBseG9yICkgPSBDYW1sLiggbHhvciApXG5sZXQgKCBtb2QgKSA9IENhbWwuKCBtb2QgKVxubGV0IGFicyA9IENhbWwuYWJzXG5sZXQgZmFpbHdpdGggPSBDYW1sLmZhaWx3aXRoXG5sZXQgZnN0ID0gQ2FtbC5mc3RcbmxldCBpbnZhbGlkX2FyZyA9IENhbWwuaW52YWxpZF9hcmdcbmxldCBzbmQgPSBDYW1sLnNuZFxuXG4oKiBbcmFpc2VdIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgYXMgdGhlIGNvbXBpbGVyIGF1dG9tYXRpY2FsbHkgcmVwbGFjZXNcbiAgICclcmFpc2UnIGJ5ICclcmVyYWlzZScgd2hlbiBhcHByb3ByaWF0ZS4gKilcbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbmxldCBwaHlzX2VxdWFsID0gQ2FtbC4oID09IClcbmxldCBkZWNyID0gQ2FtbC5kZWNyXG5sZXQgaW5jciA9IENhbWwuaW5jclxuXG4oKiB1c2VkIGJ5IHNleHBfY29udiwgd2hpY2ggZmxvYXQwIGRlcGVuZHMgb24gdGhyb3VnaCBvcHRpb24gKilcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBDYW1sLmZsb2F0X29mX3N0cmluZ1xuXG4oKiBbYW1fdGVzdGluZ10gaXMgdXNlZCBpbiBhIGZldyBwbGFjZXMgdG8gYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4gaW4gdGVzdGluZyBtb2RlLCBzdWNoXG4gICBhcyBpbiBbcmFuZG9tLm1sXS4gIFthbV90ZXN0aW5nXSBpcyBpbXBsZW1lbnRlZCB1c2luZyBbQmFzZV9hbV90ZXN0aW5nXSwgYSB3ZWFrIEMvanNcbiAgIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW2ZhbHNlXSwgYnV0IHdoZW4gbGlua2luZyBhbiBpbmxpbmUtdGVzdC1ydW5uZXIgZXhlY3V0YWJsZSwgaXNcbiAgIG92ZXJyaWRkZW4gYnkgYW5vdGhlciBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFt0cnVlXS4gKilcbmV4dGVybmFsIGFtX3Rlc3RpbmcgOiB1bml0IC0+IGJvb2wgPSBcIkJhc2VfYW1fdGVzdGluZ1wiXG5cbmxldCBhbV90ZXN0aW5nID0gYW1fdGVzdGluZyAoKVxuIiwib3BlbiEgSW1wb3J0MFxuaW5jbHVkZSBDYW1sLlByaW50ZlxuXG4oKiogZmFpbHdpdGgsIGludmFsaWRfYXJnLCBhbmQgZXhpdCBhY2NlcHRpbmcgcHJpbnRmJ3MgZm9ybWF0LiAqKVxuXG5sZXQgZmFpbHdpdGhmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBmYWlsd2l0aCBzKSBmbXRcbmxldCBpbnZhbGlkX2FyZ2YgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGludmFsaWRfYXJnIHMpIGZtdFxuIiwiKCogW1N5czBdIGRlZmluZXMgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbQ2FtbC5TeXNdLiAgW1N5czBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZlxuICAgW0NhbWwuU3lzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN5cy5tbFxuICAgc2hvdWxkIHVzZSBbQ2FtbC5TeXNdLiBbU3lzMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGVcbiAgIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgdGhlc2VcbiAgIGZ1bmN0aW9ucyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuU3lzXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgU3lzID0gU3lzMF0uICBEZWZpbmluZyBbbW9kdWxlIFN5cyA9IFN5czBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2VcbiAgIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuU3lzXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG50eXBlIGJhY2tlbmRfdHlwZSA9IENhbWwuU3lzLmJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcblxubGV0IGJhY2tlbmRfdHlwZSA9IENhbWwuU3lzLmJhY2tlbmRfdHlwZVxubGV0IGludGVyYWN0aXZlID0gQ2FtbC5TeXMuaW50ZXJhY3RpdmVcbmxldCBvc190eXBlID0gQ2FtbC5TeXMub3NfdHlwZVxubGV0IHVuaXggPSBDYW1sLlN5cy51bml4XG5sZXQgd2luMzIgPSBDYW1sLlN5cy53aW4zMlxubGV0IGN5Z3dpbiA9IENhbWwuU3lzLmN5Z3dpblxubGV0IHdvcmRfc2l6ZV9pbl9iaXRzID0gQ2FtbC5TeXMud29yZF9zaXplXG5sZXQgaW50X3NpemVfaW5fYml0cyA9IENhbWwuU3lzLmludF9zaXplXG5sZXQgYmlnX2VuZGlhbiA9IENhbWwuU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IENhbWwuU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IENhbWwuU3lzLm1heF9hcnJheV9sZW5ndGhcbmxldCBydW50aW1lX3ZhcmlhbnQgPSBDYW1sLlN5cy5ydW50aW1lX3ZhcmlhbnRcbmxldCBydW50aW1lX3BhcmFtZXRlcnMgPSBDYW1sLlN5cy5ydW50aW1lX3BhcmFtZXRlcnNcbmxldCBhcmd2ID0gQ2FtbC5TeXMuYXJndlxubGV0IGdldF9hcmd2ICgpID0gQ2FtbC5TeXMuYXJndlxubGV0IG9jYW1sX3ZlcnNpb24gPSBDYW1sLlN5cy5vY2FtbF92ZXJzaW9uXG5sZXQgZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgPSBDYW1sLlN5cy5lbmFibGVfcnVudGltZV93YXJuaW5nc1xubGV0IHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCA9IENhbWwuU3lzLnJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuXG5sZXQgZ2V0ZW52X2V4biB2YXIgPVxuICB0cnkgQ2FtbC5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgQ2FtbC5Ob3RfZm91bmQgLT5cbiAgICBQcmludGYuZmFpbHdpdGhmIFwiU3lzLmdldGVudl9leG46IGVudmlyb25tZW50IHZhcmlhYmxlICVzIGlzIG5vdCBzZXRcIiB2YXIgKClcbjs7XG5cbmxldCBnZXRlbnYgdmFyID1cbiAgbWF0Y2ggQ2FtbC5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5leGNlcHRpb24gQnJlYWsgPSBDYW1sLlN5cy5CcmVha1xuIiwiKCogW0FycmF5MF0gZGVmaW5lcyBhcnJheSBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXNcbiAgIG9mIFtDYW1sLkFycmF5XS4gIFtBcnJheTBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbQ2FtbC5BcnJheV1cbiAgIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gYXJyYXkwLm1sIHNob3VsZCB1c2UgW0NhbWwuQXJyYXldLlxuICAgW0FycmF5MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgYXJyYXlzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5BcnJheV0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkXG4gICBkbyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXS4gIFRoaXMgaW5jbHVkZXMgdXNlcyBvZiBzdWJzY3JpcHQgc3ludGF4IChbeC4oaSldLCBbeC4oaSkgPC1cbiAgIGVdKSwgd2hpY2ggdGhlIE9DYW1sIHBhcnNlciBkZXN1Z2FycyBpbnRvIGNhbGxzIHRvIFtBcnJheS5nZXRdIGFuZCBbQXJyYXkuc2V0XS5cbiAgIERlZmluaW5nIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbVxuICAgbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQXJyYXldLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG4gIGV4dGVybmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG4gIGV4dGVybmFsIGdldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgc2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICA6ICBzcmM6J2EgYXJyYXlcbiAgICAtPiBzcmNfcG9zOmludFxuICAgIC0+IGRzdDonYSBhcnJheVxuICAgIC0+IGRzdF9wb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmVuZFxuXG5pbmNsdWRlIEFycmF5XG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICB0cnkgY3JlYXRlIGxlbiB4IHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbiA9XG4gIHRyeSBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCBsZW4gd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgYXBwZW5kID0gQ2FtbC5BcnJheS5hcHBlbmRcbmxldCBibGl0ID0gQ2FtbC5BcnJheS5ibGl0XG5sZXQgY29uY2F0ID0gQ2FtbC5BcnJheS5jb25jYXRcbmxldCBjb3B5ID0gQ2FtbC5BcnJheS5jb3B5XG5sZXQgZmlsbCA9IENhbWwuQXJyYXkuZmlsbFxubGV0IGluaXQgPSBDYW1sLkFycmF5LmluaXRcbmxldCBtYWtlX21hdHJpeCA9IENhbWwuQXJyYXkubWFrZV9tYXRyaXhcbmxldCBvZl9saXN0ID0gQ2FtbC5BcnJheS5vZl9saXN0XG5sZXQgc3ViID0gQ2FtbC5BcnJheS5zdWJcbmxldCB0b19saXN0ID0gQ2FtbC5BcnJheS50b19saXN0XG5cbigqIFRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IENhbWwuQXJyYXkuZm9sZF9sZWZ0IHQgfmluaXQgfmZcbmxldCBmb2xkX3JpZ2h0IHQgfmYgfmluaXQgPSBDYW1sLkFycmF5LmZvbGRfcmlnaHQgdCB+ZiB+aW5pdFxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuQXJyYXkuaXRlciB0IH5mXG5sZXQgaXRlcmkgdCB+ZiA9IENhbWwuQXJyYXkuaXRlcmkgdCB+ZlxubGV0IG1hcCB0IH5mID0gQ2FtbC5BcnJheS5tYXAgdCB+ZlxubGV0IG1hcGkgdCB+ZiA9IENhbWwuQXJyYXkubWFwaSB0IH5mXG5sZXQgc3RhYmxlX3NvcnQgdCB+Y29tcGFyZSA9IENhbWwuQXJyYXkuc3RhYmxlX3NvcnQgdCB+Y21wOmNvbXBhcmVcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgZWx0X2kgPSB0LihpKSBpblxuICBsZXQgZWx0X2ogPSB0LihqKSBpblxuICB1bnNhZmVfc2V0IHQgaSBlbHRfajtcbiAgdW5zYWZlX3NldCB0IGogZWx0X2lcbjs7XG4iLCIoKiBbQ2hhcjBdIGRlZmluZXMgY2hhciBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtDYW1sLkNoYXJdLiAgW0NoYXIwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuQ2hhcl0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gY2hhcjAubWwgc2hvdWxkIHVzZSBbQ2FtbC5DaGFyXS5cbiAgIFtDaGFyMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgY2hhcnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkNoYXJdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBDaGFyID0gQ2hhcjBdLiAgRGVmaW5pbmcgW21vZHVsZSBDaGFyID0gQ2hhcjBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQ2hhcl0uICopXG5cbm9wZW4hIEltcG9ydDBcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcbmxldCBlc2NhcGVkID0gQ2FtbC5DaGFyLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBDYW1sLkNoYXIubG93ZXJjYXNlX2FzY2lpXG5sZXQgdG9faW50ID0gQ2FtbC5DaGFyLmNvZGVcbmxldCB1bnNhZmVfb2ZfaW50ID0gQ2FtbC5DaGFyLnVuc2FmZV9jaHJcbmxldCB1cHBlcmNhc2UgPSBDYW1sLkNoYXIudXBwZXJjYXNlX2FzY2lpXG5cbigqIFdlIHVzZSBvdXIgb3duIHJhbmdlIHRlc3Qgd2hlbiBjb252ZXJ0aW5nIGludGVnZXJzIHRvIGNoYXJzIHJhdGhlciB0aGFuXG4gICBjYWxsaW5nIFtDYW1sLkNoYXIuY2hyXSBiZWNhdXNlIGl0J3Mgc2ltcGxlIGFuZCBpdCBzYXZlcyB1cyBhIGZ1bmN0aW9uIGNhbGxcbiAgIGFuZCB0aGUgdHJ5LXdpdGggKGV4Y2VwdGlvbnMgY29zdCwgZXNwZWNpYWxseSBpbiB0aGUgd29ybGQgd2l0aCBiYWNrdHJhY2VzKS4gKilcbmxldCBpbnRfaXNfb2sgaSA9IDAgPD0gaSAmJiBpIDw9IDI1NVxubGV0IG1pbl92YWx1ZSA9IHVuc2FmZV9vZl9pbnQgMFxubGV0IG1heF92YWx1ZSA9IHVuc2FmZV9vZl9pbnQgMjU1XG5sZXQgb2ZfaW50IGkgPSBpZiBpbnRfaXNfb2sgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9pbnRfZXhuIGkgPVxuICBpZiBpbnRfaXNfb2sgaVxuICB0aGVuIHVuc2FmZV9vZl9pbnQgaVxuICBlbHNlIGZhaWx3aXRoZiBcIkNoYXIub2ZfaW50X2V4biBnb3QgaW50ZWdlciBvdXQgb2YgcmFuZ2U6ICVkXCIgaSAoKVxuOztcblxubGV0IGVxdWFsICh0MSA6IGNoYXIpIHQyID0gUG9seS5lcXVhbCB0MSB0MlxuIiwiKCogW0ludDBdIGRlZmluZXMgaW50ZWdlciBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5XG4gICBkZWZpbmVkIGluIHRlcm1zIG9mIFtDYW1sXS4gW0ludDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGVcbiAgIHBhcnQgb2YgW0NhbWxdIHRoYXQgW0Jhc2VdIHVzZXMgZm9yIGludGVnZXJzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBpbnQwLm1sIHNob3VsZCB1c2UgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IHRocm91Z2ggW0NhbWxdLiBbSW50MF0gaGFzXG4gICBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBpbnRzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5JbnRdIGluIGJ1aWxkXG4gICBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBJbnQgID0gSW50MFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBJbnQgPSBJbnQwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwXG4gICBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkludF0uICopXG5cbmxldCB0b19zdHJpbmcgPSBDYW1sLnN0cmluZ19vZl9pbnRcbmxldCBvZl9zdHJpbmcgPSBDYW1sLmludF9vZl9zdHJpbmdcbmxldCB0b19mbG9hdCA9IENhbWwuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXQgPSBDYW1sLmludF9vZl9mbG9hdFxubGV0IG1heF92YWx1ZSA9IENhbWwubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IENhbWwubWluX2ludFxubGV0IHN1Y2MgPSBDYW1sLnN1Y2NcbiIsIigqIFtMaXN0MF0gZGVmaW5lcyBsaXN0IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW0NhbWwuTGlzdF0uICBbTGlzdDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbQ2FtbC5MaXN0XSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBsaXN0MC5tbCBzaG91bGQgdXNlIFtDYW1sLkxpc3RdLlxuICAgW0xpc3QwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBsaXN0cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuTGlzdF0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIExpc3QgPSBMaXN0MF0uICBEZWZpbmluZyBbbW9kdWxlIExpc3QgPSBMaXN0MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5MaXN0XS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgaGRfZXhuID0gQ2FtbC5MaXN0LmhkXG5sZXQgbGVuZ3RoID0gQ2FtbC5MaXN0Lmxlbmd0aFxubGV0IHJldl9hcHBlbmQgPSBDYW1sLkxpc3QucmV2X2FwcGVuZFxubGV0IHRsX2V4biA9IENhbWwuTGlzdC50bFxubGV0IHVuemlwID0gQ2FtbC5MaXN0LnNwbGl0XG5cbigqIFRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxubGV0IGV4aXN0cyB0IH5mID0gQ2FtbC5MaXN0LmV4aXN0cyB0IH5mXG5sZXQgZXhpc3RzMl9vayBsMSBsMiB+ZiA9IENhbWwuTGlzdC5leGlzdHMyIGwxIGwyIH5mXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gQ2FtbC5MaXN0LmZvbGRfbGVmdCB0IH5mIH5pbml0XG5sZXQgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmYgPSBDYW1sLkxpc3QuZm9sZF9sZWZ0MiBsMSBsMiB+aW5pdCB+ZlxubGV0IGZvcl9hbGwgdCB+ZiA9IENhbWwuTGlzdC5mb3JfYWxsIHQgfmZcbmxldCBmb3JfYWxsMl9vayBsMSBsMiB+ZiA9IENhbWwuTGlzdC5mb3JfYWxsMiBsMSBsMiB+ZlxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuTGlzdC5pdGVyIHQgfmZcbmxldCBpdGVyMl9vayBsMSBsMiB+ZiA9IENhbWwuTGlzdC5pdGVyMiBsMSBsMiB+ZlxubGV0IG5vbnRhaWxfbWFwIHQgfmYgPSBDYW1sLkxpc3QubWFwIHQgfmZcbmxldCBub250YWlsX21hcGkgdCB+ZiA9IENhbWwuTGlzdC5tYXBpIHQgfmZcbmxldCBwYXJ0aXRpb24gdCB+ZiA9IENhbWwuTGlzdC5wYXJ0aXRpb24gdCB+ZlxubGV0IHJldl9tYXAgdCB+ZiA9IENhbWwuTGlzdC5yZXZfbWFwIHQgfmZcbmxldCByZXZfbWFwMl9vayBsMSBsMiB+ZiA9IENhbWwuTGlzdC5yZXZfbWFwMiBsMSBsMiB+ZlxubGV0IHNvcnQgbCB+Y29tcGFyZSA9IENhbWwuTGlzdC5zb3J0IGwgfmNtcDpjb21wYXJlXG5sZXQgc3RhYmxlX3NvcnQgbCB+Y29tcGFyZSA9IENhbWwuTGlzdC5zdGFibGVfc29ydCBsIH5jbXA6Y29tcGFyZVxuXG5sZXQgcmV2ID0gZnVuY3Rpb25cbiAgfCAoW10gfCBbIF8gXSkgYXMgcmVzIC0+IHJlc1xuICB8IHggOjogeSA6OiByZXN0IC0+IHJldl9hcHBlbmQgcmVzdCBbIHk7IHggXVxuOztcblxubGV0IGZvbGRfcmlnaHQgbCB+ZiB+aW5pdCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGluaXQgKCogYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgW35mXSBiZWxvdyAqKVxuICB8IF8gLT4gZm9sZCB+ZjooZnVuIGEgYiAtPiBmIGIgYSkgfmluaXQgKHJldiBsKVxuOztcbiIsIigqXG4gICBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHJ1bnRpbWUgc3VwcG9ydCBmb3IgW3BweF9oYXNoXS5cblxuICAgVGhlIFtwcHhfaGFzaF0gc3ludGF4IGV4dGVuc2lvbiBzdXBwb3J0czogW0BAZGVyaXZpbmcgaGFzaF0gYW5kIFslaGFzaF9mb2xkOiBUWVBFXSBhbmRcbiAgIFslaGFzaDogVFlQRV1cblxuICAgRm9yIHR5cGUgW3RdIGEgZnVuY3Rpb24gW2hhc2hfZm9sZF90XSBvZiB0eXBlIFtIYXNoLnN0YXRlIC0+IHQgLT4gSGFzaC5zdGF0ZV0gaXNcbiAgIGdlbmVyYXRlZC5cblxuICAgVGhlIGdlbmVyYXRlZCBbaGFzaF9mb2xkXzxUPl0gZnVuY3Rpb24gaXMgY29tcG9zaXRpb25hbCwgZm9sbG93aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlXG4gICB0eXBlOyBhbGxvd2luZyB1c2VyIG92ZXJyaWRlcyBhdCBldmVyeSBsZXZlbC4gVGhpcyBpcyBpbiBjb250cmFzdCB0byBvY2FtbCdzIGJ1aWx0aW5cbiAgIHBvbHltb3JwaGljIGhhc2hpbmcgW0hhc2h0YmwuaGFzaF0gd2hpY2ggaWdub3JlcyB1c2VyIG92ZXJyaWRlcy5cblxuICAgVGhlIGdlbmVyYXRvciBhbHNvIHByb3ZpZGVzIGEgZGlyZWN0IGhhc2gtZnVuY3Rpb24gW2hhc2hdIChuYW1lZCBbaGFzaF88VD5dIHdoZW4gPFQ+ICE9XG4gICBcInRcIikgb2YgdHlwZTogW3QgLT4gSGFzaC5oYXNoX3ZhbHVlXS5cblxuICAgVGhlIGZvbGRpbmcgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoX2ZvbGQ6IFRZUEVdXG4gICBUaGUgZGlyZWN0IGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaDogVFlQRV1cbiopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgSGFzaF9pbnRmXG5cbigqKiBCdWlsdGluIGZvbGRpbmctc3R5bGUgaGFzaCBmdW5jdGlvbnMsIGFic3RyYWN0ZWQgb3ZlciBbSGFzaF9pbnRmLlNdICopXG5tb2R1bGUgRm9sZGluZyAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5CdWlsdGluX2ludGZcbiAgd2l0aCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBoYXNoX2ZvbGRfdW5pdCBzICgpID0gc1xuICBsZXQgaGFzaF9mb2xkX2ludCA9IEhhc2guZm9sZF9pbnRcbiAgbGV0IGhhc2hfZm9sZF9pbnQ2NCA9IEhhc2guZm9sZF9pbnQ2NFxuICBsZXQgaGFzaF9mb2xkX2Zsb2F0ID0gSGFzaC5mb2xkX2Zsb2F0XG4gIGxldCBoYXNoX2ZvbGRfc3RyaW5nID0gSGFzaC5mb2xkX3N0cmluZ1xuICBsZXQgYXNfaW50IGYgcyB4ID0gaGFzaF9mb2xkX2ludCBzIChmIHgpXG5cbiAgKCogVGhpcyBpZ25vcmVzIHRoZSBzaWduIGJpdCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgdW5saWtlbHkgdG8gbGVhZCB0b1xuICAgICBmcmVxdWVudCBjb2xsaXNpb25zIChtaW5fdmFsdWUgY29sbGlkaW5nIHdpdGggMCBpcyB0aGUgbW9zdCBsaWtlbHkgb25lKS4gICopXG4gIGxldCBoYXNoX2ZvbGRfaW50MzIgPSBhc19pbnQgQ2FtbC5JbnQzMi50b19pbnRcbiAgbGV0IGhhc2hfZm9sZF9jaGFyID0gYXNfaW50IENoYXIudG9faW50XG5cbiAgbGV0IGhhc2hfZm9sZF9ib29sID1cbiAgICBhc19pbnQgKGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gMVxuICAgICAgfCBmYWxzZSAtPiAwKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbmF0aXZlaW50IHMgeCA9IGhhc2hfZm9sZF9pbnQ2NCBzIChDYW1sLkludDY0Lm9mX25hdGl2ZWludCB4KVxuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIGhhc2hfZm9sZF9lbGVtIHMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBoYXNoX2ZvbGRfaW50IHMgMFxuICAgIHwgU29tZSB4IC0+IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfaW50IHMgMSkgeFxuICA7O1xuXG4gIGxldCByZWMgaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgeCA6OiB4cyAtPiBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIHgpIHhzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgKCogVGhlIFtsZW5ndGhdIG9mIHRoZSBsaXN0IG11c3QgYmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGhhc2gtc3RhdGUgc28gdmFsdWVzIG9mXG4gICAgICAgdHlwZXMgc3VjaCBhcyBbdW5pdCBsaXN0XSAtIChbXSwgWygpXSwgWygpOygpXSwuLikgYXJlIGhhc2hlZCBkaWZmZXJlbnRseS4gKilcbiAgICAoKiBUaGUgW2xlbmd0aF0gbXVzdCBjb21lIGJlZm9yZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgYSB2aW9sYXRpb24gb2YgdGhlIHJ1bGVcbiAgICAgICBlbmZvcmNlZCBieSBQZXJmZWN0X2hhc2guICopXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfaW50IHMgKExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCBpblxuICAgIHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xhenlfdCBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzIChDYW1sLkxhenkuZm9yY2UgeClcbiAgbGV0IGhhc2hfZm9sZF9yZWZfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgIXhcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggYXJyYXlcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBlID0gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpIGluXG4gICAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgZSkgYXJyYXkgKGkgKyAxKSlcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2FycmF5X2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5ID1cbiAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2lcbiAgICAgICgqIFtsZW5ndGhdIG11c3QgYmUgaW5jb3Jwb3JhdGVkIGZvciBhcnJheXMsIGFzIGl0IGlzIGZvciBsaXN0cy4gU2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIGhhc2hfZm9sZF9lbGVtXG4gICAgICAoaGFzaF9mb2xkX2ludCBzIChBcnJheS5sZW5ndGggYXJyYXkpKVxuICAgICAgYXJyYXlcbiAgICAgIDBcbiAgOztcblxuICAoKiB0aGUgZHVwbGljYXRpb24gaGVyZSBpcyBiZWNhdXNlIHdlIHRoaW5rXG4gICAgIG9jYW1sIGNhbid0IGVsaW1pbmF0ZSBpbmRpcmVjdCBmdW5jdGlvbiBjYWxscyBvdGhlcndpc2UuICopXG4gIGxldCBoYXNoX25hdGl2ZWludCB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfbmF0aXZlaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9pbnQ2NCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDY0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50MzIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQzMiAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2NoYXIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9jaGFyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfYm9vbCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Jvb2wgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuXG4gIGxldCBoYXNoX3N0cmluZyB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfc3RyaW5nIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9mbG9hdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Zsb2F0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfdW5pdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3VuaXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuZW5kXG5cbm1vZHVsZSBGIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkZ1bGxcbiAgd2l0aCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgIGFuZCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgc2VlZCA9IEhhc2guc2VlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gRm9sZGluZyAoSGFzaClcblxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKEhhc2gucmVzZXQgP3NlZWQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbGhhc2ggOiBzaWdcbiAgaW5jbHVkZVxuICAgIEhhc2hfaW50Zi5TXG4gICAgd2l0aCB0eXBlIHN0YXRlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc3RhdGVcbiAgICAgKCogV2UgZ2l2ZSBhIGNvbmNyZXRlIHR5cGUgZm9yIFtzdGF0ZV0sIGFsYmVpdCBvbmx5IHBhcnRpYWxseSBleHBvc2VkIChzZWVcbiAgICAgICAgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMpLCBzbyB0aGF0IGl0IHVuaWZpZXMgd2l0aCB0aGUgc2FtZSB0eXBlIGluIFtCYXNlX2Jvb3RdLFxuICAgICAgICBhbmQgdG8gYWxsb3cgb3B0aW1pemF0aW9ucyBmb3IgdGhlIGltbWVkaWF0ZSB0eXBlLiAqKVxuICAgICBhbmQgdHlwZSBzZWVkID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc2VlZFxuICAgICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuaGFzaF92YWx1ZVxuXG4gIGV4dGVybmFsIGZvbGRfaW50NjQgOiBzdGF0ZSAtPiBpbnQ2NCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQgOiBzdGF0ZSAtPiBpbnQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2Zsb2F0IDogc3RhdGUgLT4gZmxvYXQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfc3RyaW5nIDogc3RhdGUgLT4gc3RyaW5nIC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1wiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZ2V0X2hhc2hfdmFsdWUgOiBzdGF0ZSAtPiBoYXNoX3ZhbHVlID0gXCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVwiXG4gIFtAQG5vYWxsb2NdXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRlc2NyaXB0aW9uID0gXCJpbnRlcm5hbGhhc2hcIlxuXG4gIGluY2x1ZGUgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXNcblxuICBsZXQgYWxsb2MgKCkgPSBjcmVhdGVfc2VlZGVkIDBcbiAgbGV0IHJlc2V0ID8oc2VlZCA9IDApIF90ID0gY3JlYXRlX3NlZWRlZCBzZWVkXG5cbiAgbW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICAgIGxldCBjb21wYXJlX3N0YXRlIChhIDogc3RhdGUpIChiIDogc3RhdGUpID0gY29tcGFyZSAoYSA6PiBpbnQpIChiIDo+IGludClcbiAgICBsZXQgc3RhdGVfdG9fc3RyaW5nIChzdGF0ZSA6IHN0YXRlKSA9IEludC50b19zdHJpbmcgKHN0YXRlIDo+IGludClcbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRlcm5hbGhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9IGdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKHJlc2V0ID9zZWVkIChhbGxvYyAoKSkpIHgpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb2xkaW5nID0gRm9sZGluZyAoSW50ZXJuYWxoYXNoKVxuICAgIGluY2x1ZGUgRm9sZGluZ1xuXG4gICAgKCogW0ZvbGRpbmddIHByb3ZpZGVzIHNvbWUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBbaGFzaF8qXSBmdW5jdGlvbnMgYmVsb3csXG4gICAgICAgYnV0IHRoZXkgYXJlIGluZWZmaWNpZW50IGZvciBzb21lIHVzZS1jYXNlcyBiZWNhdXNlIG9mIHRoZSB1c2Ugb2YgdGhlIFtoYXNoX2ZvbGRdXG4gICAgICAgZnVuY3Rpb25zLiBBdCB0aGlzIHBvaW50LCB0aGUgW2hhc2hfdmFsdWVdIHR5cGUgaGFzIGJlZW4gZml4ZWQgdG8gW2ludF0sIHNvIHRoaXNcbiAgICAgICBtb2R1bGUgY2FuIHByb3ZpZGUgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zLiAqKVxuXG4gICAgbGV0IGhhc2hfY2hhciA9IENoYXIwLnRvX2ludFxuXG4gICAgKCogVGhpcyBoYXNoIHdhcyBjaG9zZW4gZnJvbSBoZXJlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9iYWRib3kvNjI2Nzc0M1xuXG4gICAgICAgSXQgYXR0ZW1wdHMgdG8gZnVsZmlsbCB0aGUgcHJpbWFyeSBnb2FscyBvZiBhIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb246XG5cbiAgICAgICAtIGEgYml0IGNoYW5nZSBpbiB0aGUgaW5wdXQgc2hvdWxkIGNoYW5nZSB+MS8yIG9mIHRoZSBvdXRwdXQgYml0c1xuICAgICAgIC0gdGhlIG91dHB1dCBzaG91bGQgYmUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgb3V0cHV0IHJhbmdlXG4gICAgICAgLSBpbnB1dHMgdGhhdCBhcmUgY2xvc2UgdG8gZWFjaCBvdGhlciBzaG91bGRuJ3QgbGVhZCB0byBvdXRwdXRzIHRoYXQgYXJlIGNsb3NlIHRvXG4gICAgICAgICBlYWNoIG90aGVyLlxuICAgICAgIC0gYWxsIGJpdHMgb2YgdGhlIGlucHV0IGFyZSB1c2VkIGluIGdlbmVyYXRpbmcgdGhlIG91dHB1dFxuXG4gICAgICAgSW4gb3VyIGNhc2Ugd2UgYWxzbyB3YW50IGl0IHRvIGJlIGZhc3QsIG5vbi1hbGxvY2F0aW5nLCBhbmQgaW5saW5hYmxlLiAgKilcbiAgICBsZXRbQGlubGluZSBhbHdheXNdIGhhc2hfaW50ICh0IDogaW50KSA9XG4gICAgICBsZXQgdCA9IGxub3QgdCArICh0IGxzbCAyMSkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAzKSArICh0IGxzbCA4KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDE0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDIpICsgKHQgbHNsIDQpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjgpIGluXG4gICAgICB0ICsgKHQgbHNsIDMxKVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaF9ib29sIHggPSBpZiB4IHRoZW4gMSBlbHNlIDBcblxuICAgIGV4dGVybmFsIGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIkJhc2VfaGFzaF9kb3VibGVcIiBbQEBub2FsbG9jXVxuXG4gICAgbGV0IGhhc2hfdW5pdCAoKSA9IDBcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG4iLCJvcGVuIEltcG9ydDBcblxubGV0IHBoeXNfZXF1YWwgPSBwaHlzX2VxdWFsXG5cbmV4dGVybmFsIHBvbHltb3JwaGljX2NvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIHBvbHltb3JwaGljX2VxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5cbmxldCBjb21wYXJlX2Fic3RyYWN0IH50eXBlX25hbWUgXyBfID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgZmFpbHdpdGhcbiAgICBcIkNvbXBhcmUgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxubGV0IGVxdWFsX2Fic3RyYWN0IH50eXBlX25hbWUgXyBfID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgZmFpbHdpdGhcbiAgICBcIkVxdWFsIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbnR5cGUgJ2EgY29tcGFyZSA9ICdhIC0+ICdhIC0+IGludFxudHlwZSAnYSBlcXVhbCA9ICdhIC0+ICdhIC0+IGJvb2xcblxubW9kdWxlIENvbXBhcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgY29tcGFyZSAtPiAnYSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgY29tcGFyZSAtPiAnYiBjb21wYXJlIC0+ICgnYSwgJ2IpIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgY29tcGFyZSAtPiAnYiBjb21wYXJlIC0+ICdjIGNvbXBhcmUgLT4gKCdhLCAnYiwgJ2MpIHQgY29tcGFyZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRXF1YWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCBlcXVhbFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2EgdCBlcXVhbFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gKCdhLCAnYikgdCBlcXVhbFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICdjIGVxdWFsIC0+ICgnYSwgJ2IsICdjKSB0IGVxdWFsXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gIGxldCBjb21wYXJlX2Jvb2wgOiBib29sIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfY2hhciA6IGNoYXIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9mbG9hdCA6IGZsb2F0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50IDogaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50MzIgOiBpbnQzMiBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDY0IDogaW50NjQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9zdHJpbmcgOiBzdHJpbmcgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV91bml0IDogdW5pdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGNvbXBhcmVfYXJyYXkgY29tcGFyZV9lbHQgYSBiID1cbiAgICBpZiBwaHlzX2VxdWFsIGEgYlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgICBsZXQgbGVuX2IgPSBBcnJheTAubGVuZ3RoIGIgaW5cbiAgICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgICBpZiByZXQgPD4gMFxuICAgICAgdGhlbiByZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgICBpblxuICAgICAgICBsb29wIDApKVxuICA7O1xuXG4gIGxldCByZWMgY29tcGFyZV9saXN0IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gMFxuICAgIHwgW10sIF8gLT4gLTFcbiAgICB8IF8sIFtdIC0+IDFcbiAgICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCB4IHkgaW5cbiAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IGNvbXBhcmVfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IDBcbiAgICB8IE5vbmUsIFNvbWUgXyAtPiAtMVxuICAgIHwgU29tZSBfLCBOb25lIC0+IDFcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGNvbXBhcmVfZWx0IGEgYlxuICA7O1xuXG4gIGxldCBjb21wYXJlX3JlZiBjb21wYXJlX2VsdCBhIGIgPSBjb21wYXJlX2VsdCAhYSAhYlxuICBsZXQgZXF1YWxfYm9vbCA6IGJvb2wgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9jaGFyIDogY2hhciBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludCA6IGludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDMyIDogaW50MzIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQ2NCA6IGludDY0IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfbmF0aXZlaW50IDogbmF0aXZlaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfc3RyaW5nIDogc3RyaW5nIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfdW5pdCA6IHVuaXQgZXF1YWwgPSBQb2x5LmVxdWFsXG5cbiAgKCogW1BvbHkuZXF1YWxdIGlzIElFRUUgY29tcGxpYW50LCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50IGhlcmUuICopXG4gIGxldCBlcXVhbF9mbG9hdCB4IHkgPSBlcXVhbF9pbnQgKGNvbXBhcmVfZmxvYXQgeCB5KSAwXG5cbiAgbGV0IGVxdWFsX2FycmF5IGVxdWFsX2VsdCBhIGIgPVxuICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgfHxcbiAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBBcnJheTAubGVuZ3RoIGIgaW5cbiAgICBlcXVhbCBsZW5fYSBsZW5fYlxuICAgICYmXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaSA9IGxlbl9hXG4gICAgICB8fFxuICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICBlcXVhbF9lbHQgbCByICYmIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG4gIDs7XG5cbiAgbGV0IHJlYyBlcXVhbF9saXN0IGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gZmFsc2VcbiAgICB8IHggOjogeHMsIHkgOjogeXMgLT4gZXF1YWxfZWx0IHggeSAmJiBlcXVhbF9saXN0IGVxdWFsX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gZXF1YWxfZWx0IGEgYlxuICA7O1xuXG4gIGxldCBlcXVhbF9yZWYgZXF1YWxfZWx0IGEgYiA9IGVxdWFsX2VsdCAhYSAhYlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgaXMgZm9yIHVzZSBieSBwcHhfaGFzaCwgYW5kIGlzIHRodXMgbm90IGluIHRoZSBpbnRlcmZhY2Ugb2YgQmFzZS4gKilcbm1vZHVsZSBTdGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhhc2ggPSBIYXNoICgqKiBAY2Fub25pY2FsIEJhc2UuSGFzaCAqKVxuZW5kXG5cbnR5cGUgJ2EgaGFzaF9mb2xkID0gU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gU3RkLkhhc2guc3RhdGVcblxubW9kdWxlIEhhc2hhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6IHQgaGFzaF9mb2xkXG4gICAgdmFsIGhhc2ggOiB0IC0+IFN0ZC5IYXNoLmhhc2hfdmFsdWVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYSB0IGhhc2hfZm9sZFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdiIGhhc2hfZm9sZCAtPiAoJ2EsICdiKSB0IGhhc2hfZm9sZFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdFxuICAgICAgOiAgJ2EgaGFzaF9mb2xkXG4gICAgICAtPiAnYiBoYXNoX2ZvbGRcbiAgICAgIC0+ICdjIGhhc2hfZm9sZFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHQgaGFzaF9mb2xkXG4gIGVuZFxuZW5kXG4iLCJvcGVuIEhhc2guQnVpbHRpblxub3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9IFNleHBsaWIwLlNleHAudCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbmxldCByZWMgY29tcGFyZSA9XG4gIChmdW4gYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgICB0aGVuIDBcbiAgICAgZWxzZSAoXG4gICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICAgfCBBdG9tIF9hX18wMDNfLCBBdG9tIF9iX18wMDRfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDNfIF9iX18wMDRfXG4gICAgICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgICAgfCBMaXN0IF9hX18wMDVfLCBMaXN0IF9iX18wMDZfIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIF9hX18wMDVfIF9iX18wMDZfKVxuICAgICAgIDogdCAtPiB0IC0+IGludClcbjs7XG5cbmxldCByZWMgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEF0b20gX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBfYTBcbiAgICAgfCBMaXN0IF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX3QgaHN2IF9hMFxuICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuXG5hbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfY29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5sZXQgb2Zfc3RyaW5nID0gKClcbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9XG4gIHwgVzMyXG4gIHwgVzY0XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgVzMyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlczMlwiXG4gICAgfCBXNjQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzY0XCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IG51bV9iaXRzID0gZnVuY3Rpb25cbiAgfCBXMzIgLT4gMzJcbiAgfCBXNjQgLT4gNjRcbjs7XG5cbmxldCB3b3JkX3NpemUgPVxuICBtYXRjaCBTeXMud29yZF9zaXplX2luX2JpdHMgd2l0aFxuICB8IDMyIC0+IFczMlxuICB8IDY0IC0+IFc2NFxuICB8IF8gLT4gZmFpbHdpdGggXCJ1bmtub3duIHdvcmQgc2l6ZVwiXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByID0gcmVmIFsgXCJCYXNlLlNleHAucHBfaHVtXCIgXVxubGV0IGFsbCAoKSA9ICFyXG5sZXQgcmVnaXN0ZXIgcCA9IHIgOj0gcCA6OiAhclxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBwcCA6IEZvcm1hdHRlci50IC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9wcCAoTSA6IHNpZ1xuICAgIGluY2x1ZGUgU1xuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIGxldCAoKSA9IHJlZ2lzdGVyIChNLm1vZHVsZV9uYW1lIF4gXCIucHBcIilcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXIgKE0gOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbiAgUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgbGV0IHBwIGZvcm1hdHRlciB0ID0gQ2FtbC5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZvcm1hdHRlciAoTS50b19zdHJpbmcgdClcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGV4biBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2V4biA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5bQEBAZW5kXVxuXG5sZXQgZXhpdCA9IENhbWwuZXhpdFxuXG5leGNlcHRpb24gRmluYWxseSBvZiB0ICogdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZpbmFsbHldIChmdW5jdGlvblxuICAgIHwgRmluYWxseSAoYXJnMF9fMDAxXywgYXJnMV9fMDAyXykgLT5cbiAgICAgIGxldCByZXMwX18wMDNfID0gc2V4cF9vZl90IGFyZzBfXzAwMV9cbiAgICAgIGFuZCByZXMxX18wMDRfID0gc2V4cF9vZl90IGFyZzFfXzAwMl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5GaW5hbGx5XCI7IHJlczBfXzAwM187IHJlczFfXzAwNF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gUmVyYWlzZWQgb2Ygc3RyaW5nICogdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFJlcmFpc2VkXSAoZnVuY3Rpb25cbiAgICB8IFJlcmFpc2VkIChhcmcwX18wMDVfLCBhcmcxX18wMDZfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwN18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDVfXG4gICAgICBhbmQgcmVzMV9fMDA4XyA9IHNleHBfb2ZfdCBhcmcxX18wMDZfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuUmVyYWlzZWRcIjsgcmVzMF9fMDA3XzsgcmVzMV9fMDA4XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudFxuXG4oKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlOlxuXG4gICB7W1xuICAgICBleGNlcHRpb24gU2V4cCBvZiBTZXhwLnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG4gICAgICgqIC4uLiAqKVxuICAgICBbQEBAZW5kXVxuICAgXX1cblxuICAgdG8gZWxpbWluYXRlIHRoZSBleHRyYSB3cmFwcGluZyBvZiBbKFNleHAgLi4uKV0uICopXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V4cF0gKGZ1bmN0aW9uXG4gICAgfCBTZXhwIHQgLT4gdFxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgY3JlYXRlX3Mgc2V4cCA9IFNleHAgc2V4cFxuXG5sZXQgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgdCBiYWNrdHJhY2UgPVxuICBDYW1sLlByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHQgYmFja3RyYWNlXG47O1xuXG5leHRlcm5hbCBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IDogdCAtPiBib29sID0gXCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4blwiXG5cbmxldCByZXJhaXNlIGV4biBzdHIgPVxuICBsZXQgZXhuJyA9IFJlcmFpc2VkIChzdHIsIGV4bikgaW5cbiAgaWYgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG5cbiAgdGhlbiAoXG4gICAgbGV0IGJ0ID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4bicgYnQpXG4gIGVsc2UgcmFpc2UgZXhuJ1xuOztcblxubGV0IHJlcmFpc2VmIGV4YyBmb3JtYXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHIgKCkgLT4gcmVyYWlzZSBleGMgc3RyKSBmb3JtYXRcbmxldCB0b19zdHJpbmcgZXhjID0gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHRvX3N0cmluZ19tYWNoIGV4YyA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfZXhuIGV4YylcbmxldCBzZXhwX29mX3QgPSBzZXhwX29mX2V4blxuXG5sZXQgcHJvdGVjdHggfmYgeCB+KGZpbmFsbHkgOiBfIC0+IHVuaXQpID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCByZXMgLT5cbiAgICBmaW5hbGx5IHg7XG4gICAgcmVzXG4gIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgIGxldCBidCA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAobWF0Y2ggZmluYWxseSB4IHdpdGhcbiAgICAgfCAoKSAtPiByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4gYnRcbiAgICAgfCBleGNlcHRpb24gZmluYWxfZXhuIC0+XG4gICAgICAgKCogVW5mb3J0dW5hdGVseSwgdGhlIGJhY2t0cmFjZSBvZiB0aGUgW2ZpbmFsX2V4bl0gaXMgZGlzY2FyZGVkIGhlcmUuICopXG4gICAgICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKEZpbmFsbHkgKGV4biwgZmluYWxfZXhuKSkgYnQpXG47O1xuXG5sZXQgcHJvdGVjdCB+ZiB+ZmluYWxseSA9IHByb3RlY3R4IH5mICgpIH5maW5hbGx5XG5cbmxldCBkb2VzX3JhaXNlICh0eXBlIGEpIChmIDogdW5pdCAtPiBhKSA9XG4gIHRyeVxuICAgIGlnbm9yZSAoZiAoKSA6IGEpO1xuICAgIGZhbHNlXG4gIHdpdGhcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGV4blxuXG4gICAgbGV0IHBwIHBwZiB0ID1cbiAgICAgIG1hdGNoIHNleHBfb2ZfZXhuX29wdCB0IHdpdGhcbiAgICAgIHwgU29tZSBzZXhwIC0+IFNleHAucHBfaHVtIHBwZiBzZXhwXG4gICAgICB8IE5vbmUgLT4gQ2FtbC5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoQ2FtbC5QcmludGV4Yy50b19zdHJpbmcgdClcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkV4blwiXG4gIGVuZClcblxubGV0IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlID1cbiAgQ2FtbC5Gb3JtYXQuZXByaW50ZiBcIkBbPDI+VW5jYXVnaHQgZXhjZXB0aW9uOkBcXG5AXFxuQFslYUBdQF1AXFxuQC5cIiBwcCBleGM7XG4gIGlmIENhbWwuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1cyAoKVxuICB0aGVuIENhbWwuUHJpbnRleGMucHJpbnRfcmF3X2JhY2t0cmFjZSBDYW1sLnN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBDYW1sLmZsdXNoIENhbWwuc3RkZXJyXG47O1xuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpID1cbiAgQ2FtbC5QcmludGV4Yy5zZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgcHJpbnRfd2l0aF9iYWNrdHJhY2Vcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYXV4IH5kb19hdF9leGl0IH5leGl0IGYgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhjIC0+XG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKCogT25lIHJlYXNvbiB0byBydW4gW2RvX2F0X2V4aXRdIGhhbmRsZXJzIGJlZm9yZSBwcmludGluZyBvdXQgdGhlIGVycm9yIG1lc3NhZ2UgaXNcbiAgICAgICB0aGF0IGl0IGhlbHBzIGN1cnNlcyBhcHBsaWNhdGlvbnMgYnJpbmcgdGhlIHRlcm1pbmFsIGluIGEgZ29vZCBzdGF0ZSwgb3RoZXJ3aXNlIHRoZVxuICAgICAgIGVycm9yIG1lc3NhZ2UgbWlnaHQgZ2V0IGNvcnJ1cHRlZC4gIEFsc28sIHRoZSBPQ2FtbCB0b3AtbGV2ZWwgdW5jYXVnaHQgZXhjZXB0aW9uXG4gICAgICAgaGFuZGxlciBkb2VzIHRoZSBzYW1lLiAqKVxuICAgIGlmIGRvX2F0X2V4aXRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBDYW1sLmRvX2F0X2V4aXQgKCkgd2l0aFxuICAgICAgfCBfIC0+ICgpKTtcbiAgICAodHJ5IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlIHdpdGhcbiAgICAgfCBfIC0+XG4gICAgICAgKHRyeVxuICAgICAgICAgIENhbWwuUHJpbnRmLmVwcmludGYgXCJFeG4uaGFuZGxlX3VuY2F1Z2h0IGNvdWxkIG5vdCBwcmludDsgZXhpdGluZyBhbnl3YXlcXG4lIVwiXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBfIC0+ICgpKSk7XG4gICAgZXhpdCAxXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPSBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQgfmRvX2F0X2V4aXQ6dHJ1ZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0IH5leGl0Om11c3RfZXhpdCBmID1cbiAgaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0OihpZiBtdXN0X2V4aXQgdGhlbiBleGl0IGVsc2UgaWdub3JlKSB+ZG9fYXRfZXhpdDptdXN0X2V4aXRcbjs7XG5cbmxldCByZXJhaXNlX3VuY2F1Z2h0IHN0ciBmdW5jID1cbiAgdHJ5IGZ1bmMgKCkgd2l0aFxuICB8IGV4biAtPlxuICAgIGxldCBidCA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoUmVyYWlzZWQgKHN0ciwgZXhuKSkgYnRcbjs7XG5cbmV4dGVybmFsIGNsZWFyX2JhY2t0cmFjZSA6IHVuaXQgLT4gdW5pdCA9IFwiQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3NcIiBbQEBub2FsbG9jXVxuXG5sZXQgcmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgZSA9XG4gICgqIFdlIGNsZWFyIHRoZSBiYWNrdHJhY2UgdG8gcmVkdWNlIGNvbmZ1c2lvbiwgc28gdGhhdCBwZW9wbGUgZG9uJ3QgdGhpbmsgd2hhdGV2ZXJcbiAgICAgaXMgc3RvcmVkIGNvcnJlc3BvbmRzIHRvIHRoaXMgcmFpc2UuICopXG4gIGNsZWFyX2JhY2t0cmFjZSAoKTtcbiAgQ2FtbC5yYWlzZV9ub3RyYWNlIGVcbjs7XG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgY2xlYXJfYmFja3RyYWNlID0gY2xlYXJfYmFja3RyYWNlXG5lbmRcbiIsIigqIGJlbG9uZ3MgaW4gQ29tbW9uLCBidXQgbW92ZWQgaGVyZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgcmV0dXJuID0geyByZXR1cm4gOiAnYi4gJ2EgLT4gJ2IgfSBbQEB1bmJveGVkXVxuXG5sZXQgd2l0aF9yZXR1cm4gKHR5cGUgYSkgZiA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICgqIFJhaXNlZCB0byBpbmRpY2F0ZSB+cmV0dXJuIHdhcyBjYWxsZWQuICBMb2NhbCBzbyB0aGF0IHRoZSBleGNlcHRpb24gaXMgdGllZCB0byBhXG4gICAgICAgcGFydGljdWxhciBjYWxsIG9mIFt3aXRoX3JldHVybl0uICopXG4gICAgZXhjZXB0aW9uIFJldHVybiBvZiBhXG4gIGVuZFxuICBpblxuICBsZXQgaXNfYWxpdmUgPSByZWYgdHJ1ZSBpblxuICBsZXQgcmV0dXJuIGEgPVxuICAgIGlmIG5vdCAhaXNfYWxpdmVcbiAgICB0aGVuIGZhaWx3aXRoIFwidXNlIG9mIFtyZXR1cm5dIGZyb20gYSBbd2l0aF9yZXR1cm5dIHRoYXQgYWxyZWFkeSByZXR1cm5lZFwiO1xuICAgIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSAoTS5SZXR1cm4gYSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IGEgPSBmIHsgcmV0dXJuIH0gaW5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICBhXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICAobWF0Y2ggZXhuIHdpdGhcbiAgICAgfCBNLlJldHVybiBhIC0+IGFcbiAgICAgfCBfIC0+IHJhaXNlIGV4bilcbjs7XG5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gcmV0dXJuIC0+XG4gICAgZiB7IHJldHVybiA9IChmdW4gYSAtPiByZXR1cm4ucmV0dXJuIChTb21lIGEpKSB9O1xuICAgIE5vbmUpXG47O1xuXG5sZXQgcHJlcGVuZCB7IHJldHVybiB9IH5mID0geyByZXR1cm4gPSAoZnVuIHggLT4gcmV0dXJuIChmIHgpKSB9XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQmFzaWMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogVGhlIGZvbGxvd2luZyBpZGVudGl0aWVzIG91Z2h0IHRvIGhvbGQgKGZvciBzb21lIHZhbHVlIG9mID0pOlxuXG4gICAgICAtIFtyZXR1cm4geCA+Pj0gZiA9IGYgeF1cbiAgICAgIC0gW3QgPj49IGZ1biB4IC0+IHJldHVybiB4ID0gdF1cbiAgICAgIC0gWyh0ID4+PSBmKSA+Pj0gZyA9IHQgPj49IGZ1biB4IC0+IChmIHggPj49IGcpXVxuXG4gICAgICBOb3RlOiBbPj49XSBpcyB0aGUgaW5maXggbm90YXRpb24gZm9yIFtiaW5kXSkgKilcblxuICAoKiogVGhlIFttYXBdIGFyZ3VtZW50IHRvIFtNb25hZC5NYWtlXSBzYXlzIGhvdyB0byBpbXBsZW1lbnQgdGhlIG1vbmFkJ3MgW21hcF0gZnVuY3Rpb24uXG4gICAgICBbYERlZmluZV91c2luZ19iaW5kXSBtZWFucyB0byBkZWZpbmUgW21hcCB0IH5mID0gYmluZCB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LlxuXG4gICAgICBTb21lIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbTW9uYWQuTWFrZV0gYXJlIGRlZmluZWQgaW4gdGVybXMgb2YgW21hcF0sIHNvXG4gICAgICBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW21hcF0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIG1hcCA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0IF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICAoKiogW3QgPj49IGZdIHJldHVybnMgYSBjb21wdXRhdGlvbiB0aGF0IHNlcXVlbmNlcyB0aGUgY29tcHV0YXRpb25zIHJlcHJlc2VudGVkIGJ5IHR3b1xuICAgICAgbW9uYWQgZWxlbWVudHMuICBUaGUgcmVzdWx0aW5nIGNvbXB1dGF0aW9uIGZpcnN0IGRvZXMgW3RdIHRvIHlpZWxkIGEgdmFsdWUgW3ZdLCBhbmRcbiAgICAgIHRoZW4gcnVucyB0aGUgY29tcHV0YXRpb24gcmV0dXJuZWQgYnkgW2Ygdl0uICopXG4gIHZhbCAoID4+PSApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICgqKiBbdCA+PnwgZl0gaXMgW3QgPj49IChmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS4gKilcbiAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheCA9IHNpZ1xuICAoKiogT3BlbmluZyBhIG1vZHVsZSBvZiB0aGlzIHR5cGUgYWxsb3dzIG9uZSB0byB1c2UgdGhlIFslYmluZF0gYW5kIFslbWFwXSBzeW50YXhcbiAgICAgIGV4dGVuc2lvbnMgZGVmaW5lZCBieSBwcHhfbGV0LCBhbmQgYnJpbmdzIFtyZXR1cm5dIGludG8gc2NvcGUuICopXG5cbiAgdHlwZSAnYSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAoKiogVGhlc2UgYXJlIGNvbnZlbmllbnQgdG8gaGF2ZSBpbiBzY29wZSB3aGVuIHByb2dyYW1taW5nIHdpdGggYSBtb25hZDogKilcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICBpbmNsdWRlIEluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXggPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAoKiogW2JpbmQgdCB+Zl0gPSBbdCA+Pj0gZl0gKilcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiogW3JldHVybiB2XSByZXR1cm5zIHRoZSAodHJpdmlhbCkgY29tcHV0YXRpb24gdGhhdCByZXR1cm5zIHYuICopXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgKCoqIFttYXAgdCB+Zl0gaXMgdCA+PnwgZi4gKilcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAoKiogW2pvaW4gdF0gaXMgW3QgPj49IChmdW4gdCcgLT4gdCcpXS4gKilcbiAgdmFsIGpvaW4gOiAnYSB0IHQgLT4gJ2EgdFxuXG4gICgqKiBbaWdub3JlX20gdF0gaXMgW21hcCB0IH5mOihmdW4gXyAtPiAoKSldLiAgW2lnbm9yZV9tXSB1c2VkIHRvIGJlIGNhbGxlZCBbaWdub3JlXSxcbiAgICAgIGJ1dCB3ZSBkZWNpZGVkIHRoYXQgd2FzIGEgYmFkIG5hbWUsIGJlY2F1c2UgaXQgc2hhZG93ZWQgdGhlIHdpZGVseSB1c2VkXG4gICAgICBbQ2FtbC5pZ25vcmVdLiAgU29tZSBtb25hZHMgc3RpbGwgZG8gW2xldCBpZ25vcmUgPSBpZ25vcmVfbV0gZm9yIGhpc3RvcmljYWxcbiAgICAgIHJlYXNvbnMuICopXG4gIHZhbCBpZ25vcmVfbSA6ICdhIHQgLT4gdW5pdCB0XG5cbiAgdmFsIGFsbCA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcblxuICAoKiogTGlrZSBbYWxsXSwgYnV0IGVuc3VyZXMgdGhhdCBldmVyeSBtb25hZGljIHZhbHVlIGluIHRoZSBsaXN0IHByb2R1Y2VzIGEgdW5pdCB2YWx1ZSxcbiAgICAgIGFsbCBvZiB3aGljaCBhcmUgZGlzY2FyZGVkIHJhdGhlciB0aGFuIGJlaW5nIGNvbGxlY3RlZCBpbnRvIGEgbGlzdC4gKilcbiAgdmFsIGFsbF91bml0IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFN5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWMyID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGdldHMgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgIFRoaXMgaXMgdXNlZCB0byBlbmNvZGUgbW9uYWRzIHdvcmtpbmcgb24gYSBtdWx0aSBwYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgbGlrZVxuICAgICAgKFsoJ2EsJ2IpIHJlc3VsdF0pLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdlKSB0KSAtPiAoJ2IsICdlKSB0XG4gIHZhbCBtYXAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZSkgdCBdXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDIgPSBzaWdcbiAgKCoqIFNhbWUgYXMgeyFJbmZpeH0sIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0KSAtPiAoJ2IsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXgyID0gc2lnXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdlKSB0KSAtPiAoJ2IsICdlKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZSkgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdlKSB0IC0+ICgnYiwgJ2UpIHQgLT4gKCdhICogJ2IsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG4gIGluY2x1ZGUgU3ludGF4MiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4MiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZSkgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdlKSB0LCAnZSkgdCAtPiAoJ2EsICdlKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnZSkgdCAtPiAodW5pdCwgJ2UpIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2UpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdlKSB0IGxpc3QgLT4gKHVuaXQsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWMzID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgZ2V0IHVuaWZpZWQgYWNyb3NzIGFsbCB0aGVcbiAgICAgIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDMgPSBzaWdcbiAgKCoqIFNhbWUgYXMgSW5maXgsIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBhcmVcbiAgICAgIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MyA9IHNpZ1xuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2IsICdkLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2QsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmRcbiAgICAgIGFuZCB0aGlyZCBhcmUgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZCwgJ2UpIHQsICdkLCAnZSkgdCAtPiAoJ2EsICdkLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2QsICdlKSB0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2QsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdkLCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2QsICdlKSB0IGxpc3QgLT4gKHVuaXQsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBzaWdcbiAgKCoqIEluZGV4ZWQgbW9uYWQsIGluIHRoZSBzdHlsZSBvZiBBdGtleS4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBhcmUgY29tcG9zZWRcbiAgICAgIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uIFRvIHNlZSB0aGlzIG1vcmUgY2xlYXJseSwgeW91IGNhbiBsb29rIGF0IHRoZSB0eXBlIG9mIGJpbmQ6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICBdfVxuXG4gICAgICBhbmQgaXNvbGF0ZSBzb21lIG9mIHRoZSB0eXBlIHZhcmlhYmxlcyB0byBzZWUgdGhlaXIgaW5kaXZpZHVhbCBiZWhhdmlvcnM6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogJ2EgICAgICAgICAgICAgLT4gZjooJ2EgLT4gICdiICAgICAgICAgICApIC0+ICAnYlxuICAgICAgICB2YWwgYmluZCA6ICAgICAgJ2ksICdqICAgIC0+ICAgICAgICAgICAgICAgJ2osICdrICAgICAtPiAgICAgJ2ksICdrXG4gICAgICBdfVxuXG4gICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBdGtleS1zdHlsZSBpbmRleGVkIG1vbmFkcywgc2VlOlxuXG4gICAgICB7dlxuICAgICAgICBQYXJhbWV0ZXJpc2VkIE5vdGlvbnMgb2YgQ29tcHV0YXRpb25cbiAgICAgICAgUm9iZXJ0IEF0a2V5XG4gICAgICAgIGh0dHA6Ly9iZW50bmliLm9yZy9wYXJhbW5vdGlvbnMtamZwLnBkZlxuICAgICAgdn0gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2IsICdqLCAnaykgdCAtPiAoJ2EgKiAnYiwgJ2ksICdrKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19pbmRleGVkID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgaW5jbHVkZSBTeW50YXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdqLCAnaykgdCwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdrKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnaSwgJ2opIHQgLT4gKHVuaXQsICdpLCAnaikgdFxuICB2YWwgYWxsIDogKCdhLCAnaSwgJ2kpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2ksICdpKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnaSwgJ2kpIHQgbGlzdCAtPiAodW5pdCwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFNfdG9fU19pbmRleGVkIChYIDogUykgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTX2luZGV4ZWRfdG9fUzIgKFggOiBTX2luZGV4ZWQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50XG5lbmRcblxubW9kdWxlIHR5cGUgTW9uYWQgPSBzaWdcbiAgKCoqIEEgbW9uYWQgaXMgYW4gYWJzdHJhY3Rpb24gb2YgdGhlIGNvbmNlcHQgb2Ygc2VxdWVuY2luZyBvZiBjb21wdXRhdGlvbnMuICBBIHZhbHVlIG9mXG4gICAgICB0eXBlIFsnYSBtb25hZF0gcmVwcmVzZW50cyBhIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgWydhXS4gKilcblxuICBtb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljXG4gIG1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMlxuICBtb2R1bGUgdHlwZSBCYXNpYzMgPSBCYXNpYzNcbiAgbW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IEJhc2ljX2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeFxuICBtb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJcbiAgbW9kdWxlIHR5cGUgSW5maXgzID0gSW5maXgzXG4gIG1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBJbmZpeF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFN5bnRheCA9IFN5bnRheFxuICBtb2R1bGUgdHlwZSBTeW50YXgyID0gU3ludGF4MlxuICBtb2R1bGUgdHlwZSBTeW50YXgzID0gU3ludGF4M1xuICBtb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IFN5bnRheF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXggPSBTX3dpdGhvdXRfc3ludGF4XG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgbW9kdWxlIHR5cGUgUzMgPSBTM1xuICBtb2R1bGUgdHlwZSBTX2luZGV4ZWQgPSBTX2luZGV4ZWRcblxuICBtb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcbiAgbW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfaW5kZXhlZCAoWCA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICAoKiogRGVmaW5lIGEgbW9uYWQgdGhyb3VnaCBhbiBpc29tb3JwaGlzbSB3aXRoIGFuIGV4aXN0aW5nIG1vbmFkLiBGb3IgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSAnYSB0ID0geyB2YWx1ZSA6ICdhIH1cblxuICAgICAgICBpbmNsdWRlIE1vbmFkLk9mX21vbmFkIChNb25hZC5JZGVudCkgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICAgICAgbGV0IHRvX21vbmFkIHsgdmFsdWUgfSA9IHZhbHVlXG4gICAgICAgICAgICBsZXQgb2ZfbW9uYWQgdmFsdWUgPSB7IHZhbHVlIH1cbiAgICAgICAgICBlbmQpXG4gICAgICBdfSAqKVxuICBtb2R1bGUgT2ZfbW9uYWRcbiAgICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQyXG4gICAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkM1xuICAgICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnRcblxuICBtb2R1bGUgSWRlbnQgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2FcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1vbmFkX2ludGZcblxubW9kdWxlIHR5cGUgQmFzaWNfZ2VuZXJhbCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZFxuICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbmVyYWwgKE0gOiBCYXNpY19nZW5lcmFsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpXG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCBhIGIgPSBhID4+PSBmdW4gYSAtPiBiID4+fCBmdW4gYiAtPiBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IGZ1biB0JyAtPiB0J1xuICBsZXQgaWdub3JlX20gdCA9IG1hcCB0IH5mOihmdW4gXyAtPiAoKSlcblxuICBsZXQgYWxsID1cbiAgICBsZXQgcmVjIGxvb3AgdnMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IHZzKVxuICAgICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biB2IC0+IGxvb3AgKHYgOjogdnMpIHRzXG4gICAgaW5cbiAgICBmdW4gdHMgLT4gbG9vcCBbXSB0c1xuICA7O1xuXG4gIGxldCByZWMgYWxsX3VuaXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biAoKSAtPiBhbGxfdW5pdCB0c1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2luZGV4ZWQgKE0gOiBCYXNpY19pbmRleGVkKSA6XG4gIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzIChNIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgTS50ID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTIgKE0gOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgOj0gKCdhLCAnZCkgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChNIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2dlbmVyYWwgKE1vbmFkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICB2YWwgYmluZFxuICAgICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbiAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50XG4gICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAgIGVuZCkgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiBhID0gTS5vZl9tb25hZCAoTW9uYWQucmV0dXJuIGEpXG4gICAgbGV0IGJpbmQgdCB+ZiA9IE0ub2ZfbW9uYWQgKE1vbmFkLmJpbmQgKE0udG9fbW9uYWQgdCkgfmY6KGZ1biBhIC0+IE0udG9fbW9uYWQgKGYgYSkpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gdCB+ZiAtPiBNLm9mX21vbmFkIChNb25hZC5tYXAgKE0udG9fbW9uYWQgdCkgfmYpKVxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDNcbiAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDJcbiAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkXG4gICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IGJpbmQgYSB+ZiA9IGYgYVxuICAgICAgbGV0IHJldHVybiBhID0gYVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gKGZ1biBhIH5mIC0+IGYgYSlcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbigqKiBUaGlzIG1vZHVsZSBzZXJ2ZXMgbW9zdGx5IGFzIGEgcGFydGlhbCBjaGVjayB0aGF0IFtTMl0gYW5kIFtTXSBhcmUgaW4gc3luYywgYnV0XG4gICAgYWN0dWFsbHkgY2FsbGluZyBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsLiAqKVxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChYIDogUzIpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19hcHBseSAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgbWFwMiB0YSB0YiB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGJcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAgfmYgdGEgPCo+IHRiIDwqPiB0Y1xuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCAoICo+ICkgdSB2ID0gcmV0dXJuIChmdW4gKCkgeSAtPiB5KSA8Kj4gdSA8Kj4gdlxuICBsZXQgKCA8KiApIHUgdiA9IHJldHVybiAoZnVuIHggKCkgLT4geCkgPCo+IHUgPCo+IHZcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlMyAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IE1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgzXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDMpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBJbXBsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgyXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDIpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgzXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCAnZCwgXykgdCA9ICgnYSwgJ2QpIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheFxuICAgIChYIDogRm9yX2xldF9zeW50YXgpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4MlxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxuKCoqIFRoaXMgZnVuY3RvciBjbG9zZWx5IHJlc2VtYmxlcyBbTWFrZTNdLCBhbmQgaW5kZWVkIGl0IGNvdWxkIGJlIGltcGxlbWVudGVkXG4gICAgbXVjaCBzaG9ydGVyIGluIHRlcm1zIG9mIFtNYWtlM10uIEhvd2V2ZXIsIHdlIGltcGxlbWVudCBpdCBieSBoYW5kIHNvIHRoYXRcbiAgICB0aGUgcmVzdWx0aW5nIGZ1bmN0aW9ucyBhcmUgbW9yZSBlZmZpY2llbnQsIGUuZy4gdXNpbmcgW21hcDJdIGRpcmVjdGx5IGluc3RlYWQgb2ZcbiAgICBkZWZpbmluZyBbYXBwbHldIGluIHRlcm1zIG9mIGl0IGFuZCB0aGVuIFttYXAyXSBpbiB0ZXJtcyBvZiB0aGF0LiBGb3IgbW9zdFxuICAgIGFwcGxpY2F0aXZlcyB0aGlzIGRvZXMgbm90IG1hdHRlciwgYnV0IGZvciBzb21lIChzdWNoIGFzIEJvbnNhaS5WYWx1ZS50KSwgaXQgaGFzIGFcbiAgICBsYXJnZXIgaW1wYWN0LiAqKVxubW9kdWxlIE1ha2UzX3VzaW5nX21hcDIgKFggOiBCYXNpYzNfdXNpbmdfbWFwMikgOlxuICBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgYXBwbHkgdGYgdGEgPSBtYXAyIHRmIHRhIH5mOihmdW4gZiBhIC0+IGYgYSlcbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19tYXAyIC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcDIgKG1hcDIgdGEgdGIgfmYpIHRjIH5mOihmdW4gZmFiIGMgLT4gZmFiIGMpXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgKCAqPiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4gKCkgeSAtPiB5KVxuICBsZXQgKCA8KiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4geCAoKSAtPiB4KVxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyX3VzaW5nX21hcDIgKFggOiBCYXNpYzJfdXNpbmdfbWFwMikgOlxuICBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlM191c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19tYXAyIChYIDogQmFzaWNfdXNpbmdfbWFwMikgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9XG4gIE1ha2UyX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkMiAoTSA6IE1vbmFkLlMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIE0udCA9IE1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gPSBNLnJldHVyblxuICAgIGxldCBhcHBseSBtZiBteCA9IE0uYmluZCBtZiB+ZjooZnVuIGYgLT4gTS5tYXAgbXggfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gTS5tYXBcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQgKE0gOiBNb25hZC5TKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gT2ZfbW9uYWQyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIENvbXBvc2UgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50IEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBHLnJldHVybiAoRi5yZXR1cm4gYSlcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEcuYXBwbHkgKEcubWFwIH5mOkYuYXBwbHkgdGYpIHR4XG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRy5tYXAgfmY6KEYubWFwIH5mKSB0XG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBQYWlyIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEYucmV0dXJuIGEsIEcucmV0dXJuIGFcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEYuYXBwbHkgKGZzdCB0ZikgKGZzdCB0eCksIEcuYXBwbHkgKHNuZCB0ZikgKHNuZCB0eClcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBGLm1hcCB+ZiAoZnN0IHQpLCBHLm1hcCB+ZiAoc25kIHQpXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG4iLCIoKiBbQnl0ZXMwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5XG4gICBkZWZpbmVkIGluIHRlcm1zIG9mIFtDYW1sLkJ5dGVzXS4gW0J5dGVzMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzXG4gICB0aGUgcGFydCBvZiBbQ2FtbC5CeXRlc10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gYnl0ZXMwLm1sIHNob3VsZCB1c2UgW0NhbWwuQnl0ZXNdLiBbQnl0ZXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kXG4gICBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkJ5dGVzXSBpblxuICAgYnVpbGQgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQnl0ZXMgID0gQnl0ZXMwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEJ5dGVzID0gQnl0ZXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkJ5dGVzXS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgICAgICAgIDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcblxuICAoKiBbdW5zYWZlX2JsaXRfc3RyaW5nXSBpcyBub3QgZXhwb3J0ZWQgaW4gdGhlIFtzdGRsaWJdIHNvIHdlIGV4cG9ydCBpdCBoZXJlICopXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIDogIHNyYzpzdHJpbmdcbiAgICAtPiBzcmNfcG9zOmludFxuICAgIC0+IGRzdDpieXRlc1xuICAgIC0+IGRzdF9wb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZW5kXG5cbmluY2x1ZGUgUHJpbWl0aXZlc1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IGJsaXQgPSBDYW1sLkJ5dGVzLmJsaXRcbmxldCBibGl0X3N0cmluZyA9IENhbWwuQnl0ZXMuYmxpdF9zdHJpbmdcbmxldCBjb21wYXJlID0gQ2FtbC5CeXRlcy5jb21wYXJlXG5sZXQgY29weSA9IENhbWwuQnl0ZXMuY29weVxubGV0IGNyZWF0ZSA9IENhbWwuQnl0ZXMuY3JlYXRlXG5sZXQgZmlsbCA9IENhbWwuQnl0ZXMuZmlsbFxubGV0IG1ha2UgPSBDYW1sLkJ5dGVzLm1ha2VcbmxldCBtYXAgPSBDYW1sLkJ5dGVzLm1hcFxubGV0IG1hcGkgPSBDYW1sLkJ5dGVzLm1hcGlcbmxldCBzdWIgPSBDYW1sLkJ5dGVzLnN1YlxubGV0IHVuc2FmZV9ibGl0ID0gQ2FtbC5CeXRlcy51bnNhZmVfYmxpdFxubGV0IHRvX3N0cmluZyA9IENhbWwuQnl0ZXMudG9fc3RyaW5nXG5sZXQgb2Zfc3RyaW5nID0gQ2FtbC5CeXRlcy5vZl9zdHJpbmdcbmxldCB1bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnMgPSBDYW1sLkJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xubGV0IHVuc2FmZV9vZl9zdHJpbmdfcHJvbWlzZV9ub19tdXRhdGlvbiA9IENhbWwuQnl0ZXMudW5zYWZlX29mX3N0cmluZ1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAnd2l0bmVzcykgdCA9XG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICB9XG5cbnR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSB0LCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2ZjID0gc2lnXG4gIHR5cGUgY29tcGFyYWJsZV90XG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IGNvbXBhcmFibGVfdFxuZW5kXG5cbm1vZHVsZSBNb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2IpXG5lbmRcblxubGV0IG1ha2UgKHR5cGUgdCkgfmNvbXBhcmUgfnNleHBfb2ZfdCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBjb21wYXJhYmxlX3QgPSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0geyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmQgOiBTX2ZjXG4gICAgd2l0aCB0eXBlIGNvbXBhcmFibGVfdCA9IHQpXG47O1xuXG5tb2R1bGUgU190b19TMSAoUyA6IFMpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IFMudFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFMuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgb3BlbiBTXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChNIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgc2V4cF9vZl90IDogJ2EgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgaW5jbHVkZSBNYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gU2V4cC5BdG9tIFwiX1wiXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgY29tcGFyYXRvciAtPiAoJ2EgdCwgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZCAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXBfYSkgY29tcGFyYXRvclxuICAgIC0+ICgnYiwgJ2NtcF9iKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgJ2IpIHQsICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQyIChNIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgYiA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICA7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IGIuc2V4cF9vZl90XG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWRfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgXykgdCwgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZF9waGFudG9tIChNIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdhLCBfKSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICdjbXBfYSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCB9XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnZiwgJ3MpIHQgPVxuICB8IEZpcnN0IG9mICdmXG4gIHwgU2Vjb25kIG9mICdzXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6XG4gICdmICdzLiAoJ2YgLT4gJ2YgLT4gaW50KSAtPiAoJ3MgLT4gJ3MgLT4gaW50KSAtPiAoJ2YsICdzKSB0IC0+ICgnZiwgJ3MpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2YgX2NtcF9fcyBhX18wMDFfIGJfXzAwMl8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAxXyBiX18wMDJfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICB8IEZpcnN0IF9hX18wMDNfLCBGaXJzdCBfYl9fMDA0XyAtPiBfY21wX19mIF9hX18wMDNfIF9iX18wMDRfXG4gICAgfCBGaXJzdCBfLCBfIC0+IC0xXG4gICAgfCBfLCBGaXJzdCBfIC0+IDFcbiAgICB8IFNlY29uZCBfYV9fMDA1XywgU2Vjb25kIF9iX18wMDZfIC0+IF9jbXBfX3MgX2FfXzAwNV8gX2JfXzAwNl8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGYgcy5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGYgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGYsIHMpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9mIF9oYXNoX2ZvbGRfcyBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgRmlyc3QgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2YgaHN2IF9hMFxuICB8IFNlY29uZCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfcyBoc3YgX2EwXG47O1xuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2YgJ3MuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2YpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3MpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2YsICdzKSB0XG4gID1cbiAgZnVuICh0eXBlIGZfXzAyM18gc19fMDI0XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGZfXzAyM18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gc19fMDI0XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGZfXzAyM18sIHNfXzAyNF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDExXyA9IFwiZWl0aGVyMC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2ZfXzAwN18gX29mX3NfXzAwOF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfZl9fMDA3XyBhcmcwX18wMTZfIGluXG4gICAgICAgICAgIEZpcnN0IHJlczBfXzAxN19cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIF90YWdfXzAxOV8pIDo6IHNleHBfYXJnc19fMDIwXykgYXNcbiAgICAgICAgX3NleHBfXzAxOF8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDIwXyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDIxXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX3NfXzAwOF8gYXJnMF9fMDIxXyBpblxuICAgICAgICAgICBTZWNvbmQgcmVzMF9fMDIyX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTlfXG4gICAgICAgICAgICAgX3NleHBfXzAxOF8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2YgJ3MuXG4gICgnZiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnZiwgJ3MpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGZfXzAzMV8gc19fMDMyXylcbiAgICAgIDogICgoZl9fMDMxXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMzJfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoZl9fMDMxXywgc19fMDMyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9mX18wMjVfIF9vZl9zX18wMjZfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IGFyZzBfXzAyN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyOF8gPSBfb2ZfZl9fMDI1XyBhcmcwX18wMjdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkZpcnN0XCI7IHJlczBfXzAyOF8gXVxuICAgICAgfCBTZWNvbmQgYXJnMF9fMDI5XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMwXyA9IF9vZl9zX18wMjZfIGFyZzBfXzAyOV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2Vjb25kXCI7IHJlczBfXzAzMF8gXVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgJ2YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gJ3MgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gKCdmLCAncykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgPVxuICBmdW4gXydmX3NleHBfZ3JhbW1hciBfJ3Nfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJGaXJzdFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nZl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiU2Vjb25kXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydzX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuIiwiKCogVGhlIHR5cGUgW3RdIHNob3VsZCBiZSBhYnN0cmFjdCB0byBtYWtlIHRoZSBmc2V0IGFuZCBzZXQgZnVuY3Rpb25zIHVuYXZhaWxhYmxlXG4gICBmb3IgcHJpdmF0ZSB0eXBlcyBhdCB0aGUgbGV2ZWwgb2YgdHlwZXMgKGFuZCBub3QgYnkgcHV0dGluZyBOb25lIGluIHRoZSBmaWVsZCkuXG4gICBVbmZvcnR1bmF0ZWx5LCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QgbWVhbnMgdGhhdCB3aGVuIGNyZWF0aW5nIGZpZWxkcyAodGhyb3VnaFxuICAgYSBbY3JlYXRlXSBmdW5jdGlvbikgdmFsdWUgcmVzdHJpY3Rpb24ga2lja3MgaW4uIFRoaXMgaXMgd29ya2VkIGFyb3VuZCBieSBpbnN0ZWFkXG4gICBub3QgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0LCBidXQgZm9yY2luZyBhbnlvbmUgYnJlYWtpbmcgdGhlIGFic3RyYWN0aW9uIHRvIHVzZVxuICAgdGhlIFtGb3JfZ2VuZXJhdGVkX2NvZGVdIG1vZHVsZSwgbWFraW5nIGl0IG9idmlvdXMgdG8gYW55IHJlYWRlciB0aGF0IHNvbWV0aGluZyB1Z2x5XG4gICBpcyBnb2luZyBvbi5cbiAgIHRfd2l0aF9wZXJtIChhbmQgZGVyaXZhdGl2ZXMpIGlzIHRoZSB0eXBlIHRoYXQgdXNlcnMgcmVhbGx5IHVzZS4gSXQgaXMgYSBjb25zdHJ1Y3RvclxuICAgYmVjYXVzZTpcbiAgIDEuIGl0IG1ha2VzIHR5cGUgZXJyb3JzIG1vcmUgcmVhZGFibGUgKGxlc3MgYWxpYXNpbmcpXG4gICAyLiB0aGUgdHlwZXIgaW4gb2NhbWwgNC4wMSBhbGxvd3MgdGhpczpcblxuICAge1tcbiAgICAgbW9kdWxlIEEgPSBzdHJ1Y3RcbiAgICAgICB0eXBlIHQgPSB7YSA6IGludH1cbiAgICAgZW5kXG4gICAgIHR5cGUgdCA9IEEudFxuICAgICBsZXQgZiAoeCA6IHQpID0geC5hXG4gICBdfVxuXG4gICAoYWx0aG91Z2ggd2l0aCBXYXJuaW5nIDQwOiBhIGlzIHVzZWQgb3V0IG9mIHNjb3BlKVxuICAgd2hpY2ggbWVhbnMgdGhhdCBpZiBbdF93aXRoX3Blcm1dIHdhcyByZWFsbHkgYW4gYWxpYXMgb24gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSxcbiAgIHBlb3BsZSBjb3VsZCBzYXkgW3Quc2V0dGVyXSBhbmQgYnJlYWsgdGhlIGFic3RyYWN0aW9uIHdpdGggbm8gaW5kaWNhdGlvbiB0aGF0XG4gICBzb21ldGhpbmcgdWdseSBpcyBnb2luZyBvbiBpbiB0aGUgc291cmNlIGNvZGUuXG4gICBUaGUgd2FybmluZyBpcyAoSSB0aGluaykgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBtYWtlIHRoZWlyIGNvZGUgY29tcGF0aWJsZSB3aXRoXG4gICBwcmV2aW91cyB2ZXJzaW9ucyBvZiBvY2FtbCwgc28gd2UgbWF5IHZlcnkgd2VsbCB0dXJuIGl0IG9mZi5cblxuICAgVGhlIHR5cGUgdF93aXRoX3Blcm0gY291bGQgYWxzbyBoYXZlIGJlZW4gYSBbdW5pdCAtPiBGb3JfZ2VuZXJhdGVkX2NvZGUudF0gdG8gd29ya1xuICAgYXJvdW5kIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCB0aGVuIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0gd291bGQgaGF2ZSBiZWVuIGEgcHJvcGVyXG4gICBhYnN0cmFjdCB0eXBlLCBidXQgaXQgbG9va3MgbGlrZSBpdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2UgKGZvciBleGFtcGxlLCBhIGZvbGQgb24gYVxuICAgcmVjb3JkIHR5cGUgd2l0aCA0MCBmaWVsZHMgd291bGQgYWN0dWFsbHkgYWxsb2NhdGUgdGhlIDQwIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0ncyBhdFxuICAgZXZlcnkgc2luZ2xlIGZvbGQuKSAqKVxuXG5tb2R1bGUgRm9yX2dlbmVyYXRlZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHQgPVxuICAgIHsgZm9yY2VfdmFyaWFuY2UgOiAncGVybSAtPiB1bml0XG4gICAgOyAoKiBmb3JjZSBbdF0gdG8gYmUgY29udHJhdmFyaWFudCBpbiBbJ3Blcm1dLCBiZWNhdXNlIHBoYW50b20gdHlwZSB2YXJpYWJsZXMgb25cbiAgICAgICAgIGNvbmNyZXRlIHR5cGVzIGRvbid0IHdvcmsgdGhhdCB3ZWxsIG90aGVyd2lzZSAodXNpbmcgOj4gY2FuIHJlbW92ZSB0aGVtIGVhc2lseSkgKilcbiAgICAgIG5hbWUgOiBzdHJpbmdcbiAgICA7IHNldHRlciA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb25cbiAgICA7IGdldHRlciA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgOyBmc2V0IDogJ3JlY29yZCAtPiAnZmllbGQgLT4gJ3JlY29yZFxuICAgIH1cblxuICBsZXQgb3BhcXVlX2lkZW50aXR5ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHlcbmVuZFxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSA9XG4gIHwgRmllbGQgb2YgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIEZvcl9nZW5lcmF0ZWRfY29kZS50XG5bQEB1bmJveGVkXVxuXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHQgPSAoWyBgUmVhZCB8IGBTZXRfYW5kX2NyZWF0ZSBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHJlYWRvbmx5X3QgPSAoWyBgUmVhZCBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG5cbmxldCBuYW1lIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5uYW1lXG5sZXQgZ2V0IChGaWVsZCBmaWVsZCkgciA9IGZpZWxkLmdldHRlciByXG5sZXQgZnNldCAoRmllbGQgZmllbGQpIHIgdiA9IGZpZWxkLmZzZXQgciB2XG5sZXQgc2V0dGVyIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5zZXR0ZXJcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdyZXN1bHQpIHVzZXIgPVxuICB7IGYgOiAnZmllbGQuICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSAtPiAncmVzdWx0IH1cblxubGV0IG1hcCAoRmllbGQgZmllbGQpIHIgfmYgPSBmaWVsZC5mc2V0IHIgKGYgKGZpZWxkLmdldHRlciByKSlcblxubGV0IHVwZGF0ZXIgKEZpZWxkIGZpZWxkKSA9XG4gIG1hdGNoIGZpZWxkLnNldHRlciB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzZXR0ZXIgLT4gU29tZSAoZnVuIHIgfmYgLT4gc2V0dGVyIHIgKGYgKGZpZWxkLmdldHRlciByKSkpXG47O1xuIiwiKCogW1N0cmluZzBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW0NhbWwuU3RyaW5nXS4gW1N0cmluZzBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZlxuICAgW0NhbWwuU3RyaW5nXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN0cmluZzAubWwgc2hvdWxkXG4gICB1c2UgW0NhbWwuU3RyaW5nXS4gIFtTdHJpbmcwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3NcbiAgIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MsIGluY2x1ZGluZyB0aGUgc3Vic2NyaXB0IHN5bnRheFxuICAgW3guKGkpXSBvciBbeC4oaSkgPC0gZV0gd2hpY2ggdGhlIE9DYW1sIHBhcnNlciBkZXN1Z2FycyBpbnRvIGNhbGxzIHRvXG4gICBbU3RyaW5nXSwgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN0cmluZ10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG5cbiAgIHtbXG4gICAgIG1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIFN0cmluZyA9IFN0cmluZzBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuU3RyaW5nXS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0ICAgICAgICA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5lbmRcblxuaW5jbHVkZSBTdHJpbmdcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCAoIF4gKSA9ICggXiApXG5sZXQgY2FwaXRhbGl6ZSA9IENhbWwuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbmxldCBjb21wYXJlID0gQ2FtbC5TdHJpbmcuY29tcGFyZVxuXG5sZXQgY29weSB4ID1cbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOlxuICAgICAgKEJ5dGVzLm9mX3N0cmluZyB4KVxuOztcblxubGV0IGVzY2FwZWQgPSBDYW1sLlN0cmluZy5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gQ2FtbC5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG5sZXQgbWFrZSA9IENhbWwuU3RyaW5nLm1ha2VcbmxldCBzdWIgPSBDYW1sLlN0cmluZy5zdWJcbmxldCB1bmNhcGl0YWxpemUgPSBDYW1sLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbmxldCB1bnNhZmVfYmxpdCA9IENhbWwuU3RyaW5nLnVuc2FmZV9ibGl0XG5sZXQgdXBwZXJjYXNlID0gQ2FtbC5TdHJpbmcudXBwZXJjYXNlX2FzY2lpXG5cbmxldCBjb25jYXQgPyhzZXAgPSBcIlwiKSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCJcIlxuICAoKiBUaGUgc3RkbGliIGRvZXMgbm90IHNwZWNpYWxpemUgdGhpcyBjYXNlIGJlY2F1c2UgaXQgY291bGQgYnJlYWsgZXhpc3RpbmcgcHJvamVjdHMuICopXG4gIHwgWyB4IF0gLT4geFxuICB8IGwgLT4gQ2FtbC5TdHJpbmcuY29uY2F0IH5zZXAgbFxuOztcblxuKCogVGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5sZXQgaXRlciB0IH5mID0gQ2FtbC5TdHJpbmcuaXRlciB0IH5mXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBDYW1sLkxleGluZy5wb3NpdGlvbiA9XG4gICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICA7IHBvc19sbnVtIDogaW50XG4gICAgOyBwb3NfYm9sIDogaW50XG4gICAgOyBwb3NfY251bSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAxXyBiX18wMDJfXG4gICAgICAgdGhlbiAwXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBtYXRjaCBjb21wYXJlX3N0cmluZyBhX18wMDFfLnBvc19mbmFtZSBiX18wMDJfLnBvc19mbmFtZSB3aXRoXG4gICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2xudW0gYl9fMDAyXy5wb3NfbG51bSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2JvbCBiX18wMDJfLnBvc19ib2wgd2l0aFxuICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2NudW0gYl9fMDAyXy5wb3NfY251bVxuICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBmdW4gaHN2IGFyZyAtPlxuICAgICAgbGV0IGhzdiA9XG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgYXJnLnBvc19mbmFtZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19sbnVtXG4gICAgICAgIGluXG4gICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfYm9sXG4gICAgICBpblxuICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19jbnVtXG4gIDs7XG5cbiAgbGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jIGFyZyA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICAgIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1biB7IHBvc19mbmFtZSA9IHBvc19mbmFtZV9fMDA0X1xuICAgICAgICAgOyBwb3NfbG51bSA9IHBvc19sbnVtX18wMDZfXG4gICAgICAgICA7IHBvc19ib2wgPSBwb3NfYm9sX18wMDhfXG4gICAgICAgICA7IHBvc19jbnVtID0gcG9zX2NudW1fXzAxMF9cbiAgICAgICAgIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDNfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDExXyA9IHNleHBfb2ZfaW50IHBvc19jbnVtX18wMTBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19jbnVtXCI7IGFyZ19fMDExXyBdIDo6IGJuZHNfXzAwM19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwOV8gPSBzZXhwX29mX2ludCBwb3NfYm9sX18wMDhfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19ib2xcIjsgYXJnX18wMDlfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IHBvc19sbnVtX18wMDZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19sbnVtXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX3N0cmluZyBwb3NfZm5hbWVfXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2ZuYW1lXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAzX1xuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIFRoaXMgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgUHB4X2hlcmUubGlmdF9wb3NpdGlvbl9hc19zdHJpbmcuICopXG5sZXQgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFsgcG9zX2ZuYW1lOyBcIjpcIjsgSW50LnRvX3N0cmluZyBwb3NfbG51bTsgXCI6XCI7IEludC50b19zdHJpbmcgKHBvc19jbnVtIC0gcG9zX2JvbCkgXVxuOztcblxubGV0IHRvX3N0cmluZyB7IENhbWwuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sIH0gPVxuICBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2xcbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlzdDBcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IGZzdCBzbmQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV2IGZzdCwgcmV2IHNuZFxuICAgIHwgeCA6OiB0IC0+XG4gICAgICAobWF0Y2ggKGYgeCA6IF8gRWl0aGVyMC50KSB3aXRoXG4gICAgICAgfCBGaXJzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZFxuICAgICAgIHwgU2Vjb25kIHkgLT4gbG9vcCB0IGZzdCAoeSA6OiBzbmQpKVxuICBpblxuICBsb29wIHQgW10gW11cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIENhbWwucmVzdWx0ID1cbiAgfCBPayBvZiAnYVxuICB8IEVycm9yIG9mICdiXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cblxubGV0IHRfb2Zfc2V4cCA6XG4gICdhICdiLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdhLCAnYikgdFxuICA9XG4gIGZ1biAodHlwZSBhX18wMTdfIGJfXzAxOF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMTdfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChhX18wMTdfLCBiX18wMThfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcInJlc3VsdC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwib2tcIiB8IFwiT2tcIikgYXMgX3RhZ19fMDA4XykgOjogc2V4cF9hcmdzX18wMDlfKSBhc1xuICAgICAgICBfc2V4cF9fMDA3XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMDlfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTBfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxMV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMTBfIGluXG4gICAgICAgICAgIE9rIHJlczBfXzAxMV9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDA4X1xuICAgICAgICAgICAgIF9zZXhwX18wMDdfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBfdGFnX18wMTNfKSA6OiBzZXhwX2FyZ3NfXzAxNF8pIGFzXG4gICAgICAgIF9zZXhwX18wMTJfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE2XyA9IF9vZl9iX18wMDJfIGFyZzBfXzAxNV8gaW5cbiAgICAgICAgICAgRXJyb3IgcmVzMF9fMDE2X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMTNfXG4gICAgICAgICAgICAgX3NleHBfXzAxMl8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJva1wiIHwgXCJPa1wiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMjVfIGJfXzAyNl8pXG4gICAgICA6ICAoKGFfXzAyNV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDI2XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAyNV8sIGJfXzAyNl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDE5XyBfb2ZfYl9fMDIwXyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMjFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMjJfIF1cbiAgICAgIHwgRXJyb3IgYXJnMF9fMDIzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI0XyA9IF9vZl9iX18wMjBfIGFyZzBfXzAyM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXJyb3JcIjsgcmVzMF9fMDI0XyBdXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIk9rXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJFcnJvclwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDI3XyBiX18wMjhfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAyN18gYl9fMDI4X1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDI3XywgYl9fMDI4XyB3aXRoXG4gICAgfCBPayBfYV9fMDI5XywgT2sgX2JfXzAzMF8gLT4gX2NtcF9fYSBfYV9fMDI5XyBfYl9fMDMwX1xuICAgIHwgT2sgXywgXyAtPiAtMVxuICAgIHwgXywgT2sgXyAtPiAxXG4gICAgfCBFcnJvciBfYV9fMDMxXywgRXJyb3IgX2JfXzAzMl8gLT4gX2NtcF9fYiBfYV9fMDMxXyBfYl9fMDMyXylcbjs7XG5cbmxldCBlcXVhbCA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBib29sXG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMzNfIGJfXzAzNF8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDMzXyBiX18wMzRfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMzNfLCBiX18wMzRfIHdpdGhcbiAgICB8IE9rIF9hX18wMzVfLCBPayBfYl9fMDM2XyAtPiBfY21wX19hIF9hX18wMzVfIF9iX18wMzZfXG4gICAgfCBPayBfLCBfIC0+IGZhbHNlXG4gICAgfCBfLCBPayBfIC0+IGZhbHNlXG4gICAgfCBFcnJvciBfYV9fMDM3XywgRXJyb3IgX2JfXzAzOF8gLT4gX2NtcF9fYiBfYV9fMDM3XyBfYl9fMDM4Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgYSBiLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoYSwgYikgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBPayBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gIHwgRXJyb3IgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuOztcblxuW0BAQGVuZF1cblxuaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgcmV0dXJuIHggPSBPayB4XG4gIGVuZClcblxubGV0IGludmFyaWFudCBjaGVja19vayBjaGVja19lcnJvciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgb2sgLT4gY2hlY2tfb2sgb2tcbiAgfCBFcnJvciBlcnJvciAtPiBjaGVja19lcnJvciBlcnJvclxuOztcblxubGV0IGZhaWwgeCA9IEVycm9yIHhcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcblxubGV0IG1hcF9lcnJvciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgXyBhcyB4IC0+IHhcbiAgfCBFcnJvciB4IC0+IEVycm9yIChmIHgpXG47O1xuXG5tb2R1bGUgRXJyb3IgPSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9rIF8gYXMgb2sgLT4gb2tcbiAgICAgIHwgRXJyb3IgZSAtPiBmIGVcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwX2Vycm9yXG4gICAgbGV0IHJldHVybiBlID0gRXJyb3IgZVxuICBlbmQpXG5cbmxldCBpc19vayA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IGZhbHNlXG4gIHwgRXJyb3IgXyAtPiB0cnVlXG47O1xuXG5sZXQgb2sgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gU29tZSB4XG4gIHwgRXJyb3IgXyAtPiBOb25lXG47O1xuXG5sZXQgZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gTm9uZVxuICB8IEVycm9yIHggLT4gU29tZSB4XG47O1xuXG5sZXQgb2Zfb3B0aW9uIG9wdCB+ZXJyb3IgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPiBFcnJvciBlcnJvclxuOztcblxubGV0IGl0ZXIgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIHggLT4gZiB4XG4gIHwgRXJyb3IgXyAtPiAoKVxuOztcblxubGV0IGl0ZXJfZXJyb3IgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIF8gLT4gKClcbiAgfCBFcnJvciB4IC0+IGYgeFxuOztcblxubGV0IHRvX2VpdGhlciA6IF8gdCAtPiBfIEVpdGhlci50ID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IEZpcnN0IHhcbiAgfCBFcnJvciB4IC0+IFNlY29uZCB4XG47O1xuXG5sZXQgb2ZfZWl0aGVyIDogXyBFaXRoZXIudCAtPiBfIHQgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gT2sgeFxuICB8IFNlY29uZCB4IC0+IEVycm9yIHhcbjs7XG5cbmxldCBva19pZl90cnVlIGJvb2wgfmVycm9yID0gaWYgYm9vbCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JcblxubGV0IHRyeV93aXRoIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgb2tfb3JfZmFpbHdpdGggPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIHN0ciAtPiBmYWlsd2l0aCBzdHJcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ29rLCAnZXJyKSBfcmVzdWx0ID0gKCdvaywgJ2VycikgdCA9XG4gICAgfCBPayBvZiAnb2tcbiAgICB8IEVycm9yIG9mICdlcnJcblxuICBsZXQgaXNfZXJyb3IgPSBpc19lcnJvclxuICBsZXQgaXNfb2sgPSBpc19va1xuZW5kXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBPayBfLCBFcnJvciBlIHwgRXJyb3IgZSwgT2sgXyAtPiBFcnJvciBlXG4gIHwgT2sgb2sxLCBPayBvazIgLT4gT2sgKG9rIG9rMSBvazIpXG4gIHwgRXJyb3IgZXJyMSwgRXJyb3IgZXJyMiAtPiBFcnJvciAoZXJyIGVycjEgZXJyMilcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdDEucGFydGl0aW9uX21hcCBsIH5mOnRvX2VpdGhlciBpblxuICBtYXRjaCBlcnJzIHdpdGhcbiAgfCBbXSAtPiBPayBva1xuICB8IF8gOjogXyAtPiBFcnJvciBlcnJzXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gbWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5nIGZvciBleHBvcnQgb25seSAqKVxubGV0IG9rX2ZzdCA9IHRvX2VpdGhlclxuIiwiKCoqIFByb3ZpZGVzIGdlbmVyaWMgc2lnbmF0dXJlcyBmb3IgY29udGFpbmVyIGRhdGEgc3RydWN0dXJlcy5cblxuICAgIFRoZXNlIHNpZ25hdHVyZXMgaW5jbHVkZSBmdW5jdGlvbnMgKFtpdGVyXSwgW2ZvbGRdLCBbZXhpc3RzXSwgW2Zvcl9hbGxdLCAuLi4pIHRoYXRcbiAgICB5b3Ugd291bGQgZXhwZWN0IHRvIGZpbmQgaW4gYW55IGNvbnRhaW5lci4gVXNlZCBieSBpbmNsdWRpbmcgW0NvbnRhaW5lci5TMF0gb3JcbiAgICBbQ29udGFpbmVyLlMxXSBpbiB0aGUgc2lnbmF0dXJlIGZvciBldmVyeSBjb250YWluZXItbGlrZSBkYXRhIHN0cnVjdHVyZSAoW0FycmF5XSxcbiAgICBbTGlzdF0sIFtTdHJpbmddLCAuLi4pIHRvIGVuc3VyZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiogW0NvbnRpbnVlX29yX3N0b3AudF0gaXMgdXNlZCBieSB0aGUgW2ZdIGFyZ3VtZW50IHRvIFtmb2xkX3VudGlsXSBpbiBvcmRlciB0b1xuICAgICAgaW5kaWNhdGUgd2hldGhlciBmb2xkaW5nIHNob3VsZCBjb250aW51ZSwgb3Igc3RvcCBlYXJseS5cblxuICAgICAgQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG4gICopXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHwgQ29udGludWUgb2YgJ2FcbiAgICAgIHwgU3RvcCBvZiAnYlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5TdW1tYWJsZSAqKVxubW9kdWxlIHR5cGUgU3VtbWFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCoqIFRoZSByZXN1bHQgb2Ygc3VtbWluZyBubyB2YWx1ZXMuICopXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqKiBBbiBvcGVyYXRpb24gdGhhdCBjb21iaW5lcyB0d28gW3RdJ3MgYW5kIGhhbmRsZXMgW3plcm8gKyB4XSBieSBqdXN0IHJldHVybmluZyBbeF0sXG4gICAgICBhcyB3ZWxsIGFzIGluIHRoZSBzeW1tZXRyaWMgY2FzZS4gKilcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBtb25vbW9ycGhpYyBjb250YWluZXIgLSBhIGNvbnRhaW5lciBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IHR5cGUsIGUuZy4sXG4gICAgc3RyaW5nLCB3aGljaCBpcyBhIGNvbnRhaW5lciBvZiBjaGFyYWN0ZXJzIChbdHlwZSBlbHQgPSBjaGFyXSkgYW5kIG5ldmVyIG9mIGFueXRoaW5nXG4gICAgZWxzZS4gKilcbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGVsdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICAoKiogW2l0ZXJdIG11c3QgYWxsb3cgZXhjZXB0aW9ucyByYWlzZWQgaW4gW2ZdIHRvIGVzY2FwZSwgdGVybWluYXRpbmcgdGhlIGl0ZXJhdGlvblxuICAgICAgY2xlYW5seS4gIFRoZSBzYW1lIGhvbGRzIGZvciBhbGwgZnVuY3Rpb25zIGJlbG93IHRha2luZyBhbiBbZl0uICopXG4gIHZhbCBpdGVyIDogdCAtPiBmOihlbHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gdCAtPiBmOihlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gZWx0IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6IHQgLT4gZjooZWx0IC0+ICdhIG9wdGlvbikgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AuIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZVxuICAgICAgY29tcGxleGl0eSBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGNvbXBhcmU6KGVsdCAtPiBlbHQgLT4gaW50KSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGNvbXBhcmU6KGVsdCAtPiBlbHQgLT4gaW50KSAtPiBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlICdhIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IF8gdCAtPiBlbHQgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IF8gdCAtPiBib29sXG4gIHZhbCBpdGVyIDogXyB0IC0+IGY6KGVsdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IF8gdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICBfIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IF8gdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IF8gdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlXG4gICAgICBlbGVtZW50cyB3aWxsIGJlIHN1bW1lZCBpcyB1bnNwZWNpZmllZC4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiBfIHQgLT4gZjooZWx0IC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IF8gdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gZWx0IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6IF8gdCAtPiBmOihlbHQgLT4gJ2Egb3B0aW9uKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IF8gdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiBfIHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiAqKVxuICB2YWwgbWluX2VsdCA6IF8gdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogXyB0IC0+IGNvbXBhcmU6KGVsdCAtPiBlbHQgLT4gaW50KSAtPiBlbHQgb3B0aW9uXG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgcG9seW1vcnBoaWMgY29udGFpbmVyLCBlLmcuLCBbJ2EgbGlzdF0gb3IgWydhIGFycmF5XS4gKilcbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgLT4gZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdICAqKVxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+ICdhIHQgLT4gZjooJ2EgLT4gJ3N1bSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogJ2EgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluaW11bSAocmVzcCBtYXhpbXVtKSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkXG4gICAgICBbY29tcGFyZV0gZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0XG4gICAgICBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiAqKVxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMV9waGFudG9tX2ludmFyaWFudCA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ3N1bSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHlcbiAgICAgIGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgKydwaGFudG9tKSB0XG5cbiAgaW5jbHVkZSBTMV9waGFudG9tX2ludmFyaWFudCB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpYyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBpbnRcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiAnYSB0IC0+IGY6KCdhIGVsdCAtPiAnc3VtKSAtPiAnc3VtXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogJ2EgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2EgZWx0IC0+IGludCkgLT4gJ2EgZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIEdlbmVyaWNfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooJ2EgZWx0IC0+ICdzdW0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBhcnJheVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2EgZWx0IC0+IGludCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2EgZWx0IC0+IGludCkgLT4gJ2EgZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX2FyZyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBUaGUgW2l0ZXJdIGFyZ3VtZW50IHRvIFtDb250YWluZXIuTWFrZV0gc3BlY2lmaWVzIGhvdyB0byBpbXBsZW1lbnQgdGhlXG4gICAgICBjb250YWluZXIncyBbaXRlcl0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmUgW2l0ZXJdXG4gICAgICB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGl0ZXIgdCB+ZiA9IENvbnRhaW5lci5pdGVyIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2l0ZXJdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2l0ZXJdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5XG4gICAgICBhcyB3ZWxsLiAqKVxuICB2YWwgaXRlciA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAnYSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0IF1cblxuICAoKiogVGhlIFtsZW5ndGhdIGFyZ3VtZW50IHRvIFtDb250YWluZXIuTWFrZV0gc3BlY2lmaWVzIGhvdyB0byBpbXBsZW1lbnQgdGhlXG4gICAgICBjb250YWluZXIncyBbbGVuZ3RoXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZVxuICAgICAgW2xlbmd0aF0gdmlhOlxuXG4gICAgICB7W1xuICAgICAgICBsZW5ndGggdCB+ZiA9IENvbnRhaW5lci5sZW5ndGggfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbbGVuZ3RoXSwgc28gcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFtsZW5ndGhdIHdpbGwgaW1wcm92ZSB0aGVpclxuICAgICAgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbGVuZ3RoIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gaW50IF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIE1vbmFkLklkZW50LnRcblxubW9kdWxlIHR5cGUgTWFrZTBfYXJnID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAnYSB0IDo9IHQgYW5kIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG5lbmRcblxubW9kdWxlIHR5cGUgQ29udGFpbmVyID0gc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBTMFxuICBtb2R1bGUgdHlwZSBTMF9waGFudG9tID0gUzBfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b21faW52YXJpYW50ID0gUzFfcGhhbnRvbV9pbnZhcmlhbnRcbiAgbW9kdWxlIHR5cGUgUzFfcGhhbnRvbSA9IFMxX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgR2VuZXJpYyA9IEdlbmVyaWNcbiAgbW9kdWxlIHR5cGUgR2VuZXJpY19waGFudG9tID0gR2VuZXJpY19waGFudG9tXG4gIG1vZHVsZSB0eXBlIFN1bW1hYmxlID0gU3VtbWFibGVcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbZm9sZF0uXG5cbiAgICAgIEUuZy46IFtpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSldLiAqKVxuXG4gIHR5cGUgKCd0LCAnYSwgJ2FjY3VtKSBmb2xkID0gJ3QgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG4gIHR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdHlwZSAndCBsZW5ndGggPSAndCAtPiBpbnRcblxuICB2YWwgaXRlciA6IGZvbGQ6KCd0LCAnYSwgdW5pdCkgZm9sZCAtPiAoJ3QsICdhKSBpdGVyXG4gIHZhbCBjb3VudCA6IGZvbGQ6KCd0LCAnYSwgaW50KSBmb2xkIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBtaW5fZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGxlbmd0aCA6IGZvbGQ6KCd0LCBfLCBpbnQpIGZvbGQgLT4gJ3QgLT4gaW50XG4gIHZhbCB0b19saXN0IDogZm9sZDooJ3QsICdhLCAnYSBsaXN0KSBmb2xkIC0+ICd0IC0+ICdhIGxpc3RcblxuICB2YWwgc3VtXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnc3VtKSBmb2xkXG4gICAgLT4gKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gJ3RcbiAgICAtPiBmOignYSAtPiAnc3VtKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdiKSBmb2xkXG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICd0XG4gICAgLT4gKCdiLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2IpIGZvbGRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAndFxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBHZW5lcmljIGRlZmluaXRpb25zIG9mIGNvbnRhaW5lciBvcGVyYXRpb25zIGluIHRlcm1zIG9mIFtpdGVyXSBhbmQgW2xlbmd0aF0uICopXG4gIHZhbCBpc19lbXB0eSA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBib29sXG5cbiAgdmFsIGV4aXN0cyA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZpbmQgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fYXJyYXkgOiBsZW5ndGg6J3QgbGVuZ3RoIC0+IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiAnYSBhcnJheVxuXG4gICgqKiBUaGUgaWRpb20gZm9yIHVzaW5nIFtDb250YWluZXIuTWFrZV0gaXMgdG8gYmluZCB0aGUgcmVzdWx0aW5nIG1vZHVsZSBhbmQgdG9cbiAgICAgIGV4cGxpY2l0bHkgaW1wb3J0IGVhY2ggb2YgdGhlIGZ1bmN0aW9ucyB0aGF0IG9uZSB3YW50czpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICAgIGxldCBjb3VudCAgICA9IEMuY291bnRcbiAgICAgICAgbGV0IGV4aXN0cyAgID0gQy5leGlzdHNcbiAgICAgICAgbGV0IGZpbmQgICAgID0gQy5maW5kXG4gICAgICAgICgqIC4uLiAqKVxuICAgICAgXX1cblxuICAgICAgVGhpcyBpcyBwcmVmZXJhYmxlIHRvOlxuXG4gICAgICB7W1xuICAgICAgICBpbmNsdWRlIENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgIF19XG5cbiAgICAgIGJlY2F1c2UgdGhlIFtpbmNsdWRlXSBtYWtlcyBpdCB0b28gZWFzeSB0byBzaGFkb3cgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgICBjb250YWluZXIgZnVuY3Rpb25zIChbbGVuZ3RoXSBiZWluZyBhIGNvbW1vbiBvbmUpLlxuXG4gICAgICBbQ29udGFpbmVyLk1ha2UwXSBpcyBsaWtlIFtDb250YWluZXIuTWFrZV0sIGJ1dCBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVycyBsaWtlXG4gICAgICBbc3RyaW5nXS4gKilcbiAgbW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcblxuICBtb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpIDogUzAgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gICAgR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIENvbnRhaW5lcl9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbnR5cGUgKCd0LCAnYSwgJ2FjY3VtKSBmb2xkID0gJ3QgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG50eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG50eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG5sZXQgaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXG5sZXQgY291bnQgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBhIC0+IGlmIGYgYSB0aGVuIG4gKyAxIGVsc2UgbilcblxubGV0IHN1bSAodHlwZSBhKSB+Zm9sZCAobW9kdWxlIE0gOiBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6TS56ZXJvIH5mOihmdW4gbiBhIC0+IE0uKCArICkgbiAoZiBhKSlcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgUmVzdWx0Lk9rXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBSZXN1bHQuT2sgeCAtPiB4XG4gICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiByZXR1cm4gZSkpKVxuOztcblxubGV0IGZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgfmZpbmlzaCB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgZmluaXNoXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBDb250aW51ZV9vcl9zdG9wLkNvbnRpbnVlIHggLT4geFxuICAgICAgICAgfCBTdG9wIHggLT4gcmV0dXJuIHgpKSlcbjs7XG5cbmxldCBtaW5fZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtaW4gLT4gaWYgY29tcGFyZSBtaW4gZWx0ID4gMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKVxuOztcblxubGV0IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1heCAtPiBpZiBjb21wYXJlIG1heCBlbHQgPCAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpXG47O1xuXG5sZXQgbGVuZ3RoIH5mb2xkIGMgPSBmb2xkIGMgfmluaXQ6MCB+ZjooZnVuIGFjYyBfIC0+IGFjYyArIDEpXG5cbmxldCBpc19lbXB0eSB+aXRlciBjID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4gXyAtPiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBleGlzdHMgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpXG47O1xuXG5sZXQgZm9yX2FsbCB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBub3QgKGYgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBmaW5kX21hcCB+aXRlciB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIChTb21lIHgpKTtcbiAgICBOb25lKVxuOztcblxubGV0IHRvX2xpc3QgfmZvbGQgYyA9IExpc3QucmV2IChmb2xkIGMgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCAtPiB4IDo6IGFjYykpXG5cbmxldCB0b19hcnJheSB+bGVuZ3RoIH5pdGVyIGMgPVxuICBsZXQgYXJyYXkgPSByZWYgW3x8XSBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGl0ZXIgYyB+ZjooZnVuIHggLT5cbiAgICBpZiAhaSA9IDAgdGhlbiBhcnJheSA6PSBBcnJheS5jcmVhdGUgfmxlbjoobGVuZ3RoIGMpIHg7XG4gICAgIWFycmF5LighaSkgPC0geDtcbiAgICBpbmNyIGkpO1xuICAhYXJyYXlcbjs7XG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOiBzaWdcbiAgaW5jbHVkZSBHZW5lcmljIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGZvbGQgPSBULmZvbGRcblxuICBsZXQgaXRlciA9XG4gICAgbWF0Y2ggVC5pdGVyIHdpdGhcbiAgICB8IGBDdXN0b20gaXRlciAtPiBpdGVyXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlciB+Zm9sZCB0IH5mXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9XG4gICAgbWF0Y2ggVC5sZW5ndGggd2l0aFxuICAgIHwgYEN1c3RvbSBsZW5ndGggLT4gbGVuZ3RoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgLT4gbGVuZ3RoIH5mb2xkIHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IGlzX2VtcHR5IH5pdGVyIHRcbiAgbGV0IHN1bSBtIHQgPSBzdW0gfmZvbGQgbSB0XG4gIGxldCBjb3VudCB0IH5mID0gY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHMgfml0ZXIgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbCB+aXRlciB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXAgfml0ZXIgdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gZmluZCB+aXRlciB0IH5mXG4gIGxldCB0b19saXN0IHQgPSB0b19saXN0IH5mb2xkIHRcbiAgbGV0IHRvX2FycmF5IHQgPSB0b19hcnJheSB+bGVuZ3RoIH5pdGVyIHRcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gZm9sZF9yZXN1bHQgdCB+Zm9sZCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBmb2xkX3VudGlsIHQgfmZvbGQgfmluaXQgfmYgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IGEgfmVxdWFsID0gZXhpc3RzIHQgfmY6KGVxdWFsIGEpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgZWx0ID0gZXhpc3RzIHQgfmY6KFQuRWx0LmVxdWFsIGVsdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENhbWwuTGF6eVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxhenlfdF9vZl9zZXhwXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9sYXp5X3RcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGF6eV90X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbWFwIHQgfmYgPSBsYXp5IChmIChmb3JjZSB0KSlcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIDAgZWxzZSBjb21wYXJlX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9IGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiB0cnVlIGVsc2UgZXF1YWxfYSAoZm9yY2UgdDEpIChmb3JjZSB0MilcbmxldCBoYXNoX2ZvbGRfdCA9IEhhc2guQnVpbHRpbi5oYXNoX2ZvbGRfbGF6eV90XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4geCA9IGZyb21fdmFsIHhcbiAgICBsZXQgYmluZCB0IH5mID0gbGF6eSAoZm9yY2UgKGYgKGZvcmNlIHQpKSlcbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIFRfdW5mb3JjaW5nID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgaXNfdmFsIHQgdGhlbiBzZXhwX29mX2EgKGZvcmNlIHQpIGVsc2Ugc2V4cF9vZl9zdHJpbmcgXCI8dW5mb3JjZWQgbGF6eT5cIlxuICA7O1xuZW5kXG4iLCIoKiBTcGxpdCBvZmYgdG8gYXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSB3aXRoIFtPcl9lcnJvcl0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5sZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBwb3NpdGlvbjogJWRcIiBwb3MgKCk7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBsZW5ndGg6ICVkXCIgbGVuICgpO1xuICAoKiBXZSB1c2UgW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IHRvdGFsX2xlbmd0aF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwb3MgKyBsZW4gcGFzdCBlbmQ6ICVkICsgJWQgPiAlZFwiIHBvcyBsZW4gdG90YWxfbGVuZ3RoICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgKCogVGhpcyBpcyBiZXR0ZXIgdGhhbiBbc2xvd19jaGVja19wb3NfbGVuX2V4bl0gZm9yIHR3byByZWFzb25zOlxuXG4gICAgIC0gbXVjaCBsZXNzIGlubGluZWQgY29kZVxuICAgICAtIG9ubHkgb25lIGNvbmRpdGlvbmFsIGp1bXBcblxuICAgICBUaGUgcmVhc29uIGl0IHdvcmtzIGlzIHRoYXQgY2hlY2tpbmcgWzwgMF0gaXMgdGVzdGluZyB0aGUgaGlnaGVzdCBvcmRlciBiaXQsIHNvXG4gICAgIFthIDwgMCB8fCBiIDwgMF0gaXMgdGhlIHNhbWUgYXMgW2EgbG9yIGIgPCAwXS5cblxuICAgICBbcG9zICsgbGVuXSBjYW4gb3ZlcmZsb3csIHNvIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIGlzIG5vdCBlcXVpdmFsZW50IHRvXG4gICAgIFt0b3RhbF9sZW5ndGggLSBsZW4gLSBwb3MgPCAwXSwgd2UgbmVlZCB0byB0ZXN0IGZvciBbcG9zICsgbGVuXSBvdmVyZmxvdyBhc1xuICAgICB3ZWxsLiAqKVxuICBsZXQgc3RvcCA9IHBvcyArIGxlbiBpblxuICBpZiBwb3MgbG9yIGxlbiBsb3Igc3RvcCBsb3IgKHRvdGFsX2xlbmd0aCAtIHN0b3ApIDwgMFxuICB0aGVuIHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGhcbjs7XG5cbmxldCBnZXRfcG9zX2xlbl9leG4gPyhwb3MgPSAwKSA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBpIC0+IGlcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBwb3MsIGxlblxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gPSBzbG93X2NoZWNrX3Bvc19sZW5fZXhuXG5lbmRcbiIsIlxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgb3BlbiBDYW1sLkJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gKGludDY0LCBpbnQ2NF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG4gIGxldCBvZl9zdGF0ZSA6IENhbWwuUmFuZG9tLlN0YXRlLnQgLT4gdCA9IENhbWwuT2JqLm1hZ2ljXG5lbmRcblxubGV0IGFzc2lnbiBkc3Qgc3JjID1cbiAgbGV0IGRzdCA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2UgZHN0KSBpblxuICBsZXQgc3JjID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBzcmMpIGluXG4gIENhbWwuQmlnYXJyYXkuQXJyYXkxLmJsaXQgc3JjIGRzdFxuXG5sZXQgbWFrZV9kZWZhdWx0IGRlZmF1bHQgPVxuICBsZXQgc3BsaXRfZnJvbV9wYXJlbnQgdiA9XG4gICAgQ2FtbC5MYXp5Lm1hcF92YWwgQ2FtbC5SYW5kb20uU3RhdGUuc3BsaXQgdlxuICBpblxuICBDYW1sLkRvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQgKGZ1biAoKSAtPiBkZWZhdWx0KVxuXG5sZXQgZ2V0X3N0YXRlIHJhbmRvbV9rZXkgPSBDYW1sLkRvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXlcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcblxuKCogVW5mb3J0dW5hdGVseSwgYmVjYXVzZSB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2VzIG5vdCBleHBvc2VcbiAgIFtDYW1sLlJhbmRvbS5TdGF0ZS5kZWZhdWx0XSwgd2UgaGF2ZSB0byBjb25zdHJ1Y3Qgb3VyIG93bi4gIFdlIHRoZW4gYnVpbGQgdGhlXG4gICBbQ2FtbC5SYW5kb20uaW50XSwgW0NhbWwuUmFuZG9tLmJvb2xdIGZ1bmN0aW9ucyBhbmQgZnJpZW5kcyB1c2luZyB0aGF0IGRlZmF1bHQgc3RhdGUgaW5cbiAgIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LlxuXG4gICBPbmUgb3RoZXIgdHJpY2tpbmVzcyBpcyB0aGF0IHdlIG5lZWQgYWNjZXNzIHRvIHRoZSB1bmV4cG9zZWQgW0NhbWwuUmFuZG9tLlN0YXRlLmFzc2lnbl1cbiAgIGZ1bmN0aW9uLCB3aGljaCBhY2Nlc3NlcyB0aGUgdW5leHBvc2VkIHN0YXRlIHJlcHJlc2VudGF0aW9uLiAgU28sIHdlIGNvcHkgdGhlXG4gICBbU3RhdGUucmVwcl0gdHlwZSBkZWZpbml0aW9uIGFuZCBbYXNzaWduXSBmdW5jdGlvbiB0byBoZXJlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksXG4gICBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24uICopXG5cbigqIFJlZ3Jlc3Npb24gdGVzdHMgb3VnaHQgdG8gYmUgZGV0ZXJtaW5pc3RpYyBiZWNhdXNlIHRoYXQgd2F5IGFueW9uZSB3aG8gYnJlYWtzIHRoZSB0ZXN0XG4gICBrbm93cyB0aGF0IGl0J3MgdGhlaXIgY29kZSB0aGF0IGJyb2tlIHRoZSB0ZXN0LiAgSWYgdGVzdHMgYXJlIG5vbmRldGVybWluaXN0aWMsIGEgdGVzdFxuICAgZmFpbHVyZSBtYXkgaW5zdGVhZCBoYXBwZW4gYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIgZ290IHVubHVja3kgYW5kIHVuY292ZXJlZCBhblxuICAgZXhpc3RpbmcgYnVnIGluIHRoZSBjb2RlIHN1cHBvc2VkbHkgYmVpbmcgXCJwcm90ZWN0ZWRcIiBieSB0aGUgdGVzdCBpbiBxdWVzdGlvbi4gKilcbmxldCBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzID1cbiAgaWYgYW1fdGVzdGluZ1xuICB0aGVuIChcbiAgICBtYXRjaCBhbGxvd19pbl90ZXN0cyB3aXRoXG4gICAgfCBTb21lIHRydWUgLT4gKClcbiAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICBcImluaXRpYWxpemluZyBSYW5kb20gd2l0aCBhIG5vbmRldGVybWluaXN0aWMgc2VlZCBpcyBmb3JiaWRkZW4gaW4gaW5saW5lIHRlc3RzXCIpXG47O1xuXG5leHRlcm5hbCByYW5kb21fc2VlZCA6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbmxldCByYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICByYW5kb21fc2VlZCAoKVxuOztcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFdlIGFsbG93IGxhemluZXNzIG9ubHkgZm9yIHRoZSBkZWZpbml0aW9uIG9mIFtkZWZhdWx0XSwgYmVsb3csIHdoaWNoIG1heSBsYXppbHkgY2FsbFxuICAgICBbbWFrZV9zZWxmX2luaXRdLiBGb3IgYWxsIG90aGVyIHB1cnBvc2VzLCB3ZSBjcmVhdGUgYW5kIHVzZSBbdF0gZWFnZXJseS4gKilcbiAgdHlwZSB0ID0gQ2FtbC5SYW5kb20uU3RhdGUudCBMYXp5LnRcblxuICBsZXQgYml0cyB0ID0gQ2FtbC5SYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSB0KVxuICBsZXQgYm9vbCB0ID0gQ2FtbC5SYW5kb20uU3RhdGUuYm9vbCAoTGF6eS5mb3JjZSB0KVxuICBsZXQgaW50IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQzMiB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5pbnQzMiAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQ2NCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5pbnQ2NCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBuYXRpdmVpbnQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUubmF0aXZlaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG1ha2Ugc2VlZCA9IExhenkuZnJvbV92YWwgKENhbWwuUmFuZG9tLlN0YXRlLm1ha2Ugc2VlZClcbiAgbGV0IGNvcHkgdCA9IExhenkuZnJvbV92YWwgKENhbWwuUmFuZG9tLlN0YXRlLmNvcHkgKExhenkuZm9yY2UgdCkpXG4gIGxldCBjaGFyIHQgPSBpbnQgdCAyNTYgfD4gQ2hhci51bnNhZmVfb2ZfaW50XG4gIGxldCBhc2NpaSB0ID0gaW50IHQgMTI4IHw+IENoYXIudW5zYWZlX29mX2ludFxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICAgIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gICAgTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG4gIDs7XG5cbiAgbGV0IGFzc2lnbiA9IFJhbmRvbV9yZXByLmFzc2lnblxuXG4gIGxldCBmdWxsX2luaXQgdCBzZWVkID0gYXNzaWduIHQgKG1ha2Ugc2VlZClcblxuICBsZXQgZGVmYXVsdCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgZGVmaW5lIEJhc2UncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZSBhcyBhIGNvcHkgb2YgT0NhbWwncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZS5cbiAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBwcm9ncmFtcyB0aGF0IHVzZSBCYXNlLlJhbmRvbSB3aWxsIHNlZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZlxuICAgICAgICAgcmFuZG9tIGJpdHMgYXMgaWYgdGhleSBoYWQgdXNlZCBDYW1sLlJhbmRvbS4gSG93ZXZlciwgYmVjYXVzZSBbZ2V0X3N0YXRlXSByZXR1cm5zXG4gICAgICAgICBhIGNvcHksIEJhc2UuUmFuZG9tIGFuZCBPQ2FtbC5SYW5kb20gYXJlIG5vdCB1c2luZyB0aGUgc2FtZSBzdGF0ZS4gSWYgYSBwcm9ncmFtXG4gICAgICAgICB1c2VkIGJvdGgsIGVhY2ggb2YgdGhlbSB3b3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHJhbmRvbSBiaXRzLiBUb1xuICAgICAgICAgYXZvaWQgdGhhdCwgd2UgcmVzZXQgT0NhbWwncyByYW5kb20gc3RhdGUgdG8gYSBkaWZmZXJlbnQgc2VlZCwgZ2l2aW5nIGl0IGFcbiAgICAgICAgIGRpZmZlcmVudCBzZXF1ZW5jZS4gKilcbiAgICAgIGxldCB0ID0gQ2FtbC5SYW5kb20uZ2V0X3N0YXRlICgpIGluXG4gICAgICBDYW1sLlJhbmRvbS5pbml0IDEzNztcbiAgICAgIExhenkuZnJvbV92YWwgdClcbiAgICBlbHNlXG4gICAgICBsYXp5XG4gICAgICAgICgqIE91dHNpZGUgb2YgdGVzdHMsIHdlIGluaXRpYWxpemUgcmFuZG9tIHN0YXRlIG5vbmRldGVybWluaXN0aWNhbGx5IGFuZCBsYXppbHkuXG4gICAgICAgICAgIFdlIGZvcmNlIHRoZSByYW5kb20gaW5pdGlhbGl6YXRpb24gdG8gYmUgbGF6eSBzbyB0aGF0IHdlIGRvIG5vdCBwYXkgYW55IGNvc3RcbiAgICAgICAgICAgZm9yIGl0IGluIHByb2dyYW1zIHRoYXQgZG8gbm90IHVzZSByYW5kb21uZXNzLiAqKVxuICAgICAgICAoTGF6eS5mb3JjZSAobWFrZV9zZWxmX2luaXQgKCkpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fNjRiaXRzIHQgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBDYW1sLkludDY0LnRvX2ludCAoaW50NjQgdCAoQ2FtbC5JbnQ2NC5vZl9pbnQgYm91bmQpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fMzJiaXRzIHQgYm91bmQgPVxuICAgICgqIE5vdCBhbHdheXMgdHJ1ZSB3aXRoIHRoZSBKYXZhU2NyaXB0IGJhY2tlbmQuICopXG4gICAgaWYgYm91bmQgPD0gMHgzRkZGRkZGRiAoKiAoMSBsc2wgMzApIC0gMSAqKVxuICAgIHRoZW4gaW50IHQgYm91bmRcbiAgICBlbHNlIENhbWwuSW50MzIudG9faW50IChpbnQzMiB0IChDYW1sLkludDMyLm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQ2NCA9XG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPlxuICAgICAgbG9neG9yXG4gICAgICAgIChiaXRzIHN0YXRlKVxuICAgICAgICAobG9neG9yIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMCkgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDYwKSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQzMiA9XG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQzMiBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPiBsb2d4b3IgKGJpdHMgc3RhdGUpIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMClcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIHN0YXRlID0gQ2FtbC5JbnQ2NC50b19pbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMgc3RhdGUgPSBDYW1sLkludDMyLnRvX2ludCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSlcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMgc3RhdGUgPVxuICAgIENhbWwuSW50NjQudG9fbmF0aXZlaW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMgc3RhdGUgPVxuICAgIENhbWwuTmF0aXZlaW50Lm9mX2ludDMyIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2Nyb3NzZWRfYm91bmRzIG5hbWUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgc3RyaW5nX29mX2JvdW5kID1cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIlJhbmRvbS4lczogY3Jvc3NlZCBib3VuZHMgWyVzID4gJXNdXCJcbiAgICAgIG5hbWVcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgbG93ZXJfYm91bmQpXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIHVwcGVyX2JvdW5kKVxuICAgICAgKClcbiAgW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbiAgOztcblxuICBsZXQgaW50X2luY2wgPVxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50XCIgbG8gaGkgSW50LnRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgICAgaWYgZGlmZiA9IEludC5tYXhfdmFsdWVcbiAgICAgIHRoZW4gbG8gKyAoZnVsbF9yYW5nZV9pbnQgc3RhdGUgbGFuZCBJbnQubWF4X3ZhbHVlKVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBcbiAgICAgIHRoZW4gbG8gKyBpbnQgc3RhdGUgKEludC5zdWNjIGRpZmYpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDMyX2luY2wgPVxuICAgIGxldCBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQzMiBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50MzJcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMGxcbiAgICAgIHRoZW4gYWRkIGxvIChpbnQzMiBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X2luY2wgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBDYW1sLk5hdGl2ZWludCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwibmF0aXZlaW50XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwblxuICAgICAgdGhlbiBhZGQgbG8gKG5hdGl2ZWludCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50NjRfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBDYW1sLkludDY0IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQ2NFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwTFxuICAgICAgdGhlbiBhZGQgbG8gKGludDY0IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gICgqIFJldHVybiBhIHVuaWZvcm1seSByYW5kb20gZmxvYXQgaW4gWzAsIDEpLiAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHN0YXRlID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgc2NhbGUgPSAweDFwLTMwIGluXG4gICAgKCogMl4tMzAgKilcbiAgICBsZXQgcjEgPSBDYW1sLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcjIgPSBDYW1sLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcmVzdWx0ID0gKChyMSAqLiBzY2FsZSkgKy4gcjIpICouIHNjYWxlIGluXG4gICAgKCogV2l0aCB2ZXJ5IHNtYWxsIHByb2JhYmlsaXR5LCByZXN1bHQgY2FuIHJvdW5kIHVwIHRvIDEuMCwgc28gaW4gdGhhdCBjYXNlLCB3ZSBqdXN0XG4gICAgICAgdHJ5IGFnYWluLiAqKVxuICAgIGlmIHJlc3VsdCA8IDEuMCB0aGVuIHJlc3VsdCBlbHNlIHJhd2Zsb2F0IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGZsb2F0IHN0YXRlIGhpID0gcmF3ZmxvYXQgc3RhdGUgKi4gaGlcblxuICBsZXQgZmxvYXRfcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImZsb2F0XCIgbG8gaGkgQ2FtbC5zdHJpbmdfb2ZfZmxvYXQ7XG4gICAgbG8gKy4gZmxvYXQgc3RhdGUgKGhpIC0uIGxvKVxuICA7O1xuZW5kXG5cbmxldCBkZWZhdWx0ID0gUmFuZG9tX3JlcHIubWFrZV9kZWZhdWx0IFN0YXRlLmRlZmF1bHRcblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBpbnQgeCA9IFN0YXRlLmludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQzMiB4ID0gU3RhdGUuaW50MzIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgbmF0aXZlaW50IHggPSBTdGF0ZS5uYXRpdmVpbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50NjQgeCA9IFN0YXRlLmludDY0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGZsb2F0IHggPSBTdGF0ZS5mbG9hdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnRfaW5jbCB4IHkgPSBTdGF0ZS5pbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDMyX2luY2wgeCB5ID0gU3RhdGUuaW50MzJfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IG5hdGl2ZWludF9pbmNsIHggeSA9IFN0YXRlLm5hdGl2ZWludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50NjRfaW5jbCB4IHkgPSBTdGF0ZS5pbnQ2NF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgZmxvYXRfcmFuZ2UgeCB5ID0gU3RhdGUuZmxvYXRfcmFuZ2UgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgY2hhciAoKSA9IFN0YXRlLmNoYXIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGFzY2lpICgpID0gU3RhdGUuYXNjaWkgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpKVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc1xuIiwiKCoqIEFuIGludGVybmFsLW9ubHkgbW9kdWxlIGZhY3RvcmVkIG91dCBkdWUgdG8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29yZV9hcnJheVxuICAgIGFuZCBjb3JlX2xpc3QuICBDb250YWlucyBjb2RlIGZvciBwZXJtdXRpbmcgYW4gYXJyYXkuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgPyhwb3MgPSAwKSA/bGVuIHQgPVxuICAoKiBDb3BpZWQgZnJvbSBbT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNvbXBpbGluZ1xuICAgICB3aXRob3V0IGZsYW1iZGEuICopXG4gIGxldCB0b3RhbF9sZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBsIC0+IGxcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBsZXQgbnVtX3N3YXBzID0gbGVuIC0gMSBpblxuICBmb3IgaSA9IG51bV9zd2FwcyBkb3dudG8gMSBkb1xuICAgIGxldCB0aGlzX2kgPSBwb3MgKyBpIGluXG4gICAgKCogW3JhbmRvbV9pXSBpcyBkcmF3biBmcm9tIFtwb3MsdGhpc19pXSAqKVxuICAgIGxldCByYW5kb21faSA9IHBvcyArIFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChpICsgMSkgaW5cbiAgICBzd2FwIHQgdGhpc19pIHJhbmRvbV9pXG4gIGRvbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGNvbnN0IGMgXyA9IGNcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogdGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgW0NhbWwuaWdub3JlXSAqKVxuXG5sZXQgbm9uIGYgeCA9IG5vdCAoZiB4KVxuXG5sZXQgZm9yZXZlciBmID1cbiAgbGV0IHJlYyBmb3JldmVyICgpID1cbiAgICBmICgpO1xuICAgIGZvcmV2ZXIgKClcbiAgaW5cbiAgdHJ5IGZvcmV2ZXIgKCkgd2l0aFxuICB8IGUgLT4gZVxuOztcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbigqIFRoZSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGVzZSBmdW5jdGlvbnMgaXMgdG8gcGFzcyBpbiBmdW5jdGlvbmFsIGFyZ3VtZW50cyBhbmQgZ2V0XG4gICBmdW5jdGlvbnMgYXMgYSByZXN1bHQuICopXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCByZWMgYXBwbHlfbl90aW1lcyB+biBmIHggPSBpZiBuIDw9IDAgdGhlbiB4IGVsc2UgYXBwbHlfbl90aW1lcyB+bjoobiAtIDEpIGYgKGYgeClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG5sZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IExlc3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgRXF1YWwgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgR3JlYXRlciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTGVzczsgRXF1YWw7IEdyZWF0ZXIgXSA6IHQgbGlzdClcblxubGV0IHRfb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJvcmRlcmluZy5tbC50XCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgLT4gTGVzc1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXF1YWxcIiB8IFwiRXF1YWxcIikgLT4gRXF1YWxcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImdyZWF0ZXJcIiB8IFwiR3JlYXRlclwiKSAtPiBHcmVhdGVyXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZXF1YWxcIiB8IFwiRXF1YWxcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImdyZWF0ZXJcIiB8IFwiR3JlYXRlclwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgfCBzZXhwX18wMDRfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuOztcblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgTGVzcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJMZXNzXCJcbiAgICB8IEVxdWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkVxdWFsXCJcbiAgICB8IEdyZWF0ZXIgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiR3JlYXRlclwiXG4gICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkxlc3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkVxdWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJHcmVhdGVyXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlIF9vcmRlcmluZyA9IHQgPVxuICAgIHwgTGVzc1xuICAgIHwgRXF1YWxcbiAgICB8IEdyZWF0ZXJcbmVuZFxuXG5sZXQgb2ZfaW50IG4gPSBpZiBuIDwgMCB0aGVuIExlc3MgZWxzZSBpZiBuID0gMCB0aGVuIEVxdWFsIGVsc2UgR3JlYXRlclxuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBMZXNzIC0+IC0xXG4gIHwgRXF1YWwgLT4gMFxuICB8IEdyZWF0ZXIgLT4gMVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG5cbmluY2x1ZGUgTGlzdDFcblxuKCogVGhpcyBpdHNlbGYgaW5jbHVkZXMgW0xpc3QwXS4gKilcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsaXN0X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGlzdFxuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGlzdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE9yX3VuZXF1YWxfbGVuZ3RocyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IFVuZXF1YWxfbGVuZ3Roc1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDZfIGJfXzAwN18gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDZfIGJfXzAwN19cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwNl8sIGJfXzAwN18gd2l0aFxuICAgICAgfCBPayBfYV9fMDA4XywgT2sgX2JfXzAwOV8gLT4gX2NtcF9fYSBfYV9fMDA4XyBfYl9fMDA5X1xuICAgICAgfCBPayBfLCBfIC0+IC0xXG4gICAgICB8IF8sIE9rIF8gLT4gMVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMsIFVuZXF1YWxfbGVuZ3RocyAtPiAwKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMTNfKSA6ICgoYV9fMDEzXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAxM18gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAxMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBfb2ZfYV9fMDEwXyBhcmcwX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAxMl8gXVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbF9sZW5ndGhzXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxubGV0IG9mX2xpc3QgdCA9IHRcblxubGV0IHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGxldCBuZXh0X2kgPSBzdHJpZGUgc3RhcnRfaSBpblxuICBsZXQgb3JkZXIgeCB5ID0gT3JkZXJpbmcub2ZfaW50IChjb21wYXJlIHggeSkgaW5cbiAgbGV0IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKCkgPVxuICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXCJcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RyaWRlX29yZGVyID1cbiAgICBtYXRjaCBvcmRlciBzdGFydF9pIG5leHRfaSB3aXRoXG4gICAgfCBFcXVhbCAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgfCBMZXNzIC0+IGBMZXNzXG4gICAgfCBHcmVhdGVyIC0+IGBHcmVhdGVyXG4gIGluXG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBsZXQgaV90b19zdG9wX29yZGVyID0gb3JkZXIgaSBzdG9wX2kgaW5cbiAgICBtYXRjaCBpX3RvX3N0b3Bfb3JkZXIsIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT5cbiAgICAgICgqIGhhdmVuJ3QgeWV0IHJlYWNoZWQgW3N0b3BfaV0uIENvbnRpbnVlLiAqKVxuICAgICAgbGV0IG5leHRfaSA9IHN0cmlkZSBpIGluXG4gICAgICAobWF0Y2ggb3JkZXIgaSBuZXh0X2ksIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICAgICB8IEVxdWFsLCBfIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgY2hhbmdlIGRpcmVjdGlvblwiXG4gICAgICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+IGxvb3AgbmV4dF9pIChpIDo6IGFjY3VtKSlcbiAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICgqIHN0ZXBwZWQgcGFzdCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgYWNjdW1cbiAgICB8IEVxdWFsLCBfIC0+XG4gICAgICAoKiByZWFjaGVkIFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICAobWF0Y2ggc3RvcCB3aXRoXG4gICAgICAgfCBgaW5jbHVzaXZlIC0+IGkgOjogYWNjdW1cbiAgICAgICB8IGBleGNsdXNpdmUgLT4gYWNjdW0pXG4gIGluXG4gIGxldCBzdGFydF9pID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X2lcbiAgICB8IGBleGNsdXNpdmUgLT4gbmV4dF9pXG4gIGluXG4gIHJldiAobG9vcCBzdGFydF9pIFtdKVxuOztcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgaWYgc3RyaWRlID0gMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZTogc3RyaWRlIG11c3QgYmUgbm9uLXplcm9cIjtcbiAgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGU6KGZ1biB4IC0+IHggKyBzdHJpZGUpIH5zdGFydCB+c3RvcCBzdGFydF9pIHN0b3BfaVxuOztcblxubGV0IGhkIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBfIC0+IFNvbWUgeFxuOztcblxubGV0IHRsIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiB0JyAtPiBTb21lIHQnXG47O1xuXG5sZXQgbnRoIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIG50aF9hdXggdCBuID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEgOjogdCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggdCAobiAtIDEpXG4gICAgaW5cbiAgICBudGhfYXV4IHQgbilcbjs7XG5cbmxldCBudGhfZXhuIHQgbiA9XG4gIG1hdGNoIG50aCB0IG4gd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiTGlzdC5udGhfZXhuICVkIGNhbGxlZCBvbiBsaXN0IG9mIGxlbmd0aCAlZFwiIG4gKGxlbmd0aCB0KSAoKVxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdW5vcmRlcmVkX2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwgfCBsLCBbXSAtPiBsXG4gIHwgXyAtPiByZXZfYXBwZW5kIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIgLT4gbG9vcCBhIGIgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXyB8IF8sIFtdIC0+IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGIgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgbDEgbDIgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2IgfSAtPlxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCJcbiAgICAgIG5hbWVcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSlcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYilcbiAgICAgICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYyA6ICdjIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgbDMgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgYyBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIsIGMgd2l0aFxuICAgICAgfCBbXSwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIsIF8gOjogYyAtPiBsb29wIGEgYiBjIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBbXSwgXyB8IF8sIF8sIFtdIC0+XG4gICAgICAgIFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGI7IHRhaWxfb2ZfYyA9IGMgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBsMyAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDNfZXhuIG5hbWUgbDEgbDIgbDMgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2I7IHRhaWxfb2ZfYyB9IC0+XG4gICAgbGV0IG4xID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EgaW5cbiAgICBsZXQgbjIgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYiBpblxuICAgIGxldCBuMyA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9jIGluXG4gICAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZCB8fCAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgbjIgbjMgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIgbDMpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5sZXQgaXRlcjIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihpdGVyMl9vayB+ZilcblxubGV0IGl0ZXIyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiaXRlcjJfZXhuXCIgbDEgbDI7XG4gIGl0ZXIyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihyZXZfbWFwMl9vayB+ZilcblxubGV0IHJldl9tYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwicmV2X21hcDJfZXhuXCIgbDEgbDI7XG4gIHJldl9tYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZm9sZDIgbDEgbDIgfmluaXQgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb2xkMl9vayB+aW5pdCB+ZilcblxubGV0IGZvbGQyX2V4biBsMSBsMiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZDJfZXhuXCIgbDEgbDI7XG4gIGZvbGQyX29rIGwxIGwyIH5pbml0IH5mXG47O1xuXG5sZXQgZm9yX2FsbDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb3JfYWxsMl9vayB+ZilcblxubGV0IGZvcl9hbGwyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9yX2FsbDJfZXhuXCIgbDEgbDI7XG4gIGZvcl9hbGwyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZXhpc3RzMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGV4aXN0czJfb2sgfmYpXG5cbmxldCBleGlzdHMyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZXhpc3RzMl9leG5cIiBsMSBsMjtcbiAgZXhpc3RzMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGVxdWFsIGEgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGIgOjogYnMgLT4gZXF1YWwgYSBiIHx8IGxvb3AgZXF1YWwgYSBic1xuICBpblxuICBsb29wIGVxdWFsIGEgdFxuOztcblxuKCogVGhpcyBpcyBhIGNvcHkgb2YgdGhlIGNvZGUgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCBhbiBleHRyYSBldGEtZXhwYW5zaW9uIHRvXG4gICBhdm9pZCBjcmVhdGluZyBwYXJ0aWFsIGNsb3N1cmVzIChzaG93ZWQgdXAgZm9yIFtmaWx0ZXJdKSBpbiBwcm9maWxpbmcpLiAqKVxubGV0IHJldl9maWx0ZXIgdCB+ZiA9XG4gIGxldCByZWMgZmluZCB+ZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IHggOjogbCAtPiBpZiBmIHggdGhlbiBmaW5kIH5mICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIH5mIGFjY3UgbFxuICBpblxuICBmaW5kIH5mIFtdIHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IHJldiAocmV2X2ZpbHRlciB0IH5mKVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIGxcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgbG9vcCBsXG4gIGluXG4gIGxvb3AgdFxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByZWMgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IHggOjogdCAtPiBpZiBmIHggdGhlbiB4IGVsc2UgZmluZF9leG4gdCB+ZlxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgaSB4IHRoZW4gU29tZSAoaSwgeCkgZWxzZSBsb29wIChpICsgMSkgbFxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGZpbmRpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICBmaW5kaV9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiBpIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGwpXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgJiYgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkIHx8IGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdFxuOztcblxuKCoqIEZvciB0aGUgY29udGFpbmVyIGludGVyZmFjZS4gKilcbmxldCBmb2xkX2xlZnQgPSBmb2xkXG5cbmxldCB0b19hcnJheSA9IEFycmF5Lm9mX2xpc3RcbmxldCB0b19saXN0IHQgPSB0XG5cbmxldCBtYXhfbm9uX3RhaWxjYWxsID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzIHNtYWxsLiBUaGlzXG4gICAgIG51bWJlciB3YXMgdGFrZW4gZnJvbSBvY2FtbCNzdGRsaWIvbGlzdC5tbCB3aGljaCBpcyBhbHNvIGVxdWFsIHRvIHRoZSBkZWZhdWx0IGxpbWl0XG4gICAgIG9mIHJlY3Vyc2l2ZSBjYWxsIGluIHRoZSBqc19vZl9vY2FtbCBjb21waWxlciBiZWZvcmUgc3dpdGNoaW5nIHRvIHRyYW1wb2xpbmUuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcbjs7XG5cbigqKiBUYWlsIHJlY3Vyc2l2ZSB2ZXJzaW9ucyBvZiBzdGFuZGFyZCBbTGlzdF0gbW9kdWxlICopXG5cbmxldCB0YWlsX2FwcGVuZCBsMSBsMiA9IHJldl9hcHBlbmQgKHJldiBsMSkgbDJcblxuKCogVGhlcmUgYXJlIGEgZmV3IG9wdGltaXplZCBsaXN0IG9wZXJhdGlvbnMgaGVyZSwgaW5jbHVkaW5nIGFwcGVuZCBhbmQgbWFwLiAgVGhlcmUgYXJlXG4gICBiYXNpY2FsbHkgdHdvIG9wdGltaXphdGlvbnMgaW4gcGxheTogbG9vcCB1bnJvbGxpbmcsIGFuZCBkeW5hbWljIHN3aXRjaGluZyBiZXR3ZWVuXG4gICBzdGFjayBhbmQgaGVhcCBhbGxvY2F0aW9uLlxuXG4gICBUaGUgbG9vcC11bnJvbGxpbmcgaXMgc3RyYWlnaHRmb3J3YXJkLCB3ZSBqdXN0IHVucm9sbCA1IGxldmVscyBvZiB0aGUgbG9vcC4gIFRoaXMgbWFrZXNcbiAgIGVhY2ggaXRlcmF0aW9uIGZhc3RlciwgYW5kIGFsc28gcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyBjb25zdW1lZCBwZXIgbGlzdFxuICAgZWxlbWVudC5cblxuICAgVGhlIGR5bmFtaWMgc3dpdGNoaW5nIGlzIGRvbmUgYnkgY291bnRpbmcgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMsIGFuZCB0aGVuXG4gICBzd2l0Y2hpbmcgdG8gdGhlIFwic2xvd1wiIGltcGxlbWVudGF0aW9uIHdoZW4gd2UgZXhjZWVkIGEgZ2l2ZW4gbGltaXQuICBUaGlzIG1lYW5zIHRoYXRcbiAgIHNob3J0IGxpc3RzIHVzZSB0aGUgZmFzdCBzdGFjay1hbGxvY2F0aW9uIG1ldGhvZCwgYW5kIGxvbmcgbGlzdHMgdXNlIGEgc2xvd2VyIG9uZSB0aGF0XG4gICBkb2Vzbid0IHJlcXVpcmUgc3RhY2sgc3BhY2UuICopXG5sZXQgcmVjIGNvdW50X2FwcGVuZCBsMSBsMiBjb3VudCA9XG4gIG1hdGNoIGwyIHdpdGhcbiAgfCBbXSAtPiBsMVxuICB8IF8gLT5cbiAgICAobWF0Y2ggbDEgd2l0aFxuICAgICB8IFtdIC0+IGwyXG4gICAgIHwgWyB4MSBdIC0+IHgxIDo6IGwyXG4gICAgIHwgWyB4MTsgeDIgXSAtPiB4MSA6OiB4MiA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MyBdIC0+IHgxIDo6IHgyIDo6IHgzIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IGwyXG4gICAgIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICAgICB4MVxuICAgICAgIDo6IHgyXG4gICAgICAgOjogeDNcbiAgICAgICA6OiB4NFxuICAgICAgIDo6IHg1XG4gICAgICAgOjpcbiAgICAgICAoaWYgY291bnQgPiBtYXhfbm9uX3RhaWxjYWxsXG4gICAgICAgIHRoZW4gdGFpbF9hcHBlbmQgdGwgbDJcbiAgICAgICAgZWxzZSBjb3VudF9hcHBlbmQgdGwgbDIgKGNvdW50ICsgMSkpKVxuOztcblxubGV0IGFwcGVuZCBsMSBsMiA9IGNvdW50X2FwcGVuZCBsMSBsMiAwXG5cbigqIEFuIG9yZGluYXJ5IHRhaWwgcmVjdXJzaXZlIG1hcCBidWlsZHMgdXAgYW4gaW50ZXJtZWRpYXRlIChyZXZlcnNlZCkgcmVwcmVzZW50YXRpb24sXG4gICB3aXRoIG9uZSBoZWFwIGFsbG9jYXRlZCBvYmplY3QgcGVyIGVsZW1lbnQuIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaW5zdGVhZCBjaHVua3NcbiAgIDkgb2JqZWN0cyBpbnRvIG9uZSBoZWFwIGFsbG9jYXRlZCBvYmplY3QsIHJlZHVjaW5nIGFsbG9jYXRpb24gYW5kIHBlcmZvcm1hbmNlIGNvc3RzXG4gICBhY2NvcmRpbmdseS4gTm90ZSB0aGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgbGlzdCBpcyBkb25lIGJ5IHRoZSBzdGRsaWIncyBtYXBcbiAgIGZ1bmN0aW9uLiAqKVxubGV0IHRhaWxfbWFwIHhzIH5mID1cbiAgbGV0IHJlYyByaXNlIHlzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHlzXG4gICAgfCAoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMgLT5cbiAgICAgIHJpc2UgKHkwIDo6IHkxIDo6IHkyIDo6IHkzIDo6IHk0IDo6IHk1IDo6IHk2IDo6IHk3IDo6IHk4IDo6IHlzKSBic1xuICBpblxuICBsZXQgcmVjIGRpdmUgYnMgPSBmdW5jdGlvblxuICAgIHwgeDAgOjogeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogeDYgOjogeDcgOjogeDggOjogeHMgLT5cbiAgICAgIGxldCB5MCA9IGYgeDAgaW5cbiAgICAgIGxldCB5MSA9IGYgeDEgaW5cbiAgICAgIGxldCB5MiA9IGYgeDIgaW5cbiAgICAgIGxldCB5MyA9IGYgeDMgaW5cbiAgICAgIGxldCB5NCA9IGYgeDQgaW5cbiAgICAgIGxldCB5NSA9IGYgeDUgaW5cbiAgICAgIGxldCB5NiA9IGYgeDYgaW5cbiAgICAgIGxldCB5NyA9IGYgeDcgaW5cbiAgICAgIGxldCB5OCA9IGYgeDggaW5cbiAgICAgIGRpdmUgKCh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicykgeHNcbiAgICB8IHhzIC0+IHJpc2UgKG5vbnRhaWxfbWFwIH5mIHhzKSBic1xuICBpblxuICBkaXZlIFtdIHhzXG47O1xuXG5sZXQgcmVjIGNvdW50X21hcCB+ZiBsIGN0ciA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgWyB4MSBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIFsgZjEgXVxuICB8IFsgeDE7IHgyIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIFsgZjE7IGYyIF1cbiAgfCBbIHgxOyB4MjsgeDMgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIFsgZjE7IGYyOyBmMyBdXG4gIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIFsgZjE7IGYyOyBmMzsgZjQgXVxuICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIGxldCBmNSA9IGYgeDUgaW5cbiAgICBmMVxuICAgIDo6IGYyXG4gICAgOjogZjNcbiAgICA6OiBmNFxuICAgIDo6IGY1XG4gICAgOjogKGlmIGN0ciA+IG1heF9ub25fdGFpbGNhbGwgdGhlbiB0YWlsX21hcCB+ZiB0bCBlbHNlIGNvdW50X21hcCB+ZiB0bCAoY3RyICsgMSkpXG47O1xuXG5sZXQgbWFwIGwgfmYgPSBjb3VudF9tYXAgfmYgbCAwXG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0ICggPj58ICkgbCBmID0gbWFwIGwgfmZcbmxldCBtYXAyX29rIGwxIGwyIH5mID0gcmV2IChyZXZfbWFwMl9vayBsMSBsMiB+ZilcbmxldCBtYXAyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjoobWFwMl9vayB+ZilcblxubGV0IG1hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJtYXAyX2V4blwiIGwxIGwyO1xuICBtYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmYgPVxuICBsZXQgcmVjIGxvb3AgbDEgbDIgbDMgYWMgPVxuICAgIG1hdGNoIGwxLCBsMiwgbDMgd2l0aFxuICAgIHwgW10sIFtdLCBbXSAtPiBhY1xuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyLCB4MyA6OiBsMyAtPiBsb29wIGwxIGwyIGwzIChmIHgxIHgyIHgzIDo6IGFjKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbG9vcCBsMSBsMiBsMyBbXVxuOztcblxubGV0IHJldl9tYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoocmV2X21hcDNfb2sgfmYpXG5cbmxldCByZXZfbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcInJldl9tYXAzX2V4blwiIGwxIGwyIGwzO1xuICByZXZfbWFwM19vayBsMSBsMiBsMyB+ZlxuOztcblxubGV0IG1hcDNfb2sgbDEgbDIgbDMgfmYgPSByZXYgKHJldl9tYXAzX29rIGwxIGwyIGwzIH5mKVxubGV0IG1hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihtYXAzX29rIH5mKVxuXG5sZXQgbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcIm1hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIG1hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgbDEgbDIgfmYgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgfmYgdCAoZiBoIDo6IGwyKVxuOztcblxubGV0IHVuemlwIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDJcbiAgICB8ICh4LCB5KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMilcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdXG47O1xuXG5sZXQgdW56aXAzIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiBsMyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDIsIGwzXG4gICAgfCAoeCwgeSwgeikgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpICh6IDo6IGwzKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW10gW11cbjs7XG5cbmxldCB6aXBfZXhuIGwxIGwyID1cbiAgdHJ5IG1hcDJfb2sgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDIgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluIHppcF9leG46ICVkIDw+ICVkXCIgKGxlbmd0aCBsMSkgKGxlbmd0aCBsMikgKClcbjs7XG5cbmxldCB6aXAgbDEgbDIgPSBtYXAyIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyXG5cbigqKiBBZGRpdGlvbmFsIGxpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmV2X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGggOjogdCAtPiBsb29wIChpICsgMSkgKGYgaSBoIDo6IGFjYykgdFxuICBpblxuICBsb29wIDAgW10gbFxuOztcblxubGV0IG1hcGkgbCB+ZiA9IHJldiAocmV2X21hcGkgbCB+ZilcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgaXRlcmkgbCB+ZiA9XG4gIGlnbm9yZVxuICAgIChmb2xkIGwgfmluaXQ6MCB+ZjooZnVuIGkgeCAtPlxuICAgICAgIGYgaSB4O1xuICAgICAgIGkgKyAxKVxuICAgICA6IGludClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgc25kIChmb2xkIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgdiAtPiBpICsgMSwgZiBpIGFjYyB2KSlcbjs7XG5cbmxldCBmaWx0ZXJpIGwgfmYgPVxuICByZXYgKGZvbGRpIGwgfmY6KGZ1biBwb3MgYWNjIHggLT4gaWYgZiBwb3MgeCB0aGVuIHggOjogYWNjIGVsc2UgYWNjKSB+aW5pdDpbXSlcbjs7XG5cbmxldCByZWR1Y2UgbCB+ZiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBoZCA6OiB0bCAtPiBTb21lIChmb2xkIH5pbml0OmhkIH5mIHRsKVxuOztcblxubGV0IHJlZHVjZV9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZCBsIH5mID1cbiAgKCogQ2FsbCB0aGUgXCJzaXplXCIgb2YgYSB2YWx1ZSB0aGUgbnVtYmVyIG9mIGxpc3QgZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gY29tYmluZWQgaW50b1xuICAgICBpdCB2aWEgY2FsbHMgdG8gW2ZdLiAgV2UgcHJvY2VlZCBieSB1c2luZyBbZl0gdG8gY29tYmluZSBlbGVtZW50cyBpbiB0aGUgYWNjdW11bGF0b3JcbiAgICAgb2YgdGhlIHNhbWUgc2l6ZSB1bnRpbCB3ZSBjYW4ndCBjb21iaW5lIGFueSBtb3JlLCB0aGVuIGdldHRpbmcgYSBuZXcgZWxlbWVudCBmcm9tIHRoZVxuICAgICBpbnB1dCBsaXN0IGFuZCByZXBlYXRpbmcuXG5cbiAgICAgV2l0aCB0aGlzIHN0cmF0ZWd5LCBpbiB0aGUgYWNjdW11bGF0b3I6XG4gICAgIC0gd2Ugb25seSBldmVyIGhhdmUgZWxlbWVudHMgb2Ygc2l6ZXMgYSBwb3dlciBvZiB0d29cbiAgICAgLSB3ZSBuZXZlciBoYXZlIG1vcmUgdGhhbiBvbmUgZWxlbWVudCBvZiBlYWNoIHNpemVcbiAgICAgLSB0aGUgc3VtIG9mIGFsbCB0aGUgZWxlbWVudCBzaXplcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkXG5cbiAgICAgVGhlc2UgY29uZGl0aW9ucyBlbmZvcmNlIHRoYXQgbGlzdCBvZiBlbGVtZW50cyBvZiBlYWNoIHNpemUgaXMgcHJlY2lzZWx5IHRoZSBiaW5hcnlcbiAgICAgZXhwYW5zaW9uIG9mIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWQ6IGlmIHlvdSd2ZSBjb25zdW1lZCAxMyA9IDBiMTEwMVxuICAgICBlbGVtZW50cywgeW91IGhhdmUgb25lIGVsZW1lbnQgb2Ygc2l6ZSA4LCBvbmUgb2Ygc2l6ZSA0LCBhbmQgb25lIG9mIHNpemUgMS4gIEhlbmNlXG4gICAgIHdoZW4gYSBuZXcgZWxlbWVudCBjb21lcyBhbG9uZywgdGhlIG51bWJlciBvZiBjb21iaW5pbmdzIHlvdSBuZWVkIHRvIGRvIGlzIHRoZSBudW1iZXJcbiAgICAgb2YgdHJhaWxpbmcgMXMgaW4gdGhlIGJpbmFyeSBleHBhbnNpb24gb2YgW251bV0sIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBoYXZlXG4gICAgIGFscmVhZHkgZ29uZSBpbnRvIHRoZSBhY2N1bXVsYXRvci4gIFRoZSBhY2N1bXVsYXRvciBpcyBpbiBhc2NlbmRpbmcgb3JkZXIgb2Ygc2l6ZSwgc29cbiAgICAgdGhlIG5leHQgZWxlbWVudCB0byBjb21iaW5lIHdpdGggaXMgYWx3YXlzIHRoZSBoZWFkIG9mIHRoZSBsaXN0LiAqKVxuICBsZXQgcmVjIHN0ZXBfYWNjdW0gbnVtIGFjYyB4ID1cbiAgICBpZiBudW0gbGFuZCAxID0gMFxuICAgIHRoZW4geCA6OiBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogTmV3IGVsZW1lbnRzIGZyb20gbGF0ZXIgaW4gdGhlIGlucHV0IGxpc3QgZ28gb24gdGhlIGZyb250IG9mIHRoZSBhY2N1bXVsYXRvciwgc29cbiAgICAgICAgIHRoZSBhY2N1bXVsYXRvciBpcyBpbiByZXZlcnNlIG9yZGVyIHdydCB0aGUgb3JpZ2luYWwgbGlzdCBvcmRlciwgaGVuY2UgW2YgeSB4XVxuICAgICAgICAgaW5zdGVhZCBvZiBbZiB4IHldLiAqKVxuICAgICAgfCB5IDo6IHlzIC0+IHN0ZXBfYWNjdW0gKG51bSBhc3IgMSkgeXMgKGYgeSB4KSlcbiAgaW5cbiAgKCogRXhwZXJpbWVudGFsbHksIGlubGluaW5nIFtmb2xkaV0gYW5kIHVucm9sbGluZyB0aGlzIGxvb3AgYSBmZXcgdGltZXMgY2FuIHJlZHVjZVxuICAgICBydW50aW1lIGRvd24gdG8gYSB0aGlyZCBhbmQgYWxsb2NhdGlvbiB0byAxLzE2dGggb3Igc28gaW4gdGhlIG1pY3JvYmVuY2htYXJrcyBiZWxvdy5cbiAgICAgSG93ZXZlciwgaW4gbW9zdCB1c2UgY2FzZXMgW2ZdIGlzIGxpa2VseSB0byBiZSBleHBlbnNpdmUgKG90aGVyd2lzZSB3aHkgZG8geW91IGNhcmVcbiAgICAgYWJvdXQgdGhlIG9yZGVyIG9mIHJlZHVjdGlvbj8pIHNvIHRoZSBvdmVyaGVhZCBvZiB0aGlzIGZ1bmN0aW9uIGl0c2VsZiBkb2Vzbid0IHJlYWxseVxuICAgICBtYXR0ZXIuIElmIHlvdSBjb21lIHVwIHdpdGggYSB1c2UtY2FzZSB3aGVyZSBpdCBkb2VzLCB0aGVuIHRoYXQncyBzb21ldGhpbmcgeW91IG1pZ2h0XG4gICAgIHdhbnQgdG8gdHJ5OiBzZWUgaGcgbG9nIC1wciA0OWVmMDY1ZjQyOWQuICopXG4gIG1hdGNoIGZvbGRpIGwgfmluaXQ6W10gfmY6c3RlcF9hY2N1bSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gU29tZSAoZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4geCB5IC0+IGYgeSB4KSlcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWRfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2JhbGFuY2VkX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBncm91cGkgbCB+YnJlYWsgPVxuICBsZXQgZ3JvdXBzID1cbiAgICBmb2xkaSBsIH5pbml0OltdIH5mOihmdW4gaSBhY2MgeCAtPlxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gWyBbIHggXSBdXG4gICAgICB8IGN1cnJlbnRfZ3JvdXAgOjogdGwgLT5cbiAgICAgICAgaWYgYnJlYWsgaSAoaGRfZXhuIGN1cnJlbnRfZ3JvdXApIHhcbiAgICAgICAgdGhlbiBbIHggXSA6OiBjdXJyZW50X2dyb3VwIDo6IHRsICgqIHN0YXJ0IG5ldyBncm91cCAqKVxuICAgICAgICBlbHNlICh4IDo6IGN1cnJlbnRfZ3JvdXApIDo6IHRsKVxuICAgICgqIGV4dGVuZCBjdXJyZW50IGdyb3VwICopXG4gIGluXG4gIG1hdGNoIGdyb3VwcyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBsIC0+IHJldl9tYXAgbCB+ZjpyZXZcbjs7XG5cbmxldCBncm91cCBsIH5icmVhayA9IGdyb3VwaSBsIH5icmVhazooZnVuIF8geCB5IC0+IGJyZWFrIHggeSlcblxubGV0IHNvcnRfYW5kX2dyb3VwIGwgfmNvbXBhcmUgPVxuICBsIHw+IHN0YWJsZV9zb3J0IH5jb21wYXJlIHw+IGdyb3VwIH5icmVhazooZnVuIHggeSAtPiBjb21wYXJlIHggeSA8PiAwKVxuOztcblxubGV0IGNvbmNhdF9tYXAgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBhdXggKHJldl9hcHBlbmQgKGYgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IFtdIGxcbjs7XG5cbmxldCBjb25jYXRfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBhdXggY29udCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChjb250ICsgMSkgKHJldl9hcHBlbmQgKGYgY29udCBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggMCBbXSBsXG47O1xuXG5sZXQgbWVyZ2UgbDEgbDIgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgYWNjIGwyXG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBhY2MgbDFcbiAgICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY29tcGFyZSBoMSBoMiA8PSAwIHRoZW4gbG9vcCAoaDEgOjogYWNjKSB0MSBsMiBlbHNlIGxvb3AgKGgyIDo6IGFjYykgbDEgdDJcbiAgaW5cbiAgbG9vcCBbXSBsMSBsMlxuOztcblxubW9kdWxlIENhcnRlc2lhbl9wcm9kdWN0ID0gc3RydWN0XG4gICgqIFdlIGFyZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlIGV4cG9ydCBmcm9tIGZ1bmN0b3JzIHNvIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5XG4gICAgIHJlYmluZCBtb3JlIGVmZmljaWVudCBsaXN0LXNwZWNpZmljIGZ1bmN0aW9ucy4gKilcblxuICBsZXQgYmluZCA9IGNvbmNhdF9tYXBcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwMiBhIGIgfmYgPSBjb25jYXRfbWFwIGEgfmY6KGZ1biB4IC0+IG1hcCBiIH5mOihmdW4geSAtPiBmIHggeSkpXG4gIGxldCByZXR1cm4geCA9IFsgeCBdXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcblxuICBvcGVuIHN0cnVjdFxuICAgIG1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBNb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGxldCBhbGwgPSBNb25hZC5hbGxcbiAgbGV0IGFsbF91bml0ID0gTW9uYWQuYWxsX3VuaXRcbiAgbGV0IGlnbm9yZV9tID0gTW9uYWQuaWdub3JlX21cbiAgbGV0IGpvaW4gPSBNb25hZC5qb2luXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG4gIGVuZFxuXG4gIGxldCBhcHBseSA9IEFwcGxpY2F0aXZlLmFwcGx5XG4gIGxldCBib3RoID0gQXBwbGljYXRpdmUuYm90aFxuICBsZXQgbWFwMyA9IEFwcGxpY2F0aXZlLm1hcDNcbiAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoQ2FydGVzaWFuX3Byb2R1Y3QgOiBNb25hZC5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbigqKiByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0X2V4biBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogdGwgLT4gbGFzdF9leG4gdGxcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubGFzdFwiXG47O1xuXG4oKiogb3B0aW9uYWxseSByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0IGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiBTb21lIHhcbiAgfCBfIDo6IHRsIC0+IGxhc3QgdGxcbiAgfCBbXSAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGlzX3ByZWZpeCBsaXN0IH5wcmVmaXggfmVxdWFsID1cbiAgbWF0Y2ggcHJlZml4IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgaGQgOjogdGwgLT5cbiAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgIHwgW10gLT4gZmFsc2VcbiAgICAgfCBoZCcgOjogdGwnIC0+IGVxdWFsIGhkIGhkJyAmJiBpc19wcmVmaXggdGwnIH5wcmVmaXg6dGwgfmVxdWFsKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGExIDo6IHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgYTEgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhMiA6OiB0IC0+IGlmIGVxdWFsIGExIGEyIHRoZW4gU29tZSAoYTEsIGEyKSBlbHNlIGxvb3AgYTIgdFxuICAgIGluXG4gICAgbG9vcCBhMSB0XG47O1xuXG4oKiByZXR1cm5zIGxpc3Qgd2l0aG91dCBhZGphY2VudCBkdXBsaWNhdGVzICopXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgPyh3aGljaF90b19rZWVwID0gYExhc3QpIGxpc3QgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHRvX2tlZXAgYWNjdW0gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gdG9fa2VlcCA6OiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGVxdWFsIGhkIHRvX2tlZXBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdG9fa2VlcCA9XG4gICAgICAgICAgbWF0Y2ggd2hpY2hfdG9fa2VlcCB3aXRoXG4gICAgICAgICAgfCBgRmlyc3QgLT4gdG9fa2VlcFxuICAgICAgICAgIHwgYExhc3QgLT4gaGRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCB0b19rZWVwIGFjY3VtIHRsKVxuICAgICAgZWxzZSBsb29wIGhkICh0b19rZWVwIDo6IGFjY3VtKSB0bFxuICBpblxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IHJldiAobG9vcCBoZCBbXSB0bClcbjs7XG5cbigqKiByZXR1cm5zIHNvcnRlZCB2ZXJzaW9uIG9mIGxpc3Qgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQgKilcbmxldCBkZWR1cF9hbmRfc29ydCBsaXN0IH5jb21wYXJlID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0ICgqIHBlcmZvcm1hbmNlIGhhY2sgKilcbiAgfCBfIC0+XG4gICAgbGV0IGVxdWFsIHggeCcgPSBjb21wYXJlIHggeCcgPSAwIGluXG4gICAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbGlzdCBpblxuICAgIHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIH5lcXVhbCBzb3J0ZWRcbjs7XG5cbmxldCBmaW5kX2FfZHVwIGwgfmNvbXBhcmUgPVxuICBsZXQgc29ydGVkID0gc29ydCBsIH5jb21wYXJlIGluXG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gTm9uZVxuICAgIHwgaGQxIDo6IChoZDIgOjogXyBhcyB0bCkgLT4gaWYgY29tcGFyZSBoZDEgaGQyID0gMCB0aGVuIFNvbWUgaGQxIGVsc2UgbG9vcCB0bFxuICBpblxuICBsb29wIHNvcnRlZFxuOztcblxubGV0IGNvbnRhaW5zX2R1cCBsc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBmaW5kX2FfZHVwIGxzdCB+Y29tcGFyZSB3aXRoXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZmluZF9hbGxfZHVwcyBsIH5jb21wYXJlID1cbiAgKCogV2UgYWRkIHRoaXMgcmV2ZXJzYWwsIHNvIHdlIGNhbiBza2lwIGEgW3Jldl0gYXQgdGhlIGVuZC4gV2UgY291bGQgc2tpcFxuICAgICBbcmV2XSBhbnl3YXkgc2luY2Ugd2UgZG9uIG5vdCBnaXZlIGFueSBvcmRlcmluZyBndWFyYW50ZWVzLCBidXQgaXQgaXNcbiAgICAgbmljZSB0byBnZXQgcmVzdWx0cyBpbiBuYXR1cmFsIG9yZGVyLiAqKVxuICBsZXQgY29tcGFyZSBhIGIgPSAtMSAqIGNvbXBhcmUgYSBiIGluXG4gIGxldCBzb3J0ZWQgPSBzb3J0IH5jb21wYXJlIGwgaW5cbiAgKCogV2FsayB0aGUgbGlzdCBhbmQgcmVjb3JkIHRoZSBmaXJzdCBvZiBlYWNoIGNvbnNlY3V0aXZlIHJ1biBvZiBpZGVudGljYWwgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBsb29wIHNvcnRlZCBwcmV2IH5hbHJlYWR5X3JlY29yZGVkIGFjYyA9XG4gICAgbWF0Y2ggc29ydGVkIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgcHJldiBoZCA8PiAwXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6ZmFsc2UgYWNjXG4gICAgICBlbHNlIGlmIGFscmVhZHlfcmVjb3JkZWRcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIGFjY1xuICAgICAgZWxzZSBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgKGhkIDo6IGFjYylcbiAgaW5cbiAgbWF0Y2ggc29ydGVkIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6ZmFsc2UgW11cbjs7XG5cbmxldCByZWMgYWxsX2VxdWFsX3RvIHQgdiB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgeCA6OiB4cyAtPiBlcXVhbCB4IHYgJiYgYWxsX2VxdWFsX3RvIHhzIHYgfmVxdWFsXG47O1xuXG5sZXQgYWxsX2VxdWFsIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gaWYgYWxsX2VxdWFsX3RvIHhzIHggfmVxdWFsIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbjs7XG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgaSA9IDAgdGhlbiBhY2N1bSBlbHNlIGxvb3AgKGkgLSAxKSAoZiAoaSAtIDEpIDo6IGFjY3VtKVxuICBpblxuICBsb29wIG4gW11cbjs7XG5cbmxldCByZXZfZmlsdGVyX21hcCBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGwgYWNjdW0gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2ggZiBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCB0bCBhY2N1bSlcbiAgaW5cbiAgbG9vcCBsIFtdXG47O1xuXG5sZXQgZmlsdGVyX21hcCBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcCBsIH5mKVxuXG5sZXQgcmV2X2ZpbHRlcl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaSBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCAoaSArIDEpIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgMCBsIFtdXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXBpIGwgfmYpXG5sZXQgZmlsdGVyX29wdCBsID0gZmlsdGVyX21hcCBsIH5mOkZuLmlkXG5cbmxldCBwYXJ0aXRpb24zX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCB0cmQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV2IGZzdCwgcmV2IHNuZCwgcmV2IHRyZFxuICAgIHwgeCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IGBGc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmQgdHJkXG4gICAgICAgfCBgU25kIHkgLT4gbG9vcCB0IGZzdCAoeSA6OiBzbmQpIHRyZFxuICAgICAgIHwgYFRyZCB5IC0+IGxvb3AgdCBmc3Qgc25kICh5IDo6IHRyZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbXVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgbGV0IGYgeCA6IF8gRWl0aGVyLnQgPSBpZiBmIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHggaW5cbiAgcGFydGl0aW9uX21hcCB0IH5mXG47O1xuXG5sZXQgcGFydGl0aW9uX3Jlc3VsdCB0ID0gcGFydGl0aW9uX21hcCB0IH5mOlJlc3VsdC50b19laXRoZXJcblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDIyXyA9IFwibGlzdC5tbC5Bc3NvYy50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAxNF8gX29mX2JfXzAxNV8geF9fMDIzXyAtPlxuICAgICAgbGlzdF9vZl9zZXhwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDE3XzsgYXJnMV9fMDE4XyBdIC0+XG4gICAgICAgICAgICBsZXQgcmVzMF9fMDE5XyA9IF9vZl9hX18wMTRfIGFyZzBfXzAxN19cbiAgICAgICAgICAgIGFuZCByZXMxX18wMjBfID0gX29mX2JfXzAxNV8gYXJnMV9fMDE4XyBpblxuICAgICAgICAgICAgcmVzMF9fMDE5XywgcmVzMV9fMDIwX1xuICAgICAgICAgIHwgc2V4cF9fMDIxXyAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyMl9cbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICBzZXhwX18wMjFfKVxuICAgICAgICB4X18wMjNfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ2IuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9hX18wMjRfIF9vZl9iX18wMjVfIHhfXzAzMF8gLT5cbiAgICAgIHNleHBfb2ZfbGlzdFxuICAgICAgICAoZnVuIChhcmcwX18wMjZfLCBhcmcxX18wMjdfKSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9hX18wMjRfIGFyZzBfXzAyNl9cbiAgICAgICAgICAgYW5kIHJlczFfXzAyOV8gPSBfb2ZfYl9fMDI1XyBhcmcxX18wMjdfIGluXG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzAyOF87IHJlczFfXzAyOV8gXSlcbiAgICAgICAgeF9fMDMwX1xuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIGxpc3Rfc2V4cF9ncmFtbWFyXG4gICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICBMaXN0IChDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpKSlcbiAgICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHBhaXJfb2ZfZ3JvdXAgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoaywgXykgOjogXyBhcyBsaXN0IC0+IGssIG1hcCBsaXN0IH5mOnNuZFxuICA7O1xuXG4gIGxldCBncm91cCBhbGlzdCB+ZXF1YWwgPVxuICAgIGdyb3VwIGFsaXN0IH5icmVhazooZnVuICh4LCBfKSAoeSwgXykgLT4gbm90IChlcXVhbCB4IHkpKSB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZSA9XG4gICAgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoeCwgXykgKHksIF8pIC0+IGNvbXBhcmUgeCB5KVxuICAgIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZXF1YWwga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgfmY6KGZ1biAoa2V5JywgXykgLT4gZXF1YWwga2V5IGtleScpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgKHNuZCB4KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5Bc3NvYy5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gICAgbGV0IGZpbmRfZXhuIHQgfmVxdWFsIGtleSA9XG4gICAgICBtYXRjaCBmaW5kIHQga2V5IH5lcXVhbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdmFsdWUgLT4gdmFsdWVcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBmaW5kX2V4blxuICA7O1xuXG4gIGxldCBtZW0gdCB+ZXF1YWwga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgfmVxdWFsIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIF8gLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCByZW1vdmUgdCB+ZXF1YWwga2V5ID0gZmlsdGVyIHQgfmY6KGZ1biAoa2V5JywgXykgLT4gbm90IChlcXVhbCBrZXkga2V5JykpXG5cbiAgbGV0IGFkZCB0IH5lcXVhbCBrZXkgdmFsdWUgPVxuICAgICgqIHRoZSByZW1vdmUgZG9lc24ndCBjaGFuZ2UgdGhlIG1hcCBzZW1hbnRpY3MsIGJ1dCBrZWVwcyB0aGUgbGlzdCBzbWFsbCAqKVxuICAgIChrZXksIHZhbHVlKSA6OiByZW1vdmUgdCB+ZXF1YWwga2V5XG4gIDs7XG5cbiAgbGV0IGludmVyc2UgdCA9IG1hcCB0IH5mOihmdW4gKHgsIHkpIC0+IHksIHgpXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mOihmdW4gKGtleSwgdmFsdWUpIC0+IGtleSwgZiB2YWx1ZSlcbmVuZFxuXG5sZXQgc3ViIGwgfnBvcyB+bGVuID1cbiAgKCogV2UgdXNlIFtwb3MgPiBsZW5ndGggbCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IGxlbmd0aCBsXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBsZW5ndGggbCAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5zdWJcIjtcbiAgcmV2XG4gICAgKGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBlbCAtPlxuICAgICAgIGlmIGkgPj0gcG9zICYmIGkgPCBwb3MgKyBsZW4gdGhlbiBlbCA6OiBhY2MgZWxzZSBhY2MpKVxuOztcblxubGV0IHNwbGl0X24gdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXSwgdF9vcmlnXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtLCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnLCBbXSAoKiBpbiB0aGlzIGNhc2UsIHRfb3JpZyA9IHJldiBhY2N1bSAqKVxuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF9uXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW1cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWdcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG5sZXQgcmVjIGRyb3AgdCBuID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgXyA6OiB0bCB3aGVuIG4gPiAwIC0+IGRyb3AgdGwgKG4gLSAxKVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNodW5rc19vZiBsIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPD0gMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuY2h1bmtzX29mOiBFeHBlY3RlZCBsZW5ndGggPiAwLCBnb3QgJWRcIiBsZW5ndGggKCk7XG4gIGxldCByZWMgYXV4IG9mX2xlbmd0aCBhY2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBzdWJsaXN0LCBsID0gc3BsaXRfbiBsIGxlbmd0aCBpblxuICAgICAgYXV4IG9mX2xlbmd0aCAoc3VibGlzdCA6OiBhY2MpIGxcbiAgaW5cbiAgYXV4IGxlbmd0aCBbXSBsXG47O1xuXG5sZXQgc3BsaXRfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCB0IC0+IHJldiBhY2MsIHRcbiAgaW5cbiAgbG9vcCBbXSB4c1xuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X3doaWxlXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlX3doaWxlIHhzIH5mID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICAgIHwgXyAtPiByZXYgYWNjXG4gIGluXG4gIGxvb3AgW10geHNcbjs7XG5cbmxldCByZWMgZHJvcF93aGlsZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGRyb3Bfd2hpbGUgdGwgfmZcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBkcm9wX2xhc3QgdCA9XG4gIG1hdGNoIHJldiB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiBsc3QgLT4gU29tZSAocmV2IGxzdClcbjs7XG5cbmxldCBkcm9wX2xhc3RfZXhuIHQgPVxuICBtYXRjaCBkcm9wX2xhc3QgdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkxpc3QuZHJvcF9sYXN0X2V4bjogZW1wdHkgbGlzdFwiXG4gIHwgU29tZSBsc3QgLT4gbHN0XG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgbGlzdDEgbGlzdDIgPVxuICBpZiBpc19lbXB0eSBsaXN0MlxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBsMSBsMiBhY2N1bSA9XG4gICAgICBtYXRjaCBsMSB3aXRoXG4gICAgICB8IFtdIC0+IGFjY3VtXG4gICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgbDIgKHJldl9hcHBlbmQgKG1hcCB+ZjooZnVuIHggLT4gaGQsIHgpIGwyKSBhY2N1bSlcbiAgICBpblxuICAgIHJldiAobG9vcCBsaXN0MSBsaXN0MiBbXSkpXG47O1xuXG5sZXQgY29uY2F0IGwgPSBmb2xkX3JpZ2h0IGwgfmluaXQ6W10gfmY6YXBwZW5kXG5sZXQgY29uY2F0X25vX29yZGVyIGwgPSBmb2xkIGwgfmluaXQ6W10gfmY6KGZ1biBhY2MgbCAtPiByZXZfYXBwZW5kIGwgYWNjKVxubGV0IGNvbnMgeCBsID0geCA6OiBsXG5cbmxldCBpc19zb3J0ZWQgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8PSAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGxcbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbFxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIEAgKSA9IGFwcGVuZFxuZW5kXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgKCogc3BlY2lhbCBjYXNlcyB0byBzcGVlZCB0aGluZ3MgdXAgaW4gdHJpdmlhbCBjYXNlcyAqKVxuICB8IFtdIHwgWyBfIF0gLT4gbGlzdFxuICB8IFsgeDsgeSBdIC0+IGlmIFJhbmRvbS5TdGF0ZS5ib29sIHJhbmRvbV9zdGF0ZSB0aGVuIFsgeTsgeCBdIGVsc2UgbGlzdFxuICB8IF8gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgQXJyYXlfcGVybXV0ZS5wZXJtdXRlIGFyciB+cmFuZG9tX3N0YXRlO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICBpZiBpc19lbXB0eSBsaXN0XG4gIHRoZW4gZmFpbHdpdGggXCJMaXN0LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgbGlzdFwiXG4gIGVsc2UgbnRoX2V4biBsaXN0IChSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIGxpc3QpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgbGlzdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBjb21wYXJlIGNtcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICBpZiBuID0gMCB0aGVuIGNvbXBhcmUgY21wIHhzIHlzIGVsc2UgblxuOztcblxubGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX2xpc3RcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID1cbiAgbGV0IHJlYyBsb29wIH5lcXVhbCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCB4MSA6OiB0MSwgeDIgOjogdDIgLT4gZXF1YWwgeDEgeDIgJiYgbG9vcCB+ZXF1YWwgdDEgdDJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCB+ZXF1YWwgdDEgdDJcbjs7XG5cbmxldCB0cmFuc3Bvc2UgPVxuICBsZXQgcmVjIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdCBjb2x1bW5fYWNjIHRyaW1tZWQgZm91bmRfZW1wdHkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gY29sdW1uX2FjYywgdHJpbW1lZCwgZm91bmRfZW1wdHlcbiAgICB8IFtdIDo6IHRsIC0+IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgY29sdW1uX2FjYyB0cmltbWVkIHRydWVcbiAgICB8ICh4IDo6IHhzKSA6OiB0bCAtPlxuICAgICAgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCAoeCA6OiBjb2x1bW5fYWNjKSAoeHMgOjogdHJpbW1lZCkgZm91bmRfZW1wdHlcbiAgaW5cbiAgbGV0IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyA9IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyBbXSBbXSBmYWxzZSBpblxuICBsZXQgcmVjIGxvb3Agcm93cyBjb2x1bW5zIGRvX3JldiA9XG4gICAgbWF0Y2ggc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIHdpdGhcbiAgICB8IFtdLCBbXSwgXyAtPiBTb21lIChyZXYgY29sdW1ucylcbiAgICB8IGNvbHVtbiwgdHJpbW1lZF9yb3dzLCBmb3VuZF9lbXB0eSAtPlxuICAgICAgaWYgZm91bmRfZW1wdHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjb2x1bW4gPSBpZiBkb19yZXYgdGhlbiByZXYgY29sdW1uIGVsc2UgY29sdW1uIGluXG4gICAgICAgIGxvb3AgdHJpbW1lZF9yb3dzIChjb2x1bW4gOjogY29sdW1ucykgKG5vdCBkb19yZXYpKVxuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW10gdHJ1ZVxuOztcblxuZXhjZXB0aW9uIFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgb2YgaW50IGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNdXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgYXJnMF9fMDMxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMyXyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2ludCBhcmcwX18wMzFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGlzdC5tbC5UcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXCJcbiAgICAgICAgICA7IHJlczBfXzAzMl9cbiAgICAgICAgICBdXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHRyYW5zcG9zZV9leG4gbCA9XG4gIG1hdGNoIHRyYW5zcG9zZSBsIHdpdGhcbiAgfCBTb21lIGwgLT4gbFxuICB8IE5vbmUgLT4gcmFpc2UgKFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgKG1hcCBsIH5mOmxlbmd0aCkpXG47O1xuXG5sZXQgaW50ZXJzcGVyc2UgdCB+c2VwID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+IHggOjogZm9sZF9yaWdodCB4cyB+aW5pdDpbXSB+ZjooZnVuIHkgYWNjIC0+IHNlcCA6OiB5IDo6IGFjYylcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbmxldCBpc19zdWZmaXggbGlzdCB+c3VmZml4IH5lcXVhbDplcXVhbF9lbHQgPVxuICBsZXQgbGlzdF9sZW4gPSBsZW5ndGggbGlzdCBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGlzdF9sZW4gPj0gc3VmZml4X2xlbiAmJiBlcXVhbCBlcXVhbF9lbHQgKGRyb3AgbGlzdCAobGlzdF9sZW4gLSBzdWZmaXhfbGVuKSkgc3VmZml4XG47O1xuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbSW5mb10sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gYXMgbWFueSBwbGFjZXMgYXMgcG9zc2libGUuIFBsZWFzZSBhdm9pZFxuICAgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvX2ludGZcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRXhuIG9mIGV4blxuICAgIHwgU2V4cCBvZiBTZXhwLnRcbiAgICB8IFRhZ19zZXhwIG9mIHN0cmluZyAqIFNleHAudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC50IG9wdGlvblxuICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCByZWMgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBhcmcwX18wMDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDJfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJDb3VsZF9ub3RfY29uc3RydWN0XCI7IHJlczBfXzAwMl8gXVxuICAgICAgfCBTdHJpbmcgYXJnMF9fMDAzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RyaW5nXCI7IHJlczBfXzAwNF8gXVxuICAgICAgfCBFeG4gYXJnMF9fMDA1XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA2XyA9IHNleHBfb2ZfZXhuIGFyZzBfXzAwNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhuXCI7IHJlczBfXzAwNl8gXVxuICAgICAgfCBTZXhwIGFyZzBfXzAwN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwOF8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDA4XyBdXG4gICAgICB8IFRhZ19zZXhwIChhcmcwX18wMDlfLCBhcmcxX18wMTBfLCBhcmcyX18wMTFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwOV9cbiAgICAgICAgYW5kIHJlczFfXzAxM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMTBfXG4gICAgICAgIGFuZCByZXMyX18wMTRfID0gc2V4cF9vZl9vcHRpb24gU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBhcmcyX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3NleHBcIjsgcmVzMF9fMDEyXzsgcmVzMV9fMDEzXzsgcmVzMl9fMDE0XyBdXG4gICAgICB8IFRhZ190IChhcmcwX18wMTVfLCBhcmcxX18wMTZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxNV9cbiAgICAgICAgYW5kIHJlczFfXzAxOF8gPSBzZXhwX29mX3QgYXJnMV9fMDE2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfdFwiOyByZXMwX18wMTdfOyByZXMxX18wMThfIF1cbiAgICAgIHwgVGFnX2FyZyAoYXJnMF9fMDE5XywgYXJnMV9fMDIwXywgYXJnMl9fMDIxXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTlfXG4gICAgICAgIGFuZCByZXMxX18wMjNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDIwX1xuICAgICAgICBhbmQgcmVzMl9fMDI0XyA9IHNleHBfb2ZfdCBhcmcyX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX2FyZ1wiOyByZXMwX18wMjJfOyByZXMxX18wMjNfOyByZXMyX18wMjRfIF1cbiAgICAgIHwgT2ZfbGlzdCAoYXJnMF9fMDI1XywgYXJnMV9fMDI2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX2ludCBhcmcwX18wMjVfXG4gICAgICAgIGFuZCByZXMxX18wMjhfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdCBhcmcxX18wMjZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX2xpc3RcIjsgcmVzMF9fMDI3XzsgcmVzMV9fMDI4XyBdXG4gICAgICB8IFdpdGhfYmFja3RyYWNlIChhcmcwX18wMjlfLCBhcmcxX18wMzBfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IHNleHBfb2ZfdCBhcmcwX18wMjlfXG4gICAgICAgIGFuZCByZXMxX18wMzJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMV9fMDMwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJXaXRoX2JhY2t0cmFjZVwiOyByZXMwX18wMzFfOyByZXMxX18wMzJfIF1cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCByZWMgdG9fc3RyaW5nc19odW0gdCBhYyA9XG4gICAgKCogV2UgdXNlIFtTZXhwLnRvX3N0cmluZ19tYWNoXSwgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBpbXBsZW1lbnRpbmdcbiAgICAgICBbdG9fc3RyaW5nc19odW1dLCBiZWNhdXNlIHdlIHdhbnQgdGhlIGluZm8gdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUsIGFuZCBvbmNlIHdlJ3ZlXG4gICAgICAgaGFkIHRvIHJlc29ydCB0byBzZXhwcywgdGhlIG1lc3NhZ2UgaXMgZ29pbmcgdG8gc3RhcnQgbm90IGxvb2tpbmcgc28gcHJldHR5XG4gICAgICAgYW55d2F5LiAqKVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBzZXhwIC0+XG4gICAgICBcImNvdWxkIG5vdCBjb25zdHJ1Y3QgaW5mbzogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIChFeG4uc2V4cF9vZl90IGV4bikgOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIF8pIC0+IHRhZyA6OiBcIjogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiB0YWcgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBib2R5IGVsc2UgdGFnIDo6IFwiOiBcIiA6OiBib2R5XG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgdG9fc3RyaW5nc19odW0gdCAoXCJcXG5CYWNrdHJhY2U6XFxuXCIgOjogYmFja3RyYWNlIDo6IGFjKVxuICAgIHwgT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIHRzKSAtPlxuICAgICAgbGV0IHRzID1cbiAgICAgICAgbWF0Y2ggdHJ1bmNfYWZ0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHNcbiAgICAgICAgfCBTb21lIG1heCAtPlxuICAgICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggdHMgaW5cbiAgICAgICAgICBpZiBuIDw9IG1heFxuICAgICAgICAgIHRoZW4gdHNcbiAgICAgICAgICBlbHNlIExpc3QudGFrZSB0cyBtYXggQCBbIFN0cmluZyAoUHJpbnRmLnNwcmludGYgXCJhbmQgJWQgbW9yZSBpbmZvXCIgKG4gLSBtYXgpKSBdXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+XG4gICAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKGlmIExpc3QuaXNfZW1wdHkgYWMgdGhlbiBhYyBlbHNlIFwiOyBcIiA6OiBhYykpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gU3RyaW5nLmNvbmNhdCAodG9fc3RyaW5nc19odW0gdCBbXSlcblxuICBsZXQgcmVjIHRvX3NleHBzX2h1bSB0IGFjID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgXyBhcyB0IC0+IHNleHBfb2ZfdCB0IDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IEF0b20gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IEV4bi5zZXhwX29mX3QgZXhuIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgaGVyZSkgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKEF0b20gdGFnXG4gICAgICAgICA6OiBzZXhwXG4gICAgICAgICA6OlxuICAgICAgICAgKG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBoZXJlIC0+IFsgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlIF0pKVxuICAgICAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IExpc3QgKEF0b20gdGFnIDo6IHRvX3NleHBzX2h1bSB0IFtdKSA6OiBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBzZXhwIDo6IHRvX3NleHBzX2h1bSB0IFtdIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBMaXN0IGJvZHkgOjogYWMgZWxzZSBMaXN0IChBdG9tIHRhZyA6OiBib2R5KSA6OiBhY1xuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIFNleHAuTGlzdCBbIHRvX3NleHBfaHVtIHQ7IFNleHAuQXRvbSBiYWNrdHJhY2UgXSA6OiBhY1xuICAgIHwgT2ZfbGlzdCAoXywgdHMpIC0+XG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT4gdG9fc2V4cHNfaHVtIHQgYWMpXG5cbiAgYW5kIHRvX3NleHBfaHVtIHQgPVxuICAgIG1hdGNoIHRvX3NleHBzX2h1bSB0IFtdIHdpdGhcbiAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICB8IHNleHBzIC0+IFNleHAuTGlzdCBzZXhwc1xuICA7O1xuXG4gICgqIFdlIHVzZSBbcHJvdGVjdF0gdG8gZ3VhcmQgYWdhaW5zdCBleGNlcHRpb25zIHJhaXNlZCBieSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9ucywgc29cbiAgICAgdGhhdCBmYWlsdXJlIHRvIHByb2R1Y2Ugb25lIHBhcnQgb2YgYW4gaW5mbyBkb2Vzbid0IGludGVyZmVyZSB3aXRoIG90aGVyIHBhcnRzLiAqKVxuICBsZXQgcHJvdGVjdCBmID1cbiAgICB0cnkgZiAoKSB3aXRoXG4gICAgfCBleG4gLT4gQ291bGRfbm90X2NvbnN0cnVjdCAoRXhuLnNleHBfb2ZfdCBleG4pXG4gIDs7XG5cbiAgbGV0IG9mX2luZm8gaW5mbyA9IHByb3RlY3QgKGZ1biAoKSAtPiBMYXp5LmZvcmNlIGluZm8pXG4gIGxldCB0b19pbmZvIHQgPSBsYXp5IHRcbmVuZFxuXG5vcGVuIE1lc3NhZ2VcblxudHlwZSB0ID0gTWVzc2FnZS50IExhenkudFxuXG5sZXQgaW52YXJpYW50IF8gPSAoKVxubGV0IHRvX21lc3NhZ2UgPSBNZXNzYWdlLm9mX2luZm9cbmxldCBvZl9tZXNzYWdlID0gTWVzc2FnZS50b19pbmZvXG5cbigqIEl0IGlzIE9LIHRvIHVzZSBbTWVzc2FnZS50b19zZXhwX2h1bV0sIHdoaWNoIGlzIG5vdCBzdGFibGUsIGJlY2F1c2UgW3Rfb2Zfc2V4cF0gYmVsb3dcbiAgIGNhbiBoYW5kbGUgYW55IHNleHAuICopXG5sZXQgc2V4cF9vZl90IHQgPSBNZXNzYWdlLnRvX3NleHBfaHVtICh0b19tZXNzYWdlIHQpXG5sZXQgdF9vZl9zZXhwIHNleHAgPSBsYXp5IChNZXNzYWdlLlNleHAgc2V4cClcbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IEFueSBcIkluZm8udFwiIH1cbmxldCBjb21wYXJlIHQxIHQyID0gU2V4cC5jb21wYXJlIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgZXF1YWwgdDEgdDIgPSBTZXhwLmVxdWFsIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFNleHAuaGFzaF9mb2xkX3Qgc3RhdGUgKHNleHBfb2ZfdCB0KVxubGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcblxubGV0IHRvX3N0cmluZ19odW0gdCA9XG4gIG1hdGNoIHRvX21lc3NhZ2UgdCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gc1xuICB8IG1lc3NhZ2UgLT4gU2V4cC50b19zdHJpbmdfaHVtIChNZXNzYWdlLnRvX3NleHBfaHVtIG1lc3NhZ2UpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBNZXNzYWdlLnRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCAodG9fbWVzc2FnZSB0KVxubGV0IHRvX3N0cmluZ19tYWNoIHQgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX3QgdClcbmxldCBvZl9sYXp5IGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3NleHAgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTZXhwIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3QgbGF6eV90ID0gTGF6eS5qb2luIGxhenlfdFxubGV0IG9mX3N0cmluZyBtZXNzYWdlID0gTGF6eS5mcm9tX3ZhbCAoU3RyaW5nIG1lc3NhZ2UpXG5sZXQgY3JlYXRlZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgb2Zfc3RyaW5nIGZvcm1hdFxubGV0IG9mX3RodW5rIGYgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChmICgpKSkpXG5cbmxldCBjcmVhdGUgP2hlcmUgP3N0cmljdCB0YWcgeCBzZXhwX29mX3ggPVxuICBtYXRjaCBzdHJpY3Qgd2l0aFxuICB8IE5vbmUgLT4gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSkpXG4gIHwgU29tZSAoKSAtPiBvZl9tZXNzYWdlIChUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpXG47O1xuXG5sZXQgY3JlYXRlX3Mgc2V4cCA9IExhenkuZnJvbV92YWwgKFNleHAgc2V4cClcbmxldCB0YWcgdCB+dGFnID0gbGF6eSAoVGFnX3QgKHRhZywgdG9fbWVzc2FnZSB0KSlcblxubGV0IHRhZ19zX2xhenkgdCB+dGFnID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKFwiXCIsIExhenkuZm9yY2UgdGFnLCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCB0YWdfcyB0IH50YWcgPSB0YWdfc19sYXp5IHQgfnRhZzooTGF6eS5mcm9tX3ZhbCB0YWcpXG5cbmxldCB0YWdfYXJnIHQgdGFnIHggc2V4cF9vZl94ID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKHRhZywgc2V4cF9vZl94IHgsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IG9mX2xpc3QgP3RydW5jX2FmdGVyIHRzID0gbGF6eSAoT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIExpc3QubWFwIHRzIH5mOnRvX21lc3NhZ2UpKVxuXG5leGNlcHRpb24gRXhuIG9mIHRcblxubGV0ICgpID1cbiAgKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZVxuICAgICBbZXhjZXB0aW9uIEV4biBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXSAuLi4gW0BAQGVuZF1dIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmFcbiAgICAgd3JhcHBpbmcgb2YgXCIoRXhuIC4uLilcIi4gKilcbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4bl0gKGZ1bmN0aW9uXG4gICAgfCBFeG4gdCAtPiBzZXhwX29mX3QgdFxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgdG9fZXhuIHQgPVxuICBpZiBub3QgKExhenkuaXNfdmFsIHQpXG4gIHRoZW4gRXhuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTGF6eS5mb3JjZSB0IHdpdGhcbiAgICB8IE1lc3NhZ2UuRXhuIGV4biAtPiBleG5cbiAgICB8IF8gLT4gRXhuIHQpXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID1cbiAgbGV0IGJhY2t0cmFjZSA9XG4gICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBgR2V0IC0+IFNvbWUgKENhbWwuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgICB8IFNvbWUgKGBUaGlzIHMpIC0+IFNvbWUgc1xuICBpblxuICBtYXRjaCBleG4sIGJhY2t0cmFjZSB3aXRoXG4gIHwgRXhuIHQsIE5vbmUgLT4gdFxuICB8IEV4biB0LCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAodG9fbWVzc2FnZSB0LCBiYWNrdHJhY2UpKVxuICB8IF8sIE5vbmUgLT4gTGF6eS5mcm9tX3ZhbCAoTWVzc2FnZS5FeG4gZXhuKVxuICB8IF8sIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlIChTZXhwIChFeG4uc2V4cF9vZl90IGV4biksIGJhY2t0cmFjZSkpXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkluZm9cIlxuICAgIGxldCBwcCBwcGYgdCA9IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZ19odW0gdClcbiAgZW5kKVxuXG5tb2R1bGUgSW50ZXJuYWxfcmVwciA9IE1lc3NhZ2VcblxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbRXJyb3JdIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMuICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ld1xuICAgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5mb1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQW55IFwiRXJyb3IudFwiIH1cbmxldCByYWlzZSB0ID0gcmFpc2UgKHRvX2V4biB0KVxubGV0IHJhaXNlX3Mgc2V4cCA9IHJhaXNlIChjcmVhdGVfcyBzZXhwKVxubGV0IHRvX2luZm8gdCA9IHRcbmxldCBvZl9pbmZvIHQgPSB0XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXJyb3JcIlxuICAgIGxldCBwcCA9IHBwXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnZhcmlhbnRfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubGV0IGludmFyaWFudCBoZXJlIHQgc2V4cF9vZl90IGYgOiB1bml0ID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiXCIsIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgaGVyZVxuICAgICAgICAgOyBcImV4blwiLCBzZXhwX29mX2V4biBleG5cbiAgICAgICAgIDsgXCJcIiwgc2V4cF9vZl90IHRcbiAgICAgICAgIF0pXG47O1xuXG5sZXQgY2hlY2tfZmllbGQgdCBmIGZpZWxkID1cbiAgdHJ5IGYgKEZpZWxkLmdldCBmaWVsZCB0KSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJwcm9ibGVtIHdpdGggZmllbGRcIlxuICAgICAgICAgWyBcImZpZWxkXCIsIHNleHBfb2Zfc3RyaW5nIChGaWVsZC5uYW1lIGZpZWxkKTsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBSZXN1bHQgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgUmVzdWx0XG4gIGVuZFxuICB3aXRoIG1vZHVsZSBFcnJvciA6PSBSZXN1bHQuRXJyb3IpXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnRcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+IFJlc3VsdC5jb21wYXJlIF9jbXBfX2EgRXJyb3IuY29tcGFyZSBhX18wMDFfIGJfXzAwMl9cbjs7XG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT4gUmVzdWx0LmVxdWFsIF9jbXBfX2EgRXJyb3IuZXF1YWwgYV9fMDA3XyBiX18wMDhfXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgOlxuICAnYS5cbiAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAtPiAnYSB0XG4gIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgaHN2IGFyZyAtPiBSZXN1bHQuaGFzaF9mb2xkX3QgX2hhc2hfZm9sZF9hIEVycm9yLmhhc2hfZm9sZF90IGhzdiBhcmdcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAxM18geF9fMDE1XyAtPiBSZXN1bHQudF9vZl9zZXhwIF9vZl9hX18wMTNfIEVycm9yLnRfb2Zfc2V4cCB4X18wMTVfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMTZfIHhfXzAxN18gLT4gUmVzdWx0LnNleHBfb2ZfdCBfb2ZfYV9fMDE2XyBFcnJvci5zZXhwX29mX3QgeF9fMDE3X1xuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVzdWx0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIgRXJyb3IudF9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEVycm9yIGVycm9yIC0+IEVycm9yLmludmFyaWFudCBlcnJvclxuOztcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBSZXN1bHQuY29tYmluZSBmIHggfm9rOihmdW4gZiB4IC0+IGYgeCkgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBvayA9IFJlc3VsdC5va1xubGV0IGlzX29rID0gUmVzdWx0LmlzX29rXG5sZXQgaXNfZXJyb3IgPSBSZXN1bHQuaXNfZXJyb3JcblxubGV0IHRyeV93aXRoID8oYmFja3RyYWNlID0gZmFsc2UpIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4gP2JhY2t0cmFjZTooaWYgYmFja3RyYWNlIHRoZW4gU29tZSBgR2V0IGVsc2UgTm9uZSkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/YmFja3RyYWNlIGYgPSBqb2luICh0cnlfd2l0aCA/YmFja3RyYWNlIGYpXG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGVyciAtPiBFcnJvci5yYWlzZSBlcnJcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBFcnJvciAoRXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxuXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlID0gZnVuY3Rpb25cbiAgfCBPayBfIGFzIHogLT4gelxuICB8IEVycm9yIGV4biAtPiBvZl9leG4gP2JhY2t0cmFjZSBleG5cbjs7XG5cbmxldCBlcnJvciA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBFcnJvciAoRXJyb3IuY3JlYXRlID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBlcnJvcl9zIHNleHAgPSBFcnJvciAoRXJyb3IuY3JlYXRlX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbWVzc2FnZSA9IEVycm9yIChFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSlcbmxldCBlcnJvcmYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihmdW4gZSAtPiBFcnJvci50YWdfYXJnIGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIHMgPSBlcnJvciBcInVuaW1wbGVtZW50ZWRcIiBzIHNleHBfb2Zfc3RyaW5nXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IFJlc3VsdC5tYXBfZXJyb3IgKFJlc3VsdC5jb21iaW5lX2Vycm9ycyBsKSB+ZjpFcnJvci5vZl9saXN0XG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gUmVzdWx0Lm1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBsZXQgb2ssIGVycnMgPSBMaXN0LnBhcnRpdGlvbl9tYXAgbCB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gIG1hdGNoIG9rIHdpdGhcbiAgfCBbXSAtPiBFcnJvciAoRXJyb3Iub2ZfbGlzdCBlcnJzKVxuICB8IF8gLT4gT2sgb2tcbjs7XG5cbmxldCBmaW5kX29rIGwgPVxuICBtYXRjaCBMaXN0LmZpbmRfbWFwIGwgfmY6UmVzdWx0Lm9rIHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBPayBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgIG1hdGNoIGYgZWx0IHdpdGhcbiAgICAgICAgICAgIHwgT2sgXyBhcyB4IC0+IHJldHVybiB4XG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSkpXG47O1xuXG5sZXQgbWFwID0gUmVzdWx0Lm1hcFxubGV0IGl0ZXIgPSBSZXN1bHQuaXRlclxubGV0IGl0ZXJfZXJyb3IgPSBSZXN1bHQuaXRlcl9lcnJvclxuIiwiKCogVGhpcyBpcyBicm9rZW4gb2ZmIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBTaWduIGFuZCBDb21wYXJhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOZWdcbiAgfCBaZXJvXG4gIHwgUG9zXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbjAubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgc2V4cF9fMDAyXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3MgXSA6IHQgbGlzdClcblxuW0BAQGVuZF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xXG4gIHwgWmVybyAtPiAwXG4gIHwgUG9zIC0+IDFcbjs7XG5cbmxldCBfID0gaGFzaFxuXG4oKiBJZ25vcmUgdGhlIGhhc2ggZnVuY3Rpb24gcHJvZHVjZWQgYnkgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2hdICopXG5sZXQgaGFzaCA9IHRvX2ludFxubGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25cIlxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBOZWcgZWxzZSBpZiBuID0gMCB0aGVuIFplcm8gZWxzZSBQb3NcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gVFxuXG4gIGxldCBpc19wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPiAwXG4gIGxldCBpc19ub25fbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID49IDBcbiAgbGV0IGlzX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8IDBcbiAgbGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPD0gMFxuICBsZXQgc2lnbiB0ID0gU2lnbjAub2ZfaW50IChjb21wYXJlIHQgemVybylcbmVuZFxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIFBvbHlcbiAgZW5kXG5cbiAgaW5jbHVkZSBQb2x5XG5cbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlKVxuICBlbmRcblxuICBpbmNsdWRlIENcbmVuZFxuXG5sZXQgZ3QgY21wIGEgYiA9IGNtcCBhIGIgPiAwXG5sZXQgbHQgY21wIGEgYiA9IGNtcCBhIGIgPCAwXG5sZXQgZ2VxIGNtcCBhIGIgPSBjbXAgYSBiID49IDBcbmxldCBsZXEgY21wIGEgYiA9IGNtcCBhIGIgPD0gMFxubGV0IGVxdWFsIGNtcCBhIGIgPSBjbXAgYSBiID0gMFxubGV0IG5vdF9lcXVhbCBjbXAgYSBiID0gY21wIGEgYiA8PiAwXG5sZXQgbWluIGNtcCB0IHQnID0gaWYgbGVxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5sZXQgbWF4IGNtcCB0IHQnID0gaWYgZ2VxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5cbm1vZHVsZSBJbmZpeCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogSW5maXggd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGxldCAoID4gKSBhIGIgPSBndCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDwgKSBhIGIgPSBsdCBULmNvbXBhcmUgYSBiXG4gIGxldCAoID49ICkgYSBiID0gZ2VxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD0gKSBhIGIgPSBsZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA9ICkgYSBiID0gZXF1YWwgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PiApIGEgYiA9IG5vdF9lcXVhbCBULmNvbXBhcmUgYSBiXG5lbmRcblxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXggKFQpXG5cbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0IG1pbiB0IHQnID0gbWluIGNvbXBhcmUgdCB0J1xuICBsZXQgbWF4IHQgdCcgPSBtYXggY29tcGFyZSB0IHQnXG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmF0b3IuY29tcGFyZVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFBvbHltb3JwaGljX2NvbXBhcmUgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgdCB0JyA9IGNvbXBhcmUgdCcgdFxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgICAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgICAgIFtAQEBlbmRdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuKCogY29tcGFyZSBbeF0gYW5kIFt5XSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBmdW5jdGlvbnMgaW4gdGhlIGxpc3QgW2NtcHNdICopXG5sZXQgbGV4aWNvZ3JhcGhpYyBjbXBzIHggeSA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBjbXAgOjogY21wcyAtPlxuICAgICAgbGV0IHJlcyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIHJlcyA9IDAgdGhlbiBsb29wIGNtcHMgZWxzZSByZXNcbiAgICB8IFtdIC0+IDBcbiAgaW5cbiAgbG9vcCBjbXBzXG47O1xuXG5sZXQgbGlmdCBjbXAgfmYgeCB5ID0gY21wIChmIHgpIChmIHkpXG5sZXQgcmV2ZXJzZSBjbXAgeCB5ID0gY21wIHkgeFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaGFibGUuS2V5ICopXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cblxuICAoKiogVmFsdWVzIHJldHVybmVkIGJ5IFtoYXNoXSBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4gIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpbiB0aGVcbiAgICAgIGNhc2UgdGhhdCBbaGFzaF0gcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAqKVxuICB2YWwgaGFzaCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIEhhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgKCoqIFRoaXMgZnVuY3Rpb24gaXMgc291bmQgYnV0IG5vdCBjb21wbGV0ZSwgbWVhbmluZyB0aGF0IGlmIGl0IHJldHVybnMgW3RydWVdIHRoZW4gaXQnc1xuICAgICAgc2FmZSB0byB1c2UgdGhlIHR3byBpbnRlcmNoYW5nZWFibHkuICBJZiBpdCdzIFtmYWxzZV0sIHlvdSBoYXZlIG5vIGd1YXJhbnRlZXMuICBGb3JcbiAgICAgIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgID4gdXRvcFxuICAgICAgICBvcGVuIENvcmU7O1xuICAgICAgICBsZXQgZXF1YWwgKGEgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudCkgYiA9XG4gICAgICAgICAgcGh5c19lcXVhbCBhIGJcbiAgICAgICAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICAgICAgICA7O1xuICAgICAgICBsZXQgYSA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGxldCBiID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgZXF1YWwgYSBiOzsgICgqIGZhbHNlPyEgKilcbiAgICAgIF19XG4gICopXG4gIGxldCBlcXVhbCBhIGIgPVxuICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgaGFzaF9wYXJhbSA9IENhbWwuSGFzaHRibC5oYXNoX3BhcmFtXG4gIGxldCBoYXNoID0gQ2FtbC5IYXNodGJsLmhhc2hcbiAgbGV0IHBvbHkgPSB7IGhhc2g7IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIH1cblxuICBsZXQgb2Zfa2V5ICh0eXBlIGEpIChtb2R1bGUgS2V5IDogS2V5IHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIHsgaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICA7O1xuXG4gIGxldCB0b19rZXkgKHR5cGUgYSkgeyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQgOiBLZXlcbiAgICAgIHdpdGggdHlwZSB0ID0gYSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEhhc2hhYmxlXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlID0gc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEhhc2hhYmxlLnQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBwb2x5IDogJ2EgdFxuICB2YWwgb2Zfa2V5IDogKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSkgLT4gJ2EgdFxuICB2YWwgdG9fa2V5IDogJ2EgdCAtPiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKVxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogQXJnX3dpdGhfY29tcGFyYXRvcikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGFsbCA9IChbICgpIF0gOiB0IGxpc3QpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF91bml0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF91bml0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9ICh1bml0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3VuaXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gdW5pdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBjb21wYXJlIF8gXyA9IDBcblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiKClcIiAtPiAoKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkJhc2UuVW5pdC5vZl9zdHJpbmc6ICgpIGV4cGVjdGVkXCJcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Vbml0XCJcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbmxldCBpbnZhcmlhbnQgKCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXG5cbmxldCBnZXRfcG9zX2xlbiA/cG9zID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIHRyeSBSZXN1bHQuT2sgKGdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aCkgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgcyAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IGEgc2VhcmNoIGZvciB0aGUgZmlyc3QgKHJlc3AuIGxhc3QpIGVsZW1lbnRcbiAgIHNhdGlzZnlpbmcgYSBwcmVkaWNhdGUsIGFzc3VtaW5nIHRoYXQgdGhlIHByZWRpY2F0ZSBpcyBpbmNyZWFzaW5nIG9uXG4gICB0aGUgY29udGFpbmVyLCBtZWFuaW5nIHRoYXQsIGlmIHRoZSBjb250YWluZXIgaXMgW3UxLi4udW5dLCB0aGVyZSBleGlzdHMgYVxuICAgayBzdWNoIHRoYXQgcCh1MSk9Li4uLj1wKHVrKSA9IGZhbHNlIGFuZCBwKHVrKzEpPS4uLi49cCh1bik9IHRydWUuXG4gICBJZiB0aGlzIGsgPSAxIChyZXNwIG4pLCBmaW5kX2xhc3Rfbm90X3NhdGlzZnlpbmcgKHJlc3AgZmluZF9maXJzdF9zYXRpc2Z5aW5nKVxuICAgd2lsbCByZXR1cm4gTm9uZS4gKilcblxubGV0IHJlYyBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICBpZiBsbyA+IGhpXG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHByZWQgKGdldCB0IGxvKVxuICB0aGVuIFNvbWUgbG9cbiAgZWxzZSBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobG8gKyAxKSB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGEgY29udGFpbmVyIFt0XSwgYSBwcmVkaWNhdGUgW3ByZWRdIGFuZCB0d28gaW5kaWNlcyBbbG8gPCBoaV0sIHN1Y2ggdGhhdFxuICAgW3ByZWRdIGlzIGluY3JlYXNpbmcgb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXS5cblxuICAgcmV0dXJuIGEgcmFuZ2UgKGxvLCBoaSkgd2hlcmU6XG4gICAtIGxvIGFuZCBoaSBhcmUgY2xvc2UgZW5vdWdoIHRvZ2V0aGVyIGZvciBhIGxpbmVhciBzZWFyY2hcbiAgIC0gSWYgW3ByZWRdIGlzIG5vdCBjb25zdGFudGx5IFtmYWxzZV0gb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgb24gd2hpY2ggW3ByZWRdIGlzIFt0cnVlXSBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uICopXG4oKiBJbnZhcmlhbnQ6IHRoZSBmaXJzdCBlbGVtZW50IHNhdGlzZnlpbmcgW3ByZWRdLCBpZiBpdCBleGlzdHMgaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldICopXG5sZXQgcmVjIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgKCogV2FybmluZzogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCB0ZXJtaW5hdGUgaWYgdGhlIGNvbnN0YW50IChjdXJyZW50bHkgOCkgaXNcbiAgICAgc2V0IDw9IDEgKilcbiAgaWYgaGkgLSBsbyA8PSA4XG4gIHRoZW4gbG8sIGhpXG4gIGVsc2UgKFxuICAgIGxldCBtaWQgPSBsbyArICgoaGkgLSBsbykgLyAyKSBpblxuICAgIGlmIHByZWQgKGdldCB0IG1pZClcbiAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQgaXMgYmV0d2VlbiBbbG9dIGFuZCBbbWlkXSAqKVxuICAgIHRoZW5cbiAgICAgIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpOm1pZCB+cHJlZFxuICAgICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50LCBpZiBpdCBleGlzdHMsXG4gICAgICAgICBpcyBiZXR3ZWVuIFttaWQrMV0gYW5kIFtoaV0gKilcbiAgICBlbHNlIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KG1pZCArIDEpIH5oaSB+cHJlZClcbjs7XG5cbmxldCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsbyA9IHBvcyBpblxuICBsZXQgaGkgPSBwb3MgKyBsZW4gLSAxIGluXG4gIGxldCBsbywgaGkgPSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCBpblxuICBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGFuIGFycmF5IHdpdGggc2hhcGUgW3RydWUsLi4udHJ1ZSxmYWxzZSwuLi5mYWxzZV0gKGkuZS4sIHRoZSBfcmV2ZXJzZV8gb2Ygd2hhdFxuICAgaXMgZGVzY3JpYmVkIGFib3ZlKSBhbmQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJ1ZSBvciBOb25lIGlmIHRoZXJlIGFyZSBub1xuICAgdHJ1ZSopXG5sZXQgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfnByZWQgfmdldCB+bGVuZ3RoID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgICgqIFRoZSBsYXN0IHNhdGlzZnlpbmcgaXMgdGhlIG9uZSBqdXN0IGJlZm9yZSB0aGUgZmlyc3Qgbm90IHNhdGlzZnlpbmcgKilcbiAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgfnBvcyB+bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihGbi5ub24gcHJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICgqIFRoaXMgbWVhbnMgdGhhdCBhbGwgZWxlbWVudHMgc2F0aXNmeSBwcmVkLlxuICAgICAgIFRoZXJlIGlzIGF0IGxlYXN0IGFuIGVsZW1lbnQgYXMgKGxlbiA+IDApICopXG4gICAgfCBTb21lIGkgd2hlbiBpID0gcG9zIC0+IE5vbmUgKCogbm8gZWxlbWVudCBzYXRpc2ZpZXMgcHJlZCAqKVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKGkgLSAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+Y29tcGFyZSBob3cgdiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApXG4gIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMClcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IGlzX2xlZnQgeCA9XG4gICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICB8IGBSaWdodCAtPiBmYWxzZVxuICBpblxuICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX2xlZnRcbiAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19yaWdodFxuOztcbiIsIigqKiBNb2R1bGUgdHlwZXMgZm9yIGEgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9uIGZvciBhIHNlcXVlbmNlLCBhbmQgZnVuY3RvcnMgZm9yIGJ1aWxkaW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgSW1wb3J0XG5cbigqKiBBbiBbSW5kZXhhYmxlXSB0eXBlIGlzIGEgZmluaXRlIHNlcXVlbmNlIG9mIGVsZW1lbnRzIGluZGV4ZWQgYnkgY29uc2VjdXRpdmUgaW50ZWdlcnNcbiAgICBbMF0gLi4uIFtsZW5ndGggdCAtIDFdLiAgW2dldF0gYW5kIFtsZW5ndGhdIG11c3QgYmUgTygxKSBmb3IgdGhlIHJlc3VsdGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSB0byBiZSBsZyhuKS4gKilcbm1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gZWx0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9XG4gICAgKFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgIDsgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYExhc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICBdXG4gICAgIDogdCBsaXN0KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9vbl9sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9IChbIGBMYXN0X29uX2xlZnQ7IGBGaXJzdF9vbl9yaWdodCBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5lbmRcblxudHlwZSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBjb21wYXJlOignZWx0IC0+ICdrZXkgLT4gaW50KVxuICAtPiBXaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgLT4gJ2tleVxuICAtPiBpbnQgb3B0aW9uXG5cbnR5cGUgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IHNlZ21lbnRfb2Y6KCdlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAtPiBXaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gIC0+IGludCBvcHRpb25cblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAodCwgZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAodCwgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKCdhIHQsICdhLCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICgnYSB0LCAnYSkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCaW5hcnlfc2VhcmNoYWJsZSA9IHNpZ1xuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IEluZGV4YWJsZVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUxID0gSW5kZXhhYmxlMVxuXG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfa2V5ID0gV2hpY2hfdGFyZ2V0X2J5X2tleVxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBXaGljaF90YXJnZXRfYnlfc2VnbWVudFxuXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9ICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gIG1vZHVsZSBNYWtlIChUIDogSW5kZXhhYmxlKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IHdpdGggdHlwZSBlbHQgOj0gVC5lbHRcbiAgbW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlX2ludGZcblxubW9kdWxlIHR5cGUgQXJnID0gc2lnXG4gIHR5cGUgJ2EgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBlbHRcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBBcmcpID0gc3RydWN0XG4gIGxldCBnZXQgPSBULmdldFxuICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcblxuICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+Y29tcGFyZSBob3cgdlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5zZWdtZW50X29mIGhvd1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogSW5kZXhhYmxlKSA9IE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIHR5cGUgJ2EgZWx0ID0gVC5lbHRcbiAgICB0eXBlICdhIHQgPSBULnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA9IE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTZXF1ZW5jZV9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5cbiAgICAoU3JjIDogU2VxdWVuY2VfZ2VuKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgU3JjLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBTcmMudCwgJ2EgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdW5zYWZlX2JsaXQgPSBEc3QudW5zYWZlX2JsaXRcblxuICBsZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpzcmNfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpkc3RfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihEc3QubGVuZ3RoIGRzdCk7XG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IGJsaXRvXG4gICAgICAgIH5zcmNcbiAgICAgICAgPyhzcmNfcG9zID0gMClcbiAgICAgICAgPyhzcmNfbGVuID0gU3JjLmxlbmd0aCBzcmMgLSBzcmNfcG9zKVxuICAgICAgICB+ZHN0XG4gICAgICAgID8oZHN0X3BvcyA9IDApXG4gICAgICAgICgpXG4gICAgPVxuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuOnNyY19sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gICgqIFtzdWJdIGFuZCBbc3Vib10gZW5zdXJlIHRoYXQgZXZlcnkgcG9zaXRpb24gb2YgdGhlIGNyZWF0ZWQgc2VxdWVuY2UgaXMgcG9wdWxhdGVkIGJ5XG4gICAgIGFuIGVsZW1lbnQgb2YgdGhlIHNvdXJjZSBhcnJheS4gIFRodXMgZXZlcnkgZWxlbWVudCBvZiBbZHN0XSBiZWxvdyBpcyB3ZWxsXG4gICAgIGRlZmluZWQuICopXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIGxldCBkc3QgPSBEc3QuY3JlYXRlX2xpa2UgfmxlbiBzcmMgaW5cbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gICAgc3ViXG4gICAgICBzcmNcbiAgICAgIH5wb3NcbiAgICAgIH5sZW46XG4gICAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgfCBOb25lIC0+IFNyYy5sZW5ndGggc3JjIC0gcG9zKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgYmxpdFxuICBlbmQpID1cbiAgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSkgPSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IFNlcXVlbmNlLnRcblxuICAgIG9wZW4gU2VxdWVuY2VcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmRcblxuICBpbmNsdWRlIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0XG4gICAgKFNyYyA6IFNlcXVlbmNlKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBNYWtlX2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFNyYy50XG5cbiAgICAgIG9wZW4gU3JjXG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gRHN0LnRcblxuICAgICAgb3BlbiBEc3RcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICAgIGVuZClcblxubW9kdWxlIE1ha2VfdG9fc3RyaW5nIChUIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZClcbiAgICAoVG9fYnl0ZXMgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gVC50IHdpdGggdHlwZSBkc3QgOj0gYnl0ZXMpID1cbnN0cnVjdFxuICBvcGVuIFRvX2J5dGVzXG5cbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3ViIHNyYyB+cG9zIH5sZW4pXG4gIDs7XG5cbiAgbGV0IHN1Ym8gP3BvcyA/bGVuIHNyYyA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1Ym8gP3BvcyA/bGVuIHNyYylcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX29wdGlvblxuXG4gIGxldCBoYXNoX2ZvbGRfdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBoYXNoX2ZvbGRfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gICAgb3B0aW9uX29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBzZXhwX29mX29wdGlvblxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gb3B0aW9uX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gIHwgTm9uZVxuICB8IFNvbWUgb2YgJ2FcblxubGV0IGlzX25vbmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zb21lID0gZnVuY3Rpb25cbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB2YWx1ZV9tYXAgbyB+ZGVmYXVsdCB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiBmIHhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbjs7XG5cbmxldCBpdGVyIG8gfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcblxubGV0IGNhbGwgeCB+ZiA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiB4XG47O1xuXG5sZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgdmFsdWVfZXhuID9oZXJlID9lcnJvciA/bWVzc2FnZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGhlcmUsIGVycm9yLCBtZXNzYWdlIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBFcnJvci5vZl9zdHJpbmcgXCJPcHRpb24udmFsdWVfZXhuIE5vbmVcIlxuICAgICAgfCBOb25lLCBOb25lLCBTb21lIG0gLT4gRXJyb3Iub2Zfc3RyaW5nIG1cbiAgICAgIHwgTm9uZSwgU29tZSBlLCBOb25lIC0+IGVcbiAgICAgIHwgTm9uZSwgU29tZSBlLCBTb21lIG0gLT4gRXJyb3IudGFnIGUgfnRhZzptXG4gICAgICB8IFNvbWUgcCwgTm9uZSwgTm9uZSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgXCJPcHRpb24udmFsdWVfZXhuXCIgcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgTm9uZSwgU29tZSBtIC0+IEVycm9yLmNyZWF0ZSBtIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIFNvbWUgZSwgXyAtPlxuICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAodmFsdWUgbWVzc2FnZSB+ZGVmYXVsdDpcIlwiKVxuICAgICAgICAgIChlLCBwKVxuICAgICAgICAgIChzZXhwX29mX3BhaXIgRXJyb3Iuc2V4cF9vZl90IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QpXG4gICAgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IHZhbHVlX29yX3RodW5rIG8gfmRlZmF1bHQgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gZGVmYXVsdCAoKVxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIHggLT4gW3wgeCB8XVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIHggLT4gWyB4IF1cbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmU6XyA9IHRcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmU6XyA9IHRcblxubGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgdmFsdWVfbWFwIHQgfmRlZmF1bHQ6TS56ZXJvIH5mXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEnIC0+IGVxdWFsIGEgYSdcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgXyAtPiAxXG47O1xuXG5sZXQgaXNfZW1wdHkgPSBpc19ub25lXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIHggLT4gZiBpbml0IHhcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBhIC0+IGlmIGYgYSB0aGVuIDEgZWxzZSAwXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGlmIGYgeCB0aGVuIHQgZWxzZSBOb25lXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBlcXVhbCBmIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHgnIC0+IGYgeCB4J1xuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzb21lIHggPSBTb21lIHhcblxubGV0IGZpcnN0X3NvbWUgeCB5ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSBfIC0+IHhcbiAgfCBOb25lIC0+IHlcbjs7XG5cbmxldCBzb21lX2lmIGNvbmQgeCA9IGlmIGNvbmQgdGhlbiBTb21lIHggZWxzZSBOb25lXG5cbmxldCBtZXJnZSBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCB4IHwgeCwgTm9uZSAtPiB4XG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAoZiBhIGIpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHYgYXMgbyB3aGVuIGYgdiAtPiBvXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4geFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG47O1xuXG5sZXQgYXBwbHkgZiB4ID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmIC0+IG1hcCB+ZiB4XG47O1xuXG5tb2R1bGUgTW9uYWRfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgYXBwbHkgPSBhcHBseVxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgYmluZCBvIH5mID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoTW9uYWRfYXJnKVxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChNb25hZF9hcmcpXG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGVcblxubW9kdWxlIE9mX3NleHBhYmxlXG4gICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUxXG4gICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMlxuICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTNcbiAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zdHJpbmdhYmxlIChNIDogU3RyaW5nYWJsZS5TKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiU2V4cGFibGUuT2Zfc3RyaW5nYWJsZS50X29mX3NleHAgZXhwZWN0ZWQgYW4gYXRvbSwgYnV0IGdvdCBhIGxpc3RcIlxuICAgICAgICBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRWl0aGVyX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgRWl0aGVyMFxuXG5sZXQgc3dhcCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBTZWNvbmQgeFxuICB8IFNlY29uZCB4IC0+IEZpcnN0IHhcbjs7XG5cbmxldCBpc19maXJzdCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiB0cnVlXG4gIHwgU2Vjb25kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zZWNvbmQgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gZmFsc2VcbiAgfCBTZWNvbmQgXyAtPiB0cnVlXG47O1xuXG5sZXQgdmFsdWUgKEZpcnN0IHggfCBTZWNvbmQgeCkgPSB4XG5cbmxldCB2YWx1ZV9tYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gZmlyc3QgeFxuICB8IFNlY29uZCB4IC0+IHNlY29uZCB4XG47O1xuXG5sZXQgaXRlciA9IHZhbHVlX21hcFxuXG5sZXQgbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IEZpcnN0IChmaXJzdCB4KVxuICB8IFNlY29uZCB4IC0+IFNlY29uZCAoc2Vjb25kIHgpXG47O1xuXG5sZXQgZmlyc3QgeCA9IEZpcnN0IHhcbmxldCBzZWNvbmQgeCA9IFNlY29uZCB4XG5cbmxldCBlcXVhbCBlcTEgZXEyIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IGVxMSB4IHlcbiAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gZXEyIHggeVxuICB8IEZpcnN0IF8sIFNlY29uZCBfIHwgU2Vjb25kIF8sIEZpcnN0IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgZiBzID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IGYgeFxuICB8IFNlY29uZCB5IC0+IHMgeVxuOztcblxubW9kdWxlIE1ha2VfZm9jdXNlZCAoTSA6IHNpZ1xuICAgIHR5cGUgKCsnYSwgKydiKSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgdmFsIG90aGVyIDogJ2IgLT4gKF8sICdiKSB0XG4gICAgdmFsIGVpdGhlciA6ICgnYSwgJ2IpIHQgLT4gcmV0dXJuOignYSAtPiAnYykgLT4gb3RoZXI6KCdiIC0+ICdjKSAtPiAnY1xuXG4gICAgdmFsIGNvbWJpbmVcbiAgICAgIDogICgnYSwgJ2QpIHRcbiAgICAgIC0+ICgnYiwgJ2QpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICdiIC0+ICdjKVxuICAgICAgLT4gb3RoZXI6KCdkIC0+ICdkIC0+ICdkKVxuICAgICAgLT4gKCdjLCAnZCkgdFxuXG4gICAgdmFsIGJpbmQgOiAoJ2EsICdiKSB0IC0+IGY6KCdhIC0+ICgnYywgJ2IpIHQpIC0+ICgnYywgJ2IpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG4gIG9wZW4gV2l0aF9yZXR1cm5cblxuICBsZXQgbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSlcblxuICBpbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcHAgPSBBcHBsaWNhdGl2ZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYXBwbHkgdDEgdDIgPSBiaW5kIHQxIH5mOihmdW4gZiAtPiBiaW5kIHQyIH5mOihmdW4geCAtPiByZXR1cm4gKGYgeCkpKVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQXBwXG5cbiAgbGV0IGNvbWJpbmVfYWxsID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0cylcbiAgICAgICAgICB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2MgbykgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyXG4gICAgICAgICAgdFxuICAgICAgICAgIH5yZXR1cm46KGZ1biB4IC0+IHJldHVybl9sb29wIGYgKHggOjogYWNjKSB0cylcbiAgICAgICAgICB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiBvIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgW10gdHNcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGxfdW5pdCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyXG4gICAgICAgICAgdFxuICAgICAgICAgIH5yZXR1cm46KGZ1biAoKSAtPiBvdGhlcl9sb29wIGYgYWNjIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlciB0IH5yZXR1cm46KGZ1biAoKSAtPiByZXR1cm5fbG9vcCBmIHRzKSB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiBvIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgdHNcbiAgOztcblxuICBsZXQgdG9fb3B0aW9uIHQgPSBlaXRoZXIgdCB+cmV0dXJuOk9wdGlvbi5zb21lIH5vdGhlcjooZnVuIF8gLT4gTm9uZSlcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBlaXRoZXIgdCB+cmV0dXJuOkZuLmlkIH5vdGhlcjooZnVuIF8gLT4gZGVmYXVsdClcblxuICBsZXQgd2l0aF9yZXR1cm4gZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByZXQgLT4gb3RoZXIgKGYgKFdpdGhfcmV0dXJuLnByZXBlbmQgcmV0IH5mOnJldHVybikpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGaXJzdCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCByZXR1cm4gPSBmaXJzdFxuICAgIGxldCBvdGhlciA9IHNlY29uZFxuXG4gICAgbGV0IGVpdGhlciB0IH5yZXR1cm4gfm90aGVyID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IHJldHVybiB4XG4gICAgICB8IFNlY29uZCB5IC0+IG90aGVyIHlcbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKGYgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChvdGhlciB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBfIHwgXywgU2Vjb25kIHggLT4gU2Vjb25kIHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLiAqKVxuICAgICAgfCBTZWNvbmQgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBTZWNvbmQgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gc2Vjb25kXG4gICAgbGV0IG90aGVyID0gZmlyc3RcblxuICAgIGxldCBlaXRoZXIgdCB+cmV0dXJuIH5vdGhlciA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU2Vjb25kIHkgLT4gcmV0dXJuIHlcbiAgICAgIHwgRmlyc3QgeCAtPiBvdGhlciB4XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChmIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAob3RoZXIgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBfIHwgXywgRmlyc3QgeCAtPiBGaXJzdCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24sIGxpa2UgW0ZpcnN0LmJpbmRdIGFib3ZlLiAqKVxuICAgICAgfCBGaXJzdCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnZiwgJ3MpIF9laXRoZXIgPSAoJ2YsICdzKSB0ID1cbiAgICB8IEZpcnN0IG9mICdmXG4gICAgfCBTZWNvbmQgb2YgJ3NcbmVuZFxuIiwiaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lcl9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBpdGVyaSB+Zm9sZCB0IH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIH5mb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyB2IC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIHYgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpXG47O1xuXG5sZXQgY291bnRpIH5mb2xkaSB0IH5mID0gZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaSBuIGEgLT4gaWYgZiBpIGEgdGhlbiBuICsgMSBlbHNlIG4pXG5cbmxldCBleGlzdHNpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGZvcl9hbGxpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBub3QgKGYgaSB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiAoU29tZSAoaSwgeCkpKTtcbiAgICBOb25lKVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogc2lnXG4gICAgaW5jbHVkZSBDb250YWluZXJfaW50Zi5NYWtlX2dlbl9hcmdcblxuICAgIHZhbCBpdGVyaSA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EgdCwgJ2EgZWx0KSBpdGVyaSBdXG4gICAgdmFsIGZvbGRpIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICgnYSB0LCAnYSBlbHQsIF8pIGZvbGRpIF1cbiAgZW5kKSA6IEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb250YWluZXIuTWFrZV9nZW4gKFQpXG5cbiAgbGV0IGl0ZXJpID1cbiAgICBtYXRjaCBULml0ZXJpIHdpdGhcbiAgICB8IGBDdXN0b20gaXRlcmkgLT4gaXRlcmlcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyaSB+Zm9sZCB0IH5mXG4gIDs7XG5cbiAgbGV0IGZvbGRpID1cbiAgICBtYXRjaCBULmZvbGRpIHdpdGhcbiAgICB8IGBDdXN0b20gZm9sZGkgLT4gZm9sZGlcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+aW5pdCB+ZiAtPiBmb2xkaSB+Zm9sZCB0IH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID0gY291bnRpIH5mb2xkaSB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBleGlzdHNpIH5pdGVyaSB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gZm9yX2FsbGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRfbWFwaSB0IH5mID0gZmluZF9tYXBpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kaSB0IH5mID0gZmluZGkgfml0ZXJpIHQgfmZcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChUKVxuXG4gICgqIE5vdCBwYXJ0IG9mIFtDb250YWluZXIuR2VuZXJpY10uICopXG4gIGxldCBtZW0gPSBDLm1lbVxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UwIChUKVxuXG4gICgqIE5vdCBwYXJ0IG9mIFtDb250YWluZXIuR2VuZXJpY10uICopXG4gIGxldCBtZW0gPSBDLm1lbVxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29udGFpbmVyX2ludGYuRXhwb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBMaXN0ID0gTGlzdDFcblxubW9kdWxlIFN0ZXAgPSBzdHJ1Y3RcbiAgKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mXG4gICAgIHRoZSBzZXF1ZW5jZSAqKVxuICB0eXBlICgnYSwgJ3MpIHQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiAnc1xuICAgIHwgWWllbGQgb2YgJ2EgKiAnc1xuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAncy5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAncykgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XyBzX18wMTBfKVxuICAgICAgICA6ICAoKGFfXzAwOV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDEwXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDA5Xywgc19fMDEwXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzAwMV8gX29mX3NfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkRvbmVcIlxuICAgICAgICB8IFNraXAgYXJnMF9fMDAzXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wMDRfID0gX29mX3NfXzAwMl8gYXJnMF9fMDAzXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNraXBcIjsgcmVzMF9fMDA0XyBdXG4gICAgICAgIHwgWWllbGQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzAwN18gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDVfXG4gICAgICAgICAgYW5kIHJlczFfXzAwOF8gPSBfb2Zfc19fMDAyXyBhcmcxX18wMDZfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiWWllbGRcIjsgcmVzMF9fMDA3XzsgcmVzMV9fMDA4XyBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5vcGVuIFN0ZXBcblxuKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgc2VxdWVuY2UgKilcbnR5cGUgK18gdCA9IFNlcXVlbmNlIDogJ3MgKiAoJ3MgLT4gKCdhLCAncykgU3RlcC50KSAtPiAnYSB0XG50eXBlICdhIHNlcXVlbmNlID0gJ2EgdFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBuZXh0X3N0ZXAgKFNlcXVlbmNlIChzLCBmKSkgPVxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPiBTa2lwIChTZXF1ZW5jZSAocywgZikpXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIFNlcXVlbmNlIChzLCBmKSlcbiAgOztcblxuICBsZXQgZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGxvb3AgcyBuZXh0IGZpbmlzaCBmIGFjYyA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICAgIHwgU2tpcCBzIC0+IGYgYWNjIE5vbmUgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gZiBhY2MgKFNvbWUgYSkgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZmluaXNoIGYgaW5pdFxuICA7O1xuZW5kXG5cbmxldCB1bmZvbGRfc3RlcCB+aW5pdCB+ZiA9IFNlcXVlbmNlIChpbml0LCBmKVxuXG5sZXQgdW5mb2xkIH5pbml0IH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6KGZ1biBzIC0+XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RlcC5Eb25lXG4gICAgfCBTb21lIChhLCBzKSAtPiBTdGVwLllpZWxkIChhLCBzKSlcbjs7XG5cbmxldCB1bmZvbGRfd2l0aCBzIH5pbml0IH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKGluaXQsIHMpXG4gICAgICAsIGZ1biAoc2VlZCwgcykgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoc2VlZCwgcylcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgICAgICAobWF0Y2ggZiBzZWVkIGEgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgc2VlZCAtPiBTa2lwIChzZWVkLCBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzZWVkKSAtPiBZaWVsZCAoYSwgKHNlZWQsIHMpKSkgKVxuOztcblxubGV0IHVuZm9sZF93aXRoX2FuZF9maW5pc2ggcyB+aW5pdCB+cnVubmluZ19zdGVwIH5pbm5lcl9maW5pc2hlZCB+ZmluaXNoaW5nX3N0ZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgSW5uZXJfcnVubmluZyAoaW5pdCwgcylcbiAgICAgICwgZnVuIHN0YXRlIC0+XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IGlubmVyX3N0YXRlIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IFNraXAgKGBJbm5lcl9maW5pc2hlZCAoaW5uZXJfZmluaXNoZWQgc3RhdGUpKVxuICAgICAgICAgICB8IFNraXAgaW5uZXJfc3RhdGUgLT4gU2tpcCAoYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpXG4gICAgICAgICAgIHwgWWllbGQgKHgsIGlubmVyX3N0YXRlKSAtPlxuICAgICAgICAgICAgIChtYXRjaCBydW5uaW5nX3N0ZXAgc3RhdGUgeCB3aXRoXG4gICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgIHwgU2tpcCBzdGF0ZSAtPiBTa2lwIChgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSlcbiAgICAgICAgICAgICAgfCBZaWVsZCAoeSwgc3RhdGUpIC0+IFlpZWxkICh5LCBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSkpKVxuICAgICAgICB8IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSAtPlxuICAgICAgICAgIChtYXRjaCBmaW5pc2hpbmdfc3RlcCBzdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzdGF0ZSAtPiBTa2lwIChgSW5uZXJfZmluaXNoZWQgc3RhdGUpXG4gICAgICAgICAgIHwgWWllbGQgKHksIHN0YXRlKSAtPiBZaWVsZCAoeSwgYElubmVyX2ZpbmlzaGVkIHN0YXRlKSkgKVxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OmwgfmY6KGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBEb25lXG4gICAgfCB4IDo6IGwgLT4gWWllbGQgKHgsIGwpKVxuOztcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgdiBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+IHZcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgdiBuZXh0IGZcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBsb29wIHMgKGYgdiBhKSBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBpbml0IG5leHQgZlxuOztcblxubGV0IHRvX2xpc3RfcmV2IHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKVxuXG5cbmxldCB0b19saXN0IChTZXF1ZW5jZSAocywgbmV4dCkpID1cbiAgbGV0IHNhZmVfdG9fbGlzdCB0ID0gTGlzdC5yZXYgKHRvX2xpc3RfcmV2IHQpIGluXG4gIGxldCByZWMgdG9fbGlzdCBzIG5leHQgaSA9XG4gICAgaWYgaSA9IDBcbiAgICB0aGVuIHNhZmVfdG9fbGlzdCAoU2VxdWVuY2UgKHMsIG5leHQpKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBbXVxuICAgICAgfCBTa2lwIHMgLT4gdG9fbGlzdCBzIG5leHQgaVxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gYSA6OiB0b19saXN0IHMgbmV4dCAoaSAtIDEpKVxuICBpblxuICB0b19saXN0IHMgbmV4dCA1MDBcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF92IHN0b3BfdiA9XG4gIGxldCBzdGVwID1cbiAgICBtYXRjaCBzdG9wIHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgICB8IGBpbmNsdXNpdmUgLT4gZnVuIGkgLT4gaWYgaSA8IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgICB8IGBleGNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgZXhjbHVzaXZlIC0+IGZ1biBpIC0+IGlmIGkgPD0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICBpblxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF92XG4gICAgfCBgZXhjbHVzaXZlIC0+IHN0YXJ0X3YgKyBzdHJpZGVcbiAgaW5cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6c3RlcFxuOztcblxubGV0IG9mX2xhenkgdF9sYXp5ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6dF9sYXp5IH5mOihmdW4gdF9sYXp5IC0+XG4gICAgbGV0IChTZXF1ZW5jZSAocywgbmV4dCkpID0gTGF6eS5mb3JjZSB0X2xhenkgaW5cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMgLT5cbiAgICAgIFNraXBcbiAgICAgICAgKGxldCB2ID0gU2VxdWVuY2UgKHMsIG5leHQpIGluXG4gICAgICAgICBsYXp5IHYpXG4gICAgfCBZaWVsZCAoeCwgcykgLT5cbiAgICAgIFlpZWxkXG4gICAgICAgICggeFxuICAgICAgICAsIGxldCB2ID0gU2VxdWVuY2UgKHMsIG5leHQpIGluXG4gICAgICAgICAgbGF6eSB2ICkpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzZWVkXG4gICAgICAsIGZ1biBzZWVkIC0+XG4gICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoZiBhLCBzKSApXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGYgaSBhLCAoaSArIDEsIHMpKSApXG47O1xuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQgfmY6KGZ1biBhY2MgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGFjYyB4IGluXG4gICAgWWllbGQgKHgsIGFjYykpXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBpIGFjYyB4IGluXG4gICAgWWllbGQgKHgsIChpICsgMSwgYWNjKSkpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzZWVkXG4gICAgICAsIGZ1biBzZWVkIC0+XG4gICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBZaWVsZCAoYSwgcylcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gU2tpcCBzIClcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBtYXAgfmY6c25kIChmaWx0ZXIgKG1hcGkgdCB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpKVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBpIHMgbmV4dFxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgKGkgKyAxKSBzIG5leHRcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0ID0gZm9sZCB0IH5pbml0OihbXSwgMCkgfmY6KGZ1biAobCwgaSkgeCAtPiB4IDo6IGwsIGkgKyAxKVxuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIGxldCBsLCBsZW4gPSB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0IGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCB4IDo6IGwgLT5cbiAgICBsZXQgYSA9IEFycmF5LmNyZWF0ZSB+bGVuIHggaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGEuKGkpIDwtIHg7XG4gICAgICAgIGxvb3AgKGkgLSAxKSBsXG4gICAgaW5cbiAgICBsb29wIChsZW4gLSAyKSBsO1xuICAgIGFcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgYSAtPiBTb21lIGFcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZlxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBmIGkgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gbm90IChmIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gbm90IChmIGkgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBhIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGkgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+ICgpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICBmIGE7XG4gICAgICBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgXyAtPiBmYWxzZVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgYSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChiLCBfKSB3aGVuIGVxdWFsIGEgYiAtPiB0cnVlXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgYVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgYVxuOztcblxubGV0IGVtcHR5ID0gU2VxdWVuY2UgKCgpLCBmdW4gKCkgLT4gRG9uZSlcblxubGV0IGJpbmQgdCB+ZiA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSwgcmVzdCAtPlxuICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChlbXB0eSwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICAgICAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gU2tpcCAoZiBhLCBTZXF1ZW5jZSAocywgbmV4dCkpKSlcbiAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBuZXh0KSwgcmVzdClcbiAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCAoU2VxdWVuY2UgKHMsIG5leHQpLCByZXN0KSkpKVxuICAgIH5pbml0OihlbXB0eSwgdClcbjs7XG5cbmxldCByZXR1cm4geCA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OihTb21lIHgpIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBEb25lXG4gICAgfCBTb21lIHggLT4gWWllbGQgKHgsIE5vbmUpKVxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICBlbmQpXG5cbmxldCBudGggcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IE5vbmVcbiAgICAgIHwgU2tpcCBzIC0+IGxvb3AgaSBzIG5leHRcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGlmIHBoeXNfZXF1YWwgaSAwIHRoZW4gU29tZSBhIGVsc2UgbG9vcCAoaSAtIDEpIHMgbmV4dFxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBuIHMgbmV4dClcbjs7XG5cbmxldCBudGhfZXhuIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5udGhcIlxuICBlbHNlIChcbiAgICBtYXRjaCBudGggcyBuIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5udGhcIlxuICAgIHwgU29tZSB4IC0+IHgpXG47O1xuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMTFfIGJfXzAxMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxMV8sIGJfXzAxMl8gd2l0aFxuICAgICAgfCBMZWZ0IF9hX18wMTNfLCBMZWZ0IF9iX18wMTRfIC0+IF9jbXBfX2EgX2FfXzAxM18gX2JfXzAxNF9cbiAgICAgIHwgTGVmdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIExlZnQgXyAtPiAxXG4gICAgICB8IFJpZ2h0IF9hX18wMTVfLCBSaWdodCBfYl9fMDE2XyAtPiBfY21wX19iIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IFJpZ2h0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgUmlnaHQgXyAtPiAxXG4gICAgICB8IEJvdGggKF9hX18wMTdfLCBfYV9fMDE5XyksIEJvdGggKF9iX18wMThfLCBfYl9fMDIwXykgLT5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2EgX2FfXzAxN18gX2JfXzAxOF8gd2l0aFxuICAgICAgICAgfCAwIC0+IF9jbXBfX2IgX2FfXzAxOV8gX2JfXzAyMF9cbiAgICAgICAgIHwgbiAtPiBuKSlcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RcbiAgICA6IHR5cGUgYSBiLlxuICAgICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAgIC0+IChhLCBiKSB0XG4gICAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgZnVuIF9oYXNoX2ZvbGRfYSBfaGFzaF9mb2xkX2IgaHN2IGFyZyAtPlxuICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgIHwgTGVmdCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gICAgICB8IFJpZ2h0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbiAgICAgIHwgQm90aCAoX2EwLCBfYTEpIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDIgaW5cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gICAgICAgIGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2ExXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA0NF8gYl9fMDQ1XylcbiAgICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDQ0XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wNDVfKVxuICAgICAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50IC0+IChhX18wNDRfLCBiX18wNDVfKSB0KSAtPlxuICAgICAgbGV0IGVycm9yX3NvdXJjZV9fMDI1XyA9IFwic2VxdWVuY2UubWwuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudFwiIGluXG4gICAgICBmdW4gX29mX2FfXzAyMV8gX29mX2JfXzAyMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBfdGFnX18wMjhfKSA6OiBzZXhwX2FyZ3NfXzAyOV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAyN18gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjlfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzMF8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzFfID0gX29mX2FfXzAyMV8gYXJnMF9fMDMwXyBpblxuICAgICAgICAgICAgIExlZnQgcmVzMF9fMDMxX1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNV9cbiAgICAgICAgICAgICAgIF90YWdfXzAyOF9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMjdfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwicmlnaHRcIiB8IFwiUmlnaHRcIikgYXMgX3RhZ19fMDMzXykgOjogc2V4cF9hcmdzX18wMzRfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMzJfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDM0XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzVfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDM2XyA9IF9vZl9iX18wMjJfIGFyZzBfXzAzNV8gaW5cbiAgICAgICAgICAgICBSaWdodCByZXMwX18wMzZfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDMzX1xuICAgICAgICAgICAgICAgX3NleHBfXzAzMl8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgX3RhZ19fMDM4XykgOjogc2V4cF9hcmdzX18wMzlfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMzdfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDM5XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wNDBfOyBhcmcxX18wNDFfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDQyXyA9IF9vZl9hX18wMjFfIGFyZzBfXzA0MF9cbiAgICAgICAgICAgICBhbmQgcmVzMV9fMDQzXyA9IF9vZl9iX18wMjJfIGFyZzFfXzA0MV8gaW5cbiAgICAgICAgICAgICBCb3RoIChyZXMwX18wNDJfLCByZXMxX18wNDNfKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNV9cbiAgICAgICAgICAgICAgIF90YWdfXzAzOF9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzdfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicmlnaHRcIiB8IFwiUmlnaHRcIikgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjRfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAyNF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICAgICAgICB8IHNleHBfXzAyNF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjRfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ2IuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA1Nl8gYl9fMDU3XylcbiAgICAgICAgOiAgKChhX18wNTZfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzA1N18gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzA1Nl8sIGJfXzA1N18pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wNDZfIF9vZl9iX18wNDdfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTGVmdCBhcmcwX18wNDhfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA0OV8gPSBfb2ZfYV9fMDQ2XyBhcmcwX18wNDhfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyByZXMwX18wNDlfIF1cbiAgICAgICAgfCBSaWdodCBhcmcwX18wNTBfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1MV8gPSBfb2ZfYl9fMDQ3XyBhcmcwX18wNTBfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgcmVzMF9fMDUxXyBdXG4gICAgICAgIHwgQm90aCAoYXJnMF9fMDUyXywgYXJnMV9fMDUzXykgLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDU0XyA9IF9vZl9hX18wNDZfIGFyZzBfXzA1Ml9cbiAgICAgICAgICBhbmQgcmVzMV9fMDU1XyA9IF9vZl9iX18wNDdfIGFyZzFfXzA1M18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJCb3RoXCI7IHJlczBfXzA1NF87IHJlczFfXzA1NV8gXVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiQm90aFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtZXJnZV93aXRoX2R1cGxpY2F0ZXMgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpIH5jb21wYXJlID1cbiAgbGV0IHVuc2hhZG93ZWRfY29tcGFyZSA9IGNvbXBhcmUgaW5cbiAgbGV0IG9wZW4gTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgaW5cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgKFlpZWxkIChhLCBzMScpIGFzIHMxKSwgKFlpZWxkIChiLCBzMicpIGFzIHMyKSAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSB1bnNoYWRvd2VkX2NvbXBhcmUgYSBiIGluXG4gICAgICBpZiBjb21wYXJpc29uIDwgMFxuICAgICAgdGhlbiBZaWVsZCAoTGVmdCBhLCAoU2tpcCBzMScsIHMyKSlcbiAgICAgIGVsc2UgaWYgY29tcGFyaXNvbiA9IDBcbiAgICAgIHRoZW4gWWllbGQgKEJvdGggKGEsIGIpLCAoU2tpcCBzMScsIFNraXAgczInKSlcbiAgICAgIGVsc2UgWWllbGQgKFJpZ2h0IGIsIChzMSwgU2tpcCBzMicpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChMZWZ0IGEsIChTa2lwIHMxLCBEb25lKSlcbiAgICB8IERvbmUsIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKFJpZ2h0IGIsIChEb25lLCBTa2lwIHMyKSlcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWQgczEgczIgfmNvbXBhcmUgPVxuICBtYXAgKG1lcmdlX3dpdGhfZHVwbGljYXRlcyBzMSBzMiB+Y29tcGFyZSkgfmY6KGZ1bmN0aW9uXG4gICAgfCBMZWZ0IHggfCBSaWdodCB4IHwgQm90aCAoeCwgXykgLT4geClcbjs7XG5cbmxldCAobWVyZ2UgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAyMS0wN10gRm9yIGlkZW50aWNhbCBiZWhhdmlvciwgdXNlIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRdLCBidXQgY29uc2lkZXIgdXNpbmcgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX3NvcnRlZF0gaW5zdGVhZC5cIl0pXG4gID1cbiAgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXG47O1xuXG5sZXQgbWVyZ2Vfc29ydGVkIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSB+Y29tcGFyZSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgICB8IChZaWVsZCAoYSwgczEnKSBhcyBzMSksIChZaWVsZCAoYiwgczInKSBhcyBzMikgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPD0gMCB0aGVuIFlpZWxkIChhLCAoU2tpcCBzMScsIHMyKSkgZWxzZSBZaWVsZCAoYiwgKHMxLCBTa2lwIHMyJykpXG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKGEsIChTa2lwIHMxLCBEb25lKSlcbiAgICB8IERvbmUsIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKGIsIChEb25lLCBTa2lwIHMyKSlcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCBoZCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCAoYSwgXykgLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGhkX2V4biBzID1cbiAgbWF0Y2ggaGQgcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcImhkX2V4blwiXG4gIHwgU29tZSBhIC0+IGFcbjs7XG5cbmxldCB0bCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCAoXywgYSkgLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIChtYXRjaCBsb29wIHMgbmV4dCB3aXRoXG4gICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIHwgU29tZSBzIC0+IFNvbWUgKFNlcXVlbmNlIChzLCBuZXh0KSkpXG47O1xuXG5sZXQgdGxfZWFnZXJseV9leG4gcyA9XG4gIG1hdGNoIHRsIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS50bF9leG5cIlxuICB8IFNvbWUgcyAtPiBzXG47O1xuXG5sZXQgbGlmdF9pZGVudGl0eSBuZXh0IHMgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IERvbmUgLT4gRG9uZVxuICB8IFNraXAgcyAtPiBTa2lwIChgSWRlbnRpdHkgcylcbiAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBJZGVudGl0eSBzKVxuOztcblxubGV0IG5leHQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKGEsIHMpIC0+IFNvbWUgKGEsIFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgZmlsdGVyX29wdCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc1xuICAgICAgLCBmdW4gcyAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoTm9uZSwgcykgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKFNvbWUgYSwgcykgLT4gWWllbGQgKGEsIHMpIClcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHMgfmYgPSBmaWx0ZXJfb3B0IChtYXAgcyB+ZilcbmxldCBmaWx0ZXJfbWFwaSBzIH5mID0gZmlsdGVyX21hcCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IHNwbGl0X24gcyBuID1cbiAgbGV0IHJlYyBsb29wIHMgaSBhY2N1bSBuZXh0ID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIExpc3QucmV2IGFjY3VtLCBTZXF1ZW5jZSAocywgbmV4dClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTGlzdC5yZXYgYWNjdW0sIGVtcHR5XG4gICAgICB8IFNraXAgcyAtPiBsb29wIHMgaSBhY2N1bSBuZXh0XG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBsb29wIHMgKGkgLSAxKSAoYSA6OiBhY2N1bSkgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuIFtdIG5leHRcbjs7XG5cbmxldCBjaHVua3NfZXhuIHQgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY2h1bmtzX2V4blwiXG4gIGVsc2VcbiAgICB1bmZvbGRfc3RlcCB+aW5pdDp0IH5mOihmdW4gdCAtPlxuICAgICAgbWF0Y2ggc3BsaXRfbiB0IG4gd2l0aFxuICAgICAgfCBbXSwgX2VtcHR5IC0+IERvbmVcbiAgICAgIHwgKF8gOjogXyBhcyB4cyksIHQgLT4gWWllbGQgKHhzLCB0KSlcbjs7XG5cbmxldCBmaW5kaSBzIH5mID0gZmluZCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IGZpbmRfZXhuIHMgfmYgPVxuICBtYXRjaCBmaW5kIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5maW5kX2V4blwiXG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBtYXRjaCBzMSwgczIgd2l0aFxuICB8IFNlcXVlbmNlIChzMSwgbmV4dDEpLCBTZXF1ZW5jZSAoczIsIG5leHQyKSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBGaXJzdF9saXN0IHMxXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYEZpcnN0X2xpc3QgczEgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dDEgczEgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gU2tpcCAoYFNlY29uZF9saXN0IHMyKVxuICAgICAgICAgICB8IFNraXAgczEgLT4gU2tpcCAoYEZpcnN0X2xpc3QgczEpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMxKSAtPiBZaWVsZCAoYSwgYEZpcnN0X2xpc3QgczEpKVxuICAgICAgICB8IGBTZWNvbmRfbGlzdCBzMiAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0MiBzMiB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzMiAtPiBTa2lwIChgU2Vjb25kX2xpc3QgczIpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMyKSAtPiBZaWVsZCAoYSwgYFNlY29uZF9saXN0IHMyKSkgKVxuOztcblxubGV0IGNvbmNhdF9tYXAgcyB+ZiA9IGJpbmQgcyB+ZlxubGV0IGNvbmNhdCBzID0gY29uY2F0X21hcCBzIH5mOkZuLmlkXG5sZXQgY29uY2F0X21hcGkgcyB+ZiA9IGNvbmNhdF9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCB6aXAgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgKGEsIHMxKSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoKGEsIGIpLCAoU2tpcCBzMSwgU2tpcCBzMikpXG4gICAgfCBEb25lLCBfIHwgXywgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgemlwX2Z1bGwgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgKGEsIHMxKSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYEJvdGggKGEsIGIpLCAoU2tpcCBzMSwgU2tpcCBzMikpXG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgICB8IERvbmUsIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKGBSaWdodCBiLCAoRG9uZSwgbmV4dDIgczIpKVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoYExlZnQgYSwgKG5leHQxIHMxLCBEb25lKSlcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCBib3VuZGVkX2xlbmd0aCAoU2VxdWVuY2UgKHNlZWQsIG5leHQpKSB+YXRfbW9zdCA9XG4gIGxldCByZWMgbG9vcCBpIHNlZWQgbmV4dCA9XG4gICAgaWYgaSA+IGF0X21vc3RcbiAgICB0aGVuIGBHcmVhdGVyXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgfCBEb25lIC0+IGBJcyBpXG4gICAgICB8IFNraXAgc2VlZCAtPiBsb29wIGkgc2VlZCBuZXh0XG4gICAgICB8IFlpZWxkIChfLCBzZWVkKSAtPiBsb29wIChpICsgMSkgc2VlZCBuZXh0KVxuICBpblxuICBsb29wIDAgc2VlZCBuZXh0XG47O1xuXG5sZXQgbGVuZ3RoX2lzX2JvdW5kZWRfYnkgPyhtaW4gPSAtMSkgP21heCB0ID1cbiAgbGV0IGxlbmd0aF9pc19hdF9sZWFzdCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gICAgbGV0IHJlYyBsb29wIHMgYWNjID1cbiAgICAgIGlmIGFjYyA+PSBtaW5cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNraXAgcyAtPiBsb29wIHMgYWNjXG4gICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyAoYWNjICsgMSkpXG4gICAgaW5cbiAgICBsb29wIHMgMFxuICBpblxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gbGVuZ3RoX2lzX2F0X2xlYXN0IHRcbiAgfCBTb21lIG1heCAtPlxuICAgIChtYXRjaCBib3VuZGVkX2xlbmd0aCB0IH5hdF9tb3N0Om1heCB3aXRoXG4gICAgIHwgYElzIGxlbiB3aGVuIGxlbiA+PSBtaW4gLT4gdHJ1ZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgaXRlcmkgcyB+ZiA9IGl0ZXIgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBmb2xkaSBzIH5pbml0IH5mID1cbiAgZm9sZCB+aW5pdCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIGFjYyAoaSwgcykgLT4gZiBpIGFjYyBzKVxuOztcblxubGV0IHJlZHVjZSBzIH5mID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChhLCBzKSAtPiBTb21lIChmb2xkIHMgfmluaXQ6YSB+Zilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHMgfmYgPVxuICBtYXRjaCByZWR1Y2UgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnJlZHVjZV9leG5cIlxuICB8IFNvbWUgcmVzIC0+IHJlc1xuOztcblxubGV0IGdyb3VwIChTZXF1ZW5jZSAocywgbmV4dCkpIH5icmVhayA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6KFNvbWUgKFtdLCBzKSlcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICB8IFNvbWUgKGFjYywgcykgLT5cbiAgICAgICAgKG1hdGNoIGFjYywgbmV4dCBzIHdpdGhcbiAgICAgICAgIHwgXywgU2tpcCBzIC0+IFNraXAgKFNvbWUgKGFjYywgcykpXG4gICAgICAgICB8IFtdLCBEb25lIC0+IERvbmVcbiAgICAgICAgIHwgYWNjLCBEb25lIC0+IFlpZWxkIChMaXN0LnJldiBhY2MsIE5vbmUpXG4gICAgICAgICB8IFtdLCBZaWVsZCAoY3VyLCBzKSAtPiBTa2lwIChTb21lIChbIGN1ciBdLCBzKSlcbiAgICAgICAgIHwgKHByZXYgOjogXyBhcyBhY2MpLCBZaWVsZCAoY3VyLCBzKSAtPlxuICAgICAgICAgICBpZiBicmVhayBwcmV2IGN1clxuICAgICAgICAgICB0aGVuIFlpZWxkIChMaXN0LnJldiBhY2MsIFNvbWUgKFsgY3VyIF0sIHMpKVxuICAgICAgICAgICBlbHNlIFNraXAgKFNvbWUgKGN1ciA6OiBhY2MsIHMpKSkpXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgKFNlcXVlbmNlIChzLCBuZXh0KSkgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGxhc3RfZWx0IHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIGxhc3RfZWx0IHNcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGxhc3RfZWx0IHdpdGhcbiAgICAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTb21lIChiLCBhKVxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBsb29wIChTb21lIGEpIHMpXG4gIGluXG4gIGxvb3AgTm9uZSBzXG47O1xuXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgcyB+ZXF1YWwgPVxuICB1bmZvbGRfd2l0aCBzIH5pbml0Ok5vbmUgfmY6KGZ1biBwcmV2IGEgLT5cbiAgICBtYXRjaCBwcmV2IHdpdGhcbiAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTa2lwIChTb21lIGEpXG4gICAgfCBOb25lIHwgU29tZSBfIC0+IFlpZWxkIChhLCBTb21lIGEpKVxuOztcblxubGV0IGNvdW50IHMgfmYgPSBsZW5ndGggKGZpbHRlciBzIH5mKVxubGV0IGNvdW50aSB0IH5mID0gbGVuZ3RoIChmaWx0ZXJpIHQgfmYpXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGluaXQgbiB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+IGlmIGkgPj0gbiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoZiBpLCBpICsgMSkpXG47O1xuXG5sZXQgc3ViIHMgfnBvcyB+bGVuID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5zdWJcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgaWYgaSAtIHBvcyA+PSBsZW5cbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gaSA+PSBwb3MgLT4gWWllbGQgKGEsIChpICsgMSwgcykpXG4gICAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gU2tpcCAoaSArIDEsIHMpKSApXG47O1xuXG5sZXQgdGFrZSBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRha2VcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgaWYgaSA+PSBsZW5cbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKSkgKVxuOztcblxubGV0IGRyb3AgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5kcm9wXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gaSA+PSBsZW4gLT4gWWllbGQgKGEsIChpICsgMSwgcykpXG4gICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgKGkgKyAxLCBzKSApXG47O1xuXG5sZXQgdGFrZV93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc1xuICAgICAgLCBmdW4gcyAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gWWllbGQgKGEsIHMpXG4gICAgICAgIHwgWWllbGQgKF8sIF8pIC0+IERvbmUgKVxuOztcblxubGV0IGRyb3Bfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBEcm9wcGluZyBzXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYERyb3BwaW5nIHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYERyb3BwaW5nIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFNraXAgKGBEcm9wcGluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYElkZW50aXR5IHMpKVxuICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzIClcbjs7XG5cbmxldCBzaGlmdF9yaWdodCBzIHggPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgQ29uc2luZyAoc2VlZCwgeClcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgQ29uc2luZyAoc2VlZCwgeCkgLT4gWWllbGQgKHgsIGBJZGVudGl0eSBzZWVkKVxuICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzIClcbjs7XG5cbmxldCBzaGlmdF9yaWdodF93aXRoX2xpc3QgcyBsID0gYXBwZW5kIChvZl9saXN0IGwpIHNcbmxldCBzaGlmdF9sZWZ0ID0gZHJvcFxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IGludGVyc3BlcnNlIHMgfnNlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBJbml0IHNcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgSW5pdCBzIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGBJbml0IHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgUnVubmluZyBzKSlcbiAgICAgICAgfCBgUnVubmluZyBzIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGBSdW5uaW5nIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChzZXAsIGBQdXR0aW5nIChhLCBzKSkpXG4gICAgICAgIHwgYFB1dHRpbmcgKGEsIHMpIC0+IFlpZWxkIChhLCBgUnVubmluZyBzKSApXG47O1xuXG5sZXQgcmVwZWF0IHggPSB1bmZvbGRfc3RlcCB+aW5pdDp4IH5mOihmdW4geCAtPiBZaWVsZCAoeCwgeCkpXG5cbmxldCBjeWNsZV9saXN0X2V4biB4cyA9XG4gIGlmIExpc3QuaXNfZW1wdHkgeHMgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuXCI7XG4gIGxldCBzID0gb2ZfbGlzdCB4cyBpblxuICBjb25jYXRfbWFwIH5mOihmdW4gKCkgLT4gcykgKHJlcGVhdCAoKSlcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBzYSBzYiA9IGNvbmNhdF9tYXAgc2EgfmY6KGZ1biBhIC0+IHppcCAocmVwZWF0IGEpIHNiKVxubGV0IHNpbmdsZXRvbiB4ID0gcmV0dXJuIHhcblxubGV0IGRlbGF5ZWRfZm9sZCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZmluaXNoIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IGsgYWNjXG4gICAgfCBTb21lIGEgLT4gZiBhY2MgYSB+aylcbjs7XG5cbmxldCBmb2xkX20gfmJpbmQgfnJldHVybiB0IH5pbml0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiBhY2MpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYWNjIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBpdGVyX20gfmJpbmQgfnJldHVybiB0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0OigpXG4gICAgfmY6KGZ1biAoKSBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuICgpKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBmb2xkX3VudGlsIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoJ2EsICdiKSBDb250aW51ZV9vcl9zdG9wLnQpIHdpdGhcbiAgICAgICB8IFN0b3AgeCAtPiB4XG4gICAgICAgfCBDb250aW51ZSBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dCBmIGluaXRcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCBzIH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gUmVzdWx0LnJldHVybiBhY2NcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoXywgXykgUmVzdWx0LnQpIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgfCBPayBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dCBmIGluaXRcbjs7XG5cbmxldCBmb3JjZV9lYWdlcmx5IHQgPSBvZl9saXN0ICh0b19saXN0IHQpXG5cbmxldCBtZW1vaXplICh0eXBlIGEpIChTZXF1ZW5jZSAocywgbmV4dCkpID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCBvZiAoYSwgdCkgU3RlcC50IExhenkudFxuICBlbmRcbiAgaW5cbiAgbGV0IHJlYyBtZW1vaXplIHMgPSBNLlQgKGxhenkgKGZpbmRfc3RlcCBzKSlcbiAgYW5kIGZpbmRfc3RlcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMgLT4gZmluZF9zdGVwIHNcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgbWVtb2l6ZSBzKVxuICBpblxuICBTZXF1ZW5jZSAobWVtb2l6ZSBzLCBmdW4gKE0uVCBsKSAtPiBMYXp5LmZvcmNlIGwpXG47O1xuXG5sZXQgZHJvcF9lYWdlcmx5IHMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGkgfmxlbiBzIG5leHQgPVxuICAgIGlmIGkgPj0gbGVuXG4gICAgdGhlbiBTZXF1ZW5jZSAocywgbmV4dClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gZW1wdHlcbiAgICAgIHwgU2tpcCBzIC0+IGxvb3AgaSB+bGVuIHMgbmV4dFxuICAgICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCAoaSArIDEpIH5sZW4gcyBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCAwIH5sZW4gcyBuZXh0XG47O1xuXG5sZXQgZHJvcF93aGlsZV9vcHRpb24gKFNlcXVlbmNlIChzLCBuZXh0KSkgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3Agc1xuICAgIHwgWWllbGQgKHgsIHMpIC0+IGlmIGYgeCB0aGVuIGxvb3AgcyBlbHNlIFNvbWUgKHgsIFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgaW5cbiAgbG9vcCBzXG47O1xuXG5sZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IF8gLT4gci5yZXR1cm4gMVxuICAgICAgfCBgUmlnaHQgXyAtPiByLnJldHVybiAoLTEpXG4gICAgICB8IGBCb3RoICh2MSwgdjIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9hIHYxIHYyIGluXG4gICAgICAgIGlmIGMgPD4gMCB0aGVuIHIucmV0dXJuIGMpO1xuICAgIDApXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9XG4gIGZvcl9hbGwgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICB8IGBCb3RoIChhMSwgYTIpIC0+IGVxdWFsX2EgYTEgYTJcbiAgICB8IGBMZWZ0IF8gfCBgUmlnaHQgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCByb3VuZF9yb2JpbiBsaXN0ID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spID1cbiAgICBtYXRjaCB0b2RvX3N0YWNrIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBmKSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZiBzIHdpdGhcbiAgICAgICB8IFlpZWxkICh4LCBzKSAtPiBZaWVsZCAoeCwgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzLCBmKSA6OiBkb25lX3N0YWNrKSlcbiAgICAgICB8IFNraXAgcyAtPiBTa2lwIChTZXF1ZW5jZSAocywgZikgOjogdG9kb19zdGFjaywgZG9uZV9zdGFjaylcbiAgICAgICB8IERvbmUgLT4gU2tpcCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykpXG4gICAgfCBbXSAtPiBpZiBMaXN0LmlzX2VtcHR5IGRvbmVfc3RhY2sgdGhlbiBEb25lIGVsc2UgU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10pXG4gIGluXG4gIGxldCBzdGF0ZSA9IGxpc3QsIFtdIGluXG4gIFNlcXVlbmNlIChzdGF0ZSwgbmV4dClcbjs7XG5cbmxldCBpbnRlcmxlYXZlIChTZXF1ZW5jZSAoczEsIGYxKSkgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEpID1cbiAgICBtYXRjaCB0b2RvX3N0YWNrIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzMiwgZjIpIDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmMiBzMiB3aXRoXG4gICAgICAgfCBZaWVsZCAoeCwgczIpIC0+IFlpZWxkICh4LCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMyLCBmMikgOjogZG9uZV9zdGFjaywgczEpKVxuICAgICAgIHwgU2tpcCBzMiAtPiBTa2lwICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAoczIsIGYyKSA6OiBkb25lX3N0YWNrLCBzMSlcbiAgICAgICB8IERvbmUgLT4gU2tpcCAodG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEpKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBmMSBzMSwgZG9uZV9zdGFjayB3aXRoXG4gICAgICAgfCBZaWVsZCAodCwgczEpLCBfIC0+IFNraXAgKExpc3QucmV2ICh0IDo6IGRvbmVfc3RhY2spLCBbXSwgczEpXG4gICAgICAgfCBTa2lwIHMxLCBfIC0+IFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSlcbiAgICAgICB8IERvbmUsIF8gOjogXyAtPiBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEpXG4gICAgICAgfCBEb25lLCBbXSAtPiBEb25lKVxuICBpblxuICBsZXQgc3RhdGUgPSBbXSwgW10sIHMxIGluXG4gIFNlcXVlbmNlIChzdGF0ZSwgbmV4dClcbjs7XG5cbmxldCBpbnRlcmxlYXZlZF9jYXJ0ZXNpYW5fcHJvZHVjdCBzMSBzMiA9XG4gIG1hcCBzMSB+ZjooZnVuIHgxIC0+IG1hcCBzMiB+ZjooZnVuIHgyIC0+IHgxLCB4MikpIHw+IGludGVybGVhdmVcbjs7XG5cbmxldCBvZl9zZXEgKHNlcSA6IF8gQ2FtbC5TZXEudCkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpzZXEgfmY6KGZ1biBzZXEgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IERvbmVcbiAgICB8IENvbnMgKGhkLCB0bCkgLT4gWWllbGQgKGhkLCB0bCkpXG47O1xuXG5sZXQgdG9fc2VxIChTZXF1ZW5jZSAoc3RhdGUsIG5leHQpKSA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggbmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBEb25lIC0+IENhbWwuU2VxLk5pbFxuICAgIHwgU2tpcCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgfCBZaWVsZCAoaGQsIHN0YXRlKSAtPiBDYW1sLlNlcS5Db25zIChoZCwgZnVuICgpIC0+IGxvb3Agc3RhdGUpXG4gIGluXG4gIGZ1biAoKSAtPiBsb29wIHN0YXRlXG47O1xuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgJ2VsdCBzdGVwcyA9IFdyYXAgb2YgKCdlbHQsIHVuaXQgLT4gJ2VsdCBzdGVwcykgU3RlcC50XG5cbiAgbGV0IHVud3JhcCAoV3JhcCBzdGVwKSA9IHN0ZXBcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZWx0KSB0ID0gKCdhIC0+ICdlbHQgc3RlcHMpIC0+ICdlbHQgc3RlcHNcblxuICAgIGxldCByZXR1cm4geCBrID0gayB4XG5cbiAgICBsZXQgYmluZCBtIH5mIGsgPVxuICAgICAgbSAoZnVuIGEgLT5cbiAgICAgICAgbGV0IG0nID0gZiBhIGluXG4gICAgICAgIG0nIGspXG4gICAgOztcblxuICAgIGxldCBtYXAgbSB+ZiBrID0gbSAoZnVuIGEgLT4gayAoZiBhKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKFQpXG5cbiAgbGV0IHlpZWxkIGUgayA9IFdyYXAgKFlpZWxkIChlLCBrKSlcbiAgbGV0IHRvX3N0ZXBzIHQgPSB0IChmdW4gKCkgLT4gV3JhcCBEb25lKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gKCkgeCB+ayBmIC0+IFdyYXAgKFlpZWxkICh4LCBmdW4gKCkgLT4gayAoKSBmKSkpXG4gICAgICB+ZmluaXNoOnJldHVyblxuICA7O1xuXG4gIGxldCBydW4gdCA9XG4gICAgbGV0IGluaXQgKCkgPSB0b19zdGVwcyB0IGluXG4gICAgbGV0IGYgdGh1bmsgPSB1bndyYXAgKHRodW5rICgpKSBpblxuICAgIHVuZm9sZF9zdGVwIH5pbml0IH5mXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfYXJyYXlcbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBhcnJheV9vZl9zZXhwXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBhcnJheV9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxuKCogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIG5ldyBpbi1wbGFjZSwgY29uc3RhbnQgaGVhcCBzb3J0aW5nIGFsZ29yaXRobSB0byByZXBsYWNlIHRoZVxuICAgb25lIHVzZWQgYnkgdGhlIHN0YW5kYXJkIGxpYnJhcmllcy4gIEl0cyBvbmx5IHB1cnBvc2UgaXMgdG8gYmUgZmFzdGVyIChob3BlZnVsbHlcbiAgIHN0cmljdGx5IGZhc3RlcikgdGhhbiB0aGUgYmFzZSBzb3J0IGFuZCBzdGFibGVfc29ydC5cblxuICAgQXQgYSBoaWdoIGxldmVsIHRoZSBhbGdvcml0aG0gaXM6XG4gICAtIHBpY2sgdHdvIHBpdm90IHBvaW50cyBieTpcbiAgIC0gcGljayA1IGFyYml0cmFyeSBlbGVtZW50cyBmcm9tIHRoZSBhcnJheVxuICAgLSBzb3J0IHRoZW0gd2l0aGluIHRoZSBhcnJheVxuICAgLSB0YWtlIHRoZSBlbGVtZW50cyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgbWlkZGxlIGVsZW1lbnQgb2YgdGhlIHNvcnQgYXMgdGhlIHBpdm90c1xuICAgLSBzb3J0IHRoZSBhcnJheSB3aXRoOlxuICAgLSBhbGwgZWxlbWVudHMgbGVzcyB0aGFuIHBpdm90MSB0byB0aGUgbGVmdCAocmFuZ2UgMSlcbiAgIC0gYWxsIGVsZW1lbnRzID49IHBpdm90MSBhbmQgPD0gcGl2b3QyIGluIHRoZSBtaWRkbGUgKHJhbmdlIDIpXG4gICAtIGFsbCBlbGVtZW50cyA+IHBpdm90MiB0byB0aGUgcmlnaHQgKHJhbmdlIDMpXG4gICAtIGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSBlcXVhbCwgdGhlbiB0aGUgbWlkZGxlIHJhbmdlIGlzIHNvcnRlZCwgc28gaWdub3JlIGl0XG4gICAtIHJlY3Vyc2UgaW50byByYW5nZSAxLCAyIChpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgdW5lcXVhbCksIGFuZCAzXG4gICAtIGR1cmluZyByZWN1cnNpb24gdGhlcmUgYXJlIHR3byBpbmZsZWN0aW9uIHBvaW50czpcbiAgIC0gaWYgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgcmFuZ2UgaXMgc21hbGwsIHVzZSBpbnNlcnRpb24gc29ydCB0byBzb3J0IGl0XG4gICAtIGlmIHRoZSBzdGFjayBkZXB0aCBpcyBsYXJnZSwgc29ydCB0aGUgcmFuZ2Ugd2l0aCBoZWFwLXNvcnQgdG8gYXZvaWQgbl4yIHdvcnN0LWNhc2VcbiAgICAgYmVoYXZpb3JcblxuICAgU2VlIHRoZSBmb2xsb3dpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb246XG4gICAtIFwiRHVhbC1QaXZvdCBRdWlja3NvcnRcIiBieSBWbGFkaW1pciBZYXJvc2xhdnNraXkuXG4gICAgIEF2YWlsYWJsZSBhdFxuICAgICBodHRwOi8vd3d3LmtyaWNoZS5jb20uYXIvcm9vdC9wcm9ncmFtbWluZy9zcGFjZVRpbWVDb21wbGV4aXR5L0R1YWxQaXZvdFF1aWNrc29ydC5wZGZcbiAgIC0gXCJRdWlja3NvcnQgaXMgT3B0aW1hbFwiIGJ5IFNlZGdld2ljayBhbmQgQmVudGxleS5cbiAgICAgU2xpZGVzIGF0IGh0dHA6Ly93d3cuY3MucHJpbmNldG9uLmVkdS9+cnMvdGFsa3MvUXVpY2tzb3J0SXNPcHRpbWFsLnBkZlxuICAgLSBodHRwOi8vd3d3LnNvcnRpbmctYWxnb3JpdGhtcy5jb20vcXVpY2stc29ydC0zLXdheSAqKVxuXG5tb2R1bGUgU29ydCA9IHN0cnVjdFxuICAoKiBGb3IgdGhlIHNha2Ugb2Ygc3BlZWQgd2UgY291bGQgdXNlIHVuc2FmZSBnZXQvc2V0IHRocm91Z2hvdXQsIGJ1dCBzcGVlZCB0ZXN0cyBkb24ndFxuICAgICBzaG93IGEgc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQuICopXG4gIGxldCBnZXQgPSBnZXRcbiAgbGV0IHNldCA9IHNldFxuXG4gIGxldCBzd2FwIGFyciBpIGogPVxuICAgIGxldCB0bXAgPSBnZXQgYXJyIGkgaW5cbiAgICBzZXQgYXJyIGkgKGdldCBhcnIgaik7XG4gICAgc2V0IGFyciBqIHRtcFxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFNvcnQgPSBzaWdcbiAgICB2YWwgc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gbGVmdDppbnQgKCogbGVmdG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHJpZ2h0OmludCAoKiByaWdodG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHVuaXRcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnNlcnRpb25fc29ydCAqKVxuICBtb2R1bGUgSW5zZXJ0aW9uX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICAgIFthcnJdIGlzIHNvcnRlZCBmcm9tIFtsZWZ0XSB0byBbcG9zIC0gMV0sIGluY2x1c2l2ZSAqKVxuICAgICAgZm9yIHBvcyA9IGxlZnQgKyAxIHRvIHJpZ2h0IGRvXG4gICAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLiBpLTFdIGlzIHNvcnRlZFxuICAgICAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4gcG9zXSBpcyBzb3J0ZWQgYW5kIGNvbnRhaW5zIG9ubHkgZWxlbWVudHMgPiB2XG4gICAgICAgICAgIDMuICBhcnJbaV0gbWF5IGJlIHRob3VnaHQgb2YgYXMgY29udGFpbmluZyB2XG5cbiAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWxsb2NhdGUgYSBjbG9zdXJlLCBidXQgaXMgbGVmdCBpbiB0aGUgZm9yXG4gICAgICAgICAgIGxvb3AgZm9yIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgZG9jdW1lbnRhdGlvbi4gKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpIHYgPVxuICAgICAgICAgIGxldCBpX25leHQgPSBpIC0gMSBpblxuICAgICAgICAgIGlmIGlfbmV4dCA+PSBsZWZ0ICYmIGNvbXBhcmUgKGdldCBhcnIgaV9uZXh0KSB2ID4gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgc2V0IGFyciBpIChnZXQgYXJyIGlfbmV4dCk7XG4gICAgICAgICAgICBsb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpX25leHQgdilcbiAgICAgICAgICBlbHNlIGlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHYgPSBnZXQgYXJyIHBvcyBpblxuICAgICAgICBsZXQgZmluYWxfcG9zID0gbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgcG9zIHYgaW5cbiAgICAgICAgc2V0IGFyciBmaW5hbF9wb3MgdlxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVhcHNvcnQgKilcbiAgbW9kdWxlIEhlYXBfc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICByb290J3MgY2hpbGRyZW4gYXJlIGJvdGggZWl0aGVyIHJvb3RzIG9mIG1heC1oZWFwcyBvciA+IHJpZ2h0ICopXG4gICAgbGV0IHJlYyBoZWFwaWZ5IGFyciB+Y29tcGFyZSByb290IH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcmVsYXRpdmVfcm9vdCA9IHJvb3QgLSBsZWZ0IGluXG4gICAgICBsZXQgbGVmdF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMSBpblxuICAgICAgbGV0IHJpZ2h0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAyIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIGxlZnRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciBsZWZ0X2NoaWxkKSAoZ2V0IGFyciByb290KSA+IDBcbiAgICAgICAgdGhlbiBsZWZ0X2NoaWxkXG4gICAgICAgIGVsc2Ugcm9vdFxuICAgICAgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgcmlnaHRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciByaWdodF9jaGlsZCkgKGdldCBhcnIgbGFyZ2VzdCkgPiAwXG4gICAgICAgIHRoZW4gcmlnaHRfY2hpbGRcbiAgICAgICAgZWxzZSBsYXJnZXN0XG4gICAgICBpblxuICAgICAgaWYgbGFyZ2VzdCA8PiByb290XG4gICAgICB0aGVuIChcbiAgICAgICAgc3dhcCBhcnIgcm9vdCBsYXJnZXN0O1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsYXJnZXN0IH5sZWZ0IH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBFbGVtZW50cyBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGFycmF5IGFyZSBhbHJlYWR5IGhlYXBzIG9mIHNpemUgMS4gIFdlIG1vdmVcbiAgICAgICAgIHRocm91Z2ggdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGFycmF5IGZyb20gYmFjayB0byBmcm9udCBleGFtaW5pbmcgdGhlIGVsZW1lbnQgYXRcbiAgICAgICAgIGhhbmQsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4sIGZpeGluZyB0aGUgaGVhcCBwcm9wZXJ0eSBhcyB3ZSBnby4gKilcbiAgICAgIGZvciBpID0gKGxlZnQgKyByaWdodCkgLyAyIGRvd250byBsZWZ0IGRvXG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGkgfmxlZnQgfnJpZ2h0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0O1xuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLi4gaV0gaXMgYSBtYXgtaGVhcCBIXG4gICAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4uIHJpZ2h0XSBpcyBzb3J0ZWQgKGNhbGwgaXQgUylcbiAgICAgICAgIDMuICBldmVyeSBlbGVtZW50IG9mIEggaXMgbGVzcyB0aGFuIGV2ZXJ5IGVsZW1lbnQgb2YgUyAqKVxuICAgICAgZm9yIGkgPSByaWdodCBkb3dudG8gbGVmdCArIDEgZG9cbiAgICAgICAgc3dhcCBhcnIgbGVmdCBpO1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsZWZ0IH5sZWZ0IH5yaWdodDooaSAtIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyb3NvcnQgKilcbiAgbW9kdWxlIEludHJvX3NvcnQgOiBzaWdcbiAgICBpbmNsdWRlIFNvcnRcblxuICAgIHZhbCBmaXZlX2VsZW1lbnRfc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNSA9XG4gICAgICBsZXQgY29tcGFyZV9hbmRfc3dhcCBpIGogPVxuICAgICAgICBpZiBjb21wYXJlIChnZXQgYXJyIGkpIChnZXQgYXJyIGopID4gMCB0aGVuIHN3YXAgYXJyIGkgalxuICAgICAgaW5cbiAgICAgICgqIE9wdGltYWwgNS1lbGVtZW50IHNvcnRpbmcgbmV0d29yazpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIDEtLW8tLS0tLW8tLS0tLW8tLS0tLS0tLS0tLS0tLTFcbiAgICAgICAgICAgICAgIHwgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDItLW8tLS0tLXwtLW8tLXwtLS0tLW8tLW8tLS0tLTJcbiAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHwgICAgIHwgIHxcbiAgICAgICAgICAgIDMtLS0tLS0tLW8tLW8tLXwtLW8tLXwtLW8tLS0tLTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHxcbiAgICAgICAgICAgIDQtLS0tLW8tLS0tLS0tLW8tLW8tLXwtLS0tLW8tLTRcbiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDUtLS0tLW8tLS0tLS0tLS0tLS0tLW8tLS0tLW8tLTVcbiAgICAgICAgICB2fSAqKVxuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMjtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0zIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01XG4gICAgOztcblxuICAgICgqIGNob29zZSBwaXZvdHMgZm9yIHRoZSBhcnJheSBieSBzb3J0aW5nIDUgZWxlbWVudHMgYW5kIGV4YW1pbmluZyB0aGUgY2VudGVyIHRocmVlXG4gICAgICAgZWxlbWVudHMuICBUaGUgZ29hbCBpcyB0byBjaG9vc2UgdHdvIHBpdm90cyB0aGF0IHdpbGwgZWl0aGVyOlxuICAgICAgIC0gYnJlYWsgdGhlIHJhbmdlIHVwIGludG8gMyBldmVuIHBhcnRpdGlvbnNcbiAgICAgICAgIG9yXG4gICAgICAgLSBlbGltaW5hdGUgYSBjb21tb25seSBhcHBlYXJpbmcgZWxlbWVudCBieSBzb3J0aW5nIGl0IGludG8gdGhlIGNlbnRlciBwYXJ0aXRpb25cbiAgICAgICAgIGJ5IGl0c2VsZlxuICAgICAgICAgVG8gdGhpcyBlbmQgd2UgbG9vayBhdCB0aGUgY2VudGVyIDMgZWxlbWVudHMgb2YgdGhlIDUgYW5kIHJldHVybiBwYWlycyBvZiBlcXVhbFxuICAgICAgICAgZWxlbWVudHMgb3IgdGhlIHdpZGVzdCByYW5nZSAqKVxuICAgIGxldCBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHNpeHRoID0gKHJpZ2h0IC0gbGVmdCkgLyA2IGluXG4gICAgICBsZXQgbTEgPSBsZWZ0ICsgc2l4dGggaW5cbiAgICAgIGxldCBtMiA9IG0xICsgc2l4dGggaW5cbiAgICAgIGxldCBtMyA9IG0yICsgc2l4dGggaW5cbiAgICAgIGxldCBtNCA9IG0zICsgc2l4dGggaW5cbiAgICAgIGxldCBtNSA9IG00ICsgc2l4dGggaW5cbiAgICAgIGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNTtcbiAgICAgIGxldCBtMl92YWwgPSBnZXQgYXJyIG0yIGluXG4gICAgICBsZXQgbTNfdmFsID0gZ2V0IGFyciBtMyBpblxuICAgICAgbGV0IG00X3ZhbCA9IGdldCBhcnIgbTQgaW5cbiAgICAgIGlmIGNvbXBhcmUgbTJfdmFsIG0zX3ZhbCA9IDBcbiAgICAgIHRoZW4gbTJfdmFsLCBtM192YWwsIHRydWVcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBtM192YWwgbTRfdmFsID0gMFxuICAgICAgdGhlbiBtM192YWwsIG00X3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBtMl92YWwsIG00X3ZhbCwgZmFsc2VcbiAgICA7O1xuXG4gICAgbGV0IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHBpdm90MSwgcGl2b3QyLCBwaXZvdHNfZXF1YWwgPSBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICBsZWZ0IDw9IGwgPCByIDw9IHJpZ2h0XG4gICAgICAgICAyLiAgbCA8PSBwIDw9IHJcbiAgICAgICAgIDMuICBsIDw9IHggPCBwICAgICBpbXBsaWVzIGFyclt4XSA+PSBwaXZvdDFcbiAgICAgICAgIGFuZCBhcnJbeF0gPD0gcGl2b3QyXG4gICAgICAgICA0LiAgbGVmdCA8PSB4IDwgbCAgaW1wbGllcyBhcnJbeF0gPCBwaXZvdDFcbiAgICAgICAgIDUuICByIDwgeCA8PSByaWdodCBpbXBsaWVzIGFyclt4XSA+IHBpdm90MiAqKVxuICAgICAgbGV0IHJlYyBsb29wIGwgcCByID1cbiAgICAgICAgbGV0IHB2ID0gZ2V0IGFyciBwIGluXG4gICAgICAgIGlmIGNvbXBhcmUgcHYgcGl2b3QxIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzd2FwIGFyciBwIGw7XG4gICAgICAgICAgY29udCAobCArIDEpIChwICsgMSkgcilcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlIHB2IHBpdm90MiA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOiAgc2FtZSBhcyB0aG9zZSBvZiB0aGUgb3V0ZXIgbG9vcCAqKVxuICAgICAgICAgIGxldCByZWMgc2Nhbl9iYWNrd2FyZHMgciA9XG4gICAgICAgICAgICBpZiByID4gcCAmJiBjb21wYXJlIChnZXQgYXJyIHIpIHBpdm90MiA+IDAgdGhlbiBzY2FuX2JhY2t3YXJkcyAociAtIDEpIGVsc2UgclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHIgPSBzY2FuX2JhY2t3YXJkcyByIGluXG4gICAgICAgICAgc3dhcCBhcnIgciBwO1xuICAgICAgICAgIGNvbnQgbCBwIChyIC0gMSkpXG4gICAgICAgIGVsc2UgY29udCBsIChwICsgMSkgclxuICAgICAgYW5kIGNvbnQgbCBwIHIgPSBpZiBwID4gciB0aGVuIGwsIHIgZWxzZSBsb29wIGwgcCByIGluXG4gICAgICBsZXQgbCwgciA9IGNvbnQgbGVmdCBsZWZ0IHJpZ2h0IGluXG4gICAgICBsLCByLCBwaXZvdHNfZXF1YWxcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgbGVuID0gcmlnaHQgLSBsZWZ0ICsgMSBpblxuICAgICAgKCogVGhpcyB0YWtlcyBjYXJlIG9mIHNvbWUgZWRnZSBjYXNlcywgc3VjaCBhcyBsZWZ0ID4gcmlnaHQgb3IgdmVyeSBzaG9ydCBhcnJheXMsXG4gICAgICAgICBzaW5jZSBJbnNlcnRpb25fc29ydC5zb3J0IGhhbmRsZXMgdGhlc2UgY2FzZXMgcHJvcGVybHkuICBUaHVzIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgIG1ha2Ugc3VyZSB0aGF0IGxlZnQgYW5kIHJpZ2h0IGFyZSB2YWxpZCBpbiByZWN1cnNpdmUgY2FsbHMuICopXG4gICAgICBpZiBsZW4gPD0gMzJcbiAgICAgIHRoZW4gSW5zZXJ0aW9uX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIGlmIG1heF9kZXB0aCA8IDBcbiAgICAgIHRoZW4gSGVhcF9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBtYXhfZGVwdGggPSBtYXhfZGVwdGggLSAxIGluXG4gICAgICAgIGxldCBsLCByLCBtaWRkbGVfc29ydGVkID0gZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodDoobCAtIDEpO1xuICAgICAgICBpZiBub3QgbWlkZGxlX3NvcnRlZCB0aGVuIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6bCB+cmlnaHQ6cjtcbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDoociArIDEpIH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgaGVhcF9zb3J0X3N3aXRjaF9kZXB0aCA9XG4gICAgICAgICgqIFdlIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdCBhIHJlY3Vyc2lvbiBkZXB0aCBvZiAzMi4gR05VIGludHJvc29ydCB1c2VzIDJsZyhuKS5cbiAgICAgICAgICAgVGhlIGV4cGVjdGVkIHJlY3Vyc2lvbiBkZXB0aCBmb3IgcGVyZmVjdCAzLXdheSBzcGxpdHMgaXMgbG9nXzMobikuXG5cbiAgICAgICAgICAgVXNpbmcgMzIgbWVhbnMgYSBiYWxhbmNlZCAzLXdheSBzcGxpdCB3b3VsZCB3b3JrIHVwIHRvIDNeMzIgZWxlbWVudHMgKHJvdWdobHlcbiAgICAgICAgICAgMl41MCBvciAxMF4xNSkuIEdOVSByZWFjaGVzIGEgZGVwdGggb2YgMzIgYXQgNjU1MzYgZWxlbWVudHMuXG5cbiAgICAgICAgICAgRm9yIHNtYWxsIGFycmF5cywgdGhpcyBtYWtlcyB1cyBsZXNzIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQsIGJ1dCB0aGVcbiAgICAgICAgICAgMzIqTiBjb3N0IGJlZm9yZSB3ZSBkbyBpcyBub3QgdGhhdCBtdWNoLlxuXG4gICAgICAgICAgIEZvciBsYXJnZSBhcnJheXMsIHRoaXMgbWVhbnMgd2UgYXJlIG1vcmUgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdFxuICAgICAgICAgICBzb21lIHBvaW50IGlmIHdlIGdldCBzb21lIGJhZCBzcGxpdHMgb3IgaWYgdGhlIGFycmF5IGlzIGh1Z2UuIEJ1dCB0aGF0J3Mgb25seSBhXG4gICAgICAgICAgIGNvbnN0YW50IGZhY3RvciBjb3N0IGluIHRoZSBmaW5hbCBzdGFnZXMgb2YgcmVjdXJzaW9uLlxuXG4gICAgICAgICAgIEFsbCBpbiBhbGwsIHRoaXMgc2VlbXMgdG8gYmUgYSBzbWFsbCB0cmFkZW9mZiBhbmQgYXZvaWRzIHBheWluZyBhIGNvc3QgdG9cbiAgICAgICAgICAgY29tcHV0ZSBhIGxvZ2FyaXRobSBhdCB0aGUgc3RhcnQuICopXG4gICAgICAgIDMyXG4gICAgICBpblxuICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aDpoZWFwX3NvcnRfc3dpdGNoX2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBzb3J0ID9wb3MgP2xlbiBhcnIgfmNvbXBhcmUgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggYXJyKVxuICBpblxuICBTb3J0LkludHJvX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQ6cG9zIH5yaWdodDoocG9zICsgbGVuIC0gMSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGlzX3NvcnRlZCB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPiAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+PSAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVyZ2UgYTEgYTIgfmNvbXBhcmUgPVxuICBsZXQgbDEgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgbGV0IGwyID0gQXJyYXkubGVuZ3RoIGEyIGluXG4gIGlmIGwxID0gMFxuICB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsMiA9IDBcbiAgdGhlbiBjb3B5IGExXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMiAwKSAodW5zYWZlX2dldCBhMSAobDEgLSAxKSkgPj0gMFxuICB0aGVuIGFwcGVuZCBhMSBhMlxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgMCkgKHVuc2FmZV9nZXQgYTIgKGwyIC0gMSkpID4gMFxuICB0aGVuIGFwcGVuZCBhMiBhMVxuICBlbHNlIChcbiAgICBsZXQgbGVuID0gbDEgKyBsMiBpblxuICAgIGxldCBtZXJnZWQgPSBjcmVhdGUgfmxlbiAodW5zYWZlX2dldCBhMSAwKSBpblxuICAgIGxldCBhMV9pbmRleCA9IHJlZiAwIGluXG4gICAgbGV0IGEyX2luZGV4ID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IHVzZV9hMSA9XG4gICAgICAgIGlmIGwxID0gIWExX2luZGV4XG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBpZiBsMiA9ICFhMl9pbmRleFxuICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgZWxzZSBjb21wYXJlICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KSA8PSAwXG4gICAgICBpblxuICAgICAgaWYgdXNlX2ExXG4gICAgICB0aGVuIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpO1xuICAgICAgICBhMV9pbmRleCA6PSAhYTFfaW5kZXggKyAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KTtcbiAgICAgICAgYTJfaW5kZXggOj0gIWEyX2luZGV4ICsgMSlcbiAgICBkb25lO1xuICAgIG1lcmdlZClcbjs7XG5cbmxldCBjb3B5X21hdHJpeCA9IG1hcCB+Zjpjb3B5XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG47O1xuXG5sZXQgY29uY2F0X21hcCB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXAgfmYgdCkpXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwaSB+ZiB0KSlcblxubGV0IHJldl9pbnBsYWNlIHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIHdoaWxlICFpIDwgIWogZG9cbiAgICBzd2FwIHQgIWkgIWo7XG4gICAgaW5jciBpO1xuICAgIGRlY3IgalxuICBkb25lXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgdCA9IGNvcHkgdCBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBhIDo6IGwgLT5cbiAgICBsZXQgbGVuID0gMSArIExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgKCogV2Ugc3RhcnQgYXQgW2xlbiAtIDJdIGJlY2F1c2Ugd2UgYWxyZWFkeSBwdXQgW2FdIGF0IFt0LihsZW4gLSAxKV0uICopXG4gICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgdC4oaSkgPC0gYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB0XG47O1xuXG4oKiBbb2ZfbGlzdF9tYXBdIGFuZCBbb2ZfbGlzdF9yZXZfbWFwXSBhcmUgYmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIE9DYW1sXG4gICBkaXN0cmlidXRpb24uICopXG5cbmxldCBvZl9saXN0X21hcCB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIGhkKSBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBoZCk7XG4gICAgICAgIGZpbGwgKGkgKyAxKSB0bFxuICAgIGluXG4gICAgZmlsbCAxIHRsXG47O1xuXG5sZXQgb2ZfbGlzdF9tYXBpIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgMCBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgYSBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpIGhkKTtcbiAgICAgICAgZmlsbCBhIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgYSAxIHRsXG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcCB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwaSB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXBpIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHIgPSByZWYgW3x8XSBpblxuICBsZXQgayA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgdCBpKSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGlmICFrID0gMCB0aGVuIHIgOj0gY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBhO1xuICAgICAgdW5zYWZlX3NldCAhciAhayBhO1xuICAgICAgaW5jciBrXG4gIGRvbmU7XG4gIGlmICFrID0gbGVuZ3RoIHQgdGhlbiAhciBlbHNlIGlmICFrID4gMCB0aGVuIHN1YiB+cG9zOjAgfmxlbjohayAhciBlbHNlIFt8fF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gX2kgYSAtPiBmIGEpXG5sZXQgZmlsdGVyX29wdCB0ID0gZmlsdGVyX21hcCB0IH5mOkZuLmlkXG5cbmxldCByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMiA9XG4gIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWRcIiBuYW1lIG4xIG4yICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgdDEgdDIgPVxuICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjJcbjs7XG5cbmxldCBpdGVyMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lml0ZXIyX2V4blwiIHQxIHQyO1xuICBpdGVyaSB0MSB+ZjooZnVuIGkgeDEgLT4gZiB4MSAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkubWFwMl9leG5cIiB0MSB0MjtcbiAgaW5pdCAobGVuZ3RoIHQxKSB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCBmb2xkMl9leG4gdDEgdDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvbGQyX2V4blwiIHQxIHQyO1xuICBmb2xkaSB0MSB+aW5pdCB+ZjooZnVuIGkgYWMgeCAtPiBmIGFjIHggKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5sZXQgZmlsdGVyaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICFpICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID0gZXhpc3RzIHQgfmY6KGVxdWFsIGEpXG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAhaSAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0czJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5leGlzdHMyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGwyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9yX2FsbDJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBlcXVhbCBlcXVhbCB0MSB0MiA9IGxlbmd0aCB0MSA9IGxlbmd0aCB0MiAmJiBmb3JfYWxsMl9leG4gdDEgdDIgfmY6ZXF1YWxcblxuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGZpbmRpX2ludGVybmFsIHQgfmYgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIGlmX25vdF9mb3VuZCAoKVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICB3aGlsZSAobm90ICFmb3VuZCkgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZiAhaSB2YWx1ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHZhbHVlX2ZvdW5kIDo9IHZhbHVlO1xuICAgICAgICBmb3VuZCA6PSB0cnVlKVxuICAgICAgZWxzZSBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmICFmb3VuZCB0aGVuIGlmX2ZvdW5kIH5pOiFpIH52YWx1ZTohdmFsdWVfZm91bmQgZWxzZSBpZl9ub3RfZm91bmQgKCkpXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mXG4gICAgfmlmX2ZvdW5kOihmdW4gfmkgfnZhbHVlIC0+IFNvbWUgKGksIHZhbHVlKSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9leG4gdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mXG4gICAgfmlmX2ZvdW5kOihmdW4gfmkgfnZhbHVlIC0+IGksIHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kaV9leG46IG5vdCBmb3VuZFwiKSkpXG47O1xuXG5sZXQgZmluZF9leG4gdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mOihmdW4gX2kgeCAtPiBmIHgpXG4gICAgfmlmX2ZvdW5kOihmdW4gfmk6XyB+dmFsdWUgLT4gdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9IE9wdGlvbi5tYXAgKGZpbmRpIHQgfmY6KGZ1biBfaSB4IC0+IGYgeCkpIH5mOihmdW4gKF9pLCB4KSAtPiB4KVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiAhaSB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuIDw9IDFcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZXN1bHQgPSByZWYgTm9uZSBpblxuICAgIGxldCBpID0gcmVmIDEgaW5cbiAgICBsZXQgcHJldiA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgY3VyID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBlcXVhbCBjdXIgIXByZXZcbiAgICAgIHRoZW4gKFxuICAgICAgICByZXN1bHQgOj0gU29tZSAoIXByZXYsIGN1cik7XG4gICAgICAgIGkgOj0gbilcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmV2IDo9IGN1cjtcbiAgICAgICAgaW5jciBpKVxuICAgIGRvbmU7XG4gICAgIXJlc3VsdClcbjs7XG5cbmxldCByZWR1Y2UgdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIGZvciBpID0gMSB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gICAgZG9uZTtcbiAgICBTb21lICFyKVxuOztcblxubGV0IHJlZHVjZV9leG4gdCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSB0IH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBwZXJtdXRlID0gQXJyYXlfcGVybXV0ZS5wZXJtdXRlXG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgYXJyYXlcIlxuICBlbHNlIHQuKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgemlwIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MiB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MikpXG47O1xuXG5sZXQgemlwX2V4biB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDJcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnppcF9leG5cIlxuICBlbHNlIG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuOztcblxubGV0IHVuemlwIHQgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgeCwgeSA9IHQuKDApIGluXG4gICAgbGV0IHJlczEgPSBjcmVhdGUgfmxlbjpuIHggaW5cbiAgICBsZXQgcmVzMiA9IGNyZWF0ZSB+bGVuOm4geSBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IHgsIHkgPSB0LihpKSBpblxuICAgICAgcmVzMS4oaSkgPC0geDtcbiAgICAgIHJlczIuKGkpIDwtIHlcbiAgICBkb25lO1xuICAgIHJlczEsIHJlczIpXG47O1xuXG5sZXQgc29ydGVkX2NvcHkgdCB+Y29tcGFyZSA9XG4gIGxldCB0MSA9IGNvcHkgdCBpblxuICBzb3J0IHQxIH5jb21wYXJlO1xuICB0MVxuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIGxldCBib3RoID0gbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gRWl0aGVyLkZpcnN0IHggZWxzZSBFaXRoZXIuU2Vjb25kIHgpIGluXG4gIGxldCB0cnVlcyA9XG4gICAgZmlsdGVyX21hcCBib3RoIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCB4IC0+IFNvbWUgeFxuICAgICAgfCBTZWNvbmQgXyAtPiBOb25lKVxuICBpblxuICBsZXQgZmFsc2VzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IF8gLT4gTm9uZVxuICAgICAgfCBTZWNvbmQgeCAtPiBTb21lIHgpXG4gIGluXG4gIHRydWVzLCBmYWxzZXNcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIF9pIHggLT4gZiB4KVxubGV0IGxhc3QgdCA9IHQuKGxlbmd0aCB0IC0gMSlcblxuKCogQ29udmVydCB0byBhIHNlcXVlbmNlIGJ1dCBkb2VzIG5vdCBhdHRlbXB0IHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25cbiAgIGluIHRoZSBhcnJheS4gKilcbmxldCB0b19zZXF1ZW5jZV9tdXRhYmxlIHQgPVxuICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPlxuICAgIGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBTZXF1ZW5jZS5TdGVwLkRvbmUgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkICh0LihpKSwgaSArIDEpKVxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19zZXF1ZW5jZV9tdXRhYmxlIChjb3B5IHQpXG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCB0MSB0MiA9XG4gIGlmIGlzX2VtcHR5IHQxIHx8IGlzX2VtcHR5IHQyXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuOihuMSAqIG4yKSAodDEuKDApLCB0Mi4oMCkpIGluXG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIGZvciBpMSA9IDAgdG8gbjEgLSAxIGRvXG4gICAgICBmb3IgaTIgPSAwIHRvIG4yIC0gMSBkb1xuICAgICAgICB0LighcikgPC0gdDEuKGkxKSwgdDIuKGkyKTtcbiAgICAgICAgaW5jciByXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHRyYW5zcG9zZSB0dCA9XG4gIGlmIGxlbmd0aCB0dCA9IDBcbiAgdGhlbiBTb21lIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHdpZHRoID0gbGVuZ3RoIHR0IGluXG4gICAgbGV0IGRlcHRoID0gbGVuZ3RoIHR0LigwKSBpblxuICAgIGlmIGV4aXN0cyB0dCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQgPD4gZGVwdGgpXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChpbml0IGRlcHRoIH5mOihmdW4gZCAtPiBpbml0IHdpZHRoIH5mOihmdW4gdyAtPiB0dC4odykuKGQpKSkpKVxuOztcblxubGV0IHRyYW5zcG9zZV9leG4gdHQgPVxuICBtYXRjaCB0cmFuc3Bvc2UgdHQgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS50cmFuc3Bvc2VfZXhuXCJcbiAgfCBTb21lIHR0JyAtPiB0dCdcbjs7XG5cbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBbfHxdXG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiB0LigwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnQgPSBTb3J0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXQgYWxsIHZhbHVlcyBvZiB0eXBlIFt0XSBkbyBub3QgaGF2ZSB0aGUgdGFnXG4gICBbZG91YmxlX2FycmF5X3RhZ10uICBTb21lIGZ1bmN0aW9ucyBiZWxvdyBhc3N1bWUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0ZXN0aW5nIHRoZVxuICAgdGFnLCBhbmQgd2lsbCBzZWdmYXVsdCBpZiB0aGlzIHByb3BlcnR5IGRvZXNuJ3QgaG9sZC4gKilcbnR5cGUgdCA9IENhbWwuT2JqLnQgYXJyYXlcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChDYW1sLk9iai50YWcgKENhbWwuT2JqLnJlcHIgdCkgPD4gQ2FtbC5PYmouZG91YmxlX2FycmF5X3RhZylcbmxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggKCogd291bGQgY2hlY2sgZm9yIGZsb2F0IGFycmF5cyBpbiAzMiBiaXQsIGJ1dCB3aGF0ZXZlciAqKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBTZXhwLkF0b21cbiAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBcIjxPYmpfYXJyYXkudCBvZiBsZW5ndGggXCI7IEludC50b19zdHJpbmcgKGxlbmd0aCB0KTsgXCI+XCIgXSlcbjs7XG5cbmxldCB6ZXJvX29iaiA9IENhbWwuT2JqLnJlcHIgKDAgOiBpbnQpXG5cbigqIFdlIGNhbGwgW0FycmF5LmNyZWF0ZV0gd2l0aCBhIHZhbHVlIHRoYXQgaXMgbm90IGEgZmxvYXQgc28gdGhhdCB0aGUgYXJyYXkgZG9lc24ndCBnZXRcbiAgIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbmxldCBjcmVhdGVfemVybyB+bGVuID0gQXJyYXkuY3JlYXRlIH5sZW4gemVyb19vYmpcbmxldCBlbXB0eSA9IFt8fF1cblxudHlwZSBub3RfYV9mbG9hdCA9XG4gIHwgTm90X2FfZmxvYXRfMFxuICB8IE5vdF9hX2Zsb2F0XzEgb2YgaW50XG5cbmxldCBfbm90X2FfZmxvYXRfMCA9IE5vdF9hX2Zsb2F0XzBcbmxldCBfbm90X2FfZmxvYXRfMSA9IE5vdF9hX2Zsb2F0XzEgNDJcblxubGV0IGdldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gIEl0IGlzIE5PVCBvayB0byB1c2UgW2ludCBhcnJheV0gc2luY2UgKGlmXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgaW5saW5lZCBhbmQgdGhlIGFycmF5IGNvbnRhaW5zIGluLWhlYXAgYm94ZWQgdmFsdWVzKSB3cm9uZyByZWdpc3RlclxuICAgICB0eXBpbmcgbWF5IHJlc3VsdCwgbGVhZGluZyB0byBhIGZhaWx1cmUgdG8gcmVnaXN0ZXIgbmVjZXNzYXJ5IEdDIHJvb3RzLiAqKVxuICBDYW1sLk9iai5yZXByICgoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KS4oaSkgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX2dldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbiAgQ2FtbC5PYmoucmVwclxuICAgIChBcnJheS51bnNhZmVfZ2V0IChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpIGkgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBTYW1lIGNvbW1lbnQgYXMgW3Vuc2FmZV9nZXRdLiBTeXMub3BhcXVlX2lkZW50aXR5IHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tXG4gICAgIHBvdGVudGlhbGx5IHdyb25nbHkgZ3Vlc3NpbmcgdGhlIHR5cGUgb2YgdGhlIGFycmF5IGJhc2VkIG9uIHRoZSB0eXBlIG9mIGVsZW1lbnQsIHRoYXRcbiAgICAgaXMgcHJldmVudCB0aGUgaW1wbGljYXRpb246IChPYmoudGFnIG9iaiA9IE9iai5kb3VibGVfdGFnKSA9PiAoT2JqLnRhZyB0ID1cbiAgICAgT2JqLmRvdWJsZV9hcnJheV90YWcpIHdoaWNoIGZsYW1iZGEgaGFzIHRyaWVkIGluIHRoZSBwYXN0IChhdCBsZWFzdCB0aGF0J3MgYXNzdW1pbmdcbiAgICAgdGhlIGNvbXBpbGVyIHJlc3BlY3RzIFN5cy5vcGFxdWVfaWRlbnRpdHksIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIGNhc2UpLiAqKVxuICBBcnJheS51bnNhZmVfc2V0XG4gICAgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSlcbiAgICBpXG4gICAgKENhbWwuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBzYW1lIGFzIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSBidXQgc2FmZSAqKVxuICAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KS4oaSlcbiAgPC0gKENhbWwuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIGludCA9XG4gICgqIFRoaXMgc2tpcHMgW2NhbWxfbW9kaWZ5XSwgd2hpY2ggaXMgT0sgaWYgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzIGFyZSBpbnRlZ2Vycy4gKilcbiAgQXJyYXkudW5zYWZlX3NldCAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IGludCBhcnJheSkgaSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBpbnQpXG47O1xuXG4oKiBGb3IgW3NldF0gYW5kIFt1bnNhZmVfc2V0XSwgaWYgYSBwb2ludGVyIGlzIGludm9sdmVkLCB3ZSBmaXJzdCBkbyBhIHBoeXNpY2FsLWVxdWFsaXR5XG4gICB0ZXN0IHRvIHNlZSBpZiB0aGUgcG9pbnRlciBpcyBjaGFuZ2luZy4gIElmIG5vdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGUgW3NldF0sIHdoaWNoXG4gICBzYXZlcyBhIGNhbGwgdG8gW2NhbWxfbW9kaWZ5XS4gIFdlIHRoaW5rIHRoaXMgcGh5c2ljYWwtZXF1YWxpdHkgdGVzdCBpcyB3b3J0aCBpdFxuICAgYmVjYXVzZSBpdCBpcyB2ZXJ5IGNoZWFwIChib3RoIHZhbHVlcyBhcmUgYWxyZWFkeSBhdmFpbGFibGUgZnJvbSB0aGUgW2lzX2ludF0gdGVzdClcbiAgIGFuZCBiZWNhdXNlIFtjYW1sX21vZGlmeV0gaXMgZXhwZW5zaXZlLiAqKVxuXG5sZXQgc2V0IHQgaSBvYmogPVxuICAoKiBXZSB1c2UgW2dldF0gZmlyc3QgYnV0IHRoZW4gd2UgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBzaW5jZSB3ZSBrbm93IHRoYXQgW2ldIGlzXG4gICAgIHZhbGlkLiAqKVxuICBsZXQgb2xkX29iaiA9IGdldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmogJiYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0IHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmogJiYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBhID0gZ2V0IHQgaSBpblxuICBsZXQgYiA9IGdldCB0IGogaW5cbiAgdW5zYWZlX3NldCB0IGkgYjtcbiAgdW5zYWZlX3NldCB0IGogYVxuOztcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICAoKiBJZiB3ZSBjYW4sIHVzZSBbQXJyYXkuY3JlYXRlXSBkaXJlY3RseS4gKilcbiAgaWYgQ2FtbC5PYmoudGFnIHggPD4gQ2FtbC5PYmouZG91YmxlX3RhZ1xuICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIHhcbiAgZWxzZSAoXG4gICAgKCogT3RoZXJ3aXNlIHVzZSBbY3JlYXRlX3plcm9dIGFuZCBzZXQgdGhlIGNvbnRlbnRzICopXG4gICAgbGV0IHQgPSBjcmVhdGVfemVybyB+bGVuIGluXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4XG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHNpbmdsZXRvbiBvYmogPSBjcmVhdGUgfmxlbjoxIG9ialxuXG4oKiBQcmUtY29uZGl0aW9uOiB0LihpKSBpcyBhbiBpbnRlZ2VyLiAqKVxubGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgb2JqID1cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlXG4gICAgKCogW3QuKGkpXSBpcyBhbiBpbnRlZ2VyIGFuZCBbb2JqXSBpcyBub3QsIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgYXJlXG4gICAgICAgZXF1YWwuICopXG4gICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludCB0IGkgaW50ID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIGludFxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgaW50KVxuOztcblxubGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgaSA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgbm90IChDYW1sLk9iai5pc19pbnQgb2xkX29iaikgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIDApXG47O1xuXG4oKiogW3Vuc2FmZV9ibGl0XSBpcyBsaWtlIFtBcnJheS5ibGl0XSwgZXhjZXB0IGl0IHVzZXMgb3VyIG93biBmb3ItbG9vcCB0byBhdm9pZFxuICAgIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUuICBJdHMgcGVyZm9ybWFuY2UgaXMgc3RpbGwgbm90IGNvbXBhcmFibGUgdG8gYSBtZW1jcHkuICopXG5sZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAoKiBXaGVuIFtwaHlzX2VxdWFsIHNyYyBkc3RdLCB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgW2RzdF9wb3MgPCBzcmNfcG9zXSBhbmQgaGF2ZSB0aGVcbiAgICAgZm9yIGxvb3AgZ28gaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiBzbyB0aGF0IHdlIGRvbid0IG92ZXJ3cml0ZSBkYXRhIHRoYXQgd2Ugc3RpbGwgbmVlZFxuICAgICB0byByZWFkLiAgV2hlbiBbbm90IChwaHlzX2VxdWFsIHNyYyBkc3QpXSwgZG9pbmcgdGhpcyBpcyBoYXJtbGVzcy4gIEZyb20gYVxuICAgICBtZW1vcnktcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgb25lIGxvb3BzIHVwIG9yIGRvd24uXG4gICAgIENvbnN0YW50LXN0cmlkZSBhY2Nlc3MsIGZvcndhcmQgb3IgYmFja3dhcmQsIHNob3VsZCBiZSBpbmRpc3Rpbmd1aXNoYWJsZSAoYXQgbGVhc3Qgb25cbiAgICAgYW4gaW50ZWwgaTcpLiAgU28sIHdlIGRvbid0IGRvIGEgY2hlY2sgZm9yIFtwaHlzX2VxdWFsIHNyYyBkc3RdIGFuZCBhbHdheXMgbG9vcCB1cCBpblxuICAgICB0aGF0IGNhc2UuICopXG4gIGlmIGRzdF9wb3MgPCBzcmNfcG9zXG4gIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG4gIGVsc2VcbiAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuOztcblxuaW5jbHVkZSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlX3plcm9cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSBzcmMgPVxuICBsZXQgZHN0ID0gY3JlYXRlX3plcm8gfmxlbjoobGVuZ3RoIHNyYykgaW5cbiAgYmxpdG8gfnNyYyB+ZHN0ICgpO1xuICBkc3Rcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogV0FSTklORzpcbiAgIFdlIHVzZSBub24tbWVtb3J5LXNhZmUgdGhpbmdzIHRocm91Z2hvdXQgdGhlIFtUcnVzdGVkXSBtb2R1bGUuXG4gICBNb3N0IG9mIGl0IGlzIG9ubHkgc2FmZSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSB0eXBlIHNpZ25hdHVyZSAoZS5nLiBleHBvc2luZ1xuICAgW3ZhbCBjb3B5IDogJ2EgdCAtPiAnYiB0XSB3b3VsZCBiZSBhIGJpZyBtaXN0YWtlKS4gKilcbm1vZHVsZSBUcnVzdGVkIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX29ial9hcnJheSA6IGxlbjppbnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYSB0XG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc3dhcCA6IF8gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgdW5zYWZlX3NldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBCbGl0LmJsaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIDogXyB0IC0+IGludCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gT2JqX2FycmF5LnRcblxuICBsZXQgZW1wdHkgPSBPYmpfYXJyYXkuZW1wdHlcbiAgbGV0IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZV9vYmpfYXJyYXkgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGUgfmxlbiB4ID0gT2JqX2FycmF5LmNyZWF0ZSB+bGVuIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCBzaW5nbGV0b24geCA9IE9ial9hcnJheS5zaW5nbGV0b24gKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHN3YXAgdCBpIGogPSBPYmpfYXJyYXkuc3dhcCB0IGkgalxuICBsZXQgZ2V0IGFyciBpID0gQ2FtbC5PYmoub2JqIChPYmpfYXJyYXkuZ2V0IGFyciBpKVxuICBsZXQgc2V0IGFyciBpIHggPSBPYmpfYXJyYXkuc2V0IGFyciBpIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfZ2V0IGFyciBpID0gQ2FtbC5PYmoub2JqIChPYmpfYXJyYXkudW5zYWZlX2dldCBhcnIgaSlcbiAgbGV0IHVuc2FmZV9zZXQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0IGFyciBpIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfc2V0X2ludCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50IGFyciBpIHhcblxuICBsZXQgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9IE9ial9hcnJheS5sZW5ndGhcbiAgbGV0IHVuc2FmZV9ibGl0ID0gT2JqX2FycmF5LnVuc2FmZV9ibGl0XG4gIGxldCBjb3B5ID0gT2JqX2FycmF5LmNvcHlcblxuICBsZXQgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9IE9ial9hcnJheS5zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyID0gT2JqX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyXG5lbmRcblxuaW5jbHVkZSBUcnVzdGVkXG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAoQ2FtbC5PYmoudGFnIChDYW1sLk9iai5yZXByIHQpIDw+IENhbWwuT2JqLmRvdWJsZV9hcnJheV90YWcpXG5cbmxldCBpbml0IGwgfmYgPVxuICBpZiBsIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiVW5pZm9ybV9hcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOmwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBvZl9hcnJheSBhcnIgPSBpbml0IH5mOihBcnJheS51bnNhZmVfZ2V0IGFycikgKEFycmF5Lmxlbmd0aCBhcnIpXG5sZXQgbWFwIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSlcbmxldCBtYXBpIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmIGkgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKVxuXG5sZXQgaXRlciBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgZm9sZGkgYSB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCB+ZjooZ2V0IHQpIChsZW5ndGggdClcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIHggLT4gc2V0IHJlcyBpIHgpO1xuICByZXNcbjs7XG5cbigqIEl0IGlzIG5vdCBzYWZlIGZvciBbdG9fYXJyYXldIHRvIGJlIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBiZWNhdXNlIHdlIGhhdmUgY29kZSB0aGF0XG4gICByZWxpZXMgb24gW2Zsb2F0IGFycmF5XXMgYmVpbmcgdW5ib3hlZCwgZm9yIGV4YW1wbGUgaW4gW2Jpbl93cml0ZV9hcnJheV0uICopXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gZmFsc2UgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IH5mIChpIC0gMSlcbiAgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9IGlmIGkgPCAwIHRoZW4gdHJ1ZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSAmJiBsb29wIHQgfmYgKGkgLSAxKSBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggdDEgaW5cbiAgaWYgbGVuZ3RoIHQyIDw+IGxlbiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMl9leG5cIjtcbiAgaW5pdCBsZW4gfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAoZ3JhbW1hciA6IGVsdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBlbHQgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5pbmNsdWRlXG4gIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgIChBcnJheSlcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBlbXB0eVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gKGdldCB0IDApKVxuICAgIDs7XG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbigqIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHBweF9jb21wYXJlIFtjb21wYXJlX2FycmF5XSBidXQgdXNlcyBvdXIgW3Vuc2FmZV9nZXRdIGFuZCBbbGVuZ3RoXS4gKilcbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGEgYiA9XG4gIGlmIHBoeXNfZXF1YWwgYSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuX2EgPSBsZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IGxlbmd0aCBiIGluXG4gICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICBpZiByZXQgPD4gMFxuICAgIHRoZW4gcmV0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGwgPSB1bnNhZmVfZ2V0IGEgaVxuICAgICAgICAgIGFuZCByID0gdW5zYWZlX2dldCBiIGkgaW5cbiAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICBpblxuICAgICAgbG9vcCAwKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBjZWlsID0gQ2FtbC5jZWlsXG5sZXQgZmxvb3IgPSBDYW1sLmZsb29yXG5sZXQgbW9kX2Zsb2F0ID0gQ2FtbC5tb2RfZmxvYXRcbmxldCBtb2RmID0gQ2FtbC5tb2RmXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gQ2FtbC5mbG9hdF9vZl9zdHJpbmdcbmxldCBuYW4gPSBDYW1sLm5hblxubGV0IGluZmluaXR5ID0gQ2FtbC5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IENhbWwubmVnX2luZmluaXR5XG5sZXQgbWF4X2Zpbml0ZV92YWx1ZSA9IENhbWwubWF4X2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IENhbWwuZXBzaWxvbl9mbG9hdFxubGV0IGNsYXNzaWZ5X2Zsb2F0ID0gQ2FtbC5jbGFzc2lmeV9mbG9hdFxubGV0IGFic19mbG9hdCA9IENhbWwuYWJzX2Zsb2F0XG5sZXQgaXNfaW50ZWdlciA9IENhbWwuRmxvYXQuaXNfaW50ZWdlclxubGV0ICggKiogKSA9IENhbWwuKCAqKiApXG5cbmxldCAoICUuICkgYSBiID1cbiAgKCogUmFpc2UgaW4gY2FzZSBvZiBhIG5lZ2F0aXZlIG1vZHVsdXMsIGFzIGRvZXMgSW50LiggJSApLiAqKVxuICBpZiBiIDwgMC5cbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiJWYgJSUgJWYgaW4gZmxvYXQwLm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiIGEgYiAoKTtcbiAgbGV0IG0gPSBDYW1sLm1vZF9mbG9hdCBhIGIgaW5cbiAgKCogUHJvZHVjZSBhIG5vbi1uZWdhdGl2ZSByZXN1bHQgaW4gYW5hbG9neSB3aXRoIEludC4oICUgKS4gKilcbiAgaWYgbSA8IDAuIHRoZW4gbSArLiBiIGVsc2UgbVxuOztcblxuKCogVGhlIGJpdHMgb2YgSU5SSUEncyBbUGVydmFzaXZlc10gdGhhdCB3ZSBqdXN0IHdhbnQgdG8gZXhwb3NlIGluIFtGbG9hdF0uIE1vc3QgYXJlXG4gICBhbHJlYWR5IGRlcHJlY2F0ZWQgaW4gW1BlcnZhc2l2ZXNdLCBhbmQgZXZlbnR1YWxseSBhbGwgb2YgdGhlbSBzaG91bGQgYmUuICopXG5pbmNsdWRlIChcbiAgQ2FtbCA6XG4gIHNpZ1xuICAgIGV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuXG4gICAgZXh0ZXJuYWwgbGRleHBcbiAgICAgIDogIChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgICAtPiAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiXG4gICAgW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gIGVuZClcblxuKCogV2UgbmVlZCB0aGlzIGluZGlyZWN0aW9uIGJlY2F1c2UgdGhlc2UgYXJlIGV4cG9zZWQgYXMgXCJ2YWxcIiBpbnN0ZWFkIG9mIFwiZXh0ZXJuYWxcIiAqKVxubGV0IGZyZXhwID0gZnJleHBcbmxldCBsZGV4cCA9IGxkZXhwXG5sZXQgaXNfbmFuIHggPSAoeCA6IGZsb2F0KSA8PiB4XG5cbigqIEFuIG9yZGVyLXByZXNlcnZpbmcgYmlqZWN0aW9uIGJldHdlZW4gYWxsIGZsb2F0cyBleGNlcHQgZm9yIE5hTnMsIGFuZCA5OS45NSUgb2ZcbiAgIGludDY0cy5cblxuICAgTm90ZSB3ZSBkb24ndCBkaXN0aW5ndWlzaCAwLiBhbmQgLTAuIGFzIHNlcGFyYXRlIHZhbHVlcyBoZXJlLCB0aGV5IGJvdGggbWFwIHRvIDBMLCB3aGljaFxuICAgbWFwcyBiYWNrIHRvIDAuXG5cbiAgIFRoaXMgc2hvdWxkIHdvcmsgYm90aCBvbiBsaXR0bGUtZW5kaWFuIGFuZCBoaWdoLWVuZGlhbiBDUFVzLiAgV2lraXBlZGlhIHNheXM6IFwib25cbiAgIG1vZGVybiBzdGFuZGFyZCBjb21wdXRlcnMgKGkuZS4sIGltcGxlbWVudGluZyBJRUVFIDc1NCksIG9uZSBtYXkgaW4gcHJhY3RpY2Ugc2FmZWx5XG4gICBhc3N1bWUgdGhhdCB0aGUgZW5kaWFubmVzcyBpcyB0aGUgc2FtZSBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcyBmb3IgaW50ZWdlcnNcIlxuICAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5kaWFubmVzcyNGbG9hdGluZy1wb2ludF9hbmRfZW5kaWFubmVzcykuXG4qKVxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgPVxuICBpZiBpc19uYW4gdFxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiAoKiBhbHNvIGluY2x1ZGVzIC0wLiAqKVxuICAgIFNvbWUgMExcbiAgZWxzZSBpZiB0ID4gMC5cbiAgdGhlbiBTb21lIChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdClcbiAgZWxzZSBTb21lIChDYW1sLkludDY0Lm5lZyAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0ICgtLnQpKSlcbjs7XG5cbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4geCA9IE9wdGlvbi52YWx1ZV9leG4gKHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHgpXG5cbmxldCBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4ID1cbiAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSB4IDBMXG4gIHRoZW4gQ2FtbC5JbnQ2NC5mbG9hdF9vZl9iaXRzIHhcbiAgZWxzZSB+LS4oQ2FtbC5JbnQ2NC5mbG9hdF9vZl9iaXRzIChDYW1sLkludDY0Lm5lZyB4KSlcbjs7XG5cbmxldCBvbmVfdWxwIGRpciB0ID1cbiAgbWF0Y2ggdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCB3aXRoXG4gIHwgTm9uZSAtPiBDYW1sLm5hblxuICB8IFNvbWUgeCAtPlxuICAgIG9mX2ludDY0X3ByZXNlcnZlX29yZGVyXG4gICAgICAoQ2FtbC5JbnQ2NC5hZGRcbiAgICAgICAgIHhcbiAgICAgICAgIChtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgIHwgYFVwIC0+IDFMXG4gICAgICAgICAgfCBgRG93biAtPiAtMUwpKVxuOztcblxuKCogW3VwcGVyX2JvdW5kX2Zvcl9pbnRdIGFuZCBbbG93ZXJfYm91bmRfZm9yX2ludF0gYXJlIGZvciBjYWxjdWxhdGluZyB0aGUgbWF4L21pbiBmbG9hdFxuICAgdGhhdCBmaXRzIGluIGEgZ2l2ZW4tc2l6ZSBpbnRlZ2VyIHdoZW4gcm91bmRlZCB0b3dhcmRzIDAgKHVzaW5nIFtpbnRfb2ZfZmxvYXRdKS5cblxuICAgbWF4X2ludC9taW5faW50IGRlcGVuZCBvbiBbbnVtX2JpdHNdLCBlLmcuICsvLSAyXjMwLCArLy0gMl42MiBpZiAzMS1iaXQsIDYzLWJpdFxuICAgKHJlc3BlY3RpdmVseSkgd2hpbGUgZmxvYXQgaXMgSUVFRSBzdGFuZGFyZCBmb3IgZG91YmxlICg1MiBzaWduaWZpY2FudCBiaXRzKS5cblxuICAgSW4gYWxsIGNhc2VzLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGF0XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCA8PSB4IDw9IHVwcGVyX2JvdW5kX2Zvcl9pbnRdXG4gICBpZmYgW2ludF9vZl9mbG9hdCB4XSBmaXRzIGluIGFuIGludCB3aXRoIFtudW1fYml0c10gYml0cy5cblxuICAgWzIgKiogKG51bV9iaXRzIC0gMSldIGlzIHRoZSBmaXJzdCBmbG9hdCBncmVhdGVyIHRoYXQgbWF4X2ludCwgd2UgdXNlIHRoZSBwcmVjZWRpbmdcbiAgIGZsb2F0IGFzIHVwcGVyIGJvdW5kLlxuXG4gICBbLSAoMiAqKiAobnVtX2JpdHMgLSAxKSldIGlzIGVxdWFsIHRvIG1pbl9pbnQuXG4gICBGb3IgbG93ZXIgYm91bmQgd2UgbG9vayBmb3IgdGhlIHNtYWxsZXN0IGZsb2F0IFtmXSBzYXRpc2Z5aW5nIFtmID4gbWluX2ludCAtIDFdIHNvIHRoYXRcbiAgIFtmXSByb3VuZHMgdG93YXJkIHplcm8gdG8gW21pbl9pbnRdXG5cbiAgIFNvIGluIHBhcnRpY3VsYXIgd2Ugd2lsbCBoYXZlOlxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgeCA8PSAtICgyICoqICgxLXgpKV1cbiAgIFt1cHBlcl9ib3VuZF9mb3JfaW50IHggIDwgICAgMiAqKiAoMS14KSBdXG4qKVxubGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gQ2FtbC5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgb25lX3VscCBgRG93biAoMi4gKiogZXhwKVxuOztcblxubGV0IGlzX3hfbWludXNfb25lX2V4YWN0IHggPVxuICAoKiBbeCA9IHggLS4gMS5dIGRvZXMgbm90IHdvcmsgd2l0aCB4ODcgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYWNrZW5kICh3aGljaCBpcyB1c2VkXG4gICAgIG9uIDMyLWJpdCBvY2FtbCkgYmVjYXVzZSBvZiA4MC1iaXQgcmVnaXN0ZXIgcHJlY2lzaW9uIG9mIGludGVybWVkaWF0ZSBjb21wdXRhdGlvbnMuXG5cbiAgICAgQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGNvbXB1dGluZyB0aGlzOiBbeCAtLiBvbmVfdWxwIGBEb3duIHggPD0gMS5dIGlzIGFsc28gcHJvbmUgdG9cbiAgICAgdGhlIHNhbWUgcHJlY2lzaW9uIGlzc3VlczogeW91IG5lZWQgdG8gbWFrZSBzdXJlIFt4XSBpcyA2NC1iaXQuXG4gICopXG4gIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBub3QgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB4ID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0ICh4IC0uIDEuKSlcbjs7XG5cbmxldCBsb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IENhbWwuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIGxldCBtaW5faW50X2FzX2Zsb2F0ID0gfi0uKDIuICoqIGV4cCkgaW5cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBudW1fYml0cyAtIDEgPCA1MyAoKiA1MyA9ICNiaXRzIGluIHRoZSBmbG9hdCdzIG1hbnRpc3NhIHdpdGggc2lnbiBpbmNsdWRlZCAqKVxuICB0aGVuIChcbiAgICAoKiBUaGUgc21hbGxlc3QgZmxvYXQgdGhhdCByb3VuZHMgdG93YXJkcyB6ZXJvIHRvIFttaW5faW50XSBpc1xuICAgICAgIFttaW5faW50IC0gMSArIGVwc2lsb25dICopXG4gICAgYXNzZXJ0IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KTtcbiAgICBvbmVfdWxwIGBVcCAobWluX2ludF9hc19mbG9hdCAtLiAxLikpXG4gIGVsc2UgKFxuICAgICgqIFttaW5faW50X2FzX2Zsb2F0XSBpcyBhbHJlYWR5IHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXS4gKilcbiAgICBhc3NlcnQgKG5vdCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCkpO1xuICAgIG1pbl9pbnRfYXNfZmxvYXQpXG47O1xuXG4oKiBGbG9hdCBjbGFtcGluZyBpcyBzdHJ1Y3R1cmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gY2xhbXBpbmcgZm9yIG90aGVyIHR5cGVzLCBzb1xuICAgdGhhdCB3ZSBnZXQgdGhlIGJlaGF2aW9yIG9mIFtjbGFtcF91bmNoZWNrZWQgbmFuIH5taW4gfm1heCA9IG5hbl0gKGZvciBhbnkgW21pbl0gYW5kXG4gICBbbWF4XSkgZm9yIGZyZWUuXG4qKVxubGV0IGNsYW1wX3VuY2hlY2tlZCAodCA6IGZsb2F0KSB+bWluIH5tYXggPVxuICBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgbWF4IDwgdCB0aGVuIG1heCBlbHNlIHRcbjs7XG5cbmxldCBib3ggPVxuICAoKiBQcmV2ZW50IHBvdGVudGlhbCBjb25zdGFudCBmb2xkaW5nIG9mIFsrLiAwLl0gaW4gdGhlIG5lYXIgb2NhbWxvcHQgZnV0dXJlLiAqKVxuICBsZXQgeCA9IFN5czAub3BhcXVlX2lkZW50aXR5IDAuIGluXG4gIGZ1biBmIC0+IGYgKy4geFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5pbmNsdWRlIENoYXIwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2NoYXIgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfY2hhclxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfY2hhciBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubWFrZSAxIHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggcyB3aXRoXG4gICAgfCAxIC0+IHMuWzBdXG4gICAgfCBfIC0+IGZhaWx3aXRoZiBcIkNoYXIub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQ2hhclwiXG4gIGVuZClcblxubGV0IHBwIGZtdCBjID0gQ2FtbC5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlQ1wiIGNcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBhbGwgPSBBcnJheS5pbml0IDI1NiB+Zjp1bnNhZmVfb2ZfaW50IHw+IEFycmF5LnRvX2xpc3RcblxubGV0IGlzX2xvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3VwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3ByaW50ID0gZnVuY3Rpb25cbiAgfCAnICcgLi4gJ34nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXDAxMScgKCogdmVydGljYWwgdGFiICopIHwgJ1xcMDEyJyAoKiBmb3JtIGZlZWQgKikgfCAnXFxyJyB8ICcgJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfYWxwaGEgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG4oKiBXcml0aW5nIHRoZXNlIG91dCwgaW5zdGVhZCBvZiBjYWxsaW5nIFtpc19hbHBoYV0gYW5kIFtpc19kaWdpdF0sIHJlZHVjZXNcbiAgIHJ1bnRpbWUgYnkgYXBwcm94LiAzMCUgKilcbmxldCBpc19hbHBoYW51bSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2RpZ2l0X3Vuc2FmZSB0ID0gdG9faW50IHQgLSB0b19pbnQgJzAnXG5cbmxldCBnZXRfZGlnaXRfZXhuIHQgPVxuICBpZiBpc19kaWdpdCB0XG4gIHRoZW4gZ2V0X2RpZ2l0X3Vuc2FmZSB0XG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5nZXRfZGlnaXRfZXhuICVDOiBub3QgYSBkaWdpdFwiIHQgKClcbjs7XG5cbmxldCBnZXRfZGlnaXQgdCA9IGlmIGlzX2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfZGlnaXRfdW5zYWZlIHQpIGVsc2UgTm9uZVxuXG5sZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfbG93ZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X3VwcGVyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9oZXhfZGlnaXRfZXhuID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJzAnXG4gIHwgJ2EnIC4uICdmJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdhJyArIDEwXG4gIHwgJ0EnIC4uICdGJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdBJyArIDEwXG4gIHwgdCAtPlxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiQ2hhci5nZXRfaGV4X2RpZ2l0X2V4bjogbm90IGEgaGV4YWRlY2ltYWwgZGlnaXRcIlxuICAgICAgICAgWyBcImNoYXJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0IHQgPSBpZiBpc19oZXhfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9oZXhfZGlnaXRfZXhuIHQpIGVsc2UgTm9uZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIGMxIGMyID0gY29tcGFyZSAobG93ZXJjYXNlIGMxKSAobG93ZXJjYXNlIGMyKVxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2NoYXIgc3RhdGUgKGxvd2VyY2FzZSB0KVxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydDAuSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG4oKiBDb25zdHJ1Y3QgYSBieXRlIHN0cmluZyBvZiBsZW5ndGggMjU2LCBtYXBwaW5nIGV2ZXJ5IGlucHV0IGNoYXJhY3RlciBjb2RlIHRvXG4gICBpdHMgY29ycmVzcG9uZGluZyBvdXRwdXQgY2hhcmFjdGVyLlxuXG4gICBCZW5jaG1hcmtzIGluZGljYXRlIHRoYXQgdGhpcyBpcyBmYXN0ZXIgdGhhbiB0aGUgbGFtYmRhIChpbmNsdWRpbmcgY29zdCBvZlxuICAgdGhpcyBmdW5jdGlvbiksIGV2ZW4gaWYgdGFyZ2V0L3JlcGxhY2VtZW50IGFyZSBqdXN0IDIgY2hhcmFjdGVycyBlYWNoLlxuXG4gICBSZXR1cm4gTm9uZSBpZiB0aGUgdHJhbnNsYXRpb24gbWFwIGlzIGVxdWl2YWxlbnQgdG8ganVzdCB0aGUgaWRlbnRpdHkuICopXG5sZXQgdHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGxldCB0cl9tYXAgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAtIDEgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggKFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IGkpXG4gIGRvbmU7XG4gIGxldCBsYXN0X3JlcGxhY2VtZW50ID0gU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQgLSAxKSBpblxuICBmb3JcbiAgICBpID0gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIHRvIFN0cmluZy5sZW5ndGggdGFyZ2V0IC0gMVxuICBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCBsYXN0X3JlcGxhY2VtZW50XG4gIGRvbmU7XG4gIGxldCByZWMgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCBpID1cbiAgICBpZiBpID0gMjU2XG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCBpKSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIChpICsgMSlcbiAgaW5cbiAgKCogcXVpY2sgY2hlY2sgb24gdGhlIGZpcnN0IHRhcmdldCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCA5OSUgYmUgdHJ1ZSAqKVxuICBsZXQgZmlyc3RfdGFyZ2V0ID0gdGFyZ2V0LlswXSBpblxuICBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBmaXJzdF90YXJnZXQpKSBmaXJzdF90YXJnZXRcbiAgfHwgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAwXG4gIHRoZW4gU29tZSAoQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dHJfbWFwKVxuICBlbHNlIE5vbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2FcblxubGV0IHN0YWdlID0gRm4uaWRcbmxldCB1bnN0YWdlID0gRm4uaWRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5pbmNsdWRlIFN0cmluZzBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxuKCogVGhpcyBhbGlhcyBpcyBuZWNlc3NhcnkgZGVzcGl0ZSBbU3RyaW5nMF0gZGVmaW5pbmcgW0J5dGVzID0gQnl0ZXMwXSwgaW4gb3JkZXIgdG9cbiAgIGNvbnZpbmNlIG9jYW1sZGVwIHRoYXQgdGhpcyBmaWxlIGRvZXNuJ3QgZGVwZW5kIG9uIGJ5dGVzLm1sLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9zdHJpbmdcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3N0cmluZyBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoc3RyaW5nX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbnR5cGUgZWx0ID0gY2hhclxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG4oKiBUaGlzIGlzIGNvcGllZC9hZGFwdGVkIGZyb20gJ2JsaXQubWwnLlxuICAgW3N1Yl0sIFtzdWJvXSBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbQmxpdC5NYWtlKEJ5dGVzKV0gcGx1cyB1bnNhZmUgY2FzdHMgdG8vZnJvbVxuICAgc3RyaW5nIGJ1dCB3ZXJlIGlubGluZWQgaGVyZSB0byBhdm9pZCB1c2luZyBbQnl0ZXMudW5zYWZlX29mX3N0cmluZ10gYXMgbXVjaCBhcyBwb3NzaWJsZS5cbiopXG5sZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPSAwICYmIGxlbiA9IFN0cmluZy5sZW5ndGggc3JjXG4gIHRoZW4gc3JjXG4gIGVsc2UgKFxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBzcmMpO1xuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFwiXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdCkpXG47O1xuXG5sZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgc3ViXG4gICAgc3JjXG4gICAgfnBvc1xuICAgIH5sZW46XG4gICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgfCBOb25lIC0+IGxlbmd0aCBzcmMgLSBwb3MpXG47O1xuXG5sZXQgcmVjIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF8gY2hhciA9XG4gIHBvcyA8IGVuZF9cbiAgJiYgKENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgdCBwb3MpIGNoYXIgfHwgY29udGFpbnNfdW5zYWZlIHQgfnBvczoocG9zICsgMSkgfmVuZF8gY2hhcilcbjs7XG5cbmxldCBjb250YWlucyA/KHBvcyA9IDApID9sZW4gdCBjaGFyID1cbiAgbGV0IHRvdGFsX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggdCBpblxuICBsZXQgbGVuID0gT3B0aW9uLnZhbHVlIGxlbiB+ZGVmYXVsdDoodG90YWxfbGVuZ3RoIC0gcG9zKSBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfOihwb3MgKyBsZW4pIGNoYXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCByZWMgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPj0gbGVuXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyArIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZXhuIHQgY2hhciA9IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2V4blxuOztcblxubGV0IGluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9mcm9tX2V4blxuOztcblxubGV0IHJlYyByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPCAwXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczoobGVuIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2V4biB0IGNoYXIgPSByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2V4blxuOztcblxubGV0IHJpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IC0xIHx8IHBvcyA+PSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IGluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybjAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5ID0gXyB9IDogU2V4cC50ID1cbiAgICBMaXN0XG4gICAgICBbIExpc3QgWyBBdG9tIFwicGF0dGVyblwiOyBzZXhwX29mX3N0cmluZyBwYXR0ZXJuIF1cbiAgICAgIDsgTGlzdCBbIEF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmUgXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBwYXR0ZXJuIHQgPSB0LnBhdHRlcm5cbiAgbGV0IGNhc2Vfc2Vuc2l0aXZlIHQgPSB0LmNhc2Vfc2Vuc2l0aXZlXG5cbiAgKCogRmluZCBtYXggbnVtYmVyIG9mIG1hdGNoZWQgY2hhcmFjdGVycyBhdCBbbmV4dF90ZXh0X2NoYXJdLCBnaXZlbiB0aGUgY3VycmVudFxuICAgICBbbWF0Y2hlZF9jaGFyc10uIFRyeSB0byBleHRlbmQgdGhlIGN1cnJlbnQgbWF0Y2gsIGlmIGNoYXJzIGRvbid0IG1hdGNoLCB0cnkgdG8gbWF0Y2hcbiAgICAgZmV3ZXIgY2hhcnMuIElmIGNoYXJzIG1hdGNoIHRoZW4gZXh0ZW5kIHRoZSBtYXRjaC4gKilcbiAgbGV0IGttcF9pbnRlcm5hbF9sb29wIH5tYXRjaGVkX2NoYXJzIH5uZXh0X3RleHRfY2hhciB+cGF0dGVybiB+a21wX2FycmF5IH5jaGFyX2VxdWFsID1cbiAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiBtYXRjaGVkX2NoYXJzIGluXG4gICAgd2hpbGVcbiAgICAgICFtYXRjaGVkX2NoYXJzID4gMFxuICAgICAgJiYgbm90IChjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpKVxuICAgIGRvXG4gICAgICBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5ICghbWF0Y2hlZF9jaGFycyAtIDEpXG4gICAgZG9uZTtcbiAgICBpZiBjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpXG4gICAgdGhlbiBtYXRjaGVkX2NoYXJzIDo9ICFtYXRjaGVkX2NoYXJzICsgMTtcbiAgICAhbWF0Y2hlZF9jaGFyc1xuICA7O1xuXG4gIGxldCBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIG1hdGNoIGNhc2Vfc2Vuc2l0aXZlIHdpdGhcbiAgICB8IHRydWUgLT4gQ2hhci5lcXVhbFxuICAgIHwgZmFsc2UgLT4gQ2hhci5DYXNlbGVzcy5lcXVhbFxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QIHByZS1wcm9jZXNzaW5nIG9mIHRoZSBwYXR0ZXJuOiBidWlsZCB0aGUgaW50IGFycmF5LCB3aGljaCwgZm9yIGVhY2ggaSxcbiAgICAgY29udGFpbnMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBub24tdHJpdmlhbCBwcmVmaXggb2YgcyB3aGljaCBpcyBlcXVhbCB0byBhIHN1ZmZpeFxuICAgICBlbmRpbmcgYXQgcy5baV0gKilcbiAgbGV0IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbGV0IG4gPSBsZW5ndGggcGF0dGVybiBpblxuICAgIGxldCBrbXBfYXJyYXkgPSBBcnJheS5jcmVhdGUgfmxlbjpuICgtMSkgaW5cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IDAgMDtcbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXI6KHVuc2FmZV9nZXQgcGF0dGVybiBpKVxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSBpICFtYXRjaGVkX2NoYXJzXG4gICAgICBkb25lKTtcbiAgICB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfVxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QOiB1c2UgdGhlIHByZS1wcm9jZXNzZWQgcGF0dGVybiB0byBvcHRpbWl6ZSBsb29rLWJlaGluZHMgb24gbm9uLW1hdGNoZXMuXG4gICAgIFdlIHJldHVybiBpbnQgdG8gYXZvaWQgYWxsb2NhdGlvbiBpbiBbaW5kZXhfZXhuXS4gLTEgbWVhbnMgbm8gbWF0Y2guICopXG4gIGxldCBpbmRleF9pbnRlcm5hbCA/KHBvcyA9IDApIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5pbl86dGV4dCA9XG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5ndGggdGV4dCAtIGxlbmd0aCBwYXR0ZXJuXG4gICAgdGhlbiAtMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBqID0gcmVmIHBvcyBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgd2hpbGUgIWogPCBuICYmICFtYXRjaGVkX2NoYXJzIDwgayBkb1xuICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgIWogaW5cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIGogOj0gIWogKyAxXG4gICAgICBkb25lO1xuICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrIHRoZW4gIWogLSBrIGVsc2UgLTEpXG4gIDs7XG5cbiAgbGV0IG1hdGNoZXMgdCBzdHIgPSBpbmRleF9pbnRlcm5hbCB0IH5pbl86c3RyID49IDBcblxuICBsZXQgaW5kZXggP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHBcbiAgOztcblxuICBsZXQgaW5kZXhfZXhuID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA+PSAwXG4gICAgdGhlbiBwXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiU3Vic3RyaW5nIG5vdCBmb3VuZFwiIFsgXCJzdWJzdHJpbmdcIiwgc2V4cF9vZl9zdHJpbmcgdC5wYXR0ZXJuIF0pXG4gIDs7XG5cbiAgbGV0IGluZGV4X2FsbCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+bWF5X292ZXJsYXAgfmluXzp0ZXh0ID1cbiAgICBpZiBsZW5ndGggcGF0dGVybiA9IDBcbiAgICB0aGVuIExpc3QuaW5pdCAoMSArIGxlbmd0aCB0ZXh0KSB+ZjpGbi5pZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIGxldCBmb3VuZCA9IHJlZiBbXSBpblxuICAgICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGZvdW5kIDo9IChqIC0gaykgOjogIWZvdW5kO1xuICAgICAgICAgICgqIHdlIGp1c3QgZm91bmQgYSBtYXRjaCBpbiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uICopXG4gICAgICAgICAgbWF0Y2ggbWF5X292ZXJsYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPiBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5IChrIC0gMSlcbiAgICAgICAgICB8IGZhbHNlIC0+IG1hdGNoZWRfY2hhcnMgOj0gMCk7XG4gICAgICAgIGlmIGogPCBuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCBqIGluXG4gICAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgICAgfmNoYXJfZXF1YWwpXG4gICAgICBkb25lO1xuICAgICAgTGlzdC5yZXYgIWZvdW5kKVxuICA7O1xuXG4gIGxldCByZXBsYWNlX2ZpcnN0ID9wb3MgdCB+aW5fOnMgfndpdGhfID1cbiAgICBtYXRjaCBpbmRleCA/cG9zIHQgfmluXzpzIHdpdGhcbiAgICB8IE5vbmUgLT4gc1xuICAgIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArIGxlbl93aXRoIC0gbGVuX3QpIGluXG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjppO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp3aXRoXyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6aSB+bGVuOmxlbl93aXRoO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOihpICsgbGVuX3QpXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6KGkgKyBsZW5fd2l0aClcbiAgICAgICAgfmxlbjoobGVuX3MgLSBpIC0gbGVuX3QpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuXG4gIGxldCByZXBsYWNlX2FsbCB0IH5pbl86cyB+d2l0aF8gPVxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIG1hdGNoIG1hdGNoZXMgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgbnVtX21hdGNoZXMgPSBMaXN0Lmxlbmd0aCBtYXRjaGVzIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArICgobGVuX3dpdGggLSBsZW5fdCkgKiBudW1fbWF0Y2hlcykpIGluXG4gICAgICBsZXQgbmV4dF9kc3RfcG9zID0gcmVmIDAgaW5cbiAgICAgIGxldCBuZXh0X3NyY19wb3MgPSByZWYgMCBpblxuICAgICAgTGlzdC5pdGVyIG1hdGNoZXMgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBsZW4gPSBpIC0gIW5leHRfc3JjX3BvcyBpblxuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6IW5leHRfc3JjX3BvcyB+ZHN0IH5kc3RfcG9zOiFuZXh0X2RzdF9wb3MgfmxlbjtcbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgICB+c3JjOndpdGhfXG4gICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgIH5kc3RcbiAgICAgICAgICB+ZHN0X3BvczooIW5leHRfZHN0X3BvcyArIGxlbilcbiAgICAgICAgICB+bGVuOmxlbl93aXRoO1xuICAgICAgICBuZXh0X2RzdF9wb3MgOj0gIW5leHRfZHN0X3BvcyArIGxlbiArIGxlbl93aXRoO1xuICAgICAgICBuZXh0X3NyY19wb3MgOj0gIW5leHRfc3JjX3BvcyArIGxlbiArIGxlbl90KTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczohbmV4dF9zcmNfcG9zXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6IW5leHRfZHN0X3Bvc1xuICAgICAgICB+bGVuOihsZW5fcyAtICFuZXh0X3NyY19wb3MpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuICBsZXQgc3BsaXRfb24gdCBzID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHQucGF0dGVybiBpblxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIExpc3QubWFwMl9leG5cbiAgICAgICgtcGF0dGVybl9sZW4gOjogbWF0Y2hlcylcbiAgICAgIChtYXRjaGVzIEAgWyBTdHJpbmcubGVuZ3RoIHMgXSlcbiAgICAgIH5mOihmdW4gaSBqIC0+IHN1YiBzIH5wb3M6KGkgKyBwYXR0ZXJuX2xlbikgfmxlbjooaiAtIGkgLSBwYXR0ZXJuX2xlbikpXG4gIDs7XG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHB1YmxpYyA9IHRcblxuICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsID1cbiAgICAgIChmdW4gYV9fMDAyXyBiX18wMDNfIC0+XG4gICAgICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDJfIGJfXzAwM19cbiAgICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgICAgICAgKGVxdWFsX3N0cmluZyBhX18wMDJfLnBhdHRlcm4gYl9fMDAzXy5wYXR0ZXJuKVxuICAgICAgICAgICAgIChQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgICAgICAgICAgKGVxdWFsX2Jvb2wgYV9fMDAyXy5jYXNlX3NlbnNpdGl2ZSBiX18wMDNfLmNhc2Vfc2Vuc2l0aXZlKVxuICAgICAgICAgICAgICAgIChlcXVhbF9hcnJheSBlcXVhbF9pbnQgYV9fMDAyXy5rbXBfYXJyYXkgYl9fMDAzXy5rbXBfYXJyYXkpKVxuICAgICAgICAgICA6IHQgLT4gdCAtPiBib29sKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgIChmdW4geyBwYXR0ZXJuID0gcGF0dGVybl9fMDA3X1xuICAgICAgICAgICA7IGNhc2Vfc2Vuc2l0aXZlID0gY2FzZV9zZW5zaXRpdmVfXzAwOV9cbiAgICAgICAgICAgOyBrbXBfYXJyYXkgPSBrbXBfYXJyYXlfXzAxMV9cbiAgICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9IFtdIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX2ludCBrbXBfYXJyYXlfXzAxMV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJrbXBfYXJyYXlcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZV9fMDA5XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IGFyZ19fMDEwXyBdXG4gICAgICAgICAgOjogYm5kc19fMDA2X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA4XyA9IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm5fXzAwN18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXR0ZXJuXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwNl9cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCByZXByZXNlbnRhdGlvbiA9IEZuLmlkXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybl9oZWxwZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNlYXJjaF9wYXR0ZXJuID0gU2VhcmNoX3BhdHRlcm4wXG5lbmRcblxub3BlbiBTZWFyY2hfcGF0dGVybl9oZWxwZXJcblxubGV0IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4ID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4X2V4biA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5tYXlfb3ZlcmxhcCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4X2FsbFxuICAgIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pXG4gICAgfm1heV9vdmVybGFwXG4gICAgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2ZpcnN0ID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfYWxsIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnN1YnN0cmluZyA9XG4gIE9wdGlvbi5pc19zb21lIChzdWJzdHJfaW5kZXhfZ2VuIHQgfnBhdHRlcm46c3Vic3RyaW5nIH5jYXNlX3NlbnNpdGl2ZSlcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXggPSBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3QgPSBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxuXG5sZXQgaXNfc3Vic3RyaW5nX2F0X2dlbiA9XG4gIGxldCByZWMgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3MgfnN1Yl9sZW4gfmNoYXJfZXF1YWwgPVxuICAgIGlmIHN1Yl9wb3MgPSBzdWJfbGVuXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBjaGFyX2VxdWFsICh1bnNhZmVfZ2V0IHN0ciBzdHJfcG9zKSAodW5zYWZlX2dldCBzdWIgc3ViX3BvcylcbiAgICB0aGVuIGxvb3AgfnN0ciB+c3RyX3Bvczooc3RyX3BvcyArIDEpIH5zdWIgfnN1Yl9wb3M6KHN1Yl9wb3MgKyAxKSB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuICAgIGVsc2UgZmFsc2VcbiAgaW5cbiAgZnVuIHN0ciB+cG9zOnN0cl9wb3MgfnN1YnN0cmluZzpzdWIgfmNoYXJfZXF1YWwgLT5cbiAgICBsZXQgc3RyX2xlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgc3ViX2xlbiA9IGxlbmd0aCBzdWIgaW5cbiAgICBpZiBzdHJfcG9zIDwgMCB8fCBzdHJfcG9zID4gc3RyX2xlblxuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIlN0cmluZy5pc19zdWJzdHJpbmdfYXQ6IGludmFsaWQgaW5kZXggJWQgZm9yIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgICBzdHJfcG9zXG4gICAgICAgIHN0cl9sZW5cbiAgICAgICAgKCk7XG4gICAgc3RyX3BvcyArIHN1Yl9sZW4gPD0gc3RyX2xlblxuICAgICYmIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zOjAgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbjs7XG5cbmxldCBpc19zdWZmaXhfZ2VuIHN0cmluZyB+c3VmZml4IH5jaGFyX2VxdWFsID1cbiAgbGV0IHN0cmluZ19sZW4gPSBsZW5ndGggc3RyaW5nIGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBzdHJpbmdfbGVuID49IHN1ZmZpeF9sZW5cbiAgJiYgaXNfc3Vic3RyaW5nX2F0X2dlblxuICAgICAgIHN0cmluZ1xuICAgICAgIH5wb3M6KHN0cmluZ19sZW4gLSBzdWZmaXhfbGVuKVxuICAgICAgIH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgfmNoYXJfZXF1YWxcbjs7XG5cbmxldCBpc19wcmVmaXhfZ2VuIHN0cmluZyB+cHJlZml4IH5jaGFyX2VxdWFsID1cbiAgbGV0IHN0cmluZ19sZW4gPSBsZW5ndGggc3RyaW5nIGluXG4gIGxldCBwcmVmaXhfbGVuID0gbGVuZ3RoIHByZWZpeCBpblxuICBzdHJpbmdfbGVuID49IHByZWZpeF9sZW5cbiAgJiYgaXNfc3Vic3RyaW5nX2F0X2dlbiBzdHJpbmcgfnBvczowIH5zdWJzdHJpbmc6cHJlZml4IH5jaGFyX2VxdWFsXG47O1xuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoc3RyaW5nX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgYzEgYzIgPSBDaGFyLmNvbXBhcmUgKENoYXIubG93ZXJjYXNlIGMxKSAoQ2hhci5sb3dlcmNhc2UgYzIpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfbG9vcCB+cG9zIH5zdHJpbmcxIH5sZW4xIH5zdHJpbmcyIH5sZW4yID1cbiAgICAgIGlmIHBvcyA9IGxlbjFcbiAgICAgIHRoZW4gaWYgcG9zID0gbGVuMiB0aGVuIDAgZWxzZSAtMVxuICAgICAgZWxzZSBpZiBwb3MgPSBsZW4yXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYyA9IGNoYXJfY29tcGFyZV9jYXNlbGVzcyAodW5zYWZlX2dldCBzdHJpbmcxIHBvcykgKHVuc2FmZV9nZXQgc3RyaW5nMiBwb3MpIGluXG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8IDAgLT4gY29tcGFyZV9sb29wIH5wb3M6KHBvcyArIDEpIH5zdHJpbmcxIH5sZW4xIH5zdHJpbmcyIH5sZW4yXG4gICAgICAgIHwgXyAtPiBjKVxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBzdHJpbmcxIHN0cmluZzIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzdHJpbmcxIHN0cmluZzJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZVxuICAgICAgICBjb21wYXJlX2xvb3BcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICB+c3RyaW5nMVxuICAgICAgICAgIH5sZW4xOihTdHJpbmcubGVuZ3RoIHN0cmluZzEpXG4gICAgICAgICAgfnN0cmluZzJcbiAgICAgICAgICB+bGVuMjooU3RyaW5nLmxlbmd0aCBzdHJpbmcyKVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9XG4gICAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICAgIGxldCBzdGF0ZSA9IHJlZiAoaGFzaF9mb2xkX2ludCBzdGF0ZSBsZW4pIGluXG4gICAgICBmb3IgcG9zID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHN0YXRlIDo9IGhhc2hfZm9sZF9jaGFyICFzdGF0ZSAoQ2hhci5sb3dlcmNhc2UgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICAgICAgZG9uZTtcbiAgICAgICFzdGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICAgIGxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICAgIGxldCBpc19wcmVmaXggcyB+cHJlZml4ID0gaXNfcHJlZml4X2dlbiBzIH5wcmVmaXggfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICAgIGxldCBzdWJzdHJfaW5kZXggPSBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3QgPSBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IGlzX3N1YnN0cmluZ19hdCA9IGlzX3N1YnN0cmluZ19hdF9nZW4gfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubGV0IG9mX3N0cmluZyA9IEZuLmlkXG5sZXQgdG9fc3RyaW5nID0gRm4uaWRcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCB0IGkgKGYgaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID0gaWYgaSA8IDAgdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpIC0gMSkgaW5cbiAgbG9vcCBbXSAobGVuZ3RoIHMgLSAxKVxuOztcblxubGV0IHRvX2xpc3RfcmV2IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBpID0gaWYgaSA9IGxlbiB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgKyAxKSBpblxuICBsb29wIFtdIDBcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIGkgKHVuc2FmZV9nZXQgdCAobGVuIC0gMSAtIGkpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlc1xuOztcblxuKCoqIEVmZmljaWVudCBzdHJpbmcgc3BsaXR0aW5nICopXG5cbmxldCBsc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5sc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBsc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IGluZGV4X2V4bl9pbnRlcm5hbCBsaW5lIH5ub3RfZm91bmQgZGVsaW0gaW5cbiAgICBzdWIgbGluZSB+cG9zOjAgfmxlbjpwb3MsIHN1YiBsaW5lIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBsaW5lIC0gcG9zIC0gMSlcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBsc3BsaXQyX2V4blxuOztcblxubGV0IHJzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gcmluZGV4X2V4bl9pbnRlcm5hbCBsaW5lIH5ub3RfZm91bmQgZGVsaW0gaW5cbiAgICBzdWIgbGluZSB+cG9zOjAgfmxlbjpwb3MsIHN1YiBsaW5lIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBsaW5lIC0gcG9zIC0gMSlcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByc3BsaXQyX2V4blxuOztcblxubGV0IGxzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAobHNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAocnNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJlYyBjaGFyX2xpc3RfbWVtIGwgKGMgOiBjaGFyKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgaGQgOjogdGwgLT4gQ2hhci5lcXVhbCBoZCBjIHx8IGNoYXJfbGlzdF9tZW0gdGwgY1xuOztcblxubGV0IHNwbGl0X2dlbiBzdHIgfm9uID1cbiAgbGV0IGlzX2RlbGltID1cbiAgICBtYXRjaCBvbiB3aXRoXG4gICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGxhc3RfcG9zIHBvcyA9XG4gICAgaWYgcG9zID0gLTFcbiAgICB0aGVuIHN1YiBzdHIgfnBvczowIH5sZW46bGFzdF9wb3MgOjogYWNjXG4gICAgZWxzZSBpZiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICB0aGVuIChcbiAgICAgIGxldCBwb3MxID0gcG9zICsgMSBpblxuICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6cG9zMSB+bGVuOihsYXN0X3BvcyAtIHBvczEpIGluXG4gICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgcG9zIChwb3MgLSAxKSlcbiAgICBlbHNlIGxvb3AgYWNjIGxhc3RfcG9zIChwb3MgLSAxKVxuICBpblxuICBsb29wIFtdIGxlbiAobGVuIC0gMSlcbjs7XG5cbmxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxubGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxubGV0IHNwbGl0X2xpbmVzID1cbiAgbGV0IGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wgPVxuICAgIHBvcyA6PSAhcG9zIC0gaWYgIXBvcyA+IDAgJiYgQ2hhci5lcXVhbCB0LlshcG9zIC0gMV0gJ1xccicgdGhlbiAyIGVsc2UgMTtcbiAgICBlb2wgOj0gIXBvcyArIDFcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICAoKiBJbnZhcmlhbnQ6IFstMSA8PSBwb3MgPCBlb2xdLiAqKVxuICAgICAgbGV0IHBvcyA9IHJlZiAobiAtIDEpIGluXG4gICAgICBsZXQgZW9sID0gcmVmIG4gaW5cbiAgICAgIGxldCBhYyA9IHJlZiBbXSBpblxuICAgICAgKCogV2UgdHJlYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIHNwZWNpYWxseSwgYmVjYXVzZSBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhXG4gICAgICAgICBuZXdsaW5lLCB3ZSBkb24ndCB3YW50IGFuIGV4dHJhIGVtcHR5IHN0cmluZyBhdCB0aGUgZW5kIG9mIHRoZSBvdXRwdXQuICopXG4gICAgICBpZiBDaGFyLmVxdWFsIHQuWyFwb3NdICdcXG4nIHRoZW4gYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbDtcbiAgICAgIHdoaWxlICFwb3MgPj0gMCBkb1xuICAgICAgICBpZiBDaGFyLiggPD4gKSB0LlshcG9zXSAnXFxuJ1xuICAgICAgICB0aGVuIGRlY3IgcG9zXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIEJlY2F1c2UgW3BvcyA8IGVvbF0sIHdlIGtub3cgdGhhdCBbc3RhcnQgPD0gZW9sXS4gKilcbiAgICAgICAgICBsZXQgc3RhcnQgPSAhcG9zICsgMSBpblxuICAgICAgICAgIGFjIDo9IHN1YiB0IH5wb3M6c3RhcnQgfmxlbjooIWVvbCAtIHN0YXJ0KSA6OiAhYWM7XG4gICAgICAgICAgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbClcbiAgICAgIGRvbmU7XG4gICAgICBzdWIgdCB+cG9zOjAgfmxlbjohZW9sIDo6ICFhYylcbjs7XG5cbmxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxubGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5cbmxldCBpc19zdWJzdHJpbmdfYXQgcyB+cG9zIH5zdWJzdHJpbmcgPVxuICBpc19zdWJzdHJpbmdfYXRfZ2VuIHMgfnBvcyB+c3Vic3RyaW5nIH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbjs7XG5cbmxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICBlbHNlIChcbiAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICB8IF8gLT4gb25fZXJyb3IpXG47O1xuXG5sZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3BfcHJlZml4XCIgdCBuIH5wb3M6biB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3Bfc3VmZml4XCIgdCBuIH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxubGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbmxldCBsZmluZGkgPyhwb3MgPSAwKSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPSBuIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICBsb29wIHBvc1xuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IGYgYykgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPiBTb21lIHQuW2ldXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmIHQuW2ldIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxubGV0IHJmaW5kaSA/cG9zIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgLSAxKSBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gICAgfCBOb25lIC0+IGxlbmd0aCB0IC0gMVxuICBpblxuICBsb29wIHBvc1xuOztcblxubGV0IGxhc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IHJmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSlcblxubGV0IHJzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbjs7XG5cbmxldCBmaXJzdF9ub25fZHJvcCB+ZHJvcCB0ID0gbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKVxuXG5sZXQgbHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgMCAtPiB0XG4gIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuOztcblxuKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxubGV0IHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiBpIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IG1hcCB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAobGVuZ3RoIHMpIH5mOihmdW4gaSAtPiBzLltpXSlcblxubGV0IGV4aXN0cyA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPCBsZW4gJiYgKGYgcy5baV0gfHwgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9yX2FsbCA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPSBsZW4gfHwgKGYgcy5baV0gJiYgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgaSBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHRcbmxldCBtYXhfZWx0IHQgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0XG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZpbmRfbWFwaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZF9tYXBpIH5pdGVyaSB0IH5mXG5sZXQgZmluZGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRpIH5pdGVyaSB0IH5mXG5sZXQgY291bnRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5jb3VudGkgfmZvbGRpIHQgfmZcbmxldCBmb3JfYWxsaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZm9yX2FsbGkgfml0ZXJpIHQgfmZcbmxldCBleGlzdHNpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5leGlzdHNpIH5pdGVyaSB0IH5mXG5cbmxldCBtZW0gPVxuICBsZXQgcmVjIGxvb3AgdCBjIH5wb3M6aSB+bGVuID1cbiAgICBpIDwgbGVuICYmIChDaGFyLmVxdWFsIGMgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgYyB+cG9zOihpICsgMSkgfmxlbilcbiAgaW5cbiAgZnVuIHQgYyAtPiBsb29wIHQgYyB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgdHIgfnRhcmdldCB+cmVwbGFjZW1lbnQgcyA9XG4gIGlmIENoYXIuZXF1YWwgdGFyZ2V0IHJlcGxhY2VtZW50XG4gIHRoZW4gc1xuICBlbHNlIGlmIG1lbSBzIHRhcmdldFxuICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiBpZiBDaGFyLmVxdWFsIGMgdGFyZ2V0IHRoZW4gcmVwbGFjZW1lbnQgZWxzZSBjKVxuICBlbHNlIHNcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIGlzX2VtcHR5IHRhcmdldFxuICB0aGVuIHN0YWdlIEZuLmlkXG4gIGVsc2UgaWYgaXNfZW1wdHkgcmVwbGFjZW1lbnRcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpIHJlcGxhY2VtZW50IGlzIGVtcHR5IHN0cmluZ1wiXG4gIGVsc2UgKFxuICAgIG1hdGNoIEJ5dGVzX3RyLnRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGFnZSBGbi5pZFxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBpZiBleGlzdHMgcyB+ZjooZnVuIGMgLT4gQ2hhci4oIDw+ICkgYyAodW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGMpKSlcbiAgICAgICAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gdW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGMpKVxuICAgICAgICBlbHNlIHMpKVxuOztcblxuKCogZmFzdCB2ZXJzaW9uLCBpZiB3ZSBldmVyIG5lZWQgaXQ6XG4gICB7W1xuICAgICBsZXQgY29uY2F0X2FycmF5IH5zZXAgYXIgPVxuICAgICAgIGxldCBhcl9sZW4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICAgICBpZiBhcl9sZW4gPSAwIHRoZW4gXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIGxldCBzZXBfbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgbGV0IHJlc19sZW5fcmVmID0gcmVmIChzZXBfbGVuICogKGFyX2xlbiAtIDEpKSBpblxuICAgICAgICAgZm9yIGkgPSAwIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgcmVzX2xlbl9yZWYgOj0gIXJlc19sZW5fcmVmICsgbGVuZ3RoIGFyLihpKVxuICAgICAgICAgZG9uZTtcbiAgICAgICAgIGxldCByZXMgPSBjcmVhdGUgIXJlc19sZW5fcmVmIGluXG4gICAgICAgICBsZXQgc3RyXzAgPSBhci4oMCkgaW5cbiAgICAgICAgIGxldCBsZW5fMCA9IGxlbmd0aCBzdHJfMCBpblxuICAgICAgICAgYmxpdCB+c3JjOnN0cl8wIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MCB+bGVuOmxlbl8wO1xuICAgICAgICAgbGV0IHBvc19yZWYgPSByZWYgbGVuXzAgaW5cbiAgICAgICAgIGZvciBpID0gMSB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICAgICAgICAgICBibGl0IH5zcmM6c2VwIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6cG9zIH5sZW46c2VwX2xlbjtcbiAgICAgICAgICAgbGV0IG5ld19wb3MgPSBwb3MgKyBzZXBfbGVuIGluXG4gICAgICAgICAgIGxldCBzdHJfaSA9IGFyLihpKSBpblxuICAgICAgICAgICBsZXQgbGVuX2kgPSBsZW5ndGggc3RyX2kgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnN0cl9pIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6bmV3X3BvcyB+bGVuOmxlbl9pO1xuICAgICAgICAgICBwb3NfcmVmIDo9IG5ld19wb3MgKyBsZW5faVxuICAgICAgICAgZG9uZTtcbiAgICAgICAgIHJlc1xuICAgXX0gKilcblxubGV0IGNvbmNhdF9hcnJheSA/c2VwIGFyID0gY29uY2F0ID9zZXAgKEFycmF5LnRvX2xpc3QgYXIpXG5sZXQgY29uY2F0X21hcCA/c2VwIHMgfmYgPSBjb25jYXRfYXJyYXkgP3NlcCAoQXJyYXkubWFwICh0b19hcnJheSBzKSB+ZilcblxuKCogW2ZpbHRlciB0IGZdIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLlxuXG4gICBMZXQgW24gPSBsZW5ndGggdF0uXG5cbiAgIDEuIEZpbmQgdGhlIGxvd2VzdCBbaV0gc3VjaCB0aGF0IFtub3QgKGYgdC5baV0pXS5cblxuICAgMi4gSWYgdGhlcmUgaXMgbm8gc3VjaCBbaV0sIHRoZW4gcmV0dXJuIFt0XS5cblxuICAgMy4gSWYgdGhlcmUgaXMgc3VjaCBhbiBbaV0sIGFsbG9jYXRlIGEgc3RyaW5nLCBbb3V0XSwgdG8gaG9sZCB0aGUgcmVzdWx0LiAgW291dF0gaGFzXG4gICBsZW5ndGggW24gLSAxXSwgd2hpY2ggaXMgdGhlIG1heGltdW0gcG9zc2libGUgb3V0cHV0IHNpemUgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBhdCBsZWFzdFxuICAgb25lIGNoYXJhY3RlciBub3Qgc2F0aXNmeWluZyBbZl0uXG5cbiAgIDQuIENvcHkgY2hhcmFjdGVycyBhdCBpbmRpY2VzIDAgLi4uIFtpIC0gMV0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDUuIFdhbGsgdGhyb3VnaCBjaGFyYWN0ZXJzIGF0IGluZGljZXMgW2krMV0gLi4uIFtuLTFdIG9mIFt0XSwgY29weWluZyB0aG9zZSB0aGF0XG4gICBzYXRpc2Z5IFtmXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNi4gSWYgd2UgY29tcGxldGVseSBmaWxsZWQgW291dF0sIHRoZW4gcmV0dXJuIGl0LiAgSWYgbm90LCByZXR1cm4gdGhlIHByZWZpeCBvZiBbb3V0XVxuICAgdGhhdCB3ZSBkaWQgZmlsbCBpbi5cblxuICAgVGhpcyBhbGdvcml0aG0gaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgc3RyaW5nIGlmIHRoZXJlJ3NcbiAgIG5vdGhpbmcgdG8gZmlsdGVyLCB3aGljaCBpcyBhIGNvbW1vbiBjYXNlLiAqKVxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgIWkgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgIWkgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIFNvbWUgKGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9pZl9leGlzdHMgcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3BfcHJlZml4X2V4biBzIH5wcmVmaXggPVxuICBtYXRjaCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3BfcHJlZml4X2V4biAlUyAlU1wiIHMgcHJlZml4ICgpXG47O1xuXG5sZXQgY2hvcF9zdWZmaXggcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIFNvbWUgKGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9pZl9leGlzdHMgcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3Bfc3VmZml4X2V4biBzIH5zdWZmaXggPVxuICBtYXRjaCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3Bfc3VmZml4X2V4biAlUyAlU1wiIHMgc3VmZml4ICgpXG47O1xuXG5tb2R1bGUgRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeCA9IHN0cnVjdFxuICAoKiBXaGVuIHRha2luZyBhIHN0cmluZyBwcmVmaXggb3Igc3VmZml4LCB3ZSBleHRyYWN0IGZyb20gdGhlIHNob3J0ZXN0IGlucHV0IGF2YWlsYWJsZVxuICAgICBpbiBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiBvbmUgb2Ygb3VyIGlucHV0cyB3aXRob3V0IGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nLiAqKVxuXG4gIGxldCBzaG9ydGVyIGEgYiA9IGlmIGxlbmd0aCBhIDw9IGxlbmd0aCBiIHRoZW4gYSBlbHNlIGJcblxuICBsZXQgc2hvcnRlc3QgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OmZpcnN0IH5mOnNob3J0ZXJcbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgZm9yIGNvbW1vbiBwcmVmaXgvc3VmZml4IGFic3RyYWN0IG92ZXIgW2dldF9wb3NdLCB3aGljaCBpc1xuICAgICBlaXRoZXIgW3Bvc19mcm9tX2xlZnRdIG9yIFtwb3NfZnJvbV9yaWdodF0uICopXG5cbiAgbGV0IHBvc19mcm9tX2xlZnQgKF8gOiB0KSAoaSA6IGludCkgPSBpXG4gIGxldCBwb3NfZnJvbV9yaWdodCB0IGkgPSBsZW5ndGggdCAtIGkgLSAxXG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyID1cbiAgICBpZiBsZW5fc29fZmFyID49IG1heF9sZW5cbiAgICB0aGVuIG1heF9sZW5cbiAgICBlbHNlIGlmIENoYXIuZXF1YWxcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYSAoZ2V0X3BvcyBhIGxlbl9zb19mYXIpKVxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBiIChnZXRfcG9zIGIgbGVuX3NvX2ZhcikpXG4gICAgdGhlbiBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOihsZW5fc29fZmFyICsgMSlcbiAgICBlbHNlIGxlbl9zb19mYXJcbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgPVxuICAgIGxldCBtYXhfbGVuID0gbWluIChsZW5ndGggYSkgKGxlbmd0aCBiKSBpblxuICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICA7O1xuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgbGlzdCB+Z2V0X3BvcyB+bWF4X2xlbiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBtYXhfbGVuXG4gICAgfCBzZWNvbmQgOjogcmVzdCAtPlxuICAgICAgbGV0IG1heF9sZW4gPVxuICAgICAgICAoKiBXZSBjYWxsIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoXSBzb1xuICAgICAgICAgICB0aGF0IFttYXhfbGVuXSBsaW1pdHMgb3VyIHRyYXZlcnNhbCBvZiBbZmlyc3RdIGFuZCBbc2Vjb25kXS4gKilcbiAgICAgICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGZpcnN0IHNlY29uZCB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gICAgICBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3Agc2Vjb25kIHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3MgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogUHJlY29tcHV0aW5nIFttYXhfbGVuXSBiYXNlZCBvbiBbc2hvcnRlc3QgbGlzdF0gc2F2ZXMgdXMgd29yayBpbiBsb25nZXIgc3RyaW5ncyxcbiAgICAgICAgIGF0IHRoZSBjb3N0IG9mIGFuIGV4dHJhIHBhc3Mgb3ZlciB0aGUgc3BpbmUgb2YgW2xpc3RdLlxuXG4gICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgc3RyaW5nczpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIGxldCBsb25nX2EgPSBMaXN0LmluaXQgMTAwMCB+ZjooRm4uY29uc3QgJ2EnKVxuICAgICAgICAgICAgWyBsb25nX2E7IGxvbmdfYTsgJ2FhJyBdXG4gICAgICAgICB2fVxuXG4gICAgICAgICB0aGUgYXBwcm9hY2ggYmVsb3cgd2lsbCBqdXN0IGNoZWNrIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhbGwgdGhlIHN0cmluZ3MuXG4gICAgICAqKVxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggKHNob3J0ZXN0IGxpc3QpIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIHRoYXQgcHJvZHVjZSBhIHN0cmluZyBhYnN0cmFjdCBvdmVyIFt0YWtlXSwgd2hpY2ggaXMgZWl0aGVyXG4gICAgIFtwcmVmaXhdIG9yIFtzdWZmaXhdLiAqKVxuXG4gIGxldCBjb21tb25fZ2VuZXJpYzIgYSBiIH5nZXRfcG9zIH50YWtlID1cbiAgICBsZXQgbGVuID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgaW5cbiAgICAoKiBVc2UgdGhlIHNob3J0ZXIgb2YgdGhlIHR3byBzdHJpbmdzLCBzbyB0aGF0IGlmIHRoZSBzaG9ydGVyIG9uZSBpcyB0aGUgc2hhcmVkXG4gICAgICAgcHJlZml4LCBbdGFrZV0gd29uJ3QgYWxsb2NhdGUgYW5vdGhlciBzdHJpbmcuICopXG4gICAgdGFrZSAoc2hvcnRlciBhIGIpIGxlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYyBsaXN0IH5nZXRfcG9zIH50YWtlID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIEFzIHdpdGggW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0sIHdlIGJhc2UgW21heF9sZW5dIG9uIFtzaG9ydGVzdCBsaXN0XS4gV2UgYWxzb1xuICAgICAgICAgdXNlIHRoaXMgcmVzdWx0IGZvciBbdGFrZV0sIGJlbG93LCB0byBwb3RlbnRpYWxseSBhdm9pZCBhbGxvY2F0aW5nIGEgc3RyaW5nLiAqKVxuICAgICAgbGV0IHMgPSBzaG9ydGVzdCBsaXN0IGluXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCBzIGluXG4gICAgICBpZiBtYXhfbGVuID0gMFxuICAgICAgdGhlbiBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgKCogV2UgY2FsbCBkaXJlY3RseSBpbnRvIFtjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW5cbiAgICAgICAgICAgICBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSB0byBhdm9pZCByZWNvbXB1dGluZyBbc2hvcnRlc3QgbGlzdF0uICopXG4gICAgICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICAgICAgICBpblxuICAgICAgICB0YWtlIHMgbGVuKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeFxuXG4gIGxldCBjb21tb25fcHJlZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbmVuZFxuXG4oKiBUaGVyZSB1c2VkIHRvIGJlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHRoYXQgd2FzIGZhc3RlciBmb3IgdmVyeSBzaG9ydCBzdHJpbmdzXG4gICAocGVha2luZyBhdCA0MCUgZmFzdGVyIGZvciA0LTYgY2hhciBsb25nIHN0cmluZ3MpLlxuICAgVGhpcyBuZXcgZnVuY3Rpb24gaXMgYXJvdW5kIDIwJSBmYXN0ZXIgdGhhbiB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uLCBidXQgc2xvd2VyXG4gICB0aGFuIHRoZSBwcmV2aW91cyBjdXN0b20gaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBuZXcgT0NhbWwgZnVuY3Rpb24gaXMgd2VsbFxuICAgYmVoYXZlZCwgYW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbGVzcyBsaWtlbHkgdG8gZGl2ZXJnZSBmcm9tIHRoZSBkZWZhdWx0IE9DYW1sXG4gICBpbXBsZW1lbnRhdGlvbiBkb2VzLCB3aGljaCBpcyBhIGRlc2lyYWJsZSBwcm9wZXJ0eS4gKFRoZSBvbmx5IHdheSB0byBhdm9pZCB0aGVcbiAgIGRpdmVyZ2VuY2UgaXMgdG8gZXhwb3NlIHRoZSBtYWNybyByZWRlZmluZWQgaW4gaGFzaF9zdHVicy5jIGluIHRoZSBoYXNoLmggaGVhZGVyIG9mXG4gICB0aGUgT0NhbWwgY29tcGlsZXIuKSAqKVxubW9kdWxlIEhhc2ggPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgaGFzaCA6IHN0cmluZyAtPiBpbnQgPSBcIkJhc2VfaGFzaF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZW5kXG5cbigqIFtpbmNsdWRlIEhhc2hdIHRvIG1ha2UgdGhlIFtleHRlcm5hbF0gdmVyc2lvbiBvdmVycmlkZSB0aGUgW2hhc2hdIGZyb21cbiAgIFtIYXNoYWJsZS5NYWtlX2JpbmFibGVdLCBzbyB0aGF0IHdlIGdldCBhIGxpdHRsZSBiaXQgb2YgYSBzcGVlZHVwIGJ5IGV4cG9zaW5nIGl0IGFzXG4gICBleHRlcm5hbCBpbiB0aGUgbWxpLiAqKVxubGV0IF8gPSBoYXNoXG5cbmluY2x1ZGUgSGFzaFxuXG4oKiBmb3IgaW50ZXJhY3RpdmUgdG9wLWxldmVscyAtLSBtb2R1bGVzIGRlcml2aW5nIGZyb20gU3RyaW5nIHNob3VsZCBoYXZlIFN0cmluZydzIHByZXR0eVxuICAgcHJpbnRlci4gKilcbmxldCBwcCBwcGYgc3RyaW5nID0gQ2FtbC5Gb3JtYXQuZnByaW50ZiBwcGYgXCIlU1wiIHN0cmluZ1xubGV0IG9mX2NoYXIgYyA9IG1ha2UgMSBjXG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHQgaSBjKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5tb2R1bGUgRXNjYXBpbmcgPSBzdHJ1Y3RcbiAgKCogSWYgdGhpcyBpcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdG8gdXBkYXRlIFtlc2NhcGVdLCB3aGljaCBhdHRlbXB0cyB0byBlbnN1cmUgYWxsIHRoZVxuICAgICBpbnZhcmlhbnRzIGNoZWNrZWQgaGVyZS4gICopXG4gIGxldCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGZ1bmMgPVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGlmIExpc3QuQXNzb2MubWVtIGVzY2FwZXdvcnRoeV9tYXAgfmVxdWFsOkNoYXIuZXF1YWwgZXNjYXBlX2NoYXJcbiAgICAgIHRoZW4gZXNjYXBld29ydGh5X21hcFxuICAgICAgZWxzZSAoZXNjYXBlX2NoYXIsIGVzY2FwZV9jaGFyKSA6OiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgaW5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2ICgtMSkgaW5cbiAgICBsZXQgdmFscyA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiBmYWxzZSBpblxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IE9rIGFyclxuICAgICAgfCAoY19mcm9tLCBjX3RvKSA6OiBsIC0+XG4gICAgICAgIGxldCBrLCB2ID1cbiAgICAgICAgICBtYXRjaCBmdW5jIHdpdGhcbiAgICAgICAgICB8IGBFc2NhcGUgLT4gQ2hhci50b19pbnQgY19mcm9tLCBjX3RvXG4gICAgICAgICAgfCBgVW5lc2NhcGUgLT4gQ2hhci50b19pbnQgY190bywgY19mcm9tXG4gICAgICAgIGluXG4gICAgICAgIGlmIGFyci4oaykgPD4gLTEgfHwgdmFscy4oQ2hhci50b19pbnQgdilcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICAgIFwiZXNjYXBld29ydGh5X21hcCBub3Qgb25lLXRvLW9uZVwiXG4gICAgICAgICAgICAgICBbIFwiY19mcm9tXCIsIHNleHBfb2ZfY2hhciBjX2Zyb21cbiAgICAgICAgICAgICAgIDsgXCJjX3RvXCIsIHNleHBfb2ZfY2hhciBjX3RvXG4gICAgICAgICAgICAgICA7ICggXCJlc2NhcGV3b3J0aHlfbWFwXCJcbiAgICAgICAgICAgICAgICAgLCBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2NoYXIgc2V4cF9vZl9jaGFyKSBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIF0pXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGFyci4oaykgPC0gQ2hhci50b19pbnQgdjtcbiAgICAgICAgICB2YWxzLihDaGFyLnRvX2ludCB2KSA8LSB0cnVlO1xuICAgICAgICAgIGxvb3AgbClcbiAgICBpblxuICAgIGxvb3AgZXNjYXBld29ydGh5X21hcFxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBgRXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIGNhbGN1bGF0ZSBhIGxpc3Qgb2YgKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSBmaXJzdCwgdGhlIG9yZGVyXG4gICAgICAgICAgICAgIGlzIGZyb20gdGFpbCB0byBoZWFkICopXG4gICAgICAgICAgIGxldCB0b19lc2NhcGVfbGVuID0gcmVmIDAgaW5cbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZSA9XG4gICAgICAgICAgICAgZm9sZGkgc3JjIH5pbml0OltdIH5mOihmdW4gaSBhY2MgYyAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBjKSB3aXRoXG4gICAgICAgICAgICAgICB8IC0xIC0+IGFjY1xuICAgICAgICAgICAgICAgfCBuIC0+XG4gICAgICAgICAgICAgICAgICgqIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgKilcbiAgICAgICAgICAgICAgICAgaW5jciB0b19lc2NhcGVfbGVuO1xuICAgICAgICAgICAgICAgICAoaSwgQ2hhci51bnNhZmVfb2ZfaW50IG4pIDo6IGFjYylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fZXNjYXBlIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBzcmNcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgKCogW3RvX2VzY2FwZV0gZGl2aWRlIFtzcmNdIHRvIFtMaXN0Lmxlbmd0aCB0b19lc2NhcGUgKyAxXSBwaWVjZXMgc2VwYXJhdGVkIGJ5XG4gICAgICAgICAgICAgICAgdGhlIGNoYXJzIHRvIGVzY2FwZS5cblxuICAgICAgICAgICAgICAgIExldHMgdGFrZVxuICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICBlc2NhcGVfZ2VuX2V4blxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBld29ydGh5X21hcDpbKCdhJywgJ0EnKTsgKCdiJywgJ0InKTsgKCdjJywgJ0MnKV1cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZV9jaGFyOidfJ1xuICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUsIGFuZCBhc3N1bWUgdGhlIHN0cmluZyB0byBlc2NhcGUgaXNcblxuICAgICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICAgIHRoZW4gW3RvX2VzY2FwZV0gaXMgWygxMSwgJ0MnKTsgKDcsICdCJyk7ICgzLCAnQScpXS5cblxuICAgICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgW2RzdF0gb2YgbGVuZ3RoIFtsZW5ndGggc3JjICsgM10gdG8gc3RvcmUgdGhlXG4gICAgICAgICAgICAgICAgcmVzdWx0LCBjb3B5IHBpZWNlIFwiMzMzXCIgdG8gW2RzdF0gZGlyZWN0bHksIHRoZW4gY29weSAnXycgYW5kICdDJyB0byBbZHN0XTtcbiAgICAgICAgICAgICAgICB0aGVuIG1vdmUgb24gdG8gbmV4dDsgYWZ0ZXIgMyBpdGVyYXRpb25zLCBjb3B5IHBpZWNlIFwiMDAwXCIgYW5kIHdlIGFyZSBkb25lLlxuXG4gICAgICAgICAgICAgICAgRmluYWxseSB0aGUgcmVzdWx0IHdpbGwgYmVcblxuICAgICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCIgKilcbiAgICAgICAgICAgICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICAgICAgICAgICBsZXQgZHN0X2xlbiA9IHNyY19sZW4gKyAhdG9fZXNjYXBlX2xlbiBpblxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgZHN0X2xlbiBpblxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBsYXN0X2lkeCBsYXN0X2RzdF9wb3MgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMDAwXCIgYXQgbGFzdCAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46bGFzdF9pZHhcbiAgICAgICAgICAgICAgIHwgKGlkeCwgZXNjYXBlZF9jaGFyKSA6OiB0b19lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCpbaWR4XSA9IHRoZSBjaGFyIHRvIGVzY2FwZSopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgZmlyc3QgaXRlcmF0aW9uIGZvciBleGFtcGxlICopXG4gICAgICAgICAgICAgICAgICgqIGNhbGN1bGF0ZSBsZW5ndGggb2YgXCIzMzNcIiwgbWludXMgMSBiZWNhdXNlIHdlIGRvbid0IGNvcHkgJ2MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDEgaW5cbiAgICAgICAgICAgICAgICAgKCogc2V0IHRoZSBkc3RfcG9zIHRvIGNvcHkgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiLCBzZXQgW3NyY19wb3NdIHRvIFtpZHggKyAxXSB0byBza2lwICdjJyAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAxKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDIgdG8gY29weSAnXycgYW5kICdDJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAyIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgZHN0X3BvcyBlc2NhcGVfY2hhcjtcbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCAoZHN0X3BvcyArIDEpIGVzY2FwZWRfY2hhcjtcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b19lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIHNldCBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSB0byBsZW5ndGggb2YgW2RzdF0gYW5kIFtzcmNdIGZpcnN0ICopXG4gICAgICAgICAgICAgbG9vcCBzcmNfbGVuIGRzdF9sZW4gdG9fZXNjYXBlO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAoZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIpIHw+IHN0YWdlXG4gIDs7XG5cbiAgbGV0IGVzY2FwZSB+ZXNjYXBld29ydGh5IH5lc2NhcGVfY2hhciA9XG4gICAgKCogRm9yIFtlc2NhcGVfZ2VuX2V4bl0sIHdlIGRvbid0IGtub3cgaG93IHRvIGZpeCBpbnZhbGlkIGVzY2FwZXdvcnRoeV9tYXAgc28gd2UgaGF2ZVxuICAgICAgIHRvIHJhaXNlIGV4Y2VwdGlvbjsgYnV0IGluIHRoaXMgY2FzZSwgd2Uga25vdyBob3cgdG8gZml4IGR1cGxpY2F0ZWQgZWxlbWVudHMgaW5cbiAgICAgICBlc2NhcGV3b3J0aHkgbGlzdCwgc28gd2UganVzdCBmaXggaXQgaW5zdGVhZCBvZiByYWlzaW5nIGV4Y2VwdGlvbiB0byBtYWtlIHRoaXNcbiAgICAgICBmdW5jdGlvbiBlYXNpZXIgdG8gdXNlLiAgKilcbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBlc2NhcGV3b3J0aHlcbiAgICAgIHw+IExpc3QuZGVkdXBfYW5kX3NvcnQgfmNvbXBhcmU6Q2hhci5jb21wYXJlXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGMgLT4gYywgYylcbiAgICBpblxuICAgIGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhclxuICA7O1xuXG4gICgqIEluIGFuIGVzY2FwZWQgc3RyaW5nLCBhbnkgY2hhciBpcyBlaXRoZXIgYEVzY2FwaW5nLCBgRXNjYXBlZCBvciBgTGl0ZXJhbC4gRm9yXG4gICAgIGV4YW1wbGUsIHRoZSBlc2NhcGUgc3RhdHVzZXMgb2YgY2hhcnMgaW4gc3RyaW5nIFwiYV9hX19cIiB3aXRoIGVzY2FwZV9jaGFyID0gJ18nIGFyZVxuXG4gICAgIGEgOiBgTGl0ZXJhbFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIGEgOiBgRXNjYXBlZFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIF8gOiBgRXNjYXBlZFxuXG4gICAgIFt1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgcHJldmlvdXNfc3RhdHVzXSBnZXRzIGVzY2FwZSBzdGF0dXMgb2ZcbiAgICAgc3RyLltpXSBiYXNpbmcgb24gZXNjYXBlIHN0YXR1cyBvZiBzdHIuW2kgLSAxXSAqKVxuICBsZXQgdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpID0gZnVuY3Rpb25cbiAgICB8IGBFc2NhcGluZyAtPiBgRXNjYXBlZFxuICAgIHwgYExpdGVyYWwgfCBgRXNjYXBlZCAtPlxuICAgICAgaWYgQ2hhci5lcXVhbCBzdHIuW2ldIGVzY2FwZV9jaGFyIHRoZW4gYEVzY2FwaW5nIGVsc2UgYExpdGVyYWxcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBgVW5lc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogQ29udGludWUgdGhlIGV4YW1wbGUgaW4gW2VzY2FwZV9nZW5fZXhuXSwgbm93IHdlIHVuZXNjYXBlXG5cbiAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIlxuXG4gICAgICAgICAgICAgIGJhY2sgdG9cblxuICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgVGhlbiBbdG9fdW5lc2NhcGVdIGlzIFsxNDsgOTsgNF0sIHdoaWNoIGlzIGluZGV4ZXMgb2YgJ18ncy5cblxuICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIHN0cmluZyBbZHN0XSB0byBzdG9yZSB0aGUgcmVzdWx0LCBjb3B5IFwiMzMzXCIgdG8gaXQsIHRoZW4gY29weVxuICAgICAgICAgICAgICAnYycsIHRoZW4gbW92ZSBvbiB0byBuZXh0IGl0ZXJhdGlvbi4gQWZ0ZXIgMyBpdGVyYXRpb25zIGNvcHkgXCIwMDBcIiBhbmQgd2UgYXJlXG4gICAgICAgICAgICAgIGRvbmUuICAqKVxuICAgICAgICAgICAoKiBpbmRleGVzIG9mIGVzY2FwZSBjaGFycyAqKVxuICAgICAgICAgICBsZXQgdG9fdW5lc2NhcGUgPVxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBpIHN0YXR1cyBhY2MgPVxuICAgICAgICAgICAgICAgaWYgaSA+PSBsZW5ndGggc3JjXG4gICAgICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzcmMgfmVzY2FwZV9jaGFyIGkgc3RhdHVzIGluXG4gICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYEVzY2FwaW5nIC0+IGkgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgYEVzY2FwZWQgfCBgTGl0ZXJhbCAtPiBhY2MpKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbG9vcCAwIGBMaXRlcmFsIFtdXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX3VuZXNjYXBlIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBzcmNcbiAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUnIC0+XG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuZ3RoIHNyYyAtIExpc3QubGVuZ3RoIHRvX3VuZXNjYXBlKSBpblxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBsYXN0X2lkeCBsYXN0X2RzdF9wb3MgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMDAwXCIgYXQgbGFzdCAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46bGFzdF9pZHhcbiAgICAgICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqIFtpZHhdID0gaW5kZXggb2YgZXNjYXBpbmcgY2hhciAqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIDFzdCBpdGVyYXRpb24gYXMgZXhhbXBsZSwgY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgXCIzMzNcIiwgbWludXMgMiB0b1xuICAgICAgICAgICAgICAgICAgICBza2lwICdfQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMiBpblxuICAgICAgICAgICAgICAgICAoKiBwb2ludCBbZHN0X3Bvc10gdG8gdGhlIHBvc2l0aW9uIHRvIGNvcHkgXCIzMzNcIiB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMikgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAxIHRvIGNvcHkgJ2MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDEgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0XG4gICAgICAgICAgICAgICAgICAgZHN0XG4gICAgICAgICAgICAgICAgICAgZHN0X3Bvc1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IHNyYy5baWR4ICsgMV0pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAtMSAtPiBzcmMuW2lkeCArIDFdXG4gICAgICAgICAgICAgICAgICAgIHwgbiAtPiBDaGFyLnVuc2FmZV9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgICgqIHVwZGF0ZSBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSAqKVxuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiBpZHggPCBsZW5ndGggc3JjIC0gMVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICgqIHNldCBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSB0byBsZW5ndGggb2YgW2RzdF0gYW5kIFtzcmNdICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAoKiBmb3IgZXNjYXBlZCBzdHJpbmcgZW5kaW5nIHdpdGggYW4gZXNjYXBpbmcgY2hhciBsaWtlIFwiMDAwX1wiLCBqdXN0IGlnbm9yZVxuICAgICAgICAgICAgICAgICAgdGhlIGxhc3QgZXNjYXBpbmcgY2hhciAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYyAtIDEpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZSc7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIpIHw+IHN0YWdlXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlIH5lc2NhcGVfY2hhciA9IHVuZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXA6W10gfmVzY2FwZV9jaGFyXG5cbiAgbGV0IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCByZWMgbG9vcCBwIGNudCA9XG4gICAgICBpZiBwIDwgMCB8fCBDaGFyLiggPD4gKSBzdHIuW3BdIGVzY2FwZV9jaGFyIHRoZW4gY250IGVsc2UgbG9vcCAocCAtIDEpIChjbnQgKyAxKVxuICAgIGluXG4gICAgbG9vcCAocG9zIC0gMSkgMFxuICA7O1xuXG4gICgqIEluIGFuIGVzY2FwZWQgc3RyaW5nLCBhbnkgY2hhciBpcyBlaXRoZXIgYEVzY2FwaW5nLCBgRXNjYXBlZCBvciBgTGl0ZXJhbC4gRm9yXG4gICAgIGV4YW1wbGUsIHRoZSBlc2NhcGUgc3RhdHVzZXMgb2YgY2hhcnMgaW4gc3RyaW5nIFwiYV9hX19cIiB3aXRoIGVzY2FwZV9jaGFyID0gJ18nIGFyZVxuXG4gICAgIGEgOiBgTGl0ZXJhbFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIGEgOiBgRXNjYXBlZFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIF8gOiBgRXNjYXBlZFxuXG4gICAgIFt1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgcHJldmlvdXNfc3RhdHVzXSBnZXRzIGVzY2FwZSBzdGF0dXMgb2ZcbiAgICAgc3RyLltpXSBiYXNpbmcgb24gZXNjYXBlIHN0YXR1cyBvZiBzdHIuW2kgLSAxXSAqKVxuICBsZXQgdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpID0gZnVuY3Rpb25cbiAgICB8IGBFc2NhcGluZyAtPiBgRXNjYXBlZFxuICAgIHwgYExpdGVyYWwgfCBgRXNjYXBlZCAtPlxuICAgICAgaWYgQ2hhci5lcXVhbCBzdHIuW2ldIGVzY2FwZV9jaGFyIHRoZW4gYEVzY2FwaW5nIGVsc2UgYExpdGVyYWxcbiAgOztcblxuICBsZXQgZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IG9kZCA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgbW9kIDIgPSAxIGluXG4gICAgbWF0Y2ggb2RkLCBDaGFyLmVxdWFsIHN0ci5bcG9zXSBlc2NhcGVfY2hhciB3aXRoXG4gICAgfCB0cnVlLCAodHJ1ZSB8IGZhbHNlKSAtPiBgRXNjYXBlZFxuICAgIHwgZmFsc2UsIHRydWUgLT4gYEVzY2FwaW5nXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gYExpdGVyYWxcbiAgOztcblxuICBsZXQgY2hlY2tfYm91bmQgc3RyIHBvcyBmdW5jdGlvbl9uYW1lID1cbiAgICBpZiBwb3MgPj0gbGVuZ3RoIHN0ciB8fCBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiJXM6IG91dCBvZiBib3VuZHNcIiBmdW5jdGlvbl9uYW1lICgpXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBpbmcgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2VzY2FwaW5nXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBpbmcgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwZWQgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwZWQgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2VzY2FwZWRcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGVkIC0+IHRydWVcbiAgICB8IGBFc2NhcGluZyB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfbGl0ZXJhbCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfbGl0ZXJhbFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaW5kZXhfZnJvbVwiO1xuICAgIGxldCByZWMgbG9vcCBpIHN0YXR1cyA9XG4gICAgICBpZiBpID49IHBvc1xuICAgICAgJiYgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgICAgICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZSlcbiAgICAgICYmIENoYXIuZXF1YWwgc3RyLltpXSBjaGFyXG4gICAgICB0aGVuIFNvbWUgaVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpID0gaSArIDEgaW5cbiAgICAgICAgaWYgaSA+PSBsZW5ndGggc3RyXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIGxvb3AgaSAodXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHN0YXR1cykpXG4gICAgaW5cbiAgICBsb29wIHBvcyAoZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcylcbiAgOztcblxuICBsZXQgaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IGluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcbiAgbGV0IGluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuXG4gIGxldCByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwicmluZGV4X2Zyb21cIjtcbiAgICAoKiBpZiB0aGUgdGFyZ2V0IGNoYXIgaXMgdGhlIHNhbWUgYXMgW2VzY2FwZV9jaGFyXSwgd2UgaGF2ZSBubyB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgZXNjYXBlX2NoYXIgaXMgbGl0ZXJhbCwgc28ganVzdCByZXR1cm4gTm9uZSAqKVxuICAgIGlmIENoYXIuZXF1YWwgY2hhciBlc2NhcGVfY2hhclxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgICAgIGlmIHBvcyA8IDBcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlc2NhcGVfY2hhcnMgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGluXG4gICAgICAgICAgaWYgZXNjYXBlX2NoYXJzIG1vZCAyID0gMCAmJiBDaGFyLmVxdWFsIHN0ci5bcG9zXSBjaGFyXG4gICAgICAgICAgdGhlbiBTb21lIHBvc1xuICAgICAgICAgIGVsc2UgbG9vcCAocG9zIC0gZXNjYXBlX2NoYXJzIC0gMSkpXG4gICAgICBpblxuICAgICAgbG9vcCBwb3MpXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcInJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCByaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICBpZiBpc19lbXB0eSBzdHIgdGhlbiBOb25lIGVsc2UgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICBsZXQgcmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIHJpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gICgqIFtzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b25dIHdvcmtzIHNpbWlsYXJseSB0byBbU3RyaW5nLnNwbGl0X2dlbl0sIHdpdGggYW5cbiAgICAgYWRkaXRpb25hbCByZXF1aXJlbWVudDogb25seSBzcGxpdCBvbiBsaXRlcmFsIGNoYXJzLCBub3QgZXNjYXBpbmcgb3IgZXNjYXBlZCAqKVxuICBsZXQgc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uID1cbiAgICBsZXQgaXNfZGVsaW0gPVxuICAgICAgbWF0Y2ggb24gd2l0aFxuICAgICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gICAgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIHBvcyA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gTGlzdC5yZXYgKHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihsZW4gLSBsYXN0X3BvcykgOjogYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzdGF0dXMgPSB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBzdGF0dXMgaW5cbiAgICAgICAgaWYgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgICAgICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZSlcbiAgICAgICAgJiYgaXNfZGVsaW0gc3RyLltwb3NdXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBzdWJfc3RyID0gc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KHBvcyAtIGxhc3RfcG9zKSBpblxuICAgICAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBzdGF0dXMgKHBvcyArIDEpIChwb3MgKyAxKSlcbiAgICAgICAgZWxzZSBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgKHBvcyArIDEpKVxuICAgIGluXG4gICAgbG9vcCBbXSBgTGl0ZXJhbCAwIDBcbiAgOztcblxuICBsZXQgc3BsaXQgc3RyIH5vbiA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhciBvbilcbiAgbGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxuICBsZXQgc3BsaXRfYXQgc3RyIHBvcyA9XG4gICAgc3ViIHN0ciB+cG9zOjAgfmxlbjpwb3MsIHN1YiBzdHIgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIHN0ciAtIHBvcyAtIDEpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKGluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgb24pIH5mOihmdW4geCAtPiBzcGxpdF9hdCBzdHIgeClcbiAgOztcblxuICBsZXQgcnNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAocmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgb24pIH5mOihmdW4geCAtPiBzcGxpdF9hdCBzdHIgeClcbiAgOztcblxuICBsZXQgbHNwbGl0Ml9leG4gc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPSBzcGxpdF9hdCBzdHIgKGluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuICBsZXQgcnNwbGl0Ml9leG4gc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPSBzcGxpdF9hdCBzdHIgKHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcblxuICAoKiBbbGFzdF9ub25fZHJvcF9saXRlcmFsXSBhbmQgW2ZpcnN0X25vbl9kcm9wX2xpdGVyYWxdIGFyZSBlaXRoZXIgYm90aCBbTm9uZV0gb3IgYm90aFxuICAgICBbU29tZV0uIElmIFtTb21lXSwgdGhlbiB0aGUgZm9ybWVyIGlzID49IHRoZSBsYXR0ZXIuICopXG4gIGxldCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIHJmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSlcbiAgOztcblxuICBsZXQgZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgbGZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKVxuICA7O1xuXG4gIGxldCByc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG4gIDs7XG5cbiAgbGV0IGxzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIDAgLT4gdFxuICAgIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuICA7O1xuXG4gICgqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG4gIGxldCBzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICAgICgqIHBlcmZvcm1hbmNlIGhhY2s6IGF2b2lkIGNvcHlpbmcgW3RdIGluIGNvbW1vbiBjYXNlcyAqKVxuICAgIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbiAgOztcbmVuZFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbigqIE92ZXJyaWRlIFtTZWFyY2hfcGF0dGVybl0gd2l0aCBkZWZhdWx0IGNhc2Utc2Vuc2l0aXZpdHkgYXJndW1lbnQgYXQgdGhlIGVuZCBvZiB0aGVcbiAgIGZpbGUsIHNvIHRoYXQgY2FsbCBzaXRlcyBhYm92ZSBhcmUgZm9yY2VkIHRvIHN1cHBseSBjYXNlLXNlbnNpdGl2aXR5IGV4cGxpY2l0bHkuICopXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZWFyY2hfcGF0dGVybjBcblxuICBsZXQgY3JlYXRlID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKSBwYXR0ZXJuID0gY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgPSAoYnl0ZXNfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYnl0ZXMgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYnl0ZXNfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEJ5dGVzMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5CeXRlc1wiXG4gIGxldCBwcCBmbXQgdCA9IENhbWwuRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiAodG9fc3RyaW5nIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBUb19ieXRlcyA9IEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChUKSAoVG9fYnl0ZXMpXG5cbm1vZHVsZSBGcm9tX3N0cmluZyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIG4gMFxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJCeXRlcy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IHNldCB0IGkgYyk7XG4gIHRcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IChpIC0gMSkgKHVuc2FmZV9nZXQgdCBpIDo6IGFjYylcbiAgaW5cbiAgbG9vcCB0IChsZW5ndGggdCAtIDEpIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5sZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZlxubGV0IG1hcGkgdCB+ZiA9IG1hcGkgdCB+ZlxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgcG9zIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgcyBpKSB0YXJnZXQgdGhlbiB1bnNhZmVfc2V0IHMgaSByZXBsYWNlbWVudFxuICBkb25lXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgMFxuICB0aGVuIHN0YWdlIGlnbm9yZVxuICBlbHNlIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpOiByZXBsYWNlbWVudCBpcyB0aGUgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIGlnbm9yZVxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBzIGkgKFN0cmluZy51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgKHVuc2FmZV9nZXQgcyBpKSkpXG4gICAgICAgIGRvbmUpKVxuOztcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGNvbnRhaW5zID9wb3MgP2xlbiB0IGNoYXIgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxhc3QgPSBwb3MgKyBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSBsYXN0XG4gICAgJiYgKENoYXIuZXF1YWwgKGdldCB0IGkpIGNoYXIgfHwgbG9vcCAoaSArIDEpKVxuICBpblxuICBsb29wIHBvc1xuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiIyAxIFwic3JjL2hleF9sZXhlci5tbGxcIlxuIFxudHlwZSByZXN1bHQgPVxufCBOZWcgb2Ygc3RyaW5nXG58IFBvcyBvZiBzdHJpbmdcblxuIyA4IFwic3JjL2hleF9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDA4MlxcMDAwXFwxMDVcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcGFyc2VfaGV4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTM1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTQgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggTmVnIGJvZHkgKVxuIyAxMzkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxNDUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBQb3MgYm9keSApXG4jIDE0OSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgY29udmVydF9mYWlsdXJlIHggYSBiIHRvX3N0cmluZyA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcImNvbnZlcnNpb24gZnJvbSAlcyB0byAlcyBmYWlsZWQ6ICVzIGlzIG91dCBvZiByYW5nZVwiXG4gICAgYVxuICAgIGJcbiAgICAodG9fc3RyaW5nIHgpXG4gICAgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgbnVtX2JpdHNfaW50ID0gU3lzLmludF9zaXplX2luX2JpdHNcbmxldCBudW1fYml0c19pbnQzMiA9IDMyXG5sZXQgbnVtX2JpdHNfaW50NjQgPSA2NFxubGV0IG51bV9iaXRzX25hdGl2ZWludCA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA9IDYzIHx8IG51bV9iaXRzX2ludCA9IDMxIHx8IG51bV9iaXRzX2ludCA9IDMyKVxubGV0IG1pbl9pbnQzMiA9IENhbWwuSW50MzIubWluX2ludFxubGV0IG1heF9pbnQzMiA9IENhbWwuSW50MzIubWF4X2ludFxubGV0IG1pbl9pbnQ2NCA9IENhbWwuSW50NjQubWluX2ludFxubGV0IG1heF9pbnQ2NCA9IENhbWwuSW50NjQubWF4X2ludFxubGV0IG1pbl9uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5taW5faW50XG5sZXQgbWF4X25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm1heF9pbnRcbmxldCBpbnRfdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfaW50XG5sZXQgaW50MzJfdG9fc3RyaW5nID0gQ2FtbC5JbnQzMi50b19zdHJpbmdcbmxldCBpbnQ2NF90b19zdHJpbmcgPSBDYW1sLkludDY0LnRvX3N0cmluZ1xubGV0IG5hdGl2ZWludF90b19zdHJpbmcgPSBDYW1sLk5hdGl2ZWludC50b19zdHJpbmdcblxuKCogaW50IDwtPiBpbnQzMiAqKVxuXG5sZXQgaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50XCIgXCJpbnQzMlwiIGludF90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQzMlwiIFwiaW50XCIgaW50MzJfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X3RydW5jID0gQ2FtbC5JbnQzMi50b19pbnRcbmxldCBpbnRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLkludDMyLm9mX2ludFxuXG5sZXQgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19pbnRfdHJ1bmMgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX2ludF90cnVuYyBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50MzIgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDMyIHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50X3RvX2ludDMyIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDMyX3RvX2ludCB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDMyX3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gaW50X3RvX2ludDMyX3RydW5jIHggZWxzZSBpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG5sZXQgaW50MzJfdG9faW50X2V4biB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDMyX3RvX2ludF90cnVuYyB4IGVsc2UgaW50MzJfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnRfdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2ludFxubGV0IGludDY0X3RvX2ludF90cnVuYyA9IENhbWwuSW50NjQudG9faW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGxldCBtaW4gPSBpbnRfdG9faW50NjQgSW50Lm1pbl92YWx1ZSBpblxuICBsZXQgbWF4ID0gaW50X3RvX2ludDY0IEludC5tYXhfdmFsdWUgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50NjRfdG9faW50X3RydW5jIHggZWxzZSBpbnQ2NF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50XCIgbmF0aXZlaW50X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludF90b19uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5vZl9pbnRcbmxldCBuYXRpdmVpbnRfdG9faW50X3RydW5jID0gQ2FtbC5OYXRpdmVpbnQudG9faW50XG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50X3RvX25hdGl2ZWludCBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19uYXRpdmVpbnQgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50IHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4XG4gIHRoZW4gbmF0aXZlaW50X3RvX2ludF90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50MzJcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnQzMl90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfaW50MzJcbmxldCBpbnQ2NF90b19pbnQzMl90cnVuYyA9IENhbWwuSW50NjQudG9faW50MzJcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBsZXQgbWluID0gaW50MzJfdG9faW50NjQgbWluX2ludDMyIGluXG4gIGxldCBtYXggPSBpbnQzMl90b19pbnQ2NCBtYXhfaW50MzIgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludDMyIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnQ2NF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIGludDY0X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHggPVxuICBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50MzJcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG47O1xuXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQzMl90b19uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5vZl9pbnQzMlxubGV0IG5hdGl2ZWludF90b19pbnQzMl90cnVuYyA9IENhbWwuTmF0aXZlaW50LnRvX2ludDMyXG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX25hdGl2ZWludCBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9fbmF0aXZlaW50IG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzIgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcIm5hdGl2ZWludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQ2NCA+PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X3RydW5jID0gQ2FtbC5JbnQ2NC50b19uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX25hdGl2ZWludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgPVxuICBpZiBudW1fYml0c19pbnQ2NCA8PSBudW1fYml0c19uYXRpdmVpbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBuYXRpdmVpbnRfdG9faW50NjQgbWluX25hdGl2ZWludCBpblxuICAgIGxldCBtYXggPSBuYXRpdmVpbnRfdG9faW50NjQgbWF4X25hdGl2ZWludCBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50IHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gU29tZSAoaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBpbnQ2MyAqKVxuXG5sZXQgaW50NjRfdG9faW50NjNfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50NjNcIiBpbnQ2NF90b19zdHJpbmdcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgPVxuICBsZXQgbWluID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBtaW5faW50NjQgMSBpblxuICBsZXQgbWF4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBtYXhfaW50NjQgMSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfZml0X29uX2ludDYzX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gKCkgZWxzZSBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHhcbjs7XG5cbigqIHN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG5sZXQgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyID1cbiAgbGV0IGlucHV0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgaWYgaW5wdXRfbGVuZ3RoIDw9IGNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgdGhlbiBpbnB1dFxuICBlbHNlIChcbiAgICBsZXQgaGFzX3NpZ24gPVxuICAgICAgbWF0Y2ggaW5wdXQuWzBdIHdpdGhcbiAgICAgIHwgJysnIHwgJy0nIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IG51bV9kaWdpdHMgPSBpZiBoYXNfc2lnbiB0aGVuIGlucHV0X2xlbmd0aCAtIDEgZWxzZSBpbnB1dF9sZW5ndGggaW5cbiAgICBsZXQgbnVtX2RlbGltaXRlcnMgPSAobnVtX2RpZ2l0cyAtIDEpIC8gY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBvdXRwdXRfbGVuZ3RoID0gaW5wdXRfbGVuZ3RoICsgbnVtX2RlbGltaXRlcnMgaW5cbiAgICBsZXQgb3V0cHV0ID0gQnl0ZXMuY3JlYXRlIG91dHB1dF9sZW5ndGggaW5cbiAgICBsZXQgaW5wdXRfcG9zID0gcmVmIChpbnB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBvdXRwdXRfcG9zID0gcmVmIChvdXRwdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IHJlZiBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IGZpcnN0X2RpZ2l0X3BvcyA9IGlmIGhhc19zaWduIHRoZW4gMSBlbHNlIDAgaW5cbiAgICB3aGlsZSAhaW5wdXRfcG9zID49IGZpcnN0X2RpZ2l0X3BvcyBkb1xuICAgICAgaWYgIW51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBkZWxpbWl0ZXI7XG4gICAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgICAgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA6PSBjaGFyc19wZXJfZGVsaW1pdGVyKTtcbiAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgaW5wdXQuWyFpbnB1dF9wb3NdO1xuICAgICAgZGVjciBpbnB1dF9wb3M7XG4gICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICBkZWNyIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXJcbiAgICBkb25lO1xuICAgIGlmIGhhc19zaWduIHRoZW4gQnl0ZXMuc2V0IG91dHB1dCAwIGlucHV0LlswXTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dHB1dClcbjs7XG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXIgPVxuICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXI6M1xuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyBpbnB1dCA9IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlcjonXydcbmxldCBzZXhwX29mX2ludF9zdHlsZSA9IFNleHAub2ZfaW50X3N0eWxlXG5cbm1vZHVsZSBNYWtlIChJIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBJXG5cbiAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSAzXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPVxuICAgIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKHRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgcyA9IHRvX3N0cmluZyB0IGluXG4gICAgU2V4cC5BdG9tXG4gICAgICAobWF0Y2ggIXNleHBfb2ZfaW50X3N0eWxlIHdpdGhcbiAgICAgICB8IGBVbmRlcnNjb3JlcyAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IHMgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgfmRlbGltaXRlcjonXydcbiAgICAgICB8IGBOb191bmRlcnNjb3JlcyAtPiBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2hleCAoSSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUX2hleCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKEkuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBJLmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IEkuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDRcblxuICAgIGxldCB0b19zdHJpbmcnID9kZWxpbWl0ZXIgdCA9XG4gICAgICBsZXQgbWFrZV9zdWZmaXggPVxuICAgICAgICBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSS50b19zdHJpbmdcbiAgICAgICAgfCBTb21lIGRlbGltaXRlciAtPlxuICAgICAgICAgIGZ1biB0IC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKEkudG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgICAgIGluXG4gICAgICBpZiBJLiggPCApIHQgSS56ZXJvIHRoZW4gXCItMHhcIiBeIG1ha2Vfc3VmZml4IChJLm5lZyB0KSBlbHNlIFwiMHhcIiBeIG1ha2Vfc3VmZml4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nJyB0ID9kZWxpbWl0ZXI6Tm9uZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID0gdG9fc3RyaW5nJyB0IH5kZWxpbWl0ZXJcblxuICAgIGxldCBpbnZhbGlkIHN0ciA9XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiJXMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgSS5tb2R1bGVfbmFtZSBzdHIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBzdHIgPVxuICAgICAgSS5vZl9zdHJpbmcgKFN0cmluZy5maWx0ZXIgc3RyIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICdfJykpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgIGxldCBtb2R1bGUgTCA9IEhleF9sZXhlciBpblxuICAgICAgbGV0IGxleCA9IENhbWwuTGV4aW5nLmZyb21fc3RyaW5nIHN0ciBpblxuICAgICAgbGV0IHJlc3VsdCA9IE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEwucGFyc2VfaGV4IGxleCkgaW5cbiAgICAgIGlmIGxleC5sZXhfY3Vycl9wb3MgPSBsZXgubGV4X2J1ZmZlcl9sZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaW52YWxpZCBzdHJcbiAgICAgICAgfCBTb21lIChOZWcgYm9keSkgLT4gSS5uZWcgKG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgICB8IFNvbWUgKFBvcyBib2R5KSAtPiBvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgIGVsc2UgaW52YWxpZCBzdHJcbiAgICA7O1xuXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhleCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVF9oZXhcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFRfaGV4KVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBmaWxlIHdhcyBhdXRvZ2VuZXJhdGVkIGJ5IC4uL2dlbmVyYXRlL2dlbmVyYXRlX3Bvd19vdmVyZmxvd19ib3VuZHMuZXhlICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgaGF2ZSB0byB1c2UgSW50NjQudG9faW50X2V4biBpbnN0ZWFkIG9mIGludCBjb25zdGFudHMgdG8gbWFrZVxuICAgc3VyZSB0aGF0IGZpbGUgY2FuIGJlIHByZXByb2Nlc3NlZCBvbiAzMi1iaXQgbWFjaGluZXMuICopXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUgOiBpbnQzMiA9XG4gIDIxNDc0ODM2NDdsXG5cbmxldCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQzMiBhcnJheSA9XG4gIFt8IDIxNDc0ODM2NDdsXG4gIDsgIDIxNDc0ODM2NDdsXG4gIDsgIDQ2MzQwbFxuICA7ICAxMjkwbFxuICA7ICAyMTVsXG4gIDsgIDczbFxuICA7ICAzNWxcbiAgOyAgMjFsXG4gIDsgIDE0bFxuICA7ICAxMGxcbiAgOyAgOGxcbiAgOyAgN2xcbiAgOyAgNWxcbiAgOyAgNWxcbiAgOyAgNGxcbiAgOyAgNGxcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUgOiBpbnQgPVxuICAoLTEpIGxzciAxXG5cbmxldCBpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50IGFycmF5ID1cbiAgbWF0Y2ggSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludCB3aXRoXG4gIHwgMzIgLT4gQXJyYXkubWFwIGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyB+ZjpDYW1sLkludDMyLnRvX2ludFxuICB8IDYzIC0+XG4gICAgW3wgQ2FtbC5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBDYW1sLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIENhbWwuSW50NjQudG9faW50IDIxNDc0ODM2NDdMXG4gICAgOyAgMTY2NDUxMFxuICAgIDsgIDQ2MzQwXG4gICAgOyAgNTQwNFxuICAgIDsgIDEyOTBcbiAgICA7ICA0NjNcbiAgICA7ICAyMTVcbiAgICA7ICAxMThcbiAgICA7ICA3M1xuICAgIDsgIDQ5XG4gICAgOyAgMzVcbiAgICA7ICAyN1xuICAgIDsgIDIxXG4gICAgOyAgMTdcbiAgICA7ICAxNFxuICAgIDsgIDEyXG4gICAgOyAgMTBcbiAgICA7ICA5XG4gICAgOyAgOFxuICAgIDsgIDdcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IDMxIC0+XG4gICAgW3wgMTA3Mzc0MTgyM1xuICAgIDsgIDEwNzM3NDE4MjNcbiAgICA7ICAzMjc2N1xuICAgIDsgIDEwMjNcbiAgICA7ICAxODFcbiAgICA7ICA2M1xuICAgIDsgIDMxXG4gICAgOyAgMTlcbiAgICA7ICAxM1xuICAgIDsgIDEwXG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDYzX29uX2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuXG5sZXQgaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICAyMTQ3NDgzNjQ3TFxuICA7ICAxNjY0NTEwTFxuICA7ICA0NjM0MExcbiAgOyAgNTQwNExcbiAgOyAgMTI5MExcbiAgOyAgNDYzTFxuICA7ICAyMTVMXG4gIDsgIDExOExcbiAgOyAgNzNMXG4gIDsgIDQ5TFxuICA7ICAzNUxcbiAgOyAgMjdMXG4gIDsgIDIxTFxuICA7ICAxN0xcbiAgOyAgMTRMXG4gIDsgIDEyTFxuICA7ICAxMExcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgOyAgMUxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcblxubGV0IGludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgMzAzNzAwMDQ5OUxcbiAgOyAgMjA5NzE1MUxcbiAgOyAgNTUxMDhMXG4gIDsgIDYyMDhMXG4gIDsgIDE0NDhMXG4gIDsgIDUxMUxcbiAgOyAgMjM0TFxuICA7ICAxMjdMXG4gIDsgIDc4TFxuICA7ICA1MkxcbiAgOyAgMzhMXG4gIDsgIDI4TFxuICA7ICAyMkxcbiAgOyAgMThMXG4gIDsgIDE1TFxuICA7ICAxM0xcbiAgOyAgMTFMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBpbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTMwMzcwMDA0OTlMXG4gIDsgIC0yMDk3MTUxTFxuICA7ICAtNTUxMDhMXG4gIDsgIC02MjA4TFxuICA7ICAtMTQ0OExcbiAgOyAgLTUxMUxcbiAgOyAgLTIzNExcbiAgOyAgLTEyN0xcbiAgOyAgLTc4TFxuICA7ICAtNTJMXG4gIDsgIC0zOExcbiAgOyAgLTI4TFxuICA7ICAtMjJMXG4gIDsgIC0xOExcbiAgOyAgLTE1TFxuICA7ICAtMTNMXG4gIDsgIC0xMUxcbiAgOyAgLTlMXG4gIDsgIC04TFxuICA7ICAtN0xcbiAgOyAgLTdMXG4gIDsgIC02TFxuICA7ICAtNkxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMUxcbiAgfF1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IG5lZ2F0aXZlX2V4cG9uZW50ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImV4cG9uZW50IGNhbiBub3QgYmUgbmVnYXRpdmVcIiAoKVxubGV0IG92ZXJmbG93ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImludGVnZXIgb3ZlcmZsb3cgaW4gcG93XCIgKClcblxuKCogVG8gaW1wbGVtZW50IFtpbnQ2NF9wb3ddLCB3ZSB1c2UgQyBjb2RlIHJhdGhlciB0aGFuIE9DYW1sIHRvIGVsaW1pbmF0ZSBhbGxvY2F0aW9uLiAqKVxuZXh0ZXJuYWwgaW50X21hdGhfaW50X3BvdyA6IGludCAtPiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YlwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBpbnRfbWF0aF9pbnQ2NF9wb3cgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YlwiXG5cbmxldCBpbnRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBpZiBleHBvbmVudCA8IDAgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxXG4gICYmIChleHBvbmVudCA+IDYzXG4gICAgICB8fCBhYnMgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4oZXhwb25lbnQpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSBJbnQ2NF93aXRoX2NvbXBhcmlzb25zID0gc3RydWN0XG4gIGluY2x1ZGUgQ2FtbC5JbnQ2NFxuXG4gIGV4dGVybmFsICggPCApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoID49ICkgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmVuZFxuXG4oKiB3ZSBkb24ndCBkbyBbYWJzXSBpbiBpbnQ2NCBjYXNlIHRvIGF2b2lkIGFsbG9jYXRpb24gKilcbmxldCBpbnQ2NF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiAoYmFzZSA+IDFMIHx8IGJhc2UgPCAtMUwpXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgKGJhc2UgPj0gMExcbiAgICAgICAgICAmJiBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgICAgIClcbiAgICAgIHx8IChiYXNlIDwgMExcbiAgICAgICAgICAmJiBiYXNlIDwgUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgICAgICkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5sZXQgaW50NjNfcG93X29uX2ludDY0IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxTFxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IGFicyBiYXNlXG4gICAgICAgICA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgIClcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgRmxvYXRhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggfi0gKSA6IHQgLT4gdFxuXG4gIGluY2x1ZGUgQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIG9mX2ludF9leG4gOiBpbnQgLT4gdFxuICB2YWwgcmVtIDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoWCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBvcGVuIFhcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAlJSAlcyBpbiBjb3JlX2ludC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgbGV0IHJ2YWwgPSBYLnJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCBvbmUgPSBvZl9pbnRfZXhuIDFcblxuICBsZXQgKCAvJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgKCoqIGZsb2F0IGRpdmlzaW9uIG9mIGludGVnZXJzICopXG4gIGxldCAoIC8vICkgeCB5ID0gdG9fZmxvYXQgeCAvLiB0b19mbG9hdCB5XG5cbiAgbGV0IHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9IGkgLSAoaSAlIG1vZHVsdXMpXG5cbiAgbGV0IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGlmIHJlbWFpbmRlciA9IHplcm8gdGhlbiBpIGVsc2UgaSArIG1vZHVsdXMgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXQgcm91bmRfdG93YXJkc196ZXJvIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBpZiBpID0gemVyb1xuICAgIHRoZW4gemVyb1xuICAgIGVsc2UgaWYgaSA+IHplcm9cbiAgICB0aGVuIHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICBlbHNlIHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gIDs7XG5cbiAgbGV0IHJvdW5kX25lYXJlc3QgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgbGV0IG1vZHVsdXNfbWludXNfcmVtYWluZGVyID0gbW9kdWx1cyAtIHJlbWFpbmRlciBpblxuICAgIGlmIG1vZHVsdXNfbWludXNfcmVtYWluZGVyIDw9IHJlbWFpbmRlclxuICAgIHRoZW4gaSArIG1vZHVsdXNfbWludXNfcmVtYWluZGVyXG4gICAgZWxzZSBpIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYERvd24gLT4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFVwIC0+IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaW50X3BvdyA9IGludF9wb3dcbiAgbGV0IGludDY0X3BvdyA9IGludDY0X3Bvd1xuICBsZXQgaW50NjNfcG93X29uX2ludDY0ID0gaW50NjNfcG93X29uX2ludDY0XG5cbiAgbW9kdWxlIFBvd19vdmVyZmxvd19ib3VuZHMgPSBQb3dfb3ZlcmZsb3dfYm91bmRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBDIHN0dWIgZm9yIGludCBwb3Bjb3VudCB0byB1c2UgdGhlIFBPUENOVCBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuZXh0ZXJuYWwgaW50X3BvcGNvdW50IDogaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnRcIiBbQEBub2FsbG9jXVxuXG4oKiBUbyBtYWludGFpbiBqYXZhc2NyaXB0IGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSB1bmJveGluZywgd2UgaW1wbGVtZW50IHBvcGNvdW50IGluXG4gICBPQ2FtbCByYXRoZXIgdGhhbiB1c2UgQyBzdHVicy4gSW1wbGVtZW50YXRpb24gYWRhcHRlZCBmcm9tOlxuICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFtbWluZ193ZWlnaHQjRWZmaWNpZW50X2ltcGxlbWVudGF0aW9uICopXG5sZXQgaW50NjRfcG9wY291bnQgPVxuICBsZXQgb3BlbiBDYW1sLkludDY0IGluXG4gIGxldCAoICsgKSA9IGFkZCBpblxuICBsZXQgKCAtICkgPSBzdWIgaW5cbiAgbGV0ICggKiApID0gbXVsIGluXG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbCBpblxuICBsZXQgKCBsYW5kICkgPSBsb2dhbmQgaW5cbiAgbGV0IG0xID0gMHg1NTU1NTU1NTU1NTU1NTU1TCBpblxuICAoKiAwYjAxMDEwMTAxLi4uICopXG4gIGxldCBtMiA9IDB4MzMzMzMzMzMzMzMzMzMzM0wgaW5cbiAgKCogMGIwMDExMDAxMS4uLiAqKVxuICBsZXQgbTQgPSAweDBmMGYwZjBmMGYwZjBmMGZMIGluXG4gICgqIDBiMDAwMDExMTEuLi4gKilcbiAgbGV0IGgwMSA9IDB4MDEwMTAxMDEwMTAxMDEwMUwgaW5cbiAgKCogMSBiaXQgc2V0IHBlciBieXRlICopXG4gIGZ1biBbQGlubGluZV0geCAtPlxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBwYWlyIG9mIGJpdHMgKilcbiAgICBsZXQgeCA9IHggLSAoKHggbHNyIDEpIGxhbmQgbTEpIGluXG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IDQgYml0cyAqKVxuICAgIGxldCB4ID0gKHggbGFuZCBtMikgKyAoKHggbHNyIDIpIGxhbmQgbTIpIGluXG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IGJ5dGUgKilcbiAgICBsZXQgeCA9ICh4ICsgKHggbHNyIDQpKSBsYW5kIG00IGluXG4gICAgKCogc3VtIHRoZSBiaXQgY291bnRzIGluIHRoZSB0b3AgYnl0ZSBhbmQgc2hpZnQgaXQgZG93biAqKVxuICAgIHRvX2ludCAoKHggKiBoMDEpIGxzciA1Nilcbjs7XG5cbmxldCBpbnQzMl9wb3Bjb3VudCA9XG4gICgqIE9uIDY0LWJpdCBzeXN0ZW1zLCB0aGlzIGlzIGZhc3RlciB0aGFuIGltcGxlbWVudGluZyB1c2luZyBbaW50MzJdIGFyaXRobWV0aWMuICopXG4gIGxldCBtYXNrID0gMHhmZmZmX2ZmZmZMIGluXG4gIGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoQ2FtbC5JbnQ2NC5sb2dhbmQgKENhbWwuSW50NjQub2ZfaW50MzIgeCkgbWFzaylcbjs7XG5cbmxldCBuYXRpdmVpbnRfcG9wY291bnQgPVxuICBtYXRjaCBDYW1sLk5hdGl2ZWludC5zaXplIHdpdGhcbiAgfCAzMiAtPiBmdW4gW0BpbmxpbmVdIHggLT4gaW50MzJfcG9wY291bnQgKENhbWwuTmF0aXZlaW50LnRvX2ludDMyIHgpXG4gIHwgNjQgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChDYW1sLkludDY0Lm9mX25hdGl2ZWludCB4KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNpZ24wXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChTaWduMClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xLlxuICB8IFplcm8gLT4gMC5cbiAgfCBQb3MgLT4gMS5cbjs7XG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuOztcblxubGV0ICggKiApIHQgdCcgPSBvZl9pbnQgKHRvX2ludCB0ICogdG9faW50IHQnKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhdCB0aGUgZW5kLCBhZnRlciBhbnlcbiAgIGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvXG4gICB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXNcbiAgIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50X2ludGZcbmluY2x1ZGUgSW50MFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgeCB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIHggeVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICB8IF8gLT4gUHJpbnRmLmZhaWx3aXRoZiBcIkludC5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbmVuZFxuXG5sZXQgbnVtX2JpdHMgPSBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCB0b19mbG9hdCA9IENhbWwuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gQ2FtbC5pbnRfb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gQ2FtbC5pbnRfb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIleFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJXhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMl90cnVuYyA6IGludDMyIC0+IHQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50NjRfdHJ1bmMgOiBpbnQ2NCAtPiB0ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5cbmxldCBwcmVkIGkgPSBpIC0gMVxubGV0IHN1Y2MgaSA9IGkgKyAxXG5sZXQgdG9faW50IGkgPSBpXG5sZXQgdG9faW50X2V4biA9IHRvX2ludFxubGV0IG9mX2ludCBpID0gaVxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCBtYXhfdmFsdWUgPSBDYW1sLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBDYW1sLm1pbl9pbnRcbmxldCBtYXhfdmFsdWVfMzBfYml0cyA9IDB4M0ZGRl9GRkZGXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX2ludFxubGV0IG9mX2ludDMyX2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludDMyID0gQ29udi5pbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9faW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgdG9faW50NjQgPSBDb252LmludF90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IGFicyB4ID0gYWJzIHhcblxuKCogbm90ZSB0aGF0IHJlbSBpcyBub3Qgc2FtZSBhcyAlICopXG5sZXQgcmVtIGEgYiA9IGEgbW9kIGJcbmxldCBpbmNyID0gQ2FtbC5pbmNyXG5sZXQgZGVjciA9IENhbWwuZGVjclxubGV0IHNoaWZ0X3JpZ2h0IGEgYiA9IGEgYXNyIGJcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsIGEgYiA9IGEgbHNyIGJcbmxldCBzaGlmdF9sZWZ0IGEgYiA9IGEgbHNsIGJcbmxldCBiaXRfbm90IGEgPSBsbm90IGFcbmxldCBiaXRfb3IgYSBiID0gYSBsb3IgYlxubGV0IGJpdF9hbmQgYSBiID0gYSBsYW5kIGJcbmxldCBiaXRfeG9yIGEgYiA9IGEgbHhvciBiXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnRfcG93XG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggLSAxIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4ICsgMVxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCAtICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgKHggLSAxKSA9IDBcbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKCogTm90ZSB0aGF0IHdlIHBhc3MgdGhlIHRhZ2dlZCBpbnQgaGVyZS4gU2VlIGludF9tYXRoX3N0dWJzLmMgZm9yIGRldGFpbHMgb24gd2h5XG4gICAgICAgICAgdGhpcyBpcyBjb3JyZWN0LiAqKVxuICAgIGludFxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jbHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnRbQHVudGFnZ2VkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgaWYgaSA9IDEgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKGkgLSAxKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnRfcG9wY291bnRcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuICBleHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbiAgZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG4gIGV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuICBleHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFicyA9IGFic1xuXG4gIGV4dGVybmFsIG5lZyA6IHQgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBtb2R1bGUgRiA9IEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgRlxuXG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5cbiAgKCogVGhlc2UgaW5saW5lZCB2ZXJzaW9ucyBvZiAoJSksICgvJSksIGFuZCAoLy8pIHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhlaXIgZnVuY3Rvcml6ZWRcbiAgICAgY291bnRlcnBhcnRzIGluIFtGXSAoc2VlIGJlbmNobWFya3MgYmVsb3cpLlxuXG4gICAgIFRoZSByZWFzb24gdGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGluIFtJbnRdIGJ1dCBub3QgaW4gYW55IG9mIHRoZSBvdGhlciBpbnRlZ2VyXG4gICAgIG1vZHVsZXMgaXMgdGhhdCB0aGV5IGV4aXN0ZWQgaW4gW0ludF0gYW5kIFtJbnRdIGFsb25lIHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2ZcbiAgICAgdGhlIFtJbnRfbWF0aC5NYWtlXSBmdW5jdG9yLCBhbmQgd2UgZGlkbid0IHdhbnQgdG8gZGVncmFkZSB0aGVpciBwZXJmb3JtYW5jZS5cblxuICAgICBXZSB3b24ndCBwcmUtZW1wdGl2ZWx5IGRvIHRoZSBzYW1lIGZvciBuZXcgZnVuY3Rpb25zLCB1bmxlc3Mgc29tZW9uZSBjYXJlcywgb24gYSBjYXNlXG4gICAgIGJ5IGNhc2UgZmFzaGlvbi4gICopXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IHJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuICBleHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxuICBsZXQgbG5vdCA9IGxub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuICBleHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuICBleHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50XSBhbmQgW0ludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBPX0YgPSBPLkZcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3JcbiAgIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVY2hhcjBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVWNoYXJcIlxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IEhhc2guZm9sZF9pbnQgc3RhdGUgKHRvX2ludCB0KVxuICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBsZXQgdG9fc3RyaW5nIHQgPSBQcmludGYuc3ByaW50ZiBcIlUrJTA0WFwiICh0b19pbnQgdClcblxuICAoKiBEbyBub3QgYWN0dWFsbHkgZXhwb3J0IHRoaXMuIFNlZSBkaXNjdXNzaW9uIGluIHRoZSAubWxpICopXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiVSslWFwiIChmdW4gaSAtPiBVY2hhcjAub2ZfaW50IGkpIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBvZiB0aGUgZm9ybSBVK1hYWFggbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBpbnRfaXNfc2NhbGFyID0gaXNfdmFsaWRcblxubGV0IHN1Y2NfZXhuIGMgPVxuICB0cnkgVWNoYXIwLnN1Y2MgYyB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gZmFpbHdpdGhmIFwiVWNoYXIuc3VjY19leG46ICVzXCIgbXNnICgpXG47O1xuXG5sZXQgc3VjYyBjID1cbiAgdHJ5IFNvbWUgKFVjaGFyMC5zdWNjIGMpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuOztcblxubGV0IHByZWRfZXhuIGMgPVxuICB0cnkgVWNoYXIwLnByZWQgYyB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gZmFpbHdpdGhmIFwiVWNoYXIucHJlZF9leG46ICVzXCIgbXNnICgpXG47O1xuXG5sZXQgcHJlZCBjID1cbiAgdHJ5IFNvbWUgKFVjaGFyMC5wcmVkIGMpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuOztcblxubGV0IG9mX3NjYWxhciBpID0gaWYgaW50X2lzX3NjYWxhciBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX3NjYWxhcl9leG4gaSA9XG4gIGlmIGludF9pc19zY2FsYXIgaVxuICB0aGVuIHVuc2FmZV9vZl9pbnQgaVxuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLm9mX2ludF9leG4gZ290IGEgaW52YWxpZCBVbmljb2RlIHNjYWxhciB2YWx1ZTogJTA0WFwiIGkgKClcbjs7XG5cbmxldCB0b19zY2FsYXIgdCA9IFVjaGFyMC50b19pbnQgdFxubGV0IHRvX2NoYXIgYyA9IGlmIGlzX2NoYXIgYyB0aGVuIFNvbWUgKHVuc2FmZV90b19jaGFyIGMpIGVsc2UgTm9uZVxuXG5sZXQgdG9fY2hhcl9leG4gYyA9XG4gIGlmIGlzX2NoYXIgY1xuICB0aGVuIHVuc2FmZV90b19jaGFyIGNcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci50b19jaGFyX2V4biBnb3QgYSBub24gbGF0aW4tMSBjaGFyYWN0ZXI6IFUrJTA0WFwiICh0b19pbnQgYykgKClcbjs7XG5cbmxldCB1dGY4X2J5dGVfbGVuZ3RoIHVjaGFyID1cbiAgbGV0IGNvZGVwb2ludCA9IHRvX3NjYWxhciB1Y2hhciBpblxuICBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwMFxuICB0aGVuIDJcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4MTAwMDBcbiAgdGhlbiAzXG4gIGVsc2UgNFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdhKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAwM18gYl9fMDA0XylcbiAgICAgIDogICgoYV9fMDAzXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMDRfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDAzXywgYl9fMDA0XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIFQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVFwiXG47O1xuXG5bQEBAZW5kXVxuXG50eXBlICgnYSwgJ2IpIGVxdWFsID0gKCdhLCAnYikgdFxuXG5sZXQgcmVmbCA9IFRcbmxldCBzeW0gKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChiLCBhKSB0ID0gVFxubGV0IHRyYW5zICh0eXBlIGEgYiBjKSAoVCA6IChhLCBiKSB0KSAoVCA6IChiLCBjKSB0KSA6IChhLCBjKSB0ID0gVFxubGV0IGNvbnYgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSAoYSA6IGEpIDogYiA9IGFcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcblxubW9kdWxlIExpZnQyIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KVxuICAgIDogKChhMSwgYTIpIFgudCwgKGIxLCBiMikgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGlmdDMgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyIGEzIGIzKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgKFQgOiAoYTMsIGIzKSB0KVxuICAgIDogKChhMSwgYTIsIGEzKSBYLnQsIChiMSwgYjIsIGIzKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbmxldCBkZXR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCkgOiAoYTEsIGIxKSB0ICogKGEyLCBiMikgdCA9XG4gIFQsIFRcbjs7XG5cbmxldCB0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSA6IChhMSAqIGEyLCBiMSAqIGIyKSB0ID0gVFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIHN0cmlwIDogKCdhIHQsICdiIHQpIGVxdWFsIC0+ICgnYSwgJ2IpIGVxdWFsXG5lbmRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlMiA9IHNpZ1xuICB0eXBlICgnYTEsICdhMikgdFxuXG4gIHZhbCBzdHJpcCA6ICgoJ2ExLCAnYTIpIHQsICgnYjEsICdiMikgdCkgZXF1YWwgLT4gKCdhMSwgJ2IxKSBlcXVhbCAqICgnYTIsICdiMikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgQ29tcG9zaXRpb25fcHJlc2VydmVzX2luamVjdGl2aXR5IChNMSA6IEluamVjdGl2ZSkgKE0yIDogSW5qZWN0aXZlKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBNMS50IE0yLnRcblxuICBsZXQgc3RyaXAgZSA9IE0xLnN0cmlwIChNMi5zdHJpcCBlKVxuZW5kXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBtb2R1bGUgVWlkID0gSW50XG5cbiAgbW9kdWxlIFdpdG5lc3MgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IC4uXG4gICAgICB0eXBlIHR5cGVfd2l0bmVzc19pbnQgPSBbIGB0eXBlX3dpdG5lc3Mgb2YgaW50IF0gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIGxldCBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnQgPVxuICAgICAgICAoZnVuIChgdHlwZV93aXRuZXNzIHZfXzAwNV8pIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInR5cGVfd2l0bmVzc1wiOyBzZXhwX29mX2ludCB2X18wMDVfIF1cbiAgICAgICAgICAgOiB0eXBlX3dpdG5lc3NfaW50IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIDs7XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgX3NleHBfb2ZfYSB0ID1cbiAgICAgICAgYHR5cGVfd2l0bmVzc1xuICAgICAgICAgIChDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgdCkpXG4gICAgICAgIHw+IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IHNleHBfb2ZfdCAodHlwZSBhKSBzZXhwX29mX2EgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIE0uS2V5IHw+IEtleS5zZXhwX29mX3Qgc2V4cF9vZl9hXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgdCkgKCkgPVxuICAgICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgICBlbmRcbiAgICAgIGluXG4gICAgICAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gdClcbiAgICA7O1xuXG4gICAgbGV0IHVpZCAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIE0uS2V5KVxuICAgIDs7XG5cbiAgICAoKiBXZSB3YW50IGEgY29uc3RhbnQgYWxsb2NhdGVkIG9uY2UgdGhhdCBbc2FtZV0gY2FuIHJldHVybiB3aGVuZXZlciBpdCBnZXRzIHRoZSBzYW1lXG4gICAgICAgd2l0bmVzc2VzLiAgSWYgd2Ugd3JpdGUgdGhlIGNvbnN0YW50IGluc2lkZSB0aGUgYm9keSBvZiBbc2FtZV0sIHRoZSBuYXRpdmUtY29kZVxuICAgICAgIGNvbXBpbGVyIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGFuZCBsaWZ0IGl0IG91dC4gIEJ1dCBmb3IgY2xhcml0eSBhbmQgcm9idXN0bmVzcyxcbiAgICAgICB3ZSBkbyBpdCBvdXJzZWx2ZXMuICopXG4gICAgbGV0IHNvbWVfdCA9IFNvbWUgVFxuXG4gICAgbGV0IHNhbWUgKHR5cGUgYSBiKSAoYSA6IGEgdCkgKGIgOiBiIHQpIDogKGEsIGIpIGVxdWFsIG9wdGlvbiA9XG4gICAgICBsZXQgbW9kdWxlIEEgPSAodmFsIGEgOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQiA9ICh2YWwgYiA6IFMgd2l0aCB0eXBlIHQgPSBiKSBpblxuICAgICAgbWF0Y2ggQS5LZXkgd2l0aFxuICAgICAgfCBCLktleSAtPiBzb21lX3RcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcbiAgZW5kXG5cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2l0bmVzcyA6ICdhIFdpdG5lc3MudFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgdG9fc2V4cCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IF8geyB3aXRuZXNzOyBuYW1lOyB0b19zZXhwIH0gOiBTZXhwLnQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIEF0b20gbmFtZVxuICAgIGVsc2VcbiAgICAgIExpc3RcbiAgICAgICAgWyBMaXN0IFsgQXRvbSBcIm5hbWVcIjsgQXRvbSBuYW1lIF1cbiAgICAgICAgOyBMaXN0IFsgQXRvbSBcIndpdG5lc3NcIjsgd2l0bmVzcyB8PiBXaXRuZXNzLnNleHBfb2ZfdCB0b19zZXhwIF1cbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zZXhwIHQgPSB0LnRvX3NleHBcbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgY3JlYXRlIH5uYW1lIHRvX3NleHAgPSB7IHdpdG5lc3MgPSBXaXRuZXNzLmNyZWF0ZSAoKTsgbmFtZTsgdG9fc2V4cCB9XG4gIGxldCB1aWQgdCA9IFdpdG5lc3MudWlkIHQud2l0bmVzc1xuICBsZXQgaGFzaCB0ID0gdWlkIHRcbiAgbGV0IGhhc2hfZm9sZF90IHMgdCA9IGhhc2hfZm9sZF9pbnQgcyAodWlkIHQpXG4gIGxldCBzYW1lX3dpdG5lc3MgdDEgdDIgPSBXaXRuZXNzLnNhbWUgdDEud2l0bmVzcyB0Mi53aXRuZXNzXG4gIGxldCBzYW1lIHQxIHQyID0gT3B0aW9uLmlzX3NvbWUgKHNhbWVfd2l0bmVzcyB0MSB0MilcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biB0MSB0MiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIHQxIHQyIHdpdGhcbiAgICB8IFNvbWUgdyAtPiB3XG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gZ290IGRpZmZlcmVudCBpZHNcIlxuICAgICAgICAgICBbICggXCJcIlxuICAgICAgICAgICAgICwgc2V4cF9vZl9wYWlyIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpICh0MSwgdDIpXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICBdKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIFsnYSBDaGVhcF9vcHRpb24udF0gaXMgbGlrZSBbJ2Egb3B0aW9uXSwgYnV0IGl0IGRvZXNuJ3QgYm94IFtzb21lIF9dIHZhbHVlcy5cblxuICAgIFRoZXJlIGFyZSBzZXZlcmFsIHRoaW5ncyB0aGF0IGFyZSB1bnNhZmUgYWJvdXQgaXQ6XG5cbiAgICAtIFtmbG9hdCB0IGFycmF5XSAob3IgYW55IGFycmF5LWJhY2tlZCBjb250YWluZXIpIGlzIG5vdCBtZW1vcnktc2FmZVxuICAgICAgYmVjYXVzZSBmbG9hdCBhcnJheSBvcHRpbWl6YXRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdW5ib3hlZCBvcHRpb25cbiAgICAgIG9wdGltaXphdGlvbi4gWW91IGhhdmUgdG8gdXNlIFtVbmlmb3JtX2FycmF5LnRdIGluc3RlYWQgb2YgW2FycmF5XS5cblxuICAgIC0gTmVzdGVkIG9wdGlvbnMgKFsnYSB0IHRdKSBkb24ndCB3b3JrLiBUaGV5IGFyZSBiZWxpZXZlZCB0byBiZVxuICAgICAgbWVtb3J5LXNhZmUsIGJ1dCBub3QgcGFyYW1ldHJpYy5cblxuICAgIC0gQSByZWNvcmQgd2l0aCBbZmxvYXQgdF1zIGluIGl0IHNob3VsZCBiZSBzYWZlLCBidXQgaXQncyBvbmx5IFt0XSBiZWluZ1xuICAgICAgYWJzdHJhY3QgdGhhdCBnaXZlcyB5b3Ugc2FmZXR5LiBJZiB0aGUgY29tcGlsZXIgd2FzIHNtYXJ0IGVub3VnaCB0byBwZWVrXG4gICAgICB0aHJvdWdoIHRoZSBtb2R1bGUgc2lnbmF0dXJlIHRoZW4gaXQgY291bGQgZGVjaWRlIHRvIGNvbnN0cnVjdCBhIGZsb2F0XG4gICAgICBhcnJheSBpbnN0ZWFkLiAqKVxubW9kdWxlIENoZWFwX29wdGlvbiA9IHN0cnVjdFxuICAoKiBUaGlzIGlzIHRha2VuIGZyb20gY29yZS4gUmF0aGVyIHRoYW4gZXhwb3NlIGl0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIGJhc2UsIGp1c3RcbiAgICAga2VlcCBhIGNvcHkgYXJvdW5kIGhlcmUuICopXG4gIGxldCBwaHlzX3NhbWUgKHR5cGUgYSBiKSAoYSA6IGEpIChiIDogYikgPSBwaHlzX2VxdWFsIGEgKENhbWwuT2JqLm1hZ2ljIGIgOiBhKVxuXG4gIG1vZHVsZSBUMCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5vbmUgOiBfIHRcbiAgICB2YWwgc29tZSA6ICdhIC0+ICdhIHRcbiAgICB2YWwgaXNfbm9uZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3NvbWUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+ICdhXG4gICAgdmFsIHZhbHVlX3Vuc2FmZSA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgaXRlcl9zb21lIDogJ2EgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgKydhIHRcblxuICAgICgqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgICAgICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgICAgIEl0IHdvdWxkIGJlIHNpbXBsZXIgdG8gdXNlIHRoaXMgdmFsdWUgYXMgW25vbmVdLCBidXQgd2UgdXNlIGFuIGltbWVkaWF0ZSBpbnN0ZWFkXG4gICAgICAgYmVjYXVzZSBpdCBsZXRzIHVzIGF2b2lkIGNhbWxfbW9kaWZ5IHdoZW4gc2V0dGluZyB0byBbbm9uZV0sIG1ha2luZyBjZXJ0YWluXG4gICAgICAgYmVuY2htYXJrcyBzaWduaWZpY2FudGx5IGZhc3RlciAoZS5nLiAuLi9iZW5jaC9hcnJheV9xdWV1ZS5leGUpLlxuXG4gICAgICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gTW9wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXIgcGxhY2Ugd2hlcmUgd2Ugd2FudFxuICAgICAgIGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG4gICAgbGV0IG5vbmVfc3Vic3RpdHV0ZSA6IF8gdCA9IENhbWwuT2JqLm9iaiAoQ2FtbC5PYmoubmV3X2Jsb2NrIENhbWwuT2JqLmFic3RyYWN0X3RhZyAxKVxuXG4gICAgbGV0IG5vbmUgOiBfIHQgPVxuICAgICAgKCogVGhlIG51bWJlciB3YXMgcHJvZHVjZWQgYnlcbiAgICAgICAgIFs8IC9kZXYvdXJhbmRvbSB0ciAtYyAtZCAnMTIzNDU2Nzg5MGFiY2RlZicgfCBoZWFkIC1jIDE2XS5cblxuICAgICAgICAgVGhlIGlkZWEgaXMgdGhhdCBhIHJhbmRvbSBudW1iZXIgd2lsbCBoYXZlIGxvd2VyIHByb2JhYmlsaXR5IHRvIGNvbGxpZGUgd2l0aFxuICAgICAgICAgYW55dGhpbmcgdGhhbiBhbnkgbnVtYmVyIHdlIGNhbiBjaG9vc2Ugb3Vyc2VsdmVzLlxuXG4gICAgICAgICBXZSBhcmUgdXNpbmcgYSBwb2x5bW9ycGhpYyB2YXJpYW50IGluc3RlYWQgb2YgYW4gaW50ZWdlciBjb25zdGFudCBiZWNhdXNlIHRoZXJlXG4gICAgICAgICBpcyBhIGNvbXBpbGVyIGJ1ZyB3aGVyZSBpdCB3cm9uZ2x5IGFzc3VtZXMgdGhhdCB0aGUgcmVzdWx0IG9mIFtpZiBfIHRoZW4gYyBlbHNlXG4gICAgICAgICB5XSBpcyBub3QgYSBwb2ludGVyIGlmIFtjXSBpcyBhbiBpbnRlZ2VyIGNvbXBpbGUtdGltZSBjb25zdGFudC4gIFRoaXMgaXMgYmVpbmdcbiAgICAgICAgIGZpeGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9wdWxsLzU1NS4gIFRoZSBcIm1lbW9yeSBjb3JydXB0aW9uXCIgdGVzdFxuICAgICAgICAgYmVsb3cgZGVtb25zdHJhdGVzIHRoZSBpc3N1ZS4gICopXG4gICAgICBDYW1sLk9iai5tYWdpYyBgeDZlOGVlMzQ3OGUxZDc0NDlcbiAgICA7O1xuXG4gICAgbGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgeCBub25lXG4gICAgbGV0IGlzX3NvbWUgeCA9IG5vdCAocGh5c19lcXVhbCB4IG5vbmUpXG5cbiAgICBsZXQgc29tZSAodHlwZSBhKSAoeCA6IGEpIDogYSB0ID1cbiAgICAgIGlmIHBoeXNfc2FtZSB4IG5vbmUgdGhlbiBub25lX3N1YnN0aXR1dGUgZWxzZSBDYW1sLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV91bnNhZmUgKHR5cGUgYSkgKHggOiBhIHQpIDogYSA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHggbm9uZV9zdWJzdGl0dXRlIHRoZW4gQ2FtbC5PYmoubWFnaWMgbm9uZSBlbHNlIENhbWwuT2JqLm1hZ2ljIHhcbiAgICA7O1xuXG4gICAgbGV0IHZhbHVlX2V4biB4ID1cbiAgICAgIGlmIGlzX3NvbWUgeFxuICAgICAgdGhlbiB2YWx1ZV91bnNhZmUgeFxuICAgICAgZWxzZSBmYWlsd2l0aCBcIk9wdGlvbl9hcnJheS5nZXRfc29tZV9leG46IHRoZSBlbGVtZW50IGlzIFtOb25lXVwiXG4gICAgOztcblxuICAgIGxldCBpdGVyX3NvbWUgdCB+ZiA9IGlmIGlzX3NvbWUgdCB0aGVuIGYgKHZhbHVlX3Vuc2FmZSB0KVxuICBlbmRcblxuICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQwXG5cbiAgICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICB8IFNvbWUgeCAtPiBzb21lIHhcbiAgICA7O1xuXG4gICAgbGV0W0BpbmxpbmVdIHRvX29wdGlvbiB4ID0gaWYgaXNfc29tZSB4IHRoZW4gU29tZSAodmFsdWVfdW5zYWZlIHgpIGVsc2UgTm9uZVxuICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX29wdGlvblxuICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX29wdGlvblxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICA9XG4gICAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChPcHRpb24udF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFQxXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxIChPcHRpb24pIChUMSlcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBDaGVhcF9vcHRpb24udCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDAxXyB4X18wMDNfIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9vZl9zZXhwIChDaGVhcF9vcHRpb24udF9vZl9zZXhwIF9vZl9hX18wMDFfKSB4X18wMDNfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDRfIHhfXzAwNV8gLT5cbiAgVW5pZm9ybV9hcnJheS5zZXhwX29mX3QgKENoZWFwX29wdGlvbi5zZXhwX29mX3QgX29mX2FfXzAwNF8pIHhfXzAwNV9cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9zZXhwX2dyYW1tYXIgKENoZWFwX29wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVtcHR5ID0gVW5pZm9ybV9hcnJheS5lbXB0eVxubGV0IGNyZWF0ZSB+bGVuID0gVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbiBDaGVhcF9vcHRpb24ubm9uZVxubGV0IGluaXQgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIChmIGkpKVxubGV0IGluaXRfc29tZSBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5zb21lIChmIGkpKVxubGV0IGxlbmd0aCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoXG5sZXRbQGlubGluZV0gZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBnZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX25vbmUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19zb21lIHQgaSA9IENoZWFwX29wdGlvbi5pc19zb21lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIHgpXG5sZXQgc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgc2V0X25vbmUgdCBpID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5sZXQgc3dhcCB0IGkgaiA9IFVuaWZvcm1fYXJyYXkuc3dhcCB0IGkgalxubGV0IHVuc2FmZV9nZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5cbmxldCB1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSB0IGkgPVxuICBDaGVhcF9vcHRpb24udmFsdWVfdW5zYWZlIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuOztcblxubGV0IHVuc2FmZV9pc19zb21lIHQgaSA9IENoZWFwX29wdGlvbi5pc19zb21lIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIHgpXG5sZXQgdW5zYWZlX3NldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCB1bnNhZmVfc2V0X25vbmUgdCBpID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxuXG5sZXQgY2xlYXIgdCA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICB1bnNhZmVfc2V0X25vbmUgdCBpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBpbnB1dCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggaW5wdXQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IGlucHV0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyIGlucHV0IH5mID0gaXRlcmkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgeCAtPiBmIHgpXG5cbmxldCBmb2xkaSBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiBhY2MgOj0gZiBpICFhY2MgZWxlbSk7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkIGlucHV0IH5pbml0IH5mID0gZm9sZGkgaW5wdXQgfmluaXQgfmY6KGZ1biAoXyA6IGludCkgYWNjIHggLT4gZiBhY2MgeClcblxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5NYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICB0eXBlICdhIGVsdCA9ICdhIG9wdGlvblxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGl0ZXJpID0gYEN1c3RvbSBpdGVyaVxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtYXBpIGlucHV0IH5mID1cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuOihsZW5ndGggaW5wdXQpIGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IHVuc2FmZV9zZXQgb3V0cHV0IGkgKGYgaSBlbGVtKSk7XG4gIG91dHB1dFxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcGkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgZWxlbSAtPiBmIGVsZW0pXG5cbmxldCBtYXBfc29tZSBpbnB1dCB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuIGluXG4gIGxldCAoKSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBvcHQgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgaW5wdXQgaSBpblxuICAgICAgQ2hlYXBfb3B0aW9uLml0ZXJfc29tZSBvcHQgfmY6KGZ1biB4IC0+IHVuc2FmZV9zZXRfc29tZSBvdXRwdXQgaSAoZiB4KSlcbiAgICBkb25lXG4gIGluXG4gIG91dHB1dFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID0gaW5pdCAoQXJyYXkubGVuZ3RoIGFycmF5KSB+ZjooZnVuIGkgLT4gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpKVxuXG5sZXQgb2ZfYXJyYXlfc29tZSBhcnJheSA9XG4gIGluaXRfc29tZSAoQXJyYXkubGVuZ3RoIGFycmF5KSB+ZjooZnVuIGkgLT4gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpKVxuOztcblxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTFfZ2VuZXJpYyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgPSBVbmlmb3JtX2FycmF5LmNvcHlcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmVfY2hlYXBfb3B0aW9uID0gQ2hlYXBfb3B0aW9uXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGFja19pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHNpbWlsYXIgdG8gW0RlcXVlXSBpbiB0aGF0IGl0IHVzZXMgYW4gYXJyYXkgb2YgWydhXSBhbmRcbiAgIGEgbXV0YWJsZSBbaW50XSB0byBpbmRpY2F0ZSB3aGF0IGluIHRoZSBhcnJheSBpcyB1c2VkLiAgV2UgY2hvb3NlIHRvIGltcGxlbWVudCBbU3RhY2tdXG4gICBkaXJlY3RseSByYXRoZXIgdGhhbiBvbiB0b3Agb2YgW0RlcXVlXSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIEUuZy4gYSBzaW1wbGVcbiAgIG1pY3JvYmVuY2htYXJrIHNob3dzIHRoYXQgcHVzaC9wb3AgaXMgYWJvdXQgMjAlIGZhc3Rlci4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGVsdHMgOiAnYSBPcHRpb25fYXJyYXkudFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDAxXyB7IGxlbmd0aCA9IGxlbmd0aF9fMDAzXzsgZWx0cyA9IGVsdHNfXzAwNV8gfSAtPlxuICBsZXQgYm5kc19fMDAyXyA9IFtdIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDZfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMDVfIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDNfIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgaW5cbiAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBzZXhwX29mX3QgPSBgUmVib3VuZF9sYXRlclxubGV0IF8gPSBzZXhwX29mX3RcbmxldCBjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSAoeyBsZW5ndGg7IGVsdHMgfSBhcyB0KSA6IHVuaXQgPVxuICB0cnlcbiAgICBhc3NlcnQgKDAgPD0gbGVuZ3RoICYmIGxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgICBpbnZhcmlhbnRfYSAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBlbHRzIGkpXG4gICAgZG9uZTtcbiAgICAoKiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdW51c2VkIGVsZW1lbnRzIGFyZSB1bnNldCB0byBhdm9pZCBhIHNwYWNlXG4gICAgICAgbGVhay4gKilcbiAgICBmb3IgaSA9IGxlbmd0aCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMgLSAxIGRvXG4gICAgICBhc3NlcnQgKG5vdCAoT3B0aW9uX2FycmF5LmlzX3NvbWUgZWx0cyBpKSlcbiAgICBkb25lXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIlN0YWNrLmludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcImV4blwiLCBleG4gfD4gRXhuLnNleHBfb2ZfdDsgXCJzdGFja1wiLCB0IHw+IHNleHBfb2ZfdF9pbnRlcm5hbCBzZXhwX29mX29wYXF1ZSBdKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHsgbGVuZ3RoID0gMDsgZWx0cyA9IE9wdGlvbl9hcnJheS5lbXB0eSB9XG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuKCogVGhlIG9yZGVyIGluIHdoaWNoIGVsZW1lbnRzIGFyZSB2aXNpdGVkIGhhcyBiZWVuIGNob3NlbiBzbyBhcyB0byBiZSBiYWNrd2FyZHNcbiAgIGNvbXBhdGlibGUgd2l0aCBbQ2FtbC5TdGFja10gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICFyIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfbGlzdCAodHlwZSBhKSAobCA6IGEgbGlzdCkgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxcbiAgdGhlbiBjcmVhdGUgKClcbiAgZWxzZSAoXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjooMiAqIGxlbmd0aCkgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgT3B0aW9uX2FycmF5LnNldF9zb21lIGVsdHMgaSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHsgbGVuZ3RoOyBlbHRzIH0pXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHJlc2l6ZSB0IHNpemUgPVxuICBsZXQgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOnNpemUgaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfnNyYzp0LmVsdHMgfmRzdDphcnIgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46dC5sZW5ndGg7XG4gIHQuZWx0cyA8LSBhcnJcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IG5ld19jYXBhY2l0eSAobGVuZ3RoIHQpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gcmVzaXplIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgcHVzaCB0IGEgPVxuICBpZiB0Lmxlbmd0aCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzIHRoZW4gcmVzaXplIHQgKDIgKiAodC5sZW5ndGggKyAxKSk7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmVsdHMgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IHQubGVuZ3RoIC0gMSBpblxuICBsZXQgcmVzdWx0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGk7XG4gIHQubGVuZ3RoIDwtIGk7XG4gIHJlc3VsdFxuOztcblxubGV0IHBvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnBvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgcG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9ub25lbXB0eSB0KVxubGV0IHBvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSBwb3BfZXJyb3IgZWxzZSBwb3Bfbm9uZW1wdHkgdFxubGV0IHRvcF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgKHQubGVuZ3RoIC0gMSlcbmxldCB0b3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay50b3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHRvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3Bfbm9uZW1wdHkgdClcbmxldCB0b3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgdG9wX2Vycm9yIGVsc2UgdG9wX25vbmVtcHR5IHRcbmxldCBjb3B5IHsgbGVuZ3RoOyBlbHRzIH0gPSB7IGxlbmd0aDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jb3B5IGVsdHMgfVxuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDApXG47O1xuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGYgKHBvcF9ub25lbXB0eSB0KTtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIHB1c2ggdCB4O1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgaXMgbGlmdGVkIG91dCBvZiBbTV0gYmVjYXVzZSBbU291cmNlX2NvZGVfcG9zaXRpb24wXSBleHBvcnRzIFtTdHJpbmcwXVxuICAgYXMgW1N0cmluZ10sIHdoaWNoIGRvZXMgbm90IGV4cG9ydCBhIGhhc2ggZnVuY3Rpb24uICopXG5sZXQgaGFzaF9vdmVycmlkZSB7IENhbWwuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gPVxuICBTdHJpbmcuaGFzaCBwb3NfZm5hbWVcbiAgbHhvciBJbnQuaGFzaCBwb3NfbG51bVxuICBseG9yIEludC5oYXNoIHBvc19ib2xcbiAgbHhvciBJbnQuaGFzaCBwb3NfY251bVxuOztcblxubW9kdWxlIE0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcblxuICBsZXQgaGFzaCA9IGhhc2hfb3ZlcnJpZGVcbmVuZFxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKE0pXG5cbmxldCBvZl9wb3MgKHBvc19mbmFtZSwgcG9zX2xudW0sIHBvc19jbnVtLCBfKSA9XG4gIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2wgPSAwIH1cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ1xuICAgIHwgWmVyb1xuICAgIHwgUG9zXG4gICAgfCBOYW5cbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG4gIGxldCB0X29mX3NleHAgPVxuICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDNfID0gXCJzaWduX29yX25hbi5tbC5ULnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIC0+IE5lZ1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgIHwgTmFuIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5hblwiXG4gICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgeyB1bnR5cGVkID1cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgfVxuICA7O1xuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgKGZ1biBoc3YgYXJnIC0+XG4gICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICB8IE5lZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgfCBOYW4gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAzXG4gICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gIDs7XG5cbiAgbGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jIGFyZyA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICAgIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zOyBOYW4gXSA6IHQgbGlzdClcblxuICBbQEBAZW5kXVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbiAgbGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuU2lnbl9vcl9uYW5cIlxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogVC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogVC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBULnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBULnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogVC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgb2Zfc2lnbiA9IGZ1bmN0aW9uXG4gIHwgU2lnbi5OZWcgLT4gTmVnXG4gIHwgU2lnbi5aZXJvIC0+IFplcm9cbiAgfCBTaWduLlBvcyAtPiBQb3Ncbjs7XG5cbmxldCB0b19zaWduX2V4biA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFNpZ24uTmVnXG4gIHwgWmVybyAtPiBTaWduLlplcm9cbiAgfCBQb3MgLT4gU2lnbi5Qb3NcbiAgfCBOYW4gLT4gaW52YWxpZF9hcmcgXCJCYXNlLlNpZ25fb3JfbmFuLnRvX3NpZ25fZXhuOiBOYW5cIlxuOztcblxubGV0IG9mX2ludCBuID0gb2Zfc2lnbiAoU2lnbi5vZl9pbnQgbilcbmxldCB0b19pbnRfZXhuIHQgPSBTaWduLnRvX2ludCAodG9fc2lnbl9leG4gdClcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG4gIHwgTmFuIC0+IE5hblxuOztcblxubGV0ICggKiApIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTmFuLCBfIHwgXywgTmFuIC0+IE5hblxuICB8IF8gLT4gb2Zfc2lnbiAoU2lnbi4oICogKSAodG9fc2lnbl9leG4gdCkgKHRvX3NpZ25fZXhuIHQnKSlcbjs7XG5cbigqIEluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgYW55IGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXRcbiAgIGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgYWxsIDogJ2EuICdhIGxpc3QgLT4gJ2EgdCBsaXN0ID1cbiAgZnVuIF9hbGxfb2ZfYSAtPlxuICBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICB8IGVudW1lcmF0ZV9fMDAxXyA6OiBsIC0+IG1hcCBsIChJbmNsIGVudW1lcmF0ZV9fMDAxXyA6OiBhY2MpXG4gICAgIGluXG4gICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgKFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgICAgIHwgZW51bWVyYXRlX18wMDJfIDo6IGwgLT4gbWFwIGwgKEV4Y2wgZW51bWVyYXRlX18wMDJfIDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAgICBbIFVuYm91bmRlZCBdKVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMThfKSA6ICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfIHQpIC0+XG4gIGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcIm1heWJlX2JvdW5kLm1sLnRcIiBpblxuICBmdW4gX29mX2FfXzAwM18gLT4gZnVuY3Rpb25cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgX3RhZ19fMDA5XykgOjogc2V4cF9hcmdzX18wMTBfKSBhc1xuICAgICAgX3NleHBfXzAwOF8gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxMF8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTFfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAwM18gYXJnMF9fMDExXyBpblxuICAgICAgICAgSW5jbCByZXMwX18wMTJfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMDlfXG4gICAgICAgICAgIF9zZXhwX18wMDhfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTZfIGluXG4gICAgICAgICBFeGNsIHJlczBfXzAxN19cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSAtPiBVbmJvdW5kZWRcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIDo6IF8pIGFzXG4gICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gKHR5cGUgYV9fMDI0XykgOiAoKGFfXzAyNF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMjRfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICBmdW4gX29mX2FfXzAxOV8gLT4gZnVuY3Rpb25cbiAgICB8IEluY2wgYXJnMF9fMDIwXyAtPlxuICAgICAgbGV0IHJlczBfXzAyMV8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjBfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmNsXCI7IHJlczBfXzAyMV8gXVxuICAgIHwgRXhjbCBhcmcwX18wMjJfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIzXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4Y2xcIjsgcmVzMF9fMDIzXyBdXG4gICAgfCBVbmJvdW5kZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5ib3VuZGVkXCJcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJJbmNsXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJFeGNsXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiVW5ib3VuZGVkXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIHwgQmVsb3dfbG93ZXJfYm91bmRcbiAgfCBJbl9yYW5nZVxuICB8IEFib3ZlX3VwcGVyX2JvdW5kXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoXVxuXG5sZXQgaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAyN18gPSBcIm1heWJlX2JvdW5kLm1sLmludGVydmFsX2NvbXBhcmlzb25cIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIC0+IEJlbG93X2xvd2VyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSAtPiBJbl9yYW5nZVxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYWJvdmVfdXBwZXJfYm91bmRcIiB8IFwiQWJvdmVfdXBwZXJfYm91bmRcIikgLT4gQWJvdmVfdXBwZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYWJvdmVfdXBwZXJfYm91bmRcIiB8IFwiQWJvdmVfdXBwZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgIHwgc2V4cF9fMDI2XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbilcbjs7XG5cbmxldCBzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoZnVuY3Rpb25cbiAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkJlbG93X2xvd2VyX2JvdW5kXCJcbiAgICB8IEluX3JhbmdlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkluX3JhbmdlXCJcbiAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkFib3ZlX3VwcGVyX2JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKGludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbWFyIDogaW50ZXJ2YWxfY29tcGFyaXNvbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkJlbG93X2xvd2VyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJJbl9yYW5nZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiQWJvdmVfdXBwZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmVfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZVxuICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50KVxuOztcblxubGV0IChoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiA6XG4gICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEluX3JhbmdlIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoX2ludGVydmFsX2NvbXBhcmlzb24gOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBJbmNsIChmIGluY2wpXG4gIHwgRXhjbCBleGNsIC0+IEV4Y2wgKGYgZXhjbClcbiAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG47O1xuXG5sZXQgaXNfbG93ZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBpbmNsIGEgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGV4Y2wgYSA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX3VwcGVyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgYSBpbmNsIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBhIGV4Y2wgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgbWF0Y2ggbG93ZXIgd2l0aFxuICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICB8IEluY2wgbG93ZXIgfCBFeGNsIGxvd2VyIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgfCBJbmNsIHVwcGVyIHwgRXhjbCB1cHBlciAtPiBjb21wYXJlIGxvd2VyIHVwcGVyID4gMClcbjs7XG5cbmxldCBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIGlmIGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmVcbiAgdGhlbiBmYWlsd2l0aCBcIk1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuOiBsb3dlciBib3VuZCA+IHVwcGVyIGJvdW5kXCJcbjs7XG5cbmxldCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZTtcbiAgaWYgbm90IChpc19sb3dlcl9ib3VuZCBsb3dlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQmVsb3dfbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBub3QgKGlzX3VwcGVyX2JvdW5kIHVwcGVyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBBYm92ZV91cHBlcl9ib3VuZFxuICBlbHNlIEluX3JhbmdlXG47O1xuXG5sZXQgaW50ZXJ2YWxfY29udGFpbnNfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIG1hdGNoIGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gdHJ1ZVxuICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRHVwbGljYXRlXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAxXyBiX18wMDJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgIHwgYE9rIF9sZWZ0X18wMDNfLCBgT2sgX3JpZ2h0X18wMDRfIC0+IF9jbXBfX2EgX2xlZnRfXzAwM18gX3JpZ2h0X18wMDRfXG4gICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gMFxuICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDVfIGJfXzAwNl8gLT5cbiAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwNV8gYl9fMDA2X1xuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYV9fMDA1XywgYl9fMDA2XyB3aXRoXG4gICAgICAgIHwgYE9rIF9sZWZ0X18wMDdfLCBgT2sgX3JpZ2h0X18wMDhfIC0+IF9jbXBfX2EgX2xlZnRfXzAwN18gX3JpZ2h0X18wMDhfXG4gICAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiB0cnVlXG4gICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDA5XyAtPiBmdW5jdGlvblxuICAgICAgfCBgT2sgdl9fMDEwXyAtPiBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyBfb2ZfYV9fMDA5XyB2X18wMTBfIF1cbiAgICAgIHwgYER1cGxpY2F0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEdXBsaWNhdGVcIlxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9IGNvbXBhcmF0b3I6KCdrZXksICdjbXApIENvbXBhcmF0b3IudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICd6XG5lbmRcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnayAndi4gKCdrIC0+ICdrIC0+IGludCkgLT4gKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fayBfY21wX192IGFfXzAxMV8gYl9fMDEyXyAtPlxuICAgIGxldCB0X18wMTNfLCB0X18wMTRfID0gYV9fMDExXyBpblxuICAgIGxldCB0X18wMTVfLCB0X18wMTZfID0gYl9fMDEyXyBpblxuICAgIG1hdGNoIF9jbXBfX2sgdF9fMDEzXyB0X18wMTVfIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIHRfXzAxNF8gdF9fMDE2X1xuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdF9fMDE0XywgdF9fMDE2XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzAxN18sIGBMZWZ0IF9yaWdodF9fMDE4XyAtPiBfY21wX192IF9sZWZ0X18wMTdfIF9yaWdodF9fMDE4X1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDE5XywgYFJpZ2h0IF9yaWdodF9fMDIwXyAtPiBfY21wX192IF9sZWZ0X18wMTlfIF9yaWdodF9fMDIwX1xuICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMjFfLCBgVW5lcXVhbCBfcmlnaHRfXzAyMl8gLT5cbiAgICAgICAgICBsZXQgdF9fMDIzXywgdF9fMDI0XyA9IF9sZWZ0X18wMjFfIGluXG4gICAgICAgICAgbGV0IHRfXzAyNV8sIHRfXzAyNl8gPSBfcmlnaHRfXzAyMl8gaW5cbiAgICAgICAgICAobWF0Y2ggX2NtcF9fdiB0X18wMjNfIHRfXzAyNV8gd2l0aFxuICAgICAgICAgICB8IDAgLT4gX2NtcF9fdiB0X18wMjRfIHRfXzAyNl9cbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gICAgfCBuIC0+IG5cbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdrICd2LlxuICAgICgnayAtPiAnayAtPiBib29sKSAtPiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgICAgIGxldCB0X18wMjlfLCB0X18wMzBfID0gYV9fMDI3XyBpblxuICAgICAgbGV0IHRfXzAzMV8sIHRfXzAzMl8gPSBiX18wMjhfIGluXG4gICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgIChfY21wX19rIHRfXzAyOV8gdF9fMDMxXylcbiAgICAgICAgKGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIHRfXzAzMF8gdF9fMDMyX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggdF9fMDMwXywgdF9fMDMyXyB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgX2xlZnRfXzAzM18sIGBMZWZ0IF9yaWdodF9fMDM0XyAtPiBfY21wX192IF9sZWZ0X18wMzNfIF9yaWdodF9fMDM0X1xuICAgICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDM1XywgYFJpZ2h0IF9yaWdodF9fMDM2XyAtPiBfY21wX192IF9sZWZ0X18wMzVfIF9yaWdodF9fMDM2X1xuICAgICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMzdfLCBgVW5lcXVhbCBfcmlnaHRfXzAzOF8gLT5cbiAgICAgICAgICAgICBsZXQgdF9fMDM5XywgdF9fMDQwXyA9IF9sZWZ0X18wMzdfIGluXG4gICAgICAgICAgICAgbGV0IHRfXzA0MV8sIHRfXzA0Ml8gPSBfcmlnaHRfXzAzOF8gaW5cbiAgICAgICAgICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApIChfY21wX192IHRfXzAzOV8gdF9fMDQxXykgKF9jbXBfX3YgdF9fMDQwXyB0X18wNDJfKVxuICAgICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSkpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2sgJ3YuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnaylcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDU3XyA9IFwibWFwX2ludGYubWwuU3ltbWV0cmljX2RpZmZfZWxlbWVudC50XCIgaW5cbiAgICBmdW4gX29mX2tfXzA0M18gX29mX3ZfXzA0NF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDY3XzsgYXJnMV9fMDY4XyBdIC0+XG4gICAgICAgIGxldCByZXMwX18wNjlfID0gX29mX2tfXzA0M18gYXJnMF9fMDY3X1xuICAgICAgICBhbmQgcmVzMV9fMDcwXyA9XG4gICAgICAgICAgbGV0IHNleHBfXzA2Nl8gPSBhcmcxX18wNjhfIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBtYXRjaCBzZXhwX18wNjZfIHdpdGhcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gYXMgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyA6OiBzZXhwX2FyZ3NfXzA1MF8pIGFzXG4gICAgICAgICAgICAgIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgYXMgX3RhZ19fMDYzXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjRfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2NV8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjRfIGluXG4gICAgICAgICAgICAgICAgICAgIGBMZWZ0IHJlczBfXzA2NV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYzX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgYXMgX3RhZ19fMDYwXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjFfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2Ml8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjFfIGluXG4gICAgICAgICAgICAgICAgICAgIGBSaWdodCByZXMwX18wNjJfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2MF9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgYXMgX3RhZ19fMDUxXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNThfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1OV8gPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFyZzBfXzA1OF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDUyXzsgYXJnMV9fMDUzXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU0XyA9IF9vZl92X18wNDRfIGFyZzBfXzA1Ml9cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX3ZfXzA0NF8gYXJnMV9fMDUzXyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzMF9fMDU0XywgcmVzMV9fMDU1X1xuICAgICAgICAgICAgICAgICAgICAgIHwgc2V4cF9fMDU2XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXhwX18wNTZfXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGBVbmVxdWFsIHJlczBfXzA1OV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDUxX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICBzZXhwX18wNjZfXG4gICAgICAgIGluXG4gICAgICAgIHJlczBfXzA2OV8sIHJlczFfXzA3MF9cbiAgICAgIHwgc2V4cF9fMDcxXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGVycm9yX3NvdXJjZV9fMDU3XyAyIHNleHBfXzA3MV9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2tfXzA3Ml8gX29mX3ZfXzA3M18gKGFyZzBfXzA4MV8sIGFyZzFfXzA4Ml8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDgzXyA9IF9vZl9rX18wNzJfIGFyZzBfXzA4MV9cbiAgICAgIGFuZCByZXMxX18wODRfID1cbiAgICAgICAgbWF0Y2ggYXJnMV9fMDgyXyB3aXRoXG4gICAgICAgIHwgYExlZnQgdl9fMDc0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX3ZfXzA3M18gdl9fMDc0XyBdXG4gICAgICAgIHwgYFJpZ2h0IHZfXzA3NV8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2Zfdl9fMDczXyB2X18wNzVfIF1cbiAgICAgICAgfCBgVW5lcXVhbCB2X18wNzZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgOyAobGV0IGFyZzBfXzA3N18sIGFyZzFfXzA3OF8gPSB2X18wNzZfIGluXG4gICAgICAgICAgICAgICBsZXQgcmVzMF9fMDc5XyA9IF9vZl92X18wNzNfIGFyZzBfXzA3N19cbiAgICAgICAgICAgICAgIGFuZCByZXMxX18wODBfID0gX29mX3ZfXzA3M18gYXJnMV9fMDc4XyBpblxuICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDc5XzsgcmVzMV9fMDgwXyBdKVxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA4M187IHJlczFfXzA4NF8gXVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2tfc2V4cF9ncmFtbWFyIF8ndl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgTGlzdFxuICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICggXydrX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAsIENvbnNcbiAgICAgICAgICAgICAgICAgICAoIFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAsIEVtcHR5ICkgKSlcbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICB8IGBSaWdodCBvZiAncmlnaHRcbiAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGludClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA4NV8gYl9fMDg2XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzA4NV8gYl9fMDg2X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDg1XywgYl9fMDg2XyB3aXRoXG4gICAgICB8IGBMZWZ0IF9sZWZ0X18wODdfLCBgTGVmdCBfcmlnaHRfXzA4OF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDg3XyBfcmlnaHRfXzA4OF9cbiAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wODlfLCBgUmlnaHQgX3JpZ2h0X18wOTBfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18wODlfIF9yaWdodF9fMDkwX1xuICAgICAgfCBgQm90aCBfbGVmdF9fMDkxXywgYEJvdGggX3JpZ2h0X18wOTJfIC0+XG4gICAgICAgIGxldCB0X18wOTNfLCB0X18wOTRfID0gX2xlZnRfXzA5MV8gaW5cbiAgICAgICAgbGV0IHRfXzA5NV8sIHRfXzA5Nl8gPSBfcmlnaHRfXzA5Ml8gaW5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2xlZnQgdF9fMDkzXyB0X18wOTVfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19yaWdodCB0X18wOTRfIHRfXzA5Nl9cbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA5N18gYl9fMDk4XyAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDk3XyBiX18wOThfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wOTdfLCBiX18wOThfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDk5XywgYExlZnQgX3JpZ2h0X18xMDBfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA5OV8gX3JpZ2h0X18xMDBfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18xMDFfLCBgUmlnaHQgX3JpZ2h0X18xMDJfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18xMDFfIF9yaWdodF9fMTAyX1xuICAgICAgICB8IGBCb3RoIF9sZWZ0X18xMDNfLCBgQm90aCBfcmlnaHRfXzEwNF8gLT5cbiAgICAgICAgICBsZXQgdF9fMTA1XywgdF9fMTA2XyA9IF9sZWZ0X18xMDNfIGluXG4gICAgICAgICAgbGV0IHRfXzEwN18sIHRfXzEwOF8gPSBfcmlnaHRfXzEwNF8gaW5cbiAgICAgICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApIChfY21wX19sZWZ0IHRfXzEwNV8gdF9fMTA3XykgKF9jbXBfX3JpZ2h0IHRfXzEwNl8gdF9fMTA4XylcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9sZWZ0X18xMDlfIF9vZl9yaWdodF9fMTEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCB2X18xMTFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX2xlZnRfXzEwOV8gdl9fMTExXyBdXG4gICAgICB8IGBSaWdodCB2X18xMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl9yaWdodF9fMTEwXyB2X18xMTJfIF1cbiAgICAgIHwgYEJvdGggdl9fMTEzXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIlxuICAgICAgICAgIDsgKGxldCBhcmcwX18xMTRfLCBhcmcxX18xMTVfID0gdl9fMTEzXyBpblxuICAgICAgICAgICAgIGxldCByZXMwX18xMTZfID0gX29mX2xlZnRfXzEwOV8gYXJnMF9fMTE0X1xuICAgICAgICAgICAgIGFuZCByZXMxX18xMTdfID0gX29mX3JpZ2h0X18xMTBfIGFyZzFfXzExNV8gaW5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18xMTZfOyByZXMxX18xMTdfIF0pXG4gICAgICAgICAgXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcCAqKVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnRpbnVlXG4gICAgfCBTdG9wXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIENvbnRpbnVlOyBTdG9wIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ29udGludWUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29udGludWVcIlxuICAgICAgfCBTdG9wIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN0b3BcIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkICopXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRmluaXNoZWRcbiAgICB8IFVuZmluaXNoZWRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgRmluaXNoZWQ7IFVuZmluaXNoZWQgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBGaW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJGaW5pc2hlZFwiXG4gICAgICB8IFVuZmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5maW5pc2hlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnY21wIGNtcFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcblxuICB2YWwgaW52YXJpYW50cyA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gIHZhbCBhZGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBhZGRfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgc2V0XG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgYWRkX211bHRpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHJlbW92ZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IGxpc3QpIG9wdGlvbnNcblxuICB2YWwgY2hhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgdXBkYXRlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaW5kIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBvcHRpb24pIG9wdGlvbnNcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndikgb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBtZW0gOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXRlcl9rZXlzIDogKCdrLCBfLCBfKSB0IC0+IGY6KCdrIGtleSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCd2IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBpbml0OidhXG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2EgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX2tleXNcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOignayBrZXkgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbikgLT4gKCdrLCAndjIsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOigndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0XG4gICAgOiAoJ2ssICdjbXAsICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQpIG9wdGlvbnNcblxuICB2YWwgZXF1YWxcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrIGtleSAqICd2KSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgICAtPiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tYmluZTooa2V5OidrIGtleSAtPiAndiAtPiAndiAtPiAndilcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiBpbml0OidhXG4gICAgICAtPiBmOignYSAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrIGtleSAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IG1pbjonayBrZXlcbiAgICAgIC0+IG1heDonayBrZXlcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCByYW5nZV90b19hbGlzdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIGtleSAtPiBtYXg6J2sga2V5IC0+ICgnayBrZXkgKiAndikgbGlzdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBudGggOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICdrIGtleSAqICd2XG4gIHZhbCByYW5rIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGludCBvcHRpb24pIG9wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnayBrZXksICd2LCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBrZXlcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IF8gdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6IF8gdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0IE9yX2R1cGxpY2F0ZS50XG4gIHZhbCBhZGRfZXhuIDogJ2EgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgdFxuICB2YWwgc2V0IDogJ2EgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgdFxuICB2YWwgYWRkX211bHRpIDogJ2EgbGlzdCB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSBsaXN0IHRcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXkgLT4gJ2EgbGlzdCB0XG4gIHZhbCBmaW5kX211bHRpIDogJ2EgbGlzdCB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+IGtleSAtPiBmOignYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0XG4gIHZhbCB1cGRhdGUgOiAnYSB0IC0+IGtleSAtPiBmOignYSBvcHRpb24gLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+ICdhIHRcbiAgdmFsIG1lbSA6IF8gdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogXyB0IC0+IGY6KGtleSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjIgOiAnYSB0IC0+ICdiIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOignYSwgJ2IpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYWNjIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdiIHRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOignYSwgJ2IpIE1lcmdlX2VsZW1lbnQudCAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICdhIHQgLT4gZjooa2V5IC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgZmlsdGVyX21hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIHBhcnRpdGlvbl9tYXBpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gKCdiLCAnYykgRWl0aGVyLnQpIC0+ICdiIHQgKiAnYyB0XG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogJ2EgdCAtPiBmOignYSAtPiAoJ2IsICdjKSBFaXRoZXIudCkgLT4gJ2IgdCAqICdjIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAnYSBPcl9lcnJvci50IHQgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBrZXlzIDogXyB0IC0+IGtleSBsaXN0XG4gIHZhbCBkYXRhIDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hbGlzdCA6ID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgdmFsIG1lcmdlIDogJ2EgdCAtPiAnYiB0IC0+IGY6KGtleTprZXkgLT4gKCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+ICdjIG9wdGlvbikgLT4gJ2MgdFxuICB2YWwgbWVyZ2Vfc2tld2VkIDogJ3YgdCAtPiAndiB0IC0+IGNvbWJpbmU6KGtleTprZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpIC0+ICd2IHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gKGtleSwgJ2EpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+IChrZXksICdhKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogJ2EgdCAtPiBrZXkgKiAnYVxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogJ2EgdCAtPiBrZXkgKiAnYVxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIHNwbGl0IDogJ2EgdCAtPiBrZXkgLT4gJ2EgdCAqIChrZXkgKiAnYSkgb3B0aW9uICogJ2EgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OidhIHRcbiAgICAtPiB1cHBlcl9wYXJ0OidhIHRcbiAgICAtPiBbIGBPayBvZiAnYSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICdhIHRcbiAgICAtPiBsb3dlcl9ib3VuZDprZXkgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOmtleSBNYXliZV9ib3VuZC50XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICdhIHRcbiAgICAtPiBtaW46a2V5XG4gICAgLT4gbWF4OmtleVxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gJ2JcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAnYSB0IC0+IG1pbjprZXkgLT4gbWF4OmtleSAtPiAoa2V5ICogJ2EpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAnYSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+IGtleVxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICdhIHQgLT4gaW50IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogJ2EgdCAtPiBpbnQgLT4ga2V5ICogJ2FcbiAgdmFsIHJhbmsgOiBfIHQgLT4ga2V5IC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAnYSB0IC0+ICdhIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86a2V5XG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzprZXlcbiAgICAtPiAnYSB0XG4gICAgLT4gKGtleSAqICdhKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoa2V5ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICdhIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoa2V5ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiKSB0IE9yX2R1cGxpY2F0ZS50XG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYikgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiKSB0XG4gIHZhbCBzZXQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGFkZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiIGxpc3QpIHRcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSAtPiAoJ2EsICdiIGxpc3QpIHRcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2EgLT4gJ2IgbGlzdFxuICB2YWwgY2hhbmdlIDogKCdhLCAnYikgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gJ2JcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gKCdhLCAnYikgdFxuICB2YWwgbWVtIDogKCdhLCAnYikgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYikgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBmb2xkIDogKCdhLCAnYikgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYykgdFxuICAgIC0+IGluaXQ6J2RcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2QgLT4gJ2QpXG4gICAgLT4gJ2RcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KSAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2EsICdiIE9yX2Vycm9yLnQpIHQgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBib29sXG4gIHZhbCBrZXlzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IpIHQgLT4gJ2IgbGlzdFxuICB2YWwgdG9fYWxpc3QgOiA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdIC0+ICgnYSwgJ2IpIHQgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYykgdFxuICAgIC0+IGY6KGtleTonYSAtPiAoJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Qgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2QpIHRcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICgnYSwgJ2IpIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhICogJ2JcbiAgdmFsIG1heF9lbHQgOiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAqICdiXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3BsaXQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICgnYSwgJ2IpIHQgKiAoJ2EgKiAnYikgb3B0aW9uICogKCdhLCAnYikgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignYSwgJ2IpIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignYSwgJ2IpIHRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdhLCAnYikgdCAtPiBtaW46J2EgLT4gbWF4OidhIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAnYVxuICAgIC0+ICgnYSAqICdiKSBvcHRpb25cblxuICB2YWwgbnRoIDogKCdhLCAnYikgdCAtPiBpbnQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICdhICogJ2JcbiAgdmFsIHJhbmsgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2KSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuICB2YWwgYWRkIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBzZXQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGFkZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4gJ2EgLT4gJ2IgbGlzdFxuICB2YWwgY2hhbmdlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmluZCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2JcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgbWVtIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8sICdjbXApIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIG1hcGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBmb2xkIDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2RcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2QgLT4gJ2QpXG4gICAgLT4gJ2RcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdhLCAnYiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6ICgnYSwgXywgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiLCBfKSB0IC0+ICdiIGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdhLCAnYiwgXykgdFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiLCBfKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKF8sICdiLCBfKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdhLCAnYiwgXykgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnYSwgJ2IsIF8pIHQgLT4gbWluOidhIC0+IG1heDonYSAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnYSwgJ2IsIF8pIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiLCBfKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogKCdhLCBfLCBfKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnYiwgXykgdFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBzZXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIHJlbW92ZV9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCBmaW5kX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gJ2IgbGlzdFxuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiBmOignYiBvcHRpb24gLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaW5kIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2JcblxuICB2YWwgcmVtb3ZlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgbWVtIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXywgJ2NtcCkgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIG1hcGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBmb2xkIDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBPcl9lcnJvci50LCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYiAtPiAnYiAtPiBpbnQpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGtleXMgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYiwgXykgdCAtPiAnYiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiAoJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Qgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIG1heF9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBmb3JfYWxsIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhICogJ2IpIG9wdGlvbiAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxvd2VyX3BhcnQ6KCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCByYW5nZV90b19hbGlzdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAnYVxuICAgIC0+ICgnYSAqICdiKSBvcHRpb25cblxuICB2YWwgbnRoIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50IC0+ICdhICogJ2JcbiAgdmFsIHJhbmsgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMxIChNIDogQWNjZXNzb3JzMSkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczIgKE0gOiBBY2Nlc3NvcnMyKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMyAoTSA6IEFjY2Vzc29yczMpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnaywgJ3YsICdjbXApIHRcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0cmVlXG4gIHR5cGUgJ2sga2V5XG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnaywgJ2NtcCwgJ2sga2V5IC0+ICd2IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdFxuICAgICAgLT4gZjooJ2sxIGtleSAtPiAnazIga2V5KVxuICAgICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdCAtPiBmOignazEga2V5IC0+ICdrMiBrZXkpIC0+ICgnazIsICd2LCAnY21wMikgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgYXJyYXkgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2ssICdjbXAsIGxlbjppbnQgLT4gZjooaW50IC0+ICdrIGtleSAqICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBsaXN0IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgbGlzdCAtPiBpbml0Oid2MiAtPiBmOigndjIgLT4gJ3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gZjooJ3YgLT4gJ3YgLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXVxuICAgICAgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBTZXF1ZW5jZS50XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooJ3YyIC0+ICd2MSAtPiAndjIpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IGY6KCd2IC0+ICd2IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOihmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBrZXlcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiBfIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGtleSAtPiAnYSAtPiAnYSB0XG4gIHZhbCBtYXBfa2V5cyA6ICd2IHQgLT4gZjooa2V5IC0+IGtleSkgLT4gWyBgT2sgb2YgJ3YgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBtYXBfa2V5c19leG4gOiAndiB0IC0+IGY6KGtleSAtPiBrZXkpIC0+ICd2IHRcbiAgdmFsIG9mX2FsaXN0IDogKGtleSAqICdhKSBsaXN0IC0+IFsgYE9rIG9mICdhIHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3IgOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgbGlzdCB0XG4gIHZhbCBvZl9hbGlzdF9mb2xkIDogKGtleSAqICdhKSBsaXN0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZSA6IChrZXkgKiAnYSkgbGlzdCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKGtleSAqICdhKSBhcnJheSAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoa2V5ICogJ2EpIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4ga2V5ICogJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAnYSB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIGxpc3QgdFxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZCA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2UgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHRcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICBpdGVyaTooZjooa2V5OmtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgJ3YgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4biA6IGl0ZXJpOihmOihrZXk6a2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ3YgdFxuICB2YWwgb2ZfdHJlZSA6ICdhIHRyZWUgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogKF8sIF8pIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdiIC0+ICgnYSwgJ2IpIHRcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2sxLCAndikgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gIHZhbCBtYXBfa2V5c19leG4gOiAoJ2sxLCAndikgdCAtPiBmOignazEgLT4gJ2syKSAtPiAoJ2syLCAndikgdFxuICB2YWwgb2ZfYWxpc3QgOiAoJ2EgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3IgOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCBvZl9hbGlzdF9mb2xkIDogKCdhICogJ2IpIGxpc3QgLT4gaW5pdDonYyAtPiBmOignYyAtPiAnYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlIDogKCdhICogJ2IpIGxpc3QgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSAqICdiKSBhcnJheSAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EgKiAnYikgYXJyYXkgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiAnYSAqICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGkgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9pdGVyaV9leG4gOiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdCkgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2IpIHRyZWUgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBlbXB0eSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCBfLCAnY21wKSB0XG4gIHZhbCBzaW5nbGV0b24gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIC0+ICdiIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhICogJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRyZWVcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMxXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBrZXkgOj0ga2V5XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMlxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMlxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdFxuICAgIDogIChtb2R1bGUgQ29tcGFyZV9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBpbnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKEhhc2guc3RhdGUgLT4gJ3YgLT4gSGFzaC5zdGF0ZSlcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXAgPSBzaWdcbiAgKCoqIFtNYXBdIGlzIGEgZnVuY3Rpb25hbCBkYXRhIHN0cnVjdHVyZSAoYmFsYW5jZWQgYmluYXJ5IHRyZWUpIGltcGxlbWVudGluZyBmaW5pdGUgbWFwc1xuICAgICAgb3ZlciBhIHRvdGFsbHktb3JkZXJlZCBkb21haW4sIGNhbGxlZCBhIFwia2V5XCIuICopXG5cbiAgdHlwZSAoJ2tleSwgKyd2YWx1ZSwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBPcl9kdXBsaWNhdGUgPSBPcl9kdXBsaWNhdGVcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbiAgbW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBVbmZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2VudW1lcmF0ZV9saWIuRW51bWVyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBNYXBzIFtDb250aW51ZV0gdG8gW0ZpbmlzaGVkXSBhbmQgW1N0b3BdIHRvIFtVbmZpbmlzaGVkXS4gKilcbiAgICB2YWwgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0XG5cbiAgICAoKiogTWFwcyBbRmluaXNoZWRdIHRvIFtDb250aW51ZV0gYW5kIFtVbmZpbmlzaGVkXSB0byBbU3RvcF0uICopXG4gICAgdmFsIHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudFxuICBlbmRcblxuICBtb2R1bGUgTWVyZ2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgdmFsIGNvbXBhcmVcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGJvb2xcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgbGVmdCA6ICgnbGVmdCwgXykgdCAtPiAnbGVmdCBvcHRpb25cbiAgICB2YWwgcmlnaHQgOiAoXywgJ3JpZ2h0KSB0IC0+ICdyaWdodCBvcHRpb25cbiAgICB2YWwgbGVmdF92YWx1ZSA6ICgnbGVmdCwgXykgdCAtPiBkZWZhdWx0OidsZWZ0IC0+ICdsZWZ0XG4gICAgdmFsIHJpZ2h0X3ZhbHVlIDogKF8sICdyaWdodCkgdCAtPiBkZWZhdWx0OidyaWdodCAtPiAncmlnaHRcblxuICAgIHZhbCB2YWx1ZXNcbiAgICAgIDogICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBsZWZ0X2RlZmF1bHQ6J2xlZnRcbiAgICAgIC0+IHJpZ2h0X2RlZmF1bHQ6J3JpZ2h0XG4gICAgICAtPiAnbGVmdCAqICdyaWdodFxuICBlbmRcblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0IGlmIHRoZSBpbnZhcmlhbnRzIG9mIHRoZSBpbnRlcm5hbCBBVkwgc2VhcmNoIHRyZWUgaG9sZC4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Yy5cbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogVGhlIGVtcHR5IG1hcC4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQSBtYXAgd2l0aCBvbmUgKGtleSwgZGF0YSkgcGFpci4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LiAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiBUaGUgYWNjdW11bGF0b3IgaXMgcGVyLWtleS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgIyBsZXQgbWFwID0gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImFcIiwgMTsgXCJhXCIsIDEwOyBcImJcIiwgMjsgXCJiXCIsIDIwOyBcImJcIiwgMjAwIF1cbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdDpJbnQuU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgfmY6U2V0LmFkZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfcyBbJXNleHAgKG1hcCA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTs7XG4gICAgICAgICgoYSAoMSAxMCkpIChiICgyIDIwIDIwMCkpKVxuICAgICAgICAtIDogdW5pdCA9ICgpXG4gICAgICBdfVxuICAqKVxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCByZWR1Y2luZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2l0ZXJpIH5pdGVyaV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF0sIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YgdGFraW5nIGEgY29uY3JldGVcbiAgICAgIGRhdGEgc3RydWN0dXJlLCBpdCB0YWtlcyBhbiBpdGVyYXRpb24gZnVuY3Rpb24uICBGb3IgaW5zdGFuY2UsIHRvIGNvbnZlcnQgYSBzdHJpbmcgdGFibGVcbiAgICAgIGludG8gYSBtYXA6IFtvZl9pdGVyaSAobW9kdWxlIFN0cmluZykgfmY6KEhhc2h0YmwuaXRlcmkgdGFibGUpXS4gIEl0IGlzIGZhc3RlciB0aGFuXG4gICAgICBhZGRpbmcgdGhlIGVsZW1lbnRzIG9uZSBieSBvbmUuICopXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIExpa2UgW29mX2l0ZXJpXSBleGNlcHQgdGhhdCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYSBzb3J0ZWQgYXJyYXkgb2Yga2V5LWRhdGEgcGFpcnMuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlIHNvcnRlZFxuICAgICAgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlciksIGFzIGdpdmVuIGJ5IHRoZSByZWxldmFudCBjb21wYXJhdG9yLCBhbmRcbiAgICAgIG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlIGtleXMuIElmIGVpdGhlciBvZiB0aGVzZSBjb25kaXRpb25zIGRvZXMgbm90IGhvbGQsXG4gICAgICBhbiBlcnJvciBpcyByZXR1cm5lZC4gICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2Zfc29ydGVkX2FycmF5XSBleGNlcHQgdGhhdCBpdCByZXR1cm5zIGEgbWFwIHdpdGggYnJva2VuIGludmFyaWFudHMgd2hlbiBhblxuICAgICAgW0Vycm9yXSB3b3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSAqICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5IGMgKFNlcXVlbmNlLnRvX2FycmF5XG4gICAgICBzZXEpXSwgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgYXJyYXkuXG5cbiAgICAgIFRoZSBzZXF1ZW5jZSB3aWxsIGJlIGZvbGRlZCBvdmVyIG9uY2UsIGFuZCB0aGUgYWRkaXRpb25hbCB0aW1lIGNvbXBsZXhpdHkgaXMge2UgTyhuKX0uXG4gICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuXG4gICAgICBJZiB5b3VyIHNlcXVlbmNlIGlzIGluY3JlYXNpbmcsIHVzZSBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZV0uXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9vcl9lcnJvciBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9vcl9lcnJvciBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZXhuIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHBvc3NpYmx5IHJlcGVhdGVkIGtleXMuIFRoZSB2YWx1ZXMgaW5cbiAgICAgIHRoZSBtYXAgZm9yIGEgZ2l2ZW4ga2V5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGRpZCBpbiB0aGUgYXNzb2NpYXRpb25cbiAgICAgIGxpc3QuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9tdWx0aSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgZm9sZGluZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9mb2xkIGMgc2VxIH5pbml0IH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2ZvbGQgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5pbml0IH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX3JlZHVjZSBjIHNlcSB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9yZWR1Y2UgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogVGVzdHMgd2hldGhlciBhIG1hcCBpcyBlbXB0eS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbGVuZ3RoIG1hcF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIFttYXBdLiAgTygxKSwgYnV0IFtUcmVlLmxlbmd0aF0gaXNcbiAgICAgIE8obikuICopXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCB0aGUgc3BlY2lmaWVkIG5ldyBiaW5kaW5nOyBpZiB0aGUga2V5IHdhcyBhbHJlYWR5IGJvdW5kLCBpdHNcbiAgICAgIHByZXZpb3VzIGJpbmRpbmcgZGlzYXBwZWFycy4gKilcbiAgdmFsIHNldCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYWRkIHQgfmtleSB+ZGF0YV0gYWRkcyBhIG5ldyBlbnRyeSB0byBbdF0gbWFwcGluZyBba2V5XSB0byBbZGF0YV0gYW5kIHJldHVybnMgW2BPa11cbiAgICAgIHdpdGggdGhlIG5ldyBtYXAsIG9yIGlmIFtrZXldIGlzIGFscmVhZHkgcHJlc2VudCBpbiBbdF0sIHJldHVybnMgW2BEdXBsaWNhdGVdLiAqKVxuICB2YWwgYWRkIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG5cbiAgdmFsIGFkZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogSWYgW2tleV0gaXMgbm90IHByZXNlbnQgdGhlbiBhZGQgYSBzaW5nbGV0b24gbGlzdCwgb3RoZXJ3aXNlLCBjb25zIGRhdGEgb250byB0aGVcbiAgICAgIGhlYWQgb2YgdGhlIGV4aXN0aW5nIGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIElmIHRoZSBrZXkgaXMgcHJlc2VudCwgdGhlbiByZW1vdmUgaXRzIGhlYWQgZWxlbWVudDsgaWYgdGhlIHJlc3VsdCBpcyBlbXB0eSwgcmVtb3ZlXG4gICAgICB0aGUga2V5LiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCBvciB0aGUgZW1wdHkgbGlzdCBpZiB0aGVyZSBpcyBub25lLiAqKVxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAndiBsaXN0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIHJldHVybnMgYSBuZXcgbWFwIFttXSB0aGF0IGlzIHRoZSBzYW1lIGFzIFt0XSBvbiBhbGwga2V5cyBleGNlcHRcbiAgICAgIGZvciBba2V5XSwgYW5kIHdob3NlIHZhbHVlIGZvciBba2V5XSBpcyBkZWZpbmVkIGJ5IFtmXSwgaS5lLiwgW2ZpbmQgbSBrZXkgPSBmIChmaW5kXG4gICAgICB0IGtleSldLiAqKVxuICB2YWwgY2hhbmdlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cblxuICAoKiogUmV0dXJucyBbU29tZSB2YWx1ZV0gYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgW05vbmVdIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3Ygb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIHJhaXNpbmcgW0NhbWwuTm90X2ZvdW5kXSBvciBbTm90X2ZvdW5kX3NdXG4gICAgICBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndlxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGFueSBiaW5kaW5nIGZvciB0aGUga2V5IGluIHF1ZXN0aW9uIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW21lbSBtYXAga2V5XSB0ZXN0cyB3aGV0aGVyIFttYXBdIGNvbnRhaW5zIGEgYmluZGluZyBmb3IgW2tleV0uICopXG4gIHZhbCBtZW0gOiAoJ2ssIF8sICdjbXApIHQgLT4gJ2sgLT4gYm9vbFxuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooJ2sgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigndiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyB1bnRpbCB0aGUgZmlyc3QgdGltZSBbZl0gcmV0dXJucyBbU3RvcF0uIElmIFtmXSByZXR1cm5zIFtTdG9wXSwgdGhlIGZpbmFsXG4gICAgICByZXN1bHQgaXMgW1VuZmluaXNoZWRdLiBPdGhlcndpc2UsIHRoZSBmaW5hbCByZXN1bHQgaXMgW0ZpbmlzaGVkXS4gKilcbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICAoKiogSXRlcmF0ZXMgdHdvIG1hcHMgc2lkZSBieSBzaWRlLiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIE8oTSArIE4pLiAgSWYgdHdvXG4gICAgICBpbnB1dHMgYXJlIFtbKDAsIGEpOyAoMSwgYSldXSBhbmQgW1soMSwgYik7ICgyLCBiKV1dLCBbZl0gd2lsbCBiZSBjYWxsZWQgd2l0aCBbWygwLFxuICAgICAgYExlZnQgYSk7ICgxLCBgQm90aCAoYSwgYikpOyAoMiwgYFJpZ2h0IGIpXV0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBib3VuZCB2YWx1ZXMgcmVwbGFjZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kIHZhbHVlcy4qKVxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBDb252ZXJ0IG1hcCB3aXRoIGtleXMgb2YgdHlwZSBbJ2syXSB0byBhIG1hcCB3aXRoIGtleXMgb2YgdHlwZSBbJ2syXSB1c2luZyBbZl0uICopXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gICgqKiBMaWtlIFttYXBfa2V5c10sIGJ1dCByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0sIHVudGlsIHRoZSBmaXJzdFxuICAgICAgdGltZSB0aGF0IFtmXSByZXR1cm5zIFtTdG9wIF9dLiBJZiBbZl0gcmV0dXJucyBbU3RvcCBmaW5hbF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJuc1xuICAgICAgaW1tZWRpYXRlbHkgd2l0aCB0aGUgdmFsdWUgW2ZpbmFsXS4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIGFuZCB0aGUgZmluYWxcbiAgICAgIGNhbGwgdG8gW2ZdIHJldHVybnMgW0NvbnRpbnVlIGxhc3RdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgW2ZpbmlzaCBsYXN0XS4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjYyAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGRlY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gICgqKiBGb2xkcyBvdmVyIHR3byBtYXBzIHNpZGUgYnkgc2lkZSwgbGlrZSBbaXRlcjJdLiAqKVxuICB2YWwgZm9sZDJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICdhIC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFtmaWx0ZXJdLCBbZmlsdGVyaV0sIFtmaWx0ZXJfa2V5c10sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJfbWFwaV0gcnVuIGluIE8obiAqIGxnXG4gICAgICBuKSB0aW1lOyB0aGV5IHNpbXBseSBhY2N1bXVsYXRlIGVhY2gga2V5ICYgZGF0YSBwYWlyIHJldGFpbmVkIGJ5IFtmXSBpbnRvIGEgbmV3IG1hcFxuICAgICAgdXNpbmcgW2FkZF0uICopXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ2sgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBib3VuZCB2YWx1ZXMgZmlsdGVyZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kIHZhbHVlcy4gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbikgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhc1xuICAgICAgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwaSB0IH5mXSByZXR1cm5zIHR3byBuZXcgW3Rdcywgd2l0aCBlYWNoIGtleSBpbiBbdF0gYXBwZWFyaW5nIGluXG4gICAgICBleGFjdGx5IG9uZSBvZiB0aGUgcmVzdWx0aW5nIG1hcHMgZGVwZW5kaW5nIG9uIGl0cyBtYXBwaW5nIGluIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqXG4gICAgIHtbXG4gICAgICAgcGFydGl0aW9uaV90ZiB0IH5mXG4gICAgICAgPVxuICAgICAgIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBpZiBmIH5rZXkgfmRhdGFcbiAgICAgICAgIHRoZW4gRmlyc3QgZGF0YVxuICAgICAgICAgZWxzZSBTZWNvbmQgZGF0YSlcbiAgICAgXX0gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFByb2R1Y2VzIFtPa10gb2YgYSBtYXAgaW5jbHVkaW5nIGFsbCBrZXlzIGlmIGFsbCBkYXRhIGlzIFtPa10sIG9yIGFuIFtFcnJvcl1cbiAgICAgIGluY2x1ZGluZyBhbGwgZXJyb3JzIG90aGVyd2lzZS4gKilcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBSZXR1cm5zIGEgdG90YWwgb3JkZXJpbmcgYmV0d2VlbiBtYXBzLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSB0b3RhbCBvcmRlcmluZyB1c2VkXG4gICAgICB0byBjb21wYXJlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGVxdWFsIGtleXMgaW4gdGhlIHR3byBtYXBzLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBtYXBzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIG0pLmNvbXBhcmVdIG9mIHRoZSBtYXAgW21dIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2sgSGFzaC5mb2xkZXIgLT4gJ3YgSGFzaC5mb2xkZXIgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgY21wIG0xIG0yXSB0ZXN0cyB3aGV0aGVyIHRoZSBtYXBzIFttMV0gYW5kIFttMl0gYXJlIGVxdWFsLCB0aGF0IGlzLCBjb250YWluXG4gICAgICB0aGUgc2FtZSBrZXlzIGFuZCBhc3NvY2lhdGUgZWFjaCBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gIFtjbXBdIGlzIHRoZSBlcXVhbGl0eVxuICAgICAgcHJlZGljYXRlIHVzZWQgdG8gY29tcGFyZSB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5cy4gKilcbiAgdmFsIGVxdWFsIDogKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBrZXlzIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGxpc3RcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGRhdGEgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gICgqKiBDcmVhdGVzIGFuIGFzc29jaWF0aW9uIGxpc3QgZnJvbSB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdICgqKiBkZWZhdWx0IGlzIFtgSW5jcmVhc2luZ10gKilcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogezIgQWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIG1hcHN9ICopXG5cbiAgKCoqIE1lcmdlcyB0d28gbWFwcy4gVGhlIHJ1bnRpbWUgaXMgTyhsZW5ndGgodDEpICsgbGVuZ3RoKHQyKSkuIFlvdSBzaG91bGRuJ3QgdXNlIHRoaXNcbiAgICAgIGZ1bmN0aW9uIHRvIG1lcmdlIGEgbGlzdCBvZiBtYXBzOyBjb25zaWRlciB1c2luZyBbbWVyZ2Vfc2tld2VkXSBpbnN0ZWFkLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgLT4gKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogQSBzcGVjaWFsIGNhc2Ugb2YgW21lcmdlXSwgW21lcmdlX3NrZXdlZCB0MSB0Ml0gaXMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlXG4gICAgICBiaW5kaW5ncyBvZiBbdDFdIGFuZCBbdDJdLiBCaW5kaW5ncyB0aGF0IGFwcGVhciBpbiBib3RoIFt0MV0gYW5kIFt0Ml0gYXJlXG4gICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIHRoZSBbY29tYmluZV0gZnVuY3Rpb24uIEluIGEgY2FsbFxuICAgICAgW2NvbWJpbmUgfmtleSB2MSB2Ml0sIHRoZSB2YWx1ZSBbdjFdIGNvbWVzIGZyb20gW3QxXSBhbmQgW3YyXSBmcm9tIFt0Ml0uXG5cbiAgICAgIFRoZSBydW50aW1lIG9mIFttZXJnZV9za2V3ZWRdIGlzIFtPKG1pbihsMSwgbDIpICogbG9nKG1heChsMSwgbDIpKSldLCB3aGVyZSBbbDFdIGlzXG4gICAgICB0aGUgbGVuZ3RoIG9mIFt0MV0gYW5kIFtsMl0gdGhlIGxlbmd0aCBvZiBbdDJdLiBUaGlzIGlzIGxpa2VseSB0byBiZSBmYXN0ZXIgdGhhblxuICAgICAgW21lcmdlXSB3aGVuIG9uZSBvZiB0aGUgbWFwcyBpcyBhIGxvdCBzbWFsbGVyLCBvciB3aGVuIHlvdSBtZXJnZSBhIGxpc3Qgb2YgbWFwcy4gKilcbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgICA6ICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gICgqKiBbc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIHJldHVybnMgYSBsaXN0IG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLlxuICAgICAgSXQgaXMgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnRcbiAgICAgIG9mIHN0cnVjdHVyZS4gVGhlIGtleXMgaW4gdGhlIG91dHB1dCBzZXF1ZW5jZSB3aWxsIGJlIGluIHNvcnRlZCBvcmRlci5cblxuICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IFtkYXRhX2VxdWFsXSBpcyBhdCBsZWFzdCBhcyBlcXVhdGluZyBhcyBwaHlzaWNhbCBlcXVhbGl0eTogdGhhdFxuICAgICAgW3BoeXNfZXF1YWwgeCB5XSBpbXBsaWVzIFtkYXRhX2VxdWFsIHggeV0uIE90aGVyd2lzZSwgW3N5bW1ldHJpY19kaWZmXSBtYXkgYmVoYXZlIGluXG4gICAgICB1bmV4cGVjdGVkIHdheXMuIEZvciBleGFtcGxlLCB3aXRoIFt+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiBmYWxzZSldIGl0IGlzIE5PVFxuICAgICAgbmVjZXNzYXJpbHkgdGhlIGNhc2UgdGhlIHJlc3VsdGluZyBjaGFuZ2Ugc2VxdWVuY2Ugd2lsbCBjb250YWluIGFuIGVsZW1lbnRcbiAgICAgIFsoaywgYFVuZXF1YWwgXyldIGZvciBldmVyeSBrZXkgW2tdIHNoYXJlZCBieSBib3RoIG1hcHMuXG5cbiAgICAgIFdhcm5pbmc6IEZsb2F0IGVxdWFsaXR5IHZpb2xhdGVzIHRoaXMgcHJvcGVydHkhIFtwaHlzX2VxdWFsIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzXG4gICAgICB0cnVlLCBidXQgW0Zsb2F0Lig9KSBGbG9hdC5uYW4gRmxvYXQubmFuXSBpcyBmYWxzZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSBmb2xkcyBhY3Jvc3MgYW4gaW1wbGljaXQgc2VxdWVuY2Ugb2YgY2hhbmdlc1xuICAgICAgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLCBpbiBzb3J0ZWQgb3JkZXIgYnkga2V5cy4gRXF1aXZhbGVudCB0b1xuICAgICAgW1NlcXVlbmNlLmZvbGQgKHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsKV0sIGFuZCBtb3JlIGVmZmljaWVudC4gKilcbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KCdhIC0+ICgnaywgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbbWluX2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWluaW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFttYXhfZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXhpbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBbbWFwXSBpcyBlbXB0eS4gKilcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogVGhlc2UgZnVuY3Rpb25zIGhhdmUgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHNpbWlsYXIgZnVuY3Rpb25zIGluIFtMaXN0XS4gKilcblxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBpbnRcblxuXG4gICgqKiBbc3BsaXQgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tleV0sIHRoZSBtYXBwaW5nIG9mIFtrZXldIGlmXG4gICAgICBhbnksIGFuZCBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBba2V5XS5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBvdXRwdXQgbWFwcy4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZVxuICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1hcHMuICopXG4gIHZhbCBzcGxpdFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0XSByZXR1cm5zIFtgT2sgbWFwXSB3aGVyZSBbbWFwXSBjb250YWlucyBhbGwgdGhlXG4gICAgICBbKGtleSwgdmFsdWUpXSBwYWlycyBmcm9tIHRoZSB0d28gaW5wdXQgbWFwcyBpZiBhbGwgdGhlIGtleXMgZnJvbSBbbG93ZXJfcGFydF0gYXJlXG4gICAgICBsZXNzIHRoYW4gYWxsIHRoZSBrZXlzIGZyb20gW3VwcGVyX3BhcnRdLiAgT3RoZXJ3aXNlIGl0IHJldHVybnNcbiAgICAgIFtgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc10uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbikgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgbGFyZ2VyIGlucHV0IG1hcC4gIFRoaXMgY2FuIGJlXG4gICAgICBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIFtNYXAubWVyZ2VdIG9yIHJlcGVhdGVkIFtNYXAuYWRkXS5cblxuICAgICAge1tcbiAgICAgICAgYXNzZXJ0IChtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICB8IGBPayB3aG9sZV9tYXAgLT5cbiAgICAgICAgICAgIE1hcC50b19hbGlzdCB3aG9sZV9tYXBcbiAgICAgICAgICAgID0gTGlzdC5hcHBlbmQgKHRvX2FsaXN0IGxvd2VyX3BhcnQpICh0b19hbGlzdCB1cHBlcl9wYXJ0KVxuICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gdHJ1ZSk7XG4gICAgICBdfSAqKVxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICAoKiogW3N1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZF0gcmV0dXJucyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGUgZW50cmllcyBmcm9tXG4gICAgICBbdF0gd2hvc2Uga2V5cyBsaWUgaW5zaWRlIHRoZSBpbnRlcnZhbCBpbmRpY2F0ZWQgYnkgW35sb3dlcl9ib3VuZF0gYW5kXG4gICAgICBbfnVwcGVyX2JvdW5kXS4gIElmIHRoaXMgaW50ZXJ2YWwgaXMgZW1wdHksIGFuIGVtcHR5IG1hcCBpcyByZXR1cm5lZC5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIG91dHB1dCBtYXAuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGVcbiAgICAgIG91dHB1dCBtYXAuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2ZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mXSBmb2xkcyBbZl0gKHdpdGggaW5pdGlhbCB2YWx1ZSBbfmluaXRdKVxuICAgICAgb3ZlciBhbGwga2V5cyAoYW5kIHRoZWlyIGFzc29jaWF0ZWQgdmFsdWVzKSB0aGF0IGFyZSBpbiB0aGUgcmFuZ2UgW1ttaW4sIG1heF1dXG4gICAgICAoaW5jbHVzaXZlKS4gICopXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBtaW46J2tcbiAgICAtPiBtYXg6J2tcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW3JhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4XSByZXR1cm5zIGFuIGFzc29jaWF0aXZlIGxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdob3NlIGtleXNcbiAgICAgIGxpZSBpbiBbW21pbiwgbWF4XV0gKGluY2x1c2l2ZSksIHdpdGggdGhlIHNtYWxsZXN0IGtleSBiZWluZyBhdCB0aGUgaGVhZCBvZiB0aGVcbiAgICAgIGxpc3QuICopXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIC0+IG1heDonayAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiBbY2xvc2VzdF9rZXkgdCBkaXIga10gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF0gd2l0aCBba2V5XSBjbG9zZXN0IHRvXG4gICAgICBba10gdGhhdCBzYXRpc2ZpZXMgdGhlIGdpdmVuIGluZXF1YWxpdHkgYm91bmQuXG5cbiAgICAgIEZvciBleGFtcGxlLCBbY2xvc2VzdF9rZXkgdCBgTGVzc190aGFuIGtdIHdvdWxkIGJlIHRoZSBwYWlyIHdpdGggdGhlIGNsb3Nlc3Qga2V5IHRvXG4gICAgICBba10gd2hlcmUgW2tleSA8IGtdLlxuXG4gICAgICBbdG9fc2VxdWVuY2VdIGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgc2FtZSByZXN1bHRzIGFzIFtjbG9zZXN0X2tleV0uICBJdCBpcyBsZXNzXG4gICAgICBlZmZpY2llbnQgZm9yIGluZGl2aWR1YWwgbG9va3VwcyBidXQgbW9yZSBlZmZpY2llbnQgZm9yIGZpbmRpbmcgbWFueSBlbGVtZW50cyBzdGFydGluZ1xuICAgICAgYXQgc29tZSB2YWx1ZS4gKilcbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAna1xuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW250aCB0IG5dIGZpbmRzIHRoZSAoa2V5LCB2YWx1ZSkgcGFpciBvZiByYW5rIG4gKGkuZS4sIHN1Y2ggdGhhdCB0aGVyZSBhcmUgZXhhY3RseSBuXG4gICAgICBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZm91bmQga2V5KSwgaWYgb25lIGV4aXN0cy4gIE8obG9nKGxlbmd0aCB0KSArIG4pIHRpbWUuICopXG4gIHZhbCBudGggOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAnayAqICd2XG5cbiAgKCoqIFtyYW5rIHQga10gSWYgW2tdIGlzIGluIFt0XSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrXSBpblxuICAgICAgW3RdLCBhbmQgW05vbmVdIG90aGVyd2lzZS4gKilcbiAgdmFsIHJhbmsgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGludCBvcHRpb25cblxuXG5cbiAgKCoqIFt0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRdXG4gICAgICBnaXZlcyBhIHNlcXVlbmNlIG9mIGtleS12YWx1ZSBwYWlycyBiZXR3ZWVuIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gaW5jbHVzaXZlLCBwcmVzZW50ZWQgaW4gW29yZGVyXS4gIElmXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID4ga2V5c19sZXNzX29yX2VxdWFsX3RvXSwgdGhlIHNlcXVlbmNlIGlzXG4gICAgICBlbXB0eS5cblxuICAgICAgV2hlbiBuZWl0aGVyIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIG5vciBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhcmVcbiAgICAgIHByb3ZpZGVkLCB0aGUgY29zdCBpcyBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgdG8gcHJvZHVjZVxuICAgICAgZWFjaCBlbGVtZW50LiBJZiBlaXRoZXIgaXMgcHJvdmlkZWQgKGFuZCBpcyB1c2VkIGJ5IHRoZSBvcmRlciBwYXJhbWV0ZXJcbiAgICAgIHByb3ZpZGVkKSwgdGhlbiB0aGUgdGhlIGNvc3QgaXMgTyhuKSB1cCBmcm9udCwgYW5kIGFtb3J0aXplZCBPKDEpIHRvXG4gICAgICBwcm9kdWNlIGVhY2ggZWxlbWVudC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5ICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzona1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF1cbiAgICAgIHNwZWNpZmllZCBieSBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBvbiB0aGUgYm91bmRhcnkgb2YgdGhlXG4gICAgICBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZVxuICAgICAgbGVmdCBzZWdtZW50LCB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuXG4gICAgICBJdCByZXR1cm5zIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gWyBgTGFzdF9vbl9sZWZ0IHwgYEZpcnN0X29uX3JpZ2h0IF1cbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXSB0YWtlcyBhIFtjb21wYXJlXSBmdW5jdGlvbiB0aGF0IGRpdmlkZXMgW3RdIGludG8gdGhyZWVcbiAgICAgIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHMgd2l0aCByZXNwZWN0IHRvIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF06XG5cbiAgICAgIHt2XG4gICAgICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgfCBJbl9yYW5nZSB8IEFib3ZlX3VwcGVyX2JvdW5kIHxcbiAgICAgIHZ9XG5cbiAgICAgIGFuZCByZXR1cm5zIGEgbWFwIG9mIHRoZSBbSW5fcmFuZ2VdIHNlZ21lbnQuXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbSArIG4pIHdoZXJlIFttXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBtYXAgYW5kIFtuXSBpcyB0aGVcbiAgICAgIGxlbmd0aCBvZiB0aGUgb3V0cHV0LiBUaGUgbGluZWFyIHRlcm0gaW4gW25dIGlzIHRvIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LlxuXG4gICAgICBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgW2NvbXBhcmVdIGRvZXMgbm90IHNlZ21lbnQgW3RdIGFzIHNob3duIGFib3ZlLCBvciBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgaXRzIGlucHV0cy4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSBpbnQgTWFwLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gKFN0cmluZy50LCBpbnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IE1hcC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBbU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzXVxuICAgICAgLS0gaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS5cblxuICAgICAgSW4gYWRkaXRpb24sIHdoZW4gdXNpbmcgW0BAZGVyaXZpbmddLCB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBrZXkgbW9kdWxlIGFyZSBvbmx5XG4gICAgICB0aG9zZSBuZWVkZWQgdG8gc2F0aXNmeSB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRlcml2ZSBvbiB0aGUgbWFwIGl0c2VsZi4gU2F5IHlvdVxuICAgICAgd3JpdGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgdCA9IGludCBNYXAuTShYKS50IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBdfVxuXG4gICAgICB0aGVuIHRoaXMgd2lsbCBiZSB3ZWxsIHR5cGVkIGV4YWN0bHkgaWYgW1hdIGNvbnRhaW5zIGF0IGxlYXN0OlxuICAgICAgLSBhIHR5cGUgW3RdIHdpdGggbm8gcGFyYW1ldGVyc1xuICAgICAgLSBhIGNvbXBhcmF0b3Igd2l0bmVzc1xuICAgICAgLSBhIFtoYXNoX2ZvbGRfdF0gZnVuY3Rpb24gd2l0aCB0aGUgcmlnaHQgdHlwZSAqKVxuICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0IDo9ICgna2V5LCAndmFsdWUsICdjbXApIHRcblxuICAoKiogW1VzaW5nX2NvbXBhcmF0b3JdIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtNYXBdLCBleGNlcHQgdGhlXG4gICAgICBmdW5jdGlvbnMgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudF0sIHdoZXJlYXMgdGhlIGZ1bmN0aW9ucyBhdCB0aGVcbiAgICAgIHRvcGxldmVsIG9mIFtNYXBdIHRha2UgYSBbKCdrLCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICsndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCsnaywgKyd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8sIF8pIHRcblxuICAgICAgKCoqIFtCdWlsZF9pbmNyZWFzaW5nXSBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBtYXAgaW5jcmVtZW50YWxseSBmcm9tIGFcbiAgICAgICAgICBzZXF1ZW5jZSB0aGF0IGlzIGtub3duIHRvIGJlIGluY3JlYXNpbmcuXG5cbiAgICAgICAgICBUaGUgdG90YWwgdGltZSBjb21wbGV4aXR5IG9mIGNvbnN0cnVjdGluZyBhIG1hcCB0aGlzIHdheSBpcyBPKG4pLCB3aGljaCBpcyBtb3JlXG4gICAgICAgICAgZWZmaWNpZW50IHRoYW4gdXNpbmcgW01hcC5hZGRdIGJ5IGEgbG9nYXJpdGhtaWMgZmFjdG9yLlxuXG4gICAgICAgICAgVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBkdWFsIG9mIFt0b19zZXF1ZW5jZV0sIGJ1dCB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgYW4gZXF1YWxseSBuZWF0IGlkaW9tIGZvciB0aGUgZHVhbHMgb2Ygc2VxdWVuY2VzIChbb2Zfc2VxdWVuY2VdIGlzIG11Y2ggbGVzc1xuICAgICAgICAgIGdlbmVyYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgc2VxdWVuY2UgdG8gYmUgcHJvZHVjZWQgYXN5bmNocm9ub3VzbHkpLiAqKVxuICAgICAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB0eXBlICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgdmFsIGVtcHR5IDogKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IG9mIFthZGRfZXhuXSBpcyBhbW9ydGl6ZWQgY29uc3RhbnQtdGltZSAoaWYgW3RdIGlzIHVzZWRcbiAgICAgICAgICAgIGxpbmVhcmx5KSwgd2l0aCBhIHdvcnN0LWNhc2UgTyhsb2cobikpIHRpbWUuICopXG4gICAgICAgIHZhbCBhZGRfZXhuXG4gICAgICAgICAgOiAgKCdrLCAndiwgJ3cpIHRcbiAgICAgICAgICAtPiBjb21wYXJhdG9yOignaywgJ3cpIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+IGtleTona1xuICAgICAgICAgIC0+IGRhdGE6J3ZcbiAgICAgICAgICAtPiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgaXMgTyhsb2cobikpLiAqKVxuICAgICAgICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICd3KSB0IC0+ICgnaywgJ3YsICd3KSB0cmVlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdFxuICAgICAgOiAgJ2sgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICd2IEhhc2guZm9sZGVyXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgICAoKiogVG8gZ2V0IGFyb3VuZCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24sIGFwcGx5IHRoZSBmdW5jdG9yIGFuZCBpbmNsdWRlIGl0LiBZb3VcbiAgICAgICAgY2FuIHNlZSBhbiBleGFtcGxlIG9mIHRoaXMgaW4gdGhlIFtQb2x5XSBzdWJtb2R1bGUgYmVsb3cuICopXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gICgqKiBBIHBvbHltb3JwaGljIE1hcC4gKilcbiAgbW9kdWxlIFBvbHkgOlxuICAgIFNfcG9seVxuICAgIHdpdGggdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdCA9ICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICAgYW5kIHR5cGUgKCdrZXksICsndmFsdWUpIHRyZWUgPVxuICAgICAgICAgICAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgKCoqIENyZWF0ZSBhIG1hcCBmcm9tIGEgdHJlZSB1c2luZyB0aGUgZ2l2ZW4gY29tcGFyYXRvci4gKilcbiAgdmFsIG9mX3RyZWVcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogRXh0cmFjdCBhIHRyZWUgZnJvbSBhIG1hcC4gKilcbiAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG5cblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW01hcF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBBY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBBY2Nlc3NvcnMyXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBBY2Nlc3NvcnMzXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBDcmVhdG9yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gQ3JlYXRvcnMyXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgPSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMlxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9XG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwX2ludGYuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwX2ludGYuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBNYXBfaW50Zi5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5HZW5lcmljX3BoYW50b21cblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gICgqKiBUaGUgW29wdGlvbnNdIHR5cGUgaXMgdXNlZCB0byBtYWtlIFtBY2Nlc3NvcnNfZ2VuZXJpY10gZmxleGlibGUgYXMgdG8gd2hldGhlciBhXG4gICAgICBjb21wYXJhdG9yIGlzIHJlcXVpcmVkIHRvIGJlIHBhc3NlZCB0byBjZXJ0YWluIGZ1bmN0aW9ucy4gKilcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG5cbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuXG4gICgqKiBvdmVycmlkZSBbQ29udGFpbmVyXSdzIFttZW1dICopXG4gIHZhbCBtZW0gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gYm9vbCkgb3B0aW9uc1xuXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIGludGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSBlbHQsICdhIGVsdCkgRWl0aGVyLnQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50KSBvcHRpb25zXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG5cbiAgdHlwZSAoJ2EsICdjbXApIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgbmFtZWQgLT4gb2ZfOignYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIG5hbWVkIC0+ICgnYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50KSBvcHRpb25zXG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIGVsdCAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidiIC0+IGY6KCdhIGVsdCAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gZjooWyBgTGVmdCBvZiAnYSBlbHQgfCBgUmlnaHQgb2YgJ2EgZWx0IHwgYEJvdGggb2YgJ2EgZWx0ICogJ2EgZWx0IF0gLT4gdW5pdClcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogJ2EgZWx0IG9wdGlvbiAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3QgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAnYSBlbHRcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAnYSBlbHQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdrZXkgLT4gaW50KVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooJ2EgZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSBlbHQsICdhIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMFxuXG4gIHR5cGUgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogdCAtPiBib29sXG4gIHZhbCBtZW0gOiB0IC0+IGVsdCAtPiBib29sXG4gIHZhbCBhZGQgOiB0IC0+IGVsdCAtPiB0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGVsdCAtPiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBpbnRlciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogdCAtPiB0IC0+IChlbHQsIGVsdCkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiB0IC0+IG9mXzp0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6IHQgLT4gdCAtPiBib29sXG5cbiAgdHlwZSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiBuYW1lZCAtPiBvZl86bmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGVxdWFsIDogbmFtZWQgLT4gbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiBlbHQgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiB0IC0+IGluaXQ6J2IgLT4gZjooZWx0IC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogIHRcbiAgICAtPiB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiBlbHQgfCBgUmlnaHQgb2YgZWx0IHwgYEJvdGggb2YgZWx0ICogZWx0IF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlciA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IHQgKiB0XG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogdCAtPiBlbHRcbiAgdmFsIG1heF9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogdCAtPiBlbHRcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6IHQgLT4gZWx0XG4gIHZhbCBzcGxpdCA6IHQgLT4gZWx0IC0+IHQgKiBlbHQgb3B0aW9uICogdFxuICB2YWwgZ3JvdXBfYnkgOiB0IC0+IGVxdWl2OihlbHQgLT4gZWx0IC0+IGJvb2wpIC0+IHQgbGlzdFxuICB2YWwgZmluZF9leG4gOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHRcbiAgdmFsIG50aCA6IHQgLT4gaW50IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHRvX3RyZWUgOiB0IC0+IHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzplbHRcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzplbHRcbiAgICAtPiB0XG4gICAgLT4gZWx0IFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIHRcbiAgICAtPiBjb21wYXJlOihlbHQgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+IGVsdCBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICB0XG4gICAgLT4gc2VnbWVudF9vZjooZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+IHRcbiAgICAtPiB0XG4gICAgLT4gKGVsdCwgZWx0KSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzFcblxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IF8gdCAtPiBib29sXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCB1bmlvbiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpbnRlciA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBkaWZmIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogJ2EgdCAtPiAnYSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgaXNfc3Vic2V0IDogJ2EgdCAtPiBvZl86J2EgdCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gIHR5cGUgJ2EgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogJ2EgbmFtZWQgLT4gb2ZfOidhIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6ICdhIG5hbWVkIC0+ICdhIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGVsZW1lbnRzIDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogJ2EgdCAtPiAnYVxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogJ2EgdCAtPiAnYVxuICB2YWwgc3BsaXQgOiAnYSB0IC0+ICdhIC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gIHZhbCBncm91cF9ieSA6ICdhIHQgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgbGlzdFxuICB2YWwgZmluZF9leG4gOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICdhIHQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIHRvX3RyZWUgOiAnYSB0IC0+ICdhIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgJ2EgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3BoYW50b21faW52YXJpYW50XG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdHlwZSAoJ2EsICdjbXApIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgbmFtZWQgLT4gb2ZfOignYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSBuYW1lZCAtPiAoJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidiIC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzFfcGhhbnRvbV9pbnZhcmlhbnRcblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCByZW1vdmUgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgdW5pb25cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIGludGVyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBkaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdmFsIGlzX3N1YnNldFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBvZl86KCdhLCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBhcmVfZGlzam9pbnRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gKCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYSAtPiAnYWNjdW0gLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICB2YWwgaXRlcjJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gIHZhbCBzcGxpdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBncm91cF9ieVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cblxuICB2YWwgcmVtb3ZlX2luZGV4XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGludFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoTmFtZWQgOiBUMilcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMCAoTSA6IEFjY2Vzc29yczApID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmVsdFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMxIChNIDogQWNjZXNzb3JzMSkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczIgKE0gOiBBY2Nlc3NvcnMyKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG4gIHR5cGUgJ2EgZWx0XG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCwgJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wLCAnYSBlbHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wLCAnYSBlbHQgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCdhLCAnY21wLCBsZW46aW50IC0+IGY6KGludCAtPiAnYSBlbHQpIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXywgJ2EgZWx0IGxpc3QgLT4gJ2EgZWx0IGxpc3QpIG9wdGlvbnNcblxuICAoKiogVGhlIHR5cGVzIG9mIFttYXBdIGFuZCBbZmlsdGVyX21hcF0gYXJlIHN1YnRsZS4gIFRoZSBpbnB1dCBzZXQsIFsoJ2EsIF8pIHNldF0sXG4gICAgICByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyB0YWtlIGEgc2V0IG9mICphbnkqIHR5cGUsIHdpdGggYW55XG4gICAgICBjb21wYXJhdG9yLCB3aGlsZSB0aGUgb3V0cHV0IHNldCwgWygnYiwgJ2NtcCkgdF0sIHJlZmxlY3RzIHRoYXQgdGhlIG91dHB1dCBzZXQgaGFzXG4gICAgICB0aGUgcGFydGljdWxhciBbJ2NtcF0gb2YgdGhlIGNyZWF0aW9uIGZ1bmN0aW9uLiAgVGhlIGNvbXBhcmF0b3IgY2FuIGNvbWUgaW4gb25lIG9mXG4gICAgICB0aHJlZSB3YXlzLCBkZXBlbmRpbmcgb24gd2hpY2ggc2V0IG1vZHVsZSBpcyB1c2VkXG5cbiAgICAgIC0gW1NldC5tYXBdIC0tIGNvbXBhcmF0b3IgY29tZXMgYXMgYW4gYXJndW1lbnRcbiAgICAgIC0gW1NldC5Qb2x5Lm1hcF0gLS0gY29tcGFyYXRvciBpcyBwb2x5bW9ycGhpYyBjb21wYXJpc29uXG4gICAgICAtIFtGb28uU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBpcyBbRm9vLmNvbXBhcmF0b3JdICopXG4gIHZhbCBtYXAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIGVsdCkgLT4gKCdiLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICgnYiwgJ2NtcCwgKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IgZWx0IG9wdGlvbikgLT4gKCdiLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdjbXAsICgnYSBlbHQsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMwID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSB0XG4gIHR5cGUgdHJlZVxuICB0eXBlIGVsdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCB1bmlvbl9saXN0IDogdCBsaXN0IC0+IHRcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6IGVsdCBTZXF1ZW5jZS50IC0+IHRcbiAgdmFsIG9mX2FycmF5IDogZWx0IGFycmF5IC0+IHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6IGVsdCBhcnJheSAtPiB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiBlbHQgYXJyYXkgLT4gdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiBlbHQpIC0+IHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogZWx0IGxpc3QgLT4gZWx0IGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+IGVsdCkgLT4gdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+IGVsdCBvcHRpb24pIC0+IHRcbiAgdmFsIG9mX3RyZWUgOiB0cmVlIC0+IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgdW5pb25fbGlzdCA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICdhIFNlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAnYSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAnYSBhcnJheSAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAnYSBhcnJheSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICB2YWwgbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIG9mX3RyZWUgOiAnYSB0cmVlIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiAnYSkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICB2YWwgbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gKCdiLCAnY21wKSB0XG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBlbXB0eSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBzaW5nbGV0b24gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb25fbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBtYXBcbiAgICA6ICBjb21wYXJhdG9yOignYiwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCBfKSBzZXRcbiAgICAtPiBmOignYSAtPiAnYilcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdiLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIHNldFxuICAgIC0+IGY6KCdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfdHJlZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMwIChNIDogQ3JlYXRvcnMwKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmVsdFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMwXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgdHJlZSA6PSB0cmVlXG4gICAgd2l0aCB0eXBlIGVsdCA6PSBlbHRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190IDogKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdlbHQsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3QgOiAobW9kdWxlIENvbXBhcmVfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbF9tX190IDogKG1vZHVsZSBFcXVhbF9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnZWx0LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuXG4gIHZhbCBoYXNoX21fX3QgOiAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsIF8pIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gICgqKiBTZXRzIGJhc2VkIG9uIHshQ29tcGFyYXRvci5TfS5cblxuICAgICAgQ3JlYXRvcnMgcmVxdWlyZSBhIGNvbXBhcmF0b3IgYXJndW1lbnQgdG8gYmUgcGFzc2VkIGluLCB3aGVyZWFzIGFjY2Vzc29ycyB1c2UgdGhlXG4gICAgICBjb21wYXJhdG9yIHByb3ZpZGVkIGJ5IHRoZSBpbnB1dCBzZXQuICopXG5cbiAgKCoqIFRoZSB0eXBlIG9mIGEgc2V0LiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQsIGFuZFxuICAgICAgdGhlIHNlY29uZCBpZGVudGlmaWVzIHRoZSBjb21wYXJhdG9yLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGlzIHVzZWQgZm9yIG9yZGVyaW5nIGVsZW1lbnRzIGluIHRoaXMgc2V0LiAgTWFueSBvcGVyYXRpb25zIChlLmcuLCB7IXVuaW9ufSksXG4gICAgICByZXF1aXJlIHRoYXQgdGhleSBiZSBwYXNzZWQgc2V0cyB3aXRoIHRoZSBzYW1lIGVsZW1lbnQgdHlwZSBhbmQgdGhlIHNhbWUgY29tcGFyYXRvclxuICAgICAgdHlwZS4gKilcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2VsdCwgJ2NtcCkgdCA6PSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdHMgaW50ZXJuYWwgaW52YXJpYW50cyBvZiB0aGUgc2V0IGRhdGEgc3RydWN0dXJlLiAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGNcbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogQ3JlYXRlcyBhbiBlbXB0eSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvciB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIHByb3ZpZGVkXG4gICAgICBlbGVtZW50LiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUgc2V0LiBbTygxKV0uICopXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcblxuICAoKiogW2lzX2VtcHR5IHRdIGlzIFt0cnVlXSBpZmYgW3RdIGlzIGVtcHR5LiAgW08oMSldLiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFttZW0gdCBhXSByZXR1cm5zIFt0cnVlXSBpZmYgW2FdIGlzIGluIFt0XS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuXG4gICgqKiBbYWRkIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gYWRkZWQgdG8gW3RdLCBvciByZXR1cm5zIFt0XSBpZiBbbWVtIHQgYV0uXG4gICAgICBbTyhsb2cgbildLiAqKVxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbcmVtb3ZlIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gcmVtb3ZlZCBmcm9tIFt0XSBpZiBbbWVtIHQgYV0sIG9yIHJldHVybnMgW3RdXG4gICAgICBvdGhlcndpc2UuICBbTyhsb2cgbildLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gdDEgdDJdIHJldHVybnMgdGhlIHVuaW9uIG9mIHRoZSB0d28gc2V0cy4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gYyBsaXN0XSByZXR1cm5zIHRoZSB1bmlvbiBvZiBhbGwgdGhlIHNldHMgaW4gW2xpc3RdLiAgVGhlXG4gICAgICBbY29tcGFyYXRvcl0gYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJlIFtsaXN0XSBpcyBlbXB0eS5cbiAgICAgIFtPKG1heChMaXN0Lmxlbmd0aCBsaXN0LCBuIGxvZyBuKSldLCB3aGVyZSBbbl0gaXMgdGhlIHN1bSBvZiBzaXplcyBvZiB0aGUgaW5wdXQgc2V0cy4gKilcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpbnRlciB0MSB0Ml0gY29tcHV0ZXMgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIFt0MV0gYW5kIFt0Ml0uICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtkaWZmIHQxIHQyXSBjb21wdXRlcyB0aGUgc2V0IGRpZmZlcmVuY2UgW3QxIC0gdDJdLCBpLmUuLCB0aGUgc2V0IGNvbnRhaW5pbmcgYWxsXG4gICAgICBlbGVtZW50cyBpbiBbdDFdIHRoYXQgYXJlIG5vdCBpbiBbdDJdLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyXSByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uIEl0IGlzXG4gICAgICBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudCBvZlxuICAgICAgc3RydWN0dXJlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICAoKiogW2NvbXBhcmVfZGlyZWN0IHQxIHQyXSBjb21wYXJlcyB0aGUgc2V0cyBbdDFdIGFuZCBbdDJdLiAgSXQgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRcbiAgICAgIGFzIFtjb21wYXJlXSwgYnV0IHVubGlrZSBjb21wYXJlLCBkb2Vzbid0IHJlcXVpcmUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbiBmb3IgdGhlXG4gICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIHNldC4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgc2V0cyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBzKS5jb21wYXJlXSBvZiB0aGUgc2V0IFtzXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdhIEhhc2guZm9sZGVyIC0+ICgnYSwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiB0aGUgdHdvIHNldHMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cy4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXSAqKVxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2V4aXN0cyB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlcmUgZXhpc3RzIGFuIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGFdLiAgW08obildLFxuICAgICAgYnV0IHJldHVybnMgYXMgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtmIGFdLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogW2Zvcl9hbGwgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIGZvciBhbGwgW2FdIGluIFt0XSwgW2YgYV0uICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzXG4gICAgICBzb29uIGFzIGl0IGZpbmRzIGFuIFthXSBmb3Igd2hpY2ggW25vdCAoZiBhKV0uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogW2NvdW50IHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIFt0cnVlXS5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBbc3VtIHRdIHJldHVybnMgdGhlIHN1bSBvZiBbZiB0XSBmb3IgZWFjaCBbdF0gaW4gdGhlIHNldC5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSAtPiAnc3VtKVxuICAgIC0+ICdzdW1cblxuICAoKiogW2ZpbmQgdCBmXSByZXR1cm5zIGFuIGVsZW1lbnQgb2YgW3RdIGZvciB3aGljaCBbZl0gcmV0dXJucyB0cnVlLCB3aXRoIG5vIGd1YXJhbnRlZSBhc1xuICAgICAgdG8gd2hpY2ggZWxlbWVudCBpcyByZXR1cm5lZC4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlIGVsZW1lbnQgaXNcbiAgICAgIGZvdW5kLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cblxuICAoKiogW2ZpbmRfbWFwIHQgZl0gcmV0dXJucyBbYl0gZm9yIHNvbWUgW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYSA9IFNvbWUgYl0uICBJZiBubyBzdWNoXG4gICAgICBbYV0gZXhpc3RzLCB0aGVuIFtmaW5kXSByZXR1cm5zIFtOb25lXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlXG4gICAgICBlbGVtZW50IGlzIGZvdW5kLiAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICAoKiogTGlrZSBbZmluZF0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuXG4gICgqKiBbbnRoIHQgaV0gcmV0dXJucyB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCBvZiBbdF0sIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZVxuICAgICAgc21hbGxlc3QgZWxlbWVudCBoYXMgW2kgPSAwXS4gIFJldHVybnMgW05vbmVdIGlmIFtpIDwgMF0gb3IgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cblxuICAoKiogW3JlbW92ZV9pbmRleCB0IGldIHJldHVybnMgYSB2ZXJzaW9uIG9mIFt0XSB3aXRoIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IHJlbW92ZWQsXG4gICAgICBpbiBbTyhsb2cgbildIHRpbWUuICBUaGUgc21hbGxlc3QgZWxlbWVudCBoYXMgW2kgPSAwXS4gIFJldHVybnMgW3RdIGlmIFtpIDwgMF0gb3JcbiAgICAgIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyB0cnVlIGlmZiBbdDFdIGlzIGEgc3Vic2V0IG9mIFt0Ml0uICopXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFthcmVfZGlzam9pbnQgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiBbaXNfZW1wdHkgKGludGVyIHQxIHQyKV0sIGJ1dCBpcyBtb3JlXG4gICAgICBlZmZpY2llbnQuICopXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW05hbWVkXSBhbGxvd3MgdGhlIHZhbGlkYXRpb24gb2Ygc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzIGJldHdlZW4gc2V0cy4gIEFcbiAgICAgIFtOYW1lZC50XSBpcyBhIHJlY29yZCBvZiBhIHNldCBhbmQgYSBuYW1lLCB3aGVyZSB0aGUgbmFtZSBpcyB1c2VkIGluIGVycm9yIG1lc3NhZ2VzLFxuICAgICAgYW5kIFtOYW1lZC5pc19zdWJzZXRdIGFuZCBbTmFtZWQuZXF1YWxdIHZhbGlkYXRlIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwc1xuICAgICAgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgZXJyb3IgbWVzc2FnZSBmb3IsIGUuZy4sXG4gICAgICB7W1xuICAgICAgICBOYW1lZC5pc19zdWJzZXQgeyBzZXQgPSBzZXQxOyBuYW1lID0gXCJzZXQxXCIgfSB+b2ZfOntzZXQgPSBzZXQyOyBuYW1lID0gXCJzZXQyXCIgfVxuICAgICAgXX1cblxuICAgICAgbG9va3MgbGlrZVxuICAgICAge3ZcbiAgICAgICAgKFwic2V0MSBpcyBub3QgYSBzdWJzZXQgb2Ygc2V0MlwiIChpbnZhbGlkX2VsZW1lbnRzICguLi5lbGVtZW50cyBvZiBzZXQxIC0gc2V0Mi4uLikpKVxuICAgICB2fVxuXG4gICAgICBzbyBbbmFtZV0gc2hvdWxkIGJlIGEgbm91biBwaHJhc2UgdGhhdCBkb2Vzbid0IHNvdW5kIGF3a3dhcmQgaW4gdGhlIGFib3ZlIGVycm9yXG4gICAgICBtZXNzYWdlLiAgRXZlbiB0aG91Z2ggaXQgYWRkcyB2ZXJib3NpdHksIGNob29zaW5nIFtuYW1lXXMgdGhhdCBzdGFydCB3aXRoIHRoZSBwaHJhc2VcbiAgICAgIFwidGhlIHNldCBvZlwiIG9mdGVuIG1ha2VzIHRoZSBlcnJvciBtZXNzYWdlIHNvdW5kIG1vcmUgbmF0dXJhbC5cbiAgKilcbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgc2V0IDogKCdhLCAnY21wKSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgW09rICgpXSBpZiBbdDFdIGlzIGEgc3Vic2V0IG9mIFt0Ml0gYW5kIGFcbiAgICAgICAgaHVtYW4tcmVhZGFibGUgZXJyb3Igb3RoZXJ3aXNlLiAgKilcbiAgICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBlcXVhbCB0byBbdDJdIGFuZCBhIGh1bWFuLXJlYWRhYmxlXG4gICAgICAgIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgKCoqIFRoZSBsaXN0IG9yIGFycmF5IGdpdmVuIHRvIFtvZl9saXN0XSBhbmQgW29mX2FycmF5XSBuZWVkIG5vdCBiZSBzb3J0ZWQuICopXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3RvX2xpc3RdIGFuZCBbdG9fYXJyYXldIHByb2R1Y2Ugc2VxdWVuY2VzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgY29tcGFyYXRvci4gKilcbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBDcmVhdGUgc2V0IGZyb20gc29ydGVkIGFycmF5LiAgVGhlIGlucHV0IG11c3QgYmUgc29ydGVkIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yXG4gICAgICBkZXNjZW5kaW5nIG9yZGVyIGFzIGdpdmVuIGJ5IHRoZSBjb21wYXJhdG9yKSBhbmQgY29udGFpbiBubyBkdXBsaWNhdGVzLCBvdGhlcndpc2UgdGhlXG4gICAgICByZXN1bHQgaXMgYW4gZXJyb3IuICBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIFtPKG4pXS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogU2ltaWxhciB0byBbb2Zfc29ydGVkX2FycmF5XSwgYnV0IHdpdGhvdXQgY2hlY2tpbmcgdGhlIGlucHV0IGFycmF5LiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3RhYmxlX2RlZHVwX2xpc3RdIGlzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIFtMaXN0XSBtb2R1bGUgYmVjYXVzZSB0aGVcbiAgICAgIGltcGxlbWVudGF0aW9uIHJlbGllcyBjcnVjaWFsbHkgb24gc2V0cywgYW5kIGJlY2F1c2UgZG9pbmcgc28gYWxsb3dzIG9uZSB0byBhdm9pZCB1c2VzXG4gICAgICBvZiBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGZ1bmN0b3IgYXQgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25cbiAgICAgIG9mIFtDb21wYXJhdG9yXSBhbmQgdXNpbmcgdGhlIHJlc3VsdGluZyBbc3RhYmxlX2RlZHVwX2xpc3RdLiAqKVxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFttYXAgYyB0IH5mXSByZXR1cm5zIGEgbmV3IHNldCBjcmVhdGVkIGJ5IGFwcGx5aW5nIFtmXSB0byBldmVyeSBlbGVtZW50IGluXG4gICAgICBbdF0uICBUaGUgcmV0dXJuZWQgc2V0IGlzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBbY29tcGFyYXRvcl0uICBbTyhuIGxvZyBuKV0uICopXG4gIHZhbCBtYXAgOiAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdjbXApIHRcblxuICAoKiogTGlrZSB7IW1hcH0sIGV4Y2VwdCBlbGVtZW50cyBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW05vbmVdIHdpbGwgYmUgZHJvcHBlZC4gICopXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgdGhlIHN1YnNldCBvZiBbdF0gZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gIFtPKG4gbG9nXG4gICAgICBuKV0uICopXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0LiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QsIHNob3J0IGNpcmN1aXRpbmcgdGhlIGZvbGQgaWYgW2YgYWNjdW0geF0gaXMgYW4gW0Vycm9yIF9dICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuXG4gICgqKiBMaWtlIHshZm9sZH0sIGV4Y2VwdCB0aGF0IGl0IGdvZXMgZnJvbSB0aGUgbGFyZ2VzdCB0byB0aGUgc21hbGxlc3QgZWxlbWVudC4gKilcbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2EgLT4gJ2FjY3VtIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtpdGVyIHQgfmZdIGNhbGxzIFtmXSBvbiBldmVyeSBlbGVtZW50IG9mIFt0XSwgZ29pbmcgaW4gb3JkZXIgZnJvbSB0aGUgc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QuICAqKVxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGUgdHdvIHNldHMgc2lkZSBieSBzaWRlLiAgQ29tcGxleGl0eSBpcyBbTyhtK24pXSB3aGVyZSBbbV0gYW5kIFtuXSBhcmUgdGhlIHNpemVzXG4gICAgICBvZiB0aGUgdHdvIGlucHV0IHNldHMuICBBcyBhbiBleGFtcGxlLCB3aXRoIHRoZSBpbnB1dHMgWzA7IDFdIGFuZCBbMTsgMl0sIFtmXSB3aWxsIGJlXG4gICAgICBjYWxsZWQgd2l0aCBbYExlZnQgMF07IFtgQm90aCAoMSwgMSldOyBhbmQgW2BSaWdodCAyXS4gKilcbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogaWYgW2EsIGIgPSBwYXJ0aXRpb25fdGYgc2V0IH5mXSB0aGVuIFthXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VkIFt0cnVlXSxcbiAgICAgIGFuZCBbYl0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlcyBbZmFsc2VdLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBTYW1lIGFzIHshdG9fbGlzdH0uICopXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWluX2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogUmV0dXJucyB0aGUgbGFyZ2VzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAgKilcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtYXhfZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiByZXR1cm5zIGFuIGFyYml0cmFyeSBlbGVtZW50LCBvciBbTm9uZV0gaWYgdGhlIHNldCBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IWNob29zZX0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogW3NwbGl0IHQgeF0gcHJvZHVjZXMgYSB0cmlwbGUgWyh0MSwgbWF5YmVfeCwgdDIpXSB3aGVyZSBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHNcbiAgICAgIHN0cmljdGx5IGxlc3MgdGhhbiBbeF0sIFttYXliZV94XSBpcyB0aGUgbWVtYmVyIChpZiBhbnkpIG9mIFt0XSB3aGljaCBjb21wYXJlcyBlcXVhbFxuICAgICAgdG8gW3hdLCBhbmQgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGxhcmdlciB0aGFuIFt4XS4gKilcbiAgdmFsIHNwbGl0IDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBpZiBbZXF1aXZdIGlzIGFuIGVxdWl2YWxlbmNlIHByZWRpY2F0ZSwgdGhlbiBbZ3JvdXBfYnkgc2V0IH5lcXVpdl0gcHJvZHVjZXMgYSBsaXN0XG4gICAgICBvZiBlcXVpdmFsZW5jZSBjbGFzc2VzIChpLmUuLCBhIHNldC10aGVvcmV0aWMgcXVvdGllbnQpLiAgRS5nLixcblxuICAgICAge1tcbiAgICAgICAgbGV0IGNoYXJzID0gU2V0Lm9mX2xpc3QgWydBJzsgJ2EnOyAnYic7ICdjJ10gaW5cbiAgICAgICAgbGV0IGVxdWl2IGMgYycgPSBDaGFyLmVxdWFsIChDaGFyLnVwcGVyY2FzZSBjKSAoQ2hhci51cHBlcmNhc2UgYycpIGluXG4gICAgICAgIGdyb3VwX2J5IGNoYXJzIH5lcXVpdlxuICAgICAgXX1cblxuICAgICAgcHJvZHVjZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFtTZXQub2ZfbGlzdCBbJ0EnOydhJ107IFNldC5zaW5nbGV0b24gJ2InOyBTZXQuc2luZ2xldG9uICdjJ11cbiAgICAgIF19XG5cbiAgICAgIFtncm91cF9ieV0gcnVucyBpbiBPKG5eMikgdGltZSwgc28gaWYgeW91IGhhdmUgYSBjb21wYXJpc29uIGZ1bmN0aW9uLCBpdCdzIHVzdWFsbHlcbiAgICAgIG11Y2ggZmFzdGVyIHRvIHVzZSBbU2V0Lm9mX2xpc3RdLiAqKVxuICB2YWwgZ3JvdXBfYnkgOiAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgKCoqIFt0b19zZXF1ZW5jZSB0XSBjb252ZXJ0cyB0aGUgc2V0IFt0XSB0byBhIHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBiZXR3ZWVuXG4gICAgICBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kIFtsZXNzX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUgaW4gdGhlIG9yZGVyIGluZGljYXRlZCBieVxuICAgICAgW29yZGVyXS4gIElmIFtncmVhdGVyX29yX2VxdWFsX3RvID4gbGVzc19vcl9lcXVhbF90b10gdGhlIHNlcXVlbmNlIGlzIGVtcHR5LiAgQ29zdCBpc1xuICAgICAgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIGZvciBlYWNoIGVsZW1lbnQgcHJvZHVjZWQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBlbGVtZW50IGluIFt0XSBzcGVjaWZpZWQgYnlcbiAgICAgIFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2YgdGhlIHNlZ21lbnRzIGFzXG4gICAgICBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBsZWZ0IHNlZ21lbnQsXG4gICAgICB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuICBJdCByZXR1cm5zXG4gICAgICBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gWyBgTGFzdF9vbl9sZWZ0IHwgYEZpcnN0X29uX3JpZ2h0IF1cbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogUHJvZHVjZXMgdGhlIGVsZW1lbnRzIG9mIHRoZSB0d28gc2V0cyBiZXR3ZWVuIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmRcbiAgICAgIFtsZXNzX29yX2VxdWFsX3RvXSBpbiBbb3JkZXJdLCBub3Rpbmcgd2hldGhlciBlYWNoIGVsZW1lbnQgYXBwZWFycyBpbiB0aGUgbGVmdCBzZXQsXG4gICAgICB0aGUgcmlnaHQgc2V0LCBvciBib3RoLiAgSW4gdGhlIGJvdGggY2FzZSwgYm90aCBlbGVtZW50cyBhcmUgcmV0dXJuZWQsIGluIGNhc2UgdGhlXG4gICAgICBjYWxsZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZWxlbWVudHMgdGhhdCBhcmUgZXF1YWwgdG8gdGhlIHNldHMnIGNvbXBhcmF0b3IuICBSdW5zXG4gICAgICBpbiBPKGxlbmd0aCB0ICsgbGVuZ3RoIHQnKS4gKilcbiAgbW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50ID1cbiAgICAgIHwgTGVmdCBvZiAnYVxuICAgICAgfCBSaWdodCBvZiAnYlxuICAgICAgfCBCb3RoIG9mICdhICogJ2JcbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gU2V0Lk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSAoU3RyaW5nLnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIFNldC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbU2V0Lk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFN0cmluZy5zZXhwX29mX2NvbXBhcmF0b3Jfd2l0bmVzcyxcbiAgICAgIGluc3RlYWQgeW91IHdvdWxkIHdhbnQgdG8gcGFzcyB0aGUgY29tcGFyYXRvciBkaXJlY3RseSkuICopXG4gIG1vZHVsZSBNIChFbHQgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgU2V0LiAqKVxuICBtb2R1bGUgUG9seSA6IFNfcG9seSB3aXRoIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAoKiogVXNpbmcgY29tcGFyYXRvciBpcyBhIHNpbWlsYXIgaW50ZXJmYWNlIGFzIHRoZSB0b3BsZXZlbCBvZiBbU2V0XSwgZXhjZXB0IHRoZSBmdW5jdGlvbnNcbiAgICAgIHRha2UgYSBbfmNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudF0gd2hlcmUgdGhlIGZ1bmN0aW9ucyBhdCB0aGUgdG9wbGV2ZWwgb2ZcbiAgICAgIFtTZXRdIHRha2VzIGEgWygnZWx0LCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdlbHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdlbHQsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdlbHQsICdjbXApIHRcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICAoKiogQSBbVHJlZS50XSBjb250YWlucyBqdXN0IHRoZSB0cmVlIGRhdGEgc3RydWN0dXJlIHRoYXQgYSBzZXQgaXMgYmFzZWQgb24sIHdpdGhvdXRcbiAgICAgICAgICBpbmNsdWRpbmcgdGhlIGNvbXBhcmF0b3IuICBBY2NvcmRpbmdseSwgYW55IG9wZXJhdGlvbiBvbiBhIFtUcmVlLnRdIG11c3QgYWxzbyB0YWtlXG4gICAgICAgICAgYXMgYW4gYXJndW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgY29tcGFyYXRvci4gKilcbiAgICAgIHR5cGUgKCdhLCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdlbHQsICdjbXApIHRcblxuICAgICAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICAgICAgeyB0cmVlIDogKCdhLCAnY21wKSB0XG4gICAgICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICAgICAgfVxuXG4gICAgICAgIHZhbCBpc19zdWJzZXRcbiAgICAgICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gb2ZfOignYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICAgIHZhbCBlcXVhbFxuICAgICAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50XG4gICAgICAgIHdpdGggbW9kdWxlIE5hbWVkIDo9IE5hbWVkXG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8pIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczJcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2VsdCBIYXNoLmZvbGRlciAtPiAoJ2VsdCwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtTZXRdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMwID0gQWNjZXNzb3JzMFxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gQWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gQWNjZXNzb3JzMlxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMwID0gQ3JlYXRvcnMwXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IENyZWF0b3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBDcmVhdG9yczJcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciA9IENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczAgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXRfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRW1wdHlcbiAgICAoKiAoTGVhZiB4KSBpcyB0aGUgc2FtZSBhcyAoTm9kZSAoRW1wdHksIHgsIEVtcHR5LCAxLCAxKSkgYnV0IHVzZXMgbGVzcyBzcGFjZS4gKilcbiAgICB8IExlYWYgb2YgJ2FcbiAgICAoKiBmaXJzdCBpbnQgaXMgaGVpZ2h0LCBzZWNvbmQgaXMgc3ViLXRyZWUgc2l6ZSAqKVxuICAgIHwgTm9kZSBvZiAnYSB0ICogJ2EgKiAnYSB0ICogaW50ICogaW50XG5cbiAgdHlwZSAnYSB0cmVlID0gJ2EgdFxuXG4gICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlIGNoaWxkcmVuIGRpZmZlciBieVxuICAgICBhdCBtb3N0IDIuICopXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2ID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9lbHQgbG93ZXIgdiA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2VsdCB2IHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiB2IC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgaCwgbikgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIG4gPSBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgdikgY29tcGFyZV9lbHQgbFxuICAgICAgICAmJiBsb29wIChTb21lIHYpIHVwcGVyIGNvbXBhcmVfZWx0IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2VsdCAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2VsdCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuICA7O1xuXG4gICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICBpZiBoID0gMVxuICAgIHRoZW4gTGVhZiB2XG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5TZXQgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGsgPSBmIGkgaW5cbiAgICAgICAgTGVhZiBrXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayBFbXB0eVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IgPSBmIChpICsgMikgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIChMZWFmIGtyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgKCogV2UgZG9uJ3QgY2hlY2sgaWYgdGhlIGFycmF5IGlzIHNvcnRlZCBvciBrZXlzIGFyZSBkdXBsaWNhdGVkLCBiZWNhdXNlIHRoYXRcbiAgICAgICAgIGNoZWNraW5nIGlzIHNsb3dlciB0aGFuIHRoZSB3aG9sZSBbb2Zfc29ydGVkX2FycmF5XSBmdW5jdGlvbiAqKVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMiB8fCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LihpKSBhcnJheS4oaSArIDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpKVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICBsZXQgYmFsIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKGwpPmgocikrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBscnYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgbGwpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgRW1wdHkpIGxydiAoY3JlYXRlIEVtcHR5IHYgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgocik+aChsKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIHJsdiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBycik7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgRW1wdHkpIHJsdiAoY3JlYXRlIEVtcHR5IHJ2IHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGlmIGggPSAxIHRoZW4gTGVhZiB2IGVsc2UgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gIGV4Y2VwdGlvbiBTYW1lXG5cbiAgbGV0IGFkZCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiByYWlzZSBTYW1lXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBjcmVhdGUgKExlYWYgeCkgdiBFbXB0eVxuICAgICAgICBlbHNlIGNyZWF0ZSBFbXB0eSB2IChMZWFmIHgpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmFpc2UgU2FtZSBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZSByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kXG4gICAgIHIuICopXG4gIGxldCByZWMgam9pbiBsIHYgciB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gYWRkIHIgdiB+Y29tcGFyZV9lbHRcbiAgICB8IF8sIEVtcHR5IC0+IGFkZCBsIHYgfmNvbXBhcmVfZWx0XG4gICAgfCBMZWFmIGx2LCBfIC0+IGFkZCAoYWRkIHIgdiB+Y29tcGFyZV9lbHQpIGx2IH5jb21wYXJlX2VsdFxuICAgIHwgXywgTGVhZiBydiAtPiBhZGQgKGFkZCBsIHYgfmNvbXBhcmVfZWx0KSBydiB+Y29tcGFyZV9lbHRcbiAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIGxoLCBfKSwgTm9kZSAocmwsIHJ2LCByciwgcmgsIF8pIC0+XG4gICAgICBpZiBsaCA+IHJoICsgMlxuICAgICAgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByIH5jb21wYXJlX2VsdClcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDJcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgdiBybCB+Y29tcGFyZV9lbHQpIHJ2IHJyXG4gICAgICBlbHNlIGNyZWF0ZSBsIHYgclxuICA7O1xuXG4gICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChFbXB0eSwgdiwgXywgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXQubWwuVHJlZTAuU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXQubWwuVHJlZTAuU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBhY2MgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLkNvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmIHZhbHVlIC0+IGYgYWNjIHZhbHVlXG4gICAgICB8IE5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIGxlZnQgYWNjIHdpdGhcbiAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIGFjYyB2YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICAgICB8IENvbnRpbnVlIGEgLT4gZm9sZF91bnRpbF9oZWxwZXIgfmYgcmlnaHQgYSkpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGluaXQgd2l0aFxuICAgIHwgQ29udGludWUgeCAtPiBmaW5pc2ggeFxuICAgIHwgU3RvcCB4IC0+IHhcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoXywgdiwgRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgXywgciwgXywgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGJhbCB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuICBsZXQgY29uY2F0IHQxIHQyIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPiBqb2luIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKSB+Y29tcGFyZV9lbHRcbiAgOztcblxuICBsZXQgc3BsaXQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBzcGxpdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIFNvbWUgdiwgRW1wdHlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIEVtcHR5LCBOb25lLCBMZWFmIHZcbiAgICAgICAgZWxzZSBMZWFmIHYsIE5vbmUsIEVtcHR5XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbCwgU29tZSB2LCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxsLCBtYXliZV9lbHQsIHJsID0gc3BsaXQgbCBpblxuICAgICAgICAgIGxsLCBtYXliZV9lbHQsIGpvaW4gcmwgdiByIH5jb21wYXJlX2VsdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxyLCBtYXliZV9lbHQsIHJyID0gc3BsaXQgciBpblxuICAgICAgICAgIGpvaW4gbCB2IGxyIH5jb21wYXJlX2VsdCwgbWF5YmVfZWx0LCBycilcbiAgICBpblxuICAgIHNwbGl0IHRcbiAgOztcblxuICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCByZWMgbWVtIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwIHx8IG1lbSAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9lbHRcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIHggPSBMZWFmIHhcblxuICBsZXQgcmVtb3ZlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIFNhbWVcbiAgICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA9IDAgdGhlbiBFbXB0eSBlbHNlIHJhaXNlIFNhbWVcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHIgZWxzZSBpZiBjIDwgMCB0aGVuIGJhbCAoYXV4IGwpIHYgciBlbHNlIGJhbCBsIHYgKGF1eCByKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCByZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDpfID1cbiAgICBsZXQgcmVjIGF1eCB0IGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIFNhbWVcbiAgICAgIHwgTGVhZiBfIC0+IGlmIGkgPSAwIHRoZW4gRW1wdHkgZWxzZSByYWlzZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCBpKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IGkgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHVuaW9uIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICAgICAgfCBMZWFmIHYxLCBfIC0+IHVuaW9uIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgczJcbiAgICAgICAgfCBfLCBMZWFmIHYyIC0+IHVuaW9uIHMxIChOb2RlIChFbXB0eSwgdjIsIEVtcHR5LCAxLCAxKSlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBoMSwgXyksIE5vZGUgKGwyLCB2MiwgcjIsIGgyLCBfKSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxXG4gICAgICAgICAgICB0aGVuIGFkZCBzMSB2MiB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbDIsIF8sIHIyID0gc3BsaXQgczIgdjEgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpIH5jb21wYXJlX2VsdClcbiAgICAgICAgICBlbHNlIGlmIGgxID0gMVxuICAgICAgICAgIHRoZW4gYWRkIHMyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwxLCBfLCByMSA9IHNwbGl0IHMxIHYyIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMikgfmNvbXBhcmVfZWx0KSlcbiAgICBpblxuICAgIHVuaW9uIHMxIHMyXG4gIDs7XG5cbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgeHMgPVxuICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgTGlzdC5mb2xkIHhzIH5pbml0OmVtcHR5IH5mOihmdW4gYWMgeCAtPiB1bmlvbiBhYyAodG9fdHJlZSB4KSB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IGludGVyIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgKExlYWYgZWx0IGFzIHNpbmdsZXRvbiksIG90aGVyX3NldCB8IG90aGVyX3NldCwgKExlYWYgZWx0IGFzIHNpbmdsZXRvbikgLT5cbiAgICAgICAgICBpZiBtZW0gb3RoZXJfc2V0IGVsdCB+Y29tcGFyZV9lbHQgdGhlbiBzaW5nbGV0b24gZWxzZSBFbXB0eVxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpIH5jb21wYXJlX2VsdFxuICAgICAgICAgICB8IGwyLCBTb21lIHYxLCByMiAtPiBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgaW50ZXIgczEgczJcbiAgOztcblxuICBsZXQgZGlmZiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIEVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyAtPiBFbXB0eVxuICAgICAgICB8IHQxLCBFbXB0eSAtPiB0MVxuICAgICAgICB8IExlYWYgdjEsIHQyIC0+IGRpZmYgKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSB0MlxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMikgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgIHwgbDIsIFNvbWUgXywgcjIgLT4gY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMikgfmNvbXBhcmVfZWx0KSlcbiAgICBpblxuICAgIGRpZmYgczEgczJcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2EsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnYSAqICdhIHRyZWUgKiAoJ2EsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyBzIChlIDogKF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgcyAoZSA6IChfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NldCBzIDogKF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHMgRW5kXG4gICAgbGV0IG9mX3NldF9yaWdodCBzIDogKF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHMgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIHIsIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCByIChNb3JlICh2LCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGUxIGUyID1cbiAgICAgIGxldCByZWMgbG9vcCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIHIxLCBlMSksIE1vcmUgKHYyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCBlMSBlMlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGl0ZXIgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gKClcbiAgICAgIHwgTW9yZSAoYSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgZiBhO1xuICAgICAgICBpdGVyIChjb25zIHRyZWUgZW51bSkgfmZcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIyIGNvbXBhcmVfZWx0IHQxIHQyIH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gKClcbiAgICAgICAgfCBFbmQsIF8gLT4gaXRlciB0MiB+ZjooZnVuIGEgLT4gZiAoYFJpZ2h0IGEpKVxuICAgICAgICB8IF8sIEVuZCAtPiBpdGVyIHQxIH5mOihmdW4gYSAtPiBmIChgTGVmdCBhKSlcbiAgICAgICAgfCBNb3JlIChhMSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCBhMSBhMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYEJvdGggKGExLCBhMikpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgTGVmdCBhMSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MilcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGYgKGBSaWdodCBhMik7XG4gICAgICAgICAgICBsb29wIHQxIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgOiAoKF8sIF8pIEVpdGhlci50LCBfKSBTZXF1ZW5jZS5TdGVwLnQgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSAtPiBZaWVsZCAoU2Vjb25kIGVsdCwgKEVuZCwgY29ucyB0cmVlIGVudW0pKVxuICAgICAgICB8IE1vcmUgKGVsdCwgdHJlZSwgZW51bSksIEVuZCAtPiBZaWVsZCAoRmlyc3QgZWx0LCAoY29ucyB0cmVlIGVudW0sIEVuZCkpXG4gICAgICAgIHwgKE1vcmUgKGExLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTa2lwIG5leHRfc3RhdGUpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFlpZWxkIChGaXJzdCBhMSwgKGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0KSlcbiAgICAgICAgICBlbHNlIFlpZWxkIChTZWNvbmQgYTIsIChsZWZ0LCBjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2Zfc2V0IHQxLCBvZl9zZXQgdDIpIH5mOnN0ZXBcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIChrLCBFbnVtLmNvbnMgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoaywgRW51bS5jb25zX3JpZ2h0IHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldF9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgZWx0IC0+IGFkZCB0IGVsdCB+Y29tcGFyZV9lbHRcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGxlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6Z3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0Omxlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgeCA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodFxuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgICAgICB0J1xuICAgID1cbiAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0KVxuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQnKVxuICAgICAgfmNvbXBhcmU6XG4gICAgICAgIChtYXRjaCBvcmRlciB3aXRoXG4gICAgICAgICB8IGBJbmNyZWFzaW5nIC0+IGNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfCBgRGVjcmVhc2luZyAtPiBGbi5mbGlwIGNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9XG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKVxuICA7O1xuXG4gIGxldCBpdGVyMiBzMSBzMiB+Y29tcGFyZV9lbHQgPSBFbnVtLml0ZXIyIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKVxuICBsZXQgZXF1YWwgczEgczIgfmNvbXBhcmVfZWx0ID0gY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9IDBcblxuICBsZXQgaXNfc3Vic2V0IHMxIH5vZl86czIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGlzX3N1YnNldCBzMSB+b2ZfOnMyID1cbiAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICB8IEVtcHR5LCBfIC0+IHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTGVhZiB2MSwgdDIgLT4gbWVtIHQyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgTGVhZiB2MiAtPlxuICAgICAgICAobWF0Y2ggbDEsIHIxIHdpdGhcbiAgICAgICAgIHwgRW1wdHksIEVtcHR5IC0+XG4gICAgICAgICAgICgqIFRoaXMgY2FzZSBzaG91bGRuJ3Qgb2NjdXIgaW4gcHJhY3RpY2UgYmVjYXVzZSB3ZSBzaG91bGQgaGF2ZSBjb25zdHJ1Y3RlZFxuICAgICAgICAgICAgICBhIExlYWYgcmF0aGVyIHRoYW4gYSBOb2RlIHdpdGggdHdvIEVtcHR5IHN1YnRyZWVzICopXG4gICAgICAgICAgIGNvbXBhcmVfZWx0IHYxIHYyID0gMFxuICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgKE5vZGUgKGwyLCB2MiwgcjIsIF8sIF8pIGFzIHQyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBwaHlzX2VxdWFsIHMxIHMyIHx8IChpc19zdWJzZXQgbDEgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzpyMilcbiAgICAgICAgICAoKiBOb3RlIHRoYXQgaGVpZ2h0IGFuZCBzaXplIGRvbid0IG1hdHRlciBoZXJlLiAqKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gaXNfc3Vic2V0IChOb2RlIChsMSwgdjEsIEVtcHR5LCAwLCAwKSkgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzp0MlxuICAgICAgICBlbHNlIGlzX3N1YnNldCAoTm9kZSAoRW1wdHksIHYxLCByMSwgMCwgMCkpIH5vZl86cjIgJiYgaXNfc3Vic2V0IGwxIH5vZl86dDJcbiAgICBpblxuICAgIGlzX3N1YnNldCBzMSB+b2ZfOnMyXG4gIDs7XG5cbiAgbGV0IHJlYyBhcmVfZGlzam9pbnQgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIGVsdCwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCBMZWFmIGVsdCAtPiBub3QgKG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdClcbiAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBmYWxzZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+XG4gICAgICAgICAgYXJlX2Rpc2pvaW50IGwxIGwyIH5jb21wYXJlX2VsdCAmJiBhcmVfZGlzam9pbnQgcjEgcjIgfmNvbXBhcmVfZWx0XG4gICAgICAgIHwgXywgU29tZSBfLCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IExlYWYgdiAtPiBmIHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgaXRlciBsO1xuICAgICAgICBmIHY7XG4gICAgICAgIGl0ZXIgclxuICAgIGluXG4gICAgaXRlciB0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCByZWMgZm9sZCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgYWNjdSB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSB2KVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2VsZW0gc3RhdGUgdCA9XG4gICAgZm9sZCB0IH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpIH5mOmhhc2hfZm9sZF9lbGVtXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5cbiAgbGV0IHJlYyBmb2xkX3JpZ2h0IHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiB2IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB2IChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb3JfYWxsIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgJiYgZm9yX2FsbCB+ZjpwIGwgJiYgZm9yX2FsbCB+ZjpwIHJcbiAgOztcblxuICBsZXQgcmVjIGV4aXN0cyB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiB8fCBleGlzdHMgfmY6cCBsIHx8IGV4aXN0cyB+ZjpwIHJcbiAgOztcblxuICBsZXQgZmlsdGVyIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT4gaWYgcCB2IHRoZW4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQgZWxzZSBhY2N1XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHQgKGZpbHQgKGlmIHAgdiB0aGVuIGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0IGVsc2UgYWNjdSkgbCkgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdFxuICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHBhcnQgKCh0LCBmKSBhcyBhY2N1KSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+IGlmIHAgdiB0aGVuIGFkZCB0IHYgfmNvbXBhcmVfZWx0LCBmIGVsc2UgdCwgYWRkIGYgdiB+Y29tcGFyZV9lbHRcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgcGFydCAocGFydCAoaWYgcCB2IHRoZW4gYWRkIHQgdiB+Y29tcGFyZV9lbHQsIGYgZWxzZSB0LCBhZGQgZiB2IH5jb21wYXJlX2VsdCkgbCkgclxuICAgIGluXG4gICAgcGFydCAoRW1wdHksIEVtcHR5KSBzXG4gIDs7XG5cbiAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gdiA6OiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuICA7O1xuXG4gIGxldCBlbGVtZW50cyBzID0gZWxlbWVudHNfYXV4IFtdIHNcblxuICBsZXQgY2hvb3NlIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgdiwgXywgXywgXykgLT4gU29tZSB2XG4gIDs7XG5cbiAgbGV0IGNob29zZV9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlNldC5jaG9vc2VfZXhuOiBlbXB0eSBzZXRcIikgaW5cbiAgICBsZXQgY2hvb3NlX2V4biB0ID1cbiAgICAgIG1hdGNoIGNob29zZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBjaG9vc2VfZXhuXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbHN0IH5jb21wYXJlX2VsdCA9XG4gICAgTGlzdC5mb2xkIGxzdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgfmNvbXBhcmVfZWx0ID1cbiAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCB0b19saXN0IHMgPSBlbGVtZW50cyBzXG5cbiAgbGV0IG9mX2FycmF5IGEgfmNvbXBhcmVfZWx0ID1cbiAgICBBcnJheS5mb2xkIGEgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgKCogZmFzdGVyIGJ1dCBlcXVpdmFsZW50IHRvIFtBcnJheS5vZl9saXN0ICh0b19saXN0IHQpXSAqKVxuICBsZXQgdG9fYXJyYXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gW3x8XVxuICAgIHwgTGVhZiB2IC0+IFt8IHYgfF1cbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIHMpIC0+XG4gICAgICBsZXQgcmVzID0gQXJyYXkuY3JlYXRlIH5sZW46cyB2IGluXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICAoKiBJbnZhcmlhbnQ6IG9uIGVudHJ5IGFuZCBvbiBleGl0IHRvIFtsb29wXSwgIXBvc19yZWYgaXMgdGhlIG5leHRcbiAgICAgICAgICAgYXZhaWxhYmxlIGNlbGwgaW4gdGhlIGFycmF5LiAqKVxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWZcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICAgIGxvb3AgbDtcbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgICAgICBsb29wIHJcbiAgICAgIGluXG4gICAgICBsb29wIGw7XG4gICAgICAoKiByZXMuKCFwb3NfcmVmKSBpcyBhbHJlYWR5IGluaXRpYWxpemVkIChieSBBcnJheS5jcmVhdGUgfmxlbjphYm92ZSkuICopXG4gICAgICBpbmNyIHBvc19yZWY7XG4gICAgICBsb29wIHI7XG4gICAgICByZXNcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgfmNvbXBhcmVfZWx0ID0gZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IChmIHgpIH5jb21wYXJlX2VsdClcblxuICBsZXQgZ3JvdXBfYnkgc2V0IH5lcXVpdiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCBzZXQgZXF1aXZfY2xhc3NlcyA9XG4gICAgICBpZiBpc19lbXB0eSBzZXRcbiAgICAgIHRoZW4gZXF1aXZfY2xhc3Nlc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB4ID0gY2hvb3NlX2V4biBzZXQgaW5cbiAgICAgICAgbGV0IGVxdWl2X3gsIG5vdF9lcXVpdl94ID1cbiAgICAgICAgICBwYXJ0aXRpb25fdGYgc2V0IH5mOihmdW4gZWx0IC0+IHBoeXNfZXF1YWwgeCBlbHQgfHwgZXF1aXYgeCBlbHQpIH5jb21wYXJlX2VsdFxuICAgICAgICBpblxuICAgICAgICBsb29wIG5vdF9lcXVpdl94IChlcXVpdl94IDo6IGVxdWl2X2NsYXNzZXMpKVxuICAgIGluXG4gICAgbG9vcCBzZXQgW11cbiAgOztcblxuICBsZXQgcmVjIGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiBTb21lIHZcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBmaW5kIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmluZCByIH5mXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIChtYXRjaCBmIHYgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgKG1hdGNoIGZpbmRfbWFwIGwgfmYgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCByIH5mXG4gICAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXQuZmluZF9leG4gZmFpbGVkIHRvIGZpbmQgYSBtYXRjaGluZyBlbGVtZW50XCJcbiAgICB8IFNvbWUgZSAtPiBlXG4gIDs7XG5cbiAgbGV0IHJlYyBudGggdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBpID0gMCB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIHMpIC0+XG4gICAgICBpZiBpID49IHNcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjIDwgMCB0aGVuIG50aCBsIGkgZWxzZSBpZiBjID0gMCB0aGVuIFNvbWUgdiBlbHNlIG50aCByIChpIC0gbF9zaXplIC0gMSkpXG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBsb29wIHhzIGxlZnRvdmVycyBhbHJlYWR5X3NlZW4gPVxuICAgICAgbWF0Y2ggeHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBsZWZ0b3ZlcnNcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgbWVtIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHRcbiAgICAgICAgdGhlbiBsb29wIHRsIGxlZnRvdmVycyBhbHJlYWR5X3NlZW5cbiAgICAgICAgZWxzZSBsb29wIHRsIChoZCA6OiBsZWZ0b3ZlcnMpIChhZGQgYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdClcbiAgICBpblxuICAgIGxvb3AgeHMgW10gZW1wdHlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBhX29mX3NleHAgc2V4cCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IGxzdCAtPlxuICAgICAgbGV0IGVsdF9sc3QgPSBMaXN0Lm1hcCBsc3QgfmY6YV9vZl9zZXhwIGluXG4gICAgICBsZXQgc2V0ID0gb2ZfbGlzdCBlbHRfbHN0IH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgbGVuZ3RoIHNldCA9IExpc3QubGVuZ3RoIGxzdFxuICAgICAgdGhlbiBzZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2V0ID0gcmVmIGVtcHR5IGluXG4gICAgICAgIExpc3QuaXRlcjJfZXhuIGxzdCBlbHRfbHN0IH5mOihmdW4gZWxfc2V4cCBlbCAtPlxuICAgICAgICAgIGlmIG1lbSAhc2V0IGVsIH5jb21wYXJlX2VsdFxuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGR1cGxpY2F0ZSBlbGVtZW50IGluIHNldFwiIGVsX3NleHBcbiAgICAgICAgICBlbHNlIHNldCA6PSBhZGQgIXNldCBlbCB+Y29tcGFyZV9lbHQpO1xuICAgICAgICBhc3NlcnQgZmFsc2UpXG4gICAgfCBzZXhwIC0+IG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsIGFjYyAtPiBzZXhwX29mX2EgZWwgOjogYWNjKSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyB0cmVlIDogJ2EgdFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IChzdWJzZXQgOiBfIHQpIH5vZl86KHN1cGVyc2V0IDogXyB0KSB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzID0gZGlmZiBzdWJzZXQudHJlZSBzdXBlcnNldC50cmVlIH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgaXNfZW1wdHkgaW52YWxpZF9lbGVtZW50c1xuICAgICAgdGhlbiBPayAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgPSBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgaW52YWxpZF9lbGVtZW50cyBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIChzdWJzZXQubmFtZSBeIFwiIGlzIG5vdCBhIHN1YnNldCBvZiBcIiBeIHN1cGVyc2V0Lm5hbWUpXG4gICAgICAgICAgICAgWyBcImludmFsaWRfZWxlbWVudHNcIiwgaW52YWxpZF9lbGVtZW50c19zZXhwIF0pKVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgczEgczIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAgIFsgaXNfc3Vic2V0IHMxIH5vZl86czIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICA7IGlzX3N1YnNldCBzMiB+b2ZfOnMxIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdhLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICdhIFRyZWUwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAnYSBUcmVlMC50XG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGNvbXBhcmF0b3IgfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yIH1cbmxldCBjb21wYXJlX2VsdCB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IGludmFyaWFudHMgdCA9IFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHQudHJlZVxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHQudHJlZVxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHQudHJlZVxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0LnRyZWVcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0LnRyZWVcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdC50cmVlXG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdC50cmVlXG4gIGxldCBjaG9vc2UgdCA9IFRyZWUwLmNob29zZSB0LnRyZWVcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdC50cmVlXG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHQudHJlZVxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUwLnRvX2FycmF5IHQudHJlZVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgYSBiIH5mID0gVHJlZTAuaXRlcjIgYS50cmVlIGIudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdC50cmVlIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQudHJlZSB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQudHJlZSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQudHJlZSB+ZlxuICBsZXQgbWVtIHQgYSA9IFRyZWUwLm1lbSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgYWRkIHQgYSA9IGxpa2UgdCAoVHJlZTAuYWRkIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCByZW1vdmUgdCBhID0gbGlrZSB0IChUcmVlMC5yZW1vdmUgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAudW5pb24gdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgaW50ZXIgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5pbnRlciB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBkaWZmIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjb21wYXJlX2VsdCB0MSkgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0LnRyZWUgfm9mXzpvZl8udHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHNldCA6ICgnYSwgJ2NtcCkgdFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICBsZXQgdG9fbmFtZWRfdHJlZSB7IHNldDsgbmFtZSB9ID0geyBUcmVlMC5OYW1lZC50cmVlID0gc2V0LnRyZWU7IG5hbWUgfVxuXG4gICAgbGV0IGlzX3N1YnNldCAoc3Vic2V0IDogKF8sIF8pIHQpIH5vZl86KHN1cGVyc2V0IDogKF8sIF8pIHQpID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICAodG9fbmFtZWRfdHJlZSBzdWJzZXQpXG4gICAgICAgIH5vZl86KHRvX25hbWVkX3RyZWUgc3VwZXJzZXQpXG4gICAgICAgIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgc3Vic2V0LnNldClcbiAgICAgICAgfnNleHBfb2ZfZWx0OnN1YnNldC5zZXQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHQxIHQyID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXQgWyBpc19zdWJzZXQgdDEgfm9mXzp0MjsgaXNfc3Vic2V0IHQyIH5vZl86dDEgXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgbGV0IHRyZWVfdCwgdHJlZV9mID0gVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWVfdCwgbGlrZSB0IHRyZWVfZlxuICA7O1xuXG4gIGxldCBzcGxpdCB0IGEgPVxuICAgIGxldCB0cmVlMSwgYiwgdHJlZTIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBiLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPVxuICAgIExpc3QubWFwIChUcmVlMC5ncm91cF9ieSB0LnRyZWUgfmVxdWl2IH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpIH5mOihsaWtlIHQpXG4gIDs7XG5cbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdC50cmVlIGlcbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZV9pbmRleCB0LnRyZWUgaSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgdC5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgICAgIHQnLnRyZWVcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQudHJlZVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9ICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgY2UgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKSBhX29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBlID0gVHJlZTAuc2luZ2xldG9uIGVcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9IFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHRcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0XG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0IH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAubWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5maWx0ZXIgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcGFydGl0aW9uX3RmIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhIGIgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLm1lbSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLmFkZCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnJlbW92ZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb24gfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC51bmlvbiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpbnRlciB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmludGVyIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGRpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjZSBjb21wYXJhdG9yKSB0MSB0MlxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC51bmlvbl9saXN0IGwgfnRvX3RyZWU6Rm4uaWQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgfmNvbXBhcmF0b3IgdCB+ZXF1aXYgPSBUcmVlMC5ncm91cF9ieSB0IH5lcXVpdiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0IGlcbiAgbGV0IHJlbW92ZV9pbmRleCB+Y29tcGFyYXRvciB0IGkgPSBUcmVlMC5yZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdCA9IHRcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCdcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlMC5OYW1lZFxuXG4gICAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0MSB+b2ZfOnQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICB0MVxuICAgICAgICB+b2ZfOnQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmVxdWFsXG4gICAgICAgIHQxXG4gICAgICAgIHQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuY29tcGFyZSBhX29mX3NleHAgc2V4cClcbiAgOztcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG4gIGVuZFxuXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgZSA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBlIH1cblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC51bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIGwpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGxldCB0cmVlID1cbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLk1vbmFkX2luZml4LihcbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgID4+fCBmdW4gdHJlZSAtPiB7IGNvbXBhcmF0b3I7IHRyZWUgfSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm1hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3JcbiAgICA7IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB9XG4gIDs7XG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxudHlwZSAoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBlbHQgY21wKSAoKG1vZHVsZSBNKSA6IChlbHQsIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgdW5pb25fbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgfmxlbiB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX3NlcXVlbmNlIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgc3RhYmxlX2RlZHVwX2xpc3QgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCBmaWx0ZXJfbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5cbm1vZHVsZSBNIChFbHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgZWx0IGNtcClcbiAgICAgIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHNleHBcbiAgPVxuICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3I6RWx0LmNvbXBhcmF0b3IgRWx0LnRfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gZWx0KVxuICA6IChlbHQsIF8pIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gZWx0KSBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlXG47O1xuXG5sZXQgaGFzaF9tX190IGZvbGRlciB0ID1cbiAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX21fX3QgZm9sZGVyIChIYXNoLmNyZWF0ZSAoKSkgdCBpblxuICBIYXNoLmdldF9oYXNoX3ZhbHVlIHN0YXRlXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHNldCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHRyZWUgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG4gIHR5cGUgbm9ucmVjICdlbHQgbmFtZWQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSBOYW1lZC50XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCB1bmlvbl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgYVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9zZXF1ZW5jZSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBtYXAgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IGZpbHRlcl9tYXAgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfcmVmXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPSBlcXVhbF9yZWZcbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IHJlZl9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX3JlZlxuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gcmVmX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG4oKiBJbiB0aGUgZGVmaW5pdGlvbiBvZiBbdF0sIHdlIGRvIG5vdCBoYXZlIFtbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXV0gYmVjYXVzZVxuICAgaW4gZ2VuZXJhbCwgc3ludGF4IGV4dGVuc2lvbnMgdGVuZCB0byB1c2UgdGhlIGltcGxlbWVudGF0aW9uIHdoZW4gYXZhaWxhYmxlIHJhdGhlciB0aGFuXG4gICB1c2luZyB0aGUgYWxpYXMuICBIZXJlIHRoYXQgd291bGQgbGVhZCB0byB1c2UgdGhlIHJlY29yZCByZXByZXNlbnRhdGlvbiBbIHsgbXV0YWJsZVxuICAgY29udGVudHMgOiAnYSB9IF0gd2hpY2ggd291bGQgcmVzdWx0IGluIGRpZmZlcmVudCAoYW5kIHVud2FudGVkKSBiZWhhdmlvci4gICopXG50eXBlICdhIHQgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbmV4dGVybmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHQgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgdCAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxubGV0IHN3YXAgdDEgdDIgPVxuICBsZXQgdG1wID0gIXQxIGluXG4gIHQxIDo9ICF0MjtcbiAgdDIgOj0gdG1wXG47O1xuXG5sZXQgcmVwbGFjZSB0IGYgPSB0IDo9IGYgIXRcblxubGV0IHNldF90ZW1wb3JhcmlseSB0IGEgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9ICF0IGluXG4gIHQgOj0gYTtcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0IDo9IHJlc3RvcmVfdG8pXG47O1xuXG5tb2R1bGUgQW5kX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgdCA9IFQgOiAnYSByZWYgKiAnYSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNldCAoVCAociwgYSkpID0gciA6PSBhXG4gIGxldCBzZXRzIHRzID0gTGlzdC5pdGVyIHRzIH5mOnNldFxuICBsZXQgc25hcHNob3QgKFQgKHIsIF8pKSA9IFQgKHIsICFyKVxuICBsZXQgc25hcHNob3RzIHRzID0gTGlzdC5tYXAgdHMgfmY6c25hcHNob3RcbmVuZFxuXG5sZXQgc2V0c190ZW1wb3JhcmlseSBhbmRfdmFsdWVzIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSBBbmRfdmFsdWUuc25hcHNob3RzIGFuZF92YWx1ZXMgaW5cbiAgQW5kX3ZhbHVlLnNldHMgYW5kX3ZhbHVlcztcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBBbmRfdmFsdWUuc2V0cyByZXN0b3JlX3RvKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5cbigqIFt0XSBzdG9yZXMgdGhlIFt0Lmxlbmd0aF0gcXVldWUgZWxlbWVudHMgYXQgY29uc2VjdXRpdmUgaW5jcmVhc2luZyBpbmRpY2VzIG9mIFt0LmVsdHNdLFxuICAgbW9kIHRoZSBjYXBhY2l0eSBvZiBbdF0sIHdoaWNoIGlzIFtPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICBUaGUgY2FwYWNpdHkgaXNcbiAgIHJlcXVpcmVkIHRvIGJlIGEgcG93ZXIgb2YgdHdvICh1c2VyLXJlcXVlc3RlZCBjYXBhY2l0aWVzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0XG4gICBwb3dlciksIHNvIHRoYXQgbW9kIGNhbiBxdWlja2x5IGJlIGNvbXB1dGVkIHVzaW5nIFtsYW5kIHQubWFza10sIHdoZXJlIFt0Lm1hc2sgPVxuICAgY2FwYWNpdHkgdCAtIDFdLiAgU28sIHF1ZXVlIGVsZW1lbnQgW2ldIGlzIGF0IFt0LmVsdHMuKCAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICldLlxuXG4gICBbbnVtX211dGF0aW9uc10gaXMgdXNlZCB0byBkZXRlY3QgbW9kaWZpY2F0aW9uIGR1cmluZyBpdGVyYXRpb24uICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbnVtX211dGF0aW9ucyA6IGludFxuICA7IG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfXG4gICAgeyBudW1fbXV0YXRpb25zID0gbnVtX211dGF0aW9uc19fMDAzX1xuICAgIDsgZnJvbnQgPSBmcm9udF9fMDA1X1xuICAgIDsgbWFzayA9IG1hc2tfXzAwN19cbiAgICA7IGxlbmd0aCA9IGxlbmd0aF9fMDA5X1xuICAgIDsgZWx0cyA9IGVsdHNfXzAxMV9cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAwMl8gPSBbXSBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAxMl8gPSBPcHRpb25fYXJyYXkuc2V4cF9vZl90IF9vZl9hX18wMDFfIGVsdHNfXzAxMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDA5XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBtYXNrX18wMDdfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXNrXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwNl8gPSBzZXhwX29mX2ludCBmcm9udF9fMDA1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZnJvbnRcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IG51bV9tdXRhdGlvbnNfXzAwM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm51bV9tdXRhdGlvbnNcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSB0eXBlIFMgPSBRdWV1ZV9pbnRmLlNcblxubGV0IGluY19udW1fbXV0YXRpb25zIHQgPSB0Lm51bV9tdXRhdGlvbnMgPC0gdC5udW1fbXV0YXRpb25zICsgMVxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5sZXQgZWx0c19pbmRleCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9pc19zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9pc19zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgYSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSkgYVxubGV0IHVuc2FmZV91bnNldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5cbmxldCBjaGVja19pbmRleF9leG4gdCBpID1cbiAgaWYgaSA8IDAgfHwgaSA+PSB0Lmxlbmd0aFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJRdWV1ZSBpbmRleCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIFsgXCJpbmRleFwiLCBpIHw+IEludC5zZXhwX29mX3Q7IFwibGVuZ3RoXCIsIHQubGVuZ3RoIHw+IEludC5zZXhwX29mX3QgXSlcbjs7XG5cbmxldCBnZXQgdCBpID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgdW5zYWZlX2dldCB0IGlcbjs7XG5cbmxldCBzZXQgdCBpIGEgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICB1bnNhZmVfc2V0IHQgaSBhXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxubGV0IGxlbmd0aCB7IGxlbmd0aDsgXyB9ID0gbGVuZ3RoXG5cbmxldCBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zID1cbiAgaWYgdC5udW1fbXV0YXRpb25zIDw+IG51bV9tdXRhdGlvbnNcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwibXV0YXRpb24gb2YgcXVldWUgZHVyaW5nIGl0ZXJhdGlvblwiXG4gICAgICAgICBbIFwiXCIsIHQgfD4gc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIF0pXG47O1xuXG5sZXQgY29tcGFyZSA9XG4gIGxldCByZWMgdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCBwb3MgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MiA9XG4gICAgbWF0Y2ggcG9zID0gbGVuMSwgcG9zID0gbGVuMiB3aXRoXG4gICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgIGxldCB4ID0gY29tcGFyZV9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgMCAtPiB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyXG4gICAgICAgfCBuIC0+IG4pXG4gIGluXG4gIGZ1biBjb21wYXJlX2VsdCB0MSB0MiAtPlxuICAgIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB0aGVuIDBcbiAgICBlbHNlXG4gICAgICB1bnNhZmVfY29tcGFyZV9mcm9tXG4gICAgICAgIGNvbXBhcmVfZWx0XG4gICAgICAgIDBcbiAgICAgICAgfnQxXG4gICAgICAgIH50MlxuICAgICAgICB+bGVuMTp0MS5sZW5ndGhcbiAgICAgICAgfmxlbjI6dDIubGVuZ3RoXG4gICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGVxdWFsID1cbiAgbGV0IHJlYyB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgcG9zIH50MSB+dDIgfm11dDEgfm11dDIgfmxlbiA9XG4gICAgcG9zID0gbGVuXG4gICAgfHxcbiAgICBsZXQgYiA9IGVxdWFsX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICBiICYmIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuXG4gIGluXG4gIGZ1biBlcXVhbF9lbHQgdDEgdDIgLT5cbiAgICBwaHlzX2VxdWFsIHQxIHQyXG4gICAgfHxcbiAgICBsZXQgbGVuMSA9IHQxLmxlbmd0aCBpblxuICAgIGxldCBsZW4yID0gdDIubGVuZ3RoIGluXG4gICAgbGVuMSA9IGxlbjJcbiAgICAmJiB1bnNhZmVfZXF1YWxfZnJvbVxuICAgICAgICAgZXF1YWxfZWx0XG4gICAgICAgICAwXG4gICAgICAgICB+dDFcbiAgICAgICAgIH50MlxuICAgICAgICAgfmxlbjpsZW4xXG4gICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgeyBudW1fbXV0YXRpb25zOyBtYXNrID0gXzsgZWx0czsgZnJvbnQ7IGxlbmd0aCB9ID0gdCBpblxuICBhc3NlcnQgKGZyb250ID49IDApO1xuICBhc3NlcnQgKGZyb250IDwgY2FwYWNpdHkgdCk7XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgYXNzZXJ0IChjYXBhY2l0eSA9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gIGFzc2VydCAoY2FwYWNpdHkgPj0gMSk7XG4gIGFzc2VydCAoSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkpO1xuICBmb3IgaSA9IDAgdG8gY2FwYWNpdHkgLSAxIGRvXG4gICAgaWYgaSA8IHQubGVuZ3RoXG4gICAgdGhlbiAoXG4gICAgICBpbnZhcmlhbnRfYSAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucylcbiAgICBlbHNlIGFzc2VydCAobm90ICh1bnNhZmVfaXNfc2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgP2NhcGFjaXR5ICgpIDogYSB0ID1cbiAgbGV0IGNhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IDFcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiY2Fubm90IGhhdmUgcXVldWUgd2l0aCBuZWdhdGl2ZSBjYXBhY2l0eVwiXG4gICAgICAgICAgICAgWyBcImNhcGFjaXR5XCIsIGNhcGFjaXR5IHw+IEludC5zZXhwX29mX3QgXSlcbiAgICAgIGVsc2UgaWYgY2FwYWNpdHkgPSAwXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgSW50LmNlaWxfcG93MiBjYXBhY2l0eVxuICBpblxuICB7IG51bV9tdXRhdGlvbnMgPSAwXG4gIDsgZnJvbnQgPSAwXG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGxlbmd0aCA9IDBcbiAgOyBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmNhcGFjaXR5XG4gIH1cbjs7XG5cbmxldCBibGl0X3RvX2FycmF5IH5zcmMgZHN0ID1cbiAgYXNzZXJ0IChzcmMubGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZHN0KTtcbiAgbGV0IGZyb250X2xlbiA9IEludC5taW4gc3JjLmxlbmd0aCAoY2FwYWNpdHkgc3JjIC0gc3JjLmZyb250KSBpblxuICBsZXQgcmVzdF9sZW4gPSBzcmMubGVuZ3RoIC0gZnJvbnRfbGVuIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46ZnJvbnRfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6c3JjLmZyb250IH5kc3QgfmRzdF9wb3M6MDtcbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpyZXN0X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3Bvczpmcm9udF9sZW5cbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBkZXNpcmVkX2NhcGFjaXR5ID1cbiAgKCogV2UgYWxsb3cgYXJndW1lbnRzIGxlc3MgdGhhbiAxIHRvIFtzZXRfY2FwYWNpdHldLCBidXQgdHJhbnNsYXRlIHRoZW0gdG8gMSB0byBzaW1wbGlmeVxuICAgICB0aGUgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUgYXJyYXkgbGVuZ3RoIGJlaW5nIGEgcG93ZXIgb2YgMi4gKilcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5jZWlsX3BvdzIgKG1heCAxIChtYXggZGVzaXJlZF9jYXBhY2l0eSB0Lmxlbmd0aCkpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0XG4gIHRoZW4gKFxuICAgIGxldCBkc3QgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46bmV3X2NhcGFjaXR5IGluXG4gICAgYmxpdF90b19hcnJheSB+c3JjOnQgZHN0O1xuICAgIHQuZnJvbnQgPC0gMDtcbiAgICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgICB0LmVsdHMgPC0gZHN0KVxuOztcblxubGV0IGVucXVldWUgdCBhID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5IHQgKDIgKiB0Lmxlbmd0aCk7XG4gIHVuc2FmZV9zZXQgdCB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBkZXF1ZXVlX25vbmVtcHR5IHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgZWx0cyA9IHQuZWx0cyBpblxuICBsZXQgZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgZnJvbnQgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIGVsdHMgZnJvbnQ7XG4gIHQuZnJvbnQgPC0gZWx0c19pbmRleCB0IDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgZGVxdWV1ZV9ub25lbXB0eSB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX25vbmVtcHR5IHQpXG5sZXQgZnJvbnRfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyB0LmZyb250XG5sZXQgbGFzdF9ub25lbXB0eSB0ID0gdW5zYWZlX2dldCB0ICh0Lmxlbmd0aCAtIDEpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChmcm9udF9ub25lbXB0eSB0KVxubGV0IHBlZWtfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGZyb250X25vbmVtcHR5IHRcbmxldCBsYXN0IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGxhc3Rfbm9uZW1wdHkgdClcbmxldCBsYXN0X2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBsYXN0X25vbmVtcHR5IHRcblxubGV0IGNsZWFyIHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgdW5zYWZlX3Vuc2V0IHQgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMDtcbiAgICB0LmZyb250IDwtIDApXG47O1xuXG5sZXQgYmxpdF90cmFuc2ZlciB+c3JjIH5kc3QgP2xlbiAoKSA9XG4gIGluY19udW1fbXV0YXRpb25zIHNyYztcbiAgaW5jX251bV9tdXRhdGlvbnMgZHN0O1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBzcmMubGVuZ3RoXG4gICAgfCBTb21lIGxlbiAtPlxuICAgICAgaWYgbGVuIDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiUXVldWUuYmxpdF90cmFuc2ZlcjogbmVnYXRpdmUgbGVuZ3RoXCJcbiAgICAgICAgICAgICBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICAgICAgbWluIGxlbiBzcmMubGVuZ3RoXG4gIGluXG4gIGlmIGxlbiA+IDBcbiAgdGhlbiAoXG4gICAgc2V0X2NhcGFjaXR5IGRzdCAobWF4IChjYXBhY2l0eSBkc3QpIChkc3QubGVuZ3RoICsgbGVuKSk7XG4gICAgbGV0IGRzdF9zdGFydCA9IGRzdC5mcm9udCArIGRzdC5sZW5ndGggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgKCogVGhpcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHNpbXBseSBbZW5xdWV1ZSBkc3QgKGRlcXVldWVfbm9uZW1wdHkgc3JjKV0gKilcbiAgICAgIGxldCBzcmNfaSA9IChzcmMuZnJvbnQgKyBpKSBsYW5kIHNyYy5tYXNrIGluXG4gICAgICBsZXQgZHN0X2kgPSAoZHN0X3N0YXJ0ICsgaSkgbGFuZCBkc3QubWFzayBpblxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZVxuICAgICAgICBkc3QuZWx0c1xuICAgICAgICBkc3RfaVxuICAgICAgICAoT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gc3JjLmVsdHMgc3JjX2kpO1xuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBzcmMuZWx0cyBzcmNfaVxuICAgIGRvbmU7XG4gICAgZHN0Lmxlbmd0aCA8LSBkc3QubGVuZ3RoICsgbGVuO1xuICAgIHNyYy5mcm9udCA8LSAoc3JjLmZyb250ICsgbGVuKSBsYW5kIHNyYy5tYXNrO1xuICAgIHNyYy5sZW5ndGggPC0gc3JjLmxlbmd0aCAtIGxlbilcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgc2V0X2NhcGFjaXR5IHQgKEludC5tYXggKGNhcGFjaXR5IHQpICh0Lmxlbmd0aCArIExpc3QubGVuZ3RoIGwpKTtcbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgICBsZXQgciA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gICAgZG9uZTtcbiAgICAhcilcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgYSAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKVxuOztcblxuXG4oKiBbaXRlcl0gaXMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgYmVjYXVzZSBpbXBsZW1lbnRpbmcgaXQgaW4gdGVybXMgb2YgW2ZvbGRdIGlzXG4gICBzbG93ZXIuICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByZXN1bHQgOj0gdW5zYWZlX2dldCB0IGkgOjogIXJlc3VsdFxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcblxuXG4oKiBGb3IgW2NvbmNhdF9tYXBdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyXSwgd2UgZG9uJ3QgY3JlYXRlIFt0X3Jlc3VsdF0gd2l0aCBbdF0nc1xuICAgY2FwYWNpdHkgYmVjYXVzZSB3ZSBoYXZlIG5vIGlkZWEgaG93IG1hbnkgZWxlbWVudHMgW3RfcmVzdWx0XSB3aWxsIHVsdGltYXRlbHkgaG9sZC4gKilcbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyaSB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGUgfmNhcGFjaXR5OnNyYy5sZW5ndGggKCkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjIGRzdC5lbHRzO1xuICBkc3QubGVuZ3RoIDwtIHNyYy5sZW5ndGg7XG4gIGRzdFxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6KExpc3QubGVuZ3RoIGwpICgpIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbigqIFRoZSBxdWV1ZSBbdF0gcmV0dXJuZWQgYnkgW2NyZWF0ZV0gd2lsbCBoYXZlIFt0Lmxlbmd0aCA9IDBdLCBbdC5mcm9udCA9IDBdLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gSW50LmNlaWxfcG93MiBsZW5dLiAgU28sIHdlIG9ubHkgaGF2ZSB0byBzZXQgW3QubGVuZ3RoXSB0byBbbGVuXSBhZnRlclxuICAgdGhlIGJsaXQgdG8gbWFpbnRhaW4gYWxsIHRoZSBpbnZhcmlhbnRzOiBbdC5sZW5ndGhdIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgIGluIHRoZSBxdWV1ZSwgW3QuZnJvbnRdIGlzIHRoZSBhcnJheSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcXVldWUsIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICopXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBpZiBsZW4gPCAwXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiUXVldWUuaW5pdDogbmVnYXRpdmUgbGVuZ3RoXCIgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OmxlbiAoKSBpblxuICBhc3NlcnQgKE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzID49IGxlbik7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgaSAoZiBpKVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSBsZW47XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhID0gaW5pdCAoQXJyYXkubGVuZ3RoIGEpIH5mOihBcnJheS51bnNhZmVfZ2V0IGEpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgdC5sZW5ndGggfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgbWFwIHRhIH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0YS5udW1fbXV0YXRpb25zIGluXG4gIGxldCB0YiA9IGNyZWF0ZSB+Y2FwYWNpdHk6dGEubGVuZ3RoICgpIGluXG4gIHRiLmxlbmd0aCA8LSB0YS5sZW5ndGg7XG4gIGZvciBpID0gMCB0byB0YS5sZW5ndGggLSAxIGRvXG4gICAgbGV0IGIgPSBmICh1bnNhZmVfZ2V0IHRhIGkpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHRhIG51bV9tdXRhdGlvbnM7XG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0Yi5lbHRzIGkgYlxuICBkb25lO1xuICB0YlxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbWFwIHQgfmY6KGZ1biBhIC0+XG4gICAgbGV0IHJlc3VsdCA9IGYgIWkgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIHJlc3VsdClcbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCB4O1xuICB0XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdG9fbGlzdCB0IHw+IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIHw+IG9mX2xpc3RcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHxcblxuICBsZXQgdW5yZWFjaGFibGVfY29kZSA9IGZ1bmN0aW9uXG4gICAgfCAoXyA6IHQpIC0+IC5cbiAgOztcblxuICBsZXQgYWxsID0gW11cbiAgbGV0IGhhc2hfZm9sZF90IF8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IGNvbXBhcmUgYSBfID0gdW5yZWFjaGFibGVfY29kZSBhXG4gIGxldCBzZXhwX29mX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV90eXBlIFwiQmFzZS5Ob3RoaW5nLnRcIiBzZXhwXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbiAgbGV0IHRvX3N0cmluZyA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IG9mX3N0cmluZyAoXyA6IHN0cmluZykgPSBmYWlsd2l0aCBcIkJhc2UuTm90aGluZy5vZl9zdHJpbmc6IG5vdCBzdXBwb3J0ZWRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Ob3RoaW5nXCJcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBDYW1sLk5hdGl2ZWludFxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKG5hdGl2ZWludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9uYXRpdmVpbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gbmF0aXZlaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfbmF0aXZlaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9uYXRpdmVpbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbnhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVueFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bV9iaXRzID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIk5hdGl2ZWludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuTmF0aXZlaW50LmxvZ29yXG4gIGxldCAoIGxzciApID0gQ2FtbC5OYXRpdmVpbnQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBDYW1sLk5hdGl2ZWludC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgKHggOiBuYXRpdmVpbnQpID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gQ2FtbC5OYXRpdmVpbnQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLk5hdGl2ZWludC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLk5hdGl2ZWludC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBDYW1sLk5hdGl2ZWludC5wcmVkIHggPSAwblxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIG5hdGl2ZWludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAgWyBcIlwiLCBzZXhwX29mX25hdGl2ZWludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBpZiBDYW1sLk5hdGl2ZWludC5lcXVhbCBpIENhbWwuTmF0aXZlaW50Lm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKENhbWwuTmF0aXZlaW50LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9uYXRpdmVpbnQgdCA9IHRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50IHQgPSB0XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQubmF0aXZlaW50X3BvcGNvdW50XG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IHRvX2ludDMyX3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtOYXRpdmVpbnRdIGFuZCBbTmF0aXZlaW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuZXh0ZXJuYWwgYnN3YXAgOiB0IC0+IHQgPSBcIiVic3dhcF9uYXRpdmVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgLi4vVEhJUkQtUEFSVFkudHh0ICAqKVxuKCogIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgTWFwX2ludGZcblxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXBfaW50Zi5GaW5pc2hlZF9vcl91bmZpbmlzaGVkXG5cbiAgKCogVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGVzdGVkIGluIFt0ZXN0X21hcC5tbF0gdG8gbWFrZSBzdXJlIG91ciB1c2Ugb2ZcbiAgICAgW0NhbWwuT2JqLm1hZ2ljXSBpcyBjb3JyZWN0IGFuZCBzYWZlLiAqKVxuICBsZXQgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0ID0gQ2FtbC5PYmoubWFnaWNcbiAgbGV0IHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudCA9IENhbWwuT2JqLm1hZ2ljXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXBfaW50Zi5NZXJnZV9lbGVtZW50XG5cbiAgbGV0IGxlZnQgPSBmdW5jdGlvblxuICAgIHwgYFJpZ2h0IF8gLT4gTm9uZVxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBTb21lIGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IFNvbWUgcmlnaHRcbiAgOztcblxuICBsZXQgbGVmdF92YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBSaWdodCBfIC0+IGRlZmF1bHRcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gbGVmdFxuICA7O1xuXG4gIGxldCByaWdodF92YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBMZWZ0IF8gLT4gZGVmYXVsdFxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiByaWdodFxuICA7O1xuXG4gIGxldCB2YWx1ZXMgdCB+bGVmdF9kZWZhdWx0IH5yaWdodF9kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBMZWZ0IGxlZnQgLT4gbGVmdCwgcmlnaHRfZGVmYXVsdFxuICAgIHwgYFJpZ2h0IHJpZ2h0IC0+IGxlZnRfZGVmYXVsdCwgcmlnaHRcbiAgICB8IGBCb3RoIChsZWZ0LCByaWdodCkgLT4gbGVmdCwgcmlnaHRcbiAgOztcbmVuZFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5leGNlcHRpb24gRHVwbGljYXRlIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRHVwbGljYXRlXSAoZnVuY3Rpb25cbiAgICB8IER1cGxpY2F0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuRHVwbGljYXRlXCJcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgTGVhZiBvZiAnayAqICd2XG4gICAgfCBOb2RlIG9mICgnaywgJ3YpIHQgKiAnayAqICd2ICogKCdrLCAndikgdCAqIGludFxuXG4gIHR5cGUgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIHRcblxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9rZXkgbG93ZXIgayA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2tleSBrIHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiAoaywgXykgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgfCBOb2RlIChsLCBrLCBfLCByLCBoKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIGspIGNvbXBhcmVfa2V5IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSBrKSB1cHBlciBjb21wYXJlX2tleSByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9rZXkgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9rZXkgdFxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMiAqKVxuICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA9IDAgJiYgaHIgPSAwXG4gICAgdGhlbiBMZWFmICh4LCBkKVxuICAgIGVsc2UgTm9kZSAobCwgeCwgZCwgciwgaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IExlYWYgKGtleSwgZGF0YSlcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5NYXAgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpIDogKF8sIF8pIHQgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgaywgdiA9IGYgaSBpblxuICAgICAgICBMZWFmIChrLCB2KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgRW1wdHksIDIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IsIHZyID0gZiAoaSArIDIpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIExlYWYgKGtyLCB2ciksIDIpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgdiByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDJcbiAgICAgICAgIHx8XG4gICAgICAgICBsZXQgazAsIF8gPSBhcnJheS4oMCkgaW5cbiAgICAgICAgIGxldCBrMSwgXyA9IGFycmF5LigxKSBpblxuICAgICAgICAgY29tcGFyZV9rZXkgazAgazEgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0LCBhcnJheV9sZW5ndGhcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggYXJyYXkgd2l0aFxuICAgIHwgW3x8XSB8IFt8IF8gfF0gLT4gUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSlcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oMCkpIChmc3QgYXJyYXkuKDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LihpKSkgKGZzdCBhcnJheS4oaSArIDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5KSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDMgKilcbiAgbGV0IGJhbCBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICAgIGxldCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaHIgKyAyICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbGQsIGxyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChscnYsIGxyZCkgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgRW1wdHkpIGxydiBscmQgKGNyZWF0ZSBFbXB0eSB4IGQgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscmQsIGxyciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaGwgKyAyICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcmQsIHJyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChybHYsIHJsZCkgLT4gY3JlYXRlIChjcmVhdGUgbCB4IGQgRW1wdHkpIHJsdiBybGQgKGNyZWF0ZSBFbXB0eSBydiByZCBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybGQsIHJsciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycikpKVxuICAgIGVsc2UgY3JlYXRlIGwgeCBkIHJcbiAgOztcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleSB+c2V4cF9vZl9rZXkgPVxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJbTWFwLmFkZF9leG5dIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBtb2R1bGUgQWRkX29yX3NldCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFkZF9leG5faW50ZXJuYWxcbiAgICAgIHwgQWRkX2V4blxuICAgICAgfCBTZXRcbiAgZW5kXG5cblxuICBsZXQgcmVjIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgICAgIH5rZXk6eFxuICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICAgICB+KGFkZF9vcl9zZXQgOiBBZGRfb3Jfc2V0LnQpXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiAoeCwgZGF0YSksIGxlbmd0aCArIDFcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGVcbiAgICAgICAgfCBBZGRfZXhuIC0+IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleVxuICAgICAgICB8IFNldCAtPiBMZWFmICh4LCBkYXRhKSwgbGVuZ3RoKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBOb2RlIChMZWFmICh4LCBkYXRhKSwgdiwgZCwgRW1wdHksIDIpLCBsZW5ndGggKyAxXG4gICAgICBlbHNlIE5vZGUgKEVtcHR5LCB2LCBkLCBMZWFmICh4LCBkYXRhKSwgMiksIGxlbmd0aCArIDFcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGVcbiAgICAgICAgfCBBZGRfZXhuIC0+IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleVxuICAgICAgICB8IFNldCAtPiBOb2RlIChsLCB4LCBkYXRhLCByLCBoKSwgbGVuZ3RoKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsLCBsZW5ndGggPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgbCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHIsIGxlbmd0aCA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSByIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXQ6QWRkX2V4blxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgIHRcbiAgICAgIH5sZW5ndGhcbiAgICAgIH5rZXlcbiAgICAgIH5kYXRhXG4gICAgICB+Y29tcGFyZV9rZXlcbiAgICAgIH5zZXhwX29mX2tleVxuICAgICAgfmFkZF9vcl9zZXQ6QWRkX2V4bl9pbnRlcm5hbFxuICA7O1xuXG4gIGxldCBzZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICB0XG4gICAgICB+bGVuZ3RoXG4gICAgICB+a2V5XG4gICAgICB+ZGF0YVxuICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICB+c2V4cF9vZl9rZXk6KGZ1biBfIC0+IExpc3QgW10pXG4gICAgICB+YWRkX29yX3NldDpTZXRcbiAgOztcblxuICBsZXQgc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleSA9IGZzdCAoc2V0IHQgfmxlbmd0aDowIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIEZyYWdtZW50ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID1cbiAgICAgICAgeyBsZWZ0X3N1YnRyZWUgOiAoJ2ssICd2KSB0XG4gICAgICAgIDsga2V5IDogJ2tcbiAgICAgICAgOyBkYXRhIDogJ3ZcbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2luZ2xldG9uX3RvX3RyZWVfZXhuID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfSAtPiBzaW5nbGV0b24ga2V5IGRhdGFcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiTWFwLnNpbmdsZXRvbl90b190cmVlX2V4bjogbm90IGEgc2luZ2xldG9uXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzaW5nbGV0b24gfmtleSB+ZGF0YSA9IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9XG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQocil8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBjb2xsYXBzZSBsIHIgPSBjcmVhdGUgbC5sZWZ0X3N1YnRyZWUgbC5rZXkgbC5kYXRhIHJcblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyLmxlZnRfc3VidHJlZSl8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBqb2luIGwgciA9IHsgciB3aXRoIGxlZnRfc3VidHJlZSA9IGNvbGxhcHNlIGwgci5sZWZ0X3N1YnRyZWUgfVxuICAgICAgbGV0IG1heF9rZXkgdCA9IHQua2V5XG4gICAgZW5kXG5cbiAgICAoKiogQnVpbGQgdHJlZXMgZnJvbSBzaW5nbGV0b25zIGluIGEgYmFsYW5jZWQgd2F5IGJ5IHVzaW5nIHNrZXcgYmluYXJ5IGVuY29kaW5nLlxuICAgICAgICBFYWNoIGxldmVsIGNvbnRhaW5zIHRyZWVzIG9mIHRoZSBzYW1lIGhlaWdodCwgY29uc2VjdXRpdmUgbGV2ZWxzIGhhdmUgY29uc2VjdXRpdmVcbiAgICAgICAgaGVpZ2h0cy4gVGhlcmUgYXJlIG5vIGdhcHMuIFRoZSBmaXJzdCBsZXZlbCBhcmUgc2luZ2xlIGtleXMuXG4gICAgKilcbiAgICB0eXBlICgnaywgJ3YpIHQgPVxuICAgICAgfCBaZXJvIG9mIHVuaXRcbiAgICAgICgqIFt1bml0XSB0byBtYWtlIHBhdHRlcm4gbWF0Y2hpbmcgZmFzdGVyICopXG4gICAgICB8IE9uZSBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudFxuICAgICAgfCBUd28gb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG5cbiAgICBsZXQgZW1wdHkgPSBaZXJvICgpXG5cbiAgICBsZXQgYWRkX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgeCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gT25lICh0LCB4KVxuICAgICAgICB8IE9uZSAodCwgeSkgLT4gVHdvICh0LCB5LCB4KVxuICAgICAgICB8IFR3byAodCwgeiwgeSkgLT4gT25lIChnbyB0IChGcmFnbWVudC5qb2luIHogeSksIHgpXG4gICAgICBpblxuICAgICAgZnVuIHQgfmtleSB+ZGF0YSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b24gfmtleSB+ZGF0YSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWVfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCByID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiByXG4gICAgICAgIHwgT25lICh0LCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSBsIHIpXG4gICAgICAgIHwgVHdvICh0LCBsbCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgKEZyYWdtZW50LmpvaW4gbGwgbCkgcilcbiAgICAgIGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IEVtcHR5XG4gICAgICB8IE9uZSAodCwgcikgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgICB8IFR3byAodCwgbCwgcikgLT4gZ28gKE9uZSAodCwgbCkpIChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICA7O1xuXG4gICAgbGV0IG1heF9rZXkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IE5vbmVcbiAgICAgIHwgT25lIChfLCByKSB8IFR3byAoXywgXywgcikgLT4gU29tZSAoRnJhZ21lbnQubWF4X2tleSByKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXkgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgbGV0IGJ1aWxkZXIsIGxlbmd0aCA9XG4gICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICBzZXFcbiAgICAgICAgICB+aW5pdDooQnVpbGRfaW5jcmVhc2luZy5lbXB0eSwgMClcbiAgICAgICAgICB+ZjooZnVuIChidWlsZGVyLCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBCdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgYnVpbGRlciB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJlX2tleSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZTogbm9uLWluY3JlYXNpbmcga2V5XCIpXG4gICAgICAgICAgICB8IF8gLT4gQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIGJ1aWxkZXIgfmtleSB+ZGF0YSwgbGVuZ3RoICsgMSlcbiAgICAgIGluXG4gICAgICBPayAoQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCBidWlsZGVyLCBsZW5ndGgpKVxuICA7O1xuXG4gICgqIExpa2UgW2JhbF0gYnV0IGFsbG93cyBhbnkgZGlmZmVyZW5jZSBpbiBoZWlnaHQgYmV0d2VlbiBbbF0gYW5kIFtyXS5cblxuICAgICBPKHxoZWlnaHQgbCAtIGhlaWdodCByfCkgKilcbiAgbGV0IHJlYyBqb2luIGwgayBkIHIgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IHNldCcgciBrIGQgfmNvbXBhcmVfa2V5XG4gICAgfCBfLCBFbXB0eSAtPiBzZXQnIGwgayBkIH5jb21wYXJlX2tleVxuICAgIHwgTGVhZiAobGssIGxkKSwgXyAtPiBzZXQnIChzZXQnIHIgayBkIH5jb21wYXJlX2tleSkgbGsgbGQgfmNvbXBhcmVfa2V5XG4gICAgfCBfLCBMZWFmIChyaywgcmQpIC0+IHNldCcgKHNldCcgbCBrIGQgfmNvbXBhcmVfa2V5KSByayByZCB+Y29tcGFyZV9rZXlcbiAgICB8IE5vZGUgKGxsLCBsaywgbGQsIGxyLCBsaCksIE5vZGUgKHJsLCByaywgcmQsIHJyLCByaCkgLT5cbiAgICAgICgqIFtiYWxdIHJlcXVpcmVzIGhlaWdodCBkaWZmZXJlbmNlIDw9IDMuICopXG4gICAgICBpZiBsaCA+IHJoICsgM1xuICAgICAgKCogW2hlaWdodCBsciA+PSBoZWlnaHQgcl0sXG4gICAgICAgICB0aGVyZWZvcmUgW2hlaWdodCAoam9pbiBsciBrIGQgciAuLi4pXSBpcyBbaGVpZ2h0IHJsICsgMV0gb3IgW2hlaWdodCBybF1cbiAgICAgICAgIHRoZXJlZm9yZSB0aGUgaGVpZ2h0IGRpZmZlcmVuY2Ugd2l0aCBbbGxdIHdpbGwgYmUgPD0gMyAqKVxuICAgICAgdGhlbiBiYWwgbGwgbGsgbGQgKGpvaW4gbHIgayBkIHIgfmNvbXBhcmVfa2V5KVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgM1xuICAgICAgdGhlbiBiYWwgKGpvaW4gbCBrIGQgcmwgfmNvbXBhcmVfa2V5KSByayByZCByclxuICAgICAgZWxzZSBiYWwgbCBrIGQgclxuICA7O1xuXG4gIGxldCByZWMgc3BsaXQgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgeCBrIGluXG4gICAgICBpZiBjbXAgPSAwXG4gICAgICB0aGVuIEVtcHR5LCBTb21lIChrLCBkKSwgRW1wdHlcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgdFxuICAgICAgZWxzZSB0LCBOb25lLCBFbXB0eVxuICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2tleSB4IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gbCwgU29tZSAoaywgZCksIHJcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsbCwgbWF5YmUsIGxyID0gc3BsaXQgbCB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBsbCwgbWF5YmUsIGpvaW4gbHIgayBkIHIgfmNvbXBhcmVfa2V5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBybCwgbWF5YmUsIHJyID0gc3BsaXQgciB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBqb2luIGwgayBkIHJsIH5jb21wYXJlX2tleSwgbWF5YmUsIHJyKVxuICA7O1xuXG4gIGxldCBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50byB4IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGxlZnQsIGJvdW5kYXJ5X29wdCwgcmlnaHQgPSBzcGxpdCB0IHggfmNvbXBhcmVfa2V5IGluXG4gICAgbWF0Y2ggYm91bmRhcnlfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gbGVmdCwgcmlnaHRcbiAgICB8IFNvbWUgKGtleSwgZGF0YSkgLT5cbiAgICAgIGxldCBpbnNlcnRfaW50byB0cmVlID0gZnN0IChzZXQgdHJlZSB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXkpIGluXG4gICAgICAobWF0Y2ggaW50byB3aXRoXG4gICAgICAgfCBgTGVmdCAtPiBpbnNlcnRfaW50byBsZWZ0LCByaWdodFxuICAgICAgIHwgYFJpZ2h0IC0+IGxlZnQsIGluc2VydF9pbnRvIHJpZ2h0KVxuICA7O1xuXG4gIGxldCBzcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH4obG93ZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+KHVwcGVyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgPVxuICAgIGlmIE1heWJlX2JvdW5kLmJvdW5kc19jcm9zc2VkXG4gICAgICAgICB+Y29tcGFyZTpjb21wYXJlX2tleVxuICAgICAgICAgfmxvd2VyOmxvd2VyX2JvdW5kXG4gICAgICAgICB+dXBwZXI6dXBwZXJfYm91bmRcbiAgICB0aGVuIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZWZ0LCBtaWRfYW5kX3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggbG93ZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBlbXB0eSwgdFxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGV0IG1pZCwgcmlnaHQgPVxuICAgICAgICBtYXRjaCB1cHBlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IG1pZF9hbmRfcmlnaHQsIGVtcHR5XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+XG4gICAgICAgICAgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxlZnQsIG1pZCwgcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIFNvbWUgZCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGQgZWxzZSBmaW5kIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZGF0YSA9IGRhdGEgOjogT3B0aW9uLnZhbHVlIChmaW5kIHQga2V5IH5jb21wYXJlX2tleSkgfmRlZmF1bHQ6W10gaW5cbiAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggZmluZCB0IHggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgbCAtPiBsXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgaWZfbm90X2ZvdW5kIGtleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgcmFpc2UgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIk1hcC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHNleHBfb2Zfa2V5IGtleSBdKSlcbiAgICBpblxuICAgIGxldCByZWMgZmluZF9leG4gdCB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gZCBlbHNlIGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIGQgZWxzZSBmaW5kX2V4biAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgeCB+Y29tcGFyZV9rZXkgPSBPcHRpb24uaXNfc29tZSAoZmluZCB0IHggfmNvbXBhcmVfa2V5KVxuXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoRW1wdHksIGssIGQsIF8sIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIGssIGQsIEVtcHR5LCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgXywgXywgciwgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIF8sIHIsIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHgsIGQsIHIsIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgeCBkIHJcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbWF4X2VsdCBsb3dlcl9wYXJ0LCBtaW5fZWx0IHVwcGVyX3BhcnQgd2l0aFxuICAgIHwgTm9uZSwgXyAtPiBgT2sgdXBwZXJfcGFydFxuICAgIHwgXywgTm9uZSAtPiBgT2sgbG93ZXJfcGFydFxuICAgIHwgU29tZSAobWF4X2xvd2VyLCBfKSwgU29tZSAobWluX3VwcGVyLCB2KSB3aGVuIGNvbXBhcmVfa2V5IG1heF9sb3dlciBtaW5fdXBwZXIgPCAwIC0+XG4gICAgICBsZXQgdXBwZXJfcGFydF93aXRob3V0X21pbiA9IHJlbW92ZV9taW5fZWx0IHVwcGVyX3BhcnQgaW5cbiAgICAgIGBPayAoam9pbiB+Y29tcGFyZV9rZXkgbG93ZXJfcGFydCBtaW5fdXBwZXIgdiB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluKVxuICAgIHwgXyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSA9XG4gICAgKCogVGhpcyBhc3N1bWVzIHRoYXQgbWluIDw9IG1heCwgd2hpY2ggaXMgY2hlY2tlZCBieSB0aGUgb3V0ZXIgZnVuY3Rpb24uICopXG4gICAgbGV0IHJlYyBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGluaXRcbiAgICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBtaW4gPCAwIHx8IGNvbXBhcmVfa2V5IGsgbWF4ID4gMFxuICAgICAgICB0aGVuICgqIGsgPCBtaW4gfHwgayA+IG1heCAqKVxuICAgICAgICAgIGluaXRcbiAgICAgICAgZWxzZSBmIH5rZXk6ayB+ZGF0YTpkIGluaXRcbiAgICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGNfbWluID0gY29tcGFyZV9rZXkgayBtaW4gaW5cbiAgICAgICAgaWYgY19taW4gPCAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrIDwgbWluLCB0aGVuIHRoaXMgbm9kZSBhbmQgaXRzIGxlZnQgYnJhbmNoIGFyZSBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIGlmIGNfbWluID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA9IG1pbiwgdGhlbiB0aGlzIG5vZGUncyBsZWZ0IGJyYW5jaCBpcyBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0OihmIH5rZXk6ayB+ZGF0YTpkIGluaXQpIH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBrID4gbWluICopXG4gICAgICAgICAgbGV0IHogPSBnbyBsIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBsZXQgY19tYXggPSBjb21wYXJlX2tleSBrIG1heCBpblxuICAgICAgICAgICgqIGlmIGsgPiBtYXgsIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICBpZiBjX21heCA+IDBcbiAgICAgICAgICB0aGVuIHpcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCB6ID0gZiB+a2V5OmsgfmRhdGE6ZCB6IGluXG4gICAgICAgICAgICAoKiBpZiBrID0gbWF4LCB0aGVuIHdlIGZvbGQgaW4gdGhpcyBvbmUgbGFzdCB2YWx1ZSBhbmQgd2UncmUgZG9uZSAqKVxuICAgICAgICAgICAgaWYgY19tYXggPSAwIHRoZW4geiBlbHNlIGdvIHIgfm1pbiB+bWF4IH5pbml0OnogfmYgfmNvbXBhcmVfa2V5KSlcbiAgICBpblxuICAgIGZ1biB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGNvbXBhcmVfa2V5IG1pbiBtYXggPD0gMCB0aGVuIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBlbHNlIGluaXRcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5ID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICAgICB0XG4gICAgICAgICB+bWluXG4gICAgICAgICB+bWF4XG4gICAgICAgICB+aW5pdDpbXVxuICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIGwgLT4gKGtleSwgZGF0YSkgOjogbClcbiAgICAgICAgIH5jb21wYXJlX2tleSlcbiAgOztcblxuICBsZXQgY29uY2F0X3VuY2hlY2tlZCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB4LCBkID0gbWluX2VsdF9leG4gdDIgaW5cbiAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBSZW1vdmVfbm9fb3BcblxuICBsZXQgcmVtb3ZlIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBSZW1vdmVfbm9fb3BcbiAgICAgIHwgTGVhZiAodiwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgeCB2ID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBsZW5ndGggLSAxXG4gICAgICAgIGVsc2UgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGNvbmNhdF91bmNoZWNrZWQgbCByLCBsZW5ndGggLSAxXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHJlbW92ZV9sb29wIGwgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSByZW1vdmVfbG9vcCByIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgIGluXG4gICAgdHJ5IHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBSZW1vdmVfbm9fb3AgLT4gdCwgbGVuZ3RoXG4gIDs7XG5cbiAgKCogVXNlIGV4Y2VwdGlvbiB0byBhdm9pZCB0cmVlLXJlYnVpbGQgaW4gbm8tb3AgY2FzZSAqKVxuICBleGNlcHRpb24gQ2hhbmdlX25vX29wXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyBjaGFuZ2VfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAobWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBDaGFuZ2Vfbm9fb3AgKCogZXF1aXZhbGVudCB0byByZXR1cm5pbmc6IEVtcHR5ICopXG4gICAgICAgICB8IFNvbWUgZGF0YSAtPiBMZWFmIChrZXksIGRhdGEpLCBsZW5ndGggKyAxKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eSwgbGVuZ3RoIC0gMVxuICAgICAgICAgIHwgU29tZSBkJyAtPiBMZWFmICh2LCBkJyksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgRW1wdHksIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIEVtcHR5IHYgZCByLCBsZW5ndGgpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGNvbmNhdF91bmNoZWNrZWQgbCByLCBsZW5ndGggLSAxXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgIGluXG4gICAgdHJ5IGNoYW5nZV9jb3JlIHQga2V5IGYgd2l0aFxuICAgIHwgQ2hhbmdlX25vX29wIC0+IHQsIGxlbmd0aFxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgdXBkYXRlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBmIE5vbmUgaW5cbiAgICAgICAgTGVhZiAoa2V5LCBkYXRhKSwgbGVuZ3RoICsgMVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkJyA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICBMZWFmICh2LCBkJyksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgRW1wdHksIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIEVtcHR5IHYgZCByLCBsZW5ndGgpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRhdGEgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSB1cGRhdGVfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgIGluXG4gICAgdXBkYXRlX2NvcmUgdCBrZXkgZlxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGNoYW5nZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSB8IFNvbWUgKFtdIHwgWyBfIF0pIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXyA6OiAoXyA6OiBfIGFzIG5vbl9lbXB0eV90YWlsKSkgLT4gU29tZSBub25fZW1wdHlfdGFpbClcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJfa2V5cyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBfKSAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIF8sIHIsIF8pIC0+XG4gICAgICBpdGVyX2tleXMgfmYgbDtcbiAgICAgIGYgdjtcbiAgICAgIGl0ZXJfa2V5cyB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKF8sIGQpIC0+IGYgZFxuICAgIHwgTm9kZSAobCwgXywgZCwgciwgXykgLT5cbiAgICAgIGl0ZXIgfmYgbDtcbiAgICAgIGYgZDtcbiAgICAgIGl0ZXIgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlcmkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGl0ZXJpIH5mIGw7XG4gICAgICBmIH5rZXk6diB+ZGF0YTpkO1xuICAgICAgaXRlcmkgfmYgclxuICA7O1xuXG4gIGxldCBpdGVyaV91bnRpbCA9XG4gICAgbGV0IHJlYyBpdGVyaV91bnRpbF9sb29wIHQgfmYgOiBDb250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGl0ZXJpX3VudGlsX2xvb3AgfmYgbCB3aXRoXG4gICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgfCBDb250aW51ZSAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgICAgfCBDb250aW51ZSAtPiBpdGVyaV91bnRpbF9sb29wIH5mIHIpKVxuICAgIGluXG4gICAgZnVuIHQgfmYgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC5vZl9jb250aW51ZV9vcl9zdG9wIChpdGVyaV91bnRpbF9sb29wIHQgfmYpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiBkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcCB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgIGxldCByJyA9IG1hcCB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgbWFwaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIH5rZXk6diB+ZGF0YTpkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcGkgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gbWFwaSB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgZm9sZCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9sb29wIHQgfmFjYyB+ZiA6IChfLCBfKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2NcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfbG9vcCBsIH5hY2MgfmYgd2l0aFxuICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIGFjYyB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgICAgfCBDb250aW51ZSBhY2MgLT4gZm9sZF91bnRpbF9sb29wIHIgfmFjYyB+ZikpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2xvb3AgdCB+YWNjOmluaXQgfmYgd2l0aFxuICAgIHwgQ29udGludWUgYWNjIC0+IGZpbmlzaCBhY2NcbiAgICB8IFN0b3Agc3RvcCAtPiBzdG9wXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkX3JpZ2h0IHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiBrZXkgdGhlbiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIGFjY3UgfmNvbXBhcmVfa2V5IGVsc2UgYWNjdSwgbGVuZ3RoKVxuICA7O1xuXG5cbiAgbGV0IGZpbHRlciB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIGRhdGEgdGhlbiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIGFjY3UgfmNvbXBhcmVfa2V5IGVsc2UgYWNjdSwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYgfmtleSB+ZGF0YSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgbWF0Y2ggZiBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2N1LCBsZW5ndGhcbiAgICAgIHwgU29tZSBiIC0+IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGE6YiBhY2N1IH5jb21wYXJlX2tleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2N1LCBsZW5ndGhcbiAgICAgIHwgU29tZSBiIC0+IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGE6YiBhY2N1IH5jb21wYXJlX2tleSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OigoRW1wdHksIDApLCAoRW1wdHksIDApKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIChwYWlyMSwgcGFpcjIpIC0+XG4gICAgICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgeCAtPlxuICAgICAgICAgIGxldCB0LCBsZW5ndGggPSBwYWlyMSBpblxuICAgICAgICAgIHNldCB0IH5rZXkgfmRhdGE6eCB+Y29tcGFyZV9rZXkgfmxlbmd0aCwgcGFpcjJcbiAgICAgICAgfCBTZWNvbmQgeSAtPlxuICAgICAgICAgIGxldCB0LCBsZW5ndGggPSBwYWlyMiBpblxuICAgICAgICAgIHBhaXIxLCBzZXQgdCB+a2V5IH5kYXRhOnkgfmNvbXBhcmVfa2V5IH5sZW5ndGgpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgcGFydGl0aW9uX21hcGkgdCB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBpZiBmIH5rZXkgfmRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgcGFydGl0aW9uX21hcGkgdCB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGlmIGYgZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2sgKiAndiAqICgnaywgJ3YpIHRyZWUgKiAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgdCAoZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgdCAoZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdHJlZSB0cmVlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHRyZWUgRW5kXG4gICAgbGV0IG9mX3RyZWVfcmlnaHQgdHJlZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCB0cmVlIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIF8sIHIsIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZGF0YSBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgICAgdGhlbiBsb29wIGUxIGUyXG4gICAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBjb21wYXJlX2tleSBkYXRhX2VxdWFsIHQxIHQyID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gdHJ1ZVxuICAgICAgICB8IEVuZCwgXyB8IF8sIEVuZCAtPiBmYWxzZVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgY29tcGFyZV9rZXkgdjEgdjIgPSAwXG4gICAgICAgICAgJiYgZGF0YV9lcXVhbCBkMSBkMlxuICAgICAgICAgICYmIGlmIHBoeXNfZXF1YWwgcjEgcjIgdGhlbiBsb29wIGUxIGUyIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZvbGQgfmluaXQgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gaW5pdFxuICAgICAgfCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGxldCBuZXh0ID0gZiB+a2V5IH5kYXRhIGluaXQgaW5cbiAgICAgICAgZm9sZCAoY29ucyB0cmVlIGVudW0pIH5pbml0Om5leHQgfmZcbiAgICA7O1xuXG4gICAgbGV0IGZvbGQyIGNvbXBhcmVfa2V5IHQxIHQyIH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiBjdXJyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBjdXJyXG4gICAgICAgIHwgRW5kLCBfIC0+XG4gICAgICAgICAgZm9sZCB0MiB+aW5pdDpjdXJyIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gZiB+a2V5IH5kYXRhOihgUmlnaHQgZGF0YSkgYWNjKVxuICAgICAgICB8IF8sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgdDEgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYExlZnQgZGF0YSkgYWNjKVxuICAgICAgICB8IE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgQm90aCAodjEsIHYyKSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgTGVmdCB2MSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIgbmV4dClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsyIH5kYXRhOihgUmlnaHQgdjIpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBpbml0XG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICAgIHwgRW5kLCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGtleSwgYFJpZ2h0IGRhdGEpLCAoRW5kLCBjb25zIHRyZWUgZW51bSkpXG4gICAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSwgRW5kIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGtleSwgYExlZnQgZGF0YSksIChjb25zIHRyZWUgZW51bSwgRW5kKSlcbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgZGF0YV9lcXVhbCB2MSB2MlxuICAgICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLlNraXAgbmV4dF9zdGF0ZVxuICAgICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazEsIGBVbmVxdWFsICh2MSwgdjIpKSwgbmV4dF9zdGF0ZSkpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMSwgYExlZnQgdjEpLCAoY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQpKVxuICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsyLCBgUmlnaHQgdjIpLCAobGVmdCwgY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6KG9mX3RyZWUgdDEsIG9mX3RyZWUgdDIpIH5mOnN0ZXBcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgYWNjID1cbiAgICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgICB8IEVuZCwgZW51bSAtPiBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCBlbnVtLCBFbmQgLT4gZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGlmIGRhdGFfZXF1YWwgdjEgdjIgdGhlbiBhY2MgZWxzZSBmIGFjYyAoazEsIGBVbmVxdWFsICh2MSwgdjIpKSBpblxuICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgdGhlbiBsb29wIGVudW0xIGVudW0yIGFjY1xuICAgICAgICAgICAgZWxzZSBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgYWNjKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrMSB2MSBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgcmlnaHQgYWNjKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgazIgdjIgaW5cbiAgICAgICAgICAgIGxvb3AgbGVmdCAoY29ucyB0cmVlMiBlbnVtMikgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKG9mX3RyZWUgdDEpIChvZl90cmVlIHQyKSBpbml0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGssIHYpLCBFbnVtLmNvbnMgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZSB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrLCB2KSwgRW51bS5jb25zX3JpZ2h0IHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWVfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmdfa2V5KVxuICAgICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgKGtleSwgZGF0YSkgLT4gc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleVxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIEVudW0uZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMlxuICAgICAgY29tcGFyZV9rZXlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDEpXG4gICAgICAoRW51bS5vZl90cmVlIHQyKVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAoKSAtPiBmIH5rZXkgfmRhdGEpXG4gIDs7XG5cbiAgbGV0IGZvbGQyIHQxIHQyIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMiBjb21wYXJlX2tleSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKSB+ZiB+aW5pdFxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgICgqIFtFbnVtLmZvbGRfZGlmZnNdIGlzIGEgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLCBidXQgaXMgY29uc2lkZXJhYmx5XG4gICAgICAgc2xvd2VyLCBhcyB3ZSBoYXZlIHRvIGFsbG9jYXRlIHF1aXRlIGEgbG90IG9mIHN0YXRlIHRvIHRyYWNrIGVudW1lcmF0aW9uIG9mIGEgdHJlZS5cbiAgICAgICBBdm9pZCBpZiB3ZSBjYW4uXG4gICAgKilcbiAgICBsZXQgc2xvdyB4IHkgfmluaXQgPSBFbnVtLmZvbGRfc3ltbWV0cmljX2RpZmYgeCB5IH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+ZiB+aW5pdCBpblxuICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICBsZXQgZGVsdGEgYWNjIGsgdiB2JyA9IGlmIGRhdGFfZXF1YWwgdiB2JyB0aGVuIGFjYyBlbHNlIGYgYWNjIChrLCBgVW5lcXVhbCAodiwgdicpKSBpblxuICAgICgqIElmIHR3byB0cmVlcyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhdCB0aGUgcm9vdCAoYW5kIHRoZSBzYW1lIGtleSwgaWYgdGhleSdyZVxuICAgICAgIFtOb2RlXXMpIHdlIGNhbiB0cml2aWFsbHkgZGlmZiBlYWNoIHN1YnBhcnQgaW4gb2J2aW91cyB3YXlzLiAqKVxuICAgIGxldCByZWMgbG9vcCB0IHQnIGFjYyA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHQgdCdcbiAgICAgIHRoZW4gYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCwgdCcgd2l0aFxuICAgICAgICB8IEVtcHR5LCBuZXdfdmFscyAtPlxuICAgICAgICAgIGZvbGQgbmV3X3ZhbHMgfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCBvbGRfdmFscywgRW1wdHkgLT5cbiAgICAgICAgICBmb2xkIG9sZF92YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgTGVhZiAoaywgdiksIExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgayBrJyB3aXRoXG4gICAgICAgICAgIHwgeCB3aGVuIHggPSAwIC0+IGRlbHRhIGFjYyBrIHYgdidcbiAgICAgICAgICAgfCB4IHdoZW4geCA8IDAgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrIHYgaW5cbiAgICAgICAgICAgICBhZGQgYWNjIGsnIHYnXG4gICAgICAgICAgIHwgXyAoKiB3aGVuIHggPiAwICopIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgaycgdicgaW5cbiAgICAgICAgICAgICByZW1vdmUgYWNjIGsgdilcbiAgICAgICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSwgTm9kZSAobCcsIGsnLCB2JywgcicsIF8pIHdoZW4gY29tcGFyZV9rZXkgayBrJyA9IDAgLT5cbiAgICAgICAgICBsZXQgYWNjID0gbG9vcCBsIGwnIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBkZWx0YSBhY2MgayB2IHYnIGluXG4gICAgICAgICAgbG9vcCByIHInIGFjY1xuICAgICAgICAoKiBPdXIgcm9vdHMgYXJlbid0IHRoZSBzYW1lIGtleS4gRmFsbGJhY2sgdG8gdGhlIHNsb3cgbW9kZS4gVHJlZXMgd2l0aCBzbWFsbFxuICAgICAgICAgICBkaWZmcyB3aWxsIG9ubHkgZG8gdGhpcyBvbiB2ZXJ5IHNtYWxsIHBhcnRzIG9mIHRoZSB0cmVlIChob3BlZnVsbHkgLSBpZiB0aGVcbiAgICAgICAgICAgb3ZlcmFsbCByb290IGlzIHJlYmFsYW5jZWQsIHdlJ2xsIGVhdCB0aGUgd2hvbGUgY29zdCwgdW5mb3J0dW5hdGVseS4pICopXG4gICAgICAgIHwgTm9kZSBfLCBOb2RlIF8gfCBOb2RlIF8sIExlYWYgXyB8IExlYWYgXywgTm9kZSBfIC0+IHNsb3cgdCB0JyB+aW5pdDphY2MpXG4gICAgaW5cbiAgICBsb29wIHQxIHQyIGluaXRcbiAgOztcblxuICBsZXQgcmVjIGxlbmd0aCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAobCwgXywgXywgciwgXykgLT4gbGVuZ3RoIGwgKyBsZW5ndGggciArIDFcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgZm9sZFxuICAgICAgdFxuICAgICAgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSlcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSBzdGF0ZSAtPiBoYXNoX2ZvbGRfZGF0YSAoaGFzaF9mb2xkX2tleSBzdGF0ZSBrZXkpIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGtleXMgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gbGlzdCAtPiBrZXkgOjogbGlzdCkgdCB+aW5pdDpbXVxuICBsZXQgZGF0YSB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBsaXN0IC0+IGRhdGEgOjogbGlzdCkgdCB+aW5pdDpbXVxuXG4gIG1vZHVsZSB0eXBlIEZvbGRhYmxlID0gc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9mb2xkYWJsZSAoTSA6IEZvbGRhYmxlKSA9IHN0cnVjdFxuICAgIGxldCBvZl9mb2xkYWJsZV9mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGQgZm9sZGFibGUgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuIChhY2N1bSwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgcHJldl9kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbml0XG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgZGF0YSA9IGYgcHJldl9kYXRhIGRhdGEgaW5cbiAgICAgICAgc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkpXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9yZWR1Y2UgZm9sZGFibGUgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKGFjY3VtLCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgIGxldCBuZXdfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YVxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IGYgcHJldiBkYXRhXG4gICAgICAgIGluXG4gICAgICAgIHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGE6bmV3X2RhdGEgfmNvbXBhcmVfa2V5KVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICBNLmZvbGQgZm9sZGFibGUgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuICh0LCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBsZXQgKChfLCBsZW5ndGgnKSBhcyBhY2MpID0gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAgaWYgbGVuZ3RoID0gbGVuZ3RoJyB0aGVuIHIucmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpIGVsc2UgYWNjKVxuICAgICAgICBpblxuICAgICAgICBgT2sgbWFwKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfb3JfZXJyb3IgZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4gUmVzdWx0Lk9rIHhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfb3JfZXJyb3I6IGR1cGxpY2F0ZSBrZXlcIilcbiAgICAgICAgICBrZXlcbiAgICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfZXhuIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IHhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9leG46IGR1cGxpY2F0ZSBrZXlcIikga2V5IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgICAgIHw+IEVycm9yLnJhaXNlXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2FsaXN0ID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcImFsaXN0XCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgZm9sZCA9IExpc3QuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2ZfYWxpc3QgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2ZfYWxpc3RfZXhuID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZXhuXG5cbiAgKCogUmV2ZXJzZSB0aGUgaW5wdXQsIHRoZW4gZm9sZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFRoZSByZXN1bHRpbmcgbWFwIHVzZXMgdGhlIGZpcnN0XG4gICAgIGluc3RhbmNlIG9mIGVhY2gga2V5IGZyb20gdGhlIGlucHV0IGxpc3QuIFRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiBlbGVtZW50cyBpbiBlYWNoXG4gICAgIG91dHB1dCBsaXN0IGlzIHRoZSBzYW1lIGFzIGluIHRoZSBpbnB1dCBsaXN0LiAqKVxuICBsZXQgb2ZfZm9sZGFibGVfbXVsdGkgZm9sZGFibGUgfmZvbGQgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYWxpc3QgPSBmb2xkIGZvbGRhYmxlIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgaW5cbiAgICBvZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleSA9XG4gICAgb2ZfZm9sZGFibGVfbXVsdGkgYWxpc3QgfmZvbGQ6TGlzdC5mb2xkIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIG1vZHVsZSBPZl9zZXF1ZW5jZSA9IE9mX2ZvbGRhYmxlIChzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJzZXF1ZW5jZVwiXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgICAgbGV0IGZvbGQgPSBTZXF1ZW5jZS5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9zZXF1ZW5jZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9leG5cblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgc2VxdWVuY2UgfmNvbXBhcmVfa2V5ID1cbiAgICBvZl9mb2xkYWJsZV9tdWx0aSBzZXF1ZW5jZSB+Zm9sZDpTZXF1ZW5jZS5mb2xkIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBub3QgKGYgZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIG5vdCAoZiB+a2V5IH5kYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgZiBkYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgICBmYWxzZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuICA7O1xuXG4gIGxldCB0b19hbGlzdCA/KGtleV9vcmRlciA9IGBJbmNyZWFzaW5nKSB0ID1cbiAgICBtYXRjaCBrZXlfb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT4gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gICAgfCBgRGVjcmVhc2luZyAtPiBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZWx0cyA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46KGxlbmd0aCB0MSArIGxlbmd0aCB0MikgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlcjIgdDEgdDIgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YTp2YWx1ZXMgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB2YWx1ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgIFVuaWZvcm1fYXJyYXkuc2V0IGVsdHMgIWkgKGtleSwgdmFsdWUpO1xuICAgICAgICBpbmNyIGlcbiAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgbGV0IGxlbiA9ICFpIGluXG4gICAgbGV0IGdldCBpID0gVW5pZm9ybV9hcnJheS5nZXQgZWx0cyBpIGluXG4gICAgbGV0IHRyZWUgPSBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mOmdldCBpblxuICAgIHRyZWUsIGxlblxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgPVxuICAgIGxldCBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGhfbGFyZ2UgdF9sYXJnZSB0X3NtYWxsIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleSA9XG4gICAgICBmb2xkIHRfc21hbGwgfmluaXQ6KHRfbGFyZ2UsIGxlbmd0aF9sYXJnZSkgfmY6KGZ1biB+a2V5IH5kYXRhOmRhdGEnICh0LCBsZW5ndGgpIC0+XG4gICAgICAgIHVwZGF0ZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YSdcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBjYWxsIGNvbWJpbmUgfmtleSBkYXRhIGRhdGEnKSlcbiAgICBpblxuICAgIGxldCBjYWxsIGYgfmtleSB4IHkgPSBmIH5rZXkgeCB5IGluXG4gICAgbGV0IHN3YXAgZiB+a2V5IHggeSA9IGYgfmtleSB5IHggaW5cbiAgICBmdW4gdDEgdDIgfmxlbmd0aDEgfmxlbmd0aDIgfmNvbWJpbmUgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBsZW5ndGgyIDw9IGxlbmd0aDFcbiAgICAgIHRoZW4gbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMSB0MSB0MiB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMiB0MiB0MSB+Y2FsbDpzd2FwIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIG1vZHVsZSBDbG9zZXN0X2tleV9pbXBsID0gc3RydWN0XG4gICAgKCogW21hcmtlcl0gYW5kIFtyZXBhY2thZ2VdIGFsbG93IHVzIHRvIGNyZWF0ZSBcImxvZ2ljYWxcIiBvcHRpb25zIHdpdGhvdXQgYWN0dWFsbHlcbiAgICAgICBhbGxvY2F0aW5nIGFueSBvcHRpb25zLiBQYXNzaW5nIFtGb3VuZCBrZXkgdmFsdWVdIHRvIGEgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIHBhc3NpbmcgW1NvbWUgKGtleSwgdmFsdWUpXTsgcGFzc2luZyBbTWlzc2luZyAoKSAoKV0gaXMgZXF1aXZhbGVudCB0byBwYXNzaW5nXG4gICAgICAgW05vbmVdLiAqKVxuICAgIHR5cGUgKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlciA9XG4gICAgICB8IE1pc3NpbmcgOiAoJ2ssICd2LCB1bml0LCB1bml0KSBtYXJrZXJcbiAgICAgIHwgRm91bmQgOiAoJ2ssICd2LCAnaywgJ3YpIG1hcmtlclxuXG4gICAgbGV0IHJlcGFja2FnZVxuICAgICAgICAgICh0eXBlIGsgdiBrX29wdCB2X29wdClcbiAgICAgICAgICAobWFya2VyIDogKGssIHYsIGtfb3B0LCB2X29wdCkgbWFya2VyKVxuICAgICAgICAgIChrIDoga19vcHQpXG4gICAgICAgICAgKHYgOiB2X29wdClcbiAgICAgIDogKGsgKiB2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIG1hdGNoIG1hcmtlciB3aXRoXG4gICAgICB8IE1pc3NpbmcgLT4gTm9uZVxuICAgICAgfCBGb3VuZCAtPiBTb21lIChrLCB2KVxuICAgIDs7XG5cbiAgICAoKiBUaGUgdHlwZSBzaWduYXR1cmUgaXMgZXhwbGljaXQgaGVyZSB0byBhbGxvdyBwb2x5bW9ycGhpYyByZWN1cnNpb24uICopXG4gICAgbGV0IHJlYyBsb29wIDpcbiAgICAgICdrICd2ICdrX29wdCAndl9vcHQuXG4gICAgICAoJ2ssICd2KSB0cmVlXG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAna1xuICAgICAgLT4gY29tcGFyZV9rZXk6KCdrIC0+ICdrIC0+IGludClcbiAgICAgIC0+ICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXJcbiAgICAgIC0+ICdrX29wdFxuICAgICAgLT4gJ3Zfb3B0XG4gICAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG4gICAgICA9XG4gICAgICBmdW4gdCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byAtPiBjID49IDBcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPiBjID4gMFxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byAtPiBjIDw9IDBcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPiBjIDwgMFxuICAgICAgICAgIHRoZW4gU29tZSAoaycsIHYnKVxuICAgICAgICAgIGVsc2UgcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBOb2RlIChsLCBrJywgdicsIHIsIF8pIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoaXMgaXMgYSBiYXNlIGNhc2UgKG5vIHJlY3Vyc2l2ZSBjYWxsKS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gU29tZSAoaycsIHYnKVxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IHIgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1pbl9lbHQgclxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IGwgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1heF9lbHQgbClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFdlIGFyZSBndWFyYW50ZWVkIGhlcmUgdGhhdCBrJyA8PiBrLiAqKVxuICAgICAgICAgICAgKCogVGhpcyBpcyB0aGUgb25seSByZWN1cnNpdmUgY2FzZS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjID4gMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPCAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGsgfmNvbXBhcmVfa2V5ID0gbG9vcCB0IGRpciBrIH5jb21wYXJlX2tleSBNaXNzaW5nICgpICgpXG4gIGVuZFxuXG4gIGxldCBjbG9zZXN0X2tleSA9IENsb3Nlc3Rfa2V5X2ltcGwuY2xvc2VzdF9rZXlcblxuICBsZXQgcmVjIHJhbmsgdCBrIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrJywgXykgLT4gaWYgY29tcGFyZV9rZXkgaycgayA9IDAgdGhlbiBTb21lIDAgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrJywgXywgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gU29tZSAobGVuZ3RoIGwpXG4gICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICB0aGVuIHJhbmsgbCBrIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBPcHRpb24ubWFwIChyYW5rIHIgayB+Y29tcGFyZV9rZXkpIH5mOihmdW4gcmFuayAtPiByYW5rICsgMSArIGxlbmd0aCBsKVxuICA7O1xuXG4gICgqIHRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW1NlcXVlbmNlXSBpbnRlcmZhY2UgYnV0IHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb25cbiAgICAgYWxsb2NhdGVzIG9ubHkgMiB3b3JkcyBhbmQgZG9lc24ndCByZXF1aXJlIHdyaXRlLWJhcnJpZXIgKilcbiAgbGV0IHJlYyBudGgnIG51bV90b19zZWFyY2ggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT5cbiAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgTm9uZSlcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICAobWF0Y2ggbnRoJyBudW1fdG9fc2VhcmNoIGwgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gc29tZVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICAgICBudGgnIG51bV90b19zZWFyY2ggcikpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBudGgnIChyZWYgbikgdFxuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDwgMClcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMClcbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPiAwKVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IH5rZXkgfmRhdGEgPSBub3QgKGlzX2xlZnQgfmtleSB+ZGF0YSkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZF0gZmluZHMgdGhlIGtleSBpbiBbdF0gd2hpY2ggc2F0aXNmaWVzIFttYXliZV9ib3VuZF1cbiAgICAgYW5kIHRoZSByZWxldmFudCBvbmUgb2YgW2lmX2V4Y2x1c2l2ZV0gb3IgW2lmX2luY2x1c2l2ZV0sIGFzIGp1ZGdlZCBieSBbY29tcGFyZV0uICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlIH5pZl9leGNsdXNpdmUgfmlmX2luY2x1c2l2ZSA9XG4gICAgbGV0IGZpbmRfYm91bmQgdCBob3cgYm91bmQgfmNvbXBhcmUgOiBfIE1heWJlX2JvdW5kLnQgb3B0aW9uID1cbiAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggdCBob3cgYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgfCBTb21lIChib3VuZCwgXykgLT4gU29tZSAoSW5jbCBib3VuZClcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgaW5cbiAgICBtYXRjaCAobWF5YmVfYm91bmQgOiBfIE1heWJlX2JvdW5kLnQpIHdpdGhcbiAgICB8IEV4Y2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2V4Y2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgSW5jbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfaW5jbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBVbmJvdW5kZWQgLT4gU29tZSBVbmJvdW5kZWRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzXSBmaW5kcyB0aGUgKG5vdCBuZWNlc3NhcmlseSBkaXN0aW5jdCkga2V5cyBpbiBbdF1cbiAgICAgd2hpY2ggbW9zdCBjbG9zZWx5IGFwcHJvYWNoIChidXQgZG8gbm90IGNyb3NzKSBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdLCBhc1xuICAgICBqdWRnZWQgYnkgW2NvbXBhcmVdLiBJdCByZXR1cm5zIFtOb25lXSBpZiBubyBrZXlzIGluIFt0XSBhcmUgd2l0aGluIHRoYXQgcmFuZ2UuICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgZmluZF9sb3dlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbGV0IGZpbmRfdXBwZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBtYXRjaCBmaW5kX2xvd2VyX2JvdW5kIHQgbG93ZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGxvd2VyX2JvdW5kIC0+XG4gICAgICAobWF0Y2ggZmluZF91cHBlcl9ib3VuZCB0IHVwcGVyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgIHwgU29tZSB1cHBlcl9ib3VuZCAtPiBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpKVxuICA7O1xuXG4gIHR5cGUgKCdrLCAndikgYWNjID1cbiAgICB7IG11dGFibGUgYmFkX2tleSA6ICdrIG9wdGlvblxuICAgIDsgbXV0YWJsZSBtYXBfbGVuZ3RoIDogKCdrLCAndikgdCAqIGludFxuICAgIH1cblxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFjYyA9IHsgYmFkX2tleSA9IE5vbmU7IG1hcF9sZW5ndGggPSBlbXB0eSwgMCB9IGluXG4gICAgaXRlcmkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQgbWFwLCBsZW5ndGggPSBhY2MubWFwX2xlbmd0aCBpblxuICAgICAgbGV0ICgoXywgbGVuZ3RoJykgYXMgcGFpcikgPSBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIG1hcCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgJiYgT3B0aW9uLmlzX25vbmUgYWNjLmJhZF9rZXlcbiAgICAgIHRoZW4gYWNjLmJhZF9rZXkgPC0gU29tZSBrZXlcbiAgICAgIGVsc2UgYWNjLm1hcF9sZW5ndGggPC0gcGFpcik7XG4gICAgbWF0Y2ggYWNjLmJhZF9rZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT2sgYWNjLm1hcF9sZW5ndGhcbiAgICB8IFNvbWUga2V5IC0+IGBEdXBsaWNhdGVfa2V5IGtleVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbWF0Y2ggb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5jcmVhdGUgXCJNYXAub2ZfaXRlcmlfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgICB8PiBFcnJvci5yYWlzZVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGtleV9vZl9zZXhwIHZhbHVlX29mX3NleHAgc2V4cCB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbHVlX29mX3NleHApIHNleHAgaW5cbiAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBtYXRjaCBvZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgICB0aGUgd2hvbGUgbWFwICopXG4gICAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICAgIExpc3QuaXRlcjJfb2sgYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIGsyID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgIWZvdW5kX2ZpcnN0X2tcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJNYXAudF9vZl9zZXhwX2RpcmVjdDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgbGV0IGYgfmtleSB+ZGF0YSBhY2MgPSBTZXhwLkxpc3QgWyBzZXhwX29mX2tleSBrZXk7IHNleHBfb2ZfdmFsdWUgZGF0YSBdIDo6IGFjYyBpblxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB+ZiB0IH5pbml0OltdKVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIGxldCBva3MsIChlcnJvcl90cmVlLCBfKSA9IHBhcnRpdGlvbl9tYXAgdCB+Y29tcGFyZV9rZXkgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICAgIGlmIGlzX2VtcHR5IGVycm9yX3RyZWVcbiAgICB0aGVuIE9rIG9rc1xuICAgIGVsc2UgT3JfZXJyb3IuZXJyb3JfcyAoc2V4cF9vZl90IHNleHBfb2Zfa2V5IEVycm9yLnNleHBfb2ZfdCBlcnJvcl90cmVlKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c1xuICAgICAgICB0MVxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcjooeyBjb21wYXJlID0gY29tcGFyZV9rZXk7IHNleHBfb2ZfdCA9IHNleHBfb2Zfa2V5IH0gOiBfIENvbXBhcmF0b3IudClcbiAgICA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBgT2tcbiAgICAgICAgKGZvbGQgdDEgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuIH5rZXkgfmRhdGEgKHQyLCBsZW5ndGgpIC0+XG4gICAgICAgICAgIGxldCBrZXkgPSBmIGtleSBpblxuICAgICAgICAgICB0cnkgYWRkX2V4bl9pbnRlcm5hbCB0MiB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB3aXRoXG4gICAgICAgICAgIHwgRHVwbGljYXRlIC0+IHJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KSkpKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcmVzdWx0IC0+IHJlc3VsdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJNYXAubWFwX2tleXNfZXhuOiBkdXBsaWNhdGUga2V5XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcbmVuZFxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2ssICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogKCdrLCAndikgVHJlZTAudFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG5cbmxldCBjb21wYXJlX2tleSB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSAodHJlZSwgbGVuZ3RoKSA9XG4gIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCBsaWtlMiB4ICh5LCB6KSA9IGxpa2UgeCB5LCBsaWtlIHggelxuXG5sZXQgbGlrZV9tYXliZV9ub19vcCAoeyB0cmVlID0gb2xkX3RyZWU7IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSBhcyBvbGRfdCkgKHRyZWUsIGxlbmd0aClcbiAgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCB3aXRoX3NhbWVfbGVuZ3RoIHsgdHJlZSA9IF87IGNvbXBhcmF0b3I7IGxlbmd0aCB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5sZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbigqIEV4cG9zaW5nIHRoaXMgZnVuY3Rpb24gd291bGQgbWFrZSBpdCB2ZXJ5IGVhc3kgZm9yIHRoZSBpbnZhcmlhbnRzXG4gICBvZiB0aGlzIG1vZHVsZSB0byBiZSBicm9rZW4uICopXG5sZXQgb2ZfdHJlZV91bnNhZmUgfmNvbXBhcmF0b3Igfmxlbmd0aCB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuXG4gIGxldCBpbnZhcmlhbnRzIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgJiYgVHJlZTAubGVuZ3RoIHQudHJlZSA9IHQubGVuZ3RoXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZSB0IChUcmVlMC5zZXQgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCByZXN1bHQgLT4gYE9rIHJlc3VsdFxuICAgIHwgZXhjZXB0aW9uIER1cGxpY2F0ZSAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICAgIGxpa2UgdCAoVHJlZTAucmVtb3ZlX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQga2V5ID0gVHJlZTAuZmluZF9tdWx0aSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mID1cbiAgICBsaWtlIHQgKFRyZWUwLmNoYW5nZSB0LnRyZWUga2V5IH5mIH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID1cbiAgICBsaWtlIHQgKFRyZWUwLnVwZGF0ZSB0LnRyZWUga2V5IH5mIH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0LnRyZWVcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB0IGtleSA9IFRyZWUwLmZpbmQgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IHJlbW92ZSB0IGtleSA9XG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZSB0LnRyZWUga2V5IH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgbWVtIHQga2V5ID0gVHJlZTAubWVtIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdC50cmVlIH5mXG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQudHJlZSB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgdDEgdDIgfmYgPSBUcmVlMC5pdGVyMiB0MS50cmVlIHQyLnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgbGV0IG1hcCB0IH5mID0gd2l0aF9zYW1lX2xlbmd0aCB0IChUcmVlMC5tYXAgdC50cmVlIH5mKVxuICBsZXQgbWFwaSB0IH5mID0gd2l0aF9zYW1lX2xlbmd0aCB0IChUcmVlMC5tYXBpIHQudHJlZSB+ZilcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5mIH5pbml0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxLnRyZWUgdDIudHJlZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJfa2V5cyB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXJpIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcmkgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJfbWFwaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcGkgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25pX3RmIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihsaWtlIHQpXG4gICAgICAoVHJlZTAuY29tYmluZV9lcnJvcnNcbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9kYXRhIHQxIHQyID0gVHJlZTAuZXF1YWwgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHQudHJlZVxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0LnRyZWVcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdC50cmVlXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDEudHJlZVxuICAgICAgdDIudHJlZVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgPVxuICAgIGxpa2UgdDEgKFRyZWUwLm1lcmdlIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSlcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBUaGlzIGlzIG9ubHkgYSBuby1vcCBpbiB0aGUgY2FzZSB3aGVyZSBhdCBsZWFzdCBvbmUgb2YgdGhlIG1hcHMgaXMgZW1wdHkuICopXG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgKGlmIHQyLmxlbmd0aCA8PSB0MS5sZW5ndGggdGhlbiB0MSBlbHNlIHQyKVxuICAgICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgICAgdDEudHJlZVxuICAgICAgICAgdDIudHJlZVxuICAgICAgICAgfmxlbmd0aDE6dDEubGVuZ3RoXG4gICAgICAgICB+bGVuZ3RoMjp0Mi5sZW5ndGhcbiAgICAgICAgIH5jb21iaW5lXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSlcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0LnRyZWVcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0LnRyZWVcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdC50cmVlXG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdC50cmVlXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IFRyZWUwLmZvcl9hbGxpIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdC50cmVlIH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQudHJlZSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQudHJlZSB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdC50cmVlIH5mXG5cbiAgbGV0IHNwbGl0IHQgayA9XG4gICAgbGV0IGwsIG1heWJlLCByID0gVHJlZTAuc3BsaXQgdC50cmVlIGsgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSBpblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBib3RoX2xlbiA9IGlmIE9wdGlvbi5pc19zb21lIG1heWJlIHRoZW4gdC5sZW5ndGggLSAxIGVsc2UgdC5sZW5ndGggaW5cbiAgICBpZiBUcmVlMC5oZWlnaHQgbCA8IFRyZWUwLmhlaWdodCByXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbCA9IG9mX3RyZWUgbCB+Y29tcGFyYXRvciBpblxuICAgICAgbCwgbWF5YmUsIG9mX3RyZWVfdW5zYWZlIHIgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggbCkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IG9mX3RyZWUgciB+Y29tcGFyYXRvciBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbCB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCByKSwgbWF5YmUsIHIpXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGxlZnQsIG1pZCwgcmlnaHQgPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2UgdC50cmVlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBvdXRlcl9qb2luZWRfaGVpZ2h0ID1cbiAgICAgIGxldCBoX2wgPSBUcmVlMC5oZWlnaHQgbGVmdFxuICAgICAgYW5kIGhfciA9IFRyZWUwLmhlaWdodCByaWdodCBpblxuICAgICAgaWYgaF9sID0gaF9yIHRoZW4gaF9sICsgMSBlbHNlIG1heCBoX2wgaF9yXG4gICAgaW5cbiAgICBpZiBvdXRlcl9qb2luZWRfaGVpZ2h0IDwgVHJlZTAuaGVpZ2h0IG1pZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG1pZF9sZW5ndGggPSB0Lmxlbmd0aCAtIChUcmVlMC5sZW5ndGggbGVmdCArIFRyZWUwLmxlbmd0aCByaWdodCkgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KSB+bGVuZ3RoOm1pZF9sZW5ndGgpXG4gICAgZWxzZSBvZl90cmVlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5hcHBlbmRcbiAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSBsb3dlcl9wYXJ0KVxuICAgICAgICB+bG93ZXJfcGFydDpsb3dlcl9wYXJ0LnRyZWVcbiAgICAgICAgfnVwcGVyX3BhcnQ6dXBwZXJfcGFydC50cmVlXG4gICAgd2l0aFxuICAgIHwgYE9rIHRyZWUgLT5cbiAgICAgIGBPa1xuICAgICAgICAob2ZfdHJlZV91bnNhZmVcbiAgICAgICAgICAgdHJlZVxuICAgICAgICAgICB+Y29tcGFyYXRvcjooY29tcGFyYXRvciBsb3dlcl9wYXJ0KVxuICAgICAgICAgICB+bGVuZ3RoOihsb3dlcl9wYXJ0Lmxlbmd0aCArIHVwcGVyX3BhcnQubGVuZ3RoKSlcbiAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZSB0LnRyZWUgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQudHJlZSB+bWluIH5tYXggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQudHJlZSBkaXIga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0LnRyZWUgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB0IGtleSA9IFRyZWUwLnJhbmsgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQudHJlZSB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gbGlrZV9tYXliZV9ub19vcCB0IChFbXB0eSwgMClcbiAgOztcbmVuZFxuXG4oKiBbMF0gaXMgdXNlZCBhcyB0aGUgW2xlbmd0aF0gYXJndW1lbnQgZXZlcnl3aGVyZSBpbiB0aGlzIG1vZHVsZSwgc2luY2UgdHJlZXMgZG8gbm90XG4gICBoYXZlIHRoZWlyIGxlbmd0aHMgc3RvcmVkIGF0IHRoZSByb290LCB1bmxpa2UgbWFwcy4gVGhlIHZhbHVlcyBhcmUgZGlzY2FyZGVkIGFsd2F5cy4gKilcbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGsgdiA9IFRyZWUwLnNpbmdsZXRvbiBrIHZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgZnN0IChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgKHRyZWUsIF9zaXplKSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IgfD4gT3JfZXJyb3IubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPSBmc3QgKFRyZWUwLm9mX2FsaXN0X2V4biBhbGlzdCB+Y29tcGFyYXRvcilcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIGZzdCAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIGZzdCAoVHJlZTAub2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID0gZnN0IChUcmVlMC5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfcmVxdWlyZWRfYnlfaW50ZiB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOmZzdFxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgKHRyZWUsIF9zaXplKSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvciB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXEgPSBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmYgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgdCA9IHRcblxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG5cbiAgbGV0IHNldCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIGZzdCAoVHJlZTAuc2V0IHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgZnN0XG4gICAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgICAgdFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5sZW5ndGg6MFxuICAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIHRyeSBgT2sgKGFkZF9leG4gdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhKSB3aXRoXG4gICAgfCBfIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgVHJlZTAuYWRkX211bHRpIHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gZnN0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAucmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfD4gZnN0XG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfbXVsdGkgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZiA9XG4gICAgZnN0IChUcmVlMC5jaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdXBkYXRlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX2V4blxuICAgICAgdFxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGZpbmQgfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5maW5kIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIGZzdCAoVHJlZTAucmVtb3ZlIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLm1lbSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0IH5mXG5cbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICBUcmVlMC5pdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZlxuICBsZXQgbWFwaSB0IH5mID0gVHJlZTAubWFwaSB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0IH5mIH5pbml0IH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB+Y29tcGFyYXRvciB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX2tleXMgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlciB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyaSB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcmkgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIH5jb21wYXJhdG9yIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6ZnN0XG4gICAgICAoVHJlZTAuY29tYmluZV9lcnJvcnNcbiAgICAgICAgIHRcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5lcXVhbCBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0XG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHRcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdFxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxXG4gICAgICB0MlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICBmc3QgKFRyZWUwLm1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIH5jb21wYXJhdG9yIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBMZW5ndGggY29tcHV0YXRpb24gbWFrZXMgdGhpcyBzaWduaWZpY2FudGx5IHNsb3dlciB0aGFuIFttZXJnZV9za2V3ZWRdIG9uIGEgbWFwXG4gICAgICAgd2l0aCBhIFtsZW5ndGhdIGZpZWxkLCBidXQgZG9lcyBwcmVzZXJ2ZSBhbW91bnQgb2YgYWxsb2NhdGlvbi4gKilcbiAgICBmc3RcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxXG4gICAgICAgICB0MlxuICAgICAgICAgfmxlbmd0aDE6KGxlbmd0aCB0MSlcbiAgICAgICAgIH5sZW5ndGgyOihsZW5ndGggdDIpXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0IH5mXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGsgPSBUcmVlMC5zcGxpdCB0IGsgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IGFwcGVuZCB+Y29tcGFyYXRvciB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgVHJlZTAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBzdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBfLCByZXQsIF8gPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+bG93ZXJfYm91bmRcbiAgICAgICAgfnVwcGVyX2JvdW5kXG4gICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgcmV0XG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgICAgdFxuICAgICAgfm1pblxuICAgICAgfm1heFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB+Y29tcGFyYXRvciB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQgZGlyIGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0IG5cbiAgbGV0IG50aF9leG4gdCBuID0gT3B0aW9uLnZhbHVlX2V4biAobnRoIHQgbilcbiAgbGV0IHJhbmsgfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5yYW5rIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdFxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgZnN0IChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2ggVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBFbXB0eVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBtYXRjaCBUcmVlMC5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mIHdpdGhcbiAgICB8IGBPayAodCwgXykgLT4gYE9rIHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9IGZzdCAoVHJlZTAubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYpXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICd3KSB0ID0gKCdrLCAndikgVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50XG5cbiAgICBsZXQgZW1wdHkgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG5cbiAgICBsZXQgYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IHQgd2l0aFxuICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgRXJyb3IucmFpc2VfcyAoU2V4cC5BdG9tIFwiTWFwLkJ1aWxkX2luY3JlYXNpbmcuYWRkOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgIHwgXyAtPiBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdCB+a2V5IH5kYXRhXG4gICAgOztcblxuICAgIGxldCB0b190cmVlIHQgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBrIHYgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gayB2OyBsZW5ndGggPSAxIH1cbiAgbGV0IG9mX3RyZWUwIH5jb21wYXJhdG9yICh0cmVlLCBsZW5ndGgpID0geyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHRyZWUsIFRyZWUwLmxlbmd0aCB0cmVlKVxuICBsZXQgdG9fdHJlZSA9IHRvX3RyZWVcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAgIH5mOihmdW4gdHJlZSAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayAodHJlZSwgbGVuZ3RoKSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX2FsaXN0X29yX2Vycm9yIGFsaXN0IH5jb21wYXJhdG9yKSB+ZjooZnVuIHRyZWUgLT5cbiAgICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2FsaXN0X2V4biBhbGlzdCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfml0ZXJpIHdpdGhcbiAgICB8IGBPayB0cmVlX2xlbmd0aCAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWVfbGVuZ3RoKVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mLCBsZW4pXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihvZl90cmVlMCB+Y29tcGFyYXRvcilcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIGxlbmd0aCkgLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yKSB+ZjooZnVuIHRyZWUgLT5cbiAgICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3Qga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBtYXRjaCBUcmVlMC5tYXBfa2V5cyB0LnRyZWUgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHBhaXIgLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciBwYWlyKVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAubWFwX2tleXNfZXhuIHQudHJlZSB+ZiB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3IgPSBLLmNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBlbmRcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX3RyZWUgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgdHJlZSA9XG4gIG9mX3RyZWUgfmNvbXBhcmF0b3I6TS5jb21wYXJhdG9yIHRyZWVcbjs7XG5cbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0X211bHRpIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3RfZm9sZCBtIGEgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+aW5pdCB+ZlxuOztcblxubGV0IG9mX2FsaXN0X3JlZHVjZSBtIGEgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfaXRlcmkgbSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuXG5sZXQgb2ZfaXRlcmlfZXhuIG0gfml0ZXJpID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBtIHNlcSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzZXFcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2V4biBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9tdWx0aSBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9mb2xkIG0gcyB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5pbml0IH5mXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIG0gcyB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmZcbjs7XG5cbmxldCBtYXBfa2V5cyBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCBtYXBfa2V5c19leG4gbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxuXG5tb2R1bGUgTSAoSyA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBrIGNtcClcbiAgICAgIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgdl9vZl9zZXhwXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOksuY29tcGFyYXRvciBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrKVxuICAgICAgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKVxuICAgICAgKHZfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBMaXN0XG4gICAgICAgIChNYW55IChMaXN0IChDb25zIChLLnRfc2V4cF9ncmFtbWFyLnVudHlwZWQsIENvbnMgKHZfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkpKSkpXG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSBjb21wYXJlX3YgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjb21wYXJlX3YgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGspIGhhc2hfZm9sZF92IHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBLLmhhc2hfZm9sZF90IGhhc2hfZm9sZF92IHN0YXRlXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYSB+aW5pdCB+ZlxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhIH5mXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCBzIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3IgcyB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHMgfmZcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuZW5kXG4iLCJvcGVuISBJbXBvcnQwXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWwuUXVldWUudFxuXG5sZXQgY3JlYXRlID0gQ2FtbC5RdWV1ZS5jcmVhdGVcbmxldCBjbGVhciA9IENhbWwuUXVldWUuY2xlYXJcbmxldCBjb3B5ID0gQ2FtbC5RdWV1ZS5jb3B5XG5sZXQgaXNfZW1wdHkgPSBDYW1sLlF1ZXVlLmlzX2VtcHR5XG5sZXQgbGVuZ3RoID0gQ2FtbC5RdWV1ZS5sZW5ndGhcbmxldCBwZWVrID0gQ2FtbC5RdWV1ZS5wZWVrXG5sZXQgcG9wID0gQ2FtbC5RdWV1ZS5wb3BcbmxldCBwdXNoID0gQ2FtbC5RdWV1ZS5wdXNoXG5sZXQgdHJhbnNmZXIgPSBDYW1sLlF1ZXVlLnRyYW5zZmVyXG5sZXQgaXRlciB0IH5mID0gQ2FtbC5RdWV1ZS5pdGVyIGYgdFxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IENhbWwuUXVldWUuZm9sZCBmIGluaXQgdFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpbmtlZF9xdWV1ZTBcblxubGV0IGVucXVldWUgdCB4ID0gTGlua2VkX3F1ZXVlMC5wdXNoIHggdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wb3AgdClcbmxldCBkZXF1ZXVlX2V4biA9IExpbmtlZF9xdWV1ZTAucG9wXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBlZWsgdClcbmxldCBwZWVrX2V4biA9IExpbmtlZF9xdWV1ZTAucGVla1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBpdGVyaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvbGRpID0gQy5mb2xkaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxubGV0IGl0ZXJpID0gQy5pdGVyaVxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9IExpbmtlZF9xdWV1ZTAudHJhbnNmZXIgc3JjIGRzdFxuXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gZW5xdWV1ZSByZXMgKGYgYSkpO1xuICByZXNcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gZW5xdWV1ZSByZXMgKGYgaSBhKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXIgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyaSBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsaXN0ID0gTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnJheSB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGVucXVldWUgdCAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIGxlbmd0aCB0IHdpdGhcbiAgfCAwIC0+IFt8fF1cbiAgfCBsZW4gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW4gKHBlZWtfZXhuIHQpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIHYgLT5cbiAgICAgIGFyci4oIWkpIDwtIHY7XG4gICAgICBpbmNyIGkpO1xuICAgIGFyclxuOztcblxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKGxpc3Rfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHNpbmdsZXRvbiBhID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IGE7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuSW50NjRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IGNvbXBhcmUgPSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSA2NFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludDY0X3Bvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IENhbWwuSW50NjQub2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gQ2FtbC5JbnQ2NC5vZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDY0Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXA2NCA6IHQgLT4gdCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDE2IHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgNDhcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDMyIHggPVxuICAoKiBUaGlzIGlzIHN0cmljdGx5IGJldHRlciB0aGFuIGNvZXJjaW5nIHRvIGFuIGludDMyIHRvIHBlcmZvcm0gYnl0ZXN3YXAuIENvZXJjaW5nXG4gICAgIGZyb20gYW4gaW50MzIgd2lsbCBhZGQgdW5uZWNlc3Nhcnkgc2hpZnQgb3BlcmF0aW9ucyB0byBzaWduIGV4dGVuZCB0aGUgbnVtYmVyXG4gICAgIGFwcHJvcHJpYXRlbHkuXG4gICopXG4gIENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAzMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDQ4IHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMTZcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGluY3IgciA9IHIgOj0gYWRkICFyIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gc3ViICFyIG9uZVxuXG5leHRlcm5hbCBvZl9pbnQ2NCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0XG5sZXQgdG9faW50NjQgdCA9IHRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmV4dGVybmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnRfdHJ1bmMgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5cbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLkludDY0LmxvZ29yXG4gIGxldCAoIGxzciApID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuSW50NjQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gQ2FtbC5JbnQ2NC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuSW50NjQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuSW50NjQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuSW50NjQucHJlZCB4ID0gQ2FtbC5JbnQ2NC56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gQ2FtbC5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQ2NCBpIF0pO1xuICAgIGlmIENhbWwuSW50NjQuZXF1YWwgaSBDYW1sLkludDY0Lm9uZSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5JbnQ2NC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlTHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVMeFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjRcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBleHRlcm5hbCAoICsgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfYWRkXCJcbiAgZXh0ZXJuYWwgKCAtICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X3N1YlwiXG4gIGV4dGVybmFsICggKiApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9tdWxcIlxuICBleHRlcm5hbCAoIC8gKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfZGl2XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogdCAtPiB0ID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogdCAtPiB0ID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2FuZFwiXG4gIGV4dGVybmFsICggbG9yICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X29yXCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X3hvclwiXG5cbiAgbGV0IGxub3QgPSBiaXRfbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9sc2xcIlxuICBleHRlcm5hbCAoIGFzciApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2FzclwiXG4gIGV4dGVybmFsICggbHNyICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfbHNyXCJcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDY0XSBhbmQgW0ludDY0Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogQSA2M2JpdCBpbnRlZ2VyIGlzIGEgNjRiaXQgaW50ZWdlciB3aXRoIGl0cyBiaXRzIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgIGFuZCBpdHMgbG93ZXN0IGJpdCBzZXQgdG8gMC5cbiAgIFRoaXMgaXMgdGhlIHNhbWUga2luZCBvZiBlbmNvZGluZyBhcyBPQ2FtbCBpbnQgb24gNjRiaXQgYXJjaGl0ZWN0dXJlLlxuICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBiZWluZyB0aGUgbG93ZXN0IGJpdCAoaW1tZWRpYXRlIGJpdCkgc2V0IHRvIDEuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuXG5tb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDY0X3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbm1vZHVsZSBXIDogc2lnXG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQwXG4gIGVuZFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgdmFsIHdyYXBfZXhuIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIHdyYXBfbW9kdWxvIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIHVud3JhcCA6IHQgLT4gQ2FtbC5JbnQ2NC50XG5cbiAgKCoqIFJldHVybnMgYSBub24tbmVnYXRpdmUgaW50NjQgdGhhdCBpcyBlcXVhbCB0byB0aGUgaW5wdXQgaW50NjMgbW9kdWxvIDJeNjMuICopXG4gIHZhbCB1bndyYXBfdW5zaWduZWQgOiB0IC0+IENhbWwuSW50NjQudFxuXG4gIHZhbCBpbnZhcmlhbnQgOiB0IC0+IHVuaXRcbiAgdmFsIGFkZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdWIgOiB0IC0+IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIHN1Y2MgOiB0IC0+IHRcbiAgdmFsIHByZWQgOiB0IC0+IHRcbiAgdmFsIG11bCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGl2IDogdCAtPiB0IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3Bjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBiaXRfbm90IDogdCAtPiB0XG4gIHZhbCBiaXRfeG9yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9vciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfYW5kIDogdCAtPiB0IC0+IHRcbiAgdmFsIHNoaWZ0X2xlZnQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQ2NCA6IHQgLT4gQ2FtbC5JbnQ2NC50XG4gIHZhbCBvZl9pbnQ2NCA6IENhbWwuSW50NjQudCAtPiB0IG9wdGlvblxuICB2YWwgb2ZfaW50NjRfZXhuIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIG9mX2ludDY0X3RydW5jIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBjZWlsX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGZsb29yX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGNlaWxfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBmbG9vcl9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGlzX3BvdzIgOiB0IC0+IGJvb2xcbiAgdmFsIGNseiA6IHQgLT4gaW50XG4gIHZhbCBjdHogOiB0IC0+IGludFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgVDBcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIGxldCB3cmFwX2V4biB4ID1cbiAgICAoKiBSYWlzZXMgaWYgdGhlIGludDY0IHZhbHVlIGRvZXMgbm90IGZpdCBvbiBpbnQ2My4gKilcbiAgICBDb252LmludDY0X2ZpdF9vbl9pbnQ2M19leG4geDtcbiAgICBDYW1sLkludDY0Lm11bCB4IDJMXG4gIDs7XG5cbiAgbGV0IHdyYXAgeCA9XG4gICAgaWYgQ29udi5pbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiBTb21lIChDYW1sLkludDY0Lm11bCB4IDJMKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgd3JhcF9tb2R1bG8geCA9IENhbWwuSW50NjQubXVsIHggMkxcbiAgbGV0IHVud3JhcCB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCB4IDFcbiAgbGV0IHVud3JhcF91bnNpZ25lZCB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMVxuXG4gICgqIFRoaXMgZG9lcyBub3QgdXNlIHdyYXAgb3IgdW53cmFwIHRvIGF2b2lkIGdlbmVyYXRpbmcgZXhjZXB0aW9ucyBpbiB0aGUgY2FzZSBvZlxuICAgICBvdmVyZmxvd3MuIFRoaXMgaXMgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBpbnQgdHlwZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlLiAqKVxuICBsZXQgZjIgZiBhIGIgPVxuICAgIENhbWwuSW50NjQubXVsIChmIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGEgMSkgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYiAxKSkgMkxcbiAgOztcblxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZUxcbiAgbGV0IG0geCA9IENhbWwuSW50NjQubG9nYW5kIHggbWFza1xuICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKG0gdCA9IHQpXG4gIGxldCBhZGQgeCB5ID0gQ2FtbC5JbnQ2NC5hZGQgeCB5XG4gIGxldCBzdWIgeCB5ID0gQ2FtbC5JbnQ2NC5zdWIgeCB5XG4gIGxldCBuZWcgeCA9IENhbWwuSW50NjQubmVnIHhcbiAgbGV0IGFicyB4ID0gQ2FtbC5JbnQ2NC5hYnMgeFxuICBsZXQgb25lID0gd3JhcF9leG4gMUxcbiAgbGV0IHN1Y2MgYSA9IGFkZCBhIG9uZVxuICBsZXQgcHJlZCBhID0gc3ViIGEgb25lXG4gIGxldCBtaW5fdmFsdWUgPSBtIENhbWwuSW50NjQubWluX2ludFxuICBsZXQgbWF4X3ZhbHVlID0gbSBDYW1sLkludDY0Lm1heF9pbnRcbiAgbGV0IGJpdF9ub3QgeCA9IG0gKENhbWwuSW50NjQubG9nbm90IHgpXG4gIGxldCBiaXRfYW5kID0gQ2FtbC5JbnQ2NC5sb2dhbmRcbiAgbGV0IGJpdF94b3IgPSBDYW1sLkludDY0LmxvZ3hvclxuICBsZXQgYml0X29yID0gQ2FtbC5JbnQ2NC5sb2dvclxuICBsZXQgc2hpZnRfbGVmdCB4IGkgPSBDYW1sLkludDY0LnNoaWZ0X2xlZnQgeCBpXG4gIGxldCBzaGlmdF9yaWdodCB4IGkgPSBtIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IHggaSlcbiAgbGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpID0gbSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggaSlcbiAgbGV0IHBvdyA9IGYyIEludF9tYXRoLlByaXZhdGUuaW50NjNfcG93X29uX2ludDY0XG4gIGxldCBtdWwgYSBiID0gQ2FtbC5JbnQ2NC5tdWwgYSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpXG4gIGxldCBkaXYgYSBiID0gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQuZGl2IGEgYilcbiAgbGV0IHJlbSBhIGIgPSBDYW1sLkludDY0LnJlbSBhIGJcbiAgbGV0IHBvcGNvdW50IHggPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudCB4XG4gIGxldCB0b19pbnQ2NCB0ID0gdW53cmFwIHRcbiAgbGV0IG9mX2ludDY0IHQgPSB3cmFwIHRcbiAgbGV0IG9mX2ludDY0X2V4biB0ID0gd3JhcF9leG4gdFxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgdCA9IHdyYXBfbW9kdWxvIHRcbiAgbGV0IHRfb2Zfc2V4cCB4ID0gd3JhcF9leG4gKGludDY0X29mX3NleHAgeClcbiAgbGV0IHNleHBfb2ZfdCB4ID0gc2V4cF9vZl9pbnQ2NCAodW53cmFwIHgpXG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBpc19wb3cyIHggPSBJbnQ2NC5pc19wb3cyICh1bndyYXAgeClcblxuICBsZXQgY2x6IHggPVxuICAgICgqIFdlIHJ1biBJbnQ2NC5jbHogZGlyZWN0bHkgb24gdGhlIHdyYXBwZWQgaW50NjMgdmFsdWUuIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHRoZVxuICAgICAgIGJpdHMgb2YgdGhlIGludDYzX2VtdWwgYXJlIGxlZnQtYWxpZ25lZCBpbiB0aGUgSW50NjQuICopXG4gICAgSW50NjQuY2x6IHhcbiAgOztcblxuICBsZXQgY3R6IHggPSBJbnQ2NC5jdHogKHVud3JhcCB4KVxuICBsZXQgZmxvb3JfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBjZWlsX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgZmxvb3JfbG9nMiB4ID0gSW50NjQuZmxvb3JfbG9nMiAodW53cmFwIHgpXG4gIGxldCBjZWlsX2xvZzIgeCA9IEludDY0LmNlaWxfbG9nMiAodW53cmFwIHgpXG5lbmRcblxub3BlbiBXXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFcudCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBXLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChXLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKFcuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFcuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFcuY29tcGFyZVxuICBsZXQgaW52YXJpYW50ID0gVy5pbnZhcmlhbnRcblxuICAoKiBXZSBkb24ndCBleHBlY3QgW2hhc2hdIHRvIGZvbGxvdyB0aGUgYmVoYXZpb3Igb2YgaW50IGluIDY0Yml0IGFyY2hpdGVjdHVyZSAqKVxuICBsZXQgXyA9IGhhc2hcbiAgbGV0IGhhc2ggKHggOiB0KSA9IENhbWwuSGFzaHRibC5oYXNoIHhcbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgaW52YWxpZF9zdHIgeCA9IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQ2My5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiB4ICgpXG5cbiAgKCpcbiAgICAgXCJzaWduXCIgcmVmZXJzIHRvIHdoZXRoZXIgdGhlIG51bWJlciBzdGFydHMgd2l0aCBhICctJ1xuICAgICBcInNpZ25lZG5lc3MgPSBmYWxzZVwiIG1lYW5zIHRoZSByZXN0IG9mIHRoZSBudW1iZXIgaXMgcGFyc2VkIGFzIHVuc2lnbmVkIGFuZCB0aGVuIGNhc3RcbiAgICAgdG8gc2lnbmVkIHdpdGggd3JhcC1hcm91bmQgbW9kdWxvIDJeaVxuICAgICBcInNpZ25lZG5lc3MgPSB0cnVlXCIgbWVhbnMgbm8gc3VjaCBjcmF6aW5lc3MgaGFwcGVuc1xuXG4gICAgIFRoZSB0ZXJtaW5vbG9neSBhbmQgdGhlIGxvZ2ljIGlzIGR1ZSB0byB0aGUgY29kZSBpbiBieXRlcnVuL2ludHMuYyBpbiBvY2FtbCA0LjAzXG4gICAgIChbcGFyc2Vfc2lnbl9hbmRfYmFzZV0gZnVuY3Rpb24pLlxuXG4gICAgIFNpZ25lZG5lc3MgZXF1YWxzIHRydWUgZm9yIHBsYWluIGRlY2ltYWwgbnVtYmVyIChlLmcuIDEyMzUsIC02Nzg5KVxuXG4gICAgIFNpZ25lZG5lc3MgZXF1YWxzIGZhbHNlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgIC0gWzB4ZmZmZl0sIFstMHhmZmZmXSAoaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBiMDEwMV0sIFstMGIwMTAxXSAoYmluYXJ5IHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswbzEyMzddLCBbLTBvMTIzN10gKG9jdGFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswdTk4MTJdLCBbLTB1OTgxMl0gKHVuc2lnbmVkIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gLSBhdmFpbGFibGUgZnJvbSBPQ2FtbCA0LjAzKSAqKVxuICBsZXQgc2lnbl9hbmRfc2lnbmVkbmVzcyB4ID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB4IGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBwb3MsIHNpZ24gPVxuICAgICAgaWYgMCA8IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHguWzBdIHdpdGhcbiAgICAgICAgfCAnLScgLT4gMSwgYE5lZ1xuICAgICAgICB8ICcrJyAtPiAxLCBgUG9zXG4gICAgICAgIHwgXyAtPiAwLCBgUG9zKVxuICAgICAgZWxzZSAwLCBgUG9zXG4gICAgaW5cbiAgICBpZiBwb3MgKyAyIDwgbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYzEgPSB4Lltwb3NdIGluXG4gICAgICBsZXQgYzIgPSB4Lltwb3MgKyAxXSBpblxuICAgICAgbWF0Y2ggYzEsIGMyIHdpdGhcbiAgICAgIHwgJzAnLCAnMCcgLi4gJzknIC0+IHNpZ24sIHRydWVcbiAgICAgIHwgJzAnLCBfIC0+IHNpZ24sIGZhbHNlXG4gICAgICB8IF8gLT4gc2lnbiwgdHJ1ZSlcbiAgICBlbHNlIHNpZ24sIHRydWVcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHggPSBDYW1sLkludDY0LnRvX3N0cmluZyAodW53cmFwIHgpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIHRyeVxuICAgICAgbGV0IHNpZ24sIHNpZ25lZG5lc3MgPSBzaWduX2FuZF9zaWduZWRuZXNzIHN0ciBpblxuICAgICAgaWYgc2lnbmVkbmVzc1xuICAgICAgdGhlbiBvZl9pbnQ2NF9leG4gKENhbWwuSW50NjQub2Zfc3RyaW5nIHN0cilcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcG9zX3N0ciA9XG4gICAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgICAgfCBgTmVnIC0+IFN0cmluZy5zdWIgc3RyIH5wb3M6MSB+bGVuOihTdHJpbmcubGVuZ3RoIHN0ciAtIDEpXG4gICAgICAgICAgfCBgUG9zIC0+IHN0clxuICAgICAgICBpblxuICAgICAgICBsZXQgaW50NjQgPSBDYW1sLkludDY0Lm9mX3N0cmluZyBwb3Nfc3RyIGluXG4gICAgICAgICgqIHVuc2lnbmVkIDYzLWJpdCBpbnQgbXVzdCBwYXJzZSBhcyBhIHBvc2l0aXZlIHNpZ25lZCA2NC1iaXQgaW50ICopXG4gICAgICAgIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpbnQ2NCAwTCB0aGVuIGludmFsaWRfc3RyIHN0cjtcbiAgICAgICAgbGV0IGludDYzID0gd3JhcF9tb2R1bG8gaW50NjQgaW5cbiAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgIHwgYE5lZyAtPiBuZWcgaW50NjNcbiAgICAgICAgfCBgUG9zIC0+IGludDYzKVxuICAgIHdpdGhcbiAgICB8IF8gLT4gaW52YWxpZF9zdHIgc3RyXG4gIDs7XG5cbiAgbGV0IGJzd2FwMTYgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDE2ICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDMyIHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAzMiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXA0OCB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwNDggKHVud3JhcCB0KSlcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG51bV9iaXRzID0gNjNcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGJpdF9ub3RcbmxldCBiaXRfeG9yID0gYml0X3hvclxubGV0IGJpdF9vciA9IGJpdF9vclxubGV0IGJpdF9hbmQgPSBiaXRfYW5kXG5sZXQgcG9wY291bnQgPSBwb3Bjb3VudFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBwb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVcbmxldCBtaW51c19vbmUgPSB3cmFwX2V4biBDYW1sLkludDY0Lm1pbnVzX29uZVxubGV0IG9uZSA9IHdyYXBfZXhuIENhbWwuSW50NjQub25lXG5sZXQgemVybyA9IHdyYXBfZXhuIENhbWwuSW50NjQuemVyb1xubGV0IGlzX3BvdzIgPSBpc19wb3cyXG5sZXQgZmxvb3JfcG93MiA9IGZsb29yX3BvdzJcbmxldCBjZWlsX3BvdzIgPSBjZWlsX3BvdzJcbmxldCBmbG9vcl9sb2cyID0gZmxvb3JfbG9nMlxubGV0IGNlaWxfbG9nMiA9IGNlaWxfbG9nMlxubGV0IGNseiA9IGNselxubGV0IGN0eiA9IGN0elxubGV0IHRvX2Zsb2F0IHggPSBDYW1sLkludDY0LnRvX2Zsb2F0ICh1bndyYXAgeClcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgeCA9IHdyYXBfbW9kdWxvIChDYW1sLkludDY0Lm9mX2Zsb2F0IHgpXG5cbmxldCBvZl9mbG9hdCB0ID1cbiAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIHQgPj0gZmxvYXRfbG93ZXJfYm91bmQgJiYgdCA8PSBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIHdyYXBfbW9kdWxvIChDYW1sLkludDY0Lm9mX2Zsb2F0IHQpXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDYzLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgb2ZfaW50NjQgPSBvZl9pbnQ2NFxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gb2ZfaW50NjRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IHRvX2ludDY0XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxuXG4oKiBXZSBjYW4gcmV1c2UgY29udmVyc2lvbiBmdW5jdGlvbiBmcm9tL3RvIGludDY0IGhlcmUuICopXG5sZXQgb2ZfaW50IHggPSB3cmFwX2V4biAoQ29udi5pbnRfdG9faW50NjQgeClcbmxldCBvZl9pbnRfZXhuIHggPSBvZl9pbnQgeFxubGV0IHRvX2ludCB4ID0gQ29udi5pbnQ2NF90b19pbnQgKHVud3JhcCB4KVxubGV0IHRvX2ludF9leG4geCA9IENvbnYuaW50NjRfdG9faW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50X3RydW5jIHggPSBDb252LmludDY0X3RvX2ludF90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfaW50MzIgeCA9IHdyYXBfZXhuIChDb252LmludDMyX3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50MzJfZXhuIHggPSBvZl9pbnQzMiB4XG5sZXQgdG9faW50MzIgeCA9IENvbnYuaW50NjRfdG9faW50MzIgKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX3RydW5jIHggPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jICh1bndyYXAgeClcbmxldCBvZl9uYXRpdmVpbnQgeCA9IG9mX2ludDY0IChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF9leG4geCA9IHdyYXBfZXhuIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF90cnVuYyB4ID0gb2ZfaW50NjRfdHJ1bmMgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgdG9fbmF0aXZlaW50IHggPSBDb252LmludDY0X3RvX25hdGl2ZWludCAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jICh1bndyYXAgeClcblxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoVC5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIFQuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gVC5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuXG4gICAgbGV0IHRvX3N0cmluZyBpID1cbiAgICAgICgqIHRoZSB1c2Ugb2YgW3Vud3JhcF91bnNpZ25lZF0gaGVyZSBpcyBpbXBvcnRhbnQgZm9yIHRoZSBjYXNlIG9mIFttaW5fdmFsdWVdICopXG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVMeFwiICh1bndyYXBfdW5zaWduZWQgaSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gb2Zfc3RyaW5nIChcIjB4XCIgXiBzKVxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2My5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcgeFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2M1wiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjNdIGFuZCBbSW50NjMuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICB0eXBlIGVtdWxhdGVkID0gdFxuXG4gIHR5cGUgKCd1bmRlcmx5aW5nX3R5cGUsICdpbnRlcm1lZGlhdGVfdHlwZSkgdCA9XG4gICAgfCBJbnQgOiAoaW50LCBpbnQpIHRcbiAgICB8IEludDY0IDogKGludDY0LCBlbXVsYXRlZCkgdFxuZW5kXG5cbmxldCByZXByID0gUmVwci5JbnQ2NFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9ib29sIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIGZhbHNlOyB0cnVlIF0gOiB0IGxpc3QpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9ib29sXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9ib29sIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChib29sX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Jvb2wgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYm9vbF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICAgIHwgcyAtPiBpbnZhbGlkX2FyZ2YgXCJCb29sLm9mX3N0cmluZzogZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZSBidXQgZ290ICVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBDYW1sLnN0cmluZ19vZl9ib29sXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQm9vbFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCB0b19pbnQgeCA9IGJvb2xfdG9faW50IHhcblxubW9kdWxlIE5vbl9zaG9ydF9jaXJjdWl0aW5nID0gc3RydWN0XG4gICgqIFdlIGRvbid0IGV4cG9zZSB0aGlzLCBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIHRoZSBpbnZhcmlhbnQgbWVudGlvbmVkIGJlbG93IG9mXG4gICAgICh0b19pbnQgdHJ1ZSA9IDEpIGFuZCAodG9faW50IGZhbHNlID0gMCkuICopXG4gIGxldCB1bnNhZmVfb2ZfaW50ICh4IDogaW50KSA6IGJvb2wgPSBDYW1sLk9iai5tYWdpYyB4XG4gIGxldCAoIHx8ICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbG9yIHRvX2ludCBiKVxuICBsZXQgKCAmJiApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxhbmQgdG9faW50IGIpXG5lbmRcblxuKCogV2UgZG8gdGhpcyBhcyBhIGRpcmVjdCBhc3NlcnQgb24gdGhlIHRoZW9yeSB0aGF0IGl0J3MgYSBjaGVhcCB0aGluZyB0byB0ZXN0IGFuZCBhXG4gICByZWFsbHkgY29yZSBpbnZhcmlhbnQgdGhhdCB3ZSBuZXZlciBleHBlY3QgdG8gYnJlYWssIGFuZCB3ZSBzaG91bGQgYmUgaGFwcHkgZm9yIGFcbiAgIHByb2dyYW0gdG8gZmFpbCBpbW1lZGlhdGVseSBpZiB0aGlzIGlzIHZpb2xhdGVkLiAqKVxubGV0ICgpID0gYXNzZXJ0IChQb2x5LiggPSApICh0b19pbnQgdHJ1ZSkgMSAmJiBQb2x5LiggPSApICh0b19pbnQgZmFsc2UpIDApXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBDYW1sLkludDMyXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludDMyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDMyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDMyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSAzMlxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50MzIub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIEluZml4X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgb3BlbiBQb2x5XG5cbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSB4ID49IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSB4IDw9IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSB4ID4geVxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0geCA8IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSB4IDw+IHlcbmVuZFxuXG5tb2R1bGUgQ29tcGFyZSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4X2NvbXBhcmVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX2ludDMyIHQgPSB0XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiB0ID0gdFxubGV0IHRvX2ludDMyX2V4biA9IHRvX2ludDMyXG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQzMl9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9faW50MzJcbmxldCBvZl9pbnRfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50X3RydW5jID0gQ29udi5pbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQgPSBDb252LmludDMyX3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252LmludDMyX3RvX2ludF90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252LmludDMyX3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwMzIgOiB0IC0+IHQgPSBcIiVic3dhcF9pbnQzMlwiXG5cbmxldCBic3dhcDE2IHggPSBDYW1sLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwMzIgeCkgMTZcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5JbnQzMi5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBDYW1sLkludDMyLmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuSW50MzIucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBDYW1sLkludDMyLnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBDYW1sLkludDMyLnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBDYW1sLkludDMyLnByZWQgeCA9IENhbWwuSW50MzIuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludDMyIGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gQ2FtbC5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQzMiBpIF0pO1xuICAgICgqIFRoZSBbaSA9IDFdIGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIGNseigwKSBpcyB1bmRlZmluZWQgKilcbiAgICBpZiBDYW1sLkludDMyLmVxdWFsIGkgQ2FtbC5JbnQzMi5vbmUgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKENhbWwuSW50MzIucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDMyIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJWx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlbHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMi5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyXCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoQ29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50MzJdIGFuZCBbSW50MzIuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgUmVwciA9IEludDYzX2VtdWwuUmVwclxuXG4oKiBJbiBhIHdvcmxkIHdoZXJlIHRoZSBjb21waWxlciB3b3VsZCB1bmRlcnN0YW5kIFtAQGltbWVkaWF0ZTY0XSBhdHRyaWJ1dGVzIG9uIHR5cGVcbiAgIGRlY2xhcmF0aW9ucywgdGhpcyBtb2R1bGUgaXMgaG93IG9uZSB3b3VsZCBwcm9kdWNlIGEgW3R5cGUgdF0gd2l0aCB0aGlzIGF0dHJpYnV0ZS4gKilcbm1vZHVsZSBJbW1lZGlhdGU2NCA6IHNpZ1xuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgOiBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgdmFsIHJlcHIgOiB0IHJlcHJcbiAgZW5kXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIGxldCByZXByID1cbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gKENhbWwuT2JqLm1hZ2ljIEltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICAgIHwgVzMyIC0+IChDYW1sLk9iai5tYWdpYyBOb25faW1tZWRpYXRlIDogdCByZXByKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgSW1tZWRpYXRlNjQuTWFrZSAoSW50KSAoSW50NjNfZW11bClcblxubW9kdWxlIEJhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBJbnRfaW50Zi5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludCBvcHRpb25cbiAgICB2YWwgdG9faW50X3RydW5jIDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0XG4gICAgdmFsIHRvX2ludDMyIDogdCAtPiBJbnQzMi50IG9wdGlvblxuICAgIHZhbCB0b19pbnQzMl90cnVuYyA6IHQgLT4gSW50MzIudFxuICAgIHZhbCBvZl9pbnQ2NCA6IEludDY0LnQgLT4gdCBvcHRpb25cbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBJbnQ2NC50IC0+IHRcbiAgICB2YWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgb3B0aW9uXG4gICAgdmFsIHRvX25hdGl2ZWludCA6IHQgLT4gbmF0aXZlaW50IG9wdGlvblxuICAgIHZhbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiBuYXRpdmVpbnQgLT4gdFxuICAgIHZhbCB0b19uYXRpdmVpbnRfdHJ1bmMgOiB0IC0+IG5hdGl2ZWludFxuICAgIHZhbCBvZl9mbG9hdF91bmNoZWNrZWQgOiBmbG9hdCAtPiB0XG4gICAgdmFsIHJlcHIgOiAodCwgdCkgSW50NjNfZW11bC5SZXByLnRcbiAgICB2YWwgYnN3YXAxNiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDMyIDogdCAtPiB0XG4gICAgdmFsIGJzd2FwNDggOiB0IC0+IHRcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTmF0aXZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCB0b19pbnQgeCA9IFNvbWUgeFxuICAgIGxldCB0b19pbnRfdHJ1bmMgeCA9IHhcblxuICAgICgqIFtvZl9pbnQzMl9leG5dIGlzIGEgc2FmZSBvcGVyYXRpb24gb24gcGxhdGZvcm1zIHdpdGggNjQtYml0IHdvcmQgc2l6ZXMuICopXG4gICAgbGV0IG9mX2ludDMyID0gb2ZfaW50MzJfZXhuXG4gICAgbGV0IHRvX25hdGl2ZWludF90cnVuYyB4ID0gdG9fbmF0aXZlaW50IHhcbiAgICBsZXQgdG9fbmF0aXZlaW50IHggPSBTb21lICh0b19uYXRpdmVpbnQgeClcbiAgICBsZXQgcmVwciA9IEludDYzX2VtdWwuUmVwci5JbnRcbiAgICBsZXQgYnN3YXAzMiB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDMyIChJbnQ2NC5vZl9pbnQgdCkpXG4gICAgbGV0IGJzd2FwNDggdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXA0OCAoSW50NjQub2ZfaW50IHQpKVxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgUykgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgTmF0aXZlIDogUylcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gKG1vZHVsZSBJbnQ2M19lbXVsIDogUylcbiAgOztcbmVuZFxuXG5pbmNsdWRlICh2YWwgQmFja2VuZC5pbXBsIDogQmFja2VuZC5TKVxuXG5tb2R1bGUgT3ZlcmZsb3dfZXhuID0gc3RydWN0XG4gIGxldCAoICsgKSB0IHUgPVxuICAgIGxldCBzdW0gPSB0ICsgdSBpblxuICAgIGlmIGJpdF9vciAoYml0X3hvciB0IHUpIChiaXRfeG9yIHQgKGJpdF9ub3Qgc3VtKSkgPCB6ZXJvXG4gICAgdGhlbiBzdW1cbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICsgKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwic3VtXCIsIHNleHBfb2ZfdCBzdW0gXSlcbiAgOztcblxuICBsZXQgKCAtICkgdCB1ID1cbiAgICBsZXQgZGlmZiA9IHQgLSB1IGluXG4gICAgbGV0IHBvc19kaWZmID0gdCA+IHUgaW5cbiAgICBpZiB0IDw+IHUgJiYgQm9vbC4oIDw+ICkgcG9zX2RpZmYgKGlzX3Bvc2l0aXZlIGRpZmYpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAtICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcImRpZmZcIiwgc2V4cF9vZl90IGRpZmYgXSlcbiAgICBlbHNlIGRpZmZcbiAgOztcblxuICBsZXQgbmVnYXRpdmVfb25lID0gb2ZfaW50ICgtMSlcbiAgbGV0IGRpdl93b3VsZF9vdmVyZmxvdyB0IHUgPSB0ID0gbWluX3ZhbHVlICYmIHUgPSBuZWdhdGl2ZV9vbmVcblxuICBsZXQgKCAqICkgdCB1ID1cbiAgICBsZXQgcHJvZHVjdCA9IHQgKiB1IGluXG4gICAgaWYgdSA8PiB6ZXJvICYmIChkaXZfd291bGRfb3ZlcmZsb3cgcHJvZHVjdCB1IHx8IHByb2R1Y3QgLyB1IDw+IHQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAqICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInByb2R1Y3RcIiwgc2V4cF9vZl90IHByb2R1Y3QgXSlcbiAgICBlbHNlIHByb2R1Y3RcbiAgOztcblxuICBsZXQgKCAvICkgdCB1ID1cbiAgICBpZiBkaXZfd291bGRfb3ZlcmZsb3cgdCB1XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAvICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInByb2R1Y3RcIiwgc2V4cF9vZl90ICh0IC8gdSkgXSlcbiAgICBlbHNlIHQgLyB1XG4gIDs7XG5cbiAgbGV0IGFicyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwiYWJzIG92ZXJmbG93XCIgZWxzZSBhYnMgdFxuICBsZXQgbmVnIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJuZWcgb3ZlcmZsb3dcIiBlbHNlIG5lZyB0XG5lbmRcblxubGV0ICgpID0gYXNzZXJ0IChJbnQuKCA9ICkgbnVtX2JpdHMgNjMpXG5cbmxldCByYW5kb21fb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnQgc3RhdGUgKHRvX2ludF9leG4gYm91bmQpKVxuOztcblxubGV0IHJhbmRvbV9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjQgc3RhdGUgKHRvX2ludDY0IGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb20gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX29mX2ludFxuICB8IFczMiAtPiByYW5kb21fb2ZfaW50NjRcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsbyBoaSA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludF9pbmNsIHN0YXRlICh0b19pbnRfZXhuIGxvKSAodG9faW50X2V4biBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsbyBoaSA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0X2luY2wgc3RhdGUgKHRvX2ludDY0IGxvKSAodG9faW50NjQgaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9pbmNsX29mX2ludFxuICB8IFczMiAtPiByYW5kb21faW5jbF9vZl9pbnQ2NFxuOztcblxubGV0IGZsb29yX2xvZzIgdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiB0IHw+IHRvX2ludF9leG4gfD4gSW50LmZsb29yX2xvZzJcbiAgfCBXMzIgLT5cbiAgICBpZiB0IDw9IHplcm9cbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfdCB0IF0pO1xuICAgIGxldCBmbG9vcl9sb2cyID0gcmVmIChJbnQuKCAtICkgbnVtX2JpdHMgMikgaW5cbiAgICB3aGlsZSBlcXVhbCB6ZXJvIChiaXRfYW5kIHQgKHNoaWZ0X2xlZnQgb25lICFmbG9vcl9sb2cyKSkgZG9cbiAgICAgIGZsb29yX2xvZzIgOj0gSW50LiggLSApICFmbG9vcl9sb2cyIDFcbiAgICBkb25lO1xuICAgICFmbG9vcl9sb2cyXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVwciA9IFJlcHJcblxuICBsZXQgcmVwciA9IHJlcHJcblxuICBtb2R1bGUgRW11bCA9IEludDYzX2VtdWxcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5LZXkgKilcbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogVHdvIFt0XXMgdGhhdCBbY29tcGFyZV0gZXF1YWwgbXVzdCBoYXZlIGVxdWFsIGhhc2hlcyBmb3IgdGhlIGhhc2h0YWJsZVxuICAgICAgICB0byBiZWhhdmUgcHJvcGVybHkuICopXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICBlbmRcblxuICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuTWVyZ2VfaW50b19hY3Rpb24gKilcbm1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUmVtb3ZlXG4gICAgfCBTZXRfdG8gb2YgJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBzaWdcbiAgKCoqIHsyIEFjY2Vzc29yc30gKilcblxuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICB2YWwgc2V4cF9vZl9rZXkgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IFNleHAudFxuICB2YWwgY2xlYXIgOiAoXywgXykgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEF0dGVtcHRpbmcgdG8gbW9kaWZ5IChbc2V0XSwgW3JlbW92ZV0sIGV0Yy4pIHRoZSBoYXNodGFibGUgZHVyaW5nIGl0ZXJhdGlvbiAoW2ZvbGRdLFxuICAgICAgW2l0ZXJdLCBbaXRlcl9rZXlzXSwgW2l0ZXJpXSkgd2lsbCByYWlzZSBhbiBleGNlcHRpb24uICopXG4gIHZhbCBmb2xkIDogKCdhLCAnYikgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfKSB0IC0+IGY6KCdhIGtleSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgb3ZlciBib3RoIGtleXMgYW5kIHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuaXRlcmkgaCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgcHJpbnRfZW5kbGluZSAoUHJpbnRmLnNwcmludGYgXCIlZC0lZFwiIGtleSBkYXRhKSk7O1xuICAgICAgMS00XG4gICAgICA1LTZcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9ICopXG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IGJvb2xcbiAgdmFsIHJlbW92ZSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gdW5pdFxuICB2YWwgY2hvb3NlIDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogU2V0cyB0aGUgZ2l2ZW4gW2tleV0gdG8gW2RhdGFdLiAqKVxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbYWRkXSBhbmQgW2FkZF9leG5dIGxlYXZlIHRoZSB0YWJsZSB1bmNoYW5nZWQgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBwcmVzZW50LiAqKVxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gWyBgT2sgfCBgRHVwbGljYXRlIF1cblxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gY2hhbmdlcyBbdF0ncyB2YWx1ZSBmb3IgW2tleV0gdG8gYmUgW2YgKGZpbmQgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGVfYW5kX3JldHVybiB0IGtleSB+Zl0gaXMgW3VwZGF0ZV0sIGJ1dCByZXR1cm5zIHRoZSByZXN1bHQgb2YgW2Ygb10uICopXG4gIHZhbCB1cGRhdGVfYW5kX3JldHVybiA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gJ2JcblxuICAoKiogW21hcCB0IGZdIHJldHVybnMgYSBuZXcgdGFibGUgd2l0aCB2YWx1ZXMgcmVwbGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBbZl1cbiAgICAgIHRvIHRoZSBjdXJyZW50IHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIGxldCBoJyA9IEhhc2h0YmwubWFwIGggfmY6KGZ1biB4IC0+IHggKiAyKSBpblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoJzs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgMTIpOyAoMSwgOCldXG4gICAgICB2fSAqKVxuICB2YWwgbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyB0YWJsZSBieSBmaWx0ZXJpbmcgdGhlIGdpdmVuIHRhYmxlJ3MgdmFsdWVzIGJ5IFtmXTogdGhlIGtleXMgZm9yIHdoaWNoXG4gICAgICBbZl0gYXBwbGllZCB0byB0aGUgY3VycmVudCB2YWx1ZSByZXR1cm5zIFtTb21lXSBhcmUga2VwdCwgYW5kIHRob3NlIGZvciB3aGljaCBpdFxuICAgICAgcmV0dXJucyBbTm9uZV0gYXJlIGRpc2NhcmRlZC5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuZmlsdGVyX21hcCBoIH5mOihmdW4geCAtPiBpZiB4ID4gNSB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCA2KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYikgdCAtPiBmOignYSBrZXkgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBSZXR1cm5zIG5ldyB0YWJsZXMgd2l0aCBib3VuZCB2YWx1ZXMgcGFydGl0aW9uZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kXG4gICAgICB2YWx1ZXMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudCkgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgcGFpciBvZiB0YWJsZXMgWyh0MSwgdDIpXSwgd2hlcmUgW3QxXSBjb250YWlucyBhbGwgdGhlIGVsZW1lbnRzIG9mIHRoZVxuICAgICAgaW5pdGlhbCB0YWJsZSB3aGljaCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLCBhbmQgW3QyXSBjb250YWlucyB0aGUgcmVzdC4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX3RmXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBbZmluZF9vcl9hZGQgdCBrIH5kZWZhdWx0XSByZXR1cm5zIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBrZXkgW2tdIGlmIGl0IGlzIGluIHRoZVxuICAgICAgdGFibGUgW3RdLCBhbmQgb3RoZXJ3aXNlIGFzc2lnbnMgW2tdIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBbZGVmYXVsdCAoKV0uICopXG4gIHZhbCBmaW5kX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KHVuaXQgLT4gJ2IpIC0+ICdiXG5cbiAgKCoqIExpa2UgW2ZpbmRfb3JfYWRkXSBidXQgW2RlZmF1bHRdIHRha2VzIHRoZSBrZXkgYXMgYW4gYXJndW1lbnQuICopXG4gIHZhbCBmaW5kaV9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0OignYSBrZXkgLT4gJ2IpIC0+ICdiXG5cbiAgKCoqIFtmaW5kIHQga10gcmV0dXJucyBbU29tZV0gKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIFtrXSBpbiBbdF0sIG9yIFtOb25lXSBpZiBubyBzdWNoXG4gICAgICBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogW2ZpbmRfZXhuIHQga10gcmV0dXJucyB0aGUgY3VycmVudCBiaW5kaW5nIG9mIFtrXSBpbiBbdF0sIG9yIHJhaXNlcyBbQ2FtbC5Ob3RfZm91bmRdXG4gICAgICBvciBbTm90X2ZvdW5kX3NdIGlmIG5vIHN1Y2ggYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiXG5cbiAgKCoqIFtmaW5kX2FuZF9jYWxsIHQgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZF1cblxuICAgICAgaXMgZXF1aXZhbGVudCB0bzpcblxuICAgICAgW21hdGNoIGZpbmQgdCBrIHdpdGggU29tZSB2IC0+IGlmX2ZvdW5kIHYgfCBOb25lIC0+IGlmX25vdF9mb3VuZCBrXVxuXG4gICAgICBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIHRoZSBvcHRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnYylcbiAgICAtPiAnY1xuXG4gICgqKiBKdXN0IGxpa2UgW2ZpbmRfYW5kX2NhbGxdLCBidXQgdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQgd2hpY2ggaXMgcGFzc2VkIHRvIFtpZl9mb3VuZF1cbiAgICAgIGFuZCBbaWZfbm90X2ZvdW5kXSwgc28gdGhhdCB0aGUgY2xpZW50IGNvZGUgY2FuIGF2b2lkIGFsbG9jYXRpbmcgY2xvc3VyZXMgb3IgdXNpbmdcbiAgICAgIHJlZnMgdG8gcGFzcyB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGluIGNvZGVcbiAgICAgIHdoaWNoIHRyaWVzIHRvIG1pbmltaXplIGhlYXAgYWxsb2NhdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooJ2IgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZF9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooJ2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiAnY1xuXG4gICgqKiBbZmluZF9hbmRfcmVtb3ZlIHQga10gcmV0dXJucyBTb21lICh0aGUgY3VycmVudCBiaW5kaW5nKSBvZiBrIGluIHQgYW5kIHJlbW92ZXMgaXQsXG4gICAgICBvciBOb25lIGlzIG5vIHN1Y2ggYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kX2FuZF9yZW1vdmUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogTWVyZ2VzIHR3byBoYXNodGFibGVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIFttZXJnZSBmIGgxIGgyXSBoYXMgYXMga2V5cyB0aGUgc2V0IG9mIGFsbCBba10gaW4gdGhlIHVuaW9uIG9mIHRoZVxuICAgICAgc2V0cyBvZiBrZXlzIG9mIFtoMV0gYW5kIFtoMl0gZm9yIHdoaWNoIFtkKGspXSBpcyBub3QgTm9uZSwgd2hlcmU6XG5cbiAgICAgIGQoaykgPVxuICAgICAgLSBbZiB+a2V5OmsgKGBMZWZ0IGQxKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMV0gbWFwcyB0byBkMSwgYW5kIFtoMl0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgUmlnaHQgZDIpXVxuICAgICAgICBpZiBba10gaW4gW2gyXSBtYXBzIHRvIGQyLCBhbmQgW2gxXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBCb3RoIChkMSwgZDIpKV1cbiAgICAgICAgb3RoZXJ3aXNlLCB3aGVyZSBba10gaW4gW2gxXSBtYXBzIHRvIFtkMV0gYW5kIFtrXSBpbiBbaDJdIG1hcHMgdG8gW2QyXS5cblxuICAgICAgRWFjaCBrZXkgW2tdIGlzIG1hcHBlZCB0byBhIHNpbmdsZSBwaWVjZSBvZiBkYXRhIFt4XSwgd2hlcmUgW2QoaykgPSBTb21lIHhdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn0gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdrLCAnYSkgdFxuICAgIC0+ICgnaywgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+IFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2IgfCBgQm90aCBvZiAnYSAqICdiIF0gLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnaywgJ2MpIHRcblxuXG4gICgqKiBFdmVyeSBba2V5XSBpbiBbc3JjXSB3aWxsIGJlIHJlbW92ZWQgb3Igc2V0IGluIFtkc3RdIGFjY29yZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlXG4gICAgICBvZiBbZl0uICopXG4gIHZhbCBtZXJnZV9pbnRvXG4gICAgOiAgc3JjOignaywgJ2EpIHRcbiAgICAtPiBkc3Q6KCdrLCAnYikgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uIC0+ICdiIE1lcmdlX2ludG9fYWN0aW9uLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBrZXlzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBrZXlzIDogKCdhLCBfKSB0IC0+ICdhIGtleSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGRhdGEgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ2IpIHQgLT4gJ2IgbGlzdFxuXG4gICgqKiBbZmlsdGVyX2lucGxhY2UgdCB+Zl0gcmVtb3ZlcyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gW3RdIHRoYXQgZG9uJ3Qgc2F0aXNmeSBbZl0uICopXG4gIHZhbCBmaWx0ZXJfa2V5c19pbnBsYWNlIDogKCdhLCBfKSB0IC0+IGY6KCdhIGtleSAtPiBib29sKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IHVuaXRcbiAgdmFsIGZpbHRlcmlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IHVuaXRcblxuICAoKiogW21hcF9pbnBsYWNlIHQgfmZdIGFwcGxpZXMgW2ZdIHRvIGFsbCBlbGVtZW50cyBpbiBbdF0sIHRyYW5zZm9ybWluZyB0aGVtIGluXG4gICAgICBwbGFjZS4gKilcbiAgdmFsIG1hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+ICdiKSAtPiB1bml0XG5cbiAgdmFsIG1hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiKSAtPiB1bml0XG5cbiAgKCoqIFtmaWx0ZXJfbWFwX2lucGxhY2VdIGNvbWJpbmVzIHRoZSBlZmZlY3RzIG9mIFttYXBfaW5wbGFjZV0gYW5kIFtmaWx0ZXJfaW5wbGFjZV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9tYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYiBvcHRpb24pIC0+IHVuaXRcblxuICAoKiogW2VxdWFsIGYgdDEgdDJdIGFuZCBbc2ltaWxhciBmIHQxIHQyXSBib3RoIHJldHVybiB0cnVlIGlmZiBbdDFdIGFuZCBbdDJdIGhhdmUgdGhlXG4gICAgICBzYW1lIGtleXMgYW5kIGZvciBhbGwga2V5cyBba10sIFtmIChmaW5kX2V4biB0MSBrKSAoZmluZF9leG4gdDIgayldLiAgW2VxdWFsXSBhbmRcbiAgICAgIFtzaW1pbGFyXSBvbmx5IGRpZmZlciBpbiB0aGVpciB0eXBlcy4gKilcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBib29sXG5cbiAgdmFsIHNpbWlsYXIgOiAoJ2IxIC0+ICdiMiAtPiBib29sKSAtPiAoJ2EsICdiMSkgdCAtPiAoJ2EsICdiMikgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIChrZXksIGRhdGEpIHBhaXJzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCB0b19hbGlzdCA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBsaXN0XG5cblxuICAoKiogW3JlbW92ZV9pZl96ZXJvXSdzIGRlZmF1bHQgaXMgW2ZhbHNlXS4gKilcbiAgdmFsIGluY3IgOiA/Ynk6aW50IC0+ID9yZW1vdmVfaWZfemVybzpib29sIC0+ICgnYSwgaW50KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgdmFsIGRlY3IgOiA/Ynk6aW50IC0+ID9yZW1vdmVfaWZfemVybzpib29sIC0+ICgnYSwgaW50KSB0IC0+ICdhIGtleSAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgTXVsdGkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgKCoqIFthZGRfbXVsdGkgdCB+a2V5IH5kYXRhXSBpZiBba2V5XSBpcyBwcmVzZW50IGluIHRoZSB0YWJsZSB0aGVuIGNvbnNcbiAgICAgIFtkYXRhXSBvbiB0aGUgbGlzdCwgb3RoZXJ3aXNlIGFkZCBba2V5XSB3aXRoIGEgc2luZ2xlIGVsZW1lbnQgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbcmVtb3ZlX211bHRpIHQga2V5XSB1cGRhdGVzIHRoZSB0YWJsZSwgcmVtb3ZpbmcgdGhlIGhlYWQgb2YgdGhlIGxpc3QgYm91bmQgdG9cbiAgICAgIFtrZXldLiBJZiB0aGUgbGlzdCBoYXMgb25seSBvbmUgZWxlbWVudCAob3IgaXMgZW1wdHkpIHRoZW4gdGhlIGJpbmRpbmcgaXNcbiAgICAgIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsIF8gbGlzdCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gICgqKiBbZmluZF9tdWx0aSB0IGtleV0gcmV0dXJucyB0aGUgZW1wdHkgbGlzdCBpZiBba2V5XSBpcyBub3QgcHJlc2VudCBpbiB0aGUgdGFibGUsXG4gICAgICByZXR1cm5zIFt0XSdzIHZhbHVlcyBmb3IgW2tleV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSBrZXkgLT4gJ2IgbGlzdFxuZW5kXG5cbnR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPVxuICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAtPiAna2V5IEtleS50XG4gIC0+ICd6XG5cbnR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAtPiAnelxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuICB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSBrZXksICdiLCB1bml0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsICgnYSBrZXkgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2Ega2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsICgnYSBrZXkgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICgnYSBrZXksICdiIGxpc3QsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiIGxpc3QpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICgnYSBrZXksICdyLCBnZXRfa2V5OignciAtPiAnYSBrZXkpIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBncm91cFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KVxuICAgICAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgICAgIC0+IGNvbWJpbmU6KCdiIC0+ICdiIC0+ICdiKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+ICgnYSwgJ2IpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiB7MiBDcmVhdG9yc30gKilcblxuICAoKiogVGhlIG1vZHVsZSB5b3UgcGFzcyB0byBbY3JlYXRlXSBtdXN0IGhhdmUgYSB0eXBlIHRoYXQgaXMgaGFzaGFibGUsIHNleHBhYmxlLCBhbmRcbiAgICAgIGNvbXBhcmFibGUuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KTs7XG4gICAgICAgIC0gOiAoaW50LCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj47O1xuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMywgXCJzb21ldGhpbmdcIik7ICgyLCBcIndoYXRldmVyXCIpXVxuICAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBXaGVyZWFzIFtvZl9hbGlzdF0gd2lsbCByZXBvcnQgW0R1cGxpY2F0ZV9rZXldIG5vIG1hdHRlciBob3cgbWFueSBkdXBzIHRoZXJlIGFyZSBpblxuICAgICAgeW91ciBsaXN0LCBbb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXSB3aWxsIHJlcG9ydCBlYWNoIGFuZCBldmVyeSBkdXBsaWNhdGUgZW50cnkuXG5cbiAgICAgIEZvciBleGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXkgMVxuXG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXlzIFsxOyAyXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQ3JlYXRlcyBhIHt7IU11bHRpfSBcIm11bHRpXCJ9IGhhc2h0YWJsZSwgaS5lLiwgYSBoYXNodGFibGUgd2hlcmUgZWFjaCBrZXkgcG9pbnRzIHRvIGFcbiAgICAgIGxpc3QgcG90ZW50aWFsbHkgY29udGFpbmluZyBtdWx0aXBsZSB2YWx1ZXMuIFNvIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZyB3aXRoIGFcbiAgICAgIFtgRHVwbGljYXRlX2tleV0gdmFyaWFudCBvbiBkdXBsaWNhdGVzLCBhcyBpbiBbb2ZfYWxpc3RdLCBbb2ZfYWxpc3RfbXVsdGldIGZvbGRzXG4gICAgICB0aG9zZSB2YWx1ZXMgaW50byBhIGxpc3QgZm9yIHRoZSBnaXZlbiBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBJbnQpIFsoMSwgXCJhXCIpOyAoMSwgXCJiXCIpOyAoMiwgXCJjXCIpOyAoMiwgXCJkXCIpXTs7XG4gICAgICB2YWwgaCA6IChpbnQsIHN0cmluZyBsaXN0KSBIYXNodGJsLnQgPSA8YWJzdHI+XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgIC0gOiBzdHJpbmcgbGlzdCA9IFtcImJcIjsgXCJhXCJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gICgqKiBBcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3IgbGlzdF0gdG8gY3JlYXRlIHRoZVxuICAgICAgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlLlxuXG4gICAgICB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXVxuICAgICAgXX1cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIEhhc2h0YmwuY3JlYXRlX21hcHBlZCAobW9kdWxlIEludClcbiAgICAgICAgICAgIH5nZXRfa2V5OihmdW4geCAtPiB4KVxuICAgICAgICAgICAgfmdldF9kYXRhOihmdW4geCAtPiB4ICsgMSlcbiAgICAgICAgICAgWzE7IDI7IDNdOztcbiAgICAgICAgdmFsIGggOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBpbnQpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cblxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgbWF0Y2ggaCB3aXRoXG4gICAgICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICAgICAgfCBgRHVwbGljYXRlX2tleXMgXyAtPiBmYWlsd2l0aCBcIlwiXG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgICAgLSA6IGludCA9IDJcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gICgqKiB7WyBjcmVhdGVfd2l0aF9rZXkgfmdldF9rZXkgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIHgxOyAuLi47IGdldF9rZXkgeG4sIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX3dpdGhfa2V5XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0XG5cbiAgKCoqIExpa2UgW2NyZWF0ZV9tYXBwZWRdLCBhcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3JcbiAgICAgIGxpc3RdIHRvIGNyZWF0ZSB0aGUgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlIC0tXG4gICAgICBhbmQgdGhlbiwgbGlrZSBbYWRkX211bHRpXSwgZm9sZHMgdG9nZXRoZXIgdmFsdWVzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBrZXlzLiBIZXJlLFxuICAgICAgdGhvdWdoLCB0aGUgZnVuY3Rpb24gdXNlZCBmb3IgdGhlIGZvbGRpbmcgaXMgZ2l2ZW4gYnkgW2NvbWJpbmVdIChpbnN0ZWFkIG9mIGp1c3RcbiAgICAgIGJlaW5nIGEgW2NvbnNdKS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0YmwuZ3JvdXAgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgIH5nZXRfa2V5OihmdW4geCAtPiB4IC8gMilcbiAgICAgICAgICAgfmdldF9kYXRhOihmdW4geCAtPiB4KVxuICAgICAgICAgICB+Y29tYmluZTooZnVuIHggeSAtPiB4ICogeSlcbiAgICAgICAgICAgIFsgMTsgMjsgMzsgNF1cbiAgICAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDIsIDQpOyAoMSwgNik7ICgwLCAxKV1cbiAgICAgICB2fSAqKVxuICB2YWwgZ3JvdXBcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgLT4gY29tYmluZTooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IHNpZ1xuICB2YWwgaGFzaCA6ICdhIC0+IGludFxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG5cbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgKCoqIFdlIHByb3ZpZGUgYSBbc2V4cF9vZl90XSBidXQgbm90IGEgW3Rfb2Zfc2V4cF0gZm9yIHRoaXMgdHlwZSBiZWNhdXNlIG9uZSBuZWVkcyB0byBiZVxuICAgICAgZXhwbGljaXQgYWJvdXQgdGhlIGhhc2ggYW5kIGNvbXBhcmlzb24gZnVuY3Rpb25zIHVzZWQgd2hlbiBjcmVhdGluZyBhIGhhc2h0YWJsZS5cbiAgICAgIE5vdGUgdGhhdCBbSGFzaHRibC5Qb2x5LnRdIGRvZXMgaGF2ZSBbW0BAZGVyaXZpbmcgc2V4cF1dLCBhbmQgdXNlcyBPQ2FtbCdzIGJ1aWx0LWluXG4gICAgICBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGFuZCBhbmQgcG9seW1vcnBoaWMgaGFzaGluZy4gKilcbiAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cC50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ICgqKiBAaW5saW5lICopXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgKCoqIEBpbmxpbmUgKilcblxuXG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAoKiogQGlubGluZSAqKVxuXG4gIHZhbCBoYXNoYWJsZV9zIDogKCdrZXksIF8pIHQgLT4gJ2tleSBLZXkudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgOiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuXG4gIHZhbCBoYXNoYWJsZSA6ICdhIEhhc2hhYmxlLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdrLCAndikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNodGJsID0gc2lnXG4gICgqKiBBIGhhc2ggdGFibGUgaXMgYSBtdXRhYmxlIGRhdGEgc3RydWN0dXJlIGltcGxlbWVudGluZyBhIG1hcCBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcy5cbiAgICAgIEl0IHN1cHBvcnRzIGNvbnN0YW50LXRpbWUgbG9va3VwIGFuZCBpbi1wbGFjZSBtb2RpZmljYXRpb24uXG5cbiAgICAgIHsxIFVzYWdlfVxuXG4gICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCB3ZSdsbCBjcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggc3RyaW5nIGtleXMgdXNpbmcgdGhlXG4gICAgICB7eyFjcmVhdGV9W2NyZWF0ZV19IGNvbnN0cnVjdG9yLCB3aGljaCBleHBlY3RzIGEgbW9kdWxlIGRlZmluaW5nIHRoZSBrZXkncyB0eXBlOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgaCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgU3RyaW5nKTs7XG4gICAgICAgIHZhbCBoIDogKHN0cmluZywgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+XG4gICAgICBdfVxuXG4gICAgICBXZSBjYW4gc2V0IHRoZSB2YWx1ZXMgb2YgaW5kaXZpZHVhbCBrZXlzIHdpdGgge3shc2V0fVtzZXRdfS4gSWYgdGhlIGtleSBhbHJlYWR5IGhhc1xuICAgICAgYSB2YWx1ZSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi5cblxuICAgICAge3ZcbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjU7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiYmFyXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fVxuXG4gICAgICBXZSBjYW4gYWNjZXNzIHZhbHVlcyBieSBrZXksIG9yIGR1bXAgYWxsIG9mIHRoZSBoYXNoIHRhYmxlJ3MgZGF0YTpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuZmluZCBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCBvcHRpb24gPSBTb21lIDZcblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCA9IDZcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCA2KTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuICAgICAge3shY2hhbmdlfVtjaGFuZ2VdfSBsZXRzIHVzIGNoYW5nZSBhIGtleSdzIHZhbHVlIGJ5IGFwcGx5aW5nIHRoZSBnaXZlbiBmdW5jdGlvbjpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuY2hhbmdlIGggXCJmb29cIiAoZnVuIHggLT5cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBTb21lICh4ICogMilcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgKTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgMTIpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG5cbiAgICAgIFdlIGNhbiB1c2Uge3shbWVyZ2V9W21lcmdlXX0gdG8gbWVyZ2UgdHdvIGhhc2h0YWJsZXMgd2l0aCBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gICAgICBob3cgd2UgY2hvb3NlIHZhbHVlcyB3aGVuIGEga2V5IGlzIHByZXNlbnQgaW4gdGhlIGZpcnN0IChcImxlZnRcIikgaGFzaHRhYmxlLCB0aGVcbiAgICAgIHNlY29uZCAoXCJyaWdodFwiKSwgb3IgYm90aC4gSGVyZSwgd2UnbGwgY29ucyB0aGUgdmFsdWVzIHdoZW4gYm90aCBoYXNodGFibGVzIGhhdmUgYVxuICAgICAga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn1cblxuICAgICAgezEgSW50ZXJmYWNlfSAqKVxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N1Ym1vZHVsZXMgKCoqIEBpbmxpbmUgKilcblxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBBY2Nlc3NvcnNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBDcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBNdWx0aSA9IE11bHRpXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IFNfd2l0aG91dF9zdWJtb2R1bGVzXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gTWVyZ2VfaW50b19hY3Rpb25cblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9ICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgbW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICAgIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gaW50IEhhc2h0YmwuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IChTdHJpbmcudCwgaW50KSBIYXNodGJsLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgSGFzaHRibC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZFxuICAgICAgc3ludGF4IGRvZXNuJ3QgKGJlY2F1c2UgW3Rfb2Zfc2V4cF0gZG9lc24ndCBrbm93IHdoYXQgY29tcGFyaXNvbi9oYXNoIGZ1bmN0aW9uIHRvXG4gICAgICB1c2UpLiAqKVxuICBtb2R1bGUgTSAoSyA6IFQuVCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKi8qKilcblxuICAoKl8gU2VlIHRoZSBKYW5lIFN0cmVldCBTdHlsZSBHdWlkZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgW1ByaXZhdGVdIHN1Ym1vZHVsZXM6XG5cbiAgICBodHRwczovL29wZW5zb3VyY2UuamFuZXN0cmVldC5jb20vc3RhbmRhcmRzLyNwcml2YXRlLXN1Ym1vZHVsZXMgKilcbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gICAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICAgIHZhbCBoYXNoYWJsZSA6ICgna2V5LCBfKSB0IC0+ICdrZXkgSGFzaGFibGUudFxuICBlbmRcbmVuZFxuIiwiKCogQSBmZXcgc21hbGwgdGhpbmdzIGNvcGllZCBmcm9tIG90aGVyIHBhcnRzIG9mIEJhc2UgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiB1cywgc28gd2VcbiAgIGNhbid0IHVzZSB0aGVtLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuKCogSXRzIGltcG9ydGFudCB0aGF0IEVtcHR5IGhhdmUgbm8gYXJncy4gSXQncyB0ZW1wdGluZyB0byBtYWtlIHRoaXMgdHlwZSBhIHJlY29yZFxuICAgKGUuZy4gdG8gaG9sZCB0aGUgY29tcGFyZSBmdW5jdGlvbiksIGJ1dCBhIGxvdCBvZiBtZW1vcnkgaXMgc2F2ZWQgYnkgRW1wdHkgYmVpbmcgYW5cbiAgIGltbWVkaWF0ZSwgc2luY2UgYWxsIHVudXNlZCBidWNrZXRzIGluIHRoZSBoYXNodGJsIGRvbid0IHVzZSBhbnkgbWVtb3J5IChiZXNpZGVzIHRoZVxuICAgYXJyYXkgY2VsbCkgKilcbnR5cGUgKCdrLCAndikgdCA9XG4gIHwgRW1wdHlcbiAgfCBOb2RlIG9mXG4gICAgICB7IG11dGFibGUgbGVmdCA6ICgnaywgJ3YpIHRcbiAgICAgIDsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgICA7IG11dGFibGUgcmlnaHQgOiAoJ2ssICd2KSB0XG4gICAgICB9XG4gIHwgTGVhZiBvZlxuICAgICAgeyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIH1cblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0OyByaWdodCA9IF8gfSAtPiBoZWlnaHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgY29tcGFyZSA9XG4gIGxldCBsZWdhbF9sZWZ0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSBsZWZ0X2tleSBrZXkgPCAwKVxuICBpblxuICBsZXQgbGVnYWxfcmlnaHRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgcmlnaHRfa2V5IGtleSA+IDApXG4gIGluXG4gIGxldCByZWMgaW52ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IHwgTGVhZiBfIC0+ICgpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gazsgdmFsdWUgPSBfOyBoZWlnaHQgPSBoOyByaWdodCB9IC0+XG4gICAgICBsZXQgaGwsIGhyID0gaGVpZ2h0IGxlZnQsIGhlaWdodCByaWdodCBpblxuICAgICAgaW52IGxlZnQ7XG4gICAgICBpbnYgcmlnaHQ7XG4gICAgICBsZWdhbF9sZWZ0X2tleSBrIGxlZnQ7XG4gICAgICBsZWdhbF9yaWdodF9rZXkgayByaWdodDtcbiAgICAgIGFzc2VydCAoaCA9IEludC5tYXggaGwgaHIgKyAxKTtcbiAgICAgIGFzc2VydCAoYWJzIChobCAtIGhyKSA8PSAyKVxuICBpblxuICBpbnZcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCB+Y29tcGFyZSA9IGludmFyaWFudCBjb21wYXJlIHRcblxuKCogSW4gdGhlIGZvbGxvd2luZyBjb21tZW50cyxcbiAgICd0IGlzIGJhbGFuY2VkJyBtZWFucyB0aGF0ICdpbnZhcmlhbnQgdCcgZG9lcyBub3RcbiAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoaXMgaW1wbGllcyBvZiBjb3Vyc2UgdGhhdCBlYWNoIG5vZGUncyBoZWlnaHQgZmllbGQgaXNcbiAgIGNvcnJlY3QuXG4gICAndCBpcyBiYWxhbmNlYWJsZScgbWVhbnMgdGhhdCBoZWlnaHQgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIG9mIHRcbiAgIGRpZmZlciBieSBhdCBtb3N0IDMuICopXG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGhhdmUgY29ycmVjdCBoZWlnaHRzXG4gICBAcG9zdDogb3V0cHV0IGhhcyB0aGUgY29ycmVjdCBoZWlnaHQgKilcbmxldCB1cGRhdGVfaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gb2xkX2hlaWdodDsgcmlnaHQgfSBhcyB4KSAtPlxuICAgIGxldCBuZXdfaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IGxlZnQpIChoZWlnaHQgcmlnaHQpICsgMSBpblxuICAgIGlmIG5ld19oZWlnaHQgPD4gb2xkX2hlaWdodCB0aGVuIHguaGVpZ2h0IDwtIG5ld19oZWlnaHRcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGFyZSBiYWxhbmNlZFxuICAgQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHBvc3Q6IG91dHB1dCBpcyBiYWxhbmNlZCAoaW4gcGFydGljdWxhciwgaGVpZ2h0IGlzIGNvcnJlY3QpICopXG5sZXQgYmFsYW5jZSB0cmVlID1cbiAgbWF0Y2ggdHJlZSB3aXRoXG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gdHJlZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHJvb3Rfbm9kZSkgLT5cbiAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdFxuICAgIGFuZCBociA9IGhlaWdodCByaWdodCBpblxuICAgICgqICsgMiBpcyBjcml0aWNhbGx5IGltcG9ydGFudCwgbG93ZXJpbmcgaXQgdG8gMSB3aWxsIGJyZWFrIHRoZSBMZWFmXG4gICAgICAgYXNzdW1wdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3csIGFuZCB3aWxsIGZvcmNlIHVzIHRvIHByb21vdGUgbGVhZiBub2RlcyBpblxuICAgICAgIHRoZSBiYWxhbmNlIHJvdXRpbmUuIEl0J3MgYWxzbyBmYXN0ZXIsIHNpbmNlIGl0IHdpbGwgYmFsYW5jZSBsZXNzIG9mdGVuLlxuICAgICAgIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgZGVsaWNhdGUuICBUaGUgdXBkYXRlX2hlaWdodCBjYWxscyBtdXN0XG4gICAgICAgb2NjdXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNpbmNlIHVwZGF0ZV9oZWlnaHQgYXNzdW1lcyBpdHMgY2hpbGRyZW4gaGF2ZVxuICAgICAgIHRoZSBjb3JyZWN0IGhlaWdodHMuICAqKVxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICgqIEl0IGNhbm5vdCBiZSBhIGxlYWYsIGJlY2F1c2UgZXZlbiBpZiByaWdodCBpcyBlbXB0eSwgYSBsZWFmXG4gICAgICAgICBpcyBvbmx5IGhlaWdodCAxICopXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IGxlZnRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIGxlZnRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxlZnRfbm9kZV9sZWZ0ID49IGhlaWdodCBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgbGVmdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogaWYgcmlnaHQgaXMgYSBsZWFmLCB0aGVuIGxlZnQgbXVzdCBiZSBlbXB0eS4gVGhhdCBtZWFuc1xuICAgICAgICAgICAgIGhlaWdodCBpcyAyLiBFdmVuIGlmIGhyIGlzIGVtcHR5IHdlIHN0aWxsIGNhbid0IGdldCBoZXJlLiAqKVxuICAgICAgICAgIG1hdGNoIGxlZnRfbm9kZV9yaWdodCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IGxyX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBscl9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBscl9ub2RlKSAtPlxuICAgICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIGxyX2xlZnQ7XG4gICAgICAgICAgICByb290X25vZGUubGVmdCA8LSBscl9yaWdodDtcbiAgICAgICAgICAgIGxyX25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICAgIGxyX25vZGUubGVmdCA8LSBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgICBsZWZ0X25vZGVfcmlnaHQpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHJpZ2h0IGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IHJpZ2h0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyByaWdodF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcmlnaHRfbm9kZV9yaWdodCA+PSBoZWlnaHQgcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgcmlnaHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgICAgIG1hdGNoIHJpZ2h0X25vZGVfbGVmdCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IHJsX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBybF9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBybF9ub2RlKSAtPlxuICAgICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHJsX3JpZ2h0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJsX2xlZnQ7XG4gICAgICAgICAgICBybF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICAgIHJsX25vZGUucmlnaHQgPC0gcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgICByaWdodF9ub2RlX2xlZnQpKVxuICAgIGVsc2UgKFxuICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgdHJlZSlcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfbGVmdCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIGxlZnQgdHJlZSB0aGVuICgpIGVsc2Ugci5sZWZ0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChsZWZ0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X3JpZ2h0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgcmlnaHQgdHJlZSB0aGVuICgpIGVsc2Ugci5yaWdodCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0IGlzIGJhbGFuY2VkLlxuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlZCwgd2l0aCBuZXcgbm9kZSBpbnNlcnRlZFxuICAgQHBvc3Q6ICFhZGRlZCA9IHRydWUgaWZmIHRoZSBzaGFwZSBvZiB0aGUgaW5wdXQgdHJlZSBjaGFuZ2VkLiAgKilcbmxldCBhZGQgPVxuICBsZXQgcmVjIGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IExlYWYgKHsga2V5ID0gayc7IHZhbHVlID0gXyB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaycgayBpblxuICAgICAgKCogVGhpcyBjb21wYXJlIGlzIHJldmVyc2VkIG9uIHB1cnBvc2UsIHdlIGFyZSBwcmV0ZW5kaW5nXG4gICAgICAgICB0aGF0IHRoZSBsZWFmIHdhcyBqdXN0IGluc2VydGVkIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheVxuICAgICAgICAgcm91bmQsIHRoYXQgd2F5IHdlIG9ubHkgYWxsb2NhdGUgb25lIG5vZGUuICopXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2O1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICAgIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gTm9kZSB7IGxlZnQgPSB0OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gRW1wdHkgfVxuICAgICAgICBlbHNlIE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSB0IH0pXG4gICAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBzZXRfbGVmdCB0IChhZGQgbGVmdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KVxuICAgICAgZWxzZSBzZXRfcmlnaHQgdCAoYWRkIHJpZ2h0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpO1xuICAgICAgdFxuICBpblxuICBmdW4gdCB+cmVwbGFjZSB+Y29tcGFyZSB+YWRkZWQgfmtleSB+ZGF0YSAtPlxuICAgIGxldCB0ID0gYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGtleSBkYXRhIGluXG4gICAgaWYgIWFkZGVkIHRoZW4gYmFsYW5jZSB0IGVsc2UgdFxuOztcblxubGV0IHJlYyBmaXJzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IGw7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gZmlyc3QgbFxuOztcblxubGV0IHJlYyBsYXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHIgfSAtPiBsYXN0IHJcbjs7XG5cblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWMgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX25vdF9mb3VuZFxuICA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2UgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2VcbiAgICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgKGlmIGMgPCAwIHRoZW4gbGVmdCBlbHNlIHJpZ2h0KVxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICBrXG4gICAgICAgIGFyZzFcbiAgICAgICAgYXJnMlxuICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIGRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIGRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIGRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gPVxuICBsZXQgaWZfZm91bmQgXyA9IHRydWUgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gZmFsc2UgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IHJlbW92ZSA9XG4gIGxldCByZWMgbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIF8gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBtaW5fZWx0IGxlZnRcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTGVhZiBfIC0+IEVtcHR5ICgqIFRoaXMgbXVzdCBiZSB0aGUgcm9vdCAqKVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+IHJpZ2h0XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT5cbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSBFbXB0eTtcbiAgICAgIHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgKHJlbW92ZV9taW5fZWx0IGxlZnQpO1xuICAgICAgdHJlZVxuICBpblxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgdHJlZSA9IG1pbl9lbHQgdDIgaW5cbiAgICAgIChtYXRjaCB0cmVlIHdpdGhcbiAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgICAgICBsZXQgdDIgPSBiYWxhbmNlIChyZW1vdmVfbWluX2VsdCB0MikgaW5cbiAgICAgICAgIE5vZGVcbiAgICAgICAgICAgeyBsZWZ0ID0gdDFcbiAgICAgICAgICAgOyBrZXkgPSBrXG4gICAgICAgICAgIDsgdmFsdWUgPSB2XG4gICAgICAgICAgIDsgaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IHQxKSAoaGVpZ2h0IHQyKSArIDFcbiAgICAgICAgICAgOyByaWdodCA9IHQyXG4gICAgICAgICAgIH1cbiAgICAgICB8IE5vZGUgXyBhcyBub2RlIC0+XG4gICAgICAgICBzZXRfcmlnaHQgbm9kZSAocmVtb3ZlX21pbl9lbHQgdDIpO1xuICAgICAgICAgc2V0X2xlZnQgbm9kZSB0MTtcbiAgICAgICAgIG5vZGUpXG4gIGluXG4gIGxldCByZWMgcmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGsgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICBFbXB0eVxuICAgIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgRW1wdHkpXG4gICAgICBlbHNlIChcbiAgICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgICAgdClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIG1lcmdlIGxlZnQgcmlnaHQpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc2V0X2xlZnQgdCAocmVtb3ZlIGxlZnQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHNldF9yaWdodCB0IChyZW1vdmUgcmlnaHQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICBpblxuICBmdW4gdCB+cmVtb3ZlZCB+Y29tcGFyZSBrIC0+IGJhbGFuY2UgKHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrKVxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBpbml0XG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhIGluaXRcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBFbXB0eVxuICAgICAgfSAtPiBmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gRW1wdHlcbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9IH1cbiAgICAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH07IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9XG4gICAgLT4gZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSkgfmZcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgaXRlciBsZWZ0IH5mO1xuICAgIGYgfmtleSB+ZGF0YTtcbiAgICBpdGVyIHJpZ2h0IH5mXG47O1xuXG5sZXQgcmVjIG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmICh7IGtleTsgdmFsdWUgfSBhcyB0KSAtPiB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5OyB2YWx1ZTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyB0KSAtPlxuICAgIG1hcGlfaW5wbGFjZSB+ZiBsZWZ0O1xuICAgIHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlO1xuICAgIG1hcGlfaW5wbGFjZSB+ZiByaWdodFxuOztcblxubGV0IGNob29zZV9leG4gPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltBdmx0cmVlLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSlcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZTsgXyB9IHwgTm9kZSB7IGtleTsgdmFsdWU7IF8gfSAtPiBrZXksIHZhbHVlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2h0YmxfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXkuU1xuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGhhc2hfcGFyYW0gPSBIYXNoYWJsZS5oYXNoX3BhcmFtXG5sZXQgaGFzaCA9IEhhc2hhYmxlLmhhc2hcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG50eXBlICgnaywgJ3YpIHQgPVxuICB7IG11dGFibGUgdGFibGUgOiAoJ2ssICd2KSBBdmx0cmVlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAoKiBbcmVjZW50bHlfYWRkZWRdIGlzIHRoZSByZWZlcmVuY2UgcGFzc2VkIHRvIFtBdmx0cmVlLmFkZF0uIFdlIHB1dCBpdCBpbiB0aGUgaGFzaFxuICAgICB0YWJsZSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IGF0IGV2ZXJ5IFtzZXRdLiAqKVxuICA7IHJlY2VudGx5X2FkZGVkIDogYm9vbCByZWZcbiAgOyBncm93dGhfYWxsb3dlZCA6IGJvb2xcbiAgOyBoYXNoYWJsZSA6ICdrIEhhc2hhYmxlLnRcbiAgOyBtdXRhYmxlIG11dGF0aW9uX2FsbG93ZWQgOiBib29sICgqIFNldCBkdXJpbmcgYWxsIGl0ZXJhdGlvbiBvcGVyYXRpb25zICopXG4gIH1cblxudHlwZSAnYSBrZXkgPSAnYVxuXG5sZXQgc2V4cF9vZl9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90XG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuY29tcGFyZVxuXG5sZXQgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdCA9XG4gIGlmIG5vdCB0Lm11dGF0aW9uX2FsbG93ZWQgdGhlbiBmYWlsd2l0aCBcIkhhc2h0Ymw6IG11dGF0aW9uIG5vdCBhbGxvd2VkIGR1cmluZyBpdGVyYXRpb25cIlxuOztcblxubGV0IHdpdGhvdXRfbXV0YXRpbmcgdCBmID1cbiAgaWYgdC5tdXRhdGlvbl9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICByYWlzZSBleG4pXG4gIGVsc2UgZiAoKVxuOztcblxuKCoqIEludGVybmFsbHkgdXNlIGEgbWF4aW11bSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiAyLiBSZXZlcnNlcyB0aGUgYWJvdmUgdG8gZmluZCB0aGVcbiAgICBmbG9vciBwb3dlciBvZiAyIGJlbG93IHRoZSBzeXN0ZW0gbWF4IGFycmF5IGxlbmd0aCAqKVxubGV0IG1heF90YWJsZV9sZW5ndGggPSBJbnQuZmxvb3JfcG93MiBBcnJheS5tYXhfbGVuZ3RoXG5cbigqIFRoZSBkZWZhdWx0IHNpemUgaXMgY2hvc2VuIHRvIGJlIDAgKGFzIG9wcG9zZWQgdG8gMTI4IGFzIGl0IHdhcyBiZWZvcmUpIGJlY2F1c2U6XG4gICAtIDEyOCBjYW4gY3JlYXRlIHN1YnN0YW50aWFsIG1lbW9yeSBvdmVyaGVhZCAoeDEwKSB3aGVuIGNyZWF0aW5nIG1hbnkgdGFibGVzLCBtb3N0XG4gICAgIG9mIHdoaWNoIGFyZSBub3QgYmlnIChzYXksIGlmIHlvdSBoYXZlIGEgaGFzaHRibCBvZiBoYXNodGJsKS4gQW5kIG1lbW9yeSBvdmVyaGVhZCBpc1xuICAgICBub3QgdGhhdCBlYXN5IHRvIHByb2ZpbGUuXG4gICAtIGlmIGEgaGFzaHRibCBpcyBnb2luZyB0byBncm93LCBpdCdzIG5vdCBjbGVhciB3aHkgMTI4IGlzIG1hcmtlZGx5IGJldHRlciB0aGFuIG90aGVyXG4gICAgIHNpemVzIChpZiB5b3UgZ29pbmcgdG8gc3RpY2sgMTAwMCBlbGVtZW50cywgeW91J3JlIGdvaW5nIHRvIGdyb3cgdGhlIGhhc2h0YWJsZSBvbmNlXG4gICAgIG9yIHR3aWNlIGFueXdheSlcbiAgIC0gaW4gb3RoZXIgbGFuZ3VhZ2VzIChsaWtlIHJ1c3QsIHB5dGhvbiwgYW5kIGFwcGFyZW50bHkgZ28pLCB0aGUgZGVmYXVsdCBpcyBhbHNvIGFcbiAgICAgc21hbGwgc2l6ZS4gKilcbmxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDApIH5oYXNoYWJsZSAoKSA9XG4gIGxldCBzaXplID0gSW50Lm1pbiAoSW50Lm1heCAxIHNpemUpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgbGV0IHNpemUgPSBJbnQuY2VpbF9wb3cyIHNpemUgaW5cbiAgeyB0YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOnNpemUgQXZsdHJlZS5lbXB0eVxuICA7IGxlbmd0aCA9IDBcbiAgOyBncm93dGhfYWxsb3dlZFxuICA7IHJlY2VudGx5X2FkZGVkID0gcmVmIGZhbHNlXG4gIDsgaGFzaGFibGVcbiAgOyBtdXRhdGlvbl9hbGxvd2VkID0gdHJ1ZVxuICB9XG47O1xuXG4oKiogU3VwcGxlbWVudGFsIGhhc2guIFRoaXMgbWF5IG5vdCBiZSBuZWNlc3NhcnksIGl0IGlzIGludGVuZGVkIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvb3JcbiAgICBoYXNoIGZ1bmN0aW9ucywgZm9yIHdoaWNoIHRoZSBwb3dlciBvZiAyIHNpemVkIHRhYmxlIHdpbGwgYmUgZXNwZWNpYWxseSBzZW5zaXRpdmUuXG4gICAgV2l0aCBzb21lIHRlc3Rpbmcgd2UgbWF5IGNob29zZSB0byBhZGQgaXQsIGJ1dCB0aGlzIHRhYmxlIGlzIGRlc2lnbmVkIHRvIGJlIHJvYnVzdCB0b1xuICAgIGNvbGxpc2lvbnMsIGFuZCBpbiBtb3N0IG9mIG15IHRlc3RpbmcgdGhpcyBkZWdyYWRlcyBwZXJmb3JtYW5jZS4gKilcbmxldCBfc3VwcGxlbWVudGFsX2hhc2ggaCA9XG4gIGxldCBoID0gaCBseG9yICgoaCBsc3IgMjApIGx4b3IgKGggbHNyIDEyKSkgaW5cbiAgaCBseG9yIChoIGxzciA3KSBseG9yIChoIGxzciA0KVxuOztcblxubGV0IHNsb3QgdCBrZXkgPVxuICBsZXQgaGFzaCA9IHQuaGFzaGFibGUuSGFzaGFibGUuaGFzaCBrZXkgaW5cbiAgKCogdGhpcyBpcyBhbHdheXMgbm9uLW5lZ2F0aXZlIGJlY2F1c2Ugd2UgZG8gW2xhbmRdIHdpdGggbm9uLW5lZ2F0aXZlIG51bWJlciAqKVxuICBoYXNoIGxhbmQgKEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSlcbjs7XG5cbmxldCBhZGRfd29ya2VyIHQgfnJlcGxhY2UgfmtleSB+ZGF0YSA9XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZCA9IHQucmVjZW50bHlfYWRkZWQgaW5cbiAgYWRkZWQgOj0gZmFsc2U7XG4gIGxldCBuZXdfcm9vdCA9XG4gICAgKCogVGhlIGF2bCB0cmVlIG1pZ2h0IHJlcGxhY2UgdGhlIHZhbHVlIFtyZXBsYWNlPXRydWVdIG9yIGRvIG5vdGhpbmcgW3JlcGxhY2U9ZmFsc2VdXG4gICAgICAgdG8gdGhlIGVudHJ5LCBpbiB0aGF0IGNhc2UgdGhlIHRhYmxlIGRpZCBub3QgZ2V0IGJpZ2dlciwgc28gd2Ugc2hvdWxkIG5vdFxuICAgICAgIGluY3JlbWVudCBsZW5ndGgsIHdlIHBhc3MgaW4gdGhlIGJvb2wgcmVmIHQuYWRkZWQgc28gdGhhdCBpdCBjYW4gdGVsbCB1cyB3aGV0aGVyXG4gICAgICAgaXQgYWRkZWQgb3IgcmVwbGFjZWQuIFdlIGRvIGl0IHRoaXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRpb24uIFNpbmNlIHRoZSBib29sXG4gICAgICAgaXMgYW4gaW1tZWRpYXRlIGl0IGRvZXMgbm90IGdvIHRocm91Z2ggdGhlIHdyaXRlIGJhcnJpZXIuICopXG4gICAgQXZsdHJlZS5hZGQgfnJlcGxhY2Ugcm9vdCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkgfmFkZGVkIH5rZXkgfmRhdGFcbiAgaW5cbiAgaWYgIWFkZGVkIHRoZW4gdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICAoKiBUaGlzIGxpdHRsZSBvcHRpbWl6YXRpb24gc2F2ZXMgYSBjYW1sX21vZGlmeSB3aGVuIHRoZSB0cmVlXG4gICAgIGhhc24ndCBiZWVuIHJlYmFsYW5jZWQuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXdfcm9vdCByb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290XG47O1xuXG5sZXQgbWF5YmVfcmVzaXplX3RhYmxlIHQgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgbGV0IHNob3VsZF9ncm93ID0gdC5sZW5ndGggPiBsZW4gaW5cbiAgaWYgc2hvdWxkX2dyb3cgJiYgdC5ncm93dGhfYWxsb3dlZFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FycmF5X2xlbmd0aCA9IEludC5taW4gKGxlbiAqIDIpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgICBpZiBuZXdfYXJyYXlfbGVuZ3RoID4gbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X3RhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46bmV3X2FycmF5X2xlbmd0aCBBdmx0cmVlLmVtcHR5IGluXG4gICAgICBsZXQgb2xkX3RhYmxlID0gdC50YWJsZSBpblxuICAgICAgdC50YWJsZSA8LSBuZXdfdGFibGU7XG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IGYgfmtleSB+ZGF0YSA9IGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2xkX3RhYmxlIC0gMSBkb1xuICAgICAgICBBdmx0cmVlLml0ZXIgb2xkX3RhYmxlLihpKSB+ZlxuICAgICAgZG9uZSkpXG47O1xuXG5sZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGE7XG4gIG1heWJlX3Jlc2l6ZV90YWJsZSB0XG47O1xuXG5sZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGFkZF93b3JrZXIgfnJlcGxhY2U6ZmFsc2UgdCB+a2V5IH5kYXRhO1xuICBpZiAhKHQucmVjZW50bHlfYWRkZWQpXG4gIHRoZW4gKFxuICAgIG1heWJlX3Jlc2l6ZV90YWJsZSB0O1xuICAgIGBPaylcbiAgZWxzZSBgRHVwbGljYXRlXG47O1xuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgfCBgT2sgLT4gKClcbiAgfCBgRHVwbGljYXRlIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXkgdCBpblxuICAgIGxldCBlcnJvciA9IEVycm9yLmNyZWF0ZSBcIkhhc2h0YmwuYWRkX2V4biBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIGtleSBzZXhwX29mX2tleSBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICB0LnRhYmxlLihpKSA8LSBBdmx0cmVlLmVtcHR5XG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwyIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDJcbiAgICAgIHRyZWVcbiAgICAgIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICAgICAga2V5XG4gICAgICB+YVxuICAgICAgfmJcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IGtleSAtPiBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gZmFsc2VcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IF8gfSAtPiBjb21wYXJlX2tleSB0IGsga2V5ID0gMFxuICB8IHRyZWUgLT4gQXZsdHJlZS5tZW0gdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkX29yX3JlbW92ZWQgPSB0LnJlY2VudGx5X2FkZGVkIGluXG4gIGFkZGVkX29yX3JlbW92ZWQgOj0gZmFsc2U7XG4gIGxldCBuZXdfcm9vdCA9XG4gICAgQXZsdHJlZS5yZW1vdmUgcm9vdCB+cmVtb3ZlZDphZGRlZF9vcl9yZW1vdmVkIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbiAgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIHJvb3QgbmV3X3Jvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Q7XG4gIGlmICFhZGRlZF9vcl9yZW1vdmVkIHRoZW4gdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICAgIGxldCBtID0gdC5tdXRhdGlvbl9hbGxvd2VkIGluXG4gICAgbWF0Y2hcbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHQudGFibGUgaSB3aXRoXG4gICAgICAgIHwgQXZsdHJlZS5FbXB0eSAtPiAoKVxuICAgICAgICB8IEF2bHRyZWUuTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gYWNjIDo9IGYgfmtleSB+ZGF0YSAhYWNjXG4gICAgICAgIHwgYnVja2V0IC0+IGFjYyA6PSBBdmx0cmVlLmZvbGQgYnVja2V0IH5pbml0OiFhY2MgfmZcbiAgICAgIGRvbmVcbiAgICB3aXRoXG4gICAgfCAoKSAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICAhYWNjXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBtID0gdC5tdXRhdGlvbl9hbGxvd2VkIGluXG4gICAgbWF0Y2hcbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHQudGFibGUgaSB3aXRoXG4gICAgICAgIHwgQXZsdHJlZS5FbXB0eSAtPiAoKVxuICAgICAgICB8IEF2bHRyZWUuTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gICAgICAgIHwgYnVja2V0IC0+IEF2bHRyZWUuaXRlciBidWNrZXQgfmZcbiAgICAgIGRvbmVcbiAgICB3aXRoXG4gICAgfCAoKSAtPiB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgaXRlcl9rZXlzIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgcmVjIGNob29zZV9ub25lbXB0eSB0YWJsZSBpID1cbiAgbGV0IGF2bHRyZWUgPSB0YWJsZS4oaSkgaW5cbiAgaWYgQXZsdHJlZS5pc19lbXB0eSBhdmx0cmVlXG4gIHRoZW4gY2hvb3NlX25vbmVtcHR5IHRhYmxlIChpICsgMSlcbiAgZWxzZSBBdmx0cmVlLmNob29zZV9leG4gYXZsdHJlZVxuOztcblxubGV0IGNob29zZV9leG4gdCA9XG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltIYXNodGJsLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSk7XG4gIGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDBcbjs7XG5cbmxldCBjaG9vc2UgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IGludmFyaWFudF9kYXRhIHQgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgQXZsdHJlZS5pbnZhcmlhbnQgdC50YWJsZS4oaSkgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gIGRvbmU7XG4gIGxldCByZWFsX2xlbiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGkgLT5cbiAgICAgIGludmFyaWFudF9rZXkga2V5O1xuICAgICAgaW52YXJpYW50X2RhdGEgZGF0YTtcbiAgICAgIGkgKyAxKVxuICBpblxuICBhc3NlcnQgKHJlYWxfbGVuID0gdC5sZW5ndGgpXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgaWZfZm91bmQgdiBfID0gdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIGsgdCA9XG4gICAgcmFpc2VcbiAgICAgIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJIYXNodGJsLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgdC5oYXNoYWJsZS5zZXhwX29mX3QgayBdKSlcbiAgaW5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID0gZmluZF9hbmRfY2FsbDEgdCBrZXkgfmE6dCB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGZvcl9hbGxpIHQgfmYgPSBub3QgKGV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gbm90IChmIH5rZXkgfmRhdGEpKSlcbmxldCBmb3JfYWxsIHQgfmYgPSBub3QgKGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBub3QgKGYgZGF0YSkpKVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOihmIH5rZXkgfmRhdGEpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgY29weSB0ID0gbWFwIHQgfmY6Rm4uaWRcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBTb21lIG5ld19kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpXG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQwID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgbGV0IHQxID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBtYXRjaCAoZiB+a2V5IH5kYXRhIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgbmV3X2RhdGEgLT4gc2V0IHQwIH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IFNlY29uZCBuZXdfZGF0YSAtPiBzZXQgdDEgfmtleSB+ZGF0YTpuZXdfZGF0YSk7XG4gIHQwLCB0MVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbmRfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsMlxuICAgIHRcbiAgICBpZFxuICAgIH5hOnRcbiAgICB+YjpkZWZhdWx0XG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSBfIF8gLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IHQgZGVmYXVsdCAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0ICgpIGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KVxuOztcblxubGV0IGZpbmRpX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbDJcbiAgICB0XG4gICAgaWRcbiAgICB+YTp0XG4gICAgfmI6ZGVmYXVsdFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgXyBfIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSB0IGRlZmF1bHQgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCBrZXkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpXG47O1xuXG4oKiBTb21lIGhhc2h0YmwgaW1wbGVtZW50YXRpb25zIG1heSBiZSBhYmxlIHRvIHBlcmZvcm0gdGhpcyBtb3JlIGVmZmljaWVudGx5IHRoYW4gdHdvXG4gICBzZXBhcmF0ZSBsb29rdXBzICopXG5sZXQgZmluZF9hbmRfcmVtb3ZlIHQgaWQgPVxuICBsZXQgcmVzdWx0ID0gZmluZCB0IGlkIGluXG4gIGlmIE9wdGlvbi5pc19zb21lIHJlc3VsdCB0aGVuIHJlbW92ZSB0IGlkO1xuICByZXN1bHRcbjs7XG5cblxubGV0IGNoYW5nZSB0IGlkIH5mID1cbiAgbWF0Y2ggZiAoZmluZCB0IGlkKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgdCBpZFxuICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5OmlkIH5kYXRhXG47O1xuXG5sZXQgdXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA9XG4gIGxldCBkYXRhID0gZiAoZmluZCB0IGlkKSBpblxuICBzZXQgdCB+a2V5OmlkIH5kYXRhO1xuICBkYXRhXG47O1xuXG5sZXQgdXBkYXRlIHQgaWQgfmYgPSBpZ25vcmUgKHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgOiBfKVxuXG5sZXQgaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnkgPVxuICBpZiByZW1vdmVfaWZfemVyb1xuICB0aGVuXG4gICAgY2hhbmdlIHQga2V5IH5mOihmdW4gb3B0IC0+XG4gICAgICBtYXRjaCBieSArIE9wdGlvbi52YWx1ZSBvcHQgfmRlZmF1bHQ6MCB3aXRoXG4gICAgICB8IDAgLT4gTm9uZVxuICAgICAgfCBuIC0+IFNvbWUgbilcbiAgZWxzZVxuICAgIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBieVxuICAgICAgfCBTb21lIGkgLT4gYnkgKyBpKVxuOztcblxubGV0IGluY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieVxubGV0IGRlY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSAoLWJ5KVxuXG5sZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gWyBkYXRhIF1cbiAgICB8IFNvbWUgbCAtPiBkYXRhIDo6IGwpXG47O1xuXG5sZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgW10gfCBTb21lIFsgXyBdIC0+IHJlbW92ZSB0IGtleVxuICB8IFNvbWUgKF8gOjogdGwpIC0+IHNldCB0IH5rZXkgfmRhdGE6dGxcbjs7XG5cbmxldCBmaW5kX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgbCAtPiBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgfnNpemUgKCkgaW5cbiAgbGV0IGR1cGVzID0gcmVmIFtdIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBpZiBtZW0gcmVzIGtleSB0aGVuIGR1cGVzIDo9IGtleSA6OiAhZHVwZXMgZWxzZSBzZXQgcmVzIH5rZXkgfmRhdGEpO1xuICBtYXRjaCAhZHVwZXMgd2l0aFxuICB8IFtdIC0+IGBPayByZXNcbiAgfCBrZXlzIC0+IGBEdXBsaWNhdGVfa2V5cyAoTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpoYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlIGtleXMpXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGFkZF9tdWx0aSByZXMgfmtleSB+ZGF0YSk7XG4gIHJlc1xuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdCB3aXRoXG4gIHwgYE9rIHQgLT4gYE9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMgayAtPiBgRHVwbGljYXRlX2tleSAoTGlzdC5oZF9leG4gaylcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgYE9rIHYgLT4gUmVzdWx0Lk9rIHZcbiAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvciBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IHNleHBfb2Zfa2V5XG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IFJlc3VsdC5PayB2IC0+IHZcbiAgfCBSZXN1bHQuRXJyb3IgZSAtPiBFcnJvci5yYWlzZSBlXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgdG9fYWxpc3QgdCA9IGZvbGQgfmY6KGZ1biB+a2V5IH5kYXRhIGxpc3QgLT4gKGtleSwgZGF0YSkgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgdFxuICB8PiB0b19hbGlzdFxuICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoazEsIF8pIChrMiwgXykgLT4gdC5oYXNoYWJsZS5jb21wYXJlIGsxIGsyKVxuICB8PiBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEpXG47O1xuXG5sZXQgdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPVxuICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwKSBzZXhwIGluXG4gIG1hdGNoIG9mX2FsaXN0IH5oYXNoYWJsZSBhbGlzdCB+c2l6ZTooTGlzdC5sZW5ndGggYWxpc3QpIHdpdGhcbiAgfCBgT2sgdiAtPiB2XG4gIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgTGlzdC5pdGVyMl9leG4gYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgaWYgaGFzaGFibGUuY29tcGFyZSBrIGsyID0gMFxuICAgICAgdGhlblxuICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJIYXNodGJsLnRfb2Zfc2V4cDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgIGFzc2VydCBmYWxzZVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrIHYpXG4gICAgICAoa19ncmFtbWFyIDogayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgICh2X2dyYW1tYXIgOiB2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IChrLCB2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuOztcblxubGV0IGtleXMgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGE6XyBhY2MgLT4ga2V5IDo6IGFjYylcbmxldCBkYXRhIHQgPSBmb2xkIH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBhZGRfdG9fZ3JvdXBzIGdyb3VwcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3MgPVxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHJvdyAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHJvdyBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgcm93IGluXG4gICAgbGV0IGRhdGEgPVxuICAgICAgbWF0Y2ggZmluZCBncm91cHMga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICB8IFNvbWUgb2xkIC0+IGNvbWJpbmUgb2xkIGRhdGFcbiAgICBpblxuICAgIHNldCBncm91cHMgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSByb3dzID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpIGluXG4gIGFkZF90b19ncm91cHMgcmVzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cztcbiAgcmVzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGE6Rm4uaWQgcm93c1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBtYXRjaCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzIHdpdGhcbiAgfCBgT2sgdCAtPiBSZXN1bHQuT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrZXlzIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJIYXNodGJsLmNyZWF0ZV93aXRoX2tleTogZHVwbGljYXRlIGtleXNcIlxuICAgICAgICAgWyBcImtleXNcIiwgc2V4cF9vZl9saXN0IHNleHBfb2Zfa2V5IGtleXMgXSlcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIE9yX2Vycm9yLm9rX2V4biAoY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cylcbjs7XG5cbmxldCBtZXJnZSA9XG4gIGxldCBtYXliZV9zZXQgdCB+a2V5IH5mIGQgPVxuICAgIG1hdGNoIGYgfmtleSBkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBzZXQgdCB+a2V5IH5kYXRhOnZcbiAgaW5cbiAgZnVuIHRfbGVmdCB0X3JpZ2h0IH5mIC0+XG4gICAgaWYgbm90IChIYXNoYWJsZS5lcXVhbCB0X2xlZnQuaGFzaGFibGUgdF9yaWdodC5oYXNoYWJsZSlcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiSGFzaHRibC5tZXJnZTogZGlmZmVyZW50ICdoYXNoYWJsZScgdmFsdWVzXCI7XG4gICAgbGV0IG5ld190ID1cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+Z3Jvd3RoX2FsbG93ZWQ6dF9sZWZ0Lmdyb3d0aF9hbGxvd2VkXG4gICAgICAgIH5oYXNoYWJsZTp0X2xlZnQuaGFzaGFibGVcbiAgICAgICAgfnNpemU6dF9sZWZ0Lmxlbmd0aFxuICAgICAgICAoKVxuICAgIGluXG4gICAgd2l0aG91dF9tdXRhdGluZyB0X2xlZnQgKGZ1biAoKSAtPlxuICAgICAgd2l0aG91dF9tdXRhdGluZyB0X3JpZ2h0IChmdW4gKCkgLT5cbiAgICAgICAgaXRlcmkgdF9sZWZ0IH5mOihmdW4gfmtleSB+ZGF0YTpsZWZ0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X3JpZ2h0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgTGVmdCBsZWZ0KVxuICAgICAgICAgIHwgU29tZSByaWdodCAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYEJvdGggKGxlZnQsIHJpZ2h0KSkpO1xuICAgICAgICBpdGVyaSB0X3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpyaWdodCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9sZWZ0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgUmlnaHQgcmlnaHQpXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgICAoKiBhbHJlYWR5IGRvbmUgYWJvdmUgKikpKSk7XG4gICAgbmV3X3Rcbjs7XG5cbmxldCBtZXJnZV9pbnRvIH5zcmMgfmRzdCB+ZiA9XG4gIGl0ZXJpIHNyYyB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgZHN0X2RhdGEgPSBmaW5kIGRzdCBrZXkgaW5cbiAgICBsZXQgYWN0aW9uID0gd2l0aG91dF9tdXRhdGluZyBkc3QgKGZ1biAoKSAtPiBmIH5rZXkgZGF0YSBkc3RfZGF0YSkgaW5cbiAgICBtYXRjaCAoYWN0aW9uIDogXyBNZXJnZV9pbnRvX2FjdGlvbi50KSB3aXRoXG4gICAgfCBSZW1vdmUgLT4gcmVtb3ZlIGRzdCBrZXlcbiAgICB8IFNldF90byBkYXRhIC0+XG4gICAgICAobWF0Y2ggZHN0X2RhdGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBzZXQgZHN0IH5rZXkgfmRhdGFcbiAgICAgICB8IFNvbWUgZHN0X2RhdGEgLT4gaWYgbm90IChwaHlzX2VxdWFsIGRzdF9kYXRhIGRhdGEpIHRoZW4gc2V0IGRzdCB+a2V5IH5kYXRhKSlcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWMgZWxzZSBrZXkgOjogYWMpXG4gIGluXG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBrZXkgLT4gcmVtb3ZlIHQga2V5KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZmlsdGVyX2tleXNfaW5wbGFjZSB0IH5mID0gZmlsdGVyaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpXG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgbWFwX3Jlc3VsdHMgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IChrZXksIGYgfmtleSB+ZGF0YSkgOjogYWMpIGluXG4gIExpc3QuaXRlciBtYXBfcmVzdWx0cyB+ZjooZnVuIChrZXksIHJlc3VsdCkgLT5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1vdmUgdCBrZXlcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhKVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID0gZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgd2l0aG91dF9tdXRhdGluZyB0IChmdW4gKCkgLT4gQXJyYXkuaXRlciB0LnRhYmxlIH5mOihBdmx0cmVlLm1hcGlfaW5wbGFjZSB+ZikpXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IG1hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGVxdWFsIGVxdWFsIHQgdCcgPVxuICBsZW5ndGggdCA9IGxlbmd0aCB0J1xuICAmJiB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICB3aXRob3V0X211dGF0aW5nIHQnIChmdW4gKCkgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIG1hdGNoIGZpbmQgdCcga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHIucmV0dXJuIGZhbHNlXG4gICAgICAgIHwgU29tZSBkYXRhJyAtPiBpZiBub3QgKGVxdWFsIGRhdGEgZGF0YScpIHRoZW4gci5yZXR1cm4gZmFsc2UpKTtcbiAgICB0cnVlKVxuOztcblxubGV0IHNpbWlsYXIgPSBlcXVhbFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGNob29zZSA9IGNob29zZVxuICBsZXQgY2hvb3NlX2V4biA9IGNob29zZV9leG5cbiAgbGV0IGNsZWFyID0gY2xlYXJcbiAgbGV0IGNvcHkgPSBjb3B5XG4gIGxldCByZW1vdmUgPSByZW1vdmVcbiAgbGV0IHNldCA9IHNldFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBhZGRfZXhuID0gYWRkX2V4blxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG4gIGxldCB1cGRhdGUgPSB1cGRhdGVcbiAgbGV0IHVwZGF0ZV9hbmRfcmV0dXJuID0gdXBkYXRlX2FuZF9yZXR1cm5cbiAgbGV0IGFkZF9tdWx0aSA9IGFkZF9tdWx0aVxuICBsZXQgcmVtb3ZlX211bHRpID0gcmVtb3ZlX211bHRpXG4gIGxldCBmaW5kX211bHRpID0gZmluZF9tdWx0aVxuICBsZXQgbWVtID0gbWVtXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmaWx0ZXJfbWFwID0gZmlsdGVyX21hcFxuICBsZXQgZmlsdGVyX21hcGkgPSBmaWx0ZXJfbWFwaVxuICBsZXQgZmlsdGVyX2tleXMgPSBmaWx0ZXJfa2V5c1xuICBsZXQgZmlsdGVyID0gZmlsdGVyXG4gIGxldCBmaWx0ZXJpID0gZmlsdGVyaVxuICBsZXQgcGFydGl0aW9uX21hcCA9IHBhcnRpdGlvbl9tYXBcbiAgbGV0IHBhcnRpdGlvbl9tYXBpID0gcGFydGl0aW9uX21hcGlcbiAgbGV0IHBhcnRpdGlvbl90ZiA9IHBhcnRpdGlvbl90ZlxuICBsZXQgcGFydGl0aW9uaV90ZiA9IHBhcnRpdGlvbmlfdGZcbiAgbGV0IGZpbmRfb3JfYWRkID0gZmluZF9vcl9hZGRcbiAgbGV0IGZpbmRpX29yX2FkZCA9IGZpbmRpX29yX2FkZFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGZpbmRfZXhuID0gZmluZF9leG5cbiAgbGV0IGZpbmRfYW5kX2NhbGwgPSBmaW5kX2FuZF9jYWxsXG4gIGxldCBmaW5kX2FuZF9jYWxsMSA9IGZpbmRfYW5kX2NhbGwxXG4gIGxldCBmaW5kX2FuZF9jYWxsMiA9IGZpbmRfYW5kX2NhbGwyXG4gIGxldCBmaW5kaV9hbmRfY2FsbCA9IGZpbmRpX2FuZF9jYWxsXG4gIGxldCBmaW5kaV9hbmRfY2FsbDEgPSBmaW5kaV9hbmRfY2FsbDFcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMiA9IGZpbmRpX2FuZF9jYWxsMlxuICBsZXQgZmluZF9hbmRfcmVtb3ZlID0gZmluZF9hbmRfcmVtb3ZlXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCBtZXJnZSA9IG1lcmdlXG4gIGxldCBtZXJnZV9pbnRvID0gbWVyZ2VfaW50b1xuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCBmaWx0ZXJfa2V5c19pbnBsYWNlID0gZmlsdGVyX2tleXNfaW5wbGFjZVxuICBsZXQgZmlsdGVyX2lucGxhY2UgPSBmaWx0ZXJfaW5wbGFjZVxuICBsZXQgZmlsdGVyaV9pbnBsYWNlID0gZmlsdGVyaV9pbnBsYWNlXG4gIGxldCBtYXBfaW5wbGFjZSA9IG1hcF9pbnBsYWNlXG4gIGxldCBtYXBpX2lucGxhY2UgPSBtYXBpX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcGlfaW5wbGFjZSA9IGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgbGV0IGVxdWFsID0gZXF1YWxcbiAgbGV0IHNpbWlsYXIgPSBzaW1pbGFyXG4gIGxldCBpbmNyID0gaW5jclxuICBsZXQgZGVjciA9IGRlY3JcbiAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gS2V5Lmhhc2hhYmxlXG5cbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBIYXNoYWJsZS5wb2x5XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBIYXNoYWJsZSA9IEhhc2hhYmxlLkhhc2hhYmxlXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgbGV0IGhhc2hhYmxlIHQgPSB0Lmhhc2hhYmxlXG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIGNyZWF0ZSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKClcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Qgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X211bHRpIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gIGNyZWF0ZV9tYXBwZWQgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gIGdyb3VwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuOztcblxubGV0IGhhc2hhYmxlX3MgdCA9IEhhc2hhYmxlLnRvX2tleSB0Lmhhc2hhYmxlXG5cbm1vZHVsZSBNIChLIDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gaykgdl9vZl9zZXhwIHNleHAgPVxuICB0X29mX3NleHAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLKSkgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBrKSAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspIHZfZ3JhbW1hciA9XG4gIHRfc2V4cF9ncmFtbWFyIEsudF9zZXhwX2dyYW1tYXIgdl9ncmFtbWFyXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcblxubGV0IGhhc2hhYmxlX3MgPSBIYXNodGJsLmhhc2hhYmxlX3NcbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxubGV0IHBvbHlfaGFzaGFibGUgPSBIYXNodGJsLlBvbHkuaGFzaGFibGVcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbnR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgSGFzaHRibC50XG50eXBlICdhIGhhc2hfc2V0ID0gJ2EgdFxudHlwZSAnYSBlbHQgPSAnYVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcbiAgbGV0IGxlbmd0aCA9IEhhc2h0YmwubGVuZ3RoXG4gIGxldCBtZW0gPSBIYXNodGJsLm1lbVxuICBsZXQgaXNfZW1wdHkgdCA9IEhhc2h0YmwuaXNfZW1wdHkgdFxuXG4gIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIF8gYXMgbyAtPiByLnJldHVybiBvKTtcbiAgICAgIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmRfbWFwIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIFNvbWUgYSBlbHNlIE5vbmUpXG4gIGxldCBhZGQgdCBrID0gSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KClcblxuICBsZXQgc3RyaWN0X2FkZCB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImVsZW1lbnQgYWxyZWFkeSBleGlzdHNcIlxuICAgIGVsc2UgKFxuICAgICAgSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KCk7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9hZGRfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X2FkZCB0IGspXG4gIGxldCByZW1vdmUgPSBIYXNodGJsLnJlbW92ZVxuXG4gIGxldCBzdHJpY3RfcmVtb3ZlIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlIHQgaztcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yIFwiZWxlbWVudCBub3QgaW4gc2V0XCIgayAoSGFzaHRibC5zZXhwX29mX2tleSB0KVxuICA7O1xuXG4gIGxldCBzdHJpY3RfcmVtb3ZlX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9yZW1vdmUgdCBrKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gSGFzaHRibC5mb2xkIHQgfmluaXQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIGFjYyAtPiBmIGFjYyBrZXkpXG4gIGxldCBpdGVyIHQgfmYgPSBIYXNodGJsLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCB0b19saXN0ID0gSGFzaHRibC5rZXlzXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2UgdCA9XG4gICAgc2V4cF9vZl9saXN0IHNleHBfb2ZfZSAodG9fbGlzdCB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTooaGFzaGFibGUgdCkuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IGluZGV4ID0gcmVmIChsZW4gLSAxKSBpblxuICAgIGZvbGQgdCB+aW5pdDpbfHxdIH5mOihmdW4gYWNjIGtleSAtPlxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGFjYyA9IDBcbiAgICAgIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4ga2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgaW5kZXggOj0gIWluZGV4IC0gMTtcbiAgICAgICAgYWNjLighaW5kZXgpIDwtIGtleTtcbiAgICAgICAgYWNjKSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPSBIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBub3QgKEhhc2h0YmwuZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBub3QgKGYga2V5KSkpXG4gIGxldCBlcXVhbCB0MSB0MiA9IEhhc2h0YmwuZXF1YWwgKGZ1biAoKSAoKSAtPiB0cnVlKSB0MSB0MlxuICBsZXQgY29weSB0ID0gSGFzaHRibC5jb3B5IHRcbiAgbGV0IGZpbHRlciB0IH5mID0gSGFzaHRibC5maWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KVxuICBsZXQgdW5pb24gdDEgdDIgPSBIYXNodGJsLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIF8gLT4gU29tZSAoKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBmaWx0ZXIgdDEgfmY6KGZ1biBrZXkgLT4gbm90IChIYXNodGJsLm1lbSB0MiBrZXkpKVxuXG4gIGxldCBpbnRlciB0MSB0MiA9XG4gICAgbGV0IHNtYWxsZXIsIGxhcmdlciA9IGlmIGxlbmd0aCB0MSA+IGxlbmd0aCB0MiB0aGVuIHQyLCB0MSBlbHNlIHQxLCB0MiBpblxuICAgIEhhc2h0YmwuZmlsdGVyaSBzbWFsbGVyIH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBIYXNodGJsLm1lbSBsYXJnZXIga2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgICBsZXQgdG9fcmVtb3ZlID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgeCAtPiBpZiBmIHggdGhlbiBhYyBlbHNlIHggOjogYWMpIGluXG4gICAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIHggLT4gcmVtb3ZlIHQgeClcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgPSBIYXNodGJsLm1hcCBoYXNodGJsIH5mOmlnbm9yZVxuICBsZXQgdG9faGFzaHRibCB0IH5mID0gSGFzaHRibC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggbFxuICBpblxuICBsZXQgdCA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSBtIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4gayAtPiBhZGQgdCBrKTtcbiAgdFxuOztcblxubGV0IHRfb2Zfc2V4cCBtIGVfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgU2V4cC5BdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCByZXF1aXJlcyBhIGxpc3RcIiBzZXhwXG4gIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICBsZXQgdCA9IGNyZWF0ZSBtIH5zaXplOihMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIExpc3QuaXRlciBsaXN0IH5mOihmdW4gc2V4cCAtPlxuICAgICAgbGV0IGUgPSBlX29mX3NleHAgc2V4cCBpblxuICAgICAgbWF0Y2ggc3RyaWN0X2FkZCB0IGUgd2l0aFxuICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgfCBFcnJvciBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgZ290IGEgZHVwbGljYXRlIGVsZW1lbnRcIiBzZXhwKTtcbiAgICB0XG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IFNleHAudCAtPiAnYSBFbHQudCB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBFbHQudCB0XG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBlX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgZV9vZl9zZXhwIHNleHBcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBoYXNoX3NldFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gcG9seV9oYXNoYWJsZVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuZW5kXG5cbm1vZHVsZSBNIChFbHQgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBFbHQudCB0XG5lbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0KSBzZXhwID1cbiAgdF9vZl9zZXhwIChtb2R1bGUgRWx0KSBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBQcmludGZcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxuaW5jbHVkZSBGbG9hdDBcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9mbG9hdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfZmxvYXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGZsb2F0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Zsb2F0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGZsb2F0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCB0b19mbG9hdCB4ID0geFxubGV0IG9mX2Zsb2F0IHggPSB4XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIHRyeSBmbG9hdF9vZl9zdHJpbmcgcyB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5vZl9zdHJpbmcgJXNcIiBzICgpXG47O1xuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqIFN0b2xlbiBmcm9tIFtwZXJ2YXNpdmVzLm1sXS4gIEFkZHMgYSBcIi5cIiBhdCB0aGUgZW5kIGlmIG5lZWRlZC4gIEl0IGlzIGluXG4gICBbcGVydmFzaXZlcy5tbGldLCBidXQgaXQgYWxzbyBzYXlzIG5vdCB0byB1c2UgaXQgZGlyZWN0bHksIHNvIHdlIGNvcHkgYW5kIHBhc3RlIHRoZVxuICAgY29kZS4gSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gb24gdGhlIHN0cmluZyBwYXNzZWQgaW4gYXJndW1lbnQgdGhhdCBpdCB3YXMgcmV0dXJuZWQgYnlcbiAgIFtmb3JtYXRfZmxvYXRdLiAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgaSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbigqIExldCBbeV0gYmUgYSBwb3dlciBvZiAyLiAgVGhlbiB0aGUgbmV4dCByZXByZXNlbnRhYmxlIGZsb2F0IGlzOlxuICAgW3ogPSB5ICogKDEgKyAyICoqIC01MildXG4gICBhbmQgdGhlIHByZXZpb3VzIG9uZSBpc1xuICAgW3ggPSB5ICogKDEgLSAyICoqIC01MyldXG5cbiAgIEluIGdlbmVyYWwsIGV2ZXJ5IHR3byBhZGphY2VudCBmbG9hdHMgYXJlIHdpdGhpbiBhIGZhY3RvciBvZiBiZXR3ZWVuIFsxICsgMioqLTUzXVxuICAgYW5kIFsxICsgMioqLTUyXSBmcm9tIGVhY2ggb3RoZXIsIHRoYXQgaXMgd2l0aGluIFsxICsgMS4xZS0xNl0gYW5kIFsxICsgMi4zZS0xNl0uXG5cbiAgIFNvIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgZmxvYXQgc3RhcnRzIHdpdGggXCIxXCIsIHRoZW4gaXRzIGFkamFjZW50IGZsb2F0c1xuICAgd2lsbCB1c3VhbGx5IGRpZmZlciBmcm9tIGl0IGJ5IDEsIGFuZCBzb21ldGltZXMgYnkgMiwgYXQgdGhlIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRcbiAgIChjb3VudGluZyBmcm9tIDEpLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gc3RhcnRzIHdpdGggXCI5XCIsIHRoZW4gdGhlIGFkamFjZW50XG4gICBmbG9hdHMgd2lsbCBiZSBvZmYgYnkgbm8gbW9yZSB0aGFuIDIzIGF0IHRoZSAxNnRoIGFuZCAxN3RoIHNpZ25pZmljYW50IGRpZ2l0cy5cblxuICAgRS5nLjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAoMTAyNC4gKi4gKDEuIC0uIDIuKiogKC01My4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2N1xuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTlcIlxuICAgdn1cbiAgIFByaW50aW5nIGEgY291cGxlIG9mIGV4dHJhIGRpZ2l0cyByZXZlYWxzIHRoYXQgdGhlIGRpZmZlcmVuY2UgaW5kZWVkIGlzIHJvdWdobHkgMTEgYXRcbiAgIGRpZ2l0cyAxN3RoIGFuZCAxOHRoICh0aGF0IGlzLCAxM3RoIGFuZCAxNHRoIGFmdGVyIFwiLlwiKTpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuIC0uIDIuKiogKC01My4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk4ODZcIlxuICAgdn1cblxuICAgVGhlIHVscCAodGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhZGphY2VudCBmbG9hdHMpIGlzIHR3aWNlIGFzIGJpZyBvbiB0aGUgb3RoZXIgc2lkZSBvZlxuICAgMTAyNC46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiArLiAyLioqICgtNTIuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjQuMDAwMDAwMDAwMDAwMjI3XCJcbiAgIHZ9XG5cbiAgIE5vdyB0YWtlIGEgcG93ZXIgb2YgMiB3aGljaCBzdGFydHMgd2l0aCA5OTpcblxuICAge3ZcbiAgICAgIyAyLioqOTMuIDs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgMSAyMzQ1Njc4OTAxMjM0NTY3OFxuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0MjJlKzI3XG5cbiAgICAgIyAyLioqOTMuICouICgxLiArLiAyLioqICgtNTIuKSk7O1xuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0NDRlKzI3XG5cbiAgICAgIyAyLioqOTMuICouICgxLiAtLiAyLioqICgtNTMuKSk7O1xuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0MTFlKzI3XG4gICB2fVxuXG4gICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIDIqKjkzIGFuZCBpdHMgdHdvIG5laWdoYm9ycyBpcyBzbGlnaHRseSBtb3JlIHRoYW4sIHJlc3BlY3RpdmVseSxcbiAgIDEgYW5kIDIgYXQgc2lnbmlmaWNhbnQgZGlnaXQgMTYuXG5cbiAgIFRob3NlIGV4YW1wbGVzIHNob3cgdGhhdDpcbiAgIC0gMTcgc2lnbmlmaWNhbnQgZGlnaXRzIGlzIGFsd2F5cyBzdWZmaWNpZW50IHRvIHJlcHJlc2VudCBhIGZsb2F0IHdpdGhvdXQgYW1iaWd1aXR5XG4gICAtIDE1dGggc2lnbmlmaWNhbnQgZGlnaXQgY2FuIGFsd2F5cyBiZSByZXByZXNlbnRlZCBhY2N1cmF0ZWx5XG4gICAtIGNvbnZlcnRpbmcgYSBkZWNpbWFsIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyB0byBpdHMgbmVhcmVzdCBmbG9hdCBhbmQgYmFja1xuICAgICBjYW4gY2hhbmdlIHRoZSBsYXN0IGRlY2ltYWwgZGlnaXQgYnkgbm8gbW9yZSB0aGFuIDFcblxuICAgVG8gbWFrZSBzdXJlIHRoYXQgZmxvYXRzIG9idGFpbmVkIGJ5IGNvbnZlcnNpb24gZnJvbSBkZWNpbWFsIGZyYWN0aW9ucyAoZS5nLiBcIjMuMTRcIilcbiAgIGFyZSBwcmludGVkIHdpdGhvdXQgdHJhaWxpbmcgbm9uLXplcm8gZGlnaXRzLCBvbmUgc2hvdWxkIGNob29zZSB0aGUgZmlyc3QgYW1vbmcgdGhlXG4gICAnJS4xNWcnLCAnJS4xNmcnLCBhbmQgJyUuMTdnJyByZXByZXNlbnRhdGlvbnMgd2hpY2ggZG9lcyByb3VuZC10cmlwOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCIgICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0MDAwMDAwMDAwMDAwMDFcIiAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZSAqKVxuXG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4XCIgICAgICAgICAgICAgICAgICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tZG9lcyBub3Qgcm91bmQtdHJpcCAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDJcIiAgICAgICAgKCogcHJlZmVyIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMThcIiAgICAgICAoKiB0aGlzIG9uZSBoYXMgb25lIGRpZ2l0IG9mIGp1bmsgYXQgdGhlIGVuZCAqKVxuICAgdn1cblxuICAgU2tpcHBpbmcgdGhlICclLjE2ZycgaW4gdGhlIGFib3ZlIHByb2NlZHVyZSBzYXZlcyB1cyBzb21lIHRpbWUsIGJ1dCBpdCBtZWFucyB0aGF0LCBhc1xuICAgc2VlbiBpbiB0aGUgc2Vjb25kIGV4YW1wbGUgYWJvdmUsIG9jY2FzaW9uYWxseSBudW1iZXJzIHdpdGggZXhhY3RseSAxNiBzaWduaWZpY2FudFxuICAgZGlnaXRzIHdpbGwgaGF2ZSBhbiBlcnJvciBpbnRyb2R1Y2VkIGF0IHRoZSAxN3RoIGRpZ2l0LiAgVGhhdCBpcyBwcm9iYWJseSBPSyBmb3JcbiAgIHR5cGljYWwgdXNlLCBiZWNhdXNlIGEgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIGlzIFwidWdseVwiIGFscmVhZHkuICBBZGRpbmcgb25lXG4gICBtb3JlIGRvZXNuJ3QgbWFrZSBpdCBtdWNoIHdvcnNlIGZvciBhIGh1bWFuIHJlYWRlci5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIHdlIGNhbm5vdCBza2lwICclLjE1ZycgYW5kIG9ubHkgbG9vayBhdCAnJS4xNmcnIGFuZCAnJS4xN2cnLCBzaW5jZVxuICAgdGhlIGluYWNjdXJhY3kgYXQgdGhlIDE2dGggZGlnaXQgbWlnaHQgaW50cm9kdWNlIHRoZSBub2lzZSB3ZSB3YW50IHRvIGF2b2lkOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTJcIiAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTIwMDAwMDAwMDAwMDFcIiAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWp1bmsgYXQgdGhlIGVuZCAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTIwMDAwMDAwMDAwMDA5XCJcbiAgIHZ9XG4qKVxubGV0IHRvX3N0cmluZyB4ID1cbiAgdmFsaWRfZmxvYXRfbGV4ZW1cbiAgICAobGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1Z1wiIHggaW5cbiAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdnXCIgeClcbjs7XG5cbmxldCBtYXhfdmFsdWUgPSBpbmZpbml0eVxubGV0IG1pbl92YWx1ZSA9IG5lZ19pbmZpbml0eVxubGV0IG1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTA3NC5cbmxldCBtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwMjIuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBwaSA9IDB4My4yNDNGNkE4ODg1QTMwOEQzMTMxOThBMkUwMzcwNzNcbmxldCBzcXJ0X3BpID0gMHgxLkM1QkY4OTFCNEVGNkFBNzlDM0IwNTIwRDVEQjkzOFxubGV0IHNxcnRfMnBpID0gMHgyLjgxQjI2M0ZFQzRFMEIyQ0FGOTQ4M0Y1Q0U0NTlEQ1xubGV0IGV1bGVyID0gMHgwLjkzQzQ2N0UzN0RCMEM3QTREMUJFM0Y4MTAxNTJDQlxubGV0IG9mX2ludCA9IEludC50b19mbG9hdFxubGV0IHRvX2ludCA9IEludC5vZl9mbG9hdFxubGV0IG9mX2ludDYzIGkgPSBJbnQ2My50b19mbG9hdCBpXG5sZXQgb2ZfaW50NjQgaSA9IENhbWwuSW50NjQudG9fZmxvYXQgaVxubGV0IHRvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9mbG9hdFxubGV0IGlyb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xubGV0IGlyb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xuXG4oKiBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlIFwiZXhuXCIgcm91bmRpbmcgZnVuY3Rpb25zIGlzIGltcG9ydGFudCwgc28gdGhleSBhcmUgd3JpdHRlblxuICAgb3V0IHNlcGFyYXRlbHksIGFuZCB0dW5lZCBpbmRpdmlkdWFsbHkuICAoV2UgY291bGQgaGF2ZSB0aGUgb3B0aW9uIHZlcnNpb25zIGNhbGxcbiAgIHRoZSBcImV4blwiIHZlcnNpb25zLCBidXQgdGhhdCBpbXBvc2VzIGFyZ3VhYmx5IGdyYXR1aXRvdXMgb3ZlcmhlYWQtLS1lc3BlY2lhbGx5XG4gICBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgY2FwdHVyZSBvZiBiYWNrdHJhY2VzIGlzIGVuYWJsZWQgdXBvbiBcIndpdGhcIi0tLWFuZCB0aGF0IHNlZW1zXG4gICBub3Qgd29ydGggaXQgd2hlbiBjb21wYXJlZCB0byB0aGUgcmVsYXRpdmVseSBzbWFsbCBhbW91bnQgb2YgY29kZSBkdXBsaWNhdGlvbi4pICopXG5cbigqIEVycm9yIHJlcG9ydGluZyBiZWxvdyBpcyB2ZXJ5IGNhcmVmdWxseSBhcnJhbmdlZCBzbyB0aGF0LCBlLmcuLCBbaXJvdW5kX25lYXJlc3RfZXhuXVxuICAgaXRzZWxmIGNhbiBiZSBpbmxpbmVkIGludG8gY2FsbGVycyBzdWNoIHRoYXQgdGhleSBkb24ndCBuZWVkIHRvIGFsbG9jYXRlIGEgYm94IGZvciB0aGVcbiAgIFtmbG9hdF0gYXJndW1lbnQuICBUaGlzIGlzIGRvbmUgd2l0aCBhIGJveCBbYm94XSBmdW5jdGlvbiBjYXJlZnVsbHkgY2hvc2VuIHRvIGFsbG93IHRoZVxuICAgY29tcGlsZXIgdG8gY3JlYXRlIGEgc2VwYXJhdGUgYm94IGZvciB0aGUgZmxvYXQgb25seSBpbiBlcnJvciBjYXNlcy4gIFNlZSwgZS5nLixcbiAgIFsuLi8uLi96ZXJvL3Rlc3QvcHJpY2VfdGVzdC5tbF0gZm9yIGEgbWVjaGFuaWNhbCB0ZXN0IG9mIHRoaXMgcHJvcGVydHkgd2hlbiBidWlsZGluZ1xuICAgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPXRydWVdLiAqKVxuXG5sZXQgaXJvdW5kX3VwIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9kb3duIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuIGlmIHQgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCkgZWxzZSBOb25lXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKCkpXG47O1xuXG5sZXQgaXJvdW5kX3Rvd2FyZHNfemVybyB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaXJvdW5kX3Rvd2FyZHNfemVyb19leG46IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoYm94IHQpXG4gICAgICAoKVxuOztcblxuKCogT3V0c2lkZSBvZiB0aGUgcmFuZ2UgKHJvdW5kX25lYXJlc3RfbGIuLnJvdW5kX25lYXJlc3RfdWIpLCBhbGwgcmVwcmVzZW50YWJsZSBkb3VibGVzXG4gICBhcmUgaW50ZWdlcnMgaW4gdGhlIG1hdGhlbWF0aWNhbCBzZW5zZSwgYW5kIFtyb3VuZF9uZWFyZXN0XSBzaG91bGQgYmUgaWRlbnRpdHkuXG5cbiAgIEhvd2V2ZXIsIGZvciBvZGQgbnVtYmVycyB3aXRoIHRoZSBhYnNvbHV0ZSB2YWx1ZSBiZXR3ZWVuIDIqKjUyIGFuZCAyKio1MywgdGhlIGZvcm11bGFcbiAgIFtyb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArIDAuNSldIGRvZXMgbm90IGhvbGQ6XG5cbiAgIHt2XG4gICAgICMgbGV0IG5haXZlX3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsuIDAuNSk7O1xuICAgICAjIGxldCB4ID0gMi4gKiogNTIuICsuIDEuOztcbiAgICAgdmFsIHggOiBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTcuXG4gICAgICMgbmFpdmVfcm91bmRfbmVhcmVzdCB4OztcbiAgICAgLSA6ICAgICBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTguXG4gICB2fVxuKilcblxubGV0IHJvdW5kX25lYXJlc3RfbGIgPSAtLigyLiAqKiA1Mi4pXG5sZXQgcm91bmRfbmVhcmVzdF91YiA9IDIuICoqIDUyLlxuXG4oKiBGb3IgW3ggPSBvbmVfdWxwIGBEb3duIDAuNV0sIHRoZSBmb3JtdWxhIFtmbG9vciAoeCArLiAwLjUpXSBmb3Igcm91bmRpbmcgdG8gbmVhcmVzdFxuICAgZG9lcyBub3Qgd29yaywgYmVjYXVzZSB0aGUgZXhhY3QgcmVzdWx0IGlzIGhhbGZ3YXkgYmV0d2VlbiBbb25lX3VscCBgRG93biAxLl0gYW5kIFsxLl0sXG4gICBhbmQgaXQgZ2V0cyByb3VuZGVkIHVwIHRvIFsxLl0gZHVlIHRvIHRoZSByb3VuZC10aWVzLXRvLWV2ZW4gcnVsZS4gKilcbmxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscCBgRG93biAwLjVcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0ID1cbiAgdFxuICArLlxuICBpZiB0ID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICB0aGVuIG9uZV91bHBfbGVzc190aGFuX2hhbGYgKCogc2luY2UgdCA8IDAuNSwgbWFrZSBzdXJlIHRoZSByZXN1bHQgaXMgPCAxLjAgKilcbiAgZWxzZSAwLjVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KSlcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICAgIGVsc2UgTm9uZVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF8zMlxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4bl8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX25lYXJlc3RfZXhuXzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF9leG5fNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzMyXG47O1xuXG4oKiBUaGUgZm9sbG93aW5nIFtpcm91bmRfZXhuXSBhbmQgW2lyb3VuZF0gZnVuY3Rpb25zIGFyZSBzbG93ZXIgdGhhbiB0aGUgb25lcyBhYm92ZS5cbiAgIFRoZWlyIGVxdWl2YWxlbmNlIHRvIHRob3NlIGZ1bmN0aW9ucyBpcyB0ZXN0ZWQgaW4gdGhlIHVuaXQgdGVzdHMgYmVsb3cuICopXG5cbmxldFtAaW5saW5lXSBpcm91bmRfZXhuID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBaZXJvIC0+IGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHRcbiAgfCBgTmVhcmVzdCAtPiBpcm91bmRfbmVhcmVzdF9leG4gdFxuICB8IGBVcCAtPiBpcm91bmRfdXBfZXhuIHRcbiAgfCBgRG93biAtPiBpcm91bmRfZG93bl9leG4gdFxuOztcblxubGV0IGlyb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgdHJ5IFNvbWUgKGlyb3VuZF9leG4gfmRpciB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNfaW5mIHQgPSAxLiAvLiB0ID0gMC5cbmxldCBpc19maW5pdGUgdCA9IHQgLS4gdCA9IDAuXG5cbmxldCBtaW5faW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgbWF4X2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IGFkZCA9ICggKy4gKVxubGV0IHN1YiA9ICggLS4gKVxubGV0IG5lZyA9ICggfi0uIClcbmxldCBhYnMgPSBhYnNfZmxvYXRcbmxldCBzY2FsZSA9ICggKi4gKVxubGV0IHNxdWFyZSB4ID0geCAqLiB4XG5cbm1vZHVsZSBQYXJ0cyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZnJhY3Rpb25hbCA6IHQgLT4gZmxvYXRcbiAgdmFsIGludGVncmFsIDogdCAtPiBmbG9hdFxuICB2YWwgbW9kZiA6IGZsb2F0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCAqIGZsb2F0XG5cbiAgbGV0IGZyYWN0aW9uYWwgdCA9IGZzdCB0XG4gIGxldCBpbnRlZ3JhbCB0ID0gc25kIHRcbiAgbGV0IG1vZGYgPSBtb2RmXG5lbmRcblxubGV0IG1vZGYgPSBQYXJ0cy5tb2RmXG5sZXQgcm91bmRfZG93biA9IGZsb29yXG5sZXQgcm91bmRfdXAgPSBjZWlsXG5sZXQgcm91bmRfdG93YXJkc196ZXJvIHQgPSBpZiB0ID49IDAuIHRoZW4gcm91bmRfZG93biB0IGVsc2Ugcm91bmRfdXAgdFxuXG4oKiBzZWUgdGhlIGNvbW1lbnQgYWJvdmUgW3JvdW5kX25lYXJlc3RfbGJdIGFuZCBbcm91bmRfbmVhcmVzdF91Yl0gZm9yIGFuIGV4cGxhbmF0aW9uICopXG5sZXRbQG9jYW1sLmlubGluZV0gcm91bmRfbmVhcmVzdF9pbmxpbmUgdCA9XG4gIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiICYmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gZmxvb3IgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gIGVsc2UgdCArLiAwLlxuOztcblxubGV0IHJvdW5kX25lYXJlc3QgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdFxuXG5sZXQgcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gdCA9XG4gIGlmIHQgPD0gcm91bmRfbmVhcmVzdF9sYiB8fCB0ID49IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiB0ICsuIDAuXG4gIGVsc2UgKFxuICAgIGxldCBmbG9vciA9IGZsb29yIHQgaW5cbiAgICAoKiBbY2VpbF9vcl9zdWNjID0gaWYgdCBpcyBhbiBpbnRlZ2VyIHRoZW4gdCArLiAxLiBlbHNlIGNlaWwgdF0uICBGYXN0ZXIgdGhhbiBbY2VpbF0uICopXG4gICAgbGV0IGNlaWxfb3Jfc3VjYyA9IGZsb29yICsuIDEuIGluXG4gICAgbGV0IGRpZmZfZmxvb3IgPSB0IC0uIGZsb29yIGluXG4gICAgbGV0IGRpZmZfY2VpbCA9IGNlaWxfb3Jfc3VjYyAtLiB0IGluXG4gICAgaWYgZGlmZl9mbG9vciA8IGRpZmZfY2VpbFxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGlmIGRpZmZfZmxvb3IgPiBkaWZmX2NlaWxcbiAgICB0aGVuIGNlaWxfb3Jfc3VjY1xuICAgIGVsc2UgaWYgKCogZXhhY3QgdGllLCBwaWNrIHRoZSBldmVuICopXG4gICAgICBtb2RfZmxvYXQgZmxvb3IgMi4gPSAwLlxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGNlaWxfb3Jfc3VjYylcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5sZXQgaW50NjNfcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xuXG5sZXQgaW50NjNfcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biB0MCA9XG4gIGxldCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0MCBpblxuICBpZiB0ID4gMC5cbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChib3ggdDApXG4gICAgICAgICgpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKGJveCB0MClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gZiA9IEludDYzLm9mX2ludCAoaXJvdW5kX25lYXJlc3RfZXhuIGYpXG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICB8IFczMiAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuOztcblxubGV0IHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgdFxuICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gdFxuICB8IGBVcCAtPiByb3VuZF91cCB0XG4gIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIHRcbjs7XG5cbm1vZHVsZSBDbGFzcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW5maW5pdGVcbiAgICB8IE5hblxuICAgIHwgTm9ybWFsXG4gICAgfCBTdWJub3JtYWxcbiAgICB8IFplcm9cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEluZmluaXRlOyBOYW47IE5vcm1hbDsgU3Vibm9ybWFsOyBaZXJvIF0gOiB0IGxpc3QpXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcImZsb2F0Lm1sLkNsYXNzLnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSAtPiBJbmZpbml0ZVxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIC0+IE5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIC0+IFN1Ym5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICB8IHNleHBfXzAwNV8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5maW5pdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5maW5pdGVcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgIHwgTm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5vcm1hbFwiXG4gICAgICB8IFN1Ym5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdWJub3JtYWxcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiSW5maW5pdGVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJTdWJub3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmVuZFxuXG5sZXQgY2xhc3NpZnkgdCA9XG4gIGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICB8IEZQX25vcm1hbCAtPiBDLk5vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbCAtPiBDLlN1Ym5vcm1hbFxuICB8IEZQX3plcm8gLT4gQy5aZXJvXG4gIHwgRlBfaW5maW5pdGUgLT4gQy5JbmZpbml0ZVxuICB8IEZQX25hbiAtPiBDLk5hblxuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyA/KGRlbGltaXRlciA9ICdfJykgPyhzdHJpcF96ZXJvID0gZmFsc2UpIHN0cmluZyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0cmluZyB+b246Jy4nIHdpdGhcbiAgfCBOb25lIC0+IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIHN0cmluZyB+ZGVsaW1pdGVyXG4gIHwgU29tZSAobGVmdCwgcmlnaHQpIC0+XG4gICAgbGV0IGxlZnQgPSBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBsZWZ0IH5kZWxpbWl0ZXIgaW5cbiAgICBsZXQgcmlnaHQgPVxuICAgICAgaWYgc3RyaXBfemVybyB0aGVuIFN0cmluZy5yc3RyaXAgcmlnaHQgfmRyb3A6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnMCcpIGVsc2UgcmlnaHRcbiAgICBpblxuICAgIChtYXRjaCByaWdodCB3aXRoXG4gICAgIHwgXCJcIiAtPiBsZWZ0XG4gICAgIHwgXyAtPiBsZWZ0IF4gXCIuXCIgXiByaWdodClcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtID9kZWxpbWl0ZXIgPyhkZWNpbWFscyA9IDMpID9zdHJpcF96ZXJvID8oZXhwbGljaXRfcGx1cyA9IGZhbHNlKSBmID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBkZWNpbWFscyAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwidG9fc3RyaW5nX2h1bTogaW52YWxpZCBhcmd1bWVudCB+ZGVjaW1hbHM9JWRcIiBkZWNpbWFscyAoKTtcbiAgbWF0Y2ggY2xhc3NpZnkgZiB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgZiA+IDAuIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuXCJcbiAgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IHMgPVxuICAgICAgaWYgZXhwbGljaXRfcGx1cyB0aGVuIHNwcmludGYgXCIlKy4qZlwiIGRlY2ltYWxzIGYgZWxzZSBzcHJpbnRmIFwiJS4qZlwiIGRlY2ltYWxzIGZcbiAgICBpblxuICAgIGluc2VydF91bmRlcnNjb3JlcyBzID9kZWxpbWl0ZXIgP3N0cmlwX3plcm9cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGxldCBzZXhwID0gc2V4cF9vZl90IHQgaW5cbiAgbWF0Y2ggIVNleHAub2ZfZmxvYXRfc3R5bGUgd2l0aFxuICB8IGBOb191bmRlcnNjb3JlcyAtPiBzZXhwXG4gIHwgYFVuZGVyc2NvcmVzIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IExpc3QgXyAtPlxuICAgICAgIHJhaXNlX3NcbiAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgIFwiW3NleHBfb2ZfZmxvYXRdIHByb2R1Y2VkIHN0cmFuZ2Ugc2V4cFwiXG4gICAgICAgICAgICBbIFwic2V4cFwiLCBTZXhwLnNleHBfb2ZfdCBzZXhwIF0pXG4gICAgIHwgQXRvbSBzdHJpbmcgLT5cbiAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgc3RyaW5nICdFJyB0aGVuIHNleHAgZWxzZSBBdG9tIChpbnNlcnRfdW5kZXJzY29yZXMgc3RyaW5nKSlcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgPyhwcmVmaXggPSBcIlwiKSB+a2lsbyB+bWVnYSB+Z2lnYSB+dGVyYSA/cGV0YSAoKSA9XG4gICgqIFJvdW5kIGEgcmF0aW8gdG93YXJkIHRoZSBuZWFyZXN0IGludGVnZXIsIHJlc29sdmluZyB0aWVzIHRvd2FyZCB0aGUgbmVhcmVzdCBldmVuXG4gICAgIG51bWJlci4gIEZvciBzYW5lIGlucHV0cyAoaW4gcGFydGljdWxhciwgd2hlbiBbZGVub21pbmF0b3JdIGlzIGFuIGludGVnZXIgYW5kXG4gICAgIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0pIHRoaXMgc2hvdWxkIGJlIGFjY3VyYXRlLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IG1pZ2h0IGJlIGFcbiAgICAgbGl0dGxlIGJpdCBvZmYsIGJ1dCB3ZSBkb24ndCByZWFsbHkgdXNlIHRoYXQgY2FzZS4gKilcbiAgbGV0IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBrID0gZmxvb3IgKG51bWVyYXRvciAvLiBkZW5vbWluYXRvcikgaW5cbiAgICAoKiBpZiBbYWJzIGsgPCAyZTUzXSwgdGhlbiBib3RoIFtrXSBhbmQgW2sgKy4gMS5dIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBhbmQgaW5cbiAgICAgICBwYXJ0aWN1bGFyIFtrICsuIDEuID4ga10uICBJZiBbZGVub21pbmF0b3JdIGlzIGFsc28gYW4gaW50ZWdlciwgYW5kXG4gICAgICAgW2FicyAoZGVub21pbmF0b3IgKi4gKGsgKy4gMSkpIDwgMmU1M10gKGFuZCBpbiBzb21lIG90aGVyIGNhc2VzLCB0b28pLCB0aGVuIFtsb3dlcl1cbiAgICAgICBhbmQgW2hpZ2hlcl0gYXJlIGFjdHVhbGx5IGJvdGggYWNjdXJhdGUuICBTaW5jZSAocm91Z2hseSlcbiAgICAgICBbbnVtZXJhdG9yID0gZGVub21pbmF0b3IgKi4ga10gdGhlbiBmb3IgW2FicyBudW1lcmF0b3IgPCAyZTUyXSB3ZSBzaG91bGQgYmVcbiAgICAgICBmaW5lLiAqKVxuICAgIGxldCBsb3dlciA9IGRlbm9taW5hdG9yICouIGsgaW5cbiAgICBsZXQgaGlnaGVyID0gZGVub21pbmF0b3IgKi4gKGsgKy4gMS4pIGluXG4gICAgKCogU3VidHJhY3RpbmcgbnVtYmVycyB3aXRoaW4gYSBmYWN0b3Igb2YgdHdvIGZyb20gZWFjaCBvdGhlciBpcyBhY2N1cmF0ZS5cbiAgICAgICBTbyBlaXRoZXIgdGhlIHR3byBzdWJ0cmFjdGlvbnMgYmVsb3cgYXJlIGFjY3VyYXRlLCBvciBrID0gMCwgb3IgayA9IC0xLlxuICAgICAgIEluIGNhc2Ugb2YgYSB0aWUsIHJvdW5kIHRvIGV2ZW4uICopXG4gICAgbGV0IGRpZmZfcmlnaHQgPSBoaWdoZXIgLS4gbnVtZXJhdG9yIGluXG4gICAgbGV0IGRpZmZfbGVmdCA9IG51bWVyYXRvciAtLiBsb3dlciBpblxuICAgIGxldCBrID0gaXJvdW5kX25lYXJlc3RfZXhuIGsgaW5cbiAgICBpZiBkaWZmX3JpZ2h0IDwgZGlmZl9sZWZ0XG4gICAgdGhlbiBrICsgMVxuICAgIGVsc2UgaWYgZGlmZl9yaWdodCA+IGRpZmZfbGVmdFxuICAgIHRoZW4ga1xuICAgIGVsc2UgaWYgKCogYSB0aWUgKilcbiAgICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGsgbW9kIDIpIDBcbiAgICB0aGVuIGtcbiAgICBlbHNlIGsgKyAxXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIHQgPCAwLjAgdGhlbiBcIi1pbmYgIFwiIGVsc2UgXCJpbmYgIFwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuICBcIlxuICB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgZ28gdCA9XG4gICAgICBsZXQgY29udl9vbmUgdCA9XG4gICAgICAgIGFzc2VydCAoMC4gPD0gdCAmJiB0IDwgOTk5Ljk1KTtcbiAgICAgICAgbGV0IHggPSBwcmVmaXggXiBmb3JtYXRfZmxvYXQgXCIlLjFmXCIgdCBpblxuICAgICAgICAoKiBGaXggdGhlIFwiLjBcIiBzdWZmaXggKilcbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCB4IH5zdWZmaXg6XCIuMFwiXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB4ID0gQnl0ZXMub2Zfc3RyaW5nIHggaW5cbiAgICAgICAgICBsZXQgbiA9IEJ5dGVzLmxlbmd0aCB4IGluXG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAxKSAnICc7XG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAyKSAnICc7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp4KVxuICAgICAgICBlbHNlIHhcbiAgICAgIGluXG4gICAgICBsZXQgY29udiBtYWcgdCBkZW5vbWluYXRvciA9XG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgKGRlbm9taW5hdG9yID0gMTAwLiAmJiB0ID49IDk5OS45NSlcbiAgICAgICAgICB8fCAoZGVub21pbmF0b3IgPj0gMTAwXzAwMC4gJiYgdCA+PSByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Ljk5OV81KSkpO1xuICAgICAgICBhc3NlcnQgKHQgPCByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Xzk5OS41KSk7XG4gICAgICAgIGxldCBpLCBkID1cbiAgICAgICAgICBsZXQgayA9IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvcjp0IH5kZW5vbWluYXRvciBpblxuICAgICAgICAgICgqIFttb2RdIGlzIG9rYXkgaGVyZSBiZWNhdXNlIHdlIGtub3cgaSA+PSAwLiAqKVxuICAgICAgICAgIGsgLyAxMCwgayBtb2QgMTBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgICAgICBhc3NlcnQgKDAgPD0gaSAmJiBpIDwgMTAwMCk7XG4gICAgICAgIGFzc2VydCAoMCA8PSBkICYmIGQgPCAxMCk7XG4gICAgICAgIGlmIGQgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIiVzJWQlcyBcIiBwcmVmaXggaSBtYWdcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlZCVzJWRcIiBwcmVmaXggaSBtYWcgZFxuICAgICAgaW5cbiAgICAgICgqIFdoaWxlIHRoZSBzdGFuZGFyZCBtZXRyaWMgcHJlZml4ZXMgKGUuZy4gY2FwaXRhbCBcIk1cIiByYXRoZXIgdGhhbiBcIm1cIiwgWzFdKSBhcmVcbiAgICAgICAgIG5vbWluYWxseSBtb3JlIGNvcnJlY3QsIHRoaXMgaGluZGVycyByZWFkYWJpbGl0eSBpbiBvdXIgY2FzZS4gIEUuZy4sIDEwRzYgYW5kXG4gICAgICAgICAxMDY2IGxvb2sgdG9vIHNpbWlsYXIuICBUaGF0J3MgYW4gZXh0cmVtZSBleGFtcGxlLCBidXQgaW4gZ2VuZXJhbCBrLG0sZyx0LHBcbiAgICAgICAgIHByb2JhYmx5IHN0YW5kIG91dCBiZXR0ZXIgdGhhbiBLLE0sRyxULFAgd2hlbiBpbnRlcnNwZXJzZWQgd2l0aCBkaWdpdHMuXG5cbiAgICAgICAgIFsxXSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldHJpY19wcmVmaXggKilcbiAgICAgICgqIFRoZSB0cmljayBoZXJlIGlzIHRoYXQ6XG4gICAgICAgICAtIHRoZSBmaXJzdCBib3VuZGFyeSAoOTk5Ljk1KSBhcyBhIGZsb2F0IGlzIHNsaWdodGx5IG92ZXItcmVwcmVzZW50ZWQgKHNvIGl0IGlzXG4gICAgICAgICAgIGJldHRlciBhcHByb3hpbWF0ZWQgYXMgXCIxa1wiIHRoYW4gYXMgXCI5OTkuOVwiKSxcbiAgICAgICAgIC0gdGhlIG90aGVyIGJvdW5kYXJpZXMgYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGJlY2F1c2UgdGhleSBhcmUgaW50ZWdlcnMuXG4gICAgICAgICAgIFRoYXQncyB3aHkgdGhlIHN0cmljdCBlcXVhbGl0aWVzIGJlbG93IGRvIGV4YWN0bHkgd2hhdCB3ZSB3YW50LiAqKVxuICAgICAgaWYgdCA8IDk5OS45NUUwXG4gICAgICB0aGVuIGNvbnZfb25lIHRcbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUzXG4gICAgICB0aGVuIGNvbnYga2lsbyB0IDEwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU2XG4gICAgICB0aGVuIGNvbnYgbWVnYSB0IDEwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFOVxuICAgICAgdGhlbiBjb252IGdpZ2EgdCAxMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUxMlxuICAgICAgdGhlbiBjb252IHRlcmEgdCAxMDBfMDAwXzAwMF8wMDAuXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcGV0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHRcbiAgICAgICAgfCBTb21lIHBldGEgLT5cbiAgICAgICAgICBpZiB0IDwgOTk5Ljk1RTE1XG4gICAgICAgICAgdGhlbiBjb252IHBldGEgdCAxMDBfMDAwXzAwMF8wMDBfMDAwLlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0KVxuICAgIGluXG4gICAgaWYgdCA+PSAwLiB0aGVuIGdvIHQgZWxzZSBcIi1cIiBeIGdvIH4tLnRcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmcgdCA9XG4gIHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCB+a2lsbzpcImtcIiB+bWVnYTpcIm1cIiB+Z2lnYTpcImdcIiB+dGVyYTpcInRcIiB+cGV0YTpcInBcIiAoKVxuOztcblxuKCogUGVyZm9ybWFuY2Ugbm90ZTogSW5pdGlhbGl6aW5nIHRoZSBhY2N1bXVsYXRvciB0byAxIHJlc3VsdHMgaW4gb25lIGV4dHJhXG4gICBtdWx0aXBseTsgZS5nLiwgdG8gY29tcHV0ZSB4ICoqIDQsIHdlIGluIHByaW5jaXBsZSBvbmx5IG5lZWQgMiBtdWx0aXBsaWVzLFxuICAgYnV0IHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIDMgbXVsdGlwbGllcy4gIEhvd2V2ZXIsIGF0dGVtcHRzIHRvIGF2b2lkIHRoaXNcbiAgIChsaWtlIGRlY3JlbWVudGluZyBuIGFuZCBpbml0aWFsaXppbmcgYWNjdW0gdG8gYmUgeCwgb3IgaGFuZGxpbmcgc21hbGxcbiAgIGV4cG9uZW50cyBhcyBhIHNwZWNpYWwgY2FzZSkgaGF2ZSBub3QgeWllbGRlZCBhbnl0aGluZyB0aGF0IGlzIGEgbmV0XG4gICBpbXByb3ZlbWVudC5cbiopXG5sZXQgaW50X3BvdyB4IG4gPVxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gMS5cbiAgZWxzZSAoXG4gICAgKCogVXNpbmcgW3ggKy4gKC0wLildIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBjb252aW5jZXMgdGhlIGNvbXBpbGVyIHRvIGF2b2lkIGEgY2VydGFpblxuICAgICAgIGJveGluZyAodGhhdCB3b3VsZCByZXN1bHQgaW4gYWxsb2NhdGlvbiBpbiBlYWNoIGl0ZXJhdGlvbikuICBTb29uLCB0aGUgY29tcGlsZXJcbiAgICAgICBzaG91bGRuJ3QgbmVlZCB0aGlzIFwiaGludFwiIHRvIGF2b2lkIHRoZSBib3hpbmcuICBUaGUgcmVhc29uIHdlIGFkZCAtMCByYXRoZXIgdGhhbiAwXG4gICAgICAgaXMgdGhhdCBbeCArLiAoLTAuKV0gaXMgYXBwYXJlbnRseSBhbHdheXMgdGhlIHNhbWUgYXMgW3hdLCB3aGVyZWFzIFt4ICsuIDAuXSBpc1xuICAgICAgIG5vdCwgaW4gdGhhdCBpdCBzZW5kcyBbLTAuXSB0byBbMC5dLiAgVGhpcyBtYWtlcyBhIGRpZmZlcmVuY2UgYmVjYXVzZSB3ZSB3YW50XG4gICAgICAgW2ludF9wb3cgKC0wLikgKC0xKV0gdG8gcmV0dXJuIG5lZ19pbmZpbml0eSBqdXN0IGxpa2UgWy0wLiAqKiAtMS5dIHdvdWxkLiAgKilcbiAgICBsZXQgeCA9IHJlZiAoeCArLiAtMC4pIGluXG4gICAgbGV0IG4gPSByZWYgbiBpblxuICAgIGxldCBhY2N1bSA9IHJlZiAxLiBpblxuICAgIGlmICFuIDwgMFxuICAgIHRoZW4gKFxuICAgICAgKCogeCAqKiBuID0gKDEveCkgKiogLW4gKilcbiAgICAgIHggOj0gMS4gLy4gIXg7XG4gICAgICBuIDo9IH4tICghbik7XG4gICAgICBpZiAhbiA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBuIG11c3QgaGF2ZSBiZWVuIG1pbl9pbnQsIHNvIGl0IGlzIG5vdyBzbyBiaWcgdGhhdCBpdCBoYXMgd3JhcHBlZCBhcm91bmQuXG4gICAgICAgICAgIFdlIGRlY3JlbWVudCBpdCBzbyB0aGF0IGl0IGxvb2tzIHBvc2l0aXZlIGFnYWluLCBidXQgYWNjb3JkaW5nbHkgaGF2ZVxuICAgICAgICAgICB0byBwdXQgYW4gZXh0cmEgZmFjdG9yIG9mIHggaW4gdGhlIGFjY3VtdWxhdG9yLlxuICAgICAgICAqKVxuICAgICAgICBhY2N1bSA6PSAheDtcbiAgICAgICAgZGVjciBuKSk7XG4gICAgKCogTGV0dGluZyBbYV0gZGVub3RlICh0aGUgb3JpZ2luYWwgdmFsdWUgb2YpIFt4ICoqIG5dLCB3ZSBtYWludGFpblxuICAgICAgIHRoZSBpbnZhcmlhbnQgdGhhdCBbKHggKiogbikgKi4gYWNjdW0gPSBhXS4gKilcbiAgICB3aGlsZSAhbiA+IDEgZG9cbiAgICAgIGlmICFuIGxhbmQgMSA8PiAwIHRoZW4gYWNjdW0gOj0gIXggKi4gIWFjY3VtO1xuICAgICAgeCA6PSAheCAqLiAheDtcbiAgICAgIG4gOj0gIW4gbHNyIDFcbiAgICBkb25lO1xuICAgICgqIG4gaXMgbmVjZXNzYXJpbHkgMSBhdCB0aGlzIHBvaW50LCBzbyB0aGVyZSBpcyBvbmUgYWRkaXRpb25hbFxuICAgICAgIG11bHRpcGxpY2F0aW9uIGJ5IHguICopXG4gICAgIXggKi4gIWFjY3VtKVxuOztcblxubGV0IHJvdW5kX2dlbiB4IH5ob3cgPVxuICBpZiB4ID0gMC5cbiAgdGhlbiAwLlxuICBlbHNlIGlmIG5vdCAoaXNfZmluaXRlIHgpXG4gIHRoZW4geFxuICBlbHNlIChcbiAgICAoKiBTaWduaWZpY2FudCBkaWdpdHMgYW5kIGRlY2ltYWwgZGlnaXRzLiAqKVxuICAgIGxldCBzZCwgZGQgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHNpZ25pZmljYW50X2RpZ2l0cyBzZCAtPlxuICAgICAgICBsZXQgZGQgPSBzZCAtIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICAgIHwgYGRlY2ltYWxfZGlnaXRzIGRkIC0+XG4gICAgICAgIGxldCBzZCA9IGRkICsgdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgIGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIHNkIDwgMFxuICAgIHRoZW4gMC5cbiAgICBlbHNlIGlmIHNkID49IDE3XG4gICAgdGhlbiB4XG4gICAgZWxzZSAoXG4gICAgICAoKiBDaG9vc2UgdGhlIG9yZGVyIHRoYXQgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQuIFNtYWxsIHBvc2l0aXZlXG4gICAgICAgICBpbnRlZ2VycyBhcmUsIGJ1dCB0aGVpciBpbnZlcnNlcyBpbiBtb3N0IGNhc2VzIGFyZSBub3QuICopXG4gICAgICBsZXQgYWJzX2RkID0gSW50LmFicyBkZCBpblxuICAgICAgaWYgYWJzX2RkID4gMjIgfHwgc2QgPj0gMTZcbiAgICAgICgqIDEwKioyMiBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgYnV0IDEwKioyMyBpcyBub3QsIHNvIHVzZSB0aGUgc2xvd1xuICAgICAgICAgcGF0aC4gIFNpbWlsYXJseSwgaWYgd2UgbmVlZCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaW4gdGhlIHJlc3VsdCwgdGhlbiB0aGUgaW50ZWdlclxuICAgICAgICAgW3JvdW5kX25lYXJlc3QgKHggPG9wPiBvcmRlcildIG1pZ2h0IG5vdCBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgc2luY2VcbiAgICAgICAgIGZvciBzb21lIHJhbmdlcyB3ZSBvbmx5IGhhdmUgMTUgZGlnaXRzIG9mIHByZWNpc2lvbiBndWFyYW50ZWVkLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHdlIGFyZSBzdGlsbCByb3VuZGluZyB0d2ljZSBoZXJlOlxuXG4gICAgICAgICAxKSBmaXJzdCB0aW1lIHdoZW4gcm91bmRpbmcgW3ggKi4gb3JkZXJdIG9yIFt4IC8uIG9yZGVyXSB0byB0aGUgbmVhcmVzdCBmbG9hdFxuICAgICAgICAgKGp1c3QgdGhlIG5vcm1hbCB3YXkgZmxvYXRpbmctcG9pbnQgbXVsdGlwbGljYXRpb24gb3IgZGl2aXNpb24gd29ya3MpLFxuXG4gICAgICAgICAyKSBzZWNvbmQgdGltZSB3aGVuIGFwcGx5aW5nIFtyb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbl0gdG8gdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIGFib3ZlIG9wZXJhdGlvblxuXG4gICAgICAgICBTbyBmb3IgYXJndW1lbnRzIHdpdGhpbiBhbiB1bHAgZnJvbSBhIHRpZSB3ZSBtaWdodCBzdGlsbCBwcm9kdWNlIGFuIG9mZi1ieS1vbmVcbiAgICAgICAgIHJlc3VsdC4gKilcbiAgICAgIHRoZW4gb2Zfc3RyaW5nIChzcHJpbnRmIFwiJS4qZ1wiIHNkIHgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG9yZGVyID0gaW50X3BvdyAxMC4gYWJzX2RkIGluXG4gICAgICAgIGlmIGRkID49IDBcbiAgICAgICAgdGhlbiByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAqLiBvcmRlcikgLy4gb3JkZXJcbiAgICAgICAgZWxzZSByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAvLiBvcmRlcikgKi4gb3JkZXIpKSlcbjs7XG5cbmxldCByb3VuZF9zaWduaWZpY2FudCB4IH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBzaWduaWZpY2FudF9kaWdpdHMgMFxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LnJvdW5kX3NpZ25pZmljYW50OiBpbnZhbGlkIGFyZ3VtZW50IHNpZ25pZmljYW50X2RpZ2l0czolZFwiXG4gICAgICBzaWduaWZpY2FudF9kaWdpdHNcbiAgICAgICgpXG4gIGVsc2Ugcm91bmRfZ2VuIHggfmhvdzooYHNpZ25pZmljYW50X2RpZ2l0cyBzaWduaWZpY2FudF9kaWdpdHMpXG47O1xuXG5sZXQgcm91bmRfZGVjaW1hbCB4IH5kZWNpbWFsX2RpZ2l0cyA9IHJvdW5kX2dlbiB4IH5ob3c6KGBkZWNpbWFsX2RpZ2l0cyBkZWNpbWFsX2RpZ2l0cylcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgKCogY2xhbXBfdW5jaGVja2VkIGlzIGluIGZsb2F0MC5tbCAqKVxuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGlmIG1pbiA8PSBtYXhcbiAgdGhlbiBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuOztcblxubGV0ICggKyApID0gKCArLiApXG5sZXQgKCAtICkgPSAoIC0uIClcbmxldCAoICogKSA9ICggKi4gKVxubGV0ICggKiogKSA9ICggKiogKVxubGV0ICggLyApID0gKCAvLiApXG5sZXQgKCAlICkgPSAoICUuIClcbmxldCAoIH4tICkgPSAoIH4tLiApXG5cbmxldCBzaWduX2V4biB0IDogU2lnbi50ID1cbiAgaWYgdCA+IDAuXG4gIHRoZW4gUG9zXG4gIGVsc2UgaWYgdCA8IDAuXG4gIHRoZW4gTmVnXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gWmVyb1xuICBlbHNlIEVycm9yLnJhaXNlX3MgKFNleHAubWVzc2FnZSBcIkZsb2F0LnNpZ25fZXhuIG9mIE5BTlwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBzaWduX29yX25hbiB0IDogU2lnbl9vcl9uYW4udCA9XG4gIGlmIHQgPiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPCAwLiB0aGVuIE5lZyBlbHNlIGlmIHQgPSAwLiB0aGVuIFplcm8gZWxzZSBOYW5cbjs7XG5cbmxldCBpZWVlX25lZ2F0aXZlIHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIFBvbHkuKGJpdHMgPCBDYW1sLkludDY0Lnplcm8pXG47O1xuXG5sZXQgZXhwb25lbnRfYml0cyA9IDExXG5sZXQgbWFudGlzc2FfYml0cyA9IDUyXG5sZXQgZXhwb25lbnRfbWFzazY0ID0gSW50NjQuKHNoaWZ0X2xlZnQgb25lIGV4cG9uZW50X2JpdHMgLSBvbmUpXG5sZXQgZXhwb25lbnRfbWFzayA9IEludDY0LnRvX2ludF9leG4gZXhwb25lbnRfbWFzazY0XG5sZXQgbWFudGlzc2FfbWFzayA9IEludDYzLihzaGlmdF9sZWZ0IG9uZSBtYW50aXNzYV9iaXRzIC0gb25lKVxubGV0IG1hbnRpc3NhX21hc2s2NCA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhX21hc2tcblxubGV0IGllZWVfZXhwb25lbnQgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjQuKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYml0cyBtYW50aXNzYV9iaXRzKSBleHBvbmVudF9tYXNrNjQpXG4gIHw+IENhbWwuSW50NjQudG9faW50XG47O1xuXG5sZXQgaWVlZV9tYW50aXNzYSB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2My5vZl9pbnQ2NF9leG4gQ2FtbC5JbnQ2NC4obG9nYW5kIGJpdHMgbWFudGlzc2FfbWFzazY0KVxuOztcblxubGV0IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIGlmIEludC4oYml0X2FuZCBleHBvbmVudCBleHBvbmVudF9tYXNrIDw+IGV4cG9uZW50KVxuICB0aGVuIGZhaWx3aXRoZiBcImV4cG9uZW50ICVkIG91dCBvZiByYW5nZSBbMCwgJWRdXCIgZXhwb25lbnQgZXhwb25lbnRfbWFzayAoKVxuICBlbHNlIGlmIEludDYzLihiaXRfYW5kIG1hbnRpc3NhIG1hbnRpc3NhX21hc2sgPD4gbWFudGlzc2EpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwibWFudGlzc2EgJXMgb3V0IG9mIHJhbmdlIFswLCAlc11cIlxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYSlcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2FfbWFzaylcbiAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCBzaWduX2JpdHMgPSBpZiBuZWdhdGl2ZSB0aGVuIENhbWwuSW50NjQubWluX2ludCBlbHNlIENhbWwuSW50NjQuemVybyBpblxuICAgIGxldCBleHB0X2JpdHMgPSBDYW1sLkludDY0LnNoaWZ0X2xlZnQgKENhbWwuSW50NjQub2ZfaW50IGV4cG9uZW50KSBtYW50aXNzYV9iaXRzIGluXG4gICAgbGV0IG1hbnRfYml0cyA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhIGluXG4gICAgbGV0IGJpdHMgPSBDYW1sLkludDY0Lihsb2dvciBzaWduX2JpdHMgKGxvZ29yIGV4cHRfYml0cyBtYW50X2JpdHMpKSBpblxuICAgIENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyBiaXRzKVxuOztcblxubGV0IGNyZWF0ZV9pZWVlIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EpXG47O1xuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0b19zdHJpbmcgeCA9IFByaW50Zi5zcHJpbnRmIFwiJS44R1wiIHhcbiAgbGV0IHNleHBfb2ZfdCB4ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgeClcbiAgbGV0IG9mX3N0cmluZyB4ID0gb2Zfc3RyaW5nIHhcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIFRoZXNlIGFyZSBwYXJ0bHkgaGVyZSBhcyBhIHBlcmZvcm1hbmNlIGhhY2sgdG8gYXZvaWQgc29tZSBib3hpbmcgd2UncmUgZ2V0dGluZyB3aXRoXG4gICB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10uICBUaGV5IGFsc28gbWFrZSBbRmxvYXQuaXNfbmVnYXRpdmUgbmFuXSBhbmRcbiAgIFtGbG9hdC5pc19ub25fcG9zaXRpdmUgbmFuXSByZXR1cm4gW2ZhbHNlXTsgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dIHJldHVyblxuICAgW3RydWVdLiAqKVxubGV0IGlzX3Bvc2l0aXZlIHQgPSB0ID4gMC5cbmxldCBpc19ub25fbmVnYXRpdmUgdCA9IHQgPj0gMC5cbmxldCBpc19uZWdhdGl2ZSB0ID0gdCA8IDAuXG5sZXQgaXNfbm9uX3Bvc2l0aXZlIHQgPSB0IDw9IDAuXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkZsb2F0XCJcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGVuZClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggJSApID0gKCAlIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnQgPSBvZl9pbnRcbiAgbGV0IG9mX2Zsb2F0IHggPSB4XG5lbmRcblxubW9kdWxlIE9fZG90ID0gc3RydWN0XG4gIGxldCAoICouICkgPSAoICogKVxuICBsZXQgKCArLiApID0gKCArIClcbiAgbGV0ICggLS4gKSA9ICggLSApXG4gIGxldCAoIC8uICkgPSAoIC8gKVxuICBsZXQgKCAlLiApID0gKCAlIClcbiAgbGV0ICggfi0uICkgPSAoIH4tIClcbiAgbGV0ICggKiouICkgPSAoICoqIClcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYm94ID0gYm94XG4gIGxldCBjbGFtcF91bmNoZWNrZWQgPSBjbGFtcF91bmNoZWNrZWRcbiAgbGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgPSBsb3dlcl9ib3VuZF9mb3JfaW50XG4gIGxldCB1cHBlcl9ib3VuZF9mb3JfaW50ID0gdXBwZXJfYm91bmRfZm9yX2ludFxuICBsZXQgc3BlY2lhbGl6ZWRfaGFzaCA9IGhhc2hfZmxvYXRcbiAgbGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIGxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biA9IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG4gIGxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biA9IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIGxldCBpcm91bmRfbmVhcmVzdF9leG5fNjQgPSBpcm91bmRfbmVhcmVzdF9leG5fNjRcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkgcmVwbGFjZSBkZWZhdWx0cyBpbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuXG5cbiAgIFRoZSBkZXNpcmVkIGJlaGF2aW9yIGhlcmUgaXMgdG8gcHJvcGFnYXRlIGEgbmFuIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4uIEJlY2F1c2UgdGhlXG4gICBmaXJzdCBjb21wYXJpc29uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLCBpdCBzdWZmaWNlcyB0b1xuICAgY2hlY2sgaWYgeCBpcyBuYW4uIFRoZW4sIHdoZW4geCBpcyBuYW4gb3IgYm90aCB4IGFuZCB5IGFyZSBuYW4sIHdlIHJldHVybiB4ID0gbmFuOyBhbmRcbiAgIHdoZW4geSBpcyBuYW4gYnV0IG5vdCB4LCB3ZSByZXR1cm4geSA9IG5hbi5cblxuICAgVGhlcmUgYXJlIHZhcmlvdXMgd2F5cyB0byBpbXBsZW1lbnQgdGhlc2UgZnVuY3Rpb25zLiAgVGhlIGJlbmNobWFyayBiZWxvdyBzaG93cyBhIGZld1xuICAgZGlmZmVyZW50IHZlcnNpb25zLiAgVGhpcyBiZW5jaG1hcmsgd2FzIHJ1biBvdmVyIGFuIGFycmF5IG9mIHJhbmRvbSBmbG9hdHMgKG5vbmUgb2ZcbiAgIHdoaWNoIGFyZSBuYW4pLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi40MnVzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMi4wMnVzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS44OHVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG5cbiAgIFRoZSBiZW5jaG1hcmsgYmVsb3cgd2FzIHJ1biB3aGVuIHggPiB5IGlzIGFsd2F5cyB0cnVlIChhZ2Fpbiwgbm8gbmFuIHZhbHVlcykuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjgzdXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjk3dXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjU2dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiopXG5sZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbmxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJ1ZmZlcl9pbnRmXG5pbmNsdWRlIENhbWwuQnVmZmVyXG5cbmxldCBjb250ZW50c19ieXRlcyA9IHRvX2J5dGVzXG5sZXQgYWRkX3N1YnN0cmluZyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YnN0cmluZyB0IHMgcG9zIGxlblxubGV0IGFkZF9zdWJieXRlcyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YmJ5dGVzIHQgcyBwb3MgbGVuXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3N0cmluZyAoY29udGVudHMgdClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IEJ5dGVzLmNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgQ2FtbC5CdWZmZXIuYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQ2FtbC5CdWZmZXIpIChUb19ieXRlcylcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID0gQ2FtbC5QcmludGV4Yy5yYXdfYmFja3RyYWNlXG5cbmxldCBlbGlkZSA9IHJlZiBmYWxzZVxubGV0IGVsaWRlZF9tZXNzYWdlID0gXCI8YmFja3RyYWNlIGVsaWRlZCBpbiB0ZXN0PlwiXG5cbmxldCBnZXQgPyhhdF9tb3N0X251bV9mcmFtZXMgPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIENhbWwuUHJpbnRleGMuZ2V0X2NhbGxzdGFjayBhdF9tb3N0X251bV9mcmFtZXNcbjs7XG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIGlmICFlbGlkZSB0aGVuIGVsaWRlZF9tZXNzYWdlIGVsc2UgQ2FtbC5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyB0XG47O1xuXG5sZXQgdG9fc3RyaW5nX2xpc3QgdCA9IFN0cmluZy5zcGxpdF9saW5lcyAodG9fc3RyaW5nIHQpXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkxpc3QgKExpc3QubWFwICh0b19zdHJpbmdfbGlzdCB0KSB+ZjooZnVuIHggLT4gU2V4cC5BdG9tIHgpKVxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBzZXRfcmVjb3JkaW5nID0gQ2FtbC5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG4gIGxldCBhbV9yZWNvcmRpbmcgPSBDYW1sLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiAgbGV0IG1vc3RfcmVjZW50ICgpID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKVxuXG4gIGxldCBtb3N0X3JlY2VudF9mb3JfZXhuIGV4biA9XG4gICAgaWYgRXhuLmlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuIHRoZW4gU29tZSAobW9zdF9yZWNlbnQgKCkpIGVsc2UgTm9uZVxuICA7O1xuXG4gICgqIFdlIHR1cm4gb24gYmFja3RyYWNlcyBieSBkZWZhdWx0IGlmIE9DQU1MUlVOUEFSQU0gZG9lc24ndCBleHBsaWNpdGx5IG1lbnRpb24gdGhlbS4gKilcbiAgbGV0IG1heWJlX3NldF9yZWNvcmRpbmcgKCkgPVxuICAgIGxldCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgPVxuICAgICAgbWF0Y2ggU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSB4IC0+IExpc3QuZXhpc3RzIChTdHJpbmcuc3BsaXQgeCB+b246JywnKSB+ZjooU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiYlwiKVxuICAgIGluXG4gICAgaWYgbm90IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyB0aGVuIHNldF9yZWNvcmRpbmcgdHJ1ZVxuICA7O1xuXG4gICgqIHRoZSBjYWxsZXIgc2V0IHNvbWV0aGluZywgdGhleSBhcmUgcmVzcG9uc2libGUgKilcblxuICBsZXQgd2l0aF9yZWNvcmRpbmcgYiB+ZiA9XG4gICAgbGV0IHNhdmVkID0gYW1fcmVjb3JkaW5nICgpIGluXG4gICAgc2V0X3JlY29yZGluZyBiO1xuICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gc2V0X3JlY29yZGluZyBzYXZlZClcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBFeG4ubWF5YmVfc2V0X3JlY29yZGluZyAoKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIHRoZSB0b3BsZXZlbCBvZiB0aGUgQmFzZSBsaWJyYXJ5OyBpdCdzIHdoYXQgeW91IGdldCB3aGVuIHlvdSB3cml0ZVxuICAgIFtvcGVuIEJhc2VdLlxuXG4gICAgVGhlIGdvYWwgb2YgQmFzZSBpcyBib3RoIHRvIGJlIGEgbW9yZSBjb21wbGV0ZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIHJpY2hlciBBUElzLFxuICAgIGFuZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gaXRzIGRlc2lnbi4gRm9yIGluc3RhbmNlLCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeVxuICAgIHNvbWUgdGhpbmdzIGhhdmUgbW9kdWxlcyBhbmQgb3RoZXJzIGRvbid0OyBpbiBCYXNlLCBldmVyeXRoaW5nIGlzIGEgbW9kdWxlLlxuXG4gICAgQmFzZSBleHRlbmRzIHNvbWUgbW9kdWxlcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIGxpa2UgW0FycmF5XSxcbiAgICBbQnVmZmVyXSwgW0J5dGVzXSwgW0NoYXJdLCBbSGFzaHRibF0sIFtJbnQzMl0sIFtJbnQ2NF0sIFtMYXp5XSwgW0xpc3RdLCBbTWFwXSxcbiAgICBbTmF0aXZlaW50XSwgW1ByaW50Zl0sIFtSYW5kb21dLCBbU2V0XSwgW1N0cmluZ10sIFtTeXNdLCBhbmQgW1VjaGFyXS4gT25lIGtleVxuICAgIGRpZmZlcmVuY2UgaXMgdGhhdCBCYXNlIGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMgYXMgbXVjaCBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbmRcbiAgICBpbnN0ZWFkIG1ha2VzIGhlYXZ5IHVzZSBvZiB0aGUgW1Jlc3VsdF0gdHlwZSwgYXMgaW46XG5cbiAgICB7WyB0eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYiBdfVxuXG4gICAgQmFzZSBhbHNvIGFkZHMgZW50aXJlbHkgbmV3IG1vZHVsZXMsIG1vc3Qgbm90YWJseTpcblxuICAgIC0gW0NvbXBhcmFibGVdLCBbQ29tcGFyYXRvcl0sIGFuZCBbQ29tcGFyaXNvbnNdIGluIGxpZXUgb2YgcG9seW1vcnBoaWMgY29tcGFyZS5cbiAgICAtIFtDb250YWluZXJdLCB3aGljaCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGFjcm9zcyBjb250YWluZXItbGlrZSBkYXRhXG4gICAgICBzdHJ1Y3R1cmVzIChhcnJheXMsIGxpc3RzLCBzdHJpbmdzKS5cbiAgICAtIFtSZXN1bHRdLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSwgc3VwcG9ydGluZyB0aGUgb3ItZXJyb3IgcGF0dGVybi5cbiopXG5cbigqXyBXZSBoaWRlIHRoaXMgZnJvbSB0aGUgd2ViIGRvY3MgYmVjYXVzZSB0aGUgbGluZSB3cmFwcGluZyBpcyBiYWQsIG1ha2luZyBpdFxuICBwcmV0dHkgbXVjaCBpbnNjcnV0YWJsZS4gKilcbigqKi8qKilcblxuKCogVGhlIGludGVudCBpcyB0byBzaGFkb3cgYWxsIG9mIElOUklBJ3Mgc3RhbmRhcmQgbGlicmFyeS4gIE1vZHVsZXMgYmVsb3cgd291bGQgY2F1c2VcbiAgIGNvbXBpbGF0aW9uIGVycm9ycyB3aXRob3V0IGJlaW5nIHJlbW92ZWQgZnJvbSBbU2hhZG93X3N0ZGxpYl0gYmVmb3JlIGluY2x1c2lvbi4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgKCogTW9kdWxlcyBkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW5fY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLkluX2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBPdXRfY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLk91dF9jaGFubmVsXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0XG4gICgqIFN1cHBvcnQgZm9yIGdlbmVyYXRlZCBsZXhlcnMgKilcbiAgd2l0aCBtb2R1bGUgTGV4aW5nIDo9IFNoYWRvd19zdGRsaWIuTGV4aW5nXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmKSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiovKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQnVmZmVyID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEV4blxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNoZXIgPSBIYXNoZXJcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIFBvbHkgPSBQb2x5XG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSA9IFBvbHkgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTExXSB1c2UgW1BvbHldIGluc3RlYWRcIl1cblxubW9kdWxlIFBvcGNvdW50ID0gUG9wY291bnRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIHRoZSBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRmID0gUHJpbnRmXG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgUXVldWUgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSA9IFJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFNlcXVlbmNlID0gU2VxdWVuY2Vcbm1vZHVsZSBTZXQgPSBTZXRcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFN0YWNrID0gU3RhY2tcbm1vZHVsZSBTdGFnZWQgPSBTdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN5cyA9IFN5c1xubW9kdWxlIFQgPSBUXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaXQgPSBVbml0XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50XG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG4oKiBBdm9pZCBhIGxldmVsIG9mIGluZGlyZWN0aW9uIGZvciB1c2VzIG9mIHRoZSBzaWduYXR1cmVzIGRlZmluZWQgaW4gW1RdLiAqKVxuaW5jbHVkZSBUXG5cbigqIFRoaXMgaXMgYSBoYWNrIHNvIHRoYXQgb2RvYyBjcmVhdGVzIGJldHRlciBkb2N1bWVudGF0aW9uLiAqKVxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwX3dpdGhfY29tcGFyYWJsZSAoKiogQGlubGluZSAqKVxuZW5kXG5cbigqKi8qKilcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzID0gc3RydWN0XG4gIG1vZHVsZSBGaWVsZHNsaWIgPSBGaWVsZHNsaWJcbiAgbW9kdWxlIFBweF9oYXNoX2xpYiA9IFBweF9oYXNoX2xpYlxuICBtb2R1bGUgVmFyaWFudHNsaWIgPSBWYXJpYW50c2xpYlxuICBtb2R1bGUgUHB4X2NvbXBhcmVfbGliID0gUHB4X2NvbXBhcmVfbGliXG4gIG1vZHVsZSBQcHhfZW51bWVyYXRlX2xpYiA9IFBweF9lbnVtZXJhdGVfbGliXG5cbiAgbGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldIGFuZCBbcmVmXSBzaW5jZSB0aGVzZSB0eXBlcyBhcmUgbXV0YWJsZS4gKilcbiAgdHlwZSAnYSBhcnJheSA9ICdhIEFycmF5LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYXJyYXkgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gaW50ID0gQXJyYXkuY29tcGFyZVxuICBsZXQgZXF1YWxfYXJyYXkgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGJvb2wgPSBBcnJheS5lcXVhbFxuXG4gIGxldCBhcnJheV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBhcnJheSA9XG4gICAgQXJyYXkudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfYXJyYXkgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBBcnJheS5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKGFycmF5X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBhcnJheSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gQXJyYXkudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBib29sID0gQm9vbC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Jvb2wgPSAoQm9vbC5jb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludClcbiAgbGV0IGVxdWFsX2Jvb2wgPSAoQm9vbC5lcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2Jvb2wgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBCb29sLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Jvb2wgOiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBCb29sLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYm9vbF9vZl9zZXhwID0gKEJvb2wudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJvb2wpXG4gIGxldCBzZXhwX29mX2Jvb2wgPSAoQm9vbC5zZXhwX29mX3QgOiBib29sIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQm9vbC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2NoYXIgPSAoQ2hhci5jb21wYXJlIDogY2hhciAtPiBjaGFyIC0+IGludClcbiAgbGV0IGVxdWFsX2NoYXIgPSAoQ2hhci5lcXVhbCA6IGNoYXIgLT4gY2hhciAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2NoYXIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBDaGFyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2NoYXIgOiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBDaGFyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgY2hhcl9vZl9zZXhwID0gKENoYXIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGNoYXIpXG4gIGxldCBzZXhwX29mX2NoYXIgPSAoQ2hhci5zZXhwX29mX3QgOiBjaGFyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQ2hhci50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBleG4gPSBFeG4udCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl9leG4gPSAoRXhuLnNleHBfb2ZfdCA6IGV4biAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGZsb2F0ID0gRmxvYXQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9mbG9hdCA9IChGbG9hdC5jb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50KVxuICBsZXQgZXF1YWxfZmxvYXQgPSAoRmxvYXQuZXF1YWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2Zsb2F0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEZsb2F0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Zsb2F0IDogZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEZsb2F0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgZmxvYXRfb2Zfc2V4cCA9IChGbG9hdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gZmxvYXQpXG4gIGxldCBzZXhwX29mX2Zsb2F0ID0gKEZsb2F0LnNleHBfb2ZfdCA6IGZsb2F0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBGbG9hdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQgPSBJbnQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQgPSAoSW50LmNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludClcbiAgbGV0IGVxdWFsX2ludCA9IChJbnQuZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBJbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50IDogaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnRfb2Zfc2V4cCA9IChJbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludClcbiAgbGV0IHNleHBfb2ZfaW50ID0gKEludC5zZXhwX29mX3QgOiBpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDMyID0gSW50MzIudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQzMiA9IChJbnQzMi5jb21wYXJlIDogaW50MzIgLT4gaW50MzIgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50MzIgPSAoSW50MzIuZXF1YWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludDMyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDMyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDMyIDogaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDMyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50MzJfb2Zfc2V4cCA9IChJbnQzMi50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50MzIpXG4gIGxldCBzZXhwX29mX2ludDMyID0gKEludDMyLnNleHBfb2ZfdCA6IGludDMyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQzMi50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50NjQgPSAoSW50NjQuY29tcGFyZSA6IGludDY0IC0+IGludDY0IC0+IGludClcbiAgbGV0IGVxdWFsX2ludDY0ID0gKEludDY0LmVxdWFsIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQ2NCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQ2NC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQ2NCA6IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQ2NC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDY0X29mX3NleHAgPSAoSW50NjQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDY0KVxuICBsZXQgc2V4cF9vZl9pbnQ2NCA9IChJbnQ2NC5zZXhwX29mX3QgOiBpbnQ2NCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50NjQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAtPiBpbnQgPSBMaXN0LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAtPiBib29sID0gTGlzdC5lcXVhbFxuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgbGlzdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBMaXN0Lmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgbGlzdCA9XG4gICAgTGlzdC50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9saXN0IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGxpc3QgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBMaXN0LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAobGlzdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBsaXN0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gTGlzdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA9IChOYXRpdmVpbnQuY29tcGFyZSA6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5lcXVhbCA6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9uYXRpdmVpbnQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IE5hdGl2ZWludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9vZl9zZXhwID0gKE5hdGl2ZWludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gbmF0aXZlaW50KVxuICBsZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LnNleHBfb2ZfdCA6IG5hdGl2ZWludCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgbGV0IChuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgTmF0aXZlaW50LnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uIC0+IGludCA9XG4gICAgT3B0aW9uLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uIC0+IGJvb2wgPVxuICAgIE9wdGlvbi5lcXVhbFxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBvcHRpb25cbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgT3B0aW9uLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBvcHRpb24gPVxuICAgIE9wdGlvbi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9vcHRpb24gOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2Egb3B0aW9uIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgT3B0aW9uLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAob3B0aW9uX3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBvcHRpb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IE9wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHJlZiA9ICdhIFJlZi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGludCA9IFJlZi5jb21wYXJlXG4gIGxldCBlcXVhbF9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gYm9vbCA9IFJlZi5lcXVhbFxuXG4gIGxldCByZWZfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgcmVmID1cbiAgICBSZWYudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfcmVmIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHJlZiAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIFJlZi5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKHJlZl9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSByZWYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZWYudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9zdHJpbmcgPSAoU3RyaW5nLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgbGV0IGVxdWFsX3N0cmluZyA9IChTdHJpbmcuZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfc3RyaW5nIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBTdHJpbmcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfc3RyaW5nIDogc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBTdHJpbmcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzdHJpbmdfb2Zfc2V4cCA9IChTdHJpbmcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHN0cmluZylcbiAgbGV0IHNleHBfb2Zfc3RyaW5nID0gKFN0cmluZy5zZXhwX29mX3QgOiBzdHJpbmcgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ieXRlcyA9IChCeXRlcy5jb21wYXJlIDogYnl0ZXMgLT4gYnl0ZXMgLT4gaW50KVxuICBsZXQgZXF1YWxfYnl0ZXMgPSAoQnl0ZXMuZXF1YWwgOiBieXRlcyAtPiBieXRlcyAtPiBib29sKVxuICBsZXQgYnl0ZXNfb2Zfc2V4cCA9IChCeXRlcy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYnl0ZXMpXG4gIGxldCBzZXhwX29mX2J5dGVzID0gKEJ5dGVzLnNleHBfb2ZfdCA6IGJ5dGVzIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCeXRlcy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3VuaXQgPSAoVW5pdC5jb21wYXJlIDogdW5pdCAtPiB1bml0IC0+IGludClcbiAgbGV0IGVxdWFsX3VuaXQgPSAoVW5pdC5lcXVhbCA6IHVuaXQgLT4gdW5pdCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX3VuaXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBVbml0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3VuaXQgOiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBVbml0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdW5pdF9vZl9zZXhwID0gKFVuaXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHVuaXQpXG4gIGxldCBzZXhwX29mX3VuaXQgPSAoVW5pdC5zZXhwX29mX3QgOiB1bml0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVW5pdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIEZvcm1hdCBzdHVmZiAqKVxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG5cbiAgKCoqIExpc3Qgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBMaXN0LkluZml4XG5cbiAgKCoqIEludCBvcGVyYXRvcnMgYW5kIGNvbXBhcmlzb25zICopXG5cbiAgaW5jbHVkZSBJbnQuT1xuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAoKiogRmxvYXQgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBGbG9hdC5PX2RvdFxuXG4gICgqIFRoaXMgaXMgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gYmUgb3B0aW1pemVkIGF3YXkgaW4gbW9yZSBjb250ZXh0cy4gKilcblxuICAoKiogUmV2ZXJzZSBhcHBsaWNhdGlvbiBvcGVyYXRvci4gW3ggfD4gZyB8PiBmXSBpcyBlcXVpdmFsZW50IHRvIFtmIChnICh4KSldLiAqKVxuICBleHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4gICgqKiBBcHBsaWNhdGlvbiBvcGVyYXRvci4gW2cgQEAgZiBAQCB4XSBpcyBlcXVpdmFsZW50IHRvIFtnIChmICh4KSldLiAqKVxuICBleHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4gICgqKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuICAoKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuICBleHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBleHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIGV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4gICgqIFRoaXMgbXVzdCBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBmb3IgdGhlIHdhcm5pbmdzIHRvIHdvcmsgcHJvcGVybHkuICopXG4gIGV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbiAgKCoqIENvbW1vbiBzdHJpbmcgb3BlcmF0aW9ucyAqKVxuICBsZXQgKCBeICkgPSBTdHJpbmcuKCBeIClcblxuICAoKiogUmVmZXJlbmNlIG9wZXJhdGlvbnMgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUgYW5kXG4gICAgIHRvIGtlZXAgcmVmZXJlbmNlIHVuYm94aW5nIHdvcmtpbmcgKilcbiAgZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG4gIGV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuICAoKiogUGFpciBvcGVyYXRpb25zICopXG5cbiAgbGV0IGZzdCA9IGZzdFxuICBsZXQgc25kID0gc25kXG5cbiAgKCoqIEV4Y2VwdGlvbnMgc3R1ZmYgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBtYXkgcmV3cml0ZSAnJXJhaXNlJyBhcyAnJXJlcmFpc2UnLiAqKVxuICBleHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG4gIGxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG4gIGxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gICgqKiBNaXNjICopXG5cbiAgbGV0IHBoeXNfZXF1YWwgPSBwaHlzX2VxdWFsXG5cbiAgZXh0ZXJuYWwgZm9yY2UgOiAnYSBMYXp5LnQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG5pbmNsdWRlIENvbnRhaW5lcl9pbnRmLkV4cG9ydCAoKiogQGlubGluZSAqKVxuXG5leGNlcHRpb24gTm90X2ZvdW5kX3MgPSBOb3RfZm91bmRfc1xuXG4oKiBXZSBwZXJmb3JtIHRoZXNlIHNpZGUgZWZmZWN0cyBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0aGVtIHRvIHJ1biBmb3IgYW55IGNvZGUgdGhhdCB1c2VzXG4gICBbQmFzZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0Jhc2VdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgIHByb2dyYW0gcmVmZXJzIHRvIGF0IGxlYXN0IG9uZSB2YWx1ZSBkaXJlY3RseSBpbiBbQmFzZV07IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgIFtCYXNlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBCYWNrdHJhY2UuaW5pdGlhbGl6ZV9tb2R1bGUgKClcbiIsIm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5lbmRcbiIsImluY2x1ZGUgT2NhbWxfY29tbW9uLkxvY2F0aW9uXG5cbmxldCBzZXRfaW5wdXRfbmFtZSBuYW1lID0gaW5wdXRfbmFtZSA6PSBuYW1lXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgb2xkX3QgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopID0ge1xuICAgIGxvYzogdDtcbiAgICBtc2c6IHN0cmluZztcbiAgICBzdWI6IG9sZF90IGxpc3Q7XG4gICAgaWZfaGlnaGxpZ2h0OiBzdHJpbmc7XG4gIH1cblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydF9raW5kICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydF9raW5kICopID1cbiAgfCBSZXBvcnRfZXJyb3JcbiAgfCBSZXBvcnRfd2FybmluZyBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfd2FybmluZ19hc19lcnJvciBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnQgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0X2FzX2Vycm9yIG9mIHN0cmluZ1xuXG4gIHR5cGUgbG9jYXRpb25fbXNnID0gKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkgbG9jXG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0ICopID0ge1xuICAgIGtpbmQgOiBsb2NhdGlvbl9yZXBvcnRfa2luZDtcbiAgICBtYWluIDogbG9jYXRpb25fbXNnO1xuICAgIHN1YiA6IGxvY2F0aW9uX21zZyBsaXN0O1xuICB9XG5cbiAgdHlwZSB0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IG9sZF90ICopXG4gICgqKiBPbiBvY2FtbCA+PSA0LjA4OiBbdF0gaXMgYSBbbG9jYXRpb25fcmVwb3J0XSBmb3Igd2hpY2ggW2xvY2F0aW9uX3JlcG9ydF9raW5kXSBtdXN0IGJlIFtSZXBvcnRfZXJyb3JdLiAqKVxuXG4gIHR5cGUgdmVyc2lvbl9zcGVjaWZpY190ID0gW2BOZXdfZXJyb3Igb2YgbG9jYXRpb25fcmVwb3J0IHwgYE9sZF9lcnJvciBvZiBvbGRfdF1cblxuICBsZXQgdmVyc2lvbl9zcGVjaWZpY190X29mX3QgOiB0IC0+IHZlcnNpb25fc3BlY2lmaWNfdCA9IGZ1biB4IC0+XG4gICAgKCpJRl9BVF9MRUFTVCA0MDggYE5ld19lcnJvciB4ICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IGBPbGRfZXJyb3IgeCAqKVxuXG4gIGxldCBpc193ZWxsX2Zvcm1lZCBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IGtpbmQgPSBSZXBvcnRfZXJyb3I7IF8gfSAtPiB0cnVlXG4gICAgfCBgTmV3X2Vycm9yIF8gLT4gZmFsc2VcbiAgICB8IGBPbGRfZXJyb3IgXyAtPiB0cnVlXG5cbiAgbGV0IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgKG1zZyA6IGxvY2F0aW9uX21zZykgPSBGb3JtYXQuYXNwcmludGYgXCIldFwiIG1zZy50eHRcblxuICBsZXQgbWFpbl9tc2cgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgeyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIG1haW47IGxvYyA9IG1haW4ubG9jIH1cbiAgICB8IGBPbGRfZXJyb3IgeyBtc2c7IGxvYzsgXyB9IC0+IHsgdHh0ID0gbXNnOyBsb2MgfVxuXG4gIGxldCBzdWJfbXNncyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBlcnIgLT4geyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIGVycjsgbG9jID0gZXJyLmxvYyB9KVxuICAgICAgICAgIHN1YlxuICAgIHwgYE9sZF9lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIGxldCByZWMgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgfCB7IGxvYzsgbXNnOyBzdWI7IF8gfSA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgKHsgdHh0ID0gbXNnOyBsb2MgfSA6OiBhY2MpIChzdWIgQCB0YWlsKVxuICAgICAgICBpblxuICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIFtdIHN1YlxuXG4gIGxldCBvZl9leG4gZXhuID1cbiAgICAoKklGX0FUX0xFQVNUIDQwNiBtYXRjaCBlcnJvcl9vZl9leG4gZXhuIHdpdGggfCBTb21lIChgT2sgZSkgLT4gU29tZSBlIHwgTm9uZSB8IFNvbWUgYEFscmVhZHlfZGlzcGxheWVkIC0+IE5vbmUgKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDYgZXJyb3Jfb2ZfZXhuIGV4biopXG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyA9IHsgZXJyb3Igd2l0aCBtc2cgfVxuXG4gIGxldCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cgPVxuICAgIGxldCB0eHQgcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgbXNnIGluXG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCB0eHQgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbXNnIGVycm9yIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnKilcblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBzdWIgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB7IGxvYzsgdHh0IH0gLT4geyBsb2M7IG1zZyA9IHR4dDsgc3ViID0gW107IGlmX2hpZ2hsaWdodCA9IHR4dCB9KVxuICAgICAgICBzdWJcbiAgICBpblxuICAgIHsgbG9jOyBtc2cgPSB0eHQ7IHN1YjsgaWZfaGlnaGxpZ2h0ID0gdHh0IH1cblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBta190eHQgeCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiB4IGluXG4gICAgbGV0IG1rIGxvYyB4ID0geyBsb2M7IHR4dCA9IG1rX3R4dCB4IH0gaW5cbiAgICB7XG4gICAgICBraW5kID0gUmVwb3J0X2Vycm9yO1xuICAgICAgbWFpbiA9IG1rIGxvYyB0eHQ7XG4gICAgICBzdWIgPSBMaXN0Lm1hcCAoZnVuIHsgbG9jOyB0eHQgfSAtPiBtayBsb2MgdHh0KSBzdWI7XG4gICAgfVxuXG4gIGxldCBtYWtlIH5zdWIgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgbXNnKilcblxuICBsZXQgX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jID0geyBlcnJvciB3aXRoIGxvYyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyA9XG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCBsb2MgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbG9jIGVycm9yIGxvYyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jKilcbmVuZFxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgbXNnID0gcmFpc2VfZXJyb3JmID9sb2MgbXNnXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcblxubGV0IHBhcnNlIHMgPVxuICAoKklGX05PVF9BVF9MRUFTVCA0MTEgcGFyc2UgcyAqKVxuICAoKklGX0FUX0xFQVNUIDQxMSBPY2FtbF9jb21tb24uUGFyc2UubG9uZ2lkZW50IEBAIExleGluZy5mcm9tX3N0cmluZyBAQCBzICopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzFcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzFcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgR2F6YWduYWlyZSwgT0NhbWxQcm8gICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBGYWJyaWNlIExlIEZlc3NhbnQsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIEhvbmdibyBaaGFuZywgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9yaWdpbmFsIENvZGUgZnJvbSBCZXItbWV0YW9jYW1sLCBtb2RpZmllZCBmb3IgMy4xMi4wIGFuZCBmaXhlZCAqKVxuKCogUHJpbnRpbmcgY29kZSBleHByZXNzaW9ucyAqKVxuKCogQXV0aG9yczogIEVkIFBpenppLCBGYWJyaWNlIExlIEZlc3NhbnQgKilcbigqIEV4dGVuc2l2ZSBSZXdyaXRlOiBIb25nYm8gWmhhbmc6IFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICopXG4oKiBUT0RPIG1vcmUgZmluZS1ncmFpbmVkIHByZWNlZGVuY2UgcHJldHR5LXByaW50aW5nICopXG5cbm9wZW4gQXN0XzQxNFxub3BlbiBBc3R0eXBlc1xub3BlbiBGb3JtYXRcbm9wZW4gTG9jYXRpb25cbm9wZW4gTG9uZ2lkZW50XG5vcGVuIFBhcnNldHJlZVxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG5lbmRcblxubGV0IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gIGluXG4gIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXNcbiAgICAgICAgLT5cbiAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICBpblxuICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgaW5cbiAgbG9vcCB0XG5cbmxldCBwcmVmaXhfc3ltYm9scyA9IFsgJyEnOyAnPyc7ICd+JyBdXG5cbmxldCBpbmZpeF9zeW1ib2xzID1cbiAgWyAnPSc7ICc8JzsgJz4nOyAnQCc7ICdeJzsgJ3wnOyAnJic7ICcrJzsgJy0nOyAnKic7ICcvJzsgJyQnOyAnJSc7ICcjJyBdXG5cbigqIHR5cGUgZml4aXR5ID0gSW5maXh8IFByZWZpeCAgKilcbmxldCBzcGVjaWFsX2luZml4X3N0cmluZ3MgPVxuICBbIFwiYXNyXCI7IFwibGFuZFwiOyBcImxvclwiOyBcImxzbFwiOyBcImxzclwiOyBcImx4b3JcIjsgXCJtb2RcIjsgXCJvclwiOyBcIjo9XCI7IFwiIT1cIjsgXCI6OlwiIF1cblxubGV0IGxldG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2wnXG4gICYmIHMuWzFdID0gJ2UnXG4gICYmIHMuWzJdID0gJ3QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxubGV0IGFuZG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2EnXG4gICYmIHMuWzFdID0gJ24nXG4gICYmIHMuWzJdID0gJ2QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxuKCogZGV0ZXJtaW5lcyBpZiB0aGUgc3RyaW5nIGlzIGFuIGluZml4IHN0cmluZy5cbiAgIGNoZWNrcyBiYWNrd2FyZHMsIGZpcnN0IGFsbG93aW5nIGEgcmVuYW1pbmcgcG9zdGZpeCAoXCJfMTAyXCIpIHdoaWNoXG4gICBtYXkgaGF2ZSByZXN1bHRlZCBmcm9tIFBleHAgLT4gVGV4cCAtPiBQZXhwIHRyYW5zbGF0aW9uLCB0aGVuIGNoZWNraW5nXG4gICBpZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSB2YWxpZCBpbmZpeFxuICAgY2hhcmFjdGVycy4gKilcbmxldCBmaXhpdHlfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+IGBOb3JtYWxcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcyBzcGVjaWFsX2luZml4X3N0cmluZ3MgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gaW5maXhfc3ltYm9scyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBwcmVmaXhfc3ltYm9scyAtPiBgUHJlZml4IHNcbiAgfCBzIHdoZW4gcy5bMF0gPSAnLicgLT4gYE1peGZpeCBzXG4gIHwgcyB3aGVuIGxldG9wIHMgLT4gYExldG9wIHNcbiAgfCBzIHdoZW4gYW5kb3AgcyAtPiBgQW5kb3Agc1xuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgdmlld19maXhpdHlfb2ZfZXhwID0gZnVuY3Rpb25cbiAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICBmaXhpdHlfb2Zfc3RyaW5nIGxcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IGlzX2luZml4ID0gZnVuY3Rpb24gYEluZml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19taXhmaXggPSBmdW5jdGlvbiBgTWl4Zml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19rd2RvcCA9IGZ1bmN0aW9uIGBMZXRvcCBfIHwgYEFuZG9wIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBmaXJzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bMF0gPSBjXG5sZXQgbGFzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bU3RyaW5nLmxlbmd0aCBzdHIgLSAxXSA9IGNcbmxldCBmaXJzdF9pc19pbiBjcyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBMaXN0Lm1lbSBzdHIuWzBdIGNzXG5cbigqIHdoaWNoIGlkZW50aWZpZXJzIGFyZSBpbiBmYWN0IG9wZXJhdG9ycyBuZWVkaW5nIHBhcmVudGhlc2VzICopXG5sZXQgbmVlZHNfcGFyZW5zIHR4dCA9XG4gIGxldCBmaXggPSBmaXhpdHlfb2Zfc3RyaW5nIHR4dCBpblxuICBpc19pbmZpeCBmaXggfHwgaXNfbWl4Zml4IGZpeCB8fCBpc19rd2RvcCBmaXhcbiAgfHwgZmlyc3RfaXNfaW4gcHJlZml4X3N5bWJvbHMgdHh0XG5cbigqIHNvbWUgaW5maXhlcyBuZWVkIHNwYWNlcyBhcm91bmQgcGFyZW5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBjb21tZW50XG4gICBzeW50YXggKilcbmxldCBuZWVkc19zcGFjZXMgdHh0ID0gZmlyc3RfaXMgJyonIHR4dCB8fCBsYXN0X2lzICcqJyB0eHRcbmxldCBzdHJpbmdfbG9jIHBwZiB4ID0gZnByaW50ZiBwcGYgXCIlc1wiIHgudHh0XG5cbigqIGFkZCBwYXJlbnRoZXNlcyB0byBiaW5kZXJzIHdoZW4gdGhleSBhcmUgaW4gZmFjdCBpbmZpeCBvciBwcmVmaXggb3BlcmF0b3JzICopXG5sZXQgcHJvdGVjdF9pZGVudCBwcGYgdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIihAOyVzQDspXCJcbiAgICBlbHNlIFwiKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCB0eHRcblxubGV0IHByb3RlY3RfbG9uZ2lkZW50IHBwZiBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJWEuJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiJWEuKEA7JXNAOylcIlxuICAgIGVsc2UgXCIlYS4oJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dFxuXG50eXBlIHNwYWNlX2Zvcm1hdHRlciA9ICh1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB1bml0KSBmb3JtYXRcblxubGV0IG92ZXJyaWRlID0gZnVuY3Rpb24gT3ZlcnJpZGUgLT4gXCIhXCIgfCBGcmVzaCAtPiBcIlwiXG5cbigqIHZhcmlhbmNlIGVuY29kaW5nOiBuZWVkIHRvIHN5bmMgdXAgd2l0aCB0aGUgW3BhcnNlci5tbHldICopXG5sZXQgdHlwZV92YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgTm9WYXJpYW5jZSAtPiBcIlwiXG4gIHwgQ292YXJpYW50IC0+IFwiK1wiXG4gIHwgQ29udHJhdmFyaWFudCAtPiBcIi1cIlxuXG5sZXQgdHlwZV9pbmplY3Rpdml0eSA9IGZ1bmN0aW9uIE5vSW5qZWN0aXZpdHkgLT4gXCJcIiB8IEluamVjdGl2ZSAtPiBcIiFcIlxuXG50eXBlIGNvbnN0cnVjdCA9XG4gIFsgYGNvbnMgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYGxpc3Qgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYG5pbFxuICB8IGBub3JtYWxcbiAgfCBgc2ltcGxlIG9mIExvbmdpZGVudC50XG4gIHwgYHR1cGxlIF1cblxubGV0IHZpZXdfZXhwciB4ID1cbiAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIigpXCI7IF8gfSwgXykgLT4gYHR1cGxlXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBgbmlsXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIF8pIC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZXhwIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgIFNvbWUgeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgZTE7IGUyIF07IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAgICApO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGxvb3AgZTIgKGUxIDo6IGFjYylcbiAgICAgICAgfCBlIC0+IChMaXN0LnJldiAoZSA6OiBhY2MpLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgbHMsIGIgPSBsb29wIHggW10gaW5cbiAgICAgIGlmIGIgdGhlbiBgbGlzdCBscyBlbHNlIGBjb25zIGxzXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHgsIE5vbmUpIC0+IGBzaW1wbGUgeC50eHRcbiAgfCBfIC0+IGBub3JtYWxcblxubGV0IGlzX3NpbXBsZV9jb25zdHJ1Y3QgOiBjb25zdHJ1Y3QgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gIHwgYG5pbCB8IGB0dXBsZSB8IGBsaXN0IF8gfCBgc2ltcGxlIF8gLT4gdHJ1ZVxuICB8IGBjb25zIF8gfCBgbm9ybWFsIC0+IGZhbHNlXG5cbmxldCBwcCA9IGZwcmludGZcblxudHlwZSBjdHh0ID0geyBwaXBlIDogYm9vbDsgc2VtaSA6IGJvb2w7IGlmdGhlbmVsc2UgOiBib29sIH1cblxubGV0IHJlc2V0X2N0eHQgPSB7IHBpcGUgPSBmYWxzZTsgc2VtaSA9IGZhbHNlOyBpZnRoZW5lbHNlID0gZmFsc2UgfVxubGV0IHVuZGVyX3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGUgPSB0cnVlIH1cbmxldCB1bmRlcl9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pID0gdHJ1ZSB9XG5sZXQgdW5kZXJfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZSA9IHRydWUgfVxuKCpcbmxldCByZXNldF9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pPWZhbHNlIH1cbmxldCByZXNldF9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlPWZhbHNlIH1cbmxldCByZXNldF9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlPWZhbHNlIH1cbiopXG5cbmxldCBsaXN0IDpcbiAgICAgICdhLlxuICAgICAgP3NlcDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIGxpc3QgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/c2VwID9maXJzdCA/bGFzdCBmdSBmIHhzIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBzZXAgPSBtYXRjaCBzZXAgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiQCBcIiA6IF8gZm9ybWF0NikgaW5cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICB8IHhzIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgICAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgICAgICBmdSBmIHg7XG4gICAgICAgICAgICAgIHBwIGYgc2VwO1xuICAgICAgICAgICAgICBsb29wIGYgeHNcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICAgIGxvb3AgZiB4cztcbiAgICAgICAgcHAgZiBsYXN0XG4gIGluXG4gIGF1eCBmIHhzXG5cbmxldCBvcHRpb24gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBvcHRpb24gLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/Zmlyc3QgP2xhc3QgZnUgZiBhIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICBmdSBmIHg7XG4gICAgICBwcCBmIGxhc3RcblxubGV0IHBhcmVuIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICBib29sIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/KGZpcnN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSA/KGxhc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpIGIgZnUgZiB4IC0+XG4gIGlmIGIgdGhlbiAoXG4gICAgcHAgZiBcIihcIjtcbiAgICBwcCBmIGZpcnN0O1xuICAgIGZ1IGYgeDtcbiAgICBwcCBmIGxhc3Q7XG4gICAgcHAgZiBcIilcIilcbiAgZWxzZSBmdSBmIHhcblxubGV0IHJlYyBsb25naWRlbnQgZiA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcHJvdGVjdF9pZGVudCBmIHNcbiAgfCBMZG90ICh5LCBzKSAtPiBwcm90ZWN0X2xvbmdpZGVudCBmIGxvbmdpZGVudCB5IHNcbiAgfCBMYXBwbHkgKHksIHMpIC0+IHBwIGYgXCIlYSglYSlcIiBsb25naWRlbnQgeSBsb25naWRlbnQgc1xuXG5sZXQgbG9uZ2lkZW50X2xvYyBmIHggPSBwcCBmIFwiJWFcIiBsb25naWRlbnQgeC50eHRcblxubGV0IGNvbnN0YW50IGYgPSBmdW5jdGlvblxuICB8IFBjb25zdF9jaGFyIGkgLT4gcHAgZiBcIiVDXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIE5vbmUpIC0+IHBwIGYgXCIlU1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBTb21lIGRlbGltKSAtPiBwcCBmIFwieyVzfCVzfCVzfVwiIGRlbGltIGkgZGVsaW1cbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG5cbigqIHRyYWlsaW5nIHNwYWNlKilcbmxldCBtdXRhYmxlX2ZsYWcgZiA9IGZ1bmN0aW9uIEltbXV0YWJsZSAtPiAoKSB8IE11dGFibGUgLT4gcHAgZiBcIm11dGFibGVAO1wiXG5sZXQgdmlydHVhbF9mbGFnIGYgPSBmdW5jdGlvbiBDb25jcmV0ZSAtPiAoKSB8IFZpcnR1YWwgLT4gcHAgZiBcInZpcnR1YWxAO1wiXG5cbigqIHRyYWlsaW5nIHNwYWNlIGFkZGVkICopXG5sZXQgcmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+ICgpIHwgUmVjdXJzaXZlIC0+IHBwIGYgXCJyZWMgXCJcblxubGV0IG5vbnJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiBwcCBmIFwibm9ucmVjIFwiIHwgUmVjdXJzaXZlIC0+ICgpXG5cbmxldCBkaXJlY3Rpb25fZmxhZyBmID0gZnVuY3Rpb25cbiAgfCBVcHRvIC0+IHBwIGYgXCJ0b0AgXCJcbiAgfCBEb3dudG8gLT4gcHAgZiBcImRvd250b0AgXCJcblxubGV0IHByaXZhdGVfZmxhZyBmID0gZnVuY3Rpb24gUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwicHJpdmF0ZUAgXCJcbmxldCBpdGVyX2xvYyBmIGN0eHQgeyB0eHQ7IGxvYyA9IF8gfSA9IGYgY3R4dCB0eHRcbmxldCBjb25zdGFudF9zdHJpbmcgZiBzID0gcHAgZiBcIiVTXCIgc1xuXG5sZXQgdHl2YXIgcHBmIHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBzLlsxXSA9ICdcXCcnIHRoZW5cbiAgICAoKiB3aXRob3V0IHRoZSBzcGFjZSwgdGhpcyB3b3VsZCBiZSBwYXJzZWQgYXNcbiAgICAgICBhIGNoYXJhY3RlciBsaXRlcmFsICopXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJyAlc1wiIHNcbiAgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCInJXNcIiBzXG5cbmxldCB0eXZhcl9sb2MgZiBzdHIgPSB0eXZhciBmIHN0ci50eHRcbmxldCBzdHJpbmdfcXVvdCBmIHggPSBwcCBmIFwiYCVzXCIgeFxuXG4oKiBjIFsnYSwnYl0gKilcbmxldCByZWMgY2xhc3NfcGFyYW1zX2RlZiBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiWyVhXSBcIiAoKiBzcGFjZSAqKSAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+c2VwOlwiLFwiKSBsXG5cbmFuZCB0eXBlX3dpdGhfbGFiZWwgY3R4dCBmIChsYWJlbCwgYykgPVxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBjb3JlX3R5cGUxIGN0eHQgZiBjICgqIG90aGVyd2lzZSBwYXJlbnRoZXNpemUgKilcbiAgfCBMYWJlbGxlZCBzIC0+IHBwIGYgXCIlczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuICB8IE9wdGlvbmFsIHMgLT4gcHAgZiBcIj8lczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuXG5hbmQgY29yZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjb3JlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHR5cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2Fycm93IChsLCBjdDEsIGN0MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGN0MSkgKGNvcmVfdHlwZSBjdHh0KSBjdDJcbiAgICB8IFB0eXBfYWxpYXMgKGN0LCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSBjdCB0eXZhciBzXG4gICAgfCBQdHlwX3BvbHkgKFtdLCBjdCkgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgIHwgUHR5cF9wb2x5IChzbCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYVwiXG4gICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgbClcbiAgICAgICAgICAgICAgbClcbiAgICAgICAgICBzbCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSB4XG5cbmFuZCBjb3JlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFB0eXBfdmFyIHMgLT4gdHl2YXIgZiBzXG4gICAgfCBQdHlwX3R1cGxlIGwgLT4gcHAgZiBcIiglYSlcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgIHwgUHR5cF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmICgqIFwiJWElYUA7XCIgKikgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IFsgeCBdIC0+IHBwIGYgXCIlYUA7XCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+IGxpc3QgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKUA7XCIgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLEA7XCIgZiBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF92YXJpYW50IChsLCBjbG9zZWQsIGxvdykgLT5cbiAgICAgICAgbGV0IGZpcnN0X2lzX2luaGVyaXQgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgeyBQYXJzZXRyZWUucHJmX2Rlc2MgPSBSaW5oZXJpdCBfIH0gOjogXyAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBlX3ZhcmlhbnRfaGVscGVyIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBSdGFnIChsLCBfLCBjdGwpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAOyVhQF1cIiAoaXRlcl9sb2Mgc3RyaW5nX3F1b3QpIGxcbiAgICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiJlwiKSBjdGwpXG4gICAgICAgICAgICAgICAgY3RsIChhdHRyaWJ1dGVzIGN0eHQpIHgucHJmX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IFJpbmhlcml0IGN0IC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+WyVhJWFdQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCAobCwgY2xvc2VkKSB3aXRoXG4gICAgICAgICAgICB8IFtdLCBDbG9zZWQgLT4gKClcbiAgICAgICAgICAgIHwgW10sIE9wZW4gLT4gcHAgZiBcIj5cIiAoKiBDZiAjNzIwMDogcHJpbnQgWz5dIGNvcnJlY3RseSAqKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVzQDslYVwiXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggKGNsb3NlZCwgbG93KSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgTm9uZSAtPiBpZiBmaXJzdF9pc19pbmhlcml0IHRoZW4gXCIgfFwiIGVsc2UgXCJcIlxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIFNvbWUgXyAtPiBcIjxcIiAoKiBGSVhNRSBkZXN1Z2FyIHRoZSBzeW50YXggc3VnYXIqKVxuICAgICAgICAgICAgICAgICAgfCBPcGVuLCBfIC0+IFwiPlwiKVxuICAgICAgICAgICAgICAgICAgKGxpc3QgdHlwZV92YXJpYW50X2hlbHBlciB+c2VwOlwiQDs8MSAtMj58IFwiKVxuICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICBsXG4gICAgICAgICAgKGZ1biBmIGxvdyAtPlxuICAgICAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBbXSB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSB4cyAtPiBwcCBmIFwiPkAgJWFcIiAobGlzdCBzdHJpbmdfcXVvdCkgeHMpXG4gICAgICAgICAgbG93XG4gICAgfCBQdHlwX29iamVjdCAobCwgbykgLT5cbiAgICAgICAgbGV0IGNvcmVfZmllbGRfdHlwZSBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgT3RhZyAobCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIENmICM3MjAwICopXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzOiAlYUAgJWFAIEBdXCIgbC50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgICAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG9mX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IE9pbmhlcml0IGN0IC0+IHBwIGYgXCJAWzxob3YyPiVhQCBAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpZWxkX3ZhciBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEFzdHR5cGVzLkNsb3NlZCAtPiAoKVxuICAgICAgICAgIHwgQXN0dHlwZXMuT3BlbiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBwcCBmIFwiLi5cIiB8IF8gLT4gcHAgZiBcIiA7Li5cIilcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+PEAgJWElYUAgPiBAXVwiXG4gICAgICAgICAgKGxpc3QgY29yZV9maWVsZF90eXBlIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbCBmaWVsZF92YXIgb1xuICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgIHwgUHR5cF9jbGFzcyAobGksIGwpIC0+XG4gICAgICAgICgqRklYTUUqKVxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYSMlYUBdXCJcbiAgICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF9wYWNrYWdlIChsaWQsIGNzdHJzKSAtPiAoXG4gICAgICAgIGxldCBhdXggZiAocywgY3QpID1cbiAgICAgICAgICBwcCBmIFwidHlwZSAlYUAgPUAgJWFcIiBsb25naWRlbnRfbG9jIHMgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjc3RycyB3aXRoXG4gICAgICAgIHwgW10gLT4gcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhQCB3aXRoQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgICAgIChsaXN0IGF1eCB+c2VwOlwiQCBhbmRAIFwiKSBjc3RycylcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGNvcmVfdHlwZSBjdHh0KSBmIHhcblxuKCoqKioqKioqKioqKioqKioqKioqcGF0dGVybioqKioqKioqKioqKioqKioqKioqKVxuKCogYmUgY2F1dGlvdXMgd2hlbiB1c2UgW3BhdHRlcm5dLCBbcGF0dGVybjFdIGlzIHByZWZlcnJlZCAqKVxuYW5kIHBhdHRlcm4gY3R4dCBmIHggPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKHBhdHRlcm4gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHBhdF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2FsaWFzIChwLCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwIHByb3RlY3RfaWRlbnQgcy50eHRcbiAgICB8IF8gLT4gcGF0dGVybl9vciBjdHh0IGYgeFxuXG5hbmQgcGF0dGVybl9vciBjdHh0IGYgeCA9XG4gIGxldCByZWMgbGVmdF9hc3NvY2lhdGl2ZSB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfb3IgKHAxLCBwMik7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgbGVmdF9hc3NvY2lhdGl2ZSBwMSAocDIgOjogYWNjKVxuICAgIHwgeCAtPiB4IDo6IGFjY1xuICBpblxuICBtYXRjaCBsZWZ0X2Fzc29jaWF0aXZlIHggW10gd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHBhdHRlcm4xIGN0eHQgZiB4XG4gIHwgb3JwYXRzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCB+c2VwOlwiQCB8IFwiIChwYXR0ZXJuMSBjdHh0KSkgb3JwYXRzXG5cbmFuZCBwYXR0ZXJuMSBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBsZXQgcmVjIHBhdHRlcm5fbGlzdF9oZWxwZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCB7XG4gICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgIFNvbWUgKFtdLCB7IHBwYXRfZGVzYyA9IFBwYXRfdHVwbGUgWyBwYXQxOyBwYXQyIF07IF8gfSkgKTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYTo6JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0MSBwYXR0ZXJuX2xpc3RfaGVscGVyIHBhdDIgKCpSQSopXG4gICAgfCBwIC0+IHBhdHRlcm4xIGN0eHQgZiBwXG4gIGluXG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF92YXJpYW50IChsLCBTb21lIHApIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBfKSAtPlxuICAgICAgICBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKCh7IHR4dDsgXyB9IGFzIGxpKSwgcG8pIC0+IChcbiAgICAgICAgaWYgKCogRklYTUUgVGhlIHRoaXJkIGZpZWxkIGFsd2F5cyBmYWxzZSAqKVxuICAgICAgICAgICB0eHQgPSBMaWRlbnQgXCI6OlwiIHRoZW4gcHAgZiBcIiVhXCIgcGF0dGVybl9saXN0X2hlbHBlciB4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBwbyB3aXRoXG4gICAgICAgICAgfCBTb21lIChbXSwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDslYVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IFNvbWUgKHZsLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAICh0eXBlICVhKUA7JWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAgXCIgc3RyaW5nX2xvYylcbiAgICAgICAgICAgICAgICB2bCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpKVxuICAgIHwgXyAtPiBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX3BhdHRlcm4gY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKChcIigpXCIgfCBcIltdXCIpIGFzIHgpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgIHBwIGYgXCIlc1wiIHhcbiAgICB8IFBwYXRfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gcHJvdGVjdF9pZGVudCBmIHR4dFxuICAgIHwgUHBhdF9hcnJheSBsIC0+IHBwIGYgXCJAWzwyPlt8JWF8XUBdXCIgKGxpc3QgKHBhdHRlcm4xIGN0eHQpIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gTm9uZSB9IC0+IHBwIGYgXCIobW9kdWxlQCBfKUAgXCJcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gU29tZSBzIH0gLT4gcHAgZiBcIihtb2R1bGVAICVzKUAgXCIgc1xuICAgIHwgUHBhdF90eXBlIGxpIC0+IHBwIGYgXCIjJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQcGF0X3JlY29yZCAobCwgY2xvc2VkKSAtPiAoXG4gICAgICAgIGxldCBsb25naWRlbnRfeF9wYXR0ZXJuIGYgKGxpLCBwKSA9XG4gICAgICAgICAgbWF0Y2ggKGxpLCBwKSB3aXRoXG4gICAgICAgICAgfCAoIHsgdHh0ID0gTGlkZW50IHM7IF8gfSxcbiAgICAgICAgICAgICAgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9IClcbiAgICAgICAgICAgIHdoZW4gcyA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2xvc2VkIHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzwyPntAOyVhQDt9QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbFxuICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+e0A7JWE7X31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsKVxuICAgIHwgUHBhdF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwxPiglYSlAXVwiIChsaXN0IH5zZXA6XCIsQDtcIiAocGF0dGVybjEgY3R4dCkpIGwgKCogbGV2ZWwxKilcbiAgICB8IFBwYXRfY29uc3RhbnQgYyAtPiBwcCBmIFwiJWFcIiBjb25zdGFudCBjXG4gICAgfCBQcGF0X2ludGVydmFsIChjMSwgYzIpIC0+IHBwIGYgXCIlYS4uJWFcIiBjb25zdGFudCBjMSBjb25zdGFudCBjMlxuICAgIHwgUHBhdF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+KCVhQDs6QDslYSlAXVwiIChwYXR0ZXJuMSBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBwYXRfbGF6eSBwIC0+IHBwIGYgXCJAWzwyPihsYXp5QDslYSlAXVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBwIC0+IHBwIGYgXCJAWzwyPmV4Y2VwdGlvbkA7JWFAXVwiIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUHBhdF9vcGVuIChsaWQsIHApIC0+XG4gICAgICAgIGxldCB3aXRoX3BhcmVuID1cbiAgICAgICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQcGF0X2FycmF5IF8gfCBQcGF0X3JlY29yZCBfXG4gICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYSBAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgKHBhcmVuIHdpdGhfcGFyZW4gQEAgcGF0dGVybjEgY3R4dClcbiAgICAgICAgICBwXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKHBhdHRlcm4gY3R4dCkgZiB4XG5cbmFuZCBsYWJlbF9leHAgY3R4dCBmIChsLCBvcHQsIHApID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPlxuICAgICAgKCogc2luZ2xlIGNhc2UgcGF0dGVybiBwYXJlbnMgbmVlZGVkIGhlcmUgKilcbiAgICAgIHBwIGYgXCIlYUAgXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgfCBPcHRpb25hbCByZXN0IC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgd2hlbiB0eHQgPSByZXN0IC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+IHBwIGYgXCI/KCVzPUA7JWEpQDtcIiByZXN0IChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lc0AgXCIgcmVzdClcbiAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiPyVzOiglYT1AOyVhKUA7XCIgcmVzdCAocGF0dGVybjEgY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXM6JWFAO1wiIHJlc3QgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApKVxuICB8IExhYmVsbGVkIGwgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSB3aGVuIHR4dCA9IGxcbiAgICAgICAgLT5cbiAgICAgICAgICBwcCBmIFwifiVzQDtcIiBsXG4gICAgICB8IF8gLT4gcHAgZiBcIn4lczolYUA7XCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcClcblxuYW5kIHN1Z2FyX2V4cHIgY3R4dCBmIGUgPVxuICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2FwcGx5XG4gICAgICAgICggeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gaWQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgICAgICBhcmdzIClcbiAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4gKGxhYiwgXykgLT4gbGFiID0gTm9sYWJlbCkgYXJncyAtPiAoXG4gICAgICAgIGxldCBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgc2VwIHJpZ2h0IHByaW50X2luZGV4XG4gICAgICAgICAgICBpbmRpY2VzIHJlbV9hcmdzID1cbiAgICAgICAgICBsZXQgcHJpbnRfcGF0aCBwcGYgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbSAtPiBwcCBwcGYgXCIuJWFcIiBsb25naWRlbnQgbVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggKGFzc2lnbiwgcmVtX2FyZ3MpIHdpdGhcbiAgICAgICAgICB8IGZhbHNlLCBbXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoIHBhdGhfcHJlZml4XG4gICAgICAgICAgICAgICAgbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCB0cnVlLCBbIHYgXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQCA8LUA7PDEgMj4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aFxuICAgICAgICAgICAgICAgIHBhdGhfcHJlZml4IGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodFxuICAgICAgICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSB2O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChpZCwgTGlzdC5tYXAgc25kIGFyZ3MpIHdpdGhcbiAgICAgICAgfCBMaWRlbnQgXCIhXCIsIFsgZSBdIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92PiElYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGU7XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTGRvdCAocGF0aCwgKChcImdldFwiIHwgXCJzZXRcIikgYXMgZnVuYykpLCBhIDo6IG90aGVyX2FyZ3MgLT4gKFxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGZ1bmMgPSBcInNldFwiIGluXG4gICAgICAgICAgICBsZXQgcHJpbnQgPSBwcmludF9pbmRleG9wIGEgTm9uZSBhc3NpZ24gaW5cbiAgICAgICAgICAgIG1hdGNoIChwYXRoLCBvdGhlcl9hcmdzKSB3aXRoXG4gICAgICAgICAgICB8IExpZGVudCBcIkFycmF5XCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLihcIiBcIlwiIFwiKVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGlkZW50IFwiU3RyaW5nXCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLltcIiBcIlwiIFwiXVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTFcIiksIGkxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTEgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkyXCIpLCBpMSA6OiBpMiA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMiBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTNcIiksIGkxIDo6IGkyIDo6IGkzIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyOyBpMyBdIHJlc3RcbiAgICAgICAgICAgIHwgKCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkdlbmFycmF5XCIpLFxuICAgICAgICAgICAgICAgIHsgcGV4cF9kZXNjID0gUGV4cF9hcnJheSBpbmRleGVzOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IDo6IHJlc3RcbiAgICAgICAgICAgICAgKSAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgaW5kZXhlcyByZXN0XG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIHwgKExpZGVudCBzIHwgTGRvdCAoXywgcykpLCBhIDo6IGkgOjogcmVzdCB3aGVuIGZpcnN0X2lzICcuJyBzIC0+XG4gICAgICAgICAgICAoKiBleHRyYWN0IG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgYXNzaWdubWVudCBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXQgXiBcIjwtXCJdLFxuICAgICAgICAgICAgICAgYWNjZXNzIG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldF0gZGlyZWN0bHlcbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBsZXQgbXVsdGlfaW5kaWNlcyA9IFN0cmluZy5jb250YWlucyBzICc7JyBpblxuICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICBtYXRjaCBpLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSBsIHdoZW4gbXVsdGlfaW5kaWNlcyAtPiBsXG4gICAgICAgICAgICAgIHwgXyAtPiBbIGkgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBsYXN0X2lzICctJyBzIGluXG4gICAgICAgICAgICBsZXQga2luZCA9XG4gICAgICAgICAgICAgICgqIGV4dHJhY3QgdGhlIHJpZ2h0IGVuZCBicmFja2V0ICopXG4gICAgICAgICAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGlmIGFzc2lnbiB0aGVuIHMuW24gLSAzXSBlbHNlIHMuW24gLSAxXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgICB8ICcpJyAtPiAoJygnLCBcIilcIilcbiAgICAgICAgICAgICAgfCAnXScgLT4gKCdbJywgXCJdXCIpXG4gICAgICAgICAgICAgIHwgJ30nIC0+ICgneycsIFwifVwiKVxuICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhdGhfcHJlZml4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaWQgd2l0aCBMZG90IChtLCBfKSAtPiBTb21lIG0gfCBfIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCA9IFN0cmluZy5zdWIgcyAwICgxICsgU3RyaW5nLmluZGV4IHMgbGVmdCkgaW5cbiAgICAgICAgICAgIHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBcIjtcIiByaWdodFxuICAgICAgICAgICAgICAoaWYgbXVsdGlfaW5kaWNlcyB0aGVuIGV4cHJlc3Npb24gY3R4dCBlbHNlIHNpbXBsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgIGkgcmVzdFxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmFuZCBleHByZXNzaW9uIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKUAsJWEpXCIgKGV4cHJlc3Npb24gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGV4cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2Z1bmN0aW9uIF8gfCBQZXhwX2Z1biBfIHwgUGV4cF9tYXRjaCBfIHwgUGV4cF90cnkgXyB8IFBleHBfc2VxdWVuY2UgX1xuICAgIHwgUGV4cF9uZXd0eXBlIF9cbiAgICAgIHdoZW4gY3R4dC5waXBlIHx8IGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgKFBleHBfaWZ0aGVuZWxzZSBfIHwgUGV4cF9zZXF1ZW5jZSBfKSB3aGVuIGN0eHQuaWZ0aGVuZWxzZSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9sZXQgXyB8IFBleHBfbGV0bW9kdWxlIF8gfCBQZXhwX29wZW4gXyB8IFBleHBfbGV0ZXhjZXB0aW9uIF9cbiAgICB8IFBleHBfbGV0b3AgX1xuICAgICAgd2hlbiBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfZnVuIChsLCBlMCwgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDslYS0+QDslYUBdXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZTAsIHApXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9uZXd0eXBlIChsaWQsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7KHR5cGVAOyVzKUA7LT5AOyVhQF1cIiBsaWQudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfZnVuY3Rpb24gbCAtPiBwcCBmIFwiQFs8aHY+ZnVuY3Rpb24lYUBdXCIgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX21hdGNoIChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2MD5AWzwyPm1hdGNoICVhQF1AIHdpdGhAXSVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX3RyeSAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8aHYyPnRyeUAgJWFAXUAgQFs8MD53aXRoJWFAXUBdXCJcbiAgICAgICAgICAoKiBcInRyeUA7QFs8Mj4lYUBdQFxcbndpdGhAXFxuJWFcIiopXG4gICAgICAgICAgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9sZXQgKHJmLCBsLCBlKSAtPlxuICAgICAgICAoKiBwcCBmIFwiQFs8Mj5sZXQgJWElYSBpbkA7PDEgLTI+JWFAXVwiXG4gICAgICAgICAgICgqbm8gaW5kZW50YXRpb24gaGVyZSwgYSBuZXcgbGluZSopICopXG4gICAgICAgICgqICAgcmVjX2ZsYWcgcmYgKilcbiAgICAgICAgcHAgZiBcIkBbPDI+JWEgaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ3MgcmVzZXRfY3R4dCkgKHJmLCBsKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXBwbHkgKGUsIGwpIC0+IChcbiAgICAgICAgaWYgbm90IChzdWdhcl9leHByIGN0eHQgZiB4KSB0aGVuXG4gICAgICAgICAgbWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIGUgd2l0aFxuICAgICAgICAgIHwgYEluZml4IHMgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbICgoTm9sYWJlbCwgXykgYXMgYXJnMSk7ICgoTm9sYWJlbCwgXykgYXMgYXJnMikgXSAtPlxuICAgICAgICAgICAgICAgICAgKCogRklYTUUgYXNzb2NpYXRpdml0eSBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gKilcbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQDslc0A7JWFAXVwiXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMSBzXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgYFByZWZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0Lm1lbSBzIFsgXCJ+K1wiOyBcIn4tXCI7IFwifisuXCI7IFwifi0uXCIgXVxuICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgKCogU2VlICM3MjAwOiBhdm9pZCB0dXJuaW5nICh+LSAxKSBpbnRvICgtIDEpIHdoaWNoIGlzXG4gICAgICAgICAgICAgICAgICAgICBwYXJzZWQgYXMgYW4gaW50IGxpdGVyYWwgKilcbiAgICAgICAgICAgICAgICAgIHwgWyAoXywgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0YW50IF8gfSkgXSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgICAgICAgICAgICAgIGVsc2Ugc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIChOb2xhYmVsLCB4KSBdIC0+IHBwIGYgXCJAWzwyPiVzQDslYUBdXCIgcyAoc2ltcGxlX2V4cHIgY3R4dCkgeFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCJcbiAgICAgICAgICAgICAgICAoZnVuIGYgKGUsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGV4cHJlc3Npb24yIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgKCogcmVzZXQgaGVyZSBvbmx5IGJlY2F1c2UgW2Z1bmN0aW9uLG1hdGNoLHRyeSxzZXF1ZW5jZV1cbiAgICAgICAgICAgICAgICAgICAgIGFyZSBsb3dlciBwcmlvcml0eSAqKSlcbiAgICAgICAgICAgICAgICAoZSwgbCkpXG4gICAgfCBQZXhwX2NvbnN0cnVjdCAobGksIFNvbWUgZW8pIHdoZW4gbm90IChpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkpXG4gICAgICAtPiAoXG4gICAgICAgICgqIE5vdCBlZmZpY2llbnQgRklYTUUqKVxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYGNvbnMgbHMgLT4gbGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgZiBscyB+c2VwOlwiQDs6OkA7XCJcbiAgICAgICAgfCBgbm9ybWFsIC0+IHBwIGYgXCJAWzwyPiVhQDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfc2V0ZmllbGQgKGUxLCBsaSwgZTIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhQCA8LUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlMSBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIGUyXG4gICAgfCBQZXhwX2lmdGhlbmVsc2UgKGUxLCBlMiwgZW8pIC0+XG4gICAgICAgICgqIEA7QFs8Mj5lbHNlQCAlYUBdQF0gKilcbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPDI+aWZAICVhQF1AO0BbPDI+dGhlbkAgJWFAXSVhQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlID0gZXhwcmVzc2lvbiAodW5kZXJfaWZ0aGVuZWxzZSBjdHh0KSBpblxuICAgICAgICBwcCBmIGZtdCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTEgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUyXG4gICAgICAgICAgKGZ1biBmIGVvIC0+XG4gICAgICAgICAgICBtYXRjaCBlbyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCJAO0BbPDI+ZWxzZUA7JWFAXVwiIChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICgqIHBwIGYgXCIoKVwiICopKVxuICAgICAgICAgIGVvXG4gICAgfCBQZXhwX3NlcXVlbmNlIF8gLT5cbiAgICAgICAgbGV0IHJlYyBzZXF1ZW5jZV9oZWxwZXIgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9zZXF1ZW5jZSAoZTEsIGUyKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBzZXF1ZW5jZV9oZWxwZXIgKGUxIDo6IGFjYykgZTJcbiAgICAgICAgICB8IHYgLT4gTGlzdC5yZXYgKHYgOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbHN0ID0gc2VxdWVuY2VfaGVscGVyIFtdIHggaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2PiVhQF1cIiAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKSBsc3RcbiAgICB8IFBleHBfbmV3IGxpIC0+IHBwIGYgXCJAWzxob3YyPm5ld0AgJWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2V0aW5zdHZhciAocywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAIDwtQCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9vdmVycmlkZSBsIC0+XG4gICAgICAgICgqIEZJWE1FICopXG4gICAgICAgIGxldCBzdHJpbmdfeF9leHByZXNzaW9uIGYgKHMsIGUpID1cbiAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ezwlYT59QF1cIiAobGlzdCBzdHJpbmdfeF9leHByZXNzaW9uIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBleHBfbGV0bW9kdWxlIChzLCBtZSwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBtb2R1bGVAICVzQCA9QCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV9leHByIHJlc2V0X2N0eHQpIG1lIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChjZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBleGNlcHRpb25AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgICAgICAgIGNkIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXNzZXJ0IGUgLT4gcHAgZiBcIkBbPGhvdjI+YXNzZXJ0QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfbGF6eSBlIC0+IHBwIGYgXCJAWzxob3YyPmxhenlAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICgqIFBleHBfcG9seTogaW1wb3NzaWJsZSBidXQgd2Ugc2hvdWxkIHByaW50IGl0IGFueXdheSwgcmF0aGVyIHRoYW5cbiAgICAgICBhc3NlcnQgZmFsc2UgKilcbiAgICB8IFBleHBfcG9seSAoZSwgTm9uZSkgLT4gcHAgZiBcIkBbPGhvdjI+IXBvbHkhQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfcG9seSAoZSwgU29tZSBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCFwb2x5IUAgJWFAIDogJWEpQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG8ucG9wZW5fZXhwciAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIFNvbWUgZW8pIC0+IHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgfCBQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPkBbPHY+JWFALCVhQF0gaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ19vcCBjdHh0KSBsZXRfXG4gICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmdfb3AgY3R4dCkpXG4gICAgICAgICAgYW5kcyAoZXhwcmVzc2lvbiBjdHh0KSBib2R5XG4gICAgfCBQZXhwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBwcCBmIFwiLlwiXG4gICAgfCBfIC0+IGV4cHJlc3Npb24xIGN0eHQgZiB4XG5cbmFuZCBleHByZXNzaW9uMSBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9vYmplY3QgY3MgLT4gcHAgZiBcIiVhXCIgKGNsYXNzX3N0cnVjdHVyZSBjdHh0KSBjc1xuICAgIHwgXyAtPiBleHByZXNzaW9uMiBjdHh0IGYgeFxuKCogdXNlZCBpbiBbUGV4cF9hcHBseV0gKilcblxuYW5kIGV4cHJlc3Npb24yIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2ZpZWxkIChlLCBsaSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEuJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2VuZCAoZSwgcykgLT4gcHAgZiBcIkBbPGhvdjI+JWEjJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIHMudHh0XG4gICAgfCBfIC0+IHNpbXBsZV9leHByIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgXyB3aGVuIGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSAtPiAoXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgbmlsIC0+IHBwIGYgXCJbXVwiXG4gICAgICAgIHwgYHR1cGxlIC0+IHBwIGYgXCIoKVwiXG4gICAgICAgIHwgYGxpc3QgeHMgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxodjA+WyVhXUBdXCJcbiAgICAgICAgICAgICAgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICAgICAgeHNcbiAgICAgICAgfCBgc2ltcGxlIHggLT4gbG9uZ2lkZW50IGYgeFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9pZGVudCBsaSAtPiBsb25naWRlbnRfbG9jIGYgbGlcbiAgICAoKiAobWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIHggd2l0aCAqKVxuICAgICgqIHxgTm9ybWFsIC0+IGxvbmdpZGVudF9sb2MgZiBsaSAqKVxuICAgICgqIHwgYFByZWZpeCBfIHwgYEluZml4IF8gLT4gcHAgZiBcIiggJWEgKVwiIGxvbmdpZGVudF9sb2MgbGkpICopXG4gICAgfCBQZXhwX2NvbnN0YW50IGMgLT4gY29uc3RhbnQgZiBjXG4gICAgfCBQZXhwX3BhY2sgbWUgLT4gcHAgZiBcIihtb2R1bGVAOyVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUGV4cF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYSlAXVwiIChsaXN0IChzaW1wbGVfZXhwciBjdHh0KSB+c2VwOlwiLEA7XCIpIGxcbiAgICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEgOiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfY29lcmNlIChlLCBjdG8xLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSVhIDo+ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICAob3B0aW9uIChjb3JlX3R5cGUgY3R4dCkgfmZpcnN0OlwiIDogXCIgfmxhc3Q6XCIgXCIpXG4gICAgICAgICAgY3RvMVxuICAgICAgICAgICgqIG5vIHNlcCBoaW50KikgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgIGN0XG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQZXhwX3JlY29yZCAobCwgZW8pIC0+XG4gICAgICAgIGxldCBsb25naWRlbnRfeF9leHByZXNzaW9uIGYgKGxpLCBlKSA9XG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfVxuICAgICAgICAgICAgd2hlbiBsaS50eHQgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPntAOyVhJWFAXUA7fUBdXCIgKCogXCJAWzxob3YyPnslYSVhfUBdXCIgKilcbiAgICAgICAgICAob3B0aW9uIH5sYXN0OlwiIHdpdGhAO1wiIChzaW1wbGVfZXhwciBjdHh0KSlcbiAgICAgICAgICBlb1xuICAgICAgICAgIChsaXN0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gfnNlcDpcIjtAO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfYXJyYXkgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzwyPlt8JWF8XUBdQF1cIlxuICAgICAgICAgIChsaXN0IChzaW1wbGVfZXhwciAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX3doaWxlIChlMSwgZTIpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID0gXCJAWzwyPndoaWxlQDslYUA7ZG9AOyVhQDtkb25lQF1cIiBpblxuICAgICAgICBwcCBmIGZtdCAoZXhwcmVzc2lvbiBjdHh0KSBlMSAoZXhwcmVzc2lvbiBjdHh0KSBlMlxuICAgIHwgUGV4cF9mb3IgKHMsIGUxLCBlMiwgZGYsIGUzKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8aHYyPkBbPDI+Zm9yICVhID1AOyVhQDslYSVhQDtkb0BdQDslYUBdQDtkb25lQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24gY3R4dCBpblxuICAgICAgICBwcCBmIGZtdCAocGF0dGVybiBjdHh0KSBzIGV4cHJlc3Npb24gZTEgZGlyZWN0aW9uX2ZsYWcgZGYgZXhwcmVzc2lvbiBlMlxuICAgICAgICAgIGV4cHJlc3Npb24gZTNcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiBjdHh0KSBmIHhcblxuYW5kIGF0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGF0dHJpYnV0ZSBjdHh0IGYpIGxcbmFuZCBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGl0ZW1fYXR0cmlidXRlIGN0eHQgZikgbFxuXG5hbmQgYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBpdGVtX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IGYgeCA9XG4gICgqIG5vdGU6IHZhbHVlX2Rlc2NyaXB0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgICAgICAgIGJ1dCB0aGV5J3JlIGFscmVhZHkgcHJpbnRlZCBieSB0aGUgY2FsbGVycyB0aGlzIG1ldGhvZCAqKVxuICBwcCBmIFwiQFs8aG92Mj4lYSVhQF1cIiAoY29yZV90eXBlIGN0eHQpIHgucHZhbF90eXBlXG4gICAgKGZ1biBmIHggLT5cbiAgICAgIGlmIHgucHZhbF9wcmltIDw+IFtdIHRoZW5cbiAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobGlzdCBjb25zdGFudF9zdHJpbmcpIHgucHZhbF9wcmltKVxuICAgIHhcblxuYW5kIGV4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID0gcHAgZiBcIkBbPDI+WyUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgaXRlbV9leHRlbnNpb24gY3R4dCBmIChzLCBlKSA9XG4gIHBwIGYgXCJAWzwyPlslJSUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgcHAgZiBcIkBbPGhvdjI+ZXhjZXB0aW9uQCAlYUBdJWFcIlxuICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICB4LnB0eWV4bl9jb25zdHJ1Y3RvciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXhuX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdGZfZGVzYyB3aXRoXG4gIHwgUGN0Zl9pbmhlcml0IGN0IC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlYUBdJWFcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl92YWwgKHMsIG1mLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgQCAlYSVhJXNAIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9tZXRob2QgKHMsIHBmLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgJWEgJWElcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50QCAlYUAgPUAgJWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGN0Zl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGN0Zl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgY3R4dCBmIHsgcGNzaWdfc2VsZiA9IGN0OyBwY3NpZ19maWVsZHMgPSBsOyBfIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3RAWzwxPiVhQF1AICVhQF1AIGVuZEBdXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FueTsgcHR5cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPiAoKVxuICAgICAgfCBjdCAtPiBwcCBmIFwiICglYSlcIiAoY29yZV90eXBlIGN0eHQpIGN0KVxuICAgIGN0XG4gICAgKGxpc3QgKGNsYXNzX3R5cGVfZmllbGQgY3R4dCkgfnNlcDpcIkA7XCIpXG4gICAgbFxuXG4oKiBjYWxsIFtjbGFzc19zaWduYXR1cmVdIGNhbGxlZCBieSBbY2xhc3Nfc2lnbmF0dXJlXSAqKVxuYW5kIGNsYXNzX3R5cGUgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdHlfZGVzYyB3aXRoXG4gIHwgUGN0eV9zaWduYXR1cmUgY3MgLT5cbiAgICAgIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgY3M7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgIHBwIGYgXCIlYSVhJWFcIlxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9hcnJvdyAobCwgY28sIGNsKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjbykgKGNsYXNzX3R5cGUgY3R4dCkgY2xcbiAgfCBQY3R5X2V4dGVuc2lvbiBlIC0+XG4gICAgICBleHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfb3BlbiAobywgZSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX3R5cGUgY3R4dCkgZVxuXG4oKiBbY2xhc3MgdHlwZSBhID0gb2JqZWN0IGVuZF0gKilcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGwgPVxuICBsZXQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBrd2QgZiB4ID1cbiAgICBsZXQgeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9ID0geCBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0AgPUAgJWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiKVxuICAgICAgICB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICB4c1xuXG5hbmQgY2xhc3NfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjZl9kZXNjIHdpdGhcbiAgfCBQY2ZfaW5oZXJpdCAob3ZmLCBjZSwgc28pIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlc0AgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgICAgICAoZnVuIGYgc28gLT5cbiAgICAgICAgICBtYXRjaCBzbyB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHMgLT4gcHAgZiBcIkAgYXMgJXNcIiBzLnR4dClcbiAgICAgICAgc28gKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCVzICVhJXMgPUA7JWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kIHZpcnR1YWwgJWEgJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIHZpcnR1YWwgJWElcyA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgbGV0IGJpbmQgZSA9XG4gICAgICAgIGJpbmRpbmcgY3R4dCBmXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX3BhdCA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBzO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBlO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QlcyAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIHByaXZhdGVfZmxhZyBwZlxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBTb21lIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJXMgOkA7JWE9QDslYVwiIHMudHh0IChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIE5vbmUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIGJpbmQgZVxuICAgICAgICAgIHwgXyAtPiBiaW5kIGUpXG4gICAgICAgIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludCAlYSA9QDslYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgZSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5pdGlhbGl6ZXJAICVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjZl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGNmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgeyBwY3N0cl9zZWxmID0gcDsgcGNzdHJfZmllbGRzID0gbCB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0JWFAOyVhQF1AO2VuZEBdXCJcbiAgICAoZnVuIGYgcCAtPlxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgXyAtPiBwcCBmIFwiICVhXCIgKHBhdHRlcm4gY3R4dCkgcFxuICAgICAgfCBfIC0+IHBwIGYgXCIgKCVhKVwiIChwYXR0ZXJuIGN0eHQpIHApXG4gICAgcFxuICAgIChsaXN0IChjbGFzc19maWVsZCBjdHh0KSlcbiAgICBsXG5cbmFuZCBjbGFzc19leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wY2xfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY2xfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wY2xfZGVzYyB3aXRoXG4gICAgfCBQY2xfc3RydWN0dXJlIGNzIC0+IGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgY3NcbiAgICB8IFBjbF9mdW4gKGwsIGVvLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiZnVuQCAlYUAgLT5AICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZW8sIHApIChjbGFzc19leHByIGN0eHQpIGVcbiAgICB8IFBjbF9sZXQgKHJmLCBsLCBjZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQCBpbkAgJWFcIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgIHwgUGNsX2FwcGx5IChjZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIigoJWEpQCAlYSlcIlxuICAgICAgICAgICgqIENmOiAjNzIwMCAqKSAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgICAgIGNlXG4gICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICBsXG4gICAgfCBQY2xfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBpZiBsIDw+IFtdIHRoZW4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBjbF9jb25zdHJhaW50IChjZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWFAIDpAICVhKVwiIChjbGFzc19leHByIGN0eHQpIGNlIChjbGFzc190eXBlIGN0eHQpIGN0XG4gICAgfCBQY2xfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQY2xfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX2V4cHIgY3R4dCkgZVxuXG5hbmQgbW9kdWxlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtdHlfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBtdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3IgKCkgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChzLCBtdDEpLCBtdDIpIC0+IChcbiAgICAgICAgbWF0Y2ggcy50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXQxXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3JAICglc0AgOkAgJWEpQCAtPkAgJWFAXVwiIG5hbWVcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MSAobW9kdWxlX3R5cGUgY3R4dCkgbXQyKVxuICAgIHwgUG10eV93aXRoIChtdCwgW10pIC0+IG1vZHVsZV90eXBlIGN0eHQgZiBtdFxuICAgIHwgUG10eV93aXRoIChtdCwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIHdpdGhAICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10XG4gICAgICAgICAgKGxpc3QgKHdpdGhfY29uc3RyYWludCBjdHh0KSB+c2VwOlwiQCBhbmRAIFwiKVxuICAgICAgICAgIGxcbiAgICB8IF8gLT4gbW9kdWxlX3R5cGUxIGN0eHQgZiB4XG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQd2l0aF90eXBlIChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2R1bGUgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGUgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcbiAgfCBQd2l0aF90eXBlc3Vic3QgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhIDo9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2RzdWJzdCAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcblxuYW5kIG1vZHVsZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gbW9kdWxlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9hbGlhcyBsaSAtPiBwcCBmIFwiKG1vZHVsZSAlYSlcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPnNpZ0AgJWFAXUAgZW5kQF1cIiAoKiBcIkBbPGhvdj5zaWdAICVhQCBlbmRAXVwiICopXG4gICAgICAgICAgKGxpc3QgKHNpZ25hdHVyZV9pdGVtIGN0eHQpKVxuICAgICAgICAgIHNcbiAgICAgICAgKCogRklYTUUgd3JvbmcgaW5kZW50YXRpb24qKVxuICAgIHwgUG10eV90eXBlb2YgbWUgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCBvZkAgJWFAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG10eV9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAobW9kdWxlX3R5cGUgY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHNpZ25hdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gY3R4dCBmIHggOiB1bml0ID1cbiAgbWF0Y2ggeC5wc2lnX2Rlc2Mgd2l0aFxuICB8IFBzaWdfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc2lnX3R5cGVzdWJzdCBsIC0+XG4gICAgICAoKiBQc2lnX3R5cGVzdWJzdCBpcyBuZXZlciByZWN1cnNpdmUsIGJ1dCB3ZSBzcGVjaWZ5IFtSZWN1cnNpdmVdIGhlcmUgdG9cbiAgICAgICAgIGF2b2lkIHByaW50aW5nIGEgW25vbnJlY10gZmxhZywgd2hpY2ggd291bGQgYmUgcmVqZWN0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICopXG4gICAgICB0eXBlX2RlZl9saXN0IGN0eHQgZiAoUmVjdXJzaXZlLCBmYWxzZSwgbClcbiAgfCBQc2lnX3ZhbHVlIHZkIC0+XG4gICAgICBsZXQgaW50cm8gPSBpZiB2ZC5wdmFsX3ByaW0gPSBbXSB0aGVuIFwidmFsXCIgZWxzZSBcImV4dGVybmFsXCIgaW5cbiAgICAgIHBwIGYgXCJAWzwyPiVzQCAlYUAgOkAgJWFAXSVhXCIgaW50cm8gcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzaWdfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzaWdfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc2lnX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGNsYXNzX2Rlc2NyaXB0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0A7OkA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZXNjcmlwdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzaWdfbW9kdWxlXG4gICAgICAoe1xuICAgICAgICAgcG1kX3R5cGUgPSB7IHBtdHlfZGVzYyA9IFBtdHlfYWxpYXMgYWxpYXM7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcG1kKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIGxvbmdpZGVudF9sb2MgYWxpYXMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHVsZSBwbWQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOkAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2RzdWJzdCBwbXMgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOj1AICVhQF0lYVwiIHBtcy5wbXNfbmFtZS50eHQgbG9uZ2lkZW50X2xvY1xuICAgICAgICBwbXMucG1zX21hbmlmZXN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1zLnBtc19hdHRyaWJ1dGVzXG4gIHwgUHNpZ19vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5vcGVuJXNAICVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzaWdfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgLT5cbiAgICAgIGxldCBtZCA9XG4gICAgICAgIG1hdGNoIG1kIHdpdGggTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogYXN0IGludmFyaWFudCAqKSB8IFNvbWUgbXQgLT4gbXRcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzQCA6PUAgJWFAXSVhXCIgcy50eHQgKG1vZHVsZV90eXBlIGN0eHQpIG1kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc2lnX3JlY21vZHVsZSBkZWNscyAtPlxuICAgICAgbGV0IHJlYyBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgPyhmaXJzdCA9IHRydWUpIGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IHBtZCA6OiB0bCAtPlxuICAgICAgICAgICAgaWYgbm90IGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgcHAgZiBcIkAgQFs8aG92Mj5hbmRAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIH5maXJzdDpmYWxzZSB0bFxuICAgICAgaW5cbiAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiBkZWNsc1xuICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHNpZ19leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgbW9kdWxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBtb2RfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtb2RfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYyPnN0cnVjdEA7QFs8MD4lYUBdQDs8MSAtMj5lbmRAXVwiXG4gICAgICAgICAgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIH5zZXA6XCJAXFxuXCIpXG4gICAgICAgICAgc1xuICAgIHwgUG1vZF9jb25zdHJhaW50IChtZSwgbXQpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYUAgOkAgJWEpQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUgKG1vZHVsZV90eXBlIGN0eHQpIG10XG4gICAgfCBQbW9kX2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgbWUpIC0+IHBwIGYgXCJmdW5jdG9yICgpQDstPkA7JWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKHMsIG10KSwgbWUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5jdG9yQCAoJXNAIDpAICVhKUA7LT5AOyVhXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfYXBwbHkgKG1lMSwgbWUyKSAtPlxuICAgICAgICBwcCBmIFwiKCVhKSglYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUxIChtb2R1bGVfZXhwciBjdHh0KSBtZTJcbiAgICAgICAgKCogQ2Y6ICM3MjAwICopXG4gICAgfCBQbW9kX3VucGFjayBlIC0+IHBwIGYgXCIodmFsQCAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuXG5hbmQgc3RydWN0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHBheWxvYWQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGUsIGF0dHJzKSB9IF0gLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBTdHIgeCAtPiBzdHJ1Y3R1cmUgY3R4dCBmIHhcbiAgfCBQVHlwIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIGNvcmVfdHlwZSBjdHh0IGYgeFxuICB8IFBTaWcgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgc2lnbmF0dXJlIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgTm9uZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4O1xuICAgICAgcHAgZiBcIiB3aGVuIFwiO1xuICAgICAgZXhwcmVzc2lvbiBjdHh0IGYgZVxuXG4oKiB0cmFuc2Zvcm0gW2YgPSBmdW4gZyBoIC0+IC4uXSB0byBbZiBnIGggPSAuLi4gXSBjb3VsZCBiZSBpbXByb3ZlZCAqKVxuYW5kIGJpbmRpbmcgY3R4dCBmIHsgcHZiX3BhdCA9IHA7IHB2Yl9leHByID0geDsgXyB9ID1cbiAgKCogLnB2Yl9hdHRyaWJ1dGVzIGhhdmUgYWxyZWFkeSBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciwgI2JpbmRpbmdzICopXG4gIGxldCByZWMgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBmIHggPVxuICAgIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9mdW4gKGxhYmVsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgICBpZiBsYWJlbCA9IE5vbGFiZWwgdGhlblxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsYWJlbCwgZW8sIHApIHBwX3ByaW50X3BleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgZVxuICAgICAgfCBQZXhwX25ld3R5cGUgKHN0ciwgZSkgLT5cbiAgICAgICAgICBwcCBmIFwiKHR5cGVAICVzKUAgJWFcIiBzdHIudHh0IHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgfCBfIC0+IHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgaW5cbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB0eXZhcnMgaW5cbiAgbGV0IGlzX2Rlc3VnYXJlZF9nYWR0IHAgZSA9XG4gICAgbGV0IGdhZHRfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9ICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgU29tZSAocGF0LCBhcmdzX3R5dmFycywgcnQpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyBnYWR0X2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIGdhZHRfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IGdhZHRfZXhwID0gZ2FkdF9leHAgW10gZSBpblxuICAgIG1hdGNoIChnYWR0X3BhdHRlcm4sIGdhZHRfZXhwKSB3aXRoXG4gICAgfCBTb21lIChwLCBwdF90eXZhcnMsIHB0X2N0KSwgU29tZSAoZV90eXZhcnMsIGUsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlbiBTb21lIChwLCBwdF90eXZhcnMsIGVfY3QsIGUpIGVsc2UgTm9uZVxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IHtcbiAgICAgcHBhdF9kZXNjID1cbiAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwKSApO1xuICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgXztcbiAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0IChjb3JlX3R5cGUgY3R4dCkgdHlwXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGVsc2VcbiAgICBtYXRjaCBpc19kZXN1Z2FyZWRfZ2FkdCBwIHggd2l0aFxuICAgIHwgU29tZSAocCwgW10sIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFNvbWUgKHAsIHR5dmFycywgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiB0eXBlQDslYS5AOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgKGxpc3QgcHBfcHJpbnRfc3RyaW5nIH5zZXA6XCJAO1wiKVxuICAgICAgICAgICh0eXZhcnNfc3RyIHR5dmFycykgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHAsIHR5KTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPiAoXG4gICAgICAgICAgICAoKiBzcGVjaWFsIGNhc2UgZm9yIHRoZSBmaXJzdCopXG4gICAgICAgICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICAgICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJWFAOzpAOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICAgICAgICAgIHR5IChleHByZXNzaW9uIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJWFAOzpAOyVhKUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24geFxuICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeClcblxuKCogW2luXSBpcyBub3QgcHJpbnRlZCAqKVxuYW5kIGJpbmRpbmdzIGN0eHQgZiAocmYsIGwpID1cbiAgbGV0IGJpbmRpbmcga3dkIHJmIGYgeCA9XG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYUBdJWFcIiBrd2QgcmVjX2ZsYWcgcmYgKGJpbmRpbmcgY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB2Yl9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gYmluZGluZyBcImxldFwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKGJpbmRpbmcgXCJsZXRcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZyBcImFuZFwiIE5vbnJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCBiaW5kaW5nX29wIGN0eHQgZiB4ID1cbiAgbWF0Y2ggKHgucGJvcF9wYXQsIHgucGJvcF9leHApIHdpdGhcbiAgfCAoIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBwdmFyOyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICB7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgZXZhcjsgXyB9O1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgXztcbiAgICAgIH0gKVxuICAgIHdoZW4gcHZhciA9IGV2YXIgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVzQF1cIiB4LnBib3Bfb3AudHh0IGV2YXJcbiAgfCBwYXQsIGV4cCAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJWFAOz1AOyVhQF1cIiB4LnBib3Bfb3AudHh0IChwYXR0ZXJuIGN0eHQpIHBhdFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBleHBcblxuYW5kIHN0cnVjdHVyZV9pdGVtIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wc3RyX2Rlc2Mgd2l0aFxuICB8IFBzdHJfZXZhbCAoZSwgYXR0cnMpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj47OyVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfdHlwZSAoXywgW10pIC0+IGFzc2VydCBmYWxzZVxuICB8IFBzdHJfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc3RyX3ZhbHVlIChyZiwgbCkgLT5cbiAgICAgICgqIHBwIGYgXCJAWzxob3YyPmxldCAlYSVhQF1cIiAgcmVjX2ZsYWcgcmYgYmluZGluZ3MgbCAqKVxuICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpXG4gIHwgUHN0cl90eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHN0cl9leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzdHJfbW9kdWxlIHggLT5cbiAgICAgIGxldCByZWMgbW9kdWxlX2hlbHBlciA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKGFyZ19vcHQsIG1lJyk7IHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIChtYXRjaCBhcmdfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgVW5pdCAtPiBwcCBmIFwiKClcIlxuICAgICAgICAgICAgfCBOYW1lZCAocywgbXQpIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglczolYSlcIlxuICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCk7XG4gICAgICAgICAgICBtb2R1bGVfaGVscGVyIG1lJ1xuICAgICAgICB8IG1lIC0+IG1lXG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlICVzJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSB4LnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKGZ1biBmIG1lIC0+XG4gICAgICAgICAgbGV0IG1lID0gbW9kdWxlX2hlbHBlciBtZSBpblxuICAgICAgICAgIG1hdGNoIG1lIHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcG1vZF9kZXNjID1cbiAgICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgIChtZScsICh7IHBtdHlfZGVzYyA9IFBtdHlfaWRlbnQgXyB8IFBtdHlfc2lnbmF0dXJlIF87IF8gfSBhcyBtdCkpO1xuICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIgOkA7JWFAOz1AOyVhQDtcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgICAgbWUnXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCIgPUAgJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUpXG4gICAgICAgIHgucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBtYl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5vcGVuJXNAOyVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl9jbGFzcyBsIC0+IChcbiAgICAgIGxldCBleHRyYWN0X2NsYXNzX2FyZ3MgY2wgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfZnVuIChsLCBlbywgcCwgY2wnKTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIGxvb3AgKChsLCBlbywgcCkgOjogYWNjKSBjbCdcbiAgICAgICAgICB8IGNsIC0+IChMaXN0LnJldiBhY2MsIGNsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXJncywgY2wgPSBsb29wIFtdIGNsIGluXG4gICAgICAgIGxldCBjb25zdHIsIGNsID1cbiAgICAgICAgICBtYXRjaCBjbCB3aXRoXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2NvbnN0cmFpbnQgKGNsJywgY3QpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgKFNvbWUgY3QsIGNsJylcbiAgICAgICAgICB8IF8gLT4gKE5vbmUsIGNsKVxuICAgICAgICBpblxuICAgICAgICAoYXJncywgY29uc3RyLCBjbClcbiAgICAgIGluXG4gICAgICBsZXQgY2xhc3NfY29uc3RyYWludCBmIGN0ID0gcHAgZiBcIjogQFslYUBdIFwiIChjbGFzc190eXBlIGN0eHQpIGN0IGluXG4gICAgICBsZXQgY2xhc3NfZGVjbGFyYXRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgbGV0IGFyZ3MsIGNvbnN0ciwgY2wgPSBleHRyYWN0X2NsYXNzX2FyZ3MgeC5wY2lfZXhwciBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMgJWElYT1AOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dFxuICAgICAgICAgIChsaXN0IChsYWJlbF9leHAgY3R4dCkpXG4gICAgICAgICAgYXJncyAob3B0aW9uIGNsYXNzX2NvbnN0cmFpbnQpIGNvbnN0ciAoY2xhc3NfZXhwciBjdHh0KSBjbFxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHN0cl9jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHN0cl9wcmltaXRpdmUgdmQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmV4dGVybmFsQCAlYUAgOkAgJWFAXSVhXCIgcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzdHJfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX3JlY21vZHVsZSBkZWNscyAtPiAoXG4gICAgICAoKiAzLjA3ICopXG4gICAgICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXM6JWFAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICB8IHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBkZWNscyB3aXRoXG4gICAgICB8ICh7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYilcbiAgICAgICAgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6JWFAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgcG1iIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHN0cl9leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgdHlwZV9wYXJhbSBjdHh0IGYgKGN0LCAoYSwgYikpID1cbiAgcHAgZiBcIiVzJXMlYVwiICh0eXBlX3ZhcmlhbmNlIGEpICh0eXBlX2luamVjdGl2aXR5IGIpIChjb3JlX3R5cGUgY3R4dCkgY3RcblxuYW5kIHR5cGVfcGFyYW1zIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCIlYSBcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixAO1wiKSBsXG5cbmFuZCB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIGV4cG9ydGVkLCBsKSA9XG4gIGxldCB0eXBlX2RlY2wga3dkIHJmIGYgeCA9XG4gICAgbGV0IGVxID1cbiAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0ICYmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gXCJcIlxuICAgICAgZWxzZSBpZiBleHBvcnRlZCB0aGVuIFwiID1cIlxuICAgICAgZWxzZSBcIiA6PVwiXG4gICAgaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMlcyVhQF0lYVwiIGt3ZCBub25yZWNfZmxhZyByZiAodHlwZV9wYXJhbXMgY3R4dClcbiAgICAgIHgucHR5cGVfcGFyYW1zIHgucHR5cGVfbmFtZS50eHQgZXEgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gdHlwZV9kZWNsIFwidHlwZVwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKHR5cGVfZGVjbCBcInR5cGVcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAodHlwZV9kZWNsIFwiYW5kXCIgUmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0IGYgbGJscyA9XG4gIGxldCB0eXBlX3JlY29yZF9maWVsZCBmIHBsZCA9XG4gICAgcHAgZiBcIkBbPDI+JWElczpAOyVhQDslYUBdXCIgbXV0YWJsZV9mbGFnIHBsZC5wbGRfbXV0YWJsZSBwbGQucGxkX25hbWUudHh0XG4gICAgICAoY29yZV90eXBlIGN0eHQpIHBsZC5wbGRfdHlwZSAoYXR0cmlidXRlcyBjdHh0KSBwbGQucGxkX2F0dHJpYnV0ZXNcbiAgaW5cbiAgcHAgZiBcIntAXFxuJWF9XCIgKGxpc3QgdHlwZV9yZWNvcmRfZmllbGQgfnNlcDpcIjtAXFxuXCIpIGxibHNcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICAoKiB0eXBlX2RlY2xhcmF0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgIGJ1dCBpdCdzIGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kICopXG4gIGxldCBwcml2IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfcHJpdmF0ZSB3aXRoIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcIkA7cHJpdmF0ZVwiXG4gIGluXG4gIGxldCBtYW5pZmVzdCBmID1cbiAgICBtYXRjaCB4LnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeSAtPlxuICAgICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCB0aGVuXG4gICAgICAgICAgcHAgZiBcIiV0QDslYVwiIHByaXYgKGNvcmVfdHlwZSBjdHh0KSB5XG4gICAgICAgIGVsc2UgcHAgZiBcIkA7JWFcIiAoY29yZV90eXBlIGN0eHQpIHlcbiAgaW5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGYgcGNkID1cbiAgICBwcCBmIFwifEA7XCI7XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAoIHBjZC5wY2RfbmFtZS50eHQsXG4gICAgICAgIHBjZC5wY2RfdmFycyxcbiAgICAgICAgcGNkLnBjZF9hcmdzLFxuICAgICAgICBwY2QucGNkX3JlcyxcbiAgICAgICAgcGNkLnBjZF9hdHRyaWJ1dGVzIClcbiAgaW5cbiAgbGV0IHJlcHIgZiA9XG4gICAgbGV0IGludHJvIGYgPSBpZiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuICgpIGVsc2UgcHAgZiBcIkA7PVwiIGluXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgeHMgLT5cbiAgICAgICAgbGV0IHZhcmlhbnRzIGZtdCB4cyA9XG4gICAgICAgICAgaWYgeHMgPSBbXSB0aGVuIHBwIGZtdCBcIiB8XCJcbiAgICAgICAgICBlbHNlIHBwIGZtdCBcIkBcXG4lYVwiIChsaXN0IH5zZXA6XCJAXFxuXCIgY29uc3RydWN0b3JfZGVjbGFyYXRpb24pIHhzXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCIldCV0JWFcIiBpbnRybyBwcml2IHZhcmlhbnRzIHhzXG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgIHwgUHR5cGVfcmVjb3JkIGwgLT4gcHAgZiBcIiV0JXRAOyVhXCIgaW50cm8gcHJpdiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGxcbiAgICB8IFB0eXBlX29wZW4gLT4gcHAgZiBcIiV0JXRAOy4uXCIgaW50cm8gcHJpdlxuICBpblxuICBsZXQgY29uc3RyYWludHMgZiA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChjdDEsIGN0MiwgXykgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBjb25zdHJhaW50QCAlYUAgPUAgJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIpXG4gICAgICB4LnB0eXBlX2NzdHJzXG4gIGluXG4gIHBwIGYgXCIldCV0JXRcIiBtYW5pZmVzdCByZXByIGNvbnN0cmFpbnRzXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgeCA9XG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgZiB4ID1cbiAgICBwcCBmIFwiQFxcbnxAOyVhXCIgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KSB4XG4gIGluXG4gIHBwIGYgXCJAWzwyPnR5cGUgJWElYSArPSAlYUAgJWFAXSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIHBwIGYgXCIlYUA7XCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsXCIpIGwpXG4gICAgeC5wdHlleHRfcGFyYW1zIGxvbmdpZGVudF9sb2MgeC5wdHlleHRfcGF0aCBwcml2YXRlX2ZsYWdcbiAgICB4LnB0eWV4dF9wcml2YXRlICgqIENmOiAjNzIwMCAqKVxuICAgIChsaXN0IH5zZXA6XCJcIiBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgeC5wdHlleHRfY29uc3RydWN0b3JzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleHRfYXR0cmlidXRlc1xuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmIChuYW1lLCB2YXJzLCBhcmdzLCByZXMsIGF0dHJzKSA9XG4gIGxldCBuYW1lID0gbWF0Y2ggbmFtZSB3aXRoIFwiOjpcIiAtPiBcIig6OilcIiB8IHMgLT4gcyBpblxuICBsZXQgcHBfdmFycyBmIHZzID1cbiAgICBtYXRjaCB2cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdnMgLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIHZzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcHAgZiBcIiVzJWFAOyVhXCIgbmFtZVxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+ICgpXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPiBwcCBmIFwiQDtvZkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBTb21lIHIgLT5cbiAgICAgIHBwIGYgXCIlczpAOyVhJWFAOyVhXCIgbmFtZSBwcF92YXJzIHZhcnNcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiBjb3JlX3R5cGUxIGN0eHQgZiByXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCJcbiAgICAgICAgICAgICAgICAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIilcbiAgICAgICAgICAgICAgICBsIChjb3JlX3R5cGUxIGN0eHQpIHJcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsIChjb3JlX3R5cGUxIGN0eHQpIHIpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0IGYgeCA9XG4gICgqIENmOiAjNzIwMCAqKVxuICBtYXRjaCB4LnBleHRfa2luZCB3aXRoXG4gIHwgUGV4dF9kZWNsICh2LCBsLCByKSAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAgICh4LnBleHRfbmFtZS50eHQsIHYsIGwsIHIsIHgucGV4dF9hdHRyaWJ1dGVzKVxuICB8IFBleHRfcmViaW5kIGxpIC0+XG4gICAgICBwcCBmIFwiJXNAOz1AOyVhJWFcIiB4LnBleHRfbmFtZS50eHQgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBleHRfYXR0cmlidXRlc1xuXG5hbmQgY2FzZV9saXN0IGN0eHQgZiBsIDogdW5pdCA9XG4gIGxldCBhdXggZiB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9ID1cbiAgICBwcCBmIFwiQDt8IEBbPDI+JWElYUA7LT5AOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwY19saHNcbiAgICAgIChvcHRpb24gKGV4cHJlc3Npb24gY3R4dCkgfmZpcnN0OlwiQDt3aGVuQDtcIilcbiAgICAgIHBjX2d1YXJkXG4gICAgICAoZXhwcmVzc2lvbiAodW5kZXJfcGlwZSBjdHh0KSlcbiAgICAgIHBjX3Joc1xuICBpblxuICBsaXN0IGF1eCBmIGwgfnNlcDpcIlwiXG5cbmFuZCBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCBmIChsLCBlKSA9XG4gIGxldCBzaW1wbGVfbmFtZSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIFNvbWUgbFxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT4gZXhwcmVzc2lvbjIgY3R4dCBmIGUgKCogbGV2ZWwgMiopXG4gIHwgT3B0aW9uYWwgc3RyIC0+XG4gICAgICBpZiBTb21lIHN0ciA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIj8lc1wiIHN0clxuICAgICAgZWxzZSBwcCBmIFwiPyVzOiVhXCIgc3RyIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gIHwgTGFiZWxsZWQgbGJsIC0+XG4gICAgICBpZiBTb21lIGxibCA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIn4lc1wiIGxibFxuICAgICAgZWxzZSBwcCBmIFwifiVzOiVhXCIgbGJsIChzaW1wbGVfZXhwciBjdHh0KSBlXG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgZiB4ID1cbiAgbWF0Y2ggeC5wZGlyYV9kZXNjIHdpdGhcbiAgfCBQZGlyX3N0cmluZyBzIC0+IHBwIGYgXCJAICVTXCIgc1xuICB8IFBkaXJfaW50IChuLCBOb25lKSAtPiBwcCBmIFwiQCAlc1wiIG5cbiAgfCBQZGlyX2ludCAobiwgU29tZSBtKSAtPiBwcCBmIFwiQCAlcyVjXCIgbiBtXG4gIHwgUGRpcl9pZGVudCBsaSAtPiBwcCBmIFwiQCAlYVwiIGxvbmdpZGVudCBsaVxuICB8IFBkaXJfYm9vbCBiIC0+IHBwIGYgXCJAICVzXCIgKHN0cmluZ19vZl9ib29sIGIpXG5cbmxldCB0b3BsZXZlbF9waHJhc2UgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUHRvcF9kZWYgcyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHQpKSBzXG4gICgqIHBwX29wZW5faHZib3ggZiAwOyAqKVxuICAoKiBwcF9wcmludF9saXN0IHN0cnVjdHVyZV9pdGVtIGYgcyA7ICopXG4gICgqIHBwX2Nsb3NlX2JveCBmICgpOyAqKVxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IE5vbmU7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQF1cIiBwZGlyX25hbWUudHh0XG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gU29tZSBwZGlyX2FyZzsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAICVhQF1cIiBwZGlyX25hbWUudHh0IGRpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZ1xuXG5sZXQgZXhwcmVzc2lvbiBmIHggPSBwcCBmIFwiQFslYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgeFxuXG5sZXQgc3RyaW5nX29mX2V4cHJlc3Npb24geCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBleHByZXNzaW9uIGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgc3RyaW5nX29mX3N0cnVjdHVyZSB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIHN0cnVjdHVyZSByZXNldF9jdHh0IGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgdG9wX3BocmFzZSBmIHggPVxuICBwcF9wcmludF9uZXdsaW5lIGYgKCk7XG4gIHRvcGxldmVsX3BocmFzZSBmIHg7XG4gIHBwIGYgXCI7O1wiO1xuICBwcF9wcmludF9uZXdsaW5lIGYgKClcblxubGV0IGNvcmVfdHlwZSA9IGNvcmVfdHlwZSByZXNldF9jdHh0XG5sZXQgcGF0dGVybiA9IHBhdHRlcm4gcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZSA9IHNpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlID0gc3RydWN0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19leHByID0gY2xhc3NfZXhwciByZXNldF9jdHh0XG5sZXQgY2xhc3NfZmllbGQgPSBjbGFzc19maWVsZCByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZSA9IGNsYXNzX3R5cGUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3NpZ25hdHVyZSA9IGNsYXNzX3NpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZV9maWVsZCA9IGNsYXNzX3R5cGVfZmllbGQgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV9leHByID0gbW9kdWxlX2V4cHIgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV90eXBlID0gbW9kdWxlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZV9pdGVtID0gc2lnbmF0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZV9pdGVtID0gc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHR5cGVfZGVjbGFyYXRpb24gPSB0eXBlX2RlY2xhcmF0aW9uIHJlc2V0X2N0eHRcbiIsIigqIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiA0LjE0IGFuZCA1LjAgZnJvbSBhIFBhcnNldHJlZSBwb2ludCBvZiB2aWV3IGFyZSB0aGUgbWFnaWMgbnVtYmVycyAqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LkFzdHR5cGVzXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuUGFyc2V0cmVlXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzJcIlxuZW5kXG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzNcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMVxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAxLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAxLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgbGV0IG1lcmdlX2xvYyBsZWZ0IHJpZ2h0ID1cbiAgICBMb2NhdGlvbi5cbiAgICAgIHsgbG9jX3N0YXJ0ID0gbGVmdC5sb2Nfc3RhcnQ7IGxvY19lbmQgPSByaWdodC5sb2NfZW5kOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gIGluXG4gIGxldCBnaG9zdF9sb2MgbG9jID0geyBsb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCA9XG4gICAgbGV0IHBwYXRfbG9jID1cbiAgICAgIGdob3N0X2xvY1xuICAgICAgICAobWVyZ2VfbG9jIHBhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgaW5cbiAgICB7XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jO1xuICAgICAgcHBhdF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChwYXQsIHR5cCk7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIH1cbiAgaW5cbiAgbGV0IHB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdCBhbmQgcHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgbGV0IGNvbnN0cmFpbl9wYXQgcGF0IHR5cCBleHByID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgaW5cbiAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciA9XG4gICAgbWF0Y2ggKHB2Yl9jb25zdHJhaW50LCBwdmJfcGF0KSB3aXRoXG4gICAgfCAoIFNvbWVcbiAgICAgICAgICAoUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107XG4gICAgICAgICAgICAgIHR5cCA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXA7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogdGhlIHN1Z2FyaW5nIG9mIFtsZXQgeDogdW5pdmFycyAuIHR5cCA9IGV4cCBdIHdhcyBkZXN1Z2FyZWQgdG9cbiAgICAgICAgICAgW2xldCAoeDp1bml2YXJzIC4gdHlwKSA9IGV4cF0gaW4gNS4wIHdoaWNoIGRvZXNuJ3QgZml0IHRoZSBjYXNlIGJlbG93ICopXG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8ICggU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgICAgICAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgICAgICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgICAgICAgIGxldCBkZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAoIExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcsXG4gICAgICAgICAgICAgICAgICAgICAgbGJsX2xzdF9vcHRpb24gKVxuICAgICAgICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCB0XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID1cbiAgICAgICAgICBtYXRjaCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZ2hvc3RfbG9jIHR5cC5wdHlwX2xvY1xuICAgICAgICAgIHwgXyA6OiBfIC0+IGdob3N0X2xvYyBwZXhwX2xvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwX3BvbHkgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cCB3aXRoXG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgICAgICAgICAgKCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMsXG4gICAgICAgICAgICAgICAgICB2YXJpZnlfY29uc3RydWN0b3JzIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB0eXAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IHBwYXRfbG9jID1cbiAgICAgICAgICBnaG9zdF9sb2NcbiAgICAgICAgICAgIChtZXJnZV9sb2MgcHZiX3BhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY1xuICAgICAgICAgICAgICAgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IHsgKGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXBfcG9seSkgd2l0aCBwcGF0X2xvYyB9XG4gICAgICAgIGFuZCBwdmJfZXhwciA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gZXhwciB2YXIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV4cHIgd2l0aFxuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHZhciwgZXhwcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKHB2Yl9leHByLCB0eXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKExpc3QucmV2IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycylcbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTsgdHlwIH0pLCBfIC0+XG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8IFNvbWUgKFB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSksIF8gLT5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb24gaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gZ2hvc3RfbG9jIGNvZXJjaW9uLnB0eXBfbG9jIGluXG4gICAgICAgIGxldCB0eXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZXJjaW9uIHdpdGhcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKFtdLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXAgaW5cbiAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlIChwdmJfZXhwciwgZ3JvdW5kLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBfIC0+IChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IGxvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jID0gbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSA9IGNvcHlfbW9kdWxlX2V4cHIgeDEgaW5cbiAgICAgIGxldCB4MSA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCBsb2MgPSB7IHgxLnBtb2RfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBsb2MgfTtcbiAgICAgICAgICAgICAgICBhdHRyX3BheWxvYWQgPSBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIFtdO1xuICAgICAgICAgICAgICAgIGF0dHJfbG9jID0gbG9jO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6IHgxLnBtb2RfYXR0cmlidXRlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfVxuICAgICAgICB8IF8gLT4geDFcbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIGxldCBlbXB0eV9zdHJ1Y3QgPVxuICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGVtcHR5X3N0cnVjdClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF81MDFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMC5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPiBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgIGluXG4gICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbiAgaW5cbiAgKCogTWF0Y2ggdGhlIGZvcm0gb2YgdGhlIGV4cHIgYW5kIHBhdHRlcm4gdG8gZGVjaWRlIHRoZSB2YWx1ZSBvZlxuICAgICBbcHZiX2NvbnN0cmFpbnRdLiBBZGFwdGVkIGZyb20gT0NhbWwgNS4wIFBQcmludGVyLiAqKVxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHR5dmFycyBpblxuICBsZXQgcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwIGUgPVxuICAgIGxldCB2YWx1ZV9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9IGFzIHR5X2V4dCkgKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBhc3NlcnQgKG1hdGNoIHJ0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKTtcbiAgICAgICAgICBsZXQgdHkgPSBtYXRjaCBhcmdzX3R5dmFycyB3aXRoIFtdIC0+IHJ0IHwgXyAtPiB0eV9leHQgaW5cbiAgICAgICAgICBgVmFyIChwYXQsIGFyZ3NfdHl2YXJzLCBydCwgdHkpXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHBhdCwgcnQpO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGBOb25WYXIgKHBhdCwgcnQpXG4gICAgICB8IF8gLT4gYE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgdmFsdWVfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgdmFsdWVfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHZhbHVlX2V4cCA9IHZhbHVlX2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKHZhbHVlX3BhdHRlcm4sIHZhbHVlX2V4cCkgd2l0aFxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgU29tZSAoZV90eXZhcnMsIGlubmVyX2UsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW5cbiAgICAgICAgICBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHB0X3R5dmFycywgZV9jdCwgaW5uZXJfZSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIHRoZSBleHByZXNzaW9uIGNvbnN0cmFpbnQgYW5kIHRoZSBwYXR0ZXJuIGNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgZG9uJ3QgbWF0Y2gsIGJ1dCB3ZSBzdGlsbCBoYXZlIGEgUHR5cF9wb2x5IHBhdHRlcm4gY29uc3RyYWludCB0aGF0XG4gICAgICAgICAgICAgc2hvdWxkIGJlIHJlc3VnYXJlZCB0byBhIHZhbHVlIGJpbmRpbmcgKilcbiAgICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBfIC0+XG4gICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBOb25WYXIgKHBhdCwgY3QpLCBfIC0+IGBOb25WYXIgKHBhdCwgY3QsIGUpXG4gICAgfCBfIC0+IGBOb25lXG4gIGluXG4gIGxldCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXAgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBTb21lXG4gICAgICAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgIHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gdHlfdmFyczsgdHlwIH0pXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciwgcHZiX2NvbnN0cmFpbnQgPVxuICAgIG1hdGNoIHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcHZiX3BhdCBwdmJfZXhwciB3aXRoXG4gICAgfCBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHR5X3ZhcnMsIHR5cCwgZSkgLT5cbiAgICAgICAgKHAsIGUsIHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cClcbiAgICB8IGBVbml2YXJzIChwYXQsIFtdLCBjdCwgZXhwcikgLT4gKFxuICAgICAgICAoKiBjaGVjayBpZiB3ZSBhcmUgaW4gdGhlIFtsZXQgeCA6IHR5PyA6PiBjb2VyID0gZXhwciBdIGNhc2UgKilcbiAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvZXJjZSAoZXhwciwgZ3IsIGNvZXJjZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3IgaW5cbiAgICAgICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjZSBpblxuICAgICAgICAgICAgbGV0IHB2Yl9jb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChwYXQsIGV4cHIsIHB2Yl9jb25zdHJhaW50KVxuICAgICAgICB8IF8gLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KSlcbiAgICB8IGBVbml2YXJzIChwYXQsIF8sIGN0LCBleHByKSAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpXG4gICAgfCBgTm9uVmFyIChwLCB0eXAsIGUpIC0+IChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgW10gdHlwKVxuICAgIHwgYE5vbmUgLT4gKHB2Yl9wYXQsIHB2Yl9leHByLCBOb25lKVxuICBpblxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSwgaXNfdW5pdCA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyIGFjYyA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gXyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBfIH07XG4gICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBxIC0+XG4gICAgICAgICAgICAgICAgICAoTGlzdC5yZXZfYXBwZW5kIGFjYyBxLCBmYWxzZSlcbiAgICAgICAgICAgICAgfCBoZCA6OiB0bCAtPiBleHRyYWN0X2F0dHIgKGhkIDo6IGFjYykgdGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBiID0gZXh0cmFjdF9hdHRyIFtdIHgxLnBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAgICAgKHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfSwgYilcbiAgICAgICAgfCBfIC0+ICh4MSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgaWYgaXNfdW5pdCB0aGVuIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgICAgIGVsc2VcbiAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzUwMC5QYXJzZXRyZWUuJXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNDE0LlBhcnNldHJlZS4lcyAtPiBBc3RfNTAwLlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIChbXSwgUClcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgQyAodHlwZSBhIGIpIFAgICBTb21lIChbYTsgYl0sIFApXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTIDo9ICAuLi4gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmQgKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzBcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLmxldF87IEFzdF80MTQuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPiAoXG4gICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gICAgICB8IGhkIDo6IF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwidHlwZSBwYXJhbWV0ZXJzIGluIGV4dGVuc2lvbiBjb25zdHJ1Y3RvcnNcIilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBjZF92YXJzIHdpdGhcbiAgfCBbXSAtPlxuICAgICAge1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICB9XG4gIHwgaGQgOjogXyAtPiBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwicGNkX3ZhcnMgaW4gY29uc3RydWN0b3IgZGVjbGFyYXRpb25zXCJcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxNFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDE0LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDE0LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTQuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChbXSwgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnMgPSBbXTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTQuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI5XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAobWF0Y2ggeDAgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgIHwgdHkgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHR5LkFzdF80MTMuQXN0dHlwZXMubG9jXG4gICAgICAgICAgICAgICAgICAgIFwiZXhpc3RlbnRpYWxzIGluIHBhdHRlcm4tbWF0Y2hpbmdcIik7XG4gICAgICAgICAgICAgIGNvcHlfcGF0dGVybiB4MSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlIChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jIFwibW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2NcbiAgICAgICAgXCJkZXN0cnVjdGl2ZSBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Bc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvY1xuICAgICAgICBcImxvY2FsIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IChbXSwgY29weV9wYXR0ZXJuIHgpKSB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjhcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjhcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjdcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjdcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgXywgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIExvY2F0aW9uLm5vbmUsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNlwiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEwXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbm9ueW1vdXMgbGV0IG1vZHVsZVwiXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2NcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbnlueW1vdXMgdW5wYWNrXCIgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDogQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gTG9jYXRpb24udCBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWJfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGJpbmRpbmdcIilcbiAgICAgICAgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPlxuICAgIHN0cmluZyBBc3RfNDA5LkFzdHR5cGVzLmxvYyAqIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIG9wdGlvbiA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiAoeyBsb2MgPSBMb2NhdGlvbi5ub25lOyB0eHQgPSBcIipcIiB9LCBOb25lKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAoIGNvcHlfbG9jIChmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSB4IC0+IHgpIHgwLFxuICAgICAgICBTb21lIChjb3B5X21vZHVsZV90eXBlIHgxKSApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtZF9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFRodSBNYXIgMjEgMDk6NTA6NDIgR01UIDIwMTlcbiAgIE9DYW1sIHdhczpcbiAgIGNvbW1pdCA1NWM5YmE0NjYzNjJmMzAzZWI0ZDVlZDUxMWY2ZmRhMTQyODc5MTM3IChIRUFEIC0+IDQuMDgsIG9yaWdpbi80LjA4KVxuICAgICBBdXRob3I6IE5pY29sw6FzIE9qZWRhIELDpHIgPG4ub2plLmJhckBnbWFpbC5jb20+XG4gICAgIERhdGU6ICAgVHVlIE1hciAxOSAwODoxMTowMiAyMDE5ICswMTAwXG5cbiAgICAgICAgIE1lcmdlIHB1bGwgcmVxdWVzdCAjODUyMSBmcm9tIG5vamIvZml4X3VuaXhfdGVzdHNfNDA4XG5cbiAgICAgICAgIEFjdHVhbGx5IHJ1biBhbGwgbGliLXVuaXggdGVzdHMgWzQuMDhdXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjVcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjVcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOS5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDguQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDguQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDguQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDguQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDguQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOC5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLmxldF87IEFzdF80MDguUGFyc2V0cmVlLmFuZHM7IEFzdF80MDguUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDguQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDguQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFdlZCBBcHIgMTggMTA6MzM6MjkgQlNUIDIwMThcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IGMwYmQ2YTI3ZTEzODkxMTU2MGY0M2RjNzVkNWZkZTJhZGU0ZDZjZmUgKEhFQUQsIHRhZzogNC4wNy4wK2JldGEyKVxuICAgICBBdXRob3I6IERhbWllbiBEb2xpZ2V6IDxkYW1pZW4uZG9saWdlekBpbnJpYS5mcj5cbiAgICAgRGF0ZTogICBUdWUgQXByIDEwIDE0OjUwOjQ4IDIwMTggKzAyMDBcblxuICAgICAgICAgY2hhbmdlIFZFUlNJT04gZm9yIDQuMDcuMCtiZXRhMlxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyM1wiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA4XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbG9jID0gXztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICAoIHBkaXJfbmFtZS5Mb2NhdGlvbi50eHQsXG4gICAgICAgICAgbWF0Y2ggcGRpcl9hcmcgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBhcmcgKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBGcm9tLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBfcGRpcmFfbG9jIH0gLT5cbiAgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQsXG4gICAgICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0b3AgeyBsZXRfOyBhbmRzID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxldF8ucGJvcF9vcC5sb2MgXCJsZXQgb3BlcmF0b3JzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHByZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDEsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcG9mX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBfO1xuICAgICB9IC0+XG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lLCBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZDtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID1cbiAgICAgICAgICAgICAgICBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgbGV0IHgwX2xvYyA9XG4gICAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgICAgfCBbXSAtPiBMb2NhdGlvbi5ub25lXG4gICAgICAgIHwgeyBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7IF8gfSA6OiBfIC0+IHB0eXBlX2xvY1xuICAgICAgaW5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MF9sb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLnBtc19sb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuKCogYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiAgIGZ1blxuICAgICB7IEZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fbG9jID0gcHR5ZXhuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IHB0eWV4bl9hdHRyaWJ1dGVzIH1cbiAgICAgIC0+XG4gICAgIHtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0gKGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYyk7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID1cbiAgICAgICAgIChjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMpXG4gICAgIH0qKVxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9uYW1lID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24udHh0ID0geDA7IExvY2F0aW9uLmxvYyA9IExvY2F0aW9uLm5vbmUgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9hcmcgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uXG4gICAgPVxuICBsZXQgd3JhcCBwZGlyYV9kZXNjID1cbiAgICBTb21lIHsgVG8uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IFRvLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBMb2NhdGlvbi5ub25lIH1cbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gTm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MCkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApIHw+IHdyYXBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKTtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfYm9vbCB4MiwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMpO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDIpO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgeDE7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkKTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gcG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3N0cl9maWVsZHNcbiAgaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpXG4gICAgICAgICAgIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc2lnX2ZpZWxkc1xuICBpblxuXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogXyA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBwdHlleHRfcGF0aC5Mb2NhdGlvbi5sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBNb24gT2N0ICAyIDExOjI1OjU3IENFU1QgMjAxN1xuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgNjU5NDBhMmM2YmU0M2M0MmY3NWM2YzZiMjU1OTc0ZjdlNmRlMDNjYSAoSEVBRCAtPiA0LjA2LCBvcmlnaW4vNC4wNilcbiAgICAgQXV0aG9yOiBDaHJpc3RvcGhlIFJhZmZhbGxpIDxjaHJpc3RvcGhlQHJhZmZhbGxpLmV1PlxuICAgICBEYXRlOiAgIFN1biBPY3QgMSAxODoyNzowNyAyMDE3ICswMjAwXG5cbiAgICAgICAgIGZpeGVkIHBvc2l0aW9uIG9mIGxhc3Qgb3B0aW9uYWwgbGFzdCBzZW1pY29sdW1uIGluIHNlcXVlbmNlICgjMTM4NylcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjJcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDZcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIExvY2F0aW9uLm5vbmUgXCJpbmhlcml0YW5jZSBpbiBvYmplY3QgdHlwZVwiKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLnR4dCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyBleHByZXNzaW9uXCJcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgXzsgXyB9LCB4MCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHgwOyBsb2MgfSwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0geDA7IGxvYyB9LCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgbG9jOyBfIH0sIF94MCkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IGxvYzsgXyB9LCBfeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIHR5cGVcIlxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCB7IHR4dCA9IGNvcHlfbGFiZWwgeDA7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAuRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZSxcbiAgICAgICAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDAgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEuRnJvbS5Bc3R0eXBlcy50eHQpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG5vbG9jIHggPSB7IExvY2F0aW9uLnR4dCA9IHg7IGxvYyA9IExvY2F0aW9uLm5vbmUgfVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbm9sb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChub2xvYyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKG5vbG9jIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4gbm9sb2MgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IG5vbG9jIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA0XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibG9jYWwgZXhjZXB0aW9uc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gcGF0dGVybnNcIlxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgbGFiIG11c3Qgc3RhcnQgd2l0aCAnPycuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG5cbiAgICBOb3RlOiB3aGVuIHVzZWQgdW5kZXIgUHN0cl9wcmltaXRpdmUsIHByaW0gY2Fubm90IGJlIGVtcHR5XG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29yZV90eXBlIGxpc3Q7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoYXJncyA9IFtdLCByZXMgPSBTb21lIFQwKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvcmVfdHlwZSBsaXN0ICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBpbnRcbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMTVcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDAyXG5cbmxldCBpbmplY3RfcHJlZGVmX29wdGlvbiBsYWJlbCBkID1cbiAgbGV0IG9wZW4gVG8gaW5cbiAgbGV0IG9wZW4gUGFyc2V0cmVlIGluXG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIF8gLT5cbiAgICAgIGxldCBsb2MgPSB7IGQucHR5cF9sb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCB0eHQgPSBMb25naWRlbnQuTGRvdCAoTG9uZ2lkZW50LkxpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpIGluXG4gICAgICBsZXQgaWRlbnQgPSB7IExvY2F0aW9uLnR4dDsgbG9jIH0gaW5cbiAgICAgIHtcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkZW50LCBbIGQgXSk7XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cbiAgfCBfIC0+IGRcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidW5yZWFjaGFibGUgcGF0dGVybnNcIlxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IGxvYyB4MCwgY29weV9jb25zdGFudCBsb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCBsb2MgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwic2lnbmF0dXJlcyBpbiBhdHRyaWJ1dGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKGZyb21fbG9jIHBleHRfbmFtZSkgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIChmcm9tX2xvYyBwY2RfbmFtZSkgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSBsaXN0ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPiBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImlubGluZSByZWNvcmRzXCJcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFwiXCJcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBcIj9cIiBeIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCBsb2MgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5Bc3R0eXBlcy5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50MzIgKEludDMyLm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnTCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50NjQgKEludDY0Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbicgLT4gVG8uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IChOYXRpdmVpbnQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBpbnRlZ2VyIGxpdGVyYWxzXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uQXN0dHlwZXMuQ29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT4gVG8uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MFxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBmbG9hdCBsaXRlcmFsc1wiKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyByZWNmbGFnIHR5cGVzID1cbiAgbWF0Y2ggKHJlY2ZsYWcsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcykgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcyAtPiB0eXBlc1xuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCBbXSAtPiBbXVxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB4IDo6IHhzIC0+XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIl9ub25lX1wiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IC0xO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgKHsgVG8uQXN0dHlwZXMudHh0ID0gXCJub25yZWNcIjsgbG9jIH0sIFRvLlBhcnNldHJlZS5QU3RyIFtdKVxuICAgICAgICA6OiB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4c1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBfeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAyXG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgdHlwID1cbiAgbGV0IG9wZW4gRnJvbSBpblxuICBsZXQgb3BlbiBMb25naWRlbnQgaW5cbiAgbWF0Y2ggKGxhYmVsLCB0eXAuUGFyc2V0cmVlLnB0eXBfZGVzYykgd2l0aFxuICB8ICggVG8uQXN0dHlwZXMuT3B0aW9uYWwgXyxcbiAgICAgIEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgICh7IExvY2F0aW9uLnR4dCA9IExkb3QgKExpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpOyBfIH0sIFsgZCBdKSApIC0+XG4gICAgICBkXG4gIHwgXyAtPiB0eXBcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKSxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfYXJncyk7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID1cbiBmdW4geCAtPlxuICBpZiB4IDw+IFwiXCIgdGhlblxuICAgIGlmIHguWzBdID0gJz8nIHRoZW5cbiAgICAgIFRvLkFzdHR5cGVzLk9wdGlvbmFsIChTdHJpbmcuc3ViIHggMSAoU3RyaW5nLmxlbmd0aCB4IC0gMSkpXG4gICAgZWxzZSBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4XG4gIGVsc2UgVG8uQXN0dHlwZXMuTm9sYWJlbFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uQXN0dHlwZXMuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDMyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB4MCwgU29tZSAnbCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQ2NCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgeDAsIFNvbWUgJ0wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgeDAsIFNvbWUgJ24nKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyB0eXBlcyA9XG4gIGxldCBpc19ub25yZWMgKGF0dHIsIF8pID0gYXR0ci5Mb2NhdGlvbi50eHQgPSBcIm5vbnJlY1wiIGluXG4gIG1hdGNoIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcyB3aXRoXG4gIHwgeCA6OiB4cyB3aGVuIExpc3QuZXhpc3RzIGlzX25vbnJlYyB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIC0+XG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKGlzX25vbnJlYyB4KSkgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIChUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHMpXG4gIHwgdHlwZXMgLT4gKFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJsZXQgaXNfa2V5d29yZCA9IGZ1bmN0aW9uXG4gIHwgXCJhbmRcIiAtPiB0cnVlXG4gIHwgXCJhc1wiIC0+IHRydWVcbiAgfCBcImFzc2VydFwiIC0+IHRydWVcbiAgfCBcImJlZ2luXCIgLT4gdHJ1ZVxuICB8IFwiY2xhc3NcIiAtPiB0cnVlXG4gIHwgXCJjb25zdHJhaW50XCIgLT4gdHJ1ZVxuICB8IFwiZG9cIiAtPiB0cnVlXG4gIHwgXCJkb25lXCIgLT4gdHJ1ZVxuICB8IFwiZG93bnRvXCIgLT4gdHJ1ZVxuICB8IFwiZWxzZVwiIC0+IHRydWVcbiAgfCBcImVuZFwiIC0+IHRydWVcbiAgfCBcImV4Y2VwdGlvblwiIC0+IHRydWVcbiAgfCBcImV4dGVybmFsXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiB0cnVlXG4gIHwgXCJmb3JcIiAtPiB0cnVlXG4gIHwgXCJmdW5cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdGlvblwiIC0+IHRydWVcbiAgfCBcImZ1bmN0b3JcIiAtPiB0cnVlXG4gIHwgXCJpZlwiIC0+IHRydWVcbiAgfCBcImluXCIgLT4gdHJ1ZVxuICB8IFwiaW5jbHVkZVwiIC0+IHRydWVcbiAgfCBcImluaGVyaXRcIiAtPiB0cnVlXG4gIHwgXCJpbml0aWFsaXplclwiIC0+IHRydWVcbiAgfCBcImxhenlcIiAtPiB0cnVlXG4gIHwgXCJsZXRcIiAtPiB0cnVlXG4gIHwgXCJtYXRjaFwiIC0+IHRydWVcbiAgfCBcIm1ldGhvZFwiIC0+IHRydWVcbiAgfCBcIm1vZHVsZVwiIC0+IHRydWVcbiAgfCBcIm11dGFibGVcIiAtPiB0cnVlXG4gIHwgXCJuZXdcIiAtPiB0cnVlXG4gIHwgXCJub25yZWNcIiAtPiB0cnVlXG4gIHwgXCJvYmplY3RcIiAtPiB0cnVlXG4gIHwgXCJvZlwiIC0+IHRydWVcbiAgfCBcIm9wZW5cIiAtPiB0cnVlXG4gIHwgXCJvclwiIC0+IHRydWVcbiAgKCogfCBcInBhcnNlclwiIC0+IHRydWUgKilcbiAgfCBcInByaXZhdGVcIiAtPiB0cnVlXG4gIHwgXCJyZWNcIiAtPiB0cnVlXG4gIHwgXCJzaWdcIiAtPiB0cnVlXG4gIHwgXCJzdHJ1Y3RcIiAtPiB0cnVlXG4gIHwgXCJ0aGVuXCIgLT4gdHJ1ZVxuICB8IFwidG9cIiAtPiB0cnVlXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwidHJ5XCIgLT4gdHJ1ZVxuICB8IFwidHlwZVwiIC0+IHRydWVcbiAgfCBcInZhbFwiIC0+IHRydWVcbiAgfCBcInZpcnR1YWxcIiAtPiB0cnVlXG4gIHwgXCJ3aGVuXCIgLT4gdHJ1ZVxuICB8IFwid2hpbGVcIiAtPiB0cnVlXG4gIHwgXCJ3aXRoXCIgLT4gdHJ1ZVxuICB8IFwibG9yXCIgLT4gdHJ1ZVxuICB8IFwibHhvclwiIC0+IHRydWVcbiAgfCBcIm1vZFwiIC0+IHRydWVcbiAgfCBcImxhbmRcIiAtPiB0cnVlXG4gIHwgXCJsc2xcIiAtPiB0cnVlXG4gIHwgXCJsc3JcIiAtPiB0cnVlXG4gIHwgXCJhc3JcIiAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzXG4gICAgb3BlbiBQcmludGYgJCopXG5cbigqIENvcHkgb2YgT0NhbWwgcGFyc2V0cmVlcyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbiAoZnVuIHN1ZmZpeCBfIC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgQXN0XyVzID0gQXN0XyVzXFxuXCIgc3VmZml4IHN1ZmZpeClcbiopXG5tb2R1bGUgQXN0XzQwMiA9IEFzdF80MDJcbm1vZHVsZSBBc3RfNDAzID0gQXN0XzQwM1xubW9kdWxlIEFzdF80MDQgPSBBc3RfNDA0XG5tb2R1bGUgQXN0XzQwNSA9IEFzdF80MDVcbm1vZHVsZSBBc3RfNDA2ID0gQXN0XzQwNlxubW9kdWxlIEFzdF80MDcgPSBBc3RfNDA3XG5tb2R1bGUgQXN0XzQwOCA9IEFzdF80MDhcbm1vZHVsZSBBc3RfNDA5ID0gQXN0XzQwOVxubW9kdWxlIEFzdF80MTAgPSBBc3RfNDEwXG5tb2R1bGUgQXN0XzQxMSA9IEFzdF80MTFcbm1vZHVsZSBBc3RfNDEyID0gQXN0XzQxMlxubW9kdWxlIEFzdF80MTMgPSBBc3RfNDEzXG5tb2R1bGUgQXN0XzQxNCA9IEFzdF80MTRcbm1vZHVsZSBBc3RfNTAwID0gQXN0XzUwMFxubW9kdWxlIEFzdF81MDEgPSBBc3RfNTAxXG4oKiQqKVxuXG4oKiBNYW51YWwgbWlncmF0aW9uIGJldHdlZW4gdmVyc2lvbnMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb25fcGFpciAoZnVuIHggeSAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeCB5IHggeTtcbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHkgeCB5IHgpXG4qKVxubW9kdWxlIE1pZ3JhdGVfNDAyXzQwMyA9IE1pZ3JhdGVfNDAyXzQwM1xubW9kdWxlIE1pZ3JhdGVfNDAzXzQwMiA9IE1pZ3JhdGVfNDAzXzQwMlxubW9kdWxlIE1pZ3JhdGVfNDAzXzQwNCA9IE1pZ3JhdGVfNDAzXzQwNFxubW9kdWxlIE1pZ3JhdGVfNDA0XzQwMyA9IE1pZ3JhdGVfNDA0XzQwM1xubW9kdWxlIE1pZ3JhdGVfNDA0XzQwNSA9IE1pZ3JhdGVfNDA0XzQwNVxubW9kdWxlIE1pZ3JhdGVfNDA1XzQwNCA9IE1pZ3JhdGVfNDA1XzQwNFxubW9kdWxlIE1pZ3JhdGVfNDA1XzQwNiA9IE1pZ3JhdGVfNDA1XzQwNlxubW9kdWxlIE1pZ3JhdGVfNDA2XzQwNSA9IE1pZ3JhdGVfNDA2XzQwNVxubW9kdWxlIE1pZ3JhdGVfNDA2XzQwNyA9IE1pZ3JhdGVfNDA2XzQwN1xubW9kdWxlIE1pZ3JhdGVfNDA3XzQwNiA9IE1pZ3JhdGVfNDA3XzQwNlxubW9kdWxlIE1pZ3JhdGVfNDA3XzQwOCA9IE1pZ3JhdGVfNDA3XzQwOFxubW9kdWxlIE1pZ3JhdGVfNDA4XzQwNyA9IE1pZ3JhdGVfNDA4XzQwN1xubW9kdWxlIE1pZ3JhdGVfNDA4XzQwOSA9IE1pZ3JhdGVfNDA4XzQwOVxubW9kdWxlIE1pZ3JhdGVfNDA5XzQwOCA9IE1pZ3JhdGVfNDA5XzQwOFxubW9kdWxlIE1pZ3JhdGVfNDA5XzQxMCA9IE1pZ3JhdGVfNDA5XzQxMFxubW9kdWxlIE1pZ3JhdGVfNDEwXzQwOSA9IE1pZ3JhdGVfNDEwXzQwOVxubW9kdWxlIE1pZ3JhdGVfNDEwXzQxMSA9IE1pZ3JhdGVfNDEwXzQxMVxubW9kdWxlIE1pZ3JhdGVfNDExXzQxMCA9IE1pZ3JhdGVfNDExXzQxMFxubW9kdWxlIE1pZ3JhdGVfNDExXzQxMiA9IE1pZ3JhdGVfNDExXzQxMlxubW9kdWxlIE1pZ3JhdGVfNDEyXzQxMSA9IE1pZ3JhdGVfNDEyXzQxMVxubW9kdWxlIE1pZ3JhdGVfNDEyXzQxMyA9IE1pZ3JhdGVfNDEyXzQxM1xubW9kdWxlIE1pZ3JhdGVfNDEzXzQxMiA9IE1pZ3JhdGVfNDEzXzQxMlxubW9kdWxlIE1pZ3JhdGVfNDEzXzQxNCA9IE1pZ3JhdGVfNDEzXzQxNFxubW9kdWxlIE1pZ3JhdGVfNDE0XzQxMyA9IE1pZ3JhdGVfNDE0XzQxM1xubW9kdWxlIE1pZ3JhdGVfNDE0XzUwMCA9IE1pZ3JhdGVfNDE0XzUwMFxubW9kdWxlIE1pZ3JhdGVfNTAwXzQxNCA9IE1pZ3JhdGVfNTAwXzQxNFxubW9kdWxlIE1pZ3JhdGVfNTAwXzUwMSA9IE1pZ3JhdGVfNTAwXzUwMVxubW9kdWxlIE1pZ3JhdGVfNTAxXzUwMCA9IE1pZ3JhdGVfNTAxXzUwMFxuKCokKilcblxuKCogQ29tcGlsZXIgbW9kdWxlcyAqKVxubW9kdWxlIEFzdF9tZXRhZGF0YSA9IEFzdF9tZXRhZGF0YVxubW9kdWxlIENvbmZpZyA9IENvbmZpZ1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIFBhcnNlID0gUGFyc2Vcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHJpbnRhc3RcblxubGV0IGluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaW5nX2Vudl92YXJzICgpID1cbiAgKCpJRl9BVF9MRUFTVCA0MDggT2NhbWxfY29tbW9uLkNvbXBtaXNjLnJlYWRfY2xmbGFnc19mcm9tX2VudiAoKSAqKVxuICAoKklGX05PVF9BVF9MRUFTVCA0MDggKCkgKilcbigqKiBBZGp1c3QgdGhlIHJlcG9ydGluZyBzdHlsZSBvZiBlcnJvciBtZXNzYWdlcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIE9DQU1MX0NPTE9SIGFuZCBPQ0FNTF9FUlJPUl9TVFlMRS4gKilcbiIsIm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVE9ETzogcmVtb3ZlIHRoaXMgb3BlbiAqKVxub3BlbiBTdGRsaWIwXG5tb2R1bGUgTG9jYXRpb24gPSBBc3RsaWIuTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBBc3RsaWIuTG9uZ2lkZW50XG5vcGVuIEFzdGxpYi5Bc3RfNTAwXG5cbltAQEB3YXJuaW5nIFwiLTlcIl1cblxub3BlbiBBc3R0eXBlc1xub3BlbiBQYXJzZXRyZWVcblxudHlwZSAnYSB3aXRoX2xvYyA9ICdhIExvY2F0aW9uLmxvY1xudHlwZSBsb2MgPSBMb2NhdGlvbi50XG50eXBlIGxpZCA9IExvbmdpZGVudC50IHdpdGhfbG9jXG50eXBlIHN0ciA9IHN0cmluZyB3aXRoX2xvY1xudHlwZSBzdHJfb3B0ID0gc3RyaW5nIG9wdGlvbiB3aXRoX2xvY1xudHlwZSBhdHRycyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmxldCBkZWZhdWx0X2xvYyA9IHJlZiBMb2NhdGlvbi5ub25lXG5cbnR5cGUgcmVmX2FuZF92YWx1ZSA9IFIgOiAnYSByZWYgKiAnYSAtPiByZWZfYW5kX3ZhbHVlXG5cbmxldCBwcm90ZWN0X3JlZiA9XG4gIGxldCBzZXRfcmVmIChSIChyLCB2KSkgPSByIDo9IHYgaW5cbiAgZnVuIHJlZiBmIC0+XG4gICAgbGV0IChSIChyLCBfKSkgPSByZWYgaW5cbiAgICBsZXQgYmFja3VwID0gUiAociwgIXIpIGluXG4gICAgc2V0X3JlZiByZWY7XG4gICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgfCB4IC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICB4XG4gICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgcmFpc2UgZVxuXG5sZXQgd2l0aF9kZWZhdWx0X2xvYyBsIGYgPSBwcm90ZWN0X3JlZiAoUiAoZGVmYXVsdF9sb2MsIGwpKSBmXG5cbm1vZHVsZSBDb25zdCA9IHN0cnVjdFxuICBsZXQgaW50ZWdlciA/c3VmZml4IGkgPSBQY29uc3RfaW50ZWdlciAoaSwgc3VmZml4KVxuICBsZXQgaW50ID9zdWZmaXggaSA9IGludGVnZXIgP3N1ZmZpeCAoSW50LnRvX3N0cmluZyBpKVxuICBsZXQgaW50MzIgPyhzdWZmaXggPSAnbCcpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKEludDMyLnRvX3N0cmluZyBpKVxuICBsZXQgaW50NjQgPyhzdWZmaXggPSAnTCcpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKEludDY0LnRvX3N0cmluZyBpKVxuICBsZXQgbmF0aXZlaW50ID8oc3VmZml4ID0gJ24nKSBpID0gaW50ZWdlciB+c3VmZml4IChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG4gIGxldCBmbG9hdCA/c3VmZml4IGYgPSBQY29uc3RfZmxvYXQgKGYsIHN1ZmZpeClcbiAgbGV0IGNoYXIgYyA9IFBjb25zdF9jaGFyIGNcblxuICBsZXQgc3RyaW5nID9xdW90YXRpb25fZGVsaW1pdGVyID8obG9jID0gIWRlZmF1bHRfbG9jKSBzID1cbiAgICBQY29uc3Rfc3RyaW5nIChzLCBsb2MsIHF1b3RhdGlvbl9kZWxpbWl0ZXIpXG5lbmRcblxubW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBuYW1lIHBheWxvYWQgPVxuICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBUeXAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYyA9IGQ7XG4gICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gZC5wdHlwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQdHlwX2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXIgYSlcbiAgbGV0IGFycm93ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYXJyb3cgKGEsIGIsIGMpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3R1cGxlIGEpXG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY29uc3RyIChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfb2JqZWN0IChhLCBiKSlcbiAgbGV0IGNsYXNzXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jbGFzcyAoYSwgYikpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hbGlhcyAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyaWFudCAoYSwgYiwgYykpXG4gIGxldCBwb2x5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BvbHkgKGEsIGIpKVxuICBsZXQgcGFja2FnZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wYWNrYWdlIChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfZXh0ZW5zaW9uIGEpXG5cbiAgbGV0IGZvcmNlX3BvbHkgdCA9XG4gICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiB0IHwgXyAtPiBwb2x5IH5sb2M6dC5wdHlwX2xvYyBbXSB0XG4gICgqIC0+IGdob3N0PyAqKVxuXG4gIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidmFyaWFibGUgaW4gc2NvcGUgc3ludGF4IGVycm9yOiAlc1wiIHZcbiAgICBpblxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICAgIFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAoZnVuIHYgLT4gY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgdi50eHQpXG4gICAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgIGluXG4gICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IE90YWcgKGxhYmVsLCB0KSAtPiBPdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG5lbmRcblxubW9kdWxlIFBhdCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjID0gZDtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBkLnBwYXRfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBwYXRfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhciBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYWxpYXMgKGEsIGIpKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0YW50IGEpXG4gIGxldCBpbnRlcnZhbCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9pbnRlcnZhbCAoYSwgYikpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdHVwbGUgYSlcblxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RydWN0IChhLCBPcHRpb24ubWFwIChmdW4gYiAtPiAoW10sIGIpKSBiKSlcblxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXJpYW50IChhLCBiKSlcbiAgbGV0IHJlY29yZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9yZWNvcmQgKGEsIGIpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FycmF5IGEpXG4gIGxldCBvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3IgKGEsIGIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCB0eXBlXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdHlwZSBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2xhenkgYSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdW5wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vcGVuIChhLCBiKSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4Y2VwdGlvbiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgRXhwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2MgPSBkO1xuICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGQucGV4cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lkZW50IGEpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RhbnQgYSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZnVuIChhLCBiLCBjLCBkKSlcbiAgbGV0IGZ1bmN0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZnVuY3Rpb24gYSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FwcGx5IChhLCBiKSlcbiAgbGV0IG1hdGNoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9tYXRjaCAoYSwgYikpXG4gIGxldCB0cnlfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3RyeSAoYSwgYikpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF92YXJpYW50IChhLCBiKSlcbiAgbGV0IHJlY29yZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9yZWNvcmQgKGEsIGIpKVxuICBsZXQgZmllbGQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZmllbGQgKGEsIGIpKVxuICBsZXQgc2V0ZmllbGQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXJyYXkgYSlcbiAgbGV0IGlmdGhlbmVsc2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSlcbiAgbGV0IHNlcXVlbmNlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NlcXVlbmNlIChhLCBiKSlcbiAgbGV0IHdoaWxlXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF93aGlsZSAoYSwgYikpXG4gIGxldCBmb3JfID9sb2MgP2F0dHJzIGEgYiBjIGQgZSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGNvZXJjZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvZXJjZSAoYSwgYiwgYykpXG4gIGxldCBzZW5kID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NlbmQgKGEsIGIpKVxuICBsZXQgbmV3XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3IGEpXG4gIGxldCBzZXRpbnN0dmFyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGluc3R2YXIgKGEsIGIpKVxuICBsZXQgb3ZlcnJpZGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX292ZXJyaWRlIGEpXG4gIGxldCBsZXRtb2R1bGUgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpKVxuICBsZXQgbGV0ZXhjZXB0aW9uID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikpXG4gIGxldCBhc3NlcnRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hc3NlcnQgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sYXp5IGEpXG4gIGxldCBwb2x5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BvbHkgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb2JqZWN0IGEpXG4gIGxldCBuZXd0eXBlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ld3R5cGUgKGEsIGIpKVxuICBsZXQgcGFjayA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3BlbiAoYSwgYikpXG5cbiAgbGV0IGxldG9wID9sb2MgP2F0dHJzIGxldF8gYW5kcyBib2R5ID1cbiAgICBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSlcblxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9leHRlbnNpb24gYSlcbiAgbGV0IHVucmVhY2hhYmxlID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUGV4cF91bnJlYWNoYWJsZVxuICBsZXQgY2FzZSBsaHMgP2d1YXJkIHJocyA9IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuXG4gIGxldCBiaW5kaW5nX29wIG9wIHBhdCBleHAgbG9jID1cbiAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE10eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbXR5X2Rlc2MgPSBkOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGQucG10eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2lkZW50IGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfYWxpYXMgYSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV9mdW5jdG9yIChhLCBiKSlcbiAgbGV0IHdpdGhfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3dpdGggKGEsIGIpKVxuICBsZXQgdHlwZW9mXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfdHlwZW9mIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBNb2QgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG1vZF9kZXNjID0gZDsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBkLnBtb2RfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIHggPSBtayA/bG9jID9hdHRycyAoUG1vZF9pZGVudCB4KVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIHggPSBtayA/bG9jID9hdHRycyAoUG1vZF9zdHJ1Y3R1cmUgeClcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGFyZyBib2R5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZnVuY3RvciAoYXJnLCBib2R5KSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIG0xIG0yID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfYXBwbHkgKG0xLCBtMikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBtIG10eSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2NvbnN0cmFpbnQgKG0sIG10eSkpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgZSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3VucGFjayBlKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG1vZF9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgU2lnID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHNpZ19kZXNjID0gZDsgcHNpZ19sb2MgPSBsb2MgfVxuICBsZXQgdmFsdWUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ192YWx1ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHNpZ190eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX3N1YnN0ID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXN1YnN0IGEpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHVsZSBhKVxuICBsZXQgbW9kX3N1YnN0ID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kc3Vic3QgYSlcbiAgbGV0IHJlY19tb2R1bGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19yZWNtb2R1bGUgYSlcbiAgbGV0IG1vZHR5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R0eXBlIGEpXG4gIGxldCBvcGVuXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX29wZW4gYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfaW5jbHVkZSBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzc190eXBlIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc2lnX2V4dGVuc2lvbiAoYSwgYXR0cnMpKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfYXR0cmlidXRlIGEpXG5lbmRcblxubW9kdWxlIFN0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzdHJfZGVzYyA9IGQ7IHBzdHJfbG9jID0gbG9jIH1cbiAgbGV0IGV2YWwgP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc3RyX2V2YWwgKGEsIGF0dHJzKSlcbiAgbGV0IHZhbHVlID9sb2MgYSBiID0gbWsgP2xvYyAoUHN0cl92YWx1ZSAoYSwgYikpXG4gIGxldCBwcmltaXRpdmUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9wcmltaXRpdmUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzdHJfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl90eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9tb2R1bGUgYSlcbiAgbGV0IHJlY19tb2R1bGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9yZWNtb2R1bGUgYSlcbiAgbGV0IG1vZHR5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9tb2R0eXBlIGEpXG4gIGxldCBvcGVuXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX29wZW4gYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3NfdHlwZSBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9pbmNsdWRlIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc3RyX2V4dGVuc2lvbiAoYSwgYXR0cnMpKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfYXR0cmlidXRlIGEpXG5lbmRcblxubW9kdWxlIENsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjbF9kZXNjID0gZDsgcGNsX2xvYyA9IGxvYzsgcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBkLnBjbF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfY29uc3RyIChhLCBiKSlcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9zdHJ1Y3R1cmUgYSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY2xfZnVuIChhLCBiLCBjLCBkKSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfYXBwbHkgKGEsIGIpKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2xfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX29wZW4gKGEsIGIpKVxuZW5kXG5cbm1vZHVsZSBDdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGN0eV9kZXNjID0gZDsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBkLnBjdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9jb25zdHIgKGEsIGIpKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0eV9zaWduYXR1cmUgYSlcbiAgbGV0IGFycm93ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfYXJyb3cgKGEsIGIsIGMpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0eV9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X29wZW4gKGEsIGIpKVxuZW5kXG5cbm1vZHVsZSBDdGYgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGN0Zl9kZXNjID0gZDsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2luaGVyaXQgYSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX3ZhbCAoYSwgYiwgYywgZCkpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9tZXRob2QgKGEsIGIsIGMsIGQpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjdGZfYXR0cmlidXRlIGEpXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGQucGN0Zl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBDZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2ZfZGVzYyA9IGQ7IHBjZl9sb2MgPSBsb2M7IHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfaW5oZXJpdCAoYSwgYiwgYykpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl92YWwgKGEsIGIsIGMpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfbWV0aG9kIChhLCBiLCBjKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2ZfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBpbml0aWFsaXplcl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfaW5pdGlhbGl6ZXIgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY2ZfYXR0cmlidXRlIGEpXG4gIGxldCB2aXJ0dWFsXyBjdCA9IENma192aXJ0dWFsIGN0XG4gIGxldCBjb25jcmV0ZSBvIGUgPSBDZmtfY29uY3JldGUgKG8sIGUpXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gZC5wY2ZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgVmFsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHByaW0gPSBbXSkgbmFtZSB0eXAgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICBwdmFsX3R5cGUgPSB0eXA7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB2YWxfbG9jID0gbG9jO1xuICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICB9XG5lbmRcblxubW9kdWxlIE1kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHR5cCA9XG4gICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwOyBwbWRfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWRfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXMgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgc3luID1cbiAgICB7XG4gICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICBwbXNfbWFuaWZlc3QgPSBzeW47XG4gICAgICBwbXNfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG1zX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIE10ZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgP3R5cCBuYW1lID1cbiAgICB7XG4gICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgcG10ZF90eXBlID0gdHlwO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXRkX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIE1iID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGV4cHIgPVxuICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtYl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBPcG4gPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ob3ZlcnJpZGUgPSBGcmVzaCkgZXhwciA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgSW5jbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbWV4cHIgPVxuICAgIHsgcGluY2xfbW9kID0gbWV4cHI7IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbmVuZFxuXG5tb2R1bGUgVmIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIHBhdCBleHByID1cbiAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBhdHRyczsgcHZiX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIENpID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZpcnQgPSBDb25jcmV0ZSkgPyhwYXJhbXMgPSBbXSlcbiAgICAgIG5hbWUgZXhwciA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwY2lfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgVHlwZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhjc3RycyA9IFtdKVxuICAgICAgPyhraW5kID0gUHR5cGVfYWJzdHJhY3QpID8ocHJpdiA9IFB1YmxpYykgP21hbmlmZXN0IG5hbWUgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXY7XG4gICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHR5cGVfbG9jID0gbG9jO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBmaWVsZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG11dCA9IEltbXV0YWJsZSkgbmFtZSB0eXAgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgIHBsZF9tdXRhYmxlID0gbXV0O1xuICAgICAgcGxkX3R5cGUgPSB0eXA7XG4gICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxuKCoqIFR5cGUgZXh0ZW5zaW9ucyAqKVxubW9kdWxlIFRlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KHByaXYgPSBQdWJsaWMpXG4gICAgICBwYXRoIGNvbnN0cnVjdG9ycyA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXY7XG4gICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IG1rX2V4Y2VwdGlvbiA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBjb25zdHJ1Y3RvciA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUga2luZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZGVjbCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X2RlY2wgKHZhcnMsIGFyZ3MsIHJlcyk7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgcmViaW5kID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgbGlkID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9yZWJpbmQgbGlkO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIENzaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG5tb2R1bGUgQ3N0ciA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbigqKiBSb3cgZmllbGRzICopXG5tb2R1bGUgUmYgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGRlc2MgPVxuICAgIHsgcHJmX2Rlc2MgPSBkZXNjOyBwcmZfbG9jID0gbG9jOyBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgdGFnID9sb2MgP2F0dHJzIGxhYmVsIGNvbnN0IHR5cyA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFJ0YWcgKGxhYmVsLCBjb25zdCwgdHlzKSlcblxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKFJpbmhlcml0IHR5KVxuZW5kXG5cbigqKiBPYmplY3QgZmllbGRzICopXG5tb2R1bGUgT2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGRlc2MgPVxuICAgIHsgcG9mX2Rlc2MgPSBkZXNjOyBwb2ZfbG9jID0gbG9jOyBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgdGFnID9sb2MgP2F0dHJzIGxhYmVsIHR5ID0gbWsgP2xvYyA/YXR0cnMgKE90YWcgKGxhYmVsLCB0eSkpXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoT2luaGVyaXQgdHkpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJFR0lOIG9mIEJMQUNLIE1BR0lDICopXG4oKiQgb3BlbiBBc3RfY2luYXBzX2hlbHBlcnMgJCopXG5cbnR5cGUgXyB3aXRuZXNzZXMgPSAuLlxuXG50eXBlIF8gbWlncmF0aW9uID0gLi5cbnR5cGUgXyBtaWdyYXRpb24gKz0gVW5kZWZpbmVkIDogXyBtaWdyYXRpb25cblxudHlwZSAnYSBtaWdyYXRpb25faW5mbyA9IHtcbiAgbXV0YWJsZSBuZXh0X3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG4gIG11dGFibGUgcHJldmlvdXNfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbn1cblxuKCoqIEFic3RyYWN0IHZpZXcgb2YgYSB2ZXJzaW9uIG9mIGFuIE9DYW1sIEFzdCAqKVxubW9kdWxlIHR5cGUgQXN0ID0gc2lnXG4gICgqJCBmb3JlYWNoX21vZHVsZSAoZnVuIG0gdHlwZXMgLT5cbiAgICAgIHByaW50ZiBcIiAgbW9kdWxlICVzIDogc2lnXFxuXCIgbTtcbiAgICAgIExpc3QuaXRlciB0eXBlcyB+ZjoocHJpbnRmIFwiICAgIHR5cGUgJXNcXG5cIik7XG4gICAgICBwcmludGYgXCIgIGVuZFxcblwiXG4gICAgKVxuICAqKVxuICBtb2R1bGUgUGFyc2V0cmVlIDogc2lnXG4gICAgdHlwZSBzdHJ1Y3R1cmVcbiAgICB0eXBlIHNpZ25hdHVyZVxuICAgIHR5cGUgdG9wbGV2ZWxfcGhyYXNlXG4gICAgdHlwZSBjb3JlX3R5cGVcbiAgICB0eXBlIGV4cHJlc3Npb25cbiAgICB0eXBlIHBhdHRlcm5cbiAgICB0eXBlIGNhc2VcbiAgICB0eXBlIHR5cGVfZGVjbGFyYXRpb25cbiAgICB0eXBlIHR5cGVfZXh0ZW5zaW9uXG4gICAgdHlwZSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICB0eXBlIGNsYXNzX2V4cHJcbiAgICB0eXBlIGNsYXNzX2ZpZWxkXG4gICAgdHlwZSBjbGFzc190eXBlXG4gICAgdHlwZSBjbGFzc19zaWduYXR1cmVcbiAgICB0eXBlIGNsYXNzX3R5cGVfZmllbGRcbiAgICB0eXBlIG1vZHVsZV9leHByXG4gICAgdHlwZSBtb2R1bGVfdHlwZVxuICAgIHR5cGUgc2lnbmF0dXJlX2l0ZW1cbiAgICB0eXBlIHN0cnVjdHVyZV9pdGVtXG4gIGVuZFxuKCokKilcbiAgbW9kdWxlIENvbmZpZyA6IHNpZ1xuICAgIHZhbCBhc3RfaW1wbF9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgICB2YWwgYXN0X2ludGZfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gIGVuZFxuZW5kXG5cbigqIFNob3J0Y3V0cyBmb3IgdGFsa2luZyBhYm91dCBhc3QgdHlwZXMgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbnR5cGUgJ2EgX3R5cGVzID0gJ2EgY29uc3RyYWludCAnYVxuICA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IF87XFxuXCIgcykgKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogXztcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBfO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IF87XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogXztcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBfO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IF87XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogXztcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBfO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogXztcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogXztcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBfO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogXztcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBfO1xuKCokKilcbiAgPlxuOztcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgIHByaW50ZiBcInR5cGUgJ2EgZ2V0XyVzID1cXG5cIiBzO1xuICAgIHByaW50ZiBcIiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8ICVzIDogJ3g7IC4uID5cXG5cIiBzXG4gICkgKilcbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzdHJ1Y3R1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90b3BsZXZlbF9waHJhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdG9wbGV2ZWxfcGhyYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NvcmVfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjb3JlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXhwcmVzc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBleHByZXNzaW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3BhdHRlcm4gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgcGF0dGVybiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2RlY2xhcmF0aW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZXh0ZW5zaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZXh0ZW5zaW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBleHRlbnNpb25fY29uc3RydWN0b3IgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZXhwciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3Nfc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3R5cGVfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfdHlwZV9maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9tb2R1bGVfZXhwciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBtb2R1bGVfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9tb2R1bGVfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBtb2R1bGVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmVfaXRlbSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmVfaXRlbSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zdHJ1Y3R1cmVfaXRlbSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzdHJ1Y3R1cmVfaXRlbSA6ICd4OyAuLiA+XG4oKiQqKVxuXG5tb2R1bGUgdHlwZSBPQ2FtbF92ZXJzaW9uID0gc2lnXG4gIG1vZHVsZSBBc3QgOiBBc3RcbiAgdmFsIHZlcnNpb24gOiBpbnRcbiAgdmFsIHN0cmluZ192ZXJzaW9uIDogc3RyaW5nXG4gIHR5cGUgdHlwZXMgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBBc3QuJXMuJXM7XFxuXCIgcyBtIHMpKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZTtcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZTtcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZTtcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZTtcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5wYXR0ZXJuO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2FzZTtcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb247XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbjtcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHI7XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZDtcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGU7XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmU7XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHI7XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZTtcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICA+IF90eXBlc1xuICB0eXBlIF8gd2l0bmVzc2VzICs9IFZlcnNpb24gOiB0eXBlcyB3aXRuZXNzZXNcbiAgdmFsIG1pZ3JhdGlvbl9pbmZvIDogdHlwZXMgbWlncmF0aW9uX2luZm9cbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRuZXNzKEFzdCA6IEFzdCkgPVxuc3RydWN0XG4gIHR5cGUgdHlwZXMgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBBc3QuJXMuJXM7XFxuXCIgcyBtIHMpKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZTtcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZTtcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZTtcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZTtcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5wYXR0ZXJuO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2FzZTtcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb247XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbjtcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHI7XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZDtcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGU7XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmU7XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHI7XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZTtcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICA+IF90eXBlc1xuICB0eXBlIF8gd2l0bmVzc2VzICs9IFZlcnNpb24gOiB0eXBlcyB3aXRuZXNzZXNcbiAgbGV0IG1pZ3JhdGlvbl9pbmZvIDogdHlwZXMgbWlncmF0aW9uX2luZm8gPVxuICAgIHsgbmV4dF92ZXJzaW9uID0gVW5kZWZpbmVkOyBwcmV2aW91c192ZXJzaW9uID0gVW5kZWZpbmVkIH1cbmVuZFxuXG50eXBlICd0eXBlcyBvY2FtbF92ZXJzaW9uID1cbiAgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uXG4gICAgKCokIGxldCBzZXAgPSB3aXRoX3RoZW5fYW5kICgpIGluXG4gICAgICBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT5cbiAgICAgICAgICBwcmludGYgXCIgICAgJXQgdHlwZSBBc3QuJXMuJXMgPSAndHlwZXMgZ2V0XyVzXFxuXCIgc2VwIG0gcyBzKSAqKVxuICAgIHdpdGggdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSA9ICd0eXBlcyBnZXRfc3RydWN0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSAndHlwZXMgZ2V0X3RvcGxldmVsX3BocmFzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSA9ICd0eXBlcyBnZXRfY29yZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9ICd0eXBlcyBnZXRfZXhwcmVzc2lvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnBhdHRlcm4gPSAndHlwZXMgZ2V0X3BhdHRlcm5cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jYXNlID0gJ3R5cGVzIGdldF9jYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9ICd0eXBlcyBnZXRfdHlwZV9kZWNsYXJhdGlvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0gJ3R5cGVzIGdldF90eXBlX2V4dGVuc2lvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9ICd0eXBlcyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9ICd0eXBlcyBnZXRfY2xhc3NfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc19maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSAndHlwZXMgZ2V0X2NsYXNzX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPSAndHlwZXMgZ2V0X2NsYXNzX3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9ICd0eXBlcyBnZXRfbW9kdWxlX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9ICd0eXBlcyBnZXRfbW9kdWxlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlX2l0ZW1cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9ICd0eXBlcyBnZXRfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gIClcblxudHlwZSAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lczogJ2Zyb20gZ2V0XyVzIC0+ICd0b18gZ2V0XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZTogJ2Zyb20gZ2V0X3N0cnVjdHVyZSAtPiAndG9fIGdldF9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlOiAnZnJvbSBnZXRfc2lnbmF0dXJlIC0+ICd0b18gZ2V0X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2U6ICdmcm9tIGdldF90b3BsZXZlbF9waHJhc2UgLT4gJ3RvXyBnZXRfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZTogJ2Zyb20gZ2V0X2NvcmVfdHlwZSAtPiAndG9fIGdldF9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbjogJ2Zyb20gZ2V0X2V4cHJlc3Npb24gLT4gJ3RvXyBnZXRfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuOiAnZnJvbSBnZXRfcGF0dGVybiAtPiAndG9fIGdldF9wYXR0ZXJuO1xuICBjb3B5X2Nhc2U6ICdmcm9tIGdldF9jYXNlIC0+ICd0b18gZ2V0X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjogJ2Zyb20gZ2V0X3R5cGVfZGVjbGFyYXRpb24gLT4gJ3RvXyBnZXRfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbjogJ2Zyb20gZ2V0X3R5cGVfZXh0ZW5zaW9uIC0+ICd0b18gZ2V0X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjogJ2Zyb20gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAndG9fIGdldF9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwcjogJ2Zyb20gZ2V0X2NsYXNzX2V4cHIgLT4gJ3RvXyBnZXRfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGU6ICdmcm9tIGdldF9jbGFzc190eXBlIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlOiAnZnJvbSBnZXRfY2xhc3Nfc2lnbmF0dXJlIC0+ICd0b18gZ2V0X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfdHlwZV9maWVsZCAtPiAndG9fIGdldF9jbGFzc190eXBlX2ZpZWxkO1xuICBjb3B5X21vZHVsZV9leHByOiAnZnJvbSBnZXRfbW9kdWxlX2V4cHIgLT4gJ3RvXyBnZXRfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGU6ICdmcm9tIGdldF9tb2R1bGVfdHlwZSAtPiAndG9fIGdldF9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbTogJ2Zyb20gZ2V0X3NpZ25hdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3NpZ25hdHVyZV9pdGVtO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtOiAnZnJvbSBnZXRfc3RydWN0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG5sZXQgaWQgeCA9IHhcbmxldCBtaWdyYXRpb25faWRlbnRpdHkgOiAoJ2EsICdhKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgY29weV8lcyA9IGlkO1xcblwiIHMpICopXG4gIGNvcHlfc3RydWN0dXJlID0gaWQ7XG4gIGNvcHlfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlID0gaWQ7XG4gIGNvcHlfY29yZV90eXBlID0gaWQ7XG4gIGNvcHlfZXhwcmVzc2lvbiA9IGlkO1xuICBjb3B5X3BhdHRlcm4gPSBpZDtcbiAgY29weV9jYXNlID0gaWQ7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA9IGlkO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uID0gaWQ7XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gaWQ7XG4gIGNvcHlfY2xhc3NfZXhwciA9IGlkO1xuICBjb3B5X2NsYXNzX2ZpZWxkID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZSA9IGlkO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQgPSBpZDtcbiAgY29weV9tb2R1bGVfZXhwciA9IGlkO1xuICBjb3B5X21vZHVsZV90eXBlID0gaWQ7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW0gPSBpZDtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSA9IGlkO1xuKCokKilcbn1cblxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgbWlncmF0aW9uX2NvbXBvc2UgKGFiIDogKCdhLCAnYikgbWlncmF0aW9uX2Z1bmN0aW9ucykgKGJjIDogKCdiLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucykgOiAoJ2EsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJS0yMXMgPSBjb21wb3NlIGJjLmNvcHlfJS0yMXMgYWIuY29weV8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmUgICAgICAgICAgICAgYWIuY29weV9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICBhYi5jb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY29yZV90eXBlICAgICAgICAgICAgIGFiLmNvcHlfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9leHByZXNzaW9uICAgICAgICAgICAgYWIuY29weV9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm4gICAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgYWIuY29weV9wYXR0ZXJuO1xuICBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jYXNlICAgICAgICAgICAgICAgICAgYWIuY29weV9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICA9IGNvbXBvc2UgYmMuY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgYWIuY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICA9IGNvbXBvc2UgYmMuY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgYWIuY29weV90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBjb21wb3NlIGJjLmNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGFiLmNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19leHByICAgICAgICAgICAgYWIuY29weV9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19maWVsZCAgICAgICAgICAgYWIuY29weV9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgIGFiLmNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgYWIuY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICBjb3B5X21vZHVsZV9leHByICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgYWIuY29weV9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZV9pdGVtO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbnR5cGUgXyBtaWdyYXRpb24gKz0gTWlncmF0aW9uIDogJ2Zyb20gb2NhbWxfdmVyc2lvbiAqICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyAqICd0b18gb2NhbWxfdmVyc2lvbiAtPiAnZnJvbSBtaWdyYXRpb25cblxubW9kdWxlIHR5cGUgTWlncmF0ZV9tb2R1bGUgPSBzaWdcbiAgbW9kdWxlIEZyb20gOiBBc3RcbiAgbW9kdWxlIFRvIDogQXN0XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgdmFsIGNvcHlfJS0yMXM6IEZyb20uJXMuJXMgLT4gVG8uJXMuJXNcXG5cIiBzIG0gcyBtIHMpICopXG4gIHZhbCBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZVxuICB2YWwgY29weV90b3BsZXZlbF9waHJhc2UgICAgICA6IEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gIHZhbCBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgdmFsIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uXG4gIHZhbCBjb3B5X3BhdHRlcm4gICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVyblxuICB2YWwgY29weV9jYXNlICAgICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2VcbiAgdmFsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gIHZhbCBjb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gIHZhbCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgdmFsIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByXG4gIHZhbCBjb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gIHZhbCBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICB2YWwgY29weV9jbGFzc19zaWduYXR1cmUgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gIHZhbCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICB2YWwgY29weV9tb2R1bGVfZXhwciAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICB2YWwgY29weV9tb2R1bGVfdHlwZSAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICB2YWwgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICB2YWwgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbmVuZFxuXG5tb2R1bGUgTWlncmF0aW9uX2Z1bmN0aW9uc1xuICAgIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuPVxuc3RydWN0XG4gIGxldCBtaWdyYXRpb25fZnVuY3Rpb25zIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIGxldCBvcGVuIEFfdG9fQiBpblxuICAgIHtcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAgY29weV8lcztcXG5cIiBzKSAqKVxuICAgICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICAgICAgY29weV9jb3JlX3R5cGU7XG4gICAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgICBjb3B5X3BhdHRlcm47XG4gICAgICBjb3B5X2Nhc2U7XG4gICAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgICBjb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgICBjb3B5X2NsYXNzX2ZpZWxkO1xuICAgICAgY29weV9jbGFzc190eXBlO1xuICAgICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gICAgICBjb3B5X21vZHVsZV9leHByO1xuICAgICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gICAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICB9XG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyX21pZ3JhdGlvbiAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbiAgICAoQl90b19BIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEIuQXN0IGFuZCBtb2R1bGUgVG8gPSBBLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgKCkgPSAoXG4gICAgbGV0IGlzX3VuZGVmaW5lZCA6IHR5cGUgYS4gYSBtaWdyYXRpb24gLT4gYm9vbCA9IGZ1bmN0aW9uXG4gICAgICB8IFVuZGVmaW5lZCAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGFzc2VydCAoQS52ZXJzaW9uIDwgQi52ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uKTtcbiAgICBsZXQgbW9kdWxlIEFfdG9fQl9mdW4gPSBNaWdyYXRpb25fZnVuY3Rpb25zKEEpKEIpKEFfdG9fQikgaW5cbiAgICBsZXQgbW9kdWxlIEJfdG9fQV9mdW4gPSBNaWdyYXRpb25fZnVuY3Rpb25zKEIpKEEpKEJfdG9fQSkgaW5cbiAgICBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvbiA8LVxuICAgICAgTWlncmF0aW9uICgobW9kdWxlIEEpLCBBX3RvX0JfZnVuLm1pZ3JhdGlvbl9mdW5jdGlvbnMsIChtb2R1bGUgQikpO1xuICAgIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbiA8LVxuICAgICAgTWlncmF0aW9uICgobW9kdWxlIEIpLCBCX3RvX0FfZnVuLm1pZ3JhdGlvbl9mdW5jdGlvbnMsIChtb2R1bGUgQSkpO1xuICApXG5lbmRcblxudHlwZSAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uID1cbiAgfCBOb19taWdyYXRpb24gOiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG4gIHwgSW1tZWRpYXRlX21pZ3JhdGlvblxuICAgIDogICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyAqICd0b18gb2NhbWxfdmVyc2lvblxuICAgICAgLT4gJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuXG5sZXQgaW1tZWRpYXRlX21pZ3JhdGlvblxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzKVxcblwiIHMpICopXG4gICAgKHR5cGUgc3RydWN0dXJlKVxuICAgICh0eXBlIHNpZ25hdHVyZSlcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UpXG4gICAgKHR5cGUgY29yZV90eXBlKVxuICAgICh0eXBlIGV4cHJlc3Npb24pXG4gICAgKHR5cGUgcGF0dGVybilcbiAgICAodHlwZSBjYXNlKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24pXG4gICAgKHR5cGUgdHlwZV9leHRlbnNpb24pXG4gICAgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgICh0eXBlIGNsYXNzX2V4cHIpXG4gICAgKHR5cGUgY2xhc3NfZmllbGQpXG4gICAgKHR5cGUgY2xhc3NfdHlwZSlcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUpXG4gICAgKHR5cGUgY2xhc3NfdHlwZV9maWVsZClcbiAgICAodHlwZSBtb2R1bGVfZXhwcilcbiAgICAodHlwZSBtb2R1bGVfdHlwZSlcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbSlcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbSlcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmICBcIiAgICAgJS0yMXMgOiAlcztcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2U7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb247XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQ7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGU7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gICAgZGlyZWN0aW9uXG4gID1cbiAgbGV0IHZlcnNpb24gPSBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICAgIHwgYE5leHQgLT4gQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb25cbiAgICB8IGBQcmV2aW91cyAtPiBBLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb25cbiAgaW5cbiAgbWF0Y2ggdmVyc2lvbiB3aXRoXG4gIHwgVW5kZWZpbmVkIC0+IE5vX21pZ3JhdGlvblxuICB8IE1pZ3JhdGlvbiAoXywgZnVucywgdG9fKSAtPiBJbW1lZGlhdGVfbWlncmF0aW9uIChmdW5zLCB0b18pXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG1pZ3JhdGVcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlczEpICh0eXBlICVzMilcXG5cIiBzIHMpICopXG4gICAgKHR5cGUgc3RydWN0dXJlMSkgKHR5cGUgc3RydWN0dXJlMilcbiAgICAodHlwZSBzaWduYXR1cmUxKSAodHlwZSBzaWduYXR1cmUyKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZTEpICh0eXBlIHRvcGxldmVsX3BocmFzZTIpXG4gICAgKHR5cGUgY29yZV90eXBlMSkgKHR5cGUgY29yZV90eXBlMilcbiAgICAodHlwZSBleHByZXNzaW9uMSkgKHR5cGUgZXhwcmVzc2lvbjIpXG4gICAgKHR5cGUgcGF0dGVybjEpICh0eXBlIHBhdHRlcm4yKVxuICAgICh0eXBlIGNhc2UxKSAodHlwZSBjYXNlMilcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMSkgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjIpXG4gICAgKHR5cGUgdHlwZV9leHRlbnNpb24xKSAodHlwZSB0eXBlX2V4dGVuc2lvbjIpXG4gICAgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMSkgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMilcbiAgICAodHlwZSBjbGFzc19leHByMSkgKHR5cGUgY2xhc3NfZXhwcjIpXG4gICAgKHR5cGUgY2xhc3NfZmllbGQxKSAodHlwZSBjbGFzc19maWVsZDIpXG4gICAgKHR5cGUgY2xhc3NfdHlwZTEpICh0eXBlIGNsYXNzX3R5cGUyKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZTEpICh0eXBlIGNsYXNzX3NpZ25hdHVyZTIpXG4gICAgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDEpICh0eXBlIGNsYXNzX3R5cGVfZmllbGQyKVxuICAgICh0eXBlIG1vZHVsZV9leHByMSkgKHR5cGUgbW9kdWxlX2V4cHIyKVxuICAgICh0eXBlIG1vZHVsZV90eXBlMSkgKHR5cGUgbW9kdWxlX3R5cGUyKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtMSkgKHR5cGUgc2lnbmF0dXJlX2l0ZW0yKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtMSkgKHR5cGUgc3RydWN0dXJlX2l0ZW0yKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMxO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMTtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMTtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjE7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4xO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMTtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjE7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMTtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMTtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjE7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMTtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTE7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTE7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQxO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjE7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0xO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTE7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gICAgKChtb2R1bGUgQikgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMjtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTI7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTI7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTI7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTI7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24yO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMjtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTI7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24yO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjI7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjI7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIyO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDI7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUyO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUyO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMjtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIyO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTI7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMjtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0yO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zXG4gID1cbiAgbWF0Y2ggQS5WZXJzaW9uIHdpdGhcbiAgfCBCLlZlcnNpb24gLT4gbWlncmF0aW9uX2lkZW50aXR5XG4gIHwgXyAtPlxuICAgIGxldCBkaXJlY3Rpb24gPSBpZiBBLnZlcnNpb24gPCBCLnZlcnNpb24gdGhlbiBgTmV4dCBlbHNlIGBQcmV2aW91cyBpblxuICAgIGxldCByZWMgbWlncmF0ZSAobSA6IEEudHlwZXMgaW1tZWRpYXRlX21pZ3JhdGlvbikgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgIHwgTm9fbWlncmF0aW9uIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChmLCAobW9kdWxlIFRvKSkgLT5cbiAgICAgICAgbWF0Y2ggVG8uVmVyc2lvbiB3aXRoXG4gICAgICAgIHwgQi5WZXJzaW9uIC0+IGZcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbWF0Y2ggaW1tZWRpYXRlX21pZ3JhdGlvbiAobW9kdWxlIFRvKSBkaXJlY3Rpb24gd2l0aFxuICAgICAgICAgIHwgTm9fbWlncmF0aW9uIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZywgdG8yKSAtPlxuICAgICAgICAgICAgbWlncmF0ZSAoSW1tZWRpYXRlX21pZ3JhdGlvbiAobWlncmF0aW9uX2NvbXBvc2UgZiBnLCB0bzIpKVxuICAgIGluXG4gICAgbWlncmF0ZSAoaW1tZWRpYXRlX21pZ3JhdGlvbiAobW9kdWxlIEEpIGRpcmVjdGlvbilcblxubW9kdWxlIENvbnZlcnQgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGxldCB7XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgY29weV8lcztcXG5cIiBzKSAqKVxuICAgIGNvcHlfc3RydWN0dXJlO1xuICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgIGNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcHlfY29yZV90eXBlO1xuICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICBjb3B5X3BhdHRlcm47XG4gICAgY29weV9jYXNlO1xuICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICBjb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICBjb3B5X2NsYXNzX2ZpZWxkO1xuICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgIGNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gIH0gOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbWlncmF0ZSAobW9kdWxlIEEpIChtb2R1bGUgQilcbmVuZFxuXG4oKiQgZm9yZWFjaF92ZXJzaW9uIChmdW4gbiB2ZXJzaW9uIC0+XG4gICAgcHJpbnRmIFwibW9kdWxlIE9DYW1sXyVkID0gc3RydWN0XFxuXCIgbjtcbiAgICBwcmludGYgXCIgIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XyVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfJWQpXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCB2ZXJzaW9uID0gJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHN0cmluZ192ZXJzaW9uID0gJVNcXG5cIiB2ZXJzaW9uO1xuICAgIHByaW50ZiBcImVuZFxcblwiO1xuICAgIHByaW50ZiBcImxldCBvY2FtbF8lZCA6IE9DYW1sXyVkLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXyVkKVxcblwiXG4gICAgICBuIG4gbjtcbiAgKVxuKilcbm1vZHVsZSBPQ2FtbF80MDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDAyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDAyKVxuICBsZXQgdmVyc2lvbiA9IDQwMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDJcIlxuZW5kXG5sZXQgb2NhbWxfNDAyIDogT0NhbWxfNDAyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwMilcbm1vZHVsZSBPQ2FtbF80MDMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDAzXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDAzKVxuICBsZXQgdmVyc2lvbiA9IDQwM1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDNcIlxuZW5kXG5sZXQgb2NhbWxfNDAzIDogT0NhbWxfNDAzLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwMylcbm1vZHVsZSBPQ2FtbF80MDQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA0XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA0KVxuICBsZXQgdmVyc2lvbiA9IDQwNFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDRcIlxuZW5kXG5sZXQgb2NhbWxfNDA0IDogT0NhbWxfNDA0LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNClcbm1vZHVsZSBPQ2FtbF80MDUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA1XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA1KVxuICBsZXQgdmVyc2lvbiA9IDQwNVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDVcIlxuZW5kXG5sZXQgb2NhbWxfNDA1IDogT0NhbWxfNDA1LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNSlcbm1vZHVsZSBPQ2FtbF80MDYgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA2XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA2KVxuICBsZXQgdmVyc2lvbiA9IDQwNlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDZcIlxuZW5kXG5sZXQgb2NhbWxfNDA2IDogT0NhbWxfNDA2LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNilcbm1vZHVsZSBPQ2FtbF80MDcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA3XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA3KVxuICBsZXQgdmVyc2lvbiA9IDQwN1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDdcIlxuZW5kXG5sZXQgb2NhbWxfNDA3IDogT0NhbWxfNDA3LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNylcbm1vZHVsZSBPQ2FtbF80MDggPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA4XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA4KVxuICBsZXQgdmVyc2lvbiA9IDQwOFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDhcIlxuZW5kXG5sZXQgb2NhbWxfNDA4IDogT0NhbWxfNDA4LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwOClcbm1vZHVsZSBPQ2FtbF80MDkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA5XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA5KVxuICBsZXQgdmVyc2lvbiA9IDQwOVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDlcIlxuZW5kXG5sZXQgb2NhbWxfNDA5IDogT0NhbWxfNDA5LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwOSlcbm1vZHVsZSBPQ2FtbF80MTAgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEwXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEwKVxuICBsZXQgdmVyc2lvbiA9IDQxMFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTBcIlxuZW5kXG5sZXQgb2NhbWxfNDEwIDogT0NhbWxfNDEwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMClcbm1vZHVsZSBPQ2FtbF80MTEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDExXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDExKVxuICBsZXQgdmVyc2lvbiA9IDQxMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTFcIlxuZW5kXG5sZXQgb2NhbWxfNDExIDogT0NhbWxfNDExLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMSlcbm1vZHVsZSBPQ2FtbF80MTIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEyKVxuICBsZXQgdmVyc2lvbiA9IDQxMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTJcIlxuZW5kXG5sZXQgb2NhbWxfNDEyIDogT0NhbWxfNDEyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMilcbm1vZHVsZSBPQ2FtbF80MTMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEzXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEzKVxuICBsZXQgdmVyc2lvbiA9IDQxM1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTNcIlxuZW5kXG5sZXQgb2NhbWxfNDEzIDogT0NhbWxfNDEzLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMylcbm1vZHVsZSBPQ2FtbF80MTQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDE0XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDE0KVxuICBsZXQgdmVyc2lvbiA9IDQxNFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTRcIlxuZW5kXG5sZXQgb2NhbWxfNDE0IDogT0NhbWxfNDE0LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxNClcbm1vZHVsZSBPQ2FtbF81MDAgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAwXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAwKVxuICBsZXQgdmVyc2lvbiA9IDUwMFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMFwiXG5lbmRcbmxldCBvY2FtbF81MDAgOiBPQ2FtbF81MDAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAwKVxubW9kdWxlIE9DYW1sXzUwMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDEpXG4gIGxldCB2ZXJzaW9uID0gNTAxXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4xXCJcbmVuZFxubGV0IG9jYW1sXzUwMSA6IE9DYW1sXzUwMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDEpXG4oKiQqKVxuXG5sZXQgYWxsX3ZlcnNpb25zIDogKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSBsaXN0ID0gW1xuICAoKiRmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIF8gLT5cbiAgICAgIHByaW50ZiBcIihtb2R1bGUgT0NhbWxfJWQgOiBPQ2FtbF92ZXJzaW9uKTtcXG5cIiBuKSopXG4obW9kdWxlIE9DYW1sXzQwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDYgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA3IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDkgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAxIDogT0NhbWxfdmVyc2lvbik7XG4oKiQqKVxuXVxuXG4oKiRmb3JlYWNoX3ZlcnNpb25fcGFpciAoZnVuIGEgYiAtPlxuICAgIHByaW50ZiBcImluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXyVkKShPQ2FtbF8lZClcXG5cIiBhIGI7XG4gICAgcHJpbnRmIFwiICAgIChBc3RsaWIuTWlncmF0ZV8lZF8lZCkoQXN0bGliLk1pZ3JhdGVfJWRfJWQpXFxuXCIgYSBiIGIgYVxuICApXG4qKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAyKShPQ2FtbF80MDMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwMl80MDMpKEFzdGxpYi5NaWdyYXRlXzQwM180MDIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDMpKE9DYW1sXzQwNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAzXzQwNCkoQXN0bGliLk1pZ3JhdGVfNDA0XzQwMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNCkoT0NhbWxfNDA1KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDRfNDA1KShBc3RsaWIuTWlncmF0ZV80MDVfNDA0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA1KShPQ2FtbF80MDYpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNV80MDYpKEFzdGxpYi5NaWdyYXRlXzQwNl80MDUpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDYpKE9DYW1sXzQwNylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNykoQXN0bGliLk1pZ3JhdGVfNDA3XzQwNilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNykoT0NhbWxfNDA4KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDdfNDA4KShBc3RsaWIuTWlncmF0ZV80MDhfNDA3KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA4KShPQ2FtbF80MDkpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOF80MDkpKEFzdGxpYi5NaWdyYXRlXzQwOV80MDgpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDkpKE9DYW1sXzQxMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA5XzQxMCkoQXN0bGliLk1pZ3JhdGVfNDEwXzQwOSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMCkoT0NhbWxfNDExKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTBfNDExKShBc3RsaWIuTWlncmF0ZV80MTFfNDEwKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDExKShPQ2FtbF80MTIpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMV80MTIpKEFzdGxpYi5NaWdyYXRlXzQxMl80MTEpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTIpKE9DYW1sXzQxMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMykoQXN0bGliLk1pZ3JhdGVfNDEzXzQxMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMykoT0NhbWxfNDE0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTNfNDE0KShBc3RsaWIuTWlncmF0ZV80MTRfNDEzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDE0KShPQ2FtbF81MDApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxNF81MDApKEFzdGxpYi5NaWdyYXRlXzUwMF80MTQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDApKE9DYW1sXzUwMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAwXzUwMSkoQXN0bGliLk1pZ3JhdGVfNTAxXzUwMClcbigqJCopXG5cbm1vZHVsZSBPQ2FtbF9jdXJyZW50ID0gT0NhbWxfT0NBTUxfVkVSU0lPTlxuXG5tb2R1bGUgRmluZF92ZXJzaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEltcGwgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IEludGYgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IFVua25vd25cblxuICBsZXQgZnJvbV9tYWdpYyBtYWdpYyA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gVW5rbm93blxuICAgICAgfCAobW9kdWxlIFZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEltcGwgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2UgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEludGYgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb3AgdGFpbFxuICAgIGluXG4gICAgKCogVHJhdmVyc2UgdGhlIHZlcnNpb25zIGZyb20gbGFzdCB0byBmaXJzdDpcbiAgICAgICBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmVuJ3QgdW5pcXVlIGFtb25nIHZlcnNpb25zLFxuICAgICAgIHdlIHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIHdpdGggYSBtYWdpYyBudW1iZXIgbWF0Y2guXG4gICAgICAgVGhlIHNpdHVhdGlvbiBpbiBtaW5kIGlzIHRydW5rIHN1cHBvcnQuICopXG4gICAgICBsZXQgYWxsX3ZlcnNpb25zX3RvcF9kb3duID0gTGlzdC5yZXYgYWxsX3ZlcnNpb25zIGluXG4gICAgICBsb29wIGFsbF92ZXJzaW9uc190b3BfZG93blxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBjb250cm9sIHdoYXQgd2UgdXNlIGZyb20gdGhlIGN1cnJlbnQgY29tcGlsZXIgYW5kIHdoYXQgaXMgZW1iZWQgaW5cbiAgIHRoaXMgbGlicmFyeS5cblxuICAgSXQgbXVzdCBiZSBvcGVuZWQgaW4gYWxsIG1vZHVsZXMsIGVzcGVjaWFsbHkgdGhlIG9uZXMgY29taW5nIGZyb20gdGhlIGNvbXBpbGVyLlxuKilcblxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG5tb2R1bGUgSnMgPSBWZXJzaW9ucy5PQ2FtbF81MDBcbm1vZHVsZSBPY2FtbCA9IFZlcnNpb25zLk9DYW1sX2N1cnJlbnRcblxubW9kdWxlIFNlbGVjdF9hc3QgKE9jYW1sIDogVmVyc2lvbnMuT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc1xuXG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSAoJ2pzLCAnb2NhbWwpIHQgPVxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlc1xcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLiVzLFxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLiVzIClcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgIHRcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFRvcGxldmVsX3BocmFzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDb3JlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXhwcmVzc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFBhdHRlcm5cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5wYXR0ZXJuLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2FzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbigqJCopXG4gICAgICB8IExpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBsaXN0LCAnYiBsaXN0KSB0XG4gICAgICB8IFBhaXIgOiAoJ2EsICdiKSB0ICogKCdjLCAnZCkgdCAtPiAoJ2EgKiAnYywgJ2IgKiAnZCkgdFxuICBlbmRcblxuICBvcGVuIFR5cGVcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcbiAgbW9kdWxlIFRvX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoSnMpIChPY2FtbClcblxuICBsZXQgcmVjIG9mX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IG9jYW1sIC0+IGpzID1cbiAgICBsZXQgb3BlbiBPZl9vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwIChvZl9vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gb2Zfb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gb2Zfb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCByZWMgdG9fb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4ganMgLT4gb2NhbWwgPVxuICAgIGxldCBvcGVuIFRvX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKHRvX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSB0b19vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSB0b19vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IG9mX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gdG9fb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiBvZl9vY2FtbCBpdGVtXG4gIGxldCB0b19vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IG9mX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gdG9fb2NhbWwgaXRlbVxuZW5kXG5cbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBTZWxlY3RfYXN0IChPY2FtbClcbm1vZHVsZSBBc3RfaGVscGVyID0gQXN0X2hlbHBlcl9saXRlXG5cbigqIE1vZHVsZXMgZnJvbSBBc3RfPG4+IG9mIEFzdGxpYiwgd2hlcmUgPG4+IGlzIHRoZSBjb21waWxlciB2ZXJzaW9uIHRoZSBwcHhsaWIgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggKilcbm1vZHVsZSBQYXJzZXRyZWUgPSBTZWxlY3RlZF9hc3QuQXN0LlBhcnNldHJlZVxubW9kdWxlIEFzdHR5cGVzID0gU2VsZWN0ZWRfYXN0LkFzdC5Bc3R0eXBlc1xuXG4oKiBPdGhlciBBc3RsaWIgbW9kdWxlcyAqKVxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxuXG5tb2R1bGUgUGFyc2UgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RsaWIuUGFyc2VcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcblxuICBsZXQgaW1wbGVtZW50YXRpb24gbGV4YnVmID0gaW1wbGVtZW50YXRpb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc3RydWN0dXJlXG4gIGxldCBpbnRlcmZhY2UgbGV4YnVmID0gaW50ZXJmYWNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3NpZ25hdHVyZVxuXG4gIGxldCB0b3BsZXZlbF9waHJhc2UgbGV4YnVmID1cbiAgICB0b3BsZXZlbF9waHJhc2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IHVzZV9maWxlIGxleGJ1ZiA9XG4gICAgdXNlX2ZpbGUgbGV4YnVmIHw+IExpc3QubWFwIE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IGNvcmVfdHlwZSBsZXhidWYgPSBjb3JlX3R5cGUgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfY29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uIGxleGJ1ZiA9IGV4cHJlc3Npb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfZXhwcmVzc2lvblxuICBsZXQgcGF0dGVybiBsZXhidWYgPSBwYXR0ZXJuIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3BhdHRlcm5cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBkZWZhdWx0X3ByaW50X3dhcm5pbmcgX2xvYyA9ICgpXG5sZXQgYWJvdXRfaXRlX2JyYW5jaF9yZWYgPSByZWYgZGVmYXVsdF9wcmludF93YXJuaW5nXG5sZXQgY2FyZV9hYm91dF9pdGVfYnJhbmNoID0gcmVmIGZhbHNlXG5sZXQgYWJvdXRfaXRlX2JyYW5jaCBsb2MgPSAhYWJvdXRfaXRlX2JyYW5jaF9yZWYgbG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBEZWZpbml0aW9uIG9mIHRoZSBPQ2FtbCBBU1QgKilcblxub3BlbiBJbXBvcnRcblxuKCogVGhpcyBmaWxlIGlzIG9idGFpbmVkIGJ5OlxuXG4gICAtIGNvcHlpbmcgYSBzdWJzZXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXN0X3h4eC5tbCBmaWxlIGZyb20gQXN0bGliXG4gICAoc3ViLW1vZHVsZXMgQXN0dHlwZXMgYW5kIFBhcnNldHJlZSlcbiAgIC0gYWRkaW5nIHRoZSB0eXBlIGRlZmluaXRpb25zIGZvciBwb3NpdGlvbiwgbG9jYXRpb24sIGxvYyBhbmQgbG9uZ2lkZW50XG4gICAtIGZsYXR0ZW5pbmcgYWxsIHRoZSBtb2R1bGVzXG4gICAtIHJlbW92aW5nIEFzdHR5cGVzLmNvbnN0YW50ICh1bnVzZWQgYW5kIGNvbmZsaWN0cyB3aXRoIFBhcnNldHJlZS5jb25zdGFudClcbiAgIC0gcmVuYW1pbmcgYSBmZXcgdHlwZXM6XG4gICAtIC0gTG9jYXRpb24udCAtPiBsb2NhdGlvblxuICAgLSAtIExvbmdpZGVudC50IC0+IGxvbmdpZGVudFxuICAgLSBhZGRpbmcgYSB0eXBlIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jIGFuZCByZXBsYWNpbmcgYWxsIHRoZSBvY2N1cnJlbmNlcyBvZiB0aGVcbiAgIGxhdHRlciBieSB0aGUgZm9ybWVyLiBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlIGl0ZXJhdGlvbiBhbiB0aGUgbGV2ZWwgb2YgYVxuICAgbG9uZ2lkZW50IGxvY1xuICAgLSBhZGRpbmcgYSB0eXBlIGNhc2VzID0gY2FzZSBsaXN0XG4gICAtIHJlcGxhY2luZyBhbGwgb2NjdXJlbmNlcyBvZiBcImNhc2UgbGlzdFwiIGJ5IFwiY2FzZXNcIlxuICAgLSByZXBsYWNpbmcgYWxsIHRoZSAoKklGX0NVUlJFTlQgPSBGb28uYmFyKikgYnk6ID0gRm9vLmJhclxuICAgLSByZW1vdmluZyB0aGUgZXh0cmEgdmFsdWVzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGVcbiAgIC0gcmVwbGFjaW5nIGFwcCBbdHlwZSAuLi5dIGJ5IFthbmQgLi4uXSB0byBtYWtlIGV2ZXJ5dGhpbmcgb25lIHJlY3Vyc2l2ZSBibG9ja1xuICAgLSBhZGRpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVtAQEBlbmRdIGF0IHRoZSBlbmRcblxuICAgVG8gdXBkYXRlIGl0IHRvIGEgbmV3ZXIgT0NhbWwgdmVyc2lvbiwgY3JlYXRlIGEgbmV3IG1vZHVsZSB3aXRoIHRoZSBhYm92ZSBmcm9tIHRoZVxuICAgbGF0ZXN0IGNvbXBpbGVyIGFuZCBhZGQgdGhlIGZvbGxvd2luZyBtb2R1bGUgZGVmaW5pdGlvbnMgYW5kIG9wZW5zIHRvIGdldCBpdCB0b1xuICAgY29tcGlsZTpcbiAgIFt7XG4gICAgbW9kdWxlIEFzdCA9IFZlcnNpb25zLk9DYW1sXzR4eFxuICAgIG9wZW4gQXN0LkFzdFxuICAgIG1vZHVsZSBMb2NhdGlvbiAgID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uXG4gICAgbW9kdWxlIExvbmdpZGVudCA9IE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcbiAgIH1dXG5cbiAgIE9uY2UgeW91IGhhdmUgZ2VuZXJhdGVkIHRoZSBpbmxpbmVkIGRlcml2ZWQgdHJhdmVyc2FsIGNsYXNzZXMgYnkgcnVubmluZ1xuICAgW3sgZHVuZSBidWlsZCBAbGludCB9XSB5b3UgY2FuIHJlcGxhY2UgdGhlIGFib3ZlIG1lbnRpb25lZCBtb2R1bGUgZGVmaW5pdGlvbnMgYnkgYVxuICAgW29wZW4gSW1wb3J0XSBhbmQgdXBkYXRlIFtJbXBvcnRdIHNvIHRoYXQgdGhlIFtKc10gbW9kdWxlIHBvaW50cyB0b1xuICAgW1ZlcnNpb25zLk9DYW1sXzR4eF0uXG4qKVxuXG4oKiBTb3VyY2UgY29kZSBsb2NhdGlvbnMgKHJhbmdlcyBvZiBwb3NpdGlvbnMpLCB1c2VkIGluIHBhcnNldHJlZS4gKilcblxudHlwZSBwb3NpdGlvbiA9IExleGluZy5wb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmFuZCBsb2NhdGlvbiA9IExvY2F0aW9uLnQgPSB7XG4gIGxvY19zdGFydCA6IHBvc2l0aW9uO1xuICBsb2NfZW5kIDogcG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmFuZCBsb2NhdGlvbl9zdGFjayA9IGxvY2F0aW9uIGxpc3RcblxuKCogTm90ZSBvbiB0aGUgdXNlIG9mIExleGluZy5wb3NpdGlvbiBpbiB0aGlzIG1vZHVsZS5cbiAgIElmIFtwb3NfZm5hbWUgPSBcIlwiXSwgdGhlbiB1c2UgWyFpbnB1dF9uYW1lXSBpbnN0ZWFkLlxuICAgSWYgW3Bvc19sbnVtID0gLTFdLCB0aGVuIFtwb3NfYm9sID0gMF0uIFVzZSBbcG9zX2NudW1dIGFuZFxuICAgcmUtcGFyc2UgdGhlIGZpbGUgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjaGFyYWN0ZXIgbnVtYmVycy5cbiAgIEVsc2UgYWxsIGZpZWxkcyBhcmUgY29ycmVjdC5cbiopXG5hbmQgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0geyB0eHQgOiAnYTsgbG9jIDogbG9jYXRpb24gfVxuXG4oKiBMb25nIGlkZW50aWZpZXJzLCB1c2VkIGluIHBhcnNldHJlZS4gKilcbmFuZCBsb25naWRlbnQgPSBMb25naWRlbnQudCA9XG4gIHwgTGlkZW50IG9mIHN0cmluZ1xuICB8IExkb3Qgb2YgbG9uZ2lkZW50ICogc3RyaW5nXG4gIHwgTGFwcGx5IG9mIGxvbmdpZGVudCAqIGxvbmdpZGVudFxuXG5hbmQgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2NcblxuKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuYW5kIHJlY19mbGFnID0gQXN0dHlwZXMucmVjX2ZsYWcgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuYW5kIGRpcmVjdGlvbl9mbGFnID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBVcHRvIHwgRG93bnRvXG5cbigqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuYW5kIHByaXZhdGVfZmxhZyA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IFByaXZhdGUgfCBQdWJsaWNcbmFuZCBtdXRhYmxlX2ZsYWcgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5hbmQgdmlydHVhbF9mbGFnID0gQXN0dHlwZXMudmlydHVhbF9mbGFnID0gVmlydHVhbCB8IENvbmNyZXRlXG5hbmQgb3ZlcnJpZGVfZmxhZyA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBPdmVycmlkZSB8IEZyZXNoXG5hbmQgY2xvc2VkX2ZsYWcgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyA9IENsb3NlZCB8IE9wZW5cbmFuZCBsYWJlbCA9IHN0cmluZ1xuXG5hbmQgYXJnX2xhYmVsID0gQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgfCBOb2xhYmVsXG4gIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICB8IE9wdGlvbmFsIG9mIHN0cmluZyAgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbmFuZCB2YXJpYW5jZSA9IEFzdHR5cGVzLnZhcmlhbmNlID0gQ292YXJpYW50IHwgQ29udHJhdmFyaWFudCB8IE5vVmFyaWFuY2VcbmFuZCBpbmplY3Rpdml0eSA9IEFzdHR5cGVzLmluamVjdGl2aXR5ID0gSW5qZWN0aXZlIHwgTm9JbmplY3Rpdml0eVxuXG4oKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG5hbmQgY29uc3RhbnQgPSBQYXJzZXRyZWUuY29uc3RhbnQgPVxuICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGV4Y2VwdFxuICAgICAgICAgIFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlciAqKVxuICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIGxvY2F0aW9uICogc3RyaW5nIG9wdGlvblxuICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy4gKilcbiAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGFyZSByZWplY3RlZFxuICAgICAgICAgIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbmFuZCBhdHRyaWJ1dGUgPSBQYXJzZXRyZWUuYXR0cmlidXRlID0ge1xuICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICBhdHRyX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW0BpZCBBUkddXSBhbmQgW1tAQGlkIEFSR11dLlxuXG4gICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULiBUaGUgY29tcGlsZXIgaWdub3Jlc1xuICAgIHVua25vd24gYXR0cmlidXRlcy4gKilcblxuYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4oKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgcGF5bG9hZCA9IFBhcnNldHJlZS5wYXlsb2FkID1cbiAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbPyBQXSBvciBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuYW5kIGNvcmVfdHlwZSA9IFBhcnNldHJlZS5jb3JlX3R5cGUgPSB7XG4gIHB0eXBfZGVzYyA6IGNvcmVfdHlwZV9kZXNjO1xuICBwdHlwX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwdHlwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvcmVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZF19LFxuICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19LiAqKVxuICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXSByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlXG4gICAgICAgICAgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS4gKilcbiAgfCBQdHlwX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19LFxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LiAqKVxuICB8IFB0eXBfY2xhc3Mgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsjdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCAjdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbWyBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWz4gYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfSxcbiAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uICopXG4gIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVxuICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZyB0byBhIGNvbnN0cmFpbnQgb24gYVxuICAgICAgICAgICAgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXG4gICAgICAgICAgXX1cbiAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9XG4gICAgICAgICAgICBbUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX0gW1BleHBfcG9seV19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9IFtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fSBbUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX0gW3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LiAqKVxuICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuYW5kIHBhY2thZ2VfdHlwZSA9IGxvbmdpZGVudF9sb2MgKiAobG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSkgbGlzdFxuKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG5cbiAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV0gcmVwcmVzZW50c1xuICAgICAgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uICopXG5cbmFuZCByb3dfZmllbGQgPSBQYXJzZXRyZWUucm93X2ZpZWxkID0ge1xuICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICBwcmZfbG9jIDogbG9jYXRpb247XG4gIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIHJvd19maWVsZF9kZXNjID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgIC0gW2BBIG9mIFRdIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYSBjb25zdGFudCAoZW1wdHkpXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvciAoc2VlXG4gICAgICAgICAgICA0LjIgaW4gdGhlIG1hbnVhbCkgKilcbiAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuYW5kIG9iamVjdF9maWVsZCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgPSB7XG4gIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gIHBvZl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbigqKiB7MiBQYXR0ZXJuc30gKilcblxuYW5kIHBhdHRlcm4gPSBQYXJzZXRyZWUucGF0dGVybiA9IHtcbiAgcHBhdF9kZXNjIDogcGF0dGVybl9kZXNjO1xuICBwcGF0X2xvYyA6IGxvY2F0aW9uO1xuICBwcGF0X2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwcGF0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHBhdHRlcm5fZGVzYyA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPVxuICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlciBidXQgcmVqZWN0ZWQgYnlcbiAgICAgICAgICB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBwYXRfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXSAqKVxuICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdICopXG4gIHwgUHBhdF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19XG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19XG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgfCBQcGF0X3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICB8IFBwYXRfb3BlbiBvZiBsb25naWRlbnRfbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBleHByZXNzaW9uID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gPSB7XG4gIHBleHBfZGVzYyA6IGV4cHJlc3Npb25fZGVzYztcbiAgcGV4cF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcGV4cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBleHByZXNzaW9uX2Rlc2MgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgfCBQZXhwX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF0gKilcbiAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSxcbiAgICAgICAgICBbMW5dICopXG4gIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXMgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF1cblxuICAgICAgICAgIE5vdGVzOlxuXG4gICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5IHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn0gW1BleHBfZnVuXX0uXG4gICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1cbiAgICAgICAgICAgIFtQZXhwX2Z1bl19LiAqKVxuICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICBbbGldIGNhbiBiZSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSAobm9uIGxhYmVsZWRcbiAgICAgICAgICBhcmd1bWVudCksIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH0gW0xhYmVsbGVkXX0gKGxhYmVsbGVkXG4gICAgICAgICAgYXJndW1lbnRzKSBvciB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbF19IChvcHRpb25hbFxuICAgICAgICAgIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBleHBfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV0gKilcbiAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0gKilcbiAgfCBQZXhwX3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICAoKiogW0UubF0gKilcbiAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99IFtVcHRvXX1cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99IFtEb3dudG9dfSAqKVxuICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gWyhFIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLiAqKVxuICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICB8IFBleHBfbmV3IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbbmV3IE0uY10gKilcbiAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9IFtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgdmFsdWVzKS4gKilcbiAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG5hbmQgY2FzZSA9IFBhcnNldHJlZS5jYXNlID0ge1xuICBwY19saHMgOiBwYXR0ZXJuO1xuICBwY19ndWFyZCA6IGV4cHJlc3Npb24gb3B0aW9uO1xuICBwY19yaHMgOiBleHByZXNzaW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG5hbmQgbGV0b3AgPSBQYXJzZXRyZWUubGV0b3AgPSB7XG4gIGxldF8gOiBiaW5kaW5nX29wO1xuICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICBib2R5IDogZXhwcmVzc2lvbjtcbn1cblxuYW5kIGJpbmRpbmdfb3AgPSBQYXJzZXRyZWUuYmluZGluZ19vcCA9IHtcbiAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gIHBib3BfcGF0IDogcGF0dGVybjtcbiAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICBwYm9wX2xvYyA6IGxvY2F0aW9uO1xufVxuXG4oKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPSB7XG4gIHB2YWxfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB2YWxfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcHZhbF9wcmltIDogc3RyaW5nIGxpc3Q7XG4gIHB2YWxfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB2YWxfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcblxuICAgIC0gW3ZhbCB4OiBUXSwgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19IFtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1cbiAgICAgIFtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXSAqKVxuXG4oKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHB0eXBlX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdHlwZV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgcHR5cGVfY3N0cnMgOiAoY29yZV90eXBlICogY29yZV90eXBlICogbG9jYXRpb24pIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICBwdHlwZV9raW5kIDogdHlwZV9raW5kO1xuICBwdHlwZV9wcml2YXRlIDogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgcHR5cGVfbWFuaWZlc3QgOiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgcHR5cGVfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB0eXBlX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbiwgZm9yIHZhcmlvdXNcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9IFtwdHlwZV9raW5kXX0gYW5kXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH0gW3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuXG4gICAgLSBbdHlwZSB0XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDBdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9XG4gICAgICBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fSBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1cbiAgICAgIFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfSBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSAuLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn0gW1B0eXBlX29wZW5dfSxcbiAgICAgIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXS4gKilcblxuYW5kIHR5cGVfa2luZCA9IFBhcnNldHJlZS50eXBlX2tpbmQgPVxuICB8IFB0eXBlX2Fic3RyYWN0XG4gIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gIHwgUHR5cGVfb3BlblxuXG5hbmQgbGFiZWxfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPSB7XG4gIHBsZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGxkX211dGFibGUgOiBtdXRhYmxlX2ZsYWc7XG4gIHBsZF90eXBlIDogY29yZV90eXBlO1xuICBwbGRfbG9jIDogbG9jYXRpb247XG4gIHBsZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW0BpZDFdIFtAaWQyXV0gKilcbn1cbigqKiAtIFt7IC4uLjsgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9IFtwbGRfbXV0YWJsZV19XG4gICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0sXG4gICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9XG4gICAgICBbcGxkX211dGFibGVdfSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfS5cblxuICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0ge1xuICBwY2RfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjZF92YXJzIDogc3RyaW5nIGxvYyBsaXN0O1xuICBwY2RfYXJncyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgcGNkX3JlcyA6IGNvcmVfdHlwZSBvcHRpb247XG4gIHBjZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29uc3RydWN0b3JfYXJndW1lbnRzID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259IHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yXG4gICAgICAgICAgYXJndW1lbnRzIG9mOlxuXG4gICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDOiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDIG9mIHsuLi59XSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAgICAgICAtIFtDOiB7Li4ufSAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLiAqKVxuXG5hbmQgdHlwZV9leHRlbnNpb24gPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSB7XG4gIHB0eWV4dF9wYXRoIDogbG9uZ2lkZW50X2xvYztcbiAgcHR5ZXh0X3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHB0eWV4dF9jb25zdHJ1Y3RvcnMgOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgcHR5ZXh0X3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7XG4gIHB0eWV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAoW3R5cGUgdCArPSAuLi5dKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSB7XG4gIHBleHRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICBwZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgdHlwZV9leGNlcHRpb24gPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPSB7XG4gIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgcHR5ZXhuX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXSBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uXG4gICAgICAgICAgY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcblxuICAgICAgICAgIHt1bFxuICAgICAgICAgICB7LSBbQyBvZiBUMSAqIC4uLiAqIFRuXVxuICAgICAgICAgICAgICB3aGVuOlxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbTm9uZV0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgIH0gKilcbiAgfCBQZXh0X3JlYmluZCBvZiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX3R5cGUgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSA9IHtcbiAgcGN0eV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjO1xuICBwY3R5X2xvYyA6IGxvY2F0aW9uO1xuICBwY3R5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICB8IFBjdHlfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgLSBbP2w6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19LiAqKVxuICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0ge1xuICBwY3NpZ19zZWxmIDogY29yZV90eXBlO1xuICBwY3NpZ19maWVsZHMgOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn0gW3Bjc2lnX3NlbGZdfSBpc1xuICAgICAge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9IFtQdHlwX2FueV19ICopXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSB7XG4gIHBjdGZfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgcGN0Zl9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0Zl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG4gIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgJ2EgY2xhc3NfaW5mb3MgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgPSB7XG4gIHBjaV92aXJ0IDogdmlydHVhbF9mbGFnO1xuICBwY2lfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcGNpX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2lfZXhwciA6ICdhO1xuICBwY2lfbG9jIDogbG9jYXRpb247XG4gIHBjaV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uICopXG5cbmFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX2V4cHIgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciA9IHtcbiAgcGNsX2Rlc2MgOiBjbGFzc19leHByX2Rlc2M7XG4gIHBjbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICB8IFBjbF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXS4gKilcbiAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLiBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yXG4gICAgICAgICAgc3RhcnQgd2l0aCBbP10gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG5hbmQgY2xhc3Nfc3RydWN0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9IHtcbiAgcGNzdHJfc2VsZiA6IHBhdHRlcm47XG4gIHBjc3RyX2ZpZWxkcyA6IGNsYXNzX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn0gW3Bjc3RyX3NlbGZdfSBpc1xuICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fSBbUHBhdF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgPSB7XG4gIHBjZl9kZXNjIDogY2xhc3NfZmllbGRfZGVzYztcbiAgcGNmX2xvYyA6IGxvY2F0aW9uO1xuICBwY2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9XG4gICAgICAgICAgICBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbU29tZSB4XSAqKVxuICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3ZhbCB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1cbiAgICAgICAgICAgIFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9XG4gICAgICAgICAgICBbTXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX0gKilcbiAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV0gKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVxuICAgICAgICAgICAgW1BleHBfcG9seV19KVxuICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVxuICAgICAgICAgICAgW1B0eXBfcG9seV19KSAqKVxuICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgY2xhc3NfZmllbGRfa2luZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4oKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfdHlwZSA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSA9IHtcbiAgcG10eV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYztcbiAgcG10eV9sb2MgOiBsb2NhdGlvbjtcbiAgcG10eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICB8IFBtdHlfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUG10eV9hbGlhcyBvZiBsb25naWRlbnRfbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbmFuZCBmdW5jdG9yX3BhcmFtZXRlciA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbmFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbmFuZCBzaWduYXR1cmVfaXRlbSA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9IHtcbiAgcHNpZ19kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgcHNpZ19sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gKilcbiAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICopXG4gIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgbW9kdWxlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG1kX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1kX3R5cGUgOiBtb2R1bGVfdHlwZTtcbiAgcG1kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbWRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG5hbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID0ge1xuICBwbXNfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtc19tYW5pZmVzdCA6IGxvbmdpZGVudF9sb2M7XG4gIHBtc19hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1zX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbmFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG10ZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcG10ZF90eXBlIDogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICBwbXRkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXRkX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW1MgPSBNVF0sXG4gICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCB3aGVuXG4gICAgICB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9IFtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uICopXG5cbmFuZCAnYSBvcGVuX2luZm9zID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgPSB7XG4gIHBvcGVuX2V4cHIgOiAnYTtcbiAgcG9wZW5fb3ZlcnJpZGUgOiBvdmVycmlkZV9mbGFnO1xuICBwb3Blbl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9wZW5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSAoc2lsZW5jZXMgdGhlIFwidXNlZFxuICAgICAgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9IFtGcmVzaF19ICopXG5cbmFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gbG9uZ2lkZW50X2xvYyBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT10gKilcblxuYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT11cbiAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG5hbmQgJ2EgaW5jbHVkZV9pbmZvcyA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zID0ge1xuICBwaW5jbF9tb2QgOiAnYTtcbiAgcGluY2xfbG9jIDogbG9jYXRpb247XG4gIHBpbmNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgfCBQd2l0aF90eXBlIG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZVxuICAgICAgICAgIHR5cGVfZGVjbGFyYXRpb24uICopXG4gIHwgUHdpdGhfbW9kdWxlIG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZSBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgfCBQd2l0aF9tb2RzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX2V4cHIgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgPSB7XG4gIHBtb2RfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2M7XG4gIHBtb2RfbG9jIDogbG9jYXRpb247XG4gIHBtb2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgfCBQbW9kX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbWF0gKilcbiAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbmFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9IHtcbiAgcHN0cl9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgcHN0cl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgdmFsdWVfYmluZGluZyA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID0ge1xuICBwdmJfcGF0IDogcGF0dGVybjtcbiAgcHZiX2V4cHIgOiBleHByZXNzaW9uO1xuICBwdmJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHB2Yl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIG1vZHVsZV9iaW5kaW5nID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID0ge1xuICBwbWJfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWJfZXhwciA6IG1vZHVsZV9leHByO1xuICBwbWJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHBtYl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbigqKiB7MSBUb3BsZXZlbH0gKilcbigqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG5hbmQgdG9wbGV2ZWxfcGhyYXNlID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG5hbmQgdG9wbGV2ZWxfZGlyZWN0aXZlID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSA9IHtcbiAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICBwZGlyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50ID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9IHtcbiAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICBwZGlyYV9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICB8IFBkaXJfaWRlbnQgb2YgbG9uZ2lkZW50XG4gIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuYW5kIGNhc2VzID0gY2FzZSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1cblxuY2xhc3MgdmlydHVhbCBtYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBpdGVyID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsaXN0IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wdGlvbiAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHVuaXRcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBzZWxmI3N0cmluZyBwb3NfZm5hbWU7XG4gICAgICAgIHNlbGYjaW50IHBvc19sbnVtO1xuICAgICAgICBzZWxmI2ludCBwb3NfYm9sO1xuICAgICAgICBzZWxmI2ludCBwb3NfY251bVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgICAgIHNlbGYjYm9vbCBsb2NfZ2hvc3RcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbG9jIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBfYSB0eHQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gbG9jXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBiXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gdW5pdCA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IHVuaXQgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKClcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGNcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWU7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gYXR0cl9sb2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKClcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGNcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgIGJcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHByZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNib29sIGI7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9mX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGJcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBkXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjO1xuICAgICAgICAgICAgc2VsZiNkaXJlY3Rpb25fZmxhZyBkO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGVcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYlxuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+ICgpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNfbGhzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwY19yaHNcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHNlbGYjYmluZGluZ19vcCBsZXRfO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHM7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBib2R5XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcDtcbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBib3BfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGJvcF9sb2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBjKVxuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+ICgpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWU7XG4gICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbGRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnM7XG4gICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGg7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lO1xuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBjbGFzc19pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwY2lfcGFyYW1zO1xuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZTtcbiAgICAgICAgX2EgcGNpX2V4cHI7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNpX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBkXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGJcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXR5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGJcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+ICgpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtZF9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWU7XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXNfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXRkX2xvY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wZW5faW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcG9wZW5fZXhwcjtcbiAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcGluY2xfbW9kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHN0cl9sb2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2Yl9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWJfbG9jXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBhY2NcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGEgYWNjXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IGFjY1xuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IGFjY1xuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGEgYWNjXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYSBhY2NcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBhY2NcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IGFjY1xuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBhY2NcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYSBhY2NcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYSBhY2NcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGRfbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gYm9vbCAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+IGNoYXIgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gaW50ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYSBsaXN0ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2Egb3B0aW9uICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gc3RyaW5nICogJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiBwb3NpdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSwgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2xudW0sIGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2JvbCwgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgKHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiBsb2NhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZW5kLCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QsIGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgICh7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gbG9jYXRpb25fc3RhY2sgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2EgbG9jICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgdHh0LCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBsb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICAoeyB0eHQ7IGxvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gbG9uZ2lkZW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExpZGVudCBhLCBhY2MpXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoTGRvdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgKExhcHBseSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+IGxvbmdpZGVudF9sb2MgKiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+IHJlY19mbGFnICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiBkaXJlY3Rpb25fZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gcHJpdmF0ZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiBtdXRhYmxlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+IHZpcnR1YWxfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiBvdmVycmlkZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gY2xvc2VkX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiBsYWJlbCAqICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+IGFyZ19sYWJlbCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIGFjYylcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMYWJlbGxlZCBhLCBhY2MpXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoT3B0aW9uYWwgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiB2YXJpYW5jZSAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gaW5qZWN0aXZpdHkgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiBjb25zdGFudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2ludGVnZXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2hhciBhIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9jaGFyIGEsIGFjYylcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X3N0cmluZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfZmxvYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gYXR0cmlidXRlICogJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkLCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiBhdHRyaWJ1dGVzICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+IHBheWxvYWQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTdHIgYSwgYWNjKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFNpZyBhLCBhY2MpXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQVHlwIGEsIGFjYylcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBQYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gY29yZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MsIGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXIgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NsYXNzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXJpYW50IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BhY2thZ2UgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiBwYWNrYWdlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiByb3dfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MsIGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiByb3dfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFJ0YWcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUmluaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+IG9iamVjdF9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYywgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChPdGFnIChhLCBiKSwgYWNjKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKE9pbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+IHBhdHRlcm4gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYywgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gcGF0dGVybl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXIgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9pbnRlcnZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90eXBlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+IGV4cHJlc3Npb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYywgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjYXNlcyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuY3Rpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbWF0Y2ggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHJ5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZpZWxkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VxdWVuY2UgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3doaWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBlLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29lcmNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZW5kIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ldyBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGluc3R2YXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX292ZXJyaWRlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXNzZXJ0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb2JqZWN0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ld3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGV0b3AgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG9wIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoUGV4cF91bnJlYWNoYWJsZSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gY2FzZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY19saHMsIGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBwY19ndWFyZCwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgcGNfcmhzLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICAoeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiBsZXRvcCAqICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgbGV0XywgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhbmRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBib2R5LCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgKHsgbGV0XzsgYW5kczsgYm9keSB9LCBhY2MpXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiBiaW5kaW5nX29wICogJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwYm9wX29wLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9wcmltLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQsIGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QsIGFjYyA9XG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+IHR5cGVfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgYWNjKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfdmFyaWFudCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3JlY29yZCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3BlbiwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2RfdmFycywgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXJncywgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfcmVzLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3JlY29yZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+IHR5cGVfZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gdHlwZV9leGNlcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciwgYWNjID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfZGVjbCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9yZWJpbmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gY2xhc3NfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjY1xuICAgICAgICBpblxuICAgICAgICAoeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc190eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9pbmhlcml0IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0LCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2lfZXhwciwgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwY2lfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiBjbGFzc19leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjbF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICAoeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaGVyaXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbml0aWFsaXplciBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKENma192aXJ0dWFsIGEsIGFjYylcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX2NvbmNyZXRlIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfd2l0aCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfdHlwZW9mIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9hbGlhcyBhLCBhY2MpXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgYWNjKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoTmFtZWQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjLCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgICh7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3ZhbHVlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1kX3R5cGUsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1zX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciwgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCwgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiB3aXRoX2NvbnN0cmFpbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHVsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kc3Vic3QgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+IG1vZHVsZV9leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2Rfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+IHN0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYywgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9ldmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ZhbHVlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9wcmltaXRpdmUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+IHZhbHVlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZiX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwdmJfZXhwciwgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gbW9kdWxlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2V4cHIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiB0b3BsZXZlbF9waHJhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RlZiBhLCBhY2MpXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kaXIgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9hcmcsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYywgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX3N0cmluZyBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2ludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNib29sIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9ib29sIGEsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gY2FzZXMgKiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zXG4gICAgICAgID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3B0aW9uIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBwb3NfbG51bSk7XG4gICAgICAgICAgICAoXCJwb3NfYm9sXCIsIHBvc19ib2wpO1xuICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgcG9zX2NudW0pO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgIChcImxvY19lbmRcIiwgbG9jX2VuZCk7XG4gICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgbG9jX2dob3N0KTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxvYyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJ0eHRcIiwgdHh0KTsgKFwibG9jXCIsIGxvYykgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGlkZW50XCIgWyBhIF1cbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGRvdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFwcGx5XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAncmVzID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiTm9ucmVjdXJzaXZlXCIgW11cbiAgICAgICAgfCBSZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJSZWN1cnNpdmVcIiBbXVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVcHRvIC0+IHNlbGYjY29uc3RyIFwiVXB0b1wiIFtdXG4gICAgICAgIHwgRG93bnRvIC0+IHNlbGYjY29uc3RyIFwiRG93bnRvXCIgW11cblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcml2YXRlIC0+IHNlbGYjY29uc3RyIFwiUHJpdmF0ZVwiIFtdXG4gICAgICAgIHwgUHVibGljIC0+IHNlbGYjY29uc3RyIFwiUHVibGljXCIgW11cblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbW11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJJbW11dGFibGVcIiBbXVxuICAgICAgICB8IE11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJNdXRhYmxlXCIgW11cblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBWaXJ0dWFsIC0+IHNlbGYjY29uc3RyIFwiVmlydHVhbFwiIFtdXG4gICAgICAgIHwgQ29uY3JldGUgLT4gc2VsZiNjb25zdHIgXCJDb25jcmV0ZVwiIFtdXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdmVycmlkZSAtPiBzZWxmI2NvbnN0ciBcIk92ZXJyaWRlXCIgW11cbiAgICAgICAgfCBGcmVzaCAtPiBzZWxmI2NvbnN0ciBcIkZyZXNoXCIgW11cblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+IHNlbGYjY29uc3RyIFwiQ2xvc2VkXCIgW11cbiAgICAgICAgfCBPcGVuIC0+IHNlbGYjY29uc3RyIFwiT3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IHNlbGYjY29uc3RyIFwiTm9sYWJlbFwiIFtdXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhYmVsbGVkXCIgWyBhIF1cbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3B0aW9uYWxcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDb3ZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb3ZhcmlhbnRcIiBbXVxuICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb250cmF2YXJpYW50XCIgW11cbiAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IHNlbGYjY29uc3RyIFwiTm9WYXJpYW5jZVwiIFtdXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEluamVjdGl2ZSAtPiBzZWxmI2NvbnN0ciBcIkluamVjdGl2ZVwiIFtdXG4gICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiBzZWxmI2NvbnN0ciBcIk5vSW5qZWN0aXZpdHlcIiBbXVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfaW50ZWdlclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfY2hhclwiIFsgYSBdXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3Rfc3RyaW5nXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2Zsb2F0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgYXR0cl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU3RyXCIgWyBhIF1cbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU2lnXCIgWyBhIF1cbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQVHlwXCIgWyBhIF1cbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQUGF0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgcHR5cF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBzZWxmI2NvbnN0ciBcIlB0eXBfYW55XCIgW11cbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9vYmplY3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY2xhc3NcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJpYW50XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wYWNrYWdlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcmZfbG9jXCIsIHByZl9sb2MpO1xuICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJ0YWdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIHBvZl9sb2MpO1xuICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3RhZ1wiIFsgYTsgYiBdXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9pbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgcHBhdF9sb2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IHNlbGYjY29uc3RyIFwiUHBhdF9hbnlcIiBbXVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9pbnRlcnZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgcGV4cF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuY3Rpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX21hdGNoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHJ5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZmllbGRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0ZmllbGRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lmdGhlbmVsc2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VxdWVuY2VcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfd2hpbGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mb3JcIiBbIGE7IGI7IGM7IGQ7IGUgXVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb2VyY2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VuZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3ZlcnJpZGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0bW9kdWxlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Fzc2VydFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vYmplY3RcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BhY2tcIiBbIGEgXVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vcGVuXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0b3BcIiBbIGEgXVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBzZWxmI2NvbnN0ciBcIlBleHBfdW5yZWFjaGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY19saHNcIiwgcGNfbGhzKTsgKFwicGNfZ3VhcmRcIiwgcGNfZ3VhcmQpOyAoXCJwY19yaHNcIiwgcGNfcmhzKSBdXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJsZXRfXCIsIGxldF8pOyAoXCJhbmRzXCIsIGFuZHMpOyAoXCJib2R5XCIsIGJvZHkpIF1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBwYm9wX29wKTtcbiAgICAgICAgICAgIChcInBib3BfcGF0XCIsIHBib3BfcGF0KTtcbiAgICAgICAgICAgIChcInBib3BfZXhwXCIsIHBib3BfZXhwKTtcbiAgICAgICAgICAgIChcInBib3BfbG9jXCIsIHBib3BfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgcHZhbF9wcmltKTtcbiAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgcHZhbF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBwdHlwZV9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX2Fic3RyYWN0XCIgW11cbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV92YXJpYW50XCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3JlY29yZFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX29wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIHBsZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgIChcInBsZF90eXBlXCIsIHBsZF90eXBlKTtcbiAgICAgICAgICAgIChcInBsZF9sb2NcIiwgcGxkX2xvYyk7XG4gICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBwY2RfdmFycyk7XG4gICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBwY2RfYXJncyk7XG4gICAgICAgICAgICAoXCJwY2RfcmVzXCIsIHBjZF9yZXMpO1xuICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBwY2RfbG9jKTtcbiAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl9yZWNvcmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgcGV4dF9raW5kKTtcbiAgICAgICAgICAgIChcInBleHRfbG9jXCIsIHBleHRfbG9jKTtcbiAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfZGVjbFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X3JlYmluZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIHBjdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc2lnX3NlbGZcIiwgcGNzaWdfc2VsZik7IChcInBjc2lnX2ZpZWxkc1wiLCBwY3NpZ19maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfaW5oZXJpdFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIHBjaV92aXJ0KTtcbiAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBwY2lfZXhwcik7XG4gICAgICAgICAgICAoXCJwY2lfbG9jXCIsIHBjaV9sb2MpO1xuICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2xfbG9jXCIsIHBjbF9sb2MpO1xuICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzdHJfc2VsZlwiLCBwY3N0cl9zZWxmKTsgKFwicGNzdHJfZmllbGRzXCIsIHBjc3RyX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBwY2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbmhlcml0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbml0aWFsaXplclwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX3ZpcnR1YWxcIiBbIGEgXVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX2NvbmNyZXRlXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgcG10eV9sb2MpO1xuICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV93aXRoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3R5cGVvZlwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9hbGlhc1wiIFsgYSBdXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gc2VsZiNjb25zdHIgXCJVbml0XCIgW11cbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJOYW1lZFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzaWdfZGVzY1wiLCBwc2lnX2Rlc2MpOyAoXCJwc2lnX2xvY1wiLCBwc2lnX2xvYykgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3ZhbHVlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgcG1kX25hbWUpO1xuICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgcG1kX3R5cGUpO1xuICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBwbWRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtc19uYW1lXCIsIHBtc19uYW1lKTtcbiAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBwbXNfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIHBtdGRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgcGluY2xfbW9kKTtcbiAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHVsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2RzdWJzdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIHBtb2RfbG9jKTtcbiAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHN0cl9kZXNjXCIsIHBzdHJfZGVzYyk7IChcInBzdHJfbG9jXCIsIHBzdHJfbG9jKSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ZhbHVlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ByaW1pdGl2ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHB2Yl9wYXQpO1xuICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgcHZiX2V4cHIpO1xuICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBwdmJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgcG1iX25hbWUpO1xuICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgcG1iX2V4cHIpO1xuICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBwbWJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGVmXCIgWyBhIF1cbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kaXJcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBwZGlyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBkaXJhX2Rlc2NcIiwgcGRpcmFfZGVzYyk7IChcInBkaXJhX2xvY1wiLCBwZGlyYV9sb2MpIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfc3RyaW5nXCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2ludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9ib29sXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2wgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZyAqICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvc19mbmFtZSA9IFN0ZGxpYi5mc3QgcG9zX2ZuYW1lO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBTdGRsaWIuZnN0IHBvc19sbnVtO1xuICAgICAgICAgICAgcG9zX2JvbCA9IFN0ZGxpYi5mc3QgcG9zX2JvbDtcbiAgICAgICAgICAgIHBvc19jbnVtID0gU3RkbGliLmZzdCBwb3NfY251bTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgU3RkbGliLnNuZCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBTdGRsaWIuc25kIHBvc19sbnVtKTtcbiAgICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBTdGRsaWIuc25kIHBvc19ib2wpO1xuICAgICAgICAgICAgICAoXCJwb3NfY251bVwiLCBTdGRsaWIuc25kIHBvc19jbnVtKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbG9jX3N0YXJ0ID0gU3RkbGliLmZzdCBsb2Nfc3RhcnQ7XG4gICAgICAgICAgICBsb2NfZW5kID0gU3RkbGliLmZzdCBsb2NfZW5kO1xuICAgICAgICAgICAgbG9jX2dob3N0ID0gU3RkbGliLmZzdCBsb2NfZ2hvc3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIFN0ZGxpYi5zbmQgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBTdGRsaWIuc25kIGxvY19lbmQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgU3RkbGliLnNuZCBsb2NfZ2hvc3QpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICAoIHsgdHh0ID0gU3RkbGliLmZzdCB0eHQ7IGxvYyA9IFN0ZGxpYi5mc3QgbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4IFsgKFwidHh0XCIsIFN0ZGxpYi5zbmQgdHh0KTsgKFwibG9jXCIsIFN0ZGxpYi5zbmQgbG9jKSBdXG4gICAgICAgIClcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKExpZGVudCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiTGlkZW50XCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBMZG90IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxkb3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGFwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jICogJ3JlcyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCAqICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIHNlbGYjY29uc3RyIGN0eCBcIk5vbGFiZWxcIiBbXSlcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIExhYmVsbGVkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYWJlbGxlZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggT3B0aW9uYWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9wdGlvbmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfaW50ZWdlciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfaW50ZWdlclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2NoYXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9jaGFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgKCBQY29uc3Rfc3RyaW5nIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X3N0cmluZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9mbG9hdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfZmxvYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGF0dHJfbmFtZSA9IFN0ZGxpYi5mc3QgYXR0cl9uYW1lO1xuICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gU3RkbGliLmZzdCBhdHRyX3BheWxvYWQ7XG4gICAgICAgICAgICBhdHRyX2xvYyA9IFN0ZGxpYi5mc3QgYXR0cl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIFN0ZGxpYi5zbmQgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIFN0ZGxpYi5zbmQgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgU3RkbGliLnNuZCBhdHRyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU3RyIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU3RyXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU2lnIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU2lnXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQVHlwIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQVHlwXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBQYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUFBhdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gU3RkbGliLmZzdCBwdHlwX2Rlc2M7XG4gICAgICAgICAgICBwdHlwX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgU3RkbGliLnNuZCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYW55XCIgW10pXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jbGFzcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NsYXNzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhcmlhbnRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfcGFja2FnZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wYWNrYWdlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHJmX2Rlc2MgPSBTdGRsaWIuZnN0IHByZl9kZXNjO1xuICAgICAgICAgICAgcHJmX2xvYyA9IFN0ZGxpYi5mc3QgcHJmX2xvYztcbiAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcmZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBTdGRsaWIuc25kIHByZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBTdGRsaWIuc25kIHByZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBSdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUnRhZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUmluaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJpbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcG9mX2Rlc2M7XG4gICAgICAgICAgICBwb2ZfbG9jID0gU3RkbGliLmZzdCBwb2ZfbG9jO1xuICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcG9mX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBPdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk90YWdcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggT2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IFN0ZGxpYi5mc3QgcHBhdF9kZXNjO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBTdGRsaWIuZnN0IHBwYXRfbG9jO1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgU3RkbGliLnNuZCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FueVwiIFtdKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2ludGVydmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfaW50ZXJ2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IFN0ZGxpYi5mc3QgcGV4cF9kZXNjO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBTdGRsaWIuZnN0IHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBleHBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgU3RkbGliLnNuZCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1bmN0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1bmN0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9tYXRjaCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX21hdGNoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF90cnkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90cnlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2ZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZmllbGRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0ZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGZpZWxkXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9pZnRoZW5lbHNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZnRoZW5lbHNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlcXVlbmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VxdWVuY2VcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF93aGlsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3doaWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgICggUGV4cF9mb3JcbiAgICAgICAgICAgICAgICAoIFN0ZGxpYi5mc3QgYSxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYixcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYyxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZCxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZSApLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZvclwiXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBhO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBiO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBjO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBkO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBlO1xuICAgICAgICAgICAgICAgIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfY29lcmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb2VyY2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VuZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlbmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRpbnN0dmFyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0aW5zdHZhclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfb3ZlcnJpZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3ZlcnJpZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG1vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2xldGV4Y2VwdGlvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXNzZXJ0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Fzc2VydFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXd0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3dHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3BhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG9wIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG9wXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAoUGV4cF91bnJlYWNoYWJsZSwgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdKVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjX2xocyA9IFN0ZGxpYi5mc3QgcGNfbGhzO1xuICAgICAgICAgICAgcGNfZ3VhcmQgPSBTdGRsaWIuZnN0IHBjX2d1YXJkO1xuICAgICAgICAgICAgcGNfcmhzID0gU3RkbGliLmZzdCBwY19yaHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNfbGhzXCIsIFN0ZGxpYi5zbmQgcGNfbGhzKTtcbiAgICAgICAgICAgICAgKFwicGNfZ3VhcmRcIiwgU3RkbGliLnNuZCBwY19ndWFyZCk7XG4gICAgICAgICAgICAgIChcInBjX3Joc1wiLCBTdGRsaWIuc25kIHBjX3Jocyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbGV0XyA9IFN0ZGxpYi5mc3QgbGV0XztcbiAgICAgICAgICAgIGFuZHMgPSBTdGRsaWIuZnN0IGFuZHM7XG4gICAgICAgICAgICBib2R5ID0gU3RkbGliLmZzdCBib2R5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxldF9cIiwgU3RkbGliLnNuZCBsZXRfKTtcbiAgICAgICAgICAgICAgKFwiYW5kc1wiLCBTdGRsaWIuc25kIGFuZHMpO1xuICAgICAgICAgICAgICAoXCJib2R5XCIsIFN0ZGxpYi5zbmQgYm9keSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwYm9wX29wID0gU3RkbGliLmZzdCBwYm9wX29wO1xuICAgICAgICAgICAgcGJvcF9wYXQgPSBTdGRsaWIuZnN0IHBib3BfcGF0O1xuICAgICAgICAgICAgcGJvcF9leHAgPSBTdGRsaWIuZnN0IHBib3BfZXhwO1xuICAgICAgICAgICAgcGJvcF9sb2MgPSBTdGRsaWIuZnN0IHBib3BfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBib3Bfb3BcIiwgU3RkbGliLnNuZCBwYm9wX29wKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgU3RkbGliLnNuZCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAgIChcInBib3BfZXhwXCIsIFN0ZGxpYi5zbmQgcGJvcF9leHApO1xuICAgICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBTdGRsaWIuc25kIHBib3BfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZhbF9uYW1lID0gU3RkbGliLmZzdCBwdmFsX25hbWU7XG4gICAgICAgICAgICBwdmFsX3R5cGUgPSBTdGRsaWIuZnN0IHB2YWxfdHlwZTtcbiAgICAgICAgICAgIHB2YWxfcHJpbSA9IFN0ZGxpYi5mc3QgcHZhbF9wcmltO1xuICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmFsX2xvYyA9IFN0ZGxpYi5mc3QgcHZhbF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIFN0ZGxpYi5zbmQgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIFN0ZGxpYi5zbmQgcHZhbF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIFN0ZGxpYi5zbmQgcHZhbF9wcmltKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgU3RkbGliLnNuZCBwdmFsX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZSA9IFN0ZGxpYi5mc3QgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBTdGRsaWIuZnN0IHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZCA9IFN0ZGxpYi5mc3QgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jID0gU3RkbGliLmZzdCBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBTdGRsaWIuc25kIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBTdGRsaWIuc25kIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBTdGRsaWIuc25kIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBlX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX2Fic3RyYWN0XCIgW10pXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX29wZW5cIiBbXSlcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGxkX25hbWUgPSBTdGRsaWIuZnN0IHBsZF9uYW1lO1xuICAgICAgICAgICAgcGxkX211dGFibGUgPSBTdGRsaWIuZnN0IHBsZF9tdXRhYmxlO1xuICAgICAgICAgICAgcGxkX3R5cGUgPSBTdGRsaWIuZnN0IHBsZF90eXBlO1xuICAgICAgICAgICAgcGxkX2xvYyA9IFN0ZGxpYi5mc3QgcGxkX2xvYztcbiAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbGRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBTdGRsaWIuc25kIHBsZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgU3RkbGliLnNuZCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAgIChcInBsZF90eXBlXCIsIFN0ZGxpYi5zbmQgcGxkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbG9jXCIsIFN0ZGxpYi5zbmQgcGxkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNkX25hbWUgPSBTdGRsaWIuZnN0IHBjZF9uYW1lO1xuICAgICAgICAgICAgcGNkX3ZhcnMgPSBTdGRsaWIuZnN0IHBjZF92YXJzO1xuICAgICAgICAgICAgcGNkX2FyZ3MgPSBTdGRsaWIuZnN0IHBjZF9hcmdzO1xuICAgICAgICAgICAgcGNkX3JlcyA9IFN0ZGxpYi5mc3QgcGNkX3JlcztcbiAgICAgICAgICAgIHBjZF9sb2MgPSBTdGRsaWIuZnN0IHBjZF9sb2M7XG4gICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgU3RkbGliLnNuZCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjZF92YXJzXCIsIFN0ZGxpYi5zbmQgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBTdGRsaWIuc25kIHBjZF9hcmdzKTtcbiAgICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBTdGRsaWIuc25kIHBjZF9yZXMpO1xuICAgICAgICAgICAgICAoXCJwY2RfbG9jXCIsIFN0ZGxpYi5zbmQgcGNkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aCA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgU3RkbGliLnNuZCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXh0X25hbWUgPSBTdGRsaWIuZnN0IHBleHRfbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IFN0ZGxpYi5mc3QgcGV4dF9raW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBTdGRsaWIuZnN0IHBleHRfbG9jO1xuICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIFN0ZGxpYi5zbmQgcGV4dF9raW5kKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgU3RkbGliLnNuZCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2xvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgU3RkbGliLnNuZCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4dF9kZWNsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9kZWNsXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4dF9yZWJpbmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfcmViaW5kXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gU3RkbGliLmZzdCBwY3R5X2Rlc2M7XG4gICAgICAgICAgICBwY3R5X2xvYyA9IFN0ZGxpYi5mc3QgcGN0eV9sb2M7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgU3RkbGliLnNuZCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBTdGRsaWIuc25kIHBjdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY3R5X2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc2lnX3NlbGYgPSBTdGRsaWIuZnN0IHBjc2lnX3NlbGY7XG4gICAgICAgICAgICBwY3NpZ19maWVsZHMgPSBTdGRsaWIuZnN0IHBjc2lnX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3NpZ19zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzaWdfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc2lnX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc2lnX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjdGZfZGVzYztcbiAgICAgICAgICAgIHBjdGZfbG9jID0gU3RkbGliLmZzdCBwY3RmX2xvYztcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBTdGRsaWIuc25kIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfdmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNpX3ZpcnQgPSBTdGRsaWIuZnN0IHBjaV92aXJ0O1xuICAgICAgICAgICAgcGNpX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcGNpX3BhcmFtcztcbiAgICAgICAgICAgIHBjaV9uYW1lID0gU3RkbGliLmZzdCBwY2lfbmFtZTtcbiAgICAgICAgICAgIHBjaV9leHByID0gU3RkbGliLmZzdCBwY2lfZXhwcjtcbiAgICAgICAgICAgIHBjaV9sb2MgPSBTdGRsaWIuZnN0IHBjaV9sb2M7XG4gICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgU3RkbGliLnNuZCBwY2lfdmlydCk7XG4gICAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgU3RkbGliLnNuZCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjaV9leHByXCIsIFN0ZGxpYi5zbmQgcGNpX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwY2lfbG9jXCIsIFN0ZGxpYi5zbmQgcGNpX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IFN0ZGxpYi5mc3QgcGNsX2Rlc2M7XG4gICAgICAgICAgICBwY2xfbG9jID0gU3RkbGliLmZzdCBwY2xfbG9jO1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgICggUGNsX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNsX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2xfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc3RyX3NlbGYgPSBTdGRsaWIuZnN0IHBjc3RyX3NlbGY7XG4gICAgICAgICAgICBwY3N0cl9maWVsZHMgPSBTdGRsaWIuZnN0IHBjc3RyX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3N0cl9zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzdHJfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc3RyX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc3RyX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjZl9kZXNjO1xuICAgICAgICAgICAgcGNmX2xvYyA9IFN0ZGxpYi5mc3QgcGNmX2xvYztcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBjZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBTdGRsaWIuc25kIHBjZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUGNmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9pbml0aWFsaXplciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaXRpYWxpemVyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggQ2ZrX3ZpcnR1YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma192aXJ0dWFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIENma19jb25jcmV0ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfY29uY3JldGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10eV9kZXNjID0gU3RkbGliLmZzdCBwbXR5X2Rlc2M7XG4gICAgICAgICAgICBwbXR5X2xvYyA9IFN0ZGxpYi5mc3QgcG10eV9sb2M7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgU3RkbGliLnNuZCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBTdGRsaWIuc25kIHBtdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X3dpdGggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV93aXRoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV90eXBlb2YgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfdHlwZW9mXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfYWxpYXMgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBzZWxmI2NvbnN0ciBjdHggXCJVbml0XCIgW10pXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBOYW1lZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJOYW1lZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgKCB7IHBzaWdfZGVzYyA9IFN0ZGxpYi5mc3QgcHNpZ19kZXNjOyBwc2lnX2xvYyA9IFN0ZGxpYi5mc3QgcHNpZ19sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHNpZ19kZXNjXCIsIFN0ZGxpYi5zbmQgcHNpZ19kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHNpZ19sb2NcIiwgU3RkbGliLnNuZCBwc2lnX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3ZhbHVlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBTdGRsaWIuZnN0IHBtZF9uYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSBTdGRsaWIuZnN0IHBtZF90eXBlO1xuICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1kX2xvYyA9IFN0ZGxpYi5mc3QgcG1kX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBTdGRsaWIuc25kIHBtZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgU3RkbGliLnNuZCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWRfbG9jXCIsIFN0ZGxpYi5zbmQgcG1kX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXNfbmFtZSA9IFN0ZGxpYi5mc3QgcG1zX25hbWU7XG4gICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHBtc19tYW5pZmVzdDtcbiAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtc19sb2MgPSBTdGRsaWIuZnN0IHBtc19sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgU3RkbGliLnNuZCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXNfbG9jXCIsIFN0ZGxpYi5zbmQgcG1zX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gU3RkbGliLmZzdCBwbXRkX25hbWU7XG4gICAgICAgICAgICBwbXRkX3R5cGUgPSBTdGRsaWIuZnN0IHBtdGRfdHlwZTtcbiAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG10ZF9sb2MgPSBTdGRsaWIuZnN0IHBtdGRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBTdGRsaWIuc25kIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBTdGRsaWIuc25kIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIFN0ZGxpYi5zbmQgcG10ZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gU3RkbGliLmZzdCBwb3Blbl9leHByO1xuICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBTdGRsaWIuZnN0IHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gU3RkbGliLmZzdCBwb3Blbl9sb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgU3RkbGliLnNuZCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgU3RkbGliLnNuZCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBTdGRsaWIuc25kIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBpbmNsX21vZCA9IFN0ZGxpYi5mc3QgcGluY2xfbW9kO1xuICAgICAgICAgICAgcGluY2xfbG9jID0gU3RkbGliLmZzdCBwaW5jbF9sb2M7XG4gICAgICAgICAgICBwaW5jbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwaW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBTdGRsaWIuc25kIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBTdGRsaWIuc25kIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVzdWJzdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gU3RkbGliLmZzdCBwbW9kX2Rlc2M7XG4gICAgICAgICAgICBwbW9kX2xvYyA9IFN0ZGxpYi5mc3QgcG1vZF9sb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgU3RkbGliLnNuZCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBTdGRsaWIuc25kIHBtb2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2Rfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgKCB7IHBzdHJfZGVzYyA9IFN0ZGxpYi5mc3QgcHN0cl9kZXNjOyBwc3RyX2xvYyA9IFN0ZGxpYi5mc3QgcHN0cl9sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHN0cl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHN0cl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHN0cl9sb2NcIiwgU3RkbGliLnNuZCBwc3RyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9ldmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdmFsdWUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl92YWx1ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcHJpbWl0aXZlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ByaW1pdGl2ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBTdGRsaWIuZnN0IHB2Yl9wYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IFN0ZGxpYi5mc3QgcHZiX2V4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmJfbG9jID0gU3RkbGliLmZzdCBwdmJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgU3RkbGliLnNuZCBwdmJfcGF0KTtcbiAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgU3RkbGliLnNuZCBwdmJfZXhwcik7XG4gICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIFN0ZGxpYi5zbmQgcHZiX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWJfbmFtZSA9IFN0ZGxpYi5mc3QgcG1iX25hbWU7XG4gICAgICAgICAgICBwbWJfZXhwciA9IFN0ZGxpYi5mc3QgcG1iX2V4cHI7XG4gICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWJfbG9jID0gU3RkbGliLmZzdCBwbWJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1iX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBTdGRsaWIuc25kIHBtYl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtYl9sb2NcIiwgU3RkbGliLnNuZCBwbWJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kZWYgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGVmXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RpciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kaXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJfbmFtZSA9IFN0ZGxpYi5mc3QgcGRpcl9uYW1lO1xuICAgICAgICAgICAgcGRpcl9hcmcgPSBTdGRsaWIuZnN0IHBkaXJfYXJnO1xuICAgICAgICAgICAgcGRpcl9sb2MgPSBTdGRsaWIuZnN0IHBkaXJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBTdGRsaWIuc25kIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIFN0ZGxpYi5zbmQgcGRpcl9hcmcpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcmFfZGVzYyA9IFN0ZGxpYi5mc3QgcGRpcmFfZGVzYztcbiAgICAgICAgICAgIHBkaXJhX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcmFfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJhX2Rlc2NcIiwgU3RkbGliLnNuZCBwZGlyYV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGRpcmFfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcmFfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9zdHJpbmcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfc3RyaW5nXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQZGlyX2ludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2ludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9ib29sIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2Jvb2xcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgKiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuW0BAQGVuZF1cbltAQEBlbmRdXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IudFxuXG5sZXQgdG9fZXh0ZW5zaW9uIChlcnJvciA6IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50KSA9XG4gIGxldCBvcGVuIEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBpblxuICBsZXQgb3BlbiBBc3RfaGVscGVyIGluXG4gIGlmIG5vdCAoaXNfd2VsbF9mb3JtZWQgZXJyb3IpIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcInRvX2V4dGVuc2lvbjogZXhwZWN0ZWQga2luZCBSZXBvcnRfZXJyb3JcIik7XG4gIGxldCBzdWJfbXNncyA9IHN1Yl9tc2dzIGVycm9yIGluXG4gIGxldCBtYWluX21zZyA9IG1haW5fbXNnIGVycm9yIGluXG4gIGxldCBlcnJfZXh0ZW5zaW9uX25hbWUgbG9jID0geyBMb2NhdGlvbi5sb2M7IHR4dCA9IFwib2NhbWwuZXJyb3JcIiB9IGluXG4gIGxldCBta19zdHJpbmdfY29uc3RhbnQgeCA9IFN0ci5ldmFsIChFeHAuY29uc3RhbnQgKENvbnN0LnN0cmluZyB4KSkgaW5cbiAgbGV0IGV4dGVuc2lvbl9vZl9zdWJfbXNnIChzdWJfbXNnIDogc3RyaW5nIExvY2F0aW9uLmxvYykgPVxuICAgIFN0ci5leHRlbnNpb25cbiAgICAgIChlcnJfZXh0ZW5zaW9uX25hbWUgc3ViX21zZy5sb2MsIFBTdHIgWyBta19zdHJpbmdfY29uc3RhbnQgc3ViX21zZy50eHQgXSlcbiAgaW5cbiAgKCBlcnJfZXh0ZW5zaW9uX25hbWUgbWFpbl9tc2cubG9jLFxuICAgIFBhcnNldHJlZS5QU3RyXG4gICAgICAobWtfc3RyaW5nX2NvbnN0YW50IG1haW5fbXNnLnR4dCA6OiBMaXN0Lm1hcCBleHRlbnNpb25fb2Zfc3ViX21zZyBzdWJfbXNncylcbiAgKVxuXG5sZXQgcmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLnJlZ2lzdGVyX2Vycm9yX29mX2V4blxuXG5sZXQgbWVzc2FnZSBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi50eHQ7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICB0eHRcblxubGV0IHNldF9tZXNzYWdlID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX21zZ1xuXG5sZXQgbWFrZSB+bG9jIHR4dCB+c3ViID1cbiAgbGV0IHN1YiA9IExpc3QubWFwIChmdW4gKGxvYywgdHh0KSAtPiB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IHR4dCB9KSBzdWIgaW5cbiAgQXN0bGliLkxvY2F0aW9uLkVycm9yLm1ha2UgfnN1YiB7IGxvYzsgdHh0IH1cblxubGV0IHVwZGF0ZV9sb2MgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbG9jXG5cbmxldCBnZXRfbG9jYXRpb24gZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24ubG9jOyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgbG9jXG5cbmxldCBvZl9leG4gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iub2ZfZXhuXG5sZXQgcmFpc2UgZXJyb3IgPSByYWlzZSAoQXN0bGliLkxvY2F0aW9uLkVycm9yIGVycm9yKVxuIiwibW9kdWxlIERvX25vdF91c2VfZGlyZWN0bHkgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgQWZsX2luc3RydW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWZsX2luc3RydW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIEFsaWFzX2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsaWFzX2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBBbGxvY2F0ZWRfY29uc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxsb2NhdGVkX2NvbnN0IGluc3RlYWRcIl1cbm1vZHVsZSBBbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXJjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BcmNoIGluc3RlYWRcIl1cbm1vZHVsZSBBcmdfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXJnX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saW5rIGluc3RlYWRcIl1cbm1vZHVsZSBBc21wYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21wYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdHR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBdHRyX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkF0dHJfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBCYWNrZW5kX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJhY2tlbmRfdmFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJhY2tlbmRfdmFyIGluc3RlYWRcIl1cbm1vZHVsZSBCaW51dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJpbnV0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbl9pbnRmIGluc3RlYWRcIl1cbm1vZHVsZSBCdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ0eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9leHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CdWlsZF9leHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfcGF0aF9wcmVmaXhfbWFwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbGRfcGF0aF9wcmVmaXhfbWFwIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsdGluX2F0dHJpYnV0ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsdGluX2F0dHJpYnV0ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVnZW4gaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVsaWJyYXJpYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVsaW5rID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXBhY2thZ2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVzZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ5dGVzZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ1NFID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNTRSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ1NFZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNTRWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2FtbGludGVybmFsTWVuaGlyTGliID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2FtbGludGVybmFsTWVuaGlyTGliIGluc3RlYWRcIl1cbm1vZHVsZSBDY29tcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNjb21wIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIENsZmxhZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbGZsYWdzIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfY29udmVyc2lvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb24gaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfY29udmVyc2lvbl9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9lbGVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfZWxlbWVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX29mZnNldHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vZmZzZXRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX29yaWdpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21pX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtaV9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW0gaW5zdGVhZFwiXVxubW9kdWxlIENtbV9oZWxwZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9oZWxwZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tZ2VuX3N0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbWdlbl9zdGF0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21vX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ210MmFubm90ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ210MmFubm90IGluc3RlYWRcIl1cbm1vZHVsZSBDbXRfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ210X2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ214X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ214c19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbG9yaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbG9yaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBDb21iYWxsb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tYmFsbG9jIGluc3RlYWRcIl1cbm1vZHVsZSBDb21wZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsYXRpb25fdW5pdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxhdGlvbl91bml0IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5Db21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlX2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBpbGVfY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21wbWlzYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBtaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25maWcgaW5zdGVhZFwiXVxubW9kdWxlIENvbmZpZ19ib290ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb25maWdfbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uc2lzdGJsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uc2lzdGJsIGluc3RlYWRcIl1cbm1vZHVsZSBDb252ZXJ0X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29udmVydF9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkN0eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhZmxvdyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EYXRhZmxvdyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YXJlcHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EYXRhcmVwciBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVhZGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGVhZGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIERlYnVnaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlYnVnaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVwZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBEaWZmaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZ193aXRoX2tleXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nX3dpdGhfa2V5cyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGxsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGxsIGluc3RlYWRcIl1cbm1vZHVsZSBEb2NzdHJpbmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9jc3RyaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9tYWluc3RhdGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb21haW5zdGF0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRWZmZWN0X2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVmZmVjdF9hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXRhdXggaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FbWl0Y29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52IGluc3RlYWRcIl1cbm1vZHVsZSBFbnZhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnZhdXggaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnRyYWNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRXJyb3J0cmFjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvX2Zvcl9wYWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvX2Zvcl9wYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBFeHB1bmdlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFeHRyYWN0X3Byb2plY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4dHJhY3RfcHJvamVjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIEZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9pdGVyYXRvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pdGVyYXRvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfbWlkZGxlX2VuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX21pZGRsZV9lbmQgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfdG9fY2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3RvX2NsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfdXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV91dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgRnJlc2hlbmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GcmVzaGVuaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBHZW5wcmludHZhbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuR2VucHJpbnR2YWwgaW5zdGVhZFwiXVxubW9kdWxlIElkX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklkX3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBJZGVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBJZGVudGlmaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudGlmaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIEltcG9ydF9hcHByb3ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW1wb3J0X2FwcHJveCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kX2Vycm9ycHJpbnRlciBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jb25zdGFudF9pZGVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5jb25zdGFudF9pZGVudHMgaW5zdGVhZFwiXVxubW9kdWxlIEluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmVfYW5kX3NpbXBsaWZ5IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5X2F1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmVfYW5kX3NpbXBsaWZ5X2F1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfY29zdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19jb3N0IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19kZWNpc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzX3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ190cmFuc2Zvcm1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3RyYW5zZm9ybXMgaW5zdGVhZFwiXVxubW9kdWxlIEluc3RydWN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5JbnN0cnVjdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5zdGVhZFwiXVxubW9kdWxlIEludGVyZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcmYgaW5zdGVhZFwiXVxubW9kdWxlIEludGVybmFsX3ZhcmlhYmxlX25hbWVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVybmFsX3ZhcmlhYmxlX25hbWVzIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcnZhbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcnZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW52YXJpYW50X3BhcmFtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnZhcmlhbnRfcGFyYW1zIGluc3RlYWRcIl1cbm1vZHVsZSBMYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIExhenlfYmFja3RyYWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGF6eV9iYWNrdHJhY2sgaW5zdGVhZFwiXVxubW9kdWxlIExleGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGV4ZXIgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvZGUgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29uc3RhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2xldF90b19pbml0aWFsaXplX3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2xldF90b19pbml0aWFsaXplX3N5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJpemUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyaXplIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5rYWdlX25hbWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlua2FnZV9uYW1lIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5zY2FuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbnNjYW4gaW5zdGVhZFwiXVxubW9kdWxlIExpdmVuZXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpdmVuZXNzIGluc3RlYWRcIl1cbm1vZHVsZSBMb2FkX3BhdGggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2FkX3BhdGggaW5zdGVhZFwiXVxubW9kdWxlIExvY2FsX3N0b3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9jYWxfc3RvcmUgaW5zdGVhZFwiXVxubW9kdWxlIExvY2F0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9jYXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIExvbmdpZGVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvbmdpZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBNYWluX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYWluX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIE1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLk1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE1ha2VkZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYWtlZGVwZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBNYXRjaGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1hdGNoaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBNZXRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWV0YSBpbnN0ZWFkXCJdXG5tb2R1bGUgTWlzYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1pc2MgaW5zdGVhZFwiXVxubW9kdWxlIE10eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTXR5cGUgaW5zdGVhZFwiXVxubW9kdWxlIE11dGFibGVfdmFyaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTXV0YWJsZV92YXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTnVtYmVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk51bWJlcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wY29kZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5PcGNvZGVzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHJpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5PcHJpbnQgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGNvbXBpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0Y29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0ZXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0bWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgT3B0bWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRtYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBPdXRjb21ldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFyYW1ldGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhcmFtZXRlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFybWF0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJtYXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2VyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhc3Nfd3JhcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXNzX3dyYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhdGggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXR0ZXJucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdHRlcm5zIGluc3RlYWRcIl1cbm1vZHVsZSBQZXJzaXN0ZW50X2VudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBlcnNpc3RlbnRfZW52IGluc3RlYWRcIl1cbm1vZHVsZSBQb2xsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBvbGxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFBwYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwYXJzZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmVkZWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFByaW1pdGl2ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW1pdGl2ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y21tID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y21tIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGluc3RyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5QcmludGluc3RyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50bGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGxpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGxpbmVhciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRtYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRwYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHBhdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnR0eXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnR0eXBlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwZWQgaW5zdGVhZFwiXVxubW9kdWxlIFByb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvZmlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByb2ZpbGUgaW5zdGVhZFwiXVxubW9kdWxlIFByb2plY3Rpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJvamVjdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVjX2NoZWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUmVjX2NoZWNrIGluc3RlYWRcIl1cbm1vZHVsZSBSZWZfdG9fdmFyaWFibGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZl90b192YXJpYWJsZXMgaW5zdGVhZFwiXVxubW9kdWxlIFJlZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWcgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWQgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfYXJndW1lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfYXJndW1lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgaW5zdGVhZFwiXVxubW9kdWxlIFJ1bnRpbWVkZWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5SdW50aW1lZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWR1bGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZHVsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3RnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0Z2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3Rpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX29yaWdpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFyZV9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2hhcmVfY29uc3RhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTaWduYXR1cmVfZ3JvdXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaWduYXR1cmVfZ3JvdXAgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsZV92YWx1ZV9hcHByb3ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxlX3ZhbHVlX2FwcHJveCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpbXBsaWYgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wc19pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFNwaWxsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwaWxsIGluc3RlYWRcIl1cbm1vZHVsZSBTcGxpdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGxpdCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhdGljX2V4Y2VwdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGF0aWNfZXhjZXB0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdHJtYXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBTdWJzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN1YnN0IGluc3RlYWRcIl1cbm1vZHVsZSBTd2l0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Td2l0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIFN5bXRhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ltdGFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFN5bnRheGVyciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bnRheGVyciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRhZyBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFyZ2V0aW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFyZ2V0aW50IGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X2l0ZXJhdG9yID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X21hcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGVybWluZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UZXJtaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG1jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVG1jIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bjb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGNvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wZGlycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wZGlycyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wZXZhbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wZXZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9waG9va3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFRvcGxvb3AgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGxvb3AgaW5zdGVhZFwiXVxubW9kdWxlIFRvcG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcG1haW4gaW5zdGVhZFwiXVxubW9kdWxlIFRvcHN0YXJ0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUcmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGF0dHJpYnV0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGF0dHJpYnV0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsb2JqID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsb2JqIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xwcmltID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNscHJpbSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZV9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9wcm9wZXJ0aWVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfcHJvcGVydGllcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfc2VwYXJhYmlsaXR5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfc2VwYXJhYmlsaXR5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF91bmJveGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdW5ib3hlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdmFyaWFuY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF92YXJpYW5jZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWR0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWR0cmVlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW9wdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVvcHQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGV0ZXhwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXRleHAgaW5zdGVhZFwiXVxubW9kdWxlIFVuX2FuZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Vbl9hbmYgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFVudHlwZWFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVudHlwZWFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFyX3dpdGhpbl9jbG9zdXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcl93aXRoaW5fY2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFyaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFdhcm5pbmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uV2FybmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9hc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFg4Nl9kc2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2RzbCBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2dhcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZ2FzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfbWFzbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfbWFzbSBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X3Byb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X3Byb2MgaW5zdGVhZFwiXVxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncyA9XG4gIGxldCBhcmdzID1cbiAgICBMaXN0LmNvbmNhdFxuICAgICAgW1xuICAgICAgICBbIFwiLWtlZXAtd2hpdGVzcGFjZVwiIF07XG4gICAgICAgIFsgXCItbG9jYXRpb24tc3R5bGUgb21ha2VcIiBdO1xuICAgICAgICAoaWYgdXNlX2NvbG9yIHRoZW4gW10gZWxzZSBbIFwiLWFzY2lpXCIgXSk7XG4gICAgICAgIGV4dHJhX3BhdGRpZmZfYXJncztcbiAgICAgIF1cbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChcInBhdGRpZmZcIiA6OiBhcmdzKVxuXG5sZXQgcHJpbnQgP2RpZmZfY29tbWFuZCA/KGV4dHJhX3BhdGRpZmZfYXJncyA9IFtdKSA/KHVzZV9jb2xvciA9IGZhbHNlKSB+ZmlsZTFcbiAgICB+ZmlsZTIgKCkgPVxuICBsZXQgZXhlYyBjbWQgPVxuICAgIGxldCBjbWQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyAxPiYyXCIgY21kIChGaWxlbmFtZS5xdW90ZSBmaWxlMSlcbiAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZpbGUyKVxuICAgIGluXG4gICAgbWF0Y2ggU3lzLmNvbW1hbmQgY21kIHdpdGhcbiAgICB8IDAgLT4gYFNhbWVcbiAgICB8IDEgLT4gYERpZmZlcmVudFxuICAgIHwgbiAtPiBgRXJyb3IgKG4sIGNtZClcbiAgaW5cbiAgbWF0Y2ggZGlmZl9jb21tYW5kIHdpdGhcbiAgfCBTb21lIHMgLT4gaWdub3JlIChleGVjIHMgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBleGVjIChwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MpIHdpdGhcbiAgICAgIHwgYFNhbWUgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHByb2R1Y2VkIG5vIG91dHB1dCwgZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgICAgIHwgYERpZmZlcmVudCAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgZGlmZmVyZW5jZSAqKVxuICAgICAgICAgICgpXG4gICAgICB8IGBFcnJvciAoZXJyX2NvZGUsIGNtZCkgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHRocmV3IGFuIGVycm9yLi4uIHBlcmhhcHMgaXQgd2Fzbid0IGluc3RhbGxlZD8gZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkVycm9yOlxcblxcXG4gICAgICAgICAgICAgPiAlUyBleGl0ZWQgd2l0aCBjb2RlICVkXFxuXFxcbiAgICAgICAgICAgICA+IFBlcmhhcHMgcGF0ZGlmZiBpcyBub3QgaW5zdGFsbGVkPyBIaW50LCB0cnk6IG9wYW0gaW5zdGFsbCBwYXRkaWZmXFxuXFxcbiAgICAgICAgICAgICA+IEZhbGxpbmcgYmFjayB0byBkaWZmIC11XFxuXFxuXCJcbiAgICAgICAgICAgIGNtZCBlcnJfY29kZTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pKVxuIiwidHlwZSBkZXJpdmVyID0gLi5cblxubGV0IGFsbCA9IEhhc2h0YmwuY3JlYXRlIDQyXG5cbmxldCByZWdpc3RlciBuYW1lIGRlcml2ZXIgPVxuICBpZiBIYXNodGJsLm1lbSBhbGwgbmFtZSB0aGVuXG4gICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICBcIlBweF9kZXJpdmllcnMucmVnaXN0ZXI6ICVTIGlzIGFscmVhZHkgcmVnaXN0ZXJlZFwiIG5hbWU7XG4gIEhhc2h0YmwuYWRkIGFsbCBuYW1lIGRlcml2ZXJcblxubGV0IGxvb2t1cCBuYW1lID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIGFsbCBuYW1lIHdpdGhcbiAgfCBkcnYgLT4gU29tZSBkcnZcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGRlcml2ZXJzICgpID1cbiAgSGFzaHRibC5mb2xkIChmdW4gbmFtZSBkcnYgYWNjIC0+IChuYW1lLCBkcnYpIDo6IGFjYykgYWxsIFtdXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIG1hcCA9ICdhIC0+ICdhXG4gIHR5cGUgJ2EgaXRlciA9ICdhIC0+IHVuaXRcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGQgPSAnYSAtPiAnYWNjIC0+ICdhY2NcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGRfbWFwID0gJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2NcbiAgdHlwZSAoJ2N0eCwgJ2EpIG1hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhXG4gIHR5cGUgKCdhLCAncmVzKSBsaWZ0ID0gJ2EgLT4gJ3Jlc1xuICB0eXBlICgnY3R4LCAnYSwgJ3JlcykgbGlmdF9tYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXNcbmVuZFxuXG5jbGFzcyBtYXAgPVxuICBsZXQgYW55IHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQubWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQubWFwIC0+ICdhIG9wdGlvbiBULm1hcCA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgbGlzdCBULm1hcCA9IExpc3QubWFwXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQubWFwIC0+ICdhIGFycmF5IFQubWFwID0gQXJyYXkubWFwXG4gIGVuZFxuXG5jbGFzcyBpdGVyID1cbiAgbGV0IGFueSA9IGlnbm9yZSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULml0ZXIgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIG9wdGlvbiBULml0ZXIgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQuaXRlciAtPiAnYSBsaXN0IFQuaXRlciA9IExpc3QuaXRlclxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgYXJyYXkgVC5pdGVyID0gQXJyYXkuaXRlclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGQgPVxuICBsZXQgYW55IF8gYWNjID0gYWNjIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBhY2MgfCBTb21lIHggLT4gZiB4IGFjY1xuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBhY2MgfCB4IDo6IGwgLT4gbG9vcCBmIGwgKGYgeCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgciA6PSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkX21hcCA9XG4gIGxldCBhbnkgeCBhY2MgPSAoeCwgYWNjKSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgeCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgYWNjKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIChTb21lIHgsIGFjYylcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgYWNjKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBsLCBhY2MgPSBsb29wIGYgbCBhY2MgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIChhLCBhY2MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIDApIGFjYyBpblxuICAgICAgICAgIGxldCBhJyA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhciBpblxuICAgICAgICAgICAgQXJyYXkudW5zYWZlX3NldCBhJyBpIHg7XG4gICAgICAgICAgICByIDo9IGFjY1xuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgKGEnLCAhcilcbiAgZW5kXG5cbmNsYXNzIFsnY3R4XSBtYXBfd2l0aF9jb250ZXh0ID1cbiAgbGV0IGFueSBfIHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50KSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZykgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhcikgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIG9wdGlvbikgVC5tYXBfd2l0aF9jb250ZXh0XG4gICAgICAgID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiBjdHggeClcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGxpc3QpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPiBMaXN0Lm1hcCAoZiBjdHgpIGxcblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBhcnJheSkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+IEFycmF5Lm1hcCAoZiBjdHgpIGFcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydyZXNdIGxpZnQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VsZiNjb25zdHIgXCJOb25lXCIgW11cbiAgICAgICAgfCBTb21lIHggLT4gc2VsZiNjb25zdHIgXCJTb21lXCIgWyBmIHggXVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNlbGYjY29uc3RyIFwiW11cIiBbXVxuICAgICAgICB8IHggOjogbCAtPiBzZWxmI2NvbnN0ciBcIjo6XCIgWyBmIHg7IHNlbGYjbGlzdCBmIGwgXVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgc2VsZiNjb25zdHIgY3R4IFwiTm9uZVwiIFtdKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlcyA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIChTb21lIHgsIHNlbGYjY29uc3RyIGN0eCBcIlNvbWVcIiBbIHJlcyBdKVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgc2VsZiNjb25zdHIgY3R4IFwiW11cIiBbXSlcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCByZXNfaGVhZCA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIGxldCBsLCByZXNfdGFpbCA9IHNlbGYjbGlzdCBmIGN0eCBsIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBzZWxmI2NvbnN0ciBjdHggXCI6OlwiIFsgcmVzX2hlYWQ7IHJlc190YWlsIF0pXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsncmVzXSBzdGRfbGlmdGVycyA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICBtZXRob2QgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdFxuZW5kXG5cbmNsYXNzIHR5cGUgWydjdHgsICdyZXNdIHN0ZF9saWZ0X21hcHBlcnNfd2l0aF9jb250ZXh0ID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBhcnJheSA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBvcHRpb24gOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBsaXN0IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5lbmRcbiIsIm1vZHVsZSBDYW1sID0gU3RkbGliIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMy0wNl0gdXNlIFN0ZGxpYiBpbnN0ZWFkXCJdXG5vcGVuIFN0ZGxpYlxub3BlbiBTdGRMYWJlbHNcbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSB0eXBlIENvbXBhcmlzb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID49ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbWluIDogdCAtPiB0IC0+IHRcbiAgdmFsIG1heCA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCBtaW4gPSBtaW5cbiAgbGV0IG1heCA9IG1heFxuZW5kXG5cbmluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxuXG5tb2R1bGUgQm9vbCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Jvb2xcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gYm9vbClcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCeXRlc1xuXG4gIGxldCBzdWJfc3RyaW5nIHQgfnBvcyB+bGVuID0gU3RkbGliLkJ5dGVzLnN1Yl9zdHJpbmcgdCBwb3MgbGVuXG5cbiAgbGV0IGJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBjaGFyKVxuZW5kXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCB5IC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgeVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHJhaXNlIGV4blxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Zsb2F0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGZsb2F0KVxuZW5kXG5cbm1vZHVsZSBGbiA9IHN0cnVjdFxuICBsZXQgaWQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgd2hpbGUgbWVtIHQga2V5IGRvXG4gICAgICByZW1vdmUgdCBrZXlcbiAgICBkb25lO1xuICAgIGFkZCB0IGtleSBkYXRhXG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIGlmIG1lbSB0IGtleSB0aGVuIEVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5hZGRfZXhuXCIpXG4gICAgZWxzZSAoXG4gICAgICBhZGQgdCBrZXkgZGF0YTtcbiAgICAgIE9rICgpKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoIE9rICgpIC0+ICgpIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuXG4gIGxldCBmaW5kX29wdCB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoIGRhdGEgLT4gU29tZSBkYXRhIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGZpbmRfb3JfYWRkIHQga2V5IH5kZWZhdWx0ID1cbiAgICBtYXRjaCBmaW5kX29wdCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICAgICAgYWRkX2V4biB0IH5rZXkgfmRhdGE7XG4gICAgICAgIGRhdGFcblxuICBsZXQgcmVjIGFkZF9hbGlzdCB0IGFsaXN0ID1cbiAgICBtYXRjaCBhbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBPayAoKVxuICAgIHwgKGtleSwgZGF0YSkgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IGFkZF9hbGlzdCB0IHRhaWxcbiAgICAgICAgfCBFcnJvciAoXyA6IGV4bikgLT4gRXJyb3Iga2V5KVxuXG4gIGxldCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCA9XG4gICAgbGV0IHNpemUgPVxuICAgICAgbWF0Y2ggc2l6ZSB3aXRoIFNvbWUgc2l6ZSAtPiBzaXplIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBhbGlzdFxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgc2l6ZSBpblxuICAgIG1hdGNoIGFkZF9hbGlzdCB0IGFsaXN0IHdpdGggT2sgKCkgLT4gT2sgdCB8IEVycm9yIF8gYXMgZXJyb3IgLT4gZXJyb3JcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9zaXplIGFsaXN0ID1cbiAgICBtYXRjaCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLm9mX2FsaXN0X2V4blwiKVxuZW5kXG5cbm1vZHVsZSBJbl9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fcmRvbmx5IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlbmFtZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSBmaWxlbmFtZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX2luXG5cbiAgbGV0IGlucHV0X2FsbCB0ID1cbiAgICBsZXQgcmVjIHJlYWRfYWxsX2ludG8gdCBidWYgPVxuICAgICAgbWF0Y2ggaW5wdXRfY2hhciB0IHdpdGhcbiAgICAgIHwgY2hhciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICAgICAgICByZWFkX2FsbF9pbnRvIHQgYnVmXG4gICAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICByZWFkX2FsbF9pbnRvIHQgYnVmO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgcmVhZF9hbGwgZmlsZW5hbWUgPSB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6aW5wdXRfYWxsXG5lbmRcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgbWF4X2ludCA9IG1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxuZW5kXG5cbm1vZHVsZSBFaXRoZXIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5lbmRcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAoKiBzaGFkb3cgbm9uLXRhaWwtcmVjdXJzaXZlIGZ1bmN0aW9ucyAqKVxuICAgIGxldCBtZXJnZSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc29jID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzcSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcblxuICAgIGxldCByZXZfbWFwaSBsaXN0IH5mID1cbiAgICAgIGxldCByZWMgcmV2X21hcGlfYXQgbGlzdCBpIH5mIH5hY2MgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT4gcmV2X21hcGlfYXQgdGFpbCAoaSArIDEpIH5mIH5hY2M6KGYgaSBoZWFkIDo6IGFjYylcbiAgICAgIGluXG4gICAgICByZXZfbWFwaV9hdCBsaXN0IDAgfmYgfmFjYzpbXVxuXG4gICAgbGV0IGZvbGRfcmlnaHQyIGxpc3QxIGxpc3QyIH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdDIgKHJldiBsaXN0MSkgKHJldiBsaXN0MikgfmluaXQgfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IGFjYylcblxuICAgIGxldCBtYXAgbGlzdCB+ZiA9IHJldiAocmV2X21hcCBsaXN0IH5mKVxuICAgIGxldCBtYXBpIGxpc3QgfmYgPSByZXYgKHJldl9tYXBpIGxpc3QgfmYpXG5cbiAgICBsZXQgZm9sZF9yaWdodCBsaXN0IH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdCAoTGlzdC5yZXYgbGlzdCkgfmluaXQgfmY6KGZ1biBhY2MgeCAtPiBmIHggYWNjKVxuXG4gICAgbGV0IGFwcGVuZCB4IHkgPSByZXZfYXBwZW5kIChyZXYgeCkgeVxuICAgIGxldCBjb25jYXQgbGlzdCA9IGZvbGRfcmlnaHQgbGlzdCB+aW5pdDpbXSB+ZjphcHBlbmRcblxuICAgIGxldCByZXZfY29tYmluZSBsaXN0MSBsaXN0MiA9XG4gICAgICBmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiAoeCwgeSkgOjogYWNjKVxuXG4gICAgbGV0IGNvbWJpbmUgbGlzdDEgbGlzdDIgPSByZXYgKHJldl9jb21iaW5lIGxpc3QxIGxpc3QyKVxuXG4gICAgbGV0IHNwbGl0IGxpc3QgPVxuICAgICAgZm9sZF9yaWdodCBsaXN0IH5pbml0OihbXSwgW10pIH5mOihmdW4gKHgsIHkpICh4cywgeXMpIC0+XG4gICAgICAgICAgKHggOjogeHMsIHkgOjogeXMpKVxuXG4gICAgbGV0IG1hcDIgbGlzdDEgbGlzdDIgfmYgPVxuICAgICAgcmV2IChmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSA6OiBhY2MpKVxuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICAgIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggcCB4IHdpdGhcbiAgICAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGwpXG4gICAgaW5cbiAgICBwYXJ0IFtdIFtdIGxcblxuICBsZXQgaW5pdCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgfmxlbiB+cG9zIH5mIH5hY2MgPVxuICAgICAgaWYgcG9zID49IGxlbiB0aGVuIExpc3QucmV2IGFjY1xuICAgICAgZWxzZSBsb29wIH5sZW4gfnBvczoocG9zICsgMSkgfmYgfmFjYzooZiBwb3MgOjogYWNjKVxuICAgIGluXG4gICAgbG9vcCB+bGVuIH5wb3M6MCB+ZiB+YWNjOltdXG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gW10gLT4gdHJ1ZSB8IF8gOjogXyAtPiBmYWxzZVxuXG4gIGxldCByZXZfZmlsdGVyX29wdCBsaXN0ID1cbiAgICBmb2xkX2xlZnQgbGlzdCB+aW5pdDpbXSB+ZjooZnVuIHRhaWwgb3B0aW9uIC0+XG4gICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoIE5vbmUgLT4gdGFpbCB8IFNvbWUgaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG5cbiAgbGV0IGZpbHRlcl9vcHQgbGlzdCA9IHJldiAocmV2X2ZpbHRlcl9vcHQgbGlzdClcbiAgbGV0IGZpbHRlcl9tYXAgbGlzdCB+ZiA9IHJldl9maWx0ZXJfb3B0IChyZXZfbWFwIGxpc3QgfmYpXG4gIGxldCBjb25jYXRfbWFwIGxpc3QgfmYgPSBjb25jYXQgKG1hcCBsaXN0IH5mKVxuXG4gIGxldCByZWMgZmluZF9tYXAgbGlzdCB+ZiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBmIGhlYWQgd2l0aCBTb21lIF8gYXMgc29tZSAtPiBzb21lIHwgTm9uZSAtPiBmaW5kX21hcCB0YWlsIH5mKVxuXG4gIGxldCBmaW5kX21hcF9leG4gbGlzdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgbGlzdCB+ZiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxuICBsZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyB4IF0gLT4gU29tZSB4XG4gICAgfCBfIDo6IChfIDo6IF8gYXMgcmVzdCkgLT4gbGFzdCByZXN0XG5cbiAgbGV0IHNwbGl0X3doaWxlIGxpc3QgfmYgPVxuICAgIGxldCByZWMgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2MgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGYgaGVhZCAtPiBzcGxpdF93aGlsZV9pbnRvIHRhaWwgfmYgfmFjYzooaGVhZCA6OiBhY2MpXG4gICAgICB8IF8gOjogXyB8IFtdIC0+IChMaXN0LnJldiBhY2MsIGxpc3QpXG4gICAgaW5cbiAgICBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYzpbXVxuXG4gIGxldCBmaW5kX2FfZHVwICh0eXBlIGVsdCkgbGlzdCB+Y29tcGFyZSA9XG4gICAgbGV0IG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGVsdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQgaW5cbiAgICBsZXQgbW9kdWxlIEVsdF9zZXQgPSBTZXQuTWFrZSAoRWx0KSBpblxuICAgIGxldCByZWMgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgRWx0X3NldC5tZW0gaGVhZCBzZXQgdGhlbiBTb21lIGhlYWRcbiAgICAgICAgICBlbHNlIGZpbmRfYV9kdXBfaW4gdGFpbCB+c2V0OihFbHRfc2V0LmFkZCBoZWFkIHNldClcbiAgICBpblxuICAgIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0OkVsdF9zZXQuZW1wdHlcblxuICBsZXQgYXNzb2Nfb3B0IGtleSBhbGlzdCA9XG4gICAgbWF0Y2ggYXNzb2Mga2V5IGFsaXN0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICAoKiByZW9yZGVycyBhcmd1bWVudHMgdG8gaW1wcm92ZSB0eXBlIGluZmVyZW5jZSAqKVxuICBsZXQgaXRlciBsaXN0IH5mID0gaXRlciBsaXN0IH5mXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuICBsZXQgaXRlciB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuICBsZXQgdG9fbGlzdCB0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gW10gfCBTb21lIHggLT4gWyB4IF1cbmVuZFxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIGxldCBiaW5kIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBmIGEgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcF9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBoYW5kbGVfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGEgfCBFcnJvciBlIC0+IGYgZVxuZW5kXG5cbm1vZHVsZSBOb25FbXB0eUxpc3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiAnYSBsaXN0XG5cbiAgbGV0ICggQCApICh0MSwgcTEpICh0MiwgcTIpID0gKHQxLCBxMSBAICh0MiA6OiBxMikpXG4gIGxldCBoZCA9IGZzdFxuICBsZXQgdG9fbGlzdCAodCwgcSkgPSB0IDo6IHFcbiAgbGV0IG1hcCB+ZiAodCwgcSkgPSAoZiB0LCBMaXN0Lm1hcCB+ZiBxKVxuZW5kXG5cbm1vZHVsZSBPdXRfY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgPyhhcHBlbmQgPSBmYWxzZSkgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICAgIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYXBwZW5kIHRoZW4gT3Blbl9hcHBlbmQgZWxzZSBPcGVuX3RydW5jKSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX291dF9nZW4gZmxhZ3MgcGVybSBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX291dFxuXG4gIGxldCB3cml0ZV9hbGwgZmlsZW5hbWUgfmRhdGEgPVxuICAgIHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBpc19lbXB0eSAodCA6IHQpID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBwcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlblxuICBsZXQgc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczoobGVuZ3RoIHQgLSBsZW4pIH5sZW5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczpsZW4gfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG4gIGxldCBkcm9wX3N1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIGxlbilcblxuICBsZXQgaXNfcHJlZml4IHQgfnByZWZpeCA9XG4gICAgbGV0IHJlYyBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW5cbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IHBvcykgKGdldCBwcmVmaXggcG9zKVxuICAgICAgICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6KHBvcyArIDEpIH5sZW5cbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBwcmVmaXhcbiAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczowIH5sZW46KGxlbmd0aCBwcmVmaXgpXG5cbiAgbGV0IGlzX3N1ZmZpeCB0IH5zdWZmaXggPVxuICAgIGxldCByZWMgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zIH5zdWZmaXhfb2Zmc2V0ID1cbiAgICAgIHBvcyA8IDBcbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IChzdWZmaXhfb2Zmc2V0ICsgcG9zKSkgKGdldCBzdWZmaXggcG9zKVxuICAgICAgICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zOihwb3MgLSAxKSB+c3VmZml4X29mZnNldFxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHN1ZmZpeFxuICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXhcbiAgICAgICAgIH5wb3M6KGxlbmd0aCBzdWZmaXggLSAxKVxuICAgICAgICAgfnN1ZmZpeF9vZmZzZXQ6KGxlbmd0aCB0IC0gbGVuZ3RoIHN1ZmZpeClcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIGxldCByZWMgZXhpc3RzX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA8IGxlbiAmJiAoZiAoZ2V0IHQgcG9zKSB8fCBleGlzdHNfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZXhpc3RzX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIGxldCByZWMgZm9yX2FsbF9hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuIHx8IChmIChnZXQgdCBwb3MpICYmIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZm9yX2FsbF9hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoXG4gICAgfCBpIC0+IFNvbWUgaVxuICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGxzcGxpdDIgdCB+b24gPVxuICAgIG1hdGNoIGluZGV4X29wdCB0IG9uIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBpIC0+XG4gICAgICAgIFNvbWUgKHN1YiB0IH5wb3M6MCB+bGVuOmksIHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKSlcblxuICBsZXQgY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgbG93ZXJjYXNlX2FzY2lpID0gU3RkbGliLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbiAgbGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBzcGxpdF9vbl9jaGFyIHQgfnNlcCA9IFN0ZGxpYi5TdHJpbmcuc3BsaXRfb25fY2hhciBzZXAgdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBzdHJpbmcpXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFwLk1ha2UgKFN0cmluZylcblxuICAgIGxldCBmaW5kX29wdCBrZXkgdCA9XG4gICAgICBtYXRjaCBmaW5kIGtleSB0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcbiAgZW5kXG5cbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlIChTdHJpbmcpXG5lbmRcblxubGV0ICggQCApID0gTGlzdC5hcHBlbmRcbmxldCBvdXRwdXQgb2MgYnl0ZXMgfnBvcyB+bGVuID0gb3V0cHV0IG9jIGJ5dGVzIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyB+cG9zIH5sZW4gPSBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyBwb3MgbGVuXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIEwgPSBBc3RsaWIuTG9jYXRpb25cblxudHlwZSB0ID0gbG9jYXRpb24gPSB7XG4gIGxvY19zdGFydCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2VuZCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2dob3N0IDogYm9vbDtcbn1cblxubGV0IGluX2ZpbGUgbmFtZSA9XG4gIGxldCBsb2MgPSB7IHBvc19mbmFtZSA9IG5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gLTEgfSBpblxuICB7IGxvY19zdGFydCA9IGxvYzsgbG9jX2VuZCA9IGxvYzsgbG9jX2dob3N0ID0gdHJ1ZSB9XG5cbmxldCBzZXRfZmlsZW5hbWUgbG9jIGZuID1cbiAgbGV0IGxvY19zdGFydCA9IHsgbG9jLmxvY19zdGFydCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgbGV0IGxvY19lbmQgPSB7IGxvYy5sb2NfZW5kIHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICB7IGxvYyB3aXRoIGxvY19zdGFydDsgbG9jX2VuZCB9XG5cbmxldCBub25lID0gaW5fZmlsZSBcIl9ub25lX1wiXG5cbmxldCBpbml0IGxleGJ1ZiBmbmFtZSA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gMCB9XG5cbmxldCByYWlzZV9lcnJvcmYgP2xvYyBmbXQgPSBMLnJhaXNlX2Vycm9yZiA/bG9jIGZtdFxubGV0IHJlcG9ydF9leGNlcHRpb24gPSBMLnJlcG9ydF9leGNlcHRpb25cblxubGV0IG9mX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICB7XG4gICAgbG9jX3N0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgIGxvY19lbmQgPSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgfVxuXG5sZXQgcHJpbnQgcHBmIHQgPVxuICBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlwiXG4gICAgdC5sb2Nfc3RhcnQucG9zX2ZuYW1lIHQubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgKHQubG9jX3N0YXJ0LnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcbiAgICAodC5sb2NfZW5kLnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcblxudHlwZSBub25yZWMgJ2EgbG9jID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogdCB9XG5cbmxldCBjb21wYXJlX3BvcyBwMSBwMiA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXQgY29sdW1uIHAgPVxuICAgICgqIE1hbnVhbCBleHRyYWN0OlxuICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG9zX2NudW0gYW5kIHBvc19ib2wgaXMgdGhlIGNoYXJhY3RlciBvZmZzZXRcbiAgICAgICB3aXRoaW4gdGhlIGxpbmUgKGkuZS4gdGhlIGNvbHVtbiBudW1iZXIsIGFzc3VtaW5nIGVhY2ggY2hhcmFjdGVyIGlzXG4gICAgICAgb25lIGNvbHVtbiB3aWRlKS4gKilcbiAgICBwLnBvc19jbnVtIC0gcC5wb3NfYm9sXG4gIGluXG4gIG1hdGNoIEludC5jb21wYXJlIHAxLnBvc19sbnVtIHAyLnBvc19sbnVtIHdpdGhcbiAgfCAwIC0+IEludC5jb21wYXJlIChjb2x1bW4gcDEpIChjb2x1bW4gcDIpXG4gIHwgbiAtPiBuXG5cbmxldCBtaW5fcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPD0gMCB0aGVuIHAxIGVsc2UgcDJcbmxldCBtYXhfcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPj0gMCB0aGVuIHAxIGVsc2UgcDJcblxubGV0IGNvbXBhcmUgbG9jMSBsb2MyID1cbiAgbWF0Y2ggY29tcGFyZV9wb3MgbG9jMS5sb2Nfc3RhcnQgbG9jMi5sb2Nfc3RhcnQgd2l0aFxuICB8IDAgLT4gY29tcGFyZV9wb3MgbG9jMS5sb2NfZW5kIGxvYzIubG9jX2VuZFxuICB8IG4gLT4gblxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcHhsaWJfYXN0LkxvY2F0aW9uX2Vycm9yXG5cbiAgbGV0IGNyZWF0ZWYgfmxvYyBmbXQgPSBGb3JtYXQua2FzcHJpbnRmIChmdW4gc3RyIC0+IG1ha2UgfmxvYyB+c3ViOltdIHN0cikgZm10XG5lbmRcblxubGV0IGVycm9yX2V4dGVuc2lvbmYgfmxvYyBmbXQgPVxuICBGb3JtYXQua2FzcHJpbnRmXG4gICAgKGZ1biBzdHIgLT4gRXJyb3IudG9fZXh0ZW5zaW9uIEBAIEVycm9yLm1ha2UgfmxvYyB+c3ViOltdIHN0cilcbiAgICBmbXRcblxuZXhjZXB0aW9uIEVycm9yID0gTC5FcnJvclxuXG5sZXQgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICB8IEVycm9yIGUgLT4gU29tZSAoRXJyb3IubWVzc2FnZSBlKVxuICAgIHwgXyAtPiBOb25lKVxuIiwib3BlbiEgSW1wb3J0XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBmYWlsIGxvYyBleHBlY3RlZCA9IHJhaXNlIChFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkpXG5cbnR5cGUgY29udGV4dCA9IHtcbiAgKCogW21hdGNoZWRdIGNvdW50cyBob3cgbWFueSBjb25zdHJ1Y3RvcnMgaGF2ZSBiZWVuIG1hdGNoZWQuIFRoaXMgaXMgdXNlZCB0byBmaW5kIHdoYXRcbiAgICAgcGF0dGVybiBtYXRjaGVzIHRoZSBtb3N0IHNvbWUgcGllY2Ugb2YgYXN0IGluIFtBc3RfcGF0dGVybi5hbHRdLiBJbiB0aGUgY2FzZSB3aGVyZVxuICAgICBhbGwgYnJhbmNoZXMgZmFpbCB0byBtYXRjaCwgd2UgcmVwb3J0IHRoZSBlcnJvciBmcm9tIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZVxuICAgICBtb3N0LlxuXG4gICAgIFRoaXMgaXMgb25seSBpbmNyZW1lbnRlZCBieSBjb21iaW5hdG9ycyB0aGF0IGNhbiBmYWlsLiAqKVxuICBtdXRhYmxlIG1hdGNoZWQgOiBpbnQ7XG59XG5cbnR5cGUgKCdtYXRjaGVkX3ZhbHVlLCAnaywgJ2tfcmVzdWx0KSB0ID1cbiAgfCBUIG9mIChjb250ZXh0IC0+IExvY2F0aW9uLnQgLT4gJ21hdGNoZWRfdmFsdWUgLT4gJ2sgLT4gJ2tfcmVzdWx0KVxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBNID1cbiAgc3RydWN0XG4gICAgbGV0IGF0dHJpYnV0ZSB+bG9jICB+bmFtZSAgfnBheWxvYWQgID1cbiAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfVxuICAgIGxldCBiaW5kaW5nX29wIH5sb2MgIH5vcCAgfnBhdCAgfmV4cCAgPVxuICAgICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuICAgIGxldCBjYXNlIH5saHMgIH5ndWFyZCAgfnJocyAgPVxuICAgICAgeyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG4gICAgbGV0IHBjbF9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY2xfc3RydWN0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MCkgfVxuICAgIGxldCBwY2xfZnVuIH5sb2MgIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgfVxuICAgIGxldCBwY2xfYXBwbHkgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNsX2xldCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY2xfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY2xfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBwY2xfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjZl9pbmhlcml0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY2ZfdmFsIH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfVxuICAgIGxldCBwY2ZfbWV0aG9kIH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9jb25zdHJhaW50IHgwKSB9XG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9pbml0aWFsaXplciB4MCkgfVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBjbGFzc19pbmZvcyB+bG9jICB+dmlydCAgfnBhcmFtcyAgfm5hbWUgIH5leHByICA9XG4gICAgICB7XG4gICAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IHBjdHlfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfYXJyb3cgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2luaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2luaGVyaXQgeDApIH1cbiAgICBsZXQgcGN0Zl92YWwgfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX3ZhbCB4MCkgfVxuICAgIGxldCBwY3RmX21ldGhvZCB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjdGZfY29uc3RyYWludCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfY29uc3RyYWludCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2F0dHJpYnV0ZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH52YXJzICB+YXJncyAgfnJlcyAgPVxuICAgICAge1xuICAgICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2FueVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhciB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2Fycm93IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX29iamVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfb2JqZWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2NsYXNzIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbGlhcyB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyaWFudCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcG9seSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wYWNrYWdlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wYWNrYWdlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZGlyX3N0cmluZyB+bG9jICB4MCA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfVxuICAgIGxldCBwZGlyX2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIH5sb2MgIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuY3Rpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1biB+bG9jICB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXBwbHkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX21hdGNoIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90cnkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3RyeSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90dXBsZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RydWN0IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdmFyaWFudCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9yZWNvcmQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9maWVsZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0ZmllbGQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcnJheSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VxdWVuY2UgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3doaWxlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mb3IgfmxvYyAgeDAgeDEgeDIgeDMgeDQgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvZXJjZSB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZW5kIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ldyB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRleGNlcHRpb24gfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hc3NlcnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sYXp5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BvbHkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb2JqZWN0IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3dHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3dHlwZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wYWNrIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0b3AgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlIH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bG9jICB+bmFtZSAgfmtpbmQgID1cbiAgICAgIHtcbiAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgfmxvYyAgbW9kXyA9XG4gICAgICB7IHBpbmNsX21vZCA9IG1vZF87IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH5tdXRhYmxlXyAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBsZXRvcCB+bGV0XyAgfmFuZHMgIH5ib2R5ICA9IHsgbGV0XzsgYW5kczsgYm9keSB9XG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgfmVuZF8gIH5naG9zdCAgPVxuICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH1cbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfmxvYyAgfm5hbWUgIH5leHByICA9XG4gICAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IFtdOyBwbWJfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXBlXzsgcG1kX2F0dHJpYnV0ZXMgPSBbXTsgcG1kX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbW9kX2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfYXBwbHkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfdW5wYWNrIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bG9jICB+bmFtZSAgfm1hbmlmZXN0ICA9XG4gICAgICB7XG4gICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG10eV9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3dpdGggfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfdHlwZW9mIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApIH1cbiAgICBsZXQgcG10eV9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9hbGlhcyB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfYWxpYXMgeDApIH1cbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG90YWcgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9XG4gICAgbGV0IG9pbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH1cbiAgICBsZXQgb3Blbl9pbmZvcyB+bG9jICB+ZXhwciAgfm92ZXJyaWRlICA9XG4gICAgICB7XG4gICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbGlhcyB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RhbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2ludGVydmFsIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90dXBsZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyaWFudCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9yZWNvcmQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hcnJheSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3IgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHlwZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9sYXp5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3VucGFjayB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgfmxudW0gIH5ib2wgIH5jbnVtICA9XG4gICAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IGxudW07IHBvc19ib2wgPSBib2w7IHBvc19jbnVtID0gY251bSB9XG4gICAgbGV0IHJ0YWcgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSkgfVxuICAgIGxldCByaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ190eXBleHQgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzaWdfZXhjZXB0aW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc2lnX21vZHVsZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfb3BlbiB+bG9jICB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX29wZW4geDApIH1cbiAgICBsZXQgcHNpZ19pbmNsdWRlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB+bG9jICB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9ldmFsIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl92YWx1ZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl90eXBleHQgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzdHJfZXhjZXB0aW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc3RyX21vZHVsZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdHlwZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB+bG9jICB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB+bG9jICB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzdHJfYXR0cmlidXRlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5sb2MgIH5uYW1lICB+YXJnICA9XG4gICAgICB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9XG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH5wYXJhbXMgIH5jc3RycyAgfmtpbmQgIH5wcml2YXRlXyBcbiAgICAgIH5tYW5pZmVzdCAgPVxuICAgICAge1xuICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiB+bG9jICBjb25zdHJ1Y3RvciA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5sb2MgIH5wYXRoICB+cGFyYW1zICB+Y29uc3RydWN0b3JzICB+cHJpdmF0ZV8gID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfmxvYyAgfnBhdCAgfmV4cHIgID1cbiAgICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IFtdOyBwdmJfbG9jID0gbG9jIH1cbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfmxvYyAgfm5hbWUgIH50eXBlXyAgfnByaW0gID1cbiAgICAgIHtcbiAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgfVxuICBlbmRcbm1vZHVsZSBNYWtlKExvYzpzaWcgdmFsIGxvYyA6IExvY2F0aW9uLnQgZW5kKSA9XG4gIHN0cnVjdFxuICAgIGxldCBsb2MgPSBMb2MubG9jXG4gICAgbGV0IGF0dHJpYnV0ZSB+bmFtZSAgfnBheWxvYWQgID1cbiAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfVxuICAgIGxldCBiaW5kaW5nX29wIH5vcCAgfnBhdCAgfmV4cCAgPVxuICAgICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuICAgIGxldCBjYXNlIH5saHMgIH5ndWFyZCAgfnJocyAgPVxuICAgICAgeyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG4gICAgbGV0IHBjbF9jb25zdHIgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY2xfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MCkgfVxuICAgIGxldCBwY2xfZnVuIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgfVxuICAgIGxldCBwY2xfYXBwbHkgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNsX2xldCB4MCB4MSB4MiA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY2xfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY2xfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBwY2xfb3BlbiB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjZl9pbmhlcml0IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY2ZfdmFsIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfVxuICAgIGxldCBwY2ZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9jb25zdHJhaW50IHgwKSB9XG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9pbml0aWFsaXplciB4MCkgfVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBjbGFzc19pbmZvcyB+dmlydCAgfnBhcmFtcyAgfm5hbWUgIH5leHByICA9XG4gICAgICB7XG4gICAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IHBjdHlfY29uc3RyIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfYXJyb3cgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9vcGVuIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2luaGVyaXQgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2luaGVyaXQgeDApIH1cbiAgICBsZXQgcGN0Zl92YWwgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX3ZhbCB4MCkgfVxuICAgIGxldCBwY3RmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjdGZfY29uc3RyYWludCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfY29uc3RyYWludCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2F0dHJpYnV0ZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgIH52YXJzICB+YXJncyAgfnJlcyAgPVxuICAgICAge1xuICAgICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2FueVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2Fycm93IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2NvbnN0ciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX29iamVjdCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfb2JqZWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2NsYXNzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbGlhcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyaWFudCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcG9seSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wYWNrYWdlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wYWNrYWdlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZGlyX3N0cmluZyB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IHgwIHgxID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBkaXJfaWRlbnQgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4geDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FwcGx5IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9tYXRjaCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHJ5IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcmVjb3JkIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZmllbGQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGZpZWxkIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXJyYXkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2lmdGhlbmVsc2UgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF93aGlsZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZm9yIHgwIHgxIHgyIHgzIHg0ID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb2VyY2UgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VuZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXcgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX292ZXJyaWRlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXNzZXJ0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29iamVjdCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG9wIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWUgIH5raW5kICA9XG4gICAgICB7XG4gICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBpbmNsdWRlX2luZm9zIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lICB+bXV0YWJsZV8gIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgbGV0b3AgfmxldF8gIH5hbmRzICB+Ym9keSAgPSB7IGxldF87IGFuZHM7IGJvZHkgfVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgIH5lbmRfICB+Z2hvc3QgID1cbiAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9XG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5uYW1lICB+ZXhwciAgPVxuICAgICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBbXTsgcG1iX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfm5hbWUgIH50eXBlXyAgPVxuICAgICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwZV87IHBtZF9hdHRyaWJ1dGVzID0gW107IHBtZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9pZGVudCB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2FwcGx5IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX3VucGFjayB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWUgIH5tYW5pZmVzdCAgPVxuICAgICAge1xuICAgICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXNfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtdHlfaWRlbnQgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV93aXRoIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3R5cGVvZiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBvdGFnIHgwIHgxID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfVxuICAgIGxldCBvaW5oZXJpdCB4MCA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9XG4gICAgbGV0IG9wZW5faW5mb3MgfmV4cHIgIH5vdmVycmlkZSAgPVxuICAgICAge1xuICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbnkgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYWxpYXMgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfcmVjb3JkIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYXJyYXkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29yIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R5cGUgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfbGF6eSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF91bnBhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leGNlcHRpb24geDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vcGVuIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwb3NpdGlvbiB+Zm5hbWUgIH5sbnVtICB+Ym9sICB+Y251bSAgPVxuICAgICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSBsbnVtOyBwb3NfYm9sID0gYm9sOyBwb3NfY251bSA9IGNudW0gfVxuICAgIGxldCBydGFnIHgwIHgxIHgyID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpIH1cbiAgICBsZXQgcmluaGVyaXQgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHNpZ190eXBlc3Vic3QgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZXh0IHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzaWdfZXhjZXB0aW9uIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc2lnX21vZHVsZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHN1YnN0IHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlc3Vic3QgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfb3BlbiB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX29wZW4geDApIH1cbiAgICBsZXQgcHNpZ19pbmNsdWRlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3MgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzaWdfZXh0ZW5zaW9uIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX2V2YWwgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ZhbHVlIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfcHJpbWl0aXZlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ByaW1pdGl2ZSB4MCkgfVxuICAgIGxldCBwc3RyX3R5cGUgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3R5cGV4dCB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdHlwZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24geDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bmFtZSAgfmFyZyAgPVxuICAgICAgeyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfVxuICAgIGxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lICB+cGFyYW1zICB+Y3N0cnMgIH5raW5kICB+cHJpdmF0ZV8gIH5tYW5pZmVzdCBcbiAgICAgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leGNlcHRpb24gY29uc3RydWN0b3IgPVxuICAgICAge1xuICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+cGF0aCAgfnBhcmFtcyAgfmNvbnN0cnVjdG9ycyAgfnByaXZhdGVfICA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB2YWx1ZV9iaW5kaW5nIH5wYXQgIH5leHByICA9XG4gICAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBbXTsgcHZiX2xvYyA9IGxvYyB9XG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lICB+dHlwZV8gIH5wcmltICA9XG4gICAgICB7XG4gICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogTG9jYXRpb24udCB9XG5cbmxldCB0eHQgdCA9IHQudHh0XG5sZXQgbG9jIHQgPSB0LmxvY1xubGV0IG1ha2UgfmxvYyB0eHQgPSB7IGxvYzsgdHh0IH1cbmxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGxvbmdpZGVudCA9IExpZGVudCBvZiBzdHJpbmcgfCBMZG90IG9mIHQgKiBzdHJpbmcgfCBMYXBwbHkgb2YgdCAqIHRcblxuICBsZXQgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50X2NoYXIgPSBmdW5jdGlvblxuICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJ18nIHwgJ1xcJycgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnQgPSBmdW5jdGlvblxuICAgIHwgXCJhc3JcIiB8IFwibGFuZFwiIHwgXCJsb3JcIiB8IFwibHNsXCIgfCBcImxzclwiIHwgXCJseG9yXCIgfCBcIm1vZFwiIHwgXCJvclwiIC0+IGZhbHNlXG4gICAgfCBzdHJpbmcgLT4gU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOmlzX25vcm1hbF9pZGVudF9jaGFyXG5cbiAgbGV0IHNob3J0X25hbWUgc3RyaW5nID1cbiAgICBpZiBpc19ub3JtYWxfaWRlbnQgc3RyaW5nIHRoZW4gc3RyaW5nIGVsc2UgXCIoIFwiIF4gc3RyaW5nIF4gXCIgKVwiXG5cbiAgbGV0IHJlYyBuYW1lID0gZnVuY3Rpb25cbiAgICB8IExpZGVudCBzIC0+IHNob3J0X25hbWUgc1xuICAgIHwgTGRvdCAoYSwgYikgLT4gbmFtZSBhIF4gXCIuXCIgXiBzaG9ydF9uYW1lIGJcbiAgICB8IExhcHBseSAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlcyglcylcIiAobmFtZSBhKSAobmFtZSBiKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAobmFtZSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgcmVjIGZsYXQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcyA6OiBhY2N1XG4gIHwgTGRvdCAobGlkLCBzKSAtPiBmbGF0IChzIDo6IGFjY3UpIGxpZFxuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgZmxhdHRlbl9leG4gbGlkID0gZmxhdCBbXSBsaWRcblxubGV0IGxhc3RfZXhuID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzXG4gIHwgTGRvdCAoXywgcykgLT4gc1xuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgdW5mbGF0dGVuIH5pbml0IGwgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOihmdW4gYWNjIHMgLT4gTGRvdCAoYWNjLCBzKSlcblxuKCogZm9yIGNhc2VzIHdpdGhvdXQgZG90dGVkIG9wZXJhdG9ycyAoZS5nLiBbcGFyc2UgXCJBLkIuQ1wiXSkgKilcbmxldCBwYXJzZV9zaW1wbGUgcyA9XG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLicgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IHMgOjogbCAtPiB1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsXG5cbigqIGhhbmRsZSBbXCJBLkIuKCsuKylcIl0gb3IgW1wiVmVjLiguJS4oKTwtKVwiXSAqKVxubGV0IHBhcnNlIHMgPVxuICBsZXQgaW52YWxpZCAoKSA9XG4gICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwiUHB4bGliLkxvbmdpZGVudC5wYXJzZTogJVNcIiBzKVxuICBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPCAxIHRoZW4gaW52YWxpZCAoKTtcbiAgbGV0IG9wZW5fcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcoJyBpblxuICBsZXQgY2xvc2VfcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcpJyBpblxuICBtYXRjaCAocy5bMF0sIG9wZW5fcGFyLCBjbG9zZV9wYXIpIHdpdGhcbiAgfCAoJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnXycpLCBOb25lLCBOb25lIC0+IHBhcnNlX3NpbXBsZSBzXG4gIHwgXywgTm9uZSwgTm9uZSAtPiBMaWRlbnQgcyAoKiBUaGlzIGlzIGEgcmF3IG9wZXJhdG9yLCBubyBtb2R1bGUgcGF0aCAqKVxuICB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+IGludmFsaWQgKClcbiAgfCBfLCBTb21lIGwsIFNvbWUgciAtPiAoXG4gICAgICBpZiBJbnQuKHIgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSkgdGhlbiBpbnZhbGlkICgpO1xuICAgICAgbGV0IGdyb3VwID1cbiAgICAgICAgaWYgSW50LihyID0gbCArIDEpIHRoZW4gXCIoKVwiXG4gICAgICAgIGVsc2UgU3RyaW5nLnRyaW0gKFN0cmluZy5zdWIgcyB+cG9zOihsICsgMSkgfmxlbjoociAtIGwgLSAxKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQuKGwgPSAwKSB0aGVuIExpZGVudCBncm91cFxuICAgICAgZWxzZSBpZiBDaGFyLihzLltsIC0gMV0gPD4gJy4nKSB0aGVuIGludmFsaWQgKClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjoobCAtIDEpIGluXG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIGJlZm9yZSB+c2VwOicuJyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgcyA6OiBsIC0+IExkb3QgKHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGwsIGdyb3VwKSlcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlIChUKVxubW9kdWxlIFNldCA9IFNldC5NYWtlIChUKVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBEZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTG9jLnRcblxuICAgIGxldCBsb2MgKHggOiBfIHQpID0geC5sb2NcbiAgICBsZXQgbWsgfmxvYyB4ID0geyBsb2M7IHR4dCA9IHggfVxuICAgIGxldCBtYXAgZiB0ID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4gICAgbGV0IG1hcF9saWRlbnQgeCA9IG1hcCAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4XG4gICAgbGV0IGxpZGVudCB+bG9jIHggPSBtayB+bG9jIChMb25naWRlbnQucGFyc2UgeClcbiAgZW5kXG5cbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIC0tLS0tKilcbiAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCB2YnMgLT4gWyBwc3RyX3ZhbHVlIH5sb2MgcmVjX2ZsYWcgdmJzIF1cblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYzpfIH5uYW1lOl8gfnBhcmFtczpfIH5jc3RyczpfIH5raW5kOl9cbiAgICAgIH5wcml2YXRlXzpfIH5tYW5pZmVzdDpfID1cbiAgICBmYWlsd2l0aFxuICAgICAgXCJQcHhsaWIuQXN0X2J1aWxkZXIubm9ucmVjX3R5cGVfZGVjbGFyYXRpb246IGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uXCJcblxuICBsZXQgZWludCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgZWNoYXIgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgZXN0cmluZyB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBlZmxvYXQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBlaW50MzIgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBlaW50NjQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBlbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IHBpbnQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IHBjaGFyIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IHBzdHJpbmcgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgcGZsb2F0IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgcGludDMyIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgcGludDY0IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgcG5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBlYm9vbCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IHBib29sIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgZXZhciB+bG9jIHYgPSBwZXhwX2lkZW50IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHYpKVxuICBsZXQgcHZhciB+bG9jIHYgPSBwcGF0X3ZhciB+bG9jIChMb2NhdGVkLm1rIH5sb2MgdilcbiAgbGV0IGV1bml0IH5sb2MgPSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcHVuaXQgfmxvYyA9IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwZXhwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHB0eXBfdHVwbGUgfmxvYyBsXG5cbiAgbGV0IHBleHBfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocGV4cF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHBwYXRfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocHBhdF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHB0eXBfcG9seSB+bG9jIHZhcnMgdHkgPVxuICAgIG1hdGNoIHZhcnMgd2l0aCBbXSAtPiB0eSB8IF8gLT4gcHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuXG4gIGxldCBwZXhwX2FwcGx5IH5sb2MgZSBlbCA9XG4gICAgbWF0Y2ggKGUsIGVsKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBlXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LCBfIC0+XG4gICAgICAgIHsgZSB3aXRoIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MgQCBlbCkgfVxuICAgIHwgXyAtPiBwZXhwX2FwcGx5IH5sb2MgZSBlbFxuXG4gIGxldCBlYXBwbHkgfmxvYyBlIGVsID1cbiAgICBwZXhwX2FwcGx5IH5sb2MgZSAoTGlzdC5tYXAgZWwgfmY6KGZ1biBlIC0+IChBc3R0eXBlcy5Ob2xhYmVsLCBlKSkpXG5cbiAgbGV0IGVhYnN0cmFjdCB+bG9jIHBzIGUgPVxuICAgIExpc3QuZm9sZF9yaWdodCBwcyB+aW5pdDplIH5mOihmdW4gcCBlIC0+XG4gICAgICAgIHBleHBfZnVuIH5sb2MgQXN0dHlwZXMuTm9sYWJlbCBOb25lIHAgZSlcblxuICBsZXQgZXNlcXVlbmNlIH5sb2MgZWwgPVxuICAgIG1hdGNoIExpc3QucmV2IGVsIHdpdGhcbiAgICB8IFtdIC0+IGV1bml0IH5sb2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHRsIH5pbml0OmhkIH5mOihmdW4gYWNjIGUgLT4gcGV4cF9zZXF1ZW5jZSB+bG9jIGUgYWNjKVxuXG4gIGxldCBwY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCBlY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCByZWMgZWxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocGV4cF90dXBsZSB+bG9jIFsgeDsgZWxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCByZWMgcGxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocHBhdF90dXBsZSB+bG9jIFsgeDsgcGxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IH5sb2MgKGlkZW50IDogTG9uZ2lkZW50LnQpIH5mID1cbiAgICBtYXRjaCBpZGVudCB3aXRoXG4gICAgfCBMaWRlbnQgbiAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMaWRlbnQgKGYgbik7IGxvYyB9XG4gICAgfCBMZG90IChwYXRoLCBuKSAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMZG90IChwYXRoLCBmIG4pOyBsb2MgfVxuICAgIHwgTGFwcGx5IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bmV4cGVjdGVkIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZVwiXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgfmxvYzphcHBseV9sb2MgeyBMb2MubG9jOyB0eHQgPSBsb25naWRlbnQgfSB+ZiBhcmdzID1cbiAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCAobG9uZ2lkZW50IDogTG9uZ2lkZW50LnQpIHdpdGhcbiAgICB8IExpZGVudCBfIHwgTGRvdCAoKExpZGVudCBfIHwgTGRvdCBfKSwgXykgfCBMYXBwbHkgXyAtPiAoXG4gICAgICAgIGxldCBpZGVudCA9XG4gICAgICAgICAgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBsb25naWRlbnQgfmxvYyB+ZlxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpZGVudFxuICAgICAgICB8IF8gOjogXyAtPiBlYXBwbHkgfmxvYzphcHBseV9sb2MgaWRlbnQgYXJncylcbiAgICB8IExkb3QgKChMYXBwbHkgXyBhcyBtb2R1bGVfcGF0aCksIG4pIC0+XG4gICAgICAgIGxldCBzdWZmaXhfbiBmdW5jdG9yXyA9IFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZnVuY3Rvcl8gXiBcIl9fXCIgXiBuIGluXG4gICAgICAgIGxldCByZWMgZ2F0aGVyX2xhcHBseSBmdW5jdG9yX2FyZ3MgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCAqIF8gPVxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBMYXBwbHkgKHJlc3QsIGFyZykgLT4gZ2F0aGVyX2xhcHBseSAoYXJnIDo6IGZ1bmN0b3JfYXJncykgcmVzdFxuICAgICAgICAgIHwgTGlkZW50IGZ1bmN0b3JfIC0+IChMaWRlbnQgKHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICAgIHwgTGRvdCAoZnVuY3Rvcl9wYXRoLCBmdW5jdG9yXykgLT5cbiAgICAgICAgICAgICAgKExkb3QgKGZ1bmN0b3JfcGF0aCwgc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpZGVudCwgZnVuY3Rvcl9hcmdzID0gZ2F0aGVyX2xhcHBseSBbXSBtb2R1bGVfcGF0aCBpblxuICAgICAgICBlYXBwbHkgfmxvYzphcHBseV9sb2NcbiAgICAgICAgICAodW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBpZGVudCB+bG9jIH5mKVxuICAgICAgICAgIChMaXN0Lm1hcCBmdW5jdG9yX2FyZ3MgfmY6KGZ1biBwYXRoIC0+XG4gICAgICAgICAgICAgICBwZXhwX3BhY2sgfmxvYyAocG1vZF9pZGVudCB+bG9jIHsgdHh0ID0gcGF0aDsgbG9jIH0pKVxuICAgICAgICAgIEAgYXJncylcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBsb25naWRlbnQgfmYgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgbG9uZ2lkZW50IH5sb2MgfmYgW11cblxuICBsZXQgZXRhX3JlZHVjZSA9XG4gICAgbGV0IHJlYyBnYXRoZXJfcGFyYW1zIGFjYyBleHByID1cbiAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgIFBleHBfZnVuIChsYWJlbCwgTm9uZSAoKiBubyBkZWZhdWx0IGV4cHJlc3Npb24gKiksIHN1YnBhdCwgYm9keSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgIH0gLT4gKFxuICAgICAgICAgIG1hdGNoIHN1YnBhdCB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgTm9uZSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHR5ICk7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICgqIFdlIHJlZHVjZSBbZnVuICh4IDogdHkpIC0+IGYgeF0gYnkgcmV3cml0aW5nIGl0IFsoZiA6IHR5IC0+IF8pXS4gKilcbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBTb21lIHR5KSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcikpXG4gICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcilcbiAgICBpblxuICAgIGxldCBhbm5vdGF0ZSB+bG9jIGV4cHIgcGFyYW1zID1cbiAgICAgIGlmIExpc3QuZXhpc3RzIHBhcmFtcyB+ZjooZnVuIChfLCBfLCB0eSkgLT4gT3B0aW9uLmlzX3NvbWUgdHkpIHRoZW5cbiAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgcGFyYW1zIH5pbml0OihwdHlwX2FueSB+bG9jKVxuICAgICAgICAgICAgfmY6KGZ1biAocGFyYW1fbGFiZWwsIHBhcmFtLCB0eV9vcHQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgbG9jID0gcGFyYW0ubG9jIGluXG4gICAgICAgICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdHlfb3B0IHdpdGggTm9uZSAtPiBwdHlwX2FueSB+bG9jIHwgU29tZSB0eSAtPiB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwdHlwX2Fycm93IH5sb2MgcGFyYW1fbGFiZWwgdHkgYWNjKVxuICAgICAgICBpblxuICAgICAgICBwZXhwX2NvbnN0cmFpbnQgfmxvYyBleHByIHR5XG4gICAgICBlbHNlIGV4cHJcbiAgICBpblxuICAgIGxldCByZWMgZ2F0aGVyX2FyZ3MgbiB4ID1cbiAgICAgIGlmIG4gPSAwIHRoZW4gU29tZSAoeCwgW10pXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGJvZHksIGFyZ3MpO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGFyZ3MgPD0gbiB0aGVuXG4gICAgICAgICAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChuIC0gTGlzdC5sZW5ndGggYXJncykgYm9keSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSAoYm9keSwgYXJncycpIC0+IFNvbWUgKGJvZHksIGFyZ3MnIEAgYXJncylcbiAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgZnVuIGV4cHIgLT5cbiAgICAgIGxldCBwYXJhbXMsIGJvZHkgPSBnYXRoZXJfcGFyYW1zIFtdIGV4cHIgaW5cbiAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChMaXN0Lmxlbmd0aCBwYXJhbXMpIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gYXMgZl9pZGVudCksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsMiBhcmdzIHBhcmFtc1xuICAgICAgICAgICAgICB+ZjooZnVuIChhcmdfbGFiZWwsIGFyZykgKHBhcmFtX2xhYmVsLCBwYXJhbSwgXykgLT5cbiAgICAgICAgICAgICAgICBQb2x5LiggPSApIChhcmdfbGFiZWwgOiBhcmdfbGFiZWwpIHBhcmFtX2xhYmVsXG4gICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IG5hbWUnOyBfIH07XG4gICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgIFN0cmluZy4oID0gKSBuYW1lJyBwYXJhbS50eHRcbiAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPiBTb21lIChhbm5vdGF0ZSB+bG9jOmV4cHIucGV4cF9sb2MgZl9pZGVudCBwYXJhbXMpKVxuICAgICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByID0gT3B0aW9uLnZhbHVlIChldGFfcmVkdWNlIGV4cHIpIH5kZWZhdWx0OmV4cHJcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIGV4cHIgfnJlY19mbGFnID1cbiAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgfCBSZWN1cnNpdmUgLT4gZXhwclxuICAgIHwgTm9ucmVjdXJzaXZlIC0+IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwclxuZW5kXG5cbm1vZHVsZSB0eXBlIExvYyA9IEFzdF9idWlsZGVyX2ludGYuTG9jXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9pbnRmLlNcblxuICBtb2R1bGUgTGF0ZXN0IDogc2lnXG4gICAgdmFsIHBwYXRfY29uc3RydWN0IDpcbiAgICAgIGxvbmdpZGVudCBsb2MgLT4gKGxhYmVsIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uIC0+IHBhdHRlcm5cblxuICAgIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgICAgdmFyczpsYWJlbCBsb2MgbGlzdCAtPlxuICAgICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgICB1bml0IC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBlbmRcblxuICB2YWwgcHBhdF9jb25zdHJ1Y3QgOiBsb25naWRlbnQgbG9jIC0+IHBhdHRlcm4gb3B0aW9uIC0+IHBhdHRlcm5cblxuICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG5lbmRcblxubW9kdWxlIE1ha2UgKExvYyA6IHNpZ1xuICB2YWwgbG9jIDogTG9jYXRpb24udFxuZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKSAtLS0tLSopXG5cbiAgbGV0IHBwYXRfY29uc3RydWN0IGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgPSBEZWZhdWx0LnBzdHJfdmFsdWVfbGlzdFxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV8gfm1hbmlmZXN0ID1cbiAgICBEZWZhdWx0Lm5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfXG4gICAgICB+bWFuaWZlc3RcblxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmYXVsdC5Mb2NhdGVkXG5cbiAgICBsZXQgbG9jIF8gPSBMb2MubG9jXG4gICAgbGV0IG1rIHggPSBtayB+bG9jOkxvYy5sb2MgeFxuICAgIGxldCBsaWRlbnQgeCA9IGxpZGVudCB+bG9jOkxvYy5sb2MgeFxuICBlbmRcblxuICBsZXQgcGV4cF90dXBsZSBsID0gRGVmYXVsdC5wZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSBsID0gRGVmYXVsdC5wcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSBsID0gRGVmYXVsdC5wdHlwX3R1cGxlIH5sb2MgbFxuICBsZXQgcGV4cF90dXBsZV9vcHQgbCA9IERlZmF1bHQucGV4cF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlX29wdCBsID0gRGVmYXVsdC5wcGF0X3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHB0eXBfcG9seSB2YXJzIHR5ID0gRGVmYXVsdC5wdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG4gIGxldCBwZXhwX2FwcGx5IGUgZWwgPSBEZWZhdWx0LnBleHBfYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlaW50IHQgPSBEZWZhdWx0LmVpbnQgfmxvYyB0XG4gIGxldCBlY2hhciB0ID0gRGVmYXVsdC5lY2hhciB+bG9jIHRcbiAgbGV0IGVzdHJpbmcgdCA9IERlZmF1bHQuZXN0cmluZyB+bG9jIHRcbiAgbGV0IGVmbG9hdCB0ID0gRGVmYXVsdC5lZmxvYXQgfmxvYyB0XG4gIGxldCBlaW50MzIgdCA9IERlZmF1bHQuZWludDMyIH5sb2MgdFxuICBsZXQgZWludDY0IHQgPSBEZWZhdWx0LmVpbnQ2NCB+bG9jIHRcbiAgbGV0IGVuYXRpdmVpbnQgdCA9IERlZmF1bHQuZW5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IGVib29sIHQgPSBEZWZhdWx0LmVib29sIH5sb2MgdFxuICBsZXQgZXZhciB0ID0gRGVmYXVsdC5ldmFyIH5sb2MgdFxuICBsZXQgcGludCB0ID0gRGVmYXVsdC5waW50IH5sb2MgdFxuICBsZXQgcGNoYXIgdCA9IERlZmF1bHQucGNoYXIgfmxvYyB0XG4gIGxldCBwc3RyaW5nIHQgPSBEZWZhdWx0LnBzdHJpbmcgfmxvYyB0XG4gIGxldCBwZmxvYXQgdCA9IERlZmF1bHQucGZsb2F0IH5sb2MgdFxuICBsZXQgcGludDMyIHQgPSBEZWZhdWx0LnBpbnQzMiB+bG9jIHRcbiAgbGV0IHBpbnQ2NCB0ID0gRGVmYXVsdC5waW50NjQgfmxvYyB0XG4gIGxldCBwbmF0aXZlaW50IHQgPSBEZWZhdWx0LnBuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBwYm9vbCB0ID0gRGVmYXVsdC5wYm9vbCB+bG9jIHRcbiAgbGV0IHB2YXIgdCA9IERlZmF1bHQucHZhciB+bG9jIHRcbiAgbGV0IGV1bml0ID0gRGVmYXVsdC5ldW5pdCB+bG9jXG4gIGxldCBwdW5pdCA9IERlZmF1bHQucHVuaXQgfmxvY1xuICBsZXQgZWNvbnN0cnVjdCA9IERlZmF1bHQuZWNvbnN0cnVjdFxuICBsZXQgcGNvbnN0cnVjdCA9IERlZmF1bHQucGNvbnN0cnVjdFxuICBsZXQgZWFwcGx5IGUgZWwgPSBEZWZhdWx0LmVhcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVhYnN0cmFjdCBwcyBlID0gRGVmYXVsdC5lYWJzdHJhY3QgfmxvYyBwcyBlXG4gIGxldCBlc2VxdWVuY2UgZWwgPSBEZWZhdWx0LmVzZXF1ZW5jZSB+bG9jIGVsXG4gIGxldCBlbGlzdCBsID0gRGVmYXVsdC5lbGlzdCB+bG9jIGxcbiAgbGV0IHBsaXN0IGwgPSBEZWZhdWx0LnBsaXN0IH5sb2MgbFxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IGlkZW50IH5mIGFyZ3MgPVxuICAgIERlZmF1bHQudHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mIGFyZ3NcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgPVxuICAgIERlZmF1bHQudW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZlxuXG4gIGxldCBldGFfcmVkdWNlID0gRGVmYXVsdC5ldGFfcmVkdWNlXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlID0gRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyA9XG4gICAgRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbmVuZFxuXG5sZXQgbWFrZSBsb2MgPVxuICAobW9kdWxlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBsb2MgPSBsb2NcbiAgZW5kKSA6IFMpXG4iLCIoKiogU21hbGwgaGVscGVyIHRvIGZpbmQgb3V0IHdobyBpcyB0aGUgY2FsbGVyIG9mIGEgZnVuY3Rpb24gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgUHJpbnRleGMgPSBTdGRsaWIuUHJpbnRleGNcblxudHlwZSB0ID0gUHJpbnRleGMubG9jYXRpb24gb3B0aW9uXG5cbmxldCBnZXQgfnNraXAgPVxuICBsZXQgc2tpcCA9IF9fRklMRV9fIDo6IHNraXAgaW5cbiAgbGV0IHN0YWNrID0gUHJpbnRleGMuZ2V0X2NhbGxzdGFjayAxNiBpblxuICBsZXQgbGVuID0gUHJpbnRleGMucmF3X2JhY2t0cmFjZV9sZW5ndGggc3RhY2sgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Qgc3RhY2sgcG9zXG4gICAgICAgIHw+IFByaW50ZXhjLmNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IHw+IFByaW50ZXhjLlNsb3QubG9jYXRpb25cbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgbG9jIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gfnNldDpza2lwIGxvYy5maWxlbmFtZSB0aGVuIGxvb3AgKHBvcyArIDEpIGVsc2UgU29tZSBsb2NcbiAgaW5cbiAgbG9vcCAwXG4iLCIoKiogSGVscGVycyB0byBwcm92aWRlIGhpbnRzIHRvIFBQWCB1c2VycyBmb3IgdHlwb3Mgb3Igc3BlbGxjaGVja3MuICopXG5cbm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gQ3V0b2ZmX21ldFxuXG4oKiBBcyBmb3VuZCBoZXJlIGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZSNPQ2FtbCAqKVxubGV0IGxldmVuc2h0ZWluX2Rpc3RhbmNlIHMgdCBjdXRvZmYgPVxuICBsZXQgbSA9IFN0cmluZy5sZW5ndGggcyBhbmQgbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICBpZiBjdXRvZmYgPSAwIHx8IGFicyAobSAtIG4pID49IGN1dG9mZiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIGZvciBhbGwgaSBhbmQgaiwgZC4oaSkuKGopIHdpbGwgaG9sZCB0aGUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiB0aGVcbiAgICAgICBmaXJzdCBpIGNoYXJhY3RlcnMgb2YgcyBhbmQgdGhlIGZpcnN0IGogY2hhcmFjdGVycyBvZiB0ICopXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlX21hdHJpeCB+ZGlteDoobSArIDEpIH5kaW15OihuICsgMSkgMCBpblxuICAgIGZvciBpID0gMCB0byBtIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IGZpcnN0IHN0cmluZyB0byBhbiBlbXB0eSBzZWNvbmQgc3RyaW5nICopXG4gICAgICBkLihpKS4oMCkgPC0gaVxuICAgIGRvbmU7XG4gICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgc2Vjb25kIHN0cmluZyB0byBhbiBlbXB0eSBmaXJzdCBzdHJpbmcgKilcbiAgICAgIGQuKDApLihqKSA8LSBqXG4gICAgZG9uZTtcbiAgICAoKiB0aGUgbWluaW11bSBvZiBlYWNoIGxpbmUgdG9nZXRoZXIgd2l0aCB0aGUgY29sdW1uIGluZGV4IHdpbGwgYmUgdXNlZFxuICAgICAgIHRvIG5vdGljZSBjdXRvZmYgZXhjZWVkaW5nIGFuZCByZXR1cm4gZWFybHkgaW4gdGhhdCBjYXNlICopXG4gICAgbGV0IGxpbmVfbWluID0gcmVmIDAgaW5cbiAgICBsZXQgZGlzdGFuY2UgPVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMSB0byBuIGRvXG4gICAgICAgICAgaWYgIWxpbmVfbWluID49IGN1dG9mZiAtIDEgJiYgaiA+PSBjdXRvZmYgLSAxIHRoZW4gcmFpc2UgQ3V0b2ZmX21ldDtcbiAgICAgICAgICBsaW5lX21pbiA6PSBtYXggbSBuO1xuICAgICAgICAgIGZvciBpID0gMSB0byBtIGRvXG4gICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICBpZiBDaGFyLmVxdWFsIHMuW2kgLSAxXSB0LltqIC0gMV0gdGhlbiBkLihpIC0gMSkuKGogLSAxKVxuICAgICAgICAgICAgICAgICgqIG5vIG9wZXJhdGlvbiByZXF1aXJlZCAqKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWluXG4gICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqKSArIDEpICgqIGEgZGVsZXRpb24gKilcbiAgICAgICAgICAgICAgICAgIChtaW5cbiAgICAgICAgICAgICAgICAgICAgIChkLihpKS4oaiAtIDEpICsgMSkgKCogYW4gaW5zZXJ0aW9uICopXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqIC0gMSkgKyAxKSAoKiBhIHN1YnN0aXR1dGlvbiAqKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBkLihpKS4oaikgPC0gdmFsdWU7XG4gICAgICAgICAgICBsaW5lX21pbiA6PSBtaW4gIWxpbmVfbWluIHZhbHVlXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lO1xuICAgICAgICBpZiBkLihtKS4obikgPCBjdXRvZmYgdGhlbiBTb21lIGQuKG0pLihuKSBlbHNlIE5vbmVcbiAgICAgIHdpdGggQ3V0b2ZmX21ldCAtPiBOb25lXG4gICAgaW5cbiAgICBkaXN0YW5jZVxuXG5sZXQgc3BlbGxjaGVjayBuYW1lcyBuYW1lID1cbiAgbGV0IGN1dG9mZiA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBuYW1lIHdpdGhcbiAgICB8IDEgfCAyIC0+IDBcbiAgICB8IDMgfCA0IC0+IDFcbiAgICB8IDUgfCA2IC0+IDJcbiAgICB8IF8gLT4gM1xuICBpblxuICBsZXQgXywgc3VnZ2VzdGlvbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0IG5hbWVzIH5pbml0OihJbnQubWF4X2ludCwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKChiZXN0X2Rpc3RhbmNlLCBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSBhcyBhY2MpIHJlZ2lzdGVyZWRfbmFtZSAtPlxuICAgICAgICBtYXRjaCBsZXZlbnNodGVpbl9kaXN0YW5jZSBuYW1lIHJlZ2lzdGVyZWRfbmFtZSBjdXRvZmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgICBpZiBkaXN0IDwgYmVzdF9kaXN0YW5jZSB0aGVuIChkaXN0LCBbIHJlZ2lzdGVyZWRfbmFtZSBdKVxuICAgICAgICAgICAgZWxzZSBpZiBkaXN0ID4gYmVzdF9kaXN0YW5jZSB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoZGlzdCwgcmVnaXN0ZXJlZF9uYW1lIDo6IG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpKVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBzdWdnZXN0aW9ucyB8PiBMaXN0LmZpbHRlciB+ZjooU3RyaW5nLiggPD4gKSBuYW1lKSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGxhc3QgOjogcmV2X3Jlc3QgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiSGludDogRGlkIHlvdSBtZWFuICVzJXMlcz9cIlxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5yZXYgcmV2X3Jlc3QpKVxuICAgICAgICAgICAoaWYgTGlzdC5pc19lbXB0eSByZXZfcmVzdCB0aGVuIFwiXCIgZWxzZSBcIiBvciBcIilcbiAgICAgICAgICAgbGFzdClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mID1cbiAgbGV0IHJlYyBjb2xsYXBzZV9hZnRlcl9hdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgcGFydCkpICYmIENoYXIuZXF1YWwgcGFydC5bMF0gJ0AnIHRoZW5cbiAgICAgICAgICBbIFN0cmluZy5jb25jYXQgKFN0cmluZy5kcm9wX3ByZWZpeCBwYXJ0IDEgOjogcGFydHMpIH5zZXA6XCIuXCIgXVxuICAgICAgICBlbHNlIHBhcnQgOjogY29sbGFwc2VfYWZ0ZXJfYXQgcGFydHNcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBwYXJ0cyA9XG4gICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGxvb3AgKGYgKFN0cmluZy5jb25jYXQgKHBhcnQgOjogcGFydHMpIH5zZXA6XCIuXCIpIGFjYykgcGFydHNcbiAgaW5cbiAgU3RyaW5nLnNwbGl0X29uX2NoYXIgbmFtZSB+c2VwOicuJyB8PiBjb2xsYXBzZV9hZnRlcl9hdCB8PiBsb29wIGFjY1xuXG5sZXQgZG90X3N1ZmZpeGVzIG5hbWUgPVxuICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OltdIH5mOihmdW4geCBhY2MgLT4geCA6OiBhY2MpXG5cbmxldCBzcGxpdF9wYXRoID1cbiAgbGV0IHJlYyBsb29wIHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKSB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgYW5kIGFmdGVyX2RvdCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdBJyAuLiAnWicgLT4gKFN0cmluZy5wcmVmaXggcyAoaSAtIDEpLCBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggcyBpKSlcbiAgICAgIHwgJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSlcbiAgICAgIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBpblxuICBmdW4gcyAtPiBsb29wIHMgMFxuXG5tb2R1bGUgUGF0dGVybiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG5hbWUgOiBzdHJpbmc7IGRvdF9zdWZmaXhlcyA6IFN0cmluZy5TZXQudCB9XG5cbiAgbGV0IG1ha2UgbmFtZSA9XG4gICAgeyBuYW1lOyBkb3Rfc3VmZml4ZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKGRvdF9zdWZmaXhlcyBuYW1lKSB9XG5cbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgbWF0Y2hlcyB0IG1hdGNoZWQgPSBTdHJpbmcuU2V0Lm1lbSBtYXRjaGVkIHQuZG90X3N1ZmZpeGVzXG5lbmRcblxuKCogT24gdGhlIG5hbWVzcGFjZSBcImEuTkFNRVNQQUNFXCIsIHJldHVybiB0aGUgcGFpciAoXCJhXCIsIE5BTUVTUEFDRSkgKilcbmxldCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSA9XG4gIG1hdGNoIFN0cmluZy5pbmRleF9vcHQgbmFtZSAnLicgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgaW5cbiAgICAgIGxldCBiZWZvcmVfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6MCB+bGVuOmkgaW5cbiAgICAgIGxldCBhZnRlcl9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczooaSArIDEpIH5sZW46KG4gLSBpIC0gMSkgaW5cbiAgICAgIFNvbWUgKGJlZm9yZV9kb3QsIGFmdGVyX2RvdClcblxubW9kdWxlIEFsbG93bGlzdGVkID0gc3RydWN0XG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBhcyB3ZWxsIGFzIGFsbCB0aGVpciBkb3Qgc3VmZml4ZXMuXG5cbiAgICAgU2luY2UgdGhlc2UgYXR0cmlidXRlcyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuXG4gICAgIFNhZGx5LCB0aGUgY29tcGlsZXIgc2lsZW50bHkgaWdub3JlcyB0aGVtIGlmIHRoZXkgYXJlIG1pc3BsYWNlZC4uLlxuICAqKVxuICBsZXQgY3JlYXRlX3NldCBmdWxseV9xdWFsaWZpZWRfbmFtZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICB+ZjooZnVuIGFjYyBuYW1lIC0+XG4gICAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mOihmdW4geCBhY2MgLT4gU3RyaW5nLlNldC5hZGQgeCBhY2MpKVxuICAgICAgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSBmdWxseV9xdWFsaWZpZWRfbmFtZXNcblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgY3JlYXRlX3NldFxuICAgICAgW1xuICAgICAgICBcIm9jYW1sLmFsZXJ0XCI7XG4gICAgICAgIFwib2NhbWwuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZF9tdXRhYmxlXCI7XG4gICAgICAgIFwib2NhbWwuZG9jXCI7XG4gICAgICAgIFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlNjRcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVkXCI7XG4gICAgICAgIFwib2NhbWwubG9jYWxcIjtcbiAgICAgICAgXCJvY2FtbC5ub2FsbG9jXCI7XG4gICAgICAgIFwib2NhbWwucHB3YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwucmVtb3ZlX2FsaWFzZXNcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZWRcIjtcbiAgICAgICAgXCJvY2FtbC50YWlsY2FsbFwiO1xuICAgICAgICBcIm9jYW1sLnRleHRcIjtcbiAgICAgICAgXCJvY2FtbC51bmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnRhZ2dlZFwiO1xuICAgICAgICBcIm9jYW1sLndhcm5fb25fbGl0ZXJhbF9wYXR0ZXJuXCI7XG4gICAgICAgIFwib2NhbWwud2FybmVycm9yXCI7XG4gICAgICAgIFwib2NhbWwud2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICAgIFwidG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgIF1cblxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9ucy5cblxuICAgICBTaW5jZSB0aGVzZSBleHRlbnNpb25zIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG4gICopXG4gIGxldCBleHRlbnNpb25zID0gY3JlYXRlX3NldCBbIFwib2NhbWwuZXJyb3JcIjsgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIiBdXG5cbiAgbGV0IGlzX2FsbG93bGlzdGVkIH5raW5kIG5hbWUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEF0dHJpYnV0ZSAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGF0dHJpYnV0ZXNcbiAgICB8IGBFeHRlbnNpb24gLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBleHRlbnNpb25zXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgYXR0cmlidXRlc1xuICBsZXQgZ2V0X2V4dGVuc2lvbl9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBleHRlbnNpb25zXG5lbmRcblxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBzdHJ1Y3RcbiAgdHlwZSByZXNlcnZlZCA9IChzdHJpbmcsIHN1Yl9uYW1lc3BhY2VzKSBIYXNodGJsLnRcbiAgYW5kIHN1Yl9uYW1lc3BhY2VzID0gQWxsIHwgU3ViX25hbWVzcGFjZXMgb2YgcmVzZXJ2ZWRcblxuICAoKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbQWxsXSwgdGhlbiBcInhcIiBhbmQgYWxsIHBhdGhzIHRoYXRcbiAgICogc3RhcnQgd2l0aCBcInguXCIgYXJlIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsXVxuICAgKlxuICAgKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbU3ViX25hbWVzcGFjZXMgdGJsJ10sIGFuZCBQIGlzXG4gICAqIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsJ10sIHRoZW4gYWxsIHBhdGhzIFwieC5QXCIgYXJlIHJlc2VydmVkIHdpdGhcbiAgICogcmVzcGVjdCB0byBbdGJsXS5cbiAgICopXG4gIGxldCBjcmVhdGVfcmVzZXJ2ZWQgKCkgOiByZXNlcnZlZCA9IEhhc2h0YmwuY3JlYXRlIDE2XG5cbiAgbGV0IHJlYyByZXNlcnZlIG5zIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5zIHdpdGhcbiAgICB8IE5vbmUgLT4gSGFzaHRibC5hZGRfZXhuIHRibCB+a2V5Om5zIH5kYXRhOkFsbFxuICAgIHwgU29tZSAob3V0ZXJfbnMsIHJlc3RfbnMpIC0+IChcbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHRibCBvdXRlcl9ucyB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgICAgICAgIFN1Yl9uYW1lc3BhY2VzIChjcmVhdGVfcmVzZXJ2ZWQgKCkpKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU3ViX25hbWVzcGFjZXMgcmVzdF90YmwgLT4gcmVzZXJ2ZSByZXN0X25zIHJlc3RfdGJsXG4gICAgICAgIHwgQWxsIC0+ICgpKVxuXG4gIGxldCByZWMgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgd2l0aFxuICAgIHwgU29tZSAobnMsIHJlc3QpIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbnMgd2l0aFxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsKSAtPlxuICAgICAgICAgICAgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyByZXN0IHJlc3RfdGJsXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2UpXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIF8pIHwgTm9uZSAtPiBmYWxzZSlcblxuICBsZXQgdGJsID0gY3JlYXRlX3Jlc2VydmVkICgpXG4gIGxldCByZXNlcnZlIG5zID0gcmVzZXJ2ZSBucyB0YmxcbiAgbGV0IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSA9IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmxcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1lcmxpblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWFzb25cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVmbXRcIiAoKiByZWFzb24gKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm5zXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXRhb2NhbWxcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwib2NhbWxmb3JtYXRcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicHB4bGliLm1pZ3JhdGlvblwiXG5cbiAgbGV0IGNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lID1cbiAgICBsZXQga2luZCwgbGlzdCA9XG4gICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIHwgYEF0dHJpYnV0ZSAtPiAoXCJhdHRyaWJ1dGVcIiwgQWxsb3dsaXN0ZWQuYXR0cmlidXRlcylcbiAgICAgIHwgYEV4dGVuc2lvbiAtPiAoXCJleHRlbnNpb25cIiwgQWxsb3dsaXN0ZWQuZXh0ZW5zaW9ucylcbiAgICBpblxuICAgIGlmIFN0cmluZy5TZXQubWVtIG5hbWUgbGlzdCB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXQgbWF0Y2hlcyBhbiAlcyByZXNlcnZlZCBieSB0aGUgXFxcbiAgICAgICAgIGNvbXBpbGVyXCJcbiAgICAgICAga2luZCBuYW1lIGtpbmRcbiAgICBlbHNlIGlmIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXRzIG5hbWVzcGFjZSBpcyBtYXJrZWQgYXMgXFxcbiAgICAgICAgIHJlc2VydmVkXCJcbiAgICAgICAga2luZCBuYW1lXG5lbmRcblxubGV0IGlnbm9yZV9jaGVja3MgbmFtZSA9XG4gIFJlc2VydmVkX25hbWVzcGFjZXMuaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lXG4gIHx8IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OlwiX1wiXG5cbm1vZHVsZSBSZWdpc3RyYXIgPSBzdHJ1Y3RcbiAgdHlwZSBlbGVtZW50ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA6IHN0cmluZzsgZGVjbGFyZWRfYXQgOiBDYWxsZXJfaWQudCB9XG4gIHR5cGUgYWxsX2Zvcl9jb250ZXh0ID0geyBtdXRhYmxlIGFsbCA6IGVsZW1lbnQgU3RyaW5nLk1hcC50IH1cblxuICB0eXBlICdhIHQgPSB7XG4gICAgYWxsX2J5X2NvbnRleHQgOiAoJ2EsIGFsbF9mb3JfY29udGV4dCkgSGFzaHRibC50O1xuICAgIHNraXAgOiBzdHJpbmcgbGlzdDtcbiAgICBraW5kIDogc3RyaW5nO1xuICAgIHN0cmluZ19vZl9jb250ZXh0IDogJ2EgLT4gc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfmtpbmQgfmN1cnJlbnRfZmlsZSB+c3RyaW5nX29mX2NvbnRleHQgPVxuICAgIHtcbiAgICAgIGFsbF9ieV9jb250ZXh0ID0gSGFzaHRibC5jcmVhdGUgMTY7XG4gICAgICBza2lwID0gWyBjdXJyZW50X2ZpbGU7IF9fRklMRV9fIF07XG4gICAgICBraW5kO1xuICAgICAgc3RyaW5nX29mX2NvbnRleHQ7XG4gICAgfVxuXG4gIGxldCBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCA9XG4gICAgSGFzaHRibC5maW5kX29yX2FkZCB0LmFsbF9ieV9jb250ZXh0IGNvbnRleHQgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICB7IGFsbCA9IFN0cmluZy5NYXAuZW1wdHkgfSlcblxuICBsZXQgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWUgPVxuICAgIG1hdGNoIFN0cmluZy5NYXAuZmluZF9vcHQgbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgICBsZXQgZGVjbGFyZWRfYXQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsb2MgOiBTdGRsaWIuUHJpbnRleGMubG9jYXRpb24pIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiIGRlY2xhcmVkIGF0ICVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuICAgICAgICBpblxuICAgICAgICBsZXQgY29udGV4dCA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBzIC0+IFwiIG9uIFwiIF4gcyBeIFwic1wiXG4gICAgICAgIGluXG4gICAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICAgIFwiU29tZSBwcHgtZXMgdHJpZWQgdG8gcmVnaXN0ZXIgY29uZmxpY3RpbmcgdHJhbnNmb3JtYXRpb25zOiAlcyBcXFxuICAgICAgICAgICAnJXMnJXMlcyBtYXRjaGVzICVzICclcyclc1wiXG4gICAgICAgICAgKFN0cmluZy5jYXBpdGFsaXplX2FzY2lpIHQua2luZClcbiAgICAgICAgICBuYW1lIGNvbnRleHQgKGRlY2xhcmVkX2F0IGNhbGxlcikgdC5raW5kIGUuZnVsbHlfcXVhbGlmaWVkX25hbWVcbiAgICAgICAgICAoZGVjbGFyZWRfYXQgZS5kZWNsYXJlZF9hdClcblxuICBsZXQgY2hlY2tfY29sbGlzaW9ucyB0IGNvbnRleHQgbmFtZSA9XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWVcblxuICBsZXQgcmVnaXN0ZXIgfmtpbmQgdCBjb250ZXh0IG5hbWUgPVxuICAgIFJlc2VydmVkX25hbWVzcGFjZXMuY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWU7XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQ6YWxsIHQgY29udGV4dCBuYW1lO1xuICAgIGxldCB0ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA9IG5hbWU7IGRlY2xhcmVkX2F0ID0gY2FsbGVyIH0gaW5cbiAgICBhbGwuYWxsIDwtXG4gICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFsbC5hbGwgfmY6KGZ1biBuYW1lIGFjYyAtPlxuICAgICAgICAgIFN0cmluZy5NYXAuYWRkIG5hbWUgdCBhY2MpXG5cbiAgbGV0IHNwZWxsY2hlY2sgdCBjb250ZXh0ID8oYWxsb3dsaXN0ID0gW10pIG5hbWUgPVxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGxldCBhbGwgPVxuICAgICAgU3RyaW5nLk1hcC5mb2xkIChmdW4ga2V5IF8gYWNjIC0+IGtleSA6OiBhY2MpIGFsbF9mb3JfY29udGV4dC5hbGwgW11cbiAgICBpblxuICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoYWxsIEAgYWxsb3dsaXN0KSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgXyBhcyB4IC0+IHhcbiAgICB8IE5vbmUgd2hlbiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgLT4gTm9uZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIGxldCBvdGhlcl9jb250ZXh0cyA9XG4gICAgICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgICAgICAoZnVuIGN0eCBhbGxfZnJvbV9jb250ZXh0IGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIFBvbHkuKCA8PiApIGNvbnRleHQgY3R4XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZnJvbV9jb250ZXh0LmFsbFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjdHggd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPiAocyBeIFwic1wiKSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZSBhY2MpXG4gICAgICAgICAgICB0LmFsbF9ieV9jb250ZXh0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcF90ZXh0ID0gRm9ybWF0LnBwX3ByaW50X3RleHQgaW5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29udGV4dCBwcGYgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgbGV0IGFfb3JfYW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyB8ICd5JyAtPiBcImFuXCJcbiAgICAgICAgICAgICAgICB8IF8gLT4gXCJhXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgICAgICAgICAgXCJAIGJ1dEAgaXNAIHVzZWRAIGhlcmVAIGluQCB0aGVAIGNvbnRleHRAIG9mQCAlc0AgJWFcIiBhX29yX2FuXG4gICAgICAgICAgICAgICAgcHBfdGV4dCBzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5zb3J0IH5jbXA6KGZ1biB4IHkgLT4gLVN0cmluZy5jb21wYXJlIHggeSkgb3RoZXJfY29udGV4dHNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBbIGMgXSAtPlxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZSBwcF90ZXh0IGNcbiAgICAgICAgICAgICAgICAgY3VycmVudF9jb250ZXh0KVxuICAgICAgICB8IGxhc3QgOjogcmV2X290aGVycyAtPlxuICAgICAgICAgICAgbGV0IG90aGVycyA9IExpc3QucmV2IHJldl9vdGhlcnMgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWFAIGFuZEAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWVcbiAgICAgICAgICAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IHBwX3RleHQgfnBwX3NlcDooZnVuIHBwZiAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKSlcbiAgICAgICAgICAgICAgICAgb3RoZXJzIHBwX3RleHQgbGFzdCBjdXJyZW50X2NvbnRleHQpKVxuXG4gIG1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICAgICgqIFRPRE86IGhpbnQgc3BlbGxpbmcgZXJyb3JzIHJlZ2FyZGluZyByZXNlcnZlZCBuYW1lc3BhY2VzIG5hbWVzIGFuZCBhbGxvd2xpc3RlZFxuICAgICAgIG5hbWVzIGluc3RlYWQgb2YgdGFraW5nIGFuIG9wdGlvbmFsIFthbGxvd2xpc3RdIHBhcmFtZXRlci4gKilcbiAgICBsZXQgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAoZnVuIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIHNwZWxsY2hlY2sgdCBjb250ZXh0IG5hbWUudHh0ID9hbGxvd2xpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlc1wiIG1zZ1xuICAgICAgICAgIHwgU29tZSBzIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzLlxcbiVzXCIgbXNnIHMpXG4gICAgICAgIGZtdCBuYW1lLnR4dFxuXG4gICAgbGV0IHJhaXNlX2Vycm9yZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnJhaXNlIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcblxuICAgIGxldCBlcnJvcl9leHRlbnNpb25mIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcbiAgZW5kXG5cbiAgbGV0IHJhaXNlX2Vycm9yZiA9IEVycm9yLnJhaXNlX2Vycm9yZlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEJ1ZmZlciA9IFN0ZGxpYi5CdWZmZXJcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBsaWRlbnQgeCA9IExvbmdpZGVudC5MaWRlbnQgeFxuXG5sZXQgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgPVxuICBsZXQgbG9jID0gdGQucHR5cGVfbmFtZS5sb2MgaW5cbiAgcHR5cF9jb25zdHIgfmxvY1xuICAgIChMb2NhdGVkLm1hcCBsaWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAoTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmZzdClcblxubGV0IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4ID1cbiAgbGV0IGNob3AgbiB+b3JfbW9yZSBzdHJpbmcgcG9zIGYgPVxuICAgIGxldCB0YXJnZXQgPSAhcG9zIC0gbiBpblxuICAgIHdoaWxlICFwb3MgPiAwICYmIChvcl9tb3JlIHx8ICFwb3MgPiB0YXJnZXQpICYmIGYgc3RyaW5nLlshcG9zIC0gMV0gZG9cbiAgICAgIHBvcyA6PSAhcG9zIC0gMVxuICAgIGRvbmU7XG4gICAgIXBvcyA8PSB0YXJnZXRcbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIGxldCBwb3MgPSByZWYgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGlmXG4gICAgICBjaG9wIDEgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgICAmJiBjaG9wIDMgfm9yX21vcmU6dHJ1ZSBzdHJpbmcgcG9zIChmdW5jdGlvblxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiBjaG9wIDIgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgdGhlbiBTdHJpbmcucHJlZml4IHN0cmluZyAhcG9zXG4gICAgZWxzZSBzdHJpbmdcblxubGV0IGdlbl9zeW1ib2wgPVxuICBsZXQgY250ID0gcmVmIDAgaW5cbiAgZnVuID8ocHJlZml4ID0gXCJfeFwiKSAoKSAtPlxuICAgIGNudCA6PSAhY250ICsgMTtcbiAgICBsZXQgcHJlZml4ID0gc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggcHJlZml4IGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlc19fJTAzaV9cIiBwcmVmaXggIWNudFxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOlxuICAgICh0eXBlX2RlY2xhcmF0aW9uLCBfKSByZXN1bHQgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IHByZWZpeF9zdHJpbmcgaSA9XG4gICAgKCogYSwgYiwgLi4uLCB5LCB6LCBhYSwgYmIsIC4uLiAqKVxuICAgIFN0cmluZy5tYWtlICgoaSAvIDI2KSArIDEpIChDaGFyLmNociAoQ2hhci5jb2RlICdhJyArIChpIG1vZCAyNikpKVxuICBpblxuICBsZXQgbmFtZV9wYXJhbSBpICh0cCwgdmFyaWFuY2UpID1cbiAgICAobWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IE9rIChQdHlwX3ZhciAoZ2VuX3N5bWJvbCB+cHJlZml4OihwcmVmaXhfc3RyaW5nIGkpICgpKSlcbiAgICB8IFB0eXBfdmFyIF8gYXMgdiAtPiBPayB2XG4gICAgfCBfIC0+XG4gICAgICAgIEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6dHAucHR5cF9sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiKSlcbiAgICA+PnwgZnVuIHB0eXBfZGVzYyAtPiAoeyB0cCB3aXRoIHB0eXBfZGVzYyB9LCB2YXJpYW5jZSlcbiAgaW5cbiAgbGV0IHB0eXBlX3BhcmFtcywgZXJyb3JzID1cbiAgICB0ZC5wdHlwZV9wYXJhbXMgfD4gTGlzdC5tYXBpIH5mOm5hbWVfcGFyYW1cbiAgICB8PiBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE9rIG8gLT4gRWl0aGVyLkxlZnQgb1xuICAgICAgICAgfCBFcnJvciBlIC0+IEVpdGhlci5SaWdodCBlKVxuICBpblxuICBtYXRjaCBlcnJvcnMgd2l0aCBbXSAtPiBPayB7IHRkIHdpdGggcHR5cGVfcGFyYW1zIH0gfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpXG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDogdHlwZV9kZWNsYXJhdGlvbiA9XG4gIG1hdGNoIG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzIHRkIHdpdGhcbiAgfCBPayByZXMgLT4gcmVzXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+ZiA9XG4gIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgbGV0IHJlc3VsdF90eXBlID1cbiAgICBmIH5sb2M6dGQucHR5cGVfbmFtZS5sb2MgKGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkKVxuICBpblxuICBMaXN0LmZvbGRfcmlnaHQgdGQucHR5cGVfcGFyYW1zIH5pbml0OnJlc3VsdF90eXBlXG4gICAgfmY6KGZ1biAodHAsIF92YXJpYW5jZSkgYWNjIC0+XG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIHB0eXBfYXJyb3cgfmxvYyBOb2xhYmVsIChmIH5sb2MgdHApIGFjYylcblxubGV0IHN0cmluZ19vZl9jb3JlX3R5cGUgY3QgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBQcHJpbnRhc3QuY29yZV90eXBlIHBwZiBjdDtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgKHR5LCBfKSA9XG4gIGxldCBsb2MgPSB0eS5wdHlwX2xvYyBpblxuICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICB8IFB0eXBfdmFyIG5hbWUgLT4gT2sgKExvY2F0ZWQubWsgfmxvYyBuYW1lKVxuICB8IF8gLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIsIFtdKVxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZSB0ID1cbiAgbWF0Y2ggZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgdCB3aXRoXG4gIHwgT2sgZSAtPiBlXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG5jbGFzcyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcbiAgICB2YWwgdHlwZV9uYW1lcyA6IHN0cmluZyBsaXN0ID0gTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpXG4gICAgbWV0aG9kIHJldHVybl90cnVlICgpID0gcmFpc2Vfbm90cmFjZSBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hcnJvdyBfIC0+ICgpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgaWQ7IF8gfSwgXylcbiAgICAgICAgd2hlbiBMaXN0Lm1lbSB+c2V0OnR5cGVfbmFtZXMgaWQgLT5cbiAgICAgICAgICBzZWxmI3JldHVybl90cnVlICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkID1cbiAgICAgICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBjZC5wY2RfcmVzICopXG4gICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICB8IFBjc3RyX3R1cGxlIGFyZ3MgLT4gTGlzdC5pdGVyIGFyZ3MgfmY6c2VsZiNjb3JlX3R5cGVcbiAgICAgIHwgUGNzdHJfcmVjb3JkIGZpZWxkcyAtPiBMaXN0Lml0ZXIgZmllbGRzIH5mOnNlbGYjbGFiZWxfZGVjbGFyYXRpb25cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlcyBfID0gKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGF0dHJpYnV0ZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpXG5cbiAgICBtZXRob2QgZ28gKCkgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5pdGVyIHRkcyB+ZjpzZWxmI3R5cGVfZGVjbGFyYXRpb24gd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlIC0+IFJlY3Vyc2l2ZVxuICAgICAgICAgIHwgKCkgLT4gTm9ucmVjdXJzaXZlKVxuICBlbmRcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID0gKG5ldyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMpI2dvICgpXG5sZXQgcmVjIGxhc3QgeCBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHggfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxubGV0IGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCA9XG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHIgW10gLT4gbmFtZS5sb2NcbiAgfCBQU3RyICh4IDo6IGwpIC0+IHsgeC5wc3RyX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzdHJfbG9jLmxvY19lbmQgfVxuICB8IFBTaWcgW10gLT4gbmFtZS5sb2NcbiAgfCBQU2lnICh4IDo6IGwpIC0+IHsgeC5wc2lnX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzaWdfbG9jLmxvY19lbmQgfVxuICB8IFBUeXAgdCAtPiB0LnB0eXBfbG9jXG4gIHwgUFBhdCAoeCwgTm9uZSkgLT4geC5wcGF0X2xvY1xuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT4geyB4LnBwYXRfbG9jIHdpdGggbG9jX2VuZCA9IGUucGV4cF9sb2MubG9jX2VuZCB9XG5cbmxldCBsb2Nfb2ZfcGF5bG9hZCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcblxubGV0IGxvY19vZl9hdHRyaWJ1dGUgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICAoKiBUT0RPOiBmaXggdGhpcyBpbiB0aGUgY29tcGlsZXIsIGFuZCBtb3ZlIHRoZSBsb2dpYyB0byBvbXAgd2hlbiBjb252ZXJ0aW5nXG4gICAgIGZyb20gb2xkZXIgYXN0cy4gKilcbiAgKCogXCJvY2FtbC5kb2NcIiBhdHRyaWJ1dGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBbTG9jYXRpb24ubm9uZV0sIHdoaWNoIGlzIG5vdCBoZWxwZnVsIGZvclxuICAgICBlcnJvciBtZXNzYWdlcy4gKilcbiAgaWYgUG9seS4oID0gKSBhdHRyX25hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlblxuICAgIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcbiAgZWxzZVxuICAgIHtcbiAgICAgIGF0dHJfbmFtZS5sb2Mgd2l0aFxuICAgICAgbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkKS5sb2NfZW5kO1xuICAgIH1cblxubGV0IGxvY19vZl9leHRlbnNpb24gKG5hbWUsIHBheWxvYWQpID1cbiAgaWYgUG9seS4oID0gKSBuYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW4gbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkXG4gIGVsc2VcbiAgICB7IG5hbWUubG9jIHdpdGggbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQpLmxvY19lbmQgfVxuXG5sZXQgY3VycnlfYXBwbGljYXRpb25zIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9hcHBseSAoZiwgb3JpZ19mb3J3YXJkX2FyZ3MpIC0+XG4gICAgICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBmXG4gICAgICAgIHwgbGFzdF9hcmcgOjogcmV2X2Zyb250X2FyZ3MgLT5cbiAgICAgICAgICAgIHBleHBfYXBwbHkgfmxvYyAobG9vcCByZXZfZnJvbnRfYXJncykgWyBsYXN0X2FyZyBdXG4gICAgICBpblxuICAgICAgbG9vcCAoTGlzdC5yZXYgb3JpZ19mb3J3YXJkX2FyZ3MpXG4gIHwgXyAtPiBleHByXG5cbmxldCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIExpc3QuZmlsdGVyX21hcCB+ZjooZnVuY3Rpb25cbiAgICB8IHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9sb2MgPSBfOyBhdHRyX3BheWxvYWQgPSBfIH1cbiAgICAgIHdoZW4gTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUuTG9jYXRpb24udHh0IC0+XG4gICAgICAgIE5vbmVcbiAgICB8IGF0dHIgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgICBTb21lIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGVzIG5vdCBhbGxvd2VkIGhlcmVcIikpXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGRcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhIGFjYyA9IGF0dHJpYnV0ZXNfZXJyb3JzIFsgYSBdIEAgYWNjXG4gIGVuZFxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXMgbCA9XG4gIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlc19pbiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSA9IGFzc2VydF9ub19hdHRyaWJ1dGVzIFsgYSBdXG4gIGVuZFxuXG5sZXQgYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMgPVxuICB7XG4gICAgYXR0cl9uYW1lID0geyBsb2M7IHR4dCA9IFwib2NhbWwucHB3YXJuaW5nXCIgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpc19wb2x5bW9ycGhpY192YXJpYW50ID1cbiAgbGV0IHJlYyBjaGVjayA9IGZ1bmN0aW9uXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCBfOyBfIH0gLT4gYERlZmluaXRlbHlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAodHlwLCBfKTsgXyB9IC0+IGNoZWNrIHR5cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciBfOyBfIH0gLT4gYE1heWJlXG4gICAgfCBfIC0+IGBTdXJlbHlfbm90XG4gICAgKCogVHlwZSB2YXJzIGdvIGhlcmUgZXZlbiB0aG91Z2ggdGhleSBjb3VsZCBiZSBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzLCBob3dldmVyIHdlIGRvbid0IGhhbmRsZSBpdCBpZiB0aGV5IGdldCBzdWJzdGl0dXRlZFxuICAgICAgIGJ5IGEgcG9seW1vcnBoaWMgdmFyaWFudCB0aGF0IGlzIHRoZW4gaW5jbHVkZWQuICopXG4gIGluXG4gIGZ1biB0ZCB+c2lnXyAtPlxuICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfcmVjb3JkIF8gfCBQdHlwZV9vcGVuIC0+IGBTdXJlbHlfbm90XG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoXG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlmIHNpZ18gdGhlbiBgTWF5YmUgZWxzZSBgU3VyZWx5X25vdFxuICAgICAgICB8IFNvbWUgdHlwIC0+IGNoZWNrIHR5cClcblxubGV0IG1rX25hbWVkX3NpZyB+bG9jIH5zZ19uYW1lIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgWyB0ZCBdXG4gICAgd2hlbiBTdHJpbmcuZXF1YWwgdGQucHR5cGVfbmFtZS50eHQgXCJ0XCIgJiYgTGlzdC5pc19lbXB0eSB0ZC5wdHlwZV9jc3RycyAtPlxuICAgICAgaWZcbiAgICAgICAgKG5vdCBoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudClcbiAgICAgICAgJiYgUG9seS4oID0gKSAoaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlKSBgRGVmaW5pdGVseVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBhcml0eSA9IExpc3QubGVuZ3RoIHRkLnB0eXBlX3BhcmFtcyBpblxuICAgICAgICBpZiBhcml0eSA+PSA0IHRoZW4gTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG10eSA9XG4gICAgICAgICAgICBpZiBhcml0eSA9IDAgdGhlbiBzZ19uYW1lIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlcyVkXCIgc2dfbmFtZSBhcml0eVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgICAgICAgIGxldCBmb3Jfc3Vic3QgPVxuICAgICAgICAgICAgQXN0X2hlbHBlci5UeXBlLm1rIH5sb2MgdGQucHR5cGVfbmFtZSB+cGFyYW1zOnRkLnB0eXBlX3BhcmFtc1xuICAgICAgICAgICAgICB+bWFuaWZlc3Q6XG4gICAgICAgICAgICAgICAgKHB0eXBfY29uc3RyIH5sb2NcbiAgICAgICAgICAgICAgICAgICAoTG9jYXRlZC5tYXBfbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIH5mOmZzdCB0ZC5wdHlwZV9wYXJhbXMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKGluY2x1ZGVfaW5mb3MgfmxvY1xuICAgICAgICAgICAgICAgKHBtdHlfd2l0aCB+bG9jXG4gICAgICAgICAgICAgICAgICAocG10eV9pZGVudCB+bG9jIChMb2NhdGVkLmxpZGVudCBtdHkgfmxvYykpXG4gICAgICAgICAgICAgICAgICBbIFB3aXRoX3R5cGVzdWJzdCAoTG9jYXRlZC5saWRlbnQgfmxvYyBcInRcIiwgZm9yX3N1YnN0KSBdKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGV4bl90b19sb2NfZXJyb3IgZXhuID1cbiAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoIFNvbWUgZXJyb3IgLT4gZXJyb3IgfCBOb25lIC0+IHJhaXNlIGV4blxuXG5tb2R1bGUgV2l0aF9lcnJvcnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3RcblxuICBsZXQgcmV0dXJuIGUgPSAoZSwgW10pXG5cbiAgbGV0ICggPj49ICkgKHgsIGVycm9yczEpIGYgPVxuICAgIGxldCB5LCBlcnJvcnMyID0gZiB4IGluXG4gICAgKHksIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gIGxldCAoID4+fCApICh4LCBlcnJvcnMpIGYgPSAoZiB4LCBlcnJvcnMpXG5cbiAgbGV0IG9mX3Jlc3VsdCByZXN1bHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+ICh4LCBbXSlcbiAgICB8IEVycm9yIGVycm9ycyAtPiAoZGVmYXVsdCwgTm9uRW1wdHlMaXN0LnRvX2xpc3QgZXJyb3JzKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gKExpc3QubWFwIGxpc3QgfmY6ZnN0LCBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjpzbmQpXG5lbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9wYXR0ZXJuMFxubGV0IG5vbGFiZWwgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9sYWJlbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9sYWJlbFwiKVxubGV0IGxhYmVsbGVkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMYWJlbGxlZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFiZWxsZWRcIilcbmxldCBvcHRpb25hbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgT3B0aW9uYWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wdGlvbmFsXCIpXG5sZXQgYXR0cmlidXRlIH5uYW1lOihUIG5hbWUpICB+cGF5bG9hZDooVCBwYXlsb2FkKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHguYXR0cl9uYW1lKS5sb2MgKHguYXR0cl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcGF5bG9hZCBjdHggbG9jIHguYXR0cl9wYXlsb2FkIGsgaW4gaylcbmxldCBiaW5kaW5nX29wIH5vcDooVCBvcCkgIH5wYXQ6KFQgcGF0KSAgfmV4cDooVCBleHApICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBvcCBjdHggKHgucGJvcF9vcCkubG9jICh4LnBib3Bfb3ApLnR4dCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBwYXQgY3R4IGxvYyB4LnBib3BfcGF0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGV4cCBjdHggbG9jIHgucGJvcF9leHAgayBpbiBrKVxubGV0IGNhc2UgfmxoczooVCBsaHMpICB+Z3VhcmQ6KFQgZ3VhcmQpICB+cmhzOihUIHJocykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGxocyBjdHggbG9jIHgucGNfbGhzIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGd1YXJkIGN0eCBsb2MgeC5wY19ndWFyZCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSByaHMgY3R4IGxvYyB4LnBjX3JocyBrIGluIGspXG5sZXQgcGNsX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNsX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNsX2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG5sZXQgcGNsX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxubGV0IHBjbF9mdW4gKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxubGV0IHBjbF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG5sZXQgcGNsX2xldCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxubGV0IHBjbF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGNsX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBjbF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcGNmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2luaGVyaXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmhlcml0XCIpKVxubGV0IHBjZl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbmxldCBwY2ZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG5sZXQgcGNmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjZl9pbml0aWFsaXplciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbml0aWFsaXplclwiKSlcbmxldCBwY2ZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIikpXG5sZXQgcGNmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IGNma192aXJ0dWFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDZmtfdmlydHVhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmlydHVhbFwiKVxubGV0IGNma19jb25jcmV0ZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uY3JldGVcIilcbmxldCBjbGFzc19pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2lfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNpX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNsYXNzX2luZm9zIH52aXJ0OihUIHZpcnQpICB+cGFyYW1zOihUIHBhcmFtcykgIH5uYW1lOihUIG5hbWUpICB+ZXhwcjooVFxuICBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHZpcnQgY3R4IGxvYyB4LnBjaV92aXJ0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnBjaV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LnBjaV9uYW1lKS5sb2MgKHgucGNpX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucGNpX2V4cHIgayBpbiBrKSlcbmxldCBjbGFzc19zaWduYXR1cmUgfnNlbGY6KFQgc2VsZikgIH5maWVsZHM6KFQgZmllbGRzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc2VsZiBjdHggbG9jIHgucGNzaWdfc2VsZiBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc2lnX2ZpZWxkcyBrIGluIGspXG5sZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmOihUIHNlbGYpICB+ZmllbGRzOihUIGZpZWxkcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc3RyX3NlbGYgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3N0cl9maWVsZHMgayBpbiBrKVxubGV0IHBjdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfY29uc3RyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG5sZXQgcGN0eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG5sZXQgcGN0eV9hcnJvdyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG5sZXQgcGN0eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcGN0eV9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBjdGZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdGZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmhlcml0XCIpKVxubGV0IHBjdGZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxubGV0IHBjdGZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxubGV0IHBjdGZfY29uc3RyYWludCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjdGZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxubGV0IHBjdGZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IGNsb3NlZCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDbG9zZWQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNsb3NlZFwiKVxubGV0IG9wZW5fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE9wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wZW5cIilcbmxldCBwY29uc3RfaW50ZWdlciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlZ2VyXCIpXG5sZXQgcGNvbnN0X2NoYXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9jaGFyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjaGFyXCIpXG5sZXQgcGNvbnN0X3N0cmluZyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbmxldCBwY29uc3RfZmxvYXQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZsb2F0XCIpXG5sZXQgcGNzdHJfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKVxubGV0IHBjc3RyX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dmFyczooVCB2YXJzKSAgfmFyZ3M6KFQgYXJncykgXG4gIH5yZXM6KFQgcmVzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBjZF9uYW1lKS5sb2MgKHgucGNkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdmFycyBjdHggbG9jIHgucGNkX3ZhcnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGFyZ3MgY3R4IGxvYyB4LnBjZF9hcmdzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSByZXMgY3R4IGxvYyB4LnBjZF9yZXMgayBpbiBrKSlcbmxldCBwdHlwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbmxldCBwdHlwX3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhclwiKSlcbmxldCBwdHlwX2Fycm93IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbmxldCBwdHlwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbmxldCBwdHlwX2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHB0eXBfb2JqZWN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbmxldCBwdHlwX2NsYXNzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpKVxubGV0IHB0eXBfYWxpYXMgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBwdHlwX3ZhcmlhbnQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbmxldCBwdHlwX3BvbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG5sZXQgcHR5cF9wYWNrYWdlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2thZ2VcIikpXG5sZXQgcHR5cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgdXB0byA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBVcHRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVcHRvXCIpXG5sZXQgZG93bnRvXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBEb3dudG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkRvd250b1wiKVxubGV0IHBkaXJhX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZGlyX3N0cmluZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9zdHJpbmcgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxubGV0IHBkaXJfaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludFwiKVxubGV0IHBkaXJfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpXG5sZXQgcGRpcl9ib29sIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2Jvb2wgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImJvb2xcIilcbmxldCBwZXhwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXhwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcGV4cF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG5sZXQgcGV4cF9sZXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG5sZXQgcGV4cF9mdW5jdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3Rpb25cIikpXG5sZXQgcGV4cF9mdW4gKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbmxldCBwZXhwX2FwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG5sZXQgcGV4cF9tYXRjaCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1hdGNoXCIpKVxubGV0IHBleHBfdHJ5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRyeVwiKSlcbmxldCBwZXhwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbmxldCBwZXhwX2NvbnN0cnVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxubGV0IHBleHBfdmFyaWFudCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbmxldCBwZXhwX3JlY29yZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG5sZXQgcGV4cF9maWVsZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmaWVsZFwiKSlcbmxldCBwZXhwX3NldGZpZWxkIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0ZmllbGRcIikpXG5sZXQgcGV4cF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG5sZXQgcGV4cF9pZnRoZW5lbHNlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlmdGhlbmVsc2VcIikpXG5sZXQgcGV4cF9zZXF1ZW5jZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlcXVlbmNlXCIpKVxubGV0IHBleHBfd2hpbGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aGlsZVwiKSlcbmxldCBwZXhwX2ZvciAoVCBmMCkgKFQgZjEpIChUIGYyKSAoVCBmMykgKFQgZjQpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGxldCBrID0gZjQgY3R4IGxvYyB4NCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmb3JcIikpXG5sZXQgcGV4cF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBleHBfY29lcmNlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29lcmNlXCIpKVxubGV0IHBleHBfc2VuZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlbmRcIikpXG5sZXQgcGV4cF9uZXcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbmV3IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3XCIpKVxubGV0IHBleHBfc2V0aW5zdHZhciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGluc3R2YXJcIikpXG5sZXQgcGV4cF9vdmVycmlkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3ZlcnJpZGVcIikpXG5sZXQgcGV4cF9sZXRtb2R1bGUgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0bW9kdWxlXCIpKVxubGV0IHBleHBfbGV0ZXhjZXB0aW9uIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldGV4Y2VwdGlvblwiKSlcbmxldCBwZXhwX2Fzc2VydCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFzc2VydFwiKSlcbmxldCBwZXhwX2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbmxldCBwZXhwX3BvbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG5sZXQgcGV4cF9vYmplY3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb2JqZWN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG5sZXQgcGV4cF9uZXd0eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3dHlwZVwiKSlcbmxldCBwZXhwX3BhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfcGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja1wiKSlcbmxldCBwZXhwX29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcGV4cF9sZXRvcCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0b3BcIikpXG5sZXQgcGV4cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5yZWFjaGFibGVcIikpXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lOihUIG5hbWUpICB+a2luZDooVCBraW5kKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wZXh0X25hbWUpLmxvYyAoeC5wZXh0X25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucGV4dF9raW5kIGsgaW4gaykpXG5sZXQgcGV4dF9kZWNsIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVjbFwiKVxubGV0IHBleHRfcmViaW5kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZXh0X3JlYmluZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlYmluZFwiKVxubGV0IHVuaXQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVW5pdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVW5pdFwiKVxubGV0IG5hbWVkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5hbWVkXCIpXG5sZXQgaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5waW5jbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5waW5jbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGluY2x1ZGVfaW5mb3Mgfm1vZF86KFQgbW9kXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG1vZF8gY3R4IGxvYyB4LnBpbmNsX21vZCBrIGluIGspKVxubGV0IGluamVjdGl2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBJbmplY3RpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkluamVjdGl2ZVwiKVxubGV0IG5vaW5qZWN0aXZpdHkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9JbmplY3Rpdml0eVwiKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBsZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH5tdXRhYmxlXzooVCBtdXRhYmxlXykgIH50eXBlXzooVFxuICB0eXBlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbGRfbmFtZSkubG9jICh4LnBsZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG11dGFibGVfIGN0eCBsb2MgeC5wbGRfbXV0YWJsZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBsZF90eXBlIGsgaW4gaykpXG5sZXQgbGV0b3AgfmxldF86KFQgbGV0XykgIH5hbmRzOihUIGFuZHMpICB+Ym9keTooVCBib2R5KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbGV0XyBjdHggbG9jIHgubGV0XyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBhbmRzIGN0eCBsb2MgeC5hbmRzIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGJvZHkgY3R4IGxvYyB4LmJvZHkgayBpbiBrKVxubGV0IGxvY2F0aW9uIH5zdGFydDooVCBzdGFydCkgIH5lbmRfOihUIGVuZF8pICB+Z2hvc3Q6KFQgZ2hvc3QpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzdGFydCBjdHggbG9jIHgubG9jX3N0YXJ0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGVuZF8gY3R4IGxvYyB4LmxvY19lbmQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZ2hvc3QgY3R4IGxvYyB4LmxvY19naG9zdCBrIGluIGspXG5sZXQgbGlkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxpZGVudFwiKVxubGV0IGxkb3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMZG90ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMZG90XCIpXG5sZXQgbGFwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMYXBwbHlcIilcbmxldCBtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1iX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9iaW5kaW5nIH5uYW1lOihUIG5hbWUpICB+ZXhwcjooVCBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtYl9uYW1lKS5sb2MgKHgucG1iX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucG1iX2V4cHIgayBpbiBrKSlcbmxldCBtb2R1bGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH50eXBlXzooVCB0eXBlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWRfbmFtZSkubG9jICh4LnBtZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbWRfdHlwZSBrIGluIGspKVxubGV0IHBtb2RfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtb2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwbW9kX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbmxldCBwbW9kX2Z1bmN0b3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG5sZXQgcG1vZF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBtb2RfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwbW9kX3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbmxldCBwbW9kX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtc19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXNfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZTooVCBuYW1lKSAgfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXNfbmFtZSkubG9jICh4LnBtc19uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4ICh4LnBtc19tYW5pZmVzdCkubG9jICh4LnBtc19tYW5pZmVzdCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgaykpXG5sZXQgcG10eV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10eV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBtdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxubGV0IHBtdHlfZnVuY3RvciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbmxldCBwbXR5X3dpdGggKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndpdGhcIikpXG5sZXQgcG10eV90eXBlb2YgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlb2ZcIikpXG5sZXQgcG10eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcG10eV9hbGlhcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9hbGlhcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10ZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH50eXBlXzooVCB0eXBlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG10ZF9uYW1lKS5sb2MgKHgucG10ZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbXRkX3R5cGUgayBpbiBrKSlcbmxldCBpbW11dGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgSW1tdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbW11dGFibGVcIilcbmxldCBtdXRhYmxlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBNdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJNdXRhYmxlXCIpXG5sZXQgcG9mX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG9mX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3RhZyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IE90YWcgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdGFnXCIpKVxubGV0IG9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBPaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT2luaGVyaXRcIikpXG5sZXQgb3Blbl9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb3Blbl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG9wZW5faW5mb3MgfmV4cHI6KFQgZXhwcikgIH5vdmVycmlkZTooVCBvdmVycmlkZSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBvcGVuX2V4cHIgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG92ZXJyaWRlIGN0eCBsb2MgeC5wb3Blbl9vdmVycmlkZSBrIGluIGspKVxubGV0IG92ZXJyaWRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE92ZXJyaWRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdmVycmlkZVwiKVxubGV0IGZyZXNoID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEZyZXNoIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJGcmVzaFwiKVxubGV0IHBwYXRfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBwYXRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxubGV0IHBwYXRfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhclwiKSlcbmxldCBwcGF0X2FsaWFzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxubGV0IHBwYXRfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxubGV0IHBwYXRfaW50ZXJ2YWwgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlcnZhbFwiKSlcbmxldCBwcGF0X3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbmxldCBwcGF0X2NvbnN0cnVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxubGV0IHBwYXRfdmFyaWFudCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbmxldCBwcGF0X3JlY29yZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG5sZXQgcHBhdF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG5sZXQgcHBhdF9vciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9yXCIpKVxubGV0IHBwYXRfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwcGF0X3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIikpXG5sZXQgcHBhdF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG5sZXQgcHBhdF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxubGV0IHBwYXRfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpKVxubGV0IHBwYXRfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBwYXRfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcHN0ciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFN0ciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFN0clwiKVxubGV0IHBzaWcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBTaWcgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTaWdcIilcbmxldCBwdHlwIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQVHlwIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQVHlwXCIpXG5sZXQgcHBhdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBQYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBQYXRcIilcbmxldCBwb3NpdGlvbiB+Zm5hbWU6KFQgZm5hbWUpICB+bG51bTooVCBsbnVtKSAgfmJvbDooVCBib2wpICB+Y251bTooVCBjbnVtKSBcbiAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gZm5hbWUgY3R4IGxvYyB4LnBvc19mbmFtZSBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBsbnVtIGN0eCBsb2MgeC5wb3NfbG51bSBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBib2wgY3R4IGxvYyB4LnBvc19ib2wgayBpblxuICAgICAgICAgICAgIGxldCBrID0gY251bSBjdHggbG9jIHgucG9zX2NudW0gayBpbiBrKVxubGV0IHByaXZhdGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFByaXZhdGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlByaXZhdGVcIilcbmxldCBwdWJsaWMgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHVibGljIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQdWJsaWNcIilcbmxldCBub25yZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25yZWN1cnNpdmVcIilcbmxldCByZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSZWN1cnNpdmVcIilcbmxldCBwcmZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcmZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnByZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBydGFnIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUnRhZ1wiKSlcbmxldCByaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJpbmhlcml0XCIpKVxubGV0IHBzaWdfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHNpZ192YWx1ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdmFsdWUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG5sZXQgcHNpZ190eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxubGV0IHBzaWdfdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxubGV0IHBzaWdfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ190eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxubGV0IHBzaWdfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxubGV0IHBzaWdfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxubGV0IHBzaWdfbW9kc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxubGV0IHBzaWdfcmVjbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY21vZHVsZVwiKVxubGV0IHBzaWdfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxubGV0IHBzaWdfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxubGV0IHBzaWdfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxubGV0IHBzaWdfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxubGV0IHBzaWdfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxubGV0IHBzaWdfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxubGV0IHBzaWdfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxubGV0IHBzaWdfZXh0ZW5zaW9uIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbmxldCBwc3RyX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzdHJfZXZhbCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV2YWxcIilcbmxldCBwc3RyX3ZhbHVlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG5sZXQgcHN0cl9wcmltaXRpdmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicHJpbWl0aXZlXCIpXG5sZXQgcHN0cl90eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxubGV0IHBzdHJfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxubGV0IHBzdHJfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxubGV0IHBzdHJfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxubGV0IHBzdHJfcmVjbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY21vZHVsZVwiKVxubGV0IHBzdHJfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxubGV0IHBzdHJfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxubGV0IHBzdHJfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxubGV0IHBzdHJfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxubGV0IHBzdHJfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxubGV0IHBzdHJfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxubGV0IHBzdHJfZXh0ZW5zaW9uIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbmxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWU6KFQgbmFtZSkgIH5hcmc6KFQgYXJnKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHgucGRpcl9uYW1lKS5sb2MgKHgucGRpcl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gYXJnIGN0eCBsb2MgeC5wZGlyX2FyZyBrIGluIGspXG5sZXQgcHRvcF9kZWYgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0b3BfZGVmIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWZcIilcbmxldCBwdG9wX2RpciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHRvcF9kaXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRpclwiKVxubGV0IHR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cGVfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cGVfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+cGFyYW1zOihUIHBhcmFtcykgIH5jc3RyczooVCBjc3RycykgXG4gIH5raW5kOihUIGtpbmQpICB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pICB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wdHlwZV9uYW1lKS5sb2MgKHgucHR5cGVfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnB0eXBlX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gY3N0cnMgY3R4IGxvYyB4LnB0eXBlX2NzdHJzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wdHlwZV9raW5kIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5cGVfcHJpdmF0ZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gbWFuaWZlc3QgY3R4IGxvYyB4LnB0eXBlX21hbmlmZXN0IGsgaW4gaykpXG5sZXQgdHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXhuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4Y2VwdGlvbiB+Y29uc3RydWN0b3I6KFQgY29uc3RydWN0b3IpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gY29uc3RydWN0b3IgY3R4IGxvYyB4LnB0eWV4bl9jb25zdHJ1Y3RvciBrIGluIGspKVxubGV0IHR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leHRlbnNpb24gfnBhdGg6KFQgcGF0aCkgIH5wYXJhbXM6KFQgcGFyYW1zKSAgfmNvbnN0cnVjdG9yczooVFxuICBjb25zdHJ1Y3RvcnMpICB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gcGF0aCBjdHggKHgucHR5ZXh0X3BhdGgpLmxvYyAoeC5wdHlleHRfcGF0aCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnB0eWV4dF9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGNvbnN0cnVjdG9ycyBjdHggbG9jIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eWV4dF9wcml2YXRlIGsgaW4gaykpXG5sZXQgcHR5cGVfYWJzdHJhY3QgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFic3RyYWN0XCIpXG5sZXQgcHR5cGVfdmFyaWFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKVxubGV0IHB0eXBlX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbmxldCBwdHlwZV9vcGVuID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX29wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCB2YWx1ZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2Yl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfYmluZGluZyB+cGF0OihUIHBhdCkgIH5leHByOihUIGV4cHIpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gcGF0IGN0eCBsb2MgeC5wdmJfcGF0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wdmJfZXhwciBrIGluIGspKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2YWxfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZhbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWU6KFQgbmFtZSkgIH50eXBlXzooVCB0eXBlXykgIH5wcmltOihUIHByaW0pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnB2YWxfbmFtZSkubG9jICh4LnB2YWxfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucHZhbF90eXBlIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwcmltIGN0eCBsb2MgeC5wdmFsX3ByaW0gayBpbiBrKSlcbmxldCBjb3ZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ292YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb3ZhcmlhbnRcIilcbmxldCBjb250cmF2YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbnRyYXZhcmlhbnRcIilcbmxldCBub3ZhcmlhbmNlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vVmFyaWFuY2UgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vVmFyaWFuY2VcIilcbmxldCB2aXJ0dWFsXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBWaXJ0dWFsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJWaXJ0dWFsXCIpXG5sZXQgY29uY3JldGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ29uY3JldGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbmNyZXRlXCIpXG5sZXQgcHdpdGhfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwd2l0aF9tb2R1bGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwd2l0aF9tb2R0eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxubGV0IHB3aXRoX21vZHR5cGVzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG5sZXQgcHdpdGhfdHlwZXN1YnN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbmxldCBwd2l0aF9tb2RzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBc3RfcGF0dGVybjBcblxubGV0IHNhdmVfY29udGV4dCBjdHggPSBjdHgubWF0Y2hlZFxubGV0IHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwID0gY3R4Lm1hdGNoZWQgPC0gYmFja3VwXG5sZXQgaW5jcl9tYXRjaGVkIGMgPSBjLm1hdGNoZWQgPC0gYy5tYXRjaGVkICsgMVxuXG5sZXQgcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgdHJ5IE9rIChmIHsgbWF0Y2hlZCA9IDAgfSBsb2MgeCBrKVxuICB3aXRoIEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSAtPiAoXG4gICAgbWF0Y2ggb25fZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiJXMgZXhwZWN0ZWRcIiBleHBlY3RlZCwgW10pXG4gICAgfCBTb21lIGYgLT4gT2sgKGYgKCkpKVxuXG5sZXQgcGFyc2UgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICBtYXRjaCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgd2l0aFxuICB8IE9rIHIgLT4gclxuICB8IEVycm9yIChyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSByXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybjAudCAqICdiIC0+ICgnYSwgJ2MpIHRcblxuICBsZXQgY3JlYXRlIHQgZiA9IFQgKHQsIGYpXG4gIGxldCBwYXJzZV9yZXMgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlX3JlcyB0IGxvYyB4IGZcbiAgbGV0IHBhcnNlIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZSB0IGxvYyB4IGZcbmVuZFxuXG5sZXQgX18gPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHgpXG5cbmxldCBfXycgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeyBsb2M7IHR4dCA9IHggfSlcblxubGV0IGRyb3AgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBfIGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrKVxuXG5sZXQgYXNfXyAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHggKGsgeCkgaW5cbiAgICAgIGspXG5cbmxldCBjc3QgfnRvX3N0cmluZyA/KGVxdWFsID0gUG9seS5lcXVhbCkgdiA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpZiBlcXVhbCB4IHYgdGhlbiAoXG4gICAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICAgIGspXG4gICAgICBlbHNlIGZhaWwgbG9jICh0b19zdHJpbmcgdikpXG5cbmxldCBpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOkludC50b19zdHJpbmcgdlxubGV0IGNoYXIgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVDXCIpIHZcbmxldCBzdHJpbmcgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVTXCIpIHZcbmxldCBmbG9hdCB2ID0gY3N0IH50b19zdHJpbmc6RmxvYXQudG9fc3RyaW5nIHZcbmxldCBpbnQzMiB2ID0gY3N0IH50b19zdHJpbmc6SW50MzIudG9fc3RyaW5nIHZcbmxldCBpbnQ2NCB2ID0gY3N0IH50b19zdHJpbmc6SW50NjQudG9fc3RyaW5nIHZcbmxldCBuYXRpdmVpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOk5hdGl2ZWludC50b19zdHJpbmcgdlxubGV0IGJvb2wgdiA9IGNzdCB+dG9fc3RyaW5nOkJvb2wudG9fc3RyaW5nIHZcblxubGV0IGJvb2wnIChUIGZ1bmMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBcInRydWVcIiAtPiBmdW5jIGN0eCBsb2MgdHJ1ZSBrXG4gICAgICB8IFwiZmFsc2VcIiAtPiBmdW5jIGN0eCBsb2MgZmFsc2Uga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQm9vbFwiKVxuXG5sZXQgZmFsc2VfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmYWxzZVwiKVxuXG5sZXQgdHJ1ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ1ZVwiKVxuXG5sZXQgbmlsID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJbXVwiKVxuXG5sZXQgKCBeOjogKSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB4MCA6OiB4MSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiOjpcIilcblxubGV0IG5vbmUgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9uZVwiKVxuXG5sZXQgc29tZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFNvbWUgeDAgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJTb21lXCIpXG5cbmxldCBwYWlyIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgaylcblxubGV0ICggKiogKSA9IHBhaXJcblxubGV0IHRyaXBsZSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MiwgeDMpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgIGspXG5cbmxldCBhbHQgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgYmFja3VwID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgdHJ5IGYxIGN0eCBsb2MgeCBrXG4gICAgICB3aXRoIGUxIC0+IChcbiAgICAgICAgbGV0IG0xID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cDtcbiAgICAgICAgdHJ5IGYyIGN0eCBsb2MgeCBrXG4gICAgICAgIHdpdGggZTIgLT5cbiAgICAgICAgICBsZXQgbTIgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgICAgaWYgbTEgPj0gbTIgdGhlbiAoXG4gICAgICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IG0xO1xuICAgICAgICAgICAgcmFpc2UgZTEpXG4gICAgICAgICAgZWxzZSByYWlzZSBlMikpXG5cbmxldCAoIHx8fCApID0gYWx0XG5sZXQgbWFwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGspKVxubGV0IG1hcCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgbG9jIGspKVxubGV0IG1hcF9yZXN1bHQgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiAoZnVuYyBjdHggbG9jIHggaykpXG5sZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxubGV0IG1hcDAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgZikpXG5sZXQgbWFwMSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBhKSkpXG5cbmxldCBtYXAyIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgYSBiKSkpXG5cbmxldCBtYXAwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayAoZiBsb2MpKSlcblxubGV0IG1hcDEnIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGxvYyBhKSkpXG5cbmxldCBtYXAyJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGxvYyBhIGIpKSlcblxubGV0IG1hcF92YWx1ZSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgeCkgaylcbmxldCBtYXBfdmFsdWUnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiBsb2MgeCkgaylcblxubGV0IGFsdF9vcHRpb24gc29tZSBub25lID1cbiAgYWx0IChtYXAxIHNvbWUgfmY6KGZ1biB4IC0+IFNvbWUgeCkpIChtYXAwIG5vbmUgfmY6Tm9uZSlcblxubGV0IG1hbnkgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIGwgayAtPlxuICAgICAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gayAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgY3R4IGxvYyB4IChmdW4geCAtPiBhdXggKHggOjogYWNjdSkgeHMpXG4gICAgICBpblxuICAgICAgYXV4IFtdIGwpXG5cbmxldCBsb2MgKFQgZikgPSBUIChmdW4gY3R4IF9sb2MgKHggOiBfIExvYy50KSBrIC0+IGYgY3R4IHgubG9jIHgudHh0IGspXG5sZXQgcGFjazAgdCA9IG1hcCB0IH5mOihmdW4gZiAtPiBmICgpKVxubGV0IHBhY2syIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IC0+IGYgKHgsIHkpKVxubGV0IHBhY2szIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IHogLT4gZiAoeCwgeSwgeikpXG5cbmluY2x1ZGUgQXN0X3BhdHRlcm5fZ2VuZXJhdGVkXG5cbmxldCBlY2hhciB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBlc3RyaW5nIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IGVmbG9hdCB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBwY2hhciB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBwc3RyaW5nIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IHBmbG9hdCB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBpbnQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoaW50X29mX3N0cmluZyB4KSBrKVxubGV0IGludDMyJyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDMyLm9mX3N0cmluZyB4KSBrKVxubGV0IGludDY0JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDY0Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgbmF0aXZlaW50JyAoVCBmKSA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKE5hdGl2ZWludC5vZl9zdHJpbmcgeCkgaylcblxubGV0IGNvbnN0X2ludCB0ID0gcGNvbnN0X2ludGVnZXIgKGludCcgdCkgbm9uZVxubGV0IGNvbnN0X2ludDMyIHQgPSBwY29uc3RfaW50ZWdlciAoaW50MzInIHQpIChzb21lIChjaGFyICdsJykpXG5sZXQgY29uc3RfaW50NjQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQ2NCcgdCkgKHNvbWUgKGNoYXIgJ0wnKSlcbmxldCBjb25zdF9uYXRpdmVpbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChuYXRpdmVpbnQnIHQpIChzb21lIChjaGFyICduJykpXG5sZXQgZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgZWludDMyIHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IGVpbnQ2NCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBlbmF0aXZlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBwaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBwaW50MzIgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgcGludDY0IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IHBuYXRpdmVpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHNpbmdsZV9leHByX3BheWxvYWQgdCA9IHBzdHIgKHBzdHJfZXZhbCB0IG5pbCBeOjogbmlsKVxubGV0IG5vX2xhYmVsIHQgPSBjc3QgQXN0dHlwZXMuTm9sYWJlbCB+dG9fc3RyaW5nOihmdW4gXyAtPiBcIk5vbGFiZWxcIikgKiogdFxubGV0IGVib29sIHQgPSBwZXhwX2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxubGV0IHBib29sIHQgPSBwcGF0X2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxuXG5sZXQgZXh0ZW5zaW9uIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICgobmFtZSA6IF8gTG9jLnQpLCBwYXlsb2FkKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBuYW1lLmxvYyBuYW1lLnR4dCBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgcGF5bG9hZCBrIGluXG4gICAgICBrKVxuXG5sZXQgcmVjIHBhcnNlX2VsaXN0IChlIDogUGFyc2V0cmVlLmV4cHJlc3Npb24pIGFjYyA9XG4gIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBlLnBleHBfYXR0cmlidXRlcztcbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgTm9uZSkgLT4gTGlzdC5yZXYgYWNjXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIGFyZykgLT4gKFxuICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGFyZy5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICBtYXRjaCBhcmcucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF90dXBsZSBbIGhkOyB0bCBdIC0+IHBhcnNlX2VsaXN0IHRsIChoZCA6OiBhY2MpXG4gICAgICB8IF8gLT4gZmFpbCBhcmcucGV4cF9sb2MgXCJsaXN0XCIpXG4gIHwgXyAtPiBmYWlsIGUucGV4cF9sb2MgXCJsaXN0XCJcblxubGV0IGVsaXN0IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgbCA9IHBhcnNlX2VsaXN0IGUgW10gaW5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIChMaXN0Lm1hcCBsIH5mOihmdW4geCAtPiBmIGN0eCB4LlBhcnNldHJlZS5wZXhwX2xvYyB4IChmdW4geCAtPiB4KSkpKVxuXG5sZXQgZXNlcXVlbmNlIChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgcmVjIHBhcnNlX3NlcSBleHByIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChleHByLCBuZXh0KSAtPiBwYXJzZV9zZXEgbmV4dCAoZXhwciA6OiBhY2MpXG4gICAgICAgIHwgXyAtPiBleHByIDo6IGFjY1xuICAgICAgaW5cbiAgICAgIGtcbiAgICAgICAgKExpc3QucmV2X21hcCAocGFyc2Vfc2VxIGUgW10pIH5mOihmdW4gZXhwciAtPlxuICAgICAgICAgICAgIGYgY3R4IGV4cHIucGV4cF9sb2MgZXhwciAoZnVuIHggLT4geCkpKSlcblxubGV0IG9mX2Z1bmMgZiA9IFQgZlxubGV0IHRvX2Z1bmMgKFQgZikgPSBmXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHBvbHlfZXF1YWwgYSBiID1cbiAgbGV0IG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6IF8gLT4gdFxuICBlbmQgaW5cbiAgU3RkcHB4LlBvbHkuZXF1YWwgKFBvbHkuVCBhKSAoUG9seS5UIGIpXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIHRcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiB0XG4gICAgfCBUeXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIHRcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDbGFzc19pbmZvcyA6IF8gY2xhc3NfaW5mb3MgdFxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIHRcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIHRcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIHRcbiAgICB8IEluY2x1ZGVfaW5mb3MgOiBfIGluY2x1ZGVfaW5mb3MgdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBWYWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyB0XG4gICAgfCBNb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIHRcbiAgICB8IFBzdHJfZXZhbCA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHNpZ19leHRlbnNpb24gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBSdGFnIDogcm93X2ZpZWxkIHRcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIDogb2JqZWN0X2ZpZWxkIHRcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gPSBMYWJlbF9kZWNsYXJhdGlvblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9kZWNsYXJhdGlvbiA9IFR5cGVfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID0gVHlwZV9leHRlbnNpb25cbiAgbGV0IHR5cGVfZXhjZXB0aW9uID0gVHlwZV9leGNlcHRpb25cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uID0gVmFsdWVfZGVzY3JpcHRpb25cbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY2xhc3NfaW5mb3MgPSBDbGFzc19pbmZvc1xuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV9kZWNsYXJhdGlvblxuICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICBsZXQgb3Blbl9kZXNjcmlwdGlvbiA9IE9wZW5fZGVzY3JpcHRpb25cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBJbmNsdWRlX2luZm9zXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCB2YWx1ZV9iaW5kaW5nID0gVmFsdWVfYmluZGluZ1xuICBsZXQgbW9kdWxlX2JpbmRpbmcgPSBNb2R1bGVfYmluZGluZ1xuICBsZXQgcHN0cl9ldmFsID0gUHN0cl9ldmFsXG4gIGxldCBwc3RyX2V4dGVuc2lvbiA9IFBzdHJfZXh0ZW5zaW9uXG4gIGxldCBwc2lnX2V4dGVuc2lvbiA9IFBzaWdfZXh0ZW5zaW9uXG4gIGxldCBydGFnID0gUnRhZ1xuICBsZXQgb2JqZWN0X3R5cGVfZmllbGQgPSBPYmplY3RfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfcHN0cl9ldmFsIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9ldmFsIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9ldmFsXCJcblxuICBsZXQgZ2V0X3BzdHJfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9wc2lnX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHNpZ19kZXNjIHdpdGhcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHNpZ19leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB4LnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB4LnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHgucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geC5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geC5wdHlleG5fYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHgucGV4dF9hdHRyaWJ1dGVzXG4gICAgfCBQYXR0ZXJuIC0+IHgucHBhdF9hdHRyaWJ1dGVzXG4gICAgfCBDb3JlX3R5cGUgLT4geC5wdHlwX2F0dHJpYnV0ZXNcbiAgICB8IEV4cHJlc3Npb24gLT4geC5wZXhwX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHgucHZhbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlIC0+IHgucGN0eV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHgucGN0Zl9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19pbmZvcyAtPiB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19leHByIC0+IHgucGNsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2ZpZWxkIC0+IHgucGNmX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlIC0+IHgucG10eV9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geC5wbWRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geC5wbXRkX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geC5wbXNfYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHgucGluY2xfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2V4cHIgLT4geC5wbW9kX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geC5wdmJfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geC5wbWJfYXR0cmlidXRlc1xuICAgIHwgUHN0cl9ldmFsIC0+IHNuZCAoZ2V0X3BzdHJfZXZhbCB4KVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gc25kIChnZXRfcHN0cl9leHRlbnNpb24geClcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHgpXG4gICAgfCBSdGFnIC0+IHgucHJmX2F0dHJpYnV0ZXNcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHgucG9mX2F0dHJpYnV0ZXNcblxuICBsZXQgc2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19pbmZvcyAtPiB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2V4cHIgLT4geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQc3RyX2V2YWwgLT5cbiAgICAgICAgeyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChnZXRfcHN0cl9ldmFsIHggfD4gZnN0LCBhdHRycykgfVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChnZXRfcHN0cl9leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChnZXRfcHNpZ19leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUnRhZyAtPiB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IFwibGFiZWwgZGVjbGFyYXRpb25cIlxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gXCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBcInR5cGUgZXh0ZW5zaW9uXCJcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IFwidHlwZSBleGNlcHRpb25cIlxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiBcInZhbHVlXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENsYXNzX2luZm9zIC0+IFwiY2xhc3MgZGVjbGFyYXRpb25cIlxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4gXCJtb2R1bGUgc3Vic3RpdHV0aW9uXCJcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4gXCJvcGVuXCJcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4gXCJvcGVuXCJcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4gXCJpbmNsdWRlXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfYmluZGluZyAtPiBcInZhbHVlIGJpbmRpbmdcIlxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4gXCJtb2R1bGUgYmluZGluZ1wiXG4gICAgfCBQc3RyX2V2YWwgLT4gXCJ0b3BsZXZlbCBleHByZXNzaW9uXCJcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgZXh0ZW5zaW9uXCJcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgc2lnbmF0dXJlIGV4dGVuc2lvblwiXG4gICAgfCBSdGFnIC0+IFwicG9seW1vcnBoaWMgdmFyaWFudCB0YWdcIlxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4gXCJvYmplY3QgdHlwZSBmaWVsZFwiXG5cbiAgKCpcbiAgbGV0IHBhdHRlcm4gOiB0eXBlIGEgYiBjIGQuIGEgdFxuICAgIC0+IChhdHRyaWJ1dGVzLCBiLCBjKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGMsIGQpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYiwgZCkgQXN0X3BhdHRlcm4udCA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAgICAgICAtPiBBc3RfcGF0dGVybi5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gQXN0X3BhdHRlcm4ucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uICAgICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgICAtPiBBc3RfcGF0dGVybi5wZXh0X2F0dHJpYnV0ZXNcbiopXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbm1vZHVsZSBGbG9hdGluZ19jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG5cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIHQgeCA9XG4gICAgbWF0Y2ggZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIHQgeCB3aXRoXG4gICAgfCBTb21lIGEgLT4gYVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVcIlxuXG4gIGxldCByZXBsYWNlX2J5X2R1bW15IDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhID1cbiAgICBsZXQgZHVtbXlfZXh0ID0gKHsgdHh0ID0gXCJcIjsgbG9jID0gTG9jYXRpb24ubm9uZSB9LCBQU3RyIFtdKSBpblxuICAgIGZ1biB0IHggLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiB7IHggd2l0aCBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZHVtbXlfZXh0IH1cbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxudHlwZSBwYWNrZWRfY29udGV4dCA9XG4gIHwgT25faXRlbSA6IF8gQ29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG4gIHwgRmxvYXRpbmcgOiBfIEZsb2F0aW5nX2NvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuXG50eXBlIF8gcGF5bG9hZF9wYXJzZXIgPVxuICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgIChwYXlsb2FkLCAnYSwgJ2IpIEFzdF9wYXR0ZXJuLnRcbiAgICAgICogKGF0dHJfbG9jOkxvY2F0aW9uLnQgLT4gbmFtZV9sb2M6TG9jYXRpb24udCAtPiAnYSlcbiAgICAgIC0+ICdiIHBheWxvYWRfcGFyc2VyXG5cbnR5cGUgKCdhLCAnYikgdCA9IHtcbiAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG59XG5cbnR5cGUgcGFja2VkID0gVCA6IChfLCBfKSB0IC0+IHBhY2tlZFxuXG5sZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5sZXQgY29udGV4dCB0ID0gdC5jb250ZXh0XG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJhdHRyaWJ1dGVcIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW5jdGlvblxuICAgIHwgT25faXRlbSB0IC0+IFNvbWUgKENvbnRleHQuZGVzYyB0KVxuICAgIHwgRmxvYXRpbmcgdCAtPiBTb21lIChGbG9hdGluZ19jb250ZXh0LmRlc2MgdCBeIFwiIChmbG9hdGluZylcIikpXG5cbmxldCBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gIHtcbiAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICBjb250ZXh0O1xuICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gIH1cblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspXG5cbmxldCBkZWNsYXJlX3dpdGhfbmFtZV9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYyAtPlxuICAgICAgayB+bmFtZV9sb2MpXG5cbmxldCBkZWNsYXJlX3dpdGhfYXR0cl9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYyB+bmFtZV9sb2M6XyAtPlxuICAgICAgayB+YXR0cl9sb2MpXG5cbnR5cGUgJ2EgZmxhZyA9ICgnYSwgdW5pdCkgdFxuXG5sZXQgZGVjbGFyZV9mbGFnIG5hbWUgY29udGV4dCA9XG4gIGxldCBwYXlsb2FkX3BhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpIGluXG4gIGxldCBjb250aW51YXRpb24gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gPSAoKSBpblxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBheWxvYWRfcGF0dGVybiBjb250aW51YXRpb25cblxubW9kdWxlIEF0dHJpYnV0ZV90YWJsZSA9IFN0ZGxpYi5IYXNodGJsLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbG9jXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID0geyB0IHdpdGggbG9jID0geyB0LmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB9XG4gIGxldCBoYXNoIHQgPSBIYXNodGJsLmhhc2ggKG5vcm1hbGl6ZSB0KVxuICBsZXQgZXF1YWwgeCB5ID0gUG9seS5lcXVhbCAobm9ybWFsaXplIHgpIChub3JtYWxpemUgeSlcbmVuZClcblxubGV0IG5vdF9zZWVuID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAxMjhcbmxldCBtYXJrX2FzX3NlZW4geyBhdHRyX25hbWU7IF8gfSA9IEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgbm90X3NlZW4gYXR0cl9uYW1lXG5sZXQgbWFya19hc19oYW5kbGVkX21hbnVhbGx5ID0gbWFya19hc19zZWVuXG5cbmxldCBleHBsaWNpdGx5X2Ryb3AgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlID0gbWFya19hc19zZWVuXG4gIGVuZFxuXG5sZXQgZ2V0X2ludGVybmFsID1cbiAgbGV0IHJlYyBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIGxvbmdlc3RfbWF0Y2ggPVxuICAgIG1hdGNoIGF0dHJpYnV0ZXMgd2l0aFxuICAgIHwgW10gLT4gT2sgbG9uZ2VzdF9tYXRjaFxuICAgIHwgKHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IGFzIGF0dHIpIDo6IHJlc3QgLT5cbiAgICAgICAgaWYgTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0IHRoZW5cbiAgICAgICAgICBtYXRjaCBsb25nZXN0X21hdGNoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgIHwgU29tZSB7IGF0dHJfbmFtZSA9IG5hbWUnOyBfIH0gLT5cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbmFtZS50eHQgaW5cbiAgICAgICAgICAgICAgbGV0IGxlbicgPSBTdHJpbmcubGVuZ3RoIG5hbWUnLnR4dCBpblxuICAgICAgICAgICAgICBpZiBsZW4gPiBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA8IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIkR1cGxpY2F0ZWQgYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZSBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgaW5cbiAgZnVuIHQgYXR0cmlidXRlcyAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIE5vbmVcblxubGV0IGNvbnZlcnQgPyhkb19tYXJrX2FzX3NlZW4gPSB0cnVlKSBwYXR0ZXJuIGF0dHIgPVxuICBpZiBkb19tYXJrX2FzX3NlZW4gdGhlbiBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgbGV0IChQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgaykpID0gcGF0dGVybiBpblxuICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVyblxuICAgIChDb21tb24ubG9jX29mX3BheWxvYWQgYXR0cilcbiAgICBhdHRyLmF0dHJfcGF5bG9hZFxuICAgIChrIH5hdHRyX2xvYzphdHRyLmF0dHJfbG9jIH5uYW1lX2xvYzphdHRyLmF0dHJfbmFtZS5sb2MpXG5cbmxldCBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID9kb19tYXJrX2FzX3NlZW4gPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG5cbmxldCBnZXQgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIG1hdGNoIGdldF9yZXMgP21hcmtfYXNfc2VlbiB0IHggd2l0aFxuICB8IE9rIChTb21lICgpKSAtPiBPayB0cnVlXG4gIHwgT2sgTm9uZSAtPiBPayBmYWxzZVxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG5cbmxldCBoYXNfZmxhZyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgY29uc3VtZV9yZXMgdCB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGxldCBhdHRycyA9IExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChhdHRyID09IGF0dHInKSkgaW5cbiAgICAgIGxldCB4ID0gQ29udGV4dC5zZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBhdHRycyBpblxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgKHgsIHZhbHVlKVxuXG5sZXQgY29uc3VtZSB0IHggPVxuICBjb25zdW1lX3JlcyB0IHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHJlbW92ZV9zZWVuX3JlcyAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IHggaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBPayBhY2NcbiAgICB8IFQgdCA6OiByZXN0IC0+XG4gICAgICAgIGlmIENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQgdGhlblxuICAgICAgICAgIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgIHwgU29tZSBhdHRyIC0+XG4gICAgICAgICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgICAgICAgaWYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGxvb3AgKGF0dHIgOjogYWNjKSByZXN0XG4gICAgICAgIGVsc2UgbG9vcCBhY2MgcmVzdFxuICBpblxuICBsb29wIFtdIHBhY2tlZHMgPj58IGZ1biBtYXRjaGVkIC0+XG4gIGxldCBhdHRycyA9XG4gICAgTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKExpc3QubWVtcSB+c2V0Om1hdGNoZWQgYXR0cicpKVxuICBpblxuICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRyc1xuXG5sZXQgcmVtb3ZlX3NlZW4gKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgcmVtb3ZlX3NlZW5fcmVzIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKVxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcGF0dGVybl9yZXMgdCBwID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBmID0gQXN0X3BhdHRlcm4udG9fZnVuYyBwIGluXG4gIEFzdF9wYXR0ZXJuLm9mX2Z1bmMgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgY29uc3VtZV9yZXMgdCB4ID4+fCBmdW4gcmVzIC0+XG4gICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGYgY3R4IGxvYyB4IChrIE5vbmUpXG4gICAgICB8IFNvbWUgKHgsIHYpIC0+IGYgY3R4IGxvYyB4IChrIChTb21lIHYpKSlcblxubGV0IHBhdHRlcm4gdCBwID1cbiAgcGF0dGVybl9yZXMgdCBwIHw+IEFzdF9wYXR0ZXJuLnRvX2Z1bmNcbiAgfD4gKGZ1biBmIGEgYiBjIGQgLT5cbiAgICAgICBmIGEgYiBjIGRcbiAgICAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKSlcbiAgfD4gQXN0X3BhdHRlcm4ub2ZfZnVuY1xuXG5tb2R1bGUgRmxvYXRpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBGbG9hdGluZ19jb250ZXh0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbiAgfVxuXG4gIGxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKTtcbiAgICB9XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIHggPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIG1hdGNoIHRzIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IHsgY29udGV4dDsgXyB9IDo6IF8gLT4gKFxuICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCB0cyB+ZjooZnVuIHQgLT4gQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCkpO1xuICAgICAgICBsZXQgYXR0ciA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZSBjb250ZXh0IHggaW5cbiAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBPayBOb25lXG4gICAgICAgIHwgWyB0IF0gLT4gY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZmxvYXRpbmcgYXR0cmlidXRlczogJXNcIlxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICAgICAgW10gKSlcblxuICBsZXQgY29udmVydCB0cyB4ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB4XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBpZlxuICAgIChub3RcbiAgICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgQXR0cmlidXRlIG5hbWUudHh0XG4gICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KSlcbiAgICAmJiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWVcbiAgdGhlblxuICAgIGxldCBhbGxvd2xpc3QgPSBOYW1lLkFsbG93bGlzdGVkLmdldF9hdHRyaWJ1dGVfbGlzdCAoKSBpblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIGNvbnRleHQgfmFsbG93bGlzdFxuICAgICAgICBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBub3QgdXNlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gXyA9XG4gICAgICBbXG4gICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgXVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS5cbiAgICAgICAgYSBDb250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgYXR0cnNcbiAgICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGVkX2Vycm9ycylcbiAgICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW10sIGVycm9ycylcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX2Zsb2F0aW5nIDogdHlwZSBhLlxuICAgICAgICBhIEZsb2F0aW5nLkNvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIGNvbnRleHQgbm9kZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgU29tZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAoRmxvYXRpbmcuQ29udGV4dC5yZXBsYWNlX2J5X2R1bW15IGNvbnRleHQgbm9kZSwgY29sbGVjdGVkX2Vycm9ycylcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIExhYmVsX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXh0ZW5zaW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leGNlcHRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leGNlcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggaW5cbiAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgUGF0dGVybiB4IGluXG4gICAgICBzdXBlciNwYXR0ZXJuIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvcmVfdHlwZSB4IGluXG4gICAgICBzdXBlciNjb3JlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4cHJlc3Npb24geCBpblxuICAgICAgc3VwZXIjZXhwcmVzc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2V4cHIgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4IGluXG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZXhwciB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc19maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc19maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoIFJ0YWcgXyAtPiBzZWxmI2NoZWNrX25vZGUgUnRhZyB4IHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjcm93X2ZpZWxkIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSAtPlxuICAgICAgICAgICAgbGV0IGZpZWxkcywgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihzZWxmI2NoZWNrX25vZGUgT2JqZWN0X3R5cGVfZmllbGQpXG4gICAgICAgICAgICAgIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpLCBMaXN0LmNvbmNhdCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTdHJ1Y3R1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHN0cl9kZXNjIHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9ldmFsIGl0ZW1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU2lnbmF0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHNpZ19leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG4gIGVuZFxuXG5sZXQgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBtYXRjaCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJhaXNlX2lmX25vbl9lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gYSAtPiBhID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IG5vZGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXIgYXR0cnNcbiAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cik7XG4gICAgICAgICAgICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNsYWJlbF9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leHRlbnNpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4Y2VwdGlvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHRlbnNpb25fY29uc3RydWN0b3IgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNwYXR0ZXJuIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXhwcmVzc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGVfZmllbGQgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3Jvd19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXRfY2hlY2tzICgpID0gQXR0cmlidXRlX3RhYmxlLmNsZWFyIG5vdF9zZWVuXG5cbmxldCBjb2xsZWN0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKVxuICAgICAgICA9XG4gICAgICBsZXQgbG9jID0gQ29tbW9uLmxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLmFkZCBub3Rfc2VlbiBuYW1lIGxvY1xuICBlbmRcblxubGV0IGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSA9XG4gIGxldCBmYWlsIG5hbWUgbG9jIGFjYyA9XG4gICAgbGV0IHR4dCA9IG5hbWUudHh0IGluXG4gICAgaWYgbm90IChOYW1lLmlnbm9yZV9jaGVja3MgdHh0KSB0aGVuXG4gICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgc2lsZW50bHkgZHJvcHBlZFwiIHR4dFxuICAgICAgOjogYWNjXG4gICAgZWxzZSBhY2NcbiAgaW5cbiAgQXR0cmlidXRlX3RhYmxlLmZvbGQgZmFpbCBub3Rfc2VlbiBbXVxuXG5sZXQgY2hlY2tfYWxsX3NlZW4gKCkgPVxuICBtYXRjaCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9ID1cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgdGFibGUgbmFtZVxuICBlbmRcblxubGV0IGNvcHlfb2Zfbm90X3NlZW4gKCkgPVxuICBsZXQgY29weSA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgKEF0dHJpYnV0ZV90YWJsZS5sZW5ndGggbm90X3NlZW4pIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5pdGVyIChBdHRyaWJ1dGVfdGFibGUuYWRkIGNvcHkpIG5vdF9zZWVuO1xuICBjb3B5XG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgc3QgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzdHJ1Y3R1cmUgc3Q7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgc2cgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzaWduYXR1cmUgc2c7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBmaWxlX3BhdGggOiBzdHJpbmc7XG4gIG1haW5fbW9kdWxlX25hbWUgOiBzdHJpbmc7XG4gIHN1Ym1vZHVsZV9wYXRoIDogc3RyaW5nIGxvYyBsaXN0O1xuICBlbmNsb3NpbmdfbW9kdWxlIDogc3RyaW5nO1xuICBlbmNsb3NpbmdfdmFsdWUgOiBzdHJpbmcgb3B0aW9uO1xuICB2YWx1ZSA6IHN0cmluZyBsb2Mgb3B0aW9uO1xuICBpbl9leHByIDogYm9vbDtcbn1cblxubGV0IHRvcF9sZXZlbCB+ZmlsZV9wYXRoID1cbiAgbGV0IG1haW5fbW9kdWxlX25hbWUgPVxuICAgIGZpbGVfcGF0aCB8PiBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgfD4gU3RkbGliLkZpbGVuYW1lLnJlbW92ZV9leHRlbnNpb25cbiAgICB8PiBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBpblxuICB7XG4gICAgZmlsZV9wYXRoO1xuICAgIG1haW5fbW9kdWxlX25hbWU7XG4gICAgc3VibW9kdWxlX3BhdGggPSBbXTtcbiAgICBlbmNsb3NpbmdfbW9kdWxlID0gbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBlbmNsb3NpbmdfdmFsdWUgPSBOb25lO1xuICAgIHZhbHVlID0gTm9uZTtcbiAgICBpbl9leHByID0gZmFsc2U7XG4gIH1cblxubGV0IGZpbGVfcGF0aCB0ID0gdC5maWxlX3BhdGhcbmxldCBtYWluX21vZHVsZV9uYW1lIHQgPSB0Lm1haW5fbW9kdWxlX25hbWVcbmxldCBlbmNsb3NpbmdfbW9kdWxlIHQgPSB0LmVuY2xvc2luZ19tb2R1bGVcbmxldCBlbmNsb3NpbmdfdmFsdWUgdCA9IHQuZW5jbG9zaW5nX3ZhbHVlXG5cbmxldCBzdWJtb2R1bGVfcGF0aCB0ID1cbiAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuXG5sZXQgdmFsdWUgdCA9IE9wdGlvbi5tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnZhbHVlXG5cbmxldCBmdWxseV9xdWFsaWZpZWRfcGF0aCB0ID1cbiAgbGV0IHZhbHVlID0gdmFsdWUgdCBpblxuICBsZXQgc3VibW9kdWxlX3BhdGggPVxuICAgIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gU29tZSBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuICBpblxuICBsZXQgbmFtZXMgPSAoU29tZSB0Lm1haW5fbW9kdWxlX25hbWUgOjogc3VibW9kdWxlX3BhdGgpIEAgWyB2YWx1ZSBdIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBAQCBMaXN0LmZpbHRlcl9vcHQgbmFtZXNcblxubGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGluX2V4cHIgPSB0cnVlIH1cblxubGV0IGVudGVyX21vZHVsZSB+bG9jIG1vZHVsZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICBzdWJtb2R1bGVfcGF0aCA9IHsgdHh0ID0gbW9kdWxlX25hbWU7IGxvYyB9IDo6IHQuc3VibW9kdWxlX3BhdGg7XG4gICAgICBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWU7XG4gICAgfVxuXG5sZXQgZW50ZXJfdmFsdWUgfmxvYyB2YWx1ZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICB2YWx1ZSA9IFNvbWUgeyB0eHQgPSB2YWx1ZV9uYW1lOyBsb2MgfTtcbiAgICAgIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZTtcbiAgICB9XG5cbmxldCB0b19zdHJpbmdfcGF0aCB0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiICh0LmZpbGVfcGF0aCA6OiBzdWJtb2R1bGVfcGF0aCB0KVxubGV0IHdpdGhfc3RyaW5nX3BhdGggZiB+bG9jIH5wYXRoID0gZiB+bG9jIH5wYXRoOih0b19zdHJpbmdfcGF0aCBwYXRoKTs7XG5cbmxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICBsZXQgYSA9IFwibG9sXCJcbmVuZCBpblxuTS5hXG4iLCJtb2R1bGUgQmFzZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHRvb2xfbmFtZSA6IHN0cmluZzsgY29kZV9wYXRoIDogQ29kZV9wYXRoLnQ7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gIGxldCB0b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgY29kZV9wYXRoID0gQ29kZV9wYXRoLnRvcF9sZXZlbCB+ZmlsZV9wYXRoIGluXG4gICAgeyB0b29sX25hbWU7IGNvZGVfcGF0aDsgaW5wdXRfbmFtZSB9XG5cbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LnRvb2xfbmFtZVxuICBsZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX2V4cHIgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl92YWx1ZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBleHRlbnNpb25fcG9pbnRfbG9jIDogTG9jYXRpb24udDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2MgfmJhc2UgKCkgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2M7IGJhc2UgfVxuICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyB0ID0gdC5leHRlbnNpb25fcG9pbnRfbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZGVyaXZlZF9pdGVtX2xvYyA6IExvY2F0aW9uLnQ7IGlubGluZSA6IGJvb2w7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5kZXJpdmVkX2l0ZW1fbG9jIH5pbmxpbmUgfmJhc2UgKCkgPVxuICAgIHsgZGVyaXZlZF9pdGVtX2xvYzsgYmFzZTsgaW5saW5lIH1cblxuICBsZXQgZGVyaXZlZF9pdGVtX2xvYyB0ID0gdC5kZXJpdmVkX2l0ZW1fbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcbiAgbGV0IGlubGluZSB0ID0gdC5pbmxpbmVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZGVyaXZlZF9pdGVtX2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uLldpdGhfZXJyb3JzXG5pbmNsdWRlIEFzdF90cmF2ZXJzZTBcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gUHB4bGliX3RyYXZlcnNlX2J1aWx0aW5zLmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIEFzdC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIG5hbWUgLT4gbmFtZVxubGV0IGVudGVyIG5hbWUgcGF0aCA9IGlmIFN0cmluZy5pc19lbXB0eSBwYXRoIHRoZW4gbmFtZSBlbHNlIHBhdGggXiBcIi5cIiBeIG5hbWVcbmxldCBlbnRlcl9vcHQgbmFtZV9vcHQgcGF0aCA9IGVudGVyIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgcGF0aFxuXG5jbGFzcyBtYXBfd2l0aF9wYXRoID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nXSBtYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICAoKiBXQVM6XG4gICAgICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeCA9XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBQc3RyX21vZHVsZSBtYiAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIChlbnRlciBtYi5wbWJfbmFtZS50eHQgcGF0aCkgeFxuICAgICAgIHwgXyAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeFxuXG4gICAgICAgT3ZlcnJpZGluZyBbbW9kdWxlX2JpbmRpbmddIHNlZW1zIHRvIGJlIE9LIGJlY2F1c2UgaXQgZG9lcyBub3QgY2F0Y2hcbiAgICAgICBsb2NhbCBtb2R1bGUgYmluZGluZ3MgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHRoZSBwYXJzZXRyZWUgZG9lc24ndCBtYWtlXG4gICAgICAgdXNlIG9mIFttb2R1bGVfYmluZGluZ10gZm9yIGxvY2FsIG1vZHVsZXMsIGJ1dCB0aGF0IG1pZ2h0IGNoYW5nZSBpbiB0aGVcbiAgICAgICBmdXR1cmUsIHNvIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZC5cblxuICAgICAgIFRoZSBmb2xsb3dpbmc6XG5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuXG4gICAgICAgaXMgZGlzYWxsb3dlZCwgYnV0XG5cbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cblxuICAgICAgIGlzbid0LCBhbmQgdGhlIFwicGF0aFwiIGNvbnN0cnVjdGVkIGhlcmUgd291bGQgYmUgYWJsZSB0byBkaWZmZXJlbnRpYXRlXG4gICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgcGF0aCBtYiA9XG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyAoZW50ZXJfb3B0IG1iLnBtYl9uYW1lLnR4dCBwYXRoKSBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gcGF0aCBtZCA9XG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gKGVudGVyX29wdCBtZC5wbWRfbmFtZS50eHQgcGF0aCkgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcGF0aCBtdGQgPVxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKGVudGVyIG10ZC5wbXRkX25hbWUudHh0IHBhdGgpIG10ZFxuICBlbmRcblxubGV0IHZhcl9uYW1lc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBmb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IHN1cGVyI3BhdHRlcm4gcCBhY2MgaW5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGggUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiB0eHQgOjogYWNjIHwgXyAtPiBhY2NcbiAgZW5kXG5cbmxldCBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2MgbmFtZV9vcHQgY3R4dCA9XG4gIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBjdHh0XG5cbmxldCBlbnRlcl92YWx1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX3ZhbHVlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2lkZW50IChsaWRlbnQgX18nKSkpXG4gICAgRm4uaWRcblxubGV0IGVudGVyX21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX21vZHVsZVwiIE1vZHVsZV9leHByXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfY29uc3RydWN0IChsaWRlbnQgX18nKSBub25lKSlcbiAgICBGbi5pZFxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9kZXNjcmlwdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmNsYXNzIG1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgPVxuICBsZXQgcmV0dXJuIF9jdHggeCA9ICh4LCBbXSkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXRcbiAgICAgIFtFeHBhbnNpb25fY29udGV4dC5CYXNlLnQsIExvY2F0aW9uLkVycm9yLnQgbGlzdF0gbGlmdF9tYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICBtZXRob2QgaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHN0cmluZyA9IHJldHVyblxuICAgIG1ldGhvZCBib29sID0gcmV0dXJuXG4gICAgbWV0aG9kIGNoYXIgPSByZXR1cm5cbiAgICBtZXRob2QgZmxvYXQgPSByZXR1cm5cbiAgICBtZXRob2QgaW50MzIgPSByZXR1cm5cbiAgICBtZXRob2QgaW50NjQgPSByZXR1cm5cbiAgICBtZXRob2QgbmF0aXZlaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHVuaXQgPSByZXR1cm5cblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QpIC0+XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgLT5cbiAgICAgICAgICAnYSBhcnJheSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gZiBjdHggYSAtPlxuICAgICAgICBsZXQgbGlzdCwgZXJyb3JzID0gc2VsZiNsaXN0IGYgY3R4IChBcnJheS50b19saXN0IGEpIGluXG4gICAgICAgIChBcnJheS5vZl9saXN0IGxpc3QsIGVycm9ycylcblxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBfIF8gLT4gW11cblxuICAgIG1ldGhvZCByZWNvcmQgX2N0eCBmaWVsZHMgPSBMaXN0LmNvbmNhdF9tYXAgZmllbGRzIH5mOnNuZFxuICAgIG1ldGhvZCBjb25zdHIgX2N0eCBfdGFnIGFyZ3MgPSBMaXN0LmNvbmNhdCBhcmdzXG4gICAgbWV0aG9kIHR1cGxlIF9jdHggbCA9IExpc3QuY29uY2F0IGxcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBjdHh0XG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhcyBleHByKSA9XG4gICAgICBsZXQgd2l0aF92YWx1ZSA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX3ZhbHVlIGV4cHIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZSA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIGxldCBjdHh0ID0gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9leHByIGN0eHQgaW5cbiAgICAgIGxldCBwZXhwX2Rlc2MsIGRlc2NfZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggcGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpIC0+XG4gICAgICAgICAgICBsZXQgbmFtZSwgbmFtZV9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eHQgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGVfZXhwciwgbW9kdWxlX2V4cHJfZXJyb3JzID1cbiAgICAgICAgICAgICAgbGV0IHdpdGhfbGV0X21vZHVsZSA9XG4gICAgICAgICAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgZXhwclxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1vZHVsZV9leHByLnBtb2RfbG9jIG5hbWUudHh0IGN0eHRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgd2l0aF9sZXRfbW9kdWxlID4+PSBmdW4gY3R4dCAtPiBzZWxmI21vZHVsZV9leHByIGN0eHQgbW9kdWxlX2V4cHJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYm9keSwgYm9keV9lcnJvcnMgPSBzZWxmI2V4cHJlc3Npb24gY3R4dCBib2R5IGluXG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4dCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIG5hbWVfZXJyb3JzOyBtb2R1bGVfZXhwcl9lcnJvcnM7IGJvZHlfZXJyb3JzIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSwgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4dCBwZXhwX2Rlc2NcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2MgaW5cbiAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgbG9jX3N0YWNrX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2Nfc3RhY2tcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBjdHh0IHBleHBfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgICggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0sXG4gICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgZGVzY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBsb2Nfc3RhY2tfZXJyb3JzKTtcbiAgICAgICAgICAgIChcImF0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciBjdHh0IG1lID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9leHByID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfbW9kdWxlIG1lIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9leHByID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZXhwciBjdHh0IG1lXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIGN0eHQgbWIgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgbWJcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWIucG1iX2xvYyBtYi5wbWJfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2JpbmRpbmcgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIGN0eHQgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiBtZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptZC5wbWRfbG9jIG1kLnBtZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIG10ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jOm10ZC5wbXRkX2xvY1xuICAgICAgICAgICAgICBtdGQucG10ZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmQgPVxuICAgICAgbGV0IHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gdmRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnZkLnB2YWxfbG9jIHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgICAgICAgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmRcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyBjdHh0XG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFzIHZiKSA9XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyB2YiB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgKCkgLT4gc3VwZXIjdmFsdWVfYmluZGluZyBjdHh0IHZiXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaW5fYmluZGluZ19jdHh0ID1cbiAgICAgICAgICAgIG1hdGNoIHZhcl9uYW1lc19vZiNwYXR0ZXJuIHB2Yl9wYXQgW10gd2l0aFxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+IGN0eHRcbiAgICAgICAgICAgIHwgWyB2YXJfbmFtZSBdIC0+XG4gICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnB2Yl9sb2MgdmFyX25hbWUgY3R4dFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9wYXQsIHBhdF9lcnJvcnMgPSBzZWxmI3BhdHRlcm4gY3R4dCBwdmJfcGF0IGluXG4gICAgICAgICAgbGV0IHB2Yl9leHByLCBleHByX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gaW5fYmluZGluZ19jdHh0IHB2Yl9leHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBpbl9iaW5kaW5nX2N0eHQgcHZiX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHB2Yl9sb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgcGF0X2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgZXhwcl9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSwgZXJyb3JzKVxuICBlbmRcblxuY2xhc3Mgc2V4cF9vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW1NleHAudF0gQXN0LmxpZnRcbiAgICBtZXRob2QgaW50ID0gc2V4cF9vZl9pbnRcbiAgICBtZXRob2Qgc3RyaW5nID0gc2V4cF9vZl9zdHJpbmdcbiAgICBtZXRob2QgYm9vbCA9IHNleHBfb2ZfYm9vbFxuICAgIG1ldGhvZCBjaGFyID0gc2V4cF9vZl9jaGFyXG4gICAgbWV0aG9kIGZsb2F0ID0gc2V4cF9vZl9mbG9hdFxuICAgIG1ldGhvZCBpbnQzMiA9IHNleHBfb2ZfaW50MzJcbiAgICBtZXRob2QgaW50NjQgPSBzZXhwX29mX2ludDY0XG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHNleHBfb2ZfbmF0aXZlaW50XG4gICAgbWV0aG9kIHVuaXQgPSBzZXhwX29mX3VuaXRcbiAgICBtZXRob2Qgb3B0aW9uID0gc2V4cF9vZl9vcHRpb25cbiAgICBtZXRob2QgbGlzdCA9IHNleHBfb2ZfbGlzdFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EgLT4gU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwLnQgPSBzZXhwX29mX2FycmF5XG4gICAgbWV0aG9kIG90aGVyIDogJ2EuICdhIC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIlxuXG4gICAgbWV0aG9kIHJlY29yZCBmaWVsZHMgPVxuICAgICAgTGlzdFxuICAgICAgICAoTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGxhYmVsLCBzZXhwKSAtPlxuICAgICAgICAgICAgIFNleHAuTGlzdCBbIEF0b20gbGFiZWw7IHNleHAgXSkpXG5cbiAgICBtZXRob2QgY29uc3RyIHRhZyBhcmdzID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aCBbXSAtPiBBdG9tIHRhZyB8IF8gLT4gTGlzdCAoQXRvbSB0YWcgOjogYXJncylcblxuICAgIG1ldGhvZCB0dXBsZSBsID0gTGlzdCBsXG4gIGVuZFxuXG5sZXQgc2V4cF9vZiA9IG5ldyBzZXhwX29mXG4iLCIjIDEgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiBcbm9wZW4gTGV4aW5nXG5cbmxldCB1cGRhdGVfbG9jIGxleGJ1ZiBsaW5lc190b19za2lwID1cbiAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHsgcG9zIHdpdGhcbiAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIGxpbmVzX3RvX3NraXA7XG4gICAgcG9zX2JvbCA9IHBvcy5wb3NfY251bTtcbiAgfVxuXG4jIDEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHNraXBfaGFzaF9iYW5nIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAzIClcbiMgMTEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDEgLT5cbiMgMTYgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMSApXG4jIDExOCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAgKCAoKSApXG4jIDEyMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiBJbXBvcnRcblxubGV0IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnkgfmYgPVxuICBtYXRjaCBmbiB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgXCItXCIgLT5cbiAgICAgICgqIEZsaXBwaW5nIGJhY2sgYW5kIGZvcnRoIGZyb20gYmluYXJ5IHRvIHRleHQgaXMgbm90XG4gICAgICAgICBhIGdvb2QgaWRlYSwgc28gd2UnbGwgbWFrZSB0d28gc2ltcGxpZnlpbmcgYXNzdW1wdGlvbnM6XG4gICAgICAgICAxLiBBc3N1bWUgdGhhdCBub3RoaW5nIGlzIGJ1ZmZlcmVkIG9uIHN0ZG91dCBiZWZvcmVcbiAgICAgICAgICAgIGVudGVyaW5nIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgICAgZmx1c2ggdGhlIHN0ZG91dCBvbiBlbnRyeS5cbiAgICAgICAgIDIuIEFzc3VtZSB0aGF0IG5vdGhpbmcgZWxzZSBpcyBzZW50IHRvIHN0ZG91dCBhZnRlclxuICAgICAgICAgICAgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyBpdCBpcyBzYWZlIHRvIGxlYXZlIHN0ZG91dFxuICAgICAgICAgICAgY2hhbm5lbCBpbiBiaW5hcnkgbW9kZSAob3IgdGV4dCBtb2RlIGlmIFtiaW5hcnk9dHJ1ZV0pXG4gICAgICAgICAgICBhZnRlciB0aGUgZnVuY3Rpb24gaXMgZG9uZS4gKilcbiAgICAgIHNldF9iaW5hcnlfbW9kZV9vdXQgc3Rkb3V0IGJpbmFyeTtcbiAgICAgIGYgc3Rkb3V0XG4gIHwgU29tZSBmbiAtPiBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmJpbmFyeSB+ZlxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIHwgSW1wbFxuXG4gIGxldCBvZl9maWxlbmFtZSBmbiA6IHQgb3B0aW9uID1cbiAgICBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1sXCIgdGhlbiBTb21lIEltcGxcbiAgICBlbHNlIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxpXCIgdGhlbiBTb21lIEludGZcbiAgICBlbHNlIE5vbmVcblxuICBsZXQgZGVzY3JpYmUgPSBmdW5jdGlvbiBJbXBsIC0+IFwiaW1wbGVtZW50YXRpb25cIiB8IEludGYgLT4gXCJpbnRlcmZhY2VcIlxuICBsZXQgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFBvbHkuZXF1YWxcbmVuZFxuXG5tb2R1bGUgSW50Zl9vcl9pbXBsID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcblxuICBsZXQgbWFwIHQgKG1hcCA6IEFzdF90cmF2ZXJzZS5tYXApID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSB4KVxuXG4gIGxldCBtYXBfd2l0aF9jb250ZXh0IHQgKG1hcCA6IF8gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHQpIGN0eCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSBjdHggeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIGN0eCB4KVxuXG4gIGxldCBraW5kIDogXyAtPiBLaW5kLnQgPSBmdW5jdGlvbiBJbnRmIF8gLT4gSW50ZiB8IEltcGwgXyAtPiBJbXBsXG5lbmRcblxubW9kdWxlIEFzdF9pbyA9IHN0cnVjdFxuICB0eXBlIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sX3ZlcnNpb24pXG5cbiAgbGV0IGZhbGxfYmFja19pbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbilcbiAgKCogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIGlucHV0IHZlcnNpb24gY2FuJ3QgYmUgZGV0ZXJtaW5lZCBkdWUgdG9cbiAgICAgIGxvYWRpbmcgb3IgcHJlcHJvY2Vzc2luZyBlcnJvcnMgKilcblxuICB0eXBlIHQgPSB7XG4gICAgaW5wdXRfbmFtZSA6IHN0cmluZztcbiAgICBpbnB1dF92ZXJzaW9uIDogaW5wdXRfdmVyc2lvbjtcbiAgICBhc3QgOiBJbnRmX29yX2ltcGwudDtcbiAgfVxuXG4gIHR5cGUgcmVhZF9lcnJvciA9XG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0XG4gICAgfCBVbmtub3duX3ZlcnNpb24gb2Ygc3RyaW5nICogaW5wdXRfdmVyc2lvblxuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTeXN0ZW1fZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cblxuICB0eXBlIGlucHV0X3NvdXJjZSA9IFN0ZGluIHwgRmlsZSBvZiBzdHJpbmdcbiAgdHlwZSBpbnB1dF9raW5kID0gUG9zc2libHlfc291cmNlIG9mIEtpbmQudCAqIHN0cmluZyB8IE5lY2Vzc2FyaWx5X2JpbmFyeVxuXG4gIGxldCByZWFkX2Vycm9yX3RvX3N0cmluZyAoZXJyb3IgOiByZWFkX2Vycm9yKSA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm90X2FfYmluYXJ5X2FzdCAtPiBcIkVycm9yOiBOb3QgYSBiaW5hcnkgYXN0XCJcbiAgICB8IFVua25vd25fdmVyc2lvbiAocywgXykgLT4gXCJFcnJvcjogVW5rbm93biB2ZXJzaW9uIFwiIF4gc1xuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIChsb2MsIF8pIC0+XG4gICAgICAgIFwiU291cmNlIHBhcnNlIGVycm9yOlwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcbiAgICB8IFN5c3RlbV9lcnJvciAobG9jLCBfKSAtPiBcIlN5c3RlbSBlcnJvcjogXCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuXG4gIGxldCBwYXJzZV9zb3VyY2VfY29kZSB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBpY1xuICAgICAgPVxuICAgICgqIFRoZSBpbnB1dCB2ZXJzaW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgaW5wdXQgd2lsbCBnZXQgcGFyc2VkIGJ5XG4gICAgICAgdGhlIGN1cnJlbnQgY29tcGlsZXIgUGFyc2UgbW9kdWxlICopXG4gICAgbGV0IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSBpblxuICAgIHRyeVxuICAgICAgKCogVG8gdGVzdCBpZiBhIGZpbGUgaXMgYW4gQVNUIGZpbGUsIHdlIGhhdmUgdG8gcmVhZCB0aGUgZmlyc3QgZmV3IGJ5dGVzIG9mIHRoZVxuICAgICAgICAgIGZpbGUuIElmIGl0IGlzIG5vdCwgd2UgaGF2ZSB0byBwYXJzZSB0aGVzZSBieXRlcyBhbmQgdGhlIHJlc3Qgb2YgdGhlIGZpbGUgYXNcbiAgICAgICAgICBzb3VyY2UgY29kZS5cblxuICAgICAgICAgIFRoZSBjb21waWxlciBqdXN0IGRvZXMgW3NlZWtfb24gMF0gaW4gdGhpcyBjYXNlLCBob3dldmVyIHRoaXMgZG9lc24ndCB3b3JrIHdoZW5cbiAgICAgICAgICB0aGUgaW5wdXQgaXMgYSBwaXBlLlxuXG4gICAgICAgICAgV2hhdCB3ZSBkbyBpbnN0ZWFkIGlzIGNyZWF0ZSBhIGxleGluZyBidWZmZXIgZnJvbSB0aGUgaW5wdXQgY2hhbm5lbCBhbmQgcHJlLWZpbGxcbiAgICAgICAgICBpdCB3aXRoIHdoYXQgd2UgcmVhZCB0byBkbyB0aGUgdGVzdC4gKilcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBpblxuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6bGV4YnVmLmxleF9idWZmZXIgfmRzdF9wb3M6MCB+bGVuO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxlbjtcbiAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICAgIHsgcG9zX2ZuYW1lID0gaW5wdXRfbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH07XG4gICAgICBTa2lwX2hhc2hfYmFuZy5za2lwX2hhc2hfYmFuZyBsZXhidWY7XG4gICAgICBsZXQgYXN0IDogSW50Zl9vcl9pbXBsLnQgPVxuICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgfCBJbnRmIC0+IEludGYgKFBhcnNlLmludGVyZmFjZSBsZXhidWYpXG4gICAgICAgIHwgSW1wbCAtPiBJbXBsIChQYXJzZS5pbXBsZW1lbnRhdGlvbiBsZXhidWYpXG4gICAgICBpblxuICAgICAgT2sgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IG1hZ2ljX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxuICBsZXQgcmVhZF9tYWdpYyBpYyA9XG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbiBpblxuICAgIGlmIGxlbiA9IG1hZ2ljX2xlbmd0aCB0aGVuIE9rIHMgZWxzZSBFcnJvciBzXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBjaCB+aW5wdXRfa2luZCA9XG4gICAgbGV0IGhhbmRsZV9ub25fYmluYXJ5IHByZWZpeF9yZWFkX2Zyb21fc291cmNlID1cbiAgICAgIG1hdGNoIGlucHV0X2tpbmQgd2l0aFxuICAgICAgfCBQb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIC0+XG4gICAgICAgICAgcGFyc2Vfc291cmNlX2NvZGUgfmtpbmQgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGNoXG4gICAgICB8IE5lY2Vzc2FyaWx5X2JpbmFyeSAtPiBFcnJvciBOb3RfYV9iaW5hcnlfYXN0XG4gICAgaW5cbiAgICAoKiBNYXJzaGFsbGVkIEFTVCBtdXN0IGJlIHJlYWQgaW4gYmluYXJ5IG1vZGUuIEV2ZW4gdGhvdWdoIHdlIGRvbid0IGtub3dcbiAgICAgICBiZWZvcmUgcmVhZGluZyB0aGUgbWFnaWMgbnVtYmVyIHdoZW4gdGhlIGZpbGUgaGFzIGEgbWFyc2hhbGxlZCBBU1QsXG4gICAgICAgaXQgaXMgc2FmZSB0byByZWFkIHNvdXJjZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gKilcbiAgICBzZXRfYmluYXJ5X21vZGVfaW4gY2ggdHJ1ZTtcbiAgICBtYXRjaCByZWFkX21hZ2ljIGNoIHdpdGhcbiAgICB8IEVycm9yIHMgLT4gaGFuZGxlX25vbl9iaW5hcnkgc1xuICAgIHwgT2sgcyAtPiAoXG4gICAgICAgIG1hdGNoIEZpbmRfdmVyc2lvbi5mcm9tX21hZ2ljIHMgd2l0aFxuICAgICAgICB8IEludGYgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkludGYgKElucHV0X3RvX3BweGxpYi5jb3B5X3NpZ25hdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgSW1wbCAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW1wbCAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc3RydWN0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBVbmtub3duIC0+XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgfHwgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICB0aGVuIEVycm9yIChVbmtub3duX3ZlcnNpb24gKHMsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSlcbiAgICAgICAgICAgIGVsc2UgaGFuZGxlX25vbl9iaW5hcnkgcylcblxuICBsZXQgcmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggaW5wdXRfc291cmNlIHdpdGhcbiAgICAgIHwgU3RkaW4gLT5cbiAgICAgICAgICBzZXRfYmluYXJ5X21vZGVfaW4gc3RkaW4gdHJ1ZTtcbiAgICAgICAgICBmcm9tX2NoYW5uZWwgc3RkaW4gfmlucHV0X2tpbmRcbiAgICAgIHwgRmlsZSBmbiAtPiBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kKVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCB3cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24pOyBhc3QgfVxuICAgICAgfmFkZF9wcHhfY29udGV4dCA9XG4gICAgbGV0IG1vZHVsZSBQcHhsaWJfdG9faW5wdXQgPSBDb252ZXJ0IChKcykgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbGV0IG1vZHVsZSBPY2FtbF90b19pbnB1dCA9IENvbnZlcnQgKENvbXBpbGVyX3ZlcnNpb24pIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgfCBJbnRmIHNnIC0+XG4gICAgICAgIGxldCBzZyA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHNnXG4gICAgfCBJbXBsIHN0IC0+XG4gICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHN0XG5cbiAgbW9kdWxlIFJlYWRfYmluID0gc3RydWN0XG4gICAgdHlwZSBhc3QgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG4gICAgdHlwZSB0ID0geyBhc3QgOiBhc3Q7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gICAgbGV0IHJlYWRfYmluYXJ5IGZuID1cbiAgICAgIG1hdGNoXG4gICAgICAgIEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQ6TmVjZXNzYXJpbHlfYmluYXJ5KVxuICAgICAgd2l0aFxuICAgICAgfCBPayB7IGFzdDsgaW5wdXRfbmFtZTsgXyB9IC0+XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgICAgfCBJbXBsIHN0cnVjdHVyZSAtPiBJbXBsIHN0cnVjdHVyZVxuICAgICAgICAgICAgfCBJbnRmIHNpZ25hdHVyZSAtPiBJbnRmIHNpZ25hdHVyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBhc3Q7IGlucHV0X25hbWUgfVxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChyZWFkX2Vycm9yX3RvX3N0cmluZyBlKVxuXG4gICAgbGV0IGdldF9hc3QgdCA9IHQuYXN0XG4gICAgbGV0IGdldF9pbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5c3RlbSA9IHN0cnVjdFxuICBsZXQgcnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0IH5vdXRwdXQgPVxuICAgIGxldCBjb21tYW5kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgPiAlc1wiIHBwXG4gICAgICAgIChpZiBTdHJpbmcuZXF1YWwgaW5wdXQgXCItXCIgdGhlbiBcIlwiIGVsc2UgU3RkbGliLkZpbGVuYW1lLnF1b3RlIGlucHV0KVxuICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIG91dHB1dClcbiAgICBpblxuICAgIGlmIFN0ZGxpYi5TeXMuY29tbWFuZCBjb21tYW5kID0gMCB0aGVuIE9rICgpXG4gICAgZWxzZSBFcnJvciAoY29tbWFuZCwgQXN0X2lvLmZhbGxfYmFja19pbnB1dF92ZXJzaW9uKVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5tb2R1bGUgRmlsZW5hbWUgPSBTdGRsaWIuRmlsZW5hbWVcblxuKCogVE9ETzogbWFrZSB0aGUgXCJkZXJpdmluZy5cIiBkZXBlbmQgb24gdGhlIG1hdGNoaW5nIGF0dHJpYnV0ZSBuYW1lLiAqKVxubGV0IGVuZF9tYXJrZXJfc2lnID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTaWduYXR1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZW5kX21hcmtlcl9zdHIgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFN0cnVjdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbm1vZHVsZSB0eXBlIFQxID0gc2lnXG4gIHR5cGUgJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBnZXRfbG9jIDogdCAtPiBMb2NhdGlvbi50XG4gIHZhbCBlbmRfbWFya2VyIDogKHQsIHVuaXQpIEF0dHJpYnV0ZS5GbG9hdGluZy50XG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA6IHNpZ1xuICAgIHZhbCBhcHBseSA6XG4gICAgICA8IHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gVC50XG4gICAgICA7IHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gVC50XG4gICAgICA7IC4uID4gLT5cbiAgICAgIHQgVC50XG4gIGVuZFxuXG4gIHZhbCBwYXJzZSA6IExleGluZy5sZXhidWYgLT4gdCBsaXN0XG4gIHZhbCBwcCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19zZXhwIDogdCAtPiBTZXhwLnRcbmVuZCkgPVxuc3RydWN0XG4gIGxldCBleHRyYWN0X3ByZWZpeCB+cG9zIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcInBweGxpYjogW0BAQEBAQCVzXSBhdHRyaWJ1dGUgbWlzc2luZ1wiXG4gICAgICAgICAgICAgICAgKEF0dHJpYnV0ZS5GbG9hdGluZy5uYW1lIE0uZW5kX21hcmtlciksXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuRmxvYXRpbmcuY29udmVydF9yZXMgWyBNLmVuZF9tYXJrZXIgXSB4IHdpdGhcbiAgICAgICAgICB8IE9rIE5vbmUgLT4gbG9vcCAoeCA6OiBhY2MpIGxcbiAgICAgICAgICB8IE9rIChTb21lICgpKSAtPiBPayAoTGlzdC5yZXYgYWNjLCAoTS5nZXRfbG9jIHgpLmxvY19zdGFydClcbiAgICAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgICAgIHwgZXhjZXB0aW9uIEZhaWx1cmUgXyAtPiBsb29wICh4IDo6IGFjYykgbClcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG4gIGxldCByZW1vdmVfbG9jID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgICAgbWV0aG9kISBsb2NhdGlvbiBfID0gTG9jYXRpb24ubm9uZVxuICAgICAgbWV0aG9kISBsb2NhdGlvbl9zdGFjayBfID0gW11cbiAgICBlbmRcblxuICBtb2R1bGUgTV9tYXAgPSBNLlRyYW5zZm9ybSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCByZW1vdmVfbG9jIHggPSBNX21hcC5hcHBseSByZW1vdmVfbG9jIHhcbiAgbGV0IHJlYyBsYXN0IHByZXYgPSBmdW5jdGlvbiBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGRpZmZfYXN0cyB+Z2VuZXJhdGVkIH5yb3VuZF90cmlwID1cbiAgICBsZXQgd2l0aF90ZW1wX2ZpbGUgZiA9XG4gICAgICBFeG4ucHJvdGVjdHhcbiAgICAgICAgKEZpbGVuYW1lLnRlbXBfZmlsZSBcInBweGxpYlwiIFwiXCIpXG4gICAgICAgIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mXG4gICAgaW5cbiAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMSAtPlxuICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMiAtPlxuICAgICAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZHVtcCBmbiBhc3QgPVxuICAgICAgICAgICAgICAgICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgICAgICAgICAgICAgIFNleHAucHBfaHVtIHBwZiAoTS50b19zZXhwIGFzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGR1bXAgZm4xIGdlbmVyYXRlZDtcbiAgICAgICAgICAgICAgICBkdW1wIGZuMiByb3VuZF90cmlwO1xuICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCJwYXRkaWZmIC1hc2NpaSAtYWx0LW9sZCBnZW5lcmF0ZWQgLWFsdC1uZXcgXFxcbiAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9rID1cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaWZmIC0tbGFiZWwgZ2VuZXJhdGVkIC0tbGFiZWwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBvayB0aGVuIEluX2NoYW5uZWwucmVhZF9hbGwgb3V0XG4gICAgICAgICAgICAgICAgZWxzZSBcIjxubyBkaWZmZXJlbmNlcyBwcm9kdWNlZCBieSBkaWZmPlwiKSkpXG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzID1cbiAgICBtYXRjaCBNLnBhcnNlIChMZXhpbmcuZnJvbV9zdHJpbmcgcykgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgcmVjIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2UgPVxuICAgIG1hdGNoIChleHBlY3RlZCwgc291cmNlKSB3aXRoXG4gICAgfCBbXSwgW10gLT4gKClcbiAgICB8IFtdLCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyAoTS5nZXRfbG9jIHgpIHdpdGggbG9jX2VuZCA9IChNLmdldF9sb2MgKGxhc3QgeCBsKSkubG9jX2VuZCB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFtdXG4gICAgfCBfLCBbXSAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IExvY2F0aW9uLmxvY19naG9zdCA9IGZhbHNlOyBsb2Nfc3RhcnQgPSBlbmRfcG9zOyBsb2NfZW5kID0gZW5kX3BvcyB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIGV4cGVjdGVkXG4gICAgfCB4IDo6IGV4cGVjdGVkLCB5IDo6IHNvdXJjZSAtPlxuICAgICAgICBsZXQgbG9jID0gTS5nZXRfbG9jIHkgaW5cbiAgICAgICAgbGV0IHggPSByZW1vdmVfbG9jIHggaW5cbiAgICAgICAgbGV0IHkgPSByZW1vdmVfbG9jIHkgaW5cbiAgICAgICAgaWYgUG9seS4oIDw+ICkgeCB5IHRoZW4gKFxuICAgICAgICAgIGxldCByb3VuZF90cmlwID1cbiAgICAgICAgICAgIHJlbW92ZV9sb2MgKHBhcnNlX3N0cmluZyAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIE0ucHAgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHJvdW5kX3RyaXAgdGhlblxuICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICAgICAgICAgICAgXCJwcHhsaWI6IHRoZSBjb3JyZWN0ZWQgY29kZSBkb2Vzbid0IHJvdW5kLXRyaXAuXFxuXFxcbiAgICAgICAgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIE9DYW1sIHByaW50ZXI6XFxuXFxcbiAgICAgICAgICAgICAgICVzXCJcbiAgICAgICAgICAgICAgKGRpZmZfYXN0cyB+Z2VuZXJhdGVkOnggfnJvdW5kX3RyaXApO1xuICAgICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFsgeCBdKTtcbiAgICAgICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuXG4gIGxldCBkb19tYXRjaCB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBzb3VyY2UgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGV4dHJhY3RfcHJlZml4IH5wb3Mgc291cmNlID4+fCBmdW4gKHNvdXJjZSwgZW5kX3BvcykgLT5cbiAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5lbmRcblxuKCokKilcbm1vZHVsZSBTdHIgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc3RyX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc3RyXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbXBsZW1lbnRhdGlvblxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmVfaXRlbVxuZW5kKVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5tb2R1bGUgU2lnID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHNpZ25hdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHNpZ19sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3NpZ1xuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc2lnbmF0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW50ZXJmYWNlXG4gIGxldCBwcCA9IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZV9pdGVtXG5lbmQpXG5cbigqJCopXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmVfcmVzID0gU3RyLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3N0cnVjdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlX3JlcyA9IFNpZy5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zaWduYXR1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cblxudHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHB4X2ltcG9ydCA6IHR5cGVfZGVjbGFyYXRpb24gdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFBweF9pbXBvcnQgLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcblxuICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgZnVuIGEgYiAtPlxuICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgfCBDbGFzc19leHByLCBDbGFzc19leHByIC0+IEVxXG4gICAgfCBDbGFzc19maWVsZCwgQ2xhc3NfZmllbGQgLT4gRXFcbiAgICB8IENsYXNzX3R5cGUsIENsYXNzX3R5cGUgLT4gRXFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIENsYXNzX3R5cGVfZmllbGQgLT4gRXFcbiAgICB8IENvcmVfdHlwZSwgQ29yZV90eXBlIC0+IEVxXG4gICAgfCBFeHByZXNzaW9uLCBFeHByZXNzaW9uIC0+IEVxXG4gICAgfCBNb2R1bGVfZXhwciwgTW9kdWxlX2V4cHIgLT4gRXFcbiAgICB8IE1vZHVsZV90eXBlLCBNb2R1bGVfdHlwZSAtPiBFcVxuICAgIHwgUGF0dGVybiwgUGF0dGVybiAtPiBFcVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIFNpZ25hdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgU3RydWN0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFBweF9pbXBvcnQsIFBweF9pbXBvcnQgLT4gRXFcbiAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChQb2x5LiggPD4gKSAoVCBhKSAoVCBiKSk7XG4gICAgICAgIE5lXG5cbiAgbGV0IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2wgPVxuICAgIG1hdGNoIHR5cGVfZGVjbCB3aXRoXG4gICAgfCB7IHB0eXBlX21hbmlmZXN0ID0gU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIChuYW1lLCBfKTsgXyB9OyBfIH1cbiAgICAgIC0+XG4gICAgICAgIGxldCB2aXJ0dWFsX3BheWxvYWQgPVxuICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl90eXBlIH5sb2M6dHlwZV9kZWNsLnB0eXBlX2xvYyBSZWN1cnNpdmVcbiAgICAgICAgICAgIFsgdHlwZV9kZWNsIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHIgPSBbXSBpblxuICAgICAgICBTb21lICgobmFtZSwgUFN0ciBbIHZpcnR1YWxfcGF5bG9hZCBdKSwgYXR0cilcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIDogdHlwZSBhLiBhIHQgLT4gYSAtPiAoZXh0ZW5zaW9uICogYXR0cmlidXRlcykgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgeyBwY2xfZGVzYyA9IFBjbF9leHRlbnNpb24gZTsgcGNsX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBlOyBwY2ZfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZSwgeyBwY3R5X2Rlc2MgPSBQY3R5X2V4dGVuc2lvbiBlOyBwY3R5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZTsgcGN0Zl9hdHRyaWJ1dGVzID0gYTsgXyB9XG4gICAgICAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ29yZV90eXBlLCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIGU7IHB0eXBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgRXhwcmVzc2lvbiwgeyBwZXhwX2Rlc2MgPSBQZXhwX2V4dGVuc2lvbiBlOyBwZXhwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV9leHByLCB7IHBtb2RfZGVzYyA9IFBtb2RfZXh0ZW5zaW9uIGU7IHBtb2RfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX3R5cGUsIHsgcG10eV9kZXNjID0gUG10eV9leHRlbnNpb24gZTsgcG10eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBQYXR0ZXJuLCB7IHBwYXRfZGVzYyA9IFBwYXRfZXh0ZW5zaW9uIGU7IHBwYXRfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBQcHhfaW1wb3J0LCB0eXBlX2RlY2wgLT4gZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbFxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXNfcmVzIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gKGEsIExvY2F0aW9uLkVycm9yLnQgTm9uRW1wdHlMaXN0LnQpIHJlc3VsdCA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDbGFzc19leHByIC0+IE9rIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0geC5wY2xfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IE9rIHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0geC5wY2ZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4gT2sgeyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0geC5wY3R5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+XG4gICAgICAgIE9rIHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IHgucGN0Zl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IE9rIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IHgucHR5cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiBPayB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSB4LnBleHBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IE9rIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IHgucG1vZF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4gT2sgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0geC5wbXR5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IE9rIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IHgucHBhdF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgUHB4X2ltcG9ydCAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWVyZ2VfYXR0cmlidXRlc19yZXMgdCB4IGF0dHJzXG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiZXh0ZW5zaW9uXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuIChDb250ZXh0LlQgY3R4KSAtPiBTb21lIChDb250ZXh0LmRlc2MgY3R4KSlcblxubW9kdWxlIE1ha2UgKENhbGxiYWNrIDogc2lnXG4gIHR5cGUgJ2EgdFxuZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSBwYXlsb2FkX3BhcnNlciA9XG4gICAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAgICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50ICogJ2IgQ2FsbGJhY2sudFxuICAgICAgICAtPiAoJ2EsICdjKSBwYXlsb2FkX3BhcnNlclxuXG4gIHR5cGUgKCdjb250ZXh0LCAncGF5bG9hZCkgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdjb250ZXh0IENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogKHBheWxvYWQsICdwYXlsb2FkKSBwYXlsb2FkX3BhcnNlcjtcbiAgICB3aXRoX2FyZyA6IGJvb2w7XG4gIH1cblxuICBsZXQgZGVjbGFyZSA6XG4gICAgICB0eXBlIGEuXG4gICAgICB3aXRoX2FyZzpib29sIC0+XG4gICAgICBzdHJpbmcgLT5cbiAgICAgIGEgQ29udGV4dC50IC0+XG4gICAgICAocGF5bG9hZCwgJ2IsICdwYXlsb2FkKSBBc3RfcGF0dGVybi50IC0+XG4gICAgICAnYiBDYWxsYmFjay50IC0+XG4gICAgICAoYSwgJ3BheWxvYWQpIHQgPVxuICAgZnVuIH53aXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrIC0+XG4gICAgKCogQ2hlY2sgdGhhdCB0aGVyZSBpcyBubyBjb2xsaXNpb25zIGJldHdlZW4gcHB4X2ltcG9ydCBhbmQgY29yZV90eXBlXG4gICAgICAgZXh0ZW5zaW9ucyAqKVxuICAgIChtYXRjaCBjb250ZXh0IHdpdGhcbiAgICB8IENvbnRleHQuUHB4X2ltcG9ydCAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIENvcmVfdHlwZSkgbmFtZVxuICAgIHwgQ29udGV4dC5Db3JlX3R5cGUgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBQcHhfaW1wb3J0KSBuYW1lXG4gICAgfCBfIC0+ICgpKTtcbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgRXh0ZW5zaW9uIHJlZ2lzdHJhciAoQ29udGV4dC5UIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgICAgIHdpdGhfYXJnO1xuICAgIH1cblxuICBsZXQgZmluZCB0cyAoZXh0IDogZXh0ZW5zaW9uKSA9XG4gICAgbGV0IHsgdHh0ID0gbmFtZTsgbG9jIH0gPSBmc3QgZXh0IGluXG4gICAgbGV0IG5hbWUsIGFyZyA9IE5hbWUuc3BsaXRfcGF0aCBuYW1lIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCBfIDo6IF8gOjogXyBhcyBsIC0+XG4gICAgICAgIEVycm9yXG4gICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZXh0ZW5zaW9uczogJXNcIlxuICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgW10gKVxuICAgIHwgWyB0IF0gLT5cbiAgICAgICAgaWYgKG5vdCB0LndpdGhfYXJnKSAmJiBPcHRpb24uaXNfc29tZSBhcmcgdGhlblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICAgICAgICAgIFwiRXh0ZW5zaW9uICVzIGRvZXNuJ3QgZXhwZWN0IGEgcGF0aCBhcmd1bWVudFwiIG5hbWUsXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBhcmcgPVxuICAgICAgICAgICAgT3B0aW9uLm1hcCBhcmcgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNoaWZ0ID0gU3RyaW5nLmxlbmd0aCBuYW1lICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGxvYy5sb2Nfc3RhcnQgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eHQgPSBMb25naWRlbnQucGFyc2UgcztcbiAgICAgICAgICAgICAgICAgIGxvYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXJ0IHdpdGggcG9zX2NudW0gPSBzdGFydC5wb3NfY251bSArIHNoaWZ0IH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIChTb21lICh0LCBhcmcpKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG4gIGVuZClcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGN0eCBwYXR0IGZcblxuICBsZXQgZGVjbGFyZSBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY3R4IHBhdHQgKGZ1biB+YXJnOl8gLT4gZilcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmxvYyBleHQgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGZpbmQgdHMgZXh0ID4+PSBmdW4gciAtPlxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPlxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5hcmcpID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBTb21lIHBheWxvYWRcblxuICBsZXQgY29udmVydCB0cyB+bG9jIGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmxvYyBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbm1vZHVsZSBNID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24udCAtPiBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG5lbmQpXG5cbnR5cGUgJ2EgZXhwYW5kZXJfcmVzdWx0ID0gU2ltcGxlIG9mICdhIHwgSW5saW5lIG9mICdhIGxpc3RcblxubW9kdWxlIEZvcl9jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgZXhwYW5kZXJfcmVzdWx0KSBNLnRcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aFxuICAgICAgICB8IFNpbXBsZSB4IC0+IFNvbWUgeFxuICAgICAgICB8IElubGluZSBfIC0+IGZhaWx3aXRoIFwiRXh0ZW5zaW9uLmNvbnZlcnRcIilcblxuICBsZXQgY29udmVydCB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoIFNpbXBsZSB4IC0+IFNvbWUgWyB4IF0gfCBJbmxpbmUgbCAtPiBTb21lIGwpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lIHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxudHlwZSB0ID0gVCA6IF8gRm9yX2NvbnRleHQudCAtPiB0XG5cbmxldCBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgOiB0eXBlIGEuIGZ1bmM6c3RyaW5nIC0+IGEgQ29udGV4dC50IC0+IHVuaXQgPVxuIGZ1biB+ZnVuYyBjdHggLT5cbiAgbWF0Y2ggY3R4IHdpdGhcbiAgfCBDb250ZXh0LkNsYXNzX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5DbGFzc190eXBlX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5TaWduYXR1cmVfaXRlbSAtPiAoKVxuICB8IENvbnRleHQuU3RydWN0dXJlX2l0ZW0gLT4gKClcbiAgfCBjb250ZXh0IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCIlczogJXMgY2FuJ3QgYmUgaW5saW5lZFwiIGZ1bmNcbiAgICAgICAgKENvbnRleHQuZGVzYyBjb250ZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9ieV9jb250ZXh0IDpcbiAgICB0eXBlIGEuIGEgQ29udGV4dC50IC0+IHQgbGlzdCAtPiBhIEZvcl9jb250ZXh0LnQgbGlzdCA9XG4gZnVuIGNvbnRleHQgZXhwYW5kZXJzIC0+XG4gIG1hdGNoIGV4cGFuZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBUIHQgOjogcmVzdCAtPiAoXG4gICAgICBtYXRjaCBDb250ZXh0LmVxIGNvbnRleHQgdC5jb250ZXh0IHdpdGhcbiAgICAgIHwgRXEgLT4gdCA6OiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3RcbiAgICAgIHwgTmUgLT4gZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0KVxuXG5sZXQgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBjdHggKG5hbWUsIF8pID1cbiAgaWZcbiAgICBub3RcbiAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBFeHRlbnNpb24gbmFtZS50eHRcbiAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dClcbiAgdGhlblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIChDb250ZXh0LlQgY3R4KVxuICAgICAgICBcIkV4dGVuc2lvbiBgJXMnIHdhcyBub3QgdHJhbnNsYXRlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pIGFjYyA9XG4gICAgICBhY2NcbiAgICAgIEAgW1xuICAgICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICAgIF1cblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENvcmVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFBhdHRlcm4gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgRXhwcmVzc2lvbiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdGZfZXh0ZW5zaW9uIGV4dCAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZV9maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjZl9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbXR5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTaWduYXR1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV9leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFN0cnVjdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2NcbiAgZW5kXG5cbmxldCBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNwYXR0ZXJuX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNleHByZXNzaW9uX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG4gIGVuZFxuXG5tb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0IH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuZW5kXG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IF9fZGVjbGFyZV9wcHhfaW1wb3J0IG5hbWUgZXhwYW5kID1cbiAgKCogVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gdW53cmFwIHRoZSB0eXBlIGRlY2xhcmF0aW9uIGZyb20gdGhlIHBheWxvYWRcbiAgICAgYXNzZW1ibGVkIGJ5IFtDb250ZXh0LmdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbl0gKilcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl90eXBlIHJlY3Vyc2l2ZSAoX18gXjo6IG5pbCkgXjo6IG5pbCkpIGluXG4gIFYzLmRlY2xhcmUgbmFtZSBDb250ZXh0LlBweF9pbXBvcnQgcGF0dGVybiBleHBhbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgPSBkZWNsYXJlXG4gIGxldCBkZWNsYXJlX2lubGluZSA9IGRlY2xhcmVfaW5saW5lXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBFID0gRXh0ZW5zaW9uXG5tb2R1bGUgRUMgPSBFeHRlbnNpb24uQ29udGV4dFxubW9kdWxlIEEgPSBBdHRyaWJ1dGVcbm1vZHVsZSBBQyA9IEF0dHJpYnV0ZS5Db250ZXh0XG5cbm1vZHVsZSBSdWxlID0gc3RydWN0XG4gIG1vZHVsZSBBdHRyX2dyb3VwX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDpcbiAgICAgICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICAgICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAgICAgJ2IgbGlzdCAtPlxuICAgICAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICAgICAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBBdHRyX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgU3BlY2lhbF9mdW5jdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBpZGVudCA6IExvbmdpZGVudC50O1xuICAgICAgZXhwYW5kIDogUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gUGFyc2V0cmVlLmV4cHJlc3Npb24gb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50X2tpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBGbG9hdCB8IEludGVnZXJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3VmZml4IDogY2hhcjtcbiAgICAgIGtpbmQgOiBDb25zdGFudF9raW5kLnQ7XG4gICAgICBleHBhbmQgOiBMb2NhdGlvbi50IC0+IHN0cmluZyAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEV4dGVuc2lvbiA6IEV4dGVuc2lvbi50IHRcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiA6IFNwZWNpYWxfZnVuY3Rpb24udCB0XG4gICAgICB8IENvbnN0YW50IDogQ29uc3RhbnQudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcblxuICAgIHR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbiAgICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgICBmdW4gYSBiIC0+XG4gICAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgICAgfCBFeHRlbnNpb24sIEV4dGVuc2lvbiAtPiBFcVxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uLCBTcGVjaWFsX2Z1bmN0aW9uIC0+IEVxXG4gICAgICB8IENvbnN0YW50LCBDb25zdGFudCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2wsIEF0dHJfc3RyX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2wsIEF0dHJfc2lnX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCwgQXR0cl9zdHJfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQsIEF0dHJfc2lnX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiwgQXR0cl9zdHJfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiwgQXR0cl9zaWdfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBfIC0+IE5lXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYSBGaWVsZC50ICogJ2EgLT4gdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfZ3JvdXBfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgJ2IgbGlzdCAtPlxuICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIGxldCByZWMgZmlsdGVyIDogdHlwZSBhLiBhIEZpZWxkLnQgLT4gdCBsaXN0IC0+IGEgbGlzdCA9XG4gICBmdW4gZmllbGQgbCAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IFQgKGZpZWxkJywgeCkgOjogbCAtPiAoXG4gICAgICAgIG1hdGNoIEZpZWxkLmVxIGZpZWxkIGZpZWxkJyB3aXRoXG4gICAgICAgIHwgRmllbGQuRXEgLT4geCA6OiBmaWx0ZXIgZmllbGQgbFxuICAgICAgICB8IEZpZWxkLk5lIC0+IGZpbHRlciBmaWVsZCBsKVxuXG4gIGxldCBleHRlbnNpb24gZXh0ID0gVCAoRXh0ZW5zaW9uLCBleHQpXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb24gaWQgZiA9XG4gICAgVCAoU3BlY2lhbF9mdW5jdGlvbiwgeyBuYW1lID0gaWQ7IGlkZW50ID0gTG9uZ2lkZW50LnBhcnNlIGlkOyBleHBhbmQgPSBmIH0pXG5cbiAgbGV0IGNvbnN0YW50IGtpbmQgc3VmZml4IGV4cGFuZCA9IFQgKENvbnN0YW50LCB7IHN1ZmZpeDsga2luZDsgZXhwYW5kIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdGVkX2NvZGVfaG9vayA9IHN0cnVjdFxuICB0eXBlICdhIHNpbmdsZV9vcl9tYW55ID0gU2luZ2xlIG9mICdhIHwgTWFueSBvZiAnYSBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgRXh0ZW5zaW9uLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIHNpbmdsZV9vcl9tYW55IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuICBsZXQgcmVwbGFjZSB0IGNvbnRleHQgbG9jIHggPSB0LmYgY29udGV4dCBsb2MgeFxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE1hbnkgW10gLT4gKClcbiAgICB8IF8gLT4gdC5mIGNvbnRleHQgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IHhcbmVuZFxuXG5sZXQgcmVjIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIEVDLm1lcmdlX2F0dHJpYnV0ZXNfcmVzIGNvbnRleHQgeCBhdHRyc1xuICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycylcblxubGV0IG1hcF9ub2RlIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmhvb2sgfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0XG4gICAgICAgICAgICAoRUMubWVyZ2VfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnMpXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgPj58IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgbG9jIChTaW5nbGUgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgIGdlbmVyYXRlZF9jb2RlKVxuXG5sZXQgcmVjIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9vayB+ZW1iZWRfZXJyb3JzXG4gICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIFtdXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoZXNlIHR3byBsZXRzIGZvcmNlIHRoZSBldmFsdWF0aW9uIG9yZGVyLCBzbyB0aGF0IGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gdGhlXG4gICAgICAgICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGZpbGUuICopXG4gICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgICAgIHwgU29tZSBjb252ZXJ0ZWQgLT5cbiAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGNvbnZlcnRlZCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgICAgICAgPj49IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgKE1hbnkgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGNvZGUgLT4gZ2VuZXJhdGVkX2NvZGUgQCBjb2RlKSlcblxubGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxubGV0IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zIHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgbWF0Y2hcbiAgICBMaXN0Lm1hcCBzcGVjaWFsX2Z1bmN0aW9uc1xuICAgICAgfmY6KGZ1biB7IFJ1bGUuU3BlY2lhbF9mdW5jdGlvbi5pZGVudDsgZXhwYW5kOyBfIH0gLT4gKGlkZW50LCBleHBhbmQpKVxuICAgICgqIFdlIGV4cGVjdCB0aGUgbG9va3VwIHRvIGZhaWwgbW9zdCBvZiB0aGUgdGltZSwgYnkgbWFraW5nIHRoZSB0YWJsZSBiaWcgKGFuZFxuICAgICAgIHNwYXJzZSksIHdlIG1ha2UgaXQgbW9yZSBsaWtlbHkgdG8gZmFpbCBxdWlja2x5ICopXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdCB+c2l6ZToobWF4IDEwMjQgKExpc3QubGVuZ3RoIHNwZWNpYWxfZnVuY3Rpb25zICogMikpXG4gIHdpdGhcbiAgfCBPayB0YWJsZSAtPiB0YWJsZVxuICB8IEVycm9yIGlkZW50IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJDb250ZXh0X2ZyZWUuVjEubWFwX3RvcF9kb3duOiAlcyBwcmVzZW50IHR3aWNlIGluIGxpc3Qgb2Ygc3BlY2lhbCBcXFxuICAgICAgICAgZnVuY3Rpb25zXCJcbiAgICAgICAgKExpc3QuZmluZF9tYXBfZXhuIHNwZWNpYWxfZnVuY3Rpb25zIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgIGlmIFBvbHkuZXF1YWwgci5pZGVudCBpZGVudCB0aGVuIFNvbWUgci5uYW1lIGVsc2UgTm9uZSkpXG5cbigqIFtnZXRfZ3JvdXAgYXR0ciBsXSByZXR1cm5zIHRoZSBsaXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGZvciBlYWNoXG4gICBub2RlIGluIFtsXS5cbiAgIElmIFtsXSBpcyBlbXB0eSBvciBpZiBub25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGF2ZSBhbiBhdHRyaWJ1dGUgYXR0YWNoZWQsXG4gICBbZ2V0X2dyb3VwXSByZXR1cm5zIFtOb25lXS5cbiAgIElmIFtsXSBpcyBub3QgZW1wdHkgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhcyBhbiBhdHRyaWJ1ZVxuICAgYXR0YWNoZWQsIFtnZXRfZ3JvdXBdIHJldHVybnMgdGhlIGVxdWl2YWxlbnQgb2ZcbiAgIFtTb21lIChMaXN0Lm1hcCB+ZjooQXR0cmlidXRlLmdldCBhdHRyKSBsKV0uICopXG5sZXQgcmVjIGdldF9ncm91cCBhdHRyIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICB8IHggOjogbCAtPiAoXG4gICAgICBnZXRfZ3JvdXAgYXR0ciBsID4+PSBmdW4gZ3JvdXAgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGF0dHIgeCB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZSA+PnwgZnVuIGF0dHIyIC0+XG4gICAgICBtYXRjaCAoYXR0cjIsIGdyb3VwKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgfCBOb25lLCBTb21lIHZhbHMgLT4gU29tZSAoTm9uZSA6OiB2YWxzKVxuICAgICAgfCBTb21lIHZhbHVlLCBOb25lIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogTGlzdC5tYXAgbCB+ZjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgdmFscyAtPiBTb21lIChTb21lIHZhbHVlIDo6IHZhbHMpKVxuXG4oKiBTYW1lIGFzIFtMaXN0LnJldl0gdGhlbiBbTGlzdC5jb25jYXRdIGJ1dCBleHBlY3RpbmcgdGhlIGlucHV0IHRvIGJlIG9mIGxlbmd0aCA8PSAyICopXG5sZXQgcmV2X2NvbmNhdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBbIHggXSAtPiB4XG4gIHwgWyB4OyB5IF0gLT4geSBAIHhcbiAgfCBsIC0+IExpc3QuY29uY2F0IChMaXN0LnJldiBsKVxuXG5sZXQgc29ydF9hdHRyX2dyb3VwX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IHNvcnRfYXR0cl9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jID1cbiAgRXJyb3JcbiAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICBcIkEgY29udGV4dC1mcmVlIHJ1bGUgZGVsZXRlZCBvciBhZGRlZCBhdHRyaWJ1ZXMgb2YgYSBzdHIvc2lnIGl0ZW1cIixcbiAgICAgIFtdIClcblxuKCogUmV0dXJucyB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXR0cmlidXRlIGhhbmRsZXJzLiBXZSBkb24ndCByZW1vdmUgdGhlc2UgYXR0cmlidXRlcywgYXNcbiAgIGFub3RoZXIgcGFzcyBtaWdodCBpbnRlcnByZXQgdGhlbSBsYXRlci4gRm9yIGluc3RhbmNlIGJvdGggcHB4X2Rlcml2aW5nIGFuZFxuICAgcHB4bGliX2Rlcml2aW5nIGludGVycHJldHMgW0BAZGVyaXZpbmddIGF0dHJpYnV0ZXMuXG5cbiAgIFRoaXMgY29tcGxleGl0eSBpcyBob3JyaWJsZSwgYnV0IGluIHByYWN0aWNlIHdlIGRvbid0IGNhcmUgYXMgW2F0dHJzXSBpcyBhbHdheXMgYSBsaXN0XG4gICBvZiBvbmUgZWxlbWVudDsgaXQgb25seSBoYXMgW0BAZGVyaXZpbmddLlxuKilcbmxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cnMgcmYgfml0ZW1zIH5leHBhbmRlZF9pdGVtcyB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSlcbiAgICB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5UIGdyb3VwKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGl0ZW1zID4+PSBmdW4gZzEgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbXMgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWVzLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTpncm91cC5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBncm91cC5leHBhbmQgfmN0eHQgcmYgZXhwYW5kZWRfaXRlbXMgdmFsdWVzIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKGFjYywgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSkpXG5cbmxldCBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cnMgfml0ZW0gfmV4cGFuZGVkX2l0ZW0gfmxvYyB+YmFzZV9jdHh0IH5lbWJlZF9lcnJvcnNcbiAgICA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfaW5saW5lLlQgYSkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMSAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmEuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gYS5leHBhbmQgfmN0eHQgZXhwYW5kZWRfaXRlbSB2YWx1ZSBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChhY2MsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpKVxuXG5tb2R1bGUgRXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIGxpc3QgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG5lbmRcblxuY2xhc3MgbWFwX3RvcF9kb3duID8oZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3ApXG4gID8oZ2VuZXJhdGVkX2NvZGVfaG9vayA9IEdlbmVyYXRlZF9jb2RlX2hvb2subm9wKSA/KGVtYmVkX2Vycm9ycyA9IGZhbHNlKSBydWxlc1xuICA9XG4gIGxldCBob29rID0gZ2VuZXJhdGVkX2NvZGVfaG9vayBpblxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gICAgUnVsZS5maWx0ZXIgU3BlY2lhbF9mdW5jdGlvbiBydWxlcyB8PiB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9uc1xuICBpblxuICBsZXQgY29uc3RhbnRzID1cbiAgICBSdWxlLmZpbHRlciBDb25zdGFudCBydWxlc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGMgOiBSdWxlLkNvbnN0YW50LnQpIC0+ICgoYy5zdWZmaXgsIGMua2luZCksIGMuZXhwYW5kKSlcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0X2V4blxuICBpblxuICBsZXQgZXh0ZW5zaW9ucyA9IFJ1bGUuZmlsdGVyIEV4dGVuc2lvbiBydWxlcyBpblxuICBsZXQgY2xhc3NfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZXhwciBleHRlbnNpb25zXG4gIGFuZCBjbGFzc19maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNvcmVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY29yZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGV4cHJlc3Npb24gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmV4cHJlc3Npb24gZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV9leHByIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBwYXR0ZXJuID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5wYXR0ZXJuIGV4dGVuc2lvbnNcbiAgYW5kIHNpZ25hdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zaWduYXR1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc3RydWN0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgcHB4X2ltcG9ydCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuUHB4X2ltcG9ydCBleHRlbnNpb25zIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbHMsIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbHMsIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dHMsIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dHMsIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbnMsIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbnMsIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgbWFwX25vZGUgPSBtYXBfbm9kZSB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lID0gaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2lubGluZSA9IGhhbmRsZV9hdHRyX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgYXMgc3VwZXJcblxuICAgICgqIE5vIHBvaW50IHJlY3Vyc2luZyBpbnRvIGV2ZXJ5IGxvY2F0aW9uICopXG4gICAgbWV0aG9kISBsb2NhdGlvbiBfIHggPSByZXR1cm4geFxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY29yZV90eXBlIGNvcmVfdHlwZSBzdXBlciNjb3JlX3R5cGUgeC5wdHlwX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnBhdHRlcm4gcGF0dGVybiBzdXBlciNwYXR0ZXJuIHgucHBhdF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSA9XG4gICAgICBsZXQgd2l0aF9jb250ZXh0ID1cbiAgICAgICAgKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+Pj0gZnVuIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIGUpXG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgRXhwcmVzc2lvblxuICAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIF1cbiAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmVcbiAgICAgICAgICAgID4+fCBmdW4gZSAtPlxuICAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgYmFzZV9jdHh0LCBlKVxuICAgICAgaW5cbiAgICAgIHdpdGhfY29udGV4dCA+Pj0gZnVuIChiYXNlX2N0eHQsIGUpIC0+XG4gICAgICBsZXQgZXhwYW5kZWQgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgICAgbWFwX25vZGUgRUMuZXhwcmVzc2lvbiBleHByZXNzaW9uXG4gICAgICAgICAgICAgIChmdW4gXyBlIC0+IHJldHVybiBlKVxuICAgICAgICAgICAgICBlLnBleHBfbG9jIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgXyAtPiByZXR1cm4gZVxuICAgICAgaW5cbiAgICAgIGV4cGFuZGVkID4+PSBmdW4gZSAtPlxuICAgICAgbGV0IGV4cGFuZF9jb25zdGFudCBraW5kIGNoYXIgdGV4dCA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgY29uc3RhbnRzIChjaGFyLCBraW5kKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgU29tZSBleHBhbmQgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCAoZXhwYW5kIGUucGV4cF9sb2MgdGV4dClcbiAgICAgIGluXG4gICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfYXBwbHkgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgaWQ7IF8gfSBhcyBmdW5jKSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmNcbiAgICAgICAgICAgICAgICAgICAgYXJnc1xuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2lkZW50IGlkIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2ludGVnZXIgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEludGVnZXIgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKGUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9mbG9hdCAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgRmxvYXQgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKGUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuXG4gICAgKCogUHJlLWNvbmRpdGlvbnM6XG4gICAgICAgLSBlLnBleHBfZGVzYyA9IFBleHBfYXBwbHkoZnVuYywgYXJncylcbiAgICAgICAtIGZ1bmMucGV4cF9kZXNjID0gUGV4cF9pZGVudCBfXG4gICAgKilcbiAgICBtZXRob2QgcHJpdmF0ZSBwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgPVxuICAgICAgbGV0IHsgcGV4cF9kZXNjID0gXzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGUgaW5cbiAgICAgIGxldCBmdW5jID1cbiAgICAgICAgbGV0IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZnVuYyBpblxuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAgICB7XG4gICAgICAgICAgcGV4cF9kZXNjO1xuICAgICAgICAgIHBleHBfbG9jICgqIGxvY2F0aW9uIGRvZXNuJ3QgbmVlZCB0byBiZSB0cmF2ZXJzZWQgKik7XG4gICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZnVuYyA+Pj0gZnVuIGZ1bmMgLT5cbiAgICAgIGxldCBhcmdzID1cbiAgICAgICAgTGlzdC5tYXAgYXJncyB+ZjooZnVuIChsYWIsIGV4cCkgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZXhwID4+fCBmdW4gZXhwIC0+IChsYWIsIGV4cCkpXG4gICAgICAgIHw+IGNvbWJpbmVfZXJyb3JzXG4gICAgICBpblxuICAgICAgYXJncyA+Pj0gZnVuIGFyZ3MgLT5cbiAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGZ1bmMsIGFyZ3MpO1xuICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgIH1cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlIGNsYXNzX3R5cGUgc3VwZXIjY2xhc3NfdHlwZSB4LnBjdHlfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZV9maWVsZCBjbGFzc190eXBlX2ZpZWxkIHN1cGVyI2NsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgeC5wY3RmX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2V4cHIgY2xhc3NfZXhwciBzdXBlciNjbGFzc19leHByIHgucGNsX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZCB4LnBjZl9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX3R5cGUgbW9kdWxlX3R5cGUgc3VwZXIjbW9kdWxlX3R5cGUgeC5wbXR5X2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICAoKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgeCB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKGJhc2VfY3R4dCwgeClcbiAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgTW9kdWxlX2V4cHJcbiAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSBdXG4gICAgICAgICAgICAgeFxuICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6eFxuICAgICAgICAgICA+PnwgZnVuIHggLT5cbiAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgdHh0IGJhc2VfY3R4dCwgeCkpXG4gICAgICA+Pj0gZnVuIChiYXNlX2N0eHQsIHgpIC0+XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfZXhwciBtb2R1bGVfZXhwciBzdXBlciNtb2R1bGVfZXhwciB4LnBtb2RfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnN0cnVjdHVyZV9pdGVtIHN0cnVjdHVyZV9pdGVtIHN1cGVyI3N0cnVjdHVyZV9pdGVtIHgucHN0cl9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc2lnbmF0dXJlX2l0ZW0gc2lnbmF0dXJlX2l0ZW0gc3VwZXIjc2lnbmF0dXJlX2l0ZW0geC5wc2lnX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19zdHJ1Y3R1cmUgYmFzZV9jdHh0IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gPVxuICAgICAgc2VsZiNwYXR0ZXJuIGJhc2VfY3R4dCBwY3N0cl9zZWxmID4+PSBmdW4gcGNzdHJfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjZl9sb2MpXG4gICAgICAgIGJhc2VfY3R4dCBwY3N0cl9maWVsZHNcbiAgICAgID4+fCBmdW4gcGNzdHJfZmllbGRzIC0+IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5QcHhfaW1wb3J0IHBweF9pbXBvcnQgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiB4LnB0eXBlX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19zaWduYXR1cmUgYmFzZV9jdHh0IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gPVxuICAgICAgc2VsZiNjb3JlX3R5cGUgYmFzZV9jdHh0IHBjc2lnX3NlbGYgPj49IGZ1biBwY3NpZ19zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfdHlwZV9maWVsZCBjbGFzc190eXBlX2ZpZWxkIHN1cGVyI2NsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGN0Zl9sb2MpXG4gICAgICAgIGJhc2VfY3R4dCBwY3NpZ19maWVsZHNcbiAgICAgID4+fCBmdW4gcGNzaWdfZmllbGRzIC0+IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgICgqIFRPRE86IHRyeSB0byBmYWN0b3JpemUgI3N0cnVjdHVyZSBhbmQgI3NpZ25hdHVyZSB3aXRob3V0IG1ldGEtcHJvZ3JhbW1pbmcgKilcbiAgICAoKiQqKVxuICAgIG1ldGhvZCEgc3RydWN0dXJlIGJhc2VfY3R4dCBzdCA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFN0cnVjdHVyZV9pdGVtIGl0ZW0ucHN0cl9sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc3RyX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc3RydWN0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFN0cnVjdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHN0cl9sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHN0cl9kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHN0cnVjdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFN0cnVjdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzdHJfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc3RyX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHN0cl9kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHJmLCB0ZHMpLCBQc3RyX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9tb2R0eXBlIG10ZCwgUHN0cl9tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHRlLCBQc3RyX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBlYywgUHN0cl9leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG4gICAgbWV0aG9kISBzaWduYXR1cmUgYmFzZV9jdHh0IHNnID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU2lnbmF0dXJlX2l0ZW0gaXRlbS5wc2lnX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzaWdfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zaWduYXR1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU2lnbmF0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc2cgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc2lnbmF0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHNpZ19sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzaWdfZGVzYywgZXhwYW5kZWRfaXRlbS5wc2lnX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAocmYsIHRkcyksIFBzaWdfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgbXRkLCBQc2lnX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBleHQgdGUsIFBzaWdfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGVjLCBQc2lnX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCopXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4dGVuc2lvbiBvZiAnYSBFeHRlbnNpb24uQ29udGV4dC50XG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgb2YgJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudFxuXG4gIGxldCBwYXJlbiBwcCBwcGYgeCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIoJWEpXCIgcHAgeFxuXG4gIGxldCBwcmludGVyIDogdHlwZSBhLiBhIHQgLT4gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXIgLT4gYSAtPiB1bml0ID1cbiAgICBsZXQgb3BlbiBFeHRlbnNpb24uQ29udGV4dCBpblxuICAgIGxldCBvcGVuIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0IGluXG4gICAgZnVuY3Rpb25cbiAgICB8IEV4dGVuc2lvbiBDbGFzc19leHByIC0+IFBwcmludGFzdC5jbGFzc19leHByXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZSAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDb3JlX3R5cGUgLT4gcGFyZW4gUHByaW50YXN0LmNvcmVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIEV4cHJlc3Npb24gLT4gcGFyZW4gUHByaW50YXN0LmV4cHJlc3Npb25cbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfZXhwciAtPiBQcHJpbnRhc3QubW9kdWxlX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfdHlwZSAtPiBQcHJpbnRhc3QubW9kdWxlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBQYXR0ZXJuIC0+IHBhcmVuIFBwcmludGFzdC5wYXR0ZXJuXG4gICAgfCBFeHRlbnNpb24gU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gUHB4X2ltcG9ydCAtPiBQcHJpbnRhc3QudHlwZV9kZWNsYXJhdGlvblxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBkYXRhID1cbiAgICB8IFZhbHVlcyA6XG4gICAgICAgICdhIENvbnRleHQudCAqICdhIENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnNpbmdsZV9vcl9tYW55XG4gICAgICAgIC0+IGRhdGFcbiAgICB8IFRleHQgb2Ygc3RyaW5nXG5cbiAgdHlwZSB0ID0geyBzdGFydCA6IExleGluZy5wb3NpdGlvbjsgc3RvcCA6IExleGluZy5wb3NpdGlvbjsgZGF0YSA6IGRhdGEgfVxuXG4gIGxldCBtYWtlIH5jb250ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9XG4gICAgeyBzdGFydDsgc3RvcDsgZGF0YSA9IFZhbHVlcyAoY29udGV4dCwgcmVwbCkgfVxuXG4gIGxldCBtYWtlX3RleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID0geyBzdGFydDsgc3RvcDsgZGF0YSA9IFRleHQgcmVwbCB9XG5cbiAgbGV0IHRleHQgYmxvY2sgPVxuICAgIG1hdGNoIGJsb2NrLmRhdGEgd2l0aFxuICAgIHwgVGV4dCBzIC0+IHNcbiAgICB8IFZhbHVlcyAoY29udGV4dCwgZ2VuZXJhdGVkKSAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IHByaW50ZXIgPSBDb250ZXh0LnByaW50ZXIgY29udGV4dCBpblxuICAgICAgICAgIG1hdGNoIGdlbmVyYXRlZCB3aXRoXG4gICAgICAgICAgfCBTaW5nbGUgeCAtPiBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcmludGVyIHhcbiAgICAgICAgICB8IE1hbnkgbCAtPlxuICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gcHBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIgcHBmIHg7XG4gICAgICAgICAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSkpXG4gICAgICAgICAgICAgICAgbFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfd3MgPSBmdW5jdGlvbiAnICcgfCAnXFx0JyB8ICdcXHInIC0+IHRydWUgfCBfIC0+IGZhbHNlIGluXG4gICAgICAgIGxldCBzdHJpcF93cyBzIGkgbGVuID1cbiAgICAgICAgICBsZXQgbGVuID0gcmVmIGxlbiBpblxuICAgICAgICAgIHdoaWxlICFsZW4gPiAwICYmIGlzX3dzIHMuW2kgKyAhbGVuIC0gMV0gZG9cbiAgICAgICAgICAgIGxlbiA6PSAhbGVuIC0gMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgU3RyaW5nLnN1YiBzIH5wb3M6aSB+bGVuOiFsZW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgcG9zID1cbiAgICAgICAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gW11cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgaWR4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICdcXG4nIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc3RyaXBfd3MgcyBwb3MgKGlkeCAtIHBvcykgOjogXCJcXG5cIiA6OiBsb29wIHMgKGlkeCArIDEpXG4gICAgICAgIGluXG4gICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChsb29wIHMgMClcbmVuZFxuXG5vcGVuIFJlcGxhY2VtZW50XG5cbm1vZHVsZSBSZXBsYWNlbWVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwbGFjZW1lbnQudCBsaXN0XG5cbiAgKCogTWVyZ2UgbG9jYXRpb25zIG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gT3ZlcmxhcHBpbmcgbG9jYXRpb25zIGFyZSBtZXJnZWQgaW50byBvbmUuIFRoZVxuICAgICByZXN1bHQgaXMgc29ydGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSB0byB0aGUgZW5kLiAqKVxuICBsZXQgY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzID1cbiAgICBMaXN0Lml0ZXIgcmVwbHMgfmY6KGZ1biByZXBsIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgU3RyaW5nLiggPD4gKSByZXBsLnN0YXJ0LnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgICAgfHwgU3RyaW5nLiggPD4gKSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlbmFtZSlcbiAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogdGhlIHJld3JpdGluZyBjb250YWlucyBwYXJ0cyBmcm9tIGFub3RoZXIgZmlsZS5cXG5cXFxuICAgICAgICAgICAgIEl0IGlzIHRvbyBjb21wbGljYXRlZCB0byByZWNvbmNpbGUgaXQgd2l0aCB0aGUgc291cmNlOiAlcyBvciAlcyBcXFxuICAgICAgICAgICAgIGFuZCAlc1wiXG4gICAgICAgICAgICByZXBsLnN0YXJ0LnBvc19mbmFtZSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWU7XG4gICAgICAgIGFzc2VydCAocmVwbC5zdGFydC5wb3NfY251bSA8PSByZXBsLnN0b3AucG9zX2NudW0pKTtcbiAgICBsZXQgcmVwbHMgPVxuICAgICAgTGlzdC5zb3J0IHJlcGxzIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgZCA9IGNvbXBhcmUgYS5zdGFydC5wb3NfY251bSBiLnN0b3AucG9zX2NudW0gaW5cbiAgICAgICAgICBpZiBkID0gMCB0aGVuXG4gICAgICAgICAgICAoKiBQdXQgdGhlIGxhcmdlc3QgZmlyc3QsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyBbZmlsdGVyXSBmdW5jdGlvbnMgYWx3YXlzIHBpY2tzIHVwXG4gICAgICAgICAgICAgICB0aGUgbGFydGVzdCBmaXJzdCB3aGVuIHNldmVyYWwgZ2VuZXJhdGVkIHJlcGxzIHN0YXJ0IGF0IHRoZSBzYW1lIHBvc2l0aW9uICopXG4gICAgICAgICAgICBjb21wYXJlIGIuc3RvcC5wb3NfY251bSBhLnN0b3AucG9zX2NudW1cbiAgICAgICAgICBlbHNlIGQpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBwcmV2IHJlcGxzIH5hY2MgPVxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiAocHJldiA6OiBhY2MpXG4gICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPiByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+PSByZXBsLnN0b3AucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICAoKiBbcmVwbF0gaXMgaW5jbHVkZWQgaW4gW3ByZXZdID0+IHNraXAgW3JlcGxdICopXG4gICAgICAgICAgICAgIGZpbHRlciBwcmV2IHJlcGxzIH5hY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiBsb2NhdGlvbnMgb2YgZ2VuZXJhdGVkIGNvZGUgYXJlIG92ZXJsYXBwaW5nLCBcXFxuICAgICAgICAgICAgICAgICBjYW5ub3QgcmVjb25jaWxlXCJcbiAgICAgICAgICAgICAgICB+bG9jOlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPSByZXBsLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsb2NfZW5kID0gcHJldi5zdG9wO1xuICAgICAgICAgICAgICAgICAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGZpbHRlciByZXBsIHJlcGxzIH5hY2M6KHByZXYgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggcmVwbHMgd2l0aCBbXSAtPiBbXSB8IHJlcGwgOjogcmVwbHMgLT4gZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzpbXVxuZW5kXG5cbmxldCBjb3VudF9uZXdsaW5lcyBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBTdHJpbmcuaXRlciBzIH5mOihmdW5jdGlvbiAnXFxuJyAtPiBuIDo9ICFuICsgMSB8IF8gLT4gKCkpO1xuICAhblxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfYmVnaW4gPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBCRUdJTiB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9lbmQgPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBFTkQgICB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbnR5cGUgbW9kZSA9IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2Nrc1xudHlwZSB0YXJnZXQgPSBPdXRwdXQgb2YgbW9kZSB8IENvcnJlY3RlZFxuXG5sZXQgc2tpcF9ibGFua19lb2wgY29udGVudHMgKHBvcyA6IExleGluZy5wb3NpdGlvbikgPVxuICBsZXQgcmVjIGxvb3AgY251bSA9XG4gICAgaWYgY251bSA9IFN0cmluZy5sZW5ndGggY29udGVudHMgdGhlbiB7IHBvcyB3aXRoIHBvc19jbnVtID0gY251bSB9XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggY29udGVudHMuW2NudW1dIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiBsb29wIChjbnVtICsgMSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Mgd2l0aFxuICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBjbnVtICsgMTtcbiAgICAgICAgICB9XG4gICAgICB8IF8gLT4gcG9zXG4gIGluXG4gIGxvb3AgcG9zLnBvc19jbnVtXG5cbmxldCB3aXRoX291dHB1dCB+c3R5bGVyIH4oa2luZCA6IEtpbmQudCkgZm4gfmYgPVxuICBtYXRjaCBzdHlsZXIgd2l0aFxuICB8IE5vbmUgLT4gd2l0aF9vdXRwdXQgZm4gfmJpbmFyeTpmYWxzZSB+ZlxuICB8IFNvbWUgY21kIC0+XG4gICAgICBsZXQgdG1wX2ZuLCBvYyA9XG4gICAgICAgIFN0ZGxpYi5GaWxlbmFtZS5vcGVuX3RlbXBfZmlsZSBcInBweGxpYl9kcml2ZXJcIlxuICAgICAgICAgIChtYXRjaCBraW5kIHdpdGggSW1wbCAtPiBcIi5tbFwiIHwgSW50ZiAtPiBcIi5tbGlcIilcbiAgICAgIGluXG4gICAgICBsZXQgY21kID1cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyVzXCIgY21kXG4gICAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSB0bXBfZm4pXG4gICAgICAgICAgKG1hdGNoIGZuIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBmbiAtPiBcIiA+IFwiIF4gU3RkbGliLkZpbGVuYW1lLnF1b3RlIGZuKVxuICAgICAgaW5cbiAgICAgIGxldCBuID1cbiAgICAgICAgRXhuLnByb3RlY3R4IHRtcF9mbiB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZjooZnVuIF8gLT5cbiAgICAgICAgICAgIEV4bi5wcm90ZWN0eCBvYyB+ZmluYWxseTpjbG9zZV9vdXQgfmY7XG4gICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kKVxuICAgICAgaW5cbiAgICAgIGlmIG4gPD4gMCB0aGVuIChcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJjb21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgJWQ6ICVzXFxuXCIgbiBjbWQ7XG4gICAgICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCByZWNvbmNpbGUgP3N0eWxlciAocmVwbHMgOiBSZXBsYWNlbWVudHMudCkgfmtpbmQgfmNvbnRlbnRzIH5pbnB1dF9maWxlbmFtZVxuICAgIH5vdXRwdXQgfmlucHV0X25hbWUgfnRhcmdldCA9XG4gIGxldCByZXBscyA9IFJlcGxhY2VtZW50cy5jaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgaW5cbiAgbGV0IG91dHB1dF9uYW1lID0gbWF0Y2ggb3V0cHV0IHdpdGggTm9uZSAtPiBcIjxzdGRvdXQ+XCIgfCBTb21lIGZuIC0+IGZuIGluXG4gIHdpdGhfb3V0cHV0IG91dHB1dCB+c3R5bGVyIH5raW5kIH5mOihmdW4gb2MgLT5cbiAgICAgIGxldCBjb3B5X2lucHV0IHBvcyB+dXBfdG8gfmxpbmUgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dCA9XG4gICAgICAgIGxldCBwb3MgPSBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3MgaW5cbiAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgdXBfdG8gdGhlbiAoXG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcbiUqc1wiIHBvcy5wb3NfbG51bSBpbnB1dF9uYW1lXG4gICAgICAgICAgICAgICAgKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgfCBDb3JyZWN0ZWQgLT4gKCkpO1xuICAgICAgICAgIG91dHB1dF9zdWJzdHJpbmcgb2MgY29udGVudHMgfnBvczpwb3MucG9zX2NudW1cbiAgICAgICAgICAgIH5sZW46KHVwX3RvIC0gcG9zLnBvc19jbnVtKTtcbiAgICAgICAgICBsZXQgbGluZSA9IHJlZiAobGluZSArIDEpIGluXG4gICAgICAgICAgZm9yIGkgPSBwb3MucG9zX2NudW0gdG8gdXBfdG8gLSAxIGRvXG4gICAgICAgICAgICBpZiBDaGFyLmVxdWFsIGNvbnRlbnRzLltpXSAnXFxuJyB0aGVuIGxpbmUgOj0gIWxpbmUgKyAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgbGluZSA9ICFsaW5lIGluXG4gICAgICAgICAgaWYgKG5vdCBpc190ZXh0KSAmJiBDaGFyLiggPD4gKSBjb250ZW50cy5bdXBfdG8gLSAxXSAnXFxuJyB0aGVuIChcbiAgICAgICAgICAgIG91dHB1dF9jaGFyIG9jICdcXG4nO1xuICAgICAgICAgICAgbGluZSArIDEpXG4gICAgICAgICAgZWxzZSBsaW5lKVxuICAgICAgICBlbHNlIGxpbmVcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgKGNvcHlfaW5wdXQgcG9zIH51cF90bzooU3RyaW5nLmxlbmd0aCBjb250ZW50cykgfmxpbmVcbiAgICAgICAgICAgICAgICAgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dDpmYWxzZVxuICAgICAgICAgICAgICAgIDogaW50KVxuICAgICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICAgIGxldCBpc190ZXh0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgY29weV9pbnB1dCBwb3MgfnVwX3RvOnJlcGwuc3RhcnQucG9zX2NudW0gfmxpbmUgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgICAgIH5pc190ZXh0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgbWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG5cIiAobGluZSArIDEpIG91dHB1dF9uYW1lO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW47XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IENvcnJlY3RlZCAtPiBsaW5lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscyB+bGFzdF9pc190ZXh0OmlzX3RleHRcbiAgICAgIGFuZCBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHNcbiAgICAgICAgICB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+IGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgIHwgcmVwbCA6OiByZXBscycgLT5cbiAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBwb3MucG9zX2NudW0gPCByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICAgIGxldCBsYXN0X2lzX3RleHQgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscycgfmxhc3RfaXNfdGV4dFxuICAgICAgYW5kIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9lbmQpO1xuICAgICAgICBsb29wIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBpbnB1dF9uYW1lO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IHsgc3RhcnQgPSB7IHBvc19jbnVtID0gMDsgXyB9OyBfIH0gOjogXyAtPlxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW4pO1xuICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZVxuICAgICAgfCBfIC0+IGxvb3AgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZSlcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBuZXh0X2lkIDogaW50O1xuICBtdXRhYmxlIGJpbmRpbmdzIDogUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgbGlzdDtcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbmV4dF9pZCA9IDA7IGJpbmRpbmdzID0gW10gfVxuXG5sZXQgc2FuaXRpemUgdCBlID1cbiAgbWF0Y2ggdC5iaW5kaW5ncyB3aXRoXG4gIHwgW10gLT4gZVxuICB8IGJpbmRpbmdzIC0+XG4gICAgICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBlLnBleHBfbG9jIGluXG4gICAgICBBc3QucGV4cF9sZXQgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGVcblxubGV0IHF1b3RlIHQgKGUgOiBleHByZXNzaW9uKSA9XG4gIGxldCBsb2MgPSBlLnBleHBfbG9jIGluXG4gIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGxvYyBpblxuICBsZXQgbmFtZSA9IFwiX19cIiBeIEludC50b19zdHJpbmcgdC5uZXh0X2lkIGluXG4gIGxldCBiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICAoKiBPcHRpbWl6ZSBpZGVudGlmaWVyIHF1b3RpbmcgYnkgYXZvaWRpbmcgY2xvc3VyZS5cbiAgICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXBweC9wcHhfZGVyaXZpbmcvcHVsbC8yNTIuICopXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+IChlLCBBc3QuZXZhciBuYW1lKVxuICAgIHwgXyAtPlxuICAgICAgICBsZXQgYmluZGluZ19leHByID1cbiAgICAgICAgICBBc3QucGV4cF9mdW4gTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAobGV0IHVuaXQgPSBBc3RfYnVpbGRlci5EZWZhdWx0LkxvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiIGluXG4gICAgICAgICAgICAgQXN0LnBwYXRfY29uc3RydWN0IHVuaXQgTm9uZSlcbiAgICAgICAgICAgIGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHF1b3RlZF9leHByID0gQXN0LmVhcHBseSAoQXN0LmV2YXIgbmFtZSkgWyBBc3QuZXVuaXQgXSBpblxuICAgICAgICAoYmluZGluZ19leHByLCBxdW90ZWRfZXhwcilcbiAgaW5cbiAgbGV0IGJpbmRpbmcgPVxuICAgIGxldCBwYXQgPSBBc3QucHZhciBuYW1lIGluXG4gICAgQXN0LnZhbHVlX2JpbmRpbmcgfnBhdCB+ZXhwcjpiaW5kaW5nX2V4cHJcbiAgaW5cbiAgdC5iaW5kaW5ncyA8LSBiaW5kaW5nIDo6IHQuYmluZGluZ3M7XG4gIHQubmV4dF9pZCA8LSB0Lm5leHRfaWQgKyAxO1xuICBxdW90ZWRfZXhwclxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBta19hdHRyX25vbG9jIHR4dCA9IEFzdF9oZWxwZXIuQXR0ci5tayBMb2NhdGlvbi57IHR4dDsgbG9jID0gbm9uZSB9XG5sZXQgaGlkZV9hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmhpZGVcIiAoUFN0ciBbXSlcbmxldCBmb2N1c19hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmZvY3VzXCIgKFBTdHIgW10pXG5cbmxldCBoaWRlX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgaGlkZV9leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cbiIsIm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOb25faW50ZXJzZWN0aW5nX3JhbmdlcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpbnNlcnQgOiBub2RlX25hbWU6c3RyaW5nIC0+IExvY2F0aW9uLnQgLT4gdCAtPiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG5cbiAgdmFsIGNvdmVyZWRfYnkgOiB0IC0+IGxvYzpMb2NhdGlvbi50IC0+IGJvb2xcbiAgKCoqIFtjb3ZlcmVkX2J5IHQgfmxvYyA9IHRydWVdIGlmZiBbdF0gaXMgY292ZXJlZCBieSBbbG9jXSAqKVxuXG4gIHZhbCBmaW5kX291dHNpZGUgOiBMb2NhdGlvbi50IC0+IHQgLT4gc3RyaW5nICogTG9jYXRpb24udFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtaW5fcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICBtYXhfcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICByYW5nZXMgOiAoc3RyaW5nICogTG9jYXRpb24udCkgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWluX3BvcyA9IE5vbmU7IG1heF9wb3MgPSBOb25lOyByYW5nZXMgPSBbXSB9XG5cbiAgbGV0IHJlYyBpbnNlcnQgcmFuZ2VzICgobm9kZV9uYW1lLCBub2RlX2xvYykgYXMgbm9kZSkgPVxuICAgIG1hdGNoIHJhbmdlcyB3aXRoXG4gICAgfCBbXSAtPiBbIG5vZGUgXVxuICAgIHwgKCh4X25hbWUsIHhfbG9jKSBhcyB4KSA6OiB4cyAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbiBpblxuICAgICAgICBpZiBjb21wYXJlX3BvcyBub2RlX2xvYy5sb2Nfc3RhcnQgeF9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICBub2RlIDo6IHggOjogeHNcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlX3BvcyB4X2xvYy5sb2Nfc3RhcnQgbm9kZV9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICB4IDo6IGluc2VydCB4cyBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweCwgJXMgb3ZlcmxhcHMgd2l0aCAlcyBhdCBsb2NhdGlvbjpALiVhXCJcbiAgICAgICAgICAgIG5vZGVfbmFtZSB4X25hbWUgTG9jYXRpb24ucHJpbnQgeF9sb2NcblxuICBsZXQgbWluX3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1pbl9wb3MgcDEgcDIpXG5cbiAgbGV0IG1heF9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5tYXhfcG9zIHAxIHAyKVxuXG4gIGxldCBsb25nZXN0X2ZpcnN0IGwxIGwyIH5zdG9wX2FmdGVyID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgeXMgbiA9XG4gICAgICBtYXRjaCAoeHMsIHlzLCBuKSB3aXRoXG4gICAgICB8IFtdLCBfLCBfIHwgXywgXywgMCAtPiAobDIsIGwxKVxuICAgICAgfCBfLCBbXSwgXyAtPiAobDEsIGwyKVxuICAgICAgfCBfIDo6IHhzLCBfIDo6IHlzLCBuIC0+IGxvb3AgeHMgeXMgKG4gLSAxKVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBzdG9wX2FmdGVyXG5cbiAgbGV0IHVuaW9uIHQxIHQyID1cbiAgICBsZXQgaW5pdCwgbCA9IGxvbmdlc3RfZmlyc3QgdDEucmFuZ2VzIHQyLnJhbmdlcyB+c3RvcF9hZnRlcjo0MiBpblxuICAgIGxldCByYW5nZXMgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOmluc2VydCBpblxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIHQxLm1pbl9wb3MgdDIubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIHQxLm1heF9wb3MgdDIubWF4X3BvcztcbiAgICAgIHJhbmdlcztcbiAgICB9XG5cbiAgbGV0IGluc2VydCB+bm9kZV9uYW1lIGxvYyB0ID1cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyAoU29tZSBsb2MubG9jX3N0YXJ0KSB0Lm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyAoU29tZSBsb2MubG9jX2VuZCkgdC5tYXhfcG9zO1xuICAgICAgcmFuZ2VzID0gaW5zZXJ0IHQucmFuZ2VzIChub2RlX25hbWUsIGxvYyk7XG4gICAgfVxuXG4gIGxldCBjb3ZlcmVkX2J5IHQgfmxvYyA9XG4gICAgbWF0Y2ggKHQubWluX3BvcywgdC5tYXhfcG9zKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgbWluX3BvcywgU29tZSBtYXhfcG9zIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1pbl9wb3MgbG9jLmxvY19zdGFydCA+PSAwXG4gICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1heF9wb3MgbG9jLmxvY19lbmQgPD0gMFxuICAgIHwgXywgXyAtPlxuICAgICAgICAoKiB0aGVyZSBhcmUgbm8gb3BlbiByYW5nZXMgKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGZpbmRfb3V0c2lkZSBsb2MgdCA9XG4gICAgTGlzdC5maW5kIHQucmFuZ2VzIH5mOihmdW4gKF8sIGwpIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2Nfc3RhcnQgbC5sb2Nfc3RhcnQgPiAwXG4gICAgICAgIHx8IExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGwubG9jX2VuZCA8IDApXG5lbmRcblxubGV0IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG10eV9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbXR5X2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtdHlfbG9jID0geyByZXMucG10eV9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG1vZF9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbW9kX2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtb2RfbG9jID0geyByZXMucG1vZF9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2MgPVxuICBMaXN0LmZvcl9hbGwgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBhdHRyLmF0dHJfbG9jLmxvY19lbmQgPj0gMClcblxubGV0IGZpbGUgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5sZXQgc2FtZV9maWxlX3NvX2ZhciA9IHJlZiB0cnVlXG5cbmxldCBzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBmbmFtZSA9XG4gICgqIFRPRE86IHJlbW92ZSB1c2VzIG9mIExvY2F0aW9uLm5vbmUgZnJvbSB0aGUgcHB4ZXMuICopXG4gIGlmIFN0cmluZy5lcXVhbCBmbmFtZSBcIl9ub25lX1wiIHRoZW4gdHJ1ZSAoKiBkbyBub3RoaW5nIGZvciBub3cuICopXG4gIGVsc2VcbiAgICBtYXRjaCAhZmlsZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGZpbGUgOj0gU29tZSBmbmFtZTtcbiAgICAgICAgdHJ1ZVxuICAgIHwgU29tZSBvcmlnX2ZuYW1lIC0+XG4gICAgICAgIFN0cmluZy5lcXVhbCBvcmlnX2ZuYW1lIGZuYW1lXG4gICAgICAgIHx8XG4gICAgICAgIChzYW1lX2ZpbGVfc29fZmFyIDo9IGZhbHNlO1xuICAgICAgICAgZmFsc2UpXG5cbmxldCBzaG91bGRfaWdub3JlIGxvYyBhdHRycyA9XG4gICgqIElmIHRoZSBmaWxlbmFtZSBjaGFuZ2VkLCB0aGVuIHRoZXJlIHdlcmUgbGluZSBkaXJlY3RpdmVzLCBhbmQgdGhlIGxvY2F0aW9uc1xuICAgICBhcmUgYWxsIG1lc3NlZCB1cC4gKilcbiAgKG5vdCAoc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgbG9jLmxvY19zdGFydC5wb3NfZm5hbWUpKVxuICB8fCAoKiBJZ25vcmUgdGhpbmdzIGV4cGxpY2l0bHkgbWFya2VkLiAqKVxuICBMaXN0LmV4aXN0c1xuICAgIH5mOihmdW4gYXR0ciAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGF0dHIuYXR0cl9uYW1lLnR4dFxuICAgICAgICBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZS5hdHRyX25hbWUudHh0KVxuICAgIGF0dHJzXG5cbmxldCByZWMgZXh0cmFjdF9jb25zdHJhaW50IGUgPVxuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgfCBQZXhwX2NvZXJjZSAoZSwgXywgY3QpIC0+IFNvbWUgKGUsIGN0KVxuICB8IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKSAtPlxuICAgICAgT3B0aW9uLm1hcCAoZXh0cmFjdF9jb25zdHJhaW50IGV4cCkgfmY6KGZ1biAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3QgKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRvX2NoZWNrIH5ub2RlX25hbWUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jcyA9XG4gIGlmIG5vdCAhc2FtZV9maWxlX3NvX2ZhciB0aGVuIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gIGVsc2UgaWYgbm9kZV9sb2MubG9jX2dob3N0IHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy51bmlvbiBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG4gIGVsc2UgaWYgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuY292ZXJlZF9ieSBjaGlsZHJlbnNfbG9jcyB+bG9jOm5vZGVfbG9jIHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZSBub2RlX2xvYyBzaWJsaW5nc19sb2NzXG4gIGVsc2VcbiAgICBsZXQgY2hpbGRfbmFtZSwgY2hpbGRfbG9jID1cbiAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmZpbmRfb3V0c2lkZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgIGluXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHg6QCB0aGlzICVzIGlzIGJ1aWx0IGZyb20gYSVzIHdob3NlIGxvY2F0aW9uIGlzIFxcXG4gICAgICAgb3V0c2lkZSBvZiB0aGlzIG5vZGUncy5ALkNoaWxkICVzIGZvdW5kIGF0OkAgJWFcIlxuICAgICAgbm9kZV9uYW1lXG4gICAgICAoKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IGNoaWxkX25hbWUgMCB3aXRoXG4gICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgLT4gXCJuIFwiXG4gICAgICAgfCBfIC0+IFwiIFwiKVxuICAgICAgXiBjaGlsZF9uYW1lKVxuICAgICAgY2hpbGRfbmFtZSBMb2NhdGlvbi5wcmludCBjaGlsZF9sb2NcblxubGV0IGVuZm9yY2VfaW52YXJpYW50cyBmbmFtZSA9XG4gIGxldCAoKSA9IGZpbGUgOj0gZm5hbWUgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW05vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAoKiBUT0RPOiB3ZSBzaG91bGQgZ2VuZXJhdGUgYSBjbGFzcyB3aGljaCBlbmZvcmNlcyB0aGUgbG9jYXRpb24gaW52YXJpYW50LlxuICAgICAgIEFuZCB0aGVuIHdlIHNob3VsZCBvbmx5IG92ZXJyaWRlIHRoZSBtZXRob2RzIHdoZXJlIHdlIG5lZWQgYW4gZXNjYXBlXG4gICAgICAgaGF0Y2ggYmVjYXVzZSB0aGUgcGFyc2VyIGlzbid0IGRvaW5nIHRoZSByaWdodCB0aGluZy5cblxuICAgICAgIFRoYXQgd291bGQgZW5zdXJlIHRoYXQgd2Ugc3RheSB1cCB0byBkYXRlIGFzIHRoZSBBU1QgY2hhbmdlcy4gKilcblxuICAgIG1ldGhvZCEgbG9uZ2lkZW50X2xvYyB4IHNpYmxpbmdzID1cbiAgICAgIGlmIHgubG9jLmxvY19naG9zdCB0aGVuIHNpYmxpbmdzXG4gICAgICBlbHNlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lOlwiaWRlbnRcIiB4LmxvYyBzaWJsaW5nc1xuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcmZfbG9jIHgucHJmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI3Jvd19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJyb3cgZmllbGRcIiB4LnByZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvYmplY3RfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb2ZfbG9jIHgucG9mX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb2JqZWN0X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9iamVjdCBmaWVsZFwiIHgucG9mX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgYmluZGluZ19vcCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjYmluZGluZ19vcCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiYmluZGluZyBvcGVyYXRvclwiIHgucGJvcF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2YWxfbG9jIHgucHZhbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGRlc2NyaXB0aW9uXCIgeC5wdmFsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBlX2xvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGRlY2xhcmF0aW9uXCIgeC5wdHlwZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGxkX2xvYyB4LnBsZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImxhYmVsIGRlY2xhcmF0aW9uXCIgeC5wbGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZF9sb2MgeC5wY2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiIHgucGNkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleHRfbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBleHRlbnNpb25cIiB4LnB0eWV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHRfbG9jIHgucGV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHRlbnNpb24gY29uc3RydWN0b3JcIiB4LnBleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0eV9sb2MgeC5wY3R5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZVwiIHgucGN0eV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0Zl9sb2MgeC5wY3RmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlIGZpZWxkXCIgeC5wY3RmX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjaV9sb2MgeC5wY2lfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzXCIgeC5wY2lfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjbF9sb2MgeC5wY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBleHByZXNzaW9uXCIgeC5wY2xfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZl9sb2MgeC5wY2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBmaWVsZFwiIHgucGNmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHNpZ19sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic2lnbmF0dXJlIGl0ZW1cIiB4LnBzaWdfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWRfbG9jIHgucG1kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBkZWNsYXJhdGlvblwiIHgucG1kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtc19sb2MgeC5wbXNfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfc3Vic3RpdHV0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBzdWJzdGl0dXRpb25cIiB4LnBtc19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10ZF9sb2MgeC5wbXRkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIiB4LnBtdGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvcGVuX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb3Blbl9sb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29wZW5faW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvcGVuXCIgeC5wb3Blbl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5waW5jbF9sb2MgeC5waW5jbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJpbmNsdWRlXCIgeC5waW5jbF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzdHJfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInN0cnVjdHVyZSBpdGVtXCIgeC5wc3RyX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWJfbG9jIHgucG1iX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGJpbmRpbmdcIiB4LnBtYl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlICopXG4gICAgKCogdGhlIHR5cGUgY29uc3RyYWludCBpcyBkdXBsaWNhdGVkLiAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZiX2xvYyB4LnB2Yl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIG1hdGNoICh4LnB2Yl9wYXQucHBhdF9kZXNjLCBleHRyYWN0X2NvbnN0cmFpbnQgeC5wdmJfZXhwcikgd2l0aFxuICAgICAgICAgICgqIGxldCB4IDogdHlwZSBhIGIgYy4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgIChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXyA6OiBfLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgKCogbGV0IHggOiAgY3QgPSBlXG4gICAgICAgICAgICAgbGV0IHggOj4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludCAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKFtdLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RwLnB0eXBfbG9jIGN0ZS5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IF9hY2MgPSBzZWxmI2NvcmVfdHlwZSBjdHAgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgYmluZGluZ1wiIHgucHZiX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNVCBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIHR5cGUuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgdHlwZS4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyB4LnBtdHlfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZVwiIHgucG10eV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTUUgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSBleHByLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIGV4cHIuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbW9kX2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgeC5wbW9kX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGV4cHJlc3Npb25cIiB4LnBtb2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNjb3JlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHgucHR5cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvcmUgdHlwZVwiIHgucHR5cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIEFuZCBhZ2FpbiAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHgucGV4cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4cHJlc3Npb25cIiB4LnBleHBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiAuLi4gYW5kIGFnYWluICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI3BhdHRlcm4geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyB4LnBwYXRfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJwYXR0ZXJuXCIgeC5wcGF0X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mICAqKVxuICAgICgqIHRoZSBjb25zdHJ1Y3QgZXF1YWxzIHRoZSBsb2NhdGlvbiBvZiB0aGUgdHlwZV9leGNlcHRpb24gKilcbiAgICAoKiAoYW5kIHNvIGNvdmVycyB0aGUgbG9jYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMpLiAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4bl9sb2MgeC5wdHlleG5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGluaXQgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBsZXQgY2hpbGRzX2xvY3MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGluaXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJzX2xvY3MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcyBpbml0IGluXG4gICAgICAgIGlnbm9yZVxuICAgICAgICAgIChkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGF0dHJzX2xvY3Mgc2libGluZ3NfbG9jcyk7XG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgY2hpbGRzX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlICopXG4gICAgKCogbGhzIGlzIHNvbWV0aW1lcyBpbmNsdWRlZCBpbiB0aGUgcmhzLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHdpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHdpdGhfdHlwZSAoXywgdGRlY2wpIHwgUHdpdGhfdHlwZXN1YnN0IChfLCB0ZGVjbCkgLT5cbiAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gdGRlY2wgc2libGluZ3NfbG9jXG4gICAgICB8IF8gLT4gc3VwZXIjd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiopXG4gICAgKCogLSBGb28ueyBiYXI7IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby5bIGJhcjsgLi4uIF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLiggYmFyOyAuLi4gKSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBtZXRob2QgeCA6IHR5cGUgYS4gLi4uID0gLi4uICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSA8LSBiYXogICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9IDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfcmVjb3JkIChsYWJlbHMsIGV4cHJfbykgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChsaWQsIGUpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIGUucGV4cF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKCogcHVubmluZy4gKilcbiAgICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoZSwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGV4cHJfbyBhY2NcbiAgICAgIHwgUGV4cF9vcGVuXG4gICAgICAgICAgKCh7IHBvcGVuX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfaWRlbnQgbGlkOyBfIH07IF8gfSBhcyBvcG4pLCBlKVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0ID0gMFxuICAgICAgICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX2VuZCBlLnBleHBfbG9jLmxvY19lbmQgPD4gMCAtPlxuICAgICAgICAgICgqIGxldCdzIHJlbG9jYXRlIC4uLiAqKVxuICAgICAgICAgIGxldCBlX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19zdGFydCA9IGxpZC5sb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbl9kZXNjXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChvcG4sIHsgZSB3aXRoIHBleHBfbG9jID0gZV9sb2MgfSkpXG4gICAgICAgICAgICBhY2NcbiAgICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfLCBjdCk7IF8gfSkgLT4gKFxuICAgICAgICAgIG1hdGNoIGV4dHJhY3RfY29uc3RyYWludCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKGUsIGN0ZSkgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0ZS5wdHlwX2xvYyBjdC5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IFBleHBfYXBwbHkgKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGxpZDsgXyB9OyBfIH0sIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBMb25naWRlbnQubGFzdF9leG4gbGlkIHdpdGhcbiAgICAgICAgICB8IGlkXG4gICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggaWQgfnByZWZpeDpcIi5cIlxuICAgICAgICAgICAgICAgICAmJiAoU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKClcIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW11cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie31cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fTwtXCIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbGlzdCAoZnVuIChfLCBlKSAtPiBzZWxmI2V4cHJlc3Npb24gZSkgYXJncyBhY2NcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjogICAgICAgICAgICAgKilcbiAgICAoKiAtIHB1bm5pbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHJlY29yZCBmaWVsZCB3aXRoIHR5cGUgY29uc3RyYWludC4gICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHVucGFjayBsb2NhdGlvbnMgYmVpbmcgaW5jb3JyZWN0IHdoZW4gY29uc3RyYWluZWQgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X3JlY29yZCAobGFiZWxzLCBfKSAtPlxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAobGlkLCBwYXQpIGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IHBhdC5wcGF0X2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBwYXQucHBhdF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICgqIHNpbXBsZSBwdW5uaW5nISAqKVxuICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcCBhY2NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwYXQgYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBhdCBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICB8IFBwYXRfY29uc3RyYWludCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3VucGFjayBhOyBfIH0sIGIpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBmYWtlIHN0cnVjdHVyZSBmb3IgYSBnZW5lcmF0aXZlIGFyZ3VtZW50IGNvdmVycyB0aGUgICAgICopXG4gICAgKCogbG9jYXRpb24gb2YgdGhlIGZ1bmN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9hcHBseSAobSwgeyBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTsgcG1vZF9sb2M7IF8gfSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtLnBtb2RfbG9jLmxvY19zdGFydCBwbW9kX2xvYy5sb2Nfc3RhcnQgPSAwIC0+XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgbSBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIG9wZW5faW5mb3MgZm9yIFBjbF9vcGVuIG9ubHkgY292ZXJzIHRoZSBcIm9wZW5cIiBrZXl3b3JkICAqKVxuICAgICgqIGFuZCBub3QgdGhlIG1vZHVsZSBvcGVuZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX29wZW4gKG9kLCBjZSkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGNlIGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9vcGVuIChvZCwgY3QpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIGRvY3N0cmluZ3MgaGF2ZSAgICAqKVxuICAgICgqIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSBpdGVtIHRoZXkgZ2V0IGF0dGFjaGVkIHRvLiAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeCBhY2MgPVxuICAgICAgbWF0Y2ggeC5hdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5kb2NcIiB8IFwib2NhbWwudGV4dFwiIC0+IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2F0dHJpYnV0ZSB4IGFjY1xuICBlbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEFyZyA9IFN0ZGxpYi5BcmdcblxubGV0IGV4ZV9uYW1lID0gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG5sZXQgYXJncyA9IHJlZiBbXVxubGV0IGFkZF9hcmcga2V5IHNwZWMgfmRvYyA9IGFyZ3MgOj0gKGtleSwgc3BlYywgZG9jKSA6OiAhYXJnc1xubGV0IGxvY19mbmFtZSA9IHJlZiBOb25lXG5sZXQgcGVyZm9ybV9jaGVja3MgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc1xubGV0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zXG5sZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2xvY2F0aW9uc19jaGVja1xubGV0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wID0gcmVmIGZhbHNlXG5sZXQgYXBwbHlfbGlzdCA9IHJlZiBOb25lXG5sZXQgcHJlcHJvY2Vzc29yID0gcmVmIE5vbmVcbmxldCBub19tZXJnZSA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfcGFzc2VzID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgPSByZWYgZmFsc2VcbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBPcHRpb25zLmRpZmZfY29tbWFuZFxubGV0IHByZXR0eSA9IHJlZiBmYWxzZVxubGV0IHN0eWxlciA9IHJlZiBOb25lXG5sZXQgb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lID0gcmVmIE5vbmVcbmxldCBjb3JyZWN0ZWRfc3VmZml4ID0gcmVmIFwiLnBweC1jb3JyZWN0ZWRcIlxuXG5sZXQgZ2hvc3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICBtZXRob2QhIGxvY2F0aW9uIGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9XG4gIGVuZFxuXG5sZXQgY2hvcF9wcmVmaXggfnByZWZpeCB4ID1cbiAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4IHggdGhlblxuICAgIFNvbWUgKFN0cmluZy5kcm9wX3ByZWZpeCB4IChTdHJpbmcubGVuZ3RoIHByZWZpeCkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aCAobG9jIDogTG9jYXRpb24udCkgPVxuICBsZXQgZm5hbWUgPSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSBpblxuICBtYXRjaCBjaG9wX3ByZWZpeCB+cHJlZml4OlwiLi9cIiBmbmFtZSB3aXRoXG4gIHwgU29tZSBmbmFtZSAtPiBmbmFtZVxuICB8IE5vbmUgLT4gZm5hbWVcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc3RyIDogc3RydWN0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHN0cl9sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3NpZyA6IHNpZ25hdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzaWdfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5tb2R1bGUgTGludF9lcnJvciA9IHN0cnVjdFxuICB0eXBlIHQgPSBMb2NhdGlvbi50ICogc3RyaW5nXG5cbiAgbGV0IG9mX3N0cmluZyBsb2MgcyA9IChsb2MsIHMpXG5lbmRcblxubW9kdWxlIENvb2tpZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVFxuXG4gIGxldCBnaXZlbl90aHJvdWdoX2NsaSA9IHJlZiBbXVxuXG4gIGxldCBnZXQgVCBuYW1lIHBhdHRlcm4gPVxuICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuXG4gIGxldCBnZXRfcmVzIFQgbmFtZSBwYXR0ZXJuID1cbiAgICBtYXRjaFxuICAgICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKE9rIGUpIC0+IE9rIChTb21lIGUpXG4gICAgfCBTb21lIChFcnJvciBlKSAtPiBFcnJvciBlXG5cbiAgbGV0IHNldCBUIG5hbWUgZXhwciA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5zZXRfY29va2llIG5hbWUgKFNlbGVjdGVkX2FzdC50b19vY2FtbCBFeHByZXNzaW9uIGV4cHIpXG5cbiAgbGV0IGhhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfaGFuZGxlciBmID0gaGFuZGxlcnMgOj0gIWhhbmRsZXJzIEAgWyBmIF1cblxuICBsZXQgYWRkX3NpbXBsZV9oYW5kbGVyIG5hbWUgcGF0dGVybiB+ZiA9XG4gICAgYWRkX2hhbmRsZXIgKGZ1biBUIC0+IGYgKGdldCBUIG5hbWUgcGF0dGVybikpXG5cbiAgbGV0IGFja25vd2xlZGdlX2Nvb2tpZXMgVCA9IExpc3QuaXRlciAhaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbiAgbGV0IHBvc3RfaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9wb3N0X2hhbmRsZXIgZiA9IHBvc3RfaGFuZGxlcnMgOj0gIXBvc3RfaGFuZGxlcnMgQCBbIGYgXVxuICBsZXQgY2FsbF9wb3N0X2hhbmRsZXJzIFQgPSBMaXN0Lml0ZXIgIXBvc3RfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbmVuZFxuXG5tb2R1bGUgSW5zdHJ1bWVudCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IEJlZm9yZSB8IEFmdGVyXG5cbiAgdHlwZSB0ID0ge1xuICAgIHRyYW5zZm9ybWF0aW9uIDpcbiAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50O1xuICAgIHBvc2l0aW9uIDogcG9zO1xuICB9XG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBjdHggc3QgPSByZXR1cm4gKHRyYW5zZm9ybWF0aW9uIGN0eCBzdCkgaW5cbiAgICAgIHsgdHJhbnNmb3JtYXRpb247IHBvc2l0aW9uIH1cbiAgZW5kXG5cbiAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICBsZXQgdHJhbnNmb3JtYXRpb24gXyBzdCA9IHRyYW5zZm9ybWF0aW9uIHN0IGluXG4gICAgVjIubWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb25cbmVuZFxuXG5tb2R1bGUgVHJhbnNmb3JtID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIGFsaWFzZXMgOiBzdHJpbmcgbGlzdDtcbiAgICBpbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBpbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc3RydWN0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zaWduYXR1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAqIFBhcnNldHJlZS5zdHJ1Y3R1cmUpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlICogUGFyc2V0cmVlLnNpZ25hdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBpbnN0cnVtZW50IDogSW5zdHJ1bWVudC50IG9wdGlvbjtcbiAgICBydWxlcyA6IENvbnRleHRfZnJlZS5SdWxlLnQgbGlzdDtcbiAgICByZWdpc3RlcmVkX2F0IDogQ2FsbGVyX2lkLnQ7XG4gIH1cblxuICBsZXQgaGFzX25hbWUgdCBuYW1lID1cbiAgICBTdHJpbmcuZXF1YWwgbmFtZSB0Lm5hbWUgfHwgTGlzdC5leGlzdHMgfmY6KFN0cmluZy5lcXVhbCBuYW1lKSB0LmFsaWFzZXNcblxuICBsZXQgYWxsIDogdCBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBwcmludF9jYWxsZXJfaWQgb2MgKGNhbGxlcl9pZCA6IENhbGxlcl9pZC50KSA9XG4gICAgbWF0Y2ggY2FsbGVyX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gb3V0cHV0X3N0cmluZyBvYyBcIjx1bmtub3duIGxvY2F0aW9uPlwiXG4gICAgfCBTb21lIGxvYyAtPiBQcmludGYuZnByaW50ZiBvYyBcIiVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuXG4gIGxldCByZWdpc3RlciA/KGV4dGVuc2lvbnMgPSBbXSkgPyhydWxlcyA9IFtdKSA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcbiAgICAgID9pbnN0cnVtZW50ID8oYWxpYXNlcyA9IFtdKSBuYW1lID1cbiAgICBsZXQgcnVsZXMgPSBMaXN0Lm1hcCBleHRlbnNpb25zIH5mOkNvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBAIHJ1bGVzIGluXG4gICAgbGV0IGNhbGxlcl9pZCA9IENhbGxlcl9pZC5nZXQgfnNraXA6WyBTdGRsaWIuX19GSUxFX18gXSBpblxuICAgIChtYXRjaCBMaXN0LmZpbHRlciAhYWxsIH5mOihmdW4gY3QgLT4gaGFzX25hbWUgY3QgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IGN0IDo6IF8gLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJXYXJuaW5nOiBjb2RlIHRyYW5zZm9ybWF0aW9uICVzIHJlZ2lzdGVyZWQgdHdpY2UuXFxuXCJcbiAgICAgICAgICBuYW1lO1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBmaXJzdCB0aW1lIHdhcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZFxuICAgICAgICAgIGN0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIHNlY29uZCB0aW1lIGlzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkIGNhbGxlcl9pZCk7XG4gICAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ludGYgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IGN0ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgYWxpYXNlcztcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbXBsO1xuICAgICAgICBpbnRmO1xuICAgICAgICBsaW50X2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICBsaW50X2ludGY7XG4gICAgICAgIGluc3RydW1lbnQ7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBjYWxsZXJfaWQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBhbGwgOj0gY3QgOjogIWFsbFxuXG4gIGxldCByZWMgbGFzdCBwcmV2IGwgPSBtYXRjaCBsIHdpdGggW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBsb2Nfb2ZfbGlzdCB+Z2V0X2xvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgZmlyc3QgOiBMb2NhdGlvbi50ID0gZ2V0X2xvYyB4IGluXG4gICAgICAgIGxldCBsYXN0ID0gZ2V0X2xvYyAobGFzdCB4IGwpIGluXG4gICAgICAgIFNvbWUgeyBmaXJzdCB3aXRoIGxvY19lbmQgPSBsYXN0LmxvY19lbmQgfVxuXG4gIGxldCBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB0IH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgeyBydWxlczsgZW5jbG9zZV9pbXBsOyBlbmNsb3NlX2ludGY7IGltcGw7IGludGY7IF8gfSA9IHQgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIG5ldyBDb250ZXh0X2ZyZWUubWFwX3RvcF9kb3duXG4gICAgICAgIHJ1bGVzIH5lbWJlZF9lcnJvcnMgfmdlbmVyYXRlZF9jb2RlX2hvb2s6aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICBpblxuICAgIGxldCBnZW5faGVhZGVyX2FuZF9mb290ZXIgY29udGV4dCB3aG9sZV9sb2MgZiA9XG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPSBmIHdob2xlX2xvYyBpblxuICAgICAgKG1hdGNoIHdob2xlX2xvYyB3aXRoXG4gICAgICB8IFNvbWUgKGxvYyA6IExvY2F0aW9uLnQpIC0+IChcbiAgICAgICAgICBsZXQgbG9jX2hlYWRlciA9IHsgbG9jIHdpdGggbG9jX2VuZCA9IGxvYy5sb2Nfc3RhcnQgfSBpblxuICAgICAgICAgIGxldCBsb2NfZm9vdGVyID0geyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgKG1hdGNoIGhlYWRlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfaGVhZGVyIChNYW55IGhlYWRlcikpO1xuICAgICAgICAgIG1hdGNoIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfZm9vdGVyIChNYW55IGZvb3RlcikpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIGhlYWRlciBAIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaG9vay5mIGNvbnRleHQgbG9jIChNYW55IGwpKSk7XG4gICAgICAoaGVhZGVyLCBmb290ZXIpXG4gICAgaW5cbiAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGggU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWUgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICBpblxuICAgIGxldCBtYXBfaW1wbCBjdHh0IHN0X3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzdCA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc3Rfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbXBsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc3QgfmdldF9sb2M6KGZ1biBzdCAtPiBzdC5QYXJzZXRyZWUucHN0cl9sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFN0cnVjdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3N0cnVjdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc3Q7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzdCAtPiBtYXRjaCBpbXBsIHdpdGggTm9uZSAtPiByZXR1cm4gc3QgfCBTb21lIGYgLT4gZiBjdHh0IHN0XG4gICAgaW5cbiAgICBsZXQgbWFwX2ludGYgY3R4dCBzZ193aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc2cgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHNnX3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW50ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHNnIH5nZXRfbG9jOihmdW4gc2cgLT4gc2cuUGFyc2V0cmVlLnBzaWdfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTaWduYXR1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzaWduYXR1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHNnOyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc2cgLT4gbWF0Y2ggaW50ZiB3aXRoIE5vbmUgLT4gcmV0dXJuIHNnIHwgU29tZSBmIC0+IGYgY3R4dCBzZ1xuICAgIGluXG4gICAgeyB0IHdpdGggaW1wbCA9IFNvbWUgbWFwX2ltcGw7IGludGYgPSBTb21lIG1hcF9pbnRmIH1cblxuICBsZXQgYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ob29rIH5ydWxlcyB+ZW5jbG9zZV9pbXBsIH5lbmNsb3NlX2ludGZcbiAgICAgIH5pbnB1dF9uYW1lID1cbiAgICBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+aG9vayB+aW5wdXRfbmFtZVxuICAgICAge1xuICAgICAgICBuYW1lID0gXCI8YnVpbHRpbjpjb250ZXh0LWZyZWU+XCI7XG4gICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbXTtcbiAgICAgIH1cblxuICBsZXQgcGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyB0cyA9XG4gICAgbGV0IGJlZm9yZV9pbnN0cnMsIGFmdGVyX2luc3RycywgcmVzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB0cyB+aW5pdDooW10sIFtdLCBbXSkgfmY6KGZ1biAoYmVmX2ksIGFmdF9pLCByZXN0KSB0IC0+XG4gICAgICAgICAgbGV0IHJlZHVjZWRfdCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHQgd2l0aFxuICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGYgaW5zdHIgPVxuICAgICAgICAgICAgKGluc3RyLkluc3RydW1lbnQucG9zaXRpb24sIGluc3RyLkluc3RydW1lbnQudHJhbnNmb3JtYXRpb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBPcHRpb24ubWFwIHQuaW5zdHJ1bWVudCB+ZiB3aXRoXG4gICAgICAgICAgfCBTb21lIChCZWZvcmUsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGJlZl9pLFxuICAgICAgICAgICAgICAgIGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IFNvbWUgKEFmdGVyLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggYmVmX2ksXG4gICAgICAgICAgICAgICAgeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBOb25lIC0+IChiZWZfaSwgYWZ0X2ksIHJlZHVjZWRfdCA6OiByZXN0KSlcbiAgICBpblxuICAgICggYExpbnRlcnNcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW1wbCB8fCBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW50ZiB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8bGludDolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IHQubGludF9pbXBsO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IHQubGludF9pbnRmO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgUHJlcHJvY2Vzc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW1wbFxuICAgICAgICAgICAgICAgfHwgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ludGZcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8cHJlcHJvY2Vzczolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSB0LnByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gdC5wcmVwcm9jZXNzX2ludGY7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICBgUmVzdCByZXN0IClcbmVuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID0gVHJhbnNmb3JtLnJlZ2lzdGVyXG5cbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbiAgICAgID1cbiAgICBsZXQgaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIGltcGwgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTdHJ1Y3R1cmUpXG4gICAgaW5cbiAgICBsZXQgaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIGludGYgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTaWduYXR1cmUpXG4gICAgaW5cbiAgICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG5lbmRcblxubGV0IGFkZF9jdHh0X2FyZyAoZiA6ICdhIC0+ICdiKSA6IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYiA9XG4gZnVuIF8geCAtPiBmIHhcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGYgP2ltcGxcbiAgICA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbXBsID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ludGYgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW1wbCA9IE9wdGlvbi5tYXAgbGludF9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbnRmID0gT3B0aW9uLm1hcCBsaW50X2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ltcGwgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW50ZiA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuXG5sZXQgcmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiB+bmFtZSA/KGFsaWFzZXMgPSBbXSkgfmltcGwgfmludGYgPVxuICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBuYW1lIH5pbXBsIH5pbnRmIH5hbGlhc2VzXG5bQEB3YXJuaW5nIFwiLTE2XCJdXG4oKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIGEgd2FybmluZyAxNiBhcyBvZiBvY2FtbCA0LjEyICopXG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGZcblxubGV0IGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIG5hbWUgfm9sZF9kcm9wcGVkIH5uZXdfZHJvcHBlZCA9XG4gIGxldCBwcmludF9kaWZmIHdoYXQgYSBiID1cbiAgICBsZXQgZGlmZiA9XG4gICAgICBMaXN0LmZpbHRlciBhIH5mOihmdW4gKG5hbWUgOiBfIExvYy50KSAtPlxuICAgICAgICAgIG5vdFxuICAgICAgICAgICAgKExpc3QuZXhpc3RzIGIgfmY6KGZ1biAobmFtZScgOiBfIExvY2F0aW9uLmxvYykgLT5cbiAgICAgICAgICAgICAgICAgbmFtZS50eHQgPT0gbmFtZScudHh0KSkpXG4gICAgaW5cbiAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgZGlmZikgdGhlbiAoXG4gICAgICBQcmludGYuZXByaW50ZiBcIlRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAlcyBhZnRlciBhcHBseWluZyAlczpcXG5cIiB3aGF0XG4gICAgICAgIG5hbWU7XG4gICAgICBMaXN0Lml0ZXIgZGlmZiB+ZjooZnVuIHsgTG9jYXRpb24udHh0OyBsb2MgfSAtPlxuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIi0gJWE6ICVzXFxuXCIgTG9jYXRpb24ucHJpbnQgbG9jIHR4dCk7XG4gICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJALlwiKVxuICBpblxuICBwcmludF9kaWZmIFwiZGlzYXBwZWFyZWRcIiBuZXdfZHJvcHBlZCBvbGRfZHJvcHBlZDtcbiAgcHJpbnRfZGlmZiBcInJlYXBwZWFyZWRcIiBvbGRfZHJvcHBlZCBuZXdfZHJvcHBlZFxuXG5sZXQgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgIH5pbnB1dF9uYW1lID1cbiAgbGV0IGN0cyA9XG4gICAgbWF0Y2ggIWFwcGx5X2xpc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LnJldiAhVHJhbnNmb3JtLmFsbFxuICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICBMaXN0Lm1hcCBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICAgIExpc3QuZmluZCAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgaW5cbiAgbGV0ICggYExpbnRlcnMgbGludGVycyxcbiAgICAgICAgYFByZXByb2Nlc3MgcHJlcHJvY2VzcyxcbiAgICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICAgIGBSZXN0IGN0cyApID1cbiAgICBUcmFuc2Zvcm0ucGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyBjdHNcbiAgaW5cbiAgKCogQWxsb3cgb25seSBvbmUgcHJlcHJvY2Vzc29yIHRvIGFzc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyICopXG4gIChpZiBMaXN0Lmxlbmd0aCBwcmVwcm9jZXNzID4gMSB0aGVuXG4gICAgIGxldCBwcCA9XG4gICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5tYXAgcHJlcHJvY2VzcyB+ZjooZnVuIHQgLT4gdC5uYW1lKSlcbiAgICAgaW5cbiAgICAgbGV0IGVyciA9XG4gICAgICAgUHJpbnRmLnNwcmludGYgXCJBdCBtb3N0IG9uZSBwcmVwcm9jZXNzb3IgaXMgYWxsb3dlZCwgd2hpbGUgZ290OiAlc1wiIHBwXG4gICAgIGluXG4gICAgIGZhaWx3aXRoIGVycik7XG4gIGxldCBtYWtlX2dlbmVyaWMgdHJhbnNmb3JtcyA9XG4gICAgaWYgIW5vX21lcmdlIHRoZW5cbiAgICAgIExpc3QubWFwIHRyYW5zZm9ybXNcbiAgICAgICAgfmY6XG4gICAgICAgICAgKFRyYW5zZm9ybS5tZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+ZW1iZWRfZXJyb3JzIH5ob29rIH50b29sX25hbWVcbiAgICAgICAgICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUpXG4gICAgZWxzZVxuICAgICAgKGxldCBnZXRfZW5jbG9zZXJzIH5mID1cbiAgICAgICAgIExpc3QuZmlsdGVyX21hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggZiBjdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChjdC5uYW1lLCB4KSlcbiAgICAgICAgICgqIFNvcnQgdGhlbSB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyAqKVxuICAgICAgICAgfD4gTGlzdC5zb3J0IH5jbXA6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYilcbiAgICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgIGluXG5cbiAgICAgICBsZXQgcnVsZXMgPVxuICAgICAgICAgTGlzdC5tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5ydWxlcylcbiAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgYW5kIGltcGxfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW1wbClcbiAgICAgICBhbmQgaW50Zl9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbnRmKSBpblxuICAgICAgIG1hdGNoIChydWxlcywgaW1wbF9lbmNsb3NlcnMsIGludGZfZW5jbG9zZXJzKSB3aXRoXG4gICAgICAgfCBbXSwgW10sIFtdIC0+IHRyYW5zZm9ybXNcbiAgICAgICB8IF8gLT5cbiAgICAgICAgICAgbGV0IG1lcmdlX2VuY2xvc2VyID0gZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGVuY2xvc2VycyAtPlxuICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgKGZ1biBjdHh0IGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMsIGZvb3RlcnMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCBlbmNsb3NlcnMgfmY6KGZ1biBmIC0+IGYgY3R4dCBsb2MpIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycyA9IExpc3QuY29uY2F0IGhlYWRlcnMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBmb290ZXJzID0gTGlzdC5jb25jYXQgKExpc3QucmV2IGZvb3RlcnMpIGluXG4gICAgICAgICAgICAgICAgICAgICAoaGVhZGVycywgZm9vdGVycykpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIFRyYW5zZm9ybS5idWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfnJ1bGVzIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbXBsOihtZXJnZV9lbmNsb3NlciBpbXBsX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbnRmOihtZXJnZV9lbmNsb3NlciBpbnRmX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lXG4gICAgICAgICAgIDo6IHRyYW5zZm9ybXMpXG4gICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIChjdC5pbXBsLCBjdC5pbnRmKSB3aXRoIE5vbmUsIE5vbmUgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gIGluXG4gIGxpbnRlcnMgQCBwcmVwcm9jZXNzIEAgYmVmb3JlX2luc3RycyBAIG1ha2VfZ2VuZXJpYyBjdHMgQCBhZnRlcl9pbnN0cnNcblxubGV0IGFwcGx5X3RyYW5zZm9ybXMgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5maWVsZCB+bGludF9maWVsZCB+ZHJvcHBlZF9zb19mYXJcbiAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9ycyBhc3QgPVxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+dG9vbF9uYW1lIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+aW5wdXRfbmFtZVxuICBpblxuICBsZXQgZmluaXNoIChhc3QsIF9kcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKSA9XG4gICAgKCBhc3QsXG4gICAgICBMaXN0Lm1hcCBsaW50X2Vycm9ycyB+ZjooZnVuIChsb2MsIHMpIC0+XG4gICAgICAgICAgQ29tbW9uLmF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzKSxcbiAgICAgIGVycm9ycyApXG4gIGluXG4gIGxldCBhY2MgPVxuICAgIExpc3QuZm9sZF9sZWZ0IGN0cyB+aW5pdDooYXN0LCBbXSwgW10sIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgIChhc3QsIGRyb3BwZWQsIChsaW50X2Vycm9ycyA6IF8gbGlzdCksIGVycm9ycykgKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICAgICAgICBtYXRjaCBsaW50X2ZpZWxkIGN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgKGxpbnRfZXJyb3JzIEAgZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgIChsaW50X2Vycm9ycywgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZmllbGQgY3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCAoYXN0LCBtb3JlX2Vycm9ycyksIGVycm9ycyA9XG4gICAgICAgICAgICAgIHRyeSAoZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICgoYXN0LCBbXSksIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZHJvcHBlZCA9XG4gICAgICAgICAgICAgIGlmICFkZWJ1Z19hdHRyaWJ1dGVfZHJvcCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgbmV3X2Ryb3BwZWQgPSBkcm9wcGVkX3NvX2ZhciBhc3QgaW5cbiAgICAgICAgICAgICAgICBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBjdC5uYW1lIH5vbGRfZHJvcHBlZDpkcm9wcGVkXG4gICAgICAgICAgICAgICAgICB+bmV3X2Ryb3BwZWQ7XG4gICAgICAgICAgICAgICAgbmV3X2Ryb3BwZWQpXG4gICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzIEAgbW9yZV9lcnJvcnMpKVxuICBpblxuICBmaW5pc2ggYWNjXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokKilcblxubGV0IGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+KGtpbmQgOiBLaW5kLnQpID1cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgSW50ZiAtPiBJbnRmX29yX2ltcGwuSW50ZiBbIGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgXVxuICB8IEltcGwgLT4gSW50Zl9vcl9pbXBsLkltcGwgWyBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yIF1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuIH4oa2luZCA6IEtpbmQudCkgPVxuICBleG5fdG9fbG9jX2Vycm9yIGV4biB8PiBlcnJvcl90b19leHRlbnNpb24gfmtpbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBBY3R1YWwgcmV3cml0aW5nIG9mIHN0cnVjdHVyZS9zaWduYXR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgcHJpbnRfcGFzc2VzICgpID1cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4bGliX2RyaXZlclwiIGluXG4gIGxldCBlbWJlZF9lcnJvcnMgPSBmYWxzZSBpblxuICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmVcbiAgaW5cbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW5cbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46ZnJlc2hlbi1hbmQtY29sbGVjdC1hdHRyaWJ1dGVzPlxcblwiO1xuICBMaXN0Lml0ZXIgY3RzIH5mOihmdW4gY3QgLT4gUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QuVHJhbnNmb3JtLm5hbWUpO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1hdHRyaWJ1dGVzPlxcblwiO1xuICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtZXh0ZW5zaW9ucz5cXG5cIilcblxubGV0IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgPVxuICBMaXN0LnNvcnQgZXJyb3JzIH5jbXA6KGZ1biBlcnJvciBlcnJvcicgLT5cbiAgICAgIGxldCBsb2MgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IgaW5cbiAgICAgIGxldCBsb2MnID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yJyBpblxuICAgICAgTG9jYXRpb24uY29tcGFyZSBsb2MgbG9jJylcblxuKCokKilcblxubGV0IG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzdHJ1Y3R1cmUgc3QpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzdCA9XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHN0XG4gICAgaW5cbiAgICBzdFxuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHN0ID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzdHJ1Y3R1cmVfaXRlbSlcbiAgICBAIHN0XG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzdCA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc3RcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gIGxldCBzdCwgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzdCB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbXBsKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbXBsKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHN0IHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPVxuICBtYXRjaFxuICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0XG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBtYXBfc2lnbmF0dXJlX2dlbiBzZyB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc2lnbmF0dXJlIHNnKTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc2cgPVxuICAgIGxldCBzZyA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHNnXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzZ1xuICAgIGluXG4gICAgc2dcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzZyA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc2lnbmF0dXJlX2l0ZW0pXG4gICAgQCBzZ1xuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc2cgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzaWduYXR1cmUgc2dcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHNnXG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICBsZXQgc2csIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc2cgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW50ZilcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW50ZilcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzZyB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc2lnbmF0dXJlIHNnID1cbiAgbWF0Y2hcbiAgICBtYXBfc2lnbmF0dXJlX2dlbiBzZ1xuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokKilcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBFbnRyeSBwb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyA9XG4gIGxldCB0ZXN0IG1hZ2ljX251bWJlciA9XG4gICAgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6KFN0cmluZy5zdWIgbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gIGluXG4gIHRlc3QgQXN0X21hZ2ljLmFzdF9pbnRmX21hZ2ljX251bWJlciB8fCB0ZXN0IEFzdF9tYWdpYy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxubGV0IHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBpbnB1dF9maWxlX25hbWUgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBtc2cgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMb2NhdGlvbi5FcnJvci5tYWtlIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZV9uYW1lKSBtc2cgfnN1YjpbXVxuICAgICAgaW5cbiAgICAgIEVycm9yIChlcnIsIGlucHV0X3ZlcnNpb24pKVxuXG5sZXQgcmVtb3ZlX25vX2Vycm9yIGZuID0gdHJ5IFN0ZGxpYi5TeXMucmVtb3ZlIGZuIHdpdGggU3lzX2Vycm9yIF8gLT4gKClcblxubGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHYgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHZcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgcmFpc2UgZVxuXG5sZXQgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZiA9XG4gIG1hdGNoICFwcmVwcm9jZXNzb3Igd2l0aFxuICB8IE5vbmUgLT4gZiBmblxuICB8IFNvbWUgcHAgLT5cbiAgICAgIHByb3RlY3R4IChTdGRsaWIuRmlsZW5hbWUudGVtcF9maWxlIFwib2NhbWxwcFwiIFwiXCIpIH5maW5hbGx5OnJlbW92ZV9ub19lcnJvclxuICAgICAgICB+ZjooZnVuIHRtcGZpbGUgLT5cbiAgICAgICAgICBtYXRjaCBTeXN0ZW0ucnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0OmZuIH5vdXRwdXQ6dG1wZmlsZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBmIHRtcGZpbGVcbiAgICAgICAgICB8IEVycm9yIChmYWlsZWRfY29tbWFuZCwgZmFsbF9iYWNrX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgICAgICAgICBcIkVycm9yIHdoaWxlIHJ1bm5pbmcgZXh0ZXJuYWwgcHJlcHJvY2Vzc29yXFxuQ29tbWFuZCBsaW5lOiAlc1xcblwiXG4gICAgICAgICAgICAgICAgZmFpbGVkX2NvbW1hbmQpXG5cbmxldCByZWxvY2F0ZV9tYXBwZXIgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgKiBzdHJpbmddIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QhIHBvc2l0aW9uIChvbGRfZm4sIG5ld19mbikgcG9zID1cbiAgICAgIGlmIFN0cmluZy5lcXVhbCBwb3MucG9zX2ZuYW1lIG9sZF9mbiB0aGVuIHsgcG9zIHdpdGggcG9zX2ZuYW1lID0gbmV3X2ZuIH1cbiAgICAgIGVsc2UgcG9zXG4gIGVuZFxuXG4oKiBTZXQgdGhlIGlucHV0IG5hbWUgZ2xvYmFsbHkuIFRoaXMgaXMgdXNlZCBieSBzb21lIHBweCByZXdyaXRlcnNcbiAgIHN1Y2ggYXMgYmlzZWN0X3BweC4gKilcbmxldCBzZXRfaW5wdXRfbmFtZSA9IEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbmFtZVxuXG5sZXQgbG9hZF9pbnB1dCB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSBmbiA9XG4gIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gIGxldCBpbnB1dF9zb3VyY2UgPSBpZiBTdHJpbmcuZXF1YWwgZm4gXCItXCIgdGhlbiBBc3RfaW8uU3RkaW4gZWxzZSBGaWxlIGZuIGluXG4gIGxldCBpbnB1dF9raW5kID0gQXN0X2lvLlBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgaW5cbiAgbWF0Y2ggQXN0X2lvLnJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kIHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3Rfa2luZCA9IEludGZfb3JfaW1wbC5raW5kIGFzdCBpblxuICAgICAgaWYgbm90IChLaW5kLmVxdWFsIGtpbmQgYXN0X2tpbmQpIHRoZW5cbiAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGZuXG4gICAgICAgICAgXCJGaWxlIGNvbnRhaW5zIGEgYmluYXJ5ICVzIEFTVCBidXQgYW4gJXMgd2FzIGV4cGVjdGVkXCJcbiAgICAgICAgICAoS2luZC5kZXNjcmliZSBhc3Rfa2luZCkgKEtpbmQuZGVzY3JpYmUga2luZClcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgfHwgbm90IHJlbG9jYXRlIHRoZW4gKFxuICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgT2sgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBPa1xuICAgICAgICAgICggaW5wdXRfbmFtZSxcbiAgICAgICAgICAgIGlucHV0X3ZlcnNpb24sXG4gICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSkgKVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgXCJGaWxlIGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpXG4gIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIEVycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBmbiA9XG4gICgqIElmIHRoZXJlJ3MgYW4gZXJyb3Igd2hpbGUgbG9hZGluZyBpbiBydW5fYXNfcHB4IG1vZGUsIHRoZSBraW5kIG9mIEFTVCAoaW1wbC9pbnRmKSBpcyBzdGlsbCB1bmtub3duLlxuICAgICBUaGF0J3Mgd2h5LCBhcyBvcHBvc2VkIHRvIGxvYWRfaW5wdXQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIGVycm9ycyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHJlc3VsdDpcbiAgICAgaGFuZGxpbmcgYW4gZXJyb3IgYnkgcmV0dXJuaW5nIGFuIEFTVCB3aXRoIHRoZSBlcnJvciBwYWNrZWQgYXMgZXh0ZW5zaW9uIG5vZGUgd291bGRuJ3QgYmUgcG9zc2libGUuICopXG4gIG1hdGNoIEFzdF9pby5yZWFkIChGaWxlIGZuKSB+aW5wdXRfa2luZDpBc3RfaW8uTmVjZXNzYXJpbHlfYmluYXJ5IHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGFzdFxuICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHRoZW4gYXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpXG4gICAgICBpblxuICAgICAgKCogV2l0aCBgLS1hcy1wcHhgLCBvY2FtbCBjYWxscyB0aGUgc3RhbmRhbG9uZSBzZXBhcmF0ZWx5IGZvciBldmVyeSBzdHJ1Y3R1cmUvc2lnbmF0dXJlIGl0ZW1cbiAgICAgICAgIHdpdGggdGhlIGZpbGVuYW1lIGFzIG1ldGFkYXRhIHRoYXQgaXQgZ2V0cyBmcm9tIHRoZSBwcmV2aW91cyBjYWxsLiByZWxvY2F0ZV9tYXBwZXIgb25seVxuICAgICAgICAgcmVsb2NhdGVzIHBvc2l0aW9ucyB3aG9zZSBwb3NpdGlvbiBmaWxlbmFtZSBjb2luY2lkZXMgd2l0aCB0aGF0IG1ldGFkYXRhIGZpbGVuYW1lLlxuICAgICAgICAgU28gYWx3YXlzIHJldHVybiB0aGUgbWV0YWRhdGEgZmlsZW5hbWUgaXRzZWxmLCBldmVuIGlmIGAtbG9jLWZpbGVuYW1lYCBpcyBwcm92aWRlZC4gKilcbiAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIF8pKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiVGhlIGlucHV0IGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIkV4cGVjdGVkIGEgYmluYXJ5IEFTVCBhcyBpbnB1dFwiXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIF8pKSB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBfKSkgLT5cbiAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm4gfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuXG5sZXQgbG9hZF9zb3VyY2VfZmlsZSBmbiA9XG4gIGxldCBzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmbiBpblxuICBpZiBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgIFwicHB4bGliX2RyaXZlcjogY2Fubm90IHVzZSAtcmVjb25jaWxlIHdpdGggYmluYXJ5IEFTVCBmaWxlc1wiO1xuICBzXG5cbnR5cGUgb3V0cHV0X21vZGUgPVxuICB8IFByZXR0eV9wcmludFxuICB8IER1bXBfYXN0XG4gIHwgRHBhcnNldHJlZVxuICB8IFJlY29uY2lsZSBvZiBSZWNvbmNpbGUubW9kZVxuICB8IE51bGxcblxuKCokKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHN0ID1cbiAgICBtYXRjaCBzdCB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc3QgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFN0cnVjdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zdHIgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc3RcbiAgICB8IF8gLT4gc3RcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzdFxuXG5sZXQgYWRkX2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTdHJ1Y3R1cmVcbiAgaW5cbiAgcHJlZml4IEAgc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubGV0IGV4dHJhY3RfY29va2llc19zaWcgc2cgPVxuICBsZXQgc2cgPVxuICAgIG1hdGNoIHNnIHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc2lnX2Rlc2MgPVxuICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzZyAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU2lnbmF0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3NpZyB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzZ1xuICAgIHwgXyAtPiBzZ1xuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHNnXG5cbmxldCBhZGRfY29va2llc19zaWcgc2cgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFNpZ25hdHVyZVxuICBpblxuICBwcmVmaXggQCBzZ1xuXG4oKiQqKVxuXG5sZXQgZXh0cmFjdF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGV4dHJhY3RfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoZXh0cmFjdF9jb29raWVzX3N0ciB4KVxuXG5sZXQgYWRkX2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoYWRkX2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGFkZF9jb29raWVzX3N0ciB4KVxuXG5sZXQgY29ycmVjdGlvbnMgPSByZWYgW11cbmxldCBhZGRfdG9fbGlzdCByIHggPSByIDo9IHggOjogIXJcblxubGV0IHJlZ2lzdGVyX2NvcnJlY3Rpb24gfmxvYyB+cmVwbCA9XG4gIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlX3RleHQgKCkgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmRcbiAgICAgICB+cmVwbClcblxubGV0IHByb2Nlc3NfZmlsZV9ob29rcyA9IHJlZiBbXVxubGV0IHJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIGYgPSBhZGRfdG9fbGlzdCBwcm9jZXNzX2ZpbGVfaG9va3MgZlxuXG5tb2R1bGUgRmlsZV9wcm9wZXJ0eSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBtdXRhYmxlIGRhdGEgOiAnYSBvcHRpb247XG4gICAgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50O1xuICB9XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBhbGwgPSByZWYgW11cbiAgbGV0IHJlZ2lzdGVyIHQgPSBhZGRfdG9fbGlzdCBhbGwgKFQgdClcbiAgbGV0IHJlc2V0X2FsbCAoKSA9IExpc3QuaXRlciAhYWxsIH5mOihmdW4gKFQgdCkgLT4gdC5kYXRhIDwtIE5vbmUpXG5cbiAgbGV0IGR1bXBfYW5kX3Jlc2V0X2FsbCAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnJldiAhYWxsKSB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIG1hdGNoIHQuZGF0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICB0LmRhdGEgPC0gTm9uZTtcbiAgICAgICAgICAgIFNvbWUgKHQubmFtZSwgdC5zZXhwX29mX3QgdikpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9maWxlX3Byb3BlcnR5XG4gICAgKE5hbWUgOiBzaWdcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kKVxuICAgIChUIDogU2V4cGFibGUuUykgPVxuc3RydWN0XG4gIGxldCB0IDogXyBGaWxlX3Byb3BlcnR5LnQgPVxuICAgIHsgbmFtZSA9IE5hbWUubmFtZTsgZGF0YSA9IE5vbmU7IHNleHBfb2ZfdCA9IFQuc2V4cF9vZl90IH1cblxuICBsZXQgKCkgPSBGaWxlX3Byb3BlcnR5LnJlZ2lzdGVyIHRcbiAgbGV0IHNldCB4ID0gdC5kYXRhIDwtIFNvbWUgeFxuZW5kXG5cbmxldCBwcm9jZXNzX2FzdCAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2tcbiAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmVtYmVkX2Vycm9ycyA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc2lnbmF0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkludGYgYXN0XG4gIHwgSW1wbCB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc3RydWN0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkltcGwgYXN0XG5cbmxldCBwcm9jZXNzX2ZpbGUgKGtpbmQgOiBLaW5kLnQpIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGVcbiAgICB+ZW1iZWRfZXJyb3JzIH5vdXRwdXQgPVxuICBGaWxlX3Byb3BlcnR5LnJlc2V0X2FsbCAoKTtcbiAgTGlzdC5pdGVyIChMaXN0LnJldiAhcHJvY2Vzc19maWxlX2hvb2tzKSB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIGNvcnJlY3Rpb25zIDo9IFtdO1xuICBsZXQgcmVwbGFjZW1lbnRzID0gcmVmIFtdIGluXG4gIGxldCB0b29sX25hbWUgPSBcInBweF9kcml2ZXJcIiBpblxuICBsZXQgaG9vayA6IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnQgPVxuICAgIG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgICB8IFJlY29uY2lsZSAoVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgZiA9XG4gICAgICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgICAgICBhZGRfdG9fbGlzdCByZXBsYWNlbWVudHNcbiAgICAgICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEV4dGVuc2lvbiBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOmdlbmVyYXRlZCkpO1xuICAgICAgICB9XG4gICAgfCBfIC0+IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgOiBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIudCA9XG4gICAge1xuICAgICAgZiA9XG4gICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRmxvYXRpbmdfYXR0cmlidXRlIGNvbnRleHQpXG4gICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDooTWFueSBnZW5lcmF0ZWQpKSk7XG4gICAgfVxuICBpblxuXG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPVxuICAgIGxldCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCA9XG4gICAgICB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mOihsb2FkX2lucHV0IH5raW5kIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSlcbiAgICBpblxuICAgIG1hdGNoIHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIHdpdGhcbiAgICB8IE9rIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSAtPiAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgZXh0cmFjdF9jb29raWVzIGFzdFxuICAgICAgICAgICAgfD4gcHJvY2Vzc19hc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZCkpXG4gICAgfCBFcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgIChpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfmtpbmQpXG4gICAgfCBFcnJvciAoZXJyb3IsIF8pIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmblxuICAgICAgICB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG4gIGluXG4gIE9wdGlvbi5pdGVyICFvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgfmY6KGZ1biBmbiAtPlxuICAgICAgbGV0IG1ldGFkYXRhID0gRmlsZV9wcm9wZXJ0eS5kdW1wX2FuZF9yZXNldF9hbGwgKCkgaW5cbiAgICAgIE91dF9jaGFubmVsLndyaXRlX2FsbCBmblxuICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAoTGlzdC5tYXAgbWV0YWRhdGEgfmY6KGZ1biAocywgc2V4cCkgLT5cbiAgICAgICAgICAgICAgIFNleHAudG9fc3RyaW5nX2h1bSAoU2V4cC5MaXN0IFsgQXRvbSBzOyBzZXhwIF0pIF4gXCJcXG5cIilcbiAgICAgICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIikpO1xuXG4gIGxldCBpbnB1dF9jb250ZW50cyA9IGxhenkgKGxvYWRfc291cmNlX2ZpbGUgZm4pIGluXG4gIGxldCBjb3JyZWN0ZWQgPSBmbiBeICFjb3JyZWN0ZWRfc3VmZml4IGluXG4gIGxldCBtaXNtYXRjaGVzX2ZvdW5kID1cbiAgICBtYXRjaCAhY29ycmVjdGlvbnMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICAgaWYgU3RkbGliLlN5cy5maWxlX2V4aXN0cyBjb3JyZWN0ZWQgdGhlbiBTdGRsaWIuU3lzLnJlbW92ZSBjb3JyZWN0ZWQ7XG4gICAgICAgIGZhbHNlXG4gICAgfCBjb3JyZWN0aW9ucyAtPlxuICAgICAgICBSZWNvbmNpbGUucmVjb25jaWxlIGNvcnJlY3Rpb25zXG4gICAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICAgIH5vdXRwdXQ6KFNvbWUgY29ycmVjdGVkKSB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWVcbiAgICAgICAgICB+dGFyZ2V0OkNvcnJlY3RlZCA/c3R5bGVyOiFzdHlsZXIgfmtpbmQ7XG4gICAgICAgIHRydWVcbiAgaW5cblxuICAobWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICB8IE51bGwgLT4gKClcbiAgfCBQcmV0dHlfcHJpbnQgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFBwcmludGFzdC5zaWduYXR1cmUgcHBmIGFzdFxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gUHByaW50YXN0LnN0cnVjdHVyZSBwcGYgYXN0KTtcbiAgICAgICAgICBsZXQgbnVsbF9hc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGggSW50ZiBbXSB8IEltcGwgW10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCBudWxsX2FzdCB0aGVuIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgRHVtcF9hc3QgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIEFzdF9pby53cml0ZSBvY1xuICAgICAgICAgICAgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgICAgICAgICAgfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuICB8IERwYXJzZXRyZWUgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICBsZXQgYXN0ID0gYWRkX2Nvb2tpZXMgYXN0IGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZSBhc3QpXG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZSBhc3QpKTtcbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IFJlY29uY2lsZSBtb2RlIC0+XG4gICAgICBSZWNvbmNpbGUucmVjb25jaWxlICFyZXBsYWNlbWVudHNcbiAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICB+b3V0cHV0IH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZSB+dGFyZ2V0OihPdXRwdXQgbW9kZSlcbiAgICAgICAgP3N0eWxlcjohc3R5bGVyIH5raW5kKTtcblxuICBpZlxuICAgIG1pc21hdGNoZXNfZm91bmQgJiYgbWF0Y2ggIWRpZmZfY29tbWFuZCB3aXRoIFNvbWUgXCItXCIgLT4gZmFsc2UgfCBfIC0+IHRydWVcbiAgdGhlbiAoXG4gICAgUHB4bGliX3ByaW50X2RpZmYucHJpbnQgKCkgfmZpbGUxOmZuIH5maWxlMjpjb3JyZWN0ZWQgfnVzZV9jb2xvcjohdXNlX2NvbG9yXG4gICAgICA/ZGlmZl9jb21tYW5kOiFkaWZmX2NvbW1hbmQ7XG4gICAgU3RkbGliLmV4aXQgMSlcblxubGV0IG91dHB1dF9tb2RlID0gcmVmIFByZXR0eV9wcmludFxubGV0IG91dHB1dCA9IHJlZiBOb25lXG5sZXQga2luZCA9IHJlZiBOb25lXG5sZXQgaW5wdXQgPSByZWYgTm9uZVxubGV0IGVtYmVkX2Vycm9ycyA9IHJlZiBmYWxzZVxuXG5sZXQgc2V0X2lucHV0IGZuID1cbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+IGlucHV0IDo9IFNvbWUgZm5cbiAgfCBTb21lIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJ0b28gbWFueSBpbnB1dCBmaWxlc1wiKVxuXG5sZXQgc2V0X2tpbmQgayA9XG4gIG1hdGNoICFraW5kIHdpdGhcbiAgfCBTb21lIGsnIHdoZW4gbm90IChLaW5kLmVxdWFsIGsgaycpIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcIm11c3Qgc3BlY2lmeSBhdCBtb3N0IG9uZSBvZiAtaW1wbCBvciAtaW50ZlwiKVxuICB8IF8gLT4ga2luZCA6PSBTb21lIGtcblxubGV0IHNldF9vdXRwdXRfbW9kZSBtb2RlID1cbiAgbWF0Y2ggKCFvdXRwdXRfbW9kZSwgbW9kZSkgd2l0aFxuICB8IFByZXR0eV9wcmludCwgXyAtPiBvdXRwdXRfbW9kZSA6PSBtb2RlXG4gIHwgXywgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICB8IER1bXBfYXN0LCBEdW1wX2FzdCB8IERwYXJzZXRyZWUsIERwYXJzZXRyZWUgLT4gKClcbiAgfCBSZWNvbmNpbGUgYSwgUmVjb25jaWxlIGIgd2hlbiBQb2x5LmVxdWFsIGEgYiAtPiAoKVxuICB8IHgsIHkgLT5cbiAgICAgIGxldCBhcmdfb2Zfb3V0cHV0X21vZGUgPSBmdW5jdGlvblxuICAgICAgICB8IFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBEdW1wX2FzdCAtPiBcIi1kdW1wLWFzdFwiXG4gICAgICAgIHwgRHBhcnNldHJlZSAtPiBcIi1kcGFyc2V0cmVlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+IFwiLXJlY29uY2lsZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPiBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiXG4gICAgICAgIHwgTnVsbCAtPiBcIi1udWxsXCJcbiAgICAgIGluXG4gICAgICByYWlzZVxuICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyBhbmQgJXMgYXJlIGluY29tcGF0aWJsZVwiIChhcmdfb2Zfb3V0cHV0X21vZGUgeClcbiAgICAgICAgICAgICAgKGFyZ19vZl9vdXRwdXRfbW9kZSB5KSkpXG5cbmxldCBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCkgPVxuICBMaXN0Lml0ZXIgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0Lm5hbWUpXG5cbmxldCBwYXJzZV9hcHBseV9saXN0IHMgPVxuICBsZXQgbmFtZXMgPVxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiXCIgdGhlbiBbXSBlbHNlIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLCdcbiAgaW5cbiAgTGlzdC5pdGVyIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgaWZcbiAgICAgICAgbm90XG4gICAgICAgICAgKExpc3QuZXhpc3RzICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKFN0ZGxpYi5BcmcuQmFkXG4gICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiY29kZSB0cmFuc2Zvcm1hdGlvbiAnJXMnIGRvZXMgbm90IGV4aXN0XCIgbmFtZSkpKTtcbiAgbmFtZXNcblxudHlwZSBtYXNrID0ge1xuICBtdXRhYmxlIGFwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBtdXRhYmxlIGRvbnRfYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG59XG5cbmxldCBtYXNrID0geyBhcHBseSA9IE5vbmU7IGRvbnRfYXBwbHkgPSBOb25lIH1cblxubGV0IGhhbmRsZV9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICAoKiBUaGlzIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MgbW9yZSBpbnR1aXRpdmUgKilcbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgLWRvbnQtYXBwbHlcIik7XG4gIG1hc2suYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaGFuZGxlX2RvbnRfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICBtYXNrLmRvbnRfYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaW50ZXJwcmV0X21hc2sgKCkgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHx8IE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgbGV0IHNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIGN0ID1cbiAgICAgIGxldCBpc19jYW5kaWRhdGUgPVxuICAgICAgICBtYXRjaCBtYXNrLmFwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+IExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3NlbGVjdGVkID1cbiAgICAgICAgbWF0Y2ggbWFzay5kb250X2FwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlzX2NhbmRpZGF0ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgICAgIGlzX2NhbmRpZGF0ZSAmJiBub3QgKExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3NlbGVjdGVkIHRoZW4gU29tZSBjdC5uYW1lIGVsc2UgTm9uZVxuICAgIGluXG4gICAgYXBwbHlfbGlzdCA6PVxuICAgICAgU29tZSAoTGlzdC5maWx0ZXJfbWFwICFUcmFuc2Zvcm0uYWxsIH5mOnNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lKVxuXG5sZXQgc2V0X2Nvb2tpZSBzID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jz0nIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcImludmFsaWQgY29va2llLCBtdXN0IGJlIG9mIHRoZSBmb3JtIFxcXCI8bmFtZT49PGV4cHI+XFxcIlwiKVxuICB8IFNvbWUgKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyB2YWx1ZSBpblxuICAgICAgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCI8Y29tbWFuZC1saW5lPlwiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH07XG4gICAgICBsZXQgZXhwciA9IFBhcnNlLmV4cHJlc3Npb24gbGV4YnVmIGluXG4gICAgICBDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIDo9IChuYW1lLCBleHByKSA6OiAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaVxuXG5sZXQgc2hhcmVkX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1sb2MtZmlsZW5hbWVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGxvY19mbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCI8c3RyaW5nPiBGaWxlIG5hbWUgdG8gdXNlIGluIGxvY2F0aW9uc1wiICk7XG4gICAgKCBcIi1yZXNlcnZlLW5hbWVzcGFjZVwiLFxuICAgICAgQXJnLlN0cmluZyBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXMucmVzZXJ2ZSxcbiAgICAgIFwiPHN0cmluZz4gTWFyayB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFzIHJlc2VydmVkXCIgKTtcbiAgICAoXCItbm8tY2hlY2tcIiwgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzLCBcIiBEaXNhYmxlIGNoZWNrcyAodW5zYWZlKVwiKTtcbiAgICAoXCItY2hlY2tcIiwgQXJnLlNldCBwZXJmb3JtX2NoZWNrcywgXCIgRW5hYmxlIGNoZWNrc1wiKTtcbiAgICAoIFwiLW5vLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRGlzYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRW5hYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1uby1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIERpc2FibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRW5hYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBBcHBseSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgaW4gb3JkZXIgKGNvbW1hLXNlcGFyYXRlZCBsaXN0KVwiICk7XG4gICAgKCBcIi1kb250LWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9kb250X2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEV4Y2x1ZGUgdGhlc2UgdHJhbnNmb3JtYXRpb25zXCIgKTtcbiAgICAoIFwiLW5vLW1lcmdlXCIsXG4gICAgICBBcmcuU2V0IG5vX21lcmdlLFxuICAgICAgXCIgRG8gbm90IG1lcmdlIGNvbnRleHQgZnJlZSB0cmFuc2Zvcm1hdGlvbnMgKGJldHRlciBmb3IgZGVidWdnaW5nIFxcXG4gICAgICAgcmV3cml0ZXJzKS4gQXMgYSByZXN1bHQsIHRoZSBjb250ZXh0LWZyZWUgdHJhbnNmb3JtYXRpb25zIGFyZSBub3QgYWxsIFxcXG4gICAgICAgYXBwbGllZCBiZWZvcmUgYWxsIGltcGwgYW5kIGludGYuXCIgKTtcbiAgICAoXCItY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCJOQU1FPUVYUFIgU2V0IHRoZSBjb29raWUgTkFNRSB0byBFWFBSXCIpO1xuICAgIChcIi0tY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCIgU2FtZSBhcyAtY29va2llXCIpO1xuICBdXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlciBzaGFyZWRfYXJncyB+ZjooZnVuIChrZXksIHNwZWMsIGRvYykgLT4gYWRkX2FyZyBrZXkgc3BlYyB+ZG9jKVxuXG5sZXQgYXNfcHAgKCkgPVxuICBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3Q7XG4gIGVtYmVkX2Vycm9ycyA6PSB0cnVlXG5cbmxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFJ1biBhcyBhIC1wcHggcmV3cml0ZXIgKG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50KVwiICk7XG4gICAgKCBcIi0tYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLS1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgU2FtZSBhcyAtYXMtcHB4XCIgKTtcbiAgICAoXCItYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNob3J0aGFuZCBmb3I6IC1kdW1wLWFzdCAtZW1iZWQtZXJyb3JzXCIpO1xuICAgIChcIi0tYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNhbWUgYXMgLWFzLXBwXCIpO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0IDo9IFNvbWUgcyksXG4gICAgICBcIjxmaWxlbmFtZT4gT3V0cHV0IGZpbGUgKHVzZSAnLScgZm9yIHN0ZG91dClcIiApO1xuICAgIChcIi1cIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfaW5wdXQgXCItXCIpLCBcIiBSZWFkIGlucHV0IGZyb20gc3RkaW5cIik7XG4gICAgKCBcIi1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgRHVtcCB0aGUgbWFyc2hhbGVkIGFzdCB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZCBvZiBwcmV0dHktcHJpbnRpbmcgaXRcIlxuICAgICk7XG4gICAgKCBcIi0tZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIFNhbWUgYXMgLWR1bXAtYXN0XCIgKTtcbiAgICAoIFwiLWRwYXJzZXRyZWVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIERwYXJzZXRyZWUpLFxuICAgICAgXCIgUHJpbnQgdGhlIHBhcnNldHJlZSAoc2FtZSBhcyBvY2FtbGMgLWRwYXJzZXRyZWUpXCIgKTtcbiAgICAoIFwiLWVtYmVkLWVycm9yc1wiLFxuICAgICAgQXJnLlNldCBlbWJlZF9lcnJvcnMsXG4gICAgICBcIiBFbWJlZCBlcnJvcnMgaW4gdGhlIG91dHB1dCBBU1QgKGRlZmF1bHQ6IHRydWUgd2hlbiAtYXMtcHAsIGZhbHNlIFxcXG4gICAgICAgb3RoZXJ3aXNlKVwiICk7XG4gICAgKCBcIi1udWxsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBOdWxsKSxcbiAgICAgIFwiIFByb2R1Y2Ugbm8gb3V0cHV0LCBleGNlcHQgZm9yIGVycm9yc1wiICk7XG4gICAgKCBcIi1pbXBsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1sIGZpbGVcIiApO1xuICAgIChcIi0taW1wbFwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbXBsXCIpO1xuICAgICggXCItaW50ZlwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbGkgZmlsZVwiICk7XG4gICAgKFwiLS1pbnRmXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksIFwiPGZpbGU+IFNhbWUgYXMgLWludGZcIik7XG4gICAgKCBcIi1kZWJ1Zy1hdHRyaWJ1dGUtZHJvcFwiLFxuICAgICAgQXJnLlNldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCxcbiAgICAgIFwiIERlYnVnIGF0dHJpYnV0ZSBkcm9wcGluZ1wiICk7XG4gICAgKCBcIi1wcmludC10cmFuc2Zvcm1hdGlvbnNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMsXG4gICAgICBcIiBQcmludCBsaW5rZWQtaW4gY29kZSB0cmFuc2Zvcm1hdGlvbnMsIGluIHRoZSBvcmRlciB0aGV5IGFyZSBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLXByaW50LXBhc3Nlc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyxcbiAgICAgIFwiIFByaW50IHRoZSBhY3R1YWwgcGFzc2VzIG92ZXIgdGhlIHdob2xlIEFTVCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgXFxcbiAgICAgICBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLWl0ZS1jaGVja1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIldhcm5pbmc6IHRoZSAtaXRlLWNoZWNrIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgaGFzIG5vIGVmZmVjdC5cXG4lIVwiO1xuICAgICAgICAgIEV4dHJhX3dhcm5pbmdzLmNhcmVfYWJvdXRfaXRlX2JyYW5jaCA6PSB0cnVlKSxcbiAgICAgIFwiIChubyBlZmZlY3QgLS0ga2VwdCBmb3IgY29tcGF0aWJpbGl0eSlcIiApO1xuICAgICggXCItcHBcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHByZXByb2Nlc3NvciA6PSBTb21lIHMpLFxuICAgICAgXCI8Y29tbWFuZD4gIFBpcGUgc291cmNlcyB0aHJvdWdoIHByZXByb2Nlc3NvciA8Y29tbWFuZD4gKGluY29tcGF0aWJsZSBcXFxuICAgICAgIHdpdGggLWFzLXBweClcIiApO1xuICAgICggXCItcmVjb25jaWxlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcykpLFxuICAgICAgXCIgKFdJUCkgUHJldHR5IHByaW50IHRoZSBvdXRwdXQgdXNpbmcgYSBtaXggb2YgdGhlIGlucHV0IHNvdXJjZSBhbmQgdGhlIFxcXG4gICAgICAgZ2VuZXJhdGVkIGNvZGVcIiApO1xuICAgICggXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSksXG4gICAgICBcIiAoV0lQKSBzYW1lIGFzIC1yZWNvbmNpbGUgYnV0IHVzZXMgY29tbWVudHMgdG8gZW5jbG9zZSB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIERvbid0IHVzZSBjb2xvcnMgd2hlbiBwcmludGluZyBlcnJvcnNcIik7XG4gICAgKCBcIi1kaWZmLWNtZFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcyksXG4gICAgICBcIiBEaWZmIGNvbW1hbmQgd2hlbiB1c2luZyBjb2RlIGV4cGVjdGF0aW9ucyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiICk7XG4gICAgKCBcIi1wcmV0dHlcIixcbiAgICAgIEFyZy5TZXQgcHJldHR5LFxuICAgICAgXCIgSW5zdHJ1Y3QgY29kZSBnZW5lcmF0b3JzIHRvIGltcHJvdmUgdGhlIHByZXR0aW5lc3Mgb2YgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1zdHlsZXJcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc3R5bGVyIDo9IFNvbWUgcyksIFwiIENvZGUgc3R5bGVyXCIpO1xuICAgICggXCItb3V0cHV0LW1ldGFkYXRhXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiRklMRSBXaGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IG1ldGFkYXRhXCIgKTtcbiAgICAoIFwiLWNvcnJlY3RlZC1zdWZmaXhcIixcbiAgICAgIEFyZy5TZXRfc3RyaW5nIGNvcnJlY3RlZF9zdWZmaXgsXG4gICAgICBcIlNVRkZJWCBTdWZmaXggdG8gYXBwZW5kIHRvIGNvcnJlY3RlZCBmaWxlc1wiICk7XG4gIF1cblxubGV0IGdldF9hcmdzID8oc3RhbmRhbG9uZV9hcmdzID0gc3RhbmRhbG9uZV9hcmdzKSAoKSA9XG4gIHN0YW5kYWxvbmVfYXJncyBAIExpc3QucmV2ICFhcmdzXG5cbmxldCBzdGFuZGFsb25lX21haW4gKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSBbPGZpbGVzPl1cIiBleGVfbmFtZSBpblxuICBsZXQgYXJncyA9IGdldF9hcmdzICgpIGluXG4gIEFyZy5wYXJzZSAoQXJnLmFsaWduIGFyZ3MpIHNldF9pbnB1dCB1c2FnZTtcbiAgaW50ZXJwcmV0X21hc2sgKCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyB0aGVuIChcbiAgICBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3Bhc3NlcyB0aGVuIChcbiAgICBwcmludF9wYXNzZXMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogbm8gaW5wdXQgZmlsZSBnaXZlblxcbiUhXCIgZXhlX25hbWU7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgU29tZSBmbiAtPlxuICAgICAgbGV0IGtpbmQgPVxuICAgICAgICBtYXRjaCAha2luZCB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgIG1hdGNoIEtpbmQub2ZfZmlsZW5hbWUgZm4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgIFwiJXM6IGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoICclcycsIHVzZSAtaW1wbCBvciAtaW50Zi5cXG5cIlxuICAgICAgICAgICAgICAgICAgZXhlX25hbWUgZm47XG4gICAgICAgICAgICAgICAgU3RkbGliLmV4aXQgMilcbiAgICAgIGluXG4gICAgICBsZXQgaW5wdXRfbmFtZSwgcmVsb2NhdGUgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGggTm9uZSAtPiAoZm4sIGZhbHNlKSB8IFNvbWUgZm4gLT4gKGZuLCB0cnVlKVxuICAgICAgaW5cbiAgICAgIHByb2Nlc3NfZmlsZSBraW5kIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGU6IW91dHB1dF9tb2RlXG4gICAgICAgIH5vdXRwdXQ6IW91dHB1dCB+ZW1iZWRfZXJyb3JzOiFlbWJlZF9lcnJvcnNcblxubGV0IHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbiA9XG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPSBsb2FkX2lucHV0X3J1bl9hc19wcHggaW5wdXRfZm4gaW5cbiAgbGV0IGFzdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgYXN0ID0gZXh0cmFjdF9jb29raWVzIGFzdCBpblxuICAgICAgbGV0IHRvb2xfbmFtZSA9IEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpIGluXG4gICAgICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICAgICAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICAgICAgcHJvY2Vzc19hc3QgYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgIH5lbWJlZF9lcnJvcnM6dHJ1ZVxuICAgIHdpdGggZXhuIC0+IGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kOihJbnRmX29yX2ltcGwua2luZCBhc3QpXG4gIGluXG4gIHdpdGhfb3V0cHV0IChTb21lIG91dHB1dF9mbikgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgIEFzdF9pby53cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcblxubGV0IHBhcnNlX2lucHV0IHBhc3NlZF9pbl9hcmdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgcGFzc2VkX2luX2FyZ3MgKEFyZy5hbGlnbiB2YWxpZF9hcmdzKVxuICAgICAgKGZ1biBfIC0+IHJhaXNlIChBcmcuQmFkIFwiYW5vbnltb3VzIGFyZ3VtZW50cyBub3QgYWNjZXB0ZWRcIikpXG4gICAgICBpbmNvcnJlY3RfaW5wdXRfbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAwXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgaW5wdXQgPVxuICBsZXQgdmFsaWRfYXJncyA9IGdldF9hcmdzIH5zdGFuZGFsb25lX2FyZ3MgKCkgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgQEAgQXJyYXkudG9fbGlzdCBAQCBpbnB1dCB3aXRoXG4gIHwgb3V0cHV0X2ZuIDo6IGlucHV0X2ZuIDo6IGZsYWdzX2FuZF9wcm9nX25hbWVcbiAgICB3aGVuIExpc3QubGVuZ3RoIGZsYWdzX2FuZF9wcm9nX25hbWUgPiAwIC0+XG4gICAgICBsZXQgcHJvZ19uYW1lX2FuZF9mbGFncyA9IExpc3QucmV2IGZsYWdzX2FuZF9wcm9nX25hbWUgfD4gQXJyYXkub2ZfbGlzdCBpblxuICAgICAgcGFyc2VfaW5wdXQgcHJvZ19uYW1lX2FuZF9mbGFncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGludGVycHJldF9tYXNrICgpO1xuICAgICAgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuO1xuICAgICAgU3RkbGliLmV4aXQgMFxuICB8IFsgaGVscDsgXyBdIHdoZW4gU3RyaW5nLmVxdWFsIGhlbHAgXCItaGVscFwiIHx8IFN0cmluZy5lcXVhbCBoZWxwIFwiLS1oZWxwXCIgLT5cbiAgICAgIHBhcnNlX2lucHV0IGlucHV0IH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHwgXyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCJVc2FnZTogJXNcXG4lIVwiIHVzYWdlO1xuICAgICAgU3RkbGliLmV4aXQgMlxuXG5sZXQgc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2IGluXG4gIGxldCB1c2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyAtYXMtcHB4IFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZVxuICBpblxuICBsZXQgYXJndiA9IEFycmF5Lm1ha2UgKG4gLSAxKSBcIlwiIGluXG4gIGFyZ3YuKDApIDwtIFN0ZGxpYi5TeXMuYXJndi4oMCk7XG4gIGZvciBpID0gMSB0byBuIC0gMiBkb1xuICAgIGFyZ3YuKGkpIDwtIFN0ZGxpYi5TeXMuYXJndi4oaSArIDEpXG4gIGRvbmU7XG4gIGxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICAgIExpc3QubWFwIHN0YW5kYWxvbmVfYXJncyB+ZjooZnVuIChhcmcsIHNwZWMsIF9kb2MpIC0+XG4gICAgICAgIChhcmcsIHNwZWMsIFwiIFVudXNlZCB3aXRoIC1hcy1wcHhcIikpXG4gIGluXG4gIHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBhcmd2XG5cbmxldCBzdGFuZGFsb25lICgpID1cbiAgQXN0bGliLmluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaW5nX2Vudl92YXJzICgpO1xuICB0cnlcbiAgICBpZlxuICAgICAgQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiA+PSAyXG4gICAgICAmJlxuICAgICAgbWF0Y2ggU3RkbGliLlN5cy5hcmd2LigxKSB3aXRoXG4gICAgICB8IFwiLWFzLXBweFwiIHwgXCItLWFzLXBweFwiIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpXG4gICAgZWxzZSBzdGFuZGFsb25lX21haW4gKCk7XG4gICAgU3RkbGliLmV4aXQgMFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWUgaW5cbiAgbGV0IGlucHV0ID0gU3RkbGliLlN5cy5hcmd2IGluXG4gIHRyeSBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJnczpbXSB+dXNhZ2UgaW5wdXRcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcHJldHR5ICgpID0gIXByZXR0eVxuXG5sZXQgZW5hYmxlX2NoZWNrcyAoKSA9XG4gICgqIFdlIGRvIG5vdCBlbmFibGUgdGhlIGxvY2F0aW9ucyBjaGVjayBoZXJlLCB3ZSBjdXJyZW50bHkgcmVxdWlyZSB0aGF0IG9uZVxuICAgICB0byBiZSBzcGVjaWZpY2FsbHkgZW5hYmxlZC4gKilcbiAgcGVyZm9ybV9jaGVja3MgOj0gdHJ1ZTtcbiAgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA6PSB0cnVlXG5cbmxldCBlbmFibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSB0cnVlXG5sZXQgZGlzYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IGZhbHNlXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9IG1hcF9zdHJ1Y3R1cmUgc3RcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxubGV0IHVuZGVyc2NvcmVfYmluZGluZyBleHAgPVxuICBsZXQgbG9jID0gZXhwLnBleHBfbG9jIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKSB+ZXhwcjpleHBcblxubGV0IHZhcnNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb25naWRlbnQudCBMb2NhdGVkLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXR0IGFjYyA9XG4gICAgICBtYXRjaCBwYXR0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdmFyIHYgLT4gTG9jYXRlZC5tYXAgKGZ1biB2YXIgLT4gTG9uZ2lkZW50LkxpZGVudCB2YXIpIHYgOjogYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXR0IGFjY1xuICBlbmRcblxuKCogRm9yIGV2ZXJ5IFtsZXQgeCA9IC4uLl0gc3RydWN0dXJlIGl0ZW0sIGFkZCBhIFtsZXQgXyA9IHhdICopXG5sZXQgYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIHN0IGFjYyA9XG4gICAgICAgIG1hdGNoIHN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgICAgfCAoeyBwc3RyX2Rlc2MgPSBQc3RyX3ZhbHVlIChfLCB2YnMpOyBwc3RyX2xvYyA9IGxvYyB9IGFzIGl0ZW0pIDo6IHJlc3RcbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IHZhcnMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCB2YnMgfmluaXQ6W10gfmY6KGZ1biBhY2MgdmIgLT5cbiAgICAgICAgICAgICAgICAgIHZhcnNfb2YjcGF0dGVybiB2Yi5wdmJfcGF0IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaWduID1cbiAgICAgICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgKExpc3QucmV2X21hcCB2YXJzIH5mOihmdW4gdiAtPlxuICAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZV9iaW5kaW5nIChwZXhwX2lkZW50IH5sb2M6di5sb2MgdikpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxvb3AgcmVzdCAoaWduIEAgKGl0ZW0gOjogYWNjKSlcbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gbG9vcCByZXN0IChpdGVtIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wIChzdXBlciNzdHJ1Y3R1cmUgc3QpIFtdXG4gIGVuZFxuXG5sZXQgYmluZHNfbW9kdWxlX25hbWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbYm9vbF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgbWIgYWNjID1cbiAgICAgIG1hdGNoIG1iLnBtYl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBtYiBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjYyA9XG4gICAgICBtYXRjaCBtZC5wbWRfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIG1zIF8gPVxuICAgICAgbWF0Y2ggbXMucG1zX25hbWUudHh0IHdpdGggKF8gOiBzdHJpbmcpIC0+IHRydWVcblxuICAgIG1ldGhvZCEgZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgVW5pdCAtPiBhY2NcbiAgICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2Z1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYylcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXQgYWNjID1cbiAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3VucGFjayBuYW1lIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoIFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWUgfCBOb25lIC0+IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBleHByIGFjYyA9XG4gICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBfLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2NcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbigqIFtkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlXSAtLSBJZiB0cnVlLCBnZW5lcmF0ZWQgY29kZVxuICAgY29udGFpbnMgY29tcGlsZXIgYXR0cmlidXRlIHRvIGRpc2FibGUgdW51c2VkIHdhcm5pbmdzLCBpbnN0ZWFkIG9mXG4gICBpbnNlcnRpbmcgW2xldCBfID0gLi4uIF0uICopXG5sZXQgZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3czMl9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93MzJfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBsZXQgY29udl93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImNvZGVcIjsgXCJhdHRyaWJ1dGVcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiY29kZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gZmFsc2VcbiAgICAgICAgfCBcImF0dHJpYnV0ZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIEhvdyB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWtlZXAtdzMyXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi13MzJcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiXG5cbmxldCBrZWVwX3czMl9pbXBsICgpID0gIWtlZXBfdzMyX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzMyX2ludGYgKCkgPSAha2VlcF93MzJfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzYwX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzYwX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3c2MF9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzYwXCIga2VlcF93NjBfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgNjAgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiXG5cbmxldCBrZWVwX3c2MF9pbXBsICgpID0gIWtlZXBfdzYwX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ludGYgKCkgPSAha2VlcF93NjBfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgPSByZWYgT3B0aW9ucy5kZWZhdWx0X2FsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbmxldCAoKSA9XG4gIERyaXZlci5hZGRfYXJnIFwiLXVudXNlZC1jb2RlLXdhcm5pbmdzXCJcbiAgICAoQm9vbCAoKCA6PSApIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzKSlcbiAgICB+ZG9jOlwiXyBBbGxvdyBwcHggZGVyaXZlcnMgdG8gZW5hYmxlIHVudXNlZCBjb2RlIHdhcm5pbmdzXCJcblxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpID0gIWFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbm1vZHVsZSBBcmdzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIEFzdF9wYXR0ZXJuIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEFzdF9wYXR0ZXJuXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udClcblxuICB0eXBlICdhIHBhcmFtID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgcGF0dGVybiA6IChleHByZXNzaW9uLCAnYSkgQXN0X3BhdHRlcm4uUGFja2VkLnQ7XG4gICAgZGVmYXVsdCA6ICdhO1xuICB9XG5cbiAgbGV0IGFyZyBuYW1lIHBhdHRlcm4gPVxuICAgIHtcbiAgICAgIG5hbWU7XG4gICAgICBkZWZhdWx0ID0gTm9uZTtcbiAgICAgIHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gKGZ1biB4IC0+IFNvbWUgeCk7XG4gICAgfVxuXG4gIGxldCBmbGFnIG5hbWUgPVxuICAgIGxldCBwYXR0ZXJuID0gcGV4cF9pZGVudCAobGlkZW50IChzdHJpbmcgbmFtZSkpIGluXG4gICAgeyBuYW1lOyBkZWZhdWx0ID0gZmFsc2U7IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gdHJ1ZSB9XG5cbiAgdHlwZSAoXywgXykgdCA9XG4gICAgfCBOaWwgOiAoJ20sICdtKSB0XG4gICAgfCBDb25zIDogKCdtMSwgJ2EgLT4gJ20yKSB0ICogJ2EgcGFyYW0gLT4gKCdtMSwgJ20yKSB0XG5cbiAgbGV0IGVtcHR5ID0gTmlsXG4gIGxldCAoICs+ICkgYSBiID0gQ29ucyAoYSwgYilcblxuICBsZXQgcmVjIG5hbWVzIDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IHN0cmluZyBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAodCwgcCkgLT4gcC5uYW1lIDo6IG5hbWVzIHRcblxuICBtb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlIChfLCBfKSBpbnN0YW5jZSA9XG4gICAgICB8IElfbmlsIDogKCdtLCAnbSkgaW5zdGFuY2VcbiAgICAgIHwgSV9jb25zIDogKCdtMSwgJ2EgLT4gJ20yKSBpbnN0YW5jZSAqICdhIC0+ICgnbTEsICdtMikgaW5zdGFuY2VcblxuICAgIGxldCByZWMgY3JlYXRlIDpcbiAgICAgICAgdHlwZSBhIGIuIChhLCBiKSB0IC0+IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0IC0+IChhLCBiKSBpbnN0YW5jZSA9XG4gICAgIGZ1biBzcGVjIGFyZ3MgLT5cbiAgICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgICAgfCBOaWwgLT4gSV9uaWxcbiAgICAgIHwgQ29ucyAodCwgcCkgLT5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvY19vcHQgcC5uYW1lIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHAuZGVmYXVsdFxuICAgICAgICAgICAgfCBTb21lIGV4cHIgLT4gQXN0X3BhdHRlcm4uUGFja2VkLnBhcnNlIHAucGF0dGVybiBleHByLnBleHBfbG9jIGV4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIElfY29ucyAoY3JlYXRlIHQgYXJncywgdmFsdWUpXG5cbiAgICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIuIChhLCBiKSBpbnN0YW5jZSAtPiBhIC0+IGIgPVxuICAgICBmdW4gdCBmIC0+IG1hdGNoIHQgd2l0aCBJX25pbCAtPiBmIHwgSV9jb25zICh0LCB4KSAtPiBhcHBseSB0IGYgeFxuICBlbmRcblxuICBsZXQgYXBwbHkgdCBhcmdzIGYgPSBJbnN0YW5jZS5hcHBseSAoSW5zdGFuY2UuY3JlYXRlIHQgYXJncykgZlxuZW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgR2VuZXJhdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBpZ25vcmUgKF8gOiB0KSA9ICgpXG5cbnR5cGUgcGFyc2VkX2FyZ3MgPVxuICB8IEFyZ3Mgb2YgKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgfCBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbnR5cGUgJ2l0ZW0gZGVyaXZlZF9jb2RlID0geyBpdGVtcyA6ICdpdGVtIGxpc3Q7IHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbCB9XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBkZXJpdmVyID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBUIDoge1xuICAgICAgICBzcGVjIDogKCdjLCAnYSkgQXJncy50O1xuICAgICAgICBnZW4gOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYztcbiAgICAgICAgYXJnX25hbWVzIDogU3RyaW5nLlNldC50O1xuICAgICAgICBkZXBzIDogZGVyaXZlciBsaXN0O1xuICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2w7XG4gICAgICB9XG4gICAgICAgIC0+ICgnYSwgJ2IpIHRcblxuICBsZXQgZGVwcyAoVCB0KSA9IHQuZGVwc1xuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlID9hdHRyaWJ1dGVzOihfID0gW10pID8oZGVwcyA9IFtdKSA/KHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UpXG4gICAgICAgIHNwZWMgZ2VuID1cbiAgICAgIGxldCBhcmdfbmFtZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEFyZ3MubmFtZXMgc3BlYykgaW5cbiAgICAgIFQgeyBzcGVjOyBnZW47IGFyZ19uYW1lczsgZGVwczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfVxuXG4gICAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuICBlbmRcblxuICBsZXQgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlYyBnZW4gPVxuICAgIFYyLm1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWNcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLndpdGhfbG9jX2FuZF9wYXRoIGdlbilcblxuICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuXG4gIGxldCBtZXJnZV9hY2NlcHRlZF9hcmdzIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgVCB0IDo6IHJlc3QgLT4gbG9vcCAoU3RyaW5nLlNldC51bmlvbiBhY2MgdC5hcmdfbmFtZXMpIHJlc3RcbiAgICBpblxuICAgIGxvb3AgU3RyaW5nLlNldC5lbXB0eSBsXG5cbiAgbGV0IGNoZWNrX2FyZ3VtZW50cyBuYW1lIGdlbmVyYXRvcnMgKGFyZ3MgOiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCkgPVxuICAgIGxldCBlbXB0eV9sYWJlbF9lcnJvciA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgbGFiZWwgdGhlblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciBhcmd1bWVudHMgbXVzdCBiZSBsYWJlbGxlZFwiKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgPVxuICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAoTGlzdC5maW5kX2FfZHVwIGFyZ3MgfmNvbXBhcmU6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG4gICAgICAgIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogYXJndW1lbnQgbGFiZWxsZWQgJyVzJyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlXCJcbiAgICAgICAgICAgIGxhYmVsKVxuICAgICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICBpblxuICAgIGxldCBhY2NlcHRlZF9hcmdzID0gbWVyZ2VfYWNjZXB0ZWRfYXJncyBnZW5lcmF0b3JzIGluXG4gICAgbGV0IHVuYWNjZXB0ZWRfYXJndW1lbnQgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuU2V0Lm1lbSBsYWJlbCBhY2NlcHRlZF9hcmdzKSB0aGVuXG4gICAgICAgICAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoU3RyaW5nLlNldC5lbGVtZW50cyBhY2NlcHRlZF9hcmdzKSBsYWJlbFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgJyVzJyBkb2Vzbid0IGFjY2VwdCBhcmd1bWVudCBcXFxuICAgICAgICAgICAgICAgICAgJyVzJyVzXCJcbiAgICAgICAgICAgICAgICAgbmFtZSBsYWJlbCBzcGVsbGNoZWNrX21zZylcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGVtcHR5X2xhYmVsX2Vycm9yIEAgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIEAgdW5hY2NlcHRlZF9hcmd1bWVudFxuICAgIGluXG4gICAgaWYgTGlzdC5sZW5ndGggZXJyb3JzID0gMCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JzXG5cbiAgbGV0IGFwcGx5IChUIHQpIH5uYW1lOl8gfmN0eHQgeCBhcmdzID0gQXJncy5hcHBseSB0LnNwZWMgYXJncyAodC5nZW4gfmN0eHQgeClcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IChuYW1lLCBnZW5lcmF0b3JzLCBhcmdzKSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgY2hlY2tfYXJndW1lbnRzIG5hbWUudHh0IGdlbmVyYXRvcnMgYXJncyA+PnwgZnVuICgpIC0+XG4gICAgTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBpdGVtcyA9IGFwcGx5IChUIHQpIH5uYW1lOm5hbWUudHh0IH5jdHh0IGVudHJ5IGFyZ3M7XG4gICAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgPSB0LnVudXNlZF9jb2RlX3dhcm5pbmdzO1xuICAgICAgICB9KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgZ2VuZXJhdG9ycyBleHRfdG9faXRlbSA9XG4gICAgbGV0IGwgPSBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihhcHBseV9hbGwgfmN0eHQgZW50cnkpIGluXG4gICAgbGV0IGwxLCBsZXJyID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcCAoZnVuY3Rpb24gT2sgZSAtPiBMZWZ0IGUgfCBFcnJvciBlIC0+IFJpZ2h0IGUpIGxcbiAgICBpblxuICAgIGxldCBsZXJyID1cbiAgICAgIExpc3QuY29uY2F0IGxlcnJcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gZXJyIC0+IGV4dF90b19pdGVtIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgaW5cbiAgICBMaXN0LmNvbmNhdCBsMSBAIFsgeyBpdGVtcyA9IGxlcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfSBdXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFjdHVhbF9kZXJpdmVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIHN0cl90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBleHRlbnNpb24gOlxuICAgICAgICAobG9jOkxvY2F0aW9uLnQgLT4gcGF0aDpzdHJpbmcgLT4gY29yZV90eXBlIC0+IGV4cHJlc3Npb24pIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBBbGlhcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN0cl90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl90eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUga2luZCA9IFN0ciB8IFNpZ1xuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGtpbmQgOiBraW5kO1xuICAgICAgZ2V0IDogQWN0dWFsX2Rlcml2ZXIudCAtPiAoJ2EsICdiKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBnZXRfc2V0IDogQWxpYXMudCAtPiBzdHJpbmcgbGlzdDtcbiAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwiZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgbW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuICBlbmRcblxuICB0eXBlIHQgPSBBY3R1YWxfZGVyaXZlciBvZiBBY3R1YWxfZGVyaXZlci50IHwgQWxpYXMgb2YgQWxpYXMudFxuICB0eXBlIFBweF9kZXJpdmVycy5kZXJpdmVyICs9IFQgb2YgdFxuXG4gIGxldCBkZXJpdmVycyAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChQcHhfZGVyaXZlcnMuZGVyaXZlcnMgKCkpIH5mOihmdW5jdGlvblxuICAgICAgfCBuYW1lLCBUIHQgLT4gU29tZSAobmFtZSwgdClcbiAgICAgIHwgXyAtPiBOb25lKVxuXG4gIGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIG9mIHN0cmluZ1xuXG4gIGxldCByZXNvbHZlX2FjdHVhbF9kZXJpdmVycyAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgbGV0IHJlYyBsb29wIG5hbWUgY29sbGVjdGVkID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzIGNvbGxlY3RlZCB+ZjooZnVuIChkIDogQWN0dWFsX2Rlcml2ZXIudCkgLT5cbiAgICAgICAgICAgIFN0cmluZy5lcXVhbCBkLm5hbWUgbmFtZSlcbiAgICAgIHRoZW4gY29sbGVjdGVkXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSAoVCAoQWN0dWFsX2Rlcml2ZXIgZHJ2KSkgLT4gZHJ2IDo6IGNvbGxlY3RlZFxuICAgICAgICB8IFNvbWUgKFQgKEFsaWFzIGFsaWFzKSkgLT5cbiAgICAgICAgICAgIGxldCBzZXQgPSBmaWVsZC5nZXRfc2V0IGFsaWFzIGluXG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgc2V0IH5pbml0OmNvbGxlY3RlZCB+Zjpsb29wXG4gICAgICAgIHwgXyAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgbmFtZSBbXSlcblxuICBsZXQgcmVzb2x2ZV9pbnRlcm5hbCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgTGlzdC5tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIG5hbWUpIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgIG1hdGNoIGZpZWxkLmdldCBkcnYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICAgICAgfCBTb21lIGcgLT4gKGRydi5uYW1lLCBnKSlcblxuICBsZXQgc3VwcG9ydGVkX2ZvciBmaWVsZCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGRlcml2ZXJzICgpKSB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IH5mOihmdW4gYWNjIChuYW1lLCBfKSAtPlxuICAgICAgICBtYXRjaCByZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICB8IF8gLT4gU3RyaW5nLlNldC5hZGQgbmFtZSBhY2NcbiAgICAgICAgfCBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBfIC0+IGFjYylcbiAgICB8PiBTdHJpbmcuU2V0LmVsZW1lbnRzXG5cbiAgbGV0IG5vdF9zdXBwb3J0ZWQgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpID8oc3BlbGxjaGVjayA9IHRydWUpIG5hbWUgPVxuICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICBpZiBzcGVsbGNoZWNrIHRoZW5cbiAgICAgICAgbWF0Y2ggU3BlbGxjaGVjay5zcGVsbGNoZWNrIChzdXBwb3J0ZWRfZm9yIGZpZWxkKSBuYW1lLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgZWxzZSBcIlwiXG4gICAgaW5cbiAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgIFwiUHB4bGliLkRlcml2aW5nOiAnJXMnIGlzIG5vdCBhIHN1cHBvcnRlZCAlcyBkZXJpdmluZyBnZW5lcmF0b3Ilc1wiXG4gICAgICBuYW1lLnR4dCBmaWVsZC5uYW1lIHNwZWxsY2hlY2tfbXNnXG5cbiAgbGV0IHJlc29sdmUgZmllbGQgbmFtZSA9XG4gICAgdHJ5IE9rIChyZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUudHh0KVxuICAgIHdpdGggTm90X3N1cHBvcnRlZCBuYW1lJyAtPlxuICAgICAgRXJyb3IgKG5vdF9zdXBwb3J0ZWQgZmllbGQgfnNwZWxsY2hlY2s6KFN0cmluZy5lcXVhbCBuYW1lLnR4dCBuYW1lJykgbmFtZSlcblxuICBsZXQgcmVzb2x2ZV9hbGwgZmllbGQgZGVyaXZlcnMgPVxuICAgIGxldCBkZXJpdmVyc19hbmRfYXJncywgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcFxuICAgICAgICAoZnVuIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFaXRoZXIuUmlnaHQgKG5vdF9zdXBwb3J0ZWQgZmllbGQgbmFtZSlcbiAgICAgICAgICB8IFNvbWUgKFQgXykgLT4gKFxuICAgICAgICAgICAgICAoKiBJdCdzIG9uZSBvZiBvdXJzLCBwYXJzZSB0aGUgYXJndW1lbnRzIG5vdy4gV2UgY2FuJ3QgZG8gaXQgYmVmb3JlIHNpbmNlXG4gICAgICAgICAgICAgICAgIHBweF9kZXJpdmluZyB1c2VzIGEgZGlmZmVyZW50IHN5bnRheCBmb3IgYXJndW1lbnRzLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICAgICAgfCBBcmdzIGwgLT4gRWl0aGVyLkxlZnQgKFNvbWUgKG5hbWUsIGwpKVxuICAgICAgICAgICAgICB8IFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT5cbiAgICAgICAgICAgICAgICAgIEVpdGhlci5SaWdodFxuICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIFwiUHB4bGliLkRlcml2aW5nOiAlc1wiIG1zZykpXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgKCogSXQncyBub3Qgb25lIG9mIG91cnMsIGlnbm9yZSBpdC4gKilcbiAgICAgICAgICAgICAgRWl0aGVyLkxlZnQgTm9uZSlcbiAgICAgICAgZGVyaXZlcnNcbiAgICAgIHw+IGZ1biAobDEsIGwyKSAtPiAoTGlzdC5maWx0ZXJfb3B0IGwxLCBsMilcbiAgICBpblxuICAgICgqIFNldCBvZiBhY3R1YWwgZGVyaXZlciBuYW1lcyAqKVxuICAgIGxldCBzZWVuID0gSGFzaHRibC5jcmVhdGUgMTYgaW5cbiAgICBsZXQgcmVzdWx0LCBkZXBfZXJyb3JzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5pbml0OihbXSwgW10pIGRlcml2ZXJzX2FuZF9hcmdzXG4gICAgICAgIH5mOihmdW4gKHJlc3VsdCwgZXJyb3JzKSAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCByZXNvbHZlIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPiAocmVzdWx0LCBlcnJvcnMgQCBbIGUgXSlcbiAgICAgICAgICB8IE9rIG5hbWVkX2dlbmVyYXRvcnMgLT5cbiAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgbmFtZWRfZ2VuZXJhdG9yc1xuICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoYWN0dWFsX2Rlcml2ZXJfbmFtZSwgZ2VuKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZHVwX2Vycm9yID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucy5mYWlsX29uX2R1cGxpY2F0ZV9kZXJpdmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgSGFzaHRibC5tZW0gc2VlbiBhY3R1YWxfZGVyaXZlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgYXBwZWFycyB0d2ljZVwiIGFjdHVhbF9kZXJpdmVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCAoR2VuZXJhdG9yLmRlcHMgZ2VuKSB+ZjooZnVuIGRlcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIGRlcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIGRydiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlcF9uYW1lID0gZHJ2Lm5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoSGFzaHRibC5tZW0gc2VlbiBkZXBfbmFtZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBpcyBuZWVkZWQgZm9yICVzLCB5b3UgbmVlZCB0byBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgaXQgYmVmb3JlIGluIHRoZSBsaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBfbmFtZSBuYW1lLnR4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHNlZW4gfmtleTphY3R1YWxfZGVyaXZlcl9uYW1lIH5kYXRhOigpO1xuICAgICAgICAgICAgICAgICAgICBkdXBfZXJyb3IgQCBsX2VycilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCByZXN1bHQgQCBbIChuYW1lLCBMaXN0Lm1hcCBuYW1lZF9nZW5lcmF0b3JzIH5mOnNuZCwgYXJncykgXSxcbiAgICAgICAgICAgICAgICBlcnJvcnMgQCBsX2VyciApKVxuICAgIGluXG4gICAgKHJlc3VsdCwgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIEAgZGVwX2Vycm9ycylcblxuICBsZXQgYWRkID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb24gP3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uID9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP2V4dGVuc2lvbiBuYW1lID1cbiAgICBsZXQgYWN0dWFsX2Rlcml2ZXIgOiBBY3R1YWxfZGVyaXZlci50ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgZXh0ZW5zaW9uO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGFjdHVhbF9kZXJpdmVyKSk7XG4gICAgKG1hdGNoIGV4dGVuc2lvbiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT5cbiAgICAgICAgbGV0IGV4dGVuc2lvbiA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmRlY2xhcmUgbmFtZSBFeHByZXNzaW9uIEFzdF9wYXR0ZXJuLihwdHlwIF9fKSBmXG4gICAgICAgIGluXG4gICAgICAgIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgIChcIlBweGxpYi5EZXJpdmluZy5cIiBeIG5hbWUpXG4gICAgICAgICAgfnJ1bGVzOlsgQ29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIGV4dGVuc2lvbiBdKTtcbiAgICBuYW1lXG5cbiAgbGV0IGFkZF9hbGlhcyBuYW1lID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb25cbiAgICAgID9zdHJfbW9kdWxlX3R5cGVfZGVjbCA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uXG4gICAgICA/c2lnX21vZHVsZV90eXBlX2RlY2wgc2V0ID1cbiAgICBsZXQgYWxpYXMgOiBBbGlhcy50ID1cbiAgICAgIGxldCBnZXQgPSBmdW5jdGlvbiBOb25lIC0+IHNldCB8IFNvbWUgc2V0IC0+IHNldCBpblxuICAgICAge1xuICAgICAgICBzdHJfdHlwZV9kZWNsID0gZ2V0IHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dCA9IGdldCBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb24gPSBnZXQgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2wgPSBnZXQgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0ID0gZ2V0IHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbiA9IGdldCBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBbGlhcyBhbGlhcykpO1xuICAgIG5hbWVcbmVuZFxuXG5sZXQgYWRkID0gRGVyaXZlci5hZGRcbmxldCBhZGRfYWxpYXMgPSBEZXJpdmVyLmFkZF9hbGlhc1xuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFtAQGRlcml2aW5nIF0gcGFyc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBpbnZhbGlkX3dpdGggfmxvYyA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiaW52YWxpZCBbQEBkZXJpdmluZyBdIGF0dHJpYnV0ZSBzeW50YXhcIlxuXG5sZXQgZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkID1cbiAgbWF0Y2ggTG9uZ2lkZW50LmZsYXR0ZW5fZXhuIGlkIHdpdGhcbiAgfCBsIC0+IHsgbG9jOyB0eHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgbCB9XG4gIHwgZXhjZXB0aW9uIF8gLT4gaW52YWxpZF93aXRoIH5sb2NcblxuZXhjZXB0aW9uIFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IHBhcnNlX2FyZ3VtZW50cyBsID1cbiAgdHJ5XG4gICAgQXJnc1xuICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgfCBbIChOb2xhYmVsLCBlKSBdIC0+IChcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSAtPlxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAoaWQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGlkLnR4dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTGlkZW50IHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4IChpZC5sb2MsIFwic2ltcGxlIGlkZW50aWZpZXIgZXhwZWN0ZWRcIikpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKG5hbWUsIGV4cHIpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgKCBlLnBleHBfbG9jLFxuICAgICAgICAgICAgICAgICAgICAgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgb3IgcmVjb3JkIGV4cGVjdGVkXCIgKSkpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsIH5mOihmdW4gKGxhYmVsLCBleHByKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsYWJlbCB3aXRoXG4gICAgICAgICAgICAgIHwgTGFiZWxsZWQgcyAtPiAocywgZXhwcilcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICAgICAoZXhwci5wZXhwX2xvYywgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgZXhwZWN0ZWRcIikpKSlcbiAgd2l0aCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+IFVua25vd25fc3ludGF4IChsb2MsIG1zZylcblxubGV0IG1rX2Rlcml2aW5nX2F0dHIgY29udGV4dCB+cHJlZml4IH5zdWZmaXggPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIChwcmVmaXggXiBcImRlcml2aW5nXCIgXiBzdWZmaXgpXG4gICAgY29udGV4dFxuICAgIEFzdF9wYXR0ZXJuLihcbiAgICAgIGxldCBnZW5lcmF0b3JfbmFtZSAoKSA9XG4gICAgICAgIG1hcCcgKHBleHBfaWRlbnQgX18pIH5mOihmdW4gbG9jIGYgaWQgLT5cbiAgICAgICAgICAgIGYgKGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCkpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvciAoKSA9XG4gICAgICAgIG1hcCAoZ2VuZXJhdG9yX25hbWUgKCkpIH5mOihmdW4gZiB4IC0+IGYgKHgsIEFyZ3MgW10pKVxuICAgICAgICB8fHwgcGFjazJcbiAgICAgICAgICAgICAgKHBleHBfYXBwbHkgKGdlbmVyYXRvcl9uYW1lICgpKVxuICAgICAgICAgICAgICAgICAobWFwMSAobWFueSBfXykgfmY6cGFyc2VfYXJndW1lbnRzKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9ycyA9XG4gICAgICAgIHBleHBfdHVwbGUgKG1hbnkgKGdlbmVyYXRvciAoKSkpXG4gICAgICAgIHx8fCBtYXAgKGdlbmVyYXRvciAoKSkgfmY6KGZ1biBmIHggLT4gZiBbIHggXSlcbiAgICAgIGluXG4gICAgICBwc3RyIChwc3RyX2V2YWwgZ2VuZXJhdG9ycyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVW51c2VkIHdhcm5pbmcgc3R1ZmYgKyBsb2NhdGlvbnMgY2hlY2sgc2lsZW5jaW5nICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IHN0cmluZyA9XG4gICAgTGlzdC5zb3J0IHdhcm5pbmdzIH5jbXA6SW50LmNvbXBhcmVcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHdhcm5pbmcgLT4gXCItXCIgXiBJbnQudG9fc3RyaW5nIHdhcm5pbmcpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCJcbiAgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC53YXJuaW5nXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIHN0cmluZykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaW5saW5lX2RvY19hdHRyID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5kb2NcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgXCJAaW5saW5lXCIpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxuKCogd3JhcCBhIHN0cnVjdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbW9kX3N0cnVjdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHN0cl9pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHN0cnVjdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3N0cl0gKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzdCA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmIGtlZXBfdzMyX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiAoW10sIHN0KVxuICAgIGVsc2UgaWYgbm90ICFkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIHRoZW5cbiAgICAgIChbXSwgSWdub3JlX3VudXNlZF93YXJuaW5nLmFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMjc3RydWN0dXJlIHN0KVxuICAgIGVsc2UgKFsgMzIgXSwgc3QpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICB8fCBub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc3RydWN0dXJlIHN0IGZhbHNlKVxuICAgIHRoZW4gKHdhcm5pbmdzLCBzdClcbiAgICBlbHNlICg2MCA6OiB3YXJuaW5ncywgc3QpXG4gIGluXG4gIGxldCB3cmFwLCBzdCA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzdClcbiAgICBlbHNlICh0cnVlLCBwc3RyX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc3QpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0IGVsc2Ugc3RcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zdHJdIGFib3ZlICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqIHdyYXAgYSBzaWduYXR1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG10eV9zaWduYXR1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzaWdfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzaWduYXR1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zaWddICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc2cgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmIGtlZXBfdzMyX2ludGYgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiBbXSBlbHNlIFsgMzIgXVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbnRmICgpXG4gICAgICB8fCAobm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3NpZ25hdHVyZSBzZyBmYWxzZSkpXG4gICAgICB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgIHRoZW4gd2FybmluZ3NcbiAgICBlbHNlIDYwIDo6IHdhcm5pbmdzXG4gIGluXG4gIGxldCB3cmFwLCBzZyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzZylcbiAgICBlbHNlICh0cnVlLCBwc2lnX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc2cpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3NpZyB+bG9jIH5oaWRlIHNnIGVsc2Ugc2dcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zaWddIGFib3ZlICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTWFpbiBleHBhbnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgKHRkcyA6IHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgOiBzdHJ1Y3R1cmVfaXRlbSBsaXN0ID1cbiAgaWYga2VlcF93MzJfaW1wbCAoKSB0aGVuIFtdXG4gIGVsc2VcbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICBsZXQgdHlwID0gQ29tbW9uLmNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIGluXG4gICAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgICAgcHN0cl92YWx1ZSB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKVxuICAgICAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgICAgICAocGV4cF9mdW4gfmxvYyBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgICAgICAgICAocHBhdF9jb25zdHJhaW50IH5sb2MgKHBwYXRfYW55IH5sb2MpIHR5cClcbiAgICAgICAgICAgICAgICAgICAoZXVuaXQgfmxvYykpO1xuICAgICAgICAgIF0pXG5cbmxldCBtZXJnZV9nZW5lcmF0b3JzIGZpZWxkIGwgPVxuICBMaXN0LmZpbHRlcl9tYXAgbCB+ZjooZnVuIHggLT4geCkgfD4gTGlzdC5jb25jYXQgfD4gRGVyaXZlci5yZXNvbHZlX2FsbCBmaWVsZFxuXG4oKiBUaGlzIGZ1bmN0aW9uIG1lcmdlcyBbJ2EgZGVyaXZlZF0gaWYgdGhleSBoYXZlIHRoZSBzYW1lIFt1bnVzZWRfY29kZV93YXJuaW5nc10uIFRoaXNcbiAgIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBhZGQgW2luY2x1ZGUgc3RydWN0IC4uLiBlbmRdIHRvIGRpc2FibGUgd2FybmluZ3MuICopXG5sZXQgbWVyZ2VfZGVyaXZlZCBsaXN0cyA9XG4gIExpc3QuZm9sZF9yaWdodCBsaXN0cyB+aW5pdDpbXSB+ZjooZnVuIGRlcml2ZWQgYWNjIC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBvdGhlciA6OiBvdGhlcnNcbiAgICAgICAgd2hlbiBCb29sLmVxdWFsIGRlcml2ZWQudW51c2VkX2NvZGVfd2FybmluZ3Mgb3RoZXIudW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgICAgLT5cbiAgICAgICAgICB7IG90aGVyIHdpdGggaXRlbXMgPSBkZXJpdmVkLml0ZW1zIEAgb3RoZXIuaXRlbXMgfSA6OiBvdGhlcnNcbiAgICAgIHwgXyAtPiBkZXJpdmVkIDo6IGFjYylcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gICgqIFRPRE86IGluc3RlYWQgb2YgZGlzYWJsaW5nIHRoZSB1bnVzZWQgd2FybmluZyBmb3IgdHlwZXMgdGhlbXNlbHZlcywgd2VcbiAgICAgc2hvdWxkIGFkZCBhIHRhZyBbQEB1bnVzZWRdLiAqKVxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gdHlwZXNfdXNlZF9ieV9kZXJpdmluZyB0ZHMgQCBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IHJ1bGVzIH50eXAgfmV4cGFuZF9zaWcgfmV4cGFuZF9zdHIgfnJ1bGVfc3RyIH5ydWxlX3NpZyB+cnVsZV9zdHJfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdCA9XG4gIGxldCBwcmVmaXggPSBcInBweGxpYi5cIiBpblxuICBsZXQgZGVyaXZpbmdfYXR0ciA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIlwiIH5wcmVmaXggdHlwIGluXG4gIGxldCBkZXJpdmluZ19hdHRyX2V4cGVjdCA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIl9pbmxpbmVcIiB+cHJlZml4IHR5cCBpblxuICBbXG4gICAgcnVsZV9zaWcgZGVyaXZpbmdfYXR0ciBleHBhbmRfc2lnO1xuICAgIHJ1bGVfc3RyIGRlcml2aW5nX2F0dHIgZXhwYW5kX3N0cjtcbiAgICBydWxlX3N0cl9leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3N0cjtcbiAgICBydWxlX3NpZ19leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3NpZztcbiAgXVxuXG5sZXQgcnVsZXNfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpUeXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9kZWNsc1xuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9kZWNsc1xuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0XG5cbmxldCBydWxlc190eXBlX2V4dCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leHRlbnNpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2V4dFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0XG5cbmxldCBydWxlc19leGNlcHRpb24gPVxuICBydWxlcyB+dHlwOlR5cGVfZXhjZXB0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfZXhjZXB0aW9uXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdFxuXG5sZXQgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6TW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG5cbmxldCAoKSA9XG4gIGxldCBydWxlcyA9XG4gICAgWyBydWxlc190eXBlX2RlY2w7IHJ1bGVzX3R5cGVfZXh0OyBydWxlc19leGNlcHRpb247IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgXVxuICAgIHw+IExpc3QuY29uY2F0XG4gIGluXG4gIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBcImRlcml2aW5nXCIgfmFsaWFzZXM6WyBcInR5cGVfY29udlwiIF0gfnJ1bGVzXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIGFmZml4ID1cbiAgfCBQcmVmaXggb2Ygc3RyaW5nXG4gIHwgU3VmZml4IG9mIHN0cmluZ1xuICB8IFByZWZpeFN1ZmZpeCBvZiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IG1hbmdsZSA/KGZpeHBvaW50ID0gXCJ0XCIpIGFmZml4IG5hbWUgPVxuICBtYXRjaCAoU3RyaW5nLihuYW1lID0gZml4cG9pbnQpLCBhZmZpeCkgd2l0aFxuICB8IHRydWUsIChQcmVmaXggeCB8IFN1ZmZpeCB4KSAtPiB4XG4gIHwgdHJ1ZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gbmFtZSBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXggeCAtPiB4IF4gXCJfXCIgXiBuYW1lXG4gIHwgZmFsc2UsIFN1ZmZpeCB4IC0+IG5hbWUgXiBcIl9cIiBeIHhcblxubGV0IG1hbmdsZV90eXBlX2RlY2wgP2ZpeHBvaW50IGFmZml4IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gbmFtZTsgXyB9OyBfIH0gPVxuICBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IG5hbWVcblxubGV0IG1hbmdsZV9saWQgP2ZpeHBvaW50IGFmZml4IGxpZCA9XG4gIG1hdGNoIGxpZCB3aXRoXG4gIHwgTGlkZW50IHMgLT4gTGlkZW50IChtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGRvdCAocCwgcykgLT4gTGRvdCAocCwgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExhcHBseSBfIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkV4cGFuc2lvbl9oZWxwZXJzLm1hbmdsZV9saWQ6IExhcHBseVwiXG5cbm1vZHVsZSBRdW90ZXIgPSBRdW90ZXJcbiIsIigqKiBTdGFuZGFyZCBsaWJyYXJ5IGZvciBwcHggcmV3cml0ZXJzICopXG5cbigqKiBbcHB4bGliXSBpcyBtZWFudCB0byBiZSBvcGVuZWQgZ2xvYmFsbHkgaW4geW91ciBQUFggc291cmNlIGZpbGVzLlxuXG4gICAgT3BlbmluZyBpdCBjb21lcyB3aXRoIHR3byBhZHZhbnRhZ2VzLiBGaXJzdCwgaXQgd2lsbCBzaGFkb3cgdGhlXG4gICAgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMuIFRoZSBbY29tcGlsZXItbGlic10gbW9kdWxlcyBhcmUgdW5zdGFibGUgYW5kIGFyZW4ndFxuICAgIG1lYW50IHRvIGJlIHVzZWQsIHNvIHNoYWRvd2luZyB0aGVtIGlzIGEgZ29vZCBwcm90ZWN0aW9uIG1lY2hhbmlzbS4gSW4gY2FzZVxuICAgIHlvdSBkb24ndCB3YW50IHRvIG9wZW4gW1BweGxpYl0sIHlvdSBjYW4gb3BlbiBbT2NhbWxfc2hhZG93XSB0byBnZXQgdGhlIHNhbWVcbiAgICBwcm90ZWN0aW9uLiBTZWNvbmQsIGl0IHdpbGwgYnJpbmcgc2V2ZXJhbCBtb2R1bGVzIGluIHNjb3BlLCB0aGF0IGFyZSB1c2VmdWxcbiAgICB0byBoYXZlIHdoZW4gd3JpdGluZyBhIHJld3JpdGVyOlxuXG4gICAgLSBUaGUgbWFpbiBbcHB4bGliXSBtb2R1bGVzLCBzdWNoIGFzIG1vZHVsZXMgdG8gaGVscCBtYW5pcHVsYXRlIHRoZSBBU1RcbiAgICAgICh7IUFzdF9idWlsZGVyfSwgeyFBc3RfcGF0dGVybn0pLCBhbmQgYSBmZXcgZnVuY3Rpb25zLlxuICAgIC0gTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllcywgc3VjaCBhcyB7IUFzdF9oZWxwZXJ9IG9yIHshUHByaW50YXN0fSxcbiAgICAtIFRoZSB3aG9sZSBBU1QgdHlwZXMgKGJ5IFtpbmNsdWRpbmddIHRoZSB7IUFzdH0gbW9kdWxlKS5cblxuICAgIHsxIFRoZSBjb3JlIFtwcHhsaWJdIGVudHJpZXN9ICopXG5cbigqKiB7MiBNYW5pcHVsYXRpbmcgdGhlIEFTVH0gKilcblxubW9kdWxlIEFzdF9idWlsZGVyID0gQXN0X2J1aWxkZXJcbm1vZHVsZSBBc3RfcGF0dGVybiA9IEFzdF9wYXR0ZXJuXG5tb2R1bGUgQXN0X3RyYXZlcnNlID0gQXN0X3RyYXZlcnNlXG5cbigqKiB7MiBDb250ZXh0LWZyZWUgcmV3cml0aW5nfSAqKVxuXG5tb2R1bGUgQ29udGV4dF9mcmVlID0gQ29udGV4dF9mcmVlXG5tb2R1bGUgRGVyaXZpbmcgPSBEZXJpdmluZ1xubW9kdWxlIEV4dGVuc2lvbiA9IEV4dGVuc2lvblxubW9kdWxlIEV4cGFuc2lvbl9jb250ZXh0ID0gRXhwYW5zaW9uX2NvbnRleHRcbm1vZHVsZSBDb2RlX3BhdGggPSBDb2RlX3BhdGhcblxuKCoqIHsyIE90aGVyIGhlbHBlcnN9ICopXG5cbm1vZHVsZSBFeHBhbnNpb25faGVscGVycyA9IEV4cGFuc2lvbl9oZWxwZXJzXG5tb2R1bGUgTWVybGluX2hlbHBlcnMgPSBNZXJsaW5faGVscGVyc1xubW9kdWxlIFNwZWxsY2hlY2sgPSBTcGVsbGNoZWNrXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcblxuKCoqIHsyIERyaXZlci1yZWxhdGVkIG1vZHVsZXN9ICopXG5cbm1vZHVsZSBEcml2ZXIgPSBEcml2ZXJcbm1vZHVsZSBDYWxsZXJfaWQgPSBDYWxsZXJfaWRcbm1vZHVsZSBBc3RfaW8gPSBVdGlscy5Bc3RfaW8uUmVhZF9iaW5cblxuKCoqIHsyIENoZWNrc30gKilcblxubW9kdWxlIEF0dHJpYnV0ZSA9IEF0dHJpYnV0ZVxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXNcblxuKCoqIHsyIENvbW1vbiBoZWxwZXIgZnVuY3Rpb25zfSAqKVxuXG5pbmNsdWRlIENvbW1vblxuXG4oKiogezEgTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllc31cblxuICAgIEV4cG9zZSBzb21lIG1vZHVsZXMgZnJvbSB7IVBweGxpYl9hc3R9LiAqKVxuXG5tb2R1bGUgQXN0ID0gUHB4bGliX2FzdC5Bc3Rcbm1vZHVsZSBBc3RfaGVscGVyID0gUHB4bGliX2FzdC5Bc3RfaGVscGVyXG5tb2R1bGUgQXN0dHlwZXMgPSBQcHhsaWJfYXN0LkFzdHR5cGVzXG5tb2R1bGUgUGFyc2UgPSBQcHhsaWJfYXN0LlBhcnNlXG5tb2R1bGUgUGFyc2V0cmVlID0gUHB4bGliX2FzdC5QYXJzZXRyZWVcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHhsaWJfYXN0LlBwcmludGFzdFxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0XG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIExvYyA9IExvY1xuXG4oKiogezEgVGhlIHdob2xlIEFTVCB0eXBlc30gKilcblxuaW5jbHVkZSBBc3RcbigqKiBJbmNsdWRlIGFsbCB0aGUgQXN0IGRlZmluaXRpb25zIHNpbmNlIHdlIG5lZWQgdGhlbSBpbiBldmVyeSBzaW5nbGUgcHB4XG5cbiAgICBAY2xvc2VkICopXG5cbigqKiBNYWtlIHN1cmUgY29kZSB1c2luZyBQcHhsaWIgZG9lc24ndCByZWZlciB0byBjb21waWxlci1saWJzIHdpdGhvdXQgYmVpbmdcbiAgICBleHBsaWNpdCBhYm91dCBpdDpcblxuICAgIEBjbG9zZWQgKilcbmluY2x1ZGUgc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBvcGVuIE9jYW1sX3NoYWRvd1xuXG4gIGluY2x1ZGUgKFxuICAgIE9jYW1sX3NoYWRvdyA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBPY2FtbF9zaGFkb3dcbiAgICAgIGVuZFxuICAgICAgd2l0aCBtb2R1bGUgQXN0X2hlbHBlciA6PSBBc3RfaGVscGVyXG4gICAgICB3aXRoIG1vZHVsZSBBc3R0eXBlcyA6PSBBc3R0eXBlc1xuICAgICAgd2l0aCBtb2R1bGUgRG9jc3RyaW5ncyA6PSBEb2NzdHJpbmdzXG4gICAgICB3aXRoIG1vZHVsZSBJZGVudGlmaWFibGUgOj0gSWRlbnRpZmlhYmxlXG4gICAgICB3aXRoIG1vZHVsZSBMZXhlciA6PSBMZXhlclxuICAgICAgd2l0aCBtb2R1bGUgTG9jYXRpb24gOj0gTG9jYXRpb25cbiAgICAgIHdpdGggbW9kdWxlIExvbmdpZGVudCA6PSBMb25naWRlbnRcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNlIDo9IFBhcnNlXG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZXRyZWUgOj0gUGFyc2V0cmVlXG4gICAgICB3aXRoIG1vZHVsZSBQcHJpbnRhc3QgOj0gUHByaW50YXN0XG4gICAgICB3aXRoIG1vZHVsZSBTeW50YXhlcnIgOj0gU3ludGF4ZXJyKVxuZW5kXG5cbigqKi8qKilcblxuKCogRm9yIHRlc3RzIGFuZCBQcHhfY29yZSBjb21wYXRpYmlsaXR5IGxheWVyICopXG5tb2R1bGUgUHB4bGliX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbW1vbiA9IENvbW1vblxuICBtb2R1bGUgTmFtZSA9IE5hbWVcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgUHB4bGliXG5cbmxldCBkZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAoYWx0X29wdGlvbiAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9lcXVhbCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2NvbXBhcmUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X3lvanNvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfaWYgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2lmXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IG9wYXF1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwieW9qc29uLm9wYXF1ZVwiIEF0dHJpYnV0ZS5Db250ZXh0LmNvcmVfdHlwZSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpICgpXG47O1xuXG5sZXQgb3B0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5vcHRpb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnR5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfY2QgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCB5b2pzb25fa2V5ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5rZXlcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl92YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnJ0YWdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBhdHRyIGRlc2NyaXB0aW9uID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgfmxvY1xuICAgIFwicHB4X3lvanNvbl9jb252OiBbQCVzXSBpcyBvbmx5IGFsbG93ZWQgb24gdHlwZSBbJXNdLlwiXG4gICAgKEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gICAgZGVzY3JpcHRpb25cbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCB4KVxuICB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICB+bG9jXG4gICAgICBcInBweF95b2pzb25fY29udjogW0BAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gaW5saW5lIHJlY29yZHMuXCJcbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCB4KVxuICB0aGVuIChcbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBjZHNcbiAgICAgIHdoZW4gTGlzdC5leGlzdHMgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgICB8IFBjc3RyX3JlY29yZCBfIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBvbmx5IHdvcmtzIG9uIHJlY29yZHMuIEZvciBpbmxpbmUgXFxcbiAgICAgICAgIHJlY29yZHMsIGRvOiB0eXBlIHQgPSBBIG9mIHsgYSA6IGludCB9IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gfCBCIFtAQEBAZGVyaXZpbmcgXFxcbiAgICAgICAgIHlvanNvbl1cIlxuICAgIHwgXyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gcmVjb3Jkcy5cIilcbjs7XG5cbm1vZHVsZSBSZWNvcmRfZmllbGRfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIGNvbW1vbiA9IFsgYHlvanNvbl9vcHRpb24gb2YgY29yZV90eXBlIF1cblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSBhdHRyIGxkIH5mID1cbiAgICBPcHRpb24ubWFwIChBdHRyaWJ1dGUuZ2V0IGF0dHIgbGQpIH5mOihmdW4geCAtPiBmIHgsIEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bG9jIGdldHRlcnMgbGQgPVxuICAgIGxldCBjb21tb25fZ2V0dGVycyA9XG4gICAgICBbIChmdW4gbGQgLT5cbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuZ2V0IG9wdGlvbiBsZCB3aXRoXG4gICAgICAgICAgfCBTb21lICgpIC0+XG4gICAgICAgICAgICAobWF0Y2ggbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgICAgIHwgWyV0eXBlOiBbJXQ/IHR5XSBvcHRpb25dIC0+IFNvbWUgKGB5b2pzb25fb3B0aW9uIHR5LCBcIltAeW9qc29uLm9wdGlvbl1cIilcbiAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBvcHRpb24gXCJfIG9wdGlvblwiKVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgXVxuICAgIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXJfbWFwIChnZXR0ZXJzIEAgY29tbW9uX2dldHRlcnMpIH5mOihmdW4gZiAtPiBmIGxkKSB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbICh2LCBfKSBdIC0+IFNvbWUgdlxuICAgIHwgXyA6OiBfIDo6IF8gYXMgYXR0cmlidXRlcyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJUaGUgZm9sbG93aW5nIGVsZW1lbnRzIGFyZSBtdXR1YWxseSBleGNsdXNpdmU6ICVzXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoTGlzdC5tYXAgYXR0cmlidXRlcyB+ZjpzbmQpKVxuICA7O1xuXG4gIG1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRlZmF1bHQgb2YgZXhwcmVzc2lvblxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZSB+bG9jIFsgZ2V0X2F0dHJpYnV0ZSBkZWZhdWx0IH5mOihmdW4gZGVmYXVsdCAtPiBgZGVmYXVsdCBkZWZhdWx0KSBdIGxkXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZHJvcF9kZWZhdWx0IG9mIFsgYG5vX2FyZyB8IGBjb21wYXJlIHwgYGVxdWFsIHwgYHlvanNvbiB8IGBmdW5jIG9mIGV4cHJlc3Npb24gXVxuICAgICAgfCBgZHJvcF9pZiBvZiBleHByZXNzaW9uXG4gICAgICB8IGBrZWVwXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5sb2NcbiAgICAgICAgWyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBgZHJvcF9kZWZhdWx0IGBub19hcmdcbiAgICAgICAgICAgIHwgU29tZSBlIC0+IGBkcm9wX2RlZmF1bHQgKGBmdW5jIGUpKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2VxdWFsIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgZXF1YWwpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfY29tcGFyZSB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGNvbXBhcmUpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfeW9qc29uIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgeW9qc29uKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9pZiB+ZjooZnVuIHggLT4gYGRyb3BfaWYgeClcbiAgICAgICAgXVxuICAgICAgICBsZFxuICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmBrZWVwXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID1cbiAgeyBsYWJlbCA6IHN0cmluZ1xuICA7IG5hbWVfb3ZlcnJpZGUgOiBzdHJpbmcgb3B0aW9uXG4gIH1cblxubGV0IGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGUgPSB7IGxhYmVsOyBuYW1lX292ZXJyaWRlIH1cblxubGV0IG9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIChjZCA6IFBweGxpYi5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgPVxuICBsZXQgbGFiZWwgPSBjZC5wY2RfbmFtZS50eHQgaW5cbiAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBQcHhsaWIuQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fdmFyaWFudF9uYW1lIGNkIGluXG4gIGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGVcbjs7XG5cbmxldCBsYWJlbCB0ID0gdC5sYWJlbFxubGV0IG5hbWUgdCA9IE9wdGlvbi52YWx1ZSB0Lm5hbWVfb3ZlcnJpZGUgfmRlZmF1bHQ6dC5sYWJlbFxuIiwib3BlbiBCYXNlXG5vcGVuIFBweGxpYlxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5tb2R1bGUgQXR0cnMgPSBBdHRyc1xuXG5sZXQgKCAtLT4gKSBsaHMgcmhzID0gY2FzZSB+Z3VhcmQ6Tm9uZSB+bGhzIH5yaHNcblxuKCogU2ltcGxpZmllcyBtYXRjaCBjYXNlcywgZm9yIHJlYWRhYmlsaXR5IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gSXQncyBub3Qgb2J2aW91cyB3ZSBjYW5cbiAgIHN0aWNrIHRoaXMgaW4gcHB4X2NvcmUsIGFzIChtYXRjaCBlMSB3aXRoIHAgLT4gZTIpIGFuZCAobGV0IHAgPSBlMSBpbiBlMikgYXJlIG5vdCB0eXBlZFxuICAgZXhhY3RseSB0aGUgc2FtZSAodHlwZSBpbmZlcmVuY2UgZ29lcyBpbiBkaWZmZXJlbnQgb3JkZXIsIG1lYW5pbmcgdHlwZSBkaXNhbWJpZ3VhdGlvblxuICAgZGlmZmVycykuICopXG5sZXQgcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXMgPVxuICBtYXRjaCBjYXNlcyB3aXRoXG4gIHwgWyB7IHBjX2xoczsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgfSBdIC0+XG4gICAgKG1hdGNoIHBjX2xocywgZXhwciB3aXRoXG4gICAgIHwgKCB7IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IGlkZW50OyBfIH07IF8gfVxuICAgICAgICwgeyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBpZGVudCc7IF8gfTsgXyB9IClcbiAgICAgICB3aGVuIFN0cmluZy5lcXVhbCBpZGVudCBpZGVudCcgLT4gcGNfcmhzXG4gICAgIHwgXyAtPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBjX2xocyB+ZXhwciBdIHBjX3JocylcbiAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzXG47O1xuXG5tb2R1bGUgRnVuX29yX21hdGNoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGdW4gb2YgZXhwcmVzc2lvblxuICAgIHwgTWF0Y2ggb2YgY2FzZSBsaXN0XG5cbiAgbGV0IGV4cHIgfmxvYyB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGZcbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBjYXNlc1xuICA7O1xuXG4gIGxldCB1bnJvbGwgfmxvYyBlIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZWFwcGx5IH5sb2MgZiBbIGUgXVxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9tYXRjaCB+bG9jIGUgY2FzZXNcbiAgOztcblxuICBsZXQgbWFwX3RtcF92YXJzIH5sb2MgdHMgPVxuICAgIGxldCB2YXJzID0gTGlzdC5tYXBpIHRzIH5mOihmdW4gaSBfIC0+IFwidlwiIF4gSW50LnRvX3N0cmluZyBpKSBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuIHZhcnMgdHMgfmY6KGZ1biB2YXIgdCAtPlxuICAgICAgICBsZXQgZXhwciA9IHVucm9sbCB+bG9jIChldmFyIH5sb2MgdmFyKSB0IGluXG4gICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwdmFyIH5sb2MgdmFyKSB+ZXhwcilcbiAgICBpblxuICAgIGJpbmRpbmdzLCBMaXN0Lm1hcCB2YXJzIH5mOihwdmFyIH5sb2MpLCBMaXN0Lm1hcCB2YXJzIH5mOihldmFyIH5sb2MpXG4gIDs7XG5lbmRcblxuKCogQSByZW5hbWluZyBpcyBhIG1hcHBpbmcgZnJvbSB0eXBlIHZhcmlhYmxlIG5hbWUgdG8gdHlwZSB2YXJpYWJsZSBuYW1lLlxuICAgSW4gZGVmaW5pdGlvbnMgc3VjaCBhczpcblxuICAgdHlwZSAnYSB0ID1cbiAgIHwgQSA6IDx0eXBlPiAtPiAnYiB0XG4gICB8IEIgb2YgJ2FcblxuICAgd2UgZ2VuZXJhdGUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWQgYWZ0ZXIgJ2EsIGJ1dCAnYSBpcyBub3QgaW5cbiAgIHNjb3BlIGluIDx0eXBlPiB3aGVuIGhhbmRsaW5nIHRoZSBjb25zdHJ1Y3RvciBBIChiZWNhdXNlIEEgaXMgYSBnYWR0IGNvbnN0cnVjdG9yKS5cbiAgIEluc3RlYWQgdGhlIHR5cGUgdmFyaWFibGVzIGluIHNjb3BlIGFyZSB0aGUgb25lcyBkZWZpbmVkIGluIHRoZSByZXR1cm4gdHlwZSBvZiBBLFxuICAgbmFtZWx5ICdiLiBUaGVyZSBjb3VsZCBiZSBsZXNzIG9yIG1vcmUgdHlwZSB2YXJpYWJsZSBpbiBjYXNlcyBzdWNoIGFzOlxuXG4gICB0eXBlIF8gbGVzcyA9IExlc3MgOiBpbnQgbGVzc1xuICAgdHlwZSBfIG1vcmUgPSBNb3JlIDogKCdhICogJ2EpIG1vcmVcblxuICAgSWYgZm9yIGluc3RhbmNlLCA8dHlwZT4gaXMgWydiICogJ2NdLCB3aGVuIHdlIGZpbmQgJ2IsIHdlIHdpbGwgbG9vayBmb3IgWydiXSBpbiB0aGVcbiAgIHJlbmFtaW5nIGFuZCBmaW5kIFsnYV0gKG9ubHkgaW4gdGhhdCBnYWR0IGJyYW5jaCwgaXQgY291bGQgYmUgc29tZXRoaW5nIGVsc2UgaW4gb3RoZXJcbiAgIGJyYW5jaGVzKSwgYXQgd2hpY2ggcG9pbnQgd2UgY2FuIGNhbGwgdGhlIHByZXZpb3VzbHkgYm91bmQgeW9qc29uX29mIHBhcmFtZXRlciBuYW1lZFxuICAgYWZ0ZXIgJ2EuXG4gICBJZiB3ZSBjYW4ndCBmaW5kIGEgcmVzdWx0aW5nIG5hbWUsIGxpa2Ugd2hlbiBsb29raW5nIHVwIFsnY10gaW4gdGhlIHJlbmFtaW5nLCB0aGVuIHdlXG4gICBhc3N1bWUgdGhlIHZhcmlhYmxlIGlzIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZCBhbmQgdHJlYXQgaXQgYXMgW19dICh3aGljaCBpcyBvayxcbiAgIGFzc3VtaW5nIHRoZXJlIGFyZSBubyBjb25zdHJhaW50cykuICopXG5tb2R1bGUgUmVuYW1pbmcgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGlkZW50aXR5IDogdFxuICB2YWwgYWRkX3VuaXZlcnNhbGx5X2JvdW5kIDogdCAtPiBzdHJpbmcgbG9jIC0+IHRcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICB2YWwgYmluZGluZ19raW5kIDogdCAtPiBzdHJpbmcgLT4gYmluZGluZ19raW5kXG4gIHZhbCBvZl9nYWR0IDogc3RyaW5nIGxpc3QgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgZXJyb3IgPSBzdHJpbmcgTG9jLnRcbiAgdHlwZSB0ID0gKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudCBvcHRpb25cblxuICBsZXQgaWRlbnRpdHkgPSBOb25lXG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgbGV0IGFkZF91bml2ZXJzYWxseV9ib3VuZCAodCA6IHQpIG5hbWUgOiB0ID1cbiAgICBsZXQgbmFtZSA9IG5hbWUudHh0IGluXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbWFwIC0+IFNvbWUgKE1hcC5zZXQgfmtleTpuYW1lIH5kYXRhOihPayBuYW1lKSBtYXApXG4gIDs7XG5cbiAgbGV0IGJpbmRpbmdfa2luZCB0IHZhciA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhclxuICAgIHwgU29tZSBtYXAgLT5cbiAgICAgIChtYXRjaCBNYXAuZmluZCBtYXAgdmFyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gRXhpc3RlbnRpYWxseV9ib3VuZFxuICAgICAgIHwgU29tZSAoT2sgdmFsdWUpIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhbHVlXG4gICAgICAgfCBTb21lIChFcnJvciB7IGxvYzsgdHh0IH0pIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiJXNcIiB0eHQpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgbWFwIHRyYW5zbGF0aW5nIHR5cGUgdmFyaWFibGVzIGFwcGVhcmluZyBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQURUXG4gICAgIGNvbnN0cnVjdG9yIHRvIHRoZWlyIG5hbWUgaW4gdGhlIHR5cGUgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgRm9yIGluc3RhbmNlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gWCA6ICd4ICogJ3kgLT4gKCd4LCAneSkgdFxuICAgICBdfVxuXG4gICAgIHdpbGwgcHJvZHVjZTpcblxuICAgICB7W1xuICAgICAgIFwieFwiIC0+IE9rIFwiYVwiXG4gICAgICAgICAgICAgICAgXCJ5XCIgLT4gT2sgXCJiXCJcbiAgICAgXX1cblxuICAgICBJZiBhIHZhcmlhYmxlIGFwcGVhcnMgdHdpY2UgaW4gdGhlIHJldHVybiB0eXBlIGl0IHdpbGwgbWFwIHRvIFtFcnJvciBfXS4gSWYgYVxuICAgICB2YXJpYWJsZSBjYW5ub3QgYmUgbWFwcGVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBpdCB3aWxsIG1hcCB0b1xuICAgICBbRXJyb3JdIChmb3IgaW5zdGFuY2UgW0EgOiAnYSAtPiAnYSBsaXN0IHRdKS5cblxuICAgICBJdCByZXR1cm5zIE5vbmUgb24gdXNlciBlcnJvciwgdG8gbGV0IHRoZSB0eXBlciBnaXZlIHRoZSBlcnJvciBtZXNzYWdlICopXG4gIGxldCBvZl9nYWR0ID1cbiAgICAoKiBBZGQgYWxsIHR5cGUgdmFyaWFibGVzIG9mIGEgdHlwZSB0byBhIG1hcC4gKilcbiAgICBsZXQgYWRkX3R5cGV2YXJzID1cbiAgICAgIG9iamVjdFxuICAgICAgICBpbmhlcml0IFsoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5IG1hcCA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgeyBsb2MgPSB0eS5wdHlwX2xvY1xuICAgICAgICAgICAgICA7IHR4dCA9XG4gICAgICAgICAgICAgICAgICBcInBweF95b2pzb25fY29udjogdmFyaWFibGUgaXMgbm90IGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGNvbnN0cnVjdG9yXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhOihFcnJvciBlcnJvcilcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHR5IG1hcFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBsZXQgYXV4IG1hcCB0cF9uYW1lIHRwX2luX3JldHVybl90eXBlID1cbiAgICAgIG1hdGNoIHRwX2luX3JldHVybl90eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgaWYgTWFwLm1lbSBtYXAgdmFyXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9sb2MgaW5cbiAgICAgICAgICAgIEVycm9yIHsgbG9jOyB0eHQgPSBcInBweF95b2pzb25fY29udjogZHVwbGljYXRlIHZhcmlhYmxlXCIgfSlcbiAgICAgICAgICBlbHNlIE9rIHRwX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGFcbiAgICAgIHwgXyAtPiBhZGRfdHlwZXZhcnMjY29yZV90eXBlIHRwX2luX3JldHVybl90eXBlIG1hcFxuICAgIGluXG4gICAgZnVuIHRwcyBjZCAtPlxuICAgICAgbWF0Y2ggY2QucGNkX3JlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIChtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgfCBQdHlwX2NvbnN0ciAoXywgcGFyYW1zKSAtPlxuICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBwYXJhbXMgPD4gTGlzdC5sZW5ndGggdHBzXG4gICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKFN0ZGxpYi5MaXN0TGFiZWxzLmZvbGRfbGVmdDJcbiAgICAgICAgICAgICAgICAgIHRwc1xuICAgICAgICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKSlcbiAgICAgICAgICAgICAgICAgIH5mOmF1eClcbiAgICAgICAgIHwgXyAtPiBOb25lKVxuICA7O1xuZW5kXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFB0eXBfdmFyIF8gLT4gUHR5cF9hbnlcbiAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxubGV0IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgeCA9XG4gIGxldCBwcmVmaXggPSBcInJpZ2lkX1wiIGluXG4gIGlmIFN0cmluZy5lcXVhbCB4IHR5cGVfbmFtZSB8fCBTdHJpbmcuaXNfcHJlZml4IHggfnByZWZpeFxuICB0aGVuIHByZWZpeCBeIHggXiBcIl9vZl90eXBlX1wiIF4gdHlwZV9uYW1lXG4gIGVsc2UgeFxuOztcblxubGV0IG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgPVxuICAgICAgICBsZXQgcHR5cF9kZXNjID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgcyAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKExvY2F0ZWQubGlkZW50IH5sb2M6dHkucHR5cF9sb2MgKHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgcyksIFtdKVxuICAgICAgICAgIHwgZGVzYyAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyBkZXNjXG4gICAgICAgIGluXG4gICAgICAgIHsgdHkgd2l0aCBwdHlwX2Rlc2MgfVxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHF1YW50aWZpZWQgdHlwZSBbICEgJ2EgLi4gJ3ogLiAobWFrZV9tb25vX3R5cGUgdCAoJ2EgLi4gJ3opKSBdIG9yXG4gICBbdHlwZSBhIC4uIHouIG1ha2VfbW9ub190eXBlIHQgKGEgLi4geildIHdoZW4gW3VzZV9yaWdpZF92YXJpYWJsZXNdIGlzIHRydWUuXG4gICBBbm5vdGF0aW9uIGFyZSBuZWVkZWQgZm9yIG5vbiByZWd1bGFyIHJlY3Vyc2l2ZSBkYXRhdHlwZXMgYW5kIGdhZHQgd2hlbiB0aGUgcmV0dXJuIHR5cGVcbiAgIG9mIGNvbnN0cnVjdG9ycyBhcmUgY29uc3RyYWluZWQuIFVuZm9ydHVuYXRlbHksIHB1dHRpbmcgcmlnaWQgdmFyaWFibGVzIGV2ZXJ5d2hlcmUgZG9lc1xuICAgbm90IHdvcmsgYmVjYXVzZSBvZiBjZXJ0YWlucyB0eXBlcyB3aXRoIGNvbnN0cmFpbnRzLiBXZSB0aHVzIG9ubHkgdXNlIHJpZ2lkIHZhcmlhYmxlc1xuICAgZm9yIHN1bSB0eXBlcywgd2hpY2ggaW5jbHVkZXMgYWxsIEdBRFRzLiAqKVxuXG5sZXQgdHZhcnNfb2ZfY29yZV90eXBlIDogY29yZV90eXBlIC0+IHN0cmluZyBsaXN0ID1cbiAgbGV0IHR2YXJzID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IGlmIExpc3QubWVtIGFjYyB4IH5lcXVhbDpTdHJpbmcuZXF1YWwgdGhlbiBhY2MgZWxzZSB4IDo6IGFjY1xuICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHggYWNjXG4gICAgZW5kXG4gIGluXG4gIGZ1biB0eXAgLT4gTGlzdC5yZXYgKHR2YXJzI2NvcmVfdHlwZSB0eXAgW10pXG47O1xuXG5sZXQgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZ1xuICAgICAgKCogcGxhY2luZyBhIHN1aXRhYmx5IHBvbHltb3JwaGljIG9yIHJpZ2lkIHR5cGUgY29uc3RyYWludCBvbiB0aGUgcGF0dGVybiBvciBib2R5ICopXG4gICAgICAobG9jIDogTG9jYXRpb24udClcbiAgICAgICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pXG4gICAgICAodHlwIDogY29yZV90eXBlKVxuICAgICAgfih0cHMgOiBzdHJpbmcgbG9jIGxpc3QpXG4gICAgICB+KGZ1bmNfbmFtZSA6IHN0cmluZylcbiAgICAgIChib2R5IDogZXhwcmVzc2lvbilcbiAgPVxuICBsZXQgdmFycyA9IHR2YXJzX29mX2NvcmVfdHlwZSB0eXAgaW5cbiAgbGV0IGhhc192YXJzID1cbiAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBfIDo6IF8gLT4gdHJ1ZVxuICBpblxuICBsZXQgcGF0ID1cbiAgICBsZXQgcGF0ID0gcHZhciB+bG9jIGZ1bmNfbmFtZSBpblxuICAgIGlmIG5vdCBoYXNfdmFyc1xuICAgIHRoZW4gcGF0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgdmFycyA9IExpc3QubWFwIH5mOihmdW4gdHh0IC0+IHsgdHh0OyBsb2MgfSkgdmFycyBpblxuICAgICAgcHBhdF9jb25zdHJhaW50IH5sb2MgcGF0IChwdHlwX3BvbHkgfmxvYyB2YXJzIHR5cCkpXG4gIGluXG4gIGxldCBib2R5ID1cbiAgICBsZXQgdXNlX3JpZ2lkX3ZhcmlhYmxlcyA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgdXNlX3JpZ2lkX3ZhcmlhYmxlc1xuICAgIHRoZW4gKFxuICAgICAgbGV0IHR5cGVfbmFtZSA9IHRkLnB0eXBlX25hbWUudHh0IGluXG4gICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgdHBzXG4gICAgICAgIH5mOihmdW4gdHAgYm9keSAtPlxuICAgICAgICAgIHBleHBfbmV3dHlwZSB+bG9jIHsgdHh0ID0gcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB0cC50eHQ7IGxvYyA9IHRwLmxvYyB9IGJvZHkpXG4gICAgICAgIH5pbml0OihwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IChtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSB0eXApKSlcbiAgICBlbHNlIGlmIGhhc192YXJzXG4gICAgdGhlbiBib2R5XG4gICAgZWxzZSBwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IHR5cFxuICBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdCB+ZXhwcjpib2R5XG47O1xuXG5sZXQgcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICAob2JqZWN0XG4gICAgaW5oZXJpdCB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlIHdpdGhcbiAgICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IH5tYXJrX2FzX3NlZW46ZmFsc2UgQXR0cnMub3BhcXVlIGN0eXBlKSAtPlxuICAgICAgICAoKVxuICAgICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT4gKClcbiAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgY3R5cGVcbiAgZW5kKVxuICAjZ29cbiAgICAoKVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiB0byBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl95b2pzb25fb2YgfmxvYyB0ID0gWyV0eXBlOiBbJXQgdF0gLT4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50XVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2ZfeW9qc29uX29mXG5cbiAgbGV0IG1rX3NpZyB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID1cbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoKCBeICkgXCJ5b2pzb25fb2ZfXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzoobWtfdHlwZSB0ZClcbiAgICAgICAgICAgfnByaW06W10pKVxuICA7O1xuZW5kXG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gZnJvbSBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl9vZl95b2pzb24gfmxvYyB0ID0gWyV0eXBlOiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQgLT4gWyV0IHRdXVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2Zfb2ZfeW9qc29uXG5cbiAgbGV0IHNpZ19vZl90ZCB3aXRoX3BvbHkgdGQgPVxuICAgIGxldCBvZl95b2pzb25fdHlwZSA9IG1rX3R5cGUgdGQgaW5cbiAgICBsZXQgbG9jID0geyB0ZC5wdHlwZV9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgb2ZfeW9qc29uX2l0ZW0gPVxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gcyBeIFwiX29mX3lvanNvblwiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgfnByaW06W10pXG4gICAgaW5cbiAgICBtYXRjaCB3aXRoX3BvbHksIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSB3aXRoXG4gICAgfCB0cnVlLCBgU3VyZWx5X25vdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnNpZ19vZl90ZDogeW9qc29uX3BvbHkgYW5ub3RhdGlvbiBidXQgdHlwZSBpcyBzdXJlbHkgbm90IFxcXG4gICAgICAgICBhIHBvbHltb3JwaGljIHZhcmlhbnRcIlxuICAgIHwgZmFsc2UsIChgU3VyZWx5X25vdCB8IGBNYXliZSkgLT4gWyBvZl95b2pzb25faXRlbSBdXG4gICAgfCAodHJ1ZSB8IGZhbHNlKSwgYERlZmluaXRlbHkgfCB0cnVlLCBgTWF5YmUgLT5cbiAgICAgIFsgb2ZfeW9qc29uX2l0ZW1cbiAgICAgIDsgcHNpZ192YWx1ZVxuICAgICAgICAgIH5sb2NcbiAgICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBcIl9fXCIgXiBzIF4gXCJfb2ZfeW9qc29uX19cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgICB+cHJpbTpbXSlcbiAgICAgIF1cbiAgOztcblxuICBsZXQgbWtfc2lnIH5wb2x5IH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihzaWdfb2ZfdGQgcG9seSlcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICAoKiBIYW5kbGluZyBvZiByZWNvcmQgZGVmYXVsdHMgKilcblxuICBsZXQgeW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiB+bG9jIGlkIH5mOihmdW4gcyAtPiBcInlvanNvbl9vZl9cIiBeIHMpIGFyZ3NcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgeW9qc29uX29mX3R5cGVcbiAgICAgICAgICAgIH4odHlwZXZhcl9oYW5kbGluZyA6IFsgYG9rIG9mIFJlbmFtaW5nLnQgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgXSlcbiAgICAgICAgICAgIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCBbJXR5cGU6IF9dIC0+IEZ1biBbJWV4cHIgZnVuIF8gLT4gYFN0cmluZyBcIl9cIl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggWyB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApIF1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUleW9qc29uX29mOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCJcbiAgICAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmJpbmRpbmdfa2luZCByZW5hbWluZyBwYXJtIHdpdGhcbiAgICAgICAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIHBhcm0gLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIFsldHlwZTogX10pKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICAoeW9qc29uX29mX3R5cGVfY29uc3RyXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgaWRcbiAgICAgICAgICAgKExpc3QubWFwIGFyZ3MgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkpKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biBfZiAtPlxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2ZfZnVuIFBweF95b2pzb25fY29udl9saWIuaWdub3JlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl92YXJpYW50IH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbeW9qc29uX29mXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjooZnVuIHRwIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHB2YXJzLCBldmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgaW5fZXhwciA9IFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyBldmFyc11dIGluXG4gICAgbGV0IGV4cHIgPSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBpbl9leHByIGluXG4gICAgcHBhdF90dXBsZSB+bG9jIHB2YXJzIC0tPiBleHByXG5cbiAgKCogQ29udmVyc2lvbiBvZiB2YXJpYW50IHR5cGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdmFyaWFudFxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAoKGxvYywgcm93X2ZpZWxkcykgOiBMb2NhdGlvbi50ICogcm93X2ZpZWxkIGxpc3QpXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgaXRlbSByb3cgPVxuICAgICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93IGluXG4gICAgICBtYXRjaCByb3cucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gXV1cbiAgICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldXSBpblxuICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPSBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcpIGFyZ3MgaW5cbiAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIH5sb2MgKFNvbWUgcGF0dClcbiAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dXG4gICAgICB8IFJpbmhlcml0IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBbXSk7IF8gfSAtPlxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYylcbiAgICAgICAgLS0+IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIFsgWyVleHByIHZdIF1cbiAgICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1J0YWcvJlwiXG4gICAgICB8IFJpbmhlcml0ICh7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgXyA6OiBfKTsgXyB9IGFzIHR5cCkgLT5cbiAgICAgICAgbGV0IGNhbGwgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0eXApIGluXG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKSAtLT4gWyVleHByIFslZSBjYWxsXSB2XVxuICAgICAgfCBSaW5oZXJpdCBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1Jpbmhlcml0L25vbi1pZFwiXG4gICAgICAoKiBpbXBvc3NpYmxlPyopXG4gICAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgaW5cbiAgICBNYXRjaCAoTGlzdC5tYXAgfmY6aXRlbSByb3dfZmllbGRzKVxuXG4gICgqIFBvbHltb3JwaGljIHJlY29yZCBmaWVsZHMgKilcbiAgYW5kIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgKCogU2hvdWxkIGJlIGltcG9zc2libGUgYmVjYXVzZSBbeW9qc29uX29mX3BvbHldIGlzIG9ubHkgY2FsbGVkIG9uIHBvbHltb3JwaGljIHJlY29yZFxuICAgICAgICAgZmllbGRzIGFuZCByZWNvcmQgdHlwZSBkZWZpbml0aW9ucyBjYW4ndCBvY2N1ciBpbiB0eXBlIGV4cHJlc3Npb25zLiAqKVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwb2x5bW9ycGhpYyB0eXBlIGluIGEgdHlwZSBleHByZXNzaW9uXCJcbiAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICAgIH5leHByOlslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICAgIGluXG4gICAgICBsZXQgcmVuYW1pbmcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdCBwYXJtcyB+aW5pdDpyZW5hbWluZyB+ZjpSZW5hbWluZy5hZGRfdW5pdmVyc2FsbHlfYm91bmRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgICAgIE1hdGNoXG4gICAgICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgICAgICAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgICAgXSlcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHJlY29yZCB0eXBlcyAqKVxuXG4gIGxldCBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lID1cbiAgICBsZXQgcCA9IExvYy5tYWtlIChMb25naWRlbnQuTGlkZW50IG5hbWUpIH5sb2MsIHB2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICBwYXR0IEAgWyBwIF1cbiAgOztcblxuICB0eXBlIGlzX2VtcHR5X2V4cHIgPVxuICAgIHwgSW5zcGVjdF92YWx1ZSBvZiAobG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuICAgIHwgSW5zcGVjdF95b2pzb24gb2YgKGNudl9leHByOmV4cHJlc3Npb24gLT4gbG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuXG4gIGxldCB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5X2V4cHIga2V5ID1cbiAgICBsZXQgbG9jID0geyB0cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICB8IEZ1biBleHAgLT4gZXhwXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIGVsIC0+IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGVsXSBtYXRjaGluZ3NdXVxuICAgIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gY252X2V4cHJcbiAgICAgIHwgU29tZSB5b2pzb25fb2YgLT4gWyVleHByIFslZSB5b2pzb25fb2ZdIFslZSBjbnZfZXhwcl1dXG4gICAgaW5cbiAgICBsZXQgZXhwciA9XG4gICAgICBsZXQgdl9uYW1lID0gXCJ2X1wiIF4gbmFtZSBpblxuICAgICAgWyVleHByXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIG1hdGNoIGlzX2VtcHR5X2V4cHIgd2l0aFxuICAgICAgICAgICAgfCBJbnNwZWN0X3ZhbHVlIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgbG9jIChldmFyIH5sb2Mgdl9uYW1lKV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXG4gICAgICAgICAgICB8IEluc3BlY3RfeW9qc29uIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgfmNudl9leHByIGxvYyBbJWV4cHIgYXJnXV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXV1cbiAgICAgICAgaW5cbiAgICAgICAgWyVlIGV4cHJdXVxuICAgIGluXG4gICAgcGF0dCwgZXhwclxuICA7O1xuXG4gIGxldCBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzIH50eXBlc19iZWluZ19kZWZpbmVkIH5sb2MgfndoeSB0cCA9XG4gICAgbGV0IGRpc2FsbG93X3ZhcmlhYmxlcyA9XG4gICAgICBsZXQgaXRlciA9XG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHR5cF92YXIgdiAtPlxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIGNvbnRhaW5zIFxcXG4gICAgICAgICAgICAgICAgIGEgdHlwZSB2YXJpYWJsZTogJyVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbXBhcmlzb24gaXMgbm90IGF2YWlhYmxlIGZvciB0eXBlIHZhcmlhYmxlcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgdlxuICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGxldCBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICB8IGBOb25yZWN1cnNpdmUgLT4gZnVuIF8gLT4gKClcbiAgICAgIHwgYFJlY3Vyc2l2ZSB0eXBlc19iZWluZ19kZWZpbmVkIC0+XG4gICAgICAgIGxldCBpdGVyID1cbiAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgbG9jID0gXzsgdHh0ID0gTGlkZW50IHMgfSwgXykgYXMgdCAtPlxuICAgICAgICAgICAgICAgIGlmIFNldC5tZW0gdHlwZXNfYmVpbmdfZGVmaW5lZCBzXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIFxcXG4gICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIHR5cGUgZGVmaW5lZCBpbiB0aGUgY3VycmVudCByZWN1cnNpdmUgYmxvY2s6ICVzLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgIGVuZFxuICAgICAgICBpblxuICAgICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgZGlzYWxsb3dfdmFyaWFibGVzIHRwO1xuICAgIGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB0cFxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICBob3dcbiAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgIHBhdHRcbiAgICAgICAgZXhwclxuICAgICAgICBuYW1lXG4gICAgICAgIHRwXG4gICAgICAgID95b2pzb25fb2ZcbiAgICAgICAgZGVmYXVsdFxuICAgICAgICBrZXlcbiAgICA9XG4gICAgbGV0IGlzX2VtcHR5ID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGB5b2pzb24gLT5cbiAgICAgICAgSW5zcGVjdF95b2pzb25cbiAgICAgICAgICAoZnVuIH5jbnZfZXhwciBsb2MgeW9qc29uX2V4cHIgLT5cbiAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCAoWyVlIGNudl9leHByXSBbJWUgZGVmYXVsdF0pIFslZSB5b2pzb25fZXhwcl1dKVxuICAgICAgfCAoYG5vX2FyZyB8IGBmdW5jIF8gfCBgY29tcGFyZSB8IGBlcXVhbCkgYXMgaG93IC0+XG4gICAgICAgIGxldCBlcXVhbGl0eV9mIGxvYyA9XG4gICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgICB8IGBub19hcmcgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgW0BvY2FtbC5wcHdhcm5pbmdcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdF0gaXMgZGVwcmVjYXRlZDogXFxcbiAgICAgICAgICAgICAgICAgcGxlYXNlIHVzZSBvbmUgb2Y6XFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQgZl0gYW5kIGdpdmUgYW4gXFxcbiAgICAgICAgICAgICAgICAgZXhwbGljaXQgZXF1YWxpdHkgZnVuY3Rpb24gKFtmID0gXFxcbiAgICAgICAgICAgICAgICAgUG9seS4oPSldIGNvcnJlc3BvbmRzIHRvIHRoZSBvbGQgXFxcbiAgICAgICAgICAgICAgICAgYmVoYXZpb3IpXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZV0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVjb21wYXJlXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWVxdWFsXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gaWYgeW91IFxcXG4gICAgICAgICAgICAgICAgIHdhbnQgdG8gY29tcGFyZSB0aGUgeW9qc29uIFxcXG4gICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uc1xcblwiXV1cbiAgICAgICAgICB8IGBmdW5jIGYgLT4gZlxuICAgICAgICAgIHwgYGNvbXBhcmUgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgY29tcGFyZVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslY29tcGFyZS5lcXVhbDogWyV0IHRwXV1dXG4gICAgICAgICAgfCBgZXF1YWwgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgZXF1YWxcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgaW5cbiAgICAgICAgSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgZXF1YWxpdHlfZiBsb2NdIFslZSBkZWZhdWx0XSBbJWUgZXhwcl1dKVxuICAgIGluXG4gICAgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eSBrZXlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgfnR5cGVzX2JlaW5nX2RlZmluZWQgfnJlbmFtaW5nIGxvYyBmbGRzIH53cmFwX2V4cHIgPVxuICAgIGxldCBjb2xsICgocGF0dCA6IChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0KSwgZXhwcikgbGQgPVxuICAgICAgbGV0IG5hbWUgPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgbGQucGxkX25hbWUubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5Zb2pzb25fb2YuY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgfCBgeW9qc29uX29wdGlvbiB0cCAtPlxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gWyVleHByIHZdIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKV0gd2l0aFxuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gYm5kc1xuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgYm5kIDo6IGJuZHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBbJWUgZXhwcl1dXG4gICAgICAgIGluXG4gICAgICAgIHBhdHQsIGV4cHJcbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBob3cgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJpYnV0ZS5nZXQgQXR0cnMuZGVmYXVsdCBsZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJubyBkZWZhdWx0IHRvIGRyb3BcIlxuICAgICAgICAgfCBTb21lIGRlZmF1bHQgLT5cbiAgICAgICAgICAgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgIGhvd1xuICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgIHBhdHRcbiAgICAgICAgICAgICBleHByXG4gICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgIHRwXG4gICAgICAgICAgICAgZGVmYXVsdFxuICAgICAgICAgICAgIGtleSlcbiAgICAgIHwgYGRyb3BfaWYgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgcGF0dFxuICAgICAgICAgIGV4cHJcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgdHBcbiAgICAgICAgICAoSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgdGVzdF0gWyVlIGV4cHJdXSkpXG4gICAgICAgICAga2V5XG4gICAgICB8IGBrZWVwIGFzIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBga2VlcCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgIChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgICB8IGBvbWl0X25pbCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIG1hdGNoIFslZSBjbnZfZXhwcl0gd2l0aFxuICAgICAgICAgICAgICB8IGBOdWxsIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBhcmcgLT4gKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICBpblxuICAgICAgICAoIHBhdHRcbiAgICAgICAgLCBbJWV4cHJcbiAgICAgICAgICBsZXQgYm5kcyA9IFslZSBibmRzXSBpblxuICAgICAgICAgIFslZSBleHByXV0gKVxuICAgIGluXG4gICAgbGV0IGluaXRfZXhwciA9IHdyYXBfZXhwciBbJWV4cHIgYm5kc10gaW5cbiAgICBsZXQgcGF0dCwgZXhwciA9IExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KFtdLCBpbml0X2V4cHIpIGZsZHMgaW5cbiAgICAoIHBwYXRfcmVjb3JkIH5sb2MgcGF0dCBDbG9zZWRcbiAgICAsIFslZXhwclxuICAgICAgbGV0IGJuZHMgOiAoc3RyaW5nICogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50KSBsaXN0ID0gW10gaW5cbiAgICAgIFslZSBleHByXV0gKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2Ygc3VtIHR5cGVzICopXG5cbiAgbGV0IGJyYW5jaF9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgcmVuYW1pbmcgfmxvYyBjb25zdHJfbGlkIGNvbnN0cl9zdHIgYXJncyA9XG4gICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBQY3N0cl9yZWNvcmQgbGRzIC0+XG4gICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIGxvY1xuICAgICAgICAgIGxkc1xuICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgTGlzdCBbIFslZSBjbnN0cl9leHByXTsgYEFzc29jIFslZSBleHByXSBdXSlcbiAgICAgIGluXG4gICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dCkgLS0+IGV4cHJcbiAgICB8IFBjc3RyX3R1cGxlIHBjZF9hcmdzIC0+XG4gICAgICAobWF0Y2ggcGNkX2FyZ3Mgd2l0aFxuICAgICAgIHwgW10gLT5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCBOb25lIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBjb25zdHJfc3RyXSBdXVxuICAgICAgIHwgYXJncyAtPlxuICAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID1cbiAgICAgICAgICAgTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpKSBhcmdzXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgIGluXG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dClcbiAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV0pXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgdHBzIGNkcyA9XG4gICAgRnVuX29yX21hdGNoLk1hdGNoXG4gICAgICAoTGlzdC5tYXAgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLm9mX2dhZHQgdHBzIGNkIGluXG4gICAgICAgICBsZXQgY29uc3RyX2xpZCA9IExvY2F0ZWQubWFwIGxpZGVudCBjZC5wY2RfbmFtZSBpblxuICAgICAgICAgbGV0IGNvbnN0cl9uYW1lID1cbiAgICAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkIGluXG4gICAgICAgICAgIExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIHw+IGVzdHJpbmcgfmxvYzpjZC5wY2RfbmFtZS5sb2NcbiAgICAgICAgIGluXG4gICAgICAgICBicmFuY2hfc3VtXG4gICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgIHJlbmFtaW5nXG4gICAgICAgICAgIH5sb2M6Y2QucGNkX2xvY1xuICAgICAgICAgICBjb25zdHJfbGlkXG4gICAgICAgICAgIGNvbnN0cl9uYW1lXG4gICAgICAgICAgIGNkLnBjZF9hcmdzKSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCB5b2pzb25fb2ZfbmlsIGxvYyA9IEZ1bl9vcl9tYXRjaC5GdW4gWyVleHByIGZ1biBfdiAtPiBhc3NlcnQgZmFsc2VdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzIC0+XG4gICAgICAgICAgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCAoTGlzdC5tYXAgdHBzIH5mOihmdW4geCAtPiB4LnR4dCkpIGNkc1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT5cbiAgICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5pZGVudGl0eSBpblxuICAgICAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgbGRzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgQXNzb2MgWyVlIGV4cHJdXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE1hdGNoIFsgcGF0dCAtLT4gZXhwciBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgKG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHlvanNvbl9vZl9uaWwgbG9jXG4gICAgICAgICAgIHwgU29tZSB0eSAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIFJlbmFtaW5nLmlkZW50aXR5KSB0eSlcbiAgICAgIGluXG4gICAgICBsZXQgaXNfcHJpdmF0ZV9hbGlhcyA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQsIHRkLnB0eXBlX21hbmlmZXN0LCB0ZC5wdHlwZV9wcml2YXRlIHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCwgU29tZSBfLCBQcml2YXRlIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgaXNfcHJpdmF0ZV9hbGlhc1xuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFJlcGxhY2UgYWxsIHR5cGUgdmFyaWFibGUgYnkgXyB0byBhdm9pZCBnZW5lcmFsaXphdGlvbiBwcm9ibGVtcyAqKVxuICAgICAgICBsZXQgdHlfc3JjID1cbiAgICAgICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbWFuaWZlc3QgPVxuICAgICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbWFuaWZlc3QgLT4gbWFuaWZlc3RcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ5b2pzb25fb2ZfdGQvbm8tbWFuaWZlc3RcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlfZHN0ID0gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gWyVleHByICh2IDogWyV0IHR5X3NyY10gOj4gWyV0IHR5X2RzdF0pXSBpblxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIGNvZXJjaW9uIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBjb2VyY2lvbiBtYXRjaGluZ3NdXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGggcmVjdXJzaXZlIHR5cGVzIGJ5XG4gICAgICAgICAgIGV0YS1leHBhbmRpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKilcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB2XSBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5ncylcbiAgICBpblxuICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3R5cGUgdGQgaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGxldCByZWNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgICB8IGBSZWN1cnNpdmUgXyAtPiBSZWN1cnNpdmVcbiAgICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBbIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keSBdXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl90ZHMgfmxvYyB+cGF0aDpfIChyZWNfZmxhZywgdGRzKSA9XG4gICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICBsZXQgdHlwZXNfYmVpbmdfZGVmaW5lZCA9XG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBgTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBgUmVjdXJzaXZlXG4gICAgICAgICAgKFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKSAoTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpKSlcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncyA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCkgaW5cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyBiaW5kaW5nc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBmbGRzID1cbiAgICBsZXQgY29sbCBsZCA9XG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgIGVzdHJpbmcgfmxvYyBrZXlcbiAgICBpblxuICAgIGVsaXN0IH5sb2MgKExpc3QubWFwIH5mOmNvbGwgZmxkcylcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT4geW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBsZHNcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfb3BlbiB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiB5b2pzb25fZmllbGRzIG9ubHkgd29ya3Mgb24gcmVjb3Jkc1wiXG4gICAgaW5cbiAgICBsZXQgdHlwID0gWyV0eXBlOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fZmllbGRzX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9maWVsZHNfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkcyB+bG9jIH5wYXRoOl8gKF8sIHRkcykgPVxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSAoTGlzdC5tYXAgdGRzIH5mOnlvanNvbl9maWVsZHNfb2ZfdGQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgKCogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbiAgKCogSGFuZGxlIGJhY2t0cmFja2luZyB3aGVuIHZhcmlhbnRzIGRvIG5vdCBtYXRjaCAqKVxuICBsZXQgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIgPVxuICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF0gLS0+IGV4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBtYXRjaCBmb3IgdGhlIGxhc3RcbiAgICAgY2FzZSBvZiBtYXRjaGluZyBhIHZhcmlhbnQgKilcbiAgbGV0IGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoZXMgPVxuICAgIG1hdGNoIG1hdGNoX2xhc3QsIG1hdGNoZXMgd2l0aFxuICAgIHwgdHJ1ZSwgWyB7IHBjX2xocyA9IF87IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF1cbiAgICB8IF8sIFsgeyBwY19saHMgPSBbJXBhdD8gX107IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF0gLT4gZXhwclxuICAgIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgWyVleHByIGF0b21dIG1hdGNoZXNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBtYWxmb3JtZWQgWW9qc29ucyAqKVxuICBsZXQgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VscyBjYWxsID1cbiAgICBsZXQgY29sbF9zdHJ1Y3RzIGFjYyAobG9jLCBsYWJlbCkgPVxuICAgICAgKHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgLS0+XG4gICAgICAgbWF0Y2ggY2FsbCB3aXRoXG4gICAgICAgfCBgcHRhZ19ub19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX25vX2FyZ3MgX3RwX2xvYyBfeW9qc29uXVxuICAgICAgIHwgYHB0YWdfdGFrZXNfYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIF90cF9sb2MgX3lvanNvbl0pXG4gICAgICA6OiBhY2NcbiAgICBpblxuICAgIGxldCBleGNfbm9fdmFyaWFudF9tYXRjaCA9XG4gICAgICBbJXBhdD8gX10gLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCldXG4gICAgaW5cbiAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsX3N0cnVjdHMgfmluaXQ6WyBleGNfbm9fdmFyaWFudF9tYXRjaCBdIHJldl9lbHNcbiAgOztcblxuICAoKiBTcGxpdCB0aGUgcm93IGZpZWxkcyBvZiBhIHZhcmlhbnQgdHlwZSBpbnRvIGxpc3RzIG9mIGF0b21pYyB2YXJpYW50cyxcbiAgICAgc3RydWN0dXJlZCB2YXJpYW50cywgYXRvbWljIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyxcbiAgICAgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLiAqKVxuICBsZXQgc3BsaXRfcm93X2ZpZWxkIH5sb2MgKGF0b21zLCBzdHJ1Y3RzLCBhaW5ocywgc2luaHMpIHJvd19maWVsZCA9XG4gICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93X2ZpZWxkIGluXG4gICAgbWF0Y2ggcm93X2ZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IHRwbCA9IGxvYywgbGFiZWwgaW5cbiAgICAgIHRwbCA6OiBhdG9tcywgc3RydWN0cywgYEEgdHBsIDo6IGFpbmhzLCBzaW5oc1xuICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgICAgYXRvbXMsIChsb2MsIGxhYmVsKSA6OiBzdHJ1Y3RzLCBhaW5ocywgYFMgKGxvYywgbGFiZWwsIHRwLCByb3dfZmllbGQpIDo6IHNpbmhzXG4gICAgfCBSaW5oZXJpdCBpbmggLT5cbiAgICAgIGxldCBpaW5oID0gYEkgaW5oIGluXG4gICAgICBhdG9tcywgc3RydWN0cywgaWluaCA6OiBhaW5ocywgaWluaCA6OiBzaW5oc1xuICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInNwbGl0X3Jvd19maWVsZC8mXCJcbiAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHR5cGVfY29uc3RyX29mX3lvanNvbiA/KGludGVybmFsID0gZmFsc2UpIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiBpZCBhcmdzIH5sb2MgfmY6KGZ1biBzIC0+XG4gICAgICBsZXQgcyA9IHMgXiBcIl9vZl95b2pzb25cIiBpblxuICAgICAgaWYgaW50ZXJuYWwgdGhlbiBcIl9fXCIgXiBzIF4gXCJfX1wiIGVsc2UgcylcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSA/KGludGVybmFsID0gZmFsc2UpIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gfCBbJXR5cGU6IF9dIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCAodHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgb2sgLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUlb2ZfeW9qc29uOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCIpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gYXJnIC0+XG4gICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgYXJnKSlcbiAgICAgIGluXG4gICAgICBGdW4gKHR5cGVfY29uc3RyX29mX3lvanNvbiB+bG9jIH5pbnRlcm5hbCBpZCBhcmdzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuZnVuX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbb2ZfeW9qc29uXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgdHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBmcHMgaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbJXAgcGxpc3QgfmxvYyBwYXR0c11dXG4gICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfdHVwbGUgfmxvYyB2YXJzKVxuICAgIDsgWyVwYXQ/IHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgWyVlIGVpbnQgfmxvYyBuXVxuICAgICAgICAgIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaCA9XG4gICAgbGV0IGxvYyA9IGluaC5wdHlwX2xvYyBpblxuICAgIGxldCBmdW5jX2V4cHIgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmggaW5cbiAgICBsZXQgYXBwIDogRnVuX29yX21hdGNoLnQgPVxuICAgICAgbGV0IGZ1bl9leHByID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyBmdW5jX2V4cHIgaW5cbiAgICAgIEZ1biBbJWV4cHIgWyVlIGZ1bl9leHByXSBfeW9qc29uXVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2V4YyA9XG4gICAgICBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaFxuICAgICAgICBsb2NcbiAgICAgICAgKGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMpXG4gICAgaW5cbiAgICBsZXQgbmV3X290aGVyX21hdGNoZXMgPVxuICAgICAgWyBbJXBhdD8gX11cbiAgICAgICAgLS0+IHBleHBfdHJ5XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgKFslZSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGFwcF1cbiAgICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgICAgICBtYXRjaF9leGNcbiAgICAgIF1cbiAgICBpblxuICAgIG5ld19vdGhlcl9tYXRjaGVzLCB0cnVlXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgYXRvbWljIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX2F0b20gfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X2F0b21zX2luaHMgfnJldl9zdHJ1Y3RzID1cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgQSAobG9jLCBsYWJlbCkgLT5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAgICAtLT4gcGV4cF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID1cbiAgICAgIG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X3N0cnVjdHMgYHB0YWdfdGFrZXNfYXJnc1xuICAgIGluXG4gICAgbGV0IG1hdGNoX2F0b21zX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9hdG9tc19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9hdG9tc19pbmhzXG5cbiAgKCogVmFyaWFudCBjb252ZXJzaW9ucyAqKVxuXG4gICgqIE1hdGNoIGFyZ3VtZW50cyBvZiBjb25zdHJ1Y3RvcnMgKHZhcmlhbnRzIG9yIHN1bSB0eXBlcykgKilcbiAgYW5kIG1rX2Nuc3RyX2FyZ3NfbWF0Y2ggfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+aXNfdmFyaWFudCBsYWJlbCB0cHMgPVxuICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgIGxldCBjbnN0ciB2YXJzX2V4cHIgPVxuICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgdGhlbiBwZXhwX3ZhcmlhbnQgfmxvYyBjbnN0cl9sYWJlbCAoU29tZSB2YXJzX2V4cHIpXG4gICAgICBlbHNlIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIHZhcnNfZXhwcilcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoID1cbiAgICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICAgIGxldCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICAgIGxldCB2YXJzX2V4cHIgPVxuICAgICAgICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgICAgICAgIHwgWyB2YXJfZXhwciBdIC0+IHZhcl9leHByXG4gICAgICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyB2YXJzXG4gICAgICAgIGluXG4gICAgICAgIGNuc3RyIHZhcnNfZXhwclxuICAgICAgaW5cbiAgICAgIGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2hcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgbWF0Y2ggeW9qc29uX2FyZ3Mgd2l0aFxuICAgICAgfCBbJXAgcGxpc3QgfmxvYyBwYXR0c10gLT4gWyVlIHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGdvb2RfYXJnX21hdGNoXVxuICAgICAgfCBfIC0+XG4gICAgICAgIFslZVxuICAgICAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXV1dXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgc3RydWN0dXJlZCB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgPVxuICAgIGxldCBoYXNfc3RydWN0c19yZWYgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgUyAobG9jLCBsYWJlbCwgdHAsIF9yb3cpIC0+XG4gICAgICAgIGhhc19zdHJ1Y3RzX3JlZiA6PSB0cnVlO1xuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIG1rX2Nuc3RyX2FyZ3NfbWF0Y2hcbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+bG9jOnRwLnB0eXBfbG9jXG4gICAgICAgICAgICB+aXNfdmFyaWFudDp0cnVlXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgYXJnc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBbJXBhdD8gWyVwIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBhcyBfdGFnXSAtLT4gZXhwclxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID0gbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfYXRvbXMgYHB0YWdfbm9fYXJncyBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3RzX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9zdHJ1Y3RzX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX3N0cnVjdHNfaW5ocywgIWhhc19zdHJ1Y3RzX3JlZlxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIGF0b21pYyBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyAoaS5lLiBub3RcbiAgICAgaW5jbHVkZWQgdmFyaWFudCB0eXBlcykgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZF9saXN0ID1cbiAgICBsZXQgcmV2X2F0b21zLCByZXZfc3RydWN0cywgcmV2X2F0b21zX2luaHMsIHJldl9zdHJ1Y3RzX2luaHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6KHNwbGl0X3Jvd19maWVsZCB+bG9jKSB+aW5pdDooW10sIFtdLCBbXSwgW10pIHJvd19maWVsZF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0LCBoYXNfc3RydWN0cyA9XG4gICAgICBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICBpblxuICAgIGxldCBtYXliZV95b2pzb25fYXJnc19wYXR0ID0gaWYgaGFzX3N0cnVjdHMgdGhlbiBbJXBhdD8geW9qc29uX2FyZ3NdIGVsc2UgWyVwYXQ/IF9dIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIGF0b20gXSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbVxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZnVsbF90eXBlXG4gICAgICAgICAgICB+cmV2X2F0b21zX2luaHNcbiAgICAgICAgICAgIH5yZXZfc3RydWN0c1xuICAgIDsgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIGF0b20gOjogWyVwIG1heWJlX3lvanNvbl9hcmdzX3BhdHRdKSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1hdGNoX3N0cnVjdFxuICAgIDsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHZhcmlhbnRzICopXG4gIGFuZCB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpID1cbiAgICBsZXQgaXNfY29udGFpbmVkLCBmdWxsX3R5cGUgPVxuICAgICAgbWF0Y2ggZnVsbF90eXBlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBwdHlwX3ZhcmlhbnQgfmxvYyByb3dfZmllbGRzIENsb3NlZCBOb25lXG4gICAgICB8IFNvbWUgZnVsbF90eXBlIC0+IGZhbHNlLCBmdWxsX3R5cGVcbiAgICBpblxuICAgIGxldCB0b3BfbWF0Y2ggPVxuICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICB8IHsgcHJmX2Rlc2MgPSBSaW5oZXJpdCBpbmg7IF8gfSA6OiByZXN0IC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBpbmggcm93X2ZpZWxkcyA9XG4gICAgICAgICAgbGV0IGNhbGwgPVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIChbJWVcbiAgICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwclxuICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCldXG4gICAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjYWxsXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBleHByID1cbiAgICAgICAgICAgICAgbWF0Y2ggaC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgaW5oIC0+IGxvb3AgaW5oIHRcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJmdGFnX21hdGNoZXMgPVxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHJmdGFnX21hdGNoZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwZXhwX3RyeSB+bG9jIGNhbGwgKGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByKVxuICAgICAgICBpblxuICAgICAgICBbIFslcGF0PyB5b2pzb25dIC0tPiBsb29wIGluaCByZXN0IF1cbiAgICAgIHwgXyA6OiBfIC0+IGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBpbXBvc3NpYmxlICopXG4gICAgaW5cbiAgICBpZiBpc19jb250YWluZWRcbiAgICB0aGVuXG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgdHJ5IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gdG9wX21hdGNoXSB3aXRoXG4gICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgeW9qc29uXVxuICAgIGVsc2UgTWF0Y2ggdG9wX21hdGNoXG5cbiAgYW5kIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfcG9seV9maWVsZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgaW5cbiAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICBpblxuICAgIG1hdGNoIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwIHdpdGhcbiAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICBNYXRjaFxuICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgZXh0cmFjdGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpID1cbiAgICBsZXQgcmVjIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaW5pdHMsIG5vX2FyZ3MsIGFyZ3NcbiAgICAgIHwgbGQgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgIGxldCBrZXkgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bm0gKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZCkgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCwgbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiB0cCksIF8gfCAoTm9uZSB8IFNvbWUgKGBkZWZhdWx0IF8pKSwgdHAgLT5cbiAgICAgICAgICAgbGV0IGluaXRzID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVdIDo6IGluaXRzIGluXG4gICAgICAgICAgIGxldCB1bnJvbGxlZCA9XG4gICAgICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgWyVleHByIF9maWVsZF95b2pzb25dXG4gICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHApXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICAgICAocHN0cmluZyB+bG9jIGtleVxuICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlID0gWyVlIHVucm9sbGVkXSBpblxuICAgICAgICAgICAgICAgICAgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1cbiAgICAgICAgICAgICAgICAgIDo9IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgZnZhbHVlXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXMgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXNdKVxuICAgICAgICAgICAgIDo6IGFyZ3NcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgbW9yZV9mbGRzKVxuICAgIGluXG4gICAgbGV0IGhhbmRsZV9leHRyYSA9XG4gICAgICBbIChbJXBhdD8gX11cbiAgICAgICAgIC0tPlxuICAgICAgICAgaWYgYWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICB0aGVuIFslZXhwciAoKV1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgaWYgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKVxuICAgICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgdGhlbiBleHRyYSA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmFcbiAgICAgICAgICAgICBlbHNlICgpXSlcbiAgICAgIF1cbiAgICBpblxuICAgIGxvb3AgW10gaGFuZGxlX2V4dHJhIGhhbmRsZV9leHRyYSAoTGlzdC5yZXYgZmxkcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBoYXNfbm9ub3B0X2ZpZWxkcyA9IHJlZiBmYWxzZSBpblxuICAgIGxldCByZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzID1cbiAgICAgIGxldCByZWMgbG9vcCAoKHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgICAgICB8ICh7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgbG9jIH07IF8gfSBhcyBsZCkgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgICAgbGV0IGZsZCA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXSBpblxuICAgICAgICAgIGxldCBta19kZWZhdWx0IGxvYyA9XG4gICAgICAgICAgICBiaV9sc3QsIFslcGF0PyBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV0gOjogZ29vZF9wYXR0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IF8gfCBgeW9qc29uX29wdGlvbiBfKSAtPiBta19kZWZhdWx0IGxvY1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGhhc19ub25vcHRfZmllbGRzIDo9IHRydWU7XG4gICAgICAgICAgICAgICggWyVleHByXG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFslZSBmbGRdIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgLCBbJWUgZXN0cmluZyB+bG9jIG5tXV1cbiAgICAgICAgICAgICAgICA6OiBiaV9sc3RcbiAgICAgICAgICAgICAgLCBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV1cbiAgICAgICAgICAgICAgICA6OiBnb29kX3BhdHRzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY2MgPSBbJWV4cHIgWyVlIGZsZF1dIDo6IHJlc190cGxzLCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyBpblxuICAgICAgICAgIGxvb3AgYWNjIG1vcmVfZmxkc1xuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgKFtdLCBbXSwgW10pIChMaXN0LnJldiBmbGRzKVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2dvb2RfZXhwciA9XG4gICAgICBpZiBoYXNfcG9seVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjbnZ0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBfIH07IF8gfSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggTGlzdC5tYXAgfmY6Y252dCBmbGRzIHdpdGhcbiAgICAgICAgfCBbIG1hdGNoX2dvb2RfZXhwciBdIC0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICB8IG1hdGNoX2dvb2RfZXhwcnMgLT4gcGV4cF90dXBsZSB+bG9jIG1hdGNoX2dvb2RfZXhwcnMpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNudnQgbGQgPVxuICAgICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBkZWZhdWx0KSAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IFslZSBkZWZhdWx0XVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+IHZdXG4gICAgICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIF8pIHwgTm9uZSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2Mgbm0sIHZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIHdyYXBfZXhwciAocGV4cF9yZWNvcmQgfmxvYyAoTGlzdC5tYXAgfmY6Y252dCBmbGRzKSBOb25lKSlcbiAgICBpblxuICAgIGxldCBleHByLCBwYXR0ID1cbiAgICAgIG1hdGNoIHJlc190cGxzLCBnb29kX3BhdHRzIHdpdGhcbiAgICAgIHwgWyByZXNfZXhwciBdLCBbIHJlc19wYXR0IF0gLT4gcmVzX2V4cHIsIHJlc19wYXR0XG4gICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHJlc190cGxzLCBwcGF0X3R1cGxlIH5sb2MgZ29vZF9wYXR0c1xuICAgIGluXG4gICAgaWYgIWhhc19ub25vcHRfZmllbGRzXG4gICAgdGhlblxuICAgICAgcGV4cF9tYXRjaFxuICAgICAgICB+bG9jXG4gICAgICAgIGV4cHJcbiAgICAgICAgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgOyBbJXBhdD8gX11cbiAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF91bmRlZmluZWRfZWxlbWVudHNcbiAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgWyVlIGVsaXN0IH5sb2MgYmlfbHN0XV1cbiAgICAgICAgXVxuICAgIGVsc2UgcGV4cF9tYXRjaCB+bG9jIGV4cHIgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGNvbnZlcnRpbmcgcmVjb3JkIGZpZWxkcyAqKVxuXG4gIGxldCBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGV4cHJfcmVmX2luaXRzLCBfbWNfbm9fYXJnc19maWVsZHMsIG1jX2ZpZWxkc193aXRoX2FyZ3MgPVxuICAgICAgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKVxuICAgIGluXG4gICAgbGV0IGZpZWxkX3JlZnMgPVxuICAgICAgTGlzdC5tYXAyX2V4blxuICAgICAgICBmbGRzXG4gICAgICAgIGV4cHJfcmVmX2luaXRzXG4gICAgICAgIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSBpbml0IC0+XG4gICAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgfnBhdDoocHZhciB+bG9jIChuYW1lIF4gXCJfZmllbGRcIikpXG4gICAgICAgICAgICB+ZXhwcjpbJWV4cHIgcmVmIFslZSBpbml0XV0pXG4gICAgaW5cbiAgICBwZXhwX2xldFxuICAgICAgfmxvY1xuICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAoZmllbGRfcmVmc1xuICAgICAgIEAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZHVwbGljYXRlc10gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIDsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGV4dHJhXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgXSlcbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgcmVjIGl0ZXIgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFsgWyVwYXQ/IChmaWVsZF9uYW1lLCBfZmllbGRfeW9qc29uKSA6OiB0YWlsXVxuICAgICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICAgIFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGZpZWxkX25hbWVdIG1jX2ZpZWxkc193aXRoX2FyZ3NdO1xuICAgICAgICAgICAgICAgICAgaXRlciB0YWlsXVxuICAgICAgICAgICAgICA7IFslcGF0PyBbXV0gLS0+IFslZXhwciAoKV1cbiAgICAgICAgICAgICAgXV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciBmaWVsZF95b2pzb25zO1xuICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMgd2l0aFxuICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2R1cGxpY2F0ZV9maWVsZHNcbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMpXG4gICAgICAgICAgICB5b2pzb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIChtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhIHdpdGhcbiAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhKVxuICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgIHwgW10gLT4gWyVlIG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJdKV1cbiAgOztcblxuICBsZXQgaXNfcG9seSAoXywgZmxkcykgPVxuICAgIExpc3QuZXhpc3RzIGZsZHMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IHsgcGxkX3R5cGUgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH07IF8gfSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgbG9jXG4gICAgICAgIGZsZHNcbiAgICAgICAgfndyYXBfZXhwclxuICAgID1cbiAgICBsZXQgaGFzX3BvbHkgPSBpc19wb2x5IChsb2MsIGZsZHMpIGluXG4gICAgbGV0IGNudl9maWVsZHMgPVxuICAgICAgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJcbiAgICBpblxuICAgIGlmIGhhc19wb2x5XG4gICAgdGhlbiAoXG4gICAgICBsZXQgcGF0dCA9XG4gICAgICAgIGxldCBwYXRzID1cbiAgICAgICAgICBMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPiBwdmFyIH5sb2MgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcGF0cyB3aXRoXG4gICAgICAgIHwgWyBwYXQgXSAtPiBwYXRcbiAgICAgICAgfCBwYXRzIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXRzXG4gICAgICBpblxuICAgICAgbGV0IHJlY29yZF9kZWYgPVxuICAgICAgICB3cmFwX2V4cHJcbiAgICAgICAgICAocGV4cF9yZWNvcmRcbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgKExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+XG4gICAgICAgICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSkpXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgIGluXG4gICAgICBwZXhwX2xldFxuICAgICAgICB+bG9jXG4gICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBhdHQgfmV4cHI6Y252X2ZpZWxkcyBdXG4gICAgICAgIHJlY29yZF9kZWYpXG4gICAgZWxzZSBjbnZfZmllbGRzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgcmVjb3JkcyAqKVxuICBsZXQgcmVjb3JkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIE1hdGNoXG4gICAgICBbIFslcGF0PyBgQXNzb2MgZmllbGRfeW9qc29ucyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBmbGRzXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biB4IC0+IHgpXG4gICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICB5b2pzb25dXG4gICAgICBdXG4gIDs7XG5cbiAgKCogU3VtIHR5cGUgY29udmVyc2lvbnMgKilcbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igd2VsbC1mb3JtZWQgWW9qc29ucyB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfZ29vZF9zdW1fbWF0Y2hlcyB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBjZHMpID1cbiAgICBMaXN0Lm1hcCBjZHMgfmY6KGZ1biAoY2QsIGxhYmVsKSAtPlxuICAgICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl9yZWNvcmQgZmllbGRzOyBfIH0gLT5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc19jZCBjZCkpXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZpZWxkc1xuICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgZSkpXG4gICAgICAgIGluXG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgWyBgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpOyBgQXNzb2MgZmllbGRfeW9qc29ucyBdXG4gICAgICAgICAgYXMgeW9qc29uXVxuICAgICAgICAtLT4gZXhwclxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgW107IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBdXVxuICAgICAgICAtLT4gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgTm9uZVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXyBhcyB0cHMpOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IChgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpIDo6IHlvanNvbl9hcmdzKSBhc1xuICAgICAgICAgIF95b2pzb25dXG4gICAgICAgIC0tPiBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQ6ZmFsc2UgbGFiZWwgdHBzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIG1hbGZvcm1lZCBZb2pzb25zIHdpdGggZ29vZCB0YWdzXG4gICAgIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIF90cF9sb2MgeW9qc29uXVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXykgfCBQY3N0cl9yZWNvcmQgXzsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIF90cF9sb2MgeW9qc29uXSlcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBzdW0gdHlwZXMgKilcbiAgbGV0IHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgbGV0IGFsdHMgPVxuICAgICAgTGlzdC5tYXAgYWx0cyB+ZjooZnVuIGNkIC0+IGNkLCBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QpXG4gICAgaW5cbiAgICBNYXRjaFxuICAgICAgKExpc3QuY29uY2F0XG4gICAgICAgICBbIG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cylcbiAgICAgICAgIDsgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGFsdHMpXG4gICAgICAgICA7IFsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICAgICAgICAgXVxuICAgICAgICAgXSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCBuaWxfb2ZfeW9qc29uIGxvYyA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBGdW5cbiAgICAgIFslZXhwclxuICAgICAgICBmdW4geW9qc29uIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBfdHBfbG9jIHlvanNvbl1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYzpfIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGZ1bGxfdHlwZSA9XG4gICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgIGluXG4gICAgbGV0IGlzX3ByaXZhdGUgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICB8IFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgfCBQdWJsaWMgLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIGlzX3ByaXZhdGVcbiAgICB0aGVuIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwib2ZfeW9qc29uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgdHlwZVwiO1xuICAgIGxldCBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb24gPVxuICAgICAgbWF0Y2ggaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzpmYWxzZSB3aXRoXG4gICAgICB8IGBEZWZpbml0ZWx5IC0+IHRydWVcbiAgICAgIHwgYE1heWJlIC0+IHBvbHlcbiAgICAgIHwgYFN1cmVseV9ub3QgLT5cbiAgICAgICAgaWYgcG9seVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICBcInlvanNvbl9wb2x5IGFubm90YXRpb24gb24gYSB0eXBlIHRoYXQgaXMgc3VyZWx5IG5vdCBhIHBvbHltb3JwaGljIHZhcmlhbnRcIjtcbiAgICAgICAgZmFsc2VcbiAgICBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhbHRzIC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKHRkLnB0eXBlX2xvYywgYWx0cylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGJscyAtPlxuICAgICAgICAgIHJlY29yZF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX3RkIHRkKSlcbiAgICAgICAgICAgIChsb2MsIGxibHMpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBuaWxfb2ZfeW9qc29uIHRkLnB0eXBlX2xvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgICAgICB0eXBlX29mX3lvanNvblxuICAgICAgICAgICAgICAgfmZ1bGxfdHlwZVxuICAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgIH5pbnRlcm5hbDpjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHR5KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGhcbiAgICAgICAgIHJlY3Vyc2l2ZSB0eXBlcyBieSBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHQgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHRdIF1dXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX25hbWUgPSB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25cIiBpblxuICAgIGxldCBpbnRlcm5hbF9uYW1lID0gXCJfX1wiIF4gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uX19cIiBpblxuICAgIGxldCBhcmdfcGF0dHMsIGFyZ19leHBycyA9XG4gICAgICBMaXN0LnVuemlwXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgbGV0IG5hbWUgPSBcIl9vZl9cIiBeIHRwLnR4dCBpblxuICAgICAgICAgICAgIHB2YXIgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSlcbiAgICAgICAgICAgdHBzKVxuICAgIGluXG4gICAgbGV0IGJpbmRfdHBfbG9jX2luID1cbiAgICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMuJXNcIiBwYXRoIHR5cGVfbmFtZSBpblxuICAgICAgZnVuIGUgLT5cbiAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPlxuICAgICAgICAgICgqIHdlIGRlZmluaXRlbHkgZG9uJ3QgdXNlIHRoZSBzdHJpbmcsIHNvIGNsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgY29kZSBhIGJpdCAqKVxuICAgICAgICAgIGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgICAgICBbJWUgZV1dXG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICB0aGVuXG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoYmluZF90cF9sb2NfaW5cbiAgICAgICAgICAgICAoZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHkpKSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGxldCBuZWVkX3RwX2xvYywgYm9keV9iZWxvd19sYW1iZGFzID1cbiAgICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBub192YXJpYW50X21hdGNoX21jID1cbiAgICAgICAgICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF1cbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGludGVybmFsX2NhbGwgPVxuICAgICAgICAgICAgbGV0IGludGVybmFsX2V4cHIgPSBldmFyIH5sb2MgaW50ZXJuYWxfbmFtZSBpblxuICAgICAgICAgICAgZWFwcGx5IH5sb2MgaW50ZXJuYWxfZXhwciAoYXJnX2V4cHJzIEAgWyBbJWV4cHIgeW9qc29uXSBdKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyeV93aXRoID0gcGV4cF90cnkgfmxvYyBpbnRlcm5hbF9jYWxsIG5vX3ZhcmlhbnRfbWF0Y2hfbWMgaW5cbiAgICAgICAgICBmYWxzZSwgYmluZF90cF9sb2NfaW4gWyVleHByIGZ1biB5b2pzb24gLT4gWyVlIHRyeV93aXRoXV0pXG4gICAgICAgIGVsc2UgdHJ1ZSwgYm9keVxuICAgICAgaW5cbiAgICAgIGxldCBib2R5X3dpdGhfbGFtYmRhcyA9XG4gICAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuICAgICAgICAgIH5yZWNfZmxhZ1xuICAgICAgICAgIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keV9iZWxvd19sYW1iZGFzKVxuICAgICAgaW5cbiAgICAgIGlmIG5lZWRfdHBfbG9jIHRoZW4gYmluZF90cF9sb2NfaW4gYm9keV93aXRoX2xhbWJkYXMgZWxzZSBib2R5X3dpdGhfbGFtYmRhc1xuICAgIGluXG4gICAgbGV0IG1rX2JpbmRpbmcgZnVuY19uYW1lIGJvZHkgPVxuICAgICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfdHlwZSB0ZCBpblxuICAgICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfYmluZGluZ3MgPVxuICAgICAgbWF0Y2ggaW50ZXJuYWxfZnVuX2JvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgYm9keSAtPiBbIG1rX2JpbmRpbmcgaW50ZXJuYWxfbmFtZSBib2R5IF1cbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9iaW5kaW5nID0gbWtfYmluZGluZyBleHRlcm5hbF9uYW1lIGV4dGVybmFsX2Z1bl9ib2R5IGluXG4gICAgaW50ZXJuYWxfYmluZGluZ3MsIFsgZXh0ZXJuYWxfYmluZGluZyBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcbiAgbGV0IHRkc19vZl95b2pzb24gfmxvYyB+cG9seSB+cGF0aCAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCB0eXBldmFyX2hhbmRsaW5nID0gYG9rIGluXG4gICAgbGV0IHNpbmdsZXRvbiA9XG4gICAgICBtYXRjaCB0ZHMgd2l0aFxuICAgICAgfCBbIF8gXSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHNpbmdsZXRvblxuICAgIHRoZW4gKFxuICAgICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICAgIGluXG4gICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIFJlY3Vyc2l2ZSBiaW5kaW5nc1xuICAgICAgfCBOb25yZWN1cnNpdmUgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGludGVybmFsc1xuICAgICAgICAgIEAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGV4dGVybmFscykpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wb2x5IH5sb2MgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICBpblxuICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3MpXG4gIDs7XG5cbiAgbGV0IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wYXRoIGN0eXAgPVxuICAgIGxldCBsb2MgPSB7IGN0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgZnAgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBjdHlwIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIFslZSBmdW5fZXhwcl0geW9qc29uXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGZ1bGxfdHlwZV9uYW1lID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgbGluZSAlaTogJXNcIlxuICAgICAgICBwYXRoXG4gICAgICAgIGxvYy5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAgICAgKHN0cmluZ19vZl9jb3JlX3R5cGUgY3R5cClcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgIFslZSBib2R5XV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi50eXBlX29mX3lvanNvbl9vZiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlIHR5ID1cbiAgICBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciB0eVxuICAgIHw+IEZ1bl9vcl9tYXRjaC5leHByIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90ZHNcbmVuZFxuXG5tb2R1bGUgWW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzLnlvanNvbl9maWVsZHNfb2ZfdGRzXG5lbmRcblxubW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl9vZl95b2pzb24gfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSA9XG4gICAgU3RyX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHJcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX29mX3lvanNvbi50ZHNfb2ZfeW9qc29uXG5lbmRcblxubW9kdWxlIFNpZ195b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gICAgQCBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZyB+cG9seTpmYWxzZSB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgfmxvYyB+cGF0aCAoKF9yZiwgdGRzKSBhcyBkZWNscykgPVxuICAgIG1hdGNoXG4gICAgICBta19uYW1lZF9zaWdcbiAgICAgICAgfmxvY1xuICAgICAgICB+c2dfbmFtZTpcIlBweF95b2pzb25fY29udl9saWIuWW9qc29uYWJsZS5TXCJcbiAgICAgICAgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50OmZhbHNlXG4gICAgICAgIHRkc1xuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5jbHVkZV9pbmZvcyAtPiBbIHBzaWdfaW5jbHVkZSB+bG9jIGluY2x1ZGVfaW5mb3MgXVxuICAgIHwgTm9uZSAtPiBta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc29vX3J1bnRpbWUuUnVudGltZV92ZXJzaW9uICopXG5tb2R1bGUgUnVudGltZV92ZXJzaW9uID0gSnNvb19ydW50aW1lX19SdW50aW1lX3ZlcnNpb25cblxubW9kdWxlIEpzb29fcnVudGltZV9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCJtb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgdHlwZSAnYSBqc19hcnJheSA9IHRcblxuICB0eXBlICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2sgPSB0XG5cbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuICBleHRlcm5hbCBib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuICBleHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG4gIGV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgaW50MzJfb2ZfbnVtYmVyIDogdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCBuYXRpdmVpbnRfb2ZfbnVtYmVyIDogdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCB0eXBlb2YgOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuICBleHRlcm5hbCBpbnN0YW5jZW9mIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBleHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBleHRlcm5hbCBkZWxldGUgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gIGV4dGVybmFsIGNhbGwgOiB0IC0+IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gIGV4dGVybmFsIGZ1bl9jYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gIGV4dGVybmFsIG5ld19vYmogOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG4gIGV4dGVybmFsIG5ld19vYmpfYXJyIDogdCAtPiB0IGpzX2FycmF5IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICh0IGpzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIHQganNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAoJ2IgLT4gdCBqc19hcnJheSAtPiAnYSkgLT4gKCdiLCB0IGpzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YXNTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YXNTY3JpcHQgZXJyb3IgaXMgYWxyZWFkeSBhdHRhY2hlZCwgaXQgd2lsbCBkbyBub3RoaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0b1xuICAgIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcy5cblxuICAgIEF0dGFjaGluZyBKYXZhc1NjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgc3RyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGxldCByYWlzZV8gOiB0IC0+ICdhID0gSnMuanNfZXhwciBcIihmdW5jdGlvbiAoZXhuKSB7IHRocm93IGV4biB9KVwiXG5cbiAgZXh0ZXJuYWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uID0gXCJjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG4gPSBcImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXCJcbmVuZFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMi02MFwiXVxuXG5tb2R1bGUgRm9yX2NvbXBhdGliaWxpdHlfb25seSA9IHN0cnVjdFxuICAoKiBBZGQgcHJpbWl0aXZlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiBFeGlzdGluZyB1c2VycyBtaWdodFxuICAgICBkZXBlbmQgb24gaXQgKGUuZy4gZ2VuX2pzX2FwaSksIHdlIGRvbnQgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2VzIG1pc3NpbmcgcHJpbWl0aXZlcy4gKilcblxuICBleHRlcm5hbCBjYW1sX2pzX2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IEpzLnQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19ieXRlX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF9vZl9qc19hcnJheSA6ICdhIEpzLmpzX2FycmF5IC0+ICdhIGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X3RvX2pzX2FycmF5IDogJ2EgbGlzdCAtPiAnYSBKcy5qc19hcnJheSA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuQ1NTICopXG5tb2R1bGUgQ1NTID0gSnNfb2Zfb2NhbWxfX0NTU1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb20gKilcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbF9fRG9tXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9ldmVudHMgKilcbm1vZHVsZSBEb21fZXZlbnRzID0gSnNfb2Zfb2NhbWxfX0RvbV9ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2h0bWwgKilcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sX19Eb21faHRtbFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fc3ZnICopXG5tb2R1bGUgRG9tX3N2ZyA9IEpzX29mX29jYW1sX19Eb21fc3ZnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkV2ZW50U291cmNlICopXG5tb2R1bGUgRXZlbnRTb3VyY2UgPSBKc19vZl9vY2FtbF9fRXZlbnRTb3VyY2VcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlsZSAqKVxubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbF9fRmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaXJlYnVnICopXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sX19GaXJlYnVnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZvcm0gKilcbm1vZHVsZSBGb3JtID0gSnNfb2Zfb2NhbWxfX0Zvcm1cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuR2VvbG9jYXRpb24gKilcbm1vZHVsZSBHZW9sb2NhdGlvbiA9IEpzX29mX29jYW1sX19HZW9sb2NhdGlvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGVyc2VjdGlvbk9ic2VydmVyICopXG5tb2R1bGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50bCAqKVxubW9kdWxlIEludGwgPSBKc19vZl9vY2FtbF9fSW50bFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5KcyAqKVxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWxfX0pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzb24gKilcbm1vZHVsZSBKc29uID0gSnNfb2Zfb2NhbWxfX0pzb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnN0YWJsZSAqKVxubW9kdWxlIEpzdGFibGUgPSBKc19vZl9vY2FtbF9fSnN0YWJsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5MaWJfdmVyc2lvbiAqKVxubW9kdWxlIExpYl92ZXJzaW9uID0gSnNfb2Zfb2NhbWxfX0xpYl92ZXJzaW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLk11dGF0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBNdXRhdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX011dGF0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUGVyZm9ybWFuY2VPYnNlcnZlciAqKVxubW9kdWxlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZWdleHAgKilcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbF9fUmVnZXhwXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlc2l6ZU9ic2VydmVyICopXG5tb2R1bGUgUmVzaXplT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUmVzaXplT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuU3lzX2pzICopXG5tb2R1bGUgU3lzX2pzID0gSnNfb2Zfb2NhbWxfX1N5c19qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5UeXBlZF9hcnJheSAqKVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWxfX1R5cGVkX2FycmF5XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlVybCAqKVxubW9kdWxlIFVybCA9IEpzX29mX29jYW1sX19VcmxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViR0wgKilcbm1vZHVsZSBXZWJHTCA9IEpzX29mX29jYW1sX19XZWJHTFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJTb2NrZXRzICopXG5tb2R1bGUgV2ViU29ja2V0cyA9IEpzX29mX29jYW1sX19XZWJTb2NrZXRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldvcmtlciAqKVxubW9kdWxlIFdvcmtlciA9IEpzX29mX29jYW1sX19Xb3JrZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX19YbWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGxvY2FsIG1vZHVsZSBbSnNdIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBwcHhfanMgZXh0ZW5zaW9uIHdvcmsgd2l0aGluIHRoYXQgZmlsZS4gKilcbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG5cbiAgdHlwZSAoLSdhLCArJ2IpIG1ldGhfY2FsbGJhY2tcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgdHlwZSB0b3BcblxuICAgIHR5cGUgYW55ID0gdG9wIHRcblxuICAgIHR5cGUgYW55X2pzX2FycmF5ID0gYW55XG5cbiAgICBleHRlcm5hbCBpbmplY3QgOiAnYSAtPiBhbnkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBjb2VyY2UgOiBfIHQgLT4gXyB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogJ2EgLT4gJ2IgLT4gJ2MgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldCA6ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICAgIGV4dGVybmFsIGRlbGV0ZSA6ICdhIC0+ICdiIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICAgIGV4dGVybmFsIGNhbGwgOiAnYSAtPiAnYiAtPiBhbnkgYXJyYXkgLT4gJ2MgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBmdW5fY2FsbCA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGwgOiAnYSAtPiBzdHJpbmcgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqX2FyciA6ICdhIC0+IGFueV9qc19hcnJheSAtPiAnYiA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogYW55KSBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICAgIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICAgIGxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJnbG9iYWxUaGlzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoYW55X2pzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIGFueV9qc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgICgnYiAtPiBhbnlfanNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgYW55X2pzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgICgqIERFUFJFQ0FURUQgKilcbiAgICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuICBlbmRcblxuICAoKioqKilcblxuICB0eXBlICdhIG9wdCA9ICdhXG5cbiAgdHlwZSAnYSBvcHRkZWYgPSAnYVxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgbGV0IG51bGwgOiAnYSBvcHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG5cbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIG9wdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgdW5kZWZpbmVkIDogJ2Egb3B0ZGVmID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2Egb3B0ZGVmID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSB0eXBlIE9QVCA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVtcHR5IDogJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuXG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgICB2YWwgdGVzdCA6ICdhIHQgLT4gYm9vbFxuXG4gICAgdmFsIGl0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgY2FzZSA6ICdhIHQgLT4gKHVuaXQgLT4gJ2IpIC0+ICgnYSAtPiAnYikgLT4gJ2JcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYVxuXG4gICAgdmFsIG9wdGlvbiA6ICdhIG9wdGlvbiAtPiAnYSB0XG5cbiAgICB2YWwgdG9fb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb25cblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdCA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdFxuXG4gICAgbGV0IGVtcHR5ID0gbnVsbFxuXG4gICAgbGV0IHJldHVybiA9IHNvbWVcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChlcXVhbHMgeCBudWxsKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChlcXVhbHMgeCBudWxsKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRkZWYgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHRkZWYgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRkZWZcblxuICAgIGxldCBlbXB0eSA9IHVuZGVmaW5lZFxuXG4gICAgbGV0IHJldHVybiA9IGRlZlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIGxldCBjb2VyY2UgeCBmIGcgPSBPcHQuZ2V0IChmIHgpIChmdW4gKCkgLT4gZyB4KVxuXG4gIGxldCBjb2VyY2Vfb3B0IHggZiBnID0gT3B0LmdldCAoT3B0LmJpbmQgeCBmKSAoZnVuICgpIC0+IGcgeClcblxuICAoKioqKilcblxuICB0eXBlICsnYSBtZXRoXG5cbiAgdHlwZSArJ2EgZ2VuX3Byb3BcblxuICB0eXBlICdhIHJlYWRvbmx5X3Byb3AgPSA8IGdldCA6ICdhID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHdyaXRlb25seV9wcm9wID0gPCBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHByb3AgPSA8IGdldCA6ICdhIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBvcHRkZWZfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSArJ2EgY29uc3RyXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBjYWxsYmFjayA9ICh1bml0LCAnYSkgbWV0aF9jYWxsYmFja1xuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gICgqKioqKVxuXG4gIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgKCoqKiopXG5cbiAgbGV0IF90cnVlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInRydWVcIlxuXG4gIGxldCBfZmFsc2UgPSBVbnNhZmUucHVyZV9qc19leHByIFwiZmFsc2VcIlxuXG4gIHR5cGUgbWF0Y2hfcmVzdWx0X2hhbmRsZVxuXG4gIHR5cGUgc3RyaW5nX2FycmF5XG5cbiAgdHlwZSBudW1iZXJfdCA9IGZsb2F0XG5cbiAgY2xhc3MgdHlwZSBudW1iZXIgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmdfcmFkaXggOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRml4ZWQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbF9kaWdpdHMgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvUHJlY2lzaW9uIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgZW5kXG5cbiAgYW5kIGpzX3N0cmluZyA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB2YWx1ZU9mIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJBdCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckNvZGVBdCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICAoKiBUaGlzIG1heSByZXR1cm4gTmFOLi4uICopXG4gICAgbWV0aG9kIGNvbmNhdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfNCA6XG4gICAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsb2NhbGVDb21wYXJlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgbWV0aG9kIF9tYXRjaCA6IHJlZ0V4cCB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemVfZm9ybSA6IG5vcm1hbGl6YXRpb24gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZSA6IHJlZ0V4cCB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzZWFyY2ggOiByZWdFeHAgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdCA6IGpzX3N0cmluZyB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9saW1pdGVkIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHAgOiByZWdFeHAgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwTGltaXRlZCA6IHJlZ0V4cCB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nX3RvRW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZUxvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1VwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVVwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0cmltIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGFuZCByZWdFeHAgPSBvYmplY3RcbiAgICBtZXRob2QgZXhlYyA6IGpzX3N0cmluZyB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIHRlc3QgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNvdXJjZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBnbG9iYWwgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZUNhc2UgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG11bHRpbGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbGFzdEluZGV4IDogaW50IHByb3BcbiAgZW5kXG5cbiAgYW5kIG5vcm1hbGl6YXRpb24gPSBqc19zdHJpbmdcblxuICAoKiBzdHJpbmcgaXMgdXNlZCBieSBwcHhfanMsIGl0IG5lZWRzIHRvIGNvbWUgYmVmb3JlIGFueSB1c2Ugb2YgdGhlXG4gICAgIG5ldyBzeW50YXggaW4gdGhpcyBmaWxlICopXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGxldCBuZmMgPSBzdHJpbmcgXCJORkNcIlxuXG4gIGxldCBuZmQgPSBzdHJpbmcgXCJORkRcIlxuXG4gIGxldCBuZmtjID0gc3RyaW5nIFwiTkZLQ1wiXG5cbiAgbGV0IG5ma2QgPSBzdHJpbmcgXCJORktEXCJcbmVuZFxuXG5pbmNsdWRlIEpzXG5cbmNsYXNzIHR5cGUgc3RyaW5nX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgZnJvbUNoYXJDb2RlIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgc3RyaW5nX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fU3RyaW5nXG5cbmxldCByZWdFeHAgPSBVbnNhZmUuZ2xvYmFsIyMuX1JlZ0V4cFxuXG5sZXQgcmVnRXhwX2NvcHkgPSByZWdFeHBcblxubGV0IHJlZ0V4cF93aXRoRmxhZ3MgPSByZWdFeHBcblxuY2xhc3MgdHlwZSBbJ2FdIGpzX2FycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmNhdCA6ICdhIGpzX2FycmF5IHQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGpvaW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHBvcCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCByZXZlcnNlIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNoaWZ0IDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnQgOiAoJ2EgLT4gJ2EgLT4gbnVtYmVyX3QpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0X2FzU3RyaW5ncyA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8yIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzMgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfNCA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnQgOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzb21lIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZXZlcnkgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb3JFYWNoIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtYXAgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBmaWx0ZXIgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgcmVkdWNlX2luaXQgOiAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlIDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0X2luaXQgOlxuICAgICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodCA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuZW5kXG5cbmxldCBvYmplY3RfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgb2JqZWN0X2tleXMgbyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBvYmplY3RfY29uc3RydWN0b3IjI2tleXMgb1xuXG5sZXQgYXJyYXlfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX0FycmF5XG5cbmxldCBhcnJheV9lbXB0eSA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9sZW5ndGggPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfZ2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IFVuc2FmZS5nZXRcblxubGV0IGFycmF5X3NldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gVW5zYWZlLnNldFxuXG5sZXQgYXJyYXlfbWFwX3BvbHkgOlxuICAgICdhICNqc19hcnJheSB0IC0+ICgnYSAtPiBpbnQgLT4gJ2EgI2pzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiICNqc19hcnJheSB0ID1cbiBmdW4gYSBjYiAtPiAoVW5zYWZlLmNvZXJjZSBhKSMjbWFwIGNiXG5cbmxldCBhcnJheV9tYXAgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggX2lkeCBfIC0+IGYgeCkpXG5cbmxldCBhcnJheV9tYXBpIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IGlkeCBfIC0+IGYgaWR4IHgpKVxuXG5jbGFzcyB0eXBlIG1hdGNoX3Jlc3VsdCA9IG9iamVjdFxuICBpbmhlcml0IFtqc19zdHJpbmcgdF0ganNfYXJyYXlcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnB1dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgc3RyX2FycmF5IDogc3RyaW5nX2FycmF5IHQgLT4ganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IFVuc2FmZS5jb2VyY2VcblxubGV0IG1hdGNoX3Jlc3VsdCA6IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCAtPiBtYXRjaF9yZXN1bHQgdCA9IFVuc2FmZS5jb2VyY2VcblxuY2xhc3MgdHlwZSBkYXRlID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1RpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZURhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdmFsdWVPZiA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEhvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDSG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZXpvbmVPZmZzZXQgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0Z1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0U2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ1NlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0b1VUQ1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9JU09TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSlNPTiA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRhdGVfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tb250aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2RheSA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2hvdXIgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21pbiA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX3NlYyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tcyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG5vdyA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgZGF0ZV9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RhdGVcblxubGV0IGRhdGUgOiBkYXRlX2NvbnN0ciB0ID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbm93IDogZGF0ZSB0IGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2Zyb21UaW1lVmFsdWUgOiAobnVtYmVyX3QgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tb250aCA6IChpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZGF5IDogKGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfaG91ciA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9taW4gOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX3NlYyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21zIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9XG4gIGRhdGVfY29uc3RyXG5cbmNsYXNzIHR5cGUgbWF0aCA9IG9iamVjdFxuICBtZXRob2QgX0UgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjEwIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMkUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cxMEUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QSSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQxXzJfIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFicyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYWNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbjIgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNlaWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZXhwIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBmbG9vciA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbG9nIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHBvdyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcmFuZG9tIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByb3VuZCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzcXJ0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IG1hdGggPSBVbnNhZmUuZ2xvYmFsIyMuX01hdGhcblxuY2xhc3MgdHlwZSBlcnJvciA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhY2sgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgZXJyb3JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9FcnJvclxuXG5tb2R1bGUgSnNfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvcl90ID0gZXJyb3IgdFxuXG4gIGluY2x1ZGUgSnNvb19ydW50aW1lLkVycm9yXG5cbiAgZXh0ZXJuYWwgb2ZfZXJyb3IgOiBlcnJvcl90IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IGVycm9yX3QgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IG5hbWUgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5uYW1lXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5tZXNzYWdlXG5cbiAgbGV0IHN0YWNrIChlIDogdCkgOiBzdHJpbmcgb3B0aW9uID1cbiAgICBPcHQudG9fb3B0aW9uIChPcHQubWFwICh0b19lcnJvciBlKSMjLnN0YWNrIHRvX3N0cmluZylcblxuICBsZXQgdG9fc3RyaW5nIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyN0b1N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWdpYyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yIHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdiKSBlcSA9IEVxIDogKCdhLCAnYSkgZXFcblxuICBsZXQgKGVxIDogKGVycm9yIHQsIEpzX2Vycm9yLnQpIGVxKSA9IE9iai5tYWdpYyBFcVxuXG4gIGxldCBtID1cbiAgICBtYXRjaCBlcSB3aXRoXG4gICAgfCBFcSAtPlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIGV4Y2VwdGlvbiBFcnJvciA9IEpzX2Vycm9yLkV4blxuICAgICAgICBlbmQgOiBUKVxuXG4gIG1vZHVsZSBFcnJvciA9ICh2YWwgbSA6IFQpXG5lbmRcblxuaW5jbHVkZSBNYWdpYy5FcnJvclxuXG5sZXQgcmFpc2VfanNfZXJyb3IgZSA9IEpzX2Vycm9yLnJhaXNlXyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IHN0cmluZ19vZl9lcnJvciBlID0gSnNfZXJyb3IudG9fc3RyaW5nIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgZXhuX3dpdGhfanNfYmFja3RyYWNlID0gSnNfZXJyb3IuYXR0YWNoX2pzX2JhY2t0cmFjZVxuXG5leHRlcm5hbCBqc19lcnJvcl9vZl9leG4gOiBleG4gLT4gZXJyb3IgdCBvcHQgPSBcImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXCJcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBfSlNPTiA6IGpzb24gdCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgZGVjb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGRlY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCB1bmVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy51bmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxuZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIHRvX2Jvb2wgOiBib29sIHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiAnYSBqc19hcnJheSB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG5leHRlcm5hbCB0b19hcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG5leHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbmV4dGVybmFsIGZsb2F0IDogZmxvYXQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogbnVtYmVyX3QgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiBudW1iZXIgdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogbnVtYmVyIHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBpbnQzMiA6IGludDMyIC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG5leHRlcm5hbCB0b19pbnQzMiA6IG51bWJlcl90IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogbnVtYmVyX3QgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHR5cGVvZiA6IF8gdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG5leHRlcm5hbCBpbnN0YW5jZW9mIDogXyB0IC0+IF8gY29uc3RyIC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbmxldCBpc05hTiAoaSA6ICdhKSA6IGJvb2wgPVxuICB0b19ib29sIChVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmlzTmFOIFt8IFVuc2FmZS5pbmplY3QgaSB8XSlcblxubGV0IHBhcnNlSW50IChzIDoganNfc3RyaW5nIHQpIDogaW50ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlSW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUludFwiIGVsc2Ugc1xuXG5sZXQgcGFyc2VGbG9hdCAocyA6IGpzX3N0cmluZyB0KSA6IG51bWJlcl90ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlRmxvYXQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlRmxvYXRcIiBlbHNlIHNcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBKc19lcnJvci5FeG4gZSAtPiBTb21lIChKc19lcnJvci50b19zdHJpbmcgZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBlIC0+XG4gICAgICBsZXQgZSA6IDwgLi4gPiB0ID0gT2JqLm1hZ2ljIGUgaW5cbiAgICAgIGlmIGluc3RhbmNlb2YgZSBhcnJheV9jb25zdHJ1Y3RvciB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19zdHJpbmcgZSMjdG9TdHJpbmcpKVxuXG5sZXQgZXhwb3J0X2pzIChmaWVsZCA6IGpzX3N0cmluZyB0KSB4ID1cbiAgVW5zYWZlLnNldFxuICAgIChVbnNhZmUucHVyZV9qc19leHByIFwianNvb19leHBvcnRzXCIpXG4gICAgZmllbGRcbiAgICAoaWYgU3RyaW5nLmVxdWFsIChKcy50b19zdHJpbmcgKHR5cGVvZiAoT2JqLm1hZ2ljIHgpKSkgXCJmdW5jdGlvblwiXG4gICAgICAgICgqIGZ1bmN0aW9uIHdpdGggYXJpdHkvbGVuZ3RoIGVxdWFsIHRvIHplcm8gYXJlIGFscmVhZHkgd3JhcHBlZCAqKVxuICAgICAgICAmJiBVbnNhZmUuZ2V0IChPYmoubWFnaWMgeCkgKEpzLnN0cmluZyBcImxlbmd0aFwiKSA+IDBcbiAgICAgdGhlbiBPYmoubWFnaWMgKHdyYXBfY2FsbGJhY2sgKE9iai5tYWdpYyB4KSlcbiAgICAgZWxzZSB4KVxuXG5sZXQgZXhwb3J0IGZpZWxkIHggPSBleHBvcnRfanMgKHN0cmluZyBmaWVsZCkgeFxuXG5sZXQgZXhwb3J0X2FsbCBvYmogPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG9iaiBpblxuICBrZXlzIyNmb3JFYWNoXG4gICAgKHdyYXBfY2FsbGJhY2sgKGZ1biAoa2V5IDoganNfc3RyaW5nIHQpIF8gXyAtPiBleHBvcnRfanMga2V5IChVbnNhZmUuZ2V0IG9iaiBrZXkpKSlcblxuKCoqKiopXG5cbigqIERFUFJFQ0FURUQgKilcblxudHlwZSBmbG9hdF9wcm9wID0gbnVtYmVyX3QgcHJvcFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gbm9kZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBsaXN0X29mX25vZGVMaXN0IChub2RlTGlzdCA6ICdhIG5vZGVMaXN0IHQpID1cbiAgbGV0IGxlbmd0aCA9IG5vZGVMaXN0IyMubGVuZ3RoIGluXG4gIGxldCByZWMgYWRkX2l0ZW0gYWNjIGkgPVxuICAgIGlmIGkgPCBsZW5ndGhcbiAgICB0aGVuXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChub2RlTGlzdCMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWRkX2l0ZW0gYWNjIChpICsgMSlcbiAgICAgIHwgU29tZSBlIC0+IGFkZF9pdGVtIChlIDo6IGFjYykgKGkgKyAxKVxuICAgIGVsc2UgTGlzdC5yZXYgYWNjXG4gIGluXG4gIGFkZF9pdGVtIFtdIDBcblxudHlwZSBub2RlVHlwZSA9XG4gIHwgT1RIRVJcbiAgKCogV2lsbCBub3QgaGFwcGVuICopXG4gIHwgRUxFTUVOVFxuICB8IEFUVFJJQlVURVxuICB8IFRFWFRcbiAgfCBDREFUQV9TRUNUSU9OXG4gIHwgRU5USVRZX1JFRkVSRU5DRVxuICB8IEVOVElUWVxuICB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05cbiAgfCBDT01NRU5UXG4gIHwgRE9DVU1FTlRcbiAgfCBET0NVTUVOVF9UWVBFXG4gIHwgRE9DVU1FTlRfRlJBR01FTlRcbiAgfCBOT1RBVElPTlxuXG5tb2R1bGUgRG9jdW1lbnRQb3NpdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICB0eXBlIG1hc2sgPSBpbnRcblxuICBsZXQgZGlzY29ubmVjdGVkID0gMHgwMVxuXG4gIGxldCBwcmVjZWRpbmcgPSAweDAyXG5cbiAgbGV0IGZvbGxvd2luZyA9IDB4MDRcblxuICBsZXQgY29udGFpbnMgPSAweDA4XG5cbiAgbGV0IGNvbnRhaW5lZF9ieSA9IDB4MTBcblxuICBsZXQgaW1wbGVtZW50YXRpb25fc3BlY2lmaWMgPSAweDIwXG5cbiAgbGV0IGhhcyB0IG1hc2sgPSB0IGxhbmQgbWFzayA9IG1hc2tcblxuICBsZXQgYWRkIHggeSA9IHggbG9yIHlcblxuICBsZXQgKCArICkgPSBhZGRcbmVuZFxuXG5jbGFzcyB0eXBlIG5vZGUgPSBvYmplY3RcbiAgbWV0aG9kIG5vZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVHlwZSA6IG5vZGVUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogbm9kZSBub2RlTGlzdCB0IHByb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydEJlZm9yZSA6IG5vZGUgdCAtPiBub2RlIHQgb3B0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgaGFzQ2hpbGROb2RlcyA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lTm9kZSA6IGJvb2wgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6IG5vZGUgdCAtPiBEb2N1bWVudFBvc2l0aW9uLnQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBOYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBQcmVmaXggOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBhcHBlbmRDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI2FwcGVuZENoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZW1vdmVDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI3JlbW92ZUNoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZXBsYWNlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCkgPVxuICBpZ25vcmUgKHAjI3JlcGxhY2VDaGlsZCAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCkpXG5cbmxldCBpbnNlcnRCZWZvcmUgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCBvcHQpID1cbiAgaWdub3JlIChwIyNpbnNlcnRCZWZvcmUgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQgb3B0KSlcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0F0dHJdIG9iamVjdHMuICopXG5jbGFzcyB0eXBlIGF0dHIgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWNpZmllZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lckVsZW1lbnQgOiBlbGVtZW50IHQgcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtOYW1lZE5vZGVNYXBdIG9iamVjdHMuICopXG5hbmQgWydub2RlXSBuYW1lZE5vZGVNYXAgPSBvYmplY3RcbiAgbWV0aG9kIGdldE5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0TmFtZWRJdGVtIDogJ25vZGUgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZU5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0VsZW1lbnRdIG9iamVjdHMuICopXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgdGFnTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlTlMgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHIgbmFtZWROb2RlTWFwIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgY2hhcmFjdGVyRGF0YSA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VianNfc3RyaW5nRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmREYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydERhdGEgOiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZURhdGEgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBjb21tZW50ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIHRleHQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnRGcmFnbWVudCA9IG5vZGVcblxuY2xhc3MgdHlwZSBbJ2VsZW1lbnRdIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiAnZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6IGRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudE5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHROb2RlIDoganNfc3RyaW5nIHQgLT4gdGV4dCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ29tbWVudCA6IGpzX3N0cmluZyB0IC0+IGNvbW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBpbXBvcnROb2RlIDogZWxlbWVudCB0IC0+IGJvb2wgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgYWRvcHROb2RlIDogZWxlbWVudCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9kZV90eXBlID1cbiAgfCBFbGVtZW50IG9mIGVsZW1lbnQgdFxuICB8IEF0dHIgb2YgYXR0ciB0XG4gIHwgVGV4dCBvZiB0ZXh0IHRcbiAgfCBPdGhlciBvZiBub2RlIHRcblxubGV0IG5vZGVUeXBlIGUgPVxuICBtYXRjaCBlIyMubm9kZVR5cGUgd2l0aFxuICB8IEVMRU1FTlQgLT4gRWxlbWVudCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IEFUVFJJQlVURSAtPiBBdHRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQ0RBVEFfU0VDVElPTiB8IFRFWFQgLT4gVGV4dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IF8gLT4gT3RoZXIgKGUgOj4gbm9kZSB0KVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGNhc3QgKGUgOiAjbm9kZSBKcy50KSB0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gdCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGVsZW1lbnQgZSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPSBjYXN0IGUgRUxFTUVOVFxuXG4gIGxldCB0ZXh0IGUgOiB0ZXh0IEpzLnQgSnMub3B0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gVEVYVCB8fCBlIyMubm9kZVR5cGUgPT0gQ0RBVEFfU0VDVElPTlxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhdHRyIGUgOiBhdHRyIEpzLnQgSnMub3B0ID0gY2FzdCBlIEFUVFJJQlVURVxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiIC0+IGJvb2wgdCkgbWV0aF9jYWxsYmFjayBvcHRcbigqKiBUaGUgdHlwZSBvZiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbnMuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXJcbiAgICAgIFsnYV0gaXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBvYmplY3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICBbJ2JdIGlzIHRoZSB0eXBlIG9mIHRoZSBldmVudCBvYmplY3QuICopXG5cbmNsYXNzIHR5cGUgWydhXSBldmVudCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICAoKiBMZWdhY3kgbWV0aG9kcyAqKVxuICBtZXRob2Qgc3JjRWxlbWVudCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiAnYiBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBKcy5udWxsXG5cbmxldCB3aW5kb3dfZXZlbnQgKCkgOiAnYSAjZXZlbnQgdCA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJldmVudFwiXG5cbigqIFRoZSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCBtdXN0IGJlIGNhbGxlZCBleHBsaWNpdGx5IHdoZW5cbiAgIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIuLi4gKilcbmxldCBoYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQuICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBmdWxsX2hhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLm1ldGhfY2FsbGJhY2sgKGZ1biB0aGlzIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQgKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBpbnZva2VfaGFuZGxlciAoZiA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyKSAodGhpcyA6ICdhKSAoZXZlbnQgOiAnYikgOiBib29sIHQgPVxuICBKcy5VbnNhZmUuY2FsbCBmIHRoaXMgW3wgSnMuVW5zYWZlLmluamVjdCBldmVudCB8XVxuXG5sZXQgZXZlbnRUYXJnZXQgKGUgOiAoPCAuLiA+IGFzICdhKSAjZXZlbnQgdCkgOiAnYSB0ID1cbiAgbGV0IHRhcmdldCA9XG4gICAgT3B0LmdldCBlIyMudGFyZ2V0IChmdW4gKCkgLT4gT3B0LmdldCBlIyMuc3JjRWxlbWVudCAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gIGluXG4gIGlmIEpzLmluc3RhbmNlb2YgdGFyZ2V0IEpzLlVuc2FmZS5nbG9iYWwjIy5fTm9kZVxuICB0aGVuXG4gICAgKCogV29ya2Fyb3VuZCBmb3IgU2FmYXJpIGJ1ZyAqKVxuICAgIGxldCB0YXJnZXQnIDogbm9kZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZSB0YXJnZXQgaW5cbiAgICBpZiB0YXJnZXQnIyMubm9kZVR5cGUgPT0gVEVYVFxuICAgIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoT3B0LmdldCB0YXJnZXQnIyMucGFyZW50Tm9kZSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgZWxzZSB0YXJnZXRcbiAgZWxzZSB0YXJnZXRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQgbWFrZSBzID0gSnMuc3RyaW5nIHNcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gdW5pdCAtPiB1bml0XG5cbmNsYXNzIHR5cGUgZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgY2FwdHVyZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhc3NpdmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGUpIyMuYWRkRXZlbnRMaXN0ZW5lcilcbiAgdGhlblxuICAgIGxldCBldiA9IChKcy5zdHJpbmcgXCJvblwiKSMjY29uY2F0IHR5cCBpblxuICAgIGxldCBjYWxsYmFjayBlID0gSnMuVW5zYWZlLmNhbGwgKGgsIGUsIFt8fF0pIGluXG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2F0dGFjaEV2ZW50IGV2IGNhbGxiYWNrIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNkZXRhY2hFdmVudCBldiBjYWxsYmFja1xuICBlbHNlXG4gICAgbGV0IG9wdHMgOiBldmVudF9saXN0ZW5lcl9vcHRpb25zIHQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBsZXQgaXRlciB0IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBiIC0+IGYgYlxuICAgIGluXG4gICAgaXRlciBjYXB0dXJlIChmdW4gYiAtPiBvcHRzIyMuY2FwdHVyZSA6PSBiKTtcbiAgICBpdGVyIG9uY2UgKGZ1biBiIC0+IG9wdHMjIy5vbmNlIDo9IGIpO1xuICAgIGl0ZXIgcGFzc2l2ZSAoZnVuIGIgLT4gb3B0cyMjLnBhc3NpdmUgOj0gYik7XG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2FkZEV2ZW50TGlzdGVuZXIgdHlwIGggb3B0cyBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcmVtb3ZlRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzXG5cbmxldCBhZGRFdmVudExpc3RlbmVyIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwIGggY2FwdCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlIHR5cCB+Y2FwdHVyZTpjYXB0IGhcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgaWQgPSBpZCAoKVxuXG5sZXQgcHJldmVudERlZmF1bHQgZXYgPVxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5wcmV2ZW50RGVmYXVsdCAoKiBJRSBoYWNrICopXG4gIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyNwcmV2ZW50RGVmYXVsdFxuICBlbHNlIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnJldHVyblZhbHVlIDo9IEpzLmJvb2wgZmFsc2VcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID9idWJibGVzID9jYW5jZWxhYmxlID9kZXRhaWwgdHlwID1cbiAgbGV0IG9wdF9pdGVyIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb3B0cyA9IFVuc2FmZS5vYmogW3x8XSBpblxuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmJ1YmJsZXMgOj0gYm9vbCB4KSBidWJibGVzO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmNhbmNlbGFibGUgOj0gYm9vbCB4KSBjYW5jZWxhYmxlO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmRldGFpbCA6PSBzb21lIHgpIGRldGFpbDtcbiAgbGV0IGNvbnN0ciA6XG4gICAgICAoICAgKCdhLCAnYikgI2N1c3RvbUV2ZW50IEpzLnQgRXZlbnQudHlwXG4gICAgICAgLT4gPCBkZXRhaWwgOiAnYiBvcHQgcHJvcCA+IHRcbiAgICAgICAtPiAoJ2EsICdiKSBjdXN0b21FdmVudCB0KVxuICAgICAgY29uc3RyID1cbiAgICBVbnNhZmUuZ2xvYmFsIyMuX0N1c3RvbUV2ZW50XG4gIGluXG4gIG5ldyVqcyBjb25zdHIgdHlwIG9wdHNcblxuKCogSUUgPCA5ICopXG5cbmNsYXNzIHR5cGUgc3RyaW5nTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIEpzXG5cbnR5cGUgdWludDMyID0gZmxvYXRcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlciA9IG9iamVjdFxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5lbmRcblxubGV0IGFycmF5QnVmZmVyIDogKGludCAtPiBhcnJheUJ1ZmZlciB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0FycmF5QnVmZmVyXG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXJWaWV3ID0gb2JqZWN0XG4gIG1ldGhvZCBidWZmZXIgOiBhcnJheUJ1ZmZlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZU9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gdHlwZWRBcnJheSA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBfQllURVNfUEVSX0VMRU1FTlQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRfZnJvbUFycmF5IDogJ2EganNfYXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldF9mcm9tVHlwZWRBcnJheSA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5IDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICAoKiBUaGlzIGZha2UgbWV0aG9kIGlzIG5lZWRlZCBmb3IgdHlwaW5nIHB1cnBvc2VzLlxuICAgICBXaXRob3V0IGl0LCBbJ2JdIHdvdWxkIG5vdCBiZSBjb25zdHJhaW5lZC4gKilcbiAgbWV0aG9kIF9jb250ZW50X3R5cGVfIDogJ2Igb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG50eXBlIGludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQzMkFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0NjRBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQ2NF9lbHQpIHR5cGVkQXJyYXlcblxuZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0XG4gID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbmxldCBpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21BcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2luQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21BcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2luQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgaW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9pbkJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfaW5CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgaW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9pbkJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfaW5CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9pbkJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9pbkJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgc2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID1cbiBmdW4gYSBpIHYgLT4gYXJyYXlfc2V0IChVbnNhZmUuY29lcmNlIGEpIGkgdlxuXG5sZXQgZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmxldCB1bnNhZmVfZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxuY2xhc3MgdHlwZSBkYXRhVmlldyA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBnZXRJbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyIDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyXyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyIDogaW50IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyXyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NF8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyXyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzJfIDogaW50IC0+IHVpbnQzMiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzJfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NF8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBkYXRhVmlldyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRGF0YVZpZXdcblxubGV0IGRhdGFWaWV3X2luQnVmZmVyID0gZGF0YVZpZXdcblxubW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciBKcy50ID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5IEpzLnQgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBibG9iID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBibG9iIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV93aXRoQ29udGVudFR5cGUgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IGJsb2IgdCBtZXRoXG5lbmRcblxubGV0IGJsb2JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9CbG9iXG5cbnR5cGUgJ2EgbWFrZV9ibG9iID1cbiAgP2NvbnRlbnRUeXBlOnN0cmluZyAtPiA/ZW5kaW5nczpbIGBUcmFuc3BhcmVudCB8IGBOYXRpdmUgXSAtPiAnYSAtPiBibG9iIHRcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxubGV0IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgPVxuICBsZXQgb3B0aW9ucyA9XG4gICAgZmlsdGVyX21hcFxuICAgICAgKGZ1biAobmFtZSwgdikgLT5cbiAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+IFNvbWUgKG5hbWUsIFVuc2FmZS5pbmplY3QgKHN0cmluZyB2KSkpXG4gICAgICBbIFwidHlwZVwiLCBjb250ZW50VHlwZVxuICAgICAgOyAoIFwiZW5kaW5nc1wiXG4gICAgICAgICwgbWF0Y2ggZW5kaW5ncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgYFRyYW5zcGFyZW50IC0+IFNvbWUgXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgfCBTb21lIGBOYXRpdmUgLT4gU29tZSBcIm5hdGl2ZVwiIClcbiAgICAgIF1cbiAgaW5cbiAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgbCAtPiBVbnNhZmUub2JqIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgYSA9XG4gIGxldCBvcHRpb25zID0gbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyBpblxuICBuZXclanMgYmxvYl9jb25zdHIgKGFycmF5IGEpIG9wdGlvbnNcblxubGV0IGJsb2JfZnJvbV9zdHJpbmcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIHMgPVxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgW3wgc3RyaW5nIHMgfF1cblxubGV0IGJsb2JfZnJvbV9hbnkgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGwgPVxuICBsZXQgbCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IGBhcnJheUJ1ZmZlciBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBhcnJheUJ1ZmZlclZpZXcgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpXG4gICAgICAgIHwgYGpzX3N0cmluZyBzIC0+IFVuc2FmZS5pbmplY3Qgc1xuICAgICAgICB8IGBibG9iIGIgLT4gVW5zYWZlLmluamVjdCBiKVxuICAgICAgbFxuICBpblxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgKEFycmF5Lm9mX2xpc3QgbClcblxuY2xhc3MgdHlwZSBmaWxlID0gb2JqZWN0XG4gIGluaGVyaXQgYmxvYlxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0TW9kaWZpZWREYXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGluIGZpcmVmb3ggMy4wLTMuNSBmaWxlLm5hbWUgaXMgbm90IGF2YWlsYWJsZSwgd2UgdXNlIHRoZSBub25zdGFuZGFyZCBmaWxlTmFtZSBpbnN0ZWFkICopXG5jbGFzcyB0eXBlIGZpbGVfbmFtZV9vbmx5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZU5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBmaWxlbmFtZSBmaWxlID1cbiAgbGV0IGZpbGUgOiBmaWxlX25hbWVfb25seSB0ID0gSnMuVW5zYWZlLmNvZXJjZSBmaWxlIGluXG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLm5hbWUgd2l0aFxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMuZmlsZU5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2FuJ3QgcmV0cmlldmUgZmlsZSBuYW1lOiBub3QgaW1wbGVtZW50ZWRcIlxuICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZSlcbiAgfCBTb21lIG5hbWUgLT4gbmFtZVxuXG50eXBlIGZpbGVfYW55ID0gPCA+IHRcblxubGV0IGRvY19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RvY3VtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBleHRlcm5hbCBqc29uIDogZmlsZV9hbnkgLT4gJ2EgT3B0LnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IGRvY3VtZW50IChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgZG9jX2NvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogZWxlbWVudCBkb2N1bWVudCB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBibG9iIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgYmxvYl9jb25zdHIgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiAjYmxvYiB0KSBlbHNlIEpzLm51bGxcblxuICBsZXQgc3RyaW5nIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiBlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBqc19zdHJpbmcgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXJyYXlCdWZmZXIgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdClcbiAgICBlbHNlIEpzLm51bGxcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVMaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2ZpbGVdIERvbS5ub2RlTGlzdFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvZ3Jlc3NFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgbGVuZ3RoQ29tcHV0YWJsZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvYWRlZCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvdGFsIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByb2dyZXNzRXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlbmQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgRU1QVFlcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG5jbGFzcyB0eXBlIGZpbGVSZWFkZXIgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgcmVhZEFzQXJyYXlCdWZmZXIgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNCaW5hcnlTdHJpbmcgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0IDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgOiAjYmxvYiB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNEYXRhVVJMIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXN1bHQgOiBmaWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogZmlsZUVycm9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIGluaGVyaXQgcHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBSZWFkZXJFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IGZpbGVSZWFkZXIgcHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgbG9hZHN0YXJ0ID0gRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBFdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IEV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBFdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBFdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxubGV0IGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GaWxlUmVhZGVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY2FtbF9qc19vbl9pZSA6IHVuaXQgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX29uX2llXCJcblxubGV0IG9uSUUgPSBKcy50b19ib29sIChjYW1sX2pzX29uX2llICgpKVxuXG5leHRlcm5hbCBodG1sX2VzY2FwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZXNjYXBlXCJcblxuZXh0ZXJuYWwgZGVjb2RlX2h0bWxfZW50aXRpZXMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VudGl0aWVzXCJcblxuY2xhc3MgdHlwZSBjc3NTdHlsZURlY2xhcmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBzZXRQcm9wZXJ0eSA6XG4gICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlWYWx1ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlQcmlvcml0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUHJvcGVydHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGVsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRHVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkZpbGxNb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25JdGVyYXRpb25Db3VudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uUGxheVN0YXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25UaW1pbmdGdW5jdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEF0dGFjaG1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRSZXBlYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21Db2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xsYXBzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJhZGl1cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlcldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNhcHRpb25TaWRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJJbmNyZW1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJSZXNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzRmxvYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc1RleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnNvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNwbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbXB0eUNlbGxzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250RmFtaWx5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U2l6ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250VmFyaWFudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFdlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZXR0ZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZUltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Cb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Ub3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heEhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wYWNpdHkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVPZmZzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvdyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dYIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1kgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0FmdGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtCZWZvcmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJFdmVudHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFibGVMYXlvdXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFuY2hvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dERlY29yYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRJbmRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRUcmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2ZXJ0aWNhbEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aXNpYmlsaXR5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aGl0ZVNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd29yZFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHpJbmRleCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYikgRG9tLmV2ZW50X2xpc3RlbmVyXG5cbnR5cGUgbW91c2VfYnV0dG9uID1cbiAgfCBOb19idXR0b25cbiAgfCBMZWZ0X2J1dHRvblxuICB8IE1pZGRsZV9idXR0b25cbiAgfCBSaWdodF9idXR0b25cblxudHlwZSBkZWx0YV9tb2RlID1cbiAgfCBEZWx0YV9waXhlbFxuICB8IERlbHRhX2xpbmVcbiAgfCBEZWx0YV9wYWdlXG5cbmNsYXNzIHR5cGUgZXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmV2ZW50XG5lbmRcblxuYW5kIFsnYV0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudCwgJ2FdIERvbS5jdXN0b21FdmVudFxuZW5kXG5cbmFuZCBmb2N1c0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidXR0b24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IG1vdXNlX2J1dHRvbiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcm9tRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBrZXlib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJDb2RlIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleUNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRNb2RpZmllclN0YXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qga2V5SWRlbnRpZmllciA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNld2hlZWxFdmVudCA9IG9iamVjdFxuICAoKiBBbGwgbW9kZXJuIGJyb3dzZXJzICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFNb2RlIDogZGVsdGFfbW9kZSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlU2Nyb2xsRXZlbnQgPSBvYmplY3RcbiAgKCogRmlyZWZveCAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXhpcyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSE9SSVpPTlRBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJUSUNBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCB0b3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFuZ2VkVG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiB0b3VjaCB0IG9wdGRlZiBtZXRoXG5lbmRcblxuYW5kIHRvdWNoID0gb2JqZWN0XG4gIG1ldGhvZCBpZGVudGlmaWVyIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3VibWl0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdWJtaXR0ZXIgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZHJhZ0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkYXRhVHJhbnNmZXIgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaXBib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgY2xpcGJvYXJkRGF0YSA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZGF0YVRyYW5zZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBkcm9wRWZmZWN0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlZmZlY3RBbGxvd2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR5cGVzIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZEVsZW1lbnQgOiBlbGVtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGFfYWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RHJhZ0ltYWdlIDogZWxlbWVudCB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGV2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9uY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRibGNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZWRvd24gOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNldXAgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3ZlciA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vtb3ZlIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW91dCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5cHJlc3MgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleWRvd24gOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXVwIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zY3JvbGwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253aGVlbCA6ICgnc2VsZiB0LCBtb3VzZXdoZWVsRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnc3RhcnQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VuZCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW50ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ292ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2xlYXZlIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWcgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJvcCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25zdGFydCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmVuZCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbml0ZXJhdGlvbiA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25ydW4gOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnN0YXJ0IDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25lbmQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25nb3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb3N0cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmVudGVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJjYW5jZWwgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmRvd24gOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmxlYXZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJtb3ZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdXQgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm92ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcnVwIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNwYXRjaEV2ZW50IDogZXZlbnQgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbmFuZCBwb3BTdGF0ZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgcG9pbnRlckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBwb2ludGVySWQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFuZ2VudGlhbFByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRZIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHdpc3QgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyVHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNQcmltYXJ5IDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVybCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcmFnZUFyZWEgOiBzdG9yYWdlIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgaGFzaENoYW5nZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgb2xkVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGFuaW1hdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRyYW5zaXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHByb3BlcnR5TmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1lZGlhRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuZW5kXG5cbmFuZCBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzb3VyY2UgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG5vZGVTZWxlY3RvciA9IG9iamVjdFxuICBtZXRob2QgcXVlcnlTZWxlY3RvciA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yQWxsIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5lbmRcblxuYW5kIHRva2VuTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGFkZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdG9nZ2xlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZpZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc05hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTGlzdCA6IHRva2VuTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2VzdCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzdHlsZSA6IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0ZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0Q29udGVudCA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVyVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpZW50TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFBhcmVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcm9sbExlZnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxUb3AgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxXaWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbEhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGdldENsaWVudFJlY3RzIDogY2xpZW50UmVjdExpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA6IGNsaWVudFJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEludG9WaWV3IDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGljayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB0b3AgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpZW50UmVjdExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gY2xpZW50UmVjdCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IERvbS5ub19oYW5kbGVyXG5cbmxldCBoYW5kbGVyID0gRG9tLmhhbmRsZXJcblxubGV0IGZ1bGxfaGFuZGxlciA9IERvbS5mdWxsX2hhbmRsZXJcblxubGV0IGludm9rZV9oYW5kbGVyID0gRG9tLmludm9rZV9oYW5kbGVyXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9ICdhIERvbS5FdmVudC50eXBcblxuICBsZXQgY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImNsaWNrXCJcblxuICBsZXQgY29weSA9IERvbS5FdmVudC5tYWtlIFwiY29weVwiXG5cbiAgbGV0IGN1dCA9IERvbS5FdmVudC5tYWtlIFwiY3V0XCJcblxuICBsZXQgcGFzdGUgPSBEb20uRXZlbnQubWFrZSBcInBhc3RlXCJcblxuICBsZXQgZGJsY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImRibGNsaWNrXCJcblxuICBsZXQgbW91c2Vkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZWRvd25cIlxuXG4gIGxldCBtb3VzZXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXVwXCJcblxuICBsZXQgbW91c2VvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW92ZXJcIlxuXG4gIGxldCBtb3VzZW1vdmUgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlbW92ZVwiXG5cbiAgbGV0IG1vdXNlb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW91dFwiXG5cbiAgbGV0IGtleXByZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlwcmVzc1wiXG5cbiAgbGV0IGtleWRvd24gPSBEb20uRXZlbnQubWFrZSBcImtleWRvd25cIlxuXG4gIGxldCBrZXl1cCA9IERvbS5FdmVudC5tYWtlIFwia2V5dXBcIlxuXG4gIGxldCBtb3VzZXdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXdoZWVsXCJcblxuICBsZXQgd2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIndoZWVsXCJcblxuICBsZXQgX0RPTU1vdXNlU2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Nb3VzZVNjcm9sbFwiXG5cbiAgbGV0IHRvdWNoc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoc3RhcnRcIlxuXG4gIGxldCB0b3VjaG1vdmUgPSBEb20uRXZlbnQubWFrZSBcInRvdWNobW92ZVwiXG5cbiAgbGV0IHRvdWNoZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGVuZFwiXG5cbiAgbGV0IHRvdWNoY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGNhbmNlbFwiXG5cbiAgbGV0IGRyYWdzdGFydCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ3N0YXJ0XCJcblxuICBsZXQgZHJhZ2VuZCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VuZFwiXG5cbiAgbGV0IGRyYWdlbnRlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VudGVyXCJcblxuICBsZXQgZHJhZ292ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdvdmVyXCJcblxuICBsZXQgZHJhZ2xlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnbGVhdmVcIlxuXG4gIGxldCBkcmFnID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnXCJcblxuICBsZXQgZHJvcCA9IERvbS5FdmVudC5tYWtlIFwiZHJvcFwiXG5cbiAgbGV0IGhhc2hjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImhhc2hjaGFuZ2VcIlxuXG4gIGxldCBjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImNoYW5nZVwiXG5cbiAgbGV0IGlucHV0ID0gRG9tLkV2ZW50Lm1ha2UgXCJpbnB1dFwiXG5cbiAgbGV0IHRpbWV1cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcInRpbWV1cGRhdGVcIlxuXG4gIGxldCBzdWJtaXQgPSBEb20uRXZlbnQubWFrZSBcInN1Ym1pdFwiXG5cbiAgbGV0IHNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwic2Nyb2xsXCJcblxuICBsZXQgZm9jdXMgPSBEb20uRXZlbnQubWFrZSBcImZvY3VzXCJcblxuICBsZXQgYmx1ciA9IERvbS5FdmVudC5tYWtlIFwiYmx1clwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcInVubG9hZFwiXG5cbiAgbGV0IGJlZm9yZXVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwiYmVmb3JldW5sb2FkXCJcblxuICBsZXQgcmVzaXplID0gRG9tLkV2ZW50Lm1ha2UgXCJyZXNpemVcIlxuXG4gIGxldCBvcmllbnRhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwib3JpZW50YXRpb25jaGFuZ2VcIlxuXG4gIGxldCBwb3BzdGF0ZSA9IERvbS5FdmVudC5tYWtlIFwicG9wc3RhdGVcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBzZWxlY3QgPSBEb20uRXZlbnQubWFrZSBcInNlbGVjdFwiXG5cbiAgbGV0IG9ubGluZSA9IERvbS5FdmVudC5tYWtlIFwib25saW5lXCJcblxuICBsZXQgb2ZmbGluZSA9IERvbS5FdmVudC5tYWtlIFwib2ZmbGluZVwiXG5cbiAgbGV0IGNoZWNraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGVja2luZ1wiXG5cbiAgbGV0IG5vdXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJub3VwZGF0ZVwiXG5cbiAgbGV0IGRvd25sb2FkaW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJkb3dubG9hZGluZ1wiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IHVwZGF0ZXJlYWR5ID0gRG9tLkV2ZW50Lm1ha2UgXCJ1cGRhdGVyZWFkeVwiXG5cbiAgbGV0IGNhY2hlZCA9IERvbS5FdmVudC5tYWtlIFwiY2FjaGVkXCJcblxuICBsZXQgb2Jzb2xldGUgPSBEb20uRXZlbnQubWFrZSBcIm9ic29sZXRlXCJcblxuICBsZXQgZG9tQ29udGVudExvYWRlZCA9IERvbS5FdmVudC5tYWtlIFwiRE9NQ29udGVudExvYWRlZFwiXG5cbiAgbGV0IGFuaW1hdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25zdGFydFwiXG5cbiAgbGV0IGFuaW1hdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uZW5kXCJcblxuICBsZXQgYW5pbWF0aW9uaXRlcmF0aW9uID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25pdGVyYXRpb25cIlxuXG4gIGxldCBhbmltYXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmNhbmNlbFwiXG5cbiAgbGV0IHRyYW5zaXRpb25ydW4gPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25ydW5cIlxuXG4gIGxldCB0cmFuc2l0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25zdGFydFwiXG5cbiAgbGV0IHRyYW5zaXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25lbmRcIlxuXG4gIGxldCB0cmFuc2l0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uY2FuY2VsXCJcblxuICBsZXQgY2FucGxheSA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheVwiXG5cbiAgbGV0IGNhbnBsYXl0aHJvdWdoID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5dGhyb3VnaFwiXG5cbiAgbGV0IGR1cmF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJkdXJhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IGVtcHRpZWQgPSBEb20uRXZlbnQubWFrZSBcImVtcHRpZWRcIlxuXG4gIGxldCBlbmRlZCA9IERvbS5FdmVudC5tYWtlIFwiZW5kZWRcIlxuXG4gIGxldCBnb3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwiZ290cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBsb2FkZWRkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRkYXRhXCJcblxuICBsZXQgbG9hZGVkbWV0YWRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZG1ldGFkYXRhXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBsb3N0cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IG1lc3NhZ2UgPSBEb20uRXZlbnQubWFrZSBcIm1lc3NhZ2VcIlxuXG4gIGxldCBwYXVzZSA9IERvbS5FdmVudC5tYWtlIFwicGF1c2VcIlxuXG4gIGxldCBwbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5XCJcblxuICBsZXQgcGxheWluZyA9IERvbS5FdmVudC5tYWtlIFwicGxheWluZ1wiXG5cbiAgbGV0IHBvaW50ZXJlbnRlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmVudGVyXCJcblxuICBsZXQgcG9pbnRlcmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmNhbmNlbFwiXG5cbiAgbGV0IHBvaW50ZXJkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZG93blwiXG5cbiAgbGV0IHBvaW50ZXJsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmxlYXZlXCJcblxuICBsZXQgcG9pbnRlcm1vdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJtb3ZlXCJcblxuICBsZXQgcG9pbnRlcm91dCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm91dFwiXG5cbiAgbGV0IHBvaW50ZXJvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3ZlclwiXG5cbiAgbGV0IHBvaW50ZXJ1cCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcnVwXCJcblxuICBsZXQgcmF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmF0ZWNoYW5nZVwiXG5cbiAgbGV0IHNlZWtlZCA9IERvbS5FdmVudC5tYWtlIFwic2Vla2VkXCJcblxuICBsZXQgc2Vla2luZyA9IERvbS5FdmVudC5tYWtlIFwic2Vla2luZ1wiXG5cbiAgbGV0IHN0YWxsZWQgPSBEb20uRXZlbnQubWFrZSBcInN0YWxsZWRcIlxuXG4gIGxldCBzdXNwZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJzdXNwZW5kXCJcblxuICBsZXQgdm9sdW1lY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJ2b2x1bWVjaGFuZ2VcIlxuXG4gIGxldCB3YWl0aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJ3YWl0aW5nXCJcblxuICBsZXQgbWFrZSA9IERvbS5FdmVudC5tYWtlXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IERvbS5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgPSBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyID0gRG9tLnJlbW92ZUV2ZW50TGlzdGVuZXJcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID0gRG9tLmNyZWF0ZUN1c3RvbUV2ZW50XG5cbmNsYXNzIHR5cGUgWydub2RlXSBjb2xsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgaHRtbEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsaW5rRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcm9zc29yaWdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1ldGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodHRwRXF1aXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjaGVtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJhc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYm9keUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZm9ybUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGVsZW1lbnRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHRDaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVuY3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9tZXRob2QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VibWl0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc2V0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uc3VibWl0IDogKCdzZWxmIHQsIHN1Ym1pdEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRHcm91cEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbGFiZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgb3B0R3JvdXBFbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRTZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNlbGVjdEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3B0aW9ucyA6IG9wdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGFkZCA6ICNvcHRHcm91cEVsZW1lbnQgdCAtPiAjb3B0R3JvdXBFbGVtZW50IHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnB1dEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0Q2hlY2tlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoZWNrZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1heExlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGV4dEFyZWFFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xzIDogaW50IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYnV0dG9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGFiZWxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0bWxGb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmaWVsZFNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsZWdlbmRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB1TGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgb0xpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBsaUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZGl2RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBwYXJhZ3JhcGhFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRpbmdFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHF1b3RlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByZUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgYnJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBtb2RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRlVGltZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFuY2hvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb3dubG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW1hZ2VFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGlzTWFwIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsV2lkdGggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF0dXJhbEhlaWdodCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb21wbGV0ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFyY2hpdmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVCYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVjbGFyZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhbmRieSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGFyYW1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFyZWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub0hyZWYgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtYXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhcmVhcyA6IGFyZWFFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzeW5jIDogYm9vbCB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGVtYmVkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2VsbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNlbGxJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFiYnIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBheGlzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbFNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWFkZXJzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dTcGFuIDogaW50IHByb3BcblxuICBtZXRob2Qgc2NvcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlUm93RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgcm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWN0aW9uUm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjZWxscyA6IHRhYmxlQ2VsbEVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRDZWxsIDogaW50IC0+IHRhYmxlQ2VsbEVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNlbGwgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVTZWN0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2FwdGlvbkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgdGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0Rm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdEJvZGllcyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmcmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcnVsZXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1bW1hcnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVUSGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRIZWFkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEZvb3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNhcHRpb24gOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGltZVJhbmdlcyA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBlbmRfIDogaW50IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG50eXBlIG5ldHdvcmtTdGF0ZSA9XG4gIHwgTkVUV09SS19FTVBUWVxuICB8IE5FVFdPUktfSURMRVxuICB8IE5FVFdPUktfTE9BRElOR1xuICB8IE5FVFdPUktfTk9fU09VUkNFXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgSEFWRV9OT1RISU5HXG4gIHwgSEFWRV9NRVRBREFUQVxuICB8IEhBVkVfQ1VSUkVOVF9EQVRBXG4gIHwgSEFWRV9GVVRVUkVfREFUQVxuICB8IEhBVkVfRU5PVUdIX0RBVEFcblxuKCogaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3AgKilcbigqIG9ubHkgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGFsbCBicm93c2VyLiAoSUU5KykgKilcbmNsYXNzIHR5cGUgbWVkaWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYW5QbGF5VHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgbG9hZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwbGF5IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGF1dG9wbGF5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYnVmZmVyZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250cm9scyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTcmMgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUaW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb29wIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWFncm91cCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbXV0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlIDogbmV0d29ya1N0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF1c2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxheWJhY2tSYXRlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBwbGF5ZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVsb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2FibGUgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVraW5nIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2b2x1bWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheXRocm91Z2ggOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmR1cmF0aW9uY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbXB0aWVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbmRlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkbWV0YWRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGF1c2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXlpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnJhdGVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2luZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3RhbGxlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3VzcGVuZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udm9sdW1lY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253YWl0aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGF1ZGlvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbmNsYXNzIHR5cGUgdmlkZW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxudHlwZSBjb250ZXh0ID0ganNfc3RyaW5nIHRcblxubGV0IF8yZF8gPSBKcy5zdHJpbmcgXCIyZFwiXG5cbnR5cGUgY2FudmFzUGF0dGVyblxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgdG9EYXRhVVJMIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGVfY29tcHJlc3Npb24gOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IG9iamVjdFxuICBtZXRob2QgY2FudmFzIDogY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2F2ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXN0b3JlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2xvYmFsQWxwaGEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZUxpbmVhckdyYWRpZW50IDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFkaWFsR3JhZGllbnQgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuIDogaW1hZ2VFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbVZpZGVvIDogdmlkZW9FbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsaW5lQ2FwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSm9pbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWl0ZXJMaW1pdCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Qmx1ciA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlZ2luUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZVBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgbW92ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBxdWFkcmF0aWNDdXJ2ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlemllckN1cnZlVG8gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmNUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyYyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGlwIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzUG9pbnRJblBhdGggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3Rm9jdXNSaW5nIDogI2VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QmFzZWxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGxUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxUZXh0X3dpdGhXaWR0aCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHRfd2l0aFdpZHRoIDpcbiAgICBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWVhc3VyZVRleHQgOiBqc19zdHJpbmcgdCAtPiB0ZXh0TWV0cmljcyB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlIDogaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV93aXRoU2l6ZSA6XG4gICAgaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsIDpcbiAgICAgICBpbWFnZUVsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzV2l0aFNpemUgOlxuICAgIGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tQ2FudmFzIDpcbiAgICAgICBjYW52YXNFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoVmlkZW8gOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFNpemUgOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21WaWRlbyA6XG4gICAgICAgdmlkZW9FbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUltYWdlRGF0YSA6IGludCAtPiBpbnQgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbWFnZURhdGEgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIHB1dEltYWdlRGF0YSA6IGltYWdlRGF0YSB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNHcmFkaWVudCA9IG9iamVjdFxuICBtZXRob2QgYWRkQ29sb3JTdG9wIDogbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIHRleHRNZXRyaWNzID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgaW1hZ2VEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBjYW52YXNQaXhlbEFycmF5IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjYW52YXNQaXhlbEFycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4dGVybmFsIHBpeGVsX2dldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2pzX2dldFwiXG5cbmV4dGVybmFsIHBpeGVsX3NldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuY2xhc3MgdHlwZSByYW5nZSA9IG9iamVjdFxuICBtZXRob2QgY29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0U3RhcnQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGVDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZUNvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGV4dHJhY3RDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDb250ZW50cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Vycm91bmRDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuKCoqIEluZm9ybWF0aW9uIG9uIGN1cnJlbnQgc2VsZWN0aW9uICopXG5jbGFzcyB0eXBlIHNlbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgYW5jaG9yTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c05vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0NvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlQ291bnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSYW5nZUF0IDogaW50IC0+IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXh0ZW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vZGlmeSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvU3RhcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb0VuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RBbGxDaGlsZHJlbiA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFkZFJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBbGxSYW5nZXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJvbURvY3VtZW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zTm9kZSA6IERvbS5ub2RlIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkIDogaGVhZEVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGJvZHkgOiBib2R5RWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogaHRtbEVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGltYWdlcyA6IGltYWdlRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsZXRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5rcyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9ybXMgOiBmb3JtRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlc2lnbk1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdyaXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4ZWNDb21tYW5kIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5TmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhY3RpdmVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpZGRlbiA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxudHlwZSBpbnRlcnZhbF9pZFxuXG50eXBlIHRpbWVvdXRfaWRcblxudHlwZSBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvcnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhdGhuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWFyY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhhc2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzc2lnbiA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbG9hZCA6IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBsb2NhdGlvbl9vcmlnaW4gKGxvYyA6IGxvY2F0aW9uIHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBsb2MjIy5vcmlnaW5cbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgPSBsb2MjIy5wcm90b2NvbCBpblxuICAgICAgbGV0IGhvc3RuYW1lID0gbG9jIyMuaG9zdG5hbWUgaW5cbiAgICAgIGxldCBwb3J0ID0gbG9jIyMucG9ydCBpblxuICAgICAgaWYgcHJvdG9jb2wjIy5sZW5ndGggPSAwICYmIGhvc3RuYW1lIyMubGVuZ3RoID0gMFxuICAgICAgdGhlbiBKcy5zdHJpbmcgXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgb3JpZ2luID0gcHJvdG9jb2wjI2NvbmNhdF8yIChKcy5zdHJpbmcgXCIvL1wiKSBob3N0bmFtZSBpblxuICAgICAgICBpZiBwb3J0IyMubGVuZ3RoID4gMCB0aGVuIG9yaWdpbiMjY29uY2F0XzIgKEpzLnN0cmluZyBcIjpcIikgbG9jIyMucG9ydCBlbHNlIG9yaWdpbilcbiAgICAoZnVuIG8gLT4gbylcblxuY2xhc3MgdHlwZSBoaXN0b3J5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnbyA6IGludCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJhY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yd2FyZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdW5kb01hbmFnZXIgPSBvYmplY3QgZW5kXG5cbmNsYXNzIHR5cGUgbmF2aWdhdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBDb2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwVmVyc2lvbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llRW5hYmxlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uTGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXRmb3JtIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2ZW5kb3IgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJBZ2VudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyTGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhUb3VjaFBvaW50cyA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JlZW4gPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsSGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFwcGxpY2F0aW9uQ2FjaGUgPSBvYmplY3RcbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwZGF0ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzd2FwQ2FjaGUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jaGVja2luZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ub3VwZGF0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25kb3dubG9hZGluZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251cGRhdGVyZWFkeSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jYWNoZWQgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub2Jzb2xldGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmNsYXNzIHR5cGUgX1VSTCA9IG9iamVjdFxuICBtZXRob2QgY3JlYXRlT2JqZWN0VVJMIDogI0ZpbGUuYmxvYiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmV2b2tlT2JqZWN0VVJMIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB3aW5kb3cgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IGRvY3VtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsaWNhdGlvbkNhY2hlIDogYXBwbGljYXRpb25DYWNoZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlzdG9yeSA6IGhpc3RvcnkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVuZG9NYW5hZ2VyIDogdW5kb01hbmFnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdmlnYXRvciA6IG5hdmlnYXRvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U2VsZWN0aW9uIDogc2VsZWN0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9wIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsQnkgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXNzaW9uU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhbFN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9wIDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnQgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyYW1lRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB3aW5kb3cgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBhbGVydCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb25maXJtIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcHJvbXB0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcHJpbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50ZXJ2YWwgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiBpbnRlcnZhbF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFySW50ZXJ2YWwgOiBpbnRlcnZhbF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZW91dCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IHRpbWVvdXRfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclRpbWVvdXQgOiB0aW1lb3V0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOlxuICAgIChudW1iZXJfdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNhbmNlbEFuaW1hdGlvbkZyYW1lIDogYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcmVlbiA6IHNjcmVlbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZSA6ICNlbGVtZW50IHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZV9wc2V1ZG9FbHQgOlxuICAgICNlbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgYXRvYiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYnRvYSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgb25sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmVmb3JldW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnJlc2l6ZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9yaWVudGF0aW9uY2hhbmdlIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucG9wc3RhdGUgOiAod2luZG93IHQsIHBvcFN0YXRlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmhhc2hjaGFuZ2UgOiAod2luZG93IHQsIGhhc2hDaGFuZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub25saW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9mZmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBfVVJMIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZXZpY2VQaXhlbFJhdGlvIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aW5kb3cgOiB3aW5kb3cgdCA9IEpzLlVuc2FmZS5nbG9iYWxcblxuKCogVGhlIHRvcGxldmVsIG9iamVjdCAqKVxuXG5sZXQgZG9jdW1lbnQgPSB3aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2V4biBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcImdldEVsZW1lbnRCeUlkX2V4bjogJVMgbm90IGZvdW5kXCIgaWQpKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9vcHQgaWQgPSBKcy5PcHQudG9fb3B0aW9uIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9jb2VyY2UgaWQgY29lcmNlID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAoZnVuIGUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNlIGUpKVxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBmcmFtZVNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9SZXNpemUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaUZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50V2luZG93IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKioqKVxuXG4oKlhYWCBTaG91bGQgcHJvdmlkZSBjcmVhdGlvbiBmdW5jdGlvbnMgYSBsYSBsYWJsZ3RrLi4uICopXG5cbmxldCBvcHRfaXRlciB4IGYgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB2IC0+IGYgdlxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUVsZW1lbnRTeW50YXggPSByZWYgYFVua25vd25cblxubGV0IHJlYyB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHQgPVxuICBpZiBQb2x5LihfdHlwZSA9IE5vbmUpICYmIFBvbHkuKG5hbWUgPSBOb25lKVxuICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdClcbiAgZWxzZVxuICAgIG1hdGNoICFjcmVhdGVFbGVtZW50U3ludGF4IHdpdGhcbiAgICB8IGBTdGFuZGFyZCAtPlxuICAgICAgICBsZXQgcmVzID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KSBpblxuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT4gcmVzIyMuX3R5cGUgOj0gdCk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+IHJlcyMjLm5hbWUgOj0gbik7XG4gICAgICAgIHJlc1xuICAgIHwgYEV4dGVuZGVkIC0+XG4gICAgICAgIGxldCBhID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaF8yIChKcy5zdHJpbmcgXCI8XCIpIChKcy5zdHJpbmcgZWx0KSk7XG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiB0eXBlPVxcXCJcIikgKGh0bWxfZXNjYXBlIHQpIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIG5hbWU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgbikgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgaWdub3JlIChhIyNwdXNoIChKcy5zdHJpbmcgXCI+XCIpKTtcbiAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSAoZG9jIyNjcmVhdGVFbGVtZW50IChhIyNqb2luIChKcy5zdHJpbmcgXCJcIikpKVxuICAgIHwgYFVua25vd24gLT5cbiAgICAgICAgY3JlYXRlRWxlbWVudFN5bnRheCA6PVxuICAgICAgICAgIGlmIHRyeVxuICAgICAgICAgICAgICAgbGV0IGVsIDogaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAgICAgICAgICAgKGRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgXCI8aW5wdXQgbmFtZT1cXFwieFxcXCI+XCIpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLmVxdWFscyBlbCMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgJiYgSnMuZXF1YWxzIGVsIyMubmFtZSAoSnMuc3RyaW5nIFwieFwiKVxuICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgIHRoZW4gYEV4dGVuZGVkXG4gICAgICAgICAgZWxzZSBgU3RhbmRhcmQ7XG4gICAgICAgIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdFxuXG5sZXQgY3JlYXRlSHRtbCBkb2MgOiBodG1sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJodG1sXCJcblxubGV0IGNyZWF0ZUhlYWQgZG9jIDogaGVhZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGVhZFwiXG5cbmxldCBjcmVhdGVMaW5rIGRvYyA6IGxpbmtFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmtcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZU1ldGEgZG9jIDogbWV0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YVwiXG5cbmxldCBjcmVhdGVCYXNlIGRvYyA6IGJhc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJhc2VcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZUJvZHkgZG9jIDogYm9keUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYm9keVwiXG5cbmxldCBjcmVhdGVGb3JtIGRvYyA6IGZvcm1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcm1cIlxuXG5sZXQgY3JlYXRlT3B0Z3JvdXAgZG9jIDogb3B0R3JvdXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGdyb3VwXCJcblxubGV0IGNyZWF0ZU9wdGlvbiBkb2MgOiBvcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGlvblwiXG5cbmxldCBjcmVhdGVTZWxlY3QgP190eXBlID9uYW1lIGRvYyA6IHNlbGVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwic2VsZWN0XCJcblxubGV0IGNyZWF0ZUlucHV0ID9fdHlwZSA/bmFtZSBkb2MgOiBpbnB1dEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiaW5wdXRcIlxuXG5sZXQgY3JlYXRlVGV4dGFyZWEgP190eXBlID9uYW1lIGRvYyA6IHRleHRBcmVhRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJ0ZXh0YXJlYVwiXG5cbmxldCBjcmVhdGVCdXR0b24gP190eXBlID9uYW1lIGRvYyA6IGJ1dHRvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiYnV0dG9uXCJcblxubGV0IGNyZWF0ZUxhYmVsIGRvYyA6IGxhYmVsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsYWJlbFwiXG5cbmxldCBjcmVhdGVGaWVsZHNldCBkb2MgOiBmaWVsZFNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmllbGRzZXRcIlxuXG5sZXQgY3JlYXRlTGVnZW5kIGRvYyA6IGxlZ2VuZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGVnZW5kXCJcblxubGV0IGNyZWF0ZVVsIGRvYyA6IHVMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1bFwiXG5cbmxldCBjcmVhdGVPbCBkb2MgOiBvTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2xcIlxuXG5sZXQgY3JlYXRlRGwgZG9jIDogZExpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRsXCJcblxubGV0IGNyZWF0ZUxpIGRvYyA6IGxpRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaVwiXG5cbmxldCBjcmVhdGVEaXYgZG9jIDogZGl2RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaXZcIlxuXG5sZXQgY3JlYXRlRW1iZWQgZG9jIDogZW1iZWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVtYmVkXCJcblxubGV0IGNyZWF0ZVAgZG9jIDogcGFyYWdyYXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwXCJcblxubGV0IGNyZWF0ZUgxIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgxXCJcblxubGV0IGNyZWF0ZUgyIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgyXCJcblxubGV0IGNyZWF0ZUgzIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgzXCJcblxubGV0IGNyZWF0ZUg0IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg0XCJcblxubGV0IGNyZWF0ZUg1IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg1XCJcblxubGV0IGNyZWF0ZUg2IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg2XCJcblxubGV0IGNyZWF0ZVEgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInFcIlxuXG5sZXQgY3JlYXRlQmxvY2txdW90ZSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmxvY2txdW90ZVwiXG5cbmxldCBjcmVhdGVQcmUgZG9jIDogcHJlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwcmVcIlxuXG5sZXQgY3JlYXRlQnIgZG9jIDogYnJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJyXCJcblxubGV0IGNyZWF0ZUhyIGRvYyA6IGhyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoclwiXG5cbmxldCBjcmVhdGVJbnMgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbnNcIlxuXG5sZXQgY3JlYXRlRGVsIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVsXCJcblxubGV0IGNyZWF0ZUEgZG9jIDogYW5jaG9yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUltZyBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1nXCJcblxubGV0IGNyZWF0ZU9iamVjdCBkb2MgOiBvYmplY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9iamVjdFwiXG5cbmxldCBjcmVhdGVQYXJhbSBkb2MgOiBwYXJhbUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGFyYW1cIlxuXG5sZXQgY3JlYXRlTWFwIGRvYyA6IG1hcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFwXCJcblxubGV0IGNyZWF0ZUFyZWEgZG9jIDogYXJlYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXJlYVwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlVGFibGUgZG9jIDogdGFibGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRhYmxlXCJcblxubGV0IGNyZWF0ZUNhcHRpb24gZG9jIDogdGFibGVDYXB0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYXB0aW9uXCJcblxubGV0IGNyZWF0ZUNvbCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sXCJcblxubGV0IGNyZWF0ZUNvbGdyb3VwIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xncm91cFwiXG5cbmxldCBjcmVhdGVUaGVhZCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoZWFkXCJcblxubGV0IGNyZWF0ZVRmb290IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGZvb3RcIlxuXG5sZXQgY3JlYXRlVGJvZHkgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Ym9keVwiXG5cbmxldCBjcmVhdGVUciBkb2MgOiB0YWJsZVJvd0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJcIlxuXG5sZXQgY3JlYXRlVGggZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aFwiXG5cbmxldCBjcmVhdGVUZCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRkXCJcblxubGV0IGNyZWF0ZVN1YiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1YlwiXG5cbmxldCBjcmVhdGVTdXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdXBcIlxuXG5sZXQgY3JlYXRlU3BhbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNwYW5cIlxuXG5sZXQgY3JlYXRlVHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ0dFwiXG5cbmxldCBjcmVhdGVJIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiaVwiXG5cbmxldCBjcmVhdGVCIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYlwiXG5cbmxldCBjcmVhdGVCaWcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiaWdcIlxuXG5sZXQgY3JlYXRlU21hbGwgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzbWFsbFwiXG5cbmxldCBjcmVhdGVFbSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImVtXCJcblxubGV0IGNyZWF0ZVN0cm9uZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN0cm9uZ1wiXG5cbmxldCBjcmVhdGVDaXRlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY2l0ZVwiXG5cbmxldCBjcmVhdGVEZm4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZm5cIlxuXG5sZXQgY3JlYXRlQ29kZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNvZGVcIlxuXG5sZXQgY3JlYXRlU2FtcCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNhbXBcIlxuXG5sZXQgY3JlYXRlS2JkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwia2JkXCJcblxubGV0IGNyZWF0ZVZhciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInZhclwiXG5cbmxldCBjcmVhdGVBYmJyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWJiclwiXG5cbmxldCBjcmVhdGVEZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRkXCJcblxubGV0IGNyZWF0ZUR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZHRcIlxuXG5sZXQgY3JlYXRlTm9zY3JpcHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJub3NjcmlwdFwiXG5cbmxldCBjcmVhdGVBZGRyZXNzIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWRkcmVzc1wiXG5cbmxldCBjcmVhdGVGcmFtZXNldCBkb2MgOiBmcmFtZVNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVzZXRcIlxuXG5sZXQgY3JlYXRlRnJhbWUgZG9jIDogZnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lXCJcblxubGV0IGNyZWF0ZUlmcmFtZSBkb2MgOiBpRnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImlmcmFtZVwiXG5cbmxldCBjcmVhdGVBdWRpbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXVkaW9cIlxuXG5sZXQgY3JlYXRlVmlkZW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZGVvXCJcblxuZXhjZXB0aW9uIENhbnZhc19ub3RfYXZhaWxhYmxlXG5cbmxldCBjcmVhdGVDYW52YXMgZG9jIDogY2FudmFzRWxlbWVudCB0ID1cbiAgbGV0IGMgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhbnZhc1wiIGluXG4gIGlmIG5vdCAoT3B0LnRlc3QgYyMjLmdldENvbnRleHQpIHRoZW4gcmFpc2UgQ2FudmFzX25vdF9hdmFpbGFibGU7XG4gIGNcblxubGV0IGh0bWxfZWxlbWVudCA6IGh0bWxFbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9IVE1MRWxlbWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgOiAjRG9tLm5vZGUgSnMudCAtPiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgaHRtbF9lbGVtZW50KSlcbiAgICB0aGVuXG4gICAgICAoKiBpZSA8IDkgZG9lcyBub3QgaGF2ZSBIVE1MRWxlbWVudDogd2UgaGF2ZSB0byBjaGVhdCB0byBjaGVja1xuICAgICAgICAgdGhhdCBzb21ldGhpbmcgaXMgYW4gaHRtbCBlbGVtZW50ICopXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIChKcy5VbnNhZmUuY29lcmNlIGUpIyMuaW5uZXJIVE1MKSlcbiAgICAgIHRoZW4gSnMubnVsbFxuICAgICAgZWxzZSBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIEpzLmluc3RhbmNlb2YgZSBodG1sX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgdGFnIChlIDogI2VsZW1lbnQgdCkgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA9IHVuc2FmZUNvZXJjZSBcImFcIiBlXG5cbiAgbGV0IGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcImFyZWFcIiBlXG5cbiAgbGV0IGJhc2UgZSA9IHVuc2FmZUNvZXJjZSBcImJhc2VcIiBlXG5cbiAgbGV0IGJsb2NrcXVvdGUgZSA9IHVuc2FmZUNvZXJjZSBcImJsb2NrcXVvdGVcIiBlXG5cbiAgbGV0IGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcImJvZHlcIiBlXG5cbiAgbGV0IGJyIGUgPSB1bnNhZmVDb2VyY2UgXCJiclwiIGVcblxuICBsZXQgYnV0dG9uIGUgPSB1bnNhZmVDb2VyY2UgXCJidXR0b25cIiBlXG5cbiAgbGV0IGNhbnZhcyBlID0gdW5zYWZlQ29lcmNlIFwiY2FudmFzXCIgZVxuXG4gIGxldCBjYXB0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJjYXB0aW9uXCIgZVxuXG4gIGxldCBjb2wgZSA9IHVuc2FmZUNvZXJjZSBcImNvbFwiIGVcblxuICBsZXQgY29sZ3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcImNvbGdyb3VwXCIgZVxuXG4gIGxldCBkZWwgZSA9IHVuc2FmZUNvZXJjZSBcImRlbFwiIGVcblxuICBsZXQgZGl2IGUgPSB1bnNhZmVDb2VyY2UgXCJkaXZcIiBlXG5cbiAgbGV0IGRsIGUgPSB1bnNhZmVDb2VyY2UgXCJkbFwiIGVcblxuICBsZXQgZmllbGRzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZpZWxkc2V0XCIgZVxuXG4gIGxldCBlbWJlZCBlID0gdW5zYWZlQ29lcmNlIFwiZW1iZWRcIiBlXG5cbiAgbGV0IGZvcm0gZSA9IHVuc2FmZUNvZXJjZSBcImZvcm1cIiBlXG5cbiAgbGV0IGZyYW1lc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZXNldFwiIGVcblxuICBsZXQgZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lXCIgZVxuXG4gIGxldCBoMSBlID0gdW5zYWZlQ29lcmNlIFwiaDFcIiBlXG5cbiAgbGV0IGgyIGUgPSB1bnNhZmVDb2VyY2UgXCJoMlwiIGVcblxuICBsZXQgaDMgZSA9IHVuc2FmZUNvZXJjZSBcImgzXCIgZVxuXG4gIGxldCBoNCBlID0gdW5zYWZlQ29lcmNlIFwiaDRcIiBlXG5cbiAgbGV0IGg1IGUgPSB1bnNhZmVDb2VyY2UgXCJoNVwiIGVcblxuICBsZXQgaDYgZSA9IHVuc2FmZUNvZXJjZSBcImg2XCIgZVxuXG4gIGxldCBoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJoZWFkXCIgZVxuXG4gIGxldCBociBlID0gdW5zYWZlQ29lcmNlIFwiaHJcIiBlXG5cbiAgbGV0IGh0bWwgZSA9IHVuc2FmZUNvZXJjZSBcImh0bWxcIiBlXG5cbiAgbGV0IGlmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiaWZyYW1lXCIgZVxuXG4gIGxldCBpbWcgZSA9IHVuc2FmZUNvZXJjZSBcImltZ1wiIGVcblxuICBsZXQgaW5wdXQgZSA9IHVuc2FmZUNvZXJjZSBcImlucHV0XCIgZVxuXG4gIGxldCBpbnMgZSA9IHVuc2FmZUNvZXJjZSBcImluc1wiIGVcblxuICBsZXQgbGFiZWwgZSA9IHVuc2FmZUNvZXJjZSBcImxhYmVsXCIgZVxuXG4gIGxldCBsZWdlbmQgZSA9IHVuc2FmZUNvZXJjZSBcImxlZ2VuZFwiIGVcblxuICBsZXQgbGkgZSA9IHVuc2FmZUNvZXJjZSBcImxpXCIgZVxuXG4gIGxldCBsaW5rIGUgPSB1bnNhZmVDb2VyY2UgXCJsaW5rXCIgZVxuXG4gIGxldCBtYXAgZSA9IHVuc2FmZUNvZXJjZSBcIm1hcFwiIGVcblxuICBsZXQgbWV0YSBlID0gdW5zYWZlQ29lcmNlIFwibWV0YVwiIGVcblxuICBsZXQgX29iamVjdCBlID0gdW5zYWZlQ29lcmNlIFwib2JqZWN0XCIgZVxuXG4gIGxldCBvbCBlID0gdW5zYWZlQ29lcmNlIFwib2xcIiBlXG5cbiAgbGV0IG9wdGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRncm91cFwiIGVcblxuICBsZXQgb3B0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRpb25cIiBlXG5cbiAgbGV0IHAgZSA9IHVuc2FmZUNvZXJjZSBcInBcIiBlXG5cbiAgbGV0IHBhcmFtIGUgPSB1bnNhZmVDb2VyY2UgXCJwYXJhbVwiIGVcblxuICBsZXQgcHJlIGUgPSB1bnNhZmVDb2VyY2UgXCJwcmVcIiBlXG5cbiAgbGV0IHEgZSA9IHVuc2FmZUNvZXJjZSBcInFcIiBlXG5cbiAgbGV0IHNjcmlwdCBlID0gdW5zYWZlQ29lcmNlIFwic2NyaXB0XCIgZVxuXG4gIGxldCBzZWxlY3QgZSA9IHVuc2FmZUNvZXJjZSBcInNlbGVjdFwiIGVcblxuICBsZXQgc3R5bGUgZSA9IHVuc2FmZUNvZXJjZSBcInN0eWxlXCIgZVxuXG4gIGxldCB0YWJsZSBlID0gdW5zYWZlQ29lcmNlIFwidGFibGVcIiBlXG5cbiAgbGV0IHRib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Ym9keVwiIGVcblxuICBsZXQgdGQgZSA9IHVuc2FmZUNvZXJjZSBcInRkXCIgZVxuXG4gIGxldCB0ZXh0YXJlYSBlID0gdW5zYWZlQ29lcmNlIFwidGV4dGFyZWFcIiBlXG5cbiAgbGV0IHRmb290IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Zm9vdFwiIGVcblxuICBsZXQgdGggZSA9IHVuc2FmZUNvZXJjZSBcInRoXCIgZVxuXG4gIGxldCB0aGVhZCBlID0gdW5zYWZlQ29lcmNlIFwidGhlYWRcIiBlXG5cbiAgbGV0IHRpdGxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aXRsZVwiIGVcblxuICBsZXQgdHIgZSA9IHVuc2FmZUNvZXJjZSBcInRyXCIgZVxuXG4gIGxldCB1bCBlID0gdW5zYWZlQ29lcmNlIFwidWxcIiBlXG5cbiAgbGV0IGF1ZGlvIGUgPSB1bnNhZmVDb2VyY2UgXCJhdWRpb1wiIGVcblxuICBsZXQgdmlkZW8gZSA9IHVuc2FmZUNvZXJjZSBcInZpZGVvXCIgZVxuXG4gIGxldCB1bnNhZmVDb2VyY2VFdmVudCBjb25zdHIgKGV2IDogI2V2ZW50IHQpID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoZGVmIGNvbnN0cikgJiYgSnMuaW5zdGFuY2VvZiBldiBjb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZXYpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IG1vdXNlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlRXZlbnQgZXZcblxuICBsZXQga2V5Ym9hcmRFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fS2V5Ym9hcmRFdmVudCBldlxuXG4gIGxldCB3aGVlbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9XaGVlbEV2ZW50IGV2XG5cbiAgbGV0IG1vdXNlU2Nyb2xsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlU2Nyb2xsRXZlbnQgZXZcblxuICBsZXQgcG9wU3RhdGVFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fUG9wU3RhdGVFdmVudCBldlxuXG4gIGxldCBtZXNzYWdlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01lc3NhZ2VFdmVudCBldlxuZW5kXG5cbigqKioqKVxuXG5sZXQgZXZlbnRUYXJnZXQgPSBEb20uZXZlbnRUYXJnZXRcblxubGV0IGV2ZW50UmVsYXRlZFRhcmdldCAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmdldCBlIyMucmVsYXRlZFRhcmdldCAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBKcy50b19zdHJpbmcgZSMjLl90eXBlIHdpdGhcbiAgICAgIHwgXCJtb3VzZW92ZXJcIiAtPiBPcHRkZWYuZ2V0IGUjIy5mcm9tRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXCJtb3VzZW91dFwiIC0+IE9wdGRlZi5nZXQgZSMjLnRvRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXyAtPiBKcy5udWxsKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIGUjIy5jbGllbnRYICsgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdFxuICAsIGUjIy5jbGllbnRZICsgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3AgKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5wYWdlWFxuICAgIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKVxuICAgIChmdW4geCAtPiBPcHRkZWYuY2FzZSBlIyMucGFnZVkgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpIChmdW4geSAtPiB4LCB5KSlcblxubGV0IGVsZW1lbnRDbGllbnRQb3NpdGlvbiAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHIgPSBlIyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMubGVmdCkgLSBib2R5IyMuY2xpZW50TGVmdCAtIGh0bWwjIy5jbGllbnRMZWZ0XG4gICwgdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy50b3ApIC0gYm9keSMjLmNsaWVudFRvcCAtIGh0bWwjIy5jbGllbnRUb3AgKVxuXG5sZXQgZ2V0RG9jdW1lbnRTY3JvbGwgKCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnQsIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wXG5cbmxldCBidXR0b25QcmVzc2VkIChldiA6ICNtb3VzZUV2ZW50IEpzLnQpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBldiMjLndoaWNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggZXYjIy5idXR0b24gd2l0aFxuICAgICAgfCAxIC0+IExlZnRfYnV0dG9uXG4gICAgICB8IDIgLT4gUmlnaHRfYnV0dG9uXG4gICAgICB8IDQgLT4gTWlkZGxlX2J1dHRvblxuICAgICAgfCBfIC0+IE5vX2J1dHRvbilcbiAgICAoZnVuIHggLT4geClcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgP2NhcHR1cmVcbiAgICA/b25jZVxuICAgID9wYXNzaXZlXG4gICAgZVxuICAgIEV2ZW50LndoZWVsXG4gICAgKGhhbmRsZXIgKGZ1biAoZSA6IG1vdXNld2hlZWxFdmVudCB0KSAtPlxuICAgICAgICAgbGV0IGR4ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFYIChmdW4gKCkgLT4gMCkgLyA0MCBpblxuICAgICAgICAgbGV0IGR5ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFZIChmdW4gKCkgLT4gZSMjLndoZWVsRGVsdGEpIC8gNDAgaW5cbiAgICAgICAgIGggKGUgOj4gbW91c2VFdmVudCB0KSB+ZHggfmR5KSlcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIGUgaCBjYXB0ID1cbiAgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyB+Y2FwdHVyZTpjYXB0IGUgaFxuXG4oKioqKiopXG5cbm1vZHVsZSBLZXlib2FyZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBVbmlkZW50aWZpZWRcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IEtleUFcbiAgICB8IEtleUJcbiAgICB8IEtleUNcbiAgICB8IEtleURcbiAgICB8IEtleUVcbiAgICB8IEtleUZcbiAgICB8IEtleUdcbiAgICB8IEtleUhcbiAgICB8IEtleUlcbiAgICB8IEtleUpcbiAgICB8IEtleUtcbiAgICB8IEtleUxcbiAgICB8IEtleU1cbiAgICB8IEtleU5cbiAgICB8IEtleU9cbiAgICB8IEtleVBcbiAgICB8IEtleVFcbiAgICB8IEtleVJcbiAgICB8IEtleVNcbiAgICB8IEtleVRcbiAgICB8IEtleVVcbiAgICB8IEtleVZcbiAgICB8IEtleVdcbiAgICB8IEtleVhcbiAgICB8IEtleVlcbiAgICB8IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IERpZ2l0MFxuICAgIHwgRGlnaXQxXG4gICAgfCBEaWdpdDJcbiAgICB8IERpZ2l0M1xuICAgIHwgRGlnaXQ0XG4gICAgfCBEaWdpdDVcbiAgICB8IERpZ2l0NlxuICAgIHwgRGlnaXQ3XG4gICAgfCBEaWdpdDhcbiAgICB8IERpZ2l0OVxuICAgIHwgTWludXNcbiAgICB8IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgVGFiXG4gICAgfCBFbnRlclxuICAgIHwgU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBFc2NhcGVcbiAgICB8IEJhY2tzcGFjZVxuICAgIHwgSW5zZXJ0XG4gICAgfCBEZWxldGVcbiAgICB8IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IEJyYWNrZXRMZWZ0XG4gICAgfCBCcmFja2V0UmlnaHRcbiAgICB8IFNlbWljb2xvblxuICAgIHwgUXVvdGVcbiAgICB8IEJhY2txdW90ZVxuICAgIHwgQmFja3NsYXNoXG4gICAgfCBDb21tYVxuICAgIHwgUGVyaW9kXG4gICAgfCBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IEYxXG4gICAgfCBGMlxuICAgIHwgRjNcbiAgICB8IEY0XG4gICAgfCBGNVxuICAgIHwgRjZcbiAgICB8IEY3XG4gICAgfCBGOFxuICAgIHwgRjlcbiAgICB8IEYxMFxuICAgIHwgRjExXG4gICAgfCBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgTnVtcGFkMFxuICAgIHwgTnVtcGFkMVxuICAgIHwgTnVtcGFkMlxuICAgIHwgTnVtcGFkM1xuICAgIHwgTnVtcGFkNFxuICAgIHwgTnVtcGFkNVxuICAgIHwgTnVtcGFkNlxuICAgIHwgTnVtcGFkN1xuICAgIHwgTnVtcGFkOFxuICAgIHwgTnVtcGFkOVxuICAgIHwgTnVtcGFkTXVsdGlwbHlcbiAgICB8IE51bXBhZFN1YnRyYWN0XG4gICAgfCBOdW1wYWRBZGRcbiAgICB8IE51bXBhZERlY2ltYWxcbiAgICB8IE51bXBhZEVxdWFsXG4gICAgfCBOdW1wYWRFbnRlclxuICAgIHwgTnVtcGFkRGl2aWRlXG4gICAgfCBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgQ29udHJvbExlZnRcbiAgICB8IENvbnRyb2xSaWdodFxuICAgIHwgTWV0YUxlZnRcbiAgICB8IE1ldGFSaWdodFxuICAgIHwgU2hpZnRMZWZ0XG4gICAgfCBTaGlmdFJpZ2h0XG4gICAgfCBBbHRMZWZ0XG4gICAgfCBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IEFycm93TGVmdFxuICAgIHwgQXJyb3dSaWdodFxuICAgIHwgQXJyb3dVcFxuICAgIHwgQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgUGFnZVVwXG4gICAgfCBQYWdlRG93blxuICAgIHwgSG9tZVxuICAgIHwgRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFZvbHVtZU11dGVcbiAgICB8IFZvbHVtZURvd25cbiAgICB8IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgTWVkaWFUcmFja05leHRcbiAgICB8IE1lZGlhUGxheVBhdXNlXG4gICAgfCBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IENvbnRleHRNZW51XG4gICAgfCBCcm93c2VyU2VhcmNoXG4gICAgfCBCcm93c2VySG9tZVxuICAgIHwgQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgQnJvd3NlclJlZnJlc2hcbiAgICB8IEJyb3dzZXJTdG9wXG4gICAgfCBCcm93c2VyRm9yd2FyZFxuICAgIHwgQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBPU0xlZnRcbiAgICB8IE9TUmlnaHRcbiAgICB8IFNjcm9sbExvY2tcbiAgICB8IFByaW50U2NyZWVuXG4gICAgfCBJbnRsQmFja3NsYXNoXG4gICAgfCBJbnRsWWVuXG4gICAgfCBQYXVzZVxuXG4gIGxldCB0cnlfY29kZSB2ID1cbiAgICBtYXRjaCBKcy50b19zdHJpbmcgdiB3aXRoXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBcIktleUFcIiAtPiBLZXlBXG4gICAgfCBcIktleUJcIiAtPiBLZXlCXG4gICAgfCBcIktleUNcIiAtPiBLZXlDXG4gICAgfCBcIktleURcIiAtPiBLZXlEXG4gICAgfCBcIktleUVcIiAtPiBLZXlFXG4gICAgfCBcIktleUZcIiAtPiBLZXlGXG4gICAgfCBcIktleUdcIiAtPiBLZXlHXG4gICAgfCBcIktleUhcIiAtPiBLZXlIXG4gICAgfCBcIktleUlcIiAtPiBLZXlJXG4gICAgfCBcIktleUpcIiAtPiBLZXlKXG4gICAgfCBcIktleUtcIiAtPiBLZXlLXG4gICAgfCBcIktleUxcIiAtPiBLZXlMXG4gICAgfCBcIktleU1cIiAtPiBLZXlNXG4gICAgfCBcIktleU5cIiAtPiBLZXlOXG4gICAgfCBcIktleU9cIiAtPiBLZXlPXG4gICAgfCBcIktleVBcIiAtPiBLZXlQXG4gICAgfCBcIktleVFcIiAtPiBLZXlRXG4gICAgfCBcIktleVJcIiAtPiBLZXlSXG4gICAgfCBcIktleVNcIiAtPiBLZXlTXG4gICAgfCBcIktleVRcIiAtPiBLZXlUXG4gICAgfCBcIktleVVcIiAtPiBLZXlVXG4gICAgfCBcIktleVZcIiAtPiBLZXlWXG4gICAgfCBcIktleVdcIiAtPiBLZXlXXG4gICAgfCBcIktleVhcIiAtPiBLZXlYXG4gICAgfCBcIktleVlcIiAtPiBLZXlZXG4gICAgfCBcIktleVpcIiAtPiBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBcIkRpZ2l0MFwiIC0+IERpZ2l0MFxuICAgIHwgXCJEaWdpdDFcIiAtPiBEaWdpdDFcbiAgICB8IFwiRGlnaXQyXCIgLT4gRGlnaXQyXG4gICAgfCBcIkRpZ2l0M1wiIC0+IERpZ2l0M1xuICAgIHwgXCJEaWdpdDRcIiAtPiBEaWdpdDRcbiAgICB8IFwiRGlnaXQ1XCIgLT4gRGlnaXQ1XG4gICAgfCBcIkRpZ2l0NlwiIC0+IERpZ2l0NlxuICAgIHwgXCJEaWdpdDdcIiAtPiBEaWdpdDdcbiAgICB8IFwiRGlnaXQ4XCIgLT4gRGlnaXQ4XG4gICAgfCBcIkRpZ2l0OVwiIC0+IERpZ2l0OVxuICAgIHwgXCJNaW51c1wiIC0+IE1pbnVzXG4gICAgfCBcIkVxdWFsXCIgLT4gRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBcIlRhYlwiIC0+IFRhYlxuICAgIHwgXCJFbnRlclwiIC0+IEVudGVyXG4gICAgfCBcIlNwYWNlXCIgLT4gU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBcIkVzY2FwZVwiIC0+IEVzY2FwZVxuICAgIHwgXCJCYWNrc3BhY2VcIiAtPiBCYWNrc3BhY2VcbiAgICB8IFwiSW5zZXJ0XCIgLT4gSW5zZXJ0XG4gICAgfCBcIkRlbGV0ZVwiIC0+IERlbGV0ZVxuICAgIHwgXCJDYXBzTG9ja1wiIC0+IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IFwiQnJhY2tldExlZnRcIiAtPiBCcmFja2V0TGVmdFxuICAgIHwgXCJCcmFja2V0UmlnaHRcIiAtPiBCcmFja2V0UmlnaHRcbiAgICB8IFwiU2VtaWNvbG9uXCIgLT4gU2VtaWNvbG9uXG4gICAgfCBcIlF1b3RlXCIgLT4gUXVvdGVcbiAgICB8IFwiQmFja3F1b3RlXCIgLT4gQmFja3F1b3RlXG4gICAgfCBcIkJhY2tzbGFzaFwiIC0+IEJhY2tzbGFzaFxuICAgIHwgXCJDb21tYVwiIC0+IENvbW1hXG4gICAgfCBcIlBlcmlvZFwiIC0+IFBlcmlvZFxuICAgIHwgXCJTbGFzaFwiIC0+IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgXCJGMVwiIC0+IEYxXG4gICAgfCBcIkYyXCIgLT4gRjJcbiAgICB8IFwiRjNcIiAtPiBGM1xuICAgIHwgXCJGNFwiIC0+IEY0XG4gICAgfCBcIkY1XCIgLT4gRjVcbiAgICB8IFwiRjZcIiAtPiBGNlxuICAgIHwgXCJGN1wiIC0+IEY3XG4gICAgfCBcIkY4XCIgLT4gRjhcbiAgICB8IFwiRjlcIiAtPiBGOVxuICAgIHwgXCJGMTBcIiAtPiBGMTBcbiAgICB8IFwiRjExXCIgLT4gRjExXG4gICAgfCBcIkYxMlwiIC0+IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBcIk51bXBhZDBcIiAtPiBOdW1wYWQwXG4gICAgfCBcIk51bXBhZDFcIiAtPiBOdW1wYWQxXG4gICAgfCBcIk51bXBhZDJcIiAtPiBOdW1wYWQyXG4gICAgfCBcIk51bXBhZDNcIiAtPiBOdW1wYWQzXG4gICAgfCBcIk51bXBhZDRcIiAtPiBOdW1wYWQ0XG4gICAgfCBcIk51bXBhZDVcIiAtPiBOdW1wYWQ1XG4gICAgfCBcIk51bXBhZDZcIiAtPiBOdW1wYWQ2XG4gICAgfCBcIk51bXBhZDdcIiAtPiBOdW1wYWQ3XG4gICAgfCBcIk51bXBhZDhcIiAtPiBOdW1wYWQ4XG4gICAgfCBcIk51bXBhZDlcIiAtPiBOdW1wYWQ5XG4gICAgfCBcIk51bXBhZE11bHRpcGx5XCIgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IFwiTnVtcGFkU3VidHJhY3RcIiAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgXCJOdW1wYWRBZGRcIiAtPiBOdW1wYWRBZGRcbiAgICB8IFwiTnVtcGFkRGVjaW1hbFwiIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IFwiTnVtcGFkRXF1YWxcIiAtPiBOdW1wYWRFcXVhbFxuICAgIHwgXCJOdW1wYWRFbnRlclwiIC0+IE51bXBhZEVudGVyXG4gICAgfCBcIk51bXBhZERpdmlkZVwiIC0+IE51bXBhZERpdmlkZVxuICAgIHwgXCJOdW1Mb2NrXCIgLT4gTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IFwiQ29udHJvbExlZnRcIiAtPiBDb250cm9sTGVmdFxuICAgIHwgXCJDb250cm9sUmlnaHRcIiAtPiBDb250cm9sUmlnaHRcbiAgICB8IFwiTWV0YUxlZnRcIiAtPiBNZXRhTGVmdFxuICAgIHwgXCJNZXRhUmlnaHRcIiAtPiBNZXRhUmlnaHRcbiAgICB8IFwiU2hpZnRMZWZ0XCIgLT4gU2hpZnRMZWZ0XG4gICAgfCBcIlNoaWZ0UmlnaHRcIiAtPiBTaGlmdFJpZ2h0XG4gICAgfCBcIkFsdExlZnRcIiAtPiBBbHRMZWZ0XG4gICAgfCBcIkFsdFJpZ2h0XCIgLT4gQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBcIkFycm93TGVmdFwiIC0+IEFycm93TGVmdFxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgLT4gQXJyb3dSaWdodFxuICAgIHwgXCJBcnJvd1VwXCIgLT4gQXJyb3dVcFxuICAgIHwgXCJBcnJvd0Rvd25cIiAtPiBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBcIlBhZ2VVcFwiIC0+IFBhZ2VVcFxuICAgIHwgXCJQYWdlRG93blwiIC0+IFBhZ2VEb3duXG4gICAgfCBcIkhvbWVcIiAtPiBIb21lXG4gICAgfCBcIkVuZFwiIC0+IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBcIlZvbHVtZU11dGVcIiAtPiBWb2x1bWVNdXRlXG4gICAgfCBcIlZvbHVtZURvd25cIiAtPiBWb2x1bWVEb3duXG4gICAgfCBcIlZvbHVtZVVwXCIgLT4gVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgXCJNZWRpYVRyYWNrUHJldmlvdXNcIiAtPiBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IFwiTWVkaWFUcmFja05leHRcIiAtPiBNZWRpYVRyYWNrTmV4dFxuICAgIHwgXCJNZWRpYVBsYXlQYXVzZVwiIC0+IE1lZGlhUGxheVBhdXNlXG4gICAgfCBcIk1lZGlhU3RvcFwiIC0+IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgXCJDb250ZXh0TWVudVwiIC0+IENvbnRleHRNZW51XG4gICAgfCBcIkJyb3dzZXJTZWFyY2hcIiAtPiBCcm93c2VyU2VhcmNoXG4gICAgfCBcIkJyb3dzZXJIb21lXCIgLT4gQnJvd3NlckhvbWVcbiAgICB8IFwiQnJvd3NlckZhdm9yaXRlc1wiIC0+IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IFwiQnJvd3NlclJlZnJlc2hcIiAtPiBCcm93c2VyUmVmcmVzaFxuICAgIHwgXCJCcm93c2VyU3RvcFwiIC0+IEJyb3dzZXJTdG9wXG4gICAgfCBcIkJyb3dzZXJGb3J3YXJkXCIgLT4gQnJvd3NlckZvcndhcmRcbiAgICB8IFwiQnJvd3NlckJhY2tcIiAtPiBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IFwiT1NMZWZ0XCIgLT4gT1NMZWZ0XG4gICAgfCBcIk9TUmlnaHRcIiAtPiBPU1JpZ2h0XG4gICAgfCBcIlNjcm9sbExvY2tcIiAtPiBTY3JvbGxMb2NrXG4gICAgfCBcIlByaW50U2NyZWVuXCIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IFwiSW50bEJhY2tzbGFzaFwiIC0+IEludGxCYWNrc2xhc2hcbiAgICB8IFwiSW50bFllblwiIC0+IEludGxZZW5cbiAgICB8IFwiUGF1c2VcIiAtPiBQYXVzZVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX2xlZnQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRMZWZ0XG4gICAgfCAxNyAtPiBDb250cm9sTGVmdFxuICAgIHwgMTggLT4gQWx0TGVmdFxuICAgIHwgOTEgLT4gTWV0YUxlZnRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9yaWdodCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdFJpZ2h0XG4gICAgfCAxNyAtPiBDb250cm9sUmlnaHRcbiAgICB8IDE4IC0+IEFsdFJpZ2h0XG4gICAgfCA5MSAtPiBNZXRhUmlnaHRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9udW1wYWQgPSBmdW5jdGlvblxuICAgIHwgNDYgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgNDUgLT4gTnVtcGFkMFxuICAgIHwgMzUgLT4gTnVtcGFkMVxuICAgIHwgNDAgLT4gTnVtcGFkMlxuICAgIHwgMzQgLT4gTnVtcGFkM1xuICAgIHwgMzcgLT4gTnVtcGFkNFxuICAgIHwgMTIgLT4gTnVtcGFkNVxuICAgIHwgMzkgLT4gTnVtcGFkNlxuICAgIHwgMzYgLT4gTnVtcGFkN1xuICAgIHwgMzggLT4gTnVtcGFkOFxuICAgIHwgMzMgLT4gTnVtcGFkOVxuICAgIHwgMTMgLT4gTnVtcGFkRW50ZXJcbiAgICB8IDExMSAtPiBOdW1wYWREaXZpZGVcbiAgICB8IDEwNyAtPiBOdW1wYWRBZGRcbiAgICB8IDEwOSAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgMTA2IC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCAxMTAgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgOTYgLT4gTnVtcGFkMFxuICAgIHwgOTcgLT4gTnVtcGFkMVxuICAgIHwgOTggLT4gTnVtcGFkMlxuICAgIHwgOTkgLT4gTnVtcGFkM1xuICAgIHwgMTAwIC0+IE51bXBhZDRcbiAgICB8IDEwMSAtPiBOdW1wYWQ1XG4gICAgfCAxMDIgLT4gTnVtcGFkNlxuICAgIHwgMTAzIC0+IE51bXBhZDdcbiAgICB8IDEwNCAtPiBOdW1wYWQ4XG4gICAgfCAxMDUgLT4gTnVtcGFkOVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX25vcm1hbCA9IGZ1bmN0aW9uXG4gICAgfCAyNyAtPiBFc2NhcGVcbiAgICB8IDExMiAtPiBGMVxuICAgIHwgMTEzIC0+IEYyXG4gICAgfCAxMTQgLT4gRjNcbiAgICB8IDExNSAtPiBGNFxuICAgIHwgMTE2IC0+IEY1XG4gICAgfCAxMTcgLT4gRjZcbiAgICB8IDExOCAtPiBGN1xuICAgIHwgMTE5IC0+IEY4XG4gICAgfCAxMjAgLT4gRjlcbiAgICB8IDEyMSAtPiBGMTBcbiAgICB8IDEyMiAtPiBGMTFcbiAgICB8IDEyMyAtPiBGMTJcbiAgICB8IDQyIC0+IFByaW50U2NyZWVuXG4gICAgfCAxNDUgLT4gU2Nyb2xsTG9ja1xuICAgIHwgMTkgLT4gUGF1c2VcbiAgICB8IDE5MiAtPiBCYWNrcXVvdGVcbiAgICB8IDQ5IC0+IERpZ2l0MVxuICAgIHwgNTAgLT4gRGlnaXQyXG4gICAgfCA1MSAtPiBEaWdpdDNcbiAgICB8IDUyIC0+IERpZ2l0NFxuICAgIHwgNTMgLT4gRGlnaXQ1XG4gICAgfCA1NCAtPiBEaWdpdDZcbiAgICB8IDU1IC0+IERpZ2l0N1xuICAgIHwgNTYgLT4gRGlnaXQ4XG4gICAgfCA1NyAtPiBEaWdpdDlcbiAgICB8IDQ4IC0+IERpZ2l0MFxuICAgIHwgMTg5IC0+IE1pbnVzXG4gICAgfCAxODcgLT4gRXF1YWxcbiAgICB8IDggLT4gQmFja3NwYWNlXG4gICAgfCA5IC0+IFRhYlxuICAgIHwgODEgLT4gS2V5UVxuICAgIHwgODcgLT4gS2V5V1xuICAgIHwgNjkgLT4gS2V5RVxuICAgIHwgODIgLT4gS2V5UlxuICAgIHwgODQgLT4gS2V5VFxuICAgIHwgODkgLT4gS2V5WVxuICAgIHwgODUgLT4gS2V5VVxuICAgIHwgNzMgLT4gS2V5SVxuICAgIHwgNzkgLT4gS2V5T1xuICAgIHwgODAgLT4gS2V5UFxuICAgIHwgMjE5IC0+IEJyYWNrZXRMZWZ0XG4gICAgfCAyMjEgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCAyMjAgLT4gQmFja3NsYXNoXG4gICAgfCAyMCAtPiBDYXBzTG9ja1xuICAgIHwgNjUgLT4gS2V5QVxuICAgIHwgODMgLT4gS2V5U1xuICAgIHwgNjggLT4gS2V5RFxuICAgIHwgNzAgLT4gS2V5RlxuICAgIHwgNzEgLT4gS2V5R1xuICAgIHwgNzIgLT4gS2V5SFxuICAgIHwgNzQgLT4gS2V5SlxuICAgIHwgNzUgLT4gS2V5S1xuICAgIHwgNzYgLT4gS2V5TFxuICAgIHwgMTg2IC0+IFNlbWljb2xvblxuICAgIHwgMjIyIC0+IFF1b3RlXG4gICAgfCAxMyAtPiBFbnRlclxuICAgIHwgOTAgLT4gS2V5WlxuICAgIHwgODggLT4gS2V5WFxuICAgIHwgNjcgLT4gS2V5Q1xuICAgIHwgODYgLT4gS2V5VlxuICAgIHwgNjYgLT4gS2V5QlxuICAgIHwgNzggLT4gS2V5TlxuICAgIHwgNzcgLT4gS2V5TVxuICAgIHwgMTg4IC0+IENvbW1hXG4gICAgfCAxOTAgLT4gUGVyaW9kXG4gICAgfCAxOTEgLT4gU2xhc2hcbiAgICB8IDMyIC0+IFNwYWNlXG4gICAgfCA5MyAtPiBDb250ZXh0TWVudVxuICAgIHwgNDUgLT4gSW5zZXJ0XG4gICAgfCAzNiAtPiBIb21lXG4gICAgfCAzMyAtPiBQYWdlVXBcbiAgICB8IDQ2IC0+IERlbGV0ZVxuICAgIHwgMzUgLT4gRW5kXG4gICAgfCAzNCAtPiBQYWdlRG93blxuICAgIHwgMzcgLT4gQXJyb3dMZWZ0XG4gICAgfCA0MCAtPiBBcnJvd0Rvd25cbiAgICB8IDM5IC0+IEFycm93UmlnaHRcbiAgICB8IDM4IC0+IEFycm93VXBcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IG1ha2VfdW5pZGVudGlmaWVkIF8gPSBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gT3B0ZGVmLmNhc2UgdmFsdWUgbWFrZV91bmlkZW50aWZpZWQgZlxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IHJ1bl9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IGYgdmFsdWVcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBnZXRfa2V5X2NvZGUgZXZ0ID0gZXZ0IyMua2V5Q29kZVxuXG4gIGxldCB0cnlfa2V5X2xvY2F0aW9uIGV2dCA9XG4gICAgbWF0Y2ggZXZ0IyMubG9jYXRpb24gd2l0aFxuICAgIHwgMSAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX2xlZnRcbiAgICB8IDIgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9yaWdodFxuICAgIHwgMyAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX251bXBhZFxuICAgIHwgXyAtPiBtYWtlX3VuaWRlbnRpZmllZFxuXG4gIGxldCAoIHw+ICkgeCBmID0gZiB4XG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgVW5pZGVudGlmaWVkXG4gICAgfD4gdHJ5X25leHQgZXZ0IyMuY29kZSB0cnlfY29kZVxuICAgIHw+IHRyeV9rZXlfbG9jYXRpb24gZXZ0XG4gICAgfD4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9ub3JtYWxcblxuICBsZXQgb2Zfa2V5X2NvZGUgPSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5lbmRcblxubW9kdWxlIEtleWJvYXJkX2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBVY2hhci50IG9wdGlvblxuXG4gIGxldCBjaGFyX29mX2ludCB2YWx1ZSA9XG4gICAgaWYgMCA8IHZhbHVlIHRoZW4gdHJ5IFNvbWUgKFVjaGFyLm9mX2ludCB2YWx1ZSkgd2l0aCBfIC0+IE5vbmUgZWxzZSBOb25lXG5cbiAgbGV0IGVtcHR5X3N0cmluZyBfID0gSnMuc3RyaW5nIFwiXCJcblxuICBsZXQgbm9uZSBfID0gTm9uZVxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIGxldCBrZXkgPSBPcHRkZWYuZ2V0IGV2dCMjLmtleSBlbXB0eV9zdHJpbmcgaW5cbiAgICBtYXRjaCBrZXkjIy5sZW5ndGggd2l0aFxuICAgIHwgMCAtPiBPcHRkZWYuY2FzZSBldnQjIy5jaGFyQ29kZSBub25lIGNoYXJfb2ZfaW50XG4gICAgfCAxIC0+IGNoYXJfb2ZfaW50IChpbnRfb2ZfZmxvYXQgKEpzLnRvX2Zsb2F0IChrZXkjI2NoYXJDb2RlQXQgMCkpKVxuICAgIHwgXyAtPiBOb25lXG5lbmRcblxuKCoqKioqKVxuXG5sZXQgZWxlbWVudCA6ICNEb20uZWxlbWVudCB0IC0+IGVsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2VcblxudHlwZSB0YWdnZWRFbGVtZW50ID1cbiAgfCBBIG9mIGFuY2hvckVsZW1lbnQgdFxuICB8IEFyZWEgb2YgYXJlYUVsZW1lbnQgdFxuICB8IEF1ZGlvIG9mIGF1ZGlvRWxlbWVudCB0XG4gIHwgQmFzZSBvZiBiYXNlRWxlbWVudCB0XG4gIHwgQmxvY2txdW90ZSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IEJvZHkgb2YgYm9keUVsZW1lbnQgdFxuICB8IEJyIG9mIGJyRWxlbWVudCB0XG4gIHwgQnV0dG9uIG9mIGJ1dHRvbkVsZW1lbnQgdFxuICB8IENhbnZhcyBvZiBjYW52YXNFbGVtZW50IHRcbiAgfCBDYXB0aW9uIG9mIHRhYmxlQ2FwdGlvbkVsZW1lbnQgdFxuICB8IENvbCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IENvbGdyb3VwIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgRGVsIG9mIG1vZEVsZW1lbnQgdFxuICB8IERpdiBvZiBkaXZFbGVtZW50IHRcbiAgfCBEbCBvZiBkTGlzdEVsZW1lbnQgdFxuICB8IEVtYmVkIG9mIGVtYmVkRWxlbWVudCB0XG4gIHwgRmllbGRzZXQgb2YgZmllbGRTZXRFbGVtZW50IHRcbiAgfCBGb3JtIG9mIGZvcm1FbGVtZW50IHRcbiAgfCBGcmFtZXNldCBvZiBmcmFtZVNldEVsZW1lbnQgdFxuICB8IEZyYW1lIG9mIGZyYW1lRWxlbWVudCB0XG4gIHwgSDEgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgyIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMyBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDQgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg1IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSGVhZCBvZiBoZWFkRWxlbWVudCB0XG4gIHwgSHIgb2YgaHJFbGVtZW50IHRcbiAgfCBIdG1sIG9mIGh0bWxFbGVtZW50IHRcbiAgfCBJZnJhbWUgb2YgaUZyYW1lRWxlbWVudCB0XG4gIHwgSW1nIG9mIGltYWdlRWxlbWVudCB0XG4gIHwgSW5wdXQgb2YgaW5wdXRFbGVtZW50IHRcbiAgfCBJbnMgb2YgbW9kRWxlbWVudCB0XG4gIHwgTGFiZWwgb2YgbGFiZWxFbGVtZW50IHRcbiAgfCBMZWdlbmQgb2YgbGVnZW5kRWxlbWVudCB0XG4gIHwgTGkgb2YgbGlFbGVtZW50IHRcbiAgfCBMaW5rIG9mIGxpbmtFbGVtZW50IHRcbiAgfCBNYXAgb2YgbWFwRWxlbWVudCB0XG4gIHwgTWV0YSBvZiBtZXRhRWxlbWVudCB0XG4gIHwgT2JqZWN0IG9mIG9iamVjdEVsZW1lbnQgdFxuICB8IE9sIG9mIG9MaXN0RWxlbWVudCB0XG4gIHwgT3B0Z3JvdXAgb2Ygb3B0R3JvdXBFbGVtZW50IHRcbiAgfCBPcHRpb24gb2Ygb3B0aW9uRWxlbWVudCB0XG4gIHwgUCBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFBhcmFtIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUHJlIG9mIHByZUVsZW1lbnQgdFxuICB8IFEgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBTY3JpcHQgb2Ygc2NyaXB0RWxlbWVudCB0XG4gIHwgU2VsZWN0IG9mIHNlbGVjdEVsZW1lbnQgdFxuICB8IFN0eWxlIG9mIHN0eWxlRWxlbWVudCB0XG4gIHwgVGFibGUgb2YgdGFibGVFbGVtZW50IHRcbiAgfCBUYm9keSBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUZCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUZXh0YXJlYSBvZiB0ZXh0QXJlYUVsZW1lbnQgdFxuICB8IFRmb290IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRoIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRoZWFkIG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRpdGxlIG9mIHRpdGxlRWxlbWVudCB0XG4gIHwgVHIgb2YgdGFibGVSb3dFbGVtZW50IHRcbiAgfCBVbCBvZiB1TGlzdEVsZW1lbnQgdFxuICB8IFZpZGVvIG9mIHZpZGVvRWxlbWVudCB0XG4gIHwgT3RoZXIgb2YgZWxlbWVudCB0XG5cbmxldCBvdGhlciBlID0gT3RoZXIgKGUgOiAjZWxlbWVudCB0IDo+IGVsZW1lbnQgdClcblxubGV0IHRhZ2dlZCAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHRhZyA9IEpzLnRvX2J5dGVzdHJpbmcgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIGluXG4gIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMFxuICB0aGVuIG90aGVyIGVcbiAgZWxzZVxuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHRhZyAwIHdpdGhcbiAgICB8ICdhJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJhXCIgLT4gQSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXJlYVwiIC0+IEFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImF1ZGlvXCIgLT4gQXVkaW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYmFzZVwiIC0+IEJhc2UgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJsb2NrcXVvdGVcIiAtPiBCbG9ja3F1b3RlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJib2R5XCIgLT4gQm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnJcIiAtPiBCciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnV0dG9uXCIgLT4gQnV0dG9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImNhbnZhc1wiIC0+IENhbnZhcyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY2FwdGlvblwiIC0+IENhcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbFwiIC0+IENvbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sZ3JvdXBcIiAtPiBDb2xncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdkJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJkZWxcIiAtPiBEZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRpdlwiIC0+IERpdiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGxcIiAtPiBEbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdlJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJlbWJlZFwiIC0+IEVtYmVkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImZpZWxkc2V0XCIgLT4gRmllbGRzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZvcm1cIiAtPiBGb3JtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZXNldFwiIC0+IEZyYW1lc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZVwiIC0+IEZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2gnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImgxXCIgLT4gSDEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgyXCIgLT4gSDIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgzXCIgLT4gSDMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg0XCIgLT4gSDQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg1XCIgLT4gSDUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg2XCIgLT4gSDYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhlYWRcIiAtPiBIZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoclwiIC0+IEhyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJodG1sXCIgLT4gSHRtbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdpJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJpZnJhbWVcIiAtPiBJZnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImltZ1wiIC0+IEltZyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5wdXRcIiAtPiBJbnB1dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5zXCIgLT4gSW5zIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2wnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImxhYmVsXCIgLT4gTGFiZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxlZ2VuZFwiIC0+IExlZ2VuZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlcIiAtPiBMaSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlua1wiIC0+IExpbmsgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibWFwXCIgLT4gTWFwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJtZXRhXCIgLT4gTWV0YSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdvJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJvYmplY3RcIiAtPiBPYmplY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9sXCIgLT4gT2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGdyb3VwXCIgLT4gT3B0Z3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGlvblwiIC0+IE9wdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdwJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJwXCIgLT4gUCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicGFyYW1cIiAtPiBQYXJhbSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicHJlXCIgLT4gUHJlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInFcIiAtPiBRIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInNjcmlwdFwiIC0+IFNjcmlwdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic2VsZWN0XCIgLT4gU2VsZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzdHlsZVwiIC0+IFN0eWxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInRhYmxlXCIgLT4gVGFibGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRib2R5XCIgLT4gVGJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRkXCIgLT4gVGQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRleHRhcmVhXCIgLT4gVGV4dGFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRmb290XCIgLT4gVGZvb3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoXCIgLT4gVGggKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoZWFkXCIgLT4gVGhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRpdGxlXCIgLT4gVGl0bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRyXCIgLT4gVHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidWxcIiAtPiBVbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd2JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ2aWRlb1wiIC0+IFZpZGVvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgXyAtPiBvdGhlciBlXG5cbmxldCBvcHRfdGFnZ2VkIGUgPSBPcHQuY2FzZSBlIChmdW4gKCkgLT4gTm9uZSkgKGZ1biBlIC0+IFNvbWUgKHRhZ2dlZCBlKSlcblxudHlwZSB0YWdnZWRFdmVudCA9XG4gIHwgTW91c2VFdmVudCBvZiBtb3VzZUV2ZW50IHRcbiAgfCBLZXlib2FyZEV2ZW50IG9mIGtleWJvYXJkRXZlbnQgdFxuICB8IE1lc3NhZ2VFdmVudCBvZiBtZXNzYWdlRXZlbnQgdFxuICB8IE1vdXNld2hlZWxFdmVudCBvZiBtb3VzZXdoZWVsRXZlbnQgdFxuICB8IE1vdXNlU2Nyb2xsRXZlbnQgb2YgbW91c2VTY3JvbGxFdmVudCB0XG4gIHwgUG9wU3RhdGVFdmVudCBvZiBwb3BTdGF0ZUV2ZW50IHRcbiAgfCBPdGhlckV2ZW50IG9mIGV2ZW50IHRcblxubGV0IHRhZ2dlZEV2ZW50IChldiA6ICNldmVudCBKcy50KSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKENvZXJjZVRvLm1vdXNlRXZlbnQgZXYpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKENvZXJjZVRvLmtleWJvYXJkRXZlbnQgZXYpXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKENvZXJjZVRvLndoZWVsRXZlbnQgZXYpXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgKENvZXJjZVRvLm1vdXNlU2Nyb2xsRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLnBvcFN0YXRlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLm1lc3NhZ2VFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gT3RoZXJFdmVudCAoZXYgOj4gZXZlbnQgdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1lc3NhZ2VFdmVudCBldikpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gUG9wU3RhdGVFdmVudCBldikpXG4gICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZVNjcm9sbEV2ZW50IGV2KSlcbiAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2V3aGVlbEV2ZW50IGV2KSlcbiAgICAgICAgKGZ1biBldiAtPiBLZXlib2FyZEV2ZW50IGV2KSlcbiAgICAoZnVuIGV2IC0+IE1vdXNlRXZlbnQgZXYpXG5cbmxldCBvcHRfdGFnZ2VkRXZlbnQgZXYgPSBPcHQuY2FzZSBldiAoZnVuICgpIC0+IE5vbmUpIChmdW4gZXYgLT4gU29tZSAodGFnZ2VkRXZlbnQgZXYpKVxuXG5sZXQgc3RvcFByb3BhZ2F0aW9uIGV2ID1cbiAgbGV0IGUgPSBKcy5VbnNhZmUuY29lcmNlIGV2IGluXG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnN0b3BQcm9wYWdhdGlvblxuICAgIChmdW4gKCkgLT4gZSMjLmNhbmNlbEJ1YmJsZSA6PSBKcy5fdHJ1ZSlcbiAgICAoZnVuIF8gLT4gZSMjX3N0b3BQcm9wYWdhdGlvbilcblxubGV0IF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0ID1cbiAgSnMuVW5zYWZlLnB1cmVfZXhwciAoZnVuIF8gLT5cbiAgICAgIGxldCB3ID0gSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cgaW5cbiAgICAgIGxldCBsID1cbiAgICAgICAgWyB3IyMucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1velJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMub1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCByZXEgPSBMaXN0LmZpbmQgKGZ1biBjIC0+IEpzLk9wdGRlZi50ZXN0IGMpIGwgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCByZXEgW3wgSnMuVW5zYWZlLmluamVjdCBjYWxsYmFjayB8XVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG5vdyAoKSA9IEpzLnRvX2Zsb2F0IChuZXclanMgSnMuZGF0ZV9ub3cpIyNnZXRUaW1lIGluXG4gICAgICAgIGxldCBsYXN0ID0gcmVmIChub3cgKCkpIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPlxuICAgICAgICAgIGxldCB0ID0gbm93ICgpIGluXG4gICAgICAgICAgbGV0IGR0ID0gIWxhc3QgKy4gKDEwMDAuIC8uIDYwLikgLS4gdCBpblxuICAgICAgICAgIGxldCBkdCA9IGlmIFBvbHkuKGR0IDwgMC4pIHRoZW4gMC4gZWxzZSBkdCBpblxuICAgICAgICAgIGxhc3QgOj0gdDtcbiAgICAgICAgICBpZ25vcmUgKHdpbmRvdyMjc2V0VGltZW91dCBjYWxsYmFjayAoSnMuZmxvYXQgZHQpKSlcblxuKCoqKiopXG5cbmxldCBoYXNQdXNoU3RhdGUgKCkgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cjIy5oaXN0b3J5KSMjLnB1c2hTdGF0ZVxuXG5sZXQgaGFzUGxhY2Vob2xkZXIgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucGxhY2Vob2xkZXJcblxubGV0IGhhc1JlcXVpcmVkICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnJlcXVpcmVkXG5cbmxldCBvdmVyZmxvd19saW1pdCA9IDIxNDc0ODNfMDAwLlxuXG4oKiBtcyAqKVxuXG50eXBlIHRpbWVvdXRfaWRfc2FmZSA9IHRpbWVvdXRfaWQgb3B0aW9uIHJlZlxuXG5sZXQgc2V0VGltZW91dCBjYWxsYmFjayBkIDogdGltZW91dF9pZF9zYWZlID1cbiAgbGV0IGlkID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wIGQgKCkgPVxuICAgIGxldCBzdGVwLCByZW1haW4gPVxuICAgICAgaWYgUG9seS4oZCA+IG92ZXJmbG93X2xpbWl0KSB0aGVuIG92ZXJmbG93X2xpbWl0LCBkIC0uIG92ZXJmbG93X2xpbWl0IGVsc2UgZCwgMC5cbiAgICBpblxuICAgIGxldCBjYiA9IGlmIFBvbHkuKHJlbWFpbiA9IDAuKSB0aGVuIGNhbGxiYWNrIGVsc2UgbG9vcCByZW1haW4gaW5cbiAgICBpZCA6PSBTb21lICh3aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgY2IpIChKcy5mbG9hdCBzdGVwKSlcbiAgaW5cbiAgbG9vcCBkICgpO1xuICBpZFxuXG5sZXQgY2xlYXJUaW1lb3V0IChpZCA6IHRpbWVvdXRfaWRfc2FmZSkgPVxuICBtYXRjaCAhaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIGlkIDo9IE5vbmU7XG4gICAgICB3aW5kb3cjI2NsZWFyVGltZW91dCB4XG5cbmxldCBqc19hcnJheV9vZl9jb2xsZWN0aW9uIChjIDogI2VsZW1lbnQgY29sbGVjdGlvbiBKcy50KSA6ICNlbGVtZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgID1cbiAgSnMuVW5zYWZlLihtZXRoX2NhbGwgKGpzX2V4cHIgXCJbXS5zbGljZVwiKSBcImNhbGxcIiBbfCBpbmplY3QgYyB8XSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgZm9ybURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIGFwcGVuZCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRfYmxvYiA6IGpzX3N0cmluZyB0IC0+IEZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBmb3JtRGF0YSA6IGZvcm1EYXRhIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG5sZXQgZm9ybURhdGFfZm9ybSA6IChmb3JtRWxlbWVudCB0IC0+IGZvcm1EYXRhIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxudHlwZSBmb3JtX2VsdCA9XG4gIFsgYFN0cmluZyBvZiBqc19zdHJpbmcgdFxuICB8IGBGaWxlIG9mIEZpbGUuZmlsZSB0XG4gIF1cblxudHlwZSBmb3JtX2NvbnRlbnRzID1cbiAgWyBgRmllbGRzIG9mIChzdHJpbmcgKiBmb3JtX2VsdCkgbGlzdCByZWZcbiAgfCBgRm9ybURhdGEgb2YgZm9ybURhdGEgdFxuICBdXG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmNsYXNzIHR5cGUgc3VibWl0dGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmxldCBoYXZlX2NvbnRlbnQgKGVsdCA6IHN1Ym1pdHRhYmxlRWxlbWVudCB0KSA9XG4gIGVsdCMjLm5hbWUjIy5sZW5ndGggPiAwICYmIG5vdCAoSnMudG9fYm9vbCBlbHQjIy5kaXNhYmxlZClcblxubGV0IGdldF90ZXh0YXJlYV92YWwgKGVsdCA6IHRleHRBcmVhRWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9zZWxlY3RfdmFsIChlbHQgOiBzZWxlY3RFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgaWYgdG9fYm9vbCBlbHQjIy5tdWx0aXBsZVxuICAgIHRoZW5cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgQXJyYXkuaW5pdCBlbHQjIy5vcHRpb25zIyMubGVuZ3RoIChmdW4gaSAtPiBPcHQudG9fb3B0aW9uIChlbHQjIy5vcHRpb25zIyNpdGVtIGkpKVxuICAgICAgaW5cbiAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgICBpZiBKcy50b19ib29sIGUjIy5zZWxlY3RlZCB0aGVuIFNvbWUgKG5hbWUsIGBTdHJpbmcgZSMjLnZhbHVlKSBlbHNlIE5vbmUpXG4gICAgICAgIChBcnJheS50b19saXN0IG9wdGlvbnMpXG4gICAgZWxzZSBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmNsYXNzIHR5cGUgZmlsZV9pbnB1dCA9IG9iamVjdFxuICBpbmhlcml0IGlucHV0RWxlbWVudFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZ2V0X2lucHV0X3ZhbCA/KGdldCA9IGZhbHNlKSAoZWx0IDogaW5wdXRFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgbGV0IHZhbHVlID0gZWx0IyMudmFsdWUgaW5cbiAgICBtYXRjaCB0b19ieXRlc3RyaW5nIGVsdCMjLl90eXBlIyN0b0xvd2VyQ2FzZSB3aXRoXG4gICAgfCBcImNoZWNrYm94XCIgfCBcInJhZGlvXCIgLT5cbiAgICAgICAgaWYgdG9fYm9vbCBlbHQjIy5jaGVja2VkIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF0gZWxzZSBbXVxuICAgIHwgXCJzdWJtaXRcIiB8IFwicmVzZXRcIiAtPiBbXVxuICAgIHwgXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICB8IFwiZmlsZVwiIC0+IChcbiAgICAgICAgaWYgZ2V0XG4gICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBlbHQgOiBmaWxlX2lucHV0IHQgPSBVbnNhZmUuY29lcmNlIGVsdCBpblxuICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMuZmlsZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBsaXN0IC0+IChcbiAgICAgICAgICAgICAgaWYgbGlzdCMjLmxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgKEpzLnN0cmluZyBcIlwiKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLm11bHRpcGxlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+IChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobGlzdCMjaXRlbSAwKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBbIG5hbWUsIGBGaWxlIGZpbGUgXSlcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIGYgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFNvbWUgKG5hbWUsIGBGaWxlIGZpbGUpKVxuICAgICAgICAgICAgICAgICAgICAgIChBcnJheS50b19saXN0IChBcnJheS5pbml0IGxpc3QjIy5sZW5ndGggKGZ1biBpIC0+IGxpc3QjI2l0ZW0gaSkpKSkpXG4gICAgfCBfIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9mb3JtX2VsZW1lbnRzIChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChmb3JtIyMuZWxlbWVudHMjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIChpIC0gaSlcbiAgICAgIHwgU29tZSB4IC0+IGxvb3AgKHggOjogYWNjKSAoaSAtIDEpXG4gIGluXG4gIGxvb3AgW10gKGZvcm0jIy5lbGVtZW50cyMjLmxlbmd0aCAtIDEpXG5cbmxldCBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdiA9XG4gIG1hdGNoIHRhZ2dlZCB2IHdpdGhcbiAgfCBTZWxlY3QgdiAtPiBnZXRfc2VsZWN0X3ZhbCB2XG4gIHwgSW5wdXQgdiAtPiBnZXRfaW5wdXRfdmFsID9nZXQgdlxuICB8IFRleHRhcmVhIHYgLT4gZ2V0X3RleHRhcmVhX3ZhbCB2XG4gIHwgXyAtPiBbXVxuXG5sZXQgZm9ybV9lbGVtZW50cyA/Z2V0IChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gdiAtPiBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdikgKGdldF9mb3JtX2VsZW1lbnRzIGZvcm0pKVxuXG5sZXQgYXBwZW5kIChmb3JtX2NvbnRlbnRzIDogZm9ybV9jb250ZW50cykgKGZvcm1fZWx0IDogc3RyaW5nICogZm9ybV9lbHQpID1cbiAgbWF0Y2ggZm9ybV9jb250ZW50cyB3aXRoXG4gIHwgYEZpZWxkcyBsaXN0IC0+IGxpc3QgOj0gZm9ybV9lbHQgOjogIWxpc3RcbiAgfCBgRm9ybURhdGEgZiAtPiAoXG4gICAgICBtYXRjaCBmb3JtX2VsdCB3aXRoXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBmIyNhcHBlbmQgKHN0cmluZyBuYW1lKSBzXG4gICAgICB8IG5hbWUsIGBGaWxlIGZpbGUgLT4gZiMjYXBwZW5kX2Jsb2IgKHN0cmluZyBuYW1lKSAoZmlsZSA6PiBGaWxlLmJsb2IgdCkpXG5cbmxldCBlbXB0eV9mb3JtX2NvbnRlbnRzICgpID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiAoSnMuZGVmIGZvcm1EYXRhKSB3aXRoXG4gIHwgTm9uZSAtPiBgRmllbGRzIChyZWYgW10pXG4gIHwgU29tZSBjb25zdHIgLT4gYEZvcm1EYXRhIChuZXclanMgY29uc3RyKVxuXG5sZXQgcG9zdF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBsZXQgY29udGVudHMgPSBlbXB0eV9mb3JtX2NvbnRlbnRzICgpIGluXG4gIExpc3QuaXRlciAoYXBwZW5kIGNvbnRlbnRzKSAoZm9ybV9lbGVtZW50cyBmb3JtKTtcbiAgY29udGVudHNcblxubGV0IGdldF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gbmFtZSwgdG9fc3RyaW5nIHNcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgKGZvcm1fZWxlbWVudHMgfmdldDp0cnVlIGZvcm0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgVU5TRU5UXG4gIHwgT1BFTkVEXG4gIHwgSEVBREVSU19SRUNFSVZFRFxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbnR5cGUgXyByZXNwb25zZSA9XG4gIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IE9wdC50IHJlc3BvbnNlXG4gIHwgQmxvYiA6ICNGaWxlLmJsb2IgdCBPcHQudCByZXNwb25zZVxuICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBKU09OIDogJ2EgT3B0LnQgcmVzcG9uc2VcbiAgfCBUZXh0IDoganNfc3RyaW5nIHQgcmVzcG9uc2VcbiAgfCBEZWZhdWx0IDogc3RyaW5nIHJlc3BvbnNlXG5cbmNsYXNzIHR5cGUgeG1sSHR0cFJlcXVlc3QgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25yZWFkeXN0YXRlY2hhbmdlIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfb3BlbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgX29wZW5fZnVsbCA6XG4gICAgICAganNfc3RyaW5nIHRcbiAgICAtPiBqc19zdHJpbmcgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSZXF1ZXN0SGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG92ZXJyaWRlTWltZVR5cGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZCA6IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogI0ZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2RvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZm9ybURhdGEgOiBGb3JtLmZvcm1EYXRhIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXR1c1RleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJlc3BvbnNlSGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXNwb25zZSA6IEZpbGUuZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVRleHQgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVhNTCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb250aW1lb3V0IDpcbiAgICAoJ3NlbGYgdCwgJ3NlbGYgRmlsZS5wcm9ncmVzc0V2ZW50IHQpIERvbS5ldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGxvYWQgOiB4bWxIdHRwUmVxdWVzdFVwbG9hZCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHhtbEh0dHBSZXF1ZXN0VXBsb2FkID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSB4bWxIdHRwUmVxdWVzdCBGaWxlLnByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB0aW1lb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1lb3V0XCJcblxuICBsZXQgbG9hZGVuZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxuZXh0ZXJuYWwgY3JlYXRlIDogdW5pdCAtPiB4bWxIdHRwUmVxdWVzdCBKcy50ID0gXCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVwiXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IE9DYW1sUHJvOiBHcsOpZ29pcmUgSGVucnksIMOHYcSfZGHFnyBCb3ptYW4uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHdvcmtlciA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBlcnJvckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnYiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcG9zdE1lc3NhZ2UgOiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGVybWluYXRlIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGVycm9yRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGluZW5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29sbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IFVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiAnYSByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdvcmtlciA9IFVuc2FmZS5nbG9iYWwjIy5fV29ya2VyXG5cbmxldCBjcmVhdGUgc2NyaXB0ID0gbmV3JWpzIHdvcmtlciAoc3RyaW5nIHNjcmlwdClcblxubGV0IGltcG9ydF9zY3JpcHRzIHNjcmlwdHMgOiB1bml0ID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0cylcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5pbXBvcnRfc2NyaXB0cyBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmZ1bl9jYWxsXG4gICAgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHNcbiAgICAoQXJyYXkubWFwIChmdW4gcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcykpIChBcnJheS5vZl9saXN0IHNjcmlwdHMpKVxuXG5sZXQgc2V0X29ubWVzc2FnZSBoYW5kbGVyID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgbGV0IGpzX2hhbmRsZXIgKGV2IDogJ2EgbWVzc2FnZUV2ZW50IEpzLnQpID0gaGFuZGxlciBldiMjLmRhdGEgaW5cbiAgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSA6PSB3cmFwX2NhbGxiYWNrIGpzX2hhbmRsZXJcblxubGV0IHBvc3RfbWVzc2FnZSBtc2cgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5wb3N0TWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5nbG9iYWwjI3Bvc3RNZXNzYWdlIG1zZ1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKYWNxdWVzLVBhc2NhbCBEZXBsYWl4XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TSU5HXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBjbG9zZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgY29kZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYXNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2FzQ2xlYW4gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB3ZWJTb2NrZXQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHVybCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZEFtb3VudCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBjbG9zZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZXh0ZW5zaW9ucyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlIDogaW50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZUFuZFJlYXNvbiA6IGludCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25tZXNzYWdlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgbWVzc2FnZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiaW5hcnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gIG1ldGhvZCBzZW5kIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogRmlsZS5ibG9iIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHdlYlNvY2tldCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29sID0gd2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29scyA9IHdlYlNvY2tldFxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3Qgd2ViU29ja2V0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbigqKiA1LjEgVHlwZXMgKilcblxudHlwZSBzaXplaSA9IGludFxuXG50eXBlIHNpemVpcHRyID0gaW50XG5cbnR5cGUgaW50cHRyID0gaW50XG5cbnR5cGUgdWludCA9IGludFxuXG50eXBlIGNsYW1wZiA9IG51bWJlcl90XG5cbnR5cGUgdm9pZFxuXG50eXBlIGNsZWFyQnVmZmVyTWFzayA9IGludFxuXG50eXBlIGJlZ2luTW9kZVxuXG50eXBlIGJsZW5kaW5nRmFjdG9yXG5cbnR5cGUgYmxlbmRNb2RlXG5cbnR5cGUgYnVmZmVyVGFyZ2V0XG5cbnR5cGUgYnVmZmVyVXNhZ2VcblxudHlwZSBjdWxsRmFjZU1vZGVcblxudHlwZSBkZXB0aEZ1bmN0aW9uXG5cbnR5cGUgZW5hYmxlQ2FwXG5cbnR5cGUgZXJyb3JDb2RlXG5cbnR5cGUgZnJvbnRGYWNlRGlyXG5cbnR5cGUgaGludFRhcmdldFxuXG50eXBlIGhpbnRNb2RlXG5cbnR5cGUgdGV4dHVyZVVuaXQgPSBpbnRcblxudHlwZSAnYSBwaXhlbFN0b3JlUGFyYW1cblxudHlwZSBzdGVuY2lsT3BcblxudHlwZSBmYlRhcmdldFxuXG50eXBlIGF0dGFjaG1lbnRQb2ludFxuXG50eXBlIHJiVGFyZ2V0XG5cbnR5cGUgdGV4VGFyZ2V0XG5cbnR5cGUgJ2EgcGFyYW1ldGVyXG5cbnR5cGUgJ2EgYnVmZmVyUGFyYW1ldGVyXG5cbnR5cGUgJ2EgdmVydGV4QXR0cmliUGFyYW1cblxudHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW1cblxudHlwZSAnYSBhdHRhY2hQYXJhbVxuXG50eXBlIGZyYW1lYnVmZmVyU3RhdHVzXG5cbnR5cGUgJ2EgcmVuZGVyYnVmZmVyUGFyYW1cblxudHlwZSBmb3JtYXRcblxudHlwZSBwaXhlbEZvcm1hdFxuXG50eXBlIHBpeGVsVHlwZVxuXG50eXBlICdhIHRleFBhcmFtXG5cbnR5cGUgZGF0YVR5cGVcblxudHlwZSBzaGFkZXJUeXBlXG5cbnR5cGUgJ2EgcHJvZ3JhbVBhcmFtXG5cbnR5cGUgJ2Egc2hhZGVyUGFyYW1cblxudHlwZSB0ZXh0dXJlRmlsdGVyXG5cbnR5cGUgd3JhcE1vZGVcblxudHlwZSB0ZXhGaWx0ZXJcblxudHlwZSB1bmlmb3JtVHlwZVxuXG50eXBlIGNvbG9yc3BhY2VDb252ZXJzaW9uXG5cbnR5cGUgc2hhZGVyUHJlY2lzaW9uVHlwZVxuXG50eXBlIG9iamVjdFR5cGVcblxuKCoqIDUuMiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzICopXG5jbGFzcyB0eXBlIGNvbnRleHRBdHRyaWJ1dGVzID0gb2JqZWN0XG4gIG1ldGhvZCBhbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRlcHRoIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3RlbmNpbCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGFudGlhbGlhcyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZW11bHRpcGxpZWRBbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlRHJhd2luZ0J1ZmZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2UgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IDogYm9vbCB0IHByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzID1cbiAgSnMuVW5zYWZlLihcbiAgICBvYmpcbiAgICAgIFt8IFwiYWxwaGFcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcImRlcHRoXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJzdGVuY2lsXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiYW50aWFsaWFzXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJwcmVtdWx0aXBsaWVkQWxwaGFcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICB8XSlcblxudHlwZSBidWZmZXJcblxudHlwZSBmcmFtZWJ1ZmZlclxuXG50eXBlIHByb2dyYW1cblxudHlwZSByZW5kZXJidWZmZXJcblxudHlwZSBzaGFkZXJcblxudHlwZSB0ZXh0dXJlXG5cbnR5cGUgJ2EgdW5pZm9ybUxvY2F0aW9uXG5cbmNsYXNzIHR5cGUgYWN0aXZlSW5mbyA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gb2JqZWN0XG4gIG1ldGhvZCByYW5nZU1pbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlTWF4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlY2lzaW9uIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlbmRlcmluZ0NvbnRleHQgPSBvYmplY3RcbiAgKCoqIDUuMTMuMSBBdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGNhbnZhcyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJXaWR0aCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlckhlaWdodCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICAoKiogNS4xMy4yIEdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRleHQgKilcblxuICBtZXRob2QgZ2V0Q29udGV4dEF0dHJpYnV0ZXMgOiBjb250ZXh0QXR0cmlidXRlcyB0IG1ldGhcblxuICAoKiogNS4xMy4zIFNldHRpbmcgYW5kIGdldHRpbmcgc3RhdGUgKilcblxuICBtZXRob2QgYWN0aXZlVGV4dHVyZSA6IHRleHR1cmVVbml0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZENvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uIDogYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUgOiBibGVuZE1vZGUgLT4gYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmMgOiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jU2VwYXJhdGUgOlxuICAgIGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckNvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRlcHRoIDogY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclN0ZW5jaWwgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbG9yTWFzayA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3VsbEZhY2UgOiBjdWxsRmFjZU1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoTWFzayA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhSYW5nZSA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpc2FibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJvbnRGYWNlIDogZnJvbnRGYWNlRGlyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXJhbWV0ZXIgOiAnYS4gJ2EgcGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0RXJyb3IgOiBlcnJvckNvZGUgbWV0aFxuXG4gIG1ldGhvZCBoaW50IDogaGludFRhcmdldCAtPiBoaW50TW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNFbmFibGVkIDogZW5hYmxlQ2FwIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwaXhlbFN0b3JlaSA6ICdhLiAnYSBwaXhlbFN0b3JlUGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBvbHlnb25PZmZzZXQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2FtcGxlQ292ZXJhZ2UgOiBjbGFtcGYgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2sgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFza1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcCA6IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3BTZXBhcmF0ZSA6XG4gICAgY3VsbEZhY2VNb2RlIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjQgVmlld2luZyBhbmQgY2xpcHBpbmcgKilcblxuICBtZXRob2Qgc2Npc3NvciA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy41IEJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXIgOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXJfIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9jcmVhdGUgOiBidWZmZXJUYXJnZXQgLT4gc2l6ZWlwdHIgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUJ1ZmZlciA6IGJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQnVmZmVyIDogYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJ1ZmZlclBhcmFtZXRlciA6ICdhLiBidWZmZXJUYXJnZXQgLT4gJ2EgYnVmZmVyUGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNCdWZmZXIgOiBidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjYgRnJhbWVidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXIgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXJfIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlclN0YXR1cyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJUZXh0dXJlMkQgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIDpcbiAgICAnYS4gZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+ICdhIGF0dGFjaFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy43IFJlbmRlcmJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXIgOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlcl8gOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlciA6ICdhLiByYlRhcmdldCAtPiAnYSByZW5kZXJidWZmZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcmVuZGVyYnVmZmVyU3RvcmFnZSA6IHJiVGFyZ2V0IC0+IGZvcm1hdCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy44IFRleHR1cmUgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZSA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlXyA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4SW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleEltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gcGl4ZWxGb3JtYXQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhTdWJJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dHVyZSA6IHRleHR1cmUgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdlbmVyYXRlTWlwbWFwIDogdGV4VGFyZ2V0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUZXhQYXJhbWV0ZXIgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1RleHR1cmUgOiB0ZXh0dXJlIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9uZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gdm9pZCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqIHtbXG4gICAgICBtZXRob2QgdGV4UGFyYW1ldGVyZiA6IHRleFRhcmdldCAtPiB0ZXhQYXJhbSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbiAgICAgXX1cbiAgKilcbiAgbWV0aG9kIHRleFBhcmFtZXRlcmkgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjkgUHJvZ3JhbXMgYW5kIFNoYWRlcnMgKilcblxuICBtZXRob2QgYXR0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcGlsZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU2hhZGVyIDogc2hhZGVyVHlwZSAtPiBzaGFkZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dGFjaGVkU2hhZGVycyA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbVBhcmFtZXRlciA6ICdhLiBwcm9ncmFtIHQgLT4gJ2EgcHJvZ3JhbVBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbUluZm9Mb2cgOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQYXJhbWV0ZXIgOiAnYS4gc2hhZGVyIHQgLT4gJ2Egc2hhZGVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgOlxuICAgIHNoYWRlclR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlckluZm9Mb2cgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgaXNQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGlzU2hhZGVyIDogc2hhZGVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGlua1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1c2VQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2YWxpZGF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTAgVW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVBdHRyaWIgOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVVbmlmb3JtIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybSA6ICdhICdiLiBwcm9ncmFtIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtTG9jYXRpb24gOiAnYS4gcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliIDogJ2EuIHVpbnQgLT4gJ2EgdmVydGV4QXR0cmliUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQgOiB1aW50IC0+IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSAtPiBzaXplaXB0ciBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2X3R5cGVkIDpcbiAgICBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaSA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXZfdHlwZWQgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2IDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnZfdHlwZWQgOlxuICAgIFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmkgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXYgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2X3R5cGVkIDpcbiAgICBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnZfdHlwZWQgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdiA6IFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2kgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2IDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdl90eXBlZCA6XG4gICAgWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZiA6XG4gICAgICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdl90eXBlZCA6XG4gICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2IDogWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aSA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2IDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdl90eXBlZCA6XG4gICAgWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnYgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdl90eXBlZCA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdiA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2X3R5cGVkIDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2IDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnZfdHlwZWQgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmIDogdWludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2YgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmIDpcbiAgICB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYlBvaW50ZXIgOlxuICAgIHVpbnQgLT4gaW50IC0+IGRhdGFUeXBlIC0+IGJvb2wgdCAtPiBzaXplaSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTEgV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKilcblxuICBtZXRob2QgY2xlYXIgOiBjbGVhckJ1ZmZlck1hc2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdBcnJheXMgOiBiZWdpbk1vZGUgLT4gaW50IC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3RWxlbWVudHMgOiBiZWdpbk1vZGUgLT4gc2l6ZWkgLT4gZGF0YVR5cGUgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaW5pc2ggOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmx1c2ggOiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMiBSZWFkaW5nIGJhY2sgcGl4ZWxzICopXG5cbiAgbWV0aG9kIHJlYWRQaXhlbHMgOlxuICAgICAgIGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEzIERldGVjdGluZyBjb250ZXh0IGxvc3QgZXZlbnRzICopXG5cbiAgbWV0aG9kIGlzQ29udGV4dExvc3QgOiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjE0IERldGVjdGluZyBhbmQgZW5hYmxpbmcgZXh0ZW5zaW9ucyAqKVxuXG4gIG1ldGhvZCBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVuc2lvbiA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSB0IG9wdCBtZXRoXG5cbiAgKCogVW50eXBlZCEgKilcbiAgKCoqIENvbnN0YW50cyAqKVxuXG4gIG1ldGhvZCBfREVQVEhfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0lOVFMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9MT09QXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX0ZBTl8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVSTyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORSA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV9TQVRVUkFURV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX0FERF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19SRVZFUlNFX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVFJFQU1fRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEFUSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EWU5BTUlDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlQgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkFDSyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9BTkRfQkFDS18gOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORCA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVIgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT19FUlJPUl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9FTlVNXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX1ZBTFVFXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT1VUX09GX01FTU9SWV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OVEVYVF9MT1NUX1dFQkdMXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RPTlRfQ0FSRV8gOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GQVNURVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTklDRVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfIDogaGludFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX1JHQl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX0FMUEhBXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0NPTE9SXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVJfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1dJRFRIXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfTElORV9XSURUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX01PREVfIDogY3VsbEZhY2VNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9GQUNFXyA6IGZyb250RmFjZURpciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1dSSVRFTUFTS18gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NMRUFSX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9GVU5DXyA6IGRlcHRoRnVuY3Rpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQ0xFQVJfVkFMVUVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WSUVXUE9SVCA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9CT1hfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9DTEVBUl9WQUxVRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfV1JJVEVNQVNLXyA6IGJvb2wgdCBqc19hcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UX1BBUkFNIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVklFV1BPUlRfRElNU18gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NVQlBJWEVMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRURfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUVOX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTFVFX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX1VOSVRTXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GQUNUT1JfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR18yRF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0JVRkZFUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogVHlwZWRfYXJyYXkudWludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfUEFSQU1fIDogaGludE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9TSVpFXyA6IGludCBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1VTQUdFXyA6IGJ1ZmZlclVzYWdlIGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CWVRFIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV9EVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIT1JUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfSU5UXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNF80XzRfNF8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV81XzVfMV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV82XzVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRV9BTFBIQV8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQUdNRU5UX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX0FUVFJJQlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WQVJZSU5HX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURFUl9UWVBFXyA6IHNoYWRlclR5cGUgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUElMRV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfUFJPRyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElOS19TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WQUxJREFURV9TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BVFRBQ0hFRF9TSEFERVJTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1VOSUZPUk1TXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX0FUVFJJQlVURVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05fIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfUFJPR1JBTV8gOiBwcm9ncmFtIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRU5ET1IgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSRVIgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSU0lPTiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1RFWFRVUkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9CSU5ESU5HXyA6IGZyYW1lYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQklORElOR18gOiByZW5kZXJidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9SRU5ERVJCVUZGRVJfU0laRSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVWRVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFU1MgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUFURVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PVEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMV0FZUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfS0VFUCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBMQUNFIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZFUlQgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk9fIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1QgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NQUdfRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01JTl9GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9TXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9UXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV8yRF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBFQVQgOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DTEFNUF9UT19FREdFXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01JUlJPUkVEX1JFUEVBVF8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSXzJEXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfQ1VCRV8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJfIDogdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDpcbiAgICBidWZmZXIgdCBvcHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9WRVJURVhfQVRUUklCXyA6XG4gICAgVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUiA6IGZiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUiA6IHJiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkE0IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjVfQTFfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjU2NSA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlQxNl8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWDhfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9XSURUSF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0hFSUdIVF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF8gOiBmb3JtYXQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1JFRF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JMVUVfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXyA6IG9iamVjdFR5cGUgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9SRU5ERVJCVUZGRVIgOlxuICAgIHJlbmRlcmJ1ZmZlciB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfVEVYVFVSRSA6IHRleHR1cmUgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUxfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9BVFRBQ0hNRU5UMF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0NPTVBMRVRFXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMX1BBUkFNIDpcbiAgICBjb2xvcnNwYWNlQ29udmVyc2lvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORSA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JST1dTRVJfREVGQVVMVF9XRUJHTF8gOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIDUuMTQgV2ViR0xDb250ZXh0RXZlbnQgKilcblxuY2xhc3MgdHlwZSBjb250ZXh0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFxuXG4gIG1ldGhvZCBzdGF0dXNNZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgd2ViZ2xjb250ZXh0bG9zdCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRsb3N0XCJcblxuICBsZXQgd2ViZ2xjb250ZXh0cmVzdG9yZWQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JcIlxuZW5kXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dF8gOiBqc19zdHJpbmcgdCAtPiBjb250ZXh0QXR0cmlidXRlcyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBnZXRDb250ZXh0IChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjICMjIChnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikpXG5cbmxldCBnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpIGF0dHJpYnMgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcIndlYmdsXCIpIGF0dHJpYnMgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSBhdHRyaWJzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdCwgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVnZXhwID0gSnMucmVnRXhwIEpzLnRcblxudHlwZSByZXN1bHQgPSBKcy5tYXRjaF9yZXN1bHQgSnMudFxuXG5sZXQgcmVnZXhwIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdpXCIpXG5cbmxldCByZWdleHBfd2l0aF9mbGFnIHMgZiA9XG4gIG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgKFwiZ1wiIF4gZikpXG5cbmxldCBibHVudF9zdHJfYXJyYXlfZ2V0IGEgaSA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBhIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHN0cmluZ19tYXRjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0Lm1hcCAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSkgSnMubWF0Y2hfcmVzdWx0KVxuXG5sZXQgc2VhcmNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uXG4gICAgKEpzLk9wdC5tYXBcbiAgICAgICAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAoZnVuIHJlc19wcmUgLT5cbiAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgcmVzX3ByZSBpblxuICAgICAgICAgcmVzIyMuaW5kZXgsIHJlcykpXG5cbmxldCBzZWFyY2hfZm9yd2FyZCA9IHNlYXJjaFxuXG5sZXQgbWF0Y2hlZF9zdHJpbmcgciA9IGJsdW50X3N0cl9hcnJheV9nZXQgciAwXG5cbmxldCBtYXRjaGVkX2dyb3VwIHIgaSA9XG4gIEpzLk9wdGRlZi50b19vcHRpb24gKEpzLk9wdGRlZi5tYXAgKEpzLmFycmF5X2dldCByIGkpIEpzLnRvX2J5dGVzdHJpbmcpXG5cbmxldCBxdW90ZV9yZXBsX3JlID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlskXVwiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcXVvdGVfcmVwbCBzID0gKEpzLmJ5dGVzdHJpbmcgcykjI3JlcGxhY2UgcXVvdGVfcmVwbF9yZSAoSnMuc3RyaW5nIFwiJCQkJFwiKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgciBzIHNfYnkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgciAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IHJlcGxhY2VfZmlyc3QgciBzIHNfYnkgPVxuICBsZXQgZmxhZ3MgPVxuICAgIG1hdGNoIEpzLnRvX2Jvb2wgciMjLmlnbm9yZUNhc2UsIEpzLnRvX2Jvb2wgciMjLm11bHRpbGluZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiXCJcbiAgICB8IGZhbHNlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1cIlxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiaVwiXG4gICAgfCB0cnVlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1pXCJcbiAgaW5cbiAgbGV0IHInID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgciMjLnNvdXJjZSBmbGFncyBpblxuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHInIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgbGlzdF9vZl9qc19hcnJheSBhID1cbiAgbGV0IHJlYyBhdXggYWNjdSBpZHggPVxuICAgIGlmIGlkeCA8IDAgdGhlbiBhY2N1IGVsc2UgYXV4IChibHVudF9zdHJfYXJyYXlfZ2V0IGEgaWR4IDo6IGFjY3UpIChpZHggLSAxKVxuICBpblxuICBhdXggW10gKGEjIy5sZW5ndGggLSAxKVxuXG5sZXQgc3BsaXQgciBzID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cCByKSlcblxubGV0IGJvdW5kZWRfc3BsaXQgciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwTGltaXRlZCByIGkpKVxuXG4oKiBNb3JlIGNvbnN0cnVjdG9ycyAqKVxuXG5sZXQgcXVvdGVfcmUgPSByZWdleHAgXCJbXFxcXF1bKClcXFxcXFxcXHwrKi4/e31eJF1cIlxuXG5sZXQgcXVvdGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcXVvdGVfcmUgKEpzLnN0cmluZyBcIlxcXFwkJlwiKSlcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IHJlZ2V4cCAocXVvdGUgcylcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSByZWdleHBfY2FzZV9mb2xkIChxdW90ZSBzKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFVybCB0YW1wZXJpbmcuICopXG5cbmxldCBzcGxpdCBjIHMgPSBKcy5zdHJfYXJyYXkgKHMjI3NwbGl0IChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpKVxuXG5sZXQgc3BsaXRfMiBjIHMgPVxuICBsZXQgaW5kZXggPSBzIyNpbmRleE9mIChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpIGluXG4gIGlmIGluZGV4IDwgMCB0aGVuIEpzLnVuZGVmaW5lZCBlbHNlIEpzLmRlZiAocyMjc2xpY2UgMCBpbmRleCwgcyMjc2xpY2VfZW5kIChpbmRleCArIDEpKVxuXG5leGNlcHRpb24gTG9jYWxfZXhuXG5cbmxldCBpbnRlcnJ1cHQgKCkgPSByYWlzZSBMb2NhbF9leG5cblxuKCogdXJsIChBS0EgcGVyY2VudCkgZW5jb2RpbmcvZGVjb2RpbmcgKilcblxubGV0IHBsdXNfcmUgPSBSZWdleHAucmVnZXhwX3N0cmluZyBcIitcIlxuXG5sZXQgZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIlMkJcIlxuXG5sZXQgdW5lc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiBcIlxuXG5sZXQgcGx1c19yZV9qc19zdHJpbmcgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiXFxcXCtcIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMgPVxuICBwbHVzX3JlX2pzX3N0cmluZyMjLmxhc3RJbmRleCA6PSAwO1xuICBzIyNyZXBsYWNlIHBsdXNfcmVfanNfc3RyaW5nIChKcy5zdHJpbmcgXCIgXCIpXG5cbmxldCB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMpKVxuXG5sZXQgdXJsZGVjb2RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAoSnMuYnl0ZXN0cmluZyAodW5lc2NhcGVfcGx1cyBzKSkpXG5cbigqbGV0IHVybGVuY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgcykqKVxuXG5sZXQgdXJsZW5jb2RlID8od2l0aF9wbHVzID0gdHJ1ZSkgcyA9XG4gIGlmIHdpdGhfcGx1c1xuICB0aGVuIGVzY2FwZV9wbHVzIChKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpKVxuICBlbHNlIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSlcblxudHlwZSBodHRwX3VybCA9XG4gIHsgaHVfaG9zdCA6IHN0cmluZyAgKCoqIFRoZSBob3N0IHBhcnQgb2YgdGhlIHVybC4gKilcbiAgOyBodV9wb3J0IDogaW50ICAoKiogVGhlIHBvcnQgZm9yIHRoZSBjb25uZWN0aW9uIGlmIGFueS4gKilcbiAgOyBodV9wYXRoIDogc3RyaW5nIGxpc3QgICgqKiBUaGUgcGF0aCBzcGxpdCBvbiBbJy8nXSBjaGFyYWN0ZXJzLiAqKVxuICA7IGh1X3BhdGhfc3RyaW5nIDogc3RyaW5nICAoKiogVGhlIG9yaWdpbmFsIGVudGlyZSBwYXRoLiAqKVxuICA7IGh1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgKCoqIEFyZ3VtZW50cyBhcyBhIGZpZWxkLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbiBsaXN0LiopXG4gIDsgaHVfZnJhZ21lbnQgOiBzdHJpbmcgICgqKiBUaGUgZnJhZ21lbnQgcGFydCAoYWZ0ZXIgdGhlIFsnIyddIGNoYXJhY3RlcikuICopXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgSFRUUCB1cmwuICopXG5cbnR5cGUgZmlsZV91cmwgPVxuICB7IGZ1X3BhdGggOiBzdHJpbmcgbGlzdFxuICA7IGZ1X3BhdGhfc3RyaW5nIDogc3RyaW5nXG4gIDsgZnVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICA7IGZ1X2ZyYWdtZW50IDogc3RyaW5nXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgbG9jYWwgZmlsZSB1cmxzLiAqKVxuXG50eXBlIHVybCA9XG4gIHwgSHR0cCBvZiBodHRwX3VybFxuICB8IEh0dHBzIG9mIGh0dHBfdXJsXG4gIHwgRmlsZSBvZiBmaWxlX3VybFxuICAgICAgKCoqIFRoZSB0eXBlIGZvciB1cmxzLiBbRmlsZV0gaXMgZm9yIGxvY2FsIGZpbGVzIGFuZCBbRXhvdGljIHNdIGlzIGZvclxuICAgIHVua25vd24vdW5zdXBwb3J0ZWQgcHJvdG9jb2xzLiAqKVxuXG5leGNlcHRpb24gTm90X2FuX2h0dHBfcHJvdG9jb2xcblxubGV0IGlzX3NlY3VyZSBwcm90X3N0cmluZyA9XG4gIG1hdGNoIEpzLnRvX2J5dGVzdHJpbmcgcHJvdF9zdHJpbmcjI3RvTG93ZXJDYXNlIHdpdGhcbiAgfCBcImh0dHBzOlwiIHwgXCJodHRwc1wiIC0+IHRydWVcbiAgfCBcImh0dHA6XCIgfCBcImh0dHBcIiAtPiBmYWxzZVxuICB8IFwiZmlsZTpcIiB8IFwiZmlsZVwiIHwgXyAtPiByYWlzZSBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG4oKiBwb3J0IG51bWJlciAqKVxubGV0IGRlZmF1bHRfaHR0cF9wb3J0ID0gODBcblxubGV0IGRlZmF1bHRfaHR0cHNfcG9ydCA9IDQ0M1xuXG4oKiBwYXRoICopXG5sZXQgcGF0aF9vZl9wYXRoX3N0cmluZyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgbGV0IGogPSB0cnkgU3RyaW5nLmluZGV4X2Zyb20gcyBpICcvJyB3aXRoIE5vdF9mb3VuZCAtPiBsIGluXG4gICAgbGV0IHdvcmQgPSBTdHJpbmcuc3ViIHMgaSAoaiAtIGkpIGluXG4gICAgaWYgaiA+PSBsIHRoZW4gWyB3b3JkIF0gZWxzZSB3b3JkIDo6IGF1eCAoaiArIDEpXG4gIGluXG4gIG1hdGNoIGF1eCAwIHdpdGhcbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFsgXCJcIjsgXCJcIiBdIC0+IFsgXCJcIiBdXG4gIHwgYSAtPiBhXG5cbigqIEFyZ3VtZW50cyAqKVxubGV0IGVuY29kZV9hcmd1bWVudHMgbCA9XG4gIFN0cmluZy5jb25jYXQgXCImXCIgKExpc3QubWFwIChmdW4gKG4sIHYpIC0+IHVybGVuY29kZSBuIF4gXCI9XCIgXiB1cmxlbmNvZGUgdikgbClcblxubGV0IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIHMgPVxuICBsZXQgYXJyID0gc3BsaXQgJyYnIHMgaW5cbiAgbGV0IGxlbiA9IGFyciMjLmxlbmd0aCBpblxuICBsZXQgbmFtZV92YWx1ZV9zcGxpdCBzID0gc3BsaXRfMiAnPScgcyBpblxuICBsZXQgcmVjIGF1eCBhY2MgaWR4ID1cbiAgICBpZiBpZHggPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgYXV4XG4gICAgICAgICAgKEpzLk9wdGRlZi5jYXNlIChKcy5hcnJheV9nZXQgYXJyIGlkeCkgaW50ZXJydXB0IChmdW4gcyAtPlxuICAgICAgICAgICAgICAgSnMuT3B0ZGVmLmNhc2UgKG5hbWVfdmFsdWVfc3BsaXQgcykgaW50ZXJydXB0IChmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgZ2V0IHgsIGdldCB5KSlcbiAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgKHByZWQgaWR4KVxuICAgICAgd2l0aCBMb2NhbF9leG4gLT4gYXV4IGFjYyAocHJlZCBpZHgpXG4gIGluXG4gIGF1eCBbXSAobGVuIC0gMSlcblxubGV0IGRlY29kZV9hcmd1bWVudHMgcyA9IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCB1cmxfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmdcbiAgICAgICBcIl4oW0hoXVtUdF1bVHRdW1BwXVtTc10/KTovLyhbMC05YS16QS1aLi1dK3xcXFxcW1swLTlhLXpBLVouLV0rXFxcXF18XFxcXFtbMC05QS1GYS1mOi5dK1xcXFxdKT8oOihbMC05XSspKT8oLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/KT8kXCIpXG5cbmxldCBmaWxlX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nIFwiXihbRmZdW0lpXVtMbF1bRWVdKTovLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/JFwiKVxuXG5sZXQgdXJsX29mX2pzX3N0cmluZyBzID1cbiAgSnMuT3B0LmNhc2VcbiAgICAodXJsX3JlIyNleGVjIHMpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKGZpbGVfcmUjI2V4ZWMgcylcbiAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChGaWxlXG4gICAgICAgICAgICAgICB7IGZ1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfYXJndW1lbnRzID1cbiAgICAgICAgICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgOyBmdV9mcmFnbWVudCA9XG4gICAgICAgICAgICAgICAgICAgSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgfSkpKVxuICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgbGV0IHNzbCA9IGlzX3NlY3VyZSAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxKSBpbnRlcnJ1cHQpIGluXG4gICAgICBsZXQgcG9ydF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gaWYgc3NsIHRoZW4gNDQzIGVsc2UgODBcbiAgICAgICAgfCBzIC0+IGludF9vZl9zdHJpbmcgc1xuICAgICAgaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgaW5cbiAgICAgIGxldCB1cmwgPVxuICAgICAgICB7IGh1X2hvc3QgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICA7IGh1X3BvcnQgPVxuICAgICAgICAgICAgcG9ydF9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKSlcbiAgICAgICAgOyBodV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICA7IGh1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgOyBodV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgOCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICA7IGh1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEwKSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBTb21lIChpZiBzc2wgdGhlbiBIdHRwcyB1cmwgZWxzZSBIdHRwIHVybCkpXG5cbmxldCB1cmxfb2Zfc3RyaW5nIHMgPSB1cmxfb2ZfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCBzdHJpbmdfb2ZfdXJsID0gZnVuY3Rpb25cbiAgfCBGaWxlIHsgZnVfcGF0aCA9IHBhdGg7IGZ1X2FyZ3VtZW50cyA9IGFyZ3M7IGZ1X2ZyYWdtZW50ID0gZnJhZzsgXyB9IC0+IChcbiAgICAgIFwiZmlsZTovL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cFxuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cDovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA4MCAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwc1xuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cHM6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgNDQzIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuXG5tb2R1bGUgQ3VycmVudCA9IHN0cnVjdFxuICBsZXQgbCA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLk9wdGRlZi5yZXR1cm4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24pXG4gICAgdGhlbiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvblxuICAgIGVsc2VcbiAgICAgIGxldCBlbXB0eSA9IEpzLnN0cmluZyBcIlwiIGluXG4gICAgICBvYmplY3QlanNcbiAgICAgICAgdmFsIG11dGFibGUgaHJlZiA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcHJvdG9jb2wgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3QgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3RuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwb3J0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwYXRobmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgc2VhcmNoID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBoYXNoID0gZW1wdHlcblxuICAgICAgICB2YWwgb3JpZ2luID0gSnMudW5kZWZpbmVkXG5cbiAgICAgICAgbWV0aG9kIHJlbG9hZCA9ICgpXG5cbiAgICAgICAgbWV0aG9kIHJlcGxhY2UgXyA9ICgpXG5cbiAgICAgICAgbWV0aG9kIGFzc2lnbiBfID0gKClcbiAgICAgIGVuZFxuXG4gIGxldCBob3N0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhvc3RuYW1lXG5cbiAgbGV0IHByb3RvY29sID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnByb3RvY29sXG5cbiAgbGV0IHBvcnQgPVxuICAgIChmdW4gKCkgLT5cbiAgICAgIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChKcy50b19ieXRlc3RyaW5nIGwjIy5wb3J0KSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZSlcbiAgICAgICgpXG5cbiAgbGV0IHBhdGhfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnBhdGhuYW1lXG5cbiAgbGV0IHBhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyaW5nXG5cbiAgbGV0IGFyZ3VtZW50cyA9XG4gICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgIChpZiBKcy5lcXVhbHMgKGwjIy5zZWFyY2gjI2NoYXJBdCAwKSAoSnMuc3RyaW5nIFwiP1wiKVxuICAgICAgIHRoZW4gbCMjLnNlYXJjaCMjc2xpY2VfZW5kIDFcbiAgICAgICBlbHNlIGwjIy5zZWFyY2gpXG5cbiAgbGV0IGdldF9mcmFnbWVudCAoKSA9XG4gICAgbGV0IHMgPSBKcy50b19ieXRlc3RyaW5nIGwjIy5oYXNoIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBDaGFyLmVxdWFsIHMuWzBdICcjJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgZWxzZSBzXG5cbiAgbGV0IHNldF9mcmFnbWVudCBzID0gbCMjLmhhc2ggOj0gSnMuYnl0ZXN0cmluZyBzXG5cbiAgbGV0IGdldCAoKSA9IHVybF9vZl9qc19zdHJpbmcgbCMjLmhyZWZcblxuICBsZXQgc2V0IHUgPSBsIyMuaHJlZiA6PSBKcy5ieXRlc3RyaW5nIChzdHJpbmdfb2ZfdXJsIHUpXG5cbiAgbGV0IGFzX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ocmVmXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxubGV0IHVwZGF0ZV9maWxlIH5uYW1lIH5jb250ZW50ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgbmFtZSBpblxuICBvdXRwdXRfc3RyaW5nIG9jIGNvbnRlbnQ7XG4gIGNsb3NlX291dCBvY1xuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDpcbiAgb3V0X2NoYW5uZWwgLT4gKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxubGV0IHNldF9jaGFubmVsX2ZsdXNoZXIgKG91dF9jaGFubmVsIDogb3V0X2NoYW5uZWwpIChmIDogc3RyaW5nIC0+IHVuaXQpID1cbiAgbGV0IGYnIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrID1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gcyAtPiBmIChKcy50b19ieXRlc3RyaW5nIHMpKVxuICBpblxuICBzZXRfY2hhbm5lbF9vdXRwdXQnIG91dF9jaGFubmVsIGYnXG5cbmxldCBzZXRfY2hhbm5lbF9maWxsZXIgKGluX2NoYW5uZWwgOiBpbl9jaGFubmVsKSAoZiA6IHVuaXQgLT4gc3RyaW5nKSA9XG4gIGxldCBmJyA6ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIGYgaW5cbiAgc2V0X2NoYW5uZWxfaW5wdXQnIGluX2NoYW5uZWwgZidcblxuZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG5leHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6XG4gIHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG5sZXQgbW91bnQgfnBhdGggZiA9XG4gIG1vdW50X2F1dG9sb2FkIHBhdGggKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmVmaXggcGF0aCAtPiBmIH5wcmVmaXggfnBhdGgpKVxuXG5sZXQgdW5tb3VudCB+cGF0aCA9IHVubW91bnQgcGF0aFxuXG5sZXQganNfb2Zfb2NhbWxfdmVyc2lvbiA9XG4gIGlmIFN0cmluZy5lcXVhbCBMaWJfdmVyc2lvbi5naXRfdmVyc2lvbiBcIlwiXG4gIHRoZW4gTGliX3ZlcnNpb24uc1xuICBlbHNlIExpYl92ZXJzaW9uLnMgXiBcIitcIiBeIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE5IEFsZXhhbmRlciBZYW5pblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJTaXplID0gb2JqZWN0XG4gIG1ldGhvZCBpbmxpbmVTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBibG9ja1NpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGJveCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvYnNlcnZlX3dpdGhPcHRpb25zIDpcbiAgICAjRG9tLm5vZGUgSnMudCAtPiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgOiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1Jlc2l6ZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCByZXNpemVPYnNlcnZlclxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgOlxuICAgICggICAocmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiByZXNpemVPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHJlc2l6ZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogcmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oYm94IDogSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uKVxuICAgICgpIDogcmVzaXplT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvYnMgPSBuZXclanMgcmVzaXplT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgKG1hdGNoIGJveCB3aXRoXG4gIHwgTm9uZSAtPiBvYnMjI29ic2VydmUgbm9kZVxuICB8IFNvbWUgYm94IC0+XG4gICAgICBsZXQgb3B0cyA9IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIGluXG4gICAgICBvcHRzIyMuYm94IDo9IGJveDtcbiAgICAgIG9icyMjb2JzZXJ2ZV93aXRoT3B0aW9ucyBub2RlIG9wdHMpO1xuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjEgUGhpbGlwIFdoaXRlXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBlbnRyeVR5cGVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW50cnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydFRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCA9IG9iamVjdFxuICBtZXRob2QgZ2V0RW50cmllcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9QZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyIDpcbiAgICAoICAgKHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgSnMudCAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IG9ic2VydmUgfmVudHJ5X3R5cGVzIH5mID1cbiAgbGV0IGVudHJ5X3R5cGVzID0gZW50cnlfdHlwZXMgfD4gTGlzdC5tYXAgSnMuc3RyaW5nIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgaW5cbiAgbGV0IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGxldCAoKSA9IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQjIy5lbnRyeVR5cGVzIDo9IGVudHJ5X3R5cGVzIGluXG4gIGxldCBvYnMgPSBuZXclanMgcGVyZm9ybWFuY2VPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBjaGlsZExpc3QgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGEgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YnRyZWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZUZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uUmVjb3JkID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZGVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbW92ZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWVzcGFjZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSA6IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX011dGF0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAobXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGNoaWxkX2xpc3QgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZXMgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhIDogYm9vbCBvcHRpb24pXG4gICAgPyhzdWJ0cmVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9maWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0IG9wdGlvbilcbiAgICAoKSA6IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvcHRfaXRlciB4IGYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb2JzID0gbmV3JWpzIG11dGF0aW9uT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0IGNmZyA9IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hpbGRfbGlzdCAoZnVuIHYgLT4gY2ZnIyMuY2hpbGRMaXN0IDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZXMgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZXMgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGEgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGEgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgc3VidHJlZSAoZnVuIHYgLT4gY2ZnIyMuc3VidHJlZSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVPbGRWYWx1ZSA6PSB2KSBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDo9IHYpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgYXR0cmlidXRlX2ZpbHRlciAoZnVuIGwgLT5cbiAgICAgICAgY2ZnIyMuYXR0cmlidXRlRmlsdGVyIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IGwpKVxuICBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgbm9kZSBjZmcgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IFBpZXJyZSBDaGFtYmFydCAyMDEyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9IDwgPiBKcy50XG5cbmxldCBvYmogPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpICh2IDogJ2EpID1cbiAgKCogJ18nIGlzIGFkZGVkIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG9iamVjdHMgbWV0aG9kcyAqKVxuICBKcy5VbnNhZmUuc2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSkgdlxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgPVxuICBKcy5VbnNhZmUuZGVsZXRlIHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA6ICdhIEpzLk9wdGRlZi50ID1cbiAgSnMuVW5zYWZlLmdldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0ID1cbiAgbGV0IGtleV9hcnJheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0IyNrZXlzIHRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gcHJlZCBrZXlfYXJyYXkjIy5sZW5ndGggZG9cbiAgICBsZXQga2V5ID1cbiAgICAgIEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBrZXlfYXJyYXkgaSkgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIkpzdGFibGUua2V5c1wiKVxuICAgIGluXG4gICAgcmVzIDo9IGtleSMjc3Vic3RyaW5nIDAgKHByZWQga2V5IyMubGVuZ3RoKSA6OiAhcmVzXG4gIGRvbmU7XG4gIExpc3QucmV2ICFyZXNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgR3LDqWdvaXJlIEhlbnJ5IDIwMTAuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcGFyc2VfIDpcbiAgICAnYSAnYiAnYyAnZC4ganNfc3RyaW5nIHQgLT4gKCdiIHQsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5XyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuICdhIC0+ICgnYiwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBqc29uIDoganNvbiBKcy50ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBpbnB1dF9yZXZpdmVyID1cbiAgbGV0IHJldml2ZXIgX3RoaXMgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiB2YWx1ZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gT2JqLnJlcHIgKHRvX2J5dGVzdHJpbmcgKFVuc2FmZS5jb2VyY2UgdmFsdWUpKVxuICAgIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBKcy5hcnJheV9lbXB0eVxuICAgICAgICAgICAgJiYgKFVuc2FmZS5jb2VyY2UgdmFsdWUpIyMubGVuZ3RoID09IDRcbiAgICAgICAgICAgICYmIFVuc2FmZS5nZXQgdmFsdWUgMCA9PSAyNTVcbiAgICB0aGVuXG4gICAgICBPYmoucmVwclxuICAgICAgICAoSnNvb19ydW50aW1lLkludDY0LmNyZWF0ZV9pbnQ2NF9sb19taV9oaVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAxKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAyKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAzKSlcbiAgICBlbHNlIE9iai5yZXByIHZhbHVlXG4gIGluXG4gIHdyYXBfbWV0aF9jYWxsYmFjayByZXZpdmVyXG5cbmxldCB1bnNhZmVfaW5wdXQgcyA9IGpzb24jI3BhcnNlXyBzIGlucHV0X3Jldml2ZXJcblxuY2xhc3MgdHlwZSBvYmogPSBvYmplY3RcbiAgbWV0aG9kIGNvbnN0cnVjdG9yIDogJ2EuICdhIGNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG1sSW50NjRfY29uc3RyID1cbiAgbGV0IGR1bW15X2ludDY0ID0gMUwgaW5cbiAgbGV0IGR1bW15X29iaiA6IG9iaiB0ID0gT2JqLm1hZ2ljIGR1bW15X2ludDY0IGluXG4gIGR1bW15X29iaiMjLmNvbnN0cnVjdG9yXG5cbmxldCBvdXRwdXRfcmV2aXZlciBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICBpZiBPYmoudGFnIChPYmoucmVwciB2YWx1ZSkgPSBPYmouc3RyaW5nX3RhZ1xuICB0aGVuIE9iai5yZXByIChieXRlc3RyaW5nIChPYmoubWFnaWMgdmFsdWUgOiBzdHJpbmcpKVxuICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgbWxJbnQ2NF9jb25zdHJcbiAgdGhlblxuICAgIGxldCB2YWx1ZSA9IFVuc2FmZS5jb2VyY2UgdmFsdWUgaW5cbiAgICBPYmoucmVwciAoYXJyYXkgW3wgMjU1OyB2YWx1ZSMjLmxvOyB2YWx1ZSMjLm1pOyB2YWx1ZSMjLmhpIHxdKVxuICBlbHNlIE9iai5yZXByIHZhbHVlXG5cbmxldCBvdXRwdXQgb2JqID0ganNvbiMjc3RyaW5naWZ5XyBvYmogKEpzLndyYXBfY2FsbGJhY2sgb3V0cHV0X3Jldml2ZXIpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgKCogVGhlIHR5cGUgb2YgQ1NTIGNvbG9ycy4gRmlyc3QgYnkgbmFtZSBhbmQgdGhlbiBieSBjb25zdHJ1Y3Rvci4gKilcbiAgdHlwZSBuYW1lID1cbiAgICB8IEFsaWNlYmx1ZVxuICAgIHwgQW50aXF1ZXdoaXRlXG4gICAgfCBBcXVhXG4gICAgfCBBcXVhbWFyaW5lXG4gICAgfCBBenVyZVxuICAgIHwgQmVpZ2VcbiAgICB8IEJpc3F1ZVxuICAgIHwgQmxhY2tcbiAgICB8IEJsYW5jaGVkYWxtb25kXG4gICAgfCBCbHVlXG4gICAgfCBCbHVldmlvbGV0XG4gICAgfCBCcm93blxuICAgIHwgQnVybHl3b29kXG4gICAgfCBDYWRldGJsdWVcbiAgICB8IENoYXJ0cmV1c2VcbiAgICB8IENob2NvbGF0ZVxuICAgIHwgQ29yYWxcbiAgICB8IENvcm5mbG93ZXJibHVlXG4gICAgfCBDb3Juc2lsa1xuICAgIHwgQ3JpbXNvblxuICAgIHwgQ3lhblxuICAgIHwgRGFya2JsdWVcbiAgICB8IERhcmtjeWFuXG4gICAgfCBEYXJrZ29sZGVucm9kXG4gICAgfCBEYXJrZ3JheVxuICAgIHwgRGFya2dyZWVuXG4gICAgfCBEYXJrZ3JleVxuICAgIHwgRGFya2toYWtpXG4gICAgfCBEYXJrbWFnZW50YVxuICAgIHwgRGFya29saXZlZ3JlZW5cbiAgICB8IERhcmtvcmFuZ2VcbiAgICB8IERhcmtvcmNoaWRcbiAgICB8IERhcmtyZWRcbiAgICB8IERhcmtzYWxtb25cbiAgICB8IERhcmtzZWFncmVlblxuICAgIHwgRGFya3NsYXRlYmx1ZVxuICAgIHwgRGFya3NsYXRlZ3JheVxuICAgIHwgRGFya3NsYXRlZ3JleVxuICAgIHwgRGFya3R1cnF1b2lzZVxuICAgIHwgRGFya3Zpb2xldFxuICAgIHwgRGVlcHBpbmtcbiAgICB8IERlZXBza3libHVlXG4gICAgfCBEaW1ncmF5XG4gICAgfCBEaW1ncmV5XG4gICAgfCBEb2RnZXJibHVlXG4gICAgfCBGaXJlYnJpY2tcbiAgICB8IEZsb3JhbHdoaXRlXG4gICAgfCBGb3Jlc3RncmVlblxuICAgIHwgRnVjaHNpYVxuICAgIHwgR2FpbnNib3JvXG4gICAgfCBHaG9zdHdoaXRlXG4gICAgfCBHb2xkXG4gICAgfCBHb2xkZW5yb2RcbiAgICB8IEdyYXlcbiAgICB8IEdyZXlcbiAgICB8IEdyZWVuXG4gICAgfCBHcmVlbnllbGxvd1xuICAgIHwgSG9uZXlkZXdcbiAgICB8IEhvdHBpbmtcbiAgICB8IEluZGlhbnJlZFxuICAgIHwgSW5kaWdvXG4gICAgfCBJdm9yeVxuICAgIHwgS2hha2lcbiAgICB8IExhdmVuZGVyXG4gICAgfCBMYXZlbmRlcmJsdXNoXG4gICAgfCBMYXduZ3JlZW5cbiAgICB8IExlbW9uY2hpZmZvblxuICAgIHwgTGlnaHRibHVlXG4gICAgfCBMaWdodGNvcmFsXG4gICAgfCBMaWdodGN5YW5cbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBMaWdodGdyYXlcbiAgICB8IExpZ2h0Z3JlZW5cbiAgICB8IExpZ2h0Z3JleVxuICAgIHwgTGlnaHRwaW5rXG4gICAgfCBMaWdodHNhbG1vblxuICAgIHwgTGlnaHRzZWFncmVlblxuICAgIHwgTGlnaHRza3libHVlXG4gICAgfCBMaWdodHNsYXRlZ3JheVxuICAgIHwgTGlnaHRzbGF0ZWdyZXlcbiAgICB8IExpZ2h0c3RlZWxibHVlXG4gICAgfCBMaWdodHllbGxvd1xuICAgIHwgTGltZVxuICAgIHwgTGltZWdyZWVuXG4gICAgfCBMaW5lblxuICAgIHwgTWFnZW50YVxuICAgIHwgTWFyb29uXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBNZWRpdW1ibHVlXG4gICAgfCBNZWRpdW1vcmNoaWRcbiAgICB8IE1lZGl1bXB1cnBsZVxuICAgIHwgTWVkaXVtc2VhZ3JlZW5cbiAgICB8IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBNaWRuaWdodGJsdWVcbiAgICB8IE1pbnRjcmVhbVxuICAgIHwgTWlzdHlyb3NlXG4gICAgfCBNb2NjYXNpblxuICAgIHwgTmF2YWpvd2hpdGVcbiAgICB8IE5hdnlcbiAgICB8IE9sZGxhY2VcbiAgICB8IE9saXZlXG4gICAgfCBPbGl2ZWRyYWJcbiAgICB8IE9yYW5nZVxuICAgIHwgT3JhbmdlcmVkXG4gICAgfCBPcmNoaWRcbiAgICB8IFBhbGVnb2xkZW5yb2RcbiAgICB8IFBhbGVncmVlblxuICAgIHwgUGFsZXR1cnF1b2lzZVxuICAgIHwgUGFsZXZpb2xldHJlZFxuICAgIHwgUGFwYXlhd2hpcFxuICAgIHwgUGVhY2hwdWZmXG4gICAgfCBQZXJ1XG4gICAgfCBQaW5rXG4gICAgfCBQbHVtXG4gICAgfCBQb3dkZXJibHVlXG4gICAgfCBQdXJwbGVcbiAgICB8IFJlZFxuICAgIHwgUm9zeWJyb3duXG4gICAgfCBSb3lhbGJsdWVcbiAgICB8IFNhZGRsZWJyb3duXG4gICAgfCBTYWxtb25cbiAgICB8IFNhbmR5YnJvd25cbiAgICB8IFNlYWdyZWVuXG4gICAgfCBTZWFzaGVsbFxuICAgIHwgU2llbm5hXG4gICAgfCBTaWx2ZXJcbiAgICB8IFNreWJsdWVcbiAgICB8IFNsYXRlYmx1ZVxuICAgIHwgU2xhdGVncmF5XG4gICAgfCBTbGF0ZWdyZXlcbiAgICB8IFNub3dcbiAgICB8IFNwcmluZ2dyZWVuXG4gICAgfCBTdGVlbGJsdWVcbiAgICB8IFRhblxuICAgIHwgVGVhbFxuICAgIHwgVGhpc3RsZVxuICAgIHwgVG9tYXRvXG4gICAgfCBUdXJxdW9pc2VcbiAgICB8IFZpb2xldFxuICAgIHwgV2hlYXRcbiAgICB8IFdoaXRlXG4gICAgfCBXaGl0ZXNtb2tlXG4gICAgfCBZZWxsb3dcbiAgICB8IFllbGxvd2dyZWVuXG5cbiAgbGV0IHN0cmluZ19vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiBcImFsaWNlYmx1ZVwiXG4gICAgfCBBbnRpcXVld2hpdGUgLT4gXCJhbnRpcXVld2hpdGVcIlxuICAgIHwgQXF1YSAtPiBcImFxdWFcIlxuICAgIHwgQXF1YW1hcmluZSAtPiBcImFxdWFtYXJpbmVcIlxuICAgIHwgQXp1cmUgLT4gXCJhenVyZVwiXG4gICAgfCBCZWlnZSAtPiBcImJlaWdlXCJcbiAgICB8IEJpc3F1ZSAtPiBcImJpc3F1ZVwiXG4gICAgfCBCbGFjayAtPiBcImJsYWNrXCJcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgIHwgQmx1ZSAtPiBcImJsdWVcIlxuICAgIHwgQmx1ZXZpb2xldCAtPiBcImJsdWV2aW9sZXRcIlxuICAgIHwgQnJvd24gLT4gXCJicm93blwiXG4gICAgfCBCdXJseXdvb2QgLT4gXCJidXJseXdvb2RcIlxuICAgIHwgQ2FkZXRibHVlIC0+IFwiY2FkZXRibHVlXCJcbiAgICB8IENoYXJ0cmV1c2UgLT4gXCJjaGFydHJldXNlXCJcbiAgICB8IENob2NvbGF0ZSAtPiBcImNob2NvbGF0ZVwiXG4gICAgfCBDb3JhbCAtPiBcImNvcmFsXCJcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgIHwgQ29ybnNpbGsgLT4gXCJjb3Juc2lsa1wiXG4gICAgfCBDcmltc29uIC0+IFwiY3JpbXNvblwiXG4gICAgfCBDeWFuIC0+IFwiY3lhblwiXG4gICAgfCBEYXJrYmx1ZSAtPiBcImRhcmtibHVlXCJcbiAgICB8IERhcmtjeWFuIC0+IFwiZGFya2N5YW5cIlxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiBcImRhcmtnb2xkZW5yb2RcIlxuICAgIHwgRGFya2dyYXkgLT4gXCJkYXJrZ3JheVwiXG4gICAgfCBEYXJrZ3JlZW4gLT4gXCJkYXJrZ3JlZW5cIlxuICAgIHwgRGFya2dyZXkgLT4gXCJkYXJrZ3JleVwiXG4gICAgfCBEYXJra2hha2kgLT4gXCJkYXJra2hha2lcIlxuICAgIHwgRGFya21hZ2VudGEgLT4gXCJkYXJrbWFnZW50YVwiXG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICB8IERhcmtvcmFuZ2UgLT4gXCJkYXJrb3JhbmdlXCJcbiAgICB8IERhcmtvcmNoaWQgLT4gXCJkYXJrb3JjaGlkXCJcbiAgICB8IERhcmtyZWQgLT4gXCJkYXJrcmVkXCJcbiAgICB8IERhcmtzYWxtb24gLT4gXCJkYXJrc2FsbW9uXCJcbiAgICB8IERhcmtzZWFncmVlbiAtPiBcImRhcmtzZWFncmVlblwiXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgfCBEYXJrdmlvbGV0IC0+IFwiZGFya3Zpb2xldFwiXG4gICAgfCBEZWVwcGluayAtPiBcImRlZXBwaW5rXCJcbiAgICB8IERlZXBza3libHVlIC0+IFwiZGVlcHNreWJsdWVcIlxuICAgIHwgRGltZ3JheSAtPiBcImRpbWdyYXlcIlxuICAgIHwgRGltZ3JleSAtPiBcImRpbWdyZXlcIlxuICAgIHwgRG9kZ2VyYmx1ZSAtPiBcImRvZGdlcmJsdWVcIlxuICAgIHwgRmlyZWJyaWNrIC0+IFwiZmlyZWJyaWNrXCJcbiAgICB8IEZsb3JhbHdoaXRlIC0+IFwiZmxvcmFsd2hpdGVcIlxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gXCJmb3Jlc3RncmVlblwiXG4gICAgfCBGdWNoc2lhIC0+IFwiZnVjaHNpYVwiXG4gICAgfCBHYWluc2Jvcm8gLT4gXCJnYWluc2Jvcm9cIlxuICAgIHwgR2hvc3R3aGl0ZSAtPiBcImdob3N0d2hpdGVcIlxuICAgIHwgR29sZCAtPiBcImdvbGRcIlxuICAgIHwgR29sZGVucm9kIC0+IFwiZ29sZGVucm9kXCJcbiAgICB8IEdyYXkgLT4gXCJncmF5XCJcbiAgICB8IEdyZWVuIC0+IFwiZ3JlZW5cIlxuICAgIHwgR3JlZW55ZWxsb3cgLT4gXCJncmVlbnllbGxvd1wiXG4gICAgfCBHcmV5IC0+IFwiZ3JleVwiXG4gICAgfCBIb25leWRldyAtPiBcImhvbmV5ZGV3XCJcbiAgICB8IEhvdHBpbmsgLT4gXCJob3RwaW5rXCJcbiAgICB8IEluZGlhbnJlZCAtPiBcImluZGlhbnJlZFwiXG4gICAgfCBJbmRpZ28gLT4gXCJpbmRpZ29cIlxuICAgIHwgSXZvcnkgLT4gXCJpdm9yeVwiXG4gICAgfCBLaGFraSAtPiBcImtoYWtpXCJcbiAgICB8IExhdmVuZGVyIC0+IFwibGF2ZW5kZXJcIlxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiBcImxhdmVuZGVyYmx1c2hcIlxuICAgIHwgTGF3bmdyZWVuIC0+IFwibGF3bmdyZWVuXCJcbiAgICB8IExlbW9uY2hpZmZvbiAtPiBcImxlbW9uY2hpZmZvblwiXG4gICAgfCBMaWdodGJsdWUgLT4gXCJsaWdodGJsdWVcIlxuICAgIHwgTGlnaHRjb3JhbCAtPiBcImxpZ2h0Y29yYWxcIlxuICAgIHwgTGlnaHRjeWFuIC0+IFwibGlnaHRjeWFuXCJcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgIHwgTGlnaHRncmF5IC0+IFwibGlnaHRncmF5XCJcbiAgICB8IExpZ2h0Z3JlZW4gLT4gXCJsaWdodGdyZWVuXCJcbiAgICB8IExpZ2h0Z3JleSAtPiBcImxpZ2h0Z3JleVwiXG4gICAgfCBMaWdodHBpbmsgLT4gXCJsaWdodHBpbmtcIlxuICAgIHwgTGlnaHRzYWxtb24gLT4gXCJsaWdodHNhbG1vblwiXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IFwibGlnaHRzZWFncmVlblwiXG4gICAgfCBMaWdodHNreWJsdWUgLT4gXCJsaWdodHNreWJsdWVcIlxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gXCJsaWdodHllbGxvd1wiXG4gICAgfCBMaW1lIC0+IFwibGltZVwiXG4gICAgfCBMaW1lZ3JlZW4gLT4gXCJsaW1lZ3JlZW5cIlxuICAgIHwgTGluZW4gLT4gXCJsaW5lblwiXG4gICAgfCBNYWdlbnRhIC0+IFwibWFnZW50YVwiXG4gICAgfCBNYXJvb24gLT4gXCJtYXJvb25cIlxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgIHwgTWVkaXVtYmx1ZSAtPiBcIm1lZGl1bWJsdWVcIlxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IFwibWVkaXVtb3JjaGlkXCJcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiBcIm1lZGl1bXB1cnBsZVwiXG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgIHwgTWlkbmlnaHRibHVlIC0+IFwibWlkbmlnaHRibHVlXCJcbiAgICB8IE1pbnRjcmVhbSAtPiBcIm1pbnRjcmVhbVwiXG4gICAgfCBNaXN0eXJvc2UgLT4gXCJtaXN0eXJvc2VcIlxuICAgIHwgTW9jY2FzaW4gLT4gXCJtb2NjYXNpblwiXG4gICAgfCBOYXZham93aGl0ZSAtPiBcIm5hdmFqb3doaXRlXCJcbiAgICB8IE5hdnkgLT4gXCJuYXZ5XCJcbiAgICB8IE9sZGxhY2UgLT4gXCJvbGRsYWNlXCJcbiAgICB8IE9saXZlIC0+IFwib2xpdmVcIlxuICAgIHwgT2xpdmVkcmFiIC0+IFwib2xpdmVkcmFiXCJcbiAgICB8IE9yYW5nZSAtPiBcIm9yYW5nZVwiXG4gICAgfCBPcmFuZ2VyZWQgLT4gXCJvcmFuZ2VyZWRcIlxuICAgIHwgT3JjaGlkIC0+IFwib3JjaGlkXCJcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gXCJwYWxlZ29sZGVucm9kXCJcbiAgICB8IFBhbGVncmVlbiAtPiBcInBhbGVncmVlblwiXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IFwicGFsZXZpb2xldHJlZFwiXG4gICAgfCBQYXBheWF3aGlwIC0+IFwicGFwYXlhd2hpcFwiXG4gICAgfCBQZWFjaHB1ZmYgLT4gXCJwZWFjaHB1ZmZcIlxuICAgIHwgUGVydSAtPiBcInBlcnVcIlxuICAgIHwgUGluayAtPiBcInBpbmtcIlxuICAgIHwgUGx1bSAtPiBcInBsdW1cIlxuICAgIHwgUG93ZGVyYmx1ZSAtPiBcInBvd2RlcmJsdWVcIlxuICAgIHwgUHVycGxlIC0+IFwicHVycGxlXCJcbiAgICB8IFJlZCAtPiBcInJlZFwiXG4gICAgfCBSb3N5YnJvd24gLT4gXCJyb3N5YnJvd25cIlxuICAgIHwgUm95YWxibHVlIC0+IFwicm95YWxibHVlXCJcbiAgICB8IFNhZGRsZWJyb3duIC0+IFwic2FkZGxlYnJvd25cIlxuICAgIHwgU2FsbW9uIC0+IFwic2FsbW9uXCJcbiAgICB8IFNhbmR5YnJvd24gLT4gXCJzYW5keWJyb3duXCJcbiAgICB8IFNlYWdyZWVuIC0+IFwic2VhZ3JlZW5cIlxuICAgIHwgU2Vhc2hlbGwgLT4gXCJzZWFzaGVsbFwiXG4gICAgfCBTaWVubmEgLT4gXCJzaWVubmFcIlxuICAgIHwgU2lsdmVyIC0+IFwic2lsdmVyXCJcbiAgICB8IFNreWJsdWUgLT4gXCJza3libHVlXCJcbiAgICB8IFNsYXRlYmx1ZSAtPiBcInNsYXRlYmx1ZVwiXG4gICAgfCBTbGF0ZWdyYXkgLT4gXCJzbGF0ZWdyYXlcIlxuICAgIHwgU2xhdGVncmV5IC0+IFwic2xhdGVncmV5XCJcbiAgICB8IFNub3cgLT4gXCJzbm93XCJcbiAgICB8IFNwcmluZ2dyZWVuIC0+IFwic3ByaW5nZ3JlZW5cIlxuICAgIHwgU3RlZWxibHVlIC0+IFwic3RlZWxibHVlXCJcbiAgICB8IFRhbiAtPiBcInRhblwiXG4gICAgfCBUZWFsIC0+IFwidGVhbFwiXG4gICAgfCBUaGlzdGxlIC0+IFwidGhpc3RsZVwiXG4gICAgfCBUb21hdG8gLT4gXCJ0b21hdG9cIlxuICAgIHwgVHVycXVvaXNlIC0+IFwidHVycXVvaXNlXCJcbiAgICB8IFZpb2xldCAtPiBcInZpb2xldFwiXG4gICAgfCBXaGVhdCAtPiBcIndoZWF0XCJcbiAgICB8IFdoaXRlIC0+IFwid2hpdGVcIlxuICAgIHwgV2hpdGVzbW9rZSAtPiBcIndoaXRlc21va2VcIlxuICAgIHwgWWVsbG93IC0+IFwieWVsbG93XCJcbiAgICB8IFllbGxvd2dyZWVuIC0+IFwieWVsbG93Z3JlZW5cIlxuXG4gIGxldCBuYW1lX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcImFsaWNlYmx1ZVwiIC0+IEFsaWNlYmx1ZVxuICAgIHwgXCJhbnRpcXVld2hpdGVcIiAtPiBBbnRpcXVld2hpdGVcbiAgICB8IFwiYXF1YVwiIC0+IEFxdWFcbiAgICB8IFwiYXF1YW1hcmluZVwiIC0+IEFxdWFtYXJpbmVcbiAgICB8IFwiYXp1cmVcIiAtPiBBenVyZVxuICAgIHwgXCJiZWlnZVwiIC0+IEJlaWdlXG4gICAgfCBcImJpc3F1ZVwiIC0+IEJpc3F1ZVxuICAgIHwgXCJibGFja1wiIC0+IEJsYWNrXG4gICAgfCBcImJsYW5jaGVkYWxtb25kXCIgLT4gQmxhbmNoZWRhbG1vbmRcbiAgICB8IFwiYmx1ZVwiIC0+IEJsdWVcbiAgICB8IFwiYmx1ZXZpb2xldFwiIC0+IEJsdWV2aW9sZXRcbiAgICB8IFwiYnJvd25cIiAtPiBCcm93blxuICAgIHwgXCJidXJseXdvb2RcIiAtPiBCdXJseXdvb2RcbiAgICB8IFwiY2FkZXRibHVlXCIgLT4gQ2FkZXRibHVlXG4gICAgfCBcImNoYXJ0cmV1c2VcIiAtPiBDaGFydHJldXNlXG4gICAgfCBcImNob2NvbGF0ZVwiIC0+IENob2NvbGF0ZVxuICAgIHwgXCJjb3JhbFwiIC0+IENvcmFsXG4gICAgfCBcImNvcm5mbG93ZXJibHVlXCIgLT4gQ29ybmZsb3dlcmJsdWVcbiAgICB8IFwiY29ybnNpbGtcIiAtPiBDb3Juc2lsa1xuICAgIHwgXCJjcmltc29uXCIgLT4gQ3JpbXNvblxuICAgIHwgXCJjeWFuXCIgLT4gQ3lhblxuICAgIHwgXCJkYXJrYmx1ZVwiIC0+IERhcmtibHVlXG4gICAgfCBcImRhcmtjeWFuXCIgLT4gRGFya2N5YW5cbiAgICB8IFwiZGFya2dvbGRlbnJvZFwiIC0+IERhcmtnb2xkZW5yb2RcbiAgICB8IFwiZGFya2dyYXlcIiAtPiBEYXJrZ3JheVxuICAgIHwgXCJkYXJrZ3JlZW5cIiAtPiBEYXJrZ3JlZW5cbiAgICB8IFwiZGFya2dyZXlcIiAtPiBEYXJrZ3JleVxuICAgIHwgXCJkYXJra2hha2lcIiAtPiBEYXJra2hha2lcbiAgICB8IFwiZGFya21hZ2VudGFcIiAtPiBEYXJrbWFnZW50YVxuICAgIHwgXCJkYXJrb2xpdmVncmVlblwiIC0+IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBcImRhcmtvcmFuZ2VcIiAtPiBEYXJrb3JhbmdlXG4gICAgfCBcImRhcmtvcmNoaWRcIiAtPiBEYXJrb3JjaGlkXG4gICAgfCBcImRhcmtyZWRcIiAtPiBEYXJrcmVkXG4gICAgfCBcImRhcmtzYWxtb25cIiAtPiBEYXJrc2FsbW9uXG4gICAgfCBcImRhcmtzZWFncmVlblwiIC0+IERhcmtzZWFncmVlblxuICAgIHwgXCJkYXJrc2xhdGVibHVlXCIgLT4gRGFya3NsYXRlYmx1ZVxuICAgIHwgXCJkYXJrc2xhdGVncmF5XCIgLT4gRGFya3NsYXRlZ3JheVxuICAgIHwgXCJkYXJrc2xhdGVncmV5XCIgLT4gRGFya3NsYXRlZ3JleVxuICAgIHwgXCJkYXJrdHVycXVvaXNlXCIgLT4gRGFya3R1cnF1b2lzZVxuICAgIHwgXCJkYXJrdmlvbGV0XCIgLT4gRGFya3Zpb2xldFxuICAgIHwgXCJkZWVwcGlua1wiIC0+IERlZXBwaW5rXG4gICAgfCBcImRlZXBza3libHVlXCIgLT4gRGVlcHNreWJsdWVcbiAgICB8IFwiZGltZ3JheVwiIC0+IERpbWdyYXlcbiAgICB8IFwiZGltZ3JleVwiIC0+IERpbWdyZXlcbiAgICB8IFwiZG9kZ2VyYmx1ZVwiIC0+IERvZGdlcmJsdWVcbiAgICB8IFwiZmlyZWJyaWNrXCIgLT4gRmlyZWJyaWNrXG4gICAgfCBcImZsb3JhbHdoaXRlXCIgLT4gRmxvcmFsd2hpdGVcbiAgICB8IFwiZm9yZXN0Z3JlZW5cIiAtPiBGb3Jlc3RncmVlblxuICAgIHwgXCJmdWNoc2lhXCIgLT4gRnVjaHNpYVxuICAgIHwgXCJnYWluc2Jvcm9cIiAtPiBHYWluc2Jvcm9cbiAgICB8IFwiZ2hvc3R3aGl0ZVwiIC0+IEdob3N0d2hpdGVcbiAgICB8IFwiZ29sZFwiIC0+IEdvbGRcbiAgICB8IFwiZ29sZGVucm9kXCIgLT4gR29sZGVucm9kXG4gICAgfCBcImdyYXlcIiAtPiBHcmF5XG4gICAgfCBcImdyZWVuXCIgLT4gR3JlZW5cbiAgICB8IFwiZ3JlZW55ZWxsb3dcIiAtPiBHcmVlbnllbGxvd1xuICAgIHwgXCJncmV5XCIgLT4gR3JleVxuICAgIHwgXCJob25leWRld1wiIC0+IEhvbmV5ZGV3XG4gICAgfCBcImhvdHBpbmtcIiAtPiBIb3RwaW5rXG4gICAgfCBcImluZGlhbnJlZFwiIC0+IEluZGlhbnJlZFxuICAgIHwgXCJpbmRpZ29cIiAtPiBJbmRpZ29cbiAgICB8IFwiaXZvcnlcIiAtPiBJdm9yeVxuICAgIHwgXCJraGFraVwiIC0+IEtoYWtpXG4gICAgfCBcImxhdmVuZGVyXCIgLT4gTGF2ZW5kZXJcbiAgICB8IFwibGF2ZW5kZXJibHVzaFwiIC0+IExhdmVuZGVyYmx1c2hcbiAgICB8IFwibGF3bmdyZWVuXCIgLT4gTGF3bmdyZWVuXG4gICAgfCBcImxlbW9uY2hpZmZvblwiIC0+IExlbW9uY2hpZmZvblxuICAgIHwgXCJsaWdodGJsdWVcIiAtPiBMaWdodGJsdWVcbiAgICB8IFwibGlnaHRjb3JhbFwiIC0+IExpZ2h0Y29yYWxcbiAgICB8IFwibGlnaHRjeWFuXCIgLT4gTGlnaHRjeWFuXG4gICAgfCBcImxpZ2h0Z29sZGVucm9keWVsbG93XCIgLT4gTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IFwibGlnaHRncmF5XCIgLT4gTGlnaHRncmF5XG4gICAgfCBcImxpZ2h0Z3JlZW5cIiAtPiBMaWdodGdyZWVuXG4gICAgfCBcImxpZ2h0Z3JleVwiIC0+IExpZ2h0Z3JleVxuICAgIHwgXCJsaWdodHBpbmtcIiAtPiBMaWdodHBpbmtcbiAgICB8IFwibGlnaHRzYWxtb25cIiAtPiBMaWdodHNhbG1vblxuICAgIHwgXCJsaWdodHNlYWdyZWVuXCIgLT4gTGlnaHRzZWFncmVlblxuICAgIHwgXCJsaWdodHNreWJsdWVcIiAtPiBMaWdodHNreWJsdWVcbiAgICB8IFwibGlnaHRzbGF0ZWdyYXlcIiAtPiBMaWdodHNsYXRlZ3JheVxuICAgIHwgXCJsaWdodHNsYXRlZ3JleVwiIC0+IExpZ2h0c2xhdGVncmV5XG4gICAgfCBcImxpZ2h0c3RlZWxibHVlXCIgLT4gTGlnaHRzdGVlbGJsdWVcbiAgICB8IFwibGlnaHR5ZWxsb3dcIiAtPiBMaWdodHllbGxvd1xuICAgIHwgXCJsaW1lXCIgLT4gTGltZVxuICAgIHwgXCJsaW1lZ3JlZW5cIiAtPiBMaW1lZ3JlZW5cbiAgICB8IFwibGluZW5cIiAtPiBMaW5lblxuICAgIHwgXCJtYWdlbnRhXCIgLT4gTWFnZW50YVxuICAgIHwgXCJtYXJvb25cIiAtPiBNYXJvb25cbiAgICB8IFwibWVkaXVtYXF1YW1hcmluZVwiIC0+IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IFwibWVkaXVtYmx1ZVwiIC0+IE1lZGl1bWJsdWVcbiAgICB8IFwibWVkaXVtb3JjaGlkXCIgLT4gTWVkaXVtb3JjaGlkXG4gICAgfCBcIm1lZGl1bXB1cnBsZVwiIC0+IE1lZGl1bXB1cnBsZVxuICAgIHwgXCJtZWRpdW1zZWFncmVlblwiIC0+IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBcIm1lZGl1bXNsYXRlYmx1ZVwiIC0+IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgXCJtZWRpdW1zcHJpbmdncmVlblwiIC0+IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBcIm1lZGl1bXR1cnF1b2lzZVwiIC0+IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgXCJtZWRpdW12aW9sZXRyZWRcIiAtPiBNZWRpdW12aW9sZXRyZWRcbiAgICB8IFwibWlkbmlnaHRibHVlXCIgLT4gTWlkbmlnaHRibHVlXG4gICAgfCBcIm1pbnRjcmVhbVwiIC0+IE1pbnRjcmVhbVxuICAgIHwgXCJtaXN0eXJvc2VcIiAtPiBNaXN0eXJvc2VcbiAgICB8IFwibW9jY2FzaW5cIiAtPiBNb2NjYXNpblxuICAgIHwgXCJuYXZham93aGl0ZVwiIC0+IE5hdmFqb3doaXRlXG4gICAgfCBcIm5hdnlcIiAtPiBOYXZ5XG4gICAgfCBcIm9sZGxhY2VcIiAtPiBPbGRsYWNlXG4gICAgfCBcIm9saXZlXCIgLT4gT2xpdmVcbiAgICB8IFwib2xpdmVkcmFiXCIgLT4gT2xpdmVkcmFiXG4gICAgfCBcIm9yYW5nZVwiIC0+IE9yYW5nZVxuICAgIHwgXCJvcmFuZ2VyZWRcIiAtPiBPcmFuZ2VyZWRcbiAgICB8IFwib3JjaGlkXCIgLT4gT3JjaGlkXG4gICAgfCBcInBhbGVnb2xkZW5yb2RcIiAtPiBQYWxlZ29sZGVucm9kXG4gICAgfCBcInBhbGVncmVlblwiIC0+IFBhbGVncmVlblxuICAgIHwgXCJwYWxldHVycXVvaXNlXCIgLT4gUGFsZXR1cnF1b2lzZVxuICAgIHwgXCJwYWxldmlvbGV0cmVkXCIgLT4gUGFsZXZpb2xldHJlZFxuICAgIHwgXCJwYXBheWF3aGlwXCIgLT4gUGFwYXlhd2hpcFxuICAgIHwgXCJwZWFjaHB1ZmZcIiAtPiBQZWFjaHB1ZmZcbiAgICB8IFwicGVydVwiIC0+IFBlcnVcbiAgICB8IFwicGlua1wiIC0+IFBpbmtcbiAgICB8IFwicGx1bVwiIC0+IFBsdW1cbiAgICB8IFwicG93ZGVyYmx1ZVwiIC0+IFBvd2RlcmJsdWVcbiAgICB8IFwicHVycGxlXCIgLT4gUHVycGxlXG4gICAgfCBcInJlZFwiIC0+IFJlZFxuICAgIHwgXCJyb3N5YnJvd25cIiAtPiBSb3N5YnJvd25cbiAgICB8IFwicm95YWxibHVlXCIgLT4gUm95YWxibHVlXG4gICAgfCBcInNhZGRsZWJyb3duXCIgLT4gU2FkZGxlYnJvd25cbiAgICB8IFwic2FsbW9uXCIgLT4gU2FsbW9uXG4gICAgfCBcInNhbmR5YnJvd25cIiAtPiBTYW5keWJyb3duXG4gICAgfCBcInNlYWdyZWVuXCIgLT4gU2VhZ3JlZW5cbiAgICB8IFwic2Vhc2hlbGxcIiAtPiBTZWFzaGVsbFxuICAgIHwgXCJzaWVubmFcIiAtPiBTaWVubmFcbiAgICB8IFwic2lsdmVyXCIgLT4gU2lsdmVyXG4gICAgfCBcInNreWJsdWVcIiAtPiBTa3libHVlXG4gICAgfCBcInNsYXRlYmx1ZVwiIC0+IFNsYXRlYmx1ZVxuICAgIHwgXCJzbGF0ZWdyYXlcIiAtPiBTbGF0ZWdyYXlcbiAgICB8IFwic2xhdGVncmV5XCIgLT4gU2xhdGVncmV5XG4gICAgfCBcInNub3dcIiAtPiBTbm93XG4gICAgfCBcInNwcmluZ2dyZWVuXCIgLT4gU3ByaW5nZ3JlZW5cbiAgICB8IFwic3RlZWxibHVlXCIgLT4gU3RlZWxibHVlXG4gICAgfCBcInRhblwiIC0+IFRhblxuICAgIHwgXCJ0ZWFsXCIgLT4gVGVhbFxuICAgIHwgXCJ0aGlzdGxlXCIgLT4gVGhpc3RsZVxuICAgIHwgXCJ0b21hdG9cIiAtPiBUb21hdG9cbiAgICB8IFwidHVycXVvaXNlXCIgLT4gVHVycXVvaXNlXG4gICAgfCBcInZpb2xldFwiIC0+IFZpb2xldFxuICAgIHwgXCJ3aGVhdFwiIC0+IFdoZWF0XG4gICAgfCBcIndoaXRlXCIgLT4gV2hpdGVcbiAgICB8IFwid2hpdGVzbW9rZVwiIC0+IFdoaXRlc21va2VcbiAgICB8IFwieWVsbG93XCIgLT4gWWVsbG93XG4gICAgfCBcInllbGxvd2dyZWVuXCIgLT4gWWVsbG93Z3JlZW5cbiAgICB8IHMgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvciBuYW1lXCIpKVxuXG4gIGxldCByZ2Jfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gMjQwLCAyNDgsIDI1NVxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IDI1MCwgMjM1LCAyMTVcbiAgICB8IEFxdWEgLT4gMCwgMjU1LCAyNTVcbiAgICB8IEFxdWFtYXJpbmUgLT4gMTI3LCAyNTUsIDIxMlxuICAgIHwgQXp1cmUgLT4gMjQwLCAyNTUsIDI1NVxuICAgIHwgQmVpZ2UgLT4gMjQ1LCAyNDUsIDIyMFxuICAgIHwgQmlzcXVlIC0+IDI1NSwgMjI4LCAxOTZcbiAgICB8IEJsYWNrIC0+IDAsIDAsIDBcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IDI1NSwgMjM1LCAyMDVcbiAgICB8IEJsdWUgLT4gMCwgMCwgMjU1XG4gICAgfCBCbHVldmlvbGV0IC0+IDEzOCwgNDMsIDIyNlxuICAgIHwgQnJvd24gLT4gMTY1LCA0MiwgNDJcbiAgICB8IEJ1cmx5d29vZCAtPiAyMjIsIDE4NCwgMTM1XG4gICAgfCBDYWRldGJsdWUgLT4gOTUsIDE1OCwgMTYwXG4gICAgfCBDaGFydHJldXNlIC0+IDEyNywgMjU1LCAwXG4gICAgfCBDaG9jb2xhdGUgLT4gMjEwLCAxMDUsIDMwXG4gICAgfCBDb3JhbCAtPiAyNTUsIDEyNywgODBcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IDEwMCwgMTQ5LCAyMzdcbiAgICB8IENvcm5zaWxrIC0+IDI1NSwgMjQ4LCAyMjBcbiAgICB8IENyaW1zb24gLT4gMjIwLCAyMCwgNjBcbiAgICB8IEN5YW4gLT4gMCwgMjU1LCAyNTVcbiAgICB8IERhcmtibHVlIC0+IDAsIDAsIDEzOVxuICAgIHwgRGFya2N5YW4gLT4gMCwgMTM5LCAxMzlcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gMTg0LCAxMzQsIDExXG4gICAgfCBEYXJrZ3JheSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJrZ3JlZW4gLT4gMCwgMTAwLCAwXG4gICAgfCBEYXJrZ3JleSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJra2hha2kgLT4gMTg5LCAxODMsIDEwN1xuICAgIHwgRGFya21hZ2VudGEgLT4gMTM5LCAwLCAxMzlcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IDg1LCAxMDcsIDQ3XG4gICAgfCBEYXJrb3JhbmdlIC0+IDI1NSwgMTQwLCAwXG4gICAgfCBEYXJrb3JjaGlkIC0+IDE1MywgNTAsIDIwNFxuICAgIHwgRGFya3JlZCAtPiAxMzksIDAsIDBcbiAgICB8IERhcmtzYWxtb24gLT4gMjMzLCAxNTAsIDEyMlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IDE0MywgMTg4LCAxNDNcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gNzIsIDYxLCAxMzlcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IDAsIDIwNiwgMjA5XG4gICAgfCBEYXJrdmlvbGV0IC0+IDE0OCwgMCwgMjExXG4gICAgfCBEZWVwcGluayAtPiAyNTUsIDIwLCAxNDdcbiAgICB8IERlZXBza3libHVlIC0+IDAsIDE5MSwgMjU1XG4gICAgfCBEaW1ncmF5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERpbWdyZXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRG9kZ2VyYmx1ZSAtPiAzMCwgMTQ0LCAyNTVcbiAgICB8IEZpcmVicmljayAtPiAxNzgsIDM0LCAzNFxuICAgIHwgRmxvcmFsd2hpdGUgLT4gMjU1LCAyNTAsIDI0MFxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gMzQsIDEzOSwgMzRcbiAgICB8IEZ1Y2hzaWEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IEdhaW5zYm9ybyAtPiAyMjAsIDIyMCwgMjIwXG4gICAgfCBHaG9zdHdoaXRlIC0+IDI0OCwgMjQ4LCAyNTVcbiAgICB8IEdvbGQgLT4gMjU1LCAyMTUsIDBcbiAgICB8IEdvbGRlbnJvZCAtPiAyMTgsIDE2NSwgMzJcbiAgICB8IEdyYXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgR3JlZW4gLT4gMCwgMTI4LCAwXG4gICAgfCBHcmVlbnllbGxvdyAtPiAxNzMsIDI1NSwgNDdcbiAgICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgSG9uZXlkZXcgLT4gMjQwLCAyNTUsIDI0MFxuICAgIHwgSG90cGluayAtPiAyNTUsIDEwNSwgMTgwXG4gICAgfCBJbmRpYW5yZWQgLT4gMjA1LCA5MiwgOTJcbiAgICB8IEluZGlnbyAtPiA3NSwgMCwgMTMwXG4gICAgfCBJdm9yeSAtPiAyNTUsIDI1NSwgMjQwXG4gICAgfCBLaGFraSAtPiAyNDAsIDIzMCwgMTQwXG4gICAgfCBMYXZlbmRlciAtPiAyMzAsIDIzMCwgMjUwXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IDI1NSwgMjQwLCAyNDVcbiAgICB8IExhd25ncmVlbiAtPiAxMjQsIDI1MiwgMFxuICAgIHwgTGVtb25jaGlmZm9uIC0+IDI1NSwgMjUwLCAyMDVcbiAgICB8IExpZ2h0Ymx1ZSAtPiAxNzMsIDIxNiwgMjMwXG4gICAgfCBMaWdodGNvcmFsIC0+IDI0MCwgMTI4LCAxMjhcbiAgICB8IExpZ2h0Y3lhbiAtPiAyMjQsIDI1NSwgMjU1XG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiAyNTAsIDI1MCwgMjEwXG4gICAgfCBMaWdodGdyYXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRncmVlbiAtPiAxNDQsIDIzOCwgMTQ0XG4gICAgfCBMaWdodGdyZXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRwaW5rIC0+IDI1NSwgMTgyLCAxOTNcbiAgICB8IExpZ2h0c2FsbW9uIC0+IDI1NSwgMTYwLCAxMjJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gMzIsIDE3OCwgMTcwXG4gICAgfCBMaWdodHNreWJsdWUgLT4gMTM1LCAyMDYsIDI1MFxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gMTc2LCAxOTYsIDIyMlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gMjU1LCAyNTUsIDIyNFxuICAgIHwgTGltZSAtPiAwLCAyNTUsIDBcbiAgICB8IExpbWVncmVlbiAtPiA1MCwgMjA1LCA1MFxuICAgIHwgTGluZW4gLT4gMjUwLCAyNDAsIDIzMFxuICAgIHwgTWFnZW50YSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgTWFyb29uIC0+IDEyOCwgMCwgMFxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiAxMDIsIDIwNSwgMTcwXG4gICAgfCBNZWRpdW1ibHVlIC0+IDAsIDAsIDIwNVxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IDE4NiwgODUsIDIxMVxuICAgIHwgTWVkaXVtcHVycGxlIC0+IDE0NywgMTEyLCAyMTlcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IDYwLCAxNzksIDExM1xuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IDEyMywgMTA0LCAyMzhcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IDAsIDI1MCwgMTU0XG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gNzIsIDIwOSwgMjA0XG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gMTk5LCAyMSwgMTMzXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gMjUsIDI1LCAxMTJcbiAgICB8IE1pbnRjcmVhbSAtPiAyNDUsIDI1NSwgMjUwXG4gICAgfCBNaXN0eXJvc2UgLT4gMjU1LCAyMjgsIDIyNVxuICAgIHwgTW9jY2FzaW4gLT4gMjU1LCAyMjgsIDE4MVxuICAgIHwgTmF2YWpvd2hpdGUgLT4gMjU1LCAyMjIsIDE3M1xuICAgIHwgTmF2eSAtPiAwLCAwLCAxMjhcbiAgICB8IE9sZGxhY2UgLT4gMjUzLCAyNDUsIDIzMFxuICAgIHwgT2xpdmUgLT4gMTI4LCAxMjgsIDBcbiAgICB8IE9saXZlZHJhYiAtPiAxMDcsIDE0MiwgMzVcbiAgICB8IE9yYW5nZSAtPiAyNTUsIDE2NSwgMFxuICAgIHwgT3JhbmdlcmVkIC0+IDI1NSwgNjksIDBcbiAgICB8IE9yY2hpZCAtPiAyMTgsIDExMiwgMjE0XG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IDIzOCwgMjMyLCAxNzBcbiAgICB8IFBhbGVncmVlbiAtPiAxNTIsIDI1MSwgMTUyXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IDE3NSwgMjM4LCAyMzhcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gMjE5LCAxMTIsIDE0N1xuICAgIHwgUGFwYXlhd2hpcCAtPiAyNTUsIDIzOSwgMjEzXG4gICAgfCBQZWFjaHB1ZmYgLT4gMjU1LCAyMTgsIDE4NVxuICAgIHwgUGVydSAtPiAyMDUsIDEzMywgNjNcbiAgICB8IFBpbmsgLT4gMjU1LCAxOTIsIDIwM1xuICAgIHwgUGx1bSAtPiAyMjEsIDE2MCwgMjIxXG4gICAgfCBQb3dkZXJibHVlIC0+IDE3NiwgMjI0LCAyMzBcbiAgICB8IFB1cnBsZSAtPiAxMjgsIDAsIDEyOFxuICAgIHwgUmVkIC0+IDI1NSwgMCwgMFxuICAgIHwgUm9zeWJyb3duIC0+IDE4OCwgMTQzLCAxNDNcbiAgICB8IFJveWFsYmx1ZSAtPiA2NSwgMTA1LCAyMjVcbiAgICB8IFNhZGRsZWJyb3duIC0+IDEzOSwgNjksIDE5XG4gICAgfCBTYWxtb24gLT4gMjUwLCAxMjgsIDExNFxuICAgIHwgU2FuZHlicm93biAtPiAyNDQsIDE2NCwgOTZcbiAgICB8IFNlYWdyZWVuIC0+IDQ2LCAxMzksIDg3XG4gICAgfCBTZWFzaGVsbCAtPiAyNTUsIDI0NSwgMjM4XG4gICAgfCBTaWVubmEgLT4gMTYwLCA4MiwgNDVcbiAgICB8IFNpbHZlciAtPiAxOTIsIDE5MiwgMTkyXG4gICAgfCBTa3libHVlIC0+IDEzNSwgMjA2LCAyMzVcbiAgICB8IFNsYXRlYmx1ZSAtPiAxMDYsIDkwLCAyMDVcbiAgICB8IFNsYXRlZ3JheSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbGF0ZWdyZXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU25vdyAtPiAyNTUsIDI1MCwgMjUwXG4gICAgfCBTcHJpbmdncmVlbiAtPiAwLCAyNTUsIDEyN1xuICAgIHwgU3RlZWxibHVlIC0+IDcwLCAxMzAsIDE4MFxuICAgIHwgVGFuIC0+IDIxMCwgMTgwLCAxNDBcbiAgICB8IFRlYWwgLT4gMCwgMTI4LCAxMjhcbiAgICB8IFRoaXN0bGUgLT4gMjE2LCAxOTEsIDIxNlxuICAgIHwgVG9tYXRvIC0+IDI1NSwgOTksIDcxXG4gICAgfCBUdXJxdW9pc2UgLT4gNjQsIDIyNCwgMjA4XG4gICAgfCBWaW9sZXQgLT4gMjM4LCAxMzAsIDIzOFxuICAgIHwgV2hlYXQgLT4gMjQ1LCAyMjIsIDE3OVxuICAgIHwgV2hpdGUgLT4gMjU1LCAyNTUsIDI1NVxuICAgIHwgV2hpdGVzbW9rZSAtPiAyNDUsIDI0NSwgMjQ1XG4gICAgfCBZZWxsb3cgLT4gMjU1LCAyNTUsIDBcbiAgICB8IFllbGxvd2dyZWVuIC0+IDE1NCwgMjA1LCA1MFxuXG4gIHR5cGUgdCA9XG4gICAgfCBOYW1lIG9mIG5hbWVcbiAgICB8IFJHQiBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUmVkLCBHcmVlbiBhbmQgQmx1ZSB2YWx1ZXMuIENsaXBwZWQgdG8gW1swLi4yNTVdXSBieSBtb3N0IChBbGw/KVxuICAgICAgICAgICAgYnJvd3NlcnMuICopXG4gICAgfCBSR0JfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIGFyZSBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuICopXG4gICAgfCBSR0JBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgUkdCIHdpdGggYWRkaXRpb25hbCB0cmFuc3BhcmVuY3kgYXJndW1lbnQuIE9wYWNpdHkgc2hvdWxkIGJlIGluXG4gICAgICAgICAgICBbMC5dIChjb21wbGV0ZWx5IHRyYW5zcGFyZW50KSBhbmQgWzEuXSAoY29tcGxldGVseSBvcGFxdWUpLiAqKVxuICAgIHwgUkdCQV9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBzcGVjaWZpZWQgYXMgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiBBbHBoYVxuICAgICAgICAgICAgY2hhbm5lbCAob3BhY2l0eSkgaXMgc3RpbGwgYSBbMC5dIHRvIFsxLl0gZmxvYXQuICopXG4gICAgfCBIU0wgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIEh1ZSwgU2F0dXJhdGlvbiBhbmQgTGlnaHRuZXNzIHZhbHVlcy4gSHVlIGlzIGFuIGFuZ2xlIGluIGRlZ3JlZSAoaW5cbiAgICAgICAgICAgIGludGVydmFsIFtbMC4uMzYwW10pLiBTYXR1cmF0aW9uIGlzIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGNvbG9ybGVzcy4gTGlnaHRuZXNzIGlzIGFsc28gYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgYmxhY2suICopXG4gICAgfCBIU0xBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgSFNMIHdpdGggYW4gb3BhY2l0eSBhcmd1bWVudCBiZXR3ZWVuIFswLl0gYW5kIFsxLl0uICopXG5cbiAgbGV0IHJnYiA/YSByIGcgYiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IFJHQiAociwgZywgYilcbiAgICB8IFNvbWUgYSAtPiBSR0JBIChyLCBnLCBiLCBhKVxuXG4gIGxldCBoc2wgP2EgaCBzIGwgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBIU0wgKGgsIHMsIGwpXG4gICAgfCBTb21lIGEgLT4gSFNMQSAoaCwgcywgbCwgYSlcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IHN0cmluZ19vZl9uYW1lIG5cbiAgICB8IFJHQiAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQsJWQsJWQpXCIgciBnIGJcbiAgICB8IFJHQl9wZXJjZW50IChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCUlLCVkJSUsJWQlJSlcIiByIGcgYlxuICAgIHwgUkdCQSAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkLCVkLCVkLCVmKVwiIHIgZyBiIGFcbiAgICB8IFJHQkFfcGVyY2VudCAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkJSUsJWQlJSwlZCUlLCVmKVwiIHIgZyBiIGFcbiAgICB8IEhTTCAoaCwgcywgbCkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2woJWQsJWQlJSwlZCUlKVwiIGggcyBsXG4gICAgfCBIU0xBIChoLCBzLCBsLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbGEoJWQsJWQlJSwlZCUlLCVmKVwiIGggcyBsIGFcblxuICBsZXQgaGV4X29mX3JnYiAocmVkLCBncmVlbiwgYmx1ZSkgPVxuICAgIGxldCBpbl9yYW5nZSBpID1cbiAgICAgIGlmIGkgPCAwIHx8IGkgPiAyNTVcbiAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHN0cmluZ19vZl9pbnQgaSBeIFwiIGlzIG91dCBvZiB2YWxpZCByYW5nZVwiKSlcbiAgICBpblxuICAgIGluX3JhbmdlIHJlZDtcbiAgICBpbl9yYW5nZSBncmVlbjtcbiAgICBpbl9yYW5nZSBibHVlO1xuICAgIFByaW50Zi5zcHJpbnRmIFwiIyUwMlglMDJYJTAyWFwiIHJlZCBncmVlbiBibHVlXG5cbiAgKCogT2NhbWwgPC0+IEpTIHJlcHJlc2VudGF0aW9uICopXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgKCogVE9ETz8gYmUgbW9yZSByZXN0cmljdGl2ZSwgY2xpcCB2YWx1ZXMgaW50byBzdGFuZGFyZCByYW5nZSAqKVxuICBsZXQganNfdF9vZl9qc19zdHJpbmcgcyA9XG4gICAgbGV0IHJnYl9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXmhzbFxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbGFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5oc2xhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgaWYgSnMudG9fYm9vbCAocmdiX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYl9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbGFfcmUjI3Rlc3QgcylcbiAgICB0aGVuIHNcbiAgICBlbHNlIGlmIExpc3QubWVtXG4gICAgICAgICAgICAgIChKcy50b19zdHJpbmcgcylcbiAgICAgICAgICAgICAgWyBcImFsaWNlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJhbnRpcXVld2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiYXF1YVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcImF6dXJlXCJcbiAgICAgICAgICAgICAgOyBcImJlaWdlXCJcbiAgICAgICAgICAgICAgOyBcImJpc3F1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibGFja1wiXG4gICAgICAgICAgICAgIDsgXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgICAgICAgICAgIDsgXCJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImJsdWV2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiYnJvd25cIlxuICAgICAgICAgICAgICA7IFwiYnVybHl3b29kXCJcbiAgICAgICAgICAgICAgOyBcImNhZGV0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjaGFydHJldXNlXCJcbiAgICAgICAgICAgICAgOyBcImNob2NvbGF0ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3Juc2lsa1wiXG4gICAgICAgICAgICAgIDsgXCJjcmltc29uXCJcbiAgICAgICAgICAgICAgOyBcImN5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2JsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya2N5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2toYWtpXCJcbiAgICAgICAgICAgICAgOyBcImRhcmttYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya29yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrcmVkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmt0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya3Zpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJkZWVwcGlua1wiXG4gICAgICAgICAgICAgIDsgXCJkZWVwc2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZG9kZ2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJmaXJlYnJpY2tcIlxuICAgICAgICAgICAgICA7IFwiZmxvcmFsd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZm9yZXN0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZnVjaHNpYVwiXG4gICAgICAgICAgICAgIDsgXCJnYWluc2Jvcm9cIlxuICAgICAgICAgICAgICA7IFwiZ2hvc3R3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJncmF5XCJcbiAgICAgICAgICAgICAgOyBcImdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImdyZWVueWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImdyZXlcIlxuICAgICAgICAgICAgICA7IFwiaG9uZXlkZXdcIlxuICAgICAgICAgICAgICA7IFwiaG90cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJpbmRpYW5yZWRcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWdvXCJcbiAgICAgICAgICAgICAgOyBcIml2b3J5XCJcbiAgICAgICAgICAgICAgOyBcImtoYWtpXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyYmx1c2hcIlxuICAgICAgICAgICAgICA7IFwibGF3bmdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxlbW9uY2hpZmZvblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGN5YW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaW1lXCJcbiAgICAgICAgICAgICAgOyBcImxpbWVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaW5lblwiXG4gICAgICAgICAgICAgIDsgXCJtYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcIm1hcm9vblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJtaWRuaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWludGNyZWFtXCJcbiAgICAgICAgICAgICAgOyBcIm1pc3R5cm9zZVwiXG4gICAgICAgICAgICAgIDsgXCJtb2NjYXNpblwiXG4gICAgICAgICAgICAgIDsgXCJuYXZham93aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJuYXZ5XCJcbiAgICAgICAgICAgICAgOyBcIm9sZGxhY2VcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVkcmFiXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VyZWRcIlxuICAgICAgICAgICAgICA7IFwib3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwicGFsZXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJwYXBheWF3aGlwXCJcbiAgICAgICAgICAgICAgOyBcInBlYWNocHVmZlwiXG4gICAgICAgICAgICAgIDsgXCJwZXJ1XCJcbiAgICAgICAgICAgICAgOyBcInBpbmtcIlxuICAgICAgICAgICAgICA7IFwicGx1bVwiXG4gICAgICAgICAgICAgIDsgXCJwb3dkZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcInB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJyZWRcIlxuICAgICAgICAgICAgICA7IFwicm9zeWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInJveWFsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzYWRkbGVicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwic2FuZHlicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzZWFzaGVsbFwiXG4gICAgICAgICAgICAgIDsgXCJzaWVubmFcIlxuICAgICAgICAgICAgICA7IFwic2lsdmVyXCJcbiAgICAgICAgICAgICAgOyBcInNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwic25vd1wiXG4gICAgICAgICAgICAgIDsgXCJzcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwidGFuXCJcbiAgICAgICAgICAgICAgOyBcInRlYWxcIlxuICAgICAgICAgICAgICA7IFwidGhpc3RsZVwiXG4gICAgICAgICAgICAgIDsgXCJ0b21hdG9cIlxuICAgICAgICAgICAgICA7IFwidHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGVhdFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZXNtb2tlXCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dncmVlblwiXG4gICAgICAgICAgICAgIF1cbiAgICB0aGVuIHNcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChKcy50b19zdHJpbmcgcyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKVxuXG4gIGxldCBuYW1lIGNuID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfbmFtZSBjbilcblxuICBsZXQganMgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IG5hbWUgblxuICAgIHwgKFJHQiBfIHwgUkdCX3BlcmNlbnQgXyB8IFJHQkEgXyB8IFJHQkFfcGVyY2VudCBfIHwgSFNMIF8gfCBIU0xBIF8pIGFzIGMgLT5cbiAgICAgICAgSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCBjKVxuXG4gIGxldCBtbCBjID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBjIGluXG4gICAgdHJ5IE5hbWUgKG5hbWVfb2Zfc3RyaW5nIHMpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKFxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKSBpblxuICAgICAgbGV0IHJlX3JnYiA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSwoXFxcXGQqKSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX3JnYl9wY3QgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiklLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9oc2wgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKGhzbGE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IGlfb2Zfc19vID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgfCBTb21lIGkgLT4gKFxuICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaVxuICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBpIF4gXCIpOiBcIiBeIHMpKSlcbiAgICAgIGluXG4gICAgICBsZXQgZl9vZl9zIGYgPVxuICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGYgXiBcIik6IFwiIF4gcykpXG4gICAgICBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2IgcyAwIHdpdGhcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0IgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUkdCQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYl9wY3QgcyAwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgUkdCQV9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9oc2wgcyAwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IEhTTCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEhTTEEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKSkpKVxuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgKCogaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2xlbmd0aHMgKilcblxuICAoKiBUT0RPOlxuICAgICB7W1xuICAgICAgIHR5cGUganNfdCA9IHByaXZhdGUgSnMuc3RyaW5nIEpzLnRcbiAgICAgICB2YWwganNfdF9vZl90XG4gICAgICAgdmFsIHRfb2ZfanNfdFxuICAgICAgIHZhbCB0X29mX3N0cmluZ1xuICAgICBdfVxuICAqKVxuXG4gIHR5cGUgdCA9XG4gICAgfCBaZXJvXG4gICAgKCogcmVsYXRpdmUgKilcbiAgICB8IEVtIG9mIGZsb2F0XG4gICAgfCBFeCBvZiBmbG9hdFxuICAgIHwgUHggb2YgZmxvYXRcbiAgICB8IEdkIG9mIGZsb2F0XG4gICAgfCBSZW0gb2YgZmxvYXRcbiAgICB8IFZ3IG9mIGZsb2F0XG4gICAgfCBWaCBvZiBmbG9hdFxuICAgIHwgVm0gb2YgZmxvYXRcbiAgICB8IENoIG9mIGZsb2F0XG4gICAgKCogYWJzb2x1dGUgKilcbiAgICB8IE1tIG9mIGZsb2F0XG4gICAgfCBDbSBvZiBmbG9hdFxuICAgIHwgSW4gb2YgZmxvYXRcbiAgICB8IFB0IG9mIGZsb2F0XG4gICAgfCBQYyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBaZXJvIC0+IFwiMFwiXG4gICAgfCBFbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJlbVwiXG4gICAgfCBFeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJleFwiXG4gICAgfCBQeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJweFwiXG4gICAgfCBHZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJnZFwiXG4gICAgfCBSZW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmVtXCJcbiAgICB8IFZ3IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZ3XCJcbiAgICB8IFZoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZoXCJcbiAgICB8IFZtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZtXCJcbiAgICB8IENoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNoXCJcbiAgICB8IE1tIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcIm1tXCJcbiAgICB8IENtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNtXCJcbiAgICB8IEluIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImluXCJcbiAgICB8IFB0IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB0XCJcbiAgICB8IFBjIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInBjXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCB0ID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyB0IGluXG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCIwXCJcbiAgICB0aGVuIFplcm9cbiAgICBlbHNlXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopPylcXFxccyooXFxcXFMqKSRcIiBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBcImVtXCIgLT4gRW0gZlxuICAgICAgICAgIHwgU29tZSBcImV4XCIgLT4gRXggZlxuICAgICAgICAgIHwgU29tZSBcInB4XCIgLT4gUHggZlxuICAgICAgICAgIHwgU29tZSBcImdkXCIgLT4gR2QgZlxuICAgICAgICAgIHwgU29tZSBcInJlbVwiIC0+IFJlbSBmXG4gICAgICAgICAgfCBTb21lIFwidndcIiAtPiBWdyBmXG4gICAgICAgICAgfCBTb21lIFwidmhcIiAtPiBWaCBmXG4gICAgICAgICAgfCBTb21lIFwidm1cIiAtPiBWbSBmXG4gICAgICAgICAgfCBTb21lIFwiY2hcIiAtPiBDaCBmXG4gICAgICAgICAgfCBTb21lIFwibW1cIiAtPiBNbSBmXG4gICAgICAgICAgfCBTb21lIFwiY21cIiAtPiBDbSBmXG4gICAgICAgICAgfCBTb21lIFwiaW5cIiAtPiBJbiBmXG4gICAgICAgICAgfCBTb21lIFwicHRcIiAtPiBQdCBmXG4gICAgICAgICAgfCBTb21lIFwicGNcIiAtPiBQYyBmXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKSlcbmVuZFxuXG5tb2R1bGUgQW5nbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IERlZyBvZiBmbG9hdFxuICAgIHwgR3JhZCBvZiBmbG9hdFxuICAgIHwgUmFkIG9mIGZsb2F0XG4gICAgfCBUdXJucyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBEZWcgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZGVnXCJcbiAgICB8IEdyYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ3JhZFwiXG4gICAgfCBSYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmFkXCJcbiAgICB8IFR1cm5zIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInR1cm5zXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCBqID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBqIGluXG4gICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopKShkZWd8Z3JhZHxyYWR8dHVybnMpJFwiIGluXG4gICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgIHwgU29tZSBcImRlZ1wiIC0+IERlZyBmXG4gICAgICAgIHwgU29tZSBcImdyYWRcIiAtPiBHcmFkIGZcbiAgICAgICAgfCBTb21lIFwicmFkXCIgLT4gUmFkIGZcbiAgICAgICAgfCBTb21lIFwidHVybnNcIiAtPiBUdXJucyBmXG4gICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCoqIEphdmFzY3JpcHQgZXZlbnRzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBUeXAgPSBEb21faHRtbC5FdmVudFxuXG50eXBlIGxpc3RlbmVyID0gRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGxpc3RlbiA/KGNhcHR1cmUgPSBmYWxzZSkgdGFyZ2V0IHR5cCBjYiA9XG4gIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXJcbiAgICB0YXJnZXRcbiAgICB0eXBcbiAgICAoRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gbiBlIC0+IEpzLmJvb2wgKGNiIG4gZSkpKVxuICAgIChKcy5ib29sIGNhcHR1cmUpXG5cbmxldCBzdG9wX2xpc3RlbiA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmxldCB4bWxucyA9IEpzLnN0cmluZyBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblxuKCogdHJhbnNsYXRlIHNwZWMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvaWRsLmh0bWwgKilcbigqIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCAqKVxuXG50eXBlIGVycm9yX2NvZGUgPVxuICB8IFdST05HX1RZUEVfRVJSXG4gIHwgSU5WQUxJRF9WQUxVRV9FUlJcbiAgfCBNQVRSSVhfTk9UX0lOVkVSVEFCTEVcblxuY2xhc3MgdHlwZSBzdmdfZXJyb3IgPSBvYmplY3RcbiAgaW5oZXJpdCBKcy5lcnJvclxuXG4gIG1ldGhvZCBjb2RlIDogZXJyb3JfY29kZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leGNlcHRpb24gU1ZHRXJyb3Igb2Ygc3ZnX2Vycm9yXG5cbnR5cGUgbGVuZ3RoVW5pdFR5cGUgPVxuICB8IExFTkdUSFRZUEVfVU5LTk9XTlxuICB8IExFTkdUSFRZUEVfTlVNQkVSXG4gIHwgTEVOR1RIVFlQRV9QRVJDRU5UQUdFXG4gIHwgTEVOR1RIVFlQRV9FTVNcbiAgfCBMRU5HVEhUWVBFX0VYU1xuICB8IExFTkdUSFRZUEVfUFhcbiAgfCBMRU5HVEhUWVBFX0NNXG4gIHwgTEVOR1RIVFlQRV9NTVxuICB8IExFTkdUSFRZUEVfSU5cbiAgfCBMRU5HVEhUWVBFX1BUXG4gIHwgTEVOR1RIVFlQRV9QQ1xuXG50eXBlIGFuZ2xlVW5pdFR5cGUgPVxuICB8IEFOR0xFVFlQRV9VTktOT1dOXG4gIHwgQU5HTEVUWVBFX1VOU1BFQ0lGSUVEXG4gIHwgQU5HTEVUWVBFX0RFR1xuICB8IEFOR0xFVFlQRV9SQURcbiAgfCBBTkdMRVRZUEVfR1JBRFxuXG50eXBlIGNvbG9yVHlwZSA9XG4gIHwgQ09MT1JUWVBFX1VOS05PV05cbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JcbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1JcbiAgfCBDT0xPUlRZUEVfQ1VSUkVOVENPTE9SXG5cbnR5cGUgYWxpZ25tZW50VHlwZSA9XG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYXG5cbnR5cGUgbWVldE9yU2xpY2VUeXBlID1cbiAgfCBNRUVUT1JTTElDRV9VTktOT1dOXG4gIHwgTUVFVE9SU0xJQ0VfTUVFVFxuICB8IE1FRVRPUlNMSUNFX1NMSUNFXG5cbnR5cGUgdHJhbnNmb3JtVHlwZSA9XG4gIHwgVFJBTlNGT1JNX1VOS05PV05cbiAgfCBUUkFOU0ZPUk1fTUFUUklYXG4gIHwgVFJBTlNGT1JNX1RSQU5TTEFURVxuICB8IFRSQU5TRk9STV9TQ0FMRVxuICB8IFRSQU5TRk9STV9ST1RBVEVcbiAgfCBUUkFOU0ZPUk1fU0tFV1hcbiAgfCBUUkFOU0ZPUk1fU0tFV1lcblxudHlwZSB6b29tQW5kUGFuVHlwZSA9XG4gIHwgWk9PTUFORFBBTl9VTktOT1dOXG4gIHwgWk9PTUFORFBBTl9ESVNBQkxFXG4gIHwgWk9PTUFORFBBTl9NQUdOSUZZXG5cbnR5cGUgbGVuZ3RoQWRqdXN0ID1cbiAgfCBMRU5HVEhBREpVU1RfVU5LTk9XTlxuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFNcblxudHlwZSB1bml0VHlwZSA9XG4gIHwgVU5JVF9UWVBFX1VOS05PV05cbiAgfCBVTklUX1RZUEVfVVNFUlNQQUNFT05VU0VcbiAgfCBVTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1hcblxuKCogaW50ZXJmYWNlIFNWR1JlbmRlcmluZ0ludGVudCAqKVxudHlwZSBpbnRlbnRUeXBlID1cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1VOS05PV05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FVVE9cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1BFUkNFUFRVQUxcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQ1xuICB8IFJFTkRFUklOR19JTlRFTlRfU0FUVVJBVElPTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDXG5cbigqIFBhdGggU2VnbWVudCBUeXBlcyAqKVxudHlwZSBwYXRoU2VnbWVudFR5cGUgPVxuICB8IFBBVEhTRUdfVU5LTk9XTlxuICB8IFBBVEhTRUdfQ0xPU0VQQVRIXG4gIHwgUEFUSFNFR19NT1ZFVE9fQUJTXG4gIHwgUEFUSFNFR19NT1ZFVE9fUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMXG4gIHwgUEFUSFNFR19BUkNfQUJTXG4gIHwgUEFUSFNFR19BUkNfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUxcblxuKCogdGV4dFBhdGggTWV0aG9kIFR5cGVzICopXG50eXBlIHRleHRQYXRoTWV0aG9kVHlwZSA9XG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSFxuXG4oKiB0ZXh0UGF0aCBTcGFjaW5nIFR5cGVzICopXG50eXBlIHRleHRQYXRoU3BhY2luZ1R5cGUgPVxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1RcblxuKCogU3ByZWFkIE1ldGhvZCBUeXBlcyAqKVxudHlwZSBzcHJlYWRNZXRob2RUeXBlID1cbiAgfCBTUFJFQURNRVRIT0RfVU5LTk9XTlxuICB8IFNQUkVBRE1FVEhPRF9QQURcbiAgfCBTUFJFQURNRVRIT0RfUkVGTEVDVFxuICB8IFNQUkVBRE1FVEhPRF9SRVBFQVRcblxudHlwZSBzdXNwZW5kSGFuZGxlSURcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgWydhXSBhbmltYXRlZCA9IG9iamVjdFxuICBtZXRob2QgYmFzZVZhbCA6ICdhIHByb3BcblxuICBtZXRob2QgYW5pbVZhbCA6ICdhIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbGlzdCA9IG9iamVjdFxuICBtZXRob2QgbnVtYmVyT2ZJdGVtcyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluaXRpYWxpemUgOiAnYSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRJdGVtQmVmb3JlIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUl0ZW0gOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgYXBwZW5kSXRlbSA6ICdhIC0+ICdhIG1ldGhcbmVuZFxuXG4oKioqKilcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxiYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lclNWR0VsZW1lbnQgOiBzdmdFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFN0cmluZyAqKVxuYW5kIGFuaW1hdGVkU3RyaW5nID0gW2pzX3N0cmluZyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRCb29sZWFuICopXG5hbmQgYW5pbWF0ZWRCb29sZWFuID0gW2Jvb2wgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0cmluZ0xpc3QgKilcbmFuZCBzdHJpbmdMaXN0ID0gW2pzX3N0cmluZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uICopXG5hbmQgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IFtpbnQgKCpzaG9ydCopXSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRJbnRlZ2VyICopXG5hbmQgYW5pbWF0ZWRJbnRlZ2VyID0gW2ludF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyICopXG5hbmQgYW5pbWF0ZWROdW1iZXIgPSBbbnVtYmVyX3RdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0ICopXG5hbmQgbnVtYmVyTGlzdCA9IFtudW1iZXIgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ICopXG5hbmQgYW5pbWF0ZWROdW1iZXJMaXN0ID0gW251bWJlckxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aCAqKVxuYW5kIGxlbmd0aCA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBsZW5ndGhVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGggKilcbmFuZCBhbmltYXRlZExlbmd0aCA9IFtsZW5ndGggdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aExpc3QgKilcbmFuZCBsZW5ndGhMaXN0ID0gW2xlbmd0aCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aExpc3QgKilcbmFuZCBhbmltYXRlZExlbmd0aExpc3QgPSBbbGVuZ3RoTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5nbGUgKilcbmFuZCBhbmdsZSA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBhbmdsZVVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRBbmdsZSAqKVxuYW5kIGFuaW1hdGVkQW5nbGUgPSBbYW5nbGUgdF0gYW5pbWF0ZWRcblxuKCogWFhYWFggTW92ZSBpdCAqKVxuYW5kIHJnYkNvbG9yID0gb2JqZWN0IGVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3IgKilcbmFuZCBjb2xvciA9IG9iamVjdFxuICAoKiBYWFggaW5oZXJpdCBjc3NWYWx1ZSAqKVxuICBtZXRob2QgY29sb3JUeXBlIDogY29sb3JUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmdiQ29sb3IgOiByZ2JDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaWNjQ29sb3IgOiBpY2NDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0UkdCQ29sb3IgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UkdCQ29sb3JJQ0NDb2xvciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRDb2xvciA6IGNvbG9yVHlwZSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSUNDQ29sb3IgKilcbmFuZCBpY2NDb2xvciA9IG9iamVjdFxuICBtZXRob2QgY29sb3JQcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvcnMgOiBudW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0ICopXG5hbmQgcmVjdCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRSZWN0ICopXG5hbmQgYW5pbWF0ZWRSZWN0ID0gW3JlY3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxhYmxlICopXG5hbmQgc3R5bGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHlsZSA6IERvbV9odG1sLmNzc1N0eWxlRGVjbGFyYXRpb24gdCByZWFkb25seV9wcm9wXG4gICgqICAgQ1NTVmFsdWUgZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTG9jYXRhYmxlICopXG5hbmQgbG9jYXRhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBuZWFyZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRCQm94IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JlZW5DVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRyYW5zZm9ybVRvRWxlbWVudCA6IGVsZW1lbnQgdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybWFibGUgKilcbmFuZCB0cmFuc2Zvcm1hYmxlID0gb2JqZWN0XG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGVzdHMgKilcbmFuZCB0ZXN0cyA9IG9iamVjdFxuICBtZXRob2QgcmVxdWlyZWRGZWF0dXJlcyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkRXh0ZW5zaW9ucyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN5c3RlbUxhbmd1YWdlIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGFzRXh0ZW5zaW9uIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGFuZ1NwYWNlICopXG5hbmQgbGFuZ1NwYWNlID0gb2JqZWN0XG4gIG1ldGhvZCB4bWxsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxzcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAqKVxuYW5kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBvYmplY3RcbiAgbWV0aG9kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgOiBhbmltYXRlZEJvb2xlYW4gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpdFRvVmlld0JveCAqKVxuYW5kIGZpdFRvVmlld0JveCA9IG9iamVjdFxuICBtZXRob2Qgdmlld0JveCA6IGFuaW1hdGVkUmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpbyA6IGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiAqKVxuYW5kIHpvb21BbmRQYW4gPSBvYmplY3RcbiAgbWV0aG9kIHpvb21BbmRQYW4gOiB6b29tQW5kUGFuVHlwZSBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdTcGVjICopXG5hbmQgdmlld1NwZWMgPSBvYmplY3RcbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBtZXRob2QgdHJhbnNmb3JtIDogdHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdCb3hTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW9TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybVN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVVJJUmVmZXJlbmNlICopXG5hbmQgdXJpUmVmZXJlbmNlID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NTU1J1bGUgOiBDU1NSdWxlICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTE9SX1BST0ZJTEVfUlVMRSA9IDc7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRG9jdW1lbnQgKilcbmFuZCBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50RXZlbnQgKilcbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290RWxlbWVudCA6IHN2Z0VsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuICAoKiByb290RWxlbWVudCB3aWxsIGJlIG51bGwgb3IgdW5kZWZpbmVkIGluIGFuIGh0bWwgY29udGV4dCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTVkdFbGVtZW50ICopXG5hbmQgc3ZnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRldmVudCwgdmlld2NzcywgZG9jdW1lbnRjc3MgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFNjcmlwdFR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogcmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlQ3VycmVudFZpZXcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VmlldyA6IHZpZXdTcGVjIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U2NhbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUcmFuc2xhdGUgOiBwb2ludCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VzcGVuZFJlZHJhdyA6IGludCAtPiBzdXNwZW5kSGFuZGxlSUQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXcgOiBzdXNwZW5kSGFuZGxlSUQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhd0FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3JjZVJlZHJhdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5wYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uc1BhdXNlZCA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRDdXJyZW50VGltZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0SW50ZXJzZWN0aW9uTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuY2xvc3VyZUxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ludGVyc2VjdGlvbiA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGNoZWNrRW5jbG9zdXJlIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgZGVzZWxlY3RBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTnVtYmVyIDogbnVtYmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdMZW5ndGggOiBsZW5ndGggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0FuZ2xlIDogYW5nbGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BvaW50IDogcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR01hdHJpeCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUmVjdCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybSA6IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCB0IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiBEb20uZWxlbWVudCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR0VsZW1lbnQgKilcbmFuZCBnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZWZzRWxlbWVudCAqKVxuYW5kIGRlZnNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVzY0VsZW1lbnQgKilcbmFuZCBkZXNjRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGl0bGVFbGVtZW50ICopXG5hbmQgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTeW1ib2xFbGVtZW50ICopXG5hbmQgc3ltYm9sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVXNlRWxlbWVudCAqKVxuYW5kIHVzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZEluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZWxlbWVudEluc3RhbmNlID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ0VsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCA6IHVzZUVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBlbGVtZW50SW5zdGFuY2VMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QgKilcbmFuZCBlbGVtZW50SW5zdGFuY2VMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGVsZW1lbnRJbnN0YW5jZSB0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ltYWdlRWxlbWVudCAqKVxuYW5kIGltYWdlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuICAoKiByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmVuZFxuXG5hbmQgc3dpdGNoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuKCogWFhYIGRlcHJlY2F0ZWQgPT4gaW50ZXJmYWNlIEdldFNWR0RvY3VtZW50ID0+IFNWR0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCkgKilcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxlRWxlbWVudCAqKVxuYW5kIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludCAqKVxuYW5kIHBvaW50ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXhUcmFuc2Zvcm0gOiBtYXRyaXggdCAtPiBwb2ludCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0ICopXG5hbmQgcG9pbnRMaXN0ID0gW3BvaW50IHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR01hdHJpeCAqKVxuYW5kIG1hdHJpeCA9IG9iamVjdFxuICBtZXRob2QgYSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbHkgOiBtYXRyaXggdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGludmVyc2UgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlTm9uVW5pZm9ybSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGVGcm9tVmVjdG9yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFkgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdYIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtICopXG5hbmQgdHJhbnNmb3JtID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IHRyYW5zZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXggOiBtYXRyaXggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRNYXRyaXggOiBtYXRyaXggdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJvdGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0ICopXG5hbmQgdHJhbnNmb3JtTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFt0cmFuc2Zvcm0gdF0gbGlzdFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY29uc29saWRhdGUgOiB0cmFuc2Zvcm0gdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCAqKVxuYW5kIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFt0cmFuc2Zvcm1MaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgcHJlc2VydmVBc3BlY3RSYXRpbyA9IG9iamVjdFxuICBtZXRob2QgYWxpZ24gOiBhbGlnbm1lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVldE9yU2xpY2UgOiBtZWV0T3JTbGljZVR5cGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBbcHJlc2VydmVBc3BlY3RSYXRpbyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZyAqKVxuYW5kIHBhdGhTZWcgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdUeXBlIDogcGF0aFNlZ21lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF0aFNlZ1R5cGVBc0xldHRlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCAqKVxuYW5kIHBhdGhTZWdDbG9zZVBhdGggPSBwYXRoU2VnXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdNb3ZldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjUmVsKilcbmFuZCBwYXRoU2VnQXJjID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsYXJnZUFyY0ZsYWcgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzd2VlcEZsYWcgOiBib29sIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvVmVydGljYWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3RcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsICAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdMaXN0ID0gW3BhdGhTZWcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQYXRoRGF0YSAqKVxuYW5kIGFuaW1hdGVkUGF0aERhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhFbGVtZW50ICopXG5hbmQgcGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQYXRoRGF0YVxuXG4gIG1ldGhvZCBwYXRoTGVuZ3RoIDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFRvdGFsTGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRQb2ludEF0TGVuZ3RoIDogbnVtYmVyX3QgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhdGhTZWdBdExlbmd0aCA6IG51bWJlcl90IC0+IGludFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoIDogcGF0aFNlZ0Nsb3NlUGF0aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3RFbGVtZW50ICopXG5hbmQgcmVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NpcmNsZUVsZW1lbnQgKilcbmFuZCBjaXJjbGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGxpcHNlRWxlbWVudCAqKVxuYW5kIGVsbGlwc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQb2ludHMgKilcbmFuZCBhbmltYXRlZFBvaW50cyA9IG9iamVjdFxuICBtZXRob2QgcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWxpbmVFbGVtZW50ICopXG5hbmQgcG9seUxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlnb25FbGVtZW50ICopXG5hbmQgcG9seWdvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50ICopXG5hbmQgdGV4dENvbnRlbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRleHRMZW5ndGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoQWRqdXN0IDogbGVuZ3RoQWRqdXN0IGFuaW1hdGVkIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXROdW1iZXJPZkNoYXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdWJTdHJpbmdMZW5ndGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5kUG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVudE9mQ2hhciA6IGludCAtPiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSb3RhdGlvbk9mQ2hhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldENoYXJOdW1BdFBvc2l0aW9uIDogcG9pbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0U3ViU3RyaW5nIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCAqKVxuYW5kIHRleHRQb3NpdGlvbmluZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb3RhdGUgOiBhbmltYXRlZE51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50ICopXG5hbmQgdGV4dEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuYW5kIHRzcGFuRWxlbWVudCA9IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuYW5kIHRyZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQYXRoRWxlbWVudCAqKVxuYW5kIHRleHRQYXRoRWxlbWVudE1ldGhvZCA9IFt0ZXh0UGF0aE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nID0gW3RleHRQYXRoU3BhY2luZ1R5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRob2RfIDogdGV4dFBhdGhFbGVtZW50TWV0aG9kIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BhY2luZyA6IHRleHRQYXRoRWxlbWVudFNwYWNpbmcgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhEZWZFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhEZWZFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhJdGVtRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoSXRlbUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdHbHlwaFJlZkVsZW1lbnQgKilcbmFuZCBnbHlwaFJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGFpbnQgOiBTVkdDb2xvciB7ICopXG5cbigqICAgLy8gUGFpbnQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX05PTkUgPSAxMDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SID0gMTAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FID0gMTAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IgPSAxMDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SID0gMTA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDEwNjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDc7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmk7ICopXG5cbigqICAgdm9pZCBzZXRVcmkoaW4gRE9NU3RyaW5nIHVyaSk7ICopXG4oKiAgIHZvaWQgc2V0UGFpbnQoaW4gdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBpbiBET01TdHJpbmcgdXJpLCBpbiBET01TdHJpbmcgcmdiQ29sb3IsIGluIERPTVN0cmluZyBpY2NDb2xvcikgcmFpc2VzKFNWR0V4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFya2VyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHU3R5bGFibGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpdFRvVmlld0JveCB7ICopXG5cbigqICAgLy8gTWFya2VyIFVuaXQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEggPSAyOyAqKVxuXG4oKiAgIC8vIE1hcmtlciBPcmllbnRhdGlvbiBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQVVUTyA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hcmtlclVuaXRzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VyV2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJIZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9yaWVudFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEFuZ2xlIG9yaWVudEFuZ2xlOyAqKVxuXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BdXRvKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BbmdsZShpbiBTVkdBbmdsZSBhbmdsZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBsb2NhbDsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZVJ1bGUgOiBTVkdDU1NSdWxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYyBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50IHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0dyYWRpZW50RWxlbWVudCAqKVxuYW5kIGFuaW1hdGVkU3ByZWFkTWV0aG9kID0gW3NwcmVhZE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCBncmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBncmFkaWVudFVuaXRzOyAqKVxuICBtZXRob2QgZ3JhZGllbnRUcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwcmVhZE1ldGhvZCA6IGFuaW1hdGVkU3ByZWFkTWV0aG9kIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBsaW5lYXJHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50ICopXG5hbmQgcmFkaWFsR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RvcEVsZW1lbnQgKilcbmFuZCBzdG9wRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIG9mZnNldCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXR0ZXJuRWxlbWVudCAqKVxuYW5kIHBhdHRlcm5FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVybkNvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHBhdHRlcm5UcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2xpcFBhdGhFbGVtZW50ICopXG5hbmQgY2xpcFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBjbGlwUGF0aFVuaXRzOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdNYXNrRWxlbWVudCAqKVxuYW5kIG1hc2tFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJFbGVtZW50ICopXG5hbmQgZmlsdGVyRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZmlsdGVyVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcHJpbWl0aXZlVW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1ggOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1kgOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldEZpbHRlclJlcyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IFNWR1N0eWxhYmxlIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggd2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBoZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyByZXN1bHQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVCbGVuZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBCbGVuZCBNb2RlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTk9STUFMID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfU0NSRUVOID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4gPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0xJR0hURU4gPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1vZGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb2xvciBNYXRyaXggVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdmFsdWVzOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcblxuKCogICAvLyBDb21wb25lbnQgVHJhbnNmZXIgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHRhYmxlVmFsdWVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2xvcGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBpbnRlcmNlcHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhbXBsaXR1ZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBleHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIG9mZnNldDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNSRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNHRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNCRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNBRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29tcG9zaXRlIE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0lOID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUiA9IDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsxOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMzsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGs0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gRWRnZSBNb2RlIFZhbHVlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9EVVBMSUNBVEUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfV1JBUCA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9OT05FID0gMzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3Qga2VybmVsTWF0cml4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGl2aXNvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJpYXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBlZGdlTW9kZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEJvb2xlYW4gcHJlc2VydmVBbHBoYTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaWZmdXNlQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYXppbXV0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGVsZXZhdGlvbjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVBvaW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcG90TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgbGltaXRpbmdDb25lQW5nbGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENoYW5uZWwgU2VsZWN0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfRyA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0IgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9BID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHhDaGFubmVsU2VsZWN0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHlDaGFubmVsU2VsZWN0b3I7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGbG9vZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25ZOyAqKVxuXG4oKiAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGluIGZsb2F0IHN0ZERldmlhdGlvblgsIGluIGZsb2F0IHN0ZERldmlhdGlvblkpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFSW1hZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlTm9kZUVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBNb3JwaG9sb2d5IE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1k7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVPZmZzZXRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVRpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBUdXJidWxlbmNlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFID0gMjsgKilcblxuKCogICAvLyBTdGl0Y2ggT3B0aW9ucyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfU1RJVENIID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG51bU9jdGF2ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzZWVkOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBzdGl0Y2hUaWxlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDdXJzb3JFbGVtZW50ICopXG5hbmQgY3Vyc29yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FFbGVtZW50ICopXG5hbmQgYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHRhcmdldCA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3RWxlbWVudCAqKVxuYW5kIHZpZXdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTY3JpcHRFbGVtZW50ICopXG5hbmQgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHByZXZpb3VzU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IG5ld1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgbmV3VHJhbnNsYXRlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICAoKiBpbmhlcml0IGVsZW1lbnRUaW1lQ29udHJvbCAqKVxuICBtZXRob2QgdGFyZ2V0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFN0YXJ0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNpbXBsZUR1cmF0aW9uIDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2V0RWxlbWVudCAqKVxuYW5kIHNldEVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVNb3Rpb25FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTVBhdGhFbGVtZW50ICopXG5hbmQgbVBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKilcbmFuZCBhbmltYXRlQ29sb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgKilcbmFuZCBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRFbGVtZW50ICopXG5hbmQgZm9udEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHbHlwaEVsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KilcbmFuZCBnbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdIS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHVktlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlU3JjRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVNyY0VsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVVyaUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VVcmlFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRm9ybWF0RWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VOYW1lRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01ldGFkYXRhRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBtZXRhZGF0YUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb3JlaWduT2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudE5TIHhtbG5zIChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoIGRvYyA6IGFsdEdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaFwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaERlZiBkb2MgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhkZWZcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhJdGVtIGRvYyA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhpdGVtXCJcblxubGV0IGNyZWF0ZUFuaW1hdGUgZG9jIDogYW5pbWF0ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZVwiXG5cbmxldCBjcmVhdGVBbmltYXRlQ29sb3IgZG9jIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlY29sb3JcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZU1vdGlvbiBkb2MgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlbW90aW9uXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVUcmFuc2Zvcm0gZG9jIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbmxldCBjcmVhdGVDaXJjbGUgZG9jIDogY2lyY2xlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjaXJjbGVcIlxuXG5sZXQgY3JlYXRlQ2xpcFBhdGggZG9jIDogY2xpcFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNsaXBwYXRoXCJcblxuKCogbGV0IGNyZWF0ZUNvbG9yUHJvZmlsZSBkb2MgOiBjb2xvclByb2ZpbGUgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sb3ItcHJvZmlsZVwiICopXG5sZXQgY3JlYXRlQ3Vyc29yIGRvYyA6IGN1cnNvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY3Vyc29yXCJcblxubGV0IGNyZWF0ZURlZnMgZG9jIDogZGVmc0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVmc1wiXG5cbmxldCBjcmVhdGVEZXNjIGRvYyA6IGRlc2NFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlc2NcIlxuXG5sZXQgY3JlYXRlRWxsaXBzZSBkb2MgOiBlbGxpcHNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbGxpcHNlXCJcblxuKCogbGV0IGNyZWF0ZUZlKiAqKVxubGV0IGNyZWF0ZUZpbHRlciBkb2MgOiBmaWx0ZXJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpbHRlclwiXG5cbmxldCBjcmVhdGVGb250IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2UgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlRm9ybWF0IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VOYW1lIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1uYW1lXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlU3JjIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1zcmNcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VVcmkgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXVyaVwiXG5cbmxldCBjcmVhdGVGb3JlaWduT2JqZWN0IGRvYyA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcmVpZ25PYmplY3RcIlxuXG5sZXQgY3JlYXRlRyBkb2MgOiBnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnXCJcblxubGV0IGNyZWF0ZUdseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaFwiXG5cbmxldCBjcmVhdGVHbHlwaFJlZiBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhyZWZcIlxuXG5sZXQgY3JlYXRlaGtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoa2VyblwiXG5cbmxldCBjcmVhdGVJbWFnZSBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1hZ2VcIlxuXG5sZXQgY3JlYXRlTGluZUVsZW1lbnQgZG9jIDogbGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZVwiXG5cbmxldCBjcmVhdGVMaW5lYXJFbGVtZW50IGRvYyA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lYXJncmFkaWVudFwiXG5cbigqIGxldCBjcmVhdGVNYXJrZXIgZG9jIDogbWFya2VyRWxlbWVudCAqKVxubGV0IGNyZWF0ZU1hc2sgZG9jIDogbWFza0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFza1wiXG5cbmxldCBjcmVhdGVNZXRhRGF0YSBkb2MgOiBtZXRhZGF0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YWRhdGFcIlxuXG5sZXQgY3JlYXRlTWlzc2luZ0dseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtaXNzaW5nLWdseXBoXCJcblxubGV0IGNyZWF0ZU1QYXRoIGRvYyA6IG1QYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtcGF0aFwiXG5cbmxldCBjcmVhdGVQYXRoIGRvYyA6IHBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0dGVybiBkb2MgOiBwYXR0ZXJuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXR0ZXJuXCJcblxubGV0IGNyZWF0ZVBvbHlnb24gZG9jIDogcG9seWdvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWdvblwiXG5cbmxldCBjcmVhdGVQb2x5bGluZSBkb2MgOiBwb2x5TGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWxpbmVcIlxuXG5sZXQgY3JlYXRlUmFkaWFsZ3JhZGllbnQgZG9jIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJhZGlhbGdyYWRpZW50XCJcblxubGV0IGNyZWF0ZVJlY3QgZG9jIDogcmVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmVjdFwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlU2V0IGRvYyA6IHNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2V0XCJcblxubGV0IGNyZWF0ZVN0b3AgZG9jIDogc3RvcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3RvcFwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlU3ZnIGRvYyA6IHN2Z0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ZnXCJcblxubGV0IGNyZWF0ZVN3aXRjaCBkb2MgOiBzd2l0Y2hFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN3aXRjaFwiXG5cbmxldCBjcmVhdGVTeW1ib2wgZG9jIDogc3ltYm9sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzeW1ib2xcIlxuXG5sZXQgY3JlYXRlVGV4dEVsZW1lbnQgZG9jIDogdGV4dEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dFwiXG5cbmxldCBjcmVhdGVUZXh0cGF0aCBkb2MgOiB0ZXh0UGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dHBhdGhcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZVRyZWYgZG9jIDogdHJlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJlZlwiXG5cbmxldCBjcmVhdGVUc3BhbiBkb2MgOiB0c3BhbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHNwYW5cIlxuXG5sZXQgY3JlYXRlVXNlIGRvYyA6IHVzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidXNlXCJcblxubGV0IGNyZWF0ZVZpZXcgZG9jIDogdmlld0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlld1wiXG5cbmxldCBjcmVhdGV2a2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZrZXJuXCJcblxuKCoqKiopXG5cbmxldCBzdmdfZWxlbWVudCA6IGVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1NWR0VsZW1lbnRcblxubGV0IGRvY3VtZW50ID0gSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA6IGVsZW1lbnQgdCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBlIC0+IGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIGUgZWxzZSByYWlzZSBOb3RfZm91bmQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCAoZSA6ICNEb20ubm9kZSBKcy50KSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSAoZSA6ICNlbGVtZW50IHQpIHRhZyA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlIDogYUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFcIlxuXG4gIGxldCBhbHRHbHlwaCBlIDogYWx0R2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmIGUgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoZGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtIGUgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGl0ZW1cIlxuXG4gIGxldCBhbmltYXRlIGUgOiBhbmltYXRlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciBlIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZWNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiBlIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVtb3Rpb25cIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtIGUgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0IG9wdCA9XG4gICAgdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRldHJhbnNmb3JtXCJcblxuICBsZXQgY2lyY2xlIGUgOiBjaXJjbGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjaXJjbGVcIlxuXG4gIGxldCBjbGlwUGF0aCBlIDogY2xpcFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjbGlwcGF0aFwiXG5cbiAgKCogbGV0IENvbG9yUHJvZmlsZSBlIDogY29sb3JQcm9maWxlIHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjb2xvci1wcm9maWxlXCIgKilcbiAgbGV0IGN1cnNvciBlIDogY3Vyc29yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY3Vyc29yXCJcblxuICBsZXQgZGVmcyBlIDogZGVmc0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlZnNcIlxuXG4gIGxldCBkZXNjIGUgOiBkZXNjRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVzY1wiXG5cbiAgbGV0IGVsbGlwc2UgZSA6IGVsbGlwc2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJlbGxpcHNlXCJcblxuICAoKiBsZXQgRmUqICopXG4gIGxldCBmaWx0ZXIgZSA6IGZpbHRlckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZpbHRlclwiXG5cbiAgbGV0IGZvbnQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250XCJcblxuICBsZXQgZm9udEZhY2UgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250RmFjZUZvcm1hdCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG4gIGxldCBmb250RmFjZU5hbWUgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgbGV0IGZvbnRGYWNlU3JjIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRGYWNlVXJpIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgZSA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb3JlaWdub2JqZWN0XCJcblxuICBsZXQgZyBlIDogZ0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdcIlxuXG4gIGxldCBnbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaFwiXG5cbiAgbGV0IGdseXBoUmVmIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBocmVmXCJcblxuICBsZXQgaGtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImhrZXJuXCJcblxuICBsZXQgaW1hZ2UgZSA6IGltYWdlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaW1hZ2VcIlxuXG4gIGxldCBsaW5lRWxlbWVudCBlIDogbGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVcIlxuXG4gIGxldCBsaW5lYXJFbGVtZW50IGUgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVhcmdyYWRpZW50XCJcblxuICAoKiBsZXQgTWFya2VyIGUgOiBtYXJrZXJFbGVtZW50ICopXG4gIGxldCBtYXNrIGUgOiBtYXNrRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWFza1wiXG5cbiAgbGV0IG1ldGFEYXRhIGUgOiBtZXRhZGF0YUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1ldGFkYXRhXCJcblxuICBsZXQgbWlzc2luZ0dseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBtUGF0aCBlIDogbVBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtcGF0aFwiXG5cbiAgbGV0IHBhdGggZSA6IHBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXRoXCJcblxuICBsZXQgcGF0dGVybiBlIDogcGF0dGVybkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdHRlcm5cIlxuXG4gIGxldCBwb2x5Z29uIGUgOiBwb2x5Z29uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWdvblwiXG5cbiAgbGV0IHBvbHlsaW5lIGUgOiBwb2x5TGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlsaW5lXCJcblxuICBsZXQgcmFkaWFsZ3JhZGllbnQgZSA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmFkaWFsZ3JhZGllbnRcIlxuXG4gIGxldCByZWN0IGUgOiByZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmVjdFwiXG5cbiAgbGV0IHNjcmlwdCBlIDogc2NyaXB0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2NyaXB0XCJcblxuICBsZXQgc2V0IGUgOiBzZXRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzZXRcIlxuXG4gIGxldCBzdG9wIGUgOiBzdG9wRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3RvcFwiXG5cbiAgbGV0IHN0eWxlIGUgOiBzdHlsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0eWxlXCJcblxuICBsZXQgc3ZnIGUgOiBzdmdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdmdcIlxuXG4gIGxldCBzd2l0Y2ggZSA6IHN3aXRjaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN3aXRjaFwiXG5cbiAgbGV0IHN5bWJvbCBlIDogc3ltYm9sRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ltYm9sXCJcblxuICBsZXQgdGV4dEVsZW1lbnQgZSA6IHRleHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0XCJcblxuICBsZXQgdGV4dHBhdGggZSA6IHRleHRQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dHBhdGhcIlxuXG4gIGxldCB0aXRsZSBlIDogdGl0bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0aXRsZVwiXG5cbiAgbGV0IHRyZWYgZSA6IHRyZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0cmVmXCJcblxuICBsZXQgdHNwYW4gZSA6IHRzcGFuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHNwYW5cIlxuXG4gIGxldCB1c2UgZSA6IHVzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInVzZVwiXG5cbiAgbGV0IHZpZXcgZSA6IHZpZXdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2aWV3XCJcblxuICBsZXQgdmtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZrZXJuXCJcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50U291cmNlICopXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgc3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RFdmVudElkIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuICAoKiBtZXRob2Qgc291cmNlIDogdW5pdCAqKVxuZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnRTb3VyY2UgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgdXJsIDogc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogc3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aXRoQ3JlZGVudGlhbHMgYiA6IG9wdGlvbnMgdCA9XG4gIGxldCBpbml0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGluaXQjIy53aXRoQ3JlZGVudGlhbHMgOj0gSnMuYm9vbCBiO1xuICBpbml0XG5cbmxldCBldmVudFNvdXJjZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGV2ZW50U291cmNlX29wdGlvbnMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBjb25zb2xlID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzYgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzcgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfOCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWcgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8gOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8xIDogYm9vbCB0IC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8yIDogYm9vbCB0IC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzMgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF80IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF81IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyeG1sIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhY2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXAgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZUVuZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmV4dGVybmFsIGdldF9jb25zb2xlIDogdW5pdCAtPiBjb25zb2xlIHQgPSBcImNhbWxfanNfZ2V0X2NvbnNvbGVcIlxuXG5sZXQgY29uc29sZSA9IGdldF9jb25zb2xlICgpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3NpdGlvbkVycm9yQ29kZVxuXG50eXBlIHdhdGNoSWRcblxuY2xhc3MgdHlwZSBjb29yZGluYXRlcyA9IG9iamVjdFxuICBtZXRob2QgbGF0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvbmdpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGVBY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWRpbmcgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVlZCA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29vcmRzIDogY29vcmRpbmF0ZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVzdGFtcCA6IEpzLmRhdGUgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25PcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBlbmFibGVIaWdoQWNjdXJhY3kgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVvdXQgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4aW11bUFnZSA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25FcnJvciA9IG9iamVjdFxuICBtZXRob2QgX1BFUk1JU1NJT05fREVOSUVEXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPU0lUSU9OX1VOQVZBSUxBQkxFXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RJTUVPVVQgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBnZW9sb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q3VycmVudFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB3YXRjaFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHdhdGNoSWQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbGVhcldhdGNoIDogd2F0Y2hJZCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcG9zaXRpb25fb3B0aW9ucyAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgZ2VvbG9jYXRpb24gPVxuICBsZXQgeCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5uYXZpZ2F0b3IgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgeCB0aGVuIHgjIy5nZW9sb2NhdGlvbiBlbHNlIHhcblxuKCogdW5kZWZpbmVkICopXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBnZW9sb2NhdGlvblxuIiwiY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm91bmRpbmdDbGllbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEJvdW5kcyA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmF0aW8gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzSW50ZXJzZWN0aW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZCA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGRzIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50ID1cbiAgSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKCAgIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50XG4gICAgICAgICAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudFxuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOCBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFNoYXJlZCA9IHNpZ1xuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIHZhbCBvYmplY3Rfb3B0aW9ucyA6IHVuaXQgLT4gb2JqZWN0X29wdGlvbnMgSnMudFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2hhcmVkIDogU2hhcmVkID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9iamVjdF9vcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb2xsYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNvbGxhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzYWdlID0gSnMuc3RyaW5nIFwic29ydFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlbnNpdGl2aXR5ID0gSnMuc3RyaW5nIFwidmFyaWFudFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIGlnbm9yZVB1bmN0dWF0aW9uID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWVyaWMgPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgY2FzZUZpcnN0ID0gSnMuc3RyaW5nIFwiZmFsc2VcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYXJlIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IGludCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIERhdGVUaW1lRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgZGF0ZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXlQZXJpb2QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ckN5Y2xlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmb3JtYXRNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBkYXRlU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhbGVuZGFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheVBlcmlvZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91cjEyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXJDeWNsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmb3JtYXRNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB3ZWVrZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGVyYSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB5ZWFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1vbnRoID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbnV0ZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzZWNvbmQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZU5hbWUgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5kYXRlIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLmRhdGUgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhY3REaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeVNpZ24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgbm90YXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2lnbkRpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXREaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdNb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ1ByaW9yaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ0luY3JlbWVudCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdHJhaWxpbmdaZXJvRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgY29tcGFjdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3kgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lEaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5U2lnbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBub3RhdGlvbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2lnbkRpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc3R5bGUgPSBKcy5zdHJpbmcgXCJkZWNpbWFsXCJcblxuICAgICAgdmFsIG11dGFibGUgdW5pdCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2VHcm91cGluZyA9IEpzLl90cnVlXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nTW9kZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ1ByaW9yaXR5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nSW5jcmVtZW50ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRyYWlsaW5nWmVyb0Rpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUludGVnZXJEaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBsdXJhbFJ1bGVzID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBwbHVyYWxDYXRlZ29yaWVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIF90eXBlID0gSnMuc3RyaW5nIFwiY2FyZGluYWxcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzZWxlY3QgOiBKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5jbGFzcyB0eXBlIGludGwgPSBvYmplY3RcbiAgbWV0aG9kIF9Db2xsYXRvciA6IENvbGxhdG9yLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EYXRlVGltZUZvcm1hdCA6IERhdGVUaW1lRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OdW1iZXJGb3JtYXQgOiBOdW1iZXJGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BsdXJhbFJ1bGVzIDogUGx1cmFsUnVsZXMuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q2Fub25pY2FsTG9jYWxlcyA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgaW50bCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bFxuXG5sZXQgY29sbGF0b3JfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0NvbGxhdG9yXG5cbmxldCBkYXRlVGltZUZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fRGF0ZVRpbWVGb3JtYXRcblxubGV0IG51bWJlckZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fTnVtYmVyRm9ybWF0XG5cbmxldCBwbHVyYWxSdWxlc19jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fUGx1cmFsUnVsZXNcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGxcbiIsImluY2x1ZGUgSnNfb2Zfb2NhbWwuSnNcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbC5Vcmxcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sLkRvbV9odG1sXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sLkZpcmVidWdcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWwuRmlsZVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sLkRvbVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXlcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbC5SZWdleHBcblxudHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSBTdGRsaWIucmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG50eXBlIHdpbmRvdyA9IERvbV9odG1sLndpbmRvd1xuXG5sZXQgdG9fYXJyYXlmIGYgYSA9IEFycmF5Lm1hcCBmICh0b19hcnJheSBhKVxuXG5sZXQgb2ZfYXJyYXlmIGYgYSA9IGFycmF5IChBcnJheS5tYXAgZiBhKVxuXG5sZXQgdG9fbGlzdCBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheSBhXG5cbmxldCBvZl9saXN0IGwgPSBhcnJheSBAQCBBcnJheS5vZl9saXN0IEBAIGxcblxubGV0IHRvX2xpc3RmIGYgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXlmIGYgYVxuXG5sZXQgb2ZfbGlzdGYgZiBhID0gb2ZfYXJyYXlmIGYgQEAgQXJyYXkub2ZfbGlzdCBhXG5cbmxldCBvcHRkZWYgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCB1bm9wdGRlZl9mIGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiBmIHhcblxubGV0IHVub3B0ZGVmIGRlZiB4ID0gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4geFxuXG5sZXQgY29udmRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgb3B0IGYgPSBmdW5jdGlvbiBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQgY29udm9wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQganNfbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoc3RyaW5nIHMpXG5cbmxldCBsb2cgZm10ID1cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfZm10IC0+IGpzX2xvZyAoc3RyaW5nIChGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSkpKVxuICAgIEZvcm1hdC5zdHJfZm9ybWF0dGVyIGZtdFxuXG5sZXQgZXJyb3Jfb2Zfc3RyaW5nIHMgPSBuZXclanMgZXJyb3JfY29uc3RyIChzdHJpbmcgcylcbmxldCBjYXRjaF9leG4gZiA9IGZ1bmN0aW9uXG4gIHwgSnNfZXJyb3IuRXhuIGUgLT4gZiAoSnNfZXJyb3IudG9fZXJyb3IgZSlcbiAgfCBleG4gLT4gZiBAQCBlcnJvcl9vZl9zdHJpbmcgQEAgUHJpbnRleGMudG9fc3RyaW5nIGV4blxuXG5tb2R1bGUgQU9wdCA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG4gIGxldCBudWxsIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGxldCB1bmRlZmluZWQgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIHJldHVybiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGNvZXJjZSA6ICdhIHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGpzX2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbiAgbGV0IGlzX25vbmUgKHggOiAnYSB0KSA6IGJvb2wgPSB4ID09IHVuZGVmaW5lZCB8fCBqc19lcXVhbHMgeCBudWxsXG4gIGxldCBtYXAgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiKSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSByZXR1cm4gKGYgKGNvZXJjZSB4KSlcbiAgbGV0IGJpbmQgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiIHQpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIGYgKGNvZXJjZSB4KVxuICBsZXQgdGVzdCAoeCA6ICdhIHQpIDogYm9vbCA9IG5vdCAoaXNfbm9uZSB4KVxuICBsZXQgaXRlciAoeCA6ICdhIHQpIChmIDogJ2EgLT4gdW5pdCkgOiB1bml0ID0gaWYgbm90IChpc19ub25lIHgpIHRoZW4gZiAoY29lcmNlIHgpXG4gIGxldCBjYXNlICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdiKSAoZyA6ICdhIC0+ICdiKSA6ICdiID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIGcgKGNvZXJjZSB4KVxuICBsZXQgZ2V0ICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdhKSA6ICdhID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIChjb2VyY2UgeClcbiAgbGV0IG9wdGlvbiA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIG9wdGlvbikgOiAnYSB0ID0gbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICBsZXQgdG9fb3B0aW9uICh4IDogJ2EgdCkgOiAnYSBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBsZXQgYW9wdCA/KG5vbmU9KHVuZGVmaW5lZCA6ICdiIHQpKSAoZiA6ICdhIC0+ICdiKSA6ICdhIG9wdGlvbiAtPiAnYiB0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiAoZiB4KVxuICBsZXQgdG9fYW9wdCAoZiA6ICdhIC0+ICdiKSAoeCA6ICdhIHQpIDogJ2Igb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgKGYgeCkpXG5lbmRcbnR5cGUgJ2EgYW9wdCA9ICdhIEFPcHQudFxuXG50eXBlICdhIGNhc2VfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmID4gZ2VuX3Byb3BcblxubGV0IHJlYyBjaG9vc2VfY2FzZV9vcHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGggOjogdCAtPiBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGggd2l0aCBOb25lIC0+IGNob29zZV9jYXNlX29wdCB0IHwgU29tZSBfIC0+IGhcblxubGV0IGNob29zZV9jYXNlIGwgPSBjaG9vc2VfY2FzZV9vcHQgKExpc3QubWFwIE9wdGRlZi5yZXR1cm4gbClcblxubGV0IG9iamVjdF9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5sZXQgYXNzaWduIChvMSA6IF8gdCkgKG8yIDogXyB0KSA9IFVuc2FmZS5jb2VyY2UgKG9iamVjdF9jcyMjYXNzaWduIG8xIG8yKVxubGV0IGFzc2lnbl9saXN0IGwgPSBVbnNhZmUuY29lcmNlIChVbnNhZmUubWV0aF9jYWxsIG9iamVjdF9jcyBcImFzc2lnblwiIChBcnJheS5vZl9saXN0IGwpKVxuXG5sZXQgcmVtb3ZlX3VuZGVmaW5lZCBvID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvIGluXG4gIGtleXMjI2ZvckVhY2ggKHdyYXBfY2FsbGJhY2sgKGZ1biBrIF8gXyAtPlxuICAgICAgaWYgbm90IChPcHRkZWYudGVzdCAoVW5zYWZlLmdldCBvIGspKSB0aGVuIFVuc2FmZS5kZWxldGUgbyBrKSlcbiIsIm9wZW4gSnNcblxudHlwZSBub25yZWMgJ2EgdCA9IDwgPiB0XG5cbmxldCBvYmogPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSAodiA6ICdhKSA9IFVuc2FmZS5zZXQgdCAoc3RyaW5nIGspIHZcblxubGV0IGFkZF9saXN0ICh0IDogJ2EgdCkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgbFxuXG5sZXQgYWRkX2xpc3RmICh0IDogJ2IgdCkgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayAoZiB2KSkgbFxuXG5sZXQgbWFrZSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3QgdCBsO1xuICB0XG5cbmxldCBtYWtlZiAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdiIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdGYgdCBmIGw7XG4gIHRcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA9IFVuc2FmZS5kZWxldGUgdCAoc3RyaW5nIGspXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpIDogJ2Egb3B0aW9uID1cbiAgT3B0ZGVmLnRvX29wdGlvbiAoVW5zYWZlLmdldCB0IChzdHJpbmcgaykpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBzdHJpbmcgbGlzdCA9XG4gIHRvX2xpc3RmIHRvX3N0cmluZyBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXMgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYSkgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtc2YgKGYgOiAoJ2EgLT4gJ2IpKSAodCA6ICdhIHQpIDogKHN0cmluZyAqICdiKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBmIEBAIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgbGVuZ3RoICh0IDogJ2EgdCkgPSAob2JqIyNrZXlzIHQpIyMubGVuZ3RoXG5cbmxldCBtZXJnZSAobCA6ICdhIHQgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSAoaXRlbXMgeCkpIGw7XG4gIHRcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBwcm9taXNlMCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0aGVuXyA6ICgnYSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgICBtZXRob2QgY2F0Y2ggOiAoJ2IgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvbWlzZSA9IFsnYSwgZXJyb3IgdF0gcHJvbWlzZTBcblxudHlwZSAoJ2EsICdiKSBwcm9taXNlX2NzID1cbiAgKCgoJ2EgLT4gdW5pdCkgLT4gKCdiIC0+IHVuaXQpIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQpXG4gIGNvbnN0clxuXG5sZXQgcHJvbWlzZSBmID1cbiAgbGV0IGNzIDogKCdhLCAnYikgcHJvbWlzZV9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fUHJvbWlzZSBpblxuICBuZXclanMgY3MgKHdyYXBfY2FsbGJhY2sgZilcblxubGV0IGp0aGVuMCA/ZXJyb3IgKHByb20gOiAoJ2EsICdiIHQpIHByb21pc2UwIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gKGZ1biB4IC0+IGVmIChVbnNhZmUuY29lcmNlIHgpKSBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuID9lcnJvciAocHJvbSA6ICdhIHByb21pc2UgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID0gbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gZWYgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbjBfb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuMCBwcm9tIGZcbmxldCBqdGhlbl9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4gcHJvbSBmXG5cbmxldCBydGhlbiBwcm9tIGYgPVxuICBqdGhlbiB+ZXJyb3I6KGZ1biBlIC0+IGYgQEAgRXJyb3IgZSkgcHJvbSAoZnVuIHggLT4gZiAoT2sgeCkpXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCBsb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIG8xIG8yXG5cbmxldCBsb2czIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyBvMSBvMiBvM1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKVxuXG5sZXQgbG9nX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBsb2dfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjbG9nXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGRlYnVnIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIG9cblxubGV0IGRlYnVnMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiBvMSBvMlxuXG5sZXQgZGVidWczIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIG8xIG8yIG8zXG5cbmxldCBkZWJ1Z19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBzKVxuXG5sZXQgZGVidWdfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZGVidWdfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZGVidWdfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgd2FybiBvID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIG9cblxubGV0IHdhcm4yIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgbzEgbzJcblxubGV0IHdhcm4zIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgbzEgbzIgbzNcblxubGV0IHdhcm5fc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gKEpzLnN0cmluZyBzKVxuXG5sZXQgd2Fybl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IHdhcm5fc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjd2Fybl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBlcnJvciBvID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciBvXG5cbmxldCBlcnJvcjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgbzEgbzJcblxubGV0IGVycm9yMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyBvMSBvMiBvM1xuXG5sZXQgZXJyb3Jfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcylcblxubGV0IGVycm9yX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGVycm9yX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBiaWdJbnQgPSBvYmplY3RcbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgb3B0ZGVmIC0+IF8gdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB2YWx1ZU9mIDogYmlnSW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9ucmVjIHQgPSBiaWdJbnQgdFxuXG5sZXQgYmlnSW50IDogKFVuc2FmZS5hbnkgLT4gdCkgPSBVbnNhZmUucHVyZV9qc19leHByIFwiQmlnSW50XCJcblxubGV0IG9mX3N0cmluZyBzID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIHN0cmluZyBzKVxubGV0IG9mX2ludCAoaSA6IGludCkgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgaSlcbmxldCBvZl9pbnQ2NCAoaSA6IGludDY0KSA9IG9mX3N0cmluZyAoSW50NjQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfbmF0aXZlIChpIDogbmF0aXZlaW50KSA9IG9mX3N0cmluZyAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxubGV0IG9mX2Zsb2F0IGYgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgbnVtYmVyX29mX2Zsb2F0IGYpXG5cbmxldCB0b19sb2NhbGVfc3RyaW5nID9mbXQgP29wdGlvbnMgKG4gOiB0KSA9XG4gIHRvX3N0cmluZyAobiMjdG9Mb2NhbGVTdHJpbmcgKG9wdGRlZiBzdHJpbmcgZm10KSAoT3B0ZGVmLm9wdGlvbiBvcHRpb25zKSlcbmxldCB0b19zdHJpbmcgKG4gOiB0KSA9IHRvX3N0cmluZyBuIyN0b1N0cmluZ1xuIiwib3BlbiBKc1xuXG5sZXQgc2V0SW5uZXJIdG1sIGVsdCBzID0gZWx0IyMuaW5uZXJIVE1MIDo9IHN0cmluZyBzXG5cbmxldCBzZXRUZXh0IGVsdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIHMgLT5cbiAgICAgIGVsdCMjLnRleHRDb250ZW50IDo9IHNvbWUgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2FkZCAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzc2VzIGVsdCBsID0gTGlzdC5pdGVyIChhZGRDbGFzcyBlbHQpIGxcblxubGV0IHJlbW92ZUNsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNyZW1vdmUgKHN0cmluZyBzKVxuXG5sZXQgY29udGFpbnNDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjY29udGFpbnMgKHN0cmluZyBzKVxuXG5sZXQgc2V0QXR0cmlidXRlIGVsdCBrZXkgdmFsdWUgPSBlbHQjI3NldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkgKHN0cmluZyB2YWx1ZSlcblxubGV0IHJlbW92ZUF0dHJpYnV0ZSBlbHQga2V5ID0gZWx0IyNyZW1vdmVBdHRyaWJ1dGUgKHN0cmluZyBrZXkpXG5cbmxldCBnZXRBdHRyaWJ1dGUgZWx0IGtleSA9IE9wdC50b19vcHRpb24gKGVsdCMjZ2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSlcblxubGV0IHNldENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYWRkQ1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgbGV0IHN0eWxlcyA9XG4gICAgbWF0Y2ggZ2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBzdHlsZXNcbiAgICB8IFNvbWUgb2xkX3N0eWxlcyAtPlxuICAgICAgICBvbGRfc3R5bGVzIF4gXCI7IFwiIF4gc3R5bGVzXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYXBwZW5kQ2hpbGQgPSBEb20uYXBwZW5kQ2hpbGRcblxubGV0IHJlbW92ZUNoaWxkID0gRG9tLnJlbW92ZUNoaWxkXG5cbmxldCBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPSBMaXN0Lml0ZXIgKERvbS5hcHBlbmRDaGlsZCBwYXJlbnQpIGNoaWxkcmVuXG5cbmxldCBjaGlsZHJlbiBwYXJlbnQgPSBEb20ubGlzdF9vZl9ub2RlTGlzdCBwYXJlbnQjIy5jaGlsZE5vZGVzXG5cbmxldCByZW1vdmVDaGlsZGkgcGFyZW50IGkgPVxuICBtYXRjaCBMaXN0Lm50aF9vcHQgKGNoaWxkcmVuIHBhcmVudCkgaSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIGNoaWxkIC0+XG4gICAgICByZW1vdmVDaGlsZCBwYXJlbnQgY2hpbGRcblxubGV0IHJlbW92ZUNoaWxkcmVuIHBhcmVudCA9IExpc3QuaXRlciAocmVtb3ZlQ2hpbGQgcGFyZW50KSAoY2hpbGRyZW4gcGFyZW50KVxuXG5sZXQgcmVwbGFjZUNoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9XG4gIHJlbW92ZUNoaWxkcmVuIHBhcmVudCA7XG4gIGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlblxuXG5sZXQgYnlfaWQgcyA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkIHNcblxubGV0IGFkZExpc3RlbmVyID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCBldiBmID1cbiAgbGV0IGNhcHR1cmUgPSBPcHRpb24ubWFwIGJvb2wgY2FwdHVyZSBpblxuICBsZXQgb25jZSA9IE9wdGlvbi5tYXAgYm9vbCBvbmNlIGluXG4gIGxldCBwYXNzaXZlID0gT3B0aW9uLm1hcCBib29sIHBhc3NpdmUgaW5cbiAgaWdub3JlIEBAXG4gIERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IChEb20uRXZlbnQubWFrZSBldilcbiAgICAoRG9tLmhhbmRsZXIgKGZ1biBlIC0+IGJvb2wgKGYgZSkpKVxuXG5tb2R1bGUgRWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGNsYXNzZXMgPSBbXSkgPyhzdHlsZXMgPSBbXSkgPyhsaXN0ZW4gPSBbXSkgPyhhdHRyID0gW10pID90ZXh0IGZcbiAgICAgIGNoaWxkcmVuID1cbiAgICBsZXQgZWx0ID0gZiBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIExpc3QuaXRlciAoZnVuIChldiwgZikgLT4gYWRkTGlzdGVuZXIgZWx0IGV2IGYpIGxpc3RlbiA7XG4gICAgYWRkQ2xhc3NlcyBlbHQgY2xhc3NlcyA7XG4gICAgc2V0Q1NTIGVsdCBzdHlsZXMgO1xuICAgIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBzZXRBdHRyaWJ1dGUgZWx0IGsgdikgYXR0ciA7XG4gICAgc2V0VGV4dCBlbHQgdGV4dCA7XG4gICAgYXBwZW5kQ2hpbGRyZW4gZWx0IGNoaWxkcmVuIDtcbiAgICBlbHRcblxuICBsZXQgYnV0dG9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVCdXR0b24gY2hpbGRyZW5cblxuICBsZXQgZGl2ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVEaXYgY2hpbGRyZW5cblxuICBsZXQgYSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQSBjaGlsZHJlblxuXG4gIGxldCBzcGFuID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTcGFuIGNoaWxkcmVuXG5cbiAgbGV0IGZvcm0gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUZvcm0gY2hpbGRyZW5cblxuICBsZXQgb3B0aW9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVPcHRpb24gY2hpbGRyZW5cblxuICBsZXQgc2VsZWN0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTZWxlY3QgY2hpbGRyZW5cblxuICBsZXQgaW5wdXQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0ICgpID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlucHV0IFtdXG5cbiAgbGV0IGlmcmFtZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSWZyYW1lIGNoaWxkcmVuXG5cbiAgbGV0IGxhYmVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMYWJlbCBjaGlsZHJlblxuXG4gIGxldCB1bCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVWwgY2hpbGRyZW5cblxuICBsZXQgbGkgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxpIGNoaWxkcmVuXG5cbiAgbGV0IGltZyA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW1nIGNoaWxkcmVuXG5cbiAgbGV0IHNjcmlwdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2NyaXB0IGNoaWxkcmVuXG5cbiAgbGV0IHRhYmxlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUYWJsZSBjaGlsZHJlblxuXG4gIGxldCB0ciA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVHIgY2hpbGRyZW5cblxuICBsZXQgdGggP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRoIGNoaWxkcmVuXG5cbiAgbGV0IHRkID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUZCBjaGlsZHJlblxuZW5kXG5cbmxldCBlbmNhcHNlIHMgPSBcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIlxuXG5sZXQgc3RyaW5nc190b19hcnJheSBsID0gXCJbXCIgXiBTdHJpbmcuY29uY2F0IFwiLFwiIGwgXiBcIl1cIlxuXG5sZXQgc3RyaW5nc190b19vYmplY3QgbCA9XG4gIGxldCBzID1cbiAgICBcIntcIlxuICAgIF4gU3RyaW5nLmNvbmNhdCBcIixcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gZW5jYXBzZSBrIF4gXCI6XCIgXiB2KSBsKVxuICAgIF4gXCJ9XCJcbiAgaW5cbiAgdHJ5IF9KU09OIyNwYXJzZSAoc3RyaW5nIHMpXG4gIHdpdGggXyAtPlxuICAgIGxvZ19zdHIgKFwiY2Fubm90IHBhcnNlIGpzb24gXCIgXiBzKSA7XG4gICAgVW5zYWZlLm9iaiBbfHxdXG4iLCJvcGVuIEV6anNfbWluXG5cbm1vZHVsZSBUeXBlcyA9IEV6anNfaWRiX3R5cGVzXG5vcGVuIFR5cGVzXG5cbnR5cGUgbW9kZSA9IFJFQURPTkxZIHwgUkVBRFdSSVRFIHwgVkVSU0lPTkNIQU5HRVxudHlwZSBkaXJlY3Rpb24gPSBORVhUIHwgUFJFViB8IE5FWFRVTklRVUUgfCBQUkVWVU5JUVVFXG5cbnR5cGUgZGJfb3B0aW9ucyA9IHsga2V5X3BhdGggOiBzdHJpbmcgb3B0aW9uOyBhdXRvX2luY3JlbWVudCA6IGJvb2wgb3B0aW9uIH1cblxudHlwZSBkYl91cGdyYWRlID0geyBvbGRfdmVyc2lvbiA6IGludDsgbmV3X3ZlcnNpb24gOiBpbnQgfVxuXG50eXBlIGluZGV4X29wdGlvbnMgPSB7IHVuaXF1ZSA6IGJvb2wgb3B0aW9uOyBtdWx0aV9lbnRyeSA6IGJvb2wgb3B0aW9uOyBsb2NhbGUgOiBib29sIG9wdGlvbiB9XG5cbm1vZHVsZSB0eXBlIFRyX3NpZyA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBqc1xuICB2YWwgdG9fanMgOiB0IC0+IGpzXG4gIHZhbCBvZl9qcyA6IGpzIC0+IHRcbmVuZFxuXG5sZXQgc3RyX29mX21vZGUgPSBmdW5jdGlvblxuICB8IFJFQURPTkxZIC0+IHN0cmluZyBcInJlYWRvbmx5XCJcbiAgfCBSRUFEV1JJVEUgLT4gc3RyaW5nIFwicmVhZHdyaXRlXCJcbiAgfCBWRVJTSU9OQ0hBTkdFIC0+IHN0cmluZyBcInZlcnNpb25jaGFuZ2VcIlxuXG5sZXQgc3RyX29mX2RpcmVjdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTkVYVCAtPiBzdHJpbmcgXCJuZXh0XCJcbiAgfCBQUkVWIC0+IHN0cmluZyBcInByZXZcIlxuICB8IE5FWFRVTklRVUUgLT4gc3RyaW5nIFwibmV4dHVuaXF1ZVwiXG4gIHwgUFJFVlVOSVFVRSAtPiBzdHJpbmcgXCJwcmV2dW5pcXVlXCJcblxubGV0IGlEQktleVJhbmdlIDogVW5zYWZlLmFueSBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIlxubGV0IGluZGV4ZWREQiA6IGpzX3N0cmluZyB0IGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIlxuXG5sZXQgcmVzdWx0IHIgPSByIyMucmVzdWx0XG5cbmxldCB3cmFwID9lcnJvciA/Y2FsbGJhY2sgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChyZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IHdyYXBmID9lcnJvciA/Y2FsbGJhY2sgZyByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKGcgQEAgcmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCBkYl91cGdyYWRlX2V2ZW50IChlIDogaURCVmVyc2lvbkNoYW5nZUV2ZW50IHQpID0ge1xuICBvbGRfdmVyc2lvbiA9IGUjIy5vbGRWZXJzaW9uO1xuICBuZXdfdmVyc2lvbiA9IGUjIy5uZXdWZXJzaW9uO1xufVxuXG5sZXQgb3BlbkRCID91cGdyYWRlID9lcnJvciA/dmVyc2lvbiBuYW1lIGNhbGxiYWNrID1cbiAgbGV0IGluZGV4ZWREQiA6IF8gaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiIGluXG4gIGxldCByID0gbGF6eSAoaW5kZXhlZERCIyNfb3BlbiAoc3RyaW5nIG5hbWUpIChBT3B0Lm9wdGlvbiB2ZXJzaW9uKSkgaW5cbiAgd3JhcCA/ZXJyb3IgfmNhbGxiYWNrIHI7XG4gIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gIHIjIy5vbnVwZ3JhZGVuZWVkZWQgOj1cbiAgICBBT3B0LmFvcHQgKGZ1biB1IC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgIGxldCB2ID0gZGJfdXBncmFkZV9ldmVudCBlIGluXG4gICAgICAgIGxldCBkYiA9IHJlc3VsdCByIGluXG4gICAgICAgIHUgZGIgdikpIHVwZ3JhZGVcblxubGV0IHRyYW5zYWN0aW9uIHIgOiBpREJUcmFuc2FjdGlvbiB0ID0gciMjLnRyYW5zYWN0aW9uXG5cbmxldCBjcmVhdGVfZGJfb3B0aW9ucyB7a2V5X3BhdGg7IGF1dG9faW5jcmVtZW50fSA6IGNyZWF0ZV9kYl9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgdmFsIGtleVBhdGggPSBBT3B0LmFvcHQgc3RyaW5nIGtleV9wYXRoXG4gIHZhbCBhdXRvSW5jcmVtZW50ID0gQU9wdC5hb3B0IGJvb2wgYXV0b19pbmNyZW1lbnRcbmVuZFxuXG5sZXQgY3JlYXRlX3N0b3JlID9vcHRpb25zIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgPVxuICBVbnNhZmUuY29lcmNlIEBAXG4gIGRiIyNjcmVhdGVPYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpIChBT3B0LmFvcHQgY3JlYXRlX2RiX29wdGlvbnMgb3B0aW9ucylcblxubGV0IGdldF9zdG9yZSA/bW9kZSAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lIDogKF8sIF8pIGlEQk9iamVjdFN0b3JlIHQgPVxuICBsZXQgdHIgPSBkYiMjdHJhbnNhY3Rpb24gKGFycmF5IFt8IHN0cmluZyBuYW1lIHxdKSAoQU9wdC5hb3B0IHN0cl9vZl9tb2RlIG1vZGUpIGluXG4gIFVuc2FmZS5jb2VyY2UgQEAgdHIjI29iamVjdFN0b3JlIChzdHJpbmcgbmFtZSlcblxubW9kdWxlIFN0b3JlKEsgOiBUcl9zaWcpKEQgOiBUcl9zaWcpID0gc3RydWN0XG5cbiAgdHlwZSBzdG9yZSA9IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0XG4gIHR5cGUga2V5cyA9IEsgb2YgSy50IHwgS1Igb2YgSy5qcyBpREJLZXlSYW5nZSB0XG5cbiAgbGV0IGNyZWF0ZSA/b3B0aW9ucyBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyBkYiBuYW1lXG5cbiAgbGV0IHN0b3JlID9tb2RlIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgZ2V0X3N0b3JlID9tb2RlIGRiIG5hbWVcblxuICBsZXQgYWRkID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIEsub2ZfanMgQEAgbGF6eSAoc3QjI2FkZCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcHV0ID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwID9jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI3B1dCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcmFuZ2UgP29sb3dlciA/b3VwcGVyID9sb3dlciA/dXBwZXIgKCkgPVxuICAgIGxldCBpREJLZXlSYW5nZSA6IEsuanMgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCIgaW5cbiAgICBtYXRjaCBsb3dlciwgdXBwZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgbG93ZXIsIE5vbmUgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjbG93ZXJCb3VuZCAoSy50b19qcyBsb3dlcikgKEFPcHQuYW9wdCBib29sIG9sb3dlcikpXG4gICAgfCBOb25lLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI3VwcGVyQm91bmQgKEsudG9fanMgdXBwZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuICAgIHwgU29tZSBsb3dlciwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNib3VuZFxuICAgICAgICAgICAgKEsudG9fanMgbG93ZXIpIChLLnRvX2pzIHVwcGVyKVxuICAgICAgICAgICAgKEFPcHQuYW9wdCBib29sIG9sb3dlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG5cbiAgbGV0IGNvdW50ID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoY2FsbGJhY2sgOiBpbnQgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgQU9wdC51bmRlZmluZWQpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgKEFPcHQuZGVmIChLLnRvX2pzIGspKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnRfcmFuZ2UgKEFPcHQuZGVmIHIpKVxuXG4gIGxldCBnZXQgP2Vycm9yIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoRC5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldCAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBnZXRfa2V5ID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEsub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXkgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleV9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbF9rZXlzID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBkZWxldGUgP2NhbGxiYWNrID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgPSBmdW5jdGlvblxuICAgIHwgSyBrZXkgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGUgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlX3JhbmdlIHJhbmdlKVxuXG4gIGxldCBpdGVyID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKTtcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZCA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrIChELm9mX2pzIGMjIy52YWx1ZSkgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgaXRlcl9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgaztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZF9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBjbGVhciA/ZXJyb3IgP2NhbGxiYWNrIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciAoZnVuIF8gLT4gKCkpIEBAIGxhenkgc3QjI2NsZWFyXG5cbiAgbGV0IGNyZWF0ZV9pbmRleF9vcHRpb25zIHt1bmlxdWU7IG11bHRpX2VudHJ5OyBsb2NhbGV9IDogY3JlYXRlX2luZGV4X29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICAgIHZhbCB1bmlxdWUgPSBBT3B0LmFvcHQgYm9vbCB1bmlxdWVcbiAgICB2YWwgbXVsdGlFbnRyeSA9IEFPcHQuYW9wdCBib29sIG11bHRpX2VudHJ5XG4gICAgdmFsIGxvY2FsZSA9IEFPcHQuYW9wdCBib29sIGxvY2FsZVxuICBlbmRcblxuICBsZXQgY3JlYXRlX2luZGV4ID9vcHRpb25zIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lIGtleV9wYXRoID1cbiAgICBsZXQgb3B0aW9ucyA9IEFPcHQuYW9wdCBjcmVhdGVfaW5kZXhfb3B0aW9ucyBvcHRpb25zIGluXG4gICAgc3QjI2NyZWF0ZUluZGV4IChzdHJpbmcgbmFtZSkgKHN0cmluZyBrZXlfcGF0aCkgb3B0aW9uc1xuXG4gIGxldCBkZWxldGVfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIGlnbm9yZSBAQCBzdCMjZGVsZXRlSW5kZXggKHN0cmluZyBuYW1lKVxuXG4gIGxldCBnZXRfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIHN0IyNpbmRleCAoc3RyaW5nIG5hbWUpXG5cbmVuZFxuXG5tb2R1bGUgTm9UcihTIDogc2lnIHR5cGUgdCBlbmQpIDogVHJfc2lnIHdpdGggdHlwZSB0ID0gUy50IGFuZCB0eXBlIGpzID0gUy50ID0gc3RydWN0XG4gIHR5cGUgdCA9IFMudFxuICB0eXBlIGpzID0gUy50XG4gIGxldCB0b19qcyB4ID0geFxuICBsZXQgb2ZfanMgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSW50VHIgOiAoVHJfc2lnIHdpdGggdHlwZSBqcyA9IGludCBhbmQgdHlwZSB0ID0gaW50KSA9IE5vVHIoc3RydWN0IHR5cGUgdCA9IGludCBlbmQpXG5cbm1vZHVsZSBTdHJpbmdUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBqc19zdHJpbmcgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBqc19zdHJpbmcgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBzdHJpbmcgeFxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIE51bWJlclRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IG51bWJlciB0IGFuZCB0eXBlIHQgPSBmbG9hdCA9IHN0cnVjdFxuICB0eXBlIGpzID0gbnVtYmVyIHRcbiAgdHlwZSB0ID0gZmxvYXRcbiAgbGV0IHRvX2pzIHggPSBudW1iZXJfb2ZfZmxvYXQgeFxuICBsZXQgb2ZfanMgeCA9IGZsb2F0X29mX251bWJlciB4XG5lbmRcblxubW9kdWxlIERhdGVUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBkYXRlIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0gZGF0ZSB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IG5ldyVqcyBkYXRlX2Zyb21UaW1lVmFsdWUgKGRhdGUjI3BhcnNlIChzdHJpbmcgeCkpXG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHgjI3RvTG9jYWxlU3RyaW5nXG5lbmRcbiIsIm1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxubW9kdWxlIFNleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiBCYXNlXG5cbnR5cGUgJ2EgdGVzdF9wcmVkXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ICgnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9lcVxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X3Jlc3VsdFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+IGV4cGVjdDonYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFIG9mIHN0cmluZyAqIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnIGJvZHkgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgbWF0Y2ggbWVzc2FnZSB3aXRoXG4gICAgfCBOb25lIC0+IHRhZ1xuICAgIHwgU29tZSBzIC0+IHMgXiBcIjogXCIgXiB0YWdcbiAgaW5cbiAgbGV0IHNleHAgPVxuICAgIFNleHAuTGlzdCAoXG4gICAgICBib2R5XG4gICAgICBAIFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiTG9jXCI7IFNleHAuQXRvbSBwb3MgXSBdXG4gICAgICBAIGJlZ2luIG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgXyAtPiBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIlN0YWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgWyVzZXhwX29mOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IGxpc3RdIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gXVxuICAgICAgZW5kXG4gICAgKVxuICBpblxuICAoKiBIZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMgd2UgcmV0dXJuIGV4Y2VwdGlvbnMsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHJhaXNpbmcsIGFuZFxuICAgICBpbnN0ZWFkIHJhaXNlIGF0IHRoZSBsYXRlc3QgbW9tZW50IHBvc3NpYmxlLCBzbyBiYWNrdHJhY2UgZG9uJ3QgaW5jbHVkZSBub2lzZSBmcm9tXG4gICAgIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IGNvbnN0cnVjdCBleGNlcHRpb25zLiAqKVxuICBFIChtZXNzYWdlLCBzZXhwKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwicHJlZGljYXRlIGZhaWxlZFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcIlZhbHVlXCI7IHNleHBpZmllciB0XVxuICBdXG5cbmxldCB0ZXN0X3ByZWQgfnBvcyB+c2V4cGlmaWVyIH5oZXJlID9tZXNzYWdlIHByZWRpY2F0ZSB0ID1cbiAgaWYgbm90IChwcmVkaWNhdGUgdCkgdGhlblxuICAgIHJhaXNlIChleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0KVxuXG5sZXQgcl9kaWZmIDogKGZyb21fOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHVuaXQpIG9wdGlvbiByZWYgPSByZWYgICBOb25lXG5sZXQgc2V0X2RpZmZfZnVuY3Rpb24gZiA9IHJfZGlmZiA6PSBmXG5cbmxldCBbQGNvbGRdIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdCA9XG4gIGxldCBnb3QgPSBzZXhwaWZpZXIgZ290IGluXG4gIGxldCBleHBlY3QgPSBzZXhwaWZpZXIgZXhwZWN0IGluXG4gIGJlZ2luIG1hdGNoICFyX2RpZmYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRpZmYgLT5cbiAgICBsZXQgZnJvbV8gPSBTZXhwLnRvX3N0cmluZ19odW0gZXhwZWN0IGluXG4gICAgbGV0IHRvXyAgID0gU2V4cC50b19zdHJpbmdfaHVtIGdvdCBpblxuICAgIGRpZmYgfmZyb21fIH50b19cbiAgZW5kO1xuICBgRmFpbCAoZXhwZWN0LCBnb3QpXG5cbmxldCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgcGFzcyA9XG4gICAgbWF0Y2ggZXF1YWwgd2l0aFxuICAgIHwgTm9uZSAtPiBjb21wYXJhdG9yIGdvdCBleHBlY3QgPSAwXG4gICAgfCBTb21lIGYgLT4gZiBnb3QgZXhwZWN0XG4gIGluXG4gIGlmIHBhc3NcbiAgdGhlbiBgUGFzc1xuICBlbHNlIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdFxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJjb21wYXJpc29uIGZhaWxlZFwiIFtcbiAgICB0MTtcbiAgICBTZXhwLkF0b20gXCJ2c1wiO1xuICAgIHQyO1xuICBdXG5cbmxldCB0ZXN0X2VxIH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0OnQxIH5nb3Q6dDIgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKHQxLCB0MikgLT4gcmFpc2UgKGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MilcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiZ290IHVuZXhwZWN0ZWQgcmVzdWx0XCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZXhwZWN0ZWRcIjsgZXhwZWN0XTtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImdvdFwiOyBnb3RdO1xuICBdXG5cbmxldFtAd2FybmluZyBcIi0xNlwiXSB0ZXN0X3Jlc3VsdCB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIH5leHBlY3QgfmdvdCA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAoZXhwZWN0LCBnb3QpIC0+IHJhaXNlIChleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QpXG4iLCJsZXQgdW5pcXVlX2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbigqIFVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgbGlibmFtZSBpbiBzdWNoIGEgd2F5IHRoYXQgZm9yIGZ1bmN0b3IgYXBwbGljYXRpb25zLCBpdCBpc1xuICAgdGhlIGNhbGxpbmcgbGlicmFyaWVzIG5hbWUgdGhhdCBnZXRzIHJlZ2lzdGVyZWQuICopXG5tb2R1bGUgQ3VycmVudF9saWJuYW1lID0gc3RydWN0XG4gIGxldCBudWxsID0gXCI8dW5rbm93bj5cIlxuICBsZXQgbGlibmFtZV9yZWYgPSByZWYgbnVsbFxuICBsZXQgc2V0IHN0ciA9IGxpYm5hbWVfcmVmIDo9IHN0clxuICBsZXQgdW5zZXQgKCkgPSBsaWJuYW1lX3JlZiA6PSBudWxsXG4gIGxldCBnZXQgKCkgPSAhbGlibmFtZV9yZWZcbmVuZFxuXG5tb2R1bGUgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sgPSBzdHJ1Y3RcbiAgbGV0IHQgPSByZWYgW11cbiAgbGV0IHB1c2ggcyA9IHQgOj0gcyA6OiAhdFxuICBsZXQgcG9wX2V4biAoKSA9IHQgOj0gTGlzdC50bCAhdFxuXG4gIGxldCB0b19uYW1lICgpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBtcyAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLlwiIChMaXN0LnJldiBtcykpXG4gIDs7XG5lbmRcblxuKCogVGhpcyBpcyB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZSBvZiB0aGlzIG1vZHVsZS4gQW4gW0VudHJ5LnRdIHJlcHJlc2VudHMgYSBiZW5jaG1hcmtcbiAgIGFsb25nIHdpdGggc29tZSBtZXRhZGF0YSBhYm91dCBpcyBwb3NpdGlvbiwgYXJndW1lbnRzIGV0Yy4gKilcbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICB0eXBlICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgPVxuICAgIHsgYXJnX25hbWUgOiBzdHJpbmdcbiAgICA7IHBhcmFtcyA6IChzdHJpbmcgKiAncGFyYW0pIGxpc3RcbiAgICA7IHRodW5rIDogJ3BhcmFtIC0+IHVuaXQgLT4gJ2FcbiAgICB9XG5cbiAgdHlwZSB0ZXN0X3NwZWMgPVxuICAgIHwgUmVndWxhcl90aHVuayA6IChbIGBpbml0IF0gLT4gdW5pdCAtPiAnYSkgLT4gdGVzdF9zcGVjXG4gICAgfCBQYXJhbWV0ZXJpc2VkX3RodW5rIDogKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyAtPiB0ZXN0X3NwZWNcblxuICB0eXBlIHQgPVxuICAgIHsgdW5pcXVlX2lkIDogaW50XG4gICAgOyBjb2RlIDogc3RyaW5nXG4gICAgOyB0eXBlX2NvbnZfcGF0aCA6IHN0cmluZ1xuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgICA7IGxpbmUgOiBpbnRcbiAgICA7IHN0YXJ0cG9zIDogaW50XG4gICAgOyBlbmRwb3MgOiBpbnRcbiAgICA7IHRlc3Rfc3BlYyA6IHRlc3Rfc3BlY1xuICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZSB0MS51bmlxdWVfaWQgdDIudW5pcXVlX2lkXG5cbiAgKCogRXh0cmFjdHMgbW9kdWxlIG5hbWUgZnJvbSBbXCJmaWxlbmFtZS5tbC5Nb2R1bGVcIl0sIHdoaWNoIGlzIHRoZSBmb3JtYXQgb2YgW2V4dF9uYW1lXVxuICAgICBhcyBzZXQgYnkgW3R5cGVjb252XS4gKilcbiAgbGV0IGdldF9tb2R1bGVfbmFtZV9vcHQgdCA9XG4gICAgbGV0IHN0ciA9IHQudHlwZV9jb252X3BhdGggaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpICsgNCA8PSBsZW5cbiAgICAgIHRoZW5cbiAgICAgICAgaWYgU3RyaW5nLnN1YiBzdHIgaSA0ID0gXCIubWwuXCJcbiAgICAgICAgdGhlbiBTb21lIChTdHJpbmcuc3ViIHN0ciAoaSArIDQpIChsZW4gLSBpIC0gNCkpXG4gICAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCB3aXRoX3Rlc3Rfc3BlYyB0IHRlc3Rfc3BlYyA9IHsgdCB3aXRoIHRlc3Rfc3BlYyB9XG5lbmRcblxuKCogSW5zcGVjdCBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlY2lkZSBpZiBiZW5jaG1hcmtzIGFyZSBiZWluZyBydW4uIFRoaXMgaXNcbiAgIGNhbGxlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIFtwYV9iZW5jaF0gc3ludGF4IHRvIGRlY2lkZSBpZiB0aGUgZ2xvYmFsIGhhc2h0YWJsZVxuICAgc2hvdWxkIGJlIHBvcHVsYXRlZC4gKilcbmxldCBhZGRfZW52aXJvbm1lbnRfdmFyID1cbiAgbGV0IHYgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQkVOQ0hNQVJLU19SVU5ORVJcIiB3aXRoXG4gICAgfCBOb3RfZm91bmQgLT4gXCJcIlxuICBpblxuICB2ID0gXCJUUlVFXCJcbjs7XG5cbigqIFRoaXMgaGFzaHRhYmxlIGNvbnRhaW5zIGFsbCB0aGUgYmVuY2htYXJrcyBmcm9tIGFsbCB0aGUgb2YgbGlicmFyaWVzIHRoYXQgaGF2ZSBiZWVuXG4gICBsb2FkZWQuIEF0IHRoZSB0aW1lIHRoZSBiZW5jaG1hcmtzIGFyZSByZWdpc3RlcmluZyB0aGVtc2VsdmVzIHdpdGggW3BweF9iZW5jaF9saWJdIHdlXG4gICBkb24ndCB5ZXQga25vdyB3aGljaCBsaWJyYXJpZXMgd2lsbCBuZWVkIHRvIGJlIHJ1bi4gICopXG5sZXQgbGlic190b19lbnRyaWVzIDogKHN0cmluZywgRW50cnkudCBsaXN0KSBIYXNodGJsLnQgPSBIYXNodGJsLmNyZWF0ZSAxMFxuXG5sZXQgbG9va3VwX3Jldl9saWIgfmxpYm5hbWUgPVxuICB0cnkgSGFzaHRibC5maW5kIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gW11cbjs7XG5cbmxldCBsb29rdXBfbGliIH5saWJuYW1lID0gTGlzdC5yZXYgKGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuXG5sZXQgZm9yY2VfZHJvcCA9XG4gICgqIFVzZWZ1bCBmb3IganNfb2Zfb2NhbWwgdG8gcGVyZm9ybSBkZWFkY29kZSBlbGltaW5hdGlvbi5cbiAgICAgc2VlIHBweC9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCBbQWN0aW9uLmdldF0gZm9yIG1vcmUgZGV0YWlscyAqKVxuICB0cnlcbiAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0JFTkNIXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxubGV0IGdldF9tb2RlICgpID0gaWYgZm9yY2VfZHJvcCB0aGVuIGBJZ25vcmUgZWxzZSBgQ29sbGVjdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGVcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoXG4gICAgICAgICAgICAgICAgICAgICB+bGluZVxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zXG4gICAgICAgICAgICAgICAgICAgICB0ZXN0X3NwZWNcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgbGV0IGxpYm5hbWUgPSBDdXJyZW50X2xpYm5hbWUuZ2V0ICgpIGluXG4gICAgbGV0IGVudHJ5ID1cbiAgICAgIHsgRW50cnkuY29kZVxuICAgICAgOyB1bmlxdWVfaWQgPSB1bmlxdWVfaWQgKClcbiAgICAgIDsgdHlwZV9jb252X3BhdGhcbiAgICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgPSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay50b19uYW1lICgpXG4gICAgICA7IG5hbWVcbiAgICAgIDsgZmlsZW5hbWVcbiAgICAgIDsgbGluZVxuICAgICAgOyBzdGFydHBvc1xuICAgICAgOyBlbmRwb3NcbiAgICAgIDsgdGVzdF9zcGVjXG4gICAgICB9XG4gICAgaW5cbiAgICBIYXNodGJsLmFkZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSAoZW50cnkgOjogbG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoX21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlOl9cbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aDpfXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6X1xuICAgICAgICAgICAgICAgICAgICAgfmxpbmU6X1xuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICAoKiBSdW5uaW5nIGYgcmVnaXN0ZXJzIHRoZSBiZW5jaG1hcmtzIHVzaW5nIEJFTkNIICopXG4gICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucHVzaCBuYW1lO1xuICAgICh0cnlcbiAgICAgICBmICgpO1xuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKClcbiAgICAgd2l0aFxuICAgICB8IGV4IC0+XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKTtcbiAgICAgICByYWlzZSBleClcbjs7XG4iLCJ0eXBlIHQgPSBzdHJpbmdcblxuKCogU2hhcmUgdGhlIGRpZ2VzdCBvZiB0aGUgZW1wdHkgc3RyaW5nICopXG5sZXQgZW1wdHkgPSBEaWdlc3Quc3RyaW5nIFwiXCJcbmxldCBtYWtlIHMgPVxuICBpZiBzID0gZW1wdHkgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBzXG5cbmxldCBjb21wYXJlID0gY29tcGFyZVxuXG5sZXQgbGVuZ3RoID0gMTZcblxubGV0IHRvX2JpbmFyeSBzID0gc1xubGV0IG9mX2JpbmFyeV9leG4gcyA9IGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzID0gbGVuZ3RoKTsgbWFrZSBzXG5sZXQgdW5zYWZlX29mX2JpbmFyeSA9IG1ha2VcblxubGV0IHRvX2hleCA9IERpZ2VzdC50b19oZXhcbmxldCBvZl9oZXhfZXhuIHMgPSBtYWtlIChEaWdlc3QuZnJvbV9oZXggcylcblxubGV0IHN0cmluZyBzID0gbWFrZSAoRGlnZXN0LnN0cmluZyBzKVxuXG5sZXQgYnl0ZXMgcyA9IG1ha2UgKERpZ2VzdC5ieXRlcyBzKVxuXG5sZXQgc3ViYnl0ZXMgYnl0ZXMgfnBvcyB+bGVuID0gbWFrZSAoRGlnZXN0LnN1YmJ5dGVzIGJ5dGVzIHBvcyBsZW4pXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMb2NhdGlvbiA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVXVpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5sZXQgZXZhbF9mYWlsIGxvYyBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiAhXCIle0xvY2F0aW9ufTogJXNcIiBsb2MgcykpIGZtdFxuOztcblxubGV0IGVxdWFsX29wdGlvbiBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbjs7XG5cbm1vZHVsZSBTb3J0ZWRfdGFibGUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBleHBvc2UgOiAnYSB0IC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHsgc29ydGVkIDogKHN0cmluZyAqICdhKSBsaXN0IH0gW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwc1xuICAgIDogIGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgIC0+IFsgYE9rIG9mIChzdHJpbmcgKiAnYSkgbGlzdCB8IGBNaXNtYXRjaCBvZiBzdHJpbmcgXVxuICAgID1cbiAgICBmdW4gfmVxIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBgT2sgKExpc3QucmV2IGFjYylcbiAgICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+XG4gICAgICAgIGlmIFN0cmluZy4obGFzdF9rZXkgPSBrZXkpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBlcSBsYXN0X3ZhbHVlIHZhbHVlIHRoZW4gbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlIHhzIGVsc2UgYE1pc21hdGNoIGtleVxuICAgICAgICBlbHNlIGxvb3AgKChrZXksIHZhbHVlKSA6OiBhY2MpIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgICBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBgT2sgW11cbiAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPiBsb29wIFsga2V5LCB2YWx1ZSBdIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgOztcblxuICBsZXQgY3JlYXRlIGxvYyB+ZXEgeHMgPVxuICAgIGxldCBzb3J0ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHhzIGluXG4gICAgbWF0Y2ggbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwcyB+ZXEgc29ydGVkIHdpdGhcbiAgICB8IGBPayBzb3J0ZWQgLT4geyBzb3J0ZWQgfVxuICAgIHwgYE1pc21hdGNoIHMgLT5cbiAgICAgIGV2YWxfZmFpbCBsb2MgXCJEaWZmZXJlbnQgc2hhcGVzIGZvciBkdXBsaWNhdGVkIHBvbHltb3JwaGljIGNvbnN0cnVjdG9yOiBgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IGV4cG9zZSB0ID0gdC5zb3J0ZWRcbiAgbGV0IG1hcCB0IH5mID0geyBzb3J0ZWQgPSBMaXN0Lm1hcCB0LnNvcnRlZCB+ZjooZnVuIChrLCB2KSAtPiBrLCBmIHYpIH1cbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCA9IE1kNV9saWIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCB0b19tZDUgOiB0IC0+IE1kNV9saWIudFxuICB2YWwgb2ZfbWQ1IDogTWQ1X2xpYi50IC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBjb25zdHJ1Y3RvciA6IHN0cmluZyAtPiB0IGxpc3QgLT4gdFxuICB2YWwgbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBwYWlyIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyAtPiB0XG4gIHZhbCB1dWlkIDogVXVpZC50IC0+IHRcbiAgdmFsIGludCA6IGludCAtPiB0XG4gIHZhbCBvcHRpb24gOiB0IG9wdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZDVfbGliXG5cbiAgbGV0IHRvX21kNSB0ID0gdFxuICBsZXQgb2ZfbWQ1IHQgPSB0XG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IHNleHBfb2Zfc3RyaW5nXG4gIGxldCB0X29mX3NleHAgcyA9IHMgfD4gc3RyaW5nX29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdXVpZCB1ID0gc3RyaW5nIChVdWlkLnRvX3N0cmluZyB1KVxuICBsZXQgaW50IHggPSBzdHJpbmcgKEludC50b19zdHJpbmcgeClcbiAgbGV0IHBhaXIgeCB5ID0gc3RyaW5nICh0b19iaW5hcnkgeCBeIHRvX2JpbmFyeSB5KVxuICBsZXQgbGlzdCBsID0gc3RyaW5nIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAoTGlzdC5tYXAgfmY6dG9fYmluYXJ5IGwpKVxuICBsZXQgY29uc3RydWN0b3IgcyBsID0gc3RyaW5nIChzIF4gdG9fYmluYXJ5IChsaXN0IGwpKVxuXG4gIGxldCBvcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBjb25zdHJ1Y3RvciBcIm5vbmVcIiBbXVxuICAgIHwgU29tZSB4IC0+IGNvbnN0cnVjdG9yIFwic29tZVwiIFsgeCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBzdHJ1Y3RcbiAgKCogWydhIHRdIGlzIGEgbm9uLXJlY3Vyc2l2ZSB0eXBlLCB1c2VkIHRvIHJlcHJlc2VudCAxLWxheWVyIG9mIGV4cHJlc3Npb24uICBUaGVcbiAgICAgcmVjdXJzaXZlIGtub3QgaXMgdGllZCBiZWxvdyBpbiBbQ2Fub25pY2FsX2Z1bGwuRXhwLnRdLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogJ2FcbiAgICB8IEJhc2Ugb2YgVXVpZC50ICogJ2EgbGlzdFxuICAgIHwgVHVwbGUgb2YgJ2EgbGlzdFxuICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogJ2EgbGlzdCkgbGlzdFxuICAgICgqIFBvbHltb3JwaGljIHZhcmlhbnRzIGFyZSBpbnNlbnNpdGl2ZSB0byB0aGUgb3JkZXIgdGhlIGNvbnN0cnVjdG9ycyBhcmUgbGlzdGVkICopXG4gICAgfCBQb2x5X3ZhcmlhbnQgb2YgJ2Egb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgKCogTGVmdC1oYW5kLXNpZGUgb2YgW0FwcGxpY2F0aW9uXSBpcyBhIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSBkZWZpbml0aW9uOiBpdFxuICAgICAgIGNhbiByZWZlciB0byBpdHNlbGYgdXNpbmcgW1JlY19hcHAgKGksIF8pXSB3aGVyZSBbaV0gaXMgdGhlIGRlcHRoIG9mIHRoaXNcbiAgICAgICBhcHBsaWNhdGlvbiBub2RlIChob3cgbWFueSBhcHBsaWNhdGlvbiBub2RlcyBhcmUgYWJvdmUgaXQpLlxuICAgICAgIEl0IGFsc28gaGFzIGl0cyBvd24gc2NvcGUgb2YgdHlwZSB2YXJpYWJsZXMgc28gaXQgY2FuIG5vdCByZWZlciB0byB0eXBlIHZhcmlhYmxlc1xuICAgICAgIG9mIHRoZSBlbmNsb3Npbmcgc2NvcGUuXG4gICAgKilcbiAgICB8IEFwcGxpY2F0aW9uIG9mICdhICogJ2EgbGlzdFxuICAgIHwgUmVjX2FwcCBvZiBpbnQgKiAnYSBsaXN0XG4gICAgfCBWYXIgb2YgaW50XG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IG1hcCB4IH5mID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEFubm90YXRlICh1LCB4KSAtPiBBbm5vdGF0ZSAodSwgZiB4KVxuICAgIHwgQmFzZSAocywgeHMpIC0+IEJhc2UgKHMsIExpc3QubWFwIH5mIHhzKVxuICAgIHwgVHVwbGUgeHMgLT4gVHVwbGUgKExpc3QubWFwIH5mIHhzKVxuICAgIHwgUmVjb3JkIGwgLT4gUmVjb3JkIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHgpIC0+IHMsIGYgeCkpXG4gICAgfCBWYXJpYW50IGwgLT4gVmFyaWFudCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4cykgLT4gcywgTGlzdC5tYXAgfmYgeHMpKVxuICAgIHwgUG9seV92YXJpYW50IHQgLT4gUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUubWFwIHQgfmY6KE9wdGlvbi5tYXAgfmYpKVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IEFwcGxpY2F0aW9uIChmIHgsIExpc3QubWFwIH5mIGwpXG4gICAgfCBSZWNfYXBwICh0LCBsKSAtPiBSZWNfYXBwICh0LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgVmFyIHYgLT4gVmFyIHZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4gXyAtPiBBdG9tIFwiLi4uXCIpIHQpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9kaWdlc3QgOiBzaWdcbiAgKCogRGlnZXN0IHZhcmlvdXMgZXhwcmVzc2lvbiBmb3JtcyAqKVxuXG4gIHZhbCBkaWdlc3RfbGF5ZXIgOiBEaWdlc3QudCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgLT4gRGlnZXN0LnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZGlnZXN0X2xheWVyID0gZnVuY3Rpb25cbiAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQW5ub3RhdGUgKHUsIHgpIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3IgXCJhbm5vdGF0ZVwiIFsgRGlnZXN0LnV1aWQgdTsgeCBdXG4gICAgfCBCYXNlICh1LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJiYXNlXCIgWyBEaWdlc3QudXVpZCB1OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFR1cGxlIGwgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidHVwbGVcIiBbIERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjb3JkIGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInJlY29yZFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3QgKExpc3QubWFwIGwgfmY6KGZ1biAocywgdCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgdCkpIF1cbiAgICB8IFZhcmlhbnQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwidmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIGwpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIChEaWdlc3QubGlzdCBsKSkpXG4gICAgICAgIF1cbiAgICB8IFBvbHlfdmFyaWFudCB0YWJsZSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicG9seV92YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYmxlKSB+ZjooZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgeCkgKERpZ2VzdC5vcHRpb24geSkpKVxuICAgICAgICBdXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYXBwbGljYXRpb25cIiBbIHg7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjX2FwcCAobiwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwicmVjX2FwcFwiIFsgRGlnZXN0LmludCBuOyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFZhciBuIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInZhclwiIFsgRGlnZXN0LmludCBuIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVmlzaWJpbGl0eSA9IHN0cnVjdFxuICB0eXBlIHZpc2libGUgPSBWaXNpYmxlXG4gIHR5cGUgb3BhcXVlID0gT3BhcXVlXG5cbiAgbGV0IF8gPSBWaXNpYmxlXG4gIGxldCBfID0gT3BhcXVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ2Fub25pY2FsID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19kaWdlc3QgOiB0IC0+IERpZ2VzdC50XG5cbiAgbW9kdWxlIEV4cDEgOiBzaWdcbiAgICB0eXBlIF8gdFxuXG4gICAgdmFsIHZhciA6IGludCAtPiBfIHRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgYXBwbHkgOiAnYSB0IC0+ICdhIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgb3BhcXVlIDogXyB0IC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIHZhbCBnZXRfcG9seV92YXJpYW50XG4gICAgICA6ICBWaXNpYmlsaXR5LnZpc2libGUgdFxuICAgICAgLT4gKFZpc2liaWxpdHkub3BhcXVlIHQgb3B0aW9uIFNvcnRlZF90YWJsZS50LCBzdHJpbmcpIFJlc3VsdC50XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgOiBzaWdcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgOiBzaWdcbiAgICB2YWwgYW5ub3RhdGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgYmFzZXR5cGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB0dXBsZSA6IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgcG9seV92YXJpYW50IDogTG9jYXRpb24udCAtPiAoc3RyaW5nICogXyBFeHAxLnQgb3B0aW9uKSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhciA6IGludCAtPiBfIEV4cDEudFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgYXBwbHkgOiAnYSBFeHAxLnQgLT4gJ2EgRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgZGVmaW5lIDogVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudCAtPiBEZWYudFxuICAgIHZhbCByZWNvcmQgOiAoc3RyaW5nICogXyBFeHAxLnQpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyaWFudCA6IChzdHJpbmcgKiBfIEV4cDEudCBsaXN0KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGNyZWF0ZSA6IF8gRXhwMS50IC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9kaWdlc3QgOiBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2Fub25pY2FsIG9mIERpZ2VzdC50XG5cbiAgbGV0IHRvX2RpZ2VzdCAoQ2Fub25pY2FsIHgpID0geFxuXG4gIG1vZHVsZSBDRCA9IENyZWF0ZV9kaWdlc3RcblxuICBtb2R1bGUgRXhwMSA9IHN0cnVjdFxuICAgIHR5cGUgb3BhcXVlID0gRGlnZXN0LnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFBvbHlfdmFyaWFudCBvZiBvcGFxdWUgb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgb2YgKHN0cmluZyAqIG9wYXF1ZSlcbiAgICAgIHwgT3BhcXVlIDogb3BhcXVlIC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIGxldCB0b19kaWdlc3QgKHR5cGUgYSkgKHggOiBhIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPcGFxdWUgeCAtPiB4XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKF8sIHgpIC0+IHhcbiAgICAgIHwgUG9seV92YXJpYW50IHggLT4gQ0QuZGlnZXN0X2xheWVyIChQb2x5X3ZhcmlhbnQgeClcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsICh0eXBlIGEpICh4IDogYSB0KSAoeSA6IGEgdCkgPVxuICAgICAgRGlnZXN0LmNvbXBhcmUgKHRvX2RpZ2VzdCB4KSAodG9fZGlnZXN0IHkpID0gMFxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHggPSBPcGFxdWUgKHRvX2RpZ2VzdCB4KVxuXG4gICAgbGV0IGNyZWF0ZSB4ID1cbiAgICAgIGxldCB4ID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IHggaW5cbiAgICAgIGxldCBkZXNjID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50b19zdHJpbmcgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUG9seV92YXJpYW50IGwgLT4gUG9seV92YXJpYW50IGxcbiAgICAgIHwgQmFzZSBfIC0+IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBbm5vdGF0ZSBfIC0+XG4gICAgICAgICgqIEl0J3MgdW5zYWZlIHRvIHVzZSBkZXJpdmluZyBiaW5faW8gd2hlbiBpbmhlcml0aW5nIGZyb20gYSBwb2x5bW9ycGhpYyB2YXJpYW50XG4gICAgICAgICAgIHRoYXQgaGFzIGEgY3VzdG9tIGJpbl9pby4gIElmIHdlIGZvcmJpZCB0aGF0LCB3ZSBjYW4gaGFwcGlseSByZWplY3QgaGVyZVxuICAgICAgICAgICBhbnl0aGluZyB0aGF0J3MgYW5ub3RhdGVkLiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQXBwbGljYXRpb24gXyAtPlxuICAgICAgICAoKiBBcHBsaWNhdGlvbiBjYW4gcmVhbGx5IGJlIGEgcG9seS12YXJpYW50IHlvdSBjYW4gaW5oZXJpdCBmcm9tISAgQnV0IGl0J3MgYVxuICAgICAgICAgICByYXJlIHNpdHVhdGlvbiB0aGF0IG1vc3RseSAob25seT8pIGFyaXNlcyB3aXRoIGluaGVyaXRhbmNlIGZyb20gcmVjdXJzaXZlXG4gICAgICAgICAgIHBvbHltb3JwaWMgdmFyaWFudHMsIHdoaWNoIHdlJ3ZlIG5vdCBzZWVuIGFueXdoZXJlIHlldC4gIFNvIHdlIHJlamVjdCBpdC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFJlY19hcHAgXyAtPlxuICAgICAgICAoKiBZb3UgY2FuIG9ubHkgZ2V0IHRoZSBbUmVjX2FwcF0gY29uc3RydWN0b3IgZm9yIHR5cGUtcmVmZXJlbmNlcyB3aXRoaW4gdGhlXG4gICAgICAgICAgIG11dHVhbCBncm91cCBiZWluZyBkZWZpbmVkLiBSZWZlcmVuY2VzIHdoaWNoXG4gICAgICAgICAgIGZvbGxvdyBhZnRlciB0aGUgY3VycmVudCBncm91cCB3aWxsIGFsd2F5cyBiZSBbQXBwbGljYXRpb25dcy5cblxuICAgICAgICAgICBBbmQgc2luY2Ugb2NhbWwgcmVqZWN0cyByZWZlcmVuY2VzIGluIGBpbmhlcml0YW5jZScgcG9zaXRpb24gdG8gdHlwZXMgd2l0aGluXG4gICAgICAgICAgIHRoZSBjdXJyZW50IGdyb3VwIChzZWUgZXhhbXBsZSkgd2l0aDpcblxuICAgICAgICAgICBFcnJvcjogVGhlIHR5cGUgY29uc3RydWN0b3IgdFxuICAgICAgICAgICBpcyBub3QgeWV0IGNvbXBsZXRlbHkgZGVmaW5lZFxuXG4gICAgICAgICAgIHRoZW4gaXRzIG9rIHRvIHNheSB0aGF0IGEgcmVjLWFwcCBpcyBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBpbmhlcml0ZWQgZnJvbSBhbmRcbiAgICAgICAgICAgcmV0dXJuIFtOb25fcG9seV92YXJpYW50XS5cblxuICAgICAgICAgICBBbmQgdW5saWtlIHRoZSBbQXBwbGljYXRpb25dIGNhc2UsIGl0IHNob3VsZCBuZXZlciBiZSBwb3NzaWJsZSB0byBzZWVcbiAgICAgICAgICAgYW4gZXJyb3IgbWVzc2FnZSB3aXRoIHRoZSBbZGVzY10gPSBbUmVjX2FwcF0uXG5cbiAgICAgICAgICAgRXhhbXBsZTogW3R5cGUgdCA9IFtgYSBvZiBbIHwgdF0gXV1cbiAgICAgICAgICAgSGVyZSwgW3wgdF0gd291bGQgYmUgYW4gZXhhbXBsZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgUmVjX2FwcCwgd2hpY2hcbiAgICAgICAgICAgaXMgcmVqZWN0ZWQgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgICAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgVmFyIF8gfCBUdXBsZSBfIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT5cbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IGNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IGRlZiBsID0gY3JlYXRlIChBcHBsaWNhdGlvbiAoZGVmLCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0aWQgbCA9IGNyZWF0ZSAoUmVjX2FwcCAodGlkLCBsKSlcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ICh4IDogVmlzaWJpbGl0eS52aXNpYmxlIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChkZXNjLCBfKSAtPiBFcnJvciBkZXNjXG4gICAgICB8IFBvbHlfdmFyaWFudCBsIC0+IE9rIChTb3J0ZWRfdGFibGUubWFwIH5mOihPcHRpb24ubWFwIH5mOihmdW4geCAtPiBPcGFxdWUgeCkpIGwpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLmNyZWF0ZSAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IGwgPSBFeHAxLmNyZWF0ZSAoQmFzZSAodSwgbCkpXG4gICAgbGV0IHR1cGxlIGwgPSBFeHAxLmNyZWF0ZSAoVHVwbGUgbClcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIGwgPVxuICAgICAgRXhwMS5jcmVhdGUgKFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gRXhwMS5lcXVhbCkgbCkpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IEV4cDEuY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgeCBsID0gRXhwMS5jcmVhdGUgKEFwcGxpY2F0aW9uICh4LCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0IGwgPSBFeHAxLmNyZWF0ZSAoUmVjX2FwcCAodCwgbCkpXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgbCA9IEV4cDEuY3JlYXRlIChSZWNvcmQgbClcbiAgICBsZXQgdmFyaWFudCBsID0gRXhwMS5jcmVhdGUgKFZhcmlhbnQgbClcbiAgICBsZXQgY3JlYXRlIGUgPSBDYW5vbmljYWwgKEV4cDEudG9fZGlnZXN0IGUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZnVsbCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBpbmNsdWRlIENhbm9uaWNhbCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHRvX3N0cmluZ19odW0gOiB0IC0+IHN0cmluZ1xuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBDRCA9IENyZWF0ZV9kaWdlc3RcblxuICBtb2R1bGUgRXhwMSA9IHN0cnVjdFxuICAgIHR5cGUgdDAgPSBFeHAgb2YgdDAgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgZXF1YWxfdDAgeCB5ID0gY29tcGFyZV90MCB4IHkgPSAwXG5cbiAgICB0eXBlICdhIHQgPSB0MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IHZhciB4ID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlZhciB4KVxuICAgIGxldCBhcHBseSBkIHhzID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFwcGxpY2F0aW9uIChkLCB4cykpXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5SZWNfYXBwIChyLCB4cykpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9XG4gICAgICBFeHBcbiAgICAgICAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUG9seV92YXJpYW50XG4gICAgICAgICAgIChTb3J0ZWRfdGFibGUuY3JlYXRlIGxvYyB+ZXE6KGVxdWFsX29wdGlvbiBlcXVhbF90MCkgeHMpKVxuICAgIDs7XG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCAoUG9seV92YXJpYW50IHRhYikgLT4gT2sgdGFiXG4gICAgICB8IEV4cCBjYyAtPiBFcnJvciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50b19zdHJpbmcgY2MpXG4gICAgOztcblxuICAgIGxldCBvcGFxdWUgdCA9IHRcblxuICAgIGxldCByZWMgdG9fZGlnZXN0ID0gZnVuY3Rpb25cbiAgICAgIHwgRXhwIGUgLT4gQ0QuZGlnZXN0X2xheWVyIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLm1hcCB+Zjp0b19kaWdlc3QgZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGVmID0gc3RydWN0XG4gICAgKCogQSBbRGVmLnRdIGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggbWF5IGJlIGFwcGxpZWQgKilcbiAgICB0eXBlIHQgPSBFeHAxLnQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gICgqIEEgY2Fub25pY2FsIHNoYXBlIFt0XSBpcyBhbiBbRXhwMS50XS4gKilcbiAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19kaWdlc3QgZSA9IEV4cDEudG9fZGlnZXN0IGVcblxuICBtb2R1bGUgQ3JlYXRlID0gc3RydWN0XG4gICAgbGV0IGFubm90YXRlIHUgeCA9IEV4cDEuRXhwIChBbm5vdGF0ZSAodSwgeCkpXG4gICAgbGV0IGJhc2V0eXBlIHUgeHMgPSBFeHAxLkV4cCAoQmFzZSAodSwgeHMpKVxuICAgIGxldCB0dXBsZSB4cyA9IEV4cDEuRXhwIChUdXBsZSB4cylcbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9IEV4cDEucG9seV92YXJpYW50IGxvYyB4c1xuICAgIGxldCB2YXIgbiA9IEV4cDEuRXhwIChWYXIgbilcbiAgICBsZXQgcmVjdXJzZSByIHhzID0gRXhwMS5yZWN1cnNlIHIgeHNcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cDEuYXBwbHkgZCB4c1xuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIHhzID0gRXhwMS5FeHAgKFJlY29yZCB4cylcbiAgICBsZXQgdmFyaWFudCB4cyA9IEV4cDEuRXhwIChWYXJpYW50IHhzKVxuICAgIGxldCBjcmVhdGUgZXhwID0gZXhwXG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmdfaHVtIHQgPSBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfdCB0KVxuZW5kXG5cbm1vZHVsZSBUaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFZpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgR2lkIDogc2lnXG4gICgqIHVuaXF1ZSBncm91cC1pZCwgdXNlZCBhcyBrZXkgZm9yIFRlbnYgYmVsb3cgKilcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCByID0gcmVmIDBcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgdSA9ICFyIGluXG4gICAgciA6PSAxICsgdTtcbiAgICB1XG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cHJlc3Npb24gPSBzdHJ1Y3RcbiAgdHlwZSAndCBwb2x5X2NvbnN0ciA9XG4gICAgWyBgQ29uc3RyIG9mIHN0cmluZyAqICd0IG9wdGlvblxuICAgIHwgYEluaGVyaXQgb2YgTG9jYXRpb24udCAqICd0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gKFRpZC50ICogVmlkLnQgbGlzdCAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgaWQgOiAnYSB0IC0+IEdpZC50XG4gICAgdmFsIGxvb2t1cCA6ICdhIHQgLT4gVGlkLnQgLT4gVmlkLnQgbGlzdCAqICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGdpZCA6IEdpZC50XG4gICAgICA7IGxvYyA6IExvY2F0aW9uLnRcbiAgICAgIDsgbWVtYmVycyA6IChUaWQudCAqIChWaWQudCBsaXN0ICogJ2EpKSBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgbG9jIHRyaXBzID1cbiAgICAgIGxldCBnaWQgPSBHaWQuY3JlYXRlICgpIGluXG4gICAgICBsZXQgbWVtYmVycyA9IExpc3QubWFwIHRyaXBzIH5mOihmdW4gKHgsIHZzLCB0KSAtPiB4LCAodnMsIHQpKSBpblxuICAgICAgeyBnaWQ7IGxvYzsgbWVtYmVycyB9XG4gICAgOztcblxuICAgIGxldCBpZCBnID0gZy5naWRcblxuICAgIGxldCBsb29rdXAgZyB0aWQgPVxuICAgICAgbWF0Y2ggTGlzdC5Bc3NvYy5maW5kIGcubWVtYmVycyB+ZXF1YWw6VGlkLiggPSApIHRpZCB3aXRoXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgIGcubG9jXG4gICAgICAgICAgIVwiaW1wb3NzaWJsZTogbG9va3VwX2dyb3VwLCB1bmJvdW5kIHR5cGUtaWRlbnRpZmllcjogJXtUaWR9XCJcbiAgICAgICAgICB0aWRcbiAgICAgICAgICAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbm5vdGF0ZSBvZiBVdWlkLnQgKiB0XG4gICAgfCBCYXNlIG9mIFV1aWQudCAqIHQgbGlzdFxuICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBWYXJpYW50IG9mIChzdHJpbmcgKiB0IGxpc3QpIGxpc3RcbiAgICB8IFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgUG9seV92YXJpYW50IG9mIChMb2NhdGlvbi50ICogdCBwb2x5X2NvbnN0ciBsaXN0KVxuICAgIHwgVmFyIG9mIChMb2NhdGlvbi50ICogVmlkLnQpXG4gICAgfCBSZWNfYXBwIG9mIFRpZC50ICogdCBsaXN0XG4gICAgfCBUb3BfYXBwIG9mIHQgR3JvdXAudCAqIFRpZC50ICogdCBsaXN0XG4gIFtAQGRlcml2aW5nIHZhcmlhbnRzLCBzZXhwX29mXVxuXG4gIHR5cGUgZ3JvdXAgPSB0IEdyb3VwLnRcblxuICBsZXQgZ3JvdXAgPSBHcm91cC5jcmVhdGVcblxuICB0eXBlIHBvbHlfdmFyaWFudF9yb3cgPSB0IHBvbHlfY29uc3RyXG5cbiAgbGV0IGNvbnN0ciBzIHQgPSBgQ29uc3RyIChzLCB0KVxuICBsZXQgaW5oZXJpdF8gbG9jIHQgPSBgSW5oZXJpdCAobG9jLCB0KVxuICBsZXQgdmFyIGxvYyB0ID0gVmFyIChsb2MsIHQpXG4gIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gUG9seV92YXJpYW50IChsb2MsIHhzKVxuICBsZXQgYmFzZXR5cGUgPSBiYXNlXG5cbiAgKCogXCJWUlwiIHN0YW5kcyBmb3IgXCJ2YXJpYW50IG9yIHJlY29yZFwiICopXG5cbiAgbGV0IGlzX2N5Y2xpY18wIH4odmlhX1ZSIDogYm9vbCkgOiBncm91cCAtPiBUaWQudCAtPiBib29sID1cbiAgICBmdW4gZ3JvdXAgdGlkIC0+XG4gICAgbGV0IHNldCA9IHJlZiBbXSBpblxuICAgIGxldCB2aXNpdGVkIHRpZCA9IExpc3QubWVtICFzZXQgdGlkIH5lcXVhbDpUaWQuZXF1YWwgaW5cbiAgICBsZXQgYWRkIHRpZCA9IHNldCA6PSB0aWQgOjogIXNldCBpblxuICAgIGxldCByZWMgdHJhdiA9IGZ1bmN0aW9uXG4gICAgICAoKiBXZSBsb29rIGZvciBjeWNsZXMgYnkgdHJhdmVyc2luZyB0aGUgc3RydWN0dXJlIG9mIHR5cGUtZXhwcmVzc2lvbnMgKilcbiAgICAgIHwgQW5ub3RhdGUgKF8sIHQpIC0+IHRyYXYgdFxuICAgICAgfCBCYXNlIChfLCB0cykgfCBUdXBsZSB0cyB8IFRvcF9hcHAgKF8sIF8sIHRzKSAtPiBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgICAgKCogLi5pbmNsdWRpbmcgcG9seS12YXJpYW50cyAqKVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgKF8sIGNzKSAtPlxuICAgICAgICBMaXN0Lml0ZXIgY3MgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBOb25lKSAtPiAoKVxuICAgICAgICAgIHwgYENvbnN0ciAoXywgU29tZSB0KSAtPiB0cmF2IHRcbiAgICAgICAgICB8IGBJbmhlcml0IChfbG9jLCB0KSAtPiB0cmF2IHQpXG4gICAgICAoKiAuLiBhbmQgcmVjb3JkcyAmIChub3JtYWwpIHZhcmlhbnRzICopXG4gICAgICB8IFJlY29yZCB4cyAtPiBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdCkgLT4gdHJhdiB0KSBlbHNlICgpXG4gICAgICB8IFZhcmlhbnQgeHMgLT5cbiAgICAgICAgaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHRzKSAtPiBMaXN0Lml0ZXIgfmY6dHJhdiB0cykgZWxzZSAoKVxuICAgICAgKCogV2UgZG9udCBmb2xsb3cgdHlwZS12YXJzICopXG4gICAgICB8IFZhciBfIC0+ICgpXG4gICAgICAoKiB0cmF2ZXJzZSAocmVjdXJzaXZlKSB0eXBlLWFwcHMgd2hlbiBmaXJzdCBlbmNvdW50ZXJlZCAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIHRzKSAtPlxuICAgICAgICBpZiB2aXNpdGVkIHRpZFxuICAgICAgICB0aGVuICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGFkZCB0aWQ7XG4gICAgICAgICAgdHJhdl90aWQgdGlkKTtcbiAgICAgICAgTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICBhbmQgdHJhdl90aWQgdGlkID1cbiAgICAgIGxldCBfLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgdHJhdiBib2R5XG4gICAgaW5cbiAgICB0cmF2X3RpZCB0aWQ7XG4gICAgbGV0IHJlcyA9IHZpc2l0ZWQgdGlkIGluXG4gICAgKCpsZXQgX3NzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChMaXN0Lm1hcCAoIXNldCkgfmY6KHNwcmludGYgIVwiJXtUaWR9XCIpKSBpbiopXG4gICAgKCpQcmludGYucHJpbnRmICFcImlzX2N5bGljOiAle1RpZH0gLS0+ICglcykgJWIgIC0tICVzJSFcIiB0aWQgX3NzIHJlcyAoR3JvdXAubG9jIGdyb3VwKTsqKVxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBpc19jeWNsaWMgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOnRydWVcbiAgbGV0IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSID0gaXNfY3ljbGljXzAgfnZpYV9WUjpmYWxzZVxuZW5kXG5cbmluY2x1ZGUgRXhwcmVzc2lvblxuXG5tb2R1bGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsIDogQ2Fub25pY2FsKSA9IHN0cnVjdFxuICAoKiBbVmVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtdmFycyAqKVxuICBtb2R1bGUgVmVudiA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGxvb2t1cCA6IHQgLT4gVmlkLnQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uXG4gICAgdmFsIGNyZWF0ZSA6IChWaWQudCAqIFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50KSBsaXN0IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgTWFwLk0oVmlkKS50XG5cbiAgICBsZXQgY3JlYXRlID1cbiAgICAgIExpc3QuZm9sZFxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgVmlkKSlcbiAgICAgICAgfmY6KGZ1biB0IChrLCB2KSAtPiBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXAgdCBrID0gTWFwLmZpbmQgdCBrXG4gIGVuZFxuXG4gIG1vZHVsZSBBcHBsaWNhbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgb2YgaW50XG4gICAgICB8IERlZmluaXRpb24gb2YgQ2Fub25pY2FsLkRlZi50XG4gIGVuZFxuXG4gICgqIFtUZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS1kZWZpbml0aW9ucyAqKVxuICBtb2R1bGUgVGVudiA6IHNpZ1xuICAgIHR5cGUga2V5ID0gR2lkLnQgKiBUaWQudFxuICAgIHR5cGUgdFxuXG4gICAgdmFsIGZpbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gb3B0aW9uXG4gICAgdmFsIGVtcHR5IDogdFxuICAgIHZhbCBleHRlbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBHaWQudCAqIFRpZC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIHR5cGUga2V5ID0gS2V5LnRcbiAgICB0eXBlIHQgPSBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gTWFwLk0oS2V5KS50XG5cbiAgICBsZXQgZmluZCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgICBsZXQgZW1wdHkgPSBNYXAuZW1wdHkgKG1vZHVsZSBLZXkpXG4gICAgbGV0IGV4dGVuZCB0IGsgdiA9IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdFxuICBlbmRcblxuICAoKiBbRGVmaW5pbmcudF1cbiAgICAgTW9uYWQgZm9yIG1hbmFnaW5nIHVuLXJvbGxpbmcgZGVwdGgsIGFuZCBtYWludGFpbmcgYSBbVGVudi50XSAqKVxuICBtb2R1bGUgRGVmaW5pbmcgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgdmFsIGxvb2tfZW52IDogVGVudi5rZXkgLT4gQXBwbGljYW5kLnQgb3B0aW9uIHRcbiAgICB2YWwgZXh0ZW5kX25ld190aWQgOiBUZW52LmtleSAtPiBDYW5vbmljYWwuRGVmLnQgdCAtPiBBcHBsaWNhbmQudCB0XG4gICAgdmFsIGV4ZWMgOiAnYSB0IC0+ICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGRlcHRoOmludCAtPiBUZW52LnQgLT4gJ2FcblxuICAgIGxldCByZXR1cm4geCB+ZGVwdGg6XyBfdGVudiA9IHhcblxuICAgIGxldCBiaW5kIHQgZiB+ZGVwdGggdGVudiA9XG4gICAgICBsZXQgeCA9IHQgfmRlcHRoIHRlbnYgaW5cbiAgICAgIChmIHgpIH5kZXB0aCB0ZW52XG4gICAgOztcblxuICAgIGxldCBsb29rX2VudiBrZXkgfmRlcHRoOl8gdGVudiA9XG4gICAgICBsZXQgcmVzdWx0ID0gVGVudi5maW5kIHRlbnYga2V5IGluXG4gICAgICBPcHRpb24ubWFwIH5mOihmdW4gKGBSZWN1cnNpb25fbGV2ZWwgeCkgLT4gQXBwbGljYW5kLlJlY3Vyc2lvbl9sZXZlbCB4KSByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IGV4dGVuZF9uZXdfdGlkIGtleSBkZWZfdCB+ZGVwdGggdGVudiA9XG4gICAgICBBcHBsaWNhbmQuRGVmaW5pdGlvblxuICAgICAgICAobGV0IHZhbHVlID0gYFJlY3Vyc2lvbl9sZXZlbCBkZXB0aCBpblxuICAgICAgICAgbGV0IHRlbnYgPSBUZW52LmV4dGVuZCB0ZW52IGtleSB2YWx1ZSBpblxuICAgICAgICAgZGVmX3QgfmRlcHRoOihkZXB0aCArIDEpIHRlbnYpXG4gICAgOztcblxuICAgIGxldCBleGVjIHQgPSB0IH5kZXB0aDowIFRlbnYuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSAnYSBkZWZpbmluZyA9ICdhIERlZmluaW5nLnRcblxuICBsZXQgKCA+Pj0gKSA9IERlZmluaW5nLmJpbmRcbiAgbGV0IHJldHVybiA9IERlZmluaW5nLnJldHVyblxuXG4gIGxldCBzZXF1ZW5jZV9kZWZpbmluZyA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IgZGVmaW5pbmcpIC0+ICdiIGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biB4cyB+ZiAtPlxuICAgIGxldCByZWMgbG9vcCBhY2NfeXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjY195cylcbiAgICAgIHwgeCA6OiB4cyAtPiBmIHggPj49IGZ1biB5IC0+IGxvb3AgKHkgOjogYWNjX3lzKSB4c1xuICAgIGluXG4gICAgbG9vcCBbXSB4c1xuICA7O1xuXG4gICgqXG4gICAgIFNoYXBlIGV2YWx1YXRpb24uXG5cbiAgICAgU2hhcGVzIGFyZSBldmFsdWF0ZWQgdG8gY2Fub25pY2FsLXNoYXBlIChleHByZXNzaW9ucyksIHdpdGggYWRkaXRpb25hbCBkZWZzIGNvbGxlY3RlZFxuICAgICBpbiB0aGUgW2RlZmluaW5nXSBtb25hZCwgd2hpY2ggYWxzbyBtYW5hZ2VzIGdlbmVyYXRpb24vbWFwcGluZyB0byBbQ2Fub25pY2FsLlRpZC50XVxuXG4gICAgIFRoZXJlIGlzIGRvd253YXJkcyBjb250ZXh0IG9mIFtncm91cF0gYW5kIFtWZW52LnRdXG4gICAgIFRoZSAoY3VycmVudCkgW2dyb3VwXSBjaGFuZ2VzIHdoZW4gdGhlIGNhc2UgZm9yIFtUb3BfYXBwXSBjYWxscyBbZXZhbF9hcHBdLlxuXG4gICAgIFRoZSBjdXJyZW50IFtWZW52LnRdIGlzIGFiYW5kb25lZCB3aGVuIFtldmFsX2FwcF0gaXMgY2FsbGVkLCBhbmQgdGhlbiByZS1jcmVhdGVkIGFmdGVyXG4gICAgIHRoZSBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIHRvIGVpdGhlciBpbmxpbmUgdGhlIHR5cGUtYXBwbGljYXRpb24sIG9yIG1ha2UgYSByZWZlcmVuY2VcbiAgICAgdG8gYSB0eXBlLWRlZmluaXRpb24sIHdoaWNoIGlzIGNyZWF0ZWQgYXQgbW9zdCBvbmNlIGZvciBlYWNoIChHaWQudCAqIFRpZC50KS5cblxuICAgICBXZSBtYWtlIGEgdHlwZS1kZWZpbml0aW9uIGFsd2F5cyBmb3IgUmVjb3JkcyBhbmQgVmFyaWFudHMsIGFuZCBpbiBhZGRpdGlvbiBmb3IgYW55XG4gICAgIG90aGVyIGN5Y2xpYyB0eXBlLWRlZmluaXRpb24uXG4gICopXG5cbiAgbGV0IHJlYyBldmFsIDogZ3JvdXAgLT4gVmVudi50IC0+IHQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBSZWNvcmQgYmluZHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYmluZHMgfmY6KGZ1biAocywgeCkgLT5cbiAgICAgICAgICBldmFsIGdyb3VwIHZlbnYgeCA+Pj0gZnVuIHkgLT4gcmV0dXJuIChzLCB5KSlcbiAgICAgICAgPj49IGZ1biBiaW5kcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucmVjb3JkIGJpbmRzKVxuICAgICAgfCBWYXJpYW50IGFsdHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYWx0cyB+ZjooZnVuIChzLCB4cykgLT5cbiAgICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB4cyA+Pj0gZnVuIHlzIC0+IHJldHVybiAocywgeXMpKVxuICAgICAgICA+Pj0gZnVuIGFsdHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnZhcmlhbnQgYWx0cylcbiAgICAgIHwgVmFyIChsb2MsIHZpZCkgLT5cbiAgICAgICAgKG1hdGNoIFZlbnYubG9va3VwIHZlbnYgdmlkIHdpdGhcbiAgICAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgICAgICB8IE5vbmUgLT4gZXZhbF9mYWlsIGxvYyAhXCJGcmVlIHR5cGUgdmFyaWFibGU6ICcle1ZpZH1cIiB2aWQgKCkpXG4gICAgICB8IEFubm90YXRlIChzLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmFubm90YXRlIHMgdilcbiAgICAgIHwgQmFzZSAocywgdHMpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmJhc2V0eXBlIHMgdnMpXG4gICAgICB8IFR1cGxlIHRzIC0+IGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnR1cGxlIHZzKVxuICAgICAgfCBUb3BfYXBwIChpbl9ncm91cCwgdGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzXG4gICAgICAgID4+PSBmdW4gYXJncyAtPlxuICAgICAgICAoKiBhcmdzIGV2YWx1YXRlZCBpbiBjdXJyZW50IGdyb3VwICopXG4gICAgICAgIGV2YWxfYXBwIGluX2dyb3VwIHRpZCBhcmdzXG4gICAgICAoKiBncm91cCBjaGFuZ2VkIGhlcmUgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzID4+PSBmdW4gYXJncyAtPiBldmFsX2FwcCBncm91cCB0aWQgYXJnc1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgKGxvYywgY3MpIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIH5mOihldmFsX3BvbHlfY29uc3RyIGdyb3VwIHZlbnYpIGNzXG4gICAgICAgID4+PSBmdW4geHNzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5wb2x5X3ZhcmlhbnQgbG9jIChMaXN0LmNvbmNhdCB4c3MpKVxuXG4gIGFuZCBldmFsX2xpc3QgOiBncm91cCAtPiBWZW52LnQgLT4gdCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0cyAtPiBzZXF1ZW5jZV9kZWZpbmluZyB0cyB+ZjooZXZhbCBncm91cCB2ZW52KVxuXG4gIGFuZCBldmFsX3BvbHlfY29uc3RyXG4gICAgOiAgZ3JvdXAgLT4gVmVudi50IC0+IHQgcG9seV9jb25zdHJcbiAgICAgIC0+IChzdHJpbmcgKiBWaXNpYmlsaXR5Lm9wYXF1ZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvbikgbGlzdCBkZWZpbmluZ1xuICAgID1cbiAgICBmdW4gZ3JvdXAgdmVudiBjIC0+XG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgYENvbnN0ciAocywgTm9uZSkgLT4gcmV0dXJuIFsgcywgTm9uZSBdXG4gICAgICB8IGBDb25zdHIgKHMsIFNvbWUgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiBbIHMsIFNvbWUgKENhbm9uaWNhbC5FeHAxLm9wYXF1ZSB2KSBdXG4gICAgICB8IGBJbmhlcml0IChsb2MsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0XG4gICAgICAgID4+PSBmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggQ2Fub25pY2FsLkV4cDEuZ2V0X3BvbHlfdmFyaWFudCB2IHdpdGhcbiAgICAgICAgIHwgT2sgdGFiIC0+IHJldHVybiAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWIpXG4gICAgICAgICB8IEVycm9yIGRlc2MgLT5cbiAgICAgICAgICAgZXZhbF9mYWlsXG4gICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgXCJUaGUgc2hhcGUgZm9yIGFuIGluaGVyaXRlZCB0eXBlIGlzIG5vdCBkZXNjcmliZWQgYXMgYSBwb2x5bW9ycGhpYy12YXJpYW50OiAlc1wiXG4gICAgICAgICAgICAgZGVzY1xuICAgICAgICAgICAgICgpKVxuXG4gIGFuZCBldmFsX2RlZmluaXRpb24gOiBncm91cCAtPiBWaWQudCBsaXN0IC0+IHQgLT4gQ2Fub25pY2FsLkRlZi50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgZm9ybWFscyBib2R5IC0+XG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIChMaXN0Lm1hcGkgZm9ybWFscyB+ZjooZnVuIGkgeCAtPiB4LCBDYW5vbmljYWwuRXhwMS52YXIgaSkpIGluXG4gICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmRlZmluZSB2KVxuXG4gIGFuZCBldmFsX2FwcCA6IGdyb3VwIC0+IFRpZC50IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHRpZCBhcmdzIC0+XG4gICAgICBsZXQgZ2lkID0gR3JvdXAuaWQgZ3JvdXAgaW5cbiAgICAgIGxldCBmb3JtYWxzLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCA9XG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+IHRydWVcbiAgICAgICAgfCBUdXBsZSBfIHwgQW5ub3RhdGUgXyB8IEJhc2UgXyB8IFBvbHlfdmFyaWFudCBfIHwgVmFyIF8gfCBSZWNfYXBwIF8gfCBUb3BfYXBwIF8gLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjeWNsaWMgPSBpc19jeWNsaWMgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgY3ljbGljX25vX1ZSID0gaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgZ3JvdXAgdGlkIGluXG4gICAgICBpZiAocmVjb3JkX29yX25vcm1hbF92YXJpYW50ICYmIGN5Y2xpYykgfHwgY3ljbGljX25vX1ZSXG4gICAgICB0aGVuXG4gICAgICAgIERlZmluaW5nLmxvb2tfZW52IChnaWQsIHRpZClcbiAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSByZWN1cnNlIC0+IHJldHVybiByZWN1cnNlXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBEZWZpbmluZy5leHRlbmRfbmV3X3RpZCAoZ2lkLCB0aWQpIChldmFsX2RlZmluaXRpb24gZ3JvdXAgZm9ybWFscyBib2R5KSlcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgUmVjdXJzaW9uX2xldmVsIHIgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5yZWN1cnNlIHIgYXJncylcbiAgICAgICAgfCBEZWZpbml0aW9uIGRlZiAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLmFwcGx5IGRlZiBhcmdzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB2ZW52ID1cbiAgICAgICAgICBtYXRjaCBMaXN0LnppcCBmb3JtYWxzIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgT2sgeCAtPiBWZW52LmNyZWF0ZSB4XG4gICAgICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gZmFpbHdpdGggXCJhcHBseSwgaW5jb3JyZWN0IHR5cGUgYXBwbGljYXRpb24gYXJpdHlcIlxuICAgICAgICBpblxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSlcbiAgOztcblxuICAoKiB0b3AgbGV2ZWwgZW50cnkgcG9pbnQgZm9yIGV2YWx1YXRpb24gKilcbiAgbGV0IGV2YWwgOiB0IC0+IENhbm9uaWNhbC50ID1cbiAgICBmdW4gdCAtPlxuICAgICAgbGV0IGdyb3VwID0gZ3JvdXAgKExvY2F0aW9uLm9mX3N0cmluZyBcInRvcC1sZXZlbFwiKSBbXSBpblxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSBbXSBpblxuICAgICAgbGV0IHYgPSBEZWZpbmluZy5leGVjIChldmFsIGdyb3VwIHZlbnYgdCkgaW5cbiAgICAgIENhbm9uaWNhbC5DcmVhdGUuY3JlYXRlIHZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsID0gc3RydWN0XG4gIGluY2x1ZGUgQ2Fub25pY2FsX2Z1bGxcblxuICBtb2R1bGUgRXhwID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV2YWx1YXRpb24gKENhbm9uaWNhbF9mdWxsKVxubW9kdWxlIENhbm9uaWNhbF9zZWxlY3RlZCA9IENhbm9uaWNhbF9kaWdlc3Rcbm1vZHVsZSBFdmFsdWF0aW9uX3RvX2RpZ2VzdCA9IEV2YWx1YXRpb24gKENhbm9uaWNhbF9zZWxlY3RlZClcblxubGV0IGV2YWxfdG9fZGlnZXN0IGV4cCA9IENhbm9uaWNhbF9zZWxlY3RlZC50b19kaWdlc3QgKEV2YWx1YXRpb25fdG9fZGlnZXN0LmV2YWwgZXhwKVxubGV0IGV2YWxfdG9fZGlnZXN0X3N0cmluZyBleHAgPSBEaWdlc3QudG9faGV4IChldmFsX3RvX2RpZ2VzdCBleHApXG5cbm1vZHVsZSBGb3JfdHlwZXJlcCA9IHN0cnVjdFxuICBleGNlcHRpb24gTm90X2FfdHVwbGUgb2YgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBkZWNvbnN0cnVjdF90dXBsZV9leG4gdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBUdXBsZSB0cyAtPiB0c1xuICAgIHwgXyAtPiByYWlzZSAoTm90X2FfdHVwbGUgdClcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIuMCAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuKCoqIHsxOnByZWRpY2F0ZXMgUHJlZGljYXRlcyBhbmQgY29tcGFyaXNvbnN9ICopXG5cbnZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4oKiogW2VxdWFsIHMwIHMxXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3MwXSBhbmQgW3MxXSBhcmUgY2hhcmFjdGVyLXdpc2VcbiAgICBlcXVhbC5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBlbmRzX3dpdGggOlxuICBzdWZmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtlbmRzX3dpdGggXVt+c3VmZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gZW5kcyB3aXRoIFtzdWZmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG5cbiAgICBUaGUgZnVuY3Rpb24ncyByZXN1bHQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czpcbiAgICB7dWxcbiAgICB7LSBUaGUgbGlzdCBpcyBub3QgZW1wdHkufVxuICAgIHstIENvbmNhdGVuYXRpbmcgaXRzIGVsZW1lbnRzIHVzaW5nIFtzZXBdIGFzIGEgc2VwYXJhdG9yIHJldHVybnMgYVxuICAgICAgc3RyaW5nIGVxdWFsIHRvIHRoZSBpbnB1dCAoW2NvbmNhdCAobWFrZSAxIHNlcClcbiAgICAgIChzcGxpdF9vbl9jaGFyIHNlcCBzKSA9IHNdKS59XG4gICAgey0gTm8gc3RyaW5nIGluIHRoZSByZXN1bHQgY29udGFpbnMgdGhlIFtzZXBdIGNoYXJhY3Rlci59fVxuXG4gICAgQHNpbmNlIDQuMDQuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG52YWwgbWFwaSA6IChpbnQgLT4gY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcGkgZiBzXSBpcyBsaWtlIHshbWFwfSBidXQgdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgaXMgYWxzb1xuICAgIHBhc3NlZCB0byBbZl0uXG5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2EgLT4gY2hhciAtPiAnYSkgLT4gJ2EgLT4gc3RyaW5nIC0+ICdhXG4oKiogW2ZvbGRfbGVmdCBmIHggc10gY29tcHV0ZXMgW2YgKC4uLiAoZiAoZiB4IHMuWzBdKSBzLlsxXSkgLi4uKSBzLltuLTFdXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2EgLT4gJ2EpIC0+IHN0cmluZyAtPiAnYSAtPiAnYVxuKCoqIFtmb2xkX3JpZ2h0IGYgcyB4XSBjb21wdXRlcyBbZiBzLlswXSAoZiBzLlsxXSAoIC4uLiAoZiBzLltuLTFdIHgpIC4uLikpXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgdHJpbSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdHJpbSBzXSBpcyBbc10gd2l0aG91dCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiBXaGl0ZXNwYWNlXG4gICAgY2hhcmFjdGVycyBhcmU6IFsnICddLCBbJ1xceDBDJ10gKGZvcm0gZmVlZCksIFsnXFxuJ10sIFsnXFxyJ10sIGFuZCBbJ1xcdCddLlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBsb3dlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2xvd2VyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgdXBwZXJjYXNlIGxldHRlcnMgdHJhbnNsYXRlZFxuICAgIHRvIGxvd2VyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYXZlcnNpbmcgVHJhdmVyc2luZ30gKilcblxudmFsIGl0ZXIgOiAoY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyIGYgc10gYXBwbGllcyBmdW5jdGlvbiBbZl0gaW4gdHVybiB0byBhbGwgdGhlIGNoYXJhY3RlcnMgb2YgW3NdLlxuICAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW2Ygcy5bMF07IGYgcy5bMV07IC4uLjsgZiBzLltsZW5ndGggcyAtIDFdOyAoKV0uICopXG5cbnZhbCBpdGVyaSA6IChpbnQgLT4gY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyaV0gaXMgbGlrZSB7IWl0ZXJ9LCBidXQgdGhlIGZ1bmN0aW9uIGlzIGFsc28gZ2l2ZW4gdGhlXG4gICAgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogW2JsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXSBjb3BpZXMgW2xlbl0gYnl0ZXNcbiAgICBmcm9tIHRoZSBzdHJpbmcgW3NyY10sIHN0YXJ0aW5nIGF0IGluZGV4IFtzcmNfcG9zXSxcbiAgICB0byBieXRlIHNlcXVlbmNlIFtkc3RdLCBzdGFydGluZyBhdCBjaGFyYWN0ZXIgbnVtYmVyIFtkc3RfcG9zXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzcmNfcG9zXSBhbmQgW2xlbl0gZG8gbm90XG4gICAgZGVzaWduYXRlIGEgdmFsaWQgcmFuZ2Ugb2YgW3NyY10sIG9yIGlmIFtkc3RfcG9zXSBhbmQgW2xlbl1cbiAgICBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWQgcmFuZ2Ugb2YgW2RzdF0uICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQ4IGIgaV0gaXMgW2JdJ3Mgc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAuMCAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjAuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuKCoqLyoqKVxuXG4oKiBUaGUgZm9sbG93aW5nIGlzIGZvciBzeXN0ZW0gdXNlIG9ubHkuIERvIG5vdCBjYWxsIGRpcmVjdGx5LiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT5cbiAgICB1bml0ID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbiIsIigqIENvbW1vbjogY29tbW9uIGRlZmluaXRpb25zIHVzZWQgYnkgYmluYXJ5IHByb3RvY29sIGNvbnZlcnRlcnMgKilcblxub3BlbiBCYXNlXG5vcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuXG50eXBlIHBvcyA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4oKiBFcnJvcnMgYW5kIGV4Y2VwdGlvbnMgKilcblxuZXhjZXB0aW9uIEJ1ZmZlcl9zaG9ydFxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubW9kdWxlIFJlYWRFcnJvciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnX2ludDhcbiAgICB8IEludF9jb2RlXG4gICAgfCBJbnRfb3ZlcmZsb3dcbiAgICB8IE5hdDBfY29kZVxuICAgIHwgTmF0MF9vdmVyZmxvd1xuICAgIHwgSW50MzJfY29kZVxuICAgIHwgSW50NjRfY29kZVxuICAgIHwgTmF0aXZlaW50X2NvZGVcbiAgICB8IFVuaXRfY29kZVxuICAgIHwgQm9vbF9jb2RlXG4gICAgfCBPcHRpb25fY29kZVxuICAgIHwgU3RyaW5nX3Rvb19sb25nXG4gICAgfCBWYXJpYW50X3RhZ1xuICAgIHwgQXJyYXlfdG9vX2xvbmdcbiAgICB8IExpc3RfdG9vX2xvbmcgb2ZcbiAgICAgICAgeyBsZW4gOiBpbnRcbiAgICAgICAgOyBtYXhfbGVuIDogaW50XG4gICAgICAgIH1cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmdcbiAgICB8IFN1bV90YWcgb2Ygc3RyaW5nXG4gICAgfCBWYXJpYW50IG9mIHN0cmluZ1xuICAgIHwgUG9seV9yZWNfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBWYXJpYW50X3dyb25nX3R5cGUgb2Ygc3RyaW5nXG4gICAgfCBTaWxseV90eXBlIG9mIHN0cmluZ1xuICAgIHwgRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IE5lZ19pbnQ4IC0+IFwiTmVnX2ludDhcIlxuICAgIHwgSW50X2NvZGUgLT4gXCJJbnRfY29kZVwiXG4gICAgfCBJbnRfb3ZlcmZsb3cgLT4gXCJJbnRfb3ZlcmZsb3dcIlxuICAgIHwgTmF0MF9jb2RlIC0+IFwiTmF0MF9jb2RlXCJcbiAgICB8IE5hdDBfb3ZlcmZsb3cgLT4gXCJOYXQwX292ZXJmbG93XCJcbiAgICB8IEludDMyX2NvZGUgLT4gXCJJbnQzMl9jb2RlXCJcbiAgICB8IEludDY0X2NvZGUgLT4gXCJJbnQ2NF9jb2RlXCJcbiAgICB8IE5hdGl2ZWludF9jb2RlIC0+IFwiTmF0aXZlaW50X2NvZGVcIlxuICAgIHwgVW5pdF9jb2RlIC0+IFwiVW5pdF9jb2RlXCJcbiAgICB8IEJvb2xfY29kZSAtPiBcIkJvb2xfY29kZVwiXG4gICAgfCBPcHRpb25fY29kZSAtPiBcIk9wdGlvbl9jb2RlXCJcbiAgICB8IFN0cmluZ190b29fbG9uZyAtPiBcIlN0cmluZ190b29fbG9uZ1wiXG4gICAgfCBWYXJpYW50X3RhZyAtPiBcIlZhcmlhbnRfdGFnXCJcbiAgICB8IEFycmF5X3Rvb19sb25nIC0+IFwiQXJyYXlfdG9vX2xvbmdcIlxuICAgIHwgTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9IC0+IHNwcmludGYgXCJMaXN0X3Rvb19sb25nIC8gJWQgKG1heCAlZClcIiBsZW4gbWF4X2xlblxuICAgIHwgSGFzaHRibF90b29fbG9uZyAtPiBcIkhhc2h0YmxfdG9vX2xvbmdcIlxuICAgIHwgU3VtX3RhZyBsb2MgLT4gXCJTdW1fdGFnIC8gXCIgXiBsb2NcbiAgICB8IFZhcmlhbnQgbG9jIC0+IFwiVmFyaWFudCAvIFwiIF4gbG9jXG4gICAgfCBQb2x5X3JlY19ib3VuZCBsb2MgLT4gXCJQb2x5X3JlY19ib3VuZCAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50X3dyb25nX3R5cGUgbG9jIC0+IFwiVmFyaWFudF93cm9uZ190eXBlIC8gXCIgXiBsb2NcbiAgICB8IFNpbGx5X3R5cGUgbG9jIC0+IFwiU2lsbHlfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBFbXB0eV90eXBlIGxvYyAtPiBcIkVtcHR5X3R5cGUgLyBcIiBeIGxvY1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5lbmRcblxuZXhjZXB0aW9uIFJlYWRfZXJyb3Igb2YgUmVhZEVycm9yLnQgKiBwb3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmV4Y2VwdGlvbiBQb2x5X3JlY193cml0ZSBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBFbXB0eV90eXBlIG9mIHN0cmluZ1xuXG5sZXQgcmFpc2VfcmVhZF9lcnJvciBlcnIgcG9zID0gcmFpc2UgKFJlYWRfZXJyb3IgKGVyciwgcG9zKSlcblxubGV0IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lIHBvcyA9XG4gIHJhaXNlIChSZWFkX2Vycm9yIChSZWFkRXJyb3IuVmFyaWFudF93cm9uZ190eXBlIG5hbWUsIHBvcykpXG47O1xuXG5sZXQgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gbG9jID0gZmFpbHdpdGggKGxvYyBeIFwiOiBjb25jdXJyZW50IG1vZGlmaWNhdGlvblwiKVxubGV0IGFycmF5X2JvdW5kX2Vycm9yICgpID0gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCJcblxuKCogQnVmZmVycyAqKVxuXG50eXBlIHBvc19yZWYgPSBwb3MgcmVmXG50eXBlIGJ1ZiA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbmxldCBjcmVhdGVfYnVmIG4gPSBBcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgY19sYXlvdXQgblxubGV0IGJ1Zl9sZW4gYnVmID0gQXJyYXkxLmRpbSBidWZcbmxldCBhc3NlcnRfcG9zIHBvcyA9IGlmIHBvcyA8IDAgdGhlbiBhcnJheV9ib3VuZF9lcnJvciAoKVxubGV0IGNoZWNrX3BvcyAoYnVmIDogYnVmKSBwb3MgPSBpZiBwb3MgPj0gQXJyYXkxLmRpbSBidWYgdGhlbiByYWlzZSBCdWZmZXJfc2hvcnRcblxubGV0IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBjaGVja19wb3MgYnVmIHBvcztcbiAgcG9zXG47O1xuXG5sZXQgY2hlY2tfbmV4dCAoYnVmIDogYnVmKSBuZXh0ID0gaWYgbmV4dCA+IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBnZXRfb3B0X3BvcyB+bG9jIH52YXIgPSBmdW5jdGlvblxuICB8IFNvbWUgcG9zIC0+XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiQmluX3Byb3QuQ29tbW9uLiVzOiAlcyA8IDBcIiBsb2MgdmFyKTtcbiAgICBwb3NcbiAgfCBOb25lIC0+IDBcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBzcmM6YnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGRzdDpidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXCJcblxubGV0IGJsaXRfYnVmID9zcmNfcG9zIH5zcmMgP2RzdF9wb3MgfmRzdCBsZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEFycmF5MS5kaW0gc3JjXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyA+IHNyY19sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBkc3RcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zID4gZHN0X2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIHNyY1xuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBzcmNfcG9zICsgbGVuID4gc3JjX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gZHN0XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGRzdF9wb3MgKyBsZW4gPiBkc3RfbGVuXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9idWYgfnNyY19wb3MgfnNyYyB+ZHN0X3BvcyB+ZHN0IH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZ19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3RyaW5nXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBieXRlc1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X3N0cmluZ19idWYgP3NyY19wb3Mgc3RyID9kc3RfcG9zIGJ1ZiB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9zdHJpbmdfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgPiBidWZcIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgKyBsZW4gPiBidWZcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3Mgc3RyIH5kc3RfcG9zIGJ1ZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9ieXRlc19idWYgP3NyY19wb3Mgc3RyID9kc3RfcG9zIGJ1ZiB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9ieXRlc19idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBCeXRlcy5sZW5ndGggc3RyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IHN0cl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3Mgc3RyIH5kc3RfcG9zIGJ1ZiB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfc3RyaW5nXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBieXRlc1xuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2J5dGVzXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBieXRlc1xuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IGJsaXRfYnVmX2J5dGVzID9zcmNfcG9zIGJ1ZiA/ZHN0X3BvcyBzdHIgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnVmX3N0cmluZ1wiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gYnVmX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBCeXRlcy5sZW5ndGggc3RyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgPiBzdHJfbGVuXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gYnVmX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9idWZfYnl0ZXMgfnNyY19wb3MgYnVmIH5kc3RfcG9zIHN0ciB+bGVuXG47O1xuXG5sZXQgYmxpdF9idWZfc3RyaW5nID0gYmxpdF9idWZfYnl0ZXNcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5sZXQgcmVjIGNvcHlfaHRibF9saXN0IGh0YmwgPSBmdW5jdGlvblxuICB8IFtdIC0+IGh0YmxcbiAgfCAoaywgdikgOjogcmVzdCAtPlxuICAgIENhbWwuSGFzaHRibC5hZGQgaHRibCBrIHY7XG4gICAgY29weV9odGJsX2xpc3QgaHRibCByZXN0XG47O1xuXG4oKiBCaWdhcnJheXMgKilcblxudHlwZSB2ZWMzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWM2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSB2ZWM2NFxudHlwZSBtYXQzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQ2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBtYXQ2NFxuXG4oKiBGbG9hdCBhcnJheXMgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKioqKVxuXG5sZXQgKCArICkgPSAoICsgKVxuIiwiKCogTmF0MDogbmF0dXJhbCBudW1iZXJzIChpbmNsdWRpbmcgemVybykgKilcblxudHlwZSB0ID0gaW50XG5cbmxldCBvZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gZmFpbHdpdGggXCJCaW5fcHJvdC5OYXQwLm9mX2ludDogbiA8IDBcIjtcbiAgblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuIiwiKCogV3JpdGVfbWw6IHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2Egd3JpdGVyID0gYnVmIC0+IHBvczpwb3MgLT4gJ2EgLT4gcG9zXG50eXBlICgnYSwgJ2IpIHdyaXRlcjEgPSAnYSB3cml0ZXIgLT4gJ2Igd3JpdGVyXG50eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIyID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MpIHdyaXRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIzID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MsICdkKSB3cml0ZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBjb2RlX05FR19JTlQ4ID0gKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSAnXFx4ZmYnICgqJCopXG5cbmxldCBjb2RlX0lOVDE2ID0gKCokIENvZGUuY2hhciBJTlQxNiAqKSAnXFx4ZmUnICgqJCopXG5cbmxldCBjb2RlX0lOVDMyID0gKCokIENvZGUuY2hhciBJTlQzMiAqKSAnXFx4ZmQnICgqJCopXG5cbmxldCBjb2RlX0lOVDY0ID0gKCokIENvZGUuY2hhciBJTlQ2NCAqKSAnXFx4ZmMnICgqJCopXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN5cy5iaWdfZW5kaWFuXG5cbmxldCB1bnNhZmVfc2V0MTZiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXQxNlxuICBlbHNlIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDE2IGJ1ZiBwb3MgKGJzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfc2V0MzJiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXQzMlxuICBlbHNlIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDMyIGJ1ZiBwb3MgKGJzd2FwMzIgeClcbjs7XG5cbmxldCB1bnNhZmVfc2V0NjRiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXQ2NFxuICBlbHNlIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDY0IGJ1ZiBwb3MgKGJzd2FwNjQgeClcbjs7XG5cbmxldCB1bnNhZmVfc2V0MTZsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDE2IGJ1ZiBwb3MgKGJzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0MTZcbjs7XG5cbmxldCB1bnNhZmVfc2V0MzJsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDMyIGJ1ZiBwb3MgKGJzd2FwMzIgeClcbiAgZWxzZSB1bnNhZmVfc2V0MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0NjRsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDY0IGJ1ZiBwb3MgKGJzd2FwNjQgeClcbiAgZWxzZSB1bnNhZmVfc2V0NjRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdW5pdCBidWYgfnBvcyAoKSA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zICdcXDAwMCc7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyBiID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgKGlmIGIgdGhlbiAnXFwwMDEnIGVsc2UgJ1xcMDAwJyk7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG4gPVxuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldDggYnVmIHBvcyBuO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9uZWdfaW50OCBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfTkVHX0lOVDg7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAzIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDE2O1xuICB1bnNhZmVfc2V0MTZsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgNSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQzMjtcbiAgdW5zYWZlX3NldDMybGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDkgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UNjQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9jaGFyIGJ1ZiB+cG9zIGMgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGlmIG4gPj0gMFxuICB0aGVuXG4gICAgaWYgbiA8IDB4MDAwMDAwODBcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gICAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49IDEgbHNsIDMxXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICAgIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbiAgZWxzZSBpZiBuID49IC0weDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9uZWdfaW50OCBidWYgcG9zIG5cbiAgZWxzZSBpZiBuID49IC0weDAwMDA4MDAwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgLSgxIGxzbCAzMSlcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgbmF0MCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbiA9IChuYXQwIDogTmF0MC50IDo+IGludCkgaW5cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgZWxzZSBpZiBuIDwgMHgwMDAxMDAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMlxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfc3RyaW5nIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IG5ld19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gbmV3X3BvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAoKiBUT0RPOiBvcHRpbWl6ZSBmb3Igc21hbGwgc3RyaW5ncyAqKVxuICB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOm5ld19wb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfYnl0ZXMgYnVmIH5wb3Mgc3RyID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIGJ5dGVzICopXG4gIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0IGJ1ZiB+cG9zIHggPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiBwb3MgKEludDY0LmJpdHNfb2ZfZmxvYXQgeCk7XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50MzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBbQGlubGluZV0gYnVmIH5wb3MgbiAtPiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQzMi50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBbQGlubGluZV0gYnVmIH5wb3MgbiAtPlxuICAgICAgaWYgbiA+PSAweDAwMDA4MDAwbCB8fCBuIDwgLTB4MDAwMDgwMDBsXG4gICAgICB0aGVuIChcbiAgICAgICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyBuKVxuICAgICAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQzMi50b19pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGlmIG4gPj0gMHg4MDAwMDAwMEwgfHwgbiA8IC0weDgwMDAwMDAwTFxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgbilcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDY0LnRvX2ludCBuKVxuICBlbHNlIGlmIG4gPj0gMHgwMDAwODAwMEwgfHwgbiA8IC0weDAwMDA4MDAwTFxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDY0LnRvX2ludDMyIG4pKVxuICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDY0LnRvX2ludCBuKVxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9uYXRpdmVpbnQgYnVmIH5wb3MgbiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gICYmIChuID49ICgqIDB4ODAwMDAwMDBuICopIE5hdGl2ZWludC5zaGlmdF9sZWZ0IDFuIDMxXG4gICAgICB8fCBuIDwgKCogLTB4ODAwMDAwMDBuICopIE5hdGl2ZWludC5uZWcgKE5hdGl2ZWludC5zaGlmdF9sZWZ0IDFuIDMxKSlcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9uYXRpdmVpbnQgbikpXG4gIGVsc2UgaWYgKChub3QgYXJjaF9zaXh0eWZvdXIpICYmIG4gPj0gMHg4MDAwbikgfHwgbiA8IC0weDgwMDBuXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoTmF0aXZlaW50LnRvX2ludDMyIG4pKVxuICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKE5hdGl2ZWludC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfcmVmIGJpbl93cml0ZV9lbCBidWYgfnBvcyByID0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zICFyXG5cbmxldCBiaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgbHYgPVxuICBsZXQgdiA9IExhenkuZm9yY2UgbHYgaW5cbiAgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHZcbjs7XG5cbmxldCBiaW5fd3JpdGVfb3B0aW9uIGJpbl93cml0ZV9lbCBidWYgfnBvcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyBmYWxzZVxuICB8IFNvbWUgdiAtPlxuICAgIGxldCBuZXh0ID0gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgdHJ1ZSBpblxuICAgIGJpbl93cml0ZV9lbCBidWYgfnBvczpuZXh0IHZcbjs7XG5cbmxldCBiaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvcyAoYSwgYikgPVxuICBsZXQgbmV4dCA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgaW5cbiAgYmluX3dyaXRlX2IgYnVmIH5wb3M6bmV4dCBiXG47O1xuXG5sZXQgYmluX3dyaXRlX3RyaXBsZSBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyAoYSwgYiwgYykgPVxuICBsZXQgbmV4dDEgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGxldCBuZXh0MiA9IGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQxIGIgaW5cbiAgYmluX3dyaXRlX2MgYnVmIH5wb3M6bmV4dDIgY1xuOztcblxubGV0IGJpbl93cml0ZV9saXN0ID1cbiAgbGV0IHJlYyBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvcyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBlbHNfcG9zXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IG5ld19lbHNfcG9zID0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOmVsc19wb3MgaGQgaW5cbiAgICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zOm5ld19lbHNfcG9zIHRsXG4gIGluXG4gIGZ1biBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgbHN0IC0+XG4gICAgbGV0IGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCAoTGlzdC5sZW5ndGggbHN0KSBpblxuICAgIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgbGVuIGluXG4gICAgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4gfmxlbmd0aCB+YmxpdCBidWYgfnBvcyBhID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGJsaXQgfnNyY19wb3M6MCBhIH5kc3RfcG9zOnBvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdGFycmF5IGJ1ZiB+cG9zIGEgPVxuICBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmxlbmd0aDpGbG9hdC5BcnJheS5sZW5ndGhcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9mbG9hdGFycmF5X2J1ZlxuICAgIGJ1ZlxuICAgIH5wb3NcbiAgICBhXG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zIGEgPVxuICBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmxlbmd0aDpBcnJheS5sZW5ndGhcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9mbG9hdF9hcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIgPVxuICBsZXQgZWxzX3Bvc19yZWYgPSByZWYgZWxzX3BvcyBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBlbHNfcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6IWVsc19wb3NfcmVmIChBcnJheS51bnNhZmVfZ2V0IGFyIGkpXG4gIGRvbmU7XG4gICFlbHNfcG9zX3JlZlxuOztcblxubGV0IGJpbl93cml0ZV9hcnJheSAodHlwZSBhKSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fd3JpdGVfZWwgOiBhIHdyaXRlcikgOiBmbG9hdCB3cml0ZXIpID09IGJpbl93cml0ZV9mbG9hdFxuICB0aGVuIGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyAoT2JqLm1hZ2ljIChhciA6IGEgYXJyYXkpIDogZmxvYXQgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgbGV0IHBuID0gTmF0MC51bnNhZmVfb2ZfaW50IG4gaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBuIGluXG4gICAgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3BvcyB+biBhcilcbjs7XG5cbmxldCBiaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVfa2V5IGJpbl93cml0ZV92YWwgYnVmIH5wb3MgaHRibCA9XG4gIGxldCBsZW4gPSBIYXNodGJsLmxlbmd0aCBodGJsIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICBsZXQgY29sbF9odGJsIGsgdiBlbHNfcG9zID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgbGV0IG5ld19lbHNfcG9zID0gYmluX3dyaXRlX2tleSBidWYgfnBvczplbHNfcG9zIGsgaW5cbiAgICBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zOm5ld19lbHNfcG9zIHZcbiAgaW5cbiAgbGV0IHJlc19wb3MgPSBIYXNodGJsLmZvbGQgY29sbF9odGJsIGh0YmwgZWxzX3BvcyBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl93cml0ZV9oYXNodGJsXCI7XG4gIHJlc19wb3Ncbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl93cml0ZV9mbG9hdDMyX3ZlYyBidWYgfnBvcyB2ID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gdiBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA0IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX3ZlYzMyIHYpIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdDY0X3ZlYyBidWYgfnBvcyB2ID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gdiBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX3ZlYzY0IHYpIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92ZWMgPSBiaW5fd3JpdGVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl93cml0ZV9mbG9hdDMyX21hdCBidWYgfnBvcyBtID1cbiAgbGV0IGxlbjEgPSBBcnJheTIuZGltMSBtIGluXG4gIGxldCBsZW4yID0gQXJyYXkyLmRpbTIgbSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4xKSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4yKSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl9tYXQzMiBtKSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0NjQgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX21hdCA9IGJpbl93cml0ZV9mbG9hdDY0X21hdFxuXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyBidWYgfnBvcyBzID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gcyBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6cyB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX3ZhcmlhbnRfaW50IGJ1ZiB+cG9zIHggPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiBwb3MgKEludDMyLmxvZ29yIChJbnQzMi5zaGlmdF9sZWZ0IChJbnQzMi5vZl9pbnQgeCkgMSkgMWwpO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF84Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMTZiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF8zMmJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzY0Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnQ2NF9iaXRzIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrMTZfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMyYmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcms2NF9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbm9fbGVuZ3RoIGJpbl93cml0ZV9lbCBidWYgfnBvcyBhciA9XG4gIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3M6cG9zIH5uOihBcnJheS5sZW5ndGggYXIpIGFyXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDMyIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDY0IDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5cbmxldCBiaW5fd3JpdGVfbWQ1IGJ1ZiB+cG9zIHggPVxuICBsZXQgeCA9IE1kNV9saWIudG9fYmluYXJ5IHggaW5cbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHggPSAxNik7XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCA4IGluXG4gICAgdW5zYWZlX3NldDY0IGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0NjQgYnVmIChwb3MgKyA4KSBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggNCBpblxuICAgIGxldCBjID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDggaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAxMiBpblxuICAgIHVuc2FmZV9zZXQzMiBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgNCkgYjtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA4KSBjO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDEyKSBkKTtcbiAgbmV4dFxuOztcbiIsIigqIFJlYWRfbWw6IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSByZWFkZXIgPSBidWYgLT4gcG9zX3JlZjpwb3NfcmVmIC0+ICdhXG50eXBlICgnYSwgJ2IpIHJlYWRlcjEgPSAnYSByZWFkZXIgLT4gJ2IgcmVhZGVyXG50eXBlICgnYSwgJ2IsICdjKSByZWFkZXIyID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MpIHJlYWRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIzID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MsICdkKSByZWFkZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG5sZXQgdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgYyA9IHVuc2FmZV9nZXQ4IGJ1ZiBwb3MgaW5cbiAgaWYgYyA+PSAxMjggdGhlbiBjIC0gMjU2IGVsc2UgY1xuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxubGV0IG1heF9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWluX2ludFxubGV0IG1heF9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWluX2ludFxuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDMyIHBvcyB4ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIGlmIHggPj0gbWluX2ludF9pbnQzMiAmJiB4IDw9IG1heF9pbnRfaW50MzJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50NjQgcG9zIHggPVxuICBpZiB4ID49IG1pbl9pbnRfaW50NjQgJiYgeCA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gSW50NjQudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXQgc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfcG9zIHggLT4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgZWxzZVxuICAgIGZ1biBbQGlubGluZSBhbHdheXNdIHBvcyB4IC0+XG4gICAgICBpZiB4ID49IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWluX2ludFxuICAgICAgJiYgeCA8PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1heF9pbnRcbiAgICAgIHRoZW4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2dldDE2IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQxNiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQzMiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQ2NCBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTYgZWxzZSB1bnNhZmVfZ2V0MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzIgZWxzZSB1bnNhZmVfZ2V0MzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjQgZWxzZSB1bnNhZmVfZ2V0NjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCB4ID0gdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcyBpblxuICBpZiB4ID4gMzI3NjcgdGhlbiB4IC0gNjU1MzYgZWxzZSB4XG47O1xuXG5sZXQgYmluX3JlYWRfdW5pdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiB1bnNhZmVfZ2V0IGJ1ZiBwb3MgPSAnXFwwMDAnXG4gIHRoZW4gcG9zX3JlZiA6PSBwb3MgKyAxXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuVW5pdF9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2Jvb2wgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGZhbHNlXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICB0cnVlXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Cb29sX2NvZGUgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zIGluXG4gIGlmIG4gPj0gMCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5lZ19pbnQ4ICFwb3NfcmVmO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogQ2FuIGJlIGFib3ZlIG5leHQgbGluZSAobm8gZXJyb3JzIHBvc3NpYmxlIHdpdGggMTZiaXQpLlxuICAgICBUaGlzIHNob3VsZCBpbXByb3ZlIHRoZSBnZW5lcmF0ZWQgY29kZS4gKilcbiAgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDMyICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50NjQgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIEludDY0Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBOYXRpdmVpbnQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfbmF0aXZlaW50X29mX2ludDY0IHBvcyBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIE5hdDAudW5zYWZlX29mX2ludCAodW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcylcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgbWFza18zMmJpdCA9IEludDY0LnRvX2ludCAweGZmZmZfZmZmZkwgaW5cbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgIGxldCBuID0gSW50MzIudG9faW50ICh1bnNhZmVfZ2V0MzJsZSBidWYgcG9zKSBpblxuICAgICAgaWYgbiA+PSAwXG4gICAgICB0aGVuIE5hdDAudW5zYWZlX29mX2ludCBuXG4gICAgICBlbHNlXG4gICAgICAgICgqIEVyYXNlIHRoZSB1cHBlciBiaXRzIHRoYXQgd2VyZSBzZXQgdG8gMSBkdXJpbmcgdGhlIGludDMyIC0+IGludCBjb252ZXJzaW9uLiAqKVxuICAgICAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKG4gbGFuZCBtYXNrXzMyYml0KSlcbiAgZWxzZVxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICAgICBpZiBuID49IDBsICYmIG4gPD0gbWF4X2ludF9pbnQzMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQzMi50b19pbnQgbikgaW5cbiAgICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgICBuKVxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIChcbiAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50NjQudG9faW50IG4pIGluXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIG4pXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdDAudW5zYWZlX29mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8zMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5TdHJpbmdfdG9vX2xvbmcgc3RhcnRfcG9zO1xuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9zdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0ciA9IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiBpblxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJpbl9yZWFkX2NoYXIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIENoYXIuY29kZSBjaFxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfZmxvYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICBJbnQ2NC5mbG9hdF9vZl9iaXRzICh1bnNhZmVfZ2V0NjRsZSBidWYgcG9zKVxuOztcblxubGV0IGJpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQzMi5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50MzJfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDY0Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQ2NF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdGl2ZWludC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIHdoZW4gYXJjaF9zaXh0eWZvdXIgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0aXZlaW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX3JlZiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgcmVmIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfbGF6eSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgTGF6eS5mcm9tX3ZhbCBlbFxuOztcblxubGV0IGJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTm9uZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgU29tZSBlbFxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuT3B0aW9uX2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfcGFpciBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGJcbjs7XG5cbmxldCBiaW5fcmVhZF90cmlwbGUgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBjID0gYmluX3JlYWRfYyBidWYgfnBvc19yZWYgaW5cbiAgYSwgYiwgY1xuOztcblxubGV0IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiA9XG4gIGxldCByZWMgbG9vcCBuIGFjYyA9XG4gICAgaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChuIC0gMSkgKGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA6OiBhY2MpXG4gIGluXG4gIGxvb3AgbGVuIFtdXG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9sZW4gdGhlbiByYWlzZV9yZWFkX2Vycm9yIChMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0pICFwb3NfcmVmO1xuICBsZXQgcmV2X2xzdCA9IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBMaXN0LnJldiByZXZfbHN0XG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbjptYXhfaW50IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuOztcblxubGV0IGR1bW15X2Zsb2F0X2J1ZiA9IGNyZWF0ZV9idWYgOFxubGV0ICgpID0gaWdub3JlIChXcml0ZS5iaW5fd3JpdGVfZmxvYXQgZHVtbXlfZmxvYXRfYnVmIH5wb3M6MCAzLjEpXG5cbmxldCBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4gfmNyZWF0ZSB+YmxpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9mbG9hdF9hcnJheV9sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBwb3M7XG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBhcnIgPSBjcmVhdGUgbGVuIGluXG4gIGJsaXQgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIGFyciB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGFyclxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpGbG9hdC5BcnJheS5jcmVhdGVcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpBcnJheS5jcmVhdGVfZmxvYXRcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2FycmF5ICh0eXBlIGEpIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl9yZWFkX2VsIDogYSByZWFkZXIpIDogZmxvYXQgcmVhZGVyKSA9PSBiaW5fcmVhZF9mbG9hdFxuICB0aGVuIChPYmoubWFnaWMgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA6IGZsb2F0IGFycmF5KSA6IGEgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFt8fF1cbiAgICBlbHNlIChcbiAgICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpXG4gICAgICBlbHNlIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBtYXliZV9mbG9hdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBkdW1teV9mbG9hdF9idWYgfnBvc19yZWY6KHJlZiAwKSBpblxuICAgICAgICAgICAgU29tZSBlbFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBtYXliZV9mbG9hdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3NcbiAgICAgICAgfCBTb21lIGVsIC0+XG4gICAgICAgICAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgZWwpID0gT2JqLmRvdWJsZV90YWcgfHwgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvcyk7XG4gICAgICBsZXQgZmlyc3QgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiBmaXJzdCBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIGkgZWxcbiAgICAgIGRvbmU7XG4gICAgICByZXMpKVxuOztcblxubGV0IGJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYWRfa3ZfcGFpciA9IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBpblxuICBsZXQgZWxzID0gYmluX3JlYWRfbl9yZXZfbGlzdCByZWFkX2t2X3BhaXIgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBjb3B5X2h0YmxfbGlzdCBodGJsIGVsc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzMyIHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzY0IHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfdmVjID0gYmluX3JlYWRfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDMyIG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0NjQgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9tYXQgPSBiaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHN0ciA9IGNyZWF0ZV9idWYgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpzdHIgfmRzdF9wb3M6MCB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3ZhcmlhbnRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAoKiBbbl0gbXVzdCBjb250YWluIGFuIGludGVnZXIgYWxyZWFkeSBlbmNvZGVkLCBpLmUuIFtuID0gMiAqIGsgKyAxXS4gKilcbiAgaWYgSW50MzIubG9nYW5kIG4gMWwgPSAwbFxuICB0aGVuIHJhaXNlIChSZWFkX2Vycm9yIChSZWFkRXJyb3IuVmFyaWFudF90YWcsIHBvcykpXG4gIGVsc2UgKFxuICAgICgqIFdlIHNoaWZ0IGl0IGJ5IG9uZSBiaXQgdG8gdGhlIHJpZ2h0IHNlIHdlIGdldCBiYWNrIFsyICogayArIDFdIGluIHRoZSBlbmQuICopXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHQgbiAxKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfOGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQ4IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMTZiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzMyYml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzY0Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50NjRfYml0cyBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMTZfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0YmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3Ncbjs7XG5cblslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMDcsIDApXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDY0dVwiXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5cblslJWVuZGlmXVxuXG5sZXQgYmluX3JlYWRfbWQ1IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0NjQgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDY0IGJ1ZiAocG9zICsgOCkgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDggYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0MzIgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgNCkgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDgpIGluXG4gICAgbGV0IGQgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyAxMikgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDQgYjtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDggYztcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDEyIGQpO1xuICBNZDVfbGliLnVuc2FmZV9vZl9iaW5hcnkgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzKVxuOztcbiIsImluY2x1ZGUgQmluX3NoYXBlX2xpYi5TdGQuU2hhcGVcblxuKCogbmV3IGJhc2Ugc2hhcGVzICopXG5sZXQgYmluX3NoYXBlX3VuaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ1bml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJib29sXCIpIFtdXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInN0cmluZ1wiKSBbXVxubGV0IGJpbl9zaGFwZV9ieXRlcyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJ5dGVzXCIpIFtdXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJjaGFyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDMyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50MzJcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2M1wiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDY0XCIpIFtdXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdGl2ZWludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXQwID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmF0MFwiKSBbXVxubGV0IGJpbl9zaGFwZV9kaWdlc3QgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJkaWdlc3RcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfdmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0MzJfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQ2NF9tYXRcIikgW11cbmxldCBiaW5fc2hhcGVfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJpZ3N0cmluZ1wiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXRhcnJheVwiKSBbXVxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInZhcmlhbnRfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF84Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzhiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzE2Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8zMmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfNjRiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjRfYml0cyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDY0X2JpdHNcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmsxNl9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazMyX2ludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcms2NF9pbnQ2NFwiKSBbXVxuXG4oKiBuZXcgc2hhcGUgY29uc3RydWN0b3JzICopXG5sZXQgYmluX3NoYXBlX3JlZiB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwicmVmXCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX29wdGlvbiB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwib3B0aW9uXCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2xpc3QgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImxpc3RcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfYXJyYXkgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImFycmF5XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgeCB5ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaGFzaHRibFwiKSBbIHg7IHkgXVxuXG4oKiBzaGFwZSBhbGlhcyAqKVxubGV0IGJpbl9zaGFwZV9mbG9hdF9hcnJheSA9IGJpbl9zaGFwZV9hcnJheSBiaW5fc2hhcGVfZmxvYXRcbltAQG9jYW1sLmRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlIFxcXG4gICAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdXG47O1xuXG4oKiBzaGFwZS1jb25zdHJ1Y3RvciBhbGlhc2VzICopXG5sZXQgYmluX3NoYXBlX2xhenkgeCA9IHhcbmxldCBiaW5fc2hhcGVfcGFpciB4IHkgPSB0dXBsZSBbIHg7IHkgXVxubGV0IGJpbl9zaGFwZV90cmlwbGUgeCB5IHogPSB0dXBsZSBbIHg7IHk7IHogXVxuIiwiKCogU2l6ZTogY29tcHV0ZSBzaXplIG9mIHZhbHVlcyBpbiB0aGUgYmluYXJ5IHByb3RvY29sLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemUgPSA2NFxuXG5vcGVuIENvbW1vblxuXG5tb2R1bGUgTWF4aW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IDFcbiAgbGV0IGJpbl9zaXplX2Jvb2wgPSAxXG4gIGxldCBiaW5fc2l6ZV9jaGFyID0gMVxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiA5IGVsc2UgNVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiA5IGVsc2UgNVxuICBsZXQgYmluX3NpemVfaW50ID0gbWF4IGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSA4XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IDVcbiAgbGV0IGJpbl9zaXplX2ludDY0ID0gOVxuICBsZXQgYmluX3NpemVfbmF0aXZlaW50ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXQwID0gYmluX3NpemVfaW50X25hdDBcbiAgbGV0IGJpbl9zaXplX3ZhcmlhbnRfaW50ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzhiaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9pbnRfMTZiaXQgPSAyXG4gIGxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgPSA0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSA4XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NF9iaXRzID0gOFxuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IDJcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgPSA0XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzIgPSA0XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50ID0gOFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludDY0ID0gOFxuZW5kXG5cbm1vZHVsZSBNaW5pbXVtID0gc3RydWN0XG4gIGxldCBiaW5fc2l6ZV91bml0ID0gTWF4aW11bS5iaW5fc2l6ZV91bml0XG4gIGxldCBiaW5fc2l6ZV9ib29sID0gTWF4aW11bS5iaW5fc2l6ZV9ib29sXG4gIGxldCBiaW5fc2l6ZV9jaGFyID0gTWF4aW11bS5iaW5fc2l6ZV9jaGFyXG4gIGxldCBiaW5fc2l6ZV9tZDUgPSAxNlxuICBsZXQgYmluX3NpemVfaW50X25hdDAgPSAxXG4gIGxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgPSAyXG4gIGxldCBiaW5fc2l6ZV9pbnQgPSBtaW4gYmluX3NpemVfaW50X25hdDAgYmluX3NpemVfaW50X25lZ2F0aXZlXG4gIGxldCBiaW5fc2l6ZV9mbG9hdCA9IE1heGltdW0uYmluX3NpemVfZmxvYXRcbiAgbGV0IGJpbl9zaXplX2ludDMyID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0aXZlaW50ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfcmVmID0gMVxuICBsZXQgYmluX3NpemVfbGF6eV90ID0gMVxuICBsZXQgYmluX3NpemVfb3B0aW9uID0gMVxuICBsZXQgYmluX3NpemVfcGFpciA9IDEgKyAxXG4gIGxldCBiaW5fc2l6ZV90cmlwbGUgPSAxICsgMSArIDFcbiAgbGV0IGJpbl9zaXplX2xlbiA9IGJpbl9zaXplX25hdDBcbiAgbGV0IGJpbl9zaXplX2xpc3QgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9oYXNodGJsID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9zdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2J5dGVzID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0MzJfdmVjID0gYmluX3NpemVfdmVjXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDY0X3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfbWF0ID0gYmluX3NpemVfbGVuICsgYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCA9IGJpbl9zaXplX21hdFxuICBsZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2JpZ3N0cmluZyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXRhcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3ZhcmlhbnRfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV92YXJpYW50X2ludFxuICBsZXQgYmluX3NpemVfaW50XzhiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF84Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfMTZiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF8xNmJpdFxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMzJiaXRcbiAgbGV0IGJpbl9zaXplX2ludF82NGJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzY0Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NF9iaXRzID0gTWF4aW11bS5iaW5fc2l6ZV9pbnQ2NF9iaXRzXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMTZfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzIgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmszMl9pbnQzMlxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludDY0ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjRcbmVuZFxuXG50eXBlICdhIHNpemVyID0gJ2EgLT4gaW50XG50eXBlICgnYSwgJ2IpIHNpemVyMSA9ICdhIHNpemVyIC0+ICdiIHNpemVyXG50eXBlICgnYSwgJ2IsICdjKSBzaXplcjIgPSAnYSBzaXplciAtPiAoJ2IsICdjKSBzaXplcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzaXplcjMgPSAnYSBzaXplciAtPiAoJ2IsICdjLCAnZCkgc2l6ZXIyXG5cbmxldCBiaW5fc2l6ZV91bml0ICgpID0gMVxubGV0IGJpbl9zaXplX2Jvb2wgXyA9IDFcblxubGV0IGJpbl9zaXplX2ludF9uYXQwIG4gPVxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBuIDwgMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49ICgqIDB4ODAwMDAwMDAgKikgMSBsc2wgMzFcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSBuID1cbiAgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIDJcbiAgZWxzZSBpZiBuID49IC0weDAwMDA4MDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPCAoKiAtMHg4MDAwMDAwMCAqKSAtKDEgbHNsIDMxKVxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfY2hhciBfID0gMVxubGV0IGJpbl9zaXplX2ludCBuID0gaWYgbiA+PSAwIHRoZW4gYmluX3NpemVfaW50X25hdDAgbiBlbHNlIGJpbl9zaXplX2ludF9uZWdhdGl2ZSBuXG5cbmxldCBiaW5fc2l6ZV9uYXQwIG5hdDAgPVxuICBsZXQgbiA9IChuYXQwIDogTmF0MC50IDo+IGludCkgaW5cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDEwMDAwMDAwMCAqKSAxIGxzbCAzMlxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwIHBsZW4gaW5cbiAgc2l6ZV9sZW4gKyBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9zdHJpbmcgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChTdHJpbmcubGVuZ3RoIHN0cilcbmxldCBiaW5fc2l6ZV9ieXRlcyBzdHIgPSBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgKEJ5dGVzLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfbWQ1IF8gPSAxNlxuXG5sZXQgYmluX3NpemVfZmxvYXQgZiA9XG4gICgqIElmIHdlIGp1c3QgaWdub3JlIHRoZSBhcmd1bWVudCB0aGUgY29tcGlsZXIgd2lsbCBzdGlsbCByZXF1aXJlIGl0IHRvIGV4aXN0IGFuZCBiZVxuICAgICBib3hlZC4gVGhpcyBtZWFucyB0aGF0IGlmIGZvciBpbnN0YW5jZSB3ZSBjYWxsIHRoaXMgZm9yIGEgZmllbGQgb2YgYSBmbG9hdCByZWNvcmQsXG4gICAgIHRoZSBjb21waWxlciB3aWxsIGFsbG9jYXRlIHRoZSBmbG9hdCBmb3Igbm90aGluZy5cblxuICAgICBXaXRoIHRoaXMgbGluZSB0aGUgY29tcGlsZXIgcmVhbGx5IGlnbm9yZXMgdGhlIGZsb2F0LiAqKVxuICBpZ25vcmUgKHRydW5jYXRlIGYpO1xuICA4XG47O1xuXG5sZXQgYmluX3NpemVfaW50MzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBuIC0+IGJpbl9zaXplX2ludCAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDAwMDA4MDAwbCB8fCBuIDwgLTB4MDAwMDgwMDBsIHRoZW4gNSBlbHNlIGJpbl9zaXplX2ludCAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3NpemVfaW50NjQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHg4MDAwMDAwMEwgfHwgbiA8IC0weDgwMDAwMDAwTCB0aGVuIDkgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDY0LnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHg4MDAwMDAwMEwgfHwgbiA8IC0weDgwMDAwMDAwTCB0aGVuIDkgZWxzZSBiaW5fc2l6ZV9pbnQzMiAoSW50NjQudG9faW50MzIgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBuIC0+IGJpbl9zaXplX2ludDY0IChJbnQ2NC5vZl9uYXRpdmVpbnQgbilcbiAgZWxzZSBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQzMiAoTmF0aXZlaW50LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfcmVmIGJpbl9zaXplX2VsIHIgPSBiaW5fc2l6ZV9lbCAhclxubGV0IGJpbl9zaXplX2xhenlfdCBiaW5fc2l6ZV9lbCBsdiA9IGJpbl9zaXplX2VsIChMYXp5LmZvcmNlIGx2KVxubGV0IGJpbl9zaXplX2xhenkgPSBiaW5fc2l6ZV9sYXp5X3RcblxubGV0IGJpbl9zaXplX29wdGlvbiBiaW5fc2l6ZV9lbCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAxXG4gIHwgU29tZSB2IC0+IDEgKyBiaW5fc2l6ZV9lbCB2XG47O1xuXG5sZXQgYmluX3NpemVfcGFpciBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgKGEsIGIpID0gYmluX3NpemVfYSBhICsgYmluX3NpemVfYiBiXG5cbmxldCBiaW5fc2l6ZV90cmlwbGUgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgKGEsIGIsIGMpID1cbiAgYmluX3NpemVfYSBhICsgYmluX3NpemVfYiBiICsgYmluX3NpemVfYyBjXG47O1xuXG5sZXQgYmluX3NpemVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3NpemVfZWwgfnNpemVfYWNjIH5sZW5fYWNjIGxzdCA9XG4gICAgbWF0Y2ggbHN0IHdpdGhcbiAgICB8IFtdIC0+IHNpemVfYWNjICsgYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbl9hY2MpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgbG9vcCB+YmluX3NpemVfZWwgfnNpemVfYWNjOihzaXplX2FjYyArIGJpbl9zaXplX2VsIGhkKSB+bGVuX2FjYzoobGVuX2FjYyArIDEpIHRsXG4gIGluXG4gIGZ1biBiaW5fc2l6ZV9lbCBsc3QgLT4gbG9vcCB+YmluX3NpemVfZWwgfnNpemVfYWNjOjAgfmxlbl9hY2M6MCBsc3Rcbjs7XG5cbmxldCBiaW5fc2l6ZV9sZW4gbGVuID1cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGJpbl9zaXplX25hdDAgcGxlblxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgYXIgPVxuICBsZXQgbGVuID0gRmxvYXQuQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdF9hcnJheSBhciA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArICg4ICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+biA9XG4gIGxldCB0b3RhbF9sZW5fcmVmID0gcmVmIHRvdGFsX2xlbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBsZXQgZWwgPSBBcnJheS51bnNhZmVfZ2V0IGFyIGkgaW5cbiAgICB0b3RhbF9sZW5fcmVmIDo9ICF0b3RhbF9sZW5fcmVmICsgYmluX3NpemVfZWwgZWxcbiAgZG9uZTtcbiAgIXRvdGFsX2xlbl9yZWZcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheSAodHlwZSBhKSBiaW5fc2l6ZV9lbCBhciA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl9zaXplX2VsIDogYSBzaXplcikgOiBmbG9hdCBzaXplcikgPT0gYmluX3NpemVfZmxvYXRcbiAgdGhlbiBiaW5fc2l6ZV9mbG9hdF9hcnJheSAoT2JqLm1hZ2ljIChhciA6IGEgYXJyYXkpIDogZmxvYXQgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgbGV0IHRvdGFsX2xlbiA9IGJpbl9zaXplX2xlbiBuIGluXG4gICAgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuIH5uKVxuOztcblxubGV0IGJpbl9zaXplX2hhc2h0YmwgYmluX3NpemVfa2V5IGJpbl9zaXplX3ZhbCBodGJsID1cbiAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICBsZXQgY29sbF9odGJsIGsgdiB0b3RhbF9sZW4gPVxuICAgIGluY3IgY250X3JlZjtcbiAgICB0b3RhbF9sZW4gKyBiaW5fc2l6ZV9rZXkgayArIGJpbl9zaXplX3ZhbCB2XG4gIGluXG4gIGxldCBsZW4gPSBIYXNodGJsLmxlbmd0aCBodGJsIGluXG4gIGxldCB0b3RhbF9sZW4gPSBIYXNodGJsLmZvbGQgY29sbF9odGJsIGh0YmwgKGJpbl9zaXplX2xlbiBsZW4pIGluXG4gIGlmICFjbnRfcmVmIDw+IGxlbiB0aGVuIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIFwiYmluX3NpemVfaGFzaHRibFwiO1xuICB0b3RhbF9sZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9nZW5fdmVjIHZlYyBtdWx0aXBsaWVyID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gdmVjIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAobXVsdGlwbGllciAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyB2ZWMgPSBiaW5fc2l6ZV9nZW5fdmVjIHZlYyA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgOFxubGV0IGJpbl9zaXplX3ZlYyA9IGJpbl9zaXplX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fc2l6ZV9nZW5fbWF0IG1hdCBtdWx0aXBsaWVyID1cbiAgbGV0IGRpbTEgPSBBcnJheTIuZGltMSBtYXQgaW5cbiAgbGV0IGRpbTIgPSBBcnJheTIuZGltMiBtYXQgaW5cbiAgbGV0IHNpemUgPSBkaW0xICogZGltMiBpblxuICBiaW5fc2l6ZV9sZW4gZGltMSArIGJpbl9zaXplX2xlbiBkaW0yICsgKG11bHRpcGxpZXIgKiBzaXplKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0MzJfbWF0IG1hdCA9IGJpbl9zaXplX2dlbl9tYXQgbWF0IDRcbmxldCBiaW5fc2l6ZV9mbG9hdDY0X21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA4XG5sZXQgYmluX3NpemVfbWF0ID0gYmluX3NpemVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgYnVmID0gYmluX3NpemVfZ2VuX3ZlYyBidWYgMVxubGV0IGJpbl9zaXplX3ZhcmlhbnRfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzhiaXQgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnRfMTZiaXQgXyA9IDJcbmxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgXyA9IDRcbmxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgXyA9IDhcbmxldCBiaW5fc2l6ZV9pbnQ2NF9iaXRzIF8gPSA4XG5sZXQgYmluX3NpemVfbmV0d29yazE2X2ludCBfID0gMlxubGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgXyA9IDRcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzIgXyA9IDRcbmxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50IF8gPSA4XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludDY0IF8gPSA4XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9ub19sZW5ndGggYmluX3NpemVfZWwgYXIgPVxuICBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW46MCB+bjooQXJyYXkubGVuZ3RoIGFyKVxuOztcbiIsIigqIFRwX2NsYXNzOiBzaXplcnMsIHdyaXRlcnMsIGFuZCByZWFkZXJzIGluIHJlY29yZHMgKilcblxudHlwZSAnYSB3cml0ZXIgPVxuICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgfVxuXG50eXBlICdhIHJlYWRlciA9XG4gIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gIDsgdnRhZ19yZWFkIDogKGludCAtPiAnYSkgUmVhZC5yZWFkZXJcbiAgfVxuXG50eXBlICdhIHQgPVxuICB7IHNoYXBlIDogU2hhcGUudFxuICA7IHdyaXRlciA6ICdhIHdyaXRlclxuICA7IHJlYWRlciA6ICdhIHJlYWRlclxuICB9XG5cbnR5cGUgJ2Egd3JpdGVyMCA9ICdhIHdyaXRlclxudHlwZSAnYSByZWFkZXIwID0gJ2EgcmVhZGVyXG50eXBlICdhIHQwID0gJ2EgdFxuXG5tb2R1bGUgUzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICdiIHdyaXRlcjBcbiAgdHlwZSAoJ2EsICdiKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICdiIHJlYWRlcjBcbiAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgdDAgLT4gJ2IgdDBcbmVuZFxuXG5tb2R1bGUgUzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjKSBTMS53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjKSBTMS5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhIHQwIC0+ICgnYiwgJ2MpIFMxLnRcbmVuZFxuXG5tb2R1bGUgUzMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYywgJ2QpIFMyLnRcbmVuZFxuXG5sZXQgdmFyaWFudF93cm9uZ190eXBlIG5hbWUgX2J1ZiB+cG9zX3JlZiBfeCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSAhcG9zX3JlZlxuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzLlN0ciAqKVxuKCokIG1rX2Jhc2UgXCJ1bml0XCIgKilcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3VuaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3VuaXQgfVxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdW5pdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiIH1cbmxldCBiaW5fc2hhcGVfdW5pdCA9IFNoYXBlLmJpbl9zaGFwZV91bml0XG5cbmxldCBiaW5fdW5pdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdW5pdDsgd3JpdGVyID0gYmluX3dyaXRlcl91bml0OyByZWFkZXIgPSBiaW5fcmVhZGVyX3VuaXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJib29sXCIgKilcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Jvb2w7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Jvb2wgfVxubGV0IGJpbl9yZWFkZXJfYm9vbCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYm9vbDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiIH1cbmxldCBiaW5fc2hhcGVfYm9vbCA9IFNoYXBlLmJpbl9zaGFwZV9ib29sXG5cbmxldCBiaW5fYm9vbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYm9vbDsgd3JpdGVyID0gYmluX3dyaXRlcl9ib29sOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Jvb2wgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfc3RyaW5nID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9zdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZyB9XG5cbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9zdHJpbmdcblxubGV0IGJpbl9zdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3N0cmluZzsgd3JpdGVyID0gYmluX3dyaXRlcl9zdHJpbmc7IHJlYWRlciA9IGJpbl9yZWFkZXJfc3RyaW5nIH1cbjs7XG5cbigqJCBta19iYXNlIFwiYnl0ZXNcIiAqKVxubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2J5dGVzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ieXRlcyB9XG5cbmxldCBiaW5fcmVhZGVyX2J5dGVzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9ieXRlczsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYnl0ZXNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gU2hhcGUuYmluX3NoYXBlX2J5dGVzXG5cbmxldCBiaW5fYnl0ZXMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2J5dGVzOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2J5dGVzOyByZWFkZXIgPSBiaW5fcmVhZGVyX2J5dGVzIH1cbjs7XG5cbigqJCBta19iYXNlIFwiY2hhclwiICopXG5sZXQgYmluX3dyaXRlcl9jaGFyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9jaGFyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9jaGFyIH1cbmxldCBiaW5fcmVhZGVyX2NoYXIgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2NoYXI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiB9XG5sZXQgYmluX3NoYXBlX2NoYXIgPSBTaGFwZS5iaW5fc2hhcGVfY2hhclxuXG5sZXQgYmluX2NoYXIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2NoYXI7IHdyaXRlciA9IGJpbl93cml0ZXJfY2hhcjsgcmVhZGVyID0gYmluX3JlYWRlcl9jaGFyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQgfVxubGV0IGJpbl9yZWFkZXJfaW50ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiIH1cbmxldCBiaW5fc2hhcGVfaW50ID0gU2hhcGUuYmluX3NoYXBlX2ludFxubGV0IGJpbl9pbnQgPSB7IHNoYXBlID0gYmluX3NoYXBlX2ludDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50IH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0IH1cblxubGV0IGJpbl9yZWFkZXJfZmxvYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRcblxubGV0IGJpbl9mbG9hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDMyIH1cblxubGV0IGJpbl9yZWFkZXJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDMyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQzMlwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfaW50MzJcblxubGV0IGJpbl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50MzI7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50MzI7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50MzIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0IH1cblxubGV0IGJpbl9yZWFkZXJfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRcblxubGV0IGJpbl9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXRpdmVpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXRpdmVpbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdGl2ZWludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0aXZlaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmF0aXZlaW50XG5cbmxldCBiaW5fbmF0aXZlaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXRpdmVpbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdGl2ZWludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0aXZlaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0MFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXQwID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXQwOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXQwIH1cbmxldCBiaW5fcmVhZGVyX25hdDAgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdDA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdDBcIiB9XG5sZXQgYmluX3NoYXBlX25hdDAgPSBTaGFwZS5iaW5fc2hhcGVfbmF0MFxuXG5sZXQgYmluX25hdDAgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdDA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0MDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXQwIH1cbjs7XG5cbigqJCBta19iYXNlMSBcInJlZlwiICopXG5sZXQgYmluX3dyaXRlcl9yZWYgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3JlZiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfcmVmIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcmVmIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX3JlZiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcmVmIHgxID0gU2hhcGUuYmluX3NoYXBlX3JlZiB4MVxuXG5sZXQgYmluX3JlZiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3JlZiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3JlZiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9yZWYgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsYXp5XCIgKilcbmxldCBiaW5fd3JpdGVyX2xhenkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xhenkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xhenkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9sYXp5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xhenkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9sYXp5IHgxID0gU2hhcGUuYmluX3NoYXBlX2xhenkgeDFcblxubGV0IGJpbl9sYXp5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGF6eSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xhenkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGF6eSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcIm9wdGlvblwiICopXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX29wdGlvbiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfb3B0aW9uIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHgxID0gU2hhcGUuYmluX3NoYXBlX29wdGlvbiB4MVxuXG5sZXQgYmluX29wdGlvbiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX29wdGlvbiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX29wdGlvbiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9vcHRpb24gYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJwYWlyXCIgKilcbmxldCBiaW5fd3JpdGVyX3BhaXIgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9wYWlyIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcGFpciBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9wYWlyIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicGFpclwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcGFpciB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9wYWlyIHgxIHgyXG5cbmxldCBiaW5fcGFpciBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3BhaXIgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9wYWlyIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9wYWlyIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMyBcInRyaXBsZVwiICopXG5sZXQgYmluX3dyaXRlcl90cmlwbGUgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgYmluX3dyaXRlcl9lbDMgPVxuICB7IHNpemUgPVxuICAgICAgKGZ1biB2IC0+XG4gICAgICAgICBTaXplLmJpbl9zaXplX3RyaXBsZSBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgYmluX3dyaXRlcl9lbDMuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3RyaXBsZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMS53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMi53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMy53cml0ZVxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc1xuICAgICAgICAgICB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl90cmlwbGUgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgYmluX3JlYWRlcl9lbDMgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfdHJpcGxlXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwxLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDIucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMy5yZWFkXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ0cmlwbGVcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4MyA9IFNoYXBlLmJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDNcblxubGV0IGJpbl90cmlwbGUgYmluX2VsMSBiaW5fZWwyIGJpbl9lbDMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3RyaXBsZSBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGUgYmluX2VsMy5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdHJpcGxlIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyIGJpbl9lbDMud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl90cmlwbGUgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXIgYmluX2VsMy5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGlzdFwiICopXG5sZXQgYmluX3dyaXRlcl9saXN0IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9saXN0IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9saXN0IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGlzdCBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9saXN0IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGlzdCB4MSA9IFNoYXBlLmJpbl9zaGFwZV9saXN0IHgxXG5cbmxldCBiaW5fbGlzdCBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xpc3QgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9saXN0IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xpc3QgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9hcnJheSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfYXJyYXkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2FycmF5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYXJyYXkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfYXJyYXkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYXJyYXkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfYXJyYXkgeDFcblxubGV0IGJpbl9hcnJheSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2FycmF5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYXJyYXkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYXJyYXkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJoYXNodGJsXCIgKilcbmxldCBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaGFzaHRibFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9oYXNodGJsIHgxIHgyXG5cbmxldCBiaW5faGFzaHRibCBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2hhc2h0YmwgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9oYXNodGJsIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9oYXNodGJsIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuXG5sZXQgYmluX2Zsb2F0MzJfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwidmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92ZWMgfVxubGV0IGJpbl9yZWFkZXJfdmVjID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiIH1cbmxldCBiaW5fc2hhcGVfdmVjID0gU2hhcGUuYmluX3NoYXBlX3ZlY1xubGV0IGJpbl92ZWMgPSB7IHNoYXBlID0gYmluX3NoYXBlX3ZlYzsgd3JpdGVyID0gYmluX3dyaXRlcl92ZWM7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmVjIH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG5cbmxldCBiaW5fZmxvYXQzMl9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fZmxvYXQ2NF9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJtYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfbWF0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX21hdCB9XG5sZXQgYmluX3JlYWRlcl9tYXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibWF0XCIgfVxubGV0IGJpbl9zaGFwZV9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX21hdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfbWF0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX21hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9tYXQgfVxuXG4oKiQgbWtfYmFzZSBcImJpZ3N0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2JpZ3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYmlnc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9iaWdzdHJpbmdcblxubGV0IGJpbl9iaWdzdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2JpZ3N0cmluZ1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYmlnc3RyaW5nXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9iaWdzdHJpbmdcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdGFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0YXJyYXkgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0YXJyYXk7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0YXJyYXkgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheTsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRhcnJheVwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5cbmxldCBiaW5fZmxvYXRhcnJheSA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXRhcnJheVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXRhcnJheVxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXRhcnJheVxuICB9XG47O1xuXG4oKiQqKVxuXG50eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXlcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCokIG1rX2Jhc2UgXCJmbG9hdF9hcnJheVwiICopXG4gIGxldCBiaW5fd3JpdGVyX2Zsb2F0X2FycmF5ID1cbiAgICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0X2FycmF5OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdF9hcnJheSB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfZmxvYXRfYXJyYXkgPVxuICAgIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXRfYXJyYXk7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0X2FycmF5XCIgfVxuICA7O1xuXG4gIGxldCBiaW5fc2hhcGVfZmxvYXRfYXJyYXkgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRfYXJyYXlcblxuICBsZXQgYmluX2Zsb2F0X2FycmF5ID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0X2FycmF5XG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0X2FycmF5XG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0X2FycmF5XG4gICAgfVxuICA7O1xuICAoKiQqKVxuZW5kIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuXG4oKiQgbWtfYmFzZSBcInZhcmlhbnRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92YXJpYW50X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmFyaWFudF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdmFyaWFudF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZhcmlhbnRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2YXJpYW50X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfdmFyaWFudF9pbnRcblxubGV0IGJpbl92YXJpYW50X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdmFyaWFudF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl92YXJpYW50X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF84Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF84Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfOGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzhiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzhiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF84Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfOGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzhiaXRcblxubGV0IGJpbl9pbnRfOGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzhiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF84Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfOGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8xNmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMTZiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8xNmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzE2Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8xNmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzE2Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMTZiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMTZiaXRcblxubGV0IGJpbl9pbnRfMTZiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8xNmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzE2Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMTZiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMzJiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzMyYml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMzJiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8zMmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMzJiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8zMmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzMyYml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzMyYml0XG5cbmxldCBiaW5faW50XzMyYml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMzJiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8zMmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzMyYml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzY0Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF82NGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzY0Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzY0Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF82NGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF82NGJpdFxuXG5sZXQgYmluX2ludF82NGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzY0Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfNjRiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF82NGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0X2JpdHNcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjRfYml0cyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjRfYml0czsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjRfYml0cyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NF9iaXRzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NF9iaXRzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NF9iaXRzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gU2hhcGUuYmluX3NoYXBlX2ludDY0X2JpdHNcblxubGV0IGJpbl9pbnQ2NF9iaXRzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NF9iaXRzXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NF9iaXRzXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NF9iaXRzXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazE2X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMTZfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMTZfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmsxNl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmsxNl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazE2X2ludFxuXG5sZXQgYmluX25ldHdvcmsxNl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG5cbmxldCBiaW5fbmV0d29yazMyX2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDMyXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludDMyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG5cbmxldCBiaW5fbmV0d29yazMyX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMlxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NFxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnQ2NFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NFxuICB9XG47O1xuXG4oKiQqKVxubGV0IGJpbl93cml0ZXJfYXJyYXlfbm9fbGVuZ3RoIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gKFNpemUuYmluX3NpemVfYXJyYXlfbm9fbGVuZ3RoIFtAd2FybmluZyBcIi0zXCJdKSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIChXcml0ZS5iaW5fd3JpdGVfYXJyYXlfbm9fbGVuZ3RoIFtAd2FybmluZyBcIi0zXCJdKSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5sZXQgY252X3dyaXRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gdHBfY2xhc3Muc2l6ZSAoY252IHYpKVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IHRwX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIChjbnYgdikpXG4gIH1cbjs7XG5cbmxldCBjbnZfcmVhZGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGNudiAodHBfY2xhc3MucmVhZCBidWYgfnBvc19yZWYpKVxuICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIHZ0YWcgLT4gY252ICh0cF9jbGFzcy52dGFnX3JlYWQgYnVmIH5wb3NfcmVmIHZ0YWcpKVxuICB9XG47O1xuXG5sZXQgY252IGZvcl9zaGFwZSBmb3Jfd3JpdGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MgPVxuICB7IHNoYXBlID0gZm9yX3NoYXBlIHRwX2NsYXNzLnNoYXBlXG4gIDsgd3JpdGVyID0gY252X3dyaXRlciBmb3Jfd3JpdGVyIHRwX2NsYXNzLndyaXRlclxuICA7IHJlYWRlciA9IGNudl9yZWFkZXIgZm9yX3JlYWRlciB0cF9jbGFzcy5yZWFkZXJcbiAgfVxuOztcbiIsIigqIEJpbmFibGU6IHNpZ25hdHVyZXMgZGVmaW5pbmcgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBmb3IgdGhlIGJpbmFyeSBwcm90b2NvbC5cbiAgIFtTLCBTMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgc2F0aXNmaWVkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZSBhbmRcbiAgIFtNaW5pbWFsLlMsIE1pbmltYWwuUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHRoYXQgZ2VuZXJhdGVkIGNvZGUgdXNlcy4gKilcblxuKCogdGhlIHN1YnNldCBvZiBTIGNvbnRhaW5pbmcgb25seSBmdW5jdGlvbnMsIHNvIHRoYXQgb25lIGNhbiByZWN1cnNpdmVseSBkZWZpbmUgbW9kdWxlc1xuICAgaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlICopXG5tb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuXG4gICgqKlxuICAgICBUaGlzIGZ1bmN0aW9uIG9ubHkgbmVlZHMgaW1wbGVtZW50YXRpb24gaWYgW3RdIGV4cG9zZWQgdG8gYmUgYSBwb2x5bW9ycGhpYyB2YXJpYW50LlxuICAgICBEZXNwaXRlIHdoYXQgdGhlIHR5cGUgcmVhZHMsIHRoaXMgZG9lcyAqbm90KiBwcm9kdWNlIGEgZnVuY3Rpb24gYWZ0ZXIgcmVhZGluZztcbiAgICAgaW5zdGVhZCBpdCB0YWtlcyB0aGUgY29uc3RydWN0b3IgdGFnIChpbnQpIGJlZm9yZSByZWFkaW5nIGFuZCByZWFkcyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgdmFyaWFudCBbdF0gYWZ0ZXJ3YXJkcy5cbiAgKilcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gIHZhbCBiaW5fd3JpdGVyX3QgOiB0IFR5cGVfY2xhc3Mud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiB0IFR5cGVfY2xhc3MucmVhZGVyXG4gIHZhbCBiaW5fdCA6IHQgVHlwZV9jbGFzcy50XG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnRcbmVuZFxuXG5tb2R1bGUgTWluaW1hbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICAgIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICBlbmRcbmVuZFxuIiwiKCogVXRpbHM6IHV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2VyIGNvbnZlbmllbmNlICopXG5cbm9wZW4gQ29tbW9uXG5vcGVuIFNpemVcbm9wZW4gVHlwZV9jbGFzc1xuaW5jbHVkZSBVdGlsc19pbnRmXG5cbmxldCBzaXplX2hlYWRlcl9sZW5ndGggPSA4XG5sZXQgYmluX3dyaXRlX3NpemVfaGVhZGVyID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdFxubGV0IGJpbl9yZWFkX3NpemVfaGVhZGVyID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXRcblxubGV0IGJpbl9kdW1wID8oaGVhZGVyID0gZmFsc2UpIHdyaXRlciB2ID1cbiAgbGV0IGJ1ZiwgcG9zLCBwb3NfbGVuID1cbiAgICBsZXQgdl9sZW4gPSB3cml0ZXIuc2l6ZSB2IGluXG4gICAgaWYgaGVhZGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdG90X2xlbiA9IHZfbGVuICsgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB0b3RfbGVuIGluXG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zOjAgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgcG9zLCBwb3MgKyB2X2xlbilcbiAgICBlbHNlIChcbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHZfbGVuIGluXG4gICAgICBidWYsIDAsIHZfbGVuKVxuICBpblxuICBsZXQgcG9zID0gd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgaWYgcG9zID0gcG9zX2xlblxuICB0aGVuIGJ1ZlxuICBlbHNlIGZhaWx3aXRoIFwiQmluX3Byb3QuVXRpbHMuYmluX2R1bXA6IHNpemUgY2hhbmdlZCBkdXJpbmcgd3JpdGluZ1wiXG47O1xuXG4oKiBSZWFkaW5nIGZyb20gc3RyZWFtcyAqKVxuXG5sZXQgYmluX3JlYWRfc3RyZWFtID9tYXhfc2l6ZSB+cmVhZCByZWFkZXIgPVxuICBsZXQgYnVmID0gY3JlYXRlX2J1ZiBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgcmVhZCBidWYgfnBvczowIH5sZW46c2l6ZV9oZWFkZXJfbGVuZ3RoO1xuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCBsZW4gPSBiaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgbWF0Y2ggbWF4X3NpemUgd2l0aFxuICB8IFNvbWUgbWF4X3NpemUgd2hlbiBsZW4gPiBtYXhfc2l6ZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBzaXplIGV4Y2VlZHMgbWF4X3NpemU6ICVkID4gJWRcIlxuICAgICAgICAgbGVuXG4gICAgICAgICBtYXhfc2l6ZSlcbiAgfCBfIC0+XG4gICAgbGV0IGJ1ZiA9IGlmIGxlbiA+IHNpemVfaGVhZGVyX2xlbmd0aCB0aGVuIGNyZWF0ZV9idWYgbGVuIGVsc2UgYnVmIGluXG4gICAgcmVhZCBidWYgfnBvczowIH5sZW47XG4gICAgcG9zX3JlZiA6PSAwO1xuICAgIGxldCByZXMgPSByZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBpZiAhcG9zX3JlZiA9IGxlblxuICAgIHRoZW4gcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbXNnID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogcHJvdG9jb2wgbGllZCBhYm91dCBsZW5ndGggb2YgdmFsdWU6IGV4cGVjdGVkIFxcXG4gICAgICAgICAgICVkLCByZWNlaXZlZCAlZFwiXG4gICAgICAgICAgbGVuXG4gICAgICAgICAgIXBvc19yZWZcbiAgICAgIGluXG4gICAgICBmYWlsd2l0aCBtc2cpXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubW9kdWxlIE9mX21pbmltYWwgKFMgOiBCaW5hYmxlLk1pbmltYWwuUykgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gUy50ID0gc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubGV0IG1heWJlX2Fubm90YXRlX3NoYXBlIG1heWJlX3V1aWQgc2hhcGUgPVxuICBtYXRjaCBtYXliZV91dWlkIHdpdGhcbiAgfCBOb25lIC0+IHNoYXBlXG4gIHwgU29tZSB1dWlkIC0+IFNoYXBlLmFubm90YXRlIHV1aWQgc2hhcGVcbjs7XG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgT2ZfbWluaW1hbCAoc3RydWN0XG4gICAgICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gICAgICB0eXBlIHQgPSBTLnRcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgQi5iaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IEIuYmluX3NpemVfdCAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9IEIuYmluX3dyaXRlX3QgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID0gUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmKVxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuID0gUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbCA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsIHQgPSBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwgKFMudG9fYmluYWJsZSB0KVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTEuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMi5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM19nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aF91dWlkX3NwZWMpID0gTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlID0gTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZFxubW9kdWxlIE1ha2VfYmluYWJsZTEgPSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZFxubW9kdWxlIE1ha2VfYmluYWJsZTIgPSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZFxubW9kdWxlIE1ha2VfYmluYWJsZTMgPSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZFxuXG5sZXQgd2l0aF9tb2R1bGVfbmFtZSBmIH5tb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lID1cbiAgbWF0Y2ggbW9kdWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gZiBmdW5jdGlvbl9uYW1lXG4gIHwgU29tZSBtb2R1bGVfbmFtZSAtPiBQcmludGYua3NwcmludGYgZiBcIiVzLiVzXCIgbW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uID0gd2l0aF9tb2R1bGVfbmFtZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvblxuXG5sZXQgcmFpc2VfcmVhZF90b29fbXVjaCA9XG4gIHdpdGhfbW9kdWxlX25hbWVcbiAgICAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IHRyaWVkIHRvIHJlYWQgbW9yZSBlbGVtZW50cyB0aGFuIGF2YWlsYWJsZVwiKVxuOztcblxubGV0IHJhaXNlX3JlYWRfbm90X2Vub3VnaCA9XG4gIHdpdGhfbW9kdWxlX25hbWUgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiBkaWRuJ3QgcmVhZCBhbGwgZWxlbWVudHNcIilcbjs7XG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGVfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiNjU5MjM3MWEtNDk5NC0xMWU2LTkyM2EtNzc0OGU0MTgyNzY0XCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImFjOGE5ZmY0LTQ5OTQtMTFlNi05YTFiLTlmYjRlOTMzYmQ5ZFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0IF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiBfbiAtPiBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIF9uKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMl9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJiNGU1NGFkMi00OTk0LTExZTYtYjhkZi04N2MyOTk3ZjlmNTJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMyAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTNfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyIHQzID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiZjIxMTJlZGEtZTdkNy0xMWU2LWJiMzYtMDcyZTljZTE1OWRiXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIHQzIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2Jpbl9yZWFkX2MgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFRoaXMgbW9kdWxlIGRlZmluZXMgZGVmYXVsdCBjb252ZXJ0ZXJzIGZvciB0aGUgdHlwZXMgZGVmaW5lZCBpbiB0aGUgT0NhbWxcbiAgIHN0YW5kYXJkIGxpYnJhcnkuXG4qKVxuXG5pbmNsdWRlIFNpemVcblxubGV0IGJpbl91bml0ID0gVHlwZV9jbGFzcy5iaW5fdW5pdFxubGV0IGJpbl9zaGFwZV91bml0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdW5pdFxubGV0IGJpbl93cml0ZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl91bml0XG5sZXQgYmluX3dyaXRlX3VuaXQgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdFxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl91bml0XG5sZXQgYmluX3JlYWRfdW5pdCA9IFJlYWQuYmluX3JlYWRfdW5pdFxuXG5sZXQgX19iaW5fcmVhZF91bml0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYm9vbCA9IFR5cGVfY2xhc3MuYmluX2Jvb2xcbmxldCBiaW5fc2hhcGVfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Jvb2xcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYm9vbFxubGV0IGJpbl93cml0ZV9ib29sID0gV3JpdGUuYmluX3dyaXRlX2Jvb2xcbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYm9vbFxubGV0IGJpbl9yZWFkX2Jvb2wgPSBSZWFkLmJpbl9yZWFkX2Jvb2xcblxubGV0IF9fYmluX3JlYWRfYm9vbF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3N0cmluZ1xubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9zdHJpbmdcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9zdHJpbmdcbmxldCBiaW5fd3JpdGVfc3RyaW5nID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZ1xubGV0IGJpbl9yZWFkZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZ1xubGV0IGJpbl9yZWFkX3N0cmluZyA9IFJlYWQuYmluX3JlYWRfc3RyaW5nXG5cbmxldCBfX2Jpbl9yZWFkX3N0cmluZ19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9ieXRlc1xubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2J5dGVzXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ieXRlc1xubGV0IGJpbl93cml0ZV9ieXRlcyA9IFdyaXRlLmJpbl93cml0ZV9ieXRlc1xubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYnl0ZXNcbmxldCBiaW5fcmVhZF9ieXRlcyA9IFJlYWQuYmluX3JlYWRfYnl0ZXNcblxubGV0IF9fYmluX3JlYWRfYnl0ZXNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fY2hhciA9IFR5cGVfY2xhc3MuYmluX2NoYXJcbmxldCBiaW5fc2hhcGVfY2hhciA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2NoYXJcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfY2hhclxubGV0IGJpbl93cml0ZV9jaGFyID0gV3JpdGUuYmluX3dyaXRlX2NoYXJcbmxldCBiaW5fcmVhZGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfY2hhclxubGV0IGJpbl9yZWFkX2NoYXIgPSBSZWFkLmJpbl9yZWFkX2NoYXJcblxubGV0IF9fYmluX3JlYWRfY2hhcl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludCA9IFR5cGVfY2xhc3MuYmluX2ludFxubGV0IGJpbl9zaGFwZV9pbnQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5fd3JpdGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnRcbmxldCBiaW5fd3JpdGVfaW50ID0gV3JpdGUuYmluX3dyaXRlX2ludFxubGV0IGJpbl9yZWFkZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludFxubGV0IGJpbl9yZWFkX2ludCA9IFJlYWQuYmluX3JlYWRfaW50XG5sZXQgX19iaW5fcmVhZF9pbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0XG5sZXQgYmluX3JlYWRfZmxvYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdGFycmF5XG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5ID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0YXJyYXlfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiAhcG9zX3JlZlxuOztcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgdHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wOV0gVXNlIFtmbG9hdCBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIGluc3RlYWRcIl1cblxuICBsZXQgKGJpbl9zaGFwZV9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gXFxcbiAgICAgICAgICBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IChiaW5fd3JpdGVyX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IFxcXG4gICAgICAgICAgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IChiaW5fd3JpdGVfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgYXJyYXldIFxcXG4gICAgICAgICAgb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBXcml0ZS5iaW5fd3JpdGVfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl9yZWFkZXJfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgXFxcbiAgICAgICAgICBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zIFxcXG4gICAgICAgICAgZGlyZWN0bHlcIl0pXG4gICAgPVxuICAgIFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3JlYWRfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgYXJyYXldIFxcXG4gICAgICAgICAgb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBSZWFkLmJpbl9yZWFkX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfZmxvYXRfYXJyYXlfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRfYXJyYXlcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCAoX19iaW5fcmVhZF9mbG9hdF9hcnJheV9fIFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IFxcXG4gICAgICAgICAgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgZmxvYXRhcnJheSBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIF9fYmluX3JlYWRfZmxvYXRfYXJyYXlfX1xuICA7O1xuZW5kIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuXG5sZXQgYmluX2ludDMyID0gVHlwZV9jbGFzcy5iaW5faW50MzJcbmxldCBiaW5fc2hhcGVfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnQzMlxubGV0IGJpbl93cml0ZXJfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50MzJcbmxldCBiaW5fd3JpdGVfaW50MzIgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzJcbmxldCBiaW5fcmVhZGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludDMyXG5sZXQgYmluX3JlYWRfaW50MzIgPSBSZWFkLmJpbl9yZWFkX2ludDMyXG5cbmxldCBfX2Jpbl9yZWFkX2ludDMyX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnQzMlwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5faW50NjRcbmxldCBiaW5fc2hhcGVfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnQ2NFxubGV0IGJpbl93cml0ZXJfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50NjRcbmxldCBiaW5fd3JpdGVfaW50NjQgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjRcbmxldCBiaW5fcmVhZGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludDY0XG5sZXQgYmluX3JlYWRfaW50NjQgPSBSZWFkLmJpbl9yZWFkX2ludDY0XG5cbmxldCBfX2Jpbl9yZWFkX2ludDY0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX25hdGl2ZWludFxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9uYXRpdmVpbnRcbmxldCBiaW5fd3JpdGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9uYXRpdmVpbnRcbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50ID0gV3JpdGUuYmluX3dyaXRlX25hdGl2ZWludFxubGV0IGJpbl9yZWFkZXJfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdGl2ZWludFxubGV0IGJpbl9yZWFkX25hdGl2ZWludCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50XG5cbmxldCBfX2Jpbl9yZWFkX25hdGl2ZWludF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibmF0aXZlaW50XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVmXG5sZXQgYmluX3NoYXBlX3JlZiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3JlZlxubGV0IGJpbl93cml0ZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3JlZlxubGV0IGJpbl93cml0ZV9yZWYgPSBXcml0ZS5iaW5fd3JpdGVfcmVmXG5sZXQgYmluX3JlYWRlcl9yZWYgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfcmVmXG5sZXQgYmluX3JlYWRfcmVmID0gUmVhZC5iaW5fcmVhZF9yZWZcblxubGV0IF9fYmluX3JlYWRfcmVmX18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJyZWZcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9sYXp5XG5sZXQgYmluX3NoYXBlX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9sYXp5XG5sZXQgYmluX3dyaXRlX2xhenlfdCA9IFdyaXRlLmJpbl93cml0ZV9sYXp5XG5sZXQgYmluX3JlYWRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenlfdCA9IFJlYWQuYmluX3JlYWRfbGF6eVxuXG5sZXQgX19iaW5fcmVhZF9sYXp5X3RfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGF6eVxubGV0IGJpbl93cml0ZXJfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9sYXp5XG5sZXQgYmluX3dyaXRlX2xhenkgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9sYXp5XG5sZXQgYmluX3JlYWRfbGF6eSA9IFJlYWQuYmluX3JlYWRfbGF6eVxuXG5sZXQgX19iaW5fcmVhZF9sYXp5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fb3B0aW9uXG5sZXQgYmluX3NoYXBlX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX29wdGlvblxubGV0IGJpbl93cml0ZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX29wdGlvblxubGV0IGJpbl93cml0ZV9vcHRpb24gPSBXcml0ZS5iaW5fd3JpdGVfb3B0aW9uXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfb3B0aW9uXG5sZXQgYmluX3JlYWRfb3B0aW9uID0gUmVhZC5iaW5fcmVhZF9vcHRpb25cblxubGV0IF9fYmluX3JlYWRfb3B0aW9uX18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJvcHRpb25cIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fbGlzdFxubGV0IGJpbl9zaGFwZV9saXN0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGlzdFxubGV0IGJpbl93cml0ZXJfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9saXN0XG5sZXQgYmluX3dyaXRlX2xpc3QgPSBXcml0ZS5iaW5fd3JpdGVfbGlzdFxubGV0IGJpbl9yZWFkZXJfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9saXN0XG5sZXQgYmluX3JlYWRfbGlzdCA9IFJlYWQuYmluX3JlYWRfbGlzdFxuXG5sZXQgX19iaW5fcmVhZF9saXN0X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9hcnJheVxubGV0IGJpbl9zaGFwZV9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2FycmF5XG5sZXQgYmluX3dyaXRlcl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9hcnJheVxubGV0IGJpbl93cml0ZV9hcnJheSA9IFdyaXRlLmJpbl93cml0ZV9hcnJheVxubGV0IGJpbl9yZWFkZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYXJyYXlcbmxldCBiaW5fcmVhZF9hcnJheSA9IFJlYWQuYmluX3JlYWRfYXJyYXlcblxubGV0IF9fYmluX3JlYWRfYXJyYXlfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX2hhc2h0YmxcbmxldCBiaW5fc2hhcGVfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVyX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaGFzaHRibFxubGV0IGJpbl93cml0ZV9oYXNodGJsID0gV3JpdGUuYmluX3dyaXRlX2hhc2h0YmxcbmxldCBiaW5fcmVhZGVyX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaGFzaHRibFxubGV0IGJpbl9yZWFkX2hhc2h0YmwgPSBSZWFkLmJpbl9yZWFkX2hhc2h0YmxcblxubGV0IF9fYmluX3JlYWRfaGFzaHRibF9fIF9mIF9nIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaGFzaHRibFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX2JpZ3N0cmluZ1xubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9iaWdzdHJpbmdcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9iaWdzdHJpbmdcbmxldCBiaW5fd3JpdGVfYmlnc3RyaW5nID0gV3JpdGUuYmluX3dyaXRlX2JpZ3N0cmluZ1xubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2JpZ3N0cmluZ1xubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyA9IFJlYWQuYmluX3JlYWRfYmlnc3RyaW5nXG5cbmxldCBfX2Jpbl9yZWFkX2JpZ3N0cmluZ19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYmlnc3RyaW5nXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbWF0ID0gVHlwZV9jbGFzcy5iaW5fbWF0XG5sZXQgYmluX3NoYXBlX21hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX21hdFxubGV0IGJpbl93cml0ZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX21hdFxubGV0IGJpbl93cml0ZV9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfbWF0XG5sZXQgYmluX3JlYWRlcl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbWF0XG5sZXQgYmluX3JlYWRfbWF0ID0gUmVhZC5iaW5fcmVhZF9tYXRcbmxldCBfX2Jpbl9yZWFkX21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPSBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibWF0XCIgIXBvc19yZWZcbmxldCBiaW5fZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDMyX21hdFxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZV9mbG9hdDMyX21hdCA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX21hdFxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl9tYXRcblxubGV0IF9fYmluX3JlYWRfZmxvYXQzMl9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfbWF0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDY0X21hdFxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZV9mbG9hdDY0X21hdCA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X21hdFxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZF9mbG9hdDY0X21hdCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IF9fYmluX3JlYWRfZmxvYXQ2NF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfbWF0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fdmVjID0gVHlwZV9jbGFzcy5iaW5fdmVjXG5sZXQgYmluX3NoYXBlX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3ZlY1xubGV0IGJpbl93cml0ZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3ZlY1xubGV0IGJpbl93cml0ZV92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfdmVjXG5sZXQgYmluX3JlYWRlcl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdmVjXG5sZXQgYmluX3JlYWRfdmVjID0gUmVhZC5iaW5fcmVhZF92ZWNcbmxldCBfX2Jpbl9yZWFkX3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPSBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgIXBvc19yZWZcbmxldCBiaW5fZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDMyX3ZlY1xubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZV9mbG9hdDMyX3ZlYyA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZF9mbG9hdDMyX3ZlYyA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl92ZWNcblxubGV0IF9fYmluX3JlYWRfZmxvYXQzMl92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfdmVjXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDY0X3ZlY1xubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZV9mbG9hdDY0X3ZlYyA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZF9mbG9hdDY0X3ZlYyA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF92ZWNcblxubGV0IF9fYmluX3JlYWRfZmxvYXQ2NF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfdmVjXCIgIXBvc19yZWZcbjs7XG4iLCJpbmNsdWRlIE1kNV9saWJcblxubGV0IGJpbl9zaGFwZV90ID1cbiAgU2hhcGUuYmFzZXR5cGUgKFNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZjZiZGNkZDAtOWY3NS0xMWU2LTlhN2UtZDMwMjA0MjhlZmVkXCIpIFtdXG47O1xuXG5sZXQgYmluX3NpemVfdCA9IFNpemUuYmluX3NpemVfbWQ1XG5sZXQgYmluX3dyaXRlX3QgPSBXcml0ZS5iaW5fd3JpdGVfbWQ1XG5sZXQgYmluX3JlYWRfdCA9IFJlYWQuYmluX3JlYWRfbWQ1XG5cbmxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92ZGlnZXN0ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIlNoYXBlLk1kNS50XCIgIXBvc19yZWZcbjs7XG4iLCJvcGVuIENvbW1vblxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMjU1N2UtNDkwYS0xMWU2LTk4YWMtNGI4OTUzZDUyNWZlXCIpIFsgdCBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJpbl9zaXplX2EgYVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyBhID1cbiAgICBsZXQgc3RhcnRfYSA9IHBvcyArIFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgIGxldCBlbmRfYSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zOnN0YXJ0X2EgYSBpblxuICAgIGxldCBzaXplID0gZW5kX2EgLSBzdGFydF9hIGluXG4gICAgbGV0IHdyaXR0ZW4gPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IHN0YXJ0X2EpO1xuICAgIGVuZF9hXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBleHBlY3RlZF9zaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IHN0YXJ0X2EgPSAhcG9zX3JlZiBpblxuICAgIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgZW5kX2EgPSAhcG9zX3JlZiBpblxuICAgIGlmIGVuZF9hIC0gc3RhcnRfYSA8PiBleHBlY3RlZF9zaXplXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgIFwiQmluX3Byb3QuQmxvYi5iaW5fcmVhZF90OiBzaXplICglZCkgPD4gZXhwZWN0ZWQgKCVkKVwiXG4gICAgICAgICAgIChlbmRfYSAtIHN0YXJ0X2EpXG4gICAgICAgICAgIGV4cGVjdGVkX3NpemUpO1xuICAgIGFcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLnRcIiAhcG9zX3JlZlxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaWQgPSAnYVxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBVdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgbW9kdWxlIEJpbmFibGUgPSBUXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBvZl9iaW5hYmxlIHQgPSB0XG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRcbiAgZW5kKVxuXG5tb2R1bGUgT3BhcXVlID0gc3RydWN0XG4gICgqIFtCaWdzdHJpbmddIGFuZCBbU3RyaW5nXSBzaGFyZSBbYmluX3NoYXBlX3RdIGJlY2F1c2UgdGhleSBoYXZlIGV4YWN0bHkgdGhlIHNhbWVcbiAgICAgc2VyaWFsaXphdGlvbiBmb3JtYXQgYW5kIHRoZXkgZGVub3RlIHRoZSBzYW1lIHZhbHVlcy5cblxuICAgICBJbiBmYWN0IGFsbW9zdCBjZXJ0YWlubHkgW0Jsb2IudF0gaXRzZWxmIHNob3VsZCBoYXZlIHRoZSBzYW1lIGJpbl9zaGFwZV90IGFzIHdlbGwuICopXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTFmNzZlLTQ5MGEtMTFlNi04NmE5LTViZWY1ODVmMjYwMlwiKSBbXSlcbiAgOztcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgKCogW2J1Zl0gaXMgdGhlIGJpbi1pbyBkYXRhIGV4Y2x1ZGluZyB0aGUgc2l6ZSBoZWFkZXIuIFdoZW4gKGRlLSlzZXJpYWxpemVkLCB0aGUgc2l6ZVxuICAgICAgIGhlYWRlciBpcyBpbmNsdWRlZC4gKilcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYnVmXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYnVmX2xlbiB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBidWZfbGVuIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyBzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IGNyZWF0ZV9idWYgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3BvczohcG9zX3JlZiB+ZHN0OnQgfmRzdF9wb3M6MCBzaXplO1xuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgdG9fb3BhcXVlIGJsb2IgYmluX3dyaXRlciA9IFV0aWxzLmJpbl9kdW1wIGJpbl93cml0ZXIgYmxvYlxuICAgIGxldCBvZl9vcGFxdWVfZXhuICh0IDogdCkgYmluX3JlYWRlciA9IGJpbl9yZWFkZXIuVHlwZV9jbGFzcy5yZWFkIHQgfnBvc19yZWY6KHJlZiAwKVxuXG4gICAgKCogQmlnc3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogYnVmIC0+IGJ1ZiAtPiBpbnQpXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgUHB4X3NleHBfY29udl9saWIuU2V4cC5BdG9tIChvZl9vcGFxdWVfZXhuIHQgVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZylcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIFN0cmluZy5sZW5ndGggdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgfnNyY19wb3M6MCBidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIGJsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBsZW4gPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zOiFwb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIGxlbjtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBTdHJpbmcubGVuZ3RoIHRcblxuICAgIGxldCB0b19vcGFxdWUgfmJ1ZiB2IGJpbl93cml0ZXJfdiA6IHQgPVxuICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyX3YuVHlwZV9jbGFzcy53cml0ZSBidWYgfnBvcyB2IGluXG4gICAgICBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gfmJ1ZiAodCA6IHQpIGJpbl9yZWFkZXJfdiA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgYnVmIH5sZW47XG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzID0gYmluX3JlYWRlcl92LlR5cGVfY2xhc3MucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGlmICFwb3NfcmVmIDw+IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgIFwiT3BhcXVlIGJsb2IgaGFzICVkIGJ5dGVzIGJ1dCBbb2Zfb3BhcXVlX2V4bl0gcmVhZCAlZFwiXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICFwb3NfcmVmXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIGVycm9yKVxuICAgICAgZWxzZSByZXNcbiAgICA7O1xuXG4gICAgKCogU3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IFBweF9zZXhwX2NvbnZfbGliLkNvbnYuc2V4cF9vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIElnbm9yZWQgPSBzdHJ1Y3RcbiAgKCogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGFuIGlnbm9yZWQgdmFsdWUgaXMganVzdCB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUgaXQgd2FzIGNyZWF0ZWRcbiAgICAgZnJvbSAoaS5lLiwgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgaWdub3JlZCBmcm9tIHRoZSBidWZmZXIgd2Ugd2VyZSByZWFkaW5nXG4gICAgIC0tIHdlIGV4Y2x1ZGUgdGhlIDggYnl0ZSBzaXplIGhlYWRlciBmcm9tIHdoaWNoIHRoZSBzaXplIHdhcyByZWFkKS4gKilcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGJpbl9zaXplX3Qgc2l6ZSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIHNpemVcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgc2l6ZVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLklnbm9yZWQudFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gc2lnXG4gIHZhbCBwcmVfdGVzdF9ob29rIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IHByZV90ZXN0X2hvb2sgPSBpZ25vcmVcbiIsIlslJWltcG9ydCBcImNvbmZpZy5oXCJdXG5cbm9wZW4hIEJhc2VcblxuWyUlaWZkZWYgSlNDX0FSQ0hfU0lYVFlGT1VSXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuW0BAbm9hbGxvY11cblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcblxuWyUlZW5kaWZdXG5bJSVpZmRlZiBKU0NfUE9TSVhfVElNRVJTXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBmYWlsZWRcIlxuXG5bJSVlbHNlXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJnZXR0aW1lb2ZkYXkgZmFpbGVkXCJcblxuWyUlZW5kaWZdXG5cbmxldCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpID1cbiAgbGV0IHQgPSBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8gKCkgaW5cbiAgaWYgSW50NjMuKCA8PiApIHQgSW50NjMuemVybyB0aGVuIHQgZWxzZSBnZXR0aW1lX2ZhaWxlZCAoKVxuOztcbiIsIm1vZHVsZSBUZXN0X3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdWNjZXNzIHwgRmFpbHVyZSB8IEVycm9yXG5cbiAgbGV0IHRvX2V4aXRfY29kZSA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IDBcbiAgICB8IEZhaWx1cmUgLT4gMlxuICAgIHwgRXJyb3IgICAtPiAxXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IFwic3VjY2Vzc1wiXG4gICAgfCBGYWlsdXJlIC0+IFwiZmFpbHVyZVwiXG4gICAgfCBFcnJvciAgIC0+IFwiZXJyb3JcIlxuICA7O1xuXG4gIGxldCBjb21iaW5lIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgU3VjY2VzcywgU3VjY2VzcyAgICAgICAgLT4gU3VjY2Vzc1xuICAgIHwgRXJyb3IgICwgXyB8IF8sIEVycm9yICAgLT4gRXJyb3JcbiAgICB8IEZhaWx1cmUsIF8gfCBfLCBGYWlsdXJlIC0+IEZhaWx1cmVcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGwgdHMgPSBMaXN0LmZvbGRfbGVmdCBjb21iaW5lIFN1Y2Nlc3MgdHNcbmVuZFxuXG5sZXQgcGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBhcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+IFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMVxuICB8IEFyZy5IZWxwIG1zZyAtPiBQcmludGYucHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuOztcblxudHlwZSBkZXNjciA9IHN0cmluZ1xubGV0IHRlc3RfbW9kdWxlc19yYW4gPSByZWYgMFxubGV0IHRlc3RfbW9kdWxlc19mYWlsZWQgPSByZWYgMFxubGV0IHRlc3RzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdHNfZmFpbGVkID0gcmVmIDBcbmxldCBkeW5hbWljX2xpYiA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbnR5cGUgZmlsZW5hbWUgPSBzdHJpbmdcbnR5cGUgbGluZV9udW1iZXIgPSBpbnRcbnR5cGUgc3RhcnRfcG9zID0gaW50XG50eXBlIGVuZF9wb3MgPSBpbnRcbnR5cGUgY29uZmlnID0gKG1vZHVsZSBJbmxpbmVfdGVzdF9jb25maWcuUylcbnR5cGUgJ2EgdGVzdF9mdW5jdGlvbl9hcmdzXG4gID0gY29uZmlnOmNvbmZpZ1xuICAtPiBkZXNjcjpkZXNjciBMYXp5LnRcbiAgLT4gdGFnczpzdHJpbmcgbGlzdFxuICAtPiBmaWxlbmFtZTpmaWxlbmFtZVxuICAtPiBsaW5lX251bWJlcjpsaW5lX251bWJlclxuICAtPiBzdGFydF9wb3M6c3RhcnRfcG9zXG4gIC0+IGVuZF9wb3M6ZW5kX3Bvc1xuICAtPiAnYVxuXG5tb2R1bGUgVGFnX3ByZWRpY2F0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcmVxdWlyZWRfdGFncyAgOiBzdHJpbmcgbGlzdFxuICAgIDsgZHJvcHBlZF90YWdzIDogc3RyaW5nIGxpc3RcbiAgICB9XG5cbiAgbGV0IGVuYWJsZV9ldmVyeXRoaW5nID0geyByZXF1aXJlZF90YWdzID0gW107IGRyb3BwZWRfdGFncyA9IFtdIH1cblxuICBsZXQgZHJvcCB0IHRhZyA9XG4gICAgeyBkcm9wcGVkX3RhZ3MgPSB0YWcgOjogdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSBMaXN0LmZpbHRlciAoKDw+KSB0YWcpIHQucmVxdWlyZWRfdGFnc1xuICAgIH1cblxuICBsZXQgcmVxdWlyZSB0IHRhZyA9XG4gICAgeyBkcm9wcGVkX3RhZ3MgPSBMaXN0LmZpbHRlciAoKDw+KSB0YWcpIHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gdGFnIDo6IHQucmVxdWlyZWRfdGFnc1xuICAgIH1cblxuICBsZXQgZW50aXJlX21vZHVsZV9kaXNhYmxlZCB0IH5wYXJ0aWFsX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcblxuICBsZXQgZGlzYWJsZWQgdCB+Y29tcGxldGVfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHJlcSAtPiBub3QgKExpc3QubWVtIHJlcSB0YWdzKSkgdC5yZXF1aXJlZF90YWdzXG4gICAgfHwgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbmVuZFxuXG5cbnR5cGUgd2hpY2hfdGVzdHMgPVxuICB7IGxpYm5hbWUgOiBzdHJpbmdcbiAgOyBvbmx5X3Rlc3RfbG9jYXRpb24gOiAoZmlsZW5hbWUgKiBsaW5lX251bWJlciBvcHRpb24gKiBib29sIHJlZikgbGlzdFxuICA7IG5hbWVfZmlsdGVyIDogc3RyaW5nIGxpc3RcbiAgOyB3aGljaF90YWdzIDogVGFnX3ByZWRpY2F0ZS50XG4gIH1cbnR5cGUgdGVzdF9tb2RlID1cbiAgeyB3aGljaF90ZXN0cyA6IHdoaWNoX3Rlc3RzXG4gIDsgd2hhdF90b19kbyA6XG4gICAgICBbIGBSdW5fcGFydGl0aW9uIG9mIHN0cmluZyBvcHRpb25cbiAgICAgIHwgYExpc3RfcGFydGl0aW9uc1xuICAgICAgXVxuICB9XG5cbm1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgdHlwZSB0ID0gW1xuICAgIHwgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgXVxuICB2YWwgZ2V0IDogdW5pdCAtPiB0XG4gIHZhbCBzZXQgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBbXG4gICAgfCBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICBdXG4gIGxldCBhY3Rpb24gOiB0IHJlZiA9IHJlZiBgSWdub3JlXG4gIGxldCBmb3JjZV9kcm9wID1cbiAgICB0cnkgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9JTkxJTkVfVEVTVFwiIDogc3RyaW5nKTsgdHJ1ZVxuICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG4gIGxldCBnZXQgKCkgPVxuICAgICgqIFRoaXMgaXMgdXNlZnVsIHdoZW4gY29tcGlsaW5nIHRvIGphdmFzY3JpcHQuXG4gICAgICAgSnNfb2Zfb2NhbWwgY2FuIHN0YXRpY2FsbHkgZXZhbHVhdGUgW1N5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCJdXG4gICAgICAgYW5kIGlubGluZSB0aGUgcmVzdWx0IChbYElnbm9yZV0pIHdoZW5ldmVyIFtnZXQgKCldIGlzIGNhbGxlZC5cbiAgICAgICBVbml0IHRlc3RzIGNhbiB0aGVuIGJlIHRyZWF0ZWQgYXMgZGVhZGNvZGUgc2luY2UgdGhlIGFyZ3VtZW50IFtmXSBvZiB0aGUgW3Rlc3RdXG4gICAgICAgZnVuY3Rpb24gYmVsb3cgaXMgbmV2ZXIgdXNlZC4gKilcbiAgICBpZiBmb3JjZV9kcm9wXG4gICAgdGhlbiBgSWdub3JlXG4gICAgZWxzZSAhYWN0aW9uXG5cbiAgbGV0IHNldCB2ID0gYWN0aW9uIDo9IHZcbmVuZFxuXG5tb2R1bGUgUGFydGl0aW9uIDogc2lnXG4gIHZhbCBmb3VuZF90ZXN0IDogdW5pdCAtPiB1bml0XG4gIHZhbCBzZXRfY3VycmVudCA6IHN0cmluZyAtPiB1bml0XG4gIHZhbCBpc19jdXJyZW50IDogc3RyaW5nIG9wdGlvbiAtPiBib29sXG4gIHZhbCBhbGwgOiB1bml0IC0+IHN0cmluZyBsaXN0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA9IEhhc2h0YmwuY3JlYXRlIDIzXG4gIGxldCBjdXJyZW50ID0gcmVmIFwiXCIgIGxldCBzZXRfY3VycmVudCB4ID0gY3VycmVudCA6PSB4XG4gIGxldCBmb3VuZF90ZXN0ICgpID1cbiAgICBpZiAhY3VycmVudCA8PiBcIlwiICYmIG5vdCAoSGFzaHRibC5tZW0gYWxsICFjdXJyZW50KSB0aGVuXG4gICAgICBIYXNodGJsLmFkZCBhbGwgIWN1cnJlbnQgKClcbiAgOztcbiAgbGV0IGlzX2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIHAgLT4gcCA9ICFjdXJyZW50XG4gIDs7XG4gIGxldCBhbGwgKCkgPVxuICAgIExpc3Quc29ydCBTdHJpbmcuY29tcGFyZVxuICAgICAgKEhhc2h0YmwuZm9sZCAoZnVuIGsgKCkgYWNjIC0+IGsgOjogYWNjKSBhbGwgW10pXG4gIDs7XG5lbmRcblxubW9kdWxlIE1vZHVsZV9jb250ZXh0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBvbmVfbW9kdWxlID1cbiAgICAgIHsgZGVzY3IgOiBzdHJpbmdcbiAgICAgIDsgdGFncyA6IHN0cmluZyBsaXN0XG4gICAgICB9XG5cbiAgICB0eXBlIHQgPSBvbmVfbW9kdWxlIGxpc3RcblxuICAgIGxldCBkZXNjciB0ID0gTGlzdC5tYXAgKGZ1biBtIC0+IG0uZGVzY3IpIHRcbiAgICBsZXQgdGFncyB0ID0gTGlzdC5jb25jYXQgKExpc3QubWFwIChmdW4gbSAtPiBtLnRhZ3MpIHQpXG4gIGVuZFxuXG4gIGxldCBjdXJyZW50IDogVC50IHJlZiA9IHJlZiBbXVxuXG4gIGxldCB3aXRoXyB+ZGVzY3IgfnRhZ3MgZiA9XG4gICAgbGV0IHByZXYgPSAhY3VycmVudCBpblxuICAgIGN1cnJlbnQgOj0geyBULiBkZXNjcjsgdGFncyB9IDo6IHByZXY7XG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGYgKCkgaW5cbiAgICAgIGN1cnJlbnQgOj0gcHJldjtcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGN1cnJlbnQgOj0gcHJldjtcbiAgICAgIHJhaXNlIGVcblxuICBsZXQgY3VycmVudF9kZXNjciAoKSA9IFQuZGVzY3IgIWN1cnJlbnRcbiAgbGV0IGN1cnJlbnRfdGFncyAgKCkgPSBULnRhZ3MgICFjdXJyZW50XG5lbmRcblxubGV0IHZlcmJvc2UgPSByZWYgZmFsc2VcbmxldCBzdHJpY3QgPSByZWYgZmFsc2VcbmxldCBzaG93X2NvdW50cyA9IHJlZiBmYWxzZVxubGV0IGxpc3RfdGVzdF9uYW1lcyA9IHJlZiBmYWxzZVxubGV0IGRlbGF5ZWRfZXJyb3JzID0gcmVmIFtdXG5sZXQgc3RvcF9vbl9lcnJvciA9IHJlZiBmYWxzZVxuXG5sZXQgbG9nID0gcmVmIE5vbmVcblxubGV0IHRpbWVfc2VjID0gcmVmIDAuXG5cbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGluX3BsYWNlICA9IHJlZiBmYWxzZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBOb25lXG5sZXQgc291cmNlX3RyZWVfcm9vdCA9IHJlZiBOb25lXG5sZXQgYWxsb3dfb3V0cHV0X3BhdHRlcm5zID0gcmVmIGZhbHNlXG5cbmxldCBkaXNwbGF5ZWRfZGVzY3IgKGxhenkgZGVzY3IpIGZpbGVuYW1lIGxpbmUgc3RhcnRfcG9zIGVuZF9wb3MgPVxuICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQlc1wiXG4gICAgZmlsZW5hbWUgbGluZSBzdGFydF9wb3MgZW5kX3Bvc1xuICAgIChpZiBkZXNjciA9IFwiXCIgdGhlbiBcIlwiIGVsc2UgXCI6IFwiIF4gZGVzY3IpXG5sZXQgcGFyc2VfZGVzY3Igc3RyID1cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAsIGxpbmUgJWQgLCBjaGFyYWN0ZXJzICVkIC0gJWQgJSFcIlxuICAgICAgICAgICAgICAoZnVuIGZpbGUgbGluZSBfc3RhcnRfcG9zIF9lbmRfcG9zIC0+IGZpbGUsIFNvbWUgbGluZSkpXG4gIHdpdGggXyAtPlxuICB0cnkgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICwgbGluZSAlZCAlIVwiIChmdW4gZmlsZSBsaW5lIC0+IGZpbGUsIFNvbWUgbGluZSkpXG4gIHdpdGggXyAtPlxuICB0cnkgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICUhXCIgKGZ1biBmaWxlIC0+IGZpbGUsIE5vbmUpKVxuICB3aXRoIF8gLT4gTm9uZVxuXG5sZXQgKCkgPVxuICBtYXRjaCBBcnJheS50b19saXN0IFN5cy5hcmd2IHdpdGhcbiAgfCBuYW1lIDo6IFwiaW5saW5lLXRlc3QtcnVubmVyXCIgOjogbGliIDo6IHJlc3RcbiAgICB3aGVuIEJhc2UuRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMuYW1fdGVzdGluZyAtPiBiZWdpblxuICAgICAgKCogd2hlbiB3ZSBzZWUgdGhpcyBhcmd1bWVudCwgd2Ugc3dpdGNoIHRvIHRlc3QgbW9kZSAqKVxuICAgICAgbGV0IHRlc3RzID0gcmVmIFtdIGluXG4gICAgICBsZXQgbGlzdF9wYXJ0aXRpb25zID0gcmVmIGZhbHNlIGluXG4gICAgICBsZXQgcGFydGl0aW9uID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCB0YWdfcHJlZGljYXRlID0gcmVmIFRhZ19wcmVkaWNhdGUuZW5hYmxlX2V2ZXJ5dGhpbmcgaW5cbiAgICAgIGxldCBuYW1lX2ZpbHRlciA9IHJlZiBbXSBpblxuICAgICAgcGFyc2VfYXJndiAoQXJyYXkub2ZfbGlzdCAobmFtZSA6OiByZXN0KSkgKEFyZy5hbGlnbiBbXG4gICAgICAgIFwiLWxpc3QtdGVzdC1uYW1lc1wiLCBBcmcuVW5pdCAoZnVuICgpIC0+IGxpc3RfdGVzdF9uYW1lcyA6PSB0cnVlOyB2ZXJib3NlIDo9IHRydWUpLFxuICAgICAgICBcIiBEbyBub3QgcnVuIHRlc3RzIGJ1dCBzaG93IHdoYXQgd291bGQgaGF2ZSBiZWVuIHJ1blwiO1xuICAgICAgICBcIi1saXN0LXBhcnRpdGlvbnNcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBsaXN0X3BhcnRpdGlvbnMgOj0gdHJ1ZSksXG4gICAgICAgIFwiIExpc3RzIGFsbCB0aGUgcGFydGl0aW9ucyB0aGF0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRlc3Qgb3IgdGVzdF9tb2R1bGVcIjtcbiAgICAgICAgXCItcGFydGl0aW9uXCIsIEFyZy5TdHJpbmcgKGZ1biBpIC0+IHBhcnRpdGlvbiA6PSBTb21lIGkpLFxuICAgICAgICBcIiBPbmx5IHJ1biB0aGUgdGVzdHMgaW4gdGhlIGdpdmVuIHBhcnRpdGlvblwiO1xuICAgICAgICBcIi12ZXJib3NlXCIsIEFyZy5TZXQgdmVyYm9zZSwgXCIgU2hvdyB0aGUgdGVzdHMgYXMgdGhleSBydW5cIjtcbiAgICAgICAgXCItc3RvcC1vbi1lcnJvclwiLCBBcmcuU2V0IHN0b3Bfb25fZXJyb3IsIFwiIFJ1biB0ZXN0cyBvbmx5IHVwIHRvIHRoZSBmaXJzdCBlcnJvciBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9lc24ndCB3b3JrIGZvciBleHBlY3QgdGVzdHMpXCI7XG4gICAgICAgIFwiLXN0cmljdFwiLCBBcmcuU2V0IHN0cmljdCwgXCIgRW5kIHdpdGggYW4gZXJyb3IgaWYgbm8gdGVzdHMgd2VyZSBydW5cIjtcbiAgICAgICAgXCItc2hvdy1jb3VudHNcIiwgQXJnLlNldCBzaG93X2NvdW50cywgXCIgU2hvdyB0aGUgbnVtYmVyIG9mIHRlc3RzIHJhblwiO1xuICAgICAgICBcIi1sb2dcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPlxuICAgICAgICAgICh0cnkgU3lzLnJlbW92ZSBcImlubGluZV90ZXN0cy5sb2dcIiB3aXRoIF8gLT4gKCkpO1xuICAgICAgICAgIGxvZyA6PSBTb21lIChvcGVuX291dCBcImlubGluZV90ZXN0cy5sb2dcIilcbiAgICAgICAgKSwgXCIgTG9nIHRoZSB0ZXN0cyBydW4gaW4gaW5saW5lX3Rlc3RzLmxvZ1wiO1xuICAgICAgICBcIi1kcm9wLXRhZ1wiLCBBcmcuU3RyaW5nIChmdW4gcyAtPlxuICAgICAgICAgIHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5kcm9wICF0YWdfcHJlZGljYXRlIHNcbiAgICAgICAgKSwgXCJ0YWcgT25seSBydW4gdGVzdHMgbm90IHRhZ2dlZCB3aXRoIFt0YWddIChvdmVycmlkZXMgcHJldmlvdXMgLXJlcXVpcmUtdGFnKVwiO1xuICAgICAgICBcIi1yZXF1aXJlLXRhZ1wiLCBBcmcuU3RyaW5nIChmdW4gcyAtPlxuICAgICAgICAgIHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5yZXF1aXJlICF0YWdfcHJlZGljYXRlIHNcbiAgICAgICAgKSwgXCJ0YWcgT25seSBydW4gdGVzdHMgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyAtZHJvcC10YWcpXCI7XG4gICAgICAgIFwiLW1hdGNoaW5nXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG5hbWVfZmlsdGVyIDo9IHMgOjogIW5hbWVfZmlsdGVyKSxcbiAgICAgICAgXCJzdWJzdHJpbmcgT25seSBydW4gdGVzdHMgd2hvc2UgbmFtZXMgY29udGFpbiB0aGUgZ2l2ZW4gc3Vic3RyaW5nXCI7XG4gICAgICAgIFwiLW9ubHktdGVzdFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPlxuICAgICAgICAgIGxldCBmaWxlbmFtZSwgaW5kZXggPVxuICAgICAgICAgICAgbWF0Y2ggcGFyc2VfZGVzY3IgcyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGZpbGUsIGluZGV4KSAtPiBmaWxlLCBpbmRleFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzICc6JyB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnOicgaW5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBTdHJpbmcuc3ViIHMgMCBpIGluXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4X3N0cmluZyA9IFN0cmluZy5zdWIgcyAoaSArIDEpIChTdHJpbmcubGVuZ3RoIHMgLSBpIC0gMSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgaW5kZXggPVxuICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaW5kZXhfc3RyaW5nXG4gICAgICAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiQXJndW1lbnQgJXMgZG9lc24ndCBmaXQgdGhlIGZvcm1hdCBmaWxlbmFtZVs6bGluZV9udW1iZXJdXFxuJSFcIiBzO1xuICAgICAgICAgICAgICAgICAgICBleGl0IDFcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBTb21lIGluZGV4XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBzLCBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0ZXN0cyA6PSAoZmlsZW5hbWUsIGluZGV4LCByZWYgZmFsc2UpIDo6ICF0ZXN0c1xuICAgICAgICApLCBcImxvY2F0aW9uIFJ1biBvbmx5IHRoZSB0ZXN0cyBzcGVjaWZpZWQgYnkgYWxsIHRoZSAtb25seS10ZXN0IG9wdGlvbnMuXG4gICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25zIGNhbiBiZSBvbmUgb2YgdGhlc2UgZm9ybXM6XG4gICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLm1sXG4gICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLm1sOmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIlxuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjNcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzLCBjaGFyYWN0ZXJzIDItM1wiO1xuICAgICAgICBcIi1uby1jb2xvclwiLCBBcmcuQ2xlYXIgdXNlX2NvbG9yLCBcIiBTdW1tYXJpemUgdGVzdHMgd2l0aG91dCB1c2luZyBjb2xvclwiO1xuICAgICAgICBcIi1pbi1wbGFjZVwiLCBBcmcuU2V0IGluX3BsYWNlLCBcIiBVcGRhdGUgZXhwZWN0IHRlc3RzIGluIHBsYWNlXCI7XG4gICAgICAgIFwiLWRpZmYtY21kXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpLFxuICAgICAgICBcIiBEaWZmIGNvbW1hbmQgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBkaWZmaW5nICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCI7XG4gICAgICAgIFwiLWFsbG93LW91dHB1dC1wYXR0ZXJuc1wiLCBBcmcuU2V0IGFsbG93X291dHB1dF9wYXR0ZXJucyxcbiAgICAgICAgXCIgQWxsb3cgb3V0cHV0IHBhdHRlcm5zIGluIHRlc3RzIGV4cGVjdGF0aW9uc1wiO1xuICAgICAgICBcIi1zb3VyY2UtdHJlZS1yb290XCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHNvdXJjZV90cmVlX3Jvb3QgOj0gU29tZSBzKSxcbiAgICAgICAgXCIgUGF0aCB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWVcIlxuICAgICAgXSkgKGZ1biBhbm9uIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IHVuZXhwZWN0ZWQgYW5vbnltb3VzIGFyZ3VtZW50ICVzXFxuJSFcIiBuYW1lIGFub247XG4gICAgICAgIGV4aXQgMVxuICAgICAgKSAoUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyBbYXJnc11cIiBuYW1lIFwiaW5saW5lLXRlc3QtcnVubmVyXCIgbGliKTtcbiAgICAgIEFjdGlvbi5zZXQgKFxuICAgICAgICBgVGVzdF9tb2RlXG4gICAgICAgICAgeyB3aGljaF90ZXN0cyA9XG4gICAgICAgICAgICAgIHsgbGlibmFtZSA9IGxpYlxuICAgICAgICAgICAgICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA9ICF0ZXN0cztcbiAgICAgICAgICAgICAgICB3aGljaF90YWdzID0gIXRhZ19wcmVkaWNhdGU7XG4gICAgICAgICAgICAgICAgbmFtZV9maWx0ZXIgPSAhbmFtZV9maWx0ZXJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIDsgd2hhdF90b19kbyA9XG4gICAgICAgICAgICAgIGlmICFsaXN0X3BhcnRpdGlvbnNcbiAgICAgICAgICAgICAgdGhlbiBgTGlzdF9wYXJ0aXRpb25zXG4gICAgICAgICAgICAgIGVsc2UgYFJ1bl9wYXJ0aXRpb24gIXBhcnRpdGlvblxuICAgICAgICAgIH0pXG4gICAgZW5kXG4gIHwgXyAtPlxuICAgICgpXG5cbmxldCBhbV90ZXN0X3J1bm5lciA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBUZXN0X21vZGUgXyAtPiB0cnVlXG4gIHwgYElnbm9yZSAtPiBmYWxzZVxuXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdF9lbnZfdmFyID1cbiAgKCogZm9yIGFwcHJveGltYXRlIGNvbXBhdGliaWxpdHksIGdpdmVuIHRoYXQgdGhlIHZhcmlhYmxlIGlzIG5vdCBleGFjdGx5IGVxdWl2YWxlbnRcbiAgICAgdG8gd2hhdCBQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1QgdXNlZCB0byBiZSAqKVxuICBcIlRFU1RJTkdfRlJBTUVXT1JLXCJcblxuKCogVGhpcyB2YWx1ZSBpcyBkZXByZWNhdGVkIGluIHByaW5jaXBsZSwgaW4gZmF2b3Igb2YgQ29yZS5hbV9ydW5uaW5nX3Rlc3QsIHNvXG4gICB3ZSdyZSBnb2luZyB0byBsaXZlIHdpdGggdGhlIHVnbHkgcGF0dGVybiBtYXRjaC4gKilcbmxldCBhbV9ydW5uaW5nX2lubGluZV90ZXN0ID1cbiAgbWF0Y2ggU3lzLmdldGVudiBcIlBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVFwiIHdpdGhcbiAgfCAoXyA6IHN0cmluZykgLT4gdHJ1ZSAoKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHBlb3BsZSBzZXR0aW5nIHRoaXMgdmFyaWFibGUgZGlyZWN0bHkgKilcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgbWF0Y2ggU3lzLmdldGVudiBhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIgd2l0aFxuICAgIHwgXCJpbmxpbmUtdGVzdFwiIC0+IHRydWVcbiAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHRlc3RpbmcgPVxuICBpZiBhbV90ZXN0X3J1bm5lclxuICB0aGVuIGBUZXN0aW5nIGBBbV90ZXN0X3J1bm5lclxuICBlbHNlXG4gICAgKGlmIGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcbiAgICAgdGhlbiBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXJcbiAgICAgZWxzZSBgTm90X3Rlc3RpbmcpXG5cbmxldCB3YWxsX3RpbWVfY2xvY2tfbnMgKCkgPVxuICBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpXG5cblxubGV0IHdoZXJlX3RvX2N1dF9iYWNrdHJhY2UgPSBsYXp5IChcbiAgQmFzZS5TdHJpbmcuU2VhcmNoX3BhdHRlcm4uY3JlYXRlIChfX01PRFVMRV9fIF4gXCIuXCIgXiBcInRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXCIpKVxuXG5sZXQgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiA9XG4gIGxldCBiZWZvcmVfbnMgPSB3YWxsX3RpbWVfY2xvY2tfbnMgKCkgaW5cbiAgbGV0IHJlcyA9XG4gICAgKCogVG8gYXZvaWQgbm9pc2UgaW4gYmFja3RyYWNlcywgd2UgZG8gdHdvIHRoaW5ncy5cblxuICAgICAgIFdlIHVzZSBbd2hlcmVfdG9fY3V0X2JhY2t0cmFjZV0gYWJvdmUgdG8gcmVtb3ZlIHRoZSBzdGFjayBmcmFtZXMgZm9yIHRoZSBjdXJyZW50XG4gICAgICAgZnVuY3Rpb24gYW5kIGFueSBmdW5jdGlvbiBpdCBnZXRzIGlubGluZWQgaW50bywgYXMgaXQncyBub3Qgb2YgYW55IGludGVyZXN0IHRvIHRoZVxuICAgICAgIHVzZXIsIHNpbmNlIGl0J3Mgbm90IHRhbGtpbmcgYWJvdXQgdGhlaXIgdGVzdCBidXQgaW5zdGVhZCB0YWxraW5nIGFib3V0IHRoZVxuICAgICAgIHBweF9pbmxpbmVfdGVzdCBtYWNoaW5lcnkuXG5cbiAgICAgICBXZSBhbHNvIGF2b2lkIGluc2VydGluZyBhbnkgY29kZSBiZXR3ZWVuIHRoZSBbZl0gdGhhdCBjb21lcyBmcm9tIHRoZSB1c2VyJ3MgZmlsZVxuICAgICAgIGFuZCBncmFiYmluZyB0aGUgYmFja3RyYWNlIGZyb20gaXRzIGV4Y2VwdGlvbnMgKG5vIHdyYXBwaW5nIG9mIFtmXSB3aXRoIGhpZ2ggb3JkZXJcbiAgICAgICBmdW5jdGlvbnMgbGlrZSBFeG4ucHJvdGVjdCwgb3IgKGZ1biAoKSAtPiBmICgpOyB0cnVlKSkuICopXG4gICAgdHJ5IE9rIChmICgpKVxuICAgIHdpdGggZXhuIC0+IEVycm9yIChleG4sIFByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gIGluXG4gIHRpbWVfc2VjIDo9IEJhc2UuSW50NjMuKHdhbGxfdGltZV9jbG9ja19ucyAoKSAtIGJlZm9yZV9ucyB8PiB0b19mbG9hdCkgIC8uIDFlOTtcbiAgcmVzXG5cblxubGV0IHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlID0gbGF6eSAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlIFt8IDEwMDsgMjAwOyAzMDAgfF0pXG5sZXQgc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUgPSBsYXp5IChCYXNlLlJhbmRvbS5TdGF0ZS5tYWtlIFt8IDExMTsgMjIyOyAzMzMgfF0pXG5cbmxldCB0aW1lX2FuZF9yZXNldF9yYW5kb21fc2VlZHMgZiA9XG4gIGxldCBjYW1sX3JhbmRvbV9zdGF0ZSA9IFN0ZGxpYi5SYW5kb20uZ2V0X3N0YXRlICgpIGluXG4gIGxldCBiYXNlX3JhbmRvbV9zdGF0ZSA9IEJhc2UuUmFuZG9tLlN0YXRlLmNvcHkgQmFzZS5SYW5kb20uU3RhdGUuZGVmYXVsdCBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSAoTGF6eS5mb3JjZSBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSk7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSAoTGF6eS5mb3JjZSBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSk7XG4gIGxldCByZXN1bHQgPSB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmIGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIGNhbWxfcmFuZG9tX3N0YXRlO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgYmFzZV9yYW5kb21fc3RhdGU7XG4gIHJlc3VsdFxuXG5sZXQgc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSA9XG4gIFN0cmluZy5jb25jYXQgXCJcIiAoXG4gICAgTGlzdC5tYXAgKGZ1biBzIC0+IFwiICBpbiBURVNcIiBeIFwiVF9NT0RVTEUgYXQgXCIgXiBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIHMgXiBcIlxcblwiKVxuICAgICAgKE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfZGVzY3IgKCkpXG4gIClcblxubGV0IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgbCA9XG4gIExpc3QuZXhpc3RzIChmdW4gKGZpbGVuYW1lLCBsaW5lX251bWJlcl9vcHQsIHVzZWQpIC0+XG4gICAgbGV0IHBvc2l0aW9uX3N0YXJ0ID1cbiAgICAgIFN0cmluZy5sZW5ndGggZGVmX2ZpbGVuYW1lIC0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGxldCBmb3VuZCA9XG4gICAgICBwb3NpdGlvbl9zdGFydCA+PSAwICYmXG4gICAgICBsZXQgZW5kX29mX2RlZl9maWxlbmFtZSA9XG4gICAgICAgIFN0cmluZy5zdWIgZGVmX2ZpbGVuYW1lXG4gICAgICAgICAgcG9zaXRpb25fc3RhcnRcbiAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSkgaW5cbiAgICAgIGVuZF9vZl9kZWZfZmlsZW5hbWUgPSBmaWxlbmFtZVxuICAgICAgJiYgKHBvc2l0aW9uX3N0YXJ0ID0gMCB8fCBkZWZfZmlsZW5hbWUuW3Bvc2l0aW9uX3N0YXJ0IC0gMV0gPSAnLycpXG4gICAgICAmJiAobWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IGRlZl9saW5lX251bWJlciA9IGxpbmVfbnVtYmVyKVxuICAgIGluXG4gICAgaWYgZm91bmQgdGhlbiB1c2VkIDo9IHRydWU7XG4gICAgZm91bmRcbiAgKSBsXG5cbmxldCBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgZGVzY3IgPVxuICBtYXRjaCBuYW1lX2ZpbHRlciB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPlxuICAgIExpc3QuZXhpc3RzIChmdW4gc3Vic3RyaW5nIC0+IEJhc2UuU3RyaW5nLmlzX3N1YnN0cmluZyB+c3Vic3RyaW5nIGRlc2NyKSBuYW1lX2ZpbHRlclxuXG5sZXQgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCkgPVxuICBtYXRjaCBMaXN0LnJldiAhZGVsYXllZF9lcnJvcnMgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgXyA6OiBfIGFzIGRlbGF5ZWRfZXJyb3JzIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJcXG4lc1xcbiUhXCIgKFN0cmluZy5tYWtlIDcwICc9Jyk7XG4gICAgTGlzdC5pdGVyIChmdW4gbWVzc2FnZSAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgbWVzc2FnZVxuICAgICkgZGVsYXllZF9lcnJvcnNcblxubGV0IGVwcmludGZfb3JfZGVsYXkgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gcyAtPlxuICAgIGlmICF2ZXJib3NlIHRoZW4gZGVsYXllZF9lcnJvcnMgOj0gcyA6OiAhZGVsYXllZF9lcnJvcnNcbiAgICBlbHNlIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHM7XG4gICAgaWYgIXN0b3Bfb25fZXJyb3IgdGhlbiBiZWdpblxuICAgICAgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCk7XG4gICAgICBleGl0IDJcbiAgICBlbmRcbiAgKSBmbXRcblxubGV0IGFkZF9ob29rcyAoKG1vZHVsZSBDKSA6IGNvbmZpZykgZiA9XG4gIGZ1biAoKSAtPiBDLnByZV90ZXN0X2hvb2sgKCk7IGYgKClcblxubGV0IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlID1cbiAgbGV0IG9wZW4gQmFzZSBpblxuICBiYWNrdHJhY2VcbiAgfD4gU3RyaW5nLnNwbGl0X2xpbmVzXG4gIHw+IExpc3QudGFrZV93aGlsZSB+ZjooZnVuIHN0ciAtPlxuICAgIG5vdCAoU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLm1hdGNoZXMgKGZvcmNlIHdoZXJlX3RvX2N1dF9iYWNrdHJhY2UpIHN0cikpXG4gIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0ciBeIFwiXFxuXCIpXG4gIHw+IFN0cmluZy5jb25jYXRcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lOmRlZl9maWxlbmFtZSB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgYm9vbF9vZl9mID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uOyB3aGljaF90YWdzOyBuYW1lX2ZpbHRlciB9OyB3aGF0X3RvX2RvIH0gLT5cbiAgICBsZXQgZiA9IGFkZF9ob29rcyBjb25maWcgZiBpblxuICAgIGxldCBkZXNjciA9IGxhenkgKGRpc3BsYXllZF9kZXNjciBkZXNjciBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIHN0YXJ0X3BvcyBlbmRfcG9zKSBpblxuICAgIGxldCBjb21wbGV0ZV90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgJiYgYmVnaW4gbWF0Y2ggb25seV90ZXN0X2xvY2F0aW9uIHdpdGhcbiAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgIHwgXyA6OiBfIC0+IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgb25seV90ZXN0X2xvY2F0aW9uXG4gICAgICBlbmRcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5kaXNhYmxlZCB3aGljaF90YWdzIH5jb21wbGV0ZV90YWdzKVxuICAgICAgJiYgbmFtZV9maWx0ZXJfbWF0Y2ggfm5hbWVfZmlsdGVyIChMYXp5LmZvcmNlIGRlc2NyKVxuICAgIGluXG4gICAgaWYgc2hvdWxkX3J1biB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgZGVzY3IgPSBMYXp5LmZvcmNlIGRlc2NyIGluXG4gICAgICAgICAgaW5jciB0ZXN0c19yYW47XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggIWxvZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGNoIC0+IFByaW50Zi5mcHJpbnRmIGNoIFwiJXNcXG4lc1wiIGRlc2NyIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIGJlZ2luXG4gICAgICAgICAgICBQcmludGYucHJpbnRmIFwiJXMlIVwiIGRlc2NyXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgaWYgIWxpc3RfdGVzdF9uYW1lc1xuICAgICAgICAgICAgdGhlbiBPayB0cnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIFNlZSBbdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHNdIGZvciB3aHkgd2UgdXNlIFtib29sX29mX2ZdXG4gICAgICAgICAgICAgICAgIHJhdGhlciBoYXZlIHRoZSBjYWxsZXIgd3JhcCBbZl0gdG8gYWRqdXN0IGl0cyByZXR1cm4gdmFsdWUuICopXG4gICAgICAgICAgICAgIFJlc3VsdC5tYXAgYm9vbF9vZl9mICh0aW1lX2FuZF9yZXNldF9yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIElmICFsaXN0X3Rlc3RfbmFtZXMsIHRoaXMgaXMgaXMgYSBoYXJtbGVzcyB6ZXJvLiAqKVxuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gUHJpbnRmLnByaW50ZiBcIiAoJS4zZiBzZWMpXFxuJSFcIiAhdGltZV9zZWM7XG4gICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIHRydWUgLT4gKClcbiAgICAgICAgICB8IE9rIGZhbHNlIC0+XG4gICAgICAgICAgICBpbmNyIHRlc3RzX2ZhaWxlZDtcbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXkgXCIlcyBpcyBmYWxzZS5cXG4lc1xcbiUhXCIgZGVzY3JcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICAgICAgICBpbmNyIHRlc3RzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXkgXCIlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCIgZGVzY3Igc2VwIGV4bl9zdHJcbiAgICAgICAgICAgICAgYmFja3RyYWNlIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICBlbmRcbiAgICBlbmRcblxubGV0IHNldF9saWJfYW5kX3BhcnRpdGlvbiBzdGF0aWNfbGliIHBhcnRpdGlvbiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgKCogcG9zc2libGUgaWYgdGhlIGludGVyZmFjZSBpcyB1c2VkIGV4cGxpY2l0bHkgb3IgaWYgd2UgaGFwcGVuIHRvIGR5bmxpbmsgc29tZXRoaW5nXG4gICAgICAgdGhhdCBjb250YWluIHRlc3RzICopXG4gICAgKClcbiAgfCBOb25lIC0+XG4gICAgZHluYW1pY19saWIgOj0gU29tZSBzdGF0aWNfbGliO1xuICAgIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICAgIHwgYElnbm9yZSAtPiAoKVxuICAgIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzOyB3aGF0X3RvX2RvIH0gLT5cbiAgICAgIGlmIHdoaWNoX3Rlc3RzLmxpYm5hbWUgPSBzdGF0aWNfbGliIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHJlcXVpcmVzX3BhcnRpdGlvbiA9XG4gICAgICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIHwgYFJ1bl9wYXJ0aXRpb24gKFNvbWUgXykgLT4gdHJ1ZVxuICAgICAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gTm9uZSAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBpZiBwYXJ0aXRpb24gPSBcIlwiICYmIHJlcXVpcmVzX3BhcnRpdGlvblxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwicHB4X2lubGluZV90ZXN0OiBjYW5ub3QgdXNlIC1saXN0LXBhcnRpdGlvbiBvciAtcGFydGl0aW9uIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgc3BlY2lmeWluZyBhIHBhcnRpdGlvbiBhdCBwcmVwcm9jZXNzaW5nIHRpbWVcIlxuICAgICAgICBlbHNlIFBhcnRpdGlvbi5zZXRfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgIGVuZFxuXG5sZXQgdW5zZXRfbGliIHN0YXRpY19saWIgPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAoKiBub3QgZ2l2aW5nIGFuIGVycm9yLCBiZWNhdXNlIHdoZW4gc29tZSBhbm5veWluZyBwZW9wbGUgcHV0IHBhX291bml0IGluIHRoZWlyIGxpc3RcbiAgICAgICBvZiBwcmVwcm9jZXNzb3JzLCBwYV9vdW5pdCBpcyBzZXQgdXAgdHdpY2UgYW5kIHdlIGhhdmUgdHdvIGNhbGxzIHRvIHVuc2V0X2xpYiBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIGZpbGUsIGFuZCB0aGUgc2Vjb25kIG9uZSBjb21lcyBpbiB0aGlzIGJyYW5jaCAqKVxuICAgICgpXG4gIHwgU29tZSBsaWIgLT5cbiAgICBpZiBsaWIgPSBzdGF0aWNfbGliIHRoZW4gZHluYW1pY19saWIgOj0gTm9uZVxuXG5sZXQgdGVzdCB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zXG4gICAgZiAoZnVuIGIgLT4gYilcblxubGV0IHRlc3RfdW5pdCB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zXG4gICAgZiAoZnVuICgpIC0+IHRydWUpXG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X21vZHVsZSB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSB7IGxpYm5hbWU7IG9ubHlfdGVzdF9sb2NhdGlvbiA9IF87IG5hbWVfZmlsdGVyID0gXzsgd2hpY2hfdGFncyB9OyB3aGF0X3RvX2RvIH0gLT5cbiAgICBsZXQgZiA9IGFkZF9ob29rcyBjb25maWcgZiBpblxuICAgIGxldCBkZXNjciAoKSA9IGRpc3BsYXllZF9kZXNjciBkZXNjciBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIHN0YXJ0X3BvcyBlbmRfcG9zIGluXG4gICAgbGV0IHBhcnRpYWxfdGFncyA9IHRhZ3MgQCBNb2R1bGVfY29udGV4dC5jdXJyZW50X3RhZ3MgKCkgaW5cbiAgICBsZXQgc2hvdWxkX3J1biA9XG4gICAgICBTb21lIGxpYm5hbWUgPSAhZHluYW1pY19saWJcbiAgICAgICgqIElmLCBubyBtYXR0ZXIgd2hhdCB0YWdzIGEgdGVzdCBkZWZpbmVzLCB3ZSBjZXJ0YWlubHkgd2lsbCBkcm9wIGFsbCB0ZXN0cyB3aXRoaW5cbiAgICAgICAgIHRoaXMgbW9kdWxlLCB0aGVuIGRvbid0IHJ1biB0aGUgbW9kdWxlIGF0IGFsbC4gVGhpcyBtZWFucyBwZW9wbGUgY2FuIHdyaXRlXG4gICAgICAgICB0aGluZ3MgbGlrZSB0aGUgZm9sbG93aW5nIHdpdGhvdXQgYnJlYWtpbmcgdGhlIDMyLWJpdCBidWlsZDpcbiAgICAgICAgIGxldCV0ZXN0X21vZHVsZSBbQHRhZ3MgXCI2NC1iaXRzLW9ubHlcIl0gPSAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgbGV0IGkgPSBJbnQ2NC50b19pbnRfZXhuIC4uLi5cbiAgICAgICAgIGVuZClcbiAgICAgICAgIFdlIGRvbid0IHNob3J0Y3V0IGJhc2VkIG9uIHBvc2l0aW9uLCBhcyB3ZSBjYW4ndCB0ZWxsIHdoYXQgcG9zaXRpb25zIHRoZVxuICAgICAgICAgaW5uZXIgdGVzdHMgd2lsbCBoYXZlLiAqKVxuICAgICAgJiYgbm90IChUYWdfcHJlZGljYXRlLmVudGlyZV9tb2R1bGVfZGlzYWJsZWQgd2hpY2hfdGFncyB+cGFydGlhbF90YWdzKVxuICAgIGluXG4gICAgaWYgc2hvdWxkX3J1biB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uIHRoZW4gYmVnaW5cbiAgICAgICAgICBpbmNyIHRlc3RfbW9kdWxlc19yYW47XG4gICAgICAgICAgbGV0IGRlc2NyID0gZGVzY3IgKCkgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTW9kdWxlX2NvbnRleHQud2l0aF8gfmRlc2NyIH50YWdzIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgKCogV2UgZG8gbm90IHJlc2V0IHJhbmRvbSBzdGF0ZXMgdXBvbiBlbnRlcmluZyBbbGV0JXRlc3RfbW9kdWxlXS5cblxuICAgICAgICAgICAgICAgICBDb246IENvZGUgaW4gdGVzdCBtb2R1bGVzIGNhbiBhY2NpZGVudGFsbHkgZGVwZW5kIG9uIHRvcC1sZXZlbCByYW5kb21cbiAgICAgICAgICAgICAgICAgc3RhdGUgZWZmZWN0cy5cblxuICAgICAgICAgICAgICAgICBQcm9zOiAoMSkgV2UgZG9uJ3QgcmVzZXQgdG8gdGhlIHNhbWUgc2VlZCBvbiBlbnRlcmluZyBhIFtsZXQldGVzdF9tb2R1bGVdXG4gICAgICAgICAgICAgICAgIGFuZCB0aGVuIGEgW2xldCV0ZXN0XSBpbnNpZGUgdGhhdCBtb2R1bGUsIHdoaWNoIGNvdWxkIGxlYWQgdG9cbiAgICAgICAgICAgICAgICAgYWNjaWRlbnRhbGx5IHJhbmRvbWx5IGdlbmVyYXRpbmcgdGhlIHNhbWUgdmFsdWVzIGluIHNvbWUgdGVzdC4gKDIpIE1vdmluZ1xuICAgICAgICAgICAgICAgICBjb2RlIGludG8gYW5kIG91dCBvZiBbbGV0JXRlc3RfbW9kdWxlXSBkb2VzIG5vdCBjaGFuZ2UgaXRzIHJhbmRvbSBzZWVkLlxuICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICAgICAgICBpbmNyIHRlc3RfbW9kdWxlc19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IChcIlRFU1wiIF5eIFwiVF9NT0RVTEUgYXQgJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiKVxuICAgICAgICAgICAgICAoU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBkZXNjcikgc2VwIGV4bl9zdHIgYmFja3RyYWNlIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICBlbmRcbiAgICBlbmRcblxubGV0IHN1bW1hcml6ZSAoKSA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT5cbiAgICBpZiBTeXMuYXJndiA8PiBbfHxdICYmIEZpbGVuYW1lLmJhc2VuYW1lIFN5cy5hcmd2LigwKSA9IFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGVcIiB0aGVuXG4gICAgICBQcmludGYuZXByaW50ZiBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBydW4gYnkgaGFuZCwgeW91IFxcblxcXG4gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIHJ1biB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgaW5zdGVhZC5cXG4lIVwiXG4gICAgZWxzZVxuICAgICAgUHJpbnRmLmVwcmludGYgXCJZb3UgYXJlIGRvaW5nIHNvbWV0aGluZyB1bmV4cGVjdGVkIHdpdGggdGhlIHRlc3RzLiBObyB0ZXN0cyBoYXZlIFxcblxcXG4gICAgICAgICAgICAgICAgICAgICAgYmVlbiBydW4uIFlvdSBzaG91bGQgdXNlIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCB0byBydW4gXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5cXG4lIVwiO1xuICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0gXzsgd2hhdF90b19kbyA9IGBMaXN0X3BhcnRpdGlvbnMgfSAtPlxuICAgIExpc3QuaXRlciAoUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIpIChQYXJ0aXRpb24uYWxsICgpKTtcbiAgICBUZXN0X3Jlc3VsdC5TdWNjZXNzXG4gIHwgYFRlc3RfbW9kZSB7IHdoYXRfdG9fZG8gPSBgUnVuX3BhcnRpdGlvbiBfOyB3aGljaF90ZXN0cyB9IC0+IGJlZ2luXG4gICAgICBiZWdpbiBtYXRjaCAhbG9nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGNoIC0+IGNsb3NlX291dCBjaFxuICAgICAgZW5kO1xuICAgICAgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCk7XG4gICAgICBtYXRjaCAhdGVzdHNfZmFpbGVkLCAhdGVzdF9tb2R1bGVzX2ZhaWxlZCB3aXRoXG4gICAgICB8IDAsIDAgLT4gYmVnaW5cbiAgICAgICAgICBpZiAhc2hvd19jb3VudHMgdGhlbiBiZWdpblxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlZCB0ZXN0cyByYW4sICVkIHRlc3RfbW9kdWxlcyByYW5cXG4lIVwiICF0ZXN0c19yYW4gIXRlc3RfbW9kdWxlc19yYW5cbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICBsZXQgdW51c2VkX3Rlc3RzID1cbiAgICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biAoXywgXywgdXNlZCkgLT4gbm90ICF1c2VkKSB3aGljaF90ZXN0cy5vbmx5X3Rlc3RfbG9jYXRpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCB1bnVzZWRfdGVzdHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICB8IF8gOjogXyAtPiBTb21lIHVudXNlZF90ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZXJyb3JzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgdGVzdHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiB0aGUgZm9sbG93aW5nIC1vbmx5LXRlc3QgZmxhZ3MgbWF0Y2hlZCBub3RoaW5nOlwiO1xuICAgICAgICAgICAgTGlzdC5pdGVyIChmdW4gKGZpbGVuYW1lLCBsaW5lX251bWJlcl9vcHQsIF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBQcmludGYuZXByaW50ZiBcIiAlc1wiIGZpbGVuYW1lXG4gICAgICAgICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBQcmludGYuZXByaW50ZiBcIiAlczolZFwiIGZpbGVuYW1lIGxpbmVfbnVtYmVyXG4gICAgICAgICAgICApIHRlc3RzO1xuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIuXFxuJSFcIjtcbiAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBpZiAhdGVzdHNfcmFuID0gMCAmJiAhc3RyaWN0IHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IG5vIHRlc3RzIGhhdmUgYmVlbiBydW4uXFxuJSFcIjtcbiAgICAgICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIFRlc3RfcmVzdWx0LlN1Y2Nlc3NcbiAgICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIHwgY291bnQsIGNvdW50X3Rlc3RfbW9kdWxlcyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIkZBSUxFRCAlZCAvICVkIHRlc3RzJXNcXG4lIVwiIGNvdW50ICF0ZXN0c19yYW5cbiAgICAgICAgICAoaWYgY291bnRfdGVzdF9tb2R1bGVzID0gMCB0aGVuIFwiXCIgZWxzZSBQcmludGYuc3ByaW50ZiAoXCIsICVkIFRFU1wiIF5eIFwiVF9NT0RVTEVTXCIpIGNvdW50X3Rlc3RfbW9kdWxlcyk7XG4gICAgICAgIFRlc3RfcmVzdWx0LkZhaWx1cmVcbiAgICBlbmRcblxubGV0IHVzZV9jb2xvciA9ICF1c2VfY29sb3JcbmxldCBpbl9wbGFjZSAgPSAhaW5fcGxhY2VcbmxldCBkaWZmX2NvbW1hbmQgPSAhZGlmZl9jb21tYW5kXG5sZXQgc291cmNlX3RyZWVfcm9vdCA9ICFzb3VyY2VfdHJlZV9yb290XG5sZXQgYWxsb3dfb3V0cHV0X3BhdHRlcm5zID0gIWFsbG93X291dHB1dF9wYXR0ZXJuc1xuXG5sZXQgZXZhbHVhdG9ycyA9IHJlZiBbc3VtbWFyaXplXVxubGV0IGFkZF9ldmFsdWF0b3IgfmYgPSBldmFsdWF0b3JzIDo9IGYgOjogIWV2YWx1YXRvcnNcbmxldCBleGl0ICgpID1cbiAgTGlzdC5tYXAgKGZ1biBmIC0+IGYgKCkpIChMaXN0LnJldiAhZXZhbHVhdG9ycylcbiAgfD4gVGVzdF9yZXN1bHQuY29tYmluZV9hbGxcbiAgfD4gVGVzdF9yZXN1bHQudG9fZXhpdF9jb2RlXG4gIHw+IGV4aXRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gQ2FtbC5pbl9jaGFubmVsXG5cbmxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBzZWVrID0gQ2FtbC5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IENhbWwuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IENhbWwuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgc3RkaW4gPSBDYW1sLnN0ZGluXG5cbmxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgQ2FtbC5vcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG47O1xuXG5sZXQgY2xvc2UgPSBDYW1sLmNsb3NlX2luXG5sZXQgd2l0aF9maWxlID9iaW5hcnkgZmlsZSB+ZiA9IEV4bi5wcm90ZWN0eCAoY3JlYXRlID9iaW5hcnkgZmlsZSkgfmYgfmZpbmFsbHk6Y2xvc2VcblxubGV0IG1heV9lb2YgZiA9XG4gIHRyeSBTb21lIChmICgpKSB3aXRoXG4gIHwgRW5kX29mX2ZpbGUgLT4gTm9uZVxuOztcblxubGV0IGlucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLmlucHV0IHQgYnVmIHBvcyBsZW5cbmxldCByZWFsbHlfaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuKVxubGV0IHJlYWxseV9pbnB1dF9leG4gdCB+YnVmIH5wb3MgfmxlbiA9IENhbWwucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW5cbmxldCBpbnB1dF9ieXRlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF9ieXRlIHQpXG5sZXQgaW5wdXRfY2hhciB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfY2hhciB0KVxubGV0IGlucHV0X2JpbmFyeV9pbnQgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2JpbmFyeV9pbnQgdClcbmxldCB1bnNhZmVfaW5wdXRfdmFsdWUgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X3ZhbHVlIHQpXG5sZXQgaW5wdXRfYnVmZmVyIHQgYnVmIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmIHQgbGVuKVxubGV0IHNldF9iaW5hcnlfbW9kZSA9IENhbWwuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmxldCBpbnB1dF9hbGwgdCA9XG4gICgqIFdlIHVzZSA2NTUzNiBiZWNhdXNlIHRoYXQgaXMgdGhlIHNpemUgb2YgT0NhbWwncyBJTyBidWZmZXJzLiAqKVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluXG4gIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIGNodW5rX3NpemUgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBDYW1sLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWZmZXIgdCBjaHVua19zaXplO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgdHJ5IGxvb3AgKCkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBidWZmZXJcbjs7XG5cbmxldCB0cmltIH5maXhfd2luX2VvbCBsaW5lID1cbiAgaWYgZml4X3dpbl9lb2xcbiAgdGhlbiAoXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAoU3RyaW5nLmdldCBsaW5lIChsZW4gLSAxKSkgJ1xccidcbiAgICB0aGVuIFN0cmluZy5zdWIgbGluZSB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICBlbHNlIGxpbmUpXG4gIGVsc2UgbGluZVxuOztcblxubGV0IGlucHV0X2xpbmUgPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBtYXRjaCBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF9saW5lIHQpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGxpbmUgLT4gU29tZSAodHJpbSB+Zml4X3dpbl9lb2wgbGluZSlcbjs7XG5cbmxldCBpbnB1dF9saW5lX2V4biA/KGZpeF93aW5fZW9sID0gdHJ1ZSkgdCA9XG4gIGxldCBsaW5lID0gQ2FtbC5pbnB1dF9saW5lIHQgaW5cbiAgdHJpbSB+Zml4X3dpbl9lb2wgbGluZVxuOztcblxubGV0IGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWMgPVxuICAgIG1hdGNoIGlucHV0X2xpbmUgP2ZpeF93aW5fZW9sIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBhY1xuICAgIHwgU29tZSBsaW5lIC0+IGxvb3AgKGYgYWMgbGluZSlcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgaW5wdXRfbGluZXMgP2ZpeF93aW5fZW9sIHQgPVxuICBMaXN0LnJldiAoZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdDpbXSB+ZjooZnVuIGxpbmVzIGxpbmUgLT4gbGluZSA6OiBsaW5lcykpXG47O1xuXG5sZXQgaXRlcl9saW5lcyA/Zml4X3dpbl9lb2wgdCB+ZiA9XG4gIGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBsaW5lIC0+IGYgbGluZSlcbjs7XG5cbmxldCByZWFkX2xpbmVzID9maXhfd2luX2VvbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjooaW5wdXRfbGluZXMgP2ZpeF93aW5fZW9sKVxubGV0IHJlYWRfYWxsIGZuYW1lID0gd2l0aF9maWxlIGZuYW1lIH5mOmlucHV0X2FsbFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBDYW1sLm91dF9jaGFubmVsXG5cbmxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBzZWVrID0gQ2FtbC5MYXJnZUZpbGUuc2Vla19vdXRcbmxldCBwb3MgPSBDYW1sLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gQ2FtbC5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgc3Rkb3V0ID0gQ2FtbC5zdGRvdXRcbmxldCBzdGRlcnIgPSBDYW1sLnN0ZGVyclxuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBpZiBwaHlzX2VxdWFsIHQgc3RkZXJyXG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZGVycj5cIlxuICBlbHNlIGlmIHBoeXNfZXF1YWwgdCBzdGRvdXRcbiAgdGhlbiBTZXhwLkF0b20gXCI8c3Rkb3V0PlwiXG4gIGVsc2UgU2V4cC5BdG9tIFwiPE91dF9jaGFubmVsLnQ+XCJcbjs7XG5cbnR5cGUgJ2Egd2l0aF9jcmVhdGVfYXJncyA9XG4gID9iaW5hcnk6Ym9vbCAtPiA/YXBwZW5kOmJvb2wgLT4gP2ZhaWxfaWZfZXhpc3RzOmJvb2wgLT4gP3Blcm06aW50IC0+ICdhXG5cbmxldCBjcmVhdGVcbiAgICAgID8oYmluYXJ5ID0gdHJ1ZSlcbiAgICAgID8oYXBwZW5kID0gZmFsc2UpXG4gICAgICA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NilcbiAgICAgIGZpbGVcbiAgPVxuICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0IF0gaW5cbiAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICBsZXQgZmxhZ3MgPSAoaWYgYXBwZW5kIHRoZW4gT3Blbl9hcHBlbmQgZWxzZSBPcGVuX3RydW5jKSA6OiBmbGFncyBpblxuICBsZXQgZmxhZ3MgPSBpZiBmYWlsX2lmX2V4aXN0cyB0aGVuIE9wZW5fZXhjbCA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIENhbWwub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuOztcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IENhbWwuc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IGZsdXNoID0gQ2FtbC5mbHVzaFxubGV0IGNsb3NlID0gQ2FtbC5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub19lcnIgPSBDYW1sLmNsb3NlX291dF9ub2VyclxubGV0IG91dHB1dCB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5vdXRwdXQgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgdCB+YnVmIH5wb3MgfmxlbiA9IENhbWwub3V0cHV0X3N1YnN0cmluZyB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N0cmluZyA9IENhbWwub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IENhbWwub3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0X2NoYXIgPSBDYW1sLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBDYW1sLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBDYW1sLm91dHB1dF9iaW5hcnlfaW50XG5sZXQgb3V0cHV0X2J1ZmZlciA9IENhbWwuQnVmZmVyLm91dHB1dF9idWZmZXJcbmxldCBvdXRwdXRfdmFsdWUgPSBDYW1sLm91dHB1dF92YWx1ZVxubGV0IG5ld2xpbmUgdCA9IG91dHB1dF9zdHJpbmcgdCBcIlxcblwiXG5cbmxldCBvdXRwdXRfbGluZXMgdCBsaW5lcyA9XG4gIExpc3QuaXRlciBsaW5lcyB+ZjooZnVuIGxpbmUgLT5cbiAgICBvdXRwdXRfc3RyaW5nIHQgbGluZTtcbiAgICBuZXdsaW5lIHQpXG47O1xuXG5sZXQgcHJpbnRmID0gQ2FtbC5QcmludGYucHJpbnRmXG5sZXQgZXByaW50ZiA9IENhbWwuUHJpbnRmLmVwcmludGZcbmxldCBmcHJpbnRmID0gQ2FtbC5QcmludGYuZnByaW50ZlxubGV0IGtmcHJpbnRmID0gQ2FtbC5QcmludGYua2ZwcmludGZcbmxldCBwcmludF9zdHJpbmcgPSBDYW1sLnByaW50X3N0cmluZ1xubGV0IHByaW50X2VuZGxpbmUgPSBDYW1sLnByaW50X2VuZGxpbmVcbmxldCBwcmVycl9lbmRsaW5lID0gQ2FtbC5wcmVycl9lbmRsaW5lXG5cbmxldCBwcmludF9zID9tYWNoIHNleHAgPVxuICBwcmludF9lbmRsaW5lXG4gICAgKG1hdGNoIG1hY2ggd2l0aFxuICAgICB8IFNvbWUgKCkgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwXG4gICAgIHwgTm9uZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbjs7XG5cbmxldCBlcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJlcnJfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gIEV4bi5wcm90ZWN0eCAoY3JlYXRlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSkgfmYgfmZpbmFsbHk6Y2xvc2Vcbjs7XG5cbmxldCB3cml0ZV9saW5lcyBmaWxlIGxpbmVzID0gd2l0aF9maWxlIGZpbGUgfmY6KGZ1biB0IC0+IG91dHB1dF9saW5lcyB0IGxpbmVzKVxubGV0IHdyaXRlX2FsbCBmaWxlIH5kYXRhID0gd2l0aF9maWxlIGZpbGUgfmY6KGZ1biB0IC0+IG91dHB1dF9zdHJpbmcgdCBkYXRhKVxuIiwib3BlbiEgQmFzZVxubW9kdWxlIEdjID0gU3RkbGliLkdjXG5cbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcblxubGV0IGFtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiUFBYX01PRFVMRV9USU1FUlwiXG5cbmxldCBnZXRfYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlICgpID1cbiAgKCogYXZvaWQgU3RkbGliLlN5cy5nZXRlbnZfb3B0IHRvIHByZXNlcnZlIDQuMDQueCBjb21wYXRpYmlsaXR5ICopXG4gIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0ZW52IGFtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSB3aXRoXG4gIHwgdmFsdWUgLT4gU29tZSB2YWx1ZVxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCBhbV9yZWNvcmRpbmdfdmFsdWUgPSBnZXRfYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlICgpXG5sZXQgYW1fcmVjb3JkaW5nID0gT3B0aW9uLmlzX3NvbWUgYW1fcmVjb3JkaW5nX3ZhbHVlXG5cbm1vZHVsZSBEdXJhdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgbGV0IHRvX25hbm9zZWNvbmRzIHQgPSB0XG4gIGxldCBvZl9uYW5vc2Vjb25kcyB0ID0gdFxuXG4gIG1vZHVsZSB0eXBlIEZvcm1hdCA9IHNpZ1xuICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgOiB0IGxpc3QgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIERlZmF1bHRfZm9ybWF0ID0gc3RydWN0XG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIHN0cmluZyB+c3VmZml4OlwibnNcIiB8PiBJbnQ2My5vZl9zdHJpbmdcbiAgICBsZXQgdG9fc3RyaW5nIG5hbm9zID0gSW50NjMudG9fc3RyaW5nIG5hbm9zIF4gXCJuc1wiXG4gICAgbGV0IHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBsaXN0ID0gTGlzdC5tYXAgbGlzdCB+Zjp0b19zdHJpbmdcbiAgZW5kXG5cbiAgbGV0IGZvcm1hdCA9IHJlZiAobW9kdWxlIERlZmF1bHRfZm9ybWF0IDogRm9ybWF0KVxuXG4gIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC5vZl9zdHJpbmcgc3RyaW5nXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBzdHJpbmcgPVxuICAgIGxldCAobW9kdWxlIEZvcm1hdCkgPSAhZm9ybWF0IGluXG4gICAgRm9ybWF0LnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBzdHJpbmdcbiAgOztcbmVuZFxuXG5tb2R1bGUgR2NfZXZlbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUaW1pbmdfZXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGRlc2NyaXB0aW9uIDogc3RyaW5nXG4gICAgOyBydW50aW1lIDogRHVyYXRpb24udFxuICAgIDsgZ2NfZXZlbnRzIDogR2NfZXZlbnRzLnRcbiAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzIDogdCBsaXN0XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUaW1lciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDogRHVyYXRpb24udFxuICAgIDsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA6IEdjLnN0YXRcbiAgICA7IG11dGFibGUgbmVzdGVkX3RpbWVyIDogdCBvcHRpb25cbiAgICA7IG11dGFibGUgdGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgOiBUaW1pbmdfZXZlbnQudCBsaXN0XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgP25lc3RlZF90aW1lciAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA9IFwiXCJcbiAgICA7IGN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPSBJbnQ2My56ZXJvXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA9IEdjLnF1aWNrX3N0YXQgKClcbiAgICA7IG5lc3RlZF90aW1lclxuICAgIDsgdGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPSBbXVxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCA9XG4gICAgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA8LSBcIlwiO1xuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA8LSBJbnQ2My56ZXJvO1xuICAgIG1hdGNoIHQubmVzdGVkX3RpbWVyIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmVzdGVkIC0+IG5lc3RlZC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA8LSBbXVxuICA7O1xuXG4gIGxldCByZWNvcmRfc3RhcnQgdCBkZXNjcmlwdGlvbiA9XG4gICAgaWYgYW1fcmVjb3JkaW5nXG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKFN0cmluZy5pc19lbXB0eSB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uKTtcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gZGVzY3JpcHRpb247XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIDwtIEdjLnF1aWNrX3N0YXQgKCk7XG4gICAgICAoKiBjYWxsIFtUaW1lX25vd10gYXMgbGF0ZSBhcyBwb3NzaWJsZSBiZWZvcmUgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA8LSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpKVxuICA7O1xuXG4gIGxldCByZWNvcmRfdW50aWwgdCBkZXNjcmlwdGlvbiA9XG4gICAgaWYgYW1fcmVjb3JkaW5nXG4gICAgdGhlbiAoXG4gICAgICAoKiBjb21wdXRlIFtUaW1lX25vd10gYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciBydW5uaW5nIHRoZSBtb2R1bGUgYm9keSAqKVxuICAgICAgbGV0IHVudGlsID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSBpblxuICAgICAgbGV0IHN0YXJ0ID0gdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIGluXG4gICAgICBsZXQgZ2Nfc3RhdHNfYWZ0ZXIgPSBHYy5xdWlja19zdGF0ICgpIGluXG4gICAgICBsZXQgZ2Nfc3RhdHNfYmVmb3JlID0gdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyBpblxuICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oIC0gKSB1bnRpbCBzdGFydCBpblxuICAgICAgYXNzZXJ0IChTdHJpbmcuZXF1YWwgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiBkZXNjcmlwdGlvbik7XG4gICAgICBsZXQgZ2NfZXZlbnRzIDogR2NfZXZlbnRzLnQgPVxuICAgICAgICB7IG1pbm9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1pbm9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPVxuICAgICAgICAgICAgZ2Nfc3RhdHNfYWZ0ZXIubWFqb3JfY29sbGVjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUubWFqb3JfY29sbGVjdGlvbnNcbiAgICAgICAgOyBjb21wYWN0aW9ucyA9IGdjX3N0YXRzX2FmdGVyLmNvbXBhY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLmNvbXBhY3Rpb25zXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgbmVzdGVkIC0+IExpc3QucmV2IG5lc3RlZC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlclxuICAgICAgaW5cbiAgICAgIGxldCB0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCA9XG4gICAgICAgIHsgZGVzY3JpcHRpb247IHJ1bnRpbWU7IGdjX2V2ZW50czsgbmVzdGVkX3RpbWluZ19ldmVudHMgfVxuICAgICAgaW5cbiAgICAgIHQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIDwtIHRpbWluZ19ldmVudCA6OiB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyO1xuICAgICAgcmVzZXQgdClcbiAgOztcbmVuZFxuXG5sZXQgZGVmaW5pdGlvbl90aW1lciA9IFRpbWVyLmNyZWF0ZSAoKVxubGV0IG1vZHVsZV90aW1lciA9IFRpbWVyLmNyZWF0ZSB+bmVzdGVkX3RpbWVyOmRlZmluaXRpb25fdGltZXIgKClcbmxldCByZWNvcmRfc3RhcnQgbW9kdWxlX25hbWUgPSBUaW1lci5yZWNvcmRfc3RhcnQgbW9kdWxlX3RpbWVyIG1vZHVsZV9uYW1lXG5sZXQgcmVjb3JkX3VudGlsIG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3VudGlsIG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF9kZWZpbml0aW9uX3N0YXJ0IGxvYyA9IFRpbWVyLnJlY29yZF9zdGFydCBkZWZpbml0aW9uX3RpbWVyIGxvY1xubGV0IHJlY29yZF9kZWZpbml0aW9uX3VudGlsIGxvYyA9IFRpbWVyLnJlY29yZF91bnRpbCBkZWZpbml0aW9uX3RpbWVyIGxvY1xuXG5sZXQgZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmdcbiAgICAgICh7IG1pbm9yX2NvbGxlY3Rpb25zOyBtYWpvcl9jb2xsZWN0aW9uczsgY29tcGFjdGlvbnMgfSA6IEdjX2V2ZW50cy50KVxuICA9XG4gIGxldCB0b19saXN0IGRlc2NyaXB0aW9uIGNvdW50ID1cbiAgICBpZiBjb3VudCA9IDAgdGhlbiBbXSBlbHNlIFsgSW50LnRvX3N0cmluZyBjb3VudCBeIFwiIFwiIF4gZGVzY3JpcHRpb24gXVxuICBpblxuICBsZXQgc3RyaW5ncyA9XG4gICAgdG9fbGlzdCBcIm1pbm9yIGNvbGxlY3Rpb25zXCIgbWlub3JfY29sbGVjdGlvbnNcbiAgICBAIHRvX2xpc3QgXCJtYWpvciBjb2xsZWN0aW9uc1wiIG1ham9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwiY29tcGFjdGlvbnNcIiBjb21wYWN0aW9uc1xuICBpblxuICBpZiBMaXN0LmlzX2VtcHR5IHN0cmluZ3MgdGhlbiBcIlwiIGVsc2UgXCI7IEdDOiBcIiBeIFN0cmluZy5jb25jYXQgc3RyaW5ncyB+c2VwOlwiLCBcIlxuOztcblxubGV0IHdpdGhfbGVmdF9jb2x1bW5fcmlnaHRfanVzdGlmaWVkIGxpc3QgPVxuICBsZXQgbGVmdF9jb2x1bW5fd2lkdGggPVxuICAgIExpc3QuZm9sZCBsaXN0IH5pbml0OjAgfmY6KGZ1biB3aWR0aCAobGVmdCwgXykgLT4gSW50Lm1heCB3aWR0aCAoU3RyaW5nLmxlbmd0aCBsZWZ0KSlcbiAgaW5cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIChsZWZ0LCByaWdodCkgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIiUqcyAlc1wiIGxlZnRfY29sdW1uX3dpZHRoIGxlZnQgcmlnaHQpXG47O1xuXG5sZXQgcmVjIHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyBsaXN0IH5pbmRlbnQgPVxuICBsZXQgZHVyYXRpb25fc3RyaW5ncyA9XG4gICAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuICh0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCkgLT4gdGltaW5nX2V2ZW50LnJ1bnRpbWUpXG4gICAgfD4gRHVyYXRpb24udG9fc3RyaW5nX3dpdGhfc2FtZV91bml0XG4gIGluXG4gIGxldCBwcmVmaXggPSBTdHJpbmcubWFrZSBpbmRlbnQgJyAnIGluXG4gIExpc3QubWFwMl9leG5cbiAgICBkdXJhdGlvbl9zdHJpbmdzXG4gICAgbGlzdFxuICAgIH5mOihmdW4gZHVyYXRpb25fc3RyaW5nIHsgcnVudGltZSA9IF87IGRlc2NyaXB0aW9uOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgICAgIC0+XG4gICAgICAgICAgICggZHVyYXRpb25fc3RyaW5nXG4gICAgICAgICAgICwgZGVzY3JpcHRpb25cbiAgICAgICAgICAgICBeIGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nIGdjX2V2ZW50c1xuICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgKHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB+aW5kZW50OihpbmRlbnQgKyA0KSlcbiAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBsaW5lIC0+IFwiXFxuXCIgXiBsaW5lKSkgKSlcbiAgfD4gd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWRcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IHByZWZpeCBeIGxpbmUpXG47O1xuXG5sZXQgZmFrZV90aW1pbmdfZXZlbnRzID1cbiAgbGV0IGdjX2V2ZW50cyBpIDogR2NfZXZlbnRzLnQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDIgPSAxIHRoZW4gMSBlbHNlIDApXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgNCA9IDMgdGhlbiAxIGVsc2UgMClcbiAgICA7IGNvbXBhY3Rpb25zID0gKGlmIGkgJSA4ID0gNyB0aGVuIDEgZWxzZSAwKVxuICAgIH1cbiAgaW5cbiAgbGF6eVxuICAgIChMaXN0LmluaXQgMTIgfmY6KGZ1biBpIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJGYWtlX19EZXBlbmRlbmN5XyVkXCIgKGkgKyAxKVxuICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGkgKyAxKSlcbiAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBpXG4gICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgIChpZiAoaSArIDEpICUgNCA9IDBcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgTGlzdC5pbml0IChpICsgMSkgfmY6KGZ1biBqIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJMaW5lICVkXCIgKGogKyAxKVxuICAgICAgICAgICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGogKyAxKSlcbiAgICAgICAgICAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBqXG4gICAgICAgICAgICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9IFtdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVsc2UgW10pXG4gICAgICAgfSkpXG47O1xuXG5sZXQgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50cyB0aW1pbmdfZXZlbnRzID1cbiAgbGV0IG5vdGlmeV9vZl9vdmVycmlkaW5nICgpID1cbiAgICBTdGRpby5wcmludF9lbmRsaW5lIFwicHB4X21vZHVsZV90aW1lcjogb3ZlcnJpZGluZyB0aW1lIG1lYXN1cmVtZW50cyBmb3IgdGVzdGluZ1wiXG4gIGluXG4gIGxldCB0aW1pbmdfZXZlbnRzID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWVfZXhuIGFtX3JlY29yZGluZ192YWx1ZSB3aXRoXG4gICAgfCBcIkZBS0VfTU9EVUxFU1wiIC0+XG4gICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgIGZvcmNlIGZha2VfdGltaW5nX2V2ZW50c1xuICAgIHwgc3RyaW5nIC0+XG4gICAgICAobWF0Y2ggRHVyYXRpb24ub2Zfc3RyaW5nIHN0cmluZyB3aXRoXG4gICAgICAgfCBvdmVycmlkZSAtPlxuICAgICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICAgICBMaXN0Lm1hcGkgdGltaW5nX2V2ZW50cyB+ZjooZnVuIGluZGV4ICh0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCkgLT5cbiAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICBsZXQgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAgIExpc3QubWFwaVxuICAgICAgICAgICAgICAgdGltaW5nX2V2ZW50Lm5lc3RlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgICAgICAgICB+ZjooZnVuIGluZGV4IG5lc3RlZF90aW1pbmdfZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICAgICAgICB7IG5lc3RlZF90aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lIH0pXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdGltaW5nX2V2ZW50IHdpdGggcnVudGltZTsgbmVzdGVkX3RpbWluZ19ldmVudHMgfSlcbiAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRpbWluZ19ldmVudHMpXG4gIGluXG4gIHRpbWluZ19ldmVudHMgfD4gdGltaW5nX2V2ZW50c190b19zdHJpbmdzIH5pbmRlbnQ6MCB8PiBMaXN0Lml0ZXIgfmY6U3RkaW8ucHJpbnRfZW5kbGluZVxuOztcblxubGV0ICgpID1cbiAgaWYgYW1fcmVjb3JkaW5nXG4gIHRoZW5cbiAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgIChMaXN0LnJldiBtb2R1bGVfdGltZXIudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIpKVxuOztcbiIsInR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJhc2UuVHlwZV9lcXVhbC50ID0gVCA6ICgnYSwgJ2EpIHRcbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IGNvbnYgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gYSAtPiBiID0gZnVuIFQgeCAtPiB4XG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG4iLCIoKiB0aGlzIGxpYiBzaG91bGQgbm90IGRlcGVuZCBvbiBjb3JlICopXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBsZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gMFxuICAgICAgfCBbXSwgXyAtPiAtMVxuICAgICAgfCBfLCBbXSAtPiAxXG4gICAgICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICAgICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gbG9vcCB4cyB5cyBlbHNlIG5cbiAgICBpblxuICAgIGxvb3AgYSBiXG4gIDs7XG5lbmRcblxubW9kdWxlIFVpZCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG5leHQgOiBzdHJpbmcgLT4gdFxuICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIHZhbCBuYW1lIDogdCAtPiBzdHJpbmdcbiAgdmFsIHN0YXRpYyA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cblxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIChhLmNvZGUgOiBpbnQpIGIuY29kZVxuICBsZXQgZXF1YWwgYSBiID0gKGEuY29kZSA6IGludCkgPSBiLmNvZGVcbiAgbGV0IHVpZCA9IHJlZiAwXG5cbiAgbGV0IG5leHQgbmFtZSA9XG4gICAgbGV0IGNvZGUgPSAhdWlkIGluXG4gICAgaW5jciB1aWQ7XG4gICAgeyBjb2RlOyBuYW1lIH1cbiAgOztcblxuICBsZXQgaGFzaCBhID0gSGFzaHRibC5oYXNoIGEuY29kZVxuICBsZXQgbmFtZSBhID0gYS5uYW1lXG4gIGxldCBzdGF0aWMgPSBuZXh0IFwic3RhdGljXCJcbmVuZFxuXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB1aWQgOiBVaWQudFxuICAgIDsgcGFyYW1zIDogdCBsaXN0XG4gICAgfVxuXG4gIGxldCByZWMgY29tcGFyZSBrMSBrMiA9XG4gICAgaWYgazEgPT0gazJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBjbXAgPSBVaWQuY29tcGFyZSBrMS51aWQgazIudWlkIGluXG4gICAgICBpZiBjbXAgPD4gMCB0aGVuIGNtcCBlbHNlIExpc3QuY29tcGFyZSBjb21wYXJlIGsxLnBhcmFtcyBrMi5wYXJhbXMpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuICBsZXQgaGFzaCA9IChIYXNodGJsLmhhc2ggOiB0IC0+IGludClcbiAgbGV0IHN0YXRpYyA9IHsgdWlkID0gVWlkLnN0YXRpYzsgcGFyYW1zID0gW10gfVxuZW5kXG5cbnR5cGUgJ2EgdCA9IEtleS50XG50eXBlICdhIHR5cGVuYW1lID0gJ2EgdFxuXG5sZXQga2V5IHQgPSB0XG5sZXQgdWlkIHQgPSB0LktleS51aWRcbmxldCBuYW1lIHQgPSBVaWQubmFtZSB0LktleS51aWRcbmxldCBzdGF0aWMgPSBLZXkuc3RhdGljXG5sZXQgY3JlYXRlID8obmFtZSA9IFwiVHlwZW5hbWUuY3JlYXRlXCIpICgpID0geyBLZXkudWlkID0gVWlkLm5leHQgbmFtZTsgcGFyYW1zID0gW10gfVxuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBUaGUgYXJndW1lbnQgZm9yIE9iai5tYWdpYyBoZXJlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gY29yZS90eXBlX2VxdWFsICopXG5cbiAgbGV0IHNhbWUgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9IEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG5cbiAgbGV0IHNhbWVfd2l0bmVzcyAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gU29tZSAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIGZhaWx3aXRoIFwiVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4blwiXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAoJ2EsICdiKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gJ2MgdHlwZW5hbWUgLT4gKCdhLCAnYiwgJ2MpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gJ2UgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gW10gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGIgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCBlID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQ7IGUgXSB9XG5lbmRcblxubW9kdWxlIEtleV90YWJsZSA9IEhhc2h0YmwuTWFrZSAoS2V5KVxuXG5tb2R1bGUgVGFibGUgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBkYXRhID0gRGF0YSA6ICdhIHQgKiAnYSBYLnQgLT4gZGF0YVxuICB0eXBlIHQgPSBkYXRhIEtleV90YWJsZS50XG5cbiAgbGV0IGNyZWF0ZSBpbnQgPSBLZXlfdGFibGUuY3JlYXRlIGludFxuICBsZXQgbWVtIHRhYmxlIG5hbWUgPSBLZXlfdGFibGUubWVtIHRhYmxlIChrZXkgbmFtZSlcbiAgbGV0IHNldCB0YWJsZSBuYW1lIGRhdGEgPSBLZXlfdGFibGUucmVwbGFjZSB0YWJsZSAoa2V5IG5hbWUpIChEYXRhIChuYW1lLCBkYXRhKSlcblxuICBsZXQgZmluZCAodHlwZSBhKSB0YWJsZSAobmFtZSA6IGEgdHlwZW5hbWUpID1cbiAgICBsZXQgZGF0YSA9XG4gICAgICB0cnkgU29tZSAoS2V5X3RhYmxlLmZpbmQgdGFibGUgKGtleSBuYW1lKSkgd2l0aFxuICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG4gICAgaW5cbiAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoRGF0YSAobmFtZScsIGRhdGEpKSAtPlxuICAgICAgKGZ1biAodHlwZSBiKSAobmFtZScgOiBiIHR5cGVuYW1lKSAoZGF0YSA6IGIgWC50KSAtPlxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IChzYW1lX3dpdG5lc3NfZXhuIG5hbWUnIG5hbWUgOiAoYiwgYSkgVHlwZV9lcXVhbC50KSBpblxuICAgICAgICAgU29tZSAoZGF0YSA6IGEgWC50KSlcbiAgICAgICAgbmFtZSdcbiAgICAgICAgZGF0YVxuICA7O1xuZW5kXG5cbmxldCBmYWlsIHVpZF9hIHVpZF9iID1cbiAgbGV0IG1zZyA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuICVTICVTXCIgKFVpZC5uYW1lIHVpZF9hKSAoVWlkLm5hbWUgdWlkX2IpXG4gIGluXG4gIGZhaWx3aXRoIG1zZ1xuOztcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMSAoQSA6IFMxKSAoQiA6IFMxKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EuICgnYSBBLnQsICdhIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzIgKEEgOiBTMikgKEIgOiBTMikgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiLiAoKCdhLCAnYikgQS50LCAoJ2EsICdiKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzMgKEEgOiBTMykgKEIgOiBTMykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiICdjLiAoKCdhLCAnYiwgJ2MpIEEudCwgKCdhLCAnYiwgJ2MpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl80IChBIDogUzQpIChCIDogUzQpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYyAnZC4gKCgnYSwgJ2IsICdjLCAnZCkgQS50LCAoJ2EsICdiLCAnYywgJ2QpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzUgKEEgOiBTNSkgKEIgOiBTNSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGVxIDpcbiAgICAgICAgJ2EgJ2IgJ2MgJ2QgJ2UuICgoJ2EsICdiLCAnYywgJ2QsICdlKSBBLnQsICgnYSwgJ2IsICdjLCAnZCwgJ2UpIEIudCkgVHlwZV9lcXVhbC50XG4gICAgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuIiwiKCoqXG4gICBQbGFjZSBob2xkZXIgZm9yIGNvbW1vbiBWYXJpYW50cyBhbmQgRmllbGRzIGludGVyZmFjZVxuKilcblxubW9kdWxlIE0gKFggOiBzaWdcbiAgICAoKipcbiAgICAgICBUaGlzIGZ1bmN0b3IgaXMgZXNzZW50aWFsbHkgdGhlcmUgYmVjYXVzZSB3ZSB1c2UgdGhpcyBzYW1lIGludGVyZmFjZSBpbiBkaWZmZXJlbnRcbiAgICAgICBjb250ZXh0cywgd2l0aCBkaWZmZXJlbnQgdHlwZXMgZm9yIFsnYSB0XS5cblxuICAgICAgIDEpIE9uZSB1c2UgY2FzZSBmb3IgaXQgaXMgd2hlcmUgWydhIFgudCA9ICdhIFR5cGVyZXAudF0uICBUaGVzZSBpbnRlcmZhY2VzIGFyZSB0aGVuXG4gICAgICAgcGFydCBvZiB0aGUgdHlwZSB3aXRuZXNzIGJ1aWx0IGZvciBhIHR5cGUgY29udGFpbmluZyBhIHJlY29yZCBvciBhIHZhcmlhbnQgaW4gaXRzXG4gICAgICAgc3RydWN0dXJlLiBbdHJhdmVyc2VdIHdpbGwgZ2l2ZSBhIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gZm9yIHRoZVxuICAgICAgIGFyZ3VtZW50cyBvZiBhIHZhcmlhbnQgb3IgcmVjb3JkIHR5cGUuXG5cbiAgICAgICAyKSBBbm90aGVyIHVzZSBjYXNlIGlzIGZvciBidWlsZGluZyBcInN0YWdlZCBnZW5lcmljIGNvbXB1dGF0aW9uc1wiLiBJbiB0aGF0IGNhc2UsIHRoZVxuICAgICAgIHR5cGUgWydhIFgudF0gaXMgdGhlIHR5cGUgb2YgdGhlIGNvbXB1dGF0aW9uIHRoYXQgaXMgYmVpbmcgYnVpbHQuICBbdHJhdmVyc2VdXG4gICAgICAgcmV0dXJucyB0aGUgY29tcHV0YXRpb24gYnVpbHQgZm9yIHRoZSBhcmd1bWVudC4gVGhlIGludGVyZmFjZSBubyBsb25nZXIgZXhwb3J0c1xuICAgICAgIHRoZSB0eXBlcmVwIG9mIHRoZSBhcmd1bWVudHMgaW4gaG9wZXMgb2YgZW5mb3JjaW5nIHRoYXQgbm8gdHlwZXJlcCB0cmF2ZXJzYWxcbiAgICAgICBoYXBwZW5zIGF0IHJ1bnRpbWUgaWYgdGhlIGNvbXB1dGF0aW9uIGhhcHBlbiB0byBiZSBhIGZ1bmN0aW9uLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gICgqIFRoZSBmdW5jdGlvbnMgcHJlZml4ZWQgYnkgW2ludGVybmFsXSBhcyB3ZWxsIGFzIHRoZSBtb2R1bGUgc3VmZml4ZWQgYnkgW19pbnRlcm5hbF1cbiAgICAgYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIFt3aXRoIHR5cGVyZXBdIGFzIHdlbGwgYXMgc29tZVxuICAgICBpbnRlcm5hbHMgb2YgdGhlIHR5cGVyZXAgbGlicmFyeS4gRG8gbm90IGNvbnNpZGVyIHVzaW5nIHRoZXNlIHNvbWV3aGVyZSBlbHNlLiAgVGhleVxuICAgICBzaG91bGQgaWRlYWxseSBub3QgYmUgZXhwb3J0ZWQgb3V0c2lkZSB0aGUgdHlwZXJlcCBsaWJyYXJ5LCBidXQgdGhlIGdlbmVyYXRlZCBjb2RlXG4gICAgIG5lZWRzIHNvbWVob3cgdG8gYWNjZXNzIHRoaXMsIGV2ZW4gb3V0c2lkZS4gKilcblxuICBtb2R1bGUgVGFnX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdCA9XG4gICAgICB7IGxhYmVsIDogc3RyaW5nXG4gICAgICA7IHJlcCA6ICdhcmdzIFgudFxuICAgICAgOyBhcml0eSA6IGludFxuICAgICAgOyBhcmdzX2xhYmVscyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGluZGV4IDogaW50XG4gICAgICA7IG9jYW1sX3JlcHIgOiBpbnRcbiAgICAgIDsgdHlpZCA6ICdhcmdzIFR5cGVuYW1lLnRcbiAgICAgIDsgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgY3JlYXRlXG4gICAgICB9XG4gIGVuZFxuXG4gICgqKlxuICAgICBXaXRuZXNzIG9mIGEgdGFnLCB0aGF0IGlzIGFuIGl0ZW0gaW4gYSB2YXJpYW50IHR5cGUsIGFsc28gY2FsbGVkIGFuIFwiYXBwbGllZFxuICAgICB2YXJpYW50IENvbnN0cnVjdG9yXCJcblxuICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIHRoZSBzZWNvbmQgaXMgdGhlIHR5cGUgb2YgdGhlIHRhZ1xuICAgICBwYXJhbWV0ZXJzLiAgRXhhbXBsZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9XG4gICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgIHwgQiBvZiBzdHJpbmdcbiAgICAgICAgIHwgQyBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfVxuICAgICBdfVxuXG4gICAgIHRoaXMgdHlwZSBoYXMgdGhyZWUgY29uc3RydWN0b3JzLiBGb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nXG4gICAgIFtUYWcudF06XG5cbiAgICAge1tcbiAgICAgICB2YWwgdGFnX0EgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgICAgdmFsIHRhZ19CIDogKHQsIHN0cmluZyAgICAgICAgKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQyA6ICh0LCAoaW50ICogc3RyaW5nKSkgVGFnLnRcbiAgICAgXX1cblxuICAgICBOb3RlLCBpbmxpbmUgcmVjb3JkIGluIHZhcmlhbnQgYXJlIHR5cGVkIGFzIGlmIHRoZWlyIGRlZmluaXRpb24gd2FzIHVzaW5nIHR1cGxlcyxcbiAgICAgd2l0aG91dCB0aGUgcGFyZW50aGVzaXMuICBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGVpciBydW50aW1lIHJlcHJlc2VudGF0aW9uLiAgQnV0XG4gICAgIHRoZSBkaXN0aW5jdGlvbiBpcyBjYXJyaWVkIGFuZCBhdmFpbGFibGUgZm9yIGludHJvc3BlY3Rpb24gYXMgcGFydCBvZiB0aGUgW1RhZy50XS5cbiAgICAgU2VlIFthcmdzX2xhYmVsc10uICopXG4gIG1vZHVsZSBUYWcgOiBzaWdcbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZSA9XG4gICAgICB8IEFyZ3Mgb2YgKCdhcmdzIC0+ICd2YXJpYW50KVxuICAgICAgfCBDb25zdCBvZiAndmFyaWFudFxuXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSB0XG5cbiAgICAoKipcbiAgICAgICBUaGUgbmFtZSBvZiB0aGUgY29uc3RydWN0b3IgYXMgaXQgaXMgZ2l2ZW4gaW4gdGhlIGNvbmNyZXRlIHN5bnRheFxuICAgICAgIEV4YW1wbGVzOlxuXG4gICAgICAge3ZcbiAgICAgICAgIENvbnN0cnVjdG9yICAgICAgICB8IGxhYmVsXG4gICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICB8IEEgb2YgaW50ICAgICAgICAgfCAgXCJBXCJcbiAgICAgICAgIHwgYGEgb2YgaW50ICAgICAgICB8ICBcImFcIlxuICAgICAgICAgfCBgQSBvZiBpbnQgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IEEgb2YgeyB4IDogaW50IH0gfCAgXCJBXCJcbiAgICAgICB2fVxuXG4gICAgICAgZm9yIHN0YW5kYXJkIHZhcmlhbnQsIHRoZSBvY2FtbCBzeW50YXggaW1wbGllcyB0aGF0IHRoaXMgbGFiZWwgd2lsbCBhbHdheXMgc3RhcnRzXG4gICAgICAgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLiBGb3IgcG9seW1vcnBoaWMgdmFyaWFudHMsIHRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgY2hhci5cbiAgICAgICBGb3IgcG9seW1vcnBoaWMgdmFyaWFudCwgdGhpcyBsYWJlbCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICopXG4gICAgdmFsIGxhYmVsIDogKF8sIF8pIHQgLT4gc3RyaW5nXG5cbiAgICAoKipcbiAgICAgICBUaGUgc2l6ZSBvZiB0aGUgb2NhbWwgaGVhcCBibG9jayBjb250YWluaW5nIHRoZSBhcmd1bWVudHNcblxuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHt2XG4gICAgICAgICAgMDogfCBBIHwgJ0FcbiAgICAgICAgICAxOiB8IEEgb2YgaW50IHwgYEEgb2YgaW50IHwgQSBvZiAoaW50ICogaW50KSB8IGBBIG9mIChpbnQgKiBpbnQpXG4gICAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50fVxuICAgICAgICAgIDI6IHwgQSBvZiBpbnQgKiBmbG9hdFxuICAgICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfVxuICAgICAgICAgIGV0Yy5cbiAgICAgICB2fVxuICAgICopXG4gICAgdmFsIGFyaXR5IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKiogVGhlIGxhYmVsIG9mIHRoZSBmaWVsZHMgZm9yIGlubGluZSByZWNvcmRzLiAgRm9yIG90aGVyIGZvcm1zIG9mIHRhZ3MsIHRoaXMgaXMgdGhlXG4gICAgICAgIGVtcHR5IGxpc3QuICBXaGVuIHRoaXMgcmV0dXJucyBhIG5vbiBlbXB0eSBsaXN0LCB0aGUgbGVuZ3RoIG9mIHRoZSByZXR1cm5lZCBsaXN0XG4gICAgICAgIGlzIGVxdWFsIHRvIHRoZSBhcml0eS5cblxuICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgIHt2XG4gICAgICAgICAoMSkgRW1wdHk6XG5cbiAgICAgICAgICAgfCBBIHwgJ0FcbiAgICAgICAgICAgfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICB8IGBBIG9mIGludCAqIGludFxuICAgICAgICAgICB8IEEgb2YgaW50ICogZmxvYXRcblxuICAgICAgICAgKDIpIE5vbiBlbXB0eTpcblxuICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50IH0gICAgICAgICAgICAgICAtPiBbIFwieFwiIF1cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9ICAgLT4gWyBcInhcIiA7IFwieVwiIF1cbiAgICAgICB2fVxuICAgICopXG4gICAgdmFsIGFyZ3NfbGFiZWxzIDogKF8sIF8pIHQgLT4gc3RyaW5nIGxpc3RcblxuICAgICgqKlxuICAgICAgIFRoZSBpbmRleCBvZiB0aGUgY29uc3RydWN0b3IgaW4gdGhlIGxpc3Qgb2YgYWxsIHRoZSB2YXJpYW50IHR5cGUncyBjb25zdHJ1Y3RvcnNcbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgfCBBIG9mIGludCAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEMgb2YgaW50ICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBEIG9mIGNoYXIgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRSBvZiB7IHggOiBpbnQgfSAgKCogNCAqKVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIG9jYW1sX3JlcHIgaXMgcmVsYXRlZCB0byB0aGUgcnVudGltZSBvZiBvYmplY3RzLiB0aGlzIGlzIGVzc2VudGlhbGx5IGEgd2F5IG9mXG4gICAgICAgZ2l2aW5nIG9uZSB0aGUgYWJpbGl0eSB0byByZWJ1aWxkIGR5bmFtaWNhbGx5IGFuIFtPYmoudF0gcmVwcmVzZW50aW5nIGEgdGFnLlxuXG4gICAgICAgUG9seW1vcnBoaWMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICBbb2NhbWxfcmVwcl0gaXMgdGhlIGhhc2ggb2YgdGhlIGxhYmVsLCBhcyBkb25lIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICBFeGFtcGxlOlxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljIGBiYXIpICAoKiA0ODk1MTg3ICopXG4gICAgICAgcHJpbnRfaW50IChPYmoubWFnaWMgJ2ZvbykgICgqIDUwOTcyMjIgKilcblxuICAgICAgIFN0YW5kYXJkcyB2YXJpYW50czpcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICBbb2NhbWxfcmVwcl0gaXMgdGhlIHRhZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciB3aXRoaW4gdGhlIHR5cGUuXG4gICAgICAgdGhlIHdheSBpdCB3b3JrcyBpbiB0aGUgb2NhbWwgcnVudGltZSBpcyBieSBwYXJ0aXRpb25pbmcgdGhlIGNvbnN0cnVjdG9ycyByZWdhcmRpbmdcbiAgICAgICBpZiB0aGV5IGhhdmUgc29tZSBhcmd1bWVudHMgb3Igbm90LCBwcmVzZXJ2aW5nIHRoZSBvcmRlciwgdGhlbiBhc3NpZ24gaW5jcmVhc2luZ1xuICAgICAgIGluZGV4IHdpdGhpbmcgZWFjaCBwYXJ0aXRpb24uXG4gICAgICAgRXhhbXBsZTpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPSAgICAgICAgICAgICAgICAgICgqIG5vIGFyZyAqKSAgKCogYXJncyAqKVxuICAgICAgICAgICB8IEEgICAgICAgICAgICAgICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBCIG9mIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBDICAgICAgICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgRCBvZiAoZmxvYXQgKiBzdHJpbmcpICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgRSAgICAgICAgICAgICAgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEYgICAgICAgICAgICAgICAgICAgICAgICgqIDMgKilcbiAgICAgICAgICAgfCBHIG9mIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBIIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgICAgICAgICgqIDMgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIG9jYW1sX3JlcHIgOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdpdmUgYmFjayBhIHdheSBvZiBjb25zdHJ1Y3RpbmcgYSB2YWx1ZSBvZiB0aGF0IGNvbnN0cnVjdG9yIGZyb20gaXRzIGFyZ3VtZW50cy5cblxuICAgICAgIEV4YW1wbGVzOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiAoaW50ICogc3RyaW5nKVxuICAgICAgICAgICB8IEIgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgfCBDXG4gICAgICAgICAgIHwgRCBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfVxuICAgICAgIF19XG5cbiAgICAgICBbY3JlYXRlXSB3aWxsIHJldHVybiBzb21ldGhpbmcgZXF1aXZhbGVudCB0bzpcbiAgICAgICB0YWdfQSA6IFtBcmdzIChmdW4gKGQgOiAoaW50ICogc3RyaW5nKSAtPiBBIGQpXVxuICAgICAgIHRhZ19CIDogW0FyZ3MgKGZ1biAoaSwgZikgLT4gQiAoaSwgZikpXVxuICAgICAgIHRhZ19DIDogW0NvbnN0IENdXG4gICAgICAgdGFnX0QgOiBbQXJncyAoZnVuICh4LCB5KSAtPiBEIHsgeDsgeSB9KV1cbiAgICAqKVxuICAgIHZhbCBjcmVhdGUgOiAoJ3ZhcmlhbnQsICdhcmdzKSB0IC0+ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuXG4gICAgKCoqIHJldHVybiB0aGUgdHlwZV9uYW1lIG9mIHRoZSBhcmd1bWVudHMuIG1pZ2h0IGJlIHVzZWQgdG8gcGVyZm9ybSBzb21lIGxvb2t1cCBiYXNlZFxuICAgICAgICBvbiBpdCB3aGlsZSBidWlsZGluZyBhIGNvbXB1dGF0aW9uIGZvciBleGFtcGxlICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgVHlwZW5hbWUudFxuXG4gICAgKCoqIGdldCB0aGUgcmVwcmVzZW50YXRpb24vY29tcHV0YXRpb24gb2YgdGhlIGFyZ3VtZW50cyAqKVxuICAgIHZhbCB0cmF2ZXJzZSA6IChfLCAnYXJncykgdCAtPiAnYXJncyBYLnRcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICgnYSwgJ2IpIFRhZ19pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBUYWdfaW50ZXJuYWxcblxuICAgIGxldCBsYWJlbCB0ID0gdC5sYWJlbFxuICAgIGxldCBhcml0eSB0ID0gdC5hcml0eVxuICAgIGxldCBhcmdzX2xhYmVscyB0ID0gdC5hcmdzX2xhYmVsc1xuICAgIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICAgIGxldCBvY2FtbF9yZXByIHQgPSB0Lm9jYW1sX3JlcHJcbiAgICBsZXQgY3JlYXRlIHQgPSB0LmNyZWF0ZVxuICAgIGxldCB0eWlkIHQgPSB0LnR5aWRcbiAgICBsZXQgdHJhdmVyc2UgdCA9IHQucmVwXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50X2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2EpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYSkgVGFnLnQgKiAnYSAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgdHlwZW5hbWUgOiAnYSBUeXBlbmFtZS50XG4gICAgICA7IHRhZ3MgOiAnYSB0YWcgYXJyYXlcbiAgICAgIDsgcG9seW1vcnBoaWMgOiBib29sXG4gICAgICA7IHZhbHVlIDogJ2EgLT4gJ2EgdmFsdWVcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFZhcmlhbnQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgdGFncyBjb25zdGl0dWluZyBhIHZhcmlhbnRcbiAgICAgICB0eXBlLiB0aGUgWyd2YXJpYW50XSBwYXJhbWV0ZXIgaXMgdGhlIHZhcmlhbnQgdHlwZSwgaXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aGVcbiAgICAgICBjb25zdHJ1Y3RvcnMgb2YgdGhhdCB2YXJpYW50IHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXJzIG1pZ2h0IGJlIGRpZmZlcmVudFxuICAgICAgIGZvciBlYWNoIGNvbnN0cnVjdG9yIGFuZCBpcyB0aHVzIGV4aXN0ZW50aWFsXG4gICAgKilcbiAgICB0eXBlIF8gdGFnID0gVGFnIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgLT4gJ3ZhcmlhbnQgdGFnXG5cbiAgICAoKipcbiAgICAgICBBIHNpbWlsYXIgZXhpc3RlbnRpYWwgY29uc3RydWN0b3IgdG8gW18gdGFnXSBidXQgdGhpcyBvbmUgaG9sZHMgYSB2YWx1ZSB3aG9zZSB0eXBlXG4gICAgICAgaXMgdGhlIGFyZ3VtZW50cyBvZiB0aGUgdGFnIGNvbnN0cnVjdG9yLiAgQSB2YWx1ZSBvZiB0eXBlIFsnYSB2YWx1ZV0gaXMgYSBwYWlyIG9mXG4gICAgICAgKDEpIGEgdmFsdWUgb2YgdmFyaWFudCB0eXBlIFsnYV0gYWxvbmcgd2l0aCAoMikgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICAgICBjb25zdHJ1Y3RvciB3aXRoaW4gdGhlIHR5cGUgWydhXVxuICAgICopXG4gICAgdHlwZSBfIHZhbHVlID0gVmFsdWUgOiAoJ3ZhcmlhbnQsICdhcmdzKSBUYWcudCAqICdhcmdzIC0+ICd2YXJpYW50IHZhbHVlXG5cbiAgICAoKipcbiAgICAgICBXaXRuZXNzIG9mIGEgdmFyaWFudCB0eXBlLiBUaGUgcGFyYW1ldGVyIGlzIHRoZSB0eXBlIG9mIHRoZSB2YXJpYW50IHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRhZ3Mgb2YgdGhpcyB2YXJpYW50IHR5cGUgZGVmaW5pdGlvbi5cbiAgICAqKVxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2V0IHRoZSBudGggdGFnIG9mIHRoaXMgdmFyaWFudCB0eXBlLCBpbmRleGVkIGZyb20gMC5cbiAgICAqKVxuICAgIHZhbCB0YWcgOiAnYSB0IC0+IGludCAtPiAnYSB0YWdcblxuICAgICgqKlxuICAgICAgIERpc3Rpbmd1aXNoIHBvbHltb3JwaGljIHZhcmlhbnRzIGFuZCBzdGFuZGFyZCB2YXJpYW50cy4gVHlwaWNhbGx5LCBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzIHRhZ3Mgc3RhcnRzIHdpdGggdGhlIFtgXSBjaGFyYWN0ZXIuXG4gICAgICAgRXhhbXBsZVxuICAgICAgIHBvbHltb3JwaGljIHZhcmlhbnQ6IHR5cGUgdCA9IFsgYEEgfCBgQiBdXG4gICAgICAgc3RhbmRhcmQgdmFyaWFudDogICAgdHlwZSB0ID0gQSB8IEJcbiAgICAqKVxuICAgIHZhbCBpc19wb2x5bW9ycGhpYyA6IF8gdCAtPiBib29sXG5cbiAgICAoKipcbiAgICAgICBQYXR0ZXJuIG1hdGNoaW5nIG9uIGEgdmFsdWUgb2YgdGhpcyB2YXJpYW50IHR5cGUuXG4gICAgKilcbiAgICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhIC0+ICdhIHZhbHVlXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSB0YWcgLT4gJ2FjYykgLT4gJ2FjY1xuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogJ2EgVmFyaWFudF9pbnRlcm5hbC50IC0+ICdhIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJpYW50X2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LnRhZ3NcbiAgICBsZXQgdGFnIHQgaW5kZXggPSB0LnRhZ3MuKGluZGV4KVxuICAgIGxldCBpc19wb2x5bW9ycGhpYyB0ID0gdC5wb2x5bW9ycGhpY1xuICAgIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBBcnJheS5mb2xkX2xlZnQgZiBpbml0IHQudGFnc1xuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgRmllbGRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlICgncmVjb3JkLCAnZmllbGQpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnZmllbGQgWC50XG4gICAgICA7IGluZGV4IDogaW50XG4gICAgICA7IHR5aWQgOiAnZmllbGQgVHlwZW5hbWUudFxuICAgICAgOyBnZXQgOiAncmVjb3JkIC0+ICdmaWVsZFxuICAgICAgOyAoKiBzZXQgOiAoJ3JlY29yZCAtPiAnZmllbGQgLT4gdW5pdCkgb3B0aW9uOyAoXFwqIG11dGFibGUgZmllbGQgKlxcKSAqKVxuICAgICAgICBpc19tdXRhYmxlIDogYm9vbFxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIGZpZWxkLCB0aGF0IGlzIGFuIGl0ZW0gaW4gYSByZWNvcmQgdHlwZS5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgcmVjb3JkIHR5cGUsIHRoZSBzZWNvbmQgaXMgdGhlIHR5cGUgb2YgdGhlIGZpZWxkLlxuICAgICBFeGFtcGxlOlxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludCA7IHkgOiBzdHJpbmcgfVxuICAgICBdfVxuICAgICBUaGlzIHR5cGUgaGFzIHR3byBmaWVsZHMuIGZvciBlYWNoIG9mIHRoZW0gd2UnbGwgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgW0ZpZWxkLnRdXG5cbiAgICAgdmFsIGZpZWxkX3ggOiAodCwgaW50KSBGaWVsZC50XG4gICAgIHZhbCBmaWVsZF95IDogKHQsIHN0cmluZykgRmllbGQudFxuICAqKVxuICBtb2R1bGUgRmllbGQgOiBzaWdcbiAgICB0eXBlICgncmVjb3JkLCAnZmllbGQpIHRcblxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGZpZWxkIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7W1xuICAgICAgICAgeyB4ICAgOiBpbnQ7ICAgICAoKiBcInhcIiAqKVxuICAgICAgICAgICBmb28gOiBzdHJpbmc7ICAoKiBcImZvb1wiICopXG4gICAgICAgICAgIGJhciA6IGZsb2F0OyAgICgqIFwiYmFyXCIgKilcbiAgICAgICAgIH1cbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGxhYmVsIDogKF8sIF8pIHQgLT4gc3RyaW5nXG5cbiAgICAoKipcbiAgICAgICBUaGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgZmllbGQgaW4gdGhlIGxpc3Qgb2YgYWxsIGZpZWxkcyBmb3IgdGhpcyByZWNvcmQgdHlwZS5cbiAgICAgICBFeGFtcGxlOlxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPSB7XG4gICAgICAgICAgIHggICA6IGludDsgICAgICgqIDAgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogMSAqKVxuICAgICAgICAgICBiYXIgOiBzdHJpbmc7ICAoKiAyICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBpbmRleCA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgRmllbGQgYWNjZXNzb3JzLiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBkb3Qgb3BlcmF0aW9uLlxuICAgICAgIFtGaWVsZC5nZXQgYmFyX2ZpZWxkIHRdIHJldHVybnMgdGhlIGZpZWxkIFtiYXJdIG9mIHRoZSByZWNvcmQgdmFsdWUgW3RdLCBqdXN0IHRoZVxuICAgICAgIHNhbWUgYXMgW3QuYmFyXVxuICAgICopXG4gICAgdmFsIGdldCA6ICgncmVjb3JkLCAnZmllbGQpIHQgLT4gJ3JlY29yZCAtPiAnZmllbGRcblxuICAgICgqKiByZXR1cm4gd2hldGhlciB0aGUgZmllbGQgaXMgbXV0YWJsZSwgaS5lLiB3aGV0aGVyIGl0cyBkZWNsYXJhdGlvbiBpcyBwcmVmaXhlZCB3aXRoXG4gICAgICAgIHRoZSBrZXl3b3JkIFttdXRhYmxlXSAqKVxuICAgIHZhbCBpc19tdXRhYmxlIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICAgKCoqIHJldHVybiB0aGUgdHlwZV9uYW1lIG9mIHRoZSBhcmd1bWVudHMuICBNaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgKilcbiAgICB2YWwgdHlpZCA6IChfLCAnZmllbGQpIHQgLT4gJ2ZpZWxkIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBYLnRcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICgnYSwgJ2IpIEZpZWxkX2ludGVybmFsLnQgLT4gKCdhLCAnYikgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEZpZWxkX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgZ2V0IHQgPSB0LmdldFxuICAgIGxldCBpc19tdXRhYmxlIHQgPSB0LmlzX211dGFibGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgUmVjb3JkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSBfIGZpZWxkID0gRmllbGQgOiAoJ3JlY29yZCwgJ2EpIEZpZWxkLnQgLT4gJ3JlY29yZCBmaWVsZFxuICAgIHR5cGUgJ3JlY29yZCBmaWVsZHMgPSB7IGdldCA6ICdmaWVsZC4gKCdyZWNvcmQsICdmaWVsZCkgRmllbGQudCAtPiAnZmllbGQgfVxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgdHlwZW5hbWUgOiAnYSBUeXBlbmFtZS50XG4gICAgICA7IGZpZWxkcyA6ICdhIGZpZWxkIGFycmF5XG4gICAgICA7IGhhc19kb3VibGVfYXJyYXlfdGFnIDogYm9vbFxuICAgICAgOyBjcmVhdGUgOiAnYSBmaWVsZHMgLT4gJ2FcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZCA6IHNpZ1xuICAgICgqKlxuICAgICAgIEFuIGV4aXN0ZW50aWFsIHR5cGUgdXNlZCB0byBnYXRoZXIgYWxsIHRoZSBmaWVsZHMgY29uc3RpdHVpbmcgYSByZWNvcmQgdHlwZS4gdGhlXG4gICAgICAgWydyZWNvcmRdIHBhcmFtZXRlciBpcyB0aGUgcmVjb3JkIHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlIGZpZWxkIG9mIHRoYXRcbiAgICAgICByZWNvcmQgdHlwZS4gVGhlIHR5cGUgb2YgdGhlIGZpZWxkcyBtaWdodCBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggZmllbGQgYW5kIGlzIHRodXNcbiAgICAgICBleGlzdGVudGlhbC5cbiAgICAqKVxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcblxuICAgICgqKlxuICAgICAgIFsncmVjb3JkIGZpZWxkc10gaXMgYSB0eXBlIGlzb21vcnBoaWMgdG8gWydyZWNvcmRdLiAgVGhpcyBnaXZlcyBhIHdheSB0byBnZXQgdGhlXG4gICAgICAgZmllbGQgdmFsdWUgZm9yIGVhY2ggZmllbGQgb2YgdGhlIHJlY29yZC4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyByZXByZXNlbnRhdGlvbiBpc1xuICAgICAgIHRoYXQgaXQgaXMgY29udmVuaWVudCBmb3Igd3JpdGluZyBnZW5lcmljIGNvbXB1dGF0aW9ucy5cbiAgICAqKVxuICAgIHR5cGUgJ3JlY29yZCBmaWVsZHMgPSB7IGdldCA6ICdmaWVsZC4gKCdyZWNvcmQsICdmaWVsZCkgRmllbGQudCAtPiAnZmllbGQgfVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHJlY29yZCB0eXBlLiBUaGUgcGFyYW1ldGVyIGlzIHRoZSB0eXBlIG9mIHRoZSByZWNvcmQgdHlwZSB3aXRuZXNzZWQuXG4gICAgKilcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG5cbiAgICAoKipcbiAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZmllbGRzIG9mIHRoaXMgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbi5cbiAgICAqKVxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2V0IHRoZSBudGggZmllbGQgb2YgdGhpcyByZWNvcmQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgZmllbGQgOiAnYSB0IC0+IGludCAtPiAnYSBmaWVsZFxuXG4gICAgKCoqXG4gICAgICAgVGhpcyBpcyBhIGxvdyBsZXZlbCBtZXRhZGF0YSByZWdhcmRpbmcgdGhlIHdheSB0aGUgb2NhbWwgY29tcGlsZXIgcmVwcmVzZW50IHRoZVxuICAgICAgIGFycmF5IHVuZGVybmVhdGggdGhhdCBpcyB0aGUgcnVudGltZSB2YWx1ZSBvZiBhIHJlY29yZCBvZiB0eXBlIFsnYV0gZ2l2ZW4gYSB3aXRuZXNzXG4gICAgICAgb2YgdHlwZSBbJ2EgdF0uIFtoYXNfZG91YmxlX2FycmF5X3RhZyB3XSByZXR1cm5zIFt0cnVlXSBpZiB0aGUgYXJyYXkgdGhhdFxuICAgICAgIHJlcHJlc2VudHMgcnVudGltZSB2YWx1ZXMgb2YgdGhpcyB0eXBlIGlzIGFuIG9wdGltaXplZCBvY2FtbCBmbG9hdCBhcnJheS5cbiAgICAgICBUeXBpY2FsbHksIHRoaXMgd2lsbCBiZSB0cnVlIGZvciByZWNvcmQgd2hlcmUgYWxsIGZpZWxkcyBhcmUgc3RhdGljYWxseSBrbm93biBhcyB0b1xuICAgICAgIGJlIFtmbG9hdHNdLlxuXG4gICAgICAgTm90ZSB0aGF0IHlvdSBjYW4ndCBnZXQgdGhpcyBpbmZvcm1hdGlvbiBkeW5hbWljYWxseSBieSBpbnNwZWN0aW5nIHRoZSB0eXBlcmVwIG9uY2VcbiAgICAgICBpdCBpcyBhcHBsaWVkLCBiZWNhdXNlIHRoZXJlIGlzIGF0IHRoaXMgcG9pbnQgbm8gd2F5IHRvIHRlbGwgd2hldGhlciBvbmUgb2YgdGhlXG4gICAgICAgZmllbGQgaXMgcG9seW1vcnBoaWMgaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiAgICAqKVxuICAgIHZhbCBoYXNfZG91YmxlX2FycmF5X3RhZyA6IF8gdCAtPiBib29sXG5cbiAgICAoKipcbiAgICAgICBFeHBvc2Ugb25lIGRpcmVjdGlvbiBvZiB0aGUgaXNvbW9ycGhpc20gYmV0d2VlbiBhIHZhbHVlIG9mIHR5cGUgWydhXSBhbmQgYSB2YWx1ZSBvZlxuICAgICAgIHR5cGUgWydhIGZpZWxkc10uIEJhc2ljYWxseSwgZ2l2ZW4gYW4gZW5jb2Rpbmcgd2F5IG9mIGFjY2Vzc2luZyB0aGUgdmFsdWUgb2YgYWxsXG4gICAgICAgdGhlIGZpZWxkcyBvZiBhIHJlY29yZCwgY3JlYXRlIHRoYXQgcmVjb3JkIGFuZCByZXR1cm4gaXQuXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogJ2EgdCAtPiAnYSBmaWVsZHMgLT4gJ2FcblxuICAgICgqKlxuICAgICAgIGZvbGRpbmcgYWxvbmcgdGhlIHRhZ3Mgb2YgdGhlIHZhcmlhbnQgdHlwZVxuICAgICopXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOignYWNjIC0+ICdhIGZpZWxkIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFJlY29yZF9pbnRlcm5hbC50IC0+ICdhIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBSZWNvcmRfaW50ZXJuYWxcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IHQgPSB0LnR5cGVuYW1lXG4gICAgbGV0IGxlbmd0aCB0ID0gQXJyYXkubGVuZ3RoIHQuZmllbGRzXG4gICAgbGV0IGZpZWxkIHQgaW5kZXggPSB0LmZpZWxkcy4oaW5kZXgpXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIHQgPSB0Lmhhc19kb3VibGVfYXJyYXlfdGFnXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LmZpZWxkc1xuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcbmVuZFxuIiwibW9kdWxlIE5hbWVfb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVuYW1lX29mX2ludCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50MzIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDMyXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDMyXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9pbnQ2NCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50NjRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50NjRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX25hdGl2ZWludCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gbmF0aXZlaW50XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcIm5hdGl2ZWludFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfY2hhciA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gY2hhclxuXG4gICAgICAgIGxldCBuYW1lID0gXCJjaGFyXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9mbG9hdCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiZmxvYXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3N0cmluZyA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInN0cmluZ1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYnl0ZXMgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGJ5dGVzXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImJ5dGVzXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9ib29sID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBib29sXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImJvb2xcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3VuaXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHVuaXRcblxuICAgICAgICBsZXQgbmFtZSA9IFwidW5pdFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBtb2R1bGUgTV9vcHRpb24gPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb25cblxuICAgICAgbGV0IG5hbWUgPSBcIm9wdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9vcHRpb24gPSBNX29wdGlvbi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGlzdCA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IG5hbWUgPSBcImxpc3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGlzdCA9IE1fbGlzdC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fYXJyYXkgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBhcnJheVxuXG4gICAgICBsZXQgbmFtZSA9IFwiYXJyYXlcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfYXJyYXkgPSBNX2FycmF5LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9sYXp5X3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuICAgICAgbGV0IG5hbWUgPSBcImxhenlfdFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9sYXp5X3QgPSBNX2xhenlfdC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fcmVmID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVmXG5cbiAgICAgIGxldCBuYW1lID0gXCJyZWZcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfcmVmID0gTV9yZWYudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2Z1bmN0aW9uID0gVHlwZW5hbWUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgLT4gJ2JcblxuICAgICAgbGV0IG5hbWUgPSBcImZ1bmN0aW9uXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2Z1bmN0aW9uID0gTV9mdW5jdGlvbi50eXBlbmFtZV9vZl90XG5cbiAgdHlwZSB0dXBsZTAgPSB1bml0XG5cbiAgbW9kdWxlIE1fdHVwbGUwID0gVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdHVwbGUwXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTBcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUwID0gTV90dXBsZTAudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2JcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlMlwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTIgPSBNX3R1cGxlMi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGUzID0gVHlwZW5hbWUuTWFrZTMgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhICogJ2IgKiAnY1xuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUzXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMyA9IE1fdHVwbGUzLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTQgPSBUeXBlbmFtZS5NYWtlNCAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICdhICogJ2IgKiAnYyAqICdkXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTRcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU0ID0gTV90dXBsZTQudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlNSA9IFR5cGVuYW1lLk1ha2U1IChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA9ICdhICogJ2IgKiAnYyAqICdkICogJ2VcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlNVwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTUgPSBNX3R1cGxlNS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIHJlYyBUeXBlcmVwIDogc2lnXG4gIHR5cGUgXyB0ID1cbiAgICB8IEludCA6IGludCB0XG4gICAgfCBJbnQzMiA6IGludDMyIHRcbiAgICB8IEludDY0IDogaW50NjQgdFxuICAgIHwgTmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB8IENoYXIgOiBjaGFyIHRcbiAgICB8IEZsb2F0IDogZmxvYXQgdFxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJ5dGVzIDogYnl0ZXMgdFxuICAgIHwgQm9vbCA6IGJvb2wgdFxuICAgIHwgVW5pdCA6IHVuaXQgdFxuICAgIHwgT3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHwgTGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgfCBBcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICAgIHwgTGF6eSA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgICB8IFJlZiA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgICB8IEZ1bmN0aW9uIDogKCdkb20gdCAqICdybmcgdCkgLT4gKCdkb20gLT4gJ3JuZykgdFxuICAgIHwgVHVwbGUgOiAnYSBUeXBlcmVwLlR1cGxlLnQgLT4gJ2EgdFxuICAgIHwgUmVjb3JkIDogJ2EgVHlwZXJlcC5SZWNvcmQudCAtPiAnYSB0XG4gICAgfCBWYXJpYW50IDogJ2EgVHlwZXJlcC5WYXJpYW50LnQgLT4gJ2EgdFxuICAgIHwgTmFtZWQgOiAoJ2EgVHlwZXJlcC5OYW1lZC50ICogJ2EgdCBsYXp5X3Qgb3B0aW9uKSAtPiAnYSB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogJ2EgdCAtPiBwYWNrZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBUMCA9IHNpZ1xuICAgICAgdHlwZSBuYW1lZFxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6IG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICAgICAgdHlwZSAnYSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIGEgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDIgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdiIFR5cGVuYW1lLnQgLT4gKCdhLCAnYikgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMyA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNCA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDUgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZVxuXG4gICAgICB2YWwgZSA6IGUgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkLCBlKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICAoKiB0aGVyZSB0aGUgbW9kdWxlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdHlwZSBbdF0gd2l0aFxuICAgICAgIHBhcmFtZXRlcnMgd2hvc2Uga2luZCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIHR5cGUgdmFyaWFibGU6IFsnYSAndF0sIGV2ZW4gd2l0aFxuICAgICAgIGEgZ2FkdC4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBUMCBvZiAobW9kdWxlIFQwIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQxIG9mIChtb2R1bGUgVDEgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDIgb2YgKG1vZHVsZSBUMiB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMyBvZiAobW9kdWxlIFQzIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ0IG9mIChtb2R1bGUgVDQgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDUgb2YgKG1vZHVsZSBUNSB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gICAgdmFsIG5hbWUgOiBfIHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBUdXBsZSA6IHNpZ1xuICAgICgqIHRoZXNlIGNvbnN0cnVjdG9ycyBjb3VsZCBiZSBwbHVuZ2VkIGF0IHRvcGxldmVsIG9mIFR5cGVyZXAudCwgaG93ZXZlciBpdCBpcyBsZXNzXG4gICAgICAgdmVyYm9zZSB0aGF0IHdheSAqKVxuICAgIHR5cGUgXyB0ID1cbiAgICAgIHwgVDIgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYikgdFxuICAgICAgfCBUMyA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQpIC0+ICgnYSAqICdiICogJ2MpIHRcbiAgICAgIHwgVDQgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gICAgICB8IFQ1IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50ICogJ2UgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG5cbiAgICB2YWwgYXJpdHkgOiBfIHQgLT4gaW50XG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgZW5kXG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIFR5cGVyZXAudFxuXG4gIHZhbCBzYW1lIDogXyB0IC0+IF8gdCAtPiBib29sXG4gIHZhbCBzYW1lX3dpdG5lc3MgOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50IG9wdGlvblxuICB2YWwgc2FtZV93aXRuZXNzX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnRcbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgdmFsIGhlYWQgOiAnYSB0IC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBhcml0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIF8gLT4gMFxuICAgICAgfCBUMSBfIC0+IDFcbiAgICAgIHwgVDIgXyAtPiAyXG4gICAgICB8IFQzIF8gLT4gM1xuICAgICAgfCBUNCBfIC0+IDRcbiAgICAgIHwgVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90ICh0eXBlIGEpID0gZnVuY3Rpb25cbiAgICAgIHwgVDAgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDAgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDEgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDEgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDIgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDMgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDQgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDUgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG5hbWUgcmVwID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCAodHlwZW5hbWVfb2ZfdCByZXApKVxuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgPSBzdHJ1Y3RcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhpcyB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgbGV0IGFyaXR5IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMiBfIC0+IDJcbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyBfIC0+IDNcbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCBfIC0+IDRcbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNSBfIC0+IDVcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgICAgfCBUMiAoYSwgYikgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTIgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICB8IFQzIChhLCBiLCBjKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlM1xuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgfCBUNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTRcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICB8IFQ1IChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlNVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZClcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVwID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVwXG4gICAgZW5kKVxuXG4gIGxldCByZWMgdHlwZW5hbWVfb2ZfdCA6IHR5cGUgYS4gYSB0IC0+IGEgVHlwZW5hbWUudCA9IGZ1bmN0aW9uXG4gICAgfCBJbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnRcbiAgICB8IEludDMyIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50MzJcbiAgICB8IEludDY0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50NjRcbiAgICB8IE5hdGl2ZWludCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX25hdGl2ZWludFxuICAgIHwgQ2hhciAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2NoYXJcbiAgICB8IEZsb2F0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfZmxvYXRcbiAgICB8IFN0cmluZyAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3N0cmluZ1xuICAgIHwgQnl0ZXMgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ieXRlc1xuICAgIHwgQm9vbCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Jvb2xcbiAgICB8IFVuaXQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl91bml0XG4gICAgfCBPcHRpb24gcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2Zfb3B0aW9uICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IExpc3QgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbGlzdCAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBBcnJheSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9hcnJheSAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMYXp5IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xhenlfdCAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBSZWYgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfcmVmICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IEZ1bmN0aW9uIChkb20sIHJuZykgLT5cbiAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfZnVuY3Rpb24gKHR5cGVuYW1lX29mX3QgZG9tKSAodHlwZW5hbWVfb2ZfdCBybmcpXG4gICAgfCBUdXBsZSByZXAgLT4gVHlwZXJlcC5UdXBsZS50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgUmVjb3JkIHJlcCAtPiBUeXBlcmVwLlJlY29yZC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgVmFyaWFudCByZXAgLT4gVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBOYW1lZCAobmFtZSwgXykgLT4gTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lXG4gIDs7XG5cbiAgbGV0IHJlYyBzYW1lX3dpdG5lc3MgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgVHlwZV9lcXVhbC50IG9wdGlvbiA9XG4gICAgZnVuIHQxIHQyIC0+XG4gICAgICBsZXQgbW9kdWxlIEUgPSBUeXBlX2VxdWFsIGluXG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBOYW1lZCAobmFtZTEsIHIxKSwgTmFtZWQgKG5hbWUyLCByMikgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzcyAoTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lMSkgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTIpXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByMSwgcjIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IFNvbWUgKGxhenkgdDEpLCBOb25lIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBOb25lLCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lKSlcbiAgICAgIHwgTmFtZWQgKF8sIHIxKSwgdDIgLT5cbiAgICAgICAgKG1hdGNoIHIxIHdpdGhcbiAgICAgICAgIHwgU29tZSAobGF6eSB0MSkgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgdDEsIE5hbWVkIChfLCByMikgLT5cbiAgICAgICAgKG1hdGNoIHIyIHdpdGhcbiAgICAgICAgIHwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgSW50LCBJbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgSW50MzIsIEludDMyIC0+IFNvbWUgRS5UXG4gICAgICB8IEludDY0LCBJbnQ2NCAtPiBTb21lIEUuVFxuICAgICAgfCBOYXRpdmVpbnQsIE5hdGl2ZWludCAtPiBTb21lIEUuVFxuICAgICAgfCBDaGFyLCBDaGFyIC0+IFNvbWUgRS5UXG4gICAgICB8IEZsb2F0LCBGbG9hdCAtPiBTb21lIEUuVFxuICAgICAgfCBTdHJpbmcsIFN0cmluZyAtPiBTb21lIEUuVFxuICAgICAgfCBCeXRlcywgQnl0ZXMgLT4gU29tZSBFLlRcbiAgICAgIHwgQm9vbCwgQm9vbCAtPiBTb21lIEUuVFxuICAgICAgfCBVbml0LCBVbml0IC0+IFNvbWUgRS5UXG4gICAgICB8IE9wdGlvbiByMSwgT3B0aW9uIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IExpc3QgcjEsIExpc3QgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgQXJyYXkgcjEsIEFycmF5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IExhenkgcjEsIExhenkgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgUmVmIHIxLCBSZWYgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgRnVuY3Rpb24gKGRvbTEsIHJuZzEpLCBGdW5jdGlvbiAoZG9tMiwgcm5nMikgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBkb20xIGRvbTIsIHNhbWVfd2l0bmVzcyBybmcxIHJuZzIgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgVHVwbGUgdDEsIFR1cGxlIHQyIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9IFR5cGVyZXAuVHVwbGUgaW5cbiAgICAgICAgKG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICB8IFQuVDIgKGExLCBiMSksIFQuVDIgKGEyLCBiMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDMgKGExLCBiMSwgYzEpLCBULlQzIChhMiwgYjIsIGMyKSAtPlxuICAgICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXyB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDQgKGExLCBiMSwgYzEsIGQxKSwgVC5UNCAoYTIsIGIyLCBjMiwgZDIpIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiwgc2FtZV93aXRuZXNzIGMxIGMyLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXyB8IF8sIE5vbmUsIF8sIF8gfCBfLCBfLCBOb25lLCBfIHwgXywgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ1IChhMSwgYjEsIGMxLCBkMSwgZTEpLCBULlQ1IChhMiwgYjIsIGMyLCBkMiwgZTIpIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAoIHNhbWVfd2l0bmVzcyBhMSBhMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBiMSBiMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBjMSBjMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBkMSBkMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBlMSBlMiApXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIE5vbmUsIF8sIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgTm9uZSwgXywgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBOb25lLCBfXG4gICAgICAgICAgICB8IF8sIF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UMiBfLCBfIC0+IE5vbmVcbiAgICAgICAgIHwgVC5UMyBfLCBfIC0+IE5vbmVcbiAgICAgICAgIHwgVC5UNCBfLCBfIC0+IE5vbmVcbiAgICAgICAgIHwgVC5UNSBfLCBfIC0+IE5vbmUpXG4gICAgICB8IFJlY29yZCByMSwgUmVjb3JkIHIyIC0+XG4gICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc1xuICAgICAgICAgIChUeXBlcmVwLlJlY29yZC50eXBlbmFtZV9vZl90IHIxKVxuICAgICAgICAgIChUeXBlcmVwLlJlY29yZC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBWYXJpYW50IHIxLCBWYXJpYW50IHIyIC0+XG4gICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc1xuICAgICAgICAgIChUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjIpXG4gICAgICB8IEludCwgXyAtPiBOb25lXG4gICAgICB8IEludDMyLCBfIC0+IE5vbmVcbiAgICAgIHwgSW50NjQsIF8gLT4gTm9uZVxuICAgICAgfCBOYXRpdmVpbnQsIF8gLT4gTm9uZVxuICAgICAgfCBDaGFyLCBfIC0+IE5vbmVcbiAgICAgIHwgRmxvYXQsIF8gLT4gTm9uZVxuICAgICAgfCBTdHJpbmcsIF8gLT4gTm9uZVxuICAgICAgfCBCeXRlcywgXyAtPiBOb25lXG4gICAgICB8IEJvb2wsIF8gLT4gTm9uZVxuICAgICAgfCBVbml0LCBfIC0+IE5vbmVcbiAgICAgIHwgT3B0aW9uIF8sIF8gLT4gTm9uZVxuICAgICAgfCBMaXN0IF8sIF8gLT4gTm9uZVxuICAgICAgfCBBcnJheSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGF6eSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgUmVmIF8sIF8gLT4gTm9uZVxuICAgICAgfCBGdW5jdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgVHVwbGUgXywgXyAtPiBOb25lXG4gICAgICB8IFJlY29yZCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgVmFyaWFudCBfLCBfIC0+IE5vbmVcbiAgOztcblxuICBsZXQgc2FtZSBhIGIgPSBzYW1lX3dpdG5lc3MgYSBiIDw+IE5vbmVcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biBhIGIgPVxuICAgIG1hdGNoIHNhbWVfd2l0bmVzcyBhIGIgd2l0aFxuICAgIHwgU29tZSBwcm9vZiAtPiBwcm9vZlxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgcmVjIGhlYWQgPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZCAoXywgU29tZSAobGF6eSB0KSkgLT4gaGVhZCB0XG4gICAgfCB0IC0+IHRcbiAgOztcbmVuZFxuXG5sZXQgdHlwZXJlcF9vZl9pbnQgPSBUeXBlcmVwLkludFxubGV0IHR5cGVyZXBfb2ZfaW50MzIgPSBUeXBlcmVwLkludDMyXG5sZXQgdHlwZXJlcF9vZl9pbnQ2NCA9IFR5cGVyZXAuSW50NjRcbmxldCB0eXBlcmVwX29mX25hdGl2ZWludCA9IFR5cGVyZXAuTmF0aXZlaW50XG5sZXQgdHlwZXJlcF9vZl9jaGFyID0gVHlwZXJlcC5DaGFyXG5sZXQgdHlwZXJlcF9vZl9mbG9hdCA9IFR5cGVyZXAuRmxvYXRcbmxldCB0eXBlcmVwX29mX3N0cmluZyA9IFR5cGVyZXAuU3RyaW5nXG5sZXQgdHlwZXJlcF9vZl9ieXRlcyA9IFR5cGVyZXAuQnl0ZXNcbmxldCB0eXBlcmVwX29mX2Jvb2wgPSBUeXBlcmVwLkJvb2xcbmxldCB0eXBlcmVwX29mX3VuaXQgPSBUeXBlcmVwLlVuaXRcbmxldCB0eXBlcmVwX29mX29wdGlvbiByZXAgPSBUeXBlcmVwLk9wdGlvbiByZXBcbmxldCB0eXBlcmVwX29mX2xpc3QgcmVwID0gVHlwZXJlcC5MaXN0IHJlcFxubGV0IHR5cGVyZXBfb2ZfYXJyYXkgcmVwID0gVHlwZXJlcC5BcnJheSByZXBcbmxldCB0eXBlcmVwX29mX2xhenlfdCByZXAgPSBUeXBlcmVwLkxhenkgcmVwXG5sZXQgdHlwZXJlcF9vZl9yZWYgcmVwID0gVHlwZXJlcC5SZWYgcmVwXG5sZXQgdHlwZXJlcF9vZl9mdW5jdGlvbiBkb20gcm5nID0gVHlwZXJlcC5GdW5jdGlvbiAoZG9tLCBybmcpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTAgPSBUeXBlcmVwLlVuaXRcbmxldCB0eXBlcmVwX29mX3R1cGxlMiBhIGIgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQyIChhLCBiKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlMyBhIGIgYyA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDMgKGEsIGIsIGMpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGU0IGEgYiBjIGQgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQ0IChhLCBiLCBjLCBkKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNSBhIGIgYyBkIGUgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQ1IChhLCBiLCBjLCBkLCBlKSlcblxuaW5jbHVkZSBOYW1lX29mXG5cbmxldCB2YWx1ZV90dXBsZTAgPSAoKVxuXG5sZXQgdHlwZXJlcF9vZl9pbnQ2MywgdHlwZW5hbWVfb2ZfaW50NjMgPVxuICBsZXQgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwclxuICAgIDogdHlwZSBhIGIuIChhLCBiKSBCYXNlLkludDYzLlByaXZhdGUuUmVwci50IC0+IGEgVHlwZXJlcC50ICogYSBUeXBlbmFtZS50XG4gICAgPSBmdW5jdGlvblxuICAgICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQgLT4gdHlwZXJlcF9vZl9pbnQsIHR5cGVuYW1lX29mX2ludFxuICAgICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQ2NCAtPiB0eXBlcmVwX29mX2ludDY0LCB0eXBlbmFtZV9vZl9pbnQ2NFxuICBpblxuICB0eXBlcmVwX2FuZF90eXBlbmFtZV9vZl9pbnQ2M19yZXByIEJhc2UuSW50NjMuUHJpdmF0ZS5yZXByXG47O1xuIiwiKCogdXNpbmcgdGhlIGhhc2hfdmFyaWFudCBvZiBwYV90eXBlX2NvbnYgYXQgY29tcGlsZSB0aW1lICopXG5sZXQgcmVwcl9vZl9wb2x5X3ZhcmlhbnQgOiBbPiBdIC0+IGludCA9XG4gIGZ1biB2YXJpYW50IC0+XG4gIGxldCBvYmogPSBPYmoucmVwciB2YXJpYW50IGluXG4gIGlmIE9iai5pc19pbnQgb2JqXG4gIHRoZW4gT2JqLm9iaiBvYmpcbiAgZWxzZSAoXG4gICAgbGV0IHNpemUgPSBPYmouc2l6ZSBvYmogaW5cbiAgICBhc3NlcnQgKHNpemUgPSAyKTtcbiAgICBsZXQgcmVwciA9IE9iai5maWVsZCBvYmogMCBpblxuICAgIGFzc2VydCAoT2JqLmlzX2ludCByZXByKTtcbiAgICBPYmoub2JqIHJlcHIpXG47O1xuXG5sZXQgaGFzaF92YXJpYW50IHMgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAoMjIzICogIWFjY3UpICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoKDEgbHNsIDMxKSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1XG47O1xuXG4oKiBhIGZldyB1bml0IHRlc3RzIG9mIGNhc2VzIHRoYXQgaGF2ZSB0cmlnZ2VyZWQgZGlmZnMgaW4gdGhlIHBhc3Qgb2YgdGhpc1xuICAgbGliICopXG5sZXQgKCkgPSBhc3NlcnQgKHJlcHJfb2ZfcG9seV92YXJpYW50IGBMYXRlbmN5X3N0YXRzID0gaGFzaF92YXJpYW50IFwiTGF0ZW5jeV9zdGF0c1wiKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgemVybyA9IGhhc2hfdmFyaWFudCBcInplcm9cIilcbmxldCBkb3VibGVfYXJyYXlfdmFsdWUgPSBPYmoubWFnaWMgMC5cbmxldCBoYXNfZG91YmxlX2FycmF5X3RhZyBhID0gT2JqLmRvdWJsZV9hcnJheV90YWcgPSBPYmoudGFnIChPYmoucmVwciBhKVxuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIGRvdWJsZSA9XG4gICAgICB7IGEgOiBmbG9hdFxuICAgICAgOyBiIDogZmxvYXRcbiAgICAgIH1cblxuICAgIHR5cGUgc2ltcGxlID1cbiAgICAgIHsgYyA6IGZsb2F0XG4gICAgICA7IGQgOiBpbnRcbiAgICAgIH1cblxuICAgIGxldCBkb3VibGUgPSB7IGEgPSBkb3VibGVfYXJyYXlfdmFsdWU7IGIgPSBkb3VibGVfYXJyYXlfdmFsdWUgfVxuICAgIGxldCBzaW1wbGUgPSB7IGMgPSBkb3VibGVfYXJyYXlfdmFsdWU7IGQgPSBkb3VibGVfYXJyYXlfdmFsdWUgfVxuICBlbmRcbiAgaW5cbiAgYXNzZXJ0IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLmRvdWJsZSk7XG4gIGFzc2VydCAobm90IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLnNpbXBsZSkpXG47O1xuIiwibW9kdWxlIE0gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2EgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICgnYSwgJ2IpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gKCdhLCAnYiwgJ2MpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gJ2QgWC50IC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIFgudFxuICAgICAgLT4gJ2IgWC50XG4gICAgICAtPiAnYyBYLnRcbiAgICAgIC0+ICdkIFgudFxuICAgICAgLT4gJ2UgWC50XG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IFgudFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgTSAoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYgPSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZlxuXG5tb2R1bGUgSGVscGVyIChBIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgKEIgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSA9IHN0cnVjdFxuICB0eXBlIG1hcCA9IHsgbWFwIDogJ2EuICdhIEEudCAtPiAnYSBCLnQgfVxuXG4gIGxldCBtYXBfdmFyaWFudCAodHlwZSB2YXJpYW50KSB7IG1hcCB9ICh2YXJpYW50IDogdmFyaWFudCBBLlZhcmlhbnQudCkgPVxuICAgIGxldCBtYXBfY3JlYXRlID0gZnVuY3Rpb25cbiAgICAgIHwgQS5UYWcuQXJncyBmY3QgLT4gQi5UYWdfaW50ZXJuYWwuQXJncyBmY3RcbiAgICAgIHwgQS5UYWcuQ29uc3QgayAtPiBCLlRhZ19pbnRlcm5hbC5Db25zdCBrXG4gICAgaW5cbiAgICBsZXQgbWFwX3RhZyB0YWcgPVxuICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlRhZyB0YWcgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5UYWcubGFiZWwgdGFnIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuVGFnLnRyYXZlcnNlIHRhZykgaW5cbiAgICAgICAgbGV0IGFyaXR5ID0gQS5UYWcuYXJpdHkgdGFnIGluXG4gICAgICAgIGxldCBhcmdzX2xhYmVscyA9IEEuVGFnLmFyZ3NfbGFiZWxzIHRhZyBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLlRhZy5pbmRleCB0YWcgaW5cbiAgICAgICAgbGV0IG9jYW1sX3JlcHIgPSBBLlRhZy5vY2FtbF9yZXByIHRhZyBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuVGFnLnR5aWQgdGFnIGluXG4gICAgICAgIGxldCBjcmVhdGUgPSBtYXBfY3JlYXRlIChBLlRhZy5jcmVhdGUgdGFnKSBpblxuICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVGFnXG4gICAgICAgICAgKEIuVGFnLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLlRhZ19pbnRlcm5hbC5sYWJlbFxuICAgICAgICAgICAgIDsgcmVwXG4gICAgICAgICAgICAgOyBhcml0eVxuICAgICAgICAgICAgIDsgYXJnc19sYWJlbHNcbiAgICAgICAgICAgICA7IGluZGV4XG4gICAgICAgICAgICAgOyBvY2FtbF9yZXByXG4gICAgICAgICAgICAgOyB0eWlkXG4gICAgICAgICAgICAgOyBjcmVhdGVcbiAgICAgICAgICAgICB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5WYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCBpblxuICAgIGxldCBwb2x5bW9ycGhpYyA9IEEuVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50IGluXG4gICAgbGV0IHRhZ3MgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5WYXJpYW50Lmxlbmd0aCB2YXJpYW50KSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF90YWcgKEEuVmFyaWFudC50YWcgdmFyaWFudCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgdmFsdWUgKGEgOiB2YXJpYW50KSA9XG4gICAgICBtYXRjaCBBLlZhcmlhbnQudmFsdWUgdmFyaWFudCBhIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlZhbHVlIChhdGFnLCBhKSAtPlxuICAgICAgICAoZnVuICh0eXBlIGFyZ3MpIChhdGFnIDogKHZhcmlhbnQsIGFyZ3MpIEEuVGFnLnQpIChhIDogYXJncykgLT5cbiAgICAgICAgICAgbGV0IChCLlZhcmlhbnRfaW50ZXJuYWwuVGFnIGJ0YWcpID0gdGFncy4oQS5UYWcuaW5kZXggYXRhZykgaW5cbiAgICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJ0YWcgOiAodmFyaWFudCwgZXgpIEIuVGFnLnQpIC0+XG4gICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuVGFnLnR5aWQgYXRhZykgKEIuVGFnLnR5aWQgYnRhZylcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGJ0YWcgPSAoYnRhZyA6ICh2YXJpYW50LCBhcmdzKSBCLlRhZy50KSBpblxuICAgICAgICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVmFsdWUgKGJ0YWcsIGEpKVxuICAgICAgICAgICAgIGJ0YWcpXG4gICAgICAgICAgYXRhZ1xuICAgICAgICAgIGFcbiAgICBpblxuICAgIEIuVmFyaWFudC5pbnRlcm5hbF91c2Vfb25seSB7IEIuVmFyaWFudF9pbnRlcm5hbC50eXBlbmFtZTsgdGFnczsgcG9seW1vcnBoaWM7IHZhbHVlIH1cbiAgOztcblxuICBsZXQgbWFwX3JlY29yZCAodHlwZSByZWNvcmQpIHsgbWFwIH0gKHJlY29yZCA6IHJlY29yZCBBLlJlY29yZC50KSA9XG4gICAgbGV0IG1hcF9maWVsZCBmaWVsZCA9XG4gICAgICBtYXRjaCBmaWVsZCB3aXRoXG4gICAgICB8IEEuUmVjb3JkLkZpZWxkIGZpZWxkIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuRmllbGQubGFiZWwgZmllbGQgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5GaWVsZC50cmF2ZXJzZSBmaWVsZCkgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5GaWVsZC5pbmRleCBmaWVsZCBpblxuICAgICAgICBsZXQgaXNfbXV0YWJsZSA9IEEuRmllbGQuaXNfbXV0YWJsZSBmaWVsZCBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuRmllbGQudHlpZCBmaWVsZCBpblxuICAgICAgICBsZXQgZ2V0ID0gQS5GaWVsZC5nZXQgZmllbGQgaW5cbiAgICAgICAgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGRcbiAgICAgICAgICAoQi5GaWVsZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5GaWVsZF9pbnRlcm5hbC5sYWJlbDsgcmVwOyBpbmRleDsgaXNfbXV0YWJsZTsgdHlpZDsgZ2V0IH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlJlY29yZC50eXBlbmFtZV9vZl90IHJlY29yZCBpblxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyA9IEEuUmVjb3JkLmhhc19kb3VibGVfYXJyYXlfdGFnIHJlY29yZCBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5SZWNvcmQubGVuZ3RoIHJlY29yZCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfZmllbGQgKEEuUmVjb3JkLmZpZWxkIHJlY29yZCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgY3JlYXRlIHsgQi5SZWNvcmRfaW50ZXJuYWwuZ2V0IH0gPVxuICAgICAgbGV0IGdldCAodHlwZSBhKSAoYWZpZWxkIDogKF8sIGEpIEEuRmllbGQudCkgPVxuICAgICAgICBtYXRjaCBmaWVsZHMuKEEuRmllbGQuaW5kZXggYWZpZWxkKSB3aXRoXG4gICAgICAgIHwgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGQgYmZpZWxkIC0+XG4gICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJmaWVsZCA6IChyZWNvcmQsIGV4KSBCLkZpZWxkLnQpIC0+XG4gICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLkZpZWxkLnR5aWQgYWZpZWxkKSAoQi5GaWVsZC50eWlkIGJmaWVsZClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBiZmllbGQgPSAoYmZpZWxkIDogKHJlY29yZCwgYSkgQi5GaWVsZC50KSBpblxuICAgICAgICAgICAgIGdldCBiZmllbGQpXG4gICAgICAgICAgICBiZmllbGRcbiAgICAgIGluXG4gICAgICBBLlJlY29yZC5jcmVhdGUgcmVjb3JkIHsgQS5SZWNvcmQuZ2V0IH1cbiAgICBpblxuICAgIEIuUmVjb3JkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICB7IEIuUmVjb3JkX2ludGVybmFsLnR5cGVuYW1lOyBmaWVsZHM7IGhhc19kb3VibGVfYXJyYXlfdGFnOyBjcmVhdGUgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIE5hbWVkID0gc2lnXG4gIHR5cGUgJ2EgY29tcHV0YXRpb25cblxuICBtb2R1bGUgQ29udGV4dCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICBlbmRcblxuICB0eXBlICdhIHRcblxuICB2YWwgaW5pdCA6IENvbnRleHQudCAtPiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIGdldF93aXBfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzZXRfZmluYWxfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzaGFyZSA6IF8gVHlwZXJlcC50IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wdXRhdGlvbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBpbnQgOiBpbnQgdFxuICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgdmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gIHZhbCBjaGFyIDogY2hhciB0XG4gIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gIHZhbCBieXRlcyA6IGJ5dGVzIHRcbiAgdmFsIGJvb2wgOiBib29sIHRcbiAgdmFsIHVuaXQgOiB1bml0IHRcbiAgdmFsIG9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgdmFsIGxpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICB2YWwgYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgdmFsIGxhenlfdCA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgdmFsIHJlZl8gOiAnYSB0IC0+ICdhIHJlZiB0XG4gIHZhbCBmdW5jdGlvbl8gOiAnYSB0IC0+ICdiIHQgLT4gKCdhIC0+ICdiKSB0XG4gIHZhbCB0dXBsZTIgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHR1cGxlMyA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICgnYSAqICdiICogJ2MpIHRcbiAgdmFsIHR1cGxlNCA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gIHZhbCB0dXBsZTUgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICdlIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcbiAgdmFsIHJlY29yZCA6ICdhIFJlY29yZC50IC0+ICdhIHRcbiAgdmFsIHZhcmlhbnQgOiAnYSBWYXJpYW50LnQgLT4gJ2EgdFxuXG4gIG1vZHVsZSBOYW1lZCA6IE5hbWVkIHdpdGggdHlwZSAnYSBjb21wdXRhdGlvbiA6PSAnYSB0XG5lbmRcblxuKCogc3BlY2lhbCBmdW5jdG9yIGFwcGxpY2F0aW9uIGZvciBjb21wdXRhdGlvbiBhcyBjbG9zdXJlIG9mIHRoZSBmb3JtIFthIC0+IGJdICopXG5tb2R1bGUgTWFrZV9uYW1lZF9mb3JfY2xvc3VyZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgaW5wdXRcbiAgICB0eXBlICdhIG91dHB1dFxuICAgIHR5cGUgJ2EgdCA9ICdhIGlucHV0IC0+ICdhIG91dHB1dFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHVuaXRcblxuICAgIGxldCBjcmVhdGUgPSBpZ25vcmVcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnRcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlIDogJ2EgWC50IHJlZlxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnQgb3B0aW9uIHJlZlxuICAgIH1cblxuICBleGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZ1xuXG4gIGxldCBpbml0ICgpIG5hbWUgPVxuICAgIGxldCBwYXRoID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCBuYW1lKSBpblxuICAgIGxldCByID0gcmVmIChmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkIHBhdGgpKSBpblxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA9IChmdW4gaW5wdXQgLT4gIXIgaW5wdXQpXG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA9IHJcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gcmVmIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gc2hhcmVkID1cbiAgICBtYXRjaCBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBjbG9zIC0+IGNsb3NcbiAgICB8IE5vbmUgLT4gc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2VcbiAgOztcblxuICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHNoYXJlZCBjb21wdXRhdGlvbiA9XG4gICAgbGV0IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIGluXG4gICAgbWF0Y2ggY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBfIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgQmFzZS5waHlzX2VxdWFsIHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlIGNvbXB1dGF0aW9uIHRoZW4gYXNzZXJ0IGZhbHNlO1xuICAgICAgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOj0gU29tZSBjb21wdXRhdGlvbjtcbiAgICAgIHNoYXJlZC5ydW50aW1lX3JlZmVyZW5jZSA6PSBjb21wdXRhdGlvbjtcbiAgICAgIGNvbXB1dGF0aW9uXG4gIDs7XG5cbiAgbGV0IHNoYXJlIF8gPSB0cnVlXG5lbmRcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogc3RyaW5nXG4gICAgOyBpbXBsZW1lbnRzIDogVHlwZW5hbWUuVWlkLnQgLT4gYm9vbFxuICAgIH1cblxuICBleGNlcHRpb24gQnJva2VuX2RlcGVuZGVuY3kgb2Ygc3RyaW5nXG5cbiAgbGV0IGNoZWNrX2RlcGVuZGVuY2llcyBuYW1lIHJlcXVpcmVkID1cbiAgICBtYXRjaCByZXF1aXJlZCB3aXRoXG4gICAgfCBbXSAtPiBmdW4gXyAtPiAoKVxuICAgIHwgXyAtPlxuICAgICAgZnVuIHVpZCAtPlxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIHsgbmFtZSA9IG5hbWUnOyBpbXBsZW1lbnRzIH0gLT5cbiAgICAgICAgICAgICBpZiBub3QgKGltcGxlbWVudHMgdWlkKVxuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgKCogc29tZXRoaW5nIGlzIHdyb25nIHdpdGggdGhlIHNldCB1cCwgdGhpcyBpcyBhbiBlcnJvciBkdXJpbmcgdGhlXG4gICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgcHJvZ3JhbSwgd2UgcmF0aGVyIGZhaWwgd2l0aCBhIGh1bWFuXG4gICAgICAgICAgICAgICAgICByZWFkYWJsZSBvdXRwdXQgKilcbiAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIlR5cGVfZ2VuZXJpYyAlUyByZXF1aXJlcyAlUyBmb3IgdWlkICVTXFxuXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgbmFtZSdcbiAgICAgICAgICAgICAgICAgICAoVHlwZW5hbWUuVWlkLm5hbWUgdWlkKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHByZXJyX2VuZGxpbmUgbWVzc2FnZTtcbiAgICAgICAgICAgICAgIHJhaXNlIChCcm9rZW5fZGVwZW5kZW5jeSBtZXNzYWdlKSkpXG4gICAgICAgICAgcmVxdWlyZWRcbiAgOztcbmVuZFxuXG4oKiBFeHRlbmRpbmcgYW4gZXhpc3RpbmcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgRXh0ZW5kaW5nID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIHZhbCBpZGVudCA6IElkZW50LnRcblxuICAoKiBnZW5lcmljX2lkZW50ICogdHlwZW5hbWUgb3IgaW5mbyAqKVxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2IgY29tcHV0YXRpb24gLT4gKCdhLCAnYikgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZSBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICB2YWwgcmVnaXN0ZXIwIDogKG1vZHVsZSBTKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjEgOiAobW9kdWxlIFMxKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjIgOiAobW9kdWxlIFMyKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjMgOiAobW9kdWxlIFMzKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjQgOiAobW9kdWxlIFM0KSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjUgOiAobW9kdWxlIFM1KSAtPiB1bml0XG5cbiAgKCogc3BlY2lhbCBsZXNzIHNjYXJ5IHR5cGUgd2hlbiB0aGUgdHlwZSBoYXMgbm8gcGFyYW1ldGVycyAqKVxuICB2YWwgcmVnaXN0ZXIgOiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gLT4gdW5pdFxuXG4gICgqXG4gICAgIEVzc2VudGlhbGx5IGJlY2F1c2Ugd2UgY2Fubm90IHRhbGsgYWJvdXQgYSB2YXJpYWJsZSBvZiBraW5kICogLT4ga1xuICAgICB2YWwgcmVnaXN0ZXIxIDogJ2EgJ3QgVHlwZXJlcC50IC0+ICgnYSBjb21wdXRhdGlvbiAtPiAnYSAndCBjb21wdXRhdGlvbikgLT4gdW5pdFxuICAgICAuLi5cbiAgKilcbmVuZFxuXG4oKiBJbXBsZW1lbnRpbmcgYSBuZXcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgU19pbXBsZW1lbnRhdGlvbiA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gICgqIHJhaXNlIHVzaW5nIHRoZSBjdXJyZW50IGlkZW50ICopXG4gIHZhbCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgOiBzdHJpbmcgLT4gJ2FcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgKCpcbiAgICAgU3RhbmRhcmQgY2FzZSwgZmluZCBhIGV4dGVuZGVkX2ltcGxlbWVudGF0aW9uLCBvciBsb29rIGluIHRoZSBjb250ZW50XG4gICopXG4gIHZhbCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIFR5cGVyZXAudCBsYXp5X3Qgb3B0aW9uXG4gICAgLT4gJ2EgY29tcHV0YXRpb25cblxuICAoKlxuICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgbW9yZSBjb250cm9sIG9uIHdoYXQgeW91IHdhbnQgdG8gZG9cbiAgKilcbiAgdmFsIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIGNvbXB1dGF0aW9uIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICB2YWwgb2ZfdHlwZXJlcCA6ICdhIFR5cGVyZXAudCAtPiBbIGBnZW5lcmljIG9mICdhIGNvbXB1dGF0aW9uIF1cblxuICBtb2R1bGUgQ29tcHV0YXRpb24gOiBDb21wdXRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCByZXF1aXJlZCA6IElkZW50LnQgbGlzdFxuICBlbmQpIDogU19pbXBsZW1lbnRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIFgudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYLnRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpY19pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5cbiAgKCogd2UgZG8gbm90IHVzZSBjb3JlIHNpbmNlIHdlIGFyZSBlYXJsaWVyIGluIHRoZSBkZXBlbmRlbmNpZXMgZ3JhcGggKilcbiAgbW9kdWxlIFVpZF90YWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSGFzaHRibC5NYWtlIChUeXBlbmFtZS5VaWQpXG5cbiAgICBsZXQgZmluZCB0YWJsZSBrZXkgPVxuICAgICAgaWYgTGF6eS5pc192YWwgdGFibGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGFibGUgPSBMYXp5LmZvcmNlIHRhYmxlIGluXG4gICAgICAgIHRyeSBTb21lIChmaW5kIHRhYmxlIGtleSkgd2l0aFxuICAgICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICBlbHNlIE5vbmVcbiAgICA7O1xuXG4gICAgbGV0IGNoZWNrX2RlcGVuZGVuY2llcyA9IElkZW50LmNoZWNrX2RlcGVuZGVuY2llcyBYLm5hbWUgWC5yZXF1aXJlZFxuXG4gICAgbGV0IHJlcGxhY2UgdGFibGUga2V5IHZhbHVlID1cbiAgICAgIGNoZWNrX2RlcGVuZGVuY2llcyBrZXk7XG4gICAgICByZXBsYWNlIChMYXp5LmZvcmNlIHRhYmxlKSBrZXkgdmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IG1lbSB0YWJsZSBrZXkgPVxuICAgICAgaWYgTGF6eS5pc192YWwgdGFibGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGFibGUgPSBMYXp5LmZvcmNlIHRhYmxlIGluXG4gICAgICAgIG1lbSB0YWJsZSBrZXkpXG4gICAgICBlbHNlIGZhbHNlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpemUgPSAyNTZcbiAgbGV0IHRhYmxlMCA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlMSA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlMiA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlMyA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlNCA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlNSA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcblxuICBsZXQgaXNfcmVnaXN0ZXJlZCB1aWQgPVxuICAgIFVpZF90YWJsZS5tZW0gdGFibGUwIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGUxIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGUyIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGUzIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGU0IHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGU1IHVpZFxuICA7O1xuXG4gIGxldCBpZGVudCA9IHsgSWRlbnQubmFtZSA9IFgubmFtZTsgaW1wbGVtZW50cyA9IGlzX3JlZ2lzdGVyZWQgfVxuXG4gIG1vZHVsZSBGaW5kMCAoVCA6IFR5cGVyZXAuTmFtZWQuVDApIDogc2lnXG4gICAgdmFsIGNvbXB1dGUgOiB1bml0IC0+IFQubmFtZWQgY29tcHV0YXRpb24gb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMCAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTID0gKHZhbCByZXAgOiBTKSBpblxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gUy50eXBlbmFtZV9vZl90IFQudHlwZW5hbWVfb2ZfbmFtZWQgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IHdpdG5lc3MpIFMuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDEgKFQgOiBUeXBlcmVwLk5hbWVkLlQxKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUxIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCByZXAgOiBTMSkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzFcbiAgICAgICAgICAgIChTMSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSBULmEgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMiAoVCA6IFR5cGVyZXAuTmFtZWQuVDIpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IChULmEsIFQuYikgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMiAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgcmVwIDogUzIpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8yXG4gICAgICAgICAgICAoUzIpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMyLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQzIChUIDogVHlwZXJlcC5OYW1lZC5UMykgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUzIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMzID0gKHZhbCByZXAgOiBTMykgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzNcbiAgICAgICAgICAgIChTMylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gVC5jIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzMuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDQgKFQgOiBUeXBlcmVwLk5hbWVkLlQ0KSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlNCAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTNCA9ICh2YWwgcmVwIDogUzQpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl80XG4gICAgICAgICAgICAoUzQpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gKCdhLCAnYiwgJ2MsICdkKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFM0LmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ1IChUIDogVHlwZXJlcC5OYW1lZC5UNSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQsIFQuZSkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlNSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgcmVwIDogUzUpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl81XG4gICAgICAgICAgICAoUzUpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFM1LmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHVuaXQgPSBUeXBlbmFtZS5zdGF0aWNcblxuICBsZXQgcmVnaXN0ZXIwIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgY29tcHV0ZSA6IFMpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCBTLnR5cGVuYW1lX29mX3QgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTAgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIxIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzEgPSAodmFsIGNvbXB1dGUgOiBTMSkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMS50eXBlbmFtZV9vZl90IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUxIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMiBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMyID0gKHZhbCBjb21wdXRlIDogUzIpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzIudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUyIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMyBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMzID0gKHZhbCBjb21wdXRlIDogUzMpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzMudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTMgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXI0IGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIGNvbXB1dGUgOiBTNCkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTNC50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGU0IHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM1ID0gKHZhbCBjb21wdXRlIDogUzUpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzUudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGU1IHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyICh0eXBlIGEpIHR5cGVyZXBfb2ZfYSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwLnR5cGVuYW1lX29mX3QgdHlwZXJlcF9vZl9hXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gdHlwZXJlcF9vZl9hXG4gICAgICBsZXQgY29tcHV0ZSA9IGNvbXB1dGVcbiAgICBlbmRcbiAgICBpblxuICAgIHJlZ2lzdGVyMCAobW9kdWxlIFMgOiBTKVxuICA7O1xuXG4gICgqIElNUExFTUVOVEFUSU9OICopXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbiA9IHsgZ2VuZXJpYyA6ICdhLiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gfVxuXG4gIGxldCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uICh0eXBlIGEpIGF1eCA9IGZ1bmN0aW9uXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQwIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDAgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQxIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDEgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPSAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIDogVC5hIFQubmFtZWQgY29tcHV0YXRpb24pIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMiByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMiB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQyIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSAoYXV4LmdlbmVyaWMgVC5iKSA6IChULmEsIFQuYikgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMyByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQzIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSAoYXV4LmdlbmVyaWMgVC5iKSAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ0IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSAoYXV4LmdlbmVyaWMgVC5iKSAoYXV4LmdlbmVyaWMgVC5jKSAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQ1IHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDUgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmEpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmIpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmMpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmQpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmUpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jLCBULmQsIFQuZSkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbGV0IHJhaXNlX25vdF9pbXBsZW1lbnRlZCBzdHJpbmcgPSByYWlzZSAoTm90X2ltcGxlbWVudGVkIChYLm5hbWUsIHN0cmluZykpXG5cbiAgbGV0IF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiBhdXggcmVwIGNvbnRlbnQgPVxuICAgIG1hdGNoIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCB3aXRoXG4gICAgfCBTb21lIGNvbXB1dGF0aW9uIC0+IGNvbXB1dGF0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+IGF1eC5nZW5lcmljIGNvbnRlbnRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCB0eXBlbmFtZSA9IFR5cGVyZXAuTmFtZWQudHlwZW5hbWVfb2ZfdCByZXAgaW5cbiAgICAgICAgIGxldCBuYW1lID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCB0eXBlbmFtZSkgaW5cbiAgICAgICAgIHJhaXNlX25vdF9pbXBsZW1lbnRlZCBuYW1lKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBfID0gSGFzaHRibC5NYWtlIChUeXBlbmFtZS5LZXkpXG5cbm1vZHVsZSBNYWtlIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCByZXF1aXJlZCA6IElkZW50LnQgbGlzdFxuXG4gICAgaW5jbHVkZSBDb21wdXRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb21wdXRhdGlvbiA9IFhcbiAgaW5jbHVkZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFgpXG5cbiAgbW9kdWxlIE1lbW8gPSBUeXBlbmFtZS5UYWJsZSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBYLk5hbWVkLnRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhlbHBlciA9IEhlbHBlciAoVHlwZXJlcCkgKENvbXB1dGF0aW9uKVxuXG4gIGxldCBvZl90eXBlcmVwIHJlcCA9XG4gICAgbGV0IGNvbnRleHQgPSBYLk5hbWVkLkNvbnRleHQuY3JlYXRlICgpIGluXG4gICAgbGV0IG1lbW9fdGFibGUgPSBNZW1vLmNyZWF0ZSAzMiBpblxuICAgIGxldCByZWMgb2ZfdHlwZXJlcCA6IHR5cGUgYS4gYSBUeXBlcmVwLnQgLT4gYSB0ID0gZnVuY3Rpb25cbiAgICAgIHwgVHlwZXJlcC5JbnQgLT4gWC5pbnRcbiAgICAgIHwgVHlwZXJlcC5JbnQzMiAtPiBYLmludDMyXG4gICAgICB8IFR5cGVyZXAuSW50NjQgLT4gWC5pbnQ2NFxuICAgICAgfCBUeXBlcmVwLk5hdGl2ZWludCAtPiBYLm5hdGl2ZWludFxuICAgICAgfCBUeXBlcmVwLkNoYXIgLT4gWC5jaGFyXG4gICAgICB8IFR5cGVyZXAuRmxvYXQgLT4gWC5mbG9hdFxuICAgICAgfCBUeXBlcmVwLlN0cmluZyAtPiBYLnN0cmluZ1xuICAgICAgfCBUeXBlcmVwLkJ5dGVzIC0+IFguYnl0ZXNcbiAgICAgIHwgVHlwZXJlcC5Cb29sIC0+IFguYm9vbFxuICAgICAgfCBUeXBlcmVwLlVuaXQgLT4gWC51bml0XG4gICAgICB8IFR5cGVyZXAuT3B0aW9uIHJlcCAtPiBYLm9wdGlvbiAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuTGlzdCByZXAgLT4gWC5saXN0IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5BcnJheSByZXAgLT4gWC5hcnJheSAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuTGF6eSByZXAgLT4gWC5sYXp5X3QgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLlJlZiByZXAgLT4gWC5yZWZfIChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5GdW5jdGlvbiAoZG9tLCBybmcpIC0+IFguZnVuY3Rpb25fIChvZl90eXBlcmVwIGRvbSkgKG9mX3R5cGVyZXAgcm5nKVxuICAgICAgfCBUeXBlcmVwLlR1cGxlIHR1cGxlIC0+XG4gICAgICAgICgqIGRvIE5PVCB3cml0ZSBbWC50dXBsZTIgKG9mX3R5cGVyZXAgYSkgKG9mX3R5cGVyZXAgYildXG4gICAgICAgICAgIGJlY2F1c2Ugb2ZfdHlwZXJlcCBjYW4gY29udGFpbiBhIHNpZGUgZWZmZWN0IGFuZCBbYV0gc2hvdWxkIGJlIGV4ZWN1dGVkXG4gICAgICAgICAgIGJlZm9yZSBbYl0gKilcbiAgICAgICAgKG1hdGNoIHR1cGxlIHdpdGhcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBYLnR1cGxlMiByYSByYlxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBYLnR1cGxlMyByYSByYiByY1xuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ0IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBsZXQgcmQgPSBvZl90eXBlcmVwIGQgaW5cbiAgICAgICAgICAgWC50dXBsZTQgcmEgcmIgcmMgcmRcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIGxldCByZSA9IG9mX3R5cGVyZXAgZSBpblxuICAgICAgICAgICBYLnR1cGxlNSByYSByYiByYyByZCByZSlcbiAgICAgIHwgVHlwZXJlcC5SZWNvcmQgcmVjb3JkIC0+XG4gICAgICAgIFgucmVjb3JkIChIZWxwZXIubWFwX3JlY29yZCB7IEhlbHBlci5tYXAgPSBvZl90eXBlcmVwIH0gcmVjb3JkKVxuICAgICAgfCBUeXBlcmVwLlZhcmlhbnQgdmFyaWFudCAtPlxuICAgICAgICBYLnZhcmlhbnQgKEhlbHBlci5tYXBfdmFyaWFudCB7IEhlbHBlci5tYXAgPSBvZl90eXBlcmVwIH0gdmFyaWFudClcbiAgICAgIHwgVHlwZXJlcC5OYW1lZCAobmFtZWQsIGNvbnRlbnQpIC0+XG4gICAgICAgIGxldCB0eXBlbmFtZSA9IFR5cGVyZXAuTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lZCBpblxuICAgICAgICAobWF0Y2ggTWVtby5maW5kIG1lbW9fdGFibGUgdHlwZW5hbWUgd2l0aFxuICAgICAgICAgfCBTb21lIHNoYXJlZCAtPiBYLk5hbWVkLmdldF93aXBfY29tcHV0YXRpb24gc2hhcmVkXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24geyBnZW5lcmljID0gb2ZfdHlwZXJlcCB9IG5hbWVkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjb250ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICAgICAgICAgIHJhaXNlX25vdF9pbXBsZW1lbnRlZCBuYW1lXG4gICAgICAgICAgICAgICB8IFNvbWUgKGxhenkgY29udGVudCkgLT5cbiAgICAgICAgICAgICAgICAgaWYgWC5OYW1lZC5zaGFyZSBjb250ZW50XG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBzaGFyZWQgPSBYLk5hbWVkLmluaXQgY29udGV4dCB0eXBlbmFtZSBpblxuICAgICAgICAgICAgICAgICAgIE1lbW8uc2V0IG1lbW9fdGFibGUgdHlwZW5hbWUgc2hhcmVkO1xuICAgICAgICAgICAgICAgICAgIGxldCBjb21wdXRhdGlvbiA9IG9mX3R5cGVyZXAgY29udGVudCBpblxuICAgICAgICAgICAgICAgICAgIFguTmFtZWQuc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHNoYXJlZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgICAgICAgZWxzZSBvZl90eXBlcmVwIGNvbnRlbnQpKSlcbiAgICBpblxuICAgIGxldCBjb21wdXRhdGlvbiA9IG9mX3R5cGVyZXAgcmVwIGluXG4gICAgYGdlbmVyaWMgY29tcHV0YXRpb25cbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UwIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgPVxuICAgIFR5cGVyZXAuTmFtZWQuVDBcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbmFtZWQgPSBYLnRcbiAgICAgICAgdHlwZSB0ID0gWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAgIHdpdGggdHlwZSB0ID0gWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMSAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxKSBvZl9wMSA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdCAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKSBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDFcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgbmFtZWQgPSAnYSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSB0ID0gcDEgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAgIHdpdGggdHlwZSB0ID0gcDEgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMiAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyKSBvZl9wMSBvZl9wMiA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDJcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWQgPSAoJ2EsICdiKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMikgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMikgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMyAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzKSBvZl9wMSBvZl9wMiBvZl9wMyA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDNcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkID0gKCdhLCAnYiwgJ2MpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMykgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTQgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ0XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgPSAoJ2EsICdiLCAnYywgJ2QpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIGQgPSBwNFxuXG4gICAgICAgIGxldCBkID0gb2ZfcDRcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCkgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlNSAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzIHA0IHA1KSBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCBvZl9wNSA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNClcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNSlcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDVcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSBlID0gcDVcblxuICAgICAgICBsZXQgZSA9IG9mX3A1XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0LCBwNSkgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0LCBwNSkgWC50KVxuICA7O1xuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA6IFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA6IFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgOiBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBYLnQgPVxuc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMiAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA6XG4gIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMyAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMywgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA6XG4gIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA6XG4gIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCBvZl9wNSA9XG4gICAgVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCBvZl9wNSwgTm9uZSlcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgTmFtZSA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHJlbGF0aXZlX3RvIDogZGlyOnN0cmluZyAtPiB0IC0+IHN0cmluZ1xuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IHJlbGF0aXZlX3RvIH5kaXIgdCA9XG4gICAgaWYgbm90IChTdGRsaWIuRmlsZW5hbWUuaXNfcmVsYXRpdmUgdCkgdGhlbiB0IGVsc2UgU3RkbGliLkZpbGVuYW1lLmNvbmNhdCBkaXIgdFxuICA7O1xuZW5kXG5cbmxldCBpbml0aWFsX2RpciA9XG4gIGxldCBkaXJfb3JfZXJyb3IgPVxuICAgIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0Y3dkICgpIHdpdGhcbiAgICB8IHYgLT4gYE9rIHZcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gYEV4biBleG5cbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggZGlyX29yX2Vycm9yIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBFeG4gZXhuIC0+IHJhaXNlIGV4blxuOztcblxubW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZmlsZW5hbWUgOiBOYW1lLnRcbiAgICAgIDsgbGluZV9udW1iZXIgOiBpbnRcbiAgICAgIDsgbGluZV9zdGFydCA6IGludFxuICAgICAgOyBzdGFydF9wb3MgOiBpbnRcbiAgICAgIDsgZW5kX3BvcyA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gICAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgICAobGV0IGVycm9yX3NvdXJjZV9fMDI0XyA9IFwiZmlsZS5tbC5Mb2NhdGlvbi5ULnRcIiBpblxuICAgICAgIGZ1bmN0aW9uXG4gICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgZmllbGRfc2V4cHNfXzAwM18gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgICAgbGV0IGZpbGVuYW1lX18wMDRfID0gU3RkbGliLnJlZiBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgIGFuZCBsaW5lX251bWJlcl9fMDA2XyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgbGluZV9zdGFydF9fMDA4XyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgc3RhcnRfcG9zX18wMTBfID0gU3RkbGliLnJlZiBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgIGFuZCBlbmRfcG9zX18wMTJfID0gU3RkbGliLnJlZiBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgIGFuZCBkdXBsaWNhdGVzX18wMTRfID0gU3RkbGliLnJlZiBbXVxuICAgICAgICAgYW5kIGV4dHJhX18wMTVfID0gU3RkbGliLnJlZiBbXSBpblxuICAgICAgICAgbGV0IHJlYyBpdGVyX18wMjVfID0gZnVuY3Rpb25cbiAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gZmllbGRfbmFtZV9fMDE2X1xuICAgICAgICAgICAgICAgIDo6ICgoW10gfCBbIF8gXSkgYXMgX2ZpZWxkX3NleHBzX18wMThfKSlcbiAgICAgICAgICAgICA6OiB0YWlsX18wMjZfIC0+XG4gICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfICgpID1cbiAgICAgICAgICAgICAgIG1hdGNoIF9maWVsZF9zZXhwc19fMDE4XyB3aXRoXG4gICAgICAgICAgICAgICB8IFsgeF9fMDI3XyBdIC0+IHhfXzAyN19cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjRfXG4gICAgICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKG1hdGNoIGZpZWxkX25hbWVfXzAxNl8gd2l0aFxuICAgICAgICAgICAgICB8IFwiZmlsZW5hbWVcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgZmlsZW5hbWVfXzAwNF8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDIzXyA9IE5hbWUudF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBmaWxlbmFtZV9fMDA0XyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDIzXylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBcImxpbmVfbnVtYmVyXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGxpbmVfbnVtYmVyX18wMDZfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyMl8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgbGluZV9udW1iZXJfXzAwNl8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyMl8pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJsaW5lX3N0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGxpbmVfc3RhcnRfXzAwOF8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDIxXyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBsaW5lX3N0YXJ0X18wMDhfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjFfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwic3RhcnRfcG9zXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIHN0YXJ0X3Bvc19fMDEwXyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjBfID0gaW50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIHN0YXJ0X3Bvc19fMDEwXyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDIwXylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBcImVuZF9wb3NcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgZW5kX3Bvc19fMDEyXyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMTlfID0gaW50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGVuZF9wb3NfXzAxMl8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAxOV8pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGlmIFN0ZGxpYi4oICEgKSBTZXhwbGliMC5TZXhwX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgZXh0cmFfXzAxNV8gKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGV4dHJhX18wMTVfKVxuICAgICAgICAgICAgICAgIGVsc2UgKCkpO1xuICAgICAgICAgICAgIGl0ZXJfXzAyNV8gdGFpbF9fMDI2X1xuICAgICAgICAgICB8ICgoU2V4cGxpYjAuU2V4cC5BdG9tIF8gfCBTZXhwbGliMC5TZXhwLkxpc3QgXykgYXMgc2V4cF9fMDAyXykgOjogXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfb25seV9wYWlyc19leHBlY3RlZFxuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjRfXG4gICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgIGluXG4gICAgICAgICBpdGVyX18wMjVfIGZpZWxkX3NleHBzX18wMDNfO1xuICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfIHdpdGhcbiAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF9kdXBsaWNhdGVfZmllbGRzXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAoU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pXG4gICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGV4dHJhX18wMTVfIHdpdGhcbiAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF9leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjRfXG4gICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgZXh0cmFfXzAxNV8pXG4gICAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICggU3RkbGliLiggISApIGZpbGVuYW1lX18wMDRfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi4oICEgKSBsaW5lX251bWJlcl9fMDA2X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgbGluZV9zdGFydF9fMDA4X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgc3RhcnRfcG9zX18wMTBfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi4oICEgKSBlbmRfcG9zX18wMTJfIClcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCAoIFN0ZGxpYi5PcHRpb24uU29tZSBmaWxlbmFtZV9fMDA1X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuT3B0aW9uLlNvbWUgbGluZV9udW1iZXJfXzAwN19cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIHN0YXJ0X3Bvc19fMDExX1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuT3B0aW9uLlNvbWUgZW5kX3Bvc19fMDEzXyApIC0+XG4gICAgICAgICAgICAgICAgICB7IGZpbGVuYW1lID0gZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgICAgICAgIDsgbGluZV9udW1iZXIgPSBsaW5lX251bWJlcl9fMDA3X1xuICAgICAgICAgICAgICAgICAgOyBsaW5lX3N0YXJ0ID0gbGluZV9zdGFydF9fMDA5X1xuICAgICAgICAgICAgICAgICAgOyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgICAgICAgIDsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxM19cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICAgICAgIFsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBmaWxlbmFtZV9fMDA0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcImZpbGVuYW1lXCIgKVxuICAgICAgICAgICAgICAgICAgICA7ICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgbGluZV9udW1iZXJfXzAwNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJsaW5lX251bWJlclwiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGxpbmVfc3RhcnRfXzAwOF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJsaW5lX3N0YXJ0XCIgKVxuICAgICAgICAgICAgICAgICAgICA7ICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgc3RhcnRfcG9zX18wMTBfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwic3RhcnRfcG9zXCIgKVxuICAgICAgICAgICAgICAgICAgICA7ICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgZW5kX3Bvc19fMDEyXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcImVuZF9wb3NcIiApXG4gICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSBfIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gZXJyb3Jfc291cmNlX18wMjRfIHNleHBfXzAwMl9cbiAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgOztcblxuICAgIGxldCBfID0gdF9vZl9zZXhwXG5cbiAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgIChmdW4geyBmaWxlbmFtZSA9IGZpbGVuYW1lX18wMjlfXG4gICAgICAgICAgIDsgbGluZV9udW1iZXIgPSBsaW5lX251bWJlcl9fMDMxX1xuICAgICAgICAgICA7IGxpbmVfc3RhcnQgPSBsaW5lX3N0YXJ0X18wMzNfXG4gICAgICAgICAgIDsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMzVfXG4gICAgICAgICAgIDsgZW5kX3BvcyA9IGVuZF9wb3NfXzAzN19cbiAgICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9IFtdIGluXG4gICAgICAgIGxldCBibmRzX18wMjhfID1cbiAgICAgICAgICBsZXQgYXJnX18wMzhfID0gc2V4cF9vZl9pbnQgZW5kX3Bvc19fMDM3XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMzhfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDM2XyA9IHNleHBfb2ZfaW50IHN0YXJ0X3Bvc19fMDM1XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXJ0X3Bvc1wiOyBhcmdfXzAzNl8gXSA6OiBibmRzX18wMjhfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMjhfID1cbiAgICAgICAgICBsZXQgYXJnX18wMzRfID0gc2V4cF9vZl9pbnQgbGluZV9zdGFydF9fMDMzXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfc3RhcnRcIjsgYXJnX18wMzRfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDMyXyA9IHNleHBfb2ZfaW50IGxpbmVfbnVtYmVyX18wMzFfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZV9udW1iZXJcIjsgYXJnX18wMzJfIF1cbiAgICAgICAgICA6OiBibmRzX18wMjhfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMjhfID1cbiAgICAgICAgICBsZXQgYXJnX18wMzBfID0gTmFtZS5zZXhwX29mX3QgZmlsZW5hbWVfXzAyOV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmaWxlbmFtZVwiOyBhcmdfXzAzMF8gXSA6OiBibmRzX18wMjhfXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjhfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIGxldCBfID0gc2V4cF9vZl90XG5cbiAgICBsZXQgY29tcGFyZSA9XG4gICAgICAoZnVuIGFfXzAzOV8gYl9fMDQwXyAtPlxuICAgICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDM5XyBiX18wNDBfXG4gICAgICAgICB0aGVuIDBcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCBOYW1lLmNvbXBhcmUgYV9fMDM5Xy5maWxlbmFtZSBiX18wNDBfLmZpbGVuYW1lIHdpdGhcbiAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAzOV8ubGluZV9udW1iZXIgYl9fMDQwXy5saW5lX251bWJlciB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMzlfLmxpbmVfc3RhcnQgYl9fMDQwXy5saW5lX3N0YXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAzOV8uc3RhcnRfcG9zIGJfXzA0MF8uc3RhcnRfcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAzOV8uZW5kX3BvcyBiX18wNDBfLmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSBjb21wYXJlXG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9maWxlIGZpbGVuYW1lID1cbiAgICB7IGZpbGVuYW1lOyBsaW5lX251bWJlciA9IDE7IGxpbmVfc3RhcnQgPSAwOyBzdGFydF9wb3MgPSAwOyBlbmRfcG9zID0gMCB9XG4gIDs7XG5cbiAgbGV0IG9mX3NvdXJjZV9jb2RlX3Bvc2l0aW9uIChwb3MgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSA9XG4gICAgeyBmaWxlbmFtZSA9IE5hbWUub2Zfc3RyaW5nIChDYW1sLkZpbGVuYW1lLmJhc2VuYW1lIHBvcy5wb3NfZm5hbWUpXG4gICAgOyBsaW5lX251bWJlciA9IHBvcy5wb3NfbG51bVxuICAgIDsgbGluZV9zdGFydCA9IHBvcy5wb3NfYm9sXG4gICAgOyBzdGFydF9wb3MgPSBwb3MucG9zX2NudW1cbiAgICA7IGVuZF9wb3MgPSBwb3MucG9zX2NudW1cbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IF8gPSBzZXhwX29mX3RcbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9zdHJpbmcgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBleHBlY3RlZF9sZW5ndGggPSAzMiBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiBleHBlY3RlZF9sZW5ndGhcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkZpbGUuRGlnZXN0Lm9mX3N0cmluZywgdW5leHBlY3RlZCBsZW5ndGhcIjtcbiAgICBmb3IgaSA9IDAgdG8gZXhwZWN0ZWRfbGVuZ3RoIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyAtPiAoKVxuICAgICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkZpbGUuRGlnZXN0Lm9mX3N0cmluZ1wiXG4gICAgZG9uZTtcbiAgICBzXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTk9URTpcbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmdMYWJlbHMubWxpLCBydW4gdG9vbHMvc3luY19zdGRsaWJfZG9jcyBhZnRlciBlZGl0aW5nXG4gICBpdCB0byBnZW5lcmF0ZSBzdHJpbmcubWxpLlxuXG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nLm1saSwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkgLS0gZWRpdFxuICAgc3RyaW5nTGFiZWxzLm1saSBpbnN0ZWFkLlxuICopXG5cbigqKiBTdHJpbmdzLlxuXG4gICAgQSBzdHJpbmcgW3NdIG9mIGxlbmd0aCBbbl0gaXMgYW4gaW5kZXhhYmxlIGFuZCBpbW11dGFibGUgc2VxdWVuY2VcbiAgICBvZiBbbl0gYnl0ZXMuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlc2UgYnl0ZXMgYXJlIHJlZmVycmVkIHRvXG4gICAgYXMgY2hhcmFjdGVycy5cblxuICAgIFRoZSBzZW1hbnRpY3Mgb2Ygc3RyaW5nIGZ1bmN0aW9ucyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICAgaW5kaWNlcyBhbmQgcG9zaXRpb25zLiBUaGVzZSBhcmUgZGVwaWN0ZWQgYW5kIGRlc2NyaWJlZFxuICAgIGFzIGZvbGxvd3MuXG5cbnt2XG5wb3NpdGlvbnMgIDAgICAxICAgMiAgIDMgICA0ICAgIG4tMSAgICBuXG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG4gIGluZGljZXMgIHwgMCB8IDEgfCAyIHwgMyB8IC4uLiB8IG4tMSB8XG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG52fVxuICAgIHt1bFxuICAgIHstIEFuIHtlIGluZGV4fSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFxcW1swXTtbbi0xXVxcXS5cbiAgICAgICBJdCByZXByZXNlbnRzIHRoZSBbaV10aCBieXRlIChjaGFyYWN0ZXIpIG9mIFtzXSB3aGljaCBjYW4gYmVcbiAgICAgICBhY2Nlc3NlZCB1c2luZyB0aGUgY29uc3RhbnQgdGltZSBzdHJpbmcgaW5kZXhpbmcgb3BlcmF0b3JcbiAgICAgICBbcy5baV1dLn1cbiAgICB7LSBBIHtlIHBvc2l0aW9ufSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICAgICAgXFxbWzBdO1tuXVxcXS4gSXQgcmVwcmVzZW50cyBlaXRoZXIgdGhlIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2ZcbiAgICAgICB0aGUgc3RyaW5nLCBvciB0aGUgcG9pbnQgYmV0d2VlbiB0d28gaW5kaWNlcywgb3IgdGhlIHBvaW50IGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGUgW2lddGggYnl0ZSBpbmRleCBpcyBiZXR3ZWVuIHBvc2l0aW9uXG4gICAgICAgW2ldIGFuZCBbaSsxXS59fVxuXG4gICAgVHdvIGludGVnZXJzIFtzdGFydF0gYW5kIFtsZW5dIGFyZSBzYWlkIHRvIGRlZmluZSBhIHtlIHZhbGlkXG4gICAgc3Vic3RyaW5nfSBvZiBbc10gaWYgW2xlbiA+PSAwXSBhbmQgW3N0YXJ0XSwgW3N0YXJ0K2xlbl0gYXJlXG4gICAgcG9zaXRpb25zIG9mIFtzXS5cblxuICAgIHtiIFVuaWNvZGUgdGV4dC59IFN0cmluZ3MgYmVpbmcgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBieXRlcywgdGhleVxuICAgIGNhbiBob2xkIGFueSBraW5kIG9mIHRleHR1YWwgZW5jb2RpbmcuIEhvd2V2ZXIgdGhlIHJlY29tbWVuZGVkXG4gICAgZW5jb2RpbmcgZm9yIHN0b3JpbmcgVW5pY29kZSB0ZXh0IGluIE9DYW1sIHN0cmluZ3MgaXMgVVRGLTguIFRoaXNcbiAgICBpcyB0aGUgZW5jb2RpbmcgdXNlZCBieSBVbmljb2RlIGVzY2FwZXMgaW4gc3RyaW5nIGxpdGVyYWxzLiBGb3JcbiAgICBleGFtcGxlIHRoZSBzdHJpbmcgW1wiXFx1ezFGNDJCfVwiXSBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlXG4gICAgVW5pY29kZSBjaGFyYWN0ZXIgVSsxRjQyQi5cblxuICAgIHtiIFBhc3QgbXV0YWJpbGl0eS59IEJlZm9yZSBPQ2FtbCA0LjAyLCBzdHJpbmdzIHVzZWQgdG8gYmUgbW9kaWZpYWJsZSBpblxuICAgIHBsYWNlIGxpa2UgeyFCeXRlcy50fSBtdXRhYmxlIHNlcXVlbmNlcyBvZiBieXRlcy5cbiAgICBPQ2FtbCA0IGhhZCB2YXJpb3VzIGNvbXBpbGVyIGZsYWdzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc3VwcG9ydCB0aGVcbiAgICB0cmFuc2l0aW9uIHBlcmlvZCBmcm9tIG11dGFibGUgdG8gaW1tdXRhYmxlIHN0cmluZ3MuXG4gICAgVGhvc2Ugb3B0aW9ucyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgYW5kIHN0cmluZ3MgYXJlIG5vdyBhbHdheXNcbiAgICBpbW11dGFibGUuXG5cbiAgICBUaGUgbGFiZWxlZCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIGFzIGRlc2NyaWJlZCBpbiB0aGVcbiAgICB7IVN0ZExhYmVsc30gbW9kdWxlLlxuKilcblxuKCoqIHsxOnN0cmluZ3MgU3RyaW5nc30gKilcblxudHlwZSB0ID0gc3RyaW5nXG4oKiogVGhlIHR5cGUgZm9yIHN0cmluZ3MuICopXG5cbnZhbCBtYWtlIDogaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4oKiogW21ha2UgbiBjXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggZWFjaCBpbmRleCBob2xkaW5nIHRoZVxuICAgIGNoYXJhY3RlciBbY10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS4gKilcblxudmFsIGluaXQgOiBpbnQgLT4gKGludCAtPiBjaGFyKSAtPiBzdHJpbmdcbigqKiBbaW5pdCBuIGZdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBpbmRleFxuICAgIFtpXSBob2xkaW5nIHRoZSBjaGFyYWN0ZXIgW2YgaV0gKGNhbGxlZCBpbiBpbmNyZWFzaW5nIGluZGV4IG9yZGVyKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LlxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBvZl9ieXRlcyA6IGJ5dGVzIC0+IHN0cmluZ1xuKCoqIFJldHVybiBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW4gYnl0ZVxuICAgIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWluc19mcm9tIHMgc3RhcnQgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGFmdGVyIHBvc2l0aW9uIFtzdGFydF0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RhcnRdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbcmNvbnRhaW5zX2Zyb20gcyBzdG9wIGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBiZWZvcmUgcG9zaXRpb24gW3N0b3ArMV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RvcCA8IDBdIG9yIFtzdG9wKzFdIGlzIG5vdCBhIHZhbGlkXG4gICAgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgY29udGFpbnMgOiBzdHJpbmcgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zIHMgY10gaXMgeyFTdHJpbmcuY29udGFpbnNfZnJvbX1bIHMgMCBjXS4gKilcblxuKCoqIHsxOmV4dHJhY3QgRXh0cmFjdGluZyBzdWJzdHJpbmdzfSAqKVxuXG52YWwgc3ViIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gc3RyaW5nXG4oKiogW3N1YiBzIHBvcyBsZW5dIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbGVuXSwgY29udGFpbmluZyB0aGVcbiAgICBzdWJzdHJpbmcgb2YgW3NdIHRoYXQgc3RhcnRzIGF0IHBvc2l0aW9uIFtwb3NdIGFuZCBoYXMgbGVuZ3RoXG4gICAgW2xlbl0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbcG9zXSBhbmQgW2xlbl0gZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkXG4gICAgc3Vic3RyaW5nIG9mIFtzXS4gKilcblxudmFsIHNwbGl0X29uX2NoYXIgOiBjaGFyIC0+IHN0cmluZyAtPiBzdHJpbmcgbGlzdFxuKCoqIFtzcGxpdF9vbl9jaGFyIHNlcCBzXSBpcyB0aGUgbGlzdCBvZiBhbGwgKHBvc3NpYmx5IGVtcHR5KVxuICAgIHN1YnN0cmluZ3Mgb2YgW3NdIHRoYXQgYXJlIGRlbGltaXRlZCBieSB0aGUgY2hhcmFjdGVyIFtzZXBdLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0LjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIuMCAqKVxuXG52YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGNoYXIgLT4gJ2EpIC0+ICdhIC0+IHN0cmluZyAtPiAnYVxuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9sZF9yaWdodCA6IChjaGFyIC0+ICdhIC0+ICdhKSAtPiBzdHJpbmcgLT4gJ2EgLT4gJ2FcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9yX2FsbCA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2Zvcl9hbGwgcCBzXSBjaGVja3MgaWYgYWxsIGNoYXJhY3RlcnMgaW4gW3NdIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbcF0uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIGVzY2FwZWQgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2VzY2FwZWQgc10gaXMgW3NdIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGVzY2FwZVxuICAgIHNlcXVlbmNlcywgZm9sbG93aW5nIHRoZSBsZXhpY2FsIGNvbnZlbnRpb25zIG9mIE9DYW1sLlxuXG4gICAgQWxsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgVVMtQVNDSUkgcHJpbnRhYmxlIHJhbmdlIFxcWzB4MjA7MHg3RVxcXSBhcmVcbiAgICBlc2NhcGVkLCBhcyB3ZWxsIGFzIGJhY2tzbGFzaCAoMHgyRikgYW5kIGRvdWJsZS1xdW90ZSAoMHgyMikuXG5cbiAgICBUaGUgZnVuY3Rpb24geyFTY2FuZi51bmVzY2FwZWR9IGlzIGEgbGVmdCBpbnZlcnNlIG9mIFtlc2NhcGVkXSxcbiAgICBpLmUuIFtTY2FuZi51bmVzY2FwZWQgKGVzY2FwZWQgcykgPSBzXSBmb3IgYW55IHN0cmluZyBbc10gKHVubGVzc1xuICAgIFtlc2NhcGVkIHNdIGZhaWxzKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCB1cHBlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VwcGVyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgbG93ZXJjYXNlIGxldHRlcnNcbiAgICB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIHVuY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdW5jYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvIGxvd2VyY2FzZSxcbiAgICB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG4oKiogezE6c2VhcmNoaW5nIFNlYXJjaGluZ30gKilcblxudmFsIGluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG5cbnZhbCBpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCBpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb219WyBzIDAgY10uICopXG5cbnZhbCBpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb21fb3B0fVsgcyAwIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXggcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbX1bIHMgKGxlbmd0aCBzIC0gMSkgY10uICopXG5cbnZhbCByaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb21fb3B0fVsgcyAobGVuZ3RoIHMgLSAxKSBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbigqKiB7MSBTdHJpbmdzIGFuZCBTZXF1ZW5jZXN9ICopXG5cbnZhbCB0b19zZXEgOiB0IC0+IGNoYXIgU2VxLnRcbigqKiBbdG9fc2VxIHNdIGlzIGEgc2VxdWVuY2UgbWFkZSBvZiB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyBpblxuICAgIGluY3JlYXNpbmcgb3JkZXIuIEluIFtcInVuc2FmZS1zdHJpbmdcIl0gbW9kZSwgbW9kaWZpY2F0aW9ucyBvZiB0aGUgc3RyaW5nXG4gICAgZHVyaW5nIGl0ZXJhdGlvbiB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgdG9fc2VxaSA6IHQgLT4gKGludCAqIGNoYXIpIFNlcS50XG4oKiogW3RvX3NlcWkgc10gaXMgbGlrZSB7IXRvX3NlcX0gYnV0IGFsc28gdHVwbGVzIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIG9mX3NlcSA6IGNoYXIgU2VxLnQgLT4gdFxuKCoqIFtvZl9zZXEgc10gaXMgYSBzdHJpbmcgbWFkZSBvZiB0aGUgc2VxdWVuY2UncyBjaGFyYWN0ZXJzLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxuKCoqIHsxOnV0ZiBVVEYgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb25zfVxuXG4gICAgQHNpbmNlIDQuMTQgKilcblxuKCoqIHsyOnV0Zl84IFVURi04fSAqKVxuXG52YWwgZ2V0X3V0Zl84X3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzhfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi04IGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW5cbiAgICBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfOCA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfOCBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTggZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmJlIFVURi0xNkJFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmJlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2YmVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkJFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZiZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZiZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2QkUgZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmxlIFVURi0xNkxFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmxlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2bGVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkxFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZsZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZsZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2TEUgZGF0YS4gKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFtibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlbl0gY29waWVzIFtsZW5dIGJ5dGVzXG4gICAgZnJvbSB0aGUgc3RyaW5nIFtzcmNdLCBzdGFydGluZyBhdCBpbmRleCBbc3JjX3Bvc10sXG4gICAgdG8gYnl0ZSBzZXF1ZW5jZSBbZHN0XSwgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIG51bWJlciBbZHN0X3Bvc10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3JjX3Bvc10gYW5kIFtsZW5dIGRvIG5vdFxuICAgIGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtzcmNdLCBvciBpZiBbZHN0X3Bvc10gYW5kIFtsZW5dXG4gICAgZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtkc3RdLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIGdldF9pbnQzMl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJvcGVuISBCYXNlXG5vcGVuIEltcG9ydFxub3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxub3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIEJvZHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4YWN0IG9mIHN0cmluZ1xuICAgIHwgT3V0cHV0XG4gICAgfCBQcmV0dHkgb2YgJ2FcbiAgICB8IFVucmVhY2hhYmxlXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlLCBlcXVhbF1cblxuICBsZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNl8pIDogKChhX18wMDZfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDA2XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRXhhY3QgYXJnMF9fMDAyXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhhY3RcIjsgcmVzMF9fMDAzXyBdXG4gICAgICB8IE91dHB1dCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJPdXRwdXRcIlxuICAgICAgfCBQcmV0dHkgYXJnMF9fMDA0XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA1XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUHJldHR5XCI7IHJlczBfXzAwNV8gXVxuICAgICAgfCBVbnJlYWNoYWJsZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbnJlYWNoYWJsZVwiXG4gIDs7XG5cbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDdfIGJfXzAwOF9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwN18sIGJfXzAwOF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDA5XywgRXhhY3QgX2JfXzAxMF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwOV8gX2JfXzAxMF9cbiAgICAgIHwgRXhhY3QgXywgXyAtPiAtMVxuICAgICAgfCBfLCBFeGFjdCBfIC0+IDFcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gMFxuICAgICAgfCBPdXRwdXQsIF8gLT4gLTFcbiAgICAgIHwgXywgT3V0cHV0IC0+IDFcbiAgICAgIHwgUHJldHR5IF9hX18wMTFfLCBQcmV0dHkgX2JfXzAxMl8gLT4gX2NtcF9fYSBfYV9fMDExXyBfYl9fMDEyX1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiAtMVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiAxXG4gICAgICB8IFVucmVhY2hhYmxlLCBVbnJlYWNoYWJsZSAtPiAwKVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAxM18gYl9fMDE0X1xuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDEzXywgYl9fMDE0XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMTVfLCBFeGFjdCBfYl9fMDE2XyAtPiBlcXVhbF9zdHJpbmcgX2FfXzAxNV8gX2JfXzAxNl9cbiAgICAgIHwgRXhhY3QgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBFeGFjdCBfIC0+IGZhbHNlXG4gICAgICB8IE91dHB1dCwgT3V0cHV0IC0+IHRydWVcbiAgICAgIHwgT3V0cHV0LCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIE91dHB1dCAtPiBmYWxzZVxuICAgICAgfCBQcmV0dHkgX2FfXzAxN18sIFByZXR0eSBfYl9fMDE4XyAtPiBfY21wX19hIF9hX18wMTdfIF9iX18wMThfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IGZhbHNlXG4gICAgICB8IFVucmVhY2hhYmxlLCBVbnJlYWNoYWJsZSAtPiB0cnVlKVxuICA7O1xuXG4gIGxldCBfID0gZXF1YWxcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtYXBfcHJldHR5IHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgKEV4YWN0IF8gfCBPdXRwdXQgfCBVbnJlYWNoYWJsZSkgYXMgdCAtPiB0XG4gICAgfCBQcmV0dHkgeCAtPiBQcmV0dHkgKGYgeClcbiAgOztcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IHRhZyA6IHN0cmluZyBvcHRpb25cbiAgOyBib2R5IDogJ2EgQm9keS50XG4gIDsgZXh0aWRfbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgOyBib2R5X2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlLCBlcXVhbF1cblxubGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMTlfXG4gICAgeyB0YWcgPSB0YWdfXzAyMV9cbiAgICA7IGJvZHkgPSBib2R5X18wMjNfXG4gICAgOyBleHRpZF9sb2NhdGlvbiA9IGV4dGlkX2xvY2F0aW9uX18wMjVfXG4gICAgOyBib2R5X2xvY2F0aW9uID0gYm9keV9sb2NhdGlvbl9fMDI3X1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDIwXyA9IFtdIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI4XyA9IEZpbGUuTG9jYXRpb24uc2V4cF9vZl90IGJvZHlfbG9jYXRpb25fXzAyN18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlfbG9jYXRpb25cIjsgYXJnX18wMjhfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI2XyA9IEZpbGUuTG9jYXRpb24uc2V4cF9vZl90IGV4dGlkX2xvY2F0aW9uX18wMjVfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleHRpZF9sb2NhdGlvblwiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjBfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjRfID0gQm9keS5zZXhwX29mX3QgX29mX2FfXzAxOV8gYm9keV9fMDIzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keVwiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjBfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjJfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdGFnX18wMjFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0YWdcIjsgYXJnX18wMjJfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAyMF9cbjs7XG5cbmxldCBfID0gc2V4cF9vZl90XG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMjlfIGJfXzAzMF8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDI5XyBiX18wMzBfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBjb21wYXJlX29wdGlvbiBjb21wYXJlX3N0cmluZyBhX18wMjlfLnRhZyBiX18wMzBfLnRhZyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAobWF0Y2ggQm9keS5jb21wYXJlIF9jbXBfX2EgYV9fMDI5Xy5ib2R5IGJfXzAzMF8uYm9keSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAobWF0Y2ggRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uZXh0aWRfbG9jYXRpb24gYl9fMDMwXy5leHRpZF9sb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCAwIC0+IEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmJvZHlfbG9jYXRpb24gYl9fMDMwXy5ib2R5X2xvY2F0aW9uXG4gICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgfCBuIC0+IG4pXG4gICAgfCBuIC0+IG4pXG47O1xuXG5sZXQgXyA9IGNvbXBhcmVcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAzNV8gYl9fMDM2XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMzVfIGJfXzAzNl9cbiAgdGhlbiB0cnVlXG4gIGVsc2VcbiAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAoZXF1YWxfb3B0aW9uIGVxdWFsX3N0cmluZyBhX18wMzVfLnRhZyBiX18wMzZfLnRhZylcbiAgICAgIChQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgICAoQm9keS5lcXVhbCBfY21wX19hIGFfXzAzNV8uYm9keSBiX18wMzZfLmJvZHkpXG4gICAgICAgICAoUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5leHRpZF9sb2NhdGlvbiBiX18wMzZfLmV4dGlkX2xvY2F0aW9uKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5ib2R5X2xvY2F0aW9uIGJfXzAzNl8uYm9keV9sb2NhdGlvbikpKVxuOztcblxubGV0IF8gPSBlcXVhbFxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBzdHJpbmcgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG4gIGxldCBzZXhwX29mX3QgPSAoZnVuIHhfXzA0MV8gLT4gc2V4cF9vZl90IHNleHBfb2Zfc3RyaW5nIHhfXzA0MV8gOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wNDJfIGJfXzA0M18gLT4gY29tcGFyZSBjb21wYXJlX3N0cmluZyBhX18wNDJfIGJfXzA0M18gOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1hcF9wcmV0dHkgdCB+ZiA9IHsgdCB3aXRoIGJvZHkgPSBCb2R5Lm1hcF9wcmV0dHkgdC5ib2R5IH5mIH1cbiIsIm1vZHVsZSBTdGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpbGUgPSBGaWxlXG4gIG1vZHVsZSBFeHBlY3RhdGlvbiA9IEV4cGVjdGF0aW9uXG5lbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMC0wM10gdXNlIFtFeHBlY3RfdGVzdF9jb21tb25dIGluc3RlYWRcIl1cblxuaW5jbHVkZSBTdGQgW0BAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuIiwibW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQ1IgKCoqIExlYXZlcyBhIENSLCBzbyB0aGF0IGZlYXR1cmVzIGNhbm5vdCBiZSByZWxlYXNlZC4gKilcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAoKiogT25seSBmb3IgcHB4X2V4cGVjdCB0ZXN0aW5nOyBkbyBub3QgdXNlLiAqKVxuICAgIF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBJT19ydW4gOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kXG5cbiAgKCoqIEEgbm93LWxlZ2FjeSBtb25hZC4gVGhpcyBzaWduYXR1cmUgdXNlZCB0byBkZWNsYXJlIGEgW2ZsdXNoXSBmdW5jdGlvbi5cbiAgICAgIFtbJWV4cGVjdC5vdXRwdXRdXSBzdGlsbCByZXR1cm5zIHRoaXMgdHlwZS4gTm8gbWVhbmluZ2Z1bCBtb25hZGljIHdvcmsgaXMgZG9uZS4gKilcbiAgbW9kdWxlIElPX2ZsdXNoIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgdmFsIHRvX3J1biA6ICdhIHQgLT4gJ2EgSU9fcnVuLnRcbiAgZW5kXG5cbiAgKCoqIFJ1biBhbiBJTyBvcGVyYXRpb24gdW50aWwgY29tcGxldGlvbiAqKVxuICB2YWwgcnVuIDogKHVuaXQgLT4gdW5pdCBJT19ydW4udCkgLT4gdW5pdFxuXG4gICgqKiBTeW5jaHJvbm91cyBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIHBlbmRpbmcgb3V0cHV0IG9uIGZpbGUgZGVzY3JpcHRpb24gMC4gV2l0aCBhc3luYyxcbiAgICAgIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IG9uIHRoZSByaHMgb2YgYSBbSU8uYmluZCAoZmx1c2ggKCkpIC4uLl0gdGhlIG91dHB1dCBpc1xuICAgICAgY29tcGxldGVseSBmbHVzaGVkLCB0aGF0J3Mgd2h5IHdlIG5lZWQgdGhpcy4gKilcbiAgdmFsIGZsdXNoZWQgOiB1bml0IC0+IGJvb2xcblxuICAoKiogW3Nhbml0aXplXSBjYW4gYmUgdXNlZCB0byBtYXAgYWxsIG91dHB1dCBzdHJpbmdzLCBlLmcuIGZvciBjbGVhbnNpbmcuICopXG4gIHZhbCBzYW5pdGl6ZSA6IHN0cmluZyAtPiBzdHJpbmdcblxuXG4gICgqKiBbdXBvbl91bnJlbGVhc2FibGVfaXNzdWVdIHNwZWNpZmllcyBob3cgdG8gZGVhbCB3aXRoIG91dHB1dCB0aGF0IHNob3VsZCBub3QgYmVcbiAgICAgIHJlbGVhc2VkIGV2ZW4gaWYgaXQgaXMgYWNjZXB0ZWQgKGUuZy4gYmFja3RyYWNlcykuIFRoZSBkZWZhdWx0IGlzIFtgQ1JdLiAgKilcbiAgdmFsIHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuZW5kXG5cbigqKiBDb25maWd1cmF0aW9uIGZvciBydW5uaW5nIGV4cGVjdCB0ZXN0cyAqKVxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID0gc2lnXG4gICgqKiBUbyBjb25maWd1cmUgZXhwZWN0X3Rlc3QsIGFkZCB0aGUgZm9sbG93aW5nIGF0IHRoZSB0b3Agb2YgeW91ciAubWwgZmlsZSwgb3IgaW4gc29tZVxuICAgICAgaW1wb3J0Lm1sOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdcbiAgICAgICAgICBsZXQgcHJlX3JlZGlyZWN0X2hvb2sgKCkgPSAuLi5cbiAgICAgICAgZW5kXG4gICAgICBdfVxuXG4gICAgICBOb3RlIHRoYXQgc2luY2UgYWxsIGV4cGVjdCB0ZXN0IGFyZSBhbHNvIGlubGluZSB0ZXN0cywgdGhlIGlubGluZSB0ZXN0IGNvbmZpZ3VyYXRpb25cbiAgICAgIGFsc28gYXBwbGllcyB0byBhbGwgZXhwZWN0IHRlc3QuXG4gICopXG5cbiAgbW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgY29tbWVudF9wcmVmaXggOiB0IC0+IHN0cmluZ1xuXG4gICAgKCoqIE1lc3NhZ2UgdG8gcHJpbnQgd2hlbiBhbiBleHBlY3RhdGlvbiBjb250YWlucyBhIGJhY2t0cmFjZSAqKVxuICAgIHZhbCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIDogdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IFNcbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlNcblxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID1cbiAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzXG5cbm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gdDEgPSB0MlxuXG4gIGxldCBjb21tZW50X3ByZWZpeCA9IGZ1bmN0aW9uXG4gICAgfCBgQ1IgLT4gXCJDUiBcIlxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nIC0+IFwiXCJcbiAgOztcblxuICBsZXQgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSB0ID1cbiAgICBQcmludGYuc3ByaW50ZlxuICAgICAge3xcbigqICVzZXhwZWN0X3Rlc3RfY29sbGVjdG9yOiBUaGlzIHRlc3QgZXhwZWN0YXRpb24gYXBwZWFycyB0byBjb250YWluIGEgYmFja3RyYWNlLlxuICAgVGhpcyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBhcyBiYWNrdHJhY2VzIGFyZSBmcmFnaWxlLlxuICAgUGxlYXNlIGNoYW5nZSB0aGlzIHRlc3QgdG8gbm90IGluY2x1ZGUgYSBiYWNrdHJhY2UuICopXG5cbnx9XG4gICAgICAoY29tbWVudF9wcmVmaXggdClcbiAgOztcbmVuZFxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjhcXDAwMFxcMDA1XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAwNlxcMDAwXFwwODVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA0MFxcMDAwXFwwMzFcXDAwMFxcMDQ2XFwwMDBcXDA0OFxcMDAwXFwwMDdcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDA2MlxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDEwM1xcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDVcXDAwMFxcMDk1XFwwMDBcXDEwN1xcMDAwXFwwOTVcXDAwMFxcMTEzXFwwMDBcXDAxMFxcMDAwXFwxMDRcXDAwMFxcXG4gICAgXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDEwNFxcMDAwXFwxMjJcXDAwMFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMTFcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwwMTJcXDAwMFxcMTI2XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDExOVxcMDAwXFwxMjJcXDAwMFxcMDEzXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMTJcXDAwMFxcMDM5XFwwMDBcXDAxMlxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDYxXFwwMDBcXDA3MVxcMDAwXFwwNTlcXDAwMFxcMDg2XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDNcXDAwMFxcMDI5XFwwMDBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDE4XFwwMDBcXDAyN1xcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDI2XFwwMDBcXDAxNlxcMDAwXFwwMDVcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAxM1xcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFxcbiAgICBcXDAzOFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNjBcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTZcXDAwMFxcMDU4XFwwMDBcXDA2MlxcMDAwXFwwNDZcXDAwMFxcMDYzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAzM1xcMDAwXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNjBcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwODVcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjhcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMTdcXDAwMFxcMDI2XFwwMDBcXDAyNFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMjVcXDAwMFxcMDE1XFwwMDBcXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDA5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDM3XFwwMDBcXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDYxXFwwMDBcXDA0NFxcMDAwXFwwNjJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgY2hlY2sgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjMgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxNjggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG5vdF9hdF9ib3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiA0NFxuYW5kIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxODAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDkgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE4NSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDIgLT5cbiMgMTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAoIGZhbHNlIClcbiMgMTkwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMiBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gXG4gIGxldCBjb250YWluc19iYWNrdHJhY2VzIHMgPSBjaGVjayAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiMgMjAxIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuIiwib3BlbiBFeHBlY3RfdGVzdF9jb21tb25cbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuXG5tb2R1bGUgVGVzdF9vdXRjb21lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBmaWxlX2RpZ2VzdCA6IEZpbGUuRGlnZXN0LnRcbiAgICA7IGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gICAgOyBleHBlY3RhdGlvbnMgOiBFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb24gOiBFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICA7IHNhdmVkX291dHB1dCA6IChGaWxlLkxvY2F0aW9uLnQgKiBzdHJpbmcpIGxpc3RcbiAgICA7IHRyYWlsaW5nX291dHB1dCA6IHN0cmluZ1xuICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuICAgIDsgdW5jYXVnaHRfZXhuIDogKGV4biAqIFByaW50ZXhjLnJhd19iYWNrdHJhY2UpIG9wdGlvblxuICAgIH1cbmVuZFxuXG5sZXQgdGVzdHNfcnVuIDogVGVzdF9vdXRjb21lLnQgbGlzdCByZWYgPSByZWYgW11cblxubGV0IHByb3RlY3QgfmZpbmFsbHkgfmYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+XG4gICAgZmluYWxseSAoKTtcbiAgICB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHJhaXNlIGVcbjs7XG5cbm1vZHVsZSBDdXJyZW50X2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IGN1cnJlbnQgPSByZWYgTm9uZVxuXG4gIGxldCBzZXQgfmFic29sdXRlX2ZpbGVuYW1lID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGN1cnJlbnQgOj0gU29tZSBhYnNvbHV0ZV9maWxlbmFtZVxuICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnNldDogYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCB1bnNldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBfIC0+IGN1cnJlbnQgOj0gTm9uZVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci51bnNldDogbm90IHNldFwiXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBmbiAtPiBmblxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5nZXQ6IG5vdCBzZXRcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzYXZlZCA6IChGaWxlLkxvY2F0aW9uLnQgKiBpbnQpIGxpc3RcbiAgICA7IGNoYW4gOiBvdXRfY2hhbm5lbFxuICAgIDsgZmlsZW5hbWUgOiBGaWxlLk5hbWUudFxuICAgIH1cblxuICBleHRlcm5hbCBiZWZvcmVfdGVzdFxuICAgIDogIG91dHB1dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XCJcblxuICBleHRlcm5hbCBhZnRlcl90ZXN0XG4gICAgOiAgc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcIlxuXG4gIGxldCBnZXRfcG9zaXRpb24gKCkgPSBwb3Nfb3V0IHN0ZG91dFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCBmaWxlbmFtZSA9IEZpbGVuYW1lLnRlbXBfZmlsZSBcImV4cGVjdC10ZXN0XCIgXCJvdXRwdXRcIiBpblxuICAgIGxldCBjaGFuID0gb3Blbl9vdXRfYmluIGZpbGVuYW1lIGluXG4gICAgYmVmb3JlX3Rlc3Qgfm91dHB1dDpjaGFuIH5zdGRvdXQgfnN0ZGVycjtcbiAgICB7IGNoYW47IGZpbGVuYW1lID0gRmlsZS5OYW1lLm9mX3N0cmluZyBmaWxlbmFtZTsgc2F2ZWQgPSBbXSB9XG4gIDs7XG5cbiAgbGV0IHJlbGF0aXZlX2ZpbGVuYW1lIHQgPSBGaWxlLk5hbWUucmVsYXRpdmVfdG8gfmRpcjooRmlsZS5pbml0aWFsX2RpciAoKSkgdC5maWxlbmFtZVxuXG4gIGxldCB3aXRoX2ljIGZuYW1lIH5mID1cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIHByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBjbG9zZV9pbiBpYykgfmY6KGZ1biAoKSAtPiBmIGljKVxuICA7O1xuXG4gIGxldCBjdXJyZW50X3Rlc3QgOiAoRmlsZS5Mb2NhdGlvbi50ICogdCkgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5cbiAgbGV0IGdldF9jdXJyZW50ICgpID1cbiAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICB8IFNvbWUgKF8sIHQpIC0+IHRcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuSW5zdGFuY2UuZ2V0X2N1cnJlbnQgY2FsbGVkIG91dHNpZGUgYSB0ZXN0LlwiXG4gIDs7XG5cbiAgbGV0IHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbiA9XG4gICAgbGV0IHBvcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgIHQuc2F2ZWQgPC0gKGxvY2F0aW9uLCBwb3MpIDo6IHQuc2F2ZWRcbiAgOztcblxuICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICBsZXQgcHJldl9wb3MgPVxuICAgICAgbWF0Y2ggdC5zYXZlZCB3aXRoXG4gICAgICB8IFtdIC0+IDBcbiAgICAgIHwgKF8sIHByZXZfcG9zKSA6OiBfIC0+IHByZXZfcG9zXG4gICAgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkO1xuICAgIGZsdXNoIHQuY2hhbjtcbiAgICBsZXQgbGVuID0gcG9zIC0gcHJldl9wb3MgaW5cbiAgICB3aXRoX2ljIChyZWxhdGl2ZV9maWxlbmFtZSB0KSB+ZjooZnVuIGljIC0+XG4gICAgICBzZWVrX2luIGljIHByZXZfcG9zO1xuICAgICAgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4pXG4gIDs7XG5lbmRcblxubGV0IGJhc2ljX2ZsdXNoICgpID1cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpO1xuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LmVycl9mb3JtYXR0ZXIgKCk7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3Rkb3V0O1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZGVyclxuOztcblxubGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICBsZXQgaW5zdGFuY2UgPSBJbnN0YW5jZS5nZXRfY3VycmVudCAoKSBpblxuICBiYXNpY19mbHVzaCAoKTtcbiAgSW5zdGFuY2Uuc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIGluc3RhbmNlIGxvY2F0aW9uXG47O1xuXG5tb2R1bGUgTWFrZSAoQyA6IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5TKSA9IHN0cnVjdFxuICBsZXQgKCA+Pj0gKSB0IGYgPSBDLklPX2ZsdXNoLmJpbmQgdCB+ZlxuICBsZXQgcmV0dXJuID0gQy5JT19mbHVzaC5yZXR1cm5cblxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ1xuXG4gICAgbGV0IGZsdXNoICgpID1cbiAgICAgIGJhc2ljX2ZsdXNoICgpO1xuICAgICAgQy5JT19mbHVzaC5yZXR1cm4gKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSW5zdGFuY2VfaW8gOiBzaWdcbiAgICB2YWwgc2F2ZV9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gdW5pdCBDLklPX2ZsdXNoLnRcbiAgICB2YWwgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiBzdHJpbmcgQy5JT19mbHVzaC50XG5cbiAgICB2YWwgZXhlY1xuICAgICAgOiAgZmlsZV9kaWdlc3Q6RmlsZS5EaWdlc3QudFxuICAgICAgLT4gbG9jYXRpb246RmlsZS5Mb2NhdGlvbi50XG4gICAgICAtPiBleHBlY3RhdGlvbnM6RXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgICAgLT4gdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uOkV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgICAgLT4gZjoodW5pdCAtPiB1bml0IEMuSU9fcnVuLnQpXG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gSW5zdGFuY2VcblxuICAgIGxldCBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgbGVuID1cbiAgICAgIGxldCBzID0gcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gfD4gQy5zYW5pdGl6ZSBpblxuICAgICAgaWYgbm90IChDaGVja19iYWNrdHJhY2VzLmNvbnRhaW5zX2JhY2t0cmFjZXMgcylcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgLm1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2VcbiAgICAgICAgICBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIF4gc1xuICAgIDs7XG5cbiAgICBsZXQgZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCA9XG4gICAgICBsZXQgbGFzdF9vZnMgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICAgIGFmdGVyX3Rlc3QgfnN0ZG91dCB+c3RkZXJyO1xuICAgICAgY2xvc2Vfb3V0IHQuY2hhbjtcbiAgICAgIGxldCBmbmFtZSA9IHJlbGF0aXZlX2ZpbGVuYW1lIHQgaW5cbiAgICAgIHByb3RlY3RcbiAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPiBTeXMucmVtb3ZlIGZuYW1lKVxuICAgICAgICB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgd2l0aF9pYyBmbmFtZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICBsZXQgb2ZzLCBvdXRwdXRzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgdC5zYXZlZClcbiAgICAgICAgICAgICAgICB+aW5pdDooMCwgW10pXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAob2ZzLCBhY2MpIChsb2MsIG5leHRfb2ZzKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKG5leHRfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgICAgICAgbmV4dF9vZnMsIChsb2MsIHMpIDo6IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhaWxpbmdfb3V0cHV0ID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChsYXN0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dHMsIHRyYWlsaW5nX291dHB1dCkpXG4gICAgOztcblxuICAgIGxldCBzYXZlX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBDLmZsdXNoICgpXG4gICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb247XG4gICAgICByZXR1cm4gKClcbiAgICA7O1xuXG4gICAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgQy5mbHVzaCAoKSA+Pj0gZnVuICgpIC0+IHJldHVybiAoc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24pXG4gICAgOztcblxuICAgIGxldCAoKSA9XG4gICAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIChsb2MsIHQpIC0+XG4gICAgICAgICAgbGV0IGJsb2NrcywgdHJhaWxpbmcgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICAgICAgICAgIEVycm9yOiBwcm9ncmFtIGV4aXRlZCB3aGlsZSBleHBlY3QgdGVzdCB3YXMgcnVubmluZyFcXG5cXFxuICAgICAgICAgICAgIE91dHB1dCBjYXB0dXJlZCBzbyBmYXI6XFxuXFxcbiAgICAgICAgICAgICAlIVwiXG4gICAgICAgICAgICAoRmlsZS5OYW1lLnRvX3N0cmluZyBsb2MuZmlsZW5hbWUpXG4gICAgICAgICAgICBsb2MubGluZV9udW1iZXJcbiAgICAgICAgICAgIChsb2Muc3RhcnRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpXG4gICAgICAgICAgICAobG9jLmVuZF9wb3MgLSBsb2MubGluZV9zdGFydCk7XG4gICAgICAgICAgTGlzdC5pdGVyIGJsb2NrcyB+ZjooZnVuIChfLCBzKSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzKTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiB0cmFpbGluZylcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5hbF9mbHVzaCA/KGNvdW50ID0gMCkgayA9XG4gICAgICBsZXQgbWF4X2F0dGVtcHRzID0gMTAgaW5cbiAgICAgIEMuZmx1c2ggKClcbiAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgIGlmIEMuZmx1c2hlZCAoKVxuICAgICAgdGhlbiBrIH5hcHBlbmQ6XCJcIlxuICAgICAgZWxzZSBpZiBjb3VudCA9IG1heF9hdHRlbXB0c1xuICAgICAgdGhlblxuICAgICAgICBrXG4gICAgICAgICAgfmFwcGVuZDpcbiAgICAgICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgXCJcXG5cXFxuICAgICAgICAgICAgICAgIFNUT1BQRUQgQ09MTEVDVElORyBPVVRQVVQgQUZURVIgJWQgRkxVU0hJTkcgQVRURU1QU1xcblxcXG4gICAgICAgICAgICAgICAgVEhFUkUgTVVTVCBCRSBBIEJBQ0tHUk9VTkQgSk9CIFBSSU5USU5HIFRPIFNURE9VVFxcblwiXG4gICAgICAgICAgICAgICBtYXhfYXR0ZW1wdHMpXG4gICAgICBlbHNlIGZpbmFsX2ZsdXNoIH5jb3VudDooY291bnQgKyAxKSBrXG4gICAgOztcblxuICAgIGxldCBleGVjIH5maWxlX2RpZ2VzdCB+bG9jYXRpb24gfmV4cGVjdGF0aW9ucyB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIH5mID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBjdXJyZW50X3Rlc3QgOj0gU29tZSAobG9jYXRpb24sIHQpO1xuICAgICAgbGV0IGZpbmFsbHkgdW5jYXVnaHRfZXhuID1cbiAgICAgICAgQy5ydW4gKGZ1biAoKSAtPlxuICAgICAgICAgIEMuSU9fZmx1c2gudG9fcnVuXG4gICAgICAgICAgICAoZmluYWxfZmx1c2ggKGZ1biB+YXBwZW5kIC0+XG4gICAgICAgICAgICAgICBjdXJyZW50X3Rlc3QgOj0gTm9uZTtcbiAgICAgICAgICAgICAgIGxldCBzYXZlZF9vdXRwdXQsIHRyYWlsaW5nX291dHB1dCA9IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgaW5cbiAgICAgICAgICAgICAgIHRlc3RzX3J1blxuICAgICAgICAgICAgICAgOj0geyBmaWxlX2RpZ2VzdFxuICAgICAgICAgICAgICAgICAgOyBsb2NhdGlvblxuICAgICAgICAgICAgICAgICAgOyBleHBlY3RhdGlvbnNcbiAgICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgICAgICAgICAgICA7IHNhdmVkX291dHB1dFxuICAgICAgICAgICAgICAgICAgOyB0cmFpbGluZ19vdXRwdXQgPSB0cmFpbGluZ19vdXRwdXQgXiBhcHBlbmRcbiAgICAgICAgICAgICAgICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOjogIXRlc3RzX3J1bjtcbiAgICAgICAgICAgICAgIHJldHVybiAoKSkpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIEMucnVuIGYgd2l0aFxuICAgICAgfCAoKSAtPiBmaW5hbGx5IE5vbmVcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgICBmaW5hbGx5IChTb21lIChleG4sIGJ0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2F2ZV9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX291dHB1dFxuICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfYW5kX3JldHVybl9vdXRwdXRcblxuICBsZXQgcnVuXG4gICAgICAgIH5maWxlX2RpZ2VzdFxuICAgICAgICB+KGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50KVxuICAgICAgICB+YWJzb2x1dGVfZmlsZW5hbWU6ZGVmaW5lZF9pblxuICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgfnRhZ3NcbiAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgIH5pbmxpbmVfdGVzdF9jb25maWdcbiAgICAgICAgZlxuICAgID1cbiAgICBQcHhfaW5saW5lX3Rlc3RfbGliLlJ1bnRpbWUudGVzdFxuICAgICAgfmNvbmZpZzppbmxpbmVfdGVzdF9jb25maWdcbiAgICAgIH5kZXNjcjpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAobWF0Y2ggZGVzY3JpcHRpb24gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgcyAtPiBzKSlcbiAgICAgIH50YWdzXG4gICAgICB+ZmlsZW5hbWU6KEZpbGUuTmFtZS50b19zdHJpbmcgbG9jYXRpb24uZmlsZW5hbWUpXG4gICAgICB+bGluZV9udW1iZXI6bG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgIH5zdGFydF9wb3M6KGxvY2F0aW9uLnN0YXJ0X3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICB+ZW5kX3BvczoobG9jYXRpb24uZW5kX3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yID0gQ3VycmVudF9maWxlLmdldCAoKSBpblxuICAgICAgICAgaWYgZGVmaW5lZF9pbiA8PiByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICBcIlRyeWluZyB0byBydW4gYW4gZXhwZWN0IHRlc3QgZnJvbSB0aGUgd3JvbmcgZmlsZS5cXG5cXFxuICAgICAgICAgICAgICAtIHRlc3QgZGVjbGFyZWQgYXQgJXM6JWRcXG5cXFxuICAgICAgICAgICAgICAtIHRyeWluZyB0byBydW4gaXQgZnJvbSAlc1xcblwiXG4gICAgICAgICAgICAgZGVmaW5lZF9pblxuICAgICAgICAgICAgIGxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgKCogVG8gYXZvaWQgY2FwdHVyaW5nIG5vdC15ZXQgZmx1c2hlZCBkYXRhIG9mIHRoZSBzdGRvdXQgYnVmZmVyICopXG4gICAgICAgICAgIEMucnVuIChmdW4gKCkgLT4gQy5JT19mbHVzaC50b19ydW4gKEMuZmx1c2ggKCkpKTtcbiAgICAgICAgICAgSW5zdGFuY2VfaW8uZXhlY1xuICAgICAgICAgICAgIH5maWxlX2RpZ2VzdFxuICAgICAgICAgICAgIH5sb2NhdGlvblxuICAgICAgICAgICAgIH5leHBlY3RhdGlvbnNcbiAgICAgICAgICAgICB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgICAgICAgfmY7XG4gICAgICAgICAgIHRydWUpKVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgbmV2ZXJdXG5cbmxldCB0ZXN0c19ydW4gKCkgPVxuICAoKiBXZSBwcmVwZW5kIHRlc3RzIHdoZW4gd2UgZW5jb3VudGVyIHRoZW0sIHNvIHJldmVyc2UgdGhlIGxpc3QgdG8gcmVpbnN0YXRlIG9yZGVyICopXG4gIExpc3QucmV2ICF0ZXN0c19ydW5cbjs7XG4iLCJtb2R1bGUgSU9fcnVuID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHJldHVybiB4ID0geFxuICBsZXQgYmluZCB0IH5mID0gZiB0XG5lbmRcblxubW9kdWxlIElPX2ZsdXNoID0gc3RydWN0XG4gIGluY2x1ZGUgSU9fcnVuXG5cbiAgbGV0IHRvX3J1biB0ID0gdFxuZW5kXG5cbmxldCBzYW5pdGl6ZSBzID0gc1xubGV0IHJ1biBmID0gZiAoKVxubGV0IGZsdXNoZWQgKCkgPSB0cnVlICgqIHRoZSBydW50aW1lIGZsdXNoZWQgW3N0ZG91dF0gYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAqKVxuXG5sZXQgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBgQ1JcbiIsIm1vZHVsZSBQcHhfc2V4cF9jb252X2xpYiA9IHN0cnVjdFxuICBtb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxuICBtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxuICBtb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbmVuZFxuXG5tb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcbiIsIigqIFRoaXMgbW9kdWxlIGJ1aWxkcyBhIGJ1ZmZlciBvZiBcImluc3RydWN0aW9uc1wiLCBpbiBvcmRlciB0byByZXByZXNlbnQgYSBjb21wYWN0IHNlcXVlbmNlXG4gICBvZiBkZWxpbWl0aW5nIHBvc2l0aW9ucyBhbmQgbmV3bGluZXMuIFRoZSBwYXJzZXIgc3RvcmVzIHRoZSBwb3NpdGlvbnMgb2YgZWFjaDpcblxuICAgLSBuZXdsaW5lXG4gICAtIGJlZ2lubmluZyBvZiBhdG9tXG4gICAtIGVuZCBvZiBhdG9tXG4gICAtIGxlZnQgcGFyZW50aGVzaXNcbiAgIC0gcmlnaHQgcGFyZW50aGVzaXNcblxuICAgSW5zdHJ1Y3Rpb25zIGFyZSBlbmNvZGVkIGFzIGEgc2VxdWVuY2UgYml0cy4gVGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgZGV0ZXJtaW5lZCBieVxuICAgbG9va2luZyBhdCB0aGUgbmV4dCBmZXcgYml0czpcblxuICAgLSBiaXQgMCByZXByZXNlbnRzIGEgc2F2ZWQgcG9zaXRpb24gZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDEwIHJlcHJlc2VudCBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTEwIGFyZSBmb2xsb3dlZCBieSA1IGJpdHMgb2YgcGF5bG9hZC4gVGhlIDUtYml0IHBheWxvYWRzIG9mIGFueSBzdWJzZXF1ZW50IDExMC1cbiAgICAgaW5zdHJ1Y3Rpb25zIGFyZSBzcXVhc2hlZCB0byBmb3JtIGEgbnVtYmVyIChsZWFzdCBzaWduaWZpY2FudCA1LWJpdCBjaHVuayBmaXJzdCkuXG4gICAgIFRoaXMgbnVtYmVyICsgNSByZXByZXNlbnRzIGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMTEwIG1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcgbGluZSAod2l0aCBvZmZzZXQgaW5jcmVtZW50ZWQpXG4gICAtIGJpdHMgMTExMSByZXByZXNlbnQgYSBwb3NpdGlvbiBzYXZlZCB0d2ljZSBmb2xsb3dlZCBieSBhbiBvZmZzZXQgaW5jcmVtZW50XG5cbiAgIEZvciBpbnN0YW5jZSBsZXQncyBjb25zaWRlciB0aGUgZm9sbG93aW5nIHNleHA6XG5cbiAgIHtbXG4gICAgIHt8XG4oYWJjXG4gICAgICBcImZvb1xuIGJhclwiXG4pXG58fVxuICAgXX1cblxuICAgdGhlIHNlcXVlbmNlIG9mIGluc3RydWN0aW9ucyB0byByZWNvcmQgaW4gb3JkZXIgdG8gcmVjb25zdHJ1Y3QgdGhlIHBvc2l0aW9uIG9mIGFueVxuICAgc3ViLXNleHAgaXM6XG5cbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZmlyc3QgJygnXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IHN0YXJ0IG9mIFwiYWJjXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJhYmNcIlxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAxMTAwXzAwMDEgYWR2YW5jZSA2XG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IHN0YXJ0IG9mIFwiZm9vXFxuICBiYXJcIlxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAxMTAwXzAwMDAgYWR2YW5jZSA1XG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGVuZCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogbGFzdCAnKSdcblxuICAgKHdlIHNhdmUgdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzKVxuXG4gICBUaGUgdG90YWwgc2VxdWVuY2UgaXMgNDIgYml0cywgc28gd2UgbmVlZCA2IGJ5dGVzIHRvIHN0b3JlIGl0XG5cbiAgIFRoZSBzZXF1ZW5jZSBvZiBiaXRzIGlzIGVuY29kZWQgYXMgYSBzZXF1ZW5jZSBvZiAxNi1iaXQgdmFsdWVzLCB3aGVyZSB0aGUgZWFybGllciBiaXRzXG4gICBhcmUgbW9zdCBzaWduaWZpY2FudC5cblxuICAgTm90ZSB0aGF0IHRoZSBwYXJzZXIgc3RvcmVzIHRoZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZS4gVGhpcyB3YXkgb25seSBzaW5nbGVcbiAgIGNoYXJhY3RlciBhdG9tcyByZXF1aXJlIGEgZG91YmxlIHBvc2l0aW9ucy4gSWYgd2Ugd2VyZSBzdG9yaW5nIGVuZCBwb3NpdGlvbnMgYXNcbiAgIGV4Y2x1c2l2ZSwgd2Ugd291bGQgbmVlZCBkb3VibGUgcG9zaXRpb25zIGZvciBbKShdIGFuZCBbYShdLCB3aGljaCBhcmUgbGlrZWx5IHRvIGJlXG4gICBmcmVxdWVudCBpbiBzLWV4cHJlc3Npb25zIHByaW50ZWQgd2l0aCB0aGUgbm9uIFtfaHVtXSBwcmludGVyLiBXZSBleHBlY3Qgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgdG8gYmUgbGVzcyBmcmVxdWVudCBzbyBpdCBtYWtlcyBzZW5zZSB0byBwZW5hbGl6ZSB0aGVtIGluc3RlYWQuXG4qKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3MgPVxuICB7IGxpbmUgOiBpbnRcbiAgOyBjb2wgOiBpbnRcbiAgOyBvZmZzZXQgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3BvcyA9XG4gIChmdW4geyBsaW5lID0gbGluZV9fMDAyXzsgY29sID0gY29sX18wMDRfOyBvZmZzZXQgPSBvZmZzZXRfXzAwNl8gfSAtPlxuICAgICBsZXQgYm5kc19fMDAxXyA9IFtdIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgb2Zmc2V0X18wMDZfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwib2Zmc2V0XCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX2ludCBjb2xfXzAwNF8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb2xcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDAzXyA9IHNleHBfb2ZfaW50IGxpbmVfXzAwMl8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiBwb3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcG9zID0gQ2FtbC5jb21wYXJlXG5sZXQgYmVnaW5uaW5nX29mX2ZpbGUgPSB7IGxpbmUgPSAxOyBjb2wgPSAwOyBvZmZzZXQgPSAwIH1cbmxldCBzaGlmdF9wb3MgcG9zIH5jb2xzID0geyBwb3Mgd2l0aCBjb2wgPSBwb3MuY29sICsgY29sczsgb2Zmc2V0ID0gcG9zLm9mZnNldCArIGNvbHMgfVxuXG50eXBlIHJhbmdlID1cbiAgeyBzdGFydF9wb3MgOiBwb3NcbiAgOyBlbmRfcG9zIDogcG9zXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9yYW5nZSA9XG4gIChmdW4geyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAwOV87IGVuZF9wb3MgPSBlbmRfcG9zX18wMTFfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPSBbXSBpblxuICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfcG9zIGVuZF9wb3NfXzAxMV8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX3BvcyBzdGFydF9wb3NfXzAwOV8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA4X1xuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA4X1xuICAgICA6IHJhbmdlIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3JhbmdlID0gQ2FtbC5jb21wYXJlXG5cbmxldCBtYWtlX3JhbmdlX2luY2wgfnN0YXJ0X3BvcyB+bGFzdF9wb3MgPVxuICB7IHN0YXJ0X3BvczsgZW5kX3BvcyA9IHNoaWZ0X3BvcyBsYXN0X3BvcyB+Y29sczoxIH1cbjs7XG5cbm1vZHVsZSBDaHVuayA6IHNpZ1xuICAoKiogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBbbGVuZ3RoLzJdIHNpZ25lZCAxNi1iaXQgdmFsdWVzICopXG4gIHR5cGUgdFxuXG4gICgqKiBMZW5ndGggaW4gYnl0ZXMuICopXG4gIHZhbCBsZW5ndGggOiBpbnRcblxuICB2YWwgYWxsb2MgOiB1bml0IC0+IHRcblxuICAoKiogW2dldDE2IH5wb3NdIGFuZCBbc2V0MTYgfnBvc10gbWFuaXB1bGF0ZSB0aGUgW3Bvcy8yXXRoIHN0b3JlZCB2YWx1ZS5cbiAgICAgIFtwb3NdIG11c3QgYmUgZXZlbi5cbiAgICAgIFtzZXQxNiB4XSBvbmx5IHVzZXMgdGhlIDE2IGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW3hdLiAqKVxuICB2YWwgZ2V0MTYgOiB0IC0+IHBvczppbnQgLT4gaW50XG5cbiAgdmFsIHNldDE2IDogdCAtPiBwb3M6aW50IC0+IGludCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICAoKiBPQ2FtbCBzdHJpbmdzIGFsd2F5cyB3YXN0ZSB0d28gYnl0ZXMgYXQgdGhlIGVuZCwgc28gd2UgdGFrZSBhIHBvd2VyIG9mIHR3byBtaW51cyB0d29cbiAgICAgdG8gYmUgc3VyZSB3ZSBkb24ndCB3YXN0ZSBzcGFjZS4gKilcbiAgbGV0IGxlbmd0aCA9IDYyXG4gIGxldCBhbGxvYyAoKSA9IEJ5dGVzLmNyZWF0ZSBsZW5ndGhcblxuICBleHRlcm5hbCBnZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG4gIGV4dGVybmFsIHNldDE2IDogYnl0ZXMgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuXG4gICgqIElmIHdlIHdhbnQgdG8gbWFrZSBhIFtQb3NpdGlvbnMudF0gc2VyaWFsaXphYmxlOlxuXG4gICAgIHtbXG4gICAgICAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCI7O1xuXG4gICAgICAgbGV0IGdldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyAtPiBnZXQxNiBidWYgfnBvcyB8PiBic3dhcDE2XG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGdldDE2XG5cbiAgICAgICBsZXQgc2V0MTYgPVxuICAgICAgICAgaWYgQ2FtbC5TeXMuYXJjaF9iaWdfZW5kaWFuIHRoZW5cbiAgICAgICAgICAgZnVuIGJ1ZiB+cG9zIHggLT4gc2V0MTYgYnVmIH5wb3MgKGJzd2FwMTYgeClcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgc2V0MTZcbiAgICAgXX1cblxuICAqKVxuZW5kXG5cbnR5cGUgdF8gPVxuICB7IGNodW5rcyA6IENodW5rLnQgbGlzdFxuICA7ICgqIFtudW1fYnl0ZXMgKiA4ICsgZXh0cmFfYml0c10gaXMgdGhlIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbY2h1bmtzXS5cbiAgICAgICBUaGUgbGFzdCBbZXh0cmFfYml0c10gYml0cyB3aWxsIGJlIHN0b3JlZCBhcyB0aGUgKmxlYXN0KiBzaWduaWZpY2FudCBiaXRzXG4gICAgICAgb2YgdGhlIGFwcHJvcHJpYXRlIHBhaXIgb2YgYnl0ZXMgb2YgdGhlIGxhc3QgY2h1bmsuICopXG4gICAgbnVtX2J5dGVzIDogaW50XG4gIDsgZXh0cmFfYml0cyA6IGludFxuICA7IGluaXRpYWxfcG9zIDogcG9zXG4gIH1cblxudHlwZSB0ID0gdF8gTGF6eS50XG5cbmxldCBtZW1vcnlfZm9vdHByaW50X2luX2J5dGVzIChsYXp5IHQpID1cbiAgbGV0IG51bV9maWVsZHMgPSA0IGluXG4gIGxldCBoZWFkZXJfd29yZHMgPSAxIGluXG4gIGxldCB3b3JkX2J5dGVzID1cbiAgICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICB8IDMyIC0+IDRcbiAgICB8IDY0IC0+IDhcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxldCBjaHVua193b3JkcyA9XG4gICAgbGV0IGRpdl9jZWlsIGEgYiA9IChhICsgYiAtIDEpIC8gYiBpblxuICAgIGxldCBuID1cbiAgICAgIGRpdl9jZWlsXG4gICAgICAgIChDaHVuay5sZW5ndGhcbiAgICAgICAgICsgMSAoKiBOVUwgdGVybWluYXRpbmcgYnl0ZXMgKilcbiAgICAgICAgICsgMSAoKiBudW1iZXIgb2Ygd2FzdGVkIGJ5dGVzIHRvIGZpbGwgYSB3b3JkICopKVxuICAgICAgICB3b3JkX2J5dGVzXG4gICAgaW5cbiAgICBuICsgaGVhZGVyX3dvcmRzXG4gIGluXG4gIGxldCBwb3NfZmllbGRzID0gMyBpblxuICBsZXQgcG9zX3dvcmRzID0gaGVhZGVyX3dvcmRzICsgcG9zX2ZpZWxkcyBpblxuICBsZXQgbGlzdF9jb25zX3dvcmRzID0gaGVhZGVyX3dvcmRzICsgMiBpblxuICAoaGVhZGVyX3dvcmRzXG4gICArIG51bV9maWVsZHNcbiAgICsgcG9zX3dvcmRzXG4gICArIChMaXN0Lmxlbmd0aCB0LmNodW5rcyAqIChjaHVua193b3JkcyArIGxpc3RfY29uc193b3JkcykpKVxuICAqIHdvcmRfYnl0ZXNcbjs7XG5cbm1vZHVsZSBCdWlsZGVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNodW5rIDogQ2h1bmsudFxuICAgIDsgbXV0YWJsZSBjaHVua19wb3MgOiBpbnRcbiAgICA7IG11dGFibGUgZmlsbGVkX2NodW5rcyA6IENodW5rLnQgbGlzdCAoKiBGaWxsZWQgY2h1bmtzIGluIHJldmVyc2Ugb3JkZXIgKilcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50XG4gICAgKCogT2Zmc2V0IG9mIHRoZSBsYXN0IHNhdmVkIHBvc2l0aW9uIG9yIG5ld2xpbmUgcGx1c1xuICAgICAgIG9uZSwgb3IgW2luaXRpYWxfcG9zXSAqKVxuICAgIDsgbXV0YWJsZSBpbnRfYnVmIDogaW50XG4gICAgKCogdGhlIFtudW1fYml0c10gbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBbaW50X2J1Zl1cbiAgICAgICBhcmUgdGhlIGJpdHMgbm90IHlldCBwdXNoZWQgdG8gW2NodW5rXS4gKilcbiAgICA7IG11dGFibGUgbnVtX2JpdHMgOiBpbnQgKCogbnVtYmVyIG9mIGJpdHMgc3RvcmVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBpbml0aWFsX3BvcyA6IHBvc1xuICAgIH1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAodC5jaHVua19wb3MgPj0gMCAmJiB0LmNodW5rX3BvcyA8PSBDaHVuay5sZW5ndGgpO1xuICAgIGFzc2VydCAodC5vZmZzZXQgPj0gdC5pbml0aWFsX3Bvcy5vZmZzZXQpO1xuICAgIGFzc2VydCAodC5udW1fYml0cyA8PSAxNSlcbiAgOztcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gZmFsc2VcbiAgbGV0IGludmFyaWFudCB0ID0gaWYgY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHRcblxuICBsZXQgY3JlYXRlID8oaW5pdGlhbF9wb3MgPSBiZWdpbm5pbmdfb2ZfZmlsZSkgKCkgPVxuICAgIHsgY2h1bmsgPSBDaHVuay5hbGxvYyAoKVxuICAgIDsgY2h1bmtfcG9zID0gMFxuICAgIDsgZmlsbGVkX2NodW5rcyA9IFtdXG4gICAgOyBvZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXRcbiAgICA7IGludF9idWYgPSAwXG4gICAgOyBudW1fYml0cyA9IDBcbiAgICA7IGluaXRpYWxfcG9zXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldCB0IChwb3MgOiBwb3MpID1cbiAgICAoKiBXZSBuZWVkIGEgbmV3IGNodW5rIGFzIFtjb250ZW50c10ga2VlcHMgdGhlIGN1cnJlbnQgY2h1bmsgaW4gdGhlIGNsb3N1cmUgb2YgdGhlXG4gICAgICAgbGF6eSB2YWx1ZS4gKilcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDA7XG4gICAgdC5maWxsZWRfY2h1bmtzIDwtIFtdO1xuICAgIHQub2Zmc2V0IDwtIHBvcy5vZmZzZXQ7XG4gICAgdC5pbnRfYnVmIDwtIDA7XG4gICAgdC5udW1fYml0cyA8LSAwO1xuICAgIHQuaW5pdGlhbF9wb3MgPC0gcG9zXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmVkIG5ldmVyXSBhbGxvY19uZXdfY2h1bmsgdCA9XG4gICAgdC5maWxsZWRfY2h1bmtzIDwtIHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzO1xuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMFxuICA7O1xuXG4gIGxldCBhZGRfdWludDE2IHQgbiA9XG4gICAgaWYgdC5jaHVua19wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBhbGxvY19uZXdfY2h1bmsgdDtcbiAgICBDaHVuay5zZXQxNiB0LmNodW5rIH5wb3M6dC5jaHVua19wb3MgblxuICA7O1xuXG4gIGxldCBhZGRfYml0cyB0IG4gfm51bV9iaXRzID1cbiAgICBsZXQgaW50X2J1ZiA9ICh0LmludF9idWYgbHNsIG51bV9iaXRzKSBsb3IgbiBpblxuICAgIGxldCBudW1fYml0cyA9IHQubnVtX2JpdHMgKyBudW1fYml0cyBpblxuICAgIHQuaW50X2J1ZiA8LSBpbnRfYnVmO1xuICAgIGlmIG51bV9iaXRzIDwgMTZcbiAgICB0aGVuIHQubnVtX2JpdHMgPC0gbnVtX2JpdHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fYml0cyA9IG51bV9iaXRzIC0gMTYgaW5cbiAgICAgIHQubnVtX2JpdHMgPC0gbnVtX2JpdHM7XG4gICAgICBhZGRfdWludDE2IHQgKGludF9idWYgbHNyIG51bV9iaXRzKTtcbiAgICAgIHQuY2h1bmtfcG9zIDwtIHQuY2h1bmtfcG9zICsgMlxuICAgICAgKCogbm8gbmVlZCB0byBjbGVhciB0aGUgYml0cyBvZiBpbnRfYnVmIHdlIGp1c3Qgd3JvdGUsIGFzIGZ1cnRoZXIgc2V0MTYgd2lsbCBpZ25vcmVcbiAgICAgICAgIHRoZXNlIGV4dHJhIGJpdHMuICopKVxuICA7O1xuXG4gIGxldCBjb250ZW50cyB0ID1cbiAgICAoKiBGbHVzaCB0aGUgY3VycmVudCBbdC5pbnRfYnVmXSAqKVxuICAgIGFkZF91aW50MTYgdCB0LmludF9idWY7XG4gICAgbGV0IHJldl9jaHVua3MgPSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcyBpblxuICAgIGxldCBjaHVua19wb3MgPSB0LmNodW5rX3BvcyBpblxuICAgIGxldCBleHRyYV9iaXRzID0gdC5udW1fYml0cyBpblxuICAgIGxldCBpbml0aWFsX3BvcyA9IHQuaW5pdGlhbF9wb3MgaW5cbiAgICBsYXp5XG4gICAgICB7IGNodW5rcyA9IExpc3QucmV2IHJldl9jaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gKChMaXN0Lmxlbmd0aCByZXZfY2h1bmtzIC0gMSkgKiBDaHVuay5sZW5ndGgpICsgY2h1bmtfcG9zXG4gICAgICA7IGV4dHJhX2JpdHNcbiAgICAgIDsgaW5pdGlhbF9wb3NcbiAgICAgIH1cbiAgOztcblxuICBsZXQgbG9uZ19zaGlmdCB0IG4gPVxuICAgIGxldCBuID0gcmVmIChuIC0gNSkgaW5cbiAgICB3aGlsZSAhbiA+IDAgZG9cbiAgICAgIGFkZF9iaXRzIHQgKDBiMTEwMF8wMDAwIGxvciAoIW4gbGFuZCAwYjAwMDFfMTExMSkpIH5udW1fYml0czo4O1xuICAgICAgbiA6PSAhbiBsc3IgNVxuICAgIGRvbmVcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IG4gPj0gNSAqKVxuICBsZXRbQGlubGluZWQgbmV2ZXJdIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBsb25nX3NoaWZ0IHQgbjtcbiAgICBhZGRfYml0cyB0IGluc3RyIH5udW1fYml0czppbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IHNoaWZ0NCA9IDBiMTBfMTBfMTBfMTBcblxuICBsZXRbQGlubGluZSBhbHdheXNdIGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgbGV0IG4gPSBvZmZzZXQgLSB0Lm9mZnNldCBpblxuICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAwIHwgMSB8IDIgfCAzIHwgNCAtPlxuICAgICAgbGV0IG51bV9iaXRzID0gKG4gbHNsIDEpICsgaW5zdHJfYml0cyBpblxuICAgICAgYWRkX2JpdHMgdCAoKHNoaWZ0NCBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSkgfm51bV9iaXRzXG4gICAgfCA1XG4gICAgfCA2XG4gICAgfCA3XG4gICAgfCA4XG4gICAgfCA5XG4gICAgfCAxMFxuICAgIHwgMTFcbiAgICB8IDEyXG4gICAgfCAxM1xuICAgIHwgMTRcbiAgICB8IDE1XG4gICAgfCAxNlxuICAgIHwgMTdcbiAgICB8IDE4XG4gICAgfCAxOVxuICAgIHwgMjBcbiAgICB8IDIxXG4gICAgfCAyMlxuICAgIHwgMjNcbiAgICB8IDI0XG4gICAgfCAyNVxuICAgIHwgMjZcbiAgICB8IDI3XG4gICAgfCAyOFxuICAgIHwgMjlcbiAgICB8IDMwXG4gICAgfCAzMVxuICAgIHwgMzJcbiAgICB8IDMzXG4gICAgfCAzNFxuICAgIHwgMzVcbiAgICB8IDM2IC0+XG4gICAgICBhZGRfYml0c1xuICAgICAgICB0XG4gICAgICAgICgoKDBiMTEwMF8wMDAwIGxvciAobiAtIDUpKSBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyKVxuICAgICAgICB+bnVtX2JpdHM6KDggKyBpbnN0cl9iaXRzKVxuICAgIHwgXyAtPlxuICAgICAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmFkZF9nZW5cIjtcbiAgICAgIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIwIH5pbnN0cl9iaXRzOjFcbiAgbGV0IGFkZF90d2ljZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTExIH5pbnN0cl9iaXRzOjRcbiAgbGV0IGFkZF9uZXdsaW5lIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTAgfmluc3RyX2JpdHM6NFxuZW5kXG5cbnR5cGUgcG9zaXRpb25zID0gdFxuXG5tb2R1bGUgSXRlcmF0b3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHBvc2l0aW9ucyAtPiB0XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICAoKiBbYWR2YW5jZSB0IH5za2lwXSBpZ25vcmVzIFtza2lwXSBzYXZlZCBwb3NpdGlvbnMgYW5kIHJldHVybnMgdGhlIG5leHQgc2F2ZWQgcG9zaXRpb24uXG4gICAgIFJhaXNlcyBbTm9fbW9yZV0gd2hlbiByZWFjaGluZyB0aGUgZW5kIG9mIHRoZSBwb3NpdGlvbiBzZXQuICopXG4gIHZhbCBhZHZhbmNlX2V4biA6IHQgLT4gc2tpcDppbnQgLT4gcG9zXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rcyA6IENodW5rLnQgbGlzdFxuICAgIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgYXZhaWxhYmxlIGZyb20gW2luc3RyX3Bvc10gaW5cbiAgICAgICAgIFtjaHVuayA6OiBjaHVua3NdLiAqKVxuICAgICAgbXV0YWJsZSBudW1fYnl0ZXMgOiBpbnRcbiAgICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgICA7IG11dGFibGUgaW5zdHJfcG9zIDogaW50ICgqIHBvc2l0aW9uIGluIFtjaHVua10gKilcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGxpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sIDogaW50XG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX2JpdHMgOiBpbnQgKCogTnVtYmVyIG9mIGJpdHMgbm90IHlldCBjb25zdW1lZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgcGVuZGluZyA6IHBvcyBvcHRpb25cbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSAoKGxhenkgcCkgOiBwb3NpdGlvbnMpID1cbiAgICBtYXRjaCBwLmNodW5rcyB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IGNodW5rIDo6IGNodW5rcyAtPlxuICAgICAgeyBjaHVua1xuICAgICAgOyBjaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gcC5udW1fYnl0ZXNcbiAgICAgIDsgZXh0cmFfYml0cyA9IHAuZXh0cmFfYml0c1xuICAgICAgOyBpbnN0cl9wb3MgPSAwXG4gICAgICA7IG9mZnNldCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgICA7IGxpbmUgPSBwLmluaXRpYWxfcG9zLmxpbmVcbiAgICAgIDsgYm9sID0gcC5pbml0aWFsX3Bvcy5vZmZzZXQgLSBwLmluaXRpYWxfcG9zLmNvbFxuICAgICAgOyBpbnRfYnVmID0gMFxuICAgICAgOyBudW1fYml0cyA9IDBcbiAgICAgIDsgcGVuZGluZyA9IE5vbmVcbiAgICAgIH1cbiAgOztcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gIGxldCBub19tb3JlICgpID0gcmFpc2Vfbm90cmFjZSBOb19tb3JlXG5cbiAgbGV0W0BpbmxpbmVkIG5ldmVyXSBmZXRjaF9jaHVuayB0ID1cbiAgICBtYXRjaCB0LmNodW5rcyB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IGNodW5rIDo6IGNodW5rcyAtPlxuICAgICAgdC5pbnN0cl9wb3MgPC0gMDtcbiAgICAgIHQubnVtX2J5dGVzIDwtIHQubnVtX2J5dGVzIC0gQ2h1bmsubGVuZ3RoO1xuICAgICAgdC5jaHVuayA8LSBjaHVuaztcbiAgICAgIHQuY2h1bmtzIDwtIGNodW5rc1xuICA7O1xuXG4gIGxldCBmZXRjaCB0ID1cbiAgICBpZiB0Lmluc3RyX3BvcyA+IHQubnVtX2J5dGVzIHRoZW4gbm9fbW9yZSAoKTtcbiAgICBpZiB0Lmluc3RyX3BvcyA9IENodW5rLmxlbmd0aCB0aGVuIGZldGNoX2NodW5rIHQ7XG4gICAgbGV0IHYgPSBDaHVuay5nZXQxNiB0LmNodW5rIH5wb3M6dC5pbnN0cl9wb3MgaW5cbiAgICBsZXQgYWRkZWRfYml0cyA9IGlmIHQuaW5zdHJfcG9zID0gdC5udW1fYnl0ZXMgdGhlbiB0LmV4dHJhX2JpdHMgZWxzZSAxNiBpblxuICAgIHQuaW50X2J1ZiA8LSAodC5pbnRfYnVmIGxzbCBhZGRlZF9iaXRzKSBsb3IgKHYgbGFuZCAoKDEgbHNsIGFkZGVkX2JpdHMpIC0gMSkpO1xuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyArIGFkZGVkX2JpdHM7XG4gICAgdC5pbnN0cl9wb3MgPC0gdC5pbnN0cl9wb3MgKyAyXG4gIDs7XG5cbiAgbGV0IG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0cyA9XG4gICAgaWYgdC5udW1fYml0cyA8IG51bV9iaXRzXG4gICAgdGhlbiAoXG4gICAgICBmZXRjaCB0O1xuICAgICAgaWYgdC5udW1fYml0cyA8IG51bV9iaXRzIHRoZW4gbm9fbW9yZSAoKSk7XG4gICAgbGV0IG4gPSAodC5pbnRfYnVmIGxzciAodC5udW1fYml0cyAtIG51bV9iaXRzKSkgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpIGluXG4gICAgdC5udW1fYml0cyA8LSB0Lm51bV9iaXRzIC0gbnVtX2JpdHM7XG4gICAgblxuICA7O1xuXG4gICgqIFtvZmZzZXRfc2hpZnRdIGFuZCBbb2Zmc2V0X3NoaWZ0X251bV9iaXRzXSBlbmNvZGUgdGhlIG9mZnNldCBudW1iZXJcbiAgICAgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcgWzExMF0gaW5zdHJ1Y3Rpb25zLiAqKVxuICBsZXQgcmVjIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0IH5vZmZzZXRfc2hpZnRfbnVtX2JpdHMgPVxuICAgIG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgICgqIGJpdCBzZXEgMCAtPiBuZXcgaXRlbSAqKVxuICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgaWYgc2tpcCA9IDBcbiAgICAgIHRoZW4geyBsaW5lID0gdC5saW5lOyBjb2wgPSBvZmZzZXQgLSB0LmJvbDsgb2Zmc2V0IH1cbiAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMSkgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICB8IDAgLT5cbiAgICAgICAgICgqIGJpdCBzZXEgMTAgLT4gc2hpZnQgKilcbiAgICAgICAgIHQub2Zmc2V0IDwtIHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0ICsgMTtcbiAgICAgICAgIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgICAgfCBfIC0+XG4gICAgICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgKCogYml0IHNlcSAxMTAgLT4gbG9uZyBzaGlmdCAqKVxuICAgICAgICAgICAgbGV0IG4gPSBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6NSBpblxuICAgICAgICAgICAgbGV0IG9mZnNldF9zaGlmdCA9IGlmIG9mZnNldF9zaGlmdF9udW1fYml0cyA9IDAgdGhlbiA1IGVsc2Ugb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICBhZHZhbmNlXG4gICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgfnNraXBcbiAgICAgICAgICAgICAgfm9mZnNldF9zaGlmdDoob2Zmc2V0X3NoaWZ0ICsgKG4gbHNsIG9mZnNldF9zaGlmdF9udW1fYml0cykpXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6KG9mZnNldF9zaGlmdF9udW1fYml0cyArIDUpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgKCogYml0IHNlcSAxMTEwIC0+IG5ld2xpbmUgKilcbiAgICAgICAgICAgICAgIHQub2Zmc2V0IDwtIHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0ICsgMTtcbiAgICAgICAgICAgICAgIHQuYm9sIDwtIHQub2Zmc2V0O1xuICAgICAgICAgICAgICAgdC5saW5lIDwtIHQubGluZSArIDE7XG4gICAgICAgICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgKCogYml0IHNlcSAxMTExIC0+IDIgbmV3IGl0ZW1zICopXG4gICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgaW5cbiAgICAgICAgICAgICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgICAgICAgICAgICBpZiBza2lwIDw9IDFcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBsZXQgcG9zID0geyBsaW5lID0gdC5saW5lOyBjb2wgPSBvZmZzZXQgLSB0LmJvbDsgb2Zmc2V0IH0gaW5cbiAgICAgICAgICAgICAgICAgaWYgc2tpcCA9IDAgdGhlbiB0LnBlbmRpbmcgPC0gU29tZSBwb3M7XG4gICAgICAgICAgICAgICAgIHBvcylcbiAgICAgICAgICAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMikgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MCkpKVxuICA7O1xuXG4gIGxldCBhZHZhbmNlX2V4biB0IH5za2lwID1cbiAgICBtYXRjaCB0LnBlbmRpbmcgd2l0aFxuICAgIHwgU29tZSBwb3MgLT5cbiAgICAgIHQucGVuZGluZyA8LSBOb25lO1xuICAgICAgaWYgc2tpcCA9IDBcbiAgICAgIHRoZW4gcG9zXG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IE5vbmUgLT4gYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgOztcbmVuZFxuXG5sZXQgZmluZCB0IGEgYiA9XG4gIGlmIGEgPCAwIHx8IGIgPD0gYSB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuZmluZFwiO1xuICBsZXQgaXRlciA9IEl0ZXJhdG9yLmNyZWF0ZSB0IGluXG4gIHRyeVxuICAgIGxldCBzdGFydF9wb3MgPSBJdGVyYXRvci5hZHZhbmNlX2V4biBpdGVyIH5za2lwOmEgaW5cbiAgICBsZXQgbGFzdF9wb3MgPSBJdGVyYXRvci5hZHZhbmNlX2V4biBpdGVyIH5za2lwOihiIC0gYSAtIDEpIGluXG4gICAgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zXG4gIHdpdGhcbiAgfCBJdGVyYXRvci5Ob19tb3JlIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5Qb3NpdGlvbi5maW5kXCJcbjs7XG5cbmxldCByZWMgc3ViX3NleHBfY291bnQgKHNleHAgOiBTZXhwLnQpID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBfIC0+IDFcbiAgfCBMaXN0IGwgLT4gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdDoxIH5mOihmdW4gYWNjIHggLT4gYWNjICsgc3ViX3NleHBfY291bnQgeClcbjs7XG5cbm1vZHVsZSBTZXhwX3NlYXJjaCA9IHN0cnVjdFxuICBleGNlcHRpb24gRm91bmQgb2YgaW50XG5cbiAgbGV0IHJlYyBsb29wIH5zdWIgaW5kZXggKHNleHAgOiBTZXhwLnQpID1cbiAgICBpZiBzZXhwID09IHN1YlxuICAgIHRoZW4gcmFpc2Vfbm90cmFjZSAoRm91bmQgaW5kZXgpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgQXRvbSBfIC0+IGluZGV4ICsgMlxuICAgICAgfCBMaXN0IGwgLT5cbiAgICAgICAgbGV0IGluZGV4ID0gbG9vcF9saXN0IH5zdWIgKGluZGV4ICsgMSkgbCBpblxuICAgICAgICBpbmRleCArIDEpXG5cbiAgYW5kIGxvb3BfbGlzdCB+c3ViIGluZGV4IChzZXhwcyA6IFNleHAudCBsaXN0KSA9XG4gICAgTGlzdC5mb2xkX2xlZnQgc2V4cHMgfmluaXQ6aW5kZXggfmY6KGxvb3AgfnN1YilcbiAgOztcblxuICBsZXQgZmluYWxpemUgdCB+c3ViIGEgPVxuICAgIGxldCBiID0gYSArIChzdWJfc2V4cF9jb3VudCBzdWIgKiAyKSAtIDEgaW5cbiAgICBTb21lIChmaW5kIHQgYSBiKVxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX3BoeXMgdCBzZXhwIH5zdWIgPVxuICAgIG1hdGNoIGxvb3AgfnN1YiAwIHNleHAgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5cbiAgbGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIHQgc2V4cHMgfnN1YiA9XG4gICAgbWF0Y2ggbG9vcF9saXN0IH5zdWIgMCBzZXhwcyB3aXRoXG4gICAgfCAoXyA6IGludCkgLT4gTm9uZVxuICAgIHwgZXhjZXB0aW9uIEZvdW5kIG4gLT4gZmluYWxpemUgdCB+c3ViIG5cbiAgOztcbmVuZFxuXG5sZXQgZmluZF9zdWJfc2V4cF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9waHlzXG5sZXQgZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXMgPSBTZXhwX3NlYXJjaC5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBtYXRjaCBJdGVyYXRvci5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEl0ZXJhdG9yLk5vX21vcmUgLT4gTGlzdC5yZXYgYWNjXG4gICAgfCBwb3MgLT4gbG9vcCAocG9zIDo6IGFjYylcbiAgaW5cbiAgbG9vcCBbXVxuOztcblxubGV0IHRvX2FycmF5IHQgPSB0b19saXN0IHQgfD4gQXJyYXkub2ZfbGlzdFxubGV0IGNvbXBhcmUgdDEgdDIgPSBDYW1sLmNvbXBhcmUgKHRvX2FycmF5IHQxKSAodG9fYXJyYXkgdDIpXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfcG9zICh0b19hcnJheSB0KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQXRvbSBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgYXRvbSA6IHN0cmluZ1xuICAgICAgOyB1bmVzY2FwZWQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICB9XG4gIHwgTGlzdCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgZWxlbWVudHMgOiB0X29yX2NvbW1lbnQgbGlzdFxuICAgICAgfVxuXG5hbmQgdF9vcl9jb21tZW50ID1cbiAgfCBTZXhwIG9mIHRcbiAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuYW5kIGNvbW1lbnQgPVxuICB8IFBsYWluX2NvbW1lbnQgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGNvbW1lbnQgOiBzdHJpbmdcbiAgICAgIH1cbiAgfCBTZXhwX2NvbW1lbnQgb2ZcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgIDsgY29tbWVudHMgOiBjb21tZW50IGxpc3RcbiAgICAgIDsgc2V4cCA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgcmVjIHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgQXRvbSB7IGxvYyA9IGxvY19fMDAyXzsgYXRvbSA9IGF0b21fXzAwNF87IHVuZXNjYXBlZCA9IHVuZXNjYXBlZF9fMDA2XyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAxXyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX3N0cmluZyB1bmVzY2FwZWRfXzAwNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidW5lc2NhcGVkXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX3N0cmluZyBhdG9tX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImF0b21cIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDAzXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDAyXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiQXRvbVwiIDo6IGJuZHNfXzAwMV8pXG4gICAgfCBMaXN0IHsgbG9jID0gbG9jX18wMDlfOyBlbGVtZW50cyA9IGVsZW1lbnRzX18wMTFfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDhfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX3Rfb3JfY29tbWVudCBlbGVtZW50c19fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbGVtZW50c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgICBsZXQgYXJnX18wMTBfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDlfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJMaXN0XCIgOjogYm5kc19fMDA4XylcbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbmFuZCBzZXhwX29mX3Rfb3JfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgU2V4cCBhcmcwX18wMTNfIC0+XG4gICAgICBsZXQgcmVzMF9fMDE0XyA9IHNleHBfb2ZfdCBhcmcwX18wMTNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwXCI7IHJlczBfXzAxNF8gXVxuICAgIHwgQ29tbWVudCBhcmcwX18wMTVfIC0+XG4gICAgICBsZXQgcmVzMF9fMDE2XyA9IHNleHBfb2ZfY29tbWVudCBhcmcwX18wMTVfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJDb21tZW50XCI7IHJlczBfXzAxNl8gXVxuICAgICAgOiB0X29yX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl9jb21tZW50ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IHsgbG9jID0gbG9jX18wMThfOyBjb21tZW50ID0gY29tbWVudF9fMDIwXyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDE3XyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAyMV8gPSBzZXhwX29mX3N0cmluZyBjb21tZW50X18wMjBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbW1lbnRcIjsgYXJnX18wMjFfIF0gOjogYm5kc19fMDE3X1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDE5XyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDE4XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMTlfIF0gOjogYm5kc19fMDE3X1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGxhaW5fY29tbWVudFwiIDo6IGJuZHNfXzAxN18pXG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zID0gaGFzaF9zZW1pX3Bvc19fMDIzX1xuICAgICAgICA7IGNvbW1lbnRzID0gY29tbWVudHNfXzAyNV9cbiAgICAgICAgOyBzZXhwID0gc2V4cF9fMDI3X1xuICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDIyXyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyOF8gPSBzZXhwX29mX3Qgc2V4cF9fMDI3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXhwXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9jb21tZW50IGNvbW1lbnRzX18wMjVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbW1lbnRzXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgaGFzaF9zZW1pX3Bvc19fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJoYXNoX3NlbWlfcG9zXCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBfY29tbWVudFwiIDo6IGJuZHNfXzAyMl8pXG4gICAgICA6IGNvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmUgPSBDYW1sLmNvbXBhcmVcbmxldCBjb21wYXJlX3Rfb3JfY29tbWVudCA9IENhbWwuY29tcGFyZVxubGV0IGNvbXBhcmVfY29tbWVudCA9IENhbWwuY29tcGFyZVxuXG5tb2R1bGUgRm9yZ2V0ID0gc3RydWN0XG4gICgqIEluIGNwcyB0byBwcmV2ZW50IG5vbi10YWlsIHJlY3Vyc2lvbi5cbiAgICAgVGhlIHBvbHltb3JwaGlzbSBpbiB0aGUgc2lnbmF0dXJlIGVuc3VyZXMgdGhhdCBlYWNoIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgb25seSB0aHJvdWdoIHRoZSBjb250aW51YXRpb24uICopXG4gIG1vZHVsZSBDcHMgOiBzaWdcbiAgICB2YWwgZm9yZ2V0X3QgOiB0IC0+IChTZXhwLnQgLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2MgOiB0X29yX2NvbW1lbnQgLT4gKFNleHAudCBvcHRpb24gLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2NzIDogdF9vcl9jb21tZW50IGxpc3QgLT4gKFNleHAudCBsaXN0IC0+ICdyKSAtPiAnclxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIGZvcmdldF90IHQgayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQXRvbSB7IGF0b207IF8gfSAtPiBrIChTZXhwLkF0b20gYXRvbSlcbiAgICAgIHwgTGlzdCB7IGVsZW1lbnRzOyBfIH0gLT4gZm9yZ2V0X3RvY3MgZWxlbWVudHMgKGZ1biB4cyAtPiBrIChTZXhwLkxpc3QgeHMpKVxuXG4gICAgYW5kIGZvcmdldF90b2NzIHRvY3MgayA9XG4gICAgICBtYXRjaCB0b2NzIHdpdGhcbiAgICAgIHwgW10gLT4gayBbXVxuICAgICAgfCB0b2MgOjogdG9jcyAtPlxuICAgICAgICBmb3JnZXRfdG9jIHRvYyAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZm9yZ2V0X3RvY3MgdG9jcyBrXG4gICAgICAgICAgfCBTb21lIHggLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKHggOjogeHMpKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jIHRvYyBrID1cbiAgICAgIG1hdGNoIHRvYyB3aXRoXG4gICAgICB8IENvbW1lbnQgXyAtPiBrIE5vbmVcbiAgICAgIHwgU2V4cCB0IC0+IGZvcmdldF90IHQgKGZ1biB4IC0+IGsgKFNvbWUgeCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHQgeCA9IENwcy5mb3JnZXRfdCB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50IHggPSBDcHMuZm9yZ2V0X3RvYyB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50cyB4ID0gQ3BzLmZvcmdldF90b2NzIHggKGZ1biB5IC0+IHkpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhY2tfaW50ZlxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IFRfb3JfY29tbWVudCBvZiBDc3QudF9vcl9jb21tZW50ICogdFxuICAgIHwgT3BlbiBvZiBQb3NpdGlvbnMucG9zICogdFxuICAgIHwgSW5fc2V4cF9jb21tZW50IG9mXG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgICAgOyByZXZfY29tbWVudHMgOiBDc3QuY29tbWVudCBsaXN0XG4gICAgICAgIDsgc3RhY2sgOiB0XG4gICAgICAgIH1cblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBnZXRfbWFueSA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY1xuICAgICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBsb29wICh0IDo6IGFjYykgc3RhY2tcbiAgICAgIHwgT3BlbiBfIHwgSW5fc2V4cF9jb21tZW50IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueVwiXG4gICAgaW5cbiAgICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuICA7O1xuZW5kXG5cbm1vZHVsZSBKdXN0X3Bvc2l0aW9ucyA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0XG5cbiAgbGV0IGVtcHR5ID0gKClcbmVuZFxuXG50eXBlIHQgPVxuICB8IEVtcHR5XG4gIHwgT3BlbiBvZiB0XG4gIHwgU2V4cCBvZiBTZXhwLnQgKiB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBnZXRfc2luZ2xlID0gZnVuY3Rpb25cbiAgfCBTZXhwIChzZXhwLCBFbXB0eSkgLT4gc2V4cFxuICB8IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZVwiXG47O1xuXG5sZXQgZ2V0X21hbnkgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgT3BlbiBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9tYW55XCJcbiAgICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBsb29wIChzZXhwIDo6IGFjYykgc3RhY2tcbiAgaW5cbiAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFNleHBfY29tbWVudFxuICAgIHwgU2V4cFxuZW5kXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0b2tlbl9idWZmZXIgOiBCdWZmZXIudCAoKiogU3RhcnRpbmcgcG9zaXRpb25zIG9mIHRoZSBjdXJyZW50IHRva2VuICoqKVxuICAgIDsgbXV0YWJsZSB0b2tlbl9zdGFydF9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBQb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgdW5pdCkgdFxuICAgIHwgU2V4cCA6ICh1bml0LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgQ3N0IDogKEZvcl9jc3QudCwgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCkgdFxuZW5kXG5cbm1vZHVsZSByZWMgU3RhdGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB7IG11dGFibGUgYXV0b21hdG9uX3N0YXRlIDogaW50XG4gICAgOyBraW5kIDogKCd1LCAncykgS2luZC50XG4gICAgOyBtdXRhYmxlIGRlcHRoIDogaW50ICgqKiBOdW1iZXIgb2Ygb3BlbmVkICN8IHdoZW4gcGFyc2luZyBhIGJsb2NrIGNvbW1lbnQgKilcbiAgICA7IG11dGFibGUgYmxvY2tfY29tbWVudF9kZXB0aCA6IGludFxuICAgICgqKiBTdGFjayBvZiBpZ25vcmluZyBkZXB0aHM7IHRoZSBjdXJyZW50IGRlcHRoIGlzIHB1c2hlZFxuICAgICAgICBlYWNoIHRpbWUgYSAjOyBjb21tZW50IGlzIGVudGVyZWQuICopXG4gICAgOyBtdXRhYmxlIGlnbm9yaW5nX3N0YWNrIDogaW50IGxpc3RcbiAgICAoKiogV2hlbiBwYXJzaW5nIGFuIGVzY2FwZSBzZXF1ZW5jZSBvZiB0aGUgZm9ybSBcIlxcXFxOTk5cIiBvciBcIlxcXFxYWFwiLCB0aGlzIGFjY3VtdWxhdGVzXG4gICAgICAgIHRoZSBjb21wdXRlZCBudW1iZXIgKilcbiAgICA7IG11dGFibGUgZXNjYXBlZF92YWx1ZSA6IGludCAoKiogQnVmZmVyIGZvciBhY2N1bXVsYXRpbmcgYXRvbXMgKilcbiAgICA7IGF0b21fYnVmZmVyIDogQnVmZmVyLnRcbiAgICA7IHVzZXJfc3RhdGUgOiAndVxuICAgIDsgbW9kZSA6ICgndSwgJ3MpIE1vZGUudFxuICAgIDsgbXV0YWJsZSBmdWxsX3NleHBzIDogaW50XG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludCAoKiogZ2xvYmFsIG9mZnNldCAqKilcbiAgICA7IG11dGFibGUgbGluZV9udW1iZXIgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sX29mZnNldCA6IGludCAoKiogb2Zmc2V0IG9mIGJlZ2lubmluZyBvZiBsaW5lICoqKVxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBNb2RlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBTaW5nbGVcbiAgICB8IE1hbnlcbiAgICB8IEVhZ2VyIG9mXG4gICAgICAgIHsgZ290X3NleHAgOiAoJ3UsICdzKSBTdGF0ZS50IC0+ICdzIC0+ICdzXG4gICAgICAgIDsgbXV0YWJsZSBub19zZXhwX2lzX2Vycm9yIDogYm9vbFxuICAgICAgICB9XG5lbmQgPVxuICBNb2RlXG5cbm1vZHVsZSB0eXBlIEF1dG9tYXRvbl9zdGF0ZSA9IHNpZ1xuICBtb2R1bGUgQ29udGV4dCA9IENvbnRleHRcbiAgbW9kdWxlIEZvcl9jc3QgPSBGb3JfY3N0XG4gIG1vZHVsZSBLaW5kID0gS2luZFxuICBtb2R1bGUgTW9kZSA9IE1vZGVcbiAgbW9kdWxlIFN0YXRlID0gU3RhdGVcblxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9pbml0aWFsX3BvczpQb3NpdGlvbnMucG9zXG4gICAgLT4gKCd1LCAncykgTW9kZS50XG4gICAgLT4gKCd1LCAncykgS2luZC50XG4gICAgLT4gKCd1LCAncykgdFxuXG4gIHZhbCByZXNldCA6ID9wb3M6UG9zaXRpb25zLnBvcyAtPiBfIHQgLT4gdW5pdFxuICB2YWwgcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIF8pIHQgLT4gUG9zaXRpb25zLnRcbiAgdmFsIG1vZGUgOiAoJ3UsICdzKSB0IC0+ICgndSwgJ3MpIE1vZGUudFxuXG4gICgqKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBmZWQgdG8gdGhlIHBhcnNlciAqKVxuICB2YWwgb2Zmc2V0IDogXyB0IC0+IGludFxuXG4gICgqKiBQb3NpdGlvbiBpbiB0aGUgdGV4dCAqKVxuICB2YWwgbGluZSA6IF8gdCAtPiBpbnRcblxuICB2YWwgY29sdW1uIDogXyB0IC0+IGludFxuXG4gICgqKiBXaGV0aGVyIHRoZXJlIGFyZSBzb21lIHVuY2xvc2VkIHBhcmVudGhlc2VzICopXG4gIHZhbCBoYXNfdW5jbG9zZWRfcGFyZW4gOiAoJ3UsICdzKSB0IC0+IGJvb2xcblxuICB2YWwgc2V0X2Vycm9yX3N0YXRlIDogXyB0IC0+IHVuaXRcblxuICAoKiovKiopXG5cbiAgKCpfIE9ubHkgZm9yIGNvbnZlcnRpbmcgZXJyb3JzIHRvIHRoZSBvbGQgcGFyc2VyIGVycm9ycyAqKVxuICB2YWwgYXRvbV9idWZmZXIgOiBfIHQgLT4gQnVmZmVyLnRcblxuICAoKl8gRm9yIGNvdmVyYXRlIHRlc3RzICopXG4gIHZhbCBhdXRvbWF0b25fc3RhdGUgOiAoJ3UsICdzKSB0IC0+IGludFxuICB2YWwgY29udGV4dCA6IF8gdCAtPiBDb250ZXh0LnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZV9pbnRmXG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxub3BlbiBTdGF0ZVxuXG5sZXQgaW5pdGlhbF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gUG9zaXRpb25zLnBvcyAtPiB1ID1cbiAgZnVuIGtpbmQgaW5pdGlhbF9wb3MgLT5cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgQ3N0IC0+XG4gICAgKCogW3Rva2VuX3N0YXJ0X3Bvc10gaXMgc2V0IHRvIGEgZHVtbXkgbG9jYXRpb24gaGVyZS4gSXQgaXMgcHJvcGVybHkgc2V0IHdoZW4gd2VcbiAgICAgICBzdGFydCB0byBjYXB0dXJlIGEgdG9rZW4gZnJvbSB0aGUgaW5wdXQgKilcbiAgICB7IHRva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4OyB0b2tlbl9zdGFydF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUgfVxuOztcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl9zdGF0ZS5wcmludF9jb25zdGFudHMgKCkgKilcbmxldCBpbml0aWFsX3N0YXRlID0gMFxubGV0IGVycm9yX3N0YXRlID0gMVxuXG4oKiQqKVxuXG5sZXQgY3JlYXRlID8oaW5pdGlhbF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIG1vZGUga2luZCA9XG4gIHsga2luZFxuICA7IGRlcHRoID0gMFxuICA7IGF1dG9tYXRvbl9zdGF0ZSA9IGluaXRpYWxfc3RhdGVcbiAgOyBibG9ja19jb21tZW50X2RlcHRoID0gMFxuICA7IGlnbm9yaW5nX3N0YWNrID0gW11cbiAgOyBlc2NhcGVkX3ZhbHVlID0gMFxuICA7IGF0b21fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgOyB1c2VyX3N0YXRlID0gaW5pdGlhbF91c2VyX3N0YXRlIGtpbmQgaW5pdGlhbF9wb3NcbiAgOyBtb2RlXG4gIDsgZnVsbF9zZXhwcyA9IDBcbiAgOyBvZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXRcbiAgOyBsaW5lX251bWJlciA9IGluaXRpYWxfcG9zLmxpbmVcbiAgOyBib2xfb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0IC0gaW5pdGlhbF9wb3MuY29sXG4gIH1cbjs7XG5cbmxldCBtb2RlIHQgPSB0Lm1vZGVcbmxldCBwb3NpdGlvbnMgdCA9IFBvc2l0aW9ucy5CdWlsZGVyLmNvbnRlbnRzIHQudXNlcl9zdGF0ZVxubGV0IGF0b21fYnVmZmVyIHQgPSB0LmF0b21fYnVmZmVyXG5sZXQgb2Zmc2V0IHN0YXRlID0gc3RhdGUub2Zmc2V0XG5sZXQgbGluZSBzdGF0ZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG5sZXQgY29sdW1uIHN0YXRlID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxubGV0IHBvc2l0aW9uIHQgPSB7IFBvc2l0aW9ucy5jb2wgPSBjb2x1bW4gdDsgbGluZSA9IGxpbmUgdDsgb2Zmc2V0ID0gb2Zmc2V0IHQgfVxuXG5sZXQgcmVzZXRfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgdCAtPiB1bml0ID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBDc3QgLT4gQnVmZmVyLmNsZWFyIHQudXNlcl9zdGF0ZS50b2tlbl9idWZmZXJcbjs7XG5cbmxldCByZXNldCA/KHBvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgdCA9XG4gIHQuZGVwdGggPC0gMDtcbiAgdC5hdXRvbWF0b25fc3RhdGUgPC0gaW5pdGlhbF9zdGF0ZTtcbiAgdC5ibG9ja19jb21tZW50X2RlcHRoIDwtIDA7XG4gIHQuaWdub3Jpbmdfc3RhY2sgPC0gW107XG4gIHQuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICB0LmZ1bGxfc2V4cHMgPC0gMDtcbiAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgdC5saW5lX251bWJlciA8LSBwb3MubGluZTtcbiAgdC5ib2xfb2Zmc2V0IDwtIHBvcy5vZmZzZXQgLSBwb3MuY29sO1xuICByZXNldF91c2VyX3N0YXRlIHQ7XG4gIEJ1ZmZlci5jbGVhciB0LmF0b21fYnVmZmVyXG47O1xuXG5sZXQgY29udGV4dCBzdGF0ZSA6IENvbnRleHQudCA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBfIDo6IF8gLT4gU2V4cF9jb21tZW50XG4gIHwgW10gLT4gU2V4cFxuOztcblxubGV0IGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSA9IHN0YXRlLmRlcHRoID4gMFxubGV0IHNldF9lcnJvcl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSBlcnJvcl9zdGF0ZVxubGV0IGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBSZWFzb24gPSBzdHJ1Y3RcbiAgKCpfIFNvbWUgb2YgdGhlc2UgY29tZSBmcm9tIFtQYXJzZXhwX3N5bWJvbGljX2F1dG9tYXRvbi5QYXJzZV9lcnJvcl9yZWFzb25dLiAqKVxuICB0eXBlIHQgPVxuICAgICgqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9wYXJzZV9lcnJvci5wcmludF9jb25zdHJ1Y3RvcnMgKCkgKilcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG4gICAgKCokKilcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZVxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dFxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICAgIHwgVG9vX21hbnlfc2V4cHNcbiAgICB8IFVuY2xvc2VkX3BhcmVuXG5lbmRcblxubW9kdWxlIHR5cGUgUGFyc2VfZXJyb3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHBvc2l0aW9uIDogdCAtPiBQb3NpdGlvbnMucG9zXG4gIHZhbCBtZXNzYWdlIDogdCAtPiBzdHJpbmdcblxuICAoKiogUmVwb3J0IGFuIGVycm9yIGluIGEgc3R5bGUgc2ltaWxhciB0byBPQ2FtbCwgZm9yIGluc3RhbmNlOlxuXG4gICAgICBGaWxlIFwiYmxhaFwiLCBsaW5lIDQyLCBjaGFyYWN0ZXIgMTA6XG4gICAgICBFcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XG4gICAgICB1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZy5cbiAgKilcbiAgdmFsIHJlcG9ydCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHQgLT4gdW5pdFxuXG4gIGV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0XG5cbiAgKCoqLyoqKVxuXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gICAgKCoqIFRvIG1hdGNoIHRoZSBvbGQgYmVoYXZpb3IsIHRoZSBvbGQgcGFyc2VyIHNvbWV0aW1lcyByYWlzZWQgW0ZhaWx1cmVdIGFuZCBzb21ldGltZXNcbiAgICAgICAgcmFpc2VkIFtQYXJzZV9lcnJvcl0gKilcbiAgICB2YWwgb2xkX3BhcnNlcl9leG4gOiB0IC0+IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuXG4gICAgdmFsIHJhaXNlIDogUmVhc29uLnQgLT4gUG9zaXRpb25zLnBvcyAtPiBhdF9lb2Y6Ym9vbCAtPiBhdG9tX2J1ZmZlcjpCdWZmZXIudCAtPiAnYVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlX2Vycm9yX2ludGZcblxudHlwZSB0ID1cbiAgeyBwb3NpdGlvbiA6IFBvc2l0aW9ucy5wb3NcbiAgOyBtZXNzYWdlIDogc3RyaW5nXG4gIDsgb2xkX3BhcnNlcl9leG4gOiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cbiAgfVxuXG5sZXQgc2V4cF9vZl90IHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuID0gXyB9IDogU2V4cC50ID1cbiAgTGlzdFxuICAgIFsgTGlzdCBbIEF0b20gXCJwb3NpdGlvblwiOyBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgcG9zaXRpb24gXVxuICAgIDsgTGlzdCBbIEF0b20gXCJtZXNzYWdlXCI7IHNleHBfb2Zfc3RyaW5nIG1lc3NhZ2UgXVxuICAgIF1cbjs7XG5cbmxldCBwb3NpdGlvbiB0ID0gdC5wb3NpdGlvblxubGV0IG1lc3NhZ2UgdCA9IHQubWVzc2FnZVxubGV0IG9sZF9wYXJzZXJfZXhuIHQgPSB0Lm9sZF9wYXJzZXJfZXhuXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbGV0IHBvcyA9IHBvc2l0aW9uIHQgaW5cbiAgbGV0IG1zZyA9IG1lc3NhZ2UgdCBpblxuICBGb3JtYXQuZnByaW50ZlxuICAgIHBwZlxuICAgIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXIgJWQ6XFxuRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xcbiVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIHBvcy5saW5lXG4gICAgcG9zLmNvbFxuICAgIG1zZ1xuOztcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBhcmcwX18wMDFfIC0+XG4gICAgICBsZXQgcmVzMF9fMDAyXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXJzZV9lcnJvci5tbC5QYXJzZV9lcnJvclwiOyByZXMwX18wMDJfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIChyZWFzb24gOiBSZWFzb24udCkgcG9zaXRpb24gfmF0X2VvZiB+YXRvbV9idWZmZXIgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgKCogVGhlc2UgbWVzc2FnZXMgd2hlcmUgY2hvb3NlbiBzdWNoIHRoYXQgd2UgY2FuIGJ1aWxkIHRoZSB2YXJpb3VzIFNleHBsaWIgcGFyc2luZ1xuICAgICAgIGZ1bmN0aW9ucyBvbiB0b3Agb2YgUGFyc2V4cCBhbmQga2VlcCB0aGUgc2FtZSBleGNlcHRpb25zLlxuXG4gICAgICAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzLCBhIHNpbXBsZSBsYXllciBvbiB0b3Agb2YgcGFyc2V4cCB0byBpbXBsZW1lbnQgdGhlXG4gICAgICAgc2V4cGxpYiBBUEkgaXMgcGFzc2luZyBhbGwgdGhlIHNleHBsaWIgdGVzdHMuXG5cbiAgICAgICBOb3RlIHRoYXQgcGFyc2V4cCBtYXRjaGVzIHRoZSBzZW1hbnRpYyBvZiBTZXhwLnBhcnNlIHdoaWNoIGlzIHNsaWdodGx5XG4gICAgICAgZGlmZmVyZW50IGZyb20gdGhlIG9jYW1sbGV4L29jYW1seWFjYyBiYXNlZCBwYXJzZXIgb2YgU2V4cGxpYi4gVGhlIGxhdHRlciBvbmVcbiAgICAgICBpcyBsZXNzIHRlc3RlZCBhbmQgYXNzdW1lZCB0byBiZSBsZXNzIHVzZWQuICopXG4gICAgbWF0Y2ggcmVhc29uIHdpdGhcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmcgLT4gXCJ1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZ1wiXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudCAtPiBcInVudGVybWluYXRlZCBibG9jayBjb21tZW50XCJcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2UgLT4gXCJlc2NhcGUgc2VxdWVuY2UgaW4gcXVvdGVkIHN0cmluZyBvdXQgb2YgcmFuZ2VcIlxuICAgIHwgVW5jbG9zZWRfcGFyZW4gLT4gXCJ1bmNsb3NlZCBwYXJlbnRoZXNlcyBhdCBlbmQgb2YgaW5wdXRcIlxuICAgIHwgVG9vX21hbnlfc2V4cHMgLT4gXCJzLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YVwiXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWQgLT4gXCJ1bmV4cGVjdGVkIGNoYXJhY3RlcjogJyknXCJcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSAtPlxuICAgICAgaWYgU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiXG4gICAgICB0aGVuIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiXG4gICAgICBlbHNlIFwiY29tbWVudCB0b2tlbnMgaW4gdW5xdW90ZWQgYXRvbVwiXG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwIC0+IFwidW50ZXJtaW5hdGVkIHNleHAgY29tbWVudFwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jciAtPlxuICAgICAgaWYgYXRfZW9mXG4gICAgICB0aGVuIFwidW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICAgIGVsc2UgXCJ1bmV4cGVjdGVkIGNoYXJhY3RlciBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCAtPiBcIm5vIHMtZXhwcmVzc2lvbiBmb3VuZCBpbiBpbnB1dFwiXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBhcnNlcl9hdXRvbWF0b246IHBhcnNlciBpcyBkZWFkXCJcbiAgaW5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID1cbiAgICBtYXRjaCByZWFzb24sIGF0X2VvZiB3aXRoXG4gICAgfCBUb29fbWFueV9zZXhwcywgXyB8IF8sIHRydWUgLT4gYEZhaWx1cmVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSwgX1xuICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCIgLT4gYEZhaWx1cmVcbiAgICB8IF8gLT4gYFBhcnNlX2Vycm9yXG4gIGluXG4gIHJhaXNlIChQYXJzZV9lcnJvciB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biB9KVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9IG9sZF9wYXJzZXJfZXhuXG4gIGxldCByYWlzZSA9IHJhaXNlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBBdXRvbWF0b25fc3RhdGVcbm9wZW4gU3RhdGVcblxubGV0IHJhaXNlX2Vycm9yIDogdHlwZSBhIGIuIChhLCBiKSBBdXRvbWF0b25fc3RhdGUudCAtPiBfID1cbiAgZnVuIHN0YXRlIH5hdF9lb2YgcmVhc29uIC0+XG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgUGFyc2VfZXJyb3IuUHJpdmF0ZS5yYWlzZVxuICAgIHJlYXNvblxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG4gICAgfmF0X2VvZlxuICAgIH5hdG9tX2J1ZmZlcjpzdGF0ZS5hdG9tX2J1ZmZlclxuOztcblxudHlwZSBub25yZWMgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5Db250ZXh0LnQgPVxuICB8IFNleHBfY29tbWVudFxuICB8IFNleHBcblxubGV0IGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuY29udGV4dFxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+ICdzIC0+ICdzXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG5lbmRcblxubW9kdWxlIEVwc2lsb24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gJ3MgLT4gJ3NcblxuICBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kXG5cbmxldCBjdXJyZW50X3BvcyA/KGRlbHRhID0gMCkgc3RhdGUgOiBQb3NpdGlvbnMucG9zID1cbiAgbGV0IG9mZnNldCA9IHN0YXRlLm9mZnNldCArIGRlbHRhIGluXG4gIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyOyBjb2wgPSBvZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0OyBvZmZzZXQgfVxuOztcblxubGV0IHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgeCA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSB4XG5sZXQgYWR2YW5jZSBzdGF0ZSA9IHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyAxXG5cbmxldCBhZHZhbmNlX2VvbCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBsZXQgbmV3bGluZV9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgc3RhdGUub2Zmc2V0IDwtIG5ld2xpbmVfb2Zmc2V0ICsgMTtcbiAgc3RhdGUuYm9sX29mZnNldCA8LSBzdGF0ZS5vZmZzZXQ7XG4gIHN0YXRlLmxpbmVfbnVtYmVyIDwtIHN0YXRlLmxpbmVfbnVtYmVyICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA9IHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGhcblxubGV0IGFkZF90b2tlbl9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIHN0YWNrXG47O1xuXG5sZXQgYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgaXNfaWdub3Jpbmcgc3RhdGUgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwIC0+IGZhbHNlXG4gIHwgU2V4cF9jb21tZW50IC0+IHRydWVcbjs7XG5cbmxldCBpc19ub3RfaWdub3Jpbmcgc3RhdGUgPSBub3QgKGlzX2lnbm9yaW5nIHN0YXRlKVxuXG5sZXQgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZSA9XG4gIGxldCBpc19zaW5nbGUgPVxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgU2luZ2xlIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgaXNfc2luZ2xlICYmIHN0YXRlLmZ1bGxfc2V4cHMgPiAwICYmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgVG9vX21hbnlfc2V4cHNcbjs7XG5cbmxldCBhZGRfcG9zIHN0YXRlIH5kZWx0YSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLmFkZCBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCArIGRlbHRhKVxuOztcblxubGV0IGFkZF9maXJzdF9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGNoYXI7XG4gICgqIEZvciBub24tcXVvdGVkIGF0b21zLCB3ZSBzYXZlIGJvdGggcG9zaXRpb25zIGF0IHRoZSBlbmQuIFdlIGNhbiBhbHdheXMgZGV0ZXJtaW5lIHRoZVxuICAgICBzdGFydCBwb3NpdGlvbiBmcm9tIHRoZSBlbmQgcG9zaXRpb24gYW5kIHRoZSBhdG9tIGxlbmd0aCBmb3Igbm9uLXF1b3RlZCBhdG9tcy5cblxuICAgICBEb2luZyBpdCB0aGlzIHdheSBhbGxvd3MgdXMgdG8gZGV0ZWN0IHNpbmdsZSBjaGFyYWNhdGVyIGF0b21zIGZvciB3aGljaCB3ZSBuZWVkIHRvXG4gICAgIHNhdmUgdGhlIHBvc2l0aW9uIHR3aWNlLiAqKVxuICBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICcjJztcbiAgc3RhY2tcbjs7XG5cbmxldCBzdGFydF9xdW90ZWRfc3RyaW5nIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnXCInO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuOztcblxubGV0IGFkZF9lc2NhcGVkIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgYycgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ24nIC0+ICdcXG4nXG4gICAgfCAncicgLT4gJ1xccidcbiAgICB8ICdiJyAtPiAnXFxiJ1xuICAgIHwgJ3QnIC0+ICdcXHQnXG4gICAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcIicgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXFxcJztcbiAgICAgIGNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGMnO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXHInO1xuICBzdGFja1xuOztcblxubGV0IGRlY192YWwgYyA9IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuXG5sZXQgaGV4X3ZhbCBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgfCAnYScgLi4gJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gIHwgXyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuOztcblxubGV0IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgb3BlbmluZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBPcGVuIHN0YWNrIGVsc2Ugc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgdGhlbiAoXG4gICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgT3BlbiBzdGFjaylcbiAgICBlbHNlIHN0YWNrXG4gIHwgQ3N0IC0+IE9wZW4gKGN1cnJlbnRfcG9zIHN0YXRlLCBzdGFjaylcbjs7XG5cbmxldCBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGUgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5yZXNldFxuICAgIHN0YXRlLnVzZXJfc3RhdGVcbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuOztcblxubGV0IHJlc2V0X3Bvc2l0aW9ucyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwIC0+ICgpXG4gIHwgQ3N0IC0+ICgpXG47O1xuXG5sZXQgdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICB8IFNpbmdsZSB8IE1hbnkgLT4gc3RhY2tcbiAgfCBFYWdlciB7IGdvdF9zZXhwID0gZjsgXyB9IC0+XG4gICAgKCogTW9kaWZ5IHRoZSBvZmZzZXQgc28gdGhhdCBbZl0gZ2V0IGEgc3RhdGUgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudFxuICAgICAgIHMtZXhwcmVzc2lvbiAqKVxuICAgIGxldCBzYXZlZF9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgICBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgZGVsdGE7XG4gICAgbGV0IHNhdmVkX2Z1bGxfc2V4cHMgPSBzdGF0ZS5mdWxsX3NleHBzIGluXG4gICAgKG1hdGNoIGYgc3RhdGUgc3RhY2sgd2l0aFxuICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICAgICAgIHJhaXNlIGVcbiAgICAgfCBzdGFjayAtPlxuICAgICAgICgqIFRoaXMgYXNzZXJ0IGlzIG5vdCBhIGZ1bGwgcHJvdGVjdGlvbiBhZ2FpbnN0IHRoZSB1c2VyIG11dGF0aW5nIHRoZSBzdGF0ZSBidXRcbiAgICAgICAgICBpdCBzaG91bGQgY2F0Y2ggbW9zdCBjYXNlcy4gKilcbiAgICAgICBhc3NlcnQgKHN0YXRlLm9mZnNldCA9IHNhdmVkX29mZnNldCArIGRlbHRhICYmIHN0YXRlLmZ1bGxfc2V4cHMgPSBzYXZlZF9mdWxsX3NleHBzKTtcbiAgICAgICBzdGF0ZS5vZmZzZXQgPC0gc2F2ZWRfb2Zmc2V0O1xuICAgICAgIHJlc2V0X3Bvc2l0aW9ucyBzdGF0ZTtcbiAgICAgICBzdGFjaylcbjs7XG5cbmxldCBpc190b3BfbGV2ZWwgc3RhdGUgPSBpc19ub3RfaWdub3Jpbmcgc3RhdGUgJiYgc3RhdGUuZGVwdGggPSAwXG5cbmxldCBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGUgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiBfdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID4gc3RhdGUuZGVwdGggLT5cbiAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IHRsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA9IHN0YXRlLmRlcHRoIC0+XG4gICAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gdGw7XG4gICAgdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzZXhwX2FkZGVkIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBzIC0+IGRlbHRhOmludCAtPiBzID1cbiAgZnVuIHN0YXRlIHN0YWNrIH5kZWx0YSAtPlxuICBsZXQgaXNfY29tbWVudCA9IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSBpblxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGVcbiAgdGhlbiAoXG4gICAgaWYgbm90IGlzX2NvbW1lbnQgdGhlbiBzdGF0ZS5mdWxsX3NleHBzIDwtIHN0YXRlLmZ1bGxfc2V4cHMgKyAxO1xuICAgIGlmIChub3QgaXNfY29tbWVudClcbiAgICAgICB8fFxuICAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgIHwgQ3N0IC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGFcbiAgICBlbHNlIHN0YWNrKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdCBhY2MgOiBBdXRvbWF0b25fc3RhY2sudCAtPiBBdXRvbWF0b25fc3RhY2sudCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgT3BlbiBzdGFjayAtPiBTZXhwIChMaXN0IGFjYywgc3RhY2spXG4gIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IG1ha2VfbGlzdCAoc2V4cCA6OiBhY2MpIHN0YWNrXG47O1xuXG5sZXQgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgKHN0YWNrIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudClcbiAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID1cbiAgbWF0Y2ggc3RhY2sgd2l0aFxuICB8IEluX3NleHBfY29tbWVudCByIC0+XG4gICAgSW5fc2V4cF9jb21tZW50IHsgciB3aXRoIHJldl9jb21tZW50cyA9IGNvbW1lbnQgOjogci5yZXZfY29tbWVudHMgfVxuICB8IF8gLT4gVF9vcl9jb21tZW50IChDb21tZW50IGNvbW1lbnQsIHN0YWNrKVxuOztcblxubGV0IGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEluX3NleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IHJldl9jb21tZW50czsgc3RhY2sgfSAtPlxuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFNleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IGNvbW1lbnRzID0gTGlzdC5yZXYgcmV2X2NvbW1lbnRzOyBzZXhwIH1cbiAgICAgIGluXG4gICAgICBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFja1xuICAgIHwgc3RhY2sgLT4gVF9vcl9jb21tZW50IChTZXhwIHNleHAsIHN0YWNrKVxuOztcblxubGV0IHJlYyBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgYWNjIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IG1ha2VfbGlzdF9jc3QgZW5kX3BvcyAodCA6OiBhY2MpIHN0YWNrXG4gICAgfCBPcGVuIChzdGFydF9wb3MsIHN0YWNrKSAtPlxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IExpc3QgeyBsb2MgPSB7IHN0YXJ0X3BvczsgZW5kX3BvcyB9OyBlbGVtZW50cyA9IGFjYyB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICAgIHwgRW1wdHkgfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjbG9zaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDBcbiAgdGhlbiAoXG4gICAgbGV0IHN0YWNrIDogcyA9XG4gICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICAgICgqIE5vdGUgd2Ugc3RvcmUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUgaW4gW1Bvc2l0aW9ucy50XSwgc28gd2UgdXNlIFtkZWx0YTowXSxcbiAgICAgICAgICAgd2hpbGUgaW4gdGhlIFtDc3RdIGNhc2Ugd2Ugc2F2ZSBkaXJlY3RseSB0aGUgZmluYWwgcmFuZ2VzLCBzbyB3ZSB1c2VcbiAgICAgICAgICAgW2RlbHRhOjFdLiAqKVxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBzdGFja1xuICAgICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIG1ha2VfbGlzdCBbXSBzdGFjayBlbHNlIHN0YWNrXG4gICAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgICAgbWFrZV9saXN0IFtdIHN0YWNrKVxuICAgICAgICBlbHNlIHN0YWNrXG4gICAgICB8IENzdCAtPiBtYWtlX2xpc3RfY3N0IChjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MSkgW10gc3RhY2tcbiAgICBpblxuICAgIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoIC0gMTtcbiAgICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICBlbHNlIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG47O1xuXG5sZXQgbWFrZV9sb2MgPyhkZWx0YSA9IDApIChzdGF0ZSA6IChBdXRvbWF0b25fc3RhdGUuRm9yX2NzdC50LCBfKSBBdXRvbWF0b25fc3RhdGUudClcbiAgOiBQb3NpdGlvbnMucmFuZ2VcbiAgPVxuICB7IHN0YXJ0X3BvcyA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhIH1cbjs7XG5cbigqIFRoaXMgaXMgYWx3YXlzIGNhbGxlZCBvbiB0aGUgcG9zaXRpb24gZXhhY3RseSBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGFcbiAgIG5vbi1xdW90ZWQgYXRvbSAqKVxubGV0IGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYXRvbSBpblxuICBpZiBsZW4gPSAxXG4gIHRoZW4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX3R3aWNlIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0IC0gMSlcbiAgZWxzZSAoXG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC1sZW4pO1xuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtMSkpXG47O1xuXG5sZXQgZXBzX3B1c2hfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBsb2MgOiBQb3NpdGlvbnMucmFuZ2UgPVxuICAgICAgICB7IHN0YXJ0X3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLVN0cmluZy5sZW5ndGggc3RyKVxuICAgICAgICA7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MFxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IEF0b20geyBsb2M7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgc3RyIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBwdXNoX3F1b3RlZF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcIic7XG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID1cbiAgICAgICAgQXRvbSB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHMgfVxuICAgICAgaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjFcbjs7XG5cbmxldCBzdGFydF9zZXhwX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gc3RhdGUuZGVwdGggOjogc3RhdGUuaWdub3Jpbmdfc3RhY2s7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEluX3NleHBfY29tbWVudFxuICAgICAgeyBoYXNoX3NlbWlfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7IHJldl9jb21tZW50cyA9IFtdOyBzdGFjayB9XG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMVxuICAgIHRoZW4gKFxuICAgICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJyMnKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuOztcblxubGV0IGVuZF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCAtIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBjb21tZW50ID0gcyB9XG4gICAgICBpblxuICAgICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICAgIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBzdGFydF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBlbmRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPSBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGU7IGNvbW1lbnQgPSBzIH0gaW5cbiAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgZXBzX2VvaV9jaGVjayA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMCB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmNsb3NlZF9wYXJlbjtcbiAgaWYgaXNfaWdub3Jpbmcgc3RhdGUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cDtcbiAgaWYgc3RhdGUuZnVsbF9zZXhwcyA9IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBNYW55IHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gZmFsc2U7IF8gfSAtPiAoKVxuICAgIHwgU2luZ2xlIHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gdHJ1ZTsgXyB9IC0+XG4gICAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCk7XG4gIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfYXRvbVxuICB8IFBhcnNpbmdfbGlzdFxuICB8IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgUGFyc2luZ19ibG9ja19jb21tZW50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19hdG9tIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYXRvbVwiXG4gICAgfCBQYXJzaW5nX2xpc3QgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19saXN0XCJcbiAgICB8IFBhcnNpbmdfc2V4cF9jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfc2V4cF9jb21tZW50XCJcbiAgICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBtYXRjaCBzZXhwX29mX3QgdCB3aXRoXG4gIHwgQXRvbSBzIC0+IHNcbiAgfCBMaXN0IF8gLT4gZmFpbHdpdGggXCJCVUc6IFtzZXhwX29mX3RdIHJldHVybmVkIGEgW0xpc3QgX11cIlxuOztcbiIsIm9wZW4gQXV0b21hdG9uX2FjdGlvblxuXG5sZXQgcmFpc2UgPSBBdXRvbWF0b25fYWN0aW9uLnJhaXNlX2Vycm9yXG5cbnR5cGUgdSdcbnR5cGUgcydcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl90YWJsZXMucHJpbnRfY29kZSAoKSAqKVxubGV0IHRyXzAwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMF9mIH1cblxubGV0IHRyXzAxX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAxX2YgfVxuXG5sZXQgdHJfMDJfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAyX2YgfVxuXG5sZXQgdHJfMDNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDNfZiB9XG5cbmxldCB0cl8wNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNF9mIH1cblxubGV0IHRyXzA1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA1X2YgfVxuXG5sZXQgdHJfMDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDZfZiB9XG5cbmxldCB0cl8wN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wN19mIH1cblxubGV0IHRyXzA4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDhfZiB9XG5cbmxldCB0cl8wOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDlfZiB9XG5sZXQgdHJfMTBfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfMTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEwX2YgfVxubGV0IHRyXzExX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfMTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzExX2YgfVxuXG5sZXQgdHJfMTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTJfZiB9XG5cbmxldCB0cl8xM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEzX2YgfVxuXG5sZXQgdHJfMTRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTRfZiB9XG5cbmxldCB0cl8xNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE1X2YgfVxuXG5sZXQgdHJfMTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNl9mIH1cblxubGV0IHRyXzE3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE3X2YgfVxuXG5sZXQgdHJfMThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOF9mIH1cblxubGV0IHRyXzE5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTlfZiB9XG5cbmxldCB0cl8yMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjBfZiB9XG5cbmxldCB0cl8yMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMV9mIH1cblxubGV0IHRyXzIyX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuOztcblxubGV0IHRyXzIyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMl9mIH1cblxubGV0IHRyXzIzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yM19mIH1cblxubGV0IHRyXzI0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI0X2YgfVxuXG5sZXQgdHJfMjVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNV9mIH1cblxubGV0IHRyXzI2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI2X2YgfVxuXG5sZXQgdHJfMjdfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yN19mIH1cblxubGV0IHRyXzI4X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI4X2YgfVxuXG5sZXQgdHJfMjlfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOV9mIH1cblxubGV0IHRyXzMwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzBfZiB9XG5cbmxldCB0cl8zMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMV9mIH1cblxubGV0IHRyXzMyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzJfZiB9XG5cbmxldCB0cl8zM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMzX2YgfVxuXG5sZXQgdHJfMzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfc2V4cF9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNF9mIH1cblxubGV0IHRyXzM1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNV9mIH1cblxubGV0IHRyXzM2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNl9mIH1cblxubGV0IHRyXzM3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzdfZiB9XG5cbmxldCB0cl8zOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOF9mIH1cblxubGV0IHRyXzM5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOV9mIH1cblxubGV0IHRyXzQwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9lc2NhcGVkIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MF9mIH1cblxubGV0IHRyXzQxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQxX2YgfVxuXG5sZXQgdHJfNDJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Ml9mIH1cblxubGV0IHRyXzQzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDExO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80M19mIH1cblxubGV0IHRyXzQ0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDRfZiB9XG5cbmxldCB0cl80NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ1X2YgfVxuXG5sZXQgdHJfNDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ2X2YgfVxuXG5sZXQgdHJfNDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80N19mIH1cblxubGV0IHRyXzQ4X2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbjs7XG5cbmxldCB0cl80OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDhfZiB9XG5cbmxldCB0cl80OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDlfZiB9XG5cbmxldCB0cl81MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUwX2YgfVxuXG5sZXQgdHJfNTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuOztcblxubGV0IHRyXzUxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MV9mIH1cblxubGV0IHRyXzUyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Ml9mIH1cblxubGV0IHRyXzUzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTNfZiB9XG5cbmxldCB0cl81NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTRfZiB9XG5cbmxldCB0cl81NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU1X2YgfVxuXG5sZXQgdHJfNTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Nl9mIH1cblxubGV0IHRyXzU3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU3X2YgfVxuXG5sZXQgdHJfNThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU4X2YgfVxuXG5sZXQgdHJfNTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OV9mIH1cblxubGV0IHRyXzYwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYwX2YgfVxuXG5sZXQgdHJfNjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MV9mIH1cblxubGV0IHRyXzYyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjJfZiB9XG5cbmxldCB0cl82M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYzX2YgfVxuXG5sZXQgdHJfNjRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIChpZiBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlIDw+IDAgdGhlbiAxNiBlbHNlIDApO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NF9mIH1cblxubGV0IHRyXzY1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY1X2YgfVxuXG5sZXQgdHJfNjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Nl9mIH1cblxubGV0IHRyXzY3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY3X2YgfVxuXG5sZXQgdHJfNjhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIxO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OF9mIH1cblxubGV0IHRyXzY5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OV9mIH1cblxubGV0IHRyXzcwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzBfZiB9XG5cbmxldCB0cl83MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcxX2YgfVxuXG5sZXQgdHJfNzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Ml9mIH1cblxubGV0IHRyXzczX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzNfZiB9XG5cbmxldCB0cl83NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzRfZiB9XG5cbmxldCB0cl83NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc1X2YgfVxuXG5sZXQgdHJfNzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Nl9mIH1cblxubGV0IHRyXzc3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzdfZiB9XG5cbmxldCB0cl83OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83OF9mIH1cbmxldCB0cl9lb2lfMDBfZiBzdGF0ZSBzdGFjayA9IGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbmxldCB0cl9lb2lfMDAgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAwX2YgfVxubGV0IHRyX2VvaV8wMV9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl9lb2lfMDEgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAxX2YgfVxubGV0IHRyX2VvaV8wMl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyX2VvaV8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDJfZiB9XG5cbmxldCB0cl9lb2lfMDNfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDNfZiB9XG5cbmxldCB0cl9lb2lfMDRfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDRfZiB9XG5cbmxldCB0cl9lb2lfMDVfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDVfZiB9XG5sZXQgdHJfZW9pXzA2X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG5sZXQgdHJfZW9pXzA2IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNl9mIH1cbmxldCB0cl9lb2lfMDdfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbmxldCB0cl9lb2lfMDcgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA3X2YgfVxuXG5sZXQgdHJhbnNpdGlvbnMgPVxuICBbfCB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMlxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wM1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMFxuICAgOyB0cl8wNFxuICAgOyB0cl8wNVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wNlxuICAgOyB0cl8wN1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8wMlxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNFxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNVxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOFxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yNlxuICAgOyB0cl8zMFxuICAgOyB0cl8zMVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zMlxuICAgOyB0cl8zM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNFxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zN1xuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOFxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOVxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MVxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80MVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NlxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80N1xuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NlxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NFxuICAgOyB0cl81N1xuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl8zNVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NlxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82N1xuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl82N1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83OFxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICB8XVxuOztcblxubGV0IHRyYW5zaXRpb25zX2VvaSA9XG4gIFt8IHRyX2VvaV8wMFxuICAgOyB0cl9lb2lfMDFcbiAgIDsgdHJfZW9pXzAyXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wNFxuICAgOyB0cl9lb2lfMDVcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gIHxdXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCBhcnJheSA9XG4gIFt8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICB8XVxuOztcbigqJCopXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTdGFjayA9IEF1dG9tYXRvbl9zdGFja1xuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVcblxubGV0IGZlZWQgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIGNoYXIgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IGlkeCA9IChhdXRvbWF0b25fc3RhdGUgc3RhdGUgbHNsIDgpIGxvciBDaGFyLmNvZGUgY2hhciBpblxuICBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zLihpZHgpLmYgc3RhdGUgY2hhciBzdGFja1xuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBmZWVkX2VvaSAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IHN0YWNrID0gQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9uc19lb2kuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSkuZiBzdGF0ZSBzdGFjayBpblxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwX2NvbW1lbnQgLT4gUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBTZXhwIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBBdXRvbWF0b25fdGFibGVzLm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpXG4gICAgICAgLCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgKVxuICAgICB3aXRoXG4gICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCB0cnVlIC0+IFBhcnNpbmdfbGlzdFxuICAgICB8IHMsIF8gLT4gcylcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YnN0cmluZ1wiO1xuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3ViYnl0ZXMgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YmJ5dGVzXCI7XG4gIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N0cmluZyBzdGF0ZSBzdHIgc3RhY2sgPVxuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuOztcblxubGV0IGZlZWRfYnl0ZXMgc3RhdGUgc3RyIHN0YWNrID0gZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKEJ5dGVzLmxlbmd0aCBzdHIpXG5cbmxldCBlbXB0eV9zdGFjayA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IHMgPSBmdW5jdGlvblxuICB8IFNleHAgLT4gU3RhY2suZW1wdHlcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFN0YWNrLmVtcHR5XG4gIHwgUG9zaXRpb25zIC0+IFN0YWNrLkp1c3RfcG9zaXRpb25zLmVtcHR5XG4gIHwgQ3N0IC0+IFN0YWNrLkZvcl9jc3QuZW1wdHlcbjs7XG5cbmxldCBvZl9zdWJzdHJpbmcgKHR5cGUgdSBzKSAobW9kZSA6ICh1LCBzKSBNb2RlLnQpIChraW5kIDogKHUsIHMpIEtpbmQudCkgcyB+cG9zIH5sZW4gPVxuICBsZXQgc3RhdGUgPSBjcmVhdGUgbW9kZSBraW5kIGluXG4gIGxldCBzdGFjayA9IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHMgfnBvcyB+bGVuIChlbXB0eV9zdGFjayBraW5kKSBpblxuICBzdGF0ZSwgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyB1c2VyX2V4biA6IGV4blxuICA7IHN1Yl9zZXhwIDogU2V4cC50XG4gIDsgbG9jYXRpb24gOiBQb3NpdGlvbnMucmFuZ2Ugb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1biB7IHVzZXJfZXhuID0gdXNlcl9leG5fXzAwMl87IHN1Yl9zZXhwID0gc3ViX3NleHBfXzAwNF87IGxvY2F0aW9uID0gbG9jYXRpb25fXzAwNl8gfSAtPlxuICAgICBsZXQgYm5kc19fMDAxXyA9IFtdIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9vcHRpb24gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jYXRpb25fXzAwNl8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NhdGlvblwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gU2V4cC5zZXhwX29mX3Qgc3ViX3NleHBfXzAwNF8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdWJfc2V4cFwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9leG4gdXNlcl9leG5fXzAwMl8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1c2VyX2V4blwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdXNlcl9leG4gdCA9IHQudXNlcl9leG5cbmxldCBzdWJfc2V4cCB0ID0gdC5zdWJfc2V4cFxubGV0IGxvY2F0aW9uIHQgPSB0LmxvY2F0aW9uXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbGV0IGxpbmUsIHN0YXJ0LCBzdG9wID1cbiAgICBtYXRjaCB0LmxvY2F0aW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gMSwgMCwgMFxuICAgIHwgU29tZSB7IHN0YXJ0X3BvczsgZW5kX3BvcyB9IC0+XG4gICAgICBzdGFydF9wb3MubGluZSwgc3RhcnRfcG9zLmNvbCwgc3RhcnRfcG9zLmNvbCArIGVuZF9wb3Mub2Zmc2V0IC0gc3RhcnRfcG9zLm9mZnNldFxuICBpblxuICBGb3JtYXQuZnByaW50ZlxuICAgIHBwZlxuICAgIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlxcblxcXG4gICAgIEVycm9yOiBzLWV4cHJlc3Npb24gY29udmVyc2lvbiBlcnJvcjtcXG5cXFxuICAgICBleGNlcHRpb24gJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgbGluZVxuICAgIHN0YXJ0XG4gICAgc3RvcFxuICAgIChTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgdC51c2VyX2V4bilcbjs7XG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IE9mX3NleHBfZXJyb3IgYXJnMF9fMDA4XyAtPlxuICAgICAgbGV0IHJlczBfXzAwOV8gPSBzZXhwX29mX3QgYXJnMF9fMDA4XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwib2Zfc2V4cF9lcnJvci5tbC5PZl9zZXhwX2Vycm9yXCI7IHJlczBfXzAwOV8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cCB+bG9jYXRpb24gPVxuICByYWlzZSAoT2Zfc2V4cF9lcnJvciB7IHVzZXJfZXhuOyBzdWJfc2V4cDsgbG9jYXRpb24gfSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzZV9lcnJvciBvZiBQYXJzZV9lcnJvci50XG4gIHwgT2Zfc2V4cF9lcnJvciBvZiBPZl9zZXhwX2Vycm9yLnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBhcmcwX18wMDFfIC0+XG4gICAgICBsZXQgcmVzMF9fMDAyXyA9IFBhcnNlX2Vycm9yLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzZV9lcnJvclwiOyByZXMwX18wMDJfIF1cbiAgICB8IE9mX3NleHBfZXJyb3IgYXJnMF9fMDAzXyAtPlxuICAgICAgbGV0IHJlczBfXzAwNF8gPSBPZl9zZXhwX2Vycm9yLnNleHBfb2ZfdCBhcmcwX18wMDNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPZl9zZXhwX2Vycm9yXCI7IHJlczBfXzAwNF8gXVxuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgUGFyc2VfZXJyb3IgZSAtPiBQYXJzZV9lcnJvci5yZXBvcnQgcHBmIH5maWxlbmFtZSBlXG4gIHwgT2Zfc2V4cF9lcnJvciBlIC0+IE9mX3NleHBfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBQYXJzZXJfaW50ZlxubW9kdWxlIEEgPSBBdXRvbWF0b25cblxubGV0IGtpbmRfdG9fc3RhY2tcbiAgOiB0eXBlIHN0YWNrLlxuICAgICgnc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUuS2luZC50IC0+IChtb2R1bGUgU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgPVxuICBmdW4gKHR5cGUgc3RhdGUpIChraW5kIDogKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCkgLT5cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgU2V4cCAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgUG9zaXRpb25zIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkp1c3RfcG9zaXRpb25zIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBDc3QgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2suRm9yX2NzdCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG47O1xuXG5sZXQgbWFrZSAodHlwZSBzdGFjayBzdGF0ZSBwYXJzZWRfdmFsdWUpIGtpbmQgbW9kZSBtYWtlX3ZhbHVlXG4gIDogKG1vZHVsZSBTIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWUpXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgKCkgPSBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIG1vZGUga2luZFxuICAgICAgbGV0IHJlc2V0ID0gQS5yZXNldFxuICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgbGV0IGNvbHVtbiA9IEEuY29sdW1uXG5cbiAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdG9wIHN0YXRlID0gQS5zZXRfZXJyb3Jfc3RhdGUgc3RhdGVcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gbWFrZV92YWx1ZSBzdGF0ZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjaylcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyID1cbiAgICAgIGxldCBzdGF0ZSA9IFN0YXRlLmNyZWF0ZSAoKSBpblxuICAgICAgZmVlZF9lb2kgc3RhdGUgKGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBTdGFjay5lbXB0eSlcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZyBzdHIgPVxuICAgICAgbWF0Y2ggcGFyc2Vfc3RyaW5nX2V4biBzdHIgd2l0aFxuICAgICAgfCB4IC0+IE9rIHhcbiAgICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgZVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmxldCBtYWtlX2VhZ2VyICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtYWtlX3ZhbHVlXG4gIDogKG1vZHVsZSBTX2VhZ2VyIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWUpXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgUmVhZF9vbmx5XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyA/KG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZSkgZiA9XG4gICAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBzdGFjayA9XG4gICAgICAgICAgbGV0IHBhcnNlZF92YWx1ZSA9IG1ha2VfdmFsdWUgc3RhdGUgc3RhY2sgaW5cbiAgICAgICAgICBmIHN0YXRlIHBhcnNlZF92YWx1ZTtcbiAgICAgICAgICBTdGFjay5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIChFYWdlciB7IGdvdF9zZXhwOyBub19zZXhwX2lzX2Vycm9yIH0pIGtpbmRcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBzdG9wIHQgPSBBLnNldF9lcnJvcl9zdGF0ZSB0XG4gICAgICBsZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHQgPSBBdXRvbWF0b24ub2xkX3BhcnNlcl9jb250X3N0YXRlIHRcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gaWdub3JlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrIDogU3RhY2sudClcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbW9kdWxlIExleGJ1Zl9jb25zdW1lciA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gU3RhdGUudFxuXG4gICAgICBleGNlcHRpb24gR290X3NleHAgb2YgcGFyc2VkX3ZhbHVlICogUG9zaXRpb25zLnBvc1xuXG4gICAgICBsZXQgZ290X3NleHAgc3RhdGUgcGFyc2VkX3ZhbHVlID1cbiAgICAgICAgcmFpc2Vfbm90cmFjZSAoR290X3NleHAgKHBhcnNlZF92YWx1ZSwgU3RhdGUucG9zaXRpb24gc3RhdGUpKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IFN0YXRlLmNyZWF0ZSBnb3Rfc2V4cFxuXG4gICAgICBsZXQgcG9zX29mX2xleGJ1ZiBsZXhidWYgPVxuICAgICAgICBsZXQgcCA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCBpblxuICAgICAgICB7IFBvc2l0aW9ucy5saW5lID0gcC5wb3NfbG51bTsgY29sID0gcC5wb3NfY251bSAtIHAucG9zX2JvbDsgb2Zmc2V0ID0gcC5wb3NfY251bSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdXBkYXRlX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgKHBvcyA6IFBvc2l0aW9ucy5wb3MpID1cbiAgICAgICAgbGV0IHAgPSBwb3Mub2Zmc2V0IC0gbGV4YnVmLmxleF9hYnNfcG9zIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BcbiAgICAgICAgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoXG4gICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MubGluZVxuICAgICAgICAgICA7IHBvc19jbnVtID0gcG9zLm9mZnNldFxuICAgICAgICAgICA7IHBvc19ib2wgPSBwb3Mub2Zmc2V0IC0gcG9zLmNvbFxuICAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZlZWRfbGV4YnVmIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIHN0YWNrID1cbiAgICAgICAgbGV0IHN0YWNrID1cbiAgICAgICAgICBmZWVkX3N1YmJ5dGVzXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlclxuICAgICAgICAgICAgc3RhY2tcbiAgICAgICAgICAgIH5wb3M6bGV4YnVmLmxleF9jdXJyX3Bvc1xuICAgICAgICAgICAgfmxlbjoobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9jdXJyX3BvcylcbiAgICAgICAgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgaWYgbm90IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV4YnVmLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgICAgICBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBzdGFjaylcbiAgICAgICAgZWxzZSBmZWVkX2VvaSB0IHN0YWNrXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfZ2VuIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICAgICAgQS5yZXNldCB0IH5wb3M6KHBvc19vZl9sZXhidWYgbGV4YnVmKTtcbiAgICAgICAgbWF0Y2ggZmVlZF9sZXhidWYgdCBsZXhidWYgU3RhY2suZW1wdHkgd2l0aFxuICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBleGNlcHRpb24gR290X3NleHAgKHBhcnNlZF92YWx1ZSwgcG9zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIHBvcztcbiAgICAgICAgICBTb21lIHBhcnNlZF92YWx1ZVxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgcmFpc2UgZXhuXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB4ID1cbiAgICAgICAgbWF0Y2ggQS5tb2RlIHQgd2l0aFxuICAgICAgICB8IEVhZ2VyIGUgLT4gZS5ub19zZXhwX2lzX2Vycm9yIDwtIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlIHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB0cnVlO1xuICAgICAgICBtYXRjaCBwYXJzZV9nZW4gdCBsZXhidWYgd2l0aFxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAucGFyc2VfZ2VuOiBOb25lXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9vcHQgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IGZhbHNlO1xuICAgICAgICBwYXJzZV9nZW4gdCBsZXhidWZcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29udl9pbnRmXG5cbm1vZHVsZSBNYWtlXG4gICAgKE1vZGUgOiBNb2RlKVxuICAgIChTZXhwX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBNb2RlLnBhcnNlZF9zZXhwKVxuICAgIChQb3NpdGlvbnNfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IFBvc2l0aW9ucy50KSA9XG5zdHJ1Y3RcbiAgbGV0IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIHVzZXJfZXhuID1cbiAgICBsZXQgbG9jYXRpb24gPSBNb2RlLmZpbmQgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIGluXG4gICAgT2Zfc2V4cF9lcnJvci5yYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwOnN1YiB+bG9jYXRpb25cbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiA9XG4gICAgbGV0IHBhcnNlZF92YWx1ZSA9IFNleHBfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPlxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFBvc2l0aW9uc19wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICAgIHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmcgc3RyIGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKVxuICA7O1xuXG4gIGxldCBjb252X2V4biAocGFyc2VkX3ZhbHVlLCBwb3NpdGlvbnMpIGYgPVxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT4gcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IGNvbnYgeCBmID1cbiAgICBtYXRjaCBjb252X2V4biB4IGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgZVxuICA7O1xuXG4gIGxldCBjb252X2NvbWJpbmUgcmVzdWx0IGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgT2sgeCAtPlxuICAgICAgKG1hdGNoIGNvbnYgeCBmIHdpdGhcbiAgICAgICB8IE9rIF8gYXMgciAtPiByXG4gICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnYuU1xubW9kdWxlIHR5cGUgUGFyc2VyID0gUGFyc2VyLlNcbm1vZHVsZSB0eXBlIEVhZ2VyX3BhcnNlciA9IFBhcnNlci5TX2VhZ2VyXG5cbm1vZHVsZSBDb252X2Vycm9yID0gQ29udl9lcnJvclxubW9kdWxlIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5tb2R1bGUgT2xkX3BhcnNlcl9jb250X3N0YXRlID0gT2xkX3BhcnNlcl9jb250X3N0YXRlXG5tb2R1bGUgUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvclxubW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xubW9kdWxlIENzdCA9IENzdFxubW9kdWxlIEEgPSBBdXRvbWF0b25cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yXG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbm1vZHVsZSBTaW5nbGUgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgU2luZ2xlIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5tb2R1bGUgTWFueSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBNYW55IChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpKVxubW9kdWxlIEVhZ2VyID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBTZXhwIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5cbmxldCBhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cCBzdGF0ZSBzdGFjayA9IGdldF9zZXhwIHN0YWNrLCBBLnBvc2l0aW9ucyBzdGF0ZVxuXG5sZXQgYW5kX3Bvc2l0aW9ucyBtb2RlIGdldF9zZXhwID1cbiAgUGFyc2VyLm1ha2UgU2V4cF93aXRoX3Bvc2l0aW9ucyBtb2RlIChhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cClcbjs7XG5cbm1vZHVsZSBTaW5nbGVfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBTaW5nbGUgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpXG5tb2R1bGUgTWFueV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIE1hbnkgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfYW5kX3Bvc2l0aW9ucyA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXJcbiAgICAgICAgIFNleHBfd2l0aF9wb3NpdGlvbnNcbiAgICAgICAgIChBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSB8PiBhbmRfZ2V0X3Bvc2l0aW9ucykpXG5cbmxldCBqdXN0X2dldF9wb3NpdGlvbnMgc3RhdGUgKCkgPSBBLnBvc2l0aW9ucyBzdGF0ZVxubGV0IGp1c3RfcG9zaXRpb25zIG1vZGUgPSBQYXJzZXIubWFrZSBQb3NpdGlvbnMgbW9kZSBqdXN0X2dldF9wb3NpdGlvbnNcblxubW9kdWxlIFNpbmdsZV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgU2luZ2xlKVxubW9kdWxlIE1hbnlfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIE1hbnkpXG5tb2R1bGUgRWFnZXJfanVzdF9wb3NpdGlvbnMgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFBvc2l0aW9ucyBqdXN0X2dldF9wb3NpdGlvbnMpXG5cbmxldCBjc3QgbW9kZSBmID0gUGFyc2VyLm1ha2UgQ3N0IG1vZGUgKGNvbnN0IGYpXG5cbm1vZHVsZSBNYW55X2NzdCA9ICh2YWwgY3N0IE1hbnkgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9jc3QgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIENzdCAoZnVuIF8gc3RhY2sgLT5cbiAgICAgbWF0Y2ggQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkgc3RhY2sgd2l0aFxuICAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG5cbnR5cGUgJ2EgaWQgPSAnYVxudHlwZSBzZXhwX2xpc3QgPSBTZXhwLnQgbGlzdFxuXG5tb2R1bGUgQ29udl9zaW5nbGUgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9waHlzXG4gICAgZW5kKVxuICAgIChTaW5nbGUpXG4gICAgKFNpbmdsZV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2EgbGlzdFxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgeCB+ZilcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55X2F0X29uY2UgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudCBsaXN0XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQXV0b21hdG9uID0gQXV0b21hdG9uXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGF0ZSA9IEF1dG9tYXRvbl9zdGF0ZVxuICBtb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5lbmRcbiIsIigqIGZvciBsZXhpbmcgcG9zaXRpb25zOlxuICAgLSBsbnVtIHN0YXJ0cyBmcm9tIDFcbiAgIC0gY251bSBzdGFydHMgZnJvbSAwXG4gICAtIHBvc19ib2wgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGxpbmVcblxuICAgZm9yIGFic29sdXRlIHBvczpcbiAgIC0gcm93IHN0YXJ0cyBmcm9tIDFcbiAgIC0gY29sIHN0YXJ0cyBmcm9tIDFcblxuICAgZm9yIHJlbGF0aXZlIHBvcywgb2J2aW91c2x5IDAgbWVhbnMgc2FtZSBwb3NpdGlvblxuKilcblxuKCogb3BlcmF0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9yIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBvc2l0aW9ucyAqKVxubW9kdWxlIFBvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcm93IDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHJvdzsgY29sIH0gPSBUeXBlLkF0b20gKFByaW50Zi5zcHJpbnRmIFwiJWQ6JWRcIiByb3cgY29sKVxuICBsZXQgYWRkIHQxIHQyID0geyByb3cgPSB0MS5yb3cgKyB0Mi5yb3c7IGNvbCA9IHQxLmNvbCArIHQyLmNvbCB9XG4gIGxldCBzdWIgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyAtIHQyLnJvdzsgY29sID0gdDEuY29sIC0gdDIuY29sIH1cblxuICBsZXQgY29tcGFyZSB7IHJvdyA9IHIxOyBjb2wgPSBjMSB9IHsgcm93ID0gcjI7IGNvbCA9IGMyIH0gPVxuICAgIGlmIHIxID0gcjIgdGhlbiBjMSAtIGMyIGVsc2UgcjEgLSByMlxuICA7O1xuXG4gIGxldCBnZXEgdDEgdDIgPSBjb21wYXJlIHQxIHQyID49IDBcbmVuZFxuXG5tb2R1bGUgUmVsYXRpdmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgemVybyA9IHsgcm93ID0gMDsgY29sID0gMCB9XG5lbmRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IG9yaWdpbiA9IHsgcm93ID0gMTsgY29sID0gMSB9XG5cbiAgbGV0IG9mX2xleGluZyB7IExleGluZy5wb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2w7IHBvc19mbmFtZSA9IF8gfSA9XG4gICAgeyByb3cgPSBwb3NfbG51bTsgY29sID0gcG9zX2NudW0gLSBwb3NfYm9sICsgMSB9XG4gIDs7XG5cbiAgbGV0IGRpZmYgPSBzdWJcbmVuZFxuIiwiKCoqIFR5cGUgb2YgYW5ub3RhdGVkIFMtZXhwcmVzc2lvbnMgKilcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IG1hcCB0IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFBvcyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgKCoqIEluIFtBdG9tIChfLCBzLCBvcHQpXSwgW3NdIGlzIHRoZSB1bmVzY2FwZWQgc3RyaW5nLCB0aGF0IGlzIHRoZSBhcmd1bWVudCBvZlxuICAgICAgICBbVHlwZS5BdG9tXS4gV2hlbiBbb3B0XSBpcyBkZWZpbmVkLCBpdCBpcyB0aGUgc291cmNlIHN5bnRheCBvZiBbc10sIHRoYXQgaXMgYVxuICAgICAgICBzdHJpbmcgdGhhdCBjYW4gYmUgcHJpbnRlZCBhcyBpcyBpZiBvbmUgd2FudHMgdG8gcGFyc2UgYW5kIHByaW50IHByZXNlcnZpbmdcbiAgICAgICAgc3ludGF4LiBUaGlzIGlzIHVzdWFsbHkgc2V0IGZvciBxdW90ZWQgYXRvbXMgKHRvIHByZXNlcnZlIHRoZSBmYWN0IHRoYXQgd2VyZVxuICAgICAgICBxdW90ZWQpLCBidXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBkbyB0aGUgcmV2ZXJzZTogc2V0IGl0IGZvciBhdG9tcyB0aGF0IGNhbiBiZVxuICAgICAgICBwYXJzZWQgdW5xdW90ZWQgYnV0IHdvdWxkIGJlIHByaW50ZWQgd2l0aCBxdW90ZXMsIHRvIHByZXNlcnZlIHRoZSBsYWNrIG9mIHF1b3Rlcy5cbiAgICAgICAgRm9yIGluc3RhbmNlOlxuICAgICAgICBBdG9tIChfLCBcImFcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xhfH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xcImEgYlwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIFNvbWUgXCJcXFwiYVxcXCJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xcImFcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIFNvbWUgXCJhIGJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xhIGJ8fSBvciBtYXkgcmFpc2UsIGFzIGl0IGlzXG4gICAgICAgIGFuIGVycm9yIHRvIGNvbnN0cnVjdGVkIHN1Y2ggYW4gYXRvbSAoZG9lc24ndCBwYXJzZSBiYWNrKSAqKVxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0b20gb2YgUG9zLnQgKiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IExpc3Qgb2YgUG9zLnQgKiB0X29yX2NvbW1lbnQgbGlzdCAqIFBvcy50XG5cbiAgICAoKiBwb3NpdGlvbnMgb2YgbGVmdCBhbmQgcmlnaHQgcGFyZW5zICopXG4gICAgYW5kIHRfb3JfY29tbWVudCA9XG4gICAgICB8IFNleHAgb2YgdFxuICAgICAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuICAgIGFuZCBjb21tZW50ID1cbiAgICAgIHwgUGxhaW5fY29tbWVudCBvZiBQb3MudCAqIHN0cmluZ1xuICAgICAgfCBTZXhwX2NvbW1lbnQgb2YgUG9zLnQgKiBjb21tZW50IGxpc3QgKiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3NleHAgOiBzaWdcbiAgICB2YWwgb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIG9mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBvZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIG1heWJlIHdlIGNhbiBhY3R1YWxseSB1c2UgY29udiBoZXJlLCBpbnN0ZWFkIG9mIGlubGluaW5nIGl0ICopXG5cbiAgICBsZXQgb2ZfcG9zID0gUG9zLnNleHBfb2ZfdFxuICAgIGxldCBvZl9zdHJpbmcgeCA9IFR5cGUuQXRvbSB4XG4gICAgbGV0IG9mX2xpc3Qgb2ZfYSB4cyA9IFR5cGUuTGlzdCAoTGlzdC5tYXAgfmY6b2ZfYSB4cylcblxuICAgIGxldCBvZl9vcHRpb24gb2ZfYSA9IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgeCAtPiBUeXBlLkxpc3QgWyBvZl9hIHggXVxuICAgICAgfCBOb25lIC0+IFR5cGUuTGlzdCBbXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG9mX3QgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJBdG9tXCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyOyBvZl9vcHRpb24gb2Zfc3RyaW5nIHYzIF1cbiAgICAgIHwgTGlzdCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiTGlzdFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfdF9vcl9jb21tZW50IHYyOyBvZl9wb3MgdjMgXVxuXG4gICAgYW5kIG9mX3Rfb3JfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAgdCAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwXCI7IG9mX3QgdCBdXG4gICAgICB8IENvbW1lbnQgYyAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJDb21tZW50XCI7IG9mX2NvbW1lbnQgYyBdXG5cbiAgICBhbmQgb2ZfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFBsYWluX2NvbW1lbnQgKHYxLCB2MikgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiUGxhaW5fY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2MiBdXG4gICAgICB8IFNleHBfY29tbWVudCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cF9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl9jb21tZW50IHYyOyBvZl90IHYzIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gVG9fc2V4cC5vZl90XG4gIGxldCBzZXhwX29mX2NvbW1lbnQgPSBUb19zZXhwLm9mX2NvbW1lbnRcbiAgbGV0IHNleHBfb2ZfdF9vcl9jb21tZW50ID0gVG9fc2V4cC5vZl90X29yX2NvbW1lbnRcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKFNyY19wb3MuUmVsYXRpdmUpXG5tb2R1bGUgUGFyc2VkID0gTWFrZSAoU3JjX3Bvcy5BYnNvbHV0ZSlcblxubGV0IHJlbGF0aXZpemUgPVxuICBsZXQgcmVsIH5vdXRlcl9wIHAgPSBTcmNfcG9zLkFic29sdXRlLmRpZmYgcCBvdXRlcl9wIGluXG4gIGxldCByZWMgYXV4X3Qgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLkF0b20gKHBvcywgcywgc29wdCkgLT4gQXRvbSAocmVsIHBvcyB+b3V0ZXJfcCwgcywgc29wdClcbiAgICB8IFBhcnNlZC5MaXN0IChzdGFydF9wb3MsIHRvY3MsIGVuZF9wb3MpIC0+XG4gICAgICBMaXN0XG4gICAgICAgICggcmVsIHN0YXJ0X3BvcyB+b3V0ZXJfcFxuICAgICAgICAsIExpc3QubWFwIHRvY3MgfmY6KGZ1biB0b2MgLT4gYXV4X3RvYyB+b3V0ZXJfcDpzdGFydF9wb3MgdG9jKVxuICAgICAgICAsIHJlbCBlbmRfcG9zIH5vdXRlcl9wIClcbiAgYW5kIGF1eF90b2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlNleHAgdCAtPiBTZXhwIChhdXhfdCB0IH5vdXRlcl9wKVxuICAgIHwgUGFyc2VkLkNvbW1lbnQgYyAtPiBDb21tZW50IChhdXhfYyBjIH5vdXRlcl9wKVxuICBhbmQgYXV4X2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlBsYWluX2NvbW1lbnQgKHBvcywgdHh0KSAtPiBQbGFpbl9jb21tZW50IChyZWwgcG9zIH5vdXRlcl9wLCB0eHQpXG4gICAgfCBQYXJzZWQuU2V4cF9jb21tZW50IChwb3MsIGNzLCB0KSAtPlxuICAgICAgU2V4cF9jb21tZW50XG4gICAgICAgIChyZWwgcG9zIH5vdXRlcl9wLCBMaXN0Lm1hcCBjcyB+ZjooZnVuIGMgLT4gYXV4X2Mgfm91dGVyX3AgYyksIGF1eF90IHQgfm91dGVyX3ApXG4gIGluXG4gIGZ1biB0b2MgLT4gYXV4X3RvYyB0b2Mgfm91dGVyX3A6U3JjX3Bvcy5BYnNvbHV0ZS5vcmlnaW5cbjs7XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKHN0cmluZylcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAyIFwic3JjL3BhcnNlci5tbHlcIlxuICAoKiBQYXJzZXI6IEdyYW1tYXIgU3BlY2lmaWNhdGlvbiBmb3IgUGFyc2luZyBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuIyAyMyBcInNyYy9wYXJzZXIubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgMjU4ICgqIExQQVJFTiAqKTtcbiAgMjU5ICgqIFJQQVJFTiAqKTtcbiAgICAwICgqIEVPRiAqKTtcbiAgMjYwICgqIEhBU0hfU0VNSSAqKTtcbiAgICAwfF1cblxubGV0IHl5dHJhbnNsX2Jsb2NrID0gW3xcbiAgMjU3ICgqIFNUUklORyAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwOVxcMDAwXFwwMTNcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDExXFwwMDBcXDAyMlxcMDAwXFwwMjVcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDEwXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEyXFwwMDBcXDAyMVxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDVcXDAwMFxcXG5cXDAxMFxcMDAwXFwwMTVcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMTFcXDAwMFxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMTNcXDAwMFwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwNDBcXDAwMFxcXG5cXDAzNFxcMjU1XFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNThcXDI1NVxcXG5cXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwyNTVcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU0XFwyNTVcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDI5XFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyODZcbmxldCB5eXRhYmxlID0gXCJcXDAxNlxcMDAwXFxcblxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDI1XFwwMDBcXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDI5XFwwMDBcXDAyN1xcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDM5XFwwMDBcXDAyMlxcMDAwXFxcblxcMDIyXFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAyMlxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFxcblxcMDMxXFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAyNlxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA4XFwwMDBcXDAzOFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcblxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwOFxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI4XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwOFxcMDAwXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDAxMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFxcblxcMDI4XFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBMUEFSRU5cXDAwMFxcXG4gIFJQQVJFTlxcMDAwXFxcbiAgRU9GXFwwMDBcXFxuICBIQVNIX1NFTUlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBTVFJJTkdcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMTcwIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAxNzcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAoIFR5cGUuQXRvbSBfMSApXG4jIDE4NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFR5cGUuTGlzdCBbXSApXG4jIDE5MCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFR5cGUuTGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMTk3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAoIHBhcnNlX2ZhaWx1cmUgXCJzZXhwXCIgKVxuIyAyMDMgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0MiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjEwIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjE4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjI1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnRzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIzMyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF8xIClcbiMgMjQwIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTEgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMiApXG4jIDI0OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMjU0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIE9iai5yZXByKFxuIyA1MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUgKVxuIyAyNjEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBbXzFdIClcbiMgMjY4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCBbXSApXG4jIDI3NSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI4MyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyOTEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2MiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjk4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMwNCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzMTEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzE3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbigqIEVudHJ5IHNleHAgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cF9vcHQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudClcbmxldCBzZXhwX29wdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogVHlwZS50IG9wdGlvbilcbmxldCBzZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG5sZXQgcmV2X3NleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlLnQgbGlzdClcbiIsInR5cGUgdG9rZW4gPVxuICB8IFNUUklORyBvZiAoc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uKVxuICB8IENPTU1FTlQgb2YgKHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb24pXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuICAoKiBjb21wYXJlIHRvIHBhcnNlci5tbHkgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSBXaXRoX3BvcyA9IHN0cnVjdFxuXG4gICAgb3BlbiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZFxuXG4gICAgbGV0IGNvZXJjZSA9IFNyY19wb3MuQWJzb2x1dGUub2ZfbGV4aW5nXG5cbiAgICBsZXQgc3RhcnRfcG9zICgpID0gY29lcmNlIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpXG5cbiAgICBsZXQgZW5kX3BvcyAoKSA9XG4gICAgICBsZXQgcCA9IFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkgaW5cbiAgICAgIGNvZXJjZSB7IHAgd2l0aCBMZXhpbmcucG9zX2NudW0gPSBwLkxleGluZy5wb3NfY251bSAtIDEgfVxuXG4gICAgbGV0IGF0b20gKHgsIHkpID1cbiAgICAgIGxldCAocG9zLCB5KSA9XG4gICAgICAgIG1hdGNoIHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKHN0YXJ0X3BvcyAoKSwgU29tZSB4KVxuICAgICAgICB8IFNvbWUgKHBvcywgeCkgLT4gKGNvZXJjZSBwb3MsIFNvbWUgeClcbiAgICAgIGluXG4gICAgICBBdG9tIChwb3MsIHgsIHkpXG5cbiAgICBsZXQgbGlzdCB0cyA9IExpc3QgKHN0YXJ0X3BvcyAoKSwgdHMsIGVuZF9wb3MgKCkpXG5cbiAgICBsZXQgc2V4cCAgICB4ID0gU2V4cCAgICB4XG4gICAgbGV0IGNvbW1lbnQgeCA9IENvbW1lbnQgeFxuXG4gICAgbGV0IHNleHBfY29tbWVudCBjcyB0ID0gU2V4cF9jb21tZW50IChzdGFydF9wb3MgKCksIGNzLCB0KVxuXG4gICAgbGV0IHBsYWluX2NvbW1lbnQgKHgsIHBvc19vcHQpID1cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBwb3Nfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN0YXJ0X3BvcyAoKVxuICAgICAgICB8IFNvbWUgcG9zIC0+IGNvZXJjZSBwb3NcbiAgICAgIGluXG4gICAgICBQbGFpbl9jb21tZW50IChwb3MsIHgpXG5cbiAgZW5kXG5cbiMgNjIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OSAoKiBMUEFSRU4gKik7XG4gIDI2MCAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MSAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gIDI1OCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMTBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMjJcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAyMFxcMDAwXFwwMTVcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTZcXDAwMFxcMDIxXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDE3XFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDZcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMThcXDAwMFxcMDIxXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMTVcXDAwMFxcMDIyXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDM3XFwwMDBcXFxuXFwwMDlcXDI1NVxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDI1NVxcMDA5XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyN1xcMjU1XFwyNTFcXDI1NVxcMjM1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjM0XFwyNTVcXDAxMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjkyXG5sZXQgeXl0YWJsZSA9IFwiXFwwMzZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMjhcXDAwMFxcMDMzXFwwMDBcXDAxOVxcMDAwXFwwMzdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMjVcXDAwMFxcMDExXFwwMDBcXDAyN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAzNVxcMDAwXFwwMTFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDEwXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDVcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBMUEFSRU5cXDAwMFxcXG4gIFJQQVJFTlxcMDAwXFxcbiAgRU9GXFwwMDBcXFxuICBIQVNIX1NFTUlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBTVFJJTkdcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICggV2l0aF9wb3MuYXRvbSBfMSApXG4jIDIxNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5saXN0IChMaXN0LnJldiBfMikgKVxuIyAyMjEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAoIHBhcnNlX2ZhaWx1cmUgXCJzZXhwXCIgKVxuIyAyMjcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA4MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICggV2l0aF9wb3MucGxhaW5fY29tbWVudCBfMSApXG4jIDIzNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cF9jb21tZW50IChMaXN0LnJldiBfMikgXzMgKVxuIyAyNDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggW10gKVxuIyAyNDggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI1NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHAgXzEgKVxuIyAyNjMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggV2l0aF9wb3MuY29tbWVudCBfMSApXG4jIDI3MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDkzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI4NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAoIFR5cGVfd2l0aF9sYXlvdXQucmVsYXRpdml6ZSBfMSApXG4jIDI5MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBTb21lIF8xIClcbiMgMjk4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAzMDQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBbXzFdIClcbiMgMzExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDMxOSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMzI2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwOCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMzMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzMzkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzQ1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDM1MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzX2FicyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbilcbmxldCBzZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbmxldCBzZXhwc19hYnMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbiIsIiMgMSBcInNyYy9sZXhlci5tbGxcIlxuIFxuICAoKiogTGV4ZXI6IExleGVyIFNwZWNpZmljYXRpb24gZm9yIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gIGxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICAgIHwgJ24nIC0+ICdcXDAxMCdcbiAgICB8ICdyJyAtPiAnXFwwMTMnXG4gICAgfCAnYicgLT4gJ1xcMDA4J1xuICAgIHwgJ3QnIC0+ICdcXDAwOSdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCBsZiA9ICdcXDAxMCdcblxuICBsZXQgZGVjX2NvZGUgYzEgYzIgYzMgPVxuICAgIDEwMCAqIChDaGFyLmNvZGUgYzEgLSA0OCkgKyAxMCAqIChDaGFyLmNvZGUgYzIgLSA0OCkgKyAoQ2hhci5jb2RlIGMzIC0gNDgpXG5cbiAgbGV0IGhleF9jb2RlIGMxIGMyID1cbiAgICBsZXQgZDEgPSBDaGFyLmNvZGUgYzEgaW5cbiAgICBsZXQgdmFsMSA9XG4gICAgICBpZiBkMSA+PSA5NyB0aGVuIGQxIC0gODdcbiAgICAgIGVsc2UgaWYgZDEgPj0gNjUgdGhlbiBkMSAtIDU1XG4gICAgICBlbHNlIGQxIC0gNDggaW5cbiAgICBsZXQgZDIgPSBDaGFyLmNvZGUgYzIgaW5cbiAgICBsZXQgdmFsMiA9XG4gICAgICBpZiBkMiA+PSA5NyB0aGVuIGQyIC0gODdcbiAgICAgIGVsc2UgaWYgZDIgPj0gNjUgdGhlbiBkMiAtIDU1XG4gICAgICBlbHNlIGQyIC0gNDggaW5cbiAgICB2YWwxICogMTYgKyB2YWwyXG5cbiAgbGV0IGZvdW5kX25ld2xpbmUgKHsgbGV4X2N1cnJfcDsgXyB9IGFzIGxleGJ1ZikgZGlmZiA9XG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHtcbiAgICAgICAgbGV4X2N1cnJfcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGV4X2N1cnJfcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsZXhfY3Vycl9wLnBvc19jbnVtIC0gZGlmZjtcbiAgICAgIH1cblxuICAoKiBzYW1lIGxlbmd0aCBjb21wdXRhdGlvbiBhcyBpbiBbTGV4aW5nLmxleGVtZV0gKilcbiAgbGV0IGxleGVtZV9sZW4geyBsZXhfc3RhcnRfcG9zOyBsZXhfY3Vycl9wb3M7IF8gfSA9IGxleF9jdXJyX3BvcyAtIGxleF9zdGFydF9wb3NcblxuICBsZXQgbWFpbl9mYWlsdXJlIGxleGJ1ZiBtc2cgPVxuICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIFwiU2V4cGxpYi5MZXhlci5tYWluOiAlcyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICBtc2cgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbClcbiAgICBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gICAgICB2YWwgYWRkX2NoYXIgOiB0IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9zdWJieXRlcyA6IHQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICB2YWwgYWRkX2xleGVtZSA6IHQgLT4gbGV4YnVmIC0+IHVuaXRcbiAgICAgIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICAgICAgdmFsIG9mX2J1ZmZlciA6IEJ1ZmZlci50IC0+IHRcbiAgICBlbmRcbiAgICBtb2R1bGUgVG9rZW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGxwYXJlbiA6IHRcbiAgICAgIHZhbCBycGFyZW4gOiB0XG4gICAgICB2YWwgZW9mIDogdFxuICAgICAgdmFsIHNpbXBsZV9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgICAgdmFsIGhhc2hfc2VtaSA6IHRcbiAgICAgIHZhbCBxdW90ZWRfc3RyaW5nIDogTGV4aW5nLnBvc2l0aW9uIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gdFxuICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgIHZhbCBjb21tZW50IDogc3RyaW5nIC0+IG1haW46cyAtPiBzXG4gICAgICB2YWwgYmxvY2tfY29tbWVudCA6IExleGluZy5wb3NpdGlvbiAtPiBtYWluOnMgLT4gc1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoWCA6IFQpIDogc2lnXG4gICAgdmFsIG1haW4gOiA/YnVmOkJ1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gWC5Ub2tlbi50XG4gIGVuZCA9IHN0cnVjdCAoKiBCRUdJTiBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuICAgIG9wZW4gWFxuXG4jIDgzIFwic3JjL2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI0NFxcMjU1XFwwMTBcXDAwMFxcMDQzXFwwMDBcXDA1M1xcMDAwXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwODZcXDAwMFxcMjQ4XFwyNTVcXDI0OVxcMjU1XFwwOTZcXDAwMFxcXG4gICAgXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE3MlxcMDAwXFwxODJcXDAwMFxcMjIwXFwwMDBcXDIzMFxcMDAwXFwwMDdcXDAwMVxcMjQ3XFwyNTVcXFxuICAgIFxcMDE3XFwwMDFcXDA1MFxcMDAxXFwwNjBcXDAwMVxcMDkzXFwwMDFcXDEwM1xcMDAxXFwxMzZcXDAwMVxcMTQ2XFwwMDFcXDE4MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwyMjRcXDAwMVxcMjM0XFwwMDFcXDAxMVxcMDAyXFwwMzdcXDAwMFxcMjQ2XFwyNTVcXDA4MFxcMDAwXFwyNDhcXDI1NVxcXG4gICAgXFwwMjNcXDAwMlxcMjU1XFwyNTVcXDI0OVxcMjU1XFwwNTdcXDAwMlxcMDMzXFwwMDJcXDI1MlxcMjU1XFwwMDdcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDExMlxcMDAyXFwyNTFcXDI1NVxcMTQ0XFwwMDJcXDI1MFxcMjU1XFwwODFcXDAwMFxcMjUwXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDEyMlxcMDAwXFwyNTVcXDI1NVxcMTY2XFwwMDBcXDEzMFxcMDAxXFwyNTJcXDI1NVxcMjUxXFwyNTVcXDE3M1xcMDAxXFwyNTFcXDAwMVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyM1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM1XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDVcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDA0NlxcMDAwXFwwMDlcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDM2XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxN1xcMDAwXFwwMzhcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDBcXDA1M1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMTdcXDAwMFxcMDU5XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAxOVxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDI5XFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAyNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgbWFpbiBidWYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAoIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgICAgICAgICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM2OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICggbWFpbiBidWYgbGV4YnVmIClcbiMgMzc0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyA5NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0XG4jIDM4MCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLmNvbW1lbnQgdGV4dCB+bWFpbiBidWYgbGV4YnVmIClcbiMgMzg0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5scGFyZW4gKVxuIyAzODkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyA5OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLnJwYXJlbiApXG4jIDM5NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDEwMSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBwb3MgbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4ucXVvdGVkX3N0cmluZyBwb3MgYnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQwNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG4jIDEwOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBUb2tlbi5oYXNoX3NlbWkgKVxuIyA0MTEgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxMTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIFtwb3NdIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLmJsb2NrX2NvbW1lbnQgcG9zIH5tYWluIGJ1ZiBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDIzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTE5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCIgKVxuIyA0MjggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMjUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIiApXG4jIDQzMyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxubGV0XG4jIDEyNiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJcbiMgNDM5IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uc2ltcGxlX3N0cmluZyBzdHIgKVxuIyA0NDMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTI3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4uZW9mIClcbiMgNDQ4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiAzNlxuYW5kIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMzAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7ICgpIClcbiMgNDYwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTMyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDIgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDcwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTM5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDMgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDgwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNDUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDQ4NiBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNDYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChjaGFyX2Zvcl9iYWNrc2xhc2ggYyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0OTQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1MSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgIGMxXG4jIDUwMCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDE1MSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTA1IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTUxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzXG4jIDUxMCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBkZWNfY29kZSBjMSBjMiBjMyBpblxuICAgICAgICBpZiB2ID4gMjU1IHRoZW4gKFxuICAgICAgICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IFxcXG4gICAgICAgICAgICAgICBpbGxlZ2FsIGVzY2FwZSBhdCBsaW5lICVkIGNoYXIgJWQ6IGBcXFxcJWMlYyVjJ1wiXG4gICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wgLSAzKVxuICAgICAgICAgICAgICBjMSBjMiBjMyBpblxuICAgICAgICAgIGZhaWx3aXRoIG1zZyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1MjggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxubGV0XG4jIDE2NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMVxuIyA1MzQgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1MzkgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTY4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gaGV4X2NvZGUgYzEgYzIgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU0OCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMTc0IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBjXG4jIDU1NCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNzUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGM7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NjMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxODIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGxmO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTczIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTg5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBvZnMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIG9mcyBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIG9mcyBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1ODQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICBzdGFydC5wb3NfbG51bSAoc3RhcnQucG9zX2NudW0gLSBzdGFydC5wb3NfYm9sKVxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNTk2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgNTNcbmFuZCBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjA4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDsgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYwOSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDIxMSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAyMTQgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMSB9IGluXG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWZcbiAgICAgIClcbiMgNjI2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMjIyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgKFxuICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAyIH0gaW5cbiAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgKHN0YXJ0IDo6IGxvY3MpIGxleGJ1ZlxuICAgIClcbiMgNjM2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMjI5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW19dIC0+ICgpICgqIHRoZSBjb21tZW50IGlzIGZpbmlzaGVkICopXG4gICAgICAgIHwgXyA6OiAoXyA6OiBfIGFzIHQpIC0+IHNjYW5fYmxvY2tfY29tbWVudCBidWYgdCBsZXhidWZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UgICgqIGltcG9zc2libGUgKilcbiAgICAgIClcbiMgNjQ3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMjM3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gOjogXyAtPlxuICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgIHNwcmludGYgXCJTZXhwbGliLkxleGVyLnNjYW5fYmxvY2tfY29tbWVudDogXFxcbiAgICAgICAgICAgICAgICB1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudCBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDY2MiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMjQ5IFwic3JjL2xleGVyLm1sbFwiXG4gICgqIFJFU1VNRSBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gICAgbGV0IG1haW4gP2J1ZiA9XG4gICAgICBsZXQgYnVmID1cbiAgICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNyZWF0ZSA2NFxuICAgICAgICB8IFNvbWUgYnVmIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5vZl9idWZmZXIgYnVmXG4gICAgICBpblxuICAgICAgbWFpbiBidWZcblxuICBlbmQgKCogRU5EIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgbW9kdWxlIFZhbmlsbGEgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQnVmZmVyXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIF8gXyA9ICgpXG4gICAgICAgIGxldCBvZl9idWZmZXIgYiA9IGJcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyXG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyB4XG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIF8gYnVmID0gU1RSSU5HIChCdWZmZXIuY29udGVudHMgYnVmKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBfcG9zIH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZlxuICAgICAgICBsZXQgY29tbWVudCBfdGV4dCB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKCogc2tpcCBhbmQgY29udGludWUgbGV4aW5nICopXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFdpdGhfbGF5b3V0ID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7XG4gICAgICAgICAgY29udGVudHMgOiBCdWZmZXIudDtcbiAgICAgICAgICBsZXhlbWUgOiBCdWZmZXIudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3JlYXRlIG4gPSB7Y29udGVudHMgPSBCdWZmZXIuY3JlYXRlIG47IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgbn1cbiAgICAgICAgbGV0IG9mX2J1ZmZlciBjb250ZW50cyA9IHsgY29udGVudHM7IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgNjQgfVxuICAgICAgICBsZXQgYWRkX2NoYXIgdCBjaCA9IEJ1ZmZlci5hZGRfY2hhciB0LmNvbnRlbnRzIGNoXG4gICAgICAgIGxldCBhZGRfc3ViYnl0ZXMgdCBzdHIgb2ZzIGxlbiA9IEJ1ZmZlci5hZGRfc3ViYnl0ZXMgdC5jb250ZW50cyBzdHIgb2ZzIGxlblxuICAgICAgICBsZXQgYWRkX2xleGVtZSB0IGxleGJ1ZiA9IEJ1ZmZlci5hZGRfc3RyaW5nIHQubGV4ZW1lIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgbGV0IGNsZWFyIHQgPSBCdWZmZXIuY2xlYXIgdC5sZXhlbWU7IEJ1ZmZlci5jbGVhciB0LmNvbnRlbnRzXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlcl93aXRoX2xheW91dFxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgKHgsIE5vbmUpXG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIHBvcyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHM7IGxleGVtZX0gPVxuICAgICAgICAgIFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGNvbnRlbnRzLCBTb21lIChwb3MsIEJ1ZmZlci5jb250ZW50cyBsZXhlbWUpKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBwb3Mgfm1haW46XyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHMgPSBfOyBsZXhlbWV9IF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKEJ1ZmZlci5jb250ZW50cyBsZXhlbWUsIFNvbWUgcG9zKVxuICAgICAgICBsZXQgY29tbWVudCB0ZXh0IH5tYWluOl8gX2J1ZiBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UICh0ZXh0LCBOb25lKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIGxldCBtYWluID0gVmFuaWxsYS5tYWluXG4gIGxldCBtYWluX3dpdGhfbGF5b3V0ID0gV2l0aF9sYXlvdXQubWFpblxuXG5cbiMgNzQ0IFwic3JjL2xleGVyLm1sXCJcbiIsIigqIFNleHA6IE1vZHVsZSBmb3IgaGFuZGxpbmcgUy1leHByZXNzaW9ucyAoSS9PLCBldGMuKSAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBCaWdhcnJheVxubW9kdWxlIFNleHBsaWIgPSBTZXhwbGliMFxubW9kdWxlIENvbnYgPSBTZXhwbGliLlNleHBfY29udlxuXG4oKiBjb252Lm1sIGRlcGVuZHMgb24gdXMgc28gd2UgY2FuIG9ubHkgdXNlIHRoaXMgbW9kdWxlICopXG5cbmluY2x1ZGUgVHlwZVxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByaXZhdGVcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIEkvTy1jaGFubmVscyAqKVxuXG5sZXQgd2l0aF9uZXdfYnVmZmVyIG9jIGYgPVxuICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gIGYgYnVmO1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcbjs7XG5cbmxldCBvdXRwdXRfaHVtIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSBzZXhwIH5idWYpXG5cbmxldCBvdXRwdXRfaHVtX2luZGVudCBpbmRlbnQgb2Mgc2V4cCA9XG4gIHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIH5pbmRlbnQgc2V4cCB+YnVmKVxuOztcblxubGV0IG91dHB1dF9tYWNoIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmKVxubGV0IG91dHB1dCA9IG91dHB1dF9tYWNoXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZpbGUgKilcblxuKCogVGhlIHRlbXAgZmlsZSBmdW5jdGlvbnMgaW4gdGhlIE9DYW1sIEZpbGVuYW1lIG1vZHVsZSBkbyBub3Qgc3VwcG9ydFxuICAgcGVybWlzc2lvbnMuICBCdXQgb3BlbmluZyBhIGZpbGUgd2l0aCBnaXZlbiBwZXJtaXNzaW9ucyBpcyBkaWZmZXJlbnRcbiAgIGZyb20gb3BlbmluZyBpdCBhbmQgY2htb2RpbmcgaXQgdG8gdGhlc2UgcGVybWlzc2lvbnMsIGJlY2F1c2UgdGhlIHVtYXNrXG4gICBpcyB0YWtlbiBpbiBhY2NvdW50LiAgVW5kZXIgVW5peCB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGdldCB0aGUgdW1hc2sgaW5cbiAgIGEgdGhyZWFkLXNhZmUgd2F5LiAqKVxubW9kdWxlIFRtcF9maWxlID0gc3RydWN0XG4gIGxldCBwcm5nID0gcmVmIE5vbmVcblxuICBsZXQgdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJhbmRfc3RhdGUgPVxuICAgICAgbWF0Y2ggIXBybmcgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCByZXQgPSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgcHJuZyA6PSBTb21lIHJldDtcbiAgICAgICAgcmV0XG4gICAgaW5cbiAgICBsZXQgcm5kID0gUmFuZG9tLlN0YXRlLmJpdHMgcmFuZF9zdGF0ZSBsYW5kIDB4RkZGRkZGIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4XG4gIDs7XG5cbiAgKCogS2VlcCB0aGUgcGVybWlzc2lvbnMgbG9vc2UuIFNleHBzIGFyZSB1c3VhbGx5IHNoYXJlZCBhbmQgcmFyZWx5IHByaXZhdGUqKVxuICBsZXQgb3Blbl90ZW1wX2ZpbGUgPyhwZXJtID0gMG82NjYpIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgb2MgPVxuICAgICAgICAgIG9wZW5fb3V0X2dlbiBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2w7IE9wZW5fdGV4dCBdIHBlcm0gbmFtZVxuICAgICAgICBpblxuICAgICAgICBuYW1lLCBvY1xuICAgICAgd2l0aFxuICAgICAgfCBTeXNfZXJyb3IgXyBhcyBlIC0+IGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gICAgaW5cbiAgICB0cnlfbmFtZSAwXG4gIDs7XG5lbmRcblxubGV0IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9mdW5jdGlvbiBmaWxlIHNleHAgPVxuICBsZXQgdG1wX25hbWUsIG9jID0gVG1wX2ZpbGUub3Blbl90ZW1wX2ZpbGUgP3Blcm0gZmlsZSBcInRtcFwiIGluXG4gICh0cnlcbiAgICAgb3V0cHV0X2Z1bmN0aW9uIG9jIHNleHA7XG4gICAgIGNsb3NlX291dCBvY1xuICAgd2l0aFxuICAgfCBlIC0+XG4gICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICAgKHRyeSBTeXMucmVtb3ZlIHRtcF9uYW1lIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgIHJhaXNlIGUpO1xuICBTeXMucmVuYW1lIHRtcF9uYW1lIGZpbGVcbjs7XG5cbmxldCBvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2Mgc2V4cCA9XG4gIGRvX291dHB1dCBvYyBzZXhwO1xuICBvdXRwdXRfc3RyaW5nIG9jIFwiXFxuXCJcbjs7XG5cbmxldCBzYXZlX2h1bSA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwXG5sZXQgc2F2ZV9tYWNoID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9tYWNoIGZpbGUgc2V4cFxubGV0IHNhdmUgPSBzYXZlX21hY2hcbmxldCBvdXRwdXRfc2V4cHNfbmwgZG9fb3V0cHV0IG9jIHNleHBzID0gTGlzdC5pdGVyIChvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2MpIHNleHBzXG5cbmxldCBzYXZlX3NleHBzX2h1bSA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwc19tYWNoID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9tYWNoKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwcyA9IHNhdmVfc2V4cHNfbWFjaFxuXG4oKiBTY2FuIGZ1bmN0aW9ucyAqKVxuXG5sZXQgc2Nhbl9zZXhwID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHAgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwX29wdCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwX29wdCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fcmV2X3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnJldl9zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcblxubGV0IGdldF9tYWluX2J1ZiBidWYgPVxuICBsZXQgYnVmID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDEyOFxuICAgIHwgU29tZSBidWYgLT4gYnVmXG4gIGluXG4gIExleGVyLm1haW4gfmJ1ZlxuOztcblxubGV0IHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mIH5pbml0IGxleGJ1ZiA9XG4gIGxldCBtYWluID0gZ2V0X21haW5fYnVmIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBtYXRjaCBQYXJzZXIuc2V4cF9vcHQgbWFpbiBsZXhidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgc2V4cCAtPiBsb29wIChmIGFjYyBzZXhwKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBzY2FuX2l0ZXJfc2V4cHMgP2J1ZiB+ZiBsZXhidWYgPVxuICBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiBsZXhidWYgfmluaXQ6KCkgfmY6KGZ1biAoKSBzZXhwIC0+IGYgc2V4cClcbjs7XG5cbmxldCBzY2FuX3NleHBzX2NvbnYgP2J1ZiB+ZiBsZXhidWYgPVxuICBsZXQgY29sbCBhY2Mgc2V4cCA9IGYgc2V4cCA6OiBhY2MgaW5cbiAgTGlzdC5yZXYgKHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mOmNvbGwgfmluaXQ6W10gbGV4YnVmKVxuOztcblxubGV0IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlID9jb250YWluaW5nX3NleHAgP2xvY2F0aW9uID9pbnZhbGlkX3NleHAgKCkgfmV4biA6IHQgPVxuICBMaXN0XG4gICAgKExpc3QuY29uY2F0XG4gICAgICAgWyBbIEF0b20gXCJPZl9zZXhwX2Vycm9yXCIgXVxuICAgICAgIDsgKG1hdGNoIGxvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIEF0b20geCBdKVxuICAgICAgIDsgWyAobWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgICAgICB8IEZhaWx1cmUgeCAtPiBBdG9tIHhcbiAgICAgICAgICAgICB8IF8gLT4gQ29udi5zZXhwX29mX2V4biBleG4pXG4gICAgICAgICBdXG4gICAgICAgOyAobWF0Y2ggaW52YWxpZF9zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiaW52YWxpZF9zZXhwXCI7IHggXSBdKVxuICAgICAgIDsgKG1hdGNoIGNvbnRhaW5pbmdfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImNvbnRhaW5pbmdfc2V4cFwiOyB4IF0gXSlcbiAgICAgICBdKVxuOztcblxuKCogUGFydGlhbCBwYXJzaW5nICopXG5cbm1vZHVsZSBBbm5vdCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IFBhcnNleHAuUG9zaXRpb25zLnBvcyA9XG4gICAgeyBsaW5lIDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICA7IG9mZnNldCA6IGludFxuICAgIH1cblxuICB0eXBlIHJhbmdlID0gUGFyc2V4cC5Qb3NpdGlvbnMucmFuZ2UgPVxuICAgIHsgc3RhcnRfcG9zIDogcG9zXG4gICAgOyBlbmRfcG9zIDogcG9zXG4gICAgfVxuXG4gIHR5cGUgdCA9XG4gICAgfCBBdG9tIG9mIHJhbmdlICogVHlwZS50XG4gICAgfCBMaXN0IG9mIHJhbmdlICogdCBsaXN0ICogVHlwZS50XG5cbiAgdHlwZSAnYSBjb252ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBFcnJvciBvZiBleG4gKiB0XG4gICAgXVxuXG4gIGV4Y2VwdGlvbiBDb252X2V4biBvZiBzdHJpbmcgKiBleG5cblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENvbnZfZXhuXSAoZnVuY3Rpb25cbiAgICAgIHwgQ29udl9leG4gKGxvY2F0aW9uLCBleG4pIC0+IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+ZXhuXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIHR5cGUgc3RhY2sgPVxuICAgIHsgbXV0YWJsZSBwb3NpdGlvbnMgOiBwb3MgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGFjayA6IHQgbGlzdCBsaXN0XG4gICAgfVxuXG4gIGxldCBnZXRfc2V4cCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChfLCBzZXhwKSB8IExpc3QgKF8sIF8sIHNleHApIC0+IHNleHBcbiAgOztcblxuICBsZXQgZ2V0X3JhbmdlID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKHJhbmdlLCBfKSB8IExpc3QgKHJhbmdlLCBfLCBfKSAtPiByYW5nZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX2NvbnYgc2V4cF9vZl9hID0gZnVuY3Rpb25cbiAgICB8IGBSZXN1bHQgYSAtPiBUeXBlLkxpc3QgWyBBdG9tIFwiUmVzdWx0XCI7IGEgfD4gc2V4cF9vZl9hIF1cbiAgICB8IGBFcnJvciAoZXhuLCB0KSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJFcnJvclwiOyBMaXN0IFsgZXhuIHw+IENvbnYuc2V4cF9vZl9leG47IHQgfD4gZ2V0X3NleHAgXSBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIEFubm90X3NleHAgb2YgdFxuXG4gIGxldCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgYW5ub3Rfc2V4cCA9XG4gICAgICBtYXRjaCBhbm5vdF9zZXhwIHdpdGhcbiAgICAgIHwgKEF0b20gKF8sIHN1Yl9zZXhwKSB8IExpc3QgKF8sIF8sIHN1Yl9zZXhwKSkgd2hlbiBzZXhwID09IHN1Yl9zZXhwIC0+XG4gICAgICAgIHJhaXNlIChBbm5vdF9zZXhwIGFubm90X3NleHApXG4gICAgICB8IExpc3QgKF8sIGFubm90cywgXykgLT4gTGlzdC5pdGVyIGxvb3AgYW5ub3RzXG4gICAgICB8IEF0b20gXyAtPiAoKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsb29wIGFubm90X3NleHA7XG4gICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgQW5ub3Rfc2V4cCByZXMgLT4gU29tZSByZXNcbiAgOztcbmVuZFxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhuLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlX3BvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSB0ZXh0X2xpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgdGV4dF9jaGFyIDogaW50XG4gICAgOyBtdXRhYmxlIGdsb2JhbF9vZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgYnVmX3BvcyA6IGludFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8odGV4dF9saW5lID0gMSkgPyh0ZXh0X2NoYXIgPSAwKSA/KGJ1Zl9wb3MgPSAwKSA/KGdsb2JhbF9vZmZzZXQgPSAwKSAoKSA9XG4gICAgbGV0IGZhaWwgbXNnID0gZmFpbHdpdGggKFwiU2V4cGxpYi5TZXhwLlBhcnNlX3Bvcy5jcmVhdGU6IFwiIF4gbXNnKSBpblxuICAgIGlmIHRleHRfbGluZSA8IDFcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2xpbmUgPCAxXCJcbiAgICBlbHNlIGlmIHRleHRfY2hhciA8IDBcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2NoYXIgPCAwXCJcbiAgICBlbHNlIGlmIGdsb2JhbF9vZmZzZXQgPCAwXG4gICAgdGhlbiBmYWlsIFwiZ2xvYmFsX29mZnNldCA8IDBcIlxuICAgIGVsc2UgaWYgYnVmX3BvcyA8IDBcbiAgICB0aGVuIGZhaWwgXCJidWZfcG9zIDwgMFwiXG4gICAgZWxzZSB7IHRleHRfbGluZTsgdGV4dF9jaGFyOyBnbG9iYWxfb2Zmc2V0OyBidWZfcG9zIH1cbiAgOztcblxuICBsZXQgd2l0aF9idWZfcG9zIHQgYnVmX3BvcyA9IHsgdCB3aXRoIGJ1Zl9wb3MgfVxuZW5kXG5cbm1vZHVsZSBDb250X3N0YXRlID0gUGFyc2V4cC5PbGRfcGFyc2VyX2NvbnRfc3RhdGVcblxudHlwZSAoJ2EsICd0KSBwYXJzZV9yZXN1bHQgPVxuICB8IERvbmUgb2YgJ3QgKiBQYXJzZV9wb3MudFxuICB8IENvbnQgb2YgQ29udF9zdGF0ZS50ICogKCdhLCAndCkgcGFyc2VfZnVuXG5cbmFuZCAoJ2EsICd0KSBwYXJzZV9mdW4gPSBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCAndCkgcGFyc2VfcmVzdWx0XG5cbnR5cGUgJ3QgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA6IFBhcnNlX3Bvcy50IH1cblxudHlwZSBwYXJzZV9lcnJvciA9XG4gIHsgZXJyX21zZyA6IHN0cmluZ1xuICA7IHBhcnNlX3N0YXRlIDogWyBgU2V4cCBvZiB0IGxpc3QgbGlzdCBwYXJzZV9zdGF0ZSB8IGBBbm5vdCBvZiBBbm5vdC5zdGFjayBwYXJzZV9zdGF0ZSBdXG4gIH1cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHBhcnNlX2Vycm9yXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIHBlIC0+XG4gICAgICBsZXQgcHBvcyA9XG4gICAgICAgIG1hdGNoIHBlLnBhcnNlX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgU2V4cCB7IHBhcnNlX3BvcyB9IHwgYEFubm90IHsgcGFyc2VfcG9zIH0gLT4gcGFyc2VfcG9zXG4gICAgICBpblxuICAgICAgTGlzdFxuICAgICAgICBbIEF0b20gXCJTZXhwbGliLlNleHAuUGFyc2VfZXJyb3JcIlxuICAgICAgICA7IExpc3RcbiAgICAgICAgICAgIFsgTGlzdCBbIEF0b20gXCJlcnJfbXNnXCI7IEF0b20gcGUuZXJyX21zZyBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9saW5lXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9saW5lIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2NoYXJcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2NoYXIgXVxuICAgICAgICAgICAgOyBMaXN0XG4gICAgICAgICAgICAgICAgWyBBdG9tIFwiZ2xvYmFsX29mZnNldFwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcImJ1Zl9wb3NcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5idWZfcG9zIF1cbiAgICAgICAgICAgIF1cbiAgICAgICAgXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5tb2R1bGUgUGFyc2VyX291dHB1dCA6IHNpZ1xuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIEltcGwgOiBQYXJzZXhwLkVhZ2VyX3BhcnNlclxuXG4gICAgdHlwZSBvdXRwdXRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIHZhbCByYWlzZV9mb3VuZCA6IEltcGwuU3RhdGUuUmVhZF9vbmx5LnQgLT4gSW1wbC5wYXJzZWRfdmFsdWUgLT4gdW5pdFxuICBlbmRcblxuICBtb2R1bGUgQmFyZV9zZXhwIDogVCB3aXRoIHR5cGUgb3V0cHV0ID0gVHlwZS50XG4gIG1vZHVsZSBBbm5vdGF0ZWRfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IEFubm90LnRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIEltcGwgOiBQYXJzZXhwLkVhZ2VyX3BhcnNlclxuXG4gICAgdHlwZSBvdXRwdXRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIHZhbCByYWlzZV9mb3VuZCA6IEltcGwuU3RhdGUuUmVhZF9vbmx5LnQgLT4gSW1wbC5wYXJzZWRfdmFsdWUgLT4gdW5pdFxuICBlbmRcblxuICBtb2R1bGUgSSA9IFBhcnNleHAuUG9zaXRpb25zLkl0ZXJhdG9yXG5cbiAgbGV0IHJlYyBhbm5vdGF0ZV9zZXhwIHNleHAgaXRlciA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBUeXBlLkF0b20gXyAtPlxuICAgICAgbGV0IHN0YXJ0X3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBsZXQgZW5kX3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBBbm5vdC5BdG9tICh7IHN0YXJ0X3BvczsgZW5kX3BvcyB9LCBzZXhwKVxuICAgIHwgVHlwZS5MaXN0IGwgLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGFubm90ID0gYW5ub3RhdGVfc2V4cF9saXN0IGwgaXRlciBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuTGlzdCAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgYW5ub3QsIHNleHApXG5cbiAgYW5kIGFubm90YXRlX3NleHBfbGlzdCBzZXhwcyBpdGVyID1cbiAgICBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBhbm5vdGF0ZV9zZXhwIHNleHAgaXRlcikgc2V4cHMpXG4gIDs7XG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA9IHN0cnVjdFxuICAgIG1vZHVsZSBJbXBsID0gUGFyc2V4cC5FYWdlclxuXG4gICAgdHlwZSBvdXRwdXQgPSBUeXBlLnRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIGxldCByYWlzZV9mb3VuZCBfc3RhdGUgc2V4cCA9IHJhaXNlX25vdHJhY2UgKEZvdW5kIHNleHApXG4gIGVuZFxuXG4gIG1vZHVsZSBBbm5vdGF0ZWRfc2V4cCA9IHN0cnVjdFxuICAgIG1vZHVsZSBJbXBsID0gUGFyc2V4cC5FYWdlcl9hbmRfcG9zaXRpb25zXG5cbiAgICB0eXBlIG91dHB1dCA9IEFubm90LnRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIGxldCByYWlzZV9mb3VuZCBfc3RhdGUgKHNleHAsIHBvc2l0aW9ucykgPVxuICAgICAgbGV0IGFubm90ID0gYW5ub3RhdGVfc2V4cCBzZXhwIChJLmNyZWF0ZSBwb3NpdGlvbnMpIGluXG4gICAgICByYWlzZV9ub3RyYWNlIChGb3VuZCBhbm5vdClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV9wYXJzZXIgKFQgOiBzaWdcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuVFxuXG4gICAgdHlwZSBpbnB1dFxuXG4gICAgdmFsIGxlbmd0aCA6IGlucHV0IC0+IGludFxuXG4gICAgdmFsIHVuc2FmZV9mZWVkX2xvb3BcbiAgICAgIDogIEltcGwuU3RhdGUudFxuICAgICAgLT4gSW1wbC5TdGFjay50XG4gICAgICAtPiBpbnB1dFxuICAgICAgLT4gbWF4X3BvczppbnRcbiAgICAgIC0+IHBvczppbnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICBlbmQpIDogc2lnXG4gIHZhbCBwYXJzZVxuICAgIDogID9wYXJzZV9wb3M6UGFyc2VfcG9zLnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+IFQuaW5wdXRcbiAgICAtPiAoVC5pbnB1dCwgVC5vdXRwdXQpIHBhcnNlX3Jlc3VsdFxuZW5kID0gc3RydWN0XG4gIGxldCBwYXJzZV9wb3Nfb2Zfc3RhdGUgc3RhdGUgYnVmX3BvcyA9XG4gICAgeyBQYXJzZV9wb3MudGV4dF9saW5lID0gVC5JbXBsLlN0YXRlLmxpbmUgc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy50ZXh0X2NoYXIgPSBULkltcGwuU3RhdGUuY29sdW1uIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuZ2xvYmFsX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy5idWZfcG9zXG4gICAgfVxuICA7O1xuXG4gIGxldCBjaGVja19zdHJfYm91bmRzIH5wb3MgfmxlbiBzdHIgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBwb3MgPCAwXCI7XG4gICAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IGxlbiA8IDBcIjtcbiAgICBsZXQgc3RyX2xlbiA9IFQubGVuZ3RoIHN0ciBpblxuICAgIGxldCBwb3NfbGVuID0gcG9zICsgbGVuIGluXG4gICAgaWYgcG9zX2xlbiA+IHN0cl9sZW4gdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBwb3MgKyBsZW4gPiBzdHJfbGVuXCI7XG4gICAgcG9zX2xlbiAtIDFcbiAgOztcblxuICBsZXQgcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZyA9XG4gICAgbGV0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgPSBwYXJzZV9wb3Nfb2Zfc3RhdGUgc3RhdGUgcG9zIH0gaW5cbiAgICBsZXQgcGFyc2VfZXJyb3IgPSB7IGVycl9tc2cgPSBtc2c7IHBhcnNlX3N0YXRlID0gYFNleHAgcGFyc2Vfc3RhdGUgfSBpblxuICAgIHJhaXNlIChQYXJzZV9lcnJvciBwYXJzZV9lcnJvcilcbiAgOztcblxuICBsZXQgaGFuZGxlX3BhcnNleHBfZXJyb3Igc3RhdGUgcG9zIGUgPVxuICAgIGxldCBtc2cgPSBQYXJzZXhwLlBhcnNlX2Vycm9yLm1lc3NhZ2UgZSBpblxuICAgIG1hdGNoIFBhcnNleHAuUGFyc2VfZXJyb3IuUHJpdmF0ZS5vbGRfcGFyc2VyX2V4biBlIHdpdGhcbiAgICB8IGBQYXJzZV9lcnJvciAtPiByYWlzZV9wYXJzZV9lcnJvciBzdGF0ZSBwb3MgbXNnXG4gICAgfCBgRmFpbHVyZSAtPiBmYWlsd2l0aCBtc2dcbiAgOztcblxuICBsZXQgcmVjIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgfnBvcyB+bGVuIHN0ciA9XG4gICAgbGV0IG1heF9wb3MgPSBjaGVja19zdHJfYm91bmRzIH5wb3MgfmxlbiBzdHIgaW5cbiAgICBsZXQgcHJldmlvdXNfb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgIG1hdGNoIFQudW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyB3aXRoXG4gICAgfCBzdGFjayAtPiBta19jb250X3N0YXRlIHN0YXRlIHN0YWNrXG4gICAgfCBleGNlcHRpb24gVC5Gb3VuZCByZXN1bHQgLT5cbiAgICAgIGxldCBvZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIGluXG4gICAgICBsZXQgbmV4dF9wb3MgPSBwb3MgKyAob2Zmc2V0IC0gcHJldmlvdXNfb2Zmc2V0KSBpblxuICAgICAgRG9uZSAocmVzdWx0LCBwYXJzZV9wb3Nfb2Zfc3RhdGUgc3RhdGUgbmV4dF9wb3MpXG4gICAgfCBleGNlcHRpb24gUGFyc2V4cC5QYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlcnIgLT5cbiAgICAgIGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIChwb3MgKyAoVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSAtIHByZXZpb3VzX29mZnNldCkpIGVyclxuXG4gIGFuZCBta19jb250X3N0YXRlIHN0YXRlIHN0YWNrID1cbiAgICBsZXQgcGFyc2VfZnVuID1cbiAgICAgIGxldCB1c2VkX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgICAgZnVuIH5wb3MgfmxlbiBzdHIgLT5cbiAgICAgICAgaWYgIXVzZWRfcmVmXG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXhwbGliLlNleHA6IHBhcnNlciBjb250aW51YXRpb24gY2FsbGVkIHR3aWNlXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgdXNlZF9yZWYgOj0gdHJ1ZTtcbiAgICAgICAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIpXG4gICAgaW5cbiAgICBsZXQgY29udF9zdGF0ZSA9IFQuSW1wbC5TdGF0ZS5vbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgaW5cbiAgICBDb250IChjb250X3N0YXRlLCBwYXJzZV9mdW4pXG4gIDs7XG5cbiAgbGV0IHBhcnNlID8ocGFyc2VfcG9zID0gUGFyc2VfcG9zLmNyZWF0ZSAoKSkgP2xlbiBzdHIgPVxuICAgIGxldCBwb3MsIGJ1Zl9wb3MgPVxuICAgICAgbGV0IHsgUGFyc2VfcG9zLnRleHRfbGluZTsgdGV4dF9jaGFyOyBnbG9iYWxfb2Zmc2V0OyBidWZfcG9zIH0gPSBwYXJzZV9wb3MgaW5cbiAgICAgICggeyBQYXJzZXhwLlBvc2l0aW9ucy5saW5lID0gdGV4dF9saW5lOyBjb2wgPSB0ZXh0X2NoYXI7IG9mZnNldCA9IGdsb2JhbF9vZmZzZXQgfVxuICAgICAgLCBidWZfcG9zIClcbiAgICBpblxuICAgIGxldCBzdGF0ZSA9IFQuSW1wbC5TdGF0ZS5jcmVhdGUgfnBvcyB+bm9fc2V4cF9pc19lcnJvcjpmYWxzZSBULnJhaXNlX2ZvdW5kIGluXG4gICAgbGV0IHN0YWNrID0gVC5JbXBsLlN0YWNrLmVtcHR5IGluXG4gICAgbGV0IGxlbiA9XG4gICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBTb21lIHggLT4geFxuICAgICAgfCBOb25lIC0+IFQubGVuZ3RoIHN0ciAtIGJ1Zl9wb3NcbiAgICBpblxuICAgIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5wb3M6YnVmX3BvcyB+bGVuXG4gIDs7XG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX3NleHAgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkJhcmVfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5sZXQgcGFyc2UgPSBTdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIFN0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChTdHJpbmcudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9zdHJfYW5ub3QgPSBTdHJpbmdfc2luZ2xlX2Fubm90LnBhcnNlXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2luZ2xlX3NleHAgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkJhcmVfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IGJpZ3N0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayAoc3RyIDogaW5wdXQpIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKEFycmF5MS51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX2JpZ3N0cmluZyA9IEJpZ3N0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9hbm5vdCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQW5ub3RhdGVkX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmdfYW5ub3QgPSBCaWdzdHJpbmdfc2luZ2xlX2Fubm90LnBhcnNlXG5cbigqIElucHV0IGZ1bmN0aW9ucyAqKVxuXG5sZXQgbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlID1cbiAgKCk7XG4gIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgbGV0IHBhcnNlX3BvcyA9XG4gICAgICBtYXRjaCBwYXJzZV9wb3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IFBhcnNlX3Bvcy5jcmVhdGUgfmJ1Zl9wb3M6cG9zICgpXG4gICAgICB8IFNvbWUgcGFyc2VfcG9zIC0+XG4gICAgICAgIHBhcnNlX3Bvcy5QYXJzZV9wb3MuYnVmX3BvcyA8LSBwb3M7XG4gICAgICAgIHBhcnNlX3Bvc1xuICAgIGluXG4gICAgbXlfcGFyc2UgP3BhcnNlX3BvczooU29tZSBwYXJzZV9wb3MpID9sZW46KFNvbWUgbGVuKSBzdHJcbjs7XG5cbigqIFt3c19idWZdIG11c3QgY29udGFpbiBhIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIgKilcbmxldCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmID1cbiAgKCogV2hlbiBwYXJzaW5nIGF0b21zLCB0aGUgaW5jcmVtZW50YWwgcGFyc2VyIGNhbm5vdCB0ZWxsIHdoZXRoZXJcbiAgICAgaXQgaXMgYXQgdGhlIGVuZCB1bnRpbCBpdCBoaXRzIHdoaXRlc3BhY2UuICBXZSB0aGVyZWZvcmUgZmVlZCBpdFxuICAgICBvbmUgc3BhY2UgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgZmluaXNoZWQuICopXG4gIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW46MSB3c19idWYgd2l0aFxuICB8IERvbmUgKHNleHAsIF8pIC0+IE9rIHNleHBcbiAgfCBDb250IChjb250X3N0YXRlLCBfKSAtPiBFcnJvciBjb250X3N0YXRlXG47O1xuXG5sZXQgZ2VuX2lucHV0X3NleHAgbXlfcGFyc2UgP3BhcnNlX3BvcyBpYyA9XG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbWF0Y2ggaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICAgIHwgRXJyb3IgXyAtPiByYWlzZSBFbmRfb2ZfZmlsZSlcbiAgICB8IGMgLT5cbiAgICAgIEJ5dGVzLnNldCBidWYgMCBjO1xuICAgICAgKG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW46MSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgICB8IERvbmUgKHNleHAsIF8pIC0+IHNleHBcbiAgICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgbG9vcCAobWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlKVxuOztcblxubGV0IGlucHV0X3NleHAgP3BhcnNlX3BvcyBpYyA9IGdlbl9pbnB1dF9zZXhwIHBhcnNlID9wYXJzZV9wb3MgaWNcblxubGV0IGdlbl9pbnB1dF9yZXZfc2V4cHMgbXlfcGFyc2UgfndzX2J1ZiA/cGFyc2VfcG9zID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGljID1cbiAgbGV0IHJldl9zZXhwc19yZWYgPSByZWYgW10gaW5cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgLT5cbiAgICAgICAgcmV2X3NleHBzX3JlZiA6PSBzZXhwIDo6ICFyZXZfc2V4cHNfcmVmO1xuICAgICAgICBsZXQgbl9wYXJzZWQgPSBidWZfcG9zIC0gcG9zIGluXG4gICAgICAgIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSB+cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gICAgICAgIGlmIG5fcGFyc2VkID0gbGVuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBuZXdfbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgICAgICAgIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlbjpuZXdfbGVuKVxuICAgICAgICBlbHNlIGxvb3AgdGhpc19wYXJzZSB+cG9zOmJ1Zl9wb3MgfmxlbjoobGVuIC0gbl9wYXJzZWQpXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlbjooaW5wdXQgaWMgYnVmIDAgYnVmX2xlbikpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwIDo6ICFyZXZfc2V4cHNfcmVmXG4gICAgICB8IEVycm9yIFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSAtPiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgKFwiU2V4cGxpYi5TZXhwLmlucHV0X3Jldl9zZXhwczogcmVhY2hlZCBFT0Ygd2hpbGUgaW4gc3RhdGUgXCJcbiAgICAgICAgICAgXiBDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKSlcbiAgaW5cbiAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuXG47O1xuXG5sZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gIGdlbl9pbnB1dF9yZXZfc2V4cHMgcGFyc2UgfndzX2J1ZjpcIiBcIiA/cGFyc2VfcG9zID9idWYgaWNcbjs7XG5cbmxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuKCogb2Zfc3RyaW5nIGFuZCBvZl9iaWdzdHJpbmcgKilcblxubGV0IG9mX3N0cmluZ19iaWdzdHJpbmcgbG9jIG15X3BhcnNlIHdzX2J1ZiBnZXRfbGVuIGdldF9zdWIgc3RyID1cbiAgbWF0Y2ggbXlfcGFyc2UgP3BhcnNlX3BvczpOb25lID9sZW46Tm9uZSBzdHIgd2l0aFxuICB8IERvbmUgKHNleHAsIHBhcnNlX3BvcykgLT5cbiAgICAobWF0Y2ggbXlfcGFyc2UgP3BhcnNlX3BvczooU29tZSBwYXJzZV9wb3MpID9sZW46Tm9uZSBzdHIgd2l0aFxuICAgICB8IERvbmUgKF9zZXhwMiwgXykgLT5cbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBnb3QgbXVsdGlwbGUgUy1leHByZXNzaW9ucyB3aGVyZSBvbmx5IG9uZSB3YXMgZXhwZWN0ZWQuXCJcbiAgICAgICAgICAgIGxvYylcbiAgICAgfCBDb250IChDb250X3N0YXRlLlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSwgXykgLT4gc2V4cFxuICAgICB8IENvbnQgKF8sIF8pIC0+XG4gICAgICAgKCogbm90IHVzaW5nIFtmZWVkX2VuZF9vZl9pbnB1dF0gaGVyZSBtZWFucyBcImEgYlwiIHdpbGwgZW5kIHVwIGhlcmUgYW5kIG5vdCBpblxuICAgICAgICAgIFwibXVsdGlwbGUgUy1leHByZXNzaW9uc1wiIGJyYW5jaCwgYnV0IGl0IGRvZXNuJ3QgbWF0dGVyIHRoYXQgbXVjaCAqKVxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IFMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhIGF0IHBvc2l0aW9uICVkLi4uXCJcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgcGFyc2VfcG9zLmJ1Zl9wb3MpKVxuICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+XG4gICAgKG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgd2l0aFxuICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICBsZXQgY29udF9zdGF0ZV9zdHIgPSBDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlIGluXG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogaW5jb21wbGV0ZSBTLWV4cHJlc3Npb24gd2hpbGUgaW4gc3RhdGUgJXM6ICVzXCJcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgY29udF9zdGF0ZV9zdHJcbiAgICAgICAgICAgIChnZXRfc3ViIHN0ciAwIChnZXRfbGVuIHN0cikpKSlcbjs7XG5cbmxldCBvZl9zdHJpbmcgc3RyID0gb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIm9mX3N0cmluZ1wiIHBhcnNlIFwiIFwiIFN0cmluZy5sZW5ndGggU3RyaW5nLnN1YiBzdHJcbmxldCBvZl9zdHJpbmdfbWFueSBzdHIgPSBQYXJzZXhwLk1hbnkucGFyc2Vfc3RyaW5nX2V4biBzdHJcblxubGV0IGdldF9ic3RyX3N1Yl9zdHIgYnN0ciBwb3MgbGVuID1cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57cG9zICsgaX1cbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBic3RyX3dzX2J1ZiA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCAxXG5sZXQgKCkgPSBic3RyX3dzX2J1Zi57MH0gPC0gJyAnXG5cbmxldCBvZl9iaWdzdHJpbmcgYnN0ciA9XG4gIG9mX3N0cmluZ19iaWdzdHJpbmdcbiAgICBcIm9mX2JpZ3N0cmluZ1wiXG4gICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgYnN0cl93c19idWZcbiAgICBBcnJheTEuZGltXG4gICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgIGJzdHJcbjs7XG5cbigqIExvYWRpbmcgKilcblxubGV0IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gIHRyeVxuICAgIGxldCBzZXhwcyA9IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zOk5vbmUgP2J1ZiBpYyBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBzXG4gIHdpdGhcbiAgfCBleGMgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBleGNcbjs7XG5cbmxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxubGV0IGxvYWRfc2V4cHMgP2J1ZiBmaWxlID0gTGlzdC5yZXYgKGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSlcbmxldCBnZW5fbG9hZF9zZXhwX2xvYyA9IFwiU2V4cGxpYi5TZXhwLmdlbl9sb2FkX3NleHBcIlxuXG5sZXQgZ2VuX2xvYWRfc2V4cCBteV9wYXJzZSA/KHN0cmljdCA9IHRydWUpID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgPVxuICBsZXQgYnVmX2xlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlID1cbiAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWY6XCIgXCIgd2l0aFxuICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgXCIlczogRU9GIGluICVzIHdoaWxlIGluIHN0YXRlICVzXCJcbiAgICAgICAgICAgICBnZW5fbG9hZF9zZXhwX2xvY1xuICAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgIHwgRG9uZSAoc2V4cCwgKHsgUGFyc2VfcG9zLmJ1Zl9wb3M7IF8gfSBhcyBwYXJzZV9wb3MpKSB3aGVuIHN0cmljdCAtPlxuICAgICAgICBsZXQgcmVjIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvcyB+bGVuID1cbiAgICAgICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3MgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgICAgICB8IERvbmUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKHNwcmludGYgXCIlczogbW9yZSB0aGFuIG9uZSBTLWV4cHJlc3Npb24gaW4gZmlsZSAlc1wiIGdlbl9sb2FkX3NleHBfbG9jIGZpbGUpXG4gICAgICAgICAgfCBDb250IChjb250X3N0YXRlLCB0aGlzX3BhcnNlKSAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICAgIGlmIGxlbiA+IDBcbiAgICAgICAgICAgIHRoZW4gc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuICAgICAgICAgICAgZWxzZSBpZiBjb250X3N0YXRlID0gQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgICAgICAgICAgIHRoZW4gc2V4cFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCIlczogJXMgaW4gc3RhdGUgJXMgbG9hZGluZyBmaWxlICVzXCJcbiAgICAgICAgICAgICAgICAgICBnZW5fbG9hZF9zZXhwX2xvY1xuICAgICAgICAgICAgICAgICAgIFwiYWRkaXRpb25hbCBpbmNvbXBsZXRlIGRhdGFcIlxuICAgICAgICAgICAgICAgICAgIChDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKVxuICAgICAgICAgICAgICAgICAgIGZpbGUpXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSB+cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gICAgICAgIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIGJ1Zl9wb3MpXG4gICAgICB8IERvbmUgKHNleHAsIF8pIC0+IHNleHBcbiAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlKVxuICBpblxuICB0cnlcbiAgICBsZXQgc2V4cCA9IGxvb3AgKG1rX3RoaXNfcGFyc2UgbXlfcGFyc2UpIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgc2V4cFxuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG5tb2R1bGUgQW5ub3RhdGVkID0gc3RydWN0XG4gIGluY2x1ZGUgQW5ub3RcblxuICBsZXQgcGFyc2UgPSBwYXJzZV9zdHJfYW5ub3RcbiAgbGV0IHBhcnNlX2JpZ3N0cmluZyA9IHBhcnNlX2JpZ3N0cmluZ19hbm5vdFxuXG4gIGxldCBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID1cbiAgICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG4gIDs7XG5cbiAgbGV0IGlucHV0X3NleHAgP3BhcnNlX3BvcyBpYyA9IGdlbl9pbnB1dF9zZXhwIHBhcnNlID9wYXJzZV9wb3MgaWNcbiAgbGV0IGlucHV0X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9IExpc3QucmV2IChpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljKVxuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nIFwiQW5ub3RhdGVkLm9mX3N0cmluZ1wiIHBhcnNlIFwiIFwiIFN0cmluZy5sZW5ndGggU3RyaW5nLnN1YiBzdHJcbiAgOztcblxuICBsZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICAgIG9mX3N0cmluZ19iaWdzdHJpbmdcbiAgICAgIFwiQW5ub3RhdGVkLm9mX2JpZ3N0cmluZ1wiXG4gICAgICBwYXJzZV9iaWdzdHJpbmdcbiAgICAgIGJzdHJfd3NfYnVmXG4gICAgICBBcnJheTEuZGltXG4gICAgICBnZXRfYnN0cl9zdWJfc3RyXG4gICAgICBic3RyXG4gIDs7XG5cbiAgbGV0IGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSA9IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlXG4gIGxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG4gIGxldCBsb2FkX3NleHAgP3N0cmljdCA/YnVmIGZpbGUgPSBnZW5fbG9hZF9zZXhwIHBhcnNlID9zdHJpY3QgP2J1ZiBmaWxlXG5cbiAgbGV0IGNvbnYgZiBhbm5vdF9zZXhwID1cbiAgICBsZXQgc2V4cCA9IGdldF9zZXhwIGFubm90X3NleHAgaW5cbiAgICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIGJhZF9zZXhwKSBhcyBlIC0+XG4gICAgICAobWF0Y2ggZmluZF9zZXhwIGFubm90X3NleHAgYmFkX3NleHAgd2l0aFxuICAgICAgIHwgTm9uZSAtPiByYWlzZSBlXG4gICAgICAgfCBTb21lIGJhZF9hbm5vdF9zZXhwIC0+IGBFcnJvciAoZXhjLCBiYWRfYW5ub3Rfc2V4cCkpXG4gIDs7XG5cbiAgbGV0IGdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHAgPVxuICAgIGxldCByYW5nZSA9IGdldF9yYW5nZSBhbm5vdF9zZXhwIGluXG4gICAgbGV0IHsgc3RhcnRfcG9zID0geyBsaW5lOyBjb2w7IG9mZnNldCA9IF8gfTsgZW5kX3BvcyA9IF8gfSA9IHJhbmdlIGluXG4gICAgbGV0IGxvYyA9IHNwcmludGYgXCIlczolZDolZFwiIGZpbGUgbGluZSBjb2wgaW5cbiAgICBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jLCBleGMpLCBnZXRfc2V4cCBhbm5vdF9zZXhwKVxuICA7O1xuZW5kXG5cbmxldCBsb2FkX3NleHBfY29udiA/KHN0cmljdCA9IHRydWUpID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCBzZXhwID0gbG9hZF9zZXhwIH5zdHJpY3QgfmJ1ZiBmaWxlIGluXG4gIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gLT4gQW5ub3RhdGVkLmNvbnYgZiAoQW5ub3RhdGVkLmxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSlcbjs7XG5cbmxldCByYWlzZV9jb252X2V4biB+ZmlsZSA9IGZ1bmN0aW9uXG4gIHwgYFJlc3VsdCByZXMgLT4gcmVzXG4gIHwgYEVycm9yIChleGMsIGFubm90X3NleHApIC0+IHJhaXNlIChBbm5vdGF0ZWQuZ2V0X2NvbnZfZXhuIH5maWxlIH5leGMgYW5ub3Rfc2V4cClcbjs7XG5cbmxldCBsb2FkX3NleHBfY29udl9leG4gP3N0cmljdCA/YnVmIGZpbGUgZiA9XG4gIHJhaXNlX2NvbnZfZXhuIH5maWxlIChsb2FkX3NleHBfY29udiA/c3RyaWN0ID9idWYgZmlsZSBmKVxuOztcblxubGV0IGxvYWRfc2V4cHNfY29udiA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgcmV2X3NleHBzID0gbG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIGluXG4gIHRyeSBMaXN0LnJldl9tYXAgKGZ1biBzZXhwIC0+IGBSZXN1bHQgKGYgc2V4cCkpIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXAgKGZ1biBhbm5vdF9zZXhwIC0+IEFubm90YXRlZC5jb252IGYgYW5ub3Rfc2V4cCkgcmV2X2Fubm90X3NleHBzKVxuOztcblxubGV0IGxvYWRfc2V4cHNfY29udl9leG4gPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIGYgcmV2X3NleHBzIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPlxuICAgIChtYXRjaCBBbm5vdGF0ZWQubG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIHdpdGhcbiAgICAgfCBbXSAtPlxuICAgICAgICgqIEZpbGUgaXMgbm93IGVtcHR5IC0gcGVyaGFwcyBpdCB3YXMgYSB0ZW1wb3JhcnkgZmlsZSBoYW5kbGU/ICopXG4gICAgICAgcmFpc2UgZVxuICAgICB8IHJldl9hbm5vdF9zZXhwcyAtPlxuICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgKGZ1biBhbm5vdF9zZXhwIC0+IHJhaXNlX2NvbnZfZXhuIH5maWxlIChBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApKVxuICAgICAgICAgcmV2X2Fubm90X3NleHBzKVxuOztcblxubGV0IGdlbl9vZl9zdHJpbmdfY29udiBvZl9zdHJpbmcgYW5ub3Rfb2Zfc3RyaW5nIHN0ciBmID1cbiAgbGV0IHNleHAgPSBvZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gLT4gQW5ub3RhdGVkLmNvbnYgZiAoYW5ub3Rfb2Zfc3RyaW5nIHN0cilcbjs7XG5cbmxldCBvZl9zdHJpbmdfY29udiBzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udiBvZl9zdHJpbmcgQW5ub3RhdGVkLm9mX3N0cmluZyBzdHIgZlxuXG5sZXQgb2ZfYmlnc3RyaW5nX2NvbnYgYnN0ciBmID1cbiAgZ2VuX29mX3N0cmluZ19jb252IG9mX2JpZ3N0cmluZyBBbm5vdGF0ZWQub2ZfYmlnc3RyaW5nIGJzdHIgZlxuOztcblxubW9kdWxlIE9mX3N0cmluZ19jb252X2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhjIDogZXhuXG4gICAgOyBzZXhwIDogVHlwZS50XG4gICAgOyBzdWJfc2V4cCA6IFR5cGUudFxuICAgIH1cblxuICBleGNlcHRpb24gRSBvZiB0XG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFXSAoZnVuY3Rpb25cbiAgICAgIHwgRSBvc2NlIC0+XG4gICAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlXG4gICAgICAgICAgKClcbiAgICAgICAgICB+aW52YWxpZF9zZXhwOm9zY2Uuc3ViX3NleHBcbiAgICAgICAgICB+ZXhuOm9zY2UuZXhjXG4gICAgICAgICAgfmNvbnRhaW5pbmdfc2V4cDpvc2NlLnNleHBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5lbmRcblxubGV0IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2Zfc3RyaW5nIHN0ciBmID1cbiAgbGV0IHNleHAgPSBvZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBmIHNleHAgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgKGV4Yywgc3ViX3NleHApIC0+XG4gICAgcmFpc2UgKE9mX3N0cmluZ19jb252X2V4bi5FIHsgT2Zfc3RyaW5nX2NvbnZfZXhuLmV4Yzsgc2V4cDsgc3ViX3NleHAgfSlcbjs7XG5cbmxldCBvZl9zdHJpbmdfY29udl9leG4gc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZlxubGV0IG9mX2JpZ3N0cmluZ19jb252X2V4biBic3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX2JpZ3N0cmluZyBic3RyIGZcblxubGV0IG9mX3N0cmluZ19tYW55X2NvbnZfZXhuIHN0ciBmID1cbiAgbGV0IHNleHBzID0gb2Zfc3RyaW5nX21hbnkgc3RyIGluXG4gIExpc3QubWFwIChmdW4gc2V4cCAtPiBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIChmdW4geCAtPiB4KSBzZXhwIGYpIHNleHBzXG47O1xuXG4oKiBVdGlsaXRpZXMgZm9yIGF1dG9tYXRlZCB0eXBlIGNvbnZlcnNpb25zICopXG5cbmxldCB1bml0ID0gTGlzdCBbXVxuXG5sZXQgaXNfdW5pdCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxuZXh0ZXJuYWwgc2V4cF9vZl90IDogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdF9vZl9zZXhwIDogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4oKiBVdGlsaXRpZXMgZm9yIGNvbnZlcnNpb24gZXJyb3IgaGFuZGxpbmcgKilcblxudHlwZSBmb3VuZCA9XG4gIFsgYEZvdW5kXG4gIHwgYFBvcyBvZiBpbnQgKiBmb3VuZFxuICBdXG5cbnR5cGUgc2VhcmNoX3Jlc3VsdCA9XG4gIFsgYE5vdF9mb3VuZFxuICB8IGZvdW5kXG4gIF1cblxubGV0IHJlYyBzZWFyY2hfcGh5c2ljYWwgc2V4cCB+Y29udGFpbmVkID1cbiAgaWYgc2V4cCA9PSBjb250YWluZWRcbiAgdGhlbiBgRm91bmRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBBdG9tIF8gLT4gYE5vdF9mb3VuZFxuICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBgTm90X2ZvdW5kXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgbGV0IHJlcyA9IHNlYXJjaF9waHlzaWNhbCBoIH5jb250YWluZWQgaW5cbiAgICAgICAgICAobWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICAgfCBgTm90X2ZvdW5kIC0+IGxvb3AgKGkgKyAxKSB0XG4gICAgICAgICAgIHwgI2ZvdW5kIGFzIGZvdW5kIC0+IGBQb3MgKGksIGZvdW5kKSlcbiAgICAgIGluXG4gICAgICBsb29wIDAgbHN0KVxuOztcblxubGV0IHJlYyBzdWJzdF9mb3VuZCBzZXhwIH5zdWJzdCA9IGZ1bmN0aW9uXG4gIHwgYEZvdW5kIC0+IHN1YnN0XG4gIHwgYFBvcyAocG9zLCBmb3VuZCkgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgQXRvbSBfIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBhdG9tIHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgfCBMaXN0IGxzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBhY2MgcG9zID0gZnVuY3Rpb25cbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJTZXhwbGliLlNleHAuc3Vic3RfZm91bmQ6IHNob3J0IGxpc3Qgd2hlbiBwb3NpdGlvbiByZXF1ZXN0ZWRcIlxuICAgICAgICAgfCBoIDo6IHQgd2hlbiBwb3MgPD4gMCAtPiBsb29wIChoIDo6IGFjYykgKHBvcyAtIDEpIHRcbiAgICAgICAgIHwgaCA6OiB0IC0+IExpc3QgKExpc3QucmV2X2FwcGVuZCBhY2MgKHN1YnN0X2ZvdW5kIGggfnN1YnN0IGZvdW5kIDo6IHQpKVxuICAgICAgIGluXG4gICAgICAgbG9vcCBbXSBwb3MgbHN0KVxuOztcbiIsIigqIHBhY2thZ2luZyBvZiBhbm5vdGF0ZWQgc2V4cCBmdW5jdGlvbnMgKilcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciBmIHRcbiAgbGV0IG1hcCB0IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIHQpXG5lbmRcblxuaW5jbHVkZSBUeXBlX3dpdGhfbGF5b3V0XG5cbnR5cGUgcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS50ID1cbiAgeyByb3cgOiBpbnRcbiAgOyBjb2wgOiBpbnRcbiAgfVxuXG5sZXQgc2V4cF9vZl9wb3MgPSBTcmNfcG9zLlJlbGF0aXZlLnNleHBfb2ZfdFxuXG5tb2R1bGUgTGV4ZXIgPSBzdHJ1Y3RcbiAgbGV0IG1haW4gPSBMZXhlci5tYWluX3dpdGhfbGF5b3V0XG5lbmRcblxubW9kdWxlIFBhcnNlciA9IFBhcnNlcl93aXRoX2xheW91dFxuXG5tb2R1bGUgUmVuZGVyID0gc3RydWN0XG4gIG1vZHVsZSBSZWxfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZVxuICBtb2R1bGUgQWJzX3BvcyA9IFNyY19wb3MuQWJzb2x1dGVcblxuICB0eXBlIGxhc3RfYXRvbSA9XG4gICAgeyBpbW1lZF9hZnRlciA6IEFic19wb3MudFxuICAgIDsgdW5lc2NhcGVkIDogYm9vbFxuICAgIH1cblxuICB0eXBlIHN0YXRlID1cbiAgICB7IG11dGFibGUgcm93X3NoaWZ0IDogUmVsX3Bvcy50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnQgOiBBYnNfcG9zLnRcbiAgICA7IG11dGFibGUgbGFzdF9hdG9tIDogbGFzdF9hdG9tIG9wdGlvblxuICAgIDsgbXV0YWJsZSBsYXN0X2NvbW1lbnRfcm93IDogaW50XG4gICAgfVxuXG4gICgqIHRoZSBwb2ludCBvZiBbaW1tZWRfYWZ0ZXJfbGFzdF9hdG9tXSBpcyB0byBwcmV2ZW50XG4gICAgIChBIEIgQykgZnJvbSByZW5kZXJpbmcgYXMgKEEgQkJDKSBhZnRlciB3ZSByZXBsYWNlIEIgd2l0aCBCQiAqKVxuXG4gIHR5cGUgJ2EgdCA9IChjaGFyIC0+IHVuaXQpIC0+IHN0YXRlIC0+ICdhXG5cbiAgbGV0IHJldHVybiBhIF9wdXRjIF9zdCA9IGFcbiAgbGV0IGJpbmQgbSB+ZiBwdXRjIHN0ID0gZiAobSBwdXRjIHN0KSBwdXRjIHN0XG5cbiAgbGV0IHJ1biBwdXRjIG0gPVxuICAgIG1cbiAgICAgIHB1dGNcbiAgICAgIHsgcm93X3NoaWZ0ID0gUmVsX3Bvcy56ZXJvXG4gICAgICA7IGN1cnJlbnQgPSBBYnNfcG9zLm9yaWdpblxuICAgICAgOyBsYXN0X2F0b20gPSBOb25lXG4gICAgICA7IGxhc3RfY29tbWVudF9yb3cgPSAwICgqIGJlZm9yZSB0aGUgZmlsZSBzdGFydHMgKilcbiAgICAgIH1cbiAgOztcblxuICBsZXQgZW1pdF9jaGFyIHB1dGMgc3QgYyA9XG4gICAgbGV0IHsgQWJzX3Bvcy5jb2w7IHJvdyB9ID0gc3QuY3VycmVudCBpblxuICAgIHB1dGMgYztcbiAgICBpZiBjID0gJ1xcbidcbiAgICB0aGVuIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdyA9IDEgKyByb3c7IGNvbCA9IDEgfVxuICAgIGVsc2Ugc3QuY3VycmVudCA8LSB7IEFic19wb3Mucm93OyBjb2wgPSAxICsgY29sIH1cbiAgOztcblxuICBsZXQgZW1pdF9zdHJpbmcgcHV0YyBzdCBzdHIgPVxuICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0IHN0ci5baV1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhcnMgcHV0YyBzdCBjIH5uID0gZW1pdF9zdHJpbmcgcHV0YyBzdCAoU3RyaW5nLm1ha2UgbiBjKVxuXG4gIGxldCBhZHZhbmNlIHB1dGMgfmFuY2hvciBzdCB+Ynk6ZGVsdGEgfnVuZXNjYXBlZF9hdG9tIH5saW5lX2NvbW1lbnQgPVxuICAgIGxldCBuZXdfcG9zID0gQWJzX3Bvcy5hZGQgKEFic19wb3MuYWRkIGFuY2hvciBkZWx0YSkgc3Qucm93X3NoaWZ0IGluXG4gICAgbGV0IG5lZWRfdG9fbGVhdmVfcm9vbV9iZXR3ZWVuX3R3b191bmVzY2FwZWRfYXRvbXNfbGVzdF90aGV5X2JlY29tZV9vbmUgPVxuICAgICAgdW5lc2NhcGVkX2F0b21cbiAgICAgICYmXG4gICAgICBtYXRjaCBzdC5sYXN0X2F0b20gd2l0aFxuICAgICAgfCBTb21lIHsgaW1tZWRfYWZ0ZXI7IHVuZXNjYXBlZCA9IHByZXZfdW5lc2NhcGVkIH0gLT5cbiAgICAgICAgbmV3X3BvcyA9IGltbWVkX2FmdGVyICYmIHByZXZfdW5lc2NhcGVkXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICBpblxuICAgICgqIGF2b2lkIGpvaW5pbmcgc3Vic2VxdWVudCBpdGVtcyBpbnRvIGEgcHJlY2VkaW5nIGxpbmUgY29tbWVudCAqKVxuICAgIGxldCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCA9IG5ld19wb3Mucm93ID0gc3QubGFzdF9jb21tZW50X3JvdyBpblxuICAgIGxldCBuZWVkX3RvX3JlcG9zaXRpb24gPVxuICAgICAgKG5vdCAoQWJzX3Bvcy5nZXEgbmV3X3BvcyBzdC5jdXJyZW50KSlcbiAgICAgIHx8IG5lZWRfdG9fY2xlYXJfbGluZV9jb21tZW50XG4gICAgICB8fCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lXG4gICAgaW5cbiAgICBsZXQgcm93X2RlbHRhLCBuZXdfcG9zID1cbiAgICAgIGlmIG5lZWRfdG9fcmVwb3NpdGlvblxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHJlcG9zaXRpb25pbmcgaGV1cmlzdGljOiBqdXN0IG1vdmUgdG8gdGhlIG5leHQgZnJlc2ggcm93ICopXG4gICAgICAgIGxldCBuZXdfcm93ID0gMSArIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgICAgbGV0IHJvd19kZWx0YSA9IG5ld19yb3cgLSBuZXdfcG9zLkFic19wb3Mucm93IGluXG4gICAgICAgIHJvd19kZWx0YSwgeyBBYnNfcG9zLnJvdyA9IG5ld19yb3c7IGNvbCA9IG5ld19wb3MuQWJzX3Bvcy5jb2wgfSlcbiAgICAgIGVsc2UgMCwgbmV3X3Bvc1xuICAgIGluXG4gICAgKCogYWR2YW5jZSB0byBuZXdfcG9zIGJ5IGVtaXR0aW5nIHdoaXRlc3BhY2UgKilcbiAgICBpZiBuZXdfcG9zLkFic19wb3Mucm93ID4gc3QuY3VycmVudC5BYnNfcG9zLnJvd1xuICAgIHRoZW4gKFxuICAgICAgbGV0IG4gPSBuZXdfcG9zLkFic19wb3Mucm93IC0gc3QuY3VycmVudC5BYnNfcG9zLnJvdyBpblxuICAgICAgZW1pdF9jaGFycyBwdXRjIHN0ICdcXG4nIH5uKTtcbiAgICBpZiBuZXdfcG9zLkFic19wb3MuY29sID4gc3QuY3VycmVudC5BYnNfcG9zLmNvbFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG4gPSBuZXdfcG9zLkFic19wb3MuY29sIC0gc3QuY3VycmVudC5BYnNfcG9zLmNvbCBpblxuICAgICAgZW1pdF9jaGFycyBwdXRjIHN0ICcgJyB+bik7XG4gICAgYXNzZXJ0IChuZXdfcG9zID0gc3QuY3VycmVudCk7XG4gICAgaWYgbGluZV9jb21tZW50IHRoZW4gc3QubGFzdF9jb21tZW50X3JvdyA8LSBzdC5jdXJyZW50LnJvdztcbiAgICBzdC5yb3dfc2hpZnRcbiAgICA8LSB7IHN0LnJvd19zaGlmdCB3aXRoIFJlbF9wb3Mucm93ID0gc3Qucm93X3NoaWZ0LlJlbF9wb3Mucm93ICsgcm93X2RlbHRhIH1cbiAgOztcblxuICBsZXQgcmVjIHJlbmRlcl90IHB1dGMgfmFuY2hvciAoc3QgOiBzdGF0ZSkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBdG9tIChkZWx0YSwgdGV4dCwgZm10X3RleHQpIC0+XG4gICAgICBsZXQgZm10X3RleHQgPVxuICAgICAgICBtYXRjaCBmbXRfdGV4dCB3aXRoXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiBQcmVfc2V4cC5tYWNoX21heWJlX2VzY19zdHIgdGV4dFxuICAgICAgICB8IFNvbWUgdGV4dCAtPiB0ZXh0XG4gICAgICBpblxuICAgICAgbGV0IHVuZXNjYXBlZCA9IGZtdF90ZXh0LlswXSA8PiAnXCInIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOnVuZXNjYXBlZCB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBmbXRfdGV4dDtcbiAgICAgIHN0Lmxhc3RfYXRvbSA8LSBTb21lIHsgaW1tZWRfYWZ0ZXIgPSBzdC5jdXJyZW50OyB1bmVzY2FwZWQgfVxuICAgIHwgTGlzdCAoc3RhcnRfZGVsdGEsIHRvY3MsIGVuZF9kZWx0YSkgLT5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6c3RhcnRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGxldCBjaGlsZF9hbmNob3IgPSBBYnNfcG9zLnN1YiBzdC5jdXJyZW50IHN0LnJvd19zaGlmdCBpblxuICAgICAgZW1pdF9jaGFyIHB1dGMgc3QgJygnO1xuICAgICAgTGlzdC5pdGVyIHRvY3MgfmY6KGZ1biB0b2MgLT4gcmVuZGVyX3RvYyBwdXRjIH5hbmNob3I6Y2hpbGRfYW5jaG9yIHN0IHRvYyk7XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmVuZF9kZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9jaGFyIHB1dGMgc3QgJyknO1xuICAgICAgKClcblxuICBhbmQgcmVuZGVyX3RvYyBwdXRjIH5hbmNob3Igc3QgPSBmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHJlbmRlcl90IHB1dGMgfmFuY2hvciBzdCB0XG4gICAgfCBDb21tZW50IGMgLT4gcmVuZGVyX2MgcHV0YyB+YW5jaG9yIHN0IGNcblxuICBhbmQgcmVuZGVyX2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFBsYWluX2NvbW1lbnQgKGRlbHRhLCB0ZXh0KSAtPlxuICAgICAgbGV0IGxpbmVfY29tbWVudCA9IFN0cmluZy5sZW5ndGggdGV4dCA+IDAgJiYgdGV4dC5bMF0gPSAnOycgaW5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgdGV4dFxuICAgIHwgU2V4cF9jb21tZW50IChkZWx0YSwgY3MsIHQpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IFwiIztcIjtcbiAgICAgIExpc3QuaXRlciBjcyB+ZjoocmVuZGVyX2MgcHV0YyB+YW5jaG9yIHN0KTtcbiAgICAgIHJlbmRlcl90IHB1dGMgfmFuY2hvciBzdCB0XG4gIDs7XG5cbiAgbGV0IHJlbmRlciBhc2V4cCBwdXRjIHN0ID0gcmVuZGVyX3RvYyBwdXRjIH5hbmNob3I6QWJzX3Bvcy5vcmlnaW4gc3QgYXNleHBcbiAgbGV0IHNleHAgPSByZW5kZXJcbmVuZFxuXG5tb2R1bGUgRm9yZ2V0ID0gc3RydWN0XG4gICgqIEluIGNwcyB0byBwcmV2ZW50IG5vbi10YWlsIHJlY3Vyc2lvbi5cbiAgICAgVGhlIHBvbHltb3JwaGlzbSBpbiB0aGUgc2lnbmF0dXJlIGVuc3VyZXMgdGhhdCBlYWNoIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgb25seSB0aHJvdWdoIHRoZSBjb250aW51YXRpb24uICopXG4gIG1vZHVsZSBDcHMgOiBzaWdcbiAgICB2YWwgZm9yZ2V0X3QgOiB0IC0+IChUeXBlLnQgLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2MgOiB0X29yX2NvbW1lbnQgLT4gKFR5cGUudCBvcHRpb24gLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2NzIDogdF9vcl9jb21tZW50IGxpc3QgLT4gKFR5cGUudCBsaXN0IC0+ICdyKSAtPiAnclxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIGZvcmdldF90IHQgayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQXRvbSAoXywgeCwgXykgLT4gayAoVHlwZS5BdG9tIHgpXG4gICAgICB8IExpc3QgKF8sIHRvY3MsIF8pIC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrIChUeXBlLkxpc3QgeHMpKVxuXG4gICAgYW5kIGZvcmdldF90b2NzIHRvY3MgayA9XG4gICAgICBtYXRjaCB0b2NzIHdpdGhcbiAgICAgIHwgW10gLT4gayBbXVxuICAgICAgfCB0b2MgOjogdG9jcyAtPlxuICAgICAgICBmb3JnZXRfdG9jIHRvYyAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZm9yZ2V0X3RvY3MgdG9jcyBrXG4gICAgICAgICAgfCBTb21lIHggLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKHggOjogeHMpKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jIHRvYyBrID1cbiAgICAgIG1hdGNoIHRvYyB3aXRoXG4gICAgICB8IENvbW1lbnQgXyAtPiBrIE5vbmVcbiAgICAgIHwgU2V4cCB0IC0+IGZvcmdldF90IHQgKGZ1biB4IC0+IGsgKFNvbWUgeCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHQgeCA9IENwcy5mb3JnZXRfdCB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50IHggPSBDcHMuZm9yZ2V0X3RvYyB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50cyB4ID0gQ3BzLmZvcmdldF90b2NzIHggKGZ1biB5IC0+IHkpXG5lbmRcbiIsIm9wZW4gUHJpbnRmXG5vcGVuIEJpZ2FycmF5XG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxub3BlbiBTZXhwXG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgZmxvYXQzMl92ZWMgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgZmxvYXQ2NF92ZWMgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gZmxvYXQ2NF92ZWNcbnR5cGUgZmxvYXQzMl9tYXQgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgZmxvYXQ2NF9tYXQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gZmxvYXQ2NF9tYXRcblxubGV0IHNleHBfb2ZfZmxvYXRfdmVjIHZlYyA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkxLmRpbSB2ZWMgZG93bnRvIDEgZG9cbiAgICBsc3RfcmVmIDo9IHNleHBfb2ZfZmxvYXQgdmVjLntpfSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9iaWdzdHJpbmcgKGJzdHIgOiBiaWdzdHJpbmcpID1cbiAgbGV0IG4gPSBBcnJheTEuZGltIGJzdHIgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBzdHIgaSBic3RyLntpfVxuICBkb25lO1xuICBBdG9tIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0cilcbjs7XG5cbmxldCBzZXhwX29mX2Zsb2F0MzJfdmVjICh2ZWMgOiBmbG9hdDMyX3ZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcbmxldCBzZXhwX29mX2Zsb2F0NjRfdmVjICh2ZWMgOiBmbG9hdDY0X3ZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcbmxldCBzZXhwX29mX3ZlYyAodmVjIDogdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xuXG5sZXQgc2V4cF9vZl9mbG9hdF9tYXQgbWF0ID1cbiAgbGV0IG0gPSBBcnJheTIuZGltMSBtYXQgaW5cbiAgbGV0IG4gPSBBcnJheTIuZGltMiBtYXQgaW5cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgKCogSXQncyBzdXJwcmlzaW5nIHRoYXQgd2Ugc2VyaWFsaXplIFtGb3J0cmFuX2xheW91dF0gbWF0cmljZXMgaW4gcm93LW1ham9yIG9yZGVyLiBJIGNhblxuICAgICBvbmx5IHNwZWN1bGF0ZSB0aGF0IGl0IHdhcyBjaG9zZW4gZm9yIHJlYWRhYmlsaXR5LiBUaGUgY2FjaGUgcGVyZm9ybWFuY2UgaXNcbiAgICAgaXJyZWxldmFudCBiZWNhdXNlIHBlb3BsZSB3aG8gY2FyZSB3b24ndCBzZXJpYWxpemUgdG8gc2V4cC4gKilcbiAgZm9yIHJvdyA9IG4gZG93bnRvIDEgZG9cbiAgICBmb3IgY29sID0gbSBkb3dudG8gMSBkb1xuICAgICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IG1hdC57Y29sLCByb3d9IDo6ICFsc3RfcmVmXG4gICAgZG9uZVxuICBkb25lO1xuICBMaXN0IChzZXhwX29mX2ludCBtIDo6IHNleHBfb2ZfaW50IG4gOjogIWxzdF9yZWYpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX21hdCAobWF0IDogZmxvYXQzMl9tYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgc2V4cF9vZl9mbG9hdDY0X21hdCAobWF0IDogZmxvYXQ2NF9tYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgc2V4cF9vZl9tYXQgKG1hdCA6IG1hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIDogYmlnc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cblxubGV0IGJpZ3N0cmluZ19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBic3RyID0gQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBic3RyLntpfSA8LSBzdHIuW2ldXG4gICAgZG9uZTtcbiAgICBic3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXRfdmVjIGNyZWF0ZV9mbG9hdF92ZWMgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gZW1wdHlfZmxvYXRfdmVjXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbHN0IGluXG4gICAgbGV0IHJlcyA9IGNyZWF0ZV9mbG9hdF92ZWMgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy57aX0gPC0gZmxvYXRfb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIGxzdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfdmVjX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX3ZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X3ZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGVtcHR5X2Zsb2F0MzJfdmVjID0gY3JlYXRlX2Zsb2F0MzJfdmVjIDBcbmxldCBlbXB0eV9mbG9hdDY0X3ZlYyA9IGNyZWF0ZV9mbG9hdDY0X3ZlYyAwXG5sZXQgZmxvYXQzMl92ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0MzJfdmVjIGNyZWF0ZV9mbG9hdDMyX3ZlY1xubGV0IGZsb2F0NjRfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0NjRfdmVjIGNyZWF0ZV9mbG9hdDY0X3ZlY1xubGV0IHZlY19zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCAoTWFueSBGbG9hdCkgfVxubGV0IGZsb2F0MzJfdmVjX3NleHBfZ3JhbW1hciA9IHZlY19zZXhwX2dyYW1tYXJcbmxldCBmbG9hdDY0X3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5cbmxldCBjaGVja190b29fbXVjaF9kYXRhIHNleHAgZGF0YSByZXMgPVxuICBpZiBkYXRhID0gW10gdGhlbiByZXMgZWxzZSBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IHRvbyBtdWNoIGRhdGFcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0X21hdCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCAoc20gOjogc24gOjogZGF0YSkgLT5cbiAgICBsZXQgbSA9IGludF9vZl9zZXhwIHNtIGluXG4gICAgbGV0IG4gPSBpbnRfb2Zfc2V4cCBzbiBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfbWF0IG0gbiBpblxuICAgIGlmIG0gPSAwIHx8IG4gPSAwXG4gICAgdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgZGF0YSByZXNcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcF9jb2xzIGNvbCBkYXRhID1cbiAgICAgICAgbGV0IHZlYyA9IEFycmF5Mi5zbGljZV9yaWdodCByZXMgY29sIGluXG4gICAgICAgIGxldCByZWMgbG9vcF9yb3dzIHJvdyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IG5vdCBlbm91Z2ggZGF0YVwiIHNleHBcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgdmVjLntyb3d9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgICAgIGlmIHJvdyA9IG1cbiAgICAgICAgICAgIHRoZW4gaWYgY29sID0gbiB0aGVuIGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCB0IHJlcyBlbHNlIGxvb3BfY29scyAoY29sICsgMSkgdFxuICAgICAgICAgICAgZWxzZSBsb29wX3Jvd3MgKHJvdyArIDEpIHRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcF9yb3dzIDEgZGF0YVxuICAgICAgaW5cbiAgICAgIGxvb3BfY29scyAxIGRhdGEpXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbGlzdCB0b28gc2hvcnRcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0MzJfbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0XG5sZXQgY3JlYXRlX2Zsb2F0NjRfbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQzMl9tYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDMyX21hdFxubGV0IGZsb2F0NjRfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcbmxldCBtYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDY0X21hdFxuXG5sZXQgbWF0X3NleHBfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChDb25zIChJbnRlZ2VyLCBDb25zIChJbnRlZ2VyLCBNYW55IEZsb2F0KSkpIH1cbjs7XG5cbmxldCBmbG9hdDMyX21hdF9zZXhwX2dyYW1tYXIgPSBtYXRfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IHN0cmluZ19vZl9fb2ZfX3NleHBfb2YgdG9fc2V4cCB4ID0gU2V4cC50b19zdHJpbmcgKHRvX3NleHAgeClcblxubGV0IG9mX3N0cmluZ19fb2ZfX29mX3NleHAgb2Zfc2V4cCBzID1cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBTZXhwLm9mX3N0cmluZyBzIGluXG4gICAgb2Zfc2V4cCBzZXhwXG4gIHdpdGhcbiAgfCBlIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChzcHJpbnRmIFwib2Zfc3RyaW5nIGZhaWxlZCBvbiAlcyB3aXRoICVzXCIgcyAoU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX2V4biBlKSkpXG47O1xuIiwibW9kdWxlIEhhc2h0YmwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsXG5cbiAgbGV0IHNleHBfb2ZfdCA9IENvbnYuc2V4cF9vZl9oYXNodGJsXG4gIGxldCB0X29mX3NleHAgPSBDb252Lmhhc2h0Ymxfb2Zfc2V4cFxuZW5kXG5cbm1vZHVsZSBMYXp5ID0gc3RydWN0XG4gIGluY2x1ZGUgTGF6eVxuXG4gIGxldCB0X29mX3NleHAgPSBDb252LmxhenlfdF9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfbGF6eV90XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYubGF6eV90X3NleHBfZ3JhbW1hclxuZW5kXG5cbmxldCBzZXhwX29mX3VuaXQgPSBDb252LnNleHBfb2ZfdW5pdFxubGV0IHVuaXRfb2Zfc2V4cCA9IENvbnYudW5pdF9vZl9zZXhwXG5sZXQgdW5pdF9zZXhwX2dyYW1tYXIgPSBDb252LnVuaXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9ib29sID0gQ29udi5zZXhwX29mX2Jvb2xcbmxldCBib29sX29mX3NleHAgPSBDb252LmJvb2xfb2Zfc2V4cFxubGV0IGJvb2xfc2V4cF9ncmFtbWFyID0gQ29udi5ib29sX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2Zfc3RyaW5nID0gQ29udi5zZXhwX29mX3N0cmluZ1xubGV0IHN0cmluZ19vZl9zZXhwID0gQ29udi5zdHJpbmdfb2Zfc2V4cFxubGV0IHN0cmluZ19zZXhwX2dyYW1tYXIgPSBDb252LnN0cmluZ19zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2NoYXIgPSBDb252LnNleHBfb2ZfY2hhclxubGV0IGNoYXJfb2Zfc2V4cCA9IENvbnYuY2hhcl9vZl9zZXhwXG5sZXQgY2hhcl9zZXhwX2dyYW1tYXIgPSBDb252LmNoYXJfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQgPSBDb252LnNleHBfb2ZfaW50XG5sZXQgaW50X29mX3NleHAgPSBDb252LmludF9vZl9zZXhwXG5sZXQgaW50X3NleHBfZ3JhbW1hciA9IENvbnYuaW50X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfZmxvYXQgPSBDb252LnNleHBfb2ZfZmxvYXRcbmxldCBmbG9hdF9vZl9zZXhwID0gQ29udi5mbG9hdF9vZl9zZXhwXG5sZXQgZmxvYXRfc2V4cF9ncmFtbWFyID0gQ29udi5mbG9hdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludDMyID0gQ29udi5zZXhwX29mX2ludDMyXG5sZXQgaW50MzJfb2Zfc2V4cCA9IENvbnYuaW50MzJfb2Zfc2V4cFxubGV0IGludDMyX3NleHBfZ3JhbW1hciA9IENvbnYuaW50MzJfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQ2NCA9IENvbnYuc2V4cF9vZl9pbnQ2NFxubGV0IGludDY0X29mX3NleHAgPSBDb252LmludDY0X29mX3NleHBcbmxldCBpbnQ2NF9zZXhwX2dyYW1tYXIgPSBDb252LmludDY0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbmF0aXZlaW50ID0gQ29udi5zZXhwX29mX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF9vZl9zZXhwID0gQ29udi5uYXRpdmVpbnRfb2Zfc2V4cFxubGV0IG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgPSBDb252Lm5hdGl2ZWludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3JlZiA9IENvbnYuc2V4cF9vZl9yZWZcbmxldCByZWZfb2Zfc2V4cCA9IENvbnYucmVmX29mX3NleHBcbmxldCByZWZfc2V4cF9ncmFtbWFyID0gQ29udi5yZWZfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9sYXp5X3QgPSBDb252LnNleHBfb2ZfbGF6eV90XG5sZXQgbGF6eV90X29mX3NleHAgPSBDb252LmxhenlfdF9vZl9zZXhwXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciA9IENvbnYubGF6eV90X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2Zfb3B0aW9uID0gQ29udi5zZXhwX29mX29wdGlvblxubGV0IG9wdGlvbl9vZl9zZXhwID0gQ29udi5vcHRpb25fb2Zfc2V4cFxubGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgPSBDb252Lm9wdGlvbl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2xpc3QgPSBDb252LnNleHBfb2ZfbGlzdFxubGV0IGxpc3Rfb2Zfc2V4cCA9IENvbnYubGlzdF9vZl9zZXhwXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgPSBDb252Lmxpc3Rfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9hcnJheSA9IENvbnYuc2V4cF9vZl9hcnJheVxubGV0IGFycmF5X29mX3NleHAgPSBDb252LmFycmF5X29mX3NleHBcbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgPSBDb252LmFycmF5X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfZXhuID0gQ29udi5zZXhwX29mX2V4blxubGV0IGV4bl9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbiIsImluY2x1ZGUgU2V4cF9ncmFtbWFyX2ludGZcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9ncmFtbWFyXG5cbmxldCByZW1lbWJlcl90b191cGRhdGVfdGhlc2VfdG9nZXRoZXIgfnRfb2Zfc2V4cCB+dF9zZXhwX2dyYW1tYXIgPVxuICB0X29mX3NleHAsIHRfc2V4cF9ncmFtbWFyXG47O1xuIiwiKCogUGF0aDogTW9kdWxlIGZvciBTdWJzdGl0dXRpb25zIHdpdGhpbiBTLWV4cHJlc3Npb25zICopXG5cbm9wZW4gRm9ybWF0XG5vcGVuIFNleHBcblxudHlwZSBlbCA9XG4gIHwgUG9zIG9mIGludFxuICB8IE1hdGNoIG9mIHN0cmluZyAqIGludFxuICB8IFJlYyBvZiBzdHJpbmdcblxudHlwZSB0ID0gZWwgbGlzdFxuXG5sZXQgaWxsZWdhbF9hdG9tIGxvYyBzZXhwID1cbiAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGF0b206ICVzXCIgbG9jIChTZXhwLnRvX3N0cmluZyBzZXhwKSlcbjs7XG5cbmxldCBleHRyYWN0X3Bvc19sc3QgbG9jIHNleHAgaXggbHN0ID1cbiAgbGV0IHJlYyBsb29wIGFjYyBuID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguJXM6IGlsbGVnYWwgaW5kZXggJWQgaW46ICVzXCIgbG9jIGl4IHNleHBfc3RyKVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdWJzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICAgIHwgU29tZSB4IC0+IExpc3QucmV2X2FwcGVuZCBhY2MgKHggOjogdClcbiAgICAgICAgaW5cbiAgICAgICAgc3Vic3QsIGgpXG4gICAgICBlbHNlIGxvb3AgKGggOjogYWNjKSAobiAtIDEpIHRcbiAgaW5cbiAgbG9vcCBbXSBpeCBsc3Rcbjs7XG5cbmxldCBleHRyYWN0X3BvcyBuID0gZnVuY3Rpb25cbiAgfCBMaXN0IGxzdCBhcyBzZXhwIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfcG9zXCIgc2V4cCBuIGxzdCBpblxuICAgIChmdW4geCAtPiBMaXN0IChzdWJzdCB4KSksIGVsXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9wb3NcIiBzZXhwXG47O1xuXG5sZXQgZXh0cmFjdF9tYXRjaCB0YWcgYXJnX2l4ID0gZnVuY3Rpb25cbiAgfCBMaXN0ICgoQXRvbSBzdHIgYXMgc2V4cCkgOjogYXJncykgd2hlbiBzdHIgPSB0YWcgLT5cbiAgICBsZXQgc3Vic3QsIGVsID0gZXh0cmFjdF9wb3NfbHN0IFwiZXh0cmFjdF9tYXRjaFwiIChMaXN0IGFyZ3MpIGFyZ19peCBhcmdzIGluXG4gICAgKGZ1biBtYXliZV94IC0+IExpc3QgKHNleHAgOjogc3Vic3QgbWF5YmVfeCkpLCBlbFxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgIGZhaWx3aXRoIChcIlBhdGguZXh0cmFjdF9tYXRjaDogdW5leHBlY3RlZCBuZXN0ZWQgbGlzdCBpbjogXCIgXiBzZXhwX3N0cilcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X21hdGNoXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC5leHRyYWN0X3JlYzoga2V5IFxcXCIlc1xcXCIgbm90IGZvdW5kIGluOiAlc1wiIGtleSBzZXhwX3N0cilcbiAgICAgIHwgTGlzdCBbIChBdG9tIHN0ciBhcyBzZXhwKTsgdiBdIDo6IHJlc3Qgd2hlbiBzdHIgPSBrZXkgLT5cbiAgICAgICAgbGV0IHN1YnN0IHggPSBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChMaXN0IFsgc2V4cDsgeCBdIDo6IHJlc3QpKSBpblxuICAgICAgICBzdWJzdCwgdlxuICAgICAgfCBoIDo6IHQgLT4gbG9vcCAoaCA6OiBhY2MpIHRcbiAgICBpblxuICAgIGxvb3AgW10gbHN0XG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9yZWNcIiBzZXhwXG47O1xuXG5sZXQgaWQgeCA9IHhcblxubGV0IHJlYyBzdWJzdF9vcHRpb24gKHN1cF9zdWJzdCwgZWwpIHJlc3QgPVxuICBsZXQgc3ViX3N1YnN0LCBzdWJfZWwgPSBzdWJzdF9wYXRoIGVsIHJlc3QgaW5cbiAgbGV0IHN1YnN0IHggPSBzdXBfc3Vic3QgKFNvbWUgKHN1Yl9zdWJzdCB4KSkgaW5cbiAgc3Vic3QsIHN1Yl9lbFxuXG5hbmQgc3Vic3RfcGF0aCBzZXhwID0gZnVuY3Rpb25cbiAgfCBQb3MgbiA6OiB0IC0+IHN1YnN0X29wdGlvbiAoZXh0cmFjdF9wb3MgbiBzZXhwKSB0XG4gIHwgTWF0Y2ggKHRhZywgYXJnX2l4KSA6OiB0IC0+IHN1YnN0X29wdGlvbiAoZXh0cmFjdF9tYXRjaCB0YWcgYXJnX2l4IHNleHApIHRcbiAgfCBSZWMga2V5IDo6IHJlc3QgLT5cbiAgICBsZXQgcmVjX3N1YnN0LCBlbCA9IGV4dHJhY3RfcmVjIGtleSBzZXhwIGluXG4gICAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gICAgbGV0IHN1YnN0IHggPSByZWNfc3Vic3QgKHN1Yl9zdWJzdCB4KSBpblxuICAgIHN1YnN0LCBzdWJfZWxcbiAgfCBbXSAtPiBpZCwgc2V4cFxuOztcblxubGV0IGltcGxvZGUgbHN0ID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaXggPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBCeXRlcy5zZXQgc3RyIGl4IGg7XG4gICAgICBsb29wIChpeCArIDEpIHRcbiAgICB8IFtdIC0+IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gIGluXG4gIGxvb3AgMCBsc3Rcbjs7XG5cbmxldCBmYWlsX3BhcnNlIG1zZyA9IGZhaWx3aXRoIChcIlBhdGgucGFyc2U6IFwiIF4gbXNnKVxuXG5sZXQgcGFyc2Ugc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBmYWlsX3BhcnNlIFwicGF0aCBlbXB0eVwiXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBhY2MgZG90X2l4ID1cbiAgICAgIG1hdGNoIHN0ci5bZG90X2l4XSB3aXRoXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgZG90X2l4MSA9IGRvdF9peCArIDEgaW5cbiAgICAgICAgaWYgZG90X2l4MSA9IGxlblxuICAgICAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVjIHBhcnNlX2RvdCBhY2Mgc3RyX2FjYyBpeCA9XG4gICAgICAgICAgICBpZiBpeCA9IGxlblxuICAgICAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgYWNjIFsgUmVjIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSkgXVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgICAgICAgICAgfCAnWycgLT5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIHBhcnNlX2luZGV4IGluZGV4X2FjYyBpeCA9XG4gICAgICAgICAgICAgICAgICBpZiBpeCA9IGxlblxuICAgICAgICAgICAgICAgICAgdGhlbiBmYWlsX3BhcnNlIFwiRU9GIHJlYWRpbmcgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHN0ci5baXhdLCBpbmRleF9hY2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggKFNvbWUgKGludF9vZl9jaGFyIGMgLSA0OCkpIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgKCcwJyAuLiAnOScgYXMgYyksIFNvbWUgaW5kZXhfYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19pbmRleF9hY2MgPSBTb21lICgoMTAgKiBpbmRleF9hY2MpICsgaW50X29mX2NoYXIgYyAtIDQ4KSBpblxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IG5ld19pbmRleF9hY2MgKGl4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgfCAnXScsIE5vbmUgLT4gZmFpbF9wYXJzZSBcImVtcHR5IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgfCAnXScsIFNvbWUgaW5kZXhfYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RyX2FjYyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFBvcyBpbmRleF9hY2NcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTWF0Y2ggKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpLCBpbmRleF9hY2MpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaXgxID0gaXggKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgaWYgaXgxID0gbGVuXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgYWNjIFsgcGF0aF9lbCBdXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBsb29wIChwYXRoX2VsIDo6IGFjYykgaXgxXG4gICAgICAgICAgICAgICAgICAgIHwgYywgXyAtPiBmYWlsX3BhcnNlIChzcHJpbnRmIFwiaWxsZWdhbCBjaGFyYWN0ZXIgaW4gaW5kZXg6ICVjXCIgYykpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBOb25lIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgJ1xcXFwnIC0+XG4gICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiBhZnRlciBlc2NhcGVcIlxuICAgICAgICAgICAgICAgIGVsc2UgcGFyc2VfZG90IGFjYyAoc3RyLltpeDFdIDo6IHN0cl9hY2MpIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgJy4nIC0+XG4gICAgICAgICAgICAgICAgaWYgc3RyX2FjYyA9IFtdIHRoZW4gZmFpbF9wYXJzZSBcImRvdWJsZSAnLidcIjtcbiAgICAgICAgICAgICAgICBsZXQgcGF0aF9lbCA9IFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfZG90IChwYXRoX2VsIDo6IGFjYykgW10gKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCBjIC0+IHBhcnNlX2RvdCBhY2MgKGMgOjogc3RyX2FjYykgKGl4ICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9kb3QgYWNjIFtdIGRvdF9peDEpXG4gICAgICB8IGMgLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcIicuJyBleHBlY3RlZDsgZ290ICclYydcIiBjKVxuICAgIGluXG4gICAgbG9vcCBbXSAwKVxuOztcblxubGV0IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwID1cbiAgbGV0IHBhdGggPVxuICAgIG1hdGNoIHBhdGgsIHN0ciB3aXRoXG4gICAgfCBTb21lIHBhdGgsIF8gLT4gcGF0aFxuICAgIHwgTm9uZSwgU29tZSBzdHIgLT4gcGFyc2Ugc3RyXG4gICAgfCBOb25lLCBOb25lIC0+IFtdXG4gIGluXG4gIHN1YnN0X3BhdGggc2V4cCBwYXRoXG47O1xuXG5sZXQgZ2V0ID9wYXRoID9zdHIgc2V4cCA9IHNuZCAoZ2V0X3N1YnN0IHBhdGggc3RyIHNleHApXG5cbmxldCByZXBsYWNlID9wYXRoID9zdHIgc2V4cCB+c3Vic3QgPVxuICBsZXQgc3Vic3RfZnVuLCBfID0gZ2V0X3N1YnN0IHBhdGggc3RyIHNleHAgaW5cbiAgc3Vic3RfZnVuIHN1YnN0XG47O1xuXG5sZXQgcmVwbGFjZV9ub19wYXRoIH5zdHIgc2V4cCB+c3Vic3QgPSByZXBsYWNlIH5zdHIgc2V4cCB+c3Vic3RcbiIsImxldCByZWdpc3RlciBleGMgZXhjX25hbWUgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gX2V4YyAtPlxuICAgIFNleHAuQXRvbSBleGNfbmFtZSlcbjs7XG5cbmxldCBtYWdpY19maWVsZCByZXByIG4gPSBPYmoubWFnaWMgKE9iai5maWVsZCByZXByIG4pXG5cbmxldCByZWdpc3RlcjEgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMSBdKVxuOztcblxubGV0IHJlZ2lzdGVyMiBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMiBdKVxuOztcblxubGV0IHJlZ2lzdGVyMyBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyIHNleHBfb2ZfYXJnMyA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDMgXSlcbjs7XG5cbmxldCByZWdpc3RlcjQgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgc2V4cF9vZl9hcmc0ID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI1XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDUgXSlcbjs7XG5cbmxldCByZWdpc3RlcjZcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNiBdKVxuOztcblxubGV0IHJlZ2lzdGVyN1xuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI4XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNjsgc2V4cDc7IHNleHA4IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI5XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICBdKVxuOztcblxubGV0IHJlZ2lzdGVyMTBcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgICAgIHNleHBfb2ZfYXJnOVxuICAgICAgc2V4cF9vZl9hcmcxMFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIGxldCBzZXhwOSA9IHNleHBfb2ZfYXJnOSAobWFnaWNfZmllbGQgcmVwciA5KSBpblxuICAgIGxldCBzZXhwMTAgPSBzZXhwX29mX2FyZzEwIChtYWdpY19maWVsZCByZXByIDEwKSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWVcbiAgICAgIDsgc2V4cDFcbiAgICAgIDsgc2V4cDJcbiAgICAgIDsgc2V4cDNcbiAgICAgIDsgc2V4cDRcbiAgICAgIDsgc2V4cDVcbiAgICAgIDsgc2V4cDZcbiAgICAgIDsgc2V4cDdcbiAgICAgIDsgc2V4cDhcbiAgICAgIDsgc2V4cDlcbiAgICAgIDsgc2V4cDEwXG4gICAgICBdKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIFwiRmFzdCBTcGxpdHRhYmxlIFBzZXVkb3JhbmRvbSBOdW1iZXIgR2VuZXJhdG9yc1wiIGJ5IFN0ZWVsZSBldC5cbiAgICBhbC4gKDEpLiAgVGhlIHBhcGVyJ3MgYWxnb3JpdGhtIHByb3ZpZGVzIGRlY2VudCByYW5kb21uZXNzIGZvciBtb3N0IHB1cnBvc2VzLCBidXRcbiAgICBzYWNyaWZpY2VzIGNyeXB0b2dyYXBoaWMtcXVhbGl0eSByYW5kb21uZXNzIGluIGZhdm9yIG9mIHBlcmZvcm1hbmNlLiAgVGhlIG9yaWdpbmFsXG4gICAgaW1wbGVtZW50YXRpb24gd2FzIHRlc3RlZCB3aXRoIERpZUhhcmRlciBhbmQgQmlnQ3J1c2g7IHNlZSB0aGUgcGFwZXIgZm9yIGRldGFpbHMuXG5cbiAgICBPdXIgaW1wbGVtZW50YXRpb24gaXMgYSBwb3J0IGZyb20gSmF2YSB0byBPQ2FtbCBvZiB0aGUgcGFwZXIncyBhbGdvcml0aG0uICBPdGhlciB0aGFuXG4gICAgdGhlIGNob2ljZSBvZiBpbml0aWFsIHNlZWQgZm9yIFtjcmVhdGVdLCBvdXIgcG9ydCBzaG91bGQgYmUgZmFpdGhmdWwuICBXZSBoYXZlIG5vdFxuICAgIHJlLXJ1biB0aGUgRGllSGFyZGVyIG9yIEJpZ0NydXNoIHRlc3RzIG9uIG91ciBpbXBsZW1lbnRhdGlvbi4gIE91ciBwb3J0IGlzIGFsc28gbm90IGFzXG4gICAgcGVyZm9ybWFudCBhcyB0aGUgb3JpZ2luYWw7IHR3byBmYWN0b3JzIHRoYXQgaHVydCB1cyBhcmUgYm94ZWQgW2ludDY0XSB2YWx1ZXMgYW5kIGxhY2tcbiAgICBvZiBhIFBPUENOVCBwcmltaXRpdmUuXG5cbiAgICAoMSkgaHR0cDovLzIwMTQuc3BsYXNoY29uLm9yZy9ldmVudC9vb3BzbGEyMDE0LWZhc3Qtc3BsaXR0YWJsZS1wc2V1ZG9yYW5kb20tbnVtYmVyLWdlbmVyYXRvcnNcbiAgICAoYWxzbyBtaXJyb3JlZCBhdCBodHRwOi8vZ2VlLmNzLm9zd2Vnby5lZHUvZGwvcGFwZXJzL29vcHNsYTE0LnBkZilcblxuICAgIEJld2FyZSB3aGVuIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZTsgaXQgaXMgZWFzeSB0byBpbXBsZW1lbnQgYSBbc3BsaXRdIG9wZXJhdGlvblxuICAgIHdob3NlIG91dHB1dCBpcyBub3QgYXMgXCJpbmRlcGVuZGVudFwiIGFzIGl0IHNlZW1zICgyKS4gIFRoaXMgYnVnIGNhdXNlZCBwcm9ibGVtcyBmb3JcbiAgICBIYXNrZWxsJ3MgUXVpY2tjaGVjayBsaWJyYXJ5IGZvciBhIGxvbmcgdGltZS5cblxuICAgICgyKSBTY2hhYXRodW4sIFwiRXZhbHVhdGlvbiBvZiBzcGxpdHRhYmxlIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9yc1wiLCBKRlAgMjAxNS5cbiAgICBodHRwOi8vd3d3LmhnLnNjaGFhdGh1bi5uZXQvcmVzZWFyY2gvUGFwZXJzL2hnczIwMTVqZnAucGRmXG4qKVxuXG5vcGVuISBCYXNlXG5vcGVuICBJbnQ2NC5PXG5cbmxldCBpc19vZGQgeCA9IHggbG9yIDFMID0geFxuXG5sZXQgcG9wY291bnQgPSBJbnQ2NC5wb3Bjb3VudFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzZWVkIDogaW50NjRcbiAgICA7IG9kZF9nYW1tYSAgICA6IGludDY0XG4gICAgfVxuXG4gIGxldCBnb2xkZW5fZ2FtbWEgPSAweDllMzdfNzliOV83ZjRhXzdjMTVMXG5cbiAgbGV0IG9mX2ludCBzZWVkID1cbiAgICB7IHNlZWQgICAgICA9IEludDY0Lm9mX2ludCBzZWVkXG4gICAgOyBvZGRfZ2FtbWEgPSBnb2xkZW5fZ2FtbWFcbiAgICB9XG5cbiAgbGV0IGNvcHkgeyBzZWVkIDsgb2RkX2dhbW1hIH0gPSB7IHNlZWQgOyBvZGRfZ2FtbWEgfVxuXG4gIGxldCBtaXhfYml0cyB6IG4gPVxuICAgIHogbHhvciAoeiBsc3IgbilcblxuICBsZXQgbWl4NjQgeiA9XG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAzMykgKiAweGZmNTFfYWZkN19lZDU1XzhjY2RMIGluXG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAzMykgKiAweGM0Y2VfYjlmZV8xYTg1X2VjNTNMIGluXG4gICAgbWl4X2JpdHMgeiAzM1xuXG4gIGxldCBtaXg2NF92YXJpYW50MTMgeiA9XG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAzMCkgKiAweGJmNThfNDc2ZF8xY2U0X2U1YjlMIGluXG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAyNykgKiAweDk0ZDBfNDliYl8xMzMxXzExZWJMIGluXG4gICAgbWl4X2JpdHMgeiAzMVxuXG4gIGxldCBtaXhfb2RkX2dhbW1hIHogPVxuICAgIGxldCB6ID0gKG1peDY0X3ZhcmlhbnQxMyB6KSBsb3IgMUwgaW5cbiAgICBsZXQgbiA9IHBvcGNvdW50ICh6IGx4b3IgKHogbHNyIDEpKSBpblxuICAgICgqIFRoZSBvcmlnaW5hbCBwYXBlciB1c2VzIFs+PV0gaW4gdGhlIGNvbmRpdGlvbmFsIGltbWVkaWF0ZWx5IGJlbG93OyBob3dldmVyIHRoaXMgaXNcbiAgICAgICBhIHR5cG8sIGFuZCB3ZSBjb3JyZWN0IGl0IGJ5IHVzaW5nIFs8XS4gVGhpcyB3YXMgZml4ZWQgaW4gcmVzcG9uc2UgdG8gWzFdIGFuZCBbMl0uXG5cbiAgICAgICBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvc3BsaXR0YWJsZV9yYW5kb20vaXNzdWVzLzFcbiAgICAgICBbMl0gaHR0cDovL3d3dy5wY2ctcmFuZG9tLm9yZy9wb3N0cy9idWdzLWluLXNwbGl0bWl4Lmh0bWxcbiAgICAqKVxuICAgIGlmIEludC4oIDwgKSBuIDI0XG4gICAgdGhlbiB6IGx4b3IgMHhhYWFhX2FhYWFfYWFhYV9hYWFhTFxuICAgIGVsc2UgelxuXG4gIGxldCV0ZXN0X3VuaXQgXCJvZGQgZ2FtbWFcIiA9XG4gICAgZm9yIGlucHV0ID0gLTFfMDAwXzAwMCB0byAxXzAwMF8wMDAgZG9cbiAgICAgIGxldCBvdXRwdXQgPSBtaXhfb2RkX2dhbW1hIChJbnQ2NC5vZl9pbnQgaW5wdXQpIGluXG4gICAgICBpZiBub3QgKGlzX29kZCBvdXRwdXQpIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgICBcImdhbW1hIHZhbHVlIGlzIG5vdCBvZGRcIlxuICAgICAgICAgICAgKGlucHV0ICA6IGludClcbiAgICAgICAgICAgIChvdXRwdXQgOiBpbnQ2NCldXG4gICAgZG9uZVxuXG4gIGxldCBuZXh0X3NlZWQgdCA9XG4gICAgbGV0IG5leHQgPSB0LnNlZWQgKyB0Lm9kZF9nYW1tYSBpblxuICAgIHQuc2VlZCA8LSBuZXh0O1xuICAgIG5leHRcblxuICBsZXQgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hID1cbiAgICBsZXQgc2VlZCAgICAgID0gbWl4NjQgICAgICAgICBzZWVkICBpblxuICAgIGxldCBvZGRfZ2FtbWEgPSBtaXhfb2RkX2dhbW1hIGdhbW1hIGluXG4gICAgeyBzZWVkOyBvZGRfZ2FtbWEgfVxuXG4gIGxldCByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlID1cbiAgICBSYW5kb20uU3RhdGUuaW50NjRfaW5jbCByYW5kb21fc3RhdGUgSW50NjQubWluX3ZhbHVlIEludDY0Lm1heF92YWx1ZVxuXG4gIGxldCBjcmVhdGUgcmFuZG9tX3N0YXRlID1cbiAgICBsZXQgc2VlZCAgPSByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlIGluXG4gICAgbGV0IGdhbW1hID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBzcGxpdCB0ID1cbiAgICBsZXQgc2VlZCAgPSBuZXh0X3NlZWQgdCBpblxuICAgIGxldCBnYW1tYSA9IG5leHRfc2VlZCB0IGluXG4gICAgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hXG5cbiAgbGV0IG5leHRfaW50NjQgdCA9IG1peDY0IChuZXh0X3NlZWQgdClcblxuICAoKiBbcGVydHVyYl0gaXMgbm90IGZyb20gYW55IGV4dGVybmFsIHNvdXJjZSwgYnV0IHByb3ZpZGVzIGEgd2F5IHRvIG1peCBpbiBleHRlcm5hbFxuICAgICBlbnRyb3B5IHdpdGggYSBwc2V1ZG8tcmFuZG9tIHN0YXRlLiAqKVxuICBsZXQgcGVydHVyYiB0IHNhbHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgbWl4NjQgKEludDY0Lm9mX2ludCBzYWx0KSBpblxuICAgIHQuc2VlZCA8LSBuZXh0XG5cbmVuZFxuXG5sZXQgYm9vbCBzdGF0ZSA9IGlzX29kZCAoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSlcblxuKCogV2UgYWJ1c2UgdGVybWlub2xvZ3kgYW5kIHJlZmVyIHRvIGluZGl2aWR1YWwgdmFsdWVzIGFzIGJpYXNlZCBvciB1bmJpYXNlZC4gIE1vcmVcbiAgIHByb3Blcmx5LCB3aGF0IGlzIHVuYmlhc2VkIGlzIHRoZSBzYW1wbGVyIHRoYXQgcmVzdWx0cyBpZiB3ZSBrZWVwIG9ubHkgdGhlc2UgXCJ1bmJpYXNlZFwiXG4gICB2YWx1ZXMuICopXG5sZXQgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICB+ZHJhd1xuICAgICAgfnJlbWFpbmRlclxuICAgICAgfmRyYXdfbWF4aW11bVxuICAgICAgfnJlbWFpbmRlcl9tYXhpbXVtXG4gID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBkcmF3IC0gcmVtYWluZGVyIDw9IGRyYXdfbWF4aW11bSAtIHJlbWFpbmRlcl9tYXhpbXVtXG5cbmxldCV0ZXN0X3VuaXQgXCJyZW1haW5kZXJfaXNfdW5iaWFzZWRcIiA9XG4gICgqIGNob29zaW5nIGEgcmFuZ2Ugb2YgMTAgdmFsdWVzIGJhc2VkIG9uIGEgcmFuZ2Ugb2YgMTA1IHZhbHVlcyAqKVxuICBsZXQgZHJhd19tYXhpbXVtID0gMTA0TCBpblxuICBsZXQgcmVtYWluZGVyX21heGltdW0gPSA5TCBpblxuICBsZXQgaXNfdW5iaWFzZWQgZHJhdyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIHJlbWFpbmRlcl9tYXhpbXVtKSBpblxuICAgIHJlbWFpbmRlcl9pc191bmJpYXNlZCB+ZHJhdyB+cmVtYWluZGVyIH5kcmF3X21heGltdW0gfnJlbWFpbmRlcl9tYXhpbXVtXG4gIGluXG4gIGZvciBpID0gMCB0byA5OSBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6dHJ1ZVxuICAgICAgfm1lc3NhZ2U6KEludC50b19zdHJpbmcgaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAxMDAgdG8gMTA0IGRvXG4gICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgIChpc191bmJpYXNlZCAoSW50NjQub2ZfaW50IGkpKVxuICAgICAgfmV4cGVjdDpmYWxzZVxuICAgICAgfm1lc3NhZ2U6KEludC50b19zdHJpbmcgaSlcbiAgZG9uZVxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGJvdW5kZWQgcmFuZG9tbmVzcyBpcyBhZGFwdGVkIGZyb20gW1JhbmRvbS5TdGF0ZS5pbnQqXSBpbiB0aGVcbiAgIE9DYW1sIHN0YW5kYXJkIGxpYnJhcnkuICBUaGUgcHVycG9zZSBpcyB0byB1c2UgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNhbGxzIHRvXG4gICBbbmV4dF9pbnQ2NF0gdG8gcHJvZHVjZSBhIG51bWJlciB1bmlmb3JtbHkgY2hvc2VuIHdpdGhpbiB0aGUgZ2l2ZW4gcmFuZ2UuICopXG5sZXQgaW50NjQgPVxuICBsZXQgb3BlbiBJbnQ2NC5PIGluXG4gIGxldCByZWMgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgZHJhdyA9IFN0YXRlLm5leHRfaW50NjQgc3RhdGUgaW5cbiAgICBpZiBsbyA8PSBkcmF3ICYmIGRyYXcgPD0gaGlcbiAgICB0aGVuIGRyYXdcbiAgICBlbHNlIGJldHdlZW4gc3RhdGUgfmxvIH5oaVxuICBpblxuICBsZXQgcmVjIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtID1cbiAgICBsZXQgZHJhdyA9IFN0YXRlLm5leHRfaW50NjQgc3RhdGUgbGFuZCBJbnQ2NC5tYXhfdmFsdWUgaW5cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjQucmVtIGRyYXcgKEludDY0LnN1Y2MgbWF4aW11bSkgaW5cbiAgICBpZiByZW1haW5kZXJfaXNfdW5iaWFzZWRcbiAgICAgICAgIH5kcmF3XG4gICAgICAgICB+cmVtYWluZGVyXG4gICAgICAgICB+ZHJhd19tYXhpbXVtOkludDY0Lm1heF92YWx1ZVxuICAgICAgICAgfnJlbWFpbmRlcl9tYXhpbXVtOm1heGltdW1cbiAgICB0aGVuIHJlbWFpbmRlclxuICAgIGVsc2Ugbm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIG1heGltdW1cbiAgaW5cbiAgZnVuIHN0YXRlIH5sbyB+aGkgLT5cbiAgICBpZiBsbyA+IGhpIHRoZW4gYmVnaW5cbiAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiaW50NjQ6IGNyb3NzZWQgYm91bmRzXCIgKGxvIDogaW50NjQpIChoaSA6IGludDY0KV1cbiAgICBlbmQ7XG4gICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgaWYgZGlmZiA9IEludDY0Lm1heF92YWx1ZVxuICAgIHRoZW4gKChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKSBsYW5kIEludDY0Lm1heF92YWx1ZSkgKyBsb1xuICAgIGVsc2UgaWYgZGlmZiA+PSAwTFxuICAgIHRoZW4gKG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBkaWZmKSArIGxvXG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcblxubGV0IGludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX2ludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX2ludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDMyIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9pbnQzMiBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQzMiBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX2ludDMyX3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgbmF0aXZlaW50IHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9uYXRpdmVpbnQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfbmF0aXZlaW50IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9fbmF0aXZlaW50X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgaW50NjMgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDYzLnRvX2ludDY0IGxvIGluXG4gIGxldCBoaSA9IEludDYzLnRvX2ludDY0IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjMub2ZfaW50NjRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBkb3VibGVfdWxwID0gMi4gKiouIC01My5cblxubGV0JXRlc3RfdW5pdCBcImRvdWJsZV91bHBcIiA9XG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+XG4gICAgYXNzZXJ0ICgxLjAgLS4gIGRvdWJsZV91bHAgICAgICAgICA8IDEuMCk7XG4gICAgYXNzZXJ0ICgxLjAgLS4gKGRvdWJsZV91bHAgLy4gMi4wKSA9IDEuMClcbiAgfCBXMzIgLT5cbiAgICAoKiAzMi1iaXQgT0NhbWwgdXNlcyBhIDY0LWJpdCBmbG9hdCByZXByZXNlbnRhdGlvbiBidXQgODAtYml0IGZsb2F0IGluc3RydWN0aW9ucywgc29cbiAgICAgICByb3VuZGluZyB3b3JrcyBkaWZmZXJlbnRseSBkdWUgdG8gdGhlIGNvbnZlcnNpb24gYmFjayBhbmQgZm9ydGguICopXG4gICAgYXNzZXJ0ICgxLjAgLS4gIGRvdWJsZV91bHAgICAgICAgICA8ICAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPD0gMS4wKVxuXG5sZXQgdW5pdF9mbG9hdF9mcm9tX2ludDY0IGludDY0ID1cbiAgKEludDY0LnRvX2Zsb2F0IChpbnQ2NCBsc3IgMTEpKSAqLiBkb3VibGVfdWxwXG5cbmxldCV0ZXN0X3VuaXQgXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9IGJlZ2luXG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHgwMDAwXzAwMDBfMDAwMF8wMDAwTCA9IDAuKTtcbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHhmZmZmX2ZmZmZfZmZmZl9mZmZmTCA8IDEuMCk7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPSAoMS4wIC0uIGRvdWJsZV91bHApKTtcbmVuZFxuXG5sZXQgdW5pdF9mbG9hdCBzdGF0ZSA9XG4gIHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSlcblxuKCogTm90ZSBhYm91dCByb3VuZG9mZiBlcnJvcjpcblxuICAgQWx0aG91Z2ggW2Zsb2F0IHN0YXRlIH5sbyB+aGldIGlzIG5vbWluYWxseSBpbmNsdXNpdmUgb2YgZW5kcG9pbnRzLCB3ZSBhcmUgcmVseWluZyBvblxuICAgdGhlIGZhY3QgdGhhdCBbdW5pdF9mbG9hdF0gbmV2ZXIgcmV0dXJucyAxLiwgYmVjYXVzZSB0aGVyZSBhcmUgcGFpcnMgWyhsbyxoaSldIGZvclxuICAgd2hpY2ggW2xvICsuIDEuICouIChoaSAtLiBsbykgPiBoaV0uICBUaGVyZSBhcmUgYWxzbyBwYWlycyBbKGxvLGhpKV0gYW5kIHZhbHVlcyBvZiBbeF1cbiAgIHdpdGggW3ggPCAxLl0gc3VjaCB0aGF0IFtsbyArLiB4ICouIChoaSAtLiBsbykgPSBoaV0sIHNvIGl0IHdvdWxkIG5vdCBiZSBjb3JyZWN0IHRvXG4gICBkb2N1bWVudCB0aGlzIGFzIGJlaW5nIGV4Y2x1c2l2ZSBvZiBbaGldLlxuKilcbmxldCBmbG9hdCA9XG4gIGxldCByZWMgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGkgPVxuICAgIGxldCByYW5nZSA9IGhpIC0uIGxvIGluXG4gICAgaWYgRmxvYXQuaXNfZmluaXRlIHJhbmdlXG4gICAgdGhlbiAobG8gKy4gKHVuaXRfZmxvYXQgc3RhdGUgKi4gcmFuZ2UpKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgICgqIElmIFtoaSAtIGxvXSBpcyBpbmZpbml0ZSwgdGhlbiBbaGkgKyBsb10gaXMgZmluaXRlIGJlY2F1c2UgW2hpXSBhbmQgW2xvXSBoYXZlXG4gICAgICAgICBvcHBvc2l0ZSBzaWducy4gKilcbiAgICAgIGxldCBtaWQgPSAoaGkgKy4gbG8pIC8uIDIuIGluXG4gICAgICBpZiBib29sIHN0YXRlXG4gICAgICAoKiBEZXBlbmRpbmcgb24gcm91bmRpbmcsIHRoZSByZWN1cnNpb24gd2l0aCBbfmhpOm1pZF0gbWlnaHQgYmUgaW5jbHVzaXZlIG9mIFttaWRdLFxuICAgICAgICAgd2hpY2ggd291bGQgbWVhbiB0aGUgdHdvIGNhc2VzIG92ZXJsYXAgb24gW21pZF0uIFRoZSBhbHRlcm5hdGl2ZSBpcyB0byBpbmNyZW1lbnRcbiAgICAgICAgIG9yIGRlY3JlbWVudCBbbWlkXSB1c2luZyBbb25lX3VscF0gaW4gZWl0aGVyIG9mIHRoZSBjYWxscywgYnV0IHRoZW4gaWYgdGhlIGZpcnN0XG4gICAgICAgICBjYXNlIGlzIGV4Y2x1c2l2ZSB3ZSBsZWF2ZSBhIFwiZ2FwXCIgYmV0d2VlbiB0aGUgdHdvIHJhbmdlcy4gVGhlcmUncyBubyBwZXJmZWN0bHlcbiAgICAgICAgIHVuaWZvcm0gc29sdXRpb24sIHNvIHdlIHVzZSB0aGUgc2ltcGxlciBjb2RlIHRoYXQgZG9lcyBub3QgY2FsbCBbb25lX3VscF0uICopXG4gICAgICB0aGVuIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpOm1pZFxuICAgICAgZWxzZSBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvOm1pZCB+aGlcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHN0YXRlIH5sbyB+aGkgLT5cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBsbyAmJiBGbG9hdC5pc19maW5pdGUgaGkpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBub3QgZmluaXRlIG51bWJlcnNcIlxuICAgICAgICAgIChsbyA6IGZsb2F0KVxuICAgICAgICAgIChoaSA6IGZsb2F0KV1cbiAgICBlbmQ7XG4gICAgaWYgRmxvYXQuKCA+ICkgbG8gaGlcbiAgICB0aGVuIGJlZ2luXG4gICAgICByYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICBcImZsb2F0OiBib3VuZHMgYXJlIGNyb3NzZWRcIlxuICAgICAgICAgIChsbyA6IGZsb2F0KVxuICAgICAgICAgIChoaSA6IGZsb2F0KV1cbiAgICBlbmQ7XG4gICAgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGlcblxubGV0JWJlbmNoX2Z1biBcInVuaXRfZmxvYXRfZnJvbV9pbnQ2NFwiID1cbiAgbGV0IGludDY0ID0gMUwgaW5cbiAgZnVuICgpIC0+IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NFxuXG5tb2R1bGUgTG9nX3VuaWZvcm0gPSBzdHJ1Y3RcbiAgbW9kdWxlIE1ha2UgKE0gOiBzaWcgaW5jbHVkZSBJbnQuUyB2YWwgdW5pZm9ybSA6IFN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHQgZW5kKSA6IHNpZ1xuICAgIHZhbCBsb2dfdW5pZm9ybSA6IFN0YXRlLnQgLT4gbG86TS50IC0+IGhpOk0udCAtPiBNLnRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBNXG5cbiAgICBsZXQgYml0c190b19yZXByZXNlbnQgdCA9XG4gICAgICBhc3NlcnQgKHQgPj0gemVybyk7XG4gICAgICBsZXQgdCA9IHJlZiB0IGluXG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICB3aGlsZSAhdCA+IHplcm8gZG9cbiAgICAgICAgdCA6PSBzaGlmdF9yaWdodCAhdCAxO1xuICAgICAgICBJbnQuaW5jciBuO1xuICAgICAgZG9uZTtcbiAgICAgICFuXG5cbiAgICBsZXQldGVzdF91bml0IFwiYml0c190b19yZXByZXNlbnRcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IGludF0gKGJpdHNfdG9fcmVwcmVzZW50IG4pIH5leHBlY3QgIGluXG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMCkgICAwO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEpICAgMTtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAyKSAgIDI7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMykgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDQpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA1KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNikgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDcpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA4KSAgIDQ7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMTAwKSA3O1xuICAgICAgdGVzdCBNLm1heF92YWx1ZSAoSW50LnByZWQgTS5udW1fYml0cyk7XG4gICAgOztcblxuICAgIGxldCBtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4gPVxuICAgICAgaWYgSW50LmVxdWFsIG4gMFxuICAgICAgdGhlbiB6ZXJvXG4gICAgICBlbHNlIHNoaWZ0X2xlZnQgb25lIChJbnQucHJlZCBuKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcIm1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHNcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IE0udF0gKG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbikgfmV4cGVjdCBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDIpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNCk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biA4KTtcbiAgICAgIHRlc3QgNyAoTS5vZl9pbnRfZXhuIDY0KTtcbiAgICAgIHRlc3QgKEludC5wcmVkIE0ubnVtX2JpdHMpIChNLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgTS5taW5fdmFsdWUgMSk7XG4gICAgOztcblxuICAgIGxldCBtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4gPVxuICAgICAgcHJlZCAoc2hpZnRfbGVmdCBvbmUgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgIGluXG4gICAgICB0ZXN0IDAgKE0ub2ZfaW50X2V4biAwKTtcbiAgICAgIHRlc3QgMSAoTS5vZl9pbnRfZXhuIDEpO1xuICAgICAgdGVzdCAyIChNLm9mX2ludF9leG4gMyk7XG4gICAgICB0ZXN0IDMgKE0ub2ZfaW50X2V4biA3KTtcbiAgICAgIHRlc3QgNCAoTS5vZl9pbnRfZXhuIDE1KTtcbiAgICAgIHRlc3QgNyAoTS5vZl9pbnRfZXhuIDEyNyk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSBNLm1heF92YWx1ZTtcbiAgICA7O1xuXG4gICAgbGV0IGxvZ191bmlmb3JtIHN0YXRlIH5sbyB+aGkgPVxuICAgICAgbGV0IG1pbl9iaXRzID0gYml0c190b19yZXByZXNlbnQgbG8gaW5cbiAgICAgIGxldCBtYXhfYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGhpIGluXG4gICAgICBsZXQgYml0cyA9IGludCBzdGF0ZSB+bG86bWluX2JpdHMgfmhpOm1heF9iaXRzIGluXG4gICAgICB1bmlmb3JtIHN0YXRlXG4gICAgICAgIH5sbzoobWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1heCBsbylcbiAgICAgICAgfmhpOihtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzIGJpdHMgfD4gbWluIGhpKVxuICBlbmRcblxuICBtb2R1bGUgRm9yX2ludCAgICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludCAgICAgICBsZXQgdW5pZm9ybSA9IGludCAgICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50MzIgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50MzIgICAgIGxldCB1bmlmb3JtID0gaW50MzIgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2MyAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2MyAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2MyAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDY0ICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDY0ICAgICBsZXQgdW5pZm9ybSA9IGludDY0ICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfbmF0aXZlaW50ID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgTmF0aXZlaW50IGxldCB1bmlmb3JtID0gbmF0aXZlaW50IGVuZClcblxuICBsZXQgaW50ICAgICAgID0gRm9yX2ludC5sb2dfdW5pZm9ybVxuICBsZXQgaW50MzIgICAgID0gRm9yX2ludDMyLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2MyAgICAgPSBGb3JfaW50NjMubG9nX3VuaWZvcm1cbiAgbGV0IGludDY0ICAgICA9IEZvcl9pbnQ2NC5sb2dfdW5pZm9ybVxuICBsZXQgbmF0aXZlaW50ID0gRm9yX25hdGl2ZWludC5sb2dfdW5pZm9ybVxuZW5kXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgb3BlcmF0aW9ucyBvbiB0aGUgdHlwZSBbaW50NjRdIG9mXG4gICBzaWduZWQgNjQtYml0IGludGVnZXJzLiAgVW5saWtlIHRoZSBidWlsdC1pbiBbaW50XSB0eXBlLFxuICAgdGhlIHR5cGUgW2ludDY0XSBpcyBndWFyYW50ZWVkIHRvIGJlIGV4YWN0bHkgNjQtYml0IHdpZGUgb24gYWxsXG4gICBwbGF0Zm9ybXMuICBBbGwgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG92ZXIgW2ludDY0XSBhcmUgdGFrZW5cbiAgIG1vZHVsbyAye142NH1cblxuICAgUGVyZm9ybWFuY2Ugbm90aWNlOiB2YWx1ZXMgb2YgdHlwZSBbaW50NjRdIG9jY3VweSBtb3JlIG1lbW9yeVxuICAgc3BhY2UgdGhhbiB2YWx1ZXMgb2YgdHlwZSBbaW50XSwgYW5kIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvblxuICAgW2ludDY0XSBhcmUgZ2VuZXJhbGx5IHNsb3dlciB0aGFuIHRob3NlIG9uIFtpbnRdLiAgVXNlIFtpbnQ2NF1cbiAgIG9ubHkgd2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWlyZXMgZXhhY3QgNjQtYml0IGFyaXRobWV0aWMuXG5cbiAgICBMaXRlcmFscyBmb3IgNjQtYml0IGludGVnZXJzIGFyZSBzdWZmaXhlZCBieSBMOlxuICAgIHtbXG4gICAgICBsZXQgemVybzogaW50NjQgPSAwTFxuICAgICAgbGV0IG9uZTogaW50NjQgPSAxTFxuICAgICAgbGV0IG1fb25lOiBpbnQ2NCA9IC0xTFxuICAgIF19XG4qKVxuXG52YWwgemVybyA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDAuICopXG5cbnZhbCBvbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAxLiAqKVxuXG52YWwgbWludXNfb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgLTEuICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbigqKiBVbmFyeSBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuKCoqIEFkZGl0aW9uLiAqKVxuXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG4oKiogU3VidHJhY3Rpb24uICopXG5cbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbigqKiBNdWx0aXBsaWNhdGlvbi4gKilcblxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuKCoqIEludGVnZXIgZGl2aXNpb24uXG4gICBAcmFpc2UgRGl2aXNpb25fYnlfemVybyBpZiB0aGUgc2Vjb25kXG4gICBhcmd1bWVudCBpcyB6ZXJvLiAgVGhpcyBkaXZpc2lvbiByb3VuZHMgdGhlIHJlYWwgcXVvdGllbnQgb2ZcbiAgIGl0cyBhcmd1bWVudHMgdG93YXJkcyB6ZXJvLCBhcyBzcGVjaWZpZWQgZm9yIHshU3RkbGliLigvKX0uICopXG5cbnZhbCB1bnNpZ25lZF9kaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFkaXZ9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBhIDY0LWJpdCBpbnRlZ2VyLFxuICAgZGlzY2FyZGluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0ICh0cnVuY2F0ZSB0b3dhcmRzIDApLlxuICAgSWYgdGhlIHRydW5jYXRlZCBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgb3V0c2lkZSB0aGUgcmFuZ2VcbiAgIFxcW3shSW50NjQubWluX2ludH0sIHshSW50NjQubWF4X2ludH1cXF0sIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGFuZFxuICAgYW4gdW5zcGVjaWZpZWQsIHBsYXRmb3JtLWRlcGVuZGVudCBpbnRlZ2VyIGlzIHJldHVybmVkLiAqKVxuXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLiAqKVxuXG5cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSkuIFRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfSwgaS5lLiB0aGUgdG9wIDMyIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gICopXG5cbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gbmF0aXZlIGludGVnZXIgKHR5cGUgW25hdGl2ZWludF0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIG5hdGl2ZSBpbnRlZ2VyLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LiAgT24gNjQtYml0IHBsYXRmb3JtcyxcbiAgIHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAqKVxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBzdHJpbmcgdG8gYSA2NC1iaXQgaW50ZWdlci5cbiAgIFRoZSBzdHJpbmcgaXMgcmVhZCBpbiBkZWNpbWFsIChieSBkZWZhdWx0LCBvciBpZiB0aGUgc3RyaW5nXG4gICBiZWdpbnMgd2l0aCBbMHVdKSBvciBpbiBoZXhhZGVjaW1hbCwgb2N0YWwgb3IgYmluYXJ5IGlmIHRoZVxuICAgc3RyaW5nIGJlZ2lucyB3aXRoIFsweF0sIFswb10gb3IgWzBiXSByZXNwZWN0aXZlbHkuXG5cbiAgIFRoZSBbMHVdIHByZWZpeCByZWFkcyB0aGUgaW5wdXQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgIFtbMCwgMipJbnQ2NC5tYXhfaW50KzFdXS4gIElmIHRoZSBpbnB1dCBleGNlZWRzIHshSW50NjQubWF4X2ludH1cbiAgIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgc2lnbmVkIGludGVnZXJcbiAgIFtJbnQ2NC5taW5faW50ICsgaW5wdXQgLSBJbnQ2NC5tYXhfaW50IC0gMV0uXG5cbiAgIFRoZSBbX10gKHVuZGVyc2NvcmUpIGNoYXJhY3RlciBjYW4gYXBwZWFyIGFueXdoZXJlIGluIHRoZSBzdHJpbmdcbiAgIGFuZCBpcyBpZ25vcmVkLlxuICAgQHJhaXNlIEZhaWx1cmUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBub3RcbiAgIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciwgb3IgaWYgdGhlIGludGVnZXIgcmVwcmVzZW50ZWRcbiAgIGV4Y2VlZHMgdGhlIHJhbmdlIG9mIGludGVnZXJzIHJlcHJlc2VudGFibGUgaW4gdHlwZSBbaW50NjRdLiAqKVxuXG52YWwgb2Zfc3RyaW5nX29wdDogc3RyaW5nIC0+IGludDY0IG9wdGlvblxuKCoqIFNhbWUgYXMgW29mX3N0cmluZ10sIGJ1dCByZXR1cm4gW05vbmVdIGluc3RlYWQgb2YgcmFpc2luZy5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgdG9fc3RyaW5nIDogaW50NjQgLT4gc3RyaW5nXG4oKiogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaXRzIGFyZ3VtZW50LCBpbiBkZWNpbWFsLiAqKVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGZsb2F0IGFjY29yZGluZ1xuICAgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LlxuICAgQml0IDYzIG9mIHRoZSByZXN1bHQgcmVwcmVzZW50cyB0aGUgc2lnbiBvZiB0aGUgZmxvYXQ7XG4gICBiaXRzIDYyIHRvIDUyIHJlcHJlc2VudCB0aGUgKGJpYXNlZCkgZXhwb25lbnQ7IGJpdHMgNTEgdG8gMFxuICAgcmVwcmVzZW50IHRoZSBtYW50aXNzYS4gKilcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGZsb2F0aW5nLXBvaW50IG51bWJlciB3aG9zZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbixcbiAgIGFjY29yZGluZyB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQsXG4gICBpcyB0aGUgZ2l2ZW4gW2ludDY0XS4gKilcblxudHlwZSB0ID0gaW50NjRcbigqKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgNjQtYml0IGludGVnZXJzLiAqKVxuXG52YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50ZWdlcnMsIHdpdGggdGhlIHNhbWUgc3BlY2lmaWNhdGlvbiBhc1xuICAgIHshU3RkbGliLmNvbXBhcmV9LiAgQWxvbmcgd2l0aCB0aGUgdHlwZSBbdF0sIHRoaXMgZnVuY3Rpb24gW2NvbXBhcmVdXG4gICAgYWxsb3dzIHRoZSBtb2R1bGUgW0ludDY0XSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3JzXG4gICAgeyFTZXQuTWFrZX0gYW5kIHshTWFwLk1ha2V9LiAqKVxuXG52YWwgdW5zaWduZWRfY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFNhbWUgYXMgeyFjb21wYXJlfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyB7ZSB1bnNpZ25lZH1cbiAgICA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMy4wICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBtYXg6IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBncmVhdGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzLjBcbiAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTGF5b3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpZ2FycmF5LmxheW91dFxuXG4gIGxldCBvZmZzZXQgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgIHwgQmlnYXJyYXkuRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIHwgQmlnYXJyYXkuQ19sYXlvdXQgLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTEuZGltIHQgLSAxIGRvXG4gICAgICBmIChpICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0fVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbSB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTEuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiB0LntpfSA8LSBmIGkpO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gaW5pdCA6PSBmICFpbml0IHQue2l9KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgfmY6KGZ1biBpIC0+IHQue2kgKyBvZmZzZXR9KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5Mi50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQgLSAxIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCAtIDEgZG9cbiAgICAgICAgZiAoaSArIG9mZnNldCkgKGogKyBvZmZzZXQpIHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9XG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltMSBkaW0yIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5Mi5jcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgaiAoXyA6IGVsdCkgLT4gdC57aSwgan0gPC0gZiBpIGopO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gKF8gOiBpbnQpIChfIDogaW50KSBlbHQgLT4gaW5pdCA6PSBmICFpbml0IGVsdCk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMSB0KSB+ZjooZnVuIGkgLT5cbiAgICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIH5mOihmdW4gaiAtPiB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fSkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMSB0KSBpblxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSAtPiBzaXplOmludCAtPiBoYXNoOkhhc2guc3RhdGUgLT4gSGFzaC5zdGF0ZVxuXG5sZXQgY3JlYXRlIGYgOiBfIHQgPSBmXG5cbmxldCBvYnNlcnZlICh0IDogXyB0KSB4IH5zaXplIH5oYXNoID1cbiAgaWYgc2l6ZSA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgZWxzZSB0IHggfnNpemUgfmhhc2hcbjs7XG5cbmxldCBvcGFxdWUgXyB+c2l6ZTpfIH5oYXNoID0gaGFzaFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZ2VuZXJhdGUgOiAnYSB0IC0+IHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSBTdGFnZWQudFxuXG4gIGxldCBjcmVhdGUgZiA6IF8gdCA9IFN0YWdlZC5zdGFnZSBmXG5cbiAgbGV0IGdlbmVyYXRlICh0IDogXyB0KSB+c2l6ZSB+cmFuZG9tID1cbiAgICBpZiBzaXplIDwgMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmdlbmVyYXRlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgICBlbHNlIFN0YWdlZC51bnN0YWdlIHQgfnNpemUgfnJhbmRvbVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgc2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb206XyAtPiBzaXplKVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuc3BsaXQgcmFuZG9tIGluXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBoYXNoID0gT2JzZXJ2ZXIwLm9ic2VydmUgZG9tIHggfnNpemUgfmhhc2g6KEhhc2guYWxsb2MgKCkpIGluXG4gICAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY29weSByYW5kb20gaW5cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpO1xuICAgICAgZ2VuZXJhdGUgcm5nIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgd2l0aF9zaXplIHQgfnNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgcGVydHVyYiB0IHNhbHQgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gc2FsdDtcbiAgICBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIH5zaXplIH5yYW5kb20gPVxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IFNvbWUgeSAtPiB5XG4gICAgfCBOb25lIC0+IGxvb3AgfnNpemU6KHNpemUgKyAxKSB+cmFuZG9tXG4gIGluXG4gIGNyZWF0ZSBsb29wXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5sZXQgcmV0dXJuIHggPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb206XyAtPiB4KVxubGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBmIChnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYXBwbHkgdGYgdHggPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGYgPSBnZW5lcmF0ZSB0ZiB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0eCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZiB4KVxuOztcblxubGV0IGJpbmQgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIGdlbmVyYXRlIChmIHgpIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QubWFwIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5pdGVyIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgYm90aCA9IEZvcl9hcHBsaWNhdGl2ZS5ib3RoXG5sZXQgbWFwMiA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAyXG5sZXQgbWFwMyA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAzXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IEZvcl9hcHBsaWNhdGl2ZS5BcHBsaWNhdGl2ZV9pbmZpeFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbmZpeFxuXG5tb2R1bGUgRm9yX21vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgaWdub3JlX20gPSBGb3JfbW9uYWQuaWdub3JlX21cbmxldCBqb2luID0gRm9yX21vbmFkLmpvaW5cblxubW9kdWxlIE1vbmFkX2luZml4ID0gRm9yX21vbmFkLk1vbmFkX2luZml4XG5pbmNsdWRlIE1vbmFkX2luZml4XG5tb2R1bGUgTGV0X3N5bnRheCA9IEZvcl9tb25hZC5MZXRfc3ludGF4XG5vcGVuIExldF9zeW50YXhcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgbGV0IGxvID0gMCBpblxuICBsZXQgaGkgPSBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvIH5oaSBpblxuICAgIGFycmF5LihpbmRleCkpXG47O1xuXG5sZXQgdW5pb24gbGlzdCA9IGpvaW4gKG9mX2xpc3QgbGlzdClcblxubGV0IG9mX3dlaWdodGVkX2xpc3QgYWxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGFsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCB3ZWlnaHRzLCB2YWx1ZXMgPSBMaXN0LnVuemlwIGFsaXN0IGluXG4gIGxldCB2YWx1ZV9hcnJheSA9IEFycmF5Lm9mX2xpc3QgdmFsdWVzIGluXG4gIGxldCB0b3RhbF93ZWlnaHQsIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5ID1cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5pbml0IChBcnJheS5sZW5ndGggdmFsdWVfYXJyYXkpIH5mOihmdW4gXyAtPiAwLikgaW5cbiAgICBsZXQgc3VtID1cbiAgICAgIExpc3QuZm9sZGkgd2VpZ2h0cyB+aW5pdDowLiB+ZjooZnVuIGluZGV4IGFjYyB3ZWlnaHQgLT5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgd2VpZ2h0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbm90IGZpbml0ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGlmIEZsb2F0LiggPCApIHdlaWdodCAwLlxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBsZXQgY3VtdWxhdGl2ZSA9IGFjYyArLiB3ZWlnaHQgaW5cbiAgICAgICAgYXJyYXkuKGluZGV4KSA8LSBjdW11bGF0aXZlO1xuICAgICAgICBjdW11bGF0aXZlKVxuICAgIGluXG4gICAgaWYgRmxvYXQuKCA8PSApIHN1bSAwLlxuICAgIHRoZW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB0b3RhbCB3ZWlnaHQgaXMgemVyb1wiXTtcbiAgICBzdW0sIGFycmF5XG4gIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBjaG9pY2UgPSBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOjAuIH5oaTp0b3RhbF93ZWlnaHQgaW5cbiAgICBtYXRjaFxuICAgICAgQXJyYXkuYmluYXJ5X3NlYXJjaFxuICAgICAgICBjdW11bGF0aXZlX3dlaWdodF9hcnJheVxuICAgICAgICB+Y29tcGFyZTpGbG9hdC5jb21wYXJlXG4gICAgICAgIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgICAgY2hvaWNlXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmRleCAtPiB2YWx1ZV9hcnJheS4oaW5kZXgpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB3ZWlnaHRlZF91bmlvbiBhbGlzdCA9IGpvaW4gKG9mX3dlaWdodGVkX2xpc3QgYWxpc3QpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmb3JjZSBsYXp5X3QpIH5zaXplIH5yYW5kb20pXG5cbmxldCBmaXhlZF9wb2ludCBvZl9nZW5lcmF0b3IgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX2dlbmVyYXRvciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBmb3JjZSBsYXp5X3Rcbjs7XG5cbmxldCB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgcmVjX2xpc3QgPVxuICAgICAgTGlzdC5tYXAgKGYgc2VsZikgfmY6KGZ1biAodywgdCkgLT5cbiAgICAgICAgKCB3XG4gICAgICAgICwgbGV0JWJpbmQgbiA9IHNpemUgaW5cbiAgICAgICAgICB3aXRoX3NpemUgfnNpemU6KG4gLSAxKSB0ICkpXG4gICAgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG5vbnJlY19saXN0IHx8IExpc3QuaXNfZW1wdHkgcmVjX2xpc3RcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci53ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb246IGxpc3RzIG11c3QgYmUgbm9uLWVtcHR5XCJdO1xuICAgIGxldCBub25yZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gbm9ucmVjX2xpc3QgaW5cbiAgICBsZXQgcmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIChub25yZWNfbGlzdCBAIHJlY19saXN0KSBpblxuICAgIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gICAgfCAwIC0+IG5vbnJlY19nZW5cbiAgICB8IF8gLT4gcmVjX2dlbilcbjs7XG5cbmxldCByZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBsZXQgd2VpZ2h0ZWQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6KGZ1biB0IC0+IDEuLCB0KSBpblxuICB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gKHdlaWdodGVkIG5vbnJlY19saXN0KSB+ZjooZnVuIHNlbGYgLT4gd2VpZ2h0ZWQgKGYgc2VsZikpXG47O1xuXG5sZXQgc2l6ZXMgPyhtaW5fbGVuZ3RoID0gMCkgPyhtYXhfbGVuZ3RoID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgYXNzZXJ0IChtaW5fbGVuZ3RoIDw9IG1heF9sZW5ndGgpO1xuICAgIGxldCB1cHBlcl9ib3VuZCA9IG1pbl9sZW5ndGggKyBzaXplIGluXG4gICAgbGV0IG1heF9sZW5ndGggPVxuICAgICAgaWYgdXBwZXJfYm91bmQgPj0gbWluX2xlbmd0aCAoKiBndWFyZCBhZ2FpbnN0IG92ZXJmbG93ICopXG4gICAgICB0aGVuIG1pbiBtYXhfbGVuZ3RoIHVwcGVyX2JvdW5kXG4gICAgICBlbHNlIG1heF9sZW5ndGhcbiAgICBpblxuICAgICgqIHBpY2sgYSBsZW5ndGgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IG1vc3Qgb2YgdGhlIHNpemUgaXMgc3BlbnQgb24gZWxlbWVudHMgKilcbiAgICBsZXQgbGVuID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86bWluX2xlbmd0aCB+aGk6bWF4X2xlbmd0aCBpblxuICAgICgqIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyByZXR1cm4gYW4gZW1wdHkgYXJyYXksIG90aGVyd2lzZSByZXR1cm4gYSBub24tZW1wdHkgYXJyYXlcbiAgICAgICB3aXRoIHRoZSBzaXplIGRpc3RyaWJ1dGVkIGFtb25nIHRoZSBlbGVtZW50cyAqKVxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2l6ZXMgPSBBcnJheS5pbml0IGxlbiB+ZjooZnVuIF8gLT4gMCkgaW5cbiAgICAgIGxldCByZW1haW5pbmcgPSBzaXplIC0gKGxlbiAtIG1pbl9sZW5ndGgpIGluXG4gICAgICBsZXQgbWF4X2luZGV4ID0gbGVuIC0gMSBpblxuICAgICAgZm9yIF8gPSAxIHRvIHJlbWFpbmluZyBkb1xuICAgICAgICAoKiBwaWNrIGFuIGluZGV4LCB3ZWlnaHRlZCBsb3cgc28gdGhhdCB3ZSBzZWUgdW5iYWxhbmNlZCBkaXN0cmlidXRpb25zIG9mdGVuICopXG4gICAgICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBzaXplcy4oaW5kZXgpIDwtIHNpemVzLihpbmRleCkgKyAxXG4gICAgICBkb25lO1xuICAgICAgKCogcGVybXV0ZSB0aGUgYXJyYXkgc28gdGhhdCBubyBpbmRleCBpcyBmYXZvcmVkIG92ZXIgYW5vdGhlciAqKVxuICAgICAgZm9yIGkgPSAwIHRvIG1heF9pbmRleCAtIDEgZG9cbiAgICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgQXJyYXkuc3dhcCBzaXplcyBpIGpcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgKEFycmF5LnN1bSAobW9kdWxlIEludCkgc2l6ZXMgfmY6Rm4uaWQgKyAobGVuIC0gbWluX2xlbmd0aCkgPSBzaXplKTtcbiAgICAgIEFycmF5LnRvX2xpc3Qgc2l6ZXMpKVxuOztcblxubGV0IHVuaXQgPSByZXR1cm4gKClcbmxldCBib29sID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tKVxubGV0IG9wdGlvbiB2YWx1ZV90ID0gdW5pb24gWyByZXR1cm4gTm9uZTsgbWFwIHZhbHVlX3QgfmY6T3B0aW9uLnJldHVybiBdXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID0gdW5pb24gWyBtYXAgZnN0X3QgfmY6RWl0aGVyLmZpcnN0OyBtYXAgc25kX3QgfmY6RWl0aGVyLnNlY29uZCBdXG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuOztcblxubGV0IGxpc3RfZ2VuZXJpYyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCBlbHRfZ2VuID1cbiAgbGV0JWJpbmQgc2l6ZXMgPSBzaXplcyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCAoKSBpblxuICBMaXN0Lm1hcCBzaXplcyB+ZjooZnVuIHNpemUgLT4gd2l0aF9zaXplIH5zaXplIGVsdF9nZW4pIHw+IGFsbFxuOztcblxubGV0IGxpc3QgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyBlbHRfZ2VuXG5sZXQgbGlzdF9ub25fZW1wdHkgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDoxIGVsdF9nZW5cblxubGV0IGxpc3Rfd2l0aF9sZW5ndGggZWx0X2dlbiB+bGVuZ3RoID1cbiAgbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggZWx0X2dlblxuOztcblxubGV0IGxpc3RfZmlsdGVyZWQgZWx0cyA9XG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBsZW5ndGhfb2ZfaW5wdXQgPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgbGVuZ3RoX29mX291dHB1dCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmxlbmd0aF9vZl9pbnB1dCBpblxuICAgIGxldCBpbmRpY2VzID0gQXJyYXkuaW5pdCBsZW5ndGhfb2ZfaW5wdXQgfmY6Rm4uaWQgaW5cbiAgICAoKiBDaG9vc2UgW2xlbmd0aF9vZl9vdXRwdXRdIHJhbmRvbSB2YWx1ZXMgaW4gdGhlIHByZWZpeCBvZiBbaW5kaWNlc10uICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9vZl9vdXRwdXQgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOihsZW5ndGhfb2ZfaW5wdXQgLSAxKSBpblxuICAgICAgQXJyYXkuc3dhcCBpbmRpY2VzIGkgalxuICAgIGRvbmU7XG4gICAgKCogU29ydCB0aGUgY2hvc2VuIGluZGljZXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJlb3JkZXIgdGhlbS4gKilcbiAgICBBcnJheS5zb3J0IGluZGljZXMgfnBvczowIH5sZW46bGVuZ3RoX29mX291dHB1dCB+Y29tcGFyZTpJbnQuY29tcGFyZTtcbiAgICAoKiBSZXR1cm4gdGhlIGNob3NlbiBlbGVtZW50cy4gKilcbiAgICBMaXN0LmluaXQgbGVuZ3RoX29mX291dHB1dCB+ZjooZnVuIGkgLT4gZWx0cy4oaW5kaWNlcy4oaSkpKSlcbjs7XG5cbmxldCBsaXN0X3Blcm11dGF0aW9ucyBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6aSBpblxuICAgICAgQXJyYXkuc3dhcCBhcnJheSBpIGpcbiAgICBkb25lO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyYXkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsXG5cbmxldCBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86KENoYXIudG9faW50IGxvKSB+aGk6KENoYXIudG9faW50IGhpKVxuICAgIHw+IENoYXIudW5zYWZlX29mX2ludClcbjs7XG5cbmxldCBjaGFyX3VwcGVyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ0EnICdaJ1xubGV0IGNoYXJfbG93ZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnYScgJ3onXG5sZXQgY2hhcl9kaWdpdCA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJzAnICc5J1xubGV0IGNoYXJfcHJpbnRfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJyAnICd+J1xubGV0IGNoYXJfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgQ2hhci5taW5fdmFsdWUgQ2hhci5tYXhfdmFsdWVcbmxldCBjaGFyX2FscGhhID0gdW5pb24gWyBjaGFyX2xvd2VyY2FzZTsgY2hhcl91cHBlcmNhc2UgXVxuXG5sZXQgY2hhcl9hbHBoYW51bSA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgKCogTW9zdCBwZW9wbGUgcHJvYmFibHkgZXhwZWN0IHRoaXMgdG8gYmUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgbm90IHdlaWdodGVkXG4gICAgICAgdG93YXJkIGRpZ2l0cyBsaWtlIHdlIHdvdWxkIGdldCB3aXRoIFt1bmlvbl0gKHNpbmNlIHRoZXJlIGFyZSBmZXdlciBkaWdpdHMgdGhhblxuICAgICAgIGxldHRlcnMpLiAqKVxuICAgIFsgNTIuLCBjaGFyX2FscGhhOyAxMC4sIGNoYXJfZGlnaXQgXVxuOztcblxubGV0IGNoYXJfd2hpdGVzcGFjZSA9IG9mX2xpc3QgKExpc3QuZmlsdGVyIENoYXIuYWxsIH5mOkNoYXIuaXNfd2hpdGVzcGFjZSlcbmxldCBjaGFyX3ByaW50ID0gd2VpZ2h0ZWRfdW5pb24gWyAxMC4sIGNoYXJfYWxwaGFudW07IDEuLCBjaGFyX3ByaW50X3VuaWZvcm0gXVxuXG5sZXQgY2hhciA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgWyAxMDAuLCBjaGFyX3ByaW50XG4gICAgOyAxMC4sIGNoYXJfdW5pZm9ybVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1pbl92YWx1ZVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1heF92YWx1ZVxuICAgIF1cbjs7XG5cbigqIFByb2R1Y2VzIGEgbnVtYmVyIGZyb20gMCBvciAxIHRvIHNpemUgKyAxLCB3ZWlnaHRlZCBoaWdoLiBXZSBoYXZlIGZvdW5kIHRoaXNcbiAgIGRpc3RyaWJ1dGlvbiBlbXBpcmljYWxseSB1c2VmdWwgZm9yIHN0cmluZyBsZW5ndGhzLiAqKVxubGV0IHNtYWxsX2ludCB+YWxsb3dfemVybyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgbG93ZXJfYm91bmQgPSBpZiBhbGxvd196ZXJvIHRoZW4gMCBlbHNlIDEgaW5cbiAgICBsZXQgdXBwZXJfYm91bmQgPSBzaXplICsgMSBpblxuICAgIGxldCB3ZWlnaHRlZF9sb3cgPVxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6KHVwcGVyX2JvdW5kIC0gbG93ZXJfYm91bmQpXG4gICAgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfaGlnaCA9IHVwcGVyX2JvdW5kIC0gd2VpZ2h0ZWRfbG93IGluXG4gICAgd2VpZ2h0ZWRfaGlnaClcbjs7XG5cbmxldCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzp0cnVlXG5sZXQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOmZhbHNlXG5cbm1vZHVsZSB0eXBlIEludF93aXRoX3JhbmRvbSA9IHNpZ1xuICBpbmNsdWRlIEludC5TXG5cbiAgdmFsIHVuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG4gIHZhbCBsb2dfdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRm9yX2ludGVnZXIgKEludGVnZXIgOiBJbnRfd2l0aF9yYW5kb20pID0gc3RydWN0XG4gIGxldCB1bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIudW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbG9nX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci5sb2dfdW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbm9uX3VuaWZvcm0gZiBsbyBoaSA9XG4gICAgd2VpZ2h0ZWRfdW5pb24gWyAwLjA1LCByZXR1cm4gbG87IDAuMDUsIHJldHVybiBoaTsgMC45LCBmIGxvIGhpIF1cbiAgOztcblxuICBsZXQgaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IGxvZ19pbmNsdXNpdmUgPSBub25fdW5pZm9ybSBsb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IHVuaWZvcm1fYWxsID0gdW5pZm9ybV9pbmNsdXNpdmUgSW50ZWdlci5taW5fdmFsdWUgSW50ZWdlci5tYXhfdmFsdWVcblxuICBsZXQgYWxsID1cbiAgICBbJW1hcFxuICAgICAgbGV0IG5lZ2F0aXZlID0gYm9vbFxuICAgICAgYW5kIG1hZ25pdHVkZSA9IGxvZ19pbmNsdXNpdmUgSW50ZWdlci56ZXJvIEludGVnZXIubWF4X3ZhbHVlIGluXG4gICAgICBpZiBuZWdhdGl2ZSB0aGVuIEludGVnZXIuYml0X25vdCBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9pbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50XG4gIGVuZClcblxubGV0IGludCA9IEZvcl9pbnQuYWxsXG5sZXQgaW50X3VuaWZvcm0gPSBGb3JfaW50LnVuaWZvcm1fYWxsXG5sZXQgaW50X2luY2x1c2l2ZSA9IEZvcl9pbnQuaW5jbHVzaXZlXG5sZXQgaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludF9sb2dfaW5jbHVzaXZlID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5cbm1vZHVsZSBGb3JfaW50MzIgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQzMlxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQzMlxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDMyXG4gIGVuZClcblxubGV0IGludDMyID0gRm9yX2ludDMyLmFsbFxubGV0IGludDMyX3VuaWZvcm0gPSBGb3JfaW50MzIudW5pZm9ybV9hbGxcbmxldCBpbnQzMl9pbmNsdXNpdmUgPSBGb3JfaW50MzIuaW5jbHVzaXZlXG5sZXQgaW50MzJfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfaW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5cbm1vZHVsZSBGb3JfaW50NjMgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQ2M1xuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDYzXG4gIGVuZClcblxubGV0IGludDYzID0gRm9yX2ludDYzLmFsbFxubGV0IGludDYzX3VuaWZvcm0gPSBGb3JfaW50NjMudW5pZm9ybV9hbGxcbmxldCBpbnQ2M19pbmNsdXNpdmUgPSBGb3JfaW50NjMuaW5jbHVzaXZlXG5sZXQgaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfaW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5cbm1vZHVsZSBGb3JfaW50NjQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQ2NFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQ2NFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDY0XG4gIGVuZClcblxubGV0IGludDY0ID0gRm9yX2ludDY0LmFsbFxubGV0IGludDY0X3VuaWZvcm0gPSBGb3JfaW50NjQudW5pZm9ybV9hbGxcbmxldCBpbnQ2NF9pbmNsdXNpdmUgPSBGb3JfaW50NjQuaW5jbHVzaXZlXG5sZXQgaW50NjRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2NF9sb2dfaW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ19pbmNsdXNpdmVcbmxldCBpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5cbm1vZHVsZSBGb3JfbmF0aXZlaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTmF0aXZlaW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLm5hdGl2ZWludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLm5hdGl2ZWludFxuICBlbmQpXG5cbmxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmFsbFxubGV0IG5hdGl2ZWludF91bmlmb3JtID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2FsbFxubGV0IG5hdGl2ZWludF9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmluY2x1c2l2ZVxubGV0IG5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGZsb2F0X3plcm9fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDAuXG5sZXQgZmxvYXRfemVyb19tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgMC5cblxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUgPVxuICBGbG9hdC5vbmVfdWxwIGBEb3duIEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSBGbG9hdC5tYXhfZmluaXRlX3ZhbHVlXG5sZXQgZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfaW5mX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X2luZl9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9uYW5fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm5hblxubGV0IGZsb2F0X21pbl9uYW5fbWFudGlzc2EgPSBJbnQ2My5zdWNjIGZsb2F0X2luZl9tYW50aXNzYVxubGV0IGZsb2F0X21heF9uYW5fbWFudGlzc2EgPSBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhXG5sZXQgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgPSA1MlxuXG4oKiBXZSB3ZWlnaHQgbWFudGlzc2FzIHNvIHRoYXQgXCJpbnRlZ2VyLWxpa2VcIiB2YWx1ZXMsIGFuZCB2YWx1ZXMgd2l0aCBvbmx5IGEgZmV3IGRpZ2l0c1xuICAgcGFzdCB0aGUgZGVjaW1hbCwgYXJlIHJlYXNvbmFibHkgY29tbW9uLiAqKVxubGV0IGZsb2F0X25vcm1hbF9tYW50aXNzYSA9XG4gIGxldCViaW5kIG51bV9iaXRzID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZSAwIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIGluXG4gIGxldCVtYXAgYml0cyA9XG4gICAgRm9yX2ludDYzLmluY2x1c2l2ZSBJbnQ2My56ZXJvIChJbnQ2My5wcmVkIChJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0cykpXG4gIGluXG4gIEludDYzLnNoaWZ0X2xlZnQgYml0cyAoSW50LiggLSApIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIG51bV9iaXRzKVxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggKyApIGxvd2VyX2JvdW5kIG9mZnNldFxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oIC0gKSB1cHBlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbigqIFdlIHdlaWdodCBleHBvbmVudHMgc3VjaCB0aGF0IHZhbHVlcyBuZWFyIDEgYXJlIG1vcmUgbGlrZWx5LiAqKVxubGV0IGZsb2F0X2V4cG9uZW50ID1cbiAgbGV0IG1pZHBvaW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAxLiBpblxuICB1bmlvblxuICAgIFsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50IG1pZHBvaW50XG4gICAgOyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbWlkcG9pbnQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudFxuICAgIF1cbjs7XG5cbmxldCBmbG9hdF96ZXJvID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X3plcm9fZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfemVyb19tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID1cbiAgICBGb3JfaW50NjMubG9nX2luY2x1c2l2ZSBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhIGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2FcbiAgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gZmxvYXRfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gZmxvYXRfbm9ybWFsX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X2luZmluaXRlID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X2luZl9leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF9pbmZfbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9uYW4gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfbmFuX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IEZvcl9pbnQ2My5pbmNsdXNpdmUgZmxvYXRfbWluX25hbl9tYW50aXNzYSBmbG9hdF9tYXhfbmFuX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IGZsb2F0X3plcm9cbiAgfCBTdWJub3JtYWwgLT4gZmxvYXRfc3Vibm9ybWFsXG4gIHwgTm9ybWFsIC0+IGZsb2F0X25vcm1hbFxuICB8IEluZmluaXRlIC0+IGZsb2F0X2luZmluaXRlXG4gIHwgTmFuIC0+IGZsb2F0X25hblxuOztcblxubGV0IGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiAxLlxuICB8IFN1Ym5vcm1hbCAtPiAxMC5cbiAgfCBOb3JtYWwgLT4gMTAwLlxuICB8IEluZmluaXRlIC0+IDEuXG4gIHwgTmFuIC0+IDEuXG47O1xuXG5sZXQgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyBmaWx0ZXIgPVxuICBMaXN0LmZpbHRlcl9tYXAgRmxvYXQuQ2xhc3MuYWxsIH5mOihmdW4gYyAtPlxuICAgIGlmIGZpbHRlciBjIHRoZW4gU29tZSAoZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMsIGZsb2F0X29mX2NsYXNzIGMpIGVsc2UgTm9uZSlcbiAgfD4gd2VpZ2h0ZWRfdW5pb25cbjs7XG5cbmxldCBmbG9hdF9maW5pdGUgPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF93aXRob3V0X25hbiA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIHwgSW5maW5pdGUgLT4gdHJ1ZVxuICAgIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0ID0gZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuIF8gLT4gdHJ1ZSlcblxubGV0IGZsb2F0X2Zpbml0ZV9ub25femVybyA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgWmVybyB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3Bvc2l0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgaWYgKG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvd2VyX2JvdW5kKSkgfHwgbm90IChGbG9hdC5pc19maW5pdGUgdXBwZXJfYm91bmQpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogYm91bmRzIGFyZSBub3QgZmluaXRlXCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBsZXQgbG93ZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQgaW5cbiAgbGV0IHVwcGVyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYERvd24gdXBwZXJfYm91bmQgaW5cbiAgaWYgbG93ZXJfaW5jbHVzaXZlID4gdXBwZXJfaW5jbHVzaXZlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogcmVxdWVzdGVkIHJhbmdlIGlzIGVtcHR5XCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOmxvd2VyX2luY2x1c2l2ZSB+aGk6dXBwZXJfaW5jbHVzaXZlKVxuOztcblxubGV0IGZsb2F0X2luY2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGlmIEZsb2F0LmVxdWFsIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gIHRoZW4gcmV0dXJuIGxvd2VyX2JvdW5kXG4gIGVsc2UgaWYgRmxvYXQuKCA9ICkgKEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kKSB1cHBlcl9ib3VuZFxuICB0aGVuIHVuaW9uIFsgcmV0dXJuIGxvd2VyX2JvdW5kOyByZXR1cm4gdXBwZXJfYm91bmQgXVxuICBlbHNlXG4gICAgd2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMC4wNSwgcmV0dXJuIGxvd2VyX2JvdW5kXG4gICAgICA7IDAuMDUsIHJldHVybiB1cHBlcl9ib3VuZFxuICAgICAgOyAwLjksIGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gICAgICBdXG47O1xuXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGggPVxuICBsaXN0X3dpdGhfbGVuZ3RoIGNoYXJfZ2VuIH5sZW5ndGggfD4gbWFwIH5mOlN0cmluZy5vZl9jaGFyX2xpc3Rcbjs7XG5cbmxldCBzdHJpbmdfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nID0gc3RyaW5nX29mIGNoYXJcbmxldCBzdHJpbmdfbm9uX2VtcHR5ID0gc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGggPSBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhciB+bGVuZ3RoXG5sZXQgYnl0ZXMgPSBtYXAgc3RyaW5nIH5mOkJ5dGVzLm9mX3N0cmluZ1xuXG5sZXQgc2V4cF9vZiBhdG9tID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0JWJpbmQgc2l6ZSA9IHNpemUgaW5cbiAgICAoKiBjaG9vc2UgYSBudW1iZXIgd2VpZ2h0ZWQgbG93IHNvIHdlIGhhdmUgYSBkZWNyZWFzaW5nLCBidXQgbm90IHZhbmlzaGluZywgY2hhbmNlXG4gICAgICAgdG8gZ2VuZXJhdGUgYXRvbXMgYXMgc2l6ZSBncm93cyAqKVxuICAgIG1hdGNoJWJpbmQgRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCAoc2l6ZSArIDEpIHdpdGhcbiAgICAoKiBnZW5lcmF0ZSBhbiBhdG9tIHVzaW5nIHRoZSBnaXZlbiBzaXplICopXG4gICAgfCAwIC0+XG4gICAgICBsZXQlbWFwIGF0b20gPSBhdG9tIGluXG4gICAgICBTZXhwLkF0b20gYXRvbVxuICAgICgqIHJlbHlpbmcgb24gW0xpc3QuZ2VuXSB0byBkaXN0cmlidXRlIFtzaXplXSBvdmVyIHN1Yi1zZXhwcyAqKVxuICAgIHwgXyAtPlxuICAgICAgbGV0JW1hcCBsaXN0ID0gbGlzdCBzZWxmIGluXG4gICAgICBTZXhwLkxpc3QgbGlzdClcbjs7XG5cbmxldCBzZXhwID0gc2V4cF9vZiBzdHJpbmdcblxubGV0IG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X2dlbiBkYXRhX2dlbiA9XG4gIGxldCViaW5kIGtleXMgPSBsaXN0IGtleV9nZW4gaW5cbiAgbGV0IGtleXMgPSBMaXN0LmRlZHVwX2FuZF9zb3J0IGtleXMgfmNvbXBhcmU6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgbGV0JWJpbmQgZGF0YSA9IGxpc3Rfd2l0aF9sZW5ndGggZGF0YV9nZW4gfmxlbmd0aDooTGlzdC5sZW5ndGgga2V5cykgaW5cbiAgcmV0dXJuIChNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciAoTGlzdC56aXBfZXhuIGtleXMgZGF0YSkpXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgbWFwIChsaXN0IGVsdF9nZW4pIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLm9mX2xpc3QgfmNvbXBhcmF0b3IpXG47O1xuXG5sZXQgY29tcGFyYXRvcl9vZl9tXG4gICAgICAodHlwZSBhIGMpXG4gICAgICAobW9kdWxlIE0gOiBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGMpXG4gID1cbiAgTS5jb21wYXJhdG9yXG47O1xuXG5sZXQgbWFwX3RfbSBtIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3Jfb2ZfbSBtIGluXG4gIG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X2dlbiBkYXRhX2dlblxuICB8PiBtYXAgfmY6KE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG47O1xuXG5sZXQgc2V0X3RfbSBtIGVsdF9nZW4gPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3Jfb2ZfbSBtIGluXG4gIHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICB8PiBtYXAgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG47O1xuXG5sZXQgYmlnYXJyYXkxIHQga2luZCBsYXlvdXQgPVxuICBsZXQlbWFwIGVsdHMgPSBsaXN0IHQgaW5cbiAgbGV0IGVsdHMgPSBBcnJheS5vZl9saXN0IGVsdHMgaW5cbiAgbGV0IGRpbSA9IEFycmF5Lmxlbmd0aCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmluaXQga2luZCBsYXlvdXQgZGltIH5mOihmdW4gaSAtPiBlbHRzLihpIC0gb2Zmc2V0KSlcbjs7XG5cbmxldCBiaWdzdHJpbmcgPSBiaWdhcnJheTEgY2hhciBDaGFyIENfbGF5b3V0XG5sZXQgZmxvYXQzMl92ZWMgPSBiaWdhcnJheTEgZmxvYXQgRmxvYXQzMiBGb3J0cmFuX2xheW91dFxubGV0IGZsb2F0NjRfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0NjQgRm9ydHJhbl9sYXlvdXRcblxubGV0IGJpZ2FycmF5Ml9kaW0gPVxuICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICB8IDAgLT4gcmV0dXJuICgwLCAwKVxuICB8IG1heF90b3RhbF9zaXplIC0+XG4gICAgbGV0JWJpbmQgYSA9XG4gICAgICAoKiBjaG9vc2UgYSBkaW1lbnNpb24gdXAgdG8gW21heF90b3RhbF9zaXplXSwgd2VpZ2h0ZWQgbG93IHRvIGdpdmUgdGhlIG90aGVyXG4gICAgICAgICBkaW1lbnNpb24gYSBnb29kIGNoYW5jZSBvZiBiZWluZyBjb21wYXJhdGl2ZWx5IGhpZ2ggKilcbiAgICAgIGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMSBtYXhfdG90YWxfc2l6ZVxuICAgIGluXG4gICAgbGV0JWJpbmQgYiA9XG4gICAgICAoKiBjaG9vc2UgYSBkaW1lbnNpb24gdXAgdG8gW21heF90b3RhbF9zaXplIC8gYV0sIHdlaWdodGVkIGhpZ2ggdG8gcmVhY2ggY2xvc2UgdG9cbiAgICAgICAgIFttYXhfdG90YWxfc2l6ZV0gbW9zdCBvZiB0aGUgdGltZSAqKVxuICAgICAgbGV0IG1heF9iID0gbWF4X3RvdGFsX3NpemUgLyBhIGluXG4gICAgICBsZXQlbWFwIGJfd2VpZ2h0ZWRfbG93ID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAwIG1heF9iIGluXG4gICAgICBtYXhfYiAtIGJfd2VpZ2h0ZWRfbG93XG4gICAgaW5cbiAgICAoKiBhdm9pZCBhbnkgc2tldyBvZiBhIHZzIGIgYnkgcmFuZG9tbHkgc3dhcHBpbmcgKilcbiAgICBpZiVtYXAgYm9vbCB0aGVuIGEsIGIgZWxzZSBiLCBhXG47O1xuXG5sZXQgYmlnYXJyYXkyIHQga2luZCBsYXlvdXQgPVxuICBsZXQlYmluZCBkaW0xLCBkaW0yID0gYmlnYXJyYXkyX2RpbSBpblxuICBsZXQlbWFwIGVsdHMgPSBsaXN0X3dpdGhfbGVuZ3RoIH5sZW5ndGg6ZGltMSAobGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTIgdCkgaW5cbiAgbGV0IGVsdHMgPSBBcnJheS5vZl9saXN0X21hcCB+ZjpBcnJheS5vZl9saXN0IGVsdHMgaW5cbiAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaW5pdCBraW5kIGxheW91dCBkaW0xIGRpbTIgfmY6KGZ1biBpIGogLT5cbiAgICBlbHRzLihpIC0gb2Zmc2V0KS4oaiAtIG9mZnNldCkpXG47O1xuXG5sZXQgZmxvYXQzMl9tYXQgPSBiaWdhcnJheTIgZmxvYXQgRmxvYXQzMiBGb3J0cmFuX2xheW91dFxubGV0IGZsb2F0NjRfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0NjQgRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIERlYnVnID0gc3RydWN0XG4gIGxldCBjb3ZlcmFnZVxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBDbXAgOiBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgc2FtcGxlXG4gICAgPVxuICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgIHNhbXBsZVxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIENtcCkpXG4gICAgICB+ZjooZnVuIGNvdW50cyB2YWx1ZSAtPlxuICAgICAgICBNYXAudXBkYXRlIGNvdW50cyB2YWx1ZSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXYgKyAxKSlcbiAgOztcblxuICBsZXQgbW9uaXRvciB0IH5mID1cbiAgICBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICBmIHZhbHVlO1xuICAgICAgdmFsdWUpXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgb3BlcmF0aW9ucyBvbiB0aGUgdHlwZSBbaW50NjRdIG9mXG4gICBzaWduZWQgNjQtYml0IGludGVnZXJzLiAgVW5saWtlIHRoZSBidWlsdC1pbiBbaW50XSB0eXBlLFxuICAgdGhlIHR5cGUgW2ludDY0XSBpcyBndWFyYW50ZWVkIHRvIGJlIGV4YWN0bHkgNjQtYml0IHdpZGUgb24gYWxsXG4gICBwbGF0Zm9ybXMuICBBbGwgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG92ZXIgW2ludDY0XSBhcmUgdGFrZW5cbiAgIG1vZHVsbyAye142NH1cblxuICAgUGVyZm9ybWFuY2Ugbm90aWNlOiB2YWx1ZXMgb2YgdHlwZSBbaW50NjRdIG9jY3VweSBtb3JlIG1lbW9yeVxuICAgc3BhY2UgdGhhbiB2YWx1ZXMgb2YgdHlwZSBbaW50XSwgYW5kIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvblxuICAgW2ludDY0XSBhcmUgZ2VuZXJhbGx5IHNsb3dlciB0aGFuIHRob3NlIG9uIFtpbnRdLiAgVXNlIFtpbnQ2NF1cbiAgIG9ubHkgd2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWlyZXMgZXhhY3QgNjQtYml0IGFyaXRobWV0aWMuXG5cbiAgICBMaXRlcmFscyBmb3IgNjQtYml0IGludGVnZXJzIGFyZSBzdWZmaXhlZCBieSBMOlxuICAgIHtbXG4gICAgICBsZXQgemVybzogaW50NjQgPSAwTFxuICAgICAgbGV0IG9uZTogaW50NjQgPSAxTFxuICAgICAgbGV0IG1fb25lOiBpbnQ2NCA9IC0xTFxuICAgIF19XG4qKVxuXG52YWwgemVybyA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDAuICopXG5cbnZhbCBvbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAxLiAqKVxuXG52YWwgbWludXNfb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgLTEuICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbigqKiBVbmFyeSBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuKCoqIEFkZGl0aW9uLiAqKVxuXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG4oKiogU3VidHJhY3Rpb24uICopXG5cbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbigqKiBNdWx0aXBsaWNhdGlvbi4gKilcblxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuKCoqIEludGVnZXIgZGl2aXNpb24uXG4gICBAcmFpc2UgRGl2aXNpb25fYnlfemVybyBpZiB0aGUgc2Vjb25kXG4gICBhcmd1bWVudCBpcyB6ZXJvLiAgVGhpcyBkaXZpc2lvbiByb3VuZHMgdGhlIHJlYWwgcXVvdGllbnQgb2ZcbiAgIGl0cyBhcmd1bWVudHMgdG93YXJkcyB6ZXJvLCBhcyBzcGVjaWZpZWQgZm9yIHshU3RkbGliLigvKX0uICopXG5cbnZhbCB1bnNpZ25lZF9kaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFkaXZ9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBhIDY0LWJpdCBpbnRlZ2VyLFxuICAgZGlzY2FyZGluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0ICh0cnVuY2F0ZSB0b3dhcmRzIDApLlxuICAgSWYgdGhlIHRydW5jYXRlZCBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgb3V0c2lkZSB0aGUgcmFuZ2VcbiAgIFxcW3shSW50NjQubWluX2ludH0sIHshSW50NjQubWF4X2ludH1cXF0sIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGFuZFxuICAgYW4gdW5zcGVjaWZpZWQsIHBsYXRmb3JtLWRlcGVuZGVudCBpbnRlZ2VyIGlzIHJldHVybmVkLiAqKVxuXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLiAqKVxuXG5cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSkuIFRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfSwgaS5lLiB0aGUgdG9wIDMyIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gICopXG5cbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gbmF0aXZlIGludGVnZXIgKHR5cGUgW25hdGl2ZWludF0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIG5hdGl2ZSBpbnRlZ2VyLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LiAgT24gNjQtYml0IHBsYXRmb3JtcyxcbiAgIHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAqKVxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBzdHJpbmcgdG8gYSA2NC1iaXQgaW50ZWdlci5cbiAgIFRoZSBzdHJpbmcgaXMgcmVhZCBpbiBkZWNpbWFsIChieSBkZWZhdWx0LCBvciBpZiB0aGUgc3RyaW5nXG4gICBiZWdpbnMgd2l0aCBbMHVdKSBvciBpbiBoZXhhZGVjaW1hbCwgb2N0YWwgb3IgYmluYXJ5IGlmIHRoZVxuICAgc3RyaW5nIGJlZ2lucyB3aXRoIFsweF0sIFswb10gb3IgWzBiXSByZXNwZWN0aXZlbHkuXG5cbiAgIFRoZSBbMHVdIHByZWZpeCByZWFkcyB0aGUgaW5wdXQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgIFtbMCwgMipJbnQ2NC5tYXhfaW50KzFdXS4gIElmIHRoZSBpbnB1dCBleGNlZWRzIHshSW50NjQubWF4X2ludH1cbiAgIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgc2lnbmVkIGludGVnZXJcbiAgIFtJbnQ2NC5taW5faW50ICsgaW5wdXQgLSBJbnQ2NC5tYXhfaW50IC0gMV0uXG5cbiAgIFRoZSBbX10gKHVuZGVyc2NvcmUpIGNoYXJhY3RlciBjYW4gYXBwZWFyIGFueXdoZXJlIGluIHRoZSBzdHJpbmdcbiAgIGFuZCBpcyBpZ25vcmVkLlxuICAgQHJhaXNlIEZhaWx1cmUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBub3RcbiAgIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciwgb3IgaWYgdGhlIGludGVnZXIgcmVwcmVzZW50ZWRcbiAgIGV4Y2VlZHMgdGhlIHJhbmdlIG9mIGludGVnZXJzIHJlcHJlc2VudGFibGUgaW4gdHlwZSBbaW50NjRdLiAqKVxuXG52YWwgb2Zfc3RyaW5nX29wdDogc3RyaW5nIC0+IGludDY0IG9wdGlvblxuKCoqIFNhbWUgYXMgW29mX3N0cmluZ10sIGJ1dCByZXR1cm4gW05vbmVdIGluc3RlYWQgb2YgcmFpc2luZy5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgdG9fc3RyaW5nIDogaW50NjQgLT4gc3RyaW5nXG4oKiogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaXRzIGFyZ3VtZW50LCBpbiBkZWNpbWFsLiAqKVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGZsb2F0IGFjY29yZGluZ1xuICAgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LlxuICAgQml0IDYzIG9mIHRoZSByZXN1bHQgcmVwcmVzZW50cyB0aGUgc2lnbiBvZiB0aGUgZmxvYXQ7XG4gICBiaXRzIDYyIHRvIDUyIHJlcHJlc2VudCB0aGUgKGJpYXNlZCkgZXhwb25lbnQ7IGJpdHMgNTEgdG8gMFxuICAgcmVwcmVzZW50IHRoZSBtYW50aXNzYS4gKilcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGZsb2F0aW5nLXBvaW50IG51bWJlciB3aG9zZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbixcbiAgIGFjY29yZGluZyB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQsXG4gICBpcyB0aGUgZ2l2ZW4gW2ludDY0XS4gKilcblxudHlwZSB0ID0gaW50NjRcbigqKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgNjQtYml0IGludGVnZXJzLiAqKVxuXG52YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50ZWdlcnMsIHdpdGggdGhlIHNhbWUgc3BlY2lmaWNhdGlvbiBhc1xuICAgIHshU3RkbGliLmNvbXBhcmV9LiAgQWxvbmcgd2l0aCB0aGUgdHlwZSBbdF0sIHRoaXMgZnVuY3Rpb24gW2NvbXBhcmVdXG4gICAgYWxsb3dzIHRoZSBtb2R1bGUgW0ludDY0XSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3JzXG4gICAgeyFTZXQuTWFrZX0gYW5kIHshTWFwLk1ha2V9LiAqKVxuXG52YWwgdW5zaWduZWRfY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFNhbWUgYXMgeyFjb21wYXJlfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyB7ZSB1bnNpZ25lZH1cbiAgICA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMy4wICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBtYXg6IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBncmVhdGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzLjBcbiAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYXRvbWljIDogXyB0XG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2EgU2VxdWVuY2UudCkgLT4gJ2EgdFxuICB2YWwgc2hyaW5rIDogJ2EgdCAtPiAnYSAtPiAnYSBTZXF1ZW5jZS50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGxldCBhdG9taWMgXyA9IFNlcXVlbmNlLmVtcHR5XG4gIGxldCBjcmVhdGUgPSBGbi5pZFxuICBsZXQgc2hyaW5rID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG1hcCB0IH5mIH5mX2ludmVyc2UgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm1hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG5sZXQgZmlsdGVyIHQgfmYgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlciB+ZiAoc2hyaW5rIHQgeCkpXG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgfmZfaW52ZXJzZSA9XG4gIGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyX21hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG47O1xuXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm9mX2xhenkgKGxhenkgKHNocmluayAoZm9yY2UgbGF6eV90KSB4KSkpXG5cbmxldCBmaXhlZF9wb2ludCBvZl9zaHJpbmtlciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2Zfc2hyaW5rZXIgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICBbIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6KGZ1biBmc3QgLT4gZnN0LCBzbmQpXG4gICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6KGZ1biBzbmQgLT4gZnN0LCBzbmQpXG4gICAgICBdKVxuOztcblxubGV0IHVuaXQgPSBhdG9taWNcbmxldCBib29sID0gYXRvbWljXG5sZXQgY2hhciA9IGF0b21pY1xubGV0IGludCA9IGF0b21pY1xubGV0IGludDMyID0gYXRvbWljXG5sZXQgaW50NjMgPSBhdG9taWNcbmxldCBpbnQ2NCA9IGF0b21pY1xubGV0IG5hdGl2ZWludCA9IGF0b21pY1xubGV0IGZsb2F0ID0gYXRvbWljXG5cbmxldCBiaWdhcnJheTEgc3JjID1cbiAgbGV0IGRpbSA9IEJpZ2FycmF5LkFycmF5MS5kaW0gc3JjIGluXG4gIG1hdGNoIGRpbSB3aXRoXG4gIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICB8IF8gLT5cbiAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5MS5raW5kIHNyYyBpblxuICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTEubGF5b3V0IHNyYyBpblxuICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgU2VxdWVuY2UuaW5pdCBkaW0gfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmluaXQga2luZCBsYXlvdXQgKGRpbSAtIDEpIH5mOihmdW4gaSAtPlxuICAgICAgICBzcmMue2lmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxfSkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0MzJfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0NjRfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxuXG5sZXQgYmlnYXJyYXkyID1cbiAgbGV0IG1vZHVsZSBEaW1zID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZGltMSA6IGludFxuICAgICAgOyBkaW0yIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSBhID0gQmlnYXJyYXkuQXJyYXkyLnsgZGltMSA9IGRpbTEgYTsgZGltMiA9IGRpbTIgYSB9XG4gIGVuZFxuICBpblxuICBsZXQgc2hyaW5rIGZpZWxkIHNyYyA9XG4gICAgbGV0IGRpbXMgPSBEaW1zLmNyZWF0ZSBzcmMgaW5cbiAgICBtYXRjaCBGaWVsZC5nZXQgZmllbGQgZGltcyB3aXRoXG4gICAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBfIC0+XG4gICAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5Mi5raW5kIHNyYyBpblxuICAgICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgc3JjIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgZGltcyB+ZjpJbnQucHJlZCBpblxuICAgICAgU2VxdWVuY2UuaW5pdCAoRmllbGQuZ2V0IGZpZWxkIGRpbXMpIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgICAgbGV0IHNraXAgaSA9IGlmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxIGluXG4gICAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gZGltMSBkaW0yIC0+XG4gICAgICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgeyBkaW0xOyBkaW0yIH0gfmY6c2tpcCBpblxuICAgICAgICAgIHNyYy57ZGltMSwgZGltMn0pKVxuICBpblxuICBmdW4gc3JjIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMSBzcmM7IHNocmluayBEaW1zLkZpZWxkcy5kaW0yIHNyYyBdXG47O1xuXG5sZXQgZmxvYXQzMl9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5sZXQgZmxvYXQ2NF9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAoU2VxdWVuY2Uuc2luZ2xldG9uIE5vbmUpXG4gICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6T3B0aW9uLnJldHVybiAoc2hyaW5rIHZhbHVlX3QgdmFsdWUpKSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBsaXN0X3QgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIHRhaWxcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGVsdF90IGhlYWQpIH5mOihmdW4gaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBsaXN0X3QgdGFpbCkgfmY6KGZ1biB0YWlsIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBzdHJpbmcgPSBtYXAgKGxpc3QgY2hhcikgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdCB+Zl9pbnZlcnNlOlN0cmluZy50b19saXN0XG5sZXQgYnl0ZXMgPSBtYXAgc3RyaW5nIH5mOkJ5dGVzLm9mX3N0cmluZyB+Zl9pbnZlcnNlOkJ5dGVzLnRvX3N0cmluZ1xubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdCB+Zl9pbnZlcnNlOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGUgfmZfaW52ZXJzZTpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWwgfmZfaW52ZXJzZTpMYXp5LmZvcmNlXG5cbmxldCBzZXhwID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzaHJpbmtlciAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAgICAgbGV0IHNocmlua19saXN0ID1cbiAgICAgICAgICBzaHJpbmsgKGxpc3Qgc2hyaW5rZXIpIGwgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gbCAtPiBTZXhwLkxpc3QgbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNocmlua190cmVlID0gU2VxdWVuY2Uub2ZfbGlzdCBsIGluXG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rX2xpc3Q7IHNocmlua190cmVlIF0pKVxuOztcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjpFaXRoZXIuZmlyc3RcbiAgICB8IFNlY29uZCBzbmQgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjpFaXRoZXIuc2Vjb25kKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwXG4gICAgKGVpdGhlciBva190IGVycl90KVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbiAgICB+Zl9pbnZlcnNlOihmdW5jdGlvblxuICAgICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgYWxpc3QgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9rZXlzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBhbGlzdCkgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrKVxuICAgIGluXG4gICAgbGV0IHNocmlua19rZXlzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrZXkgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGtleV90IGtleSkgfmY6KGZ1biBzbWFsbGVyX2tleSAtPlxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB+Y29tcGFyYXRvciB0cmVlIH5rZXk6c21hbGxlcl9rZXkgfmRhdGFcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBgT2sgdHJlZSAtPiBTb21lIHRyZWVcbiAgICAgICAgICAgICB8IGBEdXBsaWNhdGUgLT4gTm9uZSkpKVxuICAgIGluXG4gICAgbGV0IHNocmlua19kYXRhID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGRhdGFfdCBkYXRhKSB+ZjooZnVuIHNtYWxsZXJfZGF0YSAtPlxuICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuc2V0IH5jb21wYXJhdG9yIHRyZWUgfmtleSB+ZGF0YTpzbWFsbGVyX2RhdGEpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9rZXlzOyBzaHJpbmtfa2V5czsgc2hyaW5rX2RhdGEgXSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBsaXN0ID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9lbHRzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBsaXN0KSB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdClcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBlbHRfdCBlbHQpIH5mOihmdW4gc21hbGxlcl9lbHQgLT5cbiAgICAgICAgICAgICBtYXRjaCBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLm1lbSB+Y29tcGFyYXRvciB0cmVlIHNtYWxsZXJfZWx0IHdpdGhcbiAgICAgICAgICAgICB8IHRydWUgLT4gTm9uZVxuICAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgIFNvbWUgKFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuYWRkIHRyZWUgfmNvbXBhcmF0b3Igc21hbGxlcl9lbHQpKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3BfZWx0czsgc2hyaW5rX2VsdHMgXSlcbjs7XG5cbmxldCBtYXBfdCBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biBtYXBfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbWFwX3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X3QgZGF0YV90KVxuICAgICAgICB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBtYXBfdClcbjs7XG5cbmxldCBzZXRfdCBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHNldF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTZXQuY29tcGFyYXRvciBzZXRfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAoc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdClcbiAgICAgICAgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgc2V0X3QpXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBUZXN0X2ludGZcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgU2VlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vbmRldGVybWluaXN0aWNcbiAgICAgIHwgRGV0ZXJtaW5pc3RpYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBtb2R1bGUgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHNlcXVlbmNlID1cbiAgICAgIGxldCBwcmVmaXgsIHN1ZmZpeCA9IFNlcXVlbmNlLnNwbGl0X24gc2VxdWVuY2UgMTAwIGluXG4gICAgICBsZXQgcHJlZml4ID0gTGlzdC5tYXAgcHJlZml4IH5mOnNleHBfb2ZfZWx0IGluXG4gICAgICBsZXQgc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UuaXNfZW1wdHkgc3VmZml4IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+IFtdXG4gICAgICAgIHwgZmFsc2UgLT4gWyBbJW1lc3NhZ2UgXCIuLi5cIl0gXVxuICAgICAgaW5cbiAgICAgIFNleHAuTGlzdCAocHJlZml4IEAgc3VmZml4KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBzZWVkIDogU2VlZC50XG4gICAgOyB0ZXN0X2NvdW50IDogaW50XG4gICAgOyBzaHJpbmtfY291bnQgOiBpbnRcbiAgICA7IHNpemVzIDogaW50IFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWcgOiBDb25maWcudCA9XG4gIHsgc2VlZCA9IERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcbiAgOyB0ZXN0X2NvdW50ID0gMTBfMDAwXG4gIDsgc2hyaW5rX2NvdW50ID0gMTBfMDAwXG4gIDsgc2l6ZXMgPSBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIH5zdGFydDpgaW5jbHVzaXZlIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gIH1cbjs7XG5cbmxldCBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnID1cbiAgbWF0Y2ggQ29uZmlnLnNlZWQgY29uZmlnIHdpdGhcbiAgfCBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2UgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICB8IERldGVybWluaXN0aWMgc3RyaW5nIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoU3RyaW5nLmhhc2ggc3RyaW5nKVxuOztcblxubGV0IG9uZV9zaXplX3Blcl90ZXN0IH4oY29uZmlnIDogQ29uZmlnLnQpID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0Oihjb25maWcuc2l6ZXMsIDApIH5mOihmdW4gKHNpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMpIC0+XG4gICAgbWF0Y2ggbnVtYmVyX29mX3NpemVfdmFsdWVzID49IGNvbmZpZy50ZXN0X2NvdW50IHdpdGhcbiAgICB8IHRydWUgLT4gTm9uZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IHNpemVzIHdpdGhcbiAgICAgICB8IFNvbWUgKHNpemUsIHJlbWFpbmluZ19zaXplcykgLT5cbiAgICAgICAgIFNvbWUgKHNpemUsIChyZW1haW5pbmdfc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcyArIDEpKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogaW5zdWZmaWNpZW50IHNpemUgdmFsdWVzIGZvciB0ZXN0IGNvdW50XCJcbiAgICAgICAgICAgICAgIH50ZXN0X2NvdW50Oihjb25maWcudGVzdF9jb3VudCA6IGludClcbiAgICAgICAgICAgICAgIChudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgOiBpbnQpXSkpXG47O1xuXG5sZXQgc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yID1cbiAgbGV0IHJlYyBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3IgPVxuICAgIG1hdGNoIHNocmlua19jb3VudCB3aXRoXG4gICAgfCAwIC0+IGlucHV0LCBlcnJvclxuICAgIHwgXyAtPlxuICAgICAgbGV0IHNocmlua19jb3VudCA9IHNocmlua19jb3VudCAtIDEgaW5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IGFsdGVybmF0ZXMgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBpbnB1dCwgZXJyb3JcbiAgICAgICB8IFNvbWUgKGFsdGVybmF0ZSwgYWx0ZXJuYXRlcykgLT5cbiAgICAgICAgIChtYXRjaCBmIGFsdGVybmF0ZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3JcbiAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBhbHRlcm5hdGUgaW5cbiAgICAgICAgICAgIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBhbHRlcm5hdGUgZXJyb3IpKVxuICBpblxuICBsZXQgc2hyaW5rX2NvdW50ID0gQ29uZmlnLnNocmlua19jb3VudCBjb25maWcgaW5cbiAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgaW5wdXQgaW5cbiAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG47O1xuXG5sZXQgaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciA9XG4gIGxldCByYW5kb20gPSBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnIGluXG4gIFNlcXVlbmNlLmFwcGVuZFxuICAgIChTZXF1ZW5jZS5vZl9saXN0IGV4YW1wbGVzKVxuICAgIChvbmVfc2l6ZV9wZXJfdGVzdCB+Y29uZmlnXG4gICAgIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIHNpemUgLT4gR2VuZXJhdG9yLmdlbmVyYXRlIGdlbmVyYXRvciB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbmxldCB3aXRoX3NhbXBsZSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIGdlbmVyYXRvciA9XG4gIGxldCBzZXF1ZW5jZSA9IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgaW5cbiAgZiBzZXF1ZW5jZVxuOztcblxubGV0IHJlc3VsdCAodHlwZSBhKSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIG0gPVxuICBsZXQgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID0gbSBpblxuICB3aXRoX3NhbXBsZSBNLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb25maWcgfmV4YW1wbGVzIH5mOihmdW4gc2VxdWVuY2UgLT5cbiAgICBtYXRjaFxuICAgICAgU2VxdWVuY2UuZm9sZF9yZXN1bHQgc2VxdWVuY2UgfmluaXQ6KCkgfmY6KGZ1biAoKSBpbnB1dCAtPlxuICAgICAgICBtYXRjaCBmIGlucHV0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChpbnB1dCwgZXJyb3IpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgICAgbGV0IHNocmlua2VyID0gTS5xdWlja2NoZWNrX3Nocmlua2VyIGluXG4gICAgICBsZXQgaW5wdXQsIGVycm9yID0gc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yIGluXG4gICAgICBFcnJvciAoaW5wdXQsIGVycm9yKSlcbjs7XG5cbmxldCBydW4gKHR5cGUgYSkgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIG1hdGNoIHJlc3VsdCB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0pIHdpdGhcbiAgfCBPayAoKSAtPiBPayAoKVxuICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiB0ZXN0IGZhaWxlZFwiIChpbnB1dCA6IE0udCkgKGVycm9yIDogRXJyb3IudCldXG47O1xuXG5sZXQgd2l0aF9zYW1wbGVfZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciA9XG4gIGxldCBmIHggPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGYgeCkgaW5cbiAgd2l0aF9zYW1wbGUgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcblxubGV0IHJ1bl9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aCB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIHJ1biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSB8PiBPcl9lcnJvci5va19leG5cbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIE9ic2VydmVyMFxuXG5sZXQgdW5tYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSB0IChmIHgpIH5zaXplIH5oYXNoKVxubGV0IG9mX2hhc2hfZm9sZCBmID0gY3JlYXRlIChmdW4geCB+c2l6ZTpfIH5oYXNoIC0+IGYgaGFzaCB4KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmb3JjZSBsYXp5X3QpIHggfnNpemUgfmhhc2gpXG5cbmxldCBmaXhlZF9wb2ludCB3cmFwID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5ICh3cmFwIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgdW5pdCA9IG9wYXF1ZVxubGV0IGJvb2wgPSBvZl9oYXNoX2ZvbGQgQm9vbC5oYXNoX2ZvbGRfdFxubGV0IGNoYXIgPSBvZl9oYXNoX2ZvbGQgQ2hhci5oYXNoX2ZvbGRfdFxubGV0IGludCA9IG9mX2hhc2hfZm9sZCBJbnQuaGFzaF9mb2xkX3RcbmxldCBpbnQzMiA9IG9mX2hhc2hfZm9sZCBJbnQzMi5oYXNoX2ZvbGRfdFxubGV0IGludDYzID0gb2ZfaGFzaF9mb2xkIEludDYzLmhhc2hfZm9sZF90XG5sZXQgaW50NjQgPSBvZl9oYXNoX2ZvbGQgSW50NjQuaGFzaF9mb2xkX3RcbmxldCBuYXRpdmVpbnQgPSBvZl9oYXNoX2ZvbGQgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5sZXQgZmxvYXQgPSBvZl9oYXNoX2ZvbGQgRmxvYXQuaGFzaF9mb2xkX3RcbmxldCBzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgU3RyaW5nLmhhc2hfZm9sZF90XG5sZXQgc2V4cCA9IG9mX2hhc2hfZm9sZCBTZXhwLmhhc2hfZm9sZF90XG5sZXQgYmlnc3RyaW5nID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2NoYXIpXG5sZXQgZmxvYXQzMl92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQzMl9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgYnl0ZXMgPSB1bm1hcCBzdHJpbmcgfmY6Qnl0ZXMudG9fc3RyaW5nXG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgfnNpemUgfmhhc2ggLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSlcbiAgICB8IFNlY29uZCBzbmQgLT4gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAyKSlcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIHVubWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoIGluXG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaCBpblxuICAgIGhhc2gpXG47O1xuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9wYXF1ZSB2YWx1ZV90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRmlyc3QgKClcbiAgICB8IFNvbWUgdmFsdWUgLT4gU2Vjb25kIHZhbHVlKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBsaXN0IH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgIEdlbmVyYXRvci5zaXplcyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoICgpXG4gICAgICB8PiBHZW5lcmF0b3IuZ2VuZXJhdGUgfnNpemUgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkMl9leG4gbGlzdCBzaXplcyB+aW5pdDooaGFzaF9mb2xkX2ludCBoYXNoIDApIH5mOihmdW4gaGFzaCBlbHQgc2l6ZSAtPlxuICAgICAgb2JzZXJ2ZSBlbHRfdCBlbHQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKSkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IHVubWFwIChsaXN0IHQpIH5mOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IHVubWFwIHQgfmY6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSB1bm1hcCB0IH5mOkxhenkuZm9yY2VcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biBmIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICAoKiBFbXBpcmljYWxseSwgZG91YmxpbmcgdGhlIHNpemUgd2hlbiBnZW5lcmF0aW5nIHRoZSBsaXN0IG9mIGlucHV0cyBnaXZlcyB1cyBtdWNoXG4gICAgICAgICBiZXR0ZXIgY292ZXJhZ2Ugb2YgdGhlIHNwYWNlIG9mIGZ1bmN0aW9ucy4gKilcbiAgICAgIEdlbmVyYXRvci5nZW5lcmF0ZSAoR2VuZXJhdG9yLnNpemVzICgpKSB+c2l6ZTooc2l6ZSAqIDIpIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZCBzaXplcyB+aW5pdDpoYXNoIH5mOihmdW4gaGFzaCBzaXplIC0+XG4gICAgICBsZXQgeCA9IEdlbmVyYXRvci5nZW5lcmF0ZSBkb20gfnNpemUgfnJhbmRvbSBpblxuICAgICAgb2JzZXJ2ZSBybmcgKGYgeCkgfnNpemUgfmhhc2gpKVxuOztcblxubGV0IG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobGlzdCAoYm90aCBrZXlfb2JzIGRhdGFfb2JzKSkgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdFxuOztcblxubGV0IHNldF90cmVlIGVsdF9vYnMgPSB1bm1hcCAobGlzdCBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3RcblxubGV0IG1hcF90IGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobWFwX3RyZWUga2V5X29icyBkYXRhX29icykgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuOztcblxubGV0IHNldF90IGVsdF9vYnMgPSB1bm1hcCAoc2V0X3RyZWUgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuIiwibW9kdWxlIEdlbmVyYXRvciA9IEdlbmVyYXRvclxubW9kdWxlIE9ic2VydmVyID0gT2JzZXJ2ZXJcbm1vZHVsZSBTaHJpbmtlciA9IFNocmlua2VyXG5tb2R1bGUgVGVzdCA9IFRlc3Rcbm1vZHVsZSBFeHBvcnQgPSBFeHBvcnRcbmluY2x1ZGUgRXhwb3J0XG5cbigqKi8qKilcblxuKCpfIFRoaXMgbW9kdWxlIGlzIGV4cG9zZWQgb25seSB0byBtYWtlIG9jYW1sZG9jIG91dHB1dCBtb3JlIHJlYWRhYmxlLiAqKVxubW9kdWxlIFdpdGhfYmFzaWNfdHlwZXMgPSBXaXRoX2Jhc2ljX3R5cGVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBCaWdhcnJheV9oZWxwZXJzID0gQmlnYXJyYXlfaGVscGVyc1xuZW5kXG4iLCJtb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgdHlwZXJlcF1cblxuICB2YWwgc2lnbmVkIDogYm9vbFxuICB2YWwgbnVtX2JpdHMgOiBpbnRcbiAgdmFsIG51bV9ieXRlcyA6IGludFxuICB2YWwgemVybyA6IHRcbiAgdmFsIG1pbl92YWx1ZSA6IHRcbiAgdmFsIG1heF92YWx1ZSA6IHRcblxuICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBPIDogc2lnXG4gICAgaW5jbHVkZSBCYXNlLkNvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICAgIG1vZHVsZSBXcmFwIDogc2lnXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICAgIGVuZFxuICBlbmRcblxuZW5kXG5cbmxldCByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgQmFzZS5yYWlzZV9zIFslbWVzc2FnZSAobW9kX25hbWUgXiBcIjogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkXCIpIH5fOih0b19zdHJpbmcgeCldXG5bQEBjb2xkXVxuOztcblxubGV0IHRydW5jX3Vuc2lnbmVkIDogdHlwZSBhIGIuIGNvbnY6KGEgLT4gYikgLT4gbG9nYW5kOihhIC0+IGEgLT4gYSkgLT4gbWFzazphIC0+IGEgLT4gYiA9XG4gIGZ1biB+Y29udiB+bG9nYW5kIH5tYXNrIHggLT4gY29udiAobG9nYW5kIHggbWFzaylcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZXhuX3Vuc2lnbmVkXG4gIDogdHlwZSBhIGIuXG4gICAgY29udjooYSAtPiBiKVxuICAgIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpXG4gICAgLT4gbWFzazphXG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGJcbiAgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4gY29udiB5IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCB0cnVuY19zaWduZWRcbiAgOiB0eXBlIGEuXG4gICAgc2hpZnRfbGVmdDooYSAtPiBpbnQgLT4gYSkgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0OmludCAtPiBhIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IC0+IHNoaWZ0X3JpZ2h0IChzaGlmdF9sZWZ0IHggc2hpZnQpIHNoaWZ0XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl9zaWduZWRcbiAgOiB0eXBlIGEuXG4gICAgc2hpZnRfbGVmdDooYSAtPiBpbnQgLT4gYSlcbiAgICAtPiBzaGlmdF9yaWdodDooYSAtPiBpbnQgLT4gYSlcbiAgICAtPiBzaGlmdDppbnRcbiAgICAtPiBlcXVhbDooYSAtPiBhIC0+IGJvb2wpXG4gICAgLT4gbW9kX25hbWU6c3RyaW5nXG4gICAgLT4gdG9fc3RyaW5nOihhIC0+IHN0cmluZylcbiAgICAtPiBhXG4gICAgLT4gYVxuICA9XG4gIGZ1biB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4IC0+XG4gIGxldCB5ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBpblxuICBpZiBlcXVhbCB4IHkgdGhlbiB5IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuOztcblxubGV0IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggPVxuICBpZiBncmVhdGVyX2VxdWFsIHggemVybyB0aGVuIHggZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IG9mX3NleHBfZXJyb3Igd2hhdCBzZXhwID1cbiAgcmFpc2UgKFNleHBsaWIwLlNleHBfY29udi5PZl9zZXhwX2Vycm9yIChGYWlsdXJlIHdoYXQsIHNleHApKVxuOztcblxubW9kdWxlIFJlcHIzMiA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZGxpYi5TeXMuSW1tZWRpYXRlNjQuTWFrZSAoQmFzZS5JbnQpIChCYXNlLkludDMyKVxuXG4gIGxldCB0b19pbnQzMiAoeCA6IHQpIDogQmFzZS5JbnQzMi50ID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgfCBOb25faW1tZWRpYXRlIC0+IHhcbiAgOztcblxuICAoKiBzaWduLWV4dGVuZGluZyBjb252ZXJzaW9uIHRvIGludDY0ICopXG4gIGxldCB0b19pbnQ2NCAoeCA6IHQpIDogQmFzZS5JbnQ2NC50ID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludCB4XG4gICAgfCBOb25faW1tZWRpYXRlIC0+IEJhc2UuSW50NjQub2ZfaW50MzIgeFxuICA7O1xuZW5kXG5cbigqIEludGVybmFsIHJlcHJlc2VudGF0aW9uIHR5cGVzICopXG50eXBlIGludDggPSBpbnRcbnR5cGUgdWludDggPSBpbnRcbnR5cGUgaW50MTYgPSBpbnRcbnR5cGUgdWludDE2ID0gaW50XG50eXBlIGludDMyID0gUmVwcjMyLnRcbnR5cGUgdWludDMyID0gUmVwcjMyLnRcbnR5cGUgaW50NjMgPSBCYXNlLkludDYzLnRcbnR5cGUgdWludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIGludDY0ID0gQmFzZS5JbnQ2NC50XG50eXBlIHVpbnQ2NCA9IEJhc2UuSW50NjQudFxuXG5tb2R1bGUgSW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0xMjhcbiAgbGV0IG1heF92YWx1ZSA9IDEyN1xuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA4XG4gIGxldCBudW1fYnl0ZXMgPSAxXG4gIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gIGxldCBtb2RfbmFtZSA9IFwiSW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9pbnQzMl90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50MzIudG9faW50X3RydW5jIChSZXByMzIudG9faW50MzIgeCkpXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF9leG4gKFJlcHIzMi50b19pbnQzMiB4KSkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDhfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDhfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ4ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gMjU1XG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA4XG4gIGxldCBudW1fYnl0ZXMgPSAxXG4gIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgbGV0IG1hc2sgPSAweEZGXG4gIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ4XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG42NCB4ID1cbiAgICBleG5fdW5zaWduZWRcbiAgICAgIH5jb252XG4gICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICB+bWFzazptYXNrNjRcbiAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICB+bW9kX25hbWVcbiAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQxNl90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDhfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEludDE2ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gLTMyNzY4XG4gIGxldCBtYXhfdmFsdWUgPSAzMjc2N1xuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSAxNlxuICBsZXQgbnVtX2J5dGVzID0gMlxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDE2XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDY1NTM1XG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSAxNlxuICBsZXQgbnVtX2J5dGVzID0gMlxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRkZGXG4gIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX3RydW5jIHggPSB0cnVuYzY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4bjY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDE2X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhY2tlbmQzMl9TID0gc2lnXG4gIG1vZHVsZSBTaWduZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBSZXByMzIudFxuXG4gICAgaW5jbHVkZSBUIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9iYXNlX2ludDMyIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMiA6IHQgLT4gQmFzZS5JbnQzMi50XG5cbiAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDggOiBpbnQ4IC0+IHRcbiAgICB2YWwgb2ZfaW50MTYgOiBpbnQxNiAtPiB0XG4gICAgdmFsIG9mX2ludDYzX3RydW5jIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M19leG4gOiBpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogaW50NjQgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF9leG4gOiBpbnQ2NCAtPiB0XG5cbiAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl91aW50MzJfd3JhcCA6IHVpbnQzMiAtPiB0XG4gICAgdmFsIG9mX3VpbnQzMl9leG4gOiB1aW50MzIgLT4gdFxuICBlbmRcblxuICBtb2R1bGUgVW5zaWduZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBSZXByMzIudFxuXG4gICAgaW5jbHVkZSBUIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9iYXNlX2ludDMyX3RydW5jIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl9leG4gOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDMyX3RydW5jIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl9leG4gOiB0IC0+IEJhc2UuSW50MzIudFxuICAgIHZhbCBvZl9iYXNlX2ludDY0X3RydW5jIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF9leG4gOiBCYXNlLkludDY0LnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDY0IDogdCAtPiBCYXNlLkludDY0LnRcbiAgICB2YWwgdG9fYmFzZV9pbnRfZXhuIDogdCAtPiBCYXNlLkludC50XG5cbiAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQ4IDogdWludDggLT4gdFxuICAgIHZhbCBvZl91aW50MTYgOiB1aW50MTYgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfdHJ1bmMgOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfZXhuIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X3RydW5jIDogdWludDY0IC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X2V4biA6IHVpbnQ2NCAtPiB0XG5cbiAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQzMl93cmFwIDogaW50MzIgLT4gdFxuICAgIHZhbCBvZl9pbnQzMl9leG4gOiBpbnQzMiAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCYWNrZW5kMzIgOiBzaWdcbiAgdmFsIGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKVxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBJID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1pbl92YWx1ZVxuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWF4X3ZhbHVlXG4gICAgICBsZXQgc2lnbmVkID0gdHJ1ZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgICAgIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gICAgICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIkludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9ICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDMyX3dyYXAgeCA9IHRydW5jIHhcbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggPSBleG4geFxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDQyOTQ5NjcyOTVMXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICAgICAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gICAgICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gICAgICBsZXQgbWFzayA9IEJhc2UuSW50NjQudG9faW50X3RydW5jIDB4RkZGRkZGRkZMXG4gICAgICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICAgICAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgICAgIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgZXhuNjQgeCA9XG4gICAgICAgIGV4bl91bnNpZ25lZFxuICAgICAgICAgIH5jb252XG4gICAgICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICAgICAgfm1vZF9uYW1lXG4gICAgICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgICAgIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPVxuICAgICAgICBCYXNlLkludDY0LnRvX2ludF90cnVuYyAobG9nYW5kNjQgKEJhc2UuSW50NjQub2ZfaW50MzIgeCkgbWFzazY0KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IEJhc2UuSW50LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludC4oIDw9ICkgeCAoQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgMjE0NzQ4MzY0N0wpXG4gICAgICAgIHRoZW4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9ICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBCYXNlLkludDYzLnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggOiB0ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQzMi4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQzMi4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludDMyLiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50MzIuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50MzIuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBCYXNlLkludDMyLiggLyApXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgY29tcGFyZSB4IHkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfY29tcGFyZSB4IHkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gLTFsXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50MzIub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMEwgJiYgQmFzZS5JbnQ2NC4oIDw9ICkgeCA0Mjk0OTY3Mjk1TFxuICAgICAgICB0aGVuIEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQzMi50b19pbnQ2NCB4KSAweEZGRkZGRkZGTFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgICAgfD4gQmFzZS5JbnQzMi50b19pbnRfZXhuXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjMudG9faW50NjQgeClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4gKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVsdVwiIHgpXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQzMi50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgICAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlbHVcIiBGdW4uaWQgd2l0aFxuICAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQzMi50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgICAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICAgICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgICAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50MzIuKCArIClcbiAgICAgICAgICBsZXQgKCAtICkgPSBCYXNlLkludDMyLiggLSApXG4gICAgICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQzMi4oICogKVxuICAgICAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQzMi51bnNpZ25lZF9kaXZcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBCYWNrZW5kMzJfUykgPVxuICAgIG1hdGNoIFJlcHIzMi5yZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIEkgOiBCYWNrZW5kMzJfUylcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gKG1vZHVsZSBOIDogQmFja2VuZDMyX1MpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludDMyID0gc3RydWN0XG4gIG1vZHVsZSBNID0gKHZhbCBCYWNrZW5kMzIuaW1wbCA6IEJhY2tlbmQzMl9TKVxuICBpbmNsdWRlIE0uU2lnbmVkXG5lbmRcblxubW9kdWxlIFVpbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlVuc2lnbmVkXG5lbmRcblxubW9kdWxlIEludDYzID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBpbW1lZGlhdGU2NF0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDYzXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDYzXG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDYzLm1pbl92YWx1ZVxuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5tYXhfdmFsdWVcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ2M1wiXG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2My4oID49IClcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjMudG9fc3RyaW5nXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDMyIHggPSBCYXNlLkludDYzLm9mX2ludDMyIChJbnQzMi50b19iYXNlX2ludDMyIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjMub2ZfaW50NjRfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjMuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjMuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2My4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjMuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDYzLiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjMuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2My4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2My4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2My4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2My4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDYzID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgICgqIHggYW5kIHkgYXJlIHNpZ24tZXh0ZW5kZWQsIHdoaWNoIHByZXNlcnZlcyB0aGUgaGlnaCBiaXQgKilcbiAgICBTdGRsaWIuSW50NjQudW5zaWduZWRfY29tcGFyZSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAoQmFzZS5JbnQ2My50b19pbnQ2NCB5KVxuICA7O1xuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA2M1xuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDYzXCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjMudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCBleG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID1cbiAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMXG4gICAgdGhlbiBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHhcbiAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAweDdGRkZGRkZGRkZGRkZGRkZMXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIChVaW50MzIudG9fYmFzZV9pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biAoeCA6IHVpbnQ2NCkgOiB0ID1cbiAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMXG4gICAgdGhlbiBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHhcbiAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50NjNfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlTHVcIiAodG9fYmFzZV9pbnQ2NCB4KSlcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBvZl9iYXNlX2ludDY0X2V4biB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcblxuICAgICAgbGV0ICggLyApIHggeSA9XG4gICAgICAgIG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjQuKCAvICkgKHRvX2Jhc2VfaW50NjQgeCkgKHRvX2Jhc2VfaW50NjQgeSkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjQubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjRcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjMgeCA9IEJhc2UuSW50NjMudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2NC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2NC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDY0LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2NC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2NC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDY0LiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IGNvbXBhcmUgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfY29tcGFyZVxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gLTFMXG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDY0XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCBleG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyIHggPSBVaW50MzIudG9fYmFzZV9pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2MyAoeCA6IHVpbnQ2MykgOiBpbnQ2NCA9XG4gICAgQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAweDdGRkZGRkZGRkZGRkZGRkZMXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgeClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBGdW4uaWQgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfZGl2XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgR2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDhcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcbiAgdmFsIGdldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcbiAgdmFsIGdldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG4gIHZhbCBnZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG4gIHZhbCBnZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuICB2YWwgZ2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuICB2YWwgZ2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4IC0+IHVuaXRcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcbiAgdmFsIHNldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbiAgdmFsIHNldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIGdldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnRcbiAgdmFsIGdldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50IC0+IHVuaXRcbmVuZFxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBDYW1sLkludDMyLnQgLT4gQ2FtbC5JbnQzMi50ID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCA9IFwiJWJzd2FwX2ludDY0XCJcblxubW9kdWxlIE1ha2VfZ2V0IChGIDogR2V0X2Z1bmN0aW9ucykgOiBHZXQgd2l0aCB0eXBlIHQgOj0gRi50ID0gc3RydWN0XG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDggdCB+cG9zID0gSW50OC5vZl9iYXNlX2ludF90cnVuYyAoRi5nZXRfdWludDggdCBwb3MpXG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50OCB0IH5wb3MgPSBVaW50OC5vZl9iYXNlX2ludF90cnVuYyAoRi5nZXRfdWludDggdCBwb3MpXG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDE2X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBJbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQxNl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuICA7O1xuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgVWludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQxNl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgVWludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50MzJfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBJbnQzMi5vZl9iYXNlX2ludDMyIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcbiAgOztcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MzJfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgVWludDMyLm9mX2Jhc2VfaW50MzJfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcbiAgOztcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50NjRfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHhcbiAgOztcblxuICBsZXQgZ2V0X2ludDY0X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4XG4gIDs7XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIFVpbnQ2NC5vZl9iYXNlX2ludDY0X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG4gIDs7XG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBNYWtlX3NldCAoRiA6IFNldF9mdW5jdGlvbnMpIDogU2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ4IHQgfnBvcyB4ID0gRi5zZXRfdWludDggdCBwb3MgeFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDggdCB+cG9zIHggPSBzZXRfdWludDggdCB+cG9zIChVaW50OC5vZl9pbnQ4X3dyYXAgeClcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50MTZfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHggaW5cbiAgICBGLnNldF91aW50MTZfbmUgdCBwb3MgeFxuICA7O1xuXG4gIGxldCBzZXRfdWludDE2X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MTZfbGUgdCB+cG9zIHggPSBzZXRfdWludDE2X2xlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcbiAgbGV0IHNldF9pbnQxNl9iZSB0IH5wb3MgeCA9IHNldF91aW50MTZfYmUgdCB+cG9zIChVaW50MTYub2ZfaW50MTZfd3JhcCB4KVxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQzMl9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBJbnQzMi50b19iYXNlX2ludDMyIHggaW5cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4IGluXG4gICAgRi5zZXRfaW50MzJfbmUgdCBwb3MgeFxuICA7O1xuXG4gIGxldCBzZXRfaW50MzJfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50MzJfbGUgdCB+cG9zIHggPSBzZXRfaW50MzJfbGUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuICBsZXQgc2V0X3VpbnQzMl9iZSB0IH5wb3MgeCA9IHNldF9pbnQzMl9iZSB0IH5wb3MgKEludDMyLm9mX3VpbnQzMl93cmFwIHgpXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDY0X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gIGxldCBzZXRfaW50NjRfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHggaW5cbiAgICBGLnNldF9pbnQ2NF9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDY0X2xlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2xlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbiAgbGV0IHNldF91aW50NjRfYmUgdCB+cG9zIHggPSBzZXRfaW50NjRfYmUgdCB+cG9zIChJbnQ2NC5vZl91aW50NjRfd3JhcCB4KVxuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgQnl0ZXMwVW5zYWZlID0gc3RydWN0XG4gIHR5cGUgdCA9IEJ5dGVzLnRcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogQnl0ZXMudCAtPiBpbnQgLT4gQ2FtbC5JbnQzMi50ID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHNldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG4gIGV4dGVybmFsIHNldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogQnl0ZXMudCAtPiBpbnQgLT4gQ2FtbC5JbnQzMi50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG4gIGV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50NjQudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlcylcbiAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzMFVuc2FmZSlcbiAgICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlczBVbnNhZmUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdHJpbmcwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gQ2FtbC5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcwVW5zYWZlID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0cmluZy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNnVcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gQ2FtbC5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwVW5zYWZlKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgQmlnc3RyaW5nMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgICggY2hhclxuICAgICwgU3RkbGliLkJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0XG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuY19sYXlvdXQgKVxuICAgICAgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbSA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuZW5kXG5cbmluY2x1ZGUgQmlnc3RyaW5nMFxuXG5leHRlcm5hbCBhdXhfY3JlYXRlIDogbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzOmludCAtPiBzaXplOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfYWxsb2NcIlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIE9uZSBuZWVkcyB0byB1c2UgW0NhbWwuU3lzLndvcmRfc2l6ZV0gc28gdGhhdCBpdHMgdmFsdWUgaXMga25vd24gYXQgY29tcGlsZS10aW1lLiAqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gQ2FtbC5TeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBDYW1sLlN5cy5iaWdfZW5kaWFuXG5sZXQgbm90X29uXzMyYml0ID0gQ2FtbC5TeXMud29yZF9zaXplID4gMzJcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24udmFsdWUgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5kZWZhdWx0OigtMSlcbiAgaW5cbiAgKCogVGhpcyBjaGVjayBpcyBpbXBvcnRhbnQgYmVjYXVzZSBbYXV4X2NyZWF0ZSB+c2l6ZTooLTEpXSByYWlzZXMgW091dF9vZl9tZW1vcnldLCB3aGljaFxuICAgICBjb3VsZCBiZSBjb25mdXNpbmcgZHVyaW5nIGRlYnVnZ2luZy4gKilcbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcImNyZWF0ZTogc2l6ZSA9ICVkIDwgMFwiIHNpemUpO1xuICBhdXhfY3JlYXRlIH5tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfnNpemVcbjs7XG5cbmxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbmV4dGVybmFsIGlzX21tYXBwZWQgOiB0IC0+IGJvb2wgPSBcImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcIiBbQEBub2FsbG9jXVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB0LntpfSA8LSBmIGlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IGNoZWNrX2FyZ3MgfmxvYyB+cG9zIH5sZW4gKGJzdHIgOiB0KSA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IHBvcyA8IDBcIik7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IGxlbiA8IDBcIik7XG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gICgqIEJlIGNhcmVmdWwgd2l0aCBvdmVyZmxvdyEgIFdlIGNvdWxkIGhhdmUgYm9nb25zIGxpa2UgW3BvcyA9IEludC5tYXhfdmFsdWVdIG9yIFtsZW4gPVxuICAgICBJbnQubWF4X3ZhbHVlXSBwYXNzZWQgYnkgdGhlIHVzZXIuICopXG4gIGlmIGJzdHJfbGVuIC0gcG9zIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaWdzdHJpbmcuJXM6IGxlbmd0aChic3RyKSA8IHBvcyArIGxlblwiIGxvYylcbjs7XG5cbmxldCBnZXRfb3B0X2xlbiBic3RyIH5wb3MgPSBmdW5jdGlvblxuICB8IFNvbWUgbGVuIC0+IGxlblxuICB8IE5vbmUgLT4gbGVuZ3RoIGJzdHIgLSBwb3Ncbjs7XG5cbigqIEJsaXR0aW5nICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0XG4gIDogIHNyYzp0XG4gIC0+IHNyY19wb3M6aW50XG4gIC0+IGRzdDp0XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmlnc3RyaW5nX2JsaXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKiBFeHBvc2luZyB0aGUgZXh0ZXJuYWwgdmVyc2lvbiBvZiBnZXQvc2V0IHN1cHBvcnRzIGJldHRlciBpbmxpbmluZy4gKilcbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuXG5tb2R1bGUgQmlnc3RyaW5nX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5lbmRcblxubW9kdWxlIEJ5dGVzX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5lbmRcblxuaW5jbHVkZSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbm1vZHVsZSBGcm9tX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJ5dGVzX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzpieXRlc1xuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6dFxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQmlnc3RyaW5nX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzp0XG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDpieXRlc1xuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQnl0ZXNfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBGcm9tX3N0cmluZyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6c3RyaW5nXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0XG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgVG9fYnl0ZXNcbiAgaW5jbHVkZSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChCaWdzdHJpbmcwKSAoVG9fYnl0ZXMpXG5lbmRcblxubGV0IG9mX3N0cmluZyA9IEZyb21fc3RyaW5nLnN1Ym9cbmxldCBvZl9ieXRlcyA9IEZyb21fYnl0ZXMuc3Vib1xubGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy5zdWJvXG5sZXQgdG9fYnl0ZXMgPSBUb19ieXRlcy5zdWJvXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG5sZXQgdF9vZl9zZXhwIDogU2V4cC50IC0+IHQgPSBmdW5jdGlvblxuICB8IEF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIFNleHBsaWIwLlNleHBfY29udi5vZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNvcHkgdCA6IHQgPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbmxldCBjb25jYXQgPVxuICBsZXQgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgbGV0IHNyY19wb3MgPSAwIGluXG4gICAgbGV0IGRzdF9wb3MgPSAhZHN0X3Bvc19yZWYgaW5cbiAgICBibGl0IH5kc3QgfmRzdF9wb3MgfnNyYyB+c3JjX3BvcyB+bGVuO1xuICAgIGRzdF9wb3NfcmVmIDo9IGRzdF9wb3MgKyBsZW5cbiAgaW5cbiAgZnVuID9zZXAgbGlzdCAtPlxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gY3JlYXRlIDBcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IGhlYWRfbGVuID0gbGVuZ3RoIGhlYWQgaW5cbiAgICAgIGxldCBzZXBfbGVuID0gT3B0aW9uLnZhbHVlX21hcCBzZXAgfmY6bGVuZ3RoIH5kZWZhdWx0OjAgaW5cbiAgICAgIGxldCB0YWlsX2NvdW50ID0gTGlzdC5sZW5ndGggdGFpbCBpblxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGhlYWRfbGVuICsgKHNlcF9sZW4gKiB0YWlsX2NvdW50KSArIExpc3Quc3VtIChtb2R1bGUgSW50KSB0YWlsIH5mOmxlbmd0aFxuICAgICAgaW5cbiAgICAgIGxldCBkc3QgPSBjcmVhdGUgbGVuIGluXG4gICAgICBsZXQgZHN0X3Bvc19yZWYgPSByZWYgMCBpblxuICAgICAgYXBwZW5kIH5zcmM6aGVhZCB+ZHN0IH5kc3RfcG9zX3JlZjtcbiAgICAgIExpc3QuaXRlciB0YWlsIH5mOihmdW4gc3JjIC0+XG4gICAgICAgIChtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgc2VwIC0+IGFwcGVuZCB+c3JjOnNlcCB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICAgIGFwcGVuZCB+c3JjIH5kc3QgfmRzdF9wb3NfcmVmKTtcbiAgICAgIGFzc2VydCAoIWRzdF9wb3NfcmVmID0gbGVuKTtcbiAgICAgIGRzdFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX21lbXNldCA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiYmlnc3RyaW5nX21lbXNldF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1zZXQgdCB+cG9zIH5sZW4gYyA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KTtcbiAgdW5zYWZlX21lbXNldCB0IH5wb3MgfmxlbiBjXG47O1xuXG4oKiBDb21wYXJpc29uICopXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiB0XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcCB0MSB+cG9zMSB0MiB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMiB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0Mik7XG4gIHVuc2FmZV9tZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9ieXRlc1xuICA6ICB0XG4gIC0+IHBvczE6aW50XG4gIC0+IEJ5dGVzLnRcbiAgLT4gcG9zMjppbnRcbiAgLT4gbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1jbXBfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtY21wX2J5dGVzIHQxIH5wb3MxIGJ5dGVzIH5wb3MyIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMSB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0MSk7XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zOnBvczJcbiAgICB+bGVuXG4gICAgfnRvdGFsX2xlbmd0aDooQnl0ZXMubGVuZ3RoIGJ5dGVzKTtcbiAgdW5zYWZlX21lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuXG47O1xuXG5sZXQgY29tcGFyZSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IGxlbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgbGVuID0gSW50Lm1pbiBsZW4xIGxlbjIgaW5cbiAgICBtYXRjaCB1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuIHdpdGhcbiAgICB8IDAgLT4gaWYgbGVuMSA8IGxlbjIgdGhlbiAtMSBlbHNlIGlmIGxlbjEgPiBsZW4yIHRoZW4gMSBlbHNlIDBcbiAgICB8IG4gLT4gbilcbjs7XG5cbmV4dGVybmFsIGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1xuICA6ICBIYXNoLnN0YXRlXG4gIC0+IHRcbiAgLT4gSGFzaC5zdGF0ZVxuICA9IFwiaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXCJcbltAQG5vYWxsb2NdXG5cbmxldCBfbWFraW5nX3N1cmVfdGhlX0NfYmluZGluZ190YWtlc19hbl9pbnQgKHggOiBIYXNoLnN0YXRlKSA9ICh4IDo+IGludClcbmxldCBoYXNoX2ZvbGRfdCA9IGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1xubGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuXG50eXBlIHRfZnJvemVuID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgSW50LmVxdWFsIGxlbjEgbGVuMiAmJiBJbnQuZXF1YWwgKHVuc2FmZV9tZW1jbXAgdDEgfnBvczE6MCB0MiB+cG9zMjowIH5sZW46bGVuMSkgMClcbjs7XG5cbigqIFNlYXJjaCAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZmluZCA6IHQgLT4gY2hhciAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gaW50ID0gXCJiaWdzdHJpbmdfZmluZFwiXG5bQEBub2FsbG9jXVxuXG5sZXQgZmluZCA/KHBvcyA9IDApID9sZW4gY2hyIGJzdHIgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBjaGVja19hcmdzIH5sb2M6XCJmaW5kXCIgfnBvcyB+bGVuIGJzdHI7XG4gIGxldCByZXMgPSB1bnNhZmVfZmluZCBic3RyIGNociB+cG9zIH5sZW4gaW5cbiAgaWYgcmVzIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHJlc1xuOztcblxuKCogdmltOiBzZXQgZmlsZXR5cGU9b2NhbWwgOiAqKVxuXG4oKiBCaW5hcnktcGFja2luZyBsaWtlIGFjY2Vzc29ycyAqKVxuXG5leHRlcm5hbCBpbnQzMl9vZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50MzJfdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIGludDY0X29mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBpbnQ2NF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMTYgOiB0IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8zMiA6IHQgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfNjQgOiB0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzE2IDogdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF8zMiA6IHQgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF82NCA6IHQgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5sZXQgZ2V0XzE2ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfMTZcIiB+cG9zIH5sZW46MiB0O1xuICB1bnNhZmVfZ2V0XzE2IHQgcG9zXG47O1xuXG5sZXQgZ2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQzMiA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9nZXRfMzIgdCBwb3Ncbjs7XG5cbmxldCBnZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDY0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX2dldF82NCB0IHBvc1xuOztcblxubGV0IHNldF8xNl90cnVuYyAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50KSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfMTZcIiB+cG9zIH5sZW46MiB0O1xuICB1bnNhZmVfc2V0XzE2IHQgcG9zIHZcbjs7XG5cbmxldCBzZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludDMyKSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfc2V0XzMyIHQgcG9zIHZcbjs7XG5cbmxldCBzZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludDY0KSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfNjRcIiB+cG9zIH5sZW46OCB0O1xuICB1bnNhZmVfc2V0XzY0IHQgcG9zIHZcbjs7XG5cbmxldCBzaWduX2V4dGVuZF8xNiB1ID0gKHUgbHNsIChJbnQubnVtX2JpdHMgLSAxNikpIGFzciAoSW50Lm51bV9iaXRzIC0gMTYpXG5cbmxldCBjaGVja192YWxpZF91aW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwMDAgfHwgeCA+IDB4N0ZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDggeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50OCB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAgfHwgeCA+IDB4N0ZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gXyB+bG9jOl8gLT4gKClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gLTEgbHNsIDMxICYmIHggPCAxIGxzbCAzMVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDAgJiYgeCA8IDEgbHNsIDMyXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDY0IHggfmxvYyA9XG4gIGlmIHggPj0gMFxuICB0aGVuICgpXG4gIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgNjQtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpKVxubGV0IHVuc2FmZV93cml0ZV9pbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoZ2V0XzE2IHQgcG9zKVxubGV0IHJlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2IChnZXRfMTYgdCBwb3MpKVxuXG5sZXQgd3JpdGVfaW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfaW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF91aW50MTYgdCB+cG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF91aW50MTYgdCB+cG9zID0gZ2V0XzE2IHQgcG9zXG5sZXQgcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKGdldF8xNiB0IHBvcylcblxubGV0IHdyaXRlX3VpbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX3VpbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcykpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzIgdCB+cG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxubGV0IHJlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAoZ2V0XzMyIHQgcG9zKVxubGV0IHJlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKGdldF8zMiB0IHBvcykpXG5sZXQgcmVhZF9pbnQzMiB0IH5wb3MgPSBnZXRfMzIgdCBwb3NcbmxldCByZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyIChnZXRfMzIgdCBwb3MpXG5sZXQgd3JpdGVfaW50MzIgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgeFxubGV0IHdyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxuXG5sZXQgd3JpdGVfaW50MzJfaW50X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbjs7XG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID1cbiAgaW50NjRfdG9faW50IChzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NCB0IH5wb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCAoaW50NjRfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKGdldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHN3YXA2NCAoZ2V0XzY0IHQgcG9zKSlcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NCB0IH5wb3MgPSBnZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAoZ2V0XzY0IHQgcG9zKVxubGV0IHdyaXRlX2ludDY0IHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIHhcbmxldCB3cml0ZV9pbnQ2NF9zd2FwIHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxubGV0IHdyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNiBlbHNlIHVuc2FmZV9yZWFkX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTYgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZcbjs7XG5cbmxldCBnZXRfaW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2IGVsc2UgcmVhZF9pbnQxNl9zd2FwXG5sZXQgZ2V0X2ludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNl9zd2FwIGVsc2UgcmVhZF9pbnQxNlxubGV0IGdldF91aW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNiBlbHNlIHJlYWRfdWludDE2X3N3YXBcbmxldCBnZXRfdWludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTZfc3dhcCBlbHNlIHJlYWRfdWludDE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2IGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZcbjs7XG5cbmxldCBzZXRfaW50MTZfYmVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfZXhuIGVsc2Ugd3JpdGVfaW50MTZfc3dhcF9leG5cbmxldCBzZXRfaW50MTZfbGVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQxNl9leG5cblxubGV0IHNldF91aW50MTZfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X2V4biBlbHNlIHdyaXRlX3VpbnQxNl9zd2FwX2V4blxuOztcblxubGV0IHNldF91aW50MTZfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfdWludDE2X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMlxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMiBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJcbjs7XG5cbmxldCBnZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzIgZWxzZSByZWFkX2ludDMyX3N3YXBcbmxldCBnZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfc3dhcCBlbHNlIHJlYWRfaW50MzJcbmxldCBzZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyIGVsc2Ugd3JpdGVfaW50MzJfc3dhcFxubGV0IHNldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfc3dhcCBlbHNlIHdyaXRlX2ludDMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50XG47O1xuXG5sZXQgZ2V0X2ludDMyX2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnQgZWxzZSByZWFkX2ludDMyX2ludF9zd2FwXG5sZXQgZ2V0X2ludDMyX2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHJlYWRfaW50MzJfaW50XG5cbmxldCBzZXRfaW50MzJfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4blxuOztcblxubGV0IHNldF9pbnQzMl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludFxuOztcblxubGV0IGdldF9pbnQ2NF9iZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50IGVsc2UgcmVhZF9pbnQ2NF9pbnRfc3dhcFxubGV0IGdldF9pbnQ2NF9sZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50X3N3YXAgZWxzZSByZWFkX2ludDY0X2ludFxubGV0IHNldF9pbnQ2NF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludCBlbHNlIHdyaXRlX2ludDY0X2ludF9zd2FwXG5sZXQgc2V0X2ludDY0X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NF9pbnRcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRcbjs7XG5cbmxldCBnZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjQgZWxzZSByZWFkX2ludDY0X3N3YXBcbmxldCBnZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfc3dhcCBlbHNlIHJlYWRfaW50NjRcbmxldCBzZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0IGVsc2Ugd3JpdGVfaW50NjRfc3dhcFxubGV0IHNldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfc3dhcCBlbHNlIHdyaXRlX2ludDY0XG5cbmxldCBpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF9pbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbmxldCB1aW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfdWludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxuKCogW1BvbHldIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdW5ib3hlZCBbaW50NjRdLiAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAtMHg0MDAwXzAwMDBfMDAwMF8wMDAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG4gIGVsc2UgaWYgUG9seS4obiA+PSAtMHgwMDAwXzAwMDBfNDAwMF8wMDAwTCAmJiBuIDwgMHgwMDAwXzAwMDBfNDAwMF8wMDAwTClcbiAgdGhlbiBpbnQ2NF90b19pbnQgblxuICBlbHNlIGludDY0X2NvbnZfZXJyb3IgKClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdWludDY0X3RvX2ludF9leG4gbiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBpZiBQb2x5LihuID49IDBMICYmIG4gPCAweDQwMDBfMDAwMF8wMDAwXzAwMDBMKVxuICAgIHRoZW4gaW50NjRfdG9faW50IG5cbiAgICBlbHNlIHVpbnQ2NF9jb252X2Vycm9yICgpXG4gIGVsc2UgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHgwMDAwXzAwMDBfNDAwMF8wMDAwTClcbiAgdGhlbiBpbnQ2NF90b19pbnQgblxuICBlbHNlIHVpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9iZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuOztcblxubGV0IGdldF9pbnQ2NF9iZV9leG4gdCB+cG9zID0gaW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxubGV0IGdldF9pbnQ2NF9sZV9leG4gdCB+cG9zID0gaW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIHVpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxubGV0IGdldF91aW50NjRfbGVfZXhuIHQgfnBvcyA9IHVpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9sZSB0IH5wb3MpXG5sZXQgdW5zYWZlX3NldF91aW50NjRfYmUgPSB1bnNhZmVfc2V0X2ludDY0X2JlXG5sZXQgdW5zYWZlX3NldF91aW50NjRfbGUgPSB1bnNhZmVfc2V0X2ludDY0X2xlXG5cbmxldCBzZXRfdWludDY0X2JlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ2NCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50NjRfYmVfZXhuXCIgbjtcbiAgc2V0X2ludDY0X2JlIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2xlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9sZSB0IH5wb3MgblxuOztcblxuKCogVHlwZSBhbm5vdGF0aW9ucyBvbiB0aGUgW3RdcyBhcmUgaW1wb3J0YW50IGhlcmU6IGluIG9yZGVyIGZvciB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGVcbiAgIG9wdGltaXplZCBjb2RlLCBpdCBuZWVkcyB0byBrbm93IHRoZSBmdWxseSBpbnN0YW50aWF0ZWQgdHlwZSBvZiB0aGUgYmlnYXJyYXkuIFRoaXMgaXNcbiAgIGJlY2F1c2UgdGhlIHR5cGUgb2YgdGhlIGJpZ2FycmF5IGVuY29kZXMgdGhlIGVsZW1lbnQga2luZCBhbmQgdGhlIGxheW91dCBvZiB0aGVcbiAgIGJpZ2FycmF5LiBXaXRob3V0IHRoZSBhbm5vdGF0aW9uIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSBDIGNhbGwgdG8gdGhlIGdlbmVyaWMgYWNjZXNzXG4gICBmdW5jdGlvbnMuICopXG5sZXQgdW5zYWZlX3NldF91aW50OCAodCA6IHQpIH5wb3MgbiA9IEFycmF5MS51bnNhZmVfc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcblxubGV0IHVuc2FmZV9zZXRfaW50OCAodCA6IHQpIH5wb3MgbiA9XG4gICgqIEluIGFsbCB0aGUgc2V0IGZ1bmN0aW9ucyB3aGVyZSB0aGVyZSBhcmUgdGhlc2UgdGVzdHMsIGl0IGxvb2tzIGxpa2UgdGhlIHRlc3QgY291bGQgYmVcbiAgICAgcmVtb3ZlZCwgc2luY2UgdGhleSBhcmUgb25seSBjaGFuZ2luZyB0aGUgdmFsdWVzIG9mIHRoZSBieXRlcyB0aGF0IGFyZSBub3RcbiAgICAgd3JpdHRlbi4gKilcbiAgbGV0IG4gPSBpZiBuIDwgMCB0aGVuIG4gKyAyNTYgZWxzZSBuIGluXG4gIEFycmF5MS51bnNhZmVfc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQ4ICh0IDogdCkgfnBvcyA9IENoYXIudG9faW50IChBcnJheTEudW5zYWZlX2dldCB0IHBvcylcblxubGV0IHVuc2FmZV9nZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEudW5zYWZlX2dldCB0IHBvcykgaW5cbiAgaWYgbiA+PSAxMjggdGhlbiBuIC0gMjU2IGVsc2UgblxuOztcblxubGV0IHNldF91aW50OF9leG4gKHQgOiB0KSB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50OF9leG5cIiBuO1xuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBzZXRfaW50OF9leG4gKHQgOiB0KSB+cG9zIG4gPVxuICBjaGVja192YWxpZF9pbnQ4IH5sb2M6XCJCaWdzdHJpbmcuc2V0X2ludDhfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBuIDwgMCB0aGVuIG4gKyAyNTYgZWxzZSBuIGluXG4gIEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IGdldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLmdldCB0IHBvcylcblxubGV0IGdldF9pbnQ4ICh0IDogdCkgfnBvcyA9XG4gIGxldCBuID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBtYXNrMzJfbiA9IENhbWwuTmF0aXZlaW50LihzdWIgKHNoaWZ0X2xlZnQgMW4gMzIpIDFuKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQzMl9vZl9pbnQzMl90IG4gPVxuICBpZiBub3Rfb25fMzJiaXRcbiAgdGhlblxuICAgICgqIHVzZSBDYW1sLk5hdGl2ZWludCB0byBlbnN1cmUgaW5saW5pbmcgZXZlbiB3aXRob3V0IHgtbGlicmFyeS1pbmxpbmluZyAqKVxuICAgIENhbWwuTmF0aXZlaW50Lih0b19pbnQgKGxvZ2FuZCAob2ZfaW50MzIgbikgbWFzazMyX24pKVxuICBlbHNlIGludDMyX3RvX2ludCBuXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfbGUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfbGUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9iZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9iZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfbGUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfYmUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9sZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2xlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2xlX2V4biB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50MzJfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9iZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9iZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9sZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuXG5tb2R1bGUgSW50X3JlcHIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgbGV0IGdldF91aW50OCB0IHBvcyA9IGdldF91aW50OCB0IH5wb3NcbiAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgeClcbiAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IGdldF8xNiB0IHBvc1xuICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSBnZXRfMzIgdCBwb3NcbiAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSBzZXRfMzIgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSBnZXRfNjQgdCBwb3NcbiAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSBzZXRfNjQgdCBwb3MgeFxuICBlbmRcblxuICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgICAgbGV0IGdldF91aW50OCB0IHBvcyA9IHVuc2FmZV9nZXRfdWludDggdCB+cG9zXG4gICAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSB1bnNhZmVfc2V0X3VpbnQ4IHQgfnBvcyB4XG4gICAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbiAgICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcbiAgZW5kXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNpZ25fZXh0ZW5kXzE2ID0gc2lnbl9leHRlbmRfMTZcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmxpdFxuaW5jbHVkZSBUZXN0X2JsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJsaXRcblxuICB0eXBlICdhIHNyY1xuICB0eXBlICdhIGRzdFxuXG4gICgqICB2YWwgYmxpdCAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgYmxpdG8gOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXRvXG5cbiAgKCogIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBzdWIgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1YlxuXG4gICgqdmFsIHN1Ym8gICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJvKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfdGVzdHNfZ2VuID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbFxuXG4gICAgdmFsIG9mX2Jvb2wgOiBib29sIC0+IGJvb2wgdFxuICBlbmRcblxuICB0eXBlICdhIHpcblxuICBtb2R1bGUgU3JjIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIERzdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gICAgdmFsIG92ZXJsYXBwaW5nX3NyY19kc3QgOiBbIGBEb19ub3RfY2hlY2sgfCBgQ2hlY2sgb2YgJ2EgU3JjLnQgLT4gJ2EgdCBdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlblxuICAgIChGb3JfdGVzdHMgOiBGb3JfdGVzdHNfZ2VuKVxuICAgIChUZXN0ZWQgOiBTX2dlblxuICAgICB3aXRoIHR5cGUgJ2Egc3JjIDo9ICdhIEZvcl90ZXN0cy5TcmMudFxuICAgICB3aXRoIHR5cGUgJ2EgZHN0IDo9ICdhIEZvcl90ZXN0cy5Ec3QudCkgPVxuc3RydWN0XG4gIG9wZW4gVGVzdGVkXG4gIG9wZW4gRm9yX3Rlc3RzXG5cbiAgbGV0IGluaXQgfmxlbiB+Y3JlYXRlIH5zZXQgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgc2V0IHQgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgdFxuICA7O1xuXG4gIGxldCBlbHQxID0gRWx0Lm9mX2Jvb2wgdHJ1ZVxuICBsZXQgZWx0MiA9IEVsdC5vZl9ib29sIGZhbHNlXG4gIGxldCAoKSA9IGFzc2VydCAobm90IChFbHQuZXF1YWwgZWx0MSBlbHQyKSlcbiAgbGV0IHNyY19iaXQgaSA9IGlmIGkgbGFuZCAweDEgPSAwIHRoZW4gZWx0MSBlbHNlIGVsdDJcbiAgbGV0IGRzdF9iaXQgaSA9IGlmIGkgbGFuZCAweDEgPSAwIHRoZW4gZWx0MiBlbHNlIGVsdDFcblxuICAoKiBUZXN0IFtibGl0XS4gKilcbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgbiA9IDQgaW5cbiAgICBmb3Igc3JjX2xlbmd0aCA9IDAgdG8gbiBkb1xuICAgICAgZm9yIGRzdF9sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgICAgZm9yIHNyY19wb3MgPSAwIHRvIHNyY19sZW5ndGggZG9cbiAgICAgICAgICBmb3IgZHN0X3BvcyA9IDAgdG8gZHN0X2xlbmd0aCBkb1xuICAgICAgICAgICAgZm9yIHNyY19sZW4gPSAwIHRvIG1pbiAoc3JjX2xlbmd0aCAtIHNyY19wb3MpIChkc3RfbGVuZ3RoIC0gZHN0X3BvcykgZG9cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgbGV0IGlzX2luX3JhbmdlIGkgPSBpID49IGRzdF9wb3MgJiYgaSA8IGRzdF9wb3MgKyBzcmNfbGVuIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrIGxlbmd0aCBnZXQgbmFtZSBzZXF1ZW5jZSB+ZXhwZWN0ID1cbiAgICAgICAgICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggc2VxdWVuY2UgLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoRWx0LmVxdWFsIChnZXQgc2VxdWVuY2UgaSkgKGV4cGVjdCBpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcImJ1Z1wiIChuYW1lIDogc3RyaW5nKSAoaSA6IGludCldXG4gICAgICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tfc3JjID0gY2hlY2sgU3JjLmxlbmd0aCBTcmMuZ2V0IGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX2RzdCA9IGNoZWNrIERzdC5sZW5ndGggRHN0LmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBzcmMgPVxuICAgICAgICAgICAgICAgICAgaW5pdCB+bGVuOnNyY19sZW5ndGggfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGFzc2VydCAoU3JjLmxlbmd0aCBzcmMgPSBzcmNfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgZHN0ID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpkc3RfbGVuZ3RoIH5jcmVhdGU6RHN0LmNyZWF0ZV9ib29sIH5zZXQ6RHN0LnNldCB+Zjpkc3RfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKERzdC5sZW5ndGggZHN0ID0gZHN0X2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGluaXRfc3JjICgpID1cbiAgICAgICAgICAgICAgICAgIGZvciBpID0gMCB0byBzcmNfbGVuZ3RoIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBTcmMuc2V0IHNyYyBpIChzcmNfYml0IGkpXG4gICAgICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBibGl0byB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuIH5kc3QgfmRzdF9wb3MgKCk7XG4gICAgICAgICAgICAgICAgY2hlY2tfc3JjIFwiYmxpdCBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcImJsaXQgZHN0XCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBpc19pbl9yYW5nZSBpIHRoZW4gc3JjX2JpdCAoc3JjX3BvcyArIGkgLSBkc3RfcG9zKSBlbHNlIGRzdF9iaXQgaSk7XG4gICAgICAgICAgICAgICAgKG1hdGNoIERzdC5vdmVybGFwcGluZ19zcmNfZHN0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgRG9fbm90X2NoZWNrIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgYENoZWNrIHNyY190b19kc3QgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBkc3RfcG9zICsgc3JjX2xlbiA8PSBzcmNfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICBpbml0X3NyYyAoKTtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBkc3QgPSBzcmNfdG9fZHN0IHNyYyBpblxuICAgICAgICAgICAgICAgICAgICAgaWYgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICBibGl0byB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuIH5kc3QgfmRzdF9wb3MgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcImJsaXQgZHN0IG92ZXJsYXBwaW5nXCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2JpdCAoaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19wb3MgKyBpIC0gZHN0X3BvcyBlbHNlIGkpKSkpKTtcbiAgICAgICAgICAgICAgICAoKiBDaGVjayBbc3ViXS4gKilcbiAgICAgICAgICAgICAgICBpbml0X3NyYyAoKTtcbiAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3ViIHNyYyB+cG9zOnNyY19wb3MgfmxlbjpzcmNfbGVuIGluXG4gICAgICAgICAgICAgICAgY2hlY2tfc3JjIFwic3ViIHNyY1wiIHNyYyB+ZXhwZWN0OnNyY19iaXQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwic3ViIGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPiBzcmNfYml0IChzcmNfcG9zICsgaSkpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgXCJidWdcIlxuICAgICAgICAgICAgICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgICAgICAgICAgICAgKHNyY19sZW5ndGggOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgKHNyY19wb3MgOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgKGRzdF9sZW5ndGggOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgKGRzdF9wb3MgOiBpbnQpXVxuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBzcmMgPSBpbml0IH5sZW46NCB+Y3JlYXRlOlNyYy5jcmVhdGVfYm9vbCB+c2V0OlNyYy5zZXQgfmY6c3JjX2JpdCBpblxuICAgIGxldCBkc3QgPSBpbml0IH5sZW46OCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdCBpblxuICAgIGxldCBhc3NlcnRfcmFpc2VzIGYgPSBhc3NlcnQgKEV4bi5kb2VzX3JhaXNlIGYpIGluXG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6KC0xKSB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6MCAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6KC0xKSAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6NSB+c3JjX2xlbjoxIH5kc3QgfmRzdF9wb3M6MCAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo4IH5kc3QgfmRzdF9wb3M6MCAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6NSAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6OCAoKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdDFcbiAgICAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBwb2x5KVxuICAgIChUZXN0ZWQgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICAgIGxldCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgICAgICAgbGV0IG9mX2Jvb2wgPSBGbi5pZFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIFRlc3QxX2dlbmVyaWNcbiAgICAoRWx0IDogRWx0MSlcbiAgICAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudClcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRcblxuICAgICAgdHlwZSAnYSB6ID0gJ2EgU2VxdWVuY2UuelxuXG4gICAgICBtb2R1bGUgU3JjID0gU2VxdWVuY2VcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgRWx0X3RvX2VsdDEgKEVsdCA6IEVsdCkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gRWx0LnRcblxuICBsZXQgZXF1YWwgPSBFbHQuZXF1YWxcbiAgbGV0IG9mX2Jvb2wgPSBFbHQub2ZfYm9vbFxuZW5kXG5cbm1vZHVsZSBUZXN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU2VxdWVuY2UgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChUZXN0ZWQgOiBTIHdpdGggdHlwZSB0IDo9IFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0X3RvX2VsdDEgKEVsdClcblxuICAgICAgdHlwZSAnYSB6ID0gdW5pdFxuXG4gICAgICBtb2R1bGUgU3JjID0gc3RydWN0XG4gICAgICAgIG9wZW4gU2VxdWVuY2VcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTcmNcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0X2Rpc3RpbmN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU3JjIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoRHN0IDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFNyYy50IHdpdGggdHlwZSBkc3QgOj0gRHN0LnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0X3RvX2VsdDEgKEVsdClcblxuICAgICAgdHlwZSAnYSB6ID0gdW5pdFxuXG4gICAgICBtb2R1bGUgU3JjID0gc3RydWN0XG4gICAgICAgIG9wZW4gU3JjXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIG9wZW4gRHN0XG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgRG9fbm90X2NoZWNrXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIE1ha2VfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcblxuICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZSAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdCAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdF9hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKFNyYy50LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2VfZGlzdGluY3QgKFNyYykgKERzdClcbiAgaW5jbHVkZSBUZXN0X2Rpc3RpbmN0IChFbHQpIChTcmMpIChEc3QpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfYW5kX3Rlc3QgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgIGluY2x1ZGUgU2VxdWVuY2UxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBwb2x5XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTEgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QxIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdDEpIChTZXF1ZW5jZSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIEJsaXQuU2VxdWVuY2UxXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2UxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MV9nZW5lcmljIChFbHQpIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCaW5hcnlfc2VhcmNoYWJsZVxuaW5jbHVkZSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlX2ludGZcblxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgb3BlbiBCaW5hcnlfc2VhcmNoYWJsZVxuXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKCdhIHQsICdhIGVsdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICgnYSB0LCAnYSBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlX2dlbl9hbmRfZm9yX3Rlc3QgPSBzaWdcbiAgaW5jbHVkZSBTX2dlblxuXG4gIG1vZHVsZSBGb3JfdGVzdCA6IHNpZ1xuICAgIHZhbCBjb21wYXJlIDogYm9vbCBlbHQgLT4gYm9vbCBlbHQgLT4gaW50XG4gICAgdmFsIHNtYWxsIDogYm9vbCBlbHRcbiAgICB2YWwgYmlnIDogYm9vbCBlbHRcbiAgICB2YWwgb2ZfYXJyYXkgOiBib29sIGVsdCBhcnJheSAtPiBib29sIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFRlc3RfZ2VuIChNIDogSW5kZXhhYmxlX2dlbl9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG9wZW4gTVxuXG4gIGxldCV0ZXN0X21vZHVsZSBcInRlc3RfYmluYXJ5X3NlYXJjaGFibGVcIiA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGxldCBjb21wYXJlID0gRm9yX3Rlc3QuY29tcGFyZVxuICAgICAgbGV0IGVsdF9jb21wYXJlID0gRm9yX3Rlc3QuY29tcGFyZVxuICAgICAgbGV0IHMgPSBGb3JfdGVzdC5zbWFsbFxuICAgICAgbGV0IGIgPSBGb3JfdGVzdC5iaWdcblxuICAgICAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIH5jb21wYXJlIHQgaG93IHYgPVxuICAgICAgICBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSAoRm9yX3Rlc3Qub2ZfYXJyYXkgdCkgaG93IHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCAoID0gKSA9IFBvbHkuZXF1YWxcblxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDJcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIHMgPSBOb25lXG5cbiAgICAgIGxldCBjcmVhdGVfdGVzdF9jYXNlIChudW1fcywgbnVtX2IpID1cbiAgICAgICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSBiIH5sZW46KG51bV9zICsgbnVtX2IpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBudW1fcyAtIDEgZG9cbiAgICAgICAgICBhcnIuKGkpIDwtIHNcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYXJyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25seV9zbWFsbCA9IDEwXzAwMCwgMFxuICAgICAgbGV0IG9ubHlfYmlnID0gMCwgMTBfMDAwXG4gICAgICBsZXQgYm90aCA9IDI1MzEsIDQ3MTdcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggKGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCkgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT4gdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIGJvdGggaW5cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdiA9IDI1MzFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgPVxuICAgICAgICBBcnJheS5pbml0IDEwMF8wMDAgfmY6KGZ1biBpIC0+IGlmIGkgPiA1MF8wMDAgdGhlbiBiIGVsc2UgcylcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3RzIGFyb3VuZCBhIGdhcCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGJlZ2lubmluZyBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgZW5kIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgICBmb3IgbGVuZ3RoID0gMCB0byA1IGRvXG4gICAgICAgICAgZm9yIG51bV9zID0gMCB0byBsZW5ndGggZG9cbiAgICAgICAgICAgIGxldCBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCB+ZjooZnVuIGkgLT4gaWYgaSA8IG51bV9zIHRoZW4gcyBlbHNlIGIpIGluXG4gICAgICAgICAgICBmb3IgcG9zID0gLTEgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICAgIGZvciBsZW4gPSAtMSB0byBsZW5ndGggKyAxIGRvXG4gICAgICAgICAgICAgICAgKCp0cnkqKVxuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2UgPVxuICAgICAgICAgICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgICAgICB+dG90YWxfbGVuZ3RoOmxlbmd0aClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfnBvcyB+bGVuIH5jb21wYXJlOmVsdF9jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBzaG91bGRfcmFpc2UsIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBFcnJvciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBPayBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gcmFpc2UgYnV0IGl0IGRpZG4ndFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgRXJyb3IgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIG5vdCByYWlzZSwgYnV0IGl0IHJhaXNlZFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgT2sgcmVzdWx0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgc2VhcmNoZWQgPSBudW1fcyAtIDEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBjb3JyZWN0X3Jlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgIGlmIHNlYXJjaGVkIDwgcG9zXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA9IDBcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgc2VhcmNoZWQgPj0gcG9zICsgbGVuXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBTb21lIHNlYXJjaGVkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgbm90IChjb3JyZWN0X3Jlc3VsdCA9IHJlc3VsdCkgdGhlbiBmYWlsd2l0aCBcIldyb25nIHJlc3VsdFwiXG4gICAgICAgICAgICAgICAgICAoKndpdGggZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIGZhaWx3aXRocyBcImJpbmFyeV9zZWFyY2ggYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgKGV4biwgYGxlbmd0aCBsZW5ndGgsIGBzZWFyY2hfa2V5IHNlYXJjaF9rZXksIGBwb3MgcG9zLCBgbGVuIGxlbilcbiAgICAgICAgICAgICAgICAgICAgPDpzZXhwX29mPCBleG4gKiBbIGBsZW5ndGggb2YgaW50IF0gKiBbIGBzZWFyY2hfa2V5IG9mIGludCBdXG4gICAgICAgICAgICAgICAgICAgKiBbIGBwb3Mgb2YgaW50IF0gKiBbIGBsZW4gb2YgaW50IF0gPj4qKVxuICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYSA9IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIChGb3JfdGVzdC5vZl9hcnJheSBhKVxuXG4gICAgICAoKnRlc3QgZm9yIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiB4ID0gaWYgeCA9IGIgdGhlbiBgUmlnaHQgZWxzZSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgNTBfMDAwXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgUmlnaHQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBOb25lXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDk5Xzk5OVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gTm9uZVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gTS5lbHRcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICBlbmQpXG5cbm1vZHVsZSBUZXN0MSAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlMV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBNLkZvcl90ZXN0Lm9mX2FycmF5XG4gICAgICBsZXQgY29tcGFyZSA9IEJvb2wuY29tcGFyZVxuICAgICAgbGV0IHNtYWxsID0gZmFsc2VcbiAgICAgIGxldCBiaWcgPSB0cnVlXG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGVfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBNLnRcbiAgICAgIHR5cGUgZWx0ID0gTS5lbHRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZTFfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4gQmFzZVxuXG4oKiogRWFjaCBzaW5nbGVfZXJyb3IgaXMgYSBwYXRoIGluZGljYXRpbmcgdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgZGF0YXN0cnVjdHVyZSBpblxuICAgIHF1ZXN0aW9uIHRoYXQgaXMgYmVpbmcgdmFsaWRhdGVkLCBhbG9uZyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuICopXG50eXBlIHNpbmdsZV9lcnJvciA9XG4gIHsgcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZXJyb3IgOiBFcnJvci50XG4gIH1cblxudHlwZSB0ID0gc2luZ2xlX2Vycm9yIGxpc3RcbnR5cGUgJ2EgY2hlY2sgPSAnYSAtPiB0XG5cbmxldCBwYXNzIDogdCA9IFtdXG5cbmxldCBmYWlscyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSB9IF1cbjs7XG5cbmxldCBmYWlsIG1lc3NhZ2UgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLm9mX3N0cmluZyBtZXNzYWdlIH0gXVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IGZhaWxfcyBzZXhwID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGVfcyBzZXhwIH0gXVxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgb2ZfbGlzdCA9IExpc3QuY29uY2F0XG5cbmxldCBuYW1lIG5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdICgqIHdoZW4gc3VjY2Vzc2Z1bCwgYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBjbG9zdXJlIGZvciBbfmZdLCBiZWxvdyAqKVxuICB8IF8gLT4gTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiB7IHBhdGggPSBuYW1lIDo6IHBhdGg7IGVycm9yIH0pXG47O1xuXG5sZXQgbmFtZV9saXN0IG4gbCA9IG5hbWUgbiAob2ZfbGlzdCBsKVxubGV0IGZhaWxfZm4gbWVzc2FnZSBfID0gZmFpbCBtZXNzYWdlXG5sZXQgcGFzc19ib29sIChfIDogYm9vbCkgPSBwYXNzXG5sZXQgcGFzc191bml0IChfIDogdW5pdCkgPSBwYXNzXG5cbmxldCBwcm90ZWN0IGYgdiA9XG4gIHRyeSBmIHYgd2l0aFxuICB8IGV4biAtPlxuICAgIGZhaWxfcyAoU2V4cC5tZXNzYWdlIFwiRXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgdmFsaWRhdGlvblwiIFsgXCJcIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHByb3RlY3RcbiAgICAoZnVuICgpIC0+XG4gICAgICAgZiAoKTtcbiAgICAgICBwYXNzKVxuICAgICgpXG47O1xuXG5sZXQgcGF0aF9zdHJpbmcgcGF0aCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBwYXRoXG5cbmxldCBlcnJvcnMgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT5cbiAgICBFcnJvci50b19zdHJpbmdfaHVtIChFcnJvci50YWcgZXJyb3IgfnRhZzoocGF0aF9zdHJpbmcgcGF0aCkpKVxuOztcblxubGV0IHJlc3VsdF9mYWlsIHQgPVxuICBPcl9lcnJvci5lcnJvclxuICAgIFwidmFsaWRhdGlvbiBlcnJvcnNcIlxuICAgIChMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHBhdGhfc3RyaW5nIHBhdGgsIGVycm9yKSlcbiAgICBbJXNleHBfb2Y6IChzdHJpbmcgKiBFcnJvci50KSBMaXN0LnRdXG5bQEBjb2xkXVxuOztcblxuKCoqIFtyZXN1bHRdIGlzIGNhcmVmdWxseSBpbXBsZW1lbnRlZCBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkIC0tIGNhbGxpbmcgW3Jlc3VsdF9mYWlsXSxcbiAgICB3aGljaCBpcyBub3QgaW5saW5lYWJsZSwgaXMga2V5IHRvIHRoaXMuICopXG5sZXQgcmVzdWx0IHQgPSBpZiBMaXN0LmlzX2VtcHR5IHQgdGhlbiBPayAoKSBlbHNlIHJlc3VsdF9mYWlsIHRcblxubGV0IG1heWJlX3JhaXNlIHQgPSBPcl9lcnJvci5va19leG4gKHJlc3VsdCB0KVxubGV0IHZhbGlkX29yX2Vycm9yIGNoZWNrIHggPSBPcl9lcnJvci5tYXAgKHJlc3VsdCAocHJvdGVjdCBjaGVjayB4KSkgfmY6KGZ1biAoKSAtPiB4KVxuXG5sZXQgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCBfcmVjb3JkIHYgPVxuICBsZXQgcmVzdWx0ID0gcHJvdGVjdCBjaGVjayB2IGluXG4gIG5hbWUgKEZpZWxkLm5hbWUgZmxkKSByZXN1bHRcbjs7XG5cbmxldCBmaWVsZCBjaGVjayByZWNvcmQgZmxkID1cbiAgbGV0IHYgPSBGaWVsZC5nZXQgZmxkIHJlY29yZCBpblxuICBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2XG47O1xuXG5sZXQgZmllbGRfZm9sZGVyIGNoZWNrIHJlY29yZCA9XG4gICgpO1xuICBmdW4gYWNjIGZsZCAtPiBmaWVsZCBjaGVjayByZWNvcmQgZmxkIDo6IGFjY1xuOztcblxubGV0IGZpZWxkX2RpcmVjdF9mb2xkZXIgY2hlY2sgPVxuICBTdGFnZWQuc3RhZ2UgKGZ1biBhY2MgZmxkIHJlY29yZCB2IC0+XG4gICAgbWF0Y2ggZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdiB3aXRoXG4gICAgfCBbXSAtPiBhY2MgKCogQXZvaWQgYWxsb2NhdGluZyBhIG5ldyBsaXN0IGluIHRoZSBzdWNjZXNzIGNhc2UgKilcbiAgICB8IHJlc3VsdCAtPiByZXN1bHQgOjogYWNjKVxuOztcblxubGV0IGFsbCBjaGVja3MgdiA9XG4gIGxldCByZWMgbG9vcCBjaGVja3MgdiBlcnJzID1cbiAgICBtYXRjaCBjaGVja3Mgd2l0aFxuICAgIHwgW10gLT4gZXJyc1xuICAgIHwgY2hlY2sgOjogY2hlY2tzIC0+XG4gICAgICAobWF0Y2ggcHJvdGVjdCBjaGVjayB2IHdpdGhcbiAgICAgICB8IFtdIC0+IGxvb3AgY2hlY2tzIHYgZXJyc1xuICAgICAgIHwgZXJyIC0+IGxvb3AgY2hlY2tzIHYgKGVyciA6OiBlcnJzKSlcbiAgaW5cbiAgb2ZfbGlzdCAoTGlzdC5yZXYgKGxvb3AgY2hlY2tzIHYgW10pKVxuOztcblxubGV0IG9mX3Jlc3VsdCBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gZmFpbCBlcnJvcilcbjs7XG5cbmxldCBvZl9lcnJvciBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gWyB7IHBhdGggPSBbXTsgZXJyb3IgfSBdKVxuOztcblxubGV0IGJvb2x0ZXN0IGYgfmlmX2ZhbHNlID0gcHJvdGVjdCAoZnVuIHYgLT4gaWYgZiB2IHRoZW4gcGFzcyBlbHNlIGZhaWwgaWZfZmFsc2UpXG5cbmxldCBwYWlyIH5mc3QgfnNuZCAoZnN0X3ZhbHVlLCBzbmRfdmFsdWUpID1cbiAgb2ZfbGlzdCBbIG5hbWUgXCJmc3RcIiAocHJvdGVjdCBmc3QgZnN0X3ZhbHVlKTsgbmFtZSBcInNuZFwiIChwcm90ZWN0IHNuZCBzbmRfdmFsdWUpIF1cbjs7XG5cbmxldCBsaXN0X2luZGV4ZWQgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwaSBsaXN0IH5mOihmdW4gaSBlbCAtPiBuYW1lIChJbnQudG9fc3RyaW5nIChpICsgMSkpIChwcm90ZWN0IGNoZWNrIGVsKSlcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGxpc3Qgfm5hbWU6ZXh0cmFjdF9uYW1lIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWwgLT5cbiAgICBtYXRjaCBwcm90ZWN0IGNoZWNrIGVsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCB0IC0+XG4gICAgICAoKiBleHRyYSBsZXZlbCBvZiBwcm90ZWN0aW9uIGluIGNhc2UgZXh0cmFjdF9uYW1lIHRocm93cyBhbiBleGNlcHRpb24gKilcbiAgICAgIHByb3RlY3QgKGZ1biB0IC0+IG5hbWUgKGV4dHJhY3RfbmFtZSBlbCkgdCkgdClcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGFsaXN0IH5uYW1lIGYgbGlzdCcgPSBsaXN0IChmdW4gKF8sIHgpIC0+IGYgeCkgbGlzdCcgfm5hbWU6KGZ1biAoa2V5LCBfKSAtPiBuYW1lIGtleSlcbmxldCBmaXJzdF9mYWlsdXJlIHQxIHQyID0gaWYgTGlzdC5pc19lbXB0eSB0MSB0aGVuIHQyIGVsc2UgdDFcblxubGV0IG9mX2Vycm9yX29wdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwYXNzXG4gIHwgU29tZSBlcnJvciAtPiBmYWlsIGVycm9yXG47O1xuXG5sZXQgYm91bmRlZCB+bmFtZSB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggPVxuICBtYXRjaCBNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggd2l0aFxuICB8IEluX3JhbmdlIC0+IHBhc3NcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPlxuICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDwgYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbiAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID4gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCArKyApIHQxIHQyID0gY29tYmluZSB0MSB0MlxuZW5kXG4iLCJcbigqIFdlIGRvIG5vdCBbaW5jbHVkZSBCYXNlXSBoZXJlLCBhbmQgaW5zdGVhZCBpbXBvcnQgbW9kdWxlcyB0aGF0IFtDb3JlXSBkb2Vzbid0IGV4dGVuZCxcbiAgIGJlY2F1c2Ugd2Ugd2FudCBjb2RlIGluIFtDb3JlXSB0byBiZSBjbGVhciB3aGVuIGl0IHJlZmVyZW5jZXMgYSBbQmFzZV0gbW9kdWxlIHRoYXRcbiAgIFtDb3JlXSBpcyBvdmVycmlkaW5nLiAqKVxubW9kdWxlIEFwcGxpY2F0aXZlID0gQmFzZS5BcHBsaWNhdGl2ZVxubW9kdWxlIEF2bHRyZWUgPSBCYXNlLkF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYXNlLkJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCYXNlLkJpbmFyeV9zZWFyY2hcbm1vZHVsZSBDb21wYXJpc29ucyA9IEJhc2UuQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRXF1YWwgPSBCYXNlLkVxdWFsXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBGbG9hdGFibGUgPSBCYXNlLkZsb2F0YWJsZVxubW9kdWxlIEZvcm1hdHRlciA9IEJhc2UuRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEJhc2UuSGFzaFxubW9kdWxlIEhhc2hlciA9IEJhc2UuSGFzaGVyXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBCYXNlLkluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW50YWJsZSA9IEJhc2UuSW50YWJsZVxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEJhc2UuSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X21hdGggPSBCYXNlLkludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gQmFzZS5JbnZhcmlhbnRcbm1vZHVsZSBNb25hZCA9IEJhc2UuTW9uYWRcbm1vZHVsZSBQb2x5ID0gQmFzZS5Qb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBCYXNlLlByZXR0eV9wcmludGVyXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZ2FibGUgPSBCYXNlLlN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBCYXNlLlN5c1xubW9kdWxlIFVjaGFyID0gQmFzZS5VY2hhclxubW9kdWxlIFdpdGhfcmV0dXJuID0gQmFzZS5XaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IEJhc2UuV29yZF9zaXplXG5cbigqIFdlIGRvIGluY2x1ZGUgW0Jhc2VdJ3MgdG9wLWxldmVsIHZhbHVlIGFuZCB0eXBlIGJpbmRpbmdzLCBiZWNhdXNlIHRoZXkgZG9uJ3QgY2F1c2VcbiAgIGFueSBjb25mdXNpb24sIGFuZCBkdXBsaWNhdGluZyB0aGVtIHdvdWxkIGJlIGVycm9yIHByb25lLiAqKVxuaW5jbHVkZSBCYXNlLkV4cG9ydFxuaW5jbHVkZSBTdGRpb1xuaW5jbHVkZSBCYXNlX2Zvcl90ZXN0c1xuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbm1vZHVsZSBGaWVsZCA9IEZpZWxkc2xpYi5GaWVsZFxuXG5tb2R1bGUgRnJvbV9zZXhwbGliIDogc2lnXG4gIHR5cGUgYmlnc3RyaW5nID0gU2V4cGxpYi5Db252LmJpZ3N0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIG1hdCA9IFNleHBsaWIuQ29udi5tYXQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB2ZWMgPSBTZXhwbGliLkNvbnYudmVjIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgKCogW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXSBhcmUgdXNlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgZnJvbVxuICAgICBbW0BAZGVyaXZpbmcgc2V4cF1dLCBbWyVzZXhwX29mOiBdXSwgYW5kIFtbJW9mX3NleHA6IF1dLiAgVGhlIHR5cGUgW18gc2V4cF9vcGFxdWVdXG4gICAgIGV4cGFuZHMgdG8gdXNlcyBvZiBbc2V4cF9vZl9vcGFxdWVdIGFuZCBbb3BhcXVlX29mX3NleHBdLiAqKVxuXG4gIHZhbCBzZXhwX29mX29wYXF1ZSA6IF8gLT4gQmFzZS5TZXhwLnRcbiAgdmFsIG9wYXF1ZV9vZl9zZXhwIDogQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgc2V4cF9vZl9wYWlyIDogKCdhIC0+IEJhc2UuU2V4cC50KSAtPiAoJ2IgLT4gQmFzZS5TZXhwLnQpIC0+ICdhICogJ2IgLT4gQmFzZS5TZXhwLnRcbiAgdmFsIHBhaXJfb2Zfc2V4cCA6IChCYXNlLlNleHAudCAtPiAnYSkgLT4gKEJhc2UuU2V4cC50IC0+ICdiKSAtPiBCYXNlLlNleHAudCAtPiAnYSAqICdiXG5cbiAgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgZXhuICogQmFzZS5TZXhwLnRcblxuICB2YWwgb2Zfc2V4cF9lcnJvciA6IHN0cmluZyAtPiBCYXNlLlNleHAudCAtPiBfXG4gIHZhbCBvZl9zZXhwX2Vycm9yX2V4biA6IGV4biAtPiBCYXNlLlNleHAudCAtPiBfXG5lbmQgPVxuICBTZXhwbGliLkNvbnZcblxuaW5jbHVkZSBGcm9tX3NleHBsaWJcblxuKCogW3NleHBfb3BhcXVlXSBpbmRpY2F0ZXMgdG8gW3BweF9zZXhwX2NvbnZdIHRoYXQgYSB2YWx1ZSBzaG91bGQgYmUgcmVuZGVyZWQgYXMgW19dLCBpLmUuXG4gICBbU2V4cC5BdG9tIFwiX1wiXS4gIEhlcmUgd2UgZXhwb3NlIHRoZSBbQEBkZXJpdmluZ10gYXNwZWN0cyBvZiBbc2V4cF9vcGFxdWVdIHNvIHRoYXRcbiAgIG90aGVyIHBweCdzIHRyZWF0IFtzZXhwX29wYXF1ZV0gY29ycmVjdGx5LCBieSBpZ25vcmluZyBpdCBhbmQgcHJvY2Vzc2luZyB0aGUgdW5kZXJseWluZ1xuICAgdHlwZS4gKilcbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2Egc2V4cF9vcGFxdWUgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2Egc2V4cF9vcGFxdWUgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kXG53aXRoIHR5cGUgJ2Egc2V4cF9vcGFxdWUgOj0gJ2EpXG5cbmluY2x1ZGUgKFxuICBUeXBlcmVwX2xpYi5TdGQgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVHlwZXJlcF9saWIuU3RkXG4gIGVuZFxuICB3aXRoIG1vZHVsZSBUeXBlX2VxdWFsIDo9IFR5cGVyZXBfbGliLlN0ZC5UeXBlX2VxdWFsKVxuXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRzbGliLlZhcmlhbnRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCBhbV9ydW5uaW5nX2lubGluZV90ZXN0ID0gUHB4X2lubGluZV90ZXN0X2xpYi5SdW50aW1lLmFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcblxubGV0IGFtX3J1bm5pbmdfdGVzdCA9XG4gIHRyeVxuICAgIGlnbm9yZSAoQ2FtbC5TeXMuZ2V0ZW52IFwiVEVTVElOR19GUkFNRVdPUktcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gICgqIFtDYW1sLipdIG5ldmVyIHJhaXNlcyBbTm90X2ZvdW5kX3NdICopXG4gIHwgQ2FtbC5Ob3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbnR5cGUgJ2EgaWRlbnRpdHkgPSAnYVxuXG5tb2R1bGUgTm90X2ZvdW5kID0gc3RydWN0XG4gIGV4Y2VwdGlvblxuICAgIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuICAgICAgICAgICAgICAgIFtAZGVwcmVjYXRlZFxuICAgICAgICAgICAgICAgICAge3xbc2luY2UgMjAxOC0wMl0gSW5zdGVhZCBvZiByYWlzaW5nIFtOb3RfZm91bmRdLCBjb25zaWRlciB1c2luZyBbcmFpc2Vfc10gd2l0aCBhblxuaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS4gIElmIGNvZGUgbmVlZHMgdG8gZGlzdGluZ3Vpc2ggW05vdF9mb3VuZF0gZnJvbSBvdGhlclxuZXhjZXB0aW9ucywgcGxlYXNlIGNoYW5nZSBpdCB0byBoYW5kbGUgYm90aCBbTm90X2ZvdW5kXSBhbmQgW05vdF9mb3VuZF9zXS4gIFRoZW4sIGluc3RlYWRcbm9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIHJhaXNlIFtOb3RfZm91bmRfc10gd2l0aCBhbiBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLnx9XVxuXG4gIGV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IEJhc2UuTm90X2ZvdW5kX3NcbmVuZFxuXG5pbmNsdWRlIE5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU2V4cGFibGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT2Zfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBTZXhwbGliLlNleHAuQXRvbSBzIC0+XG4gICAgICAgICAgKHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkxpc3QgXyAtPlxuICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgIFwiU2V4cGFibGUuT2Zfc3RyaW5nYWJsZS50X29mX3NleHAgZXhwZWN0ZWQgYW4gYXRvbSwgYnV0IGdvdCBhIGxpc3RcIlxuICAgICAgICAgICAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGxpYi5TZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogUykgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgb2Zfc3RyaW5nIHggPSBTZXhwbGliLkNvbnYub2Zfc3RyaW5nX19vZl9fb2Zfc2V4cCBNLnRfb2Zfc2V4cCB4XG4gICAgICBsZXQgdG9fc3RyaW5nIHggPSBTZXhwbGliLkNvbnYuc3RyaW5nX29mX19vZl9fc2V4cF9vZiBNLnNleHBfb2ZfdCB4XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUb19zdHJpbmdhYmxlID0gU3RhYmxlLlRvX3N0cmluZ2FibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hYmxlX2ludGZcbmluY2x1ZGUgQmluX3Byb3QuQmluYWJsZVxubW9kdWxlIFNoYXBlID0gQmluX3Byb3QuU2hhcGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT2ZfYmluYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoQmluYWJsZSA6IE1pbmltYWwuUykgKE0gOiBDb252X3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUykgKE0gOiBDb252IHdpdGggdHlwZSBiaW5hYmxlIDo9IEJpbmFibGUudCkgOlxuICAgICAgUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMxKVxuICAgICAgICAoTSA6IENvbnYxX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgJ2EgYmluYWJsZSA6PSAnYSBCaW5hYmxlLnQpIDpcbiAgICAgIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChCaW5hYmxlIDogTWluaW1hbC5TMSkgKE0gOiBDb252MSB3aXRoIHR5cGUgJ2EgYmluYWJsZSA6PSAnYSBCaW5hYmxlLnQpIDpcbiAgICAgIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYikgYmluYWJsZSA6PSAoJ2EsICdiKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMlxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzIpXG4gICAgICAgIChNIDogQ29udjIgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzMpXG4gICAgICAgIChNIDogQ29udjNfd2l0aG91dF91dWlkIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMlxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzMpXG4gICAgICAgIChNIDogQ29udjMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBiaW5hYmxlIDo9ICgnYSwgJ2IsICdjKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTNfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTZXhwYWJsZS5TKSA9XG4gICAgICBPZl9iaW5hYmxlLlYxXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgIGVuZClcblxuICAgIG1vZHVsZSBWMiAoTSA6IENvbnZfc2V4cGFibGUpID1cbiAgICAgIE9mX2JpbmFibGUuVjJcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgICAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnNleHBfb2ZfdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gTS50X29mX3NleHBcbiAgICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTS5jYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFN0cmluZ2FibGUuUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmRcblxuICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0udG9fc3RyaW5nXG5cbiAgICAgICAgKCogV3JhcCBleGNlcHRpb24gZm9yIGltcHJvdmVkIGRpYWdub3N0aWNzLiAqKVxuICAgICAgICBleGNlcHRpb24gT2ZfYmluYWJsZSBvZiBzdHJpbmcgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSBzID1cbiAgICAgICAgICB0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChPZl9iaW5hYmxlIChzLCB4KSlcbiAgICAgICAgOztcbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoTSA6IENvbnZfc3RyaW5nYWJsZSkgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmRcblxuICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0udG9fc3RyaW5nXG5cbiAgICAgICAgKCogV3JhcCBleGNlcHRpb24gZm9yIGltcHJvdmVkIGRpYWdub3N0aWNzLiAqKVxuICAgICAgICBleGNlcHRpb24gT2ZfYmluYWJsZSBvZiBzdHJpbmcgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSBzID1cbiAgICAgICAgICB0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChPZl9iaW5hYmxlIChzLCB4KSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTS5jYWxsZXJfaWRlbnRpdHlcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiBCaWdhcnJheVxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cblxudHlwZSAnYSBtID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbmxldCBvZl9iaWdzdHJpbmcgKHR5cGUgYSkgbSBiaWdzdHJpbmcgPVxuICBsZXQgbW9kdWxlIE0gPSAodmFsIG0gOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgdCA9IE0uYmluX3JlYWRfdCBiaWdzdHJpbmcgfnBvc19yZWYgaW5cbiAgbGV0IGJpZ3N0cmluZ19sZW5ndGggPSBBcnJheTEuZGltIGJpZ3N0cmluZyBpblxuICAobWF0Y2ggIXBvc19yZWYgPSBiaWdzdHJpbmdfbGVuZ3RoIHdpdGhcbiAgIHwgdHJ1ZSAtPiAoKVxuICAgfCBmYWxzZSAtPlxuICAgICByYWlzZV9zXG4gICAgICAgWyVtZXNzYWdlXG4gICAgICAgICBcImJpbl9yZWFkX3QgZGlkIG5vdCBjb25zdW1lIHRoZSBlbnRpcmUgYnVmZmVyXCJcbiAgICAgICAgICAgfmNvbnN1bWVkOighcG9zX3JlZiA6IGludClcbiAgICAgICAgICAgKGJpZ3N0cmluZ19sZW5ndGggOiBpbnQpXSk7XG4gIHRcbjs7XG5cbigqIFVzaW5nIHRoZSBbQmlnc3RyaW5nXSBtb2R1bGUgd291bGQgaW50cm9kdWNlIGEgY3ljbGljIGRlcGVuZGVuY3kuICopXG5sZXQgY3JlYXRlX2JpZ3N0cmluZyBzaXplID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IHNpemVcblxubGV0IHRvX2JpZ3N0cmluZyA/KHByZWZpeF93aXRoX2xlbmd0aCA9IGZhbHNlKSAodHlwZSBhKSBtIHQgPVxuICBsZXQgbW9kdWxlIE0gPSAodmFsIG0gOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgbGV0IHRfbGVuZ3RoID0gTS5iaW5fc2l6ZV90IHQgaW5cbiAgbGV0IGJpZ3N0cmluZ19sZW5ndGggPVxuICAgIGlmIHByZWZpeF93aXRoX2xlbmd0aCB0aGVuIHRfbGVuZ3RoICsgOCAoKiB0aGUgc2l6ZSBvZiBhIDY0LWJpdCBpbnQgKikgZWxzZSB0X2xlbmd0aFxuICBpblxuICBsZXQgYmlnc3RyaW5nID0gY3JlYXRlX2JpZ3N0cmluZyBiaWdzdHJpbmdfbGVuZ3RoIGluXG4gIGxldCBwb3MgPVxuICAgIGlmIHByZWZpeF93aXRoX2xlbmd0aFxuICAgIHRoZW4gQmluX3Byb3QuV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCBiaWdzdHJpbmcgfnBvczowIHRfbGVuZ3RoXG4gICAgZWxzZSAwXG4gIGluXG4gIGxldCBwb3MgPSBNLmJpbl93cml0ZV90IGJpZ3N0cmluZyB+cG9zIHQgaW5cbiAgYXNzZXJ0IChwb3MgPSBiaWdzdHJpbmdfbGVuZ3RoKTtcbiAgYmlnc3RyaW5nXG47O1xuXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMlxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMlxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMlxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMlxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMlxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlLlYxXG5tb2R1bGUgT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUxLlYxXG5tb2R1bGUgT2ZfYmluYWJsZTJfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUyLlYxXG5tb2R1bGUgT2ZfYmluYWJsZTNfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUzLlYxXG5tb2R1bGUgT2Zfc2V4cGFibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3NleHBhYmxlLlYxXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2Zfc3RyaW5nYWJsZS5WMVxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUgPSBzaWdcbiAgICAgIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9uc1xuXG4gICAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gICAgZW5kXG5cbiAgICAoKiBDaGVjayB0aGF0IG9ubHkgdGhlIGZ1bmN0aW9ucyAmIHNoYXBlIGFyZSBzdWZmaWNpZW50IGZvciBbQEBkZXJpdmluZyBiaW5faW9dLiBUaGVcbiAgICAgICBmYWN0IHRoYXQgdGhpcyBmdW5jdG9yIHR5cGVjaGVja3MgaXMsIGl0c2VsZiwgdGhlIHRlc3QuICopXG4gICAgbW9kdWxlIF8gKFggOiBTX29ubHlfZnVuY3Rpb25zX2FuZF9zaGFwZSkgOiBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBYLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZFxuICBlbmQpXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5QcmludGZ9W0Jhc2UuUHJpbnRmXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIEJhc2UuUHJpbnRmICgqKiBAb3BlbiAqKVxuXG5sZXQgZXByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmVwcmludGZcbmxldCBmcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwuZnByaW50ZlxubGV0IGtmcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwua2ZwcmludGZcbmxldCBwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5wcmludGZcblxuXG4oKiogcHJpbnQgdG8gc3RkZXJyOyBleGl0IDEgKilcbmxldCBleGl0ZiBmbXQgPVxuICBrc3ByaW50ZlxuICAgIChmdW4gcyAoKSAtPlxuICAgICAgIGVwcmludGYgXCIlc1xcbiUhXCIgcztcbiAgICAgICBleGl0IDEpXG4gICAgZm10XG47O1xuXG50eXBlIHByaW50ZiA9IHsgcHJpbnRmIDogJ2EuICgnYSwgQnVmZmVyLnQsIHVuaXQpIGZvcm1hdCAtPiAnYSB9XG5cbmxldCBjb2xsZWN0X3RvX3N0cmluZyBmID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGRvbmVfID0gcmVmIGZhbHNlIGluXG4gIGxldCBwcmludGYgZm10ID1cbiAgICBrYnByaW50ZlxuICAgICAgKGZ1biBidWYgLT5cbiAgICAgICAgIGlmICFkb25lX1xuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIEJ1ZmZlci5yZXNldCBidWY7XG4gICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW3ByaW50Zl0gdXNlZCBhZnRlciBbY29sbGVjdF90b19zdHJpbmddIHJldHVybmVkXCJdKSlcbiAgICAgIGJ1ZlxuICAgICAgZm10XG4gIGluXG4gIGYgeyBwcmludGYgfTtcbiAgZG9uZV8gOj0gdHJ1ZTtcbiAgbGV0IG91dHB1dCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgb3V0cHV0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbigqIEFsbCB0aGUgdHlwZXMgYXMgZXhwb3NlZCBpbiB0aGUgbWxpIGFyZSBkZWZpbmVkIGluIHRoaXMgW1R5cGVzXSBtb2R1bGUuICBUaGUgcmVzdCBvZlxuICAgdGhpcyBmaWxlIGlzIHNpbXBseSBvdmVycmlkaW5nIGFsbCB0aGUgYmluX2lvLCBjb21wYXJlLCBhbmQgc2V4cCBmdW5jdGlvbnMgdG8gcmFpc2VcbiAgIGV4Y2VwdGlvbnMuICopXG5tb2R1bGUgVHlwZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5vYm9keSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTm9ib2R5XCJcbiAgZW5kXG5cbiAgbW9kdWxlIE1lID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJNZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBSZWFkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gWyBgUmVhZCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFdyaXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gWyBgV2hvX2Nhbl93cml0ZSBvZiBNZS50IF0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIldyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIEltbXV0YWJsZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBgV2hvX2Nhbl93cml0ZSBvZiBOb2JvZHkudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJJbW11dGFibGVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBXcml0ZS50XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlJlYWRfd3JpdGVcIlxuICBlbmRcblxuICBtb2R1bGUgVXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgJ2FcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiVXBwZXJfYm91bmRcIlxuICBlbmRcbmVuZFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4oKiBUaGlzIGlzIGFuIGV4cGxpY2l0IG1vZHVsZSB0eXBlIGluc3RlYWQgb2YganVzdCBnaXZlbiBpbmxpbmUgYXMgdGhlIHJldHVybiBzaWduYXR1cmUgb2ZcbiAgIFtPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMV0gdG8gYXZvaWQgYW4gdW51c2VkIHZhbHVlIHdhcm5pbmcgd2l0aCBiaW5faW8gdmFsdWVzLiAqKVxubW9kdWxlIHR5cGUgU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbigqIE92ZXJyaWRlIGFsbCBiaW5faW8sIHNleHAsIGNvbXBhcmUgZnVuY3Rpb25zIHRvIHJhaXNlIGV4Y2VwdGlvbnMgKilcbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoTmFtZSA6IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gIGVuZCkgOiBTZXhwYWJsZV9iaW5hYmxlX2NvbXBhcmFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXQgc2V4cF9vZl90IF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLnNleHBfb2ZfdF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IHRfb2Zfc2V4cCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy50X29mX3NleHBdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBjb21wYXJlIF8gXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuY29tcGFyZV1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IGhhc2hfZm9sZF90IF8gXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuaGFzaF9mb2xkX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X3NleHBfZ3JhbW1hciBfID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIEJhc2UuTm90aGluZy50X3NleHBfZ3JhbW1hclxuXG4gIGluY2x1ZGVcbiAgICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICBlbmQpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIHNlcmlhbGl6YXRpb25cIiBOYW1lLm5hbWUgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSBfID1cbiAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgdXNlZCAlcyBiaW5faW8gZGVzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gIGVuZCkgOiBzaWdcbiAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9wb2x5XVxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKFQpXG5cbiAgdHlwZSB0ID0gVC50IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBOb2JvZHkgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTm9ib2R5KVxuICAgIG1vZHVsZSBNZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5NZSlcbiAgICBtb2R1bGUgUmVhZCA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkKVxuICAgIG1vZHVsZSBXcml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Xcml0ZSlcbiAgICBtb2R1bGUgUmVhZF93cml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkX3dyaXRlKVxuICAgIG1vZHVsZSBJbW11dGFibGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuSW1tdXRhYmxlKVxuXG4gICAgdHlwZSBub2JvZHkgPSBOb2JvZHkudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSBtZSA9IE1lLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUeXBlcy5VcHBlcl9ib3VuZClcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVHlwZXMuVXBwZXJfYm91bmQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgdHlwZSByZWFkID0gVjEuUmVhZC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIHdyaXRlID0gVjEuV3JpdGUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgaW1tdXRhYmxlID0gVjEuSW1tdXRhYmxlLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgcmVhZF93cml0ZSA9IFYxLlJlYWRfd3JpdGUudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSAnYSBwZXJtcyA9ICdhIFYxLlVwcGVyX2JvdW5kLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxubW9kdWxlIEV4cG9ydCA9IFN0YWJsZS5FeHBvcnRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENvbXBhcmF0b3IgPSBCYXNlLkNvbXBhcmF0b3JcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgQ29tcGFyYXRvci50ID0gcHJpdmF0ZVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICB9XG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIENvbXBhcmF0b3Igd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG5pbmNsdWRlIChDb21wYXJhdG9yIDogQmFzZV9tYXNrKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSB0ID0gcHJpdmF0ZVxuICAgICAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gICAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcblxuICAgIGxldCBtYWtlID0gbWFrZVxuXG4gICAgbW9kdWxlIE1ha2UgPSBNYWtlXG4gICAgbW9kdWxlIE1ha2UxID0gTWFrZTFcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFJlc3VsdCA9IEJhc2UuUmVzdWx0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgPVxuICAgICAgfCBPayBvZiAnYVxuICAgICAgfCBFcnJvciBvZiAnYlxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT4gRXJyb3IgKGYyIGVycilcbiAgICAgIHwgT2sgeCAtPiBPayAoZjEgeClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjFfc3RhYmxlX3VuaXRfdGVzdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChzdHJpbmcsIGludCkgVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgICBsZXQgdGVzdHMgPVxuICAgICAgWyBWMS5PayBcImZvb1wiLCBcIihPayBmb28pXCIsIFwiXFwwMDBcXDAwM2Zvb1wiOyBWMS5FcnJvciA3LCBcIihFcnJvciA3KVwiLCBcIlxcMDAxXFwwMDdcIiBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgUmVzdWx0XG4iLCIoKiogQW4gaW50ZXJmYWNlIGZvciBjcmVhdGluZyB1bml0IHRlc3RzIHRvIGNoZWNrIHN0YWJpbGl0eSBvZiBzZXhwIGFuZCBiaW4taW9cbiAgICBzZXJpYWxpemF0aW9ucyAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuXG5cbiAgKCoqIFt0ZXN0c10gaXMgYSBsaXN0IG9mICh2YWx1ZSwgc2V4cC1yZXByZXNlbnRhdGlvbiwgYmluLWlvLXJlcHJlc2VudGF0aW9uKSB0cmlwbGVzLlxuICAgICAgVGhlIHVuaXQgdGVzdHMgY2hlY2sgdGhhdCB0aGUgdHlwZSBwcm9wZXJseSBzZXJpYWxpemVzIGFuZFxuICAgICAgZGUtc2VyaWFsaXplcyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHJlcHJlc2VudGF0aW9ucy4gKilcbiAgdmFsIHRlc3RzIDogKHQgKiBzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbmVuZFxuXG4oKiogVW5vcmRlcmVkIGNvbnRhaW5lciB0ZXN0cyBhcmUgZm9yIHR5cGVzIHdpdGggc2VyaWFsaXphdGlvbnMgdGhhdCB3aWxsIGNvbnRhaW4gYVxuICAgIGNlcnRhaW4gc2V0IG9mIGVsZW1lbnRzIChlYWNoIHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIHNleHAgb3IgYmluLWlvIHN0cmluZykgd2hpY2ggbWF5XG4gICAgYXBwZWFyIGluIGFueSBvcmRlciwgc3VjaCBhcyBoYXNoIHRhYmxlcyBhbmQgaGFzaCBzZXRzLiAqKVxubW9kdWxlIFVub3JkZXJlZF9jb250YWluZXJfdGVzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc2V4cHMgOiBzdHJpbmcgbGlzdFxuICAgIDsgYmluX2lvX2hlYWRlciA6IHN0cmluZ1xuICAgIDsgYmluX2lvX2VsZW1lbnRzIDogc3RyaW5nIGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIHR5cGUgVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgdGVzdHMgOiAodCAqIFVub3JkZXJlZF9jb250YWluZXJfdGVzdC50KSBsaXN0XG5lbmRcbiIsImxldCAoIHwhICkgeCB5ID0geCB8PiB5XG4iLCJpbmNsdWRlIEJhc2UuT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxuXG5sZXQgbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgaSA9IGlmIGkgPCAwIHRoZW4gaSArIGxlbmd0aF9mdW4gdCBlbHNlIGlcblxubGV0IHNsaWNlIH5sZW5ndGhfZnVuIH5zdWJfZnVuIHQgc3RhcnQgc3RvcCA9XG4gIGxldCBzdG9wID0gaWYgc3RvcCA9IDAgdGhlbiBsZW5ndGhfZnVuIHQgZWxzZSBzdG9wIGluXG4gIGxldCBwb3MgPSBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBzdGFydCBpblxuICBsZXQgbGVuID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RvcCAtIHBvcyBpblxuICBzdWJfZnVuIHQgfnBvcyB+bGVuXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU2VxdWVuY2VcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgbW9kdWxlIEJpbmFibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgQmFzZS5TZXF1ZW5jZS50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuU2VxdWVuY2Uub2ZfbGlzdFxuICAgIGxldCB0b19iaW5hYmxlID0gQmFzZS5TZXF1ZW5jZS50b19saXN0XG4gIGVuZClcblxubW9kdWxlIFN0ZXAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGVwXG5cbiAgdHlwZSAoJ2EsICdzKSB0ID0gKCdhLCAncykgU3RlcC50ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgJ3NcbiAgICB8IFlpZWxkIG9mICdhICogJ3NcbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgdHlwZSBIZWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgcG9wX21pbiA6ICdhIHQgLT4gKCdhICogJ2EgdCkgb3B0aW9uXG5lbmRcblxubGV0IG1lcmdlX2FsbCAobW9kdWxlIEhlYXAgOiBIZWFwKSBzZXFzIH5jb21wYXJlID1cbiAgbGV0IG1vZHVsZSBNZXJnZV9hbGxfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBoZWFwIDogKCdhICogJ2EgQmFzZS5TZXF1ZW5jZS50KSBIZWFwLnRcbiAgICAgIDsgbm90X3lldF9pbl9oZWFwIDogJ2EgQmFzZS5TZXF1ZW5jZS50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlID0gRmllbGRzLmNyZWF0ZVxuICBlbmRcbiAgaW5cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDpcbiAgICAgIChNZXJnZV9hbGxfc3RhdGUuY3JlYXRlXG4gICAgICAgICB+aGVhcDooSGVhcC5jcmVhdGUgfmNvbXBhcmU6KEJhc2UuQ29tcGFyYWJsZS5saWZ0IGNvbXBhcmUgfmY6ZnN0KSlcbiAgICAgICAgIH5ub3RfeWV0X2luX2hlYXA6c2VxcylcbiAgICB+ZjooZnVuIHsgaGVhcDsgbm90X3lldF9pbl9oZWFwIH0gLT5cbiAgICAgIG1hdGNoIG5vdF95ZXRfaW5faGVhcCB3aXRoXG4gICAgICB8IHNlcSA6OiBub3RfeWV0X2luX2hlYXAgLT5cbiAgICAgICAgKG1hdGNoIEV4cGVydC5uZXh0X3N0ZXAgc2VxIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgbm90X3lldF9pbl9oZWFwOyBoZWFwIH1cbiAgICAgICAgIHwgU2tpcCBzZXEgLT4gU2tpcCB7IG5vdF95ZXRfaW5faGVhcCA9IHNlcSA6OiBub3RfeWV0X2luX2hlYXA7IGhlYXAgfVxuICAgICAgICAgfCBZaWVsZCAoZWx0LCBzZXEpIC0+IFNraXAgeyBub3RfeWV0X2luX2hlYXA7IGhlYXAgPSBIZWFwLmFkZCBoZWFwIChlbHQsIHNlcSkgfSlcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIEhlYXAucG9wX21pbiBoZWFwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICAgICB8IFNvbWUgKChlbHQsIHNlcSksIGhlYXApIC0+IFlpZWxkIChlbHQsIHsgaGVhcDsgbm90X3lldF9pbl9oZWFwID0gWyBzZXEgXSB9KSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcbm9wZW4gUGVybXMuRXhwb3J0XG5tb2R1bGUgQXJyYXkgPSBCYXNlLkFycmF5XG5tb2R1bGUgQ29yZV9zZXF1ZW5jZSA9IFNlcXVlbmNlXG5cbmluY2x1ZGUgKFxuICBCYXNlLkFycmF5IDpcbiAgc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgc2V4cF9ncmFtbWFyXVxuICBlbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxubW9kdWxlIFByaXZhdGUgPSBCYXNlLkFycmF5LlByaXZhdGVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkFycmF5XG5cbiAgbGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbiAgbGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuICA7O1xuXG4gIGxldCBuZ2V0IHQgaSA9IHQuKG5vcm1hbGl6ZSB0IGkpXG4gIGxldCBuc2V0IHQgaSB2ID0gdC4obm9ybWFsaXplIHQgaSkgPC0gdlxuXG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIG9wZW4gQmFzZS5BcnJheVxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgc2V0ID0gc2V0XG4gIGVuZFxuXG4gICgqIFNlZSBPQ2FtbCBwZXJmIG5vdGVzIGZvciB3aHkgdGhlc2UgYXJyYXkgYmxpdHMgYXJlIHNwZWNpYWwgY2FzZWQgLS0gaW4gcGFydGljdWxhcixcbiAgICAgdGhlIHNlY3Rpb24gZW50aXRsZWQgXCJGYXN0LCBTbG93IGFuZCBJbmNvcnJlY3QgQXJyYXkgYmxpdHNcIiBvZlxuICAgICBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMzAyMjAwMDAyMjkvaHR0cDovL2phbmVzdHJlZXQuZ2l0aHViLmNvbS9vY2FtbC1wZXJmLW5vdGVzLmh0bWwgKilcbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIHR5cGUgdF8gPSBpbnQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6dF9cbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRfXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIFRlc3RfYmxpdC5NYWtlX2FuZF90ZXN0XG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgIGxldCBlcXVhbCA9ICggPSApXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxIGVsc2UgMFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIH5sZW4gMFxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICAgIHR5cGUgdF8gPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBtb2R1bGUgVW5zYWZlX2JsaXQgPSBzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzp0X1xuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6dF9cbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgICAgIGxldCBlcXVhbCA9IEJhc2UuRmxvYXQuZXF1YWxcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEuIGVsc2UgMC5cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDAuXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUGVybWlzc2lvbmVkID0gc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZSBDb250YWluZXIuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmxpdC5TMV9wZXJtaXNzaW9ucyB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMV9wZXJtaXNzaW9ucyB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EsIF8pIHQgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICBleHRlcm5hbCBnZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gKGZsb2F0LCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooaW50IC0+ICdhKSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb3B5X21hdHJpeFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgYXBwZW5kIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvbmNhdCA6ICgnYSwgWz4gcmVhZCBdKSB0IGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvcHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgZmlsbCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkaW5nX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICdiICogJ2MpXG4gICAgLT4gKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAnYiAqICdjKVxuICAgIC0+ICdiICogKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbWFwaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGl0ZXJpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGZvbGRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW5pdDonYiAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiAqICdjKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiAqICdjKVxuICAgIC0+ICdiICogKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiBpbml0OidiIC0+ICdiXG5cbiAgdmFsIHNvcnRcbiAgICA6ICA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBzdGFibGVfc29ydCA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgaXNfc29ydGVkIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG4gIHZhbCBpc19zb3J0ZWRfc3RyaWN0bHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IGJvb2xcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvbmNhdF9tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvbmNhdF9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOihpbnQgLT4gJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHQgb3B0aW9uXG5cbiAgdmFsIHRyYW5zcG9zZV9leG5cbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG5vcm1hbGl6ZSA6ICgnYSwgXykgdCAtPiBpbnQgLT4gaW50XG4gIHZhbCBzbGljZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG5nZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIG5zZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAoJ2Egb3B0aW9uLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvcl9hbGxpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgaXRlcjJfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBtYXAyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOignYSAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdhIC0+ICdiIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZvcl9hbGwyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOignYSAtPiAnYiAtPiBib29sKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZXhpc3RzMl9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgc3dhcCA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiB1bml0XG4gIHZhbCByZXYgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X21hcCA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXBpIDogJ2EgbGlzdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGY6KCdhIC0+ICdhKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBmaW5kX21hcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGludCAqICdhXG4gIHZhbCBmaW5kX21hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gKCdhICogJ2EpIG9wdGlvblxuXG4gIHZhbCByZWR1Y2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgdmFsIHBlcm11dGVcbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50XG4gICAgLT4gP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gdW5pdFxuXG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBzb3J0ZWRfY29weSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGxhc3QgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gYm9vbFxuICB2YWwgdG9fc2VxdWVuY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBJbnQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoaW50LCAncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBCbGl0LlNfcGVybWlzc2lvbnMgd2l0aCB0eXBlICdwZXJtcyB0IDo9ICdwZXJtcyB0XG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOls+IHJlYWQgXSB0XG4gICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgLT4gZHN0Ols+IHdyaXRlIF0gdFxuICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGZsb2F0LCAncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBCbGl0LlNfcGVybWlzc2lvbnMgd2l0aCB0eXBlICdwZXJtcyB0IDo9ICdwZXJtcyB0XG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOls+IHJlYWQgXSB0XG4gICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgLT4gZHN0Ols+IHdyaXRlIF0gdFxuICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICB2YWwgb2ZfYXJyYXlfaWQgOiAnYSBhcnJheSAtPiAoJ2EsIFs8IHJlYWRfd3JpdGUgXSkgdFxuICB2YWwgdG9fYXJyYXlfaWQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiAnYSBhcnJheVxuICB2YWwgdG9fc2VxdWVuY2VfaW1tdXRhYmxlIDogKCdhLCBbPiBpbW11dGFibGUgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgaW5jbHVkZSBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHR5cGVyZXBdXG5cbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5JbnRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuRmxvYXRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBsZXQgdG9fYXJyYXlfaWQgPSBGbi5pZFxuICBsZXQgb2ZfYXJyYXlfaWQgPSBGbi5pZFxuXG4gIGluY2x1ZGUgKFQgOiBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICBsZXQgdG9fYXJyYXkgPSBjb3B5XG4gIGxldCB0b19zZXF1ZW5jZV9pbW11dGFibGUgPSB0b19zZXF1ZW5jZV9tdXRhYmxlXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBDb250YWluZXIuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIGV4dGVybmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAnYSB0IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gZmxvYXQgdFxuICB2YWwgaW5pdCA6IGludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG1ha2VfbWF0cml4IDogZGlteDppbnQgLT4gZGlteTppbnQgLT4gJ2EgLT4gJ2EgdCB0XG4gIHZhbCBjb3B5X21hdHJpeCA6ICdhIHQgdCAtPiAnYSB0IHRcbiAgdmFsIGFwcGVuZCA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBjb25jYXQgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgZmlsbCA6ICdhIHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+IHVuaXRcblxuICBpbmNsdWRlIEJsaXQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBmb2xkaW5nX21hcCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiAqICdjKSAtPiAnYyB0XG4gIHZhbCBmb2xkX21hcCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiAqICdjKSAtPiAnYiAqICdjIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgaXRlcmkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiXG4gIHZhbCBmb2xkaW5nX21hcGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdjIHRcbiAgdmFsIGZvbGRfbWFwaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2IgKiAnYyB0XG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gaW5pdDonYiAtPiAnYlxuICB2YWwgc29ydCA6ID9wb3M6aW50IC0+ID9sZW46aW50IC0+ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBzdGFibGVfc29ydCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IGJvb2xcbiAgdmFsIG1lcmdlIDogJ2EgdCAtPiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdFxuICB2YWwgY29uY2F0X21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgY29uY2F0X21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25pX3RmIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0IDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0cmFuc3Bvc2UgOiAnYSB0IHQgLT4gJ2EgdCB0IG9wdGlvblxuICB2YWwgdHJhbnNwb3NlX2V4biA6ICdhIHQgdCAtPiAnYSB0IHRcbiAgdmFsIG5vcm1hbGl6ZSA6ICdhIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgbmdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICdhIG9wdGlvbiB0IC0+ICdhIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgZmlsdGVyX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgaXRlcjJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCdhIC0+ICdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG1hcDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCdhIC0+ICdiIC0+ICdjKSAtPiAnYyB0XG4gIHZhbCBmb2xkMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gaW5pdDonYyAtPiBmOignYyAtPiAnYSAtPiAnYiAtPiAnYykgLT4gJ2NcbiAgdmFsIGZvcl9hbGwyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlcmkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBzd2FwIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXYgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X21hcCA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXBpIDogJ2EgbGlzdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogJ2EgdCAtPiBmOignYSAtPiAnYSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBmaW5kX21hcF9leG4gOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2JcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGludCAqICdhXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2JcbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIDogJ2EgdCAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhICogJ2EpIG9wdGlvblxuICB2YWwgcmVkdWNlIDogJ2EgdCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogJ2EgdCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2FcbiAgdmFsIHBlcm11dGUgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ID9wb3M6aW50IC0+ID9sZW46aW50IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IpIHQgLT4gJ2EgdCAqICdiIHRcbiAgdmFsIHNvcnRlZF9jb3B5IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGxhc3QgOiAnYSB0IC0+ICdhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgdG9fc2VxdWVuY2UgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICdhIHQgLT4gJ2EgQ29yZV9zZXF1ZW5jZS50XG5lbmRcblxuaW5jbHVkZSAoVCA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgYXJyYXkpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRfYVxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5JbnRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5GbG9hdFxuXG4gIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgXyAoTSA6IFMpIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm0pIHRfXG5cbiAgaW5jbHVkZSBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ3Blcm0pIHQgOj0gKCdhLCAncGVybSkgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICgnYSwgLSdwZXJtKSB0XyA9ICdhIHRcbmVuZFxuXG5tb2R1bGUgXyAoTSA6IFBlcm1pc3Npb25lZCkgOiBzaWdcbiAgdHlwZSAnYSB0X1xuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0X1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgJ2EgdF8gPSAoJ2EsIHJlYWRfd3JpdGUpIHRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnZiwgJ3MpIHQgPSAoJ2YsICdzKSBCYXNlLkVpdGhlci50ID1cbiAgICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICAgIHwgU2Vjb25kIG9mICdzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCB0eXBlcmVwXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEZpcnN0IHgxIC0+IEZpcnN0IChmMSB4MSlcbiAgICAgIHwgU2Vjb25kIHgyIC0+IFNlY29uZCAoZjIgeDIpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQmFzZS5FaXRoZXJcblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5laXRoZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmVpdGhlclxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5cbiAgICB0eXBlIHQgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgPVxuICAgICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICAgIDsgcG9zX2JvbCA6IGludFxuICAgICAgOyBwb3NfY251bSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBoYXNoLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgdG9fc3RyaW5nID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnNleHBfb2ZfdFxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbSW5mb10sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gaXMgbWFueSBwbGFjZXMgcGxhY2VzIGFzIHBvc3NpYmxlLlxuICAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXcgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIEluZm9faW50ZlxuXG5tb2R1bGUgdHlwZSBTID0gQmFzZS5JbmZvLlNcblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24wXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlX2V4biA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBleG4gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNleHApXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0IHw+IFslc2V4cF9vZjogdF1cbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gRXhuLmNyZWF0ZV9zXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kIChJbmZvIDogQmFzZS5JbmZvLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgSW5mb1xuXG4gIG1vZHVsZSBJbnRlcm5hbF9yZXByID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbmFibGVfZXhuID0gQmluYWJsZV9leG4uU3RhYmxlXG5cbiAgICAgIG1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICAoKiBbc2V4cF9vZl90XSBhcyBkZWZpbmVkIGhlcmUgaXMgdW5zdGFibGU7IHRoaXMgaXMgT0sgYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgICAgICAgIFt0X29mX3NleHBdLiAgW3NleHBfb2ZfdF0gaXMgb25seSB1c2VkIHRvIHByb2R1Y2UgYSBzZXhwIHRoYXQgaXMgbmV2ZXJcbiAgICAgICAgICAgICBkZXNlcmlhbGl6ZWQgYXMgYSBbU291cmNlX2NvZGVfcG9zaXRpb25dLiAqKVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8uSW50ZXJuYWxfcmVwci50ID1cbiAgICAgICAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgICAgICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBFeG4gb2YgQmluYWJsZV9leG4uVjEudFxuICAgICAgICAgIHwgU2V4cCBvZiBTZXhwLnRcbiAgICAgICAgICB8IFRhZ19zZXhwIG9mIHN0cmluZyAqIFNleHAudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlYxLnQgb3B0aW9uXG4gICAgICAgICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgICAgICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICAgICAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgICAgICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFN0YWJsZS5WMlxuXG4gICAgbGV0IHRvX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuICAgIGxldCBvZl9pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLm9mX2luZm9cbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGhhc2hdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnRlcm5hbF9yZXByLlN0YWJsZS5WMilcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSBJbmZvLnNleHBfb2ZfdFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBJbmZvLnRfb2Zfc2V4cFxuICAgICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHNleHBfb2ZfdFxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSB0X29mX3NleHBcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5pbmNsdWRlIEV4dGVuZCAoQmFzZS5JbmZvKVxuXG4iLCJpbmNsdWRlIEJhc2UuRXJyb3JcbmluY2x1ZGUgSW5mby5FeHRlbmQgKEJhc2UuRXJyb3IpXG5cbmxldCBmYWlsd2l0aHMgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZmFpbHdpdGhwID9zdHJpY3QgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3JfZXJyb3JcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWdfd2l0aF91bml0X2V4cGVjdCA9IHN0cnVjdFxuICBtb2R1bGUgSU9fcnVuID0gQmFzZS5Pcl9lcnJvclxuXG4gIG1vZHVsZSBJT19mbHVzaCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnLklPX2ZsdXNoXG5cbiAgICBsZXQgdG9fcnVuIHQgPSBCYXNlLk9yX2Vycm9yLnJldHVybiB0XG4gIGVuZFxuXG4gIGxldCBydW4gZiA9IG9rX2V4biAoZiAoKSlcbiAgbGV0IHNhbml0aXplIHMgPSBzXG4gIGxldCBmbHVzaGVkICgpID0gdHJ1ZVxuICBsZXQgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBFeHBlY3RfdGVzdF9jb25maWcudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbmVuZFxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBJTyA9IEJhc2UuT3JfZXJyb3JcbiAgbW9kdWxlIElPX3J1biA9IElPXG5cbiAgbW9kdWxlIElPX2ZsdXNoID0gc3RydWN0XG4gICAgaW5jbHVkZSBJT1xuXG4gICAgbGV0IHRvX3J1biB0ID0gdFxuICBlbmRcblxuICBsZXQgcnVuIGYgPSBva19leG4gKGYgKCkpXG4gIGxldCBmbHVzaGVkICgpID0gdHJ1ZVxuICBsZXQgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBFeHBlY3RfdGVzdF9jb25maWcudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgbGV0IHNhbml0aXplIHMgPSBzXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMS50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYgPSBSZXN1bHQuU3RhYmxlLlYxLm1hcCB4IH5mMTpmIH5mMjpGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMi50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYgPSBSZXN1bHQuU3RhYmxlLlYxLm1hcCB4IH5mMTpmIH5mMjpGbi5pZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2tfaW50Zlxub3BlbiBCYXNlX3F1aWNrY2hlY2tcbm1vZHVsZSBGbG9hdCA9IEJhc2UuRmxvYXRcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBPcHRpb24gPSBCYXNlLk9wdGlvblxuXG5tb2R1bGUgUG9seW1vcnBoaWNfdHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB2YXJpYW50MiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdmFyaWFudDMgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdmFyaWFudDQgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB2YXJpYW50NSA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdmFyaWFudDYgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgfCBgRiBvZiAnZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IpIHR1cGxlMiA9ICdhICogJ2IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYykgdHVwbGUzID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0dXBsZTQgPSAnYSAqICdiICogJ2MgKiAnZCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHR1cGxlNSA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB0dXBsZTYgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlICogJ2ZcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgJ3IpIGZuMiA9ICdhIC0+ICdiIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsICdyKSBmbjMgPSAnYSAtPiAnYiAtPiAnYyAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsICdyKSBmbjQgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAncikgZm41ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgLSdmLCAncikgZm42ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbmVuZFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuXG4gIGxldCBvZl9oYXNoICh0eXBlIGEpIChtb2R1bGUgTSA6IERlcml2aW5nX2hhc2ggd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgb2ZfaGFzaF9mb2xkIE0uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNlxuICBsZXQgb2ZfcHJlZGljYXRlIGEgYiB+ZiA9IHVubWFwICh2YXJpYW50MiBhIGIpIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBgQSB4IGVsc2UgYEIgeClcbiAgbGV0IHNpbmdsZXRvbiAoKSA9IG9wYXF1ZVxuICBsZXQgZG91YmxldG9uIGYgPSBvZl9wcmVkaWNhdGUgKHNpbmdsZXRvbiAoKSkgKHNpbmdsZXRvbiAoKSkgfmZcbiAgbGV0IGVudW0gXyB+ZiA9IHVubWFwIGludCB+ZlxuXG4gIGxldCBvZl9saXN0IGxpc3QgfmVxdWFsID1cbiAgICBsZXQgZiB4ID1cbiAgICAgIG1hdGNoIExpc3QuZmluZGkgbGlzdCB+ZjooZnVuIF8geSAtPiBlcXVhbCB4IHkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfbGlzdDogdmFsdWUgbm90IGZvdW5kXCJcbiAgICAgIHwgU29tZSAoaSwgXykgLT4gaVxuICAgIGluXG4gICAgZW51bSAoTGlzdC5sZW5ndGggbGlzdCkgfmZcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGYgKCkpIHggfnNpemUgfmhhc2gpXG5cbiAgbGV0IGNvbXBhcmlzb24gfmNvbXBhcmUgfmVxIH5sdCB+Z3QgPVxuICAgIHVubWFwXG4gICAgICAodmFyaWFudDMgbHQgKHNpbmdsZXRvbiAoKSkgZ3QpXG4gICAgICB+ZjooZnVuIHggLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlIHggZXEgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBgQSB4IGVsc2UgaWYgYyA+IDAgdGhlbiBgQyB4IGVsc2UgYEIgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJhdG9yXG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBzaW5nbGV0b24gPSByZXR1cm5cblxuICBsZXQgZG91YmxldG9uIHggeSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGlmIFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tIHRoZW4geCBlbHNlIHkpXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZiAoKSkgfnNpemUgfnJhbmRvbSlcblxuICBsZXQgb2Zfc2VxdWVuY2UgfnAgc2VxID1cbiAgICBpZiBGbG9hdC4oIDw9ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiBwcm9iYWJpbGl0eSBbJWZdIG91dCBvZiBib3VuZHNcIiBwKTtcbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5maW5pc2g6KGZ1biAoKSAtPiBmYWlsd2l0aCBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcmFuIG91dCBvZiB2YWx1ZXNcIilcbiAgICAgIH5mOihmdW4gKCkgeCB+ayAtPiB3ZWlnaHRlZF91bmlvbiBbIHAsIHNpbmdsZXRvbiB4OyAxLiAtLiBwLCBvZl9mdW4gayBdKVxuICA7O1xuXG4gIGxldCByZWMgYm91bmRlZF9nZW9tZXRyaWMgfnAgfm1heGltdW0gaW5pdCA9XG4gICAgaWYgaW5pdCA9IG1heGltdW1cbiAgICB0aGVuIHNpbmdsZXRvbiBtYXhpbXVtXG4gICAgZWxzZVxuICAgICAgd2VpZ2h0ZWRfdW5pb25cbiAgICAgICAgWyBwLCBzaW5nbGV0b24gaW5pdFxuICAgICAgICA7IDEuIC0uIHAsIG9mX2Z1biAoZnVuICgpIC0+IGJvdW5kZWRfZ2VvbWV0cmljIH5wIH5tYXhpbXVtIChpbml0ICsgMSkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgZ2VvbWV0cmljIH5wIGluaXQgPSBib3VuZGVkX2dlb21ldHJpYyB+cCB+bWF4aW11bTpJbnQubWF4X3ZhbHVlIGluaXRcbiAgbGV0IHNtYWxsX25vbl9uZWdhdGl2ZV9pbnQgPSBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludFxuICBsZXQgc21hbGxfcG9zaXRpdmVfaW50ID0gc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50XG4gIGxldCBsaXN0X3dpdGhfbGVuZ3RoIGxlbmd0aCB0ID0gbGlzdF93aXRoX2xlbmd0aCB0IH5sZW5ndGhcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2XG4gIGxldCBmbjIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjJcbiAgbGV0IGZuMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuM1xuICBsZXQgZm40ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm40XG4gIGxldCBmbjUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjVcbiAgbGV0IGZuNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNlxuXG4gIGxldCBjb21wYXJlX2ZuIGRvbSA9XG4gICAgZm4gZG9tIGludCA+PnwgZnVuIGdldF9pbmRleCB4IHkgLT4gWyVjb21wYXJlOiBpbnRdIChnZXRfaW5kZXggeCkgKGdldF9pbmRleCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbF9mbiBkb20gPSBjb21wYXJlX2ZuIGRvbSA+PnwgZnVuIGNtcCB4IHkgLT4gSW50LiggPSApIChjbXAgeCB5KSAwXG5lbmRcblxubW9kdWxlIFNocmlua2VyID0gc3RydWN0XG4gIGluY2x1ZGUgU2hyaW5rZXJcblxuICBsZXQgZW1wdHkgKCkgPSBhdG9taWNcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTZcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgR2VuZXJhdG9yXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gR2VuZXJhdG9yXG4gIGVuZFxuXG4gIGluY2x1ZGUgR2VuZXJhdG9yLk1vbmFkX2luZml4XG5cbiAgbGV0IHJldHVybiA9IEdlbmVyYXRvci5yZXR1cm5cbmVuZFxuXG5tb2R1bGUgQ29uZmlndXJlIChDb25maWcgOiBRdWlja2NoZWNrX2NvbmZpZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25maWdcblxuICBsZXQgbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxuICBsZXQgcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIG5vbmRldGVybWluaXN0aWNfc3RhdGUpXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHIgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChbJWhhc2g6IHN0cmluZ10gc3RyKVxuICA7O1xuXG4gIGxldCBtYWtlX3NlZWQgc2VlZCA6IFRlc3QuQ29uZmlnLlNlZWQudCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBOb25kZXRlcm1pbmlzdGljXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHJpbmcgLT4gRGV0ZXJtaW5pc3RpYyBzdHJpbmdcbiAgOztcblxuICBsZXQgbWFrZV9zaHJpbmtfY291bnQgPSBmdW5jdGlvblxuICAgIHwgYEV4aGF1c3RpdmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgYExpbWl0IG4gLT4gblxuICA7O1xuXG4gIGxldCBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIDogVGVzdC5Db25maWcudCA9XG4gICAgeyBzZWVkID0gbWFrZV9zZWVkIChPcHRpb24udmFsdWUgc2VlZCB+ZGVmYXVsdDpkZWZhdWx0X3NlZWQpXG4gICAgOyBzaXplcyA9IE9wdGlvbi52YWx1ZSBzaXplcyB+ZGVmYXVsdDpkZWZhdWx0X3NpemVzXG4gICAgOyB0ZXN0X2NvdW50ID0gT3B0aW9uLnZhbHVlIHRyaWFscyB+ZGVmYXVsdDpkZWZhdWx0X3RyaWFsX2NvdW50XG4gICAgOyBzaHJpbmtfY291bnQgPVxuICAgICAgICBtYWtlX3Nocmlua19jb3VudCAoT3B0aW9uLnZhbHVlIHNocmlua19hdHRlbXB0cyB+ZGVmYXVsdDpkZWZhdWx0X3Nocmlua19hdHRlbXB0cylcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfdGVzdF9tICh0eXBlIGEpIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIDogKG1vZHVsZSBUZXN0LlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBPcHRpb24udmFsdWUgc2hyaW5rZXIgfmRlZmF1bHQ6U2hyaW5rZXIuYXRvbWljXG4gICAgICBsZXQgc2V4cF9vZl90ID0gT3B0aW9uLnZhbHVlIHNleHBfb2YgfmRlZmF1bHQ6WyVzZXhwX29mOiBfXVxuICAgIGVuZFxuICAgIGluXG4gICAgKG1vZHVsZSBNKVxuICA7O1xuXG4gIGxldCByYW5kb21fdmFsdWUgPyhzZWVkID0gZGVmYXVsdF9zZWVkKSA/KHNpemUgPSAzMCkgZ2VuID1cbiAgICBsZXQgcmFuZG9tID0gcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCBpblxuICAgIEdlbmVyYXRvci5nZW5lcmF0ZSBnZW4gfnNpemUgfnJhbmRvbVxuICA7O1xuXG4gIGxldCByYW5kb21fc2VxdWVuY2UgP3NlZWQgP3NpemVzIGdlbiA9XG4gICAgbGV0IGNvbmZpZyA9XG4gICAgICBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFsczooU29tZSBJbnQubWF4X3ZhbHVlKSB+c2hyaW5rX2F0dGVtcHRzOk5vbmVcbiAgICBpblxuICAgIGxldCByZXR1cm4gPSByZWYgU2VxdWVuY2UuZW1wdHkgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IHJldHVybiA6PSBzZXF1ZW5jZSk7XG4gICAgIXJldHVyblxuICA7O1xuXG4gIGxldCBpdGVyID9zZWVkID9zaXplcyA/dHJpYWxzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gU2VxdWVuY2UuaXRlciBzZXF1ZW5jZSB+ZilcbiAgOztcblxuICBsZXQgdGVzdCA/c2VlZCA/c2l6ZXMgP3RyaWFscyA/c2hyaW5rZXIgP3Nocmlua19hdHRlbXB0cyA/c2V4cF9vZiA/ZXhhbXBsZXMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuX2V4biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9vcl9lcnJvclxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3RyaWFsc1xuICAgICAgICA/c2hyaW5rZXJcbiAgICAgICAgP3Nocmlua19hdHRlbXB0c1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICA/ZXhhbXBsZXNcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3RfZGlzdGluY3RfdmFsdWVzXG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+dHJpYWxzXG4gICAgICAgIH5kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgfmNvbXBhcmVcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBTID1cbiAgICAgIENhbWwuU2V0Lk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBrZXlcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZClcbiAgICBpblxuICAgIGxldCBmYWlsIHNldCA9XG4gICAgICBsZXQgZXhwZWN0X2NvdW50ID0gZGlzdGluY3RfdmFsdWVzIGluXG4gICAgICBsZXQgYWN0dWFsX2NvdW50ID0gUy5jYXJkaW5hbCBzZXQgaW5cbiAgICAgIGxldCB2YWx1ZXMgPVxuICAgICAgICBtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHNleHBfb2ZfZWx0IC0+IFNvbWUgWyVzZXhwIChTLmVsZW1lbnRzIHNldCA6IGVsdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW5zdWZmaWNpZW50IGRpc3RpbmN0IHZhbHVlc1wiXG4gICAgICAgICAgICAodHJpYWxzIDogaW50KVxuICAgICAgICAgICAgKGV4cGVjdF9jb3VudCA6IGludClcbiAgICAgICAgICAgIChhY3R1YWxfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAodmFsdWVzIDogKEJhc2UuU2V4cC50IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gICAgaW5cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGxldCBzZXQgPSByZWYgUy5lbXB0eSBpblxuICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgc2V0IDo9IFMuYWRkIGVsdCAhc2V0O1xuICAgICAgICBpZiBTLmNhcmRpbmFsICFzZXQgPj0gZGlzdGluY3RfdmFsdWVzIHRoZW4gci5yZXR1cm4gKCkpO1xuICAgICAgZmFpbCAhc2V0KVxuICA7O1xuXG4gIGxldCB0ZXN0X2Nhbl9nZW5lcmF0ZVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgPyh0cmlhbHMgPSBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudClcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCByID0gcmVmIFtdIGluXG4gICAgbGV0IGZfYW5kX2VucXVldWUgcmV0dXJuIHggPSBpZiBmIHggdGhlbiByZXR1cm4gYENhbl9nZW5lcmF0ZSBlbHNlIHIgOj0geCA6OiAhciBpblxuICAgIG1hdGNoXG4gICAgICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZl9hbmRfZW5xdWV1ZSByZXR1cm4ucmV0dXJuKTtcbiAgICAgICAgYENhbm5vdF9nZW5lcmF0ZSlcbiAgICB3aXRoXG4gICAgfCBgQ2FuX2dlbmVyYXRlIC0+ICgpXG4gICAgfCBgQ2Fubm90X2dlbmVyYXRlIC0+XG4gICAgICAobWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2Fubm90IGdlbmVyYXRlXCJcbiAgICAgICB8IFNvbWUgc2V4cF9vZl92YWx1ZSAtPlxuICAgICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJjYW5ub3QgZ2VuZXJhdGVcIiB+YXR0ZW1wdHM6KCFyIDogdmFsdWUgbGlzdCldKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29uZmlndXJlIChzdHJ1Y3RcbiAgICBsZXQgZGVmYXVsdF9zZWVkID0gYERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcblxuICAgIGxldCBkZWZhdWx0X3RyaWFsX2NvdW50ID1cbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICB8IFczMiAtPiAxXzAwMFxuICAgIDs7XG5cbiAgICBsZXQgZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQgPSAxMF8wMDBcbiAgICBsZXQgZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMgPSBgTGltaXQgMTAwMFxuXG4gICAgbGV0IGRlZmF1bHRfc2l6ZXMgPVxuICAgICAgU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFMxID0gUzFcbm1vZHVsZSB0eXBlIFMyID0gUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gU19pbnRcbm1vZHVsZSB0eXBlIFNfcmFuZ2UgPSBTX3JhbmdlXG5cbnR5cGUgbm9ucmVjIHNlZWQgPSBzZWVkXG50eXBlIG5vbnJlYyBzaHJpbmtfYXR0ZW1wdHMgPSBzaHJpbmtfYXR0ZW1wdHNcblxubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWcgPSBRdWlja2NoZWNrX2NvbmZpZ1xubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWd1cmVkID0gUXVpY2tjaGVja19jb25maWd1cmVkXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFR5cGVyZXBfbGliLlN0ZFxuaW5jbHVkZSBCYXNlLkxpc3RcblxudHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzc29jXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBjb21wYXJlICh0eXBlIGEgYikgY29tcGFyZV9hIGNvbXBhcmVfYiA9IFslY29tcGFyZTogKGEgKiBiKSBsaXN0XVxuZW5kXG5cbmxldCB0b19zdHJpbmcgfmYgdCA9XG4gIFNleHBsaWIuU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIHggLT4gU2V4cGxpYi5TZXhwLkF0b20geCkgKG1hcCB0IH5mKSlcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdFxubGV0IGdlbl9ub25fZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfbm9uX2VtcHR5XG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3dpdGhfbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5sZW5ndGhcbjs7XG5cbmxldCBnZW5fZmlsdGVyZWQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfZmlsdGVyZWRcbmxldCBnZW5fcGVybXV0YXRpb25zID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3Blcm11dGF0aW9uc1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubGlzdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubGlzdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2thYmxlX2ludGZcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnZcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQgPSBDb252X2ZpbHRlcmVkXG5tb2R1bGUgdHlwZSBDb252MSA9IENvbnYxXG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkMSA9IENvbnZfZmlsdGVyZWQxXG5tb2R1bGUgdHlwZSBTID0gUXVpY2tjaGVjay5TXG5tb2R1bGUgdHlwZSBTMSA9IFF1aWNrY2hlY2suUzFcbm1vZHVsZSB0eXBlIFMyID0gUXVpY2tjaGVjay5TMlxubW9kdWxlIHR5cGUgU19pbnQgPSBRdWlja2NoZWNrLlNfaW50XG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252IHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6IFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID1cbnN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGUxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252MSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZFxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkIHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWQxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkMSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNodGJsX2ludGZcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gSGFzaHRibF9pbnRmLk1lcmdlX2ludG9fYWN0aW9uXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIENyZWF0b3JzID0gSGFzaHRibC5DcmVhdG9yc1xuXG5pbmNsdWRlIChcbiAgSGFzaHRibCA6XG4gIHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBCYXNlLkhhc2h0YmwuU193aXRob3V0X3N1Ym1vZHVsZXMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWRcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICB+Y29tYmluZVxuICAgICAgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmwuUG9seVxuXG4gIGxldCB2YWxpZGF0ZSA9IHZhbGlkYXRlXG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gICAgICB0eXBlICgnYSwgJ2IpIGVsID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmM2U0NDVjLTQ5OTItMTFlNi1hMjc5LTM3MDNiZTMxMWU3YlwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkNvcmVfaGFzaHRibC5iaW5fcmVhZF90XzogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcblxuICB0eXBlIGtleSA9IFQuS2V5LnRcbiAgdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxuICB0eXBlICdhIHQgPSAoVC5LZXkudCwgJ2EpIGhhc2h0YmxcbiAgdHlwZSAoJ2EsICdiKSB0X18gPSAoVC5LZXkudCwgJ2IpIGhhc2h0YmxcbiAgdHlwZSAnYSBrZXlfID0gVC5LZXkudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gVC5LZXkudFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIChcbiAgICBIYXNodGJsIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGVcbiAgICAgICAgSGFzaHRibC5BY2Nlc3NvcnNcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9fXG4gICAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5X1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEhhc2h0YmwuTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9fIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5X1xuXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBoYXNodGJsXG4gICAgZW5kKVxuXG4gIGxldCB2YWxpZGF0ZSA9IHZhbGlkYXRlXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSB0ID0gaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfa2V5IHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IFBvbHkuc2V4cF9vZl90IFQuS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEtleS50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULktleVxuICAgICAgICBpbmNsdWRlIEtleSdcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9IEtleS50ICogJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZmFiYWIwYS00OTkyLTExZTYtOGNjYS05YmEyYzQ2ODZkOWVcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiSGFzaHRibC5iaW5fcmVhZF90OiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgIFslc2V4cF9vZjogS2V5LnRdXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5XG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgbGV0IGhhc2hhYmxlID1cbiAgICAgIHsgSGFzaGFibGUuaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE0gPSBIYXNodGJsLk1cblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCA9IHN0cnVjdFxuICBpbmNsdWRlIChIYXNodGJsIDogSGFzaHRibC5Gb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcblxuICBtb2R1bGUgdHlwZSBNX3F1aWNrY2hlY2sgPSBNX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfYWxpc3Rfb3B0aW9uIG0gYWxpc3QgPSBSZXN1bHQub2sgKG9mX2FsaXN0X29yX2Vycm9yIG0gYWxpc3QpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19nZW5lcmF0b3JfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcCB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19hbGlzdFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19zaHJpbmtlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5zaHJpbmtlcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgICAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gICAgICAgICB+Zl9pbnZlcnNlOnRvX2FsaXN0XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuaW5jbHVkZSBCYXNlLkhhc2hfc2V0XG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBIYXNodGJsLktleV9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gSGFzaHRibC5LZXlcbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gSGFzaHRibC5LZXlfYmluYWJsZVxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gVC5FbHQudFxuICB0eXBlIG5vbnJlYyB0ID0gZWx0IHRcblxuICBsZXQgZXF1YWwgPSBlcXVhbFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gVC5FbHQudFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFBvbHkuc2V4cF9vZl90IFQuRWx0LnNleHBfb2ZfdCB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgWC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5FbHRcbiAgICAgICAgaW5jbHVkZSBYXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImFkMzgxNjcyLTQ5OTItMTFlNi05ZTM2LWI3NmRjOGNkNDY2ZlwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNoX3NldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciA9IGl0ZXJcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgdiA9IG5leHQgKCkgaW5cbiAgICAgICAgICBhZGQgdCB2XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0XG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBFbHRcblxuICAgIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuZW5kXG5cbmxldCBoYXNoYWJsZSA9IFByaXZhdGUuaGFzaGFibGVcbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5vYnNlcnZlcjogS2V5LnQgTGlzdDAudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19saXN0XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLnNocmlua2VyOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLlNocmlua2VyLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpIH5mX2ludmVyc2U6dG9fbGlzdFxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFNYXB9W01hcF19LiBTZWUgdGhvc2UgZG9jcyBmb3IgYSBkZXNjcmlwdGlvblxuICAgIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXsxLDIsMyxfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtNYXBdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzM10gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG5cbm9wZW4hIEltcG9ydFxub3BlbiBUXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgTWFwID0gQmFzZS5NYXBcbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBNYXAuT3JfZHVwbGljYXRlXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGVfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kXG5cbiAgdHlwZSAoJ3QsICdjKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ3QgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2MpXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwga2V5X3NldCA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50KSBvcHRpb25zXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sga2V5IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnayBrZXkgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzMVxuXG4gIHZhbCBrZXlfc2V0IDogXyB0IC0+IChrZXksIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudFxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOihrZXkgLT4gc3RyaW5nKSAtPiAnYSBWYWxpZGF0ZS5jaGVjayAtPiAnYSB0IFZhbGlkYXRlLmNoZWNrXG4gIHZhbCB2YWxpZGF0ZWkgOiBuYW1lOihrZXkgLT4gc3RyaW5nKSAtPiAoa2V5ICogJ2EpIFZhbGlkYXRlLmNoZWNrIC0+ICdhIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogIGtleSBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAga2V5IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICd2IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnMyXG5cbiAgdmFsIGtleV9zZXQgOiAoJ2ssICd2KSB0IC0+ICgnaywgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50XG4gIHZhbCB2YWxpZGF0ZSA6IG5hbWU6KCdhIC0+IHN0cmluZykgLT4gJ2IgVmFsaWRhdGUuY2hlY2sgLT4gKCdhLCAnYikgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignYSAtPiBzdHJpbmcpXG4gICAgLT4gKCdhICogJ2IpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdhLCAnYikgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndikgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogICdrIFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YpIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnMzXG5cbiAgdmFsIGtleV9zZXQgOiAoJ2ssIF8sICdjbXApIHQgLT4gKCdrLCAnY21wKSBCYXNlLlNldC50XG4gIHZhbCB2YWxpZGF0ZSA6IG5hbWU6KCdhIC0+IHN0cmluZykgLT4gJ2IgVmFsaWRhdGUuY2hlY2sgLT4gKCdhLCAnYiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignYSAtPiBzdHJpbmcpXG4gICAgLT4gKCdhICogJ2IpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdhLCAnYiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgXykgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogICdrIFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsIF8pIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcblxuICB2YWwga2V5X3NldFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssIF8sICdjbXApIHRcbiAgICAtPiAoJ2ssICdjbXApIEJhc2UuU2V0LnRcblxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOignYSAtPiBzdHJpbmcpIC0+ICdiIFZhbGlkYXRlLmNoZWNrIC0+ICgnYSwgJ2IsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sgLT4gc3RyaW5nKVxuICAgIC0+ICgnayAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2sgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMxIChNIDogQWNjZXNzb3JzMSkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczIgKE0gOiBBY2Nlc3NvcnMyKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMyAoTSA6IEFjY2Vzc29yczMpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yc19nZW5lcmljXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndikgSGFzaHRibC50IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW1NldC50XS4gKilcbiAgdmFsIG9mX2tleV9zZXQgOiAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudCAtPiBmOignayBrZXkgLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnayBrZXkgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yczFcblxuICB2YWwgb2ZfaGFzaHRibF9leG4gOiAoa2V5LCAnYSkgSGFzaHRibC50IC0+ICdhIHRcbiAgdmFsIG9mX2tleV9zZXQgOiAoa2V5LCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnQgLT4gZjooa2V5IC0+ICd2KSAtPiAndiB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gJ2EgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzMlxuXG4gIHZhbCBvZl9oYXNodGJsX2V4biA6ICgnYSwgJ2IpIEhhc2h0YmwudCAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9rZXlfc2V0IDogKCdhLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gJ2IgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IpIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIHZhbCBvZl9oYXNodGJsX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiKSBIYXNodGJsLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2tleV9zZXQgOiAoJ2EsICdjbXApIEJhc2UuU2V0LnQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdiIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczFcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGtleSA6PSBrZXlcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMyXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoS2V5IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSAnYSB0ID0gKEtleS50LCAnYSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICAgICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdFxuICAgICAgd2l0aCB0eXBlIGtleSA6PSBLZXkudFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChLIDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSArJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSBrZXkgOj0gS2V5LnRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXkgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBTZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIEJpbmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuTWFwLkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuTWFwLk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIGJpbl9pb10gXX0gKilcblxuICB2YWwgYmluX3NoYXBlX21fX3QgOiAoJ2EsICdjKSBLZXlfYmluX2lvLnQgLT4gQmluX3Byb3QuU2hhcGUudCAtPiBCaW5fcHJvdC5TaGFwZS50XG5cbiAgdmFsIGJpbl9zaXplX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5TaXplLnNpemVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuXG4gIHZhbCBiaW5fd3JpdGVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LldyaXRlLndyaXRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuXG4gIHZhbCBiaW5fcmVhZF9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKGludCAtPiAoJ2EsICdiLCAnYykgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSBdfSAqKVxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIE1hcF9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAoaW50LCBzdHJpbmcpIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwMDY3NGJlOWZlOGRmZTllOWFkNDc2MDY3ZDdkODEwMSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXAgKGssIGRpZmYpIH5mMSB+ZjIgPVxuICAgICAgICBsZXQgayA9IGYxIGsgaW5cbiAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgIHwgYExlZnQgdiAtPiBgTGVmdCAoZjIgdilcbiAgICAgICAgICB8IGBSaWdodCB2IC0+IGBSaWdodCAoZjIgdilcbiAgICAgICAgICB8IGBVbmVxdWFsICh2MSwgdjIpIC0+IGBVbmVxdWFsIChmMiB2MSwgZjIgdjIpXG4gICAgICAgIGluXG4gICAgICAgIGssIGRpZmZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXBfZGF0YSB0IH5mID0gbWFwIHQgfmYxOkZuLmlkIH5mMjpmXG5cbiAgICAgIGxldCBsZWZ0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBMZWZ0IHggfCBgVW5lcXVhbCAoeCwgXykgLT4gU29tZSB4XG4gICAgICAgIHwgYFJpZ2h0IF8gLT4gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHJpZ2h0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IEJhc2UuTWFwLk1lcmdlX2VsZW1lbnRcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IG9ic190cmVlIGtfb2JzIHZfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90cmVlIGtfb2JzIHZfb2JzXG5cbiAgbGV0IHNocl90cmVlIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX3NociB2X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90XG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwLlVzaW5nX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBGb3JfcXVpY2tjaGVja1xuXG4gIGxldCBvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmk6KEhhc2h0YmwuaXRlcmkgaGFzaHRibCkgd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNYXAub2ZfaGFzaHRibF9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgdHJlZV9vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICB0b190cmVlIChvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0IH5jb21wYXJhdG9yIHQgPVxuICAgIEJhc2UuU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChMaXN0LnRvX2FycmF5IChrZXlzIHQpKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0X29mX3RyZWUgfmNvbXBhcmF0b3IgdCA9IGtleV9zZXQgfmNvbXBhcmF0b3IgKG9mX3RyZWUgfmNvbXBhcmF0b3IgdClcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID1cbiAgICBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvcjooQmFzZS5TZXQuY29tcGFyYXRvciBrZXlfc2V0KVxuICAgICAgKEFycmF5Lm1hcCAoQmFzZS5TZXQudG9fYXJyYXkga2V5X3NldCkgfmY6KGZ1biBrZXkgLT4ga2V5LCBmIGtleSkpXG4gIDs7XG5cbiAgbGV0IHRyZWVfb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gdG9fdHJlZSAob2Zfa2V5X3NldCBrZXlfc2V0IH5mKVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgTWFwLkFjY2Vzc29yczNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE1hcC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnQpXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gcXVpY2tjaGVja19vYnNlcnZlciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2ID0gcXVpY2tjaGVja19zaHJpbmtlciBrIHZcbiAgbGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB0IH5jb21wYXJhdG9yOihVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3IgdClcbmVuZFxuXG5sZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0IH5jb21wYXJhdG9yOihVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3IgdCkgdFxubGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IGNvbXBhcmF0b3JfcyA9IEJhc2UuTWFwLmNvbXBhcmF0b3Jfc1xuXG50eXBlICdrIGtleSA9ICdrXG50eXBlICdjIGNtcCA9ICdjXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgTWFwXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IG9mX3RyZWUgbSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbiAgbGV0IHRvX3RyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG5lbmQgOlxuc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTWFwLnRcblxuICBpbmNsdWRlXG4gICAgTWFwLkNyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrIGtleVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2MgY21wXG5cbiAgaW5jbHVkZVxuICAgIE1hcC5BY2Nlc3NvcnMzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcbmVuZClcblxubW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cblxubGV0IGZpbmRfb3JfZXJyb3IgdCBrZXkgPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBTb21lIGRhdGEgLT4gT2sgZGF0YVxuICB8IE5vbmUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwia2V5IG5vdCBmb3VuZFwiIH5fOihrZXkgOiBrZXkpXVxuOztcblxubGV0IG1lcmdlX3NrZXdlZCA9IE1hcC5tZXJnZV9za2V3ZWRcbmxldCBvZl9oYXNodGJsX2V4biBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zID0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgdmFsIHRfb2Zfc2V4cFxuICAgIDogIChCYXNlLlNleHAudCAtPiAnYSBLZXkudClcbiAgICAtPiAoQmFzZS5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gQmFzZS5TZXhwLnRcbiAgICAtPiAoJ2EsICdiLCBfKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zID0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRfID0gKCdhIEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlID0gKCdhLCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbW9kdWxlIE1fZW1wdHkgPSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLZXkpXG5cbiAgbGV0IGVtcHR5ID0gTV9lbXB0eS5lbXB0eVxuICBsZXQgb2ZfdHJlZSB0cmVlID0gVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yIHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBrIHYgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBrIHZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXFcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZlxuICBsZXQgb2ZfYWxpc3QgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2FsaXN0X2V4biBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9oYXNodGJsX2V4biBoYXNodGJsID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3RcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaVxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaVxuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IG9mX2tleV9zZXQga2V5X3NldCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfa2V5X3NldCBrZXlfc2V0IH5mXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuX2sgZ2VuX3YgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3IucXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZ2VuX2sgZ2VuX3ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX1MxIChLZXkgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICBvcGVuIFRyZWVcblxuICBsZXQgY29tcGFyYXRvciA9IEtleS5jb21wYXJhdG9yXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCBhIGIgYyA9IHRfb2Zfc2V4cF9kaXJlY3QgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgb2ZfdHJlZSB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIGEgPSBzaW5nbGV0b24gYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IG9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IG9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gcyA9IG9mX3NlcXVlbmNlX2V4biBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gb2Zfc2VxdWVuY2VfbXVsdGkgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCBzIH5pbml0IH5mID0gb2Zfc2VxdWVuY2VfZm9sZCBzIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiA9IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdCBhID0gb2ZfYWxpc3QgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYSA9IG9mX2FsaXN0X29yX2Vycm9yIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gb2ZfYWxpc3RfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0YmxfZXhuIGEgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG4gYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IG9mX2FsaXN0X211bHRpIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGEgfmYgPSBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gb2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBpbnZhcmlhbnRzIGEgPSBpbnZhcmlhbnRzIGEgfmNvbXBhcmF0b3JcbiAgbGV0IGlzX2VtcHR5IGEgPSBpc19lbXB0eSBhXG4gIGxldCBsZW5ndGggYSA9IGxlbmd0aCBhXG4gIGxldCBzZXQgYSB+a2V5IH5kYXRhID0gc2V0IGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkIGEgfmtleSB+ZGF0YSA9IGFkZCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9leG4gYSB+a2V5IH5kYXRhID0gYWRkX2V4biBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgPSBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmVfbXVsdGkgYSBiID0gcmVtb3ZlX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9tdWx0aSBhIGIgPSBmaW5kX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgY2hhbmdlIGEgYiB+ZiA9IGNoYW5nZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHVwZGF0ZSBhIGIgfmYgPSB1cGRhdGUgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX2V4biBhIGIgPSBmaW5kX2V4biBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmQgYSBiID0gZmluZCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZSBhIGIgPSByZW1vdmUgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBtZW0gYSBiID0gbWVtIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgaXRlcmlfdW50aWwgPSBpdGVyaV91bnRpbFxuICBsZXQgaXRlcjIgYSBiIH5mID0gaXRlcjIgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgZm9sZF91bnRpbCA9IGZvbGRfdW50aWxcbiAgbGV0IGZvbGRfcmlnaHQgPSBmb2xkX3JpZ2h0XG4gIGxldCBmb2xkMiBhIGIgfmluaXQgfmYgPSBmb2xkMiBhIGIgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9rZXlzIGEgfmYgPSBmaWx0ZXJfa2V5cyBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXIgYSB+ZiA9IGZpbHRlciBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJpIGEgfmYgPSBmaWx0ZXJpIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXAgYSB+ZiA9IGZpbHRlcl9tYXAgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcGkgYSB+ZiA9IGZpbHRlcl9tYXBpIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9IGNvbWJpbmVfZXJyb3JzIHQgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGEgYiBjID0gY29tcGFyZV9kaXJlY3QgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGVxdWFsIGEgYiBjID0gZXF1YWwgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsID0gc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5jb21wYXJhdG9yXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+ZiB+aW5pdCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBtZXJnZSBhIGIgfmYgPSBtZXJnZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgPSBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lIH5jb21wYXJhdG9yXG4gIGxldCBtaW5fZWx0ID0gbWluX2VsdFxuICBsZXQgbWluX2VsdF9leG4gPSBtaW5fZWx0X2V4blxuICBsZXQgbWF4X2VsdCA9IG1heF9lbHRcbiAgbGV0IG1heF9lbHRfZXhuID0gbWF4X2VsdF9leG5cbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IHNwbGl0IGEgYiA9IHNwbGl0IGEgYiB+Y29tcGFyYXRvclxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID0gYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJhdG9yXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJhdG9yXG4gIGxldCBjbG9zZXN0X2tleSBhIGIgYyA9IGNsb3Nlc3Rfa2V5IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBudGggPSBudGhcbiAgbGV0IG50aF9leG4gPSBudGhfZXhuXG4gIGxldCByYW5rIGEgYiA9IHJhbmsgYSBiIH5jb21wYXJhdG9yXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3IgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gIDs7XG5cbiAgbGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHRcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfcGxhaW4gKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgTWFrZV90cmVlX1MxIChLZXlfUzEpXG5cbiAgdHlwZSArJ3YgdCA9IChLZXkudCwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPSBzZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgWC50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZSAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV90cmVlX3BsYWluIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5lbmRcblxuKCogRG9uJ3QgdXNlIFtvZl9zb3J0ZWRfYXJyYXldIHRvIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGFuIGludGVybWVkaWF0ZSBhcnJheSAqKVxubGV0IGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmYgfmNvbXBhcmF0b3IgPVxuICBsZXQgbWFwID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yIGluXG4gIGlmIGludmFyaWFudHMgbWFwXG4gIHRoZW4gbWFwXG4gIGVsc2UgKFxuICAgICgqIFRoZSBpbnZhcmlhbnRzIGFyZSBicm9rZW4sIGJ1dCB3ZSBjYW4gc3RpbGwgdHJhdmVyc2UgdGhlIHN0cnVjdHVyZS4gKilcbiAgICBtYXRjaCBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaTooaXRlcmkgbWFwKSB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgX2tleSAtPiBmYWlsd2l0aCBcIk1hcC5iaW5fcmVhZF90OiBkdXBsaWNhdGUgZWxlbWVudCBpbiBtYXBcIilcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKENvbXBhcmF0b3IuUG9seSlcblxuICB0eXBlICgnYSwgJ2IsICdjKSBtYXAgPSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBfIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIgPVxuICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiN2Q3YjFhMC00OTkyLTExZTYtOGEzMi1iYmIyMjFmYTAyNWNcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgKCdrLCArJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdCA9IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIgPVxuICAgICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcbm1vZHVsZSB0eXBlIEtleV9oYXNoYWJsZSA9IEtleV9oYXNoYWJsZVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGVfaGFzaGFibGUgPSBLZXlfYmluYWJsZV9oYXNoYWJsZVxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGVcblxubW9kdWxlIEtleV9iaW5faW8gPSBLZXlfYmluX2lvXG5cbm1vZHVsZSBQcm92aWRlX2Jpbl9pbyAoS2V5IDogS2V5X2Jpbl9pby5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgdHlwZSAndiBlbCA9IEtleS50ICogJ3YgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJkZmIzMDBmOC00OTkyLTExZTYtOWMxNS03M2EyYWM2YjgxNWNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5NYXBcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6S2V5LmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBLZXlfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEtleSlcbiAgaW5jbHVkZSBDcmVhdG9ycyAoS2V5X1MxKVxuXG4gIHR5cGUga2V5ID0gS2V5LnRcbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAndiB0ID0gKGtleSwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIG1hcFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgY21wdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNtcHYgdDEgdDJcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBLZXkuc2V4cF9vZl90IHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcbiAgOztcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEtleS50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5JyA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEtleS50KSA9IHN0cnVjdFxuICAgIGxldCBoYXNoX2ZvbGRfdCAodHlwZSBhKSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSAodCA6IGEgdCkgPVxuICAgICAgVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0IEtleScuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgICBQcm92aWRlX2Jpbl9pbyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEtleVxuICAgICAgaW5jbHVkZSBLZXknXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChLZXkgOiBLZXlfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoS2V5X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwKVxuICBtb2R1bGUgS2V5ID0gS2V5X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcblxuICBtb2R1bGUgXyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVHJlZVxuICAgIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChLZXlfYmluX3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwKVxuICBtb2R1bGUgS2V5ID0gS2V5X2Jpbl9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEtleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChLZXkgOiBLZXlfYmluYWJsZSkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYXAuTVxuXG4gIGxldCBiaW5fc2hhcGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NoYXBlX3RcbiAgOztcblxuICBsZXQgYmluX3NpemVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NpemVfdFxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3dyaXRlX3RcbiAgOztcblxuICBsZXQgYmluX3JlYWRfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3JlYWRfdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX21fX3RfXyAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uX19iaW5fcmVhZF90X19cbiAgOztcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX2dlbmVyYXRvcl9tXG4gICAgICAgICAgd2l0aCB0eXBlIHQgPSBrXG4gICAgICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9nZW5lcmF0b3JcbiAgICA9XG4gICAgcXVpY2tjaGVja19nZW5lcmF0b3IgKG1vZHVsZSBLZXkpIEtleS5xdWlja2NoZWNrX2dlbmVyYXRvciB2X2dlbmVyYXRvclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19vYnNlcnZlcl9tXG4gICAgICAgICAgd2l0aCB0eXBlIHQgPSBrXG4gICAgICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9vYnNlcnZlclxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEtleS5xdWlja2NoZWNrX29ic2VydmVyIHZfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0ga1xuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfc2hyaW5rZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19zaHJpbmtlciBLZXkucXVpY2tjaGVja19zaHJpbmtlciB2X3Nocmlua2VyXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gTWFwLkZvcl9kZXJpdmluZ1xuXG4gIGluY2x1ZGUgKE1hcCA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHQpXG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUcmVlXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IG9mX2hhc2h0YmxfZXhuID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuXG4gIGxldCBrZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0X29mX3RyZWVcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAoa2V5LCAnYSwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ1xuICAgIG1vZHVsZSBNYWtlIChLZXkgOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChLZXkpXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gU3ltbWV0cmljX2RpZmZfZWxlbWVudC5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgQmFzZS5NYXliZV9ib3VuZC50ID1cbiAgICAgIHwgSW5jbCBvZiAnYVxuICAgICAgfCBFeGNsIG9mICdhXG4gICAgICB8IFVuYm91bmRlZFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgSW5jbCB4IC0+IEluY2wgKGYgeClcbiAgICAgIHwgRXhjbCB4IC0+IEV4Y2wgKGYgeClcbiAgICAgIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQmFzZS5NYXliZV9ib3VuZFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVjEudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgcXVpY2tjaGVjaywgc2V4cF1cblxubGV0IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgVW5ib3VuZGVkLCBVbmJvdW5kZWQgLT4gMFxuICB8IFVuYm91bmRlZCwgXyAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgfCBgVXBwZXIgLT4gMSlcbiAgfCBfLCBVbmJvdW5kZWQgLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IDFcbiAgICAgfCBgVXBwZXIgLT4gLTEpXG4gIHwgSW5jbCBhMSwgSW5jbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBFeGNsIGExLCBFeGNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEluY2wgYTEsIEV4Y2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IC0xXG4gICAgICB8IGBVcHBlciAtPiAxKVxuICAgIGVsc2UgY1xuICB8IEV4Y2wgYTEsIEluY2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IDFcbiAgICAgIHwgYFVwcGVyIC0+IC0xKVxuICAgIGVsc2UgY1xuOztcblxubW9kdWxlIEFzX2xvd2VyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YExvd2VyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG5cbm1vZHVsZSBBc191cHBlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBVcHBlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IUNvcmUuU2V0fVtTZXRdfS4gU2VlIHRoZVxuICAgIHshTWFwfSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXswLDEsMixfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtTZXRdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzMl0gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG4oKlxuICAgQ1JzIGFuZCBjb21tZW50cyBhYm91dCBbU2V0XSBmdW5jdGlvbnMgZG8gbm90IGJlbG9uZyBpbiB0aGlzIGZpbGUuICBUaGV5IGJlbG9uZyBuZXh0XG4gICB0byB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24gaW4gc2V0Lm1saS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBUXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgU2V0ID0gQmFzZS5TZXRcbm1vZHVsZSBUcmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxubW9kdWxlIE5hbWVkID0gU2V0Lk5hbWVkXG5tb2R1bGUgQ29udGFpbmVyID0gQmFzZS5Db250YWluZXJcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gU2V0LkVsdF9wbGFpblxuXG5tb2R1bGUgdHlwZSBFbHQgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRWx0X2Jpbl9pbyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kXG5cbiAgdHlwZSAoJ3QsICdjKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ3QgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2MpXG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5TZXQuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5TZXQuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgc2V0cywgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gU2V0Lk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIGJpbl9pb10gXX0gKilcblxuICB2YWwgYmluX3NoYXBlX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gQmluX3Byb3QuU2hhcGUudFxuICB2YWwgYmluX3NpemVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgdmFsIGJpbl93cml0ZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gIHZhbCBiaW5fcmVhZF9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICB2YWwgX19iaW5fcmVhZF9tX190X19cbiAgICA6ICAoJ2EsICdiKSBFbHRfYmluX2lvLnRcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IpIHQpIEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgW3F1aWNrY2hlY2sqXSBmdW5jdGlvbnMgc3VwcG9ydCBkZXJpdmluZyBxdWlja2NoZWNrIG9uIGJhc2Utc3R5bGVcbiAgICAgIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSBdfSAqKVxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBTZXQuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gU2V0LldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIHRvX21hcFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOignYSBlbHQgLT4gJ2IpIC0+ICgnYSBlbHQsICdiLCAnY21wIGNtcCkgQmFzZS5NYXAudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdhIGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnMwXG5cbiAgdmFsIHRvX21hcCA6IHQgLT4gZjooZWx0IC0+ICdkYXRhKSAtPiAoZWx0LCAnZGF0YSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLk1hcC50XG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogZWx0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IGVsdCBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yczFcblxuICB2YWwgdG9fbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gKCdhLCAnYiwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLk1hcC50XG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogJ2EgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+ICdhIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogJ2EgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+ICdhIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnMyXG5cbiAgdmFsIHRvX21hcCA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdhLCAnYiwgJ2NtcCkgQmFzZS5NYXAudFxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6ICdhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogJ2EgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIHZhbCB0b19tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgQmFzZS5NYXAudFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogJ2EgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoTmFtZWQgOiBUMilcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMCAoTSA6IEFjY2Vzc29yczApID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmVsdFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMxIChNIDogQWNjZXNzb3JzMSkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczIgKE0gOiBBY2Nlc3NvcnMyKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yc19nZW5lcmljXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogKCdhLCAnY21wLCAnYSBlbHQgSGFzaF9zZXQudCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgXykgSGFzaHRibC50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbTWFwLnRdLiAqKVxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EgZWx0LCBfLCAnY21wIGNtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczAgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnMwXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogZWx0IEhhc2hfc2V0LnQgLT4gdFxuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKGVsdCwgXykgSGFzaHRibC50IC0+IHRcbiAgdmFsIG9mX21hcF9rZXlzIDogKGVsdCwgXywgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLk1hcC50IC0+IHRcbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogZWx0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMVxuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICdhIEhhc2hfc2V0LnQgLT4gJ2EgdFxuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCBfKSBIYXNodGJsLnQgLT4gJ2EgdFxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EsIF8sIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudCAtPiAnYSB0XG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gJ2EgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMlxuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICdhIEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoJ2EsIF8pIEhhc2h0YmwudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhLCBfLCAnY21wKSBCYXNlLk1hcC50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIHZhbCBvZl9oYXNoX3NldCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgSGFzaF9zZXQudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2ZfaGFzaHRibF9rZXlzXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgXykgSGFzaHRibC50XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhLCBfLCAnY21wKSBCYXNlLk1hcC50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMCAoTSA6IENyZWF0b3JzMCkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczBcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgd2l0aCB0eXBlIHRyZWUgOj0gdHJlZVxuICAgIHdpdGggdHlwZSBlbHQgOj0gZWx0XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczFcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMlxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChFbHQgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUuTmFtZWQudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczBcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgdHJlZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG4gICAgICB3aXRoIHR5cGUgbmFtZWQgOj0gbmFtZWRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoRWx0IDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBOYW1lZC50XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBCYXNlLlNldC50XG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHdpdGggdHlwZSB0cmVlIDo9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuICAgIHdpdGggdHlwZSBuYW1lZCA6PSBuYW1lZFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIFNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbm9wZW4gU2V0X2ludGZcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudFxubW9kdWxlIE5hbWVkID0gTmFtZWRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBFbHRcbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gRWx0X2JpbmFibGVcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCkgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApIGNvbXBhcmF0b3IgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc2V0X3RfbSAob2ZfY29tcGFyYXRvciBjb21wYXJhdG9yKSBlbHRfZ2VuXG4gIDs7XG5cbiAgbGV0IGdlbl90cmVlIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdCBlbHRfb2JzXG4gIGxldCBvYnNfdHJlZSBlbHRfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNldF90cmVlIGVsdF9vYnNcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgZWx0X3NociA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXRfdCBlbHRfc2hyXG5cbiAgbGV0IHNocl90cmVlIH5jb21wYXJhdG9yIGVsdF9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9zaHJcbiAgOztcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgbSBlbHRfZ2VuID1cbiAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgZWx0X2dlblxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUcmVlXG5cbiAgbGV0IHRvX21hcCB+Y29tcGFyYXRvciB0ID0gTWFwLm9mX2tleV9zZXQgKFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgdCB+Y29tcGFyYXRvcilcbiAgbGV0IG9mX21hcF9rZXlzIG0gPSBTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlIChNYXAua2V5X3NldCBtKVxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBIYXNoX3NldC5mb2xkIGhzZXQgfmluaXQ6KGVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgSGFzaHRibC5mb2xkIGhhc2h0YmwgfmluaXQ6KGVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIH5rZXk6eCB+ZGF0YTpfIHQgLT5cbiAgICAgIGFkZCB0IHggfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZVxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBTZXQuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBTZXQuQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFNldC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIFNldC5OYW1lZC50KVxuXG4gIGxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBxdWlja2NoZWNrX3Nocmlua2VyXG5lbmRcblxudHlwZSAnYSBjbXAgPSAnYVxudHlwZSAnYSBlbHQgPSAnYVxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIFNldFxuXG4gIGxldCBvZl90cmVlIG0gPSBTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICBsZXQgc2V4cF9vZl90ID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90XG5lbmQgOlxuc2lnXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNldC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIFNldC5DcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBTZXQuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG5cbiAgaW5jbHVkZVxuICAgIFNldC5BY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBTZXQuTmFtZWQudFxuICAgIHdpdGggbW9kdWxlIE5hbWVkIDo9IE5hbWVkXG5lbmQpXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyZSBfIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBTZXQuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgU2V0LlVzaW5nX2NvbXBhcmF0b3JcbiAgICBlbmRcbiAgICB3aXRoIG1vZHVsZSBUcmVlIDo9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUpXG5cbiAgaW5jbHVkZSBGb3JfcXVpY2tjaGVja1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG5cbiAgbGV0IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhzZXQgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUub2ZfaGFzaF9zZXQgaHNldCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUub2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgfmNvbXBhcmF0b3IpXG4gIDs7XG5lbmRcblxubGV0IHRvX21hcCA9IE1hcC5vZl9rZXlfc2V0XG5sZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxubGV0IGhhc2hfZm9sZF9kaXJlY3QgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3RcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgb2ZfaGFzaF9zZXQgbSBoc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNoX3NldCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoc2V0XG5cbmxldCBvZl9oYXNodGJsX2tleXMgbSBoYXNodGJsID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaGFzaHRibFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlIG5vbnJlYyAoJ2EsICdjb21wYXJhdG9yKSB0XyA9ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWUgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICdhIGVsdF8gPSAnYSBFbHQudFxuICB0eXBlICdhIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChCYXNlLlNleHAudCAtPiAnYSBFbHQudCkgLT4gQmFzZS5TZXhwLnQgLT4gKCdhLCAnY29tcGFyYXRvcikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcF9cbmVuZCA9IHN0cnVjdFxuICBvcGVuIFVzaW5nX2NvbXBhcmF0b3JcblxuICB0eXBlIG5vbnJlYyAoJ2EsICdjb21wYXJhdG9yKSB0XyA9ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWUgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICdhIGVsdF8gPSAnYSBFbHQudFxuICB0eXBlICdjbXAgY21wXyA9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWVcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPSBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5ID0gb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5XG5cbiAgbW9kdWxlIE1fZW1wdHkgPSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQpXG5cbiAgbGV0IGVtcHR5ID0gTV9lbXB0eS5lbXB0eVxuICBsZXQgc2luZ2xldG9uIGUgPSBzaW5nbGV0b24gfmNvbXBhcmF0b3IgZVxuICBsZXQgdW5pb25fbGlzdCBsID0gdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9saXN0IGwgPSBvZl9saXN0IH5jb21wYXJhdG9yIGxcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9oYXNoX3NldCBoID0gb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaFxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGggPSBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaFxuICBsZXQgb2ZfYXJyYXkgYSA9IG9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHNcbiAgbGV0IG1hcCB0IH5mID0gbWFwIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZlxuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUgKFRyZWUudF9vZl9zZXhwX2RpcmVjdCBhX29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZWx0ID0gcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZWx0XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgZW1wdHkgPSBUcmVlLmVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiBlID0gVHJlZS5zaW5nbGV0b24gfmNvbXBhcmF0b3IgZVxuICBsZXQgaW52YXJpYW50cyB0ID0gVHJlZS5pbnZhcmlhbnRzIHQgfmNvbXBhcmF0b3JcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZS5sZW5ndGggdFxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUuaXNfZW1wdHkgdFxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZS5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZS5tYXhfZWx0X2V4biB0XG4gIGxldCBjaG9vc2UgdCA9IFRyZWUuY2hvb3NlIHRcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlLnRvX2xpc3QgdFxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUudG9fYXJyYXkgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZS5pdGVyIHQgfmZcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IFRyZWUuaXRlcjIgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUuZm9yX2FsbCB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZS5jb3VudCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZS5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlLmZpbmQgdCB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUuZmluZF9leG4gdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZS5mb2xkIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUuZm9sZF91bnRpbCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlLmZvbGRfcmlnaHQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUubWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZS5maWx0ZXIgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZS5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gVHJlZS5wYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWVtIHQgYSA9IFRyZWUubWVtIHQgYSB+Y29tcGFyYXRvclxuICBsZXQgYWRkIHQgYSA9IFRyZWUuYWRkIHQgYSB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlIHQgYSA9IFRyZWUucmVtb3ZlIHQgYSB+Y29tcGFyYXRvclxuICBsZXQgdW5pb24gdDEgdDIgPSBUcmVlLnVuaW9uIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBpbnRlciB0MSB0MiA9IFRyZWUuaW50ZXIgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IGRpZmYgdDEgdDIgPSBUcmVlLmRpZmYgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyID0gVHJlZS5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlLmNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIHQxIHQyXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUuZXF1YWwgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlLmlzX3N1YnNldCB0IH5vZl8gfmNvbXBhcmF0b3JcbiAgbGV0IGFyZV9kaXNqb2ludCB0MSB0MiA9IFRyZWUuYXJlX2Rpc2pvaW50IHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0IGwgPSBUcmVlLm9mX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFRyZWUub2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IFRyZWUub2ZfaGFzaF9zZXQgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGggPSBUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hcnJheSBhID0gVHJlZS5vZl9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBUcmVlLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCB1bmlvbl9saXN0IGwgPSBUcmVlLnVuaW9uX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBUcmVlLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJhdG9yXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IFRyZWUuZ3JvdXBfYnkgdCB+ZXF1aXYgfmNvbXBhcmF0b3JcbiAgbGV0IHNwbGl0IHQgYSA9IFRyZWUuc3BsaXQgdCBhIH5jb21wYXJhdG9yXG4gIGxldCBudGggdCBpID0gVHJlZS5udGggdCBpXG4gIGxldCByZW1vdmVfaW5kZXggdCBpID0gVHJlZS5yZW1vdmVfaW5kZXggdCBpIH5jb21wYXJhdG9yXG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBvZl90cmVlIHQgPSB0XG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlLnRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUuYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvciB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlLm1lcmdlX3RvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gVHJlZS5vZl9tYXBfa2V5c1xuICBsZXQgdG9fbWFwIHQgfmYgPSBUcmVlLnRvX21hcCB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlLk5hbWVkLmlzX3N1YnNldCB0IH5vZl8gfmNvbXBhcmF0b3JcbiAgICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLk5hbWVkLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSBlbHQgfmNvbXBhcmF0b3JcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgZWx0ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgZWx0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdCA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIGVsdCB+Y29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfcGxhaW4gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChFbHQpXG4gIGluY2x1ZGUgTWFrZV90cmVlX1MxIChFbHRfUzEpXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSBuYW1lZCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS5OYW1lZC50XG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBUcmVlLnNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IFgudF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6RWx0X1MxLmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBzZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgaW5cbiAgaWYgaW52YXJpYW50cyBzZXRcbiAgdGhlbiBzZXRcbiAgZWxzZVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChmb2xkIHNldCB+aW5pdDooVHJlZS5lbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgICAgICBpZiBUcmVlLm1lbSBhY2MgZWx0IH5jb21wYXJhdG9yXG4gICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V0LmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIG1hcFwiXG4gICAgICAgICBlbHNlIFRyZWUuYWRkIGFjYyBlbHQgfmNvbXBhcmF0b3IpKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IENvbXBhcmF0b3IuUG9seVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHQpXG5cbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICdhIG5hbWVkID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBOYW1lZC50XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgdCA9IHNleHBfb2ZfdCBzZXhwX29mX2sgWyVzZXhwX29mOiBfXSB0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OGJjYzQ3OC00OTkyLTExZTYtYTk1ZC1mZjQ4MzFhY2Y0MTBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgJ2EgbmFtZWQgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUuTmFtZWQudFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gVHJlZS5zZXhwX29mX3Qgc2V4cF9vZl9lbHQgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IGVsdF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGVcblxubW9kdWxlIEVsdF9iaW5faW8gPSBFbHRfYmluX2lvXG5cbm1vZHVsZSBQcm92aWRlX2Jpbl9pbyAoRWx0IDogRWx0X2Jpbl9pby5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg5ODkyNzhlLTQ5OTItMTFlNi04ZjRhLTZiODk3NzZiMWU1M1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IEVsdFxuICBtb2R1bGUgRWx0X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChFbHQpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdF9TMSlcblxuICB0eXBlICgnYSwgJ2IpIHNldCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBzZXRcbiAgdHlwZSBuYW1lZCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgRWx0LnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9IHN0cnVjdFxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZSB0XG5cbiAgICBsZXQgaGFzaCB0ID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAoaGFzaF9mb2xkX3QgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkpIHQpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoRWx0JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRWx0XG4gICAgICBpbmNsdWRlIEVsdCdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X2Jpbl9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBTZXQuTVxuXG4gIGxldCBiaW5fc2hhcGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NoYXBlX3RcbiAgOztcblxuICBsZXQgYmluX3NpemVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NpemVfdFxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3dyaXRlX3RcbiAgOztcblxuICBsZXQgYmluX3JlYWRfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3JlYWRfdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX21fX3RfXyAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uX19iaW5fcmVhZF90X19cbiAgOztcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX2dlbmVyYXRvcl9tXG4gICAgICAgICAgd2l0aCB0eXBlIHQgPSB0XG4gICAgICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19nZW5lcmF0b3IgKG1vZHVsZSBFbHQpIEVsdC5xdWlja2NoZWNrX2dlbmVyYXRvclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19vYnNlcnZlcl9tXG4gICAgICAgICAgd2l0aCB0eXBlIHQgPSB0XG4gICAgICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBFbHQucXVpY2tjaGVja19vYnNlcnZlclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19zaHJpbmtlcl9tXG4gICAgICAgICAgd2l0aCB0eXBlIHQgPSB0XG4gICAgICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19zaHJpbmtlciBFbHQucXVpY2tjaGVja19zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IFNldC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChTZXQgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9ICgnYSwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBlbHRcbiAgICAgIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgdCA9IChlbHQsIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvciB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ1xuICAgIG1vZHVsZSBNYWtlIChFbHQgOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHQpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5tb2R1bGUgSW5maXggPSBCYXNlLkNvbXBhcmFibGUuSW5maXhcbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5Db21wYXJhYmxlLlBvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFZhbGlkYXRlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgOiBWYWxpZGF0ZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZVxuICBvcGVuIE1heWJlX2JvdW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gQmFzZS5TZXhwLnRvX3N0cmluZyAoVC5zZXhwX29mX3QgdClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFYuYm91bmRlZCB+bmFtZTp0b19zdHJpbmcgfmxvd2VyOm1pbiB+dXBwZXI6bWF4IH5jb21wYXJlOlQuY29tcGFyZSB0XG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXg6VW5ib3VuZGVkIHRcbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWF4IH5taW46VW5ib3VuZGVkIHRcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZSAoVClcbiAgaW5jbHVkZSBWXG5cbiAgKCogUHJlYWxsb2NhdGUgdGhlIGludGVyZXN0aW5nIGJvdW5kcyB0byBtaW5pbWl6ZSBhbGxvY2F0aW9uIGluIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgW3ZhbGlkYXRlXypdLiAqKVxuICBsZXQgZXhjbF96ZXJvID0gTWF5YmVfYm91bmQuRXhjbCBULnplcm9cbiAgbGV0IGluY2xfemVybyA9IE1heWJlX2JvdW5kLkluY2wgVC56ZXJvXG4gIGxldCB2YWxpZGF0ZV9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46aW5jbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDppbmNsX3plcm8gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlX3dpdGhfemVybyAoVClcbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuV2l0aF96ZXJvIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgPVxuICBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuUG9seSAoVClcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgVmFsaWRhdGUgKEMpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPSBDXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChDKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBNXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgTVxuICAgIGVuZClcblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgZW5kKSA9XG4gIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBNXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgTVxuICAgIGVuZClcblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBjb21wYXJlID0gVC5jb21wYXJhdG9yLmNvbXBhcmVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBNXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEV4dGVuZFxuICAgIChNIDogQmFzZS5Db21wYXJhYmxlLlMpIChYIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFggOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRfYmluYWJsZVxuICAgIChNIDogQmFzZS5Db21wYXJhYmxlLlMpIChYIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG5pbmNsdWRlIChCYXNlLkNvbXBhcmFibGUgOiBXaXRoX2NvbXBhcmUpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgTWFwIDpcbiAgICAgICAgTWFwLlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBrZXkgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgU2V0LlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgICBtb2R1bGUgU2V0ID0gU2V0LlN0YWJsZS5WMS5NYWtlIChYKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwiaW5jbHVkZSBMaXN0MCAoKiogQGlubGluZSAqKVxuXG4oKiogW3N0YWJsZV9kZWR1cF0gU2FtZSBhcyBbZGVkdXBdIGJ1dCBtYWludGFpbnMgdGhlIG9yZGVyIG9mIHRoZSBsaXN0IGFuZCBkb2Vzbid0IGFsbG93XG4gICAgY29tcGFyZSBmdW5jdGlvbiB0byBiZSBzcGVjaWZpZWQgKG90aGVyd2lzZSwgdGhlIGltcGxlbWVudGF0aW9uIGluIHRlcm1zIG9mIFNldC50XG4gICAgd291bGQgaGlkZSBhIGhlYXZ5d2VpZ2h0IGZ1bmN0b3IgaW5zdGFudGlhdGlvbiBhdCBlYWNoIGNhbGwpLiAqKVxubGV0IHN0YWJsZV9kZWR1cCA9IFNldC5Qb2x5LnN0YWJsZV9kZWR1cF9saXN0XG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgc3RhZ2VkIHRvIGluZGljYXRlIHRoYXQgcmVhbCB3b3JrICh0aGUgZnVuY3RvciBhcHBsaWNhdGlvbikgdGFrZXNcbiAgIHBsYWNlIGFmdGVyIGEgcGFydGlhbCBhcHBsaWNhdGlvbi4gKilcbmxldCBzdGFibGVfZGVkdXBfc3RhZ2VkICh0eXBlIGEpIH4oY29tcGFyZSA6IGEgLT4gYSAtPiBpbnQpXG4gIDogKGEgbGlzdCAtPiBhIGxpc3QpIEJhc2UuU3RhZ2VkLnRcbiAgPVxuICBsZXQgbW9kdWxlIFNldCA9XG4gICAgU2V0Lk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICAgICAgKCogW3N0YWJsZV9kZWR1cF9saXN0XSBuZXZlciBjYWxscyB0aGVzZSAqKVxuICAgICAgbGV0IHRfb2Zfc2V4cCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBhc3NlcnQgZmFsc2VcbiAgICBlbmQpXG4gIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIFNldC5zdGFibGVfZGVkdXBfbGlzdFxuOztcblxubGV0IHppcF93aXRoX3JlbWFpbmRlciA9XG4gIGxldCByZWMgemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgYWNjIHhzIHlzID1cbiAgICBtYXRjaCB4cywgeXMgd2l0aFxuICAgIHwgW10sIFtdIC0+IHJldiBhY2MsIE5vbmVcbiAgICB8IGZzdCwgW10gLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLkZpcnN0IGZzdClcbiAgICB8IFtdLCBzbmQgLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLlNlY29uZCBzbmQpXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyICgoeCwgeSkgOjogYWNjKSB4cyB5c1xuICBpblxuICBmdW4geHMgeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgW10geHMgeXNcbjs7XG5cbnR5cGUgc2V4cF90aHVuayA9IHVuaXQgLT4gQmFzZS5TZXhwLnRcblxubGV0IHNleHBfb2Zfc2V4cF90aHVuayB4ID0geCAoKVxuXG5leGNlcHRpb24gRHVwbGljYXRlX2ZvdW5kIG9mIHNleHBfdGh1bmsgKiBCYXNlLlN0cmluZy50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5faWZfZHVwIH5jb21wYXJlID8oY29udGV4dCA9IFwiZXhuX2lmX2R1cFwiKSB0IH50b19zZXhwID1cbiAgbWF0Y2ggZmluZF9hX2R1cCB+Y29tcGFyZSB0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkdXAgLT4gcmFpc2UgKER1cGxpY2F0ZV9mb3VuZCAoKGZ1biAoKSAtPiB0b19zZXhwIGR1cCksIGNvbnRleHQpKVxuOztcblxubGV0IHNsaWNlIGEgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiBhIHN0YXJ0IHN0b3Bcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3B0aW9uXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bm9uZSB+c29tZSB0ID1cbiAgbGV0IG1vZHVsZSBWID0gVmFsaWRhdGUgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBWLm5hbWUgXCJub25lXCIgKFYucHJvdGVjdCBub25lICgpKVxuICB8IFNvbWUgeCAtPiBWLm5hbWUgXCJzb21lXCIgKFYucHJvdGVjdCBzb21lIHgpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub3B0aW9uXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5vcHRpb25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcblxuICAgICgqIFt1bnNhZmVfdmFsdWVdIGlzIG9ubHkgc2FmZSB0byBjYWxsIHdoZW4gW2lzX25vbmVdIHJldHVybnMgW2ZhbHNlXS4gVG8gYXZvaWRcbiAgICAgICByZXBlYXRpbmcgdGhlIFtpc19ub25lXSBjaGVjaywgd2UgZGVjbGFyZSBbVW5jaGVja2VkX3NvbWVdLiBbVW5jaGVja2VkX3NvbWUgeF1cbiAgICAgICBoYXMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gYXMgW1NvbWUgeF0sIGJ1dCB0aGUgdHlwZSBoYXMgbm8gW05vbmVdIGNsYXVzZS5cblxuICAgICAgIFdlIG1ha2Ugc3VyZSBhbGwgdGhpcyB3b3JrcyB3aXRoIHRlc3RzIG9mIFt1bnNhZmVfdmFsdWVdIGluIHRlc3Rfb3B0aW9uLm1sLlxuXG4gICAgICAgV2UgdHJpZWQgdXNpbmcgW09iai5maWVsZF0gaW5zdGVhZC4gSXQgZ2VuZXJhdGVzIG11Y2ggd29yc2UgbmF0aXZlIGNvZGUgZHVlIHRvXG4gICAgICAgZmxvYXQgYXJyYXkgcmVwcmVzZW50YXRpb25zLiAqKVxuXG4gICAgbW9kdWxlIFVuY2hlY2tlZF9zb21lID0gc3RydWN0XG4gICAgICAoKiBXYXJuaW5nIDM3IHRlbGxzIHVzIFtVbmNoZWNrZWRfc29tZV0gaXMgbmV2ZXIgdXNlZCBhcyBhIGNvbnN0cnVjdG9yLiBUaGlzIGlzXG4gICAgICAgICBpbnRlbnRpb25hbCwgc28gd2UgZGlzYWJsZSB0aGUgd2FybmluZy4gKilcbiAgICAgIHR5cGUgJ2EgdCA9IFVuY2hlY2tlZF9zb21lIG9mICdhIFtAQG9jYW1sLmJveGVkXSBbQEBvY2FtbC53YXJuaW5nIFwiLTM3XCJdXG4gICAgZW5kXG5cbiAgICBsZXQgdW5zYWZlX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSA6IGEgPVxuICAgICAgbGV0IChVbmNoZWNrZWRfc29tZSB2YWx1ZSkgPSAoT2JqLm1hZ2ljIHQgOiBhIFVuY2hlY2tlZF9zb21lLnQpIGluXG4gICAgICB2YWx1ZVxuICAgIDs7XG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIE1MdG9uIGxpYnJhcnkgc2V0L2Rpc2pvaW50LmZ1biwgd2hpY2ggaGFzIHRoZVxuICAgZm9sbG93aW5nIGNvcHlyaWdodCBub3RpY2UuXG4qKVxuKCogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDUgSGVucnkgQ2VqdGluLCBNYXR0aGV3IEZsdWV0LCBTdXJlc2hcbiAqICAgIEphZ2FubmF0aGFuLCBhbmQgU3RlcGhlbiBXZWVrcy5cbiAqXG4gKiBNTHRvbiBpcyByZWxlYXNlZCB1bmRlciBhIEJTRC1zdHlsZSBsaWNlbnNlLlxuICogU2VlIHRoZSBmaWxlIE1MdG9uLUxJQ0VOU0UgZm9yIGRldGFpbHMuXG4qKVxuXG5vcGVuISBJbXBvcnRcblxuKCpcbiAgIHt2XG4gICAgICAgICAgIFJvb3RcbiAgICAgICAgICAgICB8XG4gICAgICAgICAgIElubmVyXG4gICAgICAgIC8gLi4gfCAuLiBcXFxuICAgICBJbm5lciBJbm5lciBJbm5lclxuICAgICAgL3xcXCAgIC98XFwgICAvfFxcXG4gICAgICAuLi4gICAuLi4gICAuLi5cbiAgIHZ9XG5cbiAgIFdlIGNvbnN0cnVjdCB0aGUgYGludmVydGVkJyB0cmVlIGluIHRoZSBNTCByZXByZXNlbnRhdGlvbi5cbiAgIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGVkZ2VzIGlzIFVQV0FSRFMuXG4gICBTdGFydGluZyB3aXRoIGFueSBbJ2EgdF0gd2UgY2FuIHN0ZXAgZGlyZWN0bHkgdG8gaXRzIHBhcmVudC5cbiAgIEJ1dCB3ZSBjYW4ndCAoYW5kIGRvbid0IG5lZWQgdG8pIHN0YXJ0IGZyb20gdGhlIHJvb3QgYW5kIHN0ZXAgdG8gaXRzIGNoaWxkcmVuLlxuKilcblxuKCpcbiAgIFtyYW5rXSBpcyBhbiB1cHBlciBib3VuZCBvbiB0aGUgZGVwdGggb2YgYW55IG5vZGUgaW4gdGhlIHVwLXRyZWUuXG5cbiAgIEltYWdpbmUgYW4gdW5sdWNreSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGluIHdoaWNoIHlvdSBjcmVhdGUgTlxuICAgaW5kaXZpZHVhbCBbdF0tdmFsdWVzIGFuZCB0aGVuIHVuaW9uIHRoZW0gdG9nZXRoZXIgaW4gc3VjaCBhIHdheVxuICAgdGhhdCB5b3UgYWx3YXlzIHBpY2sgdGhlIHJvb3Qgb2YgZWFjaCB0cmVlIHRvIHVuaW9uIHRvZ2V0aGVyLCBzbyB0aGF0XG4gICBubyBwYXRoIGNvbXByZXNzaW9uIHRha2VzIHBsYWNlLiAgSWYgeW91IGRvbid0IHRha2UgY2FyZSB0byBzb21laG93XG4gICBiYWxhbmNlIHRoZSByZXN1bHRpbmcgdXAtdHJlZSwgaXQgaXMgcG9zc2libGUgdGhhdCB5b3UgZW5kIHVwIHdpdGggb25lXG4gICBiaWcgbG9uZyBjaGFpbiBvZiBOIGxpbmtzLCBhbmQgdGhlbiBjYWxsaW5nIFtyZXByZXNlbnRhdGl2ZV0gb24gdGhlXG4gICBkZWVwZXN0IG5vZGUgdGFrZXMgVGhldGEoTikgdGltZS4gIFdpdGggdGhlIGJhbGFuY2luZyBzY2hlbWUgb2YgbmV2ZXJcbiAgIGluY3JlYXNpbmcgdGhlIHJhbmsgb2YgYSBub2RlIHVubmVjZXNzYXJpbHksIGl0IHdvdWxkIHRha2UgTyhsb2cgTikuXG4qKVxudHlwZSAnYSByb290ID1cbiAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgOyBtdXRhYmxlIHJhbmsgOiBpbnRcbiAgfVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgbm9kZSA6ICdhIG5vZGUgfVxuXG5hbmQgJ2Egbm9kZSA9XG4gIHwgSW5uZXIgb2YgJ2EgdFxuICAoKiBbSW5uZXIgeF0gaXMgYSBub2RlIHdob3NlIHBhcmVudCBpcyBbeF0uICopXG4gIHwgUm9vdCBvZiAnYSByb290XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggPVxuICAgIG1hdGNoIHQubm9kZSB3aXRoXG4gICAgfCBJbm5lciB0IC0+IGxvb3AgdCAoZGVwdGggKyAxKVxuICAgIHwgUm9vdCByIC0+IGFzc2VydCAoZGVwdGggPD0gci5yYW5rKVxuICBpblxuICBsb29wIHQgMFxuOztcblxubGV0IGNyZWF0ZSB2ID0geyBub2RlID0gUm9vdCB7IHZhbHVlID0gdjsgcmFuayA9IDAgfSB9XG5cbigqIGludmFyaWFudHM6XG4gICBbaW5uZXIubm9kZV0gPSBbaW5uZXJfbm9kZV0gPSBbSW5uZXIgdF0uXG4gICBbZGVzY2VuZGFudHNdIGFyZSB0aGUgcHJvcGVyIGRlc2NlbmRhbnRzIG9mIFtpbm5lcl0gd2UndmUgdmlzaXRlZC5cbiopXG5sZXQgcmVjIGNvbXByZXNzIHQgfmlubmVyX25vZGUgfmlubmVyIH5kZXNjZW5kYW50cyA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+XG4gICAgKCogdCBpcyB0aGUgcm9vdCBvZiB0aGUgdHJlZS5cbiAgICAgICBSZS1wb2ludCBhbGwgZGVzY2VuZGFudHMgZGlyZWN0bHkgdG8gaXQgYnkgc2V0dGluZyB0aGVtIHRvIFtJbm5lciB0XS5cbiAgICAgICBOb3RlOiB3ZSBkb24ndCByZS1wb2ludCBbaW5uZXJdIGFzIGl0IGFscmVhZHkgcG9pbnRzIHRoZXJlLiAqKVxuICAgIExpc3QuaXRlciBkZXNjZW5kYW50cyB+ZjooZnVuIHQgLT4gdC5ub2RlIDwtIGlubmVyX25vZGUpO1xuICAgIHQsIHJcbiAgfCBJbm5lciB0JyBhcyBub2RlIC0+XG4gICAgY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6KGlubmVyIDo6IGRlc2NlbmRhbnRzKVxuOztcblxubGV0IHJlcHJlc2VudGF0aXZlIHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPiB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPiBjb21wcmVzcyB0JyB+aW5uZXJfbm9kZTpub2RlIH5pbm5lcjp0IH5kZXNjZW5kYW50czpbXVxuOztcblxubGV0IHJvb3QgdCA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+XG4gICAgKCogYXZvaWQgdHVwbGUgYWxsb2NhdGlvbiBpbiB0aGUgZmFzdCBwYXRoICopXG4gICAgclxuICB8IF8gLT4gc25kIChyZXByZXNlbnRhdGl2ZSB0KVxuOztcblxubGV0IHJhbmsgdCA9IChyb290IHQpLnJhbmtcbmxldCBnZXQgdCA9IChyb290IHQpLnZhbHVlXG5sZXQgc2V0IHQgdiA9IChyb290IHQpLnZhbHVlIDwtIHZcbmxldCBzYW1lX2NsYXNzIHQxIHQyID0gcGh5c19lcXVhbCAocm9vdCB0MSkgKHJvb3QgdDIpXG5cbmxldCB1bmlvbiB0MSB0MiA9XG4gIGxldCB0MSwgcjEgPSByZXByZXNlbnRhdGl2ZSB0MSBpblxuICBsZXQgdDIsIHIyID0gcmVwcmVzZW50YXRpdmUgdDIgaW5cbiAgaWYgcGh5c19lcXVhbCByMSByMlxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuMSA9IHIxLnJhbmsgaW5cbiAgICBsZXQgbjIgPSByMi5yYW5rIGluXG4gICAgaWYgbjEgPCBuMlxuICAgIHRoZW4gdDEubm9kZSA8LSBJbm5lciB0MlxuICAgIGVsc2UgKFxuICAgICAgdDIubm9kZSA8LSBJbm5lciB0MTtcbiAgICAgIGlmIG4xID0gbjIgdGhlbiByMS5yYW5rIDwtIHIxLnJhbmsgKyAxKSlcbjs7XG5cbmxldCBpc19jb21wcmVzc2VkIHQgPVxuICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCBfIC0+IHRydWVcbiAgfCBJbm5lciB0IC0+XG4gICAgKG1hdGNoIHQubm9kZSB3aXRoXG4gICAgIHwgUm9vdCBfIC0+IHRydWVcbiAgICAgfCBJbm5lciBfIC0+IGZhbHNlKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGlzX2NvbXByZXNzZWQgPSBpc19jb21wcmVzc2VkXG4gIGxldCByYW5rID0gcmFua1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRG91Ymx5X2xpbmtlZF9pbnRmXG5cbigqIElOVkFSSUFOVDogVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIGEgbGlzdCBpcyBtdXRhdGVkIGR1cmluZyBhIHBlbmRpbmcgaXRlcmF0aW9uLlxuXG4gICBUaGlzIGludmFyaWFudCBpcyBndWFyYW50ZWVkIGJ5IHRoZSBIZWFkZXIgYW5kIEVsdCBtb2R1bGVzIGluIGNvbmp1bmN0aW9uLiAgQWxsXG4gICBkb3duc3RyZWFtIGNvZGUgaW4gdGhpcyBtb2R1bGUgbmVlZCBub3QgYmUgY29uY2VybmVkIHdpdGggdGhpcyBpbnZhcmlhbnQuICopXG5leGNlcHRpb24gQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uXG5cbmxldCBwaHlzX2VxdWFsID0gKCA9PSApXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGluY3JfbGVuZ3RoIDogYnk6aW50IC0+IHQgLT4gdW5pdFxuICB2YWwgY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIDogdCAtPiB1bml0XG5cbiAgKCogVW5mb3J0dW5hdGUsIGJ1dCBieSBzcGVjaWFsaXppbmcgW3dpdGhfaXRlcmF0aW9uXSBmb3IgZGlmZmVyZW50IGFyaXRpZXMsIGEgbGFyZ2VcbiAgICAgYW1vdW50IG9mIGFsbG9jYXRpb24gZHVyaW5nIGZvbGRzIGFuZCBpdGVyYXRpb25zIGlzIGF2b2lkZWQuXG5cbiAgICAgVGhlIG9yaWdpbmFsIHR5cGUgb2YgW3dpdGhfaXRlcmF0aW9uXSB3YXNcbiAgICAgW3ZhbCB3aXRoX2l0ZXJhdGlvbiA6IHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXVxuXG4gICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW5cbiAgICAge1tcbiAgICAgICBsZXQgeCA9IGUgaW5cbiAgICAgICBsZXQgZiAoKSA9IGcgeCBpblxuICAgICAgIGYgKClcbiAgICAgXX1cbiAgICAgYW5kXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgeCA9IGcgeCBpblxuICAgICAgIGYgeFxuICAgICBdfVxuICAgICBpcyB0aGF0IGluIHRoZSBmaXJzdCBjYXNlIHRoZSBjbG9zdXJlIGZvciBbZl0gY29udGFpbnMgYSBwb2ludGVyIHRvIFt4XSxcbiAgICAgYW5kIGluIHRoZSBzZWNvbmQgY2FzZSBpdCBkb2Vzbid0LiBBIGNsb3N1cmUgd2l0aG91dCBwb2ludGVycyB0byBlbmNsb3NpbmdcbiAgICAgZW52aXJvbm1lbnQgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYWtlZCBmdW5jdGlvbiBwb2ludGVyLCBzbyB3ZSBkb24ndFxuICAgICBhbGxvY2F0ZSBhdCBhbGwuXG5cbiAgICAgRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBtYWtlIHN1cmUgbm90IHRvIGNhbGwgW1Jlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IC4uLildXG4gICAgIGluc2lkZSBbd2l0aF9pdGVyYXRpb25dIGFuZCBkbyBhbiBleHBsaWNpdCBtYXRjaCBzdGF0ZW1lbnQgaW5zdGVhZC4gKilcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fMiA6IHQgLT4gJ2EgLT4gJ2IgLT4gKCdhIC0+ICdiIC0+ICdjKSAtPiAnY1xuICB2YWwgd2l0aF9pdGVyYXRpb25fMyA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkKSAtPiAnZFxuICB2YWwgd2l0aF9pdGVyYXRpb25fNCA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlKSAtPiAnZVxuICB2YWwgbWVyZ2UgOiB0IC0+IHQgLT4gWyBgU2FtZV9hbHJlYWR5IHwgYE1lcmdlZCBdXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBzID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgO1xuICAgICAgbXV0YWJsZSBwZW5kaW5nX2l0ZXJhdGlvbnMgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSB0ID0gcyBVbmlvbl9maW5kLnRcblxuICBsZXQgY3JlYXRlICgpID0gVW5pb25fZmluZC5jcmVhdGUgeyBsZW5ndGggPSAxOyBwZW5kaW5nX2l0ZXJhdGlvbnMgPSAwIH1cbiAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gVW5pb25fZmluZC5zYW1lX2NsYXNzIHQxIHQyXG4gIGxldCBsZW5ndGggdCA9IChVbmlvbl9maW5kLmdldCB0KS5sZW5ndGhcblxuICBsZXQgdW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0ID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpZiBzLnBlbmRpbmdfaXRlcmF0aW9ucyA+IDAgdGhlbiByYWlzZSBBdHRlbXB0X3RvX211dGF0ZV9saXN0X2R1cmluZ19pdGVyYXRpb24gZWxzZSBzXG4gIDs7XG5cbiAgbGV0IGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0ID1cbiAgICBpZ25vcmUgKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA6IHMpXG4gIDs7XG5cbiAgbGV0IGluY3JfbGVuZ3RoIH5ieTpuIHQgPVxuICAgIGxldCBzID0gdW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0IGluXG4gICAgcy5sZW5ndGggPC0gcy5sZW5ndGggKyBuXG4gIDs7XG5cbiAgKCogQ2FyZSBpcyB0YWtlbiBub3QgdG8gYWxsb2NhdGUgaW4gW3dpdGhfaXRlcmF0aW9uXypdLCBzaW5jZSBpdCBpcyBjYWxsZWQgZXZlcnkgc2Vjb25kXG4gICAgIGJ5IFtldmVyeV9zZWNvbmRdIGluIFt3cml0ZXIwLm1sXSAqKVxuXG4gIGxldCBpbmNyX3BlbmRpbmdfaXRlcnMgcyA9IHMucGVuZGluZ19pdGVyYXRpb25zIDwtIHMucGVuZGluZ19pdGVyYXRpb25zICsgMVxuICBsZXQgZGVjcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyAtIDFcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fMiB0IGEgYiBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzMgdCBhIGIgYyBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fNCB0IGEgYiBjIGQgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyBkIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgbWVyZ2UgKHQxIDogdCkgdDIgPVxuICAgIGlmIFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICAgIHRoZW4gYFNhbWVfYWxyZWFkeVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG4xID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEpLmxlbmd0aCBpblxuICAgICAgbGV0IG4yID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIpLmxlbmd0aCBpblxuICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MSB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDIgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICAgIFVuaW9uX2ZpbmQudW5pb24gdDEgdDI7XG4gICAgICAgICAgVW5pb25fZmluZC5zZXQgdDEgeyBsZW5ndGggPSBuMSArIG4yOyBwZW5kaW5nX2l0ZXJhdGlvbnMgPSAwIH0pKTtcbiAgICAgIGBNZXJnZWQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEVsdCA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgaGVhZGVyIDogJ2EgdCAtPiBIZWFkZXIudFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgY3JlYXRlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVubGluayA6ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgaW5zZXJ0X2FmdGVyIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBpbnNlcnRfYmVmb3JlIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCB1bmxpbmtfYmVmb3JlIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBuZXh0IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBwcmV2IDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBoZWFkZXIgOiBIZWFkZXIudFxuICAgIH1cblxuICBsZXQgZXF1YWwgPSBwaHlzX2VxdWFsXG4gIGxldCBuZXh0IHQgPSB0Lm5leHRcbiAgbGV0IHByZXYgdCA9IHQucHJldlxuICBsZXQgaGVhZGVyIHQgPSB0LmhlYWRlclxuXG4gIGxldCBjcmVhdGVfYXV4IHYgaGVhZGVyID1cbiAgICBsZXQgcmVjIHQgPSB7IHZhbHVlID0gdjsgcHJldiA9IHQ7IG5leHQgPSB0OyBoZWFkZXIgfSBpblxuICAgIHRcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBlcXVhbCB0IHQucHJldlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9hIHQudmFsdWVcbiAgbGV0IGNyZWF0ZSB2ID0gY3JlYXRlX2F1eCB2IChIZWFkZXIuY3JlYXRlICgpKVxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgbGV0IHNldCB0IHYgPSB0LnZhbHVlIDwtIHZcblxuICAoKlxuICAgICBbc3BsaXRfb3Jfc3BsaWNlXSBpcyBzdWZmaWNpZW50IGFzIHRoZSBsb25lIHByaW1pdGl2ZSBmb3JcbiAgICAgYWNjb21wbGlzaGluZyBhbGwgcG9pbnRlciB1cGRhdGVzIG9uIGN5Y2xpYyBsb29wcyBvZiBsaXN0IG5vZGVzLlxuICAgICBJdCB0YWtlcyB0d28gXCJnYXBzXCIgYmV0d2VlbiBhZGphY2VudCBsaW5rZWQgbGlzdCBub2Rlcy4gIElmIHRoZSBnYXBzXG4gICAgIHBvaW50IGludG8gdGhlIHNhbWUgbGlzdCwgdGhlIHJlc3VsdCBpcyB0aGF0IGl0IHdpbGwgYmUgc3BsaXQgaW50b1xuICAgICB0d28gbGlzdHMgYWZ0ZXJ3YXJkcy4gIElmIHRoZSBnYXBzIHBvaW50IGludG8gZGlmZmVyZW50IGxpc3RzLCB0aGVcbiAgICAgcmVzdWx0IGlzIHRoYXQgdGhleSB3aWxsIGJlIHNwbGljZWQgdG9nZXRoZXIgaW50byBvbmUgbGlzdCBhZnRlcndhcmRzLlxuXG4gICAgIHt2XG4gICAgICAgQmVmb3JlICAgICAgICAgICAgICAgICAgICAgIEFmdGVyXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEEgfCAgPC0tPiAgfCBCICAgICAgICAgICAgICAgQSB8ICA8LS0tICAgLS0tPiAgfCBCXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgXFwgLyAgICAgICstLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgLyBcXCAgICAgICstLS0tLVxuICAgICAgICAgICAgICBDIHwgIDwtLT4gIHwgRCAgICAgICAgICAgICAgIEMgfCAgPC0tLSAgIC0tLT4gIHwgRFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICB2fSAqKVxuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlIH5wcmV2MTphIH5uZXh0MTpiIH5wcmV2MjpjIH5uZXh0MjpkID1cbiAgICBhLm5leHQgPC0gZDtcbiAgICBkLnByZXYgPC0gYTtcbiAgICBjLm5leHQgPC0gYjtcbiAgICBiLnByZXYgPC0gY1xuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+bmV4dDE6dDEubmV4dFxuICAgICAgfnByZXYxOnQxLm5leHQucHJldlxuICAgICAgfm5leHQyOnQyLm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5uZXh0LnByZXZcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5wcmV2MTp0MS5wcmV2XG4gICAgICB+bmV4dDE6dDEucHJldi5uZXh0XG4gICAgICB+cHJldjI6dDIucHJldlxuICAgICAgfm5leHQyOnQyLnByZXYubmV4dFxuICA7O1xuXG4gIGxldCBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyID1cbiAgICBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxLmhlYWRlcjtcbiAgICBpZiBub3QgKEhlYWRlci5lcXVhbCB0MS5oZWFkZXIgdDIuaGVhZGVyKVxuICAgIHRoZW4gSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0Mi5oZWFkZXJcbiAgOztcblxuICAoKiBXZSByZWRlZmluZSBzYWZlIHZlcnNpb25zIGZvciBleHBvcnQgKilcbiAgbGV0IHNwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDJcbiAgOztcblxuICBsZXQgaW5zZXJ0X2JlZm9yZSB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgZHVtbXlfaGVhZGVyID0gSGVhZGVyLmNyZWF0ZSAoKVxuXG4gIGxldCB1bmxpbmtfYmVmb3JlIHQgPVxuICAgIGxldCBub2RlID0gdC5wcmV2IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGlua19hZnRlciB0ID1cbiAgICBsZXQgbm9kZSA9IHQubmV4dCBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID0gaWdub3JlICh1bmxpbmtfYWZ0ZXIgdC5wcmV2IDogXyB0KVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIEVsdC50IG9wdGlvbiByZWZcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGhlYWQgLT5cbiAgICBsZXQgaGVhZGVyID0gRWx0LmhlYWRlciBoZWFkIGluXG4gICAgbGV0IHJlYyBsb29wIG4gZWx0ID1cbiAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbGV0IHByZXZfZWx0ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5wcmV2IG5leHRfZWx0KSk7XG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5uZXh0IHByZXZfZWx0KSk7XG4gICAgICBhc3NlcnQgKEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBlbHQpIGhlYWRlcik7XG4gICAgICBpbnZhcmlhbnRfYSAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBpZiBFbHQuZXF1YWwgbmV4dF9lbHQgaGVhZCB0aGVuIG4gZWxzZSBsb29wIChuICsgMSkgbmV4dF9lbHRcbiAgICBpblxuICAgIGxldCBsZW4gPSBsb29wIDEgaGVhZCBpblxuICAgIGFzc2VydCAobGVuID0gSGVhZGVyLmxlbmd0aCBoZWFkZXIpXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0gcmVmIE5vbmVcbmxldCBlcXVhbCAodCA6IF8gdCkgdCcgPSBwaHlzX2VxdWFsIHQgdCdcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGNyZWF0ZSAoKVxuICB8IHggOjogeHMgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIHggaW5cbiAgICBsZXQgX2xhc3QgPSBMaXN0LmZvbGQgeHMgfmluaXQ6Zmlyc3QgfmY6RWx0Lmluc2VydF9hZnRlciBpblxuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBvZl9hcnJheSA9IGZ1bmN0aW9uXG4gIHwgW3x8XSAtPiBjcmVhdGUgKClcbiAgfCBhcnIgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIGFyci4oMCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgYXJyIGVsdCBpID1cbiAgICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYXJyIHRoZW4gbG9vcCBhcnIgKEVsdC5pbnNlcnRfYWZ0ZXIgZWx0IGFyci4oaSkpIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgYXJyIGZpcnN0IDE7XG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAwIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgaSAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIDEgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGlfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBpdGVyX2VsdCB0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT4gZiBlbHQpIGZcbmxldCBpdGVyaV9lbHQgdCB+ZiA9IGZvbGRpX2VsdCB0IH5pbml0OigpIH5mOihmdW4gaSAoKSBlbHQgLT4gZiBpIGVsdClcblxub3BlbiBXaXRoX3JldHVyblxuXG5sZXQgZmluZF9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgZWx0KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRpX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGkgZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSAoaSwgZWx0KSkpO1xuICAgIE5vbmUpXG47O1xuXG4oKiB0aGlzIGZ1bmN0aW9uIGlzIGxhbWJkYSBsaWZ0ZWQgZm9yIHBlcmZvcm1hbmNlLCB0byBtYWtlIGRpcmVjdCByZWN1cnNpdmUgY2FsbHMgaW5zdGVhZFxuICAgb2YgY2FsbHMgdGhyb3VnaCBpdHMgY2xvc3VyZS4gSXQgYWxzbyBhdm9pZHMgdGhlIGluaXRpYWwgY2xvc3VyZSBhbGxvY2F0aW9uLiAqKVxubGV0IHJlYyBpdGVyX2xvb3AgZmlyc3QgZiBlbHQgPVxuICBmIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcl9sb29wIGZpcnN0IGYgbmV4dFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8yIChFbHQuaGVhZGVyIGZpcnN0KSBmaXJzdCBmIChmdW4gZmlyc3QgZiAtPlxuICAgICAgaXRlcl9sb29wIGZpcnN0IGYgZmlyc3QpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBmaXJzdCAtPiBIZWFkZXIubGVuZ3RoIChFbHQuaGVhZGVyIGZpcnN0KVxuOztcblxubGV0IHJlYyBpdGVyaV9sb29wIGZpcnN0IGYgaSBlbHQgPVxuICBmIGkgKEVsdC52YWx1ZSBlbHQpO1xuICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBpdGVyaV9sb29wIGZpcnN0IGYgKGkgKyAxKSBuZXh0XG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8yIChFbHQuaGVhZGVyIGZpcnN0KSBmaXJzdCBmIChmdW4gZmlyc3QgZiAtPlxuICAgICAgaXRlcmlfbG9vcCBmaXJzdCBmIDAgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGZvbGRpX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGkgZiBhY2MgZWx0IC0+IGYgaSBhY2MgKEVsdC52YWx1ZSBlbHQpKVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGYgYWNjIGVsdCAtPiBmIGFjYyAoRWx0LnZhbHVlIGVsdCkpXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCB1bmNoZWNrZWRfaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgZiBlbHQgPVxuICAgICAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgKCogdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGJhZyBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQgYnkgW2ZdICopXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZmlyc3QgbmV4dCkgdGhlbiBsb29wIHQgZiBuZXh0XG4gICAgaW5cbiAgICBsb29wIHQgZiBmaXJzdFxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBPcHRpb24uaXNfbm9uZSAhdFxuXG4oKiBtb3JlIGVmZmljaWVudCB0aGFuIHdoYXQgQ29udGFpbmVyLk1ha2UgcmV0dXJucyAqKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgKEVsdC52YWx1ZSBwcmV2KSBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9yaWdodF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIHByZXYgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IHRvX2xpc3QgdCA9IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIHggdGwgLT4geCA6OiB0bClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHMgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgcylcblxubGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChCYXNlLkxpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG5sZXQgY29weSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxubGV0IGNsZWFyIHQgPSB0IDo9IE5vbmVcblxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgdDEgdDIgPVxuICBtYXRjaCAhdDEsICF0MiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgZjEsIFNvbWUgZjIgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmMSkgY29tcGFyZV9lbHQgZjEgZjIgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzNcbiAgICAgICAgKEVsdC5oZWFkZXIgZjIpXG4gICAgICAgIGNvbXBhcmVfZWx0XG4gICAgICAgIGYxXG4gICAgICAgIGYyXG4gICAgICAgIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgICAgICAgbGV0IHJlYyBsb29wIGNvbXBhcmVfZWx0IGVsdDEgZjEgZWx0MiBmMiA9XG4gICAgICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgKEVsdC52YWx1ZSBlbHQxKSAoRWx0LnZhbHVlIGVsdDIpIGluXG4gICAgICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPD4gMFxuICAgICAgICAgICAgIHRoZW4gY29tcGFyZV9yZXN1bHRcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBuZXh0MSA9IEVsdC5uZXh0IGVsdDEgaW5cbiAgICAgICAgICAgICAgIGxldCBuZXh0MiA9IEVsdC5uZXh0IGVsdDIgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIHBoeXNfZXF1YWwgbmV4dDEgZjEsIHBoeXNfZXF1YWwgbmV4dDIgZjIgd2l0aFxuICAgICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICAgICAgICAgICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gbG9vcCBjb21wYXJlX2VsdCBuZXh0MSBmMSBuZXh0MiBmMilcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbG9vcCBjb21wYXJlX2VsdCBmMSBmMSBmMiBmMikpXG47O1xuXG5leGNlcHRpb24gVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID1cbiAgaWYgcGh5c19lcXVhbCBzcmMgZHN0IHRoZW4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdDtcbiAgbWF0Y2ggIXNyYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc3JjX2hlYWQgLT5cbiAgICAobWF0Y2ggIWRzdCB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGRzdCA6PSBTb21lIHNyY19oZWFkO1xuICAgICAgIGNsZWFyIHNyY1xuICAgICB8IFNvbWUgZHN0X2hlYWQgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm1lcmdlIChFbHQuaGVhZGVyIHNyY19oZWFkKSAoRWx0LmhlYWRlciBkc3RfaGVhZCkgd2l0aFxuICAgICAgICB8IGBTYW1lX2FscmVhZHkgLT4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuICAgICAgICB8IGBNZXJnZWQgLT5cbiAgICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBkc3RfaGVhZCBzcmNfaGVhZDtcbiAgICAgICAgICBjbGVhciBzcmMpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBpdGVyX2VsdCB0IH5mOihmdW4gZWx0IC0+IEVsdC5zZXQgZWx0IChmIChFbHQudmFsdWUgZWx0KSkpXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPSBpdGVyaV9lbHQgdCB+ZjooZnVuIGkgZWx0IC0+IEVsdC5zZXQgZWx0IChmIGkgKEVsdC52YWx1ZSBlbHQpKSlcblxubGV0IHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlID1cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGVsdCAtPlxuICAgIChtYXRjaCAhdCB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgaGVhZCAtPlxuICAgICAgIGlmIEVsdC5lcXVhbCBoZWFkIGVsdFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICB0IDo9IGlmIEVsdC5lcXVhbCBoZWFkIG5leHRfZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgbmV4dF9lbHQpKTtcbiAgICBFbHQudW5saW5rIGVsdClcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxuZXhjZXB0aW9uIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuXG5sZXQgZmlyc3RfZWx0IHQgPSAhdFxubGV0IGxhc3RfZWx0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC5wcmV2ICF0XG5sZXQgZmlyc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChmaXJzdF9lbHQgdClcbmxldCBsYXN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAobGFzdF9lbHQgdClcblxubGV0IGlzX2ZpcnN0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaXNfbGFzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICAgIEVsdC5lcXVhbCBlbHQgbGFzdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG1lbV9lbHQgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG47O1xuXG5sZXQgcHJldiB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIFNvbWUgKEVsdC5wcmV2IGVsdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG5leHQgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIEVsdC5lcXVhbCBlbHQgbGFzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQubmV4dCBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYWZ0ZXIgdCBlbHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYWZ0ZXIgZWx0IHZcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9iZWZvcmUgdCBlbHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X2VsdCA9IEVsdC5pbnNlcnRfYmVmb3JlIGZpcnN0IHYgaW5cbiAgICAgIHQgOj0gU29tZSBuZXdfZWx0O1xuICAgICAgbmV3X2VsdClcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0Lmluc2VydF9iZWZvcmUgZWx0IHZcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9lbXB0eSB0IHYgPVxuICBsZXQgbmV3X2VsdCA9IEVsdC5jcmVhdGUgdiBpblxuICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgbmV3X2VsdFxuOztcblxubGV0IGluc2VydF9sYXN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+IEVsdC5pbnNlcnRfYmVmb3JlIGZpcnN0IHZcbjs7XG5cbmxldCBpbnNlcnRfZmlyc3QgdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5zZXJ0X2VtcHR5IHQgdlxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2VsdCA9IEVsdC5pbnNlcnRfYmVmb3JlIGZpcnN0IHYgaW5cbiAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICBuZXdfZWx0XG47O1xuXG5sZXQgcmVtb3ZlX2xhc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQudW5saW5rX2JlZm9yZSBmaXJzdCBpblxuICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBsYXN0IHRoZW4gdCA6PSBOb25lO1xuICAgIFNvbWUgKEVsdC52YWx1ZSBsYXN0KVxuOztcblxubGV0IHJlbW92ZV9maXJzdCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgc2Vjb25kID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICBFbHQudW5saW5rIGZpcnN0O1xuICAgIHQgOj0gaWYgRWx0LmVxdWFsIGZpcnN0IHNlY29uZCB0aGVuIE5vbmUgZWxzZSBTb21lIHNlY29uZDtcbiAgICBTb21lIChFbHQudmFsdWUgZmlyc3QpXG47O1xuXG5sZXQgcmVtb3ZlIHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIGlnbm9yZSAocmVtb3ZlX2ZpcnN0IHQgOiBfIG9wdGlvbilcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0LnVubGluayBlbHRcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHRoZW4gaW5zZXJ0X2xhc3QgbmV3X3QgKEVsdC52YWx1ZSBlbHQpIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHRoZW4gaW5zZXJ0X2xhc3QgbmV3X3QgKEVsdC52YWx1ZSBlbHQpIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgbmV3X3QgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggZiBpIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIGluc2VydF9sYXN0IChpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHQxIGVsc2UgdDIpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIHQxIGVsc2UgdDIpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCAoZiAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCAoZiBpIChFbHQudmFsdWUgZWx0KSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDEgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbiAgICAgICAgICB8IFNlY29uZCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MiB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5leGNlcHRpb24gSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvclxuXG5sZXQgbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICBpZiBFbHQuZXF1YWwgZmlyc3QgZWx0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICB0IDo9IFNvbWUgYWZ0ZXJfZWx0O1xuICAgICAgICAgICAgYWZ0ZXJfZWx0KVxuICAgICAgICAgIGVsc2UgZmlyc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogc3BsaWNlIFtlbHRdIGluIGJlZm9yZSBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBhbmNob3IgZWx0O1xuICAgICAgICBpZiBFbHQuZXF1YWwgZmlyc3QgYW5jaG9yIHRoZW4gdCA6PSBTb21lIGVsdClcbiAgICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0KVxuICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG1vdmVfdG9fZnJvbnQgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+IGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBmaXJzdCkgdGhlbiBtb3ZlX2JlZm9yZSB0IGVsdCB+YW5jaG9yOmZpcnN0XG47O1xuXG5sZXQgbW92ZV9hZnRlciB0IGVsdCB+YW5jaG9yID1cbiAgaWYgRWx0LmVxdWFsIGFuY2hvciBlbHQgdGhlbiByYWlzZSBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yO1xuICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgYW5jaG9yKSAoRWx0LmhlYWRlciBlbHQpXG4gIHRoZW4gKFxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiB1bmxpbmsgW2VsdF0gKilcbiAgICAgICAgbGV0IGFmdGVyX2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBlbHQgYWZ0ZXJfZWx0O1xuICAgICAgICBpZiBFbHQuZXF1YWwgZmlyc3QgZWx0IHRoZW4gdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgKCogc3BsaWNlIFtlbHRdIGluIGFmdGVyIFthbmNob3JdICopXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgYW5jaG9yIGVsdClcbiAgICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0KVxuICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG1vdmVfdG9fYmFjayB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgaWYgbm90IChFbHQuZXF1YWwgZWx0IGxhc3QpIHRoZW4gbW92ZV9hZnRlciB0IGVsdCB+YW5jaG9yOmxhc3Rcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fbGlzdCB0IHw+IFNlcXVlbmNlLm9mX2xpc3RcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gU2V4cGxpYi5TZXhwLnRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgPSBTZXhwbGliLlNleHAuc2V4cF9vZl90XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmluY2x1ZGUgKFxuICBCYXNlLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgdHlwZSBzZXhwID0gQmFzZS5TZXhwLnQgPVxuICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICB8IExpc3Qgb2YgdCBsaXN0XG5lbmRcblxubW9kdWxlIFNleHBfbWF5YmUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgdCAqIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFJlc3VsdC5PayBhIC0+IHNleHBfb2ZfYSBhXG4gICAgfCBSZXN1bHQuRXJyb3IgKHNleHAsIGVycikgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBFcnJvci5zZXhwX29mX3QgZXJyIF1cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBfIF0gfCBzZXhwIC0+XG4gICAgICAodHJ5IFJlc3VsdC5PayAoYV9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgICB8IGV4biAtPiBSZXN1bHQuRXJyb3IgKHNleHAsIEVycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciAoZ3JhbW1hciA6IF8gU2V4cGxpYi5TZXhwX2dyYW1tYXIudCkgOiBfIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgeyB1bnR5cGVkID0gVW5pb24gWyBncmFtbWFyLnVudHlwZWQ7IEJhc2UuU2V4cC50X3NleHBfZ3JhbW1hci51bnR5cGVkIF0gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaXRoX3RleHQgPSBzdHJ1Y3RcbiAgb3BlbiBSZXN1bHQuRXhwb3J0XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHZhbHVlIDogJ2FcbiAgICA7IHRleHQgOiBzdHJpbmdcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IEF0b20gdC50ZXh0XG5cbiAgbGV0IG9mX3RleHQgdmFsdWVfb2Zfc2V4cCA/KGZpbGVuYW1lID0gXCJcIikgdGV4dCA9XG4gICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBvZl9zdHJpbmdfY29udiB0ZXh0IHZhbHVlX29mX3NleHApIHdpdGhcbiAgICB8IE9rIChgUmVzdWx0IHZhbHVlKSAtPiBPayB7IHZhbHVlOyB0ZXh0IH1cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IGVyclxuICAgIHwgT2sgKGBFcnJvciAoZXhuLCBhbm5vdGF0ZWQpKSAtPlxuICAgICAgRXJyb3IgKEVycm9yLm9mX2V4biAoQW5ub3RhdGVkLmdldF9jb252X2V4biBhbm5vdGF0ZWQgfmZpbGU6ZmlsZW5hbWUgfmV4YzpleG4pKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiV2l0aF90ZXh0LnQgc2hvdWxkIGJlIHN0b3JlZCBhcyBhbiBhdG9tLCBidXQgaW5zdGVhZCBhIGxpc3Qgd2FzIGZvdW5kLlwiXG4gICAgICAgIHNleHBcbiAgICB8IEF0b20gdGV4dCAtPiBvZl90ZXh0IGFfb2Zfc2V4cCB0ZXh0IHw+IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBfID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIEJhc2UuU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCB0ZXh0IHQgPSB0LnRleHRcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgbGV0IG9mX3ZhbHVlIHNleHBfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIGxldCB0ZXh0ID0gc2V4cF9vZl92YWx1ZSB2YWx1ZSB8PiB0b19zdHJpbmdfaHVtIGluXG4gICAgeyB2YWx1ZTsgdGV4dCB9XG4gIDs7XG5lbmRcblxudHlwZSAnYSBub19yYWlzZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IHNleHBfb2Zfbm9fcmFpc2Ugc2V4cF9vZl9hIGEgPVxuICB0cnkgc2V4cF9vZl9hIGEgd2l0aFxuICB8IGV4biAtPlxuICAgICh0cnkgTGlzdCBbIEF0b20gXCJmYWlsdXJlIGJ1aWxkaW5nIHNleHBcIjsgc2V4cF9vZl9leG4gZXhuIF0gd2l0aFxuICAgICB8IF8gLT4gQXRvbSBcImNvdWxkIG5vdCBidWlsZCBzZXhwIGZvciBleG4gcmFpc2VkIHdoZW4gYnVpbGRpbmcgc2V4cCBmb3IgdmFsdWVcIilcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU2V4cCkgKEJhc2UuU2V4cClcblxubGV0IG9mX3NleHBfYWxsb3dfZXh0cmFfZmllbGRzX3JlY3Vyc2l2ZWx5IG9mX3NleHAgc2V4cCA9XG4gIGxldCByID0gU2V4cGxpYi5Db252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHMgaW5cbiAgbGV0IHByZXYgPSAhciBpblxuICBFeG4ucHJvdGVjdFxuICAgIH5maW5hbGx5OihmdW4gKCkgLT4gciA6PSBwcmV2KVxuICAgIH5mOihmdW4gKCkgLT5cbiAgICAgIHIgOj0gZmFsc2U7XG4gICAgICBvZl9zZXhwIHNleHApXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNleHBcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNleHBcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNleHBcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNoX3F1ZXVlX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBTX2JhY2tlbmQgPSBTX2JhY2tlbmRcblxubW9kdWxlIE1ha2VfYmFja2VuZCAoVGFibGUgOiBIYXNodGJsX2ludGYuSGFzaHRibCkgOiBTX2JhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQmFja2VuZCA9XG4gICAgUzFcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfYXJnIDo9ICdrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2tleSA6PSAna2V5XG5cbiAgbW9kdWxlIEJhY2tlbmQgOiBCYWNrZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleV92YWx1ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2tleSwgJ3ZhbHVlKSB0ID1cbiAgICAgICAgICB7IGtleSA6ICdrZXlcbiAgICAgICAgICA7IG11dGFibGUgdmFsdWUgOiAndmFsdWVcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBrZXkgdCA9IHQua2V5XG4gICAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgeyBrZXk7IHZhbHVlIH0gPVxuICAgICAgICBbJXNleHBfb2Y6IGtleSAqIGRhdGFdIChrZXksIHZhbHVlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG9wZW4gS2V5X3ZhbHVlLlRcbiAgICBtb2R1bGUgRWx0ID0gRG91Ymx5X2xpbmtlZC5FbHRcblxuICAgIHR5cGUgKCdrZXksICdkYXRhKSB0ID1cbiAgICAgIHsgbXV0YWJsZSBudW1fcmVhZGVycyA6IGludFxuICAgICAgOyBxdWV1ZSA6ICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XG4gICAgICA7IHRhYmxlIDogKCdrZXksICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRWx0LnQpIFRhYmxlLnRcbiAgICAgIH1cblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICAgICAgWyVzZXhwX29mOiAoa2V5LCBkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRdIHQucXVldWVcbiAgICA7O1xuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIGFzc2VydCAoRG91Ymx5X2xpbmtlZC5sZW5ndGggdC5xdWV1ZSA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlKTtcbiAgICAgICgqIExvb2sgYXQgZWFjaCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgY2hlY2tpbmc6XG4gICAgICAgKiAgIC0gZXZlcnkgZWxlbWVudCBpbiB0aGUgcXVldWUgaXMgaW4gdGhlIGhhc2ggdGFibGVcbiAgICAgICAqICAgLSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXNcbiAgICAgICopXG4gICAgICBsZXQga2V5cyA9IFRhYmxlLmNyZWF0ZSB+c2l6ZTooVGFibGUubGVuZ3RoIHQudGFibGUpIChUYWJsZS5oYXNoYWJsZV9zIHQudGFibGUpIGluXG4gICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+XG4gICAgICAgIGxldCBrZXkgPSBrdi5rZXkgaW5cbiAgICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICBhc3NlcnQgKG5vdCAoVGFibGUubWVtIGtleXMga2V5KSk7XG4gICAgICAgICAgVGFibGUuc2V0IGtleXMgfmtleSB+ZGF0YTooKSlcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMTYpIGhhc2hhYmxlID1cbiAgICAgIHsgbnVtX3JlYWRlcnMgPSAwXG4gICAgICA7IHF1ZXVlID0gRG91Ymx5X2xpbmtlZC5jcmVhdGUgKClcbiAgICAgIDsgdGFibGUgPSBUYWJsZS5jcmVhdGUgfmdyb3d0aF9hbGxvd2VkIH5zaXplIChUYWJsZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWFkIHQgZiA9XG4gICAgICB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgKyAxO1xuICAgICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgLSAxKVxuICAgIDs7XG5cbiAgICBsZXQgZW5zdXJlX2Nhbl9tb2RpZnkgdCA9XG4gICAgICBpZiB0Lm51bV9yZWFkZXJzID4gMFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkl0IGlzIGFuIGVycm9yIHRvIG1vZGlmeSBhIEhhc2hfcXVldWUudCB3aGlsZSBpdGVyYXRpbmcgb3ZlciBpdC5cIlxuICAgIDs7XG5cbiAgICBsZXQgY2xlYXIgdCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgRG91Ymx5X2xpbmtlZC5jbGVhciB0LnF1ZXVlO1xuICAgICAgVGFibGUuY2xlYXIgdC50YWJsZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBUYWJsZS5sZW5ndGggdC50YWJsZVxuICAgIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbiAgICBsZXQgbG9va3VwIHQgayA9XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPiBTb21lIChFbHQudmFsdWUgZWx0KS52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2V4biB0IGsgPSAoRWx0LnZhbHVlIChUYWJsZS5maW5kX2V4biB0LnRhYmxlIGspKS52YWx1ZVxuICAgIGxldCBtZW0gdCBrID0gVGFibGUubWVtIHQudGFibGUga1xuXG4gICAgKCogTm90ZSB0aGF0IHRoaXMgaXMgdGhlIHRhaWwtcmVjdXJzaXZlIENvcmVfbGlzdC5tYXAgKilcbiAgICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcbiAgICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19hcnJheSB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcblxuICAgIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT4gRG91Ymx5X2xpbmtlZC5mb3JfYWxsIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZXhpc3RzIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT4gRG91Ymx5X2xpbmtlZC5maW5kX21hcCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBmaW5kIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgIChEb3VibHlfbGlua2VkLmZpbmQgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgICAgICAgIH5mOktleV92YWx1ZS52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgaWYgVGFibGUubWVtIHQudGFibGUga2V5XG4gICAgICB0aGVuIGBLZXlfYWxyZWFkeV9wcmVzZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNvbnRlbnRzID0geyBLZXlfdmFsdWUua2V5OyB2YWx1ZSB9IGluXG4gICAgICAgIGxldCBlbHQgPVxuICAgICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5pbnNlcnRfbGFzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5pbnNlcnRfZmlyc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgICBpblxuICAgICAgICBUYWJsZS5zZXQgdC50YWJsZSB+a2V5IH5kYXRhOmVsdDtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrIHQgPSBlbnF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udCB0ID0gZW5xdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5lbnF1ZXVlX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBtYXRjaCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgd2l0aFxuICAgICAgfCBgS2V5X2FscmVhZHlfcHJlc2VudCAtPiByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXlcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2tfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnRfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgKCogUGVyZm9ybWFuY2UgaGFjazogd2UgaW1wbGVtZW50IHRoaXMgdmVyc2lvbiBzZXBhcmF0ZWx5IHRvIGF2b2lkIGFsbG9jYXRpb24gZnJvbSB0aGVcbiAgICAgICBvcHRpb24uICopXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrX2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrIHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IG1heWJlX2t2ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfbGFzdCB0LnF1ZXVlXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2ZpcnN0IHQucXVldWVcbiAgICAgIGluXG4gICAgICBtYXRjaCBtYXliZV9rdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+XG4gICAgICAgIFRhYmxlLnJlbW92ZSB0LnRhYmxlIGt2LmtleTtcbiAgICAgICAgU29tZSAoa3Yua2V5LCBrdi52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKCkgPVxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfd2l0aF9rZXk6IGVtcHR5IHF1ZXVlXCJdXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKClcbiAgICAgIHwgU29tZSAoaywgdikgLT4gaywgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGZyb250XG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKF8sIHYpIC0+IFNvbWUgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrIHQgPSBkZXF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udCB0ID0gZGVxdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IGxhc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBsYXN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCBmaXJzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBmaXJzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfZW1wdHkgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV9leG46IGVtcHR5IHF1ZXVlXCJdXG5cbiAgICBsZXQgZGVxdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWUgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGtleXMgdCA9XG4gICAgICAoKiBSZXR1cm4gdGhlIGtleXMgaW4gdGhlIG9yZGVyIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLmtleVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbiAgICBsZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvbGQgdC5xdWV1ZSB+aW5pdCB+ZjooZnVuIGFjIGt2IC0+XG4gICAgICAgICAgZiBhYyB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gYWMgfmtleTpfIH5kYXRhIC0+IGYgYWMgZGF0YSlcbiAgICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gICAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIG0gfmZvbGQgdCB+ZlxuICAgIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gICAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcblxuICAgIGxldCBkZXF1ZXVlX2FsbCB0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIG1hdGNoIGRlcXVldWVfZnJvbnQgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgIGYgdjtcbiAgICAgICAgICBsb29wICgpXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYE5vX3N1Y2hfa2V5XG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIERvdWJseV9saW5rZWQucmVtb3ZlIHQucXVldWUgZWx0O1xuICAgICAgICBgT2tcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX3JlbW92ZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZW1vdmVfZXhuOiB1bmtub3duIGtleVwiIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCByZW1vdmVfZXhuIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggcmVtb3ZlIHQgayB3aXRoXG4gICAgICB8IGBOb19zdWNoX2tleSAtPiByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9yZW1vdmUgdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kX2FuZF9yZW1vdmUgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIERvdWJseV9saW5rZWQucmVtb3ZlIHQucXVldWUgZWx0O1xuICAgICAgICBTb21lIChFbHQudmFsdWUgZWx0KS52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZSB0IGsgdiA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICAoRWx0LnZhbHVlIGVsdCkudmFsdWUgPC0gdjtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZXBsYWNlX3Vua25vd25fa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLnJlcGxhY2VfZXhuOiB1bmtub3duIGtleVwiXG4gICAgICAgICAgICB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9leG4gdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlcGxhY2UgdCBrIHYgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBkcm9wID8obiA9IDEpIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBpZiBuID49IGxlbmd0aCB0XG4gICAgICB0aGVuIGNsZWFyIHRcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yIF8gPSAxIHRvIG4gZG9cbiAgICAgICAgICBpZ25vcmUgKGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IDogXyBvcHRpb24pXG4gICAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IGRyb3BfYmFjayA/biB0ID0gZHJvcCA/biB0IGBiYWNrXG4gICAgbGV0IGRyb3BfZnJvbnQgP24gdCA9IGRyb3AgP24gdCBgZnJvbnRcblxuICAgIGxldCBjb3B5IHQgPVxuICAgICAgbGV0IGNvcGllZCA9IGNyZWF0ZSB+c2l6ZToobGVuZ3RoIHQpIChUYWJsZS5oYXNoYWJsZSB0LnRhYmxlKSBpblxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZW5xdWV1ZV9iYWNrX2V4biBjb3BpZWQga2V5IGRhdGEpO1xuICAgICAgY29waWVkXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IFMwIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEpIGhhc2hfcXVldWUgOj0gKCdrZXksICdkYXRhKSBCYWNrZW5kLnRcblxuICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICBtb2R1bGUgS2V5IDogS2V5XG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgPSBULktleS50ID0gc3RydWN0XG4gICAgaW5jbHVkZSAoQmFja2VuZCA6IEJhY2tlbmQgd2l0aCB0eXBlICgnaywgJ2QpIHQgOj0gKCdrLCAnZCkgQmFja2VuZC50KVxuXG4gICAgdHlwZSBrZXkgPSBULktleS50XG4gICAgdHlwZSAnZGF0YSB0ID0gKFQuS2V5LnQsICdkYXRhKSBCYWNrZW5kLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgaGFzaGFibGVcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEtleSA6IEtleSkgOiBTIHdpdGggdHlwZSBrZXkgPSBLZXkudCA9IE1ha2Vfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEtleSlcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBCYWNrZW5kXG5lbmRcblxuaW5jbHVkZSBNYWtlX2JhY2tlbmQgKEhhc2h0YmwpXG4iLCIoKiogRnVuY3RvcnMgYW5kIGludGVyZmFjZXMgdXNlZCB0byBtYWtlIG1vZHVsZXMgaGFzaGFibGUuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X3BsYWluIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfcGxhaW4gKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfcGxhaW4gKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5X3BsYWluKSA6XG4gIFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV9wbGFpbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG4gIGluY2x1ZGUgVFxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X3BsYWluIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULktleVxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcblxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5IHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULktleVxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcblxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFQuS2V5XG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5X2JpbmFibGUpIDpcbiAgU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG5cbiAgICAgIG1vZHVsZSBUYWJsZSA6IHNpZ1xuICAgICAgICB0eXBlICdhIHQgPSAoa2V5LCAnYSkgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgOiBzaWdcbiAgICAgICAgdHlwZSB0ID0ga2V5IEhhc2hfc2V0LnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgICAgZW5kXG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6IGtleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChLZXkgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBLZXkudCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGUgKEtleSlcbiAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZSAoS2V5KVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgICBtb2R1bGUgS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZVxuXG4gICAgICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gICAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBDaGFyID0gQmFzZS5DaGFyXG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZ1xuaW5jbHVkZSBIZXhkdW1wX2ludGZcblxubGV0IGJ5dGVzX3Blcl9saW5lID0gMTZcblxuKCogSW5pdGlhbGl6ZSB0byBlbm91Z2ggbGluZXMgdG8gZGlzcGxheSA0MDk2IGJ5dGVzIC0tIGxhcmdlIGVub3VnaCB0aGF0LCBmb3IgZXhhbXBsZSwgYVxuICAgY29tcGxldGUgRXRoZXJuZXQgcGFja2V0IGNhbiBhbHdheXMgYmUgZGlzcGxheWVkIC0tIGluY2x1ZGluZyB0aGUgbGluZSBjb250YWluaW5nIHRoZVxuICAgZmluYWwgaW5kZXguICopXG5sZXQgZGVmYXVsdF9tYXhfbGluZXMgPSByZWYgKCg0MDk2IC8gYnl0ZXNfcGVyX2xpbmUpICsgMSlcblxubW9kdWxlIE9mX2luZGV4YWJsZTIgKFQgOiBJbmRleGFibGUyKSA9IHN0cnVjdFxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhleF9vZl9wb3MgcG9zID0gUHJpbnRmLnNwcmludGYgXCIlMDh4XCIgcG9zXG5cbiAgICBsZXQgaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIG9mZnNldCA9XG4gICAgICBsZXQgcG9zID0gc3RhcnQgKyBvZmZzZXQgaW5cbiAgICAgIGlmIHBvcyA+PSB1bnRpbCB0aGVuIFwiICBcIiBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJTAyeFwiIChDaGFyLnRvX2ludCAoZ2V0IHQgcG9zKSlcbiAgICA7O1xuXG4gICAgbGV0IGhleF9vZl9saW5lIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzICVzICVzICVzICVzICVzICVzICVzICAlcyAlcyAlcyAlcyAlcyAlcyAlcyAlc1wiXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA0KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDUpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA3KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDgpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgOSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxNSlcbiAgICA7O1xuXG4gICAgbGV0IHByaW50YWJsZV9zdHJpbmcgdCB+c3RhcnQgfnVudGlsID1cbiAgICAgIFN0cmluZy5pbml0ICh1bnRpbCAtIHN0YXJ0KSB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGNoYXIgPSBnZXQgdCAoc3RhcnQgKyBpKSBpblxuICAgICAgICBpZiBDaGFyLmlzX3ByaW50IGNoYXIgdGhlbiBjaGFyIGVsc2UgJy4nKVxuICAgIDs7XG5cbiAgICBsZXQgbGluZSB0IH5wb3MgfmxlbiB+bGluZV9pbmRleCA9XG4gICAgICBsZXQgc3RhcnQgPSBwb3MgKyAobGluZV9pbmRleCAqIGJ5dGVzX3Blcl9saW5lKSBpblxuICAgICAgbGV0IHVudGlsID0gbWluIChzdGFydCArIGJ5dGVzX3Blcl9saW5lKSAocG9zICsgbGVuKSBpblxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAgJXMgIHwlc3xcIlxuICAgICAgICAoaGV4X29mX3BvcyBzdGFydClcbiAgICAgICAgKGhleF9vZl9saW5lIHQgfnN0YXJ0IH51bnRpbClcbiAgICAgICAgKHByaW50YWJsZV9zdHJpbmcgdCB+c3RhcnQgfnVudGlsKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc2VxdWVuY2UgP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gICAgICBpblxuICAgICAgbGV0IG1heF9saW5lcyA9XG4gICAgICAgIG1hdGNoIG1heF9saW5lcyB3aXRoXG4gICAgICAgIHwgU29tZSBtYXhfbGluZXMgLT4gbWF4X2xpbmVzXG4gICAgICAgIHwgTm9uZSAtPiAhZGVmYXVsdF9tYXhfbGluZXNcbiAgICAgIGluXG4gICAgICAoKiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCAzIGxpbmVzOiBmaXJzdCBsaW5lIG9mIGhleCwgZWxsaXBzaXMsIGxhc3QgbGluZSBvZiBoZXggKilcbiAgICAgIGxldCBtYXhfbGluZXMgPSBtYXggbWF4X2xpbmVzIDMgaW5cbiAgICAgICgqIHVuYWJyaWRnZWQgbGluZXMgPSBsaW5lcyBvZiBoZXggKyBsaW5lIHdpdGggZmluYWwgaW5kZXggKilcbiAgICAgIGxldCB1bmFicmlkZ2VkX2xpbmVzID1cbiAgICAgICAgSW50LnJvdW5kX3VwIGxlbiB+dG9fbXVsdGlwbGVfb2Y6Ynl0ZXNfcGVyX2xpbmUgLyBieXRlc19wZXJfbGluZVxuICAgICAgaW5cbiAgICAgICgqIEZpZ3VyZSBvdXQgd2hlcmUgd2UgbmVlZCB0byBza2lwIGZyb20gYW5kIHRvIGlmIFttYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXS5cbiAgICAgICAgIFNraXAgYWZ0ZXIgaGFsZiB0aGUgYWN0dWFsIGhleCBsaW5lcyAoc3VidHJhY3Rpbmcgb25lIGxpbmUgZm9yIHRoZSBlbGxpcHNpcykuXG4gICAgICAgICBTa2lwIHRvIG5lYXIgdGhlIGVuZCwgbGVzcyB0aGUgbnVtYmVyIG9mIGxpbmVzIHJlbWFpbmluZyB0byBwcm9kdWNlLCBwbHVzIHRoZVxuICAgICAgICAgZWxsaXBzaXMgbGluZS4gKilcbiAgICAgIGxldCBza2lwX2Zyb20gPSAobWF4X2xpbmVzIC0gMSkgLyAyIGluXG4gICAgICBsZXQgc2tpcF90byA9IHVuYWJyaWRnZWRfbGluZXMgLSAobWF4X2xpbmVzIC0gc2tpcF9mcm9tKSArIDEgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBsaW5lX2luZGV4IC0+XG4gICAgICAgIGlmIGxpbmVfaW5kZXggPj0gdW5hYnJpZGdlZF9saW5lc1xuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSBpZiBsaW5lX2luZGV4ID0gc2tpcF9mcm9tICYmIG1heF9saW5lcyA8IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBZaWVsZCAoXCIuLi5cIiwgc2tpcF90bylcbiAgICAgICAgZWxzZSBZaWVsZCAobGluZSB0IH5wb3MgfmxlbiB+bGluZV9pbmRleCwgbGluZV9pbmRleCArIDEpKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0ID1cbiAgICAgIHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIlxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IF8gXyB0ID0gdG9fc2VxdWVuY2UgdCB8PiBTZXF1ZW5jZS50b19saXN0IHw+IFslc2V4cF9vZjogc3RyaW5nIGxpc3RdXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHByaW50YWJsZSA9XG4gICAgICAgIGxldCByZWMgcHJpbnRhYmxlX2Zyb20gdCB+cG9zIH5sZW5ndGggPVxuICAgICAgICAgIHBvcyA+PSBsZW5ndGhcbiAgICAgICAgICB8fCAoQ2hhci5pc19wcmludCAoZ2V0IHQgcG9zKSAmJiBwcmludGFibGVfZnJvbSB0IH5wb3M6KHBvcyArIDEpIH5sZW5ndGgpXG4gICAgICAgIGluXG4gICAgICAgIGZ1biB0IC0+IHByaW50YWJsZV9mcm9tIHQgfnBvczowIH5sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIHBvcyAtPiBnZXQgdCBwb3MpXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgaWYgcHJpbnRhYmxlIHQgdGhlbiBbJXNleHAgKHRvX3N0cmluZyB0IDogc3RyaW5nKV0gZWxzZSBbJXNleHAgKHQgOiAoYSwgYikgdCldXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlMSAoVCA6IEluZGV4YWJsZTEpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB4IHQgPSBNLkhleGR1bXAuc2V4cF9vZl90IHggWyVzZXhwX29mOiBfXSB0XG4gICAgbGV0IHRvX3NlcXVlbmNlID0gTS5IZXhkdW1wLnRvX3NlcXVlbmNlXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPSBNLkhleGR1bXAudG9fc3RyaW5nX2h1bVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHQgOiAoYSwgXykgTS5IZXhkdW1wLlByZXR0eS50KV1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZSAoVCA6IEluZGV4YWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPZl9pbmRleGFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gVC50XG5cbiAgICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICAgICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPSBNLkhleGR1bXAuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQgOiBfIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlX2ludGZcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfc2V4cF9ncmFtbWFyIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIE1ha2UgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgRXh0ZW5kIChNIDogQmFzZS5JZGVudGlmaWFibGUuUykgKEIgOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gTS50KSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuICAgIGluY2x1ZGUgKEIgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmRfYmluYWJsZSAoTSkgKFQpXG5cbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gVFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBNLmhhc2hhYmxlXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TdHJpbmdcblxuKCogVGhlc2UgdHdvIGFyZSBuZWVkZWQgYmVjYXVzZSBbaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kXSAocHJlc2VudCBsYXRlciBpbiB0aGUgZmlsZSlcbiAgIGJpbmRzIG5ldyBbTWFwXSBhbmQgW1NldF0gbW9kdWxlcy4gKilcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4gICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICBsZXQgb2Zfc3RyaW5nID0gRm4uaWRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4gICAgICBsZXQgaGFzaGFibGUgPSBTdGFibGUuVjEuaGFzaGFibGVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5TdHJpbmcpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zdHJpbmdcbmxldCBnZW5fbm9uZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlcbmxldCBnZW4nID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfb2ZcbmxldCBnZW5fbm9uZW1wdHknID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5X29mXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIGNoYXJzID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcnMgfmxlbmd0aFxuOztcblxubGV0IHRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczowIH5sZW46aVxuOztcblxubGV0IHJ0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCByZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKVxuOztcblxuKCoqIFNlZSB7IUFycmF5Lm5vcm1hbGl6ZX0gZm9yIHRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMuICopXG5sZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxubGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3Bcbjs7XG5cbmxldCBuZ2V0IHggaSA9XG4gIGxldCBtb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmcgaW5cbiAgeC5bbm9ybWFsaXplIHggaV1cbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlN0cmluZ31bQmFzZS5TdHJpbmddfS4gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5TdHJpbmdcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogW0Nhc2VsZXNzXSBjb21wYXJlcyBhbmQgaGFzaGVzIHN0cmluZ3MgaWdub3JpbmcgY2FzZSwgc28gdGhhdCBmb3IgZXhhbXBsZVxuICAgIFtDYXNlbGVzcy5lcXVhbCBcIk9DYW1sXCIgXCJvY2FtbFwiXSBhbmQgW0Nhc2VsZXNzLihcImFwcGxlXCIgPCBcIkJhbmFuYVwiKV0gYXJlIFt0cnVlXSwgYW5kXG4gICAgW0Nhc2VsZXNzLk1hcF0sIFtDYXNlbGVzcy5UYWJsZV0gbG9va3VwIGFuZCBbQ2FzZWxlc3MuU2V0XSBtZW1iZXJzaGlwIGlzXG4gICAgY2FzZS1pbnNlbnNpdGl2ZS5cblxuICAgIFtDYXNlbGVzc10gYWxzbyBwcm92aWRlcyBjYXNlLWluc2Vuc2l0aXZlIFtpc19zdWZmaXhdIGFuZCBbaXNfcHJlZml4XSBmdW5jdGlvbnMsIHNvXG4gICAgdGhhdCBmb3IgZXhhbXBsZSBbQ2FzZWxlc3MuaXNfc3VmZml4IFwiT0NhbWxcIiB+c3VmZml4OlwiQW1MXCJdIGFuZCBbQ2FzZWxlc3MuaXNfcHJlZml4XG4gICAgXCJPQ2FtbFwiIH5wcmVmaXg6XCJvY1wiXSBhcmUgW3RydWVdLiAqKVxubW9kdWxlIENhc2VsZXNzIDogc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuICBlbmRcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHBdXG5cblxuICBpbmNsdWRlIENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cblxuKCoqIFtzbGljZSB0IHN0YXJ0IHN0b3BdIHJldHVybnMgYSBuZXcgc3RyaW5nIGluY2x1ZGluZyBlbGVtZW50cyBbdC4oc3RhcnQpXSB0aHJvdWdoXG4gICAgW3QuKHN0b3AtMSldLCBub3JtYWxpemVkIFB5dGhvbi1zdHlsZSB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBbc3RvcCA9IDBdIGlzIHRyZWF0ZWQgYXNcbiAgICBbc3RvcCA9IGxlbmd0aCB0XS4gKilcbnZhbCBzbGljZSA6IHQgLT4gaW50IC0+IGludCAtPiB0XG5cbigqKiBbbmdldCBzIGldIGdldHMgdGhlIGNoYXIgYXQgbm9ybWFsaXplZCBwb3NpdGlvbiBbaV0gaW4gW3NdLiAqKVxudmFsIG5nZXQgOiB0IC0+IGludCAtPiBjaGFyXG5cbigqKiBbdGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHByZWZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBwcmVmaXggfmZdXG4gICAgKFNlZSBbbHN0cmlwXSB0byBkcm9wIHN1Y2ggYSBwcmVmaXgpICopXG52YWwgdGFrZV93aGlsZSA6IHQgLT4gZjooY2hhciAtPiBib29sKSAtPiB0XG5cbigqKiBbcnRha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBzdWZmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgc3VmZml4IH5mXVxuICAgIChTZWUgW3JzdHJpcF0gdG8gZHJvcCBzdWNoIGEgc3VmZml4KSAqKVxudmFsIHJ0YWtlX3doaWxlIDogdCAtPiBmOihjaGFyIC0+IGJvb2wpIC0+IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmluY2x1ZGUgUXVpY2tjaGVja2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5IDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZlxuICAgIGNoYXJhY3RlcnMuICopXG52YWwgZ2VuJyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eScgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoLiAqKVxudmFsIGdlbl93aXRoX2xlbmd0aCA6IGludCAtPiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBOb3RlIHRoYXQgW3N0cmluZ10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW1N0cmluZy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIGludHJvZHVjZVxuICAgIFtTdHJpbmcuU3RhYmxlLlNldF0sIFtTdHJpbmcuU3RhYmxlLk1hcF0sIFtTdHJpbmcuU3RhYmxlLlRhYmxlXSwgYW5kIHByb3ZpZGUgaW50ZXJmYWNlXG4gICAgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2gsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX2NvbXBhcmFibGUuVjFcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBib29sIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQm9vbClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5Cb29sXG5cbmluY2x1ZGUgKFxuICBCYXNlLkJvb2wgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Cb29sXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQm9vbClcblxubGV0IG9mX3N0cmluZ19odW0gPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgdGFibGUgPSBTdHJpbmcuQ2FzZWxlc3MuVGFibGUuY3JlYXRlICgpIGluXG4gICAgICAgWyBmYWxzZSwgWyBcImZhbHNlXCI7IFwibm9cIjsgXCIwXCIgXTsgdHJ1ZSwgWyBcInRydWVcIjsgXCJ5ZXNcIjsgXCIxXCIgXSBdXG4gICAgICAgfD4gTGlzdC5pdGVyIH5mOihmdW4gKGJvb2wsIHN0cmluZ3MpIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgc3RyaW5ncyB+ZjooZnVuIHN0cmluZyAtPlxuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OnN0cmluZyB+ZGF0YTpib29sO1xuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcucHJlZml4IHN0cmluZyAxKSB+ZGF0YTpib29sKSk7XG4gICAgICAgdGFibGUpXG4gIGluXG4gIGxldCByYWlzZV9pbnZhbGlkIGlucHV0ID1cbiAgICBsZXQgZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA9IFN0cmluZy5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIChmb3JjZSB0YWJsZSkpIGluXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiQm9vbC5vZl9zdHJpbmdfaHVtOiBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAoaW5wdXQgOiBzdHJpbmcpXG4gICAgICAgICAgKGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgOiBTdHJpbmcuU2V0LnQpXVxuICBpblxuICBmdW4gc3RyaW5nIC0+XG4gICAgSGFzaHRibC5maW5kX2FuZF9jYWxsIChmb3JjZSB0YWJsZSkgc3RyaW5nIH5pZl9mb3VuZDpGbi5pZCB+aWZfbm90X2ZvdW5kOnJhaXNlX2ludmFsaWRcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuYm9vbFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYm9vbFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYm9vbFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIGJpbl9pb11cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJ5dGVzXG5cbiAgICB0eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQnl0ZXMpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGJ5dGVzXG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCBnZW4nIGNoYXJfZ2VuID0gU3RyaW5nLmdlbicgY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiA9XG4gIFN0cmluZy5nZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5DaGFyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuKCogaW5jbHVkZSBbQmFzZS5DaGFyXSBhZnRlciB0aGUgYXBwbGljYXRpb24gb2YgW0lkZW50aWZpYWJsZS5FeHRlbmRdIHRvIHJlcGxhY2UgdGhlXG4gICBbQ29tcGFyYWJsZV0gZnVuY3Rpb25zIHdpdGggdGhlIHBlcnZhc2l2ZSB2ZXJzaW9ucyAqKVxuaW5jbHVkZSAoXG4gIEJhc2UuQ2hhciA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkNoYXJcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcblxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5DaGFyXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY2hhclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuY2hhclxubGV0IGdlbl9kaWdpdCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9kaWdpdFxubGV0IGdlbl9sb3dlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfbG93ZXJjYXNlXG5sZXQgZ2VuX3VwcGVyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91cHBlcmNhc2VcbmxldCBnZW5fYWxwaGEgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFcbmxldCBnZW5fYWxwaGFudW0gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFudW1cbmxldCBnZW5fcHJpbnQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfcHJpbnRcbmxldCBnZW5fd2hpdGVzcGFjZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl93aGl0ZXNwYWNlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbHVzaXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduID0gQmFzZS5TaWduXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBlbnVtZXJhdGVdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFNpZ25cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbikgKFN0YWJsZS5WMSlcbiIsImV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkZsb2F0XG5cbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoVClcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBUXG5cbmxldCB2YWxpZGF0ZV9vcmRpbmFyeSB0ID1cbiAgVmFsaWRhdGUub2ZfZXJyb3Jfb3B0XG4gICAgKGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gICAgIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gTm9uZVxuICAgICB8IEMuSW5maW5pdGUgLT4gU29tZSBcInZhbHVlIGlzIGluZmluaXRlXCJcbiAgICAgfCBDLk5hbiAtPiBTb21lIFwidmFsdWUgaXMgTmFOXCIpXG47O1xuXG5tb2R1bGUgViA9IHN0cnVjdFxuICBtb2R1bGUgWlogPSBDb21wYXJhYmxlLlZhbGlkYXRlIChUKVxuXG4gIGxldCB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2JvdW5kIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfbGJvdW5kIHQgfm1pbilcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfdWJvdW5kIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX3Vib3VuZCB0IH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBWXG5cbm1vZHVsZSBSb2J1c3RfY29tcGFyZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgKCogaW50ZW5kZWQgdG8gYmUgYSB0b2xlcmFuY2Ugb24gaHVtYW4tZW50ZXJlZCBmbG9hdHMgKilcblxuICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuXG4gICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gZmxvYXRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuICAgIGVuZCkgOiBTID0gc3RydWN0XG4gICAgKCogV2UgaGF2ZSB0ZXN0IGluIHRoZSB0cmVlIHRoYXQgcmVseSBvbiB0aGVzZSBmdW5jdGlvbnMgbm90IGFsbG9jYXRpbmcsIGV2ZW4gd2l0aG91dFxuICAgICAgIFhfTElCUkFSWV9JTkxJTkcuIFRoZSBvbmx5IHdheSB0byBlbnN1cmUgdGhhdCB0aGVzZSBkb24ndCBjcmVhdGUgdGVtcG9yYXJ5IGJveGVkXG4gICAgICAgZmxvYXRzIHdpdGhvdXQgWF9MSUJSQVJZX0lOTElORyBpcyBmb3IgdGhpcyBjb2RlIHRvIHNlZSB0aGUgZmxvYXQgb3BlcmF0aW9ucyBhc1xuICAgICAgIGV4dGVybmFscywgYXMgZGVmaW5lZCBpbiBbUGVydmFzaXZlc10uIFRoYXQncyB3aHkgd2UgdXNlIFtQb2x5XSBhbmQgZmxvYXRcbiAgICAgICBhcml0aG1ldGljIGZyb20gW0NhbWxdLiAqKVxuICAgIG9wZW4gUG9seVxuXG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IFQucm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPj0uICkgeCB5ID0geCA+PSBDYW1sLiggLS4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDw9LiApIHggeSA9IHkgPj0uIHhcbiAgICBsZXQgKCA9LiApIHggeSA9IHggPj0uIHkgJiYgeSA+PS4geFxuICAgIGxldCAoID4uICkgeCB5ID0geCA+IENhbWwuKCArLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPC4gKSB4IHkgPSB5ID4uIHhcbiAgICBsZXQgKCA8Pi4gKSB4IHkgPSBub3QgKHggPS4geSlcblxuICAgIGxldCByb2J1c3RseV9jb21wYXJlIHggeSA9XG4gICAgICBsZXQgZCA9IENhbWwuKCAtLiApIHggeSBpblxuICAgICAgaWYgZCA8IENhbWwuKCB+LS4gKSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gLTFcbiAgICAgIGVsc2UgaWYgZCA+IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIDBcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUm9idXN0bHlfY29tcGFyYWJsZSA9IFJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS03XG4gIGVuZClcblxuaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5GbG9hdC5PXG4gIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuZW5kXG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgaW5jbHVkZSAoXG4gICAgQmFzZS5GbG9hdC5UZXJzZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5GbG9hdC5UZXJzZVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubGV0IHJvYnVzdF9zaWduIHQgOiBTaWduLnQgPSBpZiB0ID4uIDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8LiAwLiB0aGVuIE5lZyBlbHNlIFplcm9cblxuKCogVGhlcmUgYXJlIHR3byBpc3N1ZXM6XG4gICAtIEZsb2F0LnNpZ24gdXNlZCB0byB1c2Ugcm9idXN0IGNvbXBhcmlzb24sIGFuZCB1c2VycyBvZiBbQ29yZV0gbWlnaHQgaGF2ZSBjb21lIHRvXG4gICAgIGRlcGVuZCBvbiB0aGlzLlxuICAgLSBSb2J1c3RuZXNzIGFzaWRlLCB3aGF0IHdlIGdldCBmcm9tIENvbXBhcmFibGUuV2l0aF96ZXJvIHdvdWxkIG1hcCBuYW4gdG8gTmVnLlxuKilcbmxldCBzaWduID0gcm9idXN0X3NpZ25cblxuKCogU3RhbmRhcmQgMTIgc2lnbmlmaWNhbnQgZGlnaXRzLCBleHBvbmVudGlhbCBub3RhdGlvbiB1c2VkIGFzIG5lY2Vzc2FyeSwgZ3VhcmFudGVlZCB0b1xuICAgYmUgYSB2YWxpZCBPQ2FtbCBmbG9hdCBsZXhlbSwgbm90IHRvIGxvb2sgbGlrZSBhbiBpbnQuICopXG5sZXQgdG9fc3RyaW5nXzEyIHggPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiB4KVxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZmxvYXRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZsb2F0XG5sZXQgZ2VuX3VuaWZvcm1fZXhjbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfdW5pZm9ybV9leGNsdXNpdmVcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfaW5jbHVzaXZlXG5sZXQgZ2VuX3dpdGhvdXRfbmFuID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF93aXRob3V0X25hblxubGV0IGdlbl9maW5pdGUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2Zpbml0ZVxubGV0IGdlbl9wb3NpdGl2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmVcbmxldCBnZW5fbmVnYXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X25lZ2F0aXZlXG5sZXQgZ2VuX3plcm8gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIFplcm9cbmxldCBnZW5fbmFuID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBOYW5cbmxldCBnZW5fc3Vibm9ybWFsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBTdWJub3JtYWxcbmxldCBnZW5fbm9ybWFsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBOb3JtYWxcbmxldCBnZW5faW5maW5pdGUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIEluZmluaXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkludFxuXG4gICAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgaGFzaCwgYmluX2lvLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkludFxuaW5jbHVkZSBCYXNlLkludFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQpXG5cbigqIFRoaXMgaXMgYWxyZWFkeSBkZWZpbmVkIGJ5IENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvLCBidXQgU2lnbi5vZl9pbnQgaXNcbiAgIG1vcmUgZGlyZWN0LiAqKVxubGV0IHNpZ24gPSBTaWduLm9mX2ludFxuXG50eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5JbnRfaW50Zn1bQmFzZS5JbnRfaW50Zl19LiAqKVxuXG5tb2R1bGUgdHlwZSBSb3VuZCA9IEJhc2UuSW50LlJvdW5kXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IHNpZ1xuICBtb2R1bGUgVjEgOiBTdGFibGVfY29tcGFyYWJsZS5WMVxuZW5kXG5cbm1vZHVsZSB0eXBlIEhleGFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEhleCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nX2h1bSA6ID9kZWxpbWl0ZXI6Y2hhciAtPiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICAoKl8gRW5zdXJlIHRoYXQgdGhpcyBtb2R1bGUgaXMgYW4gZXh0ZW5zaW9uIG9mIFtCYXNlLkludC5IZXhhYmxlXS4gKilcbiAgaW5jbHVkZSBCYXNlLkludC5IZXhhYmxlIHdpdGggdHlwZSB0IDo9IHQgYW5kIG1vZHVsZSBIZXggOj0gSGV4XG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbiAgaW5jbHVkZSBIZXhhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFF1aWNrY2hlY2thYmxlLlNfaW50IHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3VuYm91bmRlZCA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNfdW5ib3VuZGVkXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU1xuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uX3dpdGhfc3RhYmxlID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5zaW9uXG5cbiAgbW9kdWxlIFN0YWJsZSA6XG4gICAgU3RhYmxlIHdpdGggdHlwZSBWMS50ID0gdCBhbmQgdHlwZSBWMS5jb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDMyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQzMlxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQzMilcblxudHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50MzJcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDY0XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDY0KVxuXG50eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDY0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2NFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50NjR9W0Jhc2UuSW50NjRdfS4gKilcblxuKCoqIHsyIEludGVyZmFjZSBmcm9tIEJhc2V9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuSW50NjRcbmVuZFxuXG4oKiogezIgRXh0ZW5zaW9uc30gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGVcbiAgSW50X2ludGYuRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBCaW4gOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0IDo9IEJhc2UuSW50NjMudCA9IHN0cnVjdFxuICBtb2R1bGUgQmluX2VtdWxhdGVkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDY0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy53cmFwX2V4blxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy51bndyYXBcbiAgICAgICAgZW5kKVxuICBlbmRcblxuICB0eXBlICdhIGJpbmFibGUgPSAobW9kdWxlIEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgYmluYWJsZV9vZl9yZXByIDogdHlwZSBhIGIuIChhLCBiKSBCYXNlLkludDYzLlByaXZhdGUuUmVwci50IC0+IGIgYmluYWJsZSA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQgLT4gKG1vZHVsZSBJbnQpXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQ2NCAtPiAobW9kdWxlIEJpbl9lbXVsYXRlZClcbiAgOztcblxuICBsZXQgYmluYWJsZSA6IEJhc2UuSW50NjMudCBiaW5hYmxlID0gYmluYWJsZV9vZl9yZXByIEJhc2UuSW50NjMuUHJpdmF0ZS5yZXByXG5cbiAgaW5jbHVkZSAodmFsIGJpbmFibGUpXG5cbiAgbGV0IGJpbl9zaGFwZV90ID0gQmluX3Byb3QuU2hhcGUuYmluX3NoYXBlX2ludDYzXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmluXG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgICBCYXNlLkludDYzIDpcbiAgICAgICAgICBCYXNlLkNvbXBhcmFibGUuU1xuICAgICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBCYXNlLkludDYzLmNvbXBhcmF0b3Jfd2l0bmVzcylcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuKCogVGhpcyBbaW5jbHVkZSBzdHJ1Y3RdIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQgbGV0cyB1cyBzaGFkb3cgW3RdIHdoZW4gd2UgaW5jbHVkZVxuICAgW0Jhc2UuSW50NjNdIGxhdGVyIG9uLiAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfaW50NjNcbmxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfaW50NjNcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjMpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBCaW5cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJhYmxlLlBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9XG4gIEJhc2UuSW50NjNcblxuaW5jbHVkZSBCYXNlLkludDYzXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDYzKVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBCYXNlLkV4cG9ydFxuICBvcGVuIEJpbl9wcm90LlN0ZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDg2YmE1ZGY3NDdlZWM4MzdmMGIzOTFkZDQ5ZjMzZjllIHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Vbml0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLlVuaXRcblxudHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnVuaXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVuaXRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnVuaXRcblxubW9kdWxlIHR5cGUgUyA9IHNpZyBlbmRcblxudHlwZSBtID0gKG1vZHVsZSBTKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBvcGVuIFNleHBsaWIuU3RkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCBzZXhwLCB0eXBlcmVwXVxuXG4gICAgbGV0IG1hcCA9IEJhc2UuTGF6eS5tYXBcbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTdGFibGUuVjEudFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSAoQmFzZS5MYXp5IDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLk5hdGl2ZWludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLk5hdGl2ZWludFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5OYXRpdmVpbnQpXG5cbnR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm5hdGl2ZWludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLk5vdGhpbmcudCA9IHxcblxuICAgIG1vZHVsZSBTaGFwZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9zaGFwZV1cbiAgICBlbmRcblxuICAgIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gQmFzZS5Ob3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3NoYXBlX3QgPSBTaGFwZS5iaW5fc2hhcGVfdFxuICAgIGxldCB0cF9sb2MgPSBbJWhlcmVdLnBvc19mbmFtZSBeIFwiLlN0YWJsZS5WMS50XCJcbiAgICBsZXQgYWxsID0gW11cbiAgICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGNvbXBhcmUgYSBfID0gdW5yZWFjaGFibGVfY29kZSBhXG4gICAgbGV0IGJpbl9zaXplX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl93cml0ZV90IF9idWYgfnBvczpfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF8gPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSB0cF9sb2MgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgX2J1ZiB+cG9zX3JlZiA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfcmVhZF9lcnJvciAoRW1wdHlfdHlwZSB0cF9sb2MpICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYi5Db252X2Vycm9yLmVtcHR5X3R5cGUgdHBfbG9jIHNleHBcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQmFzZS5Ob3RoaW5nXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKEJhc2UuTm90aGluZykgKFN0YWJsZS5WMSlcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBCYXNlLk9yZGVyaW5nLnQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5PcmRlcmluZyB3aXRoIHR5cGUgdCA6PSB0XG5cbmluY2x1ZGUgKEJhc2UuT3JkZXJpbmcgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuUmVmXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgVC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICBsZXQgcmVhZF9vbmx5ID0gRm4uaWRcbiAgbGV0IG9mX3JlZiA9IEZuLmlkXG4gIGxldCB0b19yZWYgPSBGbi5pZFxuICBsZXQgc2V0ID0gKCA6PSApXG4gIGxldCBnZXQgPSAoICEgKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuaW5jbHVkZSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24pIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbiIsIigqIFdlIGRvbid0IGp1c3QgaW5jbHVkZSBTZXhwbGliLlN0ZCBiZWNhdXNlIG9uZSBjYW4gb25seSBkZWZpbmUgSGFzaHRibCBvbmNlIGluIHRoaXNcbiAgIG1vZHVsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbigqKiBbaW5jbHVkZV1kIGZpcnN0IHNvIHRoYXQgZXZlcnl0aGluZyBlbHNlIHNoYWRvd3MgaXQgKilcbmluY2x1ZGUgQ29yZV9wZXJ2YXNpdmVzXG5cbmluY2x1ZGUgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5pbmNsdWRlIERlcHJlY2F0ZV9waXBlX2JhbmdcbmluY2x1ZGUgRWl0aGVyLkV4cG9ydFxuaW5jbHVkZSBGcm9tX3NleHBsaWJcbmluY2x1ZGUgSW50ZXJmYWNlc1xuaW5jbHVkZSBMaXN0LkluZml4XG5pbmNsdWRlIE5ldmVyX3JldHVybnNcbmluY2x1ZGUgT3JkZXJpbmcuRXhwb3J0XG5pbmNsdWRlIFBlcm1zLkV4cG9ydFxuaW5jbHVkZSBSZXN1bHQuRXhwb3J0XG5cbnR5cGUgLSdhIHJldHVybiA9ICdhIFdpdGhfcmV0dXJuLnJldHVybiA9IHByaXZhdGUgeyByZXR1cm4gOiAnYi4gJ2EgLT4gJ2IgfSBbQEB1bmJveGVkXVxuXG5pbmNsdWRlIHN0cnVjdFxuICBleGNlcHRpb24gQnVnIG9mIHN0cmluZyBbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMC0wM10gRG9uJ3QgdXNlIFtCdWddXCJdXG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmQgW0BAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuXG5cbigqKiBSYWlzZWQgaWYgbWFsbG9jIGluIEMgYmluZGluZ3MgZmFpbCAoZXJybm8gKiBzaXplKS4gKilcbmV4Y2VwdGlvbiBDX21hbGxvY19leG4gb2YgaW50ICogaW50XG5cbigqIGVycm5vLCBzaXplICopXG5sZXQgKCkgPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJDX21hbGxvY19leG5cIiAoQ19tYWxsb2NfZXhuICgwLCAwKSlcblxuZXhjZXB0aW9uIEZpbmFsbHkgPSBFeG4uRmluYWxseVxuXG5sZXQgZnN0MyAoeCwgXywgXykgPSB4XG5sZXQgc25kMyAoXywgeSwgXykgPSB5XG5sZXQgdHJkMyAoXywgXywgeikgPSB6XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGxldCB1dyA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2UgQ2FtbC5Ob3RfZm91bmRcbiAgOztcbmVuZCA6XG5zaWdcbiAgdmFsIHV3IDogJ2Egb3B0aW9uIC0+ICdhIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMl0gVXNlIFtPcHRpb24udmFsdWVfZXhuXVwiXVxuZW5kKVxuXG4oKiogW3BoeXNfc2FtZV0gaXMgbGlrZSBbcGh5c19lcXVhbF0sIGJ1dCB3aXRoIGEgbW9yZSBnZW5lcmFsIHR5cGUuICBbcGh5c19zYW1lXSBpcyB1c2VmdWxcbiAgICB3aGVuIGRlYWxpbmcgd2l0aCBleGlzdGVudGlhbCB0eXBlcywgd2hlbiBvbmUgaGFzIGEgcGFja2VkIHZhbHVlIGFuZCBhbiB1bnBhY2tlZCB2YWx1ZVxuICAgIHRoYXQgb25lIHdhbnRzIHRvIGNoZWNrIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAgT25lIGNhbid0IHVzZSBbcGh5c19lcXVhbF0gaW4gc3VjaCBhXG4gICAgc2l0dWF0aW9uIGJlY2F1c2UgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQuICopXG5sZXQgcGh5c19zYW1lICh0eXBlIGEgYikgKGEgOiBhKSAoYiA6IGIpID0gcGh5c19lcXVhbCBhIChPYmoubWFnaWMgYiA6IGEpXG5cbmxldCAoICUgKSA9IEludC4oICUgKVxubGV0ICggLyUgKSA9IEludC4oIC8lIClcbmxldCAoIC8vICkgPSBJbnQuKCAvLyApXG5sZXQgKCA9PT4gKSBhIGIgPSAobm90IGEpIHx8IGJcbmxldCBicHJpbnRmID0gUHJpbnRmLmJwcmludGZcbmxldCBjb25zdCA9IEZuLmNvbnN0XG5sZXQgZXByaW50ZiA9IFByaW50Zi5lcHJpbnRmXG5sZXQgZXJyb3IgPSBPcl9lcnJvci5lcnJvclxubGV0IGVycm9yX3MgPSBPcl9lcnJvci5lcnJvcl9zXG5sZXQgZmFpbHdpdGhmID0gQmFzZS5QcmludGYuZmFpbHdpdGhmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGxldCBmYWlsd2l0aHAgPSAoRXJyb3IuZmFpbHdpdGhwIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXSlcbmVuZCA6XG5zaWdcbiAgdmFsIGZhaWx3aXRocFxuICAgIDogID9zdHJpY3Q6dW5pdFxuICAgIC0+IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgICAtPiBzdHJpbmdcbiAgICAtPiAnYVxuICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgLT4gX1xuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIFVzZSBbZmFpbHdpdGhzXSBpbnN0ZWFkLlwiXVxuZW5kKVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgZm9yY2UgPSBCYXNlLkxhenkuZm9yY2VcbmxldCBmcHJpbnRmID0gUHJpbnRmLmZwcmludGZcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgbGV0IGlkZW50ID0gRm4uaWRcbmVuZCA6XG5zaWdcbiAgdmFsIGlkZW50IDogJ2EgLT4gJ2EgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA4XSBVc2UgW0ZuLmlkXSBpbnN0ZWFkLlwiXVxuZW5kKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gQmFzZS5QcmludGYuaW52YWxpZF9hcmdmXG5sZXQgaWZwcmludGYgPSBQcmludGYuaWZwcmludGZcbmxldCBpc19ub25lID0gT3B0aW9uLmlzX25vbmVcbmxldCBpc19zb21lID0gT3B0aW9uLmlzX3NvbWVcbmxldCBrc3ByaW50ZiA9IFByaW50Zi5rc3ByaW50ZlxubGV0IG9rX2V4biA9IE9yX2Vycm9yLm9rX2V4blxubGV0IHBoeXNfZXF1YWwgPSBCYXNlLnBoeXNfZXF1YWxcbmxldCBwaHlzX3NhbWUgPSBwaHlzX3NhbWVcbmxldCBwcmludF9zID0gU3RkaW8ucHJpbnRfc1xubGV0IGVwcmludF9zID0gU3RkaW8uZXByaW50X3NcbmxldCBwcmludGYgPSBQcmludGYucHJpbnRmXG5sZXQgcHJvdGVjdCA9IEV4bi5wcm90ZWN0XG5sZXQgcHJvdGVjdHggPSBFeG4ucHJvdGVjdHhcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHJvdW5kID0gRmxvYXQucm91bmRcbmxldCAoICoqLiApID0gQmFzZS4oICoqLiApXG5sZXQgKCAlLiApID0gQmFzZS4oICUuIClcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5sZXQgdW5zdGFnZSA9IFN0YWdlZC51bnN0YWdlXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuX29wdGlvblxuXG4oKiBXaXRoIHRoZSBmb2xsb3dpbmcgYWxpYXNlcywgd2UgYXJlIGp1c3QgbWFraW5nIGV4dHJhIHN1cmUgdGhhdCB0aGUgdG9wbGV2ZWwgc2V4cFxuICAgY29udmVydGVycyBsaW5lIHVwIHdpdGggdGhlIG9uZXMgaW4gb3VyIG1vZHVsZXMuICopXG5cblxuaW5jbHVkZSBUeXBlcmVwX2xpYi5TdGRfaW50ZXJuYWxcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0sIFtieXRlc10sIGFuZCBbcmVmXSBzaW5jZSB0aGVzZSB0eXBlcyBhcmVcbiAgICAgbXV0YWJsZS4gKilcbiAgdHlwZSAnYSBhcnJheSA9ICdhIEFycmF5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGZsb2F0ID0gRmxvYXQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQgPSBJbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50NjQgPSBJbnQ2NC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCA9ICdhIExhenkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIHJlZiA9ICdhIFJlZi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gICgqIEJpbl9wcm90IGhhcyBvcHRpbWl6ZWQgZnVuY3Rpb25zIGZvciBmbG9hdCBhcnJheXMgKilcbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBGbG9hdC50IGFycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSBmbG9hdF9hcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgZmxvYXRfYXJyYXkgOj0gZmxvYXRfYXJyYXkpXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGJvb2wgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGludDMyIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBpbnQ2NCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgbmF0aXZlaW50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvblxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA5XSB1c2UgW2Zsb2F0IGFycmF5XSBvciBbZmxvYXRhcnJheV0gaW5zdGVhZFwiXVxuICBlbmRcbiAgICAgICAgICBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cbmVuZFxud2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG53aXRoIHR5cGUgYm9vbCA6PSBib29sXG53aXRoIHR5cGUgY2hhciA6PSBjaGFyXG53aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbndpdGggdHlwZSBpbnQgOj0gaW50XG53aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbndpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxud2l0aCB0eXBlICdhIGxpc3QgOj0gJ2EgbGlzdFxud2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbndpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG53aXRoIHR5cGUgc3RyaW5nIDo9IHN0cmluZ1xud2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG53aXRoIHR5cGUgJ2EgbGF6eV90IDo9ICdhIGxhenlfdFxud2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbndpdGggdHlwZSB1bml0IDo9IHVuaXQpXG5cbmxldCBzZXhwX29mX2V4biA9IEV4bi5zZXhwX29mX3RcblxuXG4oKiBUaGUgY29kZSBiZWxvdyBjaGVja3MgdGhhdCB0aGUgc2lnbmF0dXJlcyBpbiBtYXAubWxpIGFuZCBzZXQubWxpIGFyZVxuICAgY29uc2lzdGVudCB3aXRoIHRoZSBnZW5lcmljIG1hcCBhbmQgc2V0IHNpZ25hdHVyZXMgZGVmaW5lZCBpbiBtYXBfaW50Zi5tbFxuICAgYW5kIHNldF9pbnRmLm1sLiAqKVxuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgdHlwZSAnYSBjbXAgPSAnYVxuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBfIDogc2lnXG4gICAgb3BlbiBTZXRfaW50ZlxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBUcmVlLk5hbWVkLnRcbiAgICBlbmRcblxuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzMlxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgVC5jbXBcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zIDo9XG4gICAgICAgICgnYSwgJ2NtcCwgJ3opIFNldF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgZW5kID1cbiAgICBTZXRcbiAgaW5cbiAgKClcbjs7XG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2sga2V5ID0gJ2tcbiAgICB0eXBlICdjIGNtcCA9ICdjXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIF8gOiBzaWdcbiAgICBvcGVuIE1hcF9pbnRmXG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9ucyA6PVxuICAgICAgICAoJ2EsICdjbXAsICd6KSBNYXBfaW50Zi5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrIFQua2V5XG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjIFQuY21wXG4gIGVuZCA9XG4gICAgTWFwXG4gIGluXG4gICgpXG47O1xuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXSBbQEBpbW1lZGlhdGU2NF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3JlcHIgOiBSZXByLnQgLT4gdFxuICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwci50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IG9mX3JlcHIgPSBGbi5pZFxuICBsZXQgdG9fcmVwciA9IEZuLmlkXG5cbiAgbGV0IHRvX3N0cmluZyBuID1cbiAgICBsZXQgb3BlbiBSZXByIGluXG4gICAgbGV0IGtpYiA9IG9mX2ludCAxMDI0IGluXG4gICAgbGV0IG1pYiA9IGtpYiAqIGtpYiBpblxuICAgIGxldCBnaWIgPSBraWIgKiBtaWIgaW5cbiAgICBsZXQgbl9hYnMgPSBhYnMgbiBpblxuICAgIGlmIG5fYWJzIDwga2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWRCXCIgKHRvX2ludF9leG4gbilcbiAgICBlbHNlIGlmIG5fYWJzIDwgbWliXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdLXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQga2liKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBnaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ01cIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBtaWIpXG4gICAgZWxzZSBzcHJpbnRmIFwiJWdHXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgZ2liKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIG4pXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBieXRlc19pbnRfZXhuIHQgPSBSZXByLnRvX2ludF9leG4gKHRvX3JlcHIgdClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gQmlnYXJyYXlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2VfYmlnc3RyaW5nXG5cbiAgICBtb2R1bGUgWiA6IHNpZ1xuICAgICAgdHlwZSB0ID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYmlnc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgWlxuXG4gICAgdHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IFN0YWJsZS5WMVxuaW5jbHVkZSBUXG5tb2R1bGUgVW5zdGFibGUgPSBUXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nYyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLm1hcCBtYXhfbWVtX3dhaXRpbmdfZ2MgfmY6Qnl0ZV91bml0czAuYnl0ZXNfaW50X2V4blxuICBpblxuICBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplXG47O1xuXG5sZXQgc3ViX3NoYXJlZCA/KHBvcyA9IDApID9sZW4gKGJzdHIgOiB0KSA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiBic3RyIH5wb3MgbGVuIGluXG4gIEFycmF5MS5zdWIgYnN0ciBwb3MgbGVuXG47O1xuXG4oKiBEZXN0cnVjdGlvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveSA6IHQgLT4gdW5pdCA9IFwiYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlwiXG5cbmV4dGVybmFsIHVuc2FmZV9kZXN0cm95X2FuZF9yZXNpemUgOiB0IC0+IGxlbjppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX3JlYWxsb2NcIlxuXG4oKiBSZWFkaW5nIC8gd3JpdGluZyBiaW4tcHJvdCAqKVxuXG5sZXQgcmVhZF9iaW5fcHJvdF92ZXJib3NlX2Vycm9ycyB0ID8ocG9zID0gMCkgP2xlbiByZWFkZXIgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gdCBsZW4gfnBvcyBpblxuICBsZXQgbGltaXQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwicmVhZF9iaW5fcHJvdF92ZXJib3NlX2Vycm9yc1wiIHQgfnBvcyB+bGVuO1xuICBsZXQgaW52YWxpZF9kYXRhIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICAgIGBJbnZhbGlkX2RhdGEgKEVycm9yLmNyZWF0ZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuICBpblxuICBsZXQgcmVhZCBiaW5fcmVhZGVyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gbGltaXQgLSBwb3NcbiAgICB0aGVuIGBOb3RfZW5vdWdoX2RhdGFcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgdHJ5IGBPayAoYmluX3JlYWRlciB0IH5wb3NfcmVmKSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IGBJbnZhbGlkX2RhdGEgKEVycm9yLm9mX2V4biBleG4pXG4gICAgICB3aXRoXG4gICAgICB8IGBJbnZhbGlkX2RhdGEgXyBhcyB4IC0+IHhcbiAgICAgIHwgYE9rIHJlc3VsdCAtPlxuICAgICAgICBsZXQgZXhwZWN0ZWRfcG9zID0gcG9zICsgbGVuIGluXG4gICAgICAgIGlmICFwb3NfcmVmID0gZXhwZWN0ZWRfcG9zXG4gICAgICAgIHRoZW4gYE9rIChyZXN1bHQsIGV4cGVjdGVkX3BvcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfZGF0YVxuICAgICAgICAgICAgXCJwb3NfcmVmIDw+IGV4cGVjdGVkX3Bvc1wiXG4gICAgICAgICAgICAoIXBvc19yZWYsIGV4cGVjdGVkX3BvcylcbiAgICAgICAgICAgIFslc2V4cF9vZjogaW50ICogaW50XSlcbiAgaW5cbiAgbWF0Y2hcbiAgICByZWFkIEJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIH5wb3MgfmxlbjpCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGhcbiAgd2l0aFxuICB8IChgTm90X2Vub3VnaF9kYXRhIHwgYEludmFsaWRfZGF0YSBfKSBhcyB4IC0+IHhcbiAgfCBgT2sgKGVsZW1lbnRfbGVuZ3RoLCBwb3MpIC0+XG4gICAgaWYgZWxlbWVudF9sZW5ndGggPCAwXG4gICAgdGhlbiBpbnZhbGlkX2RhdGEgXCJuZWdhdGl2ZSBlbGVtZW50IGxlbmd0aCAlZFwiIGVsZW1lbnRfbGVuZ3RoIFslc2V4cF9vZjogaW50XVxuICAgIGVsc2UgcmVhZCByZWFkZXIuQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkIH5wb3MgfmxlbjplbGVtZW50X2xlbmd0aFxuOztcblxubGV0IHJlYWRfYmluX3Byb3QgdCA/cG9zID9sZW4gcmVhZGVyID1cbiAgbWF0Y2ggcmVhZF9iaW5fcHJvdF92ZXJib3NlX2Vycm9ycyB0ID9wb3MgP2xlbiByZWFkZXIgd2l0aFxuICB8IGBPayB4IC0+IE9rIHhcbiAgfCBgSW52YWxpZF9kYXRhIGUgLT4gRXJyb3IgKEVycm9yLnRhZyBlIH50YWc6XCJJbnZhbGlkIGRhdGFcIilcbiAgfCBgTm90X2Vub3VnaF9kYXRhIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm5vdCBlbm91Z2ggZGF0YVwiXG47O1xuXG5sZXQgd3JpdGVfYmluX3Byb3QgdCA/KHBvcyA9IDApIHdyaXRlciB2ID1cbiAgbGV0IGRhdGFfbGVuID0gd3JpdGVyLkJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSB2IGluXG4gIGxldCB0b3RhbF9sZW4gPSBkYXRhX2xlbiArIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCBpblxuICBpZiBwb3MgPCAwXG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdDogbmVnYXRpdmUgcG9zXCIgcG9zIFslc2V4cF9vZjogaW50XTtcbiAgaWYgcG9zICsgdG90YWxfbGVuID4gbGVuZ3RoIHRcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5vdCBlbm91Z2ggcm9vbVwiXG4gICAgICAoYHBvcyBwb3MsIGBwb3NfYWZ0ZXJfd3JpdGluZyAocG9zICsgdG90YWxfbGVuKSwgYGJpZ3N0cmluZ19sZW5ndGggKGxlbmd0aCB0KSlcbiAgICAgIFslc2V4cF9vZjpcbiAgICAgICAgWyBgcG9zIG9mIGludCBdICogWyBgcG9zX2FmdGVyX3dyaXRpbmcgb2YgaW50IF0gKiBbIGBiaWdzdHJpbmdfbGVuZ3RoIG9mIGludCBdXTtcbiAgbGV0IHBvc19hZnRlcl9zaXplX2hlYWRlciA9IEJpbl9wcm90LlV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciB0IH5wb3MgZGF0YV9sZW4gaW5cbiAgbGV0IHBvc19hZnRlcl9kYXRhID0gd3JpdGVyLkJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGUgdCB+cG9zOnBvc19hZnRlcl9zaXplX2hlYWRlciB2IGluXG4gIGlmIHBvc19hZnRlcl9kYXRhIC0gcG9zIDw+IHRvdGFsX2xlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdCBidWchXCJcbiAgICAgICggYHBvc19hZnRlcl9kYXRhIHBvc19hZnRlcl9kYXRhXG4gICAgICAsIGBzdGFydF9wb3MgcG9zXG4gICAgICAsIGBiaW5fcHJvdF9zaXplX2hlYWRlcl9sZW5ndGggQmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gICAgICAsIGBkYXRhX2xlbiBkYXRhX2xlblxuICAgICAgLCBgdG90YWxfbGVuIHRvdGFsX2xlbiApXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvc19hZnRlcl9kYXRhIG9mIGludCBdXG4gICAgICAgICogWyBgc3RhcnRfcG9zIG9mIGludCBdXG4gICAgICAgICogWyBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIG9mIGludCBdXG4gICAgICAgICogWyBgZGF0YV9sZW4gb2YgaW50IF1cbiAgICAgICAgKiBbIGB0b3RhbF9sZW4gb2YgaW50IF1dO1xuICBwb3NfYWZ0ZXJfZGF0YVxuOztcblxuKCogSGV4IGR1bXAgKilcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHJlYyBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWYgfm1pbl9wb3MgfnBvcyB+Y2hhciA9XG4gIGxldCBwb3MnID0gcG9zIC0gMSBpblxuICBpZiBwb3MnID49IG1pbl9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MnKSBjaGFyXG4gIHRoZW4gbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3M6cG9zJyB+Y2hhclxuICBlbHNlIHBvc1xuOztcblxubGV0IGdldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9lbmQgPVxuICAgIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1Zjp0IH5taW5fcG9zOnBvcyB+cG9zOihwb3MgKyBsZW4pIH5jaGFyOnBhZGRpbmdcbiAgaW5cbiAgdG9fc3RyaW5nIHQgfnBvcyB+bGVuOihkYXRhX2VuZCAtIHBvcylcbjs7XG5cbmxldCBzZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuIHZhbHVlID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW5cbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiQmlnc3RyaW5nLnNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmc6ICVTIGlzIGxvbmdlciB0aGFuICVkXCJcbiAgICAgIHZhbHVlXG4gICAgICBsZW5cbiAgICAgICgpO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6cG9zIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgKyBzbGVuIHRvIHBvcyArIGxlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IHJlYyBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3Mgfm1heF9wb3MgfmNoYXIgPVxuICBpZiBwb3MgPD0gbWF4X3BvcyAmJiBDaGFyLiggPSApIChnZXQgYnVmIHBvcykgY2hhclxuICB0aGVuIGZpcnN0X25vbm1hdGNoIH5idWYgfnBvczooSW50LnN1Y2MgcG9zKSB+bWF4X3BvcyB+Y2hhclxuICBlbHNlIHBvc1xuOztcblxubGV0IHNldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gdmFsdWUgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlblxuICB0aGVuXG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJCaWdzdHJpbmcuc2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZzogJVMgaXMgbG9uZ2VyIHRoYW4gJWRcIlxuICAgICAgdmFsdWVcbiAgICAgIGxlblxuICAgICAgKCk7XG4gIEZyb21fc3RyaW5nLmJsaXQgfnNyYzp2YWx1ZSB+ZHN0OnQgfnNyY19wb3M6MCB+ZHN0X3BvczoocG9zICsgbGVuIC0gc2xlbikgfmxlbjpzbGVuO1xuICBmb3IgaSA9IHBvcyB0byBwb3MgKyBsZW4gLSBzbGVuIC0gMSBkb1xuICAgIHNldCB0IGkgcGFkZGluZ1xuICBkb25lXG47O1xuXG5sZXQgZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIGxldCBkYXRhX2JlZ2luID0gZmlyc3Rfbm9ubWF0Y2ggfmJ1Zjp0IH5wb3Mgfm1heF9wb3M6KHBvcyArIGxlbiAtIDEpIH5jaGFyOnBhZGRpbmcgaW5cbiAgdG9fc3RyaW5nIHQgfnBvczpkYXRhX2JlZ2luIH5sZW46KGxlbiAtIChkYXRhX2JlZ2luIC0gcG9zKSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5iaWdzdHJpbmdcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmJpZ3N0cmluZ1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbl9wcm90XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgICA7IHdyaXRlIDogJ2EgV3JpdGUud3JpdGVyXG4gICAgfVxuXG4gIGxldCB0b19zdHJpbmcgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYgaW5cbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHN0clxuICA7O1xuXG4gIGxldCB0b19ieXRlcyB0IHYgPVxuICAgIGxldCBsZW4gPSB0LnNpemUgdiBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIGxlbiBpblxuICAgIGxldCBwb3MgPSB0LndyaXRlIGJ1ZiB+cG9zOjAgdiBpblxuICAgIGFzc2VydCAocG9zID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIGxldCBzdHIgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyID1cbiAgICB7IHJlYWQgOiAnYSBSZWFkLnJlYWRlclxuICAgIDsgdnRhZ19yZWFkIDogKGludCAtPiAnYSkgUmVhZC5yZWFkZXJcbiAgICB9XG5cbiAgbGV0IG9mX3N0cmluZyB0IHN0cmluZyA9XG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgc3RyaW5nIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5cbiAgbGV0IG9mX2J5dGVzIHQgYnl0ZXMgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2ZfYnl0ZXMgYnl0ZXMgaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IHYgPSB0LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgYXNzZXJ0ICghcG9zX3JlZiA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHZcbiAgOztcbmVuZFxuIiwibW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCaW5fcHJvdC5NZDVcblxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBTdHJpbmcuc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgcyA9IHMgfD4gU3RyaW5nLnRfb2Zfc2V4cCB8PiBvZl9oZXhfZXhuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgaGFzaF9mb2xkX3QgYWNjdW0gdCA9IFN0cmluZy5oYXNoX2ZvbGRfdCBhY2N1bSAoVC50b19iaW5hcnkgdClcbmxldCBoYXNoIHQgPSBTdHJpbmcuaGFzaCAoVC50b19iaW5hcnkgdClcblxubW9kdWxlIEFzX2JpbmFyeV9zdHJpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF90XG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBzZXhwX29mX3QgeCA9IFN0cmluZy5zZXhwX29mX3QgKFQudG9fYmluYXJ5IHgpXG4gICAgICBsZXQgdF9vZl9zZXhwIHggPSBULm9mX2JpbmFyeV9leG4gKFN0cmluZy50X29mX3NleHAgeClcbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICAgICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgICBtb2R1bGUgQmluYWJsZSA9IFN0cmluZ1xuXG4gICAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gVC50b19iaW5hcnlcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IFQub2ZfYmluYXJ5X2V4blxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF90XG4gICAgbGV0IGhhc2ggPSBoYXNoXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbl9wcm90Lk1kNVxuXG4gICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGxldCBkaWdlc3Rfc3RyaW5nIHMgPSBNZDVfbGliLnN0cmluZyBzXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IGRpZ2VzdF9udW1fYnl0ZXMgPSAxNlxubGV0IHRvX2hleCA9IFQudG9faGV4XG5sZXQgZnJvbV9oZXggPSBULm9mX2hleF9leG5cbmxldCBvZl9oZXhfZXhuID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfYmluYXJ5X2V4biA9IFQub2ZfYmluYXJ5X2V4blxubGV0IHRvX2JpbmFyeSA9IFQudG9fYmluYXJ5XG5sZXQgZGlnZXN0X3N0cmluZyA9IFN0YWJsZS5kaWdlc3Rfc3RyaW5nXG5sZXQgZGlnZXN0X2J5dGVzID0gTWQ1X2xpYi5ieXRlc1xuXG5leHRlcm5hbCBjYW1sX3N5c19vcGVuXG4gIDogIHN0cmluZ1xuICAtPiBDYW1sLm9wZW5fZmxhZyBsaXN0XG4gIC0+IHBlcm06aW50XG4gIC0+IGludFxuICA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIGNhbWxfc3lzX2Nsb3NlIDogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcbmV4dGVybmFsIGRpZ2VzdF9mZF9ibG9ja2luZyA6IGludCAtPiBzdHJpbmcgPSBcImNvcmVfbWQ1X2ZkXCJcblxubGV0IGRpZ2VzdF9maWxlX2Jsb2NraW5nIHBhdGggPVxuICBvZl9iaW5hcnlfZXhuXG4gICAgKEJhc2UuRXhuLnByb3RlY3R4XG4gICAgICAgKGNhbWxfc3lzX29wZW4gcGF0aCBbIE9wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeSBdIH5wZXJtOjBvMDAwKVxuICAgICAgIH5mOmRpZ2VzdF9mZF9ibG9ja2luZ1xuICAgICAgIH5maW5hbGx5OmNhbWxfc3lzX2Nsb3NlKVxuOztcblxubGV0IGZpbGUgPSBkaWdlc3RfZmlsZV9ibG9ja2luZ1xuXG5sZXQgZGlnZXN0X2NoYW5uZWxfYmxvY2tpbmdfd2l0aG91dF9yZWxlYXNpbmdfcnVudGltZV9sb2NrIGNoYW5uZWwgfmxlbiA9XG4gIG9mX2JpbmFyeV9leG4gKENhbWwuRGlnZXN0LmNoYW5uZWwgY2hhbm5lbCBsZW4pXG47O1xuXG5sZXQgY2hhbm5lbCBjaGFubmVsIGxlbiA9XG4gIGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW5cbjs7XG5cbmxldCBvdXRwdXRfYmxvY2tpbmcgdCBvYyA9IENhbWwuRGlnZXN0Lm91dHB1dCBvYyAodG9fYmluYXJ5IHQpXG5sZXQgb3V0cHV0IG9jIHQgPSBvdXRwdXRfYmxvY2tpbmcgdCBvY1xubGV0IGlucHV0X2Jsb2NraW5nIGljID0gb2ZfYmluYXJ5X2V4biAoQ2FtbC5EaWdlc3QuaW5wdXQgaWMpXG5sZXQgaW5wdXQgPSBpbnB1dF9ibG9ja2luZ1xubGV0IGRpZ2VzdF9zdWJieXRlcyA9IE1kNV9saWIuc3ViYnl0ZXNcbmxldCBzdHJpbmcgPSBkaWdlc3Rfc3RyaW5nXG5sZXQgYnl0ZXMgPSBkaWdlc3RfYnl0ZXNcbmxldCBzdWJieXRlcyBzIHBvcyBsZW4gPSBkaWdlc3Rfc3ViYnl0ZXMgcyB+cG9zIH5sZW5cblxubGV0IGRpZ2VzdF9iaW5fcHJvdCB3cml0ZXIgdmFsdWUgPVxuICBkaWdlc3Rfc3RyaW5nIChDb3JlX2Jpbl9wcm90LldyaXRlci50b19zdHJpbmcgd3JpdGVyIHZhbHVlKVxuOztcblxuZXh0ZXJuYWwgY19kaWdlc3Rfc3ViYmlnc3RyaW5nXG4gIDogIEJpZ3N0cmluZy50XG4gIC0+IHBvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiByZXM6Qnl0ZXMudFxuICAtPiB1bml0XG4gID0gXCJjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nXCJcblxubGV0IHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAoKiBJdCdzIG1vcmUgZWZmaWNpZW50IHRvIGFsbG9jYXRlIHRoZSByZXN1bHQgb24gdGhlIE9DYW1sIHNpZGUgYW5kIGRlY2xhcmUgdGhlIENcbiAgICAgZnVuY3Rpb24gYXMgbm9hbGxvYyB0aGFuIHRvIGxldCB0aGUgQyBmdW5jdGlvbiBhbGxvY2F0ZS4gKilcbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBjX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiB+cmVzO1xuICBNZDVfbGliLnVuc2FmZV9vZl9iaW5hcnlcbiAgICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG5sZXQgZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgIH5wb3NcbiAgICB+bGVuXG4gICAgfnRvdGFsX2xlbmd0aDooQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG47O1xuXG5sZXQgZGlnZXN0X2JpZ3N0cmluZyBidWYgPVxuICB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvczowIH5sZW46KEJpZ3N0cmluZy5sZW5ndGggYnVmKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hYmxlX2ludGZcbmluY2x1ZGUgQmluYWJsZTBcblxuKCogW29mX3N0cmluZ10gYW5kIFt0b19zdHJpbmddIGNhbid0IGdvIGluIGJpbmFibGUwLm1sIGR1ZSB0byBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IG9mX3N0cmluZyBtIHN0cmluZyA9IG9mX2JpZ3N0cmluZyBtIChCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgbSB0ID0gQmlnc3RyaW5nLnRvX3N0cmluZyAodG9fYmlnc3RyaW5nIG0gdClcblxubW9kdWxlIE9mX2JpbmFibGUgPSBPZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQEBhbGVydCBcIi1sZWdhY3lcIl1cbm1vZHVsZSBPZl9iaW5hYmxlMSA9IE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQEBhbGVydCBcIi1sZWdhY3lcIl1cbm1vZHVsZSBPZl9iaW5hYmxlMiA9IE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCBbQEBhbGVydCBcIi1sZWdhY3lcIl1cbm1vZHVsZSBPZl9iaW5hYmxlMyA9IE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCBbQEBhbGVydCBcIi1sZWdhY3lcIl1cbm1vZHVsZSBPZl9zZXhwYWJsZSA9IE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCBbQEBhbGVydCBcIi1sZWdhY3lcIl1cbm1vZHVsZSBPZl9zdHJpbmdhYmxlID0gT2Zfc3RyaW5nYWJsZV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG4iLCIoKiBGdW5jdGlvbnMgZm9yIHBhcnNpbmcgdGltZSB6b25lIGRhdGFiYXNlIGZpbGVzICh6aWMgZmlsZXMpLlxuXG4gICBBIHRpbWUgem9uZSBmaWxlIGNvbnNpc3RzIChjb25jZXB0dWFsbHkgLSB0aGUgcmVwcmVzZW50YXRpb24gaXMgbW9yZVxuICAgY29tcGFjdCkgb2YgYW4gb3JkZXJlZCBsaXN0IG9mIChUaW1lLnQgKiBbbG9jYWxfdGltZV90eXBlXSkgdGhhdCBtYXJrXG4gICB0aGUgYm91bmRhcmllcyAobWFya2VkIGZyb20gdGhlIGVwb2NoKSBhdCB3aGljaCB2YXJpb3VzIHRpbWUgYWRqdXN0bWVudFxuICAgcmVnaW1lcyBhcmUgaW4gZWZmZWN0LiAgVGhpcyBjYW4gYWxzbyBiZSB0aG91Z2h0IG9mIGFzIGJyZWFraW5nIGRvd24gYWxsXG4gICB0aW1lIHBhc3QgdGhlIGVwb2NoIGludG8gcmFuZ2VzIHdpdGggYSBbbG9jYWxfdGltZV90eXBlXSB0aGF0IGRlc2NyaWJlcyB0aGVcbiAgIG9mZnNldCBmcm9tIEdNVCB0byBhcHBseSB0byBlYWNoIHJhbmdlIHRvIGdldCBsb2NhbCB0aW1lLlxuKilcblxub3BlbiBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFpvbmVfaW50ZlxuXG5leGNlcHRpb24gSW52YWxpZF9maWxlX2Zvcm1hdCBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRnVsbF9kYXRhID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgSW5kZXggPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjY1xuICAgICAgICBsZXQgcHJldiA9IEludC5wcmVkXG4gICAgICAgIGxldCBiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiA9IC0xXG5cbiAgICAgICAgKCogU29tZSBleGlzdGluZyBjbGllbnRzIGV4cGVjdCBbaW5kZXggPj0gMF0sIHNvIHdlIG5ldmVyIHNlcmlhbGl6ZSBhIG5lZ2F0aXZlXG4gICAgICAgICAgIGluZGV4LiBUaGlzIGNvbnZlcnNpb24gY2FuIGJlIHJlbW92ZWQgaWYgbmV3IHN0YWJsZSB2ZXJzaW9ucyBhcmUgbWludGVkLiAqKVxuICAgICAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IG1heCAwIHRcblxuICAgICAgICAoKiBXaGVuIHRoZSBpbmRleCBvZiBhIHRpbWUgem9uZSB3aXRoIG5vIHRyYW5zaXRpb25zIGlzIGNvbnZlcnRlZCB2aWEgdG9fZXh0ZXJuYWwsXG4gICAgICAgICAgIGl0cyB2YWx1ZSBiZWNvbWVzIDAgZXZlbiB0aG91Z2ggaXRzIHRyYW5zaXRpb24gYXJyYXkgaXMgZW1wdHkgKGFuZCBpdCBzaG91bGRcbiAgICAgICAgICAgaGF2ZSBiZWVuIC0xKS4gV2hlbiB0aGUgY29udmVydGVkIHZhbHVlIGlzIGNoYW5nZWQgYmFjayB0byBhIFpvbmUudCB0aHJvdWdoXG4gICAgICAgICAgIG9mX2V4dGVybmFsLCByZXR1cm5pbmcgdGhpcyB2YWx1ZSBmb3IgaXRzIGluZGV4IGNvdWxkIHJlc3VsdCBpbiB1bnNhZmUgYXJyYXlcbiAgICAgICAgICAgYWNjZXNzZXMgdG8gdGhlIHRyYW5zaXRpb24gYXJyYXkgb2YgdGhlIHpvbmUgKHNpbmNlIHRoZXJlIGlzIG5vIHRyYW5zaXRpb24gYXRcbiAgICAgICAgICAgaW5kZXggMCkuIEFsc28sIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8ga2VlcCB0aGUgY29udmVydGVkIGluZGV4IGJlY2F1c2UgaXRcbiAgICAgICAgICAgaXMgaW50ZW5kZWQgdG8gYmUgYSBtdXRhYmxlIHZhbHVlIHVzZWQgZm9yIGNhY2hpbmcuIFNvIG9mX2V4dGVybmFsIGFsd2F5cyBzZXRzXG4gICAgICAgICAgIHRoZSBpbmRleCB0byAtMSwgd2hpY2ggaXMgYSBzYWZlIHZhbHVlLiAqKVxuICAgICAgICBsZXQgb2ZfZXh0ZXJuYWwgKF8gOiB0KSA9IC0xXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChJbnQpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fZXh0ZXJuYWxcbiAgICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZVxuICAgICAgICAgICAgKEludClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZXh0ZXJuYWxcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaW1lID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyB1dGNfb2Zmc2V0X2luX3NlY29uZHMgOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgaXNfZHN0IDogYm9vbFxuICAgICAgICAgIDsgYWJicnYgOiBzdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICAoKiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVuIGxlYXAgc2Vjb25kcyBzaG91bGQgYmUgYXBwbGllZCAtIHVudXNlZFxuICAgICAgICAgYmVjYXVzZSB3ZSBhcmUgdHJhbnNsYXRpbmcgYmFzZWQgb24gYSBlcG9jaCBzeXN0ZW0gY2xvY2sgKHNlZSB0aGUgQ29yZV96b25lXG4gICAgICAgICBkb2N1bWVudGF0aW9uKS4gKilcbiAgICAgIG1vZHVsZSBMZWFwX3NlY29uZCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IHNlY29uZHMgOiBpbnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVHJhbnNpdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IG5ld19yZWdpbWUgOiBSZWdpbWUudFxuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7XG4gICAgICAgICAgZGlnZXN0IDogTWQ1LkFzX2JpbmFyeV9zdHJpbmcudCBvcHRpb25cbiAgICAgICAgOyB0cmFuc2l0aW9ucyA6IFRyYW5zaXRpb24udCBhcnJheVxuICAgICAgICA7ICgqIGNhY2hlcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJhbnNpdGlvbiB3ZSB1c2VkIHRvIG1ha2UgbG9va3VwcyBmYXN0ZXIgKilcbiAgICAgICAgICBtdXRhYmxlIGxhc3RfcmVnaW1lX2luZGV4IDogSW5kZXgudFxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlIDogUmVnaW1lLnRcbiAgICAgICAgOyBsZWFwX3NlY29uZHMgOiBMZWFwX3NlY29uZC50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICAoKiB0aGlzIHJlbGllcyBvbiB6b25lcyB3aXRoIHRoZSBzYW1lIG5hbWUgaGF2aW5nIHRoZSBzYW1lIHRyYW5zaXRpb25zICopXG4gICAgICBsZXQgY29tcGFyZSB0MSB0MiA9IFN0cmluZy5jb21wYXJlIHQxLm5hbWUgdDIubmFtZVxuICAgICAgbGV0IG9yaWdpbmFsX2ZpbGVuYW1lIHpvbmUgPSB6b25lLm9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICBsZXQgZGlnZXN0IHpvbmUgPSB6b25lLmRpZ2VzdFxuXG4gICAgICBtb2R1bGUgWm9uZV9maWxlIDogc2lnXG4gICAgICAgIHZhbCBpbnB1dF90el9maWxlIDogem9uZW5hbWU6c3RyaW5nIC0+IGZpbGVuYW1lOnN0cmluZyAtPiB0XG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IGJvb2xfb2ZfaW50IGkgPSBpIDw+IDBcblxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQzMiA9XG4gICAgICAgICAgbGV0IGxvbmcgPSBCeXRlcy5jcmVhdGUgNCBpblxuICAgICAgICAgIGxldCBpbnQzMl9vZl9jaGFyIGNociA9IEludDMyLm9mX2ludF9leG4gKGludF9vZl9jaGFyIGNocikgaW5cbiAgICAgICAgICBmdW4gaWMgLT5cbiAgICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmOmxvbmcgfnBvczowIH5sZW46NDtcbiAgICAgICAgICAgIGxldCBzYjEgPSBJbnQzMi5zaGlmdF9sZWZ0IChpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAwKSkgMjQgaW5cbiAgICAgICAgICAgIGxldCBzYjIgPSBJbnQzMi5zaGlmdF9sZWZ0IChpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAxKSkgMTYgaW5cbiAgICAgICAgICAgIGxldCBzYjMgPSBJbnQzMi5zaGlmdF9sZWZ0IChpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAyKSkgOCBpblxuICAgICAgICAgICAgbGV0IHNiNCA9IGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDMpIGluXG4gICAgICAgICAgICBJbnQzMi5iaXRfb3IgKEludDMyLmJpdF9vciBzYjEgc2IyKSAoSW50MzIuYml0X29yIHNiMyBzYjQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCogTm90ZSB0aGF0IHRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSBvbiBudW1iZXJzIHRoYXQgd2lsbCBmaXQgaW50byBhIDMxLWJpdFxuICAgICAgICAgICBpbnQuIFVOSVggdGltZXN0YW1wcyB3b24ndCwgZm9yIGV4YW1wbGUuICBJbiBvdXIgY2FzZSB0aGlzIGlzIG9ubHkgdXNlZFxuICAgICAgICAgICB0byBob2xkIHNtYWxsIG51bWJlcnMgdGhhdCBhcmUgbmV2ZXIgaW50ZXJwcmV0ZWQgYXMgdGltZXN0YW1wcy4gKilcbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50IGljID0gSW50MzIudG9faW50X2V4biAoaW5wdXRfbG9uZ19hc19pbnQzMiBpYylcbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50NjMgaWMgPSBJbnQ2My5vZl9pbnQzMiAoaW5wdXRfbG9uZ19hc19pbnQzMiBpYylcblxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19sb25nX2FzX2ludDYzIGljID1cbiAgICAgICAgICBsZXQgaW50NjNfb2ZfY2hhciBjaHIgPSBJbnQ2My5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgbGV0IHNoaWZ0IGMgYml0cyA9IEludDYzLnNoaWZ0X2xlZnQgKGludDYzX29mX2NoYXIgYykgYml0cyBpblxuICAgICAgICAgIGxldCBsb25nX2xvbmcgPSBCeXRlcy5jcmVhdGUgOCBpblxuICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmOmxvbmdfbG9uZyB+cG9zOjAgfmxlbjo4O1xuICAgICAgICAgIGxldCByZXN1bHQgPSBzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAwKSA1NiBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAxKSA0OCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMikgNDApIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDMpIDMyKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA0KSAyNCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNSkgMTYpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDYpIDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKGludDYzX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nX2xvbmcgNykpIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xpc3QgaWMgfmxlbiB+ZiA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wIGMgbHN0ID1cbiAgICAgICAgICAgIGlmIGMgPiAwIHRoZW4gbG9vcCAoYyAtIDEpIChmIGljIDo6IGxzdCkgZWxzZSBMaXN0LnJldiBsc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgbGVuIFtdXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2FycmF5IGljIH5sZW4gfmYgPSBBcnJheS5vZl9saXN0IChpbnB1dF9saXN0IGljIH5sZW4gfmYpXG5cbiAgICAgICAgbGV0IGlucHV0X3JlZ2ltZSBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA9IGlucHV0X2xvbmdfYXNfaW50NjMgaWMgaW5cbiAgICAgICAgICBsZXQgaXNfZHN0ID0gYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpIGluXG4gICAgICAgICAgbGV0IGFiYnJ2X2luZGV4ID0gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSBpblxuICAgICAgICAgIGxldCBsdCBhYmJydiA9IHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0OyBhYmJydiB9IGluXG4gICAgICAgICAgbHQsIGFiYnJ2X2luZGV4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2FiYnJldmlhdGlvbnMgaWMgfmxlbiA9XG4gICAgICAgICAgbGV0IHJhd19hYmJydnMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+bGVuIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgICAgICAgIGxldCBfLCBpbmRleGVkX2FiYnJ2cyA9XG4gICAgICAgICAgICBMaXN0LmZvbGQgcmF3X2FiYnJ2cyB+aW5pdDooMCwgTWFwLlBvbHkuZW1wdHkpIH5mOihmdW4gKGluZGV4LCBhYmJydnMpIGMgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgIHwgJ1xcMDAwJyAtPlxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgICAgICAgICAgIGxldCBuZXh0X2luZGV4ID0gaW5kZXggKyBTdHJpbmcubGVuZ3RoIGRhdGEgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IGFiYnJ2cyA9IE1hcC5zZXQgYWJicnZzIH5rZXk6aW5kZXggfmRhdGEgaW5cbiAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICAgICAgICAgIG5leHRfaW5kZXgsIGFiYnJ2c1xuICAgICAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGM7XG4gICAgICAgICAgICAgICAgaW5kZXgsIGFiYnJ2cylcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYnVmIDw+IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoSW52YWxpZF9maWxlX2Zvcm1hdFxuICAgICAgICAgICAgICAgICBcIm1pc3NpbmcgXFwwMDAgdGVybWluYXRpbmcgY2hhcmFjdGVyIGluIGlucHV0X2FiYnJldmlhdGlvbnNcIik7XG4gICAgICAgICAgaW5kZXhlZF9hYmJydnNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV9nZW4gfmlucHV0X3RyYW5zaXRpb24gfmlucHV0X2xlYXBfc2Vjb25kIGljID1cbiAgICAgICAgICBsZXQgdXRjX2xvY2FsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgc3RkX3dhbGxfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBsZWFwX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHR5cGVfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBhYmJydl9jaGFyX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbl90aW1lcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0IGljIH5mOmlucHV0X3RyYW5zaXRpb24gfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbl9pbmRpY2VzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3RcbiAgICAgICAgICAgICAgaWNcbiAgICAgICAgICAgICAgfmY6KGZ1biBpYyAtPiBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKVxuICAgICAgICAgICAgICB+bGVuOnRyYW5zaXRpb25fY291bnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9yZWdpbWUgfmxlbjp0eXBlX2NvdW50IGluXG4gICAgICAgICAgbGV0IGFiYnJldmlhdGlvbnMgPSBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW46YWJicnZfY2hhcl9jb3VudCBpblxuICAgICAgICAgIGxldCBsZWFwX3NlY29uZHMgPSBpbnB1dF9saXN0IGljIH5mOmlucHV0X2xlYXBfc2Vjb25kIH5sZW46bGVhcF9jb3VudCBpblxuICAgICAgICAgICgqIFRoZSBmb2xsb3dpbmcgdHdvIGFycmF5cyBpbmRpY2F0ZSB0d28gYm9vbGVhbiB2YWx1ZXMgcGVyIHJlZ2ltZSB0aGF0XG4gICAgICAgICAgICAgcmVwcmVzZW50IGEgdGhyZWUtdmFsdWUgdHlwZSB0aGF0IHdvdWxkIHRyYW5zbGF0ZSB0bzpcblxuICAgICAgICAgICAgIHR5cGUgdHJhbnNpdGlvbl90eXBlID0gVVRDIHwgU3RhbmRhcmQgfCBXYWxsX2Nsb2NrXG5cbiAgICAgICAgICAgICBIb3dldmVyLCB0aGVzZSBhcmUgb25seSB1c2VkIGJ5IHRoZSBzeXN0ZW0gbGlicmFyeSB3aGVuIGhhbmRsaW5nIHRoZSBjYXNlIHdoZXJlIHRoZVxuICAgICAgICAgICAgIFRaIHZhcmlhYmxlIGlzIHNldCwgbm90IHRvIGEgdGltZSB6b25lIG5hbWUsIGJ1dCBpbnN0ZWFkIGlzIG9mIHRoZSBmb3JtOlxuXG4gICAgICAgICAgICAgVFogPSBcInN0ZCBvZmZzZXQgZHN0IG9mZnNldCwgcnVsZVwiXG5cbiAgICAgICAgICAgICBXaGljaCBpcyBkZWVwbHkgb2JzY3VyZSwgYW5kIGFsbW9zdCBjZXJ0YWlubHkgYSBtaXN0YWtlIHRvIHVzZS4gIFRoaXMgbGlicmFyeSBtYWtlc1xuICAgICAgICAgICAgIG5vIHByZXRlbnNlIGFib3V0IGhhbmRsaW5nIHRoaXMgY2FzZS4gIFdlIGNvbnRpbnVlIHRvIHJlYWQgdGhlbSBpbiBmb3JcbiAgICAgICAgICAgICBjb21wbGV0ZW5lc3MsIGFuZCBiZWNhdXNlIGl0J3MgcG9zc2libGUgdGhhdCB3ZSB3aWxsIGxhdGVyIGRpc2NvdmVyIGEgY2FzZSB3aGVyZVxuICAgICAgICAgICAgIHRoZXkgYXJlIHVzZWQuICopXG4gICAgICAgICAgbGV0IF9zdGRfd2FsbF9pbmRpY2F0b3JzID1cbiAgICAgICAgICAgIGlucHV0X2FycmF5IGljIH5sZW46c3RkX3dhbGxfY291bnQgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgX3V0Y19sb2NhbF9pbmRpY2F0b3JzID1cbiAgICAgICAgICAgIGlucHV0X2FycmF5IGljIH5sZW46dXRjX2xvY2FsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlZ2ltZXMgPVxuICAgICAgICAgICAgQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgcmVnaW1lcyB+ZjooZnVuIChsdCwgYWJicnZfaW5kZXgpIC0+XG4gICAgICAgICAgICAgICAgIGxldCBhYmJydiA9IE1hcC5maW5kX2V4biBhYmJyZXZpYXRpb25zIGFiYnJ2X2luZGV4IGluXG4gICAgICAgICAgICAgICAgIGx0IGFiYnJ2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByYXdfdHJhbnNpdGlvbnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAyX2V4biB0cmFuc2l0aW9uX3RpbWVzIHRyYW5zaXRpb25faW5kaWNlcyB+ZjooZnVuIHRpbWUgaW5kZXggLT5cbiAgICAgICAgICAgICAgbGV0IHJlZ2ltZSA9IHJlZ2ltZXMuKGluZGV4KSBpblxuICAgICAgICAgICAgICB0aW1lLCByZWdpbWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbnMgPVxuICAgICAgICAgICAgbGV0IHJlYyBtYWtlX3RyYW5zaXRpb25zIGFjYyBsID1cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgYWNjKVxuICAgICAgICAgICAgICB8IChzdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2gsIG5ld19yZWdpbWUpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBtYWtlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgICAgICAoeyBUcmFuc2l0aW9uLnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgbmV3X3JlZ2ltZSB9IDo6IGFjYylcbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYWtlX3RyYW5zaXRpb25zIFtdIHJhd190cmFuc2l0aW9uc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIG1hdGNoIEFycmF5LmZpbmQgcmVnaW1lcyB+ZjooZnVuIHIgLT4gbm90IHIuUmVnaW1lLmlzX2RzdCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJlZ2ltZXMuKDApXG4gICAgICAgICAgICB8IFNvbWUgbHR0IC0+IGx0dFxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIG5hbWUgfm9yaWdpbmFsX2ZpbGVuYW1lIH5kaWdlc3QgLT5cbiAgICAgICAgICAgIHsgbmFtZVxuICAgICAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IFNvbWUgb3JpZ2luYWxfZmlsZW5hbWVcbiAgICAgICAgICAgIDsgZGlnZXN0ID0gU29tZSBkaWdlc3RcbiAgICAgICAgICAgIDsgdHJhbnNpdGlvbnNcbiAgICAgICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZVxuICAgICAgICAgICAgOyBsZWFwX3NlY29uZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA9IGlucHV0X2xlYXBfc2Vjb25kIGljIGluXG4gICAgICAgICAgbGV0IHNlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIHsgTGVhcF9zZWNvbmQudGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoOyBzZWNvbmRzIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVhZF9oZWFkZXIgaWMgPVxuICAgICAgICAgIGxldCBtYWdpYyA9XG4gICAgICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuZXF1YWwgbWFnaWMgXCJUWmlmXCIpXG4gICAgICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCBcIm1hZ2ljIGNoYXJhY3RlcnMgVFppZiBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgICBsZXQgdmVyc2lvbiA9XG4gICAgICAgICAgICBtYXRjaCBJbl9jaGFubmVsLmlucHV0X2NoYXIgaWMgd2l0aFxuICAgICAgICAgICAgfCBTb21lICdcXDAwMCcgLT4gYFYxXG4gICAgICAgICAgICB8IFNvbWUgJzInIC0+IGBWMlxuICAgICAgICAgICAgfCBTb21lICczJyAtPiBgVjNcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCBcImV4cGVjdGVkIHZlcnNpb24sIGZvdW5kIG5vdGhpbmdcIilcbiAgICAgICAgICAgIHwgU29tZSBiYWRfdmVyc2lvbiAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcInZlcnNpb24gKCVjKSBpcyBpbnZhbGlkXCIgYmFkX3ZlcnNpb24pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogc3BhY2UgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgaW4gdGhlIGZvcm1hdCAqKVxuICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmOihCeXRlcy5jcmVhdGUgMTUpIH5wb3M6MCB+bGVuOjE1O1xuICAgICAgICAgIHZlcnNpb25cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92MSBpYyA9XG4gICAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kID1cbiAgICAgICAgICAgIGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQ6aW5wdXRfbG9uZ19hc19pbnQ2M1xuICAgICAgICAgIGluXG4gICAgICAgICAgaW5wdXRfdHpfZmlsZV9nZW4gfmlucHV0X3RyYW5zaXRpb246aW5wdXRfbG9uZ19hc19pbnQ2MyB+aW5wdXRfbGVhcF9zZWNvbmQgaWNcbiAgICAgICAgOztcblxuICAgICAgICAoKlxuICAgICAgICAgICB2ZXJzaW9uIDIgdGltZXpvbmUgZmlsZXMgaGF2ZSB0aGUgZm9ybWF0OlxuXG4gICAgICAgICAgIHBhcnQgMSAtIGV4YWN0bHkgdGhlIHNhbWUgYXMgdjFcblxuICAgICAgICAgICBwYXJ0IDIgLSBzYW1lIGZvcm1hdCBhcyB2MSwgZXhjZXB0IHRoYXQgOCBieXRlcyBhcmUgdXNlZCB0byBzdG9yZVxuICAgICAgICAgICB0cmFuc2l0aW9uIHRpbWVzIGFuZCBsZWFwIHNlY29uZHNcblxuICAgICAgICAgICBwYXJ0IDMgLSBhIG5ld2xpbmUtZW5jbG9kZWQsIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlXG4gICAgICAgICAgIHN0cmluZyBmb3IgdXNlIGluIGhhbmRsaW5nIGluc3RhbnRzIGFmdGVyIHRoZSBsYXN0IHRyYW5zaXRpb24gdGltZVxuICAgICAgICAgICBzdG9yZWQgaW4gdGhlIGZpbGUgKHdpdGggbm90aGluZyBiZXR3ZWVuIHRoZSBuZXdsaW5lcyBpZiB0aGVyZSBpcyBub1xuICAgICAgICAgICBQT1NJWCByZXByZXNlbnRhdGlvbiBmb3Igc3VjaCBpbnN0YW50cylcblxuICAgICAgICAgICBXZSBoYW5kbGUgZmlsZXMgaW4gdGhpcyBmb3JtYXQgYnkgcGFyc2luZyB0aGUgZmlyc3QgcGFydCBleGFjdGx5IGFzIGEgdjFcbiAgICAgICAgICAgdGltZXpvbmUgZmlsZSBhbmQgdGhlbiBjb250aW51aW5nIHRvIHBhcnNlIHdpdGggNjRiaXQgcmVhZGluZyBmdW5jdGlvbnMgaW4gdGhlXG4gICAgICAgICAgIHJpZ2h0IHBsYWNlcy5cblxuICAgICAgICAgICBWZXJzaW9uIDMgdGltZXpvbmUgZmlsZXMgYXJlIHRoZSBzYW1lIGFzIHZlcnNpb24gMiwgZXhjZXB0IHRoZVxuICAgICAgICAgICBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZSBzdHJpbmcgaW4gcGFydCAzIG1heSB1c2UgdHdvIG1pbm9yXG4gICAgICAgICAgIGV4dGVuc2lvbnMgdG8gdGhlIFBPU0lYIFRaIGZvcm1hdCAodGhlIGhvdXJzIHBhcnQgb2YgaXRzIHRyYW5zaXRpb25cbiAgICAgICAgICAgdGltZXMgbWF5IGJlIHNpZ25lZCBhbmQgcmFuZ2UgZnJvbSAtMTY3IHRocm91Z2ggMTY3IGluc3RlYWQgb2YgdGhlXG4gICAgICAgICAgIFBPU0lYLXJlcXVpcmVkIHVuc2lnbmVkIHZhbHVlcyBmcm9tIDAgdGhyb3VnaCAyNDsgYW5kIERTVCBpcyBpbiBlZmZlY3QgYWxsXG4gICAgICAgICAgIHllYXIgaWYgaXQgc3RhcnRzIEphbnVhcnkgMSBhdCAwMDowMCBhbmQgZW5kcyBEZWNlbWJlciAzMSBhdCAyNDowMCBwbHVzIHRoZVxuICAgICAgICAgICBkaWZmZXJlbmNlIGJldHdlZW4gZGF5bGlnaHQgc2F2aW5nIGFuZCBzdGFuZGFyZCB0aW1lKS5cblxuICAgICAgICAgICBBcyB3ZSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyB3aXRoIHBhcnQgMyBhbnl3YXksIHdlIGNhbiBqdXN0IHJlYWQgdjNcbiAgICAgICAgICAgZmlsZXMgYXMgdjIuXG4gICAgICAgICopXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX3YyX29yX3YzIH52ZXJzaW9uIGljID1cbiAgICAgICAgICBsZXQgKF8gOiBzdHJpbmcgLT4gb3JpZ2luYWxfZmlsZW5hbWU6c3RyaW5nIC0+IGRpZ2VzdDpNZDVfbGliLnQgLT4gdCkgPVxuICAgICAgICAgICAgaW5wdXRfdHpfZmlsZV92MSBpY1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogdGhlIGhlYWRlciBpcyBmdWxseSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBbIGBWMSB8IGBWMiB8IGBWMyBdXSAocmVhZF9oZWFkZXIgaWMpIHZlcnNpb24pO1xuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfbG9uZ19hc19pbnQ2M1xuICAgICAgICAgIGluXG4gICAgICAgICAgaW5wdXRfdHpfZmlsZV9nZW5cbiAgICAgICAgICAgIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfbG9uZ19hc19pbnQ2M1xuICAgICAgICAgICAgfmlucHV0X2xlYXBfc2Vjb25kXG4gICAgICAgICAgICBpY1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlIH56b25lbmFtZSB+ZmlsZW5hbWUgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgcHJvdGVjdHggKEluX2NoYW5uZWwuY3JlYXRlIGZpbGVuYW1lKSB+ZmluYWxseTpJbl9jaGFubmVsLmNsb3NlIH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgbGV0IG1ha2Vfem9uZSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVhZF9oZWFkZXIgaWMgd2l0aFxuICAgICAgICAgICAgICAgIHwgYFYxIC0+IGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICAgICAgICB8IChgVjIgfCBgVjMpIGFzIHZlcnNpb24gLT4gaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGlnZXN0ID0gTWQ1LmRpZ2VzdF9maWxlX2Jsb2NraW5nIGZpbGVuYW1lIGluXG4gICAgICAgICAgICAgIGxldCByID0gbWFrZV96b25lIHpvbmVuYW1lIH5vcmlnaW5hbF9maWxlbmFtZTpmaWxlbmFtZSB+ZGlnZXN0IGluXG4gICAgICAgICAgICAgIHIpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgSW52YWxpZF9maWxlX2Zvcm1hdCByZWFzb24gLT5cbiAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IChzcHJpbnRmIFwiJXMgLSAlc1wiIGZpbGVuYW1lIHJlYXNvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0ID1cbiAgICAgICAgYXNzZXJ0IChvZmZzZXQgPj0gLTI0ICYmIG9mZnNldCA8PSAyNCk7XG4gICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBJbnQ2My5vZl9pbnQgKG9mZnNldCAqIDYwICogNjApIGluXG4gICAgICAgIHsgbmFtZVxuICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lID0gTm9uZVxuICAgICAgICA7IGRpZ2VzdCA9IE5vbmVcbiAgICAgICAgOyB0cmFuc2l0aW9ucyA9IFt8fF1cbiAgICAgICAgOyBsYXN0X3JlZ2ltZV9pbmRleCA9IEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG4gICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgPVxuICAgICAgICAgICAgeyBSZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzOyBpc19kc3QgPSBmYWxzZTsgYWJicnYgPSBuYW1lIH1cbiAgICAgICAgOyBsZWFwX3NlY29uZHMgPSBbXVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdXRjX29mZnNldCB+aG91cnM6b2Zmc2V0ID1cbiAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgIGlmIG9mZnNldCA9IDBcbiAgICAgICAgICB0aGVuIFwiVVRDXCJcbiAgICAgICAgICBlbHNlIHNwcmludGYgXCJVVEMlcyVkXCIgKGlmIG9mZnNldCA8IDAgdGhlbiBcIi1cIiBlbHNlIFwiK1wiKSAoYWJzIG9mZnNldClcbiAgICAgICAgaW5cbiAgICAgICAgb2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIH5uYW1lIH5ob3VyczpvZmZzZXRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLkZ1bGxfZGF0YS5WMVxuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gdC5uYW1lXG5cbmxldCBsaWtlbHlfbWFjaGluZV96b25lcyA9XG4gIHJlZiBbIFwiQW1lcmljYS9OZXdfWW9ya1wiOyBcIkV1cm9wZS9Mb25kb25cIjsgXCJBc2lhL0hvbmdfS29uZ1wiOyBcIkFtZXJpY2EvQ2hpY2Fnb1wiIF1cbjs7XG5cbmxldCBpbnB1dF90el9maWxlID0gWm9uZV9maWxlLmlucHV0X3R6X2ZpbGVcbmxldCB1dGMgPSBvZl91dGNfb2Zmc2V0IH5ob3VyczowXG5sZXQgbmFtZSB6b25lID0gem9uZS5uYW1lXG5sZXQgcmVzZXRfdHJhbnNpdGlvbl9jYWNoZSB0ID0gdC5sYXN0X3JlZ2ltZV9pbmRleCA8LSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuXG4oKiBSYWlzZXMgaWYgW2luZGV4ID49IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXSAqKVxubGV0IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggPVxuICBpZiBpbmRleCA8IDAgdGhlbiB0LmRlZmF1bHRfbG9jYWxfdGltZV90eXBlIGVsc2UgdC50cmFuc2l0aW9ucy4oaW5kZXgpLm5ld19yZWdpbWVcbjs7XG5cbigqIEluIFwiYWJzb2x1dGUgbW9kZVwiLCBhIG51bWJlciBvZiBzZWNvbmRzIGlzIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBvZiB0aGF0IG1hbnlcbiAgIHNlY29uZHMgZnJvbSB0aGUgVU5JWCBlcG9jaCwgaWdub3JpbmcgbGVhcCBzZWNvbmRzLlxuXG4gICBJbiBcImRhdGUgYW5kIG9mZGF5IG1vZGVcIiwgeW91IGludGVycHJldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYXMgYSBudW1iZXIgb2YgZGF5cyBpblxuICAgY29tYmluYXRpb24gd2l0aCBhIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIG1pZG5pZ2h0LCB3aGljaCBnaXZlcyB5b3UgYSBjYWxlbmRhciBkYXkgYW5kXG4gICBhIGNsb2NrIGZhY2UgdGltZS4gVGhlbiB5b3UgdGFrZSB0aGUgdGltZSB0aGF0IHRob3NlIHJlcHJlc2VudCBpbiBzb21lIHJlbGV2YW50XG4gICB0aW1lem9uZS5cblxuICAgT2YgY291cnNlLCBpZiB0aGUgdGltZXpvbmUgaW4gcXVlc3Rpb24gaGFzIERTVCBzaGlmdHMsIHRoZSBkYXRlIGFuZCBvZmRheSBtaWdodFxuICAgcmVwcmVzZW50IHR3byBvciB6ZXJvIHRpbWVzLiBUaGVzZSB0aW1lcyB3aWxsIGJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBlaXRoZXIgdGhlXG4gICBwcmV2aW91cyBVVEMgb2Zmc2V0IG9yIHRoZSBuZXh0IG9uZSwgaW4gYSB3YXkgd2hvc2UgcHJlY2lzZSBkZXRhaWxzIHlvdSBwcm9iYWJseVxuICAgc2hvdWxkbid0IGRlcGVuZCBvbi5cblxuICAgKEZvciB0aGUgY3VyaW91cywgd2hhdCB3ZSBkbyBpczogY29tcHV0ZSB0aGUgXCJyZWxhdGl2ZSB0aW1lXCIgb2YgdGhlIHNoaWZ0IGFjY29yZGluZyB0b1xuICAgdGhlIG5ldyByZWdpbWUsIGFuZCBhc3NpZ24gcmVsYXRpdmUgdGltZXMgdG8gdGhlIG9sZCByZWdpbWUgb3IgbmV3IHJlZ2ltZSBkZXBlbmRpbmcgb25cbiAgIHdoaWNoIHNpZGUgb2YgdGhlIHNoaWZ0IHRpbWUgdGhleSBvY2N1ci4gU2luY2UgdGhpcyBhbW91bnRzIHRvIHVzaW5nIHRoZSBvbGQgcmVnaW1lXG4gICB3aGVuIHRoZSBjbG9ja3MgbW92ZSBmb3J3YXJkIGFuZCB0aGUgbmV3IHJlZ2ltZSB3aGVuIHRoZSBjbG9ja3MgbW92ZSBiYWNrLCBpdCdzXG4gICBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHRoZSBjb3JyZXNwb25kaW5nIFRpbWUudCdzIHJlbGF0aXZlIHRvIGJvdGggdGhlIG9sZCBhbmQgdGhlXG4gICBuZXcgcmVnaW1lIGFuZCBwaWNraW5nIHRoZSBvbmUgdGhhdCBvY2N1cnMgbGF0ZXIuIFllcywgbGF0ZXIuIEkgaGFkIHRvIGRyYXcgYSBkaWFncmFtXG4gICB0byBwZXJzdWFkZSBteXNlbGYgdGhhdCBpdCdzIHRoYXQgd2F5IHJvdW5kLCBidXQgaXQgaXMuKVxuKilcbm1vZHVsZSBNb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBYnNvbHV0ZVxuICAgIHwgRGF0ZV9hbmRfb2ZkYXlcbmVuZFxuXG5sZXQgZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgKHggOiBUcmFuc2l0aW9uLnQpID1cbiAgbGV0IG9wZW4gSW50NjMuTyBpblxuICBtYXRjaCAobW9kZSA6IE1vZGUudCkgd2l0aFxuICB8IEFic29sdXRlIC0+IHguc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHwgRGF0ZV9hbmRfb2ZkYXkgLT5cbiAgICB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCArIHgubmV3X3JlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG5cbmxldCBpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4IDwgMCB8fCBJbnQ2My4oID49ICkgc2Vjb25kcyAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgdC50cmFuc2l0aW9ucy4oaW5kZXgpKVxuOztcblxubGV0IGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzID1cbiAgaW5kZXggKyAxID49IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG4gIHx8IEludDYzLiggPCApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4ICsgMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kcyA6IEluZGV4LnQgPVxuICBBcnJheS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyYW5zaXRpb25zIGBMYXN0X29uX2xlZnQgfnNlZ21lbnRfb2Y6KGZ1biB0cmFuc2l0aW9uIC0+XG4gICAgaWYgSW50NjMuKCA8PSApIChlZmZlY3RpdmVfc3RhcnRfdGltZSB0cmFuc2l0aW9uIH5tb2RlKSBzZWNvbmRzXG4gICAgdGhlbiBgTGVmdFxuICAgIGVsc2UgYFJpZ2h0KVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbjs7XG5cbmxldCBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kcyA9XG4gIGxldCBpbmRleCA9XG4gICAgbGV0IGluZGV4ID0gdC5sYXN0X3JlZ2ltZV9pbmRleCBpblxuICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4OyB0cnkgcHJldmlvdXMgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4IC0gMSBpblxuICAgICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYmVmb3JlIHByZXZpb3VzIGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleCBhbmQgbm90IGJlZm9yZSBwcmV2aW91cywgc28gd2l0aGluIHByZXZpb3VzICopXG4gICAgICBlbHNlIGluZGV4KVxuICAgIGVsc2UgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleDsgdHJ5IG5leHQgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4ICsgMSBpblxuICAgICAgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgbmV4dCBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleCBhbmQgbm90IGFmdGVyIG5leHQsIHNvIHdpdGhpbiBuZXh0ICopXG4gICAgICBlbHNlIGluZGV4ICgqIHRpbWUgaXMgd2l0aGluIGNhY2hlZCBpbmRleCAqKSlcbiAgICBlbHNlIGluZGV4XG4gIGluXG4gIHQubGFzdF9yZWdpbWVfaW5kZXggPC0gaW5kZXg7XG4gIGluZGV4XG47O1xuXG5tb2R1bGUgVGltZV9pbl9zZWNvbmRzIDogc2lnXG4gIGluY2x1ZGUgWm9uZV9pbnRmLlRpbWVfaW5fc2Vjb25kc1xuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgPSBGbi5pZFxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBpbmNsdWRlIEFic29sdXRlXG5lbmRcblxubGV0IGluZGV4IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6QWJzb2x1dGVcbjs7XG5cbmxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpEYXRlX2FuZF9vZmRheVxuOztcblxubGV0IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleCA+PSAwICYmIGluZGV4IDwgQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbmxldCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgdHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICBsZXQgYWZ0ZXIgPSB0cmFuc2l0aW9uLm5ld19yZWdpbWUgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaW5kZXggPSAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4IC0gMSkubmV3X3JlZ2ltZVxuICBpblxuICBJbnQ2My4oIC0gKSBhZnRlci51dGNfb2Zmc2V0X2luX3NlY29uZHMgYmVmb3JlLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCAoaW5kZXggKyAxKVxuOztcblxubGV0IGluZGV4X2FiYnJldmlhdGlvbl9leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIHJlZ2ltZS5hYmJydlxuOztcblxubGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHMgcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gVmFsaWRhdGVkX2ludGZcblxubW9kdWxlIHR5cGUgUmF3ID0gUmF3XG5cbnR5cGUgKCdyYXcsICd3aXRuZXNzKSB0ID0gJ3Jhd1xuXG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfYmluX2lvID0gU19iaW5faW8gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwID1cbiAgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbmxldCByYXcgdCA9IHRcblxubW9kdWxlIE1ha2UgKFJhdyA6IFJhdykgPSBzdHJ1Y3RcbiAgdHlwZSB3aXRuZXNzXG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IgPVxuICAgIEVycm9yLmNyZWF0ZVxuICAgICAgXCJ2YWxpZGF0aW9uIGZhaWxlZFwiXG4gICAgICAodCwgZXJyb3IsIFJhdy5oZXJlKVxuICAgICAgWyVzZXhwX29mOiBSYXcudCAqIEVycm9yLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yLnJhaXNlICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gY3JlYXRlX2V4biAoUmF3LnRfb2Zfc2V4cCBzZXhwKVxuICBsZXQgcmF3IHQgPSB0XG5lbmRcblxubW9kdWxlIEFkZF9iaW5faW8gKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlIFJhd19iaW5faW8gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKFZhbGlkYXRlZCA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAoUmF3KVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBSYXcudFxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHJhdyA9XG4gICAgICAgICAgaWYgUmF3LnZhbGlkYXRlX2JpbmlvX2Rlc2VyaWFsaXphdGlvbiB0aGVuIFZhbGlkYXRlZC5jcmVhdGVfZXhuIHJhdyBlbHNlIHJhd1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQWRkX2NvbXBhcmUgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKF8gOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBsZXQgY29tcGFyZSB0MSB0MiA9IFslY29tcGFyZTogUmF3LnRdIChyYXcgdDEpIChyYXcgdDIpXG5lbmRcblxubW9kdWxlIEFkZF9oYXNoIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFJhdy5oYXNoX2ZvbGRfdCBzdGF0ZSAoVmFsaWRhdGVkLnJhdyB0KVxuICBsZXQgaGFzaCB0ID0gUmF3Lmhhc2ggKFZhbGlkYXRlZC5yYXcgdClcbmVuZFxuXG5tb2R1bGUgQWRkX3R5cGVyZXAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKF8gOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFJhdyA6IFJhd19iaW5faW8pID0gc3RydWN0XG4gIG1vZHVsZSBUMCA9IE1ha2UgKFJhdylcbiAgaW5jbHVkZSBUMFxuICBpbmNsdWRlIEFkZF9iaW5faW8gKFJhdykgKFQwKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhd19iaW5faW8gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IE1ha2VfYmluYWJsZSAoUmF3KVxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBBZGRfY29tcGFyZSAoUmF3KSAoVClcblxuICBpbmNsdWRlIChcbiAgICBBZGRfaGFzaCAoUmF3KSAoVCkgOlxuICAgIHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuIiwiaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWxcblxubW9kdWxlIElkID0gc3RydWN0XG4gIGluY2x1ZGUgSWRcblxuICBtb2R1bGUgVWlkID0gc3RydWN0XG4gICAgbW9kdWxlIFVwc3RyZWFtID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuICAgIGluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5FeHRlbmRcbiAgICAgICAgKFVwc3RyZWFtKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZC50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoVXBzdHJlYW0pXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFVuaXZfbWFwX2ludGZcbm1vZHVsZSBVaWQgPSBUeXBlX2VxdWFsLklkLlVpZFxuXG5tb2R1bGUgTWFrZTFcbiAgICAoS2V5IDogS2V5KSAoRGF0YSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgKCdzLCAnYSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICAoKiBBIHdyYXBwZXIgZm9yIHRoZSBbS2V5XSBtb2R1bGUgdGhhdCBhZGRzIGEgZHluYW1pYyBjaGVjayB0byBbS2V5LnR5cGVfaWRdLlxuXG4gICAgIEl0J3MgYSBidWcgaWYgdGhlIHVzZXItcHJvdmlkZWQgW0tleS50eXBlX2lkXSBnaXZlcyBkaWZmZXJlbnQgdHlwZSBpZHMgb24gZGlmZmVyZW50XG4gICAgIGNhbGxzLiAgQmVjYXVzZSB0aGlzIGNoZWNrIHNob3VsZCBiZSBmYWlybHkgY2hlYXAsIHdlIGRvIGl0IGR5bmFtaWNhbGx5IHRvIGF2b2lkXG4gICAgIHN1YnRsZXIgcHJvYmxlbXMgbGF0ZXIuXG5cbiAgICAgT2YgY291cnNlLCB3ZSdyZSBub3QgY2hlY2tpbmcgdHJ1bHkgcGF0aG9sb2dpY2FsIHRoaW5ncyBsaWtlIHRoZSBwcm92aWRlZFxuICAgICBbS2V5LnR5cGVfaWRdIG9ubHkgY2hhbmdlcyB0aGUgdmFsdWUgaXQgcmV0dXJucyBvbiBldmVyeSB0aGlyZCBjYWxsLi4uICopXG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBLZXkudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgKCogdGVzdC1mcmllbmRseSBzZXhwIGNvbnZlcnNpb24gKilcbiAgICBsZXQgc2V4cF9vZl90eXBlX2lkIHR5cGVfaWQgPVxuICAgICAgWyVzZXhwXG4gICAgICAgIHsgbmFtZSA9IChUeXBlX2VxdWFsLklkLm5hbWUgdHlwZV9pZCA6IHN0cmluZylcbiAgICAgICAgOyB1aWQgPVxuICAgICAgICAgICAgKChpZiBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG4gICAgICAgICAgICAgIHRoZW4gU2V4cC5BdG9tIFwiPHVpZD5cIlxuICAgICAgICAgICAgICBlbHNlIFR5cGVfZXF1YWwuSWQuVWlkLnNleHBfb2ZfdCAoVHlwZV9lcXVhbC5JZC51aWQgdHlwZV9pZCkpIDogU2V4cC50KVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZCBrZXkgPVxuICAgICAgbGV0IHR5cGVfaWQxID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBsZXQgdHlwZV9pZDIgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGlmIFR5cGVfZXF1YWwuSWQuc2FtZSB0eXBlX2lkMSB0eXBlX2lkMlxuICAgICAgdGhlbiB0eXBlX2lkMVxuICAgICAgZWxzZVxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltLZXkudHlwZV9pZF0gbXVzdCBub3QgcHJvdmlkZSBkaWZmZXJlbnQgdHlwZSBpZHMgd2hlbiBjYWxsZWQgb24gdGhlIHNhbWUgXFxcbiAgICAgICAgICAgICBpbnB1dFwiXG4gICAgICAgICAgICAgIChrZXkgOiBfIEtleS50KVxuICAgICAgICAgICAgICAodHlwZV9pZDEgOiB0eXBlX2lkKVxuICAgICAgICAgICAgICAodHlwZV9pZDIgOiB0eXBlX2lkKV1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlICgncywgJ2EpIGRhdGEgPSAoJ3MsICdhKSBEYXRhLnRcblxuICBsZXQgbmFtZV9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC5uYW1lIChLZXkudHlwZV9pZCBrZXkpXG4gIGxldCB1aWRfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQudWlkIChLZXkudHlwZV9pZCBrZXkpXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdCA9IFQgOiAnYSBLZXkudCAqICgncywgJ2EpIERhdGEudCAtPiAncyB0XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAoVCAoa2V5LCBkYXRhKSkgPVxuICAgICAgRGF0YS5zZXhwX29mX3Qgc2V4cF9vZl9hIChUeXBlX2VxdWFsLklkLnRvX3NleHAgKEtleS50eXBlX2lkIGtleSkpIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWRfbmFtZSAoVCAoa2V5LCBfKSkgPSBuYW1lX29mX2tleSBrZXlcbiAgICBsZXQgdHlwZV9pZF91aWQgKFQgKGtleSwgXykpID0gdWlkX29mX2tleSBrZXlcblxuICAgIGxldCBjb21wYXJlIHQxIHQyID1cbiAgICAgIGxldCBjID0gU3RyaW5nLmNvbXBhcmUgKHR5cGVfaWRfbmFtZSB0MSkgKHR5cGVfaWRfbmFtZSB0MikgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBVaWQuY29tcGFyZSAodHlwZV9pZF91aWQgdDEpICh0eXBlX2lkX3VpZCB0MilcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdzIHQgPSAncyBQYWNrZWQudCBVaWQuTWFwLnRcblxuICBsZXQgdG9fYWxpc3QgdCA9IE1hcC5kYXRhIHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlBhY2tlZC5jb21wYXJlXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgdG9fYWxpc3QgdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gcGFja2VkIC0+IFBhY2tlZC50eXBlX2lkX25hbWUgcGFja2VkLCBwYWNrZWQpXG4gICAgfD4gWyVzZXhwX29mOiAoc3RyaW5nICogYSBQYWNrZWQudCkgbGlzdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50ICh0IDogXyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIE1hcC5pdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBhc3NlcnQgKFVpZC5lcXVhbCBrZXkgKFBhY2tlZC50eXBlX2lkX3VpZCBkYXRhKSkpKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID0gTWFwLnNldCB0IH5rZXk6KHVpZF9vZl9rZXkga2V5KSB+ZGF0YTooUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIGxldCBtZW1fYnlfaWQgdCBpZCA9IE1hcC5tZW0gdCBpZFxuICBsZXQgbWVtIHQga2V5ID0gbWVtX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgcmVtb3ZlX2J5X2lkIHQgaWQgPSBNYXAucmVtb3ZlIHQgaWRcbiAgbGV0IHJlbW92ZSB0IGtleSA9IHJlbW92ZV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IGVtcHR5ID0gVWlkLk1hcC5lbXB0eVxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID0gVWlkLk1hcC5zaW5nbGV0b24gKHVpZF9vZl9rZXkga2V5KSAoUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIGxldCBpc19lbXB0eSA9IE1hcC5pc19lbXB0eVxuXG4gIGxldCBmaW5kICh0eXBlIGIpIHQgKGtleSA6IGIgS2V5LnQpID1cbiAgICBtYXRjaCBNYXAuZmluZCB0ICh1aWRfb2Zfa2V5IGtleSkgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChQYWNrZWQuVCAoa2V5JywgdmFsdWUpKSAtPlxuICAgICAgKCogY2Fubm90IHJhaXNlIC0tIHNlZSBbaW52YXJpYW50XSAqKVxuICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQga2V5KSAoS2V5LnR5cGVfaWQga2V5JylcbiAgICAgIGluXG4gICAgICBTb21lICh2YWx1ZSA6IChfLCBiKSBEYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIlVuaXZfbWFwLmZpbmRfZXhuIG9uIHVua25vd24ga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9IGlmIG1lbSB0IGtleSB0aGVuIGBEdXBsaWNhdGUgZWxzZSBgT2sgKHNldCB0IH5rZXkgfmRhdGEpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IGBPayB0IC0+IHRcbiAgICB8IGBEdXBsaWNhdGUgLT4gZmFpbHdpdGhmIFwiVW5pdl9tYXAuYWRkX2V4biBvbiBleGlzdGluZyBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2VfZXhuIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIGRhdGEpXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIlVuaXZfbWFwLmNoYW5nZV9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID1cbiAgICBsZXQgb3JpZyA9IGZpbmQgdCBrZXkgaW5cbiAgICBsZXQgbmV4dCA9IHVwZGF0ZSBvcmlnIGluXG4gICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgIHwgTm9uZSAtPiBpZiBPcHRpb24uaXNfbm9uZSBvcmlnIHRoZW4gdCBlbHNlIHJlbW92ZSB0IGtleVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPSBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpXG5cbiAgbGV0IG9mX2FsaXN0X2V4biB0ID1cbiAgICBVaWQuTWFwLm9mX2FsaXN0X2V4biAoTGlzdC5tYXAgdCB+ZjooZnVuIHAgLT4gUGFja2VkLnR5cGVfaWRfdWlkIHAsIHApKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIE0gPVxuICAgIE1ha2UxXG4gICAgICAoS2V5KVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIChfLCAnYSkgdCA9ICdhIERhdGEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kKVxuXG4gIHR5cGUgdCA9IHVuaXQgTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIEtleSA9IEtleVxuXG4gIHR5cGUgJ2EgZGF0YSA9ICdhIERhdGEudFxuXG4gIGxldCBpbnZhcmlhbnQgPSBNLmludmFyaWFudFxuICBsZXQgZW1wdHkgPSBNLmVtcHR5XG4gIGxldCBzaW5nbGV0b24gPSBNLnNpbmdsZXRvblxuICBsZXQgaXNfZW1wdHkgPSBNLmlzX2VtcHR5XG4gIGxldCBzZXQgPSBNLnNldFxuICBsZXQgbWVtID0gTS5tZW1cbiAgbGV0IG1lbV9ieV9pZCA9IE0ubWVtX2J5X2lkXG4gIGxldCBmaW5kID0gTS5maW5kXG4gIGxldCBmaW5kX2V4biA9IE0uZmluZF9leG5cbiAgbGV0IGFkZCA9IE0uYWRkXG4gIGxldCBhZGRfZXhuID0gTS5hZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBNLmNoYW5nZVxuICBsZXQgY2hhbmdlX2V4biA9IE0uY2hhbmdlX2V4blxuICBsZXQgdXBkYXRlID0gTS51cGRhdGVcbiAgbGV0IHJlbW92ZSA9IE0ucmVtb3ZlXG4gIGxldCByZW1vdmVfYnlfaWQgPSBNLnJlbW92ZV9ieV9pZFxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIDogJ2EgS2V5LnQgKiAnYSBEYXRhLnQgLT4gdFxuICBlbmRcblxuICBsZXQgdG9fYWxpc3QgdCA9XG4gICAgTGlzdC5tYXAgKE0udG9fYWxpc3QgdCkgfmY6KGZ1bmN0aW9uIE0uUGFja2VkLlQgKGtleSwgZGF0YSkgLT4gUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB0ID1cbiAgICBNLm9mX2FsaXN0X2V4blxuICAgICAgKExpc3QubWFwIHQgfmY6KGZ1bmN0aW9uIFBhY2tlZC5UIChrZXksIGRhdGEpIC0+IE0uUGFja2VkLlQgKGtleSwgZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNZXJnZSAoS2V5IDogS2V5KSAoSW5wdXQxX2RhdGEgOiBEYXRhKSAoSW5wdXQyX2RhdGEgOiBEYXRhKSAoT3V0cHV0X2RhdGEgOiBEYXRhKSA9XG5zdHJ1Y3RcbiAgdHlwZSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAnYSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAnYSBJbnB1dDFfZGF0YS50ICogJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICdhIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2UgKHQxIDogTWFrZShLZXkpKElucHV0MV9kYXRhKS50KSAodDIgOiBNYWtlKEtleSkoSW5wdXQyX2RhdGEpLnQpIH5mOnsgZiB9XG4gICAgOiBNYWtlKEtleSkoT3V0cHV0X2RhdGEpLnRcbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5NLlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWVyZ2UxXG4gICAgKEtleSA6IEtleSlcbiAgICAoSW5wdXQxX2RhdGEgOiBEYXRhMSlcbiAgICAoSW5wdXQyX2RhdGEgOiBEYXRhMSlcbiAgICAoT3V0cHV0X2RhdGEgOiBEYXRhMSkgPVxuc3RydWN0XG4gIHR5cGUgKCdzMSwgJ3MyLCAnczMpIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnQgKiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICgnczMsICdhKSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZTEgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZVxuICAgICAgICAodHlwZSBzMSBzMilcbiAgICAgICAgKHQxIDogczEgTWFrZTEoS2V5KShJbnB1dDFfZGF0YSkudClcbiAgICAgICAgKHQyIDogczIgTWFrZTEoS2V5KShJbnB1dDJfZGF0YSkudClcbiAgICAgICAgfmY6eyBmIH1cbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFR5cGVfaWRfa2V5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFR5cGVfZXF1YWwuSWQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0eXBlX2lkID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIChcbiAgTWFrZVxuICAgIChUeXBlX2lkX2tleSlcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZCkgOlxuICAgIFMgd2l0aCB0eXBlICdhIGRhdGEgPSAnYSBhbmQgbW9kdWxlIEtleSA6PSBUeXBlX2lkX2tleSlcblxubW9kdWxlIEtleSA9IFR5cGVfZXF1YWwuSWRcblxubW9kdWxlIFdpdGhfZGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsga2V5IDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGRlZmF1bHQgOiAnYVxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+ZGVmYXVsdCB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZGVmYXVsdDsga2V5ID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGRlZmF1bHQgfSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCAoZmluZCB0IGtleSlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBkZWZhdWx0ID0gXyB9IH5kYXRhID0gc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSAoZmluZCB0IGtleSkpXG5lbmRcblxubW9kdWxlIFdpdGhfZm9sZCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHsga2V5IDogJ2IgV2l0aF9kZWZhdWx0LktleS50XG4gICAgICA7IGYgOiAnYiAtPiAnYSAtPiAnYlxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+aW5pdCB+ZiB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZjsga2V5ID0gV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6aW5pdCB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSBXaXRoX2RlZmF1bHQuS2V5LmlkIHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBmID0gXyB9ID0gV2l0aF9kZWZhdWx0LmZpbmQgdCBrZXlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBmID0gXyB9IH5kYXRhID0gV2l0aF9kZWZhdWx0LnNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IHsgS2V5LmtleTsgZiA9IF8gfSB+Zjp1cGRhdGUgPSBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOnVwZGF0ZVxuXG4gIGxldCBhZGQgdCB+a2V5OnsgS2V5LmtleTsgZiB9IH5kYXRhID1cbiAgICBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOihmdW4gYWNjIC0+IGYgYWNjIGRhdGEpXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpID0gc3RydWN0XG4gIG9wZW4gV2l0aF9mb2xkXG5cbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgbGlzdCkgS2V5LnRcblxuICAgIGxldCBjcmVhdGUgfm5hbWUgc2V4cF9vZiA9XG4gICAgICBLZXkuY3JlYXRlIH5pbml0OltdIH5mOihmdW4geHMgeCAtPiB4IDo6IHhzKSB+bmFtZSAoTGlzdC5zZXhwX29mX3Qgc2V4cF9vZilcbiAgICA7O1xuXG4gICAgbGV0IGlkID0gV2l0aF9mb2xkLktleS5pZFxuICBlbmRcblxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmRcbiAgfCBTZWNvbmRcbiAgfCBNaW51dGVcbiAgfCBIb3VyXG4gIHwgRGF5XG5bQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBlbnVtZXJhdGUsIGhhc2hdXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFVuaXF1ZV9pZF9pbnRmXG5cbm1vZHVsZSB0eXBlIElkID0gSWRcblxuKCogT25seSBcIm1ha2VcIiBjYW4gY2F1c2UgYSBjb250ZXh0LXN3aXRjaCB0aGF0IG1pZ2h0IGxlYWQgdG8gYSByYWNlLlxuICAgVGh1cyB3ZSBoYXZlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBjZWxsIHJlbWFpbmVkXG4gICB1bmNoYW5nZWQgYWNyb3NzIHRoaXMgY2FsbC4gIFRoZSBzdWJzZXF1ZW50IGNvbXBhcmlzb24sIGRlcmVmZXJlbmNpbmdcbiAgIGFuZCBhc3NpZ25tZW50IGNhbm5vdCBjYXVzZSBjb250ZXh0IHN3aXRjaGVzLiAgSWYgdGhlIGNvbnRlbnRzIG9mIHRoZVxuICAgY2VsbCBoYWQgY2hhbmdlZCwgd2Ugd2lsbCBoYXZlIHRvIHRyeSBhZ2FpbiB0byBvYnRhaW4gYSB1bmlxdWUgaWQuXG4gICBUaGlzIGlzIGVzc2VudGlhbGx5IGxpa2UgYSBzcGluLWxvY2sgYW5kIGlzIHZpcnR1YWxseSBndWFyYW50ZWVkIHRvXG4gICBzdWNjZWVkIHF1aWNrbHkuICopXG5sZXQgcmVjIHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjZWxsIG1ha2UgPVxuICBsZXQgeCA9ICFjZWxsIGluXG4gIGxldCBuZXdfeCA9IG1ha2UgeCBpblxuICBpZiBwaHlzX2VxdWFsICFjZWxsIHhcbiAgdGhlbiAoXG4gICAgY2VsbCA6PSBuZXdfeDtcbiAgICB4KVxuICBlbHNlIHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjZWxsIG1ha2Vcbjs7XG5cbm1vZHVsZSBJbnQgKCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgY3VycmVudCA9IHJlZiB6ZXJvXG4gIGxldCBjcmVhdGUgKCkgPSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY3VycmVudCBzdWNjXG5lbmRcblxubW9kdWxlIEludDYzICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50NjNcblxuICBsZXQgY3VycmVudCA9IHJlZiB6ZXJvXG4gIGxldCBjcmVhdGUgKCkgPSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY3VycmVudCBzdWNjXG5lbmRcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHZlcnkgbXVjaCBkZXBlbmRlbnQgb24gdGhlIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzLiAgU2hvdWxkIHRoZVxuICAgd2F5IHRoZSBjb21waWxlciByZXByZXNlbnRzIHZhcmlvdXMgdHlwZXMgY2hhbmdlLCBpdCBuZWVkcyB0byBiZSByZWZsZWN0ZWQgaW4gdGhpc1xuICAgbW9kdWxlLCBvdGhlcndpc2UgYmFkIHRoaW5ncyBjb3VsZCBoYXBwZW4uICBUaGVyZWZvcmUgdGhlIGNvbnZlcnNpb25zIGFuZFxuICAgcmVwcmVzZW50YXRpb25zIGFyZSB0ZXN0ZWQgdGhvcm91Z2hseSBpbiBbLi4vdGVzdC90ZXN0X3dpdG5lc3MubWxdIGFuZFxuICAgWy4uL3Rlc3QvdGVzdF9jb252ZXJzaW9ucy5tbF1cbiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBIYXNoX3NldCA9IEJhc2UuSGFzaF9zZXRcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICgqIFRoZSBpbnRlZ2VycyBoZXJlIGFyZSB0aGUgdmFsdWVzIHVuZGVybHlpbmcgdGhlIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGV5IGFscmVhZHlcbiAgICAgYXJlIGhhc2hlcyBvZiBjb25zdHJ1Y3RvciBuYW1lcywgYW5kIGhlbmNlIGFyZSBleHBlY3RlZCB0byBiZSB1bmlmb3JtbHlcbiAgICAgZGlzdHJpYnV0ZWQuICopXG4gIGxldCBoYXNoIHggPSB4XG5lbmRcblxubW9kdWxlIEFsbG93ZWRfaW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9uZVxuICAgIHwgQWxsXG4gICAgfCBIYXNoX3NldCBvZiBIYXNoX3NldC5NKEtleSkudFxuICAgIHwgRnJvbV96ZXJvX3RvIG9mIGludFxuXG4gIGxldCBfaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgfCBBbGwgfCBIYXNoX3NldCBfIC0+ICgpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiBhc3NlcnQgKG4gPj0gMClcbiAgOztcblxuICBsZXQgaW50X2lzX3ZhbHVlIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBBbGwgLT4gdHJ1ZVxuICAgIHwgSGFzaF9zZXQgaGFzaF9zZXQgLT4gSGFzaF9zZXQubWVtIGhhc2hfc2V0IGlcbiAgICB8IEZyb21femVyb190byBuIC0+IDAgPD0gaSAmJiBpIDw9IG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSW1tZWRpYWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBbHdheXNcbiAgICB8IFNvbWV0aW1lc1xuICAgIHwgTmV2ZXJcbiAgICB8IFVua25vd25cbiAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBBbHdheXMgLT4gXCJBbHdheXNcIlxuICAgIHwgU29tZXRpbWVzIC0+IFwiU29tZXRpbWVzXCJcbiAgICB8IE5ldmVyIC0+IFwiTmV2ZXJcIlxuICAgIHwgVW5rbm93biAtPiBcIlVua25vd25cIlxuICA7O1xuZW5kXG5cbm9wZW4gSW1tZWRpYWN5XG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAnYSBUeXBlbmFtZS50IC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV93aXRoX25hbWUgOiBzdHJpbmcgLT4gSW1tZWRpYWN5LnQgLT4gQWxsb3dlZF9pbnRzLnQgLT4gXyB0XG4gIHZhbCBpbW1lZGlhY3kgOiBfIHQgLT4gSW1tZWRpYWN5LnRcbiAgdmFsIGFsbG93ZWRfaW50cyA6IF8gdCAtPiBBbGxvd2VkX2ludHMudFxuICB2YWwgdHlwZW5hbWUgOiBfIHQgLT4gc3RyaW5nXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA6IHNpZ1xuICAgIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgICB2YWwgaW50NjQgOiBpbnQ2NCB0XG4gICAgdmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICAgIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICAgIHZhbCBieXRlcyA6IGJ5dGVzIHRcbiAgICB2YWwgYXJyYXkgOiBfIGFycmF5IHRcbiAgICB2YWwgcmVmXyA6IF8gcmVmIHRcbiAgICB2YWwgdHVwbGUyIDogKF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlMyA6IChfICogXyAqIF8pIHRcbiAgICB2YWwgdHVwbGU0IDogKF8gKiBfICogXyAqIF8pIHRcbiAgICB2YWwgdHVwbGU1IDogKF8gKiBfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIGZ1bmN0aW9uXyA6IChfIC0+IF8pIHRcbiAgZW5kXG5cbiAgdmFsIG5ldmVyIDogJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCB1bmtub3duIDogJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCBvcHRpb24gOiBfIHRcbiAgdmFsIGxpc3QgOiBfIHRcbiAgdmFsIG1hZ2ljIDogXyB0IC0+IF8gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdF8gPVxuICAgIHsgaW1tZWRpYWN5IDogSW1tZWRpYWN5LnRcbiAgICA7IGFsbG93ZWRfaW50cyA6IEFsbG93ZWRfaW50cy50XG4gICAgOyB0eXBlbmFtZSA6IHN0cmluZ1xuICAgIH1cblxuICB0eXBlICdhIHQgPSB0X1xuXG4gIGxldCBjcmVhdGVfd2l0aF9uYW1lIHR5cGVuYW1lIGltbWVkaWFjeSBhbGxvd2VkX2ludHMgPVxuICAgIHsgaW1tZWRpYWN5OyBhbGxvd2VkX2ludHM7IHR5cGVuYW1lIH1cbiAgOztcblxuICBsZXQgY3JlYXRlIHR5cGVuYW1lIGltbWVkaWFjeSBhbGxvd2VkX2ludHMgPVxuICAgIGNyZWF0ZV93aXRoX25hbWUgKFR5cGVuYW1lLm5hbWUgdHlwZW5hbWUpIGltbWVkaWFjeSBhbGxvd2VkX2ludHNcbiAgOztcblxuICBsZXQgaW1tZWRpYWN5IHQgPSB0LmltbWVkaWFjeVxuICBsZXQgYWxsb3dlZF9pbnRzIHQgPSB0LmFsbG93ZWRfaW50c1xuICBsZXQgdHlwZW5hbWUgdCA9IHQudHlwZW5hbWVcbiAgbGV0IG1hZ2ljIHQgPSB0XG4gIGxldCBuZXZlcl93aXRoX25hbWUgbmFtZSA9IGNyZWF0ZV93aXRoX25hbWUgbmFtZSBOZXZlciBOb25lXG4gIGxldCBuZXZlciB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBOZXZlciBOb25lXG4gIGxldCB1bmtub3duIHR5cGVuYW1lID0gY3JlYXRlIHR5cGVuYW1lIFVua25vd24gTm9uZVxuXG4gIGxldCBvcHRpb24gPSBjcmVhdGVfd2l0aF9uYW1lIFwib3B0aW9uXCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG4gIGxldCBsaXN0ID0gY3JlYXRlX3dpdGhfbmFtZSBcImxpc3RcIiBTb21ldGltZXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcblxuICBtb2R1bGUgTmV2ZXJfdmFsdWVzID0gc3RydWN0XG4gICAgKCogaW50MzIgaXMgYm94ZWQgZXZlbiBvbiA2NGIgcGxhdGZvcm0gYXQgdGhlIG1vbWVudC4gKilcbiAgICBsZXQgaW50MzIgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQzMlxuICAgIGxldCBpbnQ2NCA9IG5ldmVyIHR5cGVuYW1lX29mX2ludDY0XG4gICAgbGV0IG5hdGl2ZWludCA9IG5ldmVyIHR5cGVuYW1lX29mX25hdGl2ZWludFxuICAgIGxldCBmbG9hdCA9IG5ldmVyIHR5cGVuYW1lX29mX2Zsb2F0XG4gICAgbGV0IHN0cmluZyA9IG5ldmVyIHR5cGVuYW1lX29mX3N0cmluZ1xuICAgIGxldCBieXRlcyA9IG5ldmVyIHR5cGVuYW1lX29mX2J5dGVzXG4gICAgbGV0IGFycmF5ID0gbmV2ZXJfd2l0aF9uYW1lIFwiYXJyYXlcIlxuICAgIGxldCByZWZfID0gbmV2ZXJfd2l0aF9uYW1lIFwicmVmXCJcbiAgICBsZXQgdHVwbGUyID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGUyXCJcbiAgICBsZXQgdHVwbGUzID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGUzXCJcbiAgICBsZXQgdHVwbGU0ID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGU0XCJcbiAgICBsZXQgdHVwbGU1ID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGU1XCJcblxuICAgIGxldCBmdW5jdGlvbl8gPSBuZXZlcl93aXRoX25hbWUgXCJmdW5jdGlvblwiXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW50ID0gY3JlYXRlIHR5cGVuYW1lX29mX2ludCBBbHdheXMgQWxsb3dlZF9pbnRzLkFsbFxubGV0IHVuaXQgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfdW5pdCBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcbmxldCBib29sID0gY3JlYXRlIHR5cGVuYW1lX29mX2Jvb2wgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDEpXG5sZXQgY2hhciA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9jaGFyIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAyNTUpXG5cbm1vZHVsZSBDb21wdXRhdGlvbl9pbXBsID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBUeXBlX2dlbmVyaWMuVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIGVuZClcblxuICBpbmNsdWRlIE5ldmVyX3ZhbHVlc1xuXG4gIGxldCByZWZfIF8gPSByZWZfXG4gIGxldCBhcnJheSBfID0gYXJyYXlcbiAgbGV0IHR1cGxlMiBfIF8gPSB0dXBsZTJcbiAgbGV0IHR1cGxlMyBfIF8gXyA9IHR1cGxlM1xuICBsZXQgdHVwbGU0IF8gXyBfIF8gPSB0dXBsZTRcbiAgbGV0IHR1cGxlNSBfIF8gXyBfIF8gPSB0dXBsZTVcbiAgbGV0IGZ1bmN0aW9uXyBfIF8gPSBmdW5jdGlvbl9cbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuICBsZXQgb3B0aW9uIF8gPSBvcHRpb25cbiAgbGV0IGxpc3QgXyA9IGxpc3RcblxuICAoKiBBbiBbYSBMYXp5LnRdIG1pZ2h0IGJlIGEgYm94ZWQgY2xvc3VyZSwgc28gbXVzdCBoYXZlIGltbWVkaWFjeSBlaXRoZXIgW05ldmVyXSBvclxuICAgICBbU29tZXRpbWVzXS4gIEFuIFthIExhenkudF0gdmFsdWUgY291bGQgYmUgaW1tZWRpYXRlIGlmIFthXSBpcyBpbW1lZGlhdGUuICBCdXQgaWYgW2FdXG4gICAgIGlzIG5ldmVyIGltbWVkaWF0ZSwgdGhlbiBbYSBMYXp5LnRdIGNhbm5vdCBiZS4gKilcbiAgbGV0IGxhenlfdCB0ID1cbiAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICAgIHwgTmV2ZXIgLT4gTmV2ZXJcbiAgICAgIHwgVW5rbm93biAtPiBVbmtub3duXG4gICAgICB8IFNvbWV0aW1lcyB8IEFsd2F5cyAtPiBTb21ldGltZXNcbiAgICBpblxuICAgIGNyZWF0ZV93aXRoX25hbWUgXCJsYXp5X3RcIiBpbW1lZGlhY3kgKGFsbG93ZWRfaW50cyB0KVxuICA7O1xuXG4gIGxldCBwb3NzaWJseV91bmJveGVkIHR5cGVuYW1lIGNoaWxkX3R5cGUgPVxuICAgIG1hdGNoIGltbWVkaWFjeSBjaGlsZF90eXBlIHdpdGhcbiAgICB8IE5ldmVyIC0+IG5ldmVyIHR5cGVuYW1lXG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgU29tZXRpbWVzIC0+IHVua25vd24gdHlwZW5hbWVcbiAgOztcblxuICBsZXQgcmVjb3JkIHIgPVxuICAgIGlmIFJlY29yZC5sZW5ndGggciA+IDFcbiAgICB0aGVuIG5ldmVyIChSZWNvcmQudHlwZW5hbWVfb2ZfdCByKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IChGaWVsZCB0aGVfb25seV9maWVsZCkgPSBSZWNvcmQuZmllbGQgciAwIGluXG4gICAgICBwb3NzaWJseV91bmJveGVkIChSZWNvcmQudHlwZW5hbWVfb2ZfdCByKSAoRmllbGQudHJhdmVyc2UgdGhlX29ubHlfZmllbGQpKVxuICA7O1xuXG4gICgqIFZhcmlhbnRzIHdpdGggYWxsIGNvbnN0cnVjdG9ycyBoYXZpbmcgbm8gYXJndW1lbnRzIGFyZSBhbHdheXMgaW1tZWRpYXRlOyB2YXJpYW50c1xuICAgICB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIHNvbWUgYXJndW1lbnRzIGFyZSBuZXZlciBpbW1lZGlhdGU7IG1peGVkIHZhcmlhbnRzIGFyZVxuICAgICBzb21ldGltZXMgaW1tZWRpYXRlLlxuXG4gICAgIElmIGEgdmFyaWFudCBoYXMgYSBzaW5nbGUgY29uc3RydWN0b3IsIGFuZCB0aGUgY29uc3RydWN0b3IgaGFzIGFuIGFyZ3VtZW50LCB0aGVcbiAgICAgdmFyaWFudCBjYW4gYmUgdW5ib3hlZC4gSWYgdW5ib3hlZCwgZWl0aGVyIGV4cGxpY2l0bHkgb3IgYnkgZGVmYXVsdCAoZGVwZW5kaW5nIG9uXG4gICAgIGNvbXBpbGVyIHNldHRpbmdzKSwgdGhlIHJlcHJlc2VudGF0aW9uIGlzIHNpbXBseSB0aGUgYXJndW1lbnQuIE90aGVyd2lzZSwgdGhlIHJ1bGVzXG4gICAgIGFib3ZlIGFwcGx5IG5vcm1hbGx5LiAqKVxuICBsZXQgdmFyaWFudCB2YXJpYW50ID1cbiAgICBsZXQgbm9fYXJnX2xpc3QsIG9uZV9hcmdfbGlzdCwgbW9yZV9hcmdfbGlzdCA9XG4gICAgICBWYXJpYW50LmZvbGQgdmFyaWFudCB+aW5pdDooW10sIFtdLCBbXSkgfmY6KGZ1biAobm8sIG9uZSwgbW9yZSkgKFRhZyB0IGFzIHRhZykgLT5cbiAgICAgICAgbWF0Y2ggVGFnLmFyaXR5IHQgd2l0aFxuICAgICAgICB8IDAgLT4gdGFnIDo6IG5vLCBvbmUsIG1vcmVcbiAgICAgICAgfCAxIC0+IG5vLCB0YWcgOjogb25lLCBtb3JlXG4gICAgICAgIHwgXyAtPiBubywgb25lLCB0YWcgOjogbW9yZSlcbiAgICBpblxuICAgIG1hdGNoIG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3Qgd2l0aFxuICAgIHwgW10sIFsgVGFnIHRhZyBdLCBbXSB3aGVuIG5vdCAoVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50KSAtPlxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpIChUYWcudHJhdmVyc2UgdGFnKVxuICAgIHwgW10sIFtdLCBbXSAtPlxuICAgICAgKCogV2UgZG9uJ3QgaGF2ZSBhbiBleHBsaWN0IHdheSBvZiBzYXlpbmcgYSB0eXBlIGlzIHVuaW5oYWJpdGVkLiAqKVxuICAgICAgdW5rbm93biAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpXG4gICAgfCBbXSwgXyA6OiBfLCBfIHwgW10sIF8sIF8gOjogXyAtPiBuZXZlciAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpXG4gICAgfCBfIDo6IF8sIF8sIF8gLT5cbiAgICAgIGxldCBub19hcmdfY291bnQgPSBMaXN0Lmxlbmd0aCBub19hcmdfbGlzdCBpblxuICAgICAgbGV0IGFsbG93ZWRfaW50cyA9XG4gICAgICAgIGlmIG5vdCAoVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50KVxuICAgICAgICB0aGVuIEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gKG5vX2FyZ19jb3VudCAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBoYXNoX3NldCA9IEhhc2hfc2V0LmNyZWF0ZSAobW9kdWxlIEtleSkgfnNpemU6KG5vX2FyZ19jb3VudCAqIDIpIGluXG4gICAgICAgICAgTGlzdC5pdGVyIG5vX2FyZ19saXN0IH5mOihmdW4gKFRhZyB0YWcpIC0+XG4gICAgICAgICAgICBtYXRjaCBUYWcuY3JlYXRlIHRhZyB3aXRoXG4gICAgICAgICAgICB8IFRhZy5Db25zdCBfIC0+IEhhc2hfc2V0LmFkZCBoYXNoX3NldCAoVGFnLm9jYW1sX3JlcHIgdGFnKVxuICAgICAgICAgICAgfCBUYWcuQXJncyBfIC0+IGFzc2VydCBmYWxzZSk7XG4gICAgICAgICAgQWxsb3dlZF9pbnRzLkhhc2hfc2V0IGhhc2hfc2V0KVxuICAgICAgaW5cbiAgICAgIGxldCBpbW1lZGlhY3kgPVxuICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IG9uZV9hcmdfbGlzdCAmJiBMaXN0LmlzX2VtcHR5IG1vcmVfYXJnX2xpc3RcbiAgICAgICAgdGhlbiBBbHdheXNcbiAgICAgICAgZWxzZSBTb21ldGltZXNcbiAgICAgIGluXG4gICAgICBjcmVhdGUgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IG5hbWUgPSBcImlzX2ltbWVkaWF0ZVwiXG4gIGxldCByZXF1aXJlZCA9IFtdXG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXRcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9ICgpXG4gICAgZW5kXG5cbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCByZWZcblxuICAgICgqIFRoZSBkZWZhdWx0IHdpdG5lc3MgLSB3aGljaCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgW2luaXRdIGFuZCByZWNvdmVyZWQgYXQgYW55IGxhdGVyXG4gICAgICAgcG9pbnQgYnkgY2FsbGluZyBbZ2V0X3dpcF9jb21wdXRhdGlvbl0gLSBjYW4gb25seSBiZSB1c2VkIGluIGEgcmVjdXJzaXZlIHR5cGUuXG4gICAgICAgT3RoZXIgdHlwZXMgdGhhdCBkb24ndCB1c2UgW2dldF93aXBfY29tcHV0YXRpb25dIHdpbGwganVzdCBldmFsdWF0ZSB0byB0aGUgYWN0dWFsXG4gICAgICAgd2l0bmVzcyB3aGljaCB3aWxsIHJlcGxhY2UgdGhlIGluaXRpYWwgZHVtbXkgb25lLiAqKVxuICAgIGxldCBpbml0IF8gbmFtZSA9IHJlZiAoY3JlYXRlIG5hbWUgU29tZXRpbWVzIEFsbG93ZWRfaW50cy5Ob25lKVxuICAgIGxldCBnZXRfd2lwX2NvbXB1dGF0aW9uIGNvbXAgPSAhY29tcFxuXG4gICAgbGV0IHNldF9maW5hbF9jb21wdXRhdGlvbiByIHQgPVxuICAgICAgciA6PSB0O1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgc2hhcmUgXyA9IHRydWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEdlbmVyaWMgPSBUeXBlX2dlbmVyaWMuTWFrZSAoQ29tcHV0YXRpb25faW1wbClcblxubGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gIGxldCAoYGdlbmVyaWMgdCkgPSBHZW5lcmljLm9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICB0XG47O1xuXG5tb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChNIDogc2lnXG4gICAgdmFsIGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCB3aXRuZXNzIHR5cGVyZXAxIHR5cGVyZXAyID1cbiAgICBsZXQgdDEgPSBvZl90eXBlcmVwIHR5cGVyZXAxIGluXG4gICAgbGV0IHQyID0gb2ZfdHlwZXJlcCB0eXBlcmVwMiBpblxuICAgIGxldCBpMSA9IGltbWVkaWFjeSB0MSBpblxuICAgIGxldCBpMiA9IGltbWVkaWFjeSB0MiBpblxuICAgIGlmIG5vdCAoSW1tZWRpYWN5LmVxdWFsIGkxIGkyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgIFwidHlwZSAlcyBpcyBub3QgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50c1wiXG4gICAgICAgICAgIChUeXBlbmFtZS5uYW1lIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgdHlwZXJlcDEpKSlcbiAgICBlbHNlIGlmIG5vdCAoSW1tZWRpYWN5LmVxdWFsIGkxIE0uaW1tZWRpYWN5KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgIFwidHlwZSAlcyBkb2VzIG5vdCBoYXZlIGRlc2lyZWQgaW1tZWRpYWN5OiB3YW50ZWQgJXMgYnV0IGdvdCAlc1wiXG4gICAgICAgICAgIChUeXBlbmFtZS5uYW1lIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgdHlwZXJlcDEpKVxuICAgICAgICAgICAoSW1tZWRpYWN5LnRvX3N0cmluZyBNLmltbWVkaWFjeSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgaTEpKVxuICAgIGVsc2UgdDFcbiAgOztcblxuICAoKiBhbHdheXMgaW1tZWRpYXRlICopXG4gIGxldCByYSA9IFR5cGVyZXAuSW50XG5cbiAgKCogbmV2ZXIgaW1tZWRpYXRlICopXG4gIGxldCBybiA9IFR5cGVyZXAuU3RyaW5nXG5cbiAgKCogRWFjaCBvZiB0aGUgW0Zvcl9hbGxfcGFyYW1ldGVyc18qXSBmdW5jdG9ycyB3b3JrcyBieSBpbnN0YW50aWF0aW5nIHRoZSBuLWFyeSB0eXBlXG4gICAgIHdpdGggYWxsIFtBbHdheXNdIHR5cGVzLCBhbmQgdGhlbiB3aXRoIGFsbCBbTmV2ZXJdIHR5cGVzLiAgSWYgdGhvc2UgcHJvZHVjZSB0aGUgc2FtZVxuICAgICBpbW1lZGlhY3ksIHRoZW4gd2UgY29uY2x1ZGUgdGhhdCB0aGUgbi1hcnkgdHlwZSBpcyBpbmRlcGVuZGVudCBvZiBpdHMgYXJndW1lbnRzLiAqKVxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzEgKFggOiBUeXBlcmVwYWJsZS5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhKSAoWC50eXBlcmVwX29mX3Qgcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzIgKFggOiBUeXBlcmVwYWJsZS5TMikgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzMgKFggOiBUeXBlcmVwYWJsZS5TMykgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzQgKFggOiBUeXBlcmVwYWJsZS5TNCkgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhIHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4gcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzUgKFggOiBUeXBlcmVwYWJsZS5TNSkgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhIHJhIHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4gcm4gcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuZW5kXG5cbmxldCBpbnRfaXNfdmFsdWUgdCBpbnQgPSBBbGxvd2VkX2ludHMuaW50X2lzX3ZhbHVlIChhbGxvd2VkX2ludHMgdCkgaW50XG5cbmxldCBpbnRfYXNfdmFsdWUgKHR5cGUgYSkgKHQgOiBhIHQpIGludCA9XG4gIGlmIGludF9pc192YWx1ZSB0IGludCB0aGVuIFNvbWUgKE9iai5tYWdpYyAoaW50IDogaW50KSA6IGEpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF9hc192YWx1ZV9leG4gKHR5cGUgYSkgKHQgOiBhIHQpIGludCA9XG4gIGlmIGludF9pc192YWx1ZSB0IGludFxuICB0aGVuIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUuaW50X2FzX3ZhbHVlX2V4bjogdHlwZW5hbWU6JVMgaW50OiVkXCIgKFQudHlwZW5hbWUgdCkgaW50KVxuOztcblxubGV0IHZhbHVlX2FzX2ludF9leG4gKHR5cGUgYSkgKHQgOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKVxuICB0aGVuIChPYmoubWFnaWMgKGEgOiBhKSA6IGludClcbiAgZWxzZSBmYWlsd2l0aCAoc3ByaW50ZiBcIkltbWVkaWF0ZS52YWx1ZV9hc19pbnRfZXhuOiB0eXBlbmFtZTolU1wiIChULnR5cGVuYW1lIHQpKVxuOztcblxubGV0IHZhbHVlX2FzX2ludCAodHlwZSBhKSAoXyA6IGEgdCkgYSA9XG4gIGlmIE9iai5pc19pbnQgKE9iai5yZXByIGEpIHRoZW4gU29tZSAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpIGVsc2UgTm9uZVxuOztcblxubGV0IHZhbHVlX2lzX2ludCAodHlwZSBhKSAoXyA6IGEgdCkgYSA9IE9iai5pc19pbnQgKE9iai5yZXByIGEpXG5cbm1vZHVsZSBBbHdheXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gQWx3YXlzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgQWx3YXlzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IE5ldmVyIHwgU29tZXRpbWVzIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldFtAaW5saW5lIGFsd2F5c10gdmFsdWVfYXNfaW50ICh0eXBlIGEpIF8gYSA9IGEgfD4gKE9iai5tYWdpYyA6IGEgLT4gaW50KVxuICBsZXQgaW50ID0gaW50XG4gIGxldCBjaGFyID0gY2hhclxuICBsZXQgYm9vbCA9IGJvb2xcbiAgbGV0IHVuaXQgPSB1bml0XG5lbmRcblxubW9kdWxlIFNvbWV0aW1lcyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBTb21ldGltZXNcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBTb21ldGltZXMgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgTmV2ZXIgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG4gIGxldCBpbnRfYXNfdmFsdWUgPSBpbnRfYXNfdmFsdWVcbiAgbGV0IGludF9hc192YWx1ZV9leG4gPSBpbnRfYXNfdmFsdWVfZXhuXG4gIGxldCBpbnRfaXNfdmFsdWUgPSBpbnRfaXNfdmFsdWVcbiAgbGV0IHZhbHVlX2FzX2ludCA9IHZhbHVlX2FzX2ludFxuICBsZXQgdmFsdWVfYXNfaW50X2V4biA9IHZhbHVlX2FzX2ludF9leG5cbiAgbGV0IHZhbHVlX2lzX2ludCA9IHZhbHVlX2lzX2ludFxuICBsZXQgb3B0aW9uID0gb3B0aW9uXG4gIGxldCBsaXN0ID0gbGlzdFxuZW5kXG5cbm1vZHVsZSBOZXZlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBOZXZlclxuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IE5ldmVyIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcblxuICBpbmNsdWRlIE5ldmVyX3ZhbHVlc1xuZW5kXG5cbnR5cGUgJ2EgZGVzdCA9XG4gIHwgQWx3YXlzIG9mICdhIEFsd2F5cy50XG4gIHwgU29tZXRpbWVzIG9mICdhIFNvbWV0aW1lcy50XG4gIHwgTmV2ZXIgb2YgJ2EgTmV2ZXIudFxuICB8IFVua25vd25cblxubGV0IGRlc3QgdCA9XG4gIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgfCBBbHdheXMgLT4gQWx3YXlzIHRcbiAgfCBTb21ldGltZXMgLT4gU29tZXRpbWVzIHRcbiAgfCBOZXZlciAtPiBOZXZlciB0XG4gIHwgVW5rbm93biAtPiBVbmtub3duXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFQxIDogVCkgKFQyIDogVCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVDEudCAqIFQyLnRcbmVuZFxuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBzZXhwLCB0eXBlcmVwXVxuXG4gIGxldCBjcmVhdGUgYSBiID0gYSwgYlxuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIC0+IGYgKGEsIGIpXG4gIDs7XG5cbiAgbGV0IHVuY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIChhLCBiKSAtPiBmIGEgYlxuICA7O1xuXG4gIFslJWlmIGZsYW1iZGFfYmFja2VuZF1cblxuICBleHRlcm5hbCBnZXQxIDogKCdhLCBfKSB0IC0+ICdhID0gXCIlZmllbGQwX2ltbXV0XCJcbiAgZXh0ZXJuYWwgZ2V0MiA6IChfLCAnYSkgdCAtPiAnYSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCdhLCBfKSB0IC0+ICdhID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgZ2V0MiA6IChfLCAnYSkgdCAtPiAnYSA9IFwiJWZpZWxkMVwiXG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IG1hcCAoeCwgeSkgfmYgPSBmIHgsIGYgeVxuICBsZXQgbWFwX2ZzdCAoeCwgeSkgfmYgPSBmIHgsIHlcbiAgbGV0IG1hcF9zbmQgKHgsIHkpIH5mID0geCwgZiB5XG4gIGxldCBtYXAyICh4MSwgeTEpICh4MiwgeTIpIH5mID0gZiB4MSB4MiwgZiB5MSB5MlxuXG4gIGxldCBjb21wYXJlIH5jbXAxIH5jbXAyICh4LCB5KSAoeCcsIHknKSA9XG4gICAgbWF0Y2ggY21wMSB4IHgnIHdpdGhcbiAgICB8IDAgLT4gY21wMiB5IHknXG4gICAgfCBpIC0+IGlcbiAgOztcblxuICBsZXQgZXF1YWwgfmVxMSB+ZXEyICh4LCB5KSAoeCcsIHknKSA9IGVxMSB4IHgnICYmIGVxMiB5IHknXG4gIGxldCBzd2FwIChhLCBiKSA9IGIsIGFcblxuICBpbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZDIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbXBhcmUgY21wMSBjbXAyID0gY29tcGFyZSB+Y21wMSB+Y21wMlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgVDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBzZXhwLCB0eXBlcmVwXVxuXG4gIGxldCBjcmVhdGUgYSBiIGMgPSBhLCBiLCBjXG5cbiAgbGV0IGN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biBhIGIgYyAtPiBmIChhLCBiLCBjKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYiwgYykgLT4gZiBhIGIgY1xuICA7O1xuXG4gIGxldCBtYXAgKHgsIHksIHopIH5mID0gZiB4LCBmIHksIGYgelxuICBsZXQgbWFwX2ZzdCAoeCwgeSwgeikgfmYgPSBmIHgsIHksIHpcbiAgbGV0IG1hcF9zbmQgKHgsIHksIHopIH5mID0geCwgZiB5LCB6XG4gIGxldCBtYXBfdHJkICh4LCB5LCB6KSB+ZiA9IHgsIHksIGYgelxuICBsZXQgbWFwMiAoeDEsIHkxLCB6MSkgKHgyLCB5MiwgejIpIH5mID0gZiB4MSB4MiwgZiB5MSB5MiwgZiB6MSB6MlxuXG4gIFslJWlmIGZsYW1iZGFfYmFja2VuZF1cblxuICBleHRlcm5hbCBnZXQxIDogKCdhLCBfLCBfKSB0IC0+ICdhID0gXCIlZmllbGQwX2ltbXV0XCJcbiAgZXh0ZXJuYWwgZ2V0MiA6IChfLCAnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCdhLCBfLCBfKSB0IC0+ICdhID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgZ2V0MiA6IChfLCAnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMVwiXG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogVGhlcmUncyBubyAlZmllbGQyLi4uLiopXG4gIGxldCBnZXQzIChfLCBfLCBhKSA9IGFcblxuICAoKiBsZXhpY29ncmFwaGljIGNvbXBhcmlzb24gICopXG4gIGxldCBjb21wYXJlIH5jbXAxIH5jbXAyIH5jbXAzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPVxuICAgIGxldCBjMSA9IGNtcDEgeCB4JyBpblxuICAgIGlmIGMxIDw+IDBcbiAgICB0aGVuIGMxXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYzIgPSBjbXAyIHkgeScgaW5cbiAgICAgIGlmIGMyIDw+IDAgdGhlbiBjMiBlbHNlIGNtcDMgeiB6JylcbiAgOztcblxuICBsZXQgZXF1YWwgfmVxMSB+ZXEyIH5lcTMgKHgsIHksIHopICh4JywgeScsIHonKSA9IGVxMSB4IHgnICYmIGVxMiB5IHknICYmIGVxMyB6IHonXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyYWJsZV9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNoZXJfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIFNleHBhYmxlIChTMSA6IFNleHBhYmxlLlMpIChTMiA6IFNleHBhYmxlLlMpID0gc3RydWN0XG4gIHR5cGUgdCA9IFMxLnQgKiBTMi50IFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubW9kdWxlIEJpbmFibGUgKEIxIDogQmluYWJsZS5TKSAoQjIgOiBCaW5hYmxlLlMpID0gc3RydWN0XG4gIHR5cGUgdCA9IEIxLnQgKiBCMi50IFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgQ29tcGFyYXRvciAoUzEgOiBDb21wYXJhdG9yLlMpIChTMiA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChTMSkgKFMyKVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID1cbiAgICAoUzEuY29tcGFyYXRvcl93aXRuZXNzLCBTMi5jb21wYXJhdG9yX3dpdG5lc3MpIFQyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVDIuY29tcGFyYXRvciBTMS5jb21wYXJhdG9yIFMyLmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgQ29tcGFyYWJsZV9wbGFpbiAoUzEgOiBDb21wYXJhYmxlLlNfcGxhaW4pIChTMiA6IENvbXBhcmFibGUuU19wbGFpbikgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IgKFMxKSAoUzIpXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gY29tcGFyYXRvci5zZXhwX29mX3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGUgKFMxIDogQ29tcGFyYWJsZV9zZXhwYWJsZSkgKFMyIDogQ29tcGFyYWJsZV9zZXhwYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBhYmxlIChTMSkgKFMyKVxuXG4gICAgbGV0IGNvbXBhcmUgKHMxLCBzMikgKHMxJywgczInKSA9XG4gICAgICBtYXRjaCBTMS5jb21wYXJlIHMxIHMxJyB3aXRoXG4gICAgICB8IDAgLT4gUzIuY29tcGFyZSBzMiBzMidcbiAgICAgIHwgeCAtPiB4XG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBIYXNoZXIgKEgxIDogSGFzaGVyX3NleHBhYmxlKSAoSDIgOiBIYXNoZXJfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSDEudCAqIEgyLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyX3NleHBhYmxlX29mX2hhc2hhYmxlX3NleHBhYmxlIChTIDogSGFzaGFibGVfc2V4cGFibGUpIDpcbiAgSGFzaGVyX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gUy50ID0gc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZV90IChTMSA6IEhhc2hhYmxlX3NleHBhYmxlKSAoUzIgOiBIYXNoYWJsZV9zZXhwYWJsZSkgPVxuICBIYXNoZXJcbiAgICAoSGFzaGVyX3NleHBhYmxlX29mX2hhc2hhYmxlX3NleHBhYmxlXG4gICAgICAgKFMxKSlcbiAgICAoSGFzaGVyX3NleHBhYmxlX29mX2hhc2hhYmxlX3NleHBhYmxlIChTMikpXG5cbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlX3RcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFN1blxuICAgICAgICB8IE1vblxuICAgICAgICB8IFR1ZVxuICAgICAgICB8IFdlZFxuICAgICAgICB8IFRodVxuICAgICAgICB8IEZyaVxuICAgICAgICB8IFNhdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrXVxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gXCJTVU5cIlxuICAgICAgICB8IE1vbiAtPiBcIk1PTlwiXG4gICAgICAgIHwgVHVlIC0+IFwiVFVFXCJcbiAgICAgICAgfCBXZWQgLT4gXCJXRURcIlxuICAgICAgICB8IFRodSAtPiBcIlRIVVwiXG4gICAgICAgIHwgRnJpIC0+IFwiRlJJXCJcbiAgICAgICAgfCBTYXQgLT4gXCJTQVRcIlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZ19sb25nIHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gXCJTdW5kYXlcIlxuICAgICAgICB8IE1vbiAtPiBcIk1vbmRheVwiXG4gICAgICAgIHwgVHVlIC0+IFwiVHVlc2RheVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV2VkbmVzZGF5XCJcbiAgICAgICAgfCBUaHUgLT4gXCJUaHVyc2RheVwiXG4gICAgICAgIHwgRnJpIC0+IFwiRnJpZGF5XCJcbiAgICAgICAgfCBTYXQgLT4gXCJTYXR1cmRheVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nX2ludGVybmFsIHMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcudXBwZXJjYXNlIHMgd2l0aFxuICAgICAgICB8IFwiU1VOXCIgfCBcIlNVTkRBWVwiIC0+IFN1blxuICAgICAgICB8IFwiTU9OXCIgfCBcIk1PTkRBWVwiIC0+IE1vblxuICAgICAgICB8IFwiVFVFXCIgfCBcIlRVRVNEQVlcIiAtPiBUdWVcbiAgICAgICAgfCBcIldFRFwiIHwgXCJXRURORVNEQVlcIiAtPiBXZWRcbiAgICAgICAgfCBcIlRIVVwiIHwgXCJUSFVSU0RBWVwiIC0+IFRodVxuICAgICAgICB8IFwiRlJJXCIgfCBcIkZSSURBWVwiIC0+IEZyaVxuICAgICAgICB8IFwiU0FUXCIgfCBcIlNBVFVSREFZXCIgLT4gU2F0XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2ludF9leG4gaSA9XG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICB8IDAgLT4gU3VuXG4gICAgICAgIHwgMSAtPiBNb25cbiAgICAgICAgfCAyIC0+IFR1ZVxuICAgICAgICB8IDMgLT4gV2VkXG4gICAgICAgIHwgNCAtPiBUaHVcbiAgICAgICAgfCA1IC0+IEZyaVxuICAgICAgICB8IDYgLT4gU2F0XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuOiAlZFwiIGkgKClcbiAgICAgIDs7XG5cbiAgICAgICgqIEJlIHZlcnkgZ2VuZXJvdXMgd2l0aCBvZl9zdHJpbmcuICBXZSBhY2NlcHQgYWxsIHBvc3NpYmxlIGNhcGl0YWxpemF0aW9ucyBhbmQgdGhlXG4gICAgICAgICBpbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBhcyB3ZWxsLiAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IG9mX3N0cmluZ19pbnRlcm5hbCBzIHdpdGhcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgKHRyeSBvZl9pbnRfZXhuIChJbnQub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpKVxuICAgICAgOztcblxuICAgICAgKCogdGhpcyBpcyBpbiBUIHJhdGhlciB0aGFuIG91dHNpZGUgc28gdGhhdCB0aGUgbGF0ZXIgZnVuY3RvciBhcHBsaWNhdGlvbiB0byBidWlsZCBtYXBzXG4gICAgICAgICB1c2VzIHRoaXMgc2V4cCByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGVuZClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgKENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKSA6IENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVW5zdGFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoVW5zdGFibGUpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxLlVuc3RhYmxlXG5cbmxldCB3ZWVrZGF5cyA9IFsgTW9uOyBUdWU7IFdlZDsgVGh1OyBGcmkgXVxubGV0IHdlZWtlbmRzID0gWyBTYXQ7IFN1biBdXG5cbigqIHdyaXR0ZW4gb3V0IHRvIHNhdmUgb3ZlcmhlYWQgd2hlbiBsb2FkaW5nIG1vZHVsZXMuICBUaGUgbWVtYmVycyBvZiB0aGUgc2V0IGFuZCB0aGVcbiAgIG9yZGVyaW5nIHNob3VsZCBuZXZlciBjaGFuZ2UsIHNvIHNwZWVkIHdpbnMgb3ZlciBzb21ldGhpbmcgbW9yZSBjb21wbGV4IHRoYXQgcHJvdmVzXG4gICB0aGUgb3JkZXIgPSB0aGUgb3JkZXIgaW4gdCBhdCBydW50aW1lICopXG5sZXQgYWxsID0gWyBTdW47IE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpOyBTYXQgXVxuXG5sZXQgb2ZfaW50IGkgPVxuICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgdG9faW50IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdW4gLT4gMFxuICB8IE1vbiAtPiAxXG4gIHwgVHVlIC0+IDJcbiAgfCBXZWQgLT4gM1xuICB8IFRodSAtPiA0XG4gIHwgRnJpIC0+IDVcbiAgfCBTYXQgLT4gNlxuOztcblxubGV0IGlzb184NjAxX3dlZWtkYXlfbnVtYmVyIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBNb24gLT4gMVxuICB8IFR1ZSAtPiAyXG4gIHwgV2VkIC0+IDNcbiAgfCBUaHUgLT4gNFxuICB8IEZyaSAtPiA1XG4gIHwgU2F0IC0+IDZcbiAgfCBTdW4gLT4gN1xuOztcblxubGV0IG51bV9kYXlzX2luX3dlZWsgPSA3XG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoSW50LiggJSApICh0b19pbnQgdCArIGkpIG51bV9kYXlzX2luX3dlZWspXG5cbmxldCBudW1fZGF5cyB+ZnJvbSB+dG9fID1cbiAgbGV0IGQgPSB0b19pbnQgdG9fIC0gdG9faW50IGZyb20gaW5cbiAgaWYgSW50LihkIDwgMCkgdGhlbiBkICsgbnVtX2RheXNfaW5fd2VlayBlbHNlIGRcbjs7XG5cbmxldCBpc19zdW5fb3Jfc2F0IHQgPSB0ID0gU3VuIHx8IHQgPSBTYXRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgIHwgVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubGV0IG1vZHVsZV9uYW1lID0gXCJEaWdpdF9zdHJpbmdfaGVscGVyc1wiXG5sZXQgaW50NjNfdHdvID0gSW50NjMub2ZfaW50IDJcbmxldCBpbnQ2M190ZW4gPSBJbnQ2My5vZl9pbnQgMTBcbmxldCBpbnQ2M190d2VudHkgPSBJbnQ2My5vZl9pbnQgMjBcbmxldCBpbnQ2M19iaWxsaW9uID0gSW50NjMub2ZfaW50IDFfMDAwXzAwMF8wMDBcbmxldCBtYXhfYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfYmlsbGlvblxuXG5sZXQgcmVjIGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBuID1cbiAgaWYgSW50NjMuKCA8ICkgbiBpbnQ2M190ZW5cbiAgdGhlbiAxXG4gIGVsc2UgSW50LnN1Y2MgKGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyAoSW50NjMuKCAvICkgbiBpbnQ2M190ZW4pKVxuOztcblxubGV0IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWUgPSBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgSW50NjMubWF4X3ZhbHVlXG5cbmxldCByZWMgbWF4X2ludDYzX3dpdGggfmRpZ2l0cyA9XG4gIG1hdGNoIGRpZ2l0cyB3aXRoXG4gIHwgMSAtPiBJbnQ2My5vZl9pbnQgOVxuICB8IDIgLT4gSW50NjMub2ZfaW50IDk5XG4gIHwgMyAtPiBJbnQ2My5vZl9pbnQgOTk5XG4gIHwgNCAtPiBJbnQ2My5vZl9pbnQgOV85OTlcbiAgfCA1IC0+IEludDYzLm9mX2ludCA5OV85OTlcbiAgfCA2IC0+IEludDYzLm9mX2ludCA5OTlfOTk5XG4gIHwgNyAtPiBJbnQ2My5vZl9pbnQgOV85OTlfOTk5XG4gIHwgOCAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5Xzk5OVxuICB8IDkgLT4gSW50NjMub2ZfaW50IDk5OV85OTlfOTk5XG4gIHwgXyAtPlxuICAgIGlmIGRpZ2l0cyA+PSBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlXG4gICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICBlbHNlIChcbiAgICAgIGxldCBiaWxsaW9ucyA9IEludDYzLnN1Y2MgKG1heF9pbnQ2M193aXRoIH5kaWdpdHM6KGRpZ2l0cyAtIDkpKSBpblxuICAgICAgSW50NjMucHJlZCAoSW50NjMuKCAqICkgaW50NjNfYmlsbGlvbiBiaWxsaW9ucykpXG47O1xuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGxldCB1bnNhZmVfY2hhcl9vZl9kaWdpdCBuID0gQ2hhci51bnNhZmVfb2ZfaW50IChDaGFyLnRvX2ludCAnMCcgKyBuKVxuICBsZXQgZGlnaXRfb2ZfY2hhciBjaGFyID0gQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXJcblxuICBsZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnl0ZXMgcG9zICh1bnNhZmVfY2hhcl9vZl9kaWdpdCBpbnQpXG4gIDs7XG5cbiAgbGV0IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IGludCAvIDEwIGluXG4gICAgbGV0IG9uZXMgPSBpbnQgLSAodGVucyAqIDEwKSBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3Mgb25lcztcbiAgICB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDEpIGludCBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAyKSBpbnQgaW5cbiAgICB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMykgaW50IGluXG4gICAgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDQpIGludCBpblxuICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA1KSBpbnQgaW5cbiAgICB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNikgaW50IGluXG4gICAgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDcpIGludCBpblxuICAgIHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA4KSBpbnQgaW5cbiAgICB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvcyBpbnQ2MyA9XG4gICAgbGV0IGJpbGxpb25zID0gSW50NjMuKCAvICkgaW50NjMgaW50NjNfYmlsbGlvbiBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2My4oIC0gKSBpbnQ2MyAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgaW5cbiAgICB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIHJlbWFpbmRlcik7XG4gICAgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVjIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDIgLT4gd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDMgLT4gd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDQgLT4gd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDUgLT4gd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDYgLT4gd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDcgLT4gd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDggLT4gd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDkgLT4gd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPVxuICAgICAgICByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpIGludDYzXG4gICAgICBpblxuICAgICAgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID0gZGlnaXRfb2ZfY2hhciAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nIHBvcylcblxuICBsZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAxKVxuICA7O1xuXG4gIGxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDIpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMylcbiAgOztcblxuICBsZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA0KVxuICA7O1xuXG4gIGxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDUpXG4gIDs7XG5cbiAgbGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNilcbiAgOztcblxuICBsZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA3KVxuICA7O1xuXG4gIGxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDgpXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludDYzX292ZXJmbG93IG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBvdmVyZmxvdyByZWFkaW5nIGludDYzXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gIGxldCByZWMgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAyIC0+IEludDYzLm9mX2ludCAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDMgLT4gSW50NjMub2ZfaW50IChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA1IC0+IEludDYzLm9mX2ludCAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDYgLT4gSW50NjMub2ZfaW50IChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA4IC0+IEludDYzLm9mX2ludCAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDkgLT4gSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPVxuICAgICAgICBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykpXG4gICAgICBpblxuICAgICAgaWYgSW50NjMuKCA+ICkgYmlsbGlvbnMgbWF4X2JpbGxpb25zIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBsZXQgc3VtID0gSW50NjMuKCArICkgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIHJlbWFpbmRlciBpblxuICAgICAgaWYgSW50NjMuKCA8ICkgc3VtIEludDYzLnplcm8gdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIHN1bVxuICA7O1xuXG4gIGxldCBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgKG51bWVyYXRvciArIGRlbm9taW5hdG9yIC0gSW50NjMub25lKSAvJSBkZW5vbWluYXRvclxuICA7O1xuXG4gIGxldCByYWlzZV9pbnZhbGlkX2RlY2ltYWwgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGludmFsaWQgZGVjaW1hbCBjaGFyYWN0ZXJcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgKCogUmVhZHMgdGhlIHBvcnRpb24gb2Ygc3RyaW5nIGJldHdlZW4gW3Bvc10gYW5kIFtwb3MrZGVjaW1hbHMtMV0sIGluY2x1c2l2ZSwgYW5kXG4gICAgIGludGVycGVyZXRzIGl0IGFzIGEgcG9zaXRpdmUgZGVjaW1hbCBwYXJ0IG9mIGEgbnVtYmVyLCB3aGljaCB3ZSBjYWxsIFt4XS5cblxuICAgICBMZXQgW2ldIGFuZCBbcl0gYmUgdGhlIGludGVnZXIgcGFydCBhbmQgcmVtYWluaW5nIGZyYWN0aW9uYWwgcGFydCBvZlxuICAgICBbeCAqIHNjYWxlIC8gZGl2aXNvcl0uXG5cbiAgICAgSWYgW3IgPCByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0uXG4gICAgIElmIFtyID0gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldIG9yIFtpKzFdIGJhc2VkIG9uIFtyb3VuZF9leGFjdF0uXG4gICAgIElmIFtyID4gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2krMV0uXG5cbiAgICAgQXNzdW1lcyB3aXRob3V0IGNoZWNraW5nIHRoYXQgW3NjYWxlXSBhbmQgW2Rpdmlzb3JdIGFyZSBib3RoIHBvc2l0aXZlIGFuZFxuICAgICBsZXNzIHRoYW4gW0ludDYzLm1heF92YWx1ZSAvIDEwXSAodG8gYXZvaWQgaW50ZXJuYWwgb3ZlcmZsb3cgZHVyaW5nIHRoZSBhbGdvcml0aG1cbiAgICAgd2hlbiBtdWx0aXBseWluZyBieSAxMCksIGFuZCB0aGF0IFtyb3VuZF9hdCA+PSAwXSBhbmQgW3JvdW5kX2F0IDwgZGl2aXNvcl0uICopXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnBvczpzdGFydFxuICAgICAgICB+ZGVjaW1hbHNcbiAgICAgICAgfnNjYWxlXG4gICAgICAgIH5kaXZpc29yXG4gICAgICAgIH5yb3VuZF9hdFxuICAgICAgICB+cm91bmRfZXhhY3RcbiAgICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgICA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCB1bnRpbCA9IEludC4oICsgKSBzdGFydCBkZWNpbWFscyBpblxuICAgICgqIFRoZSBsb29wIGludmFyaWFudCBpcyB0aGF0IGVhY2ggaXRlcmF0aW9uLCB3ZSBzdHJpcCBvZmYgdGhlIG5leHQgZGVjaW1hbCBkaWdpdCBhbmRcbiAgICAgICB1cGRhdGUgW3N1bV0sIFtyb3VuZF9hdF0sIGFuZCBbZGl2aXNvcl0gc3VjaCB0aGF0IHRoZSBkZXNpcmVkIHJlc3VsdCBpczpcblxuICAgICAgIFsgc3VtICsgcm91bmQocmVtYWluaW5nX2RpZ2l0c19vZl94X3BhcnNlZF9hc19kZWNpbWFsICogc2NhbGUgLyBkaXZpc29yKSBdXG4gICAgICAgd2hlcmUgXCJyb3VuZFwiIHJvdW5kcyBiYXNlZCBvbiB0aGUgbmV3IHZhbHVlIG9mIFtyb3VuZF9hdF0uXG4gICAgKilcbiAgICBsZXQgZGl2aXNvciA9IHJlZiBkaXZpc29yIGluXG4gICAgbGV0IHJvdW5kX2F0ID0gcmVmIHJvdW5kX2F0IGluXG4gICAgbGV0IHN1bSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgbGV0IHBvcyA9IHJlZiBzdGFydCBpblxuICAgICgqIFN0b3AgaWYgd2UgcnVuIG91dCBvZiBjaGFyYWN0ZXJzLCBvciBpZiBmdXJ0aGVyIGRpZ2l0cyBjYW5ub3QgaW5jcmVhc2Ugb3VyIHN1bS4gKilcbiAgICB3aGlsZSBJbnQuKCA8PiApICFwb3MgdW50aWwgJiYgIXJvdW5kX2F0IDwgc2NhbGUgZG9cbiAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgfCAnMCcgLi4gJzknIGFzIGNoYXIgLT5cbiAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoZGlnaXRfb2ZfY2hhciBjaGFyKSBpblxuICAgICAgICAgKCogRXZlcnkgbmV3IGRlY2ltYWwgcGxhY2UgaW1wbGljaXRseSBzY2FsZXMgb3VyIG51bWVyYXRvciBieSBhIGZhY3RvciBvZiB0ZW4sXG4gICAgICAgICAgICBzbyBtdXN0IGFsc28gZWZmZWN0aXZlbHkgc2NhbGUgb3VyIGRlbm9taW5hdG9yLlxuXG4gICAgICAgICAgICAwLmFiY2RlZiAqIHNjYWxlL2Rpdmlzb3IgICAgICAgIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlLyhkaXZpc29yKjEwKSAgW3JvdW5kIGF0IHJvdW5kX2F0KjEwXVxuXG4gICAgICAgICAgICBUaGVuIHJlZGVmaW5lIGRpdmlzb3IgOj0gZGl2aXNvcioxMCBhbmQgcm91bmRfYXQgOj0gcm91bmRfYXQqMTAsIHNvIHdlIGhhdmU6XG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdICopXG4gICAgICAgICBkaXZpc29yIDo9ICFkaXZpc29yICogaW50NjNfdGVuO1xuICAgICAgICAgcm91bmRfYXQgOj0gIXJvdW5kX2F0ICogaW50NjNfdGVuO1xuICAgICAgICAgKCogTmV4dCB3ZSB3b3JrIG91dCB0aGUgcGFydCBvZiB0aGUgc3VtIGJhc2VkIG9uIG91ciBjdXJyZW50IGRpZ2l0OlxuXG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIC0gcm91bmRfYXQgLyBkaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gKGEqc2NhbGUtcm91bmRfYXQpIC8gZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cblxuICAgICAgICAgICAgRGVjb21wb3NlIHRoZSBmaXJzdCB0ZXJtIGludG8gaW50ZWdlciBhbmQgcmVtYWluZGVyIHBhcnRzLlxuICAgICAgICAgICAgU2luY2Ugd2UgaGF2ZSBhbHJlYWR5IHN1YnRyYWN0ZWQgW3JvdW5kX2F0XSwgd2UgZGVjb21wb3NlIGJhc2VkXG4gICAgICAgICAgICBvbiB0aGUgY2VpbGluZyByYXRoZXIgdGhhbiB0aGUgZmxvb3Igb2YgdGhlIGRpdmlzaW9uLFxuICAgICAgICAgICAgZS5nLiA1LzMgd291bGQgZGVjb21wb3NlIGFzIDIgKyAoLTEpLzMsIHJhdGhlciB0aGFuIDEgKyAoMi8zKS5cblxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyByZW1haW5kZXIvZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXVxuICAgICAgICAgKilcbiAgICAgICAgIGxldCBudW1lcmF0b3IgPSAoZGlnaXQgKiBzY2FsZSkgLSAhcm91bmRfYXQgaW5cbiAgICAgICAgIGxldCBkZW5vbWluYXRvciA9ICFkaXZpc29yIGluXG4gICAgICAgICBsZXQgaW5jcmVtZW50ID0gZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciBpblxuICAgICAgICAgbGV0IHJlbWFpbmRlciA9IG51bWVyYXRvciAtIChpbmNyZW1lbnQgKiBkZW5vbWluYXRvcikgaW5cbiAgICAgICAgICgqIE5vdyBqdXN0IGFjY3VtdWxhdGUgdGhlIG5ldyBpbmNyZW1lbnQgYW5kIGl0ZXJhdGUgb24gdGhlIHJlbWFpbmluZyBwYXJ0OlxuICAgICAgICAgICAgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXS5cblxuICAgICAgICAgICAgU2luY2UgW3JlbWFpbmRlcl0gaXMgYmV0d2VlbiBbLShkaXZpc29yLTEpXSBhbmQgWzBdIGluY2x1c2l2ZSwgdGhlIG5ld1xuICAgICAgICAgICAgW3JvdW5kX2F0XSB3aWxsIGJlIHdpdGhpbiBbMF0gYW5kIFtkaXZpc29yLTFdIGluY2x1c2l2ZS4gKilcbiAgICAgICAgIHJvdW5kX2F0IDo9IC1yZW1haW5kZXI7XG4gICAgICAgICBzdW0gOj0gIXN1bSArIGluY3JlbWVudDtcbiAgICAgICAgICgqIFRoaXMgbGluZSBwcmV2ZW50cyB0aGUgZGl2aXNvciBmcm9tIGdyb3dpbmcgd2l0aG91dCBib3VuZCBhbmQgb3ZlcmZsb3dpbmcuIElmXG4gICAgICAgICAgICB0aGlzIGxpbmUgYWN0dWFsbHkgY2hhbmdlcyB0aGUgZGl2aXNvciwgdGhlbiB0aGUgZGl2aXNvciBpcyBsYXJnZXIgdGhhbiB0aGVcbiAgICAgICAgICAgIHNjYWxlLCBzbyB0aGUgc3VtIHdpbGwgaW5jcmVhc2UgaWYgYW5kIG9ubHkgaWYgW3BhcnNlZF9yZW1haW5pbmdfZGlnaXRzICpcbiAgICAgICAgICAgIHNjYWxlICg+IG9yID49KSByb3VuZF9hdF0sIHdoaWNoIGRvZXNuJ3QgZGVwZW5kIG9uIGhvdyBtdWNoIGxhcmdlciB0aGVcbiAgICAgICAgICAgIGRpdmlzb3IgaXMuIFNvIHRoaXMgY2hhbmdlIGlzIHNhZmUuICopXG4gICAgICAgICBkaXZpc29yIDo9IEludDYzLm1pbiBkZW5vbWluYXRvciBzY2FsZVxuICAgICAgIHwgJ18nIHdoZW4gYWxsb3dfdW5kZXJzY29yZSAtPiAoKVxuICAgICAgIHwgXyAtPiByYWlzZV9pbnZhbGlkX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIik7XG4gICAgICBwb3MgOj0gSW50LnN1Y2MgIXBvc1xuICAgIGRvbmU7XG4gICAgaWYgIXJvdW5kX2F0ID0gemVyb1xuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggcm91bmRfZXhhY3Qgd2l0aFxuICAgICAgfCBSb3VuZC5Ub3dhcmRfbmVnYXRpdmVfaW5maW5pdHkgLT4gKClcbiAgICAgIHwgUm91bmQuVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5IC0+IHN1bSA6PSAhc3VtICsgSW50NjMub25lKTtcbiAgICAhc3VtXG4gIDs7XG5cbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgICByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgc3RyaW5nXG4gICAgICB+cG9zXG4gICAgICB+ZGVjaW1hbHNcbiAgICAgIH5zY2FsZTooSW50NjMuKCAqICkgc2NhbGUgaW50NjNfdHdvKVxuICAgICAgfmRpdmlzb3I6aW50NjNfdHdvXG4gICAgICB+cm91bmRfYXQ6SW50NjMub25lXG4gICAgICB+cm91bmRfZXhhY3Q6cm91bmRfdGllc1xuICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgOztcbmVuZFxuXG5sZXQgbWluX3NjYWxlID0gSW50NjMub25lXG5sZXQgbWF4X3NjYWxlID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX3R3ZW50eVxuXG5sZXQgcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGVjaW1hbHM9JWQgaXMgbmVnYXRpdmVcIiBtb2R1bGVfbmFtZSBuYW1lIGRlY2ltYWxzICgpXG47O1xuXG5sZXQgcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGlnaXRzPSVkIGlzIG5vdCBhIHBvc2l0aXZlIG51bWJlclwiIG1vZHVsZV9uYW1lIG5hbWUgZGlnaXRzICgpXG47O1xuXG5sZXQgcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZSA9XG4gIGludmFsaWRfYXJnZlxuICAgIFwiJXMuJXM6IHNjYWxlPSVMZCBvdXQgb2YgcmFuZ2UgWyVMZCwgJUxkXVwiXG4gICAgbW9kdWxlX25hbWVcbiAgICBuYW1lXG4gICAgKEludDYzLnRvX2ludDY0IHNjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtaW5fc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1heF9zY2FsZSlcbiAgICAoKVxuOztcblxubGV0IHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBsZW5cbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogcG9zPSVkIG91dCBvZiByYW5nZSBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6ICVkIGRpZ2l0cyBkbyBub3QgZml0IGF0IHBvcyAlZCBpbiBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBkaWdpdHNcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuOztcblxubGV0IHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBtb2R1bGVfbmFtZSBuYW1lIGludCBtYXggKClcbjs7XG5cbmxldCByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGludmFsaWRfYXJnZiAhXCIlcy4lczogJXtJbnQ2M30gb3V0IG9mIHJhbmdlIFswLCAle0ludDYzfV1cIiBtb2R1bGVfbmFtZSBuYW1lIGludDYzIG1heCAoKVxuOztcblxubGV0IGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaWYgZGVjaW1hbHMgPCAwIHRoZW4gcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHNcbjs7XG5cbmxldCBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzID0gaWYgZGlnaXRzIDwgMSB0aGVuIHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzXG5cbmxldCBjaGVja19wb3MgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zICsgZGlnaXRzID4gbGVuIHRoZW4gcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IGNoZWNrX2ludCBuYW1lIH5tYXggaW50ID1cbiAgaWYgaW50IDwgMCB8fCBpbnQgPiBtYXggdGhlbiByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzID1cbiAgaWYgSW50NjMuKCA8ICkgaW50NjMgSW50NjMuemVybyB8fCBJbnQ2My4oID4gKSBpbnQ2MyBtYXhcbiAgdGhlbiByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlID1cbiAgaWYgSW50NjMuKCA8ICkgc2NhbGUgbWluX3NjYWxlIHx8IEludDYzLiggPiApIHNjYWxlIG1heF9zY2FsZVxuICB0aGVuIHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGVcbjs7XG5cbmxldCBjaGVja193cml0ZSBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgfm1heCBpbnQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX3dyaXRlNjMgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IG1heCA9IG1heF9pbnQ2M193aXRoIH5kaWdpdHMgaW5cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzFfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoxIH5tYXg6OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8yX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MiB+bWF4Ojk5IGludDtcbiAgVW5zYWZlLndyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzNfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czozIH5tYXg6OTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzRfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo0IH5tYXg6OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjUgfm1heDo5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjYgfm1heDo5OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzdfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo3IH5tYXg6OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzhfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo4IH5tYXg6OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV85X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OSB+bWF4Ojk5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfd3JpdGU2MyBcIndyaXRlX2ludDYzXCIgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MztcbiAgVW5zYWZlLndyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3JlYWQgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2MyBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzX2RlY2ltYWwgbmFtZSB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscztcbiAgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGU7XG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHM6ZGVjaW1hbHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzFfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MTtcbiAgVW5zYWZlLnJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoyO1xuICBVbnNhZmUucmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8zX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjM7XG4gIFVuc2FmZS5yZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzRfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NDtcbiAgVW5zYWZlLnJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo1O1xuICBVbnNhZmUucmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF82X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjY7XG4gIFVuc2FmZS5yZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzdfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NztcbiAgVW5zYWZlLnJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo4O1xuICBVbnNhZmUucmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF85X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjk7XG4gIFVuc2FmZS5yZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfcmVhZDYzIFwicmVhZF9pbnQ2M1wiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzO1xuICBVbnNhZmUucmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICBjaGVja19yZWFkNjNfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlO1xuICBVbnNhZmUucmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBKYW5cbiAgICAgIHwgRmViXG4gICAgICB8IE1hclxuICAgICAgfCBBcHJcbiAgICAgIHwgTWF5XG4gICAgICB8IEp1blxuICAgICAgfCBKdWxcbiAgICAgIHwgQXVnXG4gICAgICB8IFNlcFxuICAgICAgfCBPY3RcbiAgICAgIHwgTm92XG4gICAgICB8IERlY1xuICAgIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCB2YXJpYW50c11cblxuICAgIGxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbiAgICBsZXQgb2ZfaW50X2V4biBpIDogdCA9XG4gICAgICBtYXRjaCBpIHdpdGhcbiAgICAgIHwgMSAtPiBKYW5cbiAgICAgIHwgMiAtPiBGZWJcbiAgICAgIHwgMyAtPiBNYXJcbiAgICAgIHwgNCAtPiBBcHJcbiAgICAgIHwgNSAtPiBNYXlcbiAgICAgIHwgNiAtPiBKdW5cbiAgICAgIHwgNyAtPiBKdWxcbiAgICAgIHwgOCAtPiBBdWdcbiAgICAgIHwgOSAtPiBTZXBcbiAgICAgIHwgMTAgLT4gT2N0XG4gICAgICB8IDExIC0+IE5vdlxuICAgICAgfCAxMiAtPiBEZWNcbiAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJNb250aC5vZl9pbnRfZXhuICVkXCIgaSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfaW50IGkgPVxuICAgICAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2ludCAodCA6IHQpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBKYW4gLT4gMVxuICAgICAgfCBGZWIgLT4gMlxuICAgICAgfCBNYXIgLT4gM1xuICAgICAgfCBBcHIgLT4gNFxuICAgICAgfCBNYXkgLT4gNVxuICAgICAgfCBKdW4gLT4gNlxuICAgICAgfCBKdWwgLT4gN1xuICAgICAgfCBBdWcgLT4gOFxuICAgICAgfCBTZXAgLT4gOVxuICAgICAgfCBPY3QgLT4gMTBcbiAgICAgIHwgTm92IC0+IDExXG4gICAgICB8IERlYyAtPiAxMlxuICAgIDs7XG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9IHRvX2ludCB0IC0gMVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlIGkgPSBvZl9pbnRfZXhuIChpICsgMSlcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgZW5kXG5lbmRcblxubGV0IG51bV9tb250aHMgPSAxMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIGxldCBhbGwgPSBbIEphbjsgRmViOyBNYXI7IEFwcjsgTWF5OyBKdW47IEp1bDsgQXVnOyBTZXA7IE9jdDsgTm92OyBEZWMgXVxuICBsZXQgaGFzaCA9IHRvX2ludFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBtb250aHMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBpbnRzLiAgRnJvbSAxMDguMDdcbiAgICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmRcbiAgICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzXG4gICAgICAgY2hhbmdlZCBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZVxuICAgICAgIG1vc3QgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICAgIHJhdy4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW50LnRfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICB8IFNvbWUgaSAtPiBvZl9pbnRfZXhuIChpICsgMSlcbiAgICAgIHwgTm9uZSAtPiBULnRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG4oKiBSZXBsYWNlIHRoZSBvdmVycmlkZW4gc2V4cCBjb252ZXJ0ZXJzIGZyb20gW0NvbXBhcmFibGUuTWFrZV9iaW5hYmxlXSB3aXRoIHRoZSBvcmRpbmFyeVxuICAgc3ltYm9saWMgY29udmVydGVycy4gKilcbmxldCBzZXhwX29mX3QgPSBULnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFQudF9vZl9zZXhwXG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoMSArIEludC4oICUgKSAodG9faW50IHQgLSAxICsgaSkgbnVtX21vbnRocylcblxubGV0IGFsbF9zdHJpbmdzID1cbiAgbGF6eVxuICAgIChBcnJheS5vZl9saXN0IChMaXN0Lm1hcCBhbGwgfmY6KGZ1biB2YXJpYW50IC0+IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdmFyaWFudCkpKSlcbjs7XG5cbmxldCB0b19zdHJpbmcgKHQgOiB0KSA9XG4gIGxldCBhbGxfc3RyaW5ncyA9IExhenkuZm9yY2UgYWxsX3N0cmluZ3MgaW5cbiAgYWxsX3N0cmluZ3MuKHRvX2ludCB0IC0gMSlcbjs7XG5cbmxldCBvZl9zdHJpbmcgPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgbW9kdWxlIFQgPSBTdHJpbmcuVGFibGUgaW5cbiAgICAgICBsZXQgdGFibGUgPSBULmNyZWF0ZSB+c2l6ZTpudW1fbW9udGhzICgpIGluXG4gICAgICAgQXJyYXkuaXRlcmkgKExhenkuZm9yY2UgYWxsX3N0cmluZ3MpIH5mOihmdW4gaSBzIC0+XG4gICAgICAgICBsZXQgdCA9IG9mX2ludF9leG4gKGkgKyAxKSBpblxuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcubG93ZXJjYXNlIHMpIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcudXBwZXJjYXNlIHMpIH5kYXRhOnQpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBmdW4gc3RyIC0+XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIChMYXp5LmZvcmNlIHRhYmxlKSBzdHIgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiSW52YWxpZCBtb250aDogJXNcIiBzdHIgKClcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBtb250aCA9IHQgPVxuICAgIHwgSmFuXG4gICAgfCBGZWJcbiAgICB8IE1hclxuICAgIHwgQXByXG4gICAgfCBNYXlcbiAgICB8IEp1blxuICAgIHwgSnVsXG4gICAgfCBBdWdcbiAgICB8IFNlcFxuICAgIHwgT2N0XG4gICAgfCBOb3ZcbiAgICB8IERlY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBpc19sZWFwX3llYXIgfnllYXIgPSAoeWVhciBtb2QgNCA9IDAgJiYgbm90ICh5ZWFyIG1vZCAxMDAgPSAwKSkgfHwgeWVhciBtb2QgNDAwID0gMFxuXG4oKiBDcmVhdGUgYSBsb2NhbCBwcml2YXRlIGRhdGUgdHlwZSB0byBlbnN1cmUgdGhhdCBhbGwgZGF0ZXMgYXJlIGNyZWF0ZWQgdmlhXG4gICBEYXRlLmNyZWF0ZV9leG4uXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBiaW5faW8sIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogeTppbnQgLT4gbTpNb250aC5TdGFibGUuVjEudCAtPiBkOmludCAtPiB0XG4gICAgICAgIHZhbCB5ZWFyIDogdCAtPiBpbnRcbiAgICAgICAgdmFsIG1vbnRoIDogdCAtPiBNb250aC5TdGFibGUuVjEudFxuICAgICAgICB2YWwgZGF5IDogdCAtPiBpbnRcbiAgICAgICAgdmFsIGRheXNfaW5fbW9udGggOiB5ZWFyOmludCAtPiBtb250aDpNb250aC50IC0+IGludFxuICAgICAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICAgICAgdmFsIG9mX2ludF9leG4gOiBpbnQgLT4gdFxuICAgICAgICB2YWwgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5IDogdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgICgqIFdlIHVzZWQgdG8gc3RvcmUgZGF0ZXMgbGlrZSB0aGlzOlxuICAgICAgICAgICB0eXBlIHQgPSB7IHk6IGludDsgbTogTW9udGguU3RhYmxlLlYxLnQ7IGQ6IGludDsgfVxuICAgICAgICAgICBJbiB0aGUgYmVsb3cgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIGJpbl9pbyByZXByZXNlbnRhdGlvbiBpc1xuICAgICAgICAgICBpZGVudGljYWwgKGFuZCB0aGUgc3RhYmxlIHVuaXQgdGVzdHMgY2hlY2sgdGhpcylcblxuICAgICAgICAgICBJbiBtZW1vcnkgd2UgdXNlIHRoZSBmb2xsb3dpbmcgbXVjaCBtb3JlIGNvbXBhY3QgcmVwcmVzZW50YXRpb246XG4gICAgICAgICAgIDIgYnl0ZXMgeWVhclxuICAgICAgICAgICAxIGJ5dGUgbW9udGhcbiAgICAgICAgICAgMSBieXRlIGRheVxuXG4gICAgICAgICAgIGFsbCBwYWNrZWQgaW50byBhIHNpbmdsZSBpbW1lZGlhdGUgaW50IChzbyBmcm9tIDQgd29yZHMgZG93biB0byAxKS5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZSB0ID0gaW50XG4gICAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgICAgZXF1YWwsIGhhc2gsIHR5cGVyZXAsIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4OTllZTNlMC00OTBhLTExZTYtYTEwYS1hMzczNGY3MzM1NjZcIl1cblxuICAgICAgICBsZXQgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgKCogY3JlYXRlX2V4bidzIHZhbGlkYXRpb24gbWFrZSBzdXJlIHRoYXQgZWFjaCB2YWx1ZSBmaXRzICopXG4gICAgICAgICAgKHllYXIgbHNsIDE2KSBsb3IgKE1vbnRoLnRvX2ludCBtb250aCBsc2wgOCkgbG9yIGRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB5ZWFyIHQgPSB0IGxzciAxNlxuICAgICAgICBsZXQgbW9udGggdCA9IE1vbnRoLm9mX2ludF9leG4gKCh0IGxzciA4KSBsYW5kIDB4ZmYpXG4gICAgICAgIGxldCBkYXkgdCA9IHQgbGFuZCAweGZmXG5cbiAgICAgICAgbGV0IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoID1cbiAgICAgICAgICBtYXRjaCAobW9udGggOiBNb250aC50KSB3aXRoXG4gICAgICAgICAgfCBKYW4gfCBNYXIgfCBNYXkgfCBKdWwgfCBBdWcgfCBPY3QgfCBEZWMgLT4gMzFcbiAgICAgICAgICB8IEFwciB8IEp1biB8IFNlcCB8IE5vdiAtPiAzMFxuICAgICAgICAgIHwgRmViIC0+IGlmIGlzX2xlYXBfeWVhciB+eWVhciB0aGVuIDI5IGVsc2UgMjhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSA9XG4gICAgICAgICAgKCogeWVhciwgbW9udGgsIGFuZCBkYXkgbmVlZCB0byBiZSBwYXNzZWQgYXMgcGFyYW1ldGVycyB0byBhdm9pZCBhbGxvY2F0aW5nXG4gICAgICAgICAgICAgYSBjbG9zdXJlIChzZWUgdW5pdCB0ZXN0IGJlbG93KSAqKVxuICAgICAgICAgIGxldCBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IG1zZyA9XG4gICAgICAgICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgICAgICAgIVwiRGF0ZS5jcmVhdGVfZXhuIH55OiVkIH5tOiV7TW9udGh9IH5kOiVkIGVycm9yOiAlc1wiXG4gICAgICAgICAgICAgIHllYXJcbiAgICAgICAgICAgICAgbW9udGhcbiAgICAgICAgICAgICAgZGF5XG4gICAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgeWVhciA8IDAgfHwgeWVhciA+IDk5OTlcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJ5ZWFyIG91dHNpZGUgb2YgWzAuLjk5OTldXCI7XG4gICAgICAgICAgaWYgZGF5IDw9IDAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwiZGF5IDw9IDBcIjtcbiAgICAgICAgICBsZXQgZGF5c19pbl9tb250aCA9IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoIGluXG4gICAgICAgICAgaWYgZGF5ID4gZGF5c19pbl9tb250aFxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSAoc3ByaW50ZiBcIiVkIGRheSBtb250aCB2aW9sYXRpb25cIiBkYXlzX2luX21vbnRoKTtcbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgKCogV2UgZG9uJ3QgdXNlIE1ha2VfYmluYWJsZSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgZ28gdmlhIGFuIGltbWVkaWF0ZVxuICAgICAgICAgICB0dXBsZSBvciByZWNvcmQuICBUaGF0IGlzIGV4YWN0bHkgdGhlIDMyIGJ5dGVzIHdlIHdvcmtlZCBzbyBoYXJkIGFib3ZlIHRvXG4gICAgICAgICAgIGdldCByaWQgb2YuICBXZSBhbHNvIGRvbid0IHdhbnQgdG8ganVzdCBiaW5faW8gdGhlIGludGVnZXIgZGlyZWN0bHlcbiAgICAgICAgICAgYmVjYXVzZSB0aGF0IHdvdWxkIG1lYW4gYSBuZXcgYmluX2lvIGZvcm1hdC4gICopXG5cbiAgICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLlN0YWJsZS5WMS5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgPVxuICAgICAgICAgICgqIF9fYmluX3JlYWRfdCBpcyBvbmx5IG5lZWRlZCBmb3IgdmFyaWFudHMgKilcbiAgICAgICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiRGF0ZS50XCIgIXBvc19yZWZcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICAgICAgICBJbnQuYmluX3NpemVfdCAoeWVhciB0KSArIE1vbnRoLmJpbl9zaXplX3QgKG1vbnRoIHQpICsgSW50LmJpbl9zaXplX3QgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgICBsZXQgcG9zID0gSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zICh5ZWFyIHQpIGluXG4gICAgICAgICAgbGV0IHBvcyA9IE1vbnRoLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChtb250aCB0KSBpblxuICAgICAgICAgIEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICAgICAgbGV0IGJpbl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgICAgICBsZXQgb2ZfaW50X2V4biBuID0gY3JlYXRlX2V4biB+eTooeWVhciBuKSB+bToobW9udGggbikgfmQ6KGRheSBuKVxuICAgICAgICBsZXQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5ID0gMFxuXG4gICAgICAgIGxldCV0ZXN0IFwiaW52YWxpZCB2YWx1ZVwiID1cbiAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIDogdCAtPiBvZl9pbnRfZXhuIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuXG4gICAgICAoKiogWVlZWS1NTS1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNCAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjUgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDcgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo4IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWRcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgOCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo0IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgKCoqIE1NL0REL1lZWVkgKilcbiAgICAgIGxldCB0b19zdHJpbmdfYW1lcmljYW4gdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgMiAnLyc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICcvJztcbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV95ZWFyNCBzdHIgcG9zID0gcmVhZF80X2RpZ2l0X2ludCBzdHIgfnBvc1xuICAgICAgbGV0IHBhcnNlX21vbnRoIHN0ciBwb3MgPSBNb250aC5vZl9pbnRfZXhuIChyZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zKVxuICAgICAgbGV0IHBhcnNlX2RheSBzdHIgcG9zID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvc1xuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyBzdHIgfnBvcyA9XG4gICAgICAgIGlmIHBvcyArIDggPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgICB0aGVuIGludmFsaWRfYXJnIFwiRGF0ZS5vZl9zdHJpbmdfaXNvODYwMV9iYXNpYzogcG9zICsgOCA+IHN0cmluZyBsZW5ndGhcIjtcbiAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzdHIgcG9zKVxuICAgICAgICAgIH5tOihwYXJzZV9tb250aCBzdHIgKHBvcyArIDQpKVxuICAgICAgICAgIH5kOihwYXJzZV9kYXkgc3RyIChwb3MgKyA2KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYSBtYXRlcmlhbCB3YXksIGJlIHN1cmUgeW91XG4gICAgICAgICB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2Ygd29ya2luZyBpbiBTdGFibGUgKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBpbnZhbGlkICgpID0gZmFpbHdpdGggKFwiaW52YWxpZCBkYXRlOiBcIiBeIHMpIGluXG4gICAgICAgIGxldCBlbnN1cmUgYiA9IGlmIG5vdCBiIHRoZW4gaW52YWxpZCAoKSBpblxuICAgICAgICBsZXQgbW9udGhfbnVtIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OihwYXJzZV95ZWFyNCBzIHllYXIpIH5tOihwYXJzZV9tb250aCBzIG1vbnRoKSB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9udGhfYWJydiB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHMgeWVhcilcbiAgICAgICAgICAgIH5tOihNb250aC5vZl9zdHJpbmcgKFN0cmluZy5zdWIgcyB+cG9zOm1vbnRoIH5sZW46MykpXG4gICAgICAgICAgICB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnLydcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHksIG0sIGQgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicvJyB3aXRoXG4gICAgICAgICAgICB8IFsgYTsgYjsgYyBdIC0+XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggYSA9IDQgdGhlbiBhLCBiLCBjICgqIHkvbS9kICopIGVsc2UgYywgYSwgYiAoKiBtL2QveSAqKVxuICAgICAgICAgICAgfCBfIC0+IGludmFsaWQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB5ZWFyID0gSW50Lm9mX3N0cmluZyB5IGluXG4gICAgICAgICAgbGV0IHllYXIgPVxuICAgICAgICAgICAgaWYgeWVhciA+PSAxMDAgdGhlbiB5ZWFyIGVsc2UgaWYgeWVhciA8IDc1IHRoZW4gMjAwMCArIHllYXIgZWxzZSAxOTAwICsgeWVhclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGgub2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBtKSBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQub2Zfc3RyaW5nIGQgaW5cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICctJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiB5eXl5LW1tLWRkICopXG4gICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMCAmJiBDaGFyLiggPSApIHMuWzRdICctJyAmJiBDaGFyLiggPSApIHMuWzddICctJyk7XG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjUgfmRheTo4KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICcgJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLlsyXSAnICcgJiYgQ2hhci4oID0gKSBzLls2XSAnICdcbiAgICAgICAgICB0aGVuICgqIEREIE1NTSBZWVlZICopXG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MyB+eWVhcjo3XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBZWVlZIE1NTSBERCAqKVxuICAgICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzRdICcgJyAmJiBDaGFyLiggPSApIHMuWzhdICcgJyk7XG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6OSB+bW9udGg6NSB+eWVhcjowKVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDlcbiAgICAgICAgdGhlbiAoKiBERE1NTVlZWVkgKilcbiAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MiB+eWVhcjo1XG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOFxuICAgICAgICB0aGVuICgqIGFzc3VtZSBZWVlZTU1ERCAqKVxuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo0IH5kYXk6NlxuICAgICAgICBlbHNlIGludmFsaWQgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIkRhdGUub2Zfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9sZF9kYXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgIHsgeSA6IGludFxuICAgICAgICAgICAgOyBtIDogaW50XG4gICAgICAgICAgICA7IGQgOiBpbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgbGV0IHRvX2RhdGUgdCA9IFQuY3JlYXRlX2V4biB+eTp0Lnkgfm06KE1vbnRoLm9mX2ludF9leG4gdC5tKSB+ZDp0LmRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gYXMgc2V4cCAtPiBPbGRfZGF0ZS50b19kYXRlIChPbGRfZGF0ZS50X29mX3NleHAgc2V4cClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgICAgIHRyeSB0X29mX3NleHAgcyB3aXRoXG4gICAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZXhuIC0+IHJhaXNlIGV4blxuICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhIC0+IG9mX3NleHBfZXJyb3IgYSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBTZXhwYWJsZVxuXG4gICAgICBsZXQgY29tcGFyZSB0MSB0MiA9XG4gICAgICAgIGxldCBuID0gSW50LmNvbXBhcmUgKHllYXIgdDEpICh5ZWFyIHQyKSBpblxuICAgICAgICBpZiBuIDw+IDBcbiAgICAgICAgdGhlbiBuXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuID0gTW9udGguY29tcGFyZSAobW9udGggdDEpIChtb250aCB0MikgaW5cbiAgICAgICAgICBpZiBuIDw+IDAgdGhlbiBuIGVsc2UgSW50LmNvbXBhcmUgKGRheSB0MSkgKGRheSB0MikpXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5NYWtlIChXaXRob3V0X2NvbXBhcmFibGUpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludFxuICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgYmluX2lvXG4gICAgICAsIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4MjZhM2U3OS0zMzIxLTQ1MWEtOTcwNy1lZDZjMDNiODRlMmZcIlxuICAgICAgLCBjb21wYXJlXG4gICAgICAsIGhhc2hcbiAgICAgICwgdHlwZXJlcF1cblxuICAgICAgbGV0IG5vbmUgPSBWMS4odG9faW50IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSlcbiAgICAgIGxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSBfID0gdHJ1ZVxuICAgICAgbGV0IHNvbWUgdCA9IFYxLnRvX2ludCB0XG4gICAgICBsZXQgdW5jaGVja2VkX3ZhbHVlID0gVjEub2ZfaW50X2V4blxuICAgICAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfc29tZSB0IHRoZW4gU29tZSAodW5jaGVja2VkX3ZhbHVlIHQpIGVsc2UgTm9uZVxuXG4gICAgICBsZXQgb2Zfb3B0aW9uIG9wdCA9XG4gICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSB2IC0+IHNvbWUgdlxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgaWYgaXNfc29tZSB0XG4gICAgICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICAgICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiRGF0ZS5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gaWYgaXNfc29tZSB0IHRoZW4gdW5jaGVja2VkX3ZhbHVlIHQgZWxzZSBkZWZhdWx0XG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYxLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjEudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMS50IE9wdGlvbi50XVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gU3RhYmxlLlYxLldpdGhvdXRfY29tcGFyYWJsZVxuaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbm1vZHVsZSBDID0gQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoV2l0aG91dF9jb21wYXJhYmxlKVxuaW5jbHVkZSBDXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgKEMgOiBDb21wYXJhYmxlLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgIGluY2x1ZGUgQmluYWJsZVxuXG4gICAgbGV0IGNvbXBhcmUgKGEgOiB0KSAoYiA6IHQpID0gY29tcGFyZSBhIGJcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuRGF0ZVwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbmxldCB1bml4X2Vwb2NoID0gY3JlYXRlX2V4biB+eToxOTcwIH5tOkphbiB+ZDoxXG5cbigqIFRoZSBEYXlzIG1vZHVsZSBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbnMgdGhhdCBpbnZvbHZlIGFkZGluZyBvciByZW1vdmluZyBhIGtub3duIG51bWJlclxuICAgb2YgZGF5cyBmcm9tIGEgZGF0ZS4gIEludGVybmFsbHkgdGhlIGRhdGUgaXMgdHJhbnNsYXRlZCB0byBhIGRheSBudW1iZXIsIHRoZSBkYXlzIGFyZVxuICAgYWRkZWQsIGFuZCB0aGUgbmV3IGRhdGUgaXMgcmV0dXJuZWQuICBUaG9zZSBpbnRlcmVzdGVkIGluIHRoZSBtYXRoIGNhbiByZWFkOlxuXG4gICBodHRwOi8vYWxjb3IuY29uY29yZGlhLmNhL35ncGthdGNoL2dkYXRlLW1ldGhvZC5odG1sXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgYXJlIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbm1vZHVsZSBEYXlzIDogc2lnXG4gIHR5cGUgZGF0ZSA9IHRcbiAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cblxuICB2YWwgb2ZfZGF0ZSA6IGRhdGUgLT4gdFxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gZGF0ZVxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGFkZF9kYXlzIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdW5peF9lcG9jaCA6IHRcbmVuZFxud2l0aCB0eXBlIGRhdGUgOj0gdCA9IHN0cnVjdFxuICBvcGVuIEludFxuXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBvZl95ZWFyIHkgPSAoMzY1ICogeSkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApXG5cbiAgbGV0IG9mX2RhdGUgZGF0ZSA9XG4gICAgbGV0IG0gPSAoTW9udGgudG9faW50IChtb250aCBkYXRlKSArIDkpICUgMTIgaW5cbiAgICBsZXQgeSA9IHllYXIgZGF0ZSAtIChtIC8gMTApIGluXG4gICAgb2ZfeWVhciB5ICsgKCgobSAqIDMwNikgKyA1KSAvIDEwKSArIChkYXkgZGF0ZSAtIDEpXG4gIDs7XG5cbiAgbGV0IGNfMTBfMDAwID0gSW50NjMub2ZfaW50IDEwXzAwMFxuICBsZXQgY18xNF83ODAgPSBJbnQ2My5vZl9pbnQgMTRfNzgwXG4gIGxldCBjXzNfNjUyXzQyNSA9IEludDYzLm9mX2ludCAzXzY1Ml80MjVcblxuICBsZXQgdG9fZGF0ZSBkYXlzID1cbiAgICBsZXQgeSA9XG4gICAgICBsZXQgb3BlbiBJbnQ2MyBpblxuICAgICAgdG9faW50X2V4biAoKChjXzEwXzAwMCAqIG9mX2ludCBkYXlzKSArIGNfMTRfNzgwKSAvIGNfM182NTJfNDI1KVxuICAgIGluXG4gICAgbGV0IGRkZCA9IGRheXMgLSBvZl95ZWFyIHkgaW5cbiAgICBsZXQgeSwgZGRkID1cbiAgICAgIGlmIGRkZCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgeSA9IHkgLSAxIGluXG4gICAgICAgIHksIGRheXMgLSBvZl95ZWFyIHkpXG4gICAgICBlbHNlIHksIGRkZFxuICAgIGluXG4gICAgbGV0IG1pID0gKCgxMDAgKiBkZGQpICsgNTIpIC8gM18wNjAgaW5cbiAgICBsZXQgeSA9IHkgKyAoKG1pICsgMikgLyAxMikgaW5cbiAgICBsZXQgbSA9ICgobWkgKyAyKSAlIDEyKSArIDEgaW5cbiAgICBsZXQgZCA9IGRkZCAtICgoKG1pICogMzA2KSArIDUpIC8gMTApICsgMSBpblxuICAgIGNyZWF0ZV9leG4gfnkgfm06KE1vbnRoLm9mX2ludF9leG4gbSkgfmRcbiAgOztcblxuICBsZXQgdW5peF9lcG9jaCA9IG9mX2RhdGUgdW5peF9lcG9jaFxuICBsZXQgYWRkX2RheXMgdCBkYXlzID0gdCArIGRheXNcbiAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5lbmRcblxubGV0IGFkZF9kYXlzIHQgZGF5cyA9IERheXMudG9fZGF0ZSAoRGF5cy5hZGRfZGF5cyAoRGF5cy5vZl9kYXRlIHQpIGRheXMpXG5sZXQgZGlmZiB0MSB0MiA9IERheXMuZGlmZiAoRGF5cy5vZl9kYXRlIHQxKSAoRGF5cy5vZl9kYXRlIHQyKVxuXG5sZXQgYWRkX21vbnRocyB0IG4gPVxuICBsZXQgdG90YWxfbW9udGhzID0gTW9udGgudG9faW50IChtb250aCB0KSArIG4gaW5cbiAgbGV0IHkgPSB5ZWFyIHQgKyAodG90YWxfbW9udGhzIC8lIDEyKSBpblxuICBsZXQgbSA9IHRvdGFsX21vbnRocyAlIDEyIGluXG4gICgqIGNvcnJlY3QgZm9yIGRlY2VtYmVyICopXG4gIGxldCB5LCBtID0gaWYgSW50LiggPSApIG0gMCB0aGVuIHkgLSAxLCBtICsgMTIgZWxzZSB5LCBtIGluXG4gIGxldCBtID0gTW9udGgub2ZfaW50X2V4biBtIGluXG4gICgqIGhhbmRsZSBpbnZhbGlkIGRhdGVzIGZvciBtb250aHMgd2l0aCBmZXdlciBudW1iZXIgb2YgZGF5cyAqKVxuICBsZXQgcmVjIHRyeV9jcmVhdGUgZCA9XG4gICAgdHJ5IGNyZWF0ZV9leG4gfnkgfm0gfmQgd2l0aFxuICAgIHwgX2V4biAtPlxuICAgICAgYXNzZXJ0IChJbnQuKCA+PSApIGQgMSk7XG4gICAgICB0cnlfY3JlYXRlIChkIC0gMSlcbiAgaW5cbiAgdHJ5X2NyZWF0ZSAoZGF5IHQpXG47O1xuXG5sZXQgYWRkX3llYXJzIHQgbiA9IGFkZF9tb250aHMgdCAobiAqIDEyKVxuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RldGVybWluYXRpb25fb2ZfdGhlX2RheV9vZl90aGVfd2VlayNQdXJlbHlfbWF0aGVtYXRpY2FsX21ldGhvZHNcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5sZXQgZGF5X29mX3dlZWsgPVxuICBsZXQgdGFibGUgPSBbfCAwOyAzOyAyOyA1OyAwOyAzOyA1OyAxOyA0OyA2OyAyOyA0IHxdIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG0gPSBNb250aC50b19pbnQgKG1vbnRoIHQpIGluXG4gICAgbGV0IHkgPSBpZiBJbnQuKCA8ICkgbSAzIHRoZW4geWVhciB0IC0gMSBlbHNlIHllYXIgdCBpblxuICAgIERheV9vZl93ZWVrLm9mX2ludF9leG5cbiAgICAgICgoeSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgKyB0YWJsZS4obSAtIDEpICsgZGF5IHQpICUgNylcbjs7XG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3JkaW5hbF9kYXRlICopXG5sZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA1OTsgOTA7IDEyMDsgMTUxOyAxODE7IDIxMjsgMjQzOyAyNzM7IDMwNDsgMzM0IHxdXG5sZXQgbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDYwOyA5MTsgMTIxOyAxNTI7IDE4MjsgMjEzOyAyNDQ7IDI3NDsgMzA1OyAzMzUgfF1cblxubGV0IG9yZGluYWxfZGF0ZSB0ID1cbiAgbGV0IHRhYmxlID1cbiAgICBpZiBpc19sZWFwX3llYXIgfnllYXI6KHllYXIgdCkgdGhlbiBsZWFwX3llYXJfdGFibGUgZWxzZSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGluXG4gIGxldCBvZmZzZXQgPSB0YWJsZS4oTW9udGgudG9faW50IChtb250aCB0KSAtIDEpIGluXG4gIGRheSB0ICsgb2Zmc2V0XG47O1xuXG5sZXQgbGFzdF93ZWVrX29mX3llYXIgeSA9XG4gIGxldCBmaXJzdF9vZl95ZWFyID0gY3JlYXRlX2V4biB+eSB+bTpKYW4gfmQ6MSBpblxuICBsZXQgaXMgdCBkYXkgPSBEYXlfb2Zfd2Vlay5lcXVhbCAoZGF5X29mX3dlZWsgdCkgZGF5IGluXG4gIGlmIGlzIGZpcnN0X29mX3llYXIgVGh1IHx8IChpc19sZWFwX3llYXIgfnllYXI6eSAmJiBpcyBmaXJzdF9vZl95ZWFyIFdlZClcbiAgdGhlbiA1M1xuICBlbHNlIDUyXG47O1xuXG4oKiBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlIG9yIElTTyA4NjAxIGZvciB0aGUgZGV0YWlscyBvZiB0aGlzXG4gICBhbGdvcml0aG0uXG5cbiAgIFVzZXMgYSBbfmZdIGFyZ3VtZW50IHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNhbGxlZCBieSBbd2Vla19udW1iZXJdLlxuKilcbmxldCBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mID1cbiAgbGV0IG9yZGluYWwgPSBvcmRpbmFsX2RhdGUgdCBpblxuICBsZXQgd2Vla2RheSA9IERheV9vZl93ZWVrLmlzb184NjAxX3dlZWtkYXlfbnVtYmVyIChkYXlfb2Zfd2VlayB0KSBpblxuICAoKiBbb3JkaW5hbCAtIHdlZWtkYXkgKyA0XSBpcyB0aGUgb3JkaW5hbCBvZiB0aGlzIHdlZWsncyBUaHVyc2RheSwgdGhlbiAobiArIDYpIC8gNyBpc1xuICAgICBkaXZpc2lvbiBieSA3IHJvdW5kaW5nIHVwICopXG4gIGxldCB3ZWVrID0gKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyBpblxuICBsZXQgeWVhciA9IHllYXIgdCBpblxuICBpZiBJbnQuKCA8ICkgd2VlayAxXG4gIHRoZW4gZiB+d2VlazoobGFzdF93ZWVrX29mX3llYXIgKHllYXIgLSAxKSkgfnllYXI6KHllYXIgLSAxKVxuICBlbHNlIGlmIEludC4oID4gKSB3ZWVrIChsYXN0X3dlZWtfb2ZfeWVhciB5ZWFyKVxuICB0aGVuIGYgfndlZWs6MSB+eWVhcjooeWVhciArIDEpXG4gIGVsc2UgZiB+d2VlayB+eWVhclxuOztcblxubGV0IHdlZWtfbnVtYmVyX2FuZF95ZWFyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXIgLT4gd2VlaywgeWVhcilcbmxldCB3ZWVrX251bWJlciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyOl8gLT4gd2VlaylcbmxldCBpc193ZWVrZW5kIHQgPSBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IChkYXlfb2Zfd2VlayB0KVxubGV0IGlzX3dlZWtkYXkgdCA9IG5vdCAoaXNfd2Vla2VuZCB0KVxubGV0IGlzX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID0gaXNfd2Vla2RheSB0ICYmIG5vdCAoaXNfaG9saWRheSB0KVxuXG5sZXQgcmVjIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyID1cbiAgaWYgdDEgPCB0MlxuICB0aGVuIC1kaWZmX3dlZWtlbmRfZGF5cyB0MiB0MVxuICBlbHNlIChcbiAgICAoKiBCYXNpYyBkYXRlIGRpZmYgKilcbiAgICBsZXQgZGlmZiA9IGRpZmYgdDEgdDIgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgU2F0dXJkYXkgLT4gU3VuZGF5IGNyb3NzaW5ncyAqKVxuICAgIGxldCBkMSA9IGRheV9vZl93ZWVrIHQxIGluXG4gICAgbGV0IGQyID0gZGF5X29mX3dlZWsgdDIgaW5cbiAgICBsZXQgbnVtX3NhdHN1bl9jcm9zc2luZ3MgPVxuICAgICAgaWYgSW50LiggPCApIChEYXlfb2Zfd2Vlay50b19pbnQgZDEpIChEYXlfb2Zfd2Vlay50b19pbnQgZDIpXG4gICAgICB0aGVuIDEgKyAoZGlmZiAvIDcpXG4gICAgICBlbHNlIGRpZmYgLyA3XG4gICAgaW5cbiAgICAobnVtX3NhdHN1bl9jcm9zc2luZ3MgKiAyKVxuICAgICsgKGlmIERheV9vZl93ZWVrLiggPSApIGQyIERheV9vZl93ZWVrLlN1biB0aGVuIDEgZWxzZSAwKVxuICAgICsgaWYgRGF5X29mX3dlZWsuKCA9ICkgZDEgRGF5X29mX3dlZWsuU3VuIHRoZW4gLTEgZWxzZSAwKVxuOztcblxubGV0IGRpZmZfd2Vla2RheXMgdDEgdDIgPSBkaWZmIHQxIHQyIC0gZGlmZl93ZWVrZW5kX2RheXMgdDEgdDJcblxubGV0IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXAgbiA9XG4gIGxldCBzdGVwID0gaWYgSW50LiggPj0gKSBuIDAgdGhlbiAxIGVsc2UgLTEgaW5cbiAgbGV0IHJlYyBsb29wIHQgayA9XG4gICAgbGV0IHRfbmV4dCA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICAgIGlmIHNraXAgdCB0aGVuIGxvb3AgdF9uZXh0IGsgZWxzZSBpZiBJbnQuKCA9ICkgayAwIHRoZW4gdCBlbHNlIGxvb3AgdF9uZXh0IChrIC0gMSlcbiAgaW5cbiAgbG9vcCB0IChhYnMgbilcbjs7XG5cbmxldCByZWMgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgaWYgY29uZGl0aW9uIHQgdGhlbiB0IGVsc2UgZmlyc3RfZGF5X3NhdGlzZnlpbmcgKGFkZF9kYXlzIHQgc3RlcCkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgbGV0IG5leHRfZGF5ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIG5leHRfZGF5IH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBmb2xsb3dpbmdfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcHJldmlvdXNfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxuXG5sZXQgcm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgcm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IGFkZF93ZWVrZGF5cyB0IG4gPSBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwOmlzX3dlZWtlbmQgblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF93ZWVrZGF5c1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXMgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgdCBuIH5za2lwOihmdW4gZCAtPiBpc193ZWVrZW5kIGQgfHwgaXNfaG9saWRheSBkKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX2J1c2luZXNzX2RheXNcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGRhdGVzX2JldHdlZW4gfm1pbjp0MSB+bWF4OnQyID1cbiAgbGV0IHJlYyBsb29wIHQgbCA9IGlmIHQgPCB0MSB0aGVuIGwgZWxzZSBsb29wIChhZGRfZGF5cyB0ICgtMSkpICh0IDo6IGwpIGluXG4gIGxvb3AgdDIgW11cbjs7XG5cbmxldCB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCA9XG4gIGxldCBhbGxfZGF0ZXMgPSBkYXRlc19iZXR3ZWVuIH5taW4gfm1heCBpblxuICBPcHRpb24udmFsdWVfbWFwIChMaXN0LmhkIGFsbF9kYXRlcykgfmRlZmF1bHQ6W10gfmY6KGZ1biBmaXJzdF9kYXRlIC0+XG4gICAgKCogdG8gYXZvaWQgYSBzeXN0ZW0gY2FsbCBvbiBldmVyeSBkYXRlLCB3ZSBqdXN0IGdldCB0aGUgd2Vla2RheSBmb3IgdGhlIGZpcnN0XG4gICAgICAgZGF0ZSBhbmQgdXNlIGl0IHRvIGdldCBhbGwgdGhlIG90aGVyIHdlZWtkYXlzICopXG4gICAgbGV0IGZpcnN0X3dlZWtkYXkgPSBkYXlfb2Zfd2VlayBmaXJzdF9kYXRlIGluXG4gICAgbGV0IGRhdGVfYW5kX3dlZWtkYXlzID1cbiAgICAgIExpc3QubWFwaSBhbGxfZGF0ZXMgfmY6KGZ1biBpIGRhdGUgLT4gZGF0ZSwgRGF5X29mX3dlZWsuc2hpZnQgZmlyc3Rfd2Vla2RheSBpKVxuICAgIGluXG4gICAgTGlzdC5maWx0ZXJfbWFwIGRhdGVfYW5kX3dlZWtkYXlzIH5mOihmdW4gKGRhdGUsIHdlZWtkYXkpIC0+XG4gICAgICBpZiBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IHdlZWtkYXkgdGhlbiBOb25lIGVsc2UgU29tZSBkYXRlKSlcbjs7XG5cbmxldCBidXNpbmVzc19kYXRlc19iZXR3ZWVuIH5taW4gfm1heCB+aXNfaG9saWRheSA9XG4gIHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4IHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZCAtPiBub3QgKGlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIgdCB+b246ZG93ID1cbiAgbGV0IGRvdyA9IERheV9vZl93ZWVrLnRvX2ludCBkb3cgaW5cbiAgbGV0IHRwbHVzMSA9IGFkZF9kYXlzIHQgMSBpblxuICBsZXQgY3VyID0gRGF5X29mX3dlZWsudG9faW50IChkYXlfb2Zfd2VlayB0cGx1czEpIGluXG4gIGxldCBkaWZmID0gKGRvdyArIDcgLSBjdXIpIG1vZCA3IGluXG4gIGFkZF9kYXlzIHRwbHVzMSBkaWZmXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgb3BlbiBRdWlja2NoZWNrXG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgZDEgZDIgPVxuICAgIGlmIGQxID4gZDJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiRGF0ZS5nZW5fdW5pZm9ybV9pbmNsOiBib3VuZHMgYXJlIGNyb3NzZWRcIlxuICAgICAgICAgICAgfmxvd2VyX2JvdW5kOihkMSA6IHQpXG4gICAgICAgICAgICB+dXBwZXJfYm91bmQ6KGQyIDogdCldO1xuICAgIEdlbmVyYXRvci5tYXAgKEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGRpZmYgZDIgZDEpKSB+ZjooZnVuIGRheXMgLT4gYWRkX2RheXMgZDEgZGF5cylcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgZDEgZDIgPVxuICAgIEdlbmVyYXRvci53ZWlnaHRlZF91bmlvblxuICAgICAgWyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMTsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDI7IDE4LiwgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiBdXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgKG9mX3N0cmluZyBcIjE5MDAtMDEtMDFcIikgKG9mX3N0cmluZyBcIjIxMDAtMDEtMDFcIilcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBPYnNlcnZlci5jcmVhdGUgKGZ1biB0IH5zaXplOl8gfmhhc2ggLT4gaGFzaF9mb2xkX3QgaGFzaCB0KVxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFNocmlua2VyLmVtcHR5ICgpXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JcbmxldCBnZW5faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBsZWFwX3llYXJfdGFibGUgPSBsZWFwX3llYXJfdGFibGVcbiAgbGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBvcmRpbmFsX2RhdGUgPSBvcmRpbmFsX2RhdGVcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX2dlbmVyYXRvciBxdWlja2NoZWNrX2dlbmVyYXRvcilcbiAgICAgIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX3Nocmlua2VyIHF1aWNrY2hlY2tfc2hyaW5rZXIpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfaGFzaFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIGVuZClcbiAgOztcblxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgc3VmZml4ZXMgY2hhciA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgWyBzcHJpbnRmIFwiJWNcIiBjaGFyOyBzcHJpbnRmIFwiJWNNXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk1cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTS5cIiBjaGFyIF1cbiAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gc3VmZml4IC0+XG4gICAgWyBTdHJpbmcubG93ZXJjYXNlIHN1ZmZpeDsgU3RyaW5nLnVwcGVyY2FzZSBzdWZmaXggXSlcbjs7XG5cbmxldCBhbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdBJylcbmxldCBwbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdQJylcblxuKCogQXZvaWRzIHRoZSBhbGxvY2F0aW9uIHRoYXQgW0xpc3QuZmluZF0gd291bGQgZW50YWlsIGluIGJvdGggYm90aCB0aGUgY2xvc3VyZSBpbnB1dCBhbmRcbiAgIHRoZSBvcHRpb24gb3V0cHV0LiAqKVxubGV0IHJlYyBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXMgPVxuICBtYXRjaCBzdWZmaXhlcyB3aXRoXG4gIHwgc3VmZml4IDo6IHN1ZmZpeGVzIC0+XG4gICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeCB0aGVuIHN1ZmZpeCBlbHNlIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlc1xuICB8IFtdIC0+IFwiXCJcbjs7XG5cbmxldCBoYXNfY29sb24gc3RyaW5nIHBvcyB+dW50aWwgPSBwb3MgPCB1bnRpbCAmJiBDaGFyLmVxdWFsICc6JyBzdHJpbmcuW3Bvc11cblxuKCogVGhpcyBmdW5jdGlvbiBkZWZpbmVzIHdoYXQgd2UgbWVhbnQgYnkgXCJkZWNpbWFsIHBvaW50XCIsIGJlY2F1c2UgaW4gc29tZSBzdHJpbmcgZm9ybWF0c1xuICAgaXQgbWVhbnMgJy4nIGFuZCBpbiBzb21lIGl0IGNhbiBiZSAnLicgb3IgJywnLiBUaGVyZSdzIG5vIHBhcnRpY3VsYXIgZGVtYW5kIGZvciBzdXBwb3J0XG4gICBmb3IgJywnLCBhbmQgdXNpbmcganVzdCAnLicgbGV0cyB1cyB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gZm9yIHRoZSBkZWNpbWFsIHN1YnN0cmluZ1xuICAgd2l0aG91dCBhbnkgc3Vic3RpdHV0aW9ucy4gKilcbmxldCBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvcyA9IENoYXIuZXF1YWwgJy4nIHN0cmluZy5bcG9zXVxuXG5sZXQgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyBsZW4gPVxuICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJyAnIHN0cmluZy5bbGVuIC0gMV0gdGhlbiBsZW4gLSAxIGVsc2UgbGVuXG47O1xuXG5sZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lLk9mZGF5OiBpbnZhbGlkIHN0cmluZ1wiIHN0cmluZyByZWFzb25dXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgfCAnXycgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhbmQvb3IgdW5kZXJzY29yZXMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IHBhcnNlIHN0cmluZyB+ZiA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBsZXQgYW1fb3JfcG0sIHVudGlsID1cbiAgICAoKiBkaXNjcmltaW5hdGUgYW1vbmcgQU0gKDE6MzBhbSksIFBNICgxMjozMDowMCBQLk0uKSwgb3IgMjQtaHIgKDEzOjAwKS4gKilcbiAgICBtYXRjaFxuICAgICAgKCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgYW1fc3VmZml4ZXMpXG4gICAgICAsIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBwbV9zdWZmaXhlcykgKVxuICAgIHdpdGhcbiAgICB8IFwiXCIsIFwiXCIgLT4gYGhyXzI0LCBsZW5cbiAgICB8IGFtLCBcIlwiIC0+IGBocl9BTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBhbSlcbiAgICB8IFwiXCIsIHBtIC0+IGBocl9QTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBwbSlcbiAgICB8IF8sIF8gLT4gYGhyXzI0LCBhc3NlcnQgZmFsc2VcbiAgICAoKiBJbW1lZGlhdGVseSBhYm92ZSwgaXQgbWF5IHNlZW0gbm9uc2Vuc2ljYWwgdG8gd3JpdGUgW2Bocl8yNCwgYXNzZXJ0IGZhbHNlXSB3aGVuIHRoZVxuICAgICAgIFtgaHJfMjRdIGNhbiBuZXZlciBiZSByZXR1cm5lZC4gV2UgZG8gdGhpcyB0byBoZWxwIHRoZSBjb21waWxlciBmaWd1cmUgb3V0IG5ldmVyIHRvXG4gICAgICAgYWxsb2NhdGUgYSB0dXBsZSBpbiB0aGlzIGNvZGU6IHRoZSBbbGV0XSBwYXR0ZXJuIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZSBhbmQgZXZlcnlcbiAgICAgICBtYXRjaCBjbGF1c2UgaXMgc3ludGFjdGljYWxseSBhIHR1cGxlLiAqKVxuICBpblxuICBsZXQgcG9zID0gMCBpblxuICBsZXQgcG9zLCBociwgZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgPVxuICAgICgqIGUuZy4gXCIxOjAwXCIgb3IgXCIxOjAwOjAwXCIgKilcbiAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAxKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyOjAwXCIgb3IgXCIxMjowMDowMFwiICopXG4gICAgZWxzZSBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAzLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjFhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAxID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAxLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTJhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMDkzMFwiOyBtdXN0IG5vdCBoYXZlIHNlY29uZHMgKilcbiAgICBlbHNlIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kc1xuICBpblxuICBsZXQgcG9zLCBtaW4sIGV4cGVjdF9zZWNvbmRzID1cbiAgICBtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiICopXG4gICAgICBwb3MsIDAsIGZhbHNlXG4gICAgfCAoYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMpIGFzIG1heWJlX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCBwb3MgKyAzXG4gICAgICAgICwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuICAgICAgICAsIG1hdGNoIG1heWJlX3NlY29uZHMgd2l0aFxuICAgICAgICB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+IHRydWVcbiAgICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgLT5cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGVuZCBvZiBzdHJpbmcgYWZ0ZXIgbWludXRlc1wiIClcbiAgICAgICAgKCogZS5nLiBcIjEyOjAwXCIgKilcbiAgICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgICB0aGVuIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGNvbG9uIG9yIGFtL3BtIHN1ZmZpeCB3aXRoIG9wdGlvbmFsIHNwYWNlIGFmdGVyIG1pbnV0ZXNcIlxuICBpblxuICBsZXQgc2VjLCBzdWJzZWNfcG9zLCBzdWJzZWNfbGVuLCBzdWJzZWNfbm9uemVybyA9XG4gICAgbWF0Y2ggZXhwZWN0X3NlY29uZHMgd2l0aFxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgb3IgXCIxMjowMFwiICopXG4gICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgdGhlbiAwLCBwb3MsIDAsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBhY3R1YWxseSB1bnJlYWNoYWJsZSwgYmFzZWQgb24gdGhlIHZhcmlvdXMgd2F5cyB0aGF0XG4gICAgICAgICAgIFtleHBlY3Rfc2Vjb25kc10gY2FuIGVuZCB1cCBmYWxzZS4gKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJCVUc6IGRpZCBub3QgZXhwZWN0IHNlY29uZHMsIGJ1dCBmb3VuZCB0aGVtXCJcbiAgICB8IHRydWUgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBwb3MgKyAyID4gdW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjBcIiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIHR3byBkaWdpdHMgb2Ygc2Vjb25kc1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgaW5cbiAgICAgICAgbGV0IHBvcyA9IHBvcyArIDIgaW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgICAgdGhlbiBzZWMsIHBvcywgMCwgZmFsc2UgKCogZS5nLiBcIjEyOjAwOjAwLjEyM1wiICopXG4gICAgICAgIGVsc2UgaWYgcG9zIDwgdW50aWwgJiYgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3NcbiAgICAgICAgdGhlblxuICAgICAgICAgICggc2VjXG4gICAgICAgICAgLCBwb3NcbiAgICAgICAgICAsIHVudGlsIC0gcG9zXG4gICAgICAgICAgLCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgKHBvcyArIDEpIH51bnRpbCApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGVjaW1hbCBwb2ludCBvciBhbS9wbSBzdWZmaXggYWZ0ZXIgc2Vjb25kc1wiKVxuICBpblxuICBsZXQgaHIgPVxuICAgICgqIE5CLiBXZSBhbHJlYWR5IGtub3cgW2hyXSBpcyBub24tbmVnYXRpdmUsIGJlY2F1c2UgaXQncyB0aGUgcmVzdWx0IG9mXG4gICAgICAgW3JlYWRfMl9kaWdpdF9pbnRdLiAqKVxuICAgIG1hdGNoIGFtX29yX3BtIHdpdGhcbiAgICB8IGBocl9BTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwYW1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIGhyXG4gICAgfCBgaHJfUE0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMHBtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMTJcbiAgICAgIGVsc2UgaHIgKyAxMlxuICAgIHwgYGhyXzI0IC0+XG4gICAgICAobWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyB3aXRob3V0IG1pbnV0ZXMgb3IgQU0vUE1cIlxuICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT5cbiAgICAgICAgIGlmIGhyID4gMjRcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIGVsc2UgaWYgaHIgPSAyNCAmJiAobWluID4gMCB8fCBzZWMgPiAwIHx8IHN1YnNlY19ub256ZXJvKVxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInRpbWUgaXMgcGFzdCAyNDowMDowMFwiICgqIGUuZy4gXCIxMzowMDowMFwiICopXG4gICAgICAgICBlbHNlIGhyKVxuICBpblxuICBsZXQgbWluID1cbiAgICBpZiBtaW4gPiA1OSB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibWludXRlcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBtaW5cbiAgaW5cbiAgbGV0IHNlYyA9XG4gICAgaWYgc2VjID4gNjAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNlY29uZHMgb3V0IG9mIGJvdW5kc1wiIGVsc2Ugc2VjXG4gIGluXG4gIGxldCBzdWJzZWNfbGVuID0gaWYgc2VjID0gNjAgfHwgbm90IHN1YnNlY19ub256ZXJvIHRoZW4gMCBlbHNlIHN1YnNlY19sZW4gaW5cbiAgZiBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuOztcblxubGV0IHBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZiA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgbWF0Y2hcbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3RyKVxuICAgIHdpdGhcbiAgICB8IFJlc3VsdC5PayB6IC0+IHpcbiAgICB8IFJlc3VsdC5FcnJvciBzIC0+XG4gICAgICBmYWlsd2l0aGYgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogJXNcIiAoRXJyb3IudG9fc3RyaW5nX21hY2ggcykgKClcbiAgaW5cbiAgaWYgbGVuIDwgMlxuICB0aGVuIGZhaWx3aXRoIFwibGVuIDwgMlwiXG4gIGVsc2UgKFxuICAgIGxldCBociA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MgaW5cbiAgICBpZiBociA+IDI0IHRoZW4gZmFpbHdpdGggXCJob3VyID4gMjRcIjtcbiAgICBpZiBsZW4gPSAyXG4gICAgdGhlbiBmIHN0ciB+aHIgfm1pbjowIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgZWxzZSBpZiBsZW4gPCA1XG4gICAgdGhlbiBmYWlsd2l0aCBcIjIgPCBsZW4gPCA1XCJcbiAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDJdICc6JylcbiAgICB0aGVuIGZhaWx3aXRoIFwiZmlyc3QgY29sb24gbWlzc2luZ1wiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgMykgaW5cbiAgICAgIGlmIG1pbiA+PSA2MCB0aGVuIGZhaWx3aXRoIFwibWludXRlID4gNjBcIjtcbiAgICAgIGlmIGhyID0gMjQgJiYgbWluIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBtaW51dGVcIjtcbiAgICAgIGlmIGxlbiA9IDVcbiAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgIGVsc2UgaWYgbGVuIDwgOFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIjUgPCBsZW4gPCA4XCJcbiAgICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgNV0gJzonKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcInNlY29uZCBjb2xvbiBtaXNzaW5nXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgNikgaW5cbiAgICAgICAgKCogc2Vjb25kIGNhbiBiZSA2MCBpbiB0aGUgY2FzZSBvZiBhIGxlYXAgc2Vjb25kLiBVbmZvcnR1bmF0ZWx5LCB3aGF0IHdpdGhcbiAgICAgICAgICAgbm9uLWhvdXItbXVsdGlwbGUgdGltZXpvbmUgb2Zmc2V0cywgd2UgY2FuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoYXRcbiAgICAgICAgICAgdGhlIGhvdXIgb3IgbWludXRlIG11c3QgYmUgaW4gdGhhdCBjYXNlICopXG4gICAgICAgIGlmIHNlYyA+IDYwIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBzZWNvbmQ6ICVpXCIgc2VjICgpO1xuICAgICAgICBpZiBociA9IDI0ICYmIHNlYyA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc2Vjb25kc1wiO1xuICAgICAgICBpZiBsZW4gPSA4XG4gICAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICAgIGVsc2UgaWYgbGVuID0gOVxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwibGVuZ3RoID0gOVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHN0ci5bcG9zICsgOF0gd2l0aFxuICAgICAgICAgIHwgJy4nIHwgJywnIC0+XG4gICAgICAgICAgICBsZXQgc3Vic2VjX3BvcyA9IHBvcyArIDggaW5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfbGVuID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVyb1xuICAgICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgICAgICAoc3Vic2VjX3BvcyArIDEpXG4gICAgICAgICAgICAgICAgICB+dW50aWw6KHBvcyArIGxlbilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBzZWMgPSA2MCAtPiAwXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIGhyID0gMjQgLT4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc3Vic2Vjb25kc1wiXG4gICAgICAgICAgICAgIHwgXyAtPiBsZW4gLSA4XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIm1pc3Npbmcgc3Vic2Vjb25kIHNlcGFyYXRvclwiKSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgSGFzaC5CdWlsdGluXG5cbmluY2x1ZGUgKFxuICBCYXNlIDpcbiAgc2lnXG4gICAgdHlwZSBub25yZWMgJ2EgYXJyYXkgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgYm9vbCA9IGJvb2wgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGNoYXIgPSBjaGFyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBleG4gPSBleG4gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIG5vbnJlYyBmbG9hdCA9IGZsb2F0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludDMyID0gaW50MzIgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludDY0ID0gaW50NjQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBuYXRpdmVpbnQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIG9wdGlvbiA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2EgcmVmID0gJ2EgcmVmIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBzdHJpbmcgPSBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJ5dGVzID0gYnl0ZXMgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIHVuaXQgPSB1bml0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxuICB3aXRoIHR5cGUgYm9vbCA6PSBib29sXG4gIHdpdGggdHlwZSBjaGFyIDo9IGNoYXJcbiAgd2l0aCB0eXBlIGV4biA6PSBleG5cbiAgd2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG4gIHdpdGggdHlwZSBpbnQgOj0gaW50XG4gIHdpdGggdHlwZSBpbnQzMiA6PSBpbnQzMlxuICB3aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbiAgd2l0aCB0eXBlICdhIGxpc3QgOj0gJ2EgbGlzdFxuICB3aXRoIHR5cGUgbmF0aXZlaW50IDo9IG5hdGl2ZWludFxuICB3aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgc3RyaW5nIDo9IHN0cmluZ1xuICB3aXRoIHR5cGUgYnl0ZXMgOj0gYnl0ZXNcbiAgd2l0aCB0eXBlIHVuaXQgOj0gdW5pdClcbiIsIm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgZXhjZXB0aW9uIE5hbl9vcl9pbmYgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGVxdWFsXVxuXG4gICAgbGV0IHZlcmlmeSB0ID1cbiAgICAgIG1hdGNoIENhbWwuY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gICAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gKClcbiAgICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gcmFpc2UgTmFuX29yX2luZlxuICAgIDs7XG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZsb2F0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlIHQgPVxuICAgICAgICAgICAgdmVyaWZ5IHQ7XG4gICAgICAgICAgICB0XG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlIHQgPVxuICAgICAgICAgICAgdmVyaWZ5IHQ7XG4gICAgICAgICAgICB0XG4gICAgICAgICAgOztcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IEZsb2F0LnNleHBfb2ZfdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIGFzIHNleHAgLT5cbiAgICAgICAgbGV0IHQgPSBGbG9hdC50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAodHJ5IHZlcmlmeSB0IHdpdGhcbiAgICAgICAgIHwgZSAtPiBJbXBvcnQub2Zfc2V4cF9lcnJvciAoSW1wb3J0LkV4bi50b19zdHJpbmcgZSkgc2V4cCk7XG4gICAgICAgIHRcbiAgICAgIHwgcyAtPiBJbXBvcnQub2Zfc2V4cF9lcnJvciBcIkRlY2ltYWwudF9vZl9zZXhwOiBFeHBlY3RlZCBBdG9tLCBmb3VuZCBMaXN0XCIgc1xuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBGbG9hdC50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChmbG9hdFtAcXVpY2tjaGVjay5nZW5lcmF0b3IgRmxvYXQuZ2VuX2Zpbml0ZV0pXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICAgIGxldCBvZl9tdWx0IGYgPSBmXG4gICAgbGV0IHRvX211bHQgdCA9IHRcbiAgICBsZXQgb2ZfcGVyY2VudGFnZSBmID0gZiAvLiAxMDAuXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2UgdCA9IHQgKi4gMTAwLlxuICAgIGxldCBvZl9icCBmID0gZiAvLiAxMF8wMDAuXG4gICAgbGV0IHRvX2JwIHQgPSB0ICouIDEwXzAwMC5cbiAgICBsZXQgb2ZfYnBfaW50IGkgPSBvZl9icCAoRmxvYXQub2ZfaW50IGkpXG4gICAgbGV0IHRvX2JwX2ludCB0ID0gRmxvYXQudG9faW50ICh0b19icCB0KVxuXG4gICAgbGV0IHJvdW5kX3NpZ25pZmljYW50IHAgfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHNcbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfbXVsdCBwIH5kZWNpbWFsX2RpZ2l0cyA9IEZsb2F0LnJvdW5kX2RlY2ltYWwgcCB+ZGVjaW1hbF9kaWdpdHNcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAuKSB+ZGVjaW1hbF9kaWdpdHMgLy4gMTAwLlxuICAgIDs7XG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9icCBwIH5kZWNpbWFsX2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9kZWNpbWFsIChwICouIDEwMDAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMDAwLlxuICAgIDs7XG5cbiAgICBtb2R1bGUgRm9ybWF0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEV4cG9uZW50IG9mIGludFxuICAgICAgICB8IEV4cG9uZW50X0Ugb2YgaW50XG4gICAgICAgIHwgRGVjaW1hbCBvZiBpbnRcbiAgICAgICAgfCBPY2FtbFxuICAgICAgICB8IENvbXBhY3Qgb2YgaW50XG4gICAgICAgIHwgQ29tcGFjdF9FIG9mIGludFxuICAgICAgICB8IEhleCBvZiBpbnRcbiAgICAgICAgfCBIZXhfRSBvZiBpbnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBleHBvbmVudCB+cHJlY2lzaW9uID0gRXhwb25lbnQgcHJlY2lzaW9uXG4gICAgICBsZXQgZXhwb25lbnRfRSB+cHJlY2lzaW9uID0gRXhwb25lbnRfRSBwcmVjaXNpb25cbiAgICAgIGxldCBkZWNpbWFsIH5wcmVjaXNpb24gPSBEZWNpbWFsIHByZWNpc2lvblxuICAgICAgbGV0IG9jYW1sID0gT2NhbWxcbiAgICAgIGxldCBjb21wYWN0IH5wcmVjaXNpb24gPSBDb21wYWN0IHByZWNpc2lvblxuICAgICAgbGV0IGNvbXBhY3RfRSB+cHJlY2lzaW9uID0gQ29tcGFjdF9FIHByZWNpc2lvblxuICAgICAgbGV0IGhleCB+cHJlY2lzaW9uID0gSGV4IHByZWNpc2lvblxuICAgICAgbGV0IGhleF9FIH5wcmVjaXNpb24gPSBIZXhfRSBwcmVjaXNpb25cblxuICAgICAgbGV0IGZvcm1hdF9mbG9hdCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRXhwb25lbnQgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLiplXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRXhwb25lbnRfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkVcIiBwcmVjaXNpb25cbiAgICAgICAgfCBEZWNpbWFsIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZlwiIHByZWNpc2lvblxuICAgICAgICB8IE9jYW1sIC0+IHNwcmludGYgXCIlRlwiXG4gICAgICAgIHwgQ29tcGFjdCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmdcIiBwcmVjaXNpb25cbiAgICAgICAgfCBDb21wYWN0X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipHXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgSGV4IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qaFwiIHByZWNpc2lvblxuICAgICAgICB8IEhleF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qSFwiIHByZWNpc2lvblxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBmb3JtYXQgeCBmb3JtYXQgPVxuICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgIGxldCBzdHJpbmcgZmxvYXQgPSBGb3JtYXQuZm9ybWF0X2Zsb2F0IGZvcm1hdCBmbG9hdCBpblxuICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgIHRoZW4gXCIweFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAxLlxuICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBTdHJpbmdhYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAoKiBXQVJOSU5HIC0gUExFQVNFIFJFQUQgQkVGT1JFIEVESVRJTkcgVEhFU0UgRlVOQ1RJT05TOlxuXG4gICAgICAgICBUaGUgc3RyaW5nIGNvbnZlcnRlcnMgaW4gU3RhYmxlLlYxIHNob3VsZCBuZXZlciBjaGFuZ2UuICBJZiB5b3UgYXJlIGNoYW5naW5nIHRoZVxuICAgICAgICAgc2VtYW50aWNzIG9mIGFueXRoaW5nIHRoYXQgYWZmZWN0cyB0aGUgc2V4cCBvciBiaW4taW8gcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzIG9mXG4gICAgICAgICB0aGlzIHR5cGUgKHRoaXMgaW5jbHVkZXMgdG9fc3RyaW5nIGFuZCBvZl9zdHJpbmcpIG1ha2UgYSBTdGFibGUuVjIgYW5kIG1ha2UgeW91clxuICAgICAgICAgY2hhbmdlcyB0aGVyZS4gIFRoYW5rcyEgKilcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICAgIGxldCBzdHJpbmcgZmxvYXQgPSBzcHJpbnRmIFwiJS42R1wiIGZsb2F0IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICAgIHRoZW4gXCIweFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgICAgOztcblxuICAgICAgbGV0IHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0X29mX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcInhcIiB3aXRoXG4gICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0clxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiJVwiIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyICouIDAuMDFcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcImJwXCIgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgc3RyIC0+IG9mX2JwIChmbG9hdF9vZl9zdHJpbmcgc3RyKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiUGVyY2VudC5vZl9zdHJpbmc6IG11c3QgZW5kIGluIHgsICUlLCBvciBicDogJXNcIiBzdHIgKCkpKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgICBsZXQgZmxvYXQgc3RyID0gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLnRfb2Zfc2V4cCAoU2V4cC5BdG9tIHN0cikgaW5cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyBzdHIgZmxvYXRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgc3RyID0gcmVhbGx5X29mX3N0cmluZyBzdHIgRmxvYXQub2Zfc3RyaW5nXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICAgIGluY2x1ZGUgKFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChTdHJpbmdhYmxlKSA6IFNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBpbmNsdWRlIChGbG9hdCA6IEJpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBiaW5faW9dXG5cbiAgICAgICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgY29tcGFyYWJsZS1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0XG4gICAgICAgICAgIHNlcmlhbGl6YXRpb24gcmF0aGVyIHRoYW4gcGVyY2VudCBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmdcbiAgICAgICAgICAgY29tcGFyYWJsZS1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXIgc2VyaWFsaXphdGlvbi4gKilcbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICAgICAgfCBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgICAgOztcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgIGxldCBub25lID0gRmxvYXQubmFuXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gRmxvYXQuaXNfbmFuIHRcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgPSBpc19zb21lXG4gICAgICBsZXQgc29tZSA9IEZuLmlkXG4gICAgICBsZXQgdW5jaGVja2VkX3ZhbHVlID0gRm4uaWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcbiAgICAgIGxldCBhcHBseV93aXRoX25vbmVfYXNfbmFuID0gKCAqLiApXG4gICAgICBsZXQgb2ZfbXVsdF93aXRoX25hbl9hc19ub25lID0gRm4uaWRcbiAgICAgIGxldCB0b19tdWx0X3dpdGhfbm9uZV9hc19uYW4gPSBGbi5pZFxuXG4gICAgICBsZXQgb2Zfb3B0aW9uIG9wdCA9XG4gICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSB2IC0+IHNvbWUgdlxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgaWYgaXNfc29tZSB0XG4gICAgICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICAgICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiUGVyY2VudC5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gaWYgaXNfc29tZSB0IHRoZW4gdW5jaGVja2VkX3ZhbHVlIHQgZWxzZSBkZWZhdWx0XG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYxLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjEudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMS50IE9wdGlvbi50XVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgaXNfemVybyB0ID0gdCA9IDAuXG5sZXQgYXBwbHkgdCBmID0gdCAqLiBmXG5sZXQgc2NhbGUgdCBmID0gdCAqLiBmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgRmxvYXRcblxuICBsZXQgKCAvLyApIHggeSA9IG9mX211bHQgeCAvLiBvZl9tdWx0IHlcbmVuZCA6XG5zaWdcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8vICkgOiB0IC0+IHQgLT4gZmxvYXRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBpc19uYW4gOiB0IC0+IGJvb2xcbiAgdmFsIGlzX2luZiA6IHQgLT4gYm9vbFxuICB2YWwgc2lnbl9leG4gOiB0IC0+IFNpZ24udFxuXG4gIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgPSBGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeVxubGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzID0gU3RyaW5nYWJsZS5vZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgc1xubGV0IHRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiBzZXhwID0gb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIChTZXhwLnRvX3N0cmluZyBzZXhwKVxuXG5tb2R1bGUgQWx3YXlzX3BlcmNlbnRhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZm9ybWF0IHggZm9ybWF0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgKHggKi4gMTAwLikgXiBcIiVcIlxuICBsZXQgdG9fc3RyaW5nIHggPSBzcHJpbnRmIFwiJS42RyUlXCIgKHggKiAxMDAuKVxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCByYW5kb21pemUgc3BhbiB+cGVyY2VudCB+c2NhbGUgPVxuICBsZXQgbXVsdCA9IFBlcmNlbnQudG9fbXVsdCBwZXJjZW50IGluXG4gIGlmIEZsb2F0LiggPCApIG11bHQgMC4gfHwgRmxvYXQuKCA+ICkgbXVsdCAxLlxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiU3Bhbi5yYW5kb21pemU6IHBlcmNlbnQgaXMgb3V0IG9mIHJhbmdlIFsweCwgMXhdXCIgKHBlcmNlbnQgOiBQZXJjZW50LnQpXTtcbiAgbGV0IGZhY3RvciA9IFJhbmRvbS5mbG9hdF9yYW5nZSAoMS4gLS4gbXVsdCkgKEZsb2F0Lm9uZV91bHAgYFVwICgxLiArLiBtdWx0KSkgaW5cbiAgc2NhbGUgc3BhbiBmYWN0b3Jcbjs7XG5cbmxldCBmb3JtYXRfZGVjaW1hbCBuIHRlbnRocyB1bml0cyA9XG4gIGFzc2VydCAodGVudGhzID49IDAgJiYgdGVudGhzIDwgMTApO1xuICBpZiBuIDwgMTAgJiYgdGVudGhzIDw+IDBcbiAgdGhlbiBzcHJpbnRmIFwiJWQuJWQlc1wiIG4gdGVudGhzIHVuaXRzXG4gIGVsc2Ugc3ByaW50ZiBcIiVkJXNcIiBuIHVuaXRzXG47O1xuXG5sZXQgc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgPVxuICBsZXQgcyA9XG4gICAgaWYgaHIgPj0gMjRcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIChociAvIDI0KSAoSW50Lm9mX2Zsb2F0IChGbG9hdC5vZl9pbnQgKGhyICUgMjQpIC8uIDIuNCkpIFwiZFwiXG4gICAgZWxzZSBpZiBociA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIGhyIChtaW4gLyA2KSBcImhcIlxuICAgIGVsc2UgaWYgbWluID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbWluIChzZWMgLyA2KSBcIm1cIlxuICAgIGVsc2UgaWYgc2VjID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgc2VjIChtcyAvIDEwMCkgXCJzXCJcbiAgICBlbHNlIGlmIG1zID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbXMgKHVzIC8gMTAwKSBcIm1zXCJcbiAgICBlbHNlIGlmIHVzID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgdXMgKG5zIC8gMTAwKSBcInVzXCJcbiAgICBlbHNlIHNwcmludGYgXCIlaW5zXCIgbnNcbiAgaW5cbiAgbWF0Y2ggKHNpZ24gOiBTaWduLnQpIHdpdGhcbiAgfCBOZWcgLT4gXCItXCIgXiBzXG4gIHwgWmVybyB8IFBvcyAtPiBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBQYXJ0cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzaWduIDogU2lnbi50XG4gICAgICAgIDsgaHIgOiBpbnRcbiAgICAgICAgOyBtaW4gOiBpbnRcbiAgICAgICAgOyBzZWMgOiBpbnRcbiAgICAgICAgOyBtcyA6IGludFxuICAgICAgICA7IHVzIDogaW50XG4gICAgICAgIDsgbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgTGlrZV9hX2Zsb2F0ID0gc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsIHplcm8gOiB0XG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogdFxuICAgICAgdmFsIGFicyA6IHQgLT4gdFxuICAgICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIG1vZHVsZSBDb25zdGFudCA6IHNpZ1xuICAgICAgICB2YWwgbmFub3NlY29uZHNfcGVyX3NlY29uZCA6IGZsb2F0XG4gICAgICAgIHZhbCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA6IGZsb2F0XG4gICAgICAgIHZhbCBtaWxsaXNlY29uZHNfcGVyX3NlY29uZCA6IGZsb2F0XG4gICAgICAgIHZhbCBuYW5vc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaWxsaXNlY29uZCA6IHRcbiAgICAgICAgdmFsIHNlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pbnV0ZSA6IHRcbiAgICAgICAgdmFsIGhvdXIgOiB0XG4gICAgICAgIHZhbCBkYXkgOiB0XG4gICAgICBlbmRcblxuICAgICAgdmFsIHRvX3BhcnRzIDogdCAtPiBQYXJ0cy50XG4gICAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgICAgdmFsIHByZXYgOiB0IC0+IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gICAgICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLlNwYW4gdmVyc2lvbiB0byBzdGFibGUubWwgKilcbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG4gICAgICBlbmQgOlxuICAgICAgICBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgICgqIHRoaXMgcHJldmVudHMgYW55IHdvcnJ5IGFib3V0IGhhdmluZyB0aGVzZSB2ZXJ5IGNvbW1vbiBuYW1lcyByZWRlZmluZWQgYmVsb3cgYW5kXG4gICAgICAgICBtYWtlcyB0aGVpciB1c2FnZSB3aXRoaW4gdGhpcyBtb2R1bGUgc2FmZXIuICBDb25zdGFudCBpcyBpbmNsdWRlZCBhdCB0aGUgdmVyeVxuICAgICAgICAgYm90dG9tIHRvIHJlLWV4cG9ydCB0aGVzZSBjb25zdGFudHMgaW4gYSBtb3JlIGNvbnZlbmllbnQgd2F5ICopXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTlcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kID0gMUU2XG4gICAgICAgIGxldCBtaWxsaXNlY29uZHNfcGVyX3NlY29uZCA9IDFFM1xuXG4gICAgICAgICgqIHNwYW5zIGFyZSBzdG9yZWQgYXMgYSBmbG9hdCBpbiBzZWNvbmRzICopXG4gICAgICAgIGxldCBuYW5vc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWNyb3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgc2Vjb25kID0gb2ZfZmxvYXQgMS5cbiAgICAgICAgbGV0IG1pbnV0ZSA9IG9mX2Zsb2F0IDYwLlxuICAgICAgICBsZXQgaG91ciA9IG9mX2Zsb2F0ICg2MC4gKi4gNjAuKVxuICAgICAgICBsZXQgZGF5ID0gb2ZfZmxvYXQgKDI0LiAqLiA2MC4gKi4gNjAuKVxuICAgICAgZW5kXG5cblxuICAgICAgbGV0IHRvX3BhcnRzIHQgOiBQYXJ0cy50ID1cbiAgICAgICAgbGV0IHNpZ24gPSBGbG9hdC5zaWduX2V4biB0IGluXG4gICAgICAgIGxldCB0ID0gYWJzIHQgaW5cbiAgICAgICAgbGV0IGludGVncmFsID0gRmxvYXQucm91bmRfZG93biB0IGluXG4gICAgICAgIGxldCBmcmFjdGlvbmFsID0gdCAtLiBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9kb3duX2V4biBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgbmFub3NlY29uZHMgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4gKGZyYWN0aW9uYWwgKi4gMUU5KSBpblxuICAgICAgICBsZXQgc2Vjb25kcywgbmFub3NlY29uZHMgPVxuICAgICAgICAgIGlmIEludC5lcXVhbCBuYW5vc2Vjb25kcyAxXzAwMF8wMDBfMDAwXG4gICAgICAgICAgdGhlbiBJbnQuc3VjYyBzZWNvbmRzLCAwXG4gICAgICAgICAgZWxzZSBzZWNvbmRzLCBuYW5vc2Vjb25kc1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2VjID0gc2Vjb25kcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWNvbmRzIC8gNjAgaW5cbiAgICAgICAgbGV0IG1pbiA9IG1pbnV0ZXMgbW9kIDYwIGluXG4gICAgICAgIGxldCBociA9IG1pbnV0ZXMgLyA2MCBpblxuICAgICAgICBsZXQgbnMgPSBuYW5vc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzID0gbmFub3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCB1cyA9IG1pY3Jvc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzID0gbWljcm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgbXMgPSBtaWxsaXNlY29uZHMgaW5cbiAgICAgICAgeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCAoIC8gKSB0IGYgPSBULm9mX2Zsb2F0ICgodCA6IFQudCA6PiBmbG9hdCkgLy4gZilcbiAgICBsZXQgKCAvLyApIChmIDogVC50KSAodCA6IFQudCkgPSAoZiA6PiBmbG9hdCkgLy4gKHQgOj4gZmxvYXQpXG5cbiAgICAoKiBNdWx0aXBseWluZyBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIGRpdmlzaW9uIGJ5IDFFLTMgKilcbiAgICBsZXQgdG9fbnMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b191cyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19tcyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19zZWMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpXG4gICAgbGV0IHRvX21pbiB4ID0geCAvLyBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCB0b19ociB4ID0geCAvLyBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgdG9fZGF5IHggPSB4IC8vIFQuQ29uc3RhbnQuZGF5XG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4geCA9IEZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuICh0b19zZWMgeClcbiAgICBsZXQgKCAqKiApIGYgKHQgOiBULnQpID0gVC5vZl9mbG9hdCAoZiAqLiAodCA6PiBmbG9hdCkpXG5cbiAgICAoKiBEaXZpc2lvbiBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIG11bHRpcGx5aW5nIGJ5IDFFLTMgKilcbiAgICBsZXQgb2ZfbnMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl91cyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9tcyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9zZWMgeCA9IFQub2ZfZmxvYXQgeFxuICAgIGxldCBvZl9pbnRfc2VjIHggPSBvZl9zZWMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnQzMl9zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50MzIudG9fZmxvYXQgc2VjKVxuXG4gICAgKCogTm90ZSB0aGF0IFtJbnQ2My50b19mbG9hdF0gY2FuIGxvc2UgcHJlY2lzaW9uLCBidXQgb25seSBvbiBpbnB1dHMgbGFyZ2UgZW5vdWdoIHRoYXRcbiAgICAgICBbb2Zfc2VjXSBpbiBlaXRoZXIgdGhlIFRpbWVfbnMgb3IgVGltZV9mbG9hdCBjYXNlIHdvdWxkIGxvc2UgcHJlY2lzaW9uIChvciBqdXN0IGJlXG4gICAgICAgcGxhaW4gb3V0IG9mIGJvdW5kcykgYW55d2F5LiAqKVxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50NjMudG9fZmxvYXQgc2VjKVxuICAgIGxldCBvZl9taW4geCA9IHggKiogVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgb2ZfaHIgeCA9IHggKiogVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IG9mX2RheSB4ID0geCAqKiBULkNvbnN0YW50LmRheVxuXG4gICAgbGV0IGRpdmlkZV9ieV91bml0X29mX3RpbWUgdCB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0XG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHRcbiAgICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0XG4gICAgICB8IE1pbnV0ZSAtPiB0b19taW4gdFxuICAgICAgfCBIb3VyIC0+IHRvX2hyIHRcbiAgICAgIHwgRGF5IC0+IHRvX2RheSB0XG4gICAgOztcblxuICAgIGxldCBzY2FsZV9ieV91bml0X29mX3RpbWUgZmxvYXQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG9mX25zIGZsb2F0XG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IG9mX3VzIGZsb2F0XG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IG9mX21zIGZsb2F0XG4gICAgICB8IFNlY29uZCAtPiBvZl9zZWMgZmxvYXRcbiAgICAgIHwgTWludXRlIC0+IG9mX21pbiBmbG9hdFxuICAgICAgfCBIb3VyIC0+IG9mX2hyIGZsb2F0XG4gICAgICB8IERheSAtPiBvZl9kYXkgZmxvYXRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgID8oc2lnbiA9IFNpZ24uUG9zKVxuICAgICAgICAgID8oZGF5ID0gMClcbiAgICAgICAgICA/KGhyID0gMClcbiAgICAgICAgICA/KG1pbiA9IDApXG4gICAgICAgICAgPyhzZWMgPSAwKVxuICAgICAgICAgID8obXMgPSAwKVxuICAgICAgICAgID8odXMgPSAwKVxuICAgICAgICAgID8obnMgPSAwKVxuICAgICAgICAgICgpXG4gICAgICA9XG4gICAgICBsZXQgKCArICkgPSBULiggKyApIGluXG4gICAgICBsZXQgdCA9XG4gICAgICAgIG9mX2RheSAoRmxvYXQub2ZfaW50IGRheSlcbiAgICAgICAgKyBvZl9ociAoRmxvYXQub2ZfaW50IGhyKVxuICAgICAgICArIG9mX21pbiAoRmxvYXQub2ZfaW50IG1pbilcbiAgICAgICAgKyBvZl9zZWMgKEZsb2F0Lm9mX2ludCBzZWMpXG4gICAgICAgICsgb2ZfbXMgKEZsb2F0Lm9mX2ludCBtcylcbiAgICAgICAgKyBvZl91cyAoRmxvYXQub2ZfaW50IHVzKVxuICAgICAgICArIG9mX25zIChGbG9hdC5vZl9pbnQgbnMpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICB8IE5lZyAtPiBULiggLSApIFQuemVybyB0XG4gICAgICB8IFBvcyB8IFplcm8gLT4gdFxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbnN0YW50XG5cbiAgICBsZXQgcmFuZG9taXplIHQgfnBlcmNlbnQgPSBTcGFuX2hlbHBlcnMucmFuZG9taXplIHQgfnBlcmNlbnQgfnNjYWxlXG5cbiAgICBsZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICAgICAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gICAgICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgIGxldCBvZl9zdHJpbmdfdjFfdjIgKHMgOiBzdHJpbmcpIH5pc192MiA9XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcImVtcHR5IHN0cmluZ1wiXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBmbG9hdCBuID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5kcm9wX3N1ZmZpeCBzIG4gd2l0aFxuICAgICAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwibm8gbnVtYmVyIGdpdmVuXCJcbiAgICAgICAgICAgIHwgcyAtPlxuICAgICAgICAgICAgICBsZXQgdiA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgICAgICAgICAgIFZhbGlkYXRlLm1heWJlX3JhaXNlIChGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeSB2KTtcbiAgICAgICAgICAgICAgdlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgIChtYXRjaCBzLltJbnQuKCAtICkgbGVuIDFdIHdpdGhcbiAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICBpZiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbSdcbiAgICAgICAgICAgICB0aGVuIG9mX21zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ3UnXG4gICAgICAgICAgICAgdGhlbiBvZl91cyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICduJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbnMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBULm9mX2Zsb2F0IChmbG9hdCAxKVxuICAgICAgICAgICB8ICdtJyAtPiBvZl9taW4gKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2gnIC0+IG9mX2hyIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdkJyAtPiBvZl9kYXkgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIGlmIGlzX3YyXG4gICAgICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbnMsIHVzLCBtcywgcywgbSwgaCwgb3IgZC5cIlxuICAgICAgICAgICAgIGVsc2UgZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG1zLCBzLCBtLCBoLCBvciBkLlwiKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmIFwiU3Bhbi5vZl9zdHJpbmcgY291bGQgbm90IHBhcnNlICclcyc6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cCA9IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwXG5cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwIG9mIFNleHAudCAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MiA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmdfdjFfdjIgeCB+aXNfdjIgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cCAoc2V4cCwgZXhuKSkgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgc2V4cCkgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc3RyaW5nIH5pc192MiBzdWZmaXggZmxvYXQgPVxuICAgICAgaWYgaXNfdjJcbiAgICAgICgqIFRoaXMgaXMgdGhlIHNhbWUgZmxvYXQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdXNlZCBpbiBbRmxvYXQuc2V4cF9vZl90XS4gIEl0J3MgbGlrZVxuICAgICAgICAgW0Zsb2F0LnRvX3N0cmluZ10sIGJ1dCBtYXkgbGVhdmUgb2ZmIHRyYWlsaW5nIHBlcmlvZC4gKilcbiAgICAgIHRoZW4gIVNleHBsaWIuQ29udi5kZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBmbG9hdCBeIHN1ZmZpeFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJWclc1wiIGZsb2F0IHN1ZmZpeFxuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgKCogSSdkIGxpa2UgaXQgdG8gYmUgdGhlIGNhc2UgdGhhdCB5b3UgY291bGQgbmV2ZXIgY29uc3RydWN0IGFuIGluZmluaXRlIHNwYW4sIGJ1dCBJXG4gICAgICAgY2FuJ3QgdGhpbmsgb2YgYSBnb29kIHdheSB0byBlbmZvcmNlIGl0LiAgU28gdGhpcyB0b19zdHJpbmcgZnVuY3Rpb24gY2FuIHByb2R1Y2VcbiAgICAgICBzdHJpbmdzIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGV5IGFyZSBmZWQgdG8gb2Zfc3RyaW5nICopXG4gICAgbGV0IHRvX3N0cmluZ192MV92MiAodCA6IFQudCkgfmlzX3YyID1cbiAgICAgICgqIHRoaXMgaXMgYSBzYWQgYnJva2VuIGFic3RyYWN0aW9uLi4uICopXG4gICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgKHQgOj4gZmxvYXQpIHdpdGhcbiAgICAgIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gXCIwc1wiXG4gICAgICB8IEMuSW5maW5pdGUgLT4gaWYgVC4oID4gKSB0IFQuemVybyB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICAgICAgfCBDLk5hbiAtPiBcIm5hblwiXG4gICAgICB8IEMuTm9ybWFsIC0+XG4gICAgICAgIGxldCAoIDwgKSA9IFQuKCA8ICkgaW5cbiAgICAgICAgbGV0IGFic190ID0gVC5vZl9mbG9hdCAoRmxvYXQuYWJzICh0IDo+IGZsb2F0KSkgaW5cbiAgICAgICAgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm5zXCIgKHRvX25zIHQpXG4gICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbGxpc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInVzXCIgKHRvX3VzIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LnNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtc1wiICh0b19tcyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5taW51dGVcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwic1wiICh0b19zZWMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuaG91clxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtXCIgKHRvX21pbiB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5kYXlcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwiaFwiICh0b19ociB0KVxuICAgICAgICBlbHNlIHN0cmluZyB+aXNfdjIgXCJkXCIgKHRvX2RheSB0KVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyID0gU2V4cC5BdG9tICh0b19zdHJpbmdfdjFfdjIgdCB+aXNfdjIpXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6dHJ1ZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192Mjp0cnVlXG4gIGVuZFxuXG4gIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgIGxldCBvcGVuIFQgaW5cbiAgICAgIGxldCBvcGVuIENvbnN0YW50IGluXG4gICAgICBsZXQgYWJzX3QgPSBULmFicyB0IGluXG4gICAgICBpZiBhYnNfdCA+PSBkYXlcbiAgICAgIHRoZW4gRGF5XG4gICAgICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgICAgIHRoZW4gSG91clxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgICAgIHRoZW4gTWludXRlXG4gICAgICBlbHNlIGlmIGFic190ID49IHNlY29uZFxuICAgICAgdGhlbiBTZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgIGVsc2UgTmFub3NlY29uZFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgLT4gVC50ID1cbiAgICAgIGxldCBvcGVuIFQuQ29uc3RhbnQgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaWxsaXNlY29uZFxuICAgICAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gICAgICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgICAgIHwgSG91ciAtPiBob3VyXG4gICAgICB8IERheSAtPiBkYXlcbiAgICA7O1xuXG4gICAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IFwibnNcIlxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBcInVzXCJcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gXCJtc1wiXG4gICAgICB8IFNlY29uZCAtPiBcInNcIlxuICAgICAgfCBNaW51dGUgLT4gXCJtXCJcbiAgICAgIHwgSG91ciAtPiBcImhcIlxuICAgICAgfCBEYXkgLT4gXCJkXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBcIlRpbWUuU3Bhbi5vZl9zdHJpbmc6IFwiIF4gcmVhc29uIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIG1lc3NhZ2Ugc3RyaW5nXVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCB1bml0X29mX3RpbWVfbGlzdCA9XG4gICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZV9saXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IHN1ZmZpeFwiXG4gICAgICAgIHwgdW5pdF9vZl90aW1lIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHN0cmluZyB+cG9zOmluZGV4IH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgICAgdGhlbiB1bml0X29mX3RpbWVcbiAgICAgICAgICBlbHNlIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHJlc3RcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleCA9XG4gICAgICAgICgqIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBcIm1zXCIgY29tZXMgYmVmb3JlIFwibVwiIGluIFtVbml0X29mX3RpbWUuYWxsXSB0byBnZXQgYVxuICAgICAgICAgICBjb3JyZWN0IG1hdGNoIG9uIG1pbGxpc2Vjb25kIHRpbWVzdGFtcHMuIFRoaXMgYXNzdW1wdGlvbiBpcyBkZW1vbnN0cmF0ZWQgaW4gdGhlXG4gICAgICAgICAgIGV4cGVjdCB0ZXN0IGJlbG93LiAqKVxuICAgICAgICBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCBVbml0X29mX3RpbWUuYWxsXG4gICAgICA7O1xuXG4gICAgICAoKiBXZSB2YWxpZGF0ZSBtYWduaXR1ZGUgc3RyaW5ncyBzbyB0aGF0IHdlIGtub3cgd2hlcmUgdGhlIHVuaXQtb2YtdGltZSBzdWZmaXhcbiAgICAgICAgIGJlZ2lucywgYW5kIHNvIHRoYXQgb25seSBzZW5zaWJsZSBzdHJpbmdzIGFyZSBhbGxvd2VkLiBXZSBkbyBub3Qgd2FudCB0byBiZSBhc1xuICAgICAgICAgcGVybWlzc2l2ZSBhcyBbRmxvYXQub2Zfc3RyaW5nXTsgZm9yIGV4YW1wbGUsIGhleGFkZWNpbWFsIHNwYW4gbWFnbml0dWRlcyBhcmUgbm90XG4gICAgICAgICBhbGxvd2VkLiBBZnRlciB2YWxpZGF0aW9uLCB3ZSBzdGlsbCB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gdG8gcHJvZHVjZSB0aGUgYWN0dWFsXG4gICAgICAgICB2YWx1ZS4gKilcbiAgICAgIG1vZHVsZSBGbG9hdF9wYXJzZXIgPSBzdHJ1Y3RcbiAgICAgICAgKCogW0luX2RlY2ltYWxfaGF2ZV9kaWdpdF0gaW5jbHVkZXMgaGF2aW5nIGEgZGlnaXQgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICB0eXBlIHN0YXRlID1cbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG5cbiAgICAgICAgdHlwZSB0b2tlbiA9XG4gICAgICAgICAgfCBEaWdpdFxuICAgICAgICAgIHwgUG9pbnRcbiAgICAgICAgICB8IFVuZGVyXG4gICAgICAgICAgfCBTaWduXG4gICAgICAgICAgfCBFeHB0XG5cbiAgICAgICAgbGV0IHN0YXRlX2lzX2ZpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCAtPiBmYWxzZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b2tlbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gU29tZSBEaWdpdFxuICAgICAgICAgIHwgJy4nIC0+IFNvbWUgUG9pbnRcbiAgICAgICAgICB8ICdfJyAtPiBTb21lIFVuZGVyXG4gICAgICAgICAgfCAnLScgfCAnKycgLT4gU29tZSBTaWduXG4gICAgICAgICAgfCAnRScgfCAnZScgLT4gU29tZSBFeHB0XG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IG1hZ25pdHVkZVwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGUgPVxuICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBsZW5cbiAgICAgICAgICB0aGVuIGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHRva2VuX29mX2NoYXIgc3RyaW5nLltpbmRleF0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgIHwgU29tZSB0b2tlbiAtPlxuICAgICAgICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHN0YXRlLCB0b2tlbiB3aXRoXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgU2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgUG9pbnQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFNpZ24gLT5cbiAgICAgICAgICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFNpZ24gLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleDooaW5kZXggKyAxKSB+bGVuIH5zdGF0ZSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZTpJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgcmVjIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleCB+bGVuID1cbiAgICAgICAgaWYgSW50LmVxdWFsIGluZGV4IGxlblxuICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc3VmZml4X2luZGV4ID0gRmxvYXRfcGFyc2VyLmZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4OnN1ZmZpeF9pbmRleCBpblxuICAgICAgICAgIGxldCB1bnRpbF9pbmRleCA9XG4gICAgICAgICAgICBJbnQuKCArICkgc3VmZml4X2luZGV4IChTdHJpbmcubGVuZ3RoIChzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID1cbiAgICAgICAgICAgIFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6aW5kZXggfmxlbjooSW50LiggLSApIHN1ZmZpeF9pbmRleCBpbmRleClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdCA9IEZsb2F0Lm9mX3N0cmluZyBmbG9hdF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gbWFnbml0dWRlICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleDp1bnRpbF9pbmRleCB+bGVuKVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZTpULnplcm8gfmluZGV4IH5sZW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbWF0Y2ggc3RyaW5nIHdpdGhcbiAgICAgICAgfCBcIk5BTnNcIiAtPiBvZl9zZWMgRmxvYXQubmFuXG4gICAgICAgIHwgXCItSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5uZWdfaW5maW5pdHlcbiAgICAgICAgfCBcIklORnNcIiAtPiBvZl9zZWMgRmxvYXQuaW5maW5pdHlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbmVnYXRpdmUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHN0cmluZy5bMF0gd2l0aFxuICAgICAgICAgICAgfCAnLScgLT4gdHJ1ZSwgMVxuICAgICAgICAgICAgfCAnKycgLT4gZmFsc2UsIDFcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSwgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgaW5kZXggPj0gbGVuIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgaWYgbmVnYXRpdmUgdGhlbiBULm5lZyBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuXG4gICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgZmxvYXQgPVxuICAgICAgICBsZXQgc3RyaW5nID0gRmxvYXQudG9fc3RyaW5nIGZsb2F0IGluXG4gICAgICAgIGxldCBzdWZmaXggPSBcIi5cIiBpblxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4XG4gICAgICAgIHRoZW4gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICBlbHNlIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgKCogQXMgd2UgYnVpbGQgdXAgYSBzdHJpbmcsIHdlIGtlZXAgYSBydW5uaW5nIHN1bSBvZiB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJlYWRcbiAgICAgICAgIGJhY2sgaW4sIHNvIHRoYXQgd2UgY2FuIGNvbXB1dGUgdGhlIHJlbWFpbmRlciB0aGF0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZC4gKilcbiAgICAgIGxldCBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSA9XG4gICAgICAgIHN1bV90ICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIG1hZ25pdHVkZSB1bml0X29mX3RpbWVcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBzb21lIHVuaXRzICh2ZXJ5IGxhcmdlIG51bWJlcnMgb2YgZGF5cywgb3Igc2Vjb25kcyBhbmQgc21hbGxlcikgd2UganVzdFxuICAgICAgICAgcmVuZGVyIGEgZmxvYXQgZGlyZWN0bHksIHdpdGggYSBmaXggZm9yIHJvdW5kb2ZmIGVycm9yLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lID1cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgYWJzX3QgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgaWYgc3VtX3QgPSBhYnNfdFxuICAgICAgICB0aGVuXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgICAgaWYgc3VtX3QgPCBhYnNfdFxuICAgICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICAgIGVsc2UgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSAocHJldiBhYnNfdCkgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCBmaXh1cF9tYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHJlbV90IGZpeHVwX3VuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICgqIFtyZW1fdF0gaXMgYXQgVUxQIHNpemUgb2YgW2Fic190XSwgaXQgbmVlZHMganVzdCBvbmUgYml0IG9mIHByZWNpc2lvbiAqKVxuICAgICAgICAgIF4gc3ByaW50ZiBcIiUuMWdcIiBmaXh1cF9tYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgZml4dXBfdW5pdF9vZl90aW1lKVxuICAgICAgOztcblxuICAgICAgKCogRm9yIG5vbi1kZWNpbWFsIHVuaXRzIChtaW51dGVzIGFuZCBncmVhdGVyKSwgd2UgcmVuZGVyIGFuIGludGVnZXIgbWFnbml0dWRlLCBhbmRcbiAgICAgICAgIHJldHVybiB0aGF0IHdpdGggdGhlIHJ1bm5pbmcgc3VtIHNvIHRoZSByZW1haW5kZXIgY2FuIGJlIHJlbmRlcmVkIGF0IGEgc21hbGxlclxuICAgICAgICAgdW5pdC4gKilcbiAgICAgIGxldCB0b19pbnRfc3RyaW5nX2FuZF9zdW0gdW5pdF9vZl90aW1lIH5hYnNfdCB+c3VtX3QgPVxuICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICgqIFdlIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgbXVsdGlwbGUgb2YgW3VuaXRfb2ZfdGltZV0gdGhhdCBuZWVkcyB0byBiZVxuICAgICAgICAgICBhZGRlZCB0byBbc3VtX3RdLiBEdWUgdG8gcm91bmRpbmcsIHRoaXMgY2FuIGJlIG9mZiBieSBvbmUgKHdlJ3ZlIG5ldmVyIHNlZW4gYVxuICAgICAgICAgICBjYXNlIG9mZiBieSB0d28gb3IgbW9yZSksIHNvIHdlIHJlLWNvbXB1dGUgdGhlIHJlbWFpbmRlciBhbmQgY29ycmVjdCBpZlxuICAgICAgICAgICBuZWNlc3NhcnkuICopXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBGbG9hdC5yb3VuZF9kb3duIChyZW1fdCAvLyB1bml0X3NwYW4pIGluXG4gICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgaWYgbmV3X3JlbV90ID0gemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgZWxzZSBpZiBuZXdfcmVtX3QgPCB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGUgLS4gMS5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0X21hZ25pdHVkZSA9IG1hZ25pdHVkZSArLiAxLiBpblxuICAgICAgICAgICAgbGV0IG5leHRfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZTpuZXh0X21hZ25pdHVkZSBpblxuICAgICAgICAgICAgbGV0IG5leHRfcmVtX3QgPSBhYnNfdCAtIG5leHRfc3VtX3QgaW5cbiAgICAgICAgICAgIGlmIG5leHRfcmVtX3QgPCB6ZXJvIHRoZW4gbWFnbml0dWRlIGVsc2UgbmV4dF9tYWduaXR1ZGUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIEZsb2F0LiggPD0gKSBtYWduaXR1ZGUgMC5cbiAgICAgICAgdGhlbiBcIlwiLCBzdW1fdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICAgIEludDYzLnRvX3N0cmluZyAoSW50NjMub2ZfZmxvYXQgbWFnbml0dWRlKVxuICAgICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgc3RyaW5nLCBuZXdfc3VtX3QpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgdCA9IEZsb2F0LmxvZzEwICh0b19zZWMgdClcblxuICAgICAgKCogVGhlIGZpbmFsIHNlY29uZHMtb3Itc21hbGxlciB1bml0IG5lZWRzIHRvIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggZGlnaXRzIHRvXG4gICAgICAgICByb3VuZC10cmlwIHRoZSB3aG9sZSBzcGFuICh3aGljaCBpcyBtaW51dGVzIG9yIGdyZWF0ZXIpOyB0aGlzIGNhbiBiZVxuICAgICAgICAgc2lnbmlmaWNhbnRseSBmZXdlciBkaWdpdHMgdGhhbiB3b3VsZCBiZSBuZWVkZWQgZm9yIHRoZSBzZWNvbmRzLW9yLXNtYWxsZXJcbiAgICAgICAgIHJlbWFpbmRlciBpdHNlbGYuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5zdW1fdCB+YWJzX3QgPVxuICAgICAgICBpZiBzdW1fdCA+PSBhYnNfdFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgcmVtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSByZW1fdCAvLyB1bml0X3NwYW4gaW5cbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgICBpZiBhYnMgcmVtX3QgPD0gYWJzIG5ld19yZW1fdFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCA9XG4gICAgICAgICAgICAgIEZsb2F0Lmlyb3VuZF9kb3duX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgcmVtX3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGhhbGZfdWxwID0gKGFic190IC0gcHJldiBhYnNfdCkgLyAyLiBpblxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdCA9XG4gICAgICAgICAgICAgICgqIFRoaXMgd29ya3Mgb3V0IHRvIHJvdW5kaW5nIGRvd24sIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBleGFjdCBpbnRlZ2VycyxcbiAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlY3JlbWVudGVkLiBUaGlzIG1ha2VzIHN1cmUgd2UgYWx3YXlzIHN0b3AgYXQgYSBkaWdpdCB3aXRoXG4gICAgICAgICAgICAgICAgIHN0cmljdGx5IG1vcmUgcHJlY2lzaW9uIHRoYW4gaGFsZiB0aGUgVUxQLiAqKVxuICAgICAgICAgICAgICBJbnQucHJlZCAoRmxvYXQuaXJvdW5kX3VwX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgaGFsZl91bHApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgMSArIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCAtIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgICAgc3ByaW50ZiBcIiUuKmdcIiBudW1iZXJfb2ZfZGlnaXRzIG1hZ25pdHVkZSBeIHN1ZmZpeCkpXG4gICAgICA7O1xuXG4gICAgICAoKiBUaGlzIGhlbHBlciBhdm9pZHMgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiwgYmVjYXVzZSBmb3Igb3VyIHVzZSBiZWxvdywgaXQgaXNcbiAgICAgICAgIGNvbW1vbiB0byBoYXZlIGVpdGhlciBvciBib3RoIGFyZ3VtZW50cyBiZSBlbXB0eS4gQ3VycmVudGx5ICgyMDE4LTAyKSwgdGhlXG4gICAgICAgICBidWlsdC1pbiBbXl0gYWxsb2NhdGVzIGV2ZW4gd2hlbiBhcHBlbmRpbmcgdG8gYW4gZW1wdHkgc3RyaW5nLiAqKVxuICAgICAgbGV0ICggXj8gKSB4IHkgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgeCB0aGVuIHkgZWxzZSBpZiBTdHJpbmcuaXNfZW1wdHkgeSB0aGVuIHggZWxzZSB4IF4geVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IGZsb2F0ID0gdG9fZmxvYXQgdCBpblxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmbG9hdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICgqIFdlIHByaW50IHNwZWNpZmljIHNwZWNpYWwgc3RyaW5ncyBmb3Igbm9uLWZpbml0ZSBmbG9hdHMgKilcbiAgICAgICAgICAgIEZsb2F0LmlzX25hbiBmbG9hdFxuICAgICAgICAgIHRoZW4gXCJOQU5zXCJcbiAgICAgICAgICBlbHNlIGlmIEZsb2F0LmlzX25lZ2F0aXZlIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIi1JTkZzXCJcbiAgICAgICAgICBlbHNlIFwiSU5Gc1wiXG4gICAgICAgIGVsc2UgaWYgdCA9IHplcm9cbiAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSB0IGluXG4gICAgICAgICAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgICAgICAgICBsZXQgc2lnbiA9IGlmIHQgPCB6ZXJvIHRoZW4gXCItXCIgZWxzZSBcIlwiIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZV9zdHJpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lIHdpdGhcbiAgICAgICAgICAgICgqIFdlIGNhbiB1c2Ugbm9ybWFsIGZsb2F0IG5vdGF0aW9uIGZvciBzZWNvbmRzIGFuZCBzdWItc2Vjb25kIHVuaXRzLCB0aGV5IGFyZVxuICAgICAgICAgICAgICAgcmVhZGFibGUgd2l0aCBhIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgfCBNaWNyb3NlY29uZCB8IE1pbGxpc2Vjb25kIHwgU2Vjb25kIC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOk5hbm9zZWNvbmRcbiAgICAgICAgICAgICgqIEZvciBsYXJnZSBlbm91Z2ggdmFsdWVzIHRoYXQgdGhlIFVMUCBpcyBhIGRheSBvciBtb3JlLCB3ZSBjYW4gdXNlIGZsb2F0XG4gICAgICAgICAgICAgICBub3RhdGlvbiBiZWNhdXNlIHdlIGFyZSBleHByZXNzaW5nIGEgc2luZ2xlLCB2ZXJ5IGxhcmdlIGludGVnZXIuICopXG4gICAgICAgICAgICB8IERheSB3aGVuIG5leHQgYWJzX3QgLSBhYnNfdCA+PSBkYXkgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6RGF5XG4gICAgICAgICAgICAoKiBGb3IgZXZlcnl0aGluZyBpbiBiZXR3ZWVuLCB3ZSBuZWVkIHRvIHVzZSBpbnRlZ2VyIHVuaXRzIG9mIGRheXMsIGhvdXJzLFxuICAgICAgICAgICAgICAgYW5kL29yIG1pbnV0ZXMsIGJlY2F1c2UgdGhvc2UgdW5pdHMgYXJlIG5vdCByZWFkYWJsZSBhcyBkZWNpbWFscywgYW5kIHdlXG4gICAgICAgICAgICAgICB0YWNrIG9uIGEgZGVjaW1hbCByZW1haW5kZXIgb2YgYSBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBpZiBuZWNlc3NhcnkuICopXG4gICAgICAgICAgICB8IE1pbnV0ZSB8IEhvdXIgfCBEYXkgLT5cbiAgICAgICAgICAgICAgbGV0IHN1bV90ID0gemVybyBpblxuICAgICAgICAgICAgICBsZXQgZGF5X3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBEYXkgaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IEhvdXIgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgTWludXRlIGluXG4gICAgICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPSB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfmFic190IH5zdW1fdCBpblxuICAgICAgICAgICAgICBkYXlfc3RyaW5nIF4/IGhvdXJfc3RyaW5nIF4/IG1pbnV0ZV9zdHJpbmcgXj8gZmxvYXRfc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzaWduIF4/IG1hZ25pdHVkZV9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TcGFuLlN0YWJsZS5WMy50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc1xuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYzXG5cbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgPSB0b19mbG9hdFxuXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBnZW5faW5jbCBsbyBoaSA9XG4gIEZsb2F0Lmdlbl9pbmNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgKCogVGVjaG5pY2FsbHkgZXhjbHVzaXZlIHJhdGhlciB0aGFuIGluY2x1c2l2ZSwgYnV0IG90aGVyd2lzZSBzYXRpc2ZpZXMgdGhlIGNvbnRyYWN0IHRvXG4gICAgIHdpdGhpbiAxdWxwIG9mIHRoZSBnaXZlbiBib3VuZHMuICopXG4gIEZsb2F0Lmdlbl91bmlmb3JtX2V4Y2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgKCogV2UgZ2VuZXJhdGUgc3BhbnMgdXAgdG8gKHNsaWdodGx5IG1vcmUgdGhhbikgYSBtaWxsZW5pdW0sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLiBUaGlzXG4gICAgIGlzIGJhc2VkIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIGluIHdoaWNoIHllYXJzIGF2ZXJhZ2UgMzY1LjI0MjUgZGF5cyB3aGVuXG4gICAgIGFjY291bnRpbmcgZm9yIGxlYXAgZGF5cy4gQ292ZXJpbmcgYSB0d28tbWlsbGVuaXVtIHNwYW4gaXMgbW9yZSB0aGFuIGVub3VnaCBmb3IgbW9zdFxuICAgICBwcmFjdGljYWwgcHVycG9zZXMsIGNlcnRhaW5seSBtb3JlIHRoYW4gZW5vdWdoIHRvIGNvdmVyIHRoZSByZXByZXNlbnRhYmxlIHJhbmdlIG9mXG4gICAgIFtTcGFuX25zXSwgYW5kIHJlc3VsdHMgaW4gZmluaXRlIHNwYW5zIGFuZCB0aW1lcyB0aGF0IGNhbiBiZSBzZXJpYWxpemVkLlxuXG4gICAgIFdlIGdlbmVyYXRlIGJ5IGZpbHRlcmluZyB0aGUgZGVmYXVsdCBnZW5lcmF0b3Igc28gdGhhdCBzcGFucyBhcmUgc3RpbGwgc2tld2VkIHRvd2FyZFxuICAgICBzbWFsbCB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZSBib3VuZHMgYXJlIGxhcmdlLiAqKVxuICBsZXQgbWlsbGVuaXVtID0gb2ZfZGF5IChGbG9hdC5yb3VuZF91cCAoMzY1LjI0MjUgKi4gMTAwMC4pKSBpblxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgcXVpY2tjaGVja19nZW5lcmF0b3IgfmY6KGZ1biB0IC0+XG4gICAgbmVnIG1pbGxlbml1bSA8PSB0ICYmIHQgPD0gbWlsbGVuaXVtKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZS5TcGFuXCJcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIHNwYW5zIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbSAxMDguMDdcbiAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kIHByZXR0eVxuICAgICBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZCBmcm9tXG4gICAgIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWVcbiAgbGV0IHBhcnNlX3N1ZmZpeCA9IFN0YWJsZS5WMy5PZl9zdHJpbmcucGFyc2Vfc3VmZml4XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxuXG4oKiBDcmVhdGUgYW4gYWJzdHJhY3QgdHlwZSBmb3IgT2ZkYXkgdG8gcHJldmVudCB1cyBmcm9tIGNvbmZ1c2luZyBpdCB3aXRoXG4gICBvdGhlciBmbG9hdHMuXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXRcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgYWRkIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBzdWIgOiB0IC0+IFNwYW4udCAtPiB0IG9wdGlvblxuICAgICAgdmFsIG5leHQgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgcHJldiA6IHQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBkaWZmIDogdCAtPiB0IC0+IFNwYW4udFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIDogU3Bhbi50IC0+IHRcbiAgICAgIHZhbCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCA6IFNwYW4udCAtPiBib29sXG4gICAgICB2YWwgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IFNwYW4udFxuICAgICAgdmFsIHN0YXJ0X29mX2RheSA6IHRcbiAgICAgIHZhbCBzdGFydF9vZl9uZXh0X2RheSA6IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICgqIE51bWJlciBvZiBzZWNvbmRzIHNpbmNlIG1pZG5pZ2h0LiAqKVxuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuICAgICAgZW5kIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgZW5kKVxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5PZmRheSB2ZXJzaW9uIHRvIHN0YWJsZS5tbCAqKVxuXG4gICAgICAoKiBkdWUgdG8gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIGZsb2F0IHdlIGNhbid0IGV4cGVjdCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZFxuICAgICAgICAgcHJlY2lzaW9uICopXG4gICAgICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS02XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPSBTcGFuLm9mX3NlYyB0XG5cbiAgICAgICgqIEFub3RoZXIgcmVhc29uYWJsZSBjaG9pY2Ugd291bGQgYmUgb25seSBhbGxvd2luZyBPZmRheS50IHRvIGJlIDwgMjRociwgYnV0IHRoaXNcbiAgICAgICAgIGNob2ljZSB3YXMgbWFkZSBlYXJseSBvbiBhbmQgcGVvcGxlIGJlY2FtZSB1c2VkIHRvIGJlaW5nIGFibGUgdG8gZWFzaWx5IGNhbGwgMjRoclxuICAgICAgICAgdGhlIGVuZCBvZiB0aGUgZGF5LiAgSXQncyBhIGJpdCBzYWQgYmVjYXVzZSBpdCBzaGFyZXMgdGhhdCBtb21lbnQgd2l0aCB0aGVcbiAgICAgICAgIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBkYXksIGFuZCByb3VuZCB0cmlwcyBvZGRseSBpZiBwYXNzZWQgdGhyb3VnaFxuICAgICAgICAgVGltZS50b19kYXRlX29mZGF5L1RpbWUub2ZfZGF0ZV9vZmRheS5cblxuICAgICAgICAgTm90ZTogW1NjaGVkdWxlLnRdIHJlcXVpcmVzIHRoYXQgdGhlIGVuZCBvZiBkYXkgYmUgcmVwcmVzZW50YWJsZSwgYXMgaXQncyB0aGVcbiAgICAgICAgIG9ubHkgd2F5IHRvIHdyaXRlIGEgc2NoZWR1bGUgaW4gdGVybXMgb2YgW09mZGF5LnRdcyB0aGF0IHNwYW5zIHR3byB3ZWVrZGF5cy4gKilcbiAgICAgICgqIG9mZGF5IG11c3QgYmUgPj0gMCBhbmQgPD0gMjRoICopXG4gICAgICBsZXQgaXNfdmFsaWQgKHQgOiB0KSA9XG4gICAgICAgIGxldCB0ID0gdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCBpblxuICAgICAgICBTcGFuLiggPD0gKSBTcGFuLnplcm8gdCAmJiBTcGFuLiggPD0gKSB0IFNwYW4uZGF5XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG5cbiAgICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCBzcGFuID1cbiAgICAgICAgaXNfdmFsaWQgKG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgICAgbGV0IHMgPSBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5IHMgd2l0aFxuICAgICAgICB8IEMuSW5maW5pdGUgLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IGluZmluaXRlIHZhbHVlXCJcbiAgICAgICAgfCBDLk5hbiAtPiBpbnZhbGlkX2FyZyBcIk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogTmFOIHZhbHVlXCJcbiAgICAgICAgfCBDLk5vcm1hbCB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+XG4gICAgICAgICAgaWYgbm90IChpc192YWxpZCBzKVxuICAgICAgICAgIHRoZW4gaW52YWxpZF9hcmdmICFcIk9mZGF5IG91dCBvZiByYW5nZTogJXtTcGFufVwiIHNwYW4gKClcbiAgICAgICAgICBlbHNlIHNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdGFydF9vZl9kYXkgPSAwLlxuICAgICAgbGV0IHN0YXJ0X29mX25leHRfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIFNwYW4uZGF5XG5cbiAgICAgIGxldCBhZGQgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgKy4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHN1YiAodCA6IHQpIChzcGFuIDogU3Bhbi50KSA9XG4gICAgICAgIGxldCB0ID0gdCAtLiBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIHQgdGhlbiBTb21lIHQgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgbmV4dCB0ID1cbiAgICAgICAgbGV0IGNhbmRpZGF0ZSA9IEZsb2F0Lm9uZV91bHAgYFVwIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcHJldiB0ID1cbiAgICAgICAgbGV0IGNhbmRpZGF0ZSA9IEZsb2F0Lm9uZV91bHAgYERvd24gdCBpblxuICAgICAgICBpZiBpc192YWxpZCBjYW5kaWRhdGUgdGhlbiBTb21lIGNhbmRpZGF0ZSBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkaWZmIHQxIHQyID1cbiAgICAgICAgU3Bhbi4oIC0gKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDEpICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0MilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9XG4gICAgICBPcHRpb24udmFsdWVfZXhuIChULnN1YiBULnN0YXJ0X29mX25leHRfZGF5IFNwYW4ubWljcm9zZWNvbmQpXG4gICAgOztcblxuICAgICgqIFtjcmVhdGVdIGNob3BzIG9mZiBhbnkgc3Vic2Vjb25kIHBhcnQgd2hlbiBbc2VjID0gNjBdIHRvIGhhbmRsZSBsZWFwIHNlY29uZHMuIEluXG4gICAgICAgcGFydGljdWxhciBpdCdzIHRyeWluZyB0byBiZSBnZW5lcm91cyBhYm91dCByZWFkaW5nIGluIHRpbWVzIG9uIHRoaW5ncyBsaWtlIGZpeFxuICAgICAgIG1lc3NhZ2VzIHRoYXQgbWlnaHQgaW5jbHVkZSBhbiBleHRyYSB1bmxpa2VseSBzZWNvbmQuXG5cbiAgICAgICBPdGhlciB3YXlzIG9mIHdyaXRpbmcgYSB0aW1lLCBsaWtlIDEwMDBtcywgd2hpbGUgbWF0aGVtYXRpY2FsbHkgdmFsaWQsIGRvbid0IG1hdGNoXG4gICAgICAgd2F5cyB0aGF0IHBlb3BsZSBhY3R1YWxseSB3cml0ZSB0aW1lcyBkb3duLCBzbyB3ZSBkaWRuJ3Qgc2VlIHRoZSBuZWVkIHRvIHN1cHBvcnRcbiAgICAgICB0aGVtLiBUaGF0IGlzLCBhIGNsb2NrIG1pZ2h0IGxlZ2l0aW1hdGVseSByZWFkIDIzOjU5OjYwIChvciwgd2l0aCA2MCBzZWNvbmRzIGF0XG4gICAgICAgdGltZXMgb2YgZGF5IG90aGVyIHRoYW4gMjM6NTksIGRlcGVuZGluZyBvbiB0aGUgdGltZSB6b25lKSwgYnV0IGl0IGRvZXNuJ3Qgc2VlbVxuICAgICAgIHJlYXNvbmFibGUgZm9yIGEgY2xvY2sgdG8gcmVhZCBcIjIzOjU5OjU5IGFuZCAxMDAwbXNcIi4gKilcbiAgICBsZXQgY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkgPVxuICAgICAgbGV0IG1zLCB1cywgbnMgPVxuICAgICAgICBtYXRjaCBzZWMgd2l0aFxuICAgICAgICB8IFNvbWUgNjAgLT4gU29tZSAwLCBTb21lIDAsIFNvbWUgMFxuICAgICAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICAgICAgaW5cbiAgICAgIFQub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fcGFydHMgdCA9IFNwYW4udG9fcGFydHMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdClcblxuICAgIGxldCB0b19zdHJpbmdfZ2VuIH5kcm9wX21zIH5kcm9wX3VzIH50cmltIHQgPVxuICAgICAgbGV0ICggLyApID0gSW50NjMuKCAvICkgaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCBpID0gSW50NjMudG9faW50X2V4biBpblxuICAgICAgYXNzZXJ0IChpZiBkcm9wX21zIHRoZW4gZHJvcF91cyBlbHNlIHRydWUpO1xuICAgICAgbGV0IGZsb2F0X3NlYyA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpIGluXG4gICAgICBsZXQgdXMgPSBGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X2V4biAoZmxvYXRfc2VjICouIDFlNikgaW5cbiAgICAgIGxldCBtcywgdXMgPSB1cyAvICExMDAwLCB1cyBtb2QgITEwMDAgfD4gaSBpblxuICAgICAgbGV0IHNlYywgbXMgPSBtcyAvICExMDAwLCBtcyBtb2QgITEwMDAgfD4gaSBpblxuICAgICAgbGV0IG1pbiwgc2VjID0gc2VjIC8gITYwLCBzZWMgbW9kICE2MCB8PiBpIGluXG4gICAgICBsZXQgaHIsIG1pbiA9IG1pbiAvICE2MCwgbWluIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyID0gaSBociBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfdXMgPSBkcm9wX3VzIHx8ICh0cmltICYmIHVzID0gMCkgaW5cbiAgICAgIGxldCBkb250X3ByaW50X21zID0gZHJvcF9tcyB8fCAodHJpbSAmJiBtcyA9IDAgJiYgZG9udF9wcmludF91cykgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3MgPSB0cmltICYmIHNlYyA9IDAgJiYgZG9udF9wcmludF9tcyBpblxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfc1xuICAgICAgICB0aGVuIDVcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X21zXG4gICAgICAgIHRoZW4gOFxuICAgICAgICBlbHNlIGlmIGRvbnRfcHJpbnRfdXNcbiAgICAgICAgdGhlbiAxMlxuICAgICAgICBlbHNlIDE1XG4gICAgICBpblxuICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgaHI7XG4gICAgICBCeXRlcy5zZXQgYnVmIDIgJzonO1xuICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MyBtaW47XG4gICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBCeXRlcy5zZXQgYnVmIDUgJzonO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo2IHNlYztcbiAgICAgICAgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIEJ5dGVzLnNldCBidWYgOCAnLic7XG4gICAgICAgICAgd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6OSBtcztcbiAgICAgICAgICBpZiBkb250X3ByaW50X3VzIHRoZW4gKCkgZWxzZSB3cml0ZV8zX2RpZ2l0X2ludCBidWYgfnBvczoxMiB1cykpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOnRydWUgdFxuICAgIGxldCB0b19zZWNfc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOnRydWUgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG4gICAgbGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czp0cnVlIH50cmltOmZhbHNlIHRcblxuICAgIGxldCBzbWFsbF9kaWZmID1cbiAgICAgIGxldCBob3VyID0gMzYwMC4gaW5cbiAgICAgIGZ1biBvZmRheTEgb2ZkYXkyIC0+XG4gICAgICAgIGxldCBvZmRheTEgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTEpIGluXG4gICAgICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgICAgIGxldCBkaWZmID0gb2ZkYXkxIC0uIG9mZGF5MiBpblxuICAgICAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgICAgICBsZXQgZDEgPSBGbG9hdC5tb2RfZmxvYXQgZGlmZiBob3VyIGluXG4gICAgICAgICgqICBkMiBpcyBpbiAoMDtob3VyKSAqKVxuICAgICAgICBsZXQgZDIgPSBGbG9hdC5tb2RfZmxvYXQgKGQxICsuIGhvdXIpIGhvdXIgaW5cbiAgICAgICAgbGV0IGQgPSBpZiBGbG9hdC4oID4gKSBkMiAoaG91ciAvLiAyLikgdGhlbiBkMiAtLiBob3VyIGVsc2UgZDIgaW5cbiAgICAgICAgU3Bhbi5vZl9zZWMgZFxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6ZmFsc2UgfnRyaW06ZmFsc2UgdFxuXG4gICAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZS5PZmRheVwiXG4gICAgICBlbmQpXG5cbiAgICBsZXQgY3JlYXRlX2Zyb21fcGFyc2VkIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuID1cbiAgICAgIGxldCBzdWJzZWMgPVxuICAgICAgICBpZiBJbnQuZXF1YWwgc3Vic2VjX2xlbiAwXG4gICAgICAgIHRoZW4gMC5cbiAgICAgICAgZWxzZSBGbG9hdC5vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6c3Vic2VjX3BvcyB+bGVuOnN1YnNlY19sZW4pXG4gICAgICBpblxuICAgICAgRmxvYXQub2ZfaW50ICgoaHIgKiAzNjAwKSArIChtaW4gKiA2MCkgKyBzZWMpICsuIHN1YnNlY1xuICAgICAgfD4gU3Bhbi5vZl9zZWNcbiAgICAgIHw+IFQub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IE9mZGF5X2hlbHBlcnMucGFyc2UgcyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgcyAtPiBvZl9zZXhwX2Vycm9yIChcIk9mZGF5LnRfb2Zfc2V4cDogXCIgXiBzKSBzZXhwKVxuICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJPZmRheS50X29mX3NleHBcIiBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgc2V4cF9vZl90IHNwYW4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBzcGFuKVxuXG4gICAgbGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICAgICAgdHJ5IE9mZGF5X2hlbHBlcnMucGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgICBcIk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkKCVzKTogJXNcIlxuICAgICAgICAgIChTdHJpbmcuc3VibyBzdHIgP3BvcyA/bGVuKVxuICAgICAgICAgIChFeG4udG9fc3RyaW5nIGV4bilcbiAgICAgICAgICAoKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmxldCBnZW5faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGxvKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaGkpXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbjs7XG5cbmxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgU3Bhbi5nZW5fdW5pZm9ybV9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFNwYW4ucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheVxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXQgc2VyaWFsaXphdGlvbiByYXRoZXJcbiAgICAgICB0aGFuIHRpbWUgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nIGhhc2gtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyXG4gICAgICAgc2VyaWFsaXphdGlvbi4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBmbG9hdCAtPiBvZl9mbG9hdCBmbG9hdFxuICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVC5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJhdG9yLmNvbXBhcmVcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBvZmRheXMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBmbG9hdHMuICBGcm9tXG4gICAgIDEwOC4wNyB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmRcbiAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhcyBjaGFuZ2VkXG4gICAgIGZyb20gcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlIG1vc3RcbiAgICAgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICByYXcuICopXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IFQub2ZfZmxvYXQgKEZsb2F0LnRfb2Zfc2V4cCBzZXhwKSkgd2l0aFxuICAgIHwgU29tZSB0IC0+IHRcbiAgICB8IE5vbmUgLT4gdF9vZl9zZXhwIHNleHBcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxubW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQylcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4iLCIoKiBTZWUgdGltZV9mbG9hdC5tbCBmb3IgdGhlIHByaW1hcnkgaW5zdGFudGlhdGlvbiBvZiB0aGlzIGZ1bmN0b3IgdGhhdCBpcyB2aXNpYmxlIG91dHNpZGVcbiAgIG9mIENvcmUgYXMgVGltZSAoc2VlIGNvcmUubWwpLiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBUaW1lX2ludGZcblxubW9kdWxlIE1ha2UgKFRpbWUwIDogVGltZTBfaW50Zi5TKSA9IHN0cnVjdFxuICBtb2R1bGUgVGltZTAgPSBUaW1lMFxuICBpbmNsdWRlIFRpbWUwXG5cbiAgbGV0IGVwb2NoID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLnplcm9cbiAgbGV0IGlzX2VhcmxpZXIgdDEgfnRoYW46dDIgPSB0MSA8LiB0MlxuICBsZXQgaXNfbGF0ZXIgdDEgfnRoYW46dDIgPSB0MSA+LiB0MlxuXG4gIG1vZHVsZSBab25lIDogc2lnXG4gICAgaW5jbHVkZSBUaW1lX2ludGYuWm9uZSB3aXRoIG1vZHVsZSBUaW1lIDo9IFRpbWUwXG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWm9uZVxuXG4gICAgbGV0IG9mX3NwYW5faW5fc2Vjb25kcyBzcGFuX2luX3NlY29uZHMgPVxuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHNwYW5faW5fc2Vjb25kc1xuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgOztcblxuICAgIGxldCBvZl90aW1lX2luX3NlY29uZHMgdGltZV9pbl9zZWNvbmRzID1cbiAgICAgIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVfaW5fc2Vjb25kc1xuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lMC5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lID1cbiAgICAgIFRpbWUwLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICAgICAgfD4gVGltZTAuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSA9XG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCByZWxhdGl2ZVxuICAgICAgfD4gVGltZTAuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkub2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4IHQgdGltZSA9IGluZGV4IHQgKHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lKVxuXG4gICAgbGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCAodG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgYWJicmV2aWF0aW9uIHQgdGltZSA9XG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGluZGV4X2FiYnJldmlhdGlvbl9leG4gdCAoaW5kZXggdCB0aW1lKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhYnNfZGlmZiB0MSB0MiA9IFNwYW4uYWJzIChkaWZmIHQxIHQyKVxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB6b25lIDogWm9uZS50XG4gICAgICA7IG11dGFibGUgY2FjaGVfc3RhcnRfaW5jbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV91bnRpbF9leGNsIDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGVmZmVjdGl2ZV9kYXlfc3RhcnQgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgZGF0ZSA6IERhdGUwLnRcbiAgICAgIH1cbiAgZW5kXG5cbiAgbGV0IGRhdGVfY2FjaGUgOiBEYXRlX2NhY2hlLnQgPVxuICAgIHsgem9uZSA9IFpvbmUudXRjXG4gICAgOyBjYWNoZV9zdGFydF9pbmNsID0gZXBvY2hcbiAgICA7IGNhY2hlX3VudGlsX2V4Y2wgPSBlcG9jaFxuICAgIDsgZWZmZWN0aXZlX2RheV9zdGFydCA9IGVwb2NoXG4gICAgOyBkYXRlID0gRGF0ZTAudW5peF9lcG9jaFxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXRfZGF0ZV9jYWNoZSAoKSA9XG4gICAgZGF0ZV9jYWNoZS56b25lIDwtIFpvbmUudXRjO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBEYXRlMC51bml4X2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIHBoeXNfZXF1YWwgem9uZSBkYXRlX2NhY2hlLnpvbmVcbiAgICAmJiBUaW1lMC4oID49ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiBUaW1lMC4oIDwgKSB0aW1lIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbFxuICA7O1xuXG4gIGxldCBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lID1cbiAgICBtYXRjaCBpc19pbl9jYWNoZSB0aW1lIH56b25lIHdpdGhcbiAgICB8IHRydWUgLT4gKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBsZXQgaW5kZXggPSBab25lLmluZGV4IHpvbmUgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW1pvbmUuaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBab25lLmluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gem9uZSBpbmRleCBpblxuICAgICAgbGV0IHJlbCA9IERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0YyBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlX2FuZF9vZmRheS50b19kYXRlIHJlbCBpblxuICAgICAgbGV0IHNwYW4gPSBEYXRlX2FuZF9vZmRheS50b19vZmRheSByZWwgfD4gT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3N0YXJ0ID1cbiAgICAgICAgVGltZTAuc3ViIChEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWwgfm9mZnNldF9mcm9tX3V0Yykgc3BhblxuICAgICAgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3VudGlsID0gVGltZTAuYWRkIGVmZmVjdGl2ZV9kYXlfc3RhcnQgU3Bhbi5kYXkgaW5cbiAgICAgIGxldCBjYWNoZV9zdGFydF9pbmNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgICB8PiBUaW1lMC5tYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgICB8PiBUaW1lMC5taW4gKFpvbmUuaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGRhdGVfY2FjaGUuem9uZSA8LSB6b25lO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGNhY2hlX3N0YXJ0X2luY2w7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gY2FjaGVfdW50aWxfZXhjbDtcbiAgICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlZmZlY3RpdmVfZGF5X3N0YXJ0O1xuICAgICAgZGF0ZV9jYWNoZS5kYXRlIDwtIGRhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRhdGVfY2FjaGUuZGF0ZVxuICA7O1xuXG4gIGxldCBlbmRfb2ZfZGF5ID0gT2ZkYXkucHJldiBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB8PiBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV1cblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBsZXQgb2ZfZGF5ID1cbiAgICAgIFRpbWUwLmRpZmYgdGltZSBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIGluXG4gICAgaWYgT2ZkYXkuZXF1YWwgb2ZfZGF5IE9mZGF5LnN0YXJ0X29mX25leHRfZGF5IHRoZW4gZW5kX29mX2RheSBlbHNlIG9mX2RheVxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPi4gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBzaGlmdGVkIHJlY2VudGx5ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGZvcndhcmQgcmVjZW50bHk6IHdlIHNraXBwZWQgYSB0aW1lICopXG4gICAgICAgICAgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgYmFjayByZWNlbnRseTogdGhpcyBkYXRlL29mZGF5IGFscmVhZHkgaGFwcGVuZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoc3ViIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfLCBTb21lIChzdGFydCwgYW1vdW50KSB3aGVuIHN1YiBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA8PS4gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBpcyBhYm91dCB0byBzaGlmdCAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGZvcndhcmQ6IG5vIGVmZmVjdCAqKVxuICAgICAgICAgIGBPbmx5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGJhY2s6IHRoaXMgZGF0ZS9vZmRheSB3aWxsIGJlIHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKGFkZCB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXyAtPiBgT25seVxuICAgIGluXG4gICAgZGF0ZSwgb2ZkYXksIGFtYmlndWl0eVxuICA7O1xuXG4gIGxldCBjb252ZXJ0IH5mcm9tX3R6IH50b190eiBkYXRlIG9mZGF5ID1cbiAgICBsZXQgc3RhcnRfdGltZSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6ZnJvbV90eiBkYXRlIG9mZGF5IGluXG4gICAgdG9fZGF0ZV9vZmRheSB+em9uZTp0b190eiBzdGFydF90aW1lXG4gIDs7XG5cbiAgbGV0IHV0Y19vZmZzZXQgdCB+em9uZSA9XG4gICAgbGV0IHV0Y19lcG9jaCA9IFpvbmUuZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB6b25lIHQgaW5cbiAgICBTcGFuLiggLSApXG4gICAgICAoRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdXRjX2Vwb2NoKVxuICAgICAgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbiAgOztcblxuICBsZXQgb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lID1cbiAgICBsZXQgdXRjX29mZnNldCA9IHV0Y19vZmZzZXQgdGltZSB+em9uZSBpblxuICAgIGxldCBpc191dGMgPSBTcGFuLiggPSApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIGluXG4gICAgaWYgaXNfdXRjXG4gICAgdGhlbiBcIlpcIlxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyAoaWYgU3Bhbi4oIDwgKSB1dGNfb2Zmc2V0IFNwYW4uemVybyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpXG4gICAgICAgIDsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWRcbiAgICAgICAgICAgIChPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uYWJzIHV0Y19vZmZzZXQpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfcGFydHMgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgOyBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIE9mZGF5LnRvX3N0cmluZyBvZmRheTsgb2Zmc2V0X3N0cmluZyBdXG4gICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBTdHJpbmcuY29uY2F0XG4gICAgICB+c2VwOlwiIFwiXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBvZmRheSBeIG9mZnNldF9zdHJpbmcgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzIHRpbWUgfnpvbmUgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgbGV0IHRvX3N0cmluZ191dGMgdCA9IHRvX3N0cmluZ19hYnMgdCB+em9uZTpab25lLnV0Y1xuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX3V0Y1xuXG4gIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0aW1lIH56b25lID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJUXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3NlY19zdHJpbmcgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmdfd2l0aF96b25lIHQgfnpvbmUgPSB0b19zZWNfc3RyaW5nIHQgfnpvbmUgXiBvZmZzZXRfc3RyaW5nIHQgfnpvbmVcblxuICBsZXQgdG9fZmlsZW5hbWVfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgXiBcIl9cIlxuICAgIF4gU3RyaW5nLnRyIH50YXJnZXQ6JzonIH5yZXBsYWNlbWVudDonLScgKE9mZGF5LnRvX3N0cmluZyBvZmRheSlcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgU3Bhbi5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICB+Zl9pbnZlcnNlOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFNwYW4ucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBnZW5faW5jbCBsbyBoaSA9XG4gICAgU3Bhbi5nZW5faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICAgU3Bhbi5nZW5fdW5pZm9ybV9pbmNsICh0b19zcGFuX3NpbmNlX2Vwb2NoIGxvKSAodG9fc3Bhbl9zaW5jZV9lcG9jaCBoaSlcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcbm1vZHVsZSBPZmRheSA9IE9mZGF5X2Zsb2F0XG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICB0eXBlIHVuZGVybHlpbmcgPSBGbG9hdC50XG5cbiAgaW5jbHVkZSAoXG4gICAgRmxvYXQgOlxuICAgIHNpZ1xuICAgICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0Lk9cbiAgICAgIGVuZFxuICAgIGVuZClcblxuICAoKiBkdWUgdG8gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIGZsb2F0IHdlIGNhbid0IGV4cGVjdCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZFxuICAgICBwcmVjaXNpb24gKilcbiAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS02XG4gICAgZW5kKVxuXG4gIGxldCBkaWZmIHQxIHQyID0gU3Bhbi5vZl9zZWMgKHQxIC0gdDIpXG4gIGxldCBhZGQgdCBzcGFuID0gdCArLiBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCBzdWIgdCBzcGFuID0gdCAtLiBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCBwcmV2IHQgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHRcbiAgbGV0IG5leHQgdCA9IEZsb2F0Lm9uZV91bHAgYFVwIHRcbiAgbGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLm9mX3NlY1xuICBsZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4udG9fc2VjXG5lbmRcblxuaW5jbHVkZSBBYnNvbHV0ZVxuXG5tb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcblxuICBsZXQgb2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggc3BhbiA9IFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX3NlYyB0XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSA9XG4gICAgbGV0IGRheXMgPVxuICAgICAgRmxvYXQub2ZfaW50IChEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2gpXG4gICAgaW5cbiAgICAoZGF5cyAqLiA4NjQwMC4pICsuIFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgOztcblxuICBsZXQgdG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0YyA9IHN1YiByZWxhdGl2ZSBvZmZzZXRfZnJvbV91dGNcbiAgbGV0IG9mX2Fic29sdXRlIGFic29sdXRlIH5vZmZzZXRfZnJvbV91dGMgPSBhZGQgYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjXG5cbiAgKCogWWVhcnMgb3V0IG9mIHJhbmdlIGZvciBbRGF0ZS5jcmVhdGVfZXhuXS4gKilcbiAgbGV0W0Bjb2xkXSBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2ggPVxuICAgICgqICQgVFo9VVRDIGRhdGUgLS1kYXRlPUAtNjIxNjcyMTkyMDBcbiAgICAgICBTYXQgSmFuICAxIDAwOjAwOjAwIFVUQyAwMDAwICopXG4gICAgbGV0IGdtdGltZV9sb3dlcl9ib3VuZCA9IC02Ml8xNjdfMjE5XzIwMC4gaW5cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1AMjUzNDAyMzAwNzk5XG4gICAgICAgRnJpIERlYyAzMSAyMzo1OTo1OSBVVEMgOTk5OSAqKVxuICAgIGxldCBnbXRpbWVfdXBwZXJfYm91bmQgPSAyNTNfNDAyXzMwMF83OTkuIGluXG4gICAgaWYgRmxvYXQuKCA+PSApIHNlY19zaW5jZV9lcG9jaCAoZ210aW1lX3VwcGVyX2JvdW5kICsuIDEuKVxuICAgIHx8IEZsb2F0LiggPCApIHNlY19zaW5jZV9lcG9jaCBnbXRpbWVfbG93ZXJfYm91bmRcbiAgICB0aGVuIGZhaWx3aXRoZiBcIlRpbWUuZ210aW1lOiBvdXQgb2YgcmFuZ2UgKCVmKVwiIHNlY19zaW5jZV9lcG9jaCAoKVxuICA7O1xuXG4gIGxldCBzZWNfcGVyX2RheSA9IEludDYzLm9mX2ludCA4Nl80MDBcblxuICBsZXQgdG9fZGF5c19mcm9tX2Vwb2NoIHQgPVxuICAgIGFzc2VydF9pbl9ib3VuZHMgfnNlY19zaW5jZV9lcG9jaDp0O1xuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IEludDYzLm9mX2Zsb2F0IHQgLyBzZWNfcGVyX2RheSBpblxuICAgICgqIHdoZW4gW3RdIGlzIG5lZ2F0aXZlIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIHRoYXQgY2FsY3VsYXRlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgIHdhbnQgLTEpIC0tIGFkanVzdCBmb3IgdGhhdCBoZXJlLiAqKVxuICAgIGlmIEZsb2F0LiggPCApIHQgKEludDYzLnRvX2Zsb2F0IChkYXlzX2Zyb21fZXBvY2hfYXBwcm94ICogc2VjX3Blcl9kYXkpKVxuICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgZWxzZSBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gIDs7XG5cbiAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2luX3NlYyA9IEludDYzLnRvX2Zsb2F0IChkYXlzX2Zyb21fZXBvY2ggKiBzZWNfcGVyX2RheSkgaW5cbiAgICBsZXQgcmVtYWluZGVyID0gdCAtLiBkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIGluXG4gICAgU3Bhbi5vZl9zZWMgcmVtYWluZGVyIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBJbnQ2My50b19pbnRfZXhuIGRheXNfZnJvbV9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19vZmRheSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgbGV0IGRhdGUgPSBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgbGV0IG9mZGF5ID0gb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGRhdGUsIG9mZGF5XG4gIDs7XG5lbmRcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZS5uZXh0X211bHRpcGxlIGdvdCBub25wb3NpdGl2ZSBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBTcGFuLnRdO1xuICBsZXQgYmFzZV90b19hZnRlciA9IGRpZmYgYWZ0ZXIgYmFzZSBpblxuICBpZiBTcGFuLiggPCApIGJhc2VfdG9fYWZ0ZXIgU3Bhbi56ZXJvXG4gIHRoZW4gYmFzZSAoKiBbYWZ0ZXIgPCBiYXNlXSwgY2hvb3NlIFtrID0gMF0uICopXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0ID1cbiAgICAgIGFkZFxuICAgICAgICBiYXNlXG4gICAgICAgIChTcGFuLnNjYWxlXG4gICAgICAgICAgIGludGVydmFsXG4gICAgICAgICAgIChGbG9hdC5yb3VuZCB+ZGlyOmBEb3duIChTcGFuLiggLy8gKSBiYXNlX3RvX2FmdGVyIGludGVydmFsKSkpXG4gICAgaW5cbiAgICBpZiBuZXh0ID4gYWZ0ZXIgfHwgKGNhbl9lcXVhbF9hZnRlciAmJiBuZXh0ID0gYWZ0ZXIpIHRoZW4gbmV4dCBlbHNlIGFkZCBuZXh0IGludGVydmFsKVxuOztcblxubGV0IG5leHRfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYWZ0ZXIgPSBmYWxzZSkgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsXG47O1xuXG5sZXQgcHJldl9tdWx0aXBsZSA/KGNhbl9lcXVhbF9iZWZvcmUgPSBmYWxzZSkgfmJhc2UgfmJlZm9yZSB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsXG4gICAgfmNhbl9lcXVhbF9hZnRlcjoobm90IGNhbl9lcXVhbF9iZWZvcmUpXG4gICAgfmJhc2VcbiAgICB+YWZ0ZXI6KHN1YiBiZWZvcmUgaW50ZXJ2YWwpXG4gICAgfmludGVydmFsXG47O1xuXG5sZXQgbm93ICgpID1cbiAgbGV0IGZsb2F0X25zID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSB8PiBJbnQ2My50b19mbG9hdCBpblxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoIChTcGFuLm9mX3NlYyAoZmxvYXRfbnMgKi4gMUUtOSkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBTcGFuID0gU3Bhbi5TdGFibGVcbiAgbW9kdWxlIE9mZGF5ID0gT2ZkYXkuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSB0eXBlIFNfa2VybmVsX3dpdGhvdXRfem9uZSA9IFRpbWUwX2ludGYuU1xubW9kdWxlIHR5cGUgU19rZXJuZWwgPSBUaW1lX2ludGYuU1xuXG5tb2R1bGUgWm9uZV9zdGFibGUgPSBab25lLlN0YWJsZVxuaW5jbHVkZSBUaW1lLk1ha2UgKFRpbWVfZmxvYXQwKVxuaW5jbHVkZSBUaW1lX2Zsb2F0MFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9mbG9hdDAuU3RhYmxlXG4gIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFdpdGhfdF9vZl9zZXhwX2FicyA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE9mZGF5XG4gICAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuICBlbmRcblxuICBtb2R1bGUgV2l0aF91dGNfc2V4cCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHRvX3N0cmluZ19hYnNfcGFydHMgdCB+em9uZTpab25lLnV0YyA6IHN0cmluZyBsaXN0KV1cblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZGF0ZTsgU2V4cC5BdG9tIG9mZGF5X2FuZF9wb3NzaWJseV96b25lIF0gLT5cbiAgICAgICAgICAgIG9mX3N0cmluZ19nZW5cbiAgICAgICAgICAgICAgfmRlZmF1bHRfem9uZTooZnVuICgpIC0+IFpvbmUudXRjKVxuICAgICAgICAgICAgICB+ZmluZF96b25lOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6IHVua25vd24gdGltZSB6b25lXCIgc2V4cClcbiAgICAgICAgICAgICAgKGRhdGUgXiBcIiBcIiBeIG9mZGF5X2FuZF9wb3NzaWJseV96b25lKVxuICAgICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwXCIgc2V4cFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT4gcmFpc2UgZVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICAoc3ByaW50ZiBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cDogJXNcIiAoRXhuLnRvX3N0cmluZyBlKSlcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICAgIGxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX3VuaXhcblxuICAgICAgbW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbiAgICAgIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBab25lID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICAgIGluY2x1ZGUgWm9uZV9zdGFibGVcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gIGluY2x1ZGUgT2ZkYXlcblxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbm93ID0gYFVzZV9UaW1lX3VuaXhcblxuICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG5lbmRcblxubW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTcGFuXG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbmVuZFxuXG5tb2R1bGUgWm9uZSA9IHN0cnVjdFxuICBpbmNsdWRlIFpvbmVcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxuXG4gIGxldCAoIDwgKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoIDw9ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PiApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPiApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPj0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBfX2Jpbl9yZWFkX3RfXyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBhc2NlbmRpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmV0d2VlbiA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZF90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9yZWFkZXJfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fc2hhcGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fc2l6ZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl93cml0ZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl93cml0ZXJfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjbGFtcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjbGFtcF9leG4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG4gIGxldCBkZXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGVxdWFsID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZmluZF9leG4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoX2ZvbGRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGluaXRpYWxpemVkX3pvbmVzID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGxvY2FsID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG1heCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtaW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgb2Zfc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHBwID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0b19zdHJpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfYm91bmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfbGJvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIEV4cG9zZWRfZm9yX3Rlc3RzID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgTWFwID0gc3RydWN0IGVuZFxubW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBmb3JtYXQgPSBgVXNlX1RpbWVfdW5peFxubGV0IGdldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGhhc2hhYmxlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBpbnRlcnJ1cHRpYmxlX3BhdXNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl9kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl9zdHJpbmdfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl9zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhdXNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZV9mb3JldmVyID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwcCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRfb2Zfc2V4cF9hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX3VuaXhcbiIsImluY2x1ZGUgRGF0ZTBcblxubGV0IG9mX3RpbWUgdGltZSB+em9uZSA9IFRpbWVfZmxvYXQudG9fZGF0ZSB+em9uZSB0aW1lXG5sZXQgdG9kYXkgfnpvbmUgPSBvZl90aW1lIChUaW1lX2Zsb2F0Lm5vdyAoKSkgfnpvbmVcbmxldCBmb3JtYXQgPSBgVXNlX0RhdGVfdW5peFxubGV0IG9mX3RtID0gYFVzZV9EYXRlX3VuaXhcbmxldCBwYXJzZSA9IGBVc2VfRGF0ZV91bml4XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQ2My5PXG5cbmxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLlNwYW5cIlxuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IEludC5lcXVhbCBTeXMud29yZF9zaXplX2luX2JpdHMgNjRcbmxldCByb3VuZF9uZWFyZXN0ID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG5cbmxldCBmbG9hdCB4ID0gSW50NjMudG9fZmxvYXQgeFxuXG4oKiBbU3Bhbl0gaXMgYmFzaWNhbGx5IGEgW0ludDYzXS4gIEl0IGV2ZW4gc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvdy4gKilcbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IEludDYzLnQgKCogbmFub3NlY29uZHMgKikgW0BAZGVyaXZpbmcgaGFzaCwgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBJbnQ2My5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgemVybyA9IEludDYzLnplcm9cbmVuZFxuXG5pbmNsdWRlIFRcbm9wZW4gUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBQYXJ0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc2lnbiA6IFNpZ24udFxuICAgIDsgaHIgOiBpbnRcbiAgICA7IG1pbiA6IGludFxuICAgIDsgc2VjIDogaW50XG4gICAgOyBtcyA6IGludFxuICAgIDsgdXMgOiBpbnRcbiAgICA7IG5zIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxubGV0IG5leHQgdCA9IEludDYzLnN1Y2MgdFxubGV0IHByZXYgdCA9IEludDYzLnByZWQgdFxubGV0IG5hbm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgMVxubGV0IG1pY3Jvc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbmFub3NlY29uZClcbmxldCBtaWxsaXNlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG1pY3Jvc2Vjb25kKVxubGV0IHNlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG1pbGxpc2Vjb25kKVxubGV0IG1pbnV0ZSA9IEludDYzLihvZl9pbnQgNjAgKiBzZWNvbmQpXG5sZXQgaG91ciA9IEludDYzLihvZl9pbnQgNjAgKiBtaW51dGUpXG5sZXQgZGF5ID0gSW50NjMuKG9mX2ludCAyNCAqIGhvdXIpXG5cbigqIEJleW9uZCBbbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXSwgbm90IGV2ZXJ5IG1pY3Jvc2Vjb25kXG4gICBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBbZmxvYXRdIG51bWJlciBvZiBzZWNvbmRzLiAoSW4gZmFjdCwgaXQgaXMgYXJvdW5kIDEzNXksIGJ1dCB3ZVxuICAgbGVhdmUgYSBzbWFsbCBtYXJnaW4uKVxuXG4gICBJbiB0aGUgcHJlc2VuY2Ugb2Ygc2lsZW50bHkgaWdub3JlZCBvdmVyZmxvdywgbm90ZSB0aGF0IFt0XSBpcyBub3QgYWN0dWFsbHkgYm91bmQgdG9cbiAgIHN0YXkgYmV0d2VlbiB0aGVzZSBsaW1pdHMuICopXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBJbnQ2My4ob2ZfaW50IDEzNSAqIG9mX2ludCAzNjUgKiBkYXkpXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBJbnQ2My5uZWcgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcblxubGV0IGNyZWF0ZVxuICAgICAgP3NpZ246KHNpZ25fID0gU2lnbi5Qb3MgKCogcmViaW5kIHNvIG5vdCBzaGFkb3dlZCBieSBbb3BlbiBJbnQ2M10gYmVsb3cgKikpXG4gICAgICA/ZGF5OihkYXlzID0gMClcbiAgICAgID8oaHIgPSAwKVxuICAgICAgP21pbjoobWludXRlcyA9IDApXG4gICAgICA/KHNlYyA9IDApXG4gICAgICA/KG1zID0gMClcbiAgICAgID8odXMgPSAwKVxuICAgICAgPyhucyA9IDApXG4gICAgICAoKVxuICA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCB0ID1cbiAgICAob2ZfaW50IGRheXMgKiBkYXkpXG4gICAgKyAob2ZfaW50IGhyICogaG91cilcbiAgICArIChvZl9pbnQgbWludXRlcyAqIG1pbnV0ZSlcbiAgICArIChvZl9pbnQgc2VjICogc2Vjb25kKVxuICAgICsgKG9mX2ludCBtcyAqIG1pbGxpc2Vjb25kKVxuICAgICsgKG9mX2ludCB1cyAqIG1pY3Jvc2Vjb25kKVxuICAgICsgKG9mX2ludCBucyAqIG5hbm9zZWNvbmQpXG4gIGluXG4gIG1hdGNoIHNpZ25fIHdpdGhcbiAgfCBOZWcgLT4gbmVnIHRcbiAgfCBQb3MgfCBaZXJvIC0+IHRcbjs7XG5cbmxldCB0b19wYXJ0cyB0ID1cbiAgbGV0IG9wZW4gSW50NjMgaW5cbiAgbGV0IG1hZyA9IGFicyB0IGluXG4gIHsgUGFydHMuc2lnbiA9IChpZiB0IDwgemVybyB0aGVuIE5lZyBlbHNlIGlmIHQgPiB6ZXJvIHRoZW4gUG9zIGVsc2UgWmVybylcbiAgOyBociA9IHRvX2ludF9leG4gKG1hZyAvIGhvdXIpXG4gIDsgbWluID0gdG9faW50X2V4biAocmVtIG1hZyBob3VyIC8gbWludXRlKVxuICA7IHNlYyA9IHRvX2ludF9leG4gKHJlbSBtYWcgbWludXRlIC8gc2Vjb25kKVxuICA7IG1zID0gdG9faW50X2V4biAocmVtIG1hZyBzZWNvbmQgLyBtaWxsaXNlY29uZClcbiAgOyB1cyA9IHRvX2ludF9leG4gKHJlbSBtYWcgbWlsbGlzZWNvbmQgLyBtaWNyb3NlY29uZClcbiAgOyBucyA9IHRvX2ludF9leG4gKHJlbSBtYWcgbWljcm9zZWNvbmQgLyBuYW5vc2Vjb25kKVxuICB9XG47O1xuXG5sZXQgb2ZfcGFydHMgeyBQYXJ0cy5zaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA9XG4gIGNyZWF0ZSB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zICgpXG47O1xuXG5sZXQgb2ZfbnMgZiA9IHJvdW5kX25lYXJlc3QgZlxubGV0IG9mX2ludDYzX25zIGkgPSBpXG5sZXQgb2ZfaW50X3VzIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWNyb3NlY29uZClcbmxldCBvZl9pbnRfbXMgaSA9IEludDYzLihvZl9pbnQgaSAqIG1pbGxpc2Vjb25kKVxubGV0IG9mX2ludF9zZWMgaSA9IEludDYzLihvZl9pbnQgaSAqIHNlY29uZClcbmxldCBvZl91cyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBtaWNyb3NlY29uZClcbmxldCBvZl9tcyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBtaWxsaXNlY29uZClcbmxldCBvZl9zZWMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgc2Vjb25kKVxubGV0IG9mX21pbiBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBtaW51dGUpXG5sZXQgb2ZfaHIgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgaG91cilcbmxldCBvZl9kYXkgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgZGF5KVxuXG5sZXQgb2Zfc2VjX3dpdGhfbWljcm9zZWNvbmRfcHJlY2lzaW9uIHNlYyA9XG4gIGxldCB1cyA9IHJvdW5kX25lYXJlc3QgKHNlYyAqLiAxZTYpIGluXG4gIG9mX2ludDYzX25zIEludDYzLih1cyAqIG9mX2ludCAxMDAwKVxuOztcblxubGV0IG9mX2ludDYzX3NlY29uZHMgeCA9IHggKiBzZWNvbmRcbmxldCBvZl9pbnQzMl9zZWNvbmRzIHggPSBvZl9pbnQ2M19zZWNvbmRzIChJbnQ2My5vZl9pbnQzMiB4KVxuXG5sZXQgdG9fbnMgdCA9IGZsb2F0IHRcbmxldCB0b19pbnQ2M19ucyB0ID0gdFxubGV0IHRvX3VzIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pY3Jvc2Vjb25kXG5sZXQgdG9fbXMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWlsbGlzZWNvbmRcbmxldCB0b19zZWMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgc2Vjb25kXG5sZXQgdG9fbWluIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbnV0ZVxubGV0IHRvX2hyIHQgPSBmbG9hdCB0IC8uIGZsb2F0IGhvdXJcbmxldCB0b19kYXkgdCA9IGZsb2F0IHQgLy4gZmxvYXQgZGF5XG5sZXQgdG9faW50X3VzIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pY3Jvc2Vjb25kKSlcbmxldCB0b19pbnRfbXMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gbWlsbGlzZWNvbmQpKVxubGV0IHRvX2ludF9zZWMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gc2Vjb25kKSlcbmxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHQgPSB0IC8lIHNlY29uZFxubGV0IG9mX2ludF9ucyBpID0gb2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9faW50X25zID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gdCAtPiBJbnQ2My50b19pbnRfZXhuICh0b19pbnQ2M19ucyB0KVxuICBlbHNlIGZ1biBfIC0+IGZhaWx3aXRoIFwiVGltZV9ucy5TcGFuLnRvX2ludF9uczogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0ICggKyApIHQgdSA9IEludDYzLiggKyApIHQgdVxubGV0ICggLSApIHQgdSA9IEludDYzLiggLSApIHQgdVxubGV0IGFicyA9IEludDYzLmFic1xubGV0IG5lZyA9IEludDYzLm5lZ1xubGV0IHNjYWxlIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgKi4gZilcbmxldCBzY2FsZV9pbnQ2MyB0IGkgPSBJbnQ2My4oICogKSB0IGlcbmxldCBzY2FsZV9pbnQgdCBpID0gc2NhbGVfaW50NjMgdCAoSW50NjMub2ZfaW50IGkpXG5sZXQgZGl2ID0gSW50NjMuKCAvJSApXG5sZXQgKCAvICkgdCBmID0gcm91bmRfbmVhcmVzdCAoZmxvYXQgdCAvLiBmKVxubGV0ICggLy8gKSA9IEludDYzLiggLy8gKVxubGV0IHRvX3Byb3BvcnRpb25hbF9mbG9hdCB0ID0gSW50NjMudG9fZmxvYXQgdFxuXG5sZXQgb2ZfdW5pdF9vZl90aW1lIHUgPVxuICBtYXRjaCAodSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gIHwgTmFub3NlY29uZCAtPiBuYW5vc2Vjb25kXG4gIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgfCBNaWxsaXNlY29uZCAtPiBtaWxsaXNlY29uZFxuICB8IFNlY29uZCAtPiBzZWNvbmRcbiAgfCBNaW51dGUgLT4gbWludXRlXG4gIHwgSG91ciAtPiBob3VyXG4gIHwgRGF5IC0+IGRheVxuOztcblxubGV0IHRvX3VuaXRfb2ZfdGltZSB0IDogVW5pdF9vZl90aW1lLnQgPVxuICBsZXQgYWJzX3QgPSBhYnMgdCBpblxuICBpZiBhYnNfdCA+PSBkYXlcbiAgdGhlbiBEYXlcbiAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gIHRoZW4gSG91clxuICBlbHNlIGlmIGFic190ID49IG1pbnV0ZVxuICB0aGVuIE1pbnV0ZVxuICBlbHNlIGlmIGFic190ID49IHNlY29uZFxuICB0aGVuIFNlY29uZFxuICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gIHRoZW4gTWlsbGlzZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWNyb3NlY29uZFxuICB0aGVuIE1pY3Jvc2Vjb25kXG4gIGVsc2UgTmFub3NlY29uZFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUMCA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsXVxuXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX2ludDYzX25zIHRcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG5cbiAgICAgICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBzcGFuX3BhcnRfbWFnbml0dWRlID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMFxuICAgICAgICAgICAgdGhlbiAxXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMV8wMDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBfMDAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogc3BhbiBwYXJ0IG1hZ25pdHVkZXMgYXJlIGFsd2F5cyA8IDEwMF8wMDAgKilcblxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGFzc2VydCAoYmlsbGlvbnRocyA+PSAwICYmIGJpbGxpb250aHMgPD0gOTk5Xzk5OV85OTkpO1xuICAgICAgICAgICAgaWYgYmlsbGlvbnRocyA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAgPD4gMFxuICAgICAgICAgICAgdGhlbiA5XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA4XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDdcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDZcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2NoYXIgYnVmIH5wb3MgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXI7XG4gICAgICAgICAgICBwb3MgKyAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zIGNoYXIxIGNoYXIyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjE7XG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAocG9zICsgMSkgY2hhcjI7XG4gICAgICAgICAgICBwb3MgKyAyXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzIGJ1ZiB+cG9zIH5kaWdpdHMgKEludDYzLm9mX2ludCBpbnQpO1xuICAgICAgICAgICAgcG9zICsgZGlnaXRzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+ZGVjaW1hbHMgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzXG4gICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgIH5kaWdpdHM6ZGVjaW1hbHNcbiAgICAgICAgICAgICAgKEludDYzLm9mX2ludCAoYmlsbGlvbnRocyAvIEludC5wb3cgMTAgKDkgLSBkZWNpbWFscykpKTtcbiAgICAgICAgICAgIHBvcyArIGRlY2ltYWxzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgc3VmZml4ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3Mgc3VmZml4IGluXG4gICAgICAgICAgICAgIHBvcylcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pbGxpc2Vjb25kID0gdG9faW50NjNfbnMgbWlsbGlzZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWNyb3NlY29uZCA9IHRvX2ludDYzX25zIG1pY3Jvc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgaW50NjNfNjAgPSBJbnQ2My5vZl9pbnQgNjBcbiAgICAgICAgICBsZXQgaW50NjNfMjQgPSBJbnQ2My5vZl9pbnQgMjRcblxuICAgICAgICAgICgqIFVuaXRzIG9mIHNlY29uZHMgYW5kIHNtYWxsZXIgY2FuIGJlIHdyaXR0ZW4gaW4gZGVjaW1hbCBub3RhdGlvbiB3aXRob3V0XG4gICAgICAgICAgICAgd29ycnlpbmcgYWJvdXQgbm9uLXBvd2VyLW9mLXRlbiBmYWN0b3JzLiAqKVxuICAgICAgICAgIG1vZHVsZSBEZWNpbWFsX3VuaXQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgU2Vjb25kXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOb25lXG4gICAgICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgICAgICBsZXQgY3JlYXRlIH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIHMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gU2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSAxXG4gICAgICAgICAgICAgIHRoZW4gTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBpbnRlZ2VyIHQgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAvIG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBiaWxsaW9udGhzIHQgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWxsaXNlY29uZCAqIDFfMDAwXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWNyb3NlY29uZCAqIDFfMDAwXzAwMFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gMFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGxlbmd0aCB0IH5kaWdpdHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19sZW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgU2Vjb25kIC0+IGRpZ2l0cyArIDFcbiAgICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBOYW5vc2Vjb25kIC0+IGRpZ2l0cyArIDJcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfbGVuID0gaWYgZGVjaW1hbHMgPiAwIHRoZW4gZGVjaW1hbHMgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICBkaWdpdHNfbGVuICsgZGVjaW1hbHNfbGVuXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MgPVxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gd3JpdGVfY2hhciBidWYgfnBvcyAncydcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICdtJyAncydcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICd1JyAncydcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ24nICdzJ1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gcG9zXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGUgdCBidWYgfnBvcyB+aW50ZWdlciB+ZGlnaXRzIH5iaWxsaW9udGhzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyBpbnRlZ2VyIH5kaWdpdHMgaW5cbiAgICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlY2ltYWxzID0gMFxuICAgICAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyAnLicgaW5cbiAgICAgICAgICAgICAgICAgICAgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmJpbGxpb250aHMgfmRlY2ltYWxzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICAgIGlmIGVxdWFsIHQgemVyb1xuICAgICAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPSB0IDwgemVybyBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLiggLyApICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSBpblxuICAgICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICAgIEludDYzLnJlbSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLmFicyBzZWNvbmRzIGluXG4gICAgICAgICAgICAgIGxldCBucyA9IEludC5hYnMgbnMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBJbnQ2My5yZW0gc2Vjb25kcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVzID0gSW50NjMuKCAvICkgc2Vjb25kcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgbSA9IEludDYzLnJlbSBtaW51dGVzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJzID0gSW50NjMuKCAvICkgbWludXRlcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgaCA9IEludDYzLnJlbSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBkID0gSW50NjMuKCAvICkgaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2QgPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmQgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9oID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpoIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfbSA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6bSBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0ID0gRGVjaW1hbF91bml0LmNyZWF0ZSB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9pbnRlZ2VyID0gRGVjaW1hbF91bml0LmludGVnZXIgZGVjaW1hbF91bml0IH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2JpbGxpb250aHMgPSBEZWNpbWFsX3VuaXQuYmlsbGlvbnRocyBkZWNpbWFsX3VuaXQgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc3RyaW5nX2xlbmd0aCA9XG4gICAgICAgICAgICAgICAgbGV0IHNpZ25fbGVuID0gaWYgaXNfbmVnYXRpdmUgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkX2xlbiA9IGlmIGRpZ2l0c19vZl9kID4gMCB0aGVuIGRpZ2l0c19vZl9kICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgaF9sZW4gPSBpZiBkaWdpdHNfb2ZfaCA+IDAgdGhlbiBkaWdpdHNfb2ZfaCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IG1fbGVuID0gaWYgZGlnaXRzX29mX20gPiAwIHRoZW4gZGlnaXRzX29mX20gKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfbGVuID1cbiAgICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBzaWduX2xlbiArIGRfbGVuICsgaF9sZW4gKyBtX2xlbiArIGRlY2ltYWxfdW5pdF9sZW5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChzdHJpbmdfbGVuZ3RoID4gMCk7XG4gICAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgc3RyaW5nX2xlbmd0aCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gMCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gaWYgaXNfbmVnYXRpdmUgdGhlbiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICctJyBlbHNlIHBvcyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2QgZCAnZCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9oIGggJ2gnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfbSBtICdtJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQud3JpdGVcbiAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICB+aW50ZWdlcjpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHBvcyA9IHN0cmluZ19sZW5ndGgpO1xuICAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZilcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnRvX3N0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICAoKiBXZSBkbyBjb21wdXRhdGlvbnMgdXNpbmcgbmVnYXRpdmUgbnVtYmVycyBldmVyeXdoZXJlIGFuZCB0ZXN0IGFnYWluc3RcbiAgICAgICAgICAgICB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWluX3ZhbHVlXSByYXRoZXIgdGhhbiB1c2luZyBwb3NpdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICAgYW5kIHRlc3RpbmcgYWdhaW5zdCB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWF4X3ZhbHVlXSBiZWNhdXNlIHRoZVxuICAgICAgICAgICAgIG5lZ2F0aXZlIGludGVnZXIgcmFuZ2UgaXMgb25lIHdpZGVyIHRoYW4gdGhlIHBvc2l0aXZlIGludGVnZXIgcmFuZ2VcbiAgICAgICAgICAgICAoLTIqKjYzIHZzIDIqKjYzLTEpLCBhbmQgd2UgbmVlZCB0aGF0IHRvIGJlIGFibGUgdG8gaGFuZGxlIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgIG5pY2VseS4gKilcblxuICAgICAgICAgIGxldCBpbnQ2M18xMCA9IEludDYzLm9mX2ludCAxMFxuICAgICAgICAgIGxldCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93ID0gSW50NjMuKG1pbl92YWx1ZSAvIGludDYzXzEwKVxuXG4gICAgICAgICAgbGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiVGltZV9ucy5TcGFuLm9mX3N0cmluZzogaW52YWxpZCBzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgKHN0cmluZyA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgIChyZWFzb24gOiBzdHJpbmcpXVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBBc3N1bWVzIHggYW5kIHkgYXJlIGJvdGggbm9ucG9zaXRpdmUgKilcbiAgICAgICAgICBsZXQgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgeCB5ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBzdW0gPSB4ICsgeSBpblxuICAgICAgICAgICAgaWYgc3VtID4geFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgc3VtXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgaW50NjMgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyKSBpblxuICAgICAgICAgICAgaWYgaW50NjMgPCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAoaW50NjMgKiBpbnQ2M18xMCkgKC1kaWdpdClcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG1pbl9mYWN0b3Jfb2Ygc3BhbiA9IEludDYzLiggLyApIEludDYzLm1pbl92YWx1ZSAodG9faW50NjNfbnMgc3BhbilcbiAgICAgICAgICBsZXQgbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGRheVxuICAgICAgICAgIGxldCBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGhvdXJcbiAgICAgICAgICBsZXQgbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbnV0ZVxuICAgICAgICAgIGxldCBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2Ygc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbGxpc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pY3Jvc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbmFub3NlY29uZFxuXG4gICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgICAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgICAgICAgfCBEYXkgLT4gbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgSG91ciAtPiBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWludXRlIC0+IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IFNlY29uZCAtPiBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgc2NhbGUgPSB0b19pbnQ2M19ucyAob2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkgaW5cbiAgICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3cgPVxuICAgICAgICAgICAgICBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIEludDYzLiggPCApIG5lZ19pbnRlZ2VyIG1pbl93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyX25zID0gSW50NjMuKCAqICkgbmVnX2ludGVnZXIgc2NhbGUgaW5cbiAgICAgICAgICAgIGxldCBmcmFjdGlvbl9wb3MgPSBkZWNpbWFsX3BvcyArIDEgaW5cbiAgICAgICAgICAgIGlmIGZyYWN0aW9uX3BvcyA+PSBlbmRfcG9zXG4gICAgICAgICAgICB0aGVuIG5lZ19pbnRlZ2VyX25zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfbnMgPVxuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLnJlYWRfaW50NjNfZGVjaW1hbFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+cG9zOmZyYWN0aW9uX3Bvc1xuICAgICAgICAgICAgICAgICAgfnNjYWxlXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6KGVuZF9wb3MgLSBmcmFjdGlvbl9wb3MpXG4gICAgICAgICAgICAgICAgICB+YWxsb3dfdW5kZXJzY29yZTp0cnVlXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllczpyb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyBuZWdfaW50ZWdlcl9ucyAoSW50NjMuKCB+LSApIGRlY2ltYWxfbnMpKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IG5lZ19ucyA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgc3RyaW5nXCI7XG4gICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8ICcrJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZyA6IERpZ2l0X3N0cmluZ19oZWxwZXJzLlJvdW5kLnQgPVxuICAgICAgICAgICAgICAoKiBVbHRpbWF0ZWx5LCB3ZSBhbHdheXMgcm91bmQgcGFyc2VkIHNwYW5zIHRvd2FyZHMgcG9zaXRpdmUgaW5maW5pdHkgd2hlblxuICAgICAgICAgICAgICAgICB0aGUgbmVhcmVzdCByb3VuZCBucyBhcmUgZXF1aWRpc3RhbnQuIEZvciBleGFtcGxlLCBcIjEuNW5zXCIgaXMgcmVhZCBhc1xuICAgICAgICAgICAgICAgICAyLjBucywgYW5kIFwiLTEuNW5zXCIgaXMgcmVhZCBhcyAtMW5zLiBTaW5jZSB3ZSByZWFkIGFic29sdXRlIHZhbHVlcyBiZWZvcmVcbiAgICAgICAgICAgICAgICAgYXBwbHlpbmcgdGhlIHNpZ24sIHdlIG11c3QgY2hvb3NlIG91ciByb3VuZGluZyBkaXJlY3Rpb24gYmFzZWQgb24gdGhlXG4gICAgICAgICAgICAgICAgIHNpZ24uIFJvdW5kaW5nIGRlY2ltYWwgdmFsdWVzIGhhcHBlbnMgYmVmb3JlIG5lZ2F0aW5nIHRoZWlyIG1hZ25pdHVkZS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggaXNfbmVnYXRpdmUgd2l0aFxuICAgICAgICAgICAgICB8IGZhbHNlIC0+IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgICB8IHRydWUgLT4gVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogTG9vcCBvdmVyIHBhcnRzLCBsaWtlIFwiNW1cIiBpbiBcIjFoNW0zMHNcIiAqKVxuICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiBkb1xuICAgICAgICAgICAgICBsZXQgaGFzX2RpZ2l0ID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgbGV0IGkgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGlnaXRzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kaWdpdHMgZG9cbiAgICAgICAgICAgICAgICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGkgOj0gYWRkX25lZ19kaWdpdCB+c3RyaW5nICFpIGM7XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGlnaXRzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICFpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgIXBvcyA8IGxlbiAmJiBDaGFyLmVxdWFsICcuJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MpXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGVjaW1hbHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RlY2ltYWxzIGRvXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kZWNpbWFscyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgICAgIGxldCBlbmRfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiBub3QgIWhhc19kaWdpdFxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gZGlnaXRzIGJlZm9yZSB1bml0IHN1ZmZpeFwiO1xuICAgICAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgPVxuICAgICAgICAgICAgICAgIGlmICFwb3MgKyAxIDwgbGVuICYmIENoYXIuZXF1YWwgJ3MnIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgKCFwb3MgKyAxKSlcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ3UnIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTmFub3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGlmICFwb3MgPCBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBEYXlcbiAgICAgICAgICAgICAgICAgIHwgJ2gnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBIb3VyXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgTWludXRlXG4gICAgICAgICAgICAgICAgICB8ICdzJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgU2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyB1bml0IHN1ZmZpeCBhZnRlciBkaWdpdHNcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmVnX25hbm9zX29mX3BhcnQgPVxuICAgICAgICAgICAgICAgIG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbmVnX25zIDo9IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nICFuZWdfbnMgbmVnX25hbm9zX29mX3BhcnRcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICBpZiBpc19uZWdhdGl2ZVxuICAgICAgICAgICAgICB0aGVuICFuZWdfbnNcbiAgICAgICAgICAgICAgZWxzZSBpZiBJbnQ2My4oID0gKSAhbmVnX25zIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCJcbiAgICAgICAgICAgICAgZWxzZSBJbnQ2My4oIH4tICkgIW5lZ19uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9mX2ludDYzX25zIG5zXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lX25zLlNwYW4uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGFuIEF0b21cIiBzZXhwXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDBcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVDApXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbmxldCB0b19zdHJpbmcgPSBTdGFibGUuVjIudG9fc3RyaW5nXG5sZXQgb2Zfc3RyaW5nID0gU3RhYmxlLlYyLm9mX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBTdGFibGUuVjIudF9vZl9zZXhwXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTdGFibGUuVjIudF9zZXhwX2dyYW1tYXJcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogRnVuY3Rpb25zIHJlcXVpcmVkIGJ5IFtSb2J1c3RseV9jb21wYXJhYmxlXTogYWxsb3dzIGZvciBbcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXVxuICAgZ3JhbnVsYXJpdHkuXG5cbiAgIEEgbWljcm9zZWNvbmQgaXMgYSByZWFzb25hYmxlIGdyYW51bGFyaXR5IGJlY2F1c2UgdGhlcmUgaXMgdmVyeSBsaXR0bGUgbmV0d29ya1xuICAgYWN0aXZpdHkgdGhhdCBjYW4gYmUgbWVhc3VyZWQgdG8gc3ViLW1pY3Jvc2Vjb25kIHJlc29sdXRpb24uICopXG5sZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gbWljcm9zZWNvbmRcbmxldCAoID49LiApIHQgdSA9IHQgPj0gSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8PS4gKSB0IHUgPSB0IDw9IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPS4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpIDw9IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0ICggPi4gKSB0IHUgPSB0ID4gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8LiApIHQgdSA9IHQgPCBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw+LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCByb2J1c3RseV9jb21wYXJlIHQgdSA9IGlmIHQgPC4gdSB0aGVuIC0xIGVsc2UgaWYgdCA+LiB1IHRoZW4gMSBlbHNlIDBcblxuKCogV2UgZG9uJ3QganVzdCBjb252ZXJ0IHRvIFtUaW1lLlNwYW4udF0gYW5kIHVzZSB0aGUgY29udmVyc2lvbiB0aGVyZSBiZWNhdXNlIG91clxuICAgW3RvX3NwYW5dIGNvbnZlcnNpb24gaXMgbGltaXRlZCB0byBtaWNyb3NlY29uZCBwcmVjaXNpb24uICopXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBzaW5jZV91bml4X2Vwb2NoICgpID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSB8PiBvZl9pbnQ2M19uc1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9XG4gIEludDYzLnJhbmRvbSA/c3RhdGUgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuICAtIEludDYzLnJhbmRvbSA/c3RhdGUgKG5lZyBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbjs7XG5cbmxldCByYW5kb21pemUgdCB+cGVyY2VudCA9IFNwYW5faGVscGVycy5yYW5kb21pemUgdCB+cGVyY2VudCB+c2NhbGVcblxubGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuOztcblxubGV0IGdlbl9pbmNsID0gSW50NjMuZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gSW50NjMuZ2VuX3VuaWZvcm1faW5jbFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IG1vZHVsZV9uYW1lXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kKVxuXG50eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFN0YWJsZS5WMi5jb21wYXJhdG9yXG4gIGVuZClcblxuKCogcmUtaW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhbmQgaXRzIGNvbXBhcmlzb25zIHRvIHNoYWRvdyB0aGVcbiAgIHVuLWlubGluZWFibGUgb25lcyBmcm9tIFtDb21wYXJhYmxlXSAqKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPSBTcGFuX2Zsb2F0Lm9mX3NlYyAodG9fc2VjIHQpXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHMgPSBvZl9zZWMgKFNwYW5fZmxvYXQudG9fc2VjIHMpXG5sZXQgaGFsZl9taWNyb3NlY29uZCA9IEludDYzLm9mX2ludCA1MDBcbmxldCBuZWFyZXN0X21pY3Jvc2Vjb25kIHQgPSBJbnQ2My4oKHRvX2ludDYzX25zIHQgKyBoYWxmX21pY3Jvc2Vjb25kKSAvJSBvZl9pbnQgMTAwMClcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiU3Bhbi50IGV4Y2VlZHMgbGltaXRzXCJcbiAgICAgICAgKHQgOiB0KVxuICAgICAgICAobWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KVxuICAgICAgICAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KV1cbjs7XG5cbmxldCBjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICBpZiB0IDwgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgfHwgdCA+IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW4gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHRcbiAgZWxzZSB0XG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBTcGFuX2Zsb2F0Lm9mX3VzIChJbnQ2My50b19mbG9hdCAobmVhcmVzdF9taWNyb3NlY29uZCAoY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0KSkpXG47O1xuXG5sZXQgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgcyA9XG4gIGlmIFNwYW5fZmxvYXQuKCA+ICkgcyBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFNwYW5fZmxvYXQuKCA8ICkgcyBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucy5TcGFuIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBzcGFuXCJcbiAgICAgIHNcbiAgICAgIFslc2V4cF9vZjogU3Bhbl9mbG9hdC50XTtcbiAgKCogVXNpbmcgW1RpbWUuU3Bhbi50b19zZWNdIChiZWluZyB0aGUgaWRlbnRpdHkpIHNvIHRoYXRcbiAgICAgd2UgbWFrZSBkb24ndCBhcHBseSB0b28gbWFueSBjb252ZXJzaW9uXG4gICAgIC0gVG9vIG1hbnkgOiBgW1NwYW4udF0gLT4gW2FdIC0+IFt0XWBcbiAgICAgLSBPbmx5IE9uZSA6IGBbU3Bhbi50XT09W2FdIC0+IFt0XWAuICopXG4gIG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoU3Bhbl9mbG9hdC50b19zZWMgcylcbjs7XG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWF4X3ZhbHVlXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBvZl9wYXJ0cyA9IG9mX3BhcnRzXG4gIGxldCB0b19wYXJ0cyA9IHRvX3BhcnRzXG5lbmRcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgdG9fc3BhbiA9IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcblxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHdhbGwtY2xvY2sgbWlkbmlnaHQgKilcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuaW5jbHVkZSAoU3BhbiA6IFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgdG9fcGFydHMgdCA9IFNwYW4udG9fcGFydHMgdFxuXG5cbmxldCBzdGFydF9vZl9kYXkgOiB0ID0gU3Bhbi56ZXJvXG5sZXQgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0ID0gU3Bhbi5kYXlcbmxldCBhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5ID0gU3Bhbi4oIC0gKSBzdGFydF9vZl9uZXh0X2RheSBTcGFuLm5hbm9zZWNvbmRcbmxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gdFxuXG5sZXRbQGNvbGRdIGlucHV0X291dF9vZl9ib3VuZHMgc3BhbiA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltZV9ucy5PZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IGlucHV0IG91dCBvZiBib3VuZHNcIlxuICAgICAgICB+Xzooc3BhbiA6IFNwYW4udCldXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGlzX2ludmFsaWQgc3BhbiA9XG4gICgqIFdoeSB3ZSB1c2UgW1NwYW4uKCA+ICldIHJhdGhlciB0aGFuIFsoID49ICldIGJlbG93OlxuXG4gICAgIFdlIGFsbG93IHRvIHJlcHJlc2VudCB0aGUgZW5kLW9mLWRheSBzZW50aW5lbCB2YWx1ZSAoWzI0LjAwMDAwMDAwMGhdKSwgd2hpY2ggaXMgbm90XG4gICAgIGl0c2VsZiBhIHZhbGlkIGNsb2NrIGZhY2UgdGltZS4gIEhvd2V2ZXIsIHNpbmNlIHZhbGlkIGNsb2NrIGZhY2UgdGltZXMgcmVhZGlseVxuICAgICByb3VuZCB1cCB0byBpdCwgaXQncyBiZXR0ZXIgdG8gYWxsb3cgaXQgdG8gYmUgcmVwcmVzZW50ZWQuICopXG4gIFNwYW4uKCA8ICkgc3BhbiBzdGFydF9vZl9kYXkgfHwgU3Bhbi4oID4gKSBzcGFuIHN0YXJ0X29mX25leHRfZGF5XG47O1xuXG5sZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9IG5vdCAoaXNfaW52YWxpZCBzcGFuKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gc3BhblxuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIHNwYW4gPVxuICBpZiBpc19pbnZhbGlkIHNwYW4gdGhlbiBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gZWxzZSBzcGFuXG47O1xuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IHNwYW4gPSBpZiBpc19pbnZhbGlkIHNwYW4gdGhlbiBOb25lIGVsc2UgU29tZSBzcGFuXG5sZXQgYWRkX2V4biB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uKCArICkgdCBzcGFuKVxubGV0IHN1Yl9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggLSApIHQgc3BhbilcbmxldCBhZGQgdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWIgdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLiggLSApIHQgc3BhbilcbmxldCBuZXh0IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ubmV4dCB0KVxubGV0IHByZXYgdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi5wcmV2IHQpXG5sZXQgZGlmZiB0IHUgPSBTcGFuLiggLSApIHQgdVxuXG5sZXQgY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkgPVxuICAoKiBTaW1pbGFyIHRvIFtUaW1lLk9mZGF5LmNyZWF0ZV0sIGlmIHdlIGRldGVjdCBhIGxlYXAgc2Vjb25kIHdlIHN0cmlwIG9mZiBhbGxcbiAgICAgc3ViLXNlY29uZCBlbGVtZW50cyBzbyB0aGF0IEhIOk1NOjYwLlhYWFhYWFhYWCBpcyBhbGwgbWFwcGVkIHRvIEhIOk1NOjYwLiAqKVxuICBsZXQgbXMsIHVzLCBucyA9XG4gICAgbWF0Y2ggc2VjIHdpdGhcbiAgICB8IFNvbWUgNjAgLT4gU29tZSAwLCBTb21lIDAsIFNvbWUgMFxuICAgIHwgXyAtPiBtcywgdXMsIG5zXG4gIGluXG4gIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKFxuICAgICAgU3Bhbi5TdGFibGUuVjIgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFNwYW4uU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgIGxldCB0b19zdHJpbmdfd2l0aF91bml0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGZ1biB0IH51bml0IC0+XG4gICAgICAgIGlmIFNwYW4uKCA8ICkgdCBzdGFydF9vZl9kYXkgfHwgU3Bhbi4oIDwgKSBzdGFydF9vZl9uZXh0X2RheSB0XG4gICAgICAgIHRoZW4gXCJJbmNvcnJlY3QgZGF5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNpeHR5ID0gITYwIGluXG4gICAgICAgICAgbGV0IHRob3VzYW5kID0gITEwMDAgaW5cbiAgICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHQgaW5cbiAgICAgICAgICBsZXQgdXMgPSBucyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG5zID0gbnMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbXMgPSB1cyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IHVzID0gdXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgcyA9IG1zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbXMgPSBtcyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gcyAvIHNpeHR5IGluXG4gICAgICAgICAgbGV0IHMgPSBzIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IGggPSBtIC8gc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gbSBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCB1bml0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCAoYE5hbm9zZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgU2Vjb25kKSBhcyB1bml0IC0+IHVuaXRcbiAgICAgICAgICAgIHwgYE1pbnV0ZV9vcl9sZXNzIC0+XG4gICAgICAgICAgICAgIGlmIG5zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHVzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBtcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGBNaW51dGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IGBNaW51dGUgLT4gNVxuICAgICAgICAgICAgfCBgU2Vjb25kIC0+IDhcbiAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+IDEyXG4gICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAxNVxuICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiAxOFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczowIGg7XG4gICAgICAgICAgQnl0ZXMuc2V0IHN0ciAyICc6JztcbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczozIG07XG4gICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICB8IGBNaW51dGUgLT4gKClcbiAgICAgICAgICAgfCAoYFNlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA1ICc6JztcbiAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczo2IHM7XG4gICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICB8IGBTZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgfCAoYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDggJy4nO1xuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjkgbXM7XG4gICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICB8IChgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjEyIHVzO1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxNSBucykpKSk7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzdHIpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvcyB+dW50aWwgPVxuICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgIGxldCBkaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9kaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IHBvcyA9IHJlZiBwb3MgaW5cbiAgICAgICgqIHJlYWQgdXAgdG8gMTAgZGlnaXRzOyBzdG9yZSB0aGUgZmlyc3QgOSwgdXNlIHRoZSAxMHRoIHRvIHJvdW5kICopXG4gICAgICB3aGlsZSAhcG9zIDwgdW50aWwgJiYgIW51bV9kaWdpdHMgPCAxMCBkb1xuICAgICAgICBsZXQgYyA9IHN0cmluZy5bIXBvc10gaW5cbiAgICAgICAgaWYgQ2hhci5pc19kaWdpdCBjXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgbnVtX2RpZ2l0cztcbiAgICAgICAgICBpZiAhbnVtX2RpZ2l0cyA8IDEwXG4gICAgICAgICAgdGhlbiBkaWdpdHMgOj0gKCFkaWdpdHMgKiAxMCkgKyBDaGFyLmdldF9kaWdpdF9leG4gY1xuICAgICAgICAgIGVsc2UgaWYgQ2hhci5nZXRfZGlnaXRfZXhuIGMgPj0gNVxuICAgICAgICAgIHRoZW4gaW5jciBkaWdpdHNcbiAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgaW5jciBwb3NcbiAgICAgIGRvbmU7XG4gICAgICAoKiBpZiB0aGVyZSBhcmUgbWlzc2luZyBkaWdpdHMsIGFkZCB6ZXJvZXMgKilcbiAgICAgIGlmICFudW1fZGlnaXRzIDwgOSB0aGVuIGRpZ2l0cyA6PSAhZGlnaXRzICogSW50LnBvdyAxMCAoOSAtICFudW1fZGlnaXRzKTtcbiAgICAgICFkaWdpdHNcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgbmFub3NlY29uZHMgPVxuICAgICAgICBpZiBJbnQuZXF1YWwgc3Vic2VjX2xlbiAwXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlXG4gICAgICAgICAgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3M6KHN1YnNlY19wb3MgKyAxKSB+dW50aWw6KHN1YnNlY19wb3MgKyBzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCBuYW5vc2Vjb25kcylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uc2Vjb25kIHNlYylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4ubWludXRlIG1pbilcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uaG91ciBocilcbiAgICAgIHw+IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IE9mZGF5X2hlbHBlcnMucGFyc2Ugc3RyaW5nIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwIDogdCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImV4cGVjdGVkIGFuIGF0b21cIiBzZXhwXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIGxldCB0b19zdHJpbmcgKHQgOiB0KSA9IHRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTmFub3NlY29uZFxuICAgIGxldCBzZXhwX29mX3QgKHQgOiB0KSA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IHRvX2ludDYzIHQgPSBTcGFuX25zLlN0YWJsZS5WMi50b19pbnQ2MyB0XG4gICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuX25zLlN0YWJsZS5WMi5vZl9pbnQ2M19leG4gdClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoXG4gIFN0YWJsZS5WMSA6XG4gICAgQ29tcGFyYXRvci5TXG4gIHdpdGggdHlwZSB0IDo9IHRcbiAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdGFibGUuVjEgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgaW5jbHVkZSAoU3RhYmxlLlYxIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5PZmRheVwiXG4gICAgbGV0IGhhc2ggPSBTcGFuLmhhc2hcbiAgICBsZXQgaGFzaF9mb2xkX3QgPSBTcGFuLmhhc2hfZm9sZF90XG4gIGVuZClcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0YWJsZS5WMS50X3NleHBfZ3JhbW1hclxubGV0IHRvX21pY3Jvc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWljcm9zZWNvbmRcbmxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgU2Vjb25kXG5sZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbnV0ZV9vcl9sZXNzXG5cbmxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgdHJ5XG4gICAgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6U3RhYmxlLlYxLmNyZWF0ZV9mcm9tX3BhcnNlZFxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltZV9ucy5PZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogY2Fubm90IHBhcnNlIHN0cmluZ1wiXG4gICAgICAgICAgfl86KFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4gOiBzdHJpbmcpXG4gICAgICAgICAgfl86KGV4biA6IGV4bildXG47O1xuXG5sZXQgZXZlcnkgPVxuICBsZXQgcmVjIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYyA9XG4gICAgKCogQXNzdW1lcyBbc3Bhbl0sIFtzdGFydF0sIGFuZCBbc3RvcF0gYXJlIHZhbGlkIG9mZGF5cy4gQXNzdW1lcyBbc3RhcnQgPCBzdG9wXS5cbiAgICAgICBBc3N1bWVzIFtzcGFuID4gMF0uICopXG4gICAgbGV0IGFjYyA9IHN0YXJ0IDo6IGFjYyBpblxuICAgIGxldCBzdGFydCA9IFNwYW4uKCArICkgc3RhcnQgc3BhbiBpblxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcCAoKiBjYW5ub3Qgb3ZlcmZsb3cgKilcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjXG4gIGluXG4gICgqIGludGVybmFsIFtldmVyeV0gbmFtZWQgdG8gc2hvdyB1cCBpbiBzdGFjayB0cmFjZXMgKilcbiAgbGV0IGV2ZXJ5IHNwYW4gfnN0YXJ0IH5zdG9wID1cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3BcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIFtzdGFydF0gPiBbc3RvcF1cIiAoc3RhcnQgOiB0KSAoc3RvcCA6IHQpXVxuICAgIGVsc2UgaWYgU3Bhbi4oIDw9ICkgc3BhbiBTcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZSBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBzcGFuXCIgfl86KHNwYW4gOiBTcGFuLnQpXVxuICAgIGVsc2UgaWYgaXNfaW52YWxpZCBzcGFuXG4gICAgdGhlbiBPayBbIHN0YXJ0IF1cbiAgICBlbHNlIE9rIChldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2M6W10pXG4gIGluXG4gIGV2ZXJ5XG47O1xuXG5sZXQgc21hbGxfZGlmZiA9XG4gIGxldCBob3VyID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmhvdXIgaW5cbiAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IG9mZGF5MSA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgIGxldCBkaWZmID0gb2ZkYXkxIC0gb2ZkYXkyIGluXG4gICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICBsZXQgZDEgPSBJbnQ2My5yZW0gZGlmZiBob3VyIGluXG4gICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgbGV0IGQyID0gSW50NjMucmVtIChkMSArIGhvdXIpIGhvdXIgaW5cbiAgICBsZXQgZCA9IGlmIGQyID4gaG91ciAvIEludDYzLm9mX2ludCAyIHRoZW4gZDIgLSBob3VyIGVsc2UgZDIgaW5cbiAgICBTcGFuLm9mX2ludDYzX25zIGRcbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcInNtYWxsX2RpZmZcIiA9XG4gIGxldCB0ZXN0IHggeSA9XG4gICAgbGV0IGRpZmYgPSBzbWFsbF9kaWZmIHggeSBpblxuICAgIHByaW50ZiAhXCJzbWFsbF9kaWZmICVzICVzID0gJXNcXG5cIiAodG9fc3RyaW5nIHgpICh0b19zdHJpbmcgeSkgKFNwYW4udG9fc3RyaW5nIGRpZmYpXG4gIGluXG4gIGxldCBleGFtcGxlcyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gKHgsIHkpIC0+IG9mX3N0cmluZyB4LCBvZl9zdHJpbmcgeSlcbiAgICAgIFsgXCIxMjowMFwiLCBcIjEyOjA1XCI7IFwiMTI6NThcIiwgXCIxMzowMlwiOyBcIjAwOjUyXCIsIFwiMjM6MTlcIjsgXCIwMDowMFwiLCBcIjI0OjAwXCIgXVxuICBpblxuICBMaXN0Lml0ZXIgZXhhbXBsZXMgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICB0ZXN0IHggeTtcbiAgICB0ZXN0IHkgeCk7XG4gIFslZXhwZWN0XG4gICAge3xcbiAgICBzbWFsbF9kaWZmIDEyOjAwOjAwLjAwMDAwMDAwMCAxMjowNTowMC4wMDAwMDAwMDAgPSAtNW1cbiAgICBzbWFsbF9kaWZmIDEyOjA1OjAwLjAwMDAwMDAwMCAxMjowMDowMC4wMDAwMDAwMDAgPSA1bVxuICAgIHNtYWxsX2RpZmYgMTI6NTg6MDAuMDAwMDAwMDAwIDEzOjAyOjAwLjAwMDAwMDAwMCA9IC00bVxuICAgIHNtYWxsX2RpZmYgMTM6MDI6MDAuMDAwMDAwMDAwIDEyOjU4OjAwLjAwMDAwMDAwMCA9IDRtXG4gICAgc21hbGxfZGlmZiAwMDo1MjowMC4wMDAwMDAwMDAgMjM6MTk6MDAuMDAwMDAwMDAwID0gLTI3bVxuICAgIHNtYWxsX2RpZmYgMjM6MTk6MDAuMDAwMDAwMDAwIDAwOjUyOjAwLjAwMDAwMDAwMCA9IDI3bVxuICAgIHNtYWxsX2RpZmYgMDA6MDA6MDAuMDAwMDAwMDAwIDI0OjAwOjAwLjAwMDAwMDAwMCA9IDBzXG4gICAgc21hbGxfZGlmZiAyNDowMDowMC4wMDAwMDAwMDAgMDA6MDA6MDAuMDAwMDAwMDAwID0gMHMgfH1dXG47O1xuXG5sZXQgZ2VuX2luY2wgPSBTcGFuLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IFNwYW4uZ2VuX3VuaWZvcm1faW5jbFxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IFNwYW4ucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG5cbmluY2x1ZGUgKFNwYW4gOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZ3MgKilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBub3cgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgU3BhbiA9IFNwYW5fbnNcbm1vZHVsZSBPZmRheSA9IE9mZGF5X25zXG5cbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB0aGUgVW5peCBlcG9jaCAoMTk3MC0wMS0wMSAwMDowMDowMCBVVEMpICopXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50ID0gU3Bhbi5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgKFNwYW4gOiBRdWlja2NoZWNrLlNfcmFuZ2Ugd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IG5vdyA9IFNwYW4uc2luY2VfdW5peF9lcG9jaFxubGV0IGVxdWFsID0gU3Bhbi5lcXVhbFxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IGVwb2NoID0gU3Bhbi56ZXJvXG5sZXQgYWRkID0gU3Bhbi4oICsgKVxubGV0IHN1YiA9IFNwYW4uKCAtIClcbmxldCBkaWZmID0gU3Bhbi4oIC0gKVxubGV0IGFic19kaWZmIHQgdSA9IFNwYW4uYWJzIChkaWZmIHQgdSlcbmxldCBtYXggPSBTcGFuLm1heFxubGV0IG1pbiA9IFNwYW4ubWluXG5sZXQgbmV4dCA9IFNwYW4ubmV4dFxubGV0IHByZXYgPSBTcGFuLnByZXZcbmxldCB0b19zcGFuX3NpbmNlX2Vwb2NoIHQgPSB0XG5sZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzID0gc1xubGV0IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgOiBJbnQ2My50ID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxubGV0IG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIChTcGFuLm9mX2ludDYzX25zIGkpXG5sZXRbQGNvbGRdIG92ZXJmbG93ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX25zOiBvdmVyZmxvd1wiXVxubGV0IGlzX2VhcmxpZXIgdDEgfnRoYW46dDIgPSB0MSA8IHQyXG5sZXQgaXNfbGF0ZXIgdDEgfnRoYW46dDIgPSB0MSA+IHQyXG5cbmxldCBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPCApIHN1bSB4IGVsc2UgU3Bhbi4oID4gKSBzdW0geFxuOztcblxubGV0IHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPiApIGRpZmYgeCBlbHNlIFNwYW4uKCA8ICkgZGlmZiB4XG47O1xuXG5sZXQgYWRkX2V4biB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSB0aGVuIG92ZXJmbG93ICgpIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX2V4biB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBkaWZmXG47O1xuXG5sZXQgYWRkX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW1cbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZlxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBkaWZmXG47O1xuXG5sZXQgdG9faW50X25zX3NpbmNlX2Vwb2NoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gdCAtPiBJbnQ2My50b19pbnRfZXhuICh0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0KVxuICBlbHNlIGZ1biBfIC0+IGZhaWx3aXRoIFwiVGltZV9ucy50b19pbnRfbnNfc2luY2VfZXBvY2g6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCBvZl9pbnRfbnNfc2luY2VfZXBvY2ggaSA9IG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0ICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lID1cbiAgaWYgVGltZV9mbG9hdC4oIDwgKSB0aW1lIG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgfHwgVGltZV9mbG9hdC4oID4gKSB0aW1lIG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lX25zIGRvZXMgbm90IHN1cHBvcnQgdGhpcyB0aW1lXCJcbiAgICAgIHRpbWVcbiAgICAgIFslc2V4cF9vZjogVGltZV9mbG9hdC5TdGFibGUuV2l0aF91dGNfc2V4cC5WMi50XVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0aW1lID1cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0aW1lID1cbiAgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lO1xuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsID1cbiAgZmFpbHdpdGhzXG4gICAgfmhlcmU6WyVoZXJlXVxuICAgIFwiVGltZV9ucy5uZXh0X211bHRpcGxlIGdvdCBub25wb3NpdGl2ZSBpbnRlcnZhbFwiXG4gICAgaW50ZXJ2YWxcbiAgICBbJXNleHBfb2Y6IFNwYW4udF1cbjs7XG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsO1xuICBsZXQgYmFzZV90b19hZnRlciA9IGRpZmYgYWZ0ZXIgYmFzZSBpblxuICBpZiBTcGFuLiggPCApIGJhc2VfdG9fYWZ0ZXIgU3Bhbi56ZXJvXG4gIHRoZW4gYmFzZSAoKiBbYWZ0ZXIgPCBiYXNlXSwgY2hvb3NlIFtrID0gMF0uICopXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0ID0gYWRkIGJhc2UgKFNwYW4uc2NhbGVfaW50NjMgaW50ZXJ2YWwgKFNwYW4uZGl2IGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCByYW5kb20gP3N0YXRlICgpID0gU3Bhbi5yYW5kb20gP3N0YXRlICgpXG5cbm1vZHVsZSBVdGMgOiBzaWdcbiAgdmFsIHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBEYXRlMC50ICogU3Bhbi50XG4gIHZhbCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IERhdGUwLnQgLT4gU3Bhbi50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICAoKiBhIHJlY3JlYXRpb24gb2YgdGhlIHN5c3RlbSBjYWxsIGdtdGltZSBzcGVjaWFsaXplZCB0byB0aGUgZmllbGRzIHdlIG5lZWQgdGhhdCBhbHNvXG4gICAgIGRvZXNuJ3QgcmVseSBvbiBVbml4LiAqKVxuICBsZXQgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCAoICE8ICkgaSA9IEludDYzLm9mX2ludF9leG4gaSBpblxuICAgIGxldCAoICE+ICkgdCA9IEludDYzLnRvX2ludF9leG4gdCBpblxuICAgIGxldCBuc19zaW5jZV9lcG9jaCA9IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgaW5cbiAgICBsZXQgbnNfcGVyX2RheSA9ICE8ODZfNDAwICogITwxXzAwMF8wMDBfMDAwIGluXG4gICAgbGV0IGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggPSBuc19zaW5jZV9lcG9jaCAvIG5zX3Blcl9kYXkgaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIGlmIG5zX3NpbmNlX2Vwb2NoIDwgITwwICYmIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggKiBuc19wZXJfZGF5IDw+IG5zX3NpbmNlX2Vwb2NoXG4gICAgICB0aGVuIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggLSAhPDFcbiAgICAgIGVsc2UgYXBwcm94X2RheXNfZnJvbV9lcG9jaFxuICAgIGluXG4gICAgbGV0IG5zX3NpbmNlX3N0YXJ0X29mX2RheSA9IG5zX3NpbmNlX2Vwb2NoIC0gKG5zX3Blcl9kYXkgKiBkYXlzX2Zyb21fZXBvY2gpIGluXG4gICAgbGV0IGRhdGUgPVxuICAgICAgRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggIT5kYXlzX2Zyb21fZXBvY2ggfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBTcGFuLm9mX2ludDYzX25zIG5zX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPVxuICAgIGFzc2VydCAoXG4gICAgICBTcGFuLiggPj0gKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLnplcm9cbiAgICAgICYmIFNwYW4uKCA8ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi5kYXkpO1xuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoID0gU3Bhbi5zY2FsZV9pbnQgU3Bhbi5kYXkgZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgbGV0IHNwYW5fc2luY2VfZXBvY2ggPSBTcGFuLiggKyApIHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIG9mX3NwYW5fc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBtb2R1bGUgT2ZkYXlfYXNfc3BhbiA9IHN0cnVjdFxuICAgICAgb3BlbiBJbnQuT1xuXG4gICAgICBsZXQgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuID1cbiAgICAgICAgbGV0IHNlY29uZHMgPSBTcGFuLnRvX2ludF9zZWMgc2Vjb25kc19zcGFuIGluXG4gICAgICAgIGxldCBoID0gc2Vjb25kcyAvIDM2MDAgaW5cbiAgICAgICAgbGV0IG0gPSBzZWNvbmRzIC8gNjAgJSA2MCBpblxuICAgICAgICBsZXQgcyA9IHNlY29uZHMgJSA2MCBpblxuICAgICAgICBzcHJpbnRmIFwiJTAyZDolMDJkOiUwMmRcIiBoIG0gc1xuICAgICAgOztcblxuICAgICAgbGV0IHR3b19kaWdpdF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0cmluZyA9IDIgJiYgU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICBJbnQub2Zfc3RyaW5nIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgbGV0IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHNlY29uZHNfc3RyaW5nIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaF9zdHJpbmc7IG1fc3RyaW5nOyBzX3N0cmluZyBdIC0+XG4gICAgICAgICAgbGV0IGggPSB0d29fZGlnaXRfb2Zfc3RyaW5nIGhfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG0gPSB0d29fZGlnaXRfb2Zfc3RyaW5nIG1fc3RyaW5nIGluXG4gICAgICAgICAgbGV0IHMgPSB0d29fZGlnaXRfb2Zfc3RyaW5nIHNfc3RyaW5nIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnRfc2VjICgoKChoICogNjApICsgbSkgKiA2MCkgKyBzKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgbnNfb2ZfMTAwX21zID0gMTAwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF9tcyA9IDEwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX21zID0gMV8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX3VzID0gMTAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX3VzID0gMTBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV91cyA9IDFfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX25zID0gMTAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbnMgPSAxMFxuICAgICAgbGV0IG5zX29mXzFfbnMgPSAxXG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW4gPVxuICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHN1Yl9zZWNvbmRfc3BhbiB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgIGlmIG5zID0gMFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMWRcIiAobnMgLyBuc19vZl8xMDBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMmRcIiAobnMgLyBuc19vZl8xMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDNkXCIgKG5zIC8gbnNfb2ZfMV9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNGRcIiAobnMgLyBuc19vZl8xMDBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNWRcIiAobnMgLyBuc19vZl8xMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDZkXCIgKG5zIC8gbnNfb2ZfMV91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwN2RcIiAobnMgLyBuc19vZl8xMDBfbnMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwOGRcIiAobnMgLyBuc19vZl8xMF9ucylcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiLiUwOWRcIiBuc1xuICAgICAgOztcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgICAgdGhlbiBTcGFuLnplcm9cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGRpZ2l0cyA9IFN0cmluZy5jaG9wX3ByZWZpeF9leG4gc3RyaW5nIH5wcmVmaXg6XCIuXCIgaW5cbiAgICAgICAgICBhc3NlcnQgKFN0cmluZy5mb3JfYWxsIGRpZ2l0cyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgICBsZXQgbXVsdGlwbGllciA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIGRpZ2l0cyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gbnNfb2ZfMTAwX21zXG4gICAgICAgICAgICB8IDIgLT4gbnNfb2ZfMTBfbXNcbiAgICAgICAgICAgIHwgMyAtPiBuc19vZl8xX21zXG4gICAgICAgICAgICB8IDQgLT4gbnNfb2ZfMTAwX3VzXG4gICAgICAgICAgICB8IDUgLT4gbnNfb2ZfMTBfdXNcbiAgICAgICAgICAgIHwgNiAtPiBuc19vZl8xX3VzXG4gICAgICAgICAgICB8IDcgLT4gbnNfb2ZfMTAwX25zXG4gICAgICAgICAgICB8IDggLT4gbnNfb2ZfMTBfbnNcbiAgICAgICAgICAgIHwgOSAtPiBuc19vZl8xX25zXG4gICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgKEludC5vZl9zdHJpbmcgZGlnaXRzICogbXVsdGlwbGllcikpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyBzcGFuID1cbiAgICAgICAgYXNzZXJ0IChTcGFuLiggPj0gKSBzcGFuIFNwYW4uemVybyAmJiBTcGFuLiggPCApIHNwYW4gU3Bhbi5kYXkpO1xuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc3BhbiB8PiBTcGFuLnRvX2ludF9zZWMgfD4gU3Bhbi5vZl9pbnRfc2VjIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBTcGFuLiggLSApIHNwYW4gc2Vjb25kc19zcGFuIGluXG4gICAgICAgIHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiBeIHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgbGV0IHByZWZpeF9sZW4gPSA4IGluXG4gICAgICAgICgqIFwiSEg6TU06RERcIiAqKVxuICAgICAgICBsZXQgc3VmZml4X2xlbiA9IGxlbiAtIHByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczowIH5sZW46cHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnByZWZpeF9sZW4gfmxlbjpzdWZmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gc3ViX3NlY29uZF9vZl9zdHJpbmcgc3ViX3NlY29uZF9zdHJpbmcgaW5cbiAgICAgICAgU3Bhbi4oICsgKSBzZWNvbmRzX3NwYW4gc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIGxldCBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFV0Yy50b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXlfYXNfc3Bhbi50b19zdHJpbmcgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgXiBcIlpcIlxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgZGF0ZV9zdHJpbmcsIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgPSBTdHJpbmcubHNwbGl0Ml9leG4gc3RyaW5nIH5vbjonICcgaW5cbiAgICAgIGxldCBvZmRheV9zdHJpbmcgPSBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgfnN1ZmZpeDpcIlpcIiBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZV9zdHJpbmcgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5X2FzX3NwYW4ub2Zfc3RyaW5nIG9mZGF5X3N0cmluZyBpblxuICAgICAgVXRjLm9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgb2ZkYXlcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBpbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAoKiBzZWUgdGVzdHMgaW4gbGliL2NvcmUvdGVzdC9zcmMvdGVzdF90aW1lX25zIHRoYXQgZW5zdXJlIHN0YWJpbGl0eSBvZiB0aGlzXG4gICAgICAgICAgIHJlcHJlc2VudGF0aW9uICopXG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IEFsdGVybmF0ZV9zZXhwLlN0YWJsZVxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG5cbigqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZS5tbCBmdW5jdG9yLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldCBUaW1lX25zXG4gICB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxubW9kdWxlIFRvX2FuZF9vZl9zdHJpbmcgOiBzaWdcbiAgdmFsIG9mX2RhdGVfb2ZkYXkgOiB6b25lOlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiB0XG5cbiAgdmFsIG9mX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIERhdGUudFxuICAgIC0+IE9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IFsgYE9uY2Ugb2YgdCB8IGBUd2ljZSBvZiB0ICogdCB8IGBOZXZlciBvZiB0IF1cblxuICB2YWwgdG9fZGF0ZV9vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuXG4gIHZhbCB0b19kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICB0XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBEYXRlLnQgKiBPZmRheS50ICogWyBgT25seSB8IGBBbHNvX2F0IG9mIHQgfCBgQWxzb19za2lwcGVkIG9mIERhdGUudCAqIE9mZGF5LnQgXVxuXG4gIHZhbCB0b19kYXRlIDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnRcbiAgdmFsIHRvX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBPZmRheS50XG4gIHZhbCBjb252ZXJ0IDogZnJvbV90ejpab25lLnQgLT4gdG9fdHo6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IERhdGUudCAqIE9mZGF5LnRcbiAgdmFsIHJlc2V0X2RhdGVfY2FjaGUgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHV0Y19vZmZzZXQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IFNwYW4udFxuXG4gIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldF1cIl1cblxuICB2YWwgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCA6IHN0cmluZyAtPiB0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbdG9fc3RyaW5nX3V0Y11cIl1cbiAgdmFsIHRvX3N0cmluZ191dGMgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fZmlsZW5hbWVfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2ZpbGVuYW1lX3N0cmluZyA6IHN0cmluZyAtPiB6b25lOlpvbmUudCAtPiB0XG4gIHZhbCB0b19zdHJpbmdfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmdfd2l0aF96b25lIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2xvY2FsaXplZF9zdHJpbmcgOiB6b25lOlpvbmUudCAtPiBzdHJpbmcgLT4gdFxuXG4gIHZhbCBvZl9zdHJpbmdfZ2VuXG4gICAgOiAgZGVmYXVsdF96b25lOih1bml0IC0+IFpvbmUudClcbiAgICAtPiBmaW5kX3pvbmU6KHN0cmluZyAtPiBab25lLnQpXG4gICAgLT4gc3RyaW5nXG4gICAgLT4gdFxuXG4gIHZhbCB0b19zdHJpbmdfYWJzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3BhcnRzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuXG4gIHZhbCBvY2N1cnJlbmNlXG4gICAgOiAgWyBgRmlyc3RfYWZ0ZXJfb3JfYXQgfCBgTGFzdF9iZWZvcmVfb3JfYXQgXVxuICAgIC0+IHRcbiAgICAtPiBvZmRheTpPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2Zsb2F0MC5tbCwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgVGltZV9ucyB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2ZfaW50NjNfbnMgdFxuXG4gICAgbGV0IG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSA9XG4gICAgICBsZXQgZGF5cyA9XG4gICAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaCB8PiBJbnQ2My5vZl9pbnRcbiAgICAgIGluXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAoZGF5cyAqIFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXkpXG4gICAgICArIFNwYW4udG9faW50NjNfbnMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBzdWJfZXhuIChTcGFuLm9mX2ludDYzX25zIHJlbGF0aXZlKSBvZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IG9mX2Fic29sdXRlIGFic29sdXRlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgU3Bhbi50b19pbnQ2M19ucyAoYWRkX2V4biBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGMpXG4gICAgOztcblxuICAgIGxldCBuc19wZXJfZGF5ID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheVxuXG4gICAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICAgICgqIG5vdGUgVGltZV9ucyByZXByZXNlbnRzIGFib3V0IDE0NiB5ZWFycywgbm90IGVub3VnaCBmb3IgW0RhdGUuY3JlYXRlX2V4bl0gdG8gZXZlclxuICAgICAgICAgcmFpc2UgKilcbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gdCAvIG5zX3Blcl9kYXkgaW5cbiAgICAgICgqIHdoZW4gW3RdIGlzIG5lZ2F0aXZlIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIHRoYXQgY2FsY3VsYXRlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICAgIGlmIHQgPCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ICogbnNfcGVyX2RheVxuICAgICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIDs7XG5cbiAgICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2luX25zID0gZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9IHQgLSBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgcmVtYWluZGVyIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBJbnQ2My50b19pbnRfZXhuIGRheXNfZnJvbV9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgICgqIFRoaXMgaW50ZXJmYWNlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2ludGYuWm9uZSwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgICB0aGlzIHRvIHdvcmsuXG5cbiAgICAgICBUaGUgcHJvYmxlbSBpcyBoYXMgcmVmZXJlbmNlcyB0byBUaW1lMF9pbnRmLlMsIHdoaWNoIGlzIHRoZSBmdW5jdG9yIGlucHV0IGludGVyZmFjZVxuICAgICAgIHRoYXQgVGltZV9ucyBjdXJyZW50bHkgZG9lcyBub3Qgc2F0aXNmeS4gKilcblxuICAgIHR5cGUgdGltZSA9IHRcbiAgICB0eXBlIHQgPSBab25lLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIG1vZHVsZSBJbmRleCA9IFpvbmUuSW5kZXhcblxuICAgICgqIGNvcGllZCBmdW5jdGlvbnMgcmVleHBvcnRlZCBmcm9tIFpvbmUgKilcblxuICAgIHZhbCB1dGMgOiB0XG4gICAgdmFsIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcbiAgICB2YWwgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuXG4gICAgKCogbmV3IGZ1bmN0aW9ucyBkZWZpbmVkIGJlbG93ICopXG5cbiAgICB2YWwgaW5kZXggOiB0IC0+IHRpbWUgLT4gSW5kZXgudFxuICAgIHZhbCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IDogdCAtPiBEYXRlX2FuZF9vZmRheS50IC0+IHRpbWVcbiAgICB2YWwgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSA6IHQgLT4gdGltZSAtPiBEYXRlX2FuZF9vZmRheS50XG4gICAgdmFsIG5leHRfY2xvY2tfc2hpZnQgOiB0IC0+IHN0cmljdGx5X2FmdGVyOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICAgIHZhbCBwcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBhdF9vcl9iZWZvcmU6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdGltZSA9IHRcblxuICAgIGluY2x1ZGUgWm9uZVxuXG4gICAgbGV0IG9mX3NwYW5faW5fc2Vjb25kcyBzcGFuX2luX3NlY29uZHMgPVxuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHNwYW5faW5fc2Vjb25kc1xuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgOztcblxuICAgIGxldCBvZl90aW1lX2luX3NlY29uZHMgdGltZV9pbl9zZWNvbmRzID1cbiAgICAgIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVfaW5fc2Vjb25kc1xuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lID1cbiAgICAgIHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSA9XG4gICAgICBEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCByZWxhdGl2ZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkub2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4IHQgdGltZSA9IGluZGV4IHQgKHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lKVxuXG4gICAgbGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCAodG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID1cbiAgICAgIHsgbXV0YWJsZSB6b25lIDogWm9uZS50XG4gICAgICA7IG11dGFibGUgY2FjaGVfc3RhcnRfaW5jbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV91bnRpbF9leGNsIDogdFxuICAgICAgOyBtdXRhYmxlIGVmZmVjdGl2ZV9kYXlfc3RhcnQgOiB0XG4gICAgICA7IG11dGFibGUgZGF0ZSA6IERhdGUwLnRcbiAgICAgIH1cbiAgZW5kXG5cbiAgbGV0IGRhdGVfY2FjaGUgOiBEYXRlX2NhY2hlLnQgPVxuICAgIHsgem9uZSA9IFpvbmUudXRjXG4gICAgOyBjYWNoZV9zdGFydF9pbmNsID0gZXBvY2hcbiAgICA7IGNhY2hlX3VudGlsX2V4Y2wgPSBlcG9jaFxuICAgIDsgZWZmZWN0aXZlX2RheV9zdGFydCA9IGVwb2NoXG4gICAgOyBkYXRlID0gRGF0ZTAudW5peF9lcG9jaFxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXRfZGF0ZV9jYWNoZSAoKSA9XG4gICAgZGF0ZV9jYWNoZS56b25lIDwtIFpvbmUudXRjO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBEYXRlMC51bml4X2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIHBoeXNfZXF1YWwgem9uZSBkYXRlX2NhY2hlLnpvbmVcbiAgICAmJiB0aW1lID49IGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIHRpbWUgPCBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIHN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IGFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IG1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbCB8PiBtaW4gKFpvbmUuaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGRhdGVfY2FjaGUuem9uZSA8LSB6b25lO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGNhY2hlX3N0YXJ0X2luY2w7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gY2FjaGVfdW50aWxfZXhjbDtcbiAgICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlZmZlY3RpdmVfZGF5X3N0YXJ0O1xuICAgICAgZGF0ZV9jYWNoZS5kYXRlIDwtIGRhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRhdGVfY2FjaGUuZGF0ZVxuICA7O1xuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRpZmYgdGltZSBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBpcyBhYm91dCB0byBzaGlmdCAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGZvcndhcmQ6IG5vIGVmZmVjdCAqKVxuICAgICAgICAgIGBPbmx5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGJhY2s6IHRoaXMgZGF0ZS9vZmRheSB3aWxsIGJlIHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKGFkZCB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXyAtPiBgT25seVxuICAgIGluXG4gICAgZGF0ZSwgb2ZkYXksIGFtYmlndWl0eVxuICA7O1xuXG4gIGxldCBjb252ZXJ0IH5mcm9tX3R6IH50b190eiBkYXRlIG9mZGF5ID1cbiAgICBsZXQgc3RhcnRfdGltZSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6ZnJvbV90eiBkYXRlIG9mZGF5IGluXG4gICAgdG9fZGF0ZV9vZmRheSB+em9uZTp0b190eiBzdGFydF90aW1lXG4gIDs7XG5cbiAgbGV0IHV0Y19vZmZzZXQgdCB+em9uZSA9XG4gICAgbGV0IHV0Y19lcG9jaCA9IFpvbmUuZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB6b25lIHQgaW5cbiAgICBTcGFuLiggLSApXG4gICAgICAoRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdXRjX2Vwb2NoKVxuICAgICAgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbiAgOztcblxuICBsZXQgb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lID1cbiAgICBsZXQgdXRjX29mZnNldCA9IHV0Y19vZmZzZXQgdGltZSB+em9uZSBpblxuICAgIGxldCBpc191dGMgPSBTcGFuLiggPSApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIGluXG4gICAgaWYgaXNfdXRjXG4gICAgdGhlbiBcIlpcIlxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyAoaWYgU3Bhbi4oIDwgKSB1dGNfb2Zmc2V0IFNwYW4uemVybyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpXG4gICAgICAgIDsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWRcbiAgICAgICAgICAgIChPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uYWJzIHV0Y19vZmZzZXQpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfcGFydHMgPVxuICAgIGxldCBhdHRlbXB0IHRpbWUgfnpvbmUgPVxuICAgICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgICAgOyBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIE9mZGF5LnRvX3N0cmluZyBvZmRheTsgb2Zmc2V0X3N0cmluZyBdXG4gICAgICBdXG4gICAgaW5cbiAgICBmdW4gdGltZSB+em9uZSAtPlxuICAgICAgdHJ5IGF0dGVtcHQgdGltZSB+em9uZSB3aXRoXG4gICAgICB8IChfIDogZXhuKSAtPlxuICAgICAgICAoKiBJZiB3ZSBvdmVyZmxvdyBhcHBseWluZyB0aGUgVVRDIG9mZnNldCwgdHJ5IGFnYWluIHdpdGggVVRDIHRpbWUuICopXG4gICAgICAgIGF0dGVtcHQgdGltZSB+em9uZTpab25lLnV0Y1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBTdHJpbmcuY29uY2F0XG4gICAgICB+c2VwOlwiIFwiXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBvZmRheSBeIG9mZnNldF9zdHJpbmcgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzIHRpbWUgfnpvbmUgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgbGV0IHRvX3N0cmluZ191dGMgdCA9IHRvX3N0cmluZ19hYnMgdCB+em9uZTpab25lLnV0Y1xuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX3V0Y1xuXG4gIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0aW1lIH56b25lID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJUXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3NlY19zdHJpbmcgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmdfd2l0aF96b25lIHQgfnpvbmUgPSB0b19zZWNfc3RyaW5nIHQgfnpvbmUgXiBvZmZzZXRfc3RyaW5nIHQgfnpvbmVcblxuICBsZXQgdG9fZmlsZW5hbWVfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgXiBcIl9cIlxuICAgIF4gU3RyaW5nLnRyXG4gICAgICAgIH50YXJnZXQ6JzonXG4gICAgICAgIH5yZXBsYWNlbWVudDonLSdcbiAgICAgICAgKFN0cmluZy5kcm9wX3N1ZmZpeCAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KSAzKVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX25zX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9uc19vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5lbmRcblxuaW5jbHVkZSBUb19hbmRfb2Zfc3RyaW5nXG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgdG9fdGltZSA9IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IG9mX3RpbWUgPSBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIF8gPSBzdHJ1Y3RcbiAgb3BlbiBQcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWVcblxuICBsZXQgKCkgPVxuICAgIER1cmF0aW9uLmZvcm1hdFxuICAgIDo9IChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgZHVyYXRpb25fb2Zfc3BhbiBzID0gcyB8PiBTcGFuLnRvX2ludDYzX25zIHw+IER1cmF0aW9uLm9mX25hbm9zZWNvbmRzXG4gICAgICBsZXQgc3Bhbl9vZl9kdXJhdGlvbiBkID0gZCB8PiBEdXJhdGlvbi50b19uYW5vc2Vjb25kcyB8PiBTcGFuLm9mX2ludDYzX25zXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IHN0cmluZyB8PiBTcGFuLm9mX3N0cmluZyB8PiBkdXJhdGlvbl9vZl9zcGFuXG5cbiAgICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgZHVyYXRpb25zID1cbiAgICAgICAgbGV0IHNwYW5zID0gZHVyYXRpb25zIHw+IExpc3QubWFwIH5mOnNwYW5fb2ZfZHVyYXRpb24gaW5cbiAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgc3BhbnNcbiAgICAgICAgICB8PiBMaXN0Lm1heF9lbHQgfmNvbXBhcmU6U3Bhbi5jb21wYXJlXG4gICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAgICAgICAgfmY6U3Bhbi50b191bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgIH5kZWZhdWx0OlVuaXRfb2ZfdGltZS5OYW5vc2Vjb25kXG4gICAgICAgIGluXG4gICAgICAgIHNwYW5zIHw+IExpc3QubWFwIH5mOihTcGFuLnRvX3N0cmluZ19odW0gfnVuaXRfb2ZfdGltZSB+YWxpZ25fZGVjaW1hbDp0cnVlKVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgTWFwID0gc3RydWN0IGVuZFxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZSA9IHN0cnVjdCBlbmRcblxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBpbnRlcnJ1cHRpYmxlX3BhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfdWJvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbiIsIigqIEEgc3Vic3RyaW5nIGlzIGEgY29udGlndW91cyBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLiAgV2UgdXNlIGFcbiAgIGZ1bmN0b3IgYmVjYXVzZSB3ZSB3YW50IHN1YnN0cmluZ3Mgb2YgW3N0cmluZ10gYW5kIFtiaWdzdHJpbmddLlxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZ19pbnRmXG5cbnR5cGUgYmlnc3RyaW5nID0gQmlnc3RyaW5nLnRcblxubW9kdWxlIEJsaXQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3NyYywgJ2RzdCkgdCA9ICgnc3JjLCAnZHN0KSBCbGl0LmJsaXRvXG5cbiAgbGV0IHN0cmluZ19ieXRlcyB+c3JjID9zcmNfcG9zID9zcmNfbGVuIH5kc3QgPyhkc3RfcG9zID0gMCkgKCkgPVxuICAgIGxldCBzcmNfcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG5cbiAgICAgICAgKClcbiAgICAgICAgP3BvczpzcmNfcG9zXG4gICAgICAgID9sZW46c3JjX2xlblxuICAgICAgICB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHNyYylcbiAgICBpblxuICAgIEJ5dGVzLkZyb21fc3RyaW5nLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICBsZXQgc3RyaW5nX3N0cmluZyA9IHN0cmluZ19ieXRlc1xuICBsZXQgYnl0ZXNfYnl0ZXMgPSBCeXRlcy5ibGl0b1xuICBsZXQgc3RyaW5nX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0b1xuICBsZXQgYnl0ZXNfYmlnc3RyaW5nID0gQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG9cbiAgbGV0IGJpZ3N0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuYmxpdG9cbiAgbGV0IGJpZ3N0cmluZ19zdHJpbmcgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbiAgbGV0IGJpZ3N0cmluZ19ieXRlcyA9IEJpZ3N0cmluZy5Ub19ieXRlcy5ibGl0b1xuZW5kXG5cbigqIFdlIGNhbid0IGNhbGwgdGhlIGJhc2UgbW9kdWxlIFtCYXNlXSBiZWNhdXNlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIHdhbnRzIHRvIGFjY2Vzc1xuICAgdGhlIFtCYXNlXSBsaWJyYXJ5IGRpcmVjdGx5LCBhbmQgd2UnZCBiZSBzaGFkb3dpbmcgaXQuICopXG5tb2R1bGUgRiAoVW5kZXJseWluZyA6IEJhc2UpIDogUyB3aXRoIHR5cGUgYmFzZSA9IFVuZGVybHlpbmcudCA9IHN0cnVjdFxuICB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnRcblxuICB0eXBlIHQgPVxuICAgIHsgYmFzZSA6IFVuZGVybHlpbmcudFxuICAgIDsgcG9zIDogaW50XG4gICAgOyBsZW4gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgKCogbm90ZSB3ZSBvdmVycmlkZSB0aGUgZ2VuZXJhdGVkIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0gYmVsb3csIG9uY2Ugd2UndmUgZGVmaW5lZFxuICAgICBbY3JlYXRlXSAqKVxuXG4gICgqIHtbXG4gICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgIGFzc2VydCAoMCA8PSB0LnBvcyk7XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5sZW4pO1xuICAgICAgICAgYXNzZXJ0ICh0LnBvcyArIHQubGVuIDw9IEJhc2UubGVuZ3RoIHQuYmFzZSk7XG4gICAgICAgOzsgXX0gKilcblxuICBsZXQgYmFzZSB0ID0gdC5iYXNlXG4gIGxldCBwb3MgdCA9IHQucG9zXG4gIGxldCBsZW5ndGggdCA9IHQubGVuXG4gIGxldCBpc19lbXB0eSB0ID0gSW50LmVxdWFsIHQubGVuIDBcblxuICBsZXQgYmFzZV9vZl9zdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9zdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBiYXNlX29mX2JpZ3N0cmluZyBzID1cbiAgICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGJ1ZiA9IFVuZGVybHlpbmcuY3JlYXRlIGxlbiBpblxuICAgIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZyB+c3JjOnMgfmRzdDpidWYgKCk7XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/cG9zID9sZW4gYmFzZSA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3NcbiAgICAgICAgP2xlblxuICAgICAgICB+dG90YWxfbGVuZ3RoOihVbmRlcmx5aW5nLmxlbmd0aCBiYXNlKVxuICAgIGluXG4gICAgeyBiYXNlOyBwb3M7IGxlbiB9XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBsZXQgb3BlbiBRdWlja2NoZWNrLkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBiYXNlID0gVW5kZXJseWluZy5xdWlja2NoZWNrX2dlbmVyYXRvciBpblxuICAgIGxldCBiYXNlX2xlbiA9IFVuZGVybHlpbmcubGVuZ3RoIGJhc2UgaW5cbiAgICBsZXQlYmluZCBsZW4gPSBJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIGJhc2VfbGVuIGluXG4gICAgbGV0JWJpbmQgcG9zID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCAoYmFzZV9sZW4gLSBsZW4pIGluXG4gICAgcmV0dXJuIChjcmVhdGUgfnBvcyB+bGVuIGJhc2UpXG4gIDs7XG5cbiAgbGV0IGdldF9ub19ib3VuZHNfY2hlY2sgdCBpID0gVW5kZXJseWluZy5nZXQgKGJhc2UgdCkgKHBvcyB0ICsgaSlcblxuICBsZXQgZ2V0IHQgaSA9XG4gICAgaWYgaSA+PSAwICYmIGkgPCBsZW5ndGggdFxuICAgIHRoZW4gZ2V0X25vX2JvdW5kc19jaGVjayB0IGlcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuICA7O1xuXG4gIGxldCBzdWIgP3BvcyA/bGVuIHQgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gICAgaW5cbiAgICB7IGJhc2UgPSB0LmJhc2U7IHBvcyA9IHQucG9zICsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FyZyA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBtb2R1bGUgRWx0ID0gQ2hhclxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGdvIGFjYyBpID0gaWYgaSA+PSBsZW5ndGggdCB0aGVuIGFjYyBlbHNlIGdvIChmIGFjYyAoZ2V0IHQgaSkpIChpICsgMSkgaW5cbiAgICAgIGdvIGluaXQgMFxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiAoZ2V0IHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5pbml0IH5mIC0+XG4gICAgICAgICAgIGxldCByZWMgZ28gYWNjIGkgPVxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBpIGFjYyAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpKSAoaSArIDEpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGdvIGluaXQgMClcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgICAgICAgICBmIGkgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKVxuICAgICAgICAgICBkb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kXG5cbiAgbW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlMCAoTWFrZV9hcmcpXG5cbiAgbGV0IGZvbGQgPSBDLmZvbGRcbiAgbGV0IGl0ZXIgPSBDLml0ZXJcbiAgbGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxuICBsZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG4gICgqIFtDLnRvX2xpc3RdIGhhcyB0byBjb25zdHJ1Y3QgdGhlbiByZXZlcnNlIHRoZSBsaXN0ICopXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgKGxlbmd0aCB0KSB+ZjooZ2V0IHQpXG4gIGxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbiAgbGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxuICBsZXQgZmluZCA9IEMuZmluZFxuICBsZXQgZXhpc3RzID0gQy5leGlzdHNcbiAgbGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbiAgbGV0IG1lbSA9IEMubWVtXG4gIGxldCBjb3VudCA9IEMuY291bnRcbiAgbGV0IHN1bSA9IEMuc3VtXG4gIGxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG4gIGxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG4gIGxldCBmb2xkaSA9IEMuZm9sZGlcbiAgbGV0IGl0ZXJpID0gQy5pdGVyaVxuICBsZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxuICBsZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG4gIGxldCBjb3VudGkgPSBDLmNvdW50aVxuICBsZXQgZmluZGkgPSBDLmZpbmRpXG4gIGxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxuXG4gIGxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgICBpZiBuIDwgMFxuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gICAgZWxzZSAoXG4gICAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICAgIHwgXyAtPiBvbl9lcnJvcilcbiAgOztcblxuICBsZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3BfcHJlZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6blxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9zdWZmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczowXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbiAgbGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbiAgbGV0IGJsaXRfdG8gKHR5cGUgYSkgKGJsaXQgOiAoVW5kZXJseWluZy50LCBhKSBCbGl0LnQpIHQgfmRzdCB+ZHN0X3BvcyA9XG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfdG9fc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcbiAgbGV0IGJsaXRfYmFzZSA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0XG5cbiAgbGV0IGJsaXRfZnJvbSB+bmFtZSAodHlwZSBhKSAoYmxpdCA6IChhLCBiYXNlKSBCbGl0LnQpIHQgfnNyYyB+c3JjX3BvcyB+bGVuID1cbiAgICBpZiBsZW4gPiB0LmxlblxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIlN1YnN0cmluZy5ibGl0X2Zyb21fJXMgbGVuID4gc3Vic3RyaW5nIGxlbmd0aCA6ICVkID4gJWRcIlxuICAgICAgICBuYW1lXG4gICAgICAgIGxlblxuICAgICAgICB0LmxlblxuICAgICAgICAoKTtcbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfnNyY19sZW46bGVuIH5kc3Q6dC5iYXNlIH5kc3RfcG9zOnQucG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9zdHJpbmdcbiAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJiaWdzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmdcbiAgbGV0IG9mX2Jhc2UgYmFzZSA9IHsgYmFzZTsgcG9zID0gMDsgbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSB9XG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2Zfc3RyaW5nIHgpXG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2ZfYmlnc3RyaW5nIHgpXG5cbiAgbGV0IG1ha2UgKHR5cGUgYSkgY3JlYXRlIChibGl0IDogKGJhc2UsIGEpIEJsaXQudCkgdCA9XG4gICAgbGV0IGRzdCA9IGNyZWF0ZSB0LmxlbiBpblxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvczowICgpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KG1ha2UgQnl0ZXMuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19ieXRlcyB4KVxuICA7O1xuXG4gIGxldCB0b19iaWdzdHJpbmcgPSBtYWtlIEJpZ3N0cmluZy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuXG4gIGxldCBjb25jYXRfZ2VuIGNyZWF0ZV9kc3QgYmxpdF9kc3QgdHMgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGxlbiB0IC0+IGxlbiArIGxlbmd0aCB0KSBpblxuICAgIGxldCBkc3QgPSBjcmVhdGVfZHN0IGxlbiBpblxuICAgIGlnbm9yZVxuICAgICAgKExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gZHN0X3BvcyB0IC0+XG4gICAgICAgICBibGl0X2RzdCB0IH5kc3QgfmRzdF9wb3M7XG4gICAgICAgICBkc3RfcG9zICsgbGVuZ3RoIHQpXG4gICAgICAgOiBpbnQpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBjb25jYXQgdHMgPSBvZl9iYXNlIChjb25jYXRfZ2VuIFVuZGVybHlpbmcuY3JlYXRlIGJsaXRfYmFzZSB0cylcblxuICBsZXQgY29uY2F0X3N0cmluZyB0cyA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KGNvbmNhdF9nZW4gQnl0ZXMuY3JlYXRlIGJsaXRfdG9fc3RyaW5nIHRzKVxuICA7O1xuXG4gIGxldCBjb25jYXRfYmlnc3RyaW5nIHRzID0gY29uY2F0X2dlbiBCaWdzdHJpbmcuY3JlYXRlIGJsaXRfdG9fYmlnc3RyaW5nIHRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gTWFrZV9zdWJzdHJpbmcuU1xuXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nLkYgKHN0cnVjdFxuICAgIHR5cGUgdCA9IEJ5dGVzLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCeXRlcy5jcmVhdGVcbiAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJ5dGVzLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gQmxpdC5ieXRlc19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ2FtbC5BcmdcblxudHlwZSB0ID0ga2V5ICogc3BlYyAqIGRvY1xuXG5sZXQgc29ydF9hbmRfYWxpZ24gbHN0ID1cbiAgYWxpZ24gKEJhc2UuTGlzdC5zb3J0IGxzdCB+Y29tcGFyZTooZnVuIChhLCBfLCBfKSAoYiwgXywgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbjs7XG4iLCJ0eXBlIHQgPVxuICB8IENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIXG4gIHwgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQXG4gIHwgQ09NUF9DV09SRFxuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwX29mXVxuXG5sZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHQpXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5TXG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdHJpbmcuU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG5cbiAgICAgICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxuaW5jbHVkZSAoXG4gIFN0cmluZyA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIENhbWwuRmlsZW5hbWVcblxuICBsZXQgY2hlY2tfc3VmZml4ID0gY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX2V4dGVuc2lvbiA9IGNob3BfZXh0ZW5zaW9uXG4gIGxldCBjaG9wX3N1ZmZpeCA9IGNob3Bfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBjaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBpc19pbXBsaWNpdCA9IGlzX2ltcGxpY2l0XG4gIGxldCBpc19yZWxhdGl2ZSA9IGlzX3JlbGF0aXZlXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBwYXJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcl9zZXAgPSBkaXJfc2VwXG4gIGxldCBxdW90ZSA9IHF1b3RlXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gZ2V0X3RlbXBfZGlyX25hbWUgKClcbiAgbGV0IGRpcm5hbWUgPSBkaXJuYW1lXG4gIGxldCBiYXNlbmFtZSA9IGJhc2VuYW1lXG5lbmRcblxubGV0IGlzX2Fic29sdXRlIHAgPSBub3QgKGlzX3JlbGF0aXZlIHApXG5cbmxldCBjb25jYXQgcDEgcDIgPVxuICBpZiBTdHJpbmcuaXNfZW1wdHkgcDFcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJGaWxlbmFtZS5jb25jYXQgY2FsbGVkIHdpdGggYW4gZW1wdHkgc3RyaW5nIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAoc2Vjb25kIFxcXG4gICAgICAgYXJndW1lbnQ6ICVzKVwiXG4gICAgICBwMlxuICAgICAgKCk7XG4gIGxldCByZWMgY29sbGFwc2VfdHJhaWxpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKFwiXCIsIChcIi5cIiB8IFwiXCIpKSAtPiBcIlwiXG4gICAgfCBTb21lIChzLCAoXCIuXCIgfCBcIlwiKSkgLT4gY29sbGFwc2VfdHJhaWxpbmcgc1xuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBzXG4gIGluXG4gIGxldCByZWMgY29sbGFwc2VfbGVhZGluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonLycgd2l0aFxuICAgIHwgU29tZSAoKFwiLlwiIHwgXCJcIiksIHMpIC0+IGNvbGxhcHNlX2xlYWRpbmcgc1xuICAgIHwgU29tZSBfIHwgTm9uZSAtPiBzXG4gIGluXG4gIGNvbGxhcHNlX3RyYWlsaW5nIHAxIF4gXCIvXCIgXiBjb2xsYXBzZV9sZWFkaW5nIHAyXG47O1xuXG5sZXQgdG9fYWJzb2x1dGVfZXhuIHAgfnJlbGF0aXZlX3RvID1cbiAgaWYgaXNfcmVsYXRpdmUgcmVsYXRpdmVfdG9cbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJGaWxlbmFtZS50b19hYnNvbHV0ZV9leG4gY2FsbGVkIHdpdGggYSBbcmVsYXRpdmVfdG9dIHRoYXQgaXMgYSByZWxhdGl2ZSBwYXRoOiAlc1wiXG4gICAgICByZWxhdGl2ZV90b1xuICAgICAgKClcbiAgZWxzZSBpZiBpc19hYnNvbHV0ZSBwXG4gIHRoZW4gcFxuICBlbHNlIGNvbmNhdCByZWxhdGl2ZV90byBwXG47O1xuXG5sZXQgc3BsaXQgcyA9IGRpcm5hbWUgcywgYmFzZW5hbWUgc1xuXG4oKiBbbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplXSBjb21lcyBmcm9tIGdldGNvbmYgX1BPU0lYX05BTUVfTUFYIC8gKilcbmxldCBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUgPSAyNTVcblxubGV0IGlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCBzID1cbiAgbGV0IG1vZHVsZSBTID0gU3RyaW5nIGluXG4gIHMgPD4gXCIuXCJcbiAgJiYgcyA8PiBcIi4uXCJcbiAgJiYgSW50LigwIDwgUy5sZW5ndGggcylcbiAgJiYgSW50LihTLmxlbmd0aCBzIDw9IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSlcbiAgJiYgKG5vdCAoUy5jb250YWlucyBzICcvJykpXG4gICYmIG5vdCAoUy5jb250YWlucyBzICdcXDAwMCcpXG47O1xuXG5sZXQgcm9vdCA9IFwiL1wiXG5cbmxldCBzcGxpdF9leHRlbnNpb24gZm4gPVxuICBsZXQgZGlyLCBmbiA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicvJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIGZuXG4gICAgfCBTb21lIChwYXRoLCBmbikgLT4gU29tZSBwYXRoLCBmblxuICBpblxuICBsZXQgZm4sIGV4dCA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicuJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IGZuLCBOb25lXG4gICAgfCBTb21lIChiYXNlX2ZuLCBleHQpIC0+IGJhc2VfZm4sIFNvbWUgZXh0XG4gIGluXG4gIGxldCBmbiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IE5vbmUgLT4gZm5cbiAgICB8IFNvbWUgZGlyIC0+IGRpciBeIFwiL1wiIF4gZm5cbiAgaW5cbiAgZm4sIGV4dFxuOztcblxubGV0IHBhcnRzIGZpbGVuYW1lID1cbiAgbGV0IHJlYyBsb29wIGFjYyBmaWxlbmFtZSA9XG4gICAgbWF0Y2ggc3BsaXQgZmlsZW5hbWUgd2l0aFxuICAgIHwgKFwiLlwiIGFzIGJhc2UpLCBcIi5cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgKFwiL1wiIGFzIGJhc2UpLCBcIi9cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgcmVzdCwgZGlyIC0+IGxvb3AgKGRpciA6OiBhY2MpIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBmaWxlbmFtZVxuOztcblxubGV0IG9mX3BhcnRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIkZpbGVuYW1lLm9mX3BhcnRzOiBlbXB0eSBwYXJ0cyBsaXN0XCJcbiAgfCByb290IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6cm9vdCB+ZjpDYW1sLkZpbGVuYW1lLmNvbmNhdFxuOztcblxubGV0IHJlYyBza2lwX2NvbW1vbl9wcmVmaXggbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiB3aGVuIFN0cmluZy5lcXVhbCBoMSBoMiAtPiBza2lwX2NvbW1vbl9wcmVmaXggdDEgdDJcbiAgfCBfIC0+IGwxLCBsMlxuOztcblxubGV0IG9mX2Fic29sdXRlX2V4biBhIH5yZWxhdGl2ZV90bzpiID1cbiAgaWYgaXNfcmVsYXRpdmUgYVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmlsZW5hbWUub2ZfYWJzb2x1dGVfZXhuOiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGhcIlxuICAgICAgICAgIH5maXJzdF9hcmc6KGEgOiBzdHJpbmcpXTtcbiAgaWYgaXNfcmVsYXRpdmUgYlxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmlsZW5hbWUub2ZfYWJzb2x1dGVfZXhuOiBbfnJlbGF0aXZlX3RvXSBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGhcIlxuICAgICAgICAgIH5yZWxhdGl2ZV90bzooYiA6IHN0cmluZyldO1xuICBsZXQgYV9wYXJ0cyA9IHBhcnRzIGEgaW5cbiAgbGV0IGJfcGFydHMgPSBwYXJ0cyBiIGluXG4gIGxldCBhX3N1ZmZpeCwgYl9zdWZmaXggPSBza2lwX2NvbW1vbl9wcmVmaXggYV9wYXJ0cyBiX3BhcnRzIGluXG4gIGxldCBnb191cCA9IExpc3QubWFwIH5mOihmdW4gXyAtPiBwYXJlbnRfZGlyX25hbWUpIGJfc3VmZml4IGluXG4gIG1hdGNoIGdvX3VwIEAgYV9zdWZmaXggd2l0aFxuICB8IFtdIC0+IGN1cnJlbnRfZGlyX25hbWVcbiAgfCByZWxwYXRoIC0+IG9mX3BhcnRzIHJlbHBhdGhcbjs7XG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IGNyZWF0ZV9hcmdfdHlwZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgb3Blbl90ZW1wX2ZpbGVfZmQgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCByZWFscGF0aCA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZGlyID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgdGVtcF9maWxlID0gYFVzZV9GaWxlbmFtZV91bml4XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuICBvcGVuISBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBhMTdmZDM0ZWMyMTNlNTA4ZGI0NTBmNjQ2OWY3ZmU5OSB8fV1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVjIGludmFyaWFudCB0ID1cbiAgICAgICAgICBCYXNlLkludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IFplcm8gLT4gKClcbiAgICAgICAgICAgIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiTWFueSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYW55IHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcIk1heWJlIFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1heWJlIHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgQ29uY2F0IFtdIHwgQ29uY2F0IFsgXyBdIC0+IGZhaWx3aXRoIFwiRmxhdHRlbiB6ZXJvIGFuZCBvbmUtZWxlbWVudCBDb25jYXRcIlxuICAgICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5MaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50XG4gICAgICAgICAgICB8IEFkX2hvYyBfIC0+ICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHQgPSBbJW9mX3NleHA6IHRdIHNleHAgaW5cbiAgICAgICAgICBpbnZhcmlhbnQgdDtcbiAgICAgICAgICB0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyB1c2FnZSA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBaZXJvIC0+IFwiXCJcbiAgICAgICAgICB8IE9uZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWFueSAoT25lIF8gYXMgdCkgLT4gQmFzZS5QcmludGYuc3ByaW50ZiBcIlslcyAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYW55IHQgLT4gQmFzZS5QcmludGYuc3ByaW50ZiBcIlsoJXMpIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYXliZSB0IC0+IEJhc2UuUHJpbnRmLnNwcmludGYgXCJbJXNdXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKEJhc2UuTGlzdC5tYXAgdHMgfmY6dXNhZ2UpXG4gICAgICAgICAgfCBBZF9ob2MgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwODFkOWVjMTY3OTAzZjhmOGM0OWNiZjhlM2ZiM2E2NiB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgRmxhZ19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgYmQ4ZDZmYjdhNjYyZDJjMGI1ZTBkMjAyNmM2ZDJkMjEgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDhmYWFjMWU4ZDlkZWIwYmFhYTU2YWM4ZWJmODViNDk4IHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHVzYWdlIDogc3RyaW5nXG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgdXNhZ2U7IGZsYWdzIH0gPVxuICAgICAgICB7IFYyLnN1bW1hcnk7IHJlYWRtZTsgYW5vbnMgPSBVc2FnZSB1c2FnZTsgZmxhZ3MgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB7IFYyLnN1bW1hcnk7IHJlYWRtZTsgYW5vbnM7IGZsYWdzIH0gPVxuICAgICAgICB7IHN1bW1hcnlcbiAgICAgICAgOyByZWFkbWVcbiAgICAgICAgOyB1c2FnZSA9XG4gICAgICAgICAgICAobWF0Y2ggYW5vbnMgd2l0aFxuICAgICAgICAgICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgICAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBBbm9ucy5HcmFtbWFyLlYxLnVzYWdlIGdyYW1tYXIpXG4gICAgICAgIDsgZmxhZ3NcbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG4gIGVuZFxuXG4gIG1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gICAgdHlwZSBhID0gRHVtbXlfdHlwZV9iZWNhdXNlX3dlX2Nhbm5vdF9kaWdlc3RfdHlwZV9jb25zdHJ1Y3RvcnNfb25seV9jb25jcmV0ZV90eXBlc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LlN0YWJsZS5WMS50IExhenkuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICAgeyB0IHdpdGggc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZikgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC5TdGFibGUuVjEudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IGEgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDJjYzNlZWI1OGQxMmQ4ZmU0NDAwMDA5ZTU5MmQ3ODI3IHx9XVxuICAgICAgOztcblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHQuc3ViY29tbWFuZHMgfmYgfVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZnJvbV92YWwgc3ViY29tbWFuZHMgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50KSA6ICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZvcmNlIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBsZXQgYWJzX3BhdGggfmRpciBwYXRoID1cbiAgICAgIGlmIEZpbGVuYW1lLmlzX2Fic29sdXRlIHBhdGggdGhlbiBwYXRoIGVsc2UgRmlsZW5hbWUuY29uY2F0IGRpciBwYXRoXG4gICAgOztcblxuICAgIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgYzBjODI1NmU5MjM4Y2RkOGYyZWMxZjg3ODVlMDJhZTAgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5pZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjNcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQgdG9fdjMgdCA6IFYzLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgPSBbXVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjMgKHQgOiBWMy50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uY29tcG9zZSBWMy50b19sYXRlc3QgdG9fdjNcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5jb21wb3NlIG9mX3YzIFYzLm9mX2xhdGVzdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgKCogW3BhdGhfdG9fZXhlXSBtdXN0IGJlIGFic29sdXRlLiAqKVxuICAgICAgICAgIHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0IHRvX3YyIHQgOiBWMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IFwiL1wiXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MiAodCA6IFYyLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBGbi5jb21wb3NlIFYyLnRvX2xhdGVzdCB0b192MlxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEZuLmNvbXBvc2Ugb2ZfdjIgVjIub2ZfbGF0ZXN0XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGdWxseV9mb3JjZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnQgKiB0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA5ODExNTRlZjM5MTk0MzdjNmM4MjI2MTk4ODI4NDFkNCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudFxuICAgICAgICB8IExhenkgb2YgdCBMYXp5LlN0YWJsZS5WMS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBkM2MzNzU1NDhmMWE0M2M1OGM3MWU4MTRjMDRiYTM2YSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBGbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDU5OGQ0YjQxZWY0MzViYzY5YTQ4ODZiZGJhMGY4Njg5IHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyB0b19sYXRlc3QgOiB0IC0+IE1vZGVsLnQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgYlxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjIub2ZfbGF0ZXN0IGUpXG4gICAgICAgIHwgTGF6eSB0aHVuayAtPiBvZl9sYXRlc3QgKEJhc2UuTGF6eS5mb3JjZSB0aHVuaylcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLm1hcCAoR3JvdXBfaW5mby5WMS5vZl9sYXRlc3QgZykgfmY6b2ZfbGF0ZXN0KVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMS50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYxLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA3MGQyMGI1NDMyZmZhYjc3YTM4NWIwMmIwNDAzMWQyZSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLnRvX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLm9mX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEub2ZfbGF0ZXN0IGUpXG4gICAgICAgIHwgTGF6eSB0aHVuayAtPiBvZl9sYXRlc3QgKEJhc2UuTGF6eS5mb3JjZSB0aHVuaylcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLm1hcCAoR3JvdXBfaW5mby5WMS5vZl9sYXRlc3QgZykgfmY6b2ZfbGF0ZXN0KVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWZXJzaW9uZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVjEgb2YgVjEudFxuICAgICAgICB8IFYyIG9mIFYyLnRcbiAgICAgICAgfCBWMyBvZiBWMy50ICgqIGF2YWlsYWJsZSBhdCBsZWFzdCBzaW5jZSAyMDIwLTA0ICopXG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHAsIHZhcmlhbnRzXVxuXG4gICAgICAoKiBJdCdzIG9rYXkgdG8gY2hhbmdlIHRoaXMgb25lIGluIHBsYWNlLCBhcyBsb25nIGFzIHdlIHdhaXQgbG9uZyBlbm91Z2ggYmVmb3JlXG4gICAgICAgICBkcm9wcGluZyBzdXBwb3J0IGZvciBvbGQgdmVyc2lvbnMuICopXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzk2ZmJmMDA2ZGViMjUxNTkxNzE2MzdjMmE1MTBiZjQgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBWMSB0IC0+IFYxLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjIgdCAtPiBWMi50b19sYXRlc3QgdFxuICAgICAgICB8IFYzIHQgLT4gVjMudG9fbGF0ZXN0IHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgfnZlcnNpb25fdG9fdXNlIGxhdGVzdCA9XG4gICAgICAgIG1hdGNoIHZlcnNpb25fdG9fdXNlIHdpdGhcbiAgICAgICAgfCAxIC0+IFYxIChWMS5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDIgLT4gVjIgKFYyLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMyAtPiBWMyAoVjMub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCBvdGhlciAtPlxuICAgICAgICAgIFN0ZF9pbnRlcm5hbC5mYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwidW5zdXBwb3J0ZWQgdmVyc2lvbl90b191c2VcIlxuICAgICAgICAgICAgb3RoZXJcbiAgICAgICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudXNhZ2VcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLkFub25zLk1vZGVsLnQgPVxuICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIE51bV9vY2N1cnJlbmNlcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYXRfbGVhc3Rfb25jZSA6IGJvb2xcbiAgICA7IGF0X21vc3Rfb25jZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBtYXliZV9taXNzaW5nX3ByZWZpeCA9IFwiW1wiXG4gIGxldCBtYXliZV9taXNzaW5nX3N1ZmZpeCA9IFwiXVwiXG4gIGxldCBtYXliZV9tb3JlX3N1ZmZpeCA9IFwiIC4uLlwiXG5cbiAgbGV0IHRvX2hlbHBfc3RyaW5nIHQgfmZsYWdfbmFtZSA9XG4gICAgbGV0IHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0gPSB0IGluXG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIGlmIGF0X2xlYXN0X29uY2VcbiAgICAgIHRoZW4gZmxhZ19uYW1lXG4gICAgICBlbHNlIFN0cmluZy5jb25jYXQgWyBtYXliZV9taXNzaW5nX3ByZWZpeDsgZmxhZ19uYW1lOyBtYXliZV9taXNzaW5nX3N1ZmZpeCBdXG4gICAgaW5cbiAgICBpZiBhdF9tb3N0X29uY2UgdGhlbiBkZXNjcmlwdGlvbiBlbHNlIFN0cmluZy5jb25jYXQgWyBkZXNjcmlwdGlvbjsgbWF5YmVfbW9yZV9zdWZmaXggXVxuICA7O1xuXG4gIGxldCBvZl9oZWxwX3N0cmluZyBuYW1lID1cbiAgICBsZXQgYXRfbW9zdF9vbmNlLCBuYW1lID1cbiAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBuYW1lIH5zdWZmaXg6bWF5YmVfbW9yZV9zdWZmaXggd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIG5hbWVcbiAgICAgIHwgU29tZSBuYW1lIC0+IGZhbHNlLCBuYW1lXG4gICAgaW5cbiAgICBsZXQgYXRfbGVhc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaFxuICAgICAgICBTdHJpbmcuY2hvcF9wcmVmaXggbmFtZSB+cHJlZml4Om1heWJlX21pc3NpbmdfcHJlZml4XG4gICAgICAgIHw+IE9wdGlvbi5iaW5kIH5mOihTdHJpbmcuY2hvcF9zdWZmaXggfnN1ZmZpeDptYXliZV9taXNzaW5nX3N1ZmZpeClcbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgfSwgbmFtZVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcInRvX2hlbHBfc3RyaW5nXCIgPVxuICAgIGxldCBmbGFnX25hbWUgPSBcIm5hbWVcIiBpblxuICAgIExpc3QuaXRlciBbJWFsbDogdF0gfmY6KGZ1biB0IC0+XG4gICAgICBsZXQgcyA9IHRvX2hlbHBfc3RyaW5nIHQgfmZsYWdfbmFtZSBpblxuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgXCJcIiB+XzoodCA6IHQpIHNdO1xuICAgICAgbGV0IHQnLCBmbGFnX25hbWUnID0gb2ZfaGVscF9zdHJpbmcgcyBpblxuICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHRdIHQgdCcpO1xuICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHN0cmluZ10gZmxhZ19uYW1lIGZsYWdfbmFtZScpKTtcbiAgICBbJWV4cGVjdFxuICAgICAge3xcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSBmYWxzZSkgKGF0X21vc3Rfb25jZSBmYWxzZSkpIFwiW25hbWVdIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIHRydWUpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIm5hbWUgLi4uXCIpXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgdHJ1ZSkpIFtuYW1lXSlcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBuYW1lKSB8fV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZ19pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5GbGFnX2luZm8uTW9kZWwudCA9XG4gICAgeyBuYW1lIDogc3RyaW5nXG4gICAgOyBkb2MgOiBzdHJpbmdcbiAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IHBhcnNlX25hbWUgdCA9XG4gICAgbGV0IG51bV9vY2N1cnJlbmNlcywgZmxhZ19uYW1lID0gTnVtX29jY3VycmVuY2VzLm9mX2hlbHBfc3RyaW5nIHQubmFtZSBpblxuICAgIG1hdGNoIFN0cmluZy5zcGxpdCBmbGFnX25hbWUgfm9uOicgJyB3aXRoXG4gICAgfCBbIGZsYWdfbmFtZSBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIGZhbHNlLCBmbGFnX25hbWUpXG4gICAgfCBbIGZsYWdfbmFtZTsgX2FyZ19kb2MgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCB0cnVlLCBmbGFnX25hbWUpXG4gICAgfCBfIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiVW5hYmxlIHRvIHBhcnNlXCIgZmxhZ19uYW1lXVxuICA7O1xuXG4gICgqIFVzZXJzIGFyZSBsaWtlbHkgdG8gY2FsbCBhbGwgdGhyZWUgb2YgdGhlc2UgZnVuY3Rpb25zLCBpbiB3aGljaCBjYXNlIHdlIHdpbGwgcmUtcGFyc2VcbiAgICAgdGhlIFtuYW1lXSBzZXZlcmFsIHRpbWVzLiBXZSBkb24ndCBleHBlY3QgdXNlcnMgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIGNhcmUgYWJvdXQgdGhlXG4gICAgIGluZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZsYWdfbmFtZSB0ID0gcGFyc2VfbmFtZSB0IHw+IE9yX2Vycm9yLm1hcCB+Zjp0cmQzXG4gIGxldCBudW1fb2NjdXJyZW5jZXMgdCA9IHBhcnNlX25hbWUgdCB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0M1xuICBsZXQgcmVxdWlyZXNfYXJnIHQgPSBwYXJzZV9uYW1lIHQgfD4gT3JfZXJyb3IubWFwIH5mOnNuZDNcblxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgXywgXCJbLWhlbHBdXCIgLT4gLTFcbiAgICB8IFwiWy1oZWxwXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy12ZXJzaW9uXVwiIC0+IC0xXG4gICAgfCBcIlstdmVyc2lvbl1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstYnVpbGQtaW5mb11cIiAtPiAtMVxuICAgIHwgXCJbLWJ1aWxkLWluZm9dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJoZWxwXCIgLT4gLTFcbiAgICB8IFwiaGVscFwiLCBfIC0+IDFcbiAgICB8IF8sIFwidmVyc2lvblwiIC0+IC0xXG4gICAgfCBcInZlcnNpb25cIiwgXyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZ19oZWxwX2Rpc3BsYXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRmxhZ19pbmZvLnQgbGlzdFxuXG4gIGxldCBzb3J0IHQgPVxuICAgIExpc3Quc3RhYmxlX3NvcnQgdCB+Y29tcGFyZTooZnVuIGEgYiAtPlxuICAgICAgRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmUgYS5GbGFnX2luZm8ubmFtZSBiLkZsYWdfaW5mby5uYW1lKVxuICA7O1xuXG4gIGxldCB3b3JkX3dyYXBfYW5kX3N0cmlwIHRleHQgd2lkdGggPVxuICAgIGxldCBjaHVua3MgPSBTdHJpbmcuc3BsaXQgdGV4dCB+b246J1xcbicgaW5cbiAgICBMaXN0LmNvbmNhdF9tYXAgY2h1bmtzIH5mOihmdW4gdGV4dCAtPlxuICAgICAgbGV0IHdvcmRzID1cbiAgICAgICAgU3RyaW5nLnNwbGl0IHRleHQgfm9uOicgJ1xuICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIHdvcmQgLT4gbm90IChTdHJpbmcuaXNfZW1wdHkgd29yZCkpXG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgTGlzdC5mb2xkIHdvcmRzIH5pbml0Ok5vbmUgfmY6KGZ1biBhY2Mgd29yZCAtPlxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChtYXRjaCBhY2Mgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBbXSwgd29yZFxuICAgICAgICAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+XG4gICAgICAgICAgICAgICAoKiBlZmZpY2llbmN5IGlzIG5vdCBhIGNvbmNlcm4gZm9yIHRoZSBzdHJpbmcgbGVuZ3RocyB3ZSBleHBlY3QgKilcbiAgICAgICAgICAgICAgIGxldCBsaW5lX2FuZF93b3JkID0gbGluZSBeIFwiIFwiIF4gd29yZCBpblxuICAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBsaW5lX2FuZF93b3JkIDw9IHdpZHRoXG4gICAgICAgICAgICAgICB0aGVuIGxpbmVzLCBsaW5lX2FuZF93b3JkXG4gICAgICAgICAgICAgICBlbHNlIGxpbmUgOjogbGluZXMsIHdvcmQpKVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPiBMaXN0LnJldiAobGluZSA6OiBsaW5lcykpXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BsYXkgOiBzaWdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG51bV9jb2xzID0gODBcbiAgICBsZXQgc3BhY2VzX3N0cmluZyB3aWR0aCA9IFN0cmluZy5tYWtlIHdpZHRoICcgJ1xuXG4gICAgbGV0IHBhZF9zcGFjZXNfdG9fc3VmZml4IHggfndpZHRoID1cbiAgICAgIGxldCBzbGFjayA9IHdpZHRoIC0gU3RyaW5nLmxlbmd0aCB4IGluXG4gICAgICB4IF4gc3BhY2VzX3N0cmluZyBzbGFja1xuICAgIDs7XG5cbiAgICBsZXQgaW5kZW50YXRpb24gPSBcIiAgXCJcbiAgICBsZXQgaW5kZW50X2FuZF9uZXdsaW5lIHggPSBMaXN0LmNvbmNhdCBbIFsgaW5kZW50YXRpb24gXTsgeDsgWyBcIlxcblwiIF0gXVxuICAgIGxldCBzcGFjaW5nX2RvdCA9IFwiLiBcIlxuXG4gICAgbGV0IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgPVxuICAgICAgMjdcbiAgICA7O1xuXG4gICAgbGV0IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3dpZHRoID0gZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW5cbiAgICBsZXQgbGhzX3BhZF93aWR0aCA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc19wYWQgPSBzcGFjZXNfc3RyaW5nIGxoc19wYWRfd2lkdGhcblxuICAgIGxldCBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSA9XG4gICAgICBMaXN0Lm1hcCB+ZjooZnVuIHYgLT4gaW5kZW50X2FuZF9uZXdsaW5lIFsgbGhzX3BhZDsgdiBdKVxuICAgIDs7XG5cbiAgICBsZXQgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIGRvY3VtZW50YXRpb24gPVxuICAgICAgbGV0IGZsYWdfb25faXRzX293bl9saW5lID1cbiAgICAgICAgbGV0IGZsYWdfd2lkdGggPVxuICAgICAgICAgIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24gKyBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZmxhZ193aWR0aCA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBzcGFjaW5nX2RvdFxuICAgICAgICB0aGVuIGluZGVudF9hbmRfbmV3bGluZSBbIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBsZXQgd3JhcHBlZF9kb2N1bWVudGF0aW9uID1cbiAgICAgICAgd29yZF93cmFwX2FuZF9zdHJpcFxuICAgICAgICAgIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAobnVtX2NvbHMgLSBsaHNfd2lkdGggLSBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHdyYXBwZWRfZG9jdW1lbnRhdGlvbiB3aXRoXG4gICAgICB8IFtdIC0+IFsgZmxhZ19vbl9pdHNfb3duX2xpbmUgXVxuICAgICAgfCBkb2Nfd3JhcHBlZF9maXJzdF9saW5lIDo6IGRvY193cmFwcGVkX3Jlc3RfbGluZXMgLT5cbiAgICAgICAgbGV0IHdyYXBwZWRfZG9jX2xpbmVzID0gbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgZG9jX3dyYXBwZWRfcmVzdF9saW5lcyBpblxuICAgICAgICBsZXQgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCB4ID1cbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgeFxuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgOyBkb2Nfd3JhcHBlZF9maXJzdF9saW5lXG4gICAgICAgICAgICBdXG4gICAgICAgIGluXG4gICAgICAgIGlmIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmbGFnX29uX2l0c19vd25fbGluZVxuICAgICAgICAgIDo6IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggXCJcIlxuICAgICAgICAgIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIExpc3QuY29uY2F0X21hcCB0IH5mOihmdW4gdCAtPlxuICAgICAgICBsZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA9XG4gICAgICAgICAgbGV0IGZsYWcgPSB0LkZsYWdfaW5mby5uYW1lIGluXG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoZmxhZyA6OiB0LmFsaWFzZXMpXG4gICAgICAgIGluXG4gICAgICAgIHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyB0LmRvYyB8PiBMaXN0LmNvbmNhdClcbiAgICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBEaXNwbGF5LnRvX3N0cmluZyB0XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTdWJjb21tYW5kXG4gICAgfCBGbGFnXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWJjb21tYW5kIC0+IFwic3ViY29tbWFuZFwiXG4gICAgfCBGbGFnIC0+IFwiZmxhZ1wiXG4gIDs7XG5lbmRcblxubGV0IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGlzX2Rhc2ggPSBDaGFyLmVxdWFsICctJyBpblxuICBsZXQgYWxpc3QgPVxuICAgICgqIG5vIHBhcnRpYWwgbWF0Y2hlcyB1bmxlc3Mgc29tZSBub24tZGFzaCBjaGFyIGlzIHByZXNlbnQgKilcbiAgICBpZiBTdHJpbmcuZm9yX2FsbCBwcmVmaXggfmY6aXNfZGFzaFxuICAgIHRoZW4gTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCAoZGF0YSwgXykpIC0+IGtleSwgKGRhdGEsIGBGdWxsX21hdGNoX3JlcXVpcmVkKSlcbiAgICBlbHNlIGFsaXN0XG4gIGluXG4gIG1hdGNoXG4gICAgTGlzdC5maWx0ZXIgYWxpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICB8IGtleSwgKF8sIGBGdWxsX21hdGNoX3JlcXVpcmVkKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeFxuICAgICAgfCBrZXksIChfLCBgUHJlZml4KSAtPiBTdHJpbmcuaXNfcHJlZml4IGtleSB+cHJlZml4KVxuICB3aXRoXG4gIHwgWyAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSBdIC0+IE9rIChrZXksIGRhdGEpXG4gIHwgW10gLT4gRXJyb3IgKHNwcmludGYgIVwidW5rbm93biAle0tleV90eXBlfSAlc1wiIGtleV90eXBlIHByZWZpeClcbiAgfCBtYXRjaGVzIC0+XG4gICAgKG1hdGNoIExpc3QuZmluZCBtYXRjaGVzIH5mOihmdW4gKGtleSwgXykgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXgpIHdpdGhcbiAgICAgfCBTb21lIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIC0+IE9rIChrZXksIGRhdGEpXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGxldCBtYXRjaGluZ19rZXlzID0gTGlzdC5tYXAgfmY6ZnN0IG1hdGNoZXMgaW5cbiAgICAgICBFcnJvclxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICFcIiV7S2V5X3R5cGV9ICVzIGlzIGFuIGFtYmlndW91cyBwcmVmaXg6ICVzXCJcbiAgICAgICAgICAgIGtleV90eXBlXG4gICAgICAgICAgICBwcmVmaXhcbiAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIG1hdGNoaW5nX2tleXMpKSlcbjs7XG5cbm1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkJhc2VfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IGFub25zIDogQW5vbnMudFxuICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9mbGFnIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IGZhbHNlIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiRmxhZ3MgbXVzdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF1cbiAgICB8IHRydWUgLT5cbiAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCB0LmZsYWdzIH5mOihmdW4gKGZsYWdfaW5mbyA6IEZsYWdfaW5mby50KSAtPlxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGZsYWdfbmFtZSA9IEZsYWdfaW5mby5mbGFnX25hbWUgZmxhZ19pbmZvIGluXG4gICAgICAgICAgT2tcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoZmxhZ19uYW1lIDo6IGZsYWdfaW5mby5hbGlhc2VzKSB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgICAgICAga2V5LCAoZmxhZ19pbmZvLCBgUHJlZml4KSkpKVxuICAgICAgICB8PiBPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGxvb2t1cF9leHBhbmQgKExpc3QuY29uY2F0IGNob2ljZXMpIHByZWZpeCBGbGFnXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBnZXRfdXNhZ2UgdCA9XG4gICAgbWF0Y2ggdC5hbm9ucyB3aXRoXG4gICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLlYxLnVzYWdlIGdyYW1tYXJcbiAgOztcbmVuZFxuXG5tb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LnQgTGF6eS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9zdWJjb21tYW5kIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IHRydWUgLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJTdWJjb21tYW5kcyBtdXN0IG5vdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF1cbiAgICB8IGZhbHNlIC0+XG4gICAgICBsZXQgY2hvaWNlcyA9XG4gICAgICAgIExpc3QubWFwIChmb3JjZSB0LnN1YmNvbW1hbmRzKSB+ZjooZnVuIChrZXksIGEpIC0+IGtleSwgKGEsIGBQcmVmaXgpKVxuICAgICAgaW5cbiAgICAgIGxvb2t1cF9leHBhbmQgY2hvaWNlcyBwcmVmaXggU3ViY29tbWFuZFxuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgbWFwID0gU3RhYmxlLkdyb3VwX2luZm8uTW9kZWwubWFwXG5lbmRcblxubW9kdWxlIEV4ZWNfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRXhlY19pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGdWxseV9mb3JjZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZ1bGx5X2ZvcmNlZC5Nb2RlbC50ID1cbiAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udCAqIHRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBleHBhbmRlZF9zdWJjb21tYW5kcyB0ID1cbiAgICBsZXQgcmVjIGV4cGFuZCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4ZWMgKF8sIHQpIC0+IGV4cGFuZCB0XG4gICAgICB8IEJhc2ljIF8gLT4gWyBbXSBdXG4gICAgICB8IEdyb3VwIHsgc3ViY29tbWFuZHM7IF8gfSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKExhenkuZm9yY2Ugc3ViY29tbWFuZHMpIH5mOihmdW4gKG5hbWUsIHQpIC0+XG4gICAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biBwYXRoIC0+IG5hbWUgOjogcGF0aCkgKGV4cGFuZCB0KSlcbiAgICBpblxuICAgICgqIFJldmVyc2luZyBzbyB0aGF0IHRoZSBjb21tYW5kcyBzaG93IHVwIGluIHRoZSBzYW1lIG9yZGVyIGFzIGhlbHAgaXMgb3V0cHV0ICopXG4gICAgTGlzdC5yZXYgKGV4cGFuZCB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuU2V4cGFibGUuTW9kZWwudCA9XG4gICAgfCBCYXNlIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udFxuICAgIHwgTGF6eSBvZiB0IExhenkudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBleHRyYWN0aW9uX3ZhciA9IENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQXG5cbiAgbW9kdWxlIFZlcnNpb25lZCA9IFN0YWJsZS5TZXhwYWJsZS5WZXJzaW9uZWRcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICBsZXQgZiBpIHN1cHBvcnRlZCBfID0gU2V0LmFkZCBzdXBwb3J0ZWQgaSBpblxuICAgIFZlcnNpb25lZC5WYXJpYW50cy5mb2xkIH5pbml0OihTZXQuZW1wdHkgKG1vZHVsZSBJbnQpKSB+djE6KGYgMSkgfnYyOihmIDIpIH52MzooZiAzKVxuICA7O1xuXG4gIGxldCBvZl92ZXJzaW9uZWQgPSBWZXJzaW9uZWQudG9fbGF0ZXN0XG4gIGxldCB0b192ZXJzaW9uZWQgdCB+dmVyc2lvbl90b191c2UgPSBWZXJzaW9uZWQub2ZfbGF0ZXN0IHQgfnZlcnNpb25fdG9fdXNlXG5lbmRcblxudHlwZSB0ID1cbiAgfCBCYXNpYyBvZiBCYXNlX2luZm8udFxuICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gIHwgRXhlYyBvZiBFeGVjX2luZm8udCAqICh1bml0IC0+IHQpXG4gIHwgTGF6eSBvZiB0IExhenkudFxuXG5sZXQgcmVjIGZ1bGx5X2ZvcmNlZCA6IHQgLT4gRnVsbHlfZm9yY2VkLnQgPSBmdW5jdGlvblxuICB8IEJhc2ljIGIgLT4gQmFzaWMgYlxuICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8ubWFwIGcgfmY6ZnVsbHlfZm9yY2VkKVxuICB8IEV4ZWMgKGUsIGYpIC0+IEV4ZWMgKGUsIGZ1bGx5X2ZvcmNlZCAoZiAoKSkpXG4gIHwgTGF6eSB0aHVuayAtPiBmdWxseV9mb3JjZWQgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgcmVjIGdldF9zdW1tYXJ5ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IGIuc3VtbWFyeVxuICB8IEdyb3VwIGcgLT4gZy5zdW1tYXJ5XG4gIHwgRXhlYyAoZSwgXykgLT4gZS5zdW1tYXJ5XG4gIHwgTGF6eSB0aHVuayAtPiBnZXRfc3VtbWFyeSAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbmxldCBoZWxwX3RleHQgPSBgVXNlX0NvbW1hbmRfdW5peFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgS2V5X3R5cGUgPSBLZXlfdHlwZVxuXG4gIGxldCBhYnNfcGF0aCA9IFN0YWJsZS5FeGVjX2luZm8uYWJzX3BhdGhcbiAgbGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZVxuICBsZXQgd29yZF93cmFwID0gRmxhZ19oZWxwX2Rpc3BsYXkud29yZF93cmFwX2FuZF9zdHJpcFxuICBsZXQgbG9va3VwX2V4cGFuZCA9IGxvb2t1cF9leHBhbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTZXJpYWxpemFibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaG9zdCA6IFN0cmluZy50XG4gICAgICAgIDsgcG9ydCA6IEludC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrXVxuXG4gICAgICBsZXQgdG9fc2VyaWFsaXphYmxlIHsgaG9zdDsgcG9ydCB9ID0gaG9zdCwgcG9ydFxuICAgICAgbGV0IG9mX3NlcmlhbGl6YWJsZSAoaG9zdCwgcG9ydCkgPSB7IGhvc3Q7IHBvcnQgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFQwXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXJpYWxpemFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogU2VyaWFsaXphYmxlLnRdO1xuICAgICAgICBbJWV4cGVjdFxuICAgICAgICAgIHt8XG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDAgfH1dXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChTZXJpYWxpemFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgb3BlbiEgSW1wb3J0XG4gICAgICBvcGVuISBTdGRfaW50ZXJuYWxcbiAgICAgIG9wZW4hIFQwXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeyBob3N0OyBwb3J0IH0gPSBzcHJpbnRmIFwiJXM6JWRcIiBob3N0IHBvcnRcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBob3N0OyBwb3J0IF0gLT5cbiAgICAgICAgICBsZXQgcG9ydCA9XG4gICAgICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyBwb3J0IHdpdGhcbiAgICAgICAgICAgIHwgX2V4biAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogYmFkIHBvcnQ6ICVzXCIgcyAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgeyBob3N0OyBwb3J0IH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiAlc1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICB8IFNleHAuQXRvbSBzIGFzIHNleHAgLT5cbiAgICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICAgfCBGYWlsdXJlIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwKVxuICAgICAgICB8IHNleHAgLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLlxuICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyAoKiBoYW5kbGVzIHRoZSBob3N0OnBvcnQgc3RyaW5nIGNhc2UgKilcbiAgICAgICAgICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgICAgICAgOyAoKiBoYW5kbGVzIHRoZSBsaXN0IChob3N0IHBvcnQpIGNhc2UgICopXG4gICAgICAgICAgICAgICAgICBMaXN0IChDb25zIChTdHJpbmcsIENvbnMgKEludGVnZXIsIEVtcHR5KSkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUMSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJ0X29mX3NleHBcIiA9XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fChsb2NhbGhvc3QgODA4MCl8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8bG9jYWxob3N0OjgwODB8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwic2V4cCByb3VuZHRyaXBcIiA9XG4gICAgICBRdWlja2NoZWNrLnRlc3QgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogdF0gfmY6KGZ1biB0IC0+XG4gICAgICAgIFsldGVzdF9yZXN1bHQ6IHRdICh0X29mX3NleHAgKHNleHBfb2ZfdCB0KSkgfmV4cGVjdDp0KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5pbmNsdWRlIExhdGVzdFxuXG5sZXQgY3JlYXRlIH5ob3N0IH5wb3J0ID0geyBob3N0OyBwb3J0IH1cbmxldCBob3N0IHQgPSB0Lmhvc3RcbmxldCBwb3J0IHQgPSB0LnBvcnRcbmxldCB0dXBsZSB0ID0gdG9fc2VyaWFsaXphYmxlIHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuSG9zdF9hbmRfcG9ydFwiXG4gIGVuZClcblxuaW5jbHVkZSAoSGFzaGFibGUuTWFrZV9iaW5hYmxlIChMYXRlc3QpIDogSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKExhdGVzdClcblxubGV0IHR5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIkhvc3RfYW5kX3BvcnRcIiBzZXhwX29mX3RcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29udGFpbmVycyA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBleGNlcHRpb24gUGlkX211c3RfYmVfcG9zaXRpdmUgb2YgSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBlbnN1cmUgaSA9IGlmIGkgPD0gMCB0aGVuIHJhaXNlIChQaWRfbXVzdF9iZV9wb3NpdGl2ZSBpKSBlbHNlIGlcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChXaXRob3V0X2NvbnRhaW5lcnMpXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbnRhaW5lcnNcbiAgZW5kXG5cbiAgbW9kdWxlIExhdGVzdCA9IFYxXG5lbmRcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWJsZS5MYXRlc3QuV2l0aG91dF9jb250YWluZXJzXG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoXVxuXG5sZXQgb2ZfaW50IGkgPSBlbnN1cmUgaVxubGV0IHRvX2ludCA9IEZuLmlkXG5sZXQgb2Zfc3RyaW5nIHN0cmluZyA9IGVuc3VyZSAoSW50Lm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xubGV0IGluaXQgPSBvZl9pbnQgMVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlBpZFwiXG4gIGVuZClcbiIsIigqKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgYSBwb2x5bW9ycGhpYyBmdW5jdGlvbmFsIGRvdWJsZS1lbmRlZCBxdWV1ZS4gKilcblxuKCoqIEludmFyaWFudHM6XG4gICAgLSBxdWV1ZS5sZW5ndGggPSBMaXN0Lmxlbmd0aCBxdWV1ZS5mcm9udCArIExpc3QubGVuZ3RoIHF1ZXVlLmJhY2tcbiAgICAtIGlmIHF1ZXVlIGhhcyA+PSAyIGVsZW1lbnRzLCBuZWl0aGVyIGZyb250IG5vciBiYWNrIGFyZSBlbXB0eVxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5leGNlcHRpb24gRW1wdHkgW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSAnYSB0ID1cbiAgeyBmcm9udCA6ICdhIGxpc3RcbiAgOyBiYWNrIDogJ2EgbGlzdFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IGYgdCA9XG4gIGxldCBuX2Zyb250ID0gTGlzdC5sZW5ndGggdC5mcm9udCBpblxuICBsZXQgbl9iYWNrID0gTGlzdC5sZW5ndGggdC5iYWNrIGluXG4gIGFzc2VydCAodC5sZW5ndGggPSBuX2Zyb250ICsgbl9iYWNrKTtcbiAgYXNzZXJ0ICh0Lmxlbmd0aCA8IDIgfHwgKG5fZnJvbnQgPD4gMCAmJiBuX2JhY2sgPD4gMCkpO1xuICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuOztcblxubGV0IG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2sgPVxuICBtYXRjaCBmcm9udCwgYmFjayB3aXRoXG4gIHwgW10sIFtdIHwgWyBfIF0sIFtdIHwgW10sIFsgXyBdIHwgXyA6OiBfLCBfIDo6IF8gLT4geyBmcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBbXSwgXyA6OiBfIDo6IF8gLT5cbiAgICBsZXQgYmFjaywgcmV2X2Zyb250ID0gTGlzdC5zcGxpdF9uIGJhY2sgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udCA9IExpc3QucmV2IHJldl9mcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBfIDo6IF8gOjogXywgW10gLT5cbiAgICBsZXQgZnJvbnQsIHJldl9iYWNrID0gTGlzdC5zcGxpdF9uIGZyb250IChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQ7IGJhY2sgPSBMaXN0LnJldiByZXZfYmFjazsgbGVuZ3RoIH1cbjs7XG5cbmxldCBlbXB0eSA9IHsgZnJvbnQgPSBbXTsgYmFjayA9IFtdOyBsZW5ndGggPSAwIH1cbmxldCBlbnF1ZXVlX2Zyb250IHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+ZnJvbnQ6KHggOjogdC5mcm9udCkgfmJhY2s6dC5iYWNrXG5sZXQgZW5xdWV1ZV9iYWNrIHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+YmFjazooeCA6OiB0LmJhY2spIH5mcm9udDp0LmZyb250XG5cbmxldFtAY29sZF0gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGZyb250fCA9IDAsIHxiYWNrfCA+PSAyXCJdXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JhY2tfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGJhY2t8ID0gMCwgfGZyb250fCA+PSAyXCJdXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+ZnJvbnQ6eHMgfmJhY2s6dC5iYWNrXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmJhY2s6eHMgfmZyb250OnQuZnJvbnRcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IHBlZWtfZnJvbnRfZXhuIHQsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBwZWVrX2JhY2tfZXhuIHQsIGRyb3BfYmFja19leG4gdFxuXG5sZXQgb3B0aW9uYWwgZiB0ID1cbiAgbWF0Y2ggZiB0IHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBFbXB0eSAtPiBOb25lXG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gb3B0aW9uYWwgcGVla19mcm9udF9leG4gdFxubGV0IHBlZWtfYmFjayB0ID0gb3B0aW9uYWwgcGVla19iYWNrX2V4biB0XG5sZXQgZHJvcF9mcm9udCB0ID0gb3B0aW9uYWwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRyb3BfYmFjayB0ID0gb3B0aW9uYWwgZHJvcF9iYWNrX2V4biB0XG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFjayB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9iYWNrX2V4biB0XG5cbmxldCBlbnF1ZXVlIHQgc2lkZSB4ID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB4XG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgeFxuOztcblxubGV0IHBlZWsgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnQgdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFjayB0XG47O1xuXG5sZXQgcGVla19leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkcm9wIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgdFxuOztcblxubGV0IGRyb3BfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IHJldiB0ID0geyB0IHdpdGggZnJvbnQgPSB0LmJhY2s7IGJhY2sgPSB0LmZyb250IH1cblxubW9kdWxlIEFyYml0cmFyeV9vcmRlciA9IHN0cnVjdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LnJldl9hcHBlbmQgdC5mcm9udCB0LmJhY2tcbiAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5vZl9saXN0ICh0b19saXN0IHQpXG4gIGxldCB0b19zZXF1ZW5jZSB0ID0gU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaylcblxuICBsZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICAgIGxldCBvcGVuIE0gaW5cbiAgICBMaXN0LnN1bSAobW9kdWxlIE0pIHQuZnJvbnQgfmYgKyBMaXN0LnN1bSAobW9kdWxlIE0pIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCB0LmZyb250IH5mICsgTGlzdC5jb3VudCB0LmJhY2sgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCB0LmZyb250IH5mICYmIExpc3QuZm9yX2FsbCB0LmJhY2sgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgdC5mcm9udCB+ZiB8fCBMaXN0LmV4aXN0cyB0LmJhY2sgfmZcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gTGlzdC5tZW0gfmVxdWFsIHQuZnJvbnQgeCB8fCBMaXN0Lm1lbSB+ZXF1YWwgdC5iYWNrIHhcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgTGlzdC5mb2xkIHQuZnJvbnQgfmluaXQgfmYgfD4gZnVuIGluaXQgLT4gTGlzdC5mb2xkIHQuYmFjayB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBtYXRjaCBMaXN0LmZpbmQgdC5mcm9udCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QuZmluZCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCBMaXN0LmZpbmRfbWFwIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmRfbWFwIHQuYmFjayB+ZlxuICAgIHwgc29tZSAtPiBzb21lXG4gIDs7XG5cbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5tYXhfZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWF4X2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5ID49IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcblxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID1cbiAgICBtYXRjaCBMaXN0Lm1pbl9lbHQgdC5mcm9udCB+Y29tcGFyZSwgTGlzdC5taW5fZWx0IHQuYmFjayB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lLCBvcHQgfCBvcHQsIE5vbmUgLT4gb3B0XG4gICAgfCAoU29tZSB4IGFzIHNvbWVfeCksIChTb21lIHkgYXMgc29tZV95KSAtPlxuICAgICAgaWYgY29tcGFyZSB4IHkgPD0gMCB0aGVuIHNvbWVfeCBlbHNlIHNvbWVfeVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2NvbnRhaW5lciAoRiA6IHNpZ1xuICAgIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBsaXN0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCB0b19saXN0ID0gRi50b19saXN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gTGlzdC5tZW0gfmVxdWFsICh0b19saXN0IHQpIHhcbiAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gTGlzdC5mb2xkICh0b19saXN0IHQpIH5pbml0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzICh0b19saXN0IHQpIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50ICh0b19saXN0IHQpIH5mXG4gIGxldCBzdW0gbSB0IH5mID0gTGlzdC5zdW0gbSAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZCB0IH5mID0gTGlzdC5maW5kICh0b19saXN0IHQpIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gTGlzdC5maW5kX21hcCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgdG9fYXJyYXkgdCA9IExpc3QudG9fYXJyYXkgKHRvX2xpc3QgdClcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWluX2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gTGlzdC5tYXhfZWx0ICh0b19saXN0IHQpIH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbmVuZFxuXG5tb2R1bGUgRnJvbnRfdG9fYmFjayA9IHN0cnVjdFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+ZnJvbnQ6bGlzdCB+YmFjazpbXVxuICBsZXQgdG9fbGlzdCB0ID0gdC5mcm9udCBAIExpc3QucmV2IHQuYmFja1xuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuYmFjaykpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBiYWNrID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQ6W10gfmJhY2tcbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQmFja190b19mcm9udCA9IHN0cnVjdFxuICBsZXQgdG9fbGlzdCB0ID0gdC5iYWNrIEAgTGlzdC5yZXYgdC5mcm9udFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+YmFjazpsaXN0IH5mcm9udDpbXVxuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5mcm9udCkpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBmcm9udCA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrOltdXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZSBGcm9udF90b19iYWNrXG5cbmxldCBzaW5nbGV0b24geCA9IG9mX2xpc3QgWyB4IF1cblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IGVsdCAtPiBmb2xkIChmIGVsdCkgfmluaXQ6dCB+ZjplbnF1ZXVlX2JhY2spXG4gICAgOztcblxuICAgIGxldCByZXR1cm4gPSBzaW5nbGV0b25cblxuICAgIGxldCBtYXAgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgeyBmcm9udCA9IExpc3QubWFwIHQuZnJvbnQgfmY7IGJhY2sgPSBMaXN0Lm1hcCB0LmJhY2sgfmY7IGxlbmd0aCA9IHQubGVuZ3RoIH0pXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPSBMaXN0LmNvbXBhcmUgY21wICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcbmxldCBlcXVhbCBlcSB0MSB0MiA9IExpc3QuZXF1YWwgZXEgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxuXG5sZXQgaGFzaF9mb2xkX3QgaGFzaF9mb2xkX2Egc3RhdGUgdCA9XG4gIGZvbGQgfmY6aGFzaF9mb2xkX2EgfmluaXQ6KFslaGFzaF9mb2xkOiBpbnRdIHN0YXRlIChsZW5ndGggdCkpIHRcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFslc2V4cF9vZjogZWx0IGxpc3RdICh0b19saXN0IHQpXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoWyVvZl9zZXhwOiBlbHQgbGlzdF0gc2V4cClcbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBMaXN0LnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IG1hcCA9IG1hcFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgzZjk2OTgyLTQ5OTItMTFlNi05MTlkLWZiZGRjZmRjYTU3NlwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRmRlcXVlXCJcbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG5cbiAgICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wIG5leHQgYWNjIG4gPVxuICAgICAgICAgICAgaWYgbGVuID0gblxuICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBhc3NlcnQgKG4gPSBsZW5ndGggYWNjKTtcbiAgICAgICAgICAgICAgbGV0IHggPSBuZXh0ICgpIGluXG4gICAgICAgICAgICAgIGxvb3AgbmV4dCAoZW5xdWV1ZV9iYWNrIGFjYyB4KSAobiArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBuZXh0IGVtcHR5IDBcbiAgICAgICAgOztcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBidWlsZCB+ZnJvbnQgfmJhY2sgPVxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBmcm9udCArIExpc3QubGVuZ3RoIGJhY2sgaW5cbiAgICBsZXQgdCA9IHsgbGVuZ3RoOyBmcm9udDsgYmFjayB9IGluXG4gICAgaW52YXJpYW50IGlnbm9yZSB0O1xuICAgIHRcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEZkZXF1ZVxuXG5sZXQgZW5xdWV1ZSA9IGVucXVldWVfYmFja1xubGV0IHBlZWtfZXhuID0gcGVla19mcm9udF9leG5cbmxldCBwZWVrID0gcGVla19mcm9udFxubGV0IGRlcXVldWVfZXhuID0gZGVxdWV1ZV9mcm9udF9leG5cbmxldCBkZXF1ZXVlID0gZGVxdWV1ZV9mcm9udFxubGV0IGRyb3BfZXhuID0gZHJvcF9mcm9udF9leG5cbmxldCB0b19zZXF1ZW5jZSA9IEZyb250X3RvX2JhY2sudG9fc2VxdWVuY2VcbmxldCBvZl9zZXF1ZW5jZSA9IEZyb250X3RvX2JhY2sub2Zfc2VxdWVuY2VcblxuKCogRGVwcmVjYXRlZCBhbGlhc2VzICopXG5sZXQgdG9wID0gcGVla1xubGV0IHRvcF9leG4gPSBwZWVrX2V4blxubGV0IGRpc2NhcmRfZXhuID0gZHJvcF9leG5cbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBvcHRpb25cbiAgICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBvZl9mb3JtYXQgKHYxIDogJ2EgRm9ybWF0LnQpIDogJ2EgdCA9IHsgdmFsdWUgPSAhdjE7IHNldF9hdCA9IFslaGVyZV0gfVxuICAgICAgbGV0IHRvX2Zvcm1hdCAodCA6ICdhIHQpIDogJ2EgRm9ybWF0LnQgPSByZWYgdC52YWx1ZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGVcbiAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBVbnN0YWJsZSA9IFN0YWJsZS5WMVxub3BlbiBTdGFibGUuVFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVC50XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHsgdmFsdWU7IHNldF9hdCB9ID1cbiAgbWF0Y2ggdmFsdWUgd2l0aFxuICB8IE5vbmUgLT4gWyVtZXNzYWdlIFwidW5zZXRcIl1cbiAgfCBTb21lIHZhbHVlIC0+XG4gICAgWyVtZXNzYWdlIFwiXCIgKHZhbHVlIDogYSkgfnNldF9hdDooc2V0X2F0IHw+IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZyldXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0LnZhbHVlIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBhIC0+IGludmFyaWFudF9hIGFcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gTm9uZTsgc2V0X2F0ID0gWyVoZXJlXSB9XG5cbmxldCBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlID1cbiAgdC52YWx1ZSA8LSBTb21lIHZhbHVlO1xuICB0LnNldF9hdCA8LSBoZXJlXG47O1xuXG5sZXQgc2V0X2lmX25vbmUgdCBoZXJlIHZhbHVlID0gaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZSB0aGVuIHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWVcblxubGV0IHNldCB0IGhlcmUgdmFsdWUgPVxuICBpZiBPcHRpb24uaXNfbm9uZSB0LnZhbHVlXG4gIHRoZW4gKFxuICAgIHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWU7XG4gICAgT2sgKCkpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbU2V0X29uY2Uuc2V0X2V4bl0gYWxyZWFkeSBzZXRcIlxuICAgICAgICAgIH5zZXR0aW5nX2F0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udClcbiAgICAgICAgICB+cHJldmlvdXNseV9zZXRfYXQ6KHQuc2V0X2F0IDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgc2V0X2V4biB0IGhlcmUgdmFsdWUgPSBPcl9lcnJvci5va19leG4gKHNldCB0IGhlcmUgdmFsdWUpXG5sZXQgZ2V0IHQgPSB0LnZhbHVlXG5cbmxldCBnZXRfZXhuICh0IDogXyB0KSBoZXJlID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgU29tZSBhIC0+IGFcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJbU2V0X29uY2UuZ2V0X2V4bl0gdW5zZXRcIiB+YXQ6KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBpc19ub25lIHQgPSBPcHRpb24uaXNfbm9uZSB0LnZhbHVlXG5sZXQgaXNfc29tZSB0ID0gT3B0aW9uLmlzX3NvbWUgdC52YWx1ZVxubGV0IGl0ZXIgdCB+ZiA9IE9wdGlvbi5pdGVyIHQudmFsdWUgfmZcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSB0ID0gZ2V0X2V4biB0IFslaGVyZV1cbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNoYXBlID0gQ29tbWFuZF9zaGFwZS5TdGFibGVcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBDb21tYW5kX2ludGZcbm1vZHVsZSBTaGFwZSA9IENvbW1hbmRfc2hhcGVcblxuKCogaW4gb3JkZXIgdG8gZGVmaW5lIGV4cGVjdCB0ZXN0cywgd2Ugd2FudCB0byByYWlzZSByYXRoZXIgdGhhbiBleGl0IGlmIHRoZSBjb2RlIGlzXG4gICBydW5uaW5nIGluIHRoZSB0ZXN0IHJ1bm5lciBwcm9jZXNzICopXG5sZXQgcmFpc2VfaW5zdGVhZF9vZl9leGl0ID1cbiAgbWF0Y2ggUHB4X2lubGluZV90ZXN0X2xpYi5SdW50aW1lLnRlc3Rpbmcgd2l0aFxuICB8IGBUZXN0aW5nIGBBbV90ZXN0X3J1bm5lciAtPiB0cnVlXG4gIHwgYFRlc3RpbmcgYEFtX2NoaWxkX29mX3Rlc3RfcnVubmVyIHwgYE5vdF90ZXN0aW5nIC0+IGZhbHNlXG47O1xuXG5leGNlcHRpb24gRXhpdF9jYWxsZWQgb2YgeyBzdGF0dXMgOiBpbnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4oKiBbcmFpc2VfaW5zdGVhZF9vZl9leGl0XS1yZXNwZWN0aW5nIHdyYXBwZXJzIGZvciBbZXhpdF0gYW5kIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgKilcbmluY2x1ZGUgc3RydWN0XG4gIGxldCBleGl0IHN0YXR1cyA9XG4gICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0IHRoZW4gcmFpc2UgKEV4aXRfY2FsbGVkIHsgc3RhdHVzIH0pIGVsc2UgZXhpdCBzdGF0dXNcbiAgOztcblxuICBtb2R1bGUgRXhuID0gc3RydWN0XG4gICAgbGV0IHRvX3N0cmluZyA9IEV4bi50b19zdHJpbmdcblxuICAgIGxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9XG4gICAgICBpZiByYWlzZV9pbnN0ZWFkX29mX2V4aXRcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgZiAoKSB3aXRoXG4gICAgICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgPSAwIH0gYXMgZXhuIC0+IHByaW50X3MgWyVzZXhwIChleG4gOiBleG4pXSlcbiAgICAgIGVsc2UgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHVud29yZHMgeHMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgeHNcbmxldCB1bnBhcmFncmFwaHMgeHMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cXG5cIiB4c1xuXG5leGNlcHRpb24gRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBvZiBzdHJpbmdcblxubGV0IGRpZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBtc2cgKCkgLT4gcmFpc2UgKEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnKSkgZm10XG5sZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IFNoYXBlLlByaXZhdGUuaGVscF9zY3JlZW5fY29tcGFyZVxuXG4oKiB1bml2ZXJzYWwgbWFwcyBhcmUgdXNlZCB0byBwYXNzIGFyb3VuZCB2YWx1ZXMgYmV0d2VlbiBkaWZmZXJlbnQgYml0c1xuICAgb2YgY29tbWFuZCBsaW5lIHBhcnNpbmcgY29kZSB3aXRob3V0IGhhdmluZyBhIGh1Z2UgaW1wYWN0IG9uIHRoZVxuICAgdHlwZXMgaW52b2x2ZWRcblxuICAgMS4gcGFzc2luZyB2YWx1ZXMgZnJvbSBwYXJzZWQgYXJncyB0byBjb21tYW5kLWxpbmUgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uc1xuICAgMi4gcGFzc2luZyBzcGVjaWFsIHZhbHVlcyB0byBhIGJhc2UgY29tbWFuZHMgdGhhdCByZXF1ZXN0IHRoZW0gaW4gdGhlaXIgc3BlY1xuICogZXhwYW5kZWQgc3ViY29tbWFuZCBwYXRoXG4gKiBhcmdzIHBhc3NlZCB0byB0aGUgYmFzZSBjb21tYW5kXG4gKiBoZWxwIHRleHQgZm9yIHRoZSBiYXNlIGNvbW1hbmRcbiopXG5tb2R1bGUgRW52ID0gc3RydWN0XG4gIGluY2x1ZGUgVW5pdl9tYXBcblxuICBsZXQga2V5X2NyZWF0ZSBuYW1lID0gVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZSBzZXhwX29mX29wYXF1ZVxuICBsZXQgbXVsdGlfYWRkID0gVW5pdl9tYXAuTXVsdGkuYWRkXG4gIGxldCBzZXRfd2l0aF9kZWZhdWx0ID0gVW5pdl9tYXAuV2l0aF9kZWZhdWx0LnNldFxuZW5kXG5cbm1vZHVsZSBBdXRvX2NvbXBsZXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IHN0cmluZyBsaXN0XG5lbmRcblxubW9kdWxlIENvbXBsZXRlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBBdXRvX2NvbXBsZXRlLnQgb3B0aW9uXG5cbiAgbGV0IHJ1bl9hbmRfZXhpdCB0IGVudiB+cGFydCA6IG5ldmVyX3JldHVybnMgPVxuICAgIE9wdGlvbi5pdGVyIHQgfmY6KGZ1biBjb21wbGV0aW9ucyAtPlxuICAgICAgTGlzdC5pdGVyIH5mOnByaW50X2VuZGxpbmUgKGNvbXBsZXRpb25zIGVudiB+cGFydCkpO1xuICAgIGV4aXQgMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcmdfdHlwZSA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZXh0cmFfZG9jIDogJ2EgdCAtPiBzdHJpbmcgb3B0aW9uIGxhenlfdFxuICB2YWwga2V5IDogJ2EgdCAtPiAnYSBFbnYuTXVsdGkuS2V5LnQgb3B0aW9uXG4gIHZhbCBjb21wbGV0ZSA6ICdhIHQgLT4gQ29tcGxldGVyLnRcbiAgdmFsIHBhcnNlIDogJ2EgdCAtPiBzdHJpbmcgLT4gKCdhLCBleG4pIHJlc3VsdFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Y29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAoc3RyaW5nIC0+ICdhKVxuICAgIC0+ICdhIHRcblxuICB2YWwgbWFwIDogP2tleTonYSBFbnYuTXVsdGkuS2V5LnQgLT4gJ2IgdCAtPiBmOignYiAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgb2ZfbGF6eSA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdhIHQgbGF6eV90IC0+ICdhIHRcblxuICB2YWwgb2ZfbWFwXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gJ2EgU3RyaW5nLk1hcC50XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgIC0+ICdhIHRcblxuICB2YWwgZW51bWVyYXRlZF9zZXhwYWJsZVxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChtb2R1bGUgRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgIC0+ICdhIHRcblxuICB2YWwgY29tbWFfc2VwYXJhdGVkXG4gICAgOiAgP2FsbG93X2VtcHR5OmJvb2xcbiAgICAtPiA/a2V5OidhIGxpc3QgRW52Lk11bHRpLktleS50XG4gICAgLT4gP3N0cmlwX3doaXRlc3BhY2U6Ym9vbFxuICAgIC0+ID91bmlxdWVfdmFsdWVzOmJvb2xcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgbGlzdCB0XG5cbiAgbW9kdWxlIEV4cG9ydCA6IHNpZ1xuICAgIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICAgIHZhbCBpbnQgOiBpbnQgdFxuICAgIHZhbCBjaGFyIDogY2hhciB0XG4gICAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICAgIHZhbCBib29sIDogYm9vbCB0XG4gICAgdmFsIGRhdGUgOiBEYXRlLnQgdFxuICAgIHZhbCBwZXJjZW50IDogUGVyY2VudC50IHRcbiAgICB2YWwgaG9zdF9hbmRfcG9ydCA6IEhvc3RfYW5kX3BvcnQudCB0XG4gICAgdmFsIHNleHAgOiBTZXhwLnQgdFxuICAgIHZhbCBzZXhwX2NvbnYgOiA/Y29tcGxldGU6QXV0b19jb21wbGV0ZS50IC0+IChTZXhwLnQgLT4gJ2EpIC0+ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdmFsIGNvbXBsZXRlIDogXyB0IC0+IEF1dG9fY29tcGxldGUudFxuICAgIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICdhIE9yX2Vycm9yLnRcbiAgZW5kXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBhcnNlIDogc3RyaW5nIC0+ICdhXG4gICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgOyBrZXkgOiAnYSBVbml2X21hcC5NdWx0aS5LZXkudCBvcHRpb25cbiAgICA7IGV4dHJhX2RvYyA6IHN0cmluZyBvcHRpb24gTGF6eS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IHBhcnNlIHQgcyA9IFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IHQucGFyc2UgcylcbiAgbGV0IGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgcGFyc2UgfmV4dHJhX2RvYyA9IHsgcGFyc2U7IGtleTsgY29tcGxldGU7IGV4dHJhX2RvYyB9XG5cbiAgbGV0IGNyZWF0ZSA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgPVxuICAgIGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nIH5leHRyYV9kb2M6KExhenkuZnJvbV92YWwgTm9uZSlcbiAgOztcblxuICBsZXQgbWFwID9rZXkgdCB+ZiA9IHsgdCB3aXRoIGtleTsgcGFyc2UgPSAoZnVuIHMgLT4gZiAodC5wYXJzZSBzKSkgfVxuXG4gIGxldCBvZl9sYXp5ID9rZXkgdCA9XG4gICAgbGV0IHBhcnNlIHN0ciA9IChmb3JjZSB0KS5wYXJzZSBzdHIgaW5cbiAgICBsZXQgY29tcGxldGUgZW52IH5wYXJ0ID1cbiAgICAgIG1hdGNoIChmb3JjZSB0KS5jb21wbGV0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogU2VlIFtydW5fYW5kX2V4aXRdIC0gbm8gY29tcGxldGlvbnMgaXMgZXF1aXZhbGVudCB0byBub3QgaGF2aW5nIGFcbiAgICAgICAgICAgW0NvbXBsZXRlXS4gKilcbiAgICAgICAgW11cbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSBlbnYgfnBhcnRcbiAgICBpblxuICAgIGxldCBleHRyYV9kb2MgPSBMYXp5LmJpbmQgdCB+ZjpleHRyYV9kb2MgaW5cbiAgICB7IHBhcnNlOyBjb21wbGV0ZSA9IFNvbWUgY29tcGxldGU7IGtleTsgZXh0cmFfZG9jIH1cbiAgOztcblxuICBsZXQgc3RyaW5nID0gY3JlYXRlIEZuLmlkXG4gIGxldCBpbnQgPSBjcmVhdGUgSW50Lm9mX3N0cmluZ1xuICBsZXQgY2hhciA9IGNyZWF0ZSBDaGFyLm9mX3N0cmluZ1xuICBsZXQgZmxvYXQgPSBjcmVhdGUgRmxvYXQub2Zfc3RyaW5nXG4gIGxldCBkYXRlID0gY3JlYXRlIERhdGUub2Zfc3RyaW5nXG4gIGxldCBwZXJjZW50ID0gY3JlYXRlIFBlcmNlbnQub2Zfc3RyaW5nXG4gIGxldCBob3N0X2FuZF9wb3J0ID0gY3JlYXRlIEhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nXG4gIGxldCBzZXhwID0gY3JlYXRlIFNleHAub2Zfc3RyaW5nXG4gIGxldCBzZXhwX2NvbnYgP2NvbXBsZXRlIG9mX3NleHAgPSBjcmVhdGUgP2NvbXBsZXRlIChmdW4gcyAtPiBvZl9zZXhwIChTZXhwLm9mX3N0cmluZyBzKSlcblxuICBsZXQgYXNzb2NpYXRpdmVcbiAgICAgICAgPyhhY2NlcHRfdW5pcXVlX3ByZWZpeGVzID0gdHJ1ZSlcbiAgICAgICAgPyhsaXN0X3ZhbHVlc19pbl9oZWxwID0gdHJ1ZSlcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgbGV0IG9wZW4gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgICAgdmFsIGlzX3ByZWZpeCA6IHN0cmluZyAtPiBwcmVmaXg6c3RyaW5nIC0+IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IFQgOlxuICAgICAgICAgICAgeyBjbXAgOiAobW9kdWxlIFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgICAgICAgICA7IG1hcCA6IChzdHJpbmcsICdhLCAnY21wKSBNYXAudFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLT4gJ2EgdFxuICAgIGVuZCBpblxuICAgIGxldCAoVCB7IGNtcCA9IChtb2R1bGUgUyk7IG1hcCB9KSA9XG4gICAgICBsZXQgbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleVxuICAgICAgICAgICAgKHR5cGUgY21wKVxuICAgICAgICAgICAgKG1vZHVsZSBTIDogUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICAgICAgYWxpc3RcbiAgICAgICAgPVxuICAgICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTKSBhbGlzdCB3aXRoXG4gICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSAoXyA6IFMudCkgLT5cbiAgICAgICAgICBsZXQgZHVwbGljYXRlX2tleXMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoaywgKF8gOiAnYSkpIC0+IGssIGspXG4gICAgICAgICAgICB8PiBNYXAub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBTKVxuICAgICAgICAgICAgfD4gTWFwLmZpbHRlciB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgIHw+IE1hcC5kYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJDb21tYW5kLlNwZWMuQXJnX3R5cGUub2ZfYWxpc3RfZXhuXCIgKGR1cGxpY2F0ZV9rZXlzIDogc3RyaW5nIGxpc3QgbGlzdCldXG4gICAgICBpblxuICAgICAgbGV0IG1ha2UgY21wID0gVCB7IGNtcDsgbWFwID0gbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleSBjbXAgYWxpc3QgfSBpblxuICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBtYWtlIChtb2R1bGUgU3RyaW5nKSBlbHNlIG1ha2UgKG1vZHVsZSBTdHJpbmcuQ2FzZWxlc3MpXG4gICAgaW5cbiAgICBsZXQgY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4ID1cbiAgICAgIG1hdGNoIGF1dG9fY29tcGxldGUgd2l0aFxuICAgICAgfCBTb21lIGNvbXBsZXRlIC0+IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIExpc3QuZmlsdGVyX21hcCAoTWFwLnRvX2FsaXN0IG1hcCkgfmY6KGZ1biAobmFtZSwgXykgLT5cbiAgICAgICAgICBtYXRjaCBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXggd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCogQmFzaCBjb21wbGV0aW9uIHdpbGwgbm90IGFjY2VwdCBbRm9vXSBhcyBhIGNvbXBsZXRpb24gZm9yIFtmXS4gU28gd2UgbmVlZFxuICAgICAgICAgICAgICAgdG8gbWF0Y2ggdGhlIGNhcGl0YWxpemF0aW9uIGdpdmVuLiAqKVxuICAgICAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWJvIG5hbWUgfnBvczooU3RyaW5nLmxlbmd0aCBwcmVmaXgpIGluXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHByZWZpeCBeIHN1ZmZpeCBpblxuICAgICAgICAgICAgU29tZSBuYW1lKVxuICAgIGluXG4gICAgbGV0IGZpbmQgYXJnID1cbiAgICAgIG1hdGNoIE1hcC5maW5kIG1hcCBhcmcgd2l0aFxuICAgICAgfCBTb21lIF8gYXMgcyAtPiBzXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIE1hcC50b19hbGlzdCBtYXBcbiAgICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAobmFtZSwgXykgLT4gUy5pc19wcmVmaXggbmFtZSB+cHJlZml4OmFyZylcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWyAoX3NpbmdsZXRvbl9rZXksIHYpIF0gLT4gU29tZSB2XG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgKCogSW4gdGhlIHR3by1vci1tb3JlIGNhc2Ugd2UgY291bGQgcHJvdmlkZSBmaWx0ZXJlZCBoZWxwIHRleHQsIGJ1dCBpdCdzXG4gICAgICAgICAgICAgICAgIG1vcmUgZ2VuZXJhbGx5IHVzZWZ1bCB0byBsaXN0IGFsbCB0aGUgb3B0aW9ucywgd2hpY2ggd2UgZG8gYmVsb3cuICopXG4gICAgICAgICAgICAgIE5vbmUpKVxuICAgIGluXG4gICAgY3JlYXRlJ1xuICAgICAgfmV4dHJhX2RvYzpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAoaWYgbGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgdmFsdWVzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTWFwLmtleXMgbWFwKSBpblxuICAgICAgICAgICAgIFNvbWUgWyVzdHJpbmcgXCIoY2FuIGJlOiAle3ZhbHVlc30pXCJdKVxuICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgP2tleVxuICAgICAgfmNvbXBsZXRlXG4gICAgICAoZnVuIGFyZyAtPlxuICAgICAgICAgbWF0Y2ggZmluZCBhcmcgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB2YWxpZF9hcmd1bWVudHNfZXh0cmEgPVxuICAgICAgICAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gXCJcIiBlbHNlIFwiIChjYXNlIGluc2Vuc2l0aXZlKVwiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgIFwidmFsaWQgYXJndW1lbnRzJXM6IHslc31cIlxuICAgICAgICAgICAgIHZhbGlkX2FyZ3VtZW50c19leHRyYVxuICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKE1hcC5rZXlzIG1hcCkpXG4gICAgICAgICAgICAgKCkpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4blxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSlcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBhc3NvY2lhdGl2ZVxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICBhbGlzdFxuICA7O1xuXG4gIGxldCBvZl9tYXBcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgbWFwXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAoTWFwLnRvX2FsaXN0IG1hcClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKGxldCVtYXAuTGlzdCB0ID0gRS5hbGwgaW5cbiAgICAgICBFLnRvX3N0cmluZyB0LCB0KVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBlbnVtZXJhdGVkXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRVxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIFslc2V4cCAodCA6IEUudCldXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgbGV0IGJvb2wgPSBlbnVtZXJhdGVkIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlIChtb2R1bGUgQm9vbClcblxuICBsZXQgY29tbWFfc2VwYXJhdGVkXG4gICAgICAgID8oYWxsb3dfZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgP2tleVxuICAgICAgICA/KHN0cmlwX3doaXRlc3BhY2UgPSBmYWxzZSlcbiAgICAgICAgPyh1bmlxdWVfdmFsdWVzID0gZmFsc2UpXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IHN0cmlwID0gaWYgc3RyaXBfd2hpdGVzcGFjZSB0aGVuIGZ1biBzdHIgLT4gU3RyaW5nLnN0cmlwIHN0ciBlbHNlIEZuLmlkIGluXG4gICAgbGV0IGNvbXBsZXRlID1cbiAgICAgIE9wdGlvbi5tYXAgdC5jb21wbGV0ZSB+ZjooZnVuIGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbGV0IHByZWZpeGVzLCBzdWZmaXggPVxuICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBwYXJ0IH5vbjonLCcgfD4gTGlzdC5yZXYgd2l0aFxuICAgICAgICAgIHwgW10gLT4gW10sIHBhcnRcbiAgICAgICAgICB8IGhkIDo6IHRsIC0+IExpc3QucmV2IHRsLCBoZFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfYWxsb3dlZCA9XG4gICAgICAgICAgaWYgbm90IHVuaXF1ZV92YWx1ZXNcbiAgICAgICAgICB0aGVuIGZ1biAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHNlZW5fYWxyZWFkeSA9IHByZWZpeGVzIHw+IExpc3QubWFwIH5mOnN0cmlwIHw+IFN0cmluZy5TZXQub2ZfbGlzdCBpblxuICAgICAgICAgICAgZnVuIGNob2ljZSAtPiBub3QgKFNldC5tZW0gc2Vlbl9hbHJlYWR5IChzdHJpcCBjaG9pY2UpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoY29tcGxldGVfZWx0IGVudiB+cGFydDpzdWZmaXgpIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgICAgIChub3QgKFN0cmluZy5tZW0gY2hvaWNlICcsJykpICYmIGlzX2FsbG93ZWQgY2hvaWNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBjaG9pY2UgdG8gYXV0by1jb21wbGV0ZSwgYWRkIGEgc2Vjb25kIGNob2ljZSB3aXRoXG4gICAgICAgICAgICAgYSB0cmFpbGluZyBjb21tYSBzbyB0aGF0IGF1dG8tY29tcGxldGlvbiB3aWxsIGdvIHRvIHRoZSBlbmQgYnV0IGJhc2hcbiAgICAgICAgICAgICB3b24ndCBhZGQgYSBzcGFjZS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjaG9pY2VzLCBvciBhIHNpbmdsZSBjaG9pY2VcbiAgICAgICAgICAgICB0aGF0IG11c3QgYmUgZmluYWwsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgZHVtbXkgb3B0aW9uLiAqKVxuICAgICAgICAgIHwgWyBjaG9pY2UgXSAtPiBbIGNob2ljZTsgY2hvaWNlIF4gXCIsXCIgXVxuICAgICAgICAgIHwgY2hvaWNlcyAtPiBjaG9pY2VzXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIGNob2ljZXMgfmY6KGZ1biBjaG9pY2UgLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKHByZWZpeGVzIEAgWyBjaG9pY2UgXSkpKVxuICAgIGluXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgbGV0IHN0cmluZyA9IHN0cmlwIHN0cmluZyBpblxuICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgdGhlblxuICAgICAgICBpZiBhbGxvd19lbXB0eVxuICAgICAgICB0aGVuIFtdXG4gICAgICAgIGVsc2UgZmFpbHdpdGggXCJDb21tYW5kLlNwZWMuQXJnX3R5cGUuY29tbWFfc2VwYXJhdGVkOiBlbXB0eSBsaXN0IG5vdCBhbGxvd2VkXCJcbiAgICAgIGVsc2UgTGlzdC5tYXAgKFN0cmluZy5zcGxpdCBzdHJpbmcgfm9uOicsJykgfmY6KGZ1biBzdHIgLT4gdC5wYXJzZSAoc3RyaXAgc3RyKSlcbiAgICBpblxuICAgIGNyZWF0ZSA/a2V5ID9jb21wbGV0ZSBvZl9zdHJpbmdcbiAgOztcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgbGV0IHN0cmluZyA9IHN0cmluZ1xuICAgIGxldCBpbnQgPSBpbnRcbiAgICBsZXQgY2hhciA9IGNoYXJcbiAgICBsZXQgZmxvYXQgPSBmbG9hdFxuICAgIGxldCBib29sID0gYm9vbFxuICAgIGxldCBkYXRlID0gZGF0ZVxuICAgIGxldCBwZXJjZW50ID0gcGVyY2VudFxuICAgIGxldCBob3N0X2FuZF9wb3J0ID0gaG9zdF9hbmRfcG9ydFxuICAgIGxldCBzZXhwID0gc2V4cFxuICAgIGxldCBzZXhwX2NvbnYgPSBzZXhwX2NvbnZcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IGNvbXBsZXRlIHQgPVxuICAgICAgbWF0Y2ggdC5jb21wbGV0ZSB3aXRoXG4gICAgICB8IFNvbWUgZiAtPiBmXG4gICAgICB8IE5vbmUgLT4gZnVuIF8gfnBhcnQ6XyAtPiBbXVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2UgdCBzdHIgPSBwYXJzZSB0IHN0ciB8PiBPcl9lcnJvci5vZl9leG5fcmVzdWx0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBGbGFnID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudCA9XG4gICAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgICA7IGF0X21vc3Rfb25jZSA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCB0b19oZWxwX3N0cmluZyA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ1xuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nX2RlcHJlY2F0ZWQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSBfIH0gZmxhZ19uYW1lID1cbiAgICAgIHRvX2hlbHBfc3RyaW5nIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9IH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbGV0IGFueSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X2xlYXN0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X21vc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgICBsZXQgZXhhY3RseV9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gIGVuZFxuXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IE5vX2FyZyBvZiAoRW52LnQgLT4gRW52LnQpXG4gICAgfCBQcmludF9pbmZvX2FuZF9xdWl0IG9mIChFbnYudCAtPiBzdHJpbmcpXG4gICAgfCBBcmcgb2YgKEVudi50IC0+IHN0cmluZyAtPiBFbnYudCkgKiBDb21wbGV0ZXIudFxuICAgIHwgUmVzdCBvZiAoRW52LnQgLT4gc3RyaW5nIGxpc3QgLT4gRW52LnQpXG5cbiAgbW9kdWxlIEludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgOiBzdHJpbmcgbGlzdFxuICAgICAgKCogW2FsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXSBhcmUgYWxpYXNlcyB0aGF0IGRvbid0IHNob3cgdXAgaW4gLWhlbHAgb3V0cHV0LlxuICAgICAgICAgQ3VycmVudGx5IHRoZXkncmUgb25seSB1c2VkIGZvciBkb3VibGUtZGFzaCBidWlsdC1pbiBmbGFncyBsaWtlIC0taGVscCBhbmRcbiAgICAgICAgIC0tdmVyc2lvbi4gKilcbiAgICAgIDsgYWN0aW9uIDogYWN0aW9uXG4gICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgICAgOyBjaGVja19hdmFpbGFibGUgOiBFbnYudCAtPiB1bml0XG4gICAgICA7IG5hbWVfbWF0Y2hpbmcgOiBbIGBQcmVmaXggfCBgRnVsbF9tYXRjaF9yZXF1aXJlZCBdXG4gICAgICB9XG5cbiAgICBsZXQgd3JhcF9pZl9vcHRpb25hbCB0IGZsYWdfbmFtZSA9XG4gICAgICBOdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmcgdC5udW1fb2NjdXJyZW5jZXMgfmZsYWdfbmFtZVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRG9jID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGFyZ19kb2MgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIH1cblxuICAgICAgbGV0IHBhcnNlIH5hY3Rpb24gfmRvYyA9XG4gICAgICAgIGxldCBhcmdfZG9jLCBkb2MgPVxuICAgICAgICAgIG1hdGNoIChhY3Rpb24gOiBhY3Rpb24pLCBTdHJpbmcubHNwbGl0MiBkb2Mgfm9uOicgJyB3aXRoXG4gICAgICAgICAgfCAoTm9fYXJnIF8gfCBQcmludF9pbmZvX2FuZF9xdWl0IF8pLCBfIC0+IE5vbmUsIGRvY1xuICAgICAgICAgIHwgQXJnIF8sIChOb25lIHwgU29tZSAoXCJcIiwgXykpIC0+IFNvbWUgXCJfXCIsIGRvY1xuICAgICAgICAgIHwgUmVzdCBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IChBcmcgXyB8IFJlc3QgXyksIFNvbWUgKGFyZywgZG9jKSAtPiBTb21lIGFyZywgZG9jXG4gICAgICAgIGluXG4gICAgICAgIHsgZG9jID0gU3RyaW5nLnN0cmlwIGRvYzsgYXJnX2RvYyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgY29uY2F0IH5uYW1lIH5hcmdfZG9jID1cbiAgICAgICAgbWF0Y2ggYXJnX2RvYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBuYW1lXG4gICAgICAgIHwgU29tZSBhcmdfZG9jIC0+IG5hbWUgXiBcIiBcIiBeIGFyZ19kb2NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCB4ID1cbiAgICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nX2RlcHJlY2F0ZWQgdC5udW1fb2NjdXJyZW5jZXMgeFxuICAgICAgOztcblxuICAgICAgKCogZmxhZyBoZWxwIGluIHRoZSBmb3JtYXQgb2YgdGhlIG9sZCBjb21tYW5kLiB1c2VkIGZvciBpbmplY3Rpb24gKilcbiAgICAgIGxldCBoZWxwXG4gICAgICAgICAgICAoeyBuYW1lXG4gICAgICAgICAgICAgOyBkb2NcbiAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IF9cbiAgICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwID0gX1xuICAgICAgICAgICAgIH0gYXMgdClcbiAgICAgICAgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IGRvYyB+cHJlZml4OlwiIFwiXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAobmFtZSwgU3RyaW5nLmxzdHJpcCBkb2MpXG4gICAgICAgICAgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIHggLT4geCwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgICAgICAod3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSwgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAoIHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZTp4IH5hcmdfZG9jKVxuICAgICAgICAgICAgLCBzcHJpbnRmIFwic2FtZSBhcyBcXFwiJXNcXFwiXCIgbmFtZSApKSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgYWxpZ25cbiAgICAgICAgICAoeyBuYW1lXG4gICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IF9cbiAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgfSBhcyB0KVxuICAgICAgOiBTaGFwZS5GbGFnX2luZm8udFxuICAgICAgPVxuICAgICAgbGV0IHsgRG9jLmFyZ19kb2M7IGRvYyB9ID0gRG9jLnBhcnNlIH5hY3Rpb24gfmRvYyBpblxuICAgICAgbGV0IG5hbWUgPSB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWUgfmFyZ19kb2MpIGluXG4gICAgICB7IG5hbWU7IGRvYzsgYWxpYXNlcyB9XG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgZmxhZ3MgPVxuICAgICAgbWF0Y2ggU3RyaW5nLk1hcC5vZl9hbGlzdCAoTGlzdC5tYXAgZmxhZ3MgfmY6KGZ1biBmbGFnIC0+IGZsYWcubmFtZSwgZmxhZykpIHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgZmxhZyAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgZmxhZ3MgfmY6KGZ1biBmbGFnIC0+IGZsYWcubmFtZSA6OiBmbGFnLmFsaWFzZXMpXG4gICAgICAgIHw+IExpc3QuZmluZF9hX2R1cCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ11cbiAgICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biB4IC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG9yIGFsaWFzZXMgbmFtZWQgJXNcIiB4ICgpKTtcbiAgICAgICAgbWFwXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgeyBhY3Rpb24gOiBhY3Rpb25cbiAgICA7IHJlYWQgOiBFbnYudCAtPiAnYVxuICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICA7IGV4dHJhX2RvYyA6IHN0cmluZyBvcHRpb24gTGF6eS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHN0cmluZyAtPiAnYSBzdGF0ZVxuXG4gIGxldCBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzID1cbiAgICB7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgIDsgYWN0aW9uID1cbiAgICAgICAgKGxldCB1cGRhdGUgZW52IGFyZyA9XG4gICAgICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFyZyB3aXRoXG4gICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgZGllIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTLlxcbiVzXCIgbmFtZSBhcmcgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgICAgICB8IE9rIGFyZyAtPlxuICAgICAgICAgICAgIGxldCBlbnYgPSB3cml0ZSBlbnYgYXJnIGluXG4gICAgICAgICAgICAgKG1hdGNoIEFyZ190eXBlLmtleSBhcmdfdHlwZSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBlbnZcbiAgICAgICAgICAgICAgfCBTb21lIGtleSAtPiBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOmFyZylcbiAgICAgICAgIGluXG4gICAgICAgICBBcmcgKHVwZGF0ZSwgQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUpKVxuICAgIDsgZXh0cmFfZG9jID0gQXJnX3R5cGUuZXh0cmFfZG9jIGFyZ190eXBlXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYXBfZmxhZyB0IH5mIGlucHV0ID1cbiAgICBsZXQgeyBhY3Rpb247IHJlYWQ7IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH0gPSB0IGlucHV0IGluXG4gICAgeyBhY3Rpb247IHJlYWQgPSAoZnVuIGVudiAtPiBmIChyZWFkIGVudikpOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9XG4gIDs7XG5cbiAgbGV0IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnID1cbiAgICBFbnYudXBkYXRlIGVudiBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYXJnXG4gICAgICB8IFNvbWUgXyAtPiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKCkpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkX3ZhbHVlID9kZWZhdWx0IGFyZ190eXBlIG5hbWUgbnVtX29jY3VycmVuY2VzID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICB8IE5vbmUgLT4gZGllIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUgKCkpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlc1xuICA7O1xuXG4gIGxldCByZXF1aXJlZCBhcmdfdHlwZSBuYW1lID0gcmVxdWlyZWRfdmFsdWUgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuZXhhY3RseV9vbmNlXG5cbiAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlIG5hbWUgPVxuICAgIHJlcXVpcmVkX3ZhbHVlIH5kZWZhdWx0IGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBvcHRpb25hbCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9IEVudi5maW5kIGVudiBrZXkgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgbm9fYXJnX2dlbmVyYWwgfmtleV92YWx1ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHVuaXRdIGluXG4gICAgbGV0IHJlYWQgZW52ID0gRW52Lm1lbSBlbnYga2V5IGluXG4gICAgbGV0IHdyaXRlIGVudiA9XG4gICAgICBpZiBFbnYubWVtIGVudiBrZXlcbiAgICAgIHRoZW4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpXG4gICAgICBlbHNlIEVudi5zZXQgZW52IH5rZXkgfmRhdGE6KClcbiAgICBpblxuICAgIGxldCBhY3Rpb24gZW52ID1cbiAgICAgIGxldCBlbnYgPVxuICAgICAgICBPcHRpb24uZm9sZCBrZXlfdmFsdWUgfmluaXQ6ZW52IH5mOihmdW4gZW52IChrZXksIHZhbHVlKSAtPlxuICAgICAgICAgIEVudi5zZXRfd2l0aF9kZWZhdWx0IGVudiB+a2V5IH5kYXRhOnZhbHVlKVxuICAgICAgaW5cbiAgICAgIHdyaXRlIGVudlxuICAgIGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiAtPlxuICAgICAgICAgIGxldCBlbnYgPSBhY3Rpb24gZW52IGluXG4gICAgICAgICAgZiAoKTtcbiAgICAgICAgICBlbnZcbiAgICBpblxuICAgIHsgcmVhZFxuICAgIDsgYWN0aW9uID0gTm9fYXJnIGFjdGlvblxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmcgbmFtZSA9IG5vX2FyZ19nZW5lcmFsIG5hbWUgfmtleV92YWx1ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuXG4gIGxldCBub19hcmdfcmVnaXN0ZXIgfmtleSB+dmFsdWUgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWwgbmFtZSB+a2V5X3ZhbHVlOihTb21lIChrZXksIHZhbHVlKSkgfmRlcHJlY2F0ZWRfaG9vazpOb25lXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19zb21lIHZhbHVlID1cbiAgICBtYXBfZmxhZyBub19hcmcgfmY6KGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gU29tZSB2YWx1ZVxuICAgICAgfCBmYWxzZSAtPiBOb25lKVxuICA7O1xuXG4gIGxldCBsaXN0ZWQgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpbXSB+bmFtZSBbJXNleHBfb2Y6IF8gbGlzdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPSBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSBFbnYuV2l0aF9kZWZhdWx0LmNoYW5nZSBlbnYga2V5IH5mOihmdW4gbGlzdCAtPiBhcmcgOjogbGlzdCkgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmFueVxuICA7O1xuXG4gIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPVxuICAgICAgRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OkZxdWV1ZS5lbXB0eSB+bmFtZSBbJXNleHBfb2Y6IF8gRnF1ZXVlLnRdXG4gICAgaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRnF1ZXVlLnRvX2xpc3QgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSB3aXRoXG4gICAgICB8IGZpcnN0IDo6IHJlc3QgLT4gZmlyc3QsIHJlc3RcbiAgICAgIHwgW10gLT4gZGllIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUgKClcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID1cbiAgICAgIEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBxIC0+IEZxdWV1ZS5lbnF1ZXVlIHEgYXJnKVxuICAgIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlXG4gIDs7XG5cbiAgbGV0W0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDddIFVzZSBbb25lX29yX21vcmVfYXNfcGFpcl0gb3IgW29uZV9vcl9tb3JlX2FzX2xpc3RdXCJdIG9uZV9vcl9tb3JlXG4gICAgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCBhcmdfdHlwZSA9XG4gICAgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSB8PiBtYXBfZmxhZyB+ZjooZnVuICh4LCB4cykgLT4geCA6OiB4cylcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgYWN0aW9uIGVudiBjbWRfbGluZSA9IEVudi5zZXQgZW52IH5rZXkgfmRhdGE6Y21kX2xpbmUgaW5cbiAgICBsZXQgcmVhZCBlbnYgPSBFbnYuZmluZCBlbnYga2V5IGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiB4IC0+XG4gICAgICAgICAgZiB4O1xuICAgICAgICAgIGFjdGlvbiBlbnYgeFxuICAgIGluXG4gICAgeyBhY3Rpb24gPSBSZXN0IGFjdGlvblxuICAgIDsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmdfYWJvcnQgfmV4aXQgX25hbWUgPVxuICAgIHsgYWN0aW9uID0gTm9fYXJnIChmdW4gXyAtPiBuZXZlcl9yZXR1cm5zIChleGl0ICgpKSlcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IHJlYWQgPSAoZnVuIF8gLT4gKCkpXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSBuYW1lID0gZXNjYXBlX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vazpOb25lIG5hbWVcblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBub19hcmcgfmhvb2sgbmFtZSA9XG4gICAgICBub19hcmdfZ2VuZXJhbCB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spIH5rZXlfdmFsdWU6Tm9uZSBuYW1lXG4gICAgOztcblxuICAgIGxldCBlc2NhcGUgfmhvb2sgPSBlc2NhcGVfZ2VuZXJhbCB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQYXRoIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGNyZWF0ZSA6IHBhdGhfdG9fZXhlOnN0cmluZyAtPiB0XG4gIHZhbCBvZl9wYXJ0cyA6IHN0cmluZyBsaXN0IC0+IHRcbiAgdmFsIGFwcGVuZCA6IHQgLT4gc3ViY29tbWFuZDpzdHJpbmcgLT4gdFxuICB2YWwgcmVwbGFjZV9maXJzdCA6IHQgLT4gZnJvbTpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB0XG4gIHZhbCBwYXJ0cyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHBhcnRzX2V4ZV9iYXNlbmFtZSA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfZG90cyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBwb3BfaGVscCA6IHQgLT4gdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3RcblxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgY3JlYXRlIH5wYXRoX3RvX2V4ZSA9IFsgcGF0aF90b19leGUgXVxuICBsZXQgb2ZfcGFydHMgcGFydHMgPSBMaXN0LnJldiBwYXJ0c1xuICBsZXQgYXBwZW5kIHQgfnN1YmNvbW1hbmQgPSBzdWJjb21tYW5kIDo6IHRcbiAgbGV0IHBhcnRzID0gTGlzdC5yZXZcblxuICBsZXQgcGFydHNfZXhlX2Jhc2VuYW1lIHQgPVxuICAgIG1hdGNoIExpc3QucmV2IHQgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IGhkIDo6IHRsIC0+IEZpbGVuYW1lLmJhc2VuYW1lIGhkIDo6IHRsXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gdW53b3JkcyAocGFydHNfZXhlX2Jhc2VuYW1lIHQpXG4gIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aFxuXG4gIGxldCByZXBsYWNlX2ZpcnN0IHQgfmZyb20gfnRvXyA9XG4gICAgbGV0IHJlYyBhdXggcGFydHMgfmFjYyB+ZnJvbSB+dG9fID1cbiAgICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICAgIHwgW10gLT4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIFN0cmluZy4oID0gKSBoZCBmcm9tXG4gICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIHRsICh0b18gOjogYWNjKVxuICAgICAgICBlbHNlIGF1eCB0bCB+YWNjOihoZCA6OiBhY2MpIH5mcm9tIH50b19cbiAgICBpblxuICAgIGF1eCAocGFydHMgdCkgfmFjYzpbXSB+ZnJvbSB+dG9fXG4gIDs7XG5cbiAgbGV0IHBvcF9oZWxwID0gZnVuY3Rpb25cbiAgICB8IFwiaGVscFwiIDo6IHQgLT4gdFxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2RvdHMgdCA9XG4gICAgKG1hdGNoIHQgd2l0aFxuICAgICB8IFtdIC0+IFtdXG4gICAgIHwgbGFzdCA6OiBpbml0IC0+IGxhc3QgOjogTGlzdC5tYXAgaW5pdCB+ZjooRm4uY29uc3QgXCIuXCIpKVxuICAgIHw+IHRvX3N0cmluZ1xuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmVuZFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgOiBzaWdcbiAgICB0eXBlIHQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCBvbmUgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCBtYW55IDogdCAtPiB0XG4gICAgdmFsIG1heWJlIDogdCAtPiB0XG4gICAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG4gICAgdmFsIGFkX2hvYyA6IHVzYWdlOnN0cmluZyAtPiB0XG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBuYW1lcyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuXG4gICAgbGV0IGludmFyaWFudCA9IFNoYXBlLkFub25zLkdyYW1tYXIuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU2hhcGUuQW5vbnMuR3JhbW1hci51c2FnZVxuXG4gICAgbGV0IHJlYyBpc19maXhlZF9hcml0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gdHJ1ZVxuICAgICAgfCBPbmUgXyAtPiB0cnVlXG4gICAgICB8IE1hbnkgXyAtPiBmYWxzZVxuICAgICAgfCBNYXliZSBfIC0+IGZhbHNlXG4gICAgICB8IEFkX2hvYyBfIC0+IGZhbHNlXG4gICAgICB8IENvbmNhdCB0cyAtPlxuICAgICAgICAobWF0Y2ggTGlzdC5yZXYgdHMgd2l0aFxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgIHwgbGFzdCA6OiBvdGhlcnMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgb3RoZXJzIH5mOmlzX2ZpeGVkX2FyaXR5KTtcbiAgICAgICAgICAgaXNfZml4ZWRfYXJpdHkgbGFzdClcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBuYW1lcyA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gW11cbiAgICAgIHwgT25lIHMgLT4gWyBzIF1cbiAgICAgIHwgTWFueSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgTWF5YmUgdCAtPiBuYW1lcyB0XG4gICAgICB8IEFkX2hvYyBzIC0+IFsgcyBdXG4gICAgICB8IENvbmNhdCB0cyAtPiBMaXN0LmNvbmNhdF9tYXAgdHMgfmY6bmFtZXNcbiAgICA7O1xuXG4gICAgbGV0IHplcm8gPSBaZXJvXG4gICAgbGV0IG9uZSBuYW1lID0gT25lIG5hbWVcblxuICAgIGxldCBtYW55ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT5cbiAgICAgICAgaWYgbm90IChpc19maXhlZF9hcml0eSB0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIml0ZXJhdGlvbiBvZiB2YXJpYWJsZS1sZW5ndGggZ3JhbW1hcnMgc3VjaCBhcyAlcyBpcyBkaXNhbGxvd2VkXCJcbiAgICAgICAgICAgICh1c2FnZSB0KVxuICAgICAgICAgICAgKCk7XG4gICAgICAgIE1hbnkgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPiBNYXliZSB0XG4gICAgOztcblxuICAgIGxldCBjb25jYXQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBaZXJvXG4gICAgICB8IGNhciA6OiBjZHIgLT5cbiAgICAgICAgbGV0IGNhciwgY2RyID1cbiAgICAgICAgICBMaXN0LmZvbGQgY2RyIH5pbml0OihjYXIsIFtdKSB+ZjooZnVuICh0MSwgYWNjKSB0MiAtPlxuICAgICAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgICAgIHwgWmVybywgdCB8IHQsIFplcm8gLT4gdCwgYWNjXG4gICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZml4ZWRfYXJpdHkgdDFcbiAgICAgICAgICAgICAgdGhlbiB0MiwgdDEgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgICAgICAgIFwidGhlIGdyYW1tYXIgJXMgZm9yIGFub255bW91cyBhcmd1bWVudHMgaXMgbm90IHN1cHBvcnRlZCBiZWNhdXNlIFxcXG4gICAgICAgICAgICAgICAgICAgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IGZvciBhcmd1bWVudHMgKCVzKSBmb2xsb3dpbmcgYSB2YXJpYWJsZSBcXFxuICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgKCVzKS4gIFN1cHBvcnRpbmcgc3VjaCBncmFtbWFycyB3b3VsZCBcXFxuICAgICAgICAgICAgICAgICAgIGNvbXBsaWNhdGUgdGhlIGltcGxlbWVudGF0aW9uIHNpZ25pZmljYW50bHkuXCJcbiAgICAgICAgICAgICAgICAgICh1c2FnZSAoQ29uY2F0IChMaXN0LnJldiAodDIgOjogdDEgOjogYWNjKSkpKVxuICAgICAgICAgICAgICAgICAgKHVzYWdlIHQyKVxuICAgICAgICAgICAgICAgICAgKHVzYWdlIHQxKVxuICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBjZHIgd2l0aFxuICAgICAgICAgfCBbXSAtPiBjYXJcbiAgICAgICAgIHwgXyA6OiBfIC0+IENvbmNhdCAoTGlzdC5yZXYgKGNhciA6OiBjZHIpKSlcbiAgICA7O1xuXG4gICAgbGV0IGFkX2hvYyB+dXNhZ2UgPSBBZF9ob2MgdXNhZ2VcbiAgZW5kXG5cbiAgbW9kdWxlIFBhcnNlciA6IHNpZ1xuICAgIHR5cGUgKydhIHRcblxuICAgIHZhbCBmcm9tX2VudiA6IChFbnYudCAtPiAnYSkgLT4gJ2EgdFxuICAgIHZhbCBvbmUgOiBuYW1lOnN0cmluZyAtPiAnYSBBcmdfdHlwZS50IC0+ICdhIHRcbiAgICB2YWwgbWF5YmUgOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgdmFsIHNlcXVlbmNlIDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB2YWwgc3RvcF9wYXJzaW5nIDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbmFsX3ZhbHVlIDogJ2EgdCAtPiBFbnYudCAtPiAnYVxuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0IDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyAoKiBJZiBlbWFjcyBoaWdobGlnaHRzIFtwYXJzZXJdIGFzIGlmIGl0IHdlcmUgYSBrZXl3b3JkLCB0aGF0J3Mgb25seSBiZWNhdXNlXG4gICAgICAgICAgICAgW3BhcnNlcl0gd2FzIGEga2V5d29yZCBpbiBjYW1scDQuIFtwYXJzZXJdIGlzIGEgcmVndWxhciBuYW1lIGluIE9DYW1sLiAqKVxuICAgICAgICAgIHBhcnNlciA6ICdhIHRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdmFsIGNvbnN1bWUgOiAnYSB0IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+ICdhIENvbnN1bWVfcmVzdWx0LnRcbiAgICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IG5ldmVyX3JldHVybnNcblxuICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCAoIDwqPiApIDogKCdhIC0+ICdiKSB0IC0+ICdhIHQgLT4gJ2IgdFxuICAgICAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuICAgIGVuZFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBEb25lIG9mIChFbnYudCAtPiAnYSlcbiAgICAgIHwgTW9yZSBvZiAnYSBtb3JlXG4gICAgICAoKiBBIFtUZXN0XSB3aWxsIChnZW5lcmFsbHkpIHJldHVybiBhIFtEb25lIF9dIHZhbHVlIGlmIHRoZXJlIGlzIG5vIG1vcmUgaW5wdXQgYW5kXG4gICAgICAgICBhIFtNb3JlXSBwYXJzZXIgdG8gdXNlIGlmIHRoZXJlIGlzIGFueSBtb3JlIGlucHV0LiAqKVxuICAgICAgfCBUZXN0IG9mIChtb3JlOmJvb2wgLT4gJ2EgdClcbiAgICAgICgqIElmIHdlJ3JlIG9ubHkgY29tcGxldGluZywgd2UgY2FuJ3QgcHVsbCB2YWx1ZXMgb3V0LCBidXQgd2UgY2FuIHN0aWxsIHN0ZXAgdGhyb3VnaFxuICAgICAgICAgW3RdcyAod2hpY2ggbWF5IGhhdmUgY29tcGxldGlvbiBzZXQgdXApLiAqKVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIG9mIHBhY2tlZCBsaXN0XG4gICAgICB8IFN0b3BfcGFyc2luZyBvZiAnYSB0XG5cbiAgICBhbmQgJ2EgbW9yZSA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgcGFyc2UgOiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBwYXJzZV9yZXN1bHRcbiAgICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgICAgfVxuXG4gICAgYW5kIHBhY2tlZCA9IFBhY2tlZCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgICBhbmQgJ2EgcGFyc2VfcmVzdWx0ID1cbiAgICAgIHsgcGFyc2VyIDogJ2EgdFxuICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgIH1cblxuICAgIGxldCByZXR1cm4gYSA9IERvbmUgKGZ1biBfIC0+IGEpXG4gICAgbGV0IGZyb21fZW52IGYgPSBEb25lIGZcbiAgICBsZXQgc3RvcF9wYXJzaW5nIHQgPSBTdG9wX3BhcnNpbmcgdFxuXG4gICAgbGV0IHBhY2tfZm9yX2NvbXBsZXRpb24gPSBmdW5jdGlvblxuICAgICAgfCBEb25lIF8gLT4gW10gKCogd29uJ3QgY29tcGxldGUgb3IgY29uc3VtZSBhbnl0aGluZyAqKVxuICAgICAgfCAoTW9yZSBfIHwgVGVzdCBfIHwgU3RvcF9wYXJzaW5nIF8pIGFzIHggLT4gWyBQYWNrZWQgeCBdXG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gcHMgLT4gcHNcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX21vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgfSB+ZiA9XG4gICAgICBsZXQgcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICB7IHBhcnNlciA9IGYgcGFyc2VyOyB1cGRhdGVfZW52IH1cbiAgICAgIGluXG4gICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlYyAoIDwqPiApIHRfbGVmdCB0X3JpZ2h0ID1cbiAgICAgIG1hdGNoIHRfbGVmdCwgdF9yaWdodCB3aXRoXG4gICAgICAoKiBbRG9uZV0gKilcbiAgICAgIHwgRG9uZSBmLCBEb25lIHggLT4gRG9uZSAoZnVuIGVudiAtPiBmIGVudiAoeCBlbnYpKVxuICAgICAgKCogbmV4dCBzdGVwIFtNb3JlXSAqKVxuICAgICAgfCBNb3JlIG1vcmUsIF8gLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdGwgLT4gdGwgPCo+IHRfcmlnaHQpXG4gICAgICB8IERvbmUgXywgTW9yZSBtb3JlIC0+IHBhcnNlX21vcmUgbW9yZSB+ZjooZnVuIHRyIC0+IHRfbGVmdCA8Kj4gdHIpXG4gICAgICAoKiBuZXh0IHN0ZXAgW09ubHlfZm9yX2NvbXBsZXRpb25dICopXG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gXywgXyB8IERvbmUgXywgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgIE9ubHlfZm9yX2NvbXBsZXRpb24gKHBhY2tfZm9yX2NvbXBsZXRpb24gdF9sZWZ0IEAgcGFja19mb3JfY29tcGxldGlvbiB0X3JpZ2h0KVxuICAgICAgKCogbmV4dCBzdGVwIFtTdG9wX3BhcnNpbmddICopXG4gICAgICB8IFN0b3BfcGFyc2luZyB0bCwgdHIgfCAoRG9uZSBfIGFzIHRsKSwgU3RvcF9wYXJzaW5nIHRyIC0+IFN0b3BfcGFyc2luZyAodGwgPCo+IHRyKVxuICAgICAgKCogbmV4dCBzdGVwIFtUZXN0XSAqKVxuICAgICAgfCBUZXN0IHRlc3QsIF8gLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRlc3Qgfm1vcmUgPCo+IHRfcmlnaHQpXG4gICAgICB8IERvbmUgXywgVGVzdCB0ZXN0IC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0X2xlZnQgPCo+IHRlc3Qgfm1vcmUpXG4gICAgOztcblxuICAgIGxldCAoID4+fCApIHQgZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgICBsZXQgb25lX21vcmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgbGV0IHBhcnNlIGFub24gfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYW5vbiB3aXRoXG4gICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgaWYgZm9yX2NvbXBsZXRpb25cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiB3ZSBkb24ndCAqcmVhbGx5KiBjYXJlIGFib3V0IHRoaXMgdmFsdWUsIHNvIGp1c3QgcHV0IGluIGEgZHVtbXkgdmFsdWUgc29cbiAgICAgICAgICAgICAgIGNvbXBsZXRpb24gY2FuIGNvbnRpbnVlICopXG4gICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICAgZWxzZSBkaWUgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVNcXG4lc1wiIG5hbWUgYW5vbiAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICAgIHwgT2sgdiAtPlxuICAgICAgICAgIHsgcGFyc2VyID0gcmV0dXJuIHZcbiAgICAgICAgICA7IHVwZGF0ZV9lbnYgPVxuICAgICAgICAgICAgICAoZnVuIGVudiAtPlxuICAgICAgICAgICAgICAgICBPcHRpb24uZm9sZCAoQXJnX3R5cGUua2V5IGFyZ190eXBlKSB+aW5pdDplbnYgfmY6KGZ1biBlbnYga2V5IC0+XG4gICAgICAgICAgICAgICAgICAgRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTp2KSlcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSA9IEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uZSB+bmFtZSBhcmdfdHlwZSA9XG4gICAgICBUZXN0XG4gICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgaWYgbW9yZVxuICAgICAgICAgICB0aGVuIG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlXG4gICAgICAgICAgIGVsc2UgZGllIFwibWlzc2luZyBhbm9ueW1vdXMgYXJndW1lbnQ6ICVzXCIgbmFtZSAoKSlcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlIHQgPSBUZXN0IChmdW4gfm1vcmUgLT4gaWYgbW9yZSB0aGVuIHQgPj58IGZ1biBhIC0+IFNvbWUgYSBlbHNlIHJldHVybiBOb25lKVxuXG4gICAgbGV0IHNlcXVlbmNlIHQgPVxuICAgICAgbGV0IHJlYyBsb29wID1cbiAgICAgICAgVGVzdFxuICAgICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgICBpZiBtb3JlIHRoZW4gcmV0dXJuIChmdW4gdiBhY2MgLT4gdiA6OiBhY2MpIDwqPiB0IDwqPiBsb29wIGVsc2UgcmV0dXJuIFtdKVxuICAgICAgaW5cbiAgICAgIGxvb3BcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5hbF92YWx1ZSB0IGVudiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRG9uZSBhIC0+IGEgZW52XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IGZpbmFsX3ZhbHVlIHQgZW52XG4gICAgICB8IFRlc3QgZiAtPiBmaW5hbF92YWx1ZSAoZiB+bW9yZTpmYWxzZSkgZW52XG4gICAgICB8IE1vcmUgeyBuYW1lOyBfIH0gLT4gZGllIFwibWlzc2luZyBhbm9ueW1vdXMgYXJndW1lbnQ6ICVzXCIgbmFtZSAoKVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgZmFpbHdpdGggXCJCVUc6IGFza2VkIGZvciBmaW5hbCB2YWx1ZSB3aGVuIGRvaW5nIGNvbXBsZXRpb25cIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbGV0IHJlYyBjb25zdW1lIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gYSBDb25zdW1lX3Jlc3VsdC50ID1cbiAgICAgIGZ1biB0IGFyZyB+Zm9yX2NvbXBsZXRpb24gLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIF8gLT4gZGllIFwidG9vIG1hbnkgYW5vbnltb3VzIGFyZ3VtZW50c1wiICgpXG4gICAgICB8IFRlc3QgZiAtPiBjb25zdW1lIChmIH5tb3JlOnRydWUpIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgIHwgTW9yZSB7IHBhcnNlOyBfIH0gLT5cbiAgICAgICAgbGV0IHsgcGFyc2VyOyB1cGRhdGVfZW52IH0gPSBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uIGluXG4gICAgICAgIHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgfVxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiB7IChjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvbikgd2l0aCBwYXJzZV9mbGFncyA9IGZhbHNlIH1cbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwYWNrZWQgLT5cbiAgICAgICAgKG1hdGNoIHBhY2tlZCB3aXRoXG4gICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgfCBQYWNrZWQgdCA6OiByZXN0IC0+XG4gICAgICAgICAgIGxldCAoeyB1cGRhdGVfZW52OyBwYXJzZV9mbGFnczsgcGFyc2VyIH0gOiBfIENvbnN1bWVfcmVzdWx0LnQpID1cbiAgICAgICAgICAgICBjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHVwZGF0ZV9lbnZcbiAgICAgICAgICAgOyBwYXJzZV9mbGFnc1xuICAgICAgICAgICA7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gKHBhY2tfZm9yX2NvbXBsZXRpb24gcGFyc2VyIEAgcmVzdClcbiAgICAgICAgICAgfSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb21wbGV0ZSA6IHR5cGUgYS4gYSB0IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IG5ldmVyX3JldHVybnMgPVxuICAgICAgZnVuIHQgZW52IH5wYXJ0IC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IERvbmUgXyAtPiBleGl0IDBcbiAgICAgICAgfCBUZXN0IGYgLT4gY29tcGxldGUgKGYgfm1vcmU6dHJ1ZSkgZW52IH5wYXJ0XG4gICAgICAgIHwgTW9yZSB7IGNvbXBsZXRlOyBfIH0gLT4gQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wbGV0ZSBlbnYgfnBhcnRcbiAgICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBjb21wbGV0ZSB0IGVudiB+cGFydFxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gdCAtPlxuICAgICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBleGl0IDBcbiAgICAgICAgICAgfCBQYWNrZWQgdCA6OiBfIC0+IGNvbXBsZXRlIHQgZW52IH5wYXJ0KVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgZW5kXG4gIGVuZFxuXG4gIG9wZW4gUGFyc2VyLkZvcl9vcGVuaW5nXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHAgOiAnYSBQYXJzZXIudFxuICAgIDsgZ3JhbW1hciA6IEdyYW1tYXIudFxuICAgIH1cblxuICBsZXQgdDIgdDEgdDIgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIC0+IGExLCBhMikgPCo+IHQxLnAgPCo+IHQyLnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgdDMgdDEgdDIgdDMgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIGEzIC0+IGExLCBhMiwgYTMpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQ0IHQxIHQyIHQzIHQ0ID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyBhNCAtPiBhMSwgYTIsIGEzLCBhNCkgPCo+IHQxLnAgPCo+IHQyLnAgPCo+IHQzLnAgPCo+IHQ0LnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXI7IHQzLmdyYW1tYXI7IHQ0LmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9ybWFsaXplIHN0ciA9XG4gICAgKCogVmVyaWZ5IHRoZSBzdHJpbmcgaXMgbm90IGVtcHR5IG9yIHN1cnJvdW5kZWQgYnkgd2hpdGVzcGFjZSAqKVxuICAgIGxldCBzdHJsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGlmIHN0cmxlbiA9IDAgdGhlbiBmYWlsd2l0aCBcIkVtcHR5IGFub255bW91cyBhcmd1bWVudCBuYW1lIHByb3ZpZGVkXCI7XG4gICAgaWYgU3RyaW5nLiggPD4gKSAoU3RyaW5nLnN0cmlwIHN0cikgc3RyXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJhcmd1bWVudCBuYW1lICVTIGhhcyBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlXCIgc3RyICgpO1xuICAgICgqIElmIHRoZSBzdHJpbmcgY29udGFpbnMgc3BlY2lhbCBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBkb24ndCBkbyBhbnl0aGluZyAqKVxuICAgIGxldCBoYXNfc3BlY2lhbF9jaGFycyA9XG4gICAgICBsZXQgc3BlY2lhbF9jaGFycyA9IENoYXIuU2V0Lm9mX2xpc3QgWyAnPCc7ICc+JzsgJ1snOyAnXSc7ICcoJzsgJyknOyAneyc7ICd9JyBdIGluXG4gICAgICBTdHJpbmcuZXhpc3RzIHN0ciB+ZjooU2V0Lm1lbSBzcGVjaWFsX2NoYXJzKVxuICAgIGluXG4gICAgaWYgaGFzX3NwZWNpYWxfY2hhcnMgdGhlbiBzdHIgZWxzZSBTdHJpbmcudXBwZXJjYXNlIHN0clxuICA7O1xuXG4gIGxldCAoICU6ICkgbmFtZSBhcmdfdHlwZSA9XG4gICAgbGV0IG5hbWUgPSBub3JtYWxpemUgbmFtZSBpblxuICAgIHsgcCA9IFBhcnNlci5vbmUgfm5hbWUgYXJnX3R5cGU7IGdyYW1tYXIgPSBHcmFtbWFyLm9uZSBuYW1lIH1cbiAgOztcblxuICBsZXQgbWFwX2Fub25zIHQgfmYgPSB7IHAgPSB0LnAgPj58IGY7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuICBsZXQgbWF5YmUgdCA9IHsgcCA9IFBhcnNlci5tYXliZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1heWJlIHQuZ3JhbW1hciB9XG5cbiAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCBkZWZhdWx0IHQgPVxuICAgIGxldCB0ID0gbWF5YmUgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gdiAtPiBPcHRpb24udmFsdWUgfmRlZmF1bHQgdikgfVxuICA7O1xuXG4gIGxldCBzZXF1ZW5jZSB0ID0geyBwID0gUGFyc2VyLnNlcXVlbmNlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWFueSB0LmdyYW1tYXIgfVxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCA9IHQyIHQgKHNlcXVlbmNlIHQpXG5cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0IHQgPVxuICAgIGxldCB0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKSB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSB0ID0geyBwID0gUGFyc2VyLnN0b3BfcGFyc2luZyB0LnA7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IGFkX2hvYyB+dXNhZ2VfYXJnID1cbiAgICAgIHsgcCA9XG4gICAgICAgICAgUGFyc2VyLnNlcXVlbmNlXG4gICAgICAgICAgICAoUGFyc2VyLm9uZSB+bmFtZTpcIldJTEwgTkVWRVIgQkUgUFJJTlRFRFwiIEFyZ190eXBlLkV4cG9ydC5zdHJpbmcpXG4gICAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmFkX2hvYyB+dXNhZ2U6dXNhZ2VfYXJnXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIENtZGxpbmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiBzdHJpbmcgKiB0XG4gICAgfCBDb21wbGV0ZSBvZiBzdHJpbmdcbiAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICBsZXQgb2ZfbGlzdCBhcmdzID0gTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6TmlsIH5mOihmdW4gYXJnIGFyZ3MgLT4gQ29ucyAoYXJnLCBhcmdzKSlcblxuICBsZXQgcmVjIHRvX2xpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh4LCB4cykgLT4geCA6OiB0b19saXN0IHhzXG4gICAgfCBDb21wbGV0ZSB4IC0+IFsgeCBdXG4gIDs7XG5cbiAgbGV0IHJlYyBlbmRzX2luX2NvbXBsZXRlID0gZnVuY3Rpb25cbiAgICB8IENvbXBsZXRlIF8gLT4gdHJ1ZVxuICAgIHwgTmlsIC0+IGZhbHNlXG4gICAgfCBDb25zIChfLCBhcmdzKSAtPiBlbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgOztcblxuICBsZXQgZXh0ZW5kIHQgfmV4dGVuZCB+cGF0aCA9XG4gICAgaWYgZW5kc19pbl9jb21wbGV0ZSB0XG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcGF0aF9saXN0ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdIChMaXN0LnRsIChQYXRoLnBhcnRzIHBhdGgpKSBpblxuICAgICAgb2ZfbGlzdCAodG9fbGlzdCB0IEAgZXh0ZW5kIHBhdGhfbGlzdCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gU2hhcGUuUHJpdmF0ZS5LZXlfdHlwZVxuXG5sZXQgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGZsYWdfb3Jfc3ViY29tbWFuZCA9XG4gIGlmIFN0cmluZy5leGlzdHMgZmxhZ19vcl9zdWJjb21tYW5kIH5mOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJ18nKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIiVzICVzIGNvbnRhaW5zIGFuIHVuZGVyc2NvcmUuIFVzZSBhIGRhc2ggaW5zdGVhZC5cIlxuICAgICAgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSlcbiAgICAgIGZsYWdfb3Jfc3ViY29tbWFuZFxuICAgICAgKClcbjs7XG5cbmxldCBub3JtYWxpemUga2V5X3R5cGUga2V5ID1cbiAgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGtleTtcbiAgbWF0Y2gga2V5X3R5cGUgd2l0aFxuICB8IEtleV90eXBlLkZsYWcgLT5cbiAgICBpZiBTdHJpbmcuZXF1YWwga2V5IFwiLVwiIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmV4aXN0cyBrZXkgfmY6Q2hhci5pc193aGl0ZXNwYWNlXG4gICAgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lIChjb250YWlucyB3aGl0ZXNwYWNlKTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiLVwiIGtleSB0aGVuIGtleSBlbHNlIFwiLVwiIF4ga2V5XG4gIHwgS2V5X3R5cGUuU3ViY29tbWFuZCAtPiBTdHJpbmcubG93ZXJjYXNlIGtleVxuOztcblxubGV0IGxvb2t1cF9leHBhbmQgPSBTaGFwZS5Qcml2YXRlLmxvb2t1cF9leHBhbmRcblxubGV0IGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIG1hcCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgYWxpc3QgPVxuICAgIExpc3QuY29uY2F0X21hcCAoU3RyaW5nLk1hcC5kYXRhIG1hcCkgfmY6KGZ1biBmbGFnIC0+XG4gICAgICBsZXQgeyBGbGFnLkludGVybmFsLm5hbWVcbiAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgICAgOyBhY3Rpb24gPSBfXG4gICAgICAgICAgOyBkb2MgPSBfXG4gICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgOyBuYW1lX21hdGNoaW5nXG4gICAgICAgICAgfVxuICAgICAgICA9XG4gICAgICAgIGZsYWdcbiAgICAgIGluXG4gICAgICBsZXQgZGF0YSA9IGZsYWcsIG5hbWVfbWF0Y2hpbmcgaW5cbiAgICAgIGxldCBhbGlhc2VzID0gYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgQCBhbGlhc2VzIGluXG4gICAgICAobmFtZSwgZGF0YSkgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIGFsaWFzIC0+IGFsaWFzLCBkYXRhKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5maW5kX2FfZHVwIGFsaXN0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB3aXRoXG4gIHwgTm9uZSAtPiBsb29rdXBfZXhwYW5kIGFsaXN0IHByZWZpeCBrZXlfdHlwZVxuICB8IFNvbWUgKGZsYWcsIF8pIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuOztcblxubW9kdWxlIEJhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBmbGFncyA6IEZsYWcuSW50ZXJuYWwudCBTdHJpbmcuTWFwLnRcbiAgICA7XG4gICAgICBhbm9ucyA6IHVuaXQgLT4gKFsgYFBhcnNlX2FyZ3MgXSAtPiBbIGBSdW5fbWFpbiBdIC0+IHVuaXQpIEFub25zLlBhcnNlci50XG4gICAgOyB1c2FnZSA6IEFub25zLkdyYW1tYXIudFxuICAgIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBzdWJjb21tYW5kX2NtcF9mc3QgKGEsIF8pIChjLCBfKSA9IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBjXG5cbiAgICBsZXQgZmxhZ3NfaGVscCA/KGRpc3BsYXlfaGVscF9mbGFncyA9IHRydWUpIHQgPVxuICAgICAgbGV0IGZsYWdzID0gU3RyaW5nLk1hcC5kYXRhIHQuZmxhZ3MgaW5cbiAgICAgIGxldCBmbGFncyA9XG4gICAgICAgIGlmIGRpc3BsYXlfaGVscF9mbGFnc1xuICAgICAgICB0aGVuIGZsYWdzXG4gICAgICAgIGVsc2UgTGlzdC5maWx0ZXIgZmxhZ3MgfmY6KGZ1biBmIC0+IFN0cmluZy4oIDw+ICkgZi5uYW1lIFwiLWhlbHBcIilcbiAgICAgIGluXG4gICAgICBMaXN0LmNvbmNhdF9tYXAgfmY6RmxhZy5JbnRlcm5hbC5EZXByZWNhdGVkLmhlbHAgZmxhZ3NcbiAgICA7O1xuICBlbmRcblxuICBsZXQgZm9ybWF0dGVkX2ZsYWdzIHQgPVxuICAgIFN0cmluZy5NYXAuZGF0YSB0LmZsYWdzXG4gICAgfD4gTGlzdC5tYXAgfmY6RmxhZy5JbnRlcm5hbC5hbGlnblxuICAgICgqIHRoaXMgc29ydCBwdXRzIG9wdGlvbmFsIGZsYWdzIGFmdGVyIHJlcXVpcmVkIG9uZXMgKilcbiAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biBhIGIgLT4gU3RyaW5nLmNvbXBhcmUgYS5uYW1lIGIubmFtZSlcbiAgICB8PiBTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS5zb3J0XG4gIDs7XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5CYXNlX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIHQucmVhZG1lIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSlcbiAgICA7IGFub25zID0gR3JhbW1hciB0LnVzYWdlXG4gICAgOyBmbGFncyA9IGZvcm1hdHRlZF9mbGFncyB0XG4gICAgfVxuICA7O1xuXG4gIGxldCBwYXRoX2tleSA9IEVudi5rZXlfY3JlYXRlIFwicGF0aFwiXG4gIGxldCBhcmdzX2tleSA9IEVudi5rZXlfY3JlYXRlIFwiYXJnc1wiXG4gIGxldCBoZWxwX2tleSA9IEVudi5rZXlfY3JlYXRlIFwiaGVscFwiXG5cbiAgbGV0IGluZGVudF9ieV8yIHN0ciA9XG4gICAgU3RyaW5nLnNwbGl0IH5vbjonXFxuJyBzdHJcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gXCIgIFwiIF4gbGluZSlcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIlxuICA7O1xuXG4gIGxldCBnZXRfZmxhZ19hbmRfYWN0aW9uIHQgYXJnID1cbiAgICBtYXRjaCBsb29rdXBfZXhwYW5kX3dpdGhfYWxpYXNlcyB0LmZsYWdzIGFyZyBGbGFnIHdpdGhcbiAgICB8IEVycm9yIG1zZyAtPiBkaWUgXCIlc1wiIG1zZyAoKVxuICAgIHwgT2sgKGZsYWdfbmFtZSwgZmxhZykgLT4gZmxhZ19uYW1lLCBmbGFnLmFjdGlvblxuICA7O1xuXG4gIGxldCBydW5fZmxhZyB0IGVudiBhcmcgKGFyZ3MgOiBDbWRsaW5lLnQpID1cbiAgICBsZXQgZmxhZywgYWN0aW9uID0gZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyBpblxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBQcmludF9pbmZvX2FuZF9xdWl0IGluZm8gLT5cbiAgICAgIGxldCBjb21wbGV0aW5nID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICAgICgqIElmIHdlJ3JlIGRvaW5nIGNvbXBsZXRpb24sIHZlcnNpb24vaGVscCBpbmZvIGFyZW4ndCB1c2VmdWwgY29tcGxldGlvblxuICAgICAgICAgcmVzcG9uc2VzLiAqKVxuICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgdGhlbiBlbnYsIGFyZ3NcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmludF9lbmRsaW5lIChpbmZvIGVudik7XG4gICAgICAgIGV4aXQgMClcbiAgICB8IE5vX2FyZyBmIC0+IGYgZW52LCBhcmdzXG4gICAgfCBBcmcgKGYsIGNvbXApIC0+XG4gICAgICAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgfCBOaWwgLT4gZGllIFwibWlzc2luZyBhcmd1bWVudCBmb3IgZmxhZyAlc1wiIGZsYWcgKClcbiAgICAgICB8IENvbnMgKGFyZywgcmVzdCkgLT5cbiAgICAgICAgIGxldCBlbnYgPVxuICAgICAgICAgICB0cnkgZiBlbnYgYXJnIHdpdGhcbiAgICAgICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIF8gYXMgZSAtPlxuICAgICAgICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSByZXN0IHRoZW4gZW52IGVsc2UgcmFpc2UgZVxuICAgICAgICAgaW5cbiAgICAgICAgIGVudiwgcmVzdFxuICAgICAgIHwgQ29tcGxldGUgcGFydCAtPiBuZXZlcl9yZXR1cm5zIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0KSlcbiAgICB8IFJlc3QgZiAtPlxuICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgdGhlbiBleGl0IDA7XG4gICAgICBmIGVudiAoQ21kbGluZS50b19saXN0IGFyZ3MpLCBOaWxcbiAgOztcblxuICBsZXQgcmVjIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciAoY21kbGluZSA6IENtZGxpbmUudCkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFncyA9XG4gICAgbWF0Y2ggY21kbGluZSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIExpc3QuaXRlciAoU3RyaW5nLk1hcC5kYXRhIHQuZmxhZ3MpIH5mOihmdW4gZmxhZyAtPiBmbGFnLmNoZWNrX2F2YWlsYWJsZSBlbnYpO1xuICAgICAgQW5vbnMuUGFyc2VyLmZpbmFsX3ZhbHVlIHBhcnNlciBlbnZcbiAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgIGlmIHBhcnNlX2ZsYWdzICYmIFN0cmluZy5pc19wcmVmaXggcGFydCB+cHJlZml4OlwiLVwiXG4gICAgICB0aGVuIChcbiAgICAgICAgTGlzdC5pdGVyIChTdHJpbmcuTWFwLmtleXMgdC5mbGFncykgfmY6KGZ1biBuYW1lIC0+XG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6cGFydCB0aGVuIHByaW50X2VuZGxpbmUgbmFtZSk7XG4gICAgICAgIGV4aXQgMClcbiAgICAgIGVsc2UgbmV2ZXJfcmV0dXJucyAoQW5vbnMuUGFyc2VyLmNvbXBsZXRlIHBhcnNlciBlbnYgfnBhcnQpXG4gICAgfCBDb25zIChhcmcsIGFyZ3MpIC0+XG4gICAgICBsZXQgYXJnLCBhcmdzLCBhcmdfaXNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHBhcnNlX2ZsYWdzIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIChtYXRjaCBhcmcsIGFyZ3Mgd2l0aFxuICAgICAgICAgICAoKiB0aGUgJy1hbm9uJyBmbGFnIGlzIGhlcmUgYXMgYW4gZXNjYXBlIGhhdGNoIGluIGNhc2UgeW91IGhhdmUgYW5cbiAgICAgICAgICAgICAgYW5vbnltb3VzIGFyZ3VtZW50IHRoYXQgc3RhcnRzIHdpdGggYSBoeXBoZW4uICopXG4gICAgICAgICAgIHwgXCItYW5vblwiLCBDb25zIChhcmcsIGFyZ3MpIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgKCogc3VwcG9ydCB0aGUgY29tbW9uIFVuaXggY29udmVudGlvbiB3aGVyZSBcIi1cIiBtZWFucyBzdGRpbiAqKVxuICAgICAgICAgICB8IFwiLVwiLCBfIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgfCBfLCBfIC0+IGFyZywgYXJncywgU3RyaW5nLmlzX3ByZWZpeCBhcmcgfnByZWZpeDpcIi1cIilcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYXJnX2lzX2ZsYWcgd2l0aFxuICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgbGV0IGVudiwgYXJncyA9IHJ1bl9mbGFnIHQgZW52IGFyZyBhcmdzIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgYXJncyB+cGFyc2VfZmxhZ3MgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzMSA9IHBhcnNlX2ZsYWdzIGluXG4gICAgICAgICBsZXQgKHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMjsgdXBkYXRlX2VudiB9XG4gICAgICAgICAgICAgIDogXyBBbm9ucy5QYXJzZXIuQ29uc3VtZV9yZXN1bHQudClcbiAgICAgICAgICAgPVxuICAgICAgICAgICBBbm9ucy5QYXJzZXIuY29uc3VtZSBwYXJzZXIgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlbnYgPSB1cGRhdGVfZW52IGVudiBpblxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MxICYmIHBhcnNlX2ZsYWdzMiBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIH5wYXJzZV9mbGFncyBhcmdzIH5mb3JfY29tcGxldGlvbilcbiAgOztcblxuICBsZXQgcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIHdoZW4gZm9yX2NvbXBsZXRpb24gLT4gZXhpdCAwXG4gICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyB9IC0+IGV4aXQgc3RhdHVzXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZXhuX3N0ciA9XG4gICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cgLT4gbXNnXG4gICAgICAgIHwgXyAtPiBTZXhwLnRvX3N0cmluZ19odW0gWyVzZXhwIChleG4gOiBleG4pXVxuICAgICAgaW5cbiAgICAgIGxldCB2ZXJib3NlID0gT3B0aW9uLnZhbHVlIHZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgfmRlZmF1bHQ6dHJ1ZSBpblxuICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgIGlmIHZlcmJvc2VcbiAgICAgICAgdGhlblxuICAgICAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgIH5zZXA6XCJcXG5cXG5cIlxuICAgICAgICAgICAgWyBcIkVycm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lOlwiXG4gICAgICAgICAgICA7IGluZGVudF9ieV8yIGV4bl9zdHJcbiAgICAgICAgICAgIDsgXCJGb3IgdXNhZ2UgaW5mb3JtYXRpb24sIHJ1blwiXG4gICAgICAgICAgICA7IFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiAtaGVscFxcblwiXG4gICAgICAgICAgICBdXG4gICAgICAgIGVsc2UgZXhuX3N0clxuICAgICAgaW5cbiAgICAgIHByZXJyX2VuZGxpbmUgZXJyb3JfbXNnO1xuICAgICAgZXhpdCAxXG4gIDs7XG5cbiAgbGV0IHJ1biB0IGVudiB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzIH5wYXRoIH5hcmdzIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yIH5oZWxwX3RleHQgPVxuICAgIGxldCBmb3JfY29tcGxldGlvbiA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgbGV0IGVudiA9XG4gICAgICBlbnZcbiAgICAgIHw+IEVudi5zZXQgfmtleTpwYXRoX2tleSB+ZGF0YTpwYXRoXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6YXJnc19rZXkgfmRhdGE6KENtZGxpbmUudG9fbGlzdCBhcmdzKVxuICAgICAgfD4gRW52LnNldCB+a2V5OmhlbHBfa2V5IH5kYXRhOmhlbHBfdGV4dFxuICAgIGluXG4gICAgbWF0Y2hcbiAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgIHJ1bl9jbWRsaW5lXG4gICAgICAgICAgdFxuICAgICAgICAgIGVudlxuICAgICAgICAgICh0LmFub25zICgpKVxuICAgICAgICAgIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgIH5wYXJzZV9mbGFnczp0cnVlXG4gICAgICAgICAgYXJnc1xuICAgICAgICAgIGBQYXJzZV9hcmdzKVxuICAgIHdpdGhcbiAgICB8IE9rIHRodW5rIC0+XG4gICAgICB3aGVuX3BhcnNpbmdfc3VjY2VlZHMgKCk7XG4gICAgICB0aHVuayBgUnVuX21haW5cbiAgICB8IEVycm9yIGV4biAtPiBydW5fZXhuIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgOztcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB7IGYgOiB1bml0IC0+ICgnYSAtPiAnYikgQW5vbnMuUGFyc2VyLnRcbiAgICAgIDsgdXNhZ2UgOiB1bml0IC0+IEFub25zLkdyYW1tYXIudFxuICAgICAgOyBmbGFncyA6IHVuaXQgLT4gRmxhZy5JbnRlcm5hbC50IGxpc3RcbiAgICAgIH1cblxuICAgICgqIHRoZSAoaGlzdG9yaWNhbCkgcmVhc29uIHRoYXQgW3BhcmFtXSBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIFt0XSByYXRoZXIgdGhhbiB0aGVcbiAgICAgICBvdGhlciB3YXkgcm91bmQgaXMgdGhhdCB0aGUgZGVsYXllZCBldmFsdWF0aW9uIG1hdHRlcmVkIGZvciBzZXF1ZW5jaW5nIG9mXG4gICAgICAgcmVhZC93cml0ZSBvcGVyYXRpb25zIG9uIHJlZiBjZWxscyBpbiB0aGUgb2xkIHJlcHJlc2VudGF0aW9uIG9mIGZsYWdzICopXG4gICAgdHlwZSAnYSBwYXJhbSA9IHsgcGFyYW0gOiAnbS4gKCdhIC0+ICdtLCAnbSkgdCB9XG5cbiAgICBvcGVuIEFub25zLlBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gICAgbGV0IGFwcCB0MSB0MiB+ZiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiBmIDwqPiB0MS5mICgpIDwqPiB0Mi5mICgpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gdDIuZmxhZ3MgKCkgQCB0MS5mbGFncyAoKSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuY29uY2F0IFsgdDEudXNhZ2UgKCk7IHQyLnVzYWdlICgpIF0pXG4gICAgICB9XG4gICAgOztcblxuICAgICgqIFNvIHNhZC4gIFdlIGNhbid0IGRlZmluZSBbYXBwbHldIGluIHRlcm1zIG9mIFthcHBdIGJlY2F1c2Ugb2YgdGhlIHZhbHVlXG4gICAgICAgcmVzdHJpY3Rpb24uICopXG4gICAgbGV0IGFwcGx5IHBmIHB4ID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9XG4gICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW4gbWYgbXggayAtPiBtZiAoZnVuIGYgLT4gbXggKGZ1biB4IC0+IGsgKGYgeCkpKSlcbiAgICAgICAgICAgICAgICAgPCo+IHBmLnBhcmFtLmYgKClcbiAgICAgICAgICAgICAgICAgPCo+IHB4LnBhcmFtLmYgKCkpXG4gICAgICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gcHgucGFyYW0uZmxhZ3MgKCkgQCBwZi5wYXJhbS5mbGFncyAoKSlcbiAgICAgICAgICA7IHVzYWdlID1cbiAgICAgICAgICAgICAgKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIHBmLnBhcmFtLnVzYWdlICgpOyBweC5wYXJhbS51c2FnZSAoKSBdKVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0ICggKysgKSB0MSB0MiA9IGFwcCB0MSB0MiB+ZjooZnVuIGYxIGYyIHggLT4gZjIgKGYxIHgpKVxuICAgIGxldCAoICs+ICkgdDEgcDIgPSBhcHAgdDEgcDIucGFyYW0gfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPCApIHQxIHAyID0gYXBwIHAyLnBhcmFtIHQxIH5mOihmdW4gZjIgZjEgeCAtPiBmMSAoZjIgeCkpXG5cbiAgICBsZXQgc3RlcCBmID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIGYpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGVtcHR5IDogJ20uICgnbSwgJ20pIHQgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gRm4uaWQpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGNvbnN0IHYgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gKGZ1biBrIC0+IGsgdikpXG4gICAgICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG1hcCBwIH5mID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gcC5wYXJhbS5mICgpID4+fCBmdW4gYyBrIC0+IGMgKGZ1biB2IC0+IGsgKGYgdikpKVxuICAgICAgICAgIDsgZmxhZ3MgPSBwLnBhcmFtLmZsYWdzXG4gICAgICAgICAgOyB1c2FnZSA9IHAucGFyYW0udXNhZ2VcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCB3cmFwIGYgdCA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHQuZiAoKSA+PnwgZnVuIHJ1biBtYWluIC0+IGYgfnJ1biB+bWFpbilcbiAgICAgIDsgZmxhZ3MgPSB0LmZsYWdzXG4gICAgICA7IHVzYWdlID0gdC51c2FnZVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfcGFyYW1zIHBhcmFtcyA9XG4gICAgICBsZXQgdCA9IHBhcmFtcy5wYXJhbSBpblxuICAgICAgeyBmID0gKGZ1biAoKSAtPiB0LmYgKCkgPj58IGZ1biBydW4gbWFpbiAtPiBydW4gRm4uaWQgbWFpbilcbiAgICAgIDsgZmxhZ3MgPSB0LmZsYWdzXG4gICAgICA7IHVzYWdlID0gdC51c2FnZVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgdG9fcGFyYW1zICh0IDogKCdhLCAnYikgdCkgOiAoJ2EgLT4gJ2IpIHBhcmFtID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gdC5mICgpID4+fCBmdW4gZiBrIC0+IGsgZik7IGZsYWdzID0gdC5mbGFnczsgdXNhZ2UgPSB0LnVzYWdlIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG9mX3BhcmFtIHAgPSBwLnBhcmFtXG4gICAgbGV0IHRvX3BhcmFtIHQgbWFpbiA9IG1hcCAodG9fcGFyYW1zIHQpIH5mOihmdW4gayAtPiBrIG1haW4pXG5cbiAgICBsZXQgbG9va3VwIGtleSA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5mcm9tX2VudiAoZnVuIGVudiBtIC0+IG0gKEVudi5maW5kX2V4biBlbnYga2V5KSkpXG4gICAgICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgcGFyYW0gPSBsb29rdXAgcGF0aF9rZXlcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHBhcmFtID0gbG9va3VwIGFyZ3Nfa2V5XG4gICAgbGV0IGhlbHAgOiBzdHJpbmcgTGF6eS50IHBhcmFtID0gbG9va3VwIGhlbHBfa2V5XG5cbiAgICAoKiBUaGlzIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBmb3IgdGhlIGhlbHAgY29tbWFuZC4gKilcbiAgICBsZXQgZW52ID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLmZyb21fZW52IChmdW4gZW52IG0gLT4gbSBlbnYpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIHR5cGUgJ2EgYW5vbnMgPSAnYSB0XG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0XG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG5cbiAgICAgIGxldCBhbm9uIHNwZWMgPVxuICAgICAgICBBbm9ucy5HcmFtbWFyLmludmFyaWFudCBzcGVjLmdyYW1tYXI7XG4gICAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBzcGVjLnAgPj58IGZ1biB2IGsgLT4gayB2KVxuICAgICAgICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBzcGVjLmdyYW1tYXIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gfmZpbmFsX2Fub24gPVxuICAgICAgQW5vbnMuZXNjYXBlICh0MiBmaW5hbF9hbm9uIChzZXF1ZW5jZSAoXCJBUkdcIiAlOiBzdHJpbmcpKSkgfD4gYW5vblxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIHR5cGUgJ2EgZmxhZyA9ICdhIHRcblxuICAgICAgbGV0IG1hcF9mbGFnID0gbWFwX2ZsYWdcbiAgICAgIGxldCBlc2NhcGUgPSBlc2NhcGVcbiAgICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICAgIGxldCBvbmVfb3JfbW9yZSA9IG9uZV9vcl9tb3JlXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuXG4gICAgICBsZXQgZmxhZ19pbnRlcm5hbFxuICAgICAgICAgICAgPyhhbGlhc2VzID0gW10pXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBtb2RlXG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgPVxuICAgICAgICBsZXQgbm9ybWFsaXplIGZsYWcgPSBub3JtYWxpemUgS2V5X3R5cGUuRmxhZyBmbGFnIGluXG4gICAgICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICAgICAgbGV0IGFsaWFzZXMgPSBMaXN0Lm1hcCB+Zjpub3JtYWxpemUgYWxpYXNlcyBpblxuICAgICAgICBsZXQgeyByZWFkOyBhY3Rpb247IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH0gPSBtb2RlIG5hbWUgaW5cbiAgICAgICAgbGV0IGNoZWNrX2F2YWlsYWJsZSA9XG4gICAgICAgICAgbWF0Y2ggbnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2Ugd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gKGlnbm9yZSA6IFVuaXZfbWFwLnQgLT4gdW5pdClcbiAgICAgICAgICB8IHRydWUgLT4gZnVuIGVudiAtPiBpZ25vcmUgKHJlYWQgZW52IDogXylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5hbWVfbWF0Y2hpbmcgPVxuICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIGZ1bGxfZmxhZ19yZXF1aXJlZCB0aGVuIGBGdWxsX21hdGNoX3JlcXVpcmVkIGVsc2UgYFByZWZpeFxuICAgICAgICBpblxuICAgICAgICB7IHBhcmFtID1cbiAgICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLmZyb21fZW52IChmdW4gZW52IG0gLT4gbSAocmVhZCBlbnYpKSlcbiAgICAgICAgICAgIDsgZmxhZ3MgPVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICBbIHsgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgICAgICAgICAgICAgICA7IGRvYyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGZvcmNlIGV4dHJhX2RvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBleHRyYV9kb2MgLT4gWyVzdHJpbmcgXCIle2RvY30gJXtleHRyYV9kb2N9XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBkb2MpXG4gICAgICAgICAgICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmxhZyA9IGZsYWdfaW50ZXJuYWwgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOltdXG5cbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBhcmdfdHlwZVxuICAgICAgICAgICAgc2V4cF9vZl9kZWZhdWx0XG4gICAgICAgICAgICB+ZGVmYXVsdFxuICAgICAgICAgICAgfmRvY1xuICAgICAgICA9XG4gICAgICAgIGxldCBkb2MgPVxuICAgICAgICAgIG1hdGNoIHNleHBfb2ZfZGVmYXVsdCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSBcIl9cIiAtPiBkb2NcbiAgICAgICAgICB8IGRlZmF1bHRfc2V4cCAtPiBzcHJpbnRmICFcIiVzIChkZWZhdWx0OiAle1NleHB9KVwiIGRvYyBkZWZhdWx0X3NleHBcbiAgICAgICAgaW5cbiAgICAgICAgZmxhZ1xuICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICAob3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUpXG4gICAgICAgICAgfmRvY1xuICAgICAgOztcblxuICAgICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgcGFyYW1cblxuICAgICAgICAgIGxldCByZXR1cm4gPSBjb25zdFxuICAgICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHBhaXIgPSBib3RoXG4gICAgZW5kXG5cbiAgICBsZXQgZmxhZ3Nfb2ZfYXJnc19leG4gYXJncyA9XG4gICAgICBMaXN0LmZvbGQgYXJncyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgc3BlYywgZG9jKSAtPlxuICAgICAgICBsZXQgZ2VuIGYgZmxhZ190eXBlID1cbiAgICAgICAgICBzdGVwIChmdW4gbSB4IC0+XG4gICAgICAgICAgICBmIHg7XG4gICAgICAgICAgICBtKVxuICAgICAgICAgICs+IGZsYWcgbmFtZSBmbGFnX3R5cGUgfmRvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgY2FsbCBmIGFyZ190eXBlID0gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mKSAob3B0aW9uYWwgYXJnX3R5cGUpIGluXG4gICAgICAgIGxldCBzZXQgciBhcmdfdHlwZSA9IGNhbGwgKGZ1biB4IC0+IHIgOj0geCkgYXJnX3R5cGUgaW5cbiAgICAgICAgbGV0IHNldF9ib29sIHIgYiA9IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiByIDo9IGIpIG5vX2FyZyBpblxuICAgICAgICBhY2NcbiAgICAgICAgKytcbiAgICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICAgIHwgQXJnLlVuaXQgZiAtPiBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gZiAoKSkgbm9fYXJnXG4gICAgICAgIHwgQXJnLlNldCByIC0+IHNldF9ib29sIHIgdHJ1ZVxuICAgICAgICB8IEFyZy5DbGVhciByIC0+IHNldF9ib29sIHIgZmFsc2VcbiAgICAgICAgfCBBcmcuU3RyaW5nIGYgLT4gY2FsbCBmIHN0cmluZ1xuICAgICAgICB8IEFyZy5TZXRfc3RyaW5nIHIgLT4gc2V0IHIgc3RyaW5nXG4gICAgICAgIHwgQXJnLkludCBmIC0+IGNhbGwgZiBpbnRcbiAgICAgICAgfCBBcmcuU2V0X2ludCByIC0+IHNldCByIGludFxuICAgICAgICB8IEFyZy5GbG9hdCBmIC0+IGNhbGwgZiBmbG9hdFxuICAgICAgICB8IEFyZy5TZXRfZmxvYXQgciAtPiBzZXQgciBmbG9hdFxuICAgICAgICB8IEFyZy5Cb29sIGYgLT4gY2FsbCBmIGJvb2xcbiAgICAgICAgfCBBcmcuU3ltYm9sIChzeW1zLCBmKSAtPlxuICAgICAgICAgIGxldCBhcmdfdHlwZSA9XG4gICAgICAgICAgICBBcmdfdHlwZS5vZl9hbGlzdF9leG5cbiAgICAgICAgICAgICAgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2VcbiAgICAgICAgICAgICAgKExpc3QubWFwIHN5bXMgfmY6KGZ1biBzeW0gLT4gc3ltLCBzeW0pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY2FsbCBmIGFyZ190eXBlXG4gICAgICAgIHwgQXJnLlJlc3QgZiAtPiBnZW4gKGZ1biB4IC0+IE9wdGlvbi5pdGVyIHggfmY6KExpc3QuaXRlciB+ZikpIGVzY2FwZVxuICAgICAgICB8IEFyZy5UdXBsZSBfIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuVHVwbGUgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIlxuICAgICAgICB8ICgoQXJnLkV4cGFuZCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDA1LCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuRXhwYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEFyZy5SZXN0X2FsbCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDEyLCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuUmVzdF9hbGwgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIilcbiAgICA7O1xuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRmxhZy5EZXByZWNhdGVkXG4gICAgICBpbmNsdWRlIEFub25zLkRlcHJlY2F0ZWRcbiAgICBlbmRcblxuICAgIGxldCBhcmdfbmFtZXMgcGFyYW0gPVxuICAgICAgbGV0IHQgPSBwYXJhbS5wYXJhbSBpblxuICAgICAgbGV0IGZsYWdfbmFtZXMgPSBNYXAua2V5cyAoRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpKSBpblxuICAgICAgbGV0IGFub25fbmFtZXMgPSBBbm9ucy5HcmFtbWFyLm5hbWVzICh0LnVzYWdlICgpKSBpblxuICAgICAgTGlzdC5jb25jYXQgWyBmbGFnX25hbWVzOyBhbm9uX25hbWVzIF1cbiAgICA7O1xuXG4gICAgbW9kdWxlIENob29zZV9vbmUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBDaG9pY2VfbmFtZSA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBsaXN0X3RvX3N0cmluZyA6IHQgbGlzdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIGNyZWF0ZV9leG4gOiAnYSBwYXJhbSAtPiB0XG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBzdHJpbmcgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgICAgICBlbmRcblxuICAgICAgICBpbmNsdWRlIFRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gcGFyYW0gPVxuICAgICAgICAgIGxldCBuYW1lcyA9IGFyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lc193aXRoX2NvbW1hcyA9IExpc3QuZmlsdGVyIG5hbWVzIH5mOihmdW4gcyAtPiBTdHJpbmcuY29udGFpbnMgcyAnLCcpIGluXG4gICAgICAgICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IG5hbWVzX3dpdGhfY29tbWFzKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiRm9yIHNpbXBsaWNpdHksIFtDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gZG9lcyBub3Qgc3VwcG9ydCBuYW1lcyB3aXRoIFxcXG4gICAgICAgICAgICAgICBjb21tYXMuXCJcbiAgICAgICAgICAgICAgbmFtZXNfd2l0aF9jb21tYXNcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF07XG4gICAgICAgICAgbWF0Y2ggbmFtZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlIFwiW2Nob29zZV9vbmVdIGV4cGVjdHMgY2hvaWNlcyB0byByZWFkIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuXCJdXG4gICAgICAgICAgfCBfIDo6IF8gLT4gbmFtZXNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiXG4gICAgICAgIGxldCBsaXN0X3RvX3N0cmluZyB0cyA9IExpc3QubWFwIHRzIH5mOnRvX3N0cmluZyB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG4gIFwiXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gc3RydWN0XG4gICAgICAgIHR5cGUgKF8sIF8pIHQgPVxuICAgICAgICAgIHwgRGVmYXVsdF90byA6ICdhIC0+ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICAgIHwgUmV0dXJuX25vbmUgOiAoJ2EsICdhIG9wdGlvbikgdFxuICAgICAgZW5kXG5cbiAgICAgIGxldCBjaG9vc2Vfb25lXG4gICAgICAgICAgICAodHlwZSBhIGIpXG4gICAgICAgICAgICAodHMgOiBhIG9wdGlvbiBwYXJhbSBsaXN0KVxuICAgICAgICAgICAgfihpZl9ub3RoaW5nX2Nob3NlbiA6IChhLCBiKSBJZl9ub3RoaW5nX2Nob3Nlbi50KVxuICAgICAgICA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+IENob2ljZV9uYW1lLmNyZWF0ZV9leG4gdCwgdClcbiAgICAgICAgICB8PiBNYXAub2ZfYWxpc3QgKG1vZHVsZSBDaG9pY2VfbmFtZSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiW0NvbW1hbmQuU3BlYy5jaG9vc2Vfb25lXSBjYWxsZWQgd2l0aCBkdXBsaWNhdGUgbmFtZVwiXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBbJXNleHBfb2Y6IENob2ljZV9uYW1lLnRdXG4gICAgICAgIHwgYE9rIHRzIC0+XG4gICAgICAgICAgTWFwLmZvbGQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6dCBpbml0IC0+XG4gICAgICAgICAgICBtYXAyIGluaXQgdCB+ZjooZnVuIGluaXQgdmFsdWUgLT5cbiAgICAgICAgICAgICAgT3B0aW9uLmZvbGQgdmFsdWUgfmluaXQgfmY6KGZ1biBpbml0IHZhbHVlIC0+IChuYW1lLCB2YWx1ZSkgOjogaW5pdCkpKVxuICAgICAgICAgIHw+IG1hcCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gYXMgcGFzc2VkIC0+XG4gICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgICFcIkNhbm5vdCBwYXNzIG1vcmUgdGhhbiBvbmUgb2YgdGhlc2U6IFxcblxcXG4gICAgICAgICAgICAgICAgIFxcICAle0Nob2ljZV9uYW1lLmxpc3RfdG9fc3RyaW5nfVwiXG4gICAgICAgICAgICAgICAgKExpc3QubWFwIHBhc3NlZCB+Zjpmc3QpXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIHwgWyAoXywgdmFsdWUpIF0gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGlmX25vdGhpbmdfY2hvc2VuIHdpdGhcbiAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byAoXyA6IGEpIC0+ICh2YWx1ZSA6IGIpXG4gICAgICAgICAgICAgICB8IFJhaXNlIC0+ICh2YWx1ZSA6IGIpXG4gICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IChTb21lIHZhbHVlIDogYikpXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gdmFsdWUgLT4gdmFsdWVcbiAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgfCBSYWlzZSAtPlxuICAgICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAgICAhXCJNdXN0IHBhc3Mgb25lIG9mIHRoZXNlOlxcbiAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgICAgIChNYXAua2V5cyB0cylcbiAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBDaG9vc2Vfb25lLmNob29zZV9vbmVcbiAgICBsZXQgYW5kX2FyZ19uYW1lcyB0ID0gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgYXJnX25hbWVzIHQpXG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lIHQgPVxuICAgICAgbWF0Y2ggYXJnX25hbWVzIHQgd2l0aFxuICAgICAgfCBbIG5hbWUgXSAtPiBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBuYW1lKVxuICAgICAgfCBuYW1lcyAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlthbmRfYXJnX25hbWVdIGV4cGVjdHMgZXhhY3RseSBvbmUgbmFtZSwgZ290XCIgfl86KG5hbWVzIDogc3RyaW5nIGxpc3QpXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBsaXN0IExhenkudFxuICAgIDsgYm9keSA6IChwYXRoOnN0cmluZyBsaXN0IC0+IHVuaXQpIG9wdGlvblxuICAgIH1cblxuICBsZXQgc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGUgdCA6IF8gU2hhcGUuR3JvdXBfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSB0LnJlYWRtZVxuICAgIDsgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzdWJjb21tYW5kX3RvX3NoYXBlKVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgYWJzX3BhdGggPSBTaGFwZS5Qcml2YXRlLmFic19wYXRoXG5sZXQgY29tcF9jd29yZCA9IENvbW1hbmRfZW52X3Zhci5DT01QX0NXT1JEXG5cbm1vZHVsZSBFeGVjID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgKCogSWYgW3BhdGhfdG9fZXhlXSBpcyByZWxhdGl2ZSwgaW50ZXJwcmV0IHcuci50LiBbd29ya2luZ19kaXJdICopXG4gICAgICB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsgZW52IDogZW52IG9wdGlvblxuICAgIH1cblxuICBsZXQgc2hhcGUgdCA6IFNoYXBlLkV4ZWNfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSB0LnJlYWRtZVxuICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgPSB0LmNoaWxkX3N1YmNvbW1hbmRcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQSBwcm94eSBjb21tYW5kIGlzIHRoZSBzdHJ1Y3R1cmUgb2YgYW4gRXhlYyBjb21tYW5kIG9idGFpbmVkIGJ5IHJ1bm5pbmcgaXQgaW4gYVxuICAgc3BlY2lhbCB3YXkgKilcbm1vZHVsZSBQcm94eSA9IHN0cnVjdFxuICBtb2R1bGUgS2luZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEJhc2Ugb2YgU2hhcGUuQmFzZV9pbmZvLnRcbiAgICAgIHwgR3JvdXAgb2YgJ2EgU2hhcGUuR3JvdXBfaW5mby50XG4gICAgICB8IEV4ZWMgb2YgU2hhcGUuRXhlY19pbmZvLnRcbiAgICAgIHwgTGF6eSBvZiAnYSB0IExhenkudFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBraW5kIDogdCBLaW5kLnRcbiAgICB9XG5lbmRcblxudHlwZSB0ID1cbiAgfCBCYXNlIG9mIEJhc2UudFxuICB8IEdyb3VwIG9mIHQgR3JvdXAudFxuICB8IEV4ZWMgb2YgRXhlYy50XG4gIHwgTGF6eSBvZiB0IExhenkudFxuXG5sZXQgcmVjIHNleHBhYmxlX3NoYXBlIDogdCAtPiBTaGFwZS5TZXhwYWJsZS50ID0gZnVuY3Rpb25cbiAgfCBCYXNlIGJhc2UgLT4gQmFzZSAoQmFzZS5zaGFwZSBiYXNlKVxuICB8IEV4ZWMgZXhlYyAtPiBFeGVjIChFeGVjLnNoYXBlIGV4ZWMpXG4gIHwgR3JvdXAgZ3JvdXAgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNleHBhYmxlX3NoYXBlIGdyb3VwKVxuICB8IExhenkgdGh1bmsgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2V4cGFibGVfc2hhcGUgdGh1bmspXG47O1xuXG50eXBlICgnbWFpbiwgJ3Jlc3VsdCkgYmFzaWNfc3BlY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmdcbiAgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpXG4gIC0+ICgnbWFpbiwgdW5pdCAtPiAncmVzdWx0KSBCYXNlLlNwZWMudFxuICAtPiAnbWFpblxuICAtPiB0XG5cbmxldCBleHRlbmRfZXhuIH5tZW0gfmFkZCBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgaWYgbWVtIG1hcCBrZXlcbiAgdGhlbiBmYWlsd2l0aGYgXCJ0aGVyZSBpcyBhbHJlYWR5IGEgJXMgbmFtZWQgJXNcIiAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKSBrZXkgKCk7XG4gIGFkZCBtYXAgfmtleSB+ZGF0YVxuOztcblxubGV0IGV4dGVuZF9tYXBfZXhuIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBleHRlbmRfZXhuIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgfm1lbTpNYXAubWVtIH5hZGQ6TWFwLnNldFxuOztcblxubGV0IGV4dGVuZF9hbGlzdF9leG4gYWxpc3Qga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4blxuICAgIGFsaXN0XG4gICAga2V5X3R5cGVcbiAgICB+a2V5XG4gICAgZGF0YVxuICAgIH5tZW06KGZ1biBhbGlzdCBrZXkgLT4gTGlzdC5Bc3NvYy5tZW0gYWxpc3Qga2V5IH5lcXVhbDpTdHJpbmcuZXF1YWwpXG4gICAgfmFkZDooZnVuIGFsaXN0IH5rZXkgfmRhdGEgLT4gTGlzdC5Bc3NvYy5hZGQgYWxpc3Qga2V5IGRhdGEgfmVxdWFsOlN0cmluZy5lcXVhbClcbjs7XG5cbm1vZHVsZSBCYWlsb3V0X2R1bXBfZmxhZyA9IHN0cnVjdFxuICBsZXQgYWRkIGJhc2Ugfm5hbWUgfmFsaWFzZXMgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIH50ZXh0IH50ZXh0X3N1bW1hcnkgPVxuICAgIGxldCBmbGFncyA9IGJhc2UuQmFzZS5mbGFncyBpblxuICAgIGxldCBmbGFncyA9XG4gICAgICBleHRlbmRfbWFwX2V4blxuICAgICAgICBmbGFnc1xuICAgICAgICBLZXlfdHlwZS5GbGFnXG4gICAgICAgIH5rZXk6bmFtZVxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBGbGFnLk51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBpZ25vcmVcbiAgICAgICAgOyBhY3Rpb24gPSBQcmludF9pbmZvX2FuZF9xdWl0IChmdW4gZW52IC0+IHRleHQgZW52KVxuICAgICAgICA7IGRvYyA9IHNwcmludGYgXCIgcHJpbnQgJXMgYW5kIGV4aXRcIiB0ZXh0X3N1bW1hcnlcbiAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gYFByZWZpeFxuICAgICAgICB9XG4gICAgaW5cbiAgICB7IGJhc2Ugd2l0aCBCYXNlLmZsYWdzIH1cbiAgOztcbmVuZFxuXG5sZXQgYmFzaWNfc3BlYyB+c3VtbWFyeSA/cmVhZG1lIHsgQmFzZS5TcGVjLnVzYWdlOyBmbGFnczsgZiB9IG1haW4gPVxuICBsZXQgZmxhZ3MgPSBmbGFncyAoKSBpblxuICBsZXQgdXNhZ2UgPSB1c2FnZSAoKSBpblxuICBsZXQgYW5vbnMgKCkgPVxuICAgIGxldCBvcGVuIEFub25zLlBhcnNlci5Gb3Jfb3BlbmluZyBpblxuICAgIGYgKClcbiAgICA+PnwgZnVuIGsgYFBhcnNlX2FyZ3MgLT5cbiAgICBsZXQgdGh1bmsgPSBrIG1haW4gaW5cbiAgICBmdW4gYFJ1bl9tYWluIC0+IHRodW5rICgpXG4gIGluXG4gIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlIGZsYWdzIGluXG4gIGxldCBiYXNlID0geyBCYXNlLnN1bW1hcnk7IHJlYWRtZTsgdXNhZ2U7IGZsYWdzOyBhbm9ucyB9IGluXG4gIGxldCBiYXNlID1cbiAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgIGJhc2VcbiAgICAgIH5uYW1lOlwiLWhlbHBcIlxuICAgICAgfmFsaWFzZXM6WyBcIi0/XCIgXVxuICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWhlbHBcIiBdXG4gICAgICB+dGV4dF9zdW1tYXJ5OlwidGhpcyBoZWxwIHRleHRcIlxuICAgICAgfnRleHQ6KGZ1biBlbnYgLT4gTGF6eS5mb3JjZSAoRW52LmZpbmRfZXhuIGVudiBCYXNlLmhlbHBfa2V5KSlcbiAgaW5cbiAgQmFzZSBiYXNlXG47O1xuXG5sZXQgYmFzaWMgPSBiYXNpY19zcGVjXG5sZXQgc3Vic19rZXkgOiAoc3RyaW5nICogdCkgbGlzdCBFbnYuS2V5LnQgPSBFbnYua2V5X2NyZWF0ZSBcInN1YmNvbW1hbmRzXCJcblxubGV0IGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCBzdWJjb21tYW5kcyA9XG4gICAgTGF6eS5tYXAgYWxpc3QgfmY6KGZ1biBhbGlzdCAtPlxuICAgICAgbGV0IGFsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAobmFtZSwgdCkgLT4gbm9ybWFsaXplIEtleV90eXBlLlN1YmNvbW1hbmQgbmFtZSwgdClcbiAgICAgIGluXG4gICAgICBtYXRjaCBTdHJpbmcuTWFwLm9mX2FsaXN0IGFsaXN0IHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBzdWJjb21tYW5kcyBuYW1lZCAlc1wiIG5hbWUgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICAobWF0Y2ggcHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciB3aXRoXG4gICAgICAgICB8IFNvbWUgKCkgLT4gYWxpc3RcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAudG9fYWxpc3QgbWFwKSlcbiAgaW5cbiAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbjs7XG5cbmxldCBncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gZiAoKSAtPiBTdHJpbmcuc3RyaXAgKGYgKCkpKSBpblxuICBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgKExhenkuZnJvbV92YWwgYWxpc3QpXG47O1xuXG5sZXQgZXhlYyB+c3VtbWFyeSA/cmVhZG1lID8oY2hpbGRfc3ViY29tbWFuZCA9IFtdKSA/ZW52IH5wYXRoX3RvX2V4ZSAoKSA9XG4gIGxldCB3b3JraW5nX2RpciA9XG4gICAgRmlsZW5hbWUuZGlybmFtZVxuICAgIEBAXG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIF8gfCBgUmVsYXRpdmVfdG9fbWUgXyAtPiBDYW1sLlN5cy5leGVjdXRhYmxlX25hbWVcbiAgICB8IGBSZWxhdGl2ZV90b19hcmd2MCBfIC0+IENhbWwuU3lzLmFyZ3YuKDApXG4gIGluXG4gIGxldCBwYXRoX3RvX2V4ZSA9XG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWUuaXNfYWJzb2x1dGUgcClcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJQYXRoIHBhc3NlZCB0byBgQWJzb2x1dGUgbXVzdCBiZSBhYnNvbHV0ZVwiXG4gICAgICBlbHNlIHBcbiAgICB8IGBSZWxhdGl2ZV90b19tZSBwIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWUuaXNfcmVsYXRpdmUgcClcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJQYXRoIHBhc3NlZCB0byBgUmVsYXRpdmVfdG9fbWUgbXVzdCBiZSByZWxhdGl2ZVwiXG4gICAgICBlbHNlIHBcbiAgaW5cbiAgRXhlYyB7IHN1bW1hcnk7IHJlYWRtZTsgd29ya2luZ19kaXI7IHBhdGhfdG9fZXhlOyBjaGlsZF9zdWJjb21tYW5kOyBlbnYgfVxuOztcblxubGV0IG9mX2xhenkgdGh1bmsgPSBMYXp5IHRodW5rXG5cbmxldCByZWMgcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICA6IFByb3h5LnRcbiAgPVxuICBsZXQga2luZCA9XG4gICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgc2V4cGFibGVcbiAgICAgIH53b3JraW5nX2RpclxuICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICBpblxuICB7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgcGF0aF90b19zdWJjb21tYW5kOyBjaGlsZF9zdWJjb21tYW5kOyBraW5kIH1cblxuYW5kIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgPVxuICBtYXRjaCAoc2V4cGFibGUgOiBTaGFwZS5TZXhwYWJsZS50KSB3aXRoXG4gIHwgQmFzZSBiIC0+IFByb3h5LktpbmQuQmFzZSBiXG4gIHwgRXhlYyBlIC0+IFByb3h5LktpbmQuRXhlYyBlXG4gIHwgTGF6eSBsIC0+XG4gICAgUHJveHkuS2luZC5MYXp5XG4gICAgICAoTGF6eS5tYXAgbCB+ZjooZnVuIHNleHBhYmxlIC0+XG4gICAgICAgICBraW5kX29mX3NleHBhYmxlXG4gICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZCkpXG4gIHwgR3JvdXAgZyAtPlxuICAgIFByb3h5LktpbmQuR3JvdXBcbiAgICAgIHsgZyB3aXRoXG4gICAgICAgIHN1YmNvbW1hbmRzID1cbiAgICAgICAgICBMYXp5Lm1hcFxuICAgICAgICAgICAgZy5zdWJjb21tYW5kc1xuICAgICAgICAgICAgfmY6XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCB+ZjooZnVuIChzdHIsIHNleHBhYmxlKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgcGF0aF90b19zdWJjb21tYW5kID0gcGF0aF90b19zdWJjb21tYW5kIEAgWyBzdHIgXSBpblxuICAgICAgICAgICAgICAgICBsZXQgcHJveHkgPVxuICAgICAgICAgICAgICAgICAgIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgICAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICAgICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHN0ciwgcHJveHkpKVxuICAgICAgfVxuOztcblxubW9kdWxlIHR5cGUgRm9yX3ZlcnNpb25faW5mbyA9IHNpZ1xuICBtb2R1bGUgVmVyc2lvbl91dGlsIDogVmVyc2lvbl91dGlsXG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICB0eXBlIHQgPSBUaW1lX2Zsb2F0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5lbmRcblxubW9kdWxlIFZlcnNpb25faW5mbyAoTSA6IEZvcl92ZXJzaW9uX2luZm8pID0gc3RydWN0XG4gIG9wZW4gTVxuXG4gIGxldCBwcmludF92ZXJzaW9uIH52ZXJzaW9uID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgdmVyc2lvbilcbiAgbGV0IHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm8gPSBwcmludF9lbmRsaW5lIChmb3JjZSBidWlsZF9pbmZvKVxuXG4gIGxldCBjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uXCJcbiAgICAgIEJhc2UuU3BlYy4oXG4gICAgICAgIGVtcHR5XG4gICAgICAgICs+IGZsYWcgXCItdmVyc2lvblwiIG5vX2FyZyB+ZG9jOlwiIHByaW50IHRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICArPiBmbGFnIFwiLWJ1aWxkLWluZm9cIiBub19hcmcgfmRvYzpcIiBwcmludCBidWlsZCBpbmZvIGZvciB0aGlzIGJ1aWxkXCIpXG4gICAgICAoZnVuIHZlcnNpb25fZmxhZyBidWlsZF9pbmZvX2ZsYWcgLT5cbiAgICAgICAgIGlmIGJ1aWxkX2luZm9fZmxhZ1xuICAgICAgICAgdGhlbiBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvXG4gICAgICAgICBlbHNlIGlmIHZlcnNpb25fZmxhZ1xuICAgICAgICAgdGhlbiBwcmludF92ZXJzaW9uIH52ZXJzaW9uXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbik7XG4gICAgICAgICBleGl0IDApXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gdW52ZXJzaW9uZWQgPVxuICAgIG1hdGNoIHVudmVyc2lvbmVkIHdpdGhcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItdmVyc2lvblwiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tdmVyc2lvblwiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwidGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIHZlcnNpb24pXG4gICAgICBpblxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItYnVpbGQtaW5mb1wiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tYnVpbGQtaW5mb1wiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwiaW5mbyBhYm91dCB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgYnVpbGRfaW5mbylcbiAgICAgIGluXG4gICAgICBCYXNlIGJhc2VcbiAgICB8IEdyb3VwIGdyb3VwIC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBncm91cC5Hcm91cC5zdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgc3ViY29tbWFuZHNcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAgIChjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IGdyb3VwIHdpdGggR3JvdXAuc3ViY29tbWFuZHMgfVxuICAgIHwgRXhlYyBleGVjIC0+IEV4ZWMgZXhlY1xuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbm9ybWFsaXplX3ZlcnNpb25fbGluZXMgbGluZXMgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiIChMaXN0LnNvcnQgbGluZXMgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdmVyc2lvbiA9IGxhenkgKG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIFZlcnNpb25fdXRpbC52ZXJzaW9uX2xpc3QpXG5cbiAgbGV0IGRlZmF1bHRfYnVpbGRfaW5mbyA9XG4gICAgbGF6eVxuICAgICAgKCogbGF6eSB0byBhdm9pZCBsb2FkaW5nIGFsbCB0aGUgdGltZSB6b25lIHN0dWZmIGF0IHRvcGxldmVsICopXG4gICAgICAoVmVyc2lvbl91dGlsLnJlcHJpbnRfYnVpbGRfaW5mbyBUaW1lLnNleHBfb2ZfdClcbiAgOztcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXCJWZXJzaW9uX2luZm9cIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbW9kdWxlIFZlcnNpb25faW5mbyA9IFZlcnNpb25faW5mbyAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBWZXJzaW9uX3V0aWwgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgdmVyc2lvbl9saXN0ID0gWyBcImhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcIjsgXCJzc2g6Ly9hL3BhdGhfOGJhZGYwMGRcIiBdXG4gICAgICAgICAgbGV0IHJlcHJpbnRfYnVpbGRfaW5mbyB0b19zZXhwID0gU2V4cC50b19zdHJpbmcgKHRvX3NleHAgVGltZV9mbG9hdC5lcG9jaClcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIFRpbWUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBUaW1lX2Zsb2F0LnRcblxuICAgICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFRpbWVfZmxvYXQudG9fc3RyaW5nX3V0YyB0IHw+IFNleHAub2Zfc3RyaW5nXG4gICAgICAgIGVuZFxuICAgICAgZW5kKVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicHJpbnQgdmVyc2lvbiB3aGVyZSBtdWx0aXBsZSByZXBvcyBhcmUgdXNlZFwiID1cbiAgICAgIFZlcnNpb25faW5mby5wcmludF92ZXJzaW9uIH52ZXJzaW9uOlZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb247XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICAgICBoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXG4gICAgICAgIHNzaDovL2EvcGF0aF84YmFkZjAwZCB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicHJpbnQgYnVpbGQgaW5mb1wiID1cbiAgICAgIFZlcnNpb25faW5mby5wcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvOihsYXp5IFwic29tZSBidWlsZCBpbmZvXCIpO1xuICAgICAgWyVleHBlY3Qge3wgc29tZSBidWlsZCBpbmZvIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmxldCByZWMgc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzZSB4IC0+IHguc3VtbWFyeVxuICB8IEdyb3VwIHggLT4geC5zdW1tYXJ5XG4gIHwgRXhlYyB4IC0+IHguc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gc3VtbWFyeSAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbm1vZHVsZSBTcGVjID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5TcGVjXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gIG1vZHVsZSBTcGVjID0gU3BlYy5EZXByZWNhdGVkXG5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJ5XG5cbiAgbGV0IHJlYyBnZXRfZmxhZ19uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIGJhc2UgLT4gYmFzZS5CYXNlLmZsYWdzIHw+IFN0cmluZy5NYXAua2V5c1xuICAgIHwgTGF6eSB0aHVuayAtPiBnZXRfZmxhZ19uYW1lcyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICB8IEdyb3VwIF8gfCBFeGVjIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGhlbHBfcmVjdXJzaXZlIH5jbWQgfndpdGhfZmxhZ3MgfmV4cGFuZF9kb3RzIHQgcyA9XG4gICAgbGV0IHJlYyBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHMgPVxuICAgICAgbGV0IG5ld19zID0gcyBeIChpZiBleHBhbmRfZG90cyB0aGVuIGNtZCBlbHNlIFwiLlwiKSBeIFwiIFwiIGluXG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgICBsZXQgdCA9IExhenkuZm9yY2UgdGh1bmsgaW5cbiAgICAgICAgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzXG4gICAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgICBsZXQgYmFzZV9oZWxwID0gcyBeIGNtZCwgc3VtbWFyeSAoQmFzZSBiYXNlKSBpblxuICAgICAgICBpZiB3aXRoX2ZsYWdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBiYXNlX2hlbHBcbiAgICAgICAgICA6OiBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgfmY6KGZ1biAoZmxhZywgaCkgLT4gbmV3X3MgXiBmbGFnLCBoKVxuICAgICAgICAgICAgICAgKExpc3Quc29ydFxuICAgICAgICAgICAgICAgICAgfmNvbXBhcmU6QmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgICAgICAgKEJhc2UuRGVwcmVjYXRlZC5mbGFnc19oZWxwIH5kaXNwbGF5X2hlbHBfZmxhZ3M6ZmFsc2UgYmFzZSkpXG4gICAgICAgIGVsc2UgWyBiYXNlX2hlbHAgXVxuICAgICAgfCBHcm91cCB7IHN1bW1hcnk7IHN1YmNvbW1hbmRzOyByZWFkbWUgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICAgIChzIF4gY21kLCBzdW1tYXJ5KVxuICAgICAgICA6OiAoTGF6eS5mb3JjZSBzdWJjb21tYW5kc1xuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOkJhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIChjbWQnLCB0KSAtPiBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZDpjbWQnIHQgbmV3X3MpKVxuICAgICAgfCBFeGVjIF8gLT5cbiAgICAgICAgKCogQ29tbWFuZC5leGVjIGRvZXMgbm90IHN1cHBvcnQgZGVwcmVjYXRlZCBjb21tYW5kcyAqKVxuICAgICAgICBbXVxuICAgIGluXG4gICAgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl91bml4IChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gc3RyaW5nKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFZlcnNpb25faW5mbyA9IFZlcnNpb25faW5mbyAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3ZhcilcblxuICBtb2R1bGUgRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBDb21tYW5kX2Vudl92YXIudCA9XG4gIHN0cnVjdFxuICAgICgqIFdlIGZvcmNlIGFjY2VzcyB0byBlbnYgdmFycyB0byBnbyB0aHJvdWdoIFtDb21tYW5kX2Vudl92YXJdIHNvIHRoYXQgd2UgY2FuIGtlZXAgYW5cbiAgICAgICBhY2N1cmF0ZSBlbnVtZXJhdGlvbiBvZiB0aGUgdmFyaWFibGVzIHdlIHVzZS4gKilcblxuICAgIGluY2x1ZGUgRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3ZhclxuXG4gICAgbW9kdWxlIFVuaXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVW5peFxuXG4gICAgICBsZXQgcHV0ZW52IH5rZXkgfmRhdGEgPSBwdXRlbnYgfmtleTooQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBrZXkpIH5kYXRhXG4gICAgICBsZXQgdW5zZXRlbnYga2V5ID0gdW5zZXRlbnYgKENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcga2V5KVxuICAgICAgbGV0IHVuc2FmZV9nZXRlbnYga2V5ID0gdW5zYWZlX2dldGVudiAoQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBrZXkpXG5cbiAgICAgIHR5cGUgZW52ID1cbiAgICAgICAgWyBgUmVwbGFjZSBvZiAoQ29tbWFuZF9lbnZfdmFyLnQgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgfCBgRXh0ZW5kIG9mIChDb21tYW5kX2Vudl92YXIudCAqIHN0cmluZykgbGlzdFxuICAgICAgICB8IGBPdmVycmlkZSBvZiAoQ29tbWFuZF9lbnZfdmFyLnQgKiBzdHJpbmcgb3B0aW9uKSBsaXN0XG4gICAgICAgIHwgYFJlcGxhY2VfcmF3IG9mIHN0cmluZyBsaXN0XG4gICAgICAgIF1cblxuICAgICAgbGV0IGNvbnZlcnRfZW52IGVudiA9XG4gICAgICAgIGxldCBjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdCA9XG4gICAgICAgICAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIChlbnZfdmFyLCBzdHIpIC0+IENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcgZW52X3Zhciwgc3RyKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBlbnYgd2l0aFxuICAgICAgICB8IGBSZXBsYWNlIGxpc3QgLT4gYFJlcGxhY2UgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBFeHRlbmQgbGlzdCAtPiBgRXh0ZW5kIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgT3ZlcnJpZGUgbGlzdCAtPiBgT3ZlcnJpZGUgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBfIGFzIHJlcGxhY2UgLT4gcmVwbGFjZVxuICAgICAgOztcblxuICAgICAgbGV0IGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnYgKCkgPVxuICAgICAgICBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52OihPcHRpb24ubWFwIGVudiB+Zjpjb252ZXJ0X2VudikgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfcHJvY2Vzc19lbnYgP3dvcmtpbmdfZGlyID9wcm9nX3NlYXJjaF9wYXRoID9hcmd2MCB+cHJvZyB+YXJncyB+ZW52ICgpID1cbiAgICAgICAgY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgP3dvcmtpbmdfZGlyXG4gICAgICAgICAgP3Byb2dfc2VhcmNoX3BhdGhcbiAgICAgICAgICA/YXJndjBcbiAgICAgICAgICB+cHJvZ1xuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfmVudjooY29udmVydF9lbnYgZW52KVxuICAgICAgICAgICgpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyXG5cbiAgKCogQ2xlYXIgdGhlIHNldHRpbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgYXNzb2NpYXRlZCB3aXRoIGNvbW1hbmQtbGluZVxuICAgICBjb21wbGV0aW9uIGFuZCByZWN1cnNpdmUgaGVscCBzbyB0aGF0IHN1YnByb2Nlc3NlcyBkb24ndCBzZWUgdGhlbS5cblxuICAgICBVc2UgW3Vuc2FmZV9nZXRlbnZdIHNvIHNldHVpZC1yb290IHByb2dyYW1zIGNhbiBzdGlsbCByZWFkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICAgVGhlcmUgaXMgbm8gc2VjdXJpdHkgcmlzayBoZXJlIGJlY2F1c2UgdGhlIHZhbHVlcyBhcmUgb25seSB1c2VkIGFzIHRyaWdnZXJzIHRvIGR1bXBcbiAgICAgb3V0IGNvbW1hbmQgaW5mb3JtYXRpb24uICopXG4gIGxldCBnZXRlbnZfYW5kX2NsZWFyIHZhciA9XG4gICAgbGV0IHZhbHVlID0gVW5peC51bnNhZmVfZ2V0ZW52IHZhciBpblxuICAgIGlmIE9wdGlvbi5pc19zb21lIHZhbHVlIHRoZW4gVW5peC51bnNldGVudiB2YXI7XG4gICAgdmFsdWVcbiAgOztcblxuICBsZXQgbWF5YmVfY29tcF9jd29yZCAoKSA9IGdldGVudl9hbmRfY2xlYXIgY29tcF9jd29yZCB8PiBPcHRpb24ubWFwIH5mOkludC5vZl9zdHJpbmdcblxuICBsZXQgc2V0X2NvbXBfY3dvcmQgbmV3X3ZhbHVlID1cbiAgICBsZXQgbmV3X3ZhbHVlID0gSW50LnRvX3N0cmluZyBuZXdfdmFsdWUgaW5cbiAgICBVbml4LnB1dGVudiB+a2V5OmNvbXBfY3dvcmQgfmRhdGE6bmV3X3ZhbHVlXG4gIDs7XG5cbiAgbW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4ZWNcblxuICAgIGxldCBleGVjX3dpdGhfYXJncyB0IH5hcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICBsZXQgcHJvZyA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlIGluXG4gICAgICBsZXQgYXJncyA9IHQuY2hpbGRfc3ViY29tbWFuZCBAIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSB0LmVudiBpblxuICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfbmV3X2NvbXBfY3dvcmQgfmY6KGZ1biBuIC0+XG4gICAgICAgICgqIFRoZSBsb2dpYyBmb3IgdHJhY2tpbmcgW21heWJlX25ld19jb21wX2N3b3JkXSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHdoZXRoZXJcbiAgICAgICAgICAgdGhpcyBleGVjIHNwZWNpZmllcyBhIGNoaWxkIHN1YmNvbW1hbmQuIElmIGl0IGRvZXMsIENPTVBfQ1dPUkQgbmVlZHMgdG8gYmUgc2V0XG4gICAgICAgICAgIGhpZ2hlciB0byBhY2NvdW50IGZvciB0aGUgYXJndW1lbnRzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hpbGQgc3ViY29tbWFuZC4gKilcbiAgICAgICAgc2V0X2NvbXBfY3dvcmQgKG4gKyBMaXN0Lmxlbmd0aCB0LmNoaWxkX3N1YmNvbW1hbmQpKTtcbiAgICAgIG5ldmVyX3JldHVybnNcbiAgICAgICAgKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIuVW5peC5leGVjID9lbnYgfnByb2cgfmFyZ3Y6KHByb2cgOjogYXJncykgKCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTaGFwZS5TZXhwYWJsZVxuXG4gICAgbGV0IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgKHByb2Nlc3NfaW5mbyA6IFVuaXguUHJvY2Vzc19pbmZvLnQpID1cbiAgICAgICgqIFdlIG5lZWQgdG8gcmVhZCBlYWNoIG9mIHN0ZG91dCBhbmQgc3RkZXJyIGluIGEgc2VwYXJhdGUgdGhyZWFkIHRvIGF2b2lkIGRlYWRsb2Nrc1xuICAgICAgICAgaWYgdGhlIGNoaWxkIHByb2Nlc3MgZGVjaWRlcyB0byB3YWl0IGZvciBhIHJlYWQgb24gb25lIGJlZm9yZSBjbG9zaW5nIHRoZSBvdGhlci5cbiAgICAgICAgIEJ1ZmZlcmluZyBtYXkgaGlkZSB0aGlzIHByb2JsZW0gdW50aWwgb3V0cHV0IGlzIFwic3VmZmljaWVudGx5IGxhcmdlXCIuICopXG4gICAgICBsZXQgc3RhcnRfcmVhZGluZyBkZXNjciBpbmZvID1cbiAgICAgICAgbGV0IG91dHB1dCA9IFNldF9vbmNlLmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgdGhyZWFkID1cbiAgICAgICAgICBUaHJlYWQuY3JlYXRlXG4gICAgICAgICAgICB+b25fdW5jYXVnaHRfZXhuOmBQcmludF90b19zdGRlcnJcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIGRlc2NyIHw+IFVuaXguaW5fY2hhbm5lbF9vZl9kZXNjciB8PiBJbl9jaGFubmVsLmlucHV0X2FsbClcbiAgICAgICAgICAgICAgIHw+IFNldF9vbmNlLnNldF9leG4gb3V0cHV0IFslaGVyZV0pXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBzdGFnZSAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyZWFkLmpvaW4gdGhyZWFkO1xuICAgICAgICAgIFVuaXguY2xvc2UgZGVzY3I7XG4gICAgICAgICAgbWF0Y2ggU2V0X29uY2UuZ2V0IG91dHB1dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHIGZhaWxlZCB0byByZWFkXCIgKGluZm8gOiBJbmZvLnQpXVxuICAgICAgICAgIHwgU29tZSAoT2sgb3V0cHV0KSAtPiBvdXRwdXRcbiAgICAgICAgICB8IFNvbWUgKEVycm9yIGV4bikgLT4gcmFpc2UgZXhuKVxuICAgICAgaW5cbiAgICAgICgqIFdlIG1pZ2h0IGhhbmcgZm9yZXZlciB0cnlpbmcgdG8gam9pbiB0aGUgcmVhZGluZyB0aHJlYWRzIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGtlZXBzXG4gICAgICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIG9wZW4uIE5vdCBoYW5kbGluZyB0aGlzIGJlY2F1c2UgSSB0aGluayB3ZSd2ZSBuZXZlciBzZWVuIGl0XG4gICAgICAgICBpbiB0aGUgd2lsZCBkZXNwaXRlIHJ1bm5pbmcgdnVsbmVyYWJsZSBjb2RlIGZvciB5ZWFycy4gKilcbiAgICAgICgqIFdlIGhhdmUgdG8gc3RhcnQgYm90aCB0aHJlYWRzIGJlZm9yZSBqb2luaW5nIGFueSBvZiB0aGVtLiAqKVxuICAgICAgbGV0IGZpbmlzaF9zdGRvdXQgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRvdXQgKEluZm8ub2Zfc3RyaW5nIFwic3Rkb3V0XCIpIGluXG4gICAgICBsZXQgZmluaXNoX3N0ZGVyciA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZGVyciAoSW5mby5vZl9zdHJpbmcgXCJzdGRlcnJcIikgaW5cbiAgICAgIHVuc3RhZ2UgZmluaXNoX3N0ZG91dCAoKSwgdW5zdGFnZSBmaW5pc2hfc3RkZXJyICgpXG4gICAgOztcblxuICAgIGxldCBvZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kID1cbiAgICAgIGxldCBwcm9jZXNzX2luZm8gPVxuICAgICAgICBVbml4LmNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgICgpXG4gICAgICAgICAgfnByb2c6KGFic19wYXRoIH5kaXI6d29ya2luZ19kaXIgcGF0aF90b19leGUpXG4gICAgICAgICAgfmFyZ3M6Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5lbnY6XG4gICAgICAgICAgICAobGV0IGhlbHBfc2V4cCA9IHN1cHBvcnRlZF92ZXJzaW9ucyB8PiBJbnQuU2V0LnNleHBfb2ZfdCB8PiBTZXhwLnRvX3N0cmluZyBpblxuICAgICAgICAgICAgIGBFeHRlbmQgWyBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFAsIGhlbHBfc2V4cCBdKVxuICAgICAgaW5cbiAgICAgIFVuaXguY2xvc2UgcHJvY2Vzc19pbmZvLnN0ZGluO1xuICAgICAgbGV0IHN0ZG91dCwgc3RkZXJyID0gcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciBwcm9jZXNzX2luZm8gaW5cbiAgICAgIGlnbm9yZSAoVW5peC53YWl0IChgUGlkIHByb2Nlc3NfaW5mby5waWQpIDogUGlkLnQgKiBVbml4LkV4aXRfb3Jfc2lnbmFsLnQpO1xuICAgICAgKCogTm93IHdlJ3ZlIGtpbGxlZCBhbGwgdGhlIHByb2Nlc3NlcyBhbmQgdGhyZWFkcyB3ZSBtYWRlLiAqKVxuICAgICAgbWF0Y2ggc3Rkb3V0IHw+IFNleHAub2Zfc3RyaW5nIHw+IFZlcnNpb25lZC50X29mX3NleHAgfD4gb2ZfdmVyc2lvbmVkIHdpdGhcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcImNhbm5vdCBwYXJzZSBjb21tYW5kIHNoYXBlXCJcbiAgICAgICAgICAgICAgfl86KGV4biA6IGV4bilcbiAgICAgICAgICAgICAgKHN0ZG91dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgKHN0ZGVyciA6IHN0cmluZyldXG4gICAgICB8IHQgLT4gdFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmQgKHQgOiB0KSB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICAgIG1hdGNoIHBhdGhfdG9fc3ViY29tbWFuZCB3aXRoXG4gICAgICB8IFtdIC0+IHRcbiAgICAgIHwgc3ViIDo6IHN1YnMgLT5cbiAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgfCBCYXNlIF8gLT4gZmFpbHdpdGhmIFwidW5leHBlY3RlZCBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICB8IExhenkgdGh1bmsgLT4gZmluZCAoTGF6eS5mb3JjZSB0aHVuaykgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgfCBFeGVjIHsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBjaGlsZF9zdWJjb21tYW5kOyBfIH0gLT5cbiAgICAgICAgICAgZmluZFxuICAgICAgICAgICAgIChvZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kKVxuICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6KHN1YiA6OiAoc3VicyBAIGNoaWxkX3N1YmNvbW1hbmQpKVxuICAgICAgICAgfCBHcm91cCBnIC0+XG4gICAgICAgICAgIChtYXRjaCBMaXN0LkFzc29jLmZpbmQgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcykgfmVxdWFsOlN0cmluZy5lcXVhbCBzdWIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcInVua25vd24gc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgICAgfCBTb21lIHQgLT4gZmluZCB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6c3VicykpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZCA9XG4gICAgU2V4cGFibGUub2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZFxuICAgIHw+IHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6W11cbiAgOztcblxuICBsZXQgcmVjIHNoYXBlX29mX3Byb3h5IHByb3h5IDogU2hhcGUudCA9IHNoYXBlX29mX3Byb3h5X2tpbmQgcHJveHkuUHJveHkua2luZFxuXG4gIGFuZCBzaGFwZV9vZl9leGUgKCkgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpciA9XG4gICAgc2hhcGVfb2ZfcHJveHkgKHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZClcblxuICBhbmQgc2hhcGVfb2ZfcHJveHlfa2luZCBraW5kID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyBiXG4gICAgfCBMYXp5IGwgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2hhcGVfb2ZfcHJveHlfa2luZCBsKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgR3JvdXBcbiAgICAgICAgeyBnIHdpdGhcbiAgICAgICAgICBzdWJjb21tYW5kcyA9IExhenkubWFwIGcuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnNoYXBlX29mX3Byb3h5KVxuICAgICAgICB9XG4gICAgfCBFeGVjICh7IGNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgOztcblxuICBsZXQgcmVjIHNoYXBlIHQgOiBTaGFwZS50ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyAoQmFzZS5zaGFwZSBiKVxuICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2hhcGUgZylcbiAgICB8IEV4ZWMgKHsgRXhlYy5jaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoRXhlYy5zaGFwZSBlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgICB8IExhenkgdGh1bmsgLT4gc2hhcGUgKExhenkuZm9yY2UgdGh1bmspXG4gIDs7XG5cbiAgbGV0IGdhdGhlcl9oZWxwIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cyBzaGFwZSA9XG4gICAgbGV0IHJlYyBsb29wIHBhdGggYWNjIHNoYXBlID1cbiAgICAgIGxldCBzdHJpbmdfb2ZfcGF0aCA9IGlmIGV4cGFuZF9kb3RzIHRoZW4gUGF0aC50b19zdHJpbmcgZWxzZSBQYXRoLnRvX3N0cmluZ19kb3RzIGluXG4gICAgICBsZXQgZ2F0aGVyX2dyb3VwIHBhdGggYWNjIHN1YmNvbW1hbmRzID1cbiAgICAgICAgbGV0IGZpbHRlcmVkX3N1YmNvbW1hbmRzID1cbiAgICAgICAgICAoKiBPbmx5IHNob3cgdGhlIFtoZWxwXSBzdWJjb21tYW5kIGF0IHRvcC1sZXZlbC4gKilcbiAgICAgICAgICBpZiBQYXRoLmlzX2VtcHR5IHBhdGhcbiAgICAgICAgICB0aGVuIHN1YmNvbW1hbmRzXG4gICAgICAgICAgZWxzZSBMaXN0LkFzc29jLnJlbW92ZSB+ZXF1YWw6U3RyaW5nLiggPSApIHN1YmNvbW1hbmRzIFwiaGVscFwiXG4gICAgICAgIGluXG4gICAgICAgIGZpbHRlcmVkX3N1YmNvbW1hbmRzXG4gICAgICAgIHw+IExpc3Quc3RhYmxlX3NvcnQgfmNvbXBhcmU6KGZ1biBhIGIgLT4gaGVscF9zY3JlZW5fY29tcGFyZSAoZnN0IGEpIChmc3QgYikpXG4gICAgICAgIHw+IExpc3QuZm9sZFxuICAgICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgICAgIH5mOihmdW4gKGFjYyA6IFNoYXBlLkZsYWdfaW5mby50IEZxdWV1ZS50KSAoc3ViY29tbWFuZCwgc2hhcGUpIC0+XG4gICAgICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQgaW5cbiAgICAgICAgICAgICAgIGxldCBuYW1lID0gc3RyaW5nX29mX3BhdGggcGF0aCBpblxuICAgICAgICAgICAgICAgbGV0IGRvYyA9IFNoYXBlLmdldF9zdW1tYXJ5IHNoYXBlIGluXG4gICAgICAgICAgICAgICBsZXQgYWNjID0gRnF1ZXVlLmVucXVldWUgYWNjIHsgbmFtZTsgZG9jOyBhbGlhc2VzID0gW10gfSBpblxuICAgICAgICAgICAgICAgaWYgcmVjdXJzaXZlIHRoZW4gbG9vcCBwYXRoIGFjYyBzaGFwZSBlbHNlIGFjYylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgICB8IEV4ZWMgKF8sIHNoYXBlKSAtPlxuICAgICAgICAoKiBJZiB0aGUgZXhlY3V0YWJsZSBiZWluZyBjYWxsZWQgZG9lc24ndCB1c2UgW0NvcmUuQ29tbWFuZF0sIHRoZW4gc2V4cCBleHRyYWN0aW9uXG4gICAgICAgICAgIHdpbGwgZmFpbC4gKilcbiAgICAgICAgKHRyeSBsb29wIHBhdGggYWNjIChzaGFwZSAoKSkgd2l0aFxuICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIHwgR3JvdXAgZyAtPiBnYXRoZXJfZ3JvdXAgcGF0aCBhY2MgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcylcbiAgICAgIHwgQmFzaWMgYiAtPlxuICAgICAgICBpZiBmbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYi5mbGFnc1xuICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZm10IC0+IFN0cmluZy4oIDw+ICkgZm10Lm5hbWUgXCJbLWhlbHBdXCIpXG4gICAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBmbXQgLT5cbiAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpmbXQubmFtZSBpblxuICAgICAgICAgICAgbGV0IGZtdCA9IHsgZm10IHdpdGggbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggfSBpblxuICAgICAgICAgICAgRnF1ZXVlLmVucXVldWUgYWNjIGZtdClcbiAgICAgICAgZWxzZSBhY2NcbiAgICAgIHwgTGF6eSB0aHVuayAtPiBsb29wIHBhdGggYWNjIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIGluXG4gICAgbG9vcCBQYXRoLmVtcHR5IEZxdWV1ZS5lbXB0eSBzaGFwZSB8PiBGcXVldWUudG9fbGlzdFxuICA7O1xuXG4gIGxldCBncm91cF9vcl9leGVjX2hlbHBfdGV4dCB+ZmxhZ3MgfnBhdGggfnN1bW1hcnkgfnJlYWRtZSB+Zm9ybWF0X2xpc3QgPVxuICAgIHVucGFyYWdyYXBoc1xuICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgWyBTb21lIHN1bW1hcnlcbiAgICAgICAgIDsgU29tZSAoU3RyaW5nLmNvbmNhdCBbIFwiICBcIjsgUGF0aC50b19zdHJpbmcgcGF0aDsgXCIgU1VCQ09NTUFORFwiIF0pXG4gICAgICAgICA7IHJlYWRtZVxuICAgICAgICAgOyBTb21lIChpZiBmbGFncyB0aGVuIFwiPT09IHN1YmNvbW1hbmRzIGFuZCBmbGFncyA9PT1cIiBlbHNlIFwiPT09IHN1YmNvbW1hbmRzID09PVwiKVxuICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgZm9ybWF0X2xpc3QpXG4gICAgICAgICBdKVxuICA7O1xuXG4gIGxldCByZWMgaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgPVxuICAgIGxldCBmb3JtYXRfbGlzdCA9IGdhdGhlcl9oZWxwIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSBzaGFwZSBpblxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEJhc2ljIGIgLT5cbiAgICAgIGxldCB1c2FnZSA9IFNoYXBlLkJhc2VfaW5mby5nZXRfdXNhZ2UgYiBpblxuICAgICAgdW5wYXJhZ3JhcGhzXG4gICAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgICAgWyBTb21lIGIuc3VtbWFyeVxuICAgICAgICAgICA7IFNvbWUgKFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiBcIiBeIHVzYWdlKVxuICAgICAgICAgICA7IGIucmVhZG1lXG4gICAgICAgICAgIDsgU29tZSBcIj09PSBmbGFncyA9PT1cIlxuICAgICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBiLmZsYWdzKVxuICAgICAgICAgICBdKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6Zy5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6Zy5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgRXhlYyAoZSwgXykgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmUucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5OmUuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IExhenkgdGh1bmsgLT4gaGVscF9mb3Jfc2hhcGUgKExhenkuZm9yY2UgdGh1bmspIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlXG4gIDs7XG5cbiAgbGV0IGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJleHBsYWluIGEgZ2l2ZW4gc3ViY29tbWFuZCAocGVyaGFwcyByZWN1cnNpdmVseSlcIlxuICAgICAgQmFzZS5TcGVjLihcbiAgICAgICAgZW1wdHlcbiAgICAgICAgKz4gZmxhZyBcIi1yZWN1cnNpdmVcIiBub19hcmcgfmRvYzpcIiBzaG93IHN1YmNvbW1hbmRzIG9mIHN1YmNvbW1hbmRzLCBldGMuXCJcbiAgICAgICAgKz4gZmxhZyBcIi1mbGFnc1wiIG5vX2FyZyB+ZG9jOlwiIHNob3cgZmxhZ3MgYXMgd2VsbCBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgICs+IGZsYWcgXCItZXhwYW5kLWRvdHNcIiBub19hcmcgfmRvYzpcIiBleHBhbmQgc3ViY29tbWFuZHMgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICArPiBwYXRoXG4gICAgICAgICs+IGVudlxuICAgICAgICArPiBhbm9uIChtYXliZSAoXCJTVUJDT01NQU5EXCIgJTogc3RyaW5nKSkpXG4gICAgICAoZnVuIHJlY3Vyc2l2ZSBmbGFncyBleHBhbmRfZG90cyBwYXRoIChlbnYgOiBFbnYudCkgY21kX29wdCAoKSAtPlxuICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICBtYXRjaCBFbnYuZmluZCBlbnYgc3Vic19rZXkgd2l0aFxuICAgICAgICAgICB8IFNvbWUgc3VicyAtPiBzdWJzXG4gICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgKCogbWFpbnRhaW5lZCBieSBbZGlzcGF0Y2hdICopXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHBhdGggPVxuICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGgucG9wX2hlbHAgcGF0aCBpblxuICAgICAgICAgICBPcHRpb24uZm9sZCBjbWRfb3B0IH5pbml0OnBhdGggfmY6KGZ1biBwYXRoIHN1YmNvbW1hbmQgLT5cbiAgICAgICAgICAgICBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBwYXRoLCBzaGFwZSA9XG4gICAgICAgICAgIG1hdGNoIGNtZF9vcHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBsZXQgc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCBzdWJzIH5mOnNoYXBlIHw+IExhenkuZnJvbV92YWwgaW5cbiAgICAgICAgICAgICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSBpblxuICAgICAgICAgICAgIHBhdGgsIFNoYXBlLkdyb3VwIHsgcmVhZG1lOyBzdW1tYXJ5OyBzdWJjb21tYW5kcyB9XG4gICAgICAgICAgIHwgU29tZSBjbWQgLT5cbiAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICBsb29rdXBfZXhwYW5kIChMaXN0LkFzc29jLm1hcCBzdWJzIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSkgY21kIFN1YmNvbW1hbmRcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAgIFwidW5rbm93biBzdWJjb21tYW5kICVzIGZvciBjb21tYW5kICVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICBjbWRcbiAgICAgICAgICAgICAgICAgIChQYXRoLnRvX3N0cmluZyBwYXRoKVxuICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgfCBPayAocG9zc2libHlfZXhwYW5kZWRfbmFtZSwgdCkgLT5cbiAgICAgICAgICAgICAgICAoKiBGaXggdGhlIHVuZXhwYW5kZWQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGgucmVwbGFjZV9maXJzdCB+ZnJvbTpjbWQgfnRvXzpwb3NzaWJseV9leHBhbmRlZF9uYW1lIHBhdGggaW5cbiAgICAgICAgICAgICAgICBwYXRoLCBzaGFwZSB0KVxuICAgICAgICAgaW5cbiAgICAgICAgIHByaW50X2VuZGxpbmUgKGhlbHBfZm9yX3NoYXBlIHNoYXBlIHBhdGggfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzKSlcbiAgOztcblxuICAoKiBUaGlzIHNjcmlwdCB3b3JrcyBpbiBib3RoIGJhc2ggKHZpYSByZWFkYXJyYXkpIGFuZCB6c2ggKHZpYSByZWFkIC1BKS4gIElmIHlvdSBjaGFuZ2VcbiAgICAgaXQsIHBsZWFzZSB0ZXN0IGluIGJvdGggYmFzaCBhbmQgenNoLiAgSXQgZG9lcyBub3Qgd29yayB0Y3NoIChkaWZmZXJlbnQgZnVuY3Rpb25cbiAgICAgc3ludGF4KS4gKilcbiAgbGV0IGR1bXBfYXV0b2NvbXBsZXRlX2Z1bmN0aW9uICgpID1cbiAgICBsZXQgZm5hbWUgPSBzcHJpbnRmIFwiX2pzYXV0b2NvbV8lc1wiIChQaWQudG9fc3RyaW5nIChVbml4LmdldHBpZCAoKSkpIGluXG4gICAgbGV0IGFyZ3ZfMCA9IENhbWwuU3lzLmFyZ3YuKDApIGluXG4gICAgcHJpbnRmXG4gICAgICBcImZ1bmN0aW9uICVzIHtcXG5cXFxuICAgICAgXFwgIGV4cG9ydCBDT01QX0NXT1JEXFxuXFxcbiAgICAgIFxcICBDT01QX1dPUkRTWzBdPSVzXFxuXFxcbiAgICAgIFxcICBpZiB0eXBlIHJlYWRhcnJheSA+IC9kZXYvbnVsbFxcblxcXG4gICAgICBcXCAgdGhlbiByZWFkYXJyYXkgLXQgQ09NUFJFUExZIDwgPChcXFwiJHtDT01QX1dPUkRTW0BdfVxcXCIpXFxuXFxcbiAgICAgIFxcICBlbHNlIElGUz1cXFwiXFxuXFxcbiAgICAgICBcXFwiIHJlYWQgLWQgXFxcIlxcXCIgLUEgQ09NUFJFUExZIDwgPChcXFwiJHtDT01QX1dPUkRTW0BdfVxcXCIpXFxuXFxcbiAgICAgIFxcICBmaVxcblxcXG4gICAgICAgfVxcblxcXG4gICAgICAgY29tcGxldGUgLUYgJXMgJXNcXG5cXFxuICAgICAgICUhXCJcbiAgICAgIGZuYW1lXG4gICAgICBhcmd2XzBcbiAgICAgIGZuYW1lXG4gICAgICBhcmd2XzBcbiAgOztcblxuICBsZXQgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQgPVxuICAgIEludC5TZXQuaW50ZXIgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zIHN1cHBvcnRlZF92ZXJzaW9uc1xuICAgIHw+IEludC5TZXQubWF4X2VsdFxuICAgIHw+IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIkNvdWxkbid0IGNob29zZSBhIHN1cHBvcnRlZCBoZWxwIG91dHB1dCB2ZXJzaW9uIGZvciBDb21tYW5kLmV4ZWMgZnJvbSB0aGUgZ2l2ZW4gXFxcbiAgICAgICAgIHN1cHBvcnRlZCB2ZXJzaW9ucy5cIlxuICAgICAgICBTZXhwYWJsZS5zdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICAgICAgSW50LlNldC5zZXhwX29mX3RcbiAgICB8IFNvbWUgdmVyc2lvbl90b191c2UgLT5cbiAgICAgIHNleHBhYmxlX3NoYXBlIHRcbiAgICAgIHw+IFNleHBhYmxlLmZpbmQgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgfD4gU2V4cGFibGUudG9fdmVyc2lvbmVkIH52ZXJzaW9uX3RvX3VzZVxuICAgICAgfD4gU2V4cGFibGUuVmVyc2lvbmVkLnNleHBfb2ZfdFxuICAgICAgfD4gU2V4cC50b19zdHJpbmdcbiAgICAgIHw+IHByaW50X3N0cmluZ1xuICA7O1xuXG4gIGxldCBoYW5kbGVfZW52aXJvbm1lbnQgdCB+YXJndiA9XG4gICAgbWF0Y2ggYXJndiB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm1pc3NpbmcgZXhlY3V0YWJsZSBuYW1lXCJcbiAgICB8IGNtZCA6OiBhcmdzIC0+XG4gICAgICBPcHRpb24uaXRlciAoZ2V0ZW52X2FuZF9jbGVhciBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFApIH5mOihmdW4gdmVyc2lvbiAtPlxuICAgICAgICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zID0gU2V4cC5vZl9zdHJpbmcgdmVyc2lvbiB8PiBJbnQuU2V0LnRfb2Zfc2V4cCBpblxuICAgICAgICBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZDphcmdzO1xuICAgICAgICBleGl0IDApO1xuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0gpIH5mOihmdW4gXyAtPlxuICAgICAgICBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKTtcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIGNtZCwgYXJnc1xuICA7O1xuXG4gIGxldCBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyA9XG4gICAgbGV0IG1heWJlX2NvbXBfY3dvcmQgPSBtYXliZV9jb21wX2N3b3JkICgpIGluXG4gICAgbGV0IGFyZ3MgPVxuICAgICAgbWF0Y2ggbWF5YmVfY29tcF9jd29yZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gQ21kbGluZS5vZl9saXN0IGFyZ3NcbiAgICAgIHwgU29tZSBjb21wX2N3b3JkIC0+XG4gICAgICAgIGxldCBhcmdzID0gTGlzdC50YWtlIChhcmdzIEAgWyBcIlwiIF0pIGNvbXBfY3dvcmQgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6Q21kbGluZS5OaWwgfmY6KGZ1biBhcmcgYXJncyAtPlxuICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgQ21kbGluZS5OaWwgLT4gQ21kbGluZS5Db21wbGV0ZSBhcmdcbiAgICAgICAgICB8IF8gLT4gQ21kbGluZS5Db25zIChhcmcsIGFyZ3MpKVxuICAgIGluXG4gICAgUGF0aC5jcmVhdGUgfnBhdGhfdG9fZXhlOmNtZCwgYXJncywgbWF5YmVfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCByZWMgYWRkX2hlbHBfc3ViY29tbWFuZHMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBfIGFzIHQgLT4gdFxuICAgIHwgRXhlYyBfIGFzIHQgLT4gdFxuICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH0gLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIHN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICAoTGlzdC5Bc3NvYy5tYXAgc3ViY29tbWFuZHMgfmY6YWRkX2hlbHBfc3ViY29tbWFuZHMpXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwiaGVscFwiXG4gICAgICAgICAgICAoaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUpKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZF9oZWxwX3N1YmNvbW1hbmRzIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggPVxuICAgIE9wdGlvbi52YWx1ZV9tYXAgZXh0ZW5kIH5kZWZhdWx0OmFyZ3MgfmY6KGZ1biBmIC0+XG4gICAgICBDbWRsaW5lLmV4dGVuZCBhcmdzIH5leHRlbmQ6ZiB+cGF0aClcbiAgOztcblxuICBsZXQgcmVjIGRpc3BhdGNoXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBlbnZcbiAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgICB+YXJnc1xuICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICBsZXQgdCA9IExhenkuZm9yY2UgdGh1bmsgaW5cbiAgICAgIGRpc3BhdGNoXG4gICAgICAgIHRcbiAgICAgICAgZW52XG4gICAgICAgIH5leHRlbmRcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBhcmdzID0gbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCBpblxuICAgICAgbGV0IGhlbHBfdGV4dCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoaGVscF9mb3Jfc2hhcGUgKHNoYXBlIHQpIHBhdGggfnJlY3Vyc2l2ZTpmYWxzZSB+ZmxhZ3M6dHJ1ZSB+ZXhwYW5kX2RvdHM6ZmFsc2UpXG4gICAgICBpblxuICAgICAgQmFzZS5ydW5cbiAgICAgICAgYmFzZVxuICAgICAgICBlbnZcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfmhlbHBfdGV4dFxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgfCBFeGVjIGV4ZWMgLT5cbiAgICAgIGxldCBhcmdzID0gQ21kbGluZS50b19saXN0IChtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoKSBpblxuICAgICAgRXhlYy5leGVjX3dpdGhfYXJncyB+YXJncyBleGVjIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgIHwgR3JvdXAgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSBhcyBncm91cCkgLT5cbiAgICAgIGxldCBjb21wbGV0aW5nID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSBFbnYuc2V0IGVudiB+a2V5OnN1YnNfa2V5IH5kYXRhOihMYXp5LmZvcmNlIHN1YnMpIGluXG4gICAgICBsZXQgZGllX3Nob3dpbmdfaGVscCBtc2cgPVxuICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiJXNcXG4lIVwiXG4gICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSkpXG4gICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICBkaWUgXCIlc1wiIG1zZyAoKSlcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkID1cbiAgICAgICAgbGV0IG1heWJlX25ld19jb21wX2N3b3JkID0gT3B0aW9uLm1hcCB+ZjpJbnQucHJlZCBtYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgc2tpcCByZXN0ID0gcGFyc2VfZ3JvdXAgcmVzdCB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHJlc29sdmUgc3ViIHJlc3QgPVxuICAgICAgICAgIGxldCBzdWJzID0gTGlzdC5Bc3NvYy5tYXAgKExhenkuZm9yY2Ugc3VicykgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpIGluXG4gICAgICAgICAgbWF0Y2ggbG9va3VwX2V4cGFuZCBzdWJzIHN1YiBTdWJjb21tYW5kIHdpdGhcbiAgICAgICAgICB8IEVycm9yIG1zZyAtPiBkaWVfc2hvd2luZ19oZWxwIG1zZ1xuICAgICAgICAgIHwgT2sgKHN1YiwgdCkgLT5cbiAgICAgICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgICAgICB+cGF0aDooUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpzdWIpXG4gICAgICAgICAgICAgIH5hcmdzOnJlc3RcbiAgICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoYXJncyA6IENtZGxpbmUudCkgd2l0aFxuICAgICAgICB8IE5pbCAtPlxuICAgICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgZGllX3Nob3dpbmdfaGVscFxuICAgICAgICAgICAgICAgKHNwcmludGYgXCJtaXNzaW5nIHN1YmNvbW1hbmQgZm9yIGNvbW1hbmQgJXNcIiAoUGF0aC50b19zdHJpbmcgcGF0aCkpXG4gICAgICAgICAgIHwgU29tZSBib2R5IC0+IGJvZHkgfnBhdGg6KFBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGgpKVxuICAgICAgICB8IENvbnMgKHN1YiwgcmVzdCkgLT5cbiAgICAgICAgICAoKiBNYXRjaCBmb3IgZmxhZ3MgcmVjb2duaXplZCB3aGVuIHN1YmNvbW1hbmRzIGFyZSBleHBlY3RlZCBuZXh0ICopXG4gICAgICAgICAgKG1hdGNoIHN1YiB3aXRoXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgYXQgdGhlIHRvcCBsZXZlbCBjb21tYW5kIG9ubHkgKilcbiAgICAgICAgICAgfCAoXCItdmVyc2lvblwiIHwgXCItLXZlcnNpb25cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb247XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgKFwiLWJ1aWxkLWluZm9cIiB8IFwiLS1idWlsZC1pbmZvXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGV2ZXJ5d2hlcmUgKilcbiAgICAgICAgICAgfCBcIi1oZWxwXCIgfCBcIi0taGVscFwiIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTmlsIHwgQ29tcGxldGUgKF8gOiBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IGdyb3VwIHdpdGggc3ViY29tbWFuZHMgPSBzdWJzIH0pKVxuICAgICAgICAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgICAgICAgICBleGl0IDBcbiAgICAgICAgICAgICAgIHwgQ21kbGluZS5Db25zIChmaXJzdF9vZl9yZXN0LCByZXN0X29mX3Jlc3QpIC0+XG4gICAgICAgICAgICAgICAgIHJlc29sdmUgZmlyc3Rfb2ZfcmVzdCAoQ29ucyAoc3ViLCByZXN0X29mX3Jlc3QpKSlcbiAgICAgICAgICAgfCAoXyA6IHN0cmluZykgLT4gcmVzb2x2ZSBzdWIgcmVzdClcbiAgICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgTGF6eS5mb3JjZSBzdWJzXG4gICAgICAgICAgICB8PiBMaXN0Lm1hcCB+Zjpmc3RcbiAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gbmFtZSAtPiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0KVxuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlN0cmluZy5jb21wYXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggY29tcGxldGVfc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgICAgICBzaGFwZSB0IHw+IFNoYXBlLmZ1bGx5X2ZvcmNlZCB8PiBTaGFwZS5GdWxseV9mb3JjZWQuZXhwYW5kZWRfc3ViY29tbWFuZHNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChtYXRjaCBmIH5wYXRoOihQYXRoLnBhcnRzIHBhdGgpIH5wYXJ0IHN1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGV4aXQgMVxuICAgICAgICAgICAgICB8IFNvbWUgdG9fb3V0cHV0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZSAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHRvX291dHB1dCk7XG4gICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBMaXN0Lml0ZXIgc3VicyB+ZjpwcmludF9lbmRsaW5lO1xuICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgIGluXG4gICAgICBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCBydW5cbiAgICAgICAgP3ZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgP3ZlcnNpb25cbiAgICAgICAgP2J1aWxkX2luZm9cbiAgICAgICAgPyhhcmd2ID0gQXJyYXkudG9fbGlzdCBDYW1sLlN5cy5hcmd2KVxuICAgICAgICA/ZXh0ZW5kXG4gICAgICAgID8od2hlbl9wYXJzaW5nX3N1Y2NlZWRzID0gRm4uaWQpXG4gICAgICAgID9jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBidWlsZF9pbmZvID1cbiAgICAgIG1hdGNoIGJ1aWxkX2luZm8gd2l0aFxuICAgICAgfCBTb21lIHYgLT4gbGF6eSB2XG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgIGluXG4gICAgbGV0IHZlcnNpb24gPVxuICAgICAgbWF0Y2ggdmVyc2lvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgKCogW3ZlcnNpb25dIHdhcyBzcGFjZSBkZWxpbWl0ZWQgYXQgc29tZSBwb2ludCBhbmQgbmV3bGluZSBkZWxpbWl0ZWRcbiAgICAgICAgICAgYXQgYW5vdGhlci4gIFdlIGFsd2F5cyBwcmludCBvbmUgKHJlcG8sIHJldmlzaW9uKSBwYWlyIHBlciBsaW5lXG4gICAgICAgICAgIGFuZCBlbnN1cmUgc29ydGVkIG9yZGVyICopXG4gICAgICAgIGxhenlcbiAgICAgICAgICAoVmVyc2lvbl9pbmZvLm5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzXG4gICAgICAgICAgICAgKFN0cmluZy5zcGxpdCB2IH5vbjonICcgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihTdHJpbmcuc3BsaXQgfm9uOidcXG4nKSkpXG4gICAgaW5cbiAgICBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT5cbiAgICAgIGxldCB0ID0gVmVyc2lvbl9pbmZvLmFkZCB0IH52ZXJzaW9uIH5idWlsZF9pbmZvIGluXG4gICAgICBsZXQgdCA9IGFkZF9oZWxwX3N1YmNvbW1hbmRzIHQgaW5cbiAgICAgIGxldCBjbWQsIGFyZ3MgPSBoYW5kbGVfZW52aXJvbm1lbnQgdCB+YXJndiBpblxuICAgICAgbGV0IHBhdGgsIGFyZ3MsIG1heWJlX25ld19jb21wX2N3b3JkID0gcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgaW5cbiAgICAgIHRyeVxuICAgICAgICBkaXNwYXRjaFxuICAgICAgICAgIHRcbiAgICAgICAgICBFbnYuZW1wdHlcbiAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgfnBhdGhcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgIHdpdGhcbiAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cgLT5cbiAgICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgcHJlcnJfZW5kbGluZSBtc2c7XG4gICAgICAgICAgZXhpdCAxKSlcbiAgOztcblxuICBsZXQgZGVwcmVjYXRlZF9ydW4gdCB+Y21kIH5hcmdzIH5pc19oZWxwIH5pc19oZWxwX3JlYyB+aXNfaGVscF9yZWNfZmxhZ3MgfmlzX2V4cGFuZF9kb3RzXG4gICAgPVxuICAgIGxldCBwYXRoX3N0cmluZ3MgPSBTdHJpbmcuc3BsaXQgY21kIH5vbjonICcgaW5cbiAgICBsZXQgcGF0aCA9IFBhdGgub2ZfcGFydHMgcGF0aF9zdHJpbmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19leHBhbmRfZG90cyB0aGVuIFwiLWV4cGFuZC1kb3RzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjX2ZsYWdzIHRoZW4gXCItZmxhZ3NcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscF9yZWMgdGhlbiBcIi1yXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHAgdGhlbiBcIi1oZWxwXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IENtZGxpbmUub2ZfbGlzdCBhcmdzIGluXG4gICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgZGlzcGF0Y2hcbiAgICAgIHRcbiAgICAgIEVudi5lbXB0eVxuICAgICAgfnBhdGhcbiAgICAgIH5hcmdzXG4gICAgICB+ZXh0ZW5kOk5vbmVcbiAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZDpOb25lXG4gICAgICB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uXG4gICAgICB+YnVpbGRfaW5mbzpWZXJzaW9uX2luZm8uZGVmYXVsdF9idWlsZF9pbmZvXG4gICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjpOb25lXG4gICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzOkZuLmlkXG4gICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHM6Tm9uZVxuICA7O1xuZW5kXG5cbigqIE5PVEU6IGFsbCB0aGF0IGZvbGxvd3MgaXMgc2ltcGx5IG5hbWVzcGFjZSBtYW5hZ2VtZW50IGJvaWxlcnBsYXRlLiAgVGhpcyB3aWxsIGdvIGF3YXlcbiAgIG9uY2Ugd2UgcmUtd29yayB0aGUgaW50ZXJuYWxzIG9mIENvbW1hbmQgdG8gdXNlIEFwcGxpY2F0aXZlIGZyb20gdGhlIGdyb3VuZCB1cC4gKilcblxubW9kdWxlIFBhcmFtID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICsnYSB0XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGhlbHAgOiBzdHJpbmcgTGF6eS50IHRcbiAgICB2YWwgcGF0aCA6IHN0cmluZyBsaXN0IHRcbiAgICB2YWwgYXJncyA6IHN0cmluZyBsaXN0IHRcblxuICAgIHZhbCBmbGFnXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEZsYWcudFxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBBcmdfdHlwZS50XG4gICAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgICAgLT4gZGVmYXVsdDonYVxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGFub24gOiAnYSBBbm9ucy50IC0+ICdhIHRcbiAgICB2YWwgZXNjYXBlX2Fub24gOiBmaW5hbF9hbm9uOidhIEFub25zLnQgLT4gKCdhICogc3RyaW5nIGxpc3QpIHRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA6IHNpZ1xuICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgIHwgRGVmYXVsdF90byA6ICdhIC0+ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgZW5kXG5cbiAgICB2YWwgY2hvb3NlX29uZVxuICAgICAgOiAgJ2Egb3B0aW9uIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGFuZF9hcmdfbmFtZXMgOiAnYSB0IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG4gICAgdmFsIGFuZF9hcmdfbmFtZSA6ICdhIHQgLT4gKCdhICogc3RyaW5nKSB0XG4gICAgdmFsIGFyZ19uYW1lcyA6ICdhIHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIEEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBTcGVjLnBhcmFtXG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSBTcGVjLmNvbnN0XG4gICAgICAgIGxldCBhcHBseSA9IFNwZWMuYXBwbHlcbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gU3BlYy5tYXBcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgaW5jbHVkZSBBXG5cbiAgbGV0IGhlbHAgPSBTcGVjLmhlbHBcbiAgbGV0IHBhdGggPSBTcGVjLnBhdGhcbiAgbGV0IGFyZ3MgPSBTcGVjLmFyZ3NcbiAgbGV0IGZsYWcgPSBTcGVjLmZsYWdcbiAgbGV0IGFub24gPSBTcGVjLmFub25cbiAgbGV0IGNob29zZV9vbmUgPSBTcGVjLmNob29zZV9vbmVcbiAgbGV0IGFyZ19uYW1lcyA9IFNwZWMuYXJnX25hbWVzXG4gIGxldCBhbmRfYXJnX25hbWVzID0gU3BlYy5hbmRfYXJnX25hbWVzXG4gIGxldCBhbmRfYXJnX25hbWUgPSBTcGVjLmFuZF9hcmdfbmFtZVxuICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jID0gU3BlYy5mbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcblxuICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBTcGVjLklmX25vdGhpbmdfY2hvc2VuXG4gIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG5cbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICBvcGVuIEZsYWdcblxuICAgIGxldCBlc2NhcGUgPSBlc2NhcGVcbiAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgbGV0IG1hcF9mbGFnID0gbWFwX2ZsYWdcbiAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgIGxldCBvbmVfb3JfbW9yZSA9IG9uZV9vcl9tb3JlXG4gICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcbiAgZW5kXG5cbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICBvcGVuIEFub25zXG5cbiAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0XG4gICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgIGxldCB0MiA9IHQyXG4gICAgbGV0IHQzID0gdDNcbiAgICBsZXQgdDQgPSB0NFxuICBlbmRcblxuICBsZXQgZXNjYXBlX2Fub24gPSBTcGVjLmVzY2FwZV9hbm9uXG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJhbVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBQYXJhbVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG5cbnR5cGUgJ3Jlc3VsdCBiYXNpY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmcgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpIC0+ICh1bml0IC0+ICdyZXN1bHQpIFBhcmFtLnQgLT4gdFxuXG5sZXQgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbSA9XG4gIGxldCBzcGVjID0gU3BlYy5vZl9wYXJhbXMgQEAgUGFyYW0ubWFwIHBhcmFtIH5mOihmdW4gcnVuICgpICgpIC0+IHJ1biAoKSkgaW5cbiAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gZiAoKSAtPiBTdHJpbmcuc3RyaXAgKGYgKCkpKSBpblxuICBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHNwZWMgKClcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBhYnNfcGF0aCA9IGFic19wYXRoXG4gIGxldCB3b3JkX3dyYXAgPSBTaGFwZS5Qcml2YXRlLndvcmRfd3JhcFxuXG4gIG1vZHVsZSBBbm9ucyA9IEFub25zXG4gIG1vZHVsZSBDbWRsaW5lID0gQ21kbGluZVxuICBtb2R1bGUgRm9yX3VuaXggPSBGb3JfdW5peFxuICBtb2R1bGUgUGF0aCA9IFBhdGhcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3BlY1xuXG4gICAgbGV0IHRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSBwYXJhbSA9XG4gICAgICBDaG9vc2Vfb25lLkNob2ljZV9uYW1lLihjcmVhdGVfZXhuIHBhcmFtIHw+IHRvX3N0cmluZylcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgcnVuID0gYFVzZV9Db21tYW5kX3VuaXhcbmxldCBzaGFwZSA9IGBVc2VfQ29tbWFuZF91bml4XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0cmluZ19pZF9pbnRmXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWxpZGF0ZSA6IHN0cmluZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gOiBib29sXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgICAgICAgbGV0IGNoZWNrX2Zvcl93aGl0ZXNwYWNlID1cbiAgICAgICAgICBsZXQgaW52YWxpZCBzIHJlYXNvbiA9XG4gICAgICAgICAgICBFcnJvciAoc3ByaW50ZiBcIiclcycgaXMgbm90IGEgdmFsaWQgJXMgYmVjYXVzZSAlc1wiIHMgTS5tb2R1bGVfbmFtZSByZWFzb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gcyAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgaWYgSW50LiggPSApIGxlbiAwXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGlzIGVtcHR5XCJcbiAgICAgICAgICAgIGVsc2UgaWYgQ2hhci5pc193aGl0ZXNwYWNlIHMuWzBdIHx8IENoYXIuaXNfd2hpdGVzcGFjZSBzLltsZW4gLSAxXVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBoYXMgd2hpdGVzcGFjZSBvbiB0aGUgZWRnZVwiXG4gICAgICAgICAgICBlbHNlIE9rICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHZhbGlkYXRlIHMgPSBSZXN1bHQubWFwX2Vycm9yIChNLnZhbGlkYXRlIHMpIH5mOkVycm9yLnRvX3N0cmluZ19tYWNoXG5cbiAgICAgICAgbGV0IGNoZWNrIHMgPVxuICAgICAgICAgIGlmIE0uaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb25cbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGNoZWNrX2Zvcl93aGl0ZXNwYWNlIHMgd2l0aFxuICAgICAgICAgICAgfCBPayAoKSAtPiB2YWxpZGF0ZSBzXG4gICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIGVycm9yKVxuICAgICAgICAgIGVsc2UgdmFsaWRhdGUgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgICAgICBsZXQgcHAgPSBTdHJpbmcucHBcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGludmFsaWRfYXJnIGVyclxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuU3RhYmxlLlYxLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoU3RyaW5nKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdHJpbmdcbiAgICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVF93aXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRfd2l0aF9jb21wYXJhdG9yXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGVfbGF0ZXN0ID0gU3RhYmxlLlYxXG4gIGluY2x1ZGUgU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvclxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3IpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IFN0cmluZy5xdWlja2NoZWNrX29ic2VydmVyXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBTdHJpbmcuZ2VuX25vbmVtcHR5JyBDaGFyLmdlbl9wcmludFxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciB+ZjooZnVuIHN0cmluZyAtPiBjaGVjayBzdHJpbmcgfD4gUmVzdWx0LmlzX29rKVxuICA7O1xuXG4gIGxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgICBsZXQgdmFsaWRhdGUgPSBGbi5jb25zdCAoT2sgKCkpXG4gICAgICAgIGxldCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA9IHRydWVcbiAgICAgIGVuZClcbiAgICAgICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWxpZGF0ZSA6IHN0cmluZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gOiBib29sXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSkgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSkgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZVxuICBNYWtlXG4gICAgKHN0cnVjdFxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlN0cmluZ19pZFwiXG4gICAgZW5kKVxuICAgICgpXG5cbm1vZHVsZSBTdHJpbmdfd2l0aG91dF92YWxpZGF0aW9uX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBGbi5pZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0YWJsZV91bml0X3Rlc3RfaW50ZlxuXG5tb2R1bGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgZGVzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHNleHBfYXNfc3RyaW5nIHw+IFNleHAub2Zfc3RyaW5nIHw+IFslb2Zfc2V4cDogVC50XSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPlxuICAgICAgICAgICBPcl9lcnJvci50YWdfYXJnXG4gICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICBcImNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXhwXCJcbiAgICAgICAgICAgICAoc2V4cF9hc19zdHJpbmcsIGBFeHBlY3RlZCB0KVxuICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogWyBgRXhwZWN0ZWQgb2YgVC50IF1dXG4gICAgICAgICB8IE9rIHQnIC0+XG4gICAgICAgICAgIGlmIFQuZXF1YWwgdCB0J1xuICAgICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgc2V4cF9hc19zdHJpbmcgaW5cbiAgICAgICAgICAgbGV0IHNlcmlhbGl6ZWRfc2V4cCA9IFQuc2V4cF9vZl90IHQgaW5cbiAgICAgICAgICAgaWYgU2V4cC4oIDw+ICkgc2VyaWFsaXplZF9zZXhwIHNleHBcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCBzZXhwLCBgQnV0X2dvdCBzZXJpYWxpemVkX3NleHApXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgXV0pKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgXywgZXhwZWN0ZWRfYmluX2lvKSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCB0b19iaW5fc3RyaW5nIHQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfYmluX2lvID0gdG9fYmluX3N0cmluZyB0IGluXG4gICAgICBpZiBTdHJpbmcuKCA8PiApIHNlcmlhbGl6ZWRfYmluX2lvIGV4cGVjdGVkX2Jpbl9pb1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKHQsIGBFeHBlY3RlZCBleHBlY3RlZF9iaW5faW8sIGBCdXRfZ290IHNlcmlhbGl6ZWRfYmluX2lvKVxuICAgICAgICAgIFslc2V4cF9vZjogVC50ICogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nIF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSBzZXJpYWxpemVkX2Jpbl9pbyBpblxuICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX2Jpbl9pb190ZXN0IChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3Vub3JkZXJlZF9jb250YWluZXIgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVGVzdCA9IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX3Rlc3RcblxuICBsZXQldGVzdF91bml0IFwic2V4cFwiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3Quc2V4cHM7IF8gfSkgLT5cbiAgICAgIGxldCBzZXhwcyA9IExpc3QubWFwIHNleHBzIH5mOlNleHAub2Zfc3RyaW5nIGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9lbGVtZW50cyA9XG4gICAgICAgIG1hdGNoIFQuc2V4cF9vZl90IHQgd2l0aFxuICAgICAgICB8IFNleHAuTGlzdCBzZXhwcyAtPiBzZXhwc1xuICAgICAgICB8IFNleHAuQXRvbSBfIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImV4cGVjdGVkIGxpc3Qgd2hlbiBzZXJpYWxpemluZyB1bm9yZGVyZWQgY29udGFpbmVyXCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFQuc2V4cF9vZl90XG4gICAgICBpblxuICAgICAgbGV0IHNvcnRlZF9zZXhwcyA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2V4cHMgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2VyaWFsaXplZCA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2VyaWFsaXplZF9lbGVtZW50cyBpblxuICAgICAgaWYgbm90IChMaXN0LmVxdWFsIFNleHAuKCA9ICkgc29ydGVkX3NleHBzIHNvcnRlZF9zZXJpYWxpemVkKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cHMsIGBCdXRfZ290IHNlcmlhbGl6ZWRfZWxlbWVudHMpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgbGlzdCBdXTtcbiAgICAgIGxldCBzZXhwX3Blcm11dGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIHNleHBzKSBpblxuICAgICAgTGlzdC5pdGVyIHNleHBfcGVybXV0YXRpb25zIH5mOihmdW4gc2V4cHMgLT5cbiAgICAgICAgbGV0IHQnID0gVC50X29mX3NleHAgKFNleHAuTGlzdCBzZXhwcykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbXNpbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBpc19jb25jYXRlbmF0aW9uIHN0cmluZyBzdHJpbmdzID1cbiAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgdGhlbiBMaXN0LmZvcl9hbGwgc3RyaW5ncyB+ZjpTdHJpbmcuaXNfZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCByZXZfc2tpcHBlZCBzdHJpbmdzID1cbiAgICAgICAgbWF0Y2ggc3RyaW5ncyB3aXRoXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgICAgfCBwcmVmaXggOjogc3RyaW5ncyAtPlxuICAgICAgICAgIGxldCBjb250aW51ZSAoKSA9IGxvb3AgKHByZWZpeCA6OiByZXZfc2tpcHBlZCkgc3RyaW5ncyBpblxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeCBzdHJpbmcgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY29udGludWUgKClcbiAgICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIChMaXN0LnJldl9hcHBlbmQgcmV2X3NraXBwZWQgc3RyaW5ncykgfHwgY29udGludWUgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBzdHJpbmdzKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LmJpbl9pb19oZWFkZXI7IGJpbl9pb19lbGVtZW50czsgXyB9KSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCBlbGVtZW50cyA9IGJpbl9pb19lbGVtZW50cyBpblxuICAgICAgbGV0IGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cyA9IGJpbl9pb19oZWFkZXIgXiBTdHJpbmcuY29uY2F0IGVsZW1lbnRzIGluXG4gICAgICBsZXQgc2VyaWFsaXplZCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXphdGlvbl9tYXRjaGVzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXg6YmluX2lvX2hlYWRlciBzZXJpYWxpemVkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBlbGVtZW50c19zdHJpbmcgLT4gaXNfY29uY2F0ZW5hdGlvbiBlbGVtZW50c19zdHJpbmcgZWxlbWVudHNcbiAgICAgIGluXG4gICAgICBpZiBub3Qgc2VyaWFsaXphdGlvbl9tYXRjaGVzXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgKGJpbl9pb19oZWFkZXIsIGVsZW1lbnRzKSwgYEJ1dF9nb3Qgc2VyaWFsaXplZClcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIHN0cmluZyAqIHN0cmluZyBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCBwZXJtdXRhdGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIGVsZW1lbnRzKSBpblxuICAgICAgTGlzdC5pdGVyIHBlcm11dGF0YXRpb25zIH5mOihmdW4gZWxlbWVudHMgLT5cbiAgICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIChiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImJpbi1pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG4oKiBUaGUgbW9kdWxlIFtUXSBzZXJ2ZXMgdG8gZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgYWxsIEJsYW5nLnQgdmFsdWVzIGFyZSBpbiBhXG4gICBub3JtYWwgZm9ybSB3aGVyZWJ5IGJvb2xlYW4gY29uc3RhbnRzIFRydWUgYW5kIEZhbHNlIG9ubHkgYXBwZWFyIGFzIHRoZSB0b3Btb3N0XG4gICBjb25zdHJ1Y3RvciAtLSBpbiBhbnkgb3RoZXIgcG9zaXRpb24gdGhleSBhcmUgc2ltcGxpZmllZCBhd2F5IHVzaW5nIGxhd3Mgb2ZcbiAgIGJvb2xlYW4gYWxnZWJyYS5cblxuICAgV2UgYWxzbyBlbmZvcmNlIHRoYXQgbmVzdGVkIFtBbmRdcyBhbmQgW09yXXMgZWFjaCBsZWFuIHRvIHRoZSByaWdodCBzbyB0aGF0IFtldmFsXVxuICAgZG9lc24ndCBuZWVkIHNvIG11Y2ggc3RhY2sgc3BhY2UgYXMgaXQgd291bGQgaWYgdGhleSBsZWFuZWQgdG8gdGhlIGxlZnQuICBUaG91Z2h0XG4gICBleHBlcmltZW50OiBjb21wYXJlIGhvdyBbZXZhbF0gd29ya3Mgb24gcmlnaHQtbGVhbmluZyBbQW5kIChhLCBBbmQgKGIsIEFuZCAoYywgZCkpKV1cbiAgIHZlcnN1cyBsZWZ0LWxlYW5pbmcgW0FuZCAoQW5kIChBbmQgKGEsIGIpLCBjKSwgZCldLiAgVGhlIGZvcm1lciBpcyB0aGUgYmVzdCBjYXNlIGFuZCBpc1xuICAgZW5mb3JjZWQuXG5cbiAgIE5vdGU6IHRoaXMgZmlsZSBkZXZpYXRlcyBmcm9tIHRoZSB1c3VhbCBwYXR0ZXJuIG9mIG1vZHVsZXMgd2l0aCBTdGFibGUgaW50ZXJmYWNlcyBpblxuICAgdGhhdCB0aGUgU3RhYmxlIHN1Yi1tb2R1bGUgaXMgbm90IHRoZSBmaXJzdCB0aGluZyB0byBiZSBkZWZpbmVkIGluIHRoZSBtb2R1bGUuICBUaGVcbiAgIHJlYXNvbiBmb3IgdGhpcyBkZXZpYXRpb24gaXMgc28gdGhhdCBvbmUgY2FuIGNvbnZpbmNlIG9uZXNlbGYgb2YgdGhlIGFmb3JlbWVudGlvbmVkXG4gICBpbnZhcmlhbnQgYWZ0ZXIgcmVhZGluZyBvbmx5IHRoaXMgc21hbGwgYW1vdW50IG9mIGNvZGUuICBBZnRlciBkZWZpbmluZyBUIHdlIHRoZW5cbiAgIGltbWVkaWF0ZWx5IGRlZmluZSBpdHMgU3RhYmxlIGludGVyZmFjZS5cbiopXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICB2YWwgaW52YXJpYW50IDogJ2EgdCAtPiB1bml0XG4gIHZhbCB0cnVlXyA6ICdhIHRcbiAgdmFsIGZhbHNlXyA6ICdhIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZGFsc28gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgb3JlbHNlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGJhc2UgOiAnYSAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9XG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIGxldCBpbnZhcmlhbnQgPVxuICAgIGxldCBzdWJ0ZXJtcyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSB8IEJhc2UgXyAtPiBbXVxuICAgICAgfCBOb3QgdDEgLT4gWyB0MSBdXG4gICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IFsgdDE7IHQyIF1cbiAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IFsgdDE7IHQyOyB0MyBdXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvbnRhaW5zX25vX2NvbnN0YW50cyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICAgIGluXG4gICAgZnVuIHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgOztcblxuICBsZXQgdHJ1ZV8gPSBUcnVlXG4gIGxldCBmYWxzZV8gPSBGYWxzZVxuICBsZXQgYmFzZSB2ID0gQmFzZSB2XG5cbiAgbGV0IG5vdF8gPSBmdW5jdGlvblxuICAgIHwgVHJ1ZSAtPiBGYWxzZVxuICAgIHwgRmFsc2UgLT4gVHJ1ZVxuICAgIHwgTm90IHQgLT4gdFxuICAgIHwgdCAtPiBOb3QgdFxuICA7O1xuXG4gIGxldCByZWMgYW5kYWxzbyB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIEZhbHNlIHwgRmFsc2UsIF8gLT4gRmFsc2VcbiAgICB8IG90aGVyLCBUcnVlIHwgVHJ1ZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IEFuZCAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW0FuZF1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIEFuZCAodDFhLCBhbmRhbHNvIHQxYiB0MilcbiAgICB8IF8gLT4gQW5kICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IHJlYyBvcmVsc2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBUcnVlIHwgVHJ1ZSwgXyAtPiBUcnVlXG4gICAgfCBvdGhlciwgRmFsc2UgfCBGYWxzZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IE9yICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbT3JdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBPciAodDFhLCBvcmVsc2UgdDFiIHQyKVxuICAgIHwgXyAtPiBPciAodDEsIHQyKVxuICA7O1xuXG4gIGxldCBpZl8gYSBiIGMgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgVHJ1ZSAtPiBiXG4gICAgfCBGYWxzZSAtPiBjXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggYiwgYyB3aXRoXG4gICAgICAgfCBUcnVlLCBfIC0+IG9yZWxzZSBhIGNcbiAgICAgICB8IF8sIEZhbHNlIC0+IGFuZGFsc28gYSBiXG4gICAgICAgfCBfLCBUcnVlIC0+IG9yZWxzZSAobm90XyBhKSBiXG4gICAgICAgfCBGYWxzZSwgXyAtPiBhbmRhbHNvIChub3RfIGEpIGNcbiAgICAgICB8IF8gLT4gSWYgKGEsIGIsIGMpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgOiBzaWdcbiAgICAoKiBUSElTIFRZUEUgQU5EIElUUyBTRVJJQUxJWkFUSU9OUyBTSE9VTEQgTkVWRVIgQkUgQ0hBTkdFRCAtIFBMRUFTRSBTUEVBSyBXSVRIXG4gICAgICAgQU5PVEhFUiBERVZFTE9QRVIgSUYgWU9VIE5FRUQgTU9SRSBERVRBSUwgKilcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAoKiB0aGUgcmVtYWluZGVyIG9mIHRoaXMgc2lnbmF0dXJlIGNvbnNpc3RzIG9mIGZ1bmN0aW9ucyB1c2VkIGluIHRoZSBkZWZpbml0aW9uc1xuICAgICAgIG9mIHNleHAgY29udmVyc2lvbnMgdGhhdCBhcmUgYWxzbyB1c2VmdWwgbW9yZSBnZW5lcmFsbHkgKilcblxuICAgIHZhbCBhbmRfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgICB2YWwgb3JfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgICB2YWwgZ2F0aGVyX2Nvbmp1bmN0cyA6ICdhIHQgLT4gJ2EgdCBsaXN0XG4gICAgdmFsIGdhdGhlcl9kaXNqdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4gICAgdHlwZSBzZXhwID0gU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiBzZXhwIGxpc3RcblxuICAgICgqIGNoZWFwIGltcG9ydCAqKVxuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIGFuZCdzICopXG4gICAgbGV0IGdhdGhlcl9jb25qdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIG9yJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Rpc2p1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgT3IgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBbYW5kX10gYW5kIFtvcl9dIHVzZSBbZm9sZF9yaWdodF0gaW5zdGVhZCBvZiBbZm9sZF9sZWZ0XSB0byBhdm9pZCBxdWFkcmF0aWNcbiAgICAgICBiZWhhdmlvciB3aXRoIFthbmRhbHNvXSBvciBbb3JlbHNlXSwgcmVzcGVjdGl2ZWx5LiAqKVxuICAgIGxldCBhbmRfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OnRydWVfIH5mOmFuZGFsc29cbiAgICBsZXQgb3JfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OmZhbHNlXyB+ZjpvcmVsc2VcblxuICAgIGxldCB1bmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4IF0gLT4geFxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyBvbmUgYXJndW1lbnQsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCB0ZXJuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHg7IHk7IHogXSAtPiB4LCB5LCB6XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIHRocmVlIGFyZ3VtZW50cywgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgeCAtPiBzZXhwX29mX3ZhbHVlIHhcbiAgICAgICAgfCBUcnVlIC0+IEF0b20gXCJ0cnVlXCJcbiAgICAgICAgfCBGYWxzZSAtPiBBdG9tIFwiZmFsc2VcIlxuICAgICAgICB8IE5vdCB0IC0+IExpc3QgWyBBdG9tIFwibm90XCI7IGF1eCB0IF1cbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gTGlzdCBbIEF0b20gXCJpZlwiOyBhdXggdDE7IGF1eCB0MjsgYXV4IHQzIF1cbiAgICAgICAgfCBBbmQgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Nvbmp1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcImFuZFwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgICAgfCBPciBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfZGlzanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwib3JcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICBpblxuICAgICAgYXV4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBiYXNlX29mX3NleHAgc2V4cCA9XG4gICAgICBsZXQgYmFzZSBzZXhwID0gYmFzZSAoYmFzZV9vZl9zZXhwIHNleHApIGluXG4gICAgICBsZXQgcmVjIGF1eCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQXRvbSBrdyAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcInRydWVcIiAtPiB0cnVlX1xuICAgICAgICAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZV9cbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBMaXN0IChBdG9tIGt3IDo6IGFyZ3MpIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwiYW5kXCIgLT4gYW5kXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJvclwiIC0+IG9yXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJub3RcIiAtPiBub3RfIChhdXggKHVuYXJ5IFwibm90XCIgYXJncyBzZXhwKSlcbiAgICAgICAgICAgfCBcImlmXCIgLT5cbiAgICAgICAgICAgICBsZXQgeCwgeSwgeiA9IHRlcm5hcnkgXCJpZlwiIGFyZ3Mgc2V4cCBpblxuICAgICAgICAgICAgIGlmXyAoYXV4IHgpIChhdXggeSkgKGF1eCB6KVxuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IF8gLT4gYmFzZSBzZXhwXG4gICAgICBpblxuICAgICAgYXV4IHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICAgIGxldCBkZWZucyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmRlZm4gbGlzdCA9XG4gICAgICAgIGxldCBibGFuZyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmdyYW1tYXIgPSBUeWNvbiAoXCJibGFuZ1wiLCBbIFR5dmFyIFwiYVwiIF0pIGluXG4gICAgICAgIFsgeyB0eWNvbiA9IFwiYmxhbmdcIlxuICAgICAgICAgIDsgdHl2YXJzID0gWyBcImFcIiBdXG4gICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgVW5pb25cbiAgICAgICAgICAgICAgICBbIFR5dmFyIFwiYVwiXG4gICAgICAgICAgICAgICAgOyBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2VfaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwidHJ1ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiZmFsc2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiaWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKGJsYW5nLCBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIEVtcHR5KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBNYW55IGJsYW5nIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwib3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBNYW55IGJsYW5nIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibm90XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoYmxhbmcsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGZ1biBiYXNlX2dyYW1tYXIgLT5cbiAgICAgICAgeyB1bnR5cGVkID0gUmVjdXJzaXZlIChUeWNvbiAoXCJibGFuZ1wiLCBbIGJhc2VfZ3JhbW1hci51bnR5cGVkIF0pLCBkZWZucykgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFN0YWJsZS5WMSA6IG1vZHVsZSB0eXBlIG9mIFN0YWJsZS5WMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG5sZXQgY29uc3RhbnQgYiA9IGlmIGIgdGhlbiB0cnVlXyBlbHNlIGZhbHNlX1xuXG5tb2R1bGUgdHlwZSBDb25zdHJ1Y3RvcnMgPSBzaWdcbiAgdmFsIGJhc2UgOiAnYSAtPiAnYSB0XG4gIHZhbCB0cnVlXyA6IF8gdFxuICB2YWwgZmFsc2VfIDogXyB0XG4gIHZhbCBjb25zdGFudCA6IGJvb2wgLT4gXyB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG5cbiAgbGV0IG5vdCA9IG5vdF9cbiAgbGV0IGFuZF8gPSBhbmRfXG4gIGxldCBvcl8gPSBvcl9cbiAgbGV0IGNvbnN0YW50ID0gY29uc3RhbnRcbiAgbGV0ICggJiYgKSA9IGFuZGFsc29cbiAgbGV0ICggfHwgKSA9IG9yZWxzZVxuICBsZXQgKCA9PT4gKSBhIGIgPSAobm90IGEpIHx8IGJcbmVuZFxuXG5sZXQgY29uc3RhbnRfdmFsdWUgPSBmdW5jdGlvblxuICB8IFRydWUgLT4gU29tZSB0cnVlXG4gIHwgRmFsc2UgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuOztcblxuKCogW3ZhbHVlcyB0XSBsaXN0cyB0aGUgYmFzZSBwcmVkaWNhdGVzIGluIFt0XSBmcm9tIGxlZnQgdG8gcmlnaHQgKilcbmxldCB2YWx1ZXMgdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgQmFzZSB2IDo6IHRzIC0+IGxvb3AgKHYgOjogYWNjKSB0c1xuICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgIHwgRmFsc2UgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IE5vdCB0MSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdHMpXG4gICAgfCBBbmQgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgIHwgT3IgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgIHwgSWYgKHQxLCB0MiwgdDMpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0MyA6OiB0cylcbiAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICBpblxuICBsb29wIFtdIFsgdCBdXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyB0IHBlbmRpbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIGEgLT4gbmV4dCAoZiBhY2MgYSkgcGVuZGluZ1xuICAgICAgICB8IFRydWUgfCBGYWxzZSAtPiBuZXh0IGFjYyBwZW5kaW5nXG4gICAgICAgIHwgTm90IHQgLT4gbG9vcCBhY2MgdCBwZW5kaW5nXG4gICAgICAgIHwgQW5kICh0MSwgdDIpIHwgT3IgKHQxLCB0MikgLT4gbG9vcCBhY2MgdDEgKHQyIDo6IHBlbmRpbmcpXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiB0MyA6OiBwZW5kaW5nKVxuICAgICAgYW5kIG5leHQgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgYWNjIHQgdHNcbiAgICAgIGluXG4gICAgICBsb29wIGluaXQgdCBbXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBsZW5ndGggPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGlzX2VtcHR5ID0gQy5pc19lbXB0eVxubGV0IGl0ZXIgPSBDLml0ZXJcbmxldCBsZW5ndGggPSBDLmxlbmd0aFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IHJldHVybiA9IGJhc2VcblxuICAgIGxldCByZWMgYmluZCB0IH5mOmsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEJhc2UgdiAtPiBrIHZcbiAgICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgICAgIHwgTm90IHQxIC0+IG5vdF8gKGJpbmQgdDEgfmY6aylcbiAgICAgICgqIFVuZm9ydHVuYXRlbHkgd2UgbmVlZCB0byBkdXBsaWNhdGUgc29tZSBvZiB0aGUgc2hvcnQtY2lyY3VpdGluZyBmcm9tIFthbmRhbHNvXSBhbmRcbiAgICAgICAgIGZyaWVuZHMgaGVyZS4gSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBpbnZvbHZpbmcgW0xhenkudF0gYnV0IHRoZVxuICAgICAgICAgb3ZlcmhlYWQgcHJvYmFibHkgd291bGRuJ3QgYmUgd29ydGggaXQuICopXG4gICAgICB8IEFuZCAodDEsIHQyKSAtPlxuICAgICAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgICAgIHwgRmFsc2UgLT4gZmFsc2VfXG4gICAgICAgICB8IG90aGVyIC0+IGFuZGFsc28gb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gICAgICB8IE9yICh0MSwgdDIpIC0+XG4gICAgICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICAgICAgfCBUcnVlIC0+IHRydWVfXG4gICAgICAgICB8IG90aGVyIC0+IG9yZWxzZSBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+XG4gICAgICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICAgICAgfCBUcnVlIC0+IGJpbmQgdDIgfmY6a1xuICAgICAgICAgfCBGYWxzZSAtPiBiaW5kIHQzIH5mOmtcbiAgICAgICAgIHwgb3RoZXIgLT4gaWZfIG90aGVyIChiaW5kIHQyIH5mOmspIChiaW5kIHQzIH5mOmspKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYERlZmluZV91c2luZ19iaW5kXG4gIGVuZClcblxuKCogc2VtYW50aWNzICopXG5cbmxldCByZWMgZXZhbCB0IGJhc2VfZXZhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFRydWUgLT4gdHJ1ZVxuICB8IEZhbHNlIC0+IGZhbHNlXG4gIHwgQW5kICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsICYmIGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgT3IgKHQxLCB0MikgLT4gZXZhbCB0MSBiYXNlX2V2YWwgfHwgZXZhbCB0MiBiYXNlX2V2YWxcbiAgfCBOb3QgdCAtPiBub3QgKGV2YWwgdCBiYXNlX2V2YWwpXG4gIHwgSWYgKHQxLCB0MiwgdDMpIC0+IGlmIGV2YWwgdDEgYmFzZV9ldmFsIHRoZW4gZXZhbCB0MiBiYXNlX2V2YWwgZWxzZSBldmFsIHQzIGJhc2VfZXZhbFxuICB8IEJhc2UgeCAtPiBiYXNlX2V2YWwgeFxuOztcblxubGV0IHNwZWNpYWxpemUgdCBmID1cbiAgYmluZCB0IH5mOihmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBgS25vd24gYyAtPiBjb25zdGFudCBjXG4gICAgfCBgVW5rbm93biAtPiBiYXNlIHYpXG47O1xuXG5sZXQgZXZhbF9zZXQgfnVuaXZlcnNlOmFsbCBzZXRfb2ZfYmFzZSA9XG4gIGxldCByZWMgYXV4IChiIDogXyB0KSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgfCBUcnVlIC0+IGZvcmNlIGFsbFxuICAgIHwgRmFsc2UgLT4gU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KFNldC5jb21wYXJhdG9yIChmb3JjZSBhbGwpKVxuICAgIHwgQW5kIChhLCBiKSAtPiBTZXQuaW50ZXIgKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBPciAoYSwgYikgLT4gU2V0LnVuaW9uIChhdXggYSkgKGF1eCBiKVxuICAgIHwgTm90IGEgLT4gU2V0LmRpZmYgKGZvcmNlIGFsbCkgKGF1eCBhKVxuICAgIHwgQmFzZSBhIC0+IHNldF9vZl9iYXNlIGFcbiAgICB8IElmIChjb25kLCBhLCBiKSAtPlxuICAgICAgbGV0IGNvbmQgPSBhdXggY29uZCBpblxuICAgICAgU2V0LnVuaW9uIChTZXQuaW50ZXIgY29uZCAoYXV4IGEpKSAoU2V0LmludGVyIChTZXQuZGlmZiAoZm9yY2UgYWxsKSBjb25kKSAoYXV4IGIpKVxuICBpblxuICBhdXhcbjs7XG5cbm1vZHVsZSB0eXBlIE1vbmFkaWMgPSBzaWdcbiAgbW9kdWxlIE0gOiBNb25hZC5TXG5cbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBNLnQpIC0+ICdiIHQgTS50XG4gIHZhbCBldmFsIDogJ2EgdCAtPiBmOignYSAtPiBib29sIE0udCkgLT4gYm9vbCBNLnRcbmVuZFxuXG5tb2R1bGUgRm9yX21vbmFkIChNIDogTW9uYWQuUykgOiBNb25hZGljIHdpdGggbW9kdWxlIE0gOj0gTSA9IHN0cnVjdFxuICBvcGVuIE0uTW9uYWRfaW5maXhcblxuICBsZXQgcmVjIGJpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIHggLT4gZiB4XG4gICAgfCBUcnVlIC0+IE0ucmV0dXJuIHRydWVfXG4gICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICB8IEFuZCAoYSwgYikgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IEZhbHNlIC0+IE0ucmV0dXJuIGZhbHNlX1xuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj58IGZ1biBiIC0+IGFuZGFsc28gYSBiKVxuICAgIHwgT3IgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIC0+IE0ucmV0dXJuIHRydWVfXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj58IGZ1biBiIC0+IG9yZWxzZSBhIGIpXG4gICAgfCBOb3QgYSAtPiBiaW5kIGEgfmYgPj58IG5vdF9cbiAgICB8IElmIChhLCBiLCBjKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBGYWxzZSAtPiBiaW5kIGMgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+Pj0gZnVuIGIgLT4gYmluZCBjIH5mID4+fCBmdW4gYyAtPiBpZl8gYSBiIGMpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gYmluZCB0IH5mOihmdW4geCAtPiBmIHggPj58IGJhc2UpXG5cbiAgbGV0IGV2YWwgdCB+ZiA9XG4gICAgYmluZCB0IH5mOihmdW4geCAtPlxuICAgICAgZiB4XG4gICAgICA+PnwgZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiB0cnVlX1xuICAgICAgfCBmYWxzZSAtPiBmYWxzZV8pXG4gICAgPj58IGZ1biB0IC0+IGV2YWwgdCBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgOztcbmVuZFxuXG4oKiogV2UgYXZvaWQgZGVyaXZpbmcgcXVpY2tjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgaW52YXJpYW50cyBkZXNjcmliZWQgaW4gW1RdJ3MgY29tbWVudHNcbiAgICBhYm92ZSBhcmUgcHJlc2VydmVkLiAqKVxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGFfZ2VuZXJhdG9yID1cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IucmVjdXJzaXZlX3VuaW9uXG4gICAgWyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6YmFzZSBhX2dlbmVyYXRvclxuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIHRydWVfXG4gICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5zaW5nbGV0b24gZmFsc2VfXG4gICAgXVxuICAgIH5mOihmdW4gc2VsZiAtPlxuICAgICAgWyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgc2VsZiB+Zjpub3RfXG4gICAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcDIgc2VsZiBzZWxmIH5mOk8uKCB8fCApXG4gICAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcDIgc2VsZiBzZWxmIH5mOk8uKCAmJiApXG4gICAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcDMgc2VsZiBzZWxmIHNlbGYgfmY6aWZfXG4gICAgICBdKVxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgKHR5cGUgYSkgKGFfc2hyaW5rZXIgOiBhIFF1aWNrY2hlY2suU2hyaW5rZXIudCkgPVxuICBRdWlja2NoZWNrLlNocmlua2VyLmZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCBiaW5vcCBvcGVyYXRvciBsZWZ0IHJpZ2h0ID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGxlZnRcbiAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gcmlnaHRcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgbGVmdCkgfmY6KGZ1biBsZWZ0IC0+XG4gICAgICAgICAgICBvcGVyYXRvciBsZWZ0IHJpZ2h0KVxuICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiByaWdodCkgfmY6KGZ1biByaWdodCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgXVxuICAgIGluXG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5jcmVhdGUgKGZ1biB0IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IEJhc2UgYSAtPiBTZXF1ZW5jZS5tYXAgfmY6YmFzZSAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgYV9zaHJpbmtlciBhKVxuICAgICAgfCBPciAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCB8fCApIGxlZnQgcmlnaHRcbiAgICAgIHwgQW5kIChsZWZ0LCByaWdodCkgLT4gYmlub3AgTy4oICYmICkgbGVmdCByaWdodFxuICAgICAgfCBOb3QgdCAtPlxuICAgICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgICAoU2VxdWVuY2Uuc2luZ2xldG9uIHQpXG4gICAgICAgICAgKFNlcXVlbmNlLm1hcCB+Zjpub3RfIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHQpKVxuICAgICAgfCBJZiAoaWZfLCB0aGVuXywgZWxzZV8pIC0+XG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gaWZfXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gdGhlbl9cbiAgICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiBlbHNlX1xuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGlmXykgfmY6KGZ1biBpZl8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHRoZW5fKSB+ZjooZnVuIHRoZW5fIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBlbHNlXykgfmY6KGZ1biBlbHNlXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciAodHlwZSBhKSAoYV9vYnNlcnZlciA6IGEgUXVpY2tjaGVjay5PYnNlcnZlci50KSA9XG4gIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jcmVhdGUgKGZ1biB0IH5zaXplIH5oYXNoIC0+XG4gICAgaGFzaF9mb2xkX3RcbiAgICAgIChmdW4gaGFzaCBhIC0+IFF1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZSBhX29ic2VydmVyIGEgfnNpemUgfmhhc2gpXG4gICAgICBoYXNoXG4gICAgICB0KVxuOztcbiIsIigqIENvbnZlcnNpb25zIGJldHdlZW4gdW5pdHMgb2YgbWVhc3VyZSBiYXNlZCBvbiBieXRlcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xubW9kdWxlIFQgPSBCeXRlX3VuaXRzMFxuaW5jbHVkZSAoVCA6IG1vZHVsZSB0eXBlIG9mIFQgd2l0aCBtb2R1bGUgUmVwciA6PSBSZXByKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCAtICkgYSBiID0gb2ZfcmVwciAoUmVwci4oIC0gKSAodG9fcmVwciBhKSAodG9fcmVwciBiKSlcbiAgbGV0ICggKyApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCArICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoIC8vICkgYSBiID0gUmVwci4oIC8vICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYilcblxuICBsZXQgKCAvICkgdCBzID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCAoUmVwci50b19mbG9hdCAodG9fcmVwciB0KSAvLiBzKSlcbiAgbGV0ICggKiApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgKi4gcykpXG5lbmRcblxuaW5jbHVkZSBJbmZpeFxuXG5sZXQgemVybyA9IG9mX3JlcHIgUmVwci56ZXJvXG5sZXQgbWluX3ZhbHVlID0gb2ZfcmVwciBSZXByLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZSA9IG9mX3JlcHIgUmVwci5tYXhfdmFsdWVcbmxldCBzY2FsZSA9IEluZml4LiggKiApXG5sZXQgaXNjYWxlIHQgcyA9IG9mX3JlcHIgKFJlcHIuKCAqICkgKHRvX3JlcHIgdCkgKFJlcHIub2ZfaW50IHMpKVxubGV0IGJ5dGVzX2ludF9leG4gPSBULmJ5dGVzX2ludF9leG5cbmxldCBieXRlc19pbnQ2MyA9IHRvX3JlcHJcbmxldCBieXRlc19pbnQ2NCB0ID0gUmVwci50b19pbnQ2NCAodG9fcmVwciB0KVxubGV0IGJ5dGVzX2Zsb2F0IHQgPSBSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpXG5sZXQgb2ZfYnl0ZXNfaW50IGIgPSBvZl9yZXByIChSZXByLm9mX2ludCBiKVxubGV0IG9mX2J5dGVzX2ludDYzID0gb2ZfcmVwclxubGV0IG9mX2J5dGVzX2ludDY0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQ2NF9leG4gYilcbmxldCBvZl9ieXRlc19mbG9hdF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgYilcblxubGV0W0BkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbYnl0ZXNfaW50X2V4bl0sIFtieXRlc19pbnQ2M10sIFtieXRlc19pbnQ2NF0gb3IgW2J5dGVzX2Zsb2F0XSBcXFxuICAgYXMgYXBwcm9wcmlhdGUuXCJdIGJ5dGVzXG4gID1cbiAgYnl0ZXNfZmxvYXRcbjs7XG5cbmxldFtAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX2J5dGVzX2ludF0sIFtvZl9ieXRlc19pbnQ2M10sIFtvZl9ieXRlc19pbnQ2NF9leG5dIG9yIFxcXG4gICBbb2ZfYnl0ZXNfZmxvYXRfZXhuXSBhcyBhcHByb3ByaWF0ZS5cIl0gb2ZfYnl0ZXNcbiAgPVxuICBvZl9ieXRlc19mbG9hdF9leG5cbjs7XG5cbmxldCBraWxvYnl0ZSA6IHQgPSBvZl9ieXRlc19pbnQgMTAyNFxubGV0IG1lZ2FieXRlID0gaXNjYWxlIGtpbG9ieXRlIDEwMjRcbmxldCBnaWdhYnl0ZSA9IGlzY2FsZSBtZWdhYnl0ZSAxMDI0XG5sZXQgdGVyYWJ5dGUgPSBpc2NhbGUgZ2lnYWJ5dGUgMTAyNFxubGV0IHBldGFieXRlID0gaXNjYWxlIHRlcmFieXRlIDEwMjRcbmxldCBleGFieXRlID0gaXNjYWxlIHBldGFieXRlIDEwMjRcblxubGV0IHdvcmQgPVxuICBsZXQgbW9kdWxlIFcgPSBXb3JkX3NpemUgaW5cbiAgbWF0Y2ggVy53b3JkX3NpemUgd2l0aFxuICB8IFcuVzMyIC0+IG9mX2J5dGVzX2ludCA0XG4gIHwgVy5XNjQgLT4gb2ZfYnl0ZXNfaW50IDhcbjs7XG5cbmxldCBraWxvYnl0ZXMgdCA6IGZsb2F0ID0gSW5maXguKCAvLyApIHQga2lsb2J5dGVcbmxldCBtZWdhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IG1lZ2FieXRlXG5sZXQgZ2lnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBnaWdhYnl0ZVxubGV0IHRlcmFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgdGVyYWJ5dGVcbmxldCBwZXRhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHBldGFieXRlXG5sZXQgZXhhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IGV4YWJ5dGVcbmxldCB3b3Jkc19pbnRfZXhuIHQgPSBSZXByLnRvX2ludF9leG4gKFJlcHIuKCAvICkgKHRvX3JlcHIgdCkgKHRvX3JlcHIgd29yZCkpXG5sZXQgd29yZHNfZmxvYXQgdCA9IEluZml4LiggLy8gKSB0IHdvcmRcbmxldCBvZl9raWxvYnl0ZXMgdCA6IHQgPSBJbmZpeC4oICogKSBraWxvYnl0ZSB0XG5sZXQgb2ZfbWVnYWJ5dGVzIHQgPSBJbmZpeC4oICogKSBtZWdhYnl0ZSB0XG5sZXQgb2ZfZ2lnYWJ5dGVzIHQgPSBJbmZpeC4oICogKSBnaWdhYnl0ZSB0XG5sZXQgb2ZfdGVyYWJ5dGVzIHQgPSBJbmZpeC4oICogKSB0ZXJhYnl0ZSB0XG5sZXQgb2ZfcGV0YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBwZXRhYnl0ZSB0XG5sZXQgb2ZfZXhhYnl0ZXMgdCA9IEluZml4LiggKiApIGV4YWJ5dGUgdFxubGV0IG9mX3dvcmRzX2ludCB0ID0gaXNjYWxlIHdvcmQgdFxubGV0IG9mX3dvcmRzX2Zsb2F0X2V4biB0ID0gSW5maXguKCAqICkgd29yZCB0XG5cbmxldFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW3dvcmRzX2ludF9leG5dIG9yIFt3b3Jkc19mbG9hdF1cIl0gd29yZHMgPVxuICB3b3Jkc19mbG9hdFxuOztcblxubGV0W0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2Zfd29yZHNfaW50XSBvciBbb2Zfd29yZHNfZmxvYXRfZXhuXVwiXSBvZl93b3JkcyA9XG4gIG9mX3dvcmRzX2Zsb2F0X2V4blxuOztcblxubGV0IG9mX3N0cmluZyBzID1cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBJbnQuKCA8ICkgbGVuZ3RoIDJcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIHRvbyBzaG9ydFwiIHMgKCk7XG4gIGxldCBiYXNlX3N0ciA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjooSW50LiggLSApIGxlbmd0aCAxKSBpblxuICBsZXQgZXh0X2NoYXIgPSBDaGFyLmxvd2VyY2FzZSBzLltJbnQuKCAtICkgbGVuZ3RoIDFdIGluXG4gIGxldCBiYXNlID1cbiAgICB0cnkgRmxvYXQub2Zfc3RyaW5nIGJhc2Vfc3RyIHdpdGhcbiAgICB8IF8gLT5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gJXMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBmbG9hdCBcIlxuICAgICAgICBzXG4gICAgICAgIGJhc2Vfc3RyXG4gICAgICAgICgpXG4gIGluXG4gIG1hdGNoIGV4dF9jaGFyIHdpdGhcbiAgfCAnYicgLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIGJhc2VcbiAgfCAnaycgLT4gb2Zfa2lsb2J5dGVzIGJhc2VcbiAgfCAnbScgLT4gb2ZfbWVnYWJ5dGVzIGJhc2VcbiAgfCAnZycgLT4gb2ZfZ2lnYWJ5dGVzIGJhc2VcbiAgfCAndCcgLT4gb2ZfdGVyYWJ5dGVzIGJhc2VcbiAgfCAncCcgLT4gb2ZfcGV0YWJ5dGVzIGJhc2VcbiAgfCAnZScgLT4gb2ZfZXhhYnl0ZXMgYmFzZVxuICB8ICd3JyAtPiBvZl93b3JkcyBiYXNlXG4gIHwgZXh0IC0+XG4gICAgaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSBpbGxlZ2FsIGV4dGVuc2lvbiAlY1wiIHMgZXh0ICgpXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcblxubGV0IGxhcmdlc3RfbWVhc3VyZSB0ID1cbiAgbGV0IHRfYWJzID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpIGluXG4gIGlmIHRfYWJzID49IGV4YWJ5dGVcbiAgdGhlbiBgRXhhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBwZXRhYnl0ZVxuICB0aGVuIGBQZXRhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSB0ZXJhYnl0ZVxuICB0aGVuIGBUZXJhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBnaWdhYnl0ZVxuICB0aGVuIGBHaWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBtZWdhYnl0ZVxuICB0aGVuIGBNZWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBraWxvYnl0ZVxuICB0aGVuIGBLaWxvYnl0ZXNcbiAgZWxzZSBgQnl0ZXNcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgKCogU2hhcmUgdGhlIGNvbW1vbiBbb2Zfc2V4cF0gY29kZSBmb3IgW1YxXSBhbmQgW1YyXS4gKilcbiAgbW9kdWxlIE9mX3NleHBfdjFfdjIgOiBzaWdcbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cC50IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG5vX21hdGNoICgpID0gZmFpbHdpdGggXCJOb3QgYSByZWNvZ25pemVkIFtCeXRlX3VuaXRzLnRdIHJlcHJlc2VudGF0aW9uXCJcblxuICAgIGxldCBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBcIkJ5dGVzXCIgLT5cbiAgICAgICAgKHRyeSBvZl9ieXRlc19pbnQ2MyAoSW50NjMudF9vZl9zZXhwIHZhbF9zZXhwKSB3aXRoXG4gICAgICAgICB8IF8gLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIChGbG9hdC50X29mX3NleHAgdmFsX3NleHApKVxuICAgICAgfCBcIktpbG9ieXRlc1wiIC0+IG9mX2tpbG9ieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJNZWdhYnl0ZXNcIiAtPiBvZl9tZWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiR2lnYWJ5dGVzXCIgLT4gb2ZfZ2lnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlRlcmFieXRlc1wiIC0+IG9mX3RlcmFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJQZXRhYnl0ZXNcIiAtPiBvZl9wZXRhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiRXhhYnl0ZXNcIiAtPiBvZl9leGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJXb3Jkc1wiIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSB1bml0X25hbWU7IHZhbHVlIF0gLT5cbiAgICAgICAgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbHVlIHVuaXRfbmFtZVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICB0cnkgdF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBleG4gLT4gcmFpc2UgKFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzZXhwKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZsb2F0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gYnl0ZXNfZmxvYXRcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2J5dGVzX2Zsb2F0X2V4blxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIE9mX3NleHBfdjFfdjJcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAoKiBWMSBvbmx5IGdvZXMgdXAgdG8gZ2lnYWJ5dGVzICopXG4gICAgICBtYXRjaCBsYXJnZXN0X21lYXN1cmUgdCB3aXRoXG4gICAgICB8IGBCeXRlcyAtPiBbJXNleHAgYEJ5dGVzIChieXRlc19mbG9hdCB0IDogZmxvYXQpXVxuICAgICAgfCBgS2lsb2J5dGVzIC0+IFslc2V4cCBgS2lsb2J5dGVzIChraWxvYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICAgIHwgYE1lZ2FieXRlcyAtPiBbJXNleHAgYE1lZ2FieXRlcyAobWVnYWJ5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBHaWdhYnl0ZXMgfCBgVGVyYWJ5dGVzIHwgYFBldGFieXRlcyB8IGBFeGFieXRlcyAtPlxuICAgICAgICBbJXNleHAgYEdpZ2FieXRlcyAoZ2lnYWJ5dGVzIHQgOiBmbG9hdCldXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5sb3dlcmNhc2UgKHRvX3N0cmluZyB0KVxuICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcblxuICAgICgqIFRoaXMgdGVzdCBkb2N1bWVudHMgdGhlIG9yaWdpbmFsIHRvLXN0cmluZyByZXByZXNlbnRhdGlvbiBhbmQgZmFpbHMgdW5kZXIgamF2YXNjcmlwdFxuICAgICAgIGR1ZSB0byBkaWZmZXJlbmNlcyBpbiB0aGUgcm91bmRpbmcuICopXG4gICAgbGV0JWV4cGVjdF90ZXN0IChfIFtAdGFncyBcIm5vLWpzXCJdKSA9XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMDBiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyM2IgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNCk7XG4gICAgICBbJWV4cGVjdCB7fCAxayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI1KTtcbiAgICAgIFslZXhwZWN0IHt8IDEuMDAwOThrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDE1MDApO1xuICAgICAgWyVleHBlY3Qge3wgMS40NjQ4NGsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOS43NjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3LjY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOTc2LjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOS41MzY3NG0gfH1dXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IG9mX3NleHBfZXJyb3IgbXNnIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2MylcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2ludDYzXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19pbnQ2M1xuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIE9mX3NleHBfdjFfdjJcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2ludDYzIHQgOiBJbnQ2My50KV1cbiAgZW5kXG5lbmRcblxubGV0IHRvX3N0cmluZ19odW0gPSBULnRvX3N0cmluZ1xuXG5tb2R1bGUgU2hvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGxldCB0b191bml0c19zdHIgdG9fdW5pdCBleHQgPVxuICAgICAgbGV0IGYgPSB0b191bml0IHQgaW5cbiAgICAgIGxldCBmX2FicyA9IEZsb2F0LmFicyBmIGluXG4gICAgICBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4wZiVjXCIgZiBleHRcbiAgICAgIGVsc2UgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4xZiVjXCIgZiBleHRcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiUuMmYlY1wiIGYgZXh0XG4gICAgaW5cbiAgICBtYXRjaCBsYXJnZXN0X21lYXN1cmUgdCB3aXRoXG4gICAgfCBgQnl0ZXMgLT4gc3ByaW50ZiBcIiVkQlwiIChieXRlc19pbnRfZXhuIHQpXG4gICAgfCBgS2lsb2J5dGVzIC0+IHRvX3VuaXRzX3N0ciBraWxvYnl0ZXMgJ0snXG4gICAgfCBgTWVnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBtZWdhYnl0ZXMgJ00nXG4gICAgfCBgR2lnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBnaWdhYnl0ZXMgJ0cnXG4gICAgfCBgVGVyYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciB0ZXJhYnl0ZXMgJ1QnXG4gICAgfCBgUGV0YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBwZXRhYnl0ZXMgJ1AnXG4gICAgfCBgRXhhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGV4YWJ5dGVzICdFJ1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgIFslZXhwZWN0IHt8IDEwMDBCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICBbJWV4cGVjdCB7fCAxMDIzQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNCk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS43N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTcuN0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5LjU0TSB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkuMzFHIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzIDEwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5MzFHIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzIDEwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkwLjlUIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzIDEwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDg4LjhQIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzIDMwMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCAyLjYwRSB8fV07XG4gICAgKClcbiAgOztcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX3Nob3J0ID0gU2hvcnQudG9fc3RyaW5nXG5cbmxldFtAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX2J5dGVzXSwgW29mX2tpbG9ieXRlc10sIFtvZl9tZWdhYnl0ZXNdLCBldGMgYXMgYXBwcm9wcmlhdGUuXCJdIGNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgPVxuICBtYXRjaCB1bml0cyB3aXRoXG4gIHwgYEJ5dGVzIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biB2YWx1ZVxuICB8IGBLaWxvYnl0ZXMgLT4gb2Zfa2lsb2J5dGVzIHZhbHVlXG4gIHwgYE1lZ2FieXRlcyAtPiBvZl9tZWdhYnl0ZXMgdmFsdWVcbiAgfCBgR2lnYWJ5dGVzIC0+IG9mX2dpZ2FieXRlcyB2YWx1ZVxuICB8IGBXb3JkcyAtPiBvZl93b3Jkc19mbG9hdF9leG4gdmFsdWVcbjs7XG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUmVwcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgPSBvZl9yZXByXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19yZXByXG4gICAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmV4dGVybmFsIGlzX2hlYXBfYmxvY2sgOiBDYW1sLk9iai50IC0+IGJvb2wgPSBcImNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXCIgW0BAbm9hbGxvY11cblxubGV0IGlzX29rIHYgPSBpc19oZWFwX2Jsb2NrIChDYW1sLk9iai5yZXByIHYpXG5sZXQgY3JlYXRlIHYgPSBpZiBpc19vayB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuXG5sZXQgY3JlYXRlX2V4biB2ID1cbiAgaWYgaXNfb2sgdiB0aGVuIHYgZWxzZSBmYWlsd2l0aCBcIkhlYXBfYmxvY2suY3JlYXRlX2V4biBjYWxsZWQgd2l0aCBub24gaGVhcCBibG9ja1wiXG47O1xuXG5sZXQgdmFsdWUgdCA9IHRcbmxldCBieXRlc19wZXJfd29yZCA9IFdvcmRfc2l6ZS4obnVtX2JpdHMgd29yZF9zaXplKSAvIDhcblxubGV0IGJ5dGVzICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIChDYW1sLk9iai5zaXplIChDYW1sLk9iai5yZXByICh0IDogYSB0KSkgKyAxKSAqIGJ5dGVzX3Blcl93b3JkXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IE5leHRfZml0XG4gICAgICAgIHwgRmlyc3RfZml0XG4gICAgICAgIHwgQmVzdF9maXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IENhbWwuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIG1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHZlcmJvc2UgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgICBlbmRcblxuICAgIFslJSBlbHNlXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IENhbWwuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgICBlbmRcblxuICAgIFslJWVuZGlmXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIENhbWwuR2NcblxubW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIHR5cGUgdCA9IENhbWwuR2Muc3RhdCA9XG4gICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGJpbl9pbywgc2V4cCwgZmllbGRzXVxuXG4gICAgWyUlZWxzZV1cblxuICAgIHR5cGUgdCA9IENhbWwuR2Muc3RhdCA9XG4gICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mLCBmaWVsZHNdXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuXG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gIGxldCBkaWZmIGFmdGVyIGJlZm9yZSA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGFmdGVyLm1pbm9yX3dvcmRzIC0uIGJlZm9yZS5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBhZnRlci5wcm9tb3RlZF93b3JkcyAtLiBiZWZvcmUucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gYWZ0ZXIubWFqb3Jfd29yZHMgLS4gYmVmb3JlLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1pbm9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gYWZ0ZXIuaGVhcF93b3JkcyAtIGJlZm9yZS5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGFmdGVyLmhlYXBfY2h1bmtzIC0gYmVmb3JlLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gYWZ0ZXIubGl2ZV93b3JkcyAtIGJlZm9yZS5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGFmdGVyLmxpdmVfYmxvY2tzIC0gYmVmb3JlLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gYWZ0ZXIuZnJlZV93b3JkcyAtIGJlZm9yZS5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGFmdGVyLmZyZWVfYmxvY2tzIC0gYmVmb3JlLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBhZnRlci5sYXJnZXN0X2ZyZWUgLSBiZWZvcmUubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBhZnRlci5mcmFnbWVudHMgLSBiZWZvcmUuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGFmdGVyLmNvbXBhY3Rpb25zIC0gYmVmb3JlLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGFmdGVyLnRvcF9oZWFwX3dvcmRzIC0gYmVmb3JlLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gYWZ0ZXIuc3RhY2tfc2l6ZSAtIGJlZm9yZS5zdGFja19zaXplXG4gICAgfVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IGRpZmYgYWZ0ZXIgYmVmb3JlID1cbiAgICB7IG1pbm9yX3dvcmRzID0gYWZ0ZXIubWlub3Jfd29yZHMgLS4gYmVmb3JlLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGFmdGVyLnByb21vdGVkX3dvcmRzIC0uIGJlZm9yZS5wcm9tb3RlZF93b3Jkc1xuICAgIDsgbWFqb3Jfd29yZHMgPSBhZnRlci5tYWpvcl93b3JkcyAtLiBiZWZvcmUubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBiZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gYWZ0ZXIubWFqb3JfY29sbGVjdGlvbnMgLSBiZWZvcmUubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBhZnRlci5oZWFwX3dvcmRzIC0gYmVmb3JlLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gYWZ0ZXIuaGVhcF9jaHVua3MgLSBiZWZvcmUuaGVhcF9jaHVua3NcbiAgICA7IGxpdmVfd29yZHMgPSBhZnRlci5saXZlX3dvcmRzIC0gYmVmb3JlLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gYWZ0ZXIubGl2ZV9ibG9ja3MgLSBiZWZvcmUubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBhZnRlci5mcmVlX3dvcmRzIC0gYmVmb3JlLmZyZWVfd29yZHNcbiAgICA7IGZyZWVfYmxvY2tzID0gYWZ0ZXIuZnJlZV9ibG9ja3MgLSBiZWZvcmUuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGFmdGVyLmxhcmdlc3RfZnJlZSAtIGJlZm9yZS5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGFmdGVyLmZyYWdtZW50cyAtIGJlZm9yZS5mcmFnbWVudHNcbiAgICA7IGNvbXBhY3Rpb25zID0gYWZ0ZXIuY29tcGFjdGlvbnMgLSBiZWZvcmUuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gYWZ0ZXIudG9wX2hlYXBfd29yZHMgLSBiZWZvcmUudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBhZnRlci5zdGFja19zaXplIC0gYmVmb3JlLnN0YWNrX3NpemVcbiAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgIGFmdGVyLmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNcbiAgICB9XG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5lbmRcblxubW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgIHR5cGUgdCA9IENhbWwuR2MuY29udHJvbCA9XG4gICAgICB7IG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgOyBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSUgZWxzZV1cblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgIHR5cGUgdCA9IENhbWwuR2MuY29udHJvbCA9XG4gICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgOyBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICA7IG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgOyBzdGFja19saW1pdCA6IGludFxuICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlIGVuZGlmXVxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmVuZFxuXG5tb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkFsbG9jYXRpb25fcG9saWN5LlYxLnQgPVxuICAgIHwgTmV4dF9maXRcbiAgICB8IEZpcnN0X2ZpdFxuICAgIHwgQmVzdF9maXRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgfCBOZXh0X2ZpdCAtPiAwXG4gICAgfCBGaXJzdF9maXQgLT4gMVxuICAgIHwgQmVzdF9maXQgLT4gMlxuICA7O1xuZW5kXG5cbmxldCB0dW5lXG4gICAgICA/bG9nZ2VyXG4gICAgICA/bWlub3JfaGVhcF9zaXplXG4gICAgICA/bWFqb3JfaGVhcF9pbmNyZW1lbnRcbiAgICAgID9zcGFjZV9vdmVyaGVhZFxuICAgICAgP3ZlcmJvc2VcbiAgICAgID9tYXhfb3ZlcmhlYWRcbiAgICAgID9zdGFja19saW1pdFxuICAgICAgP2FsbG9jYXRpb25fcG9saWN5XG4gICAgICA/d2luZG93X3NpemVcbiAgICAgID9jdXN0b21fbWFqb3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfbWF4X3NpemVcbiAgICAgICgpXG4gID1cbiAgbGV0IG9sZF9jb250cm9sX3BhcmFtcyA9IGdldCAoKSBpblxuICBsZXQgZiBvcHQgdG9fc3RyaW5nIGZpZWxkID1cbiAgICBsZXQgb2xkX3ZhbHVlID0gRmllbGQuZ2V0IGZpZWxkIG9sZF9jb250cm9sX3BhcmFtcyBpblxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgIHwgU29tZSBuZXdfdmFsdWUgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGxvZ2dlciB+ZjooZnVuIGYgLT5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgZlxuICAgICAgICAgIFwiR2MuQ29udHJvbC4lczogJXMgLT4gJXNcIlxuICAgICAgICAgIChGaWVsZC5uYW1lIGZpZWxkKVxuICAgICAgICAgICh0b19zdHJpbmcgb2xkX3ZhbHVlKVxuICAgICAgICAgICh0b19zdHJpbmcgbmV3X3ZhbHVlKSk7XG4gICAgICBuZXdfdmFsdWVcbiAgaW5cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID0gT3B0aW9uLm1hcCBhbGxvY2F0aW9uX3BvbGljeSB+ZjpBbGxvY2F0aW9uX3BvbGljeS50b19pbnQgaW5cbiAgbGV0IG5ld19jb250cm9sX3BhcmFtcyA9XG4gICAgQ29udHJvbC5GaWVsZHMubWFwXG4gICAgICB+bWlub3JfaGVhcF9zaXplOihmIG1pbm9yX2hlYXBfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1ham9yX2hlYXBfaW5jcmVtZW50OihmIG1ham9yX2hlYXBfaW5jcmVtZW50IHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3BhY2Vfb3ZlcmhlYWQ6KGYgc3BhY2Vfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH52ZXJib3NlOihmIHZlcmJvc2Ugc3RyaW5nX29mX2ludClcbiAgICAgIH5tYXhfb3ZlcmhlYWQ6KGYgbWF4X292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3RhY2tfbGltaXQ6KGYgc3RhY2tfbGltaXQgc3RyaW5nX29mX2ludClcbiAgICAgIH5hbGxvY2F0aW9uX3BvbGljeTooZiBhbGxvY2F0aW9uX3BvbGljeSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfndpbmRvd19zaXplOihmIHdpbmRvd19zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21ham9yX3JhdGlvOihmIGN1c3RvbV9tYWpvcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9yYXRpbzooZiBjdXN0b21fbWlub3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfbWF4X3NpemU6KGYgY3VzdG9tX21pbm9yX21heF9zaXplIHN0cmluZ19vZl9pbnQpXG4gIGluXG4gIHNldCBuZXdfY29udHJvbF9wYXJhbXNcbjs7XG5cbmxldCBkaXNhYmxlX2NvbXBhY3Rpb24gP2xvZ2dlciB+YWxsb2NhdGlvbl9wb2xpY3kgKCkgPVxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPVxuICAgIG1hdGNoIGFsbG9jYXRpb25fcG9saWN5IHdpdGhcbiAgICB8IGBEb24ndF9jaGFuZ2UgLT4gTm9uZVxuICAgIHwgYFNldF90byBwb2xpY3kgLT4gU29tZSBwb2xpY3lcbiAgaW5cbiAgKCogVGhlIHZhbHVlIDFfMDAwXzAwMCwgYWNjb3JkaW5nIHRvXG4gICAgIGh0dHA6Ly9jYW1sLmlucmlhLmZyL3B1Yi9kb2NzL21hbnVhbC1vY2FtbC00LjAyL2xpYnJlZi9HYy5odG1sXG4gICAgIHdpbGwgZGlzYWJsZSBjb21wYWN0aW9ucy5cbiAgKilcbiAgdHVuZSA/bG9nZ2VyID9hbGxvY2F0aW9uX3BvbGljeSB+bWF4X292ZXJoZWFkOjFfMDAwXzAwMCAoKVxuOztcblxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBtYWpvcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHByb21vdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfcHJvbW90ZWRfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWlub3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvbXBhY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfY29tcGFjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfcGx1c19taW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgYWxsb2NhdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfYWxsb2NhdGVkX3dvcmRzXCJcblxubGV0IHplcm8gPSBTeXMub3BhcXVlX2lkZW50aXR5IChpbnRfb2Zfc3RyaW5nIFwiMFwiKVxuXG4oKiBUaGUgY29tcGlsZXIgd29uJ3Qgb3B0aW1pemUgaW50X29mX3N0cmluZyBhd2F5IHNvIGl0IHdvbid0XG4gICBwZXJmb3JtIGNvbnN0YW50IGZvbGRpbmcgYmVsb3cuICopXG5sZXQgcmVjIGtlZXBfYWxpdmUgbyA9IGlmIHplcm8gPD4gMCB0aGVuIGtlZXBfYWxpdmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgbylcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIGxldCBwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWxsb2NhdGlvbiAoKSA9XG4gICAgKCogV2UgY2FsbCBbbWlub3JdIHRvIGVtcHR5IHRoZSBtaW5vciBoZWFwLCBzbyB0aGF0IG91ciBhbGxvY2F0aW9uIGlzIHVubGlrZWx5IHRvXG4gICAgICAgdHJpZ2dlciBhIG1pbm9yIGdjLiAqKVxuICAgIG1pbm9yICgpO1xuICAgICgqIFdlIGFsbG9jYXRlIHR3byB3b3JkcyBpbiBjYXNlIHRoZSBbR2MubWlub3JdIGZpbmlzaGVzIGEgbWFqb3IgZ2MgY3ljbGUsIGluIHdoaWNoXG4gICAgICAgY2FzZSBpdCByZXF1ZXN0cyBhIG1pbm9yIGdjIHRvIG9jY3VyIGF0IHRoZSBuZXh0IG1pbm9yIGFsbG9jYXRpb24uICBXZSBkb24ndCB3YW50XG4gICAgICAgdGhlIHN1YnNlcXVlbnQgbWlub3IgYWxsb2NhdGlvbiB0byB0cmlnZ2VyIGEgbWlub3IgR0MsIGJlY2F1c2UgdGhlcmUgaXMgYSBidWdcbiAgICAgICAoaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy83Nzk4KSBpbiB0aGUgT0NhbWwgcnVudGltZSB0aGF0IGRvdWJsZVxuICAgICAgIGNvdW50cyBbR2MubWlub3Jfd29yZHNdIGluIHRoYXQgY2FzZS4gKilcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKHJlZiAoU3lzLm9wYXF1ZV9pZGVudGl0eSAxKSkgOiBpbnQgcmVmKVxuICA7O1xuXG4gICgqIFdlIGRpc2FibGUgaW5saW5pbmcgZm9yIHRoaXMgZnVuY3Rpb24gc28gdGhlIEdDIHN0YXRzIGFuZCB0aGUgY2FsbCB0byBbZl0gYXJlIG5ldmVyXG4gICAgIHJlYXJyYW5nZWQuICopXG4gIGxldFtAY29sZF0gbWVhc3VyZV9pbnRlcm5hbCB+b25fcmVzdWx0IGYgPVxuICAgIGxldCBtaW5vcl93b3Jkc19iZWZvcmUgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19iZWZvcmUgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgICgqIFdlIHdyYXAgW2YgKCldIHdpdGggW1N5cy5vcGFxdWVfaWRlbnRpdHldIHRvIHByZXZlbnQgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGJlaW5nXG4gICAgICAgb3B0aW1pemVkIGF3YXkuICopXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IChmICgpKSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hZnRlciA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FmdGVyID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID0gbWFqb3Jfd29yZHNfYWZ0ZXIgLSBtYWpvcl93b3Jkc19iZWZvcmUgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWxsb2NhdGVkID0gbWlub3Jfd29yZHNfYWZ0ZXIgLSBtaW5vcl93b3Jkc19iZWZvcmUgaW5cbiAgICBvbl9yZXN1bHQgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHhcbiAgOztcblxuICBsZXQgaXNfemVyb19hbGxvYyAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICAgICgqIEluc3RlYWQgb2YgdXNpbmcgW0FsbG9jYXRpb25fcmVwb3J0Lm1lYXN1cmVdLCBhbmQgbWF0Y2hpbmcgb24gdGhlIHJlc3VsdCwgd2UgdXNlXG4gICAgICAgdGhpcyBjb25zdHJ1Y3Rpb24sIGluIG9yZGVyIHRvIGhhdmUgW2lzX3plcm9fYWxsb2NdIG5vdCBhbGxvY2F0ZSBpdHNlbGYuIFRoaXNcbiAgICAgICBlbmFibGVzIFtpc196ZXJvX2FsbG9jXSB0byBiZSB1c2VkIGluIGEgbmVzdGVkIHdheS5cblxuICAgICAgIFRoaXMgYWxzbyBtZWFucyB3ZSBjYW5ub3QgY2FsbCBbcHJlcGFyZV9oZWFwX3RvX2NvdW50X21pbm9yX2FsbG9jYXRpb25dLiBUaGlzIGlzXG4gICAgICAgb2theSwgc2luY2Ugd2UgZG8gbm90IG5lZWQgYSBwcmVjaXNlIGNvdW50LCB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGNvdW50IGlzXG4gICAgICAgemVybyBvciBub3QuICopXG4gICAgbWVhc3VyZV9pbnRlcm5hbFxuICAgICAgZlxuICAgICAgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB2YWx1ZSAtPlxuICAgICAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgdmFsdWUgOiBhKTtcbiAgICAgICAgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID09IDAgJiYgbWlub3Jfd29yZHNfYWxsb2NhdGVkID09IDApXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fcmVwb3J0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICA7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIH1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWVhc3VyZV9hbGxvY2F0aW9uIGYgPVxuICAgIHByZXBhcmVfaGVhcF90b19jb3VudF9taW5vcl9hbGxvY2F0aW9uICgpO1xuICAgIG1lYXN1cmVfaW50ZXJuYWwgZiB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHggLT5cbiAgICAgIHgsIEFsbG9jYXRpb25fcmVwb3J0LmNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQpXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fbG9nID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2l6ZV9pbl93b3JkcyA6IGludFxuICAgICAgOyBpc19tYWpvciA6IGJvb2xcbiAgICAgIDsgYmFja3RyYWNlIDogc3RyaW5nXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTEsIDApXVxuXG4gIGxldCBtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvbiBmID1cbiAgICBsZXQgbG9nIDogQWxsb2NhdGlvbl9sb2cudCBsaXN0IHJlZiA9IHJlZiBbXVxuICAgIGFuZCBtYWpvcl9hbGxvY3MgPSByZWYgMFxuICAgIGFuZCBtaW5vcl9hbGxvY3MgPSByZWYgMCBpblxuICAgIGxldCBvbl9hbGxvYyB+aXNfbWFqb3IgKGluZm8gOiBDYW1sLkdjLk1lbXByb2YuYWxsb2NhdGlvbikgPVxuICAgICAgaWYgaXNfbWFqb3JcbiAgICAgIHRoZW4gbWFqb3JfYWxsb2NzIDo9ICFtYWpvcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlc1xuICAgICAgZWxzZSBtaW5vcl9hbGxvY3MgOj0gIW1pbm9yX2FsbG9jcyArIGluZm8ubl9zYW1wbGVzO1xuICAgICAgbGV0IGJhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgaW5mby5jYWxsc3RhY2sgaW5cbiAgICAgICgqIE1ha2UgYmFja3RyYWNlcyBlYXNpZXIgdG8gcmVhZCBieSBkZWxldGluZyBldmVyeXRoaW5nIGJlbG93IHRoaXMgZnVuY3Rpb24gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3Vic3RyX2luZGV4IGJhY2t0cmFjZSB+cGF0dGVybjpcIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uXCIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgcG9zc2libGU6IHdlIG1heSBoYXZlIGxvZ2dlZCBhbGxvY2F0aW9ucyBpbiBhbm90aGVyIHRocmVhZCAqKVxuICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgIFN0cmluZy5zdWIgfnBvczowIH5sZW46cCBiYWNrdHJhY2VcbiAgICAgICAgICB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihmdW5jdGlvblxuICAgICAgICAgICAgfCAnXFxuJyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICBpblxuICAgICAgbGV0IGluZm8gOiBBbGxvY2F0aW9uX2xvZy50ID1cbiAgICAgICAgeyBzaXplX2luX3dvcmRzID0gaW5mby5uX3NhbXBsZXM7IGlzX21ham9yOyBiYWNrdHJhY2UgfVxuICAgICAgaW5cbiAgICAgIGxvZyA6PSBpbmZvIDo6ICFsb2c7XG4gICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgdHJhY2tlciA9XG4gICAgICB7IENhbWwuR2MuTWVtcHJvZi5udWxsX3RyYWNrZXIgd2l0aFxuICAgICAgICBhbGxvY19taW5vciA9IG9uX2FsbG9jIH5pc19tYWpvcjpmYWxzZVxuICAgICAgOyBhbGxvY19tYWpvciA9IG9uX2FsbG9jIH5pc19tYWpvcjp0cnVlXG4gICAgICB9XG4gICAgaW5cbiAgICBDYW1sLkdjLk1lbXByb2Yuc3RhcnQgfnNhbXBsaW5nX3JhdGU6MS4wIHRyYWNrZXI7XG4gICAgKCogRXhuLnByb3RlY3QsIG1hbnVhbGx5IGlubGluZWQgdG8gZ3VhcmFudGVlIG5vIGFsbG9jYXRpb25zICopXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaCBmICgpIHdpdGhcbiAgICAgIHwgeCAtPlxuICAgICAgICAoKiBNZW1wcm9mLnN0b3AgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYWxsIG1lbXByb2YgY2FsbGJhY2tzIGFyZSBydW4gKHNvbWUgbWF5IGJlXG4gICAgICAgICAgIGRlbGF5ZWQgaWYgdGhleSBoYXBwZW5lZCBkdXJpbmcgQyBjb2RlIGFuZCB0aGVyZSBoYXMgYmVlbiBubyBhbGxvY2F0aW9uIHNpbmNlKSxcbiAgICAgICAgICAgc28gd2UgZXhwbGljdGx5IGZsdXNoIHRoZW0gKilcbiAgICAgICAgQ2FtbC5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHhcbiAgICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgQ2FtbC5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICggcmVzdWx0XG4gICAgLCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGVcbiAgICAgICAgfm1ham9yX3dvcmRzX2FsbG9jYXRlZDohbWFqb3JfYWxsb2NzXG4gICAgICAgIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQ6IW1pbm9yX2FsbG9jc1xuICAgICwgTGlzdC5yZXYgIWxvZyApXG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IHgsIHJlcG9ydCA9IG1lYXN1cmVfYWxsb2NhdGlvbiBmIGluXG4gICAgeCwgcmVwb3J0LCBbXVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGFkZF9maW5hbGl6ZXIgeCBmID1cbiAgICB0cnkgQ2FtbC5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAoKiBUaGUgdHlwZSBvZiBhZGRfZmluYWxpemVyIGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gICgqIFthZGRfZmluYWxpemVyX2V4bl0gaXMgdGhlIHNhbWUgYXMgW2FkZF9maW5hbGl6ZXJdLiAgSG93ZXZlciwgdGhlaXIgdHlwZXMgaW5cbiAgICAgY29yZV9nYy5tbGkgYXJlIGRpZmZlcmVudCwgYW5kIHRoZSB0eXBlIG9mIFthZGRfZmluYWxpemVyXSBndWFyYW50ZWVzIHRoYXQgaXQgYWx3YXlzXG4gICAgIHJlY2VpdmVzIGEgaGVhcCBibG9jaywgd2hpY2ggZW5zdXJlcyB0aGF0IGl0IHdpbGwgbm90IHJhaXNlLCB3aGlsZVxuICAgICBbYWRkX2ZpbmFsaXplcl9leG5dIGFjY2VwdHMgYW55IHR5cGUsIGFuZCBzbyBtYXkgcmFpc2UuICopXG4gIGxldCBhZGRfZmluYWxpemVyX2V4biB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGlnbm9yZSAoSGVhcF9ibG9jay5jcmVhdGUgeCA6IF8gSGVhcF9ibG9jay50IG9wdGlvbik7XG4gICAgICAoKiBJZiBbSGVhcF9ibG9jay5jcmVhdGVdIHN1Y2NlZWRzIHRoZW4gW3hdIGlzIHN0YXRpYyBkYXRhIGFuZCBzb1xuICAgICAgICAgd2UgY2FuIHNpbXBseSBkcm9wIHRoZSBmaW5hbGlzZXIuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBhZGRfZmluYWxpemVyX2xhc3QgeCBmID1cbiAgICB0cnkgQ2FtbC5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplcl9sYXN0IGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGlnbm9yZSAoSGVhcF9ibG9jay5jcmVhdGUgeCA6IF8gSGVhcF9ibG9jay50IG9wdGlvbik7XG4gICAgICAoKiBJZiBbSGVhcF9ibG9jay5jcmVhdGVdIHN1Y2NlZWRzIHRoZW4gW3hdIGlzIHN0YXRpYyBkYXRhIGFuZCBzb1xuICAgICAgICAgd2UgY2FuIHNpbXBseSBkcm9wIHRoZSBmaW5hbGlzZXIuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZV9yZWxlYXNlID0gQ2FtbC5HYy5maW5hbGlzZV9yZWxlYXNlXG5cbiAgbW9kdWxlIEFsYXJtID0gc3RydWN0XG4gICAgdHlwZSB0ID0gYWxhcm1cblxuICAgIGxldCBzZXhwX29mX3QgXyA9IFwiPGdjIGFsYXJtPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGxldCBjcmVhdGUgZiA9IGNyZWF0ZV9hbGFybSAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZilcbiAgICBsZXQgZGVsZXRlID0gZGVsZXRlX2FsYXJtXG4gIGVuZFxuZW5kXG4iLCJvcGVuIFN0YWJsZV9tb2R1bGVfdHlwZXNcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdCA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogdCAtPiBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICBlbmQpIDogUzAgd2l0aCB0eXBlIHQgPSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUMiA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDJcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUuVjEgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlYxLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAnYSB0IC0+ICdhIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTEuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUyLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTIuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuUXVldWVcblxuaW5jbHVkZSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5IGEgPVxuICAgICAgICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBXZSBlbnF1ZXVlIGV2ZXJ5dGhpbmcgdHdpY2UsIGFuZCBkZXF1ZXVlIGl0IG9uY2UgdG8gZW5zdXJlOlxuICAgICAgICAgICAtIHRoYXQgdGhlIHF1ZXVlIGhhcyB0aGUgc2FtZSBjb250ZW50IGFzIHRoZSBhcnJheS5cbiAgICAgICAgICAgLSB0aGF0IGl0IGhhcywgaW4gbW9zdCBjYXNlcywgYW4gaW50ZXJlc3RpbmcgaW50ZXJuYWwgc3RydWN0dXJlKilcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX2V4biByIDogYm9vbCk7XG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHJcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIFNlcmlhbGl6YXRpb25fdjEgPSBzdHJ1Y3RcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiNGM4NDI1NC00OTkyLTExZTYtOWJhNy03MzRlMTU0MDI3YmRcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuUXVldWVcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID0gaW5pdCBsZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpXG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGUgU2VyaWFsaXphdGlvbl92MVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxuICAgICgqIFdlIGRvbid0IGhhdmUgYSBbJWJpbl9kaWdlc3RdIGV4cGVjdCB0ZXN0IGhlcmUgYmVjYXVzZSB0aGUgYmluX2lvIGlzIG1vc3RseSBoYW5kXG4gICAgICAgd3JpdHRlbiwgYW5kIFtjb3JlX3F1ZXVlX3VuaXRfdGVzdHMubWxdIGhhcyB1bml0IHRlc3RzIGZvciBzcGVjaWZpYyB2YWx1ZXMuICopXG5cbiAgICBsZXQgbWFwID0gbWFwXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgVW5pdF90ZXN0ID0gU3RhYmxlX3VuaXRfdGVzdC5NYWtlXG5cblxubW9kdWxlIHR5cGUgU3RhYmxlID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMFxubW9kdWxlIHR5cGUgU3RhYmxlX3dpdGhvdXRfY29tcGFyYXRvciA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBfd2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgdHlwZSBTdGFibGUxID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMVxubW9kdWxlIHR5cGUgU3RhYmxlMiA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzJcbm1vZHVsZSB0eXBlIFN0YWJsZTMgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMzXG5tb2R1bGUgdHlwZSBTdGFibGU0ID0gU3RhYmxlX21vZHVsZV90eXBlcy5TNFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgPSBNYWtlX3N0YWJsZVxuaW5jbHVkZSBTdGFibGVfaW50ZXJuYWxcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlLlN0YWJsZVxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZy5TdGFibGVcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcbm1vZHVsZSBCbGFuZyA9IEJsYW5nLlN0YWJsZVxubW9kdWxlIEJvb2wgPSBCb29sLlN0YWJsZVxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzLlN0YWJsZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgRGF0ZSA9IERhdGUuU3RhYmxlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vlay5TdGFibGVcbm1vZHVsZSBNZDUgPSBNZDUuU3RhYmxlXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyLlN0YWJsZVxubW9kdWxlIEVycm9yID0gRXJyb3IuU3RhYmxlXG5tb2R1bGUgRmRlcXVlID0gRmRlcXVlLlN0YWJsZVxubW9kdWxlIEZpbGVuYW1lID0gRmlsZW5hbWUuU3RhYmxlXG5tb2R1bGUgRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uID0gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLlN0YWJsZVxubW9kdWxlIEZxdWV1ZSA9IEZxdWV1ZS5TdGFibGVcbm1vZHVsZSBHYyA9IEdjLlN0YWJsZVxubW9kdWxlIEhvc3RfYW5kX3BvcnQgPSBIb3N0X2FuZF9wb3J0LlN0YWJsZVxubW9kdWxlIEluZm8gPSBJbmZvLlN0YWJsZVxubW9kdWxlIEludCA9IEludC5TdGFibGVcbm1vZHVsZSBJbnQ2MyA9IEludDYzLlN0YWJsZVxubW9kdWxlIExhenkgPSBMYXp5LlN0YWJsZVxubW9kdWxlIExpc3QgPSBMaXN0LlN0YWJsZVxubW9kdWxlIE1hcCA9IE1hcC5TdGFibGVcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kLlN0YWJsZVxubW9kdWxlIE1vbnRoID0gTW9udGguU3RhYmxlXG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmcuU3RhYmxlXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uLlN0YWJsZVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3IuU3RhYmxlXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnQuU3RhYmxlXG5tb2R1bGUgUGVybXMgPSBQZXJtcy5TdGFibGVcbm1vZHVsZSBQaWQgPSBQaWQuU3RhYmxlXG5tb2R1bGUgUXVldWUgPSBRdWV1ZS5TdGFibGVcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHQuU3RhYmxlXG5tb2R1bGUgU2V0ID0gU2V0LlN0YWJsZVxubW9kdWxlIFNleHAgPSBTZXhwLlN0YWJsZVxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGUuU3RhYmxlXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGVcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcuU3RhYmxlXG5tb2R1bGUgU3RyaW5nX2lkID0gU3RyaW5nX2lkLlN0YWJsZVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zLlN0YWJsZVxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0LlN0YWJsZVxubW9kdWxlIFVuaXQgPSBVbml0LlN0YWJsZVxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDb3JlX3VuaXguU3RhYmxlXVwiXVxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcblxuaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuaW5jbHVkZSBJbXBvcnQuTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIEludCA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuXG5sZXQgb2ZfY2FtbF9pbnQgdCA9IHRcbmxldCB0b19jYW1sX2ludCB0ID0gdFxuXG50eXBlIHN5c19iZWhhdmlvciA9XG4gIFsgYENvbnRpbnVlICgqKiBDb250aW51ZSB0aGUgcHJvY2VzcyBpZiBpdCBpcyBjdXJyZW50bHkgc3RvcHBlZCAqKVxuICB8IGBEdW1wX2NvcmUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyBhbmQgZHVtcCBjb3JlICopXG4gIHwgYElnbm9yZSAoKiogSWdub3JlIHRoZSBzaWduYWwgKilcbiAgfCBgU3RvcCAoKiogU3RvcCB0aGUgcHJvY2VzcyAqKVxuICB8IGBUZXJtaW5hdGUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyAqKVxuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXF1YWwgKHQgOiB0KSB0JyA9IHQgPSB0J1xuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBQbGVhc2Uga2VlcCBpbiBzeW5jIHdpdGggdGhlIGxpc3QgZm9yIHRvX3N0cmluZy9zeXNfYmVoYXZpb3IgKilcbiAgb3BlbiBDYW1sLlN5c1xuXG4gIGxldCBhYnJ0ID0gc2lnYWJydFxuICBsZXQgYWxybSA9IHNpZ2Fscm1cbiAgbGV0IGJ1cyA9IHNpZ2J1c1xuICBsZXQgY2hsZCA9IHNpZ2NobGRcbiAgbGV0IGNvbnQgPSBzaWdjb250XG4gIGxldCBmcGUgPSBzaWdmcGVcbiAgbGV0IGh1cCA9IHNpZ2h1cFxuICBsZXQgaWxsID0gc2lnaWxsXG4gIGxldCBpbnQgPSBzaWdpbnRcbiAgbGV0IGtpbGwgPSBzaWdraWxsXG4gIGxldCBwaXBlID0gc2lncGlwZVxuICBsZXQgcG9sbCA9IHNpZ3BvbGxcbiAgbGV0IHByb2YgPSBzaWdwcm9mXG4gIGxldCBxdWl0ID0gc2lncXVpdFxuICBsZXQgc2VndiA9IHNpZ3NlZ3ZcbiAgbGV0IHN0b3AgPSBzaWdzdG9wXG4gIGxldCBzeXMgPSBzaWdzeXNcbiAgbGV0IHRlcm0gPSBzaWd0ZXJtXG4gIGxldCB0cmFwID0gc2lndHJhcFxuICBsZXQgdHN0cCA9IHNpZ3RzdHBcbiAgbGV0IHR0aW4gPSBzaWd0dGluXG4gIGxldCB0dG91ID0gc2lndHRvdVxuICBsZXQgdXJnID0gc2lndXJnXG4gIGxldCB1c3IxID0gc2lndXNyMVxuICBsZXQgdXNyMiA9IHNpZ3VzcjJcbiAgbGV0IHZ0YWxybSA9IHNpZ3Z0YWxybVxuICBsZXQgeGNwdSA9IHNpZ3hjcHVcbiAgbGV0IHhmc3ogPSBzaWd4ZnN6XG4gIGxldCB6ZXJvID0gMFxuZW5kXG5cbmV4Y2VwdGlvbiBJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yID1cbiAgbGV0IGtub3duID1cbiAgICBbXG4gICAgICBcInNpZ2FicnRcIiwgYWJydCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdhbHJtXCIsIGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnYnVzXCIsIGJ1cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWdjaGxkXCIsIGNobGQsIGBJZ25vcmUsIDFcbiAgICA7IFwic2lnY29udFwiLCBjb250LCBgQ29udGludWUsIDFcbiAgICA7IFwic2lnZnBlXCIsIGZwZSwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdodXBcIiwgaHVwLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2lsbFwiLCBpbGwsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaW50XCIsIGludCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdraWxsXCIsIGtpbGwsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncGlwZVwiLCBwaXBlLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BvbGxcIiwgcG9sbCwgYFRlcm1pbmF0ZSwgMlxuICAgIDsgXCJzaWdwcm9mXCIsIHByb2YsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncXVpdFwiLCBxdWl0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3NlZ3ZcIiwgc2VndiwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzdG9wXCIsIHN0b3AsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3N5c1wiLCBzeXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndGVybVwiLCB0ZXJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3RyYXBcIiwgdHJhcCwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0c3RwXCIsIHRzdHAsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0aW5cIiwgdHRpbiwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRvdVwiLCB0dG91LCBgU3RvcCwgMVxuICAgIDsgXCJzaWd1cmdcIiwgdXJnLCBgSWdub3JlLCAyXG4gICAgOyBcInNpZ3VzcjFcIiwgdXNyMSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd1c3IyXCIsIHVzcjIsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndnRhbHJtXCIsIHZ0YWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd4Y3B1XCIsIHhjcHUsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lneGZzelwiLCB4ZnN6LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3plcm9cIiwgemVybywgYElnbm9yZSwgMVxuICAgIF1cbiAgaW5cbiAgbGV0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgdF9ieV9uYW1lID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCBiZWhhdmlvcl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIExpc3QuaXRlciBrbm93biB+ZjooZnVuIChuYW1lLCB0LCBiZWhhdmlvciwgc3RhYmxlX3ZlcnNpb24pIC0+XG4gICAgSGFzaHRibC5zZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IH5rZXk6dCB+ZGF0YToobmFtZSwgc3RhYmxlX3ZlcnNpb24pO1xuICAgIEhhc2h0Ymwuc2V0IHRfYnlfbmFtZSB+a2V5Om5hbWUgfmRhdGE6dDtcbiAgICBIYXNodGJsLnNldCBiZWhhdmlvcl9ieV90IH5rZXk6dCB+ZGF0YTpiZWhhdmlvcik7XG4gICgqIEZvciB1bmtub3duIHNpZ25hbCBudW1iZXJzLCBbdG9fc3RyaW5nXSByZXR1cm5zIGEgbWVhbmluZ2Z1bFxuICAgICBzdHJpbmcsIHdoaWxlIFtkZWZhdWx0X3N5c19iZWhhdmlvcl0gaGFzIHRvIHJhaXNlIGFuIGV4Y2VwdGlvblxuICAgICBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcmlnaHQgYW5zd2VyIGlzLiAqKVxuICBsZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOnJlcXVlc3RlZF92ZXJzaW9uID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IHQgd2l0aFxuICAgIHwgU29tZSAoc3RyaW5nLCBuZWVkZWRfdmVyc2lvbikgd2hlbiByZXF1ZXN0ZWRfdmVyc2lvbiA+PSBuZWVkZWRfdmVyc2lvbiAtPiBzdHJpbmdcbiAgICB8IF8gLT4gXCI8dW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQgXiBcIj5cIlxuICBpblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBzID0gU3RyaW5nLmxvd2VyY2FzZSAoU3RyaW5nLnN0cmlwIHMpIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRfYnlfbmFtZSBzIHdpdGhcbiAgICB8IFNvbWUgc24gLT4gc25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OlwiPHVua25vd24gc2lnbmFsIFwiXG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgKFN0cmluZy5zbGljZSBzIDE2IH4tMSkgd2l0aFxuICAgICAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKSlcbiAgICAgIGVsc2UgcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKVxuICBpblxuICBsZXQgZGVmYXVsdF9zeXNfYmVoYXZpb3IgdCA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIGJlaGF2aW9yX2J5X3QgdCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoSW52YWxpZF9hcmd1bWVudFxuICAgICAgICAgICAoXCJTaWduYWwuZGVmYXVsdF9zeXNfYmVoYXZpb3I6IHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0KSlcbiAgICB8IFNvbWUgYmVoYXZpb3IgLT4gYmVoYXZpb3JcbiAgaW5cbiAgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvclxuOztcblxuZXhjZXB0aW9uIEV4cGVjdGVkX2F0b20gb2YgU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24gPSBTZXhwLkF0b20gKHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbilcbmxldCB0b19zdHJpbmcgcyA9IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gcyB+dmVyc2lvbjoyXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MVxuXG5sZXQgdF9vZl9zZXhwIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICB8IF8gLT4gcmFpc2UgKEV4cGVjdGVkX2F0b20gcylcbjs7XG5cbnR5cGUgcGlkX3NwZWMgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxudHlwZSBzaWdwcm9jbWFza19jb21tYW5kID0gWyBgVXNlX1NpZ25hbF91bml4IF1cblxubGV0IGNhbl9zZW5kX3RvID0gYFVzZV9TaWduYWxfdW5peFxubGV0IG9mX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2V4biA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2kgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2V4cF9vZl9waWRfc3BlYyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwZW5kaW5nID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3Byb2NtYXNrID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3N1c3BlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgdG9fc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICB0eXBlIGJlaGF2aW9yID1cbiAgICBbIGBEZWZhdWx0XG4gICAgfCBgSWdub3JlXG4gICAgfCBgSGFuZGxlIG9mIHQgLT4gdW5pdFxuICAgIF1cblxuICBtb2R1bGUgQmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IENhbWwuU3lzLlNpZ25hbF9kZWZhdWx0IC0+IGBEZWZhdWx0XG4gICAgICB8IFNpZ25hbF9pZ25vcmUgLT4gYElnbm9yZVxuICAgICAgfCBTaWduYWxfaGFuZGxlIGYgLT4gYEhhbmRsZSBmXG4gICAgOztcblxuICAgIGxldCB0b19jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgYERlZmF1bHQgLT4gQ2FtbC5TeXMuU2lnbmFsX2RlZmF1bHRcbiAgICAgIHwgYElnbm9yZSAtPiBTaWduYWxfaWdub3JlXG4gICAgICB8IGBIYW5kbGUgZiAtPiBTaWduYWxfaGFuZGxlIChmdW4gdCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2lnbmFsIHQgYmVoYXZpb3IgPSBCZWhhdmlvci5vZl9jYW1sIChDYW1sLlN5cy5zaWduYWwgdCAoQmVoYXZpb3IudG9fY2FtbCBiZWhhdmlvcikpXG4gIGxldCBzZXQgdCBiZWhhdmlvciA9IGlnbm9yZSAoc2lnbmFsIHQgYmVoYXZpb3IgOiBiZWhhdmlvcilcbiAgbGV0IGhhbmRsZSB0IGYgPSBzZXQgdCAoYEhhbmRsZSBmKVxuZW5kXG5cbm9wZW4gRXhwZXJ0XG5cbmxldCBoYW5kbGVfZGVmYXVsdCB0ID0gc2V0IHQgYERlZmF1bHRcbmxldCBpZ25vcmUgdCA9IHNldCB0IGBJZ25vcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjJcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduX29yX25hbiA9IEJhc2UuU2lnbl9vcl9uYW5cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduX29yX25hbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgICB8IE5hblxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduX29yX25hblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduX29yX25hbikgKFN0YWJsZS5WMSlcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgdG9fc3RyaW5nIF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgcHJpbnQgXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5fdG9fc3RyaW5nX2luc3RlYWRcbmxldCBjYXRjaCBfIF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX2hhbmRsZV91bmNhdWdodF9pbnN0ZWFkXG5sZXQgcHJpbnRfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5wcmludF9iYWNrdHJhY2VcbmxldCBnZXRfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5nZXRfYmFja3RyYWNlXG5sZXQgcmVjb3JkX2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZVxubGV0IGJhY2t0cmFjZV9zdGF0dXMgPSBDYW1sLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvbl9hcnJheVxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuTGF6eX1bQmFzZS5MYXp5XX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBCYXNlLkxhenkudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgKCoqIEBpbmxpbmUgKilcblxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBjb21wYXJlID1cbiAgWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cblxubGV0IGNvbXBhcmUgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDwgKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBlcXVhbCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1pbiBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1heCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICgnYSwgJ2IpIGZuID0gJ2EgLT4gJ2JcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUnZhbCBvZiAnYVxuICAgIHwgRXhwdCBvZiBleG5cblxuICBsZXQgcmV0dXJuID0gZnVuY3Rpb25cbiAgICB8IFJ2YWwgdiAtPiB2XG4gICAgfCBFeHB0IGUgLT4gcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjYXB0dXJlIGYgeCA9XG4gICAgdHJ5IFJ2YWwgKGYgeCkgd2l0aFxuICAgIHwgQ2FtbC5TeXMuQnJlYWsgYXMgZSAtPiByYWlzZSBlXG4gICAgfCBlIC0+IEV4cHQgZVxuICA7O1xuZW5kXG5cbmxldCB1bml0IGYgPVxuICBsZXQgbCA9IExhenkuZnJvbV9mdW4gZiBpblxuICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBsXG47O1xuXG5sZXQgdW5ib3VuZGVkICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIGYgPVxuICBsZXQgY2FjaGUgPVxuICAgIGxldCBtb2R1bGUgQSA9XG4gICAgICBIYXNoYWJsZS5NYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBhXG5cbiAgICAgICAgbGV0IHsgSGFzaHRibC5IYXNoYWJsZS5oYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9IGhhc2hhYmxlXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBBLlRhYmxlLmNyZWF0ZSAoKSB+c2l6ZTowXG4gIGluXG4gICgqIEFsbG9jYXRlIHRoaXMgY2xvc3VyZSBhdCB0aGUgY2FsbCB0byBbdW5ib3VuZGVkXSwgbm90IGF0IGVhY2ggY2FsbCB0byB0aGUgbWVtb2l6ZWRcbiAgICAgZnVuY3Rpb24uICopXG4gIGxldCByZWFsbHlfY2FsbF9mIGFyZyA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gIGZ1biBhcmcgLT4gUmVzdWx0LnJldHVybiAoSGFzaHRibC5maW5kaV9vcl9hZGQgY2FjaGUgYXJnIH5kZWZhdWx0OnJlYWxseV9jYWxsX2YpXG47O1xuXG4oKiB0aGUgc2FtZSBidXQgd2l0aCBhIGJvdW5kIG9uIGNhY2hlIHNpemUgKilcbmxldCBscnUgKHR5cGUgYSkgPyhoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUucG9seSkgfm1heF9jYWNoZV9zaXplIGYgPVxuICBpZiBtYXhfY2FjaGVfc2l6ZSA8PSAwXG4gIHRoZW4gZmFpbHdpdGhmIFwiTWVtby5scnU6IG1heF9jYWNoZV9zaXplIG9mICVpIDw9IDBcIiBtYXhfY2FjaGVfc2l6ZSAoKTtcbiAgbGV0IG1vZHVsZSBDYWNoZSA9XG4gICAgSGFzaF9xdWV1ZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHsgSGFzaHRibC5IYXNoYWJsZS5oYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuICBpblxuICBsZXQgY2FjaGUgPSBDYWNoZS5jcmVhdGUgKCkgaW5cbiAgZnVuIGFyZyAtPlxuICAgIFJlc3VsdC5yZXR1cm5cbiAgICAgIChtYXRjaCBDYWNoZS5sb29rdXBfYW5kX21vdmVfdG9fYmFjayBjYWNoZSBhcmcgd2l0aFxuICAgICAgIHwgU29tZSByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgcmVzdWx0ID0gUmVzdWx0LmNhcHR1cmUgZiBhcmcgaW5cbiAgICAgICAgIENhY2hlLmVucXVldWVfYmFja19leG4gY2FjaGUgYXJnIHJlc3VsdDtcbiAgICAgICAgICgqIGVqZWN0IGxlYXN0IHJlY2VudGx5IHVzZWQgY2FjaGUgZW50cnkgKilcbiAgICAgICAgIGlmIENhY2hlLmxlbmd0aCBjYWNoZSA+IG1heF9jYWNoZV9zaXplXG4gICAgICAgICB0aGVuIGlnbm9yZSAoQ2FjaGUuZGVxdWV1ZV9mcm9udF9leG4gY2FjaGUgOiBfIFJlc3VsdC50KTtcbiAgICAgICAgIHJlc3VsdClcbjs7XG5cbmxldCBnZW5lcmFsID9oYXNoYWJsZSA/Y2FjaGVfc2l6ZV9ib3VuZCBmID1cbiAgbWF0Y2ggY2FjaGVfc2l6ZV9ib3VuZCB3aXRoXG4gIHwgTm9uZSAtPiB1bmJvdW5kZWQgP2hhc2hhYmxlIGZcbiAgfCBTb21lIG4gLT4gbHJ1ID9oYXNoYWJsZSB+bWF4X2NhY2hlX3NpemU6biBmXG47O1xuXG4oKiBXZSBleHBlY3QgW2Zfb25lc3RlcF0gdG8gYmUgYSBvbmUtc3RlcCB1bnJvbGxlZCByZWN1cnNpdmUgZnVuY3Rpb247IHNlZSB0aGUgbWxpLiBIZW5jZSxcbiAgIGhlcmUgd2UgY3JlYXRlIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBfYW5kXyBwYXNzIGl0IHRvIFtmX29uZXN0ZXBdIHRvIGJlIHVzZWQgZm9yXG4gICByZWN1cnNpdmUgY2FsbHMuXG5cbiAgIE5vdGUgdGhhdCB3ZSBpbW1lZGlhdGVseSBhcHBseSBbZl9vbmVzdGVwXSB0byBpdHMgZmlyc3QgYXJndW1lbnQgaGVyZSBzbyB0aGF0IGFueVxuICAgcHJlY29tcHV0YXRpb24gaXMgcGVyZm9ybWVkIHdoZW4gdGhlIHVzZXIgY2FsbHMgW3JlY3Vyc2l2ZV0uXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGlmIHNvbWVvbmUgd3JpdGVzIHRoaXMgbm9uLW1lbW9pemVkIGNvZGU6XG5cbiAgIFsgbGV0IHJlYyBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gXVxuXG4gICBhbmQgY29udmVydHMgdG8gbWVtb2l6YXRpb24gYnkgZG9pbmc6XG5cbiAgIHtbXG4gICAgIGxldCBmID1cbiAgICAgICBsZXQgZl9vbmVzdGVwIGYgPSBsZXQgZGF0YSA9IGNvbXB1dGVfd2l0aG91dF91c2luZ19mICgpIGluIGZ1biB4IC0+IC4uLiBmIC4uLiBpblxuICAgICAgIHJlY3Vyc2l2ZSBmX29uZXN0ZXBcbiAgIF19XG5cbiAgIHdlIHdhbnQgdG8gY29tcHV0ZSBbZGF0YV0gaW1tZWRpYXRlbHkuIElmIHdlIGhhZCBbZnVuIHggLT4gZl9vbmVzdGVwIChmb3JjZSBtZW1vaXplZClcbiAgIHhdIGJlbG93LCB3ZSdkIHJlY29tcHV0ZSBbZGF0YV0gZWFjaCB0aW1lIHRoZSB1c2VyIGNhbGxzIFtmXSBvbiBhbiBhcmd1bWVudCB0aGF0IGhhZG4ndFxuICAgeWV0IGJlZW4gbWVtb2l6ZWQuICopXG5sZXQgcmVjdXJzaXZlIH5oYXNoYWJsZSA/Y2FjaGVfc2l6ZV9ib3VuZCBmX29uZXN0ZXAgPVxuICBsZXQgcmVjIG1lbW9pemVkID1cbiAgICBsYXp5IChnZW5lcmFsIH5oYXNoYWJsZSA/Y2FjaGVfc2l6ZV9ib3VuZCAoZl9vbmVzdGVwIChmdW4geCAtPiAoZm9yY2UgbWVtb2l6ZWQpIHgpKSlcbiAgaW5cbiAgZm9yY2UgbWVtb2l6ZWRcbjs7XG5cbmxldCBvZl9jb21wYXJhYmxlICh0eXBlIGluZGV4KSAobW9kdWxlIE0gOiBDb21wYXJhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBpbmRleCkgZiA9XG4gIGxldCBtID0gcmVmIE0uTWFwLmVtcHR5IGluXG4gIGZ1biAoeCA6IE0udCkgLT5cbiAgICBsZXQgdiA9XG4gICAgICBtYXRjaCBNYXAuZmluZCAhbSB4IHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgdiA9IFJlc3VsdC5jYXB0dXJlIGYgeCBpblxuICAgICAgICBtIDo9IE1hcC5zZXQgIW0gfmtleTp4IH5kYXRhOnY7XG4gICAgICAgIHZcbiAgICBpblxuICAgIFJlc3VsdC5yZXR1cm4gdlxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFF1ZXVlID0gQmFzZS5MaW5rZWRfcXVldWVcbmluY2x1ZGUgUXVldWVcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBRdWV1ZS50XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4MDBkZjlhMC00OTkyLTExZTYtODgxZC1mZmUxYTVjOGFjZWRcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5MaW5rZWRfcXVldWVcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciA9IGl0ZXJcblxuICAgICgqIEJpbl9wcm90IHJlYWRzIHRoZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IHdlcmUgd3JpdHRlbiBvdXQsIGFzIGRldGVybWluZWRcbiAgICAgICBieSBbaXRlcl0uICBTbywgd2UgY2FuIGlnbm9yZSB0aGUgaW5kZXggYW5kIGp1c3QgZW5xdWV1ZSBlYWNoIGVsZW1lbnQgYXMgaXQgaXMgcmVhZFxuICAgICAgIGluLiAqKVxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGZvciBfID0gMSB0byBsZW4gZG9cbiAgICAgICAgZW5xdWV1ZSB0IChuZXh0ICgpKVxuICAgICAgZG9uZTtcbiAgICAgIHRcbiAgICA7O1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRGVyaXZpbmdfaGFzaF9pbnRmXG5cbm1vZHVsZSBPZl9kZXJpdmluZ19oYXNoXG4gICAgKFJlcHIgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgIHZhbCB0b19yZXByIDogdCAtPiBSZXByLnRcbiAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFJlcHIuaGFzaF9mb2xkX3Qgc3RhdGUgKE0udG9fcmVwciB0KVxuICBsZXQgaGFzaCA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5vZl9mb2xkIGhhc2hfZm9sZF90XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAnYSB0ID1cbiAgeyAoKiBbYXJyXSBpcyBhIGN5Y2xpYyBidWZmZXIgKilcbiAgICBtdXRhYmxlIGFyciA6ICdhIE9wdGlvbl9hcnJheS50XG4gIDsgKCogW2Zyb250X2luZGV4XSBhbmQgW2JhY2tfaW5kZXhdIGFyZSB0aGUgcG9zaXRpb25zIGluIHdoaWNoIG5ldyBlbGVtZW50cyBtYXkgYmVcbiAgICAgICBlbnF1ZXVlZC4gIFRoaXMgbWFrZXMgdGhlIGFjdGl2ZSBwYXJ0IG9mIFthcnJdIHRoZSByYW5nZSBmcm9tIFtmcm9udF9pbmRleCsxXSB0b1xuICAgICAgIFtiYWNrX2luZGV4LTFdIChtb2R1bG8gdGhlIGxlbmd0aCBvZiBbYXJyXSBhbmQgd3JhcHBpbmcgYXJvdW5kIGlmIG5lY2Vzc2FyeSkuICBOb3RlXG4gICAgICAgdGhhdCB0aGlzIG1lYW5zIHRoZSBhY3RpdmUgcmFuZ2UgaXMgbWF4aW1pemVkIHdoZW4gW2Zyb250X2luZGV4ID0gYmFja19pbmRleF0sIHdoaWNoXG4gICAgICAgb2NjdXJzIHdoZW4gdGhlcmUgYXJlIFtBcnJheS5sZW5ndGggYXJyIC0gMV0gYWN0aXZlIGVsZW1lbnRzLiAqKVxuICAgIG11dGFibGUgZnJvbnRfaW5kZXggOiBpbnRcbiAgOyBtdXRhYmxlIGJhY2tfaW5kZXggOiBpbnRcbiAgOyAoKiBhcHBhcmVudF9mcm9udF9pbmRleCBpcyB3aGF0IGlzIGV4cG9zZWQgYXMgdGhlIGZyb250IGluZGV4IGV4dGVybmFsbHkuICBJdCBoYXMgbm9cbiAgICAgICByZWFsIHJlbGF0aW9uIHRvIHRoZSBhcnJheSAtLSBldmVyeSBlbnF1ZXVlIHRvIHRoZSBmcm9udCBkZWNyZW1lbnRzIGl0IGFuZCBldmVyeVxuICAgICAgIGRlcXVldWUgZnJvbSB0aGUgZnJvbnQgaW5jcmVtZW50cyBpdC4gKilcbiAgICBtdXRhYmxlIGFwcGFyZW50X2Zyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyAoKiBXZSBrZWVwIGFycl9sZW5ndGggaGVyZSBhcyBhIHNwZWVkIGhhY2suICBDYWxsaW5nIEFycmF5Lmxlbmd0aCBvbiBhcnIgaXMgYWN0dWFsbHlcbiAgICAgICBtZWFuaW5nZnVsbHkgc2xvd2VyLiAqKVxuICAgIG11dGFibGUgYXJyX2xlbmd0aCA6IGludFxuICA7IG5ldmVyX3NocmluayA6IGJvb2xcbiAgfVxuXG5sZXQgY3JlYXRlID9pbml0aWFsX2xlbmd0aCA/bmV2ZXJfc2hyaW5rICgpID1cbiAgbGV0IG5ldmVyX3NocmluayA9XG4gICAgbWF0Y2ggbmV2ZXJfc2hyaW5rIHdpdGhcbiAgICB8IE5vbmUgLT4gT3B0aW9uLmlzX3NvbWUgaW5pdGlhbF9sZW5ndGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gIGluXG4gIGxldCBpbml0aWFsX2xlbmd0aCA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDo3IGluaXRpYWxfbGVuZ3RoIGluXG4gIGlmIGluaXRpYWxfbGVuZ3RoIDwgMFxuICB0aGVuIGludmFsaWRfYXJnZiBcInBhc3NlZCBuZWdhdGl2ZSBpbml0aWFsX2xlbmd0aCB0byBEZXF1ZS5jcmVhdGU6ICVpXCIgaW5pdGlhbF9sZW5ndGggKCk7XG4gICgqIE1ha2UgdGhlIGluaXRpYWwgYXJyYXkgbGVuZ3RoIGJlIFtpbml0aWFsX2xlbmd0aCArIDFdIHNvIHdlIGNhbiBmaXQgW2luaXRpYWxfbGVuZ3RoXVxuICAgICBlbGVtZW50cyB3aXRob3V0IGdyb3dpbmcuICBXZSBuZXZlciBxdWl0ZSB1c2UgdGhlIHdob2xlIGFycmF5LiAqKVxuICBsZXQgYXJyX2xlbmd0aCA9IGluaXRpYWxfbGVuZ3RoICsgMSBpblxuICB7IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjphcnJfbGVuZ3RoXG4gIDsgZnJvbnRfaW5kZXggPSAwXG4gIDsgYmFja19pbmRleCA9IDFcbiAgOyBhcHBhcmVudF9mcm9udF9pbmRleCA9IDBcbiAgOyBsZW5ndGggPSAwXG4gIDsgYXJyX2xlbmd0aFxuICA7IG5ldmVyX3Nocmlua1xuICB9XG47O1xuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuKCogV2Uga2VlcCB0cmFjayBvZiB0aGUgbGVuZ3RoIGluIGEgbXV0YWJsZSBmaWVsZCBmb3Igc3BlZWQsIGJ1dCB0aGlzIGNhbGN1bGF0aW9uIHNob3VsZFxuICAgYmUgY29ycmVjdCBieSBjb25zdHJ1Y3Rpb24sIGFuZCBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZy4gKilcbmxldCBfaW52YXJpYW50X2xlbmd0aCB0ID1cbiAgbGV0IGNvbnN0cnVjdGVkX2xlbmd0aCA9XG4gICAgaWYgdC5mcm9udF9pbmRleCA8IHQuYmFja19pbmRleFxuICAgIHRoZW4gdC5iYWNrX2luZGV4IC0gdC5mcm9udF9pbmRleCAtIDFcbiAgICBlbHNlIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxICsgdC5hcnJfbGVuZ3RoXG4gIGluXG4gIGFzc2VydCAobGVuZ3RoIHQgPSBjb25zdHJ1Y3RlZF9sZW5ndGgpXG47O1xuXG4oKiBUaGUgdmFyaW91cyBcIndoZW5fbm90X2VtcHR5XCIgZnVuY3Rpb25zIHJldHVybiBtaXNsZWFkaW5nIG51bWJlcnMgd2hlbiB0aGUgZGVxdWV1ZSBpc1xuICAgZW1wdHkuICBUaGV5IGFyZSBzYWZlIHRvIGNhbGwgaWYgaXQgaXMga25vd24gdGhhdCB0aGUgZGVxdWV1ZSBpcyBub24tZW1wdHkuICopXG5sZXQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9IHQuYXBwYXJlbnRfZnJvbnRfaW5kZXhcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgbGVuZ3RoIHQgLSAxXG5cbmxldCBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmFycl9sZW5ndGggLSAxIHRoZW4gMCBlbHNlIHQuZnJvbnRfaW5kZXggKyAxXG47O1xuXG5sZXQgYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9XG4gIGlmIHQuYmFja19pbmRleCA9IDAgdGhlbiB0LmFycl9sZW5ndGggLSAxIGVsc2UgdC5iYWNrX2luZGV4IC0gMVxuOztcblxubGV0IGNoZWNrZWQgdCBmID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChmIHQpXG5sZXQgYXBwYXJlbnRfZnJvbnRfaW5kZXggdCA9IGNoZWNrZWQgdCBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eVxubGV0IGFwcGFyZW50X2JhY2tfaW5kZXggdCA9IGNoZWNrZWQgdCBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5XG5cbmxldCBmb2xkaScgdCBkaXIgfmluaXQgfmYgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgYXBwYXJlbnRfZnJvbnQgPSBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFwcGFyZW50X2JhY2sgPSBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyB+YXBwYXJlbnRfaSB+cmVhbF9pIH5zdG9wX3BvcyB+c3RlcCA9XG4gICAgICBpZiByZWFsX2kgPSBzdG9wX3Bvc1xuICAgICAgdGhlbiBhY2MsIGFwcGFyZW50X2lcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcFxuICAgICAgICAgIChmIGFwcGFyZW50X2kgYWNjIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIHJlYWxfaSkpXG4gICAgICAgICAgfmFwcGFyZW50X2k6KGFwcGFyZW50X2kgKyBzdGVwKVxuICAgICAgICAgIH5yZWFsX2k6KHJlYWxfaSArIHN0ZXApXG4gICAgICAgICAgfnN0b3BfcG9zXG4gICAgICAgICAgfnN0ZXBcbiAgICBpblxuICAgICgqIFdlIHdhbnQgdG8gaXRlcmF0ZSBmcm9tIGFjdHVhbF9mcm9udCB0byBhY3R1YWxfYmFjayAob3IgdmljZSB2ZXJzYSksIGJ1dCB3ZSBtYXlcbiAgICAgICBuZWVkIHRvIHdyYXAgYXJvdW5kIHRoZSBhcnJheSB0byBkbyBzby4gIFRodXMgd2UgZG8gdGhlIGZvbGxvd2luZzpcbiAgICAgICAxLiAgSWYgdGhlIGFjdGl2ZSByYW5nZSBpcyBjb250aWd1b3VzIChpLmUuIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFjayksIHRoZW4gbG9vcFxuICAgICAgIHN0YXJ0aW5nIGF0IHRoZSBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB1bnRpbCB3ZSByZWFjaCB0aGUgZmlyc3RcbiAgICAgICBlbGVtZW50IG91dHNpZGUgb2YgaXQuXG4gICAgICAgMi4gIElmIGl0IGlzIG5vdCBjb250aWd1b3VzIChhY3R1YWxfZnJvbnQgPiBhY3R1YWxfYmFjayksIHRoZW4gZmlyc3QgbG9vcCBmcm9tIHRoZVxuICAgICAgIGFwcHJvcHJpYXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiAgVGhlbiwgbG9vcCBmcm9tXG4gICAgICAgdGhlIG9wcG9zaXRlIGVuZCBvZiB0aGUgYXJyYXkgdG8gdGhlIG9wcG9zaXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlLlxuICAgICopXG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IGBmcm9udF90b19iYWNrIC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9mcm9udFxuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfZnJvbnRcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKVxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFjYywgYXBwYXJlbnRfaSA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6dC5hcnJfbGVuZ3RoXG4gICAgICAgICAgICB+c3RlcDoxXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MsIF8gPSBsb29wIGFjYyB+YXBwYXJlbnRfaSB+cmVhbF9pOjAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpIH5zdGVwOjEgaW5cbiAgICAgICAgYWNjKVxuICAgIHwgYGJhY2tfdG9fZnJvbnQgLT5cbiAgICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2JhY2tcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2JhY2tcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2Zyb250IC0gMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2JhY2tcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2JhY2tcbiAgICAgICAgICAgIH5zdG9wX3BvczooLTEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgfmFwcGFyZW50X2lcbiAgICAgICAgICAgIH5yZWFsX2k6KHQuYXJyX2xlbmd0aCAtIDEpXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYykpXG47O1xuXG5sZXQgZm9sZCcgdCBkaXIgfmluaXQgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQgfmY6KGZ1biBfIGFjYyB2IC0+IGYgYWNjIHYpXG5sZXQgaXRlcmknIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gaSAoKSB2IC0+IGYgaSB2KVxubGV0IGl0ZXInIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gXyAoKSB2IC0+IGYgdilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IGZvbGRpJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgaXRlcmkgdCB+ZiA9IGl0ZXJpJyB0IGBmcm9udF90b19iYWNrIH5mXG5cbmxldCBpdGVyaV9pbnRlcm5hbCB0IH5mID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIChcbiAgICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IHJlYyBsb29wIH5yZWFsX2kgfnN0b3BfcG9zID1cbiAgICAgIGlmIHJlYWxfaSA8IHN0b3BfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgZiB0LmFyciByZWFsX2k7XG4gICAgICAgIGxvb3AgfnJlYWxfaToocmVhbF9pICsgMSkgfnN0b3BfcG9zKVxuICAgIGluXG4gICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgdGhlbiBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6dC5hcnJfbGVuZ3RoO1xuICAgICAgbG9vcCB+cmVhbF9pOjAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpKSlcbjs7XG5cbmxldCBpdGVyIHQgfmYgPSBpdGVyaV9pbnRlcm5hbCB0IH5mOihmdW4gYXJyIGkgLT4gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBhcnIgaSB8PiBmKVxuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubmV2ZXJfc2hyaW5rXG4gIHRoZW5cbiAgICAoKiBjbGVhciB0aGUgYXJyYXkgdG8gYWxsb3cgZWxlbWVudHMgdG8gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQgKilcbiAgICBpdGVyaV9pbnRlcm5hbCB0IH5mOk9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmVcbiAgZWxzZSB0LmFyciA8LSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46ODtcbiAgdC5mcm9udF9pbmRleCA8LSAwO1xuICB0LmJhY2tfaW5kZXggPC0gMTtcbiAgdC5sZW5ndGggPC0gMDtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggdC5hcnJcbjs7XG5cbigqIFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlLCBpbXBvcnRpbmcgYWxsIG9mIENvbnRhaW5lci5NYWtlIHdvdWxkIGNoYW5nZSB0aGUgcnVudGltZSBvZlxuICAgc29tZSBmdW5jdGlvbnMgKFtsZW5ndGhdIG1pbmltYWxseSkgc2lsZW50bHkgd2l0aG91dCBjaGFuZ2luZyB0aGUgc2VtYW50aWNzLiAgV2UgZ2V0XG4gICBhcm91bmQgdGhhdCBieSBpbXBvcnRpbmcgdGhpbmdzIGV4cGxpY2l0bHkuICAqKVxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBtZW0gPSBDLm1lbVxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgYmxpdCBuZXdfYXJyIHQgPVxuICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgb2xkX2FyciA9IHQuYXJyIGluXG4gIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICB0aGVuXG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczphY3R1YWxfZnJvbnRcbiAgICAgIH5kc3RfcG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0KVxuICBlbHNlIChcbiAgICBsZXQgYnJlYWtfcG9zID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBvbGRfYXJyIC0gYWN0dWFsX2Zyb250IGluXG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczphY3R1YWxfZnJvbnRcbiAgICAgIH5kc3RfcG9zOjBcbiAgICAgIH5sZW46YnJlYWtfcG9zO1xuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6YnJlYWtfcG9zXG4gICAgICB+bGVuOihhY3R1YWxfYmFjayArIDEpKTtcbiAgKCogbGVuZ3RoIGRlcGVuZHMgb24gdC5hcnIgYW5kIHQuZnJvbnRfaW5kZXgsIHNvIHRoaXMgbmVlZHMgdG8gYmUgZmlyc3QgKilcbiAgdC5iYWNrX2luZGV4IDwtIGxlbmd0aCB0O1xuICB0LmFyciA8LSBuZXdfYXJyO1xuICB0LmFycl9sZW5ndGggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyO1xuICB0LmZyb250X2luZGV4IDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciAtIDE7XG4gICgqIFNpbmNlIHQuZnJvbnRfaW5kZXggPSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxLCB0aGlzIGlzIGFzc2VydGluZyB0aGF0IHQuYmFja19pbmRleFxuICAgICBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheSBhbmQgdGhhdCB0aGUgYXJyYXkgY2FuIHN1cHBvcnQgYXQgbGVhc3Qgb25lIG1vcmVcbiAgICAgZWxlbWVudCAtLSByZWNhbGwsIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiB0aGUgYXJyYXkgaXMgZnVsbC5cblxuICAgICBOb3RlIHRoYXQgdGhpcyBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciA+IGxlbmd0aCB0ICsgMS5cbiAgKilcbiAgYXNzZXJ0ICh0LmZyb250X2luZGV4ID4gdC5iYWNrX2luZGV4KVxuOztcblxubGV0IG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQgPVxuICBpZiAobm90IHQubmV2ZXJfc2hyaW5rKSAmJiB0LmFycl9sZW5ndGggPiAxMCAmJiB0LmFycl9sZW5ndGggLyAzID4gbGVuZ3RoIHRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAvIDIpIGluXG4gICAgYmxpdCBuZXdfYXJyIHQpXG47O1xuXG5sZXQgZ3Jvd191bmRlcmx5aW5nIHQgPVxuICBsZXQgbmV3X2FyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoodC5hcnJfbGVuZ3RoICogMikgaW5cbiAgYmxpdCBuZXdfYXJyIHRcbjs7XG5cbmxldCBlbnF1ZXVlX2JhY2sgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5iYWNrX2luZGV4IHY7XG4gIHQuYmFja19pbmRleCA8LSAoaWYgdC5iYWNrX2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmJhY2tfaW5kZXggKyAxKTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZW5xdWV1ZV9mcm9udCB0IHYgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gZ3Jvd191bmRlcmx5aW5nIHQ7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciB0LmZyb250X2luZGV4IHY7XG4gIHQuZnJvbnRfaW5kZXggPC0gKGlmIHQuZnJvbnRfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuZnJvbnRfaW5kZXggLSAxKTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4IC0gMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQgdiA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGVucXVldWVfYmFjayB0IHZcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHZcbjs7XG5cbmxldCBwZWVrX2Zyb250X25vbmVtcHR5IHQgPVxuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIChhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdClcbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBwZWVrX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IHBlZWtfYmFja19ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdClcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5wZWVrX2JhY2tfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19iYWNrX25vbmVtcHR5IHRcbjs7XG5cbmxldCBwZWVrX2JhY2sgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocGVla19iYWNrX25vbmVtcHR5IHQpXG5cbmxldCBwZWVrIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IHBlZWtfYmFjayB0XG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnQgdFxuOztcblxubGV0IGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5hcnIgaTtcbiAgdC5mcm9udF9pbmRleCA8LSBpO1xuICB0LmFwcGFyZW50X2Zyb250X2luZGV4IDwtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfZnJvbnQgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0KVxuXG5sZXQgZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5hcnIgaTtcbiAgdC5iYWNrX2luZGV4IDwtIGk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdDtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIGRlcXVldWVfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgZGVxdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRyb3BfZ2VuID8obiA9IDEpIH5kZXF1ZXVlIHQgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIkRlcXVlLmRyb3A6ICBuZWdhdGl2ZSBpbnB1dCAoJWQpXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBkZXF1ZXVlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChuIC0gMSkpXG4gIGluXG4gIGxvb3AgblxuOztcblxubGV0IGRyb3BfZnJvbnQgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfZnJvbnQgdFxubGV0IGRyb3BfYmFjayA/biB0ID0gZHJvcF9nZW4gP24gfmRlcXVldWU6ZGVxdWV1ZV9iYWNrIHRcblxubGV0IGRyb3AgP24gdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrID9uIHRcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udCA/biB0XG47O1xuXG5sZXQgYXNzZXJ0X25vdF9lbXB0eSB0IG5hbWUgPSBpZiBpc19lbXB0eSB0IHRoZW4gZmFpbHdpdGhmIFwiJXM6IERlcXVlLnQgaXMgZW1wdHlcIiBuYW1lICgpXG5cbmxldCB0cnVlX2luZGV4X2V4biB0IGkgPVxuICBsZXQgaV9mcm9tX3plcm8gPSBpIC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCBpblxuICBpZiBpX2Zyb21femVybyA8IDAgfHwgbGVuZ3RoIHQgPD0gaV9mcm9tX3plcm9cbiAgdGhlbiAoXG4gICAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUudHJ1ZV9pbmRleF9leG5cIjtcbiAgICBsZXQgYXBwYXJlbnRfZnJvbnQgPSBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFwcGFyZW50X2JhY2sgPSBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiaW52YWxpZCBpbmRleDogJWkgZm9yIGFycmF5IHdpdGggaW5kaWNlcyAoJWksJWkpXCJcbiAgICAgIGlcbiAgICAgIGFwcGFyZW50X2Zyb250XG4gICAgICBhcHBhcmVudF9iYWNrXG4gICAgICAoKSk7XG4gIGxldCB0cnVlX2kgPSB0LmZyb250X2luZGV4ICsgMSArIGlfZnJvbV96ZXJvIGluXG4gIGlmIHRydWVfaSA+PSB0LmFycl9sZW5ndGggdGhlbiB0cnVlX2kgLSB0LmFycl9sZW5ndGggZWxzZSB0cnVlX2lcbjs7XG5cbmxldCBnZXQgdCBpID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAodHJ1ZV9pbmRleF9leG4gdCBpKVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICB0cnkgU29tZSAoZ2V0IHQgaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHNldF9leG4gdCBpIHYgPSBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSkgdlxuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHBlZWtfZnJvbnQgdCB3aXRoXG4gIHwgTm9uZSAtPiBbfHxdXG4gIHwgU29tZSBmcm9udCAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGZyb250IGluXG4gICAgaWdub3JlXG4gICAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHYgLT5cbiAgICAgICAgIGFyci4oaSkgPC0gdjtcbiAgICAgICAgIGkgKyAxKVxuICAgICAgIDogaW50KTtcbiAgICBhcnJcbjs7XG5cbmxldCBvZl9hcnJheSBhcnIgPVxuICBsZXQgdCA9IGNyZWF0ZSB+aW5pdGlhbF9sZW5ndGg6KEFycmF5Lmxlbmd0aCBhcnIgKyAxKSAoKSBpblxuICBBcnJheS5pdGVyIGFyciB+ZjooZnVuIHYgLT4gZW5xdWV1ZV9iYWNrIHQgdik7XG4gIHRcbjs7XG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjM0YzFlOWNhLTQ5OTItMTFlNi1hNjg2LThiNGJkNGY4Nzc5NlwiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkRlcXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgdCB+ZlxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSB+aW5pdGlhbF9sZW5ndGg6bGVuICgpIGluXG4gICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IHggPSBuZXh0ICgpIGluXG4gICAgICAgIGVucXVldWVfYmFjayB0IHhcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuXG5sZXQgdF9vZl9zZXhwIGYgc2V4cCA9IG9mX2FycmF5IChBcnJheS50X29mX3NleHAgZiBzZXhwKVxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdClcblxubGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbjs7XG5cbigqIHJlLWV4cG9zZSB0aGVzZSBoZXJlIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUgdG8gYXZvaWQgaW50ZXJuYWwgY29uZnVzaW9uICopXG5sZXQgYmFja19pbmRleCA9IGFwcGFyZW50X2JhY2tfaW5kZXhcbmxldCBmcm9udF9pbmRleCA9IGFwcGFyZW50X2Zyb250X2luZGV4XG5cbmxldCBiYWNrX2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuYmFja19pbmRleF9leG5cIjtcbiAgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0XG47O1xuXG5sZXQgZnJvbnRfaW5kZXhfZXhuIHQgPVxuICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS5mcm9udF9pbmRleF9leG5cIjtcbiAgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgdCBpID0gZ2V0IHQgKGZyb250X2luZGV4X2V4biB0ICsgaSlcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IG9mX2FycmF5XG4gICAgZW5kXG4gIGVuZClcblxuKCogVGhlIFwic3RhYmxlXCIgaW5kaWNlcyB1c2VkIGluIHRoaXMgbW9kdWxlIG1ha2UgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZVxuICAgW0JpbmFyeV9zZWFyY2hhYmxlXSBmdW5jdG9yIGF3a3dhcmQuICBXZSBuZWVkIHRvIGJlIHN1cmUgdG8gdHJhbnNsYXRlIGluY29taW5nXG4gICBwb3NpdGlvbnMgZnJvbSBzdGFibGUgc3BhY2UgdG8gdGhlIGV4cGVjdGVkIDAgLT4gbGVuZ3RoIC0gMSBzcGFjZSBhbmQgdGhlbiB3ZSBuZWVkIHRvXG4gICB0cmFuc2xhdGUgdGhlbSBiYWNrIG9uIHJldHVybi4gKilcbmxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwb3MgLT4gU29tZSAocG9zIC0gdC5hcHBhcmVudF9mcm9udF9pbmRleClcbiAgaW5cbiAgbWF0Y2ggQmluYXJ5X3NlYXJjaGFibGUuYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwb3MgLT4gU29tZSAocG9zIC0gdC5hcHBhcmVudF9mcm9udF9pbmRleClcbiAgaW5cbiAgbWF0Y2ggQmluYXJ5X3NlYXJjaGFibGUuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVudHJhbnNsYXRlZF9pIC0+IFNvbWUgKHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyB1bnRyYW5zbGF0ZWRfaSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcblxubGV0IGVwcmludCBtZXNzYWdlID0gUHJpbnRmLmVwcmludGYgXCIlc1xcbiUhXCIgbWVzc2FnZVxubGV0IGVwcmludF9zIHNleHAgPSBlcHJpbnQgKFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxubGV0IGVwcmludHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9IGVwcmludF9zIChbJXNleHBfb2Y6IHN0cmluZyAqIGFdIChtZXNzYWdlLCBhKSlcbmxldCBlcHJpbnRmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcHJpbnQgZm9ybWF0XG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5cbm1vZHVsZSBNYWtlICgpID0gc3RydWN0XG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgdHJ1ZVxuICBsZXQgc2hvd19tZXNzYWdlcyA9IHJlZiB0cnVlXG5cbiAgbGV0IGRlYnVnIGludmFyaWFudCB+bW9kdWxlX25hbWUgbmFtZSB0cyBhcmcgc2V4cF9vZl9hcmcgc2V4cF9vZl9yZXN1bHQgZiA9XG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuIGVwcmludHMgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lIF0pIGFyZyBzZXhwX29mX2FyZztcbiAgICBpZiAhY2hlY2tfaW52YXJpYW50XG4gICAgdGhlbiAoXG4gICAgICB0cnkgTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJpbnZhcmlhbnQgcHJlLWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBsZXQgcmVzdWx0X29yX2V4biA9IFJlc3VsdC50cnlfd2l0aCBmIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHBvc3QtY29uZGl0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgKG5hbWUsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGV4bl0pO1xuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlblxuICAgICAgZXByaW50c1xuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBtb2R1bGVfbmFtZTsgXCIuXCI7IG5hbWU7IFwiLXJlc3VsdFwiIF0pXG4gICAgICAgIHJlc3VsdF9vcl9leG5cbiAgICAgICAgWyVzZXhwX29mOiAocmVzdWx0LCBleG4pIFJlc3VsdC50XTtcbiAgICBSZXN1bHQub2tfZXhuIHJlc3VsdF9vcl9leG5cbiAgOztcbmVuZFxuXG5sZXQgc2hvdWxkX3ByaW50X2JhY2t0cmFjZSA9IHJlZiBmYWxzZVxuXG5sZXQgYW1faW50ZXJuYWwgaGVyZSBtZXNzYWdlID1cbiAgKCogSW4gdGhpcyBmdW5jdGlvbiB3ZSB1c2UgW1ByaW50Zi5lcHJpbnRmXSByYXRoZXIgdGhhbiBbRGVidWcuZXByaW50Zl0sIGJlY2F1c2UgdGhlXG4gICAgIGZvcm1lciBkb2Vzbid0IGZsdXNoLCB3aGlsZSB0aGUgbGF0dGVyIGRvZXMuICBXZSdkIHJhdGhlciBmbHVzaCBvbmNlIGF0IHRoZSBlbmQsXG4gICAgIHJhdGhlciB0aGFuIHRocmVlIHRpbWVzLiAqKVxuICBQcmludGYuZXByaW50ZiBcIiVzOlxcblwiIChTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcgaGVyZSk7XG4gIGlmICFzaG91bGRfcHJpbnRfYmFja3RyYWNlXG4gIHRoZW5cbiAgICBQcmludGYuZXByaW50ZlxuICAgICAgXCIlc1xcblwiXG4gICAgICAoQmFja3RyYWNlLmdldCAoKSB8PiBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XSB8PiBTZXhwLnRvX3N0cmluZ19odW0pO1xuICAobWF0Y2ggbWVzc2FnZSB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBtZXNzYWdlIC0+IFByaW50Zi5lcHJpbnRmIFwiJXNcXG5cIiBtZXNzYWdlKTtcbiAgUHJpbnRmLmVwcmludGYgXCIlIVwiXG47O1xuXG5sZXQgYW0gaGVyZSA9IGFtX2ludGVybmFsIGhlcmUgTm9uZVxubGV0IGFtZiBoZXJlIGZtdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0cmluZyAtPiBhbV9pbnRlcm5hbCBoZXJlIChTb21lIHN0cmluZykpIGZtdFxuXG5sZXQgYW1zIGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIGFtX2ludGVybmFsIGhlcmUgKFNvbWUgKChtZXNzYWdlLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdIHw+IFNleHAudG9fc3RyaW5nX2h1bSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3lzXG5cbmxldCB1bml4X3F1b3RlIHggPVxuICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgeCkpXG4gICYmIFN0cmluZy5mb3JfYWxsIHggfmY6KGZ1bmN0aW9uXG4gICAgICAgfCAnYScgLi4gJ3onXG4gICAgICAgfCAnQScgLi4gJ1onXG4gICAgICAgfCAnMCcgLi4gJzknXG4gICAgICAgfCAnXycgfCAnLScgfCAnOicgfCAnLicgfCAnLycgfCAnLCcgfCAnKycgfCAnPScgfCAnJScgfCAnQCcgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgdGhlbiAoXG4gICAgKCogU2hlbGwga2V5d29yZHMsIGFzIG91dHB1dCBieSBbY29tcGdlbiAta10gZm9yIGJhc2gsIFttYW4gZGFzaF0gZm9yIGRhc2gsIGFuZCBbUEFUSD1cbiAgICAgICB0eXBlIC1tICcqJyB8IGdyZXAgcmVzZXJ2ZWRdIGZvciB6c2gsIGV4Y2VwdCBmb3Iga2V5d29yZHMgdGhhdCBoYXZlIHNwZWNpYWxcbiAgICAgICBjaGFyYWN0ZXJzIGxpa2UgW1suIE5vdGUgdGhhdCBidWlsdGlucyBkb24ndCBtYXR0ZXIgYmVjYXVzZSAnYWxpYXMnIGFuZCBhbGlhc1xuICAgICAgIGJlaGF2ZSB0aGUgc2FtZSwgdW5saWtlICdpZicgYW5kIGlmLiAqKVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgXCJpZlwiXG4gICAgfCBcInRoZW5cIlxuICAgIHwgXCJlbHNlXCJcbiAgICB8IFwiZWxpZlwiXG4gICAgfCBcImZpXCJcbiAgICB8IFwiY2FzZVwiXG4gICAgfCBcImVzYWNcIlxuICAgIHwgXCJmb3JcIlxuICAgIHwgXCJzZWxlY3RcIlxuICAgIHwgXCJ3aGlsZVwiXG4gICAgfCBcInVudGlsXCJcbiAgICB8IFwiZG9cIlxuICAgIHwgXCJkb25lXCJcbiAgICB8IFwiaW5cIlxuICAgIHwgXCJmdW5jdGlvblwiXG4gICAgfCBcInRpbWVcIlxuICAgIHwgXCJjb3Byb2NcIlxuICAgIHwgXCJmb3JlYWNoXCJcbiAgICB8IFwicmVwZWF0XCJcbiAgICB8IFwibm9jb3JyZWN0XCIgLT4gRmlsZW5hbWUucXVvdGUgeFxuICAgIHwgXyAtPiB4KVxuICBlbHNlIEZpbGVuYW1lLnF1b3RlIHhcbjs7XG5cbmxldCBxdW90ZSA9XG4gIG1hdGNoIENhbWwuU3lzLm9zX3R5cGUgd2l0aFxuICB8IFwiVW5peFwiIC0+IHVuaXhfcXVvdGVcbiAgfCBfIC0+IEZpbGVuYW1lLnF1b3RlXG47O1xuXG5sZXQgY29uY2F0X3F1b3RlZCBzcGxpdF9jb21tYW5kID1cbiAgTGlzdC5tYXAgfmY6cXVvdGUgc3BsaXRfY29tbWFuZCB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbjs7XG5cbmxldCBjX2ludF9zaXplID0gYFVzZV9TeXNfdW5peFxubGV0IGNhdGNoX2JyZWFrID0gYFVzZV9TeXNfdW5peFxubGV0IGNoZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmQgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZF9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGlvbl9tb2RlID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBmb2xkX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBnZXRjd2QgPSBgVXNlX1N5c191bml4XG5sZXQgaG9tZV9kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBsc19kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgb3ZlcnJpZGVfYXJndiA9IGBVc2VfU3lzX3VuaXhcbmxldCByZWFkZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbW92ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW5hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudiA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52X2V4biA9IGBVc2VfU3lzX3VuaXhcblxuZXhjZXB0aW9uIEJyZWFrID0gQ2FtbC5TeXMuQnJlYWtcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHVuaXhfcXVvdGUgPSB1bml4X3F1b3RlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYWdfaW50ZlxuaW5jbHVkZSAoRG91Ymx5X2xpbmtlZCA6IERvdWJseV9saW5rZWQuUylcblxubGV0IGFkZCA9IGluc2VydF9maXJzdFxubGV0IGFkZF91bml0IHQgdiA9IGFkZCB0IHYgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbmxldCBlbHRzIHQgPSBmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gYWNjIGVsdCAtPiBlbHQgOjogYWNjKVxubGV0IHJlbW92ZV9vbmUgPSByZW1vdmVfZmlyc3RcbmxldCBjaG9vc2UgPSBmaXJzdF9lbHRcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgT3B0aW9uLml0ZXIgKHJlbW92ZV9vbmUgdCkgfmY6KGZ1biB2IC0+XG4gICAgICBmIHY7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgbXV0YWJsZSBic3RyIDogQmlnc3RyaW5nLnRcbiAgOyBtdXRhYmxlIHBvcyA6IGludFxuICA7IG11dGFibGUgbGVuIDogaW50XG4gIDsgaW5pdCA6IEJpZ3N0cmluZy50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCByZXNpemUgYnVmIG1vcmUgPVxuICBsZXQgbWluX2xlbiA9IGJ1Zi5sZW4gKyBtb3JlIGluXG4gIGxldCBuZXdfbGVuID0gbWluX2xlbiArIG1pbl9sZW4gaW5cbiAgbGV0IG5ld19idWYgPSBCaWdzdHJpbmcuY3JlYXRlIG5ld19sZW4gaW5cbiAgQmlnc3RyaW5nLmJsaXRvIH5zcmM6YnVmLmJzdHIgfnNyY19sZW46YnVmLnBvcyB+ZHN0Om5ld19idWYgKCk7XG4gIGJ1Zi5ic3RyIDwtIG5ld19idWY7XG4gIGJ1Zi5sZW4gPC0gbmV3X2xlblxuOztcbiIsIigqIFNvbWUgY29kZSB0YWtlbiBmcm9tIElOUklBJ3MgYnVmZmVyIG1vZHVsZS4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIEJpZ3N0cmluZ1xuaW5jbHVkZSBCaWdidWZmZXJfaW50ZXJuYWxcblxubGV0IF9faW50ZXJuYWwgKHQgOiB0KSA9IHRcbmxldCBsZW5ndGggdCA9IHQucG9zXG5cbigqIHtbIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodC5sZW4gPT0gQmlnc3RyaW5nLmxlbmd0aCB0LmJzdHIpIF19ICopXG5cbmxldCBjcmVhdGUgbiA9XG4gIGxldCBuID0gbWF4IDEgbiBpblxuICBsZXQgYnN0ciA9IEJpZ3N0cmluZy5jcmVhdGUgbiBpblxuICB7IGJzdHI7IHBvcyA9IDA7IGxlbiA9IG47IGluaXQgPSBic3RyIH1cbjs7XG5cbmxldCBjb250ZW50cyBidWYgPSBCaWdzdHJpbmcudG9fc3RyaW5nIGJ1Zi5ic3RyIH5sZW46YnVmLnBvc1xubGV0IGNvbnRlbnRzX2J5dGVzIGJ1ZiA9IEJpZ3N0cmluZy50b19ieXRlcyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBiaWdfY29udGVudHMgYnVmID0gc3VibyB+bGVuOmJ1Zi5wb3MgYnVmLmJzdHJcbmxldCB2b2xhdGlsZV9jb250ZW50cyBidWYgPSBidWYuYnN0clxuXG5sZXQgYWRkX2NoYXIgYnVmIGMgPVxuICBsZXQgcG9zID0gYnVmLnBvcyBpblxuICBpZiBwb3MgPj0gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgMTtcbiAgYnVmLmJzdHIue3Bvc30gPC0gYztcbiAgYnVmLnBvcyA8LSBwb3MgKyAxXG47O1xuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBUZXN0X2JsaXQuTWFrZV9kaXN0aW5jdF9hbmRfdGVzdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgbGV0IGVxdWFsID0gQ2hhci5lcXVhbFxuICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAnYScgZWxzZSAnYidcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgbGVuIGluXG4gICAgICAgIGZvciBfID0gMSB0byBsZW4gZG9cbiAgICAgICAgICBhZGRfY2hhciB0ICdhJ1xuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgc2V0IHQgaSBjID0gQmlnc3RyaW5nLnNldCB0LmJzdHIgaSBjXG4gICAgICBsZXQgZ2V0IHQgaSA9IEJpZ3N0cmluZy5nZXQgdC5ic3RyIGlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBCeXRlc1xuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIEJpZ3N0cmluZy5Ub19ieXRlcy51bnNhZmVfYmxpdCB+c3JjOnNyYy5ic3RyIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChCaWdidWZmZXJfaW50ZXJuYWwpIChUb19ieXRlcylcblxubGV0IG50aCBidWYgcG9zID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgPj0gYnVmLnBvcyB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLm50aFwiIGVsc2UgYnVmLmJzdHIue3Bvc31cbjs7XG5cbmxldCBjbGVhciBidWYgPSBidWYucG9zIDwtIDBcblxubGV0IHJlc2V0IGJ1ZiA9XG4gIGJ1Zi5wb3MgPC0gMDtcbiAgYnVmLmJzdHIgPC0gYnVmLmluaXQ7XG4gIGJ1Zi5sZW4gPC0gQmlnc3RyaW5nLmxlbmd0aCBidWYuYnN0clxuOztcblxubGV0IGFkZF9zdWJzdHJpbmcgYnVmIHNyYyB+cG9zOnNyY19wb3MgfmxlbiA9XG4gIGlmIHNyY19wb3MgPCAwIHx8IGxlbiA8IDAgfHwgc3JjX3BvcyA+IFN0cmluZy5sZW5ndGggc3JjIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIuYWRkX3N1YnN0cmluZ1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcztcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX3N1YmJ5dGVzIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBCeXRlcy5sZW5ndGggc3JjIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIuYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9iaWdzdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBCaWdzdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX3N0cmluZyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnl0ZXMgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9idWZmZXIgYnVmX2RzdCBidWZfc3JjID1cbiAgbGV0IGxlbiA9IGJ1Zl9zcmMucG9zIGluXG4gIGxldCBkc3RfcG9zID0gYnVmX2RzdC5wb3MgaW5cbiAgbGV0IG5ld19wb3MgPSBkc3RfcG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWZfZHN0LmxlbiB0aGVuIHJlc2l6ZSBidWZfZHN0IGxlbjtcbiAgQmlnc3RyaW5nLmJsaXRvIH5zcmM6YnVmX3NyYy5ic3RyIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zl9kc3QuYnN0ciB+ZHN0X3BvcyAoKTtcbiAgYnVmX2RzdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9iaW5fcHJvdCB0ICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB4ID1cbiAgbGV0IG5ld19wb3MgPVxuICAgIG1hdGNoIHdyaXRlci53cml0ZSB0LmJzdHIgfnBvczp0LnBvcyB4IHdpdGhcbiAgICB8IHBvcyAtPiBwb3NcbiAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAoKiBJdCdzIGxpa2VreSB0aGF0IHRoZSBleGNlcHRpb24gaXMgZHVlIHRvIGEgYnVmZmVyIG92ZXJmbG93LCBzbyByZXNpemUgdGhlXG4gICAgICAgICBpbnRlcm5hbCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4gVGVjaG5pY2FsbHkgd2UgY291bGQgbWF0Y2ggb25cbiAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXQgY3VzdG9tXG4gICAgICAgICBiaW5fd3JpdGVfeHh4IGZ1bmN0aW9ucyBkbyByYWlzZSB0aGlzIHBhcnRpY3VsYXIgZXhjZXB0aW9uIGFuZCBub3RcbiAgICAgICAgIFtJbnZhbGlkX2FyZ3VtZW50XSBvciBbRmFpbHVyZV0gZm9yIGluc3RhbmNlLiAqKVxuICAgICAgbGV0IHNpemUgPSB3cml0ZXIuc2l6ZSB4IGluXG4gICAgICBpZiB0LnBvcyArIHNpemUgPiB0LmxlbiB0aGVuIHJlc2l6ZSB0IHNpemU7XG4gICAgICB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeFxuICBpblxuICB0LnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW1cbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoTm90X2ZvdW5kX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCaWdidWZmZXIuYWRkX3N1YnN0aXR1dGU6IGNhbm5vdCBmaW5kIGNsb3NpbmcgZGVsaW1pdGVyXCJcbiAgICAgICAgICAgICAgIChvcGVuaW5nIDogY2hhcilcbiAgICAgICAgICAgICAgIChjbG9zaW5nIDogY2hhcilcbiAgICAgICAgICAgICAgIChzdGFydCA6IGludClcbiAgICAgICAgICAgICAgIHNdKVxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbCBzLltpXSBvcGVuaW5nXG4gICAgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gY2xvc2luZ1xuICAgIHRoZW4gaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW1cbiAgaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG47O1xuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW1cbiAgICB0aGVuIGxpbVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onXG4gICAgICB8ICdBJyAuLiAnWidcbiAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgfCAnXydcbiAgICAgIHwgJ+knXG4gICAgICB8ICfgJ1xuICAgICAgfCAn4SdcbiAgICAgIHwgJ+gnXG4gICAgICB8ICf5J1xuICAgICAgfCAn4idcbiAgICAgIHwgJ+onXG4gICAgICB8ICfuJ1xuICAgICAgfCAn9CdcbiAgICAgIHwgJ/snXG4gICAgICB8ICfrJ1xuICAgICAgfCAn7ydcbiAgICAgIHwgJ/wnXG4gICAgICB8ICfnJ1xuICAgICAgfCAnySdcbiAgICAgIHwgJ8AnXG4gICAgICB8ICfBJ1xuICAgICAgfCAnyCdcbiAgICAgIHwgJ9knXG4gICAgICB8ICfCJ1xuICAgICAgfCAnyidcbiAgICAgIHwgJ84nXG4gICAgICB8ICfUJ1xuICAgICAgfCAn2ydcbiAgICAgIHwgJ8snXG4gICAgICB8ICfPJ1xuICAgICAgfCAn3CdcbiAgICAgIHwgJ8cnIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICAgIHwgXyAtPiBpKVxuICBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG47O1xuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCA9XG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICgnKCcgfCAneycpIGFzIGMgLT5cbiAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgU3RyaW5nLnN1YiBzIH5wb3M6bmV3X3N0YXJ0IH5sZW46KHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KHN0b3AgLSBzdGFydCksIHN0b3Bcbjs7XG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGJ1ZiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIENoYXIuZXF1YWwgcHJldmlvdXMgJ1xcXFwnIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIChpICsgMSkgaW5cbiAgICAgICAgYWRkX3N0cmluZyBidWYgKGYgaWRlbnQpO1xuICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICB8IGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSkpXG4gIGluXG4gIHN1YnN0ICcgJyAwXG47O1xuXG5tb2R1bGUgRm9ybWF0ID0gc3RydWN0XG4gIGxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiA9XG4gICAgRm9ybWF0Lm1ha2VfZm9ybWF0dGVyIChmdW4gcyBwb3MgbGVuIC0+IGFkZF9zdWJzdHJpbmcgYnVmIHMgfnBvcyB+bGVuKSBpZ25vcmVcbiAgOztcblxuICBsZXQgYnByaW50ZiBidWYgPSBGb3JtYXQua2ZwcmludGYgaWdub3JlIChmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZilcbmVuZFxuXG5tb2R1bGUgUHJpbnRmID0gc3RydWN0XG4gIGxldCBicHJpbnRmIGJ1ZiA9IFByaW50Zi5rc3ByaW50ZiAoYWRkX3N0cmluZyBidWYpXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuQnl0ZXN9W0Jhc2UuQnl0ZXNdfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5CeXRlc1xuZW5kXG53aXRoIHR5cGUgdCA6PSB0XG5cbmluY2x1ZGUgSGV4ZHVtcC5TIHdpdGggdHlwZSB0IDo9IHRcbmluY2x1ZGUgUXVpY2tjaGVja2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbigqKiBMaWtlIFtnZW5dLCBidXQgZ2VuZXJhdGUgYnl0ZXMgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mIGNoYXJhY3RlcnMuICopXG52YWwgZ2VuJyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgYnl0ZXMgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoLiAqKVxudmFsIGdlbl93aXRoX2xlbmd0aCA6IGludCAtPiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBOb3RlIHRoYXQgW2J5dGVzXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbQnl0ZXMuU3RhYmxlXSBleGlzdHMgb25seSB0byBwcm92aWRlXG4gICAgaW50ZXJmYWNlIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBzdGFibGUgdHlwZXMuICopXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJpZ3N0cmluZy5jcmVhdGUgP21heF9tZW1fd2FpdGluZ19nYzpOb25lXG4gICAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQmlnc3RyaW5nLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGFibGVfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgICAgICB2YWwgbGFiZWwgOiBzdHJpbmdcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbmRleCA6IGludFxuICAgICAgICA7IG1pbl9pbmRleCA6IGludFxuICAgICAgICA7IG1heF9pbmRleCA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgICAgIGxldCBjcmVhdGUgaW5kZXggfm1pbiB+bWF4ID1cbiAgICAgICAgaWYgaW5kZXggPCBtaW4gfHwgaW5kZXggPiBtYXhcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcImluZGV4IG91dCBvZiBib3VuZHNcIiAoaW5kZXggOiBpbnQpIChtaW4gOiBpbnQpIChtYXggOiBpbnQpXVxuICAgICAgICBlbHNlIHsgaW5kZXg7IG1pbl9pbmRleCA9IG1pbjsgbWF4X2luZGV4ID0gbWF4IH1cbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBGb3Jfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nICogaW50ICogc3RyaW5nICogaW50ICogc3RyaW5nICogaW50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoRm9yX3NleHBhYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSB0ID0gTS5sYWJlbCwgdC5pbmRleCwgXCJvZlwiLCB0Lm1pbl9pbmRleCwgXCJ0b1wiLCB0Lm1heF9pbmRleFxuXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgKGxhYmVsLCBpbmRleCwgb2ZfLCBtaW4sIHRvXywgbWF4KSA9XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5lcXVhbCBsYWJlbCBNLmxhYmVsXG4gICAgICAgICAgICAgICYmIFN0cmluZy5lcXVhbCBvZl8gXCJvZlwiXG4gICAgICAgICAgICAgICYmIFN0cmluZy5lcXVhbCB0b18gXCJ0b1wiXG4gICAgICAgICAgICAgIHRoZW4gY3JlYXRlIGluZGV4IH5taW4gfm1heFxuICAgICAgICAgICAgICBlbHNlIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiaW52YWxpZCBzZXhwIGZvciBpbmRleFwiIH5sYWJlbDpNLmxhYmVsXVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pb11cbiAgICAgICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTID0gQm91bmRlZF9pbmRleF9pbnRmLlNcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB2YWwgbGFiZWwgOiBzdHJpbmdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IFN0YWJsZS5WMS5NYWtlIChNKVxuICBlbmRcblxuICBvcGVuIFN0YWJsZS5WMVxuXG4gIHR5cGUgdCA9IFN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNyZWF0ZSA9IFN0YWJsZS5WMS5jcmVhdGVcblxuICBsZXQgY3JlYXRlX2FsbCB+bWluIH5tYXggPVxuICAgIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDptaW4gfmY6KGZ1biBpbmRleCAtPlxuICAgICAgaWYgaW5kZXggPCBtaW4gfHwgaW5kZXggPiBtYXhcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZSBTb21lIChjcmVhdGUgaW5kZXggfm1pbiB+bWF4LCBpbmRleCArIDEpKVxuICAgIHw+IFNlcXVlbmNlLnRvX2xpc3RcbiAgOztcblxuICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgbGV0IG1heF9pbmRleCB0ID0gdC5tYXhfaW5kZXhcbiAgbGV0IG1pbl9pbmRleCB0ID0gdC5taW5faW5kZXhcblxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICBlbmQpXG5lbmRcbiIsIigqKiBDb3JlIGdyZWF0bHkgZXhwYW5kcyB0aGUgZnVuY3Rpb25hbGl0eSBhdmFpbGFibGUgaW4gQmFzZSB3aGlsZSBzdGlsbCByZW1haW5pbmdcbiAgICBwbGF0Zm9ybS1hZ25vc3RpYy4gIENvcmUgY2hhbmdlcyBtb3JlIGZyZXF1ZW50bHkgKGkuZS4sIGlzIGxlc3Mgc3RhYmxlKSB0aGFuIEJhc2UuXG5cbiAgICBTb21lIG1vZHVsZXMgYXJlIG1lcmUgZXh0ZW5zaW9ucyBvZiB0aGVpciBjb3VudGVycGFydHMgaW4gQmFzZSwgdXN1YWxseSBhZGRpbmcgZ2VuZXJpY1xuICAgIGZ1bmN0aW9uYWxpdHkgYnkgaW5jbHVkaW5nIGZ1bmN0b3JzIHRoYXQgbWFrZSB0aGVtIGJpbmFibGUsIGNvbXBhcmFibGUsIHNleHBhYmxlLFxuICAgIGJsaXRhYmxlLCBldGMuICBUaGUgYnVsayBvZiBDb3JlLCB0aG91Z2gsIGlzIG1vZHVsZXMgcHJvdmlkaW5nIGVudGlyZWx5IG5ld1xuICAgIGZ1bmN0aW9uYWxpdHkuICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJnID0gQXJnXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmFnID0gQmFnXG5tb2R1bGUgQmlnYnVmZmVyID0gQmlnYnVmZmVyXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nXG5tb2R1bGUgQmlnc3Vic3RyaW5nID0gQmlnc3Vic3RyaW5nXG5tb2R1bGUgQmluX3Byb3QgPSBDb3JlX2Jpbl9wcm90XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGFuZyA9IEJsYW5nXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJvdW5kZWRfaW5kZXggPSBCb3VuZGVkX2luZGV4XG5tb2R1bGUgQnVmZmVyID0gQmFzZS5CdWZmZXJcbm1vZHVsZSBCeXRlX3VuaXRzID0gQnl0ZV91bml0c1xubW9kdWxlIEJ5dGVzID0gQnl0ZXNcblxubW9kdWxlIENhbWwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW1sXG5cbiAgKCogV2hlbiB3ZSByZW1vdmVkIFtDb3JlLkNhbWxdJ3MgZXh0ZW5zaW9ucyBvZiBbQ29yZS5DYW1sXSwgd2UgYWRkZWRcbiAgICAgdGhlIGRlY2xhcmF0aW9ucyBiZWxvdyB0byBmb3JjZSBjb2RlIHRvIHN3aXRjaCB0byB0aGUgbmV3IG5hbWVzLCBhbmQgYXZvaWRcbiAgICAgc2lsZW50bHkgaW5jb3JyZWN0bHkgdXNpbmcgc29tZXRoaW5nIGVsc2UgaW4gc2NvcGUuICopXG4gIG1vZHVsZSBDb25kaXRpb24gPSBzdHJ1Y3QgZW5kXG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3RocmVhZHMuQ29uZGl0aW9uXVwiXVxuXG4gIG1vZHVsZSBNdXRleCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NhbWxfdGhyZWFkcy5NdXRleF1cIl1cbiAgbW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NhbWxfdGhyZWFkcy5UaHJlYWRdXCJdXG4gIG1vZHVsZSBVbml4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF91bml4XVwiXVxuICBtb2R1bGUgVW5peExhYmVscyA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW1VuaXhMYWJlbHNdXCJdXG5lbmRcblxubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tbWFuZCA9IENvbW1hbmRcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIENvbnRhaW5lcl9pbnRmID0gQ29udGFpbmVyX2ludGZcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfc3RhYmxlID0gU3RhYmxlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDVdIFVzZSBbQ29yZV9zdGFibGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG5cbm1vZHVsZSBDb3JlX3N0YWJsZSA9IFN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vla1xubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBEZXF1ZSA9IERlcXVlXG5tb2R1bGUgRGVyaXZpbmdfaGFzaCA9IERlcml2aW5nX2hhc2hcbm1vZHVsZSBEaWdlc3QgPSBNZDUgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE3LTA1XSBVc2UgTWQ1IGluc3RlYWQuXCJdXG5tb2R1bGUgRG91Ymx5X2xpbmtlZCA9IERvdWJseV9saW5rZWRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gPSBFcGhlbWVyb25cbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gRXhwZWN0X3Rlc3RfY29uZmlnXG5tb2R1bGUgRmRlcXVlID0gRmRlcXVlXG5tb2R1bGUgRmllbGQgPSBGaWVsZFxubW9kdWxlIEZpbGVuYW1lID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uID0gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uXG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEZxdWV1ZSA9IEZxdWV1ZVxubW9kdWxlIEdjID0gR2Ncbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIEhhc2h0YmxfaW50ZiA9IEhhc2h0YmxfaW50ZlxubW9kdWxlIEhlYXBfYmxvY2sgPSBIZWFwX2Jsb2NrXG5tb2R1bGUgSGV4ZHVtcCA9IEhleGR1bXBcbm1vZHVsZSBIZXhkdW1wX2ludGYgPSBIZXhkdW1wX2ludGZcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb24gPSBJbW1lZGlhdGVfb3B0aW9uXG5tb2R1bGUgSW1tZWRpYXRlX29wdGlvbl9pbnRmID0gSW1tZWRpYXRlX29wdGlvbl9pbnRmXG5tb2R1bGUgSW5fY2hhbm5lbCA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnRfaW50ZiA9IEludF9pbnRmXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50ZXJmYWNlcyA9IEludGVyZmFjZXNcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWFwX2ludGYgPSBNYXBfaW50ZlxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmRcbm1vZHVsZSBNZDUgPSBNZDVcbm1vZHVsZSBNZW1vID0gTWVtb1xubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBNb250aCA9IE1vbnRoXG5cbm1vZHVsZSBNdXRleCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMl0gVXNlIFtFcnJvcl9jaGVja2luZ19tdXRleF0gb3IgW0NhbWxfdGhyZWFkcy5NdXRleF1cIl1cblxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vX3BvbHltb3JwaGljX2NvbXBhcmUgPSBOb19wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmdcbm1vZHVsZSBPbmx5X2luX3Rlc3QgPSBPbmx5X2luX3Rlc3Rcbm1vZHVsZSBPcHRpb24gPSBPcHRpb25cbm1vZHVsZSBPcHRpb25fYXJyYXkgPSBPcHRpb25fYXJyYXlcbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBPcHRpb25hbF9zeW50YXhcbm1vZHVsZSBPcHRpb25hbF9zeW50YXhfaW50ZiA9IE9wdGlvbmFsX3N5bnRheF9pbnRmXG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIE91dF9jaGFubmVsID0gT3V0X2NoYW5uZWxcbm1vZHVsZSBQZXJjZW50ID0gUGVyY2VudFxubW9kdWxlIFBlcm1zID0gUGVybXNcbm1vZHVsZSBQaWQgPSBQaWRcbm1vZHVsZSBQb2x5ID0gUG9seVxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgPSBQb2x5IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMV0gdXNlIFtQb2x5XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZXhjID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUXVpY2tjaGVjayA9IFF1aWNrY2hlY2tcbm1vZHVsZSBRdWlja2NoZWNrX2ludGYgPSBRdWlja2NoZWNrX2ludGZcbm1vZHVsZSBRdWlja2NoZWNrYWJsZSA9IFF1aWNrY2hlY2thYmxlXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0bHlfY29tcGFyYWJsZVxubW9kdWxlIFNlcXVlbmNlID0gU2VxdWVuY2Vcbm1vZHVsZSBTZXQgPSBTZXRcbm1vZHVsZSBTZXRfaW50ZiA9IFNldF9pbnRmXG5tb2R1bGUgU2V0X29uY2UgPSBTZXRfb25jZVxubW9kdWxlIFNleHBfbWF5YmUgPSBTZXhwLlNleHBfbWF5YmVcblxubW9kdWxlIFNleHAgPSBTZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbmFsID0gU2lnbmFsXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTcGxpdHRhYmxlX3JhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tXG5tb2R1bGUgU3RhYmxlX2NvbXBhcmFibGUgPSBTdGFibGVfY29tcGFyYWJsZVxubW9kdWxlIFN0YWJsZV91bml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0XG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IEJhc2UuU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nX2lkID0gU3RyaW5nX2lkXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTdWJzdHJpbmcgPSBTdWJzdHJpbmdcbm1vZHVsZSBTdWJzdHJpbmdfaW50ZiA9IFN1YnN0cmluZ19pbnRmXG5tb2R1bGUgU3lzID0gQ29yZV9zeXNcblxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFtDb3JlX3RocmVhZF0gb3IgW0NhbWxfdGhyZWFkcy5UaHJlYWRdXCJdXG5cbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVHVwbGUgPSBUdXBsZVxubW9kdWxlIFR1cGxlMiA9IFR1cGxlLlQyXG5tb2R1bGUgVHVwbGUzID0gVHVwbGUuVDNcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFR5cGVfaW1tZWRpYWN5ID0gVHlwZV9pbW1lZGlhY3lcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbmlvbl9maW5kID0gVW5pb25fZmluZFxubW9kdWxlIFVuaXF1ZV9pZCA9IFVuaXF1ZV9pZFxubW9kdWxlIFVuaXQgPSBVbml0XG5tb2R1bGUgVW5pdF9vZl90aW1lID0gVW5pdF9vZl90aW1lXG5tb2R1bGUgVW5pdl9tYXAgPSBVbml2X21hcFxuXG5tb2R1bGUgVW5peCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAyMC0wM10gQ29yZSBzaGFkb3dzIFVuaXguIFVzZSBDb3JlX3VuaXgsIHdoaWNoIG92ZXJyaWRlcyBzb21lIG9mIFVuaXgncyBcXFxuICAgYmVoYXZpb3IuIElmIG5lY2Vzc2FyeSwgVW5peCBpcyBhdmFpbGFibGUgYW5kIHVuc2hhZG93ZWQgYXMgQ2FtbF91bml4LlwiXVxuXG5tb2R1bGUgVmFsaWRhdGUgPSBWYWxpZGF0ZVxubW9kdWxlIFZhbGlkYXRlZCA9IFZhbGlkYXRlZFxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50XG5tb2R1bGUgV2VhayA9IFdlYWtcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbm1vZHVsZSB0eXBlIFVuaXF1ZV9pZCA9IFVuaXF1ZV9pZC5JZFxuXG5pbmNsdWRlIFQgKCoqIEBvcGVuICopXG5cbmluY2x1ZGUgU3RkX2ludGVybmFsXG5pbmNsdWRlIE5vdF9mb3VuZFxuXG4oKiogezIgVG9wLWxldmVsIHZhbHVlc30gKilcblxudHlwZSAnYSBfbWF5YmVfYm91bmQgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcbmxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbmxldCBkb2VzX3JhaXNlID0gRXhuLmRvZXNfcmFpc2VcbmxldCBzZWMgPSBUaW1lX2Zsb2F0LlNwYW4ub2Zfc2VjXG5sZXQgKCBeLyApID0gRmlsZW5hbWUuY29uY2F0XG5cbigqKiBXZSBwZXJmb3JtIHRoZXNlIHNpZGUgZWZmZWN0cyBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0aGVtIHRvIHJ1biBmb3IgYW55IGNvZGUgdGhhdCB1c2VzXG4gICAgW0NvcmVdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtDb3JlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgIHByb2dyYW0gcmVmZXJzIHRvIGF0IGxlYXN0IG9uZSB2YWx1ZSBkaXJlY3RseSBpbiBDb3JlOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICAgW0NvcmUuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEV4bi5pbml0aWFsaXplX21vZHVsZSAoKVxuXG4oKiogVG8gYmUgdXNlZCBpbiBpbXBsZW1lbnRpbmcgQ29yZSwgYnV0IG5vdCBieSBlbmQgdXNlcnMuICopXG5tb2R1bGUgQ29yZV9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEaWdpdF9zdHJpbmdfaGVscGVycyA9IERpZ2l0X3N0cmluZ19oZWxwZXJzXG4gIG1vZHVsZSBUaW1lX3pvbmUgPSBab25lXG4gIG1vZHVsZSBPZmRheV9oZWxwZXJzID0gT2ZkYXlfaGVscGVyc1xuICBtb2R1bGUgU3Bhbl9mbG9hdCA9IFNwYW5fZmxvYXRcblxuICBtb2R1bGUgQmlnYnVmZmVyX2ludGVybmFsID0gQmlnYnVmZmVyX2ludGVybmFsXG4gIG1vZHVsZSBTdGFibGVfaW50ZXJuYWwgPSBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIFN0ZF9pbnRlcm5hbCA9IFN0ZF9pbnRlcm5hbFxuXG4gIG1vZHVsZSBUaW1lX25zX2FsdGVybmF0ZV9zZXhwID0gVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuZW5kXG5cbm1vZHVsZSBDb3JlX2tlcm5lbF9wcml2YXRlID0gQ29yZV9wcml2YXRlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDVdIFVzZSBbQ29yZV9wcml2YXRlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBVaV9lZmZlY3RfaW50ZlxuXG50eXBlICdhIHQgPSAuLlxudHlwZSAnYSB0ICs9IElnbm9yZSA6IHVuaXQgdCB8IE1hbnkgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcblxuKCogV2UgdXNlIHRoaXMgdGFibGUgZm9yIGRpc3BhdGNoaW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIGluIGFuIGVmZmljaWVudCB3YXkuICAqKVxudHlwZSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGRlblxuXG5sZXQgaGFuZGxlcnMgOiAoaGlkZGVuIC0+IHVuaXQpIEhhc2h0YmwuTShJbnQpLnQgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCkgfnNpemU6OFxuXG5tb2R1bGUgRGVmaW5lIChIYW5kbGVyIDogSGFuZGxlcikgOlxuICBTIHdpdGggdHlwZSBhY3Rpb24gOj0gSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6IEhhbmRsZXIuQWN0aW9uLnQgLT4gdW5pdCB0XG5cbiAgbGV0IGtleSA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWU7XG4gICAgICAgIGNhbGxiYWNrICgpXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5tb2R1bGUgRGVmaW5lMSAoSGFuZGxlciA6IEhhbmRsZXIxKSA6XG4gIFMxIHdpdGggdHlwZSAnYSBhY3Rpb24gOj0gJ2EgSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6ICdhIEhhbmRsZXIuQWN0aW9uLnQgLT4gJ2EgdFxuXG4gIGxldCBrZXkgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIGxldCBjYWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgbGV0IGNhbGxiYWNrIGEgPVxuICAgICAgICAgIGlmICFjYWxsZWRcbiAgICAgICAgICB0aGVuIGZhaWx3aXRoIFwib25fcmVzcG9uc2UgY2FsbGVkIG11bHRpcGxlIHRpbWVzIVwiXG4gICAgICAgICAgZWxzZSBjYWxsZWQgOj0gdHJ1ZTtcbiAgICAgICAgICBjYWxsYmFjayBhXG4gICAgICAgIGluXG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlIH5vbl9yZXNwb25zZTpjYWxsYmFja1xuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubGV0IGdldF9rZXkgdCA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpXG5cbmxldCBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2IpKSA9XG4gIEhhc2h0YmwuZmluZF9leG4gaGFuZGxlcnMgKGdldF9rZXkgdCkgKFQgKHQsIGNiKSlcbjs7XG5cbm1vZHVsZSBQcmludF9zID0gRGVmaW5lIChzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gU2V4cFxuXG4gICAgbGV0IGhhbmRsZSBzID0gcHJpbnRfcyBzXG4gIGVuZClcblxubGV0IHByaW50X3MgPSBQcmludF9zLmluamVjdFxuXG4oKiBFZmZlY3RmdWwgdGhpbmdzICopXG50eXBlICdhIHQgKz1cbiAgfCBSZXR1cm4gOiAnYSAtPiAnYSB0XG4gIHwgTGF6eSA6ICdhIHQgTGF6eS50IC0+ICdhIHRcbiAgfCBCaW5kIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiIHRcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBNYXAgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2JcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBOZXZlciA6ICdiIHRcbiAgfCBGdW4gOiAoY2FsbGJhY2s6KCdhIC0+IHVuaXQpIC0+IHVuaXQpIC0+ICdhIHRcblxubGV0IHJldHVybiBhID0gUmV0dXJuIGFcbmxldCBiaW5kICh0eXBlIGEpICh0IDogYSB0KSB+ZiA9IEJpbmQgeyB0OyBmIH1cbmxldCBtYXAgKHR5cGUgYSBiKSAodCA6IGEgdCkgfmYgOiBiIHQgPSBNYXAgeyB0OyBmIH1cbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgb2ZfZnVuIH5mID0gRnVuIGZcbmxldCBsYXp5XyBhID0gTGF6eSBhXG5cbmluY2x1ZGUgQ29yZS5Nb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCByZWMgZXZhbCA6IHR5cGUgYS4gYSB0IC0+IGNhbGxiYWNrOihhIC0+IHVuaXQpIC0+IHVuaXQgPVxuICBmdW4gdCB+Y2FsbGJhY2sgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRnVuIGYgLT4gZiB+Y2FsbGJhY2tcbiAgfCBJZ25vcmUgLT4gY2FsbGJhY2sgKClcbiAgfCBSZXR1cm4gYSAtPiBjYWxsYmFjayBhXG4gIHwgTGF6eSAobGF6eSB0KSAtPiBldmFsIHQgfmNhbGxiYWNrXG4gIHwgTWFueSBsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGV2YWwgfmNhbGxiYWNrOmlnbm9yZSk7XG4gICAgY2FsbGJhY2sgKClcbiAgfCBCaW5kIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGV2YWwgKGYgYSkgfmNhbGxiYWNrKVxuICB8IE1hcCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBjYWxsYmFjayAoZiBhKSlcbiAgfCBOZXZlciAtPiAoKVxuICB8IHQgLT4gaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNhbGxiYWNrKSlcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZSA9IGV2YWwgfmNhbGxiYWNrOmlnbm9yZVxuXG4gIHR5cGUgaGlkZSA9IGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZVxuXG4gIGxldCBoYW5kbGVycyA9IGhhbmRsZXJzXG4gIGxldCBvZl9mdW4gPSBvZl9mdW5cbmVuZFxuXG5tb2R1bGUgQWR2YW5jZWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN5bmNfZnVuX2FyZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAncikgLT4gJ3IgdFxuICAgIGVuZFxuXG4gICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBvbl9yZXNwb25zZSAoZiBhKVxuICBlbmRcblxuICBtb2R1bGUgU3luY19mdW4gPSBEZWZpbmUxIChTeW5jX2Z1bl9hcmcpXG5cbiAgbGV0IG9mX3N5bmNfZnVuIGYgYSA9IFN5bmNfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ2FsbGJhY2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPVxuICAgICAgICB7IHJlcXVlc3QgOiAnYVxuICAgICAgICA7IG9uX3Jlc3BvbnNlIDogJ2IgLT4gdW5pdCB0XG4gICAgICAgIH1cblxuICAgICAgbGV0IG1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlID0geyByZXF1ZXN0OyBvbl9yZXNwb25zZSB9XG4gICAgICBsZXQgcmVxdWVzdCB7IHJlcXVlc3Q7IF8gfSA9IHJlcXVlc3RcbiAgICAgIGxldCByZXNwb25kX3RvIHsgb25fcmVzcG9uc2U7IF8gfSByZXNwb25zZSA9IG9uX3Jlc3BvbnNlIHJlc3BvbnNlXG4gICAgZW5kXG5cbiAgICBsZXQgbWFrZSA6IHJlcXVlc3Q6J2EgLT4gZXZhbHVhdG9yOigoJ2EsICdiKSBDYWxsYmFjay50IC0+IHVuaXQgdCkgLT4gJ2IgdCA9XG4gICAgICBmdW4gfnJlcXVlc3QgfmV2YWx1YXRvciAtPlxuICAgICAgRXhwZXJ0Lm9mX2Z1biB+ZjooZnVuIH5jYWxsYmFjayAtPlxuICAgICAgICBsZXQgY2FsbGJhY2sgPVxuICAgICAgICAgIENhbGxiYWNrLm1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlOihmdW4gcmVzcG9uc2UgLT5cbiAgICAgICAgICAgIGNhbGxiYWNrIHJlc3BvbnNlO1xuICAgICAgICAgICAgSWdub3JlKVxuICAgICAgICBpblxuICAgICAgICBFeHBlcnQuaGFuZGxlIChldmFsdWF0b3IgY2FsbGJhY2spKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdmFyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHN0YXRlID1cbiAgICAgICAgfCBFbXB0eSBvZiB7IGhhbmRsZXJzIDogKCdhIC0+IHVuaXQpIEJhZy50IH1cbiAgICAgICAgfCBGdWxsIG9mICdhXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHN0YXRlIHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIChFbXB0eSB7IGhhbmRsZXJzID0gQmFnLmNyZWF0ZSAoKSB9KVxuXG4gICAgICBsZXQgdXBvbiB0IGhhbmRsZXIgPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgeyBoYW5kbGVycyB9IC0+IGlnbm9yZSAoQmFnLmFkZCBoYW5kbGVycyBoYW5kbGVyIDogXyBCYWcuRWx0LnQpXG4gICAgICAgIHwgRnVsbCB4IC0+IGhhbmRsZXIgeFxuICAgICAgOztcblxuICAgICAgbGV0IGZpbGxfaWZfZW1wdHkgdCB4ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEZ1bGwgXyAtPiAoKVxuICAgICAgICB8IEVtcHR5IHsgaGFuZGxlcnMgfSAtPlxuICAgICAgICAgIEJhZy5pdGVyIGhhbmRsZXJzIH5mOihmdW4gaGFuZGxlciAtPiBoYW5kbGVyIHgpO1xuICAgICAgICAgIHQgOj0gRnVsbCB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGVlayB0ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IF8gLT4gTm9uZVxuICAgICAgICB8IEZ1bGwgeCAtPiBTb21lIHhcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW5fYXJnID0gc3RydWN0XG4gICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAnciBTdmFyLnQpIC0+ICdyIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IFN2YXIudXBvbiAoZiBhKSBvbl9yZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuID0gRGVmaW5lMSAoU3Zhcl9mdW5fYXJnKVxuXG4gICAgbGV0IG9mX3N2YXJfZnVuIGYgYSA9IFN2YXJfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgICBtb2R1bGUgUXVlcnlfcmVzcG9uc2VfdHJhY2tlciA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3EsICdyKSBycGMgPVxuICAgICAgICB7IHF1ZXJ5IDogJ3FcbiAgICAgICAgOyByZXNwb25zZSA6ICdyIFN2YXIudFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxLCAncikgdCA9ICgncSwgJ3IpIHJwYyBCYWcudFxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gQmFnLmNyZWF0ZSAoKVxuXG4gICAgICBsZXQgYWRkX3F1ZXJ5IHQgcXVlcnkgPVxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBTdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICBpZ25vcmUgKEJhZy5hZGQgdCB7IHF1ZXJ5OyByZXNwb25zZSB9IDogXyBCYWcuRWx0LnQpO1xuICAgICAgICByZXNwb25zZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSB0ID1cbiAgICAgICAgQmFnLnRvX2xpc3QgdCB8PiBMaXN0Lm1hcCB+ZjooZnVuIHsgcXVlcnk7IHJlc3BvbnNlID0gXyB9IC0+IHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgdHlwZSAnciBtYXliZV9yZXNwb25kID1cbiAgICAgICAgfCBOb19yZXNwb25zZV95ZXRcbiAgICAgICAgfCBSZXNwb25kIG9mICdyXG5cbiAgICAgIGxldCBtYXliZV9yZXNwb25kIHQgfmYgPVxuICAgICAgICBCYWcuZmlsdGVyX2lucGxhY2UgdCB+ZjooZnVuIHsgcXVlcnk7IHJlc3BvbnNlIH0gLT5cbiAgICAgICAgICBtYXRjaCBmIHF1ZXJ5IHdpdGhcbiAgICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldCAtPiB0cnVlXG4gICAgICAgICAgfCBSZXNwb25kIHJlc3AgLT5cbiAgICAgICAgICAgIFN2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNwO1xuICAgICAgICAgICAgZmFsc2UpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgcXJ0ID0gb2Zfc3Zhcl9mdW4gKFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIuYWRkX3F1ZXJ5IHFydClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBBZHZhbmNlZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSWRlbnRcbiAgICB8IEZ1bmN0aW9uXG4gICAgfCBBdGtleXdvcmRcbiAgICB8IEhhc2hcbiAgICB8IFN0cmluZ1xuICAgIHwgVXJpXG4gICAgfCBEZWxpbVxuICAgIHwgTnVtYmVyXG4gICAgfCBQZXJjZW50YWdlXG4gICAgfCBEaW1lbnNpb25cbiAgICB8IFdoaXRlX3NwYWNlXG4gICAgfCBDb2xvblxuICAgIHwgU2VtaV9jb2xvblxuICAgIHwgQ29tbWFcbiAgICB8IExicmFja2V0XG4gICAgfCBSYnJhY2tldFxuICAgIHwgTHBhcmVuXG4gICAgfCBScGFyZW5cbiAgICB8IExjdXJseVxuICAgIHwgUmN1cmx5XG4gICAgfCBDb21tZW50XG4gICAgfCBFb2ZcbiAgICB8IEVycm9yXG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgKCogc3RhcnQgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGxlbiA6IGludFxuICA7ICgqIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgY3VycmVudCA6IFRva2VuLnRcbiAgfVxuXG50eXBlIG1hcmsgPSBNYXJrIG9mIGludCBbQEB1bmJveGVkXVxuXG5sZXQgbWFyayB0ID0gTWFyayB0LmxlblxubGV0IHNvdXJjZSB0ID0gdC5zXG5sZXQgbmV4dF9wb3MgdCA9IHQub2ZmICsgdC5sZW5cbmxldCBpc19uZXh0X2VvZiB0ID0gbmV4dF9wb3MgdCA+PSBTdHJpbmcubGVuZ3RoIHQuc1xubGV0IG5leHRfY2hhciB0ID0gdC5zLltuZXh0X3BvcyB0XVxubGV0IHJlc2V0IHQgKE1hcmsgdikgPSB0LmxlbiA8LSB2XG5sZXQgY29uc3VtZV8xIHQgPSB0LmxlbiA8LSB0LmxlbiArIDFcbmxldCBjb25zdW1lX24gdCBuID0gdC5sZW4gPC0gdC5sZW4gKyBuXG5cbmxldCBvbmVfY2hhcl90b2tlbiB0IHRvayA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgY29uc3VtZV8xIHQ7XG4gIHQuY3VycmVudCA8LSB0b2tcbjs7XG5cbmV4Y2VwdGlvbiBFcnJvcl9oYXBwZW5lZFxuXG5sZXQgZXJyb3IgdCA9XG4gIHQuY3VycmVudCA8LSBFcnJvcjtcbiAgcmFpc2UgRXJyb3JfaGFwcGVuZWRcbjs7XG5cbmxldCBhY2NlcHQgdCBmID1cbiAgaWYgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KVxuICB0aGVuIChcbiAgICBjb25zdW1lXzEgdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgYWNjZXB0X2NoYXIgdCBjaCA9IGFjY2VwdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgYWNjZXB0X3N0cmluZyB0IHN0ciA9XG4gIGlmIFN0cmluZy5sZW5ndGggc3RyID0gMFxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IHBvcyA9IG5leHRfcG9zIHQgaW5cbiAgICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgcG9zICsgc3RyX2xlbiA+IFN0cmluZy5sZW5ndGggdC5zXG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCB0LnMgfnBvcyB+c3Vic3RyaW5nOnN0clxuICAgIHRoZW4gKFxuICAgICAgY29uc3VtZV9uIHQgc3RyX2xlbjtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSlcbjs7XG5cbmxldCBleHBlY3QgdCBmID0gaWYgYWNjZXB0IHQgZiB0aGVuICgpIGVsc2UgZXJyb3IgdFxubGV0IGV4cGVjdF9jaGFyIHQgY2ggPSBleHBlY3QgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IG1hbnkgdCBmID1cbiAgd2hpbGUgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KSBkb1xuICAgIGNvbnN1bWVfMSB0XG4gIGRvbmVcbjs7XG5cbmxldCBtYW55MSB0IGYgPVxuICBleHBlY3QgdCBmO1xuICBtYW55IHQgZlxuOztcblxubGV0IHBsdXNfb3JfbWludXMgPSBmdW5jdGlvblxuICB8ICctJyB8ICcrJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tc3RhcnQgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1jaGFyID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyB8ICcwJyAuLiAnOScgfCAnLScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpZGVudCB0ID1cbiAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgdGhlblxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gICAgdGhlbiBtYW55IHQgbm1jaGFyXG4gICAgZWxzZSAoXG4gICAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgICAgbWFueSB0IG5tY2hhcilcbiAgZWxzZSAoXG4gICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICBtYW55IHQgbm1jaGFyKVxuOztcblxubGV0IGlkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBpZGVudCB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICcoJyB0aGVuIHQuY3VycmVudCA8LSBGdW5jdGlvbiBlbHNlIHQuY3VycmVudCA8LSBJZGVudFxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxuJyB8ICdcXHgwYycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZSA9XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpIHF1b3RlKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgfCAnXFxuJyB8ICdcXHInIHwgJ1xceDBjJyB8ICdcXFxcJyAtPiBmYWxzZVxuICAgICAgfCBjIHdoZW4gQ2hhci5lcXVhbCBjIHF1b3RlIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnXFxcXCdcbiAgICB0aGVuXG4gICAgICBpZiBhY2NlcHRfY2hhciB0IHF1b3RlXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgICAgIHwgJ1xcbicgfCAnXFx4MGMnIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICdcXG4nIDogYm9vbCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8IF9jIC0+XG4gICAgICAgICAgKCogSGFuZGxlIHRoZSBcImVzY2FwZVwiIHJ1bGU6XG4gICAgICAgICAgICAge3ZcbiAgICAgICAgICAgICAgICB1bmljb2RlOiBcXFxcWzAtOWEtZl17MSw2fShcXHJcXG58WyBcXG5cXHJcXHRcXGZdKT9cbiAgICAgICAgICAgICAgICBlc2NhcGUgOiB7dW5pY29kZX18XFxcXFteXFxuXFxyXFxmMC05YS1mXVxuICAgICAgICAgICAgICB2fVxuICAgICAgICAgICopXG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKTtcbiAgZXhwZWN0X2NoYXIgdCBxdW90ZVxuOztcblxubGV0IHN0YXJ0X251bSB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICcuJyA6IGJvb2wpO1xuICAgIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBzdGFydF9pZGVudCB+cHJlZml4IHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBhY2NlcHRfc3RyaW5nIHQgcHJlZml4XG4gICAgJiZcbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJyB0aGVuIGFjY2VwdF9jaGFyIHQgJy0nIHx8IGFjY2VwdCB0IG5tc3RhcnQgZWxzZSBhY2NlcHQgdCBubXN0YXJ0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZyB0IH5xdW90ZSA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgcXVvdGVkX3N0cmluZycgdCB+cXVvdGU7XG4gIHQuY3VycmVudCA8LSBTdHJpbmdcbjs7XG5cbmxldCBleHBvbmVudGlhbF9wYXJ0IHQgPVxuICBsZXQgbWFyayA9IG1hcmsgdCBpblxuICBpZiBhY2NlcHQgdCAoZnVuY3Rpb25cbiAgICB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuXG4gICAgaWYgYWNjZXB0IHQgcGx1c19vcl9taW51c1xuICAgIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZSBpZiBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gICAgdGhlbiBtYW55IHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2VcbiAgICAgICgqIEJhY2t0cmFjayBpZiB0aGVyZSBhcmUgbm8gZGlnaXRzIG9yIHNpZ25zIGFmdGVyIHRoZSAnZScgYmVjYXVzZVxuICAgICAgICAgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgJ2UnIHdhcyBhY3R1YWxseSBhIHBhcnQgb2Ygc29tZXRoaW5nIGVsc2UuIEZvclxuICAgICAgICAgZXhhbXBsZSwgdGhlICdlJyBjb3VsZCBiZSBwYXJ0IG9mIGFuICdlbScgb3IgJ2VuJyBkaW1lbnNpb24gaW5zdGVhZFxuICAgICAgICAgb2YgYmVnaW5uaW5nIHRoZSBleHBvbmVudGlhbCBwYXJ0IG9mIGEgc2NpZW50aWZpYyBub3RhdGlvbiBudW1iZXIuXG5cbiAgICAgICAgIEV4YW1wbGU6IDEuMmUzIGlzIHNjaWVudGlmaWMgbm90YXRpb24sIGJ1dCAxLjJlbSBpcyBhIG51bWJlciB3aXRoIGFcbiAgICAgICAgIGRpbWVuc2lvbi4gKilcbiAgICAgIHJlc2V0IHQgbWFya1xuOztcblxubGV0IG51bSB0ID1cbiAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy4nXG4gIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gIGVsc2UgKFxuICAgIG1hbnkxIHQgQ2hhci5pc19kaWdpdDtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICcuJyB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdCk7XG4gIGV4cG9uZW50aWFsX3BhcnQgdFxuOztcblxubGV0IG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBudW0gdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnJSdcbiAgdGhlbiB0LmN1cnJlbnQgPC0gUGVyY2VudGFnZVxuICBlbHNlIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gIHRoZW4gKFxuICAgIGlkZW50IHQ7XG4gICAgdC5jdXJyZW50IDwtIERpbWVuc2lvbilcbiAgZWxzZSB0LmN1cnJlbnQgPC0gTnVtYmVyXG47O1xuXG5sZXQgaGFzaF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnIycpO1xuICBjb25zdW1lXzEgdDtcbiAgaWYgYWNjZXB0IHQgbm1jaGFyXG4gIHRoZW4gKFxuICAgIG1hbnkxIHQgbm1jaGFyO1xuICAgIHQuY3VycmVudCA8LSBIYXNoKVxuICBlbHNlIHQuY3VycmVudCA8LSBEZWxpbVxuOztcblxubGV0IGF0a2V5d29yZCB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnQCcpO1xuICBjb25zdW1lXzEgdDtcbiAgaWRlbnQgdDtcbiAgdC5jdXJyZW50IDwtIEF0a2V5d29yZFxuOztcblxubGV0IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAndScpO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCJ1cmwoXCJcbiAgdGhlbiAoXG4gICAgbGV0IG0gPSBtYXJrIHQgaW5cbiAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICBpZiBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1wiJyB8fCBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1xcJydcbiAgICB0aGVuIChcbiAgICAgIHJlc2V0IHQgbTtcbiAgICAgIHQuY3VycmVudCA8LSBGdW5jdGlvbilcbiAgICBlbHNlIChcbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKScgfCAnICcgLT4gZmFsc2VcbiAgICAgICAgfCAnXFwnJyB8ICdcIicgfCAnKCcgLT4gZXJyb3IgdFxuICAgICAgICB8IGMgd2hlbiBDaGFyLmlzX3ByaW50IGMgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZXJyb3IgdCk7XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIGV4cGVjdF9jaGFyIHQgJyknO1xuICAgICAgdC5jdXJyZW50IDwtIFVyaSkpXG4gIGVsc2UgaWRlbnRfb3JfZnVuY3Rpb24gdFxuOztcblxubGV0IGNvbW1lbnRfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwiLypcIlxuICB0aGVuIChcbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcqJyAtPiBmYWxzZVxuICAgICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIqL1wiXG4gICAgICB0aGVuIHQuY3VycmVudCA8LSBDb21tZW50XG4gICAgICBlbHNlIGlmIGFjY2VwdF9jaGFyIHQgJyonXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgZXJyb3IgdFxuICAgIGluXG4gICAgbG9vcCAoKSlcbiAgZWxzZSAoXG4gICAgZXhwZWN0X2NoYXIgdCAnLyc7XG4gICAgdC5jdXJyZW50IDwtIERlbGltKVxuOztcblxubGV0IG5leHQgdCA9XG4gIGxldCBuZXdfb2ZmID0gbmV4dF9wb3MgdCBpblxuICB0Lm9mZiA8LSBuZXdfb2ZmO1xuICB0LmxlbiA8LSAwO1xuICBpZiBpc19uZXh0X2VvZiB0XG4gIHRoZW4gdC5jdXJyZW50IDwtIEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgfCBjIHdoZW4gaXNfd2hpdGVzcGFjZSBjIC0+XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIHQuY3VycmVudCA8LSBXaGl0ZV9zcGFjZVxuICAgIHwgJzonIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29sb25cbiAgICB8ICc7JyAtPiBvbmVfY2hhcl90b2tlbiB0IFNlbWlfY29sb25cbiAgICB8ICd7JyAtPiBvbmVfY2hhcl90b2tlbiB0IExjdXJseVxuICAgIHwgJ30nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmN1cmx5XG4gICAgfCAnWycgLT4gb25lX2NoYXJfdG9rZW4gdCBMYnJhY2tldFxuICAgIHwgJ10nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmJyYWNrZXRcbiAgICB8ICcoJyAtPiBvbmVfY2hhcl90b2tlbiB0IExwYXJlblxuICAgIHwgJyknIC0+IG9uZV9jaGFyX3Rva2VuIHQgUnBhcmVuXG4gICAgfCAnLCcgLT4gb25lX2NoYXJfdG9rZW4gdCBDb21tYVxuICAgIHwgKCdcXCcnIHwgJ1wiJykgYXMgcXVvdGUgLT4gcXVvdGVkX3N0cmluZyB0IH5xdW90ZVxuICAgIHwgKCcwJyAuLiAnOScgfCAnLicgfCAnKycgfCAnLScpIHdoZW4gc3RhcnRfbnVtIHQgLT5cbiAgICAgIG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0XG4gICAgfCAnLycgLT4gY29tbWVudF9vcl9kZWxpbSB0XG4gICAgfCAnIycgLT4gaGFzaF9vcl9kZWxpbSB0XG4gICAgfCAnQCcgd2hlbiBzdGFydF9pZGVudCB+cHJlZml4OlwiQFwiIHQgLT4gYXRrZXl3b3JkIHRcbiAgICB8ICd1JyAtPiB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgIHwgXyAtPlxuICAgICAgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgICAgIHRoZW4gaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAoKiB0aGlzIGlzIHdlaXJkIGJ1dCB0aGUgc3BlYyBpcyB3ZWlyZCAqKVxuICAgICAgICB0LmN1cnJlbnQgPC0gRGVsaW0pKVxuOztcblxubGV0IG5leHQgdCA9XG4gICgqIE1ha2Ugc3VyZSB3ZSBhcmUgaWRlbXBvdGVudCB3aGVuIHdlIGdldCBpbnRvIHRoZSBlcnJvciBzdGF0ZSAqKVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRXJyb3JcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICB0cnkgbmV4dCB0IHdpdGhcbiAgICB8IEVycm9yX2hhcHBlbmVkIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBzID1cbiAgKCogY3VycmVudCBpcyBkdW1teSBhbmQgd2lsbCBiZSBzZXQgYnkgY2FsbCB0byBuZXh0ICopXG4gIGxldCB0ID0geyBzOyBvZmYgPSAwOyBsZW4gPSAwOyBjdXJyZW50ID0gV2hpdGVfc3BhY2UgfSBpblxuICBuZXh0IHQ7XG4gIHRcbjs7XG5cbmxldCBzbGljZSB0ID0gdC5vZmYsIHQubGVuXG5sZXQgY3VycmVudCB0ID0gdC5jdXJyZW50XG5cbmxldCBjdXJyZW50X3RleHQgdCA9XG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFb2ZcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBwb3MsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBTdHJpbmcuc3ViIHQucyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHQgPSBjcmVhdGUgcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBsZXQgc3RhcnQsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBsZXQgYWNjID0gKGN1cnJlbnQgdCwgc3RhcnQsIGxlbikgOjogYWNjIGluXG4gICAgaWYgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRW9mIHx8IFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVycm9yXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIChcbiAgICAgIG5leHQgdDtcbiAgICAgIGxvb3AgYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgdGVzdCBzID1cbiAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgKFNleHAudG9fc3RyaW5nX21hY2ggKFslc2V4cF9vZjogKFRva2VuLnQgKiBpbnQgKiBpbnQpIGxpc3RdICh0b19saXN0IHMpKSlcbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZW9mXCIgPVxuICAgICAgdGVzdCBcIlwiO1xuICAgICAgWyVleHBlY3Qge3woKEVvZiAwIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaW1wbGVfdG9rZW5zXCIgPVxuICAgICAgdGVzdCBcIikoe31bXTs6XCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFJwYXJlbiAwIDEpKExwYXJlbiAxIDEpKExjdXJseSAyIDEpKFJjdXJseSAzIDEpKExicmFja2V0IDQgMSkoUmJyYWNrZXQgNSAxKShTZW1pX2NvbG9uIDYgMSkoQ29sb24gNyAxKShFb2YgOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImlkZW50XCIgPVxuICAgICAgdGVzdCBcIi1mb28tYmFyOiBiYXpcIjtcbiAgICAgIHRlc3QgXCItZm9vLWJhcihcIjtcbiAgICAgIHRlc3QgXCJAZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtLWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCItLXZhclwiO1xuICAgICAgdGVzdCBcIlJHQkFcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDgpKENvbG9uIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChGdW5jdGlvbiAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOCkoRW9mIDggMCkpXG4gICAgKChBdGtleXdvcmQgMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDEwKShFb2YgMTAgMCkpXG4gICAgKChJZGVudCAwIDUpKEVvZiA1IDApKVxuICAgICgoSWRlbnQgMCA0KShFb2YgNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIndoaXRlc3BhY2VcIiA9XG4gICAgICB0ZXN0IFwiICBcIjtcbiAgICAgIFslZXhwZWN0IHt8KChXaGl0ZV9zcGFjZSAwIDIpKEVvZiAyIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJudW1iZXJzXCIgPVxuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVtXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVpblwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAzY21cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogMTIwJVwiO1xuICAgICAgdGVzdCBcImdyaWQ6IDAgMSBmb29cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNS1pblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlMjBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShEaW1lbnNpb24gMTMgMykoRW9mIDE2IDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoUGVyY2VudGFnZSAxMyA0KShFb2YgMTcgMCkpXG4gICAgKChJZGVudCAwIDQpKENvbG9uIDQgMSkoV2hpdGVfc3BhY2UgNSAxKShOdW1iZXIgNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiYmFkbHlfcXVvdGVkXCIgPVxuICAgICAgdGVzdCBcIidmb28gYmFyXCI7XG4gICAgICB0ZXN0IFwiJ1wiO1xuICAgICAgdGVzdCBcIidcXFxcJ1wiO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoKEVycm9yIDAgOCkpXG4gICAgKChFcnJvciAwIDEpKVxuICAgICgoRXJyb3IgMCAzKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInF1b3RlZFwiID1cbiAgICAgIHRlc3Qge3wnRm9vICdcIkJhclwiJzsnICdcXCcnIFwiXFxcIlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFN0cmluZyAwIDYpKFN0cmluZyA2IDUpKFN0cmluZyAxMSAzKShXaGl0ZV9zcGFjZSAxNCAxKShTdHJpbmcgMTUgNCkoV2hpdGVfc3BhY2UgMTkgMSkoU3RyaW5nIDIwIDQpKEVvZiAyNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImNvbG9yc1wiID1cbiAgICAgIHRlc3Qge3xjb2xvcjogI2YwMHx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoSGFzaCA3IDQpKEVvZiAxMSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImltcG9ydFwiID1cbiAgICAgIHRlc3Qge3xAaW1wb3J0IFwiZm9vLmJhclwiO3x9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChBdGtleXdvcmQgMCA3KShXaGl0ZV9zcGFjZSA3IDEpKFN0cmluZyA4IDkpKFNlbWlfY29sb24gMTcgMSkoRW9mIDE4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicmVkIGV4YW1wbGVcIiA9XG4gICAgICB0ZXN0IFwicmVkLS0+XCI7XG4gICAgICBbJWV4cGVjdCB7fCAoKElkZW50IDAgNSkoRGVsaW0gNSAxKShFb2YgNiAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVybFwiID1cbiAgICAgIHRlc3Qge3x1cmwoIFwiaHR0cDovL3d3d3cuZ29vZ2xlLmNvbVwiKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLmNvbSApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLlwiY29tICl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChGdW5jdGlvbiAwIDQpKFdoaXRlX3NwYWNlIDQgMSkoU3RyaW5nIDUgMjQpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShScGFyZW4gMjggMSkoRW9mIDI5IDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoV2hpdGVfc3BhY2UgMjggMSkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKFVyaSAwIDMwKShFb2YgMzAgMCkpXG4gICAgKChFcnJvciAwIDI1KSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVzY2FwZVwiID1cbiAgICAgIHRlc3Qge3xcInRlc3RcXDE5YWJmMlxcMlwifH07XG4gICAgICB0ZXN0IHt8XCJcXDAxMFxceEZGYVxcbzEyM1xcblxcXFxcXHV7MTIzNDV9YWHwn5Cq8J+QqvCfkKrwn5Cq8J+QqlwifH07XG4gICAgICB0ZXN0IHt8XCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoU3RyaW5nIDAgMTUpKEVvZiAxNSAwKSlcbiAgICAoKFN0cmluZyAwIDUxKShFb2YgNTEgMCkpXG4gICAgKChTdHJpbmcgMCA0OSkoRW9mIDQ5IDApKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogUmVjdXJzaXZlIGRlc2NlbnQgcGFyc2Vycy4gIEEgcGFyc2VyIHJldHVybnMgZmFsc2UgaWYgYmFzZWQgb24gYVxuICAgc2luZ2xlIHRva2VuIGxvb2thaGVhZCBpdCBkZWNpZGVzIHRoYXQgdGhlIGdpdmVuIHRleHQgY2FuIG5vdCBiZVxuICAgcGFyc2VkLiAgQW55IG90aGVyIHBhcnNlIGVycm9ycyBhcmUgaGFuZGxlZCBieSByYWlzaW5nIGV4Y2VwdGlvbnMuXG5cbiAgIFNvbWUgcGFyc2VycyByZXR1cm4gdW5pdCBiZWNhdXNlIHdlIG9ubHkgY2FsbCB0aGVtIHdoZW4gYSBmYWlsdXJlXG4gICB0byBwYXJzZSBpbXBsaWVzIGEgcGFyc2UgZXJyb3IgKGFuZCBub3QgdGhhdCBzb21lIHBhcnNlciBoaWdoZXIgdXBcbiAgIGluIHRoZSBjYWxsIGNoYWluIHNob3VsZCB0cnkgdG8gcGFyc2Ugc29tZXRoaW5nIGVsc2UpLlxuXG4gICBGb3Igc2ltcGxpY2l0eSB0aGUgcGFyc2VycyB0aGVtc2VsdmVzIGp1c3QgdmFsaWRhdGUgYW5kIGRvbid0XG4gICBwcm9kdWNlIGFueSB2YWx1ZXMuICBUaGF0IGxlYWRzIHRvIGEgZmV3IHVuZWxlZ2FudCBjb25zdHJ1Y3RzXG4gICAocHJpbWFyaWx5IGluIGRlY2xhcmF0aW9uKSwgYnV0IG1lYW5zIHdlIG90aGVyd2lzZSBoYXZlIHJhdGhlclxuICAgc2ltcGxlIGNvZGUgdGhhdCBhbHNvIGFsbG9jYXRlcyB2ZXJ5IGxpdHRsZS5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgcmVjIG5leHQgY3QgPVxuICBDc3NfdG9rZW5pemVyLm5leHQgY3Q7XG4gIGlmIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSB0aGVuIG5leHQgY3QgZWxzZSAoKVxuOztcblxubGV0IHNraXBfd2hpdGVfc3BhY2UgY3QgPVxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgV2hpdGVfc3BhY2UpIGRvXG4gICAgbmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgYWNjZXB0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIChcbiAgICBuZXh0IGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBleHBlY3QgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gbmV4dCBjdFxuICBlbHNlXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVW5leHBlY3RlZCB0b2tlblwiXG4gICAgICAgICAgKGV4cGVjdGVkIDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KVxuICAgICAgICAgIChnb3QgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXVxuOztcblxubGV0IHJlYyBtYW55IChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9IGlmIGYgY3QgdGhlbiBtYW55IGN0IGYgZWxzZSAoKVxuXG5sZXQgbWFueTEgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID1cbiAgaWYgZiBjdFxuICB0aGVuIChcbiAgICBtYW55IGN0IGY7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IHJlYyBhbnkgY3QgOiBib29sID1cbiAgbGV0IHJlcyA9XG4gICAgbWF0Y2ggQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IHdpdGhcbiAgICB8IElkZW50IHwgTnVtYmVyIHwgUGVyY2VudGFnZSB8IERpbWVuc2lvbiB8IFN0cmluZyB8IFVyaSB8IERlbGltIHwgSGFzaCB8IENvbW1hIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgdHJ1ZVxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgbWFueSBjdCBhbnk7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTHBhcmVuIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTGJyYWNrZXQgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBSYnJhY2tldDtcbiAgICAgIHRydWVcbiAgICB8IFJjdXJseSB8IFJwYXJlbiB8IFJicmFja2V0IC0+IGZhbHNlXG4gICAgfCBMY3VybHkgLT4gZmFsc2VcbiAgICB8IEF0a2V5d29yZCB8IENvbG9uIHwgU2VtaV9jb2xvbiAtPiBmYWxzZVxuICAgIHwgQ29tbWVudCB8IFdoaXRlX3NwYWNlIHwgRW9mIHwgRXJyb3IgLT4gZmFsc2VcbiAgaW5cbiAgaWYgcmVzIHRoZW4gc2tpcF93aGl0ZV9zcGFjZSBjdCBlbHNlICgpO1xuICByZXNcblxuYW5kIGV4cGVjdF9hbnkgY3QgPSBpZiBhbnkgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGFueT5cIl1cblxuYW5kIHZhbHVlMCBjdCA9XG4gIGFueSBjdFxuICB8fCBibG9jayBjdFxuICB8fFxuICBpZiBhY2NlcHQgY3QgQXRrZXl3b3JkXG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgdmFsdWUgY3QgPSBtYW55MSBjdCB2YWx1ZTBcblxuYW5kIGJsb2NrIGN0IDogYm9vbCA9XG4gIGlmIGFjY2VwdCBjdCBMY3VybHlcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICAgIHZhbHVlMCBjdFxuICAgICAgfHxcbiAgICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgICB0aGVuIChcbiAgICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgICAgdHJ1ZSlcbiAgICAgIGVsc2UgZmFsc2UpO1xuICAgIGV4cGVjdCBjdCBSY3VybHk7XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCBleHBlY3RfdmFsdWUgY3QgPSBpZiB2YWx1ZSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8dmFsdWU+XCJdXG5cbmxldCBkZWNsYXJhdGlvbiBjdCA9XG4gIGxldCBpZGVudF9zdGFydCwgaWRlbnRfbGVuID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCBpblxuICBpZiBhY2NlcHQgY3QgSWRlbnRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBleHBlY3QgY3QgQ29sb247XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBsZXQgdmFsdWVfc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGV4cGVjdF92YWx1ZSBjdDtcbiAgICBsZXQgbmV4dF90b2tlbl9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgbGV0IHNvdXJjZSA9IENzc190b2tlbml6ZXIuc291cmNlIGN0IGluXG4gICAgU29tZVxuICAgICAgKCBTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOmlkZW50X3N0YXJ0IH5sZW46aWRlbnRfbGVuXG4gICAgICAsIFN0cmluZy5yc3RyaXBcbiAgICAgICAgICAoU3RyaW5nLnN1YiBzb3VyY2UgfnBvczp2YWx1ZV9zdGFydCB+bGVuOihuZXh0X3Rva2VuX3N0YXJ0IC0gdmFsdWVfc3RhcnQpKSApKVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBleHBlY3RfZGVjbGFyYXRpb24gY3QgPVxuICBtYXRjaCBkZWNsYXJhdGlvbiBjdCB3aXRoXG4gIHwgU29tZSAoZmllbGQsIHZhbHVlKSAtPiBmaWVsZCwgdmFsdWVcbiAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGRlY2xhcmF0aW9uPlwiXVxuOztcblxuKCogQXMgcGVyOiBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXN0eWxlLWF0dHIvXG4gICBkZWNsYXJhdGlvbi1saXN0XG4gICA6IFMqIGRlY2xhcmF0aW9uPyBbICc7JyBTKiBkZWNsYXJhdGlvbj8gXSpcbiAgIDtcbiopXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgY3QgPVxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGxldCBhZGQga3YgPVxuICAgIG1hdGNoIGt2IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGssIHYpIC0+IHJlcyA6PSAoaywgdikgOjogIXJlc1xuICBpblxuICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICB0aGVuIChcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSk7XG4gIExpc3QucmV2ICFyZXNcbjs7XG5cbmxldCBwYXJzZSBwYXJzZXJfZiBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgZG9cbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZTtcbiAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgIGxldCByZXMgPSBwYXJzZXJfZiBjdCBpblxuICAgIGV4cGVjdCBjdCBFb2Y7XG4gICAgcmVzKVxuOztcblxubGV0IHByaW50X3Rva2VucyBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihub3QgKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBFb2YpKSBkb1xuICAgIHByaW50X3MgKENzc190b2tlbml6ZXIuVG9rZW4uc2V4cF9vZl90IChDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QpKTtcbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IHZhbGlkYXRlX3ZhbHVlID0gcGFyc2UgZXhwZWN0X3ZhbHVlXG5sZXQgcGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzID0gcGFyc2UgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3Qgc1xuXG5sZXQgdGVzdF9wYXJzZXIgcCBzZXhwX29mX2FyZyBzID1cbiAgbGV0IHIgPSBwYXJzZSBwIHMgaW5cbiAgcHJpbnRmICFcIiVzIC0tPiAle3NleHA6YXJnIE9yX2Vycm9yLnR9XFxuXCIgcyByXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJcIiA9XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBcIjAgNHB4IDhweCAwIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjEyKSwgMCAycHggNHB4IDAgXFxcbiAgICAgICAgIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjA4KVwiXG4gICAgICBpblxuICAgICAgcHJpbnRfdG9rZW5zIHZhbHVlO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuIHx9XTtcbiAgICAgIHByaW50X3MgWyVtZXNzYWdlICh2YWxpZGF0ZV92YWx1ZSB2YWx1ZSA6IHVuaXQgT3JfZXJyb3IudCldO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoXCJ2YWxpZGF0ZV92YWx1ZSB2YWx1ZVwiIChPayAoKSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ2YWx1ZXNcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF92YWx1ZSBVbml0LnNleHBfb2ZfdCBpblxuICAgICAgdGVzdCBcInhcIjtcbiAgICAgIHRlc3QgXCIzXCI7XG4gICAgICB0ZXN0IFwiM2luXCI7XG4gICAgICB0ZXN0IFwiMyVcIjtcbiAgICAgIHRlc3QgXCIjZmZmXCI7XG4gICAgICB0ZXN0IFwiMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCInSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwicmdiKDAsMCwwKVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIHggLS0+IChPayAoKSlcbiAgICAgIDMgLS0+IChPayAoKSlcbiAgICAgIDNpbiAtLT4gKE9rICgpKVxuICAgICAgMyUgLS0+IChPayAoKSlcbiAgICAgICNmZmYgLS0+IChPayAoKSlcbiAgICAgIDEgMCBhdXRvIC0tPiAoT2sgKCkpXG4gICAgICAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKCkpXG4gICAgICByZ2IoMCwwLDApIC0tPiAoT2sgKCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvblwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6IGZvbztcIjtcbiAgICAgICgqIFNlbWkncyBhcmUgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiBsaXN0ICopXG4gICAgICB0ZXN0IFwiY29udGVudDogYmFyIFwiO1xuICAgICAgKCogYnV0IHdoaXRlc3BhY2UgaXMgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiAoYW55IHJlYWxseSkgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rIChmbGV4IFwiMSAwIGF1dG9cIikpXG4gICAgICBjb250ZW50OiAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKGNvbnRlbnQgXCInSGVsbG8gV29ybGQnXCIpKVxuICAgICAgY29udGVudDogZm9vOyAtLT4gKEVycm9yIChcIlVuZXhwZWN0ZWQgdG9rZW5cIiAoZXhwZWN0ZWQgRW9mKSAoZ290IFNlbWlfY29sb24pKSlcbiAgICAgIGNvbnRlbnQ6IGJhciAgLS0+IChPayAoY29udGVudCBiYXIpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidW5pY29kZVwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtidcIjtcbiAgICAgIHByaW50X2VuZGxpbmUgKFNleHAudG9fc3RyaW5nIChTZXhwLkF0b20gXCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwiKSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGticgLS0+IChPa1xuICAgICAoY29udGVudFxuICAgICAgXCInXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODInXCIpKVxuICAgIFwiXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODJcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb24gbGlzdFwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgWyVzZXhwX29mOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG87XCI7XG4gICAgICB0ZXN0XG4gICAgICAgIFwiYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHhcIjtcbiAgICAgIHRlc3QgXCI7Ozs7O1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGZsZXg6IDEgMCBhdXRvOyAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcImltZ190cmVlLnBuZ1wiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4IC0tPiAoT2tcbiAgICAgKChiYWNrZ3JvdW5kIFwiIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdFwiKVxuICAgICAgKG1hcmdpbi1sZWZ0IDIwMHB4KSkpXG4gICAgOzs7OzsgLS0+IChPayAoKSlcbiAgICBmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhICAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpIChvdGhlciBzYSkpKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIENvcmUuQ29yZV9zdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAoKiogKGZpZWxkICogdmFsdWUpIGxpc3QuICBXaGVyZSB2YWx1ZSBzaG91bGQgYmUgZXNjYXBlZCAvIHF1b3RlZFxuICAgICAgICBhcyBuZWNlc3NhcnkgYXMgcGVyIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjcnVsZS1zZXRzLiAqKVxuICAgIHR5cGUgdCA9IChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvXVxuICBlbmRcbmVuZFxuXG5vcGVuIENvcmVcbmluY2x1ZGUgU3RhYmxlLlYxXG5cbnR5cGUgY3NzX2dsb2JhbF92YWx1ZXMgPVxuICBbIGBJbmhlcml0XG4gIHwgYEluaXRpYWxcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgPSByZWYgKGZ1biBkaWdpdHMgZiAtPiBzcHJpbnRmIFwiJS4qZlwiIGRpZ2l0cyBmKVxuZW5kXG5cbmxldCBmMnMgZGlnaXRzIGYgPSAhUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCBkaWdpdHMgZlxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUkdCQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyByIDogaW50XG4gICAgICAgIDsgZyA6IGludFxuICAgICAgICA7IGIgOiBpbnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+ciB+ZyB+YiA/YSAoKSA9IHsgcjsgZzsgYjsgYSB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSFNMQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBoIDogaW50XG4gICAgICAgIDsgcyA6IFBlcmNlbnQudFxuICAgICAgICA7IGwgOiBQZXJjZW50LnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+aCB+cyB+bCA/YSAoKSA9IHsgaDsgczsgbDsgYSB9XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPVxuICAgICAgWyBgUkdCQSBvZiBSR0JBLnRcbiAgICAgIHwgYEhTTEEgb2YgSFNMQS50XG4gICAgICB8IGBOYW1lIG9mIHN0cmluZ1xuICAgICAgfCBgSGV4IG9mIHN0cmluZ1xuICAgICAgfCBgVmFyIG9mIHN0cmluZ1xuICAgICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgdG9fc3RyaW5nX2NzcyA6IFs8IHQgXSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgUkdCQSB7IFJHQkEucjsgZzsgYjsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IFslc3RyaW5nIFwicmdiKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9KVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZyBcInJnYmEoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0sJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgSFNMQSB7IEhTTEEuaDsgczsgbDsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbCgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUpXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsYSgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUsJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgTmFtZSBuYW1lIC0+IG5hbWVcbiAgICB8IGBIZXggaGV4IC0+IGhleFxuICAgIHwgYFZhciB2YXIgLT4gWyVzdHJpbmcgXCJ2YXIoJXt2YXJ9KVwiXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGlnbm1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMZWZ0XG4gICAgfCBgUmlnaHRcbiAgICB8IGBDZW50ZXIgKCogaG9yaXpvbnRhbCAqKVxuICAgIHwgYFRvcFxuICAgIHwgYEJvdHRvbVxuICAgIHwgYE1pZGRsZSAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYEp1c3RpZnkgKCogdGV4dC1hbGlnbiAoaW4gYWRkaXRpb24gdG8gW2hvcml6b250YWxdKSAqKVxuICAgIHwgYFN1cGVyICgqIHZlcnRpY2FsICopXG4gICAgfCBgU3ViICgqIHZlcnRpY2FsICopXG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBKdXN0aWZ5IC0+IFwianVzdGlmeVwiXG4gICAgfCBgVG9wIC0+IFwidG9wXCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBCb3R0b20gLT4gXCJib3R0b21cIlxuICAgIHwgYFN1cGVyIC0+IFwic3VwZXJcIlxuICAgIHwgYFN1YiAtPiBcInN1YlwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBSYXcgb2Ygc3RyaW5nXG4gICAgfCBgQ2ggb2YgZmxvYXRcbiAgICB8IGBSZW0gb2YgZmxvYXRcbiAgICB8IGBFbSBvZiBpbnRcbiAgICB8IGBFbV9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFBlcmNlbnQgb2YgUGVyY2VudC50XG4gICAgfCBgUHQgb2YgZmxvYXRcbiAgICB8IGBQeCBvZiBpbnRcbiAgICB8IGBQeF9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFZoIG9mIFBlcmNlbnQudFxuICAgIHwgYFZ3IG9mIFBlcmNlbnQudFxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgUmF3IHMgLT4gc1xuICAgIHwgYENoIGMgLT4gWyVzdHJpbmcgXCIle2YycyAyIGN9Y2hcIl1cbiAgICB8IGBSZW0gZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1yZW1cIl1cbiAgICB8IGBFbSBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1lbVwiXVxuICAgIHwgYEVtX2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9ZW1cIl1cbiAgICB8IGBQZXJjZW50IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9JVwiXVxuICAgIHwgYFB0IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIHB9cHRcIl1cbiAgICB8IGBQeCBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1weFwiXVxuICAgIHwgYFB4X2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cHhcIl1cbiAgICB8IGBWaCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZoXCJdXG4gICAgfCBgVncgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12d1wiXVxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5cbiAgbGV0IHBlcmNlbnQxMDAgPSBgUGVyY2VudCAoUGVyY2VudC5vZl9wZXJjZW50YWdlIDEwMC4pXG5lbmRcblxubW9kdWxlIEF1dG9fb3JfbGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQXV0b1xuICAgIHwgTGVuZ3RoLnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgI0xlbmd0aC50IGFzIGwgLT4gTGVuZ3RoLnRvX3N0cmluZ19jc3MgbFxuICA7O1xuZW5kXG5cbmxldCB2YWx1ZV9tYXAgbyB+ZiA9IE9wdGlvbi52YWx1ZV9tYXAgbyB+ZGVmYXVsdDpcIlwiIH5mXG5sZXQgY29tYmluZSB0MSB0MiA9IHQxIEAgdDJcbmxldCAoIEA+ICkgPSBjb21iaW5lXG5sZXQgY29uY2F0IGwgPSBMaXN0LmNvbmNhdCBsXG5sZXQgdG9fc3RyaW5nX2xpc3QgPSBGbi5pZFxuXG5sZXQgdG9fc3RyaW5nX2NzcyB0ID1cbiAgTGlzdC5tYXAgdCB+ZjooZnVuIChmaWVsZCwgdmFsdWUpIC0+IFslc3RyaW5nIFwiJXtmaWVsZH06ICV7dmFsdWV9XCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCI7XCJcbjs7XG5cbmxldCBvZl9zdHJpbmdfY3NzX2V4biBzID0gQ3NzX3BhcnNlci5wYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgfD4gT3JfZXJyb3Iub2tfZXhuXG5cbigqKiBjcmVhdGVfcmF3IGNyZWF0ZXMgYSBzaW5nbGUgZmllbGQsIHZhbHVlIHBhaXIuICBJdCBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIGlzIGEgdmFsaWRcbiAgICBjc3MgdmFsdWUuICBBcyBzdWNoIGl0IGlzIHVuc2FmZSB0byB1c2Ugd2l0aCBhcmJpdHJhcnkgdmFsdWUgc3RyaW5ncy4gIEJ1dCBmb3IgdGhlXG4gICAgdmFzdCBtYWpvcml0eSBvZiBjb21iaW5hdG9ycyBpbiB0aGlzIG1vZHVsZSBpdCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gdXNlLCBhcyB3ZSBrbm93XG4gICAgYnkgY29uc3RydWN0aW9uIHRoYXQgdGhlIHZhbHVlcyBkbyBub3QgbmVlZCBxdW90aW5nIC8gZXNjYXBpbmcuICopXG5sZXQgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlID0gWyBmaWVsZCwgdmFsdWUgXVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBzaG91bGRfdmFsaWRhdGUgPSByZWYgZmFsc2VcbmVuZFxuXG5sZXQgY3JlYXRlIH5maWVsZCB+dmFsdWUgPVxuICBpZiAhRXhwZXJ0LnNob3VsZF92YWxpZGF0ZSB0aGVuIENzc19wYXJzZXIudmFsaWRhdGVfdmFsdWUgdmFsdWUgfD4gT3JfZXJyb3Iub2tfZXhuO1xuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBlbXB0eSA9IFtdXG5sZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5sZXQgY3JlYXRlX3BsYWNlbWVudCBuYW1lIGxlbmd0aCA9IGNyZWF0ZSB+ZmllbGQ6bmFtZSB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGxlbmd0aClcbmxldCBsZWZ0ID0gY3JlYXRlX3BsYWNlbWVudCBcImxlZnRcIlxubGV0IHRvcCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJ0b3BcIlxubGV0IGJvdHRvbSA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJib3R0b21cIlxubGV0IHJpZ2h0ID0gY3JlYXRlX3BsYWNlbWVudCBcInJpZ2h0XCJcblxubGV0IHBvc2l0aW9uID90b3A6dHAgP2JvdHRvbTpidCA/bGVmdDpsdCA/cmlnaHQ6cnQgcG9zID1cbiAgbGV0IHBvcyA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgICB8IGBTdGF0aWMgLT4gXCJzdGF0aWNcIlxuICAgICAgfCBgQWJzb2x1dGUgLT4gXCJhYnNvbHV0ZVwiXG4gICAgICB8IGBTdGlja3kgLT4gXCJzdGlja3lcIlxuICAgICAgfCBgUmVsYXRpdmUgLT4gXCJyZWxhdGl2ZVwiXG4gICAgICB8IGBGaXhlZCAtPiBcImZpeGVkXCJcbiAgICBpblxuICAgIGNyZWF0ZSB+ZmllbGQ6XCJwb3NpdGlvblwiIH52YWx1ZVxuICBpblxuICBsZXQgY29udmVydCBvcHRfbCBmID0gT3B0aW9uLnZhbHVlX21hcCBvcHRfbCB+ZGVmYXVsdDplbXB0eSB+ZiBpblxuICBjb25jYXQgWyBwb3M7IGNvbnZlcnQgdHAgdG9wOyBjb252ZXJ0IGx0IGxlZnQ7IGNvbnZlcnQgcnQgcmlnaHQ7IGNvbnZlcnQgYnQgYm90dG9tIF1cbjs7XG5cbmxldCBib3hfc2l6aW5nIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYENvbnRlbnRfYm94IC0+IFwiY29udGVudC1ib3hcIlxuICAgIHwgYEJvcmRlcl9ib3ggLT4gXCJib3JkZXItYm94XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJveC1zaXppbmdcIiB+dmFsdWVcbjs7XG5cbmxldCBkaXNwbGF5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYElubGluZSAtPiBcImlubGluZVwiXG4gICAgfCBgQmxvY2sgLT4gXCJibG9ja1wiXG4gICAgfCBgSW5saW5lX2Jsb2NrIC0+IFwiaW5saW5lLWJsb2NrXCJcbiAgICB8IGBMaXN0X2l0ZW0gLT4gXCJsaXN0LWl0ZW1cIlxuICAgIHwgYFRhYmxlIC0+IFwidGFibGVcIlxuICAgIHwgYElubGluZV90YWJsZSAtPiBcImlubGluZS10YWJsZVwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEZsZXggLT4gXCJmbGV4XCJcbiAgICB8IGBJbmxpbmVfZmxleCAtPiBcImlubGluZS1mbGV4XCJcbiAgICB8IGBJbmxpbmVfZ3JpZCAtPiBcImlubGluZS1ncmlkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImRpc3BsYXlcIiB+dmFsdWVcbjs7XG5cbmxldCB2aXNpYmlsaXR5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidmlzaWJpbGl0eVwiIH52YWx1ZVxuOztcblxudHlwZSBvdmVyZmxvdyA9XG4gIFsgYFZpc2libGVcbiAgfCBgSGlkZGVuXG4gIHwgYFNjcm9sbFxuICB8IGBBdXRvXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgbWFrZV9vdmVyZmxvdyBmaWVsZCB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBTY3JvbGwgLT4gXCJzY3JvbGxcIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBvdmVyZmxvdyA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvd1wiXG5sZXQgb3ZlcmZsb3dfeCA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy14XCJcbmxldCBvdmVyZmxvd195ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXlcIlxubGV0IHpfaW5kZXggaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiei1pbmRleFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKVxubGV0IG9wYWNpdHkgaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3BhY2l0eVwiIH52YWx1ZTooZjJzIDYgaSlcblxubGV0IGNyZWF0ZV9sZW5ndGhfZmllbGQgZmllbGQgbCA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQXV0b19vcl9sZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuOztcblxubGV0IHdoaXRlX3NwYWNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTm93cmFwIC0+IFwibm93cmFwXCJcbiAgICB8IGBQcmUgLT4gXCJwcmVcIlxuICAgIHwgYFByZV9saW5lIC0+IFwicHJlLWxpbmVcIlxuICAgIHwgYFByZV93cmFwIC0+IFwicHJlLXdyYXBcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZSB+ZmllbGQ6XCJ3aGl0ZS1zcGFjZVwiIH52YWx1ZVxuOztcblxudHlwZSBmb250X3N0eWxlID1cbiAgWyBgTm9ybWFsXG4gIHwgYEl0YWxpY1xuICB8IGBPYmxpcXVlXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfd2VpZ2h0ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEJvbGRcbiAgfCBgQm9sZGVyXG4gIHwgYExpZ2h0ZXJcbiAgfCBgTnVtYmVyIG9mIGludFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3ZhcmlhbnQgPVxuICBbIGBOb3JtYWxcbiAgfCBgU21hbGxfY2Fwc1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IGZvbnRfc2l6ZSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJmb250LXNpemVcIlxubGV0IGZvbnRfZmFtaWx5IGwgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtZmFtaWx5XCIgfnZhbHVlOihTdHJpbmcuY29uY2F0IGwgfnNlcDpcIixcIilcblxubGV0IGZvbnRfc3R5bGUgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBJdGFsaWMgLT4gXCJpdGFsaWNcIlxuICAgIHwgYE9ibGlxdWUgLT4gXCJvYmxpcXVlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtc3R5bGVcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250X3dlaWdodCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOdW1iZXIgaSAtPiBJbnQudG9fc3RyaW5nIGlcbiAgICB8IGBCb2xkIC0+IFwiYm9sZFwiXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBMaWdodGVyIC0+IFwibGlnaHRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEJvbGRlciAtPiBcImJvbGRlclwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtd2VpZ2h0XCIgfnZhbHVlXG47O1xuXG5sZXQgYm9sZCA9IGZvbnRfd2VpZ2h0IGBCb2xkXG5cbmxldCBmb250X3ZhcmlhbnQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBTbWFsbF9jYXBzIC0+IFwic21hbGwtY2Fwc1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXZhcmlhbnRcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250IH5zaXplIH5mYW1pbHkgP3N0eWxlID93ZWlnaHQgP3ZhcmlhbnQgKCkgPVxuICBbIFNvbWUgKGZvbnRfc2l6ZSBzaXplKVxuICA7IFNvbWUgKGZvbnRfZmFtaWx5IGZhbWlseSlcbiAgOyBPcHRpb24ubWFwIHN0eWxlIH5mOmZvbnRfc3R5bGVcbiAgOyBPcHRpb24ubWFwIHdlaWdodCB+Zjpmb250X3dlaWdodFxuICA7IE9wdGlvbi5tYXAgdmFyaWFudCB+Zjpmb250X3ZhcmlhbnRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkIH5jb2xvciA9IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQ29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcilcbmxldCBjb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImNvbG9yXCIgfmNvbG9yXG5sZXQgYmFja2dyb3VuZF9jb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImJhY2tncm91bmQtY29sb3JcIiB+Y29sb3JcbmxldCBmaWxsIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiZmlsbFwiIH5jb2xvclxuXG50eXBlIHN0b3BzID0gKFBlcmNlbnQudCAqIENvbG9yLnQpIGxpc3RcblxudHlwZSBsaW5lYXJfZ3JhZGllbnQgPVxuICB7IGRpcmVjdGlvbiA6IFsgYERlZyBvZiBpbnQgXVxuICA7IHN0b3BzIDogc3RvcHNcbiAgfVxuXG50eXBlIHJhZGlhbF9ncmFkaWVudCA9IHsgc3RvcHMgOiBzdG9wcyB9XG5cbnR5cGUgYmFja2dyb3VuZF9pbWFnZSA9XG4gIFsgYFVybCBvZiBzdHJpbmdcbiAgfCBgTGluZWFyX2dyYWRpZW50IG9mIGxpbmVhcl9ncmFkaWVudFxuICB8IGBSYWRpYWxfZ3JhZGllbnQgb2YgcmFkaWFsX2dyYWRpZW50XG4gIF1cblxubGV0IHN0b3BzX3RvX3N0cmluZyBzdG9wcyA9XG4gIExpc3QubWFwIHN0b3BzIH5mOihmdW4gKHBjdCwgY29sb3IpIC0+XG4gICAgKCogTm90ZTogUGVyY2VudC50b19zdHJpbmcgcHJvZHVjZWQgZS5nLiBcIjB4XCIsIFwiMXhcIiwgd29uJ3Qgd29yayBoZXJlLiAqKVxuICAgIFslc3RyaW5nIFwiJXtDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yfSAle2YycyA2IChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcGN0KX0lXCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgYmFja2dyb3VuZF9pbWFnZSBzcGVjID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IGBVcmwgdXJsIC0+IFslc3RyaW5nIFwidXJsKCV7dXJsfSlcIl1cbiAgICB8IGBMaW5lYXJfZ3JhZGllbnQgeyBkaXJlY3Rpb24gPSBgRGVnIGRpcmVjdGlvbjsgc3RvcHMgfSAtPlxuICAgICAgWyVzdHJpbmcgXCJsaW5lYXItZ3JhZGllbnQoJXtkaXJlY3Rpb24jSW50fWRlZywgJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICAgIHwgYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzIH0gLT4gWyVzdHJpbmcgXCJyYWRpYWwtZ3JhZGllbnQoJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJhY2tncm91bmQtaW1hZ2VcIiB+dmFsdWVcbjs7XG5cbmxldCBjcmVhdGVfYWxpZ25tZW50IGZpZWxkIGEgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEFsaWdubWVudC50b19zdHJpbmdfY3NzIChhIDo+IEFsaWdubWVudC50KSlcbjs7XG5cbmxldCB0ZXh0X2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInRleHQtYWxpZ25cIlxubGV0IGhvcml6b250YWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwiaG9yaXpvbnRhbC1hbGlnblwiXG5sZXQgdmVydGljYWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidmVydGljYWwtYWxpZ25cIlxuXG5sZXQgZmxvYXQgZiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggZiB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZsb2F0XCIgfnZhbHVlXG47O1xuXG5sZXQgd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwid2lkdGhcIlxubGV0IG1pbl93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4td2lkdGhcIlxubGV0IG1heF93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtd2lkdGhcIlxubGV0IGhlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJoZWlnaHRcIlxubGV0IG1pbl9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLWhlaWdodFwiXG5sZXQgbWF4X2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtaGVpZ2h0XCJcbmxldCBwYWRkaW5nX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXRvcFwiXG5sZXQgcGFkZGluZ19ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1ib3R0b21cIlxubGV0IHBhZGRpbmdfbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWxlZnRcIlxubGV0IHBhZGRpbmdfcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1yaWdodFwiXG5cbmxldCBwYWRkaW5nID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjpwYWRkaW5nX3RvcFxuICA7IG0gYm90dG9tIH5mOnBhZGRpbmdfYm90dG9tXG4gIDsgbSBsZWZ0IH5mOnBhZGRpbmdfbGVmdFxuICA7IG0gcmlnaHQgfmY6cGFkZGluZ19yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX3BhZGRpbmcgbCA9IHBhZGRpbmcgfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5sZXQgbWFyZ2luX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tdG9wXCJcbmxldCBtYXJnaW5fYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1ib3R0b21cIlxubGV0IG1hcmdpbl9sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1sZWZ0XCJcbmxldCBtYXJnaW5fcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXJpZ2h0XCJcblxubGV0IG1hcmdpbiA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6bWFyZ2luX3RvcFxuICA7IG0gYm90dG9tIH5mOm1hcmdpbl9ib3R0b21cbiAgOyBtIGxlZnQgfmY6bWFyZ2luX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOm1hcmdpbl9yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX21hcmdpbiBsID0gbWFyZ2luIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxuXG50eXBlIGJvcmRlcl9zdHlsZSA9XG4gIFsgYE5vbmVcbiAgfCBgSGlkZGVuXG4gIHwgYERvdHRlZFxuICB8IGBEYXNoZWRcbiAgfCBgU29saWRcbiAgfCBgRG91YmxlXG4gIHwgYEdyb292ZVxuICB8IGBSaWRnZVxuICB8IGBJbnNldFxuICB8IGBPdXRzZXRcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbigqKiBDb25jYXQgMiB2YWx1ZXMgd2l0aCBhIHNwYWNlIGluIGJldHdlZW4uICBJZiBlaXRoZXIgaXMgdGhlIGVtcHR5IHN0cmluZ1xuICAgIGRvbid0IHB1dCBpbiB1bm5lY2Vzc2FyeSB3aGl0ZXNwYWNlLiAqKVxubGV0IGNvbmNhdDJ2IHYxIHYyID1cbiAgbWF0Y2ggdjEsIHYyIHdpdGhcbiAgfCBcIlwiLCB4IC0+IHhcbiAgfCB4LCBcIlwiIC0+IHhcbiAgfCB4LCB5IC0+IHggXiBcIiBcIiBeIHlcbjs7XG5cbigqKiBDb25jYXQgdXAgdG8gMyB2YWx1ZXMgd2l0aCBzcGFjZXMgaW4gYmV0d2Vlbi4gKilcbmxldCBjb25jYXQzdiB2MSB2MiB2MyA9IGNvbmNhdDJ2IChjb25jYXQydiB2MSB2MikgdjNcblxubGV0IGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH4oc3R5bGUgOiBib3JkZXJfc3R5bGUpICgpID1cbiAgbGV0IHN0eWxlID1cbiAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgfCBgUmlkZ2UgLT4gXCJyaWRnZVwiXG4gICAgfCBgT3V0c2V0IC0+IFwib3V0c2V0XCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgR3Jvb3ZlIC0+IFwiZ3Jvb3ZlXCJcbiAgICB8IGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbnNldCAtPiBcImluc2V0XCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYERvdWJsZSAtPiBcImRvdWJsZVwiXG4gICAgfCBgRG90dGVkIC0+IFwiZG90dGVkXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgU29saWQgLT4gXCJzb2xpZFwiXG4gIGluXG4gIGxldCB3aWR0aCA9IHZhbHVlX21hcCB3aWR0aCB+ZjpMZW5ndGgudG9fc3RyaW5nX2NzcyBpblxuICBsZXQgY29sb3IgPSB2YWx1ZV9tYXAgY29sb3IgfmY6Q29sb3IudG9fc3RyaW5nX2NzcyBpblxuICBjb25jYXQzdiB3aWR0aCBzdHlsZSBjb2xvclxuOztcblxubGV0IGNyZWF0ZV9ib3JkZXIgP3NpZGUgKCkgPVxuICBsZXQgZmllbGQgPVxuICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgIHwgU29tZSBgVG9wIC0+IFwiYm9yZGVyLXRvcFwiXG4gICAgfCBTb21lIGBCb3R0b20gLT4gXCJib3JkZXItYm90dG9tXCJcbiAgICB8IFNvbWUgYFJpZ2h0IC0+IFwiYm9yZGVyLXJpZ2h0XCJcbiAgICB8IFNvbWUgYExlZnQgLT4gXCJib3JkZXItbGVmdFwiXG4gICAgfCBOb25lIC0+IFwiYm9yZGVyXCJcbiAgaW5cbiAgZnVuID93aWR0aCA/Y29sb3IgfnN0eWxlICgpIC0+XG4gICAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkpXG47O1xuXG5sZXQgYm9yZGVyX3RvcCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YFRvcCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9ib3R0b20gP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBCb3R0b20gKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfbGVmdCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YExlZnQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfcmlnaHQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBSaWdodCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlciA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9IGNyZWF0ZV9ib3JkZXIgP3NpZGU6Tm9uZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAoKVxuXG5sZXQgb3V0bGluZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwib3V0bGluZVwiIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl9jb2xsYXBzZSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBTZXBhcmF0ZSAtPiBcInNlcGFyYXRlXCJcbiAgICB8IGBDb2xsYXBzZSAtPiBcImNvbGxhcHNlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJvcmRlci1jb2xsYXBzZVwiIH52YWx1ZVxuOztcblxubGV0IGJvcmRlcl9zcGFjaW5nID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImJvcmRlci1zcGFjaW5nXCJcbmxldCBib3JkZXJfcmFkaXVzIGwgPSBjcmVhdGUgfmZpZWxkOlwiYm9yZGVyLXJhZGl1c1wiIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbClcblxudHlwZSB0ZXh0X2RlY29yYXRpb25fbGluZSA9XG4gIFsgYE5vbmVcbiAgfCBgVW5kZXJsaW5lXG4gIHwgYE92ZXJsaW5lXG4gIHwgYExpbmVfdGhyb3VnaFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cbltAQGRlcml2aW5nIHNleHBdXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX3N0eWxlID1cbiAgWyBgU29saWRcbiAgfCBgRG91YmxlXG4gIHwgYERvdHRlZFxuICB8IGBEYXNoZWRcbiAgfCBgV2F2eVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cbltAQGRlcml2aW5nIHNleHBdXG5cbmxldCB0ZXh0X2RlY29yYXRpb24gP3N0eWxlID9jb2xvciB+bGluZSAoKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbGV0IGxpbmUgPVxuICAgICAgTGlzdC5tYXAgbGluZSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBgTGluZV90aHJvdWdoIC0+IFwibGluZS10aHJvdWdoXCJcbiAgICAgICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYE92ZXJsaW5lIC0+IFwib3ZlcmxpbmVcIlxuICAgICAgICB8IGBVbmRlcmxpbmUgLT4gXCJ1bmRlcmxpbmVcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiKVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gICAgaW5cbiAgICBsZXQgc3R5bGUgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBgU29saWQgLT4gXCJzb2xpZFwiXG4gICAgICB8IFNvbWUgYERvdWJsZSAtPiBcImRvdWJsZVwiXG4gICAgICB8IFNvbWUgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgICB8IFNvbWUgYERhc2hlZCAtPiBcImRhc2hlZFwiXG4gICAgICB8IFNvbWUgYFdhdnkgLT4gXCJ3YXZ5XCJcbiAgICAgIHwgU29tZSBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgfCBTb21lIGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgaW5cbiAgICBsZXQgY29sb3IgPSB2YWx1ZV9tYXAgY29sb3IgfmY6Q29sb3IudG9fc3RyaW5nX2NzcyBpblxuICAgIGNvbmNhdDN2IGxpbmUgc3R5bGUgY29sb3JcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ0ZXh0LWRlY29yYXRpb25cIiB+dmFsdWVcbjs7XG5cbnR5cGUgaXRlbV9hbGlnbm1lbnQgPVxuICBbIGBBdXRvXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYEJhc2VsaW5lXG4gIHwgYFN0cmV0Y2hcbiAgXVxuXG5sZXQgaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUganVzdGlmeV9jb250ZW50ID1cbiAgWyBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgU3BhY2VfYmV0d2VlblxuICB8IGBTcGFjZV9hcm91bmRcbiAgfCBgU3BhY2VfZXZlbmx5XG4gIF1cblxubGV0IGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuOztcblxubGV0IGZsZXhfY29udGFpbmVyXG4gICAgICA/KGlubGluZSA9IGZhbHNlKVxuICAgICAgPyhkaXJlY3Rpb24gPSBgUm93KVxuICAgICAgPyh3cmFwID0gYE5vd3JhcClcbiAgICAgID9hbGlnbl9pdGVtc1xuICAgICAgP2p1c3RpZnlfY29udGVudFxuICAgICAgKClcbiAgPVxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICAgIHwgYFJvdyAtPiBcInJvd1wiXG4gICAgfCBgUm93X3JldmVyc2UgLT4gXCJyb3ctcmV2ZXJzZVwiXG4gICAgfCBgQ29sdW1uIC0+IFwiY29sdW1uXCJcbiAgICB8IGBDb2x1bW5fcmV2ZXJzZSAtPiBcImNvbHVtbi1yZXZlcnNlXCJcbiAgaW5cbiAgbGV0IHdyYXAgPVxuICAgIG1hdGNoIHdyYXAgd2l0aFxuICAgIHwgYE5vd3JhcCAtPiBcIm5vd3JhcFwiXG4gICAgfCBgV3JhcCAtPiBcIndyYXBcIlxuICAgIHwgYFdyYXBfcmV2ZXJzZSAtPiBcIndyYXAtcmV2ZXJzZVwiXG4gIGluXG4gIGxldCBhbGlnbl9pdGVtcyA9XG4gICAgbWF0Y2ggYWxpZ25faXRlbXMgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24taXRlbXNcIiB+dmFsdWU6KGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IGp1c3RpZnlfY29udGVudCA9XG4gICAgbWF0Y2gganVzdGlmeV9jb250ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJqdXN0aWZ5LWNvbnRlbnRcIiB+dmFsdWU6KGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGNvbmNhdFxuICAgIFsgZGlzcGxheSAoaWYgaW5saW5lIHRoZW4gYElubGluZV9mbGV4IGVsc2UgYEZsZXgpXG4gICAgOyBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtZGlyZWN0aW9uXCIgfnZhbHVlOmRpcmVjdGlvblxuICAgIDsgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4LXdyYXBcIiB+dmFsdWU6d3JhcFxuICAgIDsgYWxpZ25faXRlbXNcbiAgICA7IGp1c3RpZnlfY29udGVudFxuICAgIF1cbjs7XG5cbmxldCBmbGV4X2l0ZW0gP29yZGVyID8oYmFzaXMgPSBgQXV0bykgPyhzaHJpbmsgPSAxLikgfmdyb3cgKCkgPVxuICBsZXQgb3JkZXIgPVxuICAgIE9wdGlvbi5tYXAgb3JkZXIgfmY6KGZ1biBpIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3JkZXJcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICB8PiBMaXN0LmpvaW5cbiAgaW5cbiAgbGV0IGZsZXggPVxuICAgIGxldCBiYXNpcyA9IEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgYmFzaXMgaW5cbiAgICBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXhcIiB+dmFsdWU6WyVzdHJpbmcgXCIle2YycyA2IGdyb3d9ICV7ZjJzIDYgc2hyaW5rfSAle2Jhc2lzfVwiXVxuICBpblxuICBjb25jYXQgWyBmbGV4OyBvcmRlciBdXG47O1xuXG5sZXQgYWxpZ25fc2VsZiBhID1cbiAgbGV0IHZhbHVlID0gaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tc2VsZlwiIH52YWx1ZVxuOztcblxubGV0IHJlc2l6ZSAodmFsdWUgOiBbIGBOb25lIHwgYEJvdGggfCBgSG9yaXpvbnRhbCB8IGBWZXJ0aWNhbCB8IGNzc19nbG9iYWxfdmFsdWVzIF0pID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICB8IGBIb3Jpem9udGFsIC0+IFwiaG9yaXpvbnRhbFwiXG4gICAgfCBgVmVydGljYWwgLT4gXCJ2ZXJ0aWNhbFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJyZXNpemVcIiB+dmFsdWVcbjs7XG5cbmxldCBhbmltYXRpb24gfm5hbWUgfmR1cmF0aW9uID9kZWxheSA/ZGlyZWN0aW9uID9maWxsX21vZGUgP2l0ZXJfY291bnQgP3RpbWluZ19mdW5jdGlvbiAoKVxuICA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBsZXQgc3Bhbl90b19zdHJpbmcgcyA9IFslc3RyaW5nIFwiJXtmMnMgMiAoVGltZV9ucy5TcGFuLnRvX3NlYyBzKX1zXCJdIGluXG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIG0gZGlyZWN0aW9uIH5mOihmdW4gZCAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgICAgIHwgYFJldmVyc2UgLT4gXCJyZXZlcnNlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlX3JldmVyc2UgLT4gXCJhbHRlcm5hdGUtcmV2ZXJzZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRpcmVjdGlvblwiIH52YWx1ZSlcbiAgaW5cbiAgbGV0IGZpbGxfbW9kZSA9XG4gICAgbSBmaWxsX21vZGUgfmY6KGZ1biBmIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgICAgICB8IGBGb3J3YXJkcyAtPiBcImZvcndhcmRzXCJcbiAgICAgICAgfCBgQmFja3dhcmRzIC0+IFwiYmFja3dhcmRzXCJcbiAgICAgICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1maWxsLW1vZGVcIiB+dmFsdWUpXG4gIGluXG4gIFsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tbmFtZVwiIH52YWx1ZTpuYW1lKVxuICA7IFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBkdXJhdGlvbikpXG4gIDsgbSBkZWxheSB+ZjooZnVuIHMgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGVsYXlcIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIHMpKVxuICA7IG0gaXRlcl9jb3VudCB+ZjooZnVuIGkgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgOyBtIHRpbWluZ19mdW5jdGlvbiB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiB+dmFsdWUpXG4gIDsgZGlyZWN0aW9uXG4gIDsgZmlsbF9tb2RlXG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxudHlwZSB1c2VyX3NlbGVjdCA9XG4gIFsgYEFsbFxuICB8IGBBdXRvXG4gIHwgYE5vbmVcbiAgfCBgVGV4dFxuICBdXG5cbmxldCB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbjs7XG5cbmxldCB1c2VyX3NlbGVjdCBzID1cbiAgbGV0IHZhbHVlID0gdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyBzIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidXNlci1zZWxlY3RcIiB+dmFsdWVcbjs7XG5cblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidG9fc3RyaW5nX2NzcyAtPiBvZl9zdHJpbmdfY3NzX2V4biAtPiB0b19zdHJpbmdfY3NzXCIgPVxuICAgICAgbGV0IHQgY3NzID1cbiAgICAgICAgbGV0IHMgPSB0b19zdHJpbmdfY3NzIGNzcyBpblxuICAgICAgICBsZXQgczIgPSB0b19zdHJpbmdfY3NzIChvZl9zdHJpbmdfY3NzX2V4biBzKSBpblxuICAgICAgICBwcmludF9lbmRsaW5lIHM7XG4gICAgICAgIHByaW50X2VuZGxpbmUgczJcbiAgICAgIGluXG4gICAgICB0IChmbGV4X2l0ZW0gfmdyb3c6MS4wICgpIEA+IG92ZXJmbG93IGBTY3JvbGwpO1xuICAgICAgdCAoZmxleF9jb250YWluZXIgfmlubGluZTp0cnVlIH5kaXJlY3Rpb246YENvbHVtbiAoKSBAPiBib3JkZXIgfnN0eWxlOmBEYXNoZWQgKCkpO1xuICAgICAgdCAoY29sb3IgKGBSR0JBIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6MTAwIH5iOjEwMCAoKSkpKTtcbiAgICAgIHRcbiAgICAgICAgKGNvbG9yXG4gICAgICAgICAgIChgSFNMQVxuICAgICAgICAgICAgICAoQ29sb3IuSFNMQS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgfmg6MTAwXG4gICAgICAgICAgICAgICAgIH5zOihQZXJjZW50Lm9mX211bHQgMC43NSlcbiAgICAgICAgICAgICAgICAgfmw6KFBlcmNlbnQub2ZfbXVsdCAwLjYwKVxuICAgICAgICAgICAgICAgICAoKSkpKTtcbiAgICAgIHQgKGNyZWF0ZSB+ZmllbGQ6XCJjb250ZW50XCIgfnZhbHVlOnt8XCI7XCJ8fSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb250ZW50OiBcIjtcIlxuICAgIGNvbnRlbnQ6IFwiO1wiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJncmFkaWVudHNcIiA9XG4gICAgICBsZXQgcCB4ID0gUGVyY2VudC5vZl9tdWx0IHggaW5cbiAgICAgIGxldCBjIHMgPSBgTmFtZSBzIGluXG4gICAgICBsZXQgdCBjc3MgPSBwcmludF9lbmRsaW5lICh0b19zdHJpbmdfY3NzIGNzcykgaW5cbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBMaW5lYXJfZ3JhZGllbnRcbiAgICAgICAgICAgICAgeyBkaXJlY3Rpb24gPSBgRGVnIDkwXG4gICAgICAgICAgICAgIDsgc3RvcHMgPVxuICAgICAgICAgICAgICAgICAgWyBwIDAuLCBjIFwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuMiwgYyBcIiNmZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuNCwgYyBcInJlZFwiXG4gICAgICAgICAgICAgICAgICA7ICggcCAxLlxuICAgICAgICAgICAgICAgICAgICAsIGBSR0JBXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjUwIH5iOjMwIH5hOihQZXJjZW50Lm9mX211bHQgMC43NSkgKCkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCBibGFjayAwLjAwMDAwMCUsICNmZjAwMDAgMjAuMDAwMDAwJSwgcmVkIDQwLjAwMDAwMCUsIHJnYmEoMTAwLDUwLDMwLDAuNzUpIDEwMC4wMDAwMDAlKSB8fV07XG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgPSBbIHAgMC4sIGMgXCJibGFja1wiOyBwIDEuLCBjIFwicmVkXCIgXSB9KSk7XG4gICAgICBbJWV4cGVjdCB7fCBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoYmxhY2sgMC4wMDAwMDAlLCByZWQgMTAwLjAwMDAwMCUpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBUaGUgZ2VuX2pzX2FwaSBpcyByZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgYW4gTUlULWxpa2UgbGljZW5zZS4gICAgICopXG4oKiBTZWUgdGhlIGF0dGFjaGVkIExJQ0VOU0UgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBDb3B5cmlnaHQgMjAxNSBieSBMZXhpRmkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG5cbigqIFRoaXMgbW9kdWxlIChtb3N0bHkpIGFic3RyYWN0cyBhd2F5IGZyb20ganNfb2Zfb2NhbWwgZW5jb2Rpbmcgb2ZcbiAgIE9DYW1sIHZhbHVlcy4gIEl0IHNlcnZlcyBhcyBhIHN1cHBvcnQgbGlicmFyeSBmb3IgdGhlIGNvZGUgZ2VuZXJhdGVkXG4gICBieSBnZW5fanNfYXBpLlxuXG4gICBUaGUgbW9kdWxlIGNvdWxkIG1vc3RseSBiZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YganNfb2Zfb2NhbWwncyBKcyBtb2R1bGVcbiAgIChhbmQgaW4gcGFydGljdWxhciBKcy5VbnNhZmUpLCBidXQgd2UgcHJlZmVyIHRvIGRyb3AgdGhlIGRlcGVuZGVuY3lcbiAgIHRvIGpzX29mX29jYW1sJ3MgbGlicmFyeSBhbmQgdG8gcmVseSBvbmx5IG9uIGl0cyBjb21waWxlciBhbmQgSlNcbiAgIHJ1bnRpbWUgY29kZS5cbiopXG5cblxudHlwZSB0XG5cbmV4dGVybmFsIHRfb2ZfanM6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfdG9fanM6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuZXh0ZXJuYWwgc3RyaW5nX29mX2pzOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgc3RyaW5nX3RvX2pzOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludF9vZl9qczogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpbnRfdG9fanM6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5leHRlcm5hbCBib29sX29mX2pzOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5leHRlcm5hbCBib29sX3RvX2pzOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfanM6IHQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBmbG9hdF90b19qczogZmxvYXQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuZXh0ZXJuYWwgb2JqOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG5leHRlcm5hbCB2YXJpYWJsZTogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfdmFyXCJcblxuZXh0ZXJuYWwgZ2V0OiB0IC0+IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXQ6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlOiB0IC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbmV4dGVybmFsIGdldF9wcm9wOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0X3Byb3A6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcbmV4dGVybmFsIGRlbGV0ZV9wcm9wOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG5leHRlcm5hbCBnZXRfcHJvcF9hc2NpaTogdCAtPiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0X3Byb3BfYXNjaWk6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlX3Byb3BfYXNjaWk6IHQgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuZXh0ZXJuYWwgaW50ZXJuYWxfdHlwZV9vZjogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5sZXQgdHlwZV9vZiB4ID0gc3RyaW5nX29mX2pzIChpbnRlcm5hbF90eXBlX29mIHgpXG5cbmV4dGVybmFsIGludGVybmFsX2luc3RhbmNlX29mOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcbmxldCBpbnN0YW5jZV9vZiB4IH5jb25zdHIgPSBib29sX29mX2pzIChpbnRlcm5hbF9pbnN0YW5jZV9vZiB4IGNvbnN0cilcblxuZXh0ZXJuYWwgcHVyZV9qc19leHByOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxubGV0IG51bGwgPSBwdXJlX2pzX2V4cHIgXCJudWxsXCJcbmxldCB1bmRlZmluZWQgPSBwdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG5leHRlcm5hbCBlcXVhbHM6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbmxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJqb29fZ2xvYmFsX29iamVjdFwiXG5cbmV4dGVybmFsIG5ld19vYmo6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbmV4dGVybmFsIGNhbGw6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuZXh0ZXJuYWwgYXBwbHk6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxubGV0IGFycmF5X21ha2UgbiA9IG5ld19vYmogKGdldF9wcm9wX2FzY2lpIGdsb2JhbCBcIkFycmF5XCIpIFt8aW50X3RvX2pzIG58XVxubGV0IGFycmF5X2dldCB0IGkgPSBnZXRfcHJvcCB0IChpbnRfdG9fanMgaSlcbmxldCBhcnJheV9zZXQgdCBpIHggPSBzZXRfcHJvcCB0IChpbnRfdG9fanMgaSkgeFxuXG5sZXQgYXJyYXlfb2ZfanNfZnJvbSBmIG9ianMgc3RhcnQgPVxuICBsZXQgbiA9IGludF9vZl9qcyAoZ2V0X3Byb3BfYXNjaWkgb2JqcyBcImxlbmd0aFwiKSBpblxuICBBcnJheS5pbml0IChuIC0gc3RhcnQpIChmdW4gaSAtPiBmIChhcnJheV9nZXQgb2JqcyAoc3RhcnQgKyBpKSkpXG5cbmxldCBhcnJheV9vZl9qcyBmIG9ianMgPSBhcnJheV9vZl9qc19mcm9tIGYgb2JqcyAwXG5cbmxldCBhcnJheV90b19qcyBmIGFyciA9XG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIGFyciBpblxuICBsZXQgYSA9IGFycmF5X21ha2UgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBhcnJheV9zZXQgYSBpIChmIGFyci4oaSkpXG4gIGRvbmU7XG4gIGFcblxubGV0IGxpc3Rfb2ZfanNfZnJvbSBmIG9ianMgc3RhcnQgPSBBcnJheS50b19saXN0IChhcnJheV9vZl9qc19mcm9tIGYgb2JqcyBzdGFydClcblxubGV0IGxpc3Rfb2ZfanMgZiBvYmpzID0gbGlzdF9vZl9qc19mcm9tIGYgb2JqcyAwXG5cbmxldCBsaXN0X3RvX2pzIGYgbCA9XG4gIGFycmF5X3RvX2pzIGYgKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IG9wdGlvbl9vZl9qcyBmIHggPVxuICBpZiBlcXVhbHMgeCBudWxsIHx8IHggPT0gdW5kZWZpbmVkIHRoZW4gTm9uZVxuICBlbHNlIFNvbWUgKGYgeClcblxubGV0IG9wdGlvbl90b19qcyBmID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4gZiB4XG4gIHwgTm9uZSAtPiBudWxsXG5cbmxldCB1bml0X3RvX2pzICgpID0gdW5kZWZpbmVkXG5sZXQgdW5pdF9vZl9qcyBfID0gKClcblxuY2xhc3Mgb2JqICh4OnQpID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHRvX2pzID0geFxuICBlbmRcblxuZXh0ZXJuYWwgZnVuX3RvX2pzOiBpbnQgLT4gKHQgLT4gJ2EpIC0+IHQgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuZXh0ZXJuYWwgZnVuX3RvX2pzX2FyZ3M6ICh0IC0+ICdhKSAtPiB0ID0gXCJjYW1sX29qc193cmFwX2Z1bl9hcmd1bWVudHNcIlxuXG5sZXQgaGFzX3Byb3BlcnR5IG8geCA9XG4gIHR5cGVfb2YgbyA9IFwib2JqZWN0XCIgJiYgbyAhPSBudWxsXG4gICYmIGdldF9wcm9wIG8gKHN0cmluZ190b19qcyB4KSAhPSB1bmRlZmluZWRcblxuZXh0ZXJuYWwgbmV3X29ial9hcnI6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxubGV0IGVtcHR5X29iaiAoKSA9IG5ld19vYmogKGdldF9wcm9wX2FzY2lpIGdsb2JhbCBcIk9iamVjdFwiKSBbfHxdXG5cbmV4dGVybmFsIGl0ZXJfcHJvcGVydGllc191bnR5cGVkIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfb2pzX2l0ZXJhdGVfcHJvcGVydGllc1wiXG5sZXQgaXRlcl9wcm9wZXJ0aWVzIHggZiA9XG4gIGl0ZXJfcHJvcGVydGllc191bnR5cGVkIHggKGZ1bl90b19qcyAxIChmdW4geCAtPiBmIChzdHJpbmdfb2ZfanMgeCkpKVxuXG5sZXQgYXBwbHlfYXJyIG8gYXJyID0gY2FsbCBvIFwiYXBwbHlcIiBbfCBudWxsOyBhcnIgfF1cbmxldCBjYWxsX2FyciBvIHMgYXJyID0gY2FsbCAoZ2V0X3Byb3AgbyAoc3RyaW5nX3RvX2pzIHMpKSBcImFwcGx5XCIgW3wgbzsgYXJyIHxdXG5cbmxldCBpc19udWxsIHggPVxuICBlcXVhbHMgeCBudWxsXG5cbmxldCBvYmpfdHlwZSB4ID1cbiAgc3RyaW5nX29mX2pzIChjYWxsIChwdXJlX2pzX2V4cHIgXCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nXCIpIFwiY2FsbFwiIFt8eHxdKVxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUganMgOj0gdFxuICB0eXBlIHRcbiAgdmFsIHRfdG9fanMgOiB0IC0+IGpzXG4gIHZhbCB0X29mX2pzIDoganMgLT4gdFxuZW5kXG5cbigqIE9qcy5UIGluc3RhbmNlcyBmb3IgYnVpbHQtaW4gdHlwZXMgKilcbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCB0X3RvX2pzID0gaW50X3RvX2pzXG4gIGxldCB0X29mX2pzID0gaW50X29mX2pzXG4gZW5kXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdF90b19qcyA9IHN0cmluZ190b19qc1xuICBsZXQgdF9vZl9qcyA9IHN0cmluZ19vZl9qc1xuZW5kXG5tb2R1bGUgQm9vbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sXG4gIGxldCB0X3RvX2pzID0gYm9vbF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGJvb2xfb2ZfanNcbmVuZFxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG4gIGxldCB0X3RvX2pzID0gZmxvYXRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBmbG9hdF9vZl9qc1xuZW5kXG5tb2R1bGUgQXJyYXkgKEE6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IEEudCBhcnJheVxuICBsZXQgdF90b19qcyA9IGFycmF5X3RvX2pzIEEudF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGFycmF5X29mX2pzIEEudF9vZl9qc1xuZW5kXG5tb2R1bGUgTGlzdCAoQTogVCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQS50IGxpc3RcbiAgbGV0IHRfdG9fanMgPSBsaXN0X3RvX2pzIEEudF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGxpc3Rfb2ZfanMgQS50X29mX2pzXG5lbmRcbm1vZHVsZSBPcHRpb24gKEE6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IEEudCBvcHRpb25cbiAgbGV0IHRfdG9fanMgPSBvcHRpb25fdG9fanMgQS50X3RvX2pzXG4gIGxldCB0X29mX2pzID0gb3B0aW9uX29mX2pzIEEudF9vZl9qc1xuZW5kXG4iLCIoKiBUaGUgZ2VuX2pzX2FwaSBpcyByZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgYW4gTUlULWxpa2UgbGljZW5zZS4gICAgICopXG4oKiBTZWUgdGhlIGF0dGFjaGVkIExJQ0VOU0UgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBDb3B5cmlnaHQgMjAxNSBieSBMZXhpRmkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG5cbnR5cGUgdCA9IEpzb29fcnVudGltZS5FcnJvci50XG5cbmV4dGVybmFsIGNvZXJjZSA6IHQgLT4gT2pzLnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgbmFtZSB4ID0gT2pzLnN0cmluZ19vZl9qcyAoT2pzLmdldF9wcm9wX2FzY2lpIChjb2VyY2UgeCkgXCJuYW1lXCIpXG5sZXQgbWVzc2FnZSB4ID0gT2pzLnN0cmluZ19vZl9qcyAoT2pzLmdldF9wcm9wX2FzY2lpIChjb2VyY2UgeCkgXCJtZXNzYWdlXCIpXG5sZXQgc3RhY2sgeCA9IE9qcy5vcHRpb25fb2ZfanMgT2pzLnN0cmluZ19vZl9qcyAoT2pzLmdldF9wcm9wX2FzY2lpIChjb2VyY2UgeCkgXCJzdGFja1wiKVxubGV0IHRvX3N0cmluZyB4ID0gT2pzLnN0cmluZ19vZl9qcyAoT2pzLmNhbGwgKGNvZXJjZSB4KSBcInRvU3RyaW5nXCIgW3x8XSlcblxuZXhjZXB0aW9uIEVycm9yID0gSnNvb19ydW50aW1lLkVycm9yLkV4blxuXG5sZXQgKCkgPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBFcnJvciB4IC0+IFNvbWUgKHRvX3N0cmluZyB4KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCB0b19qc19zdHJpbmcgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9TdHJpbmdcbmxldCB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRml4ZWQgZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9QcmVjaXNpb24gZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRXhwb25lbnRpYWxcbmxldCB0b19zdHJpbmcgdmFsdWUgPSB0b19qc19zdHJpbmcgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG9wZW4gQ29yZSBpblxuICBsZXQgcHJpbnQgZiA9IHByaW50ZiBcIiVzXCIgKHRvX3N0cmluZyBmKSBpblxuICBwcmludCAxLjtcbiAgWyVleHBlY3Qge3wgMSB8fV07XG4gIHByaW50IEZsb2F0Lm5hbjtcbiAgWyVleHBlY3Qge3wgTmFOIHx9XTtcbiAgcHJpbnQgRmxvYXQuaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IEluZmluaXR5IHx9XTtcbiAgcHJpbnQgRmxvYXQubmVnX2luZmluaXR5O1xuICBbJWV4cGVjdCB7fCAtSW5maW5pdHkgfH1dO1xuICBwcmludCAwLjAwMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxZS04IHx9XTtcbiAgcHJpbnQgKC0xLik7XG4gIFslZXhwZWN0IHt8IC0xIHx9XTtcbiAgcHJpbnQgMS4wMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxLjAwMDAwMDEgfH1dXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5pbmNsdWRlIFVpX2VmZmVjdFxuXG4oKiBBbGwgdmlzaWJpbGl0eSBoYW5kbGVycyBzZWUgYWxsIGV2ZW50cywgc28gYSBzaW1wbGUgbGlzdCBpcyBlbm91Z2guICAqKVxubGV0IHZpc2liaWxpdHlfaGFuZGxlcnMgOiAodW5pdCAtPiB1bml0KSBsaXN0IHJlZiA9IHJlZiBbXVxuXG5tb2R1bGUgdHlwZSBWaXNpYmlsaXR5X2hhbmRsZXIgPSBzaWdcbiAgdmFsIGhhbmRsZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBEZWZpbmVfdmlzaWJpbGl0eSAoVkggOiBWaXNpYmlsaXR5X2hhbmRsZXIpID0gc3RydWN0XG4gIGxldCAoKSA9IHZpc2liaWxpdHlfaGFuZGxlcnMgOj0gVkguaGFuZGxlIDo6ICF2aXNpYmlsaXR5X2hhbmRsZXJzXG5lbmRcblxudHlwZSBfIHQgKz1cbiAgfCBWaWV3cG9ydF9jaGFuZ2VkXG4gIHwgU3RvcF9wcm9wYWdhdGlvblxuICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uXG4gIHwgUHJldmVudF9kZWZhdWx0XG5cbmxldCBzZXF1ZW5jZV9hc19zaWJsaW5nIGxlZnQgfnVubGVzc19zdG9wcGVkID1cbiAgbGV0IHJlYyBjb250YWluc19zdG9wID0gZnVuY3Rpb25cbiAgICB8IE1hbnkgZXMgLT4gTGlzdC5leGlzdHMgZXMgfmY6Y29udGFpbnNfc3RvcFxuICAgIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBjb250YWluc19zdG9wIGxlZnQgdGhlbiBsZWZ0IGVsc2UgVWlfZWZmZWN0Lk1hbnkgWyBsZWZ0OyB1bmxlc3Nfc3RvcHBlZCAoKSBdXG47O1xuXG4oKiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZG9tIGV2ZW50IGhlcmUgc28gdGhhdFxuICAgbW92ZW1lbnQgYmV0d2VlbiBbVmRvbS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0gYW5kXG4gICBbVWlfY29uY3JldGUuRWZmZWN0LkV4cGVydC5oYW5kbGVdIGtlZXBzIHRoZSBvcmlnaW5hbFxuICAgZG9tIGV2ZW50IGFyb3VuZC4gKilcbmxldCBjdXJyZW50X2RvbV9ldmVudCA9IHJlZiBOb25lXG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6Q2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFZpZXdwb3J0X2NoYW5nZWQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBMaXN0Lml0ZXIgIXZpc2liaWxpdHlfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgKCkpKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgU3RvcF9wcm9wYWdhdGlvbikpXG4gICAgfmRhdGE6KGZ1biBfIC0+IE9wdGlvbi5pdGVyICFjdXJyZW50X2RvbV9ldmVudCB+ZjpEb21faHRtbC5zdG9wUHJvcGFnYXRpb24pXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OkNhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBQcmV2ZW50X2RlZmF1bHQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tLnByZXZlbnREZWZhdWx0KVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuID0gRXhwZXJ0LmhhbmRsZVxuXG4gIGxldCBoYW5kbGUgZG9tX2V2ZW50IGV2ZW50ID1cbiAgICBsZXQgb2xkID0gIWN1cnJlbnRfZG9tX2V2ZW50IGluXG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gU29tZSAoZG9tX2V2ZW50IDo+IERvbV9odG1sLmVsZW1lbnQgRG9tLmV2ZW50IEpzLnQpO1xuICAgIEV4cGVydC5oYW5kbGUgZXZlbnQ7XG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gb2xkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEpzX29mX29jYW1sXG5cbm1vZHVsZSB0eXBlIFMgPSBIb29rc19pbnRmLlNcblxubGV0IGNhbmNlbF9hbmltYXRpb25fZnJhbWUgaWQgPSBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGlkXG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBmID1cbiAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKEpzLndyYXBfY2FsbGJhY2sgZilcbjs7XG5cbm1vZHVsZSBFeHRyYSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgdHlwZV9pZCA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgICAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IHR5cGVfaWQ7IHZhbHVlIH0pID0gVHlwZV9lcXVhbC5JZC50b19zZXhwIHR5cGVfaWQgdmFsdWVcbmVuZFxuXG50eXBlIHQgPVxuICB8IFQgOlxuICAgICAgeyBpbnB1dCA6ICdpbnB1dFxuICAgICAgOyBpbnB1dF9pZCA6ICdpbnB1dCBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgY29tYmluZV9pbnB1dHMgOiAnaW5wdXQgLT4gJ2lucHV0IC0+ICdpbnB1dFxuICAgICAgOyBpbml0IDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyB1cGRhdGUgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgZGVzdHJveSA6XG4gICAgICAgICAgJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiB1bml0XG4gICAgICA7IGlkIDogKCdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlKSBDb3JlLlR5cGVfZXF1YWwuSWQudFxuICAgICAgfVxuICAgICAgLT4gdFxuXG5sZXQgZ2VuZXJpY19ob29rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIkdlbmVyaWNIb29rXCIpKVxuXG5sZXQgbWFrZV9ob29rIH5jb21iaW5lX2lucHV0cyB+aW5pdCB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZCkgfnVwZGF0ZSB+ZGVzdHJveSB+aWQgPVxuICBUIHsgaW5pdDsgY29tYmluZV9pbnB1dHM7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZCB9XG47O1xuXG5sZXQgcGFjayAoVCB7IGluaXQ7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZDsgXyB9KSA9XG4gIGxldCB3cmFwIGEgPSBhIHw+IEpzLndyYXBfY2FsbGJhY2sgfD4gSnMuVW5zYWZlLmluamVjdCBpblxuICBsZXQgaW5pdCA9IHdyYXAgKGluaXQgaW5wdXQpIGluXG4gIGxldCB1cGRhdGUgPSB3cmFwICh1cGRhdGUgaW5wdXQpIGluXG4gIGxldCBkZXN0cm95ID0gd3JhcCBkZXN0cm95IGluXG4gIGxldCBnZW5lcmljX2hvb2sgPSBMYXp5LmZvcmNlIGdlbmVyaWNfaG9vayBpblxuICBsZXQgZXh0cmEgPSBFeHRyYS5UIHsgdHlwZV9pZCA9IGlucHV0X2lkOyB2YWx1ZSA9IGlucHV0IH0gaW5cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgZ2VuZXJpY19ob29rXG4gICAgW3wgaW5pdDsgdXBkYXRlOyBkZXN0cm95OyBpZCB8PiBKcy5VbnNhZmUuaW5qZWN0OyBleHRyYSB8PiBKcy5VbnNhZmUuaW5qZWN0IHxdXG47O1xuXG5sZXQgY29tYmluZSAoVCBsZWZ0KSAoVCByaWdodCkgPVxuICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsZWZ0LmlucHV0X2lkIHJpZ2h0LmlucHV0X2lkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZXByaW50X3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImhvb2tzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUsIHNvIHRoZXkgY2Fubm90IGJlIGNvbWJpbmVkOyB0YWtpbmcgdGhlIHNlY29uZCBcXFxuICAgICAgICAgb2YgdGhlIHR3b1wiXTtcbiAgICBUIHJpZ2h0XG4gIHwgU29tZSBUIC0+IFQgeyByaWdodCB3aXRoIGlucHV0ID0gcmlnaHQuY29tYmluZV9pbnB1dHMgbGVmdC5pbnB1dCByaWdodC5pbnB1dCB9XG47O1xuXG5tb2R1bGUgTWFrZSAoUyA6IFMpID0gc3RydWN0XG4gIGxldCBpbnB1dF9hbmRfc3RhdGVfaWQgPVxuICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgKGZ1biAoaW5wdXQsIF9hbmltYXRpb25faWQsIHN0YXRlKSAtPlxuICAgICAgWyVzZXhwX29mOiBTLklucHV0LnQgKiBvcGFxdWVdIChpbnB1dCwgc3RhdGUpKVxuICA7O1xuXG4gIGxldCBpbnB1dF9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgUy5JbnB1dC5zZXhwX29mX3RcblxuICBsZXQgaW5pdCBpbnB1dCBlbGVtZW50ID1cbiAgICBsZXQgc3RhdGUgPSBTLmluaXQgaW5wdXQgZWxlbWVudCBpblxuICAgIGxldCBhbmltYXRpb25faWQgPVxuICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgKGZ1biBfIC0+IFMub25fbW91bnQgaW5wdXQgc3RhdGUgZWxlbWVudClcbiAgICBpblxuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBpbnB1dCAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBTLnVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6aW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCBkZXN0cm95IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIGNhbmNlbF9hbmltYXRpb25fZnJhbWUgYW5pbWF0aW9uX2lkO1xuICAgIFMuZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudFxuICA7O1xuXG4gIGxldCBjcmVhdGUgaW5wdXQgPVxuICAgIG1ha2VfaG9va1xuICAgICAgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpXG4gICAgICB+Y29tYmluZV9pbnB1dHM6Uy5JbnB1dC5jb21iaW5lXG4gICAgICB+aWQ6aW5wdXRfYW5kX3N0YXRlX2lkXG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZVxuICAgICAgfmRlc3Ryb3lcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgdHlwZV9pZCA9IGlucHV0X2lkXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgRXh0cmEgPSBFeHRyYVxuZW5kXG4iLCJbQEBAanMuZHVtbXkgXCIhISBUaGlzIGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbl9qc19hcGkgISFcIl1cbltAQEBvY2FtbC53YXJuaW5nIFwiLTctMzItMzlcIl1cbm9wZW4hIEpzX29mX29jYW1sXG5vcGVuISBHZW5fanNfYXBpXG50eXBlICgnYSwgJ2IpIHQgPSBPanMudFxubGV0IHJlYyB0X29mX2pzIDpcbiAgJ2EgJ2IgLiAoT2pzLnQgLT4gJ2EpIC0+IChPanMudCAtPiAnYikgLT4gT2pzLnQgLT4gKCdhLCAnYikgdCA9IGZ1biAodHlwZVxuICBfX2EpIC0+IGZ1biAodHlwZSBfX2IpIC0+XG4gIGZ1biAoX19hX29mX2pzIDogT2pzLnQgLT4gX19hKSAtPlxuICAgIGZ1biAoX19iX29mX2pzIDogT2pzLnQgLT4gX19iKSAtPiBmdW4gKHgyIDogT2pzLnQpIC0+IHgyXG5hbmQgdF90b19qcyA6ICdhICdiIC4gKCdhIC0+IE9qcy50KSAtPiAoJ2IgLT4gT2pzLnQpIC0+ICgnYSwgJ2IpIHQgLT4gT2pzLnQgPVxuICBmdW4gKHR5cGUgX19hKSAtPiBmdW4gKHR5cGUgX19iKSAtPlxuICBmdW4gKF9fYV90b19qcyA6IF9fYSAtPiBPanMudCkgLT5cbiAgICBmdW4gKF9fYl90b19qcyA6IF9fYiAtPiBPanMudCkgLT4gZnVuICh4MSA6IE9qcy50KSAtPiB4MVxubGV0IChjcmVhdGUgOiB1bml0IC0+ICgnYSwgJ2IpIHQpID1cbiAgZnVuICgpIC0+XG4gICAgdF9vZl9qcyBPYmoubWFnaWMgT2JqLm1hZ2ljXG4gICAgICAoT2pzLm5ld19vYmogKE9qcy5nZXRfcHJvcF9hc2NpaSBPanMuZ2xvYmFsIFwiTWFwXCIpIFt8fF0pXG5sZXQgKHNldCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gJ2IgLT4gdW5pdCkgPVxuICBmdW4gKHg3IDogKCdhLCAnYikgdCkgLT5cbiAgICBmdW4gKHg1IDogJ2EpIC0+XG4gICAgICBmdW4gKHg2IDogJ2IpIC0+XG4gICAgICAgIGlnbm9yZVxuICAgICAgICAgIChPanMuY2FsbCAodF90b19qcyBPYmoubWFnaWMgT2JqLm1hZ2ljIHg3KSBcInNldFwiXG4gICAgICAgICAgICAgW3woT2JqLm1hZ2ljIHg1KTsoT2JqLm1hZ2ljIHg2KXxdKVxubGV0IChnZXQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiIG9wdGlvbikgPVxuICBmdW4gKHgxMSA6ICgnYSwgJ2IpIHQpIC0+XG4gICAgZnVuICh4MTAgOiAnYSkgLT5cbiAgICAgIE9qcy5vcHRpb25fb2ZfanMgT2JqLm1hZ2ljXG4gICAgICAgIChPanMuY2FsbCAodF90b19qcyBPYmoubWFnaWMgT2JqLm1hZ2ljIHgxMSkgXCJnZXRcIiBbfChPYmoubWFnaWMgeDEwKXxdKVxubGV0IChkZWxldGUgOiAoJ2EsICdiKSB0IC0+ICdhIC0+IHVuaXQpID1cbiAgZnVuICh4MTYgOiAoJ2EsICdiKSB0KSAtPlxuICAgIGZ1biAoeDE1IDogJ2EpIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKE9qcy5jYWxsICh0X3RvX2pzIE9iai5tYWdpYyBPYmoubWFnaWMgeDE2KSBcImRlbGV0ZVwiXG4gICAgICAgICAgIFt8KE9iai5tYWdpYyB4MTUpfF0pXG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gR2VuX2pzX2FwaVxuXG5tb2R1bGUgTmF0aXZlX25vZGUgOiBzaWdcbiAgdHlwZSB0ID0gRG9tX2h0bWwuZWxlbWVudCBKcy50XG5cbiAgdmFsIHRfb2ZfanMgOiBPanMudCAtPiB0XG4gIHZhbCB0X3RvX2pzIDogdCAtPiBPanMudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IERvbV9odG1sLmVsZW1lbnQgSnMudFxuXG4gIGxldCB0X29mX2pzIHggPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbiAgbGV0IHRfdG9fanMgeCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuZW5kXG5cbm1vZHVsZSBBdHRycyA6IHNpZ1xuICB0eXBlIHQgPSBwcml2YXRlIE9qcy50XG5cbiAgdmFsIHRfb2ZfanMgOiBPanMudCAtPiB0XG4gIHZhbCB0X3RvX2pzIDogdCAtPiBPanMudFxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIHZhbCBoYXNfcHJvcGVydHkgOiB0IC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBoYXNfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gT2pzLnQgLT4gdW5pdFxuICB2YWwgc2V0X2F0dHJpYnV0ZSA6IHQgLT4gc3RyaW5nIC0+IE9qcy50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBPanMudFxuXG4gIGxldCB0X29mX2pzIHggPSB4XG4gIGxldCB0X3RvX2pzIHggPSB4XG4gIGxldCBjcmVhdGUgKCkgOiB0ID0gT2pzLmVtcHR5X29iaiAoKVxuXG4gIGxldCBzZXRfcHJvcGVydHkgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT4gT2pzLnNldF9wcm9wX2FzY2lpIHQgbmFtZSB2YWx1ZVxuICA7O1xuXG4gIGxldCBoYXNfcHJvcGVydHkgOiB0IC0+IHN0cmluZyAtPiBib29sID0gT2pzLmhhc19wcm9wZXJ0eVxuXG4gIGxldCBoYXNfYXR0cmlidXRlIHQgbmFtZSA9XG4gICAgT2pzLmhhc19wcm9wZXJ0eSB0IFwiYXR0cmlidXRlc1wiXG4gICAgJiYgT2pzLmhhc19wcm9wZXJ0eSAoT2pzLmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpIG5hbWVcbiAgOztcblxuICBsZXQgc2V0X2F0dHJpYnV0ZSA6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9XG4gICAgZnVuIHQgbmFtZSB2YWx1ZSAtPlxuICAgICAgaWYgcGh5c19lcXVhbCAoT2pzLmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpIChPanMudmFyaWFibGUgXCJ1bmRlZmluZWRcIilcbiAgICAgIHRoZW4gT2pzLnNldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIgKE9qcy5lbXB0eV9vYmogKCkpO1xuICAgICAgT2pzLnNldF9wcm9wX2FzY2lpIChPanMuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZSB2YWx1ZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbGVtZW50X2FycmF5ID0gc3RydWN0XG4gICgqIFRoaXMgdHlwZSBtdXN0IG9ubHkgYmUgaW5zdGFudGlhdGVkIHdpdGggTm9kZS50IGFzIHRoZVxuICAgICB0eXBlIHBhcmFtZXRlciBiZWNhdXNlIGl0IGlnbm9yZXMgdGhlIGlubmVyLW1vc3QgY29udmVyc2lvblxuICAgICBmdW5jdGlvbi4gIFRoaXMgaXMgc2FmZSBiZWNhdXNlIE5vZGUudCBpcyBkZWZpbmVkIGFzIE9qcy50LFxuICAgICBidXQgd2UgY2FuJ3QgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhhdCBmYWN0IGJlY2F1c2UgdGhlIE5vZGVcbiAgICAgbW9kdWxlIGlzIGdlbmVyYXRlZCB2aWEgcHB4LiAqKVxuXG4gIHR5cGUgJ2EgdCA9ICdhIEpzX29mX29jYW1sLkpzLmpzX2FycmF5IEpzLnRcblxuICBsZXQgdF9vZl9qcyA6IF8gLT4gT2pzLnQgLT4gJ2EgdCA9IGZ1biBfIC0+IENhbWwuT2JqLm1hZ2ljXG4gIGxldCB0X3RvX2pzIDogXyAtPiAnYSB0IC0+IE9qcy50ID0gZnVuIF8gLT4gQ2FtbC5PYmoubWFnaWNcbmVuZFxuXG5tb2R1bGUgTm9kZSA9XG4gIFslanM6XG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBPanMudFxuXG4gICAgdmFsIHRfb2ZfanMgOiBPanMudCAtPiB0XG4gICAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG5cbiAgICB2YWwgbm9kZSA6IHN0cmluZyAtPiBBdHRycy50IC0+IHQgRWxlbWVudF9hcnJheS50IC0+IHN0cmluZyBvcHRpb24gLT4gdFxuICAgIFtAQGpzLm5ldyBcIlZpcnR1YWxEb20uVk5vZGVcIl1cblxuICAgIHZhbCB0ZXh0IDogc3RyaW5nIC0+IHQgW0BAanMubmV3IFwiVmlydHVhbERvbS5WVGV4dFwiXVxuXG4gICAgdmFsIHN2ZyA6IHN0cmluZyAtPiBBdHRycy50IC0+IHQgRWxlbWVudF9hcnJheS50IC0+IHN0cmluZyBvcHRpb24gLT4gdFxuICAgIFtAQGpzLm5ldyBcIlZpcnR1YWxEb20uc3ZnXCJdXG5cbiAgICB2YWwgdG9fZG9tIDogdCAtPiBOYXRpdmVfbm9kZS50IFtAQGpzLmdsb2JhbCBcIlZpcnR1YWxEb20uY3JlYXRlRWxlbWVudFwiXV1cblxubW9kdWxlIFBhdGNoID1cbiAgWyVqczpcbiAgICB0eXBlIHQgPSBwcml2YXRlIE9qcy50XG5cbiAgICB2YWwgdF9vZl9qcyA6IE9qcy50IC0+IHRcbiAgICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcbiAgICB2YWwgY3JlYXRlIDogcHJldmlvdXM6Tm9kZS50IC0+IGN1cnJlbnQ6Tm9kZS50IC0+IHQgW0BAanMuZ2xvYmFsIFwiVmlydHVhbERvbS5kaWZmXCJdXG4gICAgdmFsIGFwcGx5IDogTmF0aXZlX25vZGUudCAtPiB0IC0+IE5hdGl2ZV9ub2RlLnQgW0BAanMuZ2xvYmFsIFwiVmlydHVhbERvbS5wYXRjaFwiXVxuXG4gICAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG4gICAgW0BAanMuY3VzdG9tXG4gICAgICBsZXQgaXNfZW1wdHkgPVxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgICAgICAgICAge2pzfFxuICAgICAgICAoZnVuY3Rpb24gKHBhdGNoKSB7XG4gICAgICAgICAgZm9yICh2YXIga2V5IGluIHBhdGNoKSB7XG4gICAgICAgICAgICBpZiAoa2V5ICE9PSAnYScpIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgfGpzfVxuICAgICAgICBpblxuICAgICAgICBmdW4gKHQgOiB0KSAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgZiBbfCBKcy5VbnNhZmUuaW5qZWN0IHQgfF0gfD4gSnMudG9fYm9vbFxuICAgICAgOztdXVxuXG5tb2R1bGUgV2lkZ2V0ID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgWydzLCAnZWxlbWVudF0gd2lkZ2V0ID1cbiAgICBvYmplY3RcbiAgICAgIGNvbnN0cmFpbnQgJ2VsZW1lbnQgPSAjRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICBtZXRob2QgdHlwZV8gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICAoKiB2aXJ0dWFsLWRvbSBjb25zaWRlcnMgdHdvIHdpZGdldHMgb2YgYmVpbmcgb2YgdGhlIHNhbWUgXCJraW5kXCIgaWYgZWl0aGVyXG4gICAgICAgICBvZiB0aGUgZm9sbG93aW5nIGhvbGRzOlxuXG4gICAgICAgICAxLiBUaGV5IGJvdGggaGF2ZSBhIFwibmFtZVwiIGF0dHJpYnV0ZSBhbmQgdGhlaXIgXCJpZFwiIGZpZWxkcyBhcmUgZXF1YWwuXG4gICAgICAgICAoSSB0aGluayB0aGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHZpcnR1YWwtZG9tIGFuZCBoYXZlIGZpZWxkIGFuIGlzc3VlXG4gICAgICAgICBvbiBnaXRodWI6IFtodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2lzc3Vlcy8zODBdKVxuXG4gICAgICAgICAyLiBUaGVpciBbaW5pdF0gbWV0aG9kcyBhcmUgXCI9PT1cIiBlcXVhbC4gVGhpcyBpcyB0cnVlIHdoZW4gdXNpbmcgdmlydHVhbC1kb21cbiAgICAgICAgIHdpZGdldHMgaW4gdGhlIHVzdWFsIHN0eWxlIGluIEphdmFzY3JpcHQsIHNpbmNlIHRoZSBbaW5pdF0gbWV0aG9kIHdpbGwgYmUgZGVmaW5lZFxuICAgICAgICAgb24gYSBwcm90b3R5cGUsIGJ1dCBpcyBub3QgdHJ1ZSBpbiB0aGlzIGJpbmRpbmcgYXMgaXQgaXMgcmVkZWZpbmVkIGZvciBlYWNoXG4gICAgICAgICBjYWxsIHRvIFt3aWRnZXRdLlxuXG4gICAgICAgICBTbywgd2UgZ28gd2l0aCBvcHRpb24gMSBhbmQgbXVzdCBoYXZlIGEgdHJpdmlhbCBmaWVsZCBjYWxsZWQgW25hbWVdLlxuICAgICAgKilcbiAgICAgIG1ldGhvZCBuYW1lIDogdW5pdCBKcy53cml0ZW9ubHlfcHJvcFxuICAgICAgbWV0aG9kIGlkIDogKCdzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudCBKcy5wcm9wXG4gICAgICBtZXRob2Qgc3RhdGUgOiAncyBKcy5wcm9wXG4gICAgICBtZXRob2QgaW5mbyA6IFNleHAudCBMYXp5LnQgb3B0aW9uIEpzLnByb3BcbiAgICAgIG1ldGhvZCBkZXN0cm95IDogKCdlbGVtZW50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCB1cGRhdGUgOlxuICAgICAgICAoKCdvdGhlcl9zdGF0ZSwgJ290aGVyX2VsZW1lbnQpIHdpZGdldCBKcy50IC0+ICdlbGVtZW50IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFja1xuICAgICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBpbml0IDogKHVuaXQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG4gICAgZW5kXG5cbiAgKCogV2UgbW9kZWwgSlMgbGV2ZWwgb2JqZWN0cyBoZXJlIHNvIHRoZXJlIGlzIGEgbG90IG9mIHRocm93aW5nIGF3YXkgb2YgdHlwZVxuICAgICBpbmZvcm1hdGlvbi4gIFdlIGNvdWxkIHBvc3NpYmx5IHRyeSB0byByZWRpc2NvdmVyIG1vcmUgb2YgaXQuICBPciBtYXliZSB3ZVxuICAgICBzaG91bGQgc2VlIGlmIHdlIGNhbiBnZXQgcmlkIFdpZGdldCBjb21wbGV0ZWx5LlxuICAgICB0aGUgdW5pdCB0eXBlIHBhcmFtZXRlcnMgaGVyZSBhcmUgbm90IGFjdHVhbGx5IHVuaXQsIGJ1dCBwYXJ0IG9mXG4gICAgIHRoZSB0eXBlIGluZm8gd2UgaGF2ZSB0aHJvd24gYXdheSBpbnRvIG91ciBkYW5jZVxuICAgICB3aXRoIEpTICopXG4gIHR5cGUgdCA9IE5vZGUudFxuXG4gICgqIGhlcmUgaXMgaG93IHdlIHRocm93IGF3YXkgdHlwZSBpbmZvcm1hdGlvbi4gIE91ciBnb29kIG9sZCBmcmllbmQgT2JqLm1hZ2ljLFxuICAgICBidXQgY29uc3RyYWluZWQgYSBsaXR0bGUgYml0ICopXG4gIGV4dGVybmFsIG9qc19vZl9qcyA6IChfLCBfKSB3aWRnZXQgSnMudCAtPiBPanMudCA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgU3RhdGVfa2VlcGVyID0gc3RydWN0XG4gICAgdHlwZSBib3ggPSBUIDogKCdhICogXykgVHlwZV9lcXVhbC5JZC50ICogJ2EgLT4gYm94XG5cbiAgICBsZXQgdCA6IChKcy5VbnNhZmUuYW55LCBib3gpIEpzX21hcC50ID0gSnNfbWFwLmNyZWF0ZSAoKVxuICAgIGxldCBzZXQgfmlkIGVsZW1lbnQgc3RhdGUgPSBKc19tYXAuc2V0IHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCkgKFQgKGlkLCBzdGF0ZSkpXG5cbiAgICBsZXQgZ2V0IDogdHlwZSBhIGIuIGlkOihhICogYikgVHlwZV9lcXVhbC5JZC50IC0+IF8gLT4gYSA9XG4gICAgICBmdW4gfmlkIGVsZW1lbnQgLT5cbiAgICAgIGxldCBlbGVtZW50ID0gSnMuVW5zYWZlLmluamVjdCBlbGVtZW50IGluXG4gICAgICBtYXRjaCBKc19tYXAuZ2V0IHQgZWxlbWVudCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkX3NleHAgPSBUeXBlX2VxdWFsLklkLnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIikgaWQgaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IGVsZW1lbnQgc3RhdGUgbm90IGZvdW5kXCIgKGlkX3NleHAgOiBTZXhwLnQpXVxuICAgICAgfCBTb21lIChUIChmX2lkLCBzdGF0ZSkpIC0+XG4gICAgICAgIGxldCBUID0gVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGlkIGZfaWQgaW5cbiAgICAgICAgc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGRlbGV0ZSBlbGVtZW50ID0gSnNfbWFwLmRlbGV0ZSB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgKHR5cGUgcylcbiAgICAgICAgP2luZm9cbiAgICAgICAgPyhkZXN0cm95IDogcyAtPiAnZWxlbWVudCAtPiB1bml0ID0gZnVuIF8gXyAtPiAoKSlcbiAgICAgICAgPyh1cGRhdGUgOiBzIC0+ICdlbGVtZW50IC0+IHMgKiAnZWxlbWVudCA9IGZ1biBzIGVsdCAtPiBzLCBlbHQpXG4gICAgICAgIH4oaWQgOiAocyAqICdlbGVtZW50KSBUeXBlX2VxdWFsLklkLnQpXG4gICAgICAgIH4oaW5pdCA6IHVuaXQgLT4gcyAqICdlbGVtZW50KVxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb2JqIDogKHMsIF8pIHdpZGdldCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgb2JqIyMudHlwZV8gOj0gSnMuc3RyaW5nIFwiV2lkZ2V0XCI7XG4gICAgb2JqIyMubmFtZSA6PSAoKTtcbiAgICBvYmojIy5pZCA6PSBpZDtcbiAgICBvYmojIy5pbmZvIDo9IGluZm87XG4gICAgb2JqIyMuaW5pdFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IHMwLCBkb21fbm9kZSA9IGluaXQgKCkgaW5cbiAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlIHMwO1xuICAgICAgZG9tX25vZGUpO1xuICAgIG9iaiMjLnVwZGF0ZVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmV2IGRvbV9ub2RlIC0+XG4gICAgICAoKiBUaGUgW3VwZGF0ZV0gbWV0aG9kIG9mIFtvYmpdIGlzIG9ubHkgY2FsbGVkIGJ5IHZpcnR1YWwtZG9tIGFmdGVyIGl0IGhhcyBjaGVja2VkXG4gICAgICAgICB0aGF0IHRoZSBbaWRdcyBvZiBbcHJldl0gYW5kIFtvYmpdIGFyZSBcIj09PVwiIGVxdWFsLiBUaHVzIFtzYW1lX3dpdG5lc3NfZXhuXSB3aWxsXG4gICAgICAgICBuZXZlciByYWlzZS4gKilcbiAgICAgIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBwcmV2IyMuaWQgaWQgd2l0aFxuICAgICAgfCBUeXBlX2VxdWFsLlQgLT5cbiAgICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgICBsZXQgc3RhdGUnLCBkb21fbm9kZScgPSB1cGRhdGUgcHJldl9zdGF0ZSBkb21fbm9kZSBpblxuICAgICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlO1xuICAgICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZScgc3RhdGUnO1xuICAgICAgICBkb21fbm9kZScpO1xuICAgIG9iaiMjLmRlc3Ryb3lcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZG9tX25vZGUgLT5cbiAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgIGRlc3Ryb3kgcHJldl9zdGF0ZSBkb21fbm9kZTtcbiAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGUpO1xuICAgIE5vZGUudF9vZl9qcyAob2pzX29mX2pzIG9iailcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFZkb21fcmF3ID0gUmF3XG5cbmxldCAoKSA9XG4gICgqIHVzZSB0aGUgbmF0aXZlLWphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgZmxvYXQgLT4gc3RyaW5nIHdpdGggYSBmaXhlZCBudW1iZXIgb2ZcbiAgICAgbnVtYmVycyBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZS4gKilcbiAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbjs7XG5cbigqKiBUaGlzIGhhcyAzIGtpbmRzIG9mIGNvbnN0cnVjdG9ycy5cbiAgICB7dlxuICAgICAgLSBjb25zdHJ1Y3RvcnMgZm9yIHByb3BlcnRpZXMgLyBhdHRyaWJ1dGVzIGZvciB3aGljaCB3ZVxuICAgICAgICBoYXZlIHdyaXR0ZW4gZmlyc3QgY2xhc3Mgb2NhbWwgcmVwcmVzZW50YXRpb25zIChzbyBmYXIgb25seSBTdHlsZSxcbiAgICAgICAgQ2xhc3MsIGFuZCBIYW5kbGVyKVxuXG4gICAgICAtIFRob3NlIHdoaWNoIHdlIGltbWVkaWF0ZWx5IGNvbnZlcnQgaW50byBKcyBjYWxsZWQgUmF3LCB3aGljaFxuICAgICAgICBpbiB0dXJuIGhhcyB0d28gY2FzZXM6XG4gICAgICAgIC0gUHJvcGVydHkgZm9yIHByb3BlcnRpZXMgb24gdGhlIERPTVxuICAgICAgICAtIEF0dHJpYnV0ZSBmb3IgYXR0cmlidXRlcyBvbiB0aGUgRE9NXG5cbiAgICAgIC0gSG9va3MsIHdoaWNoIHJlZ2lzdGVyIGNhbGxiYWNrcyBvbiBwcm9wZXJ0eSBhZGRpdGlvbiBhbmQgcmVtb3ZhbC5cbiAgICB2fVxuXG4gICAgR2VuZXJhbGx5IHNwZWFraW5nIG9uZSBzaG91bGQgYXZvaWQgY3JlYXRpbmcgYSBwcm9wZXJ0eSBvciBhdHRyaWJ1dGVcbiAgICBmb3Igc29tZXRoaW5nIGZvciB3aGljaCB3ZSBoYXZlIGEgZmlyc3QgY2xhc3MgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5tb2R1bGUgRXZlbnRfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgdHlwZV9pZCA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgICA7IGhhbmRsZXIgOiAoI0RvbV9odG1sLmV2ZW50IGFzICdhKSBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnRcbiAgICAgICAgfVxuICAgICAgICAtPiB0XG5cbiAgbGV0IGNvbWJpbmVcbiAgICAgICAgKFQgeyB0eXBlX2lkID0gbHRpZDsgaGFuZGxlciA9IGxoYW5kbGVyIH0pXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IHJ0aWQ7IGhhbmRsZXIgPSByaGFuZGxlciB9IGFzIHJpZ2h0KVxuICAgID1cbiAgICAoKiBJZiB0aGV5IGFyZSBub3QgdGhlIHNhbWUgd2l0bmVzcywgdGhlbiBpdCBpcyBhIGJ1ZyBpbiB2aXJ0dWFsX2RvbSwgc2luY2VcbiAgICAgICB3ZSBkbyBub3QgZXhwb3NlIFtvbl0gYW55bW9yZSB3aGljaCBtZWFucyB0aGlzIGxpYnJhcnkgY2FuIGRldGVybWluZWQgdGhlXG4gICAgICAgW1R5cGVfZXF1YWwuSWRdIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBldmVudC4gdmlydHVhbF9kb20gbWFpbnRhaW5zIHRoZVxuICAgICAgIGludmFyaWFudCB0aGF0IGFueSB0d28gZXZlbnRzIHdpdGggdGhlIHNhbWUgbmFtZSB3aWxsIHByb2R1Y2UgaGFuZGxlcnNcbiAgICAgICB0aGF0IGhhdmUgdGhlIHNhbWUgW1R5cGVfZXF1YWwuSWRdLiAqKVxuICAgIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGx0aWQgcnRpZCB3aXRoXG4gICAgfCBTb21lIFQgLT5cbiAgICAgIFRcbiAgICAgICAgeyB0eXBlX2lkID0gbHRpZFxuICAgICAgICA7IGhhbmRsZXIgPVxuICAgICAgICAgICAgKGZ1biB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgRWZmZWN0LnNlcXVlbmNlX2FzX3NpYmxpbmcgKGxoYW5kbGVyIHZhbHVlKSB+dW5sZXNzX3N0b3BwZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICByaGFuZGxlciB2YWx1ZSkpXG4gICAgICAgIH1cbiAgICB8IE5vbmUgLT5cbiAgICAgIGVwcmludF9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQlVHISAgVHlwZS1pZHMgZm9yIGV2ZW50IGhhbmRsZXJzIGRpZmZlclwiXG4gICAgICAgICAgICAobHRpZCA6IF8gVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICAgICAgKHJ0aWQgOiBfIFR5cGVfZXF1YWwuSWQudCldO1xuICAgICAgcmlnaHRcbiAgOztcbmVuZFxuXG50eXBlIHQgPVxuICB8IFByb3BlcnR5IG9mXG4gICAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzIDogYm9vbFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZhbHVlIDogSnMuVW5zYWZlLmFueVxuICAgICAgfVxuICB8IEF0dHJpYnV0ZSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBIYW5kbGVyIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaGFuZGxlciA6IEV2ZW50X2hhbmRsZXIudFxuICAgICAgfVxuICB8IEhvb2sgb2ZcbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBob29rIDogSG9va3MudFxuICAgICAgfVxuICB8IFN0eWxlIG9mIENzc19nZW4udFxuICB8IENsYXNzIG9mIChzdHJpbmcsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIFNldC50XG4gIHwgTWFueSBvZiB0IGxpc3RcbiAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIG9mXG4gICAgICB0IGxpc3QgKiAoQ3NzX2dlbi50IC0+IENzc19nZW4udCkgKiAoU3RyaW5nLlNldC50IC0+IFN0cmluZy5TZXQudClcbiAgfCBNYW55X3dpdGhvdXRfbWVyZ2Ugb2YgdCBsaXN0XG5cbmxldCBjcmVhdGUgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZVxuICAgIDsgbmFtZVxuICAgIDsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChEb21fZmxvYXQudG9fanNfc3RyaW5nIHZhbHVlKVxuICAgIH1cbjs7XG5cbmxldCBwcm9wZXJ0eSBuYW1lIHZhbHVlID0gUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSB9XG5cbmxldCBzdHJpbmdfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGJvb2xfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLmJvb2wgdmFsdWUpIH1cbjs7XG5cbmxldCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZ1bmN0aW9uXG4gIHwgQXR0cmlidXRlIGF0dHJpYnV0ZSAtPiBBdHRyaWJ1dGUgeyBhdHRyaWJ1dGUgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IFByb3BlcnR5IHByb3BlcnR5IC0+IFByb3BlcnR5IHsgcHJvcGVydHkgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNyZWF0ZV9ob29rIG5hbWUgaG9vayA9IEhvb2sgeyBuYW1lOyBob29rIH1cbmxldCBtYW55IGF0dHJzID0gTWFueSBhdHRyc1xubGV0IG1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyA9IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRyc1xubGV0IGVtcHR5ID0gTWFueSBbXVxubGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IE1hbnkgWyBsZWZ0OyByaWdodCBdXG5sZXQgKCBAICkgPSBjb21iaW5lXG5cbmV4dGVybmFsIG9qc19vZl9hbnkgOiBKcy5VbnNhZmUuYW55IC0+IEdlbl9qc19hcGkuT2pzLnQgPSBcIiVpZGVudGl0eVwiXG5cbm1vZHVsZSBVbm1lcmdlZF93YXJuaW5nX21vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vX3dhcm5pbmdzXG4gICAgfCBBbGxfd2FybmluZ3NcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgb2YgaW50XG5cbiAgbGV0IHdhcm5pbmdfY291bnQgPSByZWYgMFxuICBsZXQgY3VycmVudCA9IHJlZiAoU3RvcF9hZnRlcl9xdW90YSAxMDApXG5cbiAgbGV0IHdhcm5fcyBzID1cbiAgICBpbmNyIHdhcm5pbmdfY291bnQ7XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9fd2FybmluZ3MgLT4gKClcbiAgICB8IEFsbF93YXJuaW5ncyAtPiBlcHJpbnRfcyBzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIHF1b3RhIC0+XG4gICAgICBsZXQgd2FybmluZ19jb3VudCA9ICF3YXJuaW5nX2NvdW50IGluXG4gICAgICBpZiB3YXJuaW5nX2NvdW50IDw9IHF1b3RhXG4gICAgICB0aGVuIChcbiAgICAgICAgZXByaW50X3MgcztcbiAgICAgICAgaWYgd2FybmluZ19jb3VudCA9IHF1b3RhXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlcHJpbnRfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiV0FSTklORzogcmVhY2hlZCB3YXJuaW5nIG1lc3NhZ2UgcXVvdGE7IG5vIG1vcmUgbWVzc2FnZXMgd2lsbCBiZSBwcmludGVkXCJcbiAgICAgICAgICAgICAgICAocXVvdGEgOiBpbnQpXSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgcmVzZXRfd2FybmluZ19jb3VudCAoKSA9IHdhcm5pbmdfY291bnQgOj0gMFxuICBlbmRcbmVuZFxuXG50eXBlIG1lcmdlID1cbiAgeyBzdHlsZXMgOiBDc3NfZ2VuLnRcbiAgOyBjbGFzc2VzIDogU2V0Lk0oU3RyaW5nKS50XG4gIDsgaGFuZGxlcnMgOiBFdmVudF9oYW5kbGVyLnQgTWFwLk0oU3RyaW5nKS50XG4gIDsgaG9va3MgOiBIb29rcy50IE1hcC5NKFN0cmluZykudFxuICB9XG5cbmxldCBjb21iaW5pbmdfbWFwX2FkZCBtYXAga2V5IHZhbHVlIH5jb21iaW5lID1cbiAgTWFwLnVwZGF0ZSBtYXAga2V5IH5mOihmdW5jdGlvblxuICAgIHwgU29tZSBleGlzdGluZ192YWx1ZSAtPiBjb21iaW5lIH5rZXkgZXhpc3RpbmdfdmFsdWUgdmFsdWVcbiAgICB8IE5vbmUgLT4gdmFsdWUpXG47O1xuXG5sZXQgZW1wdHlfbWVyZ2UgPVxuICB7IHN0eWxlcyA9IENzc19nZW4uZW1wdHlcbiAgOyBjbGFzc2VzID0gU2V0LmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICA7IGhhbmRsZXJzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICA7IGhvb2tzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICB9XG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBsZXQgYXR0cnMgPSBbIGF0dHIgXSBpblxuICAoKiBXaGVuIGlucHV0IGVsZW1lbnRzIGhhdmUgdGhlaXIgdmFsdWUgc2V0IHRvIHdoYXQgaXQgYWxyZWFkeSBpc1xuICAgICB0aGUgY3Vyc29yIGdldHMgbW92ZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQgZXZlbiB3aGVuIHRoZSB1c2VyXG4gICAgIGlzIGVkaXRpbmcgaW4gdGhlIG1pZGRsZS4gU29mdFNldEhvb2sgKGZyb20gLi9zb2Z0LXNldC1ob29rLmpzKVxuICAgICBjb21wYXJlcyBiZWZvcmUgc2V0dGluZywgYXZvaWRpbmcgdGhlIHByb2JsZW0ganVzdCBsaWtlIGluXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaW5kZXguanMjTDQzLUw1MVxuXG4gICAgIG5vdGUgdGhhdCBFbG0ncyB2aXJ0dWFsLWRvbSBpbmNsdWRlcyBhIHdvcmthcm91bmQgZm9yIHRoaXMgc29cbiAgICAgaWYgd2Ugc3dpdGNoIHRvIHRoYXQgdGhlIHdvcmthcm91bmQgaGVyZSB3aWxsIGJlIHVubmVjZXNzYXJ5LlxuICAgICBodHRwczovL2dpdGh1Yi5jb20vZWxtLWxhbmcvdmlydHVhbC1kb20vYmxvYi8xN2IzMGZiN2RlNDg2NzI1NjVkNjIyN2QzM2MwMTc2ZjA3NTc4NmRiL3NyYy9OYXRpdmUvVmlydHVhbERvbS5qcyNMNDM0LUw0MzlcbiAgKilcbiAgbGV0IGF0dHJzX29iaiA6IFZkb21fcmF3LkF0dHJzLnQgPSBWZG9tX3Jhdy5BdHRycy5jcmVhdGUgKCkgaW5cbiAgKCogW3Rha2Vfc2Vjb25kXypdIGlzIHRoZSB0cml2aWFsIG1lcmdlIGZ1bmN0aW9uIChpLmUuIG5vIG1lcmdlIGF0IGFsbCk7IGl0XG4gICAgIHRha2VzIHR3byBhdHRyaWJ1dGVzIG9mIHRoZSBzYW1lIGtpbmQsIGlnbm9yZXMgYSBmaXJzdCwgYW5kIGVtaXRzXG4gICAgIGEgd2FybmluZyBpZiBbd2Fybl9hYm91dF91bm1lcmdlZF9hdHRyaWJ1dGVzXSBpcyBlbmFibGVkLiAqKVxuICBsZXQgdGFrZV9zZWNvbmRfc3R5bGVzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW5cbiAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIHN0eWxlc1wiIChmaXJzdCA6IENzc19nZW4udCkgKHNlY29uZCA6IENzc19nZW4udCldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfY2xhc3NlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoU2V0LmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW5cbiAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGNsYXNzZXNcIiAoZmlyc3QgOiBTdHJpbmcuU2V0LnQpIChzZWNvbmQgOiBTdHJpbmcuU2V0LnQpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hhbmRsZXIgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaGFuZGxlcnNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaG9vayB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fcyBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhvb2tzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgKCogV2UgbWVyZ2UgYXR0cmlidXRlcyB3aGVuIHRoZXkgYXJlIHdyaXR0ZW4gdG8gdGhlIHJhdyBhdHRyaWJ1dGUgb2JqZWN0LFxuICAgICByYXRoZXIgdGhhbiB3aGVuIHRoZSB1c2VyLWZhY2luZyBtZXJnZSBmdW5jdGlvbnMgKFttYW55XSwgW2NvbWJpbmVdLCBhbmRcbiAgICAgW0BdKSBhcmUgY2FsbGVkLiBUaGlzIHN0cmF0ZWd5IGlzIGJldHRlciBpbiBib3RoIHNwZWVkIGFuZCBtZW1vcnkgdXNhZ2UsXG4gICAgIHNpbmNlIGl0IG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRvIGNvbmNhdGVuYXRlIHRoZSBsaXN0IG9mIFwidW5tZXJnZWFibGVcIlxuICAgICBhdHRyaWJ1dGVzIChQcm9wZXJ0eSBhbmQgQXR0cmlidXRlKTsgaW5zdGVhZCwgd2UgY2FuIGl0ZXJhdGUgdGhyb3VnaCB0aGVcbiAgICAgdHJlZSBvZiBhdHRyaWJ1dGVzIGFuZCBlYWdlcmx5IHdyaXRlIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgdG8gdGhlXG4gICAgIGF0dHJpYnV0ZSBvYmplY3QgYXMgd2UgZmluZCB0aGVtLiBJZiB0d28gdW5tZXJnZWFibGUgYXR0cmlidXRlcyBoYXZlIHRoZVxuICAgICBzYW1lIG5hbWUsIHRoZSBzZWNvbmQgd2lsbCBzaW1wbHkgb3ZlcndyaXRlIHRoZSBmaXJzdCwgYXMgZGVzaXJlZC5cblxuICAgICBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgdGhlIFtNdWx0aV0gbW9kdWxlICh0aGF0IGlzLFxuICAgICBpdCBtdXN0IGJlIHBvc3NpYmxlIHRvIG1lcmdlIGNsYXNzZXMgYW5kIHN0eWxlcywgYnV0IG5vdCBob29rcyBhbmRcbiAgICAgaGFuZGxlcnMpLCB3ZSBpbnRyb2R1Y2UgdGhlIHdvcmthcm91bmQgY29uc3RydWN0b3JcbiAgICAgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdLlxuXG4gICAgIFRoZXJlIGFyZSB0aHVzIHRocmVlIGNhc2VzIHRoYXQgZWFjaCBoYXZlIGRpZmZlcmVudCBtZXJnZSBiZWhhdmlvcnM6XG4gICAgIC0gU2ltcGxlIGxpc3RzIC0gbm8gbWVyZ2luZ1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV0gLSBtZXJnZXMgY2xhc3Nlcywgc3R5bGVzLCBob29rcywgYW5kIGhhbmRsZXJzXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXSAtIG1lcmdlcyBjbGFzc2VzIGFuZCBzdHlsZXNcblxuICAgICBUbyBhdm9pZCBkdXBsaWNhdGluZyB0aGUgbWF0Y2ggZXhwcmVzc2lvbiBsb2dpYywgd2UgcGFyZW1ldGVyaXplIGl0IGJ5IHRoZVxuICAgICBtZXJnaW5nIGJlaGF2aW9yLCBzaW5jZSBcIm5vIG1lcmdlXCIgcmVhbGx5IG1lYW5zIFwibWVyZ2UgYnkgdGFraW5nIHRoZVxuICAgICBzZWNvbmQgb25lXCIuICopXG4gIGxldCByZWMgbWVyZ2UgfmNvbWJpbmVfaG9vayB+Y29tYmluZV9oYW5kbGVyIH5jb21iaW5lX3N0eWxlcyB+Y29tYmluZV9jbGFzc2VzIGFjYyA9XG4gICAgTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBhdHRyIC0+XG4gICAgICBtYXRjaCBhdHRyIHdpdGhcbiAgICAgIHwgUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBwcm9wZXJ0aWVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgICAgfCBcInZhbHVlXCIgLT5cbiAgICAgICAgICAgbGV0IHNvZnRTZXRIb29rIHggOiBHZW5fanNfYXBpLk9qcy50ID0gSnMuVW5zYWZlLmdsb2JhbCAjIyBTb2Z0U2V0SG9vayB4IGluXG4gICAgICAgICAgIGxldCB2YWx1ZSA9IHNvZnRTZXRIb29rIHZhbHVlIGluXG4gICAgICAgICAgIFZkb21fcmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJ2YWx1ZVwiIHZhbHVlXG4gICAgICAgICB8IG5hbWUgLT4gUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAob2pzX29mX2FueSB2YWx1ZSkpO1xuICAgICAgICBhY2NcbiAgICAgIHwgQXR0cmlidXRlIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgJiYgbm90IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGF0dHJpYnV0ZXNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgICAgICBSYXcuQXR0cnMuc2V0X2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSAob2pzX29mX2FueSB2YWx1ZSk7XG4gICAgICAgIGFjY1xuICAgICAgfCBTdHlsZSBuZXdfc3R5bGVzIC0+IHsgYWNjIHdpdGggc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBuZXdfc3R5bGVzIH1cbiAgICAgIHwgQ2xhc3MgbmV3X2NsYXNzZXMgLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIG5ld19jbGFzc2VzIH1cbiAgICAgIHwgSG9vayB7IG5hbWU7IGhvb2sgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoIGhvb2tzID0gY29tYmluaW5nX21hcF9hZGQgYWNjLmhvb2tzIG5hbWUgaG9vayB+Y29tYmluZTpjb21iaW5lX2hvb2sgfVxuICAgICAgfCBIYW5kbGVyIHsgbmFtZTsgaGFuZGxlciB9IC0+XG4gICAgICAgIHsgYWNjIHdpdGhcbiAgICAgICAgICBoYW5kbGVycyA9XG4gICAgICAgICAgICBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaGFuZGxlcnMgbmFtZSBoYW5kbGVyIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICB9XG4gICAgICB8IE1hbnkgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6KGZ1biB+a2V5Ol8gLT4gSG9va3MuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6KGZ1biB+a2V5Ol8gLT4gRXZlbnRfaGFuZGxlci5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpTZXQudW5pb25cbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlc1xuICAgICAgICA7IGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXNcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIG1hcF9zdHlsZXMsIG1hcF9jbGFzc2VzKSAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6U2V0LnVuaW9uXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBtYXBfc3R5bGVzIChjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXMpXG4gICAgICAgIDsgY2xhc3NlcyA9IG1hcF9jbGFzc2VzIChjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXMpXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfSlcbiAgaW5cbiAgbGV0IG1lcmdlID1cbiAgICBtZXJnZVxuICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgIGF0dHJzXG4gIGluXG4gIE1hcC5pdGVyaSBtZXJnZS5ob29rcyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTpob29rIC0+XG4gICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAob2pzX29mX2FueSAoSG9va3MucGFjayBob29rKSkpO1xuICBNYXAuaXRlcmkgbWVyZ2UuaGFuZGxlcnMgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6KEV2ZW50X2hhbmRsZXIuVCB7IGhhbmRsZXI7IF8gfSkgLT5cbiAgICBsZXQgZiBlID1cbiAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlIGUgKGhhbmRsZXIgZSk7XG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG4gICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eVxuICAgICAgYXR0cnNfb2JqXG4gICAgICAoXCJvblwiIF4gbmFtZSlcbiAgICAgIChvanNfb2ZfYW55IChKcy5VbnNhZmUuaW5qZWN0IChEb20uaGFuZGxlciBmKSkpKTtcbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgbWVyZ2Uuc3R5bGVzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByb3BzID0gQ3NzX2dlbi50b19zdHJpbmdfbGlzdCBtZXJnZS5zdHlsZXMgaW5cbiAgICAgIGxldCBvYmogPSBHZW5fanNfYXBpLk9qcy5lbXB0eV9vYmogKCkgaW5cbiAgICAgIExpc3QuaXRlciBwcm9wcyB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgICBHZW5fanNfYXBpLk9qcy5zZXRfcHJvcF9hc2NpaSBvYmogayAoR2VuX2pzX2FwaS5PanMuc3RyaW5nX3RvX2pzIHYpKTtcbiAgICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwic3R5bGVcIiBvYmopXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgU2V0LmlzX2VtcHR5IG1lcmdlLmNsYXNzZXNcbiAgICB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGVcbiAgICAgICAgYXR0cnNfb2JqXG4gICAgICAgIFwiY2xhc3NcIlxuICAgICAgICAoR2VuX2pzX2FwaS5PanMuc3RyaW5nX3RvX2pzIChTdHJpbmcuY29uY2F0IChTZXQudG9fbGlzdCBtZXJnZS5jbGFzc2VzKSB+c2VwOlwiIFwiKSlcbiAgaW5cbiAgYXR0cnNfb2JqXG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBtYXRjaCBhdHRyIHdpdGhcbiAgfCBNYW55IFtdIHwgTWFueV93aXRob3V0X21lcmdlIFtdIC0+IFJhdy5BdHRycy5jcmVhdGUgKClcbiAgfCBhdHRyIC0+IHRvX3JhdyBhdHRyXG47O1xuXG5sZXQgc3R5bGUgY3NzID0gU3R5bGUgY3NzXG5cbmxldCB2YWxpZF9jbGFzc19uYW1lIHMgPVxuICBsZXQgaW52YWxpZCA9IFN0cmluZy5pc19lbXB0eSBzIHx8IFN0cmluZy5leGlzdHMgcyB+ZjpDaGFyLmlzX3doaXRlc3BhY2UgaW5cbiAgbm90IGludmFsaWRcbjs7XG5cbmxldCV0ZXN0IFwidmFsaWRcIiA9IHZhbGlkX2NsYXNzX25hbWUgXCJmb28tYmFyXCJcbmxldCV0ZXN0IFwiaW52YWxpZC1lbXB0eVwiID0gbm90ICh2YWxpZF9jbGFzc19uYW1lIFwiXCIpXG5sZXQldGVzdCBcImludmFsaWQtc3BhY2VcIiA9IG5vdCAodmFsaWRfY2xhc3NfbmFtZSBcImZvbyBiYXJcIilcblxubGV0IGNsYXNzXyBjbGFzc25hbWUgPVxuICBpZiBub3QgKHZhbGlkX2NsYXNzX25hbWUgY2xhc3NuYW1lKVxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiaW52YWxpZCBjbGFzc25hbWVcIiAoY2xhc3NuYW1lIDogc3RyaW5nKV07XG4gIENsYXNzIChTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nKSBjbGFzc25hbWUpXG47O1xuXG5sZXQgY2xhc3NlcycgY2xhc3NlcyA9IENsYXNzIGNsYXNzZXNcblxubGV0IGNsYXNzZXMgY2xhc3NuYW1lcyA9XG4gIGlmIG5vdCAoTGlzdC5mb3JfYWxsIH5mOnZhbGlkX2NsYXNzX25hbWUgY2xhc3NuYW1lcylcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgY2xhc3NuYW1lc1wiIChjbGFzc25hbWVzIDogc3RyaW5nIGxpc3QpXTtcbiAgY2xhc3NlcycgKFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKSBjbGFzc25hbWVzKVxuOztcblxubGV0IGlkIHMgPSBjcmVhdGUgXCJpZFwiIHNcbmxldCBuYW1lIHMgPSBjcmVhdGUgXCJuYW1lXCIgc1xubGV0IGhyZWYgciA9IGNyZWF0ZSBcImhyZWZcIiByXG5sZXQgdGFyZ2V0IHMgPSBjcmVhdGUgXCJ0YXJnZXRcIiBzXG5sZXQgY2hlY2tlZCA9IGNyZWF0ZSBcImNoZWNrZWRcIiBcIlwiXG5sZXQgc2VsZWN0ZWQgPSBjcmVhdGUgXCJzZWxlY3RlZFwiIFwiXCJcbmxldCBoaWRkZW4gPSBjcmVhdGUgXCJoaWRkZW5cIiBcIlwiXG5sZXQgcmVhZG9ubHkgPSBjcmVhdGUgXCJyZWFkb25seVwiIFwiXCJcbmxldCBkaXNhYmxlZCA9IGNyZWF0ZSBcImRpc2FibGVkXCIgXCJcIlxubGV0IHBsYWNlaG9sZGVyIHggPSBjcmVhdGUgXCJwbGFjZWhvbGRlclwiIHhcblxubGV0IGF1dG9mb2N1cyA9IGZ1bmN0aW9uXG4gIHwgdHJ1ZSAtPiBjcmVhdGUgXCJhdXRvZm9jdXNcIiBcIlwiXG4gIHwgZmFsc2UgLT4gZW1wdHlcbjs7XG5cbmxldCBmb3JfIHggPSBjcmVhdGUgXCJmb3JcIiB4XG5sZXQgdHlwZV8geCA9IGNyZWF0ZSBcInR5cGVcIiB4XG5sZXQgdmFsdWUgeCA9IGNyZWF0ZSBcInZhbHVlXCIgeFxubGV0IHZhbHVlX3Byb3AgeCA9IHN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgeFxubGV0IHRhYmluZGV4IHggPSBjcmVhdGUgXCJ0YWJpbmRleFwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgdGl0bGUgeCA9IGNyZWF0ZSBcInRpdGxlXCIgeFxubGV0IHNyYyB4ID0gY3JlYXRlIFwic3JjXCIgeFxubGV0IG1pbiB4ID0gY3JlYXRlX2Zsb2F0IFwibWluXCIgeFxubGV0IG1heCB4ID0gY3JlYXRlX2Zsb2F0IFwibWF4XCIgeFxubGV0IGNvbHNwYW4geCA9IGNyZWF0ZSBcImNvbHNwYW5cIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHJvd3NwYW4geCA9IGNyZWF0ZSBcInJvd3NwYW5cIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IGRyYWdnYWJsZSBiID0gY3JlYXRlIFwiZHJhZ2dhYmxlXCIgKEJvb2wudG9fc3RyaW5nIGIpXG5cbm1vZHVsZSBUeXBlX2lkID0gc3RydWN0XG4gICgqIFdlIHByb3ZpZGUgYSB0cml2aWFsIFt0b19zZXhwXSBmdW5jdGlvbiBzaW5jZSB3ZSBvbmx5IHdhbnRcbiAgICAgdG8gdW5pZnkgdHlwZSBpZHMgYW5kIG5vdCBjb252ZXJ0IHR5cGVzIHRvIGlkcyAqKVxuICBsZXQgY3JlYXRlIG5hbWUgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSAoZnVuIF8gLT4gU2V4cGxpYi5TZXhwLkxpc3QgW10pXG4gIGxldCAoZXZlbnQgOiBEb21faHRtbC5ldmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZXZlbnRcIlxuICBsZXQgKGZvY3VzIDogRG9tX2h0bWwuZm9jdXNFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZm9jdXNFdmVudFwiXG4gIGxldCAobW91c2UgOiBEb21faHRtbC5tb3VzZUV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJtb3VzZUV2ZW50XCJcbiAgbGV0IChrZXlib2FyZCA6IERvbV9odG1sLmtleWJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImtleWJvYXJkRXZlbnRcIlxuICBsZXQgKHN1Ym1pdCA6IERvbV9odG1sLnN1Ym1pdEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJzdWJtaXRFdmVudFwiXG4gIGxldCAobW91c2V3aGVlbCA6IERvbV9odG1sLm1vdXNld2hlZWxFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2V3aGVlbEV2ZW50XCJcbiAgbGV0IChjbGlwYm9hcmQgOiBEb21faHRtbC5jbGlwYm9hcmRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiY2xpcGJvYXJkRXZlbnRcIlxuICBsZXQgKGRyYWcgOiBEb21faHRtbC5kcmFnRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImRyYWdFdmVudFwiXG4gIGxldCAocG9pbnRlciA6IERvbV9odG1sLnBvaW50ZXJFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwicG9pbnRlckV2ZW50XCJcbiAgbGV0IChhbmltYXRpb24gOiBEb21faHRtbC5hbmltYXRpb25FdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiYW5pbWF0aW9uRXZlbnRcIlxuZW5kXG5cbmxldCBvbiB0eXBlX2lkIG5hbWUgKGhhbmRsZXIgOiAjRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50KSA6IHQgPVxuICBIYW5kbGVyIHsgbmFtZTsgaGFuZGxlciA9IFQgeyBoYW5kbGVyOyB0eXBlX2lkIH0gfVxuOztcblxubGV0IG9uX2ZvY3VzID0gb24gVHlwZV9pZC5mb2N1cyBcImZvY3VzXCJcbmxldCBvbl9ibHVyID0gb24gVHlwZV9pZC5mb2N1cyBcImJsdXJcIlxubGV0IG9uX2NsaWNrID0gb24gVHlwZV9pZC5tb3VzZSBcImNsaWNrXCJcbmxldCBvbl9jb250ZXh0bWVudSA9IG9uIFR5cGVfaWQubW91c2UgXCJjb250ZXh0bWVudVwiXG5sZXQgb25fZG91YmxlX2NsaWNrID0gb24gVHlwZV9pZC5tb3VzZSBcImRibGNsaWNrXCJcbmxldCBvbl9kcmFnID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ1wiXG5sZXQgb25fZHJhZ3N0YXJ0ID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ3N0YXJ0XCJcbmxldCBvbl9kcmFnZW5kID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2VuZFwiXG5sZXQgb25fZHJhZ2VudGVyID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2VudGVyXCJcbmxldCBvbl9kcmFnbGVhdmUgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnbGVhdmVcIlxubGV0IG9uX2RyYWdvdmVyID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ292ZXJcIlxubGV0IG9uX2Ryb3AgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcm9wXCJcbmxldCBvbl9tb3VzZW1vdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vtb3ZlXCJcbmxldCBvbl9tb3VzZXVwID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNldXBcIlxubGV0IG9uX21vdXNlZG93biA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWRvd25cIlxubGV0IG9uX21vdXNlZW50ZXIgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VlbnRlclwiXG5sZXQgb25fbW91c2VsZWF2ZSA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWxlYXZlXCJcbmxldCBvbl9tb3VzZW92ZXIgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdmVyXCJcbmxldCBvbl9tb3VzZW91dCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW91dFwiXG5sZXQgb25fa2V5dXAgPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5dXBcIlxubGV0IG9uX2tleXByZXNzID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXByZXNzXCJcbmxldCBvbl9rZXlkb3duID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleWRvd25cIlxubGV0IG9uX3Njcm9sbCA9IG9uIFR5cGVfaWQuZXZlbnQgXCJzY3JvbGxcIlxubGV0IG9uX3N1Ym1pdCA9IG9uIFR5cGVfaWQuc3VibWl0IFwic3VibWl0XCJcbmxldCBvbl9wb2ludGVyZG93biA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJkb3duXCJcbmxldCBvbl9wb2ludGVydXAgPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVydXBcIlxubGV0IG9uX21vdXNld2hlZWwgPSBvbiBUeXBlX2lkLm1vdXNld2hlZWwgXCJtb3VzZXdoZWVsXCJcbmxldCBvbl9jb3B5ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjb3B5XCJcbmxldCBvbl9jdXQgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcImN1dFwiXG5sZXQgb25fcGFzdGUgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcInBhc3RlXCJcbmxldCBvbl9yZXNldCA9IG9uIFR5cGVfaWQuZXZlbnQgXCJyZXNldFwiXG5sZXQgb25fYW5pbWF0aW9uZW5kID0gb24gVHlwZV9pZC5hbmltYXRpb24gXCJhbmltYXRpb25lbmRcIlxubGV0IGNvbnN0X2lnbm9yZSBfID0gRWZmZWN0Lklnbm9yZVxuXG5jbGFzcyB0eXBlIHZhbHVlX2VsZW1lbnQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IERvbV9odG1sLmVsZW1lbnRcbiAgICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG50eXBlIHZhbHVlX2NvZXJjaW9uID0gRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZhbHVlX2VsZW1lbnQgSnMudCBKcy5vcHRcblxubGV0IHJ1bl9jb2VyY2lvbiBjb2VyY2lvbiB0YXJnZXQgcHJldiA9XG4gIG1hdGNoIHByZXYgd2l0aFxuICB8IFNvbWUgXyAtPiBwcmV2XG4gIHwgTm9uZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2lvbiB0YXJnZXQpXG47O1xuXG5sZXQgY29lcmNlX3ZhbHVlX2VsZW1lbnQgdGFyZ2V0ID1cbiAgbGV0IG9wZW4gRG9tX2h0bWwuQ29lcmNlVG8gaW5cbiAgTm9uZVxuICB8PiBydW5fY29lcmNpb24gKGlucHV0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uIChzZWxlY3QgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuICB8PiBydW5fY29lcmNpb24gKHRleHRhcmVhIDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbjs7XG5cbmxldCBvbl9pbnB1dF9ldmVudCB0eXBlX2lkIGV2ZW50IGhhbmRsZXIgPVxuICBvbiB0eXBlX2lkIGV2ZW50IChmdW4gZXYgLT5cbiAgICBKcy5PcHQuY2FzZSBldiMjLnRhcmdldCBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgKGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldClcbiAgICAgICAgfmRlZmF1bHQ6RWZmZWN0Lklnbm9yZVxuICAgICAgICB+ZjooZnVuIHRhcmdldCAtPlxuICAgICAgICAgIGxldCB0ZXh0ID0gSnMudG9fc3RyaW5nIHRhcmdldCMjLnZhbHVlIGluXG4gICAgICAgICAgaGFuZGxlciBldiB0ZXh0KSkpXG47O1xuXG5sZXQgb25fY2hhbmdlID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImNoYW5nZVwiXG5sZXQgb25faW5wdXQgPSBvbl9pbnB1dF9ldmVudCBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIlxubGV0IHRvX3JhdyBsID0gdG9fcmF3IGxcblxubGV0IG9uX2ZpbGVfaW5wdXQgaGFuZGxlciA9XG4gIG9uIFR5cGVfaWQuZXZlbnQgXCJpbnB1dFwiIChmdW4gZXYgLT5cbiAgICBKcy5PcHQuY2FzZSBldiMjLnRhcmdldCBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgIEpzLk9wdC5jYXNlIChEb21faHRtbC5Db2VyY2VUby5pbnB1dCB0YXJnZXQpIGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgICBKcy5PcHRkZWYuY2FzZSB0YXJnZXQjIy5maWxlcyBjb25zdF9pZ25vcmUgKGZ1biBmaWxlcyAtPiBoYW5kbGVyIGV2IGZpbGVzKSkpKVxuOztcblxubW9kdWxlIEFsd2F5c19mb2N1c19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXRcblxuICAgICAgbGV0IGNvbWJpbmUgKCkgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgKCkgXyA9ICgpXG4gICAgbGV0IG9uX21vdW50ICgpICgpIGVsZW1lbnQgPSBlbGVtZW50IyNmb2N1c1xuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dDooKSB+bmV3X2lucHV0OigpICgpIF8gPSAoKVxuICAgIGxldCBkZXN0cm95ICgpICgpIF8gPSAoKVxuICBlbmRcblxuICBtb2R1bGUgSG9vayA9IEhvb2tzLk1ha2UgKFQpXG5cbiAgbGV0IGF0dHIgYFJlYWRfdGhlX2RvY3NfX3RoaXNfaG9va19pc191bnByZWRpY3RhYmxlID1cbiAgICAoKiBBcHBlbmQgdGhlIGlkIHRvIHRoZSBuYW1lIG9mIHRoZSBob29rIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGRpc3RpbmN0XG4gICAgICAgZnJvbSBhbGwgb3RoZXIgZm9jdXMgaG9va3MuICopXG4gICAgY3JlYXRlX2hvb2sgXCJhbHdheXMtZm9jdXMtaG9va1wiIChIb29rLmNyZWF0ZSAoKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2luZ2xlX2ZvY3VzX2hvb2sgKCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBsZXQgaGFzX2JlZW5fdXNlZCA9IHJlZiBmYWxzZVxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAodW5pdCBVaV9lZmZlY3QudFtAc2V4cC5vcGFxdWVdKSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gVWlfZWZmZWN0Lk1hbnkgWyBsZWZ0OyByaWdodCBdXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCBfIF8gPSAoKVxuXG4gICAgbGV0IG9uX21vdW50IGV2ZW50ICgpIGVsZW1lbnQgPVxuICAgICAgaWYgbm90ICFoYXNfYmVlbl91c2VkXG4gICAgICB0aGVuIChcbiAgICAgICAgaGFzX2JlZW5fdXNlZCA6PSB0cnVlO1xuICAgICAgICBlbGVtZW50IyNmb2N1cztcbiAgICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gZXZlbnQpXG4gICAgOztcblxuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dDpfIH5uZXdfaW5wdXQ6XyAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSBfICgpIF8gPSAoKVxuICBlbmRcblxuICBtb2R1bGUgSG9vayA9IEhvb2tzLk1ha2UgKFQpXG5cbiAgbGV0IGF0dHIgYFJlYWRfdGhlX2RvY3NfX3RoaXNfaG9va19pc191bnByZWRpY3RhYmxlIH5hZnRlciA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwic2luZ2xlLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgYWZ0ZXIpXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpID0gc3RydWN0XG5cbiAgdHlwZSBhdHRyID0gdFxuICB0eXBlIHQgPSBhdHRyIGxpc3RcblxuICBsZXQgbWFwX3N0eWxlIHQgfmYgPSBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIGYsIEZuLmlkKSBdXG5cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPVxuICAgIFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIGZ1biBjcyAtPiBTZXQuYWRkIGNzIGMpIF1cbiAgOztcblxuICBsZXQgYWRkX3N0eWxlIHQgcyA9IG1hcF9zdHlsZSB0IH5mOihmdW4gc3MgLT4gQ3NzX2dlbi5jb21iaW5lIHNzIHMpXG5cbiAgbGV0IG1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyB0ID1cbiAgICBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIEZuLmlkLCBGbi5pZCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJlYyBmaWx0ZXJfYnlfa2luZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFByb3BlcnR5IF8gLT4gaWYgZiBgUHJvcGVydHkgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEF0dHJpYnV0ZSBfIC0+IGlmIGYgYEF0dHJpYnV0ZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSG9vayBfIC0+IGlmIGYgYEhvb2sgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhhbmRsZXIgXyAtPiBpZiBmIGBIYW5kbGVyIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBTdHlsZSBfIC0+IGlmIGYgYFN0eWxlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBDbGFzcyBfIC0+IGlmIGYgYENsYXNzIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBNYW55IGF0dHJzIC0+IE1hbnkgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgYSwgYikgLT5cbiAgICAgIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZiksIGEsIGIpXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgIE1hbnlfd2l0aG91dF9tZXJnZSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IgPSBmdW5jdGlvblxuICAgIHwgUHJvcGVydHkgeyBuYW1lOyBfIH0gfCBBdHRyaWJ1dGUgeyBuYW1lOyBfIH0gfCBIb29rIHsgbmFtZTsgXyB9IC0+XG4gICAgICBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgbmFtZVxuICAgIHwgSGFuZGxlciB7IG5hbWU7IF8gfSAtPiBTdHJpbmcuZXF1YWwgKFwib25cIiBeIG5hbWUpIGxvb2tpbmdfZm9yXG4gICAgfCBTdHlsZSBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcInN0eWxlXCJcbiAgICB8IENsYXNzIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwiY2xhc3NcIlxuICAgIHwgTWFueSBhdHRyc1xuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIF8sIF8pXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT4gTGlzdC5leGlzdHMgfmY6KGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IpIGF0dHJzXG4gIDs7XG5lbmRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB2YWwgZXZlbnRfa2luZCA6IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCBEb20uRXZlbnQudHlwXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgSG9va3MuTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICBsZXQgY29tYmluZSBmIGcgZXZlbnQgPSBVaV9lZmZlY3QuTWFueSBbIGYgZXZlbnQ7IGcgZXZlbnQgXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7IG11dGFibGUgbGlzdGVuZXIgOiAoRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRbQHNleHAub3BhcXVlXSkgfVxuICAgICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBzZXQgZiA9XG4gICAgICAgIGxldCBoYW5kbGVyID1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIGV2IC0+XG4gICAgICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biAoZiBldik7XG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgaW5cbiAgICAgICAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciBEb21faHRtbC53aW5kb3cgWC5ldmVudF9raW5kIGhhbmRsZXIgSnMuX3RydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbml0IGYgX2VsZW1lbnQgPSB7IFN0YXRlLmxpc3RlbmVyID0gc2V0IGYgfVxuICAgICAgbGV0IGRlc3Ryb3kgX2lucHV0IHN0YXRlIF9lbGVtZW50ID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBzdGF0ZS5TdGF0ZS5saXN0ZW5lclxuXG4gICAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDpmIHN0YXRlIGVsZW1lbnQgPVxuICAgICAgICAoKiBpZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gY2hhbmdlcywgY2FuY2VsIHRoZSBvbGQgb25lIGFuZCByZS1pbnN0YWxsICopXG4gICAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICAgIGxldCBuZXdfc3RhdGUgPSBpbml0IGYgZWxlbWVudCBpblxuICAgICAgICBzdGF0ZS5TdGF0ZS5saXN0ZW5lciA8LSBuZXdfc3RhdGUubGlzdGVuZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1vdXNlX3VwID0gTWFrZSAoc3RydWN0XG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZXVwXG4gIGVuZClcblxubW9kdWxlIE1vdXNlX21vdmUgPSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNlbW92ZVxuICBlbmQpXG5cbmxldCBtb3VzZXVwIGYgPSBNb3VzZV91cC5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLW1vdXNldXAtbGlzdGVuZXJcIlxubGV0IG1vdXNlbW92ZSBmID0gTW91c2VfbW92ZS5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLW1vdXNlbW92ZS1saXN0ZW5lclwiXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBsZXQgbW91c2VfdXBfdHlwZV9pZCA9IE1vdXNlX3VwLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IG1vdXNlX21vdmVfdHlwZV9pZCA9IE1vdXNlX21vdmUuRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBvcGVuIEpzX29mX29jYW1sXG4gIGluY2x1ZGUgUmF3LldpZGdldFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIGRvbSA9IHByaXZhdGUgI0RvbV9odG1sLmVsZW1lbnRcblxuICAgIG1vZHVsZSBJbnB1dCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgY3JlYXRlIDogSW5wdXQudCAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCB1cGRhdGVcbiAgICAgIDogIHByZXZfaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gc3RhdGU6U3RhdGUudFxuICAgICAgLT4gZWxlbWVudDpkb20gSnMudFxuICAgICAgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgZGVzdHJveSA6IHByZXZfaW5wdXQ6SW5wdXQudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IGVsZW1lbnQ6ZG9tIEpzLnQgLT4gdW5pdFxuICBlbmRcblxuICBsZXQgb2ZfbW9kdWxlICh0eXBlIGlucHV0KSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSBJbnB1dC50ID0gaW5wdXQpID1cbiAgICBsZXQgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGlucHV0IDogTS5JbnB1dC50XG4gICAgICAgIDsgc3RhdGUgOiBNLlN0YXRlLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBzZXhwX29mX2RvbSA6IE0uZG9tIEpzLnQgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIiBpblxuICAgIGxldCBpZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOk0ubmFtZSBbJXNleHBfb2Y6IFN0YXRlLnQgKiBkb21dIGluXG4gICAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpbnB1dCAtPlxuICAgICAgbGV0IGluZm8gPSBsYXp5IChNLklucHV0LnNleHBfb2ZfdCBpbnB1dCkgaW5cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+aWRcbiAgICAgICAgfmluZm9cbiAgICAgICAgfmluaXQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0uY3JlYXRlIGlucHV0IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfnVwZGF0ZTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLnVwZGF0ZSB+cHJldl9pbnB1dCB+aW5wdXQgfnN0YXRlIH5lbGVtZW50IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfmRlc3Ryb3k6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgTS5kZXN0cm95IH5wcmV2X2lucHV0IH5zdGF0ZSB+ZWxlbWVudClcbiAgICAgICAgKCkpXG4gIDs7XG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgeyB0YWcgOiBzdHJpbmdcbiAgOyBrZXkgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYXR0cnMgOiBBdHRyLnRcbiAgOyByYXdfYXR0cnMgOiBSYXcuQXR0cnMudCBMYXp5LnRcbiAgOyBjaGlsZHJlbiA6IFJhdy5Ob2RlLnQgSnMuanNfYXJyYXkgSnMudFxuICA7IGtpbmQgOiBbIGBWbm9kZSB8IGBTdmcgXVxuICB9XG5cbmFuZCB0ID1cbiAgfCBOb25lXG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbGVtZW50IG9mIGVsZW1lbnRcbiAgfCBXaWRnZXQgb2YgV2lkZ2V0LnRcblxubW9kdWxlIEFsaWFzZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub2RlX2NyZWF0b3IgPSA/a2V5OnN0cmluZyAtPiA/YXR0cjpBdHRyLnQgLT4gdCBsaXN0IC0+IHRcbiAgdHlwZSBub2RlX2NyZWF0b3JfY2hpbGRsZXNzID0gP2tleTpzdHJpbmcgLT4gP2F0dHI6QXR0ci50IC0+IHVuaXQgLT4gdFxuZW5kXG5cbm1vZHVsZSBFbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGVsZW1lbnRcblxuICBsZXQgdGFnIHQgPSB0LnRhZ1xuICBsZXQgYXR0cnMgdCA9IHQuYXR0cnNcbiAgbGV0IGtleSB0ID0gdC5rZXlcbiAgbGV0IHdpdGhfa2V5IHQga2V5ID0geyB0IHdpdGgga2V5ID0gU29tZSBrZXkgfVxuXG4gIGxldCBtYXBfYXR0cnMgdCB+ZiA9XG4gICAgbGV0IGF0dHJzID0gZiB0LmF0dHJzIGluXG4gICAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICAgIHsgdCB3aXRoIGF0dHJzOyByYXdfYXR0cnMgfVxuICA7O1xuXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc18gYykpXG4gIGxldCBhZGRfY2xhc3NlcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzZXMgYykpXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBzdHlsZSBzKSlcbmVuZFxuXG5sZXQgdF90b19qcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICgqIFdlIG5vcm1hbGx5IGZpbHRlciB0aGVzZSBvdXQsIGJ1dCBpZiBbdG9fanNdIGlzIGNhbGxlZCBkaXJlY3RseSBvbiBhIFtOb25lXSBub2RlLFxuICAgICAgIHdlIHVzZSB0aGlzIGhhY2suIEFzaWRlIGZyb20gaGF2aW5nIGEgW1RleHRdIG5vZGUgd2l0aG91dCBhbnkgdGV4dCBwcmVzZW50IGluIHRoZVxuICAgICAgIERvbSwgdGhlcmUgc2hvdWxkIGJlIG5vIHVud2FudGVkIHNpZGUtZWZmZWN0cy4gIEluIGFuIEluY3JfZG9tIGFwcGxpY2F0aW9uLCB0aGlzXG4gICAgICAgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHJvb3QgdmlldyBJbmNyZW1lbnRhbCBpcyBpbmhhYml0ZWQgYnkgYSBbTm9uZV0uICopXG4gICAgUmF3Lk5vZGUudGV4dCBcIlwiXG4gIHwgVGV4dCBzIC0+IFJhdy5Ob2RlLnRleHQgc1xuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBWbm9kZSB9XG4gICAgLT4gUmF3Lk5vZGUubm9kZSB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBTdmcgfVxuICAgIC0+IFJhdy5Ob2RlLnN2ZyB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IFdpZGdldCB3IC0+IHdcbjs7XG5cbmxldCBlbGVtZW50IGtpbmQgfnRhZyB+a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IGNoaWxkcmVuX3JhdyA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICBMaXN0Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCAoVGV4dCBfIHwgRWxlbWVudCBfIHwgV2lkZ2V0IF8pIGFzIG90aGVyIC0+XG4gICAgICBsZXQgKF8gOiBpbnQpID0gY2hpbGRyZW5fcmF3IyNwdXNoICh0X3RvX2pzIG90aGVyKSBpblxuICAgICAgKCkpO1xuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuID0gY2hpbGRyZW5fcmF3IH1cbjs7XG5cbmxldCBlbGVtZW50X2V4cGVydCBraW5kIH50YWcgP2tleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgeyBraW5kOyB0YWc7IGtleTsgYXR0cnM7IHJhd19hdHRyczsgY2hpbGRyZW4gfVxuOztcblxubGV0IHRleHQgcyA9IFRleHQgc1xuXG5sZXQgd2lkZ2V0ID9pbmZvID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpID1cbiAgV2lkZ2V0IChXaWRnZXQuY3JlYXRlID9pbmZvID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpKVxuOztcblxubGV0IGNyZWF0ZSB0YWcgP2tleSA/KGF0dHIgPSBBdHRyLmVtcHR5KSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFZub2RlIH50YWcgfmtleSBhdHRyIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9jaGlsZGxlc3MgdGFnID9rZXkgP2F0dHIgKCkgPSBjcmVhdGUgdGFnID9rZXkgP2F0dHIgW11cblxubGV0IGNyZWF0ZV9zdmcgdGFnID9rZXkgPyhhdHRyID0gQXR0ci5lbXB0eSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IGF0dHIgY2hpbGRyZW4pXG47O1xuXG5sZXQgY3JlYXRlX3N2Z19tb25vaWQgdGFnID9rZXkgPyhhdHRyID0gQXR0ci5lbXB0eSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IGF0dHIgY2hpbGRyZW4pXG47O1xuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCB0ZXh0ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgdGV4dCBmb3JtYXRcblxubGV0IHdpZGdldF9vZl9tb2R1bGUgbSA9XG4gIGxldCBmID0gQmFzZS5TdGFnZWQudW5zdGFnZSAoV2lkZ2V0Lm9mX21vZHVsZSBtKSBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSAoZnVuIGkgLT4gV2lkZ2V0IChmIGkpKVxuOztcblxubGV0IHRvX3JhdyA9IHRfdG9fanNcbmxldCB0b19kb20gdCA9IFJhdy5Ob2RlLnRvX2RvbSAodG9fcmF3IHQpXG5cbmxldCBpbm5lcl9odG1sXG4gICAgICBjcmVhdGVcbiAgICAgIH50YWdcbiAgICAgIH5hdHRyXG4gICAgICB+dGhpc19odG1sX2lzX3Nhbml0aXplZF9hbmRfaXNfdG90YWxseV9zYWZlX3RydXN0X21lOmNvbnRlbnRcbiAgPVxuICBsZXQgZWxlbWVudCA9IGNyZWF0ZSB0YWcgfmF0dHIgW10gaW5cbiAgbGV0IGJ1aWxkX3NleHAgfmV4dHJhIH5jb250ZW50ID1cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJpbm5lci1odG1sXCI7IGV4dHJhOyBTZXhwLkF0b20gY29udGVudCBdXG4gIGluXG4gIGxldCBpZCA9XG4gICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJpbm5lci1odG1sLW5vZGVcIiAoZnVuICgoZWxlbWVudCwgY29udGVudCksIF8pIC0+XG4gICAgICBidWlsZF9zZXhwIH5leHRyYTplbGVtZW50IH5jb250ZW50KVxuICBpblxuICBsZXQgZGVidWcgPVxuICAgIG1hdGNoIGVsZW1lbnQgd2l0aFxuICAgIHwgRWxlbWVudCBlbGVtZW50IC0+IFNleHAuQXRvbSAoRWxlbWVudC50YWcgZWxlbWVudClcbiAgICB8IFdpZGdldCBfIC0+IGZhaWx3aXRoIFwiVmRvbS5Ob2RlLmlubmVyX2h0bWwgd2FzIGdpdmVuIGEgJ3dpZGdldCdcIlxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlZkb20uTm9kZS5pbm5lcl9odG1sIHdhcyBnaXZlbiBhICdub25lJ1wiXG4gICAgfCBUZXh0IF8gLT4gZmFpbHdpdGggXCJWZG9tLk5vZGUuaW5uZXJfaHRtbCB3YXMgZ2l2ZW4gYSAndGV4dCdcIlxuICBpblxuICB3aWRnZXRcbiAgICB+aWRcbiAgICB+aW5mbzoobGF6eSAoYnVpbGRfc2V4cCB+ZXh0cmE6ZGVidWcgfmNvbnRlbnQpKVxuICAgIH5pbml0OihmdW4gKCkgLT5cbiAgICAgIGxldCBlbGVtZW50ID0gdG9fZG9tIGVsZW1lbnQgaW5cbiAgICAgIGVsZW1lbnQjIy5pbm5lckhUTUwgOj0gSnMuc3RyaW5nIGNvbnRlbnQ7XG4gICAgICAoZGVidWcsIGNvbnRlbnQpLCBlbGVtZW50KVxuICAgICgpXG47O1xuXG5sZXQgaW5uZXJfaHRtbF9zdmcgPSBpbm5lcl9odG1sIChmdW4gdGFnIH5hdHRyIC0+IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5Ok5vbmUgfmF0dHIpXG5sZXQgaW5uZXJfaHRtbCA9IGlubmVyX2h0bWwgKGZ1biB0YWcgfmF0dHIgLT4gY3JlYXRlIHRhZyA/a2V5Ok5vbmUgfmF0dHIpXG5sZXQgYSA9IGNyZWF0ZSBcImFcIlxubGV0IGJvZHkgPSBjcmVhdGUgXCJib2R5XCJcbmxldCBidXR0b24gPSBjcmVhdGUgXCJidXR0b25cIlxubGV0IGNvZGUgPSBjcmVhdGUgXCJjb2RlXCJcbmxldCBkaXYgPSBjcmVhdGUgXCJkaXZcIlxubGV0IG1haW4gPSBjcmVhdGUgXCJtYWluXCJcbmxldCBmaWVsZHNldCA9IGNyZWF0ZSBcImZpZWxkc2V0XCJcbmxldCBmb290ZXIgPSBjcmVhdGUgXCJmb290ZXJcIlxubGV0IGgxID0gY3JlYXRlIFwiaDFcIlxubGV0IGgyID0gY3JlYXRlIFwiaDJcIlxubGV0IGgzID0gY3JlYXRlIFwiaDNcIlxubGV0IGg0ID0gY3JlYXRlIFwiaDRcIlxubGV0IGg1ID0gY3JlYXRlIFwiaDVcIlxubGV0IGg2ID0gY3JlYXRlIFwiaDZcIlxubGV0IGhlYWRlciA9IGNyZWF0ZSBcImhlYWRlclwiXG5sZXQgaHRtbCA9IGNyZWF0ZSBcImh0bWxcIlxubGV0IGlucHV0ID0gY3JlYXRlIFwiaW5wdXRcIlxubGV0IHRleHRhcmVhID0gY3JlYXRlIFwidGV4dGFyZWFcIlxubGV0IHNlbGVjdCA9IGNyZWF0ZSBcInNlbGVjdFwiXG5sZXQgb3B0aW9uID0gY3JlYXRlIFwib3B0aW9uXCJcbmxldCBsYWJlbCA9IGNyZWF0ZSBcImxhYmVsXCJcbmxldCBsaSA9IGNyZWF0ZSBcImxpXCJcbmxldCBwID0gY3JlYXRlIFwicFwiXG5sZXQgcHJlID0gY3JlYXRlIFwicHJlXCJcbmxldCBzZWN0aW9uID0gY3JlYXRlIFwic2VjdGlvblwiXG5sZXQgc3BhbiA9IGNyZWF0ZSBcInNwYW5cIlxubGV0IHN0cm9uZyA9IGNyZWF0ZSBcInN0cm9uZ1wiXG5sZXQgdGFibGUgPSBjcmVhdGUgXCJ0YWJsZVwiXG5sZXQgdGJvZHkgPSBjcmVhdGUgXCJ0Ym9keVwiXG5sZXQgdGQgPSBjcmVhdGUgXCJ0ZFwiXG5sZXQgdGggPSBjcmVhdGUgXCJ0aFwiXG5sZXQgdGhlYWQgPSBjcmVhdGUgXCJ0aGVhZFwiXG5sZXQgdHIgPSBjcmVhdGUgXCJ0clwiXG5sZXQgdWwgPSBjcmVhdGUgXCJ1bFwiXG5sZXQgb2wgPSBjcmVhdGUgXCJvbFwiXG5sZXQgYnIgPSBjcmVhdGVfY2hpbGRsZXNzIFwiYnJcIlxubGV0IGhyID0gY3JlYXRlX2NoaWxkbGVzcyBcImhyXCJcblxubGV0IHNleHBfZm9yX2RlYnVnZ2luZyA/aW5kZW50IHNleHAgPVxuICBzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSA/aW5kZW50IHw+IHRleHQgfD4gTGlzdC5yZXR1cm4gfD4gcHJlIH5hdHRyOkF0dHIuZW1wdHlcbjs7XG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSYXcuUGF0Y2gudFxuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID1cbiAgICBSYXcuUGF0Y2guY3JlYXRlIH5wcmV2aW91czoodF90b19qcyBwcmV2aW91cykgfmN1cnJlbnQ6KHRfdG9fanMgY3VycmVudClcbiAgOztcblxuICBsZXQgYXBwbHkgdCBlbHQgPSBSYXcuUGF0Y2guYXBwbHkgZWx0IHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBSYXcuUGF0Y2guaXNfZW1wdHkgdFxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFZub2RlID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcblxuICBsZXQgY3JlYXRlX3N2ZyA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFN2ZyA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGluY2x1ZGUgQXR0clxuICBtb2R1bGUgSG9va3MgPSBIb29rc1xuICBtb2R1bGUgR2xvYmFsX2xpc3RlbmVycyA9IEdsb2JhbF9saXN0ZW5lcnNcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBBdHRyLk11bHRpXG5tb2R1bGUgRWZmZWN0ID0gRWZmZWN0XG5tb2R1bGUgTm9kZSA9IE5vZGVcbiIsIm1vZHVsZSBWZG9tID0gVmRvbVxubW9kdWxlIERvbV9mbG9hdCA9IERvbV9mbG9hdFxuXG5tb2R1bGUgVG9wX2xldmVsX2VmZmVjdHMgPSBzdHJ1Y3RcbiAgbGV0ICgpID1cbiAgICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgICAgbnVtYmVycyBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZS4gKilcbiAgICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENwdXNldCA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludC5TZXQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cblxuICAgICAgbGV0IHZhbGlkYXRlIHQgPVxuICAgICAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlXG4gICAgICAgICAgKEludC52YWxpZGF0ZV9sYm91bmQgfm1pbjooSW5jbCAxKSAoSW50LlNldC5sZW5ndGggdCkpXG4gICAgICAgICAgKEludC5TZXQudG9fbGlzdCB0XG4gICAgICAgICAgIHw+IExpc3QubWFwIH5mOkludC52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgICAgICAgICAgfD4gVmFsaWRhdGUubmFtZV9saXN0IFwiVGhyZWFkX3Bvb2xfY3B1c2V0XCIpXG4gICAgICA7O1xuICAgIGVuZClcblxuICBsZXQgZXF1YWwgdDEgdDIgPSBJbnQuU2V0LmVxdWFsICh0MSB8PiByYXcpICh0MiB8PiByYXcpXG5lbmRcblxudHlwZSB0ID1cbiAgfCBJbmhlcml0XG4gIHwgQ3B1c2V0IG9mIENwdXNldC50XG5bQEBkZXJpdmluZyBzZXhwXVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR1cGxlX3R5cGVfaW50ZlxuXG5tb2R1bGUgU2xvdHMgPSBzdHJ1Y3RcbiAgdHlwZSB1XyA9IHsgc2xvdHNfcGVyX3R1cGxlIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ3R1cGxlLCAndmFyaWFudCkgdSA9IHVfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgdF8gPSBbIGBTbG90cyBvZiB1XyBdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzbG90c19wZXJfdHVwbGUgKGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IG4gfSkgPSBuXG5cbiAgdHlwZSAnYTAgdDEgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSkgdDIgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyKSB0MyA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMykgdDQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCkgdDUgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1KSB0NiA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNikgdDcgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNykgdDggPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4KSB0OSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSkgdDEwID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTApIHQxMSA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExKSB0MTIgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSwgJ2ExMikgdDEzID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIsICdhMTMpIHQxNCA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHQxID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMSB9XG4gIGxldCB0MiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDIgfVxuICBsZXQgdDMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAzIH1cbiAgbGV0IHQ0ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNCB9XG4gIGxldCB0NSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDUgfVxuICBsZXQgdDYgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA2IH1cbiAgbGV0IHQ3ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNyB9XG4gIGxldCB0OCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDggfVxuICBsZXQgdDkgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA5IH1cbiAgbGV0IHQxMCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEwIH1cbiAgbGV0IHQxMSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDExIH1cbiAgbGV0IHQxMiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEyIH1cbiAgbGV0IHQxMyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEzIH1cbiAgbGV0IHQxNCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDE0IH1cbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR1cGxlX3Bvb2xfaW50ZlxubW9kdWxlIFR1cGxlX3R5cGUgPSBUdXBsZV90eXBlXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBwaHlzX2VxdWFsID0gQ2FtbC4oID09IClcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG51bV9iaXRzID0gSW50Lm51bV9iaXRzXG4gIGxldCBtYXhfdmFsdWUgPSBDYW1sLm1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgY29uY2F0IGwgPSBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIlwiIGxcblxubW9kdWxlIHR5cGUgUyA9IFNcblxubW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgbGV0IGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gaWYgb2xkX2NhcGFjaXR5ID0gMCB0aGVuIDEgZWxzZSBvbGRfY2FwYWNpdHkgKiAyXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8PSBvbGRfY2FwYWNpdHlcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9vbC5ncm93IGdvdCB0b28gc21hbGwgY2FwYWNpdHlcIlxuICAgICAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHksIGBvbGRfY2FwYWNpdHkgb2xkX2NhcGFjaXR5KVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IF0gKiBbIGBvbGRfY2FwYWNpdHkgb2YgaW50IF1dO1xuICAgICAgY2FwYWNpdHlcbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBUdXBsZV90eXBlLlNsb3RzXG5cbiAgbGV0IG1heF9zbG90ID0gMTRcblxuICAoKiBUaGUgcG9vbCBpcyByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBbVW5pZm9ybV9hcnJheS50XSwgd2hlcmUgaW5kZXggemVybyBoYXMgdGhlXG4gICAgIG1ldGFkYXRhIGFib3V0IHRoZSBwb29sIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgYXJlIHRoZSB0dXBsZXMgbGF5ZWQgb3V0IG9uZSBhZnRlclxuICAgICB0aGUgb3RoZXIuICBFYWNoIHR1cGxlIHRha2VzIFsxICsgc2xvdHNfcGVyX3R1cGxlXSBpbmRpY2VzIGluIHRoZSBwb29sLCB3aGVyZSB0aGVcbiAgICAgZmlyc3QgaW5kZXggaG9sZHMgYSBoZWFkZXIgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBob2xkIHRoZSB0dXBsZSdzIHNsb3RzOlxuXG4gICAgIHt2XG4gICAgIHwgaGVhZGVyIHwgczAgfCBzMSB8IC4uLiB8IHM8Ti0xPiB8XG4gICAgIHZ9XG5cbiAgICAgQSBbUG9pbnRlci50XSB0byBhIHR1cGxlIGNvbnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IHdoZXJlIGl0cyBoZWFkZXIgaXMsIGFzIHdlbGwgYXNcbiAgICAgKGEgbWFzayBvZikgdGhlIHR1cGxlJ3MgdW5pcXVlIGlkLlxuXG4gICAgIFRoZSBmcmVlIHR1cGxlcyBhcmUgc2luZ2x5IGxpbmtlZCB2aWEgdGhlIGhlYWRlcnMuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIGluIHVzZSwgaXRzIGhlYWRlciBpcyBtYXJrZWQgdG8gaW5kaWNhdGUgc28sIGFuZCBhbHNvIHRvIGluY2x1ZGUgdGhlXG4gICAgIHR1cGxlJ3MgdW5pcXVlIGlkLiAgVGhpcyBhbGxvd3MgdXMgdG8gY2hlY2sgaW4gY29uc3RhbnQgdGltZSB3aGV0aGVyIGEgcG9pbnRlciBpc1xuICAgICB2YWxpZCwgYnkgY29tcGFyaW5nIHRoZSBpZCBpbiB0aGUgcG9pbnRlciB3aXRoIHRoZSBpZCBpbiB0aGUgaGVhZGVyLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBub3QgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIHBhcnQgb2YgdGhlIGZyZWUgbGlzdCwgYW5kIGl0cyB0dXBsZSBzbG90c1xuICAgICBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZXMsIGZyb20gdGhlIFtkdW1teV0gdHVwbGUgc3VwcGxpZWQgdG9cbiAgICAgW2NyZWF0ZV0uICBXZSBtdXN0IGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBjb3JyZWN0IHR5cGUgdG8gcHJldmVudCBhIHNlZ2ZhdWx0IGluXG4gICAgIGNvZGUgdGhhdCAobWlzdGFrZW5seSkgdXNlcyBhIHBvaW50ZXIgdG8gYSBmcmVlIHR1cGxlLlxuXG4gICAgIEZvciBbUG9vbC5VbnNhZmVdLCBhIHNsb3QgaW4gYSBmcmVlIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlIGFuIGludDsgaXQgbXVzdCBub3QgYmVcbiAgICAgcG9pbnRlciB0byBwcmV2ZW50IGEgc3BhY2UgbGVhay4gIEhvd2V2ZXIsIHRoZSBpbnQgaW4gdGhlIHNsb3QgbWF5IG5vdCByZXByZXNlbnQgYVxuICAgICB2YWxpZCB2YWx1ZSBvZiB0aGUgdHlwZS5cbiAgKilcblxuICBtb2R1bGUgU2xvdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdzbG90cywgJ2EpIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IHQwID0gMVxuICAgIGxldCB0MSA9IDJcbiAgICBsZXQgdDIgPSAzXG4gICAgbGV0IHQzID0gNFxuICAgIGxldCB0NCA9IDVcbiAgICBsZXQgdDUgPSA2XG4gICAgbGV0IHQ2ID0gN1xuICAgIGxldCB0NyA9IDhcbiAgICBsZXQgdDggPSA5XG4gICAgbGV0IHQ5ID0gMTBcbiAgICBsZXQgdDEwID0gMTFcbiAgICBsZXQgdDExID0gMTJcbiAgICBsZXQgdDEyID0gMTNcbiAgICBsZXQgdDEzID0gMTRcblxuICAgIGxldCV0ZXN0IF8gPSB0MTMgPSBtYXhfc2xvdFxuICBlbmRcblxuICAoKiBXZSBvbmx5IGhhdmUgW0ludC5udW1fYml0c10gYml0cyBhdmFpbGFibGUgZm9yIHBvb2wgcG9pbnRlcnMuICBUaGUgYml0cyBvZiBhIHBvb2xcbiAgICAgcG9pbnRlciBlbmNvZGUgdHdvIHRoaW5nczpcblxuICAgICAtIHRoZSB0dXBsZSdzIGFycmF5IGluZGV4IGluIHRoZSBwb29sXG4gICAgIC0gdGhlIHR1cGxlJ3MgaWRlbnRpZmllciAobm90IG5lY2Vzc2FyaWx5IHVuaXF1ZSlcblxuICAgICBXZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBhcyBsYXJnZSBhcyBuZWVkZWQgZm9yIHRoZSBtYXhpbXVtIHBvb2wgY2FwYWNpdHlcbiAgICAgdGhhdCB3ZSB3YW50IHRvIHN1cHBvcnQsIGFuZCB1c2UgdGhlIHJlbWFpbmluZyBbbWFza2VkX3R1cGxlX2lkX251bV9iaXRzXSBiaXRzIGZvclxuICAgICB0aGUgaWRlbnRpZmllci4gIDY0LWJpdCBhbmQgMzItYml0IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGhhdmUgdmVyeSBkaWZmZXJlbnRcbiAgICAgYWRkcmVzcy1zcGFjZSBzaXplcywgc28gd2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gZGlmZmVyZW50bHkuICopXG5cbiAgbGV0IGFycmF5X2luZGV4X251bV9iaXRzID1cbiAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSA2Myk7XG4gICAgICAzMClcbiAgICBlbHNlIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gMzEgfHwgSW50Lm51bV9iaXRzID0gMzIpO1xuICAgICAgMjIpXG4gIDs7XG5cbiAgbGV0IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA9IEludC5udW1fYml0cyAtIGFycmF5X2luZGV4X251bV9iaXRzXG5cbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzID4gMFxuICBsZXQldGVzdCBfID0gbWFza2VkX3R1cGxlX2lkX251bV9iaXRzID4gMFxuICBsZXQldGVzdCBfID0gYXJyYXlfaW5kZXhfbnVtX2JpdHMgKyBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPD0gSW50Lm51bV9iaXRzXG5cbiAgbGV0IG1heF9hcnJheV9sZW5ndGggPSAxIGxzbCBhcnJheV9pbmRleF9udW1fYml0c1xuXG4gIG1vZHVsZSBUdXBsZV9pZCA6IHNpZ1xuICAgIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGluaXQgOiB0XG4gICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgZXhhbXBsZXMgOiB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiBXZSBndWFyYW50ZWUgdGhhdCB0dXBsZSBpZHMgYXJlIG5vbm5lZ2F0aXZlIHNvIHRoYXQgdGhleSBjYW4gYmUgZW5jb2RlZCBpblxuICAgICAgIGhlYWRlcnMuICopXG4gICAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IDApXG4gICAgbGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbiAgICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IGluaXQgPSAwXG4gICAgbGV0IG5leHQgdCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gdCArIDEgZWxzZSBpZiB0ID0gSW50Lm1heF92YWx1ZSB0aGVuIDAgZWxzZSB0ICsgMVxuICAgIGxldCB0b19pbnQgdCA9IHRcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICBpZiBpIDwgMFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlR1cGxlX2lkLm9mX2ludCBnb3QgbmVnYXRpdmUgaW50XCIgaSBbJXNleHBfb2Y6IGludF07XG4gICAgICBpXG4gICAgOztcblxuICAgIGxldCBleGFtcGxlcyA9IFsgMDsgMTsgMHgxRkZGX0ZGRkY7IEludC5tYXhfdmFsdWUgXVxuICBlbmRcblxuICBsZXQgdHVwbGVfaWRfbWFzayA9ICgxIGxzbCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMpIC0gMVxuXG4gIG1vZHVsZSBQb2ludGVyIDogc2lnXG4gICAgKCogW1BvaW50ZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyBzdW0gdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgTm9ybWFsIG9mIHsgaGVhZGVyX2luZGV4IDogaW50OyBtYXNrZWRfdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBUaGUgZW5jb2RpbmcgaXMgY2hvc2VuIHRvIG9wdGltaXplIHRoZSBtb3N0IGNvbW1vbiBvcGVyYXRpb24sIG5hbWVseSB0dXBsZS1zbG90XG4gICAgICAgYWNjZXNzLCB0aGUgW3Nsb3RfaW5kZXhdIGZ1bmN0aW9uLiAgVGhlIGVuY29kaW5nIGlzIGRlc2lnbmVkIHNvIHRoYXQgW3Nsb3RfaW5kZXhdXG4gICAgICAgcHJvZHVjZXMgYSBuZWdhdGl2ZSBudW1iZXIgZm9yIFtOdWxsXSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc3Vic2VxdWVudCBhcnJheSBib3VuZHNcbiAgICAgICBjaGVjayB0byBmYWlsLiAqKVxuXG4gICAgdHlwZSAnc2xvdHMgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgcGh5c19jb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBwaHlzX2VxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqIFRoZSBudWxsIHBvaW50ZXIuICBbbnVsbF0gaXMgYSBmdW5jdGlvbiBkdWUgdG8gaXNzdWVzIHdpdGggdGhlIHZhbHVlIHJlc3RyaWN0aW9uLiAqKVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcblxuICAgICgqIE5vcm1hbCBwb2ludGVycy4gKilcblxuICAgIHZhbCBjcmVhdGUgOiBoZWFkZXJfaW5kZXg6aW50IC0+IFR1cGxlX2lkLnQgLT4gXyB0XG4gICAgdmFsIGhlYWRlcl9pbmRleCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgbWFza2VkX3R1cGxlX2lkIDogXyB0IC0+IGludFxuICAgIHZhbCBzbG90X2luZGV4IDogXyB0IC0+IChfLCBfKSBTbG90LnQgLT4gaW50XG4gICAgdmFsIGZpcnN0X3Nsb3RfaW5kZXggOiBfIHQgLT4gaW50XG5cbiAgICBtb2R1bGUgSWQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIHZhbCB0b19pbnQ2MyA6IHQgLT4gSW50NjMudFxuICAgICAgdmFsIG9mX2ludDYzIDogSW50NjMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgdG9faWQgOiBfIHQgLT4gSWQudFxuICAgIHZhbCBvZl9pZF9leG4gOiBJZC50IC0+IF8gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBBIHBvaW50ZXIgaXMgZWl0aGVyIFtudWxsXSBvciB0aGUgKHBvc2l0aXZlKSBpbmRleCBpbiB0aGUgcG9vbCBvZiB0aGUgbmV4dC1mcmVlXG4gICAgICAgZmllbGQgcHJlY2VlZGluZyB0aGUgdHVwbGUncyBzbG90cy4gKilcbiAgICB0eXBlICdzbG90cyB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxQb29sLlBvaW50ZXIudDogMHglMDh4PlwiIHQpXG4gICAgbGV0IHBoeXNfZXF1YWwgKHQxIDogXyB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbiAgICBsZXQgcGh5c19jb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBudWxsICgpID0gLW1heF9zbG90IC0gMVxuICAgIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5cbiAgICAoKiBbbnVsbF0gbXVzdCBiZSBzdWNoIHRoYXQgW251bGwgKyBzbG90XSBpcyBhbiBpbnZhbGlkIGFycmF5IGluZGV4IGZvciBhbGwgc2xvdHMuXG4gICAgICAgT3RoZXJ3aXNlIGdldC9zZXQgb24gdGhlIG51bGwgcG9pbnRlciBtYXkgbGVhZCB0byBhIHNlZ2ZhdWx0LiAqKVxuICAgIGxldCV0ZXN0IF8gPSBudWxsICgpICsgbWF4X3Nsb3QgPCAwXG5cbiAgICBsZXQgY3JlYXRlIH5oZWFkZXJfaW5kZXggKHR1cGxlX2lkIDogVHVwbGVfaWQudCkgPVxuICAgICAgaGVhZGVyX2luZGV4XG4gICAgICBsb3IgKChUdXBsZV9pZC50b19pbnQgdHVwbGVfaWQgbGFuZCB0dXBsZV9pZF9tYXNrKSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpXG4gICAgOztcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfbWFzayA9ICgxIGxzbCBhcnJheV9pbmRleF9udW1fYml0cykgLSAxXG4gICAgbGV0IG1hc2tlZF90dXBsZV9pZCB0ID0gdCBsc3IgYXJyYXlfaW5kZXhfbnVtX2JpdHNcbiAgICBsZXQgaGVhZGVyX2luZGV4IHQgPSB0IGxhbmQgaGVhZGVyX2luZGV4X21hc2tcbiAgICBsZXQgaW52YXJpYW50IF8gdCA9IGlmIG5vdCAoaXNfbnVsbCB0KSB0aGVuIGFzc2VydCAoaGVhZGVyX2luZGV4IHQgPiAwKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBfID0gaW52YXJpYW50IGlnbm9yZSAobnVsbCAoKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biB0dXBsZV9pZCAtPlxuICAgICAgICBpbnZhcmlhbnQgaWdub3JlIChjcmVhdGUgfmhlYWRlcl9pbmRleDoxIHR1cGxlX2lkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNsb3RfaW5kZXggdCBzbG90ID0gaGVhZGVyX2luZGV4IHQgKyBzbG90XG4gICAgbGV0IGZpcnN0X3Nsb3RfaW5kZXggdCA9IHNsb3RfaW5kZXggdCBTbG90LnQwXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBlbmRcblxuICAgIGxldCB0b19pZCB0ID0gSWQub2ZfaW50IHRcblxuICAgIGxldCBvZl9pZF9leG4gaWQgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCB0ID0gSWQudG9faW50X2V4biBpZCBpblxuICAgICAgICBpZiBpc19udWxsIHRcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaG91bGRfZXF1YWwgPVxuICAgICAgICAgICAgY3JlYXRlIH5oZWFkZXJfaW5kZXg6KGhlYWRlcl9pbmRleCB0KSAoVHVwbGVfaWQub2ZfaW50IChtYXNrZWRfdHVwbGVfaWQgdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIHQgc2hvdWxkX2VxdWFsXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcInNob3VsZCBlcXVhbFwiIHNob3VsZF9lcXVhbCBbJXNleHBfb2Y6IF8gdF0pXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb2ludGVyLm9mX2lkX2V4biBnb3Qgc3RyYW5nZSBpZFwiXG4gICAgICAgICAgKGlkLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBJZC50ICogZXhuXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgICAoKiBBIFtIZWFkZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBGcmVlIG9mIHsgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IGludCB9XG4gICAgICAgICB8IFVzZWQgb2YgeyB0dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIElmIGEgdHVwbGUgaXMgZnJlZSwgaXRzIGhlYWRlciBpcyBzZXQgdG8gZWl0aGVyIFtOdWxsXSBvciBbRnJlZV0gd2l0aFxuICAgICAgIFtuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XSBpbmRpY2F0aW5nIHRoZSBoZWFkZXIgb2YgdGhlIG5leHQgdHVwbGUgb24gdGhlIGZyZWUgbGlzdC5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGluIHVzZSwgaXQgaGVhZGVyIGlzIHNldCB0byBbVXNlZF0uICopXG5cbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB0XG4gICAgdmFsIGlzX251bGwgOiB0IC0+IGJvb2xcbiAgICB2YWwgZnJlZSA6IG5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aW50IC0+IHRcbiAgICB2YWwgaXNfZnJlZSA6IHQgLT4gYm9vbFxuICAgIHZhbCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogdCAtPiBpbnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX2ZyZWUgdF0gKilcblxuICAgIHZhbCB1c2VkIDogVHVwbGVfaWQudCAtPiB0XG4gICAgdmFsIGlzX3VzZWQgOiB0IC0+IGJvb2xcbiAgICB2YWwgdHVwbGVfaWQgOiB0IC0+IFR1cGxlX2lkLnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX3VzZWQgdF0gKilcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50XG5cbiAgICBsZXQgbnVsbCA9IDBcbiAgICBsZXQgaXNfbnVsbCB0ID0gdCA9IDBcblxuICAgICgqIFdlIGtub3cgdGhhdCBoZWFkZXIgaW5kaWNlcyBhcmUgWz4gMF0sIGJlY2F1c2UgaW5kZXggWzBdIGhvbGRzIHRoZSBtZXRhZGF0YS4gKilcbiAgICBsZXQgZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleCA9IG5leHRfZnJlZV9oZWFkZXJfaW5kZXhcbiAgICBsZXQgaXNfZnJlZSB0ID0gdCA+IDBcbiAgICBsZXQgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0ID0gdFxuICAgIGxldCB1c2VkICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID0gLTEgLSAodHVwbGVfaWQgOj4gaW50KVxuICAgIGxldCBpc191c2VkIHQgPSB0IDwgMFxuICAgIGxldCB0dXBsZV9pZCB0ID0gVHVwbGVfaWQub2ZfaW50ICgtKHQgKyAxKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biBpZCAtPlxuICAgICAgICBsZXQgdCA9IHVzZWQgaWQgaW5cbiAgICAgICAgYXNzZXJ0IChpc191c2VkIHQpO1xuICAgICAgICBhc3NlcnQgKFR1cGxlX2lkLmVxdWFsICh0dXBsZV9pZCB0KSBpZCkpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBpZiBpc19udWxsIHRcbiAgICAgIHRoZW4gU2V4cC5BdG9tIFwibnVsbFwiXG4gICAgICBlbHNlIGlmIGlzX2ZyZWUgdFxuICAgICAgdGhlbiBTZXhwLihMaXN0IFsgQXRvbSBcIkZyZWVcIjsgQXRvbSAoSW50LnRvX3N0cmluZyAobmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0KSkgXSlcbiAgICAgIGVsc2UgU2V4cC4oTGlzdCBbIEF0b20gXCJVc2VkXCI7IEF0b20gKFR1cGxlX2lkLnRvX3N0cmluZyAodHVwbGVfaWQgdCkpIF0pXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1ldGFkYXRhX2luZGV4ID0gMFxuICBsZXQgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ID0gMVxuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgKG1heF9hcnJheV9sZW5ndGggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gKDEgKyBzbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBmb3Igc2xvdHNfcGVyX3R1cGxlID0gMSB0byBtYXhfc2xvdCBkb1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKCgxICsgc2xvdHNfcGVyX3R1cGxlKSAqIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICA8PSBtYXhfYXJyYXlfbGVuZ3RoKVxuICAgIGRvbmVcbiAgOztcblxuICBtb2R1bGUgTWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgKCogW3Nsb3RzX3Blcl90dXBsZV0gaXMgbnVtYmVyIG9mIHNsb3RzIGluIGEgdHVwbGUgYXMgc2VlbiBieSB0aGUgdXNlcjsgaS5lLiBub3RcbiAgICAgICAgICAgY291bnRpbmcgdGhlIG5leHQtZnJlZSBwb2ludGVyLiAqKVxuICAgICAgICBzbG90c19wZXJfdHVwbGUgOiBpbnRcbiAgICAgIDsgY2FwYWNpdHkgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2lkIDogVHVwbGVfaWQudFxuICAgICAgOyBtdXRhYmxlIGZpcnN0X2ZyZWUgOiBIZWFkZXIudFxuICAgICAgKCogW2R1bW15XSBpcyBbTm9uZV0gaW4gYW4gdW5zYWZlIHBvb2wuICBJbiBhIHNhZmUgcG9vbCwgW2R1bW15XSBpcyBbU29tZSBhXSwgd2l0aFxuICAgICAgICAgW1VuaWZvcm1fYXJyYXkubGVuZ3RoIGEgPSBzbG90c19wZXJfdHVwbGVdLiAgW2R1bW15XSBpcyBhY3R1YWxseSBhIHR1cGxlIHZhbHVlXG4gICAgICAgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUgKGNvcnJlc3BvbmRpbmcgdG8gWydzbG90c10pLCBidXQgd2UgbWFrZSB0aGUgdHlwZSBvZlxuICAgICAgICAgW2R1bW15XSBiZSBbT2JqLnQgVW5pZm9ybV9hcnJheS50XSBiZWNhdXNlIHdlIGNhbid0IHdyaXRlIHRoYXQgdHlwZSBoZXJlLiAgQWxzbyxcbiAgICAgICAgIHRoZSBwdXJwb3NlIG9mIFtkdW1teV0gaXMgdG8gaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCwgbWFraW5nIFtkdW1teV0gYW4gW09iai50XG4gICAgICAgICBVbmlmb3JtX2FycmF5LnRdIGxldHMgdXMgaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCB1c2luZyBbVW5pZm9ybV9hcnJheS5ibGl0XVxuICAgICAgICAgZnJvbSBbZHVtbXldIHRvIHRoZSBwb29sLCB3aGljaCBpcyBhbiBbT2JqLnQgVW5pZm9ybV9hcnJheS50XS4gKilcbiAgICAgIDsgZHVtbXkgOiAoT2JqLnQgVW5pZm9ybV9hcnJheS50W0BzZXhwLm9wYXF1ZV0pIG9wdGlvblxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0ID0gMSArIHQuc2xvdHNfcGVyX3R1cGxlXG4gICAgbGV0IGFycmF5X2xlbmd0aCB0ID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHQuY2FwYWNpdHkgKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuXG4gICAgbGV0IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gdCB+aGVhZGVyX2luZGV4ID1cbiAgICAgIChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdFxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodHVwbGVfbnVtICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gKyAxXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSB0Lmxlbmd0aCA9IHQuY2FwYWNpdHlcbiAgZW5kXG5cbiAgb3BlbiBNZXRhZGF0YVxuXG4gICgqIFdlIHVzZSB0eXBlIFtPYmoudF0gYmVjYXVzZSB0aGUgYXJyYXkgaG9sZHMgYSBtaXggb2YgaW50ZWdlcnMgYXMgd2VsbCBhcyBPQ2FtbCB2YWx1ZXNcbiAgICAgb2YgYXJiaXRyYXJ5IHR5cGUuICopXG4gIHR5cGUgJ3Nsb3RzIHQgPSBPYmoudCBVbmlmb3JtX2FycmF5LnRcblxuICBsZXQgbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IG1ldGFkYXRhX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBzbG90cyBNZXRhZGF0YS50KVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9IChtZXRhZGF0YSB0KS5sZW5ndGhcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3R5IHQgPSBNZXRhZGF0YS5zZXhwX29mX3Qgc2V4cF9vZl90eSAobWV0YWRhdGEgdClcblxuICAoKiBCZWNhdXNlIFt1bnNhZmVfaGVhZGVyXSBhbmQgW3Vuc2FmZV9zZXRfaGVhZGVyXSBkbyBub3QgZG8gYSBib3VuZHMgY2hlY2ssIG9uZSBtdXN0IGJlXG4gICAgIHN1cmUgdGhhdCBvbmUgaGFzIGEgdmFsaWQgW2hlYWRlcl9pbmRleF0gYmVmb3JlIGNhbGxpbmcgdGhlbS4gKilcbiAgbGV0IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBoZWFkZXJfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IEhlYWRlci50KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKGhlYWRlciA6IEhlYWRlci50KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaGVhZGVyX2luZGV4IChoZWFkZXIgOj4gaW50KVxuICA7O1xuXG4gIGxldCBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgaGVhZGVyX2luZGV4ID49IHN0YXJ0X29mX3R1cGxlc19pbmRleCAmJiBoZWFkZXJfaW5kZXggPCBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyID1cbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgIEhlYWRlci5pc191c2VkIGhlYWRlclxuICAgICYmIFR1cGxlX2lkLnRvX2ludCAoSGVhZGVyLnR1cGxlX2lkIGhlYWRlcikgbGFuZCB0dXBsZV9pZF9tYXNrXG4gICAgICAgPSBQb2ludGVyLm1hc2tlZF90dXBsZV9pZCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcilcbiAgICAoKiBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoZSBwb2ludGVyIGlzbid0IFtudWxsXSBhbmQgaXMgaW4gYm91bmRzLCBzbyB3ZSBrbm93IGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIGEgaGVhZGVyLCBzaW5jZSB3ZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYWxsIHBvaW50ZXJzIG90aGVyIHRoYW5cbiAgICAgICBbbnVsbF0gYXJlLiAqKVxuICAgICYmIHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgX3QgcG9pbnRlciA9IFBvaW50ZXIudG9faWQgcG9pbnRlclxuXG4gIGxldCBpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXhcbiAgICAmJiAwXG4gICAgICAgPSAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KVxuICAgICAgICAgbW9kIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIHRyeVxuICAgICAgbGV0IHBvaW50ZXIgPSBQb2ludGVyLm9mX2lkX2V4biBpZCBpblxuICAgICAgaWYgbm90IChQb2ludGVyLmlzX251bGwgcG9pbnRlcilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgICAgICBpZiBub3QgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpXG4gICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJpbnZhbGlkIGhlYWRlciBpbmRleFwiIGhlYWRlcl9pbmRleCBbJXNleHBfb2Y6IGludF07XG4gICAgICAgIGlmIG5vdCAodW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIpIHRoZW4gZmFpbHdpdGggXCJwb2ludGVyIG5vdCBsaXZlXCIpO1xuICAgICAgcG9pbnRlclxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLnBvaW50ZXJfb2ZfaWRfZXhuIGdvdCBpbnZhbGlkIGlkXCJcbiAgICAgICAgKGlkLCB0LCBleG4pXG4gICAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50ICogXyB0ICogZXhuXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIG1ldGFkYXRhKSBpblxuICAgICAgTWV0YWRhdGEuRmllbGRzLml0ZXJcbiAgICAgICAgfnNsb3RzX3Blcl90dXBsZTooY2hlY2sgKGZ1biBzbG90c19wZXJfdHVwbGUgLT4gYXNzZXJ0IChzbG90c19wZXJfdHVwbGUgPiAwKSkpXG4gICAgICAgIH5jYXBhY2l0eTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjYXBhY2l0eSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCB0ID0gTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSkpXG4gICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gbWV0YWRhdGEuY2FwYWNpdHkpKSlcbiAgICAgICAgfm5leHRfaWQ6KGNoZWNrIFR1cGxlX2lkLmludmFyaWFudClcbiAgICAgICAgfmZpcnN0X2ZyZWU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyc3RfZnJlZSAtPlxuICAgICAgICAgICAgIGxldCBmcmVlID0gQXJyYXkuY3JlYXRlIH5sZW46bWV0YWRhdGEuY2FwYWNpdHkgZmFsc2UgaW5cbiAgICAgICAgICAgICBsZXQgciA9IHJlZiBmaXJzdF9mcmVlIGluXG4gICAgICAgICAgICAgd2hpbGUgbm90IChIZWFkZXIuaXNfbnVsbCAhcikgZG9cbiAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSAhciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChIZWFkZXIuaXNfZnJlZSBoZWFkZXIpO1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGhlYWRlciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KTtcbiAgICAgICAgICAgICAgIGxldCB0dXBsZV9udW0gPSBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgIGlmIGZyZWUuKHR1cGxlX251bSlcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJjeWNsZSBpbiBmcmVlIGxpc3RcIiB0dXBsZV9udW0gWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICAgICAgICAgZnJlZS4odHVwbGVfbnVtKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgciA6PSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleFxuICAgICAgICAgICAgIGRvbmUpKVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkdW1teSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICAgIGlmIEhlYWRlci5pc19mcmVlIGhlYWRlclxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3Rfc2xvdCA9IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICAgIGZvciBzbG90ID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKE9iai5pc19pbnQgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKGZpcnN0X3Nsb3QgKyBzbG90KSkpXG4gICAgICAgICAgICAgICAgICAgZG9uZSlcbiAgICAgICAgICAgICAgIGRvbmUpKVxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmludmFyaWFudCBmYWlsZWRcIiAoZXhuLCB0KSBbJXNleHBfb2Y6IGV4biAqIF8gdF1cbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9IChtZXRhZGF0YSB0KS5jYXBhY2l0eVxuICBsZXQgaXNfZnVsbCB0ID0gTWV0YWRhdGEuaXNfZnVsbCAobWV0YWRhdGEgdClcblxuICBsZXQgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4ID1cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggbWV0YWRhdGEuZmlyc3RfZnJlZTtcbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIEhlYWRlci5mcmVlIH5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmhlYWRlcl9pbmRleFxuICA7O1xuXG4gIGxldCBzZXRfbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgbWV0YWRhdGEgPVxuICAgIFVuaWZvcm1fYXJyYXkuc2V0IHQgbWV0YWRhdGFfaW5kZXggKE9iai5yZXByIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGVfYXJyYXkgKHR5cGUgc2xvdHMpIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpIDogc2xvdHMgdCA9XG4gICAgbGV0IHQgPSBVbmlmb3JtX2FycmF5LmNyZWF0ZV9vYmpfYXJyYXkgfmxlbjooTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhO1xuICAgIHRcbiAgOztcblxuICAoKiBJbml0aWFsaXplIHR1cGxlcyBudW1iZXJlZCBmcm9tIFtsb10gKGluY2x1c2l2ZSkgdXAgdG8gW2hpXSAoZXhjbHVzaXZlKS4gIEZvciBlYWNoXG4gICAgIHR1cGxlLCB0aGlzIHB1dHMgZHVtbXkgdmFsdWVzIGluIHRoZSB0dXBsZSdzIHNsb3RzIGFuZCBhZGRzIHRoZSB0dXBsZSB0byB0aGUgZnJlZVxuICAgICBsaXN0LiAqKVxuICBsZXQgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG8gfmhpID1cbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IGxvIHRvIGhpIC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBmb3IgdHVwbGVfbnVtID0gaGkgLSAxIGRvd250byBsbyBkb1xuICAgICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3RcbiAgICAgICAgdFxuICAgICAgICBtZXRhZGF0YVxuICAgICAgICB+aGVhZGVyX2luZGV4Oih0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5jcmVhdGUgZ290IGludmFsaWQgY2FwYWNpdHlcIiBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IHNsb3RzX3Blcl90dXBsZSA9IFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyBpblxuICAgIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGNhcGFjaXR5ID4gbWF4X2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmNyZWF0ZSBnb3QgdG9vIGxhcmdlIGNhcGFjaXR5XCJcbiAgICAgICAgKGNhcGFjaXR5LCBgbWF4IG1heF9jYXBhY2l0eSlcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXggb2YgaW50IF1dO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBUdXBsZV9pZC5pbml0XG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbzowIH5oaTpjYXBhY2l0eTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAodHlwZSB0dXBsZSkgKHNsb3RzIDogKHR1cGxlLCBfKSBTbG90cy50KSB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBsZXQgZHVtbXkgPVxuICAgICAgaWYgU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzID0gMVxuICAgICAgdGhlbiBVbmlmb3JtX2FycmF5LnNpbmdsZXRvbiAoT2JqLnJlcHIgKGR1bW15IDogdHVwbGUpKVxuICAgICAgZWxzZSAoT2JqLm1hZ2ljIChkdW1teSA6IHR1cGxlKSA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICBpblxuICAgIGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6KFNvbWUgZHVtbXkpXG4gIDs7XG5cbiAgKCogUHVyZ2UgYSBwb29sIGFuZCBtYWtlIGl0IHVudXNhYmxlLiAqKVxuICBsZXQgZGVzdHJveSB0ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgKCogV2UgY2xlYXIgb3V0IGFsbCB0aGUgcG9vbCdzIGVudHJpZXMsIHdoaWNoIGNhdXNlcyBhbGwgcG9pbnRlcnMgdG8gYmUgaW52YWxpZC4gIFRoaXNcbiAgICAgICBhbHNvIHByZXZlbnRzIHRoZSBkZXN0cm95ZWQgcG9vbCBmcm9tIHVubmVjZXNzYXJpbHkga2VlcGluZyBoZWFwIGJsb2NrcyBhbGl2ZS5cbiAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gW2ZyZWVdaW5nIGFsbCB0aGUgZW50cmllcyB3aXRoIHRoZSBkaWZmZXJlbmNlIHRoYXQgd2UgbWFrZSB0aGVcbiAgICAgICBmcmVlIGxpc3QgZW1wdHkgYXMgd2VsbC4gKilcbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBmb3IgaSA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoT2JqLnJlcHIgMClcbiAgICAgICBkb25lXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggSGVhZGVyLm51bGw7XG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczooaGVhZGVyX2luZGV4ICsgMSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHkgPSAwXG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IG1ldGFkYXRhLm5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15ID0gbWV0YWRhdGEuZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBsZXQgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgOyBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgICAgICA7IGxlbmd0aFxuICAgICAgICA7IG5leHRfaWRcbiAgICAgICAgOyBmaXJzdF9mcmVlID0gX1xuICAgICAgICA7IGR1bW15XG4gICAgICAgIH1cbiAgICAgID1cbiAgICAgIG1ldGFkYXRhIHRcbiAgICBpblxuICAgIGxldCBjYXBhY2l0eSA9XG4gICAgICBtaW4gKG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKSAoZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSlcbiAgICBpblxuICAgIGlmIGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmdyb3cgY2Fubm90IGdyb3cgcG9vbDsgY2FwYWNpdHkgYWxyZWFkeSBhdCBtYXhpbXVtXCJcbiAgICAgICAgY2FwYWNpdHlcbiAgICAgICAgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGhcbiAgICAgIDsgbmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0JyA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgfnNyYzp0XG4gICAgICB+c3JjX3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5kc3Q6dCdcbiAgICAgIH5kc3RfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmxlbjoob2xkX2NhcGFjaXR5ICogTWV0YWRhdGEuYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgbWV0YWRhdGEpO1xuICAgIGRlc3Ryb3kgdDtcbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0JyBtZXRhZGF0YSB+bG86b2xkX2NhcGFjaXR5IH5oaTpjYXBhY2l0eTtcbiAgICBmb3IgdHVwbGVfbnVtID0gb2xkX2NhcGFjaXR5IC0gMSBkb3dudG8gMCBkb1xuICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0JyB+aGVhZGVyX2luZGV4IGluXG4gICAgICBpZiBub3QgKEhlYWRlci5pc191c2VkIGhlYWRlcilcbiAgICAgIHRoZW4gdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCcgbWV0YWRhdGEgfmhlYWRlcl9pbmRleFxuICAgIGRvbmU7XG4gICAgdCdcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX21hbGxvY19mdWxsIHQgPVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5tYWxsb2Mgb2YgZnVsbCBwb29sXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgOztcblxuICBsZXQgbWFsbG9jICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIDogc2xvdHMgUG9pbnRlci50ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGZpcnN0X2ZyZWUgPSBtZXRhZGF0YS5maXJzdF9mcmVlIGluXG4gICAgaWYgSGVhZGVyLmlzX251bGwgZmlyc3RfZnJlZSB0aGVuIHJhaXNlX21hbGxvY19mdWxsIHQ7XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGZpcnN0X2ZyZWUgaW5cbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4O1xuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggKyAxO1xuICAgIGxldCB0dXBsZV9pZCA9IG1ldGFkYXRhLm5leHRfaWQgaW5cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKEhlYWRlci51c2VkIHR1cGxlX2lkKTtcbiAgICBtZXRhZGF0YS5uZXh0X2lkIDwtIFR1cGxlX2lkLm5leHQgdHVwbGVfaWQ7XG4gICAgUG9pbnRlci5jcmVhdGUgfmhlYWRlcl9pbmRleCB0dXBsZV9pZFxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoIC0gMTtcbiAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpO1xuICAgIG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwb3MgPSBQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlciBpblxuICAgICAgZm9yIGkgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IChwb3MgKyBpKVxuICAgICAgZG9uZVxuICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgfmRzdDp0XG4gICAgICAgIH5kc3RfcG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcilcbiAgOztcblxuICBsZXQgZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgICgqIENoZWNrIFtwb2ludGVyX2lzX3ZhbGlkXSB0bzpcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBudWxsIHBvaW50ZXJcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBmcmVlIHBvaW50ZXIgKHRoaXMgd291bGQgbGVhZCB0byBhIHBvb2wgaW5jb25zaXN0ZW5jeSlcbiAgICAgICAtIGJlIGFibGUgdG8gdXNlIHVuc2FmZSBmdW5jdGlvbnMgYWZ0ZXIuICopXG4gICAgaWYgbm90IChwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZnJlZSBvZiBpbnZhbGlkIHBvaW50ZXJcIlxuICAgICAgICAocG9pbnRlciwgdClcbiAgICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudCAqIF8gdF07XG4gICAgdW5zYWZlX2ZyZWUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcyIHQgYTAgYTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MyB0IGEwIGExIGEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDE0KSAoT2JqLnJlcHIgYTEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGdldCB0IHAgc2xvdCA9IE9iai5vYmogKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCBzbG90ID1cbiAgICBPYmoub2JqIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHAgc2xvdCB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG5cbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgeCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgKHR5cGUgdHVwbGUpICh0IDogKHR1cGxlLCBfKSBTbG90cy50IHQpIHBvaW50ZXIgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgbGVuID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgbGVuID0gMVxuICAgIHRoZW4gZ2V0IHQgcG9pbnRlciBTbG90LnQwXG4gICAgZWxzZVxuICAgICAgKE9iai5tYWdpY1xuICAgICAgICAgKFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpIH5sZW5cbiAgICAgICAgICA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICAgICA6IHR1cGxlKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG9vbFxuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9vbFxuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5ID0gY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTpOb25lXG5lbmRcblxubW9kdWxlIERlYnVnIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgbmFtZSB0cyBhcmcgc2V4cF9vZl9hcmcgc2V4cF9vZl9yZXN1bHQgZiA9XG4gICAgbGV0IHByZWZpeCA9IFwiUG9vbC5cIiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBMaXN0Lml0ZXIgdHMgfmY6KGludmFyaWFudCBpZ25vcmUpO1xuICAgIGlmICFzaG93X21lc3NhZ2VzIHRoZW4gRGVidWcuZXByaW50cyAoY29uY2F0IFsgcHJlZml4OyBuYW1lIF0pIGFyZyBzZXhwX29mX2FyZztcbiAgICBsZXQgcmVzdWx0X29yX2V4biA9IFJlc3VsdC50cnlfd2l0aCBmIGluXG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5lcHJpbnRzXG4gICAgICAgIChjb25jYXQgWyBwcmVmaXg7IG5hbWU7IFwiIHJlc3VsdFwiIF0pXG4gICAgICAgIHJlc3VsdF9vcl9leG5cbiAgICAgICAgWyVzZXhwX29mOiAocmVzdWx0LCBleG4pIFJlc3VsdC50XTtcbiAgICBSZXN1bHQub2tfZXhuIHJlc3VsdF9vcl9leG5cbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIG9wZW4gUG9pbnRlclxuXG4gICAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19jb21wYXJlXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfY29tcGFyZSB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfZXF1YWxcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfZXF1YWwgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBpc19udWxsIHQgPVxuICAgICAgZGVidWcgXCJQb2ludGVyLmlzX251bGxcIiBbXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfbnVsbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbnVsbCA9IG51bGxcblxuICAgIG1vZHVsZSBJZCA9IHN0cnVjdFxuICAgICAgb3BlbiBJZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIGxldCBvZl9pbnQ2MyBpID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLm9mX2ludDYzXCIgW10gaSBbJXNleHBfb2Y6IEludDYzLnRdIFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgIG9mX2ludDYzIGkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC50b19pbnQ2M1wiIFtdIHQgWyVzZXhwX29mOiB0XSBbJXNleHBfb2Y6IEludDYzLnRdIChmdW4gKCkgLT5cbiAgICAgICAgICB0b19pbnQ2MyB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwiaWRfb2ZfcG9pbnRlclwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgKGZ1biAoKSAtPiBpZF9vZl9wb2ludGVyIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9vZl9pZF9leG5cIlxuICAgICAgWyB0IF1cbiAgICAgIGlkXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX2lzX3ZhbGlkXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGRlYnVnIFwiY3JlYXRlXCIgW10gY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSlcbiAgOztcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIGRlYnVnIFwibWF4X2NhcGFjaXR5XCIgW10gc2xvdHNfcGVyX3R1cGxlIFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPlxuICAgICAgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPVxuICAgIGRlYnVnIFwiY2FwYWNpdHlcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPiBjYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBkZWJ1Z1xuICAgICAgXCJncm93XCJcbiAgICAgIFsgdCBdXG4gICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5KVxuICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgb3B0aW9uIF1dXG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgICAgIChmdW4gKCkgLT4gZ3JvdyA/Y2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgaXNfZnVsbCB0ID1cbiAgICBkZWJ1ZyBcImlzX2Z1bGxcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfZnVsbCB0KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwidW5zYWZlX2ZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgdW5zYWZlX2ZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZGVidWcgXCJmcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT4gZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGRlYnVnX25ldyB0IGYgPSBkZWJ1ZyBcIm5ld1wiIFsgdCBdICgpIFslc2V4cF9vZjogdW5pdF0gWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gZlxuICBsZXQgbmV3MSB0IGEwID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIFwiZ2V0X3R1cGxlXCIgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT5cbiAgICAgIGdldF90dXBsZSB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGRlYnVnX2dldCBuYW1lIGYgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+IGYgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBnZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJnZXRcIiBnZXQgdCBwb2ludGVyIHNsb3RcbiAgbGV0IHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJ1bnNhZmVfZ2V0XCIgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdFxuXG4gIGxldCBkZWJ1Z19zZXQgbmFtZSBmIHQgcG9pbnRlciBzbG90IGEgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIGYgdCBwb2ludGVyIHNsb3QgYSlcbiAgOztcblxuICBsZXQgc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJzZXRcIiBzZXQgdCBwb2ludGVyIHNsb3QgYVxuICBsZXQgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwidW5zYWZlX3NldFwiIHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYVxuZW5kXG5cbm1vZHVsZSBFcnJvcl9jaGVjayAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIHR5cGUgJ3Nsb3RzIHQgPVxuICAgICAgeyBtdXRhYmxlIGlzX3ZhbGlkIDogYm9vbFxuICAgICAgOyBwb2ludGVyIDogJ3Nsb3RzIFBvaW50ZXIudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgY3JlYXRlIHBvaW50ZXIgPSB7IGlzX3ZhbGlkID0gdHJ1ZTsgcG9pbnRlciB9XG4gICAgbGV0IG51bGwgKCkgPSB7IGlzX3ZhbGlkID0gZmFsc2U7IHBvaW50ZXIgPSBQb2ludGVyLm51bGwgKCkgfVxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPSBQb2ludGVyLnBoeXNfY29tcGFyZSB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgaXNfbnVsbCB0ID0gUG9pbnRlci5pc19udWxsIHQucG9pbnRlclxuXG4gICAgbGV0IGZvbGxvdyB0ID1cbiAgICAgIGlmIG5vdCB0LmlzX3ZhbGlkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byB1c2UgaW52YWxpZCBwb2ludGVyXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgICB0LnBvaW50ZXJcbiAgICA7O1xuXG4gICAgbGV0IGludmFsaWRhdGUgdCA9IHQuaXNfdmFsaWQgPC0gZmFsc2VcblxuICAgIG1vZHVsZSBJZCA9IFBvaW50ZXIuSWRcbiAgZW5kXG5cbiAgdHlwZSAnc2xvdHMgdCA9ICdzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9ID1cbiAgICBpc192YWxpZCAmJiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlclxuICA7O1xuXG4gICgqIFdlIGRvbid0IGRvIFtQb2ludGVyLmZvbGxvdyBwb2ludGVyXSwgYmVjYXVzZSB0aGF0IHdvdWxkIGRpc2FsbG93IFtpZF9vZl9wb2ludGVyIHRcbiAgICAgKFBvaW50ZXIubnVsbCAoKSldLiAqKVxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPSBpZF9vZl9wb2ludGVyIHQgcG9pbnRlci5Qb2ludGVyLnBvaW50ZXJcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgbGV0IHBvaW50ZXIgPSBwb2ludGVyX29mX2lkX2V4biB0IGlkIGluXG4gICAgbGV0IGlzX3ZhbGlkID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciBpblxuICAgIHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eVxuICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5XG4gIGxldCBncm93ID0gZ3Jvd1xuICBsZXQgaXNfZnVsbCA9IGlzX2Z1bGxcbiAgbGV0IGdldF90dXBsZSB0IHAgPSBnZXRfdHVwbGUgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IGdldCB0IHAgPSBnZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHVuc2FmZV9nZXQgdCBwID0gdW5zYWZlX2dldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgc2V0IHQgcCBzbG90IHYgPSBzZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHYgPSB1bnNhZmVfc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIHVuc2FmZV9mcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBmcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5lbmRcbiIsIigqIEJlIHN1cmUgYW5kIGZpcnN0IHJlYWQgdGhlIGltcGxlbWVudGF0aW9uIG92ZXJ2aWV3IGluIHRpbWluZ193aGVlbF9pbnRmLm1sLlxuXG4gICBBIHRpbWluZyB3aGVlbCBpcyByZXByZXNlbnRlZCBhcyBhbiBhcnJheSBvZiBcImxldmVsc1wiLCB3aGVyZSBlYWNoIGxldmVsIGlzIGFuIGFycmF5IG9mXG4gICBcInNsb3RzXCIuICBFYWNoIHNsb3QgcmVwcmVzZW50cyBhIHJhbmdlIG9mIGtleXMsIGFuZCBob2xkcyBlbGVtZW50cyBhc3NvY2lhdGVkIHdpdGhcbiAgIHRob3NlIGtleXMuICBFYWNoIGxldmVsIGlzIGRldGVybWluZWQgYnkgdHdvIHBhcmFtZXRlcnM6IFtiaXRzXSwgdGhlIG51bWJlciBvZiBrZXkgYml0c1xuICAgdGhhdCB0aGF0IGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvciBkaXN0aW5ndWlzaGluZywgYW5kIFtiaXRzX3Blcl9zbG90XSwgdGhlIHNpemUgb2YgdGhlXG4gICByYW5nZSBvZiBrZXlzIHRoYXQgY29ycmVzcG9uZCB0byBhIHNpbmdsZSBzbG90IGluIHRoZSBhcnJheS4gIENvbmNlcHR1YWxseSwgZWFjaCBsZXZlbFxuICAgYnJlYWtzIHVwIGFsbCBwb3NzaWJsZSBrZXlzIGludG8gcmFuZ2VzIG9mIHNpemUgWzJeYml0c19wZXJfc2xvdF0uICBUaGUgbGVuZ3RoIG9mIGFcbiAgIGxldmVsIGFycmF5IGlzIFsyXmJpdHNdLCBhbmQgdGhlIGFycmF5IGlzIHVzZWQgbGlrZSBhIGNpcmN1bGFyIGJ1ZmZlciB0byB0cmF2ZXJzZSB0aGVcbiAgIHJhbmdlcyBhcyB0aGUgdGltaW5nIHdoZWVsJ3MgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLiAgQSBrZXkgW2tdLCBpZiBzdG9yZWQgaW4gdGhlXG4gICBsZXZlbCwgaXMgc3RvcmVkIGF0IGluZGV4IFsoayAvIDJeYml0c19wZXJfc2xvdCkgbW9kIDJeYml0c10uXG5cbiAgIFRoZSBzZXR0aW5ncyBvZiB0aGUgW2JpdHNdIHZhbHVlcyBhcmUgY29uZmlndXJhYmxlIGJ5IHVzZXIgY29kZSB1c2luZyBbTGV2ZWxfYml0c10sXG4gICBhbHRob3VnaCB0aGVyZSBpcyBhIHJlYXNvbmFibGUgZGVmYXVsdCBzZXR0aW5nLiAgR2l2ZW4gdGhlIFtiaXRzXSB2YWx1ZXMsIHRoZVxuICAgW2JpdHNfcGVyX3Nsb3RdIGFyZSBjaG9zZW4gc28gdGhhdCBbYml0c19wZXJfc2xvdF0gYXQgbGV2ZWwgW2ldIGlzIHRoZSBzdW0gb2YgdGhlXG4gICBbYml0c10gYXQgYWxsIGxvd2VyIGxldmVscy4gIFRodXMsIGEgc2xvdCdzIHJhbmdlIGF0IGxldmVsIFtpXSBpcyBhcyBsYXJnZSBhcyB0aGVcbiAgIGVudGlyZSByYW5nZSBvZiB0aGUgYXJyYXkgYXQgbGV2ZWwgW2kgLSAxXS5cblxuICAgRWFjaCBsZXZlbCBoYXMgYSBbbWluX2FsbG93ZWRfa2V5XSBhbmQgYSBbbWF4X2FsbG93ZWRfa2V5XSB0aGF0IGRldGVybWluZSB0aGUgcmFuZ2Ugb2ZcbiAgIGtleXMgdGhhdCBpdCBjdXJyZW50bHkgcmVwcmVzZW50cy4gIFRoZSBjcnVjaWFsIGludmFyaWFudCBvZiB0aGUgdGltaW5nIHdoZWVsIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0aGF0IHRoZSBbbWluX2FsbG93ZWRfa2V5XSBhdCBsZXZlbCBbaV0gaXMgbm8gbW9yZSB0aGFuIHRoZVxuICAgW21heF9hbGxvd2VkX2tleSArIDFdIG9mIGxldmVsIFtpIC0gMV0uICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbGV2ZWxzIGNhbiByZXByZXNlbnQgYWxsXG4gICBrZXlzIGZyb20gdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBsb3dlc3QgbGV2ZWwgdG8gdGhlIFttYXhfYWxsb3dlZF9rZXldIG9mIHRoZVxuICAgaGlnaGVzdCBsZXZlbC4gIFRoZSBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmVzdG9yaW5nXG4gICB0aGlzIGludmFyaWFudC5cblxuICAgQXQgbGV2ZWwgMCwgW2JpdHNfcGVyX3Nsb3QgPSAwXSwgYW5kIHNvIHRoZSBzaXplIG9mIGVhY2ggc2xvdCBpcyBbMV0uICBUaGF0IGlzLCBsZXZlbCAwXG4gICBwcmVjaXNlbHkgZGlzdGluZ3Vpc2hlcyBhbGwgdGhlIGtleXMgYmV0d2VlbiBpdHMgW21pbl9hbGxvd2VkX2tleV0gKHdoaWNoIGlzIHRoZSBzYW1lXG4gICBhcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwpIGFuZCBbbWF4X2FsbG93ZWRfa2V5XS4gIEFzIHRoZVxuICAgbGV2ZWxzIGluY3JlYXNlLCB0aGUgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCB0aGUgW2JpdHNfcGVyX3Nsb3RdIGluY3JlYXNlcywgYW5kXG4gICB0aGUgcmFuZ2Ugb2Yga2V5cyBzdG9yZWQgaW4gdGhlIGxldmVsIGluY3JlYXNlcyAoZHJhbWF0aWNhbGx5KS5cblxuICAgVGhlIGlkZWEgb2YgdGhlIGltcGxlbWVudGF0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIGhpZXJhcmNoaWNhbCBhcHByb2FjaCBkZXNjcmliZWQgaW46XG5cbiAgIHt2XG4gICAgIEhhc2hlZCBhbmQgSGllcmFyY2hpY2FsIFRpbWluZyBXaGVlbHM6XG4gICAgIEVmZmljaWVudCBEYXRhIFN0cnVjdHVyZXMgZm9yIEltcGxlbWVudGluZyBhIFRpbWVyIEZhY2lsaXR5XG5cbiAgICAgVmFyZ2hlc2UgJiBMYXVjaywgMTk5NlxuICAgdn1cblxuICAgSG93ZXZlciwgdGhlIGNvZGUgaXMgY29tcGxldGVseSBuZXcuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgVGltaW5nX3doZWVsX2ludGZcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuXG5sZXQgc2V4cF9vZl90X3N0eWxlIDogWyBgUHJldHR5IHwgYEludGVybmFsIF0gcmVmID0gcmVmIGBQcmV0dHlcblxuKCogW3ttYXgsbWlufV90aW1lXSBhcmUgYm91bmRzIG9uIHRoZSB0aW1lcyBzdXBwb3J0ZWQgYnkgYSB0aW1pbmcgd2hlZWwuICopXG5cbmxldCBtYXhfdGltZSA9IFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtaW5fdGltZSA9IFRpbWVfbnMuZXBvY2hcblxubW9kdWxlIE51bV9rZXlfYml0cyA6IHNpZ1xuICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqIHZhbCBtaW5fdmFsdWUgOiB0ICopXG5cbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93MiA6IHQgLT4gSW50NjMudFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IG1pbl92YWx1ZSA9IDBcblxuICAoKiogV2Ugc3VwcG9ydCBhbGwgbm9uLW5lZ2F0aXZlIFtUaW1lX25zLnRdIHZhbHVlcy4gKilcbiAgbGV0IG1heF92YWx1ZSA9IEludDYzLm51bV9iaXRzIC0gMVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0ID49IG1pbl92YWx1ZSk7XG4gICAgYXNzZXJ0ICh0IDw9IG1heF92YWx1ZSlcbiAgOztcblxuICBsZXQgb2ZfaW50IGkgPVxuICAgIGludmFyaWFudCBpO1xuICAgIGlcbiAgOztcblxuICBsZXQgKCArICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgKyB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgKCAtICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgLSB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgcG93MiB0ID0gSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgdFxuZW5kXG5cbm1vZHVsZSBMZXZlbF9iaXRzID0gc3RydWN0XG4gIHR5cGUgdCA9IE51bV9rZXlfYml0cy50IGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWF4X251bV9iaXRzID0gKE51bV9rZXlfYml0cy5tYXhfdmFsdWUgOj4gaW50KVxuICBsZXQgbnVtX2JpdHNfaW50ZXJuYWwgdCA9IExpc3QuZm9sZCB0IH5pbml0Ok51bV9rZXlfYml0cy56ZXJvIH5mOk51bV9rZXlfYml0cy4oICsgKVxuICBsZXQgbnVtX2JpdHMgdCA9IChudW1fYml0c19pbnRlcm5hbCB0IDo+IGludClcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAobm90IChMaXN0LmlzX2VtcHR5IHQpKTtcbiAgICBMaXN0Lml0ZXIgdCB+ZjooZnVuIG51bV9rZXlfYml0cyAtPlxuICAgICAgTnVtX2tleV9iaXRzLmludmFyaWFudCBudW1fa2V5X2JpdHM7XG4gICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBudW1fa2V5X2JpdHMgTnVtX2tleV9iaXRzLnplcm8pKTtcbiAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IChudW1fYml0c19pbnRlcm5hbCB0KVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHQgPSBzZXhwIHw+IFslb2Zfc2V4cDogdF0gaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9leG4gPyhleHRlbmRfdG9fbWF4X251bV9iaXRzID0gZmFsc2UpIGludHMgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50cyB0aGVuIGZhaWx3aXRoIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIHJlcXVpcmVzIGEgbm9uZW1wdHkgbGlzdFwiO1xuICAgIGlmIExpc3QuZXhpc3RzIGludHMgfmY6KGZ1biBiaXRzIC0+IGJpdHMgPD0gMClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3Qgbm9ucG9zaXRpdmUgbnVtIGJpdHNcIiB+XzooaW50cyA6IGludCBsaXN0KV07XG4gICAgbGV0IG51bV9iaXRzID0gTGlzdC5mb2xkIGludHMgfmluaXQ6MCB+ZjooICsgKSBpblxuICAgIGlmIG51bV9iaXRzID4gbWF4X251bV9iaXRzXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3QgdG9vIG1hbnkgYml0c1wiXG4gICAgICAgICAgICB+XzooaW50cyA6IGludCBsaXN0KVxuICAgICAgICAgICAgfmdvdDoobnVtX2JpdHMgOiBpbnQpXG4gICAgICAgICAgICAobWF4X251bV9iaXRzIDogaW50KV07XG4gICAgbGV0IGludHMgPVxuICAgICAgaWYgZXh0ZW5kX3RvX21heF9udW1fYml0c1xuICAgICAgdGhlbiBpbnRzIEAgTGlzdC5pbml0IChtYXhfbnVtX2JpdHMgLSBudW1fYml0cykgfmY6KGNvbnN0IDEpXG4gICAgICBlbHNlIGludHNcbiAgICBpblxuICAgIExpc3QubWFwIGludHMgfmY6TnVtX2tleV9iaXRzLm9mX2ludFxuICA7O1xuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biBbIDExOyAxMDsgMTA7IDEwOyAxMDsgMTA7IDEgXVxuXG4gIGxldCB0cmltIHQgfm1heF9udW1fYml0cyA9XG4gICAgaWYgTnVtX2tleV9iaXRzLiggPD0gKSAobnVtX2JpdHNfaW50ZXJuYWwgdCkgbWF4X251bV9iaXRzXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgdCB+cmVtYWluaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBiIDo6IHQgLT5cbiAgICAgICAgICBpZiBOdW1fa2V5X2JpdHMuKCA+PSApIGIgcmVtYWluaW5nXG4gICAgICAgICAgdGhlbiBbIHJlbWFpbmluZyBdXG4gICAgICAgICAgZWxzZSBiIDo6IGxvb3AgdCB+cmVtYWluaW5nOihOdW1fa2V5X2JpdHMuKCAtICkgcmVtYWluaW5nIGIpXG4gICAgICBpblxuICAgICAgbG9vcCB0IH5yZW1haW5pbmc6bWF4X251bV9iaXRzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gOiBzaWdcbiAgaW5jbHVkZSBBbGFybV9wcmVjaXNpb25cblxuICB2YWwgbnVtX2tleV9iaXRzIDogdCAtPiBOdW1fa2V5X2JpdHMudFxuICB2YWwgaW50ZXJ2YWxfbnVtIDogdCAtPiBUaW1lX25zLnQgLT4gSW50NjMudFxuICB2YWwgaW50ZXJ2YWxfbnVtX3N0YXJ0IDogdCAtPiBJbnQ2My50IC0+IFRpbWVfbnMudFxuZW5kID0gc3RydWN0XG4gICgqKiBbdF0gaXMgcmVwcmVzZW50ZWQgYXMgdGhlIGxvZzIgb2YgYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICopXG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgbGV0IG51bV9rZXlfYml0cyB0ID0gdCB8PiBOdW1fa2V5X2JpdHMub2ZfaW50XG5cbiAgbGV0IHRvX3NwYW4gdCA9XG4gICAgaWYgdCA8IDBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi50b19zcGFuXSBvZiBuZWdhdGl2ZSBwb3dlciBvZiB0d28gbmFub3NlY29uZHNcIiB+XzoodCA6IGludCldO1xuICAgIEludDYzLihzaGlmdF9sZWZ0IG9uZSkgdCB8PiBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQgfD4gdG9fc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgbGV0IG9uZV9uYW5vc2Vjb25kID0gMFxuICBsZXQgYWJvdXRfb25lX21pY3Jvc2Vjb25kID0gMTBcbiAgbGV0IGFib3V0X29uZV9taWxsaXNlY29uZCA9IDIwXG4gIGxldCBhYm91dF9vbmVfc2Vjb25kID0gMzBcbiAgbGV0IGFib3V0X29uZV9kYXkgPSA0NlxuICBsZXQgbXVsIHQgfnBvdzIgPSB0ICsgcG93MlxuICBsZXQgZGl2IHQgfnBvdzIgPSB0IC0gcG93MlxuICBsZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9IEludDYzLnNoaWZ0X3JpZ2h0ICh0aW1lIHw+IFRpbWVfbnMudG9faW50NjNfbnNfc2luY2VfZXBvY2gpIHRcblxuICBsZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgICBJbnQ2My5zaGlmdF9sZWZ0IGludGVydmFsX251bSB0IHw+IFRpbWVfbnMub2ZfaW50NjNfbnNfc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgb2Zfc3Bhbl9mbG9vcl9wb3cyX25zIHNwYW4gPVxuICAgIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLm9mX3NwYW5fZmxvb3JfcG93Ml9uc10gZ290IG5vbi1wb3NpdGl2ZSBzcGFuXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgICBzcGFuIHw+IFRpbWVfbnMuU3Bhbi50b19pbnQ2M19ucyB8PiBJbnQ2My5mbG9vcl9sb2cyXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW4gPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcblxuICBtb2R1bGUgVW5zdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3BhblxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zcGFuXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFRpbWVfbnMuU3BhbikgKFQpXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZSAoVGltZV9ucy5TcGFuKSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgbGV2ZWxfYml0c19kZWZhdWx0ID0gTGV2ZWxfYml0cy5kZWZhdWx0XG5cbiAgdHlwZSB0ID1cbiAgICB7IGFsYXJtX3ByZWNpc2lvbiA6IEFsYXJtX3ByZWNpc2lvbi5VbnN0YWJsZS50XG4gICAgOyBsZXZlbF9iaXRzIDogTGV2ZWxfYml0cy50IFtAZGVmYXVsdCBsZXZlbF9iaXRzX2RlZmF1bHRdXG4gICAgOyBjYXBhY2l0eSA6IGludCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBBbGFybV9wcmVjaXNpb24udG9fc3BhbiB0LmFsYXJtX3ByZWNpc2lvblxuXG4gICgqIFttYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbGV2ZWwgYml0cyBuZWVkZWQgZm9yIGFcbiAgICAgdGltaW5nIHdoZWVsIHdpdGggdGhlIHNwZWNpZmllZCBbYWxhcm1fcHJlY2lzaW9uXSB0byBiZSBhYmxlIHRvIHJlcHJlc2VudCBhbGxcbiAgICAgcG9zc2libGUgdGltZXMgZnJvbSBbVGltZV9ucy5lcG9jaF0gb253YXJkLiAgU2luY2Ugbm9uLW5lZ2F0aXZlIHRpbWVzIGhhdmUgNjIgYml0cyxcbiAgICAgd2UgcmVxdWlyZSBbTCA8PSA2MiAtIEFdLCB3aGVyZSBbQV0gaXMgdGhlIG51bWJlciBvZiBhbGFybSBiaXRzIGFuZCBbTF0gaXMgdGhlXG4gICAgIG51bWJlciBvZiBsZXZlbCBiaXRzLiAqKVxuICBsZXQgbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbiA9XG4gICAgTnVtX2tleV9iaXRzLiggLSApXG4gICAgICBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgICAoQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIE51bV9rZXlfYml0cy4oIDw9IClcbiAgICAgICAgICAoTGV2ZWxfYml0cy5udW1fYml0c19pbnRlcm5hbCB0LmxldmVsX2JpdHMpXG4gICAgICAgICAgKG1heF9udW1fbGV2ZWxfYml0cyB0LmFsYXJtX3ByZWNpc2lvbikpO1xuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uOmlnbm9yZVxuICAgICAgICB+Y2FwYWNpdHk6aWdub3JlXG4gICAgICAgIH5sZXZlbF9iaXRzOihjaGVjayBMZXZlbF9iaXRzLmludmFyaWFudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgPyhsZXZlbF9iaXRzID0gbGV2ZWxfYml0c19kZWZhdWx0KSB+YWxhcm1fcHJlY2lzaW9uICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBMZXZlbF9iaXRzLnRyaW0gbGV2ZWxfYml0cyB+bWF4X251bV9iaXRzOihtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICAgIGluXG4gICAgeyBhbGFybV9wcmVjaXNpb247IGxldmVsX2JpdHM7IGNhcGFjaXR5IH1cbiAgOztcblxuICBsZXQgbWljcm9zZWNvbmRfcHJlY2lzaW9uICgpID1cbiAgICBjcmVhdGVcbiAgICAgICgpXG4gICAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWljcm9zZWNvbmRcbiAgICAgIH5sZXZlbF9iaXRzOihMZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMDsgMTA7IDY7IDY7IDUgXSlcbiAgOztcblxuICBsZXQgZHVyYXRpb25zIHQgPVxuICAgIExpc3QuZm9sZGluZ19tYXBcbiAgICAgIHQubGV2ZWxfYml0c1xuICAgICAgfmluaXQ6KEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgdC5hbGFybV9wcmVjaXNpb24gfD4gTnVtX2tleV9iaXRzLnRvX2ludClcbiAgICAgIH5mOihmdW4gbnVtX2JpdHNfYWNjdW0gbGV2ZWxfbnVtX2JpdHMgLT5cbiAgICAgICAgbGV0IG51bV9iaXRzX2FjY3VtID0gbnVtX2JpdHNfYWNjdW0gKyAobGV2ZWxfbnVtX2JpdHMgfD4gTnVtX2tleV9iaXRzLnRvX2ludCkgaW5cbiAgICAgICAgbGV0IGR1cmF0aW9uID1cbiAgICAgICAgICBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgICAgICAgICAgIChpZiBudW1fYml0c19hY2N1bSA9IEludDYzLm51bV9iaXRzIC0gMVxuICAgICAgICAgICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgICAgICAgICAgZWxzZSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0c19hY2N1bSlcbiAgICAgICAgaW5cbiAgICAgICAgbnVtX2JpdHNfYWNjdW0sIGR1cmF0aW9uKVxuICA7O1xuZW5kXG5cblxuKCoqIFRpbWluZyB3aGVlbCBpcyBpbXBsZW1lbnRlZCBhcyBhIHByaW9yaXR5IHF1ZXVlIGluIHdoaWNoIHRoZSBrZXlzIGFyZVxuICAgIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnZhbHMgb2YgdGltZS4gIFRoZSBwcmlvcml0eSBxdWV1ZSBpc1xuICAgIHVubGlrZSBhIHR5cGljYWwgcHJpb3JpdHkgcXVldWUgaW4gdGhhdCByYXRoZXIgdGhhbiBoYXZpbmcgYSBcImRlbGV0ZSBtaW5cIiBvcGVyYXRpb24sXG4gICAgaXQgaGFzIGEgbm9uZGVjcmVhc2luZyBtaW5pbXVtIGFsbG93ZWQga2V5LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudCB0aW1lLFxuICAgIGFuZCBhbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBvcGVyYXRpb24sIHdoaWNoIGltcGxlbWVudHMgW2FkdmFuY2VfY2xvY2tdLlxuICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGFzIGEgc2lkZSBlZmZlY3QgcmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgdGltaW5nXG4gICAgd2hlZWwgd2hvc2Uga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgbmV3IG1pbmltdW0sIHdoaWNoIGltcGxlbWVudHMgZmlyaW5nIHRoZSBhbGFybXNcbiAgICB3aG9zZSB0aW1lIGhhcyBleHBpcmVkLlxuXG4gICAgQWRkaW5nIGVsZW1lbnRzIHRvIGFuZCByZW1vdmluZyBlbGVtZW50cyBmcm9tIGEgdGltaW5nIHdoZWVsIHRha2VzIGNvbnN0YW50IHRpbWUsXG4gICAgdW5saWtlIGEgaGVhcC1iYXNlZCBwcmlvcml0eSBxdWV1ZSB3aGljaCB0YWtlcyBsb2coTiksIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZlxuICAgIGVsZW1lbnRzIGluIHRoZSBoZWFwLiAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlXG4gICAgYW1vdW50IG9mIGluY3JlYXNlIGluIHRoZSBtaW4tYWxsb3dlZCBrZXksIGFzIGNvbXBhcmVkIHRvIGxvZyhOKSBmb3IgYSBoZWFwLiAgSXQgaXNcbiAgICB0aGVzZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlcyB0aGF0IG1vdGl2YXRlIHRoZSBleGlzdGVuY2Ugb2YgdGltaW5nIHdoZWVscyBhbmQgbWFrZVxuICAgIHRoZW0gYSBnb29kIGNob2ljZSBmb3IgbWFpbnRhaW5nIGEgc2V0IG9mIGFsYXJtcy4gIFdpdGggYSB0aW1pbmcgd2hlZWwsIG9uZSBjYW5cbiAgICBzdXBwb3J0IGFueSBudW1iZXIgb2YgYWxhcm1zIHBheWluZyBjb25zdGFudCBvdmVyaGVhZCBwZXIgYWxhcm0sIHdoaWxlIHBheWluZyBhXG4gICAgc21hbGwgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIHVuaXQgb2YgdGltZSBwYXNzZWQuXG5cbiAgICBBcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRoZSB0aW1pbmcgd2hlZWwgZG9lcyBhIGxhenkgcmFkaXggc29ydCBvZiB0aGVcbiAgICBlbGVtZW50IGtleXMsIHdpdGggbGV2ZWwgMCBoYW5kbGluZyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgW2JfMF0gYml0cyBpbiBhIGtleSwgYW5kXG4gICAgZWFjaCBzdWJzZXF1ZW50IGxldmVsIFtpXSBoYW5kbGluZyB0aGUgbmV4dCBtb3N0IHNpZ25pZmljYW50IFtiX2ldIGJpdHMuICBUaGUgbGV2ZWxzXG4gICAgaG9sZCBpbmNyZWFzaW5nbHkgbGFyZ2VyIHJhbmdlcyBvZiBrZXlzLCB3aGVyZSB0aGUgdW5pb24gb2YgYWxsIHRoZSBsZXZlbHMgY2FuIGhvbGRcbiAgICBhbnkga2V5IGZyb20gW21pbl9hbGxvd2VkX2tleSB0XSB0byBbbWF4X2FsbG93ZWRfa2V5IHRdLiAgV2hlbiBhIGtleSBpcyBhZGRlZCB0byB0aGVcbiAgICB0aW1pbmcgd2hlZWwsIGl0IGlzIGFkZGVkIGF0IHRoZSBsb3dlc3QgcG9zc2libGUgbGV2ZWwgdGhhdCBjYW4gc3RvcmUgdGhlIGtleS4gIEFzXG4gICAgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aW1pbmctd2hlZWwgZWxlbWVudHMgbW92ZSBkb3duIGxldmVscyB1bnRpbCB0aGV5XG4gICAgcmVhY2ggbGV2ZWwgMCwgYW5kIHRoZW4gYXJlIGV2ZW50dWFsbHkgcmVtb3ZlZC4gICopXG5tb2R1bGUgUHJpb3JpdHlfcXVldWUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEtleSA6IEludGVydmFsX251bVxuXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICAoKiogQW4gW0VsdC50XSByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCB3YXMgYWRkZWQgdG8gYSB0aW1pbmcgd2hlZWwuICopXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgYXQgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBrZXkgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIHZhbHVlIDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBudWxsIDogdW5pdCAtPiAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEVsdC50XG4gIGVuZFxuXG4gIHZhbCBwb29sIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICgqKiBbY3JlYXRlID9sZXZlbF9iaXRzICgpXSBjcmVhdGVzIGEgbmV3IGVtcHR5IHRpbWluZyB3aGVlbCwgW3RdLCB3aXRoIFtsZW5ndGggdCA9IDBdXG4gICAgICBhbmQgW21pbl9hbGxvd2VkX2tleSB0ID0gMF0uICopXG4gIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+ID9sZXZlbF9iaXRzOkxldmVsX2JpdHMudCAtPiB1bml0IC0+ICdhIHRcblxuICAoKiogW2xlbmd0aCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcblxuICAoKiogW21pbl9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWluaW11bSBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIFRoaXMgb25seVxuICAgICAgaW5kaWNhdGVzIHRoZSBwb3NzaWJpbGl0eTsgdGhlcmUgbmVlZCBub3QgYmUgYW4gZWxlbWVudCBbZWx0XSBpbiBbdF0gd2l0aCBbRWx0LmtleVxuICAgICAgZWx0ID0gbWluX2FsbG93ZWRfa2V5IHRdLiAgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIFwibWluX2tleVwiIG9wZXJhdGlvbiBpbiBhXG4gICAgICB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlLlxuXG4gICAgICBbbWluX2FsbG93ZWRfa2V5IHRdIGNhbiBpbmNyZWFzZSBvdmVyIHRpbWUsIHZpYSBjYWxscyB0b1xuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0uICopXG4gIHZhbCBtaW5fYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICAoKiogW21heF9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgQXNcbiAgICAgIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgc28gZG9lcyBbbWF4X2FsbG93ZWRfa2V5XTsgaG93ZXZlciBpdCBpcyBub3QgdGhlIGNhc2VcbiAgICAgIHRoYXQgW21heF9hbGxvd2VkX2tleSB0IC0gbWluX2FsbG93ZWRfa2V5IHRdIGlzIGEgY29uc3RhbnQuICBJdCBpcyBndWFyYW50ZWVkIHRoYXRcbiAgICAgIFttYXhfYWxsb3dlZF9rZXkgdCA+PSBtaW5fYWxsb3dlZF9rZXkgdCArIDJeQiAtIDFdLFxuICAgICAgd2hlcmUgW0JdIGlzIHRoZSBzdW0gb2YgdGhlIGJfaSBpbiBbbGV2ZWxfYml0c10uICopXG4gIHZhbCBtYXhfYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICB2YWwgbWluX2VsdF8gOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC50XG4gIHZhbCBpbnRlcm5hbF9hZGQgOiAnYSB0IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gJ2EgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcblxuICAoKiogW3JlbW92ZSB0IGVsdF0gcmVtb3ZlcyBbZWx0XSBmcm9tIFt0XS4gIEl0IGlzIGFuIGVycm9yIGlmIFtlbHRdIGlzIG5vdCBjdXJyZW50bHlcbiAgICAgIGluIFt0XSwgYW5kIHRoaXMgZXJyb3IgbWF5IG9yIG1heSBub3QgYmUgZGV0ZWN0ZWQuICopXG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+ICdhIEVsdC50IC0+IHVuaXRcblxuICB2YWwgY2hhbmdlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+IHVuaXRcblxuICAoKiogW2NsZWFyIHRdIHJlbW92ZXMgYWxsIGVsdHMgZnJvbSBbdF0uICopXG4gIHZhbCBjbGVhciA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gYm9vbFxuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gICgqKiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWRdIGluY3JlYXNlcyB0aGUgbWluaW11bSBhbGxvd2VkXG4gICAgICBrZXkgaW4gW3RdIHRvIFtrZXldLCBhbmQgcmVtb3ZlcyBhbGwgZWxlbWVudHMgd2l0aCBrZXlzIGxlc3MgdGhhbiBba2V5XSwgYXBwbHlpbmdcbiAgICAgIFtoYW5kbGVfcmVtb3ZlZF0gdG8gZWFjaCBlbGVtZW50IHRoYXQgaXMgcmVtb3ZlZC4gIElmIFtrZXkgPD0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgdGhlbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBkb2VzIG5vdGhpbmcuICBPdGhlcndpc2UsIGlmXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgW21pbl9hbGxvd2VkX2tleSB0ID0ga2V5XS5cblxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gW2tleSAtIG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIGFsdGhvdWdoIHBvc3NpYmx5IGxlc3MgdGltZS5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW2hhbmRsZV9yZW1vdmVkXSBhY2Nlc3NlcyBbdF0gaW4gYW55IHdheSBvdGhlciB0aGFuXG4gICAgICBbRWx0XSBmdW5jdGlvbnMuICopXG4gIHZhbCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICA6ICAnYSB0XG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gaGFuZGxlX3JlbW92ZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4gSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50XG5cbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIEVsdC50IC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgZmlyZV9wYXN0X2FsYXJtc1xuICAgIDogICdhIHRcbiAgICAtPiBoYW5kbGVfZmlyZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gbm93OlRpbWVfbnMudFxuICAgIC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICAoKiogRWFjaCBzbG90IGluIGEgbGV2ZWwgaXMgYSAocG9zc2libHkgbnVsbCkgcG9pbnRlciB0byBhIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgb2YgZWxlbWVudHMuICBXZSBwb29sIHRoZSBlbGVtZW50cyBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGVtIGFmdGVyIHRoZXkgYXJlIHJlbW92ZWRcbiAgICAgIGZyb20gdGhlIHRpbWluZyB3aGVlbCAoZWl0aGVyIHZpYSBbcmVtb3ZlXSBvciBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSkuICBJblxuICAgICAgYWRkaXRpb24gdG8gc3RvcmluZyB0aGUgW2tleV0sIFthdF0sIGFuZCBbdmFsdWVdIGluIHRoZSBlbGVtZW50LCB3ZSBzdG9yZSB0aGVcbiAgICAgIFtsZXZlbF9pbmRleF0gc28gdGhhdCB3ZSBjYW4gcXVpY2tseSBnZXQgdG8gdGhlIGxldmVsIGhvbGRpbmcgYW4gZWxlbWVudCB3aGVuIHdlXG4gICAgICBbcmVtb3ZlXSBpdC5cblxuICAgICAgV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiBbRXh0ZXJuYWxfZWx0XSBhbmQgW0ludGVybmFsX2VsdF0sIHdoaWNoIGFyZSB0aGUgc2FtZVxuICAgICAgdW5kZXJuZWF0aC4gIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBhbiBbSW50ZXJuYWxfZWx0XSBpcyBlaXRoZXIgW251bGxdIG9yIGFcbiAgICAgIHZhbGlkIHBvaW50ZXIuICBPbiB0aGUgb3RoZXIgaGFuZCwgW0V4dGVybmFsX2VsdF1zIGFyZSByZXR1cm5lZCB0byB1c2VyIGNvZGUsIHNvXG4gICAgICB0aGVyZSBpcyBubyBndWFyYW50ZWUgb2YgdmFsaWRpdHkgLS0gd2UgYWx3YXlzIHZhbGlkYXRlIGFuIFtFeHRlcm5hbF9lbHRdIGJlZm9yZVxuICAgICAgZG9pbmcgYW55dGhpbmcgd2l0aCBpdC5cblxuICAgICAgSXQgaXMgdGhlcmVmb3JlIE9LIHRvIHVzZSBbUG9vbC5VbnNhZmVdLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIgYXR0ZW1wdCB0byBhY2Nlc3MgYVxuICAgICAgc2xvdCBvZiBhbiBpbnZhbGlkIHBvaW50ZXIuICopXG4gIG1vZHVsZSBQb29sID0gUG9vbC5VbnNhZmVcblxuICBtb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAoKiogW0ludGVydmFsX251bV0gaXMgdGhlIHB1YmxpYyBBUEkuICBFdmVyeXRoaW5nIGZvbGxvd2luZyBpbiB0aGUgc2lnbmF0dXJlIGlzXG4gICAgICAgIGZvciBpbnRlcm5hbCB1c2UuICopXG4gICAgaW5jbHVkZSBUaW1pbmdfd2hlZWxfaW50Zi5JbnRlcnZhbF9udW1cblxuICAgICgqKiBbYWRkX2NsYW1wX3RvX21heF0gZG9lc24ndCB3b3JrIGF0IGFsbCB3aXRoIG5lZ2F0aXZlIHNwYW5zICopXG4gICAgdmFsIGFkZF9jbGFtcF90b19tYXggOiB0IC0+IFNwYW4udCAtPiB0XG5cbiAgICB2YWwgc3VjY19jbGFtcF90b19tYXggOiB0IC0+IHRcblxuICAgICgqKiBbU2xvdHNfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSBhIGtleSdzIHNsb3QgaW4gYSBnaXZlbiBsZXZlbC4gKilcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBjcmVhdGUgOiBsZXZlbF9iaXRzOk51bV9rZXlfYml0cy50IC0+IHRcbiAgICAgIHZhbCBuZXh0X3Nsb3QgOiB0IC0+IGludCAtPiBpbnRcbiAgICBlbmRcblxuICAgICgqKiBbTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgbWluaW11bSBrZXkgaW4gdGhlXG4gICAgICAgIHNhbWUgc2xvdCBhcyBhIGdpdmVuIGtleS4gKilcbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCBudW1fa2V5cyA6IE51bV9rZXlfYml0cy50IC0+IFNwYW4udFxuICAgIHZhbCBtaW5fa2V5X2luX3NhbWVfc2xvdCA6IHQgLT4gTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50IC0+IHRcbiAgICB2YWwgc2xvdCA6IHQgLT4gYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiBzbG90c19tYXNrOlNsb3RzX21hc2sudCAtPiBpbnRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIFNsb3RzX21hc2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgbGV0IGNyZWF0ZSB+bGV2ZWxfYml0cyA9IEludDYzLiggLSApIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSBJbnQ2My5vbmVcbiAgICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gKHNsb3QgKyAxKSBsYW5kIEludDYzLnRvX2ludF9leG4gdFxuICAgIGVuZFxuXG4gICAgbGV0IG51bV9rZXlzIG51bV9iaXRzID0gTnVtX2tleV9iaXRzLnBvdzIgbnVtX2JpdHNcblxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCBjcmVhdGUgfmJpdHNfcGVyX3Nsb3QgPSBiaXRfbm90IChOdW1fa2V5X2JpdHMucG93MiBiaXRzX3Blcl9zbG90IC0gb25lKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICAgIGxldCBzY2FsZV9pbnQgdCBpID0gdCAqIG9mX2ludCBpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludDYzXG5cbiAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICBsZXQgYWRkIHQgaSA9IHQgKyBpXG4gICAgbGV0IGFkZF9jbGFtcF90b19tYXggdCBpID0gaWYgdCA+IG1heF92YWx1ZSAtIGkgdGhlbiBtYXhfdmFsdWUgZWxzZSB0ICsgaVxuICAgIGxldCBzdWNjX2NsYW1wX3RvX21heCB0ID0gaWYgdCA9IG1heF92YWx1ZSB0aGVuIG1heF92YWx1ZSBlbHNlIHN1Y2MgdFxuICAgIGxldCBzdWIgdCBpID0gdCAtIGlcbiAgICBsZXQgZGlmZiB0MSB0MiA9IHQxIC0gdDJcblxuICAgIGxldCBzbG90IHQgfihiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnQpIH5zbG90c19tYXNrID1cbiAgICAgIHRvX2ludF9leG4gKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0IHQgKGJpdHNfcGVyX3Nsb3QgOj4gaW50KSkgc2xvdHNfbWFzaylcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9XG4gICAgICBiaXRfYW5kIHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gS2V5Lk1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgbW9kdWxlIFNsb3RzX21hc2sgPSBLZXkuU2xvdHNfbWFza1xuXG4gIG1vZHVsZSBFeHRlcm5hbF9lbHQgPSBzdHJ1Y3RcblxuICAgICgqKiBUaGUgW3Bvb2xfc2xvdHNdIGhlcmUgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgc2xvdHMgaW4gYSBsZXZlbCBhcnJheS4gIFRoaXMgaXNcbiAgICAgICAgZm9yIHRoZSBzbG90cyBpbiB0aGUgcG9vbCB0dXBsZSByZXByZXNlbnRpbmcgYSBsZXZlbCBlbGVtZW50LiAqKVxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9XG4gICAgICAoIEtleS50XG4gICAgICAsIFRpbWVfbnMudFxuICAgICAgLCAnYVxuICAgICAgLCBpbnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgKVxuICAgICAgICBQb29sLlNsb3RzLnQ2XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+IHVuaXQgLT4gXyB0XG4gICAgICB2YWwgaXNfZnVsbCA6IF8gdCAtPiBib29sXG4gICAgICB2YWwgZ3JvdyA6ID9jYXBhY2l0eTppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSBwcml2YXRlICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqKiBEZWFsaW5nIHdpdGggW0V4dGVybmFsX2VsdF1zLiAqKVxuXG4gICAgdmFsIGV4dGVybmFsX2lzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEV4dGVybmFsX2VsdC50XG4gICAgdmFsIG9mX2V4dGVybmFsX2V4biA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiAnYSB0XG4gICAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaW52YXJpYW50IDogJ2EgUG9vbC50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbY3JlYXRlXSByZXR1cm5zIGFuIGVsZW1lbnQgd2hvc2UgW25leHRdIGFuZCBbcHJldl0gYXJlIFtudWxsXS4gKilcbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICAnYSBQb29sLnRcbiAgICAgIC0+IGtleTpLZXkudFxuICAgICAgKCoqIFthdF0gaXMgdXNlZCB3aGVuIHRoZSBwcmlvcml0eSBxdWV1ZSBpcyB1c2VkIHRvIGltcGxlbWVudCBhIHRpbWluZyB3aGVlbC4gIElmXG4gICAgICAgICAgdW51c2VkLCBpdCB3aWxsIGJlIFtUaW1lX25zLmVwb2NoXS4gKilcbiAgICAgIC0+IGF0OlRpbWVfbnMudFxuICAgICAgLT4gdmFsdWU6J2FcbiAgICAgIC0+IGxldmVsX2luZGV4OmludFxuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZyZWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogYWNjZXNzb3JzICopXG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgbmV4dCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdmFsdWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYVxuXG4gICAgKCoqIG11dGF0b3JzICopXG5cbiAgICB2YWwgc2V0X2tleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2F0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2xldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50IC0+IHVuaXRcblxuICAgICgqKiBbaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZF0gdHJlYXRzIFt0XSBhcyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBhbmQgYWRkcyBbdG9fYWRkXVxuICAgICAgICB0byB0aGUgZW5kIG9mIGl0LiAqKVxuICAgIHZhbCBpbnNlcnRfYXRfZW5kIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdG9fYWRkOidhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtsaW5rX3RvX3NlbGYgcG9vbCB0XSBtYWtlcyBbdF0gYmUgYSBzaW5nbGV0b24gY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0LiAqKVxuICAgIHZhbCBsaW5rX3RvX3NlbGYgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW3VubGluayBwIHRdIHVubGlua3MgW3RdIGZyb20gdGhlIGNpcmN1bGFybHkgZG91Ymx5LWxpbmtlZCBsaXN0IHRoYXQgaXQgaXMgaW4uICBJdFxuICAgICAgICBjaGFuZ2VzIHRoZSBwb2ludGVycyBvZiBbdF0ncyBbcHJldl0gYW5kIFtuZXh0XSBlbHRzLCBidXQgbm90IFt0XSdzIFtwcmV2XSBhbmRcbiAgICAgICAgW25leHRdIHBvaW50ZXJzLiAgW3VubGlua10gaXMgbWVhbmluZ2xlc3MgaWYgW3RdIGlzIGEgc2luZ2xldG9uLiAqKVxuICAgIHZhbCB1bmxpbmsgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogSXRlcmF0b3JzLiAgW2l0ZXIgcCB0IH5pbml0IH5mXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgICAgY29udGFpbmluZyBbdF0sIHN0YXJ0aW5nIGF0IFt0XSwgYW5kIGZvbGxvd2luZyBbbmV4dF0gcG9pbnRlcnMuICBbbGVuZ3RoXSBjb3VudHNcbiAgICAgICAgYnkgdmlzaXRpbmcgZWFjaCBlbGVtZW50IGluIHRoZSBsaXN0LiAqKVxuICAgIHZhbCBpdGVyIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gZjooJ2EgdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgbGVuZ3RoIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG5cbiAgICAoKiogW21heF9hbGFybV90aW1lIHQgZWx0IH53aXRoX2tleV0gZmluZHMgdGhlIG1heCBbYXRdIGluIFtlbHRdJ3MgbGlzdCBhbW9uZyB0aGUgZWx0c1xuICAgICAgICB3aG9zZSBrZXkgaXMgW3dpdGhfa2V5XSwgcmV0dXJuaW5nIFtUaW1lX25zLmVwb2NoXSBpZiB0aGUgbGlzdCBpcyBlbXB0eS4gKilcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcblxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPSAnYSBFeHRlcm5hbF9lbHQucG9vbF9zbG90cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICAgIGxldCBpc19udWxsID0gUG9pbnRlci5pc19udWxsXG4gICAgbGV0IGVxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxIHQyXG5cbiAgICBsZXQgY3JlYXRlIHBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleCA9XG4gICAgICBQb29sLm5ldzYgcG9vbCBrZXkgYXQgdmFsdWUgbGV2ZWxfaW5kZXggKG51bGwgKCkpIChudWxsICgpKVxuICAgIDs7XG5cbiAgICBsZXQgZnJlZSA9IFBvb2wuZnJlZVxuICAgIGxldCBrZXkgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MFxuICAgIGxldCBzZXRfa2V5IHAgdCBrID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MCBrXG4gICAgbGV0IGF0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDFcbiAgICBsZXQgc2V0X2F0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MSB4XG4gICAgbGV0IHZhbHVlIHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDJcbiAgICBsZXQgbGV2ZWxfaW5kZXggcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50M1xuICAgIGxldCBzZXRfbGV2ZWxfaW5kZXggcCB0IGkgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQzIGlcbiAgICBsZXQgcHJldiBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ0XG4gICAgbGV0IHNldF9wcmV2IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NCB4XG4gICAgbGV0IG5leHQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NVxuICAgIGxldCBzZXRfbmV4dCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDUgeFxuICAgIGxldCBpc192YWxpZCBwIHQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgcCB0XG4gICAgbGV0IGV4dGVybmFsX2lzX3ZhbGlkID0gaXNfdmFsaWRcblxuICAgIGxldCBpbnZhcmlhbnQgcG9vbCBpbnZhcmlhbnRfYSB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICAgIGFzc2VydCAoaXNfdmFsaWQgcG9vbCB0KTtcbiAgICAgICAgaW52YXJpYW50X2EgKHZhbHVlIHBvb2wgdCk7XG4gICAgICAgIGxldCBuID0gbmV4dCBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIG4gfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKHByZXYgcG9vbCBuKSk7XG4gICAgICAgIGxldCBwID0gcHJldiBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIHAgfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKG5leHQgcG9vbCBwKSkpXG4gICAgOztcblxuICAgIG1vZHVsZSBQb29sID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbiAgICAgIGxldCBjcmVhdGUgPyhjYXBhY2l0eSA9IDEpICgpID0gUG9vbC5jcmVhdGUgUG9vbC5TbG90cy50NiB+Y2FwYWNpdHlcbiAgICAgIGxldCBncm93ID0gUG9vbC5ncm93XG4gICAgICBsZXQgaXNfZnVsbCA9IFBvb2wuaXNfZnVsbFxuICAgIGVuZFxuXG4gICAgbGV0IHRvX2V4dGVybmFsIHQgPSB0XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWxfZXhuIHBvb2wgdCA9XG4gICAgICBpZiBpc192YWxpZCBwb29sIHQgdGhlbiB0IGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwgZ290IGludmFsaWQgYWxhcm1cIl1cbiAgICA7O1xuXG4gICAgbGV0IHVubGluayBwb29sIHQgPVxuICAgICAgc2V0X25leHQgcG9vbCAocHJldiBwb29sIHQpIChuZXh0IHBvb2wgdCk7XG4gICAgICBzZXRfcHJldiBwb29sIChuZXh0IHBvb2wgdCkgKHByZXYgcG9vbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbGluayBwb29sIHByZXYgbmV4dCA9XG4gICAgICBzZXRfbmV4dCBwb29sIHByZXYgbmV4dDtcbiAgICAgIHNldF9wcmV2IHBvb2wgbmV4dCBwcmV2XG4gICAgOztcblxuICAgIGxldCBsaW5rX3RvX3NlbGYgcG9vbCB0ID0gbGluayBwb29sIHQgdFxuXG4gICAgbGV0IGluc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGQgPVxuICAgICAgbGV0IHByZXYgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgbGluayBwb29sIHByZXYgdG9fYWRkO1xuICAgICAgbGluayBwb29sIHRvX2FkZCB0XG4gICAgOztcblxuICAgIGxldCBpdGVyIHBvb2wgZmlyc3QgfmYgPVxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgKCogV2UgZ2V0IFtuZXh0XSBiZWZvcmUgY2FsbGluZyBbZl0gc28gdGhhdCBbZl0gY2FuIG1vZGlmeSBvciBbZnJlZV0gWyFjdXJyZW50XS4gKilcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgZiAhY3VycmVudDtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCBwb29sIGZpcnN0ID1cbiAgICAgIGxldCByID0gcmVmIDAgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGluY3IgcjtcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhclxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1heF9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMuZXBvY2ggaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWF4X2FsYXJtX3RpbWUgOj0gVGltZV9ucy5tYXggKGF0IHBvb2wgIWN1cnJlbnQpICFtYXhfYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWF4X2FsYXJtX3RpbWVcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtaW5fYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAoKiBUaGUgW2tleV0gY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkgZm9yIFttYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdIGJlY2F1c2VcbiAgICAgICAgICAgbWF4IHRpbWUgcGVyIGludGVydmFsIGlzIG5vdCB0aGUgc2FtZSBhcyBtYXggdGltZSBnbG9iYWxseS5cblxuICAgICAgICAgICBUaGlzIGlzIG5vdCBzbyBmb3IgW21pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0sIHNvIHRoaXMgY2FuIHBvdGVudGlhbGx5XG4gICAgICAgICAgIGJlIHNpbXBsaWZpZWQuXG5cbiAgICAgICAgICAgUHJvYmFibHkgYSBiZXR0ZXIgY2hhbmdlIHdvdWxkIGJlIHRvIHNpbXBseSB0cmFuc2ZlciB0aGUgZXZlbnRzIHRvIHRoZVxuICAgICAgICAgICBcImZpcmVkXCIgY29sbGVjdGlvbiAoYW5kIHJlbmFtZSBpdCB0byBcImFib3V0IHRvIGZpcmVcIiksIHdoaWNoIGlzIHNvcnRlZCBieSB0aW1lLFxuICAgICAgICAgICBzbyBnZXR0aW5nIHRoZSBmaXJzdCBlbGVtZW50IGZyb20gdGhhdCBjb2xsZWN0aW9uIGlzIGVmZmljaWVudC5cbiAgICAgICAgKilcbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtaW5fYWxhcm1fdGltZSA6PSBUaW1lX25zLm1pbiAoYXQgcG9vbCAhY3VycmVudCkgIW1pbl9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtaW5fYWxhcm1fdGltZVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXZlbCA9IHN0cnVjdFxuICAgICgqKiBGb3IgZ2l2ZW4gbGV2ZWwsIG9uZSBjYW4gYnJlYWsgdGhlIGJpdHMgaW50byBhIGtleSBpbnRvIHRocmVlIHJlZ2lvbnM6XG5cbiAgICAgICAge3ZcbiAgICAgICAgIHwgaGlnaGVyIGxldmVscyB8IHRoaXMgbGV2ZWwgfCBsb3dlciBsZXZlbHMgfFxuICAgICAgICB2fVxuXG4gICAgICAgIFwiTG93ZXIgbGV2ZWxzXCIgaXMgW2JpdHNfcGVyX3Nsb3RdIGJpdHMgd2lkZS4gIFwiVGhpcyBsZXZlbFwiIGlzIFtiaXRzXSB3aWRlLiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFRoZSBbaW5kZXhdIGluIHRoZSB0aW1pbmcgd2hlZWwncyBhcnJheSBvZiBsZXZlbHMgd2hlcmUgdGhpcyBsZXZlbCBpcy4gKilcbiAgICAgICAgaW5kZXggOiBpbnRcbiAgICAgIDsgKCogSG93IG1hbnkgW2JpdHNdIHRoaXMgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yLiAqKVxuICAgICAgICBiaXRzIDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsgKCogW3Nsb3RzX21hc2sgPSBTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czp0LmJpdHNdLiAqKVxuICAgICAgICBzbG90c19tYXNrIDogU2xvdHNfbWFzay50XG4gICAgICA7ICgqIFtiaXRzX3Blcl9zbG90XSBpcyBob3cgbWFueSBiaXRzIGVhY2ggc2xvdCBkaXN0aW5ndWlzaGVzLCBhbmQgaXMgdGhlIHN1bSBvZiBvZlxuICAgICAgICAgICB0aGUgW2JpdHNdIG9mIGFsbCB0aGUgbG93ZXIgbGV2ZWxzLiAqKVxuICAgICAgICBiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsga2V5c19wZXJfc2xvdCA6IEtleS5TcGFuLnRcbiAgICAgIDsgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudFxuICAgICAgOyAoKiBbZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID0ga2V5c19wZXJfc2xvdCAqIEFycmF5Lmxlbmd0aCBzbG90cyAtIDFdICopXG4gICAgICAgIGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA6IEtleS5TcGFuLnRcbiAgICAgIDsgKCogW2xlbmd0aF0gaXMgdGhlIG51bWJlciBvZiBlbHRzIGN1cnJlbnRseSBpbiB0aGlzIGxldmVsLiAqKVxuICAgICAgICBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgICAgOyAoKiBBbGwgZWxlbWVudHMgYXQgdGhpcyBsZXZlbCBoYXZlIHRoZWlyIFtrZXldIHNhdGlzZnkgW21pbl9hbGxvd2VkX2tleSA8PSBrZXkgPD1cbiAgICAgICAgICAgbWF4X2FsbG93ZWRfa2V5XS4gIEFsc28sIFttaW5fYWxsb3dlZF9rZXldIGlzIGEgbXVsdGlwbGUgb2YgW2tleXNfcGVyX3Nsb3RdLiAqKVxuICAgICAgICBtdXRhYmxlIG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG11dGFibGUgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgKCogW3Nsb3RzXSBob2xkcyB0aGUgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXJzIHRvIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RzXG4gICAgICAgICAgIG9mIGVsdHMuICBbQXJyYXkubGVuZ3RoIHNsb3RzID0gMSBsc2wgYml0c10uICopXG4gICAgICAgIHNsb3RzIDogKCdhIEludGVybmFsX2VsdC50IGFycmF5W0BzZXhwLm9wYXF1ZV0pXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNsb3QgdCB+a2V5ID0gS2V5LnNsb3Qga2V5IH5iaXRzX3Blcl9zbG90OnQuYml0c19wZXJfc2xvdCB+c2xvdHNfbWFzazp0LnNsb3RzX21hc2tcbiAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IFNsb3RzX21hc2submV4dF9zbG90IHQuc2xvdHNfbWFzayBzbG90XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5ID1cbiAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBrZXkgdC5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcblxuICAgIGxldCBjb21wdXRlX21pbl9hbGxvd2VkX2tleSB0IH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9XG4gICAgICAoKiBUaGlzIGNvbXB1dGF0aW9uIGVuc3VyZXMgdGhhdCBbdF0ncyBbbWluX2FsbG93ZWRfa2V5XSBpcyBhcyBsYXJnZSBhcyBwb3NzaWJsZVxuICAgICAgICAgc3ViamVjdCB0byB0aGUgY29uc3RyYWludCB0aGF0IHRoZXJlIGlzIG5vIGludGVyLWxldmVsIGdhcC4gKilcbiAgICAgIGlmIEtleS5lcXVhbCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSBLZXkubWF4X3ZhbHVlXG4gICAgICB0aGVuIEtleS5tYXhfdmFsdWVcbiAgICAgIGVsc2UgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5OihLZXkuc3VjYyBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSlcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgcG9vbCA6ICdhIEludGVybmFsX2VsdC5Qb29sLnRcbiAgICA7ICgqIFttaW5fZWx0XSBpcyBlaXRoZXIgbnVsbCBvciBhbiBlbGVtZW50IHdob3NlIGtleSBpcyBbZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIG1pbl9lbHQgOiAnYSBJbnRlcm5hbF9lbHQudFxuICAgIDsgKCogQWxsIGVsZW1lbnRzIGluIHRoZSBwcmlvcml0eSBxdWV1ZSBoYXZlIHRoZWlyIGtleSBbPj0gZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIGVsdF9rZXlfbG93ZXJfYm91bmQgOiBLZXkudFxuICAgIDsgbGV2ZWxzIDogJ2EgTGV2ZWwudCBhcnJheVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IEV4dGVybmFsX2VsdC5udWxsXG4gICAgbGV0IGF0IHAgdCA9IEludGVybmFsX2VsdC5hdCBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IGtleSBwIHQgPSBJbnRlcm5hbF9lbHQua2V5IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQgdmFsdWUgcCB0ID0gSW50ZXJuYWxfZWx0LnZhbHVlIHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxuICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuICBsZXQgbnVtX2xldmVscyB0ID0gQXJyYXkubGVuZ3RoIHQubGV2ZWxzXG4gIGxldCBtaW5fYWxsb3dlZF9rZXkgdCA9IExldmVsLm1pbl9hbGxvd2VkX2tleSB0LmxldmVscy4oMClcbiAgbGV0IG1heF9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLihudW1fbGV2ZWxzIHQgLSAxKVxuXG4gIGxldCBpbnRlcm5hbF9pdGVyIHQgfmYgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KSB0aGVuIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IGludGVybmFsX2l0ZXIgdCB+ZjooZiA6IF8gRWx0LnQgLT4gdW5pdCA6PiBfIEludGVybmFsX2VsdC50IC0+IHVuaXQpXG5cbiAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsga2V5IDogS2V5LnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBlbHRzIDogJ2EgRWx0LnQgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBwcmV0dHkgdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICB7IFByZXR0eS5taW5fYWxsb3dlZF9rZXkgPSBtaW5fYWxsb3dlZF9rZXkgdFxuICAgIDsgbWF4X2FsbG93ZWRfa2V5ID0gbWF4X2FsbG93ZWRfa2V5IHRcbiAgICA7IGVsdHMgPVxuICAgICAgICAobGV0IHIgPSByZWYgW10gaW5cbiAgICAgICAgIGludGVybmFsX2l0ZXIgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICByXG4gICAgICAgICAgIDo9IHsgUHJldHR5LkVsdC5rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0XG4gICAgICAgICAgICAgIDsgdmFsdWUgPSBJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiAhcik7XG4gICAgICAgICBMaXN0LnJldiAhcilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gICAgfCBgSW50ZXJuYWwgLT4gWyVzZXhwICh0IDogYSB0X2ludGVybmFsKV1cbiAgICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuICA7O1xuXG4gIGxldCBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdCA9XG4gICAgbGV0IGJpdHMgPSBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90IGluXG4gICAgaWYgTnVtX2tleV9iaXRzLmVxdWFsIGJpdHMgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgIHRoZW4gS2V5LlNwYW4ubWF4X3ZhbHVlXG4gICAgZWxzZSBLZXkuU3Bhbi5wcmVkIChLZXkubnVtX2tleXMgYml0cylcbiAgOztcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBsZXZlbF9pbnZhcmlhbnQgbGV2ZWwgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIGxldmVsIFslc2V4cF9vZjogXyBMZXZlbC50XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIGxldmVsIGYgaW5cbiAgICAgICAgTGV2ZWwuRmllbGRzLml0ZXJcbiAgICAgICAgICB+aW5kZXg6KGNoZWNrIChmdW4gaW5kZXggLT4gYXNzZXJ0IChpbmRleCA+PSAwKSkpXG4gICAgICAgICAgfmJpdHM6KGNoZWNrIChmdW4gYml0cyAtPiBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBiaXRzIE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfnNsb3RzX21hc2s6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBTbG90c19tYXNrLnRdXG4gICAgICAgICAgICAgICAgICB+ZXhwZWN0OihTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czpsZXZlbC5iaXRzKSkpXG4gICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBiaXRzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID49ICkgYml0c19wZXJfc2xvdCBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5rZXlzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4ga2V5c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAga2V5c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkubnVtX2tleXMgbGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5lcXVhbFxuICAgICAgICAgICAgICAgICAgIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICAgICAoTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpKVxuICAgICAgICAgIH5kaWZmX21heF9taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgKGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgIH5sZXZlbF9iaXRzOmxldmVsLmJpdHNcbiAgICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIGxlbmd0aFxuICAgICAgICAgICAgICAgICA9IEFycmF5LmZvbGQgbGV2ZWwuc2xvdHMgfmluaXQ6MCB+ZjooZnVuIG4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gICAgICAgICAgICAgICAgICAgdGhlbiBuXG4gICAgICAgICAgICAgICAgICAgZWxzZSBuICsgSW50ZXJuYWxfZWx0Lmxlbmd0aCBwb29sIGVsdCkpKSlcbiAgICAgICAgICB+bWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgbWluX2FsbG93ZWRfa2V5IEtleS56ZXJvKTtcbiAgICAgICAgICAgICAgIGlmIEtleS4oIDwgKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChLZXkucmVtIG1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90KVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6S2V5LlNwYW4uemVybykpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgIG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChLZXkuYWRkX2NsYW1wX3RvX21heFxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSkpKVxuICAgICAgICAgIH5zbG90czpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHNsb3RzIC0+XG4gICAgICAgICAgICAgICBBcnJheS5pdGVyIHNsb3RzIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgZWx0O1xuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICAgICAgICBLZXkuKCA+PSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgICAgICAgIEtleS4oIDw9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgICAgICAgS2V5LiggPj0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCA9IGxldmVsLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgIGludmFyaWFudF9hIChJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHQpKSkpKSkpXG4gICAgaW5cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF9pbnRlcm5hbF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1pbl9hbGxvd2VkX2tleSB0KSBLZXkuemVybyk7XG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1heF9hbGxvd2VkX2tleSB0KSAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgICAgfnBvb2w6KGNoZWNrIChJbnRlcm5hbF9lbHQuUG9vbC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgICAgfm1pbl9lbHQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0XyAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XylcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmlzX3ZhbGlkIHQucG9vbCBlbHRfKTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LmVxdWFsIHQuZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0XykpKSkpXG4gICAgICAgIH5lbHRfa2V5X2xvd2VyX2JvdW5kOlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF9rZXlfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWF4X2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBLZXkuZXF1YWwgZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgdC5taW5fZWx0KSkpKVxuICAgICAgICB+bGV2ZWxzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxldmVscyAtPlxuICAgICAgICAgICAgIGFzc2VydCAobnVtX2xldmVscyB0ID4gMCk7XG4gICAgICAgICAgICAgQXJyYXkuaXRlcmkgbGV2ZWxzIH5mOihmdW4gbGV2ZWxfaW5kZXggbGV2ZWwgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobGV2ZWxfaW5kZXggPSBMZXZlbC5pbmRleCBsZXZlbCk7XG4gICAgICAgICAgICAgICBsZXZlbF9pbnZhcmlhbnQgbGV2ZWw7XG4gICAgICAgICAgICAgICBpZiBsZXZlbF9pbmRleCA+IDBcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBsZXQgcHJldl9sZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXggLSAxKSBpblxuICAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEwgPSBMZXZlbCBpblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChMLmtleXNfcGVyX3Nsb3QgbGV2ZWwpXG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5LlNwYW4uc3VjYyBwcmV2X2xldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgICAoTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6cHJldl9sZXZlbC5tYXhfYWxsb3dlZF9rZXkpKSkpKSlcbiAgOztcblxuICAoKiogW21pbl9lbHRfXSByZXR1cm5zIFtudWxsXSBpZiBpdCBjYW4ndCBmaW5kIHRoZSBkZXNpcmVkIGVsZW1lbnQuICBXZSB3cmFwIGl0IHVwXG4gICAgICBhZnRlcndhcmRzIHRvIHJldHVybiBhbiBbb3B0aW9uXS4gKilcbiAgbGV0IG1pbl9lbHRfIHQgPVxuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICB0aGVuIHQubWluX2VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBtaW5fZWx0X2FscmVhZHlfZm91bmQgPSByZWYgKEludGVybmFsX2VsdC5udWxsICgpKSBpblxuICAgICAgbGV0IG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA9IHJlZiBLZXkubWF4X3ZhbHVlIGluXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgS2V5LiggPiApIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgYW55IG1vcmUgbGV2ZWxzLiAgUXVpdCB0aGUgbG9vcC4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzXG4gICAgICAgIGVsc2UgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgICB0aGVuIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTG9vayBpbiBbbGV2ZWxdLiAqKVxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgbGV0IHNsb3RfbWluX2tleSA9XG4gICAgICAgICAgICByZWZcbiAgICAgICAgICAgICAgKExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgIH5rZXk6KEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFzbG90X21pbl9rZXkpIGluXG4gICAgICAgICAgKCogRmluZCB0aGUgZmlyc3Qgbm9uZW1wdHkgc2xvdCB3aXRoIGEgc21hbGwgZW5vdWdoIFtzbG90X21pbl9rZXldLiAqKVxuICAgICAgICAgIHdoaWxlXG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXNfbnVsbCBzbG90cy4oIXNsb3QpXG4gICAgICAgICAgICAmJiBLZXkuKCA8ICkgIXNsb3RfbWluX2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgZG9cbiAgICAgICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICAgICAgc2xvdF9taW5fa2V5IDo9IEtleS5hZGQgIXNsb3RfbWluX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90XG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFZpc2l0IGFsbCBvZiB0aGUgZWx0cyBpbiB0aGlzIHNsb3QgYW5kIGZpbmQgb25lIHdpdGggbWluaW11bSBrZXkuICopXG4gICAgICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgICAgICBsZXQgY3VycmVudF9rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgaWYgS2V5LiggPD0gKSBjdXJyZW50X2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA6PSAhY3VycmVudDtcbiAgICAgICAgICAgICAgICBtaW5fa2V5X2FscmVhZHlfZm91bmQgOj0gY3VycmVudF9rZXkpO1xuICAgICAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgKCogSWYgWyFsZXZlbF9pbmRleCA9IDBdIHRoZW4gYWxsIGVsdHMgaW4gdGhpcyBzbG90IGhhdmUgdGhlIHNhbWUgW2tleV0sXG4gICAgICAgICAgICAgICAgIGkuZS4gWyFzbG90X21pbl9rZXldLiAgU28sIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55IGVsZW1lbnRzIGFmdGVyXG4gICAgICAgICAgICAgICAgIFtmaXJzdF0uICBUaGlzIGlzIGEgdXNlZnVsIHNob3J0IGN1dCBpbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGVyZSBhcmVcbiAgICAgICAgICAgICAgICAgbXVsdGlwbGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgbWluIHNsb3QgaW4gbGV2ZWwgMC4gKilcbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHx8ICFsZXZlbF9pbmRleCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgICAgICAgICBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgKCogRmluaXNoZWQgbG9va2luZyBpbiBbbGV2ZWxdLiAgTW92ZSB1cCB0byB0aGUgbmV4dCBsZXZlbC4gKilcbiAgICAgICAgICBpbmNyIGxldmVsX2luZGV4KVxuICAgICAgZG9uZTtcbiAgICAgIHQubWluX2VsdCA8LSAhbWluX2VsdF9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtICFtaW5fa2V5X2FscmVhZHlfZm91bmQ7XG4gICAgICB0Lm1pbl9lbHQpXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgICAoa2V5IDogS2V5LnQpXG4gICAgICAgICAgKG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgKG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfnByaW9yaXR5X3F1ZXVlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgbGV2ZWwgYm91bmRzXCIgKGtleSA6IEtleS50KSAobGV2ZWwgOiBfIExldmVsLnQpXVxuICA7O1xuXG4gIGxldCBhZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0IGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpICYmIEtleS4oIDw9ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdCkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5O1xuICAgICgqIEZpbmQgdGhlIGxvd2VzdCBsZXZlbCB0aGF0IHdpbGwgaG9sZCBbZWx0XS4gKilcbiAgICBsZXQgbGV2ZWxfaW5kZXggPVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlIEtleS4oID4gKSBrZXkgKExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4oIWxldmVsX2luZGV4KSkgZG9cbiAgICAgICAgaW5jciBsZXZlbF9pbmRleFxuICAgICAgZG9uZTtcbiAgICAgICFsZXZlbF9pbmRleFxuICAgIGluXG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgbGV2ZWwubWluX2FsbG93ZWRfa2V5ICYmIEtleS4oIDw9ICkga2V5IGxldmVsLm1heF9hbGxvd2VkX2tleSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsO1xuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggKyAxO1xuICAgIEludGVybmFsX2VsdC5zZXRfbGV2ZWxfaW5kZXggcG9vbCBlbHQgbGV2ZWxfaW5kZXg7XG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgdGhlbiBJbnRlcm5hbF9lbHQuaW5zZXJ0X2F0X2VuZCBwb29sIGZpcnN0IH50b19hZGQ6ZWx0XG4gICAgZWxzZSAoXG4gICAgICBzbG90cy4oc2xvdCkgPC0gZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LmxpbmtfdG9fc2VsZiBwb29sIGVsdClcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdCBpblxuICAgIGlmIEtleS4oIDwgKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgdGhlbiAoXG4gICAgICB0Lm1pbl9lbHQgPC0gZWx0O1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIGtleSk7XG4gICAgYWRkX2VsdCB0IGVsdDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmFkZF9hdF9pbnRlcnZhbF9udW0gZ290IGludmFsaWQgaW50ZXJ2YWwgbnVtXCJcbiAgICAgICAgICB+aW50ZXJ2YWxfbnVtOihrZXkgOiBLZXkudClcbiAgICAgICAgICB+bWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXVxuICA7O1xuXG4gIGxldCBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleSA9XG4gICAgaWYgS2V5LiggPCApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpIHx8IEtleS4oID4gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5XG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZCB0IH5rZXkgfmF0IHZhbHVlID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBpZiBJbnRlcm5hbF9lbHQuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBJbnRlcm5hbF9lbHQuUG9vbC5ncm93IHQucG9vbDtcbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0LmNyZWF0ZSB0LnBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleDooLTEpIGluXG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdDtcbiAgICBlbHRcbiAgOztcblxuICAoKiogW3JlbW92ZV9vcl9yZV9hZGRfZWx0c10gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBbZmlyc3RdLiAgSWYgdGhlIGVsZW1lbnQncyBrZXkgaXMgWz49IHRfbWluX2FsbG93ZWRfa2V5XSwgdGhlbiBpdCBhZGRzIHRoZSBlbGVtZW50XG4gICAgICBiYWNrIGF0IGEgbG93ZXIgbGV2ZWwuICBJZiBub3QsIHRoZW4gaXQgY2FsbHMgW2hhbmRsZV9yZW1vdmVkXSBhbmQgW2ZyZWVdcyB0aGVcbiAgICAgIGVsZW1lbnQuICopXG4gIGxldCByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCAobGV2ZWwgOiBfIExldmVsLnQpIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAoKiBXZSBleHRyYWN0IFtuZXh0XSBmcm9tIFtjdXJyZW50XSBmaXJzdCwgYmVjYXVzZSB3ZSB3aWxsIG1vZGlmeSBvciBbZnJlZV1cbiAgICAgICAgIFtjdXJyZW50XSBiZWZvcmUgY29udGludWluZyB0aGUgbG9vcC4gKilcbiAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgICBpZiBLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQpIHRfbWluX2FsbG93ZWRfa2V5XG4gICAgICB0aGVuIGFkZF9lbHQgdCAhY3VycmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgICAgaGFuZGxlX3JlbW92ZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCAhY3VycmVudCk7XG4gICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgIWN1cnJlbnQpO1xuICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICBkb25lXG4gIDs7XG5cbiAgKCoqIFtpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgW2xldmVsXSB0byBhc1xuICAgICAgbGFyZ2UgYSB2YWx1ZSBhcyBwb3NzaWJsZSwgYnV0IG5vIG1vcmUgdGhhbiBbbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleV0uXG4gICAgICBbdF9taW5fYWxsb3dlZF9rZXldIGlzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGZvciB0aGUgZW50aXJlIHRpbWluZyB3aGVlbC4gIEFzXG4gICAgICBlbGVtZW50cyBhcmUgZW5jb3VudGVyZWQsIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSB0aGUgdGltaW5nIHdoZWVsIGlmIHRoZWlyIGtleSBpc1xuICAgICAgc21hbGxlciB0aGFuIFt0X21pbl9hbGxvd2VkX2tleV0sIG9yIGFkZGVkIGF0IGEgbG93ZXIgbGV2ZWwgaWYgbm90LiAqKVxuICBsZXQgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIHRcbiAgICAgICAgKGxldmVsIDogXyBMZXZlbC50KVxuICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgbGV2ZWwgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgaW5cbiAgICAoKiBXZSByZXF1aXJlIHRoYXQgW21vZCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdCA9IDBdLiAgU28sXG4gICAgICAgd2Ugc3RhcnQgW2xldmVsX21pbl9hbGxvd2VkX2tleV0gd2hlcmUgdGhhdCBpcyB0cnVlLCBhbmQgdGhlbiBpbmNyZWFzZSBpdCBieVxuICAgICAgIFtrZXlzX3Blcl9zbG90XSBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC4gKilcbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgIGxldmVsXG4gICAgICAgIH5rZXk6XG4gICAgICAgICAgKEtleS5taW5cbiAgICAgICAgICAgICBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgIChLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgIGluXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9IHJlZiBsZXZlbF9taW5fYWxsb3dlZF9rZXkgaW5cbiAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFsZXZlbF9taW5fYWxsb3dlZF9rZXkpIGluXG4gICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBsZXZlbC5rZXlzX3Blcl9zbG90IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICB3aGlsZSBLZXkuKCA8ICkgIWxldmVsX21pbl9hbGxvd2VkX2tleSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBkb1xuICAgICAgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgdGhlblxuICAgICAgICAoKiBJZiBubyBlbGVtZW50cyByZW1haW4gYXQgdGhpcyBsZXZlbCwgd2UgY2FuIGp1c3Qgc2V0IFttaW5fYWxsb3dlZF9rZXldIHRvIHRoZVxuICAgICAgICAgICBkZXNpcmVkIHZhbHVlLiAqKVxuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHNsb3RzLighc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgICAgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgbGV2ZWwgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZCk7XG4gICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gS2V5LmFkZF9jbGFtcF90b19tYXggIWxldmVsX21pbl9hbGxvd2VkX2tleSBrZXlzX3Blcl9zbG90KVxuICAgIGRvbmU7XG4gICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5IDwtIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5O1xuICAgIGxldmVsLm1heF9hbGxvd2VkX2tleVxuICAgIDwtIEtleS5hZGRfY2xhbXBfdG9fbWF4IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICA7O1xuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gIGxldCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZCA6IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudCA9XG4gICAgaWYgS2V5LiggPD0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgZWxzZSAoXG4gICAgICAoKiBXZSBpbmNyZWFzZSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgbGV2ZWxzIGluIG9yZGVyIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudFxuICAgICAgICAgdGhhdCB0aGV5IGhhdmUgYXMgbGFyZ2UgYXMgcG9zc2libGUgYSBbbWluX2FsbG93ZWRfa2V5XSwgd2hpbGUgbGVhdmluZyBubyBnYXBzXG4gICAgICAgICBpbiBrZXlzLiAqKVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCByZXN1bHQgPSByZWYgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC5NYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZCBpblxuICAgICAgbGV0IHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID0gcmVmIChLZXkucHJlZCBrZXkpIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5X2JlZm9yZSA9IGxldmVsLm1pbl9hbGxvd2VkX2tleSBpblxuICAgICAgICBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICB0XG4gICAgICAgICAgbGV2ZWxcbiAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6IXByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5OmtleVxuICAgICAgICAgIH5oYW5kbGVfcmVtb3ZlZDtcbiAgICAgICAgaWYgS2V5LmVxdWFsIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpIG1pbl9hbGxvd2VkX2tleV9iZWZvcmVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogVGhpcyBsZXZlbCBkaWQgbm90IHNoaWZ0LiAgRG9uJ3Qgc2hpZnQgYW55IGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVscztcbiAgICAgICAgICByZXN1bHQgOj0gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMZXZlbCBbbGV2ZWxfaW5kZXhdIHNoaWZ0ZWQuICBDb25zaWRlciBzaGlmdGluZyBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9ICFsZXZlbF9pbmRleCArIDE7XG4gICAgICAgICAgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgOj0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IGxldmVsKVxuICAgICAgZG9uZTtcbiAgICAgIGlmIEtleS4oID4gKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogV2UgaGF2ZSByZW1vdmVkIFt0Lm1pbl9lbHRdIG9yIGl0IHdhcyBhbHJlYWR5IG51bGwsIHNvIGp1c3Qgc2V0IGl0IHRvXG4gICAgICAgICAgIG51bGwuICopXG4gICAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIG1pbl9hbGxvd2VkX2tleSB0KTtcbiAgICAgICFyZXN1bHQpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgP2xldmVsX2JpdHMgKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIG1hdGNoIGxldmVsX2JpdHMgd2l0aFxuICAgICAgfCBTb21lIGwgLT4gbFxuICAgICAgfCBOb25lIC0+IExldmVsX2JpdHMuZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IF8sIF8sIGxldmVscyA9XG4gICAgICBMaXN0LmZvbGRpXG4gICAgICAgIGxldmVsX2JpdHNcbiAgICAgICAgfmluaXQ6KE51bV9rZXlfYml0cy56ZXJvLCBLZXkuemVybywgW10pXG4gICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgIChiaXRzX3Blcl9zbG90LCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5LCBsZXZlbHMpXG4gICAgICAgICAgICAgKGxldmVsX2JpdHMgOiBOdW1fa2V5X2JpdHMudClcbiAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBLZXkubnVtX2tleXMgYml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICAgbGV0IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgIGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPVxuICAgICAgICAgICAgICAgICBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3QgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IG1heF9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgIEtleS5hZGRfY2xhbXBfdG9fbWF4IG1pbl9hbGxvd2VkX2tleSBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbGV2ZWwgPVxuICAgICAgICAgICAgICAgICB7IExldmVsLmluZGV4XG4gICAgICAgICAgICAgICAgIDsgYml0cyA9IGxldmVsX2JpdHNcbiAgICAgICAgICAgICAgICAgOyBzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHNcbiAgICAgICAgICAgICAgICAgOyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIDsga2V5c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICAgOyBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgOyBsZW5ndGggPSAwXG4gICAgICAgICAgICAgICAgIDsgbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIDsgbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIDsgc2xvdHMgPVxuICAgICAgICAgICAgICAgICAgICAgQXJyYXkuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgIH5sZW46KEludDYzLnRvX2ludF9leG4gKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpKVxuICAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoIE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICwgS2V5LnN1Y2NfY2xhbXBfdG9fbWF4IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgLCBsZXZlbCA6OiBsZXZlbHMgKSlcbiAgICBpblxuICAgIHsgbGVuZ3RoID0gMFxuICAgIDsgcG9vbCA9IEludGVybmFsX2VsdC5Qb29sLmNyZWF0ZSA/Y2FwYWNpdHkgKClcbiAgICA7IG1pbl9lbHQgPSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIDsgZWx0X2tleV9sb3dlcl9ib3VuZCA9IEtleS56ZXJvXG4gICAgOyBsZXZlbHMgPSBBcnJheS5vZl9saXN0X3JldiBsZXZlbHNcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1lbSB0IGVsdCA9IEludGVybmFsX2VsdC5leHRlcm5hbF9pc192YWxpZCB0LnBvb2wgZWx0XG5cbiAgbGV0IGludGVybmFsX3JlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBpZiBJbnRlcm5hbF9lbHQuZXF1YWwgZWx0IHQubWluX2VsdFxuICAgIHRoZW5cbiAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgICgqIFdlIGtlZXAgW3QuZWx0X2xvd2VyX2JvdW5kXSBzaW5jZSBpdCBpcyB2YWxpZCBldmVuIHRob3VnaCBbdC5taW5fZWx0XSBpcyBiZWluZ1xuICAgICAgIHJlbW92ZWQuICopO1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oSW50ZXJuYWxfZWx0LmxldmVsX2luZGV4IHBvb2wgZWx0KSBpblxuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgcGh5c19lcXVhbCBlbHQgKEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0KVxuICAgIHRoZW4gKCogW2VsdF0gaXMgdGhlIG9ubHkgZWxlbWVudCBpbiB0aGUgc2xvdCAqKVxuICAgICAgc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGVsdCBmaXJzdCB0aGVuIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC51bmxpbmsgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdFxuICA7O1xuXG4gIGxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCB+a2V5IH5ub3cgPVxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLigwKSBpblxuICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmaXJzdCA9IHJlZiBzbG90cy4oc2xvdCkgaW5cbiAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgIWZpcnN0KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjdXJyZW50ID0gcmVmICFmaXJzdCBpblxuICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICBsZXQgZWx0ID0gIWN1cnJlbnQgaW5cbiAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0IGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0ICFmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0O1xuICAgICAgICAgIGlmIFRpbWVfbnMuKCA8PSApIChJbnRlcm5hbF9lbHQuYXQgcG9vbCBlbHQpIG5vd1xuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgaGFuZGxlX2ZpcmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgZWx0KTtcbiAgICAgICAgICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0O1xuICAgICAgICAgICAgKCogV2UgcmVjb21wdXRlIFtmaXJzdF0gYmVjYXVzZSBbaW50ZXJuYWxfcmVtb3ZlXSBtYXkgaGF2ZSBjaGFuZ2VkIGl0LiAqKVxuICAgICAgICAgICAgZmlyc3QgOj0gc2xvdHMuKHNsb3QpKVxuICAgICAgICBkb25lKSlcbiAgOztcblxuICBsZXQgY2hhbmdlIHQgZWx0IH5rZXkgfmF0ID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5zZXRfa2V5IHBvb2wgZWx0IGtleTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2F0IHBvb2wgZWx0IGF0O1xuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHRcbiAgOztcblxuICBsZXQgY2xlYXIgdCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZnJlZV9lbHQgZWx0ID0gSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldmVsLmxlbmd0aCA8LSAwO1xuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOmZyZWVfZWx0O1xuICAgICAgICAgICAgICBzbG90cy4oc2xvdF9pbmRleCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCkpXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsX2VsdCA9IFByaW9yaXR5X3F1ZXVlLkludGVybmFsX2VsdFxubW9kdWxlIEtleSA9IFByaW9yaXR5X3F1ZXVlLktleVxubW9kdWxlIEludGVydmFsX251bSA9IEtleVxuXG5sZXQgbWluX2ludGVydmFsX251bSA9IEludGVydmFsX251bS56ZXJvXG5cbigqIEFsbCB0aW1lIGZyb20gdGhlIGVwb2NoIG9ud2FyZHMgaXMgYnJva2VuIGludG8gaGFsZi1vcGVuIGludGVydmFscyBvZiBzaXplXG4gICBbQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiBjb25maWddLiAgVGhlIGludGVydmFscyBhcmUgbnVtYmVyZWQgc3RhcnRpbmcgYXQgemVybywgYW5kIGFcbiAgIHRpbWUncyBpbnRlcnZhbCBudW1iZXIgc2VydmVzIGFzIGl0cyBrZXkgaW4gW3ByaW9yaXR5X3F1ZXVlXS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgOyBzdGFydCA6IFRpbWVfbnMudFxuICA7ICgqIFttYXhfaW50ZXJ2YWxfbnVtXSBpcyB0aGUgaW50ZXJ2YWwgbnVtYmVyIG9mIFttYXhfdGltZV0uICopXG4gICAgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gIDsgbXV0YWJsZSBub3cgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnRcbiAgOyBwcmlvcml0eV9xdWV1ZSA6ICdhIFByaW9yaXR5X3F1ZXVlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIHRpbWluZ193aGVlbCA9ICdhIHRcbnR5cGUgJ2EgdF9ub3cgPSAnYSB0XG5cbmxldCBzZXhwX29mX3Rfbm93IF8gdCA9IFslc2V4cCAodC5ub3cgOiBUaW1lX25zLnQpXVxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiB0LmNvbmZpZ1xuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUHJpb3JpdHlfcXVldWUuRWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbnVsbCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5udWxsXG4gIGxldCBhdCB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmF0IHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IHZhbHVlIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQudmFsdWUgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgaW50ZXJ2YWxfbnVtIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQua2V5IHR3LnByaW9yaXR5X3F1ZXVlIHRcbmVuZFxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgaXRlciB0IH5mID0gUHJpb3JpdHlfcXVldWUuaXRlciB0LnByaW9yaXR5X3F1ZXVlIH5mXG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsYXJtID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgdCBhbGFybSA9IHsgYXQgPSBBbGFybS5hdCB0IGFsYXJtOyB2YWx1ZSA9IEFsYXJtLnZhbHVlIHQgYWxhcm0gfVxuICAgIGxldCBjb21wYXJlIHQxIHQyID0gVGltZV9ucy5jb21wYXJlIChhdCB0MSkgKGF0IHQyKVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgICA7IHN0YXJ0IDogVGltZV9ucy50XG4gICAgOyBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudFxuICAgIDsgYWxhcm1zIDogJ2EgQWxhcm0udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBwcmV0dHlcbiAgICAgICh7IGNvbmZpZ1xuICAgICAgIDsgc3RhcnRcbiAgICAgICA7IG1heF9pbnRlcnZhbF9udW1cbiAgICAgICA7IG5vd1xuICAgICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9IF9cbiAgICAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBfXG4gICAgICAgOyBwcmlvcml0eV9xdWV1ZSA9IF9cbiAgICAgICB9IGFzIHQpXG4gID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiByIDo9IFByZXR0eS5BbGFybS5jcmVhdGUgdCBhIDo6ICFyKTtcbiAgbGV0IGFsYXJtcyA9IExpc3Quc29ydCAhciB+Y29tcGFyZTpQcmV0dHkuQWxhcm0uY29tcGFyZSBpblxuICB7IFByZXR0eS5jb25maWc7IHN0YXJ0OyBtYXhfaW50ZXJ2YWxfbnVtOyBub3c7IGFsYXJtcyB9XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gIHwgYEludGVybmFsIC0+IHNleHBfb2ZfdF9pbnRlcm5hbCBzZXhwX29mX2EgdFxuICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuOztcblxubGV0IGxlbmd0aCB0ID0gUHJpb3JpdHlfcXVldWUubGVuZ3RoIHQucHJpb3JpdHlfcXVldWVcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIiB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB3aXRoIGFsbCBhbGFybXMgaW4gbWF4IGludGVydmFsXCJcbiAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXQgcG9vbCB0ID0gUHJpb3JpdHlfcXVldWUucG9vbCB0LnByaW9yaXR5X3F1ZXVlXG5cbmxldCBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbiA9XG4gIEludGVydmFsX251bS5vZl9pbnQ2MyAoQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bSBhbGFybV9wcmVjaXNpb24gdGltZSlcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZSA9XG4gIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uOnQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuOztcblxubGV0IGludGVydmFsX251bSB0IHRpbWUgPVxuICBpZiBUaW1lX25zLiggPCApIHRpbWUgbWluX3RpbWVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW0gZ290IHRpbWUgdG9vIGZhciBpbiB0aGUgcGFzdFwiICh0aW1lIDogVGltZV9ucy50KV07XG4gIGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bSA9XG4gIEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW1fc3RhcnRcbiAgICB0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICAoaW50ZXJ2YWxfbnVtIHw+IEludGVydmFsX251bS50b19pbnQ2Mylcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gc21hbGwgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAobWluX2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBsYXJnZSBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgICh0Lm1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPCApIGludGVydmFsX251bSBtaW5faW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtO1xuICBpZiBJbnRlcnZhbF9udW0uKCA+ICkgaW50ZXJ2YWxfbnVtIHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtO1xuICBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSA9XG4gICgqIFtpbnRlcnZhbF9udW1fc3RhcnQgdCBrZXldIGlzIHRoZSBrZXkgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhcnQgb2YgdGhlIHRpbWUgaW50ZXJ2YWxcbiAgICAgaG9sZGluZyB0aGUgZmlyc3QgYWxhcm0gaW4gW3RdLiAgQWR2YW5jaW5nIHRvIHRoYXQgd291bGQgbm90IGJlIGVub3VnaCwgc2luY2UgdGhlXG4gICAgIGFsYXJtcyBpbiB0aGF0IGludGVydmFsIGRvbid0IGZpcmUgdW50aWwgdGhlIGNsb2NrIGlzIGFkdmFuY2VkIHRvIHRoZSBzdGFydCBvZiB0aGVcbiAgICAgbmV4dCBpbnRlcnZhbC4gIFNvLCB3ZSB1c2UgW3N1Y2Mga2V5XSB0byBhZHZhbmNlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICBpbnRlcnZhbC4gKilcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKEtleS5zdWNjIGtleSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICAgIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5KSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQ7XG4gIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0O1xuICBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5XG47O1xuXG5sZXQgY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQgPVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5ID0gUHJpb3JpdHlfcXVldWUubWF4X2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPj0gKSBtYXhfYWxsb3dlZF9rZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gbWF4X3RpbWVcbiAgZWxzZVxuICAgIFRpbWVfbnMuYWRkXG4gICAgICAoaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IG1heF9hbGxvd2VkX2tleSlcbiAgICAgIChUaW1lX25zLlNwYW4uKCAtICkgKGFsYXJtX3ByZWNpc2lvbiB0KSBUaW1lX25zLlNwYW4ubmFub3NlY29uZClcbjs7XG5cbmxldCBub3dfaW50ZXJ2YWxfbnVtIHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSA9IG5vd19pbnRlcnZhbF9udW1cbmxldCBtYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gdCA9IGludGVydmFsX251bSB0IChtYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG5sZXQgaW50ZXJ2YWxfc3RhcnQgdCB0aW1lID0gaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IChpbnRlcnZhbF9udW0gdCB0aW1lKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29uZmlnOihjaGVjayBDb25maWcuaW52YXJpYW50KVxuICAgICAgfnN0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBzdGFydCAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIHN0YXJ0IG1pbl90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBzdGFydCBtYXhfdGltZSkpKVxuICAgICAgfm1heF9pbnRlcnZhbF9udW06XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9pbnRlcnZhbF9udW0gLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IG1heF90aW1lKTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IChpbnRlcnZhbF9udW1fc3RhcnQgdCBtYXhfaW50ZXJ2YWxfbnVtKSkpKVxuICAgICAgfm5vdzpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgbm93IHQuc3RhcnQpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIG5vdyBtYXhfdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgdC5ub3cpXG4gICAgICAgICAgICAgICAoUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUpKSkpXG4gICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93X2ludGVydmFsX251bV9zdGFydCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbm93X2ludGVydmFsX251bV9zdGFydFxuICAgICAgICAgICAgIH5leHBlY3Q6KGludGVydmFsX251bV9zdGFydCB0IChub3dfaW50ZXJ2YWxfbnVtIHQpKSkpXG4gICAgICB+bWF4X2FsbG93ZWRfYWxhcm1fdGltZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2FsbG93ZWRfYWxhcm1fdGltZSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbWF4X2FsbG93ZWRfYWxhcm1fdGltZVxuICAgICAgICAgICAgIH5leHBlY3Q6KGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSkpXG4gICAgICB+cHJpb3JpdHlfcXVldWU6KGNoZWNrIChQcmlvcml0eV9xdWV1ZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKTtcbiAgICBpdGVyIHQgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgKEFsYXJtLmludGVydmFsX251bSB0IGFsYXJtKVxuICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoQWxhcm0uYXQgdCBhbGFybSkpKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIFRpbWVfbnMuKCA+PSApXG4gICAgICAgICAgKGludGVydmFsX3N0YXJ0IHQgKEFsYXJtLmF0IHQgYWxhcm0pKVxuICAgICAgICAgIChpbnRlcnZhbF9zdGFydCB0IChub3cgdCkpKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIFRpbWVfbnMuKCA+ICkgKEFsYXJtLmF0IHQgYWxhcm0pIChUaW1lX25zLnN1YiAobm93IHQpIChhbGFybV9wcmVjaXNpb24gdCkpKSkpXG47O1xuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfmhhbmRsZV9maXJlZCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgdClcbiAgdGhlbiAoXG4gICAgdC5ub3cgPC0gdG9fO1xuICAgIGxldCBrZXkgPSBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdG9fIGluXG4gICAgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDwtIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBrZXk7XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5X3F1ZXVlLmluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgIH5rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkOmhhbmRsZV9maXJlZFxuICAgIHdpdGhcbiAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSAtPlxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPSApIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSAoY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKVxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgLT5cbiAgICAgIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbjs7XG5cbmxldCBjcmVhdGUgfmNvbmZpZyB+c3RhcnQgPVxuICBpZiBUaW1lX25zLiggPCApIHN0YXJ0IFRpbWVfbnMuZXBvY2hcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbC5jcmVhdGUgZ290IHN0YXJ0IGJlZm9yZSB0aGUgZXBvY2hcIiAoc3RhcnQgOiBUaW1lX25zLnQpXTtcbiAgbGV0IHQgPVxuICAgIHsgY29uZmlnXG4gICAgOyBzdGFydFxuICAgIDsgbWF4X2ludGVydmFsX251bSA9XG4gICAgICAgIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZTptYXhfdGltZSB+YWxhcm1fcHJlY2lzaW9uOmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICA7IG5vdyA9IFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9XG4gICAgICAgIFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IG1heF90aW1lICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IHByaW9yaXR5X3F1ZXVlID1cbiAgICAgICAgUHJpb3JpdHlfcXVldWUuY3JlYXRlID9jYXBhY2l0eTpjb25maWcuY2FwYWNpdHkgfmxldmVsX2JpdHM6Y29uZmlnLmxldmVsX2JpdHMgKClcbiAgICB9XG4gIGluXG4gIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdDtcbiAgYWR2YW5jZV9jbG9jayB0IH50b186c3RhcnQgfmhhbmRsZV9maXJlZDooZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgdFxuOztcblxubGV0IGFkZF9hdF9pbnRlcnZhbF9udW0gdCB+YXQgdmFsdWUgPVxuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6YXRcbiAgICAgICB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuICAgICAgIHZhbHVlKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gdGhhdCBmYXIgaW4gdGhlIGZ1dHVyZVwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6KHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gYmVmb3JlIHN0YXJ0IG9mIGN1cnJlbnQgaW50ZXJ2YWxcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Oih0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnQpXVxuOztcblxubGV0IGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQgPVxuICBpZiBUaW1lX25zLiggPiApIGF0IHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0aGVuIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdDtcbiAgaWYgVGltZV9ucy4oIDwgKSBhdCB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgdGhlbiByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0XG47O1xuXG5sZXQgYWRkIHQgfmF0IHZhbHVlID1cbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpXG4gICAgICAgfmF0XG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXQgcmVtb3ZlIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5yZW1vdmUgdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxubGV0IGNsZWFyIHQgPSBQcmlvcml0eV9xdWV1ZS5jbGVhciB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWVtIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5tZW0gdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxuXG5sZXQgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5IH5hdCA9XG4gIGlmIG5vdCAobWVtIHQgYWxhcm0pXG4gIHRoZW4gZmFpbHdpdGggXCJUaW1pbmdfd2hlZWwgY2Fubm90IHJlc2NoZWR1bGUgYWxhcm0gbm90IGluIHRpbWluZyB3aGVlbFwiO1xuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBQcmlvcml0eV9xdWV1ZS5jaGFuZ2UgdC5wcmlvcml0eV9xdWV1ZSBhbGFybSB+a2V5IH5hdFxuOztcblxubGV0IHJlc2NoZWR1bGUgdCBhbGFybSB+YXQgPSByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdCkgfmF0XG5cbmxldCByZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSB0IGFsYXJtIH5hdCA9XG4gIHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTphdCB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW0gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWluX2FsYXJtX2ludGVydmFsX251bV9leG4gb2YgZW1wdHkgdGltaW5nX3doZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbiAgZWxzZSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdFxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWF4X2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWluX2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkID1cbiAgUHJpb3JpdHlfcXVldWUuZmlyZV9wYXN0X2FsYXJtc1xuICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICB+aGFuZGxlX2ZpcmVkXG4gICAgfmtleToobm93X2ludGVydmFsX251bSB0KVxuICAgIH5ub3c6dC5ub3dcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fa2V5X2JpdHMgPSBOdW1fa2V5X2JpdHNcblxuICBsZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsID0gaW50ZXJ2YWxfbnVtX2ludGVybmFsXG4gIGxldCBtYXhfdGltZSA9IG1heF90aW1lXG5lbmRcbiIsIm1vZHVsZSBJbnJpYV9zeXMgPSBTeXNcbm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxub3BlbiBQb2x5XG5cbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxuXG5tb2R1bGUgRXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50XG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gICAgZW5kKVxuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biAoMSBsc2wgMTYpXG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbmVuZFxuXG5tb2R1bGUgTWF4X251bV90aHJlYWRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBEdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gc3RydWN0XG4gIG1vZHVsZSBIb3dfdG9fZHVtcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IERlZmF1bHRcbiAgICAgIHwgQ2FsbF9hYm9ydFxuICAgICAgfCBDYWxsX2djb3JlXG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgdHlwZSB3YXRjaCA9XG4gICAgeyBkdW1wX2lmX2RlbGF5ZWRfYnkgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgaG93X3RvX2R1bXAgOiBIb3dfdG9fZHVtcC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIHR5cGUgdCA9XG4gICAgfCBXYXRjaCBvZiB3YXRjaFxuICAgIHwgRG9fbm90X3dhdGNoXG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubW9kdWxlIERlYnVnX3RhZyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFsbFxuICAgICAgfCBDbG9ja1xuICAgICAgfCBGZFxuICAgICAgfCBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgIHwgRmluYWxpemVyc1xuICAgICAgfCBJbnRlcnJ1cHRvclxuICAgICAgfCBNb25pdG9yXG4gICAgICB8IE1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHwgUGFyYWxsZWxcbiAgICAgIHwgUmVhZGVyXG4gICAgICB8IFNjaGVkdWxlclxuICAgICAgfCBTaHV0ZG93blxuICAgICAgfCBUaHJlYWRfcG9vbFxuICAgICAgfCBUaHJlYWRfc2FmZVxuICAgICAgfCBXcml0ZXJcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID1cbiAgICBbIEFsbFxuICAgIDsgQ2xvY2tcbiAgICA7IEZkXG4gICAgOyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICA7IEZpbmFsaXplcnNcbiAgICA7IEludGVycnVwdG9yXG4gICAgOyBNb25pdG9yXG4gICAgOyBNb25pdG9yX3NlbmRfZXhuXG4gICAgOyBQYXJhbGxlbFxuICAgIDsgUmVhZGVyXG4gICAgOyBTY2hlZHVsZXJcbiAgICA7IFNodXRkb3duXG4gICAgOyBUaHJlYWRfcG9vbFxuICAgIDsgVGhyZWFkX3NhZmVcbiAgICA7IFdyaXRlclxuICAgIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9kZXNjcl93YXRjaGVyID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRXBvbGxfaWZfdGltZXJmZFxuICAgICAgfCBFcG9sbFxuICAgICAgfCBTZWxlY3RcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID0gWyBFcG9sbF9pZl90aW1lcmZkOyBFcG9sbDsgU2VsZWN0IF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGNoZWNrX2ludmFyaWFudHMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzIDogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA6IEZpbGVfZGVzY3Jfd2F0Y2hlci50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgOiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX3RocmVhZHMgOiBNYXhfbnVtX3RocmVhZHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnQgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgOiBEZWJ1Z190YWcudCBsaXN0IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IDogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA6IFRpbWluZ193aGVlbC5Db25maWcudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG5sZXQgZW1wdHkgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gTm9uZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IE5vbmVcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gTm9uZVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBOb25lXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gTm9uZVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IE5vbmVcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBOb25lXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBOb25lXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gTm9uZVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gTm9uZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gTm9uZVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBOb25lXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVcbiAgICAgID9hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID9jaGVja19pbnZhcmlhbnRzXG4gICAgICA/ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gICAgICA/ZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICAgICAgP2Vwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgICAgID9maWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgID9tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICAgICAgP21heF9udW1fdGhyZWFkc1xuICAgICAgP21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgICA/bWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgICAgID9yZWNvcmRfYmFja3RyYWNlc1xuICAgICAgP3JlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgICAgID90aW1pbmdfd2hlZWxfY29uZmlnXG4gICAgICAoKVxuICA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgKHdvcmRfc2l6ZSA6IFdvcmRfc2l6ZS50KSA9XG4gIGxldCBtb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvbiBpblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uLCBsZXZlbF9iaXRzID1cbiAgICBtYXRjaCB3b3JkX3NpemUgd2l0aFxuICAgIHwgVzMyIC0+IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQsIFsgMTA7IDEwOyA5IF1cbiAgICB8IFc2NCAtPiBBbGFybV9wcmVjaXNpb24uKGRpdiBhYm91dF9vbmVfbWlsbGlzZWNvbmQgfnBvdzI6MyksIFsgMTQ7IDE1OyA5OyA2IF1cbiAgaW5cbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cylcbiAgICAoKVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplIFdvcmRfc2l6ZS53b3JkX3NpemVcbjs7XG5cbmxldCBkZWZhdWx0ID1cbiAgKCogRm9yIFtmaWxlX2Rlc2NyX3dhdGNoZXJdIGFuZCBbbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXSB3ZSBjaG9vc2UgdGhlIGRlZmF1bHQgZm9yIHRoZVxuICAgICBjb21tb24gY2FzZSB0aGF0IFtlcG9sbF0gaXMgYXZhaWxhYmxlLiAgVGhlcmUgaXMgc29tZSBhZGRpdGlvbmFsIGNvZGUgaW5cbiAgICAgW0FzeW5jX3VuaXguQ29uZmlnXSB0aGF0IGNoZWNrcyB3aGV0aGVyIFtlcG9sbF0gaXMgYWN0dWFsbHkgYXZhaWxhYmxlLCBhbmQgaWYgbm90LFxuICAgICB1c2VzIFtzZWxlY3RdIGFuZCBhIHNtYWxsZXIgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMuICopXG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDYwLilcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBmYWxzZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZmFsc2VcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBEb19ub3Rfd2F0Y2hcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSAoRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy5jcmVhdGVfZXhuIDI1NilcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIEVwb2xsX2lmX3RpbWVyZmRcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLjA1KSlcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5kZWZhdWx0XG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSAoTWF4X251bV90aHJlYWRzLmNyZWF0ZV9leG4gNTApXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgU29tZSAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biA1MDApXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNaW5faW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4pKVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgW11cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgZmFsc2VcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDEuKVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgSW5oZXJpdFxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZXhhbXBsZSA9XG4gIHsgZGVmYXVsdCB3aXRoXG4gICAgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBEZWJ1Z190YWcuWyBGZDsgU2NoZWR1bGVyIF1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPVxuICAgICAgU29tZVxuICAgICAgICAoQ3B1c2V0XG4gICAgICAgICAgIChbIDA7IDE7IDIgXSB8PiBJbnQuU2V0Lm9mX2xpc3QgfD4gVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LkNwdXNldC5jcmVhdGVfZXhuKSlcbiAgfVxuOztcblxubGV0IGVudmlyb25tZW50X3ZhcmlhYmxlID0gXCJBU1lOQ19DT05GSUdcIlxuXG5sZXQgZmllbGRfZGVzY3JpcHRpb25zICgpIDogc3RyaW5nID1cbiAgbGV0IGZpZWxkIHRvX3NleHAgZGVzY3JpcHRpb24gYWMgZmllbGQgPVxuICAgIChGaWVsZC5uYW1lIGZpZWxkLCB0b19zZXhwIChPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpLCBkZXNjcmlwdGlvbilcbiAgICA6OiBhY1xuICBpblxuICBsZXQgZmllbGRzID1cbiAgICBGaWVsZHMuZm9sZFxuICAgICAgfmluaXQ6W11cbiAgICAgIH5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgc2VuZCBhbiBleGNlcHRpb24gdG8gdGhlIHRvcGxldmVsIG1vbml0b3JcbiAgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgdG8gcmVndWxhcmx5IGNoZWNrIGludmFyaWFudHMgb2YgaXRzIGludGVybmFsXG4gIGRhdGEgc3RydWN0dXJlcy4gIFRoaXMgY2FuIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIHlvdXIgcHJvZ3JhbS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyByb3V0aW5lcyB0byBjaGVjayBpZiB0aGV5IGFyZSBiZWluZyBhY2Nlc3NlZFxuICBmcm9tIHNvbWUgdGhyZWFkIG90aGVyIHRoYW4gdGhlIHRocmVhZCBjdXJyZW50bHkgaG9sZGluZyB0aGUgQXN5bmNcbiAgbG9jaywgd2hpY2ggaXMgbm90IGFsbG93ZWQgYW5kIGNhbiBsZWFkIHRvIHZlcnkgY29uZnVzaW5nIGJlaGF2aW9yLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kdW1wX2NvcmVfb25fam9iX2RlbGF5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnRdXG4gICAgICAgICAgIFsge3xcbiAgQ2FuIGJlIHNldCB0byBbRG9fbm90X3dhdGNoXSBvcjpcblxuICAgIChXYXRjaCAoKGR1bXBfaWZfZGVsYXllZF9ieSBTUEFOKSAoaG93X3RvX2R1bXAgSE9XKSkpXG5cbiAgSWYgc2V0IHRvIFtXYXRjaF0sIHRoZW4gb24gcHJvZ3JhbSBzdGFydCB0aGlzIHdpbGwgc3RhcnQgYSByZWd1bGFyXG4gIEFzeW5jIGpvYiB0aGF0IGluY3JlbWVudHMgYSBjb3VudGVyLCBhbmQgYSBDIHRocmVhZCB0aGF0IHdpbGxcbiAgZGV0ZWN0IGlmIHRoYXQgam9iIGlzIGRlbGF5ZWQgYnkgW2R1bXBfaWZfZGVsYXllZF9ieV0sIGFuZCBpZiBzbyxcbiAgd2lsbCBjb3JlIGR1bXAgdGhlIHByb2dyYW0uICBJZiBhdmFpbGFibGUsIFsvdXNyL2Jpbi9nY29yZV0gaXNcbiAgdXNlZCBieSBkZWZhdWx0IHRvIGR1bXAgdGhlIGNvcmUsIHdoaWNoIHNob3VsZCBhbGxvdyB0aGUgcHJvZ3JhbVxuICB0byBjb250aW51ZSBydW5uaW5nLiAgT3RoZXJ3aXNlLCBbYWJvcnRdIHdpbGwgYmUgY2FsbGVkIGZyb20gQyxcbiAgd2hpY2ggd2lsbCBraWxsIHRoZSBwcm9ncmFtIHdoaWxlIGNhdXNpbmcgYSBjb3JlIGR1bXAuICBPbmUgY2FuXG4gIGZvcmNlIFthYm9ydF0gb3IgW2djb3JlXSB2aWEgW2hvd190b19kdW1wXSwgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZjpcbiAgW0NhbGxfYWJvcnRdLCBbQ2FsbF9nY29yZV0sIG9yIFtEZWZhdWx0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZXBvbGxfbWF4X3JlYWR5X2V2ZW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkeSBldmVudHMgdGhhdCBBc3luYydzIGNhbGwgdG8gW0Vwb2xsLndhaXRdXG4gIHdpbGwgaGFuZGxlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5maWxlX2Rlc2NyX3dhdGNoZXI6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEZpbGVfZGVzY3Jfd2F0Y2hlci50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgZGV0ZXJtaW5lcyB3aGF0IE9TIHN1YnN5c3RlbSBBc3luYyB1c2VzIHRvIHdhdGNoIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGJlaW5nIHJlYWR5LlxuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgW2Vwb2xsXSBpZiB0aW1lcmZkJ3MgYXJlIHN1cHBvcnRlZCBhbmQgaWYgbm90LCB1c2UgW3NlbGVjdF0uXG5cbiAgQWxsb3dlZCB2YWx1ZXMgYXJlOnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgKExpc3QubWFwIEZpbGVfZGVzY3Jfd2F0Y2hlci5saXN0IH5mOkZpbGVfZGVzY3Jfd2F0Y2hlci50b19zdHJpbmcpXG4gICAgICAgICAgIDsge3wuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fb3Blbl9maWxlX2Rlc2NyczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIChmdW4gZGVmYXVsdCAtPlxuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICB+XzpcbiAgICAgICAgICAgICAgICAgICAgKGNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICBbIFwibWluIFwiXG4gICAgICAgICAgICAgICAgICAgICAgIDsgZGVmYXVsdCB8PiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMucmF3IHw+IEludC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAgICAgICAgICAgIDsgXCIgW3VsaW1pdCAtbiAtSF1cIlxuICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICA6IHN0cmluZyldKVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgYWxsb3dlZCBhdCBhbnkgb25lIHRpbWUufH0gXSlcbiAgICAgIH5tYXhfbnVtX3RocmVhZHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fdGhyZWFkcy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgQXN5bmMgd2lsbCBjcmVhdGUgdG8gZG8gYmxvY2tpbmdcbiAgc3lzdGVtIGNhbGxzIGFuZCBoYW5kbGUgY2FsbHMgdG8gW0luX3RocmVhZC5ydW5dLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfaW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgc2NoZWR1bGVyIHdpbGwgcGF1c2UgYmV0d2VlbiBjeWNsZXNcbiAgd2hlbiBpdCBoYXMgbm8gam9icyBhbmQgaXMgZ29pbmcgdG8gd2FpdCBmb3IgSS9PLiAgSW4gcHJpbmNpcGxlIG9uZVxuICBkb2Vzbid0IG5lZWQgdGhpcywgYW5kIHdlIGNvdWxkIHVzZSBhbiBpbmZpbml0ZSB0aW1lb3V0LiAgV2UgaW5zdGVhZFxuICB1c2UgYSBzbWFsbCB0aW1lb3V0IChieSBkZWZhdWx0KSwgdG8gYmUgbW9yZSByb2J1c3QgdG8gYnVncyB0aGF0XG4gIGNvdWxkIHByZXZlbnQgQXN5bmMgZnJvbSB3YWtpbmcgdXAgYW5kIHNlcnZpY2luZyBldmVudHMuICBGb3JcbiAgZXhhbXBsZSwgYXMgb2YgMjAxMy0wMSwgdGhlIE9DYW1sIHJ1bnRpbWUgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGl0XG4gIHRvIG5vdCBuZWNlc3NhcmlseSBydW4gYW4gT0NhbWwgc2lnbmFsIGhhbmRsZXIgaW4gYSB0aW1lbHkgbWFubmVyLlxuICBUaGlzIGluIHR1cm4gY2FuIGNhdXNlIGEgc2ltcGxlIEFzeW5jIHByb2dyYW0gdGhhdCBpcyB3YWl0aW5nIG9uIGFcbiAgc2lnbmFsIHRvIGhhbmcsIHdoZW4gaW4gZmFjdCBpdCBzaG91bGQgaGFuZGxlIHRoZSBzaWduYWwuXG5cbiAgV2UgdXNlIDUwbXMgYXMgdGhlIGRlZmF1bHQgdGltZW91dCwgYmVjYXVzZSBpdCBpcyBpbmZyZXF1ZW50IGVub3VnaFxuICB0byBoYXZlIGEgbmVnbGlnaWJsZSBwZXJmb3JtYW5jZSBpbXBhY3QsIGFuZCBmcmVxdWVudCBlbm91Z2ggdGhhdFxuICB0aGUgbGF0ZW5jeSB3b3VsZCB0eXBpY2FsbHkgYmUgbm90IG5vdGljZWFibGUuICBBbHNvLCA1MG1zIGlzIHdoYXRcbiAgdGhlIE9DYW1sIHRpY2tlciB0aHJlYWQgdXNlcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGpvYnMgdGhhdCB3aWxsIGJlIGRvbmUgYXQgZWFjaCBwcmlvcml0eSB3aXRoaW5cbiAgZWFjaCBBc3luYyBjeWNsZS4gIFRoaXMgbGltaXRzIGhvdyBtYW55IGpvYnMgdGhlIHNjaGVkdWxlciB3aWxsIHJ1blxuICBiZWZvcmUgcGF1c2luZyB0byBjaGVjayBmb3IgSS9PLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5taW5faW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWluaW11bSB0aW1lb3V0IHRoZSBzY2hlZHVsZXIgd2lsbCBwYXNzIHRvIHRoZSBPUyB3aGVuIGl0IGNoZWNrc1xuICBmb3IgSS9PIGJldHdlZW4gY3ljbGVzLiAgVGhpcyBpcyB6ZXJvIGJ5IGRlZmF1bHQuICBTZXR0aW5nIGl0IHRvIGFcbiAgbm9uemVybyB2YWx1ZSBpcyB1c2VkIHRvIGluY3JlYXNlIHRocmVhZCBmYWlybmVzcyBiZXR3ZWVuIHRoZSBzY2hlZHVsZXJcbiAgYW5kIG90aGVyIHRocmVhZHMuICBBIHBsYXVzaWJsZSBzZXR0aW5nIGlzIDF1cy4gIFRoaXMgaXMgYWxzb1xuICBjb25maWd1cmFibGUgaW4gT0NhbWwgdmlhIFtTY2hlZHVsZXIuc2V0X21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEZWJ1Z190YWcudCBsaXN0XVxuICAgICAgICAgICBbIHt8XG4gIEEgbGlzdCBvZiB0YWdzIHNwZWNpZnlpbmcgd2hpY2ggQXN5bmMgZnVuY3Rpb25zIHNob3VsZCBwcmludCBkZWJ1Z1xuICBtZXNzYWdlcyB0byBzdGRlcnIuICBFYWNoIHRhZyBpZGVudGlmaWVzIGEgZ3JvdXAgb2YgcmVsYXRlZCBBc3luY1xuICBmdW5jdGlvbnMuICBUaGUgdGFnIFthbGxdIG1lYW5zIHRvIHByaW50IGRlYnVnIG1lc3NhZ2VzIGZvciBhbGxcbiAgZnVuY3Rpb25zLiAgQWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG58fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgKExpc3QubWFwIERlYnVnX3RhZy5saXN0IH5mOihmdW4gZCAtPlxuICAgICAgICAgICAgICAgICAgY29uY2F0IFsgXCIgICAgXCI7IERlYnVnX3RhZy50b19zdHJpbmcgZDsgXCJcXG5cIiBdKSlcbiAgICAgICAgICAgOyB7fFxuICBUdXJuaW5nIG9uIGRlYnVnIG1lc3NhZ2VzIHdpbGwgc3Vic3RhbnRpYWxseSBzbG93IGRvd24gbW9zdCBwcm9ncmFtcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgdGhpcyB3aWxsIGNhdXNlIEFzeW5jIHRvIGtlZXAgaW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRoZVxuICBoaXN0b3J5IG9mIHN0YWNrIGJhY2t0cmFjZXMgKG9idGFpbmVkIHZpYSBbQmFja3RyYWNlLmdldF0pIHRoYXQgbGVkXG4gIHRvIHRoZSBjdXJyZW50IGpvYi4gIElmIGFuIEFzeW5jIGpvYiBoYXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbixcbiAgdGhpcyBiYWNrdHJhY2UgaGlzdG9yeSB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBleGNlcHRpb24uICBJblxuICBwYXJ0aWN1bGFyIHRoZSBoaXN0b3J5IHdpbGwgYXBwZWFyIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gdGhhdFxuICByZWFjaGVzIHRoZSBtYWluIG1vbml0b3IuICBUaGlzIGNhbiBoYXZlIGEgc3Vic3RhbnRpYWwgcGVyZm9ybWFuY2VcbiAgaW1wYWN0LCBib3RoIGluIHJ1bm5pbmcgdGltZSBhbmQgc3BhY2UgdXNhZ2UuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgcHJpbnQgYSBtZXNzYWdlIHRvIHN0ZGVyciBldmVyeSBzZWNvbmQgaWZcbiAgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50XVxuICAgICAgICAgICBbIHt8XG4gICBXaGV0aGVyIGFuZCBob3cgdGhyZWFkcyBpbiB0aGUgdGhyZWFkIHBvb2wgc2hvdWxkIGJlIGFmZmluaXRpemVkIHRvIENQVXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRpbWluZ193aGVlbF9jb25maWc6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWluZ193aGVlbC5Db25maWcudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGlzIHVzZWQgdG8gYWRqdXN0IHRoZSB0aW1lL3NwYWNlIHRyYWRlb2ZmIGluIHRoZSB0aW1pbmcgd2hlZWxcbiAgdXNlZCB0byBpbXBsZW1lbnQgQXN5bmMncyBjbG9jay4gIFRpbWUgaXMgc3BsaXQgaW50byBpbnRlcnZhbHMgb2ZcbiAgc2l6ZSBbYWxhcm1fcHJlY2lzaW9uXSwgYW5kIGFsYXJtcyB3aXRoIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsXG4gIGZpcmUgaW4gdGhlIHNhbWUgY3ljbGUuICBMZXZlbCBbaV0gaW4gdGhlIHRpbWluZyB3aGVlbCBoYXMgYW5cbiAgYXJyYXkgb2Ygc2l6ZSBbMl5iXSwgd2hlcmUgW2JdIGlzIHRoZSBbaV0ndGggZW50cnkgaW4gW2xldmVsX2JpdHNdLlxufH1cbiAgICAgICAgICAgXSlcbiAgaW5cbiAgY29uY2F0XG4gICAgKExpc3QubWFwXG4gICAgICAgKExpc3Quc29ydCBmaWVsZHMgfmNvbXBhcmU6KGZ1biAobmFtZTEsIF8sIF8pIChuYW1lMiwgXywgXykgLT5cbiAgICAgICAgICBTdHJpbmcuY29tcGFyZSBuYW1lMSBuYW1lMikpXG4gICAgICAgfmY6KGZ1biAobmFtZSwgZGVmYXVsdCwgZGVzY3JpcHRpb24pIC0+XG4gICAgICAgICBjb25jYXRcbiAgICAgICAgICAgKFwiXFxuXCIgOjogbmFtZSA6OiBcIiAoZGVmYXVsdCBcIiA6OiBTZXhwLnRvX3N0cmluZyBkZWZhdWx0IDo6IFwiKVwiIDo6IGRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgaGVscF9tZXNzYWdlICgpID1cbiAgY29uY2F0XG4gICAgWyBcIlRoZSBcIlxuICAgIDsgZW52aXJvbm1lbnRfdmFyaWFibGVcbiAgICA7IHt8IGVudmlyb25tZW50IHZhcmlhYmxlIGFmZmVjdHMgQXN5bmNcbmluIHZhcmlvdXMgd2F5cy4gIEl0cyB2YWx1ZSBzaG91bGQgYmUgYSBzZXhwIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSxcbndoZXJlIGFsbCBmaWVsZHMgYXJlIG9wdGlvbmFsOlxuXG58fVxuICAgIDsgU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgZXhhbXBsZSlcbiAgICA7IHt8XG5cbkhlcmUgaXMgYW4gZXhwbGFuYXRpb24gb2YgZWFjaCBmaWVsZC5cbnx9XG4gICAgOyBmaWVsZF9kZXNjcmlwdGlvbnMgKClcbiAgICBdXG47O1xuXG5sZXQgdXNhZ2UgKCkgPVxuICBlcHJpbnRmIFwiJXMlIVwiIChoZWxwX21lc3NhZ2UgKCkpO1xuICBleGl0IDFcbjs7XG5cbmxldCB0ID1cbiAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW5yaWFfc3lzLmdldGVudiBlbnZpcm9ubWVudF92YXJpYWJsZSkgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlcbiAgfCBTb21lIFwiXCIgLT4gdXNhZ2UgKClcbiAgfCBTb21lIHN0cmluZyAtPlxuICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHN0cmluZykpIHdpdGhcbiAgICAgfCBPayB0IC0+IHRcbiAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICBlcHJpbnRmXG4gICAgICAgICBcIiVzXFxuXFxuXCJcbiAgICAgICAgIChTZXhwLnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgIChFcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgIChFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICBcImludmFsaWQgdmFsdWUgZm9yICVzIGVudmlyb25tZW50IHZhcmlhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50X3ZhcmlhYmxlKVxuICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICBbJXNleHBfb2Y6IGV4bl0pKSk7XG4gICAgICAgdXNhZ2UgKCkpXG47O1xuXG5tb2R1bGUgUHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gc3RydWN0XG4gIGxldCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnID1cbiAgICBtYXRjaCB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gbCB0YWcgfmVxdWFsOkRlYnVnX3RhZy5lcXVhbFxuICA7O1xuXG4gIGxldCBhbGwgPSBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgQWxsXG4gIGxldCBkZWJ1ZyB0YWcgPSBhbGwgfHwgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZ1xuICBsZXQgY2xvY2sgPSBkZWJ1ZyBDbG9ja1xuICBsZXQgZmQgPSBkZWJ1ZyBGZFxuICBsZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gZGVidWcgRmlsZV9kZXNjcl93YXRjaGVyXG4gIGxldCBmaW5hbGl6ZXJzID0gZGVidWcgRmluYWxpemVyc1xuICBsZXQgaW50ZXJydXB0b3IgPSBkZWJ1ZyBJbnRlcnJ1cHRvclxuICBsZXQgbW9uaXRvciA9IGRlYnVnIE1vbml0b3JcbiAgbGV0IG1vbml0b3Jfc2VuZF9leG4gPSBkZWJ1ZyBNb25pdG9yX3NlbmRfZXhuXG4gIGxldCBwYXJhbGxlbCA9IGRlYnVnIFBhcmFsbGVsXG4gIGxldCByZWFkZXIgPSBkZWJ1ZyBSZWFkZXJcbiAgbGV0IHNjaGVkdWxlciA9IGRlYnVnIFNjaGVkdWxlclxuICBsZXQgc2h1dGRvd24gPSBkZWJ1ZyBTaHV0ZG93blxuICBsZXQgdGhyZWFkX3Bvb2wgPSBkZWJ1ZyBUaHJlYWRfcG9vbFxuICBsZXQgdGhyZWFkX3NhZmUgPSBkZWJ1ZyBUaHJlYWRfc2FmZVxuICBsZXQgd3JpdGVyID0gZGVidWcgV3JpdGVyXG5lbmRcblxubGV0ICggISEgKSBmaWVsZCA9XG4gIE9wdGlvbi52YWx1ZSAoRmllbGQuZ2V0IGZpZWxkIHQpIH5kZWZhdWx0OihPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpXG47O1xuXG5sZXQgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMuYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgY2hlY2tfaW52YXJpYW50cyA9ICEhRmllbGRzLmNoZWNrX2ludmFyaWFudHNcbmxldCBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSAhIUZpZWxkcy5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbmxldCBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gISFGaWVsZHMuZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xubGV0IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9ICEhRmllbGRzLnRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxubGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9ICEhRmllbGRzLmZpbGVfZGVzY3Jfd2F0Y2hlclxubGV0IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSAhIUZpZWxkcy5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbmxldCBtYXhfbnVtX3RocmVhZHMgPSAhIUZpZWxkcy5tYXhfbnVtX3RocmVhZHNcbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9ICEhRmllbGRzLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5sZXQgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5taW5faW50ZXJfY3ljbGVfdGltZW91dFxubGV0IHJlY29yZF9iYWNrdHJhY2VzID0gISFGaWVsZHMucmVjb3JkX2JhY2t0cmFjZXNcbmxldCByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMucmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IHRpbWluZ193aGVlbF9jb25maWcgPSAhIUZpZWxkcy50aW1pbmdfd2hlZWxfY29uZmlnXG5sZXQgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9ICEhRmllbGRzLmR1bXBfY29yZV9vbl9qb2JfZGVsYXlcblxubGV0IHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gU29tZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IHRhc2tfaWQgPSByZWYgKGZ1biAoKSAtPiBTZXhwLkF0b20gXCI8bm8gdGFzayBpZD5cIilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSByZWZcblxuKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE9wdGlvbl9hcnJheS5DaGVhcF9vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyXG4gICBwbGFjZSB3aGVyZSB3ZSB3YW50IGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG5sZXQgbm9uZSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgT2JqLmFic3RyYWN0X3RhZyAxKVxubGV0IGNyZWF0ZSAoKSA9IHJlZiBub25lXG5sZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCAheCBub25lXG5sZXQgaXNfc29tZSB4ID0gbm90IChpc19ub25lIHgpXG5sZXQgZ2V0X3NvbWVfZXhuIHggPSBpZiBpc19ub25lIHggdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk1vcHRpb24uZ2V0X3NvbWVfZXhuXCJdIGVsc2UgIXhcbmxldCBnZXQgdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICF0XG5sZXQgdW5zYWZlX2dldCB0ID0gIXRcbmxldCBzZXRfc29tZSB0IHYgPSB0IDo9IHZcbmxldCBzZXRfbm9uZSB0ID0gdCA6PSBub25lXG5cbmxldCBzZXQgdCB2ID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgTm9uZSAtPiBzZXRfbm9uZSB0XG4gIHwgU29tZSB2IC0+IHNldF9zb21lIHQgdlxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIG9wdGlvbildXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgT3B0aW9uLml0ZXIgKGdldCB0KSB+ZjppbnZhcmlhbnRfYSlcbjs7XG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfZ2V0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbigqIFRoaXMgcG9vbCBob2xkcyBub2RlcyB0aGF0IHdvdWxkIGJlIHJlcHJlc2VudGVkIG1vcmUgdHJhZGl0aW9uYWxseSBhczpcblxuICAge1tcbiAgICAgdHlwZSAnYSB0ID1cbiAgICAgICB8IEVtcHR5XG4gICAgICAgfCBIZWFwIG9mICdhICogJ2EgdCBsaXN0IF19XG5cbiAgIFdlIHdpbGwgcmVwcmVzZW50IHRoZW0gYXMgYSBsZWZ0LWNoaWxkLCByaWdodC1zaWJsaW5nIHRyZWUgaW4gYSB0cmlwbGV0XG4gICAodmFsdWUgKiBsZWZ0X2NoaWxkICogcmlnaHRfc2libGluZykuICBUaGUgbGVmdCBjaGlsZCBhbmQgYWxsIHJpZ2h0IHNpYmxpbmdzXG4gICBvZiB0aGUgbGVmdCBjaGlsZCBmb3JtIGEgbGlua2VkIGxpc3QgcmVwcmVzZW50aW5nIHRoZSBzdWJoZWFwcyBvZiBhIGdpdmVuIGhlYXA6XG5cbiAgIHt2XG4gICAgICAgICBBXG4gICAgICAgIC9cbiAgICAgICBCIC0+IEMgLT4gRCAtPiBFIC0+IEZcbiAgICAgIC8gICAgICAgICAvICAgICAgICAgL1xuICAgICBHICAgICAgICAgSC0+SS0+SiAgIEstPkxcbiAgIHZ9ICopXG5cbm1vZHVsZSBOb2RlIDogc2lnXG4gICgqIEV4cG9zaW5nIFtwcml2YXRlIGludF0gaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgYmVjYXVzZSBpdCBhbGxvd3NcbiAgICAgdGhlIGNvbXBpbGVyIHRvIHNraXAgdGhlIHdyaXRlIGJhcnJpZXIuICopXG5cbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZSBpbnRcblxuICBtb2R1bGUgSWQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIG1vZHVsZSBQb29sIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IG1pbl9zaXplOmludCAtPiAnYSB0XG4gICAgdmFsIGlzX2Z1bGwgOiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgZ3JvdyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSBub2RlIC0+ICdhIG5vZGUgKiAnYSB0XG4gIGVuZFxuXG4gICgqKiBbYWxsb2NhdGUgdiB+cG9vbF0gYWxsb2NhdGVzIGEgbmV3IG5vZGUgZnJvbSB0aGUgcG9vbCB3aXRoIG5vIGNoaWxkIG9yIHNpYmxpbmcgKilcbiAgdmFsIGFsbG9jYXRlIDogJ2EgLT4gcG9vbDonYSBQb29sLnQgLT4gaWQ6SWQudCAtPiAnYSB0XG5cbiAgKCoqIFtmcmVlIHQgfnBvb2xdIGZyZWVzIFt0XSBmb3IgcmV1c2UuICBJdCBpcyBhbiBlcnJvciB0byBhY2Nlc3MgW3RdIGFmdGVyIHRoaXMuICopXG4gIHZhbCBmcmVlIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGEgc3BlY2lhbCBbdF0gdGhhdCByZXByZXNlbnRzIHRoZSBlbXB0eSBub2RlICopXG4gIHZhbCBlbXB0eSA6IHVuaXQgLT4gJ2EgdFxuXG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICgqKiBbdmFsdWVfZXhuIHQgfnBvb2xdIHJldHVybiB0aGUgdmFsdWUgb2YgW3RdLCByYWlzZSBpZiBbaXNfZW1wdHkgdF0gKilcbiAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2FcblxuICB2YWwgaWQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IElkLnRcbiAgdmFsIGNoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG4gIHZhbCBzaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtwcmV2IHRdIGlzIGVpdGhlciB0aGUgcGFyZW50IG9mIFt0XSBvciB0aGUgc2libGluZyBpbW1lZGlhdGVseSBsZWZ0IG9mIFt0XSAqKVxuICB2YWwgcHJldiA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbYWRkX2NoaWxkIHQgfmNoaWxkIH5wb29sXSBBZGQgYSBjaGlsZCB0byBbdF0sIHByZXNlcnZpbmcgZXhpc3RpbmcgY2hpbGRyZW4gYXNcbiAgICAgIHNpYmxpbmdzIG9mIFtjaGlsZF0uIFt0XSBhbmQgW2NoaWxkXSBzaG91bGQgbm90IGJlIGVtcHR5IGFuZCBbY2hpbGRdIHNob3VsZCBoYXZlIG5vXG4gICAgICBzaWJsaW5nIGFuZCBoYXZlIG5vIHByZXYgbm9kZS4gKilcbiAgdmFsIGFkZF9jaGlsZCA6ICdhIHQgLT4gY2hpbGQ6J2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgc2libGluZyAqKVxuICB2YWwgZGlzY29ubmVjdF9zaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgY2hpbGQgKilcbiAgdmFsIGRpc2Nvbm5lY3RfY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2RldGFjaCB0IH5wb29sXSByZW1vdmVzIFt0XSBmcm9tIHRoZSB0cmVlLCBhZGp1c3RpbmcgcG9pbnRlcnMgYXJvdW5kIGl0LiBBZnRlclxuICAgICAgW2RldGFjaF0sIFt0XSBpcyB0aGUgcm9vdCBvZiBhIHN0YW5kYWxvbmUgaGVhcCwgd2hpY2ggaXMgZGV0YWNoZWQgZnJvbSB0aGUgb3JpZ2luYWxcbiAgICAgIGhlYXAuICopXG4gIHZhbCBkZXRhY2ggOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSWQgPSBJbnRcblxuICBsZXQgZHVtbXlfaWQgOiBJZC50ID0gLTFcblxuICB0eXBlICdhIG5vZGUgPVxuICAgICgnYSwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgSWQudCkgUG9vbC5TbG90cy50NVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgbGV0IGVtcHR5ID0gUG9pbnRlci5udWxsXG4gIGxldCBpc19lbXB0eSA9IFBvaW50ZXIuaXNfbnVsbFxuICBsZXQgZXF1YWwgPSBQb2ludGVyLnBoeXNfZXF1YWxcbiAgbGV0IHZhbHVlIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQwXG4gIGxldCBjaGlsZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MVxuICBsZXQgc2libGluZyB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MlxuICBsZXQgcHJldiB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50M1xuICBsZXQgaWQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDRcblxuICAoKiBsZXQgc2V0X3ZhbHVlICAgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MCB2ICopXG4gIGxldCBzZXRfY2hpbGQgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MSB2XG4gIGxldCBzZXRfc2libGluZyB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQyIHZcbiAgbGV0IHNldF9wcmV2IHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDMgdlxuXG4gIGxldCB2YWx1ZV9leG4gdCB+cG9vbCA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICB2YWx1ZSB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGFsbG9jYXRlIHZhbHVlIH5wb29sIH5pZCA9IFBvb2wubmV3NSBwb29sIHZhbHVlIChlbXB0eSAoKSkgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIGlkXG4gIGxldCBmcmVlIHQgfnBvb2wgPSBQb29sLnVuc2FmZV9mcmVlIHBvb2wgdFxuXG4gIGxldCBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCA9XG4gICAgbGV0IHNpYmxpbmcgPSBzaWJsaW5nIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfc2libGluZyB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBzaWJsaW5nIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIHNpYmxpbmdcbiAgOztcblxuICBsZXQgZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sID1cbiAgICBsZXQgY2hpbGQgPSBjaGlsZCB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBjaGlsZClcbiAgICB0aGVuIChcbiAgICAgIHNldF9jaGlsZCB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBjaGlsZCAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBjaGlsZFxuICA7O1xuXG4gIGxldCBhZGRfY2hpbGQgdCB+Y2hpbGQ6bmV3X2NoaWxkIH5wb29sID1cbiAgICAoKiBhc3NlcnRpb25zIHdlIHdvdWxkIG1ha2UsIGJ1dCBmb3Igc3BlZWQ6XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgbmV3X2NoaWxkKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAoc2libGluZyBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChwcmV2IG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICopXG4gICAgbGV0IGN1cnJlbnRfY2hpbGQgPSBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgaW5cbiAgICAoKiBhZGQgW25ld19jaGlsZF0gdG8gdGhlIGxpc3Qgb2YgW3RdJ3MgY2hpbGRyZW4gKHdoaWNoIG1heSBiZSBlbXB0eSkgKilcbiAgICBzZXRfc2libGluZyBuZXdfY2hpbGQgY3VycmVudF9jaGlsZCB+cG9vbDtcbiAgICBpZiBub3QgKGlzX2VtcHR5IGN1cnJlbnRfY2hpbGQpIHRoZW4gc2V0X3ByZXYgY3VycmVudF9jaGlsZCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X2NoaWxkIHQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9wcmV2IG5ld19jaGlsZCB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGRldGFjaCB0IH5wb29sID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJldiA9IHByZXYgdCB+cG9vbCBpblxuICAgICAgaWYgbm90IChpc19lbXB0eSBwcmV2KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCByZWxhdGlvbl90b19wcmV2ID0gaWYgZXF1YWwgdCAoY2hpbGQgcHJldiB+cG9vbCkgdGhlbiBgY2hpbGQgZWxzZSBgc2libGluZyBpblxuICAgICAgICBzZXRfcHJldiB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICAgIGxldCBzaWJsaW5nID0gZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgaW5cbiAgICAgICAgKG1hdGNoIHJlbGF0aW9uX3RvX3ByZXYgd2l0aFxuICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIHByZXYgc2libGluZyB+cG9vbFxuICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBwcmV2IHNpYmxpbmcgfnBvb2wpO1xuICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpIHRoZW4gc2V0X3ByZXYgc2libGluZyBwcmV2IH5wb29sKSlcbiAgOztcblxuICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9vbC50XG4gICAgdHlwZSBub25yZWMgJ2Egbm9kZSA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIGEpIH5taW5fc2l6ZTpjYXBhY2l0eSA6IGEgdCA9XG4gICAgICBQb29sLmNyZWF0ZVxuICAgICAgICBQb29sLlNsb3RzLnQ1XG4gICAgICAgIH5jYXBhY2l0eVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKCAoT2JqLm1hZ2ljIE5vbmUgOiBhKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgZHVtbXlfaWQgKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gUG9vbC5pc19mdWxsIHRcbiAgICBsZXQgbGVuZ3RoIHQgPSBQb29sLmxlbmd0aCB0XG4gICAgbGV0IGdyb3cgdCA9IFBvb2wuZ3JvdyB0XG5cbiAgICBsZXQgY29weSB0IHN0YXJ0ID1cbiAgICAgIGxldCB0JyA9IGNyZWF0ZSB+bWluX3NpemU6KFBvb2wuY2FwYWNpdHkgdCkgaW5cbiAgICAgIGxldCBjb3B5X25vZGUgbm9kZSB0b192aXNpdCA9XG4gICAgICAgIGlmIGlzX2VtcHR5IG5vZGVcbiAgICAgICAgdGhlbiBlbXB0eSAoKSwgdG9fdmlzaXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogd2UgdXNlIHRoZSBzYW1lIGlkLCBidXQgdGhhdCdzIG9rIHNpbmNlIGlkcyBzaG91bGQgYmUgdW5pcXVlIHBlciBoZWFwICopXG4gICAgICAgICAgbGV0IG5ld19ub2RlID1cbiAgICAgICAgICAgIGFsbG9jYXRlICh2YWx1ZV9leG4gbm9kZSB+cG9vbDp0KSB+cG9vbDp0JyB+aWQ6KGlkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0b192aXNpdCA9XG4gICAgICAgICAgICAobmV3X25vZGUsIGBjaGlsZCwgY2hpbGQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogKG5ld19ub2RlLCBgc2libGluZywgc2libGluZyBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiB0b192aXNpdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbmV3X25vZGUsIHRvX3Zpc2l0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IChub2RlX3RvX3VwZGF0ZSwgc2xvdCwgbm9kZV90b19jb3B5KSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IG5ld19ub2RlLCB0b192aXNpdCA9IGNvcHlfbm9kZSBub2RlX3RvX2NvcHkgcmVzdCBpblxuICAgICAgICAgIChtYXRjaCBzbG90IHdpdGhcbiAgICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnXG4gICAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCcpO1xuICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgbmV3X25vZGUpIHRoZW4gc2V0X3ByZXYgbmV3X25vZGUgbm9kZV90b191cGRhdGUgfnBvb2w6dCc7XG4gICAgICAgICAgbG9vcCB0b192aXNpdFxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3RhcnQsIHRvX3Zpc2l0ID0gY29weV9ub2RlIHN0YXJ0IFtdIGluXG4gICAgICBsb29wIHRvX3Zpc2l0O1xuICAgICAgbmV3X3N0YXJ0LCB0J1xuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogY21wIGlzIHBsYWNlZCBmaXJzdCB0byBzaG9ydC1jaXJjdWl0IHBvbHltb3JwaGljIGNvbXBhcmUgKilcbiAgICBjbXAgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBtdXRhYmxlIHBvb2wgOiAnYSBOb2RlLlBvb2wudFxuICA7ICgqIGludmFyaWFudDogIFtyb290XSBuZXZlciBoYXMgYSBzaWJsaW5nICopXG4gICAgbXV0YWJsZSByb290IDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIDogaW50XG4gIH1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCAobm9kZSwgZXhwZWN0ZWRfcHJldiwgbWF5YmVfcGFyZW50X3ZhbHVlKSA6OiByZXN0IC0+XG4gICAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgbm9kZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGhpc192YWx1ZSA9IE5vZGUudmFsdWVfZXhuIG5vZGUgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGFzc2VydCAoTm9kZS5lcXVhbCAoTm9kZS5wcmV2IG5vZGUgfnBvb2w6dC5wb29sKSBleHBlY3RlZF9wcmV2KTtcbiAgICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfcGFyZW50X3ZhbHVlIH5mOihmdW4gcGFyZW50X3ZhbHVlIC0+XG4gICAgICAgICAgYXNzZXJ0ICh0LmNtcCBwYXJlbnRfdmFsdWUgdGhpc192YWx1ZSA8PSAwKSk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoKE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIFNvbWUgdGhpc192YWx1ZSlcbiAgICAgICAgICAgOjogKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgbWF5YmVfcGFyZW50X3ZhbHVlKVxuICAgICAgICAgICA6OiByZXN0KSlcbiAgICAgIGVsc2UgbG9vcCByZXN0XG4gIGluXG4gIGFzc2VydCAoTm9kZS5pc19lbXB0eSB0LnJvb3QgfHwgTm9kZS5pc19lbXB0eSAoTm9kZS5zaWJsaW5nIHQucm9vdCB+cG9vbDp0LnBvb2wpKTtcbiAgbG9vcCBbIHQucm9vdCwgTm9kZS5lbXB0eSAoKSwgTm9uZSBdXG47O1xuXG5sZXQgY3JlYXRlID8obWluX3NpemUgPSAxKSB+Y21wICgpID1cbiAgeyBjbXBcbiAgOyBwb29sID0gTm9kZS5Qb29sLmNyZWF0ZSB+bWluX3NpemVcbiAgOyByb290ID0gTm9kZS5lbXB0eSAoKVxuICA7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPSAwXG4gIH1cbjs7XG5cbmxldCBjb3B5IHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH0gPVxuICBsZXQgcm9vdCwgcG9vbCA9IE5vZGUuUG9vbC5jb3B5IHBvb2wgcm9vdCBpblxuICB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9XG47O1xuXG5sZXQgYWxsb2NhdGUgdCB2ID1cbiAgaWYgTm9kZS5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIE5vZGUuUG9vbC5ncm93IHQucG9vbDtcbiAgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzIDwtIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyArIDE7XG4gIE5vZGUuYWxsb2NhdGUgdiB+cG9vbDp0LnBvb2wgfmlkOihOb2RlLklkLm9mX2ludCB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMpXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHJvb3QxLCByb290MiB3aXRoXG4gICAgIHwgTm9uZSwgaCB8IGgsIE5vbmUgLT4gaFxuICAgICB8IFNvbWUgKE5vZGUgKHYxLCBjaGlsZHJlbjEpKSwgU29tZSAoTm9kZSAodjIsIGNoaWxkcmVuMikpIC0+XG4gICAgICAgaWYgdjEgPCB2MlxuICAgICAgIHRoZW4gU29tZSAoTm9kZSAodjEsIHJvb3QyIDo6IGNoaWxkcmVuMSkpXG4gICAgICAgZWxzZSBTb21lIChOb2RlICh2Miwgcm9vdDEgOjogY2hpbGRyZW4yKSlcbiAgIF19XG5cbiAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBuZWl0aGVyIHJvb3QgaGFzIGEgcHJldiBub2RlICh1c3VhbGx5IGJlY2F1c2UgdGhlIGlucHV0cyBjb21lXG4gICBmcm9tIFtkaXNjb25uZWN0XypdIG9yIGFyZSB0aGUgdG9wIG9mIHRoZSBoZWFwIG9yIGFyZSB0aGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24pLiAqKVxubGV0IG1lcmdlIHQgcm9vdDEgcm9vdDIgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHJvb3QxXG4gIHRoZW4gcm9vdDJcbiAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IHJvb3QyXG4gIHRoZW4gcm9vdDFcbiAgZWxzZSAoXG4gICAgbGV0IGFkZF9jaGlsZCB0IG5vZGUgfmNoaWxkID1cbiAgICAgIE5vZGUuYWRkX2NoaWxkIG5vZGUgfnBvb2w6dC5wb29sIH5jaGlsZDtcbiAgICAgIG5vZGVcbiAgICBpblxuICAgIGxldCB2MSA9IE5vZGUudmFsdWVfZXhuIHJvb3QxIH5wb29sOnQucG9vbCBpblxuICAgIGxldCB2MiA9IE5vZGUudmFsdWVfZXhuIHJvb3QyIH5wb29sOnQucG9vbCBpblxuICAgIGlmIHQuY21wIHYxIHYyIDwgMFxuICAgIHRoZW4gYWRkX2NoaWxkIHQgcm9vdDEgfmNoaWxkOnJvb3QyXG4gICAgZWxzZSBhZGRfY2hpbGQgdCByb290MiB+Y2hpbGQ6cm9vdDEpXG47O1xuXG5sZXQgdG9wX2V4biB0ID1cbiAgaWYgTm9kZS5pc19lbXB0eSB0LnJvb3RcbiAgdGhlbiBmYWlsd2l0aCBcIkhlYXAudG9wX2V4biBjYWxsZWQgb24gYW4gZW1wdHkgaGVhcFwiXG4gIGVsc2UgTm9kZS52YWx1ZV9leG4gdC5yb290IH5wb29sOnQucG9vbFxuOztcblxubGV0IHRvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX2V4biB0KVxuXG5sZXQgYWRkX25vZGUgdCB2ID1cbiAgbGV0IG5vZGUgPSBhbGxvY2F0ZSB0IHYgaW5cbiAgdC5yb290IDwtIG1lcmdlIHQgdC5yb290IG5vZGU7XG4gIG5vZGVcbjs7XG5cbmxldCBhZGQgdCB2ID0gaWdub3JlIChhZGRfbm9kZSB0IHYgOiBfIE5vZGUudClcblxuKCogW21lcmdlX3BhaXJzXSB0YWtlcyBhIGxpc3Qgb2YgaGVhcCByb290cyBhbmQgbWVyZ2VzIGNvbnNlY3V0aXZlIHBhaXJzLCByZWR1Y2luZyB0aGVcbiAgIGxpc3Qgb2YgbGVuZ3RoIG4gdG8gbi8yLiAgVGhlbiBpdCBtZXJnZXMgdGhlIG1lcmdlZCBwYWlycyBpbnRvIGEgc2luZ2xlIGhlYXAuICBPbmVcbiAgIGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgc29tZXdoYXQgbGlrZSBidWlsZGluZyBhIHNpbmdsZSBsZXZlbCBvZiBhIGJpbmFyeSB0cmVlLlxuXG4gICBUaGUgb3V0cHV0IGhlYXAgZG9lcyBub3QgY29udGFpbiB0aGUgdmFsdWUgdGhhdCB3YXMgYXQgdGhlIHJvb3Qgb2YgdGhlIGlucHV0IGhlYXAuXG5cbiAgIFdlIGJyZWFrIHRoZSBmdW5jdGlvbiBpbnRvIHR3byBwYXJ0cy4gIEEgZmlyc3Qgc3RhZ2UgdGhhdCBpcyB3aWxsaW5nIHRvIHVzZSBsaW1pdGVkXG4gICBzdGFjayBpbnN0ZWFkIG9mIGhlYXAgYWxsb2NhdGlvbiBmb3IgYm9va2tlZXBpbmcsIGFuZCBhIHNlY29uZCBzdGFnZSB0aGF0IHNoaWZ0cyB0b1xuICAgdXNpbmcgYSBsaXN0IGFzIGFuIGFjY3VtdWxhdG9yIGlmIHdlIGdvIHRvbyBkZWVwLlxuXG4gICBUaGlzIGNhbiBiZSBtYWRlIHRhaWwgcmVjdXJzaXZlIGFuZCBub24tYWxsb2NhdGluZyBieSBzdGFydGluZyB3aXRoIGFuIGVtcHR5IGhlYXAgYW5kXG4gICBtZXJnaW5nIG1lcmdlZCBwYWlycyBpbnRvIGl0LiBVbmZvcnR1bmF0ZWx5IHRoaXMgXCJsZWZ0IGZvbGRcIiB2ZXJzaW9uIGlzIG5vdCB3aGF0IGlzXG4gICBkZXNjcmliZWQgaW4gdGhlIG9yaWdpbmFsIHBhcGVyIGJ5IEZyZWRtYW4gZXQgYWwuOyB0aGV5IHNwZWNpZmljYWxseSBzYXkgdGhhdFxuICAgY2hpbGRyZW4gc2hvdWxkIGJlIG1lcmdlZCB0b2dldGhlciBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgIGxpc3QuIChbbWVyZ2VdIGlzIG5vdCBhc3NvY2lhdGl2ZSwgc28gb3JkZXIgbWF0dGVycy4pXG4qKVxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgIHwgW2hlYWRdIC0+IGhlYWQgOjogYWNjXG4gICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+IGxvb3AgKG1lcmdlIGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MlxuICAgICBpblxuICAgICBtYXRjaCBsb29wIFtdIGNoaWxkcmVuIHdpdGhcbiAgICAgfCBbXSAtPiBOb25lXG4gICAgIHwgW2hdIC0+IFNvbWUgaFxuICAgICB8IHggOjogeHMgLT4gU29tZSAoTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6bWVyZ2UpXG4gICBdfVxuKilcbmxldCBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZCA9XG4gIGxldCByZWMgbG9vcCBhY2MgaGVhZCA9XG4gICAgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWQgOjogYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGxvb3AgKG1lcmdlIHQgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyKSlcbiAgaW5cbiAgbWF0Y2ggbG9vcCBbXSBoZWFkIHdpdGhcbiAgfCBbXSAtPiBOb2RlLmVtcHR5ICgpXG4gIHwgWyBoIF0gLT4gaFxuICB8IHggOjogeHMgLT4gTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6KGZ1biBhY2MgaGVhcCAtPiBtZXJnZSB0IGFjYyBoZWFwKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCB0LnJvb3Qgd2l0aFxuICAgICB8IE5vZGUgKF8sIGNoaWxkcmVuKSAtPlxuICAgICAgIGxldCByZWMgbG9vcCBkZXB0aCBjaGlsZHJlbiA9XG4gICAgICAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICAgICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGNoaWxkZW5cbiAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgfCBbaGVhZF0gLT4gU29tZSBoZWFkXG4gICAgICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPlxuICAgICAgICAgICAgIG1lcmdlIChtZXJnZSBoZWFkIG5leHQxKSAobG9vcCAoZGVwdGggKyAxKSBuZXh0MilcbiAgICAgICAgIGVuZFxuICAgICAgIGluXG4gICAgICAgbG9vcCAwIGNoaWxkcmVuXG4gICBdfVxuKilcbmxldCBtZXJnZV9wYWlycyA9XG4gIGxldCBtYXhfc3RhY2tfZGVwdGggPSAxXzAwMCBpblxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCBoZWFkID1cbiAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkXG4gICAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGhlYWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgKCogbWVyZ2UgdGhlIGZpcnN0IHR3byBub2RlcyBpbiBvdXIgbGlzdCwgYW5kIHRoZW4gbWVyZ2UgdGhlIHJlc3VsdCB3aXRoIHRoZVxuICAgICAgICAgICByZXN1bHQgb2YgcmVjdXJzaXZlbHkgY2FsbGluZyBtZXJnZV9wYWlycyBvbiB0aGUgdGFpbCAqKVxuICAgICAgICBtZXJnZSB0IChtZXJnZSB0IGhlYWQgbmV4dDEpIChsb29wIHQgKGRlcHRoICsgMSkgbmV4dDIpKSlcbiAgaW5cbiAgZnVuIHQgaGVhZCAtPiBsb29wIHQgMCBoZWFkXG47O1xuXG5sZXQgcmVtb3ZlX25vbl9lbXB0eSB0IG5vZGUgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICBsZXQgbWVyZ2VkX2NoaWxkcmVuID0gbWVyZ2VfcGFpcnMgdCAoTm9kZS5kaXNjb25uZWN0X2NoaWxkIG5vZGUgfnBvb2wpIGluXG4gIGxldCBuZXdfcm9vdCA9XG4gICAgaWYgTm9kZS5lcXVhbCB0LnJvb3Qgbm9kZSB0aGVuIG1lcmdlZF9jaGlsZHJlbiBlbHNlIG1lcmdlIHQgdC5yb290IG1lcmdlZF9jaGlsZHJlblxuICBpblxuICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgdC5yb290IDwtIG5ld19yb290XG47O1xuXG5sZXQgcmVtb3ZlX3RvcCB0ID0gaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdCkgdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdC5yb290XG5cbigqIE5vdGUgdGhhdCB0aGlzIGlzIHRhaWwtcmVjdXJzaXZlIGFuZCB0aGF0IGVhY2ggbm9kZSBpcyB2aXNpdGVkIGF0IG1vc3QgMyB0aW1lcyAob25jZVxuICAgZm9yIGVhY2ggYnJhbmNoIG9mIHRoZSBcImlmXCIpLCBzbyBpdCB0YWtlcyBsaW5lYXIgdGltZSBhbmQgY29uc3RhbnQgc3BhY2UuICopXG5sZXQgcmVjIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IG5vZGUgfnBvb2wgPVxuICBsZXQgY2hpbGQgPSBOb2RlLmNoaWxkIG5vZGUgfnBvb2wgaW5cbiAgbGV0IHNpYmxpbmcgPSBOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbCBpblxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgY2hpbGQpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgY2hpbGQgfnBvb2xcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgc2libGluZylcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBzaWJsaW5nIH5wb29sXG4gIGVsc2UgKFxuICAgIGxldCBwcmV2ID0gTm9kZS5wcmV2IG5vZGUgfnBvb2wgaW5cbiAgICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICAgIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBwcmV2KSB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHByZXYgfnBvb2wpXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpXG4gIHRoZW4gKFxuICAgIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHQucm9vdCB+cG9vbDp0LnBvb2w7XG4gICAgdC5yb290IDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgcG9wX2V4biB0ID1cbiAgbGV0IHIgPSB0b3BfZXhuIHQgaW5cbiAgcmVtb3ZlX3RvcCB0O1xuICByXG47O1xuXG5sZXQgcG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3BfZXhuIHQpXG5cbmxldCBwb3BfaWYgdCBmID1cbiAgbWF0Y2ggdG9wIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdiAtPlxuICAgIGlmIGYgdlxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX3RvcCB0O1xuICAgICAgU29tZSB2KVxuICAgIGVsc2UgTm9uZVxuOztcblxuKCogcGFpcmluZyBoZWFwcyBhcmUgbm90IGJhbGFuY2VkIHRyZWVzLCBhbmQgdGhlcmVmb3JlIHdlIGNhbid0IHJlbHkgb24gYSBiYWxhbmNlXG4gICBwcm9wZXJ0eSB0byBzdG9wIG91cnNlbHZlcyBmcm9tIG92ZXJmbG93aW5nIHRoZSBzdGFjay4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIChmIGFjYyAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSkpIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIGluaXQgWyB0LnJvb3QgXVxuOztcblxuKCogYWxtb3N0IGlkZW50aWNhbCB0byBmb2xkLCBjb3BpZWQgZm9yIHNwZWVkIHB1cnBvc2VzICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgZiAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSk7XG4gICAgICAgIGxldCB0b192aXNpdCA9IE5vZGUuc2libGluZyB+cG9vbCBub2RlIDo6IE5vZGUuY2hpbGQgfnBvb2wgbm9kZSA6OiByZXN0IGluXG4gICAgICAgIGxvb3AgdG9fdmlzaXQpXG4gIGluXG4gIGxvb3AgWyB0LnJvb3QgXVxuOztcblxubGV0IGxlbmd0aCB0ID0gTm9kZS5Qb29sLmxlbmd0aCB0LnBvb2xcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGlzX2VtcHR5IHQgPSBOb2RlLmlzX2VtcHR5IHQucm9vdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfYXJyYXkgYXJyIH5jbXAgPVxuICBsZXQgdCA9IGNyZWF0ZSB+bWluX3NpemU6KEFycmF5Lmxlbmd0aCBhcnIpIH5jbXAgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGFkZCB0IHYpO1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdCBsIH5jbXAgPSBvZl9hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSB+Y21wXG5sZXQgc2V4cF9vZl90IGYgdCA9IEFycmF5LnNleHBfb2ZfdCBmICh0b19hcnJheSB0IHw+IEFycmF5LnNvcnRlZF9jb3B5IH5jb21wYXJlOnQuY21wKVxuXG5tb2R1bGUgRWx0ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgIHsgbXV0YWJsZSBub2RlIDogJ2EgTm9kZS50XG4gICAgOyBub2RlX2lkIDogTm9kZS5JZC50XG4gICAgOyBoZWFwIDogJ2EgdFxuICAgIH1cblxuICAoKiBJZiBpZHMgYXJlIGRpZmZlcmVudCwgaXQgbWVhbnMgdGhhdCB0aGUgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZVxuICAgICBvdGhlciBtZWFucyAoYW5kIHBvc3NpYmx5IHJldXNlZCkuICopXG4gIGxldCBpc19ub2RlX3ZhbGlkIHQgPSBOb2RlLklkLmVxdWFsIChOb2RlLmlkIH5wb29sOnQuaGVhcC5wb29sIHQubm9kZSkgdC5ub2RlX2lkXG5cbiAgbGV0IHZhbHVlIHQgPVxuICAgIGlmIGlzX25vZGVfdmFsaWQgdCB0aGVuIFNvbWUgKE5vZGUudmFsdWVfZXhuIHQubm9kZSB+cG9vbDp0LmhlYXAucG9vbCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHRcbiAgICB0aGVuIE5vZGUudmFsdWVfZXhuIHQubm9kZSB+cG9vbDp0LmhlYXAucG9vbFxuICAgIGVsc2UgZmFpbHdpdGggXCJIZWFwLnZhbHVlX2V4bjogbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBoZWFwXCJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh2YWx1ZSB0IDogYSBvcHRpb24pXVxuZW5kXG5cbmxldCByZW1vdmUgdCAodG9rZW4gOiBfIEVsdC50KSA9XG4gIGlmIG5vdCAocGh5c19lcXVhbCB0IHRva2VuLmhlYXApXG4gIHRoZW4gZmFpbHdpdGggXCJjYW5ub3QgcmVtb3ZlIGZyb20gYSBkaWZmZXJlbnQgaGVhcFwiXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHRva2VuLm5vZGUpXG4gIHRoZW4gKFxuICAgIGlmIEVsdC5pc19ub2RlX3ZhbGlkIHRva2VuIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHRva2VuLm5vZGU7XG4gICAgdG9rZW4ubm9kZSA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IGFkZF9yZW1vdmFibGUgdCB2ID1cbiAgbGV0IG5vZGUgPSBhZGRfbm9kZSB0IHYgaW5cbiAgeyBFbHQubm9kZTsgaGVhcCA9IHQ7IG5vZGVfaWQgPSBOb2RlLmlkIH5wb29sOnQucG9vbCBub2RlIH1cbjs7XG5cbmxldCB1cGRhdGUgdCB0b2tlbiB2ID1cbiAgcmVtb3ZlIHQgdG9rZW47XG4gIGFkZF9yZW1vdmFibGUgdCB2XG47O1xuXG5sZXQgZmluZF9lbHQgPVxuICBsZXQgcmVjIGxvb3AgdCBmIG5vZGVzID1cbiAgICBtYXRjaCBub2RlcyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHQgZiByZXN0XG4gICAgICBlbHNlIGlmIGYgKE5vZGUudmFsdWVfZXhuIG5vZGUgfnBvb2w6dC5wb29sKVxuICAgICAgdGhlbiBTb21lIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgdCBmIChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wgOjogTm9kZS5jaGlsZCBub2RlIH5wb29sOnQucG9vbCA6OiByZXN0KVxuICBpblxuICBmdW4gdCB+ZiAtPiBsb29wIHQgZiBbIHQucm9vdCBdXG47O1xuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIGhlYXAgPSAnYSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTm9kZS50XG5cbiAgICBsZXQgdmFsdWUgdCBoZWFwID0gTm9kZS52YWx1ZV9leG4gfnBvb2w6aGVhcC5wb29sIHRcbiAgZW5kXG5cbiAgbGV0IGFkZF9yZW1vdmFibGUgPSBhZGRfbm9kZVxuICBsZXQgcmVtb3ZlID0gcmVtb3ZlX25vbl9lbXB0eVxuXG4gIGxldCB1cGRhdGUgdCBlbHQgdiA9XG4gICAgcmVtb3ZlIHQgZWx0O1xuICAgIGFkZF9yZW1vdmFibGUgdCB2XG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB2YWwgYW1fcnVubmluZ190ZXN0IDogYm9vbFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgYSA9XG4gICAgaWYgTS5hbV9ydW5uaW5nX3Rlc3QgdGhlbiBTZXhwLkF0b20gXCI8aGlkZGVuX2luX3Rlc3Q+XCIgZWxzZSBzZXhwX29mX2EgYVxuICA7O1xuXG4gIG1vZHVsZSBXaXRoX25vbl9yb3VuZHRyaXBwaW5nX2luX3Rlc3Rfb2Zfc2V4cCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBUdXJuZWRfb2ZmID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGZhbHNlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFR1cm5lZF9vbiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IHRydWVcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvblwiID1cbiAgICAgIHByaW50X3MgWyVzZXhwICgxMDI0IDogVHVybmVkX29uLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8IDxoaWRkZW5faW5fdGVzdD4gfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvZmZcIiA9XG4gICAgICBwcmludF9zIChbJXNleHBfb2Y6IFR1cm5lZF9vZmYudF0gMTAyNCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDI0IHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxuICBlbmQpXG4iLCJvcGVuIENvcmVcblxudHlwZSArJ2EgdFxuXG4oKiBUaGlzIFtPYmoubWFnaWNdIGlzIE9LIGJlY2F1c2Ugd2UgbmV2ZXIgYWxsb3cgdXNlciBjb2RlIGFjY2VzcyB0byBbbm9uZV0gKGV4Y2VwdCB2aWFcbiAgIFt1bnNhZmVfdmFsdWVdKS4gIFdlIGRpc2FsbG93IFtfIFVvcHQudCBVb3B0LnRdLCBzbyB0aGVyZSBpcyBubyBjaGFuY2Ugb2YgY29uZnVzaW5nXG4gICBbbm9uZV0gd2l0aCBbc29tZSBub25lXS4gIEFuZCBbZmxvYXQgVW9wdC50IGFycmF5XSBpcyBzaW1pbGFybHkgZGlzYWxsb3dlZC4gKilcbmxldCBub25lIDogJ2EgdCA9IE9iai5tYWdpYyBcIlVvcHQubm9uZVwiXG5sZXQgc29tZSAoeCA6ICdhKSA6ICdhIHQgPSBPYmoubWFnaWMgeFxubGV0IHVuc2FmZV92YWx1ZSAoeCA6ICdhIHQpIDogJ2EgPSBPYmoubWFnaWMgeFxubGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG5sZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpZiBpc19zb21lIHQgdGhlbiBpbnZhcmlhbnRfYSAodW5zYWZlX3ZhbHVlIHQpXG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBpZiBpc19ub25lIHQgdGhlbiBbJXNleHAgTm9uZV0gZWxzZSBbJXNleHAgU29tZSAodW5zYWZlX3ZhbHVlIHQgOiBhKV1cbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9IGlmIGlzX25vbmUgdCB0aGVuIGZhaWx3aXRoIFwiVW9wdC52YWx1ZV9leG5cIiBlbHNlIHVuc2FmZV92YWx1ZSB0XG5sZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAodW5zYWZlX3ZhbHVlIHQpXG5cbmxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gbm9uZVxuICB8IFNvbWUgYSAtPiBzb21lIGFcbjs7XG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfdmFsdWVcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgbW9kdWxlIGV4cGxvaXRzIHRoZSBmYWN0IHRoYXQgT0NhbWwgZG9lcyBub3QgcGVyZm9ybSBjb250ZXh0LXN3aXRjaGVzIHVuZGVyXG4gICBjZXJ0YWluIGNvbmRpdGlvbnMuICBJdCBjYW4gdGhlcmVmb3JlIGF2b2lkIHVzaW5nIG11dGV4ZXMuXG5cbiAgIEdpdmVuIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGN1cnJlbnQgT0NhbWwgcnVudGltZSAoYW5kIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlKSwgY29kZVxuICAgc2VjdGlvbnMgZG9jdW1lbnRlZCBhcyBhdG9taWMgYmVsb3cgd2lsbCBuZXZlciBjb250YWluIGEgY29udGV4dC1zd2l0Y2guICBUaGUgZGVjaWRpbmdcbiAgIGNyaXRlcmlvbiBpcyB3aGV0aGVyIHRoZXkgY29udGFpbiBhbGxvY2F0aW9ucyBvciBjYWxscyB0byBleHRlcm5hbC9idWlsdGluIGZ1bmN0aW9ucy5cbiAgIElmIHRoZXJlIGlzIG5vbmUsIGEgY29udGV4dC1zd2l0Y2ggY2Fubm90IGhhcHBlbi4gIEFzc2lnbm1lbnRzIHdpdGhvdXQgYWxsb2NhdGlvbnMsXG4gICBmaWVsZCBhY2Nlc3MsIHBhdHRlcm4tbWF0Y2hpbmcsIGV0Yy4sIGRvIG5vdCB0cmlnZ2VyIGNvbnRleHQtc3dpdGNoZXMuXG5cbiAgIENvZGUgcmV2aWV3ZXJzIHNob3VsZCB0aGVyZWZvcmUgbWFrZSBzdXJlIHRoYXQgdGhlIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93XG4gICBkbyBub3QgdmlvbGF0ZSB0aGUgYWJvdmUgYXNzdW1wdGlvbnMuICBJdCBpcyBwcnVkZW50IHRvIGRpc2Fzc2VtYmxlIHRoZSAubyBmaWxlICh1c2luZ1xuICAgW29iamR1bXAgLWRyXSkgYW5kIGV4YW1pbmUgaXQuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHQgOiAoJ2EgdCBVb3B0LnRbQHNleHAub3BhcXVlXSlcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSAoKSA9IHsgdmFsdWUgPSBVb3B0Lm5vbmU7IG5leHQgPSBVb3B0Lm5vbmUgfVxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgKCogW2Zyb250XSB0byBbYmFja10gaGFzIFtsZW5ndGggKyAxXSBsaW5rZWQgZWxlbWVudHMsIHdoZXJlIHRoZSBmaXJzdCBbbGVuZ3RoXSBob2xkIHRoZVxuICAgICB2YWx1ZXMgaW4gdGhlIHF1ZXVlLCBhbmQgdGhlIGxhc3QgaXMgW2JhY2tdLCBob2xkaW5nIG5vIHZhbHVlLiAqKVxuICA7IG11dGFibGUgZnJvbnQgOiAnYSBFbHQudFxuICA7IG11dGFibGUgYmFjayA6ICdhIEVsdC50XG4gICgqIFt1bnVzZWRfZWx0c10gaXMgc2luZ2x5IGxpbmtlZCB2aWEgW25leHRdLCBhbmQgZW5kcyB3aXRoIFtzZW50aW5lbF0uICBBbGwgZWx0cyBpblxuICAgICBbdW51c2VkX2VsdHNdIGhhdmUgW1VvcHQuaXNfbm9uZSBlbHQudmFsdWVdLiAqKVxuICA7IG11dGFibGUgdW51c2VkX2VsdHMgOiAnYSBFbHQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDooY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPj0gMCkpKVxuICAgICAgfmZyb250OlxuICAgICAgICAoY2hlY2sgKGZ1biBmcm9udCAtPlxuICAgICAgICAgICBsZXQgaSA9IHJlZiB0Lmxlbmd0aCBpblxuICAgICAgICAgICBsZXQgciA9IHJlZiBmcm9udCBpblxuICAgICAgICAgICB3aGlsZSAhaSA+IDAgZG9cbiAgICAgICAgICAgICBkZWNyIGk7XG4gICAgICAgICAgICAgbGV0IGVsdCA9ICFyIGluXG4gICAgICAgICAgICAgciA6PSBVb3B0LnZhbHVlX2V4biBlbHQuRWx0Lm5leHQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgZWx0LnZhbHVlKVxuICAgICAgICAgICBkb25lO1xuICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgIXIgdC5iYWNrKSkpXG4gICAgICB+YmFjazooY2hlY2sgKGZ1biBiYWNrIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGJhY2suRWx0LnZhbHVlKSkpXG4gICAgICB+dW51c2VkX2VsdHM6XG4gICAgICAgIChjaGVjayAoZnVuIHVudXNlZF9lbHRzIC0+XG4gICAgICAgICAgIGxldCByID0gcmVmIHVudXNlZF9lbHRzIGluXG4gICAgICAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICAgICAgIGxldCBlbHQgPSBVb3B0LnZhbHVlX2V4biAhciBpblxuICAgICAgICAgICAgIHIgOj0gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZSkpKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBlbHQgPSBFbHQuY3JlYXRlICgpIGluXG4gIHsgZnJvbnQgPSBlbHQ7IGJhY2sgPSBlbHQ7IGxlbmd0aCA9IDA7IHVudXNlZF9lbHRzID0gVW9wdC5ub25lIH1cbjs7XG5cbmxldCBnZXRfdW51c2VkX2VsdCB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgVW9wdC5pc19zb21lIHQudW51c2VkX2VsdHNcbiAgdGhlbiAoXG4gICAgbGV0IGVsdCA9IFVvcHQudW5zYWZlX3ZhbHVlIHQudW51c2VkX2VsdHMgaW5cbiAgICB0LnVudXNlZF9lbHRzIDwtIGVsdC5uZXh0O1xuICAgIGVsdCAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKikpXG4gIGVsc2UgRWx0LmNyZWF0ZSAoKVxuOztcblxubGV0IGVucXVldWUgKHR5cGUgYSkgKHQgOiBhIHQpIChhIDogYSkgPVxuICBsZXQgbmV3X2JhY2sgPSBnZXRfdW51c2VkX2VsdCB0IGluXG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgdC5iYWNrLnZhbHVlIDwtIFVvcHQuc29tZSBhO1xuICB0LmJhY2submV4dCA8LSBVb3B0LnNvbWUgbmV3X2JhY2s7XG4gIHQuYmFjayA8LSBuZXdfYmFja1xuOztcblxuKCogRU5EIEFUT01JQyBTRUNUSU9OICopXG5cbmxldCByZXR1cm5fdW51c2VkX2VsdCB0IChlbHQgOiBfIEVsdC50KSA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGVsdC52YWx1ZSA8LSBVb3B0Lm5vbmU7XG4gIGVsdC5uZXh0IDwtIHQudW51c2VkX2VsdHM7XG4gIHQudW51c2VkX2VsdHMgPC0gVW9wdC5zb21lIGVsdDtcbiAgKCogRU5EIEFUT01JQyBTRUNUSU9OICopXG4gICgpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2RlcXVldWVfZW1wdHkgdCA9XG4gIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gb2YgZW1wdHkgcXVldWVcIiB0IFslc2V4cF9vZjogXyB0XVxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9kZXF1ZXVlX2VtcHR5IHQ7XG4gIGxldCBlbHQgPSB0LmZyb250IGluXG4gIGxldCBhID0gZWx0LnZhbHVlIGluXG4gIHQuZnJvbnQgPC0gVW9wdC51bnNhZmVfdmFsdWUgZWx0Lm5leHQ7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgKCogRU5EIEFUT01JQyBTRUNUSU9OICopXG4gIHJldHVybl91bnVzZWRfZWx0IHQgZWx0O1xuICBVb3B0LnVuc2FmZV92YWx1ZSBhXG47O1xuXG5sZXQgY2xlYXJfaW50ZXJuYWxfcG9vbCB0ID0gdC51bnVzZWRfZWx0cyA8LSBVb3B0Lm5vbmVcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVvcHQgPSBVb3B0XG5lbmRcbiIsImluY2x1ZGUgQ29yZS5Db3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuXG4oKiBbYWZ0ZXJdIGlzIGxpa2UgW2FkZF0sIGJ1dCBkZWFscyBuaWNlbHkgd2l0aCB0aGUgY2FzZSBvZiBvdmVyZmxvdyBieSBpbnN0ZWFkIHJldHVybmluZ1xuICAgW21heF92YWx1ZV0uICBUaW1lLXNvdXJjZSBmdW5jdGlvbnMgdXNlIFthZnRlcl0gdG8gYXZvaWQgaW1tZWRpYXRlbHkgZmlyaW5nIGV2ZW50cyB0aGF0XG4gICBzaG91bGQgbmV2ZXIgZmlyZSwgZHVlIHRvIHRoZSBvdmVyZmxvdyBsZWFkaW5nIHRvIGEgbmVnYXRpdmUgdGltZSB0aGF0IGFwcGVhcnMgdG8gYmUgaW5cbiAgIHRoZSBwYXN0LiAgV2UgZG9uJ3QgY2hlY2sgdW5kZXJmbG93IGJlY2F1c2UgdGhhdCBpcyB2ZXJ5IHVubGlrZWx5LCByZXF1aXJpbmcgYm90aCBhXG4gICBuZWdhdGl2ZSB0aW1lIGFuZCBhIG5lZ2F0aXZlIHNwYW4uICopXG5sZXQgYWZ0ZXIgdCBzcGFuID1cbiAgbGV0IHJlc3VsdCA9IGFkZCB0IHNwYW4gaW5cbiAgaWYgU3Bhbi4oID4gKSBzcGFuIFNwYW4uemVybyAmJiByZXN1bHQgPCB0IHRoZW4gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgZWxzZSByZXN1bHRcbjs7XG4iLCJtb2R1bGUgVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeSA9IFRpbWVfbnNcbm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5XG5pbmNsdWRlIEFzeW5jX2tlcm5lbF9jb25maWcuUHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG5cbmxldCBsb2cgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIGVwcmludGZcbiAgICBcIiVzXFxuJSFcIlxuICAgIChTZXhwLnRvX3N0cmluZ19odW1cbiAgICAgICAoWyVzZXhwX29mOiBTZXhwLnQgKiBUaW1lX25zLnQgKiBzdHJpbmcgKiBhXVxuICAgICAgICAgICghQXN5bmNfa2VybmVsX2NvbmZpZy50YXNrX2lkICgpLCBUaW1lX25zLm5vdyAoKSwgbWVzc2FnZSwgYSkpKVxuOztcblxubGV0IGxvZ19zdHJpbmcgbWVzc2FnZSA9IGxvZyBtZXNzYWdlICgpIFslc2V4cF9vZjogdW5pdF1cbiIsIm1vZHVsZSBEZWJ1Z19pbl90aGlzX2RpcmVjdG9yeSA9IERlYnVnXG5tb2R1bGUgVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeSA9IFRpbWVfbnNcbm9wZW4hIENvcmVcbmluY2x1ZGUgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIERlYnVnID0gRGVidWdfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5cbm1vZHVsZSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gIEFzeW5jX2tlcm5lbF9jb25maWcuTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCBlcHJpbnQgPSBDb3JlLkRlYnVnLmVwcmludFxubGV0IGVwcmludF9zID0gQ29yZS5EZWJ1Zy5lcHJpbnRfc1xubGV0IGVwcmludHMgPSBDb3JlLkRlYnVnLmVwcmludHNcbmxldCBwcmludF9zIHNleHAgPSBwcmludGYgXCIlc1xcbiUhXCIgKHNleHAgfD4gU2V4cC50b19zdHJpbmdfaHVtKVxubGV0IHNlYyA9IFRpbWVfbnMuU3Bhbi5vZl9zZWNcblxuKCogV2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlc2UgbW9kdWxlcyBpbiBBc3luY19rZXJuZWwsIHRvIGF2b2lkIGRpZmZpY3VsdGllcyB3aXRoXG4gICB1c2luZyBpdCBvbiBqc19vZl9vY2FtbC4gKilcbm1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVW5peCA9IHN0cnVjdCBlbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5vcm1hbFxuICB8IExvd1xuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5vcm1hbCA9IE5vcm1hbFxubGV0IGxvdyA9IExvd1xuIiwiKCogVGhpcyBmaWxlIGRlZmluZXMgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyBhdCB0aGUgaGVhcnQgb2YgQXN5bmMuICBUaGUgZnVuY3Rpb25zXG4gICBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUocykgZm9yIGVhY2ggbW9kdWxlLlxuICAgVGhpcyBmaWxlIHNob3VsZCBkZWZpbmUgb25seSB0eXBlcywgbm90IGZ1bmN0aW9ucywgc2luY2UgZnVuY3Rpb25zIGRlZmluZWQgaW5zaWRlIHRoZVxuICAgcmVjdXJzaXZlIG1vZHVsZXMgYXJlIG5vdCBpbmxpbmVkLlxuXG4gICBJZiB5b3UgbmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0byBhIG1vZHVsZSBidXQgZG9pbmcgc28gd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeVxuICAgY3ljbGUsIHNwbGl0IHRoZSBmaWxlIGludG8gcGllY2VzIGFzIG5lZWRlZCB0byBicmVhayB0aGUgY3ljbGUsIGUuZy4gc2NoZWR1bGVyMC5tbCxcbiAgIHNjaGVkdWxlcjEubWwsIHNjaGVkdWxlci5tbC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSByZWMgQ2VsbCA6IHNpZ1xuICB0eXBlIGFueSA9XG4gICAgWyBgRW1wdHlcbiAgICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICAgIHwgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgfCBgRnVsbFxuICAgIHwgYEluZGlyXG4gICAgXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICAgIHsgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgSGFuZGxlci50XG4gICAgICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgSGFuZGxlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgdFxuICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgICAoJ2EgLT4gdW5pdCkgKiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIHRcbiAgICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgdFxuICAgIHwgRnVsbCA6ICdhIC0+ICgnYSwgWz4gYEZ1bGwgXSkgdFxuICAgIHwgSW5kaXIgOiAnYSBJdmFyLnQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgdFxuZW5kID1cbiAgQ2VsbFxuXG5hbmQgSGFuZGxlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIENlbGwudFxuZW5kID1cbiAgSGFuZGxlclxuXG5hbmQgSXZhciA6IHNpZ1xuICB0eXBlICdhIHQgPSB7IG11dGFibGUgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG5cbiAgbW9kdWxlIEltbXV0YWJsZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IHsgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG4gIGVuZFxuZW5kID1cbiAgSXZhclxuXG5hbmQgRGVmZXJyZWQgOiBzaWdcbiAgdHlwZSArJ2EgdFxuZW5kID1cbiAgRGVmZXJyZWRcblxuYW5kIEV4ZWN1dGlvbl9jb250ZXh0IDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgOyBwcmlvcml0eSA6IFByaW9yaXR5LnRcbiAgICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gICAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgICB9XG5lbmQgPVxuICBFeGVjdXRpb25fY29udGV4dFxuXG5hbmQgRm9yd2FyZGluZyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgRGV0YWNoZWRcbiAgICB8IFBhcmVudCBvZiBNb25pdG9yLnRcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG5cbmVuZCA9XG4gIEZvcndhcmRpbmdcblxuYW5kIE1vbml0b3IgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBJbmZvLnRcbiAgICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICAgIDsgaWQgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9lcnJvciA6IGV4biBJdmFyLnRcbiAgICA7IG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gICAgOyBtdXRhYmxlIHRhaWxzX2Zvcl9hbGxfZXJyb3JzIDogZXhuIFRhaWwudCBsaXN0XG4gICAgOyBtdXRhYmxlIGhhc19zZWVuX2Vycm9yIDogYm9vbFxuICAgIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gICAgfVxuZW5kID1cbiAgTW9uaXRvclxuXG5hbmQgVGFpbCA6IHNpZ1xuICB0eXBlICdhIHQgPSB7IG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5lbmQgPVxuICBUYWlsXG5cbmFuZCBTdHJlYW0gOiBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mICdhICogJ2EgdFxuZW5kID1cbiAgU3RyZWFtXG5cbigqIFdlIGF2b2lkIHVzaW5nIFttb2R1bGUgcmVjXSB0byBkZWZpbmUgW0J2YXJdLCBzbyB0aGF0IFt0b19yZXByXSBhbmQgW29mX3JlcHJdIGFyZVxuICAgaW5saW5lZC4gKilcbm1vZHVsZSBCdmFyIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1pc3Npb24pIHRcblxuICAoKiogW3JlcHJdIGV4aXN0cyBzbyB0aGF0IHdlIG1heSBoaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFtCdmFyLnRdLCBhbmQgdGhlbiBhZGQgYVxuICAgICAgcGhhbnRvbSB0eXBlIHRvIGl0IHVwc3RyZWFtLiAgV2l0aG91dCB0aGlzLCB0aGUgcGhhbnRvbSB0eXBlIHZhcmlhYmxlIHdvdWxkIGFsbG93XG4gICAgICBmb3IgYW55dGhpbmcgdG8gYmUgY29lcmNlZCBpbiBhbmQgb3V0LCBzaW5jZSBpdCBpcyB1bnVzZWQuICopXG4gIHR5cGUgJ2EgcmVwciA9XG4gICAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICAgIH1cblxuICB2YWwgb2ZfcmVwciA6ICdhIHJlcHIgLT4gKCdhLCAncGVybWlzc2lvbikgdFxuICB2YWwgdG9fcmVwciA6ICgnYSwgJ3Blcm1pc3Npb24pIHQgLT4gJ2EgcmVwclxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgcmVwciA9XG4gICAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICAgIH1cblxuICB0eXBlICgnYSwgJ3Blcm1pc3Npb24pIHQgPSAnYSByZXByXG5cbiAgbGV0IHRvX3JlcHIgdCA9IHRcbiAgbGV0IG9mX3JlcHIgdCA9IHRcbmVuZFxuXG5tb2R1bGUgcmVjIEV2ZW50IDogc2lnXG4gIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBGaXJlZFxuICAgICAgfCBIYXBwZW5pbmdcbiAgICAgIHwgU2NoZWR1bGVkXG4gICAgICB8IFVuc2NoZWR1bGVkXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gOiBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kID1cbiAgRXZlbnRcblxuYW5kIEV4dGVybmFsX2pvYiA6IHNpZ1xuICB0eXBlIHQgPSBUIDogRXhlY3V0aW9uX2NvbnRleHQudCAqICgnYSAtPiB1bml0KSAqICdhIC0+IHRcbmVuZCA9XG4gIEV4dGVybmFsX2pvYlxuXG5hbmQgSm9iIDogc2lnXG4gIHR5cGUgc2xvdHMgPSAoRXhlY3V0aW9uX2NvbnRleHQudCwgT2JqLnQgLT4gdW5pdCwgT2JqLnQpIFBvb2wuU2xvdHMudDNcbiAgdHlwZSB0ID0gc2xvdHMgUG9vbC5Qb2ludGVyLnRcbmVuZCA9XG4gIEpvYlxuXG5hbmQgSm9iX29yX2V2ZW50IDogc2lnXG4gIHR5cGUgdFxuZW5kID1cbiAgSm9iX29yX2V2ZW50XG5cbmFuZCBKb2JfcG9vbCA6IHNpZ1xuICB0eXBlIHQgPSBKb2Iuc2xvdHMgUG9vbC50XG5lbmQgPVxuICBKb2JfcG9vbFxuXG5hbmQgSm9iX3F1ZXVlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIG51bV9qb2JzX3J1biA6IGludFxuICAgIDsgbXV0YWJsZSBqb2JzX2xlZnRfdGhpc19jeWNsZSA6IGludFxuICAgIDsgbXV0YWJsZSBqb2JzIDogT2JqLnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgICA7IG11dGFibGUgZnJvbnQgOiBpbnRcbiAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgfVxuZW5kID1cbiAgSm9iX3F1ZXVlXG5cbmFuZCBKb2JzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIudFxuICAgIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgICA7IG5vcm1hbCA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3cgOiBKb2JfcXVldWUudFxuICAgIH1cbmVuZCA9XG4gIEpvYnNcblxuYW5kIFNjaGVkdWxlciA6IHNpZ1xuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNoZWNrX2FjY2VzcyA6ICh1bml0IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgICA7IGxvd19wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgOiBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCBEZXF1ZS50XG4gICAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIHVuY2F1Z2h0X2V4biA6IChFeG4udCAqIFNleHAudCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGN5Y2xlX2NvdW50IDogaW50XG4gICAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gICAgOyBtdXRhYmxlIGluX2N5Y2xlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgOiBDeWNsZV9ob29rLnQgbGlzdFxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDogKEN5Y2xlX2hvb2tfaGFuZGxlLnQsIEN5Y2xlX2hvb2sudCkgSGFzaHRibC50XG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiBDeWNsZV9ob29rLnQgbGlzdFxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgVGltZV9zb3VyY2UudDFcbiAgICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgeWllbGQgOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gICAgfVxuZW5kID1cbiAgU2NoZWR1bGVyXG5cbmFuZCBDeWNsZV9ob29rIDogc2lnXG4gIHR5cGUgdCA9IHVuaXQgLT4gdW5pdFxuZW5kID1cbiAgQ3ljbGVfaG9va1xuXG5hbmQgQ3ljbGVfaG9va19oYW5kbGUgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcbmFuZCBUaW1lX3NvdXJjZV9pZCA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5hbmQgVGltZV9zb3VyY2UgOiBzaWdcbiAgdHlwZSAtJ3J3IHQxID1cbiAgICB7IGlkIDogVGltZV9zb3VyY2VfaWQudFxuICAgIDsgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIudFxuICAgIH1cbmVuZCA9XG4gIFRpbWVfc291cmNlXG5cbmFuZCBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgOiBzaWdcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgTm90X2ZpbmlzaGVkXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG5lbmQgPVxuICBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubGV0IGRlYnVnID0gRGVidWcubW9uaXRvclxuXG5tb2R1bGUgRm9yd2FyZGluZyA9IFR5cGVzLkZvcndhcmRpbmdcblxudHlwZSB0ID0gVHlwZXMuTW9uaXRvci50ID1cbiAgeyBuYW1lIDogSW5mby50XG4gIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gIDsgaWQgOiBpbnRcbiAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gVHlwZXMuSXZhci50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIHNjaGVkdWxlcyBhIGpvYiBmb3IgZWFjaCBlbGVtZW50IG9mIFtoYW5kbGVyc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gZXh0ZW5kcyBlYWNoIHRhaWwgaW4gW3RhaWxzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIHRhaWxzX2Zvcl9hbGxfZXJyb3JzIDogZXhuIFR5cGVzLlRhaWwudCBsaXN0XG4gIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9XG4gIG1hdGNoIHQuaGVyZSB3aXRoXG4gIHwgTm9uZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCldXG4gIHwgU29tZSBoZXJlIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KSwgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbnMgPVxuICBsZXQgcmVjIGxvb3AgdCBhYyA9XG4gICAgbGV0IGFjID0gZGVzY3JpcHRpb24gdCA6OiBhYyBpblxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTGlzdC5yZXYgYWNcbiAgICB8IFBhcmVudCB0IC0+IGxvb3AgdCBhY1xuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW11cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoZGVzY3JpcHRpb25zIHQgOiBTZXhwLnQgbGlzdCldXG5cbmxldCBuZXh0X2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgcGFyZW50ID1cbiAgbGV0IGlkID0gbmV4dF9pZCAoKSBpblxuICBsZXQgbmFtZSA9XG4gICAgbWF0Y2ggaW5mbywgbmFtZSB3aXRoXG4gICAgfCBTb21lIGksIE5vbmUgLT4gaVxuICAgIHwgU29tZSBpLCBTb21lIHMgLT4gSW5mby50YWcgaSB+dGFnOnNcbiAgICB8IE5vbmUsIFNvbWUgcyAtPiBJbmZvLm9mX3N0cmluZyBzXG4gICAgfCBOb25lLCBOb25lIC0+IEluZm8uY3JlYXRlIFwiaWRcIiBpZCBbJXNleHBfb2Y6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRdXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IG5hbWVcbiAgICA7IGhlcmVcbiAgICA7IGZvcndhcmRpbmcgPVxuICAgICAgICAobWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBSZXBvcnRfdW5jYXVnaHRfZXhuXG4gICAgICAgICB8IFNvbWUgcGFyZW50IC0+IFBhcmVudCBwYXJlbnQpXG4gICAgOyBpZFxuICAgIDsgbmV4dF9lcnJvciA9IHsgY2VsbCA9IEVtcHR5IH1cbiAgICA7IGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzID0gQmFnLmNyZWF0ZSAoKVxuICAgIDsgdGFpbHNfZm9yX2FsbF9lcnJvcnMgPSBbXVxuICAgIDsgaGFzX3NlZW5fZXJyb3IgPSBmYWxzZVxuICAgIH1cbiAgaW5cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJjcmVhdGVkIG1vbml0b3JcIiB0IFslc2V4cF9vZjogdF07XG4gIHRcbjs7XG5cbmxldCBtYWluID0gY3JlYXRlX3dpdGhfcGFyZW50IH5uYW1lOlwibWFpblwiIE5vbmVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yMFxuXG50eXBlIHQgPSBUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ID1cbiAgeyBtb25pdG9yIDogTW9uaXRvci50XG4gIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgbWFpbiA9XG4gIHsgbW9uaXRvciA9IE1vbml0b3IubWFpblxuICA7IHByaW9yaXR5ID0gUHJpb3JpdHkubm9ybWFsXG4gIDsgbG9jYWxfc3RvcmFnZSA9IFVuaXZfbWFwLmVtcHR5XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgPSBbXVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX2xpa2UgP21vbml0b3IgP3ByaW9yaXR5ID9sb2NhbF9zdG9yYWdlIHQgPVxuICBsZXQgbW9uaXRvciA9IE9wdGlvbi52YWx1ZSBtb25pdG9yIH5kZWZhdWx0OnQubW9uaXRvciBpblxuICB7IG1vbml0b3JcbiAgOyBwcmlvcml0eSA9IE9wdGlvbi52YWx1ZSBwcmlvcml0eSB+ZGVmYXVsdDp0LnByaW9yaXR5XG4gIDsgbG9jYWxfc3RvcmFnZSA9IE9wdGlvbi52YWx1ZSBsb2NhbF9zdG9yYWdlIH5kZWZhdWx0OnQubG9jYWxfc3RvcmFnZVxuICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gdC5iYWNrdHJhY2VfaGlzdG9yeVxuICB9XG47O1xuXG5sZXQgZmluZF9sb2NhbCB0IGtleSA9IFVuaXZfbWFwLmZpbmQgdC5sb2NhbF9zdG9yYWdlIGtleVxuXG5sZXQgd2l0aF9sb2NhbCB0IGtleSBkYXRhID1cbiAgeyB0IHdpdGggbG9jYWxfc3RvcmFnZSA9IFVuaXZfbWFwLmNoYW5nZSB0LmxvY2FsX3N0b3JhZ2Uga2V5IH5mOihmdW4gXyAtPiBkYXRhKSB9XG47O1xuXG5sZXQgcmVjb3JkX2JhY2t0cmFjZSB0ID1cbiAgeyB0IHdpdGggYmFja3RyYWNlX2hpc3RvcnkgPSBCYWNrdHJhY2UuZ2V0ICgpIDo6IHQuYmFja3RyYWNlX2hpc3RvcnkgfVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUeXBlcy5FeHRlcm5hbF9qb2JcblxubGV0IHNleHBfb2ZfdCBfID0gU2V4cC5BdG9tIFwiPGpvYj5cIlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFBvb2xcblxubGV0IGR1bW15X2UgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG5sZXQgZHVtbXlfZiA6IE9iai50IC0+IHVuaXQgPSBpZ25vcmVcbmxldCBkdW1teV9hIDogT2JqLnQgPSBPYmoucmVwciAoKVxuXG50eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIChPYmoudFtAc2V4cC5vcGFxdWVdKSkgU2xvdHMudDNcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgdCA9IHNsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxubGV0IGNyZWF0ZSAoKSA9IGNyZWF0ZSBTbG90cy50MyB+Y2FwYWNpdHk6MSB+ZHVtbXk6KGR1bW15X2UsIGR1bW15X2YsIGR1bW15X2EpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID0gSm9iX3Bvb2wuc2xvdHMgUG9vbC5Qb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEV2ZW50ID0gVHlwZXMuRXZlbnRcbm1vZHVsZSBKb2IgPSBUeXBlcy5Kb2JcbmluY2x1ZGUgVHlwZXMuSm9iX29yX2V2ZW50XG5cbigqIFRoaXMgcmVkZWZpbml0aW9uIG9mIFtFdmVudF0gaXMgaGVyZSBzbyB0aGUgdHlwZSBjaGVja3MgYXJlIHJpZ2h0IG5leHQgdG9cbiAgIFtPYmoubWFnaWNdcy4gKilcbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBvcGVuIFR5cGVzXG4gIG9wZW4gRXZlbnRcblxuICB0eXBlIF90ID0gdCA9XG4gICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICB9XG5lbmRcblxubW9kdWxlIF8gOiBzaWcgZW5kID0gc3RydWN0XG4gIG1vZHVsZSBFbnN1cmVfcHJpdmF0ZV9pbnQgKE0gOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgaW50XG4gICAgZW5kKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgX3QgPSBNLnRcbiAgZW5kXG5cbiAgaW5jbHVkZSBFbnN1cmVfcHJpdmF0ZV9pbnQgKEpvYilcbmVuZFxuXG5sZXQgb2ZfZXZlbnQgZXZlbnQgOiB0ID0gT2JqLm1hZ2ljIChldmVudCA6IEV2ZW50LnQpXG5sZXQgb2Zfam9iIGpvYiA6IHQgPSBPYmoubWFnaWMgKGpvYiA6IEpvYi50KVxubGV0IGlzX2V2ZW50ICh0IDogdCkgPSBPYmouaXNfYmxvY2sgKE9iai5yZXByIHQpXG5sZXQgaXNfam9iICh0IDogdCkgPSBPYmouaXNfaW50IChPYmoucmVwciB0KVxuXG5tb2R1bGUgTWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSBfIGtpbmQgPVxuICAgIHwgRXZlbnQgOiBFdmVudC50IGtpbmRcbiAgICB8IEpvYiA6IEpvYi50IGtpbmRcblxuICB0eXBlIHBhY2tlZCA9IEsgOiBfIGtpbmQgLT4gcGFja2VkIFtAQHVuYm94ZWRdXG5cbiAgbGV0IGtpbmQgdCA9IGlmIGlzX2V2ZW50IHQgdGhlbiBLIEV2ZW50IGVsc2UgSyBKb2JcbiAgbGV0IHByb2plY3QgKHR5cGUgYSkgKF8gOiBhIGtpbmQpIGpvYl9vcl9ldmVudCA9IChPYmoubWFnaWMgOiB0IC0+IGEpIGpvYl9vcl9ldmVudFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuU2NoZWR1bGVyXG5cbmxldCBldmVudHMgdCA9IHQudGltZV9zb3VyY2UuZXZlbnRzXG5cbmxldCBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCBleGVjdXRpb25fY29udGV4dCA9XG4gICgqIEF2b2lkIGEgY2FtbF9tb2RpZnkgaW4gbW9zdCBjYXNlcy4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBleGVjdXRpb25fY29udGV4dClcbiAgdGhlbiB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPC0gZXhlY3V0aW9uX2NvbnRleHRcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIwXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcbmxldCBzbG90c19wZXJfZWx0ID0gM1xuXG5tb2R1bGUgQSA9IFVuaWZvcm1fYXJyYXlcblxuKCogVGhpcyBpcyBlc3NlbnRpYWxseSBhIHNwZWNpYWxpemVkIFtGbGF0X3F1ZXVlXSwgZG9uZSBmb3IgcmVhc29ucyBvZiBzcGVlZC4gKilcbnR5cGUgdCA9IFR5cGVzLkpvYl9xdWV1ZS50ID1cbiAgeyBtdXRhYmxlIG51bV9qb2JzX3J1biA6IGludFxuICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgOyAoKiBbam9ic10gaXMgYW4gYXJyYXkgb2YgbGVuZ3RoIFtjYXBhY2l0eSB0ICogc2xvdHNfcGVyX2VsdF0sIHdoZXJlIGVhY2ggZWx0IGhhcyB0aGVcbiAgICAgICB0aHJlZSBjb21wb25lbnRzIG9mIGEgam9iIChbZXhlY3V0aW9uX2NvbnRleHRdLCBbZl0sIFthXSkgaW4gY29uc2VjdXRpdmUgc3BvdHMgaW5cbiAgICAgICBbam9ic10uICBbZW5xdWV1ZV0gZG91YmxlcyB0aGUgbGVuZ3RoIG9mIFtqb2JzXSBpZiBbam9ic10gaXMgZnVsbC4gIFtqb2JzXSBuZXZlclxuICAgICAgIHNocmlua3MuICBbam9ic10gaXMgc29tZXdoYXQgbGlrZSBhIFtDb3JlLlBvb2xdIHNwZWNpYWxpemVkIHRvIDMtdHVwbGVzOyB3ZVxuICAgICAgIGRvbid0IHVzZSBbUG9vbF0gYmVjYXVzZSB0aGF0IGltcGxlbWVudHMgYSBzZXQsIHdoZXJlIFtqb2JzXSBpcyBhIHF1ZXVlLiAqKVxuICAgIG11dGFibGUgam9icyA6IChPYmoudCBBLnRbQHNleHAub3BhcXVlXSlcbiAgOyAoKiBbbWFza10gaXMgW2NhcGFjaXR5IHQgLSAxXSwgYW5kIGlzIHVzZWQgZm9yIHF1aWNrbHkgY29tcHV0aW5nIFtpIG1vZCAoY2FwYWNpdHlcbiAgICAgICB0KV0gKilcbiAgICBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyAoKiBbZnJvbnRdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgam9iIGluIHRoZSBxdWV1ZS4gIFRoZSBhcnJheSBpbmRleCBvZiB0aGF0IGpvYidzXG4gICAgICAgZXhlY3V0aW9uIGNvbnRleHQgaXMgW2Zyb250ICogc2xvdHNfcGVyX2VsdF0uICopXG4gICAgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG9mZnNldCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICogc2xvdHNfcGVyX2VsdFxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm51bV9qb2JzX3J1bjooY2hlY2sgKGZ1biBudW1fam9ic19ydW4gLT4gYXNzZXJ0IChudW1fam9ic19ydW4gPj0gMCkpKVxuICAgICAgfmpvYnNfbGVmdF90aGlzX2N5Y2xlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzX2xlZnRfdGhpc19jeWNsZSAtPiBhc3NlcnQgKGpvYnNfbGVmdF90aGlzX2N5Y2xlID49IDApKSlcbiAgICAgIH5qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgIChPYmoub2JqIChBLmdldCBqb2JzIChvZmZzZXQgdCBpKSkgOiBFeGVjdXRpb25fY29udGV4dC50KVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXNrIC0+XG4gICAgICAgICAgIGxldCBjYXBhY2l0eSA9IG1hc2sgKyAxIGluXG4gICAgICAgICAgIGFzc2VydCAoSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdCA9IEEubGVuZ3RoIHQuam9icykpKVxuICAgICAgfmZyb250OlxuICAgICAgICAoY2hlY2sgKGZ1biBmcm9udCAtPlxuICAgICAgICAgICBhc3NlcnQgKGZyb250ID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGZyb250IDwgY2FwYWNpdHkgdCkpKVxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA8PSBjYXBhY2l0eSB0KSkpKVxuOztcblxubGV0IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHkgPSBBLmNyZWF0ZV9vYmpfYXJyYXkgfmxlbjooY2FwYWNpdHkgKiBzbG90c19wZXJfZWx0KVxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGNhcGFjaXR5ID0gMSBpblxuICB7IG51bV9qb2JzX3J1biA9IDBcbiAgOyBqb2JzX2xlZnRfdGhpc19jeWNsZSA9IDBcbiAgOyBqb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eVxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBmcm9udCA9IDBcbiAgOyBsZW5ndGggPSAwXG4gIH1cbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgdC5mcm9udCA8LSAwO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIDBcbjs7XG5cbmxldCBncm93IHQgPVxuICBsZXQgb2xkX2NhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBsZXQgbmV3X2NhcGFjaXR5ID0gb2xkX2NhcGFjaXR5ICogMiBpblxuICBsZXQgb2xkX2pvYnMgPSB0LmpvYnMgaW5cbiAgbGV0IG9sZF9mcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IGxlbjEgPSBJbnQubWluIHQubGVuZ3RoIChvbGRfY2FwYWNpdHkgLSBvbGRfZnJvbnQpICogc2xvdHNfcGVyX2VsdCBpblxuICBsZXQgbGVuMiA9ICh0Lmxlbmd0aCAqIHNsb3RzX3Blcl9lbHQpIC0gbGVuMSBpblxuICBsZXQgbmV3X2pvYnMgPSBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5Om5ld19jYXBhY2l0eSBpblxuICBBLmJsaXRcbiAgICB+bGVuOmxlbjFcbiAgICB+c3JjOm9sZF9qb2JzXG4gICAgfnNyY19wb3M6KG9sZF9mcm9udCAqIHNsb3RzX3Blcl9lbHQpXG4gICAgfmRzdDpuZXdfam9ic1xuICAgIH5kc3RfcG9zOjA7XG4gIEEuYmxpdCB+bGVuOmxlbjIgfnNyYzpvbGRfam9icyB+c3JjX3BvczowIH5kc3Q6bmV3X2pvYnMgfmRzdF9wb3M6bGVuMTtcbiAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gIHQuam9icyA8LSBuZXdfam9icztcbiAgdC5mcm9udCA8LSAwXG47O1xuXG5sZXQgc2V0ICh0eXBlIGEpIHQgaSBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBsZXQgb2Zmc2V0ID0gb2Zmc2V0IHQgaSBpblxuICBBLnVuc2FmZV9zZXQgdC5qb2JzIG9mZnNldCAoT2JqLnJlcHIgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCkpO1xuICBBLnVuc2FmZV9zZXQgdC5qb2JzIChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgKGYgOiBhIC0+IHVuaXQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMikgKE9iai5yZXByIChhIDogYSkpXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIHQubGVuZ3RoID0gY2FwYWNpdHkgdCB0aGVuIGdyb3cgdDtcbiAgc2V0IHQgdC5sZW5ndGggZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdCBuID1cbiAgaWYgbiA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIkpvYnMuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIGdvdCBuZWdhdGl2ZSBudW1iZXJcIiAobiA6IGludCkgKHQgOiB0KV07XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gblxuOztcblxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IHQubGVuZ3RoID4gMCAmJiB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlID4gMFxuXG5sZXQgcnVuX2pvYiB0IChzY2hlZHVsZXIgOiBTY2hlZHVsZXIudCkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgdC5udW1fam9ic19ydW4gPC0gdC5udW1fam9ic19ydW4gKyAxO1xuICBTY2hlZHVsZXIuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dDtcbiAgZiBhXG47O1xuXG5sZXQgcnVuX2V4dGVybmFsX2pvYnMgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpID1cbiAgbGV0IGV4dGVybmFsX2pvYnMgPSBzY2hlZHVsZXIuZXh0ZXJuYWxfam9icyBpblxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggZXh0ZXJuYWxfam9icyA+IDAgZG9cbiAgICBsZXQgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpID1cbiAgICAgIFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIGV4dGVybmFsX2pvYnNcbiAgICBpblxuICAgIHJ1bl9qb2IgdCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGRvbmVcbjs7XG5cbmxldCBydW5fam9icyAodHlwZSBhKSB0IHNjaGVkdWxlciA9XG4gICgqIFdlIGRvIHRoZSBbdHJ5LXdpdGhdIG91dHNpZGUgb2YgdGhlIFt3aGlsZV0gYmVjYXVzZSBpdCBpcyBjaGVhcGVyIHRoYW4gZG9pbmcgYVxuICAgICBbdHJ5LXdpdGhdIGZvciBlYWNoIGpvYi4gKilcbiAgKCogW3J1bl9leHRlcm5hbF9qb2JzXSBiZWZvcmUgZW50ZXJpbmcgdGhlIGxvb3AsIHNpbmNlIGl0IG1pZ2h0IGVucXVldWUgYSBqb2IsXG4gICAgIGNoYW5naW5nIFt0Lmxlbmd0aF0uICopXG4gIHRyeVxuICAgIHJ1bl9leHRlcm5hbF9qb2JzIHQgc2NoZWR1bGVyO1xuICAgIHdoaWxlIGNhbl9ydW5fYV9qb2IgdCBkb1xuICAgICAgbGV0IHRoaXNfam9iID0gb2Zmc2V0IHQgMCBpblxuICAgICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gICAgICAgIE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgdGhpc19qb2IpXG4gICAgICBpblxuICAgICAgbGV0IGYgOiBhIC0+IHVuaXQgPSBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzICh0aGlzX2pvYiArIDEpKSBpblxuICAgICAgbGV0IGEgOiBhID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAyKSkgaW5cbiAgICAgICgqIFdlIGNsZWFyIG91dCB0aGUgam9iIHJpZ2h0IG5vdyBzbyB0aGF0IGl0IGlzbid0IGxpdmUgYXQgdGhlIG5leHQgbWlub3JcbiAgICAgICAgIGNvbGxlY3Rpb24uICBXZSB0cmllZCBub3QgZG9pbmcgdGhpcyBhbmQgc2F3IHNpZ25pZmljYW50ICgxNSUgb3Igc28pIHBlcmZvcm1hbmNlXG4gICAgICAgICBoaXRzIGR1ZSB0byBzcHVyaW91cyBwcm9tb3Rpb24uICopXG4gICAgICBzZXQgdCAwIGR1bW15X2UgZHVtbXlfZiBkdW1teV9hO1xuICAgICAgdC5mcm9udCA8LSAodC5mcm9udCArIDEpIGxhbmQgdC5tYXNrO1xuICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIC0gMTtcbiAgICAgICgqIEl0IGlzIE9LIGlmIFtydW5fam9iXSBvciBbcnVuX2V4dGVybmFsX2pvYnNdIHJhaXNlcywgaW4gd2hpY2ggY2FzZSB0aGUgZXhuIGlzXG4gICAgICAgICBoYW5kbGVkIGJ5IHRoZSBvdXRlciB0cnktd2l0aC4gIFRoZSBvbmx5IHNpZGUgZWZmZWN0cyB3ZSBoYXZlIGRvbmUgYXJlIHRvIHRha2VcbiAgICAgICAgIHRoZSBqb2Igb3V0IG9mIHRoZSBxdWV1ZSBhbmQgZGVjcmVtZW50IFtqb2JzX2xlZnRfdGhpc19jeWNsZV0uICBbcnVuX2pvYl0gb3JcbiAgICAgICAgIFtydW5fZXh0ZXJuYWxfam9ic10gbWF5IHNpZGUgZWZmZWN0IFt0XSwgZWl0aGVyIGJ5IGVucXVldWVpbmcgam9icywgb3IgYnlcbiAgICAgICAgIGNsZWFyaW5nIFt0XS4gKilcbiAgICAgIHJ1bl9qb2IgdCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgICAgKCogW3J1bl9leHRlcm5hbF9qb2JzXSBhdCBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgW3doaWxlXSBsb29wLCBmb3IgZmFpcm5lc3MuICopXG4gICAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlclxuICAgIGRvbmU7XG4gICAgT2sgKClcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgICgqIFdlIGNhbGwgW0V4bi5iYWNrdHJhY2VdIGltbWVkaWF0ZWx5IGFmdGVyIGNhdGNoaW5nIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sIHRvXG4gICAgICAgZW5zdXJlIHRoZXJlIGlzIG5vIGludGVydmVuaW5nIGNvZGUgdGhhdCBpbnRlcmZlcmVzIHdpdGggdGhlIGdsb2JhbCBiYWNrdHJhY2VcbiAgICAgICBzdGF0ZS4gKilcbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgIEVycm9yIChleG4sIGJhY2t0cmFjZSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgZXh0ZXJuYWwgZm9ybWF0IDogZmxvYXQgLT4gc3RyaW5nIC0+IHN0cmluZyA9IFwiY29yZV90aW1lX25zX2Zvcm1hdFwiXG5cbiAgKCogV2UgdXNlIGEgbW9yZSBwbGVhc2FudCBmb3JtYXQgdGhhbiBbQ29yZS5UaW1lX25zLnNleHBfb2ZfdF0sXG4gICAgIHdoaWNoIGhhcyB0byBiZSBtZXNzaWVyIGZvciByb3VuZCB0cmlwcGFiaWxpdHkuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgWyVzZXhwXG4gICAgICAoZm9ybWF0ICh0IHw+IHRvX3NwYW5fc2luY2VfZXBvY2ggfD4gU3Bhbi50b19zZWMpIFwiJVktJW0tJWRUJUg6JU06JVMlelwiIDogc3RyaW5nKV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1pbmdfd2hlZWwuQWxhcm1cblxuICBsZXQgaXNfbnVsbCB0ID0gcGh5c19lcXVhbCB0IChudWxsICgpKVxuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gPSBUaW1pbmdfd2hlZWwuQWxhcm1fcHJlY2lzaW9uXG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAoKiAxLzh0aCBvZiBhIG1pbGxpc2Vjb25kIGFsYXJtX3ByZWNpc2lvbiBzZWVtcyBzdWZmaWNpZW50IHRvIGF2b2lkIGhhdmluZyBtYW55IGFsYXJtc1xuICAgICBpbiB0aGUgc2FtZSBpbnRlcnZhbCwgd2hpY2ggYXZvaWRzIHF1YWRyYXRpYyBpbnNlcnRpb24gc29ydCB3aGVuIGZpcmluZyBhbGFybXMuICBBbmRcbiAgICAgdGhlIGxldmVsIGJpdHMgZ2l2ZSB1cyBsZXZlbHMgb2YgPjFzLCA+MW0sID4xaCwgPjFkLiAgU2VlIHRlc3QgaW5cbiAgICAgWy4uL3Rlc3QvdGVzdF9zeW5jaHJvbm91c190aW1lX3NvdXJjZS5tbF0uICopXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvbjpBbGFybV9wcmVjaXNpb24uKGRpdiBhYm91dF9vbmVfbWlsbGlzZWNvbmQgfnBvdzI6MylcbiAgICB+bGV2ZWxfYml0czooVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEzOyA2OyA2OyA1IF0pXG4gICAgKClcbjs7XG5cbnR5cGUgY2FsbGJhY2sgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIElkID0gVHlwZXMuVGltZV9zb3VyY2VfaWRcblxubW9kdWxlIFQxID0gc3RydWN0XG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LlN0YXR1cy50ID1cbiAgICAgICAgfCBGaXJlZCAoKiBpbiBbZmlyZWRfZXZlbnRzXSwgcmVhZHkgdG8gcnVuICopXG4gICAgICAgIHwgSGFwcGVuaW5nICgqIGN1cnJlbnRseSBydW5uaW5nIHRoZSBjYWxsYmFjayAqKVxuICAgICAgICB8IFNjaGVkdWxlZCAoKiBpbiB0aGUgdGltaW5nIHdoZWVsICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQgKCogbm90IGluIHRpbWluZyB3aGVlbCBvciBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICAgIGxldCB0cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXyA9XG4gICAgICAgIG1hdGNoIGZyb20sIHRvXyB3aXRoXG4gICAgICAgIHwgRmlyZWQsIEhhcHBlbmluZyAoKiBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKilcbiAgICAgICAgfCBGaXJlZCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICAoKiBbcmVzY2hlZHVsZV8qXSBnb2VzIHRocm91Z2ggYW4gaW50ZXJtZWRpYXRlIFtGaXJlZCwgVW5zY2hlZHVsZWRdIHN0YXRlLFxuICAgICAgICAgICBzbyB3ZSBuZXZlciB0cmFuc2l0aW9uIGZyb20gW0ZpcmVkXSBkaXJlY3RseSB0byBbU2NoZWR1bGVkXS4gKilcbiAgICAgICAgfCBIYXBwZW5pbmcsIFNjaGVkdWxlZCAoKiBmb3IgcmVwZWF0aW5nIGV2ZW50cyAqKVxuICAgICAgICB8IEhhcHBlbmluZywgVW5zY2hlZHVsZWQgKCogZXZlbnQgY2FsbGJhY2sgZmluaXNoZWQgKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIEZpcmVkICgqIG1vdmVkIGZyb20gdGltaW5nIHdoZWVsIHRvIFtmaXJlZF9ldmVudHNdICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIEZpcmVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgcGFzdCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBTY2hlZHVsZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBmdXR1cmUgKikgLT4gdHJ1ZVxuICAgICAgICB8IChGaXJlZCB8IEhhcHBlbmluZyB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkKSwgXyAtPiBmYWxzZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgZXZlbnQgPSBUeXBlcy5FdmVudC50XG5cbiAgICBsZXQgc2V4cF9vZl9ldmVudFxuICAgICAgICAgICh7IGFsYXJtID0gX1xuICAgICAgICAgICA7IGF0XG4gICAgICAgICAgIDsgY2FsbGJhY2sgPSBfXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBfXG4gICAgICAgICAgIDsgaW50ZXJ2YWxcbiAgICAgICAgICAgOyBuZXh0X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHByZXZfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgc3RhdHVzXG4gICAgICAgICAgIH0gOlxuICAgICAgICAgICAgIGV2ZW50KVxuICAgICAgPVxuICAgICAgWyVzZXhwXG4gICAgICAgIHsgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgOyBhdCA6IFRpbWVfbnMudFxuICAgICAgICA7IGludGVydmFsIDogKFRpbWVfbnMuU3Bhbi50IG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgICAoKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0XG4gICAgICAgICB0byBbT2JqLm1hZ2ljXXMuICopXG4gICAgICBtb2R1bGUgRXZlbnRfaXNfYmxvY2sgOiBzaWcgZW5kID0gc3RydWN0XG4gICAgICAgIG9wZW4gVHlwZXNcbiAgICAgICAgb3BlbiBFdmVudFxuXG4gICAgICAgIHR5cGUgX3QgPSB0ID1cbiAgICAgICAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICAgICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgICAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5PcHRpb24udFxuXG4gICAgICAoKiBVc2luZyBhbiBpbW1lZGlhdGUgcmF0aGVyIHRoYW4gYSBzdGF0aWNhbGx5LWFsbG9jYXRlZCByZWNvcmQgaGVyZSBzZWVtcyB0b1xuICAgICAgICAgaW1wcm92ZSBwZXJmb3JtYW5jZSBub3RpY2VhYmx5IChbLi4vYmVuY2gvYmluL2JlbmNoX3RpbWVfc291cmNlLmV4ZV0gYmVuY2htYXJrXG4gICAgICAgICBpcyBmYXN0ZXIgYnkgfjEwbnMgcGVyIGFsYXJtKSwgcHJlc3VtYWJseSBiZWNhdXNlIGl0IGF2b2lkcyB0aGUgZXhwZW5zaXZlXG4gICAgICAgICBwYXJ0cyBvZiBjYW1sX21vZGlmeS4gKilcbiAgICAgIGxldCBub25lID0gKE9iai5tYWdpYyBOb25lIDogdCkgKCogYW4gYXJiaXRyYXJ5IGltbWVkaWF0ZSAqKVxuXG4gICAgICBsZXQgc29tZSA9IChPYmoubWFnaWMgOiBUeXBlcy5FdmVudC50IC0+IHQpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gcGh5c19lcXVhbCB0IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBmaXJzdF9zb21lIHQxIHQyID0gaWYgaXNfc29tZSB0MSB0aGVuIHQxIGVsc2UgdDJcblxuICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IChPYmoubWFnaWMgOiB0IC0+IFR5cGVzLkV2ZW50LnQpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG9wZW4gT3B0aW9uYWxfc3ludGF4XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gWyVzZXhwICgpXVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gWyVzZXhwIChldmVudCA6IGV2ZW50KV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICAgIHwgU29tZSBldmVudCAtPiBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCBcIltTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5PcHRpb24udmFsdWVfZXhuIE5vbmVdXCJdXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBTb21lIGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IHNvbWUgZXZlbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC50ID1cbiAgICAgIHsgKCogW2FsYXJtXSBpcyBub24tbnVsbCBpZmYgdGhlIGV2ZW50IGlzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gICAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICA7ICgqIFtpbnRlcnZhbF0gaXMgdGhlIHBlcmlvZCBmb3IgdGhlIHBlcmlvZGljIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgICAgOyAoKiBbbmV4dF9maXJlZF0gYW5kIFtwcmV2X2ZpcmVkXSBjcmVhdGUgYSBkb3VibHktbGlua2VkIChub24tY2lyY3VsYXIpIGxpc3Qgb2ZcbiAgICAgICAgICAgZmlyZWQgZXZlbnRzLCBsaW5rZWQgdmlhIHRoZXNlIGZpZWxkcy4gQW4gZXZlbnQgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgd2hlblxuICAgICAgICAgICBpdCBmaXJlcywgZWl0aGVyIGJlY2F1c2UgaXQgaXMgYWRkZWQgd2l0aCBhIHRpbWUgaW4gdGhlIHBhc3QsIG9yXG4gICAgICAgICAgIGJlY2F1c2UgdGltZSBhZHZhbmNlcy4gW2FkdmFuY2VfYnlfYWxhcm1zXSBpdGVyYXRlcyBvdmVyIHRoZSBldmVudHNcbiAgICAgICAgICAgaW4gW25leHRfZmlyZWRdIGFuZCBydW5zIHRoZW0sIGVtcHR5aW5nIHRoZSBsaXN0LiBbbm9uZV0gaXMgdXNlZCB0b1xuICAgICAgICAgICBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSBsaW5rZWQgbGlzdCBvZiBmaXJlZCBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gWyVzZXhwX29mOiBldmVudF1cblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgICAgfmFsYXJtOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgICAgIChBbGFybS5pc19udWxsIGFsYXJtKVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRmlyZWQgfCBIYXBwZW5pbmcgfCBVbnNjaGVkdWxlZCAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHwgU2NoZWR1bGVkIC0+IGZhbHNlKSkpXG4gICAgICAgICAgfmF0Omlnbm9yZVxuICAgICAgICAgIH5jYWxsYmFjazppZ25vcmVcbiAgICAgICAgICB+ZXhlY3V0aW9uX2NvbnRleHQ6aWdub3JlXG4gICAgICAgICAgfmludGVydmFsOmlnbm9yZVxuICAgICAgICAgIH5uZXh0X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKG5leHRfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtuZXh0X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgZW5kIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgbmV4dF9maXJlZC5wcmV2X2ZpcmVkKSkpXG4gICAgICAgICAgfnByZXZfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAocHJldl9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW3ByZXZfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBwcmV2X2ZpcmVkLm5leHRfZmlyZWQpKSlcbiAgICAgICAgICB+c3RhdHVzOmlnbm9yZSlcbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXMgdCB0b18gPVxuICAgICAgbGV0IGZyb20gPSB0LnN0YXR1cyBpblxuICAgICAgaWYgbm90IChTdGF0dXMudHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18pXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFslaGVyZV1cbiAgICAgICAgICAgICAgXCJidWcgLS0gc2V0X3N0YXR1cyB0cmFuc2l0aW9uIG5vdCBhbGxvd2VkXCJcbiAgICAgICAgICAgICAgKGZyb20gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgKHRvXyA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICB+ZXZlbnQ6KHQgOiB0KV07XG4gICAgICB0LnN0YXR1cyA8LSB0b19cbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXNfaWYgfmlzIHQgdG9fID0gaWYgU3RhdHVzLmVxdWFsIGlzIHQuc3RhdHVzIHRoZW4gc2V0X3N0YXR1cyB0IHRvX1xuICAgIGxldCBzY2hlZHVsZWRfYXQgPSBhdFxuICBlbmRcblxuICBtb2R1bGUgSm9iX29yX2V2ZW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBKb2Jfb3JfZXZlbnRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgIGxldCAoSyBrKSA9IGtpbmQgdCBpblxuICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIHQgd2l0aFxuICAgICAgfCBFdmVudCwgZXZlbnQgLT4gWyVzZXhwIChldmVudCA6IEV2ZW50LnQpXVxuICAgICAgfCBKb2IsIF8gLT5cbiAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgIFslbWVzc2FnZSBcIjxKb2IudD5cIl1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlIC0ncncgdCA9ICdydyBUeXBlcy5UaW1lX3NvdXJjZS50MSA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7ICgqIFthZHZhbmNlX2Vycm9yc10gYWNjdW11bGF0ZXMgZXJyb3JzIHJhaXNlZCBieSBhbGFybXMgcnVuIGJ5XG4gICAgICAgICBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgKCogW2FtX2FkdmFuY2luZ10gaXMgdHJ1ZSBvbmx5IGR1cmluZyBbYWR2YW5jZV9ieV9hbGFybXNdLCBhbmQgaXMgdXNlZCB0byBjYXVzZVxuICAgICAgICAgY2FsbGJhY2tzIHRvIHJhaXNlIGlmIHRoZXkgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgKCogW2ZpcmVkX2V2ZW50c10gaXMgdGhlIGZyb250IG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLFxuICAgICAgICAgd2hpY2ggaXMgc3RvcmVkIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW0V2ZW50LmF0XS4gKilcbiAgICAgIG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFttb3N0X3JlY2VudGx5X2ZpcmVkXSBpcyB0aGUgZXZlbnQgdGhhdCB3YXMgbW9zdCByZWNlbnRseSBpbnNlcnRlZCBpbnRvXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gSXQgaXMgdXNlZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gYWxsb3cgaW5zZXJ0aW9uIG9mXG4gICAgICAgICBzdWJzZXF1ZW50IGV2ZW50cyB0byBzdGFydCBsYXRlciBpbiB0aGUgbGlzdCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgSXQgc3BlY2lmaWNhbGx5IGF2b2lkcyBxdWFkcmF0aWMgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgbXVsdGlwbGUgZXZlbnRzXG4gICAgICAgICB0aGF0IGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0aW1lIC0tIHRoZSB0aW1lIHNvdXJjZSBmaXJlcyBzdWNoIGV2ZW50cyBpblxuICAgICAgICAgdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBpbiB0aGF0IHNhbWUgb3JkZXIgaW5cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiAqKVxuICAgICAgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFdlIHN0b3JlIFtoYW5kbGVfZmlyZWRdIGluIFt0XSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IGV2ZXJ5IHRpbWUgd2UgY2FsbFxuICAgICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgbGV0IG5vdyA9IFRpbWluZ193aGVlbC5ub3cgZXZlbnRzIGluXG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwid2FsbF9jbG9ja1wiIChub3cgOiBUaW1lX25zLnQpXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFsbF9ldmVudHMgPSByZWYgW10gaW5cbiAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgIGFsbF9ldmVudHMgOj0gKEFsYXJtLmF0IGV2ZW50cyBhbGFybSwgQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSA6OiAhYWxsX2V2ZW50cyk7XG4gICAgICBsZXQgZXZlbnRzID1cbiAgICAgICAgTGlzdC5zb3J0ICFhbGxfZXZlbnRzIH5jb21wYXJlOihmdW4gKGF0MSwgXykgKGF0MiwgXykgLT4gVGltZV9ucy5jb21wYXJlIGF0MSBhdDIpXG4gICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgaW5cbiAgICAgIFslbWVzc2FnZSBcIlwiIChub3cgOiBUaW1lX25zLnQpIChldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBsaXN0KV0pXG4gIDs7XG5cbiAgbGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcblxuICBsZXQgaXNfaW5fZmlyZWRfZXZlbnRzID1cbiAgICBsZXQgcmVjIHNlYXJjaCBjdXJyZW50IH50YXJnZXRfZXZlbnQgPVxuICAgICAgbWF0Y2glb3B0aW9uYWwgKGN1cnJlbnQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgY3VycmVudCAtPlxuICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnQgdGFyZ2V0X2V2ZW50IHx8IHNlYXJjaCBjdXJyZW50Lm5leHRfZmlyZWQgfnRhcmdldF9ldmVudFxuICAgIGluXG4gICAgZnVuIHQgdGFyZ2V0X2V2ZW50IC0+IHNlYXJjaCB0LmZpcmVkX2V2ZW50cyB+dGFyZ2V0X2V2ZW50XG4gIDs7XG5cbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgKHR5cGUgcncpIH5qb2I6KGpvYl9pbnZhcmlhbnQgOiBKb2IudCAtPiB1bml0KSAodCA6IHJ3IHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+aWQ6aWdub3JlXG4gICAgICAgIH5hZHZhbmNlX2Vycm9yczppZ25vcmVcbiAgICAgICAgfmFtX2FkdmFuY2luZzppZ25vcmVcbiAgICAgICAgfmV2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBldmVudHMgLT5cbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaW52YXJpYW50IGlnbm9yZSBldmVudHM7XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0gaW5cbiAgICAgICAgICAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgICAgICAgICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBKb2IsIGpvYiAtPiBqb2JfaW52YXJpYW50IGpvYlxuICAgICAgICAgICAgICAgfCBFdmVudCwgZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGFsYXJtIGV2ZW50LmFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBldmVudC5hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBFdmVudC5TdGF0dXMudF0gZXZlbnQuc3RhdHVzIH5leHBlY3Q6U2NoZWR1bGVkO1xuICAgICAgICAgICAgICAgICBFdmVudC5pbnZhcmlhbnQgZXZlbnQpKSlcbiAgICAgICAgfmZpcmVkX2V2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIC0+XG4gICAgICAgICAgICAgbGV0IHJlYyBjaGVja19ldmVudCAoY3VycmVudCA6IEV2ZW50LnQpID1cbiAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KSk7XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gY3VycmVudC5uZXh0X2ZpcmVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0IG5leHQuYXQpO1xuICAgICAgICAgICAgICAgICBjaGVja19ldmVudCBuZXh0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gZmlyZWRfZXZlbnRzIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gY2hlY2tfZXZlbnQgZXZlbnQpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+aXNfd2FsbF9jbG9jazppZ25vcmVcbiAgICAgICAgfm1vc3RfcmVjZW50bHlfZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gYXNzZXJ0IChpc19pbl9maXJlZF9ldmVudHMgdCBldmVudCkpKVxuICAgICAgICB+c2NoZWR1bGVyOmlnbm9yZSlcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPSBpbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBfIC0+ICgpKSB0XG5lbmRcblxub3BlbiBUMVxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxubGV0IGlkIHQgPSB0LmlkXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbGVuZ3RoIHQgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIHQuZXZlbnRzXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID0gVGltaW5nX3doZWVsLm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdC5ldmVudHNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxuXG4oKiBbZmlyZSB0IGV2ZW50XSBzZXRzIFtldmVudC5zdGF0dXMgPSBGaXJlZF0gYW5kIGluc2VydHMgW2V2ZW50XSBpbnRvXG4gICBbdC5maXJlZF9ldmVudHNdIGluIHNvcnRlZCB0aW1lIG9yZGVyLiAqKVxubGV0IGZpcmUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgRmlyZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gIGxldCAoKSA9XG4gICAgKCogSWYgW2V2ZW50XSBiZWxvbmdzIGFmdGVyIFt0Lm1vc3RfcmVjZW50bHlfZmlyZWRdLCB0aGVuIHdlIHN0YXJ0IHRoZVxuICAgICAgIGluc2VydGlvbiB0aGVyZSByYXRoZXIgdGhhbiBhdCB0aGUgZnJvbnQgb2YgW3QuZmlyZWRfZXZlbnRzXS4gVGhpcyB3b3Jrc1xuICAgICAgIG5pY2VseSBpZiB3ZSdyZSBnZXR0aW5nIHRoZSBhbGFybXMgaW4gbm9uLWRlY3JlYXNpbmcgdGltZSBvcmRlciwgd2hpY2ggaXNcbiAgICAgICBjbG9zZSB0byB3aGF0IFtUaW1pbmdfd2hlZWxdIHByb3ZpZGVzIChhbHRob3VnaCBbVGltaW5nX3doZWVsXSBkb2Vzbid0XG4gICAgICAgZ3VhcmFudGVlIHRpbWUgb3JkZXJpbmcgZm9yIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsKS4gKilcbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCB3aGVuIFRpbWVfbnMuKCA8PSApIG1vc3RfcmVjZW50bHlfZmlyZWQuYXQgZXZlbnQuYXQgLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgbW9zdF9yZWNlbnRseV9maXJlZDtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbW9zdF9yZWNlbnRseV9maXJlZC5uZXh0X2ZpcmVkXG4gICAgfCBfIC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSB0LmZpcmVkX2V2ZW50c1xuICBpblxuICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnQ7XG4gICgqIFdlIHVzZSBbVGltZV9ucy4oIDw9ICldIHJhdGhlciB0aGFuIFs8XSBzbyB0aGF0IFtldmVudF0gaXMgYWRkZWQgYWZ0ZXIgb3RoZXJcbiAgICAgZXZlbnRzIGF0IHRoZSBzYW1lIHRpbWUuIFNpbmNlIFtUaW1pbmdfd2hlZWxdIGZpcmVzIGFsYXJtcyBpbiBhIGJ1Y2tldCBpblxuICAgICB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLCB1c2luZyBbPD1dIGtlZXBzIGV2ZW50cyBhdCB0aGUgc2FtZVxuICAgICB0aW1lIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuICopXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICBsZXQgY29udGludWUgPSBUaW1lX25zLiggPD0gKSBuZXh0LmF0IGV2ZW50LmF0IGluXG4gICAgICBpZiBjb250aW51ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZDtcbiAgICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBuZXh0Lm5leHRfZmlyZWQpO1xuICAgICAgY29udGludWVcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgaW5cbiAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG47O1xuXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcblxubGV0IG5leHRfYWxhcm1fcnVuc19hdCB0ID1cbiAgaWYgRXZlbnQuT3B0aW9uLmlzX3NvbWUgdC5maXJlZF9ldmVudHNcbiAgdGhlbiBTb21lICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gIGVsc2UgVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbjs7XG5cbmxldCBub3cgdCA9IGlmIHQuaXNfd2FsbF9jbG9jayB0aGVuIFRpbWVfbnMubm93ICgpIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG5sZXQgdGltaW5nX3doZWVsX25vdyA9IHRpbWluZ193aGVlbF9ub3dcblxubGV0IHNjaGVkdWxlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFNjaGVkdWxlZDtcbiAgZXZlbnQuYWxhcm0gPC0gVGltaW5nX3doZWVsLmFkZCB0LmV2ZW50cyB+YXQ6ZXZlbnQuYXQgKGV2ZW50IHw+IEpvYl9vcl9ldmVudC5vZl9ldmVudClcbjs7XG5cbmxldCByZW1vdmVfZnJvbV9maXJlZCB0IChldmVudCA6IEV2ZW50LnQpIH5uZXdfc3RhdHVzID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBldmVudCBtb3N0X3JlY2VudGx5X2ZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uZmlyc3Rfc29tZSBldmVudC5uZXh0X2ZpcmVkIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gZXZlbnQucHJldl9maXJlZFxuICBpblxuICBldmVudC5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IG5ld19zdGF0dXNcbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIEV2ZW50XG5cbiAgbGV0IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgIDsgYXRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgICA7IGludGVydmFsXG4gICAgOyBuZXh0X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHByZXZfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc3RhdHVzID0gVW5zY2hlZHVsZWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGFkZCB0IGV2ZW50ID1cbiAgICBpZiBUaW1lX25zLiggPD0gKSBldmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgIHRoZW4gZmlyZSB0IGV2ZW50XG4gICAgZWxzZSBzY2hlZHVsZSB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIGxldCBldmVudCA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrIGluXG4gICAgYWRkIHQgZXZlbnQ7XG4gICAgZXZlbnRcbiAgOztcblxuICBsZXQgYXQgdCBhdCBjYWxsYmFjayA9IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBhZnRlciB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0OihUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbikgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuID1cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gYWxhcm1fcHJlY2lzaW9uIHQgaW5cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8ICkgc3BhbiBhbGFybV9wcmVjaXNpb25cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW50ZXJ2YWwgc3BhbiBzbWFsbGVyIHRoYW4gYWxhcm0gcHJlY2lzaW9uXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXG4gICAgICAgICAgICAoYWxhcm1fcHJlY2lzaW9uIDogVGltZV9ucy5TcGFuLnQpXVxuICA7O1xuXG4gIGxldCBhdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDoobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKSB+Y2FsbGJhY2tcbiAgOztcblxuICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgQ3VycmVudGx5X2hhcHBlbmluZ1xuICAgICAgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgKGV2ZW50IDogdCkgOiBBYm9ydF9yZXN1bHQudCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEhhcHBlbmluZyAtPlxuICAgICAgKG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gQ3VycmVudGx5X2hhcHBlbmluZ1xuICAgICAgIHwgU29tZSAoXyA6IFRpbWVfbnMuU3Bhbi50KSAtPlxuICAgICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgICAgIE9rKVxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBPa1xuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFVuc2NoZWR1bGVkO1xuICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gICAgICBPa1xuICAgIHwgVW5zY2hlZHVsZWQgLT4gUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGV2ZW50ID0gaWdub3JlIChhYm9ydCB0IGV2ZW50IDogQWJvcnRfcmVzdWx0LnQpXG5cbiAgbGV0IGFib3J0X2V4biB0IGV2ZW50ID1cbiAgICBtYXRjaCBhYm9ydCB0IGV2ZW50IHdpdGhcbiAgICB8IE9rIC0+ICgpXG4gICAgfCByZWFzb24gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuYWJvcnRfZXhuXSBjYW5ub3QgYWJvcnQgZXZlbnRcIlxuICAgICAgICAgICAgKHJlYXNvbiA6IEFib3J0X3Jlc3VsdC50KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHQgY2FsbGJhY2sgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQ6VGltZV9ucy5lcG9jaCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCAoZXZlbnQgOiB0KSBhdCB+aW50ZXJ2YWwgPVxuICAgICgqIFtGaXJlZF0gaXMgZGlzYWxsb3dlZCB0byBwcmV2ZW50IHRoZSB1c2VyIGZyb20gZW50ZXJpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wLiAgVGhlXG4gICAgICAgdXNlciBjb3VsZCBzcGVjaWZ5IFthdF0gaW4gdGhlIHBhc3Qgd2hpY2ggd291bGQgY29uc3RhbnRseSBhZGQgW2NhbGxiYWNrXSB0byB0aGVcbiAgICAgICBiYWNrIG9mIFt0Lm5leHRfZmlyZWRdIGlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gW2NhbGxiYWNrXS4gKilcbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgKEhhcHBlbmluZyB8IFNjaGVkdWxlZCB8IEZpcmVkKSBhcyBzdGF0dXMgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVzZXhwIFwiY2Fubm90IHNjaGVkdWxlIGFuIGV2ZW50IHdpdGggc3RhdHVzXCIsIChzdGF0dXMgOiBFdmVudC5TdGF0dXMudCldXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBpbnRlcnZhbDtcbiAgICAgIGFkZCB0IGV2ZW50O1xuICAgICAgT2sgKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXQgdCBldmVudCBhdCA9IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgYXQgfmludGVydmFsOk5vbmVcbiAgbGV0IHNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG4gIGxldCBzY2hlZHVsZV9hdF9pbnRlcnZhbHMgdCBldmVudCBzcGFuID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IChub3cgdCkgfmludGVydmFsOihTb21lIHNwYW4pXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBldmVudCBhdCA6IHVuaXQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBGaXJlZCAtPlxuICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpVbnNjaGVkdWxlZDtcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IEhhcHBlbmluZyAtPlxuICAgICAgKCogSGFwcGVuaW5nIGV2ZW50cyBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gW2ZpcmVkXS4gKilcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBpZiBUaW1lX25zLiggPiApIGF0ICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICB0aGVuIFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIHQuZXZlbnRzIGV2ZW50LmFsYXJtIH5hdFxuICAgICAgZWxzZSAoXG4gICAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICAgIGZpcmUgdCBldmVudClcbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICBhZGQgdCBldmVudFxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbmVuZFxuXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbmxldCBydW5fYXQgdCBhdCBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYXQgdCBhdCBjYWxsYmFjayA6IEV2ZW50LnQpXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gIGlnbm9yZSAoRXZlbnQuYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG47O1xuXG50eXBlIHNlbmRfZXhuID0gTW9uaXRvcjAudCAtPiA/YmFja3RyYWNlOlsgYEdldCB8IGBUaGlzIG9mIEJhY2t0cmFjZS50IF0gLT4gZXhuIC0+IHVuaXRcblxubGV0IHJ1bl9maXJlZF9ldmVudHMgdCB+KHNlbmRfZXhuIDogc2VuZF9leG4gb3B0aW9uKSA9XG4gIGxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gdC5zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBpblxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsICh0LmZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAobWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICAgICB8IEhhcHBlbmluZyB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgRmlyZWQgLT5cbiAgICAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6SGFwcGVuaW5nO1xuICAgICAgICAgKCogV2Ugc2V0IHRoZSBleGVjdXRpb24gY29udGV4dCBzbyB0aGF0IFtldmVudC5jYWxsYmFja10gcnVucyBpbiB0aGUgc2FtZSBjb250ZXh0XG4gICAgICAgICAgICB0aGF0IHdhcyBpbiBwbGFjZSB3aGVuIFtldmVudF0gd2FzIGNyZWF0ZWQuICopXG4gICAgICAgICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBldmVudC5leGVjdXRpb25fY29udGV4dDtcbiAgICAgICAgICgqIEFueSBtb2RpZmljYXRpb24gb2YgW3N0YXR1c10gYmVsb3cgbmVlZHMgdG8gZmlyc3QgY2hlY2sgdGhhdCB0aGUgZXZlbnQgaXNcbiAgICAgICAgICAgIHN0aWxsIFtIYXBwZW5pbmddLiBJZiB0aGUgZXZlbnQgc3RhdHVzIGlzIG5vdCBbSGFwcGVuaW5nXSB0aGVuIHRoZSBldmVudCdzXG4gICAgICAgICAgICBjYWxsYmFjayBtdXN0IGhhdmUgcmVzY2hlZHVsZWQgdGhlIGV2ZW50LiBJbiB0aGF0IGNhc2UsIGRvIG5vdCBzZXQgdGhlIHN0YXR1c1xuICAgICAgICAgICAgb3IgYXR0ZW1wdCB0byByZXNjaGVkdWxlIGEgcmVwZWF0aW5nIGV2ZW50LlxuXG4gICAgICAgICAgICBUaGlzIGNvZGUgY291bGQgYmUgbXVjaCBzaW1wbGVyIGlmIHdlIGltbWVkaWF0ZWx5IHJlc2NoZWR1bGVkIHRoZSBldmVudCBiZWZvcmVcbiAgICAgICAgICAgIHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChubyBuZWVkIGZvciB0aGUgSGFwcGVuaW5nIHN0YXRlIHRoZW4pLiBPbmUgcmVhc29uIHdlXG4gICAgICAgICAgICBkb24ndCBkbyB0aGF0IGlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBhdXRvbWF0aWNhbGx5IHJlc2NoZWR1bGUgYSBwZXJpb2RpY1xuICAgICAgICAgICAgZXZlbnQgaWYgaXRzIGNhbGxiYWNrIHJhaXNlcy4gKilcbiAgICAgICAgIChtYXRjaCBldmVudC5jYWxsYmFjayAoKSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2VuZF9leG4gd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIEVycm9yLm9mX2V4biBleG4gOjogdC5hZHZhbmNlX2Vycm9yc1xuICAgICAgICAgICAgIHwgU29tZSBzZW5kX2V4biAtPlxuICAgICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgICAgICAgIHNlbmRfZXhuIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJhY2t0cmFjZSkpO1xuICAgICAgICAgICAgRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nIGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgfCAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nIGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAgfCBTb21lIGludGVydmFsIC0+XG4gICAgICAgICAgICAgICBpZiBFdmVudC5TdGF0dXMuZXF1YWwgSGFwcGVuaW5nIGV2ZW50LnN0YXR1c1xuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICgqIFRoZSBldmVudCdzIGNhbGxiYWNrIGRpZCBub3QgcmVzY2hlZHVsZSB0aGUgZXZlbnQuIFNvIHJlc2NoZWR1bGUgdGhlXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdGluZyB0aW1lciBiYXNlZCBvbiB0aGUgbGFzdCBbYXRdIHRpbWUuICopXG4gICAgICAgICAgICAgICAgIGV2ZW50LmF0XG4gICAgICAgICAgICAgICAgIDwtIFRpbWVfbnMubmV4dF9tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgfmJhc2U6ZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgICAgICB+YWZ0ZXI6KHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgICAgICAgICAgICAgICAgICB+aW50ZXJ2YWw7XG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlIHQgZXZlbnQpKSk7XG4gICAgICAgICB0cnVlKVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayB0LmV2ZW50cyB+dG9fIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgdC5ldmVudHMgfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4biA9XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxuOztcblxubGV0IHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4biA9XG4gIGlmIHQuYW1fYWR2YW5jaW5nXG4gIHRoZW5cbiAgICByYWlzZV9zIFslc2V4cCBcImNhbm5vdCBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10gb3IgW2FkdmFuY2VfZGlyZWN0bHldIGZyb20gY2FsbGJhY2tcIl07XG4gIHQuYW1fYWR2YW5jaW5nIDwtIHRydWU7XG4gIChtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgIHwgW10gLT4gKClcbiAgIHwgXyAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdKTtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpbmlzaF9hZHZhbmNpbmcgdCA9XG4gIHQuYW1fYWR2YW5jaW5nIDwtIGZhbHNlO1xuICBtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiBPayAoKVxuICB8IGVycm9ycyAtPlxuICAgIHQuYWR2YW5jZV9lcnJvcnMgPC0gW107XG4gICAgRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJyb3JzKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWUgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXzptaW5fYWxhcm1fdGltZSB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dF9hbGFybV9maXJlc19hdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbmV4dF9hbGFybV9maXJlc19hdCB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWxcbiAgICAgICAgICB0XG4gICAgICAgICAgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpXG4gICAgICAgICAgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgZHVyYXRpb25fb2YgdCBmID1cbiAgbGV0IHN0YXJ0ID0gbm93IHQgaW5cbiAgbGV0IHJlc3VsdCA9IGYgKCkgaW5cbiAgbGV0IGR1cmF0aW9uID0gVGltZV9ucy5kaWZmIChub3cgdCkgc3RhcnQgaW5cbiAgcmVzdWx0LCBkdXJhdGlvblxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgdCA9XG4gIFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHNcbjs7XG5cbmxldCBoYXNfZXZlbnRzX3RvX3J1biB0ID0gRXZlbnQuT3B0aW9uLmlzX3NvbWUgdC5maXJlZF9ldmVudHNcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyMFxubW9kdWxlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwXG5tb2R1bGUgRXZlbnQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudFxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5tb2R1bGUgSm9iX29yX2V2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEuSm9iX29yX2V2ZW50XG5cbmxldCBkZWJ1ZyA9IERlYnVnLnNjaGVkdWxlclxuXG5tb2R1bGUgSXZhciA9IHN0cnVjdFxuICBvcGVuIFR5cGVzLkl2YXJcblxuICBsZXQgY3JlYXRlX3dpdGhfY2VsbCBjZWxsID0geyBjZWxsIH1cbiAgbGV0IGNyZWF0ZSAoKSA9IGNyZWF0ZV93aXRoX2NlbGwgRW1wdHlcblxuICBsZXQgY3JlYXRlX2Z1bGwgKHR5cGUgYSkgKGEgOiBhKSA9XG4gICAgKCogV2UgYWxsb2NhdGUgYW4gaW1tdXRhYmxlIGl2YXIgYW5kIHRoZW4gY2FzdCBpdCB0byBhIG11dGFibGUgaXZhci4gIFRoZSBpbW11dGFiaWxpdHlcbiAgICAgICBhbGxvd3MgT0NhbWwgdG8gc3RhdGljYWxseSBhbGxvY2F0ZSB0aGUgaXZhciBpZiBbYV0gaXMgY29uc3RhbnQuICBUaGlzIGNhc3QgaXMgc2FmZVxuICAgICAgIGJlY2F1c2UgYSBmdWxsIGl2YXIgaXMgbmV2ZXIgbXV0YXRlZC4gIFdlIGFsc28gYmVsaWV2ZSB0aGF0IHdlIHdpbGwgbm90IHRyaWdnZXJcbiAgICAgICBmbGFtYmRhIHRvIHNwdXJpb3VzbHkgcmVwb3Igd2FybmluZyA1OSwgbXV0YXRpb24gb2Yga25vd24gaW1tdXRhYmxlIGRhdGEuICBBbGxcbiAgICAgICBtdXRhdGlvbnMgb2YgYW4gaXZhciBjZWxsLCBpLmUuIFtmb28uY2VsbCA8LSAuLi5dLCBhcmUgZGlyZWN0bHkgcHJlY2VkZWQgYnkgYVxuICAgICAgIFttYXRjaCBmb28uY2VsbF0gdGhhdCBwcmV2ZW50cyB0aGUgW0Z1bGxdIGNhc2UgZnJvbSByZWFjaGluZyB0aGUgbW9kaWZpY2F0aW9uLiAgU29cbiAgICAgICBmbGFtYmRhIHNob3VsZCBhbHdheXMgZWxpbWluYXRlIHRoZSBbZm9vLmNlbGwgPC0gLi4uXSBvZiBhIGNvbnN0YW50IFtGdWxsXSBpdmFyLFxuICAgICAgIGFuZCBub3Qgd2Fybi4gKilcbiAgICAoT2JqLm1hZ2ljIDogYSBJbW11dGFibGUudCAtPiBhIHQpIHsgY2VsbCA9IEZ1bGwgYSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIEJ2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5CdmFyXG5cbiAgbGV0IGNyZWF0ZSAoKSA9IG9mX3JlcHIgeyBoYXNfYW55X3dhaXRlcnMgPSBmYWxzZTsgaXZhciA9IEl2YXIuY3JlYXRlICgpIH1cbmVuZFxuXG5tb2R1bGUgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyID0gc3RydWN0XG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5FeGVjX3Jlc3VsdC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgTm90X2ZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSB0ID0gVHlwZXMuVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXIgfmV4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpIH5leGVjOmlnbm9yZSlcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBTY2hlZHVsZXIwLnQgPVxuICB7ICgqIFtjaGVja19hY2Nlc3NdIG9wdGlvbmFsbHkgaG9sZHMgYSBmdW5jdGlvbiB0byBydW4gdG8gY2hlY2sgd2hldGhlciBhY2Nlc3MgdG8gW3RdIGlzXG4gICAgICAgY3VycmVudGx5IGFsbG93ZWQuICBJdCBpcyB1c2VkIHRvIGRldGVjdCBpbnZhbGlkIGFjY2VzcyB0byB0aGUgc2NoZWR1bGVyIGZyb20gYVxuICAgICAgIHRocmVhZC4gKilcbiAgICBtdXRhYmxlIGNoZWNrX2FjY2VzcyA6ICh1bml0IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICA7IGxvd19wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICA7IG11dGFibGUgbWFpbl9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICgqIFRoZSBzY2hlZHVsZXIgY2FsbHMgW2dvdF91bmNhdWdodF9leG5dIHdoZW4gYW4gZXhjZXB0aW9uIGJ1YmJsZXMgdG8gdGhlIHRvcCBvZiB0aGVcbiAgICAgbW9uaXRvciB0cmVlIHdpdGhvdXQgYmVpbmcgaGFuZGxlZC4gIFRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0byBuZXZlciBydW4gYW5vdGhlclxuICAgICBqb2IgYWZ0ZXIgdGhpcyBieSBjYWxsaW5nIFtjbGVhcl0gYW5kIGJlY2F1c2UgW2VucXVldWVfam9iXSB3aWxsIG5ldmVyIGFkZCBhbm90aGVyXG4gICAgIGpvYi4gKilcbiAgOyBtdXRhYmxlIHVuY2F1Z2h0X2V4biA6IChFeG4udCAqIFNleHAudCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICA7IG11dGFibGUgY3ljbGVfc3RhcnQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIGluX2N5Y2xlIDogYm9vbFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSBsaXN0XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGxpc3RcbiAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50XG4gICgqIFtleHRlcm5hbF9qb2JzXSBpcyBhIHF1ZXVlIG9mIGFjdGlvbnMgc2VudCBmcm9tIG91dHNpZGUgb2YgYXN5bmMuICBUaGlzIGlzIGZvciB0aGVcbiAgICAgY2FzZSB3aGVyZSB3ZSB3YW50IHRvIHNjaGVkdWxlIGEgam9iIG9yIGZpbGwgYW4gaXZhciBmcm9tIGEgY29udGV4dCB3aGVyZSBpdCBpcyBub3RcbiAgICAgc2FmZSB0byBydW4gYXN5bmMgY29kZSwgYmVjYXVzZSB0aGUgYXN5bmMgbG9jayBpc24ndCBoZWxkLiAgRm9yIGluc3RhbmNlOiAtIGluIGFuXG4gICAgIE9DYW1sIGZpbmFsaXplciwgYXMgdGhleSBjYW4gcnVuIGF0IGFueSB0aW1lIGluIGFueSB0aHJlYWQuXG5cbiAgICAgVGhlIHdheSB0byBkbyBpdCBpcyB0byBxdWV1ZSBhIHRodW5rIGluIFtleHRlcm5hbF9qb2JzXSBhbmQgY2FsbFxuICAgICBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIHRoZSBzY2hlZHVsZXJcbiAgICAgdGhhdCBuZXcgYWN0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG4gICAgIFdoZW4gdXNpbmcgQXN5bmMgb24gdW5peCwgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBpcyBzZXQgaW4gW0FzeW5jX3VuaXhdXG4gICAgIHRvIGNhbGwgW0ludGVycnVwdG9yLnRocmVhZF9zYWZlX2ludGVycnVwdF0sIHdoaWNoIHdpbGwgd2FrZSB1cCB0aGVcbiAgICAgW0FzeW5jX3VuaXhdIHNjaGVkdWxlciBhbmQgcnVuIGEgY3ljbGUuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaG9vayBtaWdodCBiZSB1c2VkIGluIG90aGVyIGNvbnRleHQgKGpzX29mX29jYW1sLCBtaXJhZ2UpLlxuXG4gICAgIFdoZW4gcnVubmluZyBhIGN5Y2xlLCB3ZSBwdWxsIGV4dGVybmFsIGFjdGlvbnMgYXQgZXZlcnkgam9iIGFuZCBwZXJmb3JtIHRoZW1cbiAgICAgaW1tZWRpYXRlbHkuICopXG4gIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICgqIFtqb2JfcXVldWVkX2hvb2tdIGFuZCBbZXZlbnRfYWRkZWRfaG9va10gYWltIHRvIGJlIHVzZWQgYnkganNfb2Zfb2NhbWwuICopXG4gICgqIFdlIHVzZSBbXyBvcHRpb25dIGhlcmUgYmVjYXVzZSB0aG9zZSBob29rcyB3aWxsIG5vdCBiZSBzZXQgaW4gdGhlIGNvbW1vbiBjYXNlXG4gICAgIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGV4dHJhIGZ1bmN0aW9uIGNhbGxzLiAqKVxuICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIHlpZWxkIDogKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSlcbiAgOyBtdXRhYmxlIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDpcbiAgICAgICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0gKCogY29uZmlndXJhdGlvbiopKVxuICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgOyBtdXRhYmxlIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudFxuICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4bl91bndyYXBwZWQgPSB1bmNhdWdodF9leG5cblxubGV0IHVuY2F1Z2h0X2V4biB0ID1cbiAgbWF0Y2ggdC51bmNhdWdodF9leG4gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGV4biwgc2V4cCkgLT5cbiAgICBTb21lIChFcnJvci5jcmVhdGUgXCJ1bmhhbmRsZWQgZXhjZXB0aW9uXCIgKGV4biwgc2V4cCkgWyVzZXhwX29mOiBFeG4udCAqIFNleHAudF0pXG47O1xuXG5sZXQgbnVtX3BlbmRpbmdfam9icyB0ID1cbiAgSm9iX3F1ZXVlLmxlbmd0aCB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzICsgSm9iX3F1ZXVlLmxlbmd0aCB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuIHQgPVxuICBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgKyBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBsYXN0X2N5Y2xlX251bV9qb2JzIHQgPSB0Lmxhc3RfY3ljbGVfbnVtX2pvYnNcblxubGV0IHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbCB+c3VibGlzdDpzbWFsbCBsYXJnZSA9XG4gIGxldCByZW1vdmUgbCB4ID1cbiAgICBtYXRjaCBMaXN0LnNwbGl0X3doaWxlIGwgfmY6KGZ1biB5IC0+IG5vdCAoZXF1YWwgeSB4KSkgd2l0aFxuICAgIHwgXywgW10gLT4gTm9uZVxuICAgIHwgbCwgXyA6OiByIC0+IFNvbWUgKGwgQCByKVxuICBpblxuICBPcHRpb24uaXNfc29tZVxuICAgIChMaXN0LmZvbGQgc21hbGwgfmluaXQ6KFNvbWUgbGFyZ2UpIH5mOihmdW4gYWNjIHggLT5cbiAgICAgICBPcHRpb24uYmluZCBhY2MgfmY6KGZ1biBsIC0+IHJlbW92ZSBsIHgpKSlcbjs7XG5cbmxldCBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCB0YWJsZSBsaXN0ID1cbiAgKCogWW91IGNhbiBpbiBmYWN0IGhhdmUgaG9va3MgaW4gdGhlIGxpc3QgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgZW50cnkgaW5cbiAgICAgdGhlIHRhYmxlLiBTdWNoIGhvb2tzIGNhbiBuZXZlciBiZSByZW1vdmVkLiAqKVxuICBhc3NlcnQgKHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbDpwaHlzX2VxdWFsIH5zdWJsaXN0OihIYXNodGJsLmRhdGEgdGFibGUpIGxpc3QpXG47O1xuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNoZWNrX2FjY2VzczppZ25vcmVcbiAgICAgIH5qb2JfcG9vbDooY2hlY2sgSm9iX3Bvb2wuaW52YXJpYW50KVxuICAgICAgfm5vcm1hbF9wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfmxvd19wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIHEgLT4gRGVxdWUuaXRlciBxIH5mOlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5pbnZhcmlhbnQpKVxuICAgICAgfm1haW5fZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+dW5jYXVnaHRfZXhuOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bmNhdWdodF9leG4gLT5cbiAgICAgICAgICAgaWYgaXNfc29tZSB1bmNhdWdodF9leG4gdGhlbiBhc3NlcnQgKG51bV9wZW5kaW5nX2pvYnMgdCA9IDApKSlcbiAgICAgIH5jeWNsZV9jb3VudDooY2hlY2sgKGZ1biBjeWNsZV9jb3VudCAtPiBhc3NlcnQgKGN5Y2xlX2NvdW50ID49IDApKSlcbiAgICAgIH5jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5pbl9jeWNsZTppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnRcbiAgICAgICAgICAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVcbiAgICAgICAgICAgICB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCkpXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZDppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kKSlcbiAgICAgIH5sYXN0X2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+dG90YWxfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH5sYXN0X2N5Y2xlX251bV9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBsYXN0X2N5Y2xlX251bV9qb2JzIC0+IGFzc2VydCAobGFzdF9jeWNsZV9udW1fam9icyA+PSAwKSkpXG4gICAgICB+dGltZV9zb3VyY2U6XG4gICAgICAgIChjaGVja1xuICAgICAgICAgICAoU3luY2hyb25vdXNfdGltZV9zb3VyY2UuUmVhZF93cml0ZS5pbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBqb2IgLT5cbiAgICAgICAgICAgICAgYXNzZXJ0IChQb29sLnBvaW50ZXJfaXNfdmFsaWQgdC5qb2JfcG9vbCBqb2IpKSkpXG4gICAgICB+ZXh0ZXJuYWxfam9iczppZ25vcmVcbiAgICAgIH50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vazppZ25vcmVcbiAgICAgIH5qb2JfcXVldWVkX2hvb2s6aWdub3JlXG4gICAgICB+ZXZlbnRfYWRkZWRfaG9vazppZ25vcmVcbiAgICAgIH55aWVsZDppZ25vcmVcbiAgICAgIH55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbjppZ25vcmVcbiAgICAgIH5jaGVja19pbnZhcmlhbnRzOmlnbm9yZVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOmlnbm9yZVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IHQpXVxuOztcblxubGV0IGZyZWVfam9iIHQgam9iID0gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG5cbmxldCBlbnF1ZXVlIHQgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCkgZiBhID1cbiAgKCogSWYgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4biwgd2UgZG9uJ3QgYWRkIHRoZSBqb2IsIHNpbmNlIHdlIGRvbid0IHdhbnQgYW55IGpvYnNcbiAgICAgdG8gcnVuIG9uY2UgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4bi4gKilcbiAgaWYgaXNfbm9uZSB0LnVuY2F1Z2h0X2V4blxuICB0aGVuIChcbiAgICBsZXQgcHJpb3JpdHkgPSBleGVjdXRpb25fY29udGV4dC5wcmlvcml0eSBpblxuICAgIGxldCBqb2JfcXVldWUgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkgd2l0aFxuICAgICAgfCBOb3JtYWwgLT4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgfCBMb3cgLT4gdC5sb3dfcHJpb3JpdHlfam9ic1xuICAgIGluXG4gICAgSm9iX3F1ZXVlLmVucXVldWUgam9iX3F1ZXVlIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBtYXRjaCB0LmpvYl9xdWV1ZWRfaG9vayB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT4gZiBwcmlvcml0eSlcbjs7XG5cbmxldCBlbnF1ZXVlX2pvYiB0IGpvYiB+ZnJlZV9qb2IgPVxuICBsZXQgam9iX3Bvb2wgPSB0LmpvYl9wb29sIGluXG4gIGVucXVldWVcbiAgICB0XG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDApXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDEpXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDIpO1xuICBpZiBmcmVlX2pvYiB0aGVuIFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuOztcblxubGV0IGhhbmRsZV9maXJlZCAodGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQpIGpvYl9vcl9ldmVudCA9XG4gIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgfCBKb2IsIGpvYiAtPiBlbnF1ZXVlX2pvYiB0aW1lX3NvdXJjZS5zY2hlZHVsZXIgam9iIH5mcmVlX2pvYjp0cnVlXG4gIHwgRXZlbnQsIGV2ZW50IC0+IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLmZpcmUgdGltZV9zb3VyY2UgZXZlbnRcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgbGV0IHJlYyB0ID1cbiAgICB7IGNoZWNrX2FjY2VzcyA9IE5vbmVcbiAgICA7IGpvYl9wb29sID0gSm9iX3Bvb2wuY3JlYXRlICgpXG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGxvd19wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA9IERlcXVlLmNyZWF0ZSAoKVxuICAgIDsgbWFpbl9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyB1bmNhdWdodF9leG4gPSBOb25lXG4gICAgOyBjeWNsZV9zdGFydCA9IG5vd1xuICAgIDsgY3ljbGVfY291bnQgPSAwXG4gICAgOyBpbl9jeWNsZSA9IGZhbHNlXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnQgPSBbXVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZSlcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmQgPSBbXVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBsYXN0X2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IGxhc3RfY3ljbGVfbnVtX2pvYnMgPSAwXG4gICAgOyB0b3RhbF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgZXh0ZXJuYWxfam9icyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPSBpZ25vcmVcbiAgICA7IGpvYl9xdWV1ZWRfaG9vayA9IE5vbmVcbiAgICA7IGV2ZW50X2FkZGVkX2hvb2sgPSBOb25lXG4gICAgOyB5aWVsZCA9IEJ2YXIuY3JlYXRlICgpXG4gICAgOyB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA9IEJ2YXIuY3JlYXRlICgpICgqIGNvbmZpZ3VyYXRpb24gKilcbiAgICA7IGNoZWNrX2ludmFyaWFudHMgPSBBc3luY19rZXJuZWxfY29uZmlnLmNoZWNrX2ludmFyaWFudHNcbiAgICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgICAgQXN5bmNfa2VybmVsX2NvbmZpZy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBBc3luY19rZXJuZWxfY29uZmlnLnJlY29yZF9iYWNrdHJhY2VzXG4gICAgfVxuICBhbmQgZXZlbnRzID1cbiAgICBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6QXN5bmNfa2VybmVsX2NvbmZpZy50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydDpub3dcbiAgYW5kIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gdHJ1ZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgaXNfZGVhZCB0ID0gaXNfc29tZSB0LnVuY2F1Z2h0X2V4blxubGV0IHNldF9jaGVja19hY2Nlc3MgdCBmID0gdC5jaGVja19hY2Nlc3MgPC0gZlxuXG5sZXQgdF9yZWYgPVxuICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggY3JlYXRlIHdpdGhcbiAgfCBPayB0IC0+IHJlZiB0XG4gIHwgRXJyb3IgZXhuIC0+XG4gICAgRGVidWcubG9nIFwiQXN5bmMgY2Fubm90IGNyZWF0ZSBpdHMgcmF3IHNjaGVkdWxlclwiIGV4biBbJXNleHBfb2Y6IGV4bl07XG4gICAgZXhpdCAxXG47O1xuXG5sZXQgY2hlY2tfYWNjZXNzIHQgPVxuICBtYXRjaCB0LmNoZWNrX2FjY2VzcyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmICgpXG47O1xuXG5sZXQgdCAoKSA9XG4gIGxldCB0ID0gIXRfcmVmIGluXG4gIGNoZWNrX2FjY2VzcyB0O1xuICB0XG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0ID1cbiAgaWYgdC5yZWNvcmRfYmFja3RyYWNlc1xuICB0aGVuIEV4ZWN1dGlvbl9jb250ZXh0LnJlY29yZF9iYWNrdHJhY2UgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gIGVsc2UgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiB4ID1cbiAgbGV0IG9sZF9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIHNldF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0O1xuICBwcm90ZWN0eCB+ZiB4IH5maW5hbGx5OihmdW4gXyAtPiBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCBvbGRfY29udGV4dClcbjs7XG5cbmxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgdG1wX2NvbnRleHQgfmYgPSB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSB0IHRtcF9jb250ZXh0IH5mICgpXG5cbmxldCBjcmVhdGVfam9iICh0eXBlIGEpIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgaWYgUG9vbC5pc19mdWxsIHQuam9iX3Bvb2wgdGhlbiB0LmpvYl9wb29sIDwtIFBvb2wuZ3JvdyB0LmpvYl9wb29sO1xuICBQb29sLm5ldzNcbiAgICB0LmpvYl9wb29sXG4gICAgZXhlY3V0aW9uX2NvbnRleHRcbiAgICAoT2JqLm1hZ2ljIChmIDogYSAtPiB1bml0KSA6IE9iai50IC0+IHVuaXQpXG4gICAgKE9iai5yZXByIChhIDogYSkpXG47O1xuXG5sZXQgZ290X3VuY2F1Z2h0X2V4biB0IGV4biBzZXhwID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJnb3RfdW5jYXVnaHRfZXhuXCIgKGV4biwgc2V4cCkgWyVzZXhwX29mOiBFeG4udCAqIFNleHAudF07XG4gIExpc3QuaXRlciBbIHQubm9ybWFsX3ByaW9yaXR5X2pvYnM7IHQubG93X3ByaW9yaXR5X2pvYnMgXSB+ZjpKb2JfcXVldWUuY2xlYXI7XG4gIHQudW5jYXVnaHRfZXhuIDwtIFNvbWUgKGV4biwgc2V4cClcbjs7XG5cbigqIFtzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XSBlbmFibGVzIHN1YnNlcXVlbnQgY2FsbHMgb2YgW3J1bl9qb2JzXVxuICAgdG8gcnVuIHVwIHRvIFttYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XSBqb2JzIG9mIGVhY2ggcHJpb3JpdHkgbGV2ZWwuICopXG5sZXQgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eSA9XG4gIGxldCBuID0gTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUucmF3IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgaW5cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIG47XG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5sb3dfcHJpb3JpdHlfam9icyBuXG47O1xuXG4oKiBbcnVuX2pvYnMgdF0gcmVtb3ZlcyBqb2JzIGZyb20gW3RdIG9uZSBhdCBhIHRpbWUgYW5kIHJ1bnMgdGhlbSwgc3RvcHBpbmcgYXMgc29vblxuICAgYXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiBpcyByYWlzZWQsIG9yIHdoZW4gbm8gbW9yZSBqb2JzIGNhbiBiZSBydW4gYXQgYW55IHByaW9yaXR5LFxuICAgYXMgcGVyIFt+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0uICopXG5sZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICBtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5ub3JtYWxfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICB8IE9rICgpIC0+XG4gICAgKG1hdGNoIEpvYl9xdWV1ZS5ydW5fam9icyB0Lmxvd19wcmlvcml0eV9qb2JzIHQgd2l0aFxuICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgIHwgT2sgKCkgLT5cbiAgICAgICBpZiBKb2JfcXVldWUuY2FuX3J1bl9hX2pvYiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICAgfHwgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5sb3dfcHJpb3JpdHlfam9ic1xuICAgICAgIHRoZW4gcnVuX2pvYnMgdFxuICAgICAgIGVsc2UgT2sgKCkpXG47O1xuXG5sZXQgc3RhYmlsaXplIHQgPVxuICBzdGFydF9jeWNsZVxuICAgIHRcbiAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTpcbiAgICAgIChNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIEludC5tYXhfdmFsdWUpO1xuICBtYXRjaCBydW5fam9icyB0IHdpdGhcbiAgfCBPayAoKSAtPiBPayAoKVxuICB8IEVycm9yIChleG4sIF9iYWNrdHJhY2UpIC0+IEVycm9yIGV4blxuOztcblxubGV0IGNyZWF0ZV90aW1lX3NvdXJjZVxuICAgICAgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZy50aW1pbmdfd2hlZWxfY29uZmlnKVxuICAgICAgfm5vd1xuICAgICAgKClcbiAgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV2ZW50cyA9IFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzp0aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydDpub3cgaW5cbiAgbGV0IHJlYyB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IGZhbHNlXG4gICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHNjaGVkdWxlciA9IHRcbiAgICB9XG4gIGluXG4gIHRpbWVfc291cmNlXG47O1xuXG5sZXQgd2FsbF9jbG9jayAoKSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnJlYWRfb25seSAodCAoKSkudGltZV9zb3VyY2VcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbm1vZHVsZSBDZWxsID0gVHlwZXMuQ2VsbFxuXG50eXBlIGFueSA9XG4gIFsgYEVtcHR5XG4gIHwgYEVtcHR5X29uZV9oYW5kbGVyXG4gIHwgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gIHwgYEZ1bGxcbiAgfCBgSW5kaXJcbiAgXVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JdmFyLnQgPSB7IG11dGFibGUgY2VsbCA6ICgnYSwgYW55KSBjZWxsIH1cblxuKCogVGhlIFsnYl0gaXMgdXNlZCB0byBlbmNvZGUgdGhlIGNvbnN0cnVjdG9yLiAgVGhpcyBhbGxvd3MgdXMgdG8gd3JpdGUgZnVuY3Rpb25zIHRoYXRcbiAgIHRha2Ugb25seSBvbmUgb2YgdGhlIGNvbnN0cnVjdG9ycywgd2l0aCBubyBydW50aW1lIHRlc3QuXG5cbiAgIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgZGlyZWN0ZWQgZ3JhcGggd2l0aCBpdmFycyBhcyBub2RlcyBhbmQgW0luZGlyXXMgYXNcbiAgIGVkZ2VzIGlzIGFjeWNsaWMuICBUaGUgb25seSBmdW5jdGlvbnMgdGhhdCBjcmVhdGUgYW4gW0luZGlyXSBhcmUgW3NxdWFzaF0gYW5kXG4gICBbY29ubmVjdF0sIGFuZCBmb3IgdGhvc2UsIHRoZSB0YXJnZXQgb2YgdGhlIFtJbmRpcl0gaXMgYWx3YXlzIGEgbm9uLVtJbmRpcl0uICBUaHVzLCB0aGVcbiAgIG5ld2x5IGFkZGVkIGVkZ2VzIGFyZSBuZXZlciBwYXJ0IG9mIGEgY3ljbGUuICopXG5hbmQgKCdhLCAnYikgY2VsbCA9ICgnYSwgJ2IpIFR5cGVzLkNlbGwudCA9XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgeyAoKiBbcnVuXSBpcyBtdXRhYmxlIHNvIHdlIGNhbiBzZXQgaXQgdG8gW2lnbm9yZV0gd2hlbiB0aGUgaGFuZGxlciBpcyByZW1vdmVkLlxuICAgICAgICAgICBUaGlzIGlzIHVzZWQgd2hlbiB3ZSBpbnN0YWxsIGEgaGFuZGxlciBvbiBhIGZ1bGwgaXZhciBzaW5jZSBpdCBpcyBpbW1lZGlhdGVseVxuICAgICAgICAgICBhZGRlZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICAgICAgICBtdXRhYmxlIHJ1biA6ICdhIC0+IHVuaXRcbiAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICA7ICgqIFtwcmV2XSBhbmQgW25leHRdIGNpcmN1bGFybHkgZG91Ymx5IGxpbmsgYWxsIGhhbmRsZXJzIG9mIHRoZSBzYW1lIGl2YXIuICopXG4gICAgICAgIG11dGFibGUgcHJldiA6ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICAgICAgOyBtdXRhYmxlIG5leHQgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIH1cbiAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciA6XG4gICAgICAoJ2EgLT4gdW5pdCkgKiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSBjZWxsXG4gIHwgRW1wdHkgOiAoJ2EsIFs+IGBFbXB0eSBdKSBjZWxsXG4gIHwgRnVsbCA6ICdhIC0+ICgnYSwgWz4gYEZ1bGwgXSkgY2VsbFxuICB8IEluZGlyIDogJ2EgdCAtPiAoJ2EsIFs+IGBJbmRpciBdKSBjZWxsXG5cbm1vZHVsZSBIYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuXG4gIGxldCBydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5ydW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQuZXhlY3V0aW9uX2NvbnRleHRcbiAgbGV0IHByZXYgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5wcmV2XG4gIGxldCBuZXh0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQubmV4dFxuICBsZXQgc2V0X3J1biAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucnVuIDwtIHhcbiAgbGV0IHNldF9wcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5wcmV2IDwtIHhcbiAgbGV0IHNldF9uZXh0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5uZXh0IDwtIHhcblxuICBsZXQgY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgKCogQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mOlxuXG4gICAgICAge1tcbiAgICAgICAgIGxldCByZWMgdCA9XG4gICAgICAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgICAgICAgeyBydW5cbiAgICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHRcbiAgICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdCB9XG4gICAgICAgICBpblxuICAgICAgICAgaDEgXX1cblxuICAgICAgIEhvd2V2ZXIgdGhlIGNvbXBpbGF0aW9uIG9mIHJlY3Vyc2l2ZSB2YWx1ZSBpbiBPQ2FtbCBpcyBub3Qgb3B0aW1hbDogdGhlIHZhbHVlIGlzXG4gICAgICAgYWxsb2NhdGVkIHR3aWNlIGFuZCBjb3BpZWQgb25jZSAod2l0aCBhIGxvb3AgY2FsbGluZyBjYW1sX21vZGlmeSkuICBUaGlzIGlzIG5vdFxuICAgICAgIG5lY2Vzc2FyeSBmb3Igc2ltcGxlIHJlY3Vyc2l2ZSBkZWZpbml0aW9ucyBsaWtlIHRoaXMgb25lLlxuXG4gICAgICAgSW5zdGVhZCB3ZSBhbGxvY2F0ZSB0aGUgdmFsdWUgd2l0aCBkdW1teSBmaWVsZHMgYW5kIHVwZGF0ZSB0aGVtIGFmdGVyLiAqKVxuICAgIGxldCB0ID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldiA9IE9iai5tYWdpYyBOb25lOyBuZXh0ID0gT2JqLm1hZ2ljIE5vbmUgfVxuICAgIGluXG4gICAgc2V0X3ByZXYgdCB0O1xuICAgIHNldF9uZXh0IHQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZTIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQxID1cbiAgICAgICAgICAgeyBydW4gICAgICAgICAgICAgICA9IHJ1bjFcbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MVxuICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdDJcbiAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQyIH1cbiAgICAgICAgIGFuZCB0MiA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4yXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDJcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQxXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MSB9XG4gICAgICAgICBpblxuICAgICAgICAgdDEgXX0gKilcbiAgICBsZXQgdDEgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW4gPSBydW4xXG4gICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgOyBwcmV2ID0gT2JqLm1hZ2ljIE5vbmVcbiAgICAgICAgOyBuZXh0ID0gT2JqLm1hZ2ljIE5vbmVcbiAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQyID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMjsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDI7IHByZXYgPSB0MTsgbmV4dCA9IHQxIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQxIHQyO1xuICAgIHNldF9uZXh0IHQxIHQyO1xuICAgIHQxXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgKGV4ZWN1dGlvbl9jb250ZXh0IHQpO1xuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBsZXQgdDEgPSAhciBpblxuICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChwcmV2IChuZXh0IHQxKSkgdDEpO1xuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0MSk7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gcGh5c19lcXVhbCB0IChuZXh0IHQpXG5cbiAgbGV0IGxlbmd0aCB0ID1cbiAgICBsZXQgbiA9IHJlZiAxIGluXG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGluY3IgbjtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmU7XG4gICAgIW5cbiAgOztcblxuICBsZXQgZW5xdWV1ZSB0IHNjaGVkdWxlciB2ID0gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIChleGVjdXRpb25fY29udGV4dCB0KSAocnVuIHQpIHZcblxuICBsZXQgc2NoZWR1bGVfam9icyB0IHYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGVucXVldWUgdCBzY2hlZHVsZXIgdjtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgZW5xdWV1ZSAhciBzY2hlZHVsZXIgdjtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgdW5saW5rIHQgPVxuICAgIHNldF9wcmV2IChuZXh0IHQpIChwcmV2IHQpO1xuICAgIHNldF9uZXh0IChwcmV2IHQpIChuZXh0IHQpO1xuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHRcbiAgOztcblxuICBsZXQgYWRkIHQgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldiA9IHByZXYgdDsgbmV4dCA9IHQgfVxuICAgIGluXG4gICAgc2V0X25leHQgKHByZXYgdCkgcmVzdWx0O1xuICAgIHNldF9wcmV2IHQgcmVzdWx0O1xuICAgIHJlc3VsdFxuICA7O1xuXG4gICgqIFtzcGxpY2UgdDEgdDJdIGNyZWF0ZXM6XG5cbiAgICAge3ZcbiAgICAgICAtLT4gdDEgPC0tPiAuLi4gPC0tPiBsYXN0MSA8LS0+IHQyIDwtLT4gLi4uIDwtLT4gbGFzdDIgPC0tXG4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgdn0gKilcbiAgbGV0IHNwbGljZSB0MSB0MiA9XG4gICAgbGV0IGxhc3QxID0gcHJldiB0MSBpblxuICAgIGxldCBsYXN0MiA9IHByZXYgdDIgaW5cbiAgICBzZXRfbmV4dCBsYXN0MSB0MjtcbiAgICBzZXRfbmV4dCBsYXN0MiB0MTtcbiAgICBzZXRfcHJldiB0MSBsYXN0MjtcbiAgICBzZXRfcHJldiB0MiBsYXN0MVxuICA7O1xuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIDo6IGwgLT5cbiAgICAgIGxldCBmaXJzdCA9IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICAgIGxldCByZWMgbG9vcCBwcmV2IGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBzZXRfcHJldiBmaXJzdCBwcmV2XG4gICAgICAgIHwgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIDo6IGwgLT5cbiAgICAgICAgICBsZXQgdCA9XG4gICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXY7IG5leHQgPSBmaXJzdCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZXRfbmV4dCBwcmV2IHQ7XG4gICAgICAgICAgbG9vcCB0IGxcbiAgICAgIGluXG4gICAgICBsb29wIGZpcnN0IGw7XG4gICAgICBTb21lIGZpcnN0XG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgZmlyc3QgPVxuICAgIGxldCByZWMgbG9vcCB0IGFjYyA9XG4gICAgICBsZXQgYWNjID0gKHJ1biB0LCBleGVjdXRpb25fY29udGV4dCB0KSA6OiBhY2MgaW5cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgKHByZXYgdCkgYWNjXG4gICAgaW5cbiAgICBsb29wIChwcmV2IGZpcnN0KSBbXVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgXyAodCA6IF8gdCkgPVxuICAgIGxldCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW4gPSBfOyBleGVjdXRpb25fY29udGV4dDsgbmV4dCA9IF87IHByZXYgPSBfIH0pID1cbiAgICAgIHRcbiAgICBpblxuICAgIFslbWVzc2FnZSAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KV1cbiAgOztcbmVuZFxuXG50eXBlICdhIGl2YXIgPSAnYSB0XG5cbigqIENvbXBpbGVkIGFzIHRoZSBpZGVudGl0eS4gKilcbmxldCBjZWxsX29mX2hhbmRsZXIgOiBfIEhhbmRsZXIudCAtPiBfID0gZnVuY3Rpb25cbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIHggLT4gKHggOj4gKF8sIGFueSkgY2VsbClcbjs7XG5cbmxldCBlcXVhbCAodCA6IF8gdCkgdCcgPSBwaHlzX2VxdWFsIHQgdCdcbmxldCBpbmRpciB0ID0geyBjZWxsID0gSW5kaXIgdCB9XG5cbmluY2x1ZGUgU2NoZWR1bGVyLkl2YXJcblxuKCogW3NxdWFzaCB0XSByZXR1cm5zIHRoZSBub24tW0luZGlyXSBpdmFyIGF0IHRoZSBlbmQgb2YgdGhlIChwb3NzaWJseSBlbXB0eSkgY2hhaW4gb2ZcbiAgIFtJbmRpcl1zIHN0YXJ0aW5nIHdpdGggW3RdIGFuZCBlbnN1cmVzIHRoYXQgYWxsIFtJbmRpcl1zIGFsb25nIHRoYXQgY2hhaW4gYXJlIHJlcGxhY2VkXG4gICB3aXRoIGFuIFtJbmRpcl0gcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4uICopXG5sZXQgc3F1YXNoID1cbiAgbGV0IHJlYyBmb2xsb3cgaW5kaXIgdCA9XG4gICAgKCogW2luZGlyID0gSW5kaXIgdF0gKilcbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgYXMgaW5kaXInIC0+IGZvbGxvdyBpbmRpcicgdCdcbiAgICB8IF8gLT4gaW5kaXJcbiAgaW5cbiAgbGV0IHJlYyB1cGRhdGUgdCBpbmRpciA9XG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIC0+XG4gICAgICB0LmNlbGwgPC0gaW5kaXI7XG4gICAgICB1cGRhdGUgdCcgaW5kaXJcbiAgICB8IF8gLT4gdFxuICBpblxuICBmdW4gdCAtPlxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgKG1hdGNoIHQnLmNlbGwgd2l0aFxuICAgICAgIHwgSW5kaXIgdCcnIGFzIGluZGlyIC0+IHVwZGF0ZSB0IChmb2xsb3cgaW5kaXIgdCcnKVxuICAgICAgIHwgXyAtPiB0JyAoKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXMgYSBjaGFpbiB3aXRoIGEgc2luZ2xlIFtJbmRpcl0gKikpXG4gICAgfCBfIC0+IHRcbjs7XG5cbigqIG5vdGhpbmcgdG8gZG8sIHNpbmNlIFt0XSBpc24ndCBhbiBbSW5kaXJdLiAqKVxuXG5sZXQgaW52YXJpYW50IGFfaW52YXJpYW50IHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IGFfaW52YXJpYW50IGFcbiAgfCBFbXB0eSAtPiAoKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChfLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgZXhlY3V0aW9uX2NvbnRleHRcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT4gSGFuZGxlci5pbnZhcmlhbnQgaGFuZGxlclxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA6IFNleHAudCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gTGlzdCBbIEF0b20gXCJGdWxsXCI7IHNleHBfb2ZfYSBhIF1cbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IEF0b20gXCJFbXB0eVwiXG47O1xuXG5sZXQgcGVlayB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBTb21lIGFcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IE5vbmVcbjs7XG5cbmxldCB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPlxuICAgIGZhaWx3aXRoIGlmX2VtcHR5X3RoZW5fZmFpbHdpdGhcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9IHZhbHVlIHQgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGg6XCJJdmFyLnZhbHVlX2V4biBjYWxsZWQgb24gZW1wdHkgaXZhclwiXG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgXyAtPiBmYWxzZVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gdHJ1ZVxuOztcblxubGV0IGlzX2Z1bGwgdCA9IG5vdCAoaXNfZW1wdHkgdClcblxubGV0IGZpbGwgdCB2ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkl2YXIuZmlsbCBvZiBmdWxsIGl2YXJcIiAodCA6IF8gdCldXG4gIHwgRW1wdHkgLT4gdC5jZWxsIDwtIEZ1bGwgdlxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSAtPlxuICAgIHQuY2VsbCA8LSBGdWxsIHY7XG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIEhhbmRsZXIuc2NoZWR1bGVfam9icyBoYW5kbGVyIHZcbjs7XG5cbmxldCByZW1vdmVfaGFuZGxlciB0IChoYW5kbGVyIDogXyBIYW5kbGVyLnQpID1cbiAgSGFuZGxlci5zZXRfcnVuIGhhbmRsZXIgaWdub3JlO1xuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIC0+XG4gICAgKCogVGhlc2UgYXJlIG9ubHkgcG9zc2libGUgaWYgW2hhbmRsZXJdIHdhcyBhbHJlYWR5IHJlbW92ZWQuICAqKVxuICAgICgpXG4gIHwgRnVsbCBfIC0+XG4gICAgKCogVGhpcyBpcyBwb3NzaWJsZSBpZiBbdF0gd2FzIGZpbGxlZCBiZWZvcmUgd2UgdHJ5IHRvIHJlbW92ZSB0aGUgaGFuZGxlci4gIEUuZy5cbiAgICAgICBbRGVmZXJyZWQuY2hvb3NlXSB3aWxsIGRvIHRoaXMuICopXG4gICAgKClcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGNlbGwgLT5cbiAgICBpZiBIYW5kbGVyLmlzX3NpbmdsZXRvbiBoYW5kbGVyXG4gICAgdGhlbiB0LmNlbGwgPC0gRW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgaGFuZGxlciBjZWxsIHRoZW4gdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciAoSGFuZGxlci5uZXh0IGhhbmRsZXIpO1xuICAgICAgSGFuZGxlci51bmxpbmsgaGFuZGxlcilcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eSAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyO1xuICAgIGhhbmRsZXJcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuJywgZXhlY3V0aW9uX2NvbnRleHQnKSAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUyIHJ1biBleGVjdXRpb25fY29udGV4dCBydW4nIGV4ZWN1dGlvbl9jb250ZXh0JyBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuYWRkIGhhbmRsZXIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRnVsbCB2IC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICAoKiBbcnVuXSBjYWxscyBbaGFuZGxlci5ydW5dLCB3aGljaCwgaWYgW2hhbmRsZXJdIGhhcyBiZWVuIHJlbW92ZWQsIGhhcyBiZWVuIGNoYW5nZWRcbiAgICAgICB0byBbaWdub3JlXS4gKilcbiAgICBsZXQgcnVuIHYgPSBIYW5kbGVyLnJ1biBoYW5kbGVyIHYgaW5cbiAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdjtcbiAgICBoYW5kbGVyXG47O1xuXG5sZXQgaGFzX2hhbmRsZXJzIHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gdHJ1ZVxuICB8IEVtcHR5IHwgRnVsbCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgdXBvbicgdCBydW4gPSBhZGRfaGFuZGxlciB0IHJ1biBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxuXG4oKiBbdXBvbl0gaXMgY29uY2VwdHVhbGx5IHRoZSBzYW1lIGFzOlxuXG4gICB7W1xuICAgICBsZXQgdXBvbiB0IGYgPSBpZ25vcmUgKHVwb24nIHQgcnVuKSBdfVxuXG4gICBIb3dldmVyLCBiZWxvdyBpcyBhIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyB3b3J0aCBkb2luZyBiZWNhdXNlIFt1cG9uXVxuICAgaXMgdmVyeSB3aWRlbHkgdXNlZCBhbmQgaXMgc28gbXVjaCBtb3JlIGNvbW1vbiB0aGFuIFt1cG9uJ10uICBUaGUgYmVsb3cgaW1wbGVtZW50YXRpb25cbiAgIGF2b2lkcyB0aGUgdXNlIG9mIHRoZSBiYWcgb2YgaGFuZGxlcnMgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSBvZiBvbmUgaGFuZGxlciBmb3JcbiAgIHRoZSBkZWZlcnJlZC4gKilcbmxldCB1cG9uIHQgcnVuID1cbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCB2IC0+IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuJywgZXhlY3V0aW9uX2NvbnRleHQnKSAtPlxuICAgIHQuY2VsbFxuICAgIDwtIGNlbGxfb2ZfaGFuZGxlciAoSGFuZGxlci5jcmVhdGUyIHJ1biBleGVjdXRpb25fY29udGV4dCBydW4nIGV4ZWN1dGlvbl9jb250ZXh0JylcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT5cbiAgICBpZ25vcmUgKEhhbmRsZXIuYWRkIGhhbmRsZXIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IDogXyBIYW5kbGVyLnQpXG47O1xuXG4oKiBbY29ubmVjdF0gdGFrZXMgaXZhcnMgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSwgYW5kIG1ha2VzIFtiaW5kX3Joc11cbiAgIGJlIGFuIFtJbmRpcl0gcG9pbnRpbmcgdG8gdGhlIG5vbi1pbmRpciBjZWxsIHJlYWNoYWJsZSBmcm9tIFtiaW5kX3Jlc3VsdF0uICBPbiBlbnRyeVxuICAgdG8gW2Nvbm5lY3RdLCBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdIG1heSBiZSBjaGFpbnMsIHNpbmNlIFtiaW5kX3Joc10gaXMgYW5cbiAgIGFyYml0cmFyeSB1c2VyLXN1cHBsaWVkIGRlZmVycmVkLCBhbmQgW2JpbmRfcmVzdWx0XSBpcyByZXR1cm5lZCB0byB0aGUgdXNlciBwcmlvciB0b1xuICAgYmVpbmcgW2Nvbm5lY3RdZWQsIGFuZCBtYXkgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBhbiBpbmRpcmVjdGlvbiBpbiB0aGUgY2FzZSBvZlxuICAgcmlnaHQtbmVzdGVkIGJpbmRzLlxuXG4gICBUaGUgcHVycG9zZSBvZiBbY29ubmVjdF0gaXMgdG8gbWFrZSB0YWlsLXJlY3Vyc2l2ZSBiaW5kIGxvb3BzIHVzZSBjb25zdGFudCBzcGFjZS5cbiAgIEUuZy46XG5cbiAgIHtbXG4gICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICBpZiBpID0gMFxuICAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBsZXQlYmluZCAoKSA9IGFmdGVyIChzZWMgMS4pIGluXG4gICAgICAgICBsb29wIChpIC0gMSkpIF19XG5cbiAgIFtjb25uZWN0XSBtYWtlcyBpbnRlcm1lZGlhdGUgYmluZCByZXN1bHRzIGFsbCBiZSBbSW5kaXJdcyBwb2ludGluZyBhdCB0aGUgb3V0ZXJtb3N0XG4gICBiaW5kLCByYXRoZXIgdGhhbiBiZWluZyBhIGxpbmVhci1sZW5ndGggY2hhaW4sIHdpdGggZWFjaCBwb2ludGluZyB0byB0aGUgcHJldmlvdXMgb25lLlxuICAgVGhlbiwgc2luY2UgdGhlIHByb2dyYW0gaXMgb25seSBob2xkaW5nIG9uIHRvIHRoZSBpbm5lcm1vc3QgYW5kIG91dGVybW9zdCBiaW5kcyBhbGwgdGhlXG4gICBpbnRlcm1lZGlhdGUgb25lcyBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuXG5cbiAgIFtjb25uZWN0XSB3b3JrcyBieSBzcXVhc2hpbmcgaXRzIGFyZ3VtZW50cyBzbyB0aGF0IHRoZSBbYmluZF9yaHNdIGFsd2F5cyBwb2ludHMgYXQgdGhlXG4gICB1bHRpbWF0ZSByZXN1bHQuICopXG5sZXQgY29ubmVjdCA9XG4gICgqIFtyZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0XSByZXBvaW50cyB0byBbaW5kaXJdIGFsbCB0aGUgaXZhcnMgaW4gdGhlXG4gICAgIGNoYWluIHJlYWNoYWJsZSBmcm9tIFtpdmFyXSwgYW5kIHJldHVybnMgdGhlIG5vbi1bSW5kaXJdIGNlbGwgYXQgdGhlIGVuZCBvZiB0aGVcbiAgICAgY2hhaW4uICBBZnRlciByZXBvaW50aW5nLCB3ZSB3aWxsIG1lcmdlIHRoZSBoYW5kbGVycyBpbiB0aGF0IGNlbGwgd2l0aCB0aGUgaGFuZGxlcnNcbiAgICAgaW4gW2JpbmRfcmVzdWx0XSwgYW5kIHB1dCB0aGUgbWVyZ2VkIHNldCBvZiBoYW5kbGVycyBpbiBbYmluZF9yZXN1bHRdLiAqKVxuICBsZXQgcmVjIHJlcG9pbnRfaW5kaXJzIH5pdmFyIH5pbmRpciB+YmluZF9yZXN1bHQgPVxuICAgIGxldCBjZWxsID0gaXZhci5jZWxsIGluXG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBJbmRpciBpdmFyJyAtPlxuICAgICAgaXZhci5jZWxsIDwtIGluZGlyO1xuICAgICAgcmVwb2ludF9pbmRpcnMgfml2YXI6aXZhcicgfmluZGlyIH5iaW5kX3Jlc3VsdFxuICAgIHwgRnVsbCBfIC0+IGNlbGxcbiAgICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICAgICgqIEl0IGlzIHBvc3NpYmxlIHRoYXQgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBhcmUgbm90IGVxdWFsLCBidXQgdGhlaXIgY2hhaW5zXG4gICAgICAgICBvZiBpbmRpcnMgbGVhZCB0byB0aGUgc2FtZSBub24tW0luZGlyXSBjZWxsLCBpbiB3aGljaCBjYXNlIHdlIGNhbm5vdCBzZXQgdGhhdFxuICAgICAgICAgY2VsbCB0byBwb2ludCB0byBpdHNlbGYsIGJlY2F1c2UgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYSBjeWNsZS4gKilcbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBpdmFyIGJpbmRfcmVzdWx0KSB0aGVuIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIGNlbGxcbiAgaW5cbiAgZnVuIH5iaW5kX3Jlc3VsdCB+YmluZF9yaHMgLT5cbiAgICBpZiBub3QgKHBoeXNfZXF1YWwgYmluZF9yZXN1bHQgYmluZF9yaHMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYmluZF9yZXN1bHQgPSBzcXVhc2ggYmluZF9yZXN1bHQgaW5cbiAgICAgIGxldCBpbmRpciA9IEluZGlyIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgYmluZF9yaHNfY29udGVudHMgPSByZXBvaW50X2luZGlycyB+aXZhcjpiaW5kX3JocyB+aW5kaXIgfmJpbmRfcmVzdWx0IGluXG4gICAgICAoKiB1cGRhdGUgW2JpbmRfcmVzdWx0XSB3aXRoIHRoZSB1bmlvbiBvZiBoYW5kbGVycyBpbiBbYmluZF9yZXN1bHRdIGFuZFxuICAgICAgICAgW2JpbmRfcmhzXSAqKVxuICAgICAgbWF0Y2ggYmluZF9yZXN1bHQuY2VsbCwgYmluZF9yaHNfY29udGVudHMgd2l0aFxuICAgICAgfCBJbmRpciBfLCBfIHwgXywgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSBhbmQgW3JlcG9pbnRfaW5kaXJzXSAqKVxuICAgICAgKCogW2Nvbm5lY3RdIGlzIG9ubHkgdXNlZCBpbiBiaW5kLCB3aG9zZSBpdmFyIGlzIG9ubHkgZXZlciBleHBvcnRlZCBhcyBhIHJlYWQtb25seVxuICAgICAgICAgZGVmZXJyZWQuICBUaHVzLCBbYmluZF9yZXN1bHRdIG11c3QgYmUgZW1wdHkuICopXG4gICAgICB8IEZ1bGwgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgXywgRW1wdHkgLT4gKClcbiAgICAgIHwgRW1wdHksIF8gLT4gYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50c1xuICAgICAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICAgICAgfCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyKSwgRnVsbCB2IC0+XG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHM7XG4gICAgICAgIEhhbmRsZXIuc2NoZWR1bGVfam9icyBoYW5kbGVyIHZcbiAgICAgIHwgKCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMSwgZXhlY3V0aW9uX2NvbnRleHQxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5jcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyIGluXG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXIxXG4gICAgICB8ICggKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjEpXG4gICAgICAgICwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjIsIGV4ZWN1dGlvbl9jb250ZXh0MikgKSAtPlxuICAgICAgICBpZ25vcmUgKEhhbmRsZXIuYWRkIGhhbmRsZXIxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyIDogXyBIYW5kbGVyLnQpXG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPlxuICAgICAgICBsZXQgaGFuZGxlcjEgPSBIYW5kbGVyLmFkZCBoYW5kbGVyMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIyKSApIC0+IEhhbmRsZXIuc3BsaWNlIGhhbmRsZXIxIGhhbmRsZXIyKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEl2YXIgPSBJdmFyMFxubW9kdWxlIEhhbmRsZXIgPSBJdmFyLkhhbmRsZXJcblxuKCogRGVmZXJyZWRzIHByZXNlbnQgYSBjb3ZhcmlhbnQgdmlldyBvZiBpdmFycy4gIFdlIGNvdWxkIGFjdHVhbGx5IGltcGxlbWVudCBkZWZlcnJlZHNcbiAgIHVzaW5nIGEgcmVjb3JkIG9mIGNsb3N1cmVzLCBhcyBpbiB0aGUgW2Vzc2VuY2Vfb2ZfZGVmZXJyZWRdIHJlY29yZCBiZWxvdywgZm9yIHdoaWNoIHRoZVxuICAgT0NhbWwgdHlwZSBjaGVja2VyIGNhbiBpbmZlciBjb3ZhcmlhbmNlLiAgSG93ZXZlciwgZG9pbmcgc28gd291bGQgbWFrZSBbSXZhci5yZWFkXSB2ZXJ5XG4gICBjb3N0bHksIGJlY2F1c2UgaXQgd291bGQgaGF2ZSB0byBhbGxvY2F0ZSBsb3RzIG9mIGNsb3N1cmVzIGFuZCBhIHJlY29yZC4gIEluc3RlYWQgb2ZcbiAgIGRvaW5nIHRoaXMsIHdlIG1ha2UgZGVmZXJyZWRzIGFuIGFic3RyYWN0IGNvdmFyaWFudCB0eXBlLCB3aGljaCBjb25jcmV0ZWx5IGlzIGp1c3QgdGhlXG4gICBpdmFyLCBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGNvbnZlcnQgYmFjayBhbmQgZm9ydGggYmV0d2VlbiBhIGRlZmVycmVkIGFuZCBpdHMgY29uY3JldGVcbiAgIHJlcHJlc2VudGF0aW9uIGFzIGFuIGl2YXIuICBUaGlzIFtPYmoubWFnaWNdIGlzIHNhZmUgYmVjYXVzZSB0aGUgcmVwcmVzZW50YXRpb24gaXNcbiAgIGFsd2F5cyBqdXN0IGFuIGl2YXIsIGFuZCB0aGUgY292YXJpYW5jZSBmb2xsb3dzIGZyb20gdGhlIGZhY3QgdGhhdCBhbGwgdGhlIGRlZmVycmVkXG4gICBvcGVyYXRpb25zIGFyZSBlcXVpdmFsZW50IHRvIHRob3NlIGltcGxlbWVudGVkIGRpcmVjdGx5IG9uIHRvcCBvZiB0aGVcbiAgIFtlc3NlbmNlX29mX2RlZmVycmVkXS5cblxuICAge1tcbiAgICAgdHlwZSAoKydhLCAnZXhlY3V0aW9uX2NvbnRleHQpIGVzc2VuY2Vfb2ZfZGVmZXJyZWQgPVxuICAgICAgIHsgcGVlayAgICAgICAgICAgICAgICAgICAgICA6IHVuaXQgLT4gJ2Egb3B0aW9uXG4gICAgICAgOyBpc19kZXRlcm1pbmVkICAgICAgICAgICAgIDogdW5pdCAtPiBib29sXG4gICAgICAgOyB1cG9uICAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgICAgICA7IHVwb24nICAgICAgICAgICAgICAgICAgICAgOiAoJ2EgLT4gdW5pdCkgLT4gVW5yZWdpc3Rlci50XG4gICAgICAgOyBpbnN0YWxsX3JlbW92YWJsZV9oYW5kbGVyIDogKCdhLCAnZXhlY3V0aW9uX2NvbnRleHQpIFJhd19oYW5kbGVyLnQgLT4gVW5yZWdpc3Rlci50OyB9IF19ICopXG5cbnR5cGUgKydhIHQgPSAnYSBUeXBlcy5EZWZlcnJlZC50XG5cbigqIHRoZSBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgZXF1aXZhbGVudCB0byBpdmFyICopXG5cbmxldCBvZl9pdmFyICh0eXBlIGEpIChpdmFyIDogYSBJdmFyLnQpIDogYSB0ID0gT2JqLm1hZ2ljIGl2YXJcbmxldCB0b19pdmFyICh0eXBlIGEpIHQgOiBhIEl2YXIudCA9IE9iai5tYWdpYyAodCA6IGEgdClcbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IEl2YXIuaW52YXJpYW50IGludmFyaWFudF9hICh0b19pdmFyIHQpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gSXZhci5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19pdmFyIHQpXG5sZXQgcGVlayB0ID0gSXZhci5wZWVrICh0b19pdmFyIHQpXG5sZXQgcmV0dXJuIGEgPSBvZl9pdmFyIChJdmFyLmNyZWF0ZV9mdWxsIGEpXG5sZXQgaXNfZGV0ZXJtaW5lZCB0ID0gSXZhci5pc19mdWxsICh0b19pdmFyIHQpXG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIEl2YXIudmFsdWVcbiAgICAodG9faXZhciB0KVxuICAgIH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiRGVmZXJyZWQudmFsdWVfZXhuIGNhbGxlZCBvbiB1bmRldGVybWluZWQgZGVmZXJyZWRcIlxuOztcblxubGV0IHVwb24gdCBmID0gSXZhci51cG9uICh0b19pdmFyIHQpIGZcblxubGV0IGNyZWF0ZSBmID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGYgcmVzdWx0O1xuICBvZl9pdmFyIHJlc3VsdFxuOztcblxuKCogZG9uJ3QgdXNlIFtjcmVhdGVdIGhlcmUgYXMgaXQgd291bGQgYWxsb2NhdGUgb25lIG1vcmUgY2xvc3VyZSAqKVxubGV0IGJpbmQgdCB+ZiA9XG4gIGxldCBiaW5kX3Jlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHVwb24gdCAoZnVuIGEgLT4gSXZhci5jb25uZWN0IH5iaW5kX3Jlc3VsdCB+YmluZF9yaHM6KHRvX2l2YXIgKGYgYSkpKTtcbiAgb2ZfaXZhciBiaW5kX3Jlc3VsdFxuOztcblxubGV0IGFkZF9oYW5kbGVyIHQgZiBleGVjdXRpb25fY29udGV4dCA9IEl2YXIuYWRkX2hhbmRsZXIgKHRvX2l2YXIgdCkgZiBleGVjdXRpb25fY29udGV4dFxubGV0IHJlbW92ZV9oYW5kbGVyIHQgaCA9IEl2YXIucmVtb3ZlX2hhbmRsZXIgKHRvX2l2YXIgdCkgaFxuIiwib3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDBcbmluY2x1ZGUgSXZhcjBcblxubGV0IHJlYWQgPSBEZWZlcnJlZC5vZl9pdmFyXG5sZXQgZmlsbF9pZl9lbXB0eSB0IHYgPSBpZiBpc19lbXB0eSB0IHRoZW4gZmlsbCB0IHZcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChPcHRpb24pXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgdCA9IHBlZWsgdFxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgICAgICAgfCBTb21lIGEgLT4gY3JlYXRlX2Z1bGwgYVxuICAgICAgOztcbiAgICBlbmQpXG4iLCIoKiogW01vbmFkX3NlcXVlbmNlLlNdIGlzIGEgZ2VuZXJpYyBpbnRlcmZhY2Ugc3BlY2lmeWluZyBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGggYVxuICAgIGNvbnRhaW5lciBhbmQgYSBtb25hZC4gIEl0IGlzIHNwZWNpYWxpemVkIHRvIHRoZSBbRGVmZXJyZWRdIG1vbmFkIGFuZCB1c2VkIHdpdGhcbiAgICB2YXJpb3VzIGNvbnRhaW5lcnMgaW4gbW9kdWxlcyBbRGVmZXJyZWQuQXJyYXldLCBbRGVmZXJyZWQuTGlzdF0sIFtEZWZlcnJlZC5RdWV1ZV0sIGFuZFxuICAgIFtEZWZlcnJlZC5TZXF1ZW5jZV0uICBUaGUgW01vbmFkX3NlcXVlbmNlLmhvd10gdHlwZSBzcGVjaWZpZXMgdGhlIHBhcmFsbGVsaXNtIG9mXG4gICAgY29udGFpbmVyIGl0ZXJhdG9ycy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgaG93ID1cbiAgWyBgUGFyYWxsZWwgKCoqIGxpa2UgW2BNYXhfY29uY3VycmVudF9qb2JzIEludC5tYXhfdmFsdWVdICopXG4gIHwgYFNlcXVlbnRpYWxcbiAgKCoqIFtgU2VxdWVudGlhbF0gaXMgb2Z0ZW4gYnV0IG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgW2BNYXhfY29uY3VycmVudF9qb2JzIDFdXG4gICAgICAoZm9yIGV4YW1wbGUsIHRoZXkgZGlmZmVyIGluIHRoZSBbT3JfZXJyb3JdIG1vbmFkKS4gKilcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBvZiBpbnRcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIG1vbmFkXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBmb2xkaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIG1vbmFkXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2Egb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IChpbnQgKiAnYSkgb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGFsbCA6ICdhIG1vbmFkIHQgLT4gJ2EgdCBtb25hZFxuICB2YWwgYWxsX3VuaXQgOiB1bml0IG1vbmFkIHQgLT4gdW5pdCBtb25hZFxuXG4gICgqKiB7MiBEZWZlcnJlZCBpdGVyYXRvcnN9XG5cbiAgICAgIEluIHRoZSBmb2xsb3dpbmcsIHRoZSBkZWZhdWx0IFtob3ddIGlzIFtgU2VxdWVudGlhbF0gKilcblxuICB2YWwgaW5pdCA6ID9ob3c6aG93IC0+IGludCAtPiBmOihpbnQgLT4gJ2EgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGl0ZXIgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIGl0ZXJpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgbWFwIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgbWFwaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXIgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGZpbHRlcmkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlcl9tYXBpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBjb25jYXRfbWFwIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBjb25jYXRfbWFwaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIHQgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbmVuZFxuIiwib3BlbiBDb3JlXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuaW5jbHVkZSBEZWZlcnJlZDBcblxuKCogVG8gYXZvaWQgYSBzcGFjZSBsZWFrLCBpdCBpcyBuZWNlc3NhcnkgdGhhdCBbbmV2ZXJdIGFsbG9jYXRlcyBhIG5ldyBpdmFyIHdoZW5ldmVyIGl0IGlzXG4gICBjYWxsZWQuICBDb2RlIGNhbiBiaW5kIG9uIFtuZXZlciAoKV0sIHNvIGlmIHdlIHJlLXVzZWQgdGhlIGl2YXIsIHdlIGNvdWxkIGVuZGxlc3NseVxuICAgYWNjdW11bGF0ZSBoYW5kbGVycy4gKilcbmxldCBuZXZlciAoKSA9IEl2YXIucmVhZCAoSXZhci5jcmVhdGUgKCkpXG5cbm1vZHVsZSBNID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBEZWZlcnJlZDBcblxuICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAoKiBXZSBtYW51YWxseSBpbmxpbmUgW0RlZmVycmVkLmNyZWF0ZV0gaGVyZSwgYmVjYXVzZSB0aGUgbm9uLWZsYW1iZGEgY29tcGlsZXIgaXNuJ3RcbiAgICAgICAgIGFibGUgdG8gb3B0aW1pemUgYXdheSB0aGUgY2xvc3VyZSB0aGF0IHdvdWxkIGJlIGJlIGNyZWF0ZWQuICopXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gdCAoZnVuIGEgLT4gSXZhci5maWxsIHJlc3VsdCAoZiBhKSk7XG4gICAgICBvZl9pdmFyIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5pbmNsdWRlIE1cblxuKCogV2UgcmViaW5kIGFsbCB0aGUgdmFyaW91cyBbcmV0dXJuXXMgYmVjYXVzZSB0aGUgdXNlIG9mIHRoZSBbTW9uYWQuTWFrZV0gZnVuY3RvclxuICAgY2F1c2VzIHRoZSBjb21waWxlciB0byBub3QgaW5saW5lIFtyZXR1cm5dLCBhbmQgaGVuY2UgbWFrZXMgaXQgaW1wb3NzaWJsZSB0b1xuICAgc3RhdGljYWxseSBhbGxvY2F0ZSBjb25zdGFudHMgbGlrZSBbcmV0dXJuICgpXS4gIEJ5IHJlYmluZGluZyBbcmV0dXJuXSBhc1xuICAgW0RlZmVycmVkMC5yZXR1cm5dLCB0aGUgY29tcGlsZXIgY2FuIHNlZSB0aGF0OlxuXG4gICB7W1xuICAgICByZXR1cm4gYSA9IHsgSXZhci5JbW11dGFibGUuIGNlbGwgPSBGdWxsIGEgfSBdfVxuXG4gICBBbmQgaGVuY2UsIGlmIFthXSBpcyBjb25zdGFudCwgdGhlbiB0aGUgcmV0dXJuIGlzIGNvbnN0YW50IGFuZCBjYW4gYmUgc3RhdGljYWxseVxuICAgYWxsb2NhdGVkLiAgV2hlbiBjb21waWxpbmcgd2l0aCBmbGFtYmRhLCB0aGUgY29tcGlsZXIgaW5saW5lcyBbcmV0dXJuXSBhbmQgdGhpcyBtYW51YWxcbiAgIHJlYmluZGluZyB3b3VsZCBub3QgaGVscDsgd2UndmUgZGVjaWRlZCB0byBkbyBpdCBhbnl3YXkgc28gdGhhdCBub24tZmxhbWJkYSBidWlsZHNcbiAgIGdldCB0aGUgb3B0aW1pemF0aW9uLiAqKVxubGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNLkxldF9zeW50YXhcblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBNLkxldF9zeW50YXguTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbigqIFdlIHNoYWRvdyBbYWxsXSBvbi1wdXJwb3NlIGhlcmUsIHNpbmNlIHRoZSBkZWZhdWx0IGRlZmluaXRpb24gaW50cm9kdWNlcyBhIGNoYWluIG9mXG4gICBiaW5kcyBhcyBsb25nIGFzIHRoZSBsaXN0LiAqKVxubGV0IGFsbCA9IGBNYWtlX3N1cmVfdG9fZGVmaW5lX2FsbF9lbHNld2hlcmVcbmxldCBfID0gYWxsXG5sZXQgdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG4gIGxldCBwcHhfYm90aCA9IGJvdGhcbmVuZFxuXG5vcGVuIEluZml4XG5cbmxldCBkb24ndF93YWl0X2ZvciAoXyA6IHVuaXQgdCkgPSAoKVxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPSBUIDogJ2IgRGVmZXJyZWQwLnQgKiAoJ2IgLT4gJ2EpIC0+ICdhIHRcblxuICBsZXQgbWFwIChUICh0LCBmMSkpIH5mOmYyID0gVCAodCwgZnVuIHggLT4gZjIgKGYxIHgpKVxuZW5kXG5cbm1vZHVsZSBVbnJlZ2lzdGVyID0gc3RydWN0XG4gICgqIFRoaXMgcmVwcmVzZW50YXRpb24gc2F2ZXMgMm4gd29yZHMgZm9yIGEgbGlzdCBvZiBuIGNob2ljZXMuICopXG4gIHR5cGUgdCA9XG4gICAgfCBOaWwgOiB0XG4gICAgfCBDb25zIDogJ2EgRGVmZXJyZWQwLnQgKiAnYSBEZWZlcnJlZDAuSGFuZGxlci50ICogdCAtPiB0XG5cbiAgbGV0IHJlYyBwcm9jZXNzID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodCwgaGFuZGxlciwgcmVzdCkgLT5cbiAgICAgIHJlbW92ZV9oYW5kbGVyIHQgaGFuZGxlcjtcbiAgICAgIHByb2Nlc3MgcmVzdFxuICA7O1xuZW5kXG5cbmxldCBjaG9pY2UgdCBmID0gQ2hvaWNlLlQgKHQsIGYpXG5cbmxldCBlbmFibGVkIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHVucmVnaXN0ZXJzID0gcmVmIFVucmVnaXN0ZXIuTmlsIGluXG4gIGxldCByZWFkeSBfID1cbiAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgIHRoZW4gKFxuICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzICF1bnJlZ2lzdGVycztcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKGZ1biAoKSAtPlxuICAgICAgICBMaXN0LnJldlxuICAgICAgICAgIChMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpbXSB+ZjooZnVuIGFjIChDaG9pY2UuVCAodCwgZikpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcGVlayB0IHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gYWNcbiAgICAgICAgICAgICB8IFNvbWUgdiAtPiBmIHYgOjogYWMpKSkpXG4gIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIHVucmVnaXN0ZXJzXG4gIDo9IExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gYWNjIChDaG9pY2UuVCAodCwgXykpIC0+XG4gICAgQ29ucyAodCwgRGVmZXJyZWQwLmFkZF9oYW5kbGVyIHQgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQsIGFjYykpO1xuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgcmVjIGNob29zZV9yZXN1bHQgY2hvaWNlcyA9XG4gIG1hdGNoIGNob2ljZXMgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IENob2ljZS5UICh0LCBmKSA6OiBjaG9pY2VzIC0+XG4gICAgKG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgIHwgTm9uZSAtPiBjaG9vc2VfcmVzdWx0IGNob2ljZXNcbiAgICAgfCBTb21lIHYgLT4gZiB2KVxuOztcblxubGV0IGNob29zZSBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChjaG9vc2VfcmVzdWx0IGNob2ljZXMpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIF8pKSAtPlxuICAgIENvbnMgKHQsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IGFueV9mIHRzIGYgPSBjaG9vc2UgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBjaG9pY2UgdCBmKSlcbmxldCBhbnkgdHMgPSBhbnlfZiB0cyBGbi5pZFxubGV0IGFueV91bml0IHRzID0gYW55X2YgdHMgKEZuLmlnbm9yZSA6IHVuaXQgLT4gdW5pdClcblxubGV0IGZvcl8gc3RhcnQgfnRvXyB+ZG9fID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPiB0b19cbiAgICB0aGVuIHJldHVybiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0JWJpbmQgKCkgPSBkb18gaSBpblxuICAgICAgbG9vcCAoaSArIDEpKVxuICBpblxuICBsb29wIHN0YXJ0XG47O1xuXG5sZXQgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBjcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgICBmIHN0YXRlXG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgYFJlcGVhdCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgICB8IGBGaW5pc2hlZCByZXN1bHQgLT4gSXZhci5maWxsIGZpbmlzaGVkIHJlc3VsdFxuICAgIGluXG4gICAgbG9vcCBzdGF0ZSlcbjs7XG5cbmxldCBmb3JldmVyIHN0YXRlIGYgPVxuICByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgKGZ1biBzdGF0ZSAtPlxuICAgIGxldCVtYXAgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgYFJlcGVhdCBzdGF0ZSlcbiAgPj4+IG5ldmVyX3JldHVybnNcbjs7XG5cbnR5cGUgaG93ID0gTW9uYWRfc2VxdWVuY2UuaG93IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2UuUyB3aXRoIHR5cGUgJ2EgbW9uYWQgOj0gJ2EgdFxuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgeCA6OiB4cyAtPiBmIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyBiXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBzZXFtYXAgdCB+ZiA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGJzIGEgLT4gZiBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSA+PnwgTGlzdC5yZXZcbmxldCBhbGwgZHMgPSBzZXFtYXAgZHMgfmY6Rm4uaWRcbmxldCBhbGxfdW5pdCBkcyA9IGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpXG5sZXQgb2sgeCA9IHggPj58IGZ1biB4IC0+IE9rIHhcbiIsIm9wZW4gRGVmZXJyZWQxXG5pbmNsdWRlIEluZml4XG5pbmNsdWRlIExldF9zeW50YXhcblxubGV0IGNob2ljZSA9IGNob2ljZVxubGV0IGNob29zZSA9IGNob29zZVxubGV0IGRvbid0X3dhaXRfZm9yID0gZG9uJ3Rfd2FpdF9mb3JcbmxldCBuZXZlciA9IG5ldmVyXG5sZXQgcmV0dXJuID0gcmV0dXJuXG5sZXQgdXBvbiA9IHVwb25cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHUgPVxuICB8IEVtcHR5IG9mICdhIEl2YXIudFxuICB8IEZ1bGxcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdCA9ICdhIHUgcmVmIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBGdWxsIC0+ICgpXG4gICAgfCBFbXB0eSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB0ID0gcmVmIChFbXB0eSBpdmFyKSBpblxuICB0LCBJdmFyLnJlYWQgaXZhclxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgRW1wdHkgXyAtPiB0cnVlXG4gIHwgRnVsbCAtPiBmYWxzZVxuOztcblxubGV0IGZpbGwgdCBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IGkgLT5cbiAgICB0IDo9IEZ1bGw7XG4gICAgSXZhci5maWxsIGkgYVxuICB8IEZ1bGwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGZpbGwgZnVsbCBpdmFyXCJdXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFN0cmVhbSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBuZXh0IERlZmVycmVkLnRcblxuICBhbmQgJ2EgbmV4dCA9ICdhIFR5cGVzLlN0cmVhbS5uZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBsZXQgcmVjIGxvb3AgZCBhYyA6IFNleHAudCA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgfCBOb25lIC0+IExpc3QgKExpc3QucmV2IChTZXhwLkF0b20gXCIuLi5cIiA6OiBhYykpXG4gICAgICB8IFNvbWUgTmlsIC0+IExpc3QgKExpc3QucmV2IGFjKVxuICAgICAgfCBTb21lIChDb25zIChhLCB0KSkgLT4gbG9vcCB0IChzZXhwX29mX2EgYSA6OiBhYylcbiAgICBpblxuICAgIGxvb3AgdCBbXVxuICA7O1xuXG4gIGxldCBuZXh0IHQgPSB0XG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuVGFpbC50ID1cbiAgeyAoKiBbbmV4dF0gcG9pbnRzIGF0IHRoZSB0YWlsIG9mIHRoZSBzdHJlYW0gKikgbXV0YWJsZSBuZXh0IDogJ2EgU3RyZWFtLm5leHQgSXZhci50IH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IHNleHBfb2ZfdCBfIHQgOiBTZXhwLnQgPVxuICBBdG9tIChpZiBJdmFyLmlzX2VtcHR5IHQubmV4dCB0aGVuIFwiPG9wZW4gdGFpbD5cIiBlbHNlIFwiPGNsb3NlZCB0YWlsPlwiKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9IHsgbmV4dCA9IEl2YXIuY3JlYXRlICgpIH1cbmxldCBjb2xsZWN0IHQgPSBJdmFyLnJlYWQgKG5leHQgdClcbmxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCAobmV4dCB0KVxuXG5sZXQgZmlsbF9leG4gdCB2ID1cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcInN0cmVhbSBpcyBjbG9zZWRcIl0gZWxzZSBJdmFyLmZpbGwgKG5leHQgdCkgdlxuOztcblxubGV0IGNsb3NlX2V4biB0ID0gZmlsbF9leG4gdCBOaWxcbmxldCBjbG9zZV9pZl9vcGVuIHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIEl2YXIuZmlsbCAobmV4dCB0KSBOaWxcblxubGV0IGV4dGVuZCB0IHYgPVxuICBsZXQgbmV4dCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGZpbGxfZXhuIHQgKENvbnMgKHYsIEl2YXIucmVhZCBuZXh0KSk7XG4gIHQubmV4dCA8LSBuZXh0XG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbm1vZHVsZSBTdHJlYW0gPSBUYWlsLlN0cmVhbVxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yMFxuaW5jbHVkZSBNb25pdG9yXG5cbnR5cGUgbW9uaXRvciA9IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5uYW1lOmlnbm9yZVxuICAgICAgfmhlcmU6aWdub3JlXG4gICAgICB+aWQ6aWdub3JlXG4gICAgICB+Zm9yd2FyZGluZzppZ25vcmVcbiAgICAgIH5uZXh0X2Vycm9yOihjaGVjayAoZnVuIG5leHRfZXJyb3IgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IG5leHRfZXJyb3IpKSlcbiAgICAgIH5oYW5kbGVyc19mb3JfYWxsX2Vycm9yczppZ25vcmVcbiAgICAgIH50YWlsc19mb3JfYWxsX2Vycm9yczppZ25vcmVcbiAgICAgIH5oYXNfc2Vlbl9lcnJvcjppZ25vcmUpXG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpXG5sZXQgY3VycmVudCAoKSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpXG5cbnR5cGUgJ2Egd2l0aF9vcHRpb25hbF9tb25pdG9yX25hbWUgPVxuICA/aGVyZTpTb3VyY2VfY29kZV9wb3NpdGlvbi50IC0+ID9pbmZvOkluZm8udCAtPiA/bmFtZTpzdHJpbmcgLT4gJ2FcblxubGV0IGRldGFjaCB0ID0gdC5mb3J3YXJkaW5nIDwtIERldGFjaGVkXG5cbnR5cGUgaGFuZGxlcl9zdGF0ZSA9XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFJ1bm5pbmcgb2YgKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcuRWx0LnRcbiAgfCBUZXJtaW5hdGVkXG5cbmxldCBkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIHQgfmYgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICBsZXQgaGFuZGxlcl9zdGF0ZV9yZWYgPSByZWYgVW5pbml0aWFsaXplZCBpblxuICBsZXQgcnVuX2YgZXhuID1cbiAgICBtYXRjaCAhaGFuZGxlcl9zdGF0ZV9yZWYgd2l0aFxuICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFRlcm1pbmF0ZWQgLT4gKClcbiAgICB8IFJ1bm5pbmcgYmFnX2VsdCAtPlxuICAgICAgKHRyeSBmIGV4biB3aXRoXG4gICAgICAgfCBpbm5lcl9leG4gLT5cbiAgICAgICAgIGhhbmRsZXJfc3RhdGVfcmVmIDo9IFRlcm1pbmF0ZWQ7XG4gICAgICAgICBCYWcucmVtb3ZlIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgYmFnX2VsdDtcbiAgICAgICAgICgqIFtydW5fZl0gYWx3YXlzIHJ1bnMgaW4gW2V4ZWN1dGlvbl9jb250ZXh0XS4gIEhlbmNlLCBbcmFpc2UgaW5uZXJfZXhuXSBzZW5kc1xuICAgICAgICAgICAgW2lubmVyX2V4bl0gdG8gW2V4ZWN1dGlvbl9jb250ZXh0XSdzIG1vbml0b3IsIGkuZS4gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgICAgICAgIFtkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXSB3YXMgY2FsbGVkLiAqKVxuICAgICAgICAgcmFpc2UgaW5uZXJfZXhuKVxuICBpblxuICBoYW5kbGVyX3N0YXRlX3JlZlxuICA6PSBSdW5uaW5nIChCYWcuYWRkIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgKGV4ZWN1dGlvbl9jb250ZXh0LCBydW5fZikpXG47O1xuXG5sZXQgZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIHQgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIDwtIHRhaWwgOjogdC50YWlsc19mb3JfYWxsX2Vycm9ycztcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBnZXRfbmV4dF9lcnJvciB0ID0gSXZhci5yZWFkIHQubmV4dF9lcnJvclxuXG5sZXQgZGV0YWNoX2FuZF9nZXRfbmV4dF9lcnJvciB0ID1cbiAgZGV0YWNoIHQ7XG4gIGdldF9uZXh0X2Vycm9yIHRcbjs7XG5cbmxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgKCkgPVxuICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgKFNvbWUgcGFyZW50KVxuOztcblxubW9kdWxlIE1vbml0b3JfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleG4gOiBleG5cbiAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgfVxuXG4gIGxldCBiYWNrdHJhY2UgdCA9IHQuYmFja3RyYWNlXG4gIGxldCBleHRyYWN0X2V4biB0ID0gdC5leG5cblxuICBsZXQgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyA9XG4gICAgbGV0IGpvYl9xdWV1ZSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiam9iX3F1ZXVlLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMCA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQxLm1sXFxcIlwiIGluXG4gICAgbGV0IG1vbml0b3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcIm1vbml0b3IubWxcXFwiXCIgaW5cbiAgICBsZXQgaW1wb3J0MCA9IFwiUmFpc2VkIGF0IGZpbGUgXFxcImltcG9ydDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZXJyb3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImVycm9yLm1sXFxcIlwiIGluXG4gICAgZnVuIHRyYWNlcyAtPlxuICAgICAgKCogLi4vdGVzdC90ZXN0X3RyeV93aXRoX2Vycm9yX2Rpc3BsYXkubWwgbWFrZXMgc3VyZSB0aGlzIHN0YXlzIHVwLXRvLWRhdGUuICopXG4gICAgICBsZXQgdHJhY2VzID1cbiAgICAgICAgbWF0Y2ggdHJhY2VzIHdpdGhcbiAgICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmltcG9ydDAgLT5cbiAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDplcnJvciAtPlxuICAgICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0MyA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MyB+cHJlZml4OmVycm9yIC0+IHJlc3RcbiAgICAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICB8IF8gLT4gdHJhY2VzXG4gICAgICBpblxuICAgICAgbWF0Y2ggTGlzdC5yZXYgdHJhY2VzIHdpdGhcbiAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IHQyIDo6IHJlc3RcbiAgICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQwXG4gICAgICAgICAgICAgICAgKCogYmluZCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDFcbiAgICAgICAgICAgICAgICAoKiBtYXAgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6bW9uaXRvclxuICAgICAgICAgICAgICAoKiB0cnlfd2l0aCAqKSAtPiBMaXN0LnJldiByZXN0XG4gICAgICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgfCBfIC0+IHRyYWNlc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgeyBleG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgfSA9XG4gICAgbGV0IG1vbml0b3IgPVxuICAgICAgbGV0IG5hbWUgPVxuICAgICAgICBtYXRjaCBJbmZvLnRvX3N0cmluZ19odW0gbW9uaXRvci5uYW1lIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgICAgfCBzIC0+IFNvbWUgc1xuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBtb25pdG9yLmhlcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaGVyZSAtPlxuICAgICAgICAgICgqIFdlIGRpc3BsYXkgdGhlIGZ1bGwgZmlsZW5hbWUsIHdoZXJlYXMgYmFja3RyYWNlcyBvbmx5IGhhdmUgYmFzZW5hbWVzLCBidXRcbiAgICAgICAgICAgICBwZXJoYXBzIHRoYXQncyB3aGF0IHNob3VsZCBjaGFuZ2UuICopXG4gICAgICAgICAgbGV0IGNvbHVtbiA9IGhlcmUucG9zX2NudW0gLSBoZXJlLnBvc19ib2wgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoKiBXZSBoaWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIHdoZW4gW2FtX3J1bm5pbmdfdGVzdF0gdG8gbWFrZSB0ZXN0IG91dHB1dFxuICAgICAgICAgICAgICAgbW9yZSByb2J1c3QuICBUaGlzIHNhdmVzIHBlb3BsZSBtYW51YWxseSBoaWRpbmcgdGhlIG51bWJlcnMgb3IgZXZlbiB3b3JzZSxcbiAgICAgICAgICAgICAgIGxlYXZpbmcgdGhlbSBpbiB0ZXN0IG91dHB1dC4gIEhpZGluZyBpbiB0ZXN0IGlzIGRpZmZlcmVudCBjaG9pY2UgZm9yXG4gICAgICAgICAgICAgICBiZWhhdmlvciB0aGFuIG91ciBjb2RlYmFzZSBtYWtlcyBmb3IgW0JhY2t0cmFjZS5lbGlkZV0sIHdoaWNoIGhhcyBkZWZhdWx0XG4gICAgICAgICAgICAgICBbZmFsc2VdLCBhbmQgdGh1cyBzaG93cyBiYWNrdHJhY2VzIGluIHRlc3QuICBUaGVyZSBhcmUgYSBjb3VwbGUgcmVhc29ucyBmb3JcbiAgICAgICAgICAgICAgIHRoaXMgZGlmZmVyZW50IGNob2ljZS4gIEZpcnN0LCBleHBlY3QtdGVzdCBtYWNoaW5lcnkgaGFzIGNoZWNrIHRvIHByZXZlbnRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgZnJvbSBhcHBlYXJpbmcgaW4gdGVzdCBvdXRwdXQuICBJdCBoYXMgbm8gc3VjaCBjaGVja3MgZm9yIGxpbmVcbiAgICAgICAgICAgICAgIGFuZCBjb2x1bW4gbnVtYmVycy4gIFNlY29uZCwgd2hlbiB0aGVyZSBpcyBhIHJlYWwgZXJyb3IgYW5kIHlvdSB3YW50IHRvIHNlZVxuICAgICAgICAgICAgICAgdGhlIGJhY2t0cmFjZSwgdGhyb3dpbmcgYXdheSB0aGUgd2hvbGUgYmFja3RyYWNlIGxvc2VzIGEgbG90IG9mIHBvdGVudGlhbGx5XG4gICAgICAgICAgICAgICB1c2VmdWwgaW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgaGFyZCB0byByZWNvdmVyLiAgV2hlcmVhcyB3ZSdyZSBqdXN0XG4gICAgICAgICAgICAgICB0aHJvd2luZyBhIHdheSBhIGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4sIHdoaWNoIGFyZSBhIG1pbm9yIGNvbnZlbmllbmNlXG4gICAgICAgICAgICAgICBnaXZlbiB0aGF0IHRoZSBmaWxlbmFtZSBoYXMgbW9zdCBvZiB0aGUgaW5mb3JtYXRpb24uICopXG4gICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICAgICAgICAgdGhlbiBzcHJpbnRmIFwiZmlsZSAlUywgbGluZSBMSU5FLCBjaGFyYWN0ZXJzIEMxLUMyXCIgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiZmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2xudW1cbiAgICAgICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgIGNvbHVtbilcbiAgICAgIGluXG4gICAgICBtYXRjaCBwb3MsIG5hbWUgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcG9zLCBOb25lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yIGF0ICVzXCIgcG9zIF1cbiAgICAgIHwgTm9uZSwgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzXCIgbmFtZSBdXG4gICAgICB8IFNvbWUgcG9zLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXMgYXQgJXNcIiBuYW1lIHBvcyBdXG4gICAgaW5cbiAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIGJhY2t0cmFjZSAtPiBCYWNrdHJhY2UudG9fc3RyaW5nX2xpc3QgYmFja3RyYWNlXG4gICAgICBpblxuICAgICAgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyBiYWNrdHJhY2UgQCBtb25pdG9yXG4gICAgaW5cbiAgICBsZXQgbGlzdF9pZl9ub3RfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gOjogXyBhcyBsIC0+IFNvbWUgbFxuICAgIGluXG4gICAgWyVzZXhwXG4gICAgICAoZXhuIDogZXhuKVxuICAgICwgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZSA6IChzdHJpbmcgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgLCBgYmFja3RyYWNlX2hpc3RvcnlcbiAgICAgICAgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZV9oaXN0b3J5IDogKEJhY2t0cmFjZS50IGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgOztcbmVuZFxuXG5leGNlcHRpb24gTW9uaXRvcl9leG4gb2YgTW9uaXRvcl9leG4udFxuXG5sZXQgKCkgPVxuICBTZXhwbGliLkNvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTW9uaXRvcl9leG5dIChmdW5jdGlvblxuICAgIHwgTW9uaXRvcl9leG4gdCAtPiBbJXNleHAgXCJtb25pdG9yLm1sLkVycm9yXCIgOjogKHQgOiBNb25pdG9yX2V4bi50KV1cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGV4dHJhY3RfZXhuIGV4biA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgTW9uaXRvcl9leG4gZXJyb3IgLT4gZXJyb3IuZXhuXG4gIHwgZXhuIC0+IGV4blxuOztcblxubGV0IHNlbmRfZXhuIHQgPyhiYWNrdHJhY2UgPSBgR2V0KSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgTW9uaXRvcl9leG4gXyAtPiBleG5cbiAgICB8IF8gLT5cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IGBHZXQgLT4gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudF9mb3JfZXhuIGV4blxuICAgICAgICB8IGBUaGlzIGIgLT4gU29tZSBiXG4gICAgICBpblxuICAgICAgbGV0IGJhY2t0cmFjZV9oaXN0b3J5ID0gKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpLmJhY2t0cmFjZV9oaXN0b3J5IGluXG4gICAgICBNb25pdG9yX2V4biB7IE1vbml0b3JfZXhuLmV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciA9IHQgfVxuICBpblxuICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuIHRoZW4gRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4blwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gIHQuaGFzX3NlZW5fZXJyb3IgPC0gdHJ1ZTtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBJdmFyLmZpbGwgdC5uZXh0X2Vycm9yIGV4bjtcbiAgICB0Lm5leHRfZXJyb3IgPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIC0+XG4gICAgICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuXG4gICAgICB0aGVuXG4gICAgICAgIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG4gZm91bmQgbGlzdGVuaW5nIG1vbml0b3JcIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICAgICAgQmFnLml0ZXIgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIChleGVjdXRpb25fY29udGV4dCwgZikgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgZXhuKTtcbiAgICAgIExpc3QuaXRlciB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gdGFpbCAtPiBUYWlsLmV4dGVuZCB0YWlsIGV4bilcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gbG9vcCBwYXJlbnRcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT5cbiAgICAgICgqIERvIG5vdCBjaGFuZ2UgdGhpcyBicmFuY2ggdG8gcHJpbnQgdGhlIGV4Y2VwdGlvbiBvciB0byBleGl0LiAgSGF2aW5nIHRoZVxuICAgICAgICAgc2NoZWR1bGVyIHJhaXNlIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpcyB0aGUgbmVjZXNzYXJ5IGJlaGF2aW9yIGZvciBwcm9ncmFtc1xuICAgICAgICAgdGhhdCBjYWxsIFtTY2hlZHVsZXIuZ29dIGFuZCB3YW50IHRvIGhhbmRsZSBpdC4gKilcbiAgICAgIFNjaGVkdWxlci4oZ290X3VuY2F1Z2h0X2V4biAodCAoKSkpIGV4biAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSlcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NjaGVkdWxlciA9IHN0cnVjdFxuICBsZXQgd2l0aGluX2NvbnRleHQgY29udGV4dCBmID1cbiAgICBTY2hlZHVsZXIuKHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBjb250ZXh0IH5mOihmdW4gKCkgLT5cbiAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBmIHdpdGhcbiAgICAgIHwgT2sgeCAtPiBPayB4XG4gICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICBzZW5kX2V4biAoRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBjb250ZXh0KSBleG4gfmJhY2t0cmFjZTpgR2V0O1xuICAgICAgICBFcnJvciAoKSlcbiAgOztcblxuICB0eXBlICdhIHdpdGhfb3B0aW9ucyA9ID9tb25pdG9yOnQgLT4gP3ByaW9yaXR5OlByaW9yaXR5LnQgLT4gJ2FcblxuICBsZXQgd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbGV0IHRtcF9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKSA/bW9uaXRvciA/cHJpb3JpdHlcbiAgICBpblxuICAgIHdpdGhpbl9jb250ZXh0IHRtcF9jb250ZXh0IGZcbiAgOztcblxuICBsZXQgd2l0aGluJyA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgT2sgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl92ID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IE5vbmVcbiAgICB8IE9rIHggLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IHdpdGhpbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiAoKVxuICAgIHwgT2sgKCkgLT4gKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrIHggPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIFNjaGVkdWxlci5lbnF1ZXVlXG4gICAgICBzY2hlZHVsZXJcbiAgICAgIChFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgICAgKFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlcilcbiAgICAgICAgID9tb25pdG9yXG4gICAgICAgICA/cHJpb3JpdHkpXG4gICAgICB3b3JrXG4gICAgICB4XG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlID9tb25pdG9yID9wcmlvcml0eSB3b3JrID0gc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrICgpXG5cbiAgbGV0IHNjaGVkdWxlJyA9XG4gICAgKCogRm9yIHBlcmZvcm1hbmNlLCB3ZSB1c2UgW3NjaGVkdWxlX3dpdGhfZGF0YV0gd2l0aCBhIGNsb3NlZCBmdW5jdGlvbiwgYW5kIGlubGluZVxuICAgICAgIFtEZWZlcnJlZC5jcmVhdGVdLiAqKVxuICAgIGxldCB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKSA9IHVwb24gKHdvcmsgKCkpIChmdW4gYSAtPiBJdmFyLmZpbGwgaSBhKSBpblxuICAgIGZ1biA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAtPlxuICAgICAgbGV0IGkgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKTtcbiAgICAgIEl2YXIucmVhZCBpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIHN0YWdlIChmdW4gYSAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgbGV0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpID0gdXBvbiAoZiBhKSAoZnVuIHIgLT4gSXZhci5maWxsIGkgcikgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGkgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpKSlcbiAgOztcbmVuZFxuXG5vcGVuIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IHN0cmVhbV9pdGVyIHN0cmVhbSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzdHJlYW0gPVxuICAgIFN0cmVhbS5uZXh0IHN0cmVhbVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh2LCBzdHJlYW0pIC0+XG4gICAgICBsb29wIHN0cmVhbTtcbiAgICAgIGYgdlxuICBpblxuICBsb29wIHN0cmVhbVxuOztcblxuKCogQW4gWydhIE9rX2FuZF9leG5zLnRdIHJlcHJlc2VudHMgdGhlIG91dHB1dCBvZiBhIGNvbXB1dGF0aW9uIHJ1bm5pbmcgaW4gYSBkZXRhY2hlZFxuICAgbW9uaXRvci4gKilcbm1vZHVsZSBPa19hbmRfZXhucyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgb2sgOiAnYSBEZWZlcnJlZC50XG4gICAgOyBleG5zIDogZXhuIFN0cmVhbS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuIGYgPVxuICAgICgqIFdlIGNhbGwgW2NyZWF0ZV93aXRoX3BhcmVudCBOb25lXSBiZWNhdXNlIFttb25pdG9yXSBkb2VzIG5vdCBuZWVkIGEgcGFyZW50LiAgSXRcbiAgICAgICBkb2VzIG5vdCBiZWNhdXNlIHdlIGNhbGwgW2RldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yXSBhbmQgZGVhbCB3aXRoIHRoZVxuICAgICAgIGVycm9ycyBleHBsaWNpdGx5LCB0aHVzIFtzZW5kX2V4bl0gd291bGQgbmV2ZXIgcHJvcGFnYXRlIGFuIGV4biBwYXN0IFttb25pdG9yXS4gKilcbiAgICBsZXQgbW9uaXRvciA9IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBOb25lIGluXG4gICAgbGV0IGV4bnMgPSBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvciBpblxuICAgIGxldCBvayA9XG4gICAgICBtYXRjaCBydW4gd2l0aFxuICAgICAgfCBgTm93IC0+IHdpdGhpbicgfm1vbml0b3IgZlxuICAgICAgfCBgU2NoZWR1bGUgLT4gc2NoZWR1bGUnIH5tb25pdG9yIGZcbiAgICBpblxuICAgIHsgb2s7IGV4bnMgfVxuICA7O1xuZW5kXG5cbmxldCBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICByZXN1bHRfZmlsbGVyXG4gICAgICByZXN1bHRcbiAgICAgIGV4bnNcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdFxuICA9XG4gIGlmIEl2YXJfZmlsbGVyLmlzX2VtcHR5IHJlc3VsdF9maWxsZXJcbiAgdGhlbiAoXG4gICAgSXZhcl9maWxsZXIuZmlsbCByZXN1bHRfZmlsbGVyIHJlc3VsdDtcbiAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucylcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoX2xvZ19leG4gOiAoZXhuIC0+IHVuaXQpIHJlZiA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImZhaWxlZCB0byBzZXQgW01vbml0b3IuRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5dXCIgKGV4biA6IEV4bi50KV0pXG4gIDs7XG5lbmRcblxubGV0IG1ha2VfaGFuZGxlX2V4biByZXN0ID1cbiAgbWF0Y2ggcmVzdCB3aXRoXG4gIHwgYExvZyAtPlxuICAgICgqIFdlIGFyZSBjYXJlZnVsIHRvIG5vdCBjbG9zZSBvdmVyIGN1cnJlbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IG5lZWRlZC4gKilcbiAgICAhRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5cbiAgfCBgUmFpc2UgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gc2VuZF9leG4gcGFyZW50IGV4biA/YmFja3RyYWNlOk5vbmVcbiAgfCBgQ2FsbCBmIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHdpdGhpbiB+bW9uaXRvcjpwYXJlbnQgKGZ1biAoKSAtPiBmIGV4bilcbjs7XG5cbmxldCB0cnlfd2l0aFxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcIlwiKVxuICAgICAgP2V4dHJhY3RfZXhuOihkb19leHRyYWN0X2V4biA9IGZhbHNlKVxuICAgICAgPyhydW4gPSBgTm93KVxuICAgICAgPyhyZXN0ID0gYFJhaXNlKVxuICAgICAgZlxuICA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gfm5hbWUgfnJ1biBmIGluXG4gIGxldCBoYW5kbGVfZXhuID0gbWFrZV9oYW5kbGVfZXhuIHJlc3QgaW5cbiAgbGV0IGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zID0gc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVfZXhuIGluXG4gICgqIFdlIHJ1biBbd2l0aGluJyB+bW9uaXRvcjptYWluXSB0byBhdm9pZCBob2xkaW5nIG9uIHRvIHJlZmVyZW5jZXMgdG8gdGhlIGV2YWx1YXRpb25cbiAgICAgY29udGV4dCBpbiB3aGljaCBbdHJ5X3dpdGhdIHdhcyBjYWxsZWQuICBUaGlzIGF2b2lkcyBhIHNwYWNlIGxlYWsgd2hlbiBhIGNoYWluIG9mXG4gICAgIFt0cnlfd2l0aF0ncyBhcmUgcnVuIGVhY2ggbmVzdGVkIHdpdGhpbiB0aGUgcHJldmlvdXMgb25lLiAgV2l0aG91dCB0aGUgW3dpdGhpbiddLCB0aGVcbiAgICAgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBpbm5lcm1vc3QgW3RyeV93aXRoXSB3b3VsZCBrZWVwIGFsaXZlIHRoZSBlbnRpcmUgY2hhaW4uICopXG4gIHdpdGhpbicgfm1vbml0b3I6bWFpbiAoZnVuICgpIC0+XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBva1xuICAgIHRoZW4gKFxuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnM7XG4gICAgICByZXR1cm4gKE9rIChEZWZlcnJlZC52YWx1ZV9leG4gb2spKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHRfZmlsbGVyLCByZXN1bHQgPSBJdmFyX2ZpbGxlci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gb2sgKGZ1biByZXMgLT5cbiAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAoT2sgcmVzKVxuICAgICAgICAgIGV4bnNcbiAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgdXBvbiAoU3RyZWFtLm5leHQgZXhucykgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IENvbnMgKGV4biwgZXhucykgLT5cbiAgICAgICAgICBsZXQgZXhuID0gaWYgZG9fZXh0cmFjdF9leG4gdGhlbiBleHRyYWN0X2V4biBleG4gZWxzZSBleG4gaW5cbiAgICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgICAoRXJyb3IgZXhuKVxuICAgICAgICAgICAgZXhuc1xuICAgICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHJlc3VsdCkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfb3JfZXJyb3IgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJ0cnlfd2l0aF9vcl9lcnJvclwiKSA/ZXh0cmFjdF9leG4gP3Jlc3QgZiA9XG4gIHRyeV93aXRoIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuIH5ydW46YE5vdyA/cmVzdCA+PnwgT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuOztcblxubGV0IHRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yXCIpXG4gICAgICA/ZXh0cmFjdF9leG5cbiAgICAgID9yZXN0XG4gICAgICBmXG4gID1cbiAgdHJ5X3dpdGhfb3JfZXJyb3IgZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gP3Jlc3QgPj58IE9yX2Vycm9yLmpvaW5cbjs7XG5cbmxldCBwcm90ZWN0ID9oZXJlID9pbmZvID8obmFtZSA9IFwiTW9uaXRvci5wcm90ZWN0XCIpID9leHRyYWN0X2V4biA/cnVuID9yZXN0IGYgfmZpbmFsbHkgPVxuICBsZXQlYmluZCByID0gdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9oZXJlID9pbmZvID9ydW4gP3Jlc3Qgfm5hbWUgZiBpblxuICBsZXQlbWFwIGZyID1cbiAgICB0cnlfd2l0aFxuICAgICAgfmV4dHJhY3RfZXhuOmZhbHNlXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgIH5ydW46YFNjaGVkdWxlICgqIGNvbnNpZGVyIFt+cnVuOmBOb3ddICopXG4gICAgICA/cmVzdFxuICAgICAgfm5hbWU6XCJmaW5hbGx5XCJcbiAgICAgIGZpbmFsbHlcbiAgaW5cbiAgbWF0Y2ggciwgZnIgd2l0aFxuICB8IEVycm9yIGV4biwgRXJyb3IgZmluYWxseV9leG4gLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIkFzeW5jIGZpbmFsbHlcIiAoZXhuIDogZXhuKSAoZmluYWxseV9leG4gOiBleG4pXVxuICB8IEVycm9yIGUsIE9rICgpIHwgT2sgXywgRXJyb3IgZSAtPiByYWlzZSBlXG4gIHwgT2sgciwgT2sgKCkgLT4gclxuOztcblxubGV0IGhhbmRsZV9lcnJvcnMgP2hlcmUgP2luZm8gP25hbWUgZiBoYW5kbGVyID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgZiBpblxuICBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZXI7XG4gIG9rXG47O1xuXG5sZXQgY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBsZXQgeyBPa19hbmRfZXhucy5leG5zOyBfIH0gPVxuICAgIE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgZiAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgZXhuc1xuOztcblxubGV0IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBtYXRjaCVtYXAgU3RyZWFtLm5leHQgKGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmKSB3aXRoXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIk1vbml0b3IuY2F0Y2ggZ290IHVuZXhwZWN0ZWQgZW1wdHkgc3RyZWFtXCJdXG47O1xuXG5sZXQgY2F0Y2hfZXJyb3IgP2hlcmUgP2luZm8gP25hbWUgZiA9IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPj58IEVycm9yLm9mX2V4blxuXG5tb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gIGxldCBwYXJlbnQgdCA9XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTm9uZVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBTb21lIHBhcmVudFxuICAgIHwgRGV0YWNoZWQgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBkZXB0aCB0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBuID1cbiAgICAgIG1hdGNoIHBhcmVudCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBuXG4gICAgICB8IFNvbWUgdCAtPiBsb29wIHQgKG4gKyAxKVxuICAgIGluXG4gICAgbG9vcCB0IDBcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5pbmNsdWRlIFRhaWwuU3RyZWFtXG5cbmxldCBmaXJzdF9leG4gdCA9XG4gIG1hdGNoJW1hcCBuZXh0IHQgd2l0aFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlN0cmVhbS5maXJzdCBvZiBlbXB0eSBzdHJlYW1cIl1cbiAgfCBDb25zICh4LCBfKSAtPiB4XG47O1xuXG5sZXQgZm9sZCcgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgdXBvbiAobmV4dCB0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICAgIHwgQ29ucyAodiwgdCkgLT4gdXBvbiAoZiBiIHYpIChsb29wIHQpKVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG4oKiBbZm9sZF0gaXMgaW1wbGVtZW50ZWQgdG8gYXZvaWQgcGVyLXN0cmVhbS1lbGVtZW50IGRlZmVycmVkIG92ZXJoZWFkIGluIHRoZSBjYXNlIHdoZW5cbiAgIG11bHRpcGxlIHN0cmVhbSBlbGVtZW50cyBhcmUgYXZhaWxhYmxlIHNpbXVsdGFuZW91c2x5LiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdXBvbiAobmV4dCB0KSAoZnVuIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYilcbiAgICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGJcbiAgICBhbmQgbG9vcF9uZXh0IG5leHQgYiA9XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCBDb25zICh2LCB0KSAtPiBsb29wIHQgKGYgYiB2KVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gXyAtPiBuICsgMSlcbmxldCBpdGVyJyB0IH5mID0gZm9sZCcgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gZiB2KVxuXG5sZXQgY2xvc2VkIHQgPVxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgfCBTb21lIE5pbCAtPiByZXR1cm4gKClcbiAgfCBfIC0+IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBkb24ndF93YWl0X2ZvclxuICAgIChpdGVyJyB0IH5mOihmdW4gYSAtPlxuICAgICAgIGYgYTtcbiAgICAgICByZXR1cm4gKCkpKVxuOztcblxubGV0IGNyZWF0ZSBmID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICAoKiBjb2xsZWN0IGJlZm9yZSBjYWxsaW5nIFtmXSwgaW4gY2FzZSBbZl0gaW1tZWRpYXRlbHkgZXh0ZW5kcy4gKilcbiAgbGV0IHQgPSBUYWlsLmNvbGxlY3QgdGFpbCBpblxuICBmIHRhaWw7XG4gIHRcbjs7XG5cbmxldCB1bmZvbGQgYiB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgYiA9XG4gICAgICB1cG9uIChmIGIpIChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICB8IFNvbWUgKGEsIGIpIC0+XG4gICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCBhO1xuICAgICAgICAgIGxvb3AgYilcbiAgICBpblxuICAgIGxvb3AgYilcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbmxldCB0b19saXN0IHMgPSBmb2xkJyBzIH5pbml0OltdIH5mOihmdW4gYiBhIC0+IHJldHVybiAoYSA6OiBiKSkgPj58IExpc3QucmV2XG5sZXQgY29weV90b190YWlsIHQgdGFpbCA9IGl0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoVGFpbC5leHRlbmQgdGFpbCBhKSlcblxubGV0IGFwcGVuZCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDEgdGFpbCkgKGZ1biAoKSAtPlxuICAgICAgdXBvbiAoY29weV90b190YWlsIHQyIHRhaWwpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpKVxuOztcblxubGV0IGNvbmNhdCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB0IC0+IGNvcHlfdG9fdGFpbCB0IHRhaWwpKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcicgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiAoKVxuICAgICAgICAgfCB0cnVlIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpbHRlcl9tYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHYgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXJfbWFwJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBtYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+IGYgdiA+PnwgVGFpbC5leHRlbmQgdGFpbCkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IG1hcCB0IH5mID0gbWFwJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaXJzdF9uIHMgbiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgcyBuID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgIGVsc2VcbiAgICAgICAgdXBvbiAobmV4dCBzKSAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5pbCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0IChuIC0gMSkpXG4gICAgaW5cbiAgICBsb29wIHMgbilcbjs7XG5cbmxldCBhdmFpbGFibGVfbm93IHQgPVxuICBsZXQgcmVjIGxvb3AgdCBhYyA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBOaWwgLT4gTGlzdC5yZXYgYWMsIHRcbiAgICB8IFNvbWUgKENvbnMgKHgsIHQpKSAtPiBsb29wIHQgKHggOjogYWMpXG4gIGluXG4gIGxvb3AgdCBbXVxuOztcblxubGV0IHNwbGl0ID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKSA/KGYgPSBmdW4gXyAtPiBgQ29udGludWUpIHQgPVxuICBsZXQgcmVhc29uX2Zvcl9zdG9wcGluZyA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBwcmVmaXggPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgZmluaXNoIHYgPVxuICAgIFRhaWwuY2xvc2VfZXhuIHByZWZpeDtcbiAgICBJdmFyLmZpbGwgcmVhc29uX2Zvcl9zdG9wcGluZyB2XG4gIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBjaG9vc2UgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wcGVkKTsgY2hvaWNlIChuZXh0IHQpIChmdW4gbyAtPiBgTmV4dCBvKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcHBlZCAtPiBmaW5pc2ggKGBTdG9wcGVkIHQpXG4gICAgfCBgTmV4dCBvIC0+XG4gICAgICAobWF0Y2ggbyB3aXRoXG4gICAgICAgfCBOaWwgLT4gZmluaXNoIGBFbmRfb2Zfc3RyZWFtXG4gICAgICAgfCBDb25zIChhLCB0KSAtPlxuICAgICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgICAgfCBgQ29udGludWUgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHByZWZpeCBhO1xuICAgICAgICAgICAgbG9vcCB0XG4gICAgICAgICAgfCBgRm91bmQgYiAtPiBmaW5pc2ggKGBGb3VuZCAoYiwgdCkpKSlcbiAgaW5cbiAgbG9vcCB0O1xuICBUYWlsLmNvbGxlY3QgcHJlZml4LCBJdmFyLnJlYWQgcmVhc29uX2Zvcl9zdG9wcGluZ1xuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCBfLCBmb3VuZCA9IHNwbGl0IHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGBGb3VuZCBhIGVsc2UgYENvbnRpbnVlKSBpblxuICBtYXRjaCVtYXAgZm91bmQgd2l0aFxuICB8IGBTdG9wcGVkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKGBFbmRfb2Zfc3RyZWFtIHwgYEZvdW5kIF8pIGFzIHggLT4geFxuOztcblxubGV0IHVuZ3JvdXAgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIGwgLT5cbiAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgICAgICAgcmV0dXJuICgpKSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZSB0cyA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICAoKiBUaGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHNob3VsZCBiZSBjbG9zZWQgd2hlbiB0aGUgb3V0ZXIgc3RyZWFtIGFuZCBhbGwgb2ZcbiAgICAgICB0aGUgaW5uZXIgc3RyZWFtcyBoYXZlIGJlZW4gY2xvc2VkLiAgS2VlcCBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2Ygb3BlblxuICAgICAgIHN0cmVhbXMgYW5kIGNsb3NlIHRoZSBpbnRlcmxlYXZlZCBzdHJlYW0gd2hlbiB0aGF0IGNvdW50IGJlY29tZXNcbiAgICAgICB6ZXJvLiAqKVxuICAgIGxldCBudW1fb3BlbiA9IHJlZiAxIGluXG4gICAgKCogMSBmb3IgdGhlIG91dGVyIHN0cmVhbSB0aGF0IGlzIG9wZW4gKilcbiAgICBsZXQgY2xvc2UgKCkgPVxuICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuIC0gMTtcbiAgICAgIGlmICFudW1fb3BlbiA9IDAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgaW5cbiAgICBsZXQgb3V0ZXJfY2xvc2VkID1cbiAgICAgIGl0ZXInIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICBudW1fb3BlbiA6PSAhbnVtX29wZW4gKyAxO1xuICAgICAgICB1cG9uIChjb3B5X3RvX3RhaWwgdCB0YWlsKSBjbG9zZTtcbiAgICAgICAgcmV0dXJuICgpKVxuICAgIGluXG4gICAgdXBvbiBvdXRlcl9jbG9zZWQgY2xvc2UpXG47O1xuXG5sZXQgdGFrZV91bnRpbCB0IGQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgdXBvblxuICAgICAgICAoY2hvb3NlIFsgY2hvaWNlIGQgKGZ1biAoKSAtPiBgU3RvcCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIHogLT4gYE5leHQgeikgXSlcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgU3RvcCB8IGBOZXh0IE5pbCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICAgICAgfCBgTmV4dCAoQ29ucyAoeCwgdCkpIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIHg7XG4gICAgICAgICAgICBsb29wIHQpXG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5JyB0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbmV4dCB0XG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5ydW46XG4gICAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgICB+cmVzdDpgUmFpc2VcbiAgICAgICAgICAoZnVuICgpIC0+IGYgeClcbiAgICAgICAgPj4+IGZ1biB6IC0+XG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgKG1hdGNoIHogd2l0aFxuICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgfCBFcnJvciBlIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZSlcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbmV4dCB0XG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgKCogV2UgaW1tZWRpYXRlbHkgY2FsbCBbbG9vcF0sIHRodXMgbWFraW5nIHRoZSBpdGVyIGR1cmFibGUuICBBbnkgZXhjZXB0aW9uc1xuICAgICAgICAgICByYWlzZWQgYnkgW2ZdIHdpbGwgbm90IHByZXZlbnQgdGhlIGxvb3AgZnJvbSBjb250aW51aW5nLCBhbmQgd2lsbCBnbyB0byB0aGVcbiAgICAgICAgICAgbW9uaXRvciBvZiB3aG9tZXZlciBjYWxsZWQgW2l0ZXJfZHVyYWJseV9yZXBvcnRfZW5kXS4gKilcbiAgICAgICAgbG9vcCB0O1xuICAgICAgICBmIHhcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHkgdCB+ZiA9IGRvbid0X3dhaXRfZm9yIChpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mKVxuXG5sZXQgb2ZfZnVuIGYgPVxuICB1bmZvbGQgKCkgfmY6KGZ1biAoKSAtPlxuICAgIGxldCVtYXAgYSA9IGYgKCkgaW5cbiAgICBTb21lIChhLCAoKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICgnYSwgJ3Blcm1pc3Npb24pIFR5cGVzLkJ2YXIudFxuXG50eXBlICdhIHJlcHIgPSAnYSBUeXBlcy5CdmFyLnJlcHIgPVxuICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gcmVwciBbJXNleHBfb2Y6IF8gcmVwcl0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHJlcHIgZiBpblxuICAgIEZpZWxkc19vZl9yZXByLml0ZXJcbiAgICAgIH5oYXNfYW55X3dhaXRlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGhhc19hbnlfd2FpdGVycyAtPlxuICAgICAgICAgICBpZiBJdmFyLmhhc19oYW5kbGVycyByZXByLml2YXIgdGhlbiBhc3NlcnQgaGFzX2FueV93YWl0ZXJzKSlcbiAgICAgIH5pdmFyOlxuICAgICAgICAoY2hlY2sgKGZ1biBpdmFyIC0+XG4gICAgICAgICAgIEl2YXIuaW52YXJpYW50IGludmFyaWFudF9hIGl2YXI7XG4gICAgICAgICAgIGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpKVxuOztcblxubGV0IHNleHBfb2ZfdCBfIF8gdCA9XG4gIGxldCB7IGhhc19hbnlfd2FpdGVyczsgaXZhciA9IF8gfSA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gICgqIFdlIGRvbid0IHNob3cgW2l2YXJdIGJlY2F1c2UgaXQncyBhbHdheXMgZW1wdHkuICopXG4gIFslbWVzc2FnZSAoaGFzX2FueV93YWl0ZXJzIDogYm9vbCldXG47O1xuXG5pbmNsdWRlIFNjaGVkdWxlcjEuQnZhclxuXG5sZXQgYnJvYWRjYXN0IHQgYSA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgaWYgcmVwci5oYXNfYW55X3dhaXRlcnNcbiAgdGhlbiAoXG4gICAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gZmFsc2U7XG4gICAgSXZhci5maWxsIHJlcHIuaXZhciBhO1xuICAgIHJlcHIuaXZhciA8LSBJdmFyLmNyZWF0ZSAoKSlcbjs7XG5cbmxldCB3YWl0IHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIHRydWU7XG4gIEl2YXIucmVhZCByZXByLml2YXJcbjs7XG5cbmxldCBoYXNfYW55X3dhaXRlcnMgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnNcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5jbG9ja1xuXG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHVwb24gPSBEZWZlcnJlZC51cG9uXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgKCA+Pj4gKSA9IHVwb25cblxubW9kdWxlIFQxID0gc3RydWN0XG4gIGluY2x1ZGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLlQxXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwiPHdhbGxfY2xvY2s+XCJdXG4gICAgZWxzZVxuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIChpc193YWxsX2Nsb2NrIDogYm9vbClcbiAgICAgICAgICAoKiBXZSBkb24ndCBkaXNwbGF5IHRoZSBbSm9iLnRdcyBpbiBbZXZlbnRzXSBiZWNhdXNlIHRob3NlIGFyZVxuICAgICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICAgIChldmVudHMgOiBfIFRpbWluZ193aGVlbC50KV1cbiAgOztcbmVuZFxuXG5vcGVuIFQxXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xubGV0IHJlYWRfb25seSAodCA6IFs+IHJlYWQgXSBUMS50KSA9ICh0IDo+IHQpXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyLmNyZWF0ZV90aW1lX3NvdXJjZVxubGV0IHdhbGxfY2xvY2sgPSBTY2hlZHVsZXIud2FsbF9jbG9ja1xubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5sZXQgdGltaW5nX3doZWVsX25vdyB0ID0gVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c1xubGV0IGlkIHQgPSB0LmlkXG5cbm1vZHVsZSBJZCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5JZFxuXG5sZXQgbm93IHQgPVxuICBpZiB0LmlzX3dhbGxfY2xvY2tcbiAgdGhlblxuICAgICgqIEZvciB0aGUgd2FsbC1jbG9jayB0aW1lLXNvdXJjZSwgd2UgdXNlIFtUaW1lX25zLm5vdyAoKV0gcmF0aGVyIHRoYW5cbiAgICAgICBbVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c10uICBUaGUgbGF0dGVyIGlzIG9ubHkgdXBkYXRlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaFxuICAgICAgIGN5Y2xlLiAgVGhlcmUgY2FuIGJlIHN1YnN0YW50aWFsIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHdoZW4gcGVvcGxlIGRvIGxvbmdcbiAgICAgICBydW5uaW5nIGNvbXB1dGF0aW9ucyBvciBtaXggYmxvY2tpbmcgY29kZSB3aXRoIGFzeW5jLiAgQW5kIGh1bWFucyBleHBlY3QgdGhhdFxuICAgICAgIHdhbGwtY2xvY2sgdGltZSBpcyBiYXNlZCBvbiBbVGltZS5ub3ddLCBub3Qgc29tZSBhcnRpZmFjdCBvZiBhc3luY1xuICAgICAgIGltcGxlbWVudGF0aW9uLiAqKVxuICAgIFRpbWVfbnMubm93ICgpXG4gIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG47O1xuXG4oKiBXZSBwcmVhbGxvY2F0ZSBbc2VuZF9leG5dIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24gZWFjaCBjYWxsIHRvIFthZHZhbmNlX2Nsb2NrXS4gKilcbmxldCBzZW5kX2V4biA9IFNvbWUgTW9uaXRvci5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHlfYnkgdCBieSA9IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5sZXQgYWR2YW5jZSA9IGFkdmFuY2VfZGlyZWN0bHlcbmxldCBhZHZhbmNlX2J5ID0gYWR2YW5jZV9kaXJlY3RseV9ieVxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5maXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCAoU2NoZWR1bGVyLnlpZWxkIHQuc2NoZWR1bGVyKVxuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0LmV2ZW50cyB3aXRoXG4gICAgfCBOb25lIC0+IGZpbmlzaCAoKVxuICAgIHwgU29tZSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0b19cbiAgICAgIHRoZW4gZmluaXNoICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b186bWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsO1xuICAgICAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgICAgIGxldCBxdWV1ZWRfYWxhcm1zX3JhbiA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgcXVldWVkX2FsYXJtc19yYW5cbiAgICAgICAgdGhlbiB3YWxrX2FsYXJtcyAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQlYmluZCAoKSA9IHF1ZXVlZF9hbGFybXNfcmFuIGluXG4gICAgICAgICAgd2Fsa19hbGFybXMgKCkpKVxuICBpblxuICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAoKiBzbyB0aGF0IGFsYXJtcyBzY2hlZHVsZWQgYXQgb3IgYmVmb3JlIFt0b19dIGZpcmUgKilcbiAgICBydW5fcXVldWVkX2FsYXJtcyAoKVxuICBpblxuICBsZXQgcmVjIHdhbGtfYWxhcm1zICgpID1cbiAgICBtYXRjaCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmaW5pc2ggKClcbiAgICB8IFNvbWUgbmV4dF9hbGFybV9maXJlc19hdCAtPlxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbmV4dF9hbGFybV9maXJlc19hdCB0b19cbiAgICAgIHRoZW4gZmluaXNoICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKTtcbiAgICAgICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICAgICBsZXQgcXVldWVkX2FsYXJtc19yYW4gPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHF1ZXVlZF9hbGFybXNfcmFuXG4gICAgICAgIHRoZW4gd2Fsa19hbGFybXMgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0JWJpbmQgKCkgPSBxdWV1ZWRfYWxhcm1zX3JhbiBpblxuICAgICAgICAgIHdhbGtfYWxhcm1zICgpKSlcbiAgaW5cbiAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtc19ieSA/d2FpdF9mb3IgdCBieSA9XG4gIGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbjs7XG5cbmxldCBzcGFuX3RvX3RpbWUgdCBzcGFuID0gVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW5cblxubGV0IHNjaGVkdWxlX2pvYiB0IH5hdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBsZXQgYWxhcm0gPVxuICAgIFRpbWluZ193aGVlbC5hZGRcbiAgICAgIHQuZXZlbnRzXG4gICAgICB+YXRcbiAgICAgIChKb2Jfb3JfZXZlbnQub2Zfam9iIChTY2hlZHVsZXIuY3JlYXRlX2pvYiB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGEpKVxuICBpblxuICAobWF0Y2ggdC5zY2hlZHVsZXIuZXZlbnRfYWRkZWRfaG9vayB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmIC0+IGYgYXQpO1xuICBhbGFybVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgaW5cbiAgaWYgVGltZV9ucy4oID4gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICB0aGVuIHNjaGVkdWxlX2pvYiB0IH5hdDp0aW1lIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBlbHNlIChcbiAgICBTY2hlZHVsZXIuZW5xdWV1ZSB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgQWxhcm0ubnVsbCAoKSlcbjs7XG5cbmxldCBydW5fYXQgdCB0aW1lIGYgYSA9IGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgOiBfIEFsYXJtLnQpXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBmIGEgPSBydW5fYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbikgZiBhXG5cbmxldCBhdCA9XG4gIGxldCBmaWxsIHJlc3VsdCA9IEl2YXIuZmlsbCByZXN1bHQgKCkgaW5cbiAgZnVuIHQgdGltZSAtPlxuICAgIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gICAgdGhlbiByZXR1cm4gKClcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGZpbGwgcmVzdWx0IDogXyBBbGFybS50KTtcbiAgICAgIEl2YXIucmVhZCByZXN1bHQpXG47O1xuXG5sZXQgYWZ0ZXIgdCBzcGFuID0gYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbilcblxubGV0IHJlbW92ZV9hbGFybSB0IGFsYXJtIDogdW5pdCA9XG4gIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSB0LmV2ZW50cyBhbGFybSBpblxuICAobGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gICB8IEpvYiwgam9iIC0+IFNjaGVkdWxlci5mcmVlX2pvYiB0LnNjaGVkdWxlciBqb2JcbiAgIHwgRXZlbnQsIF8gLT5cbiAgICAgKCogVGhpcyBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIFthbGFybV0gb25seSBldmVyIGNvbWVzIGZyb20gW0V2ZW50LmFsYXJtXSB3aGljaCBvbmx5XG4gICAgICAgIGV2ZXIgZ2V0cyBwb3B1bGF0ZWQgYnkgYSBjYWxsIHRvIFtzY2hlZHVsZV9qb2JdLiAqKVxuICAgICBhc3NlcnQgZmFsc2UpO1xuICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGFsYXJtXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0IGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSB0LmV2ZW50cyBhbGFybSB0aGVuIHJlbW92ZV9hbGFybSB0IGFsYXJtXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpcmVkID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgIDsgbXV0YWJsZSBmaXJlIDogdW5pdCAtPiB1bml0XG4gICAgOyAoKiBBcyBsb25nIGFzIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgd2UgaGF2ZSBub3QgeWV0IGNvbW1pdHRlZCB0byB3aGV0aGVyIHRoZSBldmVudFxuICAgICAgICAgd2lsbCBoYXBwZW4gb3IgYmUgYWJvcnRlZC4gIFdoZW4gW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB0aGUgYWxhcm0gbWF5IG9yIG1heSBub3RcbiAgICAgICAgIGJlIGluIHRoZSB0aW1pbmcgd2hlZWwgLS0gaWYgaXQgaXNuJ3QsIHRoZW4gdGhlcmUncyBhIGpvYiBpbiBBc3luYydzIGpvYiBxdWV1ZVxuICAgICAgICAgdGhhdCB3aWxsIGZpcmUgdGhlIGV2ZW50LCB1bmxlc3MgaXQgaXMgYWJvcnRlZCBiZWZvcmUgdGhhdCBqb2IgY2FuIHJ1bi4gKilcbiAgICAgIGZpcmVkIDogKCdhLCAnaCkgRmlyZWQudCBJdmFyLnRcbiAgICA7ICgqIFtudW1fZmlyZXNfdG9fc2tpcF0gaXMgdXNlZCB0byByZXNjaGVkdWxlIGV2ZW50cyB0aGF0IGhhdmUgZmlyZWQgYW5kIGVudGVyZWQgdGhlXG4gICAgICAgICBBc3luYyBqb2IgcXVldWUsIGJ1dCBoYXZlIG5vdCB5ZXQgcnVuLiAgVGhvc2Ugam9icyBvbmx5IHJ1biBpZiBbbnVtX2ZpcmVzX3RvX3NraXBcbiAgICAgICAgID0gMF0sIGFuZCBvdGhlcndpc2UganVzdCBkZWNyZW1lbnQgaXQuICBTbywgdG8gcmVzY2hlZHVsZSBhbiBldmVudCBpbiBzdWNoIGFcbiAgICAgICAgIHN0YXRlLCB3ZSBpbmNyZW1lbnQgW251bV9maXJlc190b19za2lwXSBhbmQgYWRkIGEgbmV3IGFsYXJtIHRvIHRoZSB0aW1pbmdcbiAgICAgICAgIHdoZWVsLiAqKVxuICAgICAgbXV0YWJsZSBudW1fZmlyZXNfdG9fc2tpcCA6IGludFxuICAgIDsgKCogW3NjaGVkdWxlZF9hdF0gaXMgdGhlIHRpbWUgYXQgd2hpY2ggW3RdIGhhcyBtb3N0IHJlY2VudGx5IGJlZW4gc2NoZWR1bGVkIHRvIGZpcmUuXG4gICAgICAgICBXaGlsZSBbdC5hbGFybV0gaXMgc3RpbGwgaW4gdGhlIHRpbWluZyB3aGVlbCwgdGhpcyBpcyB0aGUgc2FtZSBhcyBbQWxhcm0uYXRcbiAgICAgICAgIHQuYWxhcm1dLiAqKVxuICAgICAgbXV0YWJsZSBzY2hlZHVsZWRfYXQgOiBUaW1lX25zLnRcbiAgICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGZpcmVkIHQgPSBJdmFyLnJlYWQgdC5maXJlZFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2ggdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGV2ZW50cyA9IHQudGltZV9zb3VyY2UuZXZlbnRzIGluXG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmZpcmVkXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKG5vdCAoVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm0pKVxuICAgICAgICAgICAgIGVsc2UgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm1cbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoSm9iX29yX2V2ZW50LmlzX2pvYiAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSkpKVxuICAgICAgICB+ZmlyZTppZ25vcmVcbiAgICAgICAgfmZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIChmaXJlZCA6IF8gRmlyZWQudCBJdmFyLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIGZpcmVkKSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IGludmFyaWFudF9hIGFcbiAgICAgICAgICAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IGludmFyaWFudF9oIGgpKVxuICAgICAgICB+bnVtX2ZpcmVzX3RvX3NraXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2ZpcmVzX3RvX3NraXAgLT4gYXNzZXJ0IChudW1fZmlyZXNfdG9fc2tpcCA+PSAwKSkpXG4gICAgICAgIH5zY2hlZHVsZWRfYXQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2NoZWR1bGVkX2F0IC0+XG4gICAgICAgICAgICAgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgdC5hbGFybVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICAgICAgc2NoZWR1bGVkX2F0XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6KEFsYXJtLmF0IGV2ZW50cyB0LmFsYXJtKSkpXG4gICAgICAgIH50aW1lX3NvdXJjZTppZ25vcmUpXG4gIDs7XG5cbiAgbW9kdWxlIFN0YXR1cyA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWVfbnMudFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBzdGF0dXMgdCA6IF8gU3RhdHVzLnQgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmZpcmVkKSB3aXRoXG4gICAgfCBOb25lIC0+IFNjaGVkdWxlZF9hdCB0LnNjaGVkdWxlZF9hdFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBBYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IEhhcHBlbmVkIGhcbiAgOztcblxuICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIG9mICdhXG4gICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudCA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5hYm9ydFwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoZmlyZWQgdCkgd2l0aFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBQcmV2aW91c2x5X2Fib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gUHJldmlvdXNseV9oYXBwZW5lZCBoXG4gICAgfCBOb25lIC0+XG4gICAgICBJdmFyLmZpbGwgdC5maXJlZCAoQWJvcnRlZCBhKTtcbiAgICAgIHJlbW92ZV9hbGFybV9pZl9zY2hlZHVsZWQgdC50aW1lX3NvdXJjZSB0LmFsYXJtO1xuICAgICAgT2tcbiAgOztcblxuICBsZXQgYWJvcnRfZXhuIHQgYSA9XG4gICAgbWF0Y2ggYWJvcnQgdCBhIHdpdGhcbiAgICB8IE9rIC0+ICgpXG4gICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIF8gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQ2xvY2suRXZlbnQuYWJvcnRfZXhuIGZhaWxlZCB0byBhYm9ydCBldmVudCB0aGF0IHByZXZpb3VzbHkgaGFwcGVuZWRcIl1cbiAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGFib3J0ZWRcIl1cbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEgOiBfIEFib3J0X3Jlc3VsdC50KVxuICBsZXQgc2NoZWR1bGUgdCA9IHQuYWxhcm0gPC0gcnVuX2F0X2ludGVybmFsIHQudGltZV9zb3VyY2UgdC5zY2hlZHVsZWRfYXQgdC5maXJlICgpXG5cbiAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIG9mICdhXG4gICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGF0IDogXyBSZXNjaGVkdWxlX3Jlc3VsdC50ID1cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LnJlc2NoZWR1bGVfYXRcIiAodCwgYXQpIFslc2V4cF9vZjogKF8sIF8pIHQgKiBUaW1lX25zLnRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGV2ZW50cyA9IHQudGltZV9zb3VyY2UuZXZlbnRzIGluXG4gICAgICBsZXQgaXNfaW5fdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLm1lbSBldmVudHMgdC5hbGFybSBpblxuICAgICAgbGV0IGFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZV9mdXR1cmUgPVxuICAgICAgICBUaW1lX25zLiggPiApIGF0IChUaW1pbmdfd2hlZWwubm93IGV2ZW50cylcbiAgICAgIGluXG4gICAgICB0LnNjaGVkdWxlZF9hdCA8LSBhdDtcbiAgICAgIChtYXRjaCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlLCBpc19pbl90aW1pbmdfd2hlZWwgd2l0aFxuICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+ICgpXG4gICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgdC50aW1lX3NvdXJjZS5oYW5kbGVfZmlyZWQgdC5hbGFybTtcbiAgICAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgZXZlbnRzIHQuYWxhcm1cbiAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgKyAxO1xuICAgICAgICAgc2NoZWR1bGUgdFxuICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBUaW1pbmdfd2hlZWwucmVzY2hlZHVsZSBldmVudHMgdC5hbGFybSB+YXQpO1xuICAgICAgT2tcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hZnRlciB0IHNwYW4gPSByZXNjaGVkdWxlX2F0IHQgKHNwYW5fdG9fdGltZSB0LnRpbWVfc291cmNlIHNwYW4pXG5cbiAgbGV0IHJ1bl9hdCB0aW1lX3NvdXJjZSBzY2hlZHVsZWRfYXQgZiB6ID1cbiAgICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LnJ1bl9hdFwiIHNjaGVkdWxlZF9hdCBbJXNleHBfb2Y6IFRpbWVfbnMudF07XG4gICAgbGV0IHQgPVxuICAgICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICAgIDsgZmlyZSA9IGlnbm9yZSAoKiBzZXQgYmVsb3cgKilcbiAgICAgIDsgZmlyZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgOyBudW1fZmlyZXNfdG9fc2tpcCA9IDBcbiAgICAgIDsgc2NoZWR1bGVkX2F0XG4gICAgICA7IHRpbWVfc291cmNlID0gcmVhZF9vbmx5IHRpbWVfc291cmNlXG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgZmlyZSAoKSA9XG4gICAgICAoKiBbZmlyZV0gcnVucyBpbiBhbiBBc3luYyBqb2IuICBUaGUgZXZlbnQgbWF5IGhhdmUgYmVlbiBhYm9ydGVkIGFmdGVyIHRoZSBqb2JcbiAgICAgICAgIHdhcyBlbnF1ZXVlZCwgc28gW2ZpcmVdIG11c3QgY2hlY2sgW2ZpcmVkXS4gKilcbiAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZFxuICAgICAgdGhlblxuICAgICAgICBpZiB0Lm51bV9maXJlc190b19za2lwID4gMFxuICAgICAgICB0aGVuIHQubnVtX2ZpcmVzX3RvX3NraXAgPC0gdC5udW1fZmlyZXNfdG9fc2tpcCAtIDFcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGYgeiBpblxuICAgICAgICAgICgqIFtmIHpdIG1heSBoYXZlIGFib3J0ZWQgdGhlIGV2ZW50LCBzbyB3ZSBtdXN0IGNoZWNrIFtmaXJlZF0gYWdhaW4uICopXG4gICAgICAgICAgaWYgSXZhci5pc19lbXB0eSB0LmZpcmVkIHRoZW4gSXZhci5maWxsIHQuZmlyZWQgKEhhcHBlbmVkIHJlc3VsdCkpXG4gICAgaW5cbiAgICB0LmZpcmUgPC0gZmlyZTtcbiAgICBzY2hlZHVsZSB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgYXQgdGltZV9zb3VyY2UgdGltZSA9IHJ1bl9hdCB0aW1lX3NvdXJjZSB0aW1lIGlnbm9yZSAoKVxuXG4gIGxldCBydW5fYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiBmIGEgPVxuICAgIHJ1bl9hdCB0aW1lX3NvdXJjZSAoc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW4pIGYgYVxuICA7O1xuXG4gIGxldCBhZnRlciB0aW1lX3NvdXJjZSBzcGFuID0gYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKVxuZW5kXG5cbmxldCBhdF90aW1lcyA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgdCBuZXh0X3RpbWUgPVxuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgY2hvb3NlXG4gICAgICBbIGNob2ljZSBzdG9wIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKGF0IHQgKG5leHRfdGltZSAoKSkpIChmdW4gKCkgLT4gYFRpY2spIF1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IGBTdG9wIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICB8IGBUaWNrIC0+XG4gICAgICBUYWlsLmV4dGVuZCB0YWlsICgpO1xuICAgICAgbG9vcCAoKVxuICBpblxuICBsb29wICgpO1xuICBUYWlsLmNvbGxlY3QgdGFpbFxuOztcblxubGV0IGF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wIHQgY29tcHV0ZV9zcGFuID1cbiAgYXRfdGltZXMgdCA/c3RvcCAoZnVuICgpIC0+IFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSAoY29tcHV0ZV9zcGFuICgpKSlcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wIHQgaW50ZXJ2YWwgPVxuICBsZXQgc3RhcnQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IG5vdyB0XG4gIGluXG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPlxuICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZTpzdGFydCB+YWZ0ZXI6KG5vdyB0KSB+aW50ZXJ2YWwgKCkpXG47O1xuXG5tb2R1bGUgQ29udGludWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEltbWVkaWF0ZWx5XG4gICAgfCBBZnRlciBvZiBUaW1lX25zLlNwYW4udFxuICAgIHwgTmV4dF9tdWx0aXBsZSBvZiBUaW1lX25zLnQgKiBUaW1lX25zLlNwYW4udFxuXG4gIGxldCBpbW1lZGlhdGVseSA9IEltbWVkaWF0ZWx5XG5cbiAgbGV0IGF0IHQgdGltZV9zb3VyY2UgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1tZWRpYXRlbHkgLT4gVGltaW5nX3doZWVsLm5vdyB0aW1lX3NvdXJjZS5ldmVudHNcbiAgICB8IEFmdGVyIHNwYW4gLT4gc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW5cbiAgICB8IE5leHRfbXVsdGlwbGUgKGJhc2UsIGludGVydmFsKSAtPlxuICAgICAgVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlIH5hZnRlcjoobm93IHRpbWVfc291cmNlKSB+aW50ZXJ2YWwgKClcbiAgOztcbmVuZFxuXG5sZXQgcnVuX3JlcGVhdGVkbHlcbiAgICAgID8oc3RhcnQgPSByZXR1cm4gKCkpXG4gICAgICA/c3RvcFxuICAgICAgPyhjb250aW51ZV9vbl9lcnJvciA9IHRydWUpXG4gICAgICA/KGZpbmlzaGVkID0gSXZhci5jcmVhdGUgKCkpXG4gICAgICB0XG4gICAgICB+ZlxuICAgICAgfmNvbnRpbnVlXG4gID1cbiAgc3RhcnRcbiAgPj4+IGZ1biAoKSAtPlxuICBsZXQgYWxhcm0gPSByZWYgKEFsYXJtLm51bGwgKCkpIGluXG4gIGxldCBzdG9wID1cbiAgICBtYXRjaCBzdG9wIHdpdGhcbiAgICB8IE5vbmUgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IFNvbWUgc3RvcCAtPlxuICAgICAgdXBvbiBzdG9wIChmdW4gKCkgLT5cbiAgICAgICAgaWYgVGltaW5nX3doZWVsLm1lbSB0LmV2ZW50cyAhYWxhcm1cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcmVtb3ZlX2FsYXJtIHQgIWFsYXJtO1xuICAgICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKSkpO1xuICAgICAgc3RvcFxuICBpblxuICAoKiBbcnVuX2ZdLCBbY29udGludWVfZl0sIGFuZCBbY29udGludWVfdHJ5X3dpdGhdIGFyZSBkZWZpbmVkIHNvIHRoYXQgd2UgYWxsb2NhdGUgdGhlaXJcbiAgICAgY2xvc3VyZXMgb25jZSwgbm90IG9uY2UgcGVyIGl0ZXJhdGlvbi4gKilcbiAgbGV0IHJlYyBydW5fZiAoKSA9XG4gICAgKCogQmVmb3JlIGNhbGxpbmcgW2ZdLCB3ZSBzeW5jaHJvbm91c2x5IGNoZWNrIHdoZXRoZXIgW3N0b3BdIGlzIGRldGVybWluZWQuICopXG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGlmIGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBNb25pdG9yLnRyeV93aXRoIGYgfnJ1bjpgTm93IH5yZXN0OmBSYWlzZSA+Pj4gY29udGludWVfdHJ5X3dpdGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBkID0gZiAoKSBpblxuICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gY29udGludWVfZiAoKSBlbHNlIGQgPj4+IGNvbnRpbnVlX2YpXG4gIGFuZCBjb250aW51ZV9mICgpID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKVxuICAgIGVsc2UgYWxhcm0gOj0gcnVuX2F0X2ludGVybmFsIHQgKENvbnRpbnVlLmF0IGNvbnRpbnVlIHQpIHJ1bl9mICgpXG4gIGFuZCBjb250aW51ZV90cnlfd2l0aCBvcl9lcnJvciA9XG4gICAgKG1hdGNoIG9yX2Vycm9yIHdpdGhcbiAgICAgfCBPayAoKSAtPiAoKVxuICAgICB8IEVycm9yIGVycm9yIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXJyb3IpO1xuICAgIGNvbnRpbnVlX2YgKClcbiAgaW5cbiAgcnVuX2YgKClcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgdCBzcGFuIGYgPVxuICBpZiBUaW1lX25zLlNwYW4uKCA8PSApIHNwYW4gVGltZV9ucy5TcGFuLnplcm9cbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLmV2ZXJ5IGdvdCBub25wb3NpdGl2ZSBzcGFuXCIgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICBydW5fcmVwZWF0ZWRseSB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIH5mIH5jb250aW51ZTooQWZ0ZXIgc3Bhbilcbjs7XG5cbmxldCBldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgc3BhbiBmID1cbiAgZXZlcnknIHQgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQ6Tm9uZSBzcGFuIChmdW4gKCkgLT5cbiAgICBmICgpO1xuICAgIHJldHVybiAoKSlcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgZiA9XG4gIGxldCBub3cgPSBub3cgdCBpblxuICBsZXQgYmFzZSwgc3RhcnQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IE5vbmUgLT4gbm93LCBOb25lXG4gICAgfCBTb21lIHN0YXJ0IC0+XG4gICAgICAoIHN0YXJ0XG4gICAgICAsIFNvbWVcbiAgICAgICAgICAoYXRcbiAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgKFRpbWVfbnMubmV4dF9tdWx0aXBsZVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgfmJhc2U6c3RhcnRcbiAgICAgICAgICAgICAgICB+YWZ0ZXI6bm93XG4gICAgICAgICAgICAgICAgfmNhbl9lcXVhbF9hZnRlcjp0cnVlXG4gICAgICAgICAgICAgICAgfmludGVydmFsKSkgKVxuICBpblxuICBydW5fcmVwZWF0ZWRseVxuICAgIHRcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgIH5mXG4gICAgfmNvbnRpbnVlOihOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgZiA9XG4gIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgd2l0aF90aW1lb3V0IHQgc3BhbiBkID1cbiAgbGV0IHRpbWVvdXQgPSBFdmVudC5hZnRlciB0IHNwYW4gaW5cbiAgY2hvb3NlXG4gICAgKCogVGhlIGNvZGUgYmVsb3cgZG9lcyBleGhhdXN0aXZlIGNhc2UgYW5hbHlzaXMgaW4gYm90aCBbY2hvaWNlXXMuICBCZWNhdXNlIFt0aW1lb3V0XVxuICAgICAgIGRvZXMgbm90IGVzY2FwZSB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbiwgY2VydGFpbiBjYXNlcyBzaG91bGQgYmUgaW1wb3NzaWJsZSwgYW5kXG4gICAgICAgYXJlIG1hcmtlZCBhcyBzdWNoIHdpdGggZXhjZXB0aW9ucy4gIFdlIGRvIG5vdCBleHBlY3QgdGhvc2UgZXhjZXB0aW9ucyB0byBvY2N1cixcbiAgICAgICBidXQgaWYgdGhleSBkbywgaXQgbGlrZWx5IGluZGljYXRlcyBhIGJ1ZyBpbiBbY2hvb3NlXSByYXRoZXIgdGhhblxuICAgICAgIFt3aXRoX3RpbWVvdXRdLiAqKVxuICAgIFsgY2hvaWNlIGQgKGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBFdmVudC5hYm9ydCB0aW1lb3V0ICgpIHdpdGhcbiAgICAgICAgICgqIFtQcmV2aW91c2x5X2hhcHBlbmVkXSBjYW4gb2NjdXIgaWYgYm90aCBbZF0gYW5kIFt3YWl0XSBiZWNvbWUgZGV0ZXJtaW5lZCBhdFxuICAgICAgICAgICAgdGhlIHNhbWUgdGltZSwgZS5nLiBbd2l0aF90aW1lb3V0IChzZWMgMC4pIChyZXR1cm4gKCkpXS4gKilcbiAgICAgICAgIHwgT2sgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+ICgpXG4gICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPlxuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLndpdGhfdGltZW91dCBidWc6IHNob3VsZCBvbmx5IGFib3J0IG9uY2VcIl0pO1xuICAgICAgICBgUmVzdWx0IHYpXG4gICAgOyBjaG9pY2UgKEV2ZW50LmZpcmVkIHRpbWVvdXQpIChmdW5jdGlvblxuICAgICAgICB8IEhhcHBlbmVkICgpIC0+IGBUaW1lb3V0XG4gICAgICAgIHwgQWJvcnRlZCAoKSAtPlxuICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLndpdGhfdGltZW91dCBidWc6IGJvdGggY29tcGxldGVkIGFuZCB0aW1lZCBvdXRcIl0pXG4gICAgXVxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCVtYXAgcmVzdWx0ID0gZiAoKSBpblxuICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICByZXN1bHQsIGR1cmF0aW9uXG47O1xuXG5sZXQgb2Zfc3luY2hyb25vdXMgdCA9IHRcbmxldCB0b19zeW5jaHJvbm91cyB0ID0gdFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIF8gdCA9XG4gIHwgU3RhY2sgOiAnYSBTdGFjay50IC0+ICdhIHRcbiAgfCBDb3VudGVyIDogeyBtdXRhYmxlIGxlbmd0aCA6IGludCB9IC0+IHVuaXQgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG9mX2xpc3QgbGlzdCA9IFN0YWNrIChTdGFjay5vZl9saXN0IGxpc3QpXG5cbmxldCBjcmVhdGVfY291bnRlciB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXJdIGdvdCBuZWdhdGl2ZSBsZW5ndGhcIiAobGVuZ3RoIDogaW50KV07XG4gIENvdW50ZXIgeyBsZW5ndGggfVxuOztcblxubGV0IGxlbmd0aCAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmxlbmd0aCBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoXG47O1xuXG5sZXQgY2xlYXIgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5jbGVhciBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBwdXNoICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wdXNoIHMgYVxuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSByLmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3BfZXhuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucG9wX2V4biBzXG4gIHwgQ291bnRlciByIC0+XG4gICAgaWYgci5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5wb3BfZXhuXSBvZiBlbXB0eSBzdGFja1wiXTtcbiAgICByLmxlbmd0aCA8LSByLmxlbmd0aCAtIDFcbjs7XG5cbmxldCBpdGVyICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBhIC0+IHVuaXQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5pdGVyIHMgfmZcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBmb3IgXyA9IDEgdG8gci5sZW5ndGggZG9cbiAgICAgIGYgKClcbiAgICBkb25lXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG50eXBlICdhIG91dGNvbWUgPVxuICBbIGBPayBvZiAnYVxuICB8IGBBYm9ydGVkXG4gIHwgYFJhaXNlZCBvZiBleG5cbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIEludGVybmFsX2pvYiA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdiIERlZmVycmVkLnQpIC0+ICdhIHQgKiAnYiBvdXRjb21lIERlZmVycmVkLnRcblxuICAoKiBFdmVyeSBpbnRlcm5hbCBqb2Igd2lsbCBldmVudHVhbGx5IGJlIGVpdGhlciBbcnVuXSBvciBbYWJvcnRdZWQsIGJ1dCBub3QgYm90aC4gKilcblxuICB2YWwgcnVuIDogJ2EgdCAtPiAnYSAtPiBbIGBPayB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gIHZhbCBhYm9ydCA6IF8gdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogWyBgQWJvcnQgfCBgU3RhcnQgb2YgJ2EgXSBJdmFyLnRcbiAgICA7IG91dGNvbWUgOiBbIGBPayB8IGBBYm9ydGVkIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSB3b3JrID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2glYmluZCBJdmFyLnJlYWQgc3RhcnQgd2l0aFxuICAgICAgfCBgQWJvcnQgLT4gcmV0dXJuIGBBYm9ydGVkXG4gICAgICB8IGBTdGFydCBhIC0+XG4gICAgICAgIChtYXRjaCVtYXBcbiAgICAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgICAgIH5ydW46XG4gICAgICAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiB3b3JrIGEpXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IE9rIGEgLT4gYE9rIGFcbiAgICAgICAgIHwgRXJyb3IgZXhuIC0+IGBSYWlzZWQgZXhuKVxuICAgIGluXG4gICAgbGV0IG91dGNvbWUgPVxuICAgICAgbWF0Y2glbWFwIHJlc3VsdCB3aXRoXG4gICAgICB8IGBPayBfIC0+IGBPa1xuICAgICAgfCBgQWJvcnRlZCAtPiBgQWJvcnRlZFxuICAgICAgfCBgUmFpc2VkIF8gLT4gYFJhaXNlZFxuICAgIGluXG4gICAgbGV0IHQgPSB7IHN0YXJ0OyBvdXRjb21lIH0gaW5cbiAgICB0LCByZXN1bHRcbiAgOztcblxuICBsZXQgcnVuIHQgYSA9XG4gICAgSXZhci5maWxsIHQuc3RhcnQgKGBTdGFydCBhKTtcbiAgICBtYXRjaCVtYXAgdC5vdXRjb21lIHdpdGhcbiAgICB8IGBBYm9ydGVkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGBPayB8IGBSYWlzZWQpIGFzIHggLT4geFxuICA7O1xuXG4gIGxldCBhYm9ydCB0ID0gSXZhci5maWxsIHQuc3RhcnQgYEFib3J0XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBjb250aW51ZV9vbl9lcnJvciA6IGJvb2xcbiAgOyBtYXhfY29uY3VycmVudF9qb2JzIDogaW50XG4gIDsgKCogW2pvYl9yZXNvdXJjZXNfbm90X2luX3VzZV0gaG9sZHMgcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgaW4gdXNlIGJ5IGFcbiAgICAgICBydW5uaW5nIGpvYi4gKilcbiAgICBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgOiAnYSBTdGFja19vcl9jb3VudGVyLnRcbiAgO1xuICAgICgqIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIHRoZSBxdWV1ZSBvZiBqb2JzIHRoYXQgaGF2ZW4ndCB5ZXQgc3RhcnRlZC4gKilcbiAgICBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgOiAnYSBJbnRlcm5hbF9qb2IudCBRdWV1ZS50XG4gIDsgKCogWzAgPD0gbnVtX2pvYnNfcnVubmluZyA8PSBtYXhfY29uY3VycmVudF9qb2JzXS4gKilcbiAgICBtdXRhYmxlIG51bV9qb2JzX3J1bm5pbmcgOiBpbnRcbiAgOyAoKiBbY2FwYWNpdHlfYXZhaWxhYmxlXSBpcyBbU29tZSBpdmFyXSBpZiB1c2VyIGNvZGUgaGFzIGNhbGxlZCBbY2FwYWNpdHlfYXZhaWxhYmxlIHRdXG4gICAgICAgYW5kIGlzIHdhaXRpbmcgdG8gYmUgbm90aWZpZWQgd2hlbiBjYXBhY2l0eSBpcyBhdmFpbGFibGUgaW4gdGhlIHRocm90dGxlLlxuICAgICAgIFttYXliZV9zdGFydF9qb2JdIHdpbGwgZmlsbCBbaXZhcl0gd2hlbiBjYXBhY2l0eSBiZWNvbWVzIGF2YWlsYWJsZSwgaS5lLiB3aGVuXG4gICAgICAgW2pvYnNfd2FpdGluZ190b19zdGFydF0gaXMgZW1wdHkgYW5kIFtudW1fam9ic19ydW5uaW5nIDwgbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBjYXBhY2l0eV9hdmFpbGFibGUgOiB1bml0IEl2YXIudCBvcHRpb25cbiAgOyAoKiBbaXNfZGVhZF0gaXMgdHJ1ZSBpZiBbdF0gd2FzIGtpbGxlZCBkdWUgdG8gYSBqb2IgcmFpc2luZyBhbiBleGNlcHRpb24gb3IgW2tpbGwgdF1cbiAgICAgICBiZWluZyBjYWxsZWQuICopXG4gICAgbXV0YWJsZSBpc19kZWFkIDogYm9vbFxuICA7ICgqIFtjbGVhbnNdIGhvbGRzIGZ1bmN0aW9ucyB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIGNsZWFuIGVhY2ggcmVzb3VyY2Ugd2hlbiBbdF0gaXNcbiAgICAgICBraWxsZWQuICopXG4gICAgbXV0YWJsZSBjbGVhbnMgOiAoJ2EgLT4gdW5pdCBEZWZlcnJlZC50KSBsaXN0XG4gIDsgKCogW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIGlzIHRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIHdob3NlIGNsZWFuIGZ1bmN0aW9ucyBoYXZlXG4gICAgICAgbm90IHlldCBjb21wbGV0ZWQuICBXaGlsZSBbdF0gaXMgYWxpdmUsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID1cbiAgICAgICBtYXhfY29uY3VycmVudF9qb2JzXS4gIE9uY2UgW3RdIGlzIGtpbGxlZCwgW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIGRlY3JlYXNlcyB0b1xuICAgICAgIHplcm8gb3ZlciB0aW1lIGFzIHRoZSBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgbXV0YWJsZSBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDogaW50XG4gIDsgKCogW2NsZWFuZWRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSByZWFjaGVzIHplcm8sXG4gICAgICAgaS5lLiBhZnRlciBbdF0gaXMga2lsbGVkIGFuZCBhbGwgaXRzIGNsZWFuIGZ1bmN0aW9ucyBjb21wbGV0ZS4gKilcbiAgICBjbGVhbmVkIDogdW5pdCBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNvbnRpbnVlX29uX2Vycm9yOmlnbm9yZVxuICAgICAgfm1heF9jb25jdXJyZW50X2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9jb25jdXJyZW50X2pvYnMgLT4gYXNzZXJ0IChtYXhfY29uY3VycmVudF9qb2JzID4gMCkpKVxuICAgICAgfmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIC0+XG4gICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIuaXRlciBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgfmY6aW52YXJpYW50X2E7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXG4gICAgICAgICAgICAgPSBpZiB0LmlzX2RlYWQgdGhlbiAwIGVsc2UgdC5tYXhfY29uY3VycmVudF9qb2JzIC0gdC5udW1fam9ic19ydW5uaW5nKSkpXG4gICAgICB+am9ic193YWl0aW5nX3RvX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uIGpvYnNfd2FpdGluZ190b19zdGFydCAtPlxuICAgICAgICAgICBpZiB0LmlzX2RlYWQgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGpvYnNfd2FpdGluZ190b19zdGFydCkpKVxuICAgICAgfm51bV9qb2JzX3J1bm5pbmc6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9qb2JzX3J1bm5pbmcgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9qb2JzX3J1bm5pbmcgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgICAgICB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5jYXBhY2l0eV9hdmFpbGFibGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgIHwgU29tZSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpXG4gICAgICB+aXNfZGVhZDppZ25vcmVcbiAgICAgIH5jbGVhbnM6aWdub3JlXG4gICAgICB+bnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZDpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8PSB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICAgICAgICAgICBpZiBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gYXNzZXJ0IHQuaXNfZGVhZCkpXG4gICAgICB+Y2xlYW5lZDpcbiAgICAgICAgKGNoZWNrIChmdW4gY2xlYW5lZCAtPlxuICAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgY2xlYW5lZCB0aGVuIGFzc2VydCAodC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gMCkpKVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVGhyb3R0bGUuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogXyB0KV1cbjs7XG5cbm1vZHVsZSBUMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdraW5kKSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIHRcbmVuZFxuXG5sZXQgbnVtX2pvYnNfd2FpdGluZ190b19zdGFydCB0ID0gUXVldWUubGVuZ3RoIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0XG5cbmxldCBjbGVhbl9yZXNvdXJjZSB0IGEgPVxuICBEZWZlcnJlZC5hbGxfdW5pdCAoTGlzdC5tYXAgdC5jbGVhbnMgfmY6KGZ1biBmIC0+IGYgYSkpXG4gID4+PiBmdW4gKCkgLT5cbiAgdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDwtIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCAtIDE7XG4gIGlmIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDAgdGhlbiBJdmFyLmZpbGwgdC5jbGVhbmVkICgpXG47O1xuXG5sZXQga2lsbCB0ID1cbiAgaWYgbm90IHQuaXNfZGVhZFxuICB0aGVuIChcbiAgICB0LmlzX2RlYWQgPC0gdHJ1ZTtcbiAgICBRdWV1ZS5pdGVyIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IH5mOkludGVybmFsX2pvYi5hYm9ydDtcbiAgICBRdWV1ZS5jbGVhciB0LmpvYnNfd2FpdGluZ190b19zdGFydDtcbiAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgfmY6KGZ1biBhIC0+IGNsZWFuX3Jlc291cmNlIHQgYSk7XG4gICAgU3RhY2tfb3JfY291bnRlci5jbGVhciB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSlcbjs7XG5cbmxldCBhdF9raWxsIHQgZiA9XG4gICgqIFdlIHByZXNlcnZlIHRoZSBleGVjdXRpb24gY29udGV4dCBzbyB0aGF0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBnbyB0byB0aGUgbW9uaXRvclxuICAgICBpbiBlZmZlY3Qgd2hlbiBbYXRfa2lsbF0gd2FzIGNhbGxlZC4gKilcbiAgbGV0IGYgPSB1bnN0YWdlIChNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIucHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYpIGluXG4gIHQuY2xlYW5zIDwtIGYgOjogdC5jbGVhbnNcbjs7XG5cbmxldCBjbGVhbmVkIHQgPSBJdmFyLnJlYWQgdC5jbGVhbmVkXG5cbmxldCByZWMgc3RhcnRfam9iIHQgPVxuICBhc3NlcnQgKG5vdCB0LmlzX2RlYWQpO1xuICBhc3NlcnQgKHQubnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gIGFzc2VydCAobm90IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydCkpO1xuICBsZXQgam9iID0gUXVldWUuZGVxdWV1ZV9leG4gdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgaW5cbiAgdC5udW1fam9ic19ydW5uaW5nIDwtIHQubnVtX2pvYnNfcnVubmluZyArIDE7XG4gIGxldCBqb2JfcmVzb3VyY2UgPSBTdGFja19vcl9jb3VudGVyLnBvcF9leG4gdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgaW5cbiAgSW50ZXJuYWxfam9iLnJ1biBqb2Igam9iX3Jlc291cmNlXG4gID4+PiBmdW4gcmVzIC0+XG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgLSAxO1xuICAobWF0Y2ggcmVzIHdpdGhcbiAgIHwgYE9rIC0+ICgpXG4gICB8IGBSYWlzZWQgLT4gaWYgbm90IHQuY29udGludWVfb25fZXJyb3IgdGhlbiBraWxsIHQpO1xuICBpZiB0LmlzX2RlYWRcbiAgdGhlbiBjbGVhbl9yZXNvdXJjZSB0IGpvYl9yZXNvdXJjZVxuICBlbHNlIChcbiAgICBTdGFja19vcl9jb3VudGVyLnB1c2ggdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2Ugam9iX3Jlc291cmNlO1xuICAgIGlmIG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpXG4gICAgdGhlbiBzdGFydF9qb2IgdFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgaXZhciAtPlxuICAgICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgICAgdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gTm9uZSkpXG47O1xuXG5sZXQgY3JlYXRlX2ludGVybmFsIH5jb250aW51ZV9vbl9lcnJvciBqb2JfcmVzb3VyY2VzID1cbiAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPSBTdGFja19vcl9jb3VudGVyLmxlbmd0aCBqb2JfcmVzb3VyY2VzIGluXG4gIHsgY29udGludWVfb25fZXJyb3JcbiAgOyBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlID0gam9iX3Jlc291cmNlc1xuICA7IGpvYnNfd2FpdGluZ190b19zdGFydCA9IFF1ZXVlLmNyZWF0ZSAoKVxuICA7IG51bV9qb2JzX3J1bm5pbmcgPSAwXG4gIDsgY2FwYWNpdHlfYXZhaWxhYmxlID0gTm9uZVxuICA7IGlzX2RlYWQgPSBmYWxzZVxuICA7IGNsZWFucyA9IFtdXG4gIDsgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IG1heF9jb25jdXJyZW50X2pvYnNcbiAgOyBjbGVhbmVkID0gSXZhci5jcmVhdGUgKClcbiAgfVxuOztcblxubGV0IGNyZWF0ZV93aXRoIH5jb250aW51ZV9vbl9lcnJvciBqb2JfcmVzb3VyY2VzID1cbiAgY3JlYXRlX2ludGVybmFsIH5jb250aW51ZV9vbl9lcnJvciAoU3RhY2tfb3JfY291bnRlci5vZl9saXN0IGpvYl9yZXNvdXJjZXMpXG47O1xuXG5tb2R1bGUgU2VxdWVuY2VyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGEgPSBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3IgWyBhIF1cbmVuZFxuXG5sZXQgY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvciB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGlmIG1heF9jb25jdXJyZW50X2pvYnMgPD0gMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGhyb3R0bGUuY3JlYXRlIHJlcXVpcmVzIHBvc2l0aXZlIG1heF9jb25jdXJyZW50X2pvYnMsIGJ1dCBnb3RcIlxuICAgICAgICAgIChtYXhfY29uY3VycmVudF9qb2JzIDogaW50KV07XG4gIGNyZWF0ZV9pbnRlcm5hbFxuICAgIH5jb250aW51ZV9vbl9lcnJvclxuICAgIChTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyIH5sZW5ndGg6bWF4X2NvbmN1cnJlbnRfam9icylcbjs7XG5cbm1vZHVsZSBKb2IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IGludGVybmFsX2pvYiA6ICdhIEludGVybmFsX2pvYi50XG4gICAgOyByZXN1bHQgOiBbIGBPayBvZiAnYiB8IGBBYm9ydGVkIHwgYFJhaXNlZCBvZiBleG4gXSBEZWZlcnJlZC50XG4gICAgfVxuXG4gIGxldCByZXN1bHQgdCA9IHQucmVzdWx0XG4gIGxldCBhYm9ydCB0ID0gSW50ZXJuYWxfam9iLmFib3J0IHQuaW50ZXJuYWxfam9iXG5cbiAgbGV0IGNyZWF0ZSBmID1cbiAgICBsZXQgaW50ZXJuYWxfam9iLCByZXN1bHQgPSBJbnRlcm5hbF9qb2IuY3JlYXRlIGYgaW5cbiAgICB7IGludGVybmFsX2pvYjsgcmVzdWx0IH1cbiAgOztcbmVuZFxuXG5sZXQgZW5xdWV1ZScgdCBmID1cbiAgbGV0IGpvYiA9IEpvYi5jcmVhdGUgZiBpblxuICBpZiB0LmlzX2RlYWRcbiAgdGhlbiBKb2IuYWJvcnQgam9iXG4gIGVsc2UgKFxuICAgIFF1ZXVlLmVucXVldWUgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgam9iLmludGVybmFsX2pvYjtcbiAgICBpZiB0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMgdGhlbiBzdGFydF9qb2IgdCk7XG4gIEpvYi5yZXN1bHQgam9iXG47O1xuXG5sZXQgaGFuZGxlX2VucXVldWVfcmVzdWx0IHJlc3VsdCA9XG4gIG1hdGNoIHJlc3VsdCB3aXRoXG4gIHwgYE9rIGEgLT4gYVxuICB8IGBBYm9ydGVkIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwidGhyb3R0bGUgYWJvcnRlZCBqb2JcIl1cbiAgfCBgUmFpc2VkIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbmxldCBlbnF1ZXVlIHQgZiA9IGVucXVldWUnIHQgZiA+PnwgaGFuZGxlX2VucXVldWVfcmVzdWx0XG5cbmxldCBlbnF1ZXVlX2V4Y2x1c2l2ZSB0IGYgPVxuICBsZXQgbiA9IHQubWF4X2NvbmN1cnJlbnRfam9icyBpblxuICBpZiBJbnQuKCA+PSApIG4gMV8wMDBfMDAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJXNleHBcbiAgICAgICAgXCJbZW5xdWV1ZV9leGNsdXNpdmVdIHdhcyBjYWxsZWQgd2l0aCBhIHZlcnkgbGFyZ2UgdmFsdWUgb2YgXFxcbiAgICAgICAgIFttYXhfY29uY3VycmVudF9qb2JzXS4gVGhpcyBkb2Vzbid0IHdvcmsuXCJdO1xuICBsZXQgZG9uZV8gPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBhc3NlcnQgKG4gPiAwKTtcbiAgbGV0IGZfcGxhY2Vob2xkZXIgX3Nsb3QgPSBJdmFyLnJlYWQgZG9uZV8gaW5cbiAgZm9yIF8gPSAxIHRvIG4gLSAxIGRvXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGVucXVldWUgdCBmX3BsYWNlaG9sZGVyKVxuICBkb25lO1xuICBsZXQlbWFwIHJlc3VsdCA9IGVucXVldWUnIHQgKGZ1biBfc2xvdCAtPiBmICgpKSBpblxuICBJdmFyLmZpbGwgZG9uZV8gKCk7XG4gIGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHRcbjs7XG5cbmxldCBtb25hZF9zZXF1ZW5jZV9ob3cgfmhvdyB+ZiA9XG4gIHN0YWdlXG4gICAgKG1hdGNoIGhvdyB3aXRoXG4gICAgIHwgYFBhcmFsbGVsIC0+IGZcbiAgICAgfCAoYFNlcXVlbnRpYWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgfCBgU2VxdWVudGlhbCAtPiAxXG4gICAgICAgICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT4gbWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgIGluXG4gICAgICAgbGV0IHQgPSBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICAgICAgZnVuIGEgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhKSlcbjs7XG5cbmxldCBtb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhMSBhMiAtPiBlbnF1ZXVlIHQgKGZ1biAoKSAtPiBmIGExIGEyKSlcbjs7XG5cbmxldCBwcmlvcl9qb2JzX2RvbmUgdCA9XG4gICgqIFdlIHF1ZXVlIFt0Lm1heF9jb25jdXJyZW50X2pvYnNdIGR1bW15IGpvYnMgYW5kIHdoZW4gdGhleSBhcmUgYWxsIHN0YXJ0ZWQgd2Uga25vd1xuICAgICB0aGF0IGFsbCBwcmlvciBqb2JzIGZpbmlzaGVkLiAgV2UgbWFrZSBzdXJlIHRoYXQgYWxsIGR1bW15IGpvYnMgd2FpdCBmb3IgdGhlIGxhc3Qgb25lXG4gICAgIHRvIGdldCBzdGFydGVkIGJlZm9yZSBmaW5pc2hpbmcuICopXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcgLT5cbiAgICBsZXQgZHVtbXlfam9ic19ydW5uaW5nID0gcmVmIDAgaW5cbiAgICBmb3IgXyA9IDEgdG8gdC5tYXhfY29uY3VycmVudF9qb2JzIGRvXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAoZW5xdWV1ZSB0IChmdW4gXyAtPlxuICAgICAgICAgICBpbmNyIGR1bW15X2pvYnNfcnVubmluZztcbiAgICAgICAgICAgaWYgIWR1bW15X2pvYnNfcnVubmluZyA9IHQubWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgICAgICB0aGVuIEl2YXIuZmlsbCBhbGxfZHVtbXlfam9ic19ydW5uaW5nICgpO1xuICAgICAgICAgICBJdmFyLnJlYWQgYWxsX2R1bW15X2pvYnNfcnVubmluZykpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBjYXBhY2l0eV9hdmFpbGFibGUgdCA9XG4gIGlmIG51bV9qb2JzX3J1bm5pbmcgdCA8IG1heF9jb25jdXJyZW50X2pvYnMgdFxuICB0aGVuIHJldHVybiAoKVxuICBlbHNlIChcbiAgICBtYXRjaCB0LmNhcGFjaXR5X2F2YWlsYWJsZSB3aXRoXG4gICAgfCBTb21lIGl2YXIgLT4gSXZhci5yZWFkIGl2YXJcbiAgICB8IE5vbmUgLT4gRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPiB0LmNhcGFjaXR5X2F2YWlsYWJsZSA8LSBTb21lIGl2YXIpKVxuOztcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwXG5cbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIxLmNyZWF0ZV90aW1lX3NvdXJjZVxubGV0IHdhbGxfY2xvY2sgPSBTY2hlZHVsZXIxLndhbGxfY2xvY2tcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5pbmNsdWRlIChTY2hlZHVsZXIgOiBtb2R1bGUgdHlwZSBvZiBTY2hlZHVsZXIgd2l0aCBtb2R1bGUgQnZhciA6PSBTY2hlZHVsZXIuQnZhcilcblxubGV0IHQgPSBTY2hlZHVsZXIudFxuXG5pbmNsdWRlIE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgZmluZF9sb2NhbCBrZXkgPSBFeGVjdXRpb25fY29udGV4dC5maW5kX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkga2V5XG5cbmxldCB3aXRoX2xvY2FsIGtleSB2YWx1ZSB+ZiA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LndpdGhfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkga2V5IHZhbHVlXG4gIGluXG4gIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCBleGVjdXRpb25fY29udGV4dCB+ZlxuOztcblxubGV0IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSAodCAoKSkubWFpbl9leGVjdXRpb25fY29udGV4dFxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IG51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxubGV0IGhhc191cGNvbWluZ19ldmVudCB0ID0gbm90IChUaW1pbmdfd2hlZWwuaXNfZW1wdHkgKGV2ZW50cyB0KSlcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCAoZXZlbnRzIHQpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudF9leG4gdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biAoZXZlbnRzIHQpXG5sZXQgZXZlbnRfcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIChldmVudHMgdClcbmxldCBjeWNsZV9zdGFydCB0ID0gdC5jeWNsZV9zdGFydFxubGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mID0gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gZiA6OiB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydFxubGV0IHJ1bl9ldmVyeV9jeWNsZV9lbmQgdCB+ZiA9IHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCA8LSBmIDo6IHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZFxuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmY7XG4gIGhhbmRsZVxuOztcblxuKCogVW5iZWxpZXZhYmxlIHRoYXQgW0xpc3QucmVtb3ZlXSBpcyBub3QgYSB0aGluZyAqKVxubGV0IGxpc3RfcmVtb3ZlX2ZpcnN0IGxzdCB+ZiA9XG4gIG1hdGNoIExpc3Quc3BsaXRfd2hpbGUgfmY6KGZ1biB4IC0+IG5vdCAoZiB4KSkgbHN0IHdpdGhcbiAgfCBfLCBbXSAtPiBOb25lXG4gIHwgbCwgXyA6OiByIC0+IFNvbWUgKGwgQCByKVxuOztcblxubGV0IHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBsc3QgZiA9XG4gICgqIFJlbW92ZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiBbZl0gZnJvbSBbbHN0XS4gTW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBtYXkgYmUgcHJlc2VudCxcbiAgICAgYnV0IHJlbW92YWwgaXMgcmVmZXJlbmNlLWNvdW50ZWQgYnkgW3J1bl9ldmVyeV9jeWNsZV8oc3RhcnR8ZW5kKV9zdGF0ZV0gdGFibGVzLiAqKVxuICBtYXRjaCBsaXN0X3JlbW92ZV9maXJzdCB+ZjoocGh5c19lcXVhbCBmKSBsc3Qgd2l0aFxuICB8IFNvbWUgbHN0IC0+IGxzdFxuICB8IE5vbmUgLT5cbiAgICAoKiBUaGlzIHNob3VsZCBiZSB1bnJlYWNoYWJsZSwgc2VlIHRoZSBbaW52YXJpYW50XSBpbiBbc2NoZWR1bGVyMS5tbF0uICopXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiU2NoZWR1bGVyLnJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBjYWxsZWQgd2l0aCBhIGhvb2sgdGhhdCBpc24ndCByZWdpc3RlcmVkXCJdXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgc3RhcnQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT5cbiAgICB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgZlxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgZW5kIGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+IHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIGZcbjs7XG5cbmxldCBtYXBfY3ljbGVfdGltZXMgdCB+ZiA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIChmIHQubGFzdF9jeWNsZV90aW1lKSkpXG47O1xuXG5sZXQgbG9uZ19jeWNsZXMgdCB+YXRfbGVhc3QgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT5cbiAgICAgIGlmIFRpbWVfbnMuU3Bhbi4oID49ICkgdC5sYXN0X2N5Y2xlX3RpbWUgYXRfbGVhc3RcbiAgICAgIHRoZW4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfdGltZSkpXG47O1xuXG5sZXQgY3ljbGVfbnVtX2pvYnMgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV9udW1fam9icykpXG47O1xuXG5sZXQgY3ljbGVfY291bnQgdCA9IHQuY3ljbGVfY291bnRcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0IGludCA9XG4gIHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgPC0gTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBpbnRcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0ID1cbiAgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUucmF3IHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbjs7XG5cbmxldCBzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBmID0gdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA8LSBmXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5leHRlcm5hbF9qb2JzIChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKTtcbiAgdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayAoKVxuOztcblxubGV0IHNldF9ldmVudF9hZGRlZF9ob29rIHQgZiA9IHQuZXZlbnRfYWRkZWRfaG9vayA8LSBTb21lIGZcbmxldCBzZXRfam9iX3F1ZXVlZF9ob29rIHQgZiA9IHQuam9iX3F1ZXVlZF9ob29rIDwtIFNvbWUgZlxuXG5sZXQgY3JlYXRlX2FsYXJtIHQgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBHYy5FeHBlcnQuQWxhcm0uY3JlYXRlIChmdW4gKCkgLT5cbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKCkpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplciB0IGhlYXBfYmxvY2sgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBsZXQgZmluYWxpemVyIGhlYXBfYmxvY2sgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuXG5cbiAgICAgICBCeSBwdXR0aW5nIFtoZWFwX2Jsb2NrXSBpbiBbZXh0ZXJuYWxfam9ic10sIHdlIGFyZSBrZWVwaW5nIGl0IGFsaXZlIHVudGlsIHRoZSBuZXh0XG4gICAgICAgdGltZSB0aGUgYXN5bmMgc2NoZWR1bGVyIGdldHMgYXJvdW5kIHRvIGRlcXVldWVpbmcgaXQuICBDYWxsaW5nXG4gICAgICAgW3QudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdIGVuc3VyZXMgdGhhdCB3aWxsIGhhcHBlbiBpbiBzaG9ydCBvcmRlci4gIFRodXMsXG4gICAgICAgd2UgYXJlIG5vdCBkcmFtYXRpY2FsbHkgaW5jcmVhc2luZyB0aGUgbGlmZXRpbWUgb2YgW2hlYXBfYmxvY2tdLCBzaW5jZSB0aGUgT0NhbWxcbiAgICAgICBydW50aW1lIGFscmVhZHkgcmVzdXJyZWN0ZWQgW2hlYXBfYmxvY2tdIHNvIHRoYXQgd2UgY291bGQgcmVmZXIgdG8gaXQgaGVyZS4gIFRoZVxuICAgICAgIE9DYW1sIHJ1bnRpbWUgYWxyZWFkeSByZW1vdmVkIHRoZSBmaW5hbGl6ZXIgZnVuY3Rpb24gd2hlbiBpdCBub3RpY2VkIFtoZWFwX2Jsb2NrXVxuICAgICAgIGNvdWxkIGJlIGZpbmFsaXplZCwgc28gdGhlcmUgaXMgbm8gaW5maW5pdGUgbG9vcCBpbiB3aGljaCB3ZSBhcmUgY2F1c2luZyB0aGVcbiAgICAgICBmaW5hbGl6ZXIgdG8gcnVuIGFnYWluLiAgQWxzbywgT0NhbWwgZG9lcyBub3QgaW1wb3NlIGFueSByZXF1aXJlbWVudCBvbiBmaW5hbGl6ZXJcbiAgICAgICBmdW5jdGlvbnMgdGhhdCB0aGV5IG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgYmxvY2ssIHNvIGl0J3MgZmluZSB0aGF0IHdlIGtlZXBcbiAgICAgICBbaGVhcF9ibG9ja10gYXJvdW5kIHVudGlsIGxhdGVyLiAqKVxuICAgIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXJcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgaGVhcF9ibG9ja1xuICBpblxuICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImFkZGluZyBmaW5hbGl6ZXJcIjtcbiAgKCogV2UgdXNlIFtDYW1sLkdjLmZpbmFsaXNlXSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGJlY2F1c2UgdGhlIGxhdHRlclxuICAgICBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV0gdG8gcnVuIGZpbmFsaXplcnMgc3luY2hyb25vdXNseS4gKilcbiAgdHJ5IENhbWwuR2MuZmluYWxpc2UgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9leG4gdCB4IGYgPVxuICBhZGRfZmluYWxpemVyIHQgKEhlYXBfYmxvY2suY3JlYXRlX2V4biB4KSAoZnVuIGhlYXBfYmxvY2sgLT5cbiAgICBmIChIZWFwX2Jsb2NrLnZhbHVlIGhlYXBfYmxvY2spKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdCB0IGhlYXBfYmxvY2sgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBsZXQgZmluYWxpemVyICgpID1cbiAgICAoKiBIZXJlIHdlIGNhbiBiZSBpbiBhbnkgdGhyZWFkLCBhbmQgbWF5IG5vdCBiZSBob2xkaW5nIHRoZSBhc3luYyBsb2NrLiAgU28sIHdlIGNhblxuICAgICAgIG9ubHkgZG8gdGhyZWFkLXNhZmUgdGhpbmdzLiAqKVxuICAgIGlmIERlYnVnLmZpbmFsaXplcnNcbiAgICB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplciAodXNpbmcgJ2xhc3QnIHNlbWFudGljKVwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKVxuICBpblxuICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImFkZGluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgKCogV2UgdXNlIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl9sYXN0XSBiZWNhdXNlXG4gICAgIHRoZSBsYXR0ZXIgaGFzIGl0cyBvd24gd3JhcHBlciBhcm91bmQgW0NhbWwuR2MuZmluYWxpc2VfbGFzdF0gdG8gcnVuIGZpbmFsaXplcnNcbiAgICAgc3luY2hyb25vdXNseS4gKilcbiAgdHJ5IENhbWwuR2MuZmluYWxpc2VfbGFzdCBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHQgeCBmID0gYWRkX2ZpbmFsaXplcl9sYXN0IHQgKEhlYXBfYmxvY2suY3JlYXRlX2V4biB4KSBmXG5cbigqKiBbZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmRdIHNldHMgdGhlIG51bWJlciBvZiBub3JtYWwgam9icyBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzXG4gICAgY3ljbGUgdG8gemVyby4gIFRodXMsIGFmdGVyIHRoZSBjdXJyZW50bHkgcnVubmluZyBqb2IgY29tcGxldGVzLCB0aGUgc2NoZWR1bGVyIHdpbGxcbiAgICBzd2l0Y2ggdG8gbG93IHByaW9yaXR5IGpvYnMgYW5kIHRoZW4gZW5kIHRoZSBjdXJyZW50IGN5Y2xlLiAqKVxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kIHQgPVxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgMFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+bm93ID1cbiAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB+dG9fOm5vdyB+c2VuZF9leG5cbjs7XG5cbmxldCBydW5fY3ljbGUgdCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwicnVuX2N5Y2xlIHN0YXJ0aW5nXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgdC5jeWNsZV9jb3VudCA8LSB0LmN5Y2xlX2NvdW50ICsgMTtcbiAgdC5jeWNsZV9zdGFydCA8LSBub3c7XG4gIHQuaW5fY3ljbGUgPC0gdHJ1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC55aWVsZCAoKTtcbiAgbGV0IG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSA9IG51bV9qb2JzX3J1biB0IGluXG4gIExpc3QuaXRlciB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIGFkdmFuY2VfY2xvY2sgdCB+bm93O1xuICBzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5OnQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU7XG4gIGxldCByZWMgcnVuX2pvYnMgdCA9XG4gICAgbWF0Y2ggU2NoZWR1bGVyLnJ1bl9qb2JzIHQgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgIE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJhY2t0cmFjZSk7XG4gICAgICAoKiBbcnVuX2pvYnNdIHN0b3BwZWQgZHVlIHRvIGFuIGV4bi4gIFRoZXJlIG1heSBzdGlsbCBiZSBqb2JzIHRoYXQgY291bGQgYmVcbiAgICAgICAgIHJ1biB0aGlzIGN5Y2xlLCBzbyBbcnVuX2pvYnNdIGFnYWluLiAqKVxuICAgICAgcnVuX2pvYnMgdFxuICBpblxuICBydW5fam9icyB0O1xuICBsZXQgY3ljbGVfdGltZSA9IFRpbWVfbnMuZGlmZiAoVGltZV9ucy5ub3cgKCkpIHQuY3ljbGVfc3RhcnQgaW5cbiAgdC5sYXN0X2N5Y2xlX3RpbWUgPC0gY3ljbGVfdGltZTtcbiAgdC5sYXN0X2N5Y2xlX251bV9qb2JzIDwtIG51bV9qb2JzX3J1biB0IC0gbnVtX2pvYnNfcnVuX2F0X3N0YXJ0X29mX2N5Y2xlO1xuICB0LnRvdGFsX2N5Y2xlX3RpbWUgPC0gVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyBjeWNsZV90aW1lKTtcbiAgaWYgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiAmJiBudW1fcGVuZGluZ19qb2JzIHQgPSAwXG4gIHRoZW4gQnZhci5icm9hZGNhc3QgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiAoKTtcbiAgTGlzdC5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIHQuaW5fY3ljbGUgPC0gZmFsc2U7XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBEZWJ1Zy5sb2dcbiAgICAgIFwicnVuX2N5Y2xlIGZpbmlzaGVkXCJcbiAgICAgICh1bmNhdWdodF9leG4gdCwgaXNfc29tZSAobmV4dF91cGNvbWluZ19ldmVudCB0KSlcbiAgICAgIFslc2V4cF9vZjogRXJyb3IudCBvcHRpb24gKiBib29sXVxuOztcblxubGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIHN0YXJ0aW5nXCI7XG4gIGxldCB0ID0gdCAoKSBpblxuICBpZiBpc19kZWFkIHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gY2Fubm90IHByb2NlZWQgLS0gc2NoZWR1bGVyIGlzIGRlYWRcIlxuICAgICAgICAgIH5zY2hlZHVsZXI6KHQgOiB0KV07XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgcnVuX2N5Y2xlIHQ7XG4gICAgYWR2YW5jZV9jbG9jayB0IH5ub3c6KFRpbWVfbnMubm93ICgpKTtcbiAgICBpZiBjYW5fcnVuX2Ffam9iIHQgdGhlbiBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gICgqIFJlc2V0IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0IHRvIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB3aGVuIHdlJ3JlIG5vdCBpblxuICAgICBhIGpvYiwgW2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0XS4gKilcbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdC5tYWluX2V4ZWN1dGlvbl9jb250ZXh0O1xuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGZpbmlzaGVkXCI7XG4gIE9wdGlvbi5pdGVyICh1bmNhdWdodF9leG4gdCkgfmY6RXJyb3IucmFpc2Vcbjs7XG5cbmxldCBtYWtlX2FzeW5jX3VudXNhYmxlICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgdC5jaGVja19hY2Nlc3NcbiAgPC0gU29tZVxuICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslc2V4cCBcIkFzeW5jIHNjaGVkdWxlciBpcyB1bnVzYWJsZSBkdWUgdG8gW21ha2VfYXN5bmNfdW51c2FibGVdXCJdKVxuOztcblxubGV0IHJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3NcIjtcbiAgKCogVGhlcmUgaXMgbm8gbmVlZCB0byBlbXB0eSBbbWFpbl9tb25pdG9yX2hvbGVdLiAqKVxuICBTY2hlZHVsZXIuKHRfcmVmIDo9IGNyZWF0ZSAoKSlcbjs7XG5cbmxldCBjaGVja19pbnZhcmlhbnRzIHQgPSB0LmNoZWNrX2ludmFyaWFudHNcbmxldCBzZXRfY2hlY2tfaW52YXJpYW50cyB0IGIgPSB0LmNoZWNrX2ludmFyaWFudHMgPC0gYlxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyB0IGIgPSB0LnJlY29yZF9iYWNrdHJhY2VzIDwtIGJcbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IHQueWllbGRcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID8obWF5X3JldHVybl9pbW1lZGlhdGVseSA9IGZhbHNlKSB0ID1cbiAgaWYgbWF5X3JldHVybl9pbW1lZGlhdGVseSAmJiBudW1fcGVuZGluZ19qb2JzIHQgPSAwXG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgQnZhci53YWl0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW5cbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLnlpZWxkX2V2ZXJ5IGdvdCBub25wb3NpdGl2ZSBjb3VudFwiIChuIDogaW50KV1cbiAgZWxzZSBpZiBuID0gMVxuICB0aGVuIHN0YWdlIChmdW4gdCAtPiB5aWVsZCB0KVxuICBlbHNlIChcbiAgICBsZXQgY291bnRfdW50aWxfeWllbGQgPSByZWYgbiBpblxuICAgIHN0YWdlIChmdW4gdCAtPlxuICAgICAgZGVjciBjb3VudF91bnRpbF95aWVsZDtcbiAgICAgIGlmICFjb3VudF91bnRpbF95aWVsZCA+IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgY291bnRfdW50aWxfeWllbGQgOj0gbjtcbiAgICAgICAgeWllbGQgdCkpKVxuOztcblxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgdCA9XG4gICgqIEFkanVzdCBmb3IgdGhlIGZhY3QgdGhlIGNhbGxlcidzIHByb2JhYmx5IGFuIEFzeW5jIGpvYi4gKilcbiAgaWYgdC5pbl9jeWNsZVxuICB0aGVuIChcbiAgICBsZXQgdGhpc19jeWNsZV90aW1lID0gVGltZV9ucy4oZGlmZiAobm93ICgpKSB0LmN5Y2xlX3N0YXJ0KSBpblxuICAgIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgdGhpc19jeWNsZV90aW1lKSlcbiAgZWxzZSB0LnRvdGFsX2N5Y2xlX3RpbWVcbjs7XG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrID0gc3RydWN0XG4gIG1vZHVsZSBXb3JrZXJfcmVzdWx0ID0gVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0XG5cblxuICBsZXQgcmVjIHJ1biB0ID0gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZzoxXzAwMFxuXG4gIGFuZCBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4geWllbGRfdGhlbl9ydW4gdFxuICAgIGVsc2UgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgd29ya2VyID0gRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuXG4gIGFuZCB5aWVsZF90aGVuX3J1biB0ID1cbiAgICBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIERlZmVycmVkLnVwb24gKHlpZWxkIHQpIChmdW4gKCkgLT4gcnVuIHQpXG5cbiAgYW5kIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGFzc2VydCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0KTtcbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4gKFxuICAgICAgRGVxdWUuZW5xdWV1ZV9mcm9udCB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgd29ya2VyO1xuICAgICAgeWllbGRfdGhlbl9ydW4gdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyAtIDEgaW5cbiAgICAgIG1hdGNoIHdvcmtlci5leGVjICgpIHdpdGhcbiAgICAgIHwgRmluaXNoZWQgLT4gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBOb3RfZmluaXNoZWQgLT4gcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYnQpO1xuICAgICAgICBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIH5mID1cbiAgICBsZXQgdCA9IHQgKCkgaW5cbiAgICBsZXQgcXVldWUgPSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICBsZXQgcnVubmluZyA9IG5vdCAoRGVxdWUuaXNfZW1wdHkgcXVldWUpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIH5wcmlvcml0eTpMb3dcbiAgICBpblxuICAgIERlcXVlLmVucXVldWVfYmFjayBxdWV1ZSB7IGV4ZWN1dGlvbl9jb250ZXh0OyBleGVjID0gZiB9O1xuICAgIGlmIG5vdCBydW5uaW5nIHRoZW4gZW5xdWV1ZSB0IGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9iZW5jaCA9IHN0cnVjdFxuICBsZXQgYWR2YW5jZV9jbG9jayA9IGFkdmFuY2VfY2xvY2tcbmVuZFxuXG5sZXQgaW5fY3ljbGUgdCA9IHQuaW5fY3ljbGVcbiIsInR5cGUgdCA9IHVuaXQgLT4gdW5pdFxuXG5tb2R1bGUgSGFuZGxlID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlclxuXG5sZXQgZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID0gZW5xdWV1ZSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpXG5sZXQgY3ljbGVfY291bnQgKCkgPSBjeWNsZV9jb3VudCAodCAoKSlcbmxldCBjeWNsZV9zdGFydF9ucyAoKSA9IGN5Y2xlX3N0YXJ0ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0ICgpID0gVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGN5Y2xlX3N0YXJ0X25zICgpKVxubGV0IGN5Y2xlX3RpbWVzX25zICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpGbi5pZFxubGV0IGN5Y2xlX3RpbWVzICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0XG5sZXQgdG90YWxfY3ljbGVfdGltZSAoKSA9IHRvdGFsX2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbGFzdF9jeWNsZV90aW1lICgpID0gbGFzdF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxvbmdfY3ljbGVzIH5hdF9sZWFzdCA9IGxvbmdfY3ljbGVzICh0ICgpKSB+YXRfbGVhc3RcbmxldCBldmVudF9wcmVjaXNpb25fbnMgKCkgPSBldmVudF9wcmVjaXNpb24gKHQgKCkpXG5sZXQgZXZlbnRfcHJlY2lzaW9uICgpID0gVGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoZXZlbnRfcHJlY2lzaW9uX25zICgpKVxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIGkgPVxuICBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpIGlcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAoKSA9IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKVxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyBib29sID0gc2V0X3JlY29yZF9iYWNrdHJhY2VzICh0ICgpKSBib29sXG5sZXQgZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKCkgPSBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAodCAoKSlcbmxldCB5aWVsZCAoKSA9IHlpZWxkICh0ICgpKVxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKCkgPVxuICB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAodCAoKSlcbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGxldCB5aWVsZF9ldmVyeSA9IFN0YWdlZC51bnN0YWdlICh5aWVsZF9ldmVyeSB+bikgaW5cbiAgbGV0IHQgPSB0ICgpIGluXG4gIHN0YWdlIChmdW4gKCkgLT4geWllbGRfZXZlcnkgdClcbjs7XG5cbmxldCBudW1fam9ic19ydW4gKCkgPSBudW1fam9ic19ydW4gKHQgKCkpXG5sZXQgbnVtX3BlbmRpbmdfam9icyAoKSA9IG51bV9wZW5kaW5nX2pvYnMgKHQgKCkpXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gPSBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluXG4gIGxldCBsYXN0X2N5Y2xlX251bV9qb2JzICgpID0gbGFzdF9jeWNsZV9udW1fam9icyAodCAoKSlcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ICh0ICgpKSB+ZlxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX2VuZCAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgKHQgKCkpIH5mXG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCBleGVjdXRpb25fY29udGV4dCBmID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZlxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSBleGVjdXRpb25fY29udGV4dCB+ZiB4ID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmYgeFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gU2NoZWR1bGVyXG4iLCIoKiogU2NoZWR1bGUgam9icyB0byBydW4gYXQgYSB0aW1lIGluIHRoZSBmdXR1cmUuXG5cbiAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgaGVhcCBvZiBldmVudHMsIG9uZSBmb3IgZWFjaCBqb2IgdGhhdCBuZWVkcyB0b1xuICAgIHJ1biBpbiB0aGUgZnV0dXJlLiAgVGhlIEFzeW5jIHNjaGVkdWxlciBpcyByZXNwb25zaWJsZSBmb3Igd2FraW5nIHVwIGF0IHRoZSByaWdodCB0aW1lXG4gICAgdG8gcnVuIHRoZSBqb2JzLiAqKVxuXG5vcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgT3JfdGltZW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYFJlc3VsdCBvZiAnYVxuICAgIHwgYFRpbWVvdXRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgKCoqIFtydW5fYXQgdGltZSBmIGFdIHJ1bnMgW2YgYV0gYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciBbdGltZV0uICBJZiBbdGltZV0gaXMgaW4gdGhlXG4gICAgICBwYXN0LCB0aGVuIFtydW5fYXRdIHdpbGwgaW1tZWRpYXRlbHkgc2NoZWR1bGUgYSBqb2IgW3RdIHRoYXQgd2lsbCBydW4gW2YgYV0uICBJbiBub1xuICAgICAgc2l0dWF0aW9uIHdpbGwgW3J1bl9hdF0gYWN0dWFsbHkgY2FsbCBbZl0gaXRzZWxmLiAgVGhlIGNhbGwgdG8gW2ZdIHdpbGwgYWx3YXlzIGJlIGluXG4gICAgICBhbm90aGVyIGpvYi4gKilcbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2FmdGVyXSBpcyBsaWtlIFtydW5fYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuXG4gICAgICBhYnNvbHV0ZSB0aW1lLiAqKVxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW2F0IHRpbWVdIHJldHVybnMgYSBkZWZlcnJlZCBbZF0gdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFzIHNvb24gYXMgcG9zc2libGVcbiAgICAgIGFmdGVyIFt0aW1lXS4gKilcbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbYWZ0ZXJdIGlzIGxpa2UgW2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhbiBhYnNvbHV0ZVxuICAgICAgdGltZS4gKilcbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFt3aXRoX3RpbWVvdXQgc3BhbiBkXSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFmdGVyIGVpdGhlclxuICAgICAgW3NwYW5dIGVsYXBzZXMgb3IgW2RdIGlzIGRldGVybWluZWQsIHJldHVybmluZyBlaXRoZXIgW2BUaW1lb3V0XSBvciBbYFJlc3VsdF1cbiAgICAgIGRlcGVuZGluZyBvbiB3aGljaCBvbmUgc3VjY2VlZGVkIGZpcnN0LiAgQXQgdGhlIHRpbWUgdGhlIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQsIGJvdGggdGhpbmdzIG1heSBoYXZlIGhhcHBlbmVkLCBpbiB3aGljaCBjYXNlIFtgUmVzdWx0XSBpcyBnaXZlblxuICAgICAgcHJlZmVyZW5jZS4gKilcbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcblxuICAoKiogRXZlbnRzIHByb3ZpZGUgdmFyaWFudHMgb2YgW3J1bl9hdF0gYW5kIFtydW5fYWZ0ZXJdIHdpdGggdGhlIGFiaWxpdHkgdG8gYWJvcnQgb3JcbiAgICAgIHJlc2NoZWR1bGUgYW4gZXZlbnQgdGhhdCBoYXNuJ3QgeWV0IGhhcHBlbmVkLiAgT25jZSBhbiBldmVudCBoYXBwZW5zIG9yIGlzIGFib3J0ZWQsXG4gICAgICBBc3luYyBkb2Vzbid0IHVzZSBhbnkgc3BhY2UgZm9yIHRyYWNraW5nIGl0LiAqKVxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2NoZWR1bGVkX2F0IDogKF8sIF8pIHQgLT4gVGltZS50XG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICAoKiogSWYgW3N0YXR1c10gcmV0dXJucyBbU2NoZWR1bGVkX2F0IHRpbWVdLCBpdCBpcyBwb3NzaWJsZSB0aGF0IFt0aW1lIDwgVGltZS5ub3cgKCldXG4gICAgICAgIGlmIEFzeW5jJ3Mgc2NoZWR1bGVyIGhhc24ndCB5ZXQgZ290dGVuIHRoZSBjaGFuY2UgdG8gdXBkYXRlIGl0cyBjbG9jaywgZS5nLiwgZHVlXG4gICAgICAgIHRvIHVzZXIgam9icyBydW5uaW5nLiAqKVxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG5cbiAgICAoKiogTGV0IFt0ID0gcnVuX2F0IHRpbWUgZiB6XS4gIEF0IFt0aW1lXSwgdGhpcyBydW5zIFtmIHpdIGFuZCB0cmFuc2l0aW9ucyBbc3RhdHVzIHRdXG4gICAgICAgIHRvIFtIYXBwZW5lZCBoXSwgd2hlcmUgW2hdIGlzIHJlc3VsdCBvZiBbZiB6XS5cblxuICAgICAgICBNb3JlIHByZWNpc2VseSwgYXQgW3RpbWVdLCBwcm92aWRlZCBbYWJvcnQgdCBhXSBoYXMgbm90IHByZXZpb3VzbHkgYmVlbiBjYWxsZWQsXG4gICAgICAgIHRoaXMgd2lsbCBjYWxsIFtmIHpdLCB3aXRoIHRoZSBndWFyYW50ZWUgdGhhdCBbc3RhdHVzIHQgPSBTY2hlZHVsZWRfYXQgdGltZV0uICBJZlxuICAgICAgICBbZiB6XSByZXR1cm5zIFtoXSBhbmQgZGlkIG5vdCBjYWxsIFthYm9ydCB0IGFdLCB0aGVuIFtzdGF0dXMgdF0gYmVjb21lcyBbSGFwcGVuZWRcbiAgICAgICAgaF0uICBJZiBbZiB6XSBjYWxscyBbYWJvcnQgdCBhXSwgdGhlbiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBpZ25vcmVkLCBhbmQgW3N0YXR1cyB0XVxuICAgICAgICBpcyBbQWJvcnRlZCBhXS5cblxuICAgICAgICBJZiBbZiB6XSByYWlzZXMsIHRoZW4gW3N0YXR1cyB0XSBkb2VzIG5vdCB0cmFuc2l0aW9uIGFuZCByZW1haW5zIFtTY2hlZHVsZWRfYXRcbiAgICAgICAgdGltZV0sIGFuZCB0aGUgZXhjZXB0aW9uIGlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW3J1bl9hdF0gd2FzXG4gICAgICAgIGNhbGxlZC4gKilcbiAgICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgICgqKiBbYWJvcnQgdF0gY2hhbmdlcyBbc3RhdHVzIHRdIHRvIFtBYm9ydGVkXSBhbmQgcmV0dXJucyBbT2tdLCB1bmxlc3MgW3RdXG4gICAgICAgIHByZXZpb3VzbHkgaGFwcGVuZWQgb3Igd2FzIHByZXZpb3VzbHkgYWJvcnRlZC4gKilcbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG5cbiAgICAoKiogW2Fib3J0X2V4biB0IGFdIHJldHVybnMgW3VuaXRdIGlmIFthYm9ydCB0IGEgPSBgT2tdLCBhbmQgb3RoZXJ3aXNlIHJhaXNlcy4gKilcbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG5cbiAgICAoKiogW2Fib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhKV0uICopXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgIG1vZHVsZSBGaXJlZCA9IFRpbWVfc291cmNlLkV2ZW50LkZpcmVkXG5cbiAgICB2YWwgZmlyZWQgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIEZpcmVkLnQgRGVmZXJyZWQudFxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgICgqKiBbcmVzY2hlZHVsZV9hdCB0XSBhbmQgW3Jlc2NoZWR1bGVfYWZ0ZXIgdF0gY2hhbmdlIHRoZSB0aW1lIHRoYXQgW3RdIHdpbGwgZmlyZSwgaWZcbiAgICAgICAgcG9zc2libGUsIGFuZCBpZiBub3QsIGdpdmUgYSByZWFzb24gd2h5LiAgTGlrZSBbcnVuX2F0XSwgaWYgdGhlIHJlcXVlc3RlZCB0aW1lIGlzXG4gICAgICAgIGluIHRoZSBwYXN0LCB0aGUgZXZlbnQgd2lsbCBiZSBzY2hlZHVsZWQgdG8gcnVuIGltbWVkaWF0ZWx5LiAgSWYgW3Jlc2NoZWR1bGVfYXQgdFxuICAgICAgICB0aW1lID0gT2tdLCB0aGVuIHN1YnNlcXVlbnRseSBbc2NoZWR1bGVkX2F0IHQgPSB0aW1lXS4gICopXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hZnRlciA6ICgnYSwgJ2gpIHQgLT4gVGltZS5TcGFuLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgKCoqIFthdCB0aW1lXSAgICBpcyBbcnVuX2F0ICAgIHRpbWUgaWdub3JlICgpXS5cbiAgICAgICAgW2FmdGVyIHRpbWVdIGlzIFtydW5fYWZ0ZXIgdGltZSBpZ25vcmUgKCldLlxuXG4gICAgICAgIFlvdSBzaG91bGQgZ2VuZXJhbGx5IHByZWZlciB0byB1c2UgdGhlIFtydW5fKl0gZnVuY3Rpb25zLCB3aGljaCBhbGxvdyB5b3UgdG9cbiAgICAgICAgc3luY2hyb25vdXNseSB1cGRhdGUgc3RhdGUgdmlhIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB3aGVuIHRoZSBldmVudFxuICAgICAgICB0cmFuc2l0aW9ucyB0byBbSGFwcGVuZWRdLiAgVGhhdCBpcywgdGhlcmUgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbjpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gcnVuX2F0IHRpbWUgZiAoKSBdfVxuXG4gICAgICAgIGFuZDpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gYXQgdGltZSBpblxuICAgICAgICAgIGZpcmVkIHRcbiAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IGYgKClcbiAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKCkgXX1cblxuICAgICAgICBXaXRoIFtydW5fYXRdLCBpZiBbc3RhdHVzIHQgPSBIYXBwZW5lZF0sIG9uZSBrbm93cyB0aGF0IFtmXSBoYXMgcnVuLiAgV2l0aCBbYXRdXG4gICAgICAgIGFuZCBbZmlyZWRdLCBvbmUgZG9lcyBub3Qga25vdyB3aGV0aGVyIFtmXSBoYXMgeWV0IHJ1bjsgaXQgbWF5IHN0aWxsIGJlIHNjaGVkdWxlZFxuICAgICAgICB0byBydW4uICBUaHVzLCB3aXRoIFthdF0gYW5kIFtmaXJlZF0sIGl0IGlzIGVhc3kgdG8gaW50cm9kdWNlIGEgcmFjZS4gIEZvclxuICAgICAgICBleGFtcGxlLCBjb25zaWRlciB0aGVzZSB0d28gY29kZSBzbmlwcGV0czpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQuYWZ0ZXIgKHNlYyAyLikgaW5cbiAgICAgICAgICB1cG9uIChFdmVudC5maXJlZCB0KSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKVxuICAgICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBwcmludGYgXCJUaW1lciBmaXJlZFwiKTtcbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQucnVuX2FmdGVyIChzZWMgMi4pIHByaW50ZiBcIlRpbWVyIGZpcmVkXCIgaW5cbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICBJbiBib3RoIHNuaXBwZXRzLCBpZiBbRXZlbnQuYWJvcnRdIHJldHVybnMgW09rXSwgXCJUaW1lciBmaXJlZFwiIGlzIG5ldmVyIHByaW50ZWQuXG4gICAgICAgIEhvd2V2ZXIsIHRoZSBmaXJzdCBzbmlwcGV0IG1pZ2h0IHByaW50IFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIiBhbmQgdGhlblxuICAgICAgICBcIlRpbWVyIGZpcmVkXCIuICBUaGlzIGNvbmZ1c2VkIG9yZGVyaW5nIGNhbm5vdCBoYXBwZW4gd2l0aCBbRXZlbnQucnVuX2FmdGVyXS4gKilcbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHRcblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gIGVuZFxuXG4gICgqKiBbYXRfdmFyeWluZ19pbnRlcnZhbHMgZiA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBuZXh0IGVsZW1lbnQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCBieSBjYWxsaW5nIFtmICgpXSBhbmQgd2FpdGluZyBmb3IgdGhhdCBhbW91bnQgb2YgdGltZSwgYW5kIHRoZW4gbG9vcGluZ1xuICAgICAgdG8gZGV0ZXJtaW5lIHN1YnNlcXVlbnQgZWxlbWVudHMuICBUaGUgc3RyZWFtIHdpbGwgZW5kIGFmdGVyIFtzdG9wXSBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLiAqKVxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFthdF9pbnRlcnZhbHMgaW50ZXJ2YWwgP3N0YXJ0ID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIGVsZW1lbnRzIHdpbGwgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkIGF0IG5vbm5lZ2F0aXZlIGludGVnZXIgbXVsdGlwbGVzIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgdGhlIFtzdGFydF0gdGltZSxcbiAgICAgIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQ6XG5cbiAgICAgIHt2XG4gICAgICAgIHN0YXJ0ICsgMCAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMSAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMiAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMyAqIGludGVydmFsXG4gICAgICAgIC4uLlxuICAgICAgdn1cblxuICAgICAgTm90ZSB0aGF0IG9ubHkgZWxlbWVudHMgdGhhdCBhcmUgc3RyaWN0bHkgaW4gdGhlIGZ1dHVyZSBldmVyIGJlY29tZSBkZXRlcm1pbmVkLlxuICAgICAgSW4gcGFydGljdWxhciwgaWYgW3N0YXJ0XSBpcyBub3QgaW4gdGhlIGZ1dHVyZSwgb3IgW3N0YXJ0XSBpcyBub3QgcHJvdmlkZWQsXG4gICAgICB0aGVuIHRoZXJlIHdpbGwgYmUgbm8gZWxlbWVudCBiZWZvcmUgdGhlIFtpbnRlcnZhbF0gaGFzIHBhc3NlZC5cblxuICAgICAgSWYgdGhlIGludGVydmFsIGlzIHRvbyBzbWFsbCBvciB0aGUgQ1BVIGlzIHRvbyBsb2FkZWQsIFthdF9pbnRlcnZhbHNdIHdpbGwgc2tpcFxuICAgICAgdW50aWwgdGhlIG5leHQgdXBjb21pbmcgbXVsdGlwbGUgb2YgW2ludGVydmFsXSBhZnRlciBbc3RhcnRdLiAqKVxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YgKCldIGV2ZXJ5IFtzcGFuXSBhbW91bnQgb2YgdGltZSBzdGFydGluZyB3aGVuXG4gICAgICBbc3RhcnRdIGJlY29tZXMgZGV0ZXJtaW5lZCBhbmQgc3RvcHBpbmcgd2hlbiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLiAgW2V2ZXJ5J11cbiAgICAgIHdhaXRzIHVudGlsIHRoZSBvdXRjb21lIG9mIFtmICgpXSBiZWNvbWVzIGRldGVybWluZWQgYmVmb3JlIHdhaXRpbmcgZm9yIHRoZSBuZXh0XG4gICAgICBbc3Bhbl0uXG5cbiAgICAgIEl0IGlzIGd1YXJhbnRlZWQgdGhhdCBpZiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLCBldmVuIGR1cmluZyBldmFsdWF0aW9uIG9mIFtmXSxcbiAgICAgIHRoZW4gW2ZdIHdpbGwgbm90IGJlIGNhbGxlZCBhZ2FpbiBieSBhIHN1YnNlcXVlbnQgaXRlcmF0aW9uIG9mIHRoZSBsb29wLlxuXG4gICAgICBJdCBpcyBhbiBlcnJvciBmb3IgW3NwYW5dIHRvIGJlIG5vbnBvc2l0aXZlLlxuXG4gICAgICBbY29udGludWVfb25fZXJyb3JdIGNvbnRyb2xzIHdoYXQgc2hvdWxkIGhhcHBlbiBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjpmYWxzZV0sIGl0ZXJhdGlvbiBvbmx5IGNvbnRpbnVlcyBpZiBbZl0gc3VjY2Vzc2Z1bGx5XG4gICAgICByZXR1cm5zIGEgZGVmZXJyZWQgYW5kIHRoYXQgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXSwgaXRlcmF0aW9uIGFsc28gY29udGludWVzIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgSWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24gYXN5bmNocm9ub3VzbHksIHRoaXMgbWF5IGNhdXNlIHVzIHRvIHByb2NlZWQgd2l0aCB0aGVcbiAgICAgIG5leHQgaXRlcmF0aW9uIHdoaWxlIHRoZSBwcmV2aW91cyBjYWxsIHRvIFtmXSBpcyBzdGlsbCBydW5uaW5nLlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtldmVyeSddIHdhc1xuICAgICAgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS5cblxuICAgICAgSWYgW2ZpbmlzaGVkXSBpcyBzdXBwbGllZCwgW2V2ZXJ5J10gd2lsbCBmaWxsIGl0IG9uY2UgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkOiBbc3RhcnRdLCBbc3RvcF0sIGFuZCB0aGUgb3V0Y29tZSBvZiB0aGUgZmluYWwgY2FsbCB0byBbZl0uICopXG4gIHZhbCBldmVyeSdcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiA/ZmluaXNoZWQ6dW5pdCBJdmFyLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtldmVyeSA/c3RhcnQgP3N0b3Agc3BhbiBmXSBpc1xuICAgICAgW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSldLiAqKVxuICB2YWwgZXZlcnlcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZigpXSBhdCBpbmNyZW1lbnRzIG9mIFtzdGFydCArIGkgKlxuICAgICAgc3Bhbl0gZm9yIG5vbm5lZ2F0aXZlIGludGVnZXJzIFtpXSwgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC5cbiAgICAgIElmIHRoZSByZXN1bHQgb2YgW2ZdIGlzIG5vdCBkZXRlcm1pbmVkIGZhc3QgZW5vdWdoIHRoZW4gdGhlIG5leHQgaW50ZXJ2YWwocylcbiAgICAgIGFyZSBza2lwcGVkIHNvIHRoYXQgdGhlcmUgYXJlIG5ldmVyIG11bHRpcGxlIGNvbmN1cnJlbnQgaW52b2NhdGlvbnMgb2YgW2ZdIGluXG4gICAgICBmbGlnaHQuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gbW9uaXRvciBpbiBlZmZlY3Qgd2hlblxuICAgICAgW3J1bl9hdF9pbnRlcnZhbHMnXSB3YXMgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS4gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhbiBmXSBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICB7W1xuICAgICAgICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW5cbiAgICAgICAgICAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSkgXX0gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtkdXJhdGlvbl9vZiBmXSBpbnZva2VzIFtmICgpXSBhbmQgbWVhc3VyZXMgaG93IGxvbmcgaXQgdGFrZXMgZnJvbSB0aGUgaW52b2NhdGlvblxuICAgICAgdG8gYWZ0ZXIgdGhlIGRlZmVycmVkIGlzIGRldGVybWluZWQuXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgbWVhc3VyZW1lbnQgaXMgbm90IGV4YWN0OyBiZWNhdXNlIGl0IGludm9sdmVzIGFuIGFkZGl0aW9uYWwgbWFwIG9uIHRoZVxuICAgICAgZGVmZXJyZWQsIHRoZSB0aW1pbmcgYWxzbyBpbmNsdWRlcyB0aGUgZHVyYXRpb24gb2Ygam9icyBpbiB0aGUgam9iIHF1ZXVlIHdoZW4gW2YgKCldXG4gICAgICBpcyBkZXRlcm1pbmVkLiAqKVxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuZW5kXG5cbigqKiBbQ2xvY2tfZGVwcmVjYXRlZF0gaXMgdXNlZCBpbiBbUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZV0gdG8gY3JlYXRlIGEgY2xvY2tcbiAgICBtb2R1bGUgaW4gd2hpY2ggYWxsIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZC4gKilcbm1vZHVsZSB0eXBlIENsb2NrX2RlcHJlY2F0ZWQgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlXG4gICAgICBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG4gIGVuZFxuXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5lbmRcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgKFxuc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBtb2R1bGUgXyAoQyA6IENsb2NrKSA6IENsb2NrX2RlcHJlY2F0ZWQgPSBDXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9ja19kZXByZWNhdGVkKSA6IENsb2NrID0gQ1xuZW5kIDpcbnNpZyBlbmQpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBDbG9ja19pbnRmLkNsb2NrXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gQ2xvY2tfaW50Zi5DbG9ja19kZXByZWNhdGVkXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gQ2xvY2tfaW50Zi5Pcl90aW1lb3V0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdGltZV9zb3VyY2UgKCkgPSAoU2NoZWR1bGVyLnQgKCkpLnRpbWVfc291cmNlIHw+IFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzXG5sZXQgYWZ0ZXIgc3BhbiA9IFRpbWVfc291cmNlLmFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxubGV0IGF0IHRpbWUgPSBUaW1lX3NvdXJjZS5hdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcblxubGV0IGF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wIGNvbXB1dGVfc3BhbiA9XG4gIFRpbWVfc291cmNlLmF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgY29tcHV0ZV9zcGFuXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCBpbnRlcnZhbCA9XG4gIFRpbWVfc291cmNlLmF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbFxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxubGV0IHJ1bl9hdCB0aW1lIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiBhXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIGludGVydmFsIGZcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzJ1xuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgKHRpbWVfc291cmNlICgpKVxuICAgIGludGVydmFsXG4gICAgZlxuOztcblxubGV0IHdpdGhfdGltZW91dCBzcGFuIGQgPSBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgKHRpbWVfc291cmNlICgpKSBzcGFuIGRcbmxldCBkdXJhdGlvbl9vZiBmID0gVGltZV9zb3VyY2UuZHVyYXRpb25fb2YgKHRpbWVfc291cmNlICgpKSBmXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfc291cmNlLkV2ZW50XG5cbiAgbGV0IGFmdGVyIHNwYW4gPSBhZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbiAgbGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IHJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG4gIGxldCBhdCB0aW1lID0gYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG4gIGxldCBydW5fYXQgdGltZSBmIHogPSBydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgelxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSBiID1cbiAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgICAgdGhlbiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIGVsc2UgZiBpIGIgdC4oaSkgPj4+IGZ1biBiIC0+IGxvb3AgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIDAgaW5pdClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbmxldCBzZXFtYXBpIHQgfmYgPVxuICBsZXQlbWFwIGJzID0gZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPiBmIGkgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgaW5cbiAgQXJyYXkub2ZfbGlzdCAoQ29yZS5MaXN0LnJldiBicylcbjs7XG5cbmxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG5sZXQgYWxsX3VuaXQgZHMgPSBEZWZlcnJlZC5pZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkpXG5cbmxldCBpdGVyaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKEFycmF5Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGwgKEFycmF5Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG47O1xuXG5sZXQgZmlsdGVyaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0ID9ob3cgfmYgaW5cbiAgQXJyYXkub2ZfbGlzdF9yZXZcbiAgICAoQXJyYXkuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IEFycmF5LmZpbHRlcl9vcHRcblxubGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgdCA9IG1hcGkgdCA/aG93IH5mIGluXG4gIEFycmF5LmNvbmNhdCAoQXJyYXkudG9fbGlzdCB0KVxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0XG4gICAgdGhlbiByZXR1cm4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2glYmluZCBmIGkgdC4oaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGF1eCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICBpblxuICBhdXggMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9IGZpbHRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoQXJyYXkuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgaSBiID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgeCA6OiB4cyAtPiBmIGkgYiB4ID4+PiBmdW4gYiAtPiBsb29wIHhzIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCB0IDAgaW5pdClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbmxldCBzZXFtYXBpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICBiIDo6IGJzKVxuICA+PnwgTGlzdC5yZXZcbjs7XG5cbmxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG5sZXQgYWxsX3VuaXQgZHMgPSBEZWZlcnJlZC5pZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkpXG5cbmxldCBpdGVyaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCA/aG93IH5mIGluXG4gIExpc3QucmV2IChMaXN0LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICBpblxuICBmaW5kX21hcGkgdCB+ZiAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXIgP2hvdyB0IH5mID0gaXRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgP2hvdyB0IH5mID0gY29uY2F0X21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0ID9ob3cgbiB+ZiA9IG1hcCA/aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIExpc3QgPSBEZWZlcnJlZF9saXN0XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTWFwLnRcblxubGV0IGNoYW5nZSB0IGsgfmYgPVxuICBsZXQlbWFwIG9wdCA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLmNoYW5nZSB0IGsgfmY6KGZ1biBfIC0+IG9wdClcbjs7XG5cbmxldCB1cGRhdGUgdCBrIH5mID1cbiAgbGV0JW1hcCBkYXRhID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuc2V0IHQgfmtleTprIH5kYXRhXG47O1xuXG5sZXQgaXRlcl9rZXlzID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChNYXAua2V5cyB0KSB+ZlxubGV0IGl0ZXIgP2hvdyB0IH5mID0gTGlzdC5pdGVyID9ob3cgKE1hcC5kYXRhIHQpIH5mXG5sZXQgaXRlcmkgP2hvdyB0IH5mID0gTGlzdC5pdGVyID9ob3cgKE1hcC50b19hbGlzdCB0KSB+ZjooZnVuIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSlcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHsga2V5IDogJ2FcbiAgICA7IGRhdGEgOiAnYlxuICAgIDsgbXV0YWJsZSByZXN1bHQgOiAnYyBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cbmVuZFxuXG5sZXQgZmlsdGVyX21hcGlfc2VxdWVudGlhbCB0IH5mID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciB0IGluXG4gIGxldCBzZXF1ZW5jZSA9IE1hcC50b19zZXF1ZW5jZSB+b3JkZXI6YEluY3JlYXNpbmdfa2V5IHQgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OkJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG4gICAgICB+ZjooZnVuIHMgKGtleSwgZGF0YSkgfmsgLT5cbiAgICAgICAgdXBvbiAoZiB+a2V5IH5kYXRhKSAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gayBzXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuYWRkX2V4blxuICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGsgcykpXG4gICAgICB+ZmluaXNoOihmdW4geCAtPlxuICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIChCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy50b190cmVlIHgpKSkpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFNlcXVlbnRpYWwgLT4gZmlsdGVyX21hcGlfc2VxdWVudGlhbCB0IH5mXG4gIHwgYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXyAtPlxuICAgIGxldCBqb2JzID0gcmVmIFtdIGluXG4gICAgbGV0IGpvYl9tYXAgPVxuICAgICAgTWFwLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbGV0IGpvYiA9IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gTm9uZSB9IGluXG4gICAgICAgIGpvYnMgOj0gam9iIDo6ICFqb2JzO1xuICAgICAgICBqb2IpXG4gICAgaW5cbiAgICBsZXQlbWFwICgpID1cbiAgICAgIExpc3QuaXRlciB+aG93IChCYXNlLkxpc3QucmV2ICFqb2JzKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IF8gfSBhcyBqb2IgLT5cbiAgICAgICAgICBsZXQlbWFwIHggPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICBqb2IucmVzdWx0IDwtIHgpXG4gICAgaW5cbiAgICBNYXAuZmlsdGVyX21hcCBqb2JfbWFwIH5mOkpvYi5yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaWx0ZXJfa2V5cyA/aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBrZXkgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXIgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBkYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyaSA/aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiB+a2V5IH5kYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgbWFwaSA/aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCB6ID0gZiB+a2V5IH5kYXRhIGluXG4gICAgU29tZSB6KVxuOztcblxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBtZXJnZSA/aG93IHQxIHQyIH5mID1cbiAgZmlsdGVyX21hcFxuICAgID9ob3dcbiAgICAoTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleSB6IC0+IFNvbWUgKGZ1biAoKSAtPiBmIH5rZXkgeikpKVxuICAgIH5mOihmdW4gdGh1bmsgLT4gdGh1bmsgKCkpXG47O1xuXG5sZXQgYWxsIHQgPSBtYXAgdCB+ZjpGbi5pZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCByZXJhaXNlID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleG4gLT4gRXhuLnJlcmFpc2UgZXhuIFwiY2F1Z2h0IGV4Y2VwdGlvbiBpbiBtZW1vaXplZCBmdW5jdGlvblwiXG47O1xuXG5sZXQgZ2VuZXJhbCAodHlwZSBhKSAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZiA9XG4gIGxldCBtb2R1bGUgSGFzaGFibGUgPSAodmFsIGhhc2hhYmxlKSBpblxuICBsZXQgZiA9XG4gICAgTWVtby5nZW5lcmFsIH5oYXNoYWJsZTpIYXNoYWJsZS5oYXNoYWJsZSAoZnVuIGEgLT5cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgKGZ1biAoKSAtPiBmIGEpKVxuICBpblxuICBTdGFnZWQuc3RhZ2UgKGZ1biBhIC0+IGYgYSA+PnwgcmVyYWlzZSlcbjs7XG5cbmxldCB1bml0IGYgPVxuICBsZXQgZiA9XG4gICAgTWVtby51bml0IChmdW4gKCkgLT5cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgZilcbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT4gZiAoKSA+PnwgcmVyYWlzZSlcbjs7XG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBPcHRpb24udCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKFNvbWUgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IFNvbWUgYSAtPiBmIGFcbiAgICAgICAgfCBOb25lIC0+IERlZmVycmVkLnJldHVybiBOb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gT3B0aW9uLm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdlcnJvcikgdCA9ICgnYSwgJ2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbGV0JW1hcCB0MSA9IHQxXG4gIGFuZCB0MiA9IHQyIGluXG4gIFJlc3VsdC5jb21iaW5lIHQxIHQyIH5vayB+ZXJyXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoT2sgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE9rIGEgLT4gZiBhXG4gICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBEZWZlcnJlZC5yZXR1cm4gZXJyb3IpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGZhaWwgeCA9IERlZmVycmVkLnJldHVybiAoRXJyb3IgeClcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBtYXBfZXJyb3IgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwX2Vycm9yIHIgfmYpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgTW9uaXRvciA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5lbmRcblxuKCogQ29waWVkIHRvIFtlYWdlcl9kZWZlcnJlZF9vcl9lcnJvci5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZF9yZXN1bHQgOiBNb25hZC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBEZWZlcnJlZF9yZXN1bHQudClcblxudHlwZSAnYSB0ID0gJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgRGVmZXJyZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgZlxuICAgICAgICB4XG4gICAgICAgIH5vazooZnVuIGYgeCAtPiBmIHgpXG4gICAgICAgIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxubGV0IGZhaWwgZXJyb3IgPSBEZWZlcnJlZC5yZXR1cm4gKFJlc3VsdC5mYWlsIGVycm9yKVxubGV0IG9rX2V4biB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2tfZXhuXG5sZXQgb2ZfZXhuIGV4biA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bilcbmxldCBvZl9leG5fcmVzdWx0IHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5vZl9leG5fcmVzdWx0XG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmlsdGVyaSA/aG93IHQgfmYgPVxuICAgIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIHggaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgZmluZF9tYXAgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyID9ob3cgdCB+ZiA9IGZpbHRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGNvbmNhdF9tYXAgP2hvdyB0IH5mID0gY29uY2F0X21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuZW5kXG5cbmxldCByZWMgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBtYXRjaCViaW5kIGYgc3RhdGUgd2l0aFxuICB8IGBSZXBlYXQgc3RhdGUgLT4gcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGZcbiAgfCBgRmluaXNoZWQgc3RhdGUgLT4gcmV0dXJuIHN0YXRlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIExpc3QgPSBEZWZlcnJlZF9saXN0XG5cbigqIFdlIGltcGxlbWVudCBhbGwgb2YgdGhlIFtRdWV1ZV0gb3BlcmF0aW9ucyBieSBjb252ZXJ0aW5nIHRoZSBxdWV1ZSB0byBhIGxpc3QgYW5kIHRoZW5cbiAgIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIFtMaXN0XSBvcGVyYXRpb24uICBXZSB1c2UgbGlzdHMgcmF0aGVyIHRoYW4gYXJyYXlzIGJlY2F1c2VcbiAgIGFycmF5cyBsb25nZXIgdGhhbiBhIGNlcnRhaW4gbGVuZ3RoIGFyZSBhbGxvY2F0ZWQgaW4gdGhlIG1ham9yIGhlYXAsIHdoaWNoIGNhbiBjYXVzZVxuICAgdW5uZWNlc3NhcnkgcHJvbW90aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgcXVldWUuICBBbHNvLCB3aGVuIG9uZSBpcyBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheSwgdGhlIGVudGlyZSBhcnJheSBtdXN0IGJlIGtlcHQgYWxpdmUuICBXaGVuIGZvbGRpbmcgb3JcbiAgIGl0ZXJhdGluZyBvdmVyIGEgbGlzdCwgb25seSB0aGUgcmVtYWluaW5nIHRhaWwgb2YgdGhlIGxpc3QgaXMga2VwdCBhbGl2ZS4gIFNvLCB1c2luZ1xuICAgYXJyYXlzIHJhdGhlciB0aGFuIGxpc3RzIHdvdWxkIGluY3JlYXNlIHRoZSBsaXZlLXNwYWNlIG5lZWRlZCBieSB0aGUgcHJvZ3JhbS4gKilcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBMaXN0LmZvbGRpIChRdWV1ZS50b19saXN0IHQpIH5pbml0IH5mXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gTGlzdC5mb2xkIChRdWV1ZS50b19saXN0IHQpIH5pbml0IH5mXG5sZXQgYWxsIHQgPSBMaXN0LmFsbCAoUXVldWUudG9fbGlzdCB0KSA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGFsbF91bml0IHQgPSBMaXN0LmFsbF91bml0IChRdWV1ZS50b19saXN0IHQpXG5sZXQgaXRlciA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGl0ZXJpID9ob3cgdCB+ZiA9IExpc3QuaXRlcmkgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IG1hcCA/aG93IHQgfmYgPSBMaXN0Lm1hcCA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgbWFwaSA/aG93IHQgfmYgPSBMaXN0Lm1hcGkgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGluaXQgP2hvdyBuIH5mID0gTGlzdC5pbml0ID9ob3cgbiB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlciA/aG93IHQgfmYgPSBMaXN0LmZpbHRlciA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyaSA/aG93IHQgfmYgPSBMaXN0LmZpbHRlcmkgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPSBMaXN0LmZpbHRlcl9tYXBpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcblxubGV0IGNvbmNhdF9tYXAgP2hvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmY6KGZ1biB4IC0+IGYgeCA+PnwgUXVldWUudG9fbGlzdClcbiAgPj58IFF1ZXVlLm9mX2xpc3Rcbjs7XG5cbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPVxuICBMaXN0LmNvbmNhdF9tYXBpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmY6KGZ1biBpIHggLT4gZiBpIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kX21hcGkgdCB+ZiA9IExpc3QuZmluZF9tYXBpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZCB0IH5mID0gTGlzdC5maW5kIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZGkgdCB+ZiA9IExpc3QuZmluZGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmb3JfYWxsaSB0IH5mID0gTGlzdC5mb3JfYWxsaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHNpIHQgfmYgPSBMaXN0LmV4aXN0c2kgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG4oKiBbZm9sZF9tYXBpID9ob3cgdCB+aW5pdCB+bWFwaV9mIH5mb2xkX2ZdIGlzIGEgbW9yZSBlZmZpY2llbnQgdmVyc2lvbiBvZjpcblxuICAge1tcbiAgICAgZm9sZCB+aW5pdCB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGZvbGRfZiBiIGEpKSAobWFwaSB0ID9ob3cgfmY6bWFwaV9mKSBdfVxuXG4gICBJdCBhdm9pZHMgY3JlYXRpbmcgdGhlIGludGVybWVkaWF0ZSBzZXF1ZW5jZSB0aGF0IHdvdWxkIHJlc3VsdCBmcm9tIFttYXBpXSwgYW5kXG4gICBhbGxvd3MgdGhlIFtmb2xkXSB0byBwcm9jZWVkIGNvbmN1cnJlbnRseSB3aXRoIHRoZSBbbWFwaV0sIHNvIHRoYXQgb25lIGNhbiBhY2N1bXVsYXRlXG4gICB0aGUgcmVzdWx0IGFzIHNvb24gYXMgcG9zc2libGUsIHBvc3NpYmx5IGF2b2lkaW5nIGNyZWF0aW5nIGFuIGludGVybWVkaWF0ZSBzdHJ1Y3R1cmVcbiAgIChlLmcuIFtpdGVyaV0gYW5kIFtmaWx0ZXJfbWFwXSB1c2VzIFtmb2xkX21hcGldIHRvIGRvIHRoaXMpLiAqKVxubGV0IGZvbGRfbWFwaVxuICAgICAgKHR5cGUgYSBiIGMpXG4gICAgICA/KGhvdyA9IGBTZXF1ZW50aWFsKVxuICAgICAgKHQgOiBhIFNlcXVlbmNlLnQpXG4gICAgICB+KGluaXQgOiBjKVxuICAgICAgfihtYXBpX2YgOiBpbnQgLT4gYSAtPiBiIERlZmVycmVkLnQpXG4gICAgICB+KGZvbGRfZiA6IGMgLT4gYiAtPiBjKVxuICA6IGMgRGVmZXJyZWQudFxuICA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFNlcXVlbnRpYWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYykgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXR1cm4gY1xuICAgICAgfCBTb21lIChhLCB0KSAtPlxuICAgICAgICBsZXQlYmluZCBiID0gbWFwaV9mIGkgYSBpblxuICAgICAgICBsb29wIChpICsgMSkgdCAoZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IGluaXRcbiAgfCBgUGFyYWxsZWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBtYXBpX2YgaSBhIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbGV0IHRocm90dGxlID0gVGhyb3R0bGUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSBpblxuICAgICgqIFtsb29wXSBmb3JjZXMgdGhlIGlucHV0IHNlcXVlbmNlIGFuZCBlbnF1ZXVlcyBhIHRocm90dGxlIGpvYiBvbmx5IGlmIHRoZXJlIGlzXG4gICAgICAgY2FwYWNpdHkgYXZhaWxhYmxlLiAqKVxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIGxldCViaW5kICgpID0gVGhyb3R0bGUuY2FwYWNpdHlfYXZhaWxhYmxlIHRocm90dGxlIGluXG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBUaHJvdHRsZS5lbnF1ZXVlIHRocm90dGxlIChmdW4gKCkgLT4gbWFwaV9mIGkgYSkgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICB0XG4gICAgfmluaXQ6KDAsIGluaXQpXG4gICAgfmY6KGZ1biAoaSwgYikgYSB+ayAtPlxuICAgICAgbGV0JWJpbmQgYiA9IGYgaSBiIGEgaW5cbiAgICAgIGsgKGkgKyAxLCBiKSlcbiAgICB+ZmluaXNoOihmdW4gKF8sIGIpIC0+IHJldHVybiBiKVxuOztcblxuKCogW2ZvbGRdIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBbZm9sZGldIHRvIHNhdmUgdGhlIGludGVybWVkaWF0ZSBjbG9zdXJlXG4gICBhbGxvY2F0aW9uLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZCB0IH5pbml0IH5mOihmdW4gYiBhIH5rIC0+IGYgYiBhID4+PSBrKSB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGFsbCB0ID1cbiAgbGV0JW1hcCByZXMgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjY3VtIGQgLT5cbiAgICAgIGxldCVtYXAgYSA9IGQgaW5cbiAgICAgIGEgOjogYWNjdW0pXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHJlcylcbjs7XG5cbmxldCBhbGxfdW5pdCB0ID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiB2KVxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJldHVybiBOb25lXG4gICAgfCBTb21lICh2LCByZXN0KSAtPlxuICAgICAgKG1hdGNoJWJpbmQgZiBpIHYgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgcmVzdCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyaSA/aG93IHQgfmYgOiB1bml0IERlZmVycmVkLnQgPVxuICBmb2xkX21hcGkgP2hvdyB0IH5tYXBpX2Y6ZiB+aW5pdDooKSB+Zm9sZF9mOihmdW4gKCkgKCkgLT4gKCkpXG47O1xuXG5sZXQgbWFwaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGkgP2hvdyB0IH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpIH5pbml0OltdIH5mb2xkX2Y6KGZ1biBicyBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxuKCogW2ZpbHRlcl9tYXBpXSBpcyBpbXBsZW1lbnRlZCB1c2luZyBbZm9sZF9tYXBpXSByYXRoZXIgdGhhbiBbbWFwXSBzbyB0aGF0IHdlIG5ldmVyIG5lZWRcbiAgIHRvIGtlZXAgYSBsb25nIHN0cmVhbSBvZiBpbnRlcm1lZGlhdGUgW05vbmVdIHJlc3VsdHMgaW4gdGhlIGFjY3VtdWxhdG9yLCBvbmx5IHRvIGxhdGVyXG4gICBmaWx0ZXIgdGhlbSBhbGwgb3V0LiAqKVxubGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaVxuICAgICAgdFxuICAgICAgP2hvd1xuICAgICAgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSlcbiAgICAgIH5pbml0OltdXG4gICAgICB+Zm9sZF9mOihmdW4gYnMgbWF5YmVfdiAtPlxuICAgICAgICBtYXRjaCBtYXliZV92IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGJzXG4gICAgICAgIHwgU29tZSBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxubGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mID4+fCBTZXF1ZW5jZS5jb25jYXRcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2glbWFwIGYgaSBhIHdpdGhcbiAgICB8IHRydWUgLT4gU29tZSBhXG4gICAgfCBmYWxzZSAtPiBOb25lKVxuOztcblxubGV0IGl0ZXIgP2hvdyB0IH5mID0gaXRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgP2hvdyB0IH5mID0gY29uY2F0X21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0ID9ob3cgbiB+ZiA9IG1hcCA/aG93IChTZXF1ZW5jZS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUaW1lID0gVGltZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgRGF0ZSA9IERhdGVcblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cblxubGV0IHNob3dfZGVidWdfbWVzc2FnZXMgPSByZWYgZmFsc2VcbmxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgZmFsc2VcblxubW9kdWxlIEZsdXNoZWRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgT2tcbiAgICB8IGBSZWFkZXJfY2xvc2VkXG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgY29tYmluZSAobCA6IHQgRGVmZXJyZWQudCBsaXN0KSA9XG4gICAgbGV0JW1hcCBsID0gRGVmZXJyZWQuYWxsIGwgaW5cbiAgICBtYXRjaCBMaXN0Lm1lbSBsIGBSZWFkZXJfY2xvc2VkIH5lcXVhbCB3aXRoXG4gICAgfCB0cnVlIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgfCBmYWxzZSAtPiBgT2tcbiAgOztcbmVuZFxuXG4oKiBBIFtDb25zdW1lci50XSBhY3RzIGFzIHRoZSBtb25pdG9yIG9mIHNvbWUgcHJvY2VzcyB0aGF0IHJlYWRzIHZhbHVlcyBmcm9tIGEgcGlwZSBhbmRcbiAgIHByb2Nlc3NlcyB0aGVtLCBhbGxvd2luZyB0aGF0IHByb2Nlc3M6XG4gICAtIHRvIGNvbW11bmljYXRlIHRoYXQgaXQgaGFzIHRha2VuIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUgdmFsdWVzXG4gICAtIHRvIHNpZ25hbCB3aGVuIGl0IGhhcyBmaW5pc2hlZCB3aXRoIHRoZSB2YWx1ZXMgdG8gaW50ZXJlc3RlZCBwYXJ0aWVzICh2aWFcbiAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0pXG5cbiAgIEl0IGlzIHVzZWQgaW4gdHdvIHN0ZXBzOlxuXG4gICAxLiBjYWxsaW5nIFtDb25zdW1lci5zdGFydF0gYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBjb25zdW1lciB0YWtlcyB2YWx1ZXMgb3V0IG9mIHRoZVxuICAgUGlwZSB2aWEgW3JlYWRdIG9yIFtyZWFkJ10uXG5cbiAgIDIuIGNhbGxpbmcgW0NvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1dLlxuXG4gICBCeSBjYWxsaW5nIFt2YWx1ZXNfc2VudF9kb3duc3RyZWFtXSBvbmUgYXNzZXJ0cyB0aGF0IHRoZSBbZG93bnN0cmVhbV9mbHVzaGVkXSBmdW5jdGlvblxuICAgc3VwcGxpZWQgdG8gW2NyZWF0ZV0gd2lsbCBub3cgd2FpdCBmb3IgdGhpcyB2YWx1ZS5cblxuICAgSWYgbm8gW0NvbnN1bWVyLnRdIGlzIHN1cHBsaWVkIHdoZW4gYSB2YWx1ZSBpcyByZWFkIHRoZW4gdGhlIHZhbHVlIGlzIGRlZmluZWQgdG8gYmVcbiAgIGZsdXNoZWQgYXQgdGhhdCB0aW1lLiAqKVxubW9kdWxlIENvbnN1bWVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBwaXBlX2lkOmludFxuICAgIC0+IGRvd25zdHJlYW1fZmx1c2hlZDoodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpXG4gICAgLT4gdFxuXG4gIHZhbCBwaXBlX2lkIDogdCAtPiBpbnRcbiAgdmFsIHN0YXJ0IDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIDogdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGlwZV9pZCA6IGludFxuICAgIDsgKCogW3ZhbHVlc19yZWFkXSByZWZsZWN0cyB3aGV0aGVyIHZhbHVlcyB0aGUgY29uc3VtZXIgaGFzIHJlYWQgZnJvbSB0aGUgcGlwZSBoYXZlIGJlZW5cbiAgICAgICAgIHNlbnQgZG93bnN0cmVhbSBvciBpZiBub3QsIGhvbGRzIGFuIGl2YXIgdGhhdCBpcyB0byBiZSBmaWxsZWQgd2hlbiB0aGV5IGFyZS4gKilcbiAgICAgIG11dGFibGUgdmFsdWVzX3JlYWQgOlxuICAgICAgICBbIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIG9mIHVuaXQgSXZhci50IF1cbiAgICA7ICgqIFtkb3duc3RyZWFtX2ZsdXNoZWQgKCldIHJldHVybnMgd2hlbiBhbGwgcHJpb3IgdmFsdWVzIHRoYXQgdGhlIGNvbnN1bWVyIGhhc1xuICAgICAgICAgcGFzc2VkIGRvd25zdHJlYW0gaGF2ZSBiZWVuIGZsdXNoZWQgYWxsIHRoZSB3YXkgZG93biB0aGUgY2hhaW4gb2YgcGlwZXMuICopXG4gICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgOiB1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5waXBlX2lkOmlnbm9yZVxuICAgICAgICB+dmFsdWVzX3JlYWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICAgICAgICAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpXG4gICAgICAgIH5kb3duc3RyZWFtX2ZsdXNoZWQ6aWdub3JlXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5Db25zdW1lci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIH5waXBlX2lkIH5kb3duc3RyZWFtX2ZsdXNoZWQgPVxuICAgIHsgcGlwZV9pZDsgdmFsdWVzX3JlYWQgPSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbTsgZG93bnN0cmVhbV9mbHVzaGVkIH1cbiAgOztcblxuICBsZXQgc3RhcnQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gXyAtPiAoKVxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIChJdmFyLmNyZWF0ZSAoKSlcbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIHdoZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB3aGVuX3NlbnRfZG93bnN0cmVhbSBpblxuICAgICAgdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9yZWFkID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfcmVhZC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCByZWFkIGF0dGVtcHQuICBJZiBzb21lb25lIHJlYWRzIGZyb20gYW4gZW1wdHlcbiAgICAgcGlwZSwgdGhleSBlbnF1ZXVlIGEgW0Jsb2NrZWRfcmVhZC50XSBpbiB0aGUgcXVldWUgb2YgW2Jsb2NrZWRfcmVhZHNdLiAgTGF0ZXIsIHdoZW5cbiAgICAgdmFsdWVzIGFyZSB3cml0dGVuIHRvIGEgcGlwZSwgdGhhdCB3aWxsIGNhdXNlIHNvbWUgbnVtYmVyIG9mIGJsb2NrZWQgcmVhZHMgdG8gYmVcbiAgICAgZmlsbGVkLCBmaXJzdCBjb21lIGZpcnN0IHNlcnZlLiAgVGhlIGJsb2NrZWQtcmVhZCBjb25zdHJ1Y3RvciBzcGVjaWZpZXMgaG93IG1hbnlcbiAgICAgdmFsdWVzIGEgcmVhZCBzaG91bGQgY29uc3VtZSBmcm9tIHRoZSBwaXBlIHdoZW4gaXQgZ2V0cyBpdHMgdHVybi5cblxuICAgICBJZiBhIHBpcGUgaXMgY2xvc2VkLCB0aGVuIGFsbCBibG9ja2VkIHJlYWRzIHdpbGwgYmUgZmlsbGVkIHdpdGggW2BFb2ZdLiAqKVxuICB0eXBlICdhIHdhbnRzID1cbiAgICB8IFplcm8gb2YgWyBgRW9mIHwgYE9rIF0gSXZhci50XG4gICAgfCBPbmUgb2YgWyBgRW9mIHwgYE9rIG9mICdhIF0gSXZhci50XG4gICAgfCBBdF9tb3N0IG9mIGludCAqIFsgYEVvZiB8IGBPayBvZiAnYSBRdWV1ZS50IF0gSXZhci50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdhbnRzIDogJ2Egd2FudHNcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+d2FudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgWmVybyBfIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgICB8IEF0X21vc3QgKGksIF8pIC0+IGFzc2VydCAoaSA+IDApKSlcbiAgICAgICAgfmNvbnN1bWVyOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT4gQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5CbG9ja2VkX3JlYWQuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHdhbnRzIGNvbnN1bWVyID0geyB3YW50czsgY29uc3VtZXIgfVxuXG4gIGxldCBpc19lbXB0eSB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IE9uZSBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5pc19lbXB0eSBpXG4gIDs7XG5cbiAgbGV0IGZpbGxfd2l0aF9lb2YgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgT25lIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5maWxsIGkgYEVvZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX2ZsdXNoID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfZmx1c2gudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgZmx1c2ggb3BlcmF0aW9uLCB3aGljaCBjYW4gYmUgZW5hYmxlZCBieSBhXG4gICAgIGZ1dHVyZSByZWFkLiAgSWYgc29tZW9uZSBkb2VzIFtmbHVzaGVkIHBdIG9uIGEgcGlwZSwgdGhhdCBibG9ja3MgdW50aWwgZXZlcnl0aGluZ1xuICAgICB0aGF0J3MgY3VycmVudGx5IGluIHRoZSBwaXBlIGF0IHRoYXQgcG9pbnQgaGFzIGRyYWluZWQgb3V0IG9mIHRoZSBwaXBlLiAgV2hlbiB3ZSBjYWxsXG4gICAgIFtmbHVzaGVkXSwgaXQgcmVjb3JkcyB0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgdGhhdCBoYXMgYmVlbiB3cml0dGVuIHNvIGZhciBpblxuICAgICBbZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF0uICBXZSBmaWxsIHRoZSBbRmx1c2gudF0gd2l0aCBbYE9rXSB3aGVuIHRoaXMgYW1vdW50IG9mXG4gICAgIGRhdGEgaGFzIGJlZW4gcmVhZCBmcm9tIHRoZSBwaXBlLlxuXG4gICAgIEEgW0Jsb2NrZWRfZmx1c2gudF0gY2FuIGFsc28gYmUgZmlsbGVkIHdpdGggW2BSZWFkZXJfY2xvc2VkXSwgd2hpY2ggaGFwcGVucyB3aGVuIHRoZVxuICAgICByZWFkZXIgZW5kIG9mIHRoZSBwaXBlIGlzIGNsb3NlZCwgYW5kIHdlIGFyZSB0aHVzIHN1cmUgdGhhdCB0aGUgdW5yZWFkIGVsZW1lbnRzXG4gICAgIHByZWNlZGluZyB0aGUgZmx1c2ggd2lsbCBuZXZlciBiZSByZWFkLiAqKVxuICB0eXBlIHQgPVxuICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA6IGludFxuICAgIDsgcmVhZHkgOiBbIGBPayB8IGBSZWFkZXJfY2xvc2VkIF0gSXZhci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGZpbGwgdCB2ID0gSXZhci5maWxsIHQucmVhZHkgdlxuZW5kXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgKCogW2lkXSBpcyBhbiBpbnRlZ2VyIHVzZWQgdG8gZGlzdGluZ3Vpc2ggcGlwZXMgd2hlbiBkZWJ1Z2dpbmcuICopXG4gICAgaWQgOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XG4gIDsgKCogW2luZm9dIGlzIHVzZXItcHJvdmlkZWQgYXJiaXRyYXJ5IHNleHAsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICopXG4gICAgbXV0YWJsZSBpbmZvIDogU2V4cC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7ICgqIFtidWZmZXJdIGhvbGRzIHZhbHVlcyB3cml0dGVuIHRvIHRoZSBwaXBlIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gcmVhZC4gKilcbiAgICBtdXRhYmxlIGJ1ZmZlciA6ICdhIFF1ZXVlLnRcbiAgOyAoKiBbc2l6ZV9idWRnZXRdIGdvdmVybnMgcHVzaGJhY2sgb24gd3JpdGVycyB0byB0aGUgcGlwZS5cblxuICAgICAgIFRoZXJlIGlzICpubyogaW52YXJpYW50IHRoYXQgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gc2l6ZV9idWRnZXRdLiAgVGhlcmUgaXMgbm9cbiAgICAgICBoYXJkIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBjYW4gYmUgc3R1ZmZlZCBpbnRvIHRoZSBbYnVmZmVyXS5cbiAgICAgICBUaGlzIGlzIGR1ZSB0byB0aGUgd2F5IHdlIGhhbmRsZSB3cml0ZXMuICBXaGVuIHdlIGRvIGEgd3JpdGUsIGFsbCBvZiB0aGUgdmFsdWVzXG4gICAgICAgd3JpdHRlbiBhcmUgaW1tZWRpYXRlbHkgZW5xdWV1ZWQgaW50byBbYnVmZmVyXS4gIEFmdGVyIHRoZSB3cml0ZSwgaWYgW1F1ZXVlLmxlbmd0aFxuICAgICAgIGJ1ZmZlciA8PSB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVyIHdpbGwgYmUgbm90aWZpZWQgdG8gY29udGludWUgd3JpdGluZy5cbiAgICAgICBBZnRlciB0aGUgd3JpdGUsIGlmIFtsZW5ndGggdCA+IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZSB3aWxsIGJsb2NrIHVudGlsIHRoZVxuICAgICAgIHBpcGUgaXMgdW5kZXIgYnVkZ2V0LiAqKVxuICAgIG11dGFibGUgc2l6ZV9idWRnZXQgOiBpbnRcbiAgOyAoKiBbcHVzaGJhY2tdIGlzIHVzZWQgdG8gZ2l2ZSBmZWVkYmFjayB0byB3cml0ZXJzIGFib3V0IHdoZXRoZXIgdGhleSBzaG91bGQgd3JpdGUgdG9cbiAgICAgICB0aGUgcGlwZS4gIFtwdXNoYmFja10gaXMgZnVsbCBpZmYgW2xlbmd0aCB0IDw9IHQuc2l6ZV9idWRnZXQgfHwgaXNfY2xvc2VkIHRdLiAqKVxuICAgIG11dGFibGUgcHVzaGJhY2sgOiB1bml0IEl2YXIudFxuICA7ICgqIFtudW1fdmFsdWVzX3JlYWRdIGtlZXBzIHRyYWNrIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHJlYWRcbiAgICAgICBmcm9tIHRoZSBwaXBlLiAgV2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgb3ZlcmZsb3cgaW4gW251bV92YWx1ZXNfcmVhZF0uICBZb3UnZFxuICAgICAgIG5lZWQgdG8gd3JpdGUgMl42MiBlbGVtZW50cyB0byB0aGUgcGlwZSwgd2hpY2ggd291bGQgdGFrZSBhYm91dCAxNDYgeWVhcnMsIGF0IGFcbiAgICAgICBmbG93IHJhdGUgb2YgMSBzaXplLXVuaXQvbmFub3NlY29uZC4gKilcbiAgICBtdXRhYmxlIG51bV92YWx1ZXNfcmVhZCA6IGludFxuICA7ICgqIFtibG9ja2VkX2ZsdXNoZXNdIGhvbGRzIGZsdXNoZXMgd2hvc2UgcHJlY2VkaW5nIGVsZW1lbnRzIGhhdmUgbm90IGJlZW4gY29tcGxldGVseVxuICAgICAgIHJlYWQuICBGb3IgZWFjaCBibG9ja2VkIGZsdXNoLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBiZSByZWFkIGZyb20gdGhlXG4gICAgICAgcGlwZSBpbiBvcmRlciB0byBmaWxsIHRoZSBmbHVzaCBpcyAgICAgICAgICAgICAgICAgICAgICAgIDpcblxuICAgICAgIGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgLSBudW1fdmFsdWVzX3JlYWRcblxuICAgICAgIEtlZXBpbmcgdGhlIGRhdGEgaW4gdGhpcyBmb3JtIGFsbG93cyB1cyB0byBjaGFuZ2UgYSBzaW5nbGUgZmllbGQobnVtX3ZhbHVlc19yZWFkKVxuICAgICAgIHdoZW4gd2UgY29uc3VtZSB2YWx1ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSBxdWV1ZSBvZlxuICAgICAgIGZsdXNoZXMuICopXG4gICAgYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50IFF1ZXVlLnRcbiAgOyAoKiBbYmxvY2tlZF9yZWFkc10gaG9sZHMgcmVhZHMgdGhhdCBhcmUgd2FpdGluZyBvbiBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIHBpcGUuICopXG4gICAgYmxvY2tlZF9yZWFkcyA6ICdhIEJsb2NrZWRfcmVhZC50IFF1ZXVlLnRcbiAgOyAoKiBbY2xvc2VkXSBpcyBmaWxsZWQgd2hlbiB3ZSBjbG9zZSB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIGNsb3NlZCA6IHVuaXQgSXZhci50XG4gIDsgKCogW3JlYWRfY2xvc2VkXSBpcyBmaWxsZWQgd2hlbiB3ZSBjbG9zZSB0aGUgcmVhZCBlbmQgb2YgdGhlIHBpcGUuICopXG4gICAgcmVhZF9jbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtjb25zdW1lcnNdIGlzIGEgbGlzdCBvZiBhbGwgY29uc3VtZXJzIHRoYXQgbWF5IGJlIGhhbmRsaW5nIHZhbHVlcyByZWFkIGZyb20gdGhlXG4gICAgICAgcGlwZS4gKilcbiAgICBtdXRhYmxlIGNvbnN1bWVycyA6IENvbnN1bWVyLnQgbGlzdFxuICA7ICgqIFt1cHN0cmVhbV9mbHVzaGVkc10gaGFzIGEgZnVuY3Rpb24gZm9yIGVhY2ggcGlwZSBpbW1lZGlhdGVseSB1cHN0cmVhbSBvZiB0aGlzIG9uZS5cbiAgICAgICBUaGF0IGZ1bmN0aW9uIHdhbGtzIHRvIHRoZSBoZWFkKHMpIG9mIHRoZSB1cHN0cmVhbSBwaXBlLCBhbmQgY2FsbHNcbiAgICAgICBbZG93bnN0cmVhbV9mbHVzaGVkXSBvbiB0aGUgaGVhZChzKS4gIFNlZSB0aGUgZGVmaW5pdGlvbiBvZiBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgICAgICBiZWxvdy4gKilcbiAgICB1cHN0cmVhbV9mbHVzaGVkcyA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICgnYSwgJ3BoYW50b20pIHBpcGUgPSAoJ2EsICdwaGFudG9tKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBoYXNoIHQgPSBIYXNodGJsLmhhc2ggdC5pZFxubGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBjb21wYXJlIHQxIHQyID0gSW50LmNvbXBhcmUgdDEuaWQgdDIuaWRcbmxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxubGV0IGlzX3JlYWRfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5yZWFkX2Nsb3NlZFxubGV0IGNsb3NlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VkXG5sZXQgcHVzaGJhY2sgdCA9IEl2YXIucmVhZCB0LnB1c2hiYWNrXG5sZXQgbGVuZ3RoIHQgPSBRdWV1ZS5sZW5ndGggdC5idWZmZXJcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6aWdub3JlXG4gICAgICB+aW5mbzppZ25vcmVcbiAgICAgIH5idWZmZXI6aWdub3JlXG4gICAgICB+c2l6ZV9idWRnZXQ6KGNoZWNrIChmdW4gc2l6ZV9idWRnZXQgLT4gYXNzZXJ0IChzaXplX2J1ZGdldCA+PSAwKSkpXG4gICAgICB+cHVzaGJhY2s6XG4gICAgICAgIChjaGVjayAoZnVuIHB1c2hiYWNrIC0+XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgQm9vbC5lcXVhbFxuICAgICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCBwdXNoYmFjaylcbiAgICAgICAgICAgICAgIChsZW5ndGggdCA8PSB0LnNpemVfYnVkZ2V0IHx8IGlzX2Nsb3NlZCB0KSkpKVxuICAgICAgfm51bV92YWx1ZXNfcmVhZDppZ25vcmVcbiAgICAgIH5ibG9ja2VkX2ZsdXNoZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGJsb2NrZWRfZmx1c2hlcyAtPlxuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIChmIDogQmxvY2tlZF9mbHVzaC50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoZi5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkID4gdC5udW1fdmFsdWVzX3JlYWQpKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBMaXN0LmlzX3NvcnRlZFxuICAgICAgICAgICAgICAgfmNvbXBhcmU6SW50LmNvbXBhcmVcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKFF1ZXVlLnRvX2xpc3QgYmxvY2tlZF9mbHVzaGVzKVxuICAgICAgICAgICAgICAgICAgfmY6QmxvY2tlZF9mbHVzaC5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGlmIGlzX2VtcHR5IHQgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfZmx1c2hlcykpKVxuICAgICAgfmJsb2NrZWRfcmVhZHM6XG4gICAgICAgIChjaGVjayAoZnVuIGJsb2NrZWRfcmVhZHMgLT5cbiAgICAgICAgICAgKCogSWYgZGF0YSBpcyBhdmFpbGFibGUsIG5vIG9uZSBpcyB3YWl0aW5nIGZvciBpdC4gIFRoaXMgd291bGQgbmVlZCB0byBjaGFuZ2UgaWZcbiAgICAgICAgICAgICAgd2UgZXZlciBpbXBsZW1lbnQgW3JlYWRfZXhhY3RseV0gYXMgYW4gYXRvbWljIG9wZXJhdGlvbi4gKilcbiAgICAgICAgICAgaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9yZWFkcyk7XG4gICAgICAgICAgIFF1ZXVlLml0ZXIgYmxvY2tlZF9yZWFkcyB+ZjooZnVuIHJlYWQgLT5cbiAgICAgICAgICAgICBCbG9ja2VkX3JlYWQuaW52YXJpYW50IHJlYWQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChCbG9ja2VkX3JlYWQuaXNfZW1wdHkgcmVhZCkpO1xuICAgICAgICAgICAoKiBZb3UgbmV2ZXIgYmxvY2sgdHJ5aW5nIHRvIHJlYWQgYSBjbG9zZWQgcGlwZS4gKilcbiAgICAgICAgICAgaWYgaXNfY2xvc2VkIHQgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpKSlcbiAgICAgIH5jbG9zZWQ6aWdub3JlXG4gICAgICB+cmVhZF9jbG9zZWQ6aWdub3JlXG4gICAgICB+Y29uc3VtZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBsIC0+XG4gICAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4gY29uc3VtZXIgLT5cbiAgICAgICAgICAgICBDb25zdW1lci5pbnZhcmlhbnQgY29uc3VtZXI7XG4gICAgICAgICAgICAgYXNzZXJ0IChDb25zdW1lci5waXBlX2lkIGNvbnN1bWVyID0gdC5pZCkpKSlcbiAgICAgIH51cHN0cmVhbV9mbHVzaGVkczppZ25vcmVcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogKF8sIF8pIHQpXVxuOztcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlIHBoYW50b20gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSB0ID0gKCdhLCBwaGFudG9tKSBwaXBlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5sZXQgaWRfcmVmID0gcmVmIDBcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyID1cbiAgaW5jciBpZF9yZWY7XG4gIGxldCB0ID1cbiAgICB7IGlkID0gIWlkX3JlZlxuICAgIDsgaW5mb1xuICAgIDsgY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IHJlYWRfY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICA7XG4gICAgICBzaXplX2J1ZGdldFxuICAgIDsgcHVzaGJhY2sgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgYnVmZmVyID0gaW5pdGlhbF9idWZmZXJcbiAgICA7IG51bV92YWx1ZXNfcmVhZCA9IDBcbiAgICA7IGJsb2NrZWRfZmx1c2hlcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgYmxvY2tlZF9yZWFkcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgY29uc3VtZXJzID0gW11cbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzID0gQmFnLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0ID1cbiAgaWYgc2l6ZV9idWRnZXQgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJuZWdhdGl2ZSBzaXplX2J1ZGdldFwiIChzaXplX2J1ZGdldCA6IGludCldXG4gIGVsc2Ugc2l6ZV9idWRnZXRcbjs7XG5cbmxldCBjcmVhdGUgP3NpemVfYnVkZ2V0ID9pbmZvICgpID1cbiAgbGV0IHNpemVfYnVkZ2V0ID1cbiAgICBtYXRjaCBzaXplX2J1ZGdldCB3aXRoXG4gICAgfCBTb21lIHYgLT4gdmFsaWRhdGVfc2l6ZV9idWRnZXQgdlxuICAgIHwgTm9uZSAtPiAwXG4gIGluXG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXI6KFF1ZXVlLmNyZWF0ZSAoKSkgaW5cbiAgKCogaW5pdGlhbGx5LCB0aGUgcGlwZSBkb2VzIG5vdCBwdXNoYmFjayAqKVxuICBJdmFyLmZpbGwgdC5wdXNoYmFjayAoKTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICB0LCB0XG47O1xuXG5sZXQgdXBkYXRlX3B1c2hiYWNrIHQgPVxuICBpZiBsZW5ndGggdCA8PSB0LnNpemVfYnVkZ2V0IHx8IGlzX2Nsb3NlZCB0XG4gIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IHQucHVzaGJhY2sgKClcbiAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5wdXNoYmFja1xuICB0aGVuIHQucHVzaGJhY2sgPC0gSXZhci5jcmVhdGUgKClcbjs7XG5cbmxldCBjbG9zZSB0ID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwiY2xvc2VcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgICBpZiBpc19lbXB0eSB0XG4gICAgdGhlbiAoXG4gICAgICBRdWV1ZS5pdGVyIHQuYmxvY2tlZF9yZWFkcyB+ZjpCbG9ja2VkX3JlYWQuZmlsbF93aXRoX2VvZjtcbiAgICAgIFF1ZXVlLmNsZWFyIHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQpXG47O1xuXG5sZXQgY2xvc2VfcmVhZCB0ID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwiY2xvc2VfcmVhZFwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgbm90IChpc19yZWFkX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5yZWFkX2Nsb3NlZCAoKTtcbiAgICBRdWV1ZS5pdGVyIHQuYmxvY2tlZF9mbHVzaGVzIH5mOihmdW4gZmx1c2ggLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGBSZWFkZXJfY2xvc2VkKTtcbiAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfZmx1c2hlcztcbiAgICBRdWV1ZS5jbGVhciB0LmJ1ZmZlcjtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICAoKiB3ZSBqdXN0IGNsZWFyZWQgdGhlIGJ1ZmZlciwgc28gbWF5IG5lZWQgdG8gZmlsbCBbdC5wdXNoYmFja10gKilcbiAgICBjbG9zZSB0KVxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZiA9XG4gIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICB1cG9uIChmIHcpIChmdW4gKCkgLT4gY2xvc2Ugdyk7XG4gIHJcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyID9zaXplX2J1ZGdldCB+Y2xvc2Vfb25fZXhjZXB0aW9uIGYgPVxuICBpZiBub3QgY2xvc2Vfb25fZXhjZXB0aW9uXG4gIHRoZW4gY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmXG4gIGVsc2UgKFxuICAgIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgICB+cnVuOlxuICAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgIChmdW4gKCkgLT4gZiB3KVxuICAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgICBjbG9zZSB3O1xuICAgICAgICAgICByZXR1cm4gKCkpKTtcbiAgICByKVxuOztcblxubGV0IGNyZWF0ZV93cml0ZXIgP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgfnJ1bjpcbiAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAoZnVuICgpIC0+IGYgcilcbiAgICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgICBjbG9zZV9yZWFkIHI7XG4gICAgICAgICByZXR1cm4gKCkpKTtcbiAgd1xuOztcblxubGV0IHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lciA9XG4gIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnN0YXJ0O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hdGNoIFF1ZXVlLnBlZWsgdC5ibG9ja2VkX2ZsdXNoZXMgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmbHVzaCAtPlxuICAgICAgaWYgdC5udW1fdmFsdWVzX3JlYWQgPj0gZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGlnbm9yZSAoUXVldWUuZGVxdWV1ZV9leG4gdC5ibG9ja2VkX2ZsdXNoZXMgOiBCbG9ja2VkX2ZsdXNoLnQpO1xuICAgICAgICAobWF0Y2ggY29uc3VtZXIgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgT2tcbiAgICAgICAgIHwgU29tZSBjb25zdW1lciAtPlxuICAgICAgICAgICB1cG9uIChDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIGNvbnN1bWVyKSAoZnVuIGZsdXNoX3Jlc3VsdCAtPlxuICAgICAgICAgICAgIEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBmbHVzaF9yZXN1bHQpKTtcbiAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxuKCogW2NvbnN1bWVfYWxsIHRdIHJlYWRzIGFsbCB0aGUgZWxlbWVudHMgaW4gW3RdLiAqKVxubGV0IGNvbnN1bWVfYWxsIHQgY29uc3VtZXIgPVxuICBsZXQgcmVzdWx0ID0gdC5idWZmZXIgaW5cbiAgdC5idWZmZXIgPC0gUXVldWUuY3JlYXRlICgpO1xuICB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIFF1ZXVlLmxlbmd0aCByZXN1bHQ7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWVfb25lIHQgY29uc3VtZXIgPVxuICBhc3NlcnQgKGxlbmd0aCB0ID49IDEpO1xuICBsZXQgcmVzdWx0ID0gUXVldWUuZGVxdWV1ZV9leG4gdC5idWZmZXIgaW5cbiAgdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyAxO1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIgPVxuICBhc3NlcnQgKG1heF9xdWV1ZV9sZW5ndGggPj0gMCk7XG4gIGlmIG1heF9xdWV1ZV9sZW5ndGggPj0gbGVuZ3RoIHRcbiAgdGhlbiBjb25zdW1lX2FsbCB0IGNvbnN1bWVyXG4gIGVsc2UgKFxuICAgIHQubnVtX3ZhbHVlc19yZWFkIDwtIHQubnVtX3ZhbHVlc19yZWFkICsgbWF4X3F1ZXVlX2xlbmd0aDtcbiAgICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSB+Y2FwYWNpdHk6bWF4X3F1ZXVlX2xlbmd0aCAoKSBpblxuICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzp0LmJ1ZmZlciB+ZHN0OnJlc3VsdCB+bGVuOm1heF9xdWV1ZV9sZW5ndGggKCk7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgcmVzdWx0KVxuOztcblxubGV0IHNldF9zaXplX2J1ZGdldCB0IHNpemVfYnVkZ2V0ID1cbiAgbGV0IHNpemVfYnVkZ2V0ID0gdmFsaWRhdGVfc2l6ZV9idWRnZXQgc2l6ZV9idWRnZXQgaW5cbiAgdC5zaXplX2J1ZGdldCA8LSBzaXplX2J1ZGdldDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCBmaWxsX2Jsb2NrZWRfcmVhZHMgdCA9XG4gIHdoaWxlIChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcykpICYmIG5vdCAoaXNfZW1wdHkgdCkgZG9cbiAgICBsZXQgYmxvY2tlZF9yZWFkID0gUXVldWUuZGVxdWV1ZV9leG4gdC5ibG9ja2VkX3JlYWRzIGluXG4gICAgbGV0IGNvbnN1bWVyID0gYmxvY2tlZF9yZWFkLmNvbnN1bWVyIGluXG4gICAgbWF0Y2ggYmxvY2tlZF9yZWFkLndhbnRzIHdpdGhcbiAgICB8IFplcm8gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBgT2tcbiAgICB8IE9uZSBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWVfb25lIHQgY29uc3VtZXIpKVxuICAgIHwgQXRfbW9zdCAobWF4X3F1ZXVlX2xlbmd0aCwgaXZhcikgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lcikpXG4gIGRvbmVcbjs7XG5cbigqIGNoZWNrcyBhbGwgaW52YXJpYW50cywgY2FsbHMgYSBwYXNzZWQgaW4gZiB0byBoYW5kbGUgYSB3cml0ZSwgdGhlbiB1cGRhdGVzIHJlYWRzIGFuZFxuICAgcHVzaGJhY2sgKilcbmxldCBzdGFydF93cml0ZSB0ID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwid3JpdGVcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ3cml0ZSB0byBjbG9zZWQgcGlwZVwiIH5waXBlOih0IDogKF8sIF8pIHQpXVxuOztcblxubGV0IGZpbmlzaF93cml0ZSB0ID1cbiAgZmlsbF9ibG9ja2VkX3JlYWRzIHQ7XG4gIHVwZGF0ZV9wdXNoYmFjayB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdDtcbiAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOmZyb20gfmRzdDp0LmJ1ZmZlciAoKTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbiB0IH5mcm9tID1cbiAgdHJhbnNmZXJfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0O1xuICBRdWV1ZS5pdGVyIGZyb20gfmY6KGZ1biB4IC0+IFF1ZXVlLmVucXVldWUgdC5idWZmZXIgeCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG4oKiBbd3JpdGUnXSBpcyB1c2VkIGludGVybmFsbHkgKilcbmxldCB3cml0ZScgdCBxID0gdHJhbnNmZXJfaW4gdCB+ZnJvbTpxXG5cbmxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgdmFsdWUgPVxuICBzdGFydF93cml0ZSB0O1xuICBRdWV1ZS5lbnF1ZXVlIHQuYnVmZmVyIHZhbHVlO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlIHQgdmFsdWUgPVxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgdmFsdWU7XG4gIHB1c2hiYWNrIHRcbjs7XG5cbmxldCB3cml0ZV93aGVuX3JlYWR5IHQgfmYgPVxuICBsZXQlbWFwICgpID0gcHVzaGJhY2sgdCBpblxuICBpZiBpc19jbG9zZWQgdCB0aGVuIGBDbG9zZWQgZWxzZSBgT2sgKGYgKGZ1biB4IC0+IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4KSlcbjs7XG5cbmxldCB3cml0ZV9pZl9vcGVuIHQgeCA9IGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGUgdCB4IGVsc2UgcmV0dXJuICgpXG5cbmxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gdCB4ID1cbiAgaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeFxuOztcblxubGV0IGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzID9jb25zdW1lciB0ID1cbiAgbWF0Y2ggY29uc3VtZXIgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNvbnN1bWVyIC0+XG4gICAgaWYgdC5pZCA8PiBDb25zdW1lci5waXBlX2lkIGNvbnN1bWVyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkF0dGVtcHQgdG8gdXNlIGNvbnN1bWVyIHdpdGggd3JvbmcgcGlwZVwiXG4gICAgICAgICAgICAoY29uc3VtZXIgOiBDb25zdW1lci50KVxuICAgICAgICAgICAgfnBpcGU6KHQgOiBfIFJlYWRlci50KV1cbjs7XG5cbmxldCBzdGFydF9yZWFkID9jb25zdW1lciB0IGxhYmVsID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIGxhYmVsIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXJcbjs7XG5cbmxldCBnZW5fcmVhZF9ub3cgP2NvbnN1bWVyIHQgY29uc3VtZSA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRfbm93XCIgP2NvbnN1bWVyO1xuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gaWYgaXNfY2xvc2VkIHQgdGhlbiBgRW9mIGVsc2UgYE5vdGhpbmdfYXZhaWxhYmxlXG4gIGVsc2UgKFxuICAgIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICAoKiBmcm9tIFtpbnZhcmlhbnRdIGFuZCBbbm90IChpc19lbXB0eSB0KV0gKilcbiAgICBgT2sgKGNvbnN1bWUgdCBjb25zdW1lcikpXG47O1xuXG5sZXQgZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggPVxuICBtYXRjaCBtYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCBOb25lIC0+IEludC5tYXhfdmFsdWVcbiAgfCBTb21lIG1heF9xdWV1ZV9sZW5ndGggLT5cbiAgICBpZiBtYXhfcXVldWVfbGVuZ3RoIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibWF4X3F1ZXVlX2xlbmd0aCA8PSAwXCIgKG1heF9xdWV1ZV9sZW5ndGggOiBpbnQpXTtcbiAgICBtYXhfcXVldWVfbGVuZ3RoXG47O1xuXG5sZXQgcmVhZF9ub3cnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgKGZ1biB0IGNvbnN1bWVyIC0+IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lcilcbjs7XG5cbmxldCByZWFkX25vdyA/Y29uc3VtZXIgdCA9IGdlbl9yZWFkX25vdyB0ID9jb25zdW1lciBjb25zdW1lX29uZVxubGV0IHBlZWsgdCA9IFF1ZXVlLnBlZWsgdC5idWZmZXJcblxubGV0IGNsZWFyIHQgPVxuICBtYXRjaCByZWFkX25vdycgdCB3aXRoXG4gIHwgYEVvZiB8IGBOb3RoaW5nX2F2YWlsYWJsZSB8IGBPayBfIC0+ICgpXG47O1xuXG5sZXQgcmVhZCcgP2NvbnN1bWVyID9tYXhfcXVldWVfbGVuZ3RoIHQgPVxuICBsZXQgbWF4X3F1ZXVlX2xlbmd0aCA9IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoIGluXG4gIHN0YXJ0X3JlYWQgdCBcInJlYWQnXCIgP2NvbnN1bWVyO1xuICBtYXRjaCByZWFkX25vdycgdCA/Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGggd2l0aFxuICB8IChgT2sgXyB8IGBFb2YpIGFzIHIgLT4gcmV0dXJuIHJcbiAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9yZWFkc1xuICAgICAgICAoQmxvY2tlZF9yZWFkLmNyZWF0ZSAoQXRfbW9zdCAobWF4X3F1ZXVlX2xlbmd0aCwgaXZhcikpIGNvbnN1bWVyKSlcbjs7XG5cbmxldCByZWFkID9jb25zdW1lciB0ID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZFwiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgaXNfY2xvc2VkIHRcbiAgICB0aGVuIHJldHVybiBgRW9mXG4gICAgZWxzZVxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKE9uZSBpdmFyKSkgY29uc3VtZXIpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgcmV0dXJuIChgT2sgKGNvbnN1bWVfb25lIHQgY29uc3VtZXIpKSlcbjs7XG5cbmxldCByZWFkX2V4biA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoJW1hcCByZWFkID9jb25zdW1lciB0IHdpdGhcbiAgfCBgT2sgdmFsdWUgLT4gdmFsdWVcbiAgfCBgRW9mIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5yZWFkX2V4bjogcmVjZWl2ZWQgRU9GXCJdXG47O1xuXG5sZXQgdmFsdWVzX2F2YWlsYWJsZSB0ID1cbiAgc3RhcnRfcmVhZCB0IFwidmFsdWVzX2F2YWlsYWJsZVwiO1xuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gcmV0dXJuIGBPa1xuICBlbHNlIGlmIGlzX2Nsb3NlZCB0XG4gIHRoZW4gcmV0dXJuIGBFb2ZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggUXVldWUubGFzdCB0LmJsb2NrZWRfcmVhZHMgd2l0aFxuICAgIHwgU29tZSB7IGNvbnN1bWVyID0gTm9uZTsgd2FudHMgPSBaZXJvIGl2YXIgfSAtPlxuICAgICAgKCogVGhpcyBjYXNlIGlzIGFuIG9wdGltaXphdGlvbiBmb3IgbXVsdGlwbGUgY2FsbHMgdG8gW3ZhbHVlc19hdmFpbGFibGVdIGluXG4gICAgICAgICBzZXF1ZW5jZS4gIEl0IGNhdXNlcyB0aGVtIHRvIGFsbCBzaGFyZSB0aGUgc2FtZSBpdmFyLCByYXRoZXIgdGhhbiBhbGxvY2F0ZVxuICAgICAgICAgYW4gaXZhciBwZXIgY2FsbC4gKilcbiAgICAgIEl2YXIucmVhZCBpdmFyXG4gICAgfCBfIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIFF1ZXVlLmVucXVldWUgdC5ibG9ja2VkX3JlYWRzIChCbG9ja2VkX3JlYWQuKGNyZWF0ZSAoWmVybyBpdmFyKSkgTm9uZSkpKVxuOztcblxubGV0IHJlYWRfY2hvaWNlIHQgPSBjaG9pY2UgKHZhbHVlc19hdmFpbGFibGUgdCkgKGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPiByZWFkX25vdyB0KVxuXG5sZXQgcmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4biB0IGhlcmUgPVxuICBEZWZlcnJlZC5DaG9pY2UubWFwIChyZWFkX2Nob2ljZSB0KSB+ZjooZnVuY3Rpb25cbiAgICB8IChgT2sgXyB8IGBFb2YpIGFzIHggLT4geFxuICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiUGlwZS5yZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXhuOiBjaG9pY2Ugd2FzIGVuYWJsZWQgYnV0IHBpcGUgaXMgZW1wdHk7IFxcXG4gICAgICAgICAgIHRoaXMgaXMgbGlrZWx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uIHdpdGggb25lIG9yIG1vcmUgb3RoZXIgY29uc3VtZXJzXCJcbiAgICAgICAgICAgIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldKVxuOztcblxuKCogW3JlYWRfZXhhY3RseSB0IH5udW1fdmFsdWVzXSBsb29wcywgZ2V0dGluZyB5b3UgYWxsIFtudW1fdmFsdWVzXSBpdGVtcywgdXBcbiAgIHRvIEVPRi4gKilcbmxldCByZWFkX2V4YWN0bHkgP2NvbnN1bWVyIHQgfm51bV92YWx1ZXMgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX2V4YWN0bHlcIiA/Y29uc3VtZXI7XG4gIGlmIG51bV92YWx1ZXMgPD0gMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5yZWFkX2V4YWN0bHkgZ290IG51bV92YWx1ZXMgPD0gMFwiIChudW1fdmFsdWVzIDogaW50KV07XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaCAtPlxuICAgIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IFF1ZXVlLmxlbmd0aCByZXN1bHQgaW5cbiAgICAgIGFzc2VydCAoYWxyZWFkeV9yZWFkIDw9IG51bV92YWx1ZXMpO1xuICAgICAgaWYgYWxyZWFkeV9yZWFkID0gbnVtX3ZhbHVlc1xuICAgICAgdGhlbiBJdmFyLmZpbGwgZmluaXNoIChgRXhhY3RseSByZXN1bHQpXG4gICAgICBlbHNlXG4gICAgICAgIHJlYWQnID9jb25zdW1lciB0IH5tYXhfcXVldWVfbGVuZ3RoOihudW1fdmFsdWVzIC0gYWxyZWFkeV9yZWFkKVxuICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2ggKGlmIGFscmVhZHlfcmVhZCA9IDAgdGhlbiBgRW9mIGVsc2UgYEZld2VyIHJlc3VsdClcbiAgICAgICAgfCBgT2sgcSAtPlxuICAgICAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgICAgIGxvb3AgKClcbiAgICBpblxuICAgIGxvb3AgKCkpXG47O1xuXG5sZXQgZG93bnN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHQuY29uc3VtZXJzXG4gICAgdGhlbiByZXR1cm4gYE9rXG4gICAgZWxzZVxuICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICAoTGlzdC5tYXAgdC5jb25zdW1lcnMgfmY6Q29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZClcbiAgZWxzZVxuICAgICgqIFt0XSBtaWdodCBiZSBjbG9zZWQuICBCdXQgdGhlIHJlYWQgZW5kIGNhbid0IGJlIGNsb3NlZCwgYmVjYXVzZSBpZiBpdCB3ZXJlLCB0aGVuXG4gICAgICAgW3RdIHdvdWxkIGJlIGVtcHR5LiAgSWYgdGhlIHdyaXRlIGVuZCBpcyBjbG9zZWQgYnV0IG5vdCB0aGUgcmVhZCBlbmQsIHRoZW4gd2Ugd2FudFxuICAgICAgIHRvIGVucXVldWUgYSBibG9ja2VkIGZsdXNoIGJlY2F1c2UgdGhlIGVucXVldWVkIHZhbHVlcyBtYXkgZ2V0IHJlYWQuICopXG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVhZHkgLT5cbiAgICAgIFF1ZXVlLmVucXVldWVcbiAgICAgICAgdC5ibG9ja2VkX2ZsdXNoZXNcbiAgICAgICAgeyBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkID0gdC5udW1fdmFsdWVzX3JlYWQgKyBsZW5ndGggdDsgcmVhZHkgfSlcbjs7XG5cbigqIEluIHByYWN0aWNlLCBhbG9uZyB3aXRoIFtMaW5rLmNyZWF0ZV0gYW5kIFthZGRfdXBzdHJlYW1fZmx1c2hlZF0sIFt1cHN0cmVhbV9mbHVzaGVkXVxuICAgdHJhdmVyc2VzIHRoZSBncmFwaCBvZiBsaW5rZWQgcGlwZXMgdXAgdG8gdGhlIGhlYWRzIGFuZCB0aGVuIGNhbGxzIFtkb3duc3RyZWFtX2ZsdXNoZWRdXG4gICBvbiB0aGVtLiAqKVxubGV0IHVwc3RyZWFtX2ZsdXNoZWQgdCA9XG4gIGlmIEJhZy5pc19lbXB0eSB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gIHRoZW4gZG93bnN0cmVhbV9mbHVzaGVkIHRcbiAgZWxzZVxuICAgIEJhZy50b19saXN0IHQudXBzdHJlYW1fZmx1c2hlZHNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGYgLT4gZiAoKSlcbiAgICB8PiBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG47O1xuXG5sZXQgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgdCB1cHN0cmVhbV9mbHVzaGVkID0gQmFnLmFkZCB0LnVwc3RyZWFtX2ZsdXNoZWRzIHVwc3RyZWFtX2ZsdXNoZWRcblxubGV0IGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQgPVxuICBsZXQgY29uc3VtZXIgPSBDb25zdW1lci5jcmVhdGUgfnBpcGVfaWQ6dC5pZCB+ZG93bnN0cmVhbV9mbHVzaGVkIGluXG4gIHQuY29uc3VtZXJzIDwtIGNvbnN1bWVyIDo6IHQuY29uc3VtZXJzO1xuICBjb25zdW1lclxuOztcblxuKCogQSBbTGluay50XSBsaW5rcyBmbHVzaGluZyBvZiB0d28gcGlwZXMgdG9nZXRoZXIuICopXG5tb2R1bGUgTGluayA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdXBzdHJlYW06KF8sIF8pIHBpcGUgLT4gZG93bnN0cmVhbTooXywgXykgcGlwZSAtPiB0XG4gIHZhbCBjb25zdW1lciA6IHQgLT4gQ29uc3VtZXIudFxuXG4gICgqIFt1bmxpbmtfdXBzdHJlYW1dIHJlbW92ZXMgZG93bnN0cmVhbSdzIHJlZmVyZW5jZSB0byB1cHN0cmVhbS4gKilcblxuICB2YWwgdW5saW5rX3Vwc3RyZWFtIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB1bnBhY2tlZCA9XG4gICAgeyBkb3duc3RyZWFtIDogKCdhLCAnYikgdFxuICAgIDsgY29uc3VtZXIgOiBDb25zdW1lci50XG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0IDogKHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KSBCYWcuRWx0LnRcbiAgICB9XG5cbiAgdHlwZSB0ID0gVCA6IChfLCBfKSB1bnBhY2tlZCAtPiB0XG5cbiAgbGV0IGNvbnN1bWVyIChUIHQpID0gdC5jb25zdW1lclxuXG4gIGxldCBjcmVhdGUgfnVwc3RyZWFtIH5kb3duc3RyZWFtID1cbiAgICBUXG4gICAgICB7IGRvd25zdHJlYW1cbiAgICAgIDsgY29uc3VtZXIgPVxuICAgICAgICAgIGFkZF9jb25zdW1lciB1cHN0cmVhbSB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgIGRvd25zdHJlYW1fZmx1c2hlZCBkb3duc3RyZWFtKVxuICAgICAgOyB1cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0ID1cbiAgICAgICAgICBhZGRfdXBzdHJlYW1fZmx1c2hlZCBkb3duc3RyZWFtIChmdW4gKCkgLT4gdXBzdHJlYW1fZmx1c2hlZCB1cHN0cmVhbSlcbiAgICAgIH1cbiAgOztcblxuICBsZXQgdW5saW5rX3Vwc3RyZWFtIChUIHQpID1cbiAgICBCYWcucmVtb3ZlIHQuZG93bnN0cmVhbS51cHN0cmVhbV9mbHVzaGVkcyB0LnVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmx1c2hlZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29uc3VtZXIgb2YgQ29uc3VtZXIudFxuICAgIHwgV2hlbl92YWx1ZV9wcm9jZXNzZWRcbiAgICB8IFdoZW5fdmFsdWVfcmVhZFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBmb2xkX2dlblxuICAgICAgKHJlYWRfbm93IDogP2NvbnN1bWVyOkNvbnN1bWVyLnQgLT4gXyBSZWFkZXIudCAtPiBfKVxuICAgICAgPyhmbHVzaGVkID0gRmx1c2hlZC5XaGVuX3ZhbHVlX3JlYWQpXG4gICAgICB0XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgPVxuICBsZXQgY29uc3VtZXIgPVxuICAgIG1hdGNoIGZsdXNoZWQgd2l0aFxuICAgIHwgV2hlbl92YWx1ZV9yZWFkIC0+IE5vbmVcbiAgICB8IENvbnN1bWVyIGNvbnN1bWVyIC0+IFNvbWUgY29uc3VtZXJcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkIC0+XG4gICAgICAoKiBUaGUgZmFjdCB0aGF0IFwibm8gY29uc3VtZXJcIiBiZWhhdmVzIGRpZmZlcmVudCBmcm9tIFwidHJpdmlhbCBjb25zdW1lclwiIGlzIHdlaXJkLFxuICAgICAgICAgYnV0IHRoYXQncyBob3cgdGhlIGNvbnN1bWVyIG1hY2hpbmVyeSB3b3Jrcy4gKilcbiAgICAgIFNvbWUgKGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPiByZXR1cm4gYE9rKSlcbiAgaW5cbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICAoKiBXZSBkbyBbcmV0dXJuICgpID4+Pl0gdG8gZW5zdXJlIHRoYXQgW2ZdIGlzIG9ubHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiAqKVxuICAgIHJldHVybiAoKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBsZXQgcmVjIGxvb3AgYiA9XG4gICAgICBtYXRjaCByZWFkX25vdyB0ID9jb25zdW1lciB3aXRoXG4gICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaGVkIGJcbiAgICAgIHwgYE9rIHYgLT4gZiBiIHYgY29udGludWVcbiAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHZhbHVlc19hdmFpbGFibGUgdCA+Pj4gZnVuIF8gLT4gbG9vcCBiXG4gICAgYW5kIGNvbnRpbnVlIGIgPVxuICAgICAgT3B0aW9uLml0ZXIgY29uc3VtZXIgfmY6Q29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbTtcbiAgICAgIGxvb3AgYlxuICAgIGluXG4gICAgbG9vcCBpbml0KVxuOztcblxubGV0IGZvbGQnID9mbHVzaGVkID9tYXhfcXVldWVfbGVuZ3RoIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSA/Zmx1c2hlZCB0IH5pbml0IH5mOihmdW4gYiBxIGxvb3AgLT5cbiAgICBmIGIgcSA+Pj4gbG9vcClcbjs7XG5cbmxldCBmb2xkID9mbHVzaGVkIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlbiByZWFkX25vdyA/Zmx1c2hlZCB0IH5pbml0IH5mOihmdW4gYiBhIGxvb3AgLT4gZiBiIGEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZF93aXRob3V0X3B1c2hiYWNrID9jb25zdW1lciB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW5cbiAgICByZWFkX25vd1xuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYiBhIGxvb3AgLT4gbG9vcCAoZiBiIGEpKVxuICAgID9mbHVzaGVkOlxuICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgIHwgU29tZSBjIC0+IFNvbWUgKENvbnN1bWVyIGMpKVxuOztcblxubGV0IHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSkgZiBhID1cbiAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gIHRoZW4gZiBhXG4gIGVsc2UgKFxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOlxuICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIChmdW4gKCkgLT4gZiBhKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSAoTW9uaXRvci5leHRyYWN0X2V4biBleG4pKVxuOztcblxubGV0IGl0ZXInID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5mID1cbiAgZm9sZCcgP21heF9xdWV1ZV9sZW5ndGggP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHEgLT5cbiAgICB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/Y29udGludWVfb25fZXJyb3IgZiBxKVxuOztcblxubGV0IGl0ZXIgP2NvbnRpbnVlX29uX2Vycm9yID9mbHVzaGVkIHQgfmYgPVxuICBmb2xkX2dlbiByZWFkX25vdyA/Zmx1c2hlZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSBsb29wIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgYSA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG47O1xuXG4oKiBbaXRlcl93aXRob3V0X3B1c2hiYWNrXSBpcyBhIGNvbW1vbiBjYXNlLCBzbyB3ZSBpbXBsZW1lbnQgaXQgaW4gYW4gb3B0aW1pemVkIG1hbm5lcixcbiAgIHJhdGhlciB0aGFuIHZpYSBbaXRlcl0uICBUaGUgaW1wbGVtZW50YXRpb24gcmVhZHMgb25seSBvbmUgZWxlbWVudCBhdCBhIHRpbWUsIHNvIHRoYXRcbiAgIGlmIFtmXSBjbG9zZXMgW3RdIG9yIHJhaXNlcywgbm8gbW9yZSBlbGVtZW50cyB3aWxsIGJlIHJlYWQuICopXG5sZXQgaXRlcl93aXRob3V0X3B1c2hiYWNrXG4gICAgICA/Y29uc3VtZXJcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSlcbiAgICAgID9tYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gICAgICB0XG4gICAgICB+ZlxuICA9XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyO1xuICBsZXQgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA9XG4gICAgbWF0Y2ggbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiB3aXRoXG4gICAgfCBOb25lIC0+IEludC5tYXhfdmFsdWVcbiAgICB8IFNvbWUgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiAtPlxuICAgICAgaWYgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA8PSAwXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiaXRlcl93aXRob3V0X3B1c2hiYWNrIGdvdCBub24tcG9zaXRpdmUgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlwiXG4gICAgICAgICAgICAgIChtYXhfaXRlcmF0aW9uc19wZXJfam9iIDogaW50KV07XG4gICAgICBtYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gIGluXG4gIGxldCBmID1cbiAgICBpZiBub3QgY29udGludWVfb25fZXJyb3JcbiAgICB0aGVuIGZcbiAgICBlbHNlXG4gICAgICBmdW4gYSAtPlxuICAgICAgICB0cnkgZiBhIHdpdGhcbiAgICAgICAgfCBleG4gLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG5cbiAgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICAoKiBXZSBkbyBbcmV0dXJuICgpID4+Pl0gdG8gZW5zdXJlIHRoYXQgW2ZdIGlzIG9ubHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiAqKVxuICAgIHJldHVybiAoKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBsZXQgcmVjIHN0YXJ0ICgpID0gbG9vcCB+cmVtYWluaW5nOm1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICBhbmQgbG9vcCB+cmVtYWluaW5nID1cbiAgICAgIGlmIHJlbWFpbmluZyA9IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpID4+PiBmdW4gKCkgLT4gc3RhcnQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyB0ID9jb25zdW1lciB3aXRoXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgKClcbiAgICAgICAgfCBgT2sgYSAtPlxuICAgICAgICAgIGYgYTtcbiAgICAgICAgICBsb29wIH5yZW1haW5pbmc6KHJlbWFpbmluZyAtIDEpXG4gICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHZhbHVlc19hdmFpbGFibGUgdCA+Pj4gZnVuIF8gLT4gc3RhcnQgKCkpXG4gICAgaW5cbiAgICBzdGFydCAoKSlcbjs7XG5cbmxldCBkcmFpbiB0ID0gaXRlcicgdCB+ZjooZnVuIF8gLT4gcmV0dXJuICgpKVxubGV0IGRyYWluX2FuZF9jb3VudCB0ID0gZm9sZCcgdCB+aW5pdDowIH5mOihmdW4gc3VtIHEgLT4gcmV0dXJuIChzdW0gKyBRdWV1ZS5sZW5ndGggcSkpXG5cbmxldCByZWFkX2FsbCBpbnB1dCA9XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0JW1hcCAoKSA9XG4gICAgaXRlcicgaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgcmVzdWx0XG47O1xuXG5sZXQgdG9fbGlzdCByID0gcmVhZF9hbGwgciA+PnwgUXVldWUudG9fbGlzdFxuXG5sZXQgdG9fc3RyZWFtX2RlcHJlY2F0ZWQgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgaXRlcl93aXRob3V0X3B1c2hiYWNrIHQgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeClcbiAgICA+Pj4gZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG4oKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgW29mX3N0cmVhbV9kZXByZWNhdGVkXSBkb2VzIGFzIG11Y2ggYmF0Y2hpbmcgYXMgcG9zc2libGUuICBJdFxuICAgZ3JhYnMgYXMgbWFueSBpdGVtcyBhcyBhcmUgYXZhaWxhYmxlIGludG8gYW4gaW50ZXJuYWwgcXVldWUuICBPbmNlIGl0IGhhcyBncmFiYmVkXG4gICBldmVyeXRoaW5nLCBpdCB3cml0ZXMgaXQgdG8gdGhlIHBpcGUgYW5kIHRoZW4gYmxvY2tzIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGVsZW1lbnQgZnJvbVxuICAgdGhlIHN0cmVhbS5cblxuICAgVGhlcmUncyBubyBwb3NzaWJpbGl0eSB0aGF0IHdlJ2xsIHN0YXJ2ZSB0aGUgcGlwZSByZWFkaW5nIGFuIGVuZGxlc3Mgc3RyZWFtLCBqdXN0XG4gICBhY2N1bXVsYXRpbmcgdGhlIGVsZW1lbnRzIGludG8gb3VyIHByaXZhdGUgcXVldWUgZm9yZXZlciB3aXRob3V0IGV2ZXIgd3JpdGluZyB0aGVtXG4gICBkb3duc3RyZWFtIHRvIHRoZSBwaXBlLiAgV2h5PyBiZWNhdXNlIHdoaWxlIHdlJ3JlIHJ1bm5pbmcsIHRoZSBzdHJlYW0tcHJvZHVjZXIgKmlzbid0KlxuICAgcnVubmluZyAtLSB0aGVyZSBhcmUgbm8gQXN5bmMgYmxvY2sgcG9pbnRzIGluIHRoZSBxdWV1ZS1hY2N1bXVsYXRvciBsb29wLiAgU28gdGhlXG4gICBxdWV1ZS1hY2N1bXVsYXRvciBsb29wIHdpbGwgZXZlbnR1YWxseSBjYXRjaCB1cCB0byB0aGUgY3VycmVudCBzdHJlYW0gdGFpbCwgYXQgd2hpY2hcbiAgIHBvaW50IHdlJ2xsIGRvIHRoZSBwaXBlLXdyaXRlIGFuZCB0aGVuIGJsb2NrIG9uIHRoZSBzdHJlYW0uLi4gdGh1cyBnaXZpbmcgdGhlXG4gICBzdHJlYW0tcHJvZHVjZXIgYSBjaGFuY2UgdG8gbWFrZSBtb3JlIGVsZW1lbnRzLlxuXG4gICBPbmUgY2FuJ3QgaW1wbGVtZW50IFtvZl9zdHJlYW1dIHVzaW5nIFtTdHJlYW0uaXRlcl0gb3IgW1N0cmVhbS5pdGVyJ10gYmVjYXVzZSB5b3VcbiAgIG5lZWQgdG8gYmUgYWJsZSB0byBzdG9wIGVhcmx5IHdoZW4gdGhlIGNvbnN1bWVyIGNsb3NlcyB0aGUgcGlwZS4gIEFsc28sIHVzaW5nIGVpdGhlclxuICAgb2YgdGhvc2Ugd291bGQgZW50YWlsIHNpZ25pZmljYW50bHkgbW9yZSBkZWZlcnJlZCBvdmVyaGVhZCwgd2hlcmVhcyB0aGUgYmVsb3dcbiAgIGltcGxlbWVudGF0aW9uIHVzZXMgYSBkZWZlcnJlZCBvbmx5IHdoZW4gaXQgbmVlZHMgdG8gd2FpdCBmb3IgZGF0YSBmcm9tIHRoZSBzdHJlYW0uICopXG5sZXQgb2Zfc3RyZWFtX2RlcHJlY2F0ZWQgcyA9XG4gIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gIGxldCBxID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCB0cmFuc2ZlciAoKSA9XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSBxKVxuICAgIHRoZW5cbiAgICAgICgqIENhbiBub3QgcHVzaGJhY2sgb24gdGhlIHN0cmVhbSwgc28gaWdub3JlIHRoZSBwdXNoYmFjayBvbiB0aGUgcGlwZS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yICh3cml0ZScgdyBxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2Nsb3NlZCB3KSk7XG4gICAgbGV0IG5leHRfZGVmZXJyZWQgPSBTdHJlYW0ubmV4dCBzIGluXG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBuZXh0X2RlZmVycmVkIHdpdGhcbiAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dFxuICAgIHwgTm9uZSAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICB1cG9uIG5leHRfZGVmZXJyZWQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dFxuICBhbmQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dCBuZXh0ID0gaWYgbm90IChpc19jbG9zZWQgdykgdGhlbiBsb29wX25leHQgbmV4dFxuICBhbmQgbG9vcF9uZXh0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICBjbG9zZSB3XG4gICAgfCBDb25zICh4LCBzKSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZSBxIHg7XG4gICAgICBsb29wIHNcbiAgaW5cbiAgbG9vcCBzO1xuICByXG47O1xuXG5sZXQgdHJhbnNmZXJfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICB3cml0ZVxuICAgICAgaW5wdXRcbiAgICAgIG91dHB1dFxuICAgICAgfmZcbiAgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50XG4gIHRoZW4gKFxuICAgIGludmFyaWFudCBpbnB1dDtcbiAgICBpbnZhcmlhbnQgb3V0cHV0KTtcbiAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXQgfmRvd25zdHJlYW06b3V0cHV0IGluXG4gIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAoKiBXaGVuIHdlJ3JlIGRvbmUgd2l0aCBbaW5wdXRdLCB3ZSB1bmxpbmsgdG8gcmVtb3ZlIHBvaW50ZXJzIGZyb21cbiAgICAgW291dHB1dF0gdG8gW2lucHV0XSwgd2hpY2ggd291bGQgY2F1c2UgYSBzcGFjZSBsZWFrIGlmIHdlIGhhZCBzaW5nbGUgbG9uZy1saXZlZFxuICAgICBvdXRwdXQgaW50byB3aGljaCB3ZSB0cmFuc2ZlciBsb3RzIG9mIHNob3J0LWxpdmVkIGlucHV0cy4gKilcbiAgbGV0IHVubGluayAoKSA9IExpbmsudW5saW5rX3Vwc3RyZWFtIGxpbmsgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgKCogV2UgZG8gW3JldHVybiAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gKilcbiAgICByZXR1cm4gKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IG91dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2xvc2VfcmVhZCBpbnB1dDtcbiAgICAgIHVubGluayAoKTtcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBpZiBpc19jbG9zZWQgb3V0cHV0XG4gICAgICB0aGVuIG91dHB1dF9jbG9zZWQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB+Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT5cbiAgICAgICAgICB1bmxpbmsgKCk7XG4gICAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgICB8IGBPayB4IC0+IGYgeCBjb250aW51ZVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgICAgIGNob29zZVxuICAgICAgICAgICAgWyBjaG9pY2UgKHZhbHVlc19hdmFpbGFibGUgaW5wdXQpIGlnbm9yZTsgY2hvaWNlIChjbG9zZWQgb3V0cHV0KSBpZ25vcmUgXVxuICAgICAgICAgID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICBhbmQgY29udGludWUgeSA9XG4gICAgICBpZiBpc19jbG9zZWQgb3V0cHV0XG4gICAgICB0aGVuIG91dHB1dF9jbG9zZWQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcHVzaGJhY2sgPSB3cml0ZSBvdXRwdXQgeSBpblxuICAgICAgICBDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtIGNvbnN1bWVyO1xuICAgICAgICBwdXNoYmFjayA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IHRyYW5zZmVyJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgfmYgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBmIHEgPj4+IGspXG47O1xuXG5sZXQgdHJhbnNmZXIgaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIHJlYWRfbm93IHdyaXRlIGlucHV0IG91dHB1dCB+ZjooZnVuIGEgayAtPiBrIChmIGEpKVxuOztcblxubGV0IHRyYW5zZmVyX2lkID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IG91dHB1dCA9XG4gIHRyYW5zZmVyX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgb3V0cHV0IH5mOihmdW4gcSBrIC0+IGsgcSlcbjs7XG5cbmxldCBtYXBfZ2VuIHJlYWQgd3JpdGUgaW5wdXQgfmYgPVxuICBsZXQgaW5mbyA9IE9wdGlvbi5tYXAgaW5wdXQuaW5mbyB+ZjooZnVuIGluZm8gLT4gWyVzZXhwIE1hcHBlZCAoaW5mbyA6IFNleHAudCldKSBpblxuICBsZXQgcmVzdWx0LCBvdXRwdXQgPSBjcmVhdGUgP2luZm8gKCkgaW5cbiAgdXBvbiAodHJhbnNmZXJfZ2VuIHJlYWQgd3JpdGUgaW5wdXQgb3V0cHV0IH5mKSAoZnVuICgpIC0+IGNsb3NlIG91dHB1dCk7XG4gIHJlc3VsdFxuOztcblxubGV0IG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPiBmIHEgPj4+IGspXG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCB+ZjooZnVuIGEgayAtPiBrIChmIGEpKVxuXG5sZXQgY29uY2F0X21hcF9saXN0ID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT5cbiAgICBrIChRdWV1ZS5jb25jYXRfbWFwIHEgfmYpKVxuOztcblxubGV0IGZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHEgLT4gRGVmZXJyZWQuUXVldWUuZmlsdGVyX21hcCBxIH5mKVxuOztcblxubGV0IGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmZpbHRlcl9tYXAgcSB+ZjooZnVuIHggLT4gaWYgaXNfcmVhZF9jbG9zZWQgaW5wdXQgdGhlbiBOb25lIGVsc2UgZiB4KSkpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCVtYXAgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmY6KGZ1biBhY2N1bSBhIC0+XG4gICAgbGV0IGFjY3VtLCBiID0gZiBhY2N1bSBhIGluXG4gICAgYWNjdW0sIFNvbWUgYilcbjs7XG5cbmxldCBmaWx0ZXIgaW5wdXQgfmYgPSBmaWx0ZXJfbWFwIGlucHV0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0OjAgfmluZm86Tm9uZSB+aW5pdGlhbF9idWZmZXI6KFF1ZXVlLm9mX2xpc3QgbCkgaW5cbiAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgdFxuOztcblxubGV0IGVtcHR5ICgpID0gb2ZfbGlzdCBbXVxuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBjcmVhdGUgKCkgaW5cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgeDtcbiAgY2xvc2Ugd3JpdGVyO1xuICByZWFkZXJcbjs7XG5cbmxldCB1bmZvbGQgfmluaXQ6cyB+ZiA9XG4gICgqIFRvIGdldCBzb21lIGJhdGNoaW5nLCB3ZSBydW4gdGhlIGNvbnRpbnVhdGlvbiBpbW1lZGlhdGVseSBpZiB0aGUgZGVmZXJyZWQgaXNcbiAgICAgZGV0ZXJtaW5lZC4gIEhvd2V2ZXIsIHdlIGFsd2F5cyBjaGVjayBmb3IgcHVzaGJhY2suICBCZWNhdXNlIHNpemUgYnVkZ2V0IGNhbid0IGJlXG4gICAgIGluZmluaXRlLCB0aGUgYmVsb3cgbG9vcCBpcyBndWFyYW50ZWVkIHRvIGV2ZW50dWFsbHkgeWllbGQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgbGV0ICggPj49fiApIGQgZiA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICB8IE5vbmUgLT4gZCA+Pj0gZlxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICBmIHNcbiAgICAgID4+PX4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiByZXR1cm4gKClcbiAgICAgIHwgU29tZSAoYSwgcykgLT5cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB0aGVuIHJldHVybiAoKSBlbHNlIHdyaXRlIHdyaXRlciBhID4+PX4gZnVuICgpIC0+IGxvb3Agc1xuICAgIGluXG4gICAgbG9vcCBzKVxuOztcblxubGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBlbnF1ZXVlX24gc2VxdWVuY2UgaSA9XG4gICAgICBpZiBpIDw9IDBcbiAgICAgIHRoZW4gc2VxdWVuY2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHNlcXVlbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlcXVlbmNlXG4gICAgICAgIHwgU29tZSAoYSwgc2VxdWVuY2UpIC0+XG4gICAgICAgICAgUXVldWUuZW5xdWV1ZSB3cml0ZXIuYnVmZmVyIGE7XG4gICAgICAgICAgZW5xdWV1ZV9uIHNlcXVlbmNlIChpIC0gMSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3Agc2VxdWVuY2UgPVxuICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB8fCBTZXF1ZW5jZS5pc19lbXB0eSBzZXF1ZW5jZVxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBzdGFydF93cml0ZSB3cml0ZXI7XG4gICAgICAgIGxldCBzZXF1ZW5jZSA9IGVucXVldWVfbiBzZXF1ZW5jZSAoMSArIHdyaXRlci5zaXplX2J1ZGdldCAtIGxlbmd0aCB3cml0ZXIpIGluXG4gICAgICAgIGZpbmlzaF93cml0ZSB3cml0ZXI7XG4gICAgICAgIGxldCViaW5kICgpID0gcHVzaGJhY2sgd3JpdGVyIGluXG4gICAgICAgIGxvb3Agc2VxdWVuY2UpXG4gICAgaW5cbiAgICBsb29wIHNlcXVlbmNlKVxuOztcblxudHlwZSAnYSB0b19zZXF1ZW5jZV9lbHQgPVxuICB8IFZhbHVlIG9mICdhXG4gIHwgV2FpdF9mb3IgOiBfIERlZmVycmVkLnQgLT4gXyB0b19zZXF1ZW5jZV9lbHRcblxubGV0IHRvX3NlcXVlbmNlIHQgPVxuICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6KCkgfmY6KGZ1biAoKSAtPlxuICAgIG1hdGNoIHJlYWRfbm93IHQgd2l0aFxuICAgIHwgYEVvZiAtPiBOb25lXG4gICAgfCBgT2sgYSAtPiBTb21lIChWYWx1ZSBhLCAoKSlcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBTb21lIChXYWl0X2ZvciAodmFsdWVzX2F2YWlsYWJsZSB0KSwgKCkpKVxuOztcblxubGV0IGludGVybGVhdmVfcGlwZSBpbnB1dHMgPVxuICBsZXQgb3V0cHV0LCBvdXRwdXRfd3JpdGVyID0gY3JlYXRlIH5pbmZvOlslc2V4cCBcIlBpcGUuaW50ZXJsZWF2ZVwiXSAoKSBpblxuICAoKiBXZSBrZWVwIGEgcmVmZXJlbmNlIGNvdW50IG9mIGFsbCB0aGUgcGlwZXMgdGhhdCBbaW50ZXJsZWF2ZV9waXBlXSBpcyBtYW5hZ2luZztcbiAgICAgW2lucHV0c10gY291bnRzIGFzIG9uZS4gIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLCB3ZSBrbm93IHRoYXQgYWxsXG4gICAgIHBpcGVzIGFyZSBjbG9zZWQgYW5kIHdlIGNhbiBjbG9zZSBbb3V0cHV0X3dyaXRlcl0uICopXG4gIGxldCBudW1fcGlwZXNfcmVtYWluaW5nID0gcmVmIDEgaW5cbiAgbGV0IGRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyAoKSA9XG4gICAgZGVjciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgIGlmICFudW1fcGlwZXNfcmVtYWluaW5nID0gMCB0aGVuIGNsb3NlIG91dHB1dF93cml0ZXJcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JW1hcCAoKSA9XG4gICAgICAgaXRlcl93aXRob3V0X3B1c2hiYWNrIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgICBpbmNyIG51bV9waXBlc19yZW1haW5pbmc7XG4gICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAobGV0JW1hcCAoKSA9IHRyYW5zZmVyX2lkIGlucHV0IG91dHB1dF93cml0ZXIgaW5cbiAgICAgICAgICAgIGRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyAoKSkpXG4gICAgIGluXG4gICAgIGRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyAoKSk7XG4gICgqIGZvciBbaW5wdXRzXSAqKVxuICBvdXRwdXRcbjs7XG5cbmxldCBpbnRlcmxlYXZlIGlucHV0cyA9XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBMaXN0Lml0ZXIgaW5wdXRzIH5mOmludmFyaWFudDtcbiAgaW50ZXJsZWF2ZV9waXBlIChvZl9saXN0IGlucHV0cylcbjs7XG5cbmxldCBtZXJnZSBpbnB1dHMgfmNvbXBhcmUgPVxuICBtYXRjaCBpbnB1dHMgd2l0aFxuICB8IFtdIC0+IGVtcHR5ICgpXG4gIHwgWyBpbnB1dCBdIC0+IGlucHV0XG4gIHwgaW5wdXRzIC0+XG4gICAgbGV0IG1vZHVsZSBIZWFwID0gUGFpcmluZ19oZWFwIGluXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgICB1cG9uIChjbG9zZWQgdykgKGZ1biAoKSAtPiBMaXN0Lml0ZXIgaW5wdXRzIH5mOmNsb3NlX3JlYWQpO1xuICAgIGxldCBoZWFwID0gSGVhcC5jcmVhdGUgfmNtcDooZnVuIChhMSwgXykgKGEyLCBfKSAtPiBjb21wYXJlIGExIGEyKSAoKSBpblxuICAgIGxldCBoYW5kbGVfcmVhZCBpbnB1dCBlb2Zfb3Jfb2sgPVxuICAgICAgbWF0Y2ggZW9mX29yX29rIHdpdGhcbiAgICAgIHwgYEVvZiAtPiAoKVxuICAgICAgfCBgT2sgdiAtPiBIZWFwLmFkZCBoZWFwICh2LCBpbnB1dClcbiAgICBpblxuICAgIGxldCByZWMgcG9wX2hlYXBfYW5kX2xvb3AgKCkgPVxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgYWxsIGlucHV0cyBub3QgYXQgRW9mIG9jY3VyIGluIFtoZWFwXSBleGFjdGx5IG9uY2UsIHNvIHdlIGtub3dcbiAgICAgICAgIHdoYXQgdGhlIG5leHQgb3V0cHV0IGVsZW1lbnQgaXMuICBbcG9wX2hlYXBfYW5kX2xvb3BdIHJlcGVhdGVkbHkgdGFrZXMgZWxlbWVudHNcbiAgICAgICAgIGZyb20gdGhlIGlucHV0cyBhcyBsb25nIGFzIGl0IGhhcyBvbmUgZnJvbSBlYWNoIGlucHV0LiAgVGhpcyBpcyBkb25lXG4gICAgICAgICBzeW5jaHJvbm91c2x5IHRvIGF2b2lkIHRoZSBjb3N0IG9mIGEgZGVmZXJyZWQgZm9yIGVhY2ggZWxlbWVudCBvZiB0aGUgb3V0cHV0IC0tXG4gICAgICAgICB0aGVyZSdzIG5vIG5lZWQgdG8gcHVzaGJhY2sgc2luY2UgdGhhdCBpcyBvbmx5IG1vdmluZyBlbGVtZW50cyBmcm9tIG9uZSBwaXBlIHRvXG4gICAgICAgICBhbm90aGVyLiAgQXMgc29vbiBhcyBbcG9wX2hlYXBfYW5kX2xvb3BdIGNhbid0IGdldCBhbiBlbGVtZW50IGZyb20gc29tZSBpbnB1dCwgaXRcbiAgICAgICAgIHdhaXRzIG9uIHB1c2hiYWNrIGZyb20gdGhlIG91dHB1dCwgc2luY2UgaXQgaGFzIHRvIHdhaXQgb24gdGhlIGlucHV0IGFueXdheS5cbiAgICAgICAgIFRoaXMgYWxzbyBwcmV2ZW50cyBbbWVyZ2VdIGZyb20gY29uc3VtaW5nIGlucHV0cyBhdCBhIHJhdGUgZmFzdGVyIHRoYW4gaXRzIG91dHB1dFxuICAgICAgICAgaXMgY29uc3VtZWQuICopXG4gICAgICBtYXRjaCBIZWFwLnBvcCBoZWFwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbG9zZSB3XG4gICAgICB8IFNvbWUgKHYsIGlucHV0KSAtPlxuICAgICAgICBpZiBub3QgKGlzX2Nsb3NlZCB3KVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHcgdjtcbiAgICAgICAgICBpZiBIZWFwLmxlbmd0aCBoZWFwID0gMFxuICAgICAgICAgIHRoZW4gdXBvbiAodHJhbnNmZXJfaWQgaW5wdXQgdykgKGZ1biAoKSAtPiBjbG9zZSB3KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgd2l0aFxuICAgICAgICAgICAgfCAoYEVvZiB8IGBPayBfKSBhcyB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpXG4gICAgICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICAgICBwdXNoYmFjayB3XG4gICAgICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgcmVhZCBpbnB1dFxuICAgICAgICAgICAgICA+Pj4gZnVuIHggLT5cbiAgICAgICAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeDtcbiAgICAgICAgICAgICAgcG9wX2hlYXBfYW5kX2xvb3AgKCkpKVxuICAgIGluXG4gICAgbGV0IGluaXRpYWxfcHVzaCA9XG4gICAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgbGV0JW1hcCB4ID0gcmVhZCBpbnB1dCBpblxuICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4KVxuICAgIGluXG4gICAgdXBvbiBpbml0aWFsX3B1c2ggcG9wX2hlYXBfYW5kX2xvb3A7XG4gICAgclxuOztcblxubGV0IGNvbmNhdF9waXBlIGlucHV0cyA9XG4gIGxldCByID1cbiAgICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dHMgfmRvd25zdHJlYW06dyBpblxuICAgICAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICAgICBpdGVyIH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG4gIGluXG4gIHVwb24gKGNsb3NlZCByKSAoZnVuICgpIC0+IGNsb3NlIGlucHV0cyk7XG4gIHJcbjs7XG5cbmxldCBjb25jYXQgaW5wdXRzID1cbiAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgIERlZmVycmVkLkxpc3QuaXRlciBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPiB0cmFuc2Zlcl9pZCBpbnB1dCB3KSlcbjs7XG5cbmxldCBmb3JrIHQgfnB1c2hiYWNrX3VzZXMgPVxuICBsZXQgcmVhZGVyMCwgd3JpdGVyMCA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcmVhZGVyMSwgd3JpdGVyMSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY29uc3VtZXIgPVxuICAgIGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSAhc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCBpblxuICAgICAgbWF0Y2glbWFwXG4gICAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgICBbIGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIwOyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMSBdXG4gICAgICB3aXRoXG4gICAgICB8IGBSZWFkZXJfY2xvc2VkIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgICB8IGBPayAtPlxuICAgICAgICAoKiBJbiB0aGlzIGNhc2UsIHRoZXJlIGNvdWxkIGhhdmUgYmVlbiBubyBwZW5kaW5nIGl0ZW1zIGluIFt3cml0ZXIwXSBub3IgaW5cbiAgICAgICAgICAgW3dyaXRlcjFdLCBpbiB3aGljaCBjYXNlIHdlIGNvdWxkIGhhdmUgaGFkIGEgY2xvc2VkIHBpcGUgdGhhdCBtaXNzZWQgc29tZVxuICAgICAgICAgICB3cml0ZXMsIGJ1dCBbRmx1c2hlZF9yZXN1bHQuY29tYmluZV0gd291bGQgc3RpbGwgaGF2ZSByZXR1cm5lZCBbYE9rXSAqKVxuICAgICAgICBpZiBzb21lX3JlYWRlcl93YXNfY2xvc2VkIHRoZW4gYFJlYWRlcl9jbG9zZWQgZWxzZSBgT2spXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCBzdGlsbF9vcGVuID0gWyB3cml0ZXIwOyB3cml0ZXIxIF0gaW5cbiAgICAgbGV0IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gPVxuICAgICAgICgqIE9ubHkgY2FsbCBbZmlsdGVyXSBhbmQgcmVhbGxvY2F0ZSBsaXN0IGlmIHNvbWV0aGluZyB3aWxsIGdldCBmaWx0ZXJlZCAqKVxuICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgc3RpbGxfb3BlbiB+Zjppc19jbG9zZWQpXG4gICAgICAgdGhlbiBzdGlsbF9vcGVuXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBzb21lX3JlYWRlcl93YXNfY2xvc2VkIDo9IHRydWU7XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IExpc3QuZmlsdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IG5vdCAoaXNfY2xvc2VkIHcpKSBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuIHRoZW4gY2xvc2UgdDtcbiAgICAgICAgIHN0aWxsX29wZW4pXG4gICAgIGluXG4gICAgIGxldCViaW5kIHN0aWxsX29wZW4gPVxuICAgICAgIGZvbGQnIHQgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSB+aW5pdDpzdGlsbF9vcGVuIH5mOihmdW4gc3RpbGxfb3BlbiBxdWV1ZSAtPlxuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW5cbiAgICAgICAgIHRoZW4gcmV0dXJuIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICAgbWF0Y2ggcHVzaGJhY2tfdXNlcyB3aXRoXG4gICAgICAgICAgICAgfCBgRmFzdF9jb25zdW1lcl9vbmx5IC0+IERlZmVycmVkLmFueSAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgICB8IGBCb3RoX2NvbnN1bWVycyAtPiBEZWZlcnJlZC5hbGxfdW5pdCAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdyB+ZnJvbTpxdWV1ZSk7XG4gICAgICAgICAgIHN0aWxsX29wZW4pKVxuICAgICBpblxuICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjpjbG9zZTtcbiAgICAgcmV0dXJuICgpKTtcbiAgcmVhZGVyMCwgcmVhZGVyMVxuOztcblxubGV0IHNldF9pbmZvIHQgaW5mbyA9IHNldF9pbmZvIHQgKFNvbWUgaW5mbylcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgY3VycmVudF92YWx1ZSA6ICdhIE1vcHRpb24udFxuICA7IHRha2VuIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICA7IG11dGFibGUgdmFsdWVfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdmFsdWVfYXZhaWxhYmxlIHQgPSBJdmFyLnJlYWQgdC52YWx1ZV9hdmFpbGFibGVcbmxldCBpc19lbXB0eSB0ID0gTW9wdGlvbi5pc19ub25lIHQuY3VycmVudF92YWx1ZVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gKHQgOiBfIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y3VycmVudF92YWx1ZTooY2hlY2sgKE1vcHRpb24uaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH50YWtlbjooY2hlY2sgKEJ2YXIuaW52YXJpYW50IFVuaXQuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICB+dmFsdWVfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9hdmFpbGFibGUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHZhbHVlX2F2YWlsYWJsZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OihNb3B0aW9uLmlzX3NvbWUgdC5jdXJyZW50X3ZhbHVlKSkpKVxuOztcblxubGV0IHBlZWsgdCA9IE1vcHRpb24uZ2V0IHQuY3VycmVudF92YWx1ZVxuXG5sZXQgcGVla19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIucGVla19leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gWyVzZXhwIChwZWVrIHQgOiBhIG9wdGlvbildXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWRfd3JpdGUpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXQgcmVhZF9vbmx5ICh0IDogKCdhLCBbPiByZWFkIF0pIHQpID0gKHQgOj4gKCdhLCByZWFkKSB0KVxubGV0IHdyaXRlX29ubHkgKHQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQpID0gKHQgOj4gKCdhLCB3cml0ZSkgdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIHsgY3VycmVudF92YWx1ZSA9IE1vcHRpb24uY3JlYXRlICgpXG4gIDsgdGFrZW4gPSBCdmFyLmNyZWF0ZSAoKVxuICA7IHZhbHVlX2F2YWlsYWJsZSA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCB0YWtlX25vbmVtcHR5IHQgPVxuICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgciA9IE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZSBpblxuICBNb3B0aW9uLnNldF9ub25lIHQuY3VycmVudF92YWx1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC50YWtlbiAoKTtcbiAgdC52YWx1ZV9hdmFpbGFibGUgPC0gSXZhci5jcmVhdGUgKCk7XG4gIHJcbjs7XG5cbmxldCB0YWtlX25vd19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIudGFrZV9leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIHRha2Vfbm9uZW1wdHkgdFxuOztcblxubGV0IHRha2Vfbm93IHQgPSBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gU29tZSAodGFrZV9ub25lbXB0eSB0KSBlbHNlIE5vbmVcblxubGV0IHJlYyB0YWtlIHQgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gcmV0dXJuICh0YWtlX25vbmVtcHR5IHQpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICB0YWtlIHQpXG47O1xuXG5sZXQgc2V0IHQgdiA9XG4gIE1vcHRpb24uc2V0X3NvbWUgdC5jdXJyZW50X3ZhbHVlIHY7XG4gIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnZhbHVlX2F2YWlsYWJsZSAoKVxuOztcblxubGV0IHVwZGF0ZSB0IH5mID0gc2V0IHQgKGYgKHBlZWsgdCkpXG5sZXQgdXBkYXRlX2V4biB0IH5mID0gc2V0IHQgKGYgKHBlZWtfZXhuIHQpKVxubGV0IHRha2VuIHQgPSBCdmFyLndhaXQgdC50YWtlblxuXG5sZXQgcmVjIHB1dCB0IHYgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gKFxuICAgIHNldCB0IHY7XG4gICAgcmV0dXJuICgpKVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHRha2VuIHQgaW5cbiAgICBwdXQgdCB2KVxuOztcblxubGV0IHBpcGVfd2hlbl9yZWFkeSB0ID1cbiAgbGV0IHIsIHcgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHcpXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0YWtlX25vdyB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wICgpXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IFBpcGUud3JpdGUgdyB4IGluXG4gICAgICAgIGxvb3AgKCkpXG4gICAgZWxzZSByZXR1cm4gKClcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3IgKGxvb3AgKCkpO1xuICByXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiB1bml0IEl2YXIudFxuICAgIDsgcmVzdWx0IDogJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICB7IHN0YXJ0XG4gICAgOyByZXN1bHQgPVxuICAgICAgICAobGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgc3RhcnQgaW5cbiAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhfb3JfZXJyb3JcbiAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICBmKVxuICAgIH1cbiAgOztcblxuICBsZXQgY3JlYXRlX29yX2Vycm9yIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICBmKVxuICAgIH1cbiAgOztcblxuICBsZXQgd2FpdCB0ID0gdC5yZXN1bHRcbiAgbGV0IHdhaXRfZXhuIHQgPSB3YWl0IHQgPj58IG9rX2V4blxuICBsZXQgc3RhcnQgdCA9IEl2YXIuZmlsbF9pZl9lbXB0eSB0LnN0YXJ0ICgpXG5cbiAgbGV0IGZvcmNlIHQgPVxuICAgIHN0YXJ0IHQ7XG4gICAgd2FpdCB0XG4gIDs7XG5cbiAgbGV0IGZvcmNlX2V4biB0ID0gZm9yY2UgdCA+Pnwgb2tfZXhuXG4gIGxldCByZXR1cm4gYSA9IGNyZWF0ZSAoZnVuICgpIC0+IHJldHVybiBhKVxuXG4gIGxldCBiaW5kIHQgfmYgPVxuICAgIGNyZWF0ZSAoZnVuICgpIC0+XG4gICAgICBsZXQlYmluZCBhID0gZm9yY2VfZXhuIHQgaW5cbiAgICAgIGZvcmNlX2V4biAoZiBhKSlcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBjcmVhdGUgKGZ1biAoKSAtPiBmb3JjZV9leG4gdCA+PnwgZilcbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIE1vbmFkLk1ha2UgKFQpXG5cbmxldCBiaW5kJyB0IGYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IGNyZWF0ZSAoZnVuICgpIC0+IGYgYSkpXG5sZXQgaXNfZm9yY2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5zdGFydFxubGV0IGlzX2RldGVybWluZWQgdCA9IERlZmVycmVkLmlzX2RldGVybWluZWQgdC5yZXN1bHRcbmxldCBwZWVrIHQgPSBEZWZlcnJlZC5wZWVrIHQucmVzdWx0XG5sZXQgcGVla19leG4gdCA9IE9wdGlvbi5tYXAgKHBlZWsgdCkgfmY6b2tfZXhuXG4iLCJvcGVuIENvcmVcblxudHlwZSAnYSB0ID0geyB3YWl0cyA6ICdhIEl2YXIudCBRdWV1ZS50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSAoKSA9IHsgd2FpdHMgPSBRdWV1ZS5jcmVhdGUgKCkgfVxubGV0IHdhaXQgdCA9IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gUXVldWUuZW5xdWV1ZSB0LndhaXRzIGl2YXIpXG5sZXQgc2lnbmFsIHQgYSA9IE9wdGlvbi5pdGVyIChRdWV1ZS5kZXF1ZXVlIHQud2FpdHMpIH5mOihmdW4gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBhKVxuXG5sZXQgYnJvYWRjYXN0IHQgYSA9XG4gIFF1ZXVlLml0ZXIgdC53YWl0cyB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSk7XG4gIFF1ZXVlLmNsZWFyIHQud2FpdHNcbjs7XG4iLCJvcGVuIENvcmVcbmluY2x1ZGUgR2NcblxuKCoqIFthZGRfZmluYWxpemVyIGYgeF0gaXMgbGlrZSBbR2MuZmluYWxpc2UgZiB4XSwgZXhjZXB0IHRoYXQgdGhlIGZpbmFsaXplciBpcyBndWFyYW50ZWVkXG4gICAgdG8gcnVuIGFzIGFuIEFzeW5jIGpvYiAoaS5lLiB3aXRob3V0IGludGVycnVwdGluZyBvdGhlciBBc3luYyBqb2JzKS4gIFVucHJvdGVjdGVkIHVzZVxuICAgIG9mIFtDYW1sLkdjLmZpbmFsaXNlXSBvciBbQ29yZS5HYy5hZGRfZmluYWxpemVyXSBpbiBBc3luYyBwcm9ncmFtcyBpcyB3cm9uZywgYmVjYXVzZVxuICAgIHRoZSBmaW5hbGl6ZXJzIHdvbid0IGhvbGQgdGhlIGFzeW5jIGxvY2ssIGFuZCB0aHVzIGNvdWxkIGludGVybGVhdmUgYXJiaXRyYXJpbHkgd2l0aFxuICAgIGFzeW5jIGpvYnMuICopXG5sZXQgYWRkX2ZpbmFsaXplciBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXIgKHQgKCkpKSBoZWFwX2Jsb2NrIGZcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9leG4gKHQgKCkpKSBoZWFwX2Jsb2NrIGZcbmxldCBhZGRfZmluYWxpemVyX2xhc3QgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2xhc3QgKHQgKCkpKSBoZWFwX2Jsb2NrIGZcblxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gaGVhcF9ibG9jayBmID1cbiAgU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2xhc3RfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG47O1xuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsYXJtID0gR2MuRXhwZXJ0LkFsYXJtXG5cbiAgdHlwZSB0ID0gQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgZiA9IFNjaGVkdWxlci4oY3JlYXRlX2FsYXJtICh0ICgpKSkgZlxuICBsZXQgZGVsZXRlID0gQWxhcm0uZGVsZXRlXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIHNpZ25hdHVyZXMgdGhhdCBleHRlbmQgW0NvcmUuSW52YXJpYW50XSB3aXRoIGFuIFtBc3luY11cbiAgICBzdWJtb2R1bGUgZm9yIGludmFyaWFudHMgdGhhdCB1c2UgYXN5bmMgY29tcHV0YXRpb24gYW5kIHJldHVybiBbdW5pdCBEZWZlcnJlZC50XS4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBc3luYyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAtPiB1bml0IERlZmVycmVkLnRcbiAgdHlwZSAnYSBpbnYgPSAnYSB0XG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGludmFyaWFudCA6IHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdhIHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAoJ2EsICdiKSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2IgaW52IC0+ICdjIGludiAtPiAoJ2EsICdiLCAnYykgdCBpbnZcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQXN5bmNfaW52YXJpYW50ID0gc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgQ29yZS5JbnZhcmlhbnRcblxuICBtb2R1bGUgQXN5bmMgOiBzaWdcbiAgICBvcGVuIEFzeW5jXG5cbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgQXN5bmMudFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gICAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICAgIG1vZHVsZSB0eXBlIFMzID0gUzNcblxuICAgIHZhbCBpbnZhcmlhbnRcbiAgICAgIDogIFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgICAgIC0+ICdhXG4gICAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgICAoKiogW2NoZWNrX2ZpZWxkXSBjYW4gYmUgdXNlZCB0byBjaGVjayByZWNvcmQgZmllbGRzIHdoZW4gdXNpbmcgW1tAQGRlcml2aW5nIGZpZWxkc11dLlxuICAgICAgICBJZGlvbWF0aWMgdXNhZ2UgbG9va3MgbGlrZTpcblxuICAgICAgICB7W1xuICAgICAgICAgIHR5cGUgdCA9IHsgZm9vIDogRm9vLnQgOyBiYXIgOiBCYXIudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gSW52YXJpYW50LkFzeW5jLmNoZWNrX2ZpZWxkIHQgaW52IGluXG4gICAgICAgICAgICAgIEZpZWxkcy5mb2xkIH5pbml0OihyZXR1cm4gKCkpXG4gICAgICAgICAgICAgICAgfmZvbzogKGNoZWNrIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogKGNoZWNrIEJhci5pbnZhcmlhbnQpIF19XG5cbiAgICAgICAgV2hlbiBzb21lIGZpZWxkcyBoYXZlIHN5bmNocm9ub3VzIGludmFyaWFudHMsIG9yIGRvIG5vdCBuZWVkIHRvIGJlIGNoZWNrZWQsIGl0XG4gICAgICAgIG1heSBiZSB1c2VmdWwgdG8gZGVmaW5lIGEgc2Vjb25kIHdyYXBwZXIgYXJvdW5kIFtjaGVja19maWVsZF06XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgOyBxdXV4IDogUXV1eC50IH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgICAgSW52YXJpYW50LkFzeW5jLmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCBjaGVjaycgaW52ID0gSW52YXJpYW50LkFzeW5jLmNoZWNrX2ZpZWxkIHQgaW52IGluXG4gICAgICAgICAgICAgIGxldCBjaGVjayBpbnYgPSBjaGVjaycgKGZ1biB4IC0+IGludiB4OyByZXR1cm4gKCkpIGluXG4gICAgICAgICAgICAgIEZpZWxkcy5mb2xkIH5pbml0OihyZXR1cm4gKCkpXG4gICAgICAgICAgICAgICAgfmZvbzogIChjaGVjaycgRm9vLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+YmFyOiAgKGNoZWNrICBCYXIuaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5xdXV4OiAoY2hlY2sgIGlnbm9yZSkgXX0gKilcbiAgICB2YWwgY2hlY2tfZmllbGQgOiAnYSAtPiAnYiB0IC0+IHVuaXQgRGVmZXJyZWQudCAtPiAoJ2EsICdiKSBGaWVsZC50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgRGVmZXJyZWQuTGV0X3N5bnRheFxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvcmUuSW52YXJpYW50XG5cbm1vZHVsZSBBc3luYyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzeW5jX2ludmFyaWFudF9pbnRmLkFzeW5jXG5cbiAgbGV0IGludmFyaWFudCBoZXJlIHQgc2V4cF9vZl90IGYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOlxuICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIGZcbiAgICAgICAgfmV4dHJhY3RfZXhuOnRydWVcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW52YXJpYW50IGZhaWxlZFwiIH5fOihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCkgKGV4biA6IGV4bikgfl86KHQgOiB0KV1cbiAgOztcblxuICBsZXQgY2hlY2tfZmllbGQgdCBmIHdhaXRfZm9yX3ByZXZpb3VzIGZpZWxkID1cbiAgICBsZXQlYmluZCAoKSA9IHdhaXRfZm9yX3ByZXZpb3VzIGluXG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46XG4gICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfmV4dHJhY3RfZXhuOnRydWVcbiAgICAgICAgKGZ1biAoKSAtPiBmIChGaWVsZC5nZXQgZmllbGQgdCkpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJwcm9ibGVtIHdpdGggZmllbGRcIiB+ZmllbGQ6KEZpZWxkLm5hbWUgZmllbGQgOiBzdHJpbmcpIChleG4gOiBleG4pXVxuICA7O1xuZW5kXG4iLCIoKiogQ29udGFpbnMgQXN5bmMncyBjb3JlIGRhdGEgc3RydWN0dXJlcywgbGlrZSB7eyFBc3luY19rZXJuZWwuRGVmZXJyZWR9W0RlZmVycmVkXX0sXG4gICAge3shQXN5bmNfa2VybmVsLkl2YXJ9W0l2YXJdfSwgYW5kIHt7IUFzeW5jX2tlcm5lbC5DbG9ja19pbnRmLkNsb2NrfVtDbG9ja119LlxuXG4gICAgW0FzeW5jX2tlcm5lbF0gaXMgZGVzaWduZWQgdG8gZGVwZW5kIG9ubHkgb24ge3shQ29yZX1bQ29yZV19IGFuZCBzbyBpcyBtb3JlXG4gICAgcGxhdGZvcm0taW5kZXBlbmRlbnQuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEFzeW5jX2tlcm5lbF9jb25maWcgPSBBc3luY19rZXJuZWxfY29uZmlnXG5tb2R1bGUgQXN5bmNfa2VybmVsX3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2UgPSBSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXG5tb2R1bGUgQXN5bmNfa2VybmVsX3NjaGVkdWxlciA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXJcbm1vZHVsZSBCdmFyID0gQnZhclxubW9kdWxlIENsb2NrX25zID0gQ2xvY2tfbnNcbm1vZHVsZSBDb25kaXRpb24gPSBBc3luY19jb25kaXRpb25cbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkXG5tb2R1bGUgRXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dFxubW9kdWxlIEdjID0gQXN5bmNfZ2Ncbm1vZHVsZSBJbnZhcmlhbnQgPSBBc3luY19pbnZhcmlhbnRcbm1vZHVsZSBJdmFyID0gSXZhclxubW9kdWxlIExhenlfZGVmZXJyZWQgPSBMYXp5X2RlZmVycmVkXG5tb2R1bGUgTW9uYWRfc2VxdWVuY2UgPSBNb25hZF9zZXF1ZW5jZVxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yXG5tb2R1bGUgTXZhciA9IE12YXJcbm1vZHVsZSBQaXBlID0gUGlwZVxubW9kdWxlIFByaW9yaXR5ID0gUHJpb3JpdHlcbm1vZHVsZSBTZXF1ZW5jZXIgPSBUaHJvdHRsZS5TZXF1ZW5jZXJcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlXG5tb2R1bGUgVGFpbCA9IFRhaWxcbm1vZHVsZSBUaHJvdHRsZSA9IFRocm90dGxlXG5tb2R1bGUgVGltZV9zb3VyY2UgPSBUaW1lX3NvdXJjZVxuXG5cbigqKiB7MiBUb3BsZXZlbCBmdW5jdGlvbnMgfVxuXG4gICAgVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgYnJvYWRseSB1c2VmdWwgd2hlbiB3cml0aW5nIEFzeW5jIHByb2dyYW1zLCBhbmQgc28gYXJlIG1hZGVcbiAgICBhdmFpbGFibGUgYXQgdGhlIHRvcGxldmVsLiAqKVxuXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGNhdGNoID0gTW9uaXRvci5jYXRjaFxubGV0IGNob2ljZSA9IERlZmVycmVkLmNob2ljZVxubGV0IGNob29zZSA9IERlZmVycmVkLmNob29zZVxubGV0IGRvbid0X3dhaXRfZm9yID0gRGVmZXJyZWQuZG9uJ3Rfd2FpdF9mb3JcbmxldCBldmVyeSA9IENsb2NrX25zLmV2ZXJ5XG5sZXQgbmV2ZXIgPSBEZWZlcnJlZC5uZXZlclxubGV0IHNjaGVkdWxlID0gU2NoZWR1bGVyLnNjaGVkdWxlXG5sZXQgc2NoZWR1bGUnID0gU2NoZWR1bGVyLnNjaGVkdWxlJ1xubGV0IHRyeV93aXRoID0gTW9uaXRvci50cnlfd2l0aFxubGV0IHVwb24gPSBEZWZlcnJlZC51cG9uXG5sZXQgd2l0aF90aW1lb3V0ID0gQ2xvY2tfbnMud2l0aF90aW1lb3V0XG5sZXQgd2l0aGluID0gU2NoZWR1bGVyLndpdGhpblxubGV0IHdpdGhpbicgPSBTY2hlZHVsZXIud2l0aGluJ1xuXG4oKiogezIgSW5maXggb3BlcmF0b3JzIGFuZCBbTGV0X3N5bnRheF0gc3VwcG9ydH0gKilcblxuaW5jbHVkZSAoRGVmZXJyZWQgOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBEZWZlcnJlZC50KVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLnVwb259LiAqKVxubGV0ICggPj4+ICkgPSBEZWZlcnJlZC5JbmZpeC4oID4+PiApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0LmJpbmR9LiAqKVxubGV0ICggPj49PyApID0gRGVmZXJyZWQuUmVzdWx0LiggPj49IClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC5SZXN1bHQubWFwfS4gKilcbmxldCAoID4+fD8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+fCApXG5cbmluY2x1ZGUgRGVmZXJyZWQuTGV0X3N5bnRheFxuXG4oKiovKiopXG5cbigqKiBUaGUgbW9kdWxlcyBpbiBbQXN5bmNfa2VybmVsX3ByaXZhdGVdIGFyZSB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgYW5kIHRlc3RpbmcgQXN5bmMsIGFuZFxuICAgIHNob3VsZCBub3Qgb3RoZXJ3aXNlIGJlIHVzZWQuICopXG5tb2R1bGUgQXN5bmNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlYnVnID0gRGVidWdcbiAgbW9kdWxlIEl2YXIwID0gSXZhcjBcbiAgbW9kdWxlIEl2YXJfZmlsbGVyID0gSXZhcl9maWxsZXJcbiAgbW9kdWxlIEpvYiA9IEpvYlxuICBtb2R1bGUgU3RhY2tfb3JfY291bnRlciA9IFN0YWNrX29yX2NvdW50ZXJcbmVuZFxuXG4oKiovKiopXG5cbigqIFRoaXMgdGVzdCBtdXN0IGJlIGluIHRoaXMgbGlicmFyeSwgYmVjYXVzZSBpdCByZXF1aXJlcyBbcmV0dXJuXSB0byBiZSBpbmxpbmVkLiAgTW92aW5nXG4gICBpdCB0byBhbm90aGVyIGxpYnJhcnkgd2lsbCBjYXVzZSBpdCB0byBicmVhayB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9ZmFsc2VdLiAqKVxubGV0JXRlc3RfdW5pdCBcIltyZXR1cm4gKCldIGRvZXMgbm90IGFsbG9jYXRlXCIgPVxuICBsZXQgdzEgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKHJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXgucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQuTGV0X3N5bnRheC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBsZXQgdzIgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICBbJXRlc3RfcmVzdWx0OiBpbnRdIHcyIH5leHBlY3Q6dzFcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxfaW50ZlxuXG5tb2R1bGUgTWFrZSAoQ29ubiA6IENsb3NhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgQ29ubiA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ29ublxuXG4gICAgbGV0IHNleHBfb2ZfdCAoXyA6IHQpIDogU2V4cC50ID0gQXRvbSBcIjxDb25uLnQ+XCJcbiAgZW5kXG5cbiAgdHlwZSBjb25uID0gQ29ubi50XG5cbiAgbW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgIHwgQXR0ZW1wdGluZ190b19jb25uZWN0XG4gICAgICB8IE9idGFpbmVkX2FkZHJlc3Mgb2YgJ2FkZHJlc3NcbiAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3Qgb2YgRXJyb3IudFxuICAgICAgfCBDb25uZWN0ZWQgb2YgKGNvbm5bQHNleHAub3BhcXVlXSlcbiAgICAgIHwgRGlzY29ubmVjdGVkXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHR5cGUgJ2FkZHJlc3MgZXZlbnQgPSAnYWRkcmVzcyB0XG5cbiAgICBtb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgICAgeyBzZXJ2ZXJfbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IG9uX2V2ZW50IDogJ2FkZHJlc3MgZXZlbnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQgbG9nX2xldmVsID0gZnVuY3Rpb25cbiAgICAgIHwgQXR0ZW1wdGluZ190b19jb25uZWN0IHwgQ29ubmVjdGVkIF8gfCBEaXNjb25uZWN0ZWQgfCBPYnRhaW5lZF9hZGRyZXNzIF8gLT4gYEluZm9cbiAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3QgXyAtPiBgRXJyb3JcbiAgICA7O1xuXG4gICAgbGV0IGhhbmRsZSB0IHsgSGFuZGxlci5zZXJ2ZXJfbmFtZSA9IF87IG9uX2V2ZW50IH0gPSBvbl9ldmVudCB0XG4gIGVuZFxuXG4gICgqIEEgcGVyc2lzdGVudCBjb25uZWN0aW9uIHRoYXQgaXMgcG9seW1vcnBoaWMgaW4gdGhlIGFkZHJlc3MgdHlwZS4gIFdlIGhpZGUgYXdheSB0aGlzXG4gICAgIHR5cGUgbGF0ZXIgc2luY2UgaXQgb25seSBhcHBlYXJzIGluIHRoZSB0eXBlIG9mIFtjcmVhdGVdLiAqKVxuICBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB7IGdldF9hZGRyZXNzIDogdW5pdCAtPiAnYWRkcmVzcyBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgIDsgY29ubmVjdCA6ICdhZGRyZXNzIC0+IENvbm4udCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgIDsgcmV0cnlfZGVsYXkgOiB1bml0IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlIGNvbm4gOiBbIGBPayBvZiBDb25uLnQgfCBgQ2xvc2Vfc3RhcnRlZCBdIEl2YXIudFxuICAgICAgOyBtdXRhYmxlIG5leHRfY29ubmVjdF9yZXN1bHQgOiBDb25uLnQgT3JfZXJyb3IudCBJdmFyLnRcbiAgICAgIDsgZXZlbnRfaGFuZGxlciA6ICdhZGRyZXNzIEV2ZW50LkhhbmRsZXIudFxuICAgICAgOyBjbG9zZV9zdGFydGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBkb24ndF9yZWNvbm5lY3QgOiB1bml0IEl2YXIudFxuICAgICAgOyBhZGRyZXNzX2VxdWFsIDogJ2FkZHJlc3MgLT4gJ2FkZHJlc3MgLT4gYm9vbFxuICAgICAgOyBzZXhwX29mX2FkZHJlc3MgOiAnYWRkcmVzcyAtPiBTZXhwLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2VydmVyX25hbWUgdCA9IHQuZXZlbnRfaGFuZGxlci5zZXJ2ZXJfbmFtZVxuICAgIGxldCBoYW5kbGVfZXZlbnQgdCBldmVudCA9IEV2ZW50LmhhbmRsZSBldmVudCB0LmV2ZW50X2hhbmRsZXJcblxuICAgICgqIFRoaXMgZnVuY3Rpb24gZm9jdXNlcyBpbiBvbiB0aGUgdGhlIGVycm9yIGl0c2VsZiwgZGlzY2FyZGluZyBpbmZvcm1hdGlvbiBhYm91dCB3aGljaFxuICAgICAgIG1vbml0b3IgY2F1Z2h0IHRoZSBlcnJvciwgaWYgYW55LlxuXG4gICAgICAgSWYgd2UgZG9uJ3QgZG8gdGhpcywgd2Ugc29tZXRpbWVzIGVuZCB1cCB3aXRoIG5vaXN5IGxvZ3Mgd2hpY2ggcmVwb3J0IHRoZSBzYW1lIGVycm9yXG4gICAgICAgYWdhaW4gYW5kIGFnYWluLCBkaWZmZXJpbmcgb25seSBhcyB0byB3aGF0IG1vbml0b3IgY2F1Z2h0IHRoZW0uICopXG4gICAgbGV0IHNhbWVfZXJyb3IgZTEgZTIgPVxuICAgICAgbGV0IHRvX3NleHAgZSA9IEV4bi5zZXhwX29mX3QgKE1vbml0b3IuZXh0cmFjdF9leG4gKEVycm9yLnRvX2V4biBlKSkgaW5cbiAgICAgIFNleHAuZXF1YWwgKHRvX3NleHAgZTEpICh0b19zZXhwIGUyKVxuICAgIDs7XG5cbiAgICAoKiBDb250aW51ZSB0cnlpbmcgdG8gY29ubmVjdCB1bnRpbCB3ZSBhcmUgYWJsZSB0byBkbyBzbywgaW4gd2hpY2ggY2FzZSB3ZSByZXR1cm4gYm90aFxuICAgICAgIHRoZSBuZXcgY29ubmVjdGlvbiBhbmQgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgb25jZSB3ZSBhcmUgcmVhZHkgZm9yXG4gICAgICAgdGhlIG5leHQgcmVjb25uZWN0aW9uIGF0dGVtcHQuICopXG4gICAgbGV0IHRyeV9jb25uZWN0aW5nX3VudGlsX3N1Y2Nlc3NmdWwgdCA9XG4gICAgICAoKiBXZSB0YWtlIGNhcmUgbm90IHRvIHNwYW0gbG9ncyB3aXRoIHRoZSBzYW1lIG1lc3NhZ2Ugb3ZlciBhbmQgb3ZlciBieSBjb21wYXJpbmdcbiAgICAgICAgIGVhY2ggbG9nIG1lc3NhZ2UgdGhlIHRoZSBwcmV2aW91cyBvbmUgb2YgdGhlIHNhbWUgdHlwZS4gKilcbiAgICAgIGxldCBwcmV2aW91c19hZGRyZXNzID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCBwcmV2aW91c19lcnJvciA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgY29ubmVjdCAoKSA9XG4gICAgICAgIHQuZ2V0X2FkZHJlc3MgKClcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgZSAtPiByZXR1cm4gKEVycm9yIGUpXG4gICAgICAgIHwgT2sgYWRkciAtPlxuICAgICAgICAgIGxldCBzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MgPVxuICAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzX2FkZHJlc3Mgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICB8IFNvbWUgcHJldmlvdXNfYWRkcmVzcyAtPiB0LmFkZHJlc3NfZXF1YWwgYWRkciBwcmV2aW91c19hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmV2aW91c19hZGRyZXNzIDo9IFNvbWUgYWRkcjtcbiAgICAgICAgICAoaWYgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzXG4gICAgICAgICAgIHRoZW4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICBlbHNlIGhhbmRsZV9ldmVudCB0IChPYnRhaW5lZF9hZGRyZXNzIGFkZHIpKVxuICAgICAgICAgID4+PSBmdW4gKCkgLT4gdC5jb25uZWN0IGFkZHJcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgIHRoZW4gcmV0dXJuIGBDbG9zZV9zdGFydGVkXG4gICAgICAgIGVsc2UgaWYgSXZhci5pc19mdWxsIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIHRoZW4gcmV0dXJuIGBEb24ndF9yZWNvbm5lY3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcgPSB0LnJldHJ5X2RlbGF5ICgpIGluXG4gICAgICAgICAgbGV0JWJpbmQgY29ubmVjdF9yZXN1bHQgPSBjb25uZWN0ICgpIGluXG4gICAgICAgICAgSXZhci5maWxsIHQubmV4dF9jb25uZWN0X3Jlc3VsdCBjb25uZWN0X3Jlc3VsdDtcbiAgICAgICAgICB0Lm5leHRfY29ubmVjdF9yZXN1bHQgPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgICAgICAgbWF0Y2ggY29ubmVjdF9yZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgY29ubiAtPiByZXR1cm4gKGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykpXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgIGxldCBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yID1cbiAgICAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzX2Vycm9yIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19lcnIgLT4gc2FtZV9lcnJvciBlcnIgcHJldmlvdXNfZXJyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJldmlvdXNfZXJyb3IgOj0gU29tZSBlcnI7XG4gICAgICAgICAgICAoaWYgc2FtZV9hc19wcmV2aW91c19lcnJvclxuICAgICAgICAgICAgIHRoZW4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKEZhaWxlZF90b19jb25uZWN0IGVycikpXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdCA9XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICAodHlwZSBhZGRyZXNzKVxuICAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgID8ob25fZXZlbnQgPSBmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuICAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgID8ocmFuZG9tX3N0YXRlID0gYFN0YXRlIFJhbmRvbS5TdGF0ZS5kZWZhdWx0KVxuICAgICAgICAgID8odGltZV9zb3VyY2UgPSBUaW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICAgfmFkZHJlc3M6KG1vZHVsZSBBZGRyZXNzIDogQWRkcmVzcyB3aXRoIHR5cGUgdCA9IGFkZHJlc3MpXG4gICAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICAgID1cbiAgICAgIGxldCBldmVudF9oYW5kbGVyID0geyBFdmVudC5IYW5kbGVyLnNlcnZlcl9uYW1lOyBvbl9ldmVudCB9IGluXG4gICAgICBsZXQgZGVmYXVsdF9yZXRyeV9kZWxheSA9XG4gICAgICAgIEZuLmNvbnN0IChUaW1lX25zLlNwYW4ub2Zfc2VjIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiAwLjEgZWxzZSAxMC4pKVxuICAgICAgaW5cbiAgICAgIGxldCBub25fcmFuZG9taXplZF9kZWxheSA9IE9wdGlvbi52YWx1ZSByZXRyeV9kZWxheSB+ZGVmYXVsdDpkZWZhdWx0X3JldHJ5X2RlbGF5IGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXlfc3BhbiA9XG4gICAgICAgIG1hdGNoIHJhbmRvbV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYE5vbl9yYW5kb20gLT4gbm9uX3JhbmRvbWl6ZWRfZGVsYXlcbiAgICAgICAgfCBgU3RhdGUgcmFuZG9tX3N0YXRlIC0+XG4gICAgICAgICAgZnVuICgpIC0+XG4gICAgICAgICAgICBsZXQgc3BhbiA9IG5vbl9yYW5kb21pemVkX2RlbGF5ICgpIGluXG4gICAgICAgICAgICBsZXQgc3BhbiA9IFRpbWVfbnMuU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gUmFuZG9tLlN0YXRlLmZsb2F0IHJhbmRvbV9zdGF0ZSAoc3BhbiAqLiAwLjMpIGluXG4gICAgICAgICAgICBsZXQgd2FpdCA9XG4gICAgICAgICAgICAgIGlmIFJhbmRvbS5TdGF0ZS5ib29sIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICB0aGVuIHNwYW4gKy4gZGlzdGFuY2VcbiAgICAgICAgICAgICAgZWxzZSBzcGFuIC0uIGRpc3RhbmNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVGltZV9ucy5TcGFuLm9mX3NlYyB3YWl0XG4gICAgICBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5ICgpID0gVGltZV9zb3VyY2UuYWZ0ZXIgdGltZV9zb3VyY2UgKHJldHJ5X2RlbGF5X3NwYW4gKCkpIGluXG4gICAgICBsZXQgdCA9XG4gICAgICAgIHsgZXZlbnRfaGFuZGxlclxuICAgICAgICA7IGdldF9hZGRyZXNzXG4gICAgICAgIDsgY29ubmVjdFxuICAgICAgICA7IG5leHRfY29ubmVjdF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IHJldHJ5X2RlbGF5XG4gICAgICAgIDsgY29ubiA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgY2xvc2Vfc3RhcnRlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGRvbid0X3JlY29ubmVjdCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgYWRkcmVzc19lcXVhbCA9IEFkZHJlc3MuZXF1YWxcbiAgICAgICAgOyBzZXhwX29mX2FkZHJlc3MgPSBBZGRyZXNzLnNleHBfb2ZfdFxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgKCogdGhpcyBsb29wIGZpbmlzaGVzIG9uY2UgW2Nsb3NlIHRdIGhhcyBiZWVuIGNhbGxlZCwgaW4gd2hpY2ggY2FzZSBpdCBtYWtlcyBzdXJlIHRvXG4gICAgICAgICBsZWF2ZSBbdC5jb25uXSBmaWxsZWQgd2l0aCBbYENsb3NlX3N0YXJ0ZWRdLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIEBAIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAoKSAoZnVuICgpIC0+XG4gICAgICAgIGhhbmRsZV9ldmVudCB0IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgIHRyeV9jb25uZWN0aW5nX3VudGlsX3N1Y2Nlc3NmdWwgdFxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPlxuICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYERvbid0X3JlY29ubmVjdCAtPlxuICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSAtPlxuICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gKGBPayBjb25uKTtcbiAgICAgICAgICBoYW5kbGVfZXZlbnQgdCAoQ29ubmVjdGVkIGNvbm4pXG4gICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIENvbm4uY2xvc2VfZmluaXNoZWQgY29ublxuICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICB0LmNvbm4gPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgICAgICAgaGFuZGxlX2V2ZW50IHQgRGlzY29ubmVjdGVkXG4gICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICgqIHdhaXRzIHVudGlsIFtyZXRyeV9kZWxheSAoKV0gdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSB0aW1lIGp1c3QgYmVmb3JlIHdlIGxhc3RcbiAgICAgICAgICAgICB0cmllZCB0byBjb25uZWN0IHJhdGhlciB0aGFuIHRoZSB0aW1lIHdlIG5vdGljZWQgYmVpbmcgZGlzY29ubmVjdGVkLCBzbyB0aGF0IGlmXG4gICAgICAgICAgICAgYSBsb25nLWxpdmVkIGNvbm5lY3Rpb24gZGllcywgd2Ugd2lsbCBhdHRlbXB0IHRvIHJlY29ubmVjdCBpbW1lZGlhdGVseS4gKilcbiAgICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBgUmVwZWF0ICgpKTtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZCB0ID1cbiAgICAgICgqIFRha2UgY2FyZSBub3QgdG8gcmV0dXJuIGEgY29ubmVjdGlvbiB0aGF0IGlzIGtub3duIHRvIGJlIGNsb3NlZCBhdCB0aGUgdGltZVxuICAgICAgICAgW2Nvbm5lY3RlZF0gd2FzIGNhbGxlZC4gIFRoaXMgY291bGQgaGFwcGVuIGluIGNsaWVudCBjb2RlIHRoYXQgYmVoYXZlcyBsaWtlXG4gICAgICAgICB7W1xuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgID4+PSBmdW4gYzEgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgYzFcbiAgICAgICAgICAgKCogYXQgdGhpcyBwb2ludCB3ZSBhcmUgaW4gYSByYWNlIHdpdGggdGhlIHNhbWUgY2FsbCBpbnNpZGVcbiAgICAgICAgICAgICAgcGVyc2lzdGVudF9jbGllbnQubWwgKilcbiAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgICgqIGRlcGVuZGluZyBvbiBob3cgdGhlIHJhY2UgdHVybnMgb3V0LCB3ZSBkb24ndCB3YW50IHRvIGdldCBhIGNsb3NlZCBjb25uZWN0aW9uXG4gICAgICAgICAgICAgIGhlcmUgKilcbiAgICAgICAgICAgPj49IGZ1biBjMiAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgIF19XG4gICAgICAgICBUaGlzIGRvZXNuJ3QgcmVtb3ZlIHRoZSByYWNlIGNvbmRpdGlvbiwgYnV0IGl0IG1ha2VzIGl0IGxlc3MgbGlrZWx5IHRvIGhhcHBlbi5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBsZXQgZCA9IEl2YXIucmVhZCB0LmNvbm4gaW5cbiAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgZFxuICAgICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgICAgIHwgYE9rIGNvbm4gLT4gcmV0dXJuIGNvbm4pXG4gICAgICAgIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICB8IFNvbWUgKGBPayBjb25uKSAtPlxuICAgICAgICAgIGlmIENvbm4uaXNfY2xvc2VkIGNvbm5cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiBnaXZlIHRoZSByZWNvbm5lY3Rpb24gbG9vcCBhIGNoYW5jZSB0byBvdmVyd3JpdGUgdGhlIGl2YXIgKilcbiAgICAgICAgICAgIENvbm4uY2xvc2VfZmluaXNoZWQgY29ubiA+Pj0gbG9vcFxuICAgICAgICAgIGVsc2UgcmV0dXJuIGNvbm5cbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gdCA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5jb25uKSB3aXRoXG4gICAgICB8IE5vbmUgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+IFNvbWUgY29ublxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG4gICAgbGV0IGNsb3NlIHQgPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgdGhlblxuICAgICAgICAoKiBBbm90aGVyIGNhbGwgdG8gY2xvc2UgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4gIFdhaXQgZm9yIGl0IHRvIGZpbmlzaC4gKilcbiAgICAgICAgY2xvc2VfZmluaXNoZWQgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICAgIEl2YXIucmVhZCB0LmNvbm5cbiAgICAgICAgPj49IGZ1biBjb25uX29wdCAtPlxuICAgICAgICAobWF0Y2ggY29ubl9vcHQgd2l0aFxuICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICB8IGBPayBjb25uIC0+IENvbm4uY2xvc2UgY29ubilcbiAgICAgICAgPj58IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZCA9XG4gICAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcIlBlcnNpc3RlbnQgY29ubmVjdGlvbiBjbG9zZWRcIl1cbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgICB0aGVuIHJldHVybiBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBjdXJyZW50X2Nvbm5lY3Rpb24gdCB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gbm90IChDb25uLmlzX2Nsb3NlZCB4KSAtPiByZXR1cm4gKE9rIHgpXG4gICAgICAgIHwgU29tZSAoXyA6IENvbm4udCkgfCBOb25lIC0+XG4gICAgICAgICAgRGVmZXJyZWQuY2hvb3NlXG4gICAgICAgICAgICBbIGNob2ljZSAoSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZCkgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZClcbiAgICAgICAgICAgIDsgY2hvaWNlIChJdmFyLnJlYWQgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0KSBGbi5pZFxuICAgICAgICAgICAgXSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0ID1cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSB0LmRvbid0X3JlY29ubmVjdCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYWRkcmVzcyBQb2x5LnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBQb2x5LnNleHBfb2ZfdCB0LnNleHBfb2ZfYWRkcmVzcyB0XG5cbiAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCAoVCB0KSA9XG4gICAgUG9seS5jbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdFxuICA7O1xuXG4gIGxldCBjbG9zZV9maW5pc2hlZCAoVCB0KSA9IFBvbHkuY2xvc2VfZmluaXNoZWQgdFxuICBsZXQgaXNfY2xvc2VkIChUIHQpID0gUG9seS5pc19jbG9zZWQgdFxuICBsZXQgY2xvc2UgKFQgdCkgPSBQb2x5LmNsb3NlIHRcbiAgbGV0IHNlcnZlcl9uYW1lIChUIHQpID0gUG9seS5zZXJ2ZXJfbmFtZSB0XG4gIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gKFQgdCkgPSBQb2x5LmN1cnJlbnRfY29ubmVjdGlvbiB0XG4gIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0XG4gIGxldCBjb25uZWN0ZWQgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZCB0XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgP29uX2V2ZW50XG4gICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICB+Y29ubmVjdFxuICAgICAgICB+YWRkcmVzc1xuICAgICAgICBnZXRfYWRkcmVzc1xuICAgID1cbiAgICBUXG4gICAgICAoUG9seS5jcmVhdGVcbiAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgP29uX2V2ZW50XG4gICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgIH5hZGRyZXNzXG4gICAgICAgICBnZXRfYWRkcmVzcylcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG50eXBlIHQgPVxuICB8IEtyYlxuICB8IEtyYl90ZXN0X21vZGVcbiAgfCBScGNcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgYmluX2lvXVxuXG5sZXQgbWFnaWNfd29yZCA9IGZ1bmN0aW9uXG4gIHwgS3JiIC0+IFwiS1JCMlwiXG4gIHwgS3JiX3Rlc3RfbW9kZSAtPiBcIktCVFwiXG4gIHwgUnBjIC0+IFwiUlBDXCJcbjs7XG5cbmxldCBtYWdpY19udW1iZXJfYmluX3NpemUgPSA1XG5cbmxldCBnZW5fbWFnaWNfbnVtYmVyIHdvcmQgPVxuICBTdHJpbmcudG9fbGlzdF9yZXYgd29yZFxuICB8PiBMaXN0LmZvbGQgfmluaXQ6MCB+ZjooZnVuIGFjYyBjIC0+IChhY2MgKiAyNTYpICsgQ2hhci50b19pbnQgYylcbjs7XG5cbmxldCBtYWdpY19udW1iZXIgdCA9IGdlbl9tYWdpY19udW1iZXIgKG1hZ2ljX3dvcmQgdClcbmxldCBieV9tYWdpY19udW1iZXIgPSBJbnQuTWFwLm9mX2FsaXN0X2V4biAoTGlzdC5tYXAgYWxsIH5mOihmdW4gcCAtPiBtYWdpY19udW1iZXIgcCwgcCkpXG5cbigqIFdlIG9uY2UgbWludGVkIGEgbmV3IG1hZ2ljIG51bWJlciBmb3IgS3JiIGluIG9yZGVyIHRvIGNoYW5nZSB0aGUgcHJvdG9jb2xcbiAgIG5lZ290aWF0aW9uLiAgTGV0J3MgYmUgY2FyZWZ1bCB0aGF0IHdlIGRvbid0IHJldXNlIHRoZSBvbGQgbWFnaWMgbnVtYmVyICopXG5sZXQgcmV0aXJlZF9rcmJfd29yZCA9IFwiS1JCXCJcblxubGV0JXRlc3RfdW5pdCBcInZhbGlkYXRlIG1hZ2ljIHdvcmRzXCIgPVxuICBsZXQgbWFnaWNfd29yZHMgPSByZXRpcmVkX2tyYl93b3JkIDo6IExpc3QubWFwIGFsbCB+ZjptYWdpY193b3JkIGluXG4gIGxldCBtYWdpY19udW1iZXJzID0gTGlzdC5tYXAgbWFnaWNfd29yZHMgfmY6Z2VuX21hZ2ljX251bWJlciBpblxuICAoKiBNYWdpYyBudW1iZXJzIG11c3QgZml0IGludG8gT2NhbWwgaW50ZWdlcnMgKDMxIGJpdHMgb24gMzIgYml0IGJ1aWxkcykuICopXG4gIGFzc2VydCAoTGlzdC5mb3JfYWxsIG1hZ2ljX251bWJlcnMgfmY6KGZ1biBuIC0+IG4gPD0gSW50Lm9mX2Zsb2F0ICgoMi4gKiogMzAuKSAtLiAxLikpKTtcbiAgKCogTm8gZHVwbGljYXRlIG1hZ2ljIG51bWJlcnMgKilcbiAgYXNzZXJ0IChub3QgKExpc3QuY29udGFpbnNfZHVwIG1hZ2ljX251bWJlcnMgfmNvbXBhcmU6SW50LmNvbXBhcmUpKVxuOztcblxuKCogRW5zdXJlIHRlc3RzIGJyZWFrIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZSBjaGFuZ2VkICopXG5sZXQldGVzdF91bml0IFwibWFnaWMgbnVtYmVyc1wiID1cbiAgYXNzZXJ0IChnZW5fbWFnaWNfbnVtYmVyIHJldGlyZWRfa3JiX3dvcmQgPSA0XzM0Nl80NDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmIgPSA4NDNfMjA3XzI0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYl90ZXN0X21vZGUgPSA1XzUyMV85OTUpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBScGMgPSA0XzQxMV80NzQpXG47O1xuXG5sZXQldGVzdF91bml0IFwibWFnaWNfbnVtYmVyX2Jpbl9zaXplIGlzIGNvcnJlY3RcIiA9XG4gIExpc3QuaXRlciBhbGwgfmY6KGZ1biB0IC0+XG4gICAgbGV0IG1hZ2ljX251bWJlciA9IG1hZ2ljX251bWJlciB0IGluXG4gICAgbGV0IHNpemUgPSBJbnQuYmluX3NpemVfdCBtYWdpY19udW1iZXIgaW5cbiAgICBbJXRlc3RfZXE6IGludF0gc2l6ZSBtYWdpY19udW1iZXJfYmluX3NpemUpXG47O1xuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBMaXN0X3dpdGhfbWF4X2xlbl9pbnRmXG5cbm1vZHVsZSBNYWtlIChDb25maWcgOiBDb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICBsZXQgX19iaW5fcmVhZF90X18gPSBMaXN0Ll9fYmluX3JlYWRfdF9fXG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICB0cnkgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgd2l0aFxuICAgIHwgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biAoSW5mby50b19zdHJpbmdfaHVtIGNvbnRleHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCAoYmluX3JlYWRlcl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3QgYmluX3JlYWRlcl9hLnJlYWRcbiAgICA7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCAoYmluX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdCBiaW5fYS5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IGJpbl9hLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IGJpbl9hLnJlYWRlclxuICAgIH1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF9leG4gbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBpZiBsZW4gPiBtYXhfbGVuXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMaXN0IGlzIHRvbyBsYXJnZVwiIChjb250ZXh0IDogSW5mby50KSAobGVuIDogaW50KSAobWF4X2xlbiA6IGludCldO1xuICAgIGxcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID0gTGlzdC5zZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHRfb2ZfYSBzZXhwID1cbiAgICBsZXQgdCA9IExpc3QudF9vZl9zZXhwIHRfb2ZfYSBzZXhwIGluXG4gICAgb2ZfbGlzdF9leG4gdFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgS25vd25fcHJvdG9jb2wgPSBLbm93bl9wcm90b2NvbFxuXG5tb2R1bGUgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlID1cbiAgTGlzdF93aXRoX21heF9sZW4uTWFrZSAoc3RydWN0XG4gICAgbGV0IG1heF9sZW4gPSAxMDBcbiAgICBsZXQgY29udGV4dCA9IEluZm8ub2Zfc3RyaW5nIFwiUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcIlxuICBlbmQpXG5cbnR5cGUgdCA9IGludCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG5sZXQgY3JlYXRlX2V4biB+cHJvdG9jb2wgfnN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gIEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCA6OiBzdXBwb3J0ZWRfdmVyc2lvbnNcbiAgfD4gQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm9mX2xpc3RfZXhuXG47O1xuXG5sZXQgZ2V0X3Byb3RvY29sICh0IDogdCkgPVxuICBsZXQgcHJvdG9jb2xzLCB2ZXJzaW9ucyA9XG4gICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAodCA6PiBpbnQgbGlzdClcbiAgICAgIH5mOihmdW4gdiAtPlxuICAgICAgICBtYXRjaCBNYXAuZmluZCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIgdiB3aXRoXG4gICAgICAgIHwgU29tZSBwIC0+IEZpcnN0IHBcbiAgICAgICAgfCBOb25lIC0+IFNlY29uZCB2KVxuICBpblxuICBtYXRjaCBwcm90b2NvbHMgd2l0aFxuICB8IFtdIC0+IE9rIChOb25lLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgWyBwIF0gLT4gT2sgKFNvbWUgcCwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IF8gLT5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbXVsdGlwbGUgbWFnaWMgbnVtYmVycyBzZWVuLlwiXG4gICAgICAgICAgKHByb3RvY29scyA6IEtub3duX3Byb3RvY29sLnQgbGlzdClcbiAgICAgICAgICAodmVyc2lvbnMgOiBpbnQgbGlzdCldXG47O1xuXG5sZXQgbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlciB+KHVzIDogdCkgfihwZWVyIDogdCkgPVxuICBsZXQgb3BlbiBPcl9lcnJvci5MZXRfc3ludGF4IGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sLCB1c192ZXJzaW9ucyA9IGdldF9wcm90b2NvbCB1cyBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sLCBwZWVyX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHBlZXIgaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHVzX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIk5vIG1hZ2ljIG51bWJlcnMgc2VlblwiICh1c192ZXJzaW9ucyA6IEludC5TZXQudCldXG4gIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHBlZXJfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBhc3N1bWUgcGVlciBpcyBzcGVha2luZyBvdXIgcHJvdG9jb2wgaWYgW2FsbG93X2xlZ2FjeV9wZWVyXSAqKVxuICAgICAgaWYgYWxsb3dfbGVnYWN5X3BlZXJcbiAgICAgIHRoZW4gcmV0dXJuIHVzX3Byb3RvY29sXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHBlZXJfcHJvdG9jb2wgPSBgVW5rbm93biBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBbIGBVbmtub3duIF0pXSlcbiAgaW5cbiAgaWYgbm90IChbJWNvbXBhcmUuZXF1YWw6IEtub3duX3Byb3RvY29sLnRdIHVzX3Byb3RvY29sIHBlZXJfcHJvdG9jb2wpXG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXVxuICBlbHNlIChcbiAgICBsZXQgcHJvdG9jb2wgPSB1c19wcm90b2NvbCBpblxuICAgIG1hdGNoIFNldC5tYXhfZWx0IChTZXQuaW50ZXIgdXNfdmVyc2lvbnMgcGVlcl92ZXJzaW9ucykgd2l0aFxuICAgIHwgU29tZSB2ZXJzaW9uIC0+IE9rIHZlcnNpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbm8gc2hhcmVkIHZlcnNpb24gbnVtYmVyc1wiXG4gICAgICAgICAgICAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocGVlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXSlcbjs7XG5cbmxldCBtYXRjaGVzX21hZ2ljX3ByZWZpeCAodCA6IHQpIH5wcm90b2NvbCA9XG4gIGxldCBtYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgTGlzdC5tZW0gfmVxdWFsOkludC5lcXVhbCAodCA6PiBpbnQgbGlzdCkgbWFnaWNfbnVtYmVyXG47O1xuXG5sZXQgY29udGFpbnNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCA9XG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlciAobWF0Y2hlc19tYWdpY19wcmVmaXggfnByb3RvY29sKSBiaW5fdC5yZWFkZXJcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4ID1cbiAgbGV0IGYgdCA9XG4gICAgTGlzdC5maW5kIEtub3duX3Byb3RvY29sLmFsbCB+ZjooZnVuIHByb3RvY29sIC0+IG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCB0KVxuICBpblxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgZiBiaW5fdC5yZWFkZXJcbjs7XG5cbm1vZHVsZSBNYWdpY19wcmVmaXhfYmluX3JlcHIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgYmluX3dyaXRlXVxuXG4gICgqIFRoZSBiaW4gcHJvdCByZXByZXNlbnRhdGlvbiBvZiBhIHByb3RvY29sIHZlcnNpb24gaGVhZGVyIGlzIHRoZSBzdGFuZGFyZFxuICAgICByZXByZXNlbnRhdGlvbiBmb3IgYW4gaW50IGxpc3Q6XG5cbiAgICAgfCBuYXQwIGluZGljYXRpbmcgc2l6ZSB8IGVsZW1lbnQgMCB8IGVsZW1lbnQgMSB8IC4uLlxuXG4gICAgIFtjcmVhdGVfZXhuXSB3aWxsIGFsd2F5cyBwdXQgdGhlIGtub3duIHByb3RvY29sIG1hZ2ljIG51bWJlciBhcyBcImVsZW1lbnQgMFwiLlxuXG4gICAgIFRoZSBiaW4gc2l6ZSBvZiBcIm5hdDAgaW5kaWNhdGluZyBzaXplXCIgYW5kIFwiZWxlbWVudCAwXCIgaXMgZml4ZWQgKHRoZXJlIGFyZSBleHBlY3RcbiAgICAgdGVzdHMgdG8gbWFrZSBzdXJlIHdlIG5ldmVyIGNoYW5nZSB0aGVtKS4gKilcbiAgbGV0IGJpbl9zaXplID1cbiAgICBiaW5fc2l6ZV90IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gICAgKyBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXJfYmluX3NpemVcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCAoX2xpc3RfbGVuZ3RoIDogQmluX3Byb3QuTmF0MC50KSA9IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgaW5cbiAgICBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX2ludCBidWYgfnBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IEludC5fX2Jpbl9yZWFkX3RfXyB9XG4gIDs7XG5lbmRcblxubGV0IGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXMgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXJcbiAgICAoZnVuIG1hZ2ljX251bWJlciAtPiAoTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyKSBtYWdpY19udW1iZXIpXG4gICAgTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9yZWFkZXJfdFxuOztcblxubGV0IGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXNfYmluX3NpemUgPSBNYWdpY19wcmVmaXhfYmluX3JlcHIuYmluX3NpemVcblxubW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlX2xpc3Rfd2l0aF9tYXhfbGVuID0gTGlzdF93aXRoX21heF9sZW4uTWFrZVxuZW5kXG5cbmxldCV0ZXN0X3VuaXQgXCJiaW4gc2l6ZXMgYXJlIG5vdCBjaGFuZ2VkIGJ5IGFjY2lkZW50XCIgPVxuICAoKiBFbnN1cmUgdGhlIGJpbl9zaXplIG9mIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gICAgIGlzIGFsd2F5cyAxLiBUaGlzIG1lYW5zIHRoYXQgcmVnYXJkbGVzcyBvZiBob3cgbG9uZyB0aGUgbGlzdCBvZiB2ZXJzaW9ucyBpbiB0aGVcbiAgICAgcHJvdG9jb2wgaGVhZGVyIGlzLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSB0aGUgc2FtZSBudW1iZXIgb2YgYnl0ZXMuIFRoZVxuICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnQganVtcHMgdG8gMyBieXRlcyBhdCB0aGUgdmFsdWUgMTI4LiAqKVxuICBsZXQgYm91bmRlZF9saXN0X2Jpbl9zaXplID1cbiAgICBJbnQuYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICBpblxuICBhc3NlcnQgKGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9IDEpO1xuICBhc3NlcnQgKDYgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpO1xuICBhc3NlcnQgKFxuICAgIGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXNfYmluX3NpemVcbiAgICA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSlcbjs7XG4iLCJ0eXBlIHQgPSBCaW5fcHJvdC5OYXQwLnRcbltAQGRlcml2aW5nIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4OTllMmY0YS00OTBhLTExZTYtYjY4Zi1iYmQ2MjQ3MjUxNmNcIl1cblxubGV0IGJpbl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fbmF0MFxubGV0IGJpbl9zaXplX3QgPSBCaW5fcHJvdC5TaXplLmJpbl9zaXplX25hdDBcbmxldCBiaW5fd3JpdGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0MFxubGV0IGJpbl93cml0ZV90ID0gQmluX3Byb3QuV3JpdGUuYmluX3dyaXRlX25hdDBcbmxldCBiaW5fcmVhZGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0MFxubGV0IGJpbl9yZWFkX3QgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDBcblxubGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZuYXQwID1cbiAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuOztcblxubGV0IG9mX2ludF9leG4gPSBCaW5fcHJvdC5OYXQwLm9mX2ludFxuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcblxubGV0IG9mX3dyaXRlciB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9XG4gIGxldCB3cml0ZSBidWYgfnBvcyBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgbGVuIGluXG4gICAgd3JpdGUgYnVmIH5wb3MgYVxuICBpblxuICBsZXQgc2l6ZSBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgTmF0MC5iaW5fc2l6ZV90IGxlbiArICgobGVuIDogQmluX3Byb3QuTmF0MC50KSA6PiBpbnQpXG4gIGluXG4gIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9XG47O1xuXG5sZXQgb2ZfdHlwZV9jbGFzcyAoYmluX2EgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPSBvZl93cml0ZXIgYmluX2Eud3JpdGVyXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYmlnc3RyaW5nX2Jpbl9wcm90IHMgPVxuICAgICAgbGV0IGJpZ3N0cmluZyA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJ5dGVzLmJpbl93cml0ZXJfdCBzIGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCaWdzdHJpbmcuU3RhYmxlLlYxLmJpbl93cml0ZXJfdCBiaWdzdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgPVxuICAgICAgbGV0IHdyaXRlcl93aXRoX2xlbmd0aCA9IG9mX3dyaXRlciBCeXRlcy5iaW5fd3JpdGVyX3QgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIHdyaXRlcl93aXRoX2xlbmd0aCBzXG4gICAgOztcblxuICAgIGxldCB0ZXN0IGxlbiA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBiaWdzdHJpbmdfdmVyc2lvbiA9IGJpZ3N0cmluZ19iaW5fcHJvdCBzIGluXG4gICAgICBsZXQgd2l0aF9sZW5ndGhfdmVyc2lvbiA9IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgaW5cbiAgICAgIGlmIEJpZ3N0cmluZy50b19zdHJpbmcgYmlnc3RyaW5nX3ZlcnNpb24gPD4gQmlnc3RyaW5nLnRvX3N0cmluZyB3aXRoX2xlbmd0aF92ZXJzaW9uXG4gICAgICB0aGVuIGZhaWx3aXRoZiBcIm1pc21hdGNoIGZvciBsZW5ndGggJWRcIiBsZW4gKClcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIGZvciBsZW4gPSAwIHRvIEludC5wb3cgMiAxMCBkb1xuICAgICAgICB0ZXN0IGxlblxuICAgICAgZG9uZTtcbiAgICAgIGZvciBwb3cgPSAxMCB0byAyMCBkb1xuICAgICAgICBsZXQgeCA9IEludC5wb3cgMiBwb3cgaW5cbiAgICAgICAgdGVzdCAoeCAtIDEpO1xuICAgICAgICB0ZXN0IHg7XG4gICAgICAgIHRlc3QgKHggKyAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZlcnNpb24gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBzdW1tYXJpemUgdHMgPVxuICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHsgbmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gIHw+IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZCB+aW5pdDpJbnQuU2V0LmVtcHR5IH5mOkludC5TZXQuYWRkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBkZXNjcmlwdGlvbnMgPVxuICAgIFsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDEgfVxuICAgIDsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDIgfVxuICAgIDsgeyBuYW1lID0gXCJiYXJcIjsgdmVyc2lvbiA9IDUgfVxuICAgIF1cbiAgaW5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJpemUgZGVzY3JpcHRpb25zIGluXG4gIHByaW50X3MgWyVzZXhwIChzdW1tYXJ5IDogSW50LlNldC50IFN0cmluZy5NYXAudCldO1xuICBbJWV4cGVjdCB7fCAoKGJhciAoNSkpIChmb28gKDEgMikpKSB8fV1cbjs7XG4iLCIoKiogQXN5bmNfcnBjIHByb3RvY29sIHR5cGVzLCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKilcblxuKCogV0FSTklORzogZG8gbm90IGNoYW5nZSBhbnkgb2YgdGhlc2UgdHlwZXMgd2l0aG91dCBnb29kIHJlYXNvbiAqKVxuXG5vcGVuIEJpbl9wcm90LlN0ZFxub3BlbiBTZXhwbGliLlN0ZFxubW9kdWxlIFJwY190YWcgOiBDb3JlLklkZW50aWZpYWJsZSA9IENvcmUuU3RyaW5nXG5tb2R1bGUgUXVlcnlfaWQgPSBDb3JlLlVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgVW51c2VkX3F1ZXJ5X2lkIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdmFsIHQgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUXVlcnlfaWQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0IHQgPSBRdWVyeV9pZC5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgUnBjX2Vycm9yIDogc2lnXG4gIG9wZW4gQ29yZVxuXG4gIHR5cGUgdCA9XG4gICAgfCBCaW5faW9fZXhuIG9mIFNleHAudFxuICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICB8IFdyaXRlX2Vycm9yIG9mIFNleHAudFxuICAgIHwgVW5jYXVnaHRfZXhuIG9mIFNleHAudFxuICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgIHwgVW5rbm93bl9xdWVyeV9pZCBvZiBRdWVyeV9pZC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBCaW5faW9fZXhuIG9mIENvcmUuU2V4cC50XG4gICAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IFdyaXRlX2Vycm9yIG9mIENvcmUuU2V4cC50XG4gICAgICB8IFVuY2F1Z2h0X2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBvZiBScGNfdGFnLnQgKiBbIGBWZXJzaW9uIG9mIENvcmUuSW50LlN0YWJsZS5WMS50IF1cbiAgICAgIHwgVW5rbm93bl9xdWVyeV9pZCBvZiBRdWVyeV9pZC50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBjb21wYXJlXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic3RhYmxlXCIgPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgOGNjNzY2YmVmYTJjZjU2NWVhMTQ3ZDlmY2Q1ZWFhYWIgfH1dXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29yZS5Db21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIFJwY19yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCBScGNfZXJyb3IudCkgQ29yZS5SZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIEhlYWRlciA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyXG5cbm1vZHVsZSBRdWVyeSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBSZXNwb25zZSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyBpZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IGRhdGEgOiAnYSBScGNfcmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFN0cmVhbV9xdWVyeSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgWyBgUXVlcnkgb2YgJ2FcbiAgICB8IGBBYm9ydFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIFN0cmVhbV9pbml0aWFsX21lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPVxuICAgIHsgdW51c2VkX3F1ZXJ5X2lkIDogVW51c2VkX3F1ZXJ5X2lkLnRcbiAgICA7IGluaXRpYWwgOiAoJ3Jlc3BvbnNlLCAnZXJyb3IpIENvcmUuUmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX3Jlc3BvbnNlX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRW9mXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5tb2R1bGUgTWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgfCBIZWFydGJlYXRcbiAgICB8IFF1ZXJ5IG9mICdhIFF1ZXJ5Lm5lZWRzX2xlbmd0aFxuICAgIHwgUmVzcG9uc2Ugb2YgJ2EgUmVzcG9uc2UubmVlZHNfbGVuZ3RoXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIHNleHBfb2ZdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgbWVzc2FnZV9oYW5kbGVyID0gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IHN0cnVjdFxuICAoKiogUmVzdWx0IG9mIGFuIFtvbl9tZXNzYWdlXSBjYWxsYmFjay4gIFdlIHNwbGl0IHRoZSBbQ29udGludWVdIGFuZCBbV2FpdCBfXSBjYXNlcyB0b1xuICAgICAgbWFrZSBpdCBjbGVhciB0aGF0IFtDb250aW51ZV0gaXMgdGhlIGV4cGVjdGVkIGNhc2UuICBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlXG4gICAgICBvcHRpbWl6ZWQgZm9yIHRoaXMgY2FzZS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0b3Agb2YgJ2FcbiAgICB8IENvbnRpbnVlXG4gICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cblxubW9kdWxlIHR5cGUgUmVhZGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcblxuICAoKiogU3RhcnQgcmVhZGluZyBpbmNvbWluZyBtZXNzYWdlcyBhbmQgcGFzcyB0aGVtIHRvIFtvbl9tZXNzYWdlXSwgdW50aWwgaXQgcmV0dXJuc1xuICAgICAgW1N0b3AgX10uXG5cbiAgICAgIFtvbl9lbmRfb2ZfYmF0Y2hdIGlzIGNhbGxlZCBhZnRlciBwcm9jZXNzaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIGJlZm9yZSB3YWl0aW5nIGZvclxuICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciB0byBiZWNvbWUgcmVhZGFibGUgYWdhaW4uICopXG4gIHZhbCByZWFkX2ZvcmV2ZXJcbiAgICA6ICB0XG4gICAgLT4gb25fbWVzc2FnZTooQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIEhhbmRsZXJfcmVzdWx0LnQpXG4gICAgLT4gb25fZW5kX29mX2JhdGNoOih1bml0IC0+IHVuaXQpXG4gICAgLT4gKCdhLCBbIGBFb2YgfCBgQ2xvc2VkIF0pIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSBtZXNzYWdlX3Rvb19iaWcgPVxuICAgIHsgc2l6ZSA6IGludFxuICAgIDsgbWF4X21lc3NhZ2Vfc2l6ZSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPVxuICAgIHwgU2VudCBvZiAnYVxuICAgIHwgQ2xvc2VkXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgb2YgbWVzc2FnZV90b29fYmlnXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgV3JpdGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcbiAgdmFsIG1vbml0b3IgOiB0IC0+IE1vbml0b3IudFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuXG4gICgqKiBCZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc2VuZCBtZXNzYWdlIHVzaW5nIHRoaXMgd3JpdGVyLFxuICAgICAgZm9yIGluc3RhbmNlIHdoZW4gdGhlIHdyaXRlciBpcyBjbG9zZWQgb3IgdGhlIGNvbnN1bWVyIGxlYXZlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNhY2hlZCBieSBbUnBjLlRyYW5zcG9ydF0gKilcbiAgdmFsIHN0b3BwZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbZmx1c2hlZCB0XSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCBtdXN0IGJlY29tZSBkZXRlcm1pbmVkIHdoZW4gYWxsIHByaW9yIHNlbnRcbiAgICAgIG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQuXG5cbiAgICAgIEl0IG11c3QgYmUgT0sgdG8gY2FsbCBbZmx1c2hlZCB0XSBhZnRlciBbdF0gaGFzIGJlZW4gY2xvc2VkLiAqKVxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtyZWFkeV90b193cml0ZSB0XSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBhIGdvb2QgdGltZSB0byBzZW5kIG1lc3NhZ2VzXG4gICAgICBhZ2Fpbi4gQXN5bmMgUlBDIGNhbGxzIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgc2VuZGluZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCB0byBhdm9pZFxuICAgICAgZmxvb2RpbmcgdGhlIHRyYW5zcG9ydC5cblxuICAgICAgVXNpbmcgW2xldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRdIGlzIGFuIGFjY2VwdGFibGUgaW1wbGVtZW50YXRpb24uICopXG4gIHZhbCByZWFkeV90b193cml0ZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIEFsbCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzZW5kIGV4YWN0bHkgb25lIG1lc3NhZ2UuICopXG5cbiAgdmFsIHNlbmRfYmluX3Byb3QgOiB0IC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgKCoqIFNhbWUgYXMgW3NlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ10gYnV0IHRoZSBiaWdzdHJpbmcgY2FuJ3QgYmUgbW9kaWZpZWQgdW50aWwgdGhlXG4gICAgICByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzIGRldGVybWluZWQuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIGNvcHlpbmcgdGhlXG4gICAgICBiaWdzdHJpbmcuICopXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBEZWZlcnJlZC50IFNlbmRfcmVzdWx0LnRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG5tb2R1bGUgSGVhZGVyID0gc3RydWN0XG4gIGxldCBsZW5ndGggPSA4XG4gIGxldCB1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zID0gQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIGJ1ZiB+cG9zXG5cbiAgbGV0IHVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgcGF5bG9hZF9sZW4gPVxuICAgIEJpZ3N0cmluZy51bnNhZmVfc2V0X2ludDY0X2xlIGJ1ZiB+cG9zIHBheWxvYWRfbGVuXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gVHJhbnNwb3J0X2ludGYuSGFuZGxlcl9yZXN1bHRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gVHJhbnNwb3J0X2ludGYuUmVhZGVyXG5cbiAgdHlwZSB0ID0gVCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKSAqICdhIC0+IHRcblxuICBsZXQgcGFjayBtIHQgPSBUIChtLCB0KVxuXG4gICgqIFdlIHB1dCB0eXBlIGFubm90YXRpb25zIHRvIGJlIHN1cmUgdGhlIHR5cGUgaXMgbm90IGEgZnVuY3Rpb24gdHlwZSwgaS5lLiB0byBhdm9pZFxuICAgICBjcmVhdGluZyBjbG9zdXJlcyAqKVxuICBsZXQgc2V4cF9vZl90IChUICgobW9kdWxlIE0pLCB0KSkgOiBTZXhwLnQgPSBNLnNleHBfb2ZfdCB0XG4gIGxldCBjbG9zZSAoVCAoKG1vZHVsZSBNKSwgdCkpIDogdW5pdCBEZWZlcnJlZC50ID0gTS5jbG9zZSB0XG4gIGxldCBpc19jbG9zZWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IGJvb2wgPSBNLmlzX2Nsb3NlZCB0XG5cbiAgbGV0IHJlYWRfZm9yZXZlciAoVCAoKG1vZHVsZSBNKSwgdCkpIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2ggOiBfIERlZmVycmVkLnQgPVxuICAgIE0ucmVhZF9mb3JldmVyIHQgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaFxuICA7O1xuXG4gIGxldCByZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90IHQgKGJpbl9yZWFkZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgcmVhZF9mb3JldmVyXG4gICAgICB0XG4gICAgICB+b25fbWVzc2FnZTooZnVuIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgICAgIGxldCB4ID0gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA8PiBwb3MgKyBsZW5cbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJtZXNzYWdlIGxlbmd0aCAoJWQpIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgbGVuZ3RoICglZClcIlxuICAgICAgICAgICAgKCFwb3NfcmVmIC0gcG9zKVxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICBlbHNlIFN0b3AgeClcbiAgICAgIH5vbl9lbmRfb2ZfYmF0Y2g6aWdub3JlXG4gIDs7XG5lbmRcblxubW9kdWxlIFNlbmRfcmVzdWx0ID0gVHJhbnNwb3J0X2ludGYuU2VuZF9yZXN1bHRcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gVHJhbnNwb3J0X2ludGYuV3JpdGVyXG5cbiAgdHlwZSAnYSB3cml0ZXIgPVxuICAgIHsgaW1wbCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgIDsgdCA6ICdhXG4gICAgKCogV2UgY2FjaGUgdGhlIHJlc3VsdCBvZiBbc3RvcHBlZF0gYmVjYXVzZSBpdCBpcyBvZnRlbiB0aGUgW0RlZmVycmVkLmFueV0gb2Ygc2V2ZXJhbFxuICAgICAgIG90aGVyIGRlZmVycmVkcyBhbmQgd2Ugd2FudCBbY2FuX3NlbmRdIHRvIGJlIHNpbXBsZS4gKilcbiAgICA7IHN0b3BwZWQgOiB1bml0IERlZmVycmVkLnRcbiAgICB9XG5cbiAgdHlwZSB0ID0gVCA6ICdhIHdyaXRlciAtPiB0XG5cbiAgbGV0IHBhY2sgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpIHQgPVxuICAgIFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgc3RvcHBlZCA9IE0uc3RvcHBlZCB0IH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBTZXhwLnQgPSBNLnNleHBfb2ZfdCB0XG4gIGxldCBjbG9zZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID0gTS5jbG9zZSB0XG4gIGxldCBpc19jbG9zZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IGJvb2wgPSBNLmlzX2Nsb3NlZCB0XG4gIGxldCBtb25pdG9yIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBNb25pdG9yLnQgPSBNLm1vbml0b3IgdFxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IGludCA9IE0uYnl0ZXNfdG9fd3JpdGUgdFxuICBsZXQgZmx1c2hlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID0gTS5mbHVzaGVkIHRcblxuICBsZXQgcmVhZHlfdG9fd3JpdGUgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkeV90b193cml0ZSB0XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSBiaW5fd3JpdGVyIHggOiBfIFNlbmRfcmVzdWx0LnQgPVxuICAgIE0uc2VuZF9iaW5fcHJvdCB0IGJpbl93cml0ZXIgeFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzdG9wcGVkIChUIHsgc3RvcHBlZDsgXyB9KSA9IHN0b3BwZWRcblxuICBsZXQgY2FuX3NlbmQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgc3RvcHBlZCB9KSA9XG4gICAgbm90IChNLmlzX2Nsb3NlZCB0IHx8IERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcHBlZClcbiAgOztcblxuICBsZXQgdHJhbnNmZXIgdCA/KG1heF9udW1fdmFsdWVzX3Blcl9yZWFkID0gMV8wMDApIHBpcGUgZiA9XG4gICAgbGV0IGNvbnN1bWVyID1cbiAgICAgIFBpcGUuYWRkX2NvbnN1bWVyIHBpcGUgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgIGxldCVtYXAgKCkgPSBmbHVzaGVkIHQgaW5cbiAgICAgICAgYE9rKVxuICAgIGluXG4gICAgbGV0IGVuZF9vZl9waXBlID1cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgbGV0IHJlYyBpdGVyICgpID1cbiAgICAgICAgICBpZiBjYW5fc2VuZCB0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBQaXBlLnJlYWRfbm93JyBwaXBlIH5jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aDptYXhfbnVtX3ZhbHVlc19wZXJfcmVhZFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBgT2sgcSAtPlxuICAgICAgICAgICAgICBRdWV1ZS5pdGVyIHEgfmY7XG4gICAgICAgICAgICAgIFBpcGUuQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgICAgICAgcmVhZHlfdG9fd3JpdGUgdCA+Pj4gaXRlclxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHBpcGUgPj4+IGZ1biAoYE9rIHwgYEVvZikgLT4gaXRlciAoKVxuICAgICAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBpdmFyICgpKVxuICAgICAgICBpblxuICAgICAgICBpdGVyICgpKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9IERlZmVycmVkLmFueSBbIGVuZF9vZl9waXBlOyBzdG9wcGVkIHQgXSBpblxuICAgIFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgeyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZSB0ID1cbiAgbGV0JWJpbmQgKCkgPSBXcml0ZXIuY2xvc2UgdC53cml0ZXIgaW5cbiAgUmVhZGVyLmNsb3NlIHQucmVhZGVyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxuXG4oKiogVGhlIHR5cGVzIG9mIHRoZSBbSW1wbGVtZW50YXRpb25dIGFuZCBbSW1wbGVtZW50YXRpb25zXSBtb2R1bGVzLCB3aGljaCBoYXZlXG4gICAgYSBkZXBlbmRlbmN5IGN5bGU6IFtJbXBsZW1lbnRhdGlvbl0gLT4gW0RpcmVjdF9zdHJlYW1fd3JpdGVyXSAtPlxuICAgIFtJbXBsZW1lbnRhdGlvbnNdIC0+IFtJbXBsZW1lbnRhdGlvbl0uICopXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgcmVjIEltcGxlbWVudGF0aW9uIDogc2lnXG4gIG1vZHVsZSBFeHBlcnQgOiBzaWdcbiAgICBtb2R1bGUgUmVzcG9uZGVyIDogc2lnXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIEYgOiBzaWdcbiAgICB0eXBlIChfLCBfKSByZXN1bHRfbW9kZSA9XG4gICAgICB8IEJsb2NraW5nIDogKCdhLCAnYSkgcmVzdWx0X21vZGVcbiAgICAgIHwgRGVmZXJyZWQgOiAoJ2EsICdhIERlZmVycmVkLnQpIHJlc3VsdF9tb2RlXG5cbiAgICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGwgPVxuICAgICAgfCBQaXBlIG9mXG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgICAtPiAoJ2luaXQgKiAndXBkYXRlIFBpcGUuUmVhZGVyLnQsICdpbml0KSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICd1cGRhdGUgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBEZWZlcnJlZC50KVxuXG4gICAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICAgIHwgT25lX3dheSA6XG4gICAgICAgICAgJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAnbXNnIC0+IHVuaXQpXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlIC0+IEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiB1bml0KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAgICogKCdyZXNwb25zZSwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAgICogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gIGVuZFxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGYgOiAnY29ubmVjdGlvbl9zdGF0ZSBGLnRcbiAgICA7IHNoYXBlcyA6IFNleHAudCBMYXp5LnRcbiAgICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gICAgfVxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25cblxuYW5kIEltcGxlbWVudGF0aW9ucyA6IHNpZ1xuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgICBbIGBSYWlzZVxuICAgIHwgYENvbnRpbnVlXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICAgIHwgYENhbGwgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gWyBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDb250aW51ZSBdXG4gICAgfCBgRXhwZXJ0IG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgXVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IERlc2NyaXB0aW9uLlRhYmxlLnRcbiAgICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNcbiAgICB9XG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBpbXBsZW1lbnRhdGlvbnMgPSAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbiAgbW9kdWxlIHJlYyBJbnN0YW5jZSA6IHNpZ1xuICAgIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICAgIHwgUGlwZSA6IF8gUGlwZS5SZWFkZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgICAgIHwgRGlyZWN0IDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuXG4gICAgdHlwZSAnYSB1bnBhY2tlZCA9XG4gICAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdhIGltcGxlbWVudGF0aW9uc1xuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogKFF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gICAgICA7IG11dGFibGUgc3RvcHBlZCA6IGJvb2xcbiAgICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIDogSW5mby50IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAgIChEZXNjcmlwdGlvbi50ICogJ2EgSW1wbGVtZW50YXRpb24udCkgb3B0aW9uXG4gICAgICA7IHBhY2tlZF9zZWxmIDogdFxuICAgICAgfVxuXG4gICAgYW5kIHQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG4gIGVuZFxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25zXG5cbmFuZCBEaXJlY3Rfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICBtb2R1bGUgUGVuZGluZ19yZXNwb25zZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vcm1hbCBvZiAnYVxuICAgICAgfCBFeHBlcnQgb2Ygc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vdF9zdGFydGVkIG9mICdhIFBlbmRpbmdfcmVzcG9uc2UudCBRdWV1ZS50XG4gICAgICB8IFN0YXJ0ZWRcbiAgZW5kXG5cbiAgbW9kdWxlIElkID0gRGlyZWN0X3N0cmVhbV93cml0ZXJfaWRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICA7IGluc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnRcbiAgICA7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9zdHJlYW1fd3JpdGVyLnRcbiAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgfVxuXG4gIGFuZCAnYSBncm91cF9lbnRyeSA9XG4gICAgeyBncm91cCA6ICdhIERpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLnRcbiAgICA7IGVsZW1lbnRfaW5fZ3JvdXAgOiAnYSB0IEJhZy5FbHQudFxuICAgIH1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogW2NvbXBvbmVudHNdIGlzIG9ubHkgdHJhY2tlZCBzZXBhcmF0ZWx5IGZyb20gW2NvbXBvbmVudHNfYnlfaWRdIHNvIHdlIGNhbiBpdGVyYXRlXG4gICAgICAgICAgIG92ZXIgaXRzIGVsZW1lbnRzIG1vcmUgcXVpY2tseSB0aGFuIHdlIGNvdWxkIGl0ZXJhdGUgb3ZlciB0aGUgdmFsdWVzIG9mXG4gICAgICAgICAgIFtjb21wb25lbnRzX2J5X2lkXS4gKilcbiAgICAgICAgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgIDsgY29tcG9uZW50c19ieV9pZCA6ICdhIGNvbXBvbmVudCBJZC5UYWJsZS50XG4gICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgfVxuXG4gICAgYW5kICdhIGNvbXBvbmVudCA9XG4gICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIDogJ2EgZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICB9XG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgOj0gJ2EgdFxuZW5kID1cbiAgRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuYW5kIENhY2hlZF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgIDsgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgfVxuZW5kID1cbiAgQ2FjaGVkX3N0cmVhbV93cml0ZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSB0ID0gSW1wbGVtZW50YXRpb25fdHlwZXMuT25fZXhjZXB0aW9uLnQgPVxuICB7IGNhbGxiYWNrIDogKGV4biAtPiB1bml0KSBvcHRpb24gW0BzZXhwLm9taXRfbmlsXVxuICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2VfY29ubmVjdGlvbiA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IHRydWUgfVxubGV0IGNvbnRpbnVlID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gZmFsc2UgfVxuXG5sZXQgaGFuZGxlX2V4blxuICAgICAgeyBjYWxsYmFjazsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgfVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgZXhuXG4gID1cbiAgT3B0aW9uLml0ZXIgY2FsbGJhY2sgfmY6KGZ1biBjYWxsYmFjayAtPiBjYWxsYmFjayBleG4pO1xuICBpZiBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICB0aGVuIE1vbml0b3Iuc2VuZF9leG4gY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4blxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRXhwZXJ0LlJlc3BvbmRlci50ID1cbiAgICAgIHsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSBxdWVyeV9pZCB3cml0ZXIgPSB7IHF1ZXJ5X2lkOyB3cml0ZXI7IHJlc3BvbmRlZCA9IGZhbHNlIH1cbiAgZW5kXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPSBFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICB8IFJlcGxpZWRcbiAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIEYgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSByZXN1bHRfbW9kZSA9ICgnYSwgJ2IpIEYucmVzdWx0X21vZGUgPVxuICAgIHwgQmxvY2tpbmcgOiAoJ2EsICdhKSByZXN1bHRfbW9kZVxuICAgIHwgRGVmZXJyZWQgOiAoJ2EsICdhIERlZmVycmVkLnQpIHJlc3VsdF9tb2RlXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIEYuc3RyZWFtaW5nX2ltcGwgPVxuICAgIHwgUGlwZSBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICB8IERpcmVjdCBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gJ3VwZGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBEZWZlcnJlZC50KVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEYudCA9XG4gICAgfCBPbmVfd2F5IDpcbiAgICAgICAgJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAnbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlIC0+IEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiB1bml0KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBScGMgOlxuICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXN1bHQpXG4gICAgICAgICogKCdyZXNwb25zZSwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjX2V4cGVydCA6XG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgLT4gJ3Jlc3VsdClcbiAgICAgICAgKiAoRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgU3RyZWFtaW5nX3JwYyA6XG4gICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgICAgICogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgKiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBfID0gZnVuY3Rpb25cbiAgICB8IE9uZV93YXlfZXhwZXJ0IF8gfCBPbmVfd2F5IF8gLT4gWyVtZXNzYWdlIFwib25lLXdheVwiXVxuICAgIHwgUnBjX2V4cGVydCBfIHwgUnBjIF8gLT4gWyVtZXNzYWdlIFwicnBjXCJdXG4gICAgfCBTdHJlYW1pbmdfcnBjIF8gLT4gWyVtZXNzYWdlIFwic3RyZWFtaW5nLXJwY1wiXVxuICA7O1xuXG4gIGxldCBsaWZ0IHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgT25lX3dheSAoYmluX21zZywgaW1wbCkgLT4gT25lX3dheSAoYmluX21zZywgZnVuIHN0YXRlIHN0ciAtPiBpbXBsIChmIHN0YXRlKSBzdHIpXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydCAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT4gaW1wbCAoZiBzdGF0ZSkgYnVmIH5wb3MgfmxlbilcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgKGZ1biBzdGF0ZSBxIC0+IGltcGwgKGYgc3RhdGUpIHEpLCByZXN1bHRfbW9kZSlcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgUnBjX2V4cGVydFxuICAgICAgICAoKGZ1biBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gLT4gaW1wbCAoZiBzdGF0ZSkgcmVzcCBidWYgfnBvcyB+bGVuKSwgcmVzdWx0X21vZGUpXG4gICAgfCBTdHJlYW1pbmdfcnBjIChiaW5fcSwgYmluX2ksIGJpbl91LCBpbXBsKSAtPlxuICAgICAgbGV0IGltcGwgPVxuICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgfCBQaXBlIGltcGwgLT4gUGlwZSAoZnVuIHN0YXRlIHEgLT4gaW1wbCAoZiBzdGF0ZSkgcSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPiBEaXJlY3QgKGZ1biBzdGF0ZSBxIHcgLT4gaW1wbCAoZiBzdGF0ZSkgcSB3KVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgKGJpbl9xLCBiaW5faSwgYmluX3UsIGltcGwpXG4gIDs7XG5lbmRcblxudHlwZSBub25yZWMgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICB7IHRhZyA6IFJwY190YWcudFxuICA7IHZlcnNpb24gOiBpbnRcbiAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gIDsgc2hhcGVzIDogU2V4cC50IExhenkudFxuICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxubGV0IGxpZnQgdCB+ZiA9IHsgdCB3aXRoIGYgPSBGLmxpZnQgfmYgdC5mIH1cbmxldCB1cGRhdGVfb25fZXhjZXB0aW9uIHQgfmYgPSB7IHQgd2l0aCBvbl9leGNlcHRpb24gPSBmIHQub25fZXhjZXB0aW9uIH1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbmluY2x1ZGUgUHJvdG9jb2wuUnBjX2Vycm9yXG5pbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFByb3RvY29sLlJwY19lcnJvcilcblxuZXhjZXB0aW9uIFJwYyBvZiB0ICogSW5mby50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCByYWlzZSB0IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gPSByYWlzZSAoUnBjICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKSlcblxubGV0IHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBDb25uZWN0aW9uX2Nsb3NlZCAtPlxuICAgIFslc2V4cCBgQ29ubmVjdGlvbl9jbG9zZWQgKGdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiAoKSA6IFNleHAudCldXG4gIHwgQmluX2lvX2V4biBfXG4gIHwgV3JpdGVfZXJyb3IgX1xuICB8IFVuY2F1Z2h0X2V4biBfXG4gIHwgVW5pbXBsZW1lbnRlZF9ycGMgX1xuICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBzZXhwX29mX3QgdFxuOztcblxuKCogaXQgd291bGQgbWFrZSBzZW5zZSB0byBqdXN0IHRha2UgYSBbQ29ubmVjdGlvbi50XSwgYnV0IHdlIHRha2UgaXRzIHBpZWNlcyBpbnN0ZWFkIHRvXG4gICBhdm9pZCBhIGRlcGVuZGVuY3kgY3ljbGUgKilcbmxldCB0b19lcnJvclxuICAgICAgdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IERlc2NyaXB0aW9uLm5hbWUgPSBycGNfbmFtZTsgdmVyc2lvbiA9IHJwY192ZXJzaW9uIH1cbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gID1cbiAgbGV0IHJwY19lcnJvciA9XG4gICAgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICBsZXQgY2xvc2VfcmVhc29uID1cbiAgICAgICAgKCogVXN1YWxseSAoYWx3YXlzPykgaGVyZSB3ZSB3aWxsIGhhdmUgdGhlIGRlZmVycmVkIGFscmVhZHkgZnVsbFxuICAgICAgICAgICBiZWNhdXNlIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yIG1lYW5zIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHlcbiAgICAgICAgICAgY2xvc2VkICopXG4gICAgICAgIERlZmVycmVkLnBlZWsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICBpblxuICAgICAgWyVzZXhwIChjbG9zZV9yZWFzb24gOiBJbmZvLnQgb3B0aW9uKV0pXG4gIGluXG4gIEVycm9yLmNyZWF0ZV9zXG4gICAgWyVzZXhwXG4gICAgICB7IHJwY19lcnJvciA6IFNleHAudFxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IHJwY19uYW1lIDogc3RyaW5nXG4gICAgICA7IHJwY192ZXJzaW9uIDogaW50XG4gICAgICB9XVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSB0ID0gKCdhLCBScGNfZXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG50eXBlIGxvY2F0ZWRfZXJyb3IgPVxuICB7IGxvY2F0aW9uIDogc3RyaW5nXG4gIDsgZXhuIDogRXhuLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgYmluX2lvX2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5CaW5faW9fZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IHRyeV93aXRoID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiA/cnVuIH5sb2NhdGlvbiBmID1cbiAgbGV0IHggPVxuICAgIGxldCByZXN0ID1cbiAgICAgIG1hdGNoIG9uX2JhY2tncm91bmRfZXhjZXB0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTG9nXG4gICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICBpblxuICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgIH5yZXN0XG4gICAgICB+cnVuOihPcHRpb24udmFsdWUgcnVuIH5kZWZhdWx0OmBTY2hlZHVsZSlcbiAgICAgIGZcbiAgaW5cbiAgbGV0IGpvaW4gPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiB4XG4gICAgfCBFcnJvciBleG4gLT4gdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG5cbiAgaW5cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayB4IHdpdGhcbiAgfCBOb25lIC0+IHggPj58IGpvaW5cbiAgfCBTb21lIHggLT4gcmV0dXJuIChqb2luIHgpXG47O1xuXG5sZXQgb3JfZXJyb3IgfnJwY19kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkID1cbiAgUmVzdWx0Lm1hcF9lcnJvclxuICAgIH5mOlxuICAgICAgKFJwY19lcnJvci50b19lcnJvclxuICAgICAgICAgfnJwY19kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQpXG47O1xuIiwib3BlbiBDb3JlXG5cbigqIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGJpbi1pbydpbmcgb3V0IG9mIGEgQmlnc3RyaW5nLnQgKilcbmxldCBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgKGJpbl9yZWFkZXJfdCA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpXG4gICAgICA/YWRkX2xlblxuICAgICAgYnVmXG4gICAgICB+cG9zX3JlZlxuICAgICAgfihsZW4gOiBOYXQwLnQpXG4gICAgICB+bG9jYXRpb25cbiAgPVxuICB0cnlcbiAgICBsZXQgaW5pdF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBkYXRhID0gYmluX3JlYWRlcl90LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGFkZF9sZW4gPVxuICAgICAgbWF0Y2ggYWRkX2xlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gMFxuICAgICAgfCBTb21lIGFkZF9sZW4gLT4gYWRkX2xlbiBkYXRhXG4gICAgaW5cbiAgICBpZiAhcG9zX3JlZiAtIGluaXRfcG9zICsgYWRkX2xlbiA8PiAobGVuIDo+IGludClcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJtZXNzYWdlIGxlbmd0aCAoJWQpIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgbGVuZ3RoICglZClcIlxuICAgICAgICAoIXBvc19yZWYgLSBpbml0X3BvcylcbiAgICAgICAgKGxlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICAgICgpO1xuICAgIE9rIGRhdGFcbiAgd2l0aFxuICB8IGUgLT4gUnBjX3Jlc3VsdC5iaW5faW9fZXhuIH5sb2NhdGlvbiBlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbigqIENvbW11dGUgUmVzdWx0IGFuZCBEZWZlcnJlZC4gKilcbmxldCBkZWZlcl9yZXN1bHQgOiAnYSAnYi4gKCdhIERlZmVycmVkLnQsICdiKSBSZXN1bHQudCAtPiAoJ2EsICdiKSBSZXN1bHQudCBEZWZlcnJlZC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IHJldHVybiBlcnJcbiAgICB8IE9rIGQgLT5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0JW1hcCB4ID0gZCBpblxuICAgICAgICAgT2sgeFxuICAgICAgIHwgU29tZSBkIC0+IHJldHVybiAoT2sgZCkpXG47O1xuXG5tb2R1bGUgRGVmZXJyZWRfaW1tZWRpYXRlID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRGVmZXJyZWQudFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGJpbmQgZCB+ZiA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgfCBOb25lIC0+IGQgPj49IGZcbiAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIGQgfmYgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkID4+fCBmXG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4gKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXJcblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwYyA9XG4gIFsgYFJhaXNlXG4gIHwgYENvbnRpbnVlXG4gIHwgYENsb3NlX2Nvbm5lY3Rpb25cbiAgfCBgQ2FsbCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gWyBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDb250aW51ZSBdXG4gIF1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydCA9XG4gIFsgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNcbiAgfCBgRXhwZXJ0IG9mXG4gICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAtPiBSZXNwb25kZXIudFxuICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgIC0+IHBvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9ucy50ID1cbiAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IERlc2NyaXB0aW9uLlRhYmxlLnRcbiAgOyBvbl91bmtub3duX3JwYyA6ICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0XG4gIH1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBpbXBsZW1lbnRhdGlvbnMgPSAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbmxldCBkZXNjcmlwdGlvbnMgdCA9IEhhc2h0Ymwua2V5cyB0LmltcGxlbWVudGF0aW9uc1xuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPSBJbnN0YW5jZS5zdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgIHwgUGlwZSA6IF8gUGlwZS5SZWFkZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgICB8IERpcmVjdCA6XG4gICAgICAgIChfIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRbQHNleHAub3BhcXVlXSlcbiAgICAgICAgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2VzID0gKFAuUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHVucGFja2VkID0gJ2EgSW5zdGFuY2UudW5wYWNrZWQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zIDogKCdhIGltcGxlbWVudGF0aW9uc1tAc2V4cC5vcGFxdWVdKVxuICAgIDsgd3JpdGVyIDogV3JpdGVyLnRcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA6IHN0cmVhbWluZ19yZXNwb25zZXNcbiAgICA7IG11dGFibGUgc3RvcHBlZCA6IGJvb2xcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGUgOiAnYVxuICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIDogSW5mby50IERlZmVycmVkLnRcbiAgICA7IG11dGFibGUgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAoJ2EgSW1wbGVtZW50YXRpb24udFtAc2V4cC5vcGFxdWVdKSkgb3B0aW9uXG4gICAgKCogW3BhY2tlZF9zZWxmXSBpcyBoZXJlIHNvIHdlIGNhbiBlc3NlbnRpYWxseSBwYWNrIGFuIHVucGFja2VkIGluc3RhbmNlIHdpdGhvdXQgZG9pbmdcbiAgICAgICBhbnkgYWRkaXRpb25hbCBhbGxvY2F0aW9uLiAqKVxuICAgIDsgcGFja2VkX3NlbGYgOiAodFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBhbmQgdCA9IEluc3RhbmNlLnQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFslc2V4cF9vZjogXyB1bnBhY2tlZF0gdFxuXG4gIGxldCBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgc2V4cCA9XG4gICAgbGV0IGRhdGEgOiBfIFAuTWVzc2FnZS50ID0gUmVzcG9uc2UgeyBpZDsgZGF0YSA9IEVycm9yIChXcml0ZV9lcnJvciBzZXhwKSB9IGluXG4gICAgbWF0Y2ggV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGRhdGEgd2l0aFxuICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICBcIkZhaWxlZCB0byBzZW5kIHdyaXRlIGVycm9yIHRvIGNsaWVudFwiXG4gICAgICAgICwgeyBlcnJvciA9IChzZXhwIDogU2V4cC50KTsgcmVhc29uID0gKHIgOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSB9XVxuICA7O1xuXG4gIGxldCBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZCAocmVzdWx0IDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBTZW50ICgpIC0+ICgpXG4gICAgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHNlbmRfd3JpdGVfZXJyb3IgdCBpZCAoWyVzZXhwX29mOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XSByKVxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlIHQgfmlkIGJpbl93cml0ZXIgeCA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW4gV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgYmluX3dyaXRlciB4IHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmlkIGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfZGF0YSBkYXRhID1cbiAgICBsZXQgYmluX3dyaXRlciA9XG4gICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9kYXRhKVxuICAgIGluXG4gICAgd3JpdGVfbWVzc2FnZSB0IH5pZCBiaW5fd3JpdGVyIChSZXNwb25zZSB7IGlkOyBkYXRhIH0pXG4gIDs7XG5cbiAgbW9kdWxlIENhY2hlZF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gICAgdHlwZSBpbnN0YW5jZVxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9zdHJlYW1fd3JpdGVyLnRcblxuICAgIHZhbCBjcmVhdGUgOiBpZDpQLlF1ZXJ5X2lkLnQgLT4gYmluX3dyaXRlcjonYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciAtPiAnYSB0XG4gICAgdmFsIHdyaXRlIDogJ2EgdCAtPiBpbnN0YW5jZSAtPiBQLlF1ZXJ5X2lkLnQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgdmFsIHdyaXRlX2V4cGVydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gaW5zdGFuY2VcbiAgICAgIC0+IFAuUXVlcnlfaWQudFxuICAgICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG5cbiAgICB2YWwgd3JpdGVfc3RyaW5nIDogJ2EgdCAtPiBpbnN0YW5jZSAtPiBQLlF1ZXJ5X2lkLnQgLT4gc3RyaW5nIC0+IHVuaXRcbiAgZW5kXG4gIHdpdGggdHlwZSBpbnN0YW5jZSA6PSB0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgSW1wbGVtZW50YXRpb25fdHlwZXMuQ2FjaGVkX3N0cmVhbV93cml0ZXIudCA9XG4gICAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgICA7ICgqIExlbmd0aCBvZiB0aGUgdXNlciBkYXRhIHBhcnQuIFdlIHNldCB0aGlzIGZpZWxkIHdoZW4gc2VuZGluZyBhIG1lc3NhZ2UuIFRoaXNcbiAgICAgICAgICAgcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCBpbW1lZGlhdGVseSAod2hpY2ggaXMgdGhlXG4gICAgICAgICAgIG9ubHkgYWNjZXB0YWJsZSBzZW1hbnRpY3MgZm9yIHRoZSB0cmFuc3BvcnQgbGF5ZXIgYW55d2F5LCBhcyBpdCBkb2Vzbid0IGtub3cgaWZcbiAgICAgICAgICAgdGhlIHZhbHVlIGlzIG11dGFibGUgb3Igbm90KS5cblxuICAgICAgICAgICBbZGF0YV9sZW5dIGlzIHBhc3NlZCB0byBiaW4tcHJvdCB3cml0ZXJzIGJ5IG11dGF0aW5nIFtkYXRhX2xlbl0gaW5zdGVhZCBvZiBieVxuICAgICAgICAgICBwYXNzaW5nIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gYXZvaWQgc29tZSBhbGxvY2F0aW9uLlxuICAgICAgICAqKVxuICAgICAgICBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgICA7IGJpbl93cml0ZXIgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgfVxuXG5cbiAgICB0eXBlIHZvaWQgPSBWb2lkXG5cbiAgICBsZXQgYmluX3NpemVfdm9pZCBWb2lkID0gMFxuICAgIGxldCBiaW5fd3JpdGVfdm9pZCBfYnVmIH5wb3MgVm9pZCA9IHBvc1xuXG4gICAgdHlwZSB2b2lkX21lc3NhZ2UgPSB2b2lkIFAuTWVzc2FnZS5uZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3dyaXRlXVxuXG4gICAgdHlwZSB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhID0gdm9pZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLm5lZWRzX2xlbmd0aFxuICAgIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgICgqIFRoaXMgaXMgbm90IHJlLWVudHJhbnQgYnV0IEFzeW5jIGNvZGUgYWx3YXlzIHJ1bnMgb24gb25lIHRocmVhZCBhdCBhIHRpbWUgKilcbiAgICBsZXQgYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAzMlxuXG4gICAgbGV0IGNhY2hlX2Jpbl9wcm90dGVkIChiaW5fd3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlci53cml0ZSBidWZmZXIgfnBvczowIHggaW5cbiAgICAgIEJpZ3N0cmluZy5Ub19zdHJpbmcuc3ViIGJ1ZmZlciB+cG9zOjAgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIGEpIH5pZCB+YmluX3dyaXRlciA6IGEgdCA9XG4gICAgICBsZXQgaGVhZGVyX3ByZWZpeCA9XG4gICAgICAgIGNhY2hlX2Jpbl9wcm90dGVkIGJpbl93cml0ZXJfdm9pZF9tZXNzYWdlIChSZXNwb25zZSB7IGlkOyBkYXRhID0gT2sgVm9pZCB9KVxuICAgICAgaW5cbiAgICAgIHsgaGVhZGVyX3ByZWZpeDsgYmluX3dyaXRlcjsgZGF0YV9sZW4gPSBOYXQwLm9mX2ludF9leG4gMCB9XG4gICAgOztcblxuICAgICgqIFRoaXMgcGFydCBvZiB0aGUgbWVzc2FnZSBoZWFkZXIgaXMgYSBjb25zdGFudCwgbWFrZSBpdCBhIGxpdGVyYWwgdG8gbWFrZSB0aGVcbiAgICAgICB3cml0aW5nIGNvZGUgc2xpZ2h0bHkgZmFzdGVyLiAqKVxuICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuID0gNFxuICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIgPSAweDhhNzlsXG5cbiAgICBsZXQldGVzdF91bml0IFwic3RyZWFtX3Jlc3BvbnNlXyogY29uc3RhbnRzIGFyZSBjb3JyZWN0XCIgPVxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGJpbl93cml0ZXJfdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YS53cml0ZVxuICAgICAgICAgIGJ1ZmZlclxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIChgT2sgVm9pZCA6IHZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEpXG4gICAgICBpblxuICAgICAgYXNzZXJ0IChsZW4gPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZ2V0X2ludDMyX3RfbGUgYnVmZmVyIH5wb3M6MFxuICAgICAgICA9IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMilcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIHN0ciA9XG4gICAgICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgICAoKiBWZXJ5IGxvdy1sZXZlbCBiaW5fcHJvdCBzdHVmZi4uLiAqKVxuICAgICAgQmluX3Byb3QuQ29tbW9uLmFzc2VydF9wb3MgcG9zO1xuICAgICAgbGV0IG5leHQgPSBwb3MgKyBzdHJfbGVuIGluXG4gICAgICBCaW5fcHJvdC5Db21tb24uY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIEJpbl9wcm90LkNvbW1vbi51bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOnBvcyBidWYgfmxlbjpzdHJfbGVuO1xuICAgICAgbmV4dFxuICAgIDs7XG5cbiAgICAoKiBUaGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIDMgdmFyaWFudHMgZXhwb3NlZCBieSB0aGlzIG1vZHVsZS4gVGhleVxuICAgICAgIHNlcmlhbGl6ZSBhIFtSZXNwb25zZSB7IGlkOyBkYXRhID0gT2sgKGBPayBkYXRhX2xlbikgfV0gdmFsdWUsIHRha2luZyBjYXJlIG9mXG4gICAgICAgd3JpdGluZyB0aGUgW05hdDAudF0gbGVuZ3RoIHByZWZpeCB3aGVyZSBhcHByb3JpYXRlLlxuXG4gICAgICAgQmVhciBpbiBtaW5kIHRoYXQgdGhlcmUgYXJlIHR3byBsZXZlbHMgb2YgbGVuZ3RoIHByZWZpeGVzIGZvciBzdHJlYW0gcmVzcG9uc2UgZGF0YVxuICAgICAgIG1lc3NhZ2U6IG9uZSBmb3IgdGhlIHVzZXIgZGF0YSAodW5kZXIgdGhlIGBPaywgYmVmb3JlIHRoZSBhY3R1YWwgZGF0YSksIGFuZCBvbmUgZm9yXG4gICAgICAgdGhlIHJlc3BvbnNlIGRhdGEgKHVuZGVyIHRoZSAuZGF0YSBmaWVsZCwgYmVmb3JlIHRoZSBPaykuICopXG4gICAgbGV0IGJpbl9zaXplX25hdDBfaGVhZGVyIHsgaGVhZGVyX3ByZWZpeDsgZGF0YV9sZW47IF8gfSA9XG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICBpblxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBTdHJpbmcubGVuZ3RoIGhlYWRlcl9wcmVmaXhcbiAgICAgICsgTmF0MC5iaW5fc2l6ZV90IChOYXQwLm9mX2ludF9leG4gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuKVxuICAgICAgKyBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHsgaGVhZGVyX3ByZWZpeDsgZGF0YV9sZW47IF8gfSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3MgaGVhZGVyX3ByZWZpeCBpblxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW5cbiAgICAgICAgKyBOYXQwLmJpbl9zaXplX3QgZGF0YV9sZW5cbiAgICAgICAgKyAoZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChOYXQwLm9mX2ludF9leG4gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuKSBpblxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBCaW5fcHJvdC5Db21tb24uY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIEJpZ3N0cmluZy51bnNhZmVfc2V0X2ludDMyX3RfbGUgYnVmIH5wb3Mgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyO1xuICAgICAgTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvczpuZXh0IGRhdGFfbGVuXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX25hdDBfaGVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9uYXQwX2hlYWRlcjsgd3JpdGUgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NpemVfbWVzc2FnZSAodCwgXykgPSBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuXG4gICAgbGV0IGJpbl93cml0ZV9tZXNzYWdlIGJ1ZiB+cG9zICh0LCBkYXRhKSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHQgaW5cbiAgICAgIHQuYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyBkYXRhXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX21lc3NhZ2U7IHdyaXRlID0gYmluX3dyaXRlX21lc3NhZ2UgfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NpemVfbWVzc2FnZV9hc19zdHJpbmcgKHQsIF8pID1cbiAgICAgIGJpbl9zaXplX25hdDBfaGVhZGVyIHQgKyAodC5kYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgYnVmIH5wb3MgKHQsIHN0cikgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHJcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmcgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyB9XG4gICAgOztcblxuICAgICgqIFt3cml0ZV0gYW5kIFt3cml0ZV9zdHJpbmddIGJvdGggYWxsb2NhdGUgMyB3b3JkcyBmb3IgdGhlIHR1cGxlcy4gW3dyaXRlX2V4cGVydF1cbiAgICAgICBkb2VzIG5vdCBhbGxvY2F0ZS4gKilcbiAgICBsZXQgd3JpdGUgdCAoVCBpbnN0YW5jZSkgaWQgZGF0YSA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAodC5iaW5fd3JpdGVyLnNpemUgZGF0YSk7XG4gICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX21lc3NhZ2UgKHQsIGRhdGEpXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9zdHJpbmcgdCAoVCBpbnN0YW5jZSkgaWQgc3RyID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIChTdHJpbmcubGVuZ3RoIHN0cik7XG4gICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBzdHIpXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9leHBlcnQgdCAoVCBpbnN0YW5jZSkgaWQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gbGVuO1xuICAgICAgd3JpdGVfbWVzc2FnZV9leHBlcnQgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbmF0MF9oZWFkZXIgdCB+YnVmIH5wb3MgfmxlblxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcbiAgICBtb2R1bGUgU3RhdGUgPSBULlN0YXRlXG4gICAgbW9kdWxlIElkID0gVC5JZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID1cbiAgICAgIHsgaWQgOiBJZC50XG4gICAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgICA7IGNsb3NlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGluc3RhbmNlIDogSW5zdGFuY2UudFxuICAgICAgOyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX3N0cmVhbV93cml0ZXIudFxuICAgICAgOyBncm91cHMgOiAnYSBncm91cF9lbnRyeSBCYWcudFxuICAgICAgfVxuXG4gICAgYW5kICdhIGdyb3VwX2VudHJ5ID0gJ2EgVC5ncm91cF9lbnRyeSA9XG4gICAgICB7IGdyb3VwIDogJ2EgVC5Hcm91cC50XG4gICAgICA7IGVsZW1lbnRfaW5fZ3JvdXAgOiAnYSB0IEJhZy5FbHQudFxuICAgICAgfVxuXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgbGV0IGNsb3NlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VkXG5cbiAgICBsZXQgZmx1c2hlZCB0ID1cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICBUcmFuc3BvcnQuV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyIHQgPSB0LnN0cmVhbV93cml0ZXIuYmluX3dyaXRlclxuXG4gICAgbGV0IHdyaXRlX2VvZiB7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgcXVlcnlfaWQ7IF8gfSA9XG4gICAgICB3cml0ZV9yZXNwb25zZSBpbnN0YW5jZSBxdWVyeV9pZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl93cml0ZXJfbmF0MF90IChPayBgRW9mKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZSB7IGluc3RhbmNlOyBzdHJlYW1fd3JpdGVyOyBxdWVyeV9pZDsgXyB9IHggPVxuICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIud3JpdGUgc3RyZWFtX3dyaXRlciBpbnN0YW5jZSBxdWVyeV9pZCB4XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlX3N0cmluZyB7IGluc3RhbmNlOyBzdHJlYW1fd3JpdGVyOyBxdWVyeV9pZDsgXyB9IHggPVxuICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIud3JpdGVfc3RyaW5nIHN0cmVhbV93cml0ZXIgaW5zdGFuY2UgcXVlcnlfaWQgeFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgeyBpbnN0YW5jZTsgc3RyZWFtX3dyaXRlcjsgcXVlcnlfaWQ7IF8gfSB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICBDYWNoZWRfc3RyZWFtX3dyaXRlci53cml0ZV9leHBlcnQgc3RyZWFtX3dyaXRlciBpbnN0YW5jZSBxdWVyeV9pZCB+YnVmIH5wb3MgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQgPVxuICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgdC5jbG9zZWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgICAgICBsZXQgZ3JvdXBzID0gdC5ncm91cHMgaW5cbiAgICAgICAgaWYgbm90IChCYWcuaXNfZW1wdHkgZ3JvdXBzKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlLlZlcnlfbG93X3ByaW9yaXR5X3dvcmsuZW5xdWV1ZSB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBCYWcucmVtb3ZlX29uZSBncm91cHMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IEZpbmlzaGVkXG4gICAgICAgICAgICB8IFNvbWUgeyBncm91cDsgZWxlbWVudF9pbl9ncm91cCB9IC0+XG4gICAgICAgICAgICAgIEJhZy5yZW1vdmUgZ3JvdXAuY29tcG9uZW50cyBlbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSBncm91cC5jb21wb25lbnRzX2J5X2lkIHQuaWQ7XG4gICAgICAgICAgICAgIE5vdF9maW5pc2hlZCk7XG4gICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICB8IE5vdF9zdGFydGVkIF8gLT4gKClcbiAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX2VvZiB0KVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2UgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9IGFzIHQpID1cbiAgICAgIGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0O1xuICAgICAgSGFzaHRibC5yZW1vdmUgaW5zdGFuY2Uub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5X2lkXG4gICAgOztcblxuICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPiBRdWV1ZS5lbnF1ZXVlIHEgKE5vcm1hbCB4KVxuICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2UgdCB4KTtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgeCA9XG4gICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCB3aXRoXG4gICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICA7O1xuXG4gICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgICB0aGVuIGBDbG9zZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHEgKEV4cGVydCAoQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmIH5wb3MgfmxlbikpXG4gICAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5idWYgfnBvcyB+bGVuKTtcbiAgICAgICAgICBgT2spXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBzdGFydCB0ID1cbiAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgfCBTdGFydGVkIC0+IGZhaWx3aXRoIFwiYXR0ZW1wdGVkIHRvIHN0YXJ0IHdyaXRlciB3aGljaCB3YXMgYWxyZWFkeSBzdGFydGVkXCJcbiAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICB0LnN0YXRlIDwtIFN0YXJ0ZWQ7XG4gICAgICAgIFF1ZXVlLml0ZXIgcSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vcm1hbCB4IC0+IHdyaXRlX21lc3NhZ2UgdCB4XG4gICAgICAgICAgfCBFeHBlcnQgeCAtPiB3cml0ZV9tZXNzYWdlX3N0cmluZyB0IHgpO1xuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWQgdGhlbiB3cml0ZV9lb2YgdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb25cbiAgICAgICAgKHJlc3VsdCA6IChfLCBScGNfZXJyb3IudCkgUmVzdWx0LnQpXG4gICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciAoVW5jYXVnaHRfZXhuIHNleHApIC0+XG4gICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgfCBFcnJvciBfIHwgT2sgXyAtPiAoKVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGxldCBpZCA9IHF1ZXJ5LmlkIGluXG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5IChiaW5fcXVlcnlfcmVhZGVyLCBmKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgbWVzc2FnZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcXVlcnlfY29udGVudHMgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gU3RvcCBlcnJcbiAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHE7XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBjb21wdXRhdGlvblwiKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZSkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXlfZXhwZXJ0IGYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW47XG4gICAgICAgICByZWFkX2J1ZmZlcl9wb3NfcmVmIDo9ICFyZWFkX2J1ZmZlcl9wb3NfcmVmICsgbGVuO1xuICAgICAgICAgQ29udGludWVcbiAgICAgICB3aXRoXG4gICAgICAgfCBleG4gLT5cbiAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgdGhlblxuICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGMgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9yZXNwb25zZV93cml0ZXIsIGYsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIChtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICBxdWVyeV9jb250ZW50c1xuICAgICAgICAgICAgPj58fiBmIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgfD4gd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAoKiBJbiB0aGUgW0RlZmVycmVkXSBicmFuY2ggd2UgdXNlIFtNb25pdG9yLnRyeV93aXRoXSwgd2hpY2ggaW5jbHVkZXNcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgd2hlbiBpdCBjYXRjaGVzIGFuIGV4Y2VwdGlvbi4gRm9yIGNvbnNpc3RlbmN5LCB3ZSBhbHNvIGdldFxuICAgICAgICAgICAgICAgYmFja3RyYWNlcyBoZXJlLiAqKVxuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgICAgIGxldCBzZXhwID1cbiAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgeyBsb2NhdGlvbiA9IFwic2VydmVyLXNpZGUgYmxvY2tpbmcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAgICAgICA7IGV4biA6IGV4blxuICAgICAgICAgICAgICAgIDsgYmFja3RyYWNlIDogQmFja3RyYWNlLnRcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciAoRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gc2V4cCkpO1xuICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuKVxuICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5EZWZlcnJlZCAtPlxuICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAoKiBXZSBnZW5lcmFsbHkgdHJ5IHRvIHdyaXRlIGEgcmVzcG9uc2UgYmVmb3JlIGhhbmRsaW5nIFtvbl9leGNlcHRpb25dIHNvIGlmIHdlXG4gICAgICAgICAgICAgIGFyZSBjbG9zaW5nIHRoZSBjb25uZWN0aW9uIHdlIHN0aWxsIGFjdHVhbGx5IHNlbmQgdGhlIHJlc3BvbnNlIGJhY2suIFdoZW4gd2VcbiAgICAgICAgICAgICAgcGFzcyBbb25fZXhjZXB0aW9uLmNhbGxiYWNrXSBoZXJlLCB3ZSBhcmUgbWFraW5nIGl0IHBvc3NpYmxlIGZvciByYWlzZWRcbiAgICAgICAgICAgICAgZXhjZXB0aW9ucyBub3QgdG8gYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBjbGllbnQgKGUuZy4gaWYgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgICAgIHJhaXNlcyBib3RoIGFzeW5jaHJvbm91c2x5IGFuZCBzeW5jaHJvbm91c2x5KS4gVGhpcyB3b3VsZCBiZSBoYXJkIHRvIGhhbmRsZVxuICAgICAgICAgICAgICBpbiBhIG1vcmUgcHJpbmNpcGxlZCB3YXkuICopXG4gICAgICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGRlZmVyX3Jlc3VsdCAocXVlcnlfY29udGVudHMgPj58fiBmIHQuY29ubmVjdGlvbl9zdGF0ZSkpXG4gICAgICAgICBpblxuICAgICAgICAgKCogSW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIHJldHVybnMgYSB2YWx1ZSBpbW1lZGlhdGVseSwgd2Ugd2lsbFxuICAgICAgICAgICAgd3JpdGUgdGhlIHJlc3BvbnNlIGltbWVkaWF0ZWx5IGFzIHdlbGwgKHRoaXMgaXMgYWxzbyB3aHkgdGhlIGFib3ZlIFt0cnlfd2l0aF1cbiAgICAgICAgICAgIGhhcyBbfnJ1bjpgTm93XSkuICBUaGlzIGNhbiBiZSBhIGJpZyBwZXJmb3JtYW5jZSB3aW4gZm9yIHNlcnZlcnMgdGhhdCBnZXQgbWFueVxuICAgICAgICAgICAgcXVlcmllcyBpbiBhIHNpbmdsZSBBc3luYyBjeWNsZS4gKilcbiAgICAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgPj4+IGZ1biBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciBkYXRhO1xuICAgICAgICAgICAgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uIGRhdGEgb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKTtcbiAgICAgIENvbnRpbnVlXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlJwY19leHBlcnQgKGYsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgbGV0IHJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXIuY3JlYXRlIHF1ZXJ5LmlkIHQud3JpdGVyIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgICgqIFdlIG5lZWQgdGhlIFtNb25pdG9yLnRyeV93aXRoXSBldmVuIGZvciB0aGUgYmxvY2tpbmcgbW9kZSBhcyB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgbWlnaHQgcmV0dXJuIFtEZWxheWVkX3JlcG9uc2VdLCBzbyB3ZSBkb24ndCBib3RoZXIgb3B0aW1pemluZyB0aGUgYmxvY2tpbmdcbiAgICAgICAgICAgbW9kZS4gKilcbiAgICAgICAgbGV0IHJlc3QgPVxuICAgICAgICAgIG1hdGNoIG9uX2V4Y2VwdGlvbi5jYWxsYmFjayB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBgTG9nXG4gICAgICAgICAgfCBTb21lIGNhbGxiYWNrIC0+IGBDYWxsIGNhbGxiYWNrXG4gICAgICAgIGluXG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGggfnJlc3QgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVzcG9uZGVyIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlblxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcmVzdWx0X21vZGUgd2l0aFxuICAgICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5EZWZlcnJlZCAtPiByZXN1bHRcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT4gRGVmZXJyZWQucmV0dXJuIHJlc3VsdClcbiAgICAgIGluXG4gICAgICBsZXQgaGFuZGxlX2V4biB+aXNfdW5jYXVnaHRfZXhuIGV4biA9XG4gICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuIGV4biB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICAgIHRoZW4gcmVzdWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfdW5pdCByZXN1bHQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgaXNfdW5jYXVnaHRfZXhuXG4gICAgICAgIHRoZW4gT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICBsZXQgY2hlY2tfcmVzcG9uZGVkICgpID1cbiAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBoYW5kbGVfZXhuXG4gICAgICAgICAgICB+aXNfdW5jYXVnaHRfZXhuOmZhbHNlXG4gICAgICAgICAgICAoRmFpbHVyZSBcIkV4cGVydCBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IHJlcGx5XCIpXG4gICAgICBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICBsZXQgb3BlbiBEZWZlcnJlZF9pbW1lZGlhdGUuTGV0X3N5bnRheCBpblxuICAgICAgICBtYXRjaCVtYXAgZCB3aXRoXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgIHwgUmVwbGllZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICB8IERlbGF5ZWRfcmVzcG9uc2UgZCAtPiBkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGRcbiAgICAgICAgICB0aGVuIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgdXBvbiBkIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgICAgIHw+IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIHw+IG9rX2V4bik7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgfCBFcnJvciBleG4gLT4gaGFuZGxlX2V4biB+aXNfdW5jYXVnaHRfZXhuOnRydWUgZXhuXG4gICAgICBpblxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBXYWl0XG4gICAgICAgICAgIChsZXQlbWFwIHIgPSBkIGluXG4gICAgICAgICAgICBva19leG5cbiAgICAgICAgICAgICAgKFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICAgICByKSlcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+XG4gICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgICAgfCBFcnJvciBfIC0+IFN0b3AgcmVzdWx0KSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuU3RyZWFtaW5nX3JwY1xuICAgICAgICAoYmluX3F1ZXJ5X3JlYWRlciwgYmluX2luaXRfd3JpdGVyLCBiaW5fdXBkYXRlX3dyaXRlciwgaW1wbCkgLT5cbiAgICAgIGxldCBzdHJlYW1fcXVlcnkgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIFAuU3RyZWFtX3F1ZXJ5LmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgc3RyZWFtX3F1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgQWJvcnQgLT4gMFxuICAgICAgICAgICAgfCBgUXVlcnkgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzdHJlYW1fcXVlcnkgd2l0aFxuICAgICAgIHwgRXJyb3IgX2VyciAtPiAoKVxuICAgICAgIHwgT2sgYEFib3J0IC0+XG4gICAgICAgICAoKiBOb3RlIHRoYXQgdGhlcmUncyBzb21lIGRlbGF5IGJldHdlZW4gd2hlbiB3ZSByZWNlaXZlIGEgcGlwZSBSUEMgcXVlcnkgYW5kXG4gICAgICAgICAgICB3aGVuIHdlIHB1dCBzb21ldGhpbmcgaW4gW29wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc10gKHdlIHdhaXQgZm9yXG4gICAgICAgICAgICBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdG8gcmV0dXJuKS4gRHVyaW5nIHRoaXMgdGltZSwgYW4gYWJvcnQgbWVzc2FnZSB3b3VsZFxuICAgICAgICAgICAganVzdCBiZSBpZ25vcmVkLiBUaGUgZGlzcGF0Y2hlciBjYW4ndCBhYm9ydCB0aGUgcXVlcnkgd2hpbGUgdGhpcyBpc1xuICAgICAgICAgICAgaGFwcGVuaW5nLCB0aG91Z2gsIHNpbmNlIHRoZSBpbnRlcmZhY2UgZG9lc24ndCBleHBvc2UgdGhlIElEIHJlcXVpcmVkIHRvXG4gICAgICAgICAgICBhYm9ydCB0aGUgcXVlcnkgdW50aWwgYWZ0ZXIgYSByZXNwb25zZSBoYXMgYmVlbiByZXR1cm5lZC4gKilcbiAgICAgICAgIE9wdGlvbi5pdGVyIChIYXNodGJsLmZpbmQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnkuaWQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IFBpcGUgcGlwZSAtPiBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICAgICAgICAgICB8IERpcmVjdCB3IC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHcpXG4gICAgICAgfCBPayAoYFF1ZXJ5IGxlbikgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInN0cmVhbWluZ19ycGMgc2VydmVyLXNpZGUgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHN0cmVhbV93cml0ZXIgPVxuICAgICAgICAgICBDYWNoZWRfc3RyZWFtX3dyaXRlci5jcmVhdGUgfmlkIH5iaW5fd3JpdGVyOmJpbl91cGRhdGVfd3JpdGVyXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGltcGxfd2l0aF9zdGF0ZSA9XG4gICAgICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICAgICB8IFBpcGUgZiAtPiBgUGlwZSBmXG4gICAgICAgICAgIHwgRGlyZWN0IGYgLT5cbiAgICAgICAgICAgICBsZXQgd3JpdGVyIDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50ID1cbiAgICAgICAgICAgICAgIHsgaWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5JZC5jcmVhdGUgKClcbiAgICAgICAgICAgICAgIDsgc3RhdGUgPSBOb3Rfc3RhcnRlZCAoUXVldWUuY3JlYXRlICgpKVxuICAgICAgICAgICAgICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICAgICAgICAgOyBpbnN0YW5jZSA9IHQucGFja2VkX3NlbGZcbiAgICAgICAgICAgICAgIDsgcXVlcnlfaWQgPSBpZFxuICAgICAgICAgICAgICAgOyBncm91cHMgPSBCYWcuY3JlYXRlICgpXG4gICAgICAgICAgICAgICA7IHN0cmVhbV93cml0ZXJcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6cXVlcnkuaWQgfmRhdGE6KERpcmVjdCB3cml0ZXIpO1xuICAgICAgICAgICAgIGBEaXJlY3QgKGYsIHdyaXRlcilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgcnVuX2ltcGwgaW1wbCBzcGxpdF9vayBoYW5kbGVfb2sgPVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gZGVmZXJfcmVzdWx0IChkYXRhID4+fH4gaW1wbCkpXG4gICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICAgfCBFcnJvciAoVW5jYXVnaHRfZXhuIHNleHAgYXMgZXJyKSAtPlxuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpO1xuICAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuXG4gICAgICAgICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICAgICAgIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKVxuICAgICAgICAgICB8IE9rIChFcnJvciBlcnIpIC0+XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGVycilcbiAgICAgICAgICAgfCBPayAoT2sgb2spIC0+XG4gICAgICAgICAgICAgbGV0IGluaXRpYWwsIHJlc3QgPSBzcGxpdF9vayBvayBpblxuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBpbml0aWFsKTtcbiAgICAgICAgICAgICBoYW5kbGVfb2sgcmVzdFxuICAgICAgICAgaW5cbiAgICAgICAgIChtYXRjaCBpbXBsX3dpdGhfc3RhdGUgd2l0aFxuICAgICAgICAgIHwgYFBpcGUgZiAtPlxuICAgICAgICAgICAgcnVuX2ltcGxcbiAgICAgICAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEpXG4gICAgICAgICAgICAgIEZuLmlkXG4gICAgICAgICAgICAgIChmdW4gcGlwZV9yIC0+XG4gICAgICAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KFBpcGUgcGlwZV9yKTtcbiAgICAgICAgICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgICAgICAgICAoV3JpdGVyLnRyYW5zZmVyXG4gICAgICAgICAgICAgICAgICAgICAgdC53cml0ZXJcbiAgICAgICAgICAgICAgICAgICAgICBwaXBlX3JcbiAgICAgICAgICAgICAgICAgICAgICAoQ2FjaGVkX3N0cmVhbV93cml0ZXIud3JpdGUgc3RyZWFtX3dyaXRlciB0LnBhY2tlZF9zZWxmIGlkKSk7XG4gICAgICAgICAgICAgICAgIFBpcGUuY2xvc2VkIHBpcGVfclxuICAgICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlX3JcbiAgICAgICAgICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT5cbiAgICAgICAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpO1xuICAgICAgICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkKVxuICAgICAgICAgIHwgYERpcmVjdCAoZiwgd3JpdGVyKSAtPlxuICAgICAgICAgICAgcnVuX2ltcGxcbiAgICAgICAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEgd3JpdGVyKVxuICAgICAgICAgICAgICAoZnVuIHggLT4geCwgKCkpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gRGlyZWN0X3N0cmVhbV93cml0ZXIuc3RhcnQgd3JpdGVyKSkpO1xuICAgICAgQ29udGludWVcbiAgOztcblxuICBsZXQgZmx1c2ggKFQgdCkgPVxuICAgIGFzc2VydCAobm90IHQuc3RvcHBlZCk7XG4gICAgbGV0IHByb2R1Y2Vyc19mbHVzaGVkID1cbiAgICAgIEhhc2h0YmwuZm9sZCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+aW5pdDpbXSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT5cbiAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgIHwgRGlyZWN0IF8gLT4gYWNjXG4gICAgICAgIHwgUGlwZSBwaXBlIC0+IERlZmVycmVkLmlnbm9yZV9tIChQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZSkgOjogYWNjKVxuICAgIGluXG4gICAgRGVmZXJyZWQuYWxsX3VuaXQgcHJvZHVjZXJzX2ZsdXNoZWRcbiAgOztcblxuICBsZXQgc3RvcCAoVCB0KSA9XG4gICAgdC5zdG9wcGVkIDwtIHRydWU7XG4gICAgSGFzaHRibC5pdGVyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5mOihmdW5jdGlvblxuICAgICAgfCBEaXJlY3Qgd3JpdGVyIC0+XG4gICAgICAgICgqIERvbid0IHJlbW92ZSB0aGUgd3JpdGVyIGZyb20gdGhlIGluc3RhbmNlLCBhcyB0aGF0IHdvdWxkIG1vZGlmeSB0aGUgaGFzaHRhYmxlXG4gICAgICAgICAgIHRoYXQgd2UgYXJlIGN1cnJlbnRseSBpdGVyYXRpbmcgb3Zlci4gKilcbiAgICAgICAgRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHdyaXRlclxuICAgICAgfCBQaXBlIF8gLT4gKCkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXNcbiAgOztcblxuICBsZXQgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgfCBgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IGBSYWlzZSAtPiBScGNfZXJyb3IucmFpc2UgZXJyb3IgdC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICB8IGBDYWxsIGYgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgZlxuICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkuUC5RdWVyeS50YWcpXG4gICAgICAgICAgIH52ZXJzaW9uOnF1ZXJ5LnZlcnNpb25cbiAgICAgICB3aXRoXG4gICAgICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgIHRcbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSA9IHQuaW1wbGVtZW50YXRpb25zIGluXG4gICAgbGV0IGRlc2NyaXB0aW9uIDogRGVzY3JpcHRpb24udCA9XG4gICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgU29tZSAobGFzdF9kZXNjLCBpbXBsZW1lbnRhdGlvbikgd2hlbiBEZXNjcmlwdGlvbi5lcXVhbCBsYXN0X2Rlc2MgZGVzY3JpcHRpb24gLT5cbiAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICB8IE5vbmUgfCBTb21lIF8gLT5cbiAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgaW1wbGVtZW50YXRpb25zIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb24gLT5cbiAgICAgICAgIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDwtIFNvbWUgKGRlc2NyaXB0aW9uLCBpbXBsZW1lbnRhdGlvbik7XG4gICAgICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgICAgICAgIHwgYEV4cGVydCBpbXBsIC0+XG4gICAgICAgICAgICBsZXQgeyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgPSBsZW4gfSA9IHF1ZXJ5IGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGxldCByZXNwb25kZXIgPSBSZXNwb25kZXIuY3JlYXRlIGlkIHQud3JpdGVyIGluXG4gICAgICAgICAgICAgIGltcGxcbiAgICAgICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyB0YWcpXG4gICAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgICByZXNwb25kZXJcbiAgICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICB+bGVuOihsZW4gOj4gaW50KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIENvbnRpbnVlIGVsc2UgV2FpdCBkXG4gICAgICAgICAgfCAoYENvbnRpbnVlIHwgYFJhaXNlIHwgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ2FsbCBfKSBhcyBvbl91bmtub3duX3JwYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID0gUnBjX2Vycm9yLlVuaW1wbGVtZW50ZWRfcnBjIChxdWVyeS50YWcsIGBWZXJzaW9uIHF1ZXJ5LnZlcnNpb24pIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IHF1ZXJ5LmlkIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCAoRXJyb3IgZXJyb3IpO1xuICAgICAgICAgICAgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkpKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlcbiAgICAgICAgKFQgdClcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGlmIHQuc3RvcHBlZCB8fCBXcml0ZXIuaXNfY2xvc2VkIHQud3JpdGVyXG4gICAgdGhlbiBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQuU3RvcCAoT2sgKCkpXG4gICAgZWxzZVxuICAgICAgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgIHRcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gIDs7XG5lbmRcblxubW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gSW5zdGFuY2UuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxubGV0IGNyZWF0ZSB+aW1wbGVtZW50YXRpb25zOmkncyB+b25fdW5rbm93bl9ycGMgPVxuICAoKiBNYWtlIHN1cmUgdGhlIHRhZ3MgYXJlIHVuaXF1ZS4gKilcbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IERlc2NyaXB0aW9uLlRhYmxlLmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBsZXQgZHVwcyA9IERlc2NyaXB0aW9uLkhhc2hfc2V0LmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBMaXN0Lml0ZXIgaSdzIH5mOihmdW4gKGkgOiBfIEltcGxlbWVudGF0aW9uLnQpIC0+XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIHsgRGVzY3JpcHRpb24ubmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaS50YWc7IHZlcnNpb24gPSBpLnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzY3JpcHRpb24gfmRhdGE6aSB3aXRoXG4gICAgfCBgT2sgLT4gKClcbiAgICB8IGBEdXBsaWNhdGUgLT4gSGFzaF9zZXQuYWRkIGR1cHMgZGVzY3JpcHRpb24pO1xuICBpZiBub3QgKEhhc2hfc2V0LmlzX2VtcHR5IGR1cHMpXG4gIHRoZW4gRXJyb3IgKGBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIChIYXNoX3NldC50b19saXN0IGR1cHMpKVxuICBlbHNlXG4gICAgT2tcbiAgICAgIHsgaW1wbGVtZW50YXRpb25zXG4gICAgICA7IG9uX3Vua25vd25fcnBjID0gKG9uX3Vua25vd25fcnBjIDo+IF8gb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQpXG4gICAgICB9XG47O1xuXG5sZXQgaW5zdGFudGlhdGVcbiAgICAgIHRcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlclxuICA9XG4gIGxldCByZWMgdW5wYWNrZWQgOiBfIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA9IHRcbiAgICA7IHdyaXRlclxuICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzID0gSGFzaHRibC5Qb2x5LmNyZWF0ZSB+c2l6ZToxMCAoKVxuICAgIDsgY29ubmVjdGlvbl9zdGF0ZVxuICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgOyBzdG9wcGVkID0gZmFsc2VcbiAgICA7IGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA9IE5vbmVcbiAgICA7IHBhY2tlZF9zZWxmID0gSW5zdGFuY2UuVCB1bnBhY2tlZFxuICAgIH1cbiAgaW5cbiAgdW5wYWNrZWQucGFja2VkX3NlbGZcbjs7XG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIG9mIERlc2NyaXB0aW9uLnQgbGlzdCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgY3JlYXRlX2V4biB+aW1wbGVtZW50YXRpb25zIH5vbl91bmtub3duX3JwYyA9XG4gIG1hdGNoIGNyZWF0ZSB+aW1wbGVtZW50YXRpb25zIH5vbl91bmtub3duX3JwYyB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgKGBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIGR1cHMpIC0+IHJhaXNlIChEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIGR1cHMpXG47O1xuXG5sZXQgbnVsbCAoKSA9IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9uczpbXSB+b25fdW5rbm93bl9ycGM6YFJhaXNlXG5cbmxldCBhZGRfZXhuIHQgKGltcGxlbWVudGF0aW9uIDogXyBJbXBsZW1lbnRhdGlvbi50KSA9XG4gIGxldCBkZXNjIDogRGVzY3JpcHRpb24udCA9XG4gICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpbXBsZW1lbnRhdGlvbi50YWc7IHZlcnNpb24gPSBpbXBsZW1lbnRhdGlvbi52ZXJzaW9uIH1cbiAgaW5cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IEhhc2h0YmwuY29weSB0LmltcGxlbWVudGF0aW9ucyBpblxuICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjIH5kYXRhOmltcGxlbWVudGF0aW9uIHdpdGhcbiAgfCBgRHVwbGljYXRlIC0+IHJhaXNlIChEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIFsgZGVzYyBdKVxuICB8IGBPayAtPiB7IHQgd2l0aCBpbXBsZW1lbnRhdGlvbnMgfVxuOztcblxubGV0IGFkZCB0IGltcGxlbWVudGF0aW9uID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBhZGRfZXhuIHQgaW1wbGVtZW50YXRpb24pXG5cbmxldCBsaWZ0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9IH5mID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IEhhc2h0YmwubWFwIGltcGxlbWVudGF0aW9ucyB+ZjooSW1wbGVtZW50YXRpb24ubGlmdCB+ZikgaW5cbiAgbGV0IG9uX3Vua25vd25fcnBjID1cbiAgICBtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgfCAoYFJhaXNlIHwgYENvbnRpbnVlIHwgYENsb3NlX2Nvbm5lY3Rpb24pIGFzIHggLT4geFxuICAgIHwgYENhbGwgY2FsbCAtPiBgQ2FsbCAoZnVuIHN0YXRlIC0+IGNhbGwgKGYgc3RhdGUpKVxuICAgIHwgYEV4cGVydCBleHBlcnQgLT4gYEV4cGVydCAoZnVuIHN0YXRlIC0+IGV4cGVydCAoZiBzdGF0ZSkpXG4gIGluXG4gIHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9XG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBSZXNwb25kZXJcblxuICBtb2R1bGUgUnBjX3Jlc3BvbmRlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFJlc3BvbmRlci50XG5cbiAgICBsZXQgY2Fubm90X3NlbmQgciA9XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1lc3NhZ2UgY2Fubm90IGJlIHNlbnRcIlxuICAgICAgICByXG4gICAgICAgIFslc2V4cF9vZjogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudF1cbiAgICA7O1xuXG4gICAgbGV0IG1hcmtfcmVzcG9uZGVkICh0IDogdCkgPVxuICAgICAgaWYgdC5yZXNwb25kZWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJBbHJlYWR5IHJlc3BvbmRlZFwiIHQgWyVzZXhwX29mOiBSZXNwb25kZXIudF07XG4gICAgICB0LnJlc3BvbmRlZCA8LSB0cnVlXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZSAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgICAgICAgIHQud3JpdGVyXG4gICAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICAgaGVhZGVyXG4gICAgICAgICAgfmJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICB3aXRoXG4gICAgICB8IFNlbnQgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPiBjYW5ub3Rfc2VuZCByXG4gICAgOztcblxuICAgIGxldCBoYW5kbGVfc2VuZF9yZXN1bHQgOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50IC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmlnc3RyaW5nICh0IDogdCkgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICAgIFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgKE5hdDAub2ZfaW50X2V4biBsZW4pIH1cbiAgICAgIGluXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICBoZWFkZXJcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfZXJyb3IgKHQgOiB0KSBlcnJvciA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGRhdGEgPVxuICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJhdyBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgIChFcnJvci50b19leG4gZXJyb3IpXG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgIChSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSB9KVxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9iaW5fcHJvdCAodCA6IHQpIGJpbl93cml0ZXJfYSBhID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgICB0LndyaXRlclxuICAgICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfYSkpXG4gICAgICAgIChSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfZXhuID0gY3JlYXRlX2V4blxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgUmVhZGVyID0gVHJhbnNwb3J0LlJlYWRlclxubW9kdWxlIFdyaXRlciA9IFRyYW5zcG9ydC5Xcml0ZXJcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX3R5cGVfY2xhc3NdXG5cbiAgdmFsIHYxIDogdFxuICB2YWwgbmVnb3RpYXRlIDogdXM6dCAtPiBwZWVyOnQgLT4gaW50IE9yX2Vycm9yLnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFAuSGVhZGVyXG5cbiAgbGV0IG5lZ290aWF0ZSA9IG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXI6dHJ1ZVxuICBsZXQgdjEgPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5jcmVhdGVfZXhuIH5wcm90b2NvbDpScGMgfnN1cHBvcnRlZF92ZXJzaW9uczpbIDEgXVxuZW5kXG5cbm1vZHVsZSBIYW5kc2hha2VfZXJyb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFb2ZcbiAgICAgIHwgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICAgfCBUaW1lb3V0XG4gICAgICB8IFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0aW9uX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0ZWRfdW5leHBlY3RlZF92ZXJzaW9uIG9mIGludFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgZXhjZXB0aW9uIEhhbmRzaGFrZV9lcnJvciBvZiAodCAqIEluZm8udCkgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgdG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIHQgPSBIYW5kc2hha2VfZXJyb3IgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pXG5lbmRcblxubW9kdWxlIEhlYXJ0YmVhdF9jb25maWcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGZpZWxkc11cblxuICBsZXQgY3JlYXRlXG4gICAgICAgID8odGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuKVxuICAgICAgICA/KHNlbmRfZXZlcnkgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDEwLilcbiAgICAgICAgKClcbiAgICA9XG4gICAgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbiAgOztcblxuICBtb2R1bGUgUnVudGltZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgdGltZW91dCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCB0b19ydW50aW1lIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9ID0geyBSdW50aW1lLnRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuZW5kXG5cbnR5cGUgcmVzcG9uc2VfaGFuZGxlciA9XG4gIE5hdDAudCBQLlJlc3BvbnNlLnRcbiAgLT4gcmVhZF9idWZmZXI6Qmlnc3RyaW5nLnRcbiAgLT4gcmVhZF9idWZmZXJfcG9zX3JlZjppbnQgcmVmXG4gIC0+IFsgYGtlZXBcbiAgICAgfCBgd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgfCBgcmVtb3ZlIG9mIHVuaXQgUnBjX3Jlc3VsdC50XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgXVxuXG50eXBlIHQgPVxuICB7IGRlc2NyaXB0aW9uIDogSW5mby50XG4gIDsgaGVhcnRiZWF0X2NvbmZpZyA6IEhlYXJ0YmVhdF9jb25maWcuUnVudGltZS50XG4gIDsgbXV0YWJsZSBoZWFydGJlYXRfY2FsbGJhY2tzIDogKHVuaXQgLT4gdW5pdCkgYXJyYXlcbiAgOyBtdXRhYmxlIGxhc3Rfc2Vlbl9hbGl2ZSA6IFRpbWVfbnMudFxuICA7IHJlYWRlciA6IFJlYWRlci50XG4gIDsgd3JpdGVyIDogV3JpdGVyLnRcbiAgOyBvcGVuX3F1ZXJpZXMgOiAoUC5RdWVyeV9pZC50LCAocmVzcG9uc2VfaGFuZGxlcltAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBJdmFyLnRcbiAgOyBjbG9zZV9maW5pc2hlZCA6IHVuaXQgSXZhci50XG4gICgqIFRoZXJlJ3MgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29ubmVjdGlvbnMgYW5kIHRoZWlyIGltcGxlbWVudGF0aW9uIGluc3RhbmNlc1xuICAgICAodGhlIGxhdHRlciBkZXBlbmRzIG9uIHRoZSBjb25uZWN0aW9uIHN0YXRlLCB3aGljaCBpcyBnaXZlbiBhY2Nlc3MgdG8gdGhlIGNvbm5lY3Rpb25cbiAgICAgd2hlbiBpdCBpcyBjcmVhdGVkKS4gKilcbiAgOyBpbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudCBTZXRfb25jZS50XG4gIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS50XG4gIDsgaGVhcnRiZWF0X2V2ZW50IDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQudCBTZXRfb25jZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3RfaHVtX3dyaXRlciB0ID1cbiAgWyVzZXhwIHsgZGVzY3JpcHRpb24gOiBJbmZvLnQgPSB0LmRlc2NyaXB0aW9uOyB3cml0ZXIgOiBXcml0ZXIudCA9IHQud3JpdGVyIH1dXG47O1xuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHQuZGVzY3JpcHRpb25cbmxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcblxubGV0IHdyaXRlciB0ID1cbiAgaWYgaXNfY2xvc2VkIHQgfHwgbm90IChXcml0ZXIuY2FuX3NlbmQgdC53cml0ZXIpIHRoZW4gRXJyb3IgYENsb3NlZCBlbHNlIE9rIHQud3JpdGVyXG47O1xuXG5sZXQgYnl0ZXNfdG9fd3JpdGUgdCA9IFdyaXRlci5ieXRlc190b193cml0ZSB0LndyaXRlclxubGV0IGZsdXNoZWQgdCA9IFdyaXRlci5mbHVzaGVkIHQud3JpdGVyXG5cbmxldCBoYW5kbGVfc2VuZF9yZXN1bHQgOiB0IC0+ICdhIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50IC0+ICdhID1cbiAgZnVuIHQgciAtPlxuICBtYXRjaCByIHdpdGhcbiAgfCBTZW50IHggLT4geFxuICB8IENsb3NlZCAtPlxuICAgICgqIEFsbCBvZiB0aGUgcGxhY2VzIHdlIGNhbGwgW2hhbmRsZV9zZW5kX3Jlc3VsdF0gY2hlY2sgd2hldGhlciBbdF0gaXMgY2xvc2VkXG4gICAgICAgKHVzdWFsbHkgdmlhIHRoZSBbd3JpdGVyXSBmdW5jdGlvbiBhYm92ZSkuIFRoaXMgY2hlY2tzIHdoZXRoZXIgW3Qud3JpdGVyXSBpc1xuICAgICAgIGNsb3NlZCwgd2hpY2ggc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIFt0XSBpcyBjbG9zZWQuICopXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJSUEMgY29ubmVjdGlvbiBnb3QgY2xvc2VkIHdyaXRlclwiIHQgc2V4cF9vZl90X2h1bV93cml0ZXJcbiAgfCBNZXNzYWdlX3Rvb19iaWcgXyAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIk1lc3NhZ2UgY2Fubm90IGJlIHNlbnRcIlxuICAgICAgLCB7IHJlYXNvbiA9IChyIDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCk7IGNvbm5lY3Rpb24gPSAodCA6IHRfaHVtX3dyaXRlcikgfV1cbjs7XG5cbmxldCBkaXNwYXRjaCB0IH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIGFzIHIgLT4gclxuICB8IE9rIHdyaXRlciAtPlxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OnF1ZXJ5LlAuUXVlcnkuaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlcik7XG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgIHdyaXRlclxuICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX3F1ZXJ5KSlcbiAgICAgIChRdWVyeSBxdWVyeSlcbiAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICBPayAoKVxuOztcblxubGV0IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIGRvX3NlbmQgdCB+dGFnIH52ZXJzaW9uIGJ1ZiB+cG9zIH5sZW4gfnJlc3BvbnNlX2hhbmRsZXIgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCAtPiBFcnJvciBgQ2xvc2VkXG4gIHwgT2sgd3JpdGVyIC0+XG4gICAgbGV0IGlkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgIFF1ZXJ5IHsgdGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSA9IE5hdDAub2ZfaW50X2V4biBsZW4gfVxuICAgIGluXG4gICAgT3B0aW9uLml0ZXIgcmVzcG9uc2VfaGFuZGxlciB+ZjooZnVuIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9xdWVyaWVzIH5rZXk6aWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlcik7XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBkb19zZW5kIHdyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgaGVhZGVyIH5idWYgfnBvcyB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdFxuICAgIGluXG4gICAgT2sgcmVzdWx0XG47O1xuXG5sZXQgZGlzcGF0Y2hfYmlnc3RyaW5nID0gbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuXG5sZXQgc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nID1cbiAgbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuOztcblxubGV0IGhhbmRsZV9yZXNwb25zZSB0IChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkIHdpdGhcbiAgfCBOb25lIC0+IFN0b3AgKEVycm9yIChScGNfZXJyb3IuVW5rbm93bl9xdWVyeV9pZCByZXNwb25zZS5pZCkpXG4gIHwgU29tZSByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgKG1hdGNoIHJlc3BvbnNlX2hhbmRsZXIgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIHdpdGhcbiAgICAgfCBga2VlcCAtPiBDb250aW51ZVxuICAgICB8IGB3YWl0IHdhaXQgLT4gV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCB3YWl0IC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZSByZW1vdmFsX2NpcmN1bXN0YW5jZXMgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICAobWF0Y2ggcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgXyAtPiBDb250aW51ZVxuICAgICAgICAgICB8IEJpbl9pb19leG4gX1xuICAgICAgICAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICAgICAgIHwgV3JpdGVfZXJyb3IgX1xuICAgICAgICAgICB8IFVuY2F1Z2h0X2V4biBfXG4gICAgICAgICAgIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IFN0b3AgKEVycm9yIGUpKSkpXG47O1xuXG5sZXQgaGFuZGxlX21zZ1xuICAgICAgdFxuICAgICAgKG1zZyA6IF8gUC5NZXNzYWdlLnQpXG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIG1zZyB3aXRoXG4gIHwgSGVhcnRiZWF0IC0+XG4gICAgQXJyYXkuaXRlciB0LmhlYXJ0YmVhdF9jYWxsYmFja3MgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICAgIENvbnRpbnVlXG4gIHwgUmVzcG9uc2UgcmVzcG9uc2UgLT4gaGFuZGxlX3Jlc3BvbnNlIHQgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIHwgUXVlcnkgcXVlcnkgLT5cbiAgICBsZXQgaW5zdGFuY2UgPSBTZXRfb25jZS5nZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG47O1xuXG5sZXQgY2xvc2VfcmVhc29uIHQgfm9uX2Nsb3NlID1cbiAgbGV0IHJlYXNvbiA9IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQgaW5cbiAgbWF0Y2ggb25fY2xvc2Ugd2l0aFxuICB8IGBzdGFydGVkIC0+IHJlYXNvblxuICB8IGBmaW5pc2hlZCAtPlxuICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWQgaW5cbiAgICByZWFzb25cbjs7XG5cbmxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcblxubGV0IGFkZF9oZWFydGJlYXRfY2FsbGJhY2sgdCBmID1cbiAgKCogQWRkaW5nIGhlYXJ0YmVhdCBjYWxsYmFja3MgaXMgcmVsYXRpdmVseSByYXJlLCBidXQgdGhlIGNhbGxiYWNrcyBhcmUgdHJpZ2dlcmVkIGEgbG90LlxuICAgICBUaGUgYXJyYXkgcmVwcmVzZW50YXRpb24gbWFrZXMgdGhlIGFkZGl0aW9uIHF1YWRyYXRpYyBmb3IgdGhlIHNha2Ugb2Yga2VlcGluZyB0aGVcbiAgICAgdHJpZ2dlcmluZyBjaGVhcC4gKilcbiAgdC5oZWFydGJlYXRfY2FsbGJhY2tzIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQuaGVhcnRiZWF0X2NhbGxiYWNrc1xuOztcblxubGV0IHJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IHQgdGltZW91dCA9XG4gIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0IDwtIHRpbWVvdXQ7XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlXG47O1xuXG5sZXQgbGFzdF9zZWVuX2FsaXZlIHQgPSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuXG5sZXQgYWJvcnRfaGVhcnRiZWF0aW5nIHQgPVxuICBPcHRpb24uaXRlciAoU2V0X29uY2UuZ2V0IHQuaGVhcnRiZWF0X2V2ZW50KSB+ZjooZnVuIGV2ZW50IC0+XG4gICAgbWF0Y2ggU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYWJvcnQgdC50aW1lX3NvdXJjZSBldmVudCB3aXRoXG4gICAgfCBPayB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWQgLT4gKClcbiAgICB8IEN1cnJlbnRseV9oYXBwZW5pbmcgLT5cbiAgICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnJ1bl9hZnRlciB0LnRpbWVfc291cmNlIFRpbWVfbnMuU3Bhbi56ZXJvIChmdW4gKCkgLT5cbiAgICAgICAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYWJvcnRfZXhuIHQudGltZV9zb3VyY2UgZXZlbnQpKVxuOztcblxubGV0IGNsb3NlID8oc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX2ludF9zZWMgNSkgfnJlYXNvbiB0ID1cbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgYWJvcnRfaGVhcnRiZWF0aW5nIHQ7XG4gICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCByZWFzb247XG4gICAgKG1hdGNoIFNldF9vbmNlLmdldCB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgIHwgU29tZSBpbnN0YW5jZSAtPlxuICAgICAgIGxldCBmbHVzaGVkID0gSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmZsdXNoIGluc3RhbmNlIGluXG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBmbHVzaGVkXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZTtcbiAgICAgICAgIGZsdXNoZWQpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgRGVmZXJyZWQuYW55X3VuaXRcbiAgICAgICAgICAgICBbIGZsdXNoZWRcbiAgICAgICAgICAgICA7IFdyaXRlci5zdG9wcGVkIHQud3JpdGVyXG4gICAgICAgICAgICAgOyBUaW1lX3NvdXJjZS5hZnRlclxuICAgICAgICAgICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgICAgICAgICAgc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICAgICAgICAgXVxuICAgICAgICAgaW5cbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlKSlcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgV3JpdGVyLmNsb3NlIHQud3JpdGVyXG4gICAgPj4+IGZ1biAoKSAtPiBSZWFkZXIuY2xvc2UgdC5yZWFkZXIgPj4+IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSk7XG4gIGNsb3NlX2ZpbmlzaGVkIHRcbjs7XG5cbmxldCBvbl9tZXNzYWdlIHQgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciA9XG4gIGxldCBmIGJ1ZiB+cG9zIH5sZW46XyA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgIGxldCBuYXQwX21zZyA9IFAuTWVzc2FnZS5iaW5fcmVhZF9uYXQwX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgbWF0Y2hcbiAgICAgIGhhbmRsZV9tc2dcbiAgICAgICAgdFxuICAgICAgICBuYXQwX21zZ1xuICAgICAgICB+cmVhZF9idWZmZXI6YnVmXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOnBvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgIHdpdGhcbiAgICB8IENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBXYWl0IF8gYXMgcmVzIC0+IHJlc1xuICAgIHwgU3RvcCByZXN1bHQgLT5cbiAgICAgIGxldCByZWFzb24gPVxuICAgICAgICBsZXQgbXNnID0gXCJScGMgbWVzc2FnZSBoYW5kbGluZyBsb29wIHN0b3BwZWRcIiBpblxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IEluZm8ub2Zfc3RyaW5nIG1zZ1xuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICBJbmZvLmNyZWF0ZVxuICAgICAgICAgICAgbXNnXG4gICAgICAgICAgICBlXG4gICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICBcIkNvbm5lY3Rpb24ub25fbWVzc2FnZSByZXN1bHRlZCBpbiBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvci4gVGhpcyBpcyBcXFxuICAgICAgICAgICAgICAgICAgd2VpcmQuXCJdKSlcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIFN0b3AgcmVhc29uXG4gIGluXG4gIFN0YWdlZC5zdGFnZSBmXG47O1xuXG5sZXQgaGVhcnRiZWF0X25vdyB0ID1cbiAgbGV0IHNpbmNlX2xhc3RfaGVhcnRiZWF0ID1cbiAgICBUaW1lX25zLmRpZmYgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuICBpblxuICBpZiBUaW1lX25zLlNwYW4uKCA+ICkgc2luY2VfbGFzdF9oZWFydGJlYXQgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgdGhlbiAoXG4gICAgbGV0IHJlYXNvbiAoKSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgICFcIk5vIGhlYXJ0YmVhdHMgcmVjZWl2ZWQgZm9yICV7c2V4cDpUaW1lX25zLlNwYW4udH0uXCJcbiAgICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgICBpblxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2ZfdGh1bmsgcmVhc29uKSkpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gKClcbiAgICB8IE9rIHdyaXRlciAtPlxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3Qgd3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBIZWFydGJlYXRcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0KVxuOztcblxubGV0IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLlxuXG5sZXQgY2xlYW51cCB0IH5yZWFzb24gZXhuID1cbiAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCk7XG4gIGlmIG5vdCAoSGFzaHRibC5pc19lbXB0eSB0Lm9wZW5fcXVlcmllcylcbiAgdGhlbiAoXG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICB8IFJwY19lcnJvci5ScGMgKGVycm9yLCAoXyA6IEluZm8udCkpIC0+IGVycm9yXG4gICAgICB8IGV4biAtPiBVbmNhdWdodF9leG4gKEV4bi5zZXhwX29mX3QgZXhuKVxuICAgIGluXG4gICAgKCogY2xlYW4gdXAgb3BlbiBzdHJlYW1pbmcgcmVzcG9uc2VzICopXG4gICAgKCogYW4gdW5mb3J0dW5hdGUgaGFjazsgb2sgYmVjYXVzZSB0aGUgcmVzcG9uc2UgaGFuZGxlciB3aWxsIGhhdmUgbm90aGluZ1xuICAgICAgIHRvIHJlYWQgZm9sbG93aW5nIGEgcmVzcG9uc2Ugd2hlcmUgW2RhdGFdIGlzIGFuIGVycm9yICopXG4gICAgbGV0IGR1bW15X2J1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMSBpblxuICAgIGxldCBkdW1teV9yZWYgPSByZWYgMCBpblxuICAgIEhhc2h0YmwuaXRlcmkgdC5vcGVuX3F1ZXJpZXMgfmY6KGZ1biB+a2V5OnF1ZXJ5X2lkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIGlnbm9yZVxuICAgICAgICAocmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgICB+cmVhZF9idWZmZXI6ZHVtbXlfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOmR1bW15X3JlZlxuICAgICAgICAgICB7IGlkID0gcXVlcnlfaWQ7IGRhdGEgPSBFcnJvciBlcnJvciB9KSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fcXVlcmllcztcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgZHVtbXlfYnVmZmVyKVxuOztcblxubGV0IHNjaGVkdWxlX2hlYXJ0YmVhdHMgdCA9XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlO1xuICBsZXQgaGVhcnRiZWF0X2Zyb21fbm93X29uID1cbiAgICAoKiBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNjaGVkdWxlIHRoZSBmaXJzdCBoZWFydGJlYXQgdGhlIGZpcnN0IHRpbWUgdGhlIHRpbWVfc291cmNlIGlzXG4gICAgICAgYWR2YW5jZWQgKilcbiAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hdF9pbnRlcnZhbHNcbiAgICAgIHQudGltZV9zb3VyY2VcbiAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy5zZW5kX2V2ZXJ5XG4gICAgICAoZnVuICgpIC0+IGhlYXJ0YmVhdF9ub3cgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmhlYXJ0YmVhdF9ldmVudCBbJWhlcmVdIGhlYXJ0YmVhdF9mcm9tX25vd19vblxuOztcblxubGV0IHJ1bl9hZnRlcl9oYW5kc2hha2UgdCB+aW1wbGVtZW50YXRpb25zIH5jb25uZWN0aW9uX3N0YXRlIH53cml0ZXJfbW9uaXRvcl9leG5zID1cbiAgbGV0IGluc3RhbmNlID1cbiAgICBJbXBsZW1lbnRhdGlvbnMuaW5zdGFudGlhdGVcbiAgICAgIGltcGxlbWVudGF0aW9uc1xuICAgICAgfndyaXRlcjp0LndyaXRlclxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZClcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlOihjb25uZWN0aW9uX3N0YXRlIHQpXG4gIGluXG4gIFNldF9vbmNlLnNldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpbnN0YW5jZTtcbiAgbGV0IGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiUlBDIGNsb3NlIGNvbm5lY3Rpb24gbW9uaXRvclwiICgpIGluXG4gIE1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgfmY6KGZ1biBleG4gLT5cbiAgICBsZXQgcmVhc29uID1cbiAgICAgIEluZm8uY3JlYXRlX3MgWyVtZXNzYWdlIFwiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGltcGxlbWVudGF0aW9uXCIgKGV4biA6IEV4bi50KV1cbiAgICBpblxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB+cmVhc29uIHQpKTtcbiAgbGV0IG1vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjb25uZWN0aW9uIGxvb3BcIiAoKSBpblxuICBsZXQgcmVhc29uIG5hbWUgZXhuID1cbiAgICBleG4sIEluZm8udGFnIChJbmZvLm9mX2V4biBleG4pIH50YWc6KFwiZXhuIHJhaXNlZCBpbiBSUEMgY29ubmVjdGlvbiBcIiBeIG5hbWUpXG4gIGluXG4gIFN0cmVhbS5pdGVyXG4gICAgKFN0cmVhbS5pbnRlcmxlYXZlXG4gICAgICAgKFN0cmVhbS5vZl9saXN0XG4gICAgICAgICAgWyBTdHJlYW0ubWFwIH5mOihyZWFzb24gXCJsb29wXCIpIChNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yKVxuICAgICAgICAgIDsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwiV3JpdGVyLnRcIikgd3JpdGVyX21vbml0b3JfZXhuc1xuICAgICAgICAgIF0pKVxuICAgIH5mOihmdW4gKGV4biwgcmVhc29uKSAtPiBjbGVhbnVwIHQgZXhuIH5yZWFzb24pO1xuICB3aXRoaW4gfm1vbml0b3IgKGZ1biAoKSAtPlxuICAgIHNjaGVkdWxlX2hlYXJ0YmVhdHMgdDtcbiAgICBSZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICB0LnJlYWRlclxuICAgICAgfm9uX21lc3NhZ2U6KFN0YWdlZC51bnN0YWdlIChvbl9tZXNzYWdlIHQgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcikpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOihmdW4gKCkgLT5cbiAgICAgICAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBPayByZWFzb24gLT4gY2xlYW51cCB0IH5yZWFzb24gKFJwY19lcnJvci5ScGMgKENvbm5lY3Rpb25fY2xvc2VkLCB0LmRlc2NyaXB0aW9uKSlcbiAgICAoKiBUaGUgcHJvdG9jb2wgaXMgc3VjaCB0aGF0IHJpZ2h0IG5vdywgdGhlIG9ubHkgb3V0Y29tZSBvZiB0aGUgb3RoZXIgc2lkZSBjbG9zaW5nIHRoZVxuICAgICAgIGNvbm5lY3Rpb24gbm9ybWFsbHkgaXMgdGhhdCB3ZSBnZXQgYW4gZW9mLiAqKVxuICAgIHwgRXJyb3IgKGBFb2YgfCBgQ2xvc2VkKSAtPlxuICAgICAgY2xlYW51cFxuICAgICAgICB0XG4gICAgICAgIH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiRU9GIG9yIGNvbm5lY3Rpb24gY2xvc2VkXCIpXG4gICAgICAgIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGRvX2hhbmRzaGFrZSB0IH5oYW5kc2hha2VfdGltZW91dCA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIC0+IHJldHVybiAoRXJyb3IgSGFuZHNoYWtlX2Vycm9yLlRyYW5zcG9ydF9jbG9zZWQpXG4gIHwgT2sgd3JpdGVyIC0+XG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3Qgd3JpdGVyIEhlYWRlci5iaW5fdC53cml0ZXIgSGVhZGVyLnYxIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgICgqIElmIHdlIHVzZSBbbWF4X2Nvbm5lY3Rpb25zXSBpbiB0aGUgc2VydmVyLCB0aGVuIHRoaXMgcmVhZCBtYXkganVzdCBoYW5nIHVudGlsIHRoZVxuICAgICAgIHNlcnZlciBzdGFydHMgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyAod2hpY2ggY291bGQgYmUgbmV2ZXIpLiAgVGhhdCBpcyB3aHkgYVxuICAgICAgIHRpbWVvdXQgaXMgdXNlZCAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICAoZnVuICgpIC0+IFJlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90IHQucmVhZGVyIEhlYWRlci5iaW5fdC5yZWFkZXIpXG4gICAgaW5cbiAgICAobWF0Y2glbWFwXG4gICAgICAgVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0XG4gICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgIGhhbmRzaGFrZV90aW1lb3V0XG4gICAgICAgICByZXN1bHRcbiAgICAgd2l0aFxuICAgICB8IGBUaW1lb3V0IC0+XG4gICAgICAgKCogVGhlcmUncyBhIHBlbmRpbmcgcmVhZCwgdGhlIHJlYWRlciBpcyBiYXNpY2FsbHkgdXNlbGVzcyBub3csIHNvIHdlIGNsZWFuIGl0XG4gICAgICAgICAgdXAuICopXG4gICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJIYW5kc2hha2UgdGltZW91dFwiKSk7XG4gICAgICAgRXJyb3IgSGFuZHNoYWtlX2Vycm9yLlRpbWVvdXRcbiAgICAgfCBgUmVzdWx0IChFcnJvciBleG4pIC0+XG4gICAgICAgbGV0IHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiW1JlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90XSByYWlzZWRcIiBpblxuICAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgIEVycm9yIChSZWFkaW5nX2hlYWRlcl9mYWlsZWQgKEVycm9yLm9mX2V4biBleG4pKVxuICAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgRW9mKSkgLT4gRXJyb3IgRW9mXG4gICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBDbG9zZWQpKSAtPiBFcnJvciBUcmFuc3BvcnRfY2xvc2VkXG4gICAgIHwgYFJlc3VsdCAoT2sgKE9rIHBlZXIpKSAtPlxuICAgICAgIChtYXRjaCBIZWFkZXIubmVnb3RpYXRlIH51czpIZWFkZXIudjEgfnBlZXIgd2l0aFxuICAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKE5lZ290aWF0aW9uX2ZhaWxlZCBlKVxuICAgICAgICB8IE9rIDEgLT4gT2sgKClcbiAgICAgICAgfCBPayBpIC0+IEVycm9yIChOZWdvdGlhdGVkX3VuZXhwZWN0ZWRfdmVyc2lvbiBpKSkpXG47O1xuXG5sZXQgY29udGFpbnNfbWFnaWNfcHJlZml4ID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY29udGFpbnNfbWFnaWNfcHJlZml4IH5wcm90b2NvbDpScGNcblxubGV0IGNyZWF0ZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgID8oaGFuZHNoYWtlX3RpbWVvdXQgPSBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0KVxuICAgICAgPyhoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy5jcmVhdGUgKCkpXG4gICAgICA/KGRlc2NyaXB0aW9uID0gSW5mby5vZl9zdHJpbmcgXCI8Y3JlYXRlZC1kaXJlY3RseT5cIilcbiAgICAgID8odGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgKHsgcmVhZGVyOyB3cml0ZXIgfSA6IFRyYW5zcG9ydC50KVxuICA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPVxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgfCBOb25lIC0+IEltcGxlbWVudGF0aW9ucy5udWxsICgpXG4gICAgfCBTb21lIHMgLT4gc1xuICBpblxuICBsZXQgdCA9XG4gICAgeyBkZXNjcmlwdGlvblxuICAgIDsgaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcudG9fcnVudGltZSBoZWFydGJlYXRfY29uZmlnXG4gICAgOyBoZWFydGJlYXRfY2FsbGJhY2tzID0gW3x8XVxuICAgIDsgbGFzdF9zZWVuX2FsaXZlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHRpbWVfc291cmNlXG4gICAgOyByZWFkZXJcbiAgICA7IHdyaXRlclxuICAgIDsgb3Blbl9xdWVyaWVzID0gSGFzaHRibC5Qb2x5LmNyZWF0ZSB+c2l6ZToxMCAoKVxuICAgIDsgY2xvc2Vfc3RhcnRlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBpbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBoZWFydGJlYXRfZXZlbnQgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIGxldCB3cml0ZXJfbW9uaXRvcl9leG5zID0gTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gKFdyaXRlci5tb25pdG9yIHdyaXRlcikgaW5cbiAgdXBvbiAoV3JpdGVyLnN0b3BwZWQgd3JpdGVyKSAoZnVuICgpIC0+XG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJSUEMgdHJhbnNwb3J0IHN0b3BwZWRcIikpKTtcbiAgbWF0Y2glbWFwIGRvX2hhbmRzaGFrZSB0IH5oYW5kc2hha2VfdGltZW91dCB3aXRoXG4gIHwgT2sgKCkgLT5cbiAgICBydW5fYWZ0ZXJfaGFuZHNoYWtlIHQgfmltcGxlbWVudGF0aW9ucyB+Y29ubmVjdGlvbl9zdGF0ZSB+d3JpdGVyX21vbml0b3JfZXhucztcbiAgICBPayB0XG4gIHwgRXJyb3IgZXJyb3IgLT5cbiAgICBFcnJvciAoSGFuZHNoYWtlX2Vycm9yLnRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjpkZXNjcmlwdGlvbiBlcnJvcilcbjs7XG5cbmxldCB3aXRoX2Nsb3NlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIHRyYW5zcG9ydFxuICAgICAgfmRpc3BhdGNoX3F1ZXJpZXNcbiAgICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgPVxuICBsZXQgaGFuZGxlX2hhbmRzaGFrZV9lcnJvciA9XG4gICAgbWF0Y2ggb25faGFuZHNoYWtlX2Vycm9yIHdpdGhcbiAgICB8IGBDYWxsIGYgLT4gZlxuICAgIHwgYFJhaXNlIC0+IHJhaXNlXG4gIGluXG4gIGxldCViaW5kIHQgPVxuICAgIGNyZWF0ZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRXJyb3IgZSAtPlxuICAgIGxldCViaW5kICgpID0gVHJhbnNwb3J0LmNsb3NlIHRyYW5zcG9ydCBpblxuICAgIGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgZVxuICB8IE9rIHQgLT5cbiAgICBNb25pdG9yLnByb3RlY3RcbiAgICAgIH5ydW46XG4gICAgICAgIGBTY2hlZHVsZVxuICAgICAgfnJlc3Q6YExvZ1xuICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICBjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24ud2l0aF9jbG9zZSBmaW5pc2hlZFwiKSlcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCViaW5kIHJlc3VsdCA9IGRpc3BhdGNoX3F1ZXJpZXMgdCBpblxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIHwgU29tZSBfIC0+IGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgICAgIGluXG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgc2VydmVyX3dpdGhfY2xvc2VcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IG9uX2hhbmRzaGFrZV9lcnJvciA9XG4gICAgbWF0Y2ggb25faGFuZHNoYWtlX2Vycm9yIHdpdGhcbiAgICB8IGBDYWxsIGYgLT4gYENhbGwgZlxuICAgIHwgYFJhaXNlIC0+IGBSYWlzZVxuICAgIHwgYElnbm9yZSAtPiBgQ2FsbCAoZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgaW5cbiAgd2l0aF9jbG9zZVxuICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgP2Rlc2NyaXB0aW9uXG4gICAgP3RpbWVfc291cmNlXG4gICAgdHJhbnNwb3J0XG4gICAgfmltcGxlbWVudGF0aW9uc1xuICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICAgIH5kaXNwYXRjaF9xdWVyaWVzOihmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuOztcblxubGV0IGNsb3NlXG4gICAgICA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICA/KHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24uY2xvc2VcIilcbiAgICAgIHRcbiAgPVxuICBjbG9zZSA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0IH5yZWFzb24gdFxuOztcblxubW9kdWxlIENsaWVudF9pbXBsZW1lbnRhdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3MgdCA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlIDogdCAtPiAnc1xuICAgIDsgaW1wbGVtZW50YXRpb25zIDogJ3MgSW1wbGVtZW50YXRpb25zLnRcbiAgICB9XG5cbiAgbGV0IG51bGwgKCkgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA9IChmdW4gXyAtPiAoKSk7IGltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9ucy5udWxsICgpIH1cbiAgOztcbmVuZFxuIiwiXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb24gPSBJbXBsZW1lbnRhdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9uc1xubW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxubW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj49fiApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbm1vZHVsZSBScGNfY29tbW9uID0gc3RydWN0XG4gIGxldCBkaXNwYXRjaF9yYXcnXG4gICAgICAgIGNvbm5cbiAgICAgICAgfnRhZ1xuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgIH5yZXNwb25zZV9oYW5kbGVyXG4gICAgPVxuICAgIGxldCBxdWVyeSA9IHsgUC5RdWVyeS50YWc7IHZlcnNpb247IGlkID0gcXVlcnlfaWQ7IGRhdGEgPSBxdWVyeSB9IGluXG4gICAgbWF0Y2ggQ29ubmVjdGlvbi5kaXNwYXRjaCBjb25uIH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiBFcnJvciBScGNfZXJyb3IuQ29ubmVjdGlvbl9jbG9zZWRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfcmF3IGNvbm4gfnRhZyB+dmVyc2lvbiB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgfnF1ZXJ5X2lkIH5mID1cbiAgICBsZXQgcmVzcG9uc2VfaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgKG1hdGNoXG4gICAgICAgZGlzcGF0Y2hfcmF3J1xuICAgICAgICAgY29ublxuICAgICAgICAgfnRhZ1xuICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5xdWVyeV9pZFxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgKGYgcmVzcG9uc2VfaXZhcikpXG4gICAgIHdpdGhcbiAgICAgfCBPayAoKSAtPiAoKVxuICAgICB8IEVycm9yIF8gYXMgZSAtPiBJdmFyLmZpbGwgcmVzcG9uc2VfaXZhciBlKTtcbiAgICBJdmFyLnJlYWQgcmVzcG9uc2VfaXZhclxuICA7O1xuZW5kXG5cbmxldCBzaGFwZXMgbHN0ID1cbiAgU2V4cC5MaXN0XG4gICAgKExpc3QubWFwIGxzdCB+ZjooZnVuIChuYW1lLCBzaGFwZSkgLT5cbiAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgIFwiXCIgfl86KG5hbWUgOiBzdHJpbmcpIH5fOihCaW5fcHJvdC5TaGFwZS5ldmFsX3RvX2RpZ2VzdF9zdHJpbmcgc2hhcGUgOiBzdHJpbmcpXSkpXG47O1xuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fcmVzcG9uc2UgOiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgcmVzcG9uc2VfdHlwZV9pZCA6ICdyZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgPVxuICAgIGxldCBxdWVyeV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpxdWVyeVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnJlc3BvbnNlXCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZVxuICAgIDsgdmVyc2lvblxuICAgIDsgYmluX3F1ZXJ5XG4gICAgOyBiaW5fcmVzcG9uc2VcbiAgICA7IHF1ZXJ5X3R5cGVfaWRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWdcbiAgbGV0IHZlcnNpb24gdCA9IHQudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQucmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LmJpbl9xdWVyeVxuICBsZXQgYmluX3Jlc3BvbnNlIHQgPSB0LmJpbl9yZXNwb25zZVxuICBsZXQgc2hhcGVzIHQgPSBzaGFwZXMgWyBcInF1ZXJ5XCIsIHQuYmluX3F1ZXJ5LnNoYXBlOyBcInJlc3BvbnNlXCIsIHQuYmluX3Jlc3BvbnNlLnNoYXBlIF1cblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPSBScGMgKHQuYmluX3F1ZXJ5LnJlYWRlciwgdC5iaW5fcmVzcG9uc2Uud3JpdGVyLCBmLCBEZWZlcnJlZClcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPSBScGMgKHQuYmluX3F1ZXJ5LnJlYWRlciwgdC5iaW5fcmVzcG9uc2Uud3JpdGVyLCBmLCBCbG9ja2luZylcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCcgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIGl2YXJcbiAgICAgICAgICAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudClcbiAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlID1cbiAgICAgICAgcmVzcG9uc2UuZGF0YVxuICAgICAgICA+Pj1+IGZ1biBsZW4gLT5cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICB0LmJpbl9yZXNwb25zZS5yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIHJlc3BvbnNlO1xuICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICBjb25uXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OnQuYmluX3F1ZXJ5LndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5mOnJlc3BvbnNlX2hhbmRsZXJcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCcgdCBjb25uIHF1ZXJ5IGluXG4gICAgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biB0IGNvbm4gcXVlcnkgPSBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPj58IE9yX2Vycm9yLm9rX2V4blxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb25zLkV4cGVydC5ScGNfcmVzcG9uZGVyXG5cbiAgICBsZXQgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2VfaGFuZGxlciA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlciA9XG4gICAgICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgICAgICBtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAgIGhhbmRsZV9lcnJvclxuICAgICAgICAgICAgICAoRXJyb3IudF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgKERlZmVycmVkLnBlZWsgKENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICAgICAgICAgICAgICAgICAgICAgICAgIDogSW5mby50IG9wdGlvbildKVxuICAgICAgICAgICAgICAgICAgICBlKSk7XG4gICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IChsZW4gOiBOYXQwLnQgOj4gaW50KSBpblxuICAgICAgICAgICAgbGV0IGQgPSBoYW5kbGVfcmVzcG9uc2UgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuIGluXG4gICAgICAgICAgICByZWFkX2J1ZmZlcl9wb3NfcmVmIDo9ICFyZWFkX2J1ZmZlcl9wb3NfcmVmICsgbGVuO1xuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gYHJlbW92ZSAoT2sgKCkpIGVsc2UgYHJlbW92ZV9hbmRfd2FpdCBkXG4gICAgICBpblxuICAgICAgZG9fZGlzcGF0Y2hcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnOihQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWcpXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIGJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgcmVzcG9uc2VfaGFuZGxlcilcbiAgICA7O1xuXG4gICAgbGV0IGRpc3BhdGNoIGNvbm4gfnJwY190YWcgfnZlcnNpb24gYnVmIH5wb3MgfmxlbiB+aGFuZGxlX3Jlc3BvbnNlIH5oYW5kbGVfZXJyb3IgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIENvbm5lY3Rpb24uZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICB3aXRoXG4gICAgICB8IE9rICgpIC0+IGBPa1xuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGVfZGlzcGF0Y2hcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLnNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayBkIC0+IGBGbHVzaGVkIGRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICAgIHwgUmVwbGllZFxuICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuXG4gICAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvblxuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChmLCBEZWZlcnJlZClcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoU2V4cC5BdG9tIFwiVW5rbm93blwiKVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJ1xuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChmLCBCbG9ja2luZylcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoU2V4cC5BdG9tIFwiVW5rbm93blwiKVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICB0eXBlICdtc2cgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX21zZyA6ICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBtc2dfdHlwZV9pZCA6ICdtc2cgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWdcblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnID1cbiAgICBsZXQgbXNnX3R5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06bXNnXCJdIHNleHBfb2Zfb3BhcXVlIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWU7IHZlcnNpb247IGJpbl9tc2c7IG1zZ190eXBlX2lkIH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPSBzaGFwZXMgWyBcIm1zZ1wiLCB0LmJpbl9tc2cuc2hhcGUgXVxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBtc2dfdHlwZV9pZCB0ID0gdC5tc2dfdHlwZV9pZFxuXG4gIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gT25lX3dheSAodC5iaW5fbXNnLnJlYWRlciwgZilcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCcgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3J1xuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9tc2cud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBkaXNwYXRjaCcgdCBjb25uIHF1ZXJ5IHw+IGZ1biByZXN1bHQgLT4gcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biB0IGNvbm4gcXVlcnkgPSBPcl9lcnJvci5va19leG4gKGRpc3BhdGNoIHQgY29ubiBxdWVyeSlcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBPbmVfd2F5X2V4cGVydCBmXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGRpc3BhdGNoIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH0gY29ubiBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGZsdXNoZWQgLT4gYEZsdXNoZWQgZmx1c2hlZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgIHwgRXJyb3Igb2YgRXJyb3IudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgICAgIHwgQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgIHwgRXJyb3Igb2YgRXJyb3IuU3RhYmxlLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuKCogdGhlIGJhc2lzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgUGlwZV9ycGMgYW5kIFN0YXRlX3JwYyAqKVxubW9kdWxlIFN0cmVhbWluZ19ycGMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEluaXRpYWxfbWVzc2FnZSA9IFAuU3RyZWFtX2luaXRpYWxfbWVzc2FnZVxuXG4gIHR5cGUgKCdxdWVyeSwgJ2luaXRpYWxfcmVzcG9uc2UsICd1cGRhdGVfcmVzcG9uc2UsICdlcnJvcl9yZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2UgOiAnaW5pdGlhbF9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2UgOiAndXBkYXRlX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlIDogJ2Vycm9yX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA6ICdpbml0aWFsX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgOiAndXBkYXRlX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA6ICdlcnJvcl9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgPVxuICAgICAgbWF0Y2ggY2xpZW50X3B1c2hlc19iYWNrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lICgpIC0+IHRydWVcbiAgICBpblxuICAgIGxldCBxdWVyeV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpxdWVyeVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OmVycm9yXCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZVxuICAgIDsgdmVyc2lvblxuICAgIDsgYmluX3F1ZXJ5XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZVxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZVxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlID0gYmluX2Vycm9yXG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2tcbiAgICA7IHF1ZXJ5X3R5cGVfaWRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfaW5pdGlhbF9tZXNzYWdlIHggPVxuICAgIHsgSW5pdGlhbF9tZXNzYWdlLnVudXNlZF9xdWVyeV9pZCA9IFAuVW51c2VkX3F1ZXJ5X2lkLnQ7IGluaXRpYWwgPSB4IH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIHNoYXBlc1xuICAgICAgWyBcInF1ZXJ5XCIsIHQuYmluX3F1ZXJ5LnNoYXBlXG4gICAgICA7IFwiaW5pdGlhbC1yZXNwb25zZVwiLCB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IFwidXBkYXRlLXJlc3BvbnNlXCIsIHQuYmluX3VwZGF0ZV9yZXNwb25zZS5zaGFwZVxuICAgICAgOyBcImVycm9yXCIsIHQuYmluX2Vycm9yX3Jlc3BvbnNlLnNoYXBlXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9nZW4gdCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgaW1wbCA9XG4gICAgbGV0IGJpbl9pbml0X3dyaXRlciA9XG4gICAgICBJbml0aWFsX21lc3NhZ2UuYmluX3dyaXRlcl90XG4gICAgICAgIHQuYmluX2luaXRpYWxfcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgIHQuYmluX2Vycm9yX3Jlc3BvbnNlLndyaXRlclxuICAgIGluXG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFN0cmVhbWluZ19ycGNcbiAgICAgICAgICAodC5iaW5fcXVlcnkucmVhZGVyLCBiaW5faW5pdF93cml0ZXIsIHQuYmluX3VwZGF0ZV9yZXNwb25zZS53cml0ZXIsIGltcGwpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5ID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT4gRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIChFcnJvciBlcnIpKVxuICAgICAgfCBPayAoaW5pdGlhbCwgcGlwZSkgLT4gT2sgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIChPayBpbml0aWFsKSwgcGlwZSlcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gdCA/b25fZXhjZXB0aW9uIChQaXBlIGYpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIGxldCBmIGMgcXVlcnkgd3JpdGVyID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd3JpdGVyIHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KVxuICAgICAgfCBPayBfIGFzIHggLT4gT2sgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpXG4gICAgaW5cbiAgICBpbXBsZW1lbnRfZ2VuID9vbl9leGNlcHRpb24gdCAoRGlyZWN0IGYpXG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgY29ubiBpZCA9XG4gICAgbGV0IHF1ZXJ5ID0geyBQLlF1ZXJ5LnRhZyA9IHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uOyBpZDsgZGF0YSA9IGBBYm9ydCB9IGluXG4gICAgaWdub3JlXG4gICAgICAoQ29ubmVjdGlvbi5kaXNwYXRjaFxuICAgICAgICAgY29ublxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnk6UC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgIDogKHVuaXQsIFsgYENsb3NlZCBdKSBSZXN1bHQudClcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVXBkYXRlIG9mICdhXG4gICAgICB8IENsb3NlZCBvZiBbIGBCeV9yZW1vdGVfc2lkZSB8IGBFcnJvciBvZiBFcnJvci50IF1cbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDb250aW51ZVxuICAgICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9tZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IGNsb3NlX3JlYXNvbiA6IFBpcGVfY2xvc2VfcmVhc29uLnQgRGVmZXJyZWQudFxuICAgICAgfVxuXG4gICAgbGV0IGlkIHQgPSB0LnF1ZXJ5X2lkXG4gICAgbGV0IGNsb3NlX3JlYXNvbiB0ID0gdC5jbG9zZV9yZWFzb25cbiAgZW5kXG5cbiAgbW9kdWxlIFJlc3BvbnNlX3N0YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIFVwZGF0ZV9oYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBQaXBlX21lc3NhZ2UudCAtPiBQaXBlX3Jlc3BvbnNlLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbml0aWFsID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgdCA9XG4gICAgICAgIHsgcnBjIDogKCdxLCAnaSwgJ3UsICdlKSB0XG4gICAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgICAgOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIDogdW5pdCAtPiAnZXh0cmEgKiAndSBVcGRhdGVfaGFuZGxlci50XG4gICAgICAgIDsgaXZhciA6IChQLlF1ZXJ5X2lkLnQgKiAnaSAqICdleHRyYSwgJ2UpIFJlc3VsdC50IFJwY19yZXN1bHQudCBJdmFyLnRcbiAgICAgICAgOyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIDogKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIEluaXRpYWwudCAtPiAndSB0XG4gICAgICAgIHwgV3JpdGluZ191cGRhdGVzIG9mICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogJ2EgVXBkYXRlX2hhbmRsZXIudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudCB9XG4gIGVuZFxuXG4gIGxldCByZWFkX2Vycm9yXG4gICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb25cbiAgICAgICAgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpXG4gICAgICAgIGVyclxuICAgID1cbiAgICBsZXQgY29yZV9lcnIgPVxuICAgICAgRXJyb3IudF9vZl9zZXhwIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gZXJyKVxuICAgIGluXG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgKGBFcnJvciBjb3JlX2VycikpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChFcnJvciBlcnIpXG4gIDs7XG5cbiAgbGV0IGVvZiAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCkgPVxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIGBCeV9yZW1vdGVfc2lkZSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKE9rICgpKVxuICA7O1xuXG4gIGxldCByZXNwb25zZV9oYW5kbGVyIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaW5pdGlhbF9zdGF0ZVxuICAgIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyXG4gICAgPVxuICAgIGxldCBvcGVuIFJlc3BvbnNlX3N0YXRlIGluXG4gICAgbGV0IHN0YXRlID0geyBzdGF0ZSA9IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9zdGF0ZSB9IGluXG4gICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgbWF0Y2ggc3RhdGUuc3RhdGUgd2l0aFxuICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgKGJpbl9yZWFkZXJfdXBkYXRlLCBoYW5kbGVyKSAtPlxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgRW9mIC0+IDBcbiAgICAgICAgICAgICAgICAgfCBgT2sgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgIHwgT2sgYEVvZiAtPiBlb2YgaGFuZGxlclxuICAgICAgICAgICAgfCBPayAoYE9rIGxlbikgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAgICBiaW5fcmVhZGVyX3VwZGF0ZVxuICAgICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgICAgfCBPayBkYXRhIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBoYW5kbGVyIChVcGRhdGUgZGF0YSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDb250aW51ZSAtPiBga2VlcFxuICAgICAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gYHdhaXQgZCkpKSlcbiAgICAgIHwgU3RhdGUuV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX2hhbmRsZXIgLT5cbiAgICAgICAgKCogV2UgbmV2ZXIgdXNlIFtgcmVtb3ZlIChFcnJvciBfKV0gaGVyZSwgc2luY2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkLCBhbmQgdGhlc2UgYXJlIFwibm9ybWFsXCIgZXJyb3JzLiAoSW4gY29udHJhc3QsIHRoZVxuICAgICAgICAgICBlcnJvcnMgd2UgZ2V0IGluIHRoZSBbV3JpdGluZ191cGRhdGVzX3RvX3BpcGVdIGNhc2UgaW5kaWNhdGUgbW9yZSBzZXJpb3VzXG4gICAgICAgICAgIHByb2JsZW1zLikgSW5zdGVhZCwgd2UganVzdCBwdXQgZXJyb3JzIGluIFtpdmFyXS4gKilcbiAgICAgICAgbGV0IGVycm9yIGVyciA9XG4gICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChFcnJvciBlcnIpO1xuICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBpbml0aWFsID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgKEluaXRpYWxfbWVzc2FnZS5iaW5fcmVhZGVyX3RcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2luaXRpYWxfcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9lcnJvcl9yZXNwb25zZS5yZWFkZXIpXG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyBpbml0aWFsX3Jlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgICAgIHwgT2sgaW5pdGlhbF9tc2cgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGluaXRpYWxfbXNnLmluaXRpYWwgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChPayAoRXJyb3IgZXJyKSk7XG4gICAgICAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgICAgICAgfCBPayBpbml0aWFsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBleHRyYSwgaGFuZGxlciA9IGluaXRpYWxfaGFuZGxlci5tYWtlX3VwZGF0ZV9oYW5kbGVyICgpIGluXG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5pdmFyXG4gICAgICAgICAgICAgICAgICAgKE9rIChPayAoaW5pdGlhbF9oYW5kbGVyLnF1ZXJ5X2lkLCBpbml0aWFsLCBleHRyYSkpKTtcbiAgICAgICAgICAgICAgICAgc3RhdGUuc3RhdGVcbiAgICAgICAgICAgICAgICAgPC0gV3JpdGluZ191cGRhdGVzXG4gICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWxfaGFuZGxlci5ycGMuYmluX3VwZGF0ZV9yZXNwb25zZS5yZWFkZXIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICBga2VlcCkpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9nZW4gdCBjb25uIHF1ZXJ5IG1ha2VfdXBkYXRlX2hhbmRsZXIgPVxuICAgIGxldCBiaW5fd3JpdGVyX3F1ZXJ5ID1cbiAgICAgIFAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoXG4gICAgICAgIChXcml0ZXJfd2l0aF9sZW5ndGgub2ZfdHlwZV9jbGFzcyB0LmJpbl9xdWVyeSlcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IGBRdWVyeSBxdWVyeSBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgIGNvbm5cbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgfnF1ZXJ5XG4gICAgICB+ZjooZnVuIGl2YXIgLT5cbiAgICAgICAgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgIDogSW5mby50IG9wdGlvbildKVxuICAgICAgICAgIHsgcnBjID0gdDsgcXVlcnlfaWQ7IGNvbm5lY3Rpb24gPSBjb25uOyBpdmFyOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIH0pXG4gICAgPj58IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgdCBjb25uIHF1ZXJ5IH5mID1cbiAgICBtYXRjaCVtYXAgZGlzcGF0Y2hfZ2VuIHQgY29ubiBxdWVyeSAoZnVuICgpIC0+ICgpLCBmKSB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAoKSkpIC0+IE9rIChPayAoaWQsIGluaXQpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZGlzcGF0Y2hfZ2VuIHQgY29ubiBxdWVyeSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBwaXBlX3IsIHBpcGVfdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgICAgICgqIFNldCBhIHNtYWxsIGJ1ZmZlciB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBwdXNoYmFjayBldmVudHMgKilcbiAgICAgICAgUGlwZS5zZXRfc2l6ZV9idWRnZXQgcGlwZV93IDEwMDtcbiAgICAgICAgbGV0IGNsb3NlX3JlYXNvbiA6IFBpcGVfY2xvc2VfcmVhc29uLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgbGV0IGYgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgVXBkYXRlIGRhdGEgLT5cbiAgICAgICAgICAgIGlmIG5vdCAoUGlwZS5pc19jbG9zZWQgcGlwZV93KVxuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayBwaXBlX3cgZGF0YTtcbiAgICAgICAgICAgICAgaWYgdC5jbGllbnRfcHVzaGVzX2JhY2sgJiYgUGlwZS5sZW5ndGggcGlwZV93ID49IFBpcGUuc2l6ZV9idWRnZXQgcGlwZV93XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBXYWl0XG4gICAgICAgICAgICAgICAgICAobWF0Y2glbWFwIFBpcGUuZG93bnN0cmVhbV9mbHVzaGVkIHBpcGVfdyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPiAoKSlcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICAgICAgICAgIGVsc2UgQ29udGludWVcbiAgICAgICAgICB8IENsb3NlZCByZWFzb24gLT5cbiAgICAgICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eVxuICAgICAgICAgICAgICBjbG9zZV9yZWFzb25cbiAgICAgICAgICAgICAgKG1hdGNoIHJlYXNvbiB3aXRoXG4gICAgICAgICAgICAgICB8IGBCeV9yZW1vdGVfc2lkZSAtPiBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgICAgICAgIHwgYEVycm9yIGVyciAtPiBFcnJvciBlcnIpO1xuICAgICAgICAgICAgUGlwZS5jbG9zZSBwaXBlX3c7XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICBpblxuICAgICAgICAocGlwZV9yLCBjbG9zZV9yZWFzb24pLCBmKVxuICAgIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsIChwaXBlX3IsIGNsb3NlX3JlYXNvbikpKSAtPlxuICAgICAgdXBvbiAoUGlwZS5jbG9zZWQgcGlwZV9yKSAoZnVuICgpIC0+XG4gICAgICAgIGlmIG5vdCAoSXZhci5pc19mdWxsIGNsb3NlX3JlYXNvbilcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWJvcnQgdCBjb25uIGlkO1xuICAgICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjbG9zZV9yZWFzb24gQ2xvc2VkX2xvY2FsbHkpKTtcbiAgICAgIGxldCBwaXBlX21ldGFkYXRhIDogUGlwZV9tZXRhZGF0YS50ID1cbiAgICAgICAgeyBxdWVyeV9pZCA9IGlkOyBjbG9zZV9yZWFzb24gPSBJdmFyLnJlYWQgY2xvc2VfcmVhc29uIH1cbiAgICAgIGluXG4gICAgICBPayAoT2sgKHBpcGVfbWV0YWRhdGEsIGluaXQsIHBpcGVfcikpXG4gIDs7XG5lbmRcblxuKCogQSBQaXBlX3JwYyBpcyBsaWtlIGEgU3RyZWFtaW5nX3JwYywgZXhjZXB0IHdlIGRvbid0IGNhcmUgYWJvdXQgaW5pdGlhbCBzdGF0ZSAtIHRodXNcbiAgIGl0IGlzIHJlc3RyaWN0ZWQgdG8gdW5pdCBhbmQgdWx0aW1hdGVseSBpZ25vcmVkICopXG5tb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UsICdlcnJvcikgdCA9ICgncXVlcnksIHVuaXQsICdyZXNwb25zZSwgJ2Vycm9yKSBTdHJlYW1pbmdfcnBjLnRcblxuICBtb2R1bGUgSWQgPSBQLlF1ZXJ5X2lkXG4gIG1vZHVsZSBNZXRhZGF0YSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YVxuXG4gIGxldCBjcmVhdGUgP2NsaWVudF9wdXNoZXNfYmFjayB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgfmJpbl9lcnJvciAoKSA9XG4gICAgU3RyZWFtaW5nX3JwYy5jcmVhdGVcbiAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgIH5uYW1lXG4gICAgICB+dmVyc2lvblxuICAgICAgfmJpbl9xdWVyeVxuICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlOlVuaXQuYmluX3RcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl9yZXNwb25zZVxuICAgICAgfmJpbl9lcnJvclxuICAgICAgKCogW2luaXRpYWxfcmVzcG9uc2VdIGRvZXNuJ3Qgc2hvdyB1cCBpbiBbUGlwZV9ycGNdJ3Mgc2lnbmF0dXJlLFxuICAgICAgICAgc28gdGhlIHR5cGUtaWQgY3JlYXRlZCB1c2luZyBbYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VdIGlzXG4gICAgICAgICB1bnJlYWNoYWJsZS4gKilcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcIlwiXG4gICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZTpcInJlc3BvbnNlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3Jlc3BvbnNlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3VwZGF0ZV9yZXNwb25zZVxuICBsZXQgYmluX2Vycm9yIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2Vycm9yX3Jlc3BvbnNlXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcblxuICBsZXQgaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBTdHJlYW1pbmdfcnBjLmltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgKGZ1biBhIHF1ZXJ5IC0+XG4gICAgICBsZXQlbWFwIHggPSBmIGEgcXVlcnkgaW5cbiAgICAgIHggPj58fiBmdW4geCAtPiAoKSwgeClcbiAgOztcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gICAgbW9kdWxlIEdyb3VwID0gc3RydWN0XG4gICAgICBtb2R1bGUgQnVmZmVyID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEJpZ3N0cmluZy50IHJlZlxuXG4gICAgICAgIGxldCBjcmVhdGUgPyhpbml0aWFsX3NpemUgPSA0MDk2KSAoKSA9XG4gICAgICAgICAgaWYgaW5pdGlhbF9zaXplIDwgMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLkJ1ZmZlci5jcmVhdGUgZ290IG5lZ2F0aXZlIGJ1ZmZlciBcXFxuICAgICAgICAgICAgICAgc2l6ZVwiXG4gICAgICAgICAgICAgIGluaXRpYWxfc2l6ZVxuICAgICAgICAgICAgICBJbnQuc2V4cF9vZl90O1xuICAgICAgICAgIHJlZiAoQmlnc3RyaW5nLmNyZWF0ZSBpbml0aWFsX3NpemUpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA9ICdhIHRcblxuICAgICAgbW9kdWxlIFQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBULkdyb3VwLnQgPVxuICAgICAgICB7IG11dGFibGUgY29tcG9uZW50cyA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy50XG4gICAgICAgIDsgY29tcG9uZW50c19ieV9pZCA6ICdhIGNvbXBvbmVudCBJZC5UYWJsZS50XG4gICAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICAgIH1cblxuICAgICAgYW5kICdhIGNvbXBvbmVudCA9ICdhIFQuR3JvdXAuY29tcG9uZW50ID1cbiAgICAgICAgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy5FbHQudFxuICAgICAgICA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIDogJ2EgVC5ncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlID9idWZmZXIgKCkgPVxuICAgICAgICBsZXQgYnVmZmVyID1cbiAgICAgICAgICBtYXRjaCBidWZmZXIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuY3JlYXRlICgpXG4gICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICBpblxuICAgICAgICB7IGNvbXBvbmVudHMgPSBCYWcuY3JlYXRlICgpOyBjb21wb25lbnRzX2J5X2lkID0gSWQuVGFibGUuY3JlYXRlICgpOyBidWZmZXIgfVxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCB0ID0gQmFnLmxlbmd0aCB0LmNvbXBvbmVudHNcblxuICAgICAgbGV0IGFkZF9leG4gdCAod3JpdGVyIDogXyBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXIudCkgPVxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogY2Fubm90IGFkZCBhIGNsb3NlZCBkaXJlY3QgXFxcbiAgICAgICAgICAgICBzdHJlYW0gd3JpdGVyXCI7XG4gICAgICAgIGlmIEhhc2h0YmwubWVtIHQuY29tcG9uZW50c19ieV9pZCB3cml0ZXIuaWRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGRfZXhuOiB0cnlpbmcgdG8gYWRkIGEgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlciB0aGF0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgZ3JvdXBcIjtcbiAgICAgICAgKG1hdGNoIEJhZy5jaG9vc2UgdC5jb21wb25lbnRzIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgICBsZXQgb25lID0gQmFnLkVsdC52YWx1ZSBvbmUgaW5cbiAgICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIChiaW5fd3JpdGVyIG9uZSkgKGJpbl93cml0ZXIgd3JpdGVyKSlcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGQ6IGNhbm5vdCBhZGQgYSBkaXJlY3Qgc3RyZWFtIFxcXG4gICAgICAgICAgICAgICAgd3JpdGVyIHdpdGggYSBkaWZmZXJlbnQgYmluX3dyaXRlclwiKTtcbiAgICAgICAgbGV0IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwID0gQmFnLmFkZCB0LmNvbXBvbmVudHMgd3JpdGVyIGluXG4gICAgICAgIGxldCBncm91cF9lbGVtZW50X2luX3dyaXRlciA9XG4gICAgICAgICAgQmFnLmFkZCB3cml0ZXIuZ3JvdXBzIHsgZ3JvdXAgPSB0OyBlbGVtZW50X2luX2dyb3VwID0gd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgfVxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLmFkZF9leG5cbiAgICAgICAgICB0LmNvbXBvbmVudHNfYnlfaWRcbiAgICAgICAgICB+a2V5OndyaXRlci5pZFxuICAgICAgICAgIH5kYXRhOnsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZW1vdmUgdCAod3JpdGVyIDogXyBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXIudCkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9IC0+XG4gICAgICAgICAgQmFnLnJlbW92ZSB0LmNvbXBvbmVudHMgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgQmFnLnJlbW92ZSB3cml0ZXIuZ3JvdXBzIGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGlzdCB0ID0gQmFnLnRvX2xpc3QgdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBmbHVzaGVkX29yX2Nsb3NlZCB0ID1cbiAgICAgICAgdG9fbGlzdCB0XG4gICAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gdCAtPiBEZWZlcnJlZC5hbnlfdW5pdCBbIGZsdXNoZWQgdDsgY2xvc2VkIHQgXSlcbiAgICAgICAgfD4gRGVmZXJyZWQuYWxsX3VuaXRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbHVzaGVkIHQgPSBmbHVzaGVkX29yX2Nsb3NlZCB0XG5cbiAgICAgIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgICAgQmFnLml0ZXIgdC5jb21wb25lbnRzIH5mOihmdW4gZGlyZWN0X3N0cmVhbV93cml0ZXIgLT5cbiAgICAgICAgICAgICgqIFdyaXRlcnMgYXJlIGF1dG9tYXRpY2FsbHkgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGVpciBncm91cHMgd2hlblxuICAgICAgICAgICAgICAgY2xvc2VkLCBzbyBbYENsb3NlZF0gaGVyZSBqdXN0IG1lYW5zIHRoYXQgdGhlIHJlbW92YWwgZGlkbid0IGhhcHBlbiB5ZXQuICopXG4gICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgKEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIGRpcmVjdF9zdHJlYW1fd3JpdGVyIH5idWYgfnBvcyB+bGVuXG4gICAgICAgICAgICAgICA6IFsgYE9rIHwgYENsb3NlZCBdKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JpdGUgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuO1xuICAgICAgICAgIGZsdXNoZWRfb3JfY2xvc2VkIHRcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggPVxuICAgICAgICBtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgb25lIC0+XG4gICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgbGV0IHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9ID0gYmluX3dyaXRlciBvbmUgaW5cbiAgICAgICAgICBsZXQgYnVmZmVyID0gISh0LmJ1ZmZlcikgaW5cbiAgICAgICAgICAoKiBPcHRpbWlzdGljIGZpcnN0IHRyeSAqKVxuICAgICAgICAgIChtYXRjaCB3cml0ZSBidWZmZXIgfnBvczowIHggd2l0aFxuICAgICAgICAgICB8IGxlbiAtPiBFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWY6YnVmZmVyIH5wb3M6MCB+bGVuXG4gICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAoKiBJdCdzIGxpa2VseSB0aGF0IHRoZSBleGNlcHRpb24gaXMgZHVlIHRvIGEgYnVmZmVyIG92ZXJmbG93LCBzbyByZXNpemUgdGhlXG4gICAgICAgICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICAgICAgICAgW0Jpbl9wcm90LkNvbW1vbi5CdWZmZXJfc2hvcnRdIG9ubHksIGhvd2V2ZXIgd2UgY2FuJ3QgZWFzaWx5IGVuZm9yY2UgdGhhdFxuICAgICAgICAgICAgICAgIGN1c3RvbSBiaW5fd3JpdGVfeHh4IGZ1bmN0aW9ucyByYWlzZSB0aGlzIHBhcnRpY3VsYXIgZXhjZXB0aW9uIGFuZCBub3RcbiAgICAgICAgICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgICAgICAgICBsZXQgbGVuID0gc2l6ZSB4IGluXG4gICAgICAgICAgICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAoSW50LmNlaWxfcG93MiBsZW4pIGluXG4gICAgICAgICAgICAgdC5idWZmZXIgOj0gYnVmZmVyO1xuICAgICAgICAgICAgIGxldCBsZW4gPSB3cml0ZSBidWZmZXIgfnBvczowIHggaW5cbiAgICAgICAgICAgICBFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWY6YnVmZmVyIH5wb3M6MCB+bGVuKVxuICAgICAgOztcblxuICAgICAgbGV0IHdyaXRlIHQgeCA9XG4gICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4O1xuICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCB0IGYgPSBTdHJlYW1pbmdfcnBjLmltcGxlbWVudF9kaXJlY3QgdCBmXG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgKCksIHBpcGVfcikgLT4gcGlwZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBQaXBlX3JwY19mYWlsZWRcblxuICBsZXQgZGlzcGF0Y2hfZXhuIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgaW5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgcnBjX2Vycm9yIC0+IHJhaXNlIChFcnJvci50b19leG4gcnBjX2Vycm9yKVxuICAgIHwgT2sgKEVycm9yIF8pIC0+IHJhaXNlIFBpcGVfcnBjX2ZhaWxlZFxuICAgIHwgT2sgKE9rIHBpcGVfYW5kX2lkKSAtPiBwaXBlX2FuZF9pZFxuICA7O1xuXG4gIG1vZHVsZSBQaXBlX21lc3NhZ2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWVzc2FnZVxuICBtb2R1bGUgUGlwZV9yZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9yZXNwb25zZVxuXG4gIGxldCBkaXNwYXRjaF9pdGVyIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2hfaXRlciB0IGNvbm4gcXVlcnkgfmYgaW5cbiAgICByZXNwb25zZSA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKGlkLCAoKSkgLT4gaWRcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQuU3RyZWFtaW5nX3JwYy50YWdcbiAgbGV0IHZlcnNpb24gdCA9IHQuU3RyZWFtaW5nX3JwYy52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5xdWVyeV90eXBlX2lkXG4gIGxldCBlcnJvcl90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgcmVzcG9uc2VfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdzdGF0ZSwgJ3VwZGF0ZSwgJ2Vycm9yKSB0ID1cbiAgICAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgKClcbiAgICA9XG4gICAgU3RyZWFtaW5nX3JwYy5jcmVhdGVcbiAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgIH5uYW1lXG4gICAgICB+dmVyc2lvblxuICAgICAgfmJpbl9xdWVyeVxuICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlOmJpbl9zdGF0ZVxuICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2U6YmluX3VwZGF0ZVxuICAgICAgfmJpbl9lcnJvclxuICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlOlwic3RhdGVcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJ1cGRhdGVcIlxuICAgICAgKClcbiAgOztcblxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3F1ZXJ5XG4gIGxldCBiaW5fc3RhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5faW5pdGlhbF9yZXNwb25zZVxuICBsZXQgYmluX3VwZGF0ZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgaW1wbGVtZW50ID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZVxuICAgID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsIHN0YXRlLCB1cGRhdGVfcikgLT4gc3RhdGUsIHVwZGF0ZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgc3RhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgdXBkYXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgQW55ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBScGMgOiAoJ3EsICdyKSBScGMudCAtPiB0XG4gICAgfCBQaXBlIDogKCdxLCAnciwgJ2UpIFBpcGVfcnBjLnQgLT4gdFxuICAgIHwgU3RhdGUgOiAoJ3EsICdzLCAndSwgJ2UpIFN0YXRlX3JwYy50IC0+IHRcbiAgICB8IE9uZV93YXkgOiAnbSBPbmVfd2F5LnQgLT4gdFxuXG4gIGxldCBkZXNjcmlwdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBScGMgcnBjIC0+IFJwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFBpcGUgcnBjIC0+IFBpcGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgU3RhdGUgcnBjIC0+IFN0YXRlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IE9uZV93YXkgcnBjIC0+IE9uZV93YXkuZGVzY3JpcHRpb24gcnBjXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbi5TdGFibGVcbiAgbW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gUGlwZV9jbG9zZV9yZWFzb24uU3RhYmxlXG4gIG1vZHVsZSBScGMgPSBScGNcbiAgbW9kdWxlIFBpcGVfcnBjID0gUGlwZV9ycGNcbiAgbW9kdWxlIFN0YXRlX3JwYyA9IFN0YXRlX3JwY1xuICBtb2R1bGUgT25lX3dheSA9IE9uZV93YXlcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBScGNcblxubW9kdWxlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBQaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gIHR5cGUgJ2lucHV0IHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgY29udmVydCA6ICdpbnB1dCAtPiAnb3V0cHV0XG4gICAgICAgIDsgd3JpdGVyIDogJ291dHB1dCBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gJ2lucHV0IHRcblxuICBsZXQgY3JlYXRlIH5jb252ZXJ0IH53cml0ZXIgPSBUIHsgY29udmVydDsgd3JpdGVyIH1cblxuICBsZXQgd3JpdGUgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IGNsb3NlIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHdyaXRlclxuICBsZXQgaXNfY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmlzX2Nsb3NlZCB3cml0ZXJcbiAgbGV0IGNsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZWQgd3JpdGVyXG5lbmRcblxubGV0IGZhaWxlZF9jb252ZXJzaW9uIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcInR5cGUgY29udmVyc2lvbiBmYWlsdXJlXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOlxuICAgICAgWyBgTXNnIHwgYFF1ZXJ5IHwgYFJlc3BvbnNlIHwgYEVycm9yIHwgYFN0YXRlIHwgYFVwZGF0ZSBdXG4gICAgICAqIFsgYFJwYyBvZiBzdHJpbmcgXVxuICAgICAgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgICAqIGV4bl1cbjs7XG5cbmxldCBtdWx0aXBsZV9yZWdpc3RyYXRpb25zIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcIm11bHRpcGxlIHJwYyByZWdpc3RyYXRpb25zXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOiBbIGBScGMgb2Ygc3RyaW5nIF0gKiBbIGBWZXJzaW9uIG9mIGludCBdXVxuOztcblxubGV0IHVua25vd25fdmVyc2lvbiB4ID0gRXJyb3IuY3JlYXRlIFwidW5rbm93biBycGMgdmVyc2lvblwiIHggWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG5cbm1vZHVsZSBDYWxsZWVfY29udmVydHMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaW1wbGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyID1cbiAgICAgICAgeyBhZGFwdCA6XG4gICAgICAgICAgICAnc3RhdGUuICgnc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXNwb25zZSBEZWZlcnJlZC50KSAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgYWRhcHRlcnMgOiAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgSW50Lk1hcC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+bmFtZSA9IHsgbmFtZTsgYWRhcHRlcnMgPSBJbnQuTWFwLmVtcHR5IH1cblxuICAgICAgbGV0IHdyYXBfZXJyb3IgZm4gc3RhdGUgcXVlcnkgPVxuICAgICAgICBtYXRjaCVtYXAgZm4gc3RhdGUgcXVlcnkgd2l0aFxuICAgICAgICB8IE9rIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkIHsgbmFtZTsgYWRhcHRlcnMgfSBycGMgYWRhcHRlciA9XG4gICAgICAgIGlmIFN0cmluZy4oIDw+ICkgbmFtZSAoUnBjLm5hbWUgcnBjKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgIFwiUnBjIG5hbWVzIGRvbid0IGFncmVlXCJcbiAgICAgICAgICAgIChuYW1lLCBScGMubmFtZSBycGMpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ11cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHZlcnNpb24gPSBScGMudmVyc2lvbiBycGMgaW5cbiAgICAgICAgICBtYXRjaCBNYXAuZmluZCBhZGFwdGVycyB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgXCJWZXJzaW9uIGFscmVhZHkgZXhpc3RzXCJcbiAgICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24pXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGFkYXB0ZXJzID0gTWFwLnNldCBhZGFwdGVycyB+a2V5OnZlcnNpb24gfmRhdGE6YWRhcHRlciBpblxuICAgICAgICAgICAgT2sgeyBuYW1lOyBhZGFwdGVycyB9KVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbiB0IG9sZF9ycGMgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IGZuIHN0YXRlICh1cGdyYWRlIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGRvd25ncmFkZSByZXN1bHRcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyBhZGFwdGVkXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IG9sZF9ycGMgdXBncmFkZV9vcl9lcnJvciBkb3duZ3JhZGVfb3JfZXJyb3IgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBEZWZlcnJlZC5SZXN1bHQuTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcXVlcnkgPSBEZWZlcnJlZC5yZXR1cm4gKHVwZ3JhZGVfb3JfZXJyb3Igb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcmVzcG9uc2UgPSBmbiBzdGF0ZSBxdWVyeSBpblxuICAgICAgICAgICAgRGVmZXJyZWQucmV0dXJuIChkb3duZ3JhZGVfb3JfZXJyb3IgcmVzcG9uc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgKHdyYXBfZXJyb3IgYWRhcHRlZClcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbiB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50IHQgZm4gPSBNYXAuZGF0YSB0LmFkYXB0ZXJzIHw+IExpc3QubWFwIH5mOihmdW4geyBhZGFwdCB9IC0+IGFkYXB0IGZuKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBxdWVyeSAtPiByZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwucXVlcnkgLT4gTW9kZWwucmVzcG9uc2UgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoaW50LCBpbXBsZW1lbnRlciAqIEFueS50KSBIYXNodGJsLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgX3JwYykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2VcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgUnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCByID0gZiBzIH52ZXJzaW9uIHEgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsIHIpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayByIC0+IHJcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5ScGMgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiByZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPVxuICAgICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiAoTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgICAtPiAodW5pdCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBpbXBsID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChQaXBlIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoRGlyZWN0IGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChNb2RlbC5yZXNwb25zZSAtPiBWZXJzaW9uX2kucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICB8IHEgLT4gcVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuZXJyb3Jfb2ZfbW9kZWwgZXJyb3Igd2l0aFxuICAgICAgICAgIHwgZXJyb3IgLT4gRXJyb3IgZXJyb3JcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgICAgfCBQaXBlIGYgLT5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2glYmluZCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IE9rIHBpcGUgLT5cbiAgICAgICAgICAgICAgICBNb25pdG9yLmhhbmRsZV9lcnJvcnNcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gcmV0dXJuIChPayAoY29udmVydF9waXBlIHBpcGUpKSlcbiAgICAgICAgICAgICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiByZXR1cm4gKHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpKVxuICAgICAgICAgIHwgRGlyZWN0IGYgLT5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50X2RpcmVjdCBycGMgKGZ1biBzIHEgZHN3IC0+XG4gICAgICAgICAgICAgIGxldCB3cml0ZXIgPVxuICAgICAgICAgICAgICAgIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci5jcmVhdGUgfmNvbnZlcnQ6Y29udmVydF9lbHQgfndyaXRlcjpkc3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2glbWFwIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3cml0ZXIgd2l0aFxuICAgICAgICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcilcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCAtPiByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID1cbiAgICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiY2Fubm90IHVzZSBkaXJlY3QgaW50ZXJmYWNlIHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcGlwZSA9IFBpcGUubWFwIHBpcGUgfmY6VmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAoc3RhdGUgKiB1cGRhdGUgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgJ3NcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgLT4gKE1vZGVsLnN0YXRlICogTW9kZWwudXBkYXRlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIHN0YXRlX29mX21vZGVsIDogTW9kZWwuc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5zdGF0ZVxuICAgICAgICAgICAgLT4gTW9kZWwudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgU3RhdGVfcnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEgd2l0aFxuICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBxIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uIHEgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIChtb2RlbF9zdGF0ZSwgcGlwZSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnN0YXRlX29mX21vZGVsIG1vZGVsX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFN0YXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBNb25pdG9yLmhhbmRsZV9lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoT2sgKHN0YXRlLCBWZXJzaW9uX2kudXBkYXRlX29mX21vZGVsIG1vZGVsX3N0YXRlIHBpcGUpKSlcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kuZXJyb3Jfb2ZfbW9kZWwgZXJyb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgZXJyb3IgLT4gRXJyb3IgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfbW9kZWwgOiBNb2RlbC51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgX3N0YXRlIHBpcGUgPSBQaXBlLm1hcCB+Zjp1cGRhdGVfb2ZfbW9kZWwgcGlwZVxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IG1zZyAtPiB1bml0KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgbXNnXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPSAncyAtPiB2ZXJzaW9uOmludCAtPiBNb2RlbC5tc2cgLT4gdW5pdFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoaW50LCBpbXBsZW1lbnRlciAqIEFueS50KSBIYXNodGJsLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgX3JwYykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2cgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfbXNnIDogbXNnIC0+IE1vZGVsLm1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBPbmVfd2F5LmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZ1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBPbmVfd2F5LmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX21zZyBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgTXNnLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgT2sgcSAtPiBmIHMgfnZlcnNpb24gcSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNZW51ID0gc3RydWN0XG4gICgqKioqKioqKioqKioqKioqKiBzb21lIHByb2hpYml0aW9ucyBmb3IgdGhpcyBtb2R1bGUgKioqKioqKioqKioqKioqKioqXG5cbiAgICAgICAgICAgICAgICAgICAgICgxKSAhISEgbmV2ZXIgcHJ1bmUgb2xkIHZlcnNpb25zIG9mIHRoaXMgcnBjICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBJdCBpcyB0b28gZnVuZGFtZW50YWwgdG8gdGhlIHdvcmtpbmdzIG9mIHZhcmlvdXMgdmVyc2lvbmluZ1xuICAgICAgICAgICAgICAgICAgICAgc2NoZW1lcyBhbmQgaXQgcHJvYmFibHkgd29uJ3QgY2hhbmdlIHZlcnkgbXVjaCBhbnl3YXkuXG5cbiAgICAgICAgICAgICAgICAgICAgICgyKSAhISEgb25seSBldmVyIHNheSBcIndpdGggYmluX2lvXCIgb24gYnVpbHQtaW4gb2NhbWwgdHlwZXMgISEhXG5cbiAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIHR5cGVzIGFyZSBpbnQsIGxpc3QsIHN0cmluZywgZXRjLlxuXG4gICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRvIHByb3RlY3Qgb3Vyc2VsdmVzIGFnYWluc3QgY2hhbmdlcyB0byBDb3JlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMsIGZvciBleGFtcGxlLlxuXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgbGV0IG5hbWUgPSBcIl9fVmVyc2lvbmVkX3JwYy5NZW51XCJcblxuICAgIHR5cGUgcXVlcnkgPSB1bml0XG4gICAgdHlwZSByZXNwb25zZSA9IERlc2NyaXB0aW9uLnQgbGlzdFxuICBlbmRcblxuICBpbmNsdWRlIENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoTW9kZWwpXG5cbiAgbGV0IHJwY19uYW1lID0gTW9kZWwubmFtZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBsZXQgdmVyc2lvbiA9IDFcblxuICAgICAgdHlwZSBxdWVyeSA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgdHlwZSByZXNwb25zZSA9IChzdHJpbmcgKiBpbnQpIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgcSA9IHFcblxuICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID1cbiAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgUmVnaXN0ZXIgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBDdXJyZW50X3ZlcnNpb24gPSBWMVxuXG4gIGxldCBhZGQgaW1wbHMgPVxuICAgIGxldCBtZW51ID0gTGlzdC5tYXAgaW1wbHMgfmY6SW1wbGVtZW50YXRpb24uZGVzY3JpcHRpb24gaW5cbiAgICBsZXQgbWVudV9pbXBscyA9IGltcGxlbWVudF9tdWx0aSAoZnVuIF8gfnZlcnNpb246XyAoKSAtPiByZXR1cm4gbWVudSkgaW5cbiAgICBpbXBscyBAIG1lbnVfaW1wbHNcbiAgOztcblxuICB0eXBlIHQgPSBJbnQuU2V0LnQgU3RyaW5nLlRhYmxlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc3VwcG9ydGVkX3JwY3MgdCA9XG4gICAgbGV0IG9wZW4gTGlzdC5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgbmFtZSwgdmVyc2lvbnMgPSBTdHJpbmcuVGFibGUudG9fYWxpc3QgdCBpblxuICAgIGxldCVtYXAgdmVyc2lvbiA9IEludC5TZXQudG9fbGlzdCB2ZXJzaW9ucyBpblxuICAgIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9XG4gIDs7XG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyB0IH5ycGNfbmFtZSA9XG4gICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkludC5TZXQuZW1wdHkgKEhhc2h0YmwuZmluZCB0IHJwY19uYW1lKVxuICA7O1xuXG4gIGxldCBvZl9lbnRyaWVzIGVudHJpZXMgPVxuICAgIEhhc2h0YmwubWFwIH5mOkludC5TZXQub2ZfbGlzdCAoU3RyaW5nLlRhYmxlLm9mX2FsaXN0X211bHRpIGVudHJpZXMpXG4gIDs7XG5cbiAgbGV0IHJlcXVlc3QgY29ubiA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBScGMuZGlzcGF0Y2ggQ3VycmVudF92ZXJzaW9uLnJwYyBjb25uICgpIGluXG4gICAgUmVzdWx0Lm1hcCByZXN1bHQgfmY6b2ZfZW50cmllc1xuICA7O1xuXG4gIGxldCBjcmVhdGUgZGVzY3JpcHRpb25zID1cbiAgICBMaXN0Lm1hcCBkZXNjcmlwdGlvbnMgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgIHw+IG9mX2VudHJpZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ29ubmVjdGlvbl93aXRoX21lbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICA7IG1lbnUgOiBNZW51LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgY3JlYXRlIGNvbm5lY3Rpb24gPVxuICAgIGxldCBvcGVuIERlZmVycmVkLk9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgICBsZXQlbWFwIG1lbnUgPSBNZW51LnJlcXVlc3QgY29ubmVjdGlvbiBpblxuICAgIHsgY29ubmVjdGlvbjsgbWVudSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9kaXJlY3RseSBjb25uZWN0aW9uIG1lbnUgPSB7IGNvbm5lY3Rpb247IG1lbnUgfVxuZW5kXG5cbm1vZHVsZSBDYWxsZXJfY29udmVydHMgPSBzdHJ1Y3RcbiAgbGV0IG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIH5ycGNfbmFtZSB+Y2FsbGVyX3ZlcnNpb25zIH5jYWxsZWVfdmVyc2lvbnMgfmNhbGxlZV9tZW51ID1cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIGNhbGxlZV92ZXJzaW9ucyBjYWxsZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBlcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIlxuICAgICAgICAgICAgKHJwY19uYW1lIDogc3RyaW5nKVxuICAgICAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX21lbnUgOiBNZW51LnQpXVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImhpZ2hlc3QgdmVyc2lvbiBudW1iZXIgaXMgdGFrZW4gaW4gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cIiA9XG4gICAgbGV0IHJwY19uYW1lID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIHJwY19uYW1lLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZVxuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDIgXSlcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0IHt8IChPayAyKSB8fV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJlcnJvciBmcm9tIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIGxvb2tzIHJlYXNvbmFibGVcIiA9XG4gICAgbGV0IHRoZV9ycGMgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBub3RfdGhlX3JwYyA9IFwib3RoZXItcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIG5vdF90aGVfcnBjLCAxOyBub3RfdGhlX3JwYywgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWU6dGhlX3JwY1xuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOnRoZV9ycGMpXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdFxuICAgICAge3xcbiAgICAgIChFcnJvclxuICAgICAgIChcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCIgKHJwY19uYW1lIHRoZS1ycGMpXG4gICAgICAgIChjYWxsZXJfdmVyc2lvbnMgKDEgMiAzKSkgKGNhbGxlZV92ZXJzaW9ucyAoKSlcbiAgICAgICAgKGNhbGxlZV9tZW51ICgob3RoZXItcnBjICgxIDIpKSkpKSl8fV1cbiAgOztcblxuICBtb2R1bGUgRGlzcGF0Y2ggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IE1vbmFkKSA9IHN0cnVjdFxuICAgICAgb3BlbiBNXG5cbiAgICAgIGxldCB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5kaXNwYXRjaGVyIH5yZWdpc3RyeSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoRXJyb3IgKHVua25vd25fdmVyc2lvbiAobmFtZSwgdmVyc2lvbikpKVxuICAgICAgICB8IFNvbWUgKGRpc3BhdGNoLCBfcnBjKSAtPiBkaXNwYXRjaGVyIGRpc3BhdGNoIGNvbm5lY3Rpb24gcXVlcnlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgICAgeyBDb25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uOyBtZW51IH1cbiAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICAgIH5kaXNwYXRjaGVyXG4gICAgICAgID1cbiAgICAgICAgbGV0IGNhbGxlZV92ZXJzaW9ucyA9IE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOm5hbWUgaW5cbiAgICAgICAgbGV0IGNhbGxlcl92ZXJzaW9ucyA9IHZlcnNpb25zICgpIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgICAgIH5ycGNfbmFtZTpuYW1lXG4gICAgICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRXJyb3IgZSAtPiByZXR1cm4gKEVycm9yIGUpXG4gICAgICAgIHwgT2sgdmVyc2lvbiAtPlxuICAgICAgICAgIHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfnJlZ2lzdHJ5IH5kaXNwYXRjaGVyXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIEFzeW5jID0gTWFrZSAoRGVmZXJyZWQpXG4gICAgbW9kdWxlIERpcmVjdCA9IE1ha2UgKE1vbmFkLklkZW50KVxuICBlbmRcblxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiByZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyJyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogTW9kZWwucXVlcnkgLT4gcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2VcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIG1xID1cbiAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBtcSkgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgfCBPayBxIC0+XG4gICAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gUnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICAgICAgUmVzdWx0LmJpbmQgcmVzdWx0IH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSBtcSByKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBPayByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5ScGMgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIFJlZ2lzdGVyJyAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSBfIHIgPSBtb2RlbF9vZl9yZXNwb25zZSByXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAocmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudCwgZXJyb3IpIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiBmOihyZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBlcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgZGlzcGF0Y2hlciA9XG4gICAgICAgIHsgYWJvcnQgOiBDb25uZWN0aW9uLnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0XG4gICAgICAgIDsgZGlzcGF0Y2ggOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gKCBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICAgICAsIE1vZGVsLmVycm9yIClcbiAgICAgICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50XG4gICAgICAgIDsgZGlzcGF0Y2hfaXRlciA6XG4gICAgICAgICAgICBDb25uZWN0aW9uLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAtPiBmOihNb2RlbC5yZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGRpc3BhdGNoZXIgKiBBbnkudCkgSW50LlRhYmxlLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSB+ZiA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoX2l0ZXI7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoX2l0ZXIgY29ubiBxdWVyeSB+ZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaCBjb25uIHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgbGV0IGFib3J0X211bHRpIGNvbm5fd2l0aF9tZW51IGlkID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBpZFxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGFib3J0OyBfIH0gY29ubiBpZCAtPlxuICAgICAgICAgICAgYWJvcnQgY29ubiBpZDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChWZXJzaW9uX2kucmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuICAgICAgICBvcGVuIENvbnZlcnRcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBQaXBlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9yZXNwb25zZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICByZXR1cm4gKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgcSAtPiByZXR1cm4gKE9rIHEpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vayA9XG4gICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgICAgfCBPayAoRXJyb3IgZSkgLT5cbiAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IE9rIChPayBvaykgLT4gT2sgKE9rIChjb252ZXJ0X29rIG9rKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBQaXBlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOihmdW4gKHBpcGUsIGlkKSAtPiBjb252ZXJ0X3BpcGUgcGlwZSwgaWQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoX2l0ZXIgY29ubiBxIH5mID1cbiAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0IGNvbnZlcnRfbWVzc2FnZSAobSA6IF8gUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQpID1cbiAgICAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgICAgfCBDbG9zZWQgXyBhcyBjbG9zZWQgLT4gY2xvc2VkXG4gICAgICAgICAgICB8IFVwZGF0ZSB1IC0+IFVwZGF0ZSAoY29udmVydF9lbHQgdSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID1cbiAgICAgICAgICAgIFBpcGVfcnBjLmRpc3BhdGNoX2l0ZXIgcnBjIGNvbm4gcSB+ZjooZnVuIG1lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgZiAoY29udmVydF9tZXNzYWdlIG1lc3NhZ2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOkZuLmlkXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGFib3J0IGNvbm4gaWQgPSBQaXBlX3JwYy5hYm9ydCBycGMgY29ubiBpZFxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXRcbiAgICAgICAgICAgICAgcmVnaXN0cnlcbiAgICAgICAgICAgICAgfmtleTp2ZXJzaW9uXG4gICAgICAgICAgICAgIH5kYXRhOih7IGFib3J0OyBkaXNwYXRjaDsgZGlzcGF0Y2hfaXRlciB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICA6ICByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJDYW5ub3QgdXNlIERpcmVjdCB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIFZlcnNpb25faS52ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKCBzdGF0ZSAqIHVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGVycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9zdGF0ZSA6IHN0YXRlIC0+IE1vZGVsLnN0YXRlXG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgfCBxIC0+XG4gICAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gU3RhdGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPiBFcnJvciBleG5cbiAgICAgICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgIHwgT2sgKE9rIChzdGF0ZSwgcGlwZSwgaWQpKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3N0YXRlIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBPayAoT2sgKHN0YXRlLCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHBpcGUsIGlkKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZSA6IHVwZGF0ZSAtPiBNb2RlbC51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBtc2cgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBtc2cgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIG1zZ1xuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2cgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbXNnX29mX21vZGVsIDogTW9kZWwubXNnIC0+IG1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBPbmVfd2F5LmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZ1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubXNnX29mX21vZGVsIHEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgfCBPayBxIC0+IE9uZV93YXkuZGlzcGF0Y2ggcnBjIGNvbm4gcVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuT25lX3dheSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJvdGhfY29udmVydCA9IHN0cnVjdFxuICBtb2R1bGUgUGxhaW4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlZV9yZXNwb25zZVxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBjYWxsZWVfcXVlcnkgLT4gY2FsbGVlX3Jlc3BvbnNlIERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5ScGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb24gOiBzaWdcbiAgICAgICAgICBvcGVuIE1vZGVsXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IENhbGxlZS5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBDYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVyX2Vycm9yXG4gICAgICB0eXBlIGNhbGxlZV9lcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gKCBjYWxsZXJfcmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiBmOihjYWxsZXJfcmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgY2FsbGVyX2Vycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGFib3J0X211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9yZXNwb25zZSBQaXBlLlJlYWRlci50LCBjYWxsZWVfZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiBjYWxsZWVfcmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgIC0+ICh1bml0LCBjYWxsZWVfZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlBpcGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlBpcGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLkNhbGxlci5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLkNhbGxlZS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiByZXNwb25zZSBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICA6ICByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZXIucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5DYWxsZXIucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGRpc3BhdGNoX2l0ZXJfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgbGV0IGFib3J0X211bHRpID0gQ2FsbGVyLmFib3J0X211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9kaXJlY3RfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3N0YXRlXG4gICAgICB0eXBlIGNhbGxlZV9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZXJfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlZV91cGRhdGVcbiAgICAgIHR5cGUgY2FsbGVyX2Vycm9yXG4gICAgICB0eXBlIGNhbGxlZV9lcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gKCBjYWxsZXJfc3RhdGUgKiBjYWxsZXJfdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgY2FsbGVyX2Vycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiAoY2FsbGVlX3N0YXRlICogY2FsbGVlX3VwZGF0ZSBQaXBlLlJlYWRlci50LCBjYWxsZWVfZXJyb3IpIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5TdGF0ZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogTW9kZWwuQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5DYWxsZWUucXVlcnlcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9zdGF0ZSA6IHN0YXRlIC0+IE1vZGVsLkNhbGxlci5zdGF0ZVxuICAgICAgICB2YWwgc3RhdGVfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGVycm9yX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICA6ICB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlZS51cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHN0YXRlX29mX21vZGVsID0gc3RhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsID0gdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZSA6IHVwZGF0ZSAtPiBNb2RlbC5DYWxsZXIudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHN0YXRlX29mX21vZGVsID0gc3RhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsID0gdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3N0YXRlID0gY2FsbGVyX21vZGVsX29mX3N0YXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlID0gY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX21zZ1xuICAgICAgdHlwZSBjYWxsZWVfbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gY2FsbGVyX21zZyAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX21zZyAtPiB1bml0KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZ1xuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5PbmVfd2F5Lk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb24gOiBzaWdcbiAgICAgICAgICBvcGVuIE1vZGVsXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgICAgdHlwZSBtc2cgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIG1zZ19vZl9jYWxsZXJfbW9kZWwgOiBDYWxsZXIubXNnIC0+IG1zZ1xuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfbXNnIDogbXNnIC0+IENhbGxlZS5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9tc2cgPSBjYWxsZWVfbW9kZWxfb2ZfbXNnXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbXNnX29mX21vZGVsID0gbXNnX29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcblxuICAgICAgKCogTm90ZTogQ2FsbGVyLnZlcnNpb25zIGlzIHRoZSBzYW1lIGFzIENhbGxlZS52ZXJzaW9ucywgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICAgICAgIG9uZSB3ZSBjYWxsIGhlcmUuIFNhbWUgZm9yIFtycGNzXS4gKilcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0XG4gIG1vZHVsZSBIZWFkZXIgPSBIZWFkZXJcbiAgbW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gSGFuZGxlcl9yZXN1bHRcbiAgbW9kdWxlIFNlbmRfcmVzdWx0ID0gU2VuZF9yZXN1bHRcbiAgbW9kdWxlIFJlYWRlciA9IFJlYWRlclxuICBtb2R1bGUgV3JpdGVyID0gV3JpdGVyXG5lbmRcblxubGV0IHJlYyBwaXBlX3JlYWQgdCBmID1cbiAgbWF0Y2glYmluZCBQaXBlLnZhbHVlc19hdmFpbGFibGUgdCB3aXRoXG4gIHwgYEVvZiAtPiBmIGBFb2ZcbiAgfCBgT2sgLT5cbiAgICAobWF0Y2ggUGlwZS5yZWFkX25vdycgdCB3aXRoXG4gICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHBpcGVfcmVhZCB0IGZcbiAgICAgfCAoYEVvZiB8IGBPayBfKSBhcyByZXMgLT4gZiByZXMpXG47O1xuXG5tb2R1bGUgdHlwZSBEQVRBID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgYWRkX3RvX2JpZ2J1ZmZlciA6IEJpZ2J1ZmZlci50IC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fYmlnc3RyaW5nIDogdCAtPiBCaWdzdHJpbmcudFxuICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBQaXBlX2FuZF9idWZmZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBpcGUgOiAnYSBQaXBlLlJlYWRlci50XG4gICAgOyBidWZmZXIgOiBCaWdidWZmZXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHBpcGUgPSB7IHBpcGU7IGJ1ZmZlciA9IEJpZ2J1ZmZlci5jcmVhdGUgSGVhZGVyLmxlbmd0aCB9XG5lbmRcblxubW9kdWxlIFBpcGVfcmVhZGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX2J1ZmZlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNsb3NlICh0IDogdCkgPVxuICAgIFBpcGUuY2xvc2VfcmVhZCB0LnBpcGU7XG4gICAgRGVmZXJyZWQudW5pdFxuICA7O1xuXG4gIGxldCBpc19jbG9zZWQgKHQgOiB0KSA9IFBpcGUuaXNfY2xvc2VkIHQucGlwZVxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKHQgOiB0KSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogKF8sIF8pIERlZmVycmVkLlJlc3VsdC50ID1cbiAgICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgICAoKiBEZXF1ZXVlIHVudGlsIGVub3VnaCBkYXRhIChbbmVlZF0pIGlzIGF2YWlsYWJsZSBhbmQgdHJ5IHJlYWQgbWVzc2FnZXMgKilcbiAgICBsZXQgcmVjIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPVxuICAgICAgbWF0Y2ggUXVldWUuZGVxdWV1ZSBxdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogUXVldWUgaXMgZW1wdHkgLSB3ZSBuZWVkIHRvIHdhaXQgZm9yIG1vcmUgZGF0YSAqKVxuICAgICAgICByZXR1cm4gKFNlY29uZCBuZWVkKVxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgbGV0IGJ1ZmZfbGVuID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgbGV0IGRhdGFfbGVuID0gRGF0YS5sZW5ndGggZGF0YSBpblxuICAgICAgICBpZiBidWZmX2xlbiA9IDAgJiYgZGF0YV9sZW4gPj0gbmVlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgaGF2ZSBlbm91Z2ggZGF0YSBhbmQgYnVmZmVyIGlzIGVtcHR5LlxuICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIGV2ZXJ5IGJpbl9wcm90IG1lc3NhZ2UgaXMgc2VudCBpbiBpdHMgb3duXG4gICAgICAgICAgICAgd2Vic29ja2V0IGZyYW1lICopXG4gICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YTooRGF0YS50b19iaWdzdHJpbmcgZGF0YSkgfmxlbmd0aDpkYXRhX2xlbiBxdWV1ZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBTbG93IHBhdGguIFdlIGhhdmUgdG8gYWNjdW11bGF0ZSBbQmlnc3RyaW5nLnRdcyAqKVxuICAgICAgICAgIERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YTtcbiAgICAgICAgICBpZiBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciA+PSBuZWVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGVyZSBpcyBlbm91Z2ggZGF0YSBpbiB0aGUgYnVmZmVyICopXG4gICAgICAgICAgICBsZXQgZGF0YSA9IEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIgaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIHF1ZXVlKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqIFdlIG5lZWQgbW9yZSBkYXRhIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSlcbiAgICAoKiBSZWFkIGFzIG1hbnkgbWVzc2FnZXMgYXMgcG9zc2libGUgZnJvbSB0aGUgY3VycmVudCBkYXRhICopXG4gICAgYW5kIHByb2Nlc3NfZGF0YSB+cG9zIH5kYXRhIH5sZW5ndGggcXVldWUgPVxuICAgICAgaWYgbGVuZ3RoID49IEhlYWRlci5sZW5ndGhcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcGF5bG9hZF9sZW4gPSBIZWFkZXIudW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3MgaW5cbiAgICAgICAgbGV0IHRvdGFsX2xlbiA9IEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX2xlbiBpblxuICAgICAgICBpZiBsZW5ndGggPj0gdG90YWxfbGVuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIG9uX21lc3NhZ2UgZGF0YSB+cG9zOihwb3MgKyBIZWFkZXIubGVuZ3RoKSB+bGVuOnBheWxvYWRfbGVuIHdpdGhcbiAgICAgICAgICB8IEhhbmRsZXJfcmVzdWx0LlN0b3AgeCAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgKCogTWFrZSBzdXJlIHRoYXQgYWxsIGRhdGEgd2UndmUgcmVhZCAoYW5kIG5vdCBcImNvbnN1bWVkXCIpIGZyb20gdGhlIHBpcGVcbiAgICAgICAgICAgICAgIGlzIGtlcHQgaW4gdGhlIGJ1ZmZlci5cbiAgICAgICAgICAgICAgIFRoYXQgaXMgdGhlIHJlbWFpbmluZyBiaXRzIGluIFtkYXRhXSBhbmQgYWxsIGNvbnRlbnRzIGluIFtxdWV1ZV0uXG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGE7XG4gICAgICAgICAgICBRdWV1ZS5pdGVyIHF1ZXVlIH5mOihmdW4gZGF0YSAtPiBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIChGaXJzdCB4KVxuICAgICAgICAgIHwgKENvbnRpbnVlIHwgV2FpdCBfKSBhcyBjb250aW51ZV9vcl93YWl0IC0+XG4gICAgICAgICAgICBsZXQlYmluZCAoKSA9XG4gICAgICAgICAgICAgIG1hdGNoIGNvbnRpbnVlX29yX3dhaXQgd2l0aFxuICAgICAgICAgICAgICB8IEhhbmRsZXJfcmVzdWx0LlN0b3AgXyAtPlxuICAgICAgICAgICAgICAgICgqIEltcG9zc2libGU6IHRoaXMgYnJhbmNoIGRvZXMgbm90IGNvbnRhaW4gW1N0b3AgX10gKilcbiAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgfCBDb250aW51ZSAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gcG9zICsgdG90YWxfbGVuIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIC0gdG90YWxfbGVuIGluXG4gICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgIGlmIGxlbmd0aCA+IDBcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgKCogUHJvY2VzcyB0aGUgcmVzdCBvZiB0aGUgZGF0YS5cbiAgICAgICAgICAgICAgICAgTW9yZSB0aGFuIG9uZSBiaW5fcHJvdCBtZXNzYWdlIHdhcyBzZW50IGluc2lkZSB0aGUgd2Vic29ja2V0IGZyYW1lICopXG4gICAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zIH5kYXRhIH5sZW5ndGggcXVldWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogbGVuZ3RoID0gMCAqKVxuICAgICAgICAgICAgICAoKiBBbGwgZGF0YSB3YXMgcmVhZCAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgICAgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aDowIH5xdWV1ZSB+ZGF0YSlcbiAgICAgICAgZWxzZSBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOnRvdGFsX2xlbiB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhKVxuICAgICAgZWxzZSBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOkhlYWRlci5sZW5ndGggfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YVxuICAgIGFuZCBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YSA9XG4gICAgICBpZiBsZW5ndGggPSAwXG4gICAgICB0aGVuIEJpZ2J1ZmZlci5jbGVhciBidWZmZXJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZGF0YSA9IEJpZ3N0cmluZy5zdWIgZGF0YSB+cG9zIH5sZW46bGVuZ3RoIGluXG4gICAgICAgIEJpZ2J1ZmZlci5jbGVhciBidWZmZXI7XG4gICAgICAgIEJpZ2J1ZmZlci5hZGRfYmlnc3RyaW5nIGJ1ZmZlciBkYXRhKVxuICAgIGFuZCBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGEgPVxuICAgICAgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGE7XG4gICAgICBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlXG4gICAgaW5cbiAgICBsZXQgcmVjIHdhaXRfZm9yX3JlYWQgfm5lZWQgPVxuICAgICAgcGlwZV9yZWFkIHQucGlwZSAoZnVuY3Rpb25cbiAgICAgICAgfCBgRW9mIC0+IHJldHVybiAoRXJyb3IgYEVvZilcbiAgICAgICAgfCBgT2sgcXVldWUgLT4gcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSA+Pj0gZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSlcbiAgICBhbmQgZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSBuZXh0ID1cbiAgICAgIG9uX2VuZF9vZl9iYXRjaCAoKTtcbiAgICAgIG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBGaXJzdCByZXN1bHQgLT4gcmV0dXJuIChPayByZXN1bHQpXG4gICAgICB8IFNlY29uZCBuZWVkIC0+IHdhaXRfZm9yX3JlYWQgfm5lZWRcbiAgICBpblxuICAgIGxldCBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmRhdGEgfmxlbmd0aCA9XG4gICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhIH5sZW5ndGggKFF1ZXVlLmNyZWF0ZSAoKSkgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWVcbiAgICBpblxuICAgICgqIFdlIGVpdGhlciBzdGFydCBieVxuICAgICAgIC0gcHJvY2Vzc2luZyByZW1haW5pbmcgYml0cyBpbiB0aGUgYnVmZmVyXG4gICAgICAgLSBvciB3YWl0aW5nIGZvciBtb3JlIGRhdGEgaW4gdGhlIHBpcGUgKilcbiAgICBsZXQgbmVlZCA9IEhlYWRlci5sZW5ndGggaW5cbiAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICBpZiBJbnQuKCA8ICkgbGVuZ3RoIG5lZWRcbiAgICB0aGVuIHdhaXRfZm9yX3JlYWQgfm5lZWRcbiAgICBlbHNlIHN0YXJ0X3Byb2Nlc3NpbmdfZXhpc3RpbmdfZGF0YSB+bGVuZ3RoIH5kYXRhOihCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IERhdGEudFxuXG4gICAgbGV0IG9mX2JpZ3N0cmluZyA9IERhdGEub2ZfYmlnc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQaXBlX2FuZF9tb25pdG9yID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5Xcml0ZXIudFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHBpcGUgPSB7IHBpcGU7IG1vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSAoKSB9XG5lbmRcblxuKCogV2UgZG9uJ3QgcGVyZm9ybSBhbnkgYnVmZmVyaW5nIGhlcmUuXG4gICBBIG1lc3NhZ2UgaXMgY29uc2lkZXIgdG8gYmUgZmx1c2hlZCBhcyBzb29uIGFzIGl0IGVudGVycyB0aGUgcGlwZS4gKilcbm1vZHVsZSBQaXBlX3dyaXRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9tb25pdG9yLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZSB0LnBpcGU7XG4gICAgRGVmZXJyZWQudW5pdFxuICA7O1xuXG4gIGxldCBpc19jbG9zZWQgKHQgOiB0KSA9IFBpcGUuaXNfY2xvc2VkIHQucGlwZVxuICBsZXQgbW9uaXRvciAodCA6IHQpID0gdC5tb25pdG9yXG5cbiAgKCogQmVjYXVzZSB3ZSBkb24ndCBtYWludGFpbiBhbnkgYnVmZmVyLCB0aGVyZSBhcmUgbm8gcGVuZGluZyB3cml0ZXMgKilcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChfIDogdCkgPSAwXG4gIGxldCBzdG9wcGVkICh0IDogdCkgPSBQaXBlLmNsb3NlZCB0LnBpcGVcblxuICAoKiBXZSBjb25zaWRlciB0aGF0IGEgbWVzc2FnZSBpcyBmbHVzaGVkIGFzIHNvb24gYXMgaXQgcmVhY2hlcyB0aGUgdW5kZXJsaW5pbmdcbiAgICAgdHJhbnNwb3J0LiAqKVxuICBsZXQgZmx1c2hlZCAoXyA6IHQpID0gRGVmZXJyZWQudW5pdFxuICBsZXQgcmVhZHlfdG9fd3JpdGUgPSBmbHVzaGVkXG4gIGxldCBzZW50X3Jlc3VsdCB4IDogXyBTZW5kX3Jlc3VsdC50ID0gU2VudCB4XG5cbiAgbGV0IGNoZWNrX2Nsb3NlZCAodCA6IHQpIGYgPVxuICAgIGlmIG5vdCAoUGlwZS5pc19jbG9zZWQgdC5waXBlKSB0aGVuIGYgKCkgZWxzZSBTZW5kX3Jlc3VsdC5DbG9zZWRcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdCB0IHdyaXRlciB4ID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICBsZXQgYnVmID0gQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgfmhlYWRlcjp0cnVlIHdyaXRlciB4IGluXG4gICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdC5waXBlIChEYXRhLm9mX2JpZ3N0cmluZyBidWYpO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0XG4gICAgICAgICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKVxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuOnBheWxvYWRfc2l6ZVxuICAgID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICAoKiBXcml0ZSB0aGUgc2l6ZSBoZWFkZXIgbWFudWFsbHkgYW5kIGNvbmNhdGVuYXRlIHRoZSB0d28gKilcbiAgICAgIGxldCBkYXRhX3NpemUgPSB3cml0ZXIuc2l6ZSB4IGluXG4gICAgICBsZXQgZGF0YSA9IEJpZ3N0cmluZy5jcmVhdGUgKGRhdGFfc2l6ZSArIEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX3NpemUpIGluXG4gICAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3M6MCAoZGF0YV9zaXplICsgcGF5bG9hZF9zaXplKTtcbiAgICAgIGxldCBkc3RfcG9zID0gd3JpdGVyLndyaXRlIGRhdGEgfnBvczpIZWFkZXIubGVuZ3RoIHggaW5cbiAgICAgIEJpZ3N0cmluZy5ibGl0IH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OmRhdGEgfmRzdF9wb3MgfmxlbjpwYXlsb2FkX3NpemU7XG4gICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdC5waXBlIChEYXRhLm9mX2JpZ3N0cmluZyBkYXRhKTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgbWF0Y2ggc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgIHwgU2VudCAoKSAtPiBzZW50X3Jlc3VsdCBEZWZlcnJlZC51bml0XG4gICAgfCAoQ2xvc2VkIHwgTWVzc2FnZV90b29fYmlnIF8pIGFzIHIgLT4gclxuICA7O1xuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0geFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSB4XG5lbmRcblxubW9kdWxlIFN0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLnRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKFN0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChTdHJpbmdfZGF0YSlcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCaWdzdHJpbmcgOiBiaWdzdHJpbmcgdFxuXG4gIGxldCBzdHJpbmcgPSBTdHJpbmdcbiAgbGV0IGJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xuZW5kXG5cbmxldCBtYWtlX3JlYWRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAocmVhZGVyIDogYSBQaXBlLlJlYWRlci50KSA9XG4gIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuOztcblxubGV0IG1ha2Vfd3JpdGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpICh3cml0ZXIgOiBhIFBpcGUuV3JpdGVyLnQpID1cbiAgbGV0IHdyaXRlciA9IFBpcGVfYW5kX21vbml0b3IuY3JlYXRlIHdyaXRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuOztcblxubGV0IGNyZWF0ZSBraW5kIHJlYWRlciB3cml0ZXIgPVxuICB7IFRyYW5zcG9ydC5yZWFkZXIgPSBtYWtlX3JlYWRlciBraW5kIHJlYWRlcjsgd3JpdGVyID0gbWFrZV93cml0ZXIga2luZCB3cml0ZXIgfVxuOztcblxuKCogVGVzdGluZyAqKVxuXG5tb2R1bGUgdHlwZSBUcmFuc3BvcnRfcmVhZGVyID0gc2lnXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUcmFuc3BvcnQuUmVhZGVyLlMgd2l0aCB0eXBlIHQgPSBGb3JfdGVzdGluZy50IFBpcGVfYW5kX2J1ZmZlci50XG5lbmRcblxubW9kdWxlIFRlc3RfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcblxuICBsZXQgb25fbWVzc2FnZSA/KG1lc3NhZ2UgPSBkZWZhdWx0X21lc3NhZ2UpIG9uX21lc3NhZ2VfY291bnQgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgb25fbWVzc2FnZV9jb3VudCA6PSAhb25fbWVzc2FnZV9jb3VudCArIDE7XG4gICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6bWVzc2FnZTtcbiAgICBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICA7O1xuXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50ICgpID0gaW5jciBvbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biB2ZXJpZnkgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2VfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBvbl9tZXNzYWdlX2NvdW50IGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKTtcbiAgICB3YWl0ICgpO1xuICAgIHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50IG1lc3NhZ2VfY291bnQgYmF0Y2hfY291bnQgPVxuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX21lc3NhZ2VfY291bnQgfmV4cGVjdDptZXNzYWdlX2NvdW50O1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX2VuZF9vZl9iYXRjaF9jb3VudCB+ZXhwZWN0OmJhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIikgaW5cbiAgICBsZXQgbWVzc2FnZV9yYXcgPSBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3KTtcbiAgICB3cml0ZSBidWY7XG4gICAgd2FpdCAoKTtcbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHdyaXRlIHBhcnQxO1xuICAgIHdhaXQgKCk7XG4gICAgd3JpdGUgcGFydDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgd3JpdGUgdHdvX21zZ1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tc2cgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbXNnIH5wb3M6aSB+bGVuOjEpO1xuICAgICAgd2FpdCAoKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rICh2ZXJpZnkgMSAxKVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSAyIDEpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVuayAodmVyaWZ5IDEgMylcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVuayAodmVyaWZ5IDIgMSlcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rICh2ZXJpZnkgMiAzNClcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgNyA0MClcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiY2FuIGNhbGwgcmVhZF9mb3JldmVyIG11bHRpcGxlIHRpbWVzXCIgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpIGluXG4gICAgbGV0IHdyaXRlIHggPSBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkgaW5cbiAgICBsZXQgbnVtID0gcmVmIDAgaW5cbiAgICBsZXQgc3RvcF9hZnRlcl9vbl9tZXNzYWdlIGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgICAgaW5jciBudW07XG4gICAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDpkZWZhdWx0X21lc3NhZ2U7XG4gICAgICBIYW5kbGVyX3Jlc3VsdC5TdG9wICgpXG4gICAgaW5cbiAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgIFBpcGUuY2xvc2Ugd3JpdGVyO1xuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAobGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBEZWZlcnJlZC51bml0KTtcbiAgICB3YWl0ICgpO1xuICAgIFsldGVzdF9yZXN1bHQ6IEludC50XSB+ZXhwZWN0OjIgIW51bVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcblxubW9kdWxlIEJlbmNoX3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG4gIGxldCBvbmVfbWVzc2FnZSA9IGNyZWF0ZV9tZXNzYWdlICgpXG4gIGxldCB0d29fbWVzc2FnZXMgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21lc3NhZ2U7IG9uZV9tZXNzYWdlIF1cblxuICBsZXQgb25lX21lc3NhZ2VfcDEsIG9uZV9tZXNzYWdlX3AyID1cbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHBhcnQxLCBwYXJ0MlxuICA7O1xuXG4gIGxldCBvbl9tZXNzYWdlIF9idWZmZXIgfnBvczpfIH5sZW46XyA9IEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKVxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIGZvciBfID0gMCB0byAxMDAgZG9cbiAgICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKVxuICAgIGRvbmU7XG4gICAgd2FpdCAoKVxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgb25lX21lc3NhZ2VcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpXG5cbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMTtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgdHdvX21lc3NhZ2VzXG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21lc3NhZ2VzIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21lc3NhZ2VzIH5wb3M6aSB+bGVuOjEpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfM19jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnX29uZV9ieXRlXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJtdWx0aVwiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5lbmRcblxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS50XG5cbiAgICBsZXQgcnBjX2Nvbm5lY3Rpb24gPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LmNvbm5lY3Rpb25cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIChycGNfY29ubmVjdGlvbiB0KVxuICBlbmQpXG5cbm1vZHVsZSBScGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBScGMuQ29ubmVjdGlvbi50XG5cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIHRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgdFxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgdFxuICBlbmQpXG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IFZlcnNpb25lZF9ycGNcbm1vZHVsZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24gPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25cbm1vZHVsZSBQaXBlX3RyYW5zcG9ydCA9IFBpcGVfdHJhbnNwb3J0XG5tb2R1bGUgUnBjX2Vycm9yID0gUnBjX2Vycm9yXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IFJwY19yZXN1bHRcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBScGMuU3RhYmxlXG5lbmRcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cbiAgbW9kdWxlIFByb3RvY29sID0gUHJvdG9jb2xcbiAgbW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxuXG4gIGxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gQ29ubmVjdGlvbi5kZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0XG5lbmRcbiIsIm9wZW4gU3RyaW5nXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuXG4oKiBOb3QgdGFpbCByZWN1cnNpdmUgZm9yIFwicGVyZm9ybWFuY2VcIiwgcGxlYXNlIGNob29zZSBsb3cgdmFsdWVzIGZvclxuICAgW21heF0uIFRoZSBpZGVhIGlzIHRoYXQgbWF4IGlzIGFsd2F5cyBzbWFsbCBiZWNhdXNlIGl0J3MgaGFyZFxuICAgY29kZSAqKVxubGV0IHNwbGl0X2NoYXJfYm91bmRlZCBzdHIgfm9uIH5tYXggPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW3N0cl1cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBvZmZzZXQgdG9rZW5zID1cbiAgICAgIGlmIHRva2VucyA9IG1heCAtIDFcbiAgICAgIHRoZW4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgICAgXCJcIjo6KGxvb3AgKG9mZnNldCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBTdHJpbmcuc3ViIHN0ciBvZmZzZXQgKGluZGV4IC0gb2Zmc2V0KSBpblxuICAgICAgICAgICAgdG9rZW46Oihsb29wIChpbmRleCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICBpbiBsb29wIDAgMFxuXG5sZXQgc3BsaXRfY2hhcl91bmJvdW5kZWQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmxldCBvZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG5sZXQgZnVsbF9zcGxpdCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgc2VwID0gb2ZfY2hhciBvbiBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChzZXA6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHNlcDo6dG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgICAgdGhlbiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgICAgICBlbHNlIGFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG4oKiBjb3B5aW5nIGNvcmUncyBjb252ZW50aW9uIGZvciBTdHJpbmcuc3BsaXQgYnV0IHdpdGggYW4gb3B0aW9uYWwgbWF4XG4gICBhcmd1bWVudCAqKVxubGV0IHNwbGl0ID9tYXggcyB+b24gPVxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gc3BsaXRfY2hhcl91bmJvdW5kZWQgcyB+b25cbiAgfCBTb21lIG1heCAtPiAgICAgICAgICAgICAgICAgKCogYXNzZXJ0IChtYXggPCAxMDApOyAqKVxuICAgIHNwbGl0X2NoYXJfYm91bmRlZCBzIH5vbiB+bWF4XG5cbmxldCByaW5kZXhfZnJvbV9vbiBzIH5vZmZzZXQgfm9uID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgb24gcy5baV0gdGhlbiBpXG4gICAgZWxzZSBsb29wIChpIC0gMSlcbiAgaW4gbG9vcCBvZmZzZXRcblxubGV0IHRyaW1fbGVmdF9zdWIgcyB+cG9zIH5sZW4gfmNoYXJzID1cbiAgbGV0IHN0YXJ0X3BvcyA9XG4gICAgbGV0IGZpbmFsID0gcG9zICsgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGxhc3RfY2hhciBpID1cbiAgICAgIGlmIGkgPSBmaW5hbCB0aGVuIGxhc3RfY2hhclxuICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgY2hhcnMgcy5baV0gdGhlbiBsb29wIChpICsgMSkgKGkgKyAxKVxuICAgICAgZWxzZSBsYXN0X2NoYXJcbiAgICBpbiBsb29wIHBvcyBwb3NcbiAgaW5cbiAgbGV0IG5ld19sZW4gPSBsZW4gLSAoc3RhcnRfcG9zIC0gcG9zKSBpblxuICBTdHJpbmcuc3ViIHMgc3RhcnRfcG9zIG5ld19sZW5cblxubGV0IHNwbGl0X3RyaW1fbGVmdCBzdHIgfm9uIH50cmltID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb21fb24gc3RyIH5vZmZzZXQgfm9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSB0cmltX2xlZnRfc3ViIHN0ciB+cG9zOihpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihvZmZzZXQgLSBpbmRleCkgfmNoYXJzOnRyaW0gaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAodHJpbV9sZWZ0X3N1YiBzdHIgfnBvczowIH5sZW46KG9mZnNldCArIDEpIH5jaGFyczp0cmltKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmV4Y2VwdGlvbiBGb3VuZF9pbnQgb2YgaW50XG5cbmxldCBmaXJzdF9jaGFyX25lIHMgYyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgcy5bMF0gPD4gY1xuXG5sZXQgdHJpbV9sZWZ0IHMgPVxuICBpZiBmaXJzdF9jaGFyX25lIHMgJyAnIHRoZW4gc1xuICBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIHRyeVxuICAgICAgZm9yIGk9MCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+ICcgJyB0aGVuIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICAgIGRvbmU7XG4gICAgICBcIlwiXG4gICAgd2l0aCBGb3VuZF9pbnQgbm9uX3NwYWNlIC0+XG4gICAgICBzdWIgcyBub25fc3BhY2UgKGxlbiAtIG5vbl9zcGFjZSlcblxubGV0IHN1YnN0cl9lcSA/KHN0YXJ0PTApIHMgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIC0gMSBkb1xuICAgICAgaWYgcy5baSArIHN0YXJ0XSA8PiBwYXR0ZXJuLltpXSB0aGVuIHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBfIC0+IGZhbHNlXG5cbmxldCBmaW5kX2Zyb20gPyhzdGFydD0wKSBzdHIgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IHN0YXJ0IHRvIChTdHJpbmcubGVuZ3RoIHN0cikgLSAoU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKSBkb1xuICAgICAgaWYgc3Vic3RyX2VxIH5zdGFydDppIHN0ciB+cGF0dGVybiB0aGVuXG4gICAgICAgIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICBkb25lO1xuICAgIE5vbmVcbiAgd2l0aFxuICB8IEZvdW5kX2ludCBpIC0+IFNvbWUgaVxuICB8ICBfIC0+IE5vbmVcblxubGV0IGZpbmRfbWluIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgeCBmeCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBTb21lICh4LCBmeClcbiAgICB8IHgnOjp4cyAtPlxuICAgICAgbGV0IGZ4JyA9IGYgeCcgaW5cbiAgICAgIGlmIGZ4JyA8IGZ4IHRoZW4gbG9vcCB4JyBmeCcgeHNcbiAgICAgIGVsc2UgbG9vcCB4IGZ4IHhzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4Ojp4cyAtPiBsb29wIHggKGYgeCkgeHNcblxubGV0IHJlcGxhY2VfYWxsIHN0ciB+cGF0dGVybiB+d2l0aF8gPVxuICBsZXQgKHNsZW4sIHBsZW4pID0gU3RyaW5nLihsZW5ndGggc3RyLCBsZW5ndGggcGF0dGVybikgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICB8IFNvbWUgaiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICBsb29wIChqICsgcGxlbilcbiAgaW4gbG9vcCAwXG5cbmV4Y2VwdGlvbiBGb3VuZF9yZXBsYWNlIG9mIGludCAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgcmVwbGFjZV9hbGxfYXNzb2Mgc3RyIHRibCA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBzbGVuIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIGVsc2VcbiAgICAgIGxldCByID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGUgPVxuICAgICAgICAgICAgZmluZF9taW4gdGJsIH5mOihmdW4gKHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lICAgLT4gbWF4X2ludFxuICAgICAgICAgICAgICB8IFNvbWUgaiB3aGVuIGogPSBpIC0+IHJhaXNlIChGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykpXG4gICAgICAgICAgICAgIHwgU29tZSBqIC0+IGZvdW5kIDo9IHRydWU7IGopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSAoKHBhdHRlcm4sIHdpdGhfKSwgaikgd2hlbiAhZm91bmQgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICB3aXRoIEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgIGluXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgICAgfCBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgICAgbG9vcCAoaiArIFN0cmluZy5sZW5ndGggcGF0dGVybilcbiAgaW4gbG9vcCAwXG5cbmxldCBpdGVyaSBmIGwgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeDo6eHMgLT4gKGYgaSB4KTsgbG9vcCAoc3VjYyBpKSB4c1xuICBpbiBsb29wIDAgbFxuXG5sZXQgb2ZfbGlzdCB4cyA9XG4gIGxldCBsID0gTGlzdC5sZW5ndGggeHMgaW5cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBpdGVyaSAoZnVuIGkgYyAtPiBCeXRlcy5zZXQgcyBpIGMpIHhzO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA9IC0xIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbG9vcCAocy5baV0gOjogYWNjKSAocHJlZCBpKVxuICBpbiBsb29wIFtdIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IGJ5dGVzIGkgYS4oaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBieXRlc1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKFN0cmluZy5sZW5ndGggcykgKFN0cmluZy5nZXQgcylcblxuKCogcmlwcGVkIG9mZiBmcm9tIG9uZSBvZiBkYnVlbnpsaSdzIGxpYnMgKilcbmxldCBjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5jdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gZW5kIHdpdGggW2ldIHRyeWluZyB0byBtYXRjaCB0aGVcbiAgICAgICAgIGZpcnN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZSB2ZXJpZnkgdGhhdFxuICAgICAgICAgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10uIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2VcbiAgICAgICAgIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl0gd2l0aCBbaV0uIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGVcbiAgICAgICAgIGxvb3AgYW5kIGV4dHJhY3QgYSBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZVxuICAgICAgICAgcG9zaXRpb24gYmVmb3JlIHRoZSBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uXG4gICAgICAgICBhZnRlciB0aGUgW29uXSB3ZSBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vXG4gICAgICAgICBzZXBhcmF0b3IgY2FuIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2hcbiAgICAgICAgIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpICsgc2VwX21heCA8PSBzX21heCkgZG9cbiAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZSBzICghaSArICFrKSBpc1xuICAgICAgICAgICAgIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gMCB0aGVuIGluY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICBrIDo9IDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPD0gc2VwX21heCAmJiB1bnNhZmVfZ2V0IHMgKCFpICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGluY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPD0gc2VwX21heCB0aGVuICgqIG5vIG1hdGNoICopIGluY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIHNlcF9tYXggKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCByY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQucmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgc19tYXggaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBlbmQgb2YgW3NdIHRvIHRoZSBiZWdpbm5pbmcgd2l0aCBbaV0gdHJ5aW5nIHRvXG4gICAgICAgICBtYXRjaCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2VcbiAgICAgICAgIHZlcmlmeSB0aGF0IHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdICh3ZSBkbyB0aGF0XG4gICAgICAgICBiYWNrd2FyZHMpLiAgSWYgaXQgZG9lc24ndCBtYXRjaCB3ZSBjb250aW51ZSB0byBsb29rIGZvciBbb25dXG4gICAgICAgICB3aXRoIFtpXS4gIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGUgbG9vcCBhbmQgZXh0cmFjdCBhXG4gICAgICAgICBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlXG4gICAgICAgICBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBbb25dIHdlXG4gICAgICAgICBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiAgSWYgW2ldIGlzIHN1Y2ggdGhhdCBubyBzZXBhcmF0b3IgY2FuXG4gICAgICAgICBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpID49IHNlcF9tYXgpIGRvXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gc2VwX21heCB0aGVuIGRlY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgIHMgKHNlcF9zdGFydCArICFrKSBpcyBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgICAgbGV0IHNlcF9zdGFydCA9ICFpIC0gc2VwX21heCBpblxuICAgICAgICAgICAgayA6PSBzZXBfbWF4IC0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA+PSAwICYmIHVuc2FmZV9nZXQgcyAoc2VwX3N0YXJ0ICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGRlY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPj0gMCB0aGVuICgqIG5vIG1hdGNoICopIGRlY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gc2VwX21heCAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBsZXQgcHJlZml4X2wgPSBTdHJpbmcubGVuZ3RoIHByZWZpeCBpblxuICBsZXQgc3RyaW5nX2wgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgcHJlZml4X2wgPiBzdHJpbmdfbCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgIHRyeVxuICAgICAgZm9yIGkgPSAwIHRvIHByZWZpeF9sIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiBwcmVmaXguW2ldIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGRvbmU7XG4gICAgICBTb21lIChTdHJpbmcuc3ViIHMgcHJlZml4X2wgKHN0cmluZ19sIC0gcHJlZml4X2wpKVxuICAgIHdpdGggXyAtPiBOb25lXG5cbmxldCBkcm9wIHMgbiA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIG4gPj0gbFxuICB0aGVuIFwiXCJcbiAgZWxzZSBTdHJpbmcuc3ViIHMgbiAobCAtIG4pXG5cbmxldCB0YWtlIHMgbiA9XG4gIGlmIG4gPj0gU3RyaW5nLmxlbmd0aCBzXG4gIHRoZW4gc1xuICBlbHNlIFN0cmluZy5zdWIgcyAwIG5cbiIsInR5cGUgYmlnc3RyaW5nID1cbiAgKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxudHlwZSB0ID0gYmlnc3RyaW5nXG5cbmxldCBjcmVhdGUgc2l6ZSA9IEJpZ2FycmF5LihBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgc2l6ZSlcbmxldCBlbXB0eSAgICAgICA9IGNyZWF0ZSAwXG5cbm1vZHVsZSBCQTEgPSBCaWdhcnJheS5BcnJheTFcblxubGV0IGxlbmd0aCB0ID0gQkExLmRpbSB0XG5cbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gY2hhciAgICAgICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgICAgICAgICAgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gQnl0ZXMudCAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcIiAgICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyA6IEJ5dGVzLnQgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcCA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX3N0cmluZyA6IHQgLT4gaW50IC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jaHIgOiB0IC0+IGludCAtPiBjaGFyIC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNoclwiIFtAQG5vYWxsb2NdXG5cbmxldCBzdWIgdCB+b2ZmIH5sZW4gPVxuICBCQTEuc3ViIHQgb2ZmIGxlblxuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHMgb3AgYnVmZmVyX2xlbiBvZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWZmZXJfbGVuOiAlZCwgb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWZmZXJfbGVuIG9mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19ibGl0IG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBzcmNfbGVuOiAlZCwgc3JjX29mZjogJWQsIGRzdF9sZW46ICVkLCBkc3Rfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX21lbWNtcCBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZjFfbGVuOiAlZCwgYnVmMV9vZmY6ICVkLCBidWYyX2xlbjogJWQsIGJ1ZjJfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbigqIEEgbm90ZSBvbiBib3VuZHMgY2hlY2tpbmcuXG4gKlxuICogVGhlIGNvZGUgc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgYmxpdCBkb2Vzbid0XG4gKiBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlcjpcbiAqXG4gKiAgIHtbb2ZmICsgbGVuIDw9IGJ1ZmZlcl9sZW5dfVxuICpcbiAqIEhvd2V2ZXIsIHRoaXMgbWF5IGxlYWQgdG8gYW4gaW50ZWdlciBvdmVyZmxvdyBmb3IgbGFyZ2UgdmFsdWVzIG9mIFtvZmZdLFxuICogZS5nLiwgW21heF9pbnRdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBjb21wYXJpc29uIHRvIHJldHVybiBbdHJ1ZV0gd2hlbiBpdFxuICogc2hvdWxkIHJlYWxseSByZXR1cm4gW2ZhbHNlXS5cbiAqXG4gKiBBbiBlcXVpdmFsZW50IGNvbXBhcmlzb24gdGhhdCBkb2VzIG5vdCBydW4gaW50byB0aGlzIGludGVnZXIgb3ZlcmZsb3dcbiAqIHByb2JsZW0gaXM6XG4gKlxuICogICB7W2J1ZmZlcl9sZW4gLSBvZmYgPT4gbGVuXX1cbiAqXG4gKiBUaGlzIGlzIGNoZWNraW5nIHRoYXQgdGhlIGlucHV0IGJ1ZmZlciwgbGVzcyB0aGUgb2Zmc2V0LCBpcyBzdWZmaWNpZW50bHlcbiAqIGxvbmcgdG8gcGVyZm9ybSB0aGUgYmxpdC4gU2luY2UgdGhlIGV4cHJlc3Npb24gaXMgc3VidHJhY3RpbmcgW29mZl0gcmF0aGVyXG4gKiB0aGFuIGFkZGluZyBpdCwgaXQgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGUgb3ZlcmZsb3cgdGhhdCB0aGUgcHJldmlvdXNcbiAqIGluZXF1YWxpdHkgZGlkLiBBcyBsb25nIGFzIHRoZXJlIGlzIGEgY2hlY2sgdG8gZW5zdXJlIHRoYXQgW29mZl0gaXMgbm90XG4gKiBuZWdhdGl2ZSwgaXQgd29uJ3QgdW5kZXJmbG93IGVpdGhlci4gKilcblxubGV0IGNvcHkgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJjb3B5XCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCB0IH5zcmNfb2ZmOm9mZiBkc3QgfmRzdF9vZmY6MCB+bGVuO1xuICBkc3Rcbjs7XG5cbmxldCBzdWJzdHJpbmcgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJzdWJzdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6MCBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgb2Zfc3RyaW5nIH5vZmYgfmxlbiBzID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm9mX3N0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBiXG47O1xuXG5sZXQgYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IFN0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IEJ5dGVzLmxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBtZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IGxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gU3RyaW5nLmxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNociBidWYgYnVmX29mZiBjaHIgbGVuID1cbiAgbGV0IGJ1Zl9sZW4gPSBsZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIGlmIGJ1Zl9vZmYgPCAwIHx8IGJ1Zl9sZW4gLSBidWZfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW5cblxuKCogU2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjRcIlxuXG5tb2R1bGUgU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZilcblxuICBsZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgeCBvZmYgPVxuICAgICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcbmVuZFxuXG5sZXQgc2V0X2ludDE2X2xlLCBzZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTZcblxubGV0IHNldF9pbnQzMl9sZSwgc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG5cbmxldCBzZXRfaW50NjRfbGUsIHNldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NFxuXG5sZXQgZ2V0X2ludDE2X2xlLCBnZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTZcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCB4IG9mZiA9XG4gICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZCAgLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXBcbiAgZWxzZSBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAsIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRcblxubGV0IGdldF9pbnQzMl9sZSwgZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG5cbmxldCBnZXRfaW50NjRfbGUsIGdldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NFxuXG4oKiBVbnNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcblxubW9kdWxlIFVTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmKVxuZW5kXG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlLCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSwgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUsIHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlLCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2xlIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9iZSB4IG9mZiApIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSwgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUsIHVuc2FmZV9nZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4iLCJ0eXBlICdhIHN0YXRlID1cbiAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgfCBEb25lICAgIG9mIGludCAqICdhXG4gIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG5hbmQgJ2EgcGFydGlhbCA9XG4gIHsgY29tbWl0dGVkIDogaW50XG4gIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHN0YXRlIH1cblxuXG5sZXQgc3RhdGVfdG9fb3B0aW9uIHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuXG5sZXQgZmFpbF90b19zdHJpbmcgbWFya3MgZXJyID1cbiAgU3RyaW5nLmNvbmNhdCBcIiA+IFwiIG1hcmtzIF4gXCI6IFwiIF4gZXJyXG5cbmxldCBzdGF0ZV90b19yZXN1bHQgeCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgfCBGYWlsKF8sIG1hcmtzLCBlcnIpIC0+IEVycm9yIChmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIpXG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbnR5cGUgdCA9XG4gIHsgbXV0YWJsZSBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDogaW50XG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgICAgICAgIDogaW50XG4gIDsgb2ZmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgbGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDogQmlnc3RyaW5nYWYudFxuICB9XG5cbmxldCBjcmVhdGUgYnVmZmVyIH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzID1cbiAgeyBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IG9mZlxuICA7IGxlblxuICA7IGJ1ZmZlciB9XG5cbmxldCBsZW5ndGggICAgICAgICAgICAgICAgIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgKyB0LmxlblxubGV0IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCAgdCA9IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0XG5cbmxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IHQubGVuIC0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCArIHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gbGVuZ3RoIHQpO1xuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCAtIGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICB0ID0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdCk7XG47O1xuXG5sZXQgb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyA9XG4gIHQub2ZmICsgcG9zIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBhcHBseSB0IHBvcyBsZW4gfmYgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBmIHQuYnVmZmVyIH5vZmYgfmxlblxuXG5sZXQgdW5zYWZlX2dldF9jaGFyIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldCB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IGNvdW50X3doaWxlIHQgcG9zIH5mID1cbiAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gIGxldCBvZmYgICAgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGxldCBpICAgICAgPSByZWYgb2ZmIGluXG4gIGxldCBsaW1pdCAgPSB0Lm9mZiArIHQubGVuIGluXG4gIHdoaWxlICFpIDwgbGltaXQgJiYgZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gICFpIC0gb2ZmXG47O1xuXG5sZXQgY29tbWl0IHQgcG9zID1cbiAgdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIDwtIHBvc1xuOztcbiIsIm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gICAgfCBMYXp5ICAgIG9mICdhIHQgTGF6eS50XG4gICAgfCBEb25lICAgIG9mIGludCAqICdhXG4gICAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgYW5kICdhIHBhcnRpYWwgPVxuICAgIHsgY29tbWl0dGVkIDogaW50XG4gICAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2EgdCB9XG5cbmVuZFxudHlwZSAnYSB3aXRoX3N0YXRlID0gSW5wdXQudCAtPiAgaW50IC0+IE1vcmUudCAtPiAnYVxuXG50eXBlICdhIGZhaWx1cmUgPSAoc3RyaW5nIGxpc3QgLT4gc3RyaW5nIC0+ICdhIFN0YXRlLnQpIHdpdGhfc3RhdGVcbnR5cGUgKCdhLCAncikgc3VjY2VzcyA9ICgnYSAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlXG5cbnR5cGUgJ2EgdCA9XG4gIHsgcnVuIDogJ3IuICgnciBmYWlsdXJlIC0+ICgnYSwgJ3IpIHN1Y2Nlc3MgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZSB9XG5cbmxldCBmYWlsX2sgICAgaW5wdXQgcG9zIF8gbWFya3MgbXNnID1cbiAgU3RhdGUuRmFpbChwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCBtYXJrcywgbXNnKVxubGV0IHN1Y2NlZWRfayBpbnB1dCBwb3MgXyAgICAgICB2ICAgPVxuICBTdGF0ZS5Eb25lKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIHYpXG5cbmxldCByZWMgdG9fZXhwb3J0ZWRfc3RhdGUgPSBmdW5jdGlvblxuICB8IFN0YXRlLlBhcnRpYWwge2NvbW1pdHRlZDtjb250aW51ZX0gLT5cbiAgICAgRXhwb3J0ZWRfc3RhdGUuUGFydGlhbFxuICAgICAgIHsgY29tbWl0dGVkXG4gICAgICAgOyBjb250aW51ZSA9XG4gICAgICAgICAgIGZ1biBicyB+b2ZmIH5sZW4gbW9yZSAtPlxuICAgICAgICAgICB0b19leHBvcnRlZF9zdGF0ZSAoY29udGludWUgYnMgfm9mZiB+bGVuIG1vcmUpfVxuICB8IFN0YXRlLkRvbmUgKGkseCkgLT4gRXhwb3J0ZWRfc3RhdGUuRG9uZSAoaSx4KVxuICB8IFN0YXRlLkZhaWwgKGksIHNsLCBzKSAtPiBFeHBvcnRlZF9zdGF0ZS5GYWlsIChpLCBzbCwgcylcbiAgfCBTdGF0ZS5MYXp5IHggLT4gdG9fZXhwb3J0ZWRfc3RhdGUgKExhenkuZm9yY2UgeClcblxubGV0IHBhcnNlIHAgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgQmlnc3RyaW5nYWYuZW1wdHkgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOjAgaW5cbiAgdG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgSW5jb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIHAgaW5wdXQgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggaW5wdXQpIGluXG4gIEV4cG9ydGVkX3N0YXRlLnN0YXRlX3RvX3Jlc3VsdCAodG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgQ29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaykpXG5cbm1vZHVsZSBNb25hZCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgdlxuICAgIH1cblxuICBsZXQgZmFpbCBtc2cgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgX3N1Y2MgLT5cbiAgICAgIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gbXNnXG4gICAgfVxuXG4gIGxldCAoPj49KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSAoZiB2KS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPj58KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChmIHYpIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCQ+KSBmIG0gPVxuICAgIG0gPj58IGZcblxuICBsZXQgKDwqPikgZiBtID1cbiAgICAoKiBmID4+PSBmdW4gZiAtPiBtID4+fCBmICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgZiA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSAoZiBtKSBpblxuICAgICAgICBtLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgZi5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5cbiAgbGV0IGxpZnQgZiBtID1cbiAgICBmIDwkPiBtXG5cbiAgbGV0IGxpZnQyIGYgbTEgbTIgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID0gc3VjYyBpbnB1dDIgcG9zMiBtb3JlMiAoZiBtMSBtMikgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgc3VjYyBpbnB1dDMgcG9zMyBtb3JlMyAoZiBtMSBtMiBtMykgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBsZXQgc3VjYzQgaW5wdXQ0IHBvczQgbW9yZTQgbTQgPVxuICAgICAgICAgICAgICBzdWNjIGlucHV0NCBwb3M0IG1vcmU0IChmIG0xIG0yIG0zIG00KSBpblxuICAgICAgICAgICAgbTQucnVuIGlucHV0MyBwb3MzIG1vcmUzIGZhaWwgc3VjYzQgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgKCAqPikgYSBiID1cbiAgICAoKiBhID4+PSBmdW4gXyAtPiBiICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9IGIucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwqICkgYSBiID1cbiAgICAoKiBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4ICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgeCA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBfID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSB4IGluXG4gICAgICAgIGIucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cbmVuZFxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIGxldCAoPD8+KSBwIG1hcmsgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgKG1hcms6Om1hcmtzKSBtc2cgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5cbiAgbGV0ICg8fD4pIHAgcSA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgKCogVGhlIG9ubHkgdHdvIGNvbnN0cnVjdG9ycyB0aGF0IGludHJvZHVjZSBuZXcgZmFpbHVyZSBjb250aW51YXRpb25zIGFyZVxuICAgICAgICAgKiBbPD8+XSBhbmQgWzx8Pl0uIElmIHRoZSBpbml0aWFsIGlucHV0IHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoXG4gICAgICAgICAqIG9mIHRoZSBjb21taXR0ZWQgaW5wdXQsIHRoZW4gY2FsbGluZyB0aGUgZmFpbHVyZSBjb250aW51YXRpb24gd2lsbFxuICAgICAgICAgKiBoYXZlIHRoZSBlZmZlY3Qgb2YgdW53aW5kaW5nIGFsbCBjaG9pY2VzIGFuZCBjb2xsZWN0aW5nIG1hcmtzIGFsb25nXG4gICAgICAgICAqIHRoZSB3YXkuICopXG4gICAgICAgIGlmIHBvcyA8IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnIHRoZW5cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUgbWFya3MgbXNnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBxLnJ1biBpbnB1dCcgcG9zIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTW9uYWRfdXNlX2Zvcl9kZWJ1Z2dpbmcgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IE1vbmFkLnJldHVyblxuICBsZXQgZmFpbCAgID0gTW9uYWQuZmFpbFxuICBsZXQgKD4+PSkgID0gTW9uYWQuKD4+PSlcblxuICBsZXQgKD4+fCkgbSBmID0gbSA+Pj0gZnVuIHggLT4gcmV0dXJuIChmIHgpXG5cbiAgbGV0ICg8JD4pIGYgbSA9IG0gPj58IGZcbiAgbGV0ICg8Kj4pIGYgbSA9IGYgPj49IGZ1biBmIC0+IG0gPj58IGZcblxuICBsZXQgbGlmdCAgPSAoPj58KVxuICBsZXQgbGlmdDIgZiBtMSBtMiAgICAgICA9IGYgPCQ+IG0xIDwqPiBtMlxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyAgICA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTNcbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zIDwqPiBtNFxuXG4gIGxldCAoICo+KSBhIGIgPSBhID4+PSBmdW4gXyAtPiBiXG4gIGxldCAoPCogKSBhIGIgPSBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4XG5lbmRcbiIsInR5cGUgdCA9XG4gIHsgbXV0YWJsZSBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludCB9XG5cbmxldCBvZl9iaWdzdHJpbmcgfm9mZiB+bGVuIGJ1ZiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBidWYgPj0gbGVuIC0gb2ZmKTtcbiAgeyBidWY7IG9mZjsgbGVuIH1cblxubGV0IGNyZWF0ZSBsZW4gPVxuICBvZl9iaWdzdHJpbmcgfm9mZjowIH5sZW46MCAoQmlnc3RyaW5nYWYuY3JlYXRlIGxlbilcblxubGV0IHdyaXRhYmxlX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSB0LmxlblxuXG5sZXQgdHJhaWxpbmdfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtICh0Lm9mZiArIHQubGVuKVxuXG5sZXQgY29tcHJlc3MgdCA9XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIHQuYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZ3JvdyB0IHRvX2NvcHkgPVxuICBsZXQgb2xkX2xlbiA9IEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIGxldCBzcGFjZSA9IHdyaXRhYmxlX3NwYWNlIHQgaW5cbiAgd2hpbGUgc3BhY2UgKyAhbmV3X2xlbiAtIG9sZF9sZW4gPCB0b19jb3B5IGRvXG4gICAgbmV3X2xlbiA6PSAoMyAqICFuZXdfbGVuKSAvIDJcbiAgZG9uZTtcbiAgbGV0IG5ld19idWYgPSBCaWdzdHJpbmdhZi5jcmVhdGUgIW5ld19sZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgbmV3X2J1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQuYnVmIDwtIG5ld19idWY7XG4gIHQub2ZmIDwtIDBcblxubGV0IGVuc3VyZSB0IHRvX2NvcHkgPVxuICBpZiB0cmFpbGluZ19zcGFjZSB0IDwgdG9fY29weSB0aGVuXG4gICAgaWYgd3JpdGFibGVfc3BhY2UgdCA+PSB0b19jb3B5XG4gICAgdGhlbiBjb21wcmVzcyB0XG4gICAgZWxzZSBncm93IHQgdG9fY29weVxuXG5sZXQgd3JpdGVfcG9zIHQgPVxuICB0Lm9mZiArIHQubGVuXG5cbmxldCBmZWVkX3N0cmluZyB0IH5vZmYgfmxlbiBzdHIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0ciA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHN0ciB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9iaWdzdHJpbmcgdCB+b2ZmIH5sZW4gYiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBiID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgYiB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9pbnB1dCB0ID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nICAgIHMgLT4gZmVlZF9zdHJpbmcgICAgdCB+b2ZmOjAgfmxlbjooU3RyaW5nICAgICAubGVuZ3RoIHMpIHNcbiAgfCBgQmlnc3RyaW5nIGIgLT4gZmVlZF9iaWdzdHJpbmcgdCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGIpIGJcblxubGV0IHNoaWZ0IHQgbiA9XG4gIGFzc2VydCAodC5sZW4gPj0gbik7XG4gIHQub2ZmIDwtIHQub2ZmICsgbjtcbiAgdC5sZW4gPC0gdC5sZW4gLSBuXG5cbmxldCBmb3JfcmVhZGluZyB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIEJpZ3N0cmluZ2FmLnN1YiB+b2ZmIH5sZW4gYnVmXG5cbm1vZHVsZSBVbmNvbnN1bWVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5lbmRcblxubGV0IHVuY29uc3VtZWQgPyhzaGlmdD0wKSB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIGFzc2VydCAobGVuID49IHNoaWZ0KTtcbiAgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmID0gb2ZmICsgc2hpZnQ7IGxlbiA9IGxlbiAtIHNoaWZ0IH1cblxubGV0IG9mX3VuY29uc3VtZWQgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbnR5cGUgdW5jb25zdW1lZCA9IFVuY29uc3VtZWQudCA9XG4gIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG9mZiA6IGludFxuICA7IGxlbiA6IGludCB9XG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbm1vZHVsZSBCaWdhcnJheSA9IHN0cnVjdFxuICAoKiBEbyBub3QgYWNjZXNzIEJpZ2FycmF5IG9wZXJhdGlvbnMgZGlyZWN0bHkuIElmIGFueXRoaW5nJ3MgbmVlZGVkLCByZWZlciB0b1xuICAgKiB0aGUgaW50ZXJuYWwgQmlnc3RyaW5nIG1vZHVsZS4gKilcbmVuZFxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZ2FmLnRcblxuXG5tb2R1bGUgVW5idWZmZXJlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcnNlclxuXG4gIGluY2x1ZGUgRXhwb3J0ZWRfc3RhdGVcblxuICB0eXBlIG1vcmUgPSBNb3JlLnQgPVxuICAgIHwgQ29tcGxldGVcbiAgICB8IEluY29tcGxldGVcbmVuZFxuXG5pbmNsdWRlIFVuYnVmZmVyZWRcbmluY2x1ZGUgUGFyc2VyLk1vbmFkXG5pbmNsdWRlIFBhcnNlci5DaG9pY2VcblxubW9kdWxlIEJ1ZmZlcmVkID0gc3RydWN0XG4gIHR5cGUgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkID1cbiAgICB7IGJ1ZiA6IGJpZ3N0cmluZ1xuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuXG4gIHR5cGUgaW5wdXQgPVxuICAgIFsgYEJpZ3N0cmluZyBvZiBiaWdzdHJpbmdcbiAgICB8IGBTdHJpbmcgICAgb2Ygc3RyaW5nIF1cblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFBhcnRpYWwgb2YgKFsgaW5wdXQgfCBgRW9mIF0gLT4gJ2Egc3RhdGUpXG4gICAgfCBEb25lICAgIG9mIHVuY29uc3VtZWQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiB1bmNvbnN1bWVkICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBsZXQgZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIH5mIGJ1ZmZlcmluZyA9IGZ1bmN0aW9uXG4gICAgfCBVbmJ1ZmZlcmVkLlBhcnRpYWwgcCAgICAgICAgIC0+IFBhcnRpYWwgKGYgcClcbiAgICB8IFVuYnVmZmVyZWQuRG9uZShjb25zdW1lZCwgdikgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRG9uZSh1bmNvbnN1bWVkLCB2KVxuICAgIHwgVW5idWZmZXJlZC5GYWlsKGNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpXG5cbiAgbGV0IHBhcnNlID8oaW5pdGlhbF9idWZmZXJfc2l6ZT0weDEwMDApIHAgPVxuICAgIGlmIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicGFyc2U6IGludmFsaWQgYXJndW1lbnQsIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxXCI7XG4gICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCByZWMgZiBwIGlucHV0ID1cbiAgICAgIEJ1ZmZlcmluZy5zaGlmdCBidWZmZXJpbmcgcC5jb21taXR0ZWQ7XG4gICAgICBsZXQgbW9yZSA6IE1vcmUudCA9XG4gICAgICAgIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgfCBgRW9mICAgICAgICAgICAgLT4gQ29tcGxldGVcbiAgICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgICAgSW5jb21wbGV0ZVxuICAgICAgaW5cbiAgICAgIGxldCBmb3JfcmVhZGluZyA9IEJ1ZmZlcmluZy5mb3JfcmVhZGluZyBidWZmZXJpbmcgaW5cbiAgICAgIHAuY29udGludWUgZm9yX3JlYWRpbmcgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBmb3JfcmVhZGluZykgbW9yZVxuICAgICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuICAgIGluXG4gICAgVW5idWZmZXJlZC5wYXJzZSBwXG4gICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuXG4gIGxldCBmZWVkIHN0YXRlIGlucHV0ID1cbiAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgfCBQYXJ0aWFsIGsgLT4gayBpbnB1dFxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRmFpbChCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIG1hcmtzLCBtc2cpXG4gICAgICBlbmRcbiAgICB8IERvbmUodW5jb25zdW1lZCwgdikgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIERvbmUoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCB2KVxuICAgICAgZW5kXG5cbiAgbGV0IHN0YXRlX3RvX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICAgIHwgUGFydGlhbCBfICAtPiBOb25lXG4gICAgfCBGYWlsIF8gICAgIC0+IE5vbmVcblxuICBsZXQgc3RhdGVfdG9fcmVzdWx0ID0gZnVuY3Rpb25cbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICAgIHwgRmFpbChfLCBtYXJrcywgbXNnKSAtPiBFcnJvciAoVW5idWZmZXJlZC5mYWlsX3RvX3N0cmluZyBtYXJrcyBtc2cpXG5cbiAgbGV0IHN0YXRlX3RvX3VuY29uc3VtZWQgPSBmdW5jdGlvblxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCBfKVxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBfLCBfKSAtPiBTb21lIHVuY29uc3VtZWRcbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgICAgLT4gTm9uZVxuXG5lbmRcblxuKCoqIEJFR0lOOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCByZWMgcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2MgPVxuICAoKiBbcHJvbXB0XSBzaG91bGQgb25seSBjYWxsIFtzdWNjXSBpZiBpdCBoYXMgcmVjZWl2ZWQgbW9yZSBpbnB1dC4gSWYgdGhlcmVcbiAgICogaXMgbm8gY2hhbmNlIHRoYXQgdGhlIGlucHV0IHdpbGwgZ3JvdywgaS5lLiwgW21vcmUgPSBDb21wbGV0ZV0sIHRoZW5cbiAgICogW3Byb21wdF0gc2hvdWxkIGNhbGwgW2ZhaWxdLiBPdGhlcndpc2UgKGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbnB1dFxuICAgKiBoYXNuJ3QgZ3Jvd24gYnV0IFttb3JlID0gSW5jb21wbGV0ZV0ganVzdCBwcm9tcHQgYWdhaW4uICopXG4gIGxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgaW5wdXQgaW5cbiAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICBpbnB1dCBpblxuICAoKiBUaGUgY29udGludWF0aW9uIHNob3VsZCBub3QgaG9sZCBhbnkgcmVmZXJlbmNlcyB0byBpbnB1dCBhYm92ZS4gKilcbiAgbGV0IGNvbnRpbnVlIGlucHV0IH5vZmYgfmxlbiBtb3JlID1cbiAgICBpZiBsZW4gPCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgZmFpbHdpdGggXCJwcm9tcHQ6IGlucHV0IHNocnVuayFcIjtcbiAgICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXM6cGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpblxuICAgIGlmIGxlbiA9IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIE1vcmUuQ29tcGxldGVcbiAgICAgIHwgSW5jb21wbGV0ZSAtPiBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmVcbiAgaW5cbiAgU3RhdGUuUGFydGlhbCB7IGNvbW1pdHRlZCA9IElucHV0LmJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IGlucHV0OyBjb250aW51ZSB9XG5cbmxldCBkZW1hbmRfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwibm90IGVub3VnaCBpbnB1dFwiXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwibm90IGVub3VnaCBpbnB1dFwiIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgPVxuICBsZXQgcmVjIGdvID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJyAtPlxuICAgICAgaWYgcG9zJyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0JyB0aGVuXG4gICAgICAgIHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBlbHNlXG4gICAgICAgIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJ1xuICAgIH1cbiAgaW5cbiAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuXG5sZXQgdW5zYWZlX2FwcGx5IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYpXG4gIH1cblxubGV0IHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZiB3aXRoXG4gICAgfCBFcnJvciBlIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gZVxuICAgIHwgT2sgICAgeCAtPiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgeFxuICB9XG5cbmxldCBlbnN1cmUgbiBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9IHAucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG4oKiogRU5EOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCBhdF9lbmRfb2ZfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBmYWxzZVxuICAgIGVsc2UgbWF0Y2ggbW9yZSB3aXRoXG4gICAgfCBDb21wbGV0ZSAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHRydWVcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgZmFsc2VcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgdHJ1ZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbmRfb2ZfaW5wdXQgPVxuICBhdF9lbmRfb2ZfaW5wdXRcbiAgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlICAtPiByZXR1cm4gKClcbiAgICB8IGZhbHNlIC0+IGZhaWwgXCJlbmRfb2ZfaW5wdXRcIlxuXG5sZXQgYWR2YW5jZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiYWR2YW5jZVwiXG4gIGVsc2VcbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgKHBvcyArIG4pIG1vcmUgKCkgfVxuICAgIGluXG4gICAgZW5zdXJlIG4gcFxuXG5sZXQgcG9zID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHBvcyB9XG5cbmxldCBhdmFpbGFibGUgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQubGVuZ3RoIGlucHV0IC0gcG9zKVxuICB9XG5cbmxldCBjb21taXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgSW5wdXQuY29tbWl0IGlucHV0IHBvcztcbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlICgpIH1cblxuKCogRG8gbm90IHVzZSB0aGlzIGlmIFtwXSBjb250YWlucyBhIFtjb21taXRdLiAqKVxubGV0IHVuc2FmZV9sb29rYWhlYWQgcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdWNjJyBpbnB1dCcgXyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zIG1vcmUnIHYgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHBlZWtfY2hhciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykpXG4gICAgZWxzZSBpZiBtb3JlID0gQ29tcGxldGUgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnKSlcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgTm9uZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbigqIFRoaXMgcGFyc2VyIGlzIHRvbyBpbXBvcnRhbnQgdG8gbm90IGJlIG9wdGltaXplZC4gRG8gYSBjdXN0b20gam9iLiAqKVxubGV0IHJlYyBwZWVrX2NoYXJfZmFpbCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBwZWVrX2NoYXJfZmFpbC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBzYXRpc2Z5IGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJyBpblxuICAgICAgICBpZiBmIGNcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0JyAocG9zJyArIDEpIG1vcmUnIGNcbiAgICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgICBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyA9IGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgbm90X2NoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjJyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGMgPD4gYydcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjJ1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcIm5vdCBjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfY2hhciA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSAgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBpbnQ4IGkgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IENoYXIuY29kZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgaW5cbiAgICAgIGlmIGMgPSBpIGxhbmQgMHhmZlxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJpbnQ4ICVkXCIgaSkgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfdWludDggPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChDaGFyLmNvZGUgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfaW50OCA9XG4gICgqIGh0dHBzOi8vZ3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFuZGVyL2JpdGhhY2tzLmh0bWwjVmFyaWFibGVTaWduRXh0ZW5kUmlza3kgKilcbiAgbGV0IHMgPSBTeXMuaW50X3NpemUgLSA4IGluXG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKChDaGFyLmNvZGUgYyBsc2wgcykgYXNyIHMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgc2tpcCBmID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgZiAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKVxuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwic2tpcFwiIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgcmVjIGNvdW50X3doaWxlIH5pbml0IH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IChwb3MgKyBpbml0KSB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgIGxldCBpbml0JyAgICAgICA9IGluaXQgKyBsZW4gaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBwb3MgKyBpbml0JyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGluaXQnKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmluaXQnIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBpbml0JykgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgcmVjIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCBwb3MgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBsZW4gPCAxXG4gICAgdGhlblxuICAgICAgaWYgcG9zIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgICAgdGhlbiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICAoY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgICBpblxuICAgICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gICAgZWxzZSBpZiBwb3MgKyBsZW4gPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmxlbiB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgbGVuKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgc3RyaW5nXyBmIHMgPVxuICAoKiBYWFgoc2VsaW9wb3UpOiBJbmVmZmljaWVudC4gQ291bGQgY2hlY2sgcHJlZml4IGVxdWFsaXR5IHRvIHNob3J0LWNpcmN1aXRcbiAgICogdGhlIGlvLiAqKVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGVuc3VyZSAgbGVuICh1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZjooZnVuIGJ1ZmZlciB+b2ZmIH5sZW4gLT5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgQ2hhci5lcXVhbCAoZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgKG9mZiArICFpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZiAoU3RyaW5nLnVuc2FmZV9nZXQgcyAhaSkpXG4gICAgZG9cbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgbGVuID0gIWlcbiAgICB0aGVuIE9rIChCaWdzdHJpbmdhZi5zdWJzdHJpbmcgYnVmZmVyIH5vZmYgfmxlbilcbiAgICBlbHNlIEVycm9yIFwic3RyaW5nXCIpKVxuXG5sZXQgc3RyaW5nIHMgICAgPSBzdHJpbmdfIChmdW4geCAtPiB4KSBzXG5sZXQgc3RyaW5nX2NpIHMgPSBzdHJpbmdfIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IHNraXBfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuXG5sZXQgdGFrZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZTogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLnN1YnN0cmluZylcblxubGV0IHRha2VfYmlnc3RyaW5nIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlX2JpZ3N0cmluZzogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLmNvcHkpXG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3RpbGwgZiA9XG4gIHRha2VfYmlnc3RyaW5nX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBwZWVrX3N0cmluZyBuID1cbiAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuKVxuXG5sZXQgdGFrZV93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2VfdGlsbCBmID1cbiAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgY2hvaWNlID8oZmFpbHVyZV9tc2c9XCJubyBtb3JlIGNob2ljZXNcIikgcHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgKDx8PikgcHMgKGZhaWwgZmFpbHVyZV9tc2cpXG5cbmxldCBmaXhfZGlyZWN0IGYgPVxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4X2xhenkgfm1heF9zdGVwcyBmID1cbiAgbGV0IHN0ZXBzID0gcmVmIG1heF9zdGVwcyBpblxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGRlY3Igc3RlcHM7XG4gICAgaWYgIXN0ZXBzIDwgMFxuICAgIHRoZW4gKFxuICAgICAgc3RlcHMgOj0gbWF4X3N0ZXBzO1xuICAgICAgU3RhdGUuTGF6eSAobGF6eSAoKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MpKSlcbiAgICBlbHNlXG4gICAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgICAgICAgIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4ID0gbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgTmF0aXZlIC0+IGZpeF9kaXJlY3RcbiAgfCBCeXRlY29kZSAtPiBmaXhfZGlyZWN0XG4gIHwgT3RoZXIgXyAtPiBmdW4gZiAtPiBmaXhfbGF6eSB+bWF4X3N0ZXBzOjIwIGZcblxubGV0IG9wdGlvbiB4IHAgPVxuICBwIDx8PiByZXR1cm4geFxuXG5sZXQgY29ucyB4IHhzID0geCA6OiB4c1xuXG5sZXQgcmVjIGxpc3QgcHMgPVxuICBtYXRjaCBwcyB3aXRoXG4gIHwgW10gICAgLT4gcmV0dXJuIFtdXG4gIHwgcDo6cHMgLT4gbGlmdDIgY29ucyBwIChsaXN0IHBzKVxuXG5sZXQgY291bnQgbiBwID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiY291bnQ6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gcmV0dXJuIFtdXG4gICAgICB8IG4gLT4gbGlmdDIgY29ucyBwIChsb29wIChuIC0gMSkpXG4gICAgaW5cbiAgICBsb29wIG5cblxubGV0IG1hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAobGlmdDIgY29ucyBwIG0pIDx8PiByZXR1cm4gW10pXG5cbmxldCBtYW55MSBwID1cbiAgbGlmdDIgY29ucyBwIChtYW55IHApXG5cbmxldCBtYW55X3RpbGwgcCB0ID1cbiAgZml4IChmdW4gbSAtPlxuICAgICh0ICo+IHJldHVybiBbXSkgPHw+IChsaWZ0MiBjb25zIHAgbSkpXG5cbmxldCBzZXBfYnkxIHMgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICBsaWZ0MiBjb25zIHAgKChzICo+IG0pIDx8PiByZXR1cm4gW10pKVxuXG5sZXQgc2VwX2J5IHMgcCA9XG4gIChsaWZ0MiBjb25zIHAgKChzICo+IHNlcF9ieTEgcyBwKSA8fD4gcmV0dXJuIFtdKSkgPHw+IHJldHVybiBbXVxuXG5sZXQgc2tpcF9tYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgICAoKHAgPj58IGZ1biBfIC0+IHRydWUpIDx8PiByZXR1cm4gZmFsc2UpID4+PSBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IG1cbiAgICAgIHwgZmFsc2UgLT4gcmV0dXJuICgpXG4gICAgKVxuXG5sZXQgc2tpcF9tYW55MSBwID1cbiAgcCAqPiBza2lwX21hbnkgcFxuXG5sZXQgZW5kX29mX2xpbmUgPVxuICAoY2hhciAnXFxuJyAqPiByZXR1cm4gKCkpIDx8PiAoc3RyaW5nIFwiXFxyXFxuXCIgKj4gcmV0dXJuICgpKSA8Pz4gXCJlbmRfb2ZfbGluZVwiXG5cbmxldCBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGF0ZSA9IHJlZiBzdGF0ZSBpblxuICAgIGxldCBwYXJzZXIgPVxuICAgICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjooZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggZiAhc3RhdGUgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgc3RhdGUnIC0+IHN0YXRlIDo9IHN0YXRlJzsgdHJ1ZSlcbiAgICAgIH53aXRoX2J1ZmZlclxuICAgICAgPj58IGZ1biB4IC0+IHgsICFzdGF0ZVxuICAgIGluXG4gICAgcGFyc2VyLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuXG5sZXQgc2NhbiBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCBzY2FuX3N0YXRlIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcbiAgPj58IGZ1biAoKCksIHN0YXRlKSAtPiBzdGF0ZVxuXG5sZXQgc2Nhbl9zdHJpbmcgc3RhdGUgZiA9XG4gIHNjYW4gc3RhdGUgZiA+PnwgZnN0XG5cbmxldCBjb25zdW1lX3dpdGggcCBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXJ0ID0gcG9zIGluXG4gICAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0ICBpblxuICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID1cbiAgICAgIGlmIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPD4gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCdcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvbnN1bWVkOiBwYXJzZXIgY29tbWl0dGVkXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID0gcG9zJyAtIHN0YXJ0IGluXG4gICAgICAgIGxldCBjb25zdW1lZCA9IElucHV0LmFwcGx5IGlucHV0JyBzdGFydCBsZW4gfmYgaW5cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBjb25zdW1lZClcbiAgICBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgfVxuXG5sZXQgY29uc3VtZWQgICAgICAgICAgIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5zdWJzdHJpbmdcbmxldCBjb25zdW1lZF9iaWdzdHJpbmcgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IGJvdGggYSBiID0gbGlmdDIgKGZ1biBhIGIgLT4gYSwgYikgYSBiXG5sZXQgbWFwIHQgfmYgPSB0ID4+fCBmXG5sZXQgYmluZCB0IH5mID0gdCA+Pj0gZlxubGV0IG1hcDIgYSBiIH5mID0gbGlmdDIgZiBhIGJcbmxldCBtYXAzIGEgYiBjIH5mID0gbGlmdDMgZiBhIGIgY1xubGV0IG1hcDQgYSBiIGMgZCB+ZiA9IGxpZnQ0IGYgYSBiIGMgZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgbGV0IG1hcDMgPSBtYXAzXG4gICAgbGV0IG1hcDQgPSBtYXA0XG4gIGVuZFxuZW5kXG5cbmxldCAoIGxldCsgKSA9ICggPj58IClcbmxldCAoIGxldCogKSA9ICggPj49IClcbmxldCAoIGFuZCsgKSA9IGJvdGhcblxubW9kdWxlIEJFID0gc3RydWN0XG4gICgqIFhYWChzZWxpb3BvdSk6IFRoZSBwYXR0ZXJuIGluIGJvdGggdGhpcyBtb2R1bGUgYW5kIFtMRV0gYXJlIGEgY29tcHJvbWlzZVxuICAgKiBiZXR3ZWVuIGVmZmljaWVuY3kgYW5kIGNvZGUgcmV1c2UuIEJ5IGlubGluaW5nIFtlbnN1cmVdIHlvdSBjYW4gcmVjb3ZlclxuICAgKiBhYm91dCAyIG5hbm9zZWNvbmRzIG9uIGF2ZXJhZ2UuIFRoYXQgbWF5IGFkZCB1cCBpbiBjZXJ0YWluIGFwcGxpY2F0aW9ucy5cbiAgICpcbiAgICogVGhpcyBwYXR0ZXJuIGRvZXMgbm90IGFsbG9jYXRlIGluIHRoZSBmYXN0IChzdWNjZXNzKSBwYXRoLlxuICAgKiAqKVxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2JlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBMRSA9IHN0cnVjdFxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2xlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdGFrZSBuIGYgPVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZilcblxuICBsZXQgcGVlayBuIGYgPVxuICAgIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbiBmKVxuXG4gIGxldCB0YWtlX3doaWxlIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV93aGlsZTEgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUxIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2VfdGlsbCBjaGVjayBmID1cbiAgICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGNoZWNrIGMpKSBmXG5lbmRcblxubW9kdWxlIENvbnN1bWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFByZWZpeFxuICAgIHwgQWxsXG5lbmRcblxubGV0IHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzID1cbiAgbGV0IHAgPVxuICAgIG1hdGNoIChjb25zdW1lIDogQ29uc3VtZS50KSB3aXRoXG4gICAgfCBQcmVmaXggLT4gcFxuICAgIHwgQWxsIC0+IHAgPCogZW5kX29mX2lucHV0XG4gIGluXG4gIFVuYnVmZmVyZWQucGFyc2VfYmlnc3RyaW5nIHAgYnNcblxubGV0IHBhcnNlX3N0cmluZyB+Y29uc3VtZSBwIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBicyAgPSBCaWdzdHJpbmdhZi5jcmVhdGUgbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6MCBicyB+ZHN0X29mZjowIH5sZW47XG4gIHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQW5pbCBNYWRoYXZhcGVkZHkgPGFuaWxAcmVjb2lsLm9yZz5cbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IERhdmlkIFNoZWV0cyA8c2hlZXRzQGFsdW0ubWl0LmVkdT5cbiAqXG4gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcbiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SXG4gKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU5cbiAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GXG4gKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICpcbiAqKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG50eXBlIGNvbXBvbmVudCA9IFtcbiAgfCBgU2NoZW1lXG4gIHwgYEF1dGhvcml0eVxuICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYFBhdGhcbiAgfCBgUXVlcnlcbiAgfCBgUXVlcnlfa2V5XG4gIHwgYFF1ZXJ5X3ZhbHVlXG4gIHwgYEZyYWdtZW50XG4gIHwgYEdlbmVyaWNcbiAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpICgqIChjb21wb25lbnQgKiBzYWZlIGNoYXJzICogdW5zYWZlIGNoYXJzKSAqKVxuXVxuXG50eXBlIHBjdF9lbmNvZGVyID0ge1xuICAgIHNjaGVtZTogY29tcG9uZW50O1xuICAgIHVzZXJpbmZvOiBjb21wb25lbnQ7XG4gICAgaG9zdDogY29tcG9uZW50O1xuICAgIHBhdGg6IGNvbXBvbmVudDtcbiAgICBxdWVyeV9rZXk6IGNvbXBvbmVudDtcbiAgICBxdWVyeV92YWx1ZTogY29tcG9uZW50O1xuICAgIGZyYWdtZW50OiBjb21wb25lbnQ7XG4gIH1cblxubGV0IHJlYyBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmID0gZnVuY3Rpb25cbiAgfCBsYXN0OjpbXSAtPiBmbiBidWYgbGFzdFxuICB8IGVsOjpyZXN0IC0+XG4gICAgZm4gYnVmIGVsO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiByZXN0XG4gIHwgW10gLT4gKClcblxubGV0IHJldl9pbnRlcmplY3QgZSBsc3QgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gIC0+IGFjY1xuICAgIHwgeDo6eHMgLT4gYXV4ICh4OjplOjphY2MpIHhzXG4gIGluIG1hdGNoIGxzdCB3aXRoXG4gIHwgW10gIC0+IFtdXG4gIHwgaDo6dCAtPiBhdXggW2hdIHRcblxubGV0IGNvbXBhcmVfb3B0IGMgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCAgIE5vbmUgICAtPiAwXG4gIHwgU29tZSBfLCBOb25lICAgLT4gMVxuICB8IE5vbmUsICAgU29tZSBfIC0+IC0xXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gYyBhIGJcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgZiB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IFtdLCAgICBbXSAgICAtPiAgMFxuICB8IF86Ol8sICBbXSAgICAtPiAgMVxuICB8IFtdLCAgICBfOjpfICAtPiAtMVxuICB8IHg6OnhzLCB5Ojp5cyAtPlxuICAgIG1hdGNoIGYgeCB5IHdpdGggMCAtPiBjb21wYXJlX2xpc3QgZiB4cyB5cyB8IGMgLT4gY1xuXG4oKiogU2FmZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsd2F5cyBhbGxvd2VkIGluIGEgVVJJXG4gICogVW5mb3J0dW5hdGVseSwgdGhpcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoaWNoIGJpdCBvZiB0aGUgVVJJXG4gICogaXMgYmVpbmcgcGFyc2VkLCBzbyB0aGVyZSBhcmUgbXVsdGlwbGUgdmFyaWFudHMgKGFuZCB0aGlzXG4gICogc2V0IGlzIHByb2JhYmx5IG5vdCBleGhhdXN0aXZlLiBUT0RPOiBjaGVjay5cbiopXG50eXBlIHNhZmVfY2hhcnMgPSBib29sIGFycmF5XG5cbm1vZHVsZSB0eXBlIFNjaGVtZSA9IHNpZ1xuICB2YWwgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IDogY29tcG9uZW50IC0+IHNhZmVfY2hhcnNcbiAgdmFsIG5vcm1hbGl6ZV9ob3N0IDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgY2Fub25pY2FsaXplX3BvcnQgOiBpbnQgb3B0aW9uIC0+IGludCBvcHRpb25cbiAgdmFsIGNhbm9uaWNhbGl6ZV9wYXRoIDogc3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSA9IHN0cnVjdFxuICBsZXQgc3ViX2RlbGltcyBhID1cbiAgICBsZXQgc3ViZCA9IFwiISQmJygpKissOz1cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN1YmQgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBzdWJkLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIDI1NiBmYWxzZSBpblxuICAgIGxldCBhbHdheXNfc2FmZSA9XG4gICAgICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Xy4tflwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggYWx3YXlzX3NhZmUgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBhbHdheXNfc2FmZS5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgcGNoYXIgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgc2FmZV9jaGFycykgaW5cbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnQCcpIDwtIHRydWU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9zY2hlbWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIHRydWU7XG4gICAgYVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSBwYXRoIGNvbXBvbmVudCBvZiBhIFVSSSAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfcGF0aCA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBwY2hhcikgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IDogc2FmZV9jaGFycyA9XG4gICAgKCogVE9ETzogV2hhdCBhYm91dCB7XCIhXCIsXCIkXCIsXCIsXCJ9PyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9hdnNtL29jYW1sLXVyaS9jb21taXQvMWVmM2YxZGZiNDFiZGI0ZjMzZjIyM2ZmZTE2ZTYyYTMzOTc1NjYxYSNkaWZmLTc0MGYyZGU1M2M5ZWIzNmU5NjcwZGRmYmRiOWJhOTE0UjE3MT4gKilcbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgcGNoYXIgaW5cbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnPycpIDwtIHRydWU7XG4gICAgKCogJyYnIGlzIHNhZmUgYnV0IHdlIHNob3VsZCBlbmNvZGUgbGl0ZXJhbHMgdG8gYXZvaWQgYW1iaWd1aXR5XG4gICAgICAgd2l0aCB0aGUgYWxyZWFkeSBwYXJzZWQgcXMgcGFyYW1zICopXG4gICAgYS4oQ2hhci5jb2RlICcmJykgPC0gZmFsc2U7XG4gICAgKCogJzsnIGlzIHNhZmUgYnV0IHNvbWUgc3lzdGVtcyB0cmVhdCBpdCBsaWtlICcmJy4gKilcbiAgICBhLihDaGFyLmNvZGUgJzsnKSA8LSBmYWxzZTtcbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnPScpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJywnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50IDogc2FmZV9jaGFycyA9IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHVzZXJpbmZvIHN1YmNvbXBvbmVudCBvZiBhIFVSSS5cbiAgICAgIFRPRE86IHRoaXMgbmVlZHMgbW9yZSByZXNlcnZlZCBjaGFyYWN0ZXJzIGFkZGVkICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mbyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCByZWMgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50ID0gZnVuY3Rpb25cbiAgICB8IGBQYXRoIC0+IHNhZmVfY2hhcnNfZm9yX3BhdGhcbiAgICB8IGBVc2VyaW5mbyAtPiBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mb1xuICAgIHwgYFF1ZXJ5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG4gICAgfCBgUXVlcnlfa2V5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleVxuICAgIHwgYFF1ZXJ5X3ZhbHVlIC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlXG4gICAgfCBgRnJhZ21lbnQgLT4gc2FmZV9jaGFyc19mb3JfZnJhZ21lbnRcbiAgICB8IGBTY2hlbWUgLT4gc2FmZV9jaGFyc19mb3Jfc2NoZW1lXG4gICAgfCBgQ3VzdG9tICgoY29tcG9uZW50IDogY29tcG9uZW50KSwgc2FmZSwgdW5zYWZlKSAtPlxuICAgICAgIGxldCBzYWZlX2NoYXJzID0gQXJyYXkuY29weSAoc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCkgaW5cbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIHRydWVcbiAgICAgICBkb25lO1xuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHVuc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHVuc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIGZhbHNlXG4gICAgICAgZG9uZTtcbiAgICAgICBzYWZlX2NoYXJzXG4gICAgfCBgR2VuZXJpY1xuICAgIHwgXyAtPiBzYWZlX2NoYXJzXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzbyA9IGhzb1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCBwb3J0ID0gcG9ydFxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggcGF0aCA9IHBhdGhcbmVuZFxuXG5tb2R1bGUgSHR0cCA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA4MCAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtcIi9cIl1cbiAgICB8IHggIC0+IHhcbmVuZFxuXG5tb2R1bGUgSHR0cHMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIdHRwXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA0NDMgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuZW5kXG5cbm1vZHVsZSBGaWxlIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9XG4gICAgbGV0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBocyBpblxuICAgIGlmIGhzPVwibG9jYWxob3N0XCIgdGhlbiBcIlwiIGVsc2UgaHNcbmVuZFxuXG5tb2R1bGUgVXJuIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG5lbmRcblxubGV0IG1vZHVsZV9vZl9zY2hlbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgcyAtPiBiZWdpbiBtYXRjaCBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgd2l0aFxuICAgICAgfCBcImh0dHBcIiAtPiAobW9kdWxlIEh0dHAgOiBTY2hlbWUpXG4gICAgICB8IFwiaHR0cHNcIiAgLT4gKG1vZHVsZSBIdHRwcyA6IFNjaGVtZSlcbiAgICAgIHwgXCJmaWxlXCIgLT4gKG1vZHVsZSBGaWxlIDogU2NoZW1lKVxuICAgICAgfCBcInVyblwiICAtPiAobW9kdWxlIFVybiA6IFNjaGVtZSlcbiAgICAgIHwgXyAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG4gICAgZW5kXG4gIHwgTm9uZSAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG5cbigqKiBQb3J0aW9ucyBvZiB0aGUgVVJMIG11c3QgYmUgY29udmVydGVkIHRvLWFuZC1mcm9tIHBlcmNlbnQtZW5jb2RpbmdcbiAgKiBhbmQgdGhpcyByZWFsbHksIHJlYWxseSBzaG91bGRuJ3QgYmUgbWl4ZWQgdXAuIFNvIHRoaXMgUGN0IG1vZHVsZVxuICAqIGRlZmluZXMgYWJzdHJhY3QgUGN0LmVuY29kZWQgYW5kIFBjdC5kZWNvZGVkIHR5cGVzIHdoaWNoIHNldHMgdGhlXG4gICogc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgc3RyaW5nLiAgVGhlcmUgYXJlIGZ1bmN0aW9ucyB0byBcImNhc3RcIiB0b1xuICAqIGFuZCBmcm9tIHRoZXNlIGFuZCBub3JtYWwgc3RyaW5ncywgYW5kIHRoaXMgcHJvbW90ZXMgYSBiaXQgb2ZcbiAgKiBpbnRlcm5hbCBzYWZldHkuICBUaGVzZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIGV4dGVybmFsXG4gICogaW50ZXJmYWNlLCBhcyBjYXN0aW5nIHRvLWFuZC1mcm9tIGlzIHF1aXRlIGEgYml0IG9mIGhhc3NsZSBhbmRcbiAgKiBwcm9iYWJseSBub3QgYSBsb3Qgb2YgdXNlIHRvIHRoZSBhdmVyYWdlIGNvbnN1bWVyIG9mIHRoaXMgbGlicmFyeVxuKilcbm1vZHVsZSBQY3QgOiBzaWdcbiAgdHlwZSBlbmNvZGVkXG4gIHR5cGUgZGVjb2RlZFxuXG4gIHZhbCBlbmNvZGUgOiA/c2NoZW1lOnN0cmluZyAtPiA/Y29tcG9uZW50OmNvbXBvbmVudCAtPiBkZWNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIGRlY29kZSA6IGVuY29kZWQgLT4gZGVjb2RlZFxuXG4gICgqIFRoZSBlbXB0eSBkZWNvZGVkIHN0cmluZyAqKVxuICB2YWwgZW1wdHlfZGVjb2RlZCA6IGRlY29kZWRcbiAgKCogSWRlbnRpdHkgZnVuY3Rpb25zIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBjYXN0IHdoZW4gdXNpbmcgdGhlbSBiZWxvdyAqKVxuICB2YWwgY2FzdF9lbmNvZGVkIDogc3RyaW5nIC0+IGVuY29kZWRcbiAgdmFsIGNhc3RfZGVjb2RlZCA6IHN0cmluZyAtPiBkZWNvZGVkXG4gIHZhbCB1bmNhc3RfZW5jb2RlZCA6IGVuY29kZWQgLT4gc3RyaW5nXG4gIHZhbCB1bmNhc3RfZGVjb2RlZCA6IGRlY29kZWQgLT4gc3RyaW5nXG4gICgqIExpZnQgSE9GcyBmb3IgbWFwcyBvdmVyIGVuY29kaW5ncywgZGVjb2RpbmdzLCBhbmQgc3RyaW5ncyAqKVxuICB2YWwgbGlmdF9lbmNvZGVkIDogKGVuY29kZWQgLT4gZW5jb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgbGlmdF9kZWNvZGVkIDogKGRlY29kZWQgLT4gZGVjb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgdW5saWZ0X2VuY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZW5jb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBkZWNvZGVkIC0+IGRlY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkMiA6IChzdHJpbmcgLT4gc3RyaW5nIC0+ICdhKSAtPiBkZWNvZGVkIC0+IGRlY29kZWQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVuY29kZWQgPSBzdHJpbmdcbiAgdHlwZSBkZWNvZGVkID0gc3RyaW5nXG4gIGxldCBjYXN0X2VuY29kZWQgeCA9IHhcbiAgbGV0IGNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgZW1wdHlfZGVjb2RlZCA9IFwiXCJcbiAgbGV0IHVuY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCB1bmNhc3RfZW5jb2RlZCB4ID0geFxuXG4gIGxldCBsaWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IGxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZDIgZiA9IGZcblxuICAoKiogU2NhbiBmb3IgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhbmQgcmVwbGFjZSB0aGVtIHdpdGhcbiAgICAgIHBlcmNlbnQtZW5jb2RlZCBlcXVpdmFsZW50cy5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBlbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgYiA9XG4gICAgbGV0IG1vZHVsZSBTY2hlbWUgPSAodmFsIChtb2R1bGVfb2Zfc2NoZW1lIHNjaGVtZSkgOiBTY2hlbWUpIGluXG4gICAgbGV0IHNhZmVfY2hhcnMgPSBTY2hlbWUuc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBjID0gQ2hhci5jb2RlIGIuW2N1cl0gaW5cbiAgICAgICAgaWYgc2FmZV9jaGFycy4oYykgdGhlblxuICAgICAgICAgIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgaWYgY3VyID4gc3RhcnQgdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFByaW50Zi5zcHJpbnRmIFwiJSUlMDJYXCIgYyk7XG4gICAgICAgICAgc2NhbiAoY3VyKzEpIChjdXIrMSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgaW50X29mX2hleF9jaGFyIGMgPVxuICAgIGxldCBjID0gaW50X29mX2NoYXIgKENoYXIudXBwZXJjYXNlX2FzY2lpIGMpIC0gNDggaW5cbiAgICBpZiBjID4gOVxuICAgIHRoZW4gaWYgYyA+IDE2ICYmIGMgPCAyM1xuICAgICAgdGhlbiBjIC0gN1xuICAgICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG4gICAgZWxzZSBpZiBjID49IDBcbiAgICB0aGVuIGNcbiAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcblxuICAoKiogU2NhbiBmb3IgcGVyY2VudC1lbmNvZGluZyBhbmQgY29udmVydCB0aGVtIGludG8gQVNDSUkuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1kZWNvZGVkIHN0cmluZyAqKVxuICBsZXQgZGVjb2RlIGIgPVxuICAgICgqIFRPRE86IFNob3VsZCBib3RoIHN0cmljdCBhbmQgbm9uLXN0cmljdCB2ZXJzaW9ucyBiZSBleHBvc2VkPyAqKVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KVxuICAgICAgZWxzZSBpZiBiLltjdXJdID0gJyUnIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICclJ1xuICAgICAgICBlbHNlIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgIHNjYW4gY3VyIGN1clxuICAgICAgICB8IGhpZ2hiaXRzIC0+IGJlZ2luXG4gICAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV1cbiAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgbGV0IHN0YXJ0X2F0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICAgICAgICB8IGxvd2JpdHMgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociAoaGlnaGJpdHMgbHNsIDQgKyBsb3diaXRzKSk7XG4gICAgICAgICAgICAgICAgY3VyKzFcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdO1xuICAgICAgICAgICAgICAgIGN1clxuICAgICAgICAgICAgaW4gc2NhbiBzdGFydF9hdCBzdGFydF9hdFxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuZW5kXG5cbigqIFBlcmNlbnQgZW5jb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2VuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBzID1cbiAgUGN0Lih1bmNhc3RfZW5jb2RlZCAoZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCAoY2FzdF9kZWNvZGVkIHMpKSlcblxubGV0IHBjdF9lbmNvZGVyXG4gICAgICA/KHNjaGVtZT1gU2NoZW1lKVxuICAgICAgPyh1c2VyaW5mbz1gVXNlcmluZm8pXG4gICAgICA/KGhvc3Q9YEhvc3QpXG4gICAgICA/KHBhdGg9YFBhdGgpXG4gICAgICA/KHF1ZXJ5X2tleT1gUXVlcnlfa2V5KVxuICAgICAgPyhxdWVyeV92YWx1ZT1gUXVlcnlfdmFsdWUpXG4gICAgICA/KGZyYWdtZW50PWBGcmFnbWVudClcbiAgICAgICgpID1cbiAgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwYXRoOyBxdWVyeV9rZXk7IHF1ZXJ5X3ZhbHVlOyBmcmFnbWVudCB9XG5cbigqIFBlcmNlbnQgZGVjb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2RlY29kZSBzID0gUGN0Lih1bmNhc3RfZGVjb2RlZCAoZGVjb2RlIChjYXN0X2VuY29kZWQgcykpKVxuXG4oKiBVc2VyaW5mbyBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGlkICogY3JlZGVudGlhbCBwYWlyICopXG5tb2R1bGUgVXNlcmluZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG4gIGxldCBjb21wYXJlICh1LHApICh1JyxwJykgPVxuICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIHUgdScgd2l0aFxuICAgIHwgMCAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSBwIHAnXG4gICAgfCBjIC0+IGNcblxuICBsZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCB1cyA9XG4gICAgbWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5tYXg6MiB+b246JzonIHVzIHdpdGhcbiAgICB8IFtdIC0+IChcIlwiLE5vbmUpXG4gICAgfCBbdV0gLT4gKHBjdF9kZWNvZGUgdSxOb25lKVxuICAgIHwgdTo6cDo6XyAtPiAocGN0X2RlY29kZSB1LFNvbWUgKHBjdF9kZWNvZGUgcCkpXG5cbiAgbGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ICh1LHBvKSA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy4oXG4gICAgICAxICsgKGxlbmd0aCB1KSArIChtYXRjaCBwbyB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcCAtPiBsZW5ndGggcCkpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHUpO1xuICAgIGJlZ2luIG1hdGNoIHBvIHdpdGggTm9uZSAtPiAoKTtcbiAgICB8IFNvbWUgcCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHApXG4gICAgZW5kO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5lbmRcblxubGV0IHVzZXJpbmZvX29mX2VuY29kZWQgPSBVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgPSBVc2VyaW5mby5lbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBQYXRoIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYSBsaXN0IG9mIHBhdGggdG9rZW5zICopXG5tb2R1bGUgUGF0aCA9IHN0cnVjdFxuICAoKiBJbnZhcmlhbnQ6IGV2ZXJ5IGVsZW1lbnQgaXMgbm9uLXplcm8sIHNsYXNoZXMgKC8pIG9ubHkgb2NjdXIgYWxvbmUuICopXG4gICgqIFllcywgaXQncyBiZXR0ZXIgdGhpcyB3YXkuIFRoaXMgbWVhbnMgeW91IGNhbiByZXRhaW4gc2VwYXJhdG9yXG4gICAgIGNvbnRleHQgaW4gcmVjdXJzaW9uIChlLmcuIHJlbW92ZV9kb3Rfc2VnbWVudHMgZm9yIHJlbGF0aXZlIHJlc29sdXRpb24pLiAqKVxuXG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmVcblxuICAoKiBNYWtlIGEgcGF0aCB0b2tlbiBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBwYXRoX29mX2VuY29kZWQgcHMgPVxuICAgIGxldCB0b2tsID0gU3RyaW5nZXh0LmZ1bGxfc3BsaXQgcHMgfm9uOicvJyBpblxuICAgIExpc3QubWFwIHBjdF9kZWNvZGUgdG9rbFxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuND4gKilcbiAgbGV0IHJlbW92ZV9kb3Rfc2VnbWVudHMgcCA9XG4gICAgbGV0IHJldnAgPSBMaXN0LnJldiBwIGluXG4gICAgbGV0IHJlYyBsb29wIGFzY2Vuc2lvbiBvdXRwID0gZnVuY3Rpb25cbiAgICAgIHwgXCIvXCI6OlwiLi5cIjo6ciB8IFwiLi5cIjo6ciAtPiBsb29wIChhc2NlbnNpb24gKyAxKSBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OlwiLlwiOjpyICB8IFwiLlwiOjpyICAtPiBsb29wIGFzY2Vuc2lvbiBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OltdIHwgW10gd2hlbiBMaXN0LihsZW5ndGggcCA+IDAgJiYgaGQgcCA9IFwiL1wiKSAtPiBcIi9cIjo6b3V0cFxuICAgICAgfCBbXSB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gTGlzdC5yZXZfYXBwZW5kXG4gICAgICAgIChcIi9cIjo6KHJldl9pbnRlcmplY3QgXCIvXCIgQXJyYXkuKHRvX2xpc3QgKG1ha2UgYXNjZW5zaW9uIFwiLi5cIikpKSkgb3V0cFxuICAgICAgfCBbXSAtPiBMaXN0LihpZiBsZW5ndGggb3V0cCA+IDAgJiYgaGQgb3V0cCA9IFwiL1wiIHRoZW4gdGwgb3V0cCBlbHNlIG91dHApXG4gICAgICB8IFwiL1wiOjpcIi9cIjo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCAoXCIvXCI6OnIpXG4gICAgICB8IFwiL1wiOjpfOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIHJcbiAgICAgIHwgczo6ciAtPiBsb29wIDAgKHM6Om91dHApIHJcbiAgICBpbiBsb29wIDAgW10gcmV2cFxuXG4gIGxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50IHAgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGMgdG9rIC0+IFN0cmluZy5sZW5ndGggdG9rICsgYykgMCBwIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgLT4gZnVuY3Rpb25cbiAgICB8IFwiL1wiIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgfCBzZWcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBzZWcpXG4gICAgKSBcIlwiIGJ1ZiBwO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4zPiAqKVxuICBsZXQgbWVyZ2UgYmhvc3QgYnBhdGggcmVscGF0aCA9XG4gICAgbWF0Y2ggYmhvc3QsIExpc3QucmV2IGJwYXRoIHdpdGhcbiAgICB8IFNvbWUgXywgW10gLT4gXCIvXCI6OnJlbHBhdGhcbiAgICB8IF8sIChcIi9cIjo6cmJwYXRoIHwgXzo6XCIvXCI6OnJicGF0aCkgLT4gTGlzdC5yZXZfYXBwZW5kIChcIi9cIjo6cmJwYXRoKSByZWxwYXRoXG4gICAgfCBfLCBfIC0+IHJlbHBhdGhcbmVuZFxuXG5sZXQgcGF0aF9vZl9lbmNvZGVkID0gUGF0aC5wYXRoX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50ID0gUGF0aC5lbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFF1ZXJ5IHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gYXNzb2MgbGlzdCBvZiBrZXkvdmFsdWVzICopXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcblxuICB0eXBlIGt2ID0gKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEtWIG9mIGt2XG4gICAgfCBSYXcgb2Ygc3RyaW5nIG9wdGlvbiAqIGt2IExhenkudFxuXG4gIGxldCBjb21wYXJlIHggeSA9IG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgS1Yga3ZsLCBLViBrdmwnXG4gICAgfCBSYXcgKF8sIGxhenkga3ZsKSwgS1Yga3ZsJ1xuICAgIHwgS1Yga3ZsLCBSYXcgKF8sIGxhenkga3ZsJykgLT5cbiAgICAgIGNvbXBhcmVfbGlzdCAoZnVuIChrLHZsKSAoaycsdmwnKSAtPlxuICAgICAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSBrIGsnIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZSB2bCB2bCdcbiAgICAgICAgfCBjIC0+IGNcbiAgICAgICkga3ZsIGt2bCdcbiAgICB8IFJhdyAocmF3LF8pLCBSYXcgKHJhdycsXykgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcmF3IHJhdydcblxuICBsZXQgZmluZCBxIGsgPSB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIHEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgc3BsaXRfcXVlcnkgcXMgPVxuICAgIGxldCBlbHMgPSBTdHJpbmdleHQuc3BsaXQgfm9uOicmJyBxcyBpblxuICAgICgqIFJlcGxhY2UgYSArIGluIGEgcXVlcnkgc3RyaW5nIHdpdGggYSBzcGFjZSBpbi1wbGFjZSAqKVxuICAgIGxldCBwbHVzX3RvX3NwYWNlIHMgPVxuICAgICAgbGV0IHMgPSBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIGZvciBpID0gMCB0byBCeXRlcy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgaWYgQnl0ZXMuZ2V0IHMgaSA9ICcrJyB0aGVuIEJ5dGVzLnNldCBzIGkgJyAnXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgKGs6OnY6Ol8pOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgayxcbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5vbjonLCcgKHBsdXNfdG9fc3BhY2Ugdikgd2l0aFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IFtcIlwiXSB8IGwgLT4gbCkgaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBba106OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLCBbXSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtdOjp0bCAtPiBsb29wICgoXCJcIiwgW10pOjphY2MpIHRsXG4gICAgICB8IFtdIC0+IGFjY1xuICAgIGluXG4gICAgbWF0Y2ggZWxzIHdpdGhcbiAgICB8IFtdICAtPiBbXCJcIixbXV1cbiAgICB8IGVscyAtPiBsb29wIFtdXG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4gZWwgLT4gU3RyaW5nZXh0LnNwbGl0IH5vbjonPScgZWwgfm1heDoyKSBlbHMpXG5cbiAgKCogTWFrZSBhIHF1ZXJ5IHR1cGxlIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHF1ZXJ5X29mX2VuY29kZWQgcXMgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChrLCB2KSAtPiAocGN0X2RlY29kZSBrLCBMaXN0Lm1hcCBwY3RfZGVjb2RlIHYpKVxuICAgICAgKHNwbGl0X3F1ZXJ5IHFzKVxuXG4gICgqIEFzc2VtYmxlIGEgcXVlcnkgc3RyaW5nIHN1aXRhYmxlIGZvciBwdXR0aW5nIGludG8gYSBVUkkuXG4gICAqIFR1cGxlIGlucHV0cyBhcmUgcGVyY2VudCBkZWNvZGVkIGFuZCB3aWxsIGJlIGVuY29kZWQgYnlcbiAgICogdGhpcyBmdW5jdGlvbi5cbiAgKilcbiAgbGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhIChrLHYpIC0+XG4gICAgICAgIGEgKyAoU3RyaW5nLmxlbmd0aCBrKVxuICAgICAgICArIChMaXN0LmZvbGRfbGVmdCAoZnVuIGEgcyAtPiBhKyhTdHJpbmcubGVuZ3RoIHMpKzEpIDAgdikgKyAyKSAoLTEpIGwgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAoayx2KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X2tleSBrKTtcbiAgICAgICAgaWYgdiA8PiBbXSB0aGVuIChcbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc9JztcbiAgICAgICAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiBzIC0+XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgICAgICAgICAgIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV92YWx1ZSBzKVxuICAgICAgICAgICAgKSBcIixcIiBidWYgdilcbiAgICAgICkgXCImXCIgYnVmIGw7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBvZl9yYXcgcXMgPVxuICAgIGxldCBsYXp5X3F1ZXJ5ID0gTGF6eS5mcm9tX2Z1biAoZnVuICgpIC0+IHF1ZXJ5X29mX2VuY29kZWQgcXMpIGluXG4gICAgUmF3IChTb21lIHFzLCBsYXp5X3F1ZXJ5KVxuXG4gIGxldCBrdiA9IGZ1bmN0aW9uIFJhdyAoXywgbGF6eSBrdikgfCBLViBrdiAtPiBrdlxuZW5kXG5cbmxldCBxdWVyeV9vZl9lbmNvZGVkID0gUXVlcnkucXVlcnlfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA9IFF1ZXJ5LmVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZVxuXG4oKiBUeXBlIG9mIHRoZSBVUkksIHdpdGggbW9zdCBiaXRzIGJlaW5nIG9wdGlvbmFsICopXG50eXBlIHQgPSB7XG4gIHNjaGVtZTogUGN0LmRlY29kZWQgb3B0aW9uO1xuICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXSBvcHRpb24gO1xuICBwb3J0OiBpbnQgb3B0aW9uO1xuICBwYXRoOiBQYXRoLnQ7XG4gIHF1ZXJ5OiBRdWVyeS50O1xuICBmcmFnbWVudDogUGN0LmRlY29kZWQgb3B0aW9uO1xufVxuXG5sZXQgZW1wdHkgPSB7XG4gIHNjaGVtZSA9IE5vbmU7XG4gIHVzZXJpbmZvID0gTm9uZTtcbiAgaG9zdCA9IE5vbmU7XG4gIHBvcnQgPSBOb25lO1xuICBwYXRoID0gW107XG4gIHF1ZXJ5ID0gUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKTtcbiAgZnJhZ21lbnQgPSBOb25lO1xufVxuXG5sZXQgY29tcGFyZV9kZWNvZGVkID0gUGN0LnVubGlmdF9kZWNvZGVkMiBTdHJpbmcuY29tcGFyZVxubGV0IGNvbXBhcmVfZGVjb2RlZF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2RlY29kZWRcbmxldCBjb21wYXJlX2hvc3QgaDEgaDIgPVxuICBtYXRjaCBoMSwgaDIgd2l0aFxuICB8IGBJcHY0X2xpdGVyYWwgaXAxLCBgSXB2NF9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYElwdjZfbGl0ZXJhbCBpcDEsIGBJcHY2X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSG9zdCBoMSwgYEhvc3QgaDIgLT4gY29tcGFyZV9kZWNvZGVkIGgxIGgyXG4gIHwgXyAtPiAtMVxubGV0IGNvbXBhcmVfaG9zdF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2hvc3RcblxubGV0IGNvbXBhcmUgdCB0JyA9XG4gIChtYXRjaCBjb21wYXJlX2hvc3Rfb3B0IHQuaG9zdCB0Jy5ob3N0IHdpdGhcbiAgfCAwIC0+IChtYXRjaCBjb21wYXJlX2RlY29kZWRfb3B0IHQuc2NoZW1lIHQnLnNjaGVtZSB3aXRoXG4gICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCAoZnVuIHAgcCcgLT5cbiAgICAgIGlmIHAgPCBwJyB0aGVuIC0xIGVsc2UgaWYgcCA+IHAnIHRoZW4gMSBlbHNlIDBcbiAgICApIHQucG9ydCB0Jy5wb3J0IHdpdGhcbiAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgVXNlcmluZm8uY29tcGFyZSB0LnVzZXJpbmZvIHQnLnVzZXJpbmZvIHdpdGhcbiAgICAgICAgfCAwIC0+IChtYXRjaCBQYXRoLmNvbXBhcmUgdC5wYXRoIHQnLnBhdGggd2l0aFxuICAgICAgICAgIHwgMCAtPiAobWF0Y2ggUXVlcnkuY29tcGFyZSB0LnF1ZXJ5IHQnLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2RlY29kZWRfb3B0IHQuZnJhZ21lbnQgdCcuZnJhZ21lbnRcbiAgICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICB8IGMgLT4gYylcbiAgICAgIHwgYyAtPiBjKVxuICAgIHwgYyAtPiBjKVxuICB8IGMgLT4gYylcblxubGV0IGVxdWFsIHQgdCcgPSBjb21wYXJlIHQgdCcgPSAwXG5cbmxldCB1bmNhc3Rfb3B0ID0gZnVuY3Rpb25cbiAgfCBTb21lIGggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBub3JtYWxpemUgc2NoZW0gdXJpID1cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgc2NoZW0pKSA6IFNjaGVtZSkgaW5cbiAgbGV0IGRvYiBmID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBTb21lIChQY3QudW5saWZ0X2RlY29kZWQgZiB4KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluIHt1cmkgd2l0aFxuICAgICAgc2NoZW1lPWRvYiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHVyaS5zY2hlbWU7XG4gICAgICBob3N0PSBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgICAgfCBTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2NF9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2Nl9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfVxuXG4oKiogQ29udmVydCBhIFVSSSBzdHJ1Y3R1cmUgaW50byBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmdcbiAgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMz5cbiopXG5sZXQgdG9fc3RyaW5nID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9XG4gIGxldCBzY2hlbWUgPSBtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgcylcbiAgICB8IE5vbmUgLT4gTm9uZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgKCogUGVyY2VudCBlbmNvZGUgYSBkZWNvZGVkIHN0cmluZyBhbmQgYWRkIGl0IHRvIHRoZSBidWZmZXIgKilcbiAgbGV0IGFkZF9wY3Rfc3RyaW5nID8oY29tcG9uZW50PWBQYXRoKSB4ID1cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZCAoUGN0LmVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgeCkpXG4gIGluXG4gIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSB4IC0+XG4gICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuc2NoZW1lIHg7XG4gICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonXG4gICk7XG4gICgqIFVSSSBoYXMgYSBob3N0IGlmIGFueSBob3N0LXJlbGF0ZWQgY29tcG9uZW50IGlzIHNldC4gRGVmYXVsdHMgdG8gXCJcIi4gKilcbiAgaWYgKG1hdGNoIHVyaS51c2VyaW5mbywgdXJpLmhvc3QsIHVyaS5wb3J0IHdpdGhcbiAgfCBTb21lIF8sIF8sIF8gfCBfLCBTb21lIF8sIF8gfCBfLCBfLCBTb21lIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLy9cIjtcbiAgKG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHVzZXJpbmZvIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ0AnXG4gICk7XG4gIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIChgSG9zdCBob3N0KSAtPlxuICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuaG9zdCBob3N0O1xuICB8U29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdFxuICB8U29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnWyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ10nXG4gICk7XG4gIChtYXRjaCB1cmkucG9ydCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHBvcnQgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHN0cmluZ19vZl9pbnQgcG9ydClcbiAgKTtcbiAgKG1hdGNoIHVyaS5wYXRoIHdpdGggKCogSGFuZGxlIHJlbGF0aXZlIHBhdGhzIGNvcnJlY3RseSAqKVxuICB8IFtdIC0+ICgpXG4gIHwgXCIvXCI6Ol8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gIHwgZmlyc3Rfc2VnbWVudDo6XyAtPlxuICAgIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgIHwgU29tZSBfIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgIHwgTm9uZSAtPlxuICAgICAgICgqIGVuc3VyZSByb3VuZHRyaXAgYnkgZm9yY2luZyByZWxhdGl2ZSBwYXRoIGludGVycHJldGF0aW9uIG5vdCBzY2hlbWUgKilcbiAgICAgICBtYXRjaCBTdHJpbmdleHQuZmluZF9mcm9tIGZpcnN0X3NlZ21lbnQgfnBhdHRlcm46XCI6XCIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBfIC0+IG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi4vXCJcbiAgICApO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgKTtcbiAgUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgfCBSYXcgKE5vbmUsXykgfCBLViBbXSAtPiAoKVxuICAgIHwgUmF3IChfLGxhenkgcSkgfCBLViBxIC0+ICgqIG5vcm1hbGl6ZSBlLmcuIHBlcmNlbnQgY2FwaXRhbGl6YXRpb24gKilcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz8nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgfnBjdF9lbmNvZGVyIHEpXG4gICk7XG4gIChtYXRjaCB1cmkuZnJhZ21lbnQgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIGYgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnIyc7IGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuZnJhZ21lbnQgZlxuICApO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbigqIFZhcmlvdXMgYWNjZXNzb3IgZnVuY3Rpb25zLCBhcyB0aGUgZXh0ZXJuYWwgdXJpIHR5cGUgaXMgYWJzdHJhY3QgICopXG5sZXQgZ2V0X2RlY29kZWRfb3B0ID0gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHxTb21lIHggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHgpXG5sZXQgc2NoZW1lIHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuc2NoZW1lXG5sZXQgd2l0aF9zY2hlbWUgdXJpID1cbiAgZnVuY3Rpb25cbiAgfFNvbWUgc2NoZW1lIC0+IHsgdXJpIHdpdGggc2NoZW1lPVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgc2NoZW1lKSB9XG4gIHxOb25lIC0+IHsgdXJpIHdpdGggc2NoZW1lPU5vbmUgfVxuXG5sZXQgaG9zdCB1cmkgPVxuICBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBTb21lIGhcbiAgfCBTb21lIChgSG9zdCBoKSAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcblxubGV0IGhvc3Rfd2l0aF9kZWZhdWx0ID8oZGVmYXVsdD1cImxvY2FsaG9zdFwiKSB1cmkgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHxOb25lIC0+IGRlZmF1bHRcbiAgfFNvbWUgaCAtPiBoXG5cbmxldCB1c2VyaW5mbyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdXNlcmluZm8gLT4gU29tZSAoUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IE5vbmUgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvXG4gICAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpXG5sZXQgd2l0aF91c2VyaW5mbyB1cmkgdXNlcmluZm8gPVxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG5cbmxldCB1c2VyIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAodXNlciwgXykgLT4gU29tZSB1c2VyXG5cbmxldCBwYXNzd29yZCB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgfCBTb21lIChfLCBOb25lKSAtPiBOb25lXG4gIHwgU29tZSAoXywgU29tZSBwYXNzKSAtPiBTb21lIHBhc3NcbmxldCB3aXRoX3Bhc3N3b3JkIHVyaSBwYXNzd29yZCA9XG4gIGxldCByZXN1bHQgdXNlcmluZm8gPSBtYXRjaCBob3N0IHVyaSB3aXRoXG4gICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgaW5cbiAgbWF0Y2ggdXJpLnVzZXJpbmZvLCBwYXNzd29yZCB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB1cmlcbiAgfCBOb25lLCBTb21lIF8gLT4gcmVzdWx0IChTb21lIChcIlwiLHBhc3N3b3JkKSlcbiAgfCBTb21lICh1c2VyLF8pLCBfIC0+IHJlc3VsdCAoU29tZSAodXNlciwgcGFzc3dvcmQpKVxuXG5sZXQgcG9ydCB1cmkgPSB1cmkucG9ydFxubGV0IHdpdGhfcG9ydCB1cmkgcG9ydCA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBwb3J0PXBvcnQgfVxuICB8IE5vbmUgLT4gYmVnaW5cbiAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9Tm9uZTsgcG9ydD1Ob25lIH1cbiAgICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgcG9ydD1wb3J0IH1cbiAgZW5kXG5cbigqIFJldHVybiB0aGUgcGF0aCBjb21wb25lbnQgKilcbmxldCBwYXRoID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gIHwgTm9uZSAtPiBlbmNvZGVkX29mX3BhdGggfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoXG4gIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfcGF0aCB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKVxubGV0IHdpdGhfcGF0aCB1cmkgcGF0aCA9XG4gIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHBhdGggaW5cbiAgbWF0Y2ggaG9zdCB1cmksIHBhdGggd2l0aFxuICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiB7IHVyaSB3aXRoIHBhdGg9cGF0aCB9XG4gIHwgU29tZSBfLCBfICAtPiB7IHVyaSB3aXRoIHBhdGg9XCIvXCI6OnBhdGggfVxuXG5sZXQgZnJhZ21lbnQgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5mcmFnbWVudFxubGV0IHdpdGhfZnJhZ21lbnQgdXJpID1cbiAgZnVuY3Rpb25cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Ob25lIH1cbiAgfFNvbWUgZnJhZyAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgZnJhZykgfVxuXG5sZXQgcXVlcnkgdXJpID0gUXVlcnkua3YgdXJpLnF1ZXJ5XG5sZXQgdmVyYmF0aW1fcXVlcnkgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gIHwgUmF3IChxcyxfKSAtPiBxc1xuICB8IEtWIFtdIC0+IE5vbmVcbiAgfCBLViBrdiAtPiBTb21lIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWU6KHNjaGVtZSB1cmkpIH5wY3RfZW5jb2RlciBrdilcbilcbmxldCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrID0gUXVlcnkuKGZpbmQgKGt2IHVyaS5xdWVyeSkgaylcbmxldCBnZXRfcXVlcnlfcGFyYW0gdXJpIGsgPVxuICBtYXRjaCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrIHdpdGhcbiAgfE5vbmUgLT4gTm9uZVxuICB8U29tZSB2IC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIsXCIgdilcblxubGV0IHdpdGhfcXVlcnkgdXJpIHF1ZXJ5ID0geyB1cmkgd2l0aCBxdWVyeT1RdWVyeS5LViBxdWVyeSB9XG5sZXQgcV9zIHEgPSBMaXN0Lm1hcCAoZnVuIChrLHYpIC0+IGssW3ZdKSBxXG5sZXQgd2l0aF9xdWVyeScgdXJpIHF1ZXJ5ID0gd2l0aF9xdWVyeSB1cmkgKHFfcyBxdWVyeSlcbmxldCBhZGRfcXVlcnlfcGFyYW0gdXJpIHAgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocDo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtJyB1cmkgKGssdikgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKGssW3ZdKTo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcyB1cmkgcHMgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocHNAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcycgdXJpIHBzID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChxX3MgcHMpQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IHJlbW92ZV9xdWVyeV9wYXJhbSB1cmkgayA9IFF1ZXJ5LihcbiAgeyB1cmkgd2l0aCBxdWVyeT1LViAoTGlzdC5maWx0ZXIgKGZ1biAoaycsXykgLT4gazw+aycpIChrdiB1cmkucXVlcnkpKSB9XG4pXG5cbigqIENvbnN0cnVjdCBlbmNvZGVkIHBhdGggYW5kIHF1ZXJ5IGNvbXBvbmVudHMgKilcbmxldCBwYXRoX2FuZF9xdWVyeSB1cmkgPVxuICBtYXRjaCAocGF0aCB1cmkpLCAocXVlcnkgdXJpKSB3aXRoXG4gIHxcIlwiLCBbXSAtPiBcIi9cIiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICB8XCJcIiwgcSAtPiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIi8/JXNcIiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG4gIHxwLCBbXSAtPiBwXG4gIHxwLCBxIC0+XG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXM/JXNcIiBwIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcblxuKCogVE9ETzogZnVuY3Rpb25zIHRvIGFkZCBhbmQgcmVtb3ZlIGZyb20gYSBVUkkgKilcblxuKCogUmVzb2x2ZSBhIFVSSSB3cnQgYSBiYXNlIFVSSSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMj4gKilcbmxldCByZXNvbHZlIHNjaGVtIGJhc2UgdXJpID1cbiAgbGV0IHNjaGVtID0gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCAobWF0Y2ggc2NoZW1lIGJhc2Ugd2l0aFxuICAgICAgfCBOb25lIC0+ICBzY2hlbVxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICApKSBpblxuICBub3JtYWxpemUgc2NoZW1cbiAgICBQYXRoLihtYXRjaCBzY2hlbWUgdXJpLCB1c2VyaW5mbyB1cmksIGhvc3QgdXJpIHdpdGhcbiAgICB8IFNvbWUgXywgXywgXyAtPlxuICAgICAge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIFNvbWUgXywgX1xuICAgIHwgTm9uZSwgXywgU29tZSBfIC0+XG4gICAgICB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBOb25lLCBOb25lIC0+XG4gICAgICBsZXQgdXJpID0ge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgdXNlcmluZm89YmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdD1iYXNlLmhvc3Q7IHBvcnQ9YmFzZS5wb3J0fSBpblxuICAgICAgbGV0IHBhdGhfc3RyID0gcGF0aCB1cmkgaW5cbiAgICAgIGlmIHBhdGhfc3RyPVwiXCJcbiAgICAgIHRoZW4geyB1cmkgd2l0aFxuICAgICAgICAgICAgIHBhdGg9YmFzZS5wYXRoO1xuICAgICAgICAgICAgIHF1ZXJ5PW1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgICAgICAgICAgICB8IFF1ZXJ5LlJhdyAoTm9uZSxfKSB8IFF1ZXJ5LktWIFtdIC0+IGJhc2UucXVlcnlcbiAgICAgICAgICAgICAgIHwgXyAtPiB1cmkucXVlcnlcbiAgICAgICAgICAgfVxuICAgICAgZWxzZSBpZiBwYXRoX3N0ci5bMF09Jy8nXG4gICAgICB0aGVuIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgICBlbHNlIHt1cmkgd2l0aFxuICAgICAgICBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgKG1lcmdlIGJhc2UuaG9zdCBiYXNlLnBhdGggdXJpLnBhdGgpO1xuICAgICAgfVxuICAgIClcblxubGV0IGNhbm9uaWNhbGl6ZSB1cmkgPVxuICBsZXQgdXJpID0gcmVzb2x2ZSBcIlwiIGVtcHR5IHVyaSBpblxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCB1cmkuc2NoZW1lKSkgOiBTY2hlbWUpIGluXG4gIHsgdXJpIHdpdGhcbiAgICBwb3J0PVNjaGVtZS5jYW5vbmljYWxpemVfcG9ydCB1cmkucG9ydDtcbiAgICBwYXRoPVNjaGVtZS5jYW5vbmljYWxpemVfcGF0aCB1cmkucGF0aDtcbiAgfVxuXG5sZXQgcHAgcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxubGV0IHBwX2h1bSBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5cbm1vZHVsZSBQYXJzZXIgPSBzdHJ1Y3RcbiAgb3BlbiBBbmdzdHJvbVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX2NoYXJfbGlzdCBjaGFycyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfY2hhciBjaGFycylcblxuICBsZXQgc2NoZW1lID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAodGFrZV93aGlsZSAoZnVuIGMgLT4gYyA8PiAnOicgJiYgYyA8PiAnLycgJiYgYyA8PiAnPycgJiYgYyA8PiAnIycpXG4gICAgICA8KiBjaGFyICc6JylcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgaXNfZGlnaXQgPSBmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdCA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCBoZXhhZGVjaW1hbCA9IGxpZnQgc3RyaW5nX29mX2NoYXJfbGlzdCAobWFueSBoZXhfZGlnaXQpXG5cbiAgbGV0IGNfZG90ID0gY2hhciAnLidcblxuICBsZXQgY19hdCA9IGNoYXIgJ0AnXG5cbiAgbGV0IGNfY29sb24gPSBjaGFyICc6J1xuXG4gIGxldCBkZWNfb2N0ZXQgPVxuICAgIHRha2Vfd2hpbGUxIChmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlKSA+Pj0gZnVuIG51bSAtPlxuICAgIGlmIGludF9vZl9zdHJpbmcgbnVtIDwgMjU2IHRoZW5cbiAgICAgIHJldHVybiBudW1cbiAgICBlbHNlXG4gICAgICBmYWlsIFwiaW52YWxpZCBvY3RlY3RcIlxuXG4gIGxldCBpcHY0X2FkZHJlc3MgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHRocmVlIG9uZSAtPiBTdHJpbmcuY29uY2F0IFwiLlwiIHRocmVlIF4gXCIuXCIgXiBvbmUpXG4gICAgICAoY291bnQgMyAoZGVjX29jdGV0IDwqIGNfZG90KSlcbiAgICAgIGRlY19vY3RldFxuXG4gICgqIC0tIGFmdGVyIGRvdWJsZSBjb2xvbiwgSVB2NCBkb3R0ZWQgbm90YXRpb24gY291bGQgYXBwZWFyIGFueXdoZXJlICopXG4gIGxldCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgIGZpeCAoZnVuIGYgLT5cbiAgICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdXG4gICAgICAgIDx8PiBsaWZ0MiAoZnVuIHggeSAtPiB4IDo6IHkpIGhleGFkZWNpbWFsIChjX2NvbG9uICo+IGYgPHw+IHJldHVybiBbXSkpXG5cbiAgbGV0IGRvdWJsZV9jb2xvbiBjb3VudCA9XG4gICAgYWZ0ZXJfZG91YmxlX2NvbG9uID4+PSAoZnVuIHJlc3QgLT5cbiAgICBsZXQgZmlsbGVyX2xlbmd0aCA9IDggLSBjb3VudCAtIExpc3QubGVuZ3RoIHJlc3QgaW5cbiAgICBpZiBmaWxsZXJfbGVuZ3RoIDw9IDAgdGhlblxuICAgICAgZmFpbCBcInRvbyBtYW55IHBhcnRzIGluIElQdjYgYWRkcmVzc1wiXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChcIlwiIDo6IHJlc3QpKVxuICAgIDx8PiByZXR1cm4gW1wiXCJdXG5cbiAgbGV0IHJlYyBwYXJ0ID0gZnVuY3Rpb25cbiAgICB8IDcgLT5cbiAgICAgICgqIG1heCA4IHBhcnRzIGluIGFuIElQdjYgYWRkcmVzcyAqKVxuICAgICAgbGlmdCAoZnVuIHggLT4gWyB4IF0pIGhleGFkZWNpbWFsXG4gICAgfCA2IC0+XG4gICAgICAoKiBhZnRlciA2IHBhcnRzIGl0IGNvdWxkIGVuZCBpbiBJUHY0IGRvdHRlZCBub3RhdGlvbiAqKVxuICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdIDx8PiBoZXhfcGFydCA2XG4gICAgfCBuIC0+XG4gICAgICBoZXhfcGFydCBuXG5cbiAgYW5kIGhleF9wYXJ0IG4gPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHggeSAtPiB4IDo6IHkpXG4gICAgICBoZXhhZGVjaW1hbFxuICAgICAgKGNfY29sb24gKj4gKGNfY29sb24gKj4gZG91YmxlX2NvbG9uIChuICsgMSkgPHw+IHBhcnQgKG4gKyAxKSkpXG5cbiAgbGV0IHJlYyBzcGxpdF93aXRoIGYgeHMgPVxuICAgIG1hdGNoIHhzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBbXSwgW11cbiAgICB8IHkgOjogeXMgLT5cbiAgICAgIGlmIGYgeSB0aGVuXG4gICAgICAgIGxldCB6cywgdHMgPSBzcGxpdF93aXRoIGYgeXMgaW5cbiAgICAgICAgeSA6OiB6cywgdHNcbiAgICAgIGVsc2VcbiAgICAgICAgW10sIHhzXG5cbiAgbGV0IGlwdjYgPVxuICAgIGxldCBmb3JtYXRfYWRkciBzZWdtZW50cyA9XG4gICAgICBsZXQgYmVmb3JlX2RvdWJsZV9jb2xvbiwgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICAgICAgc3BsaXRfd2l0aCAoZnVuIHNlZ21lbnQgLT4gc2VnbWVudCA8PiBcIlwiKSBzZWdtZW50c1xuICAgICAgaW5cbiAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuY29uY2F0IFwiOlwiIGJlZm9yZV9kb3VibGVfY29sb24gaW5cbiAgICAgIGxldCByZXMgPVxuICAgICAgICBtYXRjaCBhZnRlcl9kb3VibGVfY29sb24gd2l0aFxuICAgICAgICB8IFwiXCIgOjogeHMgLT5cbiAgICAgICAgICBiZWZvcmUgXiBcIjo6XCIgXiBTdHJpbmcuY29uY2F0IFwiOlwiIHhzXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGJlZm9yZVxuICAgICAgaW5cbiAgICAgIHJlc1xuICAgIGluXG4gICAgbGlmdCBmb3JtYXRfYWRkciAoY19jb2xvbiAqPiBjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAwIDx8PiBwYXJ0IDApXG5cbiAgbGV0IGlwdjZfYWRkcmVzcyA9XG4gICAgKGNoYXIgJ1snKSAqPiBpcHY2IDwqIChjaGFyICddJylcblxuICBsZXQgcGN0X2VuY29kZWQgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHBjdCBkaWdpdHMgLT4gc3RyaW5nX29mX2NoYXJfbGlzdCAocGN0IDo6IGRpZ2l0cykpXG4gICAgICAoY2hhciAnJScpXG4gICAgICAoY291bnQgMiBoZXhfZGlnaXQpXG5cbiAgbGV0IHN1Yl9kZWxpbXMgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyEnIHwgJyQnIHwgJyYnIHwgJ1xcJycgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnLCcgfCAnOycgfCAnPScgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCB1bnJlc2VydmVkID1cbiAgICAoKiBcIltBLVphLXowLTktLl9+XVwiICopXG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnLScgfCAnLicgfCAnXycgfCAnficgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCByZWdfbmFtZSA9XG4gICAgbGlmdFxuICAgICAgKFN0cmluZy5jb25jYXQgXCJcIilcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICBdKSlcblxuICBsZXQgaG9zdCA9XG4gICAgY2hvaWNlXG4gICAgICBbIGlwdjRfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY0X2xpdGVyYWwgaClcbiAgICAgIDsgaXB2Nl9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjZfbGl0ZXJhbCBoKVxuICAgICAgOyByZWdfbmFtZSA+PnwgKGZ1biBzIC0+IGBIb3N0IChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICgqIFRPRE8oZGlub3NhdXJlKTogQWNjb3JkaW5nIHRvIFJGQzM5ODY6XG5cbiAgICAgICAgIGhvc3QgICAgICAgID0gSVAtbGl0ZXJhbCAvIElQdjRhZGRyZXNzIC8gcmVnLW5hbWVcbiAgICAgICAgIElQLWxpdGVyYWwgID0gXCJbXCIgKCBJUHY2YWRkcmVzcyAvIElQdkZ1dHVyZSAgKSBcIl1cIlxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG5cbiAgICAgICAgIElQdkZ1dHVyZSBpcyBub3QgaW1wbGVtZW50ZWQuIFdlIHNob3VsZCBoYW5kbGUgaXQ6XG5cbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuICAgICAgICopXG4gICAgICBdXG5cbiAgbGV0IHVzZXJpbmZvID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHMgPSBTdHJpbmcuY29uY2F0IFwiXCIgeCBpblxuICAgICAgICBTb21lIChVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkIHMpKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IGNfY29sb25cbiAgICAgICAgICAgIF0pXG4gICAgICA8KiBjX2F0KVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBwb3J0ID1cbiAgICBwZWVrX2NoYXIgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lICc6JyAtPlxuICAgICAgY19jb2xvbiAqPiB0YWtlX3doaWxlIGlzX2RpZ2l0ID4+fCBmdW4gcG9ydCAtPlxuICAgICAgbGV0IGRlY29kZWQgPSBQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHBvcnQpIGluXG4gICAgICAodHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKFBjdC51bmNhc3RfZGVjb2RlZCBkZWNvZGVkKSkgd2l0aCBfIC0+IE5vbmUpXG4gICAgfCBTb21lIF8gfCBOb25lIC0+XG4gICAgICByZXR1cm4gTm9uZVxuXG4gIGxldCBhdXRob3JpdHkgPVxuICAgIHN0cmluZyBcIi8vXCJcbiAgICAqPiBsaWZ0M1xuICAgICAgICAgKGZ1biB1c2VyaW5mbyBob3N0IHBvcnQgLT5cbiAgICAgICAgICAgdXNlcmluZm8sIFNvbWUgaG9zdCwgcG9ydClcbiAgICAgICAgIHVzZXJpbmZvXG4gICAgICAgICBob3N0XG4gICAgICAgICBwb3J0XG4gICAgPHw+IHJldHVybiAoTm9uZSwgTm9uZSwgTm9uZSlcblxuICBsZXQgcGF0aCA9XG4gICAgbGlmdFxuICAgICAgUGF0aC5wYXRoX29mX2VuY29kZWRcbiAgICAgICh0YWtlX3doaWxlIChmdW5jdGlvbiAnPycgfCAnIycgLT4gZmFsc2UgfCBfIC0+IHRydWUpKVxuXG4gIGxldCBxdWVyeSA9XG4gICAgbGlmdFxuICAgICAgUXVlcnkub2ZfcmF3XG4gICAgICAoY2hhciAnPycgKj4gdGFrZV90aWxsIChmdW5jdGlvbiAnIycgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpKVxuICAgIDx8PiByZXR1cm4gKFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSkpXG5cbiAgbGV0IGZyYWdtZW50ID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoY2hhciAnIycgKj4gdGFrZV93aGlsZSAoZnVuIF8gLT4gdHJ1ZSkpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IF91cmlfcmVmZXJlbmNlID1cbiAgICBsaWZ0NFxuICAgICAgKGZ1biBzY2hlbWUgKHVzZXJpbmZvLCBob3N0LCBwb3J0KSBwYXRoIHF1ZXJ5IGZyYWdtZW50IC0+XG4gICAgICAgIG5vcm1hbGl6ZSBzY2hlbWUgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSlcbiAgICAgIHNjaGVtZVxuICAgICAgYXV0aG9yaXR5XG4gICAgICBwYXRoXG4gICAgICBxdWVyeVxuICAgIDwqPiBmcmFnbWVudFxuXG4gICgqIFhYWChhbm1vbnRlaXJvKTogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3aXRoIHRoZSBvbGQgcmVnZXggcGFyc2VyLCB3ZVxuICAgKiBvbmx5IHBhcnNlIHVudGlsIHRoZSBmaXJzdCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgZHJvcCBldmVyeXRoaW5nIGVsc2VcbiAgICogYWZ0ZXIgdGhhdCAqKVxuICBsZXQgdXJpX3JlZmVyZW5jZSA9XG4gICAgdGFrZV93aGlsZSAoZnVuY3Rpb24gfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkgPj58IGZ1biBzIC0+XG4gICAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIF91cmlfcmVmZXJlbmNlIHMgd2l0aFxuICAgICAgfCBPayB0IC0+IHRcbiAgICAgIHwgRXJyb3IgXyAtPlxuICAgICAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICAgICAgZW1wdHlcbmVuZFxuXG5sZXQgZGVjb2RlX2hvc3QgaG9zdCA9XG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmhvc3QgaG9zdCB3aXRoXG4gIHwgT2sgcGFyc2VkIC0+IHBhcnNlZFxuICB8IEVycm9yIF8gLT5cbiAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5pcHY2IGhvc3Qgd2l0aFxuICAgIHwgT2sgcGFyc2VkIC0+IChgSXB2Nl9saXRlcmFsIHBhcnNlZClcbiAgICB8IEVycm9yIF8gLT4gKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIGhvc3QpKVxuXG4oKiBNYWtlIGEgVVJJIHJlY29yZC4gVGhpcyBpcyBhIGJpdCBtb3JlIGluZWZmaWNpZW50IHRoYW4gaXQgbmVlZHMgdG8gYmUgZHVlIHRvIHRoZVxuICogY2FzdGluZy91bmNhc3RpbmcgKHdoaWNoIGlzbid0IGZ1bGx5IGlkZW50aXR5IGR1ZSB0byB0aGUgb3B0aW9uIGJveCksIGJ1dCBpdCBpc1xuICogbm8gYmlnIGRlYWwgZm9yIG5vdy5cbiopXG5sZXQgbWFrZSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGhvc3QgPSBtYXRjaCB1c2VyaW5mbywgaG9zdCwgcG9ydCB3aXRoXG4gICAgfCBfLCBTb21lIF8sIF8gfCBOb25lLCBOb25lLCBOb25lIC0+IGhvc3RcbiAgICB8IFNvbWUgXywgTm9uZSwgXyB8IF8sIE5vbmUsIFNvbWUgXyAtPiBTb21lIFwiXCJcbiAgaW5cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgbWF0Y2ggaG9zdCwgcGF0aCB3aXRoXG4gICAgICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiBwYXRoXG4gICAgICB8IFNvbWUgXywgXyAgLT4gXCIvXCI6OnBhdGhcbiAgaW5cbiAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgaW5cbiAgbGV0IHNjaGVtZSA9IGRlY29kZSBzY2hlbWUgaW5cbiAgbm9ybWFsaXplIHNjaGVtZVxuICAgIHsgc2NoZW1lOyB1c2VyaW5mbztcbiAgICAgIGhvc3QgPVxuICAgICAgICAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgIHwgTm9uZSAtPiBOb25lKTtcbiAgICAgIHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG5sZXQgd2l0aF9ob3N0IHVyaSBob3N0ID1cbiAgeyB1cmkgd2l0aFxuICAgIGhvc3QgPSAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIH1cblxubGV0IHdpdGhfdXJpID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgdXJpID1cbiAgbGV0IHdpdGhfcGF0aF9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9wYXRoIHUgXCJcIlxuICAgIHwgU29tZSBwIC0+IHdpdGhfcGF0aCB1IHBcbiAgaW5cbiAgbGV0IHdpdGhfcXVlcnlfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcXVlcnkgdSBbXVxuICAgIHwgU29tZSBxIC0+IHdpdGhfcXVlcnkgdSBxXG4gIGluXG4gIGxldCB3aXRoXyBmIG8gdSA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHVcbiAgICB8IFNvbWUgeCAtPiBmIHUgeFxuICBpblxuICB3aXRoXyB3aXRoX3NjaGVtZSBzY2hlbWUgdXJpXG4gIHw+IHdpdGhfIHdpdGhfdXNlcmluZm8gdXNlcmluZm9cbiAgfD4gd2l0aF8gd2l0aF9ob3N0IGhvc3RcbiAgfD4gd2l0aF8gd2l0aF9wb3J0IHBvcnRcbiAgfD4gd2l0aF8gd2l0aF9wYXRoX29wdCBwYXRoXG4gIHw+IHdpdGhfIHdpdGhfcXVlcnlfb3B0IHF1ZXJ5XG4gIHw+IHdpdGhfIHdpdGhfZnJhZ21lbnQgZnJhZ21lbnRcblxubGV0IG9mX3N0cmluZyBzID1cbiAgKCogVG8gcHJlc2VydmUgdGhlIG9sZCByZWdleCBwYXJzZXIncyBiZWhhdmlvciwgd2Ugb25seSBwYXJzZSBhIHByZWZpeCwgYW5kXG4gICAqIHN0b3Agd2hlbmV2ZXIgd2UgY2FuJ3QgcGFyc2UgbW9yZS4gKilcbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOlByZWZpeCBQYXJzZXIudXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgfCBPayB0IC0+IHRcbiAgfCBFcnJvciBfIC0+XG4gICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgZW1wdHlcblxubW9kdWxlIEFic29sdXRlX2h0dHAgPSBzdHJ1Y3RcbiAgdHlwZSB1cmkgPSB0XG4gIHR5cGUgdCA9XG4gICAgeyBzY2hlbWUgOiBbIGBIdHRwIHwgYEh0dHBzIF07XG4gICAgICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gICAgICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXTtcbiAgICAgIHBvcnQgOiBpbnQgb3B0aW9uO1xuICAgICAgcGF0aCA6IFBhdGgudDtcbiAgICAgIHF1ZXJ5IDogUXVlcnkudDtcbiAgICAgIGZyYWdtZW50IDogUGN0LmRlY29kZWQgb3B0aW9uXG4gICAgfVxuXG4gIGxldCAoIGxldCogKSA9IFJlc3VsdC5iaW5kXG5cbiAgbGV0IHRvX3VyaSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9ID1cbiAgICBsZXQgc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IGBIdHRwIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwXCJcbiAgICAgIHwgYEh0dHBzIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwc1wiXG4gICAgaW5cbiAgICAoeyBzY2hlbWUgPSBTb21lIHNjaGVtZTtcbiAgICAgICB1c2VyaW5mbztcbiAgICAgICBob3N0ID0gU29tZSBob3N0O1xuICAgICAgIHBvcnQ7XG4gICAgICAgcGF0aDtcbiAgICAgICBxdWVyeTtcbiAgICAgICBmcmFnbWVudCB9IDogdXJpKVxuICA7O1xuXG4gIGxldCBvZl91cmkgKHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH06IHVyaSkgPVxuICAgIGxldCogc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRXJyb3IgKGBNc2cgXCJObyBzY2hlbWUgcHJlc2VudCBpbiBVUklcIilcbiAgICAgIHwgU29tZSBzY2hlbWUgLT5cbiAgICAgICAgKG1hdGNoIFBjdC51bmNhc3RfZGVjb2RlZCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBcImh0dHBcIiAtPiBPayBgSHR0cFxuICAgICAgICAgfCBcImh0dHBzXCIgLT4gT2sgYEh0dHBzXG4gICAgICAgICB8IHVuc3VwcG9ydGVkX3NjaGVtZSAtPlxuICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgIChgTXNnXG4gICAgICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJPbmx5IGh0dHAgYW5kIGh0dHBzIFVSSXMgYXJlIHN1cHBvcnRlZC4gJXMgaXMgaW52YWxpZC5cIlxuICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkX3NjaGVtZSkpKVxuICAgIGluXG4gICAgbGV0KiBob3N0ID0gT3B0aW9uLnRvX3Jlc3VsdCB+bm9uZTooYE1zZyBcImhvc3QgaXMgcmVxdWlyZWQgZm9yIEhUVFAoUykgdXJpc1wiKSBob3N0IGluXG4gICAgT2sgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9IG1hdGNoIG9mX3N0cmluZyBzIHw+IG9mX3VyaSB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIChgTXNnIGVycm9yKSAtPiBmYWlsd2l0aCBlcnJvclxuXG4gIGxldCB0b19zdHJpbmcgP3BjdF9lbmNvZGVyIHQgPSB0b191cmkgdCB8PiB0b19zdHJpbmcgP3BjdF9lbmNvZGVyXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID1cbiAgICB7IHQgd2l0aFxuICAgICAgaG9zdCA9IG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgICAgfCAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY0X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY2X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgfVxuXG4gIGxldCBtYWtlIH5zY2hlbWUgfmhvc3QgP3VzZXJpbmZvID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICAgIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gICAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgIHwgIFwiL1wiOjpfIHwgIFtdIC0+IHBhdGhcbiAgICAgICAgfCBfICAtPiBcIi9cIjo6cGF0aFxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gICAgaW5cbiAgICBub3JtYWxpemVcbiAgICAgIHsgc2NoZW1lO1xuICAgICAgICB1c2VyaW5mbztcbiAgICAgICAgaG9zdD0gZGVjb2RlX2hvc3QgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbiAgbGV0IGhvc3QgdCA9XG4gICAgbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICB8IChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IGhcbiAgICB8IChgSG9zdCBoKSAtPiAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbiAgbGV0IHNjaGVtZSB0ID0gdC5zY2hlbWVcbmVuZFxuIiwib3BlbiBVcmlcblxubW9kdWxlIERlcml2ZWQgPVxuc3RydWN0XG5cblx0b3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxuXHR0eXBlIGNvbXBvbmVudCA9IFtcblx0ICB8IGBTY2hlbWVcblx0ICB8IGBBdXRob3JpdHlcblx0ICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBQYXRoXG5cdCAgfCBgUXVlcnlcblx0ICB8IGBRdWVyeV9rZXlcblx0ICB8IGBRdWVyeV92YWx1ZVxuXHQgIHwgYEZyYWdtZW50XG4gICAgICAgICAgfCBgR2VuZXJpY1xuICAgICAgICAgIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKVxuXHRdIFtAQGRlcml2aW5nIHNleHBdXG5cblx0dHlwZSB0ID0ge1xuICAgICAgICAgIHNjaGVtZTogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICB1c2VyaW5mbzogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBob3N0OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBvcnQ6IGludCBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcGF0aDogc3RyaW5nIFtAZGVmYXVsdCBcIlwiXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHF1ZXJ5OiAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3QgW0BzZXhwLmxpc3RdO1xuICAgICAgICAgIGZyYWdtZW50OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdXG5cdH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuZW5kXG5cbm9wZW4gRGVyaXZlZFxuXG5sZXQgY29tcG9uZW50X29mX3NleHAgPSBjb21wb25lbnRfb2Zfc2V4cFxubGV0IHNleHBfb2ZfY29tcG9uZW50ID0gc2V4cF9vZl9jb21wb25lbnRcblxubGV0IHRfb2Zfc2V4cCBzZXhwID1cblx0bGV0IHQgPSB0X29mX3NleHAgc2V4cCBpblxuXHRVcmkubWFrZVxuXHRcdD9zY2hlbWU6dC5zY2hlbWVcblx0XHQ/dXNlcmluZm86dC51c2VyaW5mb1xuXHRcdD9ob3N0OnQuaG9zdFxuXHRcdD9wb3J0OnQucG9ydFxuXHRcdH5wYXRoOnQucGF0aFxuXHRcdH5xdWVyeTp0LnF1ZXJ5XG5cdFx0P2ZyYWdtZW50OnQuZnJhZ21lbnRcblx0XHQoKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuXHRzZXhwX29mX3Qge1xuXHRcdHNjaGVtZSA9IHNjaGVtZSB0O1xuXHRcdHVzZXJpbmZvID0gdXNlcmluZm8gdDtcblx0XHRob3N0ID0gaG9zdCB0O1xuXHRcdHBvcnQgPSBwb3J0IHQ7XG5cdFx0cGF0aCA9IHBhdGggdDtcblx0XHRxdWVyeSA9IHF1ZXJ5IHQ7XG5cdFx0ZnJhZ21lbnQgPSBmcmFnbWVudCB0XG5cdH1cblxudHlwZSBjb21wb25lbnQgPSBVcmkuY29tcG9uZW50XG5sZXQgY29tcGFyZSBhIGIgPSBVcmkuY29tcGFyZSBhIGJcbmxldCBlcXVhbCBhIGIgPSBVcmkuZXF1YWwgYSBiXG50eXBlIHQgPSBVcmkudFxuIiwib3BlbiBKc19vZl9vY2FtbFxub3BlbiBDb3JlXG5cbmxldCBpc192YWxpZF9pZCBzID1cbiAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIlxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gZmFsc2VcbiAgICB8IF8gLT5cbiAgICAgIFN0cmluZy5mb3JfYWxsIHMgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSlcbjs7XG5cbmxldCBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgPSBpc192YWxpZF9pZCBuYW1lICYmIG5vdCAoU2V0Lm1lbSBzZWVuIG5hbWUpXG5cbmxldCByZWMga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIGxpc3QgPVxuICBtYXRjaCAobGlzdCA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gU29tZSAoTGlzdC5yZXYgcmV2X2FjYylcbiAgfCBBdG9tIG5hbWUgOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIE5vbmUpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBMaXN0IFsgQXRvbSBuYW1lOyB2IF0gOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIFNvbWUgdikgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBhbnlfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gIHwgU2V4cC5BdG9tIHMgLT4gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHMpXG4gIHwgU2V4cC5MaXN0IFsgQXRvbSBuYW1lOyB2IF0gLT4gSnMuVW5zYWZlLm9iaiBbfCBuYW1lLCBhbnlfb2Zfc2V4cCB2IHxdXG4gIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAobWF0Y2gga2V5X3ZhbHVlX3NoYXBlIH5zZWVuOlN0cmluZy5TZXQuZW1wdHkgfnJldl9hY2M6W10gbCB3aXRoXG4gICAgIHwgTm9uZSAtPiBMaXN0Lm1hcCBsIH5mOmFueV9vZl9zZXhwIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgW10gLT4gSnMuYXJyYXkgW3x8XSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBsIC0+XG4gICAgICAgSnMuVW5zYWZlLm9ialxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IG5hbWUsIFNvbWUgdiAtPiBuYW1lLCBhbnlfb2Zfc2V4cCB2XG4gICAgICAgICAgICB8IG5hbWUsIE5vbmUgLT4gbmFtZSwgSnMuVW5zYWZlLmluamVjdCBKcy5udWxsKVxuICAgICAgICAgIHw+IEFycmF5Lm9mX2xpc3QpKVxuOztcblxubGV0IGxvZ19zIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoYW55X29mX3NleHAgc2V4cClcbmxldCBsb2dfc19hc19zdHJpbmcgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKSlcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHUgPSB7IHNvbWVfbmFtZSA6IHN0cmluZyB9IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBGb29cbiAgICAgIHwgQmFyIG9mXG4gICAgICAgICAgeyBmaWVsZDEgOiB1XG4gICAgICAgICAgOyBmaWVsZDIgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuICBpblxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgb3BlbiBNIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgKHNleHBfb2ZfdCBGb28pKSk7XG4gIFslZXhwZWN0IHt8IFwiRm9vXCIgfH1dO1xuICBwcmludF9lbmRsaW5lXG4gICAgKHRvX3N0cmluZ1xuICAgICAgIChhbnlfb2Zfc2V4cFxuICAgICAgICAgIChzZXhwX29mX3RcbiAgICAgICAgICAgICAoQmFyIHsgZmllbGQxID0geyBzb21lX25hbWUgPSBcImRlYnVnXCIgfTsgZmllbGQyID0gU29tZSBcIm90aGVyIHN0cmluZ1wiIH0pKSkpO1xuICBbJWV4cGVjdCB7fCB7XCJCYXJcIjpudWxsLFwiZmllbGQxXCI6e1wic29tZV9uYW1lXCI6XCJkZWJ1Z1wifSxcImZpZWxkMlwiOltcIm90aGVyIHN0cmluZ1wiXX0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJkdXBsaWNhdGUga2V5cyBhcmUgZGlzcGxheWVkIGNvcnJlY3RseVwiID1cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cyA9IHt8ICgoQSBCKSAoQSBDKSkgfH0gfD4gU2V4cC5vZl9zdHJpbmcgaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMpKTtcbiAgWyVleHBlY3Qge3wgW3tcIkFcIjpcIkJcIn0se1wiQVwiOlwiQ1wifV0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJubyBzdGFjayBvdmVyZmxvd1wiID1cbiAgbGV0IGEgPSBBcnJheS5pbml0IDEwMDAwIH5mOihmdW4gaSAtPiBzcHJpbnRmIFwiZiVkXCIgaSwgaSkgaW5cbiAgbGV0IHNleHAgPSBbJXNleHBfb2Y6IChzdHJpbmcgKiBpbnQpIGFycmF5XSBhIGluXG4gIGxldCB4ID0gYW55X29mX3NleHAgc2V4cCBpblxuICBwcmludGYgXCIlZFwiIChKcy5VbnNhZmUuY29lcmNlIHgpIyMuZjk5OTtcbiAgWyVleHBlY3Qge3wgOTk5IHx9XVxuOztcbiIsIm1vZHVsZSBBc3luY19qc19kZWJ1ZyA9IERlYnVnXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVcmlcblxuICBsZXQgc2V4cF9vZl90ID0gVXJpX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIFdlYnNvY2tldF9jb25uZWN0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBUID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuQ29ubmVjdGlvblxuXG4gIHR5cGUgKCdyZXN0LCAnaW1wbGVtZW50YXRpb25zKSBjbGllbnRfdCA9XG4gICAgP3VyaTpVcmkudFxuICAgIC0+ID9oZWFydGJlYXRfY29uZmlnOlQuSGVhcnRiZWF0X2NvbmZpZy50XG4gICAgLT4gP2Rlc2NyaXB0aW9uOkluZm8udFxuICAgIC0+ID9pbXBsZW1lbnRhdGlvbnM6J2ltcGxlbWVudGF0aW9ucyBULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMudFxuICAgIC0+ICdyZXN0XG5cbiAgbW9kdWxlIENsb3NlX2NvZGUgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBvZl9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQgLT4gdFxuICAgIHZhbCBub3JtYWxfY2xvc3VyZSA6IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSBjbG9zZV9ldmVudF9jb2RlID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgYWxsX29mX2Nsb3NlX2V2ZW50X2NvZGUgPSBbXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgR29pbmdfYXdheVxuICAgICAgfCBQcm90b2NvbF9lcnJvclxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgTWVzc2FnZV90b29fYmlnXG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IEludGVybmFsX2Vycm9yXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgQmFkX2dhdGV3YXlcbiAgICAgIHwgVExTX2hhbmRzaGFrZVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF1cblxuICAgIGxldCBub3JtYWxfY2xvc3VyZSA9IE5vcm1hbF9jbG9zdXJlXG5cbiAgICBsZXQgb2ZfaW50ID0gZnVuY3Rpb25cbiAgICAgIHwgMTAwMCAtPiBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDAxIC0+IEdvaW5nX2F3YXlcbiAgICAgIHwgMTAwMiAtPiBQcm90b2NvbF9lcnJvclxuICAgICAgfCAxMDAzIC0+IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgMTAwNSAtPiBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgMTAwNiAtPiBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDcgLT4gSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgMTAwOCAtPiBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IDEwMDkgLT4gTWVzc2FnZV90b29fYmlnXG4gICAgICB8IDEwMTAgLT4gTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgMTAxMSAtPiBJbnRlcm5hbF9lcnJvclxuICAgICAgfCAxMDEyIC0+IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCAxMDEzIC0+IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCAxMDE0IC0+IEJhZF9nYXRld2F5XG4gICAgICB8IDEwMTUgLT4gVExTX2hhbmRzaGFrZVxuICAgICAgfCBjb2RlIC0+XG4gICAgICAgIGlmIGNvZGUgPj0gMzAwMCAmJiBjb2RlIDw9IDQ5OTlcbiAgICAgICAgdGhlbiBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgICAgICBlbHNlIEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgOztcblxuICAgIGxldCBvZl9ldmVudCBjbG9zZV9ldmVudCA9IG9mX2ludCBjbG9zZV9ldmVudCMjLmNvZGVcblxuICAgIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgICAgfCBOb3JtYWxfY2xvc3VyZSAtPiAxMDAwXG4gICAgICB8IEdvaW5nX2F3YXkgLT4gMTAwMVxuICAgICAgfCBQcm90b2NvbF9lcnJvciAtPiAxMDAyXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGEgLT4gMTAwM1xuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWQgLT4gMTAwNVxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlIC0+IDEwMDZcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGEgLT4gMTAwN1xuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uIC0+IDEwMDhcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIC0+IDEwMDlcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb24gLT4gMTAxMFxuICAgICAgfCBJbnRlcm5hbF9lcnJvciAtPiAxMDExXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydCAtPiAxMDEyXG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlciAtPiAxMDEzXG4gICAgICB8IEJhZF9nYXRld2F5IC0+IDEwMTRcbiAgICAgIHwgVExTX2hhbmRzaGFrZSAtPiAxMDE1XG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwidG9faW50IC0+IG9mX2ludCByb3VuZC10cmlwXCIgPVxuICAgICAgTGlzdC5pdGVyIGFsbCB+ZjooZnVuIHQgLT4gYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHRdIChvZl9pbnQgKHRvX2ludCB0KSkgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNsb3NlX3dlYnNvY2tldCAod2Vic29ja2V0IDogV2ViU29ja2V0cy53ZWJTb2NrZXQgSnMudCkgcmVhc29uID1cbiAgICAoKiBbY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25dIGRvZXMgbm90aGluZyBpZiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IENsb3NlZC4gKilcbiAgICBsZXQgY2xvc2UgcmVhc29uID1cbiAgICAgICgqIFRoZSBjb2RlIG11c3QgYmUgZWl0aGVyIDEwMDAgKE5vcm1hbF9jbG9zdXJlKSwgb3IgYmV0d2VlbiAzMDAwIGFuZCA0OTk5XG4gICAgICAgICAoVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlKS4gKilcbiAgICAgIHdlYnNvY2tldCMjY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25cbiAgICAgICAgQ2xvc2VfY29kZS4odG9faW50IG5vcm1hbF9jbG9zdXJlKVxuICAgICAgICAoSnMuc3RyaW5nIHJlYXNvbilcbiAgICBpblxuICAgIG1hdGNoIGNsb3NlIHJlYXNvbiB3aXRoXG4gICAgfCAoKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIChfIDogRXhuLnQpIC0+XG4gICAgICAoKiB0aGlzIGNhbiBmYWlsIGlmIFtyZWFzb25dIGlzIHRvbyBsb25nIG9yIGNvbnRhaW5zIGludmFsaWQgVVRGOCAqKVxuICAgICAgY2xvc2UgXCJjbG9zZS1yZWFzb24td2FzLXRvby1sb25nLW9yLWNvbnRhaW5zLWludmFsaWQtdXRmOFwiXG4gIDs7XG5cbiAgbGV0IGNvbm5lY3Rfd2Vic29ja2V0IHVybCB+ZnJvbV9zZXJ2ZXIgfnRvX3NlcnZlciA9XG4gICAgbWF0Y2ggbmV3JWpzIFdlYlNvY2tldHMud2ViU29ja2V0IChKcy5zdHJpbmcgKFVyaS50b19zdHJpbmcgdXJsKSkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEpzLkVycm9yIGV4biAtPlxuICAgICAgKCogZS5nLiBTRUNVUklUWV9FUlIsIHRob3VnaCBub3RlIHRoYXQgZS5nLiBjb25uZWN0aW5nIHRvIHdzOi8vIGZyb20gYSBodHRwczovLyBwYWdlXG4gICAgICAgICBpbiBjaHJvbWUgc2VlbXMgdG8gbWFuaWZlc3QgYXMgc3VjY2Vzc2Z1bCBjb25zdHJ1Y3Rpb24gYnV0IGltbWVkaWF0ZSBjbG9zdXJlXG4gICAgICAgICAoc2VlIGJlbG93KS4gICopXG4gICAgICByZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyAoSnMudG9fc3RyaW5nIGV4biMjLm1lc3NhZ2UpKVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPiByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pXG4gICAgfCB3ZWJzb2NrZXQgLT5cbiAgICAgIGxldCBjb25uZWN0ZWRfaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgY2xlYW51cCB+cmVhc29uID1cbiAgICAgICAgKCogSWYgd2UgaGF2ZW4ndCBjb25uZWN0ZWQgeWV0LCB0aGVuIGNvbm5lY3RpbmcganVzdCBmYWlsZWQuIE90aGVyd2lzZSBpdCB3YXMgdGhlXG4gICAgICAgICAgIGNsb3N1cmUgb2YgYW4gZXhpc3RpbmcgY29ubmVjdGlvbi4gKilcbiAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGNvbm5lY3RlZF9pdmFyIChFcnJvciByZWFzb24pO1xuICAgICAgICAoKiBbUGlwZS5jbG9zZV0gYW5kIFtXZWJTb2NrZXQuY2xvc2VdIGFyZSBhbGwgaWRlbXBvdGVudC4gKilcbiAgICAgICAgUGlwZS5jbG9zZSBmcm9tX3NlcnZlcjtcbiAgICAgICAgUGlwZS5jbG9zZV9yZWFkIHRvX3NlcnZlcjtcbiAgICAgICAgY2xvc2Vfd2Vic29ja2V0IHdlYnNvY2tldCAoRXJyb3IudG9fc3RyaW5nX2h1bSByZWFzb24pXG4gICAgICBpblxuICAgICAgbGV0IG9uY2xvc2UgKGNsb3NlX2V2ZW50IDogXyBXZWJTb2NrZXRzLmNsb3NlRXZlbnQgSnMudCkgPVxuICAgICAgICAoKiBUaGUgUlBDIEFQSSBkb2Vzbid0IGdpdmUgdXMgYSBnb29kIHBsYWNlIHRvIHB1dCBkZXRhaWxzIGFib3V0IF93aHlfIHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGNsb3NlZC5cblxuICAgICAgICAgICBOb3RlIHRoYXQgaW4gQ2hyb21lIFtjbG9zZV9ldmVudCMjLnJlYXNvbl0gaXMgdHlwaWNhbGx5IGVtcHR5IGFuZFxuICAgICAgICAgICBbY2xvc2VfZXZlbnQjIy5jb2RlXSBkb2Vzbid0IGFjdHVhbGx5IHByb3ZpZGUgdGhhdCBtdWNoIGluc2lnaHQgaW50byB3aHkgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gZmFpbGVkIChpdCdzIGF2YWlsYWJsZSBpbiB0aGUgaW5zcGVjdG9yIGNvbnNvbGUsIGJ1dCBhcyBmYXIgYXMgSSBjYW5cbiAgICAgICAgICAgdGVsbCwgbm90IGF2YWlsYWJsZSB0byB1cykuIFNvIGl0J3Mgbm90IGxpa2Ugd2UncmUgbG9zaW5nIG11Y2ggYW55d2F5LiAqKVxuICAgICAgICBsZXQgcmVhc29uID1cbiAgICAgICAgICBsZXQgd2hhdF9oYXBwZW5lZCA9XG4gICAgICAgICAgICBtYXRjaCBJdmFyLmlzX2Z1bGwgY29ubmVjdGVkX2l2YXIgd2l0aFxuICAgICAgICAgICAgfCBmYWxzZSAtPiBcImNvbm5lY3Rpb24gZmFpbGVkXCJcbiAgICAgICAgICAgIHwgdHJ1ZSAtPiBcImNsb3NlZFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAhXCJXZWJTb2NrZXQgJXMgKCV7c2V4cDpDbG9zZV9jb2RlLnR9KVwiXG4gICAgICAgICAgICB3aGF0X2hhcHBlbmVkXG4gICAgICAgICAgICAoQ2xvc2VfY29kZS5vZl9ldmVudCBjbG9zZV9ldmVudClcbiAgICAgICAgaW5cbiAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgcmVhc29uKTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IG9ubWVzc2FnZSAoZXZlbnQgOiBfIFdlYlNvY2tldHMubWVzc2FnZUV2ZW50IEpzLnQpID1cbiAgICAgICAgbGV0IGRhdGEgPSBUeXBlZF9hcnJheS5CaWdzdHJpbmcub2ZfYXJyYXlCdWZmZXIgZXZlbnQjIy5kYXRhX2J1ZmZlciBpblxuICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiBmcm9tX3NlcnZlciBkYXRhO1xuICAgICAgICBKcy5fZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgY29ubmVjdGVkICgpID0gSXZhci5maWxsX2lmX2VtcHR5IGNvbm5lY3RlZF9pdmFyIChPayAoKSkgaW5cbiAgICAgIHdlYnNvY2tldCMjLmJpbmFyeVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIjtcbiAgICAgICgqIGlmIHRoZSB3ZWJzb2NrZXQgaXMgYWxyZWFkeSBjbG9zZWQsIFtvbmNsb3NlXSB3b24ndCBiZSByZS1maXJlZCB3aGVuIHdlIGFkZCBvdXJcbiAgICAgICAgIGhhbmRsZXIuICopXG4gICAgICAobWF0Y2ggd2Vic29ja2V0IyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICB3ZWJzb2NrZXQjIy5vbm9wZW5cbiAgICAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gKF8gOiBfIERvbS5ldmVudCBKcy50KSAtPlxuICAgICAgICAgICBjb25uZWN0ZWQgKCk7XG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICAgICB8IE9QRU4gLT4gY29ubmVjdGVkICgpXG4gICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+XG4gICAgICAgICAoKiBlLmcuLCBSZWZ1c2VkIHRvIGNvbm5lY3QgdG8gd3M6IGJlY2F1c2UgaXQgdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKilcbiAgICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiV2ViU29ja2V0IGZhaWxlZCBpbW1lZGlhdGVseSAoaWxsZWdhbCBVUkk/KVwiKSk7XG4gICAgICAoKiBVcG9uIGFuIGVycm9yLCBbb25lcnJvcl0gZmlyZXMgYW5kIHRoZW4gW29uY2xvc2VdIGZpcmVzIChpdCdzIHBvc3NpYmxlIGZvciBhXG4gICAgICAgICBncmFjZWZ1bCBjbG9zdXJlIHRvIGNhbGwgW29uY2xvc2VdIG9ubHkpLiBTaW5jZSBBc3luY19SUEMgaGFzIG5vIG5vdGlvbiBvZlxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSwgd2Ugb25seSBuZWVkIHRvIGhhbmRsZSBbb25jbG9zZV0gYW55d2F5LiBGdXJ0aGVyLCB0aGUgZXZlbnRcbiAgICAgICAgIHBhc3NlZCB0byBbb25lcnJvcl0gY29udGFpbnMgbm8gZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yLiAgTm90ZSB0aGF0IHdlXG4gICAgICAgICBzdGlsbCBsaXN0ZW4gdG8gW29uZXJyb3JdIHRvIHByZXZlbnQgdGhlIGVycm9yIGZyb20gbGVha2luZyB0byB1bmNvbnRyb2xsZWRcbiAgICAgICAgIGNvbnRleHQgKilcbiAgICAgIHdlYnNvY2tldCMjLm9uZXJyb3JcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gKF8gOiBfIERvbS5ldmVudCBKcy50KSAtPlxuICAgICAgICBBc3luY19qc19kZWJ1Zy5sb2dfcyBbJW1lc3NhZ2UgXCJ3ZWJzb2NrZXQgZW5jb3VudGVyZWQgdW5leHBlY3RlZCBlcnJvclwiXTtcbiAgICAgICAgSnMuX2ZhbHNlKTtcbiAgICAgIHdlYnNvY2tldCMjLm9ubWVzc2FnZSA6PSBEb20uaGFuZGxlciBvbm1lc3NhZ2U7XG4gICAgICB3ZWJzb2NrZXQjIy5vbmNsb3NlIDo9IERvbS5oYW5kbGVyIG9uY2xvc2U7XG4gICAgICBsZXQgY29ubmVjdGVkX2RlZmVycmVkID0gSXZhci5yZWFkIGNvbm5lY3RlZF9pdmFyIGluXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAobWF0Y2glYmluZCBjb25uZWN0ZWRfZGVmZXJyZWQgd2l0aFxuICAgICAgICAgfCBFcnJvciAoXyA6IEVycm9yLnQpIC0+IHJldHVybiAoKVxuICAgICAgICAgfCBPayAoKSAtPlxuICAgICAgICAgICBQaXBlLml0ZXJfd2l0aG91dF9wdXNoYmFjayB0b19zZXJ2ZXIgfmY6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgOiBXZWJTb2NrZXRzLnJlYWR5U3RhdGUpIHdpdGhcbiAgICAgICAgICAgICB8IENPTk5FQ1RJTkcgLT5cbiAgICAgICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBvbm9wZW4gY2FsbGVkIGJ1dCByZWFkeVN0YXRlIGlzIENPTk5FQ1RJTkdcIl1cbiAgICAgICAgICAgICB8IENMT1NJTkcgfCBDTE9TRUQgLT4gKClcbiAgICAgICAgICAgICB8IE9QRU4gLT5cbiAgICAgICAgICAgICAgIGxldCBidWZmZXIgPSBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgZGF0YSBpblxuICAgICAgICAgICAgICAgKHRyeSB3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyIGJ1ZmZlciB3aXRoXG4gICAgICAgICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChFcnJvci50YWcgfnRhZzpcIndlYnNvY2tldCMjc2VuZF9idWZmZXJcIiAoRXJyb3Iub2ZfZXhuIGV4bikpKSkpO1xuICAgICAgbGV0IGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkID1cbiAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgRGVmZXJyZWQuYW55X3VuaXQgWyBQaXBlLmNsb3NlZCB0b19zZXJ2ZXI7IFBpcGUuY2xvc2VkIGZyb21fc2VydmVyIF1cbiAgICAgICAgaW5cbiAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgXCJSUEMgY29ubmVjdGlvbiBjbG9zZWQgYnkgY2xpZW50XCIpXG4gICAgICBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQ7XG4gICAgICBjb25uZWN0ZWRfZGVmZXJyZWRcbiAgOztcblxuICBsZXQgZGVmYXVsdF91cmkgKCkgPVxuICAgIGxldCBzY2hlbWUgPSBpZiBTdHJpbmcuZXF1YWwgVXJsLkN1cnJlbnQucHJvdG9jb2wgXCJodHRwczpcIiB0aGVuIFwid3NzXCIgZWxzZSBcIndzXCIgaW5cbiAgICBsZXQgcG9ydCA9XG4gICAgICBtYXRjaCBVcmwuQ3VycmVudC5wb3J0IHdpdGhcbiAgICAgIHwgU29tZSBwb3J0IC0+IHBvcnRcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBpZiBTdHJpbmcuZXF1YWwgVXJsLkN1cnJlbnQucHJvdG9jb2wgXCJodHRwczpcIlxuICAgICAgICB0aGVuIFVybC5kZWZhdWx0X2h0dHBzX3BvcnRcbiAgICAgICAgZWxzZSBVcmwuZGVmYXVsdF9odHRwX3BvcnRcbiAgICBpblxuICAgIGxldCBob3N0ID0gVXJsLkN1cnJlbnQuaG9zdCBpblxuICAgIFVyaS5tYWtlIH5zY2hlbWUgfmhvc3QgfnBvcnQgKClcbiAgOztcblxuICBsZXQgY2xpZW50ID8odXJpID0gZGVmYXVsdF91cmkgKCkpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID1cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgSW5mby5jcmVhdGVfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJ3ZWJzb2NrZXRcIiAoZGVzY3JpcHRpb24gOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSkgKHVyaSA6IFVyaS50KV1cbiAgICBpblxuICAgIGxldCBtYWtlX2Nvbm5lY3Rpb24gdHJhbnNwb3J0ID1cbiAgICAgIGxldCBjcmVhdGUgeyBULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMuY29ubmVjdGlvbl9zdGF0ZTsgaW1wbGVtZW50YXRpb25zIH0gPVxuICAgICAgICBULmNyZWF0ZVxuICAgICAgICAgIHRyYW5zcG9ydFxuICAgICAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICAgICAgfmRlc2NyaXB0aW9uXG4gICAgICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICBpblxuICAgICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjcmVhdGUgKFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy5udWxsICgpKVxuICAgICAgfCBTb21lIGltcGxlbWVudGF0aW9ucyAtPiBjcmVhdGUgaW1wbGVtZW50YXRpb25zXG4gICAgaW5cbiAgICBsZXQgZnJvbV9zZXJ2ZXJfciwgZnJvbV9zZXJ2ZXJfdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHRvX3NlcnZlcl9yLCB0b19zZXJ2ZXJfdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbWF0Y2glYmluZFxuICAgICAgY29ubmVjdF93ZWJzb2NrZXQgdXJpIH5mcm9tX3NlcnZlcjpmcm9tX3NlcnZlcl93IH50b19zZXJ2ZXI6dG9fc2VydmVyX3JcbiAgICB3aXRoXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IHJldHVybiBlcnJvclxuICAgIHwgT2sgKCkgLT5cbiAgICAgIGxldCB0cmFuc3BvcnQgPVxuICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LmNyZWF0ZVxuICAgICAgICAgIEFzeW5jX3JwY19rZXJuZWwuUGlwZV90cmFuc3BvcnQuS2luZC5iaWdzdHJpbmdcbiAgICAgICAgICBmcm9tX3NlcnZlcl9yXG4gICAgICAgICAgdG9fc2VydmVyX3dcbiAgICAgIGluXG4gICAgICAobWF0Y2glYmluZCBtYWtlX2Nvbm5lY3Rpb24gdHJhbnNwb3J0IHdpdGhcbiAgICAgICB8IE9rIGNvbm5lY3Rpb24gLT4gcmV0dXJuIChPayBjb25uZWN0aW9uKVxuICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICBsZXQlYmluZCAoKSA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLlRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICAgICAgIHJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bikpXG4gIDs7XG5cbiAgbGV0IGNsaWVudF9leG4gP3VyaSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgY2xpZW50ID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPj58IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQXN5bmNfcnBjX2tlcm5lbC5ScGNcblxubW9kdWxlIENvbm5lY3Rpb24gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25uZWN0aW9uXG4gIGluY2x1ZGUgV2Vic29ja2V0X2Nvbm5lY3Rpb25cbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfcnBjX2tlcm5lbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBVcmlcblxuICAgIGxldCB0b19zdHJpbmcgcyA9IFVyaS50b19zdHJpbmcgc1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjXG5cbiAgbGV0IGNyZWF0ZV9mcm9tX3VyaSA9IFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY3JlYXRlIH5hZGRyZXNzOihtb2R1bGUgVXJpKVxuXG4gIGxldCBjcmVhdGVfZnJvbV91cmlfb3B0aW9uID1cbiAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZVxuICAgICAgfmFkZHJlc3M6XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gVXJpLnQgb3B0aW9uIFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwXVxuICAgICAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBBc3luY19ycGNfa2VybmVsLlBlcnNpc3RlbnRfY29ubmVjdGlvbi5WZXJzaW9uZWRfcnBjXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgT3B0ID0gSnMuT3B0XG5tb2R1bGUgT3B0ZGVmID0gSnMuT3B0ZGVmXG5cbm1vZHVsZSBSZXNwb25zZV90eXBlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFhtbEh0dHBSZXF1ZXN0LnJlc3BvbnNlID1cbiAgICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBPcHQudCB0XG4gICAgfCBCbG9iIDogI0ZpbGUuYmxvYiBKcy50IEpzLk9wdC50IHRcbiAgICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IEpzLnQgT3B0LnQgdFxuICAgIHwgSlNPTiA6ICdhIE9wdC50IHRcbiAgICB8IFRleHQgOiBKcy5qc19zdHJpbmcgSnMudCB0XG4gICAgfCBEZWZhdWx0IDogc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAncmVzcG9uc2UgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBnZXRfaGVhZGVyIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICA7IGNvbnRlbnQgOiAncmVzcG9uc2VcbiAgICB9XG5lbmRcblxubW9kdWxlIFBvc3RfYm9keSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQmxvYiBvZiBGaWxlLmJsb2IgSnMudFxuICAgIHwgRG9jdW1lbnQgb2YgRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IEpzLnRcbiAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IEZvcm1fZGF0YSBvZiBGb3JtLmZvcm1EYXRhIEpzLnRcbmVuZFxuXG5tb2R1bGUgTWV0aG9kX3dpdGhfYXJncyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgR2V0IG9mIChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICB8IFBvc3Qgb2YgUG9zdF9ib2R5LnQgb3B0aW9uXG5lbmRcblxudHlwZSAnayB3aXRoX3JlcXVlc3RfYXJncyA9XG4gID9oZWFkZXJzOihzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgLT4gP29uX3Byb2dyZXNzOihsb2FkZWQ6aW50IC0+IHRvdGFsOmludCAtPiB1bml0KVxuICAtPiA/b25fdXBsb2FkX3Byb2dyZXNzOihsb2FkZWQ6aW50IC0+IHRvdGFsOmludCAtPiB1bml0KVxuICAtPiB1cmw6c3RyaW5nXG4gIC0+ICdrXG5cbmxldCBoYXNfZ2V0X2FyZ3MgdXJsID0gT3B0aW9uLmlzX3NvbWUgKFN0cmluZy5pbmRleCB1cmwgJz8nKVxuXG5sZXQgcmVxdWVzdFxuICAgICAgPyhoZWFkZXJzID0gW10pXG4gICAgICA/b25fcHJvZ3Jlc3NcbiAgICAgID9vbl91cGxvYWRfcHJvZ3Jlc3NcbiAgICAgIH51cmxcbiAgICAgICh0eXBlIHJlc3ApXG4gICAgICB+KHJlc3BvbnNlX3R5cGUgOiByZXNwIFJlc3BvbnNlX3R5cGUudClcbiAgICAgIChtZXRob2Rfd2l0aF9hcmdzIDogTWV0aG9kX3dpdGhfYXJncy50KVxuICA9XG4gIGxldCB1cmwsIG1ldGhvZF9zdHJpbmcgPVxuICAgIG1hdGNoIG1ldGhvZF93aXRoX2FyZ3Mgd2l0aFxuICAgIHwgR2V0IGFyZ3MgLT5cbiAgICAgIHVybCBeIChpZiBoYXNfZ2V0X2FyZ3MgdXJsIHRoZW4gXCImXCIgZWxzZSBcIj9cIikgXiBVcmwuZW5jb2RlX2FyZ3VtZW50cyBhcmdzLCBcIkdFVFwiXG4gICAgfCBQb3N0IF9ib2R5IC0+IHVybCwgXCJQT1NUXCJcbiAgaW5cbiAgbGV0IHJlcSA9IFhtbEh0dHBSZXF1ZXN0LmNyZWF0ZSAoKSBpblxuICByZXEjI19vcGVuIChKcy5zdHJpbmcgbWV0aG9kX3N0cmluZykgKEpzLnN0cmluZyB1cmwpIEpzLl90cnVlO1xuICAobGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICB8IEFycmF5QnVmZmVyIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiXG4gICB8IEJsb2IgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImJsb2JcIlxuICAgfCBEb2N1bWVudCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiZG9jdW1lbnRcIlxuICAgfCBKU09OIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJqc29uXCJcbiAgIHwgVGV4dCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwidGV4dFwiXG4gICB8IERlZmF1bHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcIlwiKTtcbiAgTGlzdC5pdGVyIGhlYWRlcnMgfmY6KGZ1biAobmFtZSwgdmFsdWUpIC0+XG4gICAgcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyB2YWx1ZSkpO1xuICBsZXQgcmVzcG9uc2UgOiByZXNwIFJlc3BvbnNlLnQgT3JfZXJyb3IudCBJdmFyLnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICByZXEjIy5vbmVycm9yXG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiTmV0d29yayBlcnJvclwiKTtcbiAgICBKcy5fdHJ1ZSk7XG4gIHJlcSMjLm9udGltZW91dFxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIlRpbWVvdXRcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnJlYWR5c3RhdGVjaGFuZ2VcbiAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT5cbiAgICBtYXRjaCByZXEjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICB8IERPTkUgLT5cbiAgICAgIGxldCByZXMgPVxuICAgICAgICBpZiByZXEjIy5zdGF0dXMgPj0gMjAwICYmIHJlcSMjLnN0YXR1cyA8IDMwMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBjb250ZW50IDogcmVzcCBPcl9lcnJvci50ID1cbiAgICAgICAgICAgIGxldCBnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKSA9XG4gICAgICAgICAgICAgIE9wdC5jYXNlXG4gICAgICAgICAgICAgICAgcmVxIyMucmVzcG9uc2VUZXh0XG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBzaG91bGQgbm90IGJlIGVudGVyZWQgYXMgcGVyIHRoZSBzcGVjaWZpY2F0aW9uIG9mXG4gICAgICAgICAgICAgICAgICAgICAgWE1MSHR0cFJlcXVlc3QgYXQgTUROIHdlYiBkb2NzLCBiZWNhdXNlIGlmIGEgcmVxdWVzdCBpcyBzdWNjZXNzZnVsLFxuICAgICAgICAgICAgICAgICAgICAgIGluIHN0YXRlIFtET05FXSBhbmQgcmVzcG9uc2VfdHlwZSBbVGV4dF0gb3IgW0RlZmF1bHRdLFxuICAgICAgICAgICAgICAgICAgICAgIFtyZXNwb25zZVRleHRdIHNob3VsZCBub3QgYmUgW251bGxdLlxuICAgICAgICAgICAgICAgICAgICAgIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUZXh0XG4gICAgICAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgICAgICBlcnJvcl9zXG4gICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgXCJObyByZXNwb25zZSByZXR1cm5lZCBkZXNwaXRlIHN1Y2Nlc3NmdWwgcmVxdWVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAsIHsgY29kZSA9IChyZXEjIy5zdGF0dXMgOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgIDsgc3RhdHVzX3RleHQgPSAoSnMudG9fc3RyaW5nIHJlcSMjLnN0YXR1c1RleHQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICAgICAgICAgIFJlc3VsdC5yZXR1cm5cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3BlbiBSZXNwb25zZV90eXBlIGluXG4gICAgICAgICAgICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgICAgICAgICAgIHwgQXJyYXlCdWZmZXIgLT4gT2sgKEZpbGUuQ29lcmNlVG8uYXJyYXlCdWZmZXIgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IEJsb2IgLT4gT2sgKEZpbGUuQ29lcmNlVG8uYmxvYiByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgRG9jdW1lbnQgLT4gT2sgKEZpbGUuQ29lcmNlVG8uZG9jdW1lbnQgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IEpTT04gLT4gT2sgKEZpbGUuQ29lcmNlVG8uanNvbiByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgVGV4dCAtPiBnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKVxuICAgICAgICAgICAgfCBEZWZhdWx0IC0+XG4gICAgICAgICAgICAgIE9yX2Vycm9yLm1hcCAoZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkpIH5mOkpzLnRvX3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGdldF9oZWFkZXIgcyA9XG4gICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAocmVxIyNnZXRSZXNwb25zZUhlYWRlciAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAgICAgICAoZnVuIHYgLT4gU29tZSAoSnMudG9fc3RyaW5nIHYpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBSZXNwb25zZS5jb250ZW50OyBjb2RlID0gcmVxIyMuc3RhdHVzOyBnZXRfaGVhZGVyIH0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgXCJSZXF1ZXN0IGZhaWxlZFwiXG4gICAgICAgICAgICAsIHsgY29kZSA9IChyZXEjIy5zdGF0dXMgOiBpbnQpXG4gICAgICAgICAgICAgIDsgc3RhdHVzX3RleHQgPSAoSnMudG9fc3RyaW5nIHJlcSMjLnN0YXR1c1RleHQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIH1dXG4gICAgICBpblxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIHJlc1xuICAgIHwgXyAtPiAoKSk7XG4gIE9wdGlvbi5pdGVyIG9uX3Byb2dyZXNzIH5mOihmdW4gb25fcHJvZ3Jlc3MgLT5cbiAgICByZXEjIy5vbnByb2dyZXNzXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICBvbl9wcm9ncmVzcyB+bG9hZGVkOmUjIy5sb2FkZWQgfnRvdGFsOmUjIy50b3RhbDtcbiAgICAgIEpzLl90cnVlKSk7XG4gIE9wdGRlZi5pdGVyIHJlcSMjLnVwbG9hZCAoZnVuIHVwbG9hZCAtPlxuICAgIE9wdGlvbi5pdGVyIG9uX3VwbG9hZF9wcm9ncmVzcyB+ZjooZnVuIG9uX3VwbG9hZF9wcm9ncmVzcyAtPlxuICAgICAgdXBsb2FkIyMub25wcm9ncmVzc1xuICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgIG9uX3VwbG9hZF9wcm9ncmVzcyB+bG9hZGVkOmUjIy5sb2FkZWQgfnRvdGFsOmUjIy50b3RhbDtcbiAgICAgICAgSnMuX3RydWUpKSk7XG4gIChtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgIHwgR2V0IF8gLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgIHwgUG9zdCBib2R5IC0+XG4gICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXEjI3NlbmQgSnMubnVsbFxuICAgICAgfCBTb21lIGJvZHkgLT5cbiAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgfCBCbG9iIGIgLT4gcmVxIyNzZW5kX2Jsb2IgYlxuICAgICAgICAgfCBEb2N1bWVudCBkIC0+IHJlcSMjc2VuZF9kb2N1bWVudCBkXG4gICAgICAgICB8IFN0cmluZyBzIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoSnMuc3RyaW5nIHMpKVxuICAgICAgICAgfCBGb3JtX2RhdGEgZmQgLT4gcmVxIyNzZW5kX2Zvcm1EYXRhIGZkKSkpO1xuICBJdmFyLnJlYWQgcmVzcG9uc2Vcbjs7XG5cbmxldCBnZXQgPyhhcmd1bWVudHMgPSBbXSkgdXJsID1cbiAgRGVmZXJyZWQuT3JfZXJyb3IubWFwXG4gICAgfmY6KGZ1biByZXNwIC0+IHJlc3AuY29udGVudClcbiAgICAocmVxdWVzdCB+dXJsIH5yZXNwb25zZV90eXBlOkRlZmF1bHQgKEdldCBhcmd1bWVudHMpKVxuOztcblxubGV0IHBvc3QgP2JvZHkgdXJsID1cbiAgRGVmZXJyZWQuT3JfZXJyb3IubWFwXG4gICAgfmY6KGZ1biByZXNwIC0+IHJlc3AuY29udGVudClcbiAgICAocmVxdWVzdCB+dXJsIH5yZXNwb25zZV90eXBlOkRlZmF1bHQgKFBvc3QgYm9keSkpXG47O1xuIiwib3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IENvcmUuVGltZV9uc1xubW9kdWxlIENsb2NrX25zID0gQXN5bmNfa2VybmVsLkNsb2NrX25zXG5tb2R1bGUgU2NoZWR1bGVyID0gQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuUHJpdmF0ZVxub3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgc2xlZXAgZCA9IENsb2NrX25zLmFmdGVyIChUaW1lX25zLlNwYW4ub2Zfc2VjIGQpXG5sZXQgeWllbGQgKCkgPSBTY2hlZHVsZXIueWllbGQgKFNjaGVkdWxlci50ICgpKVxuXG5sZXQgZXh0cmFjdF9qc19lcnJvciAoZXhuIDogZXhuKSA6IEpzLmVycm9yIEpzLnQgb3B0aW9uID1cbiAgSnMuT3B0LnRvX29wdGlvbiAoSnMuanNfZXJyb3Jfb2ZfZXhuIGV4bilcbjs7XG5cbmxldCBydW4gPVxuICBsZXQgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgSWRsZVxuICAgICAgfCBSdW5uaW5nXG4gICAgICB8IFdpbGxfcnVuX3Nvb25cbiAgZW5kXG4gIGluXG4gIGxldCBtb2R1bGUgTmV4dF93YWtldXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdCBvZiBUaW1lX25zLnQgKiBmbG9hdFxuICAgICAgfCBOb193YWtldXBcbiAgICAgIHwgU29vblxuICBlbmRcbiAgaW5cbiAgbGV0IHN0YXRlID0gcmVmIFN0YXRlLklkbGUgaW5cbiAgbGV0IHRpbWVvdXRzID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGxldCBydW5fYWZ0ZXIgfmYgfm1zID0gaWdub3JlIChEb21faHRtbC5zZXRUaW1lb3V0IGYgbXMgOiBEb21faHRtbC50aW1lb3V0X2lkX3NhZmUpIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIG1hdGNoICFzdGF0ZSwgU2NoZWR1bGVyLnVuY2F1Z2h0X2V4biB0IHdpdGhcbiAgICB8IF8sIFNvbWUgXyB8IFN0YXRlLlJ1bm5pbmcsIE5vbmUgLT4gKClcbiAgICB8IChTdGF0ZS5JZGxlIHwgU3RhdGUuV2lsbF9ydW5fc29vbiksIE5vbmUgLT5cbiAgICAgIHN0YXRlIDo9IFN0YXRlLlJ1bm5pbmc7XG4gICAgICBTY2hlZHVsZXIucnVuX2N5Y2xlIHQ7XG4gICAgICBsZXQgbmV4dF93YWtldXAgOiBOZXh0X3dha2V1cC50ID1cbiAgICAgICAgaWYgU2NoZWR1bGVyLmNhbl9ydW5fYV9qb2IgdFxuICAgICAgICB0aGVuIFNvb25cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggU2NoZWR1bGVyLm5leHRfdXBjb21pbmdfZXZlbnQgdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vX3dha2V1cFxuICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gVGltZV9ucy5kaWZmIG5leHQgbm93IGluXG4gICAgICAgICAgICBsZXQgZF9tcyA9IFRpbWVfbnMuU3Bhbi50b19tcyBkIGluXG4gICAgICAgICAgICBpZiBGbG9hdC4oIDw9ICkgZF9tcyAwLiB0aGVuIFNvb24gZWxzZSBBdCAobmV4dCwgZF9tcykpXG4gICAgICBpblxuICAgICAgT3B0aW9uLml0ZXIgKFNjaGVkdWxlci51bmNhdWdodF9leG5fdW53cmFwcGVkIHQpIH5mOihmdW4gKGV4biwgX3NleHApIC0+XG4gICAgICAgIG1hdGNoIEFzeW5jX2tlcm5lbC5Nb25pdG9yLmV4dHJhY3RfZXhuIGV4biB3aXRoXG4gICAgICAgIHwgSnMuRXJyb3IgZXJyIC0+IEpzLnJhaXNlX2pzX2Vycm9yIGVyclxuICAgICAgICB8IGV4biAtPlxuICAgICAgICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgICAgICAgfCBTb21lIGVyciAtPlxuICAgICAgICAgICAgICgqIEhhY2sgdG8gZ2V0IGEgYmV0dGVyIGJhY2t0cmFjZSAqKVxuICAgICAgICAgICAgICgqIFdlIGZpcnN0IG91dHB1dCB0aGUgc3RyaW5naWZpZWQgb2NhbWwgZXhjZXB0aW9uICopXG4gICAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpO1xuICAgICAgICAgICAgICgqIEFuZCB0aGVuIHJhaXNlIHRoZSBlbWJlZGRlZCBqYXZhc2NyaXB0IGVycm9yIHRoYXQgcHJvdmlkZXMgYSBwcm9wZXJcbiAgICAgICAgICAgICAgICBiYWNrdHJhY2Ugd2l0aCBnb29kIHNvdXJjZW1hcCBzdXBwb3J0LlxuICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgamF2YXNjcmlwdCBlcnJvciBpcyBwcm9iYWJseSBub3QgbWVhbmluZ2Z1bCB3aGljaCBpcyB3aHlcbiAgICAgICAgICAgICAgICB3ZSBmaXJzdCBvdXRwdXQgdGhlIHNlcmlhbGl6YXRpb24gb2Ygb2NhbWwgZXhjZXB0aW9uLiAqKVxuICAgICAgICAgICAgIEpzLnJhaXNlX2pzX2Vycm9yIGVycikpO1xuICAgICAgKG1hdGNoIG5leHRfd2FrZXVwIHdpdGhcbiAgICAgICB8IE5vX3dha2V1cCAtPiBzdGF0ZSA6PSBJZGxlXG4gICAgICAgfCBTb29uIC0+XG4gICAgICAgICBzdGF0ZSA6PSBXaWxsX3J1bl9zb29uO1xuICAgICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuXG4gICAgICAgfCBBdCAoYXQsIGRfbXMpIC0+XG4gICAgICAgICBzdGF0ZSA6PSBJZGxlO1xuICAgICAgICAgaWYgU3RhY2suaXNfZW1wdHkgdGltZW91dHMgfHwgVGltZV9ucy4oIDwgKSBhdCAoU3RhY2sudG9wX2V4biB0aW1lb3V0cylcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBTdGFjay5wdXNoIHRpbWVvdXRzIGF0O1xuICAgICAgICAgICBydW5fYWZ0ZXIgfmY6cnVuX3RpbWVvdXQgfm1zOmRfbXMpKVxuICBhbmQgcnVuX3RpbWVvdXQgKCkgPVxuICAgICgqIEVhY2ggY2FsbCB0byBbcnVuX3RpbWVvdXRdIHJlbW92ZXMgZXhhY3RseSBvbmUgZWxlbWVudCBmcm9tIFt0aW1lb3V0c10uICBUaGlzXG4gICAgICAgbWFpbnRhaW5zIHRoZSBpbnZhcmlhbnQgdGhhdCBbU3RhY2subGVuZ3RoIHRpbWVvdXRzXSBpcyBleGFjdGx5IHRoZSBudW1iZXIgb2ZcbiAgICAgICBvdXRzdGFuZGluZyB0aW1lb3V0cyB3ZSBoYXZlIHJlZ2lzdGVyZWQuICopXG4gICAgaWdub3JlIChTdGFjay5wb3BfZXhuIHRpbWVvdXRzIDogVGltZV9ucy50KTtcbiAgICBsb29wICgpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBTdGF0ZS5JZGxlIC0+XG4gICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC47XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5XaWxsX3J1bl9zb29uXG4gICAgfCBTdGF0ZS5SdW5uaW5nIHwgU3RhdGUuV2lsbF9ydW5fc29vbiAtPiAoKVxuOztcblxubGV0IGxvZyBuYW1lIGV4biA9XG4gIGxldCBleG4gPVxuICAgIG1hdGNoIEFzeW5jX2tlcm5lbC5Nb25pdG9yLmV4dHJhY3RfZXhuIGV4biB3aXRoXG4gICAgfCBKcy5FcnJvciBlcnIgLT4gYEpzIGVyclxuICAgIHwgZXhuIC0+XG4gICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgIHwgTm9uZSAtPiBgRXhuIGV4blxuICAgICAgIHwgU29tZSBlcnIgLT4gYEpzX2FuZF9leG4gKGV4biwgZXJyKSlcbiAgaW5cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBgSnMgZXJyIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIGVyclxuICB8IGBFeG4gZXhuIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSlcbiAgfCBgSnNfYW5kX2V4biAoZXhuLCBlcnIpIC0+XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKSBlcnJcbjs7XG5cbmxldCBpbml0aWFsaXplZF9yZWYgPSByZWYgZmFsc2VcblxubGV0IGluaXRpYWxpemF0aW9uID1cbiAgbGF6eVxuICAgIChsZXQgdCA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgIGluaXRpYWxpemVkX3JlZiA6PSB0cnVlO1xuICAgICBTY2hlZHVsZXIuc2V0X2pvYl9xdWV1ZWRfaG9vayB0IChmdW4gXyAtPiBydW4gKCkpO1xuICAgICBTY2hlZHVsZXIuc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IHJ1bjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuRXhwZXJ0LnRyeV93aXRoX2xvZ19leG4gOj0gbG9nIFwiQXN5bmNfa2VybmVsOiBNb25pdG9yLnRyeV93aXRoXCI7XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnNcbiAgICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5tYWluXG4gICAgICAgfmY6KGxvZyBcIkFzeW5jX2tlcm5lbDogVW5oYW5kbGVkIGV4Y2VwdGlvblwiKTtcbiAgICAgcnVuICgpKVxuOztcblxubGV0IGluaXQgKCkgPSBmb3JjZSBpbml0aWFsaXphdGlvblxubGV0IGluaXRpYWxpemVkICgpID0gIWluaXRpYWxpemVkX3JlZlxuXG5sZXQgZG9jdW1lbnRfbG9hZGVkID1cbiAgbGV0IGpzX3N0cmluZ19jb21wYXJlIHMgPVxuICAgIGxldCBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzID0gcGh5c19lcXVhbCBpblxuICAgIGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgKEpzLnN0cmluZyBzKVxuICBpblxuICBsZXQgcmVhZHlfc3RhdGVfY2hhbmdlID0gXCJyZWFkeXN0YXRlY2hhbmdlXCIgaW5cbiAgbGV0IGNvbXBsZXRlID0gXCJjb21wbGV0ZVwiIGluXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlX2V2ID0gRG9tLkV2ZW50Lm1ha2UgcmVhZHlfc3RhdGVfY2hhbmdlIGluXG4gIGxldCBhZGRfZXZlbnQgdGFyZ2V0IGV2dCBoYW5kbGVyID1cbiAgICBpZ25vcmVcbiAgICAgIChEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIHRhcmdldCBldnQgaGFuZGxlciBKcy5fZmFsc2UgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIGlmIGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgIHRoZW4gQXN5bmNfa2VybmVsLkRlZmVycmVkLnVuaXRcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2FkZWQgPSBBc3luY19rZXJuZWwuSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBoYW5kbGVyIGV2dCA9XG4gICAgICAgIGlmIChub3QgKGpzX3N0cmluZ19jb21wYXJlIHJlYWR5X3N0YXRlX2NoYW5nZSBldnQjIy5fdHlwZSkpXG4gICAgICAgIHx8IGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgICAgICB0aGVuIEFzeW5jX2tlcm5lbC5JdmFyLmZpbGxfaWZfZW1wdHkgbG9hZGVkICgpO1xuICAgICAgICBKcy5fdHJ1ZVxuICAgICAgaW5cbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCByZWFkeXN0YXRlY2hhbmdlX2V2IChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC53aW5kb3cgRG9tX2h0bWwuRXZlbnQubG9hZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBBc3luY19rZXJuZWwuSXZhci5yZWFkIGxvYWRlZClcbjs7XG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgSHR0cCA9IEh0dHBcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5pbmNsdWRlIEFzeW5jX2pzMFxuXG5sZXQgbG9nX3MgPSBEZWJ1Zy5sb2dfc1xubGV0IGxvZ19zX2FzX3N0cmluZyA9IERlYnVnLmxvZ19zX2FzX3N0cmluZ1xuIiwib3BlbiEgQmFzZVxuXG4oKiBUaGUgW2RhdGFdIGFycmF5IGlzIGFuIGltcGxpY2l0IGJpbmFyeSB0cmVlIHdpdGggW2NoaWxkcmVuX2xlbmd0aCAqIDIgLSAxXSBub2RlcyxcbiAgIHdpdGggZWFjaCBub2RlIGJlaW5nIHRoZSBzdW0gb2YgdGhlIHR3byBjaGlsZCBub2RlcyBhbmQgdGhlIHJvb3Qgbm9kZSBiZWluZyB0aGUgMHRoXG4gICBub2RlLiAgVGhlIGxlYXZlcyBvZiB0aGUgdHJlZSBhcmUgdGhlIGxhc3QgW251bV9sZWF2ZXNdIG5vZGVzLlxuXG4gICBUaGUgY2hpbGRyZW4gYXJlIG5vdCBuZWNlc3NhcmlseSBhbGwgYXQgdGhlIHNhbWUgbGV2ZWwgb2YgdGhlIHRyZWUuIEZvciBpbnN0YW5jZSBpZlxuICAgeW91IGhhdmUgMyBjaGlsZHJlbiBbfCBhOyBiOyBjIHxdOlxuXG4gICB7dlxuICAgICAgICAgIG9cbiAgICAgICAgIC8gXFxcbiAgICAgICAgbyAgIGNcbiAgICAgICAvIFxcXG4gICAgICBhICAgYlxuICAgdn1cblxuICAgV2Ugd2FudCB0aGlzIHRyZWUgdG8gYmUgcmVwcmVzZW50YXRlZCBhcyBbfCBvOyBvOyBjOyBhOyBiIHxdLCBpLmUuIHdlIG5lZWQgdG8gYXBwbHlcbiAgIGZpcnN0IGEgcm90YXRpb24gdGhlbiBhIHRyYW5zbGF0aW9uIHRvIGNvbnZlcnQgYW4gaW5kZXggaW4gW3wgYTsgYjsgYyB8XSB0byBhIChsZWFmKVxuICAgaW5kZXggaW4gW3wgbzsgbzsgYzsgYTsgYiB8XS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgZGF0YSA6ICdhIE9wdGlvbl9hcnJheS50XG4gIDsgbnVtX2xlYXZlcyA6IGludFxuICA7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA6IGludFxuICA7IHJlZHVjZSA6ICdhIC0+ICdhIC0+ICdhXG4gIDsgc2V4cF9vZl9hIDogJ2EgLT4gU2V4cC50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5udW1fbGVhdmVzXG5cbigqIHt2XG4gICAgIHBhcmVudDogICAgICAwICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IC4uLlxuICAgICBsZWZ0IGNoaWxkOiAgMSAgMyAgNSAgNyAgOSAxMSAxMyAxNSAxNyAxOSAyMSAyMyAyNSAyNyAyOSAzMSAzMyAzNSAzNyAzOSAuLi5cbiAgICAgcmlnaHQgY2hpbGQ6IDIgIDQgIDYgIDggMTAgMTIgMTQgMTYgMTggMjAgMjIgMjQgMjYgMjggMzAgMzIgMzQgMzYgMzggNDAgLi4uIHZ9ICopXG5sZXQgcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleCA9IChjaGlsZF9pbmRleCAtIDEpIC8gMlxubGV0IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleCA9IChwYXJlbnRfaW5kZXggKiAyKSArIDFcbmxldCByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleCA9IGxlZnRfY2hpbGRfaW5kZXggKyAxXG5cbigqIFRoZSBmaXJzdCBbbnVtX2xlYXZlcy0xXSBlbGVtZW50cyBhcmUgaW50ZXJuYWwgbm9kZXMgb2YgdGhlIHRyZWUuICBUaGUgbmV4dFxuICAgW251bV9sZWF2ZXNdIGVsZW1lbnRzIGFyZSB0aGUgbGVhdmVzLiAqKVxubGV0IG51bV9icmFuY2hlcyB0ID0gdC5udW1fbGVhdmVzIC0gMVxubGV0IGluZGV4X2lzX2xlYWYgdCBpID0gaSA+PSBudW1fYnJhbmNoZXMgdFxuXG4oKiBUaGUgdHJlZSBpcyBjb21wbGV0ZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBwZXJmZWN0LCBzbyB3ZSBwZXJmb3JtIHNvbWUgcm90YXRpb24gb2YgdGhlXG4gICBsZWF2ZXMgdG8gZW5zdXJlIHRoYXQgb3VyIHJlZHVjdGlvbnMgcHJlc2VydmUgb3JkZXJpbmcuICopXG5sZXQgbGVhZl9pbmRleCB0IGkgPVxuICAoKiBUaGUgdHJlZSBsYXlvdXQgaXMgbGV2ZWwgb3JkZXIuICBBbnkgbGVhdmVzIGluIHRoZSBzZWNvbmQgdG8gbGFzdCBsZXZlbCBuZWVkIHRvIG9jY3VyXG4gICAgIGluIHRoZSBhcnJheSBiZWZvcmUgdGhlIGxlYXZlcyBpbiB0aGUgYm90dG9tIGxldmVsLiAqKVxuICBsZXQgcm90YXRlZF9pbmRleCA9XG4gICAgbGV0IG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA9IGkgKyB0Lm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCBpblxuICAgIGlmIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA8IHQubnVtX2xlYXZlc1xuICAgIHRoZW4gb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5XG4gICAgZWxzZSBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgLSB0Lm51bV9sZWF2ZXNcbiAgaW5cbiAgKCogVGhlIGxlYXZlcyBvY2N1ciBhZnRlciB0aGUgYnJhbmNoZXMgaW4gdGhlIGFycmF5LiAqKVxuICByb3RhdGVkX2luZGV4ICsgbnVtX2JyYW5jaGVzIHRcbjs7XG5cbmxldCBnZXRfbGVhZiB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0IHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldF9sZWFmIHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHRvX2xpc3QgdCA6IGEgb3B0aW9uIGxpc3QpXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBkYXRhIC0gMSBkb1xuICAgIG1hdGNoIE9wdGlvbl9hcnJheS5nZXQgZGF0YSBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudW1fYnJhbmNoZXMgdCAtIDEgZG9cbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGxldCBsZWZ0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIGxlZnQgaW5cbiAgICBsZXQgcmlnaHRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcmlnaHQgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSBkYXRhIGlcbiAgICB0aGVuIGFzc2VydCAobm90IChsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSkpXG4gICAgZWxzZVxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgaW5kZXhfaXNfbGVhZiB0IGxlZnQgfHwgaW5kZXhfaXNfbGVhZiB0IHJpZ2h0IHx8IGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlX2V4biA/KHNleHBfb2ZfYSA9IFslc2V4cF9vZjogX10pICgpIH5sZW46bnVtX2xlYXZlcyB+cmVkdWNlID1cbiAgaWYgbnVtX2xlYXZlcyA8IDFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIm5vbi1wb3NpdGl2ZSBudW1iZXIgb2YgbGVhdmVzIGluIGJhbGFuY2VkIHJlZHVjZXJcIiAobnVtX2xlYXZlcyA6IGludCldO1xuICBsZXQgbnVtX2JyYW5jaGVzID0gbnVtX2xlYXZlcyAtIDEgaW5cbiAgbGV0IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA9IEludC5jZWlsX3BvdzIgbnVtX2xlYXZlcyAtIG51bV9sZWF2ZXMgaW5cbiAgbGV0IGRhdGEgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KG51bV9icmFuY2hlcyArIG51bV9sZWF2ZXMpIGluXG4gIHsgZGF0YTsgbnVtX2xlYXZlczsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsOyByZWR1Y2U7IHNleHBfb2ZfYSB9XG47O1xuXG5sZXQgdmFsaWRhdGVfaW5kZXggdCBpID1cbiAgaWYgaSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gYWNjZXNzIG5lZ2F0aXZlIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIiB+aW5kZXg6KGkgOiBpbnQpXTtcbiAgbGV0IGxlbmd0aCA9IHQubnVtX2xlYXZlcyBpblxuICBpZiBpID49IGxlbmd0aFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCJcbiAgICAgICAgICB+aW5kZXg6KGkgOiBpbnQpXG4gICAgICAgICAgKGxlbmd0aCA6IGludCldXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgYSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgbGV0IGkgPSByZWYgKGxlYWZfaW5kZXggdCBpKSBpblxuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZGF0YSAhaSBhO1xuICB3aGlsZSAhaSA8PiAwIGRvXG4gICAgbGV0IHBhcmVudCA9IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXg6IWkgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHBhcmVudFxuICAgIHRoZW4gaSA6PSAwXG4gICAgZWxzZSAoXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIGRhdGEgcGFyZW50O1xuICAgICAgaSA6PSBwYXJlbnQpXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfZXhuIHQgaSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxuOztcblxubGV0IHJlYyBjb21wdXRlX2V4biB0IGkgPVxuICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSB0LmRhdGEgaVxuICB0aGVuIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZGF0YSBpXG4gIGVsc2UgKFxuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgaWYgbGVmdCA+PSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZGF0YVxuICAgIHRoZW4gKFxuICAgICAgKCogSWYgd2UgZ2V0IGhlcmUsIHRoZSBwYXJlbnQgd2FzIGFuIHVuc2V0IGxlYWYuICopXG4gICAgICBsZXQgc2V4cF9vZl9hID0gdC5zZXhwX29mX2EgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJhdHRlbXB0IHRvIGNvbXB1dGUgYmFsYW5jZWQgcmVkdWNlciB3aXRoIHVuc2V0IGVsZW1lbnRzXCJcbiAgICAgICAgICAgIH5iYWxhbmNlZF9yZWR1Y2VyOih0IDogYSB0KV0pO1xuICAgIGxldCBhID0gdC5yZWR1Y2UgKGNvbXB1dGVfZXhuIHQgbGVmdCkgKGNvbXB1dGVfZXhuIHQgcmlnaHQpIGluXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmRhdGEgaSBhO1xuICAgIGEpXG47O1xuXG5sZXQgY29tcHV0ZV9leG4gdCA9IGNvbXB1dGVfZXhuIHQgMFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGluaXQgOiAnYVxuICA7IHN0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB7IGluaXQ7IHN0ZXBzID0gXyB9ID0gaW52YXJpYW50X2EgaW5pdFxuXG5sZXQgcmVjIHZhbHVlX2ludGVybmFsIGluaXQgc3RlcHMgfmF0ID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSAoKHQsIGEpLCBzdGVwcykgLT5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IHQgdGhlbiBpbml0IGVsc2UgdmFsdWVfaW50ZXJuYWwgYSBzdGVwcyB+YXRcbjs7XG5cbmxldCB2YWx1ZSB0IH5hdCA9IHZhbHVlX2ludGVybmFsIHQuaW5pdCB0LnN0ZXBzIH5hdFxubGV0IGNvbnN0YW50IGluaXQgPSB7IGluaXQ7IHN0ZXBzID0gU2VxdWVuY2UuZW1wdHkgfVxuXG5sZXQgY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMgPVxuICBpZiBub3RcbiAgICAgICAoTGlzdC5pc19zb3J0ZWQgc3RlcHMgfmNvbXBhcmU6KGZ1biAodGltZTEsIF8pICh0aW1lMiwgXykgLT5cbiAgICAgICAgICBUaW1lX25zLmNvbXBhcmUgdGltZTEgdGltZTIpKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1N0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4bl0gZ290IHVuc29ydGVkIHRpbWVzXCJcbiAgICAgICAgICB+c3RlcHM6KHN0ZXBzIHw+IExpc3QubWFwIH5mOmZzdCA6IFRpbWVfbnMudCBsaXN0KV07XG4gIHsgaW5pdDsgc3RlcHMgPSBzdGVwcyB8PiBTZXF1ZW5jZS5vZl9saXN0IH1cbjs7XG5cbmxldCBjcmVhdGVfZnJvbV9zZXF1ZW5jZSB+aW5pdCB+c3RlcHMgPSB7IGluaXQ7IHN0ZXBzIH1cbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFdlYWsgPSBDYW1sLldlYWtcblxudHlwZSAnYSB0ID0gJ2EgSGVhcF9ibG9jay50IFdlYWsudFxuXG5sZXQgY3JlYXRlIH5sZW4gPSBXZWFrLmNyZWF0ZSBsZW5cbmxldCBsZW5ndGggdCA9IFdlYWsubGVuZ3RoIHRcbmxldCBzZXQgPSBXZWFrLnNldFxuXG5sZXQgc2V0X2V4biB0IGkgeCA9IHNldCB0IGkgKE9wdGlvbi5tYXAgeCB+ZjpIZWFwX2Jsb2NrLmNyZWF0ZV9leG4pXG5cbmxldCBnZXQgPSBXZWFrLmdldFxubGV0IGlzX3NvbWUgdCBpID0gV2Vhay5jaGVjayB0IGlcbmxldCBpc19ub25lIHQgaSA9IG5vdCAoaXNfc29tZSB0IGkpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gZ2V0IHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHBfb2Y6IGEgSGVhcF9ibG9jay50IG9wdGlvbiBhcnJheV0gKHRvX2FycmF5IHQpXG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgaSAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgV2Vhay5ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuIiwiKCogV2UgaW1wbGVtZW50IGEgd2VhayBwb2ludGVyIHVzaW5nIGEgW1dlYWtfYXJyYXkudF0uICopXG5cbm9wZW4hIENvcmVcblxudHlwZSAnYSB0ID0gJ2EgV2Vha19hcnJheS50XG5cbmxldCBjcmVhdGUgKCkgPSBXZWFrX2FycmF5LmNyZWF0ZSB+bGVuOjFcblxuKCogV2UgdXNlIGEgd2VhayBhcnJheSBvZiBsZW5ndGggMSwgc28gdGhlIHdlYWsgcG9pbnRlciBpcyBhdCBpbmRleCAwLiAqKVxubGV0IGluZGV4ID0gMFxuXG5sZXQgZ2V0IHQgPSBXZWFrX2FycmF5LmdldCB0IGluZGV4XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uKV1cblxubGV0IGlzX25vbmUgdCA9IFdlYWtfYXJyYXkuaXNfbm9uZSB0IGluZGV4XG5sZXQgaXNfc29tZSB0ID0gV2Vha19hcnJheS5pc19zb21lIHQgaW5kZXhcblxubGV0IHNldCB0IGJsb2NrID0gV2Vha19hcnJheS5zZXQgdCBpbmRleCAoU29tZSBibG9jaylcbiIsIm9wZW4hIEltcG9ydFxuXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgnYSwgJ2IgV2Vha19wb2ludGVyLnQpIEhhc2h0YmwudFxuICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgICAgICAgICAgOiAnYSBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA6IHVuaXQgLT4gdW5pdFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgaGFzaGFibGUgPVxuICAgIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+aGFzaGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKClcbiAgICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA9IGlnbm9yZVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgVXNpbmdfaGFzaGFibGUuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaHRibC5IYXNoYWJsZS5vZl9rZXkgbSlcbjs7XG5cbmxldCBzZXRfcnVuX3doZW5fdW51c2VkX2RhdGEgdCB+dGhyZWFkX3NhZmVfZiA9XG4gIHQudGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPC0gdGhyZWFkX3NhZmVfZjtcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPSBIYXNodGJsLnJlbW92ZSB0LmVudHJ5X2J5X2tleSBrZXlcblxuKCogSW4gb3JkZXIgZm9yIGEgY2FsbCB0byBbcmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhXSB0byByZWNsYWltIGEga2V5IHRoYXRcbiAgIHdhcyBwcmV2aW91c2x5IGZpbmFsaXplZCwgdGhlIHdlYWsgcG9pbnRlciBtdXN0IGhhdmUgYmVlbiBjbGVhcmVkLiAgVGhpcyByZWxpZXMgb24gdGhlXG4gICBmYWN0IHRoYXQgdGhlIE9DYW1sIGdhcmJhZ2UgY29sbGVjdG9yIGNsZWFycyB3ZWFrcyBhbmQgdGhlbiBydW5zIGZpbmFsaXplcnMuICopXG5sZXQgcmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEgPiAwIGRvXG4gICAgbGV0IGtleSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVudHJ5IC0+IGlmIFdlYWtfcG9pbnRlci5pc19ub25lIGVudHJ5IHRoZW4gcmVtb3ZlIHQga2V5XG4gIGRvbmU7XG47O1xuXG5sZXQgZ2V0X2VudHJ5IHQga2V5ID1cbiAgSGFzaHRibC5maW5kX29yX2FkZCB0LmVudHJ5X2J5X2tleSBrZXlcbiAgICB+ZGVmYXVsdDooZnVuICgpIC0+IFdlYWtfcG9pbnRlci5jcmVhdGUgKCkpO1xuOztcblxubGV0IG1lbSB0IGtleSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGVudHJ5IC0+IFdlYWtfcG9pbnRlci5pc19zb21lIGVudHJ5XG47O1xuXG5sZXQga2V5X2lzX3VzaW5nX3NwYWNlIHQga2V5ID0gSGFzaHRibC5tZW0gdC5lbnRyeV9ieV9rZXkga2V5XG5cbmxldCBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhID1cbiAgV2Vha19wb2ludGVyLnNldCBlbnRyeSBkYXRhO1xuICBHYy5FeHBlcnQuYWRkX2ZpbmFsaXplcl9sYXN0IGRhdGEgKGZ1biAoKSAtPlxuICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEga2V5O1xuICAgIHQudGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgKCkpO1xuOztcblxubGV0IHJlcGxhY2UgdCB+a2V5IH5kYXRhID0gc2V0X2RhdGEgdCBrZXkgKGdldF9lbnRyeSB0IGtleSkgZGF0YVxuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgaWYgV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbiAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIldlYWtfaGFzaHRibC5hZGRfZXhuIG9mIGtleSBpbiB1c2VcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuOztcblxubGV0IGZpbmQgdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGVudHJ5IC0+IFdlYWtfcG9pbnRlci5nZXQgZW50cnlcbjs7XG5cbmxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBtYXRjaCBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5IHdpdGhcbiAgfCBTb21lIHYgLT4gdlxuICB8IE5vbmUgLT5cbiAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuICAgIGRhdGFcbjs7XG4iLCJ0eXBlIHQgPVxuICB8IEJlZm9yZVxuICB8IEFmdGVyXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuIiwiWyUlaW1wb3J0IFwiZGVidWcubWxoXCJdXG5cbm9wZW4gQ29yZVxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbigqIEFsbCBbYXNzZXJ0XXMgYW5kIG90aGVyIGNoZWNrcyB0aHJvdWdob3V0IHRoZSBjb2RlIGFyZSBndWFyZGVkIGJ5IFtpZiBkZWJ1Z10uICBUaGVcbiAgIERFQlVHIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUgbGliIFtpbmNyZW1lbnRhbF0gYW5kIHVuc2V0IGluIHRoZSBsaWJcbiAgIFtpbmNyZW1lbnRhbF9kZWJ1Z10sIGJ1dCBhcGFydCBmcm9tIHRoYXQgdGhleSBhcmUgaWRlbnRpY2FsLiAgVGVzdHMgYXJlIHJ1biB3aXRoIGJvdGhcbiAgIHRoZSBwcm9kdWN0aW9uIGFuZCBkZWJ1ZyBsaWIsIGFuZCB1c2VycyBjYW4gY2hvb3NlIHRvIGJ1aWxkIHdpdGggdGhlIGRlYnVnIGxpYnJhcnksIGlmXG4gICB0aGV5IHN1c3BlY3QgdGhleSBmb3VuZCBhIGJ1ZyBpbiBpbmNyZW1lbnRhbC4gKilcblxuWyUlaWYgSlNDX0RFQlVHXVxuXG5sZXQgZGVidWcgPSB0cnVlXG5cblslJWVsc2VdXG5cbmxldCBkZWJ1ZyA9IGZhbHNlXG5cblslJWVuZGlmXVxuXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxubGV0IHRhZyBuYW1lIGEgc2V4cF9vZl9hID0gKG5hbWUsIGEpIHw+IFslc2V4cF9vZjogc3RyaW5nICogYV1cblxubW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBJbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGxldCBzZXhwX29mX3QgPSBUaW1lX25zLkFsdGVybmF0ZV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIEFycmF5XG5cbiAgKCogTm90IGRlZmluaW5nIGFsaWFzZXMgaW4gcHJvZHVjdGlvbiBtb2RlLCBzaW5jZSB0aGV5IGJyZWFrIHR5cGUgc3BlY2lhbGl6YXRpb24gb2ZcbiAgICAgYXJyYXkgYWNjZXNzZXMuICopXG4gIFslJWlmIEpTQ19ERUJVR11cblxuICBsZXQgdW5zYWZlX2dldCA9IGdldFxuICBsZXQgdW5zYWZlX3NldCA9IHNldFxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFJlcXVpcmVzIFtsZW4gPj0gbGVuZ3RoIHRdLiAqKVxuICBsZXQgcmVhbGxvYyB0IH5sZW4gYSA9XG4gICAgbGV0IG5ld190ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIEFycmF5LmJsaXQgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpuZXdfdCB+ZHN0X3BvczowIH5sZW46KGxlbmd0aCB0KTtcbiAgICBuZXdfdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBVb3B0ID0gc3RydWN0XG4gIGluY2x1ZGUgVW9wdFxuXG4gIGxldCB1bnNhZmVfdmFsdWUgPSBpZiBkZWJ1ZyB0aGVuIHZhbHVlX2V4biBlbHNlIHVuc2FmZV92YWx1ZVxuZW5kXG5cbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gc3RydWN0XG4gIGluY2x1ZGUgVW5pZm9ybV9hcnJheVxuXG4gIFslJWlmIEpTQ19ERUJVR11cblxuICBsZXQgdW5zYWZlX2dldCA9IGdldFxuICBsZXQgdW5zYWZlX3NldCA9IHNldF93aXRoX2NhbWxfbW9kaWZ5XG5cbiAgWyUlZWxzZV1cblxuICAoKiBVbmlmb3JtX2FycmF5IGlzIGJlaW5nIFwic21hcnRcIiBieSBjaGVja2luZyBpZiBlbGVtZW50cyBhcmUgaW50ZWdlcnMsIGJ1dCBVb3B0LnRcbiAgICAgYWxtb3N0IG5ldmVyIGNvbnRhaW4gaW50ZWdlcnMsIHNvIHRoZSBleHRyYSBjaGVjayB0byBtYWtlIGdlbmVyYXRlZCBjb2RlIGhhcmRlciB0b1xuICAgICByZWFkIGFuZCBwb3RlbnRpYWxseSBzbG93ZXIuICopXG4gIGxldCB1bnNhZmVfc2V0ID0gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5XG4gIGxldCBzZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFJlcXVpcmVzIFtsZW4gPj0gbGVuZ3RoIHRdLiAqKVxuICBsZXQgcmVhbGxvYyB0IH5sZW4gPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIFVvcHQubm9uZSBpblxuICAgIGJsaXQgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpuZXdfdCB+ZHN0X3BvczowIH5sZW46KGxlbmd0aCB0KTtcbiAgICBuZXdfdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gPSBUaW1pbmdfd2hlZWwuQWxhcm1fcHJlY2lzaW9uXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPVxuICAoKiBXZSBzcGVjaWFsaXplIHNvbWUgY3V0b2ZmcyB0byBhdm9pZCBhbiBpbmRpcmVjdCBmdW5jdGlvbiBjYWxsOyBpbiBwYXJ0aWN1bGFyIHdlXG4gICAgIHNwZWNpYWxpemUgdGhlIGRlZmF1bHQgKGFuZCBoZW5jZSBvdmVyd2hlbG1pbmdseSBjb21tb24pIGNhc2Ugb2YgcGh5c2ljYWxcbiAgICAgZXF1YWxpdHkuICopXG4gIHwgQWx3YXlzXG4gIHwgTmV2ZXJcbiAgfCBQaHlzX2VxdWFsXG4gIHwgQ29tcGFyZSBvZiAoJ2EgLT4gJ2EgLT4gaW50KVxuICB8IEVxdWFsIG9mICgnYSAtPiAnYSAtPiBib29sKVxuICB8IEYgb2YgKG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gYm9vbClcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEFsd2F5cyB8IE5ldmVyIHwgUGh5c19lcXVhbCB8IENvbXBhcmUgXyB8IEVxdWFsIF8gfCBGIF8gLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIGYgPSBGIGZcbmxldCBvZl9jb21wYXJlIGYgPSBDb21wYXJlIGZcbmxldCBvZl9lcXVhbCBmID0gRXF1YWwgZlxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBhbHdheXMgPSBBbHdheXNcbmxldCBwb2x5X2VxdWFsID0gRXF1YWwgUG9seS5lcXVhbFxuXG5sZXQgc2hvdWxkX2N1dG9mZiB0IH5vbGRfdmFsdWUgfm5ld192YWx1ZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBoeXNfZXF1YWwgLT4gcGh5c19lcXVhbCBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgTmV2ZXIgLT4gZmFsc2VcbiAgfCBBbHdheXMgLT4gdHJ1ZVxuICB8IENvbXBhcmUgZiAtPiBmIG9sZF92YWx1ZSBuZXdfdmFsdWUgPSAwXG4gIHwgRXF1YWwgZiAtPiBmIG9sZF92YWx1ZSBuZXdfdmFsdWVcbiAgfCBGIGYgLT4gZiB+b2xkX3ZhbHVlIH5uZXdfdmFsdWVcbjs7XG5cbmxldCBlcXVhbCB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgQWx3YXlzLCBBbHdheXMgLT4gdHJ1ZVxuICB8IEFsd2F5cywgXyAtPiBmYWxzZVxuICB8IE5ldmVyLCBOZXZlciAtPiB0cnVlXG4gIHwgTmV2ZXIsIF8gLT4gZmFsc2VcbiAgfCBQaHlzX2VxdWFsLCBQaHlzX2VxdWFsIC0+IHRydWVcbiAgfCBQaHlzX2VxdWFsLCBfIC0+IGZhbHNlXG4gIHwgQ29tcGFyZSBmMSwgQ29tcGFyZSBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgQ29tcGFyZSBfLCBfIC0+IGZhbHNlXG4gIHwgRXF1YWwgZjEsIEVxdWFsIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBFcXVhbCBfLCBfIC0+IGZhbHNlXG4gIHwgRiBmMSwgRiBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRiBfLCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcGh5c19lcXVhbCA9IFBoeXNfZXF1YWxcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdHJpbmdfbGlzdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLm1ha2UgfnNleHBfb2ZfdCB+Y29tcGFyZSlcbmVuZFxuXG50eXBlIGRvdCA9XG4gIHsgbGFiZWwgOiBTZXQuTShTdHJpbmdfbGlzdCkudFxuICA7IGF0dHJpYnV0ZXMgOiBzdHJpbmcgU3RyaW5nLk1hcC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgdCA9XG4gIHwgRG90IG9mIGRvdFxuICB8IEluZm8gb2YgSW5mby50XG4gIHwgQXBwZW5kIG9mXG4gICAgICB7IHByaW9yIDogdFxuICAgICAgOyBuZXdfIDogdFxuICAgICAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluZm8gaW5mbyA9IEluZm8gaW5mb1xubGV0IGFwcGVuZCBwcmlvciBuZXdfID0gQXBwZW5kIHsgcHJpb3I7IG5ld18gfVxuXG5sZXQgZG90IH5sYWJlbCB+YXR0cmlidXRlcyA9XG4gIGxldCBsYWJlbCA9IFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmdfbGlzdCkgbGFiZWwgaW5cbiAgRG90IHsgbGFiZWw7IGF0dHJpYnV0ZXMgfVxuOztcblxubGV0IHJlYyB0b19kb3QgPSBmdW5jdGlvblxuICB8IEluZm8gaSAtPlxuICAgIHsgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIFsgSW5mby50b19zdHJpbmdfaHVtIGkgXVxuICAgIDsgYXR0cmlidXRlcyA9IFN0cmluZy5NYXAuZW1wdHlcbiAgICB9XG4gIHwgRG90IGRvdCAtPiBkb3RcbiAgfCBBcHBlbmQgeyBwcmlvcjsgbmV3XyB9IC0+XG4gICAgbGV0IHByaW9yID0gdG9fZG90IHByaW9yIGluXG4gICAgbGV0IG5ld18gPSB0b19kb3QgbmV3XyBpblxuICAgIGxldCBsYWJlbCA9IFNldC51bmlvbiBwcmlvci5sYWJlbCBuZXdfLmxhYmVsIGluXG4gICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgTWFwLm1lcmdlX3NrZXdlZFxuICAgICAgICBwcmlvci5hdHRyaWJ1dGVzXG4gICAgICAgIG5ld18uYXR0cmlidXRlc1xuICAgICAgICB+Y29tYmluZTooZnVuIH5rZXk6XyBfbGVmdCByaWdodCAtPiByaWdodClcbiAgICBpblxuICAgIHsgbGFiZWw7IGF0dHJpYnV0ZXMgfVxuOztcblxubGV0IGVzY2FwZV9kb3Rfc3RyaW5nIHMgPVxuICAoKiBodHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9sYW5nLmh0bWwgKilcbiAgXCJcXFwiXCIgXiBTdHJpbmcuc3Vic3RyX3JlcGxhY2VfYWxsIHMgfnBhdHRlcm46XCJcXFwiXCIgfndpdGhfOlwiXFxcXFxcXCJcIiBeIFwiXFxcIlwiXG47O1xuXG5sZXQgZXNjYXBlX3JlY29yZF9sYWJlbCBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vc2hhcGVzLmh0bWwgKilcbiAgU3RyaW5nLmNvbmNhdF9tYXAgcyB+ZjooZnVuY3Rpb25cbiAgICB8ICgnPCcgfCAnPicgfCAneycgfCAnfScgfCAnfCcgfCAnXFxcXCcgfCAnICcpIGFzIGMgLT4gXCJcXFxcXCIgXiBTdHJpbmcub2ZfY2hhciBjXG4gICAgfCBjIC0+IFN0cmluZy5vZl9jaGFyIGMpXG47O1xuXG5sZXQgdG9fc3RyaW5nIH5uYW1lIHsgbGFiZWw7IGF0dHJpYnV0ZXMgfSA9XG4gIGxldCBsYWJlbCA9XG4gICAgbGFiZWxcbiAgICB8PiBTZXQudG9fbGlzdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gY29scyAtPlxuICAgICAgXCJ7XCIgXiBTdHJpbmcuY29uY2F0IChMaXN0Lm1hcCBjb2xzIH5mOmVzY2FwZV9yZWNvcmRfbGFiZWwpIH5zZXA6XCJ8XCIgXiBcIn1cIilcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJ8XCJcbiAgICB8PiBmdW4gcyAtPiBcIntcIiBeIHMgXiBcIn1cIlxuICBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgYXR0cmlidXRlc1xuICAgIHw+IE1hcC50b19hbGlzdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGssIHYpIC0+XG4gICAgICBzcHJpbnRmIHt8ICVzPSVzfH0gKGVzY2FwZV9kb3Rfc3RyaW5nIGspIChlc2NhcGVfZG90X3N0cmluZyB2KSlcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbiAgaW5cbiAgc3ByaW50ZiB7fCAgJXMgW3NoYXBlPU1yZWNvcmQgbGFiZWw9JXMgJXNdfH0gbmFtZSAoZXNjYXBlX2RvdF9zdHJpbmcgbGFiZWwpIGF0dHJpYnV0ZXNcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IDEpXG5cbmxldCBuZXh0ID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IC0xKVxubGV0IG5vbmUgPSAtMVxubGV0IGlzX25vbmUgdCA9IHQgPSBub25lXG5sZXQgaXNfc29tZSB0ID0gdCA+PSAwXG5sZXQgYWRkMSB0ID0gdCArIDFcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgUHJldmlvdXNfdXBkYXRlX2tpbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5ldmVyX2JlZW5fdXBkYXRlZFxuICAgIHwgTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkXG4gICAgfCBJbnZhbGlkYXRlZFxuICAgIHwgVW5uZWNlc3NhcnlcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE5lY2Vzc2FyeSBvZiAnYVxuICAgIHwgQ2hhbmdlZCBvZiAnYSAqICdhXG4gICAgfCBJbnZhbGlkYXRlZFxuICAgIHwgVW5uZWNlc3NhcnlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGYgOiAnYSBOb2RlX3VwZGF0ZS50IC0+IHVuaXRcbiAgOyBtdXRhYmxlIHByZXZpb3VzX3VwZGF0ZV9raW5kIDogUHJldmlvdXNfdXBkYXRlX2tpbmQudFxuICA7IGNyZWF0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZiB+YXQ6Y3JlYXRlZF9hdCA9IHsgZjsgcHJldmlvdXNfdXBkYXRlX2tpbmQgPSBOZXZlcl9iZWVuX3VwZGF0ZWQ7IGNyZWF0ZWRfYXQgfVxuXG5sZXQgcmVhbGx5X3J1biB0IChub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCkgPVxuICB0LnByZXZpb3VzX3VwZGF0ZV9raW5kXG4gIDwtIChtYXRjaCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgfCBOZWNlc3NhcnkgXyAtPiBOZWNlc3NhcnlcbiAgICB8IENoYW5nZWQgXyAtPiBDaGFuZ2VkXG4gICAgfCBJbnZhbGlkYXRlZCAtPiBJbnZhbGlkYXRlZFxuICAgIHwgVW5uZWNlc3NhcnkgLT4gVW5uZWNlc3NhcnkpO1xuICB0LmYgbm9kZV91cGRhdGVcbjs7XG5cbmxldCBydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpIH5ub3cgPVxuICAoKiBXZSBvbmx5IHJ1biB0aGUgaGFuZGxlciBpZiB3YXMgY3JlYXRlZCBpbiBhbiBlYXJsaWVyIHN0YWJpbGl6YXRpb24gY3ljbGUuICBJZiB0aGVcbiAgICAgaGFuZGxlciB3YXMgY3JlYXRlZCBieSBhbm90aGVyIG9uLXVwZGF0ZSBoYW5kbGVyIGR1cmluZyB0aGUgcnVubmluZyBvZiBvbi11cGRhdGVcbiAgICAgaGFuZGxlcnMgaW4gdGhlIGN1cnJlbnQgc3RhYmlsaXphdGlvbiwgd2UgdHJlYXQgdGhlIGFkZGVkIGhhbmRsZXIgYXMgaWYgaXQgd2VyZSBhZGRlZFxuICAgICBhZnRlciB0aGlzIHN0YWJpbGl6YXRpb24gZmluaXNoZWQuICBXZSB3aWxsIHJ1biBpdCBhdCB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLCBiZWNhdXNlXG4gICAgIHRoZSBub2RlIHdpdGggdGhlIGhhbmRsZXIgd2FzIHB1c2hlZCBvbiBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAqKVxuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHQuY3JlYXRlZF9hdCBub3cgPCAwXG4gIHRoZW4gKFxuICAgIG1hdGNoIHQucHJldmlvdXNfdXBkYXRlX2tpbmQsIG5vZGVfdXBkYXRlIHdpdGhcbiAgICAoKiBPbmNlIGEgbm9kZSBpcyBpbnZhbGlkYXRlZCwgdGhlcmUgd2lsbCBuZXZlciBiZSBmdXJ0aGVyIGluZm9ybWF0aW9uIHRvIHByb3ZpZGUsXG4gICAgICAgc2luY2UgaW5jcmVtZW50YWwgZG9lcyBub3QgYWxsb3cgYW4gaW52YWxpZCBub2RlIHRvIGJlY29tZSB2YWxpZC4gKilcbiAgICB8IEludmFsaWRhdGVkLCBfIC0+ICgpXG4gICAgKCogVGhlc2UgY2FzZXMgY2FuIGhhcHBlbiBpZiBhIG5vZGUgaXMgaGFuZGxlZCBhZnRlciBzdGFiaWxpemF0aW9uIGR1ZSB0byBhbm90aGVyXG4gICAgICAgaGFuZGxlci4gIEJ1dCBmb3IgdGhlIGN1cnJlbnQgaGFuZGxlciwgdGhlcmUgaXMgbm90aGluZyB0byBkbyBiZWNhdXNlIHRoZXJlIGlzIG5vXG4gICAgICAgbmV3IGluZm9ybWF0aW9uIHRvIHByb3ZpZGUuICopXG4gICAgfCBDaGFuZ2VkLCBOZWNlc3NhcnkgXyB8IE5lY2Vzc2FyeSwgTmVjZXNzYXJ5IF8gfCBVbm5lY2Vzc2FyeSwgVW5uZWNlc3NhcnkgLT4gKClcbiAgICAoKiBJZiB0aGlzIGhhbmRsZXIgaGFzbid0IHNlZW4gYSBub2RlIHRoYXQgaXMgY2hhbmdpbmcsIHdlIHRyZWF0IHRoZSB1cGRhdGUgYXMgYW5cbiAgICAgICBpbml0aWFsaXphdGlvbi4gKilcbiAgICB8IChOZXZlcl9iZWVuX3VwZGF0ZWQgfCBVbm5lY2Vzc2FyeSksIENoYW5nZWQgKF8sIGEpIC0+IHJlYWxseV9ydW4gdCAoTmVjZXNzYXJ5IGEpXG4gICAgKCogQWxsIG90aGVyIHVwZGF0ZXMgYXJlIHJ1biBhcyBpcy4gKilcbiAgICB8IE5ldmVyX2JlZW5fdXBkYXRlZCwgKE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZClcbiAgICB8IFVubmVjZXNzYXJ5LCAoTmVjZXNzYXJ5IF8gfCBJbnZhbGlkYXRlZClcbiAgICB8IE5lY2Vzc2FyeSwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBDaGFuZ2VkLCAoQ2hhbmdlZCBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZCkgLT4gcmVhbGx5X3J1biB0IG5vZGVfdXBkYXRlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgZXhuIDogZXhuXG4gIDsgYmFja3RyYWNlIDogQmFja3RyYWNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSBleG4gPSB7IGV4bjsgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSB9XG4iLCIoKiBUaGlzIG1vZHVsZSBoYXMgYSBnaWFudCBbbW9kdWxlIHJlY10gZGVmaW5pbmcgYWxsIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgdXNlZFxuICAgaW4gdGhlIGltcGxlbWVudGF0aW9uLiAgVGhlIGRlZmluaXRpb24gb2YgZWFjaCB0eXBlIGlzIHRoZW4gcmVwZWF0ZWQgaW4gaXRzIGZpbGU7XG4gICBjb21tZW50cyBiZWxvbmcgdGhlcmUsIG5vdCBoZXJlLlxuXG4gICBXZSBwdXQganVzdCBlbm91Z2ggc2V4cCBjb252ZXJ0ZXJzIGhlcmUgdG8gZGlzcGxheSBub2RlIGlkcy4gIFRoZSBkZXRhaWxlZCBzZXhwXG4gICBjb252ZXJ0ZXJzIGFyZSBnZW5lcmF0ZWQgdmlhIFt3aXRoIHNleHBdIGluIHRoZSBpbmRpdmlkdWFsIGZpbGVzLiAgRGVmaW5pbmcgdGhlIHNleHBcbiAgIGNvbnZlcnRlcnMgb3V0c2lkZSBvZiB0aGUgW21vZHVsZSByZWNdIG1ha2VzIGl0IGltcG9zc2libGUgdG8gYWNjaWRlbnRhbGx5IGludHJvZHVjZSBhXG4gICBzZXhwIGNvbnZlcnRlciB0aGF0IHdvdWxkIHRyeSB0byBwcm9kdWNlIGFuIGluZmluaXRlIHNleHAuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSByZWMgQWRqdXN0X2hlaWdodHNfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBBZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmFuZCBBbGFybSA6IHNpZ1xuICB0eXBlIHQgPSBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC5BbGFybS50XG5lbmQgPVxuICBBbGFybVxuXG5hbmQgQWxhcm1fdmFsdWUgOiBzaWdcbiAgbW9kdWxlIEFjdGlvbiA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIEF0LnRcbiAgICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IHQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQWxhcm1fdmFsdWVcblxuYW5kIEFycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgfVxuZW5kID1cbiAgQXJyYXlfZm9sZFxuXG5hbmQgQXQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRcblxuYW5kIEF0X2ludGVydmFscyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IHVuaXQgTm9kZS50XG4gICAgOyBiYXNlIDogVGltZV9ucy50XG4gICAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRfaW50ZXJ2YWxzXG5cbmFuZCBCaW5kIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBtYWluIDogJ2IgTm9kZS50XG4gICAgOyBtdXRhYmxlIGYgOiAnYSAtPiAnYiBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdiIE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEJpbmRcblxuYW5kIENsb2NrIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIENsb2NrXG5cbmFuZCBFeHBlcnQgOiBzaWdcbiAgdHlwZSAnYSBlZGdlID1cbiAgICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICAgIH1cblxuICB0eXBlIHBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2UgW0BAdW5ib3hlZF1cblxuICB0eXBlICdhIHQgPVxuICAgIHsgZiA6IHVuaXQgLT4gJ2FcbiAgICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBudW1fY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIEV4cGVydFxuXG5hbmQgRnJlZXplIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgICB9XG5lbmQgPVxuICBGcmVlemVcblxuYW5kIElmX3RoZW5fZWxzZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgdGVzdCA6IGJvb2wgTm9kZS50XG4gICAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIDsgdGhlbl8gOiAnYSBOb2RlLnRcbiAgICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gICAgfVxuZW5kID1cbiAgSWZfdGhlbl9lbHNlXG5cbmFuZCBJbnRlcm5hbF9vYnNlcnZlciA6IHNpZ1xuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDcmVhdGVkXG4gICAgICB8IEluX3VzZVxuICAgICAgfCBEaXNhbGxvd2VkXG4gICAgICB8IFVubGlua2VkXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICAgIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gaW50ZXJuYWxfb2JzZXJ2ZXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIEludGVybmFsX29ic2VydmVyXG5cbmFuZCBKb2luIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnQgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEpvaW5cblxuYW5kIEtpbmQgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFycmF5X2ZvbGQgOiAoXywgJ2EpIEFycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICAgIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgOiAoXywgXykgQmluZC50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICAgIHwgQ29uc3Qgb2YgJ2FcbiAgICB8IEV4cGVydCBvZiAnYSBFeHBlcnQudFxuICAgIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gICAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gICAgfCBJZl90aGVuX2Vsc2Ugb2YgJ2EgSWZfdGhlbl9lbHNlLnRcbiAgICB8IEludmFsaWRcbiAgICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICAgIHwgSm9pbl9tYWluIG9mICdhIEpvaW4udFxuICAgIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gb2YgJ2EgU3RlcF9mdW5jdGlvbl9ub2RlLnRcbiAgICB8IFVuaW5pdGlhbGl6ZWRcbiAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IFZhciBvZiAnYSBWYXIudFxuICAgIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDQgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDYgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDcgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDkgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEwIDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTEgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMiA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTMgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTQgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYTE1XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuZW5kID1cbiAgS2luZFxuXG5hbmQgTm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBOb2RlX2lkLnRcbiAgICA7IHN0YXRlIDogU3RhdGUudFxuICAgIDsgbXV0YWJsZSByZWNvbXB1dGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICAgIDsgbXV0YWJsZSBjdXRvZmYgOiAnYSBDdXRvZmYudFxuICAgIDsgbXV0YWJsZSBjaGFuZ2VkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gICAgO1xuICAgICAgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgcGFyZW50MCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGNyZWF0ZWRfaW4gOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgb2JzZXJ2ZXJzIDogJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0XG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdIFtAQHVuYm94ZWRdXG4gIGVuZFxuXG4gIHZhbCBpc192YWxpZCA6IF8gdCAtPiBib29sXG4gIHZhbCBpc19uZWNlc3NhcnkgOiBfIHQgLT4gYm9vbFxuICB2YWwgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50IG9wdGlvblxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE5vZGUgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcbiAgICBlbmRcbiAgICB3aXRoIG1vZHVsZSBQYWNrZWQgOj0gTm9kZS5QYWNrZWQpXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBjb25jYXQgWyBcIm5cIjsgTm9kZV9pZC50b19zdHJpbmcgdC5pZCBdIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgICBsZXQgc2V4cF9vZl90IChUIHQpID0gdCB8PiBbJXNleHBfb2Y6IF8gbm9kZV1cbiAgZW5kXG5cbiAgbGV0IGlzX3ZhbGlkIHQgPVxuICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgOztcblxuICAoKiBbaXNfbmVjZXNzYXJ5XSBpcyBkZWZpbmVkIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIGl0IGJlZm9yZSBub2RlLm1sIGlzIGF2YWlsYWJsZS4gIEl0IGlzXG4gICAgIHVzZWQgZHVyaW5nIGdyYXBoIG1hbmlwdWxhdGlvbiwgYW5kIHNvIGlzIHdyaXR0ZW4gd2l0aCBzb21lIGNhcmUgdG8gYmUgZmFzdC4gKilcbiAgbGV0IGlzX25lY2Vzc2FyeSB0ID1cbiAgICB0Lm51bV9wYXJlbnRzID4gMFxuICAgIHx8IFVvcHQuaXNfc29tZSB0Lm9ic2VydmVyc1xuICAgIHx8IChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgfCBGcmVlemUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfHwgdC5mb3JjZV9uZWNlc3NhcnlcbiAgOztcblxuICBsZXQgdF9pc19pbmplY3RpdmUgKHR5cGUgYSBiKSAoVCA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSA6IChhLCBiKSBUeXBlX2VxdWFsLnQgPSBUXG5cbiAgbGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lICh0eXBlIGEgYikgKHQxIDogYSB0KSAodDIgOiBiIHQpID1cbiAgICAoKiBUaGlzIGlzIHR5cGUtc2FmZSBhc3N1bWluZyBubyBvbmUgY2FuIGdpdmUgdGhlIHNhbWUgaW5jcmVtZW50YWwgbm9kZSB0d28gZGlmZmVyZW50XG4gICAgICAgdHlwZXMuICBUaGlzIGlzIHRydWUgYmVjYXVzZSB0aGUgZmllbGQgW211dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIG9wdGlvbl0gcHJldmVudHNcbiAgICAgICBib3RoIHN1YnR5cGluZyBhbmQgcGFyYW1ldGVyaWMgcG9seW1vcnBoaXNtLiAgQnV0IHRoaXMgYWxsb3dzIHRvIGJyZWFrXG4gICAgICAgYWJzdHJhY3Rpb25zLCBhcyBpbiBzb21lb25lIGNvdWxkIHdyaXRlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdFxuICAgICAgICAgdHlwZSB1ICgqID0gdCB1bmRlcm5lYXRoICopXG4gICAgICAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0IEluY3IudCAqIHUgSW5jci50ICgqIHRoZSB0d28gaW5jcmVtZW50YWxzIGFyZSBwaHlzX2VxdWFsICopXG4gICAgICAgXX1cblxuICAgICAgIGFuZCB3ZSB3b3VsZCBmaWd1cmUgb3V0IHRoYXQgdHlwZSB0ID0gdS4gIEhvd2V2ZXIsIHdlIGNvdWxkIGFkZCBhIFR5cGVfZXF1YWwuSWQgdG9cbiAgICAgICBub2RlcyBhbmQgZG8gdGhlIHNhbWUsIHNvIGl0IHNlZW1zIHRvIGJlIGEgbW9yZSBnZW5lcmFsIGlzc3VlLiAqKVxuICAgIGlmIHBoeXNfc2FtZSB0MSB0MlxuICAgIHRoZW4gU29tZSAodF9pc19pbmplY3RpdmUgKE9iai5tYWdpYyAoVCA6IF8gVHlwZV9lcXVhbC50KSA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSlcbiAgICBlbHNlIE5vbmVcbiAgOztcbmVuZFxuXG5hbmQgT2JzZXJ2ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWZcbmVuZCA9XG4gIE9ic2VydmVyXG5cbmFuZCBPbmx5X2luX2RlYnVnIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG5lbmQgPVxuICBPbmx5X2luX2RlYnVnXG5cbmFuZCBQYWNrZWRfd2Vha19oYXNodGJsIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuZW5kID1cbiAgUGFja2VkX3dlYWtfaGFzaHRibFxuXG5hbmQgUmVjb21wdXRlX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBSZWNvbXB1dGVfaGVhcFxuXG5hbmQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IHNpZ1xuICB0eXBlIHQgPSBUIDogJ2EgTm9kZS50ICogJ2EgT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGUudCAtPiB0XG5lbmQgPVxuICBSdW5fb25fdXBkYXRlX2hhbmRsZXJzXG5cbmFuZCBTY29wZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgPSBmdW5jdGlvblxuICAgIHwgVG9wIC0+IFwiVG9wXCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgfCBCaW5kIGJpbmQgLT4gYmluZC5tYWluIHw+IFslc2V4cF9vZjogXyBOb2RlLnRdXG4gIDs7XG5lbmRcblxuYW5kIFNuYXBzaG90IDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgYmVmb3JlIDogJ2FcbiAgICA7IHZhbHVlX2F0IDogJ2EgTm9kZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTbmFwc2hvdFxuXG5hbmQgU3RhdGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gICAgOyBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICAgIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICAgIDsgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICAgIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgU3RhdHVzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBTdGFiaWxpemluZ1xuICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB8IE5vdF9zdGFiaWxpemluZ1xuICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuZW5kID1cbiAgU3RhdHVzXG5cbmFuZCBTdGVwX2Z1bmN0aW9uX25vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgY2hpbGQgOiAnYSBTdGVwX2Z1bmN0aW9uLnQgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSB1cGNvbWluZ19zdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiBBbGFybV92YWx1ZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTdGVwX2Z1bmN0aW9uX25vZGVcblxuYW5kIFVub3JkZXJlZF9hcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICAgIDsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gICAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBVbm9yZGVyZWRfYXJyYXlfZm9sZFxuXG5hbmQgVmFyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdmFyIDo9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBWYXJcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuVmFyLnQgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7ICgqIFt2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIGlzIG9ubHkgc2V0IHRvIFtVb3B0LnNvbWVdIGlmIHRoZSB1c2VyIGNhbGxzXG4gICAgICAgW1Zhci5zZXRdIGR1cmluZyBzdGFiaWxpemF0aW9uLCBpbiB3aGljaCBjYXNlIGl0IGhvbGRzIHRoZSAobGFzdCkgdmFsdWUgc2V0LiAgQXRcbiAgICAgICB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIGFsbCBzdWNoIHZhcmlhYmxlcyBhcmUgcHJvY2Vzc2VkIHRvIGRvIFt0LnZhbHVlIDwtXG4gICAgICAgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gIDsgKCogW3NldF9hdF0gdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdCByZWNlbnQgdGltZSBbdC52YWx1ZV0gY2hhbmdlZC5cbiAgICAgICBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHRpbWUgW1Zhci5zZXQgdF0gd2FzIGNhbGxlZCwgZHVlIHRvIHRoZSBlZmZlY3Qgb2YgW1Zhci5zZXRdIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24gYmVpbmcgZGVsYXllZCB1bnRpbCBhZnRlciB0aGUgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH52YWx1ZTooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICB+dmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnNldF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfndhdGNoOlxuICAgICAgICAoY2hlY2sgKGZ1biAod2F0Y2ggOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggd2F0Y2gua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBwb3NzaWJsZSB3aXRoIFt+dXNlX2N1cnJlbnRfc2NvcGU6dHJ1ZV0gKilcbiAgICAgICAgICAgfCBWYXIgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKSlcbjs7XG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0LndhdGNoLnN0YXRlXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB2YXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgdCA9IFR5cGVzLlZhci5QYWNrZWQudCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGxhdGVzdF92YWx1ZSB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgZWxzZSB0LnZhbHVlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxubW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRl9pbnZlcnNlIG9mICgnYiAtPiAnYSAtPiAnYilcbiAgICB8IFVwZGF0ZSBvZiAoJ2IgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYilcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdXBkYXRlIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVXBkYXRlIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICB8IEZfaW52ZXJzZSBmX2ludmVyc2UgLT5cbiAgICAgIGZ1biBmb2xkX3ZhbHVlIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPiBmIChmX2ludmVyc2UgZm9sZF92YWx1ZSBvbGRfdmFsdWUpIG5ld192YWx1ZVxuICA7O1xuZW5kXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5Vbm9yZGVyZWRfYXJyYXlfZm9sZC50ID1cbiAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgOyBpbml0IDogJ2FjY1xuICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+aW5pdDooY2hlY2sgaW52YXJpYW50X2FjYylcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfnVwZGF0ZTppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdDtcbiAgICAgICAgICAgICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlXG4gICAgICAgICAgICAgICAgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIGNoaWxkLnZhbHVlX29wdCkpKSlcbiAgICAgIH5mb2xkX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biBmb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hY2MgZm9sZF92YWx1ZTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoVW9wdC5pc19zb21lIGZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICh0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+bnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGU6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPD0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczpcbiAgICAgICAgKGNoZWNrIChmdW4gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtPlxuICAgICAgICAgICBhc3NlcnQgKGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPiAwKSkpKVxuOztcblxubGV0IGNyZWF0ZSB+aW5pdCB+ZiB+dXBkYXRlIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIH5jaGlsZHJlbiB+bWFpbiA9XG4gIHsgaW5pdFxuICA7IGZcbiAgOyB1cGRhdGUgPSBVcGRhdGUudXBkYXRlIHVwZGF0ZSB+ZlxuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOyBjaGlsZHJlblxuICA7IG1haW5cbiAgOyBmb2xkX3ZhbHVlID1cbiAgICAgIFVvcHQubm9uZVxuICAoKiBXZSBtYWtlIFtudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNdXG4gICAgIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBhIGZ1bGwgY29tcHV0YXRpb24gdGhlIG5leHQgdGltZSB0aGUgbm9kZSBpcyBjb21wdXRlZC4gKilcbiAgOyBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgfVxuOztcblxubGV0IGZ1bGxfY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuOyBfIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBjb21wdXRlIHQgPVxuICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIHRoZW4gKFxuICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gMDtcbiAgICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5zb21lIChmdWxsX2NvbXB1dGUgdCkpO1xuICBVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWVcbjs7XG5cbmxldCBmb3JjZV9mdWxsX2NvbXB1dGUgdCA9XG4gIHQuZm9sZF92YWx1ZSA8LSBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgY2hpbGRfY2hhbmdlZFxuICAgICAgKHR5cGUgYSBiKVxuICAgICAgKHQgOiAoYSwgXykgdClcbiAgICAgIH4oY2hpbGQgOiBiIE5vZGUudClcbiAgICAgIH5jaGlsZF9pbmRleFxuICAgICAgfihvbGRfdmFsdWVfb3B0IDogYiBVb3B0LnQpXG4gICAgICB+KG5ld192YWx1ZSA6IGIpXG4gID1cbiAgbGV0IGNoaWxkX2F0X2luZGV4ID0gdC5jaGlsZHJlbi4oY2hpbGRfaW5kZXgpIGluXG4gIG1hdGNoIE5vZGUudHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgY2hpbGQgY2hpbGRfYXRfaW5kZXggd2l0aFxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZF0gbWlzbWF0Y2hcIlxuICAgICAgICAgIH51bm9yZGVyZWRfYXJyYXlfZm9sZDoodCA6IChfLCBfKSB0KVxuICAgICAgICAgIChjaGlsZF9pbmRleCA6IGludClcbiAgICAgICAgICAoY2hpbGQgOiBfIE5vZGUudCldXG4gIHwgU29tZSBUIC0+XG4gICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtIDFcbiAgICB0aGVuIChcbiAgICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSArIDE7XG4gICAgICAoKiBXZSBvbmx5IHJlYWNoIHRoaXMgY2FzZSBpZiB3ZSBoYXZlIGFscmVhZHkgZG9uZSBhIGZ1bGwgY29tcHV0ZSwgaW4gd2hpY2ggY2FzZVxuICAgICAgICAgW1VvcHQuaXNfc29tZSB0LmZvbGRfdmFsdWVdIGFuZCBbVW9wdC5pc19zb21lIG9sZF92YWx1ZV9vcHRdLiAqKVxuICAgICAgdC5mb2xkX3ZhbHVlXG4gICAgICA8LSBVb3B0LnNvbWVcbiAgICAgICAgICAgKHQudXBkYXRlXG4gICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudmFsdWVfZXhuIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgICAgIH5uZXdfdmFsdWUpKVxuICAgIGVsc2UgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgIHRoZW4gZm9yY2VfZnVsbF9jb21wdXRlIHRcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxuXG50eXBlIHQgPSAoVHlwZXMuQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVsbCA9IEFsYXJtLm51bGwgKClcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBBbGFybV92YWx1ZSA9IFR5cGVzLkFsYXJtX3ZhbHVlXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU3RlcF9mdW5jdGlvbl9ub2RlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiAoQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKVxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgcGh5c19zYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gW3VwY29taW5nX3N0ZXBzXSBiZWNvbWVzIGVtcHR5LiAqKVxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQ6aWdub3JlXG4gICAgICB+dmFsdWU6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dXBjb21pbmdfc3RlcHM6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5hbGFybV92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQyIC0+IGFzc2VydCAocGh5c19zYW1lIHQgdDIpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG5cbmxldCByZWMgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTEgc3RlcHMgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBTb21lICgoc3RlcF9hdCwgYTIpLCBzdGVwczIpIHdoZW4gVGltZV9ucy4oID49ICkgdG9fIHN0ZXBfYXQgLT5cbiAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMiBzdGVwczJcbiAgfCBfIC0+XG4gICAgdC52YWx1ZSA8LSBVb3B0LnNvbWUgYTE7XG4gICAgdC51cGNvbWluZ19zdGVwcyA8LSBzdGVwc1xuOztcblxubGV0IGFkdmFuY2UgdCB+dG9fID0gYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gKFVvcHQudmFsdWVfZXhuIHQudmFsdWUpIHQudXBjb21pbmdfc3RlcHNcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLkFycmF5X2ZvbGQudCA9XG4gIHsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdCkpKSlcbjs7XG5cbmxldCBjb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdC50ID1cbiAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBBZnRlciAtPiAoKSAoKiBoYXBwZW5zIG9uY2UgdGhlIGN1cnJlbnQgdGltZSBwYXNzZXMgW3QuYXRdLiAqKVxuICAgICAgICAgICB8IEF0IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXRfaW50ZXJ2YWxzLnQgPVxuICB7IG1haW4gOiB1bml0IE5vZGUudFxuICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBBdF9pbnRlcnZhbHMgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmJhc2U6aWdub3JlXG4gICAgICB+aW50ZXJ2YWw6KGNoZWNrIChmdW4gaW50ZXJ2YWwgLT4gYXNzZXJ0IChUaW1lX25zLlNwYW4uaXNfcG9zaXRpdmUgaW50ZXJ2YWwpKSlcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQmluZCA9IFR5cGVzLkJpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxubW9kdWxlIFNjb3BlID0gVHlwZXMuU2NvcGVcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmluZC50ID1cbiAgeyBtYWluIDogJ2IgTm9kZS50XG4gIDsgKCogW2ZdIGlzIHRoZSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRoYXQgd2UgcnVuIGVhY2ggdGltZSBbdC5saHNdIGNoYW5nZXMuICBJdCBpc1xuICAgICAgIG11dGFibGUgb25seSBzbyB3ZSBjYW4gY2xlYXIgaXQgd2hlbiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgKCogW3Joc10gaXMgaW5pdGlhbGx5IFtub25lXSwgYW5kIGFmdGVyIHRoYXQgaXMgW3NvbWVdIG9mIHRoZSByZXN1bHQgb2YgdGhlIG1vc3QgcmVjZW50XG4gICAgICAgY2FsbCB0byBbZl0uICopXG4gICAgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gIDsgKCogW3Joc19zY29wZV0gaXMgdGhlIHNjb3BlIGluIHdoaWNoIFt0LmZdIGlzIHJ1biwgaS5lLiBpdCBpcyBbU2NvcGUuQmluZCB0XS4gIEl0IGlzXG4gICAgICAgW211dGFibGVdIG9ubHkgdG8gYXZvaWQgYSBbbGV0IHJlY10gZHVyaW5nIGNyZWF0aW9uLiAqKVxuICAgIG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICA7ICgqIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIGlzIHRoZSBoZWFkIG9mIHRoZSBzaW5nbHktbGlua2VkIGxpc3Qgb2Ygbm9kZXMgY3JlYXRlZCBvblxuICAgICAgIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgW3RdLCBpLmUuIGluIFt0LnJoc19zY29wZV0uICopXG4gICAgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGlzX3ZhbGlkIHQgPVxuICBtYXRjaCB0Lm1haW4ua2luZCB3aXRoXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICB8IF8gLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+KGYgOiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBmIChUIG5vZGVfb25fcmhzKVxuICBkb25lXG47O1xuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSBfaW52YXJpYW50X2IgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGxoc19jaGFuZ2UuY3JlYXRlZF9pbiB0Lm1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZVxuICAgICAgfnJoc19zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IFNjb3BlLlRvcCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgfCBCaW5kIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKSkpXG4gICAgICB+YWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0LnJoc19zY29wZSk7XG4gICAgICAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0ICh0Lmxoc19jaGFuZ2UuaGVpZ2h0IDwgbm9kZS5oZWlnaHQpKSkpKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgZWRnZSA9ICdhIFR5cGVzLkV4cGVydC5lZGdlID1cbiAgeyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgOyAoKiBbaW5kZXhdIGlzIGRlZmluZWQgd2hlbmV2ZXIgdGhlIFtlZGdlXSBpcyBpbiB0aGUgW2NoaWxkcmVuXSBvZiBzb21lIFt0XS4gVGhlbiBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiB0aGlzIFtlZGdlXSBpbiB0aGF0IFtjaGlsZHJlbl0gYXJyYXkuIEl0IG1pZ2h0IHNlZW0gcmVkdW5kYW50IHdpdGggYWxsXG4gICAgICAgdGhlIG90aGVyIGluZGV4ZXMgd2UgaGF2ZSwgYnV0IGl0IGlzIG5lY2Vzc2FyeSB0byByZW1vdmUgY2hpbGRyZW4uICBUaGUgaW5kZXggbWF5XG4gICAgICAgY2hhbmdlIGFzIHNpYmxpbmcgY2hpbGRyZW4gYXJlIHJlbW92ZWQuICopXG4gICAgbXV0YWJsZSBpbmRleCA6IGludCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSBwYWNrZWRfZWRnZSA9IFR5cGVzLkV4cGVydC5wYWNrZWRfZWRnZSA9IEUgOiAnYSBlZGdlIC0+IHBhY2tlZF9lZGdlXG5bQEB1bmJveGVkXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5FeHBlcnQudCA9XG4gIHsgZiA6IHVuaXQgLT4gJ2FcbiAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA6IGlzX25vd19vYnNlcnZhYmxlOmJvb2wgLT4gdW5pdFxuICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBudW1fY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGVuIHNldCwgbWFrZXMgdGhlIG5vZGUgb2YgW3RdIHN0YWxlLiAgSXQgaXMgc2V0IHdoZW4gdGhlIHNldCBvZiBjaGlsZHJlbiBjaGFuZ2VzLlxuICAgICAgIE90aGVyd2lzZSB0aGUgbm9ybWFsIGNoZWNrIG9mIHN0YWxlbmVzcyAoY29tcGFyaW5nIHRoZSBbY2hhbmdlZF9hdF0gZmllbGQgb2ZcbiAgICAgICBjaGlsZHJlbiBhbmQgdGhlIFtyZWNvbXB1dGVkX2F0XSBmaWVsZCBmb3IgdGhlIG5vZGUgb2YgW3RdKSB3b3VsZCBub3QgYmUgZW5vdWdoLlxuICAgICAgIFRoaXMgcGxheXMgYSByb2xlIHNpbWlsYXIgdG8gdGhlIGN1dG9mZiBvZiBbTmV2ZXJdIGZvciB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kcywgYnV0XG4gICAgICAgd2UgZG9uJ3QgaGF2ZSBhIHNwZWNpYWwgY2hpbGQuICopXG4gICAgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgOyAoKiBUaGUgbnVtYmVyIG9mIGludmFsaWQgY2hpbGRyZW4gdGhhdCBwb2ludCB0byB1cy4gIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG5vZGVcbiAgICAgICBvZiBbdF0gbmVlZHMgdG8gaW52YWxpZGF0ZWQsIHdpdGhvdXQgaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSBjaGlsZHJlbi4gIFRoaXMgaXMgbm90XG4gICAgICAgbmVlZGVkIGZvciBvdGhlciBub2RlcywgYmVjYXVzZSB0aGVyZSBhcmUgbm8gb3RoZXIgbm9kZXMgdGhhdCBoYXZlIGEgcG90ZW50aWFsbHlcbiAgICAgICBsYXJnZSBhbmQgZHluYW1pYyBzZXQgb2YgY2hpbGRyZW4uICopXG4gICAgbXV0YWJsZSBudW1faW52YWxpZF9jaGlsZHJlbiA6IGludFxuICA7ICgqIFdoZXRoZXIgd2Ugd2lsbCBmaXJlIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MgZm9yIGFsbCBjaGlsZHJlbiB3aGVuIHRoZSBub2RlIG9mIFt0XVxuICAgICAgIGl0c2VsZiBydW5zLiAgVXNlZCB0byBtYWtlIHN1cmUgd2UgcmVydW4gZXZlcnl0aGluZyBhZnRlciBbdF0gc3dpdGNoZXMgZnJvbVxuICAgICAgIHVub2JzZXJ2YWJsZSBhbmQgYmFjayB0byBvYnNlcnZhYmxlLiAqKVxuICAgIG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnRcbiAgICAgIF9pbnZhcmlhbnRfYVxuICAgICAgeyBmID0gX1xuICAgICAgOyBjaGlsZHJlblxuICAgICAgOyBudW1fY2hpbGRyZW5cbiAgICAgIDsgZm9yY2Vfc3RhbGUgPSBfXG4gICAgICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuXG4gICAgICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlID0gX1xuICAgICAgOyB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IF9cbiAgICAgIH1cbiAgPVxuICBhc3NlcnQgKG51bV9jaGlsZHJlbiA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCBjaGlsZHJlbik7XG4gIGlnbm9yZSBudW1faW52YWxpZF9jaGlsZHJlbjtcbiAgKCogaW52YXJpYW50IGlzIGJlbG93LCBiZWNhdXNlIHdlIG5lZWQgc29tZSBjb250ZXh0ICopXG4gIFVuaWZvcm1fYXJyYXkuaXRlcmkgY2hpbGRyZW4gfmY6KGZ1biBpIHVvcHQgLT5cbiAgICBtYXRjaCBpIDwgbnVtX2NoaWxkcmVuIHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIHVvcHQgaW5cbiAgICAgIFsldGVzdF9yZXN1bHQ6IGludF0gKFVvcHQudmFsdWVfZXhuIHIuaW5kZXgpIH5leHBlY3Q6aVxuICAgIHwgZmFsc2UgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgdW9wdCkpXG47O1xuXG5sZXQgaW52YXJpYW50X2Fib3V0X251bV9pbnZhbGlkX2NoaWxkcmVuXG4gICAgICB7IGNoaWxkcmVuOyBudW1fY2hpbGRyZW47IG51bV9pbnZhbGlkX2NoaWxkcmVuOyBfIH1cbiAgICAgIH5pc19uZWNlc3NhcnlcbiAgPVxuICBpZiBub3QgaXNfbmVjZXNzYXJ5XG4gIHRoZW4gWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OjBcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X2ludmFsaWRfY2hpbGRyZW4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCByLmNoaWxkKSB0aGVuIGluY3IgY291bnRfaW52YWxpZF9jaGlsZHJlblxuICAgIGRvbmU7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OiFjb3VudF9pbnZhbGlkX2NoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPVxuICB7IGZcbiAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZVxuICA7IGNoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5lbXB0eVxuICA7IG51bV9jaGlsZHJlbiA9IDBcbiAgOyBmb3JjZV9zdGFsZSA9IGZhbHNlXG4gIDsgbnVtX2ludmFsaWRfY2hpbGRyZW4gPSAwXG4gIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0cnVlXG4gIH1cbjs7XG5cbmxldCBtYWtlX3N0YWxlIHQgPVxuICBpZiB0LmZvcmNlX3N0YWxlXG4gIHRoZW4gYEFscmVhZHlfc3RhbGVcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAgIGBPaylcbjs7XG5cbmxldCBpbmNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiArIDFcbmxldCBkZWNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiAtIDFcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fY2hpbGRyZW4gPj0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heCA9IEludC5tYXggMiAoMiAqIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pIGluXG4gICAgdC5jaGlsZHJlbiA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5jaGlsZHJlbiB+bGVuOm5ld19tYXgpXG47O1xuXG5sZXQgYWRkX2NoaWxkX2VkZ2UgdCBwYWNrZWRfZWRnZSA9XG4gIGxldCAoRSBlZGdlKSA9IHBhY2tlZF9lZGdlIGluXG4gIGFzc2VydCAoVW9wdC5pc19ub25lIGVkZ2UuaW5kZXgpO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdDtcbiAgbGV0IG5ld19jaGlsZF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5zb21lIG5ld19jaGlsZF9pbmRleDtcbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBuZXdfY2hpbGRfaW5kZXggKFVvcHQuc29tZSBwYWNrZWRfZWRnZSk7XG4gIHQubnVtX2NoaWxkcmVuIDwtIHQubnVtX2NoaWxkcmVuICsgMTtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAoKiBXZSB3aWxsIGJ1bXAgdGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIGlmIG5lY2Vzc2FyeSB3aGVuIGNvbm5lY3RpbmcgY2hpbGQgYW5kXG4gICAgIHBhcmVudC4gIFNhbWUgdGhpbmcgZm9yIHJ1bm5pbmcgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcy4gKilcbiAgbmV3X2NoaWxkX2luZGV4XG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbiB0IH5jaGlsZF9pbmRleDEgfmNoaWxkX2luZGV4MiA9XG4gIGxldCAoRSBlZGdlMSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEpIGluXG4gIGxldCAoRSBlZGdlMikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDIpIGluXG4gIGVkZ2UxLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDI7XG4gIGVkZ2UyLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDE7XG4gIFVuaWZvcm1fYXJyYXkuc3dhcCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSBjaGlsZF9pbmRleDJcbjs7XG5cbmxldCBsYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4KVxuOztcblxubGV0IHJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBsZXQgcGFja2VkX2VkZ2Vfb3B0ID0gVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoaWxkcmVuIDwtIGxhc3RfaW5kZXg7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgcGFja2VkX2VkZ2Vfb3B0KTtcbiAgbGV0IChFIGVkZ2UpID0gVW9wdC51bnNhZmVfdmFsdWUgcGFja2VkX2VkZ2Vfb3B0IGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5ub25lXG47O1xuXG5sZXQgYmVmb3JlX21haW5fY29tcHV0YXRpb24gdCA9XG4gIGlmIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPiAwXG4gIHRoZW4gYEludmFsaWRcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSBmYWxzZTtcbiAgICBsZXQgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIGluXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSBmYWxzZTtcbiAgICBpZiB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICAgIHRoZW5cbiAgICAgIGZvciBpID0gMCB0byB0Lm51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gaSkgaW5cbiAgICAgICAgci5vbl9jaGFuZ2UgKFVvcHQudmFsdWVfZXhuIHIuY2hpbGQudmFsdWVfb3B0KVxuICAgICAgZG9uZTtcbiAgICBgT2spXG47O1xuXG5sZXQgb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgdCB+aXNfbm93X29ic2VydmFibGUgPVxuICB0Lm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIH5pc19ub3dfb2JzZXJ2YWJsZTtcbiAgaWYgbm90IGlzX25vd19vYnNlcnZhYmxlXG4gIHRoZW4gKFxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gdHJ1ZTtcbiAgICAoKiBJZiB3ZSBkb24ndCByZXNldCBudW1faW52YWxpZF9jaGlsZHJlbiwgd2Ugd291bGQgZG91YmxlIGNvdW50IHRoZW06IGp1c3QgaW1hZ2luZVxuICAgICAgIHdoYXQgaGFwcGVucyB3ZSBpZiByZWNvbm5lY3QvZGlzY29ubmVjdC9yZWNvbm5lY3QvZGlzY29ubmVjdCB3aXRoIGFuIGludmFsaWRcbiAgICAgICBjaGlsZC4gKilcbiAgICB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIDApXG47O1xuXG5sZXQgcnVuX2VkZ2VfY2FsbGJhY2sgdCB+Y2hpbGRfaW5kZXggPVxuICBpZiBub3QgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICB0aGVuIChcbiAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleCkgaW5cbiAgICAoKiBUaGlzIHZhbHVlIGlzIG5vdCBuZWNlc3NhcmlseSBzZXQsIGJlY2F1c2Ugd2UgdHJ5IHRvIHJ1biB0aGlzIHdoZW4gY29ubmVjdGluZyB0aGVcbiAgICAgICBub2RlIHRvIGl0cyBjaGlsZHJlbiwgd2hpY2ggY291bGQgYmUgYmVmb3JlIHRoZXkgaGF2ZSBydW4gZXZlbiBvbmNlLiAgQWxzbyB0aGUgbm9kZVxuICAgICAgIGNvdWxkIGJlIGludmFsaWQuICopXG4gICAgaWYgVW9wdC5pc19zb21lIHIuY2hpbGQudmFsdWVfb3B0XG4gICAgdGhlbiByLm9uX2NoYW5nZSAoVW9wdC51bnNhZmVfdmFsdWUgci5jaGlsZC52YWx1ZV9vcHQpKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbmluY2x1ZGUgVHlwZXMuU2NvcGVcblxubGV0IHRvcCA9IFRvcFxuXG5sZXQgaXNfdG9wID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuOztcblxuKCogVW5saWtlIGZvciBub2RlcywgdGhlcmUgaXMgbm8gaW52YXJpYW50IFtpc19uZWNlc3NhcnkgdCA8PT4gaGVpZ2h0ID4gLTFdIChkb2Vzbid0IHdvcmtcbiAgIGJlY2F1c2Ugb2YgW1RvcF0pLiAgVGhpcyBpcyBmaW5lIHNpbmNlIHRoZSBoZWlnaHQgb2YgYSBzY29wZSBpcyBvbmx5IHVzZWQgdG8gY29uc3RyYWluXG4gICBvdGhlciBoZWlnaHRzLCBub3QgdG8gc2NoZWR1bGUgaXQuICopXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gLTFcbiAgfCBCaW5kIGJpbmQgLT4gYmluZC5saHNfY2hhbmdlLmhlaWdodFxuOztcblxubGV0IGlzX3ZhbGlkID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmlzX3ZhbGlkIGJpbmRcbjs7XG5cbmxldCBpc19uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IE5vZGUuaXNfbmVjZXNzYXJ5IGJpbmQubWFpblxuOztcblxubGV0IGFkZF9ub2RlIHQgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQpO1xuICBtYXRjaCB0IHdpdGhcbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT5cbiAgICBub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzO1xuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQuc29tZSAoVHlwZXMuTm9kZS5QYWNrZWQuVCBub2RlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5GcmVlemUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gZnJlZXppbmcgYW4gaW52YWxpZCB2YWx1ZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBvbiBiZWNvbWluZyBmcm96ZW4gKilcbiAgICAgICAgICAgfCBGcmVlemUgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfm9ubHlfZnJlZXplX3doZW46aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JZl90aGVuX2Vsc2UudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IHRlc3QgOiBib29sIE5vZGUudFxuICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90aGVuX2Vsc2UgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiAoKSkpXG4gICAgICB+dGVzdDppZ25vcmVcbiAgICAgIH50ZXN0X2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKHRlc3RfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHRlc3RfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y3VycmVudF9icmFuY2g6XG4gICAgICAgIChjaGVjayAoZnVuIGN1cnJlbnRfYnJhbmNoIC0+XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgY3VycmVudF9icmFuY2ggPSBVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaCBpblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQudGhlbl8gfHwgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LmVsc2VfKSkpKVxuICAgICAgfnRoZW5fOmlnbm9yZVxuICAgICAgfmVsc2VfOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSm9pbi50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU25hcHNob3QudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgYmVmb3JlIDogJ2FcbiAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBzbmFwc2hvdHRpbmcgYW4gaW52YWxpZCBub2RlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIGFmdGVyIHRoZSBzbmFwc2hvdCAqKVxuICAgICAgICAgICB8IFNuYXBzaG90IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5iZWZvcmU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX2F0Omlnbm9yZVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuS2luZC50ID1cbiAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gIHwgQ29uc3Qgb2YgJ2FcbiAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gIHwgSW52YWxpZFxuICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXA0IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50ICogJ2E0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDUgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDYgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDcgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDggOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDkgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEwIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDExIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhMTEgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTIgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEzIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTQgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTUgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2ExNVxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5hbWUgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEFycmF5X2ZvbGQgXyAtPiBcIkFycmF5X2ZvbGRcIlxuICB8IEF0IF8gLT4gXCJBdFwiXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gXCJBdF9pbnRlcnZhbHNcIlxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IFwiQmluZF9saHNfY2hhbmdlXCJcbiAgfCBCaW5kX21haW4gXyAtPiBcIkJpbmRfbWFpblwiXG4gIHwgQ29uc3QgXyAtPiBcIkNvbnN0XCJcbiAgfCBFeHBlcnQgXyAtPiBcIkV4cGVydFwiXG4gIHwgRnJlZXplIF8gLT4gXCJGcmVlemVcIlxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gXCJJZl90ZXN0X2NoYW5nZVwiXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gXCJJZl90aGVuX2Vsc2VcIlxuICB8IEludmFsaWQgLT4gXCJJbnZhbGlkXCJcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBcIkpvaW5fbGhzX2NoYW5nZVwiXG4gIHwgSm9pbl9tYWluIF8gLT4gXCJKb2luX21haW5cIlxuICB8IE1hcCBfIC0+IFwiTWFwXCJcbiAgfCBNYXAyIF8gLT4gXCJNYXAyXCJcbiAgfCBNYXAzIF8gLT4gXCJNYXAzXCJcbiAgfCBNYXA0IF8gLT4gXCJNYXA0XCJcbiAgfCBNYXA1IF8gLT4gXCJNYXA1XCJcbiAgfCBNYXA2IF8gLT4gXCJNYXA2XCJcbiAgfCBNYXA3IF8gLT4gXCJNYXA3XCJcbiAgfCBNYXA4IF8gLT4gXCJNYXA4XCJcbiAgfCBNYXA5IF8gLT4gXCJNYXA5XCJcbiAgfCBNYXAxMCBfIC0+IFwiTWFwMTBcIlxuICB8IE1hcDExIF8gLT4gXCJNYXAxMVwiXG4gIHwgTWFwMTIgXyAtPiBcIk1hcDEyXCJcbiAgfCBNYXAxMyBfIC0+IFwiTWFwMTNcIlxuICB8IE1hcDE0IF8gLT4gXCJNYXAxNFwiXG4gIHwgTWFwMTUgXyAtPiBcIk1hcDE1XCJcbiAgfCBTbmFwc2hvdCBfIC0+IFwiU25hcHNob3RcIlxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBcIlN0ZXBfZnVuY3Rpb25cIlxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gXCJVbmluaXRpYWxpemVkXCJcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IFwiVW5vcmRlcmVkX2FycmF5X2ZvbGRcIlxuICB8IFZhciBfIC0+IFwiVmFyXCJcbjs7XG5cbmxldCBpbnZhcmlhbnQgOiB0eXBlIGEuIGEgSW52YXJpYW50LnQgLT4gYSB0IEludmFyaWFudC50ID1cbiAgZnVuIGludmFyaWFudF9hIHQgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IEFycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBhcnJheV9mb2xkXG4gIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuICB8IEJpbmRfbWFpbiBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBiaW5kXG4gIHwgQ29uc3QgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LmludmFyaWFudCBpbnZhcmlhbnRfYSBlXG4gIHwgRnJlZXplIGZyZWV6ZSAtPiBGcmVlemUuaW52YXJpYW50IGludmFyaWFudF9hIGZyZWV6ZVxuICB8IElmX3Rlc3RfY2hhbmdlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGlnbm9yZSBpZl90aGVuX2Vsc2VcbiAgfCBJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgaWZfdGhlbl9lbHNlXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSBqb2luIC0+IEpvaW4uaW52YXJpYW50IGlnbm9yZSBqb2luXG4gIHwgSm9pbl9tYWluIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaW52YXJpYW50X2Egam9pblxuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfIC0+ICgpXG4gIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGludmFyaWFudF9hIHNuYXBzaG90XG4gIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGludmFyaWFudF9hIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1bm9yZGVyZWRfYXJyYXlfZm9sZCAtPlxuICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgfCBWYXIgdmFyIC0+IFZhci5pbnZhcmlhbnQgaWdub3JlIHZhclxuOztcblxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF0IF8gLT4gMFxuICB8IEF0X2ludGVydmFscyBfIC0+IDBcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgQmluZF9tYWluIF8gLT4gMlxuICB8IENvbnN0IF8gLT4gMFxuICB8IEV4cGVydCBfIC0+IDBcbiAgfCBGcmVlemUgXyAtPiAxXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiAxXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gMlxuICB8IEludmFsaWQgLT4gMFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBKb2luX21haW4gXyAtPiAyXG4gIHwgTWFwIF8gLT4gMVxuICB8IE1hcDIgXyAtPiAyXG4gIHwgTWFwMyBfIC0+IDNcbiAgfCBNYXA0IF8gLT4gNFxuICB8IE1hcDUgXyAtPiA1XG4gIHwgTWFwNiBfIC0+IDZcbiAgfCBNYXA3IF8gLT4gN1xuICB8IE1hcDggXyAtPiA4XG4gIHwgTWFwOSBfIC0+IDlcbiAgfCBNYXAxMCBfIC0+IDEwXG4gIHwgTWFwMTEgXyAtPiAxMVxuICB8IE1hcDEyIF8gLT4gMTJcbiAgfCBNYXAxMyBfIC0+IDEzXG4gIHwgTWFwMTQgXyAtPiAxNFxuICB8IE1hcDE1IF8gLT4gMTVcbiAgfCBTbmFwc2hvdCBfIC0+IDBcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gMVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gMFxuICB8IFZhciBfIC0+IDBcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG47O1xuXG5sZXQgYmluZF9yaHNfY2hpbGRfaW5kZXggPSAxXG5sZXQgZnJlZXplX2NoaWxkX2luZGV4ID0gMFxubGV0IGlmX2JyYW5jaF9jaGlsZF9pbmRleCA9IDFcbmxldCBqb2luX3Joc19jaGlsZF9pbmRleCA9IDFcblxuKCogV2UgZG8gbm90IGltcGxlbWVudCB0aGUgdGltZS1iYXNlZCBub2RlcyAoW0F0XSwgW0F0X2ludGVydmFsc10sIFtTbmFwc2hvdF0sXG4gICBbU3RlcF9mdW5jdGlvbl0pIGFzIHBhcmVudHMgb2YgdGhlIGN1cnJlbnQtdGltZSBub2RlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgV2UgZG9uJ3RcbiAgIHdhbnQgYWxsIHN1Y2ggbm9kZXMgdG8gYmUgcmVjb21wdXRlZCB3aGVuZXZlciB0aGUgdGltZSBjaGFuZ2VzLCB3aGljaCB3b3VsZCBiZSBob3JyaWJseVxuICAgaW5uZWZpY2llbnQuICBJbnN0ZWFkLCB3ZSBvbmx5IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGF0IHRoZSBcInJpZ2h0XCIgdGltZSxcbiAgIGkuZS4gd2hlbiB0aW1lIHBhc3NlcyBzb21lIHRocmVzaG9sZCByZWxldmFudCB0byB0aGVtLiAgV2UgZG8gdGhpcyB2aWEgc2NoZWR1bGluZ1xuICAgYWxhcm1zIGF0IHRob3NlIHRocmVzaG9sZHMuICopXG5sZXQgaXRlcmlfY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGludCAtPiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpIDogdW5pdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgQXQgXyAtPiAoKVxuICB8IEF0X2ludGVydmFscyBfIC0+ICgpXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gZiAwIChUIGJpbmQubGhzKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgKCogVmFyaW91cyBjb2RlLCBlLmcuIFtzdGF0ZS5iZWNhbWVfbmVjZXNzYXJ5XSwgcmVsaWVzIG9uIHByb2Nlc3NpbmcgW2xoc19jaGFuZ2VdXG4gICAgICAgYmVmb3JlIFtyaHNdLiAqKVxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IENvbnN0IF8gLT4gKClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFeHBlcnQuRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGYgaSAoVCByLmNoaWxkKVxuICAgIGRvbmVcbiAgfCBGcmVlemUgeyBjaGlsZDsgXyB9IC0+IGYgMCAoVCBjaGlsZClcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBmIDAgKFQgdGVzdClcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGYgMCAoVCB0ZXN0X2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjdXJyZW50X2JyYW5jaCkpXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IGYgMCAoVCBsaHMpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBTbmFwc2hvdCBfIC0+ICgpXG4gIHwgU3RlcF9mdW5jdGlvbiB7IGNoaWxkOyBfIH0gLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGQgdGhlbiBmIDAgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGNoaWxkKSlcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgVmFyIF8gLT4gKClcbiAgfCBNYXAgKF8sIG5vZGUwKSAtPiBmIDAgKFQgbm9kZTApXG4gIHwgTWFwMiAoXywgbm9kZTAsIG5vZGUxKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKVxuICB8IE1hcDMgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMilcbiAgfCBNYXA0IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpXG4gIHwgTWFwNSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KVxuICB8IE1hcDYgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSlcbiAgfCBNYXA3IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpXG4gIHwgTWFwOCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KVxuICB8IE1hcDkgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOClcbiAgfCBNYXAxMCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTkpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KVxuICB8IE1hcDExIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSwgbm9kZTEwKVxuICAgIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMClcbiAgfCBNYXAxMlxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTEgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKVxuICB8IE1hcDEzXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTIgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMilcbiAgfCBNYXAxNFxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxMyApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMylcbiAgfCBNYXAxNVxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxM1xuICAgICAgLCBub2RlMTQgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpO1xuICAgIGYgMTQgKFQgbm9kZTE0KVxuOztcblxuKCogW3Nsb3dfZ2V0X2NoaWxkXSBpcyBvbmx5IHVzZWQgYnkgW05vZGUuaW52YXJpYW50XSwgc28gd2UgZG9uJ3QgbWluZCB1c2luZyBbd2l0aF9yZXR1cm5dXG4gICBhbmQgW2l0ZXJpX2NoaWxkcmVuXS4gIElmIHdlIGV2ZXIgbmVlZCBhIGZhc3QgW2dldF9jaGlsZF0sIHdlIGNvZGVkIGl0IGluIHJldlxuICAgNDhkYmZkMDNjOWM1LiAqKVxubGV0IHNsb3dfZ2V0X2NoaWxkIDogdHlwZSBhLiBhIHQgLT4gaW5kZXg6XyAtPiBOb2RlLlBhY2tlZC50ID1cbiAgZnVuIHQgfmluZGV4IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgbGV0IChFIGVkZ2UpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGluZGV4KSBpblxuICAgIFQgZWRnZS5jaGlsZFxuICB8IF8gLT5cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBpIGNoaWxkIC0+IGlmIGkgPSBpbmRleCB0aGVuIHIucmV0dXJuIGNoaWxkKTtcbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiS2luZC5zbG93X2dldF9jaGlsZCBnb3QgaW52YWxpZCBpbmRleFwiXG4gICAgICAgIChpbmRleCwgdClcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBfIHRdKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gS2luZFxubW9kdWxlIEludGVybmFsX29ic2VydmVyID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxub3BlbiBOb2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLk5vZGUudCA9XG4gIHsgKCogW2lkXSBpcyBhIHVuaXF1ZSBpZCBmb3IgdGhlIG5vZGUuICopXG4gICAgaWQgOiBOb2RlX2lkLnRcbiAgOyBzdGF0ZSA6IChUeXBlcy5TdGF0ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogVGhlIGZpZWxkcyBmcm9tIFtyZWNvbXB1dGVkX2F0XSB0byBbY3JlYXRlZF9pbl0gYXJlIGdyb3VwZWQgdG9nZXRoZXIgYW5kIGFyZSBpbiB0aGVcbiAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXJlIHVzZWQgYnkgW1N0YXRlLnJlY29tcHV0ZV0gVGhpcyBoYXMgYSBwb3NpdGl2ZSBwZXJmb3JtYW5jZVxuICAgICAgIGltcGFjdCBkdWUgdG8gY2FjaGUgZWZmZWN0cy4gIERvbid0IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlc2Ugbm9kZXMgd2l0aG91dFxuICAgICAgIHBlcmZvcm1hbmNlIHRlc3RpbmcuICopXG4gICAgKCogW3JlY29tcHV0ZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiBbdF0ncyB2YWx1ZSB3YXMgcmVjb21wdXRlZCwgZXZlbiBpZlxuICAgICAgIGl0IHdhcyBjdXQgb2ZmLiAqKVxuICAgIG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbdmFsdWVfb3B0XSBzdGFydHMgYXMgW25vbmVdLCBhbmQgdGhlIGZpcnN0IHRpbWUgW3RdIGlzIGNvbXB1dGVkIGl0IGlzIHNldCB0b1xuICAgICAgIFtzb21lXSwgYW5kIHJlbWFpbnMgW3NvbWVdIHRoZXJlYWZ0ZXIsIHVudGlsIFt0XSBpcyBpbnZhbGlkYXRlZCwgaWYgZXZlci4gKilcbiAgICBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtraW5kXSBpcyB0aGUga2luZCBvZiBEQUcgbm9kZSBbdF0gaXMuICBba2luZF0gaXMgbXV0YWJsZSBib3RoIGZvciBpbml0aWFsaXphdGlvblxuICAgICAgIGFuZCBiZWNhdXNlIGl0IGNhbiBjaGFuZ2UsIGUuZy4gaWYgW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgOyAoKiBbY2hhbmdlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIHRoaXMgbm9kZSB3YXMgY29tcHV0ZWQgYW5kIG5vdCBjdXQgb2ZmLlxuICAgICAgIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IHdoZW4gW3RdJ3MgcGFyZW50cyBhcmUgc3RhbGUgYW5kIChiZWNhdXNlIGFsbCBwYXJlbnRzIGFyZVxuICAgICAgIG5lY2Vzc2FyeSkgbmVlZCB0byBiZSByZWNvbXB1dGVkLiAqKVxuICAgIG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgW0xpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXSBwbHVzIHRoZSBudW1iZXIgb2ZcbiAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgc3VtbWVkIG92ZXIgYWxsIG9ic2VydmVycyBpbiBbdC5vYnNlcnZlcnNdLiAgSXQgaXMgdXNlZCB0b1xuICAgICAgIHF1aWNrbHkgZGVjaWRlIHdoZXRoZXIgW3RdIG5lZWRzIHRvIGJlIGFkZGVkIHRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl1cbiAgICAgICB3aGVuIFt0XSBjaGFuZ2VzLiAgW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdpbGwgZGVjcmVhc2Ugd2hlbiBhbiBvYnNlcnZlciBpc1xuICAgICAgIHJlbW92ZWQgZnJvbSBbdC5vYnNlcnZlcnNdLCBpZiB0aGUgb2JzZXJ2ZXIgaGFzIG9uLXVwZGF0ZSBoYW5kbGVycy4gKilcbiAgICBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgOyAoKiBUaGUgcGFyZW50cyBvZiBbdF0gYXJlIHRoZSBub2RlcyB0aGF0IGRlcGVuZCBvbiBpdCwgYW5kIHNob3VsZCBiZSBjb21wdXRlZCB3aGVuIFt0XVxuICAgICAgIGNoYW5nZXMsIG9uY2UgYWxsIG9mIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSB1cCB0byBkYXRlLiAgW251bV9wYXJlbnRzXSBpcyB0aGVcbiAgICAgICBudW1iZXIgb2YgcGFyZW50cy4gIElmIFtudW1fcGFyZW50cyA+PSAxXSwgdGhlbiBbcGFyZW50MF0gaXMgdGhlIGZpcnN0IHBhcmVudC5cbiAgICAgICBbcGFyZW50MV9hbmRfYmV5b25kXSBob2xkcyB0aGUgcmVtYWluaW5nIHBhcmVudHMuICBUaGUgb3JkZXIgb2YgdGhlIHBhcmVudHMgZG9lc24ndFxuICAgICAgIG1hdHRlci4gIE9uZSBub2RlIG1heSBvY2N1ciBtdWx0aXBsZSB0aW1lcyBhcyBhIHBhcmVudCBvZiBhbm90aGVyIChlLmcuIGNvbnNpZGVyXG4gICAgICAgW21hcDIgbjEgbjEgfmZdKS5cblxuICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgb3B0aW1pemVkIGZvciB0aGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgdGhhdCBhIG5vZGUgaGFzXG4gICAgICAgb25seSBvbmUgcGFyZW50LiAqKVxuICAgIG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgOyBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IFBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIHBhcmVudDAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbY3JlYXRlZF9pbl0gaXMgaW5pdGlhbGx5IHRoZSBzY29wZSB0aGF0IHRoZSBub2RlIGlzIGNyZWF0ZWQgaW4uICBJZiBhIG5vZGUgaXNcbiAgICAgICBsYXRlciBcInJlc2NvcGVkXCIsIHRoZW4gY3JlYXRlZF9pbiB3aWxsIGJlIGFkanVzdGVkIHRvIHRoZSBuZXcgc2NvcGUgdGhhdCB0aGUgbm9kZVxuICAgICAgIGlzIHBhcnQgb2YuICopXG4gICAgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICA7ICgqIFtuZXh0X25vZGVfaW5fc2FtZV9zY29wZV0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBjcmVhdGVkIGluIFt0LmNyZWF0ZWRfaW5dLiAqKVxuICAgIG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0XSBpcyB1c2VkIHRvIHZpc2l0IG5vZGVzIGluIHRvcG9sb2dpY2FsIG9yZGVyLiAgSWYgW2lzX25lY2Vzc2FyeSB0XSwgdGhlblxuICAgICAgIFtoZWlnaHQgPiBjLmhlaWdodF0gZm9yIGFsbCBjaGlsZHJlbiBbY10gb2YgW3RdLCBhbmQgW2hlaWdodCA+IFNjb3BlLmhlaWdodFxuICAgICAgIHQuY3JlYXRlZF9pbl0uICBJZiBbbm90IChpc19uZWNlc3NhcnkgdCldLCB0aGVuIFtoZWlnaHQgPSAtMV0uICopXG4gICAgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgOyAoKiBbaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSBpcyB0aGUgaGVpZ2h0IGF0IHdoaWNoIFt0XSBpcyBzdG9yZWQgaW4gdGhlIHJlY29tcHV0ZVxuICAgICAgIGhlYXAsIGFuZCBpcyBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBJZiBbdF0gaXMgdGhlXG4gICAgICAgcmVjb21wdXRlIGhlYXAsIHRoZW4gdHlwaWNhbGx5IFt0LmhlaWdodCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXTsgaG93ZXZlcixcbiAgICAgICB3aGlsZSBoZWlnaHQgaXMgYmVpbmcgYWRqdXN0ZWQsIG9uZSBjYW4gdGVtcG9yYXJpbHkgaGF2ZSBbdC5oZWlnaHQgPlxuICAgICAgIHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXS4gIFdoZW4gaGVpZ2h0IGFkanVzdG1lbnQgZmluaXNoZXMsIGVxdWFsaXR5IGlzIHJlc3RvcmVkXG4gICAgICAgYnkgaW5jcmVhc2luZyBbdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIHRvIFt0LmhlaWdodF0gYW5kIHNoaWZ0aW5nIFt0XSdzXG4gICAgICAgcG9zaXRpb24gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gIDsgKCogW3ByZXZfaW5fcmVjb21wdXRlX2hlYXBdIGFuZCBbbmV4dF9pbl9yZWNvbXB1dGVfaGVhcF0gZG91Ymx5IGxpbmsgYWxsIG5vZGVzIG9mIHRoZVxuICAgICAgIHNhbWUgaGVpZ2h0IGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIGlzIHVzZWQgb25seSBkdXJpbmcgaGVpZ2h0IGFkanVzdG1lbnQsIGFuZCBpc1xuICAgICAgIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAgSXQgaG9sZHMgdGhlIHByZS1hZGp1c3RlZFxuICAgICAgIGhlaWdodCBvZiBbdF0uICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICA7ICgqIFtuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgb2YgdGhlIHNhbWUgaGVpZ2h0IGluIHRoZVxuICAgICAgIGFkanVzdC1oZWlnaHRzIGhlYXAuICopXG4gICAgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbb2xkX3ZhbHVlX29wdF0gaXMgdXNlZCBvbmx5IGR1cmluZyBzdGFiaWxpemF0aW9uLCBhbmQgb25seSBpZlxuICAgICAgIFt0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXS4gIEl0IGhvbGRzIHRoZSBwcmUtc3RhYmlsaXphdGlvbiB2YWx1ZSBvZiBbdF0uICBJdFxuICAgICAgIGlzIGNsZWFyZWQgd2hlbiBydW5uaW5nIFt0XSdzIG9uLXVwZGF0ZSBoYW5kbGVycywgYW5kIHNvIGlzIGFsd2F5cyBbVW9wdC5ub25lXVxuICAgICAgIGJldHdlZW4gc3RhYmlsaXphdGlvbnMuICopXG4gICAgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW29ic2VydmVyc10gaXMgdGhlIGhlYWQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBvYnNlcnZlcnMgb2YgW3RdLCBvclxuICAgICAgIFtVb3B0Lm5vbmVdIGlmIHRoZXJlIGFyZSBubyBvYnNlcnZlcnMuICopXG4gICAgbXV0YWJsZSBvYnNlcnZlcnMgOiAoJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyAoKiBbaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGlzIHVzZWQgdG8gYXZvaWQgcHVzaGluZyB0aGUgc2FtZSBub2RlIG11bHRpcGxlXG4gICAgICAgdGltZXMgb250byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gIDsgKCogW29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgdGhlIGZ1bmN0aW9ucyBzdXBwbGllZCB0byBbSW5jcmVtZW50YWwub25fdXBkYXRlXSB0byBiZSBydW5cbiAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZHVsZSBbT25fdXBkYXRlX2hhbmRsZXJdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gZG9lcyBub3RcbiAgICAgICBjb250YWluIHRoZSBvbi11cGRhdGUgaGFuZGxlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIG9ubHkgZXZlclxuICAgICAgIGdldHMgbG9uZ2VyOyB0aGVyZSBpcyBubyB3YXkgdG8gcmVtb3ZlIGVsZW1lbnRzLiAqKVxuICAgIG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHBhY2tlZF9zYW1lIChQYWNrZWQuVCB0MSkgKFBhY2tlZC5UIHQyKSA9IHNhbWUgdDEgdDJcbmxldCBpc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeVxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuIHQgPSBLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIHQua2luZFxubGV0IGl0ZXJpX2NoaWxkcmVuIHQgfmYgPSBLaW5kLml0ZXJpX2NoaWxkcmVuIHQua2luZCB+ZlxubGV0IGlzX3ZhbGlkID0gTm9kZS5pc192YWxpZFxubGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lID0gdHlwZV9lcXVhbF9pZl9waHlzX3NhbWVcblxubGV0IHVzZXJfaW5mbyB0ID1cbiAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKEluZm8gaSkgLT4gU29tZSBpXG4gIHwgU29tZSBvdGhlciAtPiBTb21lIChJbmZvLmNyZWF0ZV9zIChEb3RfdXNlcl9pbmZvLnNleHBfb2ZfdCBvdGhlcikpXG47O1xuXG5sZXQgc2V0X3VzZXJfaW5mbyB0IGluZm8gPVxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPiBTb21lIChJbmZvIGkpKVxuOztcblxubGV0IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdCB+bGFiZWwgfmF0dHJzID1cbiAgbGV0IG5ld18gPSBEb3RfdXNlcl9pbmZvLmRvdCB+bGFiZWwgfmF0dHJpYnV0ZXM6YXR0cnMgaW5cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBuZXdfXG4gICAgfCBTb21lIG90aGVyIC0+IFNvbWUgKERvdF91c2VyX2luZm8uYXBwZW5kIG90aGVyIG5ld18pKVxuOztcblxubGV0IGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQgPVxuICBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoaWxkLmNoYW5nZWRfYXQgcGFyZW50LnJlY29tcHV0ZWRfYXQgPiAwXG47O1xuXG5sZXQgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdCA9XG4gIGxldCBpc19zdGFsZSA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICBpZiBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50OnQgdGhlbiBpc19zdGFsZSA6PSB0cnVlKTtcbiAgIWlzX3N0YWxlXG47O1xuXG5sZXQgaXNfc3RhbGUgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuICh0IDogYSB0KSAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICgqIEEgY29uc3Qgbm9kZSBpcyBzdGFsZSBvbmx5IGF0IGluaXRpYWxpemF0aW9uLiAqKVxuICB8IENvbnN0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogVGltZS1iYXNlZCBub2RlcyBhcmUgY29uc2lkZXJlZCBzdGFsZSB3aGVuIFt0LnJlY29tcHV0ZWRfYXRdIGlzIG5vbmUsIHdoaWNoIGhhcHBlbnNcbiAgICAgYXQgaW5pdGlhbGl6YXRpb24gYW5kIHdoZW4gdGhlIGFsYXJtIG1lY2hhbmlzbSBtYWtlcyBhIG5vZGUgc3RhbGUgKGl0IHNldHMgdGhlXG4gICAgIFt0LnJlY29tcHV0ZWRfYXRdIHRvIFtTdGFiaWxpemF0aW9uX251bS5ub25lXSkuICopXG4gIHwgQXQgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IEF0X2ludGVydmFscyBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgU25hcHNob3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBXZSBuZXZlciBjb25zaWRlciBhbiBpbnZhbGlkYXRlZCBub2RlIHRvIGJlIHN0YWxlIC0tIHdoZW4gd2UgaW52YWxpZGF0ZSBhIG5vZGUsIHdlXG4gICAgIGltbWVkaWF0ZWx5IHByb3BhZ2F0ZSBpbnZhbGlkaXR5IHRvIGl0cyBhbmNlc3RvcnMuICopXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBBIFtWYXJdIG5vZGUgaXMgc3RhbGUgaWYgaXQgd2FzIHNldCBzaW5jZSBpdCB3YXMgcmVjb21wdXRlZC4gKilcbiAgfCBWYXIgeyBzZXRfYXQ7IF8gfSAtPiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHNldF9hdCB0LnJlY29tcHV0ZWRfYXQgPiAwXG4gICgqIE5vZGVzIHRoYXQgaGF2ZSBjaGlsZHJlbi4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEJpbmRfbWFpbiBfXG4gIHwgRnJlZXplIF9cbiAgfCBJZl90aGVuX2Vsc2UgX1xuICB8IEpvaW5fbWFpbiBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEV4cGVydCB7IGZvcmNlX3N0YWxlOyBfIH0gLT5cbiAgICBmb3JjZV9zdGFsZVxuICAgIHx8IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICAgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuOztcblxubGV0IG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQgPSBpc19uZWNlc3NhcnkgdCAmJiBpc19zdGFsZSB0XG5sZXQgaXNfaW5fcmVjb21wdXRlX2hlYXAgdCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IDBcbmxldCBpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQgPSB0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcblxubGV0IGdldF9wYXJlbnQgdCB+aW5kZXggPVxuICBVb3B0LnZhbHVlX2V4blxuICAgIChpZiBpbmRleCA9IDAgdGhlbiB0LnBhcmVudDAgZWxzZSBVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSlcbjs7XG5cbmxldCBpdGVyaV9wYXJlbnRzIHQgfmYgPVxuICBpZiB0Lm51bV9wYXJlbnRzID4gMFxuICB0aGVuIChcbiAgICBmIDAgKFVvcHQudmFsdWVfZXhuIHQucGFyZW50MCk7XG4gICAgZm9yIGluZGV4ID0gMSB0byB0Lm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgZiBpbmRleCAoVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKSlcbiAgICBkb25lKVxuOztcblxubGV0IGhhc19jaGlsZCB0IH5jaGlsZCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIGNoaWxkIGNoaWxkJyk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfaW52YWxpZF9jaGlsZCB0ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT4gaGFzIDo9ICFoYXMgfHwgbm90IChpc192YWxpZCBjaGlsZCkpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX3BhcmVudCAodCA6IF8gdCkgfnBhcmVudCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIHBhcmVudCBwYXJlbnQnKTtcbiAgIWhhc1xuOztcblxubGV0IHNob3VsZF9iZV9pbnZhbGlkYXRlZCA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuICopXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBdCBfIC0+IGZhbHNlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gZmFsc2VcbiAgfCBDb25zdCBfIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGZhbHNlXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBOb2RlcyB3aXRoIGEgZml4ZWQgc2V0IG9mIGNoaWxkcmVuIGFyZSBpbnZhbGlkIGlmIGFueSBjaGlsZCBpcyBpbnZhbGlkLiAqKVxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEZyZWV6ZSBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IGhhc19pbnZhbGlkX2NoaWxkIHRcbiAgKCogQSAqX2NoYW5nZSBub2RlIGlzIGludmFsaWQgaWYgdGhlIG5vZGUgaXQgaXMgd2F0Y2hpbmcgZm9yIGNoYW5nZXMgaXMgaW52YWxpZCAoc2FtZVxuICAgICByZWFzb24gYXMgYWJvdmUpLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIFtoYXNfaW52YWxpZF9jaGlsZCB0XS4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3QpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gICgqIFtCaW5kX21haW5dLCBbSWZfdGhlbl9lbHNlXSwgYW5kIFtKb2luX21haW5dIGFyZSBpbnZhbGlkIGlmIHRoZWlyICpfY2hhbmdlIGNoaWxkIGlzLFxuICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IGlmIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSAtLSB0aGUgZ3JhcGggbWF5IGJlIHJlc3RydWN0dXJlZCB0b1xuICAgICBhdm9pZCB0aGUgaW52YWxpZGl0eSBvZiB0aG9zZS4gKilcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0X2NoYW5nZSlcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IEV4cGVydCBfIC0+XG4gICAgKCogVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgd2UgZG8gZm9yIGJpbmQgYWJvdmUsIGV4Y2VwdCB0aGF0IGFueSBpbnZhbGlkIGNoaWxkIGNhbiBiZVxuICAgICAgIHJlbW92ZWQsIHNvIHdlIGNhbiBvbmx5IHRlbGwgaWYgYW4gZXhwZXJ0IG5vZGUgYmVjb21lcyBpbnZhbGlkIHdoZW4gYWxsIGl0c1xuICAgICAgIGRlcGVuZGVuY2llcyBoYXZlIGZpcmVkICh3aGljaCBpbiBwcmFjdGljZSBtZWFucyB3aGVuIHdlIGFyZSBhYm91dCB0byBydW4gaXQpLiAqKVxuICAgIGZhbHNlXG47O1xuXG5sZXQgZm9sZF9vYnNlcnZlcnMgKHQgOiBfIHQpIH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgbGV0IGFjID0gcmVmIGluaXQgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGFjIDo9IGYgIWFjIG9ic2VydmVyXG4gIGRvbmU7XG4gICFhY1xuOztcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPSBmb2xkX29ic2VydmVycyB0IH5pbml0OigpIH5mOihmdW4gKCkgb2JzZXJ2ZXIgLT4gZiBvYnNlcnZlcilcblxubGV0IGludmFyaWFudCAodHlwZSBhKSAoaW52YXJpYW50X2EgOiBhIC0+IHVuaXQpICh0IDogYSB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgWyV0ZXN0X2VxOiBib29sXSAobmVlZHNfdG9fYmVfY29tcHV0ZWQgdCkgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpO1xuICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHQuY3JlYXRlZF9pbik7XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IGNoaWxkLmhlaWdodCk7XG4gICAgICAgIGFzc2VydCAoaGFzX3BhcmVudCBjaGlsZCB+cGFyZW50OnQpKTtcbiAgICAgIGFzc2VydCAobm90IChzaG91bGRfYmVfaW52YWxpZGF0ZWQgdCkpKTtcbiAgICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCkgLT5cbiAgICAgIGFzc2VydCAoaGFzX2NoaWxkIHBhcmVudCB+Y2hpbGQ6dCk7XG4gICAgICBhc3NlcnQgKGlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA8IHBhcmVudC5oZWlnaHQpKTtcbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOihjaGVjayBOb2RlX2lkLmludmFyaWFudClcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5yZWNvbXB1dGVkX2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+dmFsdWVfb3B0OlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9vcHQgLT5cbiAgICAgICAgICAgaWYgaXNfdmFsaWQgdCAmJiBub3QgKGlzX3N0YWxlIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFsdWVfb3B0KTtcbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgdmFsdWVfb3B0KSlcbiAgICAgIH5raW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBraW5kIC0+XG4gICAgICAgICAgIEtpbmQuaW52YXJpYW50IGludmFyaWFudF9hIGtpbmQ7XG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICB8IEV4cGVydCBlIC0+XG4gICAgICAgICAgICAgRXhwZXJ0LmludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgfmlzX25lY2Vzc2FyeTooaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHwgXyAtPiAoKSkpXG4gICAgICB+Y3V0b2ZmOihjaGVjayAoQ3V0b2ZmLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+Y2hhbmdlZF9hdDpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hhbmdlZF9hdCAtPlxuICAgICAgICAgICBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQgY2hhbmdlZF9hdDtcbiAgICAgICAgICAgaWYgU3RhYmlsaXphdGlvbl9udW0uaXNfc29tZSB0LnJlY29tcHV0ZWRfYXRcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgY2hhbmdlZF9hdCB0LnJlY29tcHV0ZWRfYXQgPD0gMCkpKVxuICAgICAgfm51bV9vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgIChjaGVja1xuICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgIChMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgICAgICAgICArIGZvbGRfb2JzZXJ2ZXJzIHQgfmluaXQ6MCB+ZjooZnVuIG4geyBvbl91cGRhdGVfaGFuZGxlcnM7IF8gfSAtPlxuICAgICAgICAgICAgICAgICAgIG4gKyBMaXN0Lmxlbmd0aCBvbl91cGRhdGVfaGFuZGxlcnMpKSkpXG4gICAgICB+bnVtX3BhcmVudHM6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9wYXJlbnRzIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX3BhcmVudHMgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX3BhcmVudHMgPD0gMSArIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kKSkpXG4gICAgICB+cGFyZW50MV9hbmRfYmV5b25kOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQxX2FuZF9iZXlvbmQgLT5cbiAgICAgICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggcGFyZW50MV9hbmRfYmV5b25kIGRvXG4gICAgICAgICAgICAgWyV0ZXN0X2VxOiBib29sXVxuICAgICAgICAgICAgICAgKHBhcmVudF9pbmRleCA8IHQubnVtX3BhcmVudHMpXG4gICAgICAgICAgICAgICAoVW9wdC5pc19zb21lXG4gICAgICAgICAgICAgICAgICAoVW5pZm9ybV9hcnJheS5nZXQgcGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnBhcmVudDA6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDAgLT5cbiAgICAgICAgICAgWyV0ZXN0X2VxOiBib29sXSAodC5udW1fcGFyZW50cyA+IDApIChVb3B0LmlzX3NvbWUgcGFyZW50MCkpKVxuICAgICAgfmNyZWF0ZWRfaW46KGNoZWNrIFNjb3BlLmludmFyaWFudClcbiAgICAgIH5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgLT5cbiAgICAgICAgICAgaWYgU2NvcGUuaXNfdG9wIHQuY3JlYXRlZF9pbiB8fCBub3QgKGlzX3ZhbGlkIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUpKSlcbiAgICAgIH5oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodCAtPlxuICAgICAgICAgICBpZiBpc19uZWNlc3NhcnkgdCB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IDApIGVsc2UgYXNzZXJ0IChoZWlnaHQgPSAtMSkpKVxuICAgICAgfmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IC0xKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPD0gdC5oZWlnaHQpKSlcbiAgICAgIH5wcmV2X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAocHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgcHJldikgPSBVb3B0LnZhbHVlX2V4biBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gcHJldi5uZXh0X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IHByZXYuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfm5leHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbmV4dC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+aGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIC0+XG4gICAgICAgICAgIGlmIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwgdC5oZWlnaHQpKSlcbiAgICAgIH5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcClcbiAgICAgICAgICAgZWxzZSBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBuZXh0KTtcbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgdC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IG5leHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApKSkpXG4gICAgICB+b2xkX3ZhbHVlX29wdDooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5vYnNlcnZlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIF8gLT5cbiAgICAgICAgICAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIHsgc3RhdGU7IG9ic2VydmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQgb2JzZXJ2aW5nKTtcbiAgICAgICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICB+aXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb246aWdub3JlXG4gICAgICB+b25fdXBkYXRlX2hhbmRsZXJzOmlnbm9yZVxuICAgICAgfnVzZXJfaW5mbzppZ25vcmVcbiAgICAgIH5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgICAgICAgIHwgRXhwZXJ0IF8gLT4gKClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgICAgfmV4cGVjdDooaW5pdGlhbF9udW1fY2hpbGRyZW4gdCkpO1xuICAgICAgICAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgICAoVCB0KVxuICAgICAgICAgICAgICAgICAgIChnZXRfcGFyZW50XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgICB+aW5kZXg6bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkpKSk7XG4gICAgICAgICAgIGlmIGRlYnVnICYmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBBcnJheS5pdGVyIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoeCA9IC0xKSkpKVxuICAgICAgfm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleDpcbiAgICAgICAgKGNoZWNrIChmdW4gbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAoQXJyYXkubGVuZ3RoIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleClcbiAgICAgICAgICAgICB+ZXhwZWN0OihVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCArIDEpO1xuICAgICAgICAgICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBwYXJlbnRfaW5kZXggKFQgcGFyZW50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwYWNrZWRfc2FtZVxuICAgICAgICAgICAgICAgICAoVCB0KVxuICAgICAgICAgICAgICAgICAoS2luZC5zbG93X2dldF9jaGlsZFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQua2luZFxuICAgICAgICAgICAgICAgICAgICB+aW5kZXg6bXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgQXJyYXkuaXRlciBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5mb3JjZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICB+Y3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZSlcbjs7XG5cbmxldCB1bnNhZmVfdmFsdWUgdCA9IFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfb3B0XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIGlmIFVvcHQuaXNfc29tZSB0LnZhbHVlX29wdFxuICB0aGVuIFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfb3B0XG4gIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIGdldCB2YWx1ZSBvZiBhbiBpbnZhbGlkIG5vZGVcIiB0IFslc2V4cF9vZjogXyB0XVxuOztcblxubGV0IGdldF9jdXRvZmYgdCA9IHQuY3V0b2ZmXG5sZXQgc2V0X2N1dG9mZiB0IGN1dG9mZiA9IHQuY3V0b2ZmIDwtIGN1dG9mZlxuXG5sZXQgaXNfY29uc3QgdCA9XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgQ29uc3QgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG9uX3VwZGF0ZSB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gb25fdXBkYXRlX2hhbmRsZXIgOjogdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgKyAxXG47O1xuXG5sZXQgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyB0IG5vZGVfdXBkYXRlIH5ub3cgPVxuICBsZXQgciA9IHJlZiB0Lm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICB3aGlsZSBub3QgKExpc3QuaXNfZW1wdHkgIXIpIGRvXG4gICAgbWF0Y2ggIXIgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBvbl91cGRhdGVfaGFuZGxlciA6OiByZXN0IC0+XG4gICAgICByIDo9IHJlc3Q7XG4gICAgICBPbl91cGRhdGVfaGFuZGxlci5ydW4gb25fdXBkYXRlX2hhbmRsZXIgbm9kZV91cGRhdGUgfm5vd1xuICBkb25lO1xuICBsZXQgciA9IHJlZiB0Lm9ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnZhbHVlX2V4biAhciBpblxuICAgIHIgOj0gb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmc7XG4gICAgbGV0IHIgPSByZWYgb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzIGluXG4gICAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgICByIDo9IHJlc3Q7XG4gICAgICAgICgqIFdlIGhhdmUgdG8gdGVzdCBbc3RhdGVdIGJlZm9yZSBlYWNoIG9uLXVwZGF0ZSBoYW5kbGVyLCBiZWNhdXNlIGFuIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVyIG1pZ2h0IGRpc2FibGUgaXRzIG93biBvYnNlcnZlciwgd2hpY2ggc2hvdWxkIHByZXZlbnQgb3RoZXIgb24tdXBkYXRlXG4gICAgICAgICAgIGhhbmRsZXJzIGluIHRoZSBzYW1lIG9ic2VydmVyIGZyb20gcnVubmluZy4gKilcbiAgICAgICAgKG1hdGNoIG9ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICB8IEluX3VzZSAtPiBPbl91cGRhdGVfaGFuZGxlci5ydW4gb25fdXBkYXRlX2hhbmRsZXIgbm9kZV91cGRhdGUgfm5vdylcbiAgICBkb25lXG4gIGRvbmVcbjs7XG5cbmxldCBzZXRfa2luZCB0IGtpbmQgPVxuICB0LmtpbmQgPC0ga2luZDtcbiAgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXhcbiAgPC0gQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuOztcblxubGV0IGNyZWF0ZSBzdGF0ZSBjcmVhdGVkX2luIGtpbmQgPVxuICBsZXQgdCA9XG4gICAgeyBpZCA9IE5vZGVfaWQubmV4dCAoKVxuICAgIDsgc3RhdGVcbiAgICA7IHJlY29tcHV0ZWRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB2YWx1ZV9vcHQgPSBVb3B0Lm5vbmVcbiAgICA7IGtpbmRcbiAgICA7IGN1dG9mZiA9IEN1dG9mZi5waHlzX2VxdWFsXG4gICAgOyBjaGFuZ2VkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA9IDBcbiAgICA7IG51bV9wYXJlbnRzID0gMFxuICAgIDsgcGFyZW50MV9hbmRfYmV5b25kID0gVW5pZm9ybV9hcnJheS5lbXB0eVxuICAgIDsgcGFyZW50MCA9IFVvcHQubm9uZVxuICAgIDsgY3JlYXRlZF9pblxuICAgIDsgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodCA9IC0xXG4gICAgOyBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSAtMVxuICAgIDsgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSAtMVxuICAgIDsgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gVW9wdC5ub25lXG4gICAgOyBvbGRfdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBvYnNlcnZlcnMgPSBVb3B0Lm5vbmVcbiAgICA7IGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uID0gZmFsc2VcbiAgICA7IG9uX3VwZGF0ZV9oYW5kbGVycyA9IFtdXG4gICAgOyBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggPVxuICAgICAgICBBcnJheS5jcmVhdGUgfmxlbjooS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiBraW5kKSAoLTEpXG4gICAgKCogW215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleF0gaGFzIG9uZSBlbGVtZW50IGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8gaG9sZFxuICAgICAgIHRoZSBjaGlsZCBpbmRleCBvZiBbcGFyZW50MF0uICopXG4gICAgOyBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggPSBbfCAtMSB8XVxuICAgIDsgZm9yY2VfbmVjZXNzYXJ5ID0gZmFsc2VcbiAgICA7IHVzZXJfaW5mbyA9IE5vbmVcbiAgICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA9XG4gICAgICAgIChpZiBzdGF0ZS5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIHRoZW4gU29tZSAoQmFja3RyYWNlLmdldCAoKSkgZWxzZSBOb25lKVxuICAgIH1cbiAgaW5cbiAgU2NvcGUuYWRkX25vZGUgY3JlYXRlZF9pbiB0O1xuICAoKiBbaW52YXJpYW50XSBkb2VzIG5vdCB5ZXQgaG9sZCBoZXJlIGJlY2F1c2UgbWFueSB1c2VzIG9mIFtOb2RlLmNyZWF0ZV0gdXNlIFtraW5kID1cbiAgICAgVW5pbml0aWFsaXplZF0sIGFuZCB0aGVuIG11dGF0ZSBbdC5raW5kXSBsYXRlci4gKilcbiAgdFxuOztcblxubGV0IG1heF9udW1fcGFyZW50cyB0ID0gMSArIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9wYXJlbnRfaWZfbmVjZXNzYXJ5IHQgPVxuICBpZiB0Lm51bV9wYXJlbnRzID0gbWF4X251bV9wYXJlbnRzIHRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19tYXhfbnVtX3BhcmVudHMgPSAyICogbWF4X251bV9wYXJlbnRzIHQgaW5cbiAgICB0LnBhcmVudDFfYW5kX2JleW9uZFxuICAgIDwtIFVuaWZvcm1fYXJyYXkucmVhbGxvYyB0LnBhcmVudDFfYW5kX2JleW9uZCB+bGVuOihuZXdfbWF4X251bV9wYXJlbnRzIC0gMSk7XG4gICAgdC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhcbiAgICA8LSBBcnJheS5yZWFsbG9jIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IH5sZW46bmV3X21heF9udW1fcGFyZW50cyAoLTEpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX3BhcmVudHMgPCBtYXhfbnVtX3BhcmVudHMgdClcbjs7XG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCB+Y2hpbGRfaW5kZXggPVxuICBsZXQgbWF4X251bV9jaGlsZHJlbiA9IEFycmF5Lmxlbmd0aCB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCBpblxuICBpZiBjaGlsZF9pbmRleCA+PSBtYXhfbnVtX2NoaWxkcmVuXG4gIHRoZW4gKFxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZF9pbmRleCA9IG1heF9udW1fY2hpbGRyZW4pO1xuICAgIGxldCBuZXdfbWF4X251bV9jaGlsZHJlbiA9IEludC5tYXggMiAoMiAqIG1heF9udW1fY2hpbGRyZW4pIGluXG4gICAgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXhcbiAgICA8LSBBcnJheS5yZWFsbG9jIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5sZW46bmV3X21heF9udW1fY2hpbGRyZW4gKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZF9pbmRleCA8IEFycmF5Lmxlbmd0aCB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleClcbjs7XG5cbmxldCBzZXRfcGFyZW50IDogdHlwZSBhLiBjaGlsZDphIHQgLT4gcGFyZW50OlBhY2tlZC50IFVvcHQudCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBpZiBwYXJlbnRfaW5kZXggPSAwXG4gIHRoZW4gY2hpbGQucGFyZW50MCA8LSBwYXJlbnRcbiAgZWxzZSBVbmlmb3JtX2FycmF5LnNldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpIHBhcmVudFxuOztcblxubGV0IGxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OihVb3B0LnNvbWUgKFBhY2tlZC5UIHBhcmVudCkpIH5wYXJlbnRfaW5kZXg7XG4gIGNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSA8LSBjaGlsZF9pbmRleDtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIHBhcmVudF9pbmRleFxuOztcblxubGV0IHVubGlua1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHBhcmVudDpiIHQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIHNldF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6VW9wdC5ub25lIH5wYXJlbnRfaW5kZXg7XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSA8LSAtMTtcbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgPC0gLTEpXG47O1xuXG5sZXQgYWRkX3BhcmVudCA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gcGFyZW50OmIgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSBjaGlsZDtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGxpbmsgfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXg6Y2hpbGQubnVtX3BhcmVudHM7XG4gIGNoaWxkLm51bV9wYXJlbnRzIDwtIGNoaWxkLm51bV9wYXJlbnRzICsgMVxuOztcblxubGV0IHJlbW92ZV9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5udW1fcGFyZW50cyA+PSAxKTtcbiAgbGV0IHBhcmVudF9pbmRleCA9IHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAocGFja2VkX3NhbWUgKFQgcGFyZW50KSAoZ2V0X3BhcmVudCBjaGlsZCB+aW5kZXg6cGFyZW50X2luZGV4KSk7XG4gIGxldCBsYXN0X3BhcmVudF9pbmRleCA9IGNoaWxkLm51bV9wYXJlbnRzIC0gMSBpblxuICBpZiBwYXJlbnRfaW5kZXggPCBsYXN0X3BhcmVudF9pbmRleFxuICB0aGVuIChcbiAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChsYXN0X3BhcmVudF9pbmRleCAtIDEpKVxuICAgIGluXG4gICAgbGlua1xuICAgICAgfmNoaWxkXG4gICAgICB+Y2hpbGRfaW5kZXg6Y2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihsYXN0X3BhcmVudF9pbmRleClcbiAgICAgIH5wYXJlbnRcbiAgICAgIH5wYXJlbnRfaW5kZXgpO1xuICB1bmxpbmsgfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXg6bGFzdF9wYXJlbnRfaW5kZXg7XG4gIGNoaWxkLm51bV9wYXJlbnRzIDwtIGNoaWxkLm51bV9wYXJlbnRzIC0gMVxuOztcblxubGV0IHN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQgcGFyZW50IH5jaGlsZDEgfmNoaWxkX2luZGV4MSB+Y2hpbGQyIH5jaGlsZF9pbmRleDIgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMSkgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MSkpO1xuICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgY2hpbGQyKSAoS2luZC5zbG93X2dldF9jaGlsZCBwYXJlbnQua2luZCB+aW5kZXg6Y2hpbGRfaW5kZXgyKSkpO1xuICBsZXQgaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMSA9XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgxKVxuICBpblxuICBsZXQgaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiA9XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgyKVxuICBpblxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQxLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMSkgPSBjaGlsZF9pbmRleDEpO1xuICAgIGFzc2VydCAoXG4gICAgICBjaGlsZDIubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyKSA9IGNoaWxkX2luZGV4MikpO1xuICAoKiBub3cgc3RhcnQgc3dhcHBpbmcgKilcbiAgY2hpbGQxLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMSkgPC0gY2hpbGRfaW5kZXgyO1xuICBjaGlsZDIubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyKSA8LSBjaGlsZF9pbmRleDE7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSkgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMjtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgyKSA8LSBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxXG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgdCA9IFBhY2tlZC50ID0gVCA6IF8gVHlwZXMuTm9kZS50IC0+IHQgW0BAdW5ib3hlZF1cblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gdCB8PiBbJXNleHBfb2Y6IF8gdF1cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuXG4gIG1vZHVsZSBBc19saXN0IChNIDogc2lnXG4gICAgICB2YWwgbmV4dCA6IFBhY2tlZC50IC0+IFBhY2tlZC50IFVvcHQudFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBQYWNrZWQudCBVb3B0LnRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IGFjID0gcmVmIGluaXQgaW5cbiAgICAgIGxldCByID0gcmVmIHQgaW5cbiAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICBsZXQgcGFja2VkX25vZGUgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgICAgICByIDo9IE0ubmV4dCBwYWNrZWRfbm9kZTtcbiAgICAgICAgYWMgOj0gZiAhYWMgcGFja2VkX25vZGVcbiAgICAgIGRvbmU7XG4gICAgICAhYWNcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIG4gLT4gZiBuKVxuICAgIGxldCBpbnZhcmlhbnQgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRcbiAgICBsZXQgbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gXyAtPiBuICsgMSlcbiAgICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5yZXYgKGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIG4gLT4gbiA6OiBhYykpXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fbGlzdCB0IHw+IFslc2V4cF9vZjogUGFja2VkLnQgbGlzdF1cbiAgZW5kXG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgPVxuICAgIGxldCBzZWVuID0gTm9kZV9pZC5IYXNoX3NldC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVjIGl0ZXJfZGVzY2VuZGFudHMgKFQgdCkgPVxuICAgICAgaWYgbm90IChIYXNoX3NldC5tZW0gc2VlbiB0LmlkKVxuICAgICAgdGhlbiAoXG4gICAgICAgIEhhc2hfc2V0LmFkZCBzZWVuIHQuaWQ7XG4gICAgICAgIGYgKFQgdCk7XG4gICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIHQgLT4gaXRlcl9kZXNjZW5kYW50cyB0KSlcbiAgICBpblxuICAgIExpc3QuaXRlciB0cyB+ZjppdGVyX2Rlc2NlbmRhbnRzO1xuICAgIHNlZW5cbiAgOztcblxuICBsZXQgaXRlcl9kZXNjZW5kYW50cyB0cyB+ZiA9IGlnbm9yZSAoaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZiA6IF8gSGFzaF9zZXQudClcblxuICBtb2R1bGUgRG90X3VzZXJfaW5mbyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRG90X3VzZXJfaW5mb1xuXG4gICAgbGV0IGRlZmF1bHQgfm5hbWUgdCA9XG4gICAgICBEb3RfdXNlcl9pbmZvLmRvdFxuICAgICAgICB+bGFiZWw6WyBuYW1lOyBLaW5kLm5hbWUgdC5raW5kOyBzcHJpbnRmIFwiaGVpZ2h0PSVkXCIgdC5oZWlnaHQgXVxuICAgICAgICB+YXR0cmlidXRlczpTdHJpbmcuTWFwLmVtcHR5XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogKFQgdCkgPSBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHRcblxuICBsZXQgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdCA9XG4gICAgbGV0IGRlZmF1bHQgPSBEb3RfdXNlcl9pbmZvLmRlZmF1bHQgfm5hbWUgdCBpblxuICAgIGxldCBpbmZvID1cbiAgICAgIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgdXNlcl9pbmZvIC0+IERvdF91c2VyX2luZm8uYXBwZW5kIGRlZmF1bHQgdXNlcl9pbmZvXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcIiVzXFxuXCIgKERvdF91c2VyX2luZm8udG9fc3RyaW5nIH5uYW1lIChEb3RfdXNlcl9pbmZvLnRvX2RvdCBpbmZvKSlcbiAgOztcblxuICBsZXQgc2F2ZV9kb3Qgb3V0IHRzID1cbiAgICBsZXQgbm9kZV9uYW1lID1cbiAgICAgIGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgdGhlbiBmdW4gXyAtPiBcIm4jIyNcIlxuICAgICAgZWxzZSBmdW4gbm9kZSAtPiBcIm5cIiBeIE5vZGVfaWQudG9fc3RyaW5nIG5vZGUuaWRcbiAgICBpblxuICAgIGZwcmludGYgb3V0IFwiZGlncmFwaCBHIHtcXG5cIjtcbiAgICBmcHJpbnRmIG91dCBcIiAgcmFua2RpciA9IEJUXFxuXCI7XG4gICAgbGV0IGJpbmRfZWRnZXMgPSByZWYgW10gaW5cbiAgICBsZXQgc2VlbiA9XG4gICAgICBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbGV0IG5hbWUgPSBub2RlX25hbWUgdCBpblxuICAgICAgICBwcmludF9ub2RlIG91dCB+bmFtZSB0O1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBmcm9tXykgLT5cbiAgICAgICAgICBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXNcXG5cIiAobm9kZV9uYW1lIGZyb21fKSBuYW1lKTtcbiAgICAgICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPlxuICAgICAgICAgIEJpbmQuaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyBiaW5kIH5mOihmdW4gdG9fIC0+XG4gICAgICAgICAgICBiaW5kX2VkZ2VzIDo9IChUIHQsIHRvXykgOjogIWJpbmRfZWRnZXMpXG4gICAgICAgIHwgXyAtPiAoKSlcbiAgICBpblxuICAgIExpc3QuaXRlciAhYmluZF9lZGdlcyB+ZjooZnVuIChUIGZyb20sIFQgdG9fKSAtPlxuICAgICAgaWYgSGFzaF9zZXQubWVtIHNlZW4gdG9fLmlkXG4gICAgICB0aGVuIGZwcmludGYgb3V0IFwiICAlcyAtPiAlcyBbc3R5bGU9ZGFzaGVkXVxcblwiIChub2RlX25hbWUgZnJvbSkgKG5vZGVfbmFtZSB0b18pKTtcbiAgICBmcHJpbnRmIG91dCBcIn1cXG4lIVwiXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSB0cyA9XG4gICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZpbGUgfmY6KGZ1biBvdXQgLT4gc2F2ZV9kb3Qgb3V0IHRzKVxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBBc19yZWNvbXB1dGVfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwXG4gIGVuZClcblxubW9kdWxlIE5vZGVzX2J5X2hlaWdodCA9IHN0cnVjdFxuICB0eXBlIHQgPSBBc19yZWNvbXB1dGVfbGlzdC50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICgqIFdlIGRpc3BsYXkgdGhlIHNtYWxsZXN0IHByZWZpeCBvZiBbbm9kZXNfYnlfaGVpZ2h0XSB0aGF0IGluY2x1ZGVzIGFsbCBub2Rlcy4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgbWF4X25vbmVtcHR5X2luZGV4ID0gcmVmICgtMSkgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBpIGwgLT4gaWYgVW9wdC5pc19zb21lIGwgdGhlbiBtYXhfbm9uZW1wdHlfaW5kZXggOj0gaSk7XG4gICAgVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOjAgfmxlbjooIW1heF9ub25lbXB0eV9pbmRleCArIDEpIHw+IFslc2V4cF9vZjogdF1cbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5SZWNvbXB1dGVfaGVhcC50ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2Rlc19ieV9oZWlnaHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMVxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBsZXQgYWN0dWFsX2xlbmd0aCA9IHJlZiAwIGluXG4gICAgICAgICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0Lm5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIG5vZGUgLT5cbiAgICAgICAgICAgICBhY3R1YWxfbGVuZ3RoIDo9ICFhY3R1YWxfbGVuZ3RoICsgQXNfcmVjb21wdXRlX2xpc3QubGVuZ3RoIG5vZGUpO1xuICAgICAgICAgICBbJXRlc3RfZXE6IGludF0gbGVuZ3RoICFhY3R1YWxfbGVuZ3RoKSlcbiAgICAgIH5oZWlnaHRfbG93ZXJfYm91bmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpO1xuICAgICAgICAgICBmb3IgaGVpZ2h0ID0gMCB0byBoZWlnaHRfbG93ZXJfYm91bmQgLSAxIGRvXG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm5vZGVzX2J5X2hlaWdodDpcbiAgICAgICAgKGNoZWNrIChmdW4gbm9kZXNfYnlfaGVpZ2h0IC0+XG4gICAgICAgICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgbm9kZXNfYnlfaGVpZ2h0IH5mOihmdW4gaGVpZ2h0IG5vZGUgLT5cbiAgICAgICAgICAgICBBc19yZWNvbXB1dGVfbGlzdC5pdGVyIG5vZGUgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IGhlaWdodCk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpKSkpKVxuOztcblxubGV0IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBkZWJ1Z1xuICB0aGVuXG4gICAgZm9yIGkgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMSBkb1xuICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGkpKVxuICAgIGRvbmU7XG4gIGxldCBzcmMgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICBsZXQgZHN0ID0gY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgIH5zcmNcbiAgICB+c3JjX3BvczowXG4gICAgfmRzdFxuICAgIH5kc3RfcG9zOjBcbiAgICB+bGVuOihtaW4gKFVuaWZvcm1fYXJyYXkubGVuZ3RoIHNyYykgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdCkpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBkc3Q7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIG1pbiB0LmhlaWdodF9sb3dlcl9ib3VuZCAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHN0KVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG5vZGVzX2J5X2hlaWdodCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZFxuICB9XG47O1xuXG5sZXQgc2V0X25leHQgKHByZXYgOiBOb2RlLlBhY2tlZC50IFVvcHQudCkgfm5leHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgcHJldlxuICB0aGVuIChcbiAgICBsZXQgKFQgcHJldikgPSBVb3B0LnVuc2FmZV92YWx1ZSBwcmV2IGluXG4gICAgcHJldi5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIG5leHQpXG47O1xuXG5sZXQgc2V0X3ByZXYgKG5leHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCkgfnByZXYgPVxuICBpZiBVb3B0LmlzX3NvbWUgbmV4dFxuICB0aGVuIChcbiAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnVuc2FmZV92YWx1ZSBuZXh0IGluXG4gICAgbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIHByZXYpXG47O1xuXG5sZXQgbGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBoZWlnaHQ7XG4gIGxldCBuZXh0ID0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IGluXG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2OihVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IChVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpXG47O1xuXG5sZXQgdW5saW5rICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBsZXQgcHJldiA9IG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBsZXQgbmV4dCA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBpZiBwaHlzX3NhbWVcbiAgICAgICAoVW9wdC5zb21lIG5vZGUpXG4gICAgICAgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKVxuICB0aGVuIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2O1xuICBzZXRfbmV4dCBwcmV2IH5uZXh0O1xuICBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lXG47O1xuXG4oKiBXZSBkb24ndCBzZXQgW25vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcF0gaGVyZSwgYnV0IHJhdGhlciBhZnRlciBjYWxsaW5nIFt1bmxpbmtdLiAqKVxuXG5sZXQgYWRkICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1ZyAmJiAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHx8IG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgYXR0ZW1wdCB0byBhZGQgbm9kZSB0byByZWNvbXB1dGUgaGVhcFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gIGlmIGhlaWdodCA8IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsaW5rIHQgbm9kZTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcmVtb3ZlICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1ZyAmJiAoKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSkgfHwgTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImluY29ycmVjdCBbcmVtb3ZlXSBvZiBub2RlIGZyb20gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIHVubGluayB0IG5vZGU7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBpbmNyZWFzZV9oZWlnaHQgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPiBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gICAgYXNzZXJ0IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgdW5saW5rIHQgbm9kZTtcbiAgbGluayB0IG5vZGVcbjs7XG5cbmxldCBtaW5faGVpZ2h0IHQgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodFxuICBlbHNlIChcbiAgICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgZG9cbiAgICAgIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIHQuaGVpZ2h0X2xvd2VyX2JvdW5kICsgMVxuICAgIGRvbmUpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZFxuOztcblxubGV0IHJlbW92ZV9taW4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCBub2Rlc19ieV9oZWlnaHQgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICBsZXQgbm9kZSA9IHJlZiAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKSBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgIW5vZGUgZG9cbiAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDE7XG4gICAgaWYgZGVidWcgJiYgdC5oZWlnaHRfbG93ZXJfYm91bmQgPj0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gdW5leHBlY3RlZGx5IHJlYWNoZWQgZW5kIG9mIGhlYXBcIlxuICAgICAgICB0XG4gICAgICAgIFslc2V4cF9vZjogdF07XG4gICAgbm9kZSA6PSBVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmRcbiAgZG9uZTtcbiAgbGV0IChUIG5vZGUpID0gVW9wdC51bnNhZmVfdmFsdWUgIW5vZGUgaW5cbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5ub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjpVb3B0Lm5vbmU7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZTtcbiAgVCBub2RlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbm1vZHVsZSBBc19hZGp1c3RfaGVpZ2h0c19saXN0ID0gTm9kZS5QYWNrZWQuQXNfbGlzdCAoc3RydWN0XG4gICAgbGV0IG5leHQgKE5vZGUuUGFja2VkLlQgbm9kZSkgPSBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfYWRqdXN0X2hlaWdodHNfbGlzdC50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGhlaWdodCBub2RlcyAtPlxuICAgICAgICBBc19hZGp1c3RfaGVpZ2h0c19saXN0LmludmFyaWFudCBub2RlcztcbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pdGVyIG5vZGVzIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPiBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKTtcbiAgICAgICAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGVcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApKSkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdCB+ZjooZnVuIG5vZGUgLT4gciA6PSAhciArIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QubGVuZ3RoIG5vZGUpO1xuICAgICFyXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWRqdXN0X2hlaWdodHNfaGVhcC50ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoID0gTm9kZXNfYnlfaGVpZ2h0Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCkpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWF4X2hlaWdodF9zZWVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaGVpZ2h0X3NlZW4gLT5cbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuIDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OihjaGVjayBOb2Rlc19ieV9oZWlnaHQuaW52YXJpYW50KSlcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBtYXhfaGVpZ2h0X3NlZW4gPSAwXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgbWF4X2hlaWdodF9hbGxvd2VkIDwgdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3Qgc2V0X21heF9oZWlnaHRfYWxsb3dlZCBsZXNzIHRoYW4gdGhlIG1heCBoZWlnaHQgYWxyZWFkeSBzZWVuXCJcbiAgICAgIChtYXhfaGVpZ2h0X2FsbG93ZWQsIGBtYXhfaGVpZ2h0X3NlZW4gdC5tYXhfaGVpZ2h0X3NlZW4pXG4gICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heF9oZWlnaHRfc2VlbiBvZiBpbnQgXV07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG47O1xuXG5sZXQgYWRkX3VubGVzc19tZW0gKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSAtMVxuICB0aGVuIChcbiAgICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgICAoKiBXZSBwcm9jZXNzIG5vZGVzIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgcHJlLWFkanVzdGVkIGhlaWdodCwgc28gaXQgaXMgYSBidWcgaWYgd2VcbiAgICAgICBldmVyIHRyeSB0byBhZGQgYSBub2RlIHRoYXQgd291bGQgdmlvbGF0ZSB0aGF0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPj0gdC5oZWlnaHRfbG93ZXJfYm91bmQpO1xuICAgICgqIFdoZW5ldmVyIHdlIHNldCBhIG5vZGUncyBoZWlnaHQsIHdlIHVzZSBbc2V0X2hlaWdodF0sIHdoaWNoIGVuZm9yY2VzIHRoaXMuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gICAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBoZWlnaHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICAgIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodDtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IChVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpKVxuOztcblxubGV0IHJlbW92ZV9taW5fZXhuIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgJiYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJBZGp1c3RfaGVpZ2h0c19oZWFwLnJlbW92ZV9taW4gb2YgZW1wdHkgaGVhcFwiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IHIgPSByZWYgdC5oZWlnaHRfbG93ZXJfYm91bmQgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCAhcikgZG9cbiAgICBpbmNyIHJcbiAgZG9uZTtcbiAgbGV0IGhlaWdodCA9ICFyIGluXG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGV0IChUIG5vZGUpID0gVW9wdC51bnNhZmVfdmFsdWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpIGluXG4gIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDtcbiAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG5cbmxldCBzZXRfaGVpZ2h0IHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgaWYgaGVpZ2h0ID4gdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlbiAoXG4gICAgdC5tYXhfaGVpZ2h0X3NlZW4gPC0gaGVpZ2h0O1xuICAgIGlmIGhlaWdodCA+IG1heF9oZWlnaHRfYWxsb3dlZCB0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJub2RlIHdpdGggdG9vIGxhcmdlIGhlaWdodFwiXG4gICAgICAgIChgSGVpZ2h0IGhlaWdodCwgYE1heCAobWF4X2hlaWdodF9hbGxvd2VkIHQpKVxuICAgICAgICBbJXNleHBfb2Y6IFsgYEhlaWdodCBvZiBpbnQgXSAqIFsgYE1heCBvZiBpbnQgXV0pO1xuICBub2RlLmhlaWdodCA8LSBoZWlnaHRcbjs7XG5cbmxldCBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgaWYgTm9kZS5zYW1lIHBhcmVudCBvcmlnaW5hbF9jaGlsZFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImFkZGluZyBlZGdlIG1hZGUgZ3JhcGggY3ljbGljXCJcbiAgICAgIChgY2hpbGQgb3JpZ2luYWxfY2hpbGQsIGBwYXJlbnQgb3JpZ2luYWxfcGFyZW50KVxuICAgICAgWyVzZXhwX29mOiBbIGBjaGlsZCBvZiBfIE5vZGUudCBdICogWyBgcGFyZW50IG9mIF8gTm9kZS50IF1dO1xuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuIChcbiAgICBhZGRfdW5sZXNzX21lbSB0IHBhcmVudDtcbiAgICAoKiBXZSBzZXQgW3BhcmVudC5oZWlnaHRdIGFmdGVyIGFkZGluZyBbcGFyZW50XSB0byB0aGUgaGVhcCwgc28gdGhhdCBbcGFyZW50XSBnb2VzXG4gICAgICAgaW4gdGhlIGhlYXAgd2l0aCBpdHMgcHJlLWFkanVzdGVkIGhlaWdodC4gKilcbiAgICBzZXRfaGVpZ2h0IHQgcGFyZW50IChjaGlsZC5oZWlnaHQgKyAxKSlcbjs7XG5cbmxldCBhZGp1c3RfaGVpZ2h0c1xuICAgICAgKHR5cGUgYSBiKVxuICAgICAgdFxuICAgICAgcmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZDoob3JpZ2luYWxfY2hpbGQgOiBhIE5vZGUudClcbiAgICAgIH5wYXJlbnQ6KG9yaWdpbmFsX3BhcmVudCA6IGIgTm9kZS50KVxuICA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA+PSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gb3JpZ2luYWxfcGFyZW50LmhlaWdodDtcbiAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgIHRcbiAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgfmNoaWxkOm9yaWdpbmFsX2NoaWxkXG4gICAgfnBhcmVudDpvcmlnaW5hbF9wYXJlbnQ7XG4gIHdoaWxlIGxlbmd0aCB0ID4gMCBkb1xuICAgIGxldCAoVCBjaGlsZCkgPSByZW1vdmVfbWluX2V4biB0IGluXG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBjaGlsZFxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuaW5jcmVhc2VfaGVpZ2h0IHJlY29tcHV0ZV9oZWFwIGNoaWxkO1xuICAgIGlmIGNoaWxkLm51bV9wYXJlbnRzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBjaGlsZC5wYXJlbnQwIGluXG4gICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ7XG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBjaGlsZC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnRcbiAgICAgIGRvbmUpO1xuICAgIG1hdGNoIGNoaWxkLmtpbmQgd2l0aFxuICAgIHwgQmluZF9saHNfY2hhbmdlIHsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOyBfIH0gLT5cbiAgICAgIGxldCByID0gcmVmIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgICAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlX29uX3Joc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgICAgICAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgICAgICAgICB+Y2hpbGRcbiAgICAgICAgICAgIH5wYXJlbnQ6bm9kZV9vbl9yaHNcbiAgICAgIGRvbmVcbiAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0IDwgb3JpZ2luYWxfcGFyZW50LmhlaWdodClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLkFjdGlvbi50ID1cbiAgICB8IEF0IG9mIEF0LnRcbiAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gICAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IEF0X2ludGVydmFscy5pbnZhcmlhbnQgYXRfaW50ZXJ2YWxzXG4gICAgfCBTbmFwc2hvdCBzbmFwc2hvdCAtPiBTbmFwc2hvdC5pbnZhcmlhbnQgaWdub3JlIHNuYXBzaG90XG4gICAgfCBTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSAtPlxuICAgICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpZ25vcmUgc3RlcF9mdW5jdGlvbl9ub2RlXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUudCA9XG4gIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgOyAoKiBbbmV4dF9maXJlZF0gc2luZ2x5IGxpbmtzIGFsbCBhbGFybSB2YWx1ZXMgdGhhdCBmaXJlIGR1cmluZyBhIHNpbmdsZSBjYWxsIHRvXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgIG11dGFibGUgbmV4dF9maXJlZCA6ICh0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyIH5hY3Rpb246KGNoZWNrIEFjdGlvbi5pbnZhcmlhbnQpIH5uZXh0X2ZpcmVkOmlnbm9yZSlcbjs7XG5cbmxldCBjcmVhdGUgYWN0aW9uID0geyBhY3Rpb247IG5leHRfZmlyZWQgPSBVb3B0Lm5vbmUgfVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbmZpZ19pbnRmXG5cbm1vZHVsZSBEZWZhdWx0ICgpID0gc3RydWN0XG4gIGxldCBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzID0gdHJ1ZVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlclxuXG5tb2R1bGUgUGFja2VkXyA9IHN0cnVjdFxuICBpbmNsdWRlIFR5cGVzLkludGVybmFsX29ic2VydmVyLlBhY2tlZFxuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgfD4gWyVzZXhwX29mOiBfIFR5cGVzLk5vZGUudF1cbiAgOztcblxuICBsZXQgcHJldl9pbl9hbGwgKFQgdCkgPSB0LnByZXZfaW5fYWxsXG4gIGxldCBuZXh0X2luX2FsbCAoVCB0KSA9IHQubmV4dF9pbl9hbGxcbiAgbGV0IHNldF9wcmV2X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5wcmV2X2luX2FsbCA8LSB0MlxuICBsZXQgc2V0X25leHRfaW5fYWxsIChUIHQxKSB0MiA9IHQxLm5leHRfaW5fYWxsIDwtIHQyXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkludGVybmFsX29ic2VydmVyLlN0YXRlLnQgPVxuICAgIHwgQ3JlYXRlZFxuICAgIHwgSW5fdXNlXG4gICAgfCBEaXNhbGxvd2VkXG4gICAgfCBVbmxpbmtlZFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkludGVybmFsX29ic2VydmVyLnQgPVxuICB7ICgqIFN0YXRlIHRyYW5zaXRpb25zOlxuXG4gICAgICAge3ZcbiAgICAgICAgIENyZWF0ZWQgLS0+IEluX3VzZSAtLT4gRGlzYWxsb3dlZCAtLT4gVW5saW5rZWRcbiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgIFxcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS9cbiAgICAgICB2fSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fYWxsXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIGluIFtzdGF0ZS5hbGxfb2JzZXJ2ZXJzXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgKCogW3twcmV2LG5leHR9X2luX29ic2VydmluZ10gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBvZiBbb2JzZXJ2aW5nXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0Lm9ic2VydmluZy5zdGF0ZVxuXG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT4gdHJ1ZVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBmYWxzZVxuOztcblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5sZXQgc2FtZV9hc19wYWNrZWQgKHQxIDogXyB0KSAoUGFja2VkXy5UIHQyKSA9IHNhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfm9ic2VydmluZzooY2hlY2sgKE5vZGUuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIG9uX3VwZGF0ZV9oYW5kbGVycyAtPlxuICAgICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICB8IFVubGlua2VkIC0+IGFzc2VydCAoTGlzdC5pc19lbXB0eSBvbl91cGRhdGVfaGFuZGxlcnMpKSlcbiAgICAgIH5wcmV2X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5uZXh0X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9hbGwpKSkpKSlcbiAgICAgIH5uZXh0X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5wcmV2X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9hbGwpKSkpKSlcbiAgICAgIH5wcmV2X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuXG4gICAgICAgICAgICAgICAgICAgIChuZXh0X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9vYnNlcnZpbmcpKSkpKSlcbiAgICAgIH5uZXh0X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuXG4gICAgICAgICAgICAgICAgICAgIChwcmV2X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9vYnNlcnZpbmcpKSkpKSkpXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgd2l0aG91dCBzdGFiaWxpemluZ1wiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBhZnRlciBkaXNhbGxvd19mdXR1cmVfdXNlXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IEluX3VzZSAtPlxuICAgIGxldCB1b3B0ID0gdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgIFVvcHQudW5zYWZlX3ZhbHVlIHVvcHRcbjs7XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIm9uX3VwZGF0ZSBkaXNhbGxvd2VkXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+XG4gICAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gb25fdXBkYXRlX2hhbmRsZXIgOjogdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBDcmVhdGVkIC0+XG4gICAgICAgKCogV2UnbGwgYnVtcCBbb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdoZW4gW3RdIGlzIGFjdHVhbGx5IGFkZGVkIHRvXG4gICAgICAgICAgW29ic2VydmluZy5vYnNlcnZlcnNdIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICgpXG4gICAgIHwgSW5fdXNlIC0+XG4gICAgICAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgKyAxKVxuOztcblxubGV0IHVubGlua19mcm9tX29ic2VydmluZyB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fb2JzZXJ2aW5nIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX29ic2VydmluZyBpblxuICB0LnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG5leHQ7XG4gIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICBpZiBwaHlzX2VxdWFsIHQgKFVvcHQudmFsdWVfZXhuIG9ic2VydmluZy5vYnNlcnZlcnMpIHRoZW4gb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBuZXh0O1xuICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyAtIExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuOztcblxubGV0IHVubGlua19mcm9tX2FsbCB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fYWxsIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX2FsbCBpblxuICB0LnByZXZfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gUGFja2VkXy5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gUGFja2VkXy5zZXRfbmV4dF9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpIG5leHRcbjs7XG5cbmxldCB1bmxpbmsgdCA9XG4gIHVubGlua19mcm9tX29ic2VydmluZyB0O1xuICB1bmxpbmtfZnJvbV9hbGwgdFxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhY2tlZF9cblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIgfD4gWyVzZXhwX29mOiBfIGludGVybmFsX29ic2VydmVyXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW52YXJpYW50IGludmFyaWFudF9hICF0XG5sZXQgb2JzZXJ2aW5nIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgIXRcbmxldCB1c2VfaXNfYWxsb3dlZCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudXNlX2lzX2FsbG93ZWQgIXRcbmxldCB2YWx1ZV9leG4gdCA9IEludGVybmFsX29ic2VydmVyLnZhbHVlX2V4biAhdFxubGV0IGluY3Jfc3RhdGUgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgIXRcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIEludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9leG4gIXQgb25fdXBkYXRlX2hhbmRsZXJcbjs7XG4iLCIoKiBbU3RhdGVdIGRlZmluZXMgdGhlIGdsb2JhbCBzdGF0ZSBvZiB3aGljaCB0aGVyZSBpcyBvbmUgaW5zdGFuY2UgZm9yIGVhY2ggY2FsbCB0b1xuICAgW0luY3JlbWVudGFsLk1ha2VdLlxuXG4gICBUaGlzIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGFuIG1saSBiZWNhdXNlIGl0IHdvdWxkIGVzc2VudGlhbGx5IGR1cGxpY2F0ZVxuICAgW0luY3JlbWVudGFsLlNdLCBleGNlcHQgYWRkaW5nIGFuIGV4dHJhIFtTdGF0ZS50XSBhcmd1bWVudCB0byBmdW5jdGlvbnMuICopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG50eXBlIHN0YXR1cyA9IFR5cGVzLlN0YXR1cy50ID1cbiAgfCBTdGFiaWxpemluZ1xuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gIHwgTm90X3N0YWJpbGl6aW5nXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIE5vZGVfdXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxubW9kdWxlIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50ID0gVCA6ICdhIE5vZGUudCAqICdhIE5vZGVfdXBkYXRlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgKFQgKG5vZGUsIF9ub2RlX3VwZGF0ZSkgYXMgdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25seV9pbl9kZWJ1ZyA9IHN0cnVjdFxuICAoKiBFeHRyYSBzdGF0ZSBrZXB0IG9ubHkgd2hlbiBbZGVidWddIGZvciB0aGUgcHVycG9zZSBvZiB3cml0aW5nIGFzc2VydGlvbnMuICopXG4gIHR5cGUgdCA9IFR5cGVzLk9ubHlfaW5fZGVidWcudCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmN1cnJlbnRseV9ydW5uaW5nX25vZGU6aWdub3JlXG4gICAgICAgIH5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU6aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA9IE5vbmU7IGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA9IFtdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFja2VkX3dlYWtfaGFzaHRibCA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5QYWNrZWRfd2Vha19oYXNodGJsLnQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5TdGF0ZS50ID1cbiAgeyBtdXRhYmxlIHN0YXR1cyA6IHN0YXR1c1xuICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gIDsgKCogW3N0YWJpbGl6YXRpb25fbnVtXSBzdGFydHMgYXQgemVybywgYW5kIGlzIGluY3JlbWVudGVkIGF0IHRoZSBlbmQgb2YgZWFjaFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICA7ICgqIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gaG9sZHMgbm9kZXMgdGhhdCBoYXZlIGludmFsaWQgY2hpbGRyZW4gdGhhdCBzaG91bGQgYmVcbiAgICAgICBjb25zaWRlcmVkIGZvciBpbnZhbGlkYXRpb24uICBJdCBpcyBvbmx5IHVzZWQgZHVyaW5nIGdyYXBoIHJlc3RydWN0dXJpbmc6XG4gICAgICAgW2ludmFsaWRhdGVfbm9kZV0gYW5kIFthZGRfcGFyZW50XS4gIE9uY2UgYW4gZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RhY2ssIHdlIHRoZW5cbiAgICAgICBpdGVyYXRlIHVudGlsIGludmFsaWRpdHkgaGFzIHByb3BhZ2F0ZWQgdG8gYWxsIGFuY2VzdG9ycyBhcyBuZWNlc3NhcnksIGFjY29yZGluZyB0b1xuICAgICAgIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0uICopXG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbbnVtX2FjdGl2ZV9vYnNlcnZlcnNdIGlzIHRoZSBudW1iZXIgb2Ygb2JzZXJ2ZXJzIHdob3NlIHN0YXRlIGlzIFtDcmVhdGVkXSBvclxuICAgICAgIFtJbl91c2VdLiAqKVxuICAgIG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgOyAoKiBbYWxsX29ic2VydmVyc10gaXMgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBhbGwgb2JzZXJ2ZXJzIGluIGVmZmVjdCwgb3IgdGhhdCBoYXZlXG4gICAgICAgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZVxuICAgICAgIFtzdGF0ZV0gYXMgW0luX3VzZV0gb3IgW0Rpc2FsbG93ZWRdLiAqKVxuICAgIG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICA7ICgqIFdlIGVucXVldWUgZmluYWxpemVkIG9ic2VydmVycyBpbiBhIHRocmVhZC1zYWZlIHF1ZXVlLCBmb3IgaGFuZGxpbmcgZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbi4gIFdlIHVzZSBhIHRocmVhZC1zYWZlIHF1ZXVlIGJlY2F1c2UgT0NhbWwgZmluYWxpemVycyBjYW4gcnVuIGluIGFueVxuICAgICAgIHRocmVhZC4gKilcbiAgICBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7ICgqIFtuZXdfb2JzZXJ2ZXJzXSBob2xkcyBvYnNlcnZlcnMgY3JlYXRlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYVxuICAgICAgIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGVdIGFzIFtDcmVhdGVkXSBvciBbVW5saW5rZWRdLiAgQXQgdGhlIHN0YXJ0IG9mXG4gICAgICAgc3RhYmlsaXphdGlvbiwgd2UgbGluayBpbnRvIFthbGxfb2JzZXJ2ZXJzXSBhbGwgb2JzZXJ2ZXJzIGluIFtuZXdfb2JzZXJ2ZXJzXSB3aG9zZVxuICAgICAgIHN0YXRlIGlzIFtDcmVhdGVkXSBhbmQgYWRkIHRoZW0gdG8gdGhlIFtvYnNlcnZlcnNdIG9mIHRoZSBub2RlIHRoZXkgYXJlIG9ic2VydmluZy5cbiAgICAgICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IG9ic2VydmVycyB0byBiZSBjcmVhdGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXG4gICAgICAgd2hpbGUgcnVubmluZyB1c2VyIGNvZGUgKFttYXBdLCBbYmluZF0sIGV0YyksIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGggbm9kZXNcbiAgICAgICBiZWNvbWluZyBuZWNlc3NhcnkgYW5kIHRoZSB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtkaXNhbGxvd2VkX29ic2VydmVyc10gaG9sZHMgYWxsIG9ic2VydmVycyB0aGF0IGhhdmUgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZSA9IERpc2FsbG93ZWRdLiAgQXQgdGhlIHN0YXJ0XG4gICAgICAgb2Ygc3RhYmlsaXphdGlvbiwgdGhlc2UgYXJlIHVubGlua2VkIGZyb20gW2FsbF9vYnNlcnZlcnNdIGFuZCB0aGVpciBzdGF0ZSBpc1xuICAgICAgIGNoYW5nZWQgdG8gW1VubGlua2VkXS4gIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgdXNlciBjb2RlIHJ1bm5pbmdcbiAgICAgICBkdXJpbmcgc3RhYmlsaXphdGlvbiB0byBjYWxsIFtkaXNhbGxvd19mdXR1cmVfdXNlXSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aFxuICAgICAgIG5vZGVzIGJlY29taW5nIHVubmVjZXNzYXJ5IGFuZCB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBXZSBkZWxheSBhbGwgW1Zhci5zZXRdIGNhbGxzIHRoYXQgaGFwcGVuIGR1cmluZyBzdGFiaWxpemF0aW9uIHNvIHRoYXQgdGhleSB0YWtlXG4gICAgICAgZWZmZWN0IGFmdGVyIHN0YWJpbGl6YXRpb24uICBBbGwgdmFyaWFibGVzIHNldCBkdXJpbmcgc3RhYmlsaXphdGlvbiBhcmUgcHVzaGVkIG9uXG4gICAgICAgW3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gcmF0aGVyIHRoYW4gc2V0dGluZyB0aGVtLiAgVGhlbiwgYWZ0ZXIgdGhlIGdyYXBoIGhhc1xuICAgICAgIHN0YWJpbGl6ZWQsIHdlIGRvIGFsbCB0aGUgc2V0cywgc28gdGhhdCB0aGV5IHRha2UgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGhhcyBhbGwgbm9kZXMgd2l0aCBoYW5kbGVycyB0byBjb25zaWRlciBydW5uaW5nIGF0IHRoZVxuICAgICAgIGVuZCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAgQXQgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCB3ZSBjb25zaWRlciBlYWNoIG5vZGVcbiAgICAgICBpbiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCBhbmQgaWYgd2UgZGVjaWRlIHRvIHJ1biBpdHMgb24tdXBkYXRlIGhhbmRsZXJzLFxuICAgICAgIHB1c2ggaXQgb24gW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAgVGhlbiwgb25jZSB3ZSd2ZSBjb25zaWRlcmVkIGFsbCBub2RlcyBpblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIHdlIGl0ZXJhdGUgdGhyb3VnaCBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10gYW5kXG4gICAgICAgYWN0dWFsbHkgcnVuIHRoZSBoYW5kbGVycy5cblxuICAgICAgIFRoZXNlIHR3byBwYXNzZXMgYXJlIGVzc2VudGlhbCBmb3IgY29ycmVjdG5lc3MuICBEdXJpbmcgdGhlIGZpcnN0IHBhc3MsIHdlIGhhdmVuJ3RcbiAgICAgICBydW4gYW55IHVzZXIgaGFuZGxlcnMsIHNvIHdlIGtub3cgdGhhdCB0aGUgc3RhdGUgaXMgZXhhY3RseSBhcyBpdCB3YXMgd2hlblxuICAgICAgIHN0YWJpbGl6YXRpb24gZmluaXNoZWQuICBJbiBwYXJ0aWN1bGFyLCB3ZSBrbm93IHRoYXQgaWYgYSBub2RlIGlzIG5lY2Vzc2FyeSwgdGhlblxuICAgICAgIGl0IGhhcyBhIHN0YWJsZSB2YWx1ZTsgb25jZSB1c2VyIGhhbmRsZXJzIHJ1biwgd2UgZG9uJ3Qga25vdyB0aGlzLiAgRHVyaW5nIHRoZVxuICAgICAgIHNlY29uZCBwYXNzLCB1c2VyIGhhbmRsZXJzIGNhbiBtYWtlIGNhbGxzIHRvIGFueSBpbmNyZW1lbnRhbCBmdW5jdGlvbiBleGNlcHQgZm9yXG4gICAgICAgW3N0YWJpbGl6ZV0uICBJbiBwYXJ0aWN1bGFyLCBzb21lIGZ1bmN0aW9ucyBwdXNoIG5vZGVzIG9uXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gIEJ1dCBubyBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IgW3N0YWJpbGl6ZV0pIG1vZGlmeVxuICAgICAgIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gKilcbiAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgOyAoKiBTdGF0cy4gIFRoZXNlIGFyZSBhbGwgaW5jcmVtZW50ZWQgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlLCBhbmQgbmV2ZXIgZGVjcmVtZW50ZWQuICopXG4gICAgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ2xvY2sudCA9XG4gICAgeyAoKiBXZSB1c2UgW3RpbWluZ193aGVlbF0gZm9yIHRpbWUtYmFzZWQgaW5jcmVtZW50YWxzLiAgW25vd10gaXMgYSB2YXJpYWJsZSBob2xkaW5nXG4gICAgICAgICB0aGUgY3VycmVudCB0aW1lLiAgW2hhbmRsZV9maXJlZF0gaXMgdGhlIGNsb3N1cmUgcGFzc2VkIHRvXG4gICAgICAgICBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAgSXQgbGlua3MgYWxsIHRoZSBmaXJlZCBhbGFybSB2YWx1ZXMgaW50b1xuICAgICAgICAgW2ZpcmVkX2FsYXJtX3ZhbHVlc10uICBBZnRlciBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdIHJldHVybnMsIGl0IHRoZW5cbiAgICAgICAgIHdhbGtzIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0IGFuZCBhY3R1YWxseSBmaXJlcyB0aGVtLiAgVGhpcyB0d28tcGFzcyBhcHByb2FjaCBpc1xuICAgICAgICAgbmVjZXNzYXJ5IGJlY2F1c2Ugb25lIGlzIG5vdCBhbGxvd2VkIHRvIGNhbGwgW1RpbWluZ193aGVlbF0gZnVuY3Rpb25zIGZyb20gdGhlXG4gICAgICAgICBbaGFuZGxlX2ZpcmVkXSB0aGF0IG9uZSBwYXNzZXMgdG8gW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfm5vdzpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAobm93IDogXyBWYXIudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuZXF1YWwgbm93LnZhbHVlIChUaW1pbmdfd2hlZWwubm93IHQudGltaW5nX3doZWVsKSkpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+ZmlyZWRfYWxhcm1fdmFsdWVzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcmVkX2FsYXJtX3ZhbHVlcyAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBmaXJlZF9hbGFybV92YWx1ZXMpKSlcbiAgICAgICAgfnRpbWluZ193aGVlbDooY2hlY2sgKFRpbWluZ193aGVlbC5pbnZhcmlhbnQgQWxhcm1fdmFsdWUuaW52YXJpYW50KSkpXG4gIDs7XG5cbiAgbGV0IGluY3Jfc3RhdGUgdCA9IFZhci5pbmNyX3N0YXRlIHQubm93XG5lbmRcblxubGV0IG5vdyAoY2xvY2sgOiBDbG9jay50KSA9IGNsb2NrLm5vdy52YWx1ZVxubGV0IHRpbWluZ193aGVlbF9sZW5ndGggKGNsb2NrIDogQ2xvY2sudCkgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIGNsb2NrLnRpbWluZ193aGVlbFxubGV0IG51bV9zdGFiaWxpemVzIHQgPSBTdGFiaWxpemF0aW9uX251bS50b19pbnQgdC5zdGFiaWxpemF0aW9uX251bVxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5sZXQgbWF4X2hlaWdodF9zZWVuIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXBcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPVxuICBsZXQgciA9IHJlZiB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IEludGVybmFsX29ic2VydmVyLlBhY2tlZC5uZXh0X2luX2FsbCBvYnNlcnZlcjtcbiAgICBmIG9ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBkaXJlY3RseV9vYnNlcnZlZCB0ID1cbiAgbGV0IHIgOiBOb2RlLlBhY2tlZC50IGxpc3QgcmVmID0gcmVmIFtdIGluXG4gIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICByIDo9IFQgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIDo6ICFyKTtcbiAgIXJcbjs7XG5cbmxldCBzYXZlX2RvdCB0IG91dCA9IE5vZGUuUGFja2VkLnNhdmVfZG90IG91dCAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBzYXZlX2RvdF90b19maWxlIHQgZmlsZSA9IE5vZGUuUGFja2VkLnNhdmVfZG90X3RvX2ZpbGUgZmlsZSAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmYgPSBOb2RlLlBhY2tlZC5pdGVyX2Rlc2NlbmRhbnRzIChkaXJlY3RseV9vYnNlcnZlZCB0KSB+ZlxuXG5tb2R1bGUgU3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1heF9udW1fcGFyZW50cyA6IGludFxuICAgIDsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA6IChpbnQgKiBQZXJjZW50LnQpIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubGV0IHN0YXRzIHQgPVxuICBsZXQgbWF4X251bV9wYXJlbnRzID0gcmVmICgtMSkgaW5cbiAgbGV0IG51bV9uZWNlc3Nhcnlfbm9kZXMgPSByZWYgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGluY3IgbnVtX25lY2Vzc2FyeV9ub2RlcztcbiAgICBtYXhfbnVtX3BhcmVudHMgOj0gSW50Lm1heCAhbWF4X251bV9wYXJlbnRzIG5vZGUubnVtX3BhcmVudHMpO1xuICBsZXQgbWF4X251bV9wYXJlbnRzID0gIW1heF9udW1fcGFyZW50cyBpblxuICBsZXQgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzID0gQXJyYXkuY3JlYXRlIH5sZW46KG1heF9udW1fcGFyZW50cyArIDEpIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBsZXQgbnVtX3BhcmVudHMgPSBub2RlLm51bV9wYXJlbnRzIGluXG4gICAgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgPC0gbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgKyAxKTtcbiAgbGV0IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgPVxuICAgIEFycmF5LmZvbGRpIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyB+aW5pdDpbXSB+ZjooZnVuIGkgYWMgbnVtX25vZGVzIC0+XG4gICAgICBpZiBudW1fbm9kZXMgPSAwXG4gICAgICB0aGVuIGFjXG4gICAgICBlbHNlIChpLCBQZXJjZW50Lm9mX211bHQgKGZsb2F0IG51bV9ub2RlcyAvLiBmbG9hdCAhbnVtX25lY2Vzc2FyeV9ub2RlcykpIDo6IGFjKVxuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIHsgU3RhdHMubWF4X251bV9wYXJlbnRzOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIH1cbjs7XG5cbmxldCBhbV9zdGFiaWxpemluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXppbmcgLT4gdHJ1ZVxuICB8IE5vdF9zdGFiaWxpemluZyAtPiBmYWxzZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBjYWxsIGFtX3N0YWJpbGl6aW5nIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBbJXNleHBfb2Y6IFJhaXNlZF9leG4udF1cbjs7XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiAoKVxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXppbmcgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgICAgICAobWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPlxuICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgXCJtZW1iZXIgb2YgYWxsX29ic2VydmVycyB3aXRoIHVuZXhwZWN0ZWQgc3RhdGVcIlxuICAgICAgICAgICAgIGludGVybmFsX29ic2VydmVyXG4gICAgICAgICAgICAgWyVzZXhwX29mOiBfIEludGVybmFsX29ic2VydmVyLnRdKTtcbiAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuaW52YXJpYW50IGlnbm9yZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZTtcbiAgICAgICAgaWYgbm90IChhbV9zdGFiaWxpemluZyB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUub2xkX3ZhbHVlX29wdCk7XG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgbm9kZS5oZWlnaHQgPD0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X3NlZW4gdC5hZGp1c3RfaGVpZ2h0c19oZWFwKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgICAgPSBSZWNvbXB1dGVfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5yZWNvbXB1dGVfaGVhcCk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+c3RhdHVzOmlnbm9yZVxuICAgICAgICB+YmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JoczppZ25vcmVcbiAgICAgICAgfnN0YWJpbGl6YXRpb25fbnVtOihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICAgIH5jdXJyZW50X3Njb3BlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGN1cnJlbnRfc2NvcGUgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIGN1cnJlbnRfc2NvcGUgU2NvcGUudG9wKSkpXG4gICAgICAgIH5yZWNvbXB1dGVfaGVhcDooY2hlY2sgUmVjb21wdXRlX2hlYXAuaW52YXJpYW50KVxuICAgICAgICB+YWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBhZGp1c3RfaGVpZ2h0c19oZWFwIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChBZGp1c3RfaGVpZ2h0c19oZWFwLmxlbmd0aCBhZGp1c3RfaGVpZ2h0c19oZWFwID0gMCk7XG4gICAgICAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5pbnZhcmlhbnQgYWRqdXN0X2hlaWdodHNfaGVhcCkpXG4gICAgICAgIH5wcm9wYWdhdGVfaW52YWxpZGl0eTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBwcm9wYWdhdGVfaW52YWxpZGl0eSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoU3RhY2suaXNfZW1wdHkgcHJvcGFnYXRlX2ludmFsaWRpdHkpKSlcbiAgICAgICAgfm51bV9hY3RpdmVfb2JzZXJ2ZXJzOlxuICAgICAgICAgIChjaGVjayAoZnVuIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0+IGFzc2VydCAobnVtX2FjdGl2ZV9vYnNlcnZlcnMgPj0gMCkpKVxuICAgICAgICB+YWxsX29ic2VydmVyczppZ25vcmVcbiAgICAgICAgfmZpbmFsaXplZF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5uZXdfb2JzZXJ2ZXJzOlxuICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgIChTdGFjay5pbnZhcmlhbnQgKGZ1biBwYWNrZWQgLT5cbiAgICAgICAgICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQuaW52YXJpYW50IHBhY2tlZDtcbiAgICAgICAgICAgICAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgICAgICAgICAgICAgKCogV2hlbiBhbiBvYnNlcnZlciBpcyBhZGRlZCB0byBbbmV3X29ic2VydmVyc10sIGl0IGhhcyBbc3RhdGUgPSBDcmVhdGVkXS5cbiAgICAgICAgICAgICAgICAgICBUaGUgb25seSBwb3NzaWJsZSB0cmFuc2l0aW9ucyBmcm9tIHRoZXJlIGFyZSB0byBbVW5saW5rZWRdIG9yIHRvXG4gICAgICAgICAgICAgICAgICAgW0luX3VzZV0sIHdoaWNoIGFsc28gcmVtb3ZlcyBpdCBmcm9tIFtuZXdfb2JzZXJ2ZXJzXSwgbmV2ZXIgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICAgICBhZ2Fpbi4gIFRodXMgaXQgaXMgaW1wb3NzaWJsZSBmb3IgYW4gb2JzZXJ2ZXIgaW4gW25ld19vYnNlcnZlcnNdIHRvIGJlXG4gICAgICAgICAgICAgICAgICAgW0luX3VzZV0gb3IgW0Rpc2FsbG93ZWRdLiAqKVxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiAoKVxuICAgICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfmRpc2FsbG93ZWRfb2JzZXJ2ZXJzOlxuICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgIChTdGFjay5pbnZhcmlhbnQgKGZ1biBwYWNrZWQgLT5cbiAgICAgICAgICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQuaW52YXJpYW50IHBhY2tlZDtcbiAgICAgICAgICAgICAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IEluX3VzZSB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgICB+c2V0X2R1cmluZ19zdGFiaWxpemF0aW9uOlxuICAgICAgICAgIChjaGVjayAoZnVuIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAtPlxuICAgICAgICAgICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoU3RhY2suaXNfZW1wdHkgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKVxuICAgICAgICAgICAgIHwgU3RhYmlsaXppbmcgLT5cbiAgICAgICAgICAgICAgIFN0YWNrLmludmFyaWFudFxuICAgICAgICAgICAgICAgICAoZnVuIChWYXIuUGFja2VkLlQgdmFyKSAtPlxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfc29tZSB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSlcbiAgICAgICAgICAgICAgICAgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSlcbiAgICAgICAgfmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOihjaGVjayAoU3RhY2suaW52YXJpYW50IE5vZGUuUGFja2VkLmludmFyaWFudCkpXG4gICAgICAgIH5ydW5fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAgIChjaGVjayAoU3RhY2suaW52YXJpYW50IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMuaW52YXJpYW50KSlcbiAgICAgICAgfm9ubHlfaW5fZGVidWc6KGNoZWNrIE9ubHlfaW5fZGVidWcuaW52YXJpYW50KVxuICAgICAgICB+d2Vha19oYXNodGJsczppZ25vcmVcbiAgICAgICAgfmtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2U6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY2hhbmdlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19jcmVhdGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2ludmFsaWRhdGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodDppZ25vcmVcbiAgICAgICAgfm51bV92YXJfc2V0czppZ25vcmUpXG47O1xuXG5sZXQgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBOb3Rfc3RhYmlsaXppbmcgLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyAtPlxuICAgIGlmIG5vdCBhbGxvd19pbl91cGRhdGVfaGFuZGxlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5nZXQgKCkgaW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIGR1cmluZyBvbi11cGRhdGUgaGFuZGxlcnNcIiBuYW1lKVxuICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgWyVzZXhwX29mOiBCYWNrdHJhY2UudF0pXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCIgbmFtZSlcbiAgICAgIChyYWlzZWRfZXhuLCBiYWNrdHJhY2UpXG4gICAgICBbJXNleHBfb2Y6IFJhaXNlZF9leG4udCAqIEJhY2t0cmFjZS50XVxuICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5nZXQgKCkgaW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIGR1cmluZyBzdGFiaWxpemF0aW9uXCIgbmFtZSlcbiAgICAgIGJhY2t0cmFjZVxuICAgICAgWyVzZXhwX29mOiBCYWNrdHJhY2UudF1cbjs7XG5cbmxldCBzZXRfaGVpZ2h0IChub2RlIDogXyBOb2RlLnQpIGhlaWdodCA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBBZGp1c3RfaGVpZ2h0c19oZWFwLnNldF9oZWlnaHQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwIG5vZGUgaGVpZ2h0XG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IGhlaWdodCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInNldF9tYXhfaGVpZ2h0X2FsbG93ZWRcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcCBoZWlnaHQ7XG4gIFJlY29tcHV0ZV9oZWFwLnNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdC5yZWNvbXB1dGVfaGVhcCBoZWlnaHRcbjs7XG5cbmxldCBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGlmIG5vdCBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXG4gIHRoZW4gKFxuICAgIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICAgIG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPC0gdHJ1ZTtcbiAgICBTdGFjay5wdXNoIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gKFQgbm9kZSkpXG47O1xuXG5sZXQgcmVjIHJlbW92ZV9jaGlsZHJlbiA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBwYXJlbnQgLT5cbiAgTm9kZS5pdGVyaV9jaGlsZHJlbiBwYXJlbnQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICByZW1vdmVfY2hpbGQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4KVxuXG5hbmQgcmVtb3ZlX2NoaWxkIDogdHlwZSBhIGIuIGNoaWxkOmIgTm9kZS50IC0+IHBhcmVudDphIE5vZGUudCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgTm9kZS5yZW1vdmVfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgY2hpbGRcblxuYW5kIGNoZWNrX2lmX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT4gaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKSB0aGVuIGJlY2FtZV91bm5lY2Vzc2FyeSBub2RlXG5cbmFuZCBiZWNhbWVfdW5uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgdC5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSArIDE7XG4gIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICBub2RlLmhlaWdodCA8LSAtMTtcbiAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+IFVub3JkZXJlZF9hcnJheV9mb2xkLmZvcmNlX2Z1bGxfY29tcHV0ZSB1XG4gICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTpmYWxzZVxuICAgfCBfIC0+ICgpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSk7XG4gIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLnJlbW92ZSB0LnJlY29tcHV0ZV9oZWFwIG5vZGVcbjs7XG5cbmxldCByZW1vdmVfYWxhcm0gKGNsb2NrIDogQ2xvY2sudCkgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuICB0aGVuIFRpbWluZ193aGVlbC5yZW1vdmUgY2xvY2sudGltaW5nX3doZWVsIGFsYXJtXG47O1xuXG4oKiBBbiBpbnZhbGlkIG5vZGUgaXMgbm9kZSB3aG9zZSBraW5kIGlzIFtJbnZhbGlkXS4gIEEgbm9kZSdzIGtpbmQgaXMgc2V0IHRvIFtJbnZhbGlkXVxuICAgd2hlbiB0aGUgbGhzIG9mIGl0cyBzY29wZSBjaGFuZ2VzLCBvciBvbmUgaWYgaXRzIGNoaWxkcmVuIHByb3BhZ2F0ZSB0aGUgaW52YWxpZGl0eVxuICAgdXB3YXJkIChzZWUgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXSB0byBzZWUgaW4gd2hpY2ggY2FzZSBpbnZhbGlkaXR5IHByb3BhZ2F0aW9uXG4gICBzdG9wcykuICBJbnZhbGlkYXRpbmcgYSBub2RlIGRpc2Nvbm5lY3RzIGl0IGZyb20gaXRzIGNoaWxkcmVuLCB3aGljaCBtZWFuczpcblxuICAgMS4gYW4gaW52YWxpZCBub2RlIGNhbm5vdCBlbmQgdXAgb24gdGhlIHNjaGVkdWxlciAoaWYgaXQgaXMgb24gdGhlIHNjaGVkdWxlciB3aGVuXG4gICBpdCBpcyBpbnZhbGlkYXRlZCwgaXQgaXMgcmVtb3ZlZClcbiAgIDIuIGFuIGludmFsaWQgbm9kZSBkb2Vzbid0IG1ha2UgaXRzIGNoaWxkcmVuIG5lY2Vzc2FyeSBhbnltb3JlLlxuXG4gICBJbnZhbGlkIG5vZGVzIHVzdWFsbHkgaGF2ZSBubyBwYXJlbnRzLCBiZWNhdXNlIHRoZSB1cHdhcmQgaW52YWxpZGl0eSBwcm9wYWdhdGlvbiBtZWFuc1xuICAgdGhhdCB0aGVpciBwYXJlbnRzIHdpbGwgdGhlbXNlbHZlcyBiZWNvbWUgaW52YWxpZCBhbmQgZGlzY29ubmVjdCBmcm9tIHRoZWlyIGNoaWxkcmVuLlxuICAgSG93ZXZlciwgW2lmXSwgW2pvaW5dIG9yIFtiaW5kXSBhcmUgbm90IGludmFsaWRhdGVkIGJ5IHRoZSB1cHdhcmQgcHJvcGFnYXRpb24sIHNvIGFuXG4gICBpbnZhbGlkIG5vZGUgY2FuIHN0aWxsIGhhdmUgcGFyZW50cy4gIEludmFsaWQgbm9kZXMgY2FuIGJlIG5lY2Vzc2FyeSwgaW4gdGhlIGNhc2Ugd2hlcmVcbiAgIHRoZXkgaGF2ZSBwYXJlbnRzLCBhbmQgYWxzbyB3aGVuIHRoZXkgYXJlIG9ic2VydmVkLlxuXG4gICBUaGUgdXB3YXJkIHByb3BhZ2F0aW9uIG9mIGludmFsaWRpdHkgaGFwcGVucyBib3RoIHdoZW4gYSBub2RlIGJlY29tZXMgaW52YWxpZCwgYW5kIHdoZW5cbiAgIHRyeWluZyB0byBhZGQgYW4gZWRnZSBmcm9tIGFuIGludmFsaWQgY2hpbGQgbm9kZSB0byBhbm90aGVyIG5vZGUuICBCZWNhdXNlIGludmFsaWRpdHlcbiAgIGlzIG9ubHkgcHJvcGFnYXRlZCB1cHdhcmQsIGFuZCBiZWNhdXNlIHRoZSByaHMgb2YgYSBiaW5kIGlzIGludmFsaWRhdGVkIGJlZm9yZSBpdFxuICAgZXhlY3V0ZXMsIGEgbm9kZSBjYW5ub3QgYmUgYm90aCBjb21wdXRlZCBhbmQgaW52YWxpZGF0ZWQgaW4gdGhlIHNhbWUgc3RhYmlsaXphdGlvbi5cblxuICAgV2hlbiBpbnZhbGlkYXRpbmcsIHdlIGNhbid0IGFzc3VtZSBtdWNoIGFib3V0IHRoZSBub2RlcyB3ZSB2aXNpdC4gIFdlIGNhbm5vdCBhc3N1bWVcbiAgIHRoYXQgbm9kZXMgYXJlIHZhbGlkICh0aGUgcmhzIGNhbiBjb250YWluIHByZXZpb3VzbHkgaW52YWxpZGF0ZWQgbm9kZXMpLCBvciB0aGF0IG5vZGVzXG4gICBhcmUgdW5uZWNlc3NhcnkgKG5vZGVzIGNhbiBiZSBtYWRlIG5lY2Vzc2FyeSB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlaXIgY29udGFpbmluZ1xuICAgYmluZHMpLiAqKVxuXG5sZXQgcmVjIGludmFsaWRhdGVfbm9kZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZVxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgICBub2RlLnZhbHVlX29wdCA8LSBVb3B0Lm5vbmU7XG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIHQubnVtX25vZGVzX2ludmFsaWRhdGVkIDwtIHQubnVtX25vZGVzX2ludmFsaWRhdGVkICsgMTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICgqIFRoZSBub2RlIGRvZXNuJ3QgaGF2ZSBjaGlsZHJlbiBhbnltb3JlLCBzbyB3ZSBjYW4gbG93ZXIgaXRzIGhlaWdodCBhcyBtdWNoIGFzXG4gICAgICAgICBwb3NzaWJsZSwgdG8gb25lIGdyZWF0ZXIgdGhhbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBBbHNvLCBiZWNhdXNlIHdlXG4gICAgICAgICBhcmUgbG93ZXJpbmcgdGhlIGhlaWdodCwgd2UgZG9uJ3QgbmVlZCB0byBhZGp1c3QgYW55IG9mIGl0cyBhbmNlc3RvcnMnIGhlaWdodHMuXG4gICAgICAgICBXZSBjb3VsZCBsZWF2ZSB0aGUgaGVpZ2h0IGFsb25lLCBidXQgd2UgbWF5IGFzIHdlbGwgbG93ZXIgaXQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUgdG8gYXZvaWQgbWFraW5nIHRoZSBoZWlnaHRzIG9mIGFueSBmdXR1cmUgYW5jZXN0b3JzIHVubmVjZXNzYXJpbHlcbiAgICAgICAgIGxhcmdlLiAqKVxuICAgICAgbm9kZS5oZWlnaHQgPC0gU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpO1xuICAgICgqIFdlIGRvbid0IHNldCBbbm9kZS5jcmVhdGVkX2luXSBvciBbbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZV07IHdlIGxlYXZlIFtub2RlXVxuICAgICAgIGluIHRoZSBzY29wZSBpdCB3YXMgY3JlYXRlZCBpbi4gIElmIHRoYXQgc2NvcGUgaXMgZXZlciBpbnZhbGlkYXRlZCwgdGhlbiB0aGF0XG4gICAgICAgd2lsbCBjbGVhciBbbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZV0gKilcbiAgICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICAgfCBBdCBhdCAtPiByZW1vdmVfYWxhcm0gYXQuY2xvY2sgYXQuYWxhcm1cbiAgICAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IHJlbW92ZV9hbGFybSBhdF9pbnRlcnZhbHMuY2xvY2sgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgIHwgQmluZF9tYWluIGJpbmQgLT4gaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICB8IFN0ZXBfZnVuY3Rpb24geyBhbGFybTsgY2xvY2s7IF8gfSAtPiByZW1vdmVfYWxhcm0gY2xvY2sgYWxhcm1cbiAgICAgfCBfIC0+ICgpKTtcbiAgICBOb2RlLnNldF9raW5kIG5vZGUgSW52YWxpZDtcbiAgICAoKiBJZiB3ZSBjYWxsZWQgW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSByaWdodCBhd2F5IG9uIHRoZSBwYXJlbnRzLCB3ZSB3b3VsZCBnZXQgaW50b1xuICAgICAgIHRyb3VibGUuICBUaGUgcGFyZW50IHdvdWxkIGRpc2Nvbm5lY3QgaXRzZWxmIGZyb20gdGhlIGN1cnJlbnQgbm9kZSwgdGh1c1xuICAgICAgIG1vZGlmeWluZyB0aGUgbGlzdCBvZiBwYXJlbnRzIHdlIGl0ZXJhdGUgb24uICBFdmVuIGlmIHdlIG1hZGUgYSBzcGVjaWFsIGNhc2UsIGl0XG4gICAgICAgc3RpbGwgd291bGRuJ3QgYmUgZW5vdWdoIHRvIGhhbmRsZSBvdGhlciBjYXNlcyB3aGVyZSB0aGUgbGlzdCBvZiBwYXJlbnRzIGlzXG4gICAgICAgbW9kaWZpZWQgKGUuZy4gd2hlbiBbbGhzXSBpcyBpbnZhbGlkYXRlZCBpbiB0aGUgZXhhbXBsZSBpbiB0aGUgY29tbWVudCBhYm91dFxuICAgICAgIFtjYW5fcmVjb21wdXRlX25vd10gZmFyIGJlbG93KS4gKilcbiAgICBmb3IgaW5kZXggPSAwIHRvIG5vZGUubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKE5vZGUuZ2V0X3BhcmVudCBub2RlIH5pbmRleClcbiAgICBkb25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLnJlbW92ZSB0LnJlY29tcHV0ZV9oZWFwIG5vZGUpXG5cbmFuZCBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIG5vZGUgPVxuICBsZXQgciA9IHJlZiBub2RlIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPC0gVW9wdC5ub25lO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlX29uX3Joc1xuICBkb25lXG47O1xuXG4oKiBXaGVuIFtub3QgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXSBhbmQgYSBiaW5kJ3MgbGhzIGNoYW5nZXMsIHdlIG1vdmVcbiAgIG5vZGVzIGNyZWF0ZWQgb24gdGhlIGJpbmQncyByaHMgdXAgdG8gaXRzIHBhcmVudCBiaW5kLCBhcyBvcHBvc2VkIHRvIFtTY29wZS5Ub3BdLiAgVGhpc1xuICAgbWFpbnRhaW5zIHRoZWlyIGRlcGVuZGVuY2Ugb24gdmFsaWQgYmluZCBsZWZ0LWhhbmQgc2lkZXMsIGFuZCBrZWVwcyB0aGVtIGhpZ2hlciBpbiB0aGVcbiAgIGdyYXBoLiAgVGhpcyBpbiB0dXJuIG1lYW5zIHRoYXQgd2Ugd2lsbCBjb250aW51ZSB0byBjb21wdXRlIHRob3NlIG5vZGVzIGFmdGVyIHRoZVxuICAgcGFyZW50IGJpbmQncyBsaHMsIHdoaWNoIGdpdmVzIHRoZW0gbW9yZSBvZiBhIGNoYW5jZSB0byBiZWNvbWUgdW5uZWNlc3NhcnkgYW5kIG5vdCBiZVxuICAgY29tcHV0ZWQgc2hvdWxkIHRoZSBwYXJlbnQgYmluZCdzIGxocyBjaGFuZ2UuICopXG5sZXQgcmVzY29wZV9ub2Rlc19jcmVhdGVkX29uX3JocyBfdCAoZmlyc3Rfbm9kZV9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudCkgfm5ld19zY29wZSA9XG4gIGxldCByID0gcmVmIGZpcnN0X25vZGVfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPC0gVW9wdC5ub25lO1xuICAgIG5vZGVfb25fcmhzLmNyZWF0ZWRfaW4gPC0gbmV3X3Njb3BlO1xuICAgIFNjb3BlLmFkZF9ub2RlIG5ld19zY29wZSBub2RlX29uX3Joc1xuICBkb25lXG47O1xuXG5sZXQgcHJvcGFnYXRlX2ludmFsaWRpdHkgdCA9XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5wcm9wYWdhdGVfaW52YWxpZGl0eSkgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgaW5cbiAgICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgICB0aGVuXG4gICAgICBpZiBOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZCBub2RlXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZSBub2RlXG4gICAgICBlbHNlIChcbiAgICAgICAgKCogW05vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZV0gaXMgdHJ1ZSBiZWNhdXNlXG4gICAgICAgICAgIC0gbm9kZSBpcyBuZWNlc3NhcnkuIFRoaXMgaXMgYmVjYXVzZSBjaGlsZHJlbiBjYW4gb25seSBwb2ludCB0byBuZWNlc3NhcnlcbiAgICAgICAgICAgICBwYXJlbnRzXG4gICAgICAgICAgIC0gbm9kZSBpcyBzdGFsZS4gVGhpcyBpcyBiZWNhdXNlOiBGb3IgYmluZCwgaWYsIGpvaW4sIHRoaXMgaXMgdHJ1ZSBiZWNhdXNlXG4gICAgICAgICAgIC0gZWl0aGVyIHRoZSBpbnZhbGlkYXRpb24gaXMgY2F1c2VkIGJ5IHRoZSBsaHMgY2hhbmdpbmcgKGluIHdoaWNoIGNhc2UgdGhlXG4gICAgICAgICAgICAgbGhzLWNoYW5nZSBub2RlIGJlaW5nIG5ld2VyIG1ha2VzIHVzIHN0YWxlKS5cbiAgICAgICAgICAgLSBvciBhIGNoaWxkIGJlY2FtZSBpbnZhbGlkIHRoaXMgc3RhYmlsaXphdGlvbiBjeWNsZSwgaW4gd2hpY2ggY2FzZSBpdCBoYXNcbiAgICAgICAgICAgICB0LmNoYW5nZWRfYXQgb2YgW3Quc3RhYmlsaXphdGlvbl9udW1dLCBhbmQgc28gW25vZGVdIGlzIHN0YWxlXG4gICAgICAgICAgIC0gb3IgW25vZGVdIGp1c3QgYmVjYW1lIG5lY2Vzc2FyeSBhbmQgdHJpZWQgY29ubmVjdGluZyB0byBhbiBhbHJlYWR5IGludmFsaWRcbiAgICAgICAgICAgICBjaGlsZC4gSW4gdGhhdCBjYXNlLCBbY2hpbGQuY2hhbmdlZF9hdCA+IG5vZGUucmVjb21wdXRlZF9hdF0gZm9yIHRoYXQgY2hpbGQsXG4gICAgICAgICAgICAgYmVjYXVzZSBpZiB3ZSBoYWQgYmVlbiByZWNvbXB1dGVkIHdoZW4gdGhhdCBjaGlsZCBjaGFuZ2VkLCB3ZSB3b3VsZCBoYXZlIGJlZW5cbiAgICAgICAgICAgICBtYWRlIGludmFsaWQgYmFjayB0aGVuLiAgRm9yIGV4cGVydCBub2RlcywgdGhlIGFyZ3VtZW50IGlzIHRoZSBzYW1lLCBleGNlcHRcbiAgICAgICAgICAgICB0aGF0IGluc3RlYWQgb2YgbGhzLWNoYW5nZSBub2RlcyBtYWtlIHRoZSBleHBlcnQgbm9kZXMgc3RhbGUsIGl0J3MgbWFkZSBzdGFsZVxuICAgICAgICAgICAgIGV4cGxpY2l0ZWx5IHdoZW4gYWRkaW5nIG9yIHJlbW92aW5nIGNoaWxkcmVuLiAqKVxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKTtcbiAgICAgICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgKCogSWYgbXVsdGlwbGUgY2hpbGRyZW4gYXJlIGludmFsaWQsIHRoZXkgd2lsbCBwdXNoIHVzIGFzIG1hbnkgdGltZXMgb24gdGhlXG4gICAgICAgICAgICAgIHByb3BhZ2F0aW9uIHN0YWNrLCBzbyB3ZSBjb3VudCB0aGVtIHJpZ2h0LiAqKVxuICAgICAgICAgICBFeHBlcnQuaW5jcl9pbnZhbGlkX2NoaWxkcmVuIGV4cGVydFxuICAgICAgICAgfCBraW5kIC0+XG4gICAgICAgICAgIGlmIGRlYnVnXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIHwgQmluZF9tYWluIF8gfCBJZl90aGVuX2Vsc2UgXyB8IEpvaW5fbWFpbiBfIC0+ICgpXG4gICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGFyZSBuZXZlciBwdXNoZWQgb24gdGhlIHN0YWNrICopKSk7XG4gICAgICAgICgqIFdlIGRvIG5vdCBjaGVjayBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBoZXJlLCBiZWNhdXNlIGl0IHNob3VsZCBiZVxuICAgICAgICAgICB0cnVlLCBhbmQgYmVjYXVzZSBjb21wdXRpbmcgaXQgdGFrZXMgTyhudW1iZXIgb2YgY2hpbGRyZW4pLCBub2RlIGNhbiBiZSBwdXNoZWRcbiAgICAgICAgICAgb24gdGhlIHN0YWNrIG9uY2UgcGVyIGNoaWxkLCBhbmQgZXhwZXJ0IG5vZGVzIGNhbiBoYXZlIGxvdHMgb2YgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIGRvbmVcbjs7XG5cbigqIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgdCB+Y2hpbGQgfnBhcmVudF0gYWRkcyBbcGFyZW50XSBhcyBhIHBhcmVudCBvZlxuICAgW2NoaWxkXSwgYW5kIG1ha2VzIFtjaGlsZF0gYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMgbmVjZXNzYXJ5LCBlbnN1cmluZyB0aGVpciBoZWlnaHRzXG4gICBhcmUgYWNjdXJhdGUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgYWJvdXQgdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgW2NoaWxkXSBhbmQgW3BhcmVudF1cbiAgIHRob3VnaC4gKilcbmxldCByZWMgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgTm9kZS50IC0+IHBhcmVudDpiIE5vZGUudCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCBpblxuICBOb2RlLmFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgY2hpbGQpIHRoZW4gU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChUIHBhcmVudCk7XG4gIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBjaGlsZDtcbiAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayBlIH5jaGlsZF9pbmRleFxuICB8IF8gLT4gKClcblxuYW5kIGJlY2FtZV9uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICAoKiBbU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbl0gaXMgdHJ1ZSAoYXNzdW1pbmcgdGhlIHNjb3BlIGl0c2VsZiBpcyB2YWxpZClcbiAgICAgYmVjYXVzZSBbTm9kZS5pdGVyX2NoaWxkcmVuXSBiZWxvdyBmaXJzdCB2aXNpdHMgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZCBub2RlcyBhbmRcbiAgICAgdGhlbiB0aGUgcmhzLiAqKVxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGUgJiYgbm90IChTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRyeWluZyB0byBtYWtlIGEgbm9kZSBuZWNlc3Nhcnkgd2hvc2UgZGVmaW5pbmcgYmluZCBpcyBub3QgbmVjZXNzYXJ5XCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICgqIFNpbmNlIFtub2RlXSBiZWNhbWUgbmVjZXNzYXJ5LCB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnQsIHdlIG5lZWQgdG86XG5cbiAgICAgLSBhZGQgcGFyZW50IHBvaW50ZXJzIHRvIFtub2RlXSBmcm9tIGl0cyBjaGlsZHJlbi5cbiAgICAgLSBzZXQgW25vZGVdJ3MgaGVpZ2h0LlxuICAgICAtIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLCBpZiBuZWNlc3NhcnkuICopXG4gIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpO1xuICBOb2RlLml0ZXJpX2NoaWxkcmVuIG5vZGUgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg7XG4gICAgKCogTm93IHRoYXQgY2hpbGQgaXMgbmVjZXNzYXJ5LCBpdCBzaG91bGQgaGF2ZSBhIHZhbGlkIGhlaWdodC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQuaGVpZ2h0ID49IDApO1xuICAgIGlmIGNoaWxkLmhlaWdodCA+PSBub2RlLmhlaWdodCB0aGVuIHNldF9oZWlnaHQgbm9kZSAoY2hpbGQuaGVpZ2h0ICsgMSkpO1xuICAoKiBOb3cgdGhhdCB0aGUgaGVpZ2h0IGlzIGNvcnJlY3QsIG1heWJlIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLiAgW25vZGVdXG4gICAgIGp1c3QgYmVjYW1lIG5lY2Vzc2FyeSwgc28gaXQgY2FuJ3QgaGF2ZSBiZWVuIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gIFNpbmNlIFtub2RlXVxuICAgICBpcyBuZWNlc3NhcnksIHdlIHNob3VsZCBhZGQgaXQgdG8gdGhlIHJlY29tcHV0ZSBoZWFwIGlmZiBpdCBpcyBzdGFsZS4gKilcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKTtcbiAgaWYgTm9kZS5pc19zdGFsZSBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6dHJ1ZVxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBiZWNhbWVfbmVjZXNzYXJ5IG5vZGUgPVxuICBiZWNhbWVfbmVjZXNzYXJ5IG5vZGU7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IG5vZGUuc3RhdGVcbjs7XG5cbmxldCBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IHBhcmVudC5zdGF0ZSBpblxuICAoKiBJbiB0aGUgY2FzZSB3aGVuIHRoZSBlZGdlIGJlaW5nIGFkZGVkIGNyZWF0ZXMgYSBjeWNsZSwgaXQgaXMgcG9zc2libGUgZm9yIHRoZVxuICAgICByZWN1cnNpb24gaW4gW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c10gdG8gcmVhY2ggW3BhcmVudF0gYXMgYSBkZXNjZW5kYW50XG4gICAgIG9mIFtjaGlsZF0uICBJbiB0aGF0IGNhc2UsIHRoZSByZWN1cnNpb24gdGVybWluYXRlcywgYmVjYXVzZSBbTm9kZS5pc19uZWNlc3NhcnlcbiAgICAgcGFyZW50XS4gIFdlIHRoZW4gcmV0dXJuIGhlcmUgYW5kIHN1YnNlcXVlbnRseSBkZXRlY3QgdGhlIGN5Y2xlIGluXG4gICAgIFthZGp1c3RfaGVpZ2h0c10uICopXG4gIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICgqIFdlIGFkanVzdCBoZWlnaHRzIHNvIHRoYXQgd2UgZW5zdXJlIHRoZXJlIGFyZSBubyBjeWNsZXMgYmVmb3JlIGNhbGxpbmdcbiAgICAgW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XS4gKilcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlblxuICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuYWRqdXN0X2hlaWdodHNcbiAgICAgIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkXG4gICAgICB+cGFyZW50O1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0O1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgKCogd2Ugb25seSBhZGQgbmVjZXNzYXJ5IHBhcmVudHMgKilcbiAgaWYgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKVxuICAmJiAoU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSBwYXJlbnQucmVjb21wdXRlZF9hdFxuICAgICAgfHwgTm9kZS5lZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50KVxuICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuOztcblxubGV0IHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBsZXQgc2F2ZWQgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgdC5jdXJyZW50X3Njb3BlIDwtIHNjb3BlO1xuICB0cnlcbiAgICBsZXQgdiA9IGYgKCkgaW5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgdlxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHJhaXNlIGV4blxuOztcblxubGV0IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mID1cbiAgaWYgbm90IChTY29wZS5pc192YWxpZCBzY29wZSlcbiAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gcnVuIHdpdGhpbiBhbiBpbnZhbGlkIHNjb3BlXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mXG47O1xuXG5sZXQgY2hhbmdlX2NoaWxkXG4gIDogdHlwZSBhIGIuXG4gICAgcGFyZW50OmEgTm9kZS50XG4gICAgLT4gb2xkX2NoaWxkOmIgTm9kZS50IFVvcHQudFxuICAgIC0+IG5ld19jaGlsZDpiIE5vZGUudFxuICAgIC0+IGNoaWxkX2luZGV4OmludFxuICAgIC0+IHVuaXRcbiAgPVxuICBmdW4gfnBhcmVudCB+b2xkX2NoaWxkIH5uZXdfY2hpbGQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfY2hpbGRcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXhcbiAgZWxzZSAoXG4gICAgbGV0IG9sZF9jaGlsZCA9IFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9jaGlsZCBpblxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfY2hpbGQgbmV3X2NoaWxkKVxuICAgIHRoZW4gKFxuICAgICAgKCogV2UgcmVtb3ZlIFtvbGRfY2hpbGRdIGJlZm9yZSBhZGRpbmcgW25ld19jaGlsZF0sIGJlY2F1c2UgdGhleSBzaGFyZSB0aGUgc2FtZVxuICAgICAgICAgY2hpbGQgaW5kZXguICopXG4gICAgICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkOm9sZF9jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgICgqIFdlIGZvcmNlIFtvbGRfY2hpbGRdIHRvIHRlbXBvcmFyaWx5IGJlIG5lY2Vzc2FyeSBzbyB0aGF0IFthZGRfcGFyZW50XSBjYW4ndFxuICAgICAgICAgbWlzdGFrZW5seSB0aGluayBpdCBpcyB1bm5lY2Vzc2FyeSBhbmQgdHJhbnNpdGlvbiBpdCB0byBuZWNlc3NhcnkgKHdoaWNoIHdvdWxkXG4gICAgICAgICBhZGQgZHVwbGljYXRlIGVkZ2VzIGFuZCBicmVhayB0aGluZ3MgaG9ycmlibHkpLiAqKVxuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSB0cnVlO1xuICAgICAgYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSBmYWxzZTtcbiAgICAgICgqIFdlIFtjaGVja19pZl91bm5lY2Vzc2FyeV0gYWZ0ZXIgW2FkZF9wYXJlbnRdLCBzbyB0aGF0IHdlIGRvbid0IHVubmVjZXNzYXJpbHlcbiAgICAgICAgIHRyYW5zaXRpb24gbm9kZXMgZnJvbSBuZWNlc3NhcnkgdG8gdW5uZWNlc3NhcnkgYW5kIHRoZW4gYmFjayBhZ2Fpbi4gKilcbiAgICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IG9sZF9jaGlsZCkpXG47O1xuXG5sZXQgYWRkX2FsYXJtIGNsb2NrIH5hdCBhbGFybV92YWx1ZSA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgVGltaW5nX3doZWVsLmFkZCBjbG9jay50aW1pbmdfd2hlZWwgfmF0IGFsYXJtX3ZhbHVlXG47O1xuXG5sZXQgcmVjIHJlY29tcHV0ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICB0Lm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSA8LSBTb21lIChUIG5vZGUpO1xuICAgIHQub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPC0gW10pO1xuICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgKyAxO1xuICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBBcnJheV9mb2xkIGFycmF5X2ZvbGQgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKEFycmF5X2ZvbGQuY29tcHV0ZSBhcnJheV9mb2xkKVxuICB8IEF0IHsgYXQ7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhbiBbQXRdIG5vZGUgYWZ0ZXIgW2F0XS4gIFthZHZhbmNlX2Nsb2NrXSB3YXNcbiAgICAgICBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0NvbnN0XSBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgQmVmb3JlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX2xoc19jaGFuZ2VcbiAgICAgICh7IG1haW5cbiAgICAgICA7IGZcbiAgICAgICA7IGxoc1xuICAgICAgIDsgcmhzX3Njb3BlXG4gICAgICAgOyByaHMgPSBvbGRfcmhzXG4gICAgICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgOyBfXG4gICAgICAgfSBhcyBiaW5kKSAtPlxuICAgICgqIFdlIGNsZWFyIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIHNvIGl0IHdpbGwgaG9sZCBqdXN0IHRoZSBub2RlcyBjcmVhdGVkIGJ5XG4gICAgICAgdGhpcyBjYWxsIHRvIFtmXS4gKilcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IHJocyA9IHJ1bl93aXRoX3Njb3BlIHQgcmhzX3Njb3BlIH5mOihmdW4gKCkgLT4gZiAoTm9kZS52YWx1ZV9leG4gbGhzKSkgaW5cbiAgICBiaW5kLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIEFudGljaXBhdGUgd2hhdCBbbWF5YmVfY2hhbmdlX3ZhbHVlXSB3aWxsIGRvLCB0byBtYWtlIHN1cmUgQmluZF9tYWluIGlzIHN0YWxlXG4gICAgICAgcmlnaHQgYXdheS4gVGhpcyB3YXksIGlmIHRoZSBuZXcgY2hpbGQgaXMgaW52YWxpZCwgd2UnbGwgc2F0aXNmeSB0aGUgaW52YXJpYW50XG4gICAgICAgc2F5aW5nIHRoYXQgW25lZWRzX3RvX2JlX2NvbXB1dGVkIGJpbmRfbWFpbl0gaW4gW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5iaW5kX3Joc19jaGlsZF9pbmRleDtcbiAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX3Joc1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgaW52YWxpZGF0ZSBhZnRlciBbY2hhbmdlX2NoaWxkXSwgYmVjYXVzZSBpbnZhbGlkYXRpb24gY2hhbmdlcyB0aGUgW2tpbmRdIG9mXG4gICAgICAgICBub2RlcyB0byBbSW52YWxpZF0sIHdoaWNoIG1lYW5zIHRoYXQgd2UgY2FuIG5vIGxvbmdlciB2aXNpdCB0aGVpciBjaGlsZHJlbi5cbiAgICAgICAgIEFsc28sIHRoZSBbb2xkX3Joc10gbm9kZXMgYXJlIHR5cGljYWxseSBtYWRlIHVubmVjZXNzYXJ5IGJ5IFtjaGFuZ2VfY2hpbGRdLCBhbmRcbiAgICAgICAgIHNvIGJ5IGludmFsaWRhdGluZyBhZnRlcndhcmRzLCB3ZSB3aWxsIG5vdCB3YXN0ZSB0aW1lIGFkZGluZyB0aGVtIHRvIHRoZVxuICAgICAgICAgcmVjb21wdXRlIGhlYXAgYW5kIHRoZW4gcmVtb3ZpbmcgdGhlbS4gKilcbiAgICAgIGlmIHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgIGVsc2VcbiAgICAgICAgcmVzY29wZV9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIHRcbiAgICAgICAgICBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgfm5ld19zY29wZTptYWluLmNyZWF0ZWRfaW47XG4gICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0KTtcbiAgICAoKiBbbm9kZV0gd2FzIHZhbGlkIGF0IHRoZSBzdGFydCBvZiB0aGUgW0JpbmRfbGhzX2NoYW5nZV0gYnJhbmNoLCBhbmQgaW52YWxpZGF0aW9uXG4gICAgICAgb25seSB2aXNpdHMgaGlnaGVyIG5vZGVzLCBzbyBbbm9kZV0gaXMgc3RpbGwgdmFsaWQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBDb25zdCBhIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGFcbiAgfCBGcmVlemUgeyBjaGlsZDsgb25seV9mcmVlemVfd2hlbjsgXyB9IC0+XG4gICAgbGV0IHZhbHVlID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICBpZiBvbmx5X2ZyZWV6ZV93aGVuIHZhbHVlXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3QgdmFsdWUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIHNldF9oZWlnaHQgbm9kZSAwIGVsc2UgYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhbHVlXG4gIHwgSWZfdGVzdF9jaGFuZ2UgKHsgbWFpbjsgY3VycmVudF9icmFuY2g7IHRlc3Q7IHRoZW5fOyBlbHNlXzsgXyB9IGFzIGlmX3RoZW5fZWxzZSkgLT5cbiAgICBsZXQgZGVzaXJlZF9icmFuY2ggPSBpZiBOb2RlLnZhbHVlX2V4biB0ZXN0IHRoZW4gdGhlbl8gZWxzZSBlbHNlXyBpblxuICAgIGlmX3RoZW5fZWxzZS5jdXJyZW50X2JyYW5jaCA8LSBVb3B0LnNvbWUgZGVzaXJlZF9icmFuY2g7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOmN1cnJlbnRfYnJhbmNoXG4gICAgICB+bmV3X2NoaWxkOmRlc2lyZWRfYnJhbmNoXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5pZl9icmFuY2hfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBJZl90aGVuX2Vsc2UgeyBjdXJyZW50X2JyYW5jaDsgXyB9IC0+XG4gICAgY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaClcbiAgfCBJbnZhbGlkIC0+XG4gICAgKCogV2UgbmV2ZXIgaGF2ZSBpbnZhbGlkIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcDsgdGhleSBhcmUgbmV2ZXIgc3RhbGUuICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgSm9pbl9saHNfY2hhbmdlICh7IGxoczsgbWFpbjsgcmhzID0gb2xkX3JoczsgXyB9IGFzIGpvaW4pIC0+XG4gICAgbGV0IHJocyA9IE5vZGUudmFsdWVfZXhuIGxocyBpblxuICAgIGpvaW4ucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5qb2luX3Joc19jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEpvaW5fbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IE1hcCAoZiwgbjEpIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkpXG4gIHwgU25hcHNob3QgeyBhdDsgYmVmb3JlOyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYSBbU25hcHNob3RdIGFuZCB0aGUgYWxhcm0gc2hvdWxkIGhhdmUgZmlyZWQuXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdIHdhcyBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0ZyZWV6ZV0gYXQgdGhlIGFwcHJvcHJpYXRlXG4gICAgICAgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYmVmb3JlXG4gIHwgU3RlcF9mdW5jdGlvbiAoeyBjaGlsZDsgY2xvY2s7IF8gfSBhcyBzdGVwX2Z1bmN0aW9uX25vZGUpIC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hpbGQgPSBVb3B0LnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZVxuICAgICAgICAgICBjaGlsZC5jaGFuZ2VkX2F0XG4gICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0XG4gICAgICAgICA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA8LSBjaGlsZC5jaGFuZ2VkX2F0O1xuICAgICAgICByZW1vdmVfYWxhcm0gY2xvY2sgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtO1xuICAgICAgICBsZXQgc3RlcF9mdW5jdGlvbiA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSA8LSBVb3B0LnNvbWUgKFN0ZXBfZnVuY3Rpb24uaW5pdCBzdGVwX2Z1bmN0aW9uKTtcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIDwtIFN0ZXBfZnVuY3Rpb24uc3RlcHMgc3RlcF9mdW5jdGlvbjtcbiAgICAgICAgKCogSWYgdGhlIGNoaWxkIGlzIGEgY29uc3RhbnQsIHdlIGRyb3Agb3VyIHJlZmVyZW5jZSB0byBpdCwgdG8gYXZvaWQgaG9sZGluZyBvbiB0b1xuICAgICAgICAgICB0aGUgZW50aXJlIHN0ZXAgZnVuY3Rpb24uICopXG4gICAgICAgIGlmIE5vZGUuaXNfY29uc3QgY2hpbGRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmNoaWxkIDwtIFVvcHQubm9uZTtcbiAgICAgICAgICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKSkpKTtcbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuYWR2YW5jZSBzdGVwX2Z1bmN0aW9uX25vZGUgfnRvXzoobm93IGNsb2NrKTtcbiAgICBsZXQgc3RlcF9mdW5jdGlvbl92YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSBpblxuICAgIChtYXRjaCBTZXF1ZW5jZS5oZCBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgd2l0aFxuICAgICB8IE5vbmUgLT4gaWYgVW9wdC5pc19ub25lIGNoaWxkIHRoZW4gTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCBzdGVwX2Z1bmN0aW9uX3ZhbHVlKVxuICAgICB8IFNvbWUgKGF0LCBfKSAtPlxuICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0IHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgc3RlcF9mdW5jdGlvbl92YWx1ZVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNvbXB1dGUgdSlcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICB8IFZhciB2YXIgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFyLnZhbHVlXG4gIHwgTWFwMiAoZiwgbjEsIG4yKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSlcbiAgfCBNYXAzIChmLCBuMSwgbjIsIG4zKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykpXG4gIHwgTWFwNCAoZiwgbjEsIG4yLCBuMywgbjQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSAoTm9kZS52YWx1ZV9leG4gbjQpKVxuICB8IE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpKVxuICB8IE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KSlcbiAgfCBNYXA3IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpKVxuICB8IE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpKVxuICB8IE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KSlcbiAgfCBNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApKVxuICB8IE1hcDExIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSkpXG4gIHwgTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKSlcbiAgfCBNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpKVxuICB8IE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNCkpXG4gIHwgTWFwMTUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0LCBuMTUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE1KSlcbiAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgKG1hdGNoIEV4cGVydC5iZWZvcmVfbWFpbl9jb21wdXRhdGlvbiBleHBlcnQgd2l0aFxuICAgICB8IGBJbnZhbGlkIC0+XG4gICAgICAgaW52YWxpZGF0ZV9ub2RlIG5vZGU7XG4gICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdFxuICAgICB8IGBPayAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZXhwZXJ0LmYgKCkpKVxuXG5hbmQgY29weV9jaGlsZCA6IHR5cGUgYS4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkOmEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gfnBhcmVudCB+Y2hpbGQgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBjaGlsZFxuICB0aGVuIG1heWJlX2NoYW5nZV92YWx1ZSBwYXJlbnQgKE5vZGUudmFsdWVfZXhuIGNoaWxkKVxuICBlbHNlIChcbiAgICBpbnZhbGlkYXRlX25vZGUgcGFyZW50O1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHBhcmVudC5zdGF0ZSlcblxuYW5kIG1heWJlX2NoYW5nZV92YWx1ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gYSAtPiB1bml0ID1cbiAgZnVuIG5vZGUgbmV3X3ZhbHVlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBsZXQgb2xkX3ZhbHVlX29wdCA9IG5vZGUudmFsdWVfb3B0IGluXG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVfb3B0XG4gIHx8IG5vdFxuICAgICAgIChDdXRvZmYuc2hvdWxkX2N1dG9mZlxuICAgICAgICAgIG5vZGUuY3V0b2ZmXG4gICAgICAgICAgfm9sZF92YWx1ZTooVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlX29wdClcbiAgICAgICAgICB+bmV3X3ZhbHVlKVxuICB0aGVuIChcbiAgICBub2RlLnZhbHVlX29wdCA8LSBVb3B0LnNvbWUgbmV3X3ZhbHVlO1xuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIHQubnVtX25vZGVzX2NoYW5nZWQgPC0gdC5udW1fbm9kZXNfY2hhbmdlZCArIDE7XG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbm9kZS5vbGRfdmFsdWVfb3B0IDwtIG9sZF92YWx1ZV9vcHQ7XG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlKTtcbiAgICBpZiBub2RlLm51bV9wYXJlbnRzID49IDFcbiAgICB0aGVuIChcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIG5vZGUubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZS5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIGluXG4gICAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggZXhwZXJ0XG4gICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICAgIHVcbiAgICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KVxuICAgICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgICAgfCBfIC0+ICgpKTtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgKCogV2UgZG9uJ3QgZG8gdGhlIFtjYW5fcmVjb21wdXRlX25vd10gb3B0aW1pemF0aW9uLiAgU2luY2UgbW9zdCBub2RlcyBvbmx5IGhhdmVcbiAgICAgICAgICAgb25lIHBhcmVudCwgaXQgaXMgbm90IHByb2JhYmx5IG5vdCBhIGJpZyBsb3NzLiAgSWYgd2UgZGlkIGl0IGFueXdheSwgd2UnZFxuICAgICAgICAgICBoYXZlIHRvIGJlIGNhcmVmdWwsIGJlY2F1c2Ugd2hpbGUgd2UgaXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIHBhcmVudHMsIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlbSwgYW5kIGluIHBhcnRpY3VsYXIgd2UgY2FuIGV4ZWN1dGUgbGhzLWNoYW5nZSBub2RlcyB3aG8gY2FuXG4gICAgICAgICAgIGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIFRoaW5rIGFib3V0OlxuXG4gICAgICAgICAgIHtbXG4gICAgICAgICAgICAgbGhzID4+PSBmdW4gYiAtPiBpZiBiIHRoZW4gbGhzID4+fCBGbi5pZCBlbHNlIGNvbnN0IGJcbiAgICAgICAgICAgXX1cblxuICAgICAgICAgICBJZiB0aGUgb3B0aW1pemF0aW9uIGtpY2tzIGluIHdoZW4gd2UgcHJvcGFnYXRlIGNoYW5nZSB0byB0aGUgcGFyZW50cyBvZiBbbGhzXVxuICAgICAgICAgICAod2hpY2ggY2hhbmdlcyBmcm9tIFt0cnVlXSB0byBbZmFsc2VdKSwgd2UgY291bGQgZXhlY3V0ZSB0aGUgW2xocy1jaGFuZ2VdXG4gICAgICAgICAgIGZpcnN0LCB3aGljaCB3b3VsZCBtYWtlIGRpc2Nvbm5lY3QgdGhlIFttYXBdIG5vZGUgZnJvbSBbbGhzXS4gIEFuZCB0aGVuIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlIHNlY29uZCBjaGlsZCBvZiB0aGUgW2xoc10sIHdoaWNoIGRvZXNuJ3QgZXhpc3QgYW55bW9yZSBhbmRcbiAgICAgICAgICAgaW5jcmVtZW50YWwgd291bGQgc2VnZmF1bHQgKHRoZXJlIG1heSBiZSBhIGxlc3MgbmFpdmUgd2F5IG9mIG1ha2luZyB0aGlzIHdvcmtcbiAgICAgICAgICAgdGhvdWdoKS4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbiAgICAgIGRvbmU7XG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIG5vZGUucGFyZW50MCBpblxuICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICB8IEV4cGVydCBwIC0+XG4gICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMCkgaW5cbiAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggcFxuICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICB1XG4gICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMClcbiAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY2FuX3JlY29tcHV0ZV9ub3cgPVxuICAgICAgICAgIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlbid0IHBhcmVudHMuICopXG4gICAgICAgICAgfCBBdCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBDb25zdCBfIHwgSW52YWxpZCB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBoYXZlIG1vcmUgdGhhbiBvbmUgY2hpbGQuICopXG4gICAgICAgICAgfCBBcnJheV9mb2xkIF9cbiAgICAgICAgICB8IE1hcDIgX1xuICAgICAgICAgIHwgTWFwMyBfXG4gICAgICAgICAgfCBNYXA0IF9cbiAgICAgICAgICB8IE1hcDUgX1xuICAgICAgICAgIHwgTWFwNiBfXG4gICAgICAgICAgfCBNYXA3IF9cbiAgICAgICAgICB8IE1hcDggX1xuICAgICAgICAgIHwgTWFwOSBfXG4gICAgICAgICAgfCBNYXAxMCBfXG4gICAgICAgICAgfCBNYXAxMSBfXG4gICAgICAgICAgfCBNYXAxMiBfXG4gICAgICAgICAgfCBNYXAxMyBfXG4gICAgICAgICAgfCBNYXAxNCBfXG4gICAgICAgICAgfCBNYXAxNSBfXG4gICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBFeHBlcnQgXyAtPiBmYWxzZVxuICAgICAgICAgICgqIFdlIGNhbiBpbW1lZGlhdGVseSByZWNvbXB1dGUgW3BhcmVudF0gaWYgbm8gb3RoZXIgbm9kZSBuZWVkcyB0byBiZSBzdGFibGVcbiAgICAgICAgICAgICBiZWZvcmUgY29tcHV0aW5nIGl0LiAgSWYgW3BhcmVudF0gaGFzIGEgc2luZ2xlIGNoaWxkIChpLmUuIFtub2RlXSksIHRoZW5cbiAgICAgICAgICAgICB0aGlzIGFtb3VudHMgdG8gY2hlY2tpbmcgdGhhdCBbcGFyZW50XSB3b24ndCBiZSBpbnZhbGlkYXRlZCwgaS5lLiB0aGF0XG4gICAgICAgICAgICAgW3BhcmVudF0ncyBzY29wZSBoYXMgYWxyZWFkeSBzdGFiaWxpemVkLiAqKVxuICAgICAgICAgIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEZyZWV6ZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgTWFwIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICgqIEZvciB0aGVzZSwgd2UgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBcIl9jaGFuZ2VcIiBjaGlsZCBoYXMgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgICAgZXZhbHVhdGVkIChpZiBuZWVkZWQpLiAgSWYgc28sIHRoaXMgYWxzbyBpbXBsaWVzOlxuXG4gICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgIG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgICAgXX0gKilcbiAgICAgICAgICB8IEJpbmRfbWFpbiBiIC0+IG5vZGUuaGVpZ2h0ID4gYi5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIGkgLT4gbm9kZS5oZWlnaHQgPiBpLnRlc3RfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSm9pbl9tYWluIGogLT4gbm9kZS5oZWlnaHQgPiBqLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgIGluXG4gICAgICAgIGlmIGNhbl9yZWNvbXB1dGVfbm93XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIGlmIHBhcmVudC5oZWlnaHQgPD0gUmVjb21wdXRlX2hlYXAubWluX2hlaWdodCB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIFtwYXJlbnQuaGVpZ2h0XSBpcyBbPD1dIHRoZSBoZWlnaHQgb2YgYWxsIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcFxuICAgICAgICAgICAgIChwb3NzaWJseSBiZWNhdXNlIHRoZSByZWNvbXB1dGUgaGVhcCBpcyBlbXB0eSksIHRoZW4gd2UgY2FuIHJlY29tcHV0ZVxuICAgICAgICAgICAgIFtwYXJlbnRdIGltbWVkaWF0ZWx5IGFuZCBzYXZlIGFkZGluZyBpdCB0byBhbmQgdGhlbiByZW1vdmluZyBpdCBmcm9tIHRoZVxuICAgICAgICAgICAgIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0XG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKTtcbiAgICAgICAgICBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHIgPVxuICBsZXQgKFQgbm9kZSkgPSBSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHIgaW5cbiAgaWYgZGVidWcgJiYgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwibm9kZSB1bmV4cGVjdGVkbHkgZG9lcyBub3QgbmVlZCB0byBiZSBjb21wdXRlZFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgcmVjb21wdXRlIG5vZGVcbjs7XG5cbmxldCB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRGlzYWxsb3dlZCAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSk7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgbGV0IChUIGFsbF9vYnNlcnZlcnMpID0gVW9wdC52YWx1ZV9leG4gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgaWYgSW50ZXJuYWxfb2JzZXJ2ZXIuc2FtZSBpbnRlcm5hbF9vYnNlcnZlciBhbGxfb2JzZXJ2ZXJzXG4gICAgdGhlbiB0LmFsbF9vYnNlcnZlcnMgPC0gaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGw7XG4gICAgSW50ZXJuYWxfb2JzZXJ2ZXIudW5saW5rIGludGVybmFsX29ic2VydmVyO1xuICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlciA9XG4gIGxldCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+ICgpXG4gIHwgQ3JlYXRlZCAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG4gIHwgSW5fdXNlIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBEaXNhbGxvd2VkO1xuICAgIFN0YWNrLnB1c2ggdC5kaXNhbGxvd2VkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcilcbjs7XG5cbmxldCBkaXNhbGxvd19maW5hbGl6ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmZpbmFsaXplZF9vYnNlcnZlcnMgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHRoZW4gZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfZmluYWxpemVyIHQgPVxuICBzdGFnZSAoZnVuIG9ic2VydmVyIC0+XG4gICAgbGV0IGludGVybmFsX29ic2VydmVyID0gIW9ic2VydmVyIGluXG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmZpbmFsaXplZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpKVxuOztcblxubGV0IGNyZWF0ZV9vYnNlcnZlciA/KHNob3VsZF9maW5hbGl6ZSA9IHRydWUpIChvYnNlcnZpbmcgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG9ic2VydmluZy5zdGF0ZSBpblxuICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgOiBfIEludGVybmFsX29ic2VydmVyLnQgPVxuICAgIHsgc3RhdGUgPSBDcmVhdGVkXG4gICAgOyBvYnNlcnZpbmdcbiAgICA7IG9uX3VwZGF0ZV9oYW5kbGVycyA9IFtdXG4gICAgOyBwcmV2X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IHByZXZfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgU3RhY2sucHVzaCB0Lm5ld19vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICBsZXQgb2JzZXJ2ZXIgPSByZWYgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgaWYgc2hvdWxkX2ZpbmFsaXplXG4gIHRoZW4gR2MuRXhwZXJ0LmFkZF9maW5hbGl6ZXJfZXhuIG9ic2VydmVyICh1bnN0YWdlIChvYnNlcnZlcl9maW5hbGl6ZXIgdCkpO1xuICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgKyAxO1xuICBvYnNlcnZlclxuOztcblxubGV0IGFkZF9uZXdfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5uZXdfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQubmV3X29ic2VydmVycyBpblxuICAgIGxldCBtb2R1bGUgUGFja2VkID0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBVbmxpbmtlZCAtPiAoKVxuICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gSW5fdXNlO1xuICAgICAgbGV0IG9sZF9hbGxfb2JzZXJ2ZXJzID0gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX2FsbF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbCA8LSBvbGRfYWxsX29ic2VydmVycztcbiAgICAgICAgUGFja2VkLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX2FsbF9vYnNlcnZlcnMpIChVb3B0LnNvbWUgcGFja2VkKSk7XG4gICAgICB0LmFsbF9vYnNlcnZlcnMgPC0gVW9wdC5zb21lIHBhY2tlZDtcbiAgICAgIGxldCBvYnNlcnZpbmcgPSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgaW5cbiAgICAgIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nIGluXG4gICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICsgTGlzdC5sZW5ndGggaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgICAgbGV0IG9sZF9vYnNlcnZlcnMgPSBvYnNlcnZpbmcub2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG9sZF9vYnNlcnZlcnM7XG4gICAgICAgIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfb2JzZXJ2ZXJzKS5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgICAoKiBCeSBhZGRpbmcgW2ludGVybmFsX29ic2VydmVyXSB0byBbb2JzZXJ2aW5nLm9ic2VydmVyc10sIHdlIG1heSBoYXZlIGFkZGVkXG4gICAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgdG8gW29ic2VydmluZ10uICBXZSBuZWVkIHRvIGhhbmRsZSBbb2JzZXJ2aW5nXSBhZnRlciB0aGlzXG4gICAgICAgICBzdGFiaWxpemF0aW9uIHRvIGdpdmUgdGhvc2UgaGFuZGxlcnMgYSBjaGFuY2UgdG8gcnVuLiAqKVxuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gb2JzZXJ2aW5nO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyk7XG4gICAgICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3Nhcnkgb2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZV9leG4gb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+IE9ic2VydmVyLnZhbHVlX2V4biBvYnNlcnZlclxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFslc2V4cF9vZjogUmFpc2VkX2V4bi50XVxuICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cIlxuICAgICAgb2JzZXJ2ZXJcbiAgICAgIFslc2V4cF9vZjogXyBPYnNlcnZlci50XVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlIG9ic2VydmVyID1cbiAgdHJ5IE9rIChvYnNlcnZlcl92YWx1ZV9leG4gb2JzZXJ2ZXIpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG47O1xuXG5sZXQgbm9kZV9vbl91cGRhdGUgKHR5cGUgYSkgKG5vZGUgOiBhIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgTm9kZS5vbl91cGRhdGUgbm9kZSAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlXG47O1xuXG5sZXQgb2JzZXJ2ZXJfb25fdXBkYXRlX2V4biBvYnNlcnZlciB+ZiA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBPYnNlcnZlci5vbl91cGRhdGVfZXhuIG9ic2VydmVyIChPbl91cGRhdGVfaGFuZGxlci5jcmVhdGUgZiB+YXQ6dC5zdGFiaWxpemF0aW9uX251bSk7XG4gIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChPYnNlcnZlci5vYnNlcnZpbmcgb2JzZXJ2ZXIpXG47O1xuXG5sZXQgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlID1cbiAgbGV0IHQgPSBWYXIuaW5jcl9zdGF0ZSB2YXIgaW5cbiAgdC5udW1fdmFyX3NldHMgPC0gdC5udW1fdmFyX3NldHMgKyAxO1xuICB2YXIudmFsdWUgPC0gdmFsdWU7XG4gIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgdmFyLnNldF9hdCB0LnN0YWJpbGl6YXRpb25fbnVtIDwgMFxuICB0aGVuIChcbiAgICB2YXIuc2V0X2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgbGV0IHdhdGNoID0gdmFyLndhdGNoIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfc3RhbGUgd2F0Y2gpO1xuICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IHdhdGNoICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCB3YXRjaClcbiAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHdhdGNoKVxuOztcblxubGV0IHNldF92YXIgdmFyIHZhbHVlID1cbiAgbGV0IHQgPSBWYXIuaW5jcl9zdGF0ZSB2YXIgaW5cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiY2Fubm90IHNldCB2YXIgLS0gc3RhYmlsaXphdGlvbiBwcmV2aW91c2x5IHJhaXNlZFwiXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBbJXNleHBfb2Y6IFJhaXNlZF9leG4udF1cbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGlmIFVvcHQuaXNfbm9uZSB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gICAgdGhlbiBTdGFjay5wdXNoIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIChUIHZhcik7XG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0LnNvbWUgdmFsdWVcbjs7XG5cbmxldCByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LndlYWtfaGFzaHRibHMgPiAwIGRvXG4gICAgbGV0IChUIHdlYWtfaGFzaHRibCkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LndlYWtfaGFzaHRibHMgaW5cbiAgICBXZWFrX2hhc2h0YmwucmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhIHdlYWtfaGFzaHRibFxuICBkb25lXG47O1xuXG5sZXQgc3RhYmlsaXplX3N0YXJ0IHQgPVxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemluZztcbiAgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0O1xuICAoKiBKdXN0IGxpa2UgZm9yIGJpbmRzLCB3ZSBhZGQgbmV3IG9ic2VydmVycyBiZWZvcmUgcmVtb3ZpbmcgZGlzYWxsb3dlZCBvYnNlcnZlcnMgdG9cbiAgICAgcG90ZW50aWFsbHkgYXZvaWQgc3dpdGNoaW5nIHRoZSBvYnNlcnZhYmlsaXR5IG9mIHNvbWUgbm9kZXMgYmFjayBhbmQgZm9ydGguICopXG4gIGFkZF9uZXdfb2JzZXJ2ZXJzIHQ7XG4gIHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0O1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXQgc3RhYmlsaXplX2VuZCB0ID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gTm9uZTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgKCogV2UgaW5jcmVtZW50IFt0LnN0YWJpbGl6YXRpb25fbnVtXSBiZWZvcmUgaGFuZGxpbmcgdmFyaWFibGVzIHNldCBkdXJpbmdcbiAgICAgc3RhYmlsaXphdGlvbiwgc28gdGhhdCB0aGV5IGFyZSB0cmVhdGVkIGFzIHNldCBkdXJpbmcgdGhlIG5ldyBzdGFiaWxpemF0aW9uIGN5Y2xlLlxuICAgICBBbHNvLCB3ZSBpbmNyZW1lbnQgYmVmb3JlIHJ1bm5pbmcgb24tdXBkYXRlIGhhbmRsZXJzLCB0byBhdm9pZCBydW5uaW5nIG9uIHVwZGF0ZVxuICAgICBoYW5kbGVycyBjcmVhdGVkIGR1cmluZyBvbiB1cGRhdGUgaGFuZGxlcnMuICopXG4gIHQuc3RhYmlsaXphdGlvbl9udW0gPC0gU3RhYmlsaXphdGlvbl9udW0uYWRkMSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCB2YXIpID0gU3RhY2sucG9wX2V4biB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIGxldCB2YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQubm9uZTtcbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgZG9uZTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBpblxuICAgIG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPC0gZmFsc2U7XG4gICAgbGV0IG9sZF92YWx1ZSA9IG5vZGUub2xkX3ZhbHVlX29wdCBpblxuICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50ID1cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBub2RlKVxuICAgICAgdGhlbiBJbnZhbGlkYXRlZFxuICAgICAgZWxzZSBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpXG4gICAgICB0aGVuIFVubmVjZXNzYXJ5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld192YWx1ZSA9IFVvcHQudmFsdWVfZXhuIG5vZGUudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVcbiAgICAgICAgdGhlbiBOZWNlc3NhcnkgbmV3X3ZhbHVlXG4gICAgICAgIGVsc2UgQ2hhbmdlZCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpKVxuICAgIGluXG4gICAgU3RhY2sucHVzaCB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSlcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnM7XG4gIGxldCBub3cgPSB0LnN0YWJpbGl6YXRpb25fbnVtIGluXG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzKSBkb1xuICAgIGxldCAoVCAobm9kZSwgbm9kZV91cGRhdGUpKSA9IFN0YWNrLnBvcF9leG4gdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIGluXG4gICAgTm9kZS5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIG5vZGUgbm9kZV91cGRhdGUgfm5vd1xuICBkb25lO1xuICB0LnN0YXR1cyA8LSBOb3Rfc3RhYmlsaXppbmc7XG4gIHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0XG47O1xuXG5sZXQgcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4gPVxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgKFJhaXNlZF9leG4uY3JlYXRlIGV4bik7XG4gIHJhaXNlIGV4blxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic3RhYmlsaXplXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOmZhbHNlO1xuICB0cnlcbiAgICBzdGFiaWxpemVfc3RhcnQgdDtcbiAgICBsZXQgciA9IHQucmVjb21wdXRlX2hlYXAgaW5cbiAgICB3aGlsZSBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDAgZG9cbiAgICAgIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHJcbiAgICBkb25lO1xuICAgIHN0YWJpbGl6ZV9lbmQgdFxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuXG47O1xuXG5tb2R1bGUgU3RlcF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEtlZXBfZ29pbmdcbiAgICB8IERvbmVcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHQgOiBTdGVwX3Jlc3VsdC50ID1cbiAgdHJ5XG4gICAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICBzdGFiaWxpemVfc3RhcnQgdDtcbiAgICAgIEtlZXBfZ29pbmdcbiAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICBsZXQgciA9IHQucmVjb21wdXRlX2hlYXAgaW5cbiAgICAgIGlmIFJlY29tcHV0ZV9oZWFwLmxlbmd0aCByID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHI7XG4gICAgICAgIEtlZXBfZ29pbmcpXG4gICAgICBlbHNlIChcbiAgICAgICAgc3RhYmlsaXplX2VuZCB0O1xuICAgICAgICBEb25lKVxuICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPlxuICAgICAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic3RlcFwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPlxuICAgICAgICgqIElmIHN0YWJpbGl6YXRpb24gaGFzIGFscmVhZHkgcmFpc2VkLCB0aGVuIFtleG5dIGlzIG1lcmVseSBhIG5vdGlmaWNhdGlvbiBvZiB0aGlzXG4gICAgICAgICAgZmFjdCwgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBpdHNlbGYuICBXZSBzaG91bGQganVzdCBwcm9wYWdhdGUgW2V4bl1cbiAgICAgICAgICBmb3J3YXJkOyBjYWxsaW5nIFtyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbl0gd291bGQgc3RvcmUgW2V4bl0gYXMgdGhlIGV4Y2VwdGlvblxuICAgICAgICAgIHRoYXQgaW5pdGlhbGx5IHJhaXNlZCBkdXJpbmcgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICByYWlzZSBleG5cbiAgICAgfCBfIC0+IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuKVxuOztcblxubGV0IGNyZWF0ZV9ub2RlX2luIHQgY3JlYXRlZF9pbiBraW5kID1cbiAgdC5udW1fbm9kZXNfY3JlYXRlZCA8LSB0Lm51bV9ub2Rlc19jcmVhdGVkICsgMTtcbiAgTm9kZS5jcmVhdGUgdCBjcmVhdGVkX2luIGtpbmRcbjs7XG5cbmxldCBjcmVhdGVfbm9kZSB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IHQuY3VycmVudF9zY29wZSBraW5kXG5sZXQgY3JlYXRlX25vZGVfdG9wIHQga2luZCA9IGNyZWF0ZV9ub2RlX2luIHQgU2NvcGUudG9wIGtpbmRcblxubGV0IGNyZWF0ZV92YXIgdCA/KHVzZV9jdXJyZW50X3Njb3BlID0gZmFsc2UpIHZhbHVlID1cbiAgbGV0IHNjb3BlID0gaWYgdXNlX2N1cnJlbnRfc2NvcGUgdGhlbiB0LmN1cnJlbnRfc2NvcGUgZWxzZSBTY29wZS50b3AgaW5cbiAgbGV0IHdhdGNoID0gY3JlYXRlX25vZGVfaW4gdCBzY29wZSBVbmluaXRpYWxpemVkIGluXG4gIGxldCB2YXIgPVxuICAgIHsgVmFyLnZhbHVlXG4gICAgOyB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPSBVb3B0Lm5vbmVcbiAgICA7IHNldF9hdCA9IHQuc3RhYmlsaXphdGlvbl9udW1cbiAgICA7IHdhdGNoXG4gICAgfVxuICBpblxuICBOb2RlLnNldF9raW5kIHdhdGNoIChWYXIgdmFyKTtcbiAgdmFyXG47O1xuXG4oKiBBIFtjb25zdF0gdmFsdWUgY291bGQgY29tZSBmcm9tIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgYW4gb3V0ZXIgYmluZC4gIFNvLCB3ZSBjcmVhdGUgYVxuICAgW2NvbnN0XSBub2RlIGluIHRoZSBjdXJyZW50IHNjb3BlLCBub3QgaW4gW1Njb3BlLnRvcF0uICopXG5sZXQgY29uc3QgdCBhID0gY3JlYXRlX25vZGUgdCAoQ29uc3QgYSlcbmxldCBtYXAgKG4gOiBfIE5vZGUudCkgfmYgPSBjcmVhdGVfbm9kZSBuLnN0YXRlIChNYXAgKGYsIG4pKVxubGV0IG1hcDIgKG4xIDogXyBOb2RlLnQpIG4yIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDIgKGYsIG4xLCBuMikpXG5cbmxldCBib3RoIChuMSA6IF8gTm9kZS50KSAobjIgOiBfIE5vZGUudCkgPVxuICBtYXRjaCBuMSwgbjIgd2l0aFxuICB8IHsga2luZCA9IENvbnN0IGE7IF8gfSwgeyBraW5kID0gQ29uc3QgYjsgXyB9IC0+IGNvbnN0IG4xLnN0YXRlIChhLCBiKVxuICB8IF8gLT4gbWFwMiBuMSBuMiB+ZjpUdXBsZTIuY3JlYXRlXG47O1xuXG5sZXQgbWFwMyAobjEgOiBfIE5vZGUudCkgbjIgbjMgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMyAoZiwgbjEsIG4yLCBuMykpXG5sZXQgbWFwNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNCAoZiwgbjEsIG4yLCBuMywgbjQpKVxuXG5sZXQgbWFwNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSlcbjs7XG5cbmxldCBtYXA2IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA2IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42KSlcbjs7XG5cbmxldCBtYXA3IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA3IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNykpXG47O1xuXG5sZXQgbWFwOCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSlcbjs7XG5cbmxldCBtYXA5IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA5IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45KSlcbjs7XG5cbmxldCBtYXAxMCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApKVxuOztcblxubGV0IG1hcDExIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDExIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSkpXG47O1xuXG5sZXQgbWFwMTIgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDEyIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyKSlcbjs7XG5cbmxldCBtYXAxMyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpKVxuOztcblxubGV0IG1hcDE0IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgbjE0IH5mID1cbiAgY3JlYXRlX25vZGVcbiAgICBuMS5zdGF0ZVxuICAgIChNYXAxNCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQpKVxuOztcblxubGV0IG1hcDE1IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgbjE0IG4xNSB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0LCBuMTUpKVxuOztcblxubGV0IHByZXNlcnZlX2N1dG9mZiB+KGlucHV0IDogXyBOb2RlLnQpIH5vdXRwdXQgPVxuICBOb2RlLnNldF9jdXRvZmZcbiAgICBvdXRwdXRcbiAgICAoQ3V0b2ZmLmNyZWF0ZSAoZnVuIH5vbGRfdmFsdWU6XyB+bmV3X3ZhbHVlOl8gLT5cbiAgICAgICBTdGFiaWxpemF0aW9uX251bS5lcXVhbCBpbnB1dC5jaGFuZ2VkX2F0IG91dHB1dC5jaGFuZ2VkX2F0KSlcbjs7XG5cbmxldCBkZXBlbmRfb24gaW5wdXQgfmRlcGVuZF9vbiA9XG4gIGxldCBvdXRwdXQgPSBtYXAyIGlucHV0IGRlcGVuZF9vbiB+ZjooZnVuIGEgXyAtPiBhKSBpblxuICBwcmVzZXJ2ZV9jdXRvZmYgfmlucHV0IH5vdXRwdXQ7XG4gIG91dHB1dFxuOztcblxubGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSBpbnB1dCA9XG4gICgqIElmIFtvdXRwdXRdIGlzIGFsaXZlLCB0aGVuIFtvYnNlcnZlcl0gaXMgYWxpdmUsIHRoZW4gW2lucHV0XSBpcyBuZWNlc3NhcnkuICBJZlxuICAgICBbb3V0cHV0XSBpcyB1bm5lY2Vzc2FyeSwgdGhlbiBbb3V0cHV0XSBpcyBub3QgYSBwYXJlbnQgb2YgW2lucHV0XSwgYW5kIHRodXNcbiAgICAgW291dHB1dF0ncyBsaXZlbmVzcyBpcyBkZXBlbmRlbnQgc29sZWx5IG9uIHVzZXIgY29kZS4gIEFuZCBpbiBwYXJ0aWN1bGFyLCBpZiBbb3V0cHV0XVxuICAgICBkaWVzLCB0aGVuIFtvYnNlcnZlcl0gd2lsbCBiZSBmaW5hbGl6ZWQsIGFuZCB0aGVuIHVwb24gdGhlIG5leHQgc3RhYmlsaXphdGlvbixcbiAgICAgW2lucHV0XSB3aWxsIGJlY29tZSB1bm5lY2Vzc2FyeSAoYXQgbGVhc3Qgd2l0aCByZXNwZWN0IHRvIFtvdXRwdXRdKS4gKilcbiAgbGV0IG9ic2VydmVyID0gY3JlYXRlX29ic2VydmVyIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPVxuICAgIG1hcCBpbnB1dCB+ZjooZnVuIGEgLT5cbiAgICAgIEdjLmtlZXBfYWxpdmUgb2JzZXJ2ZXI7XG4gICAgICBhKVxuICBpblxuICBwcmVzZXJ2ZV9jdXRvZmYgfmlucHV0IH5vdXRwdXQ7XG4gIG91dHB1dFxuOztcblxubGV0IGJpbmQgKGxocyA6IF8gTm9kZS50KSB+ZiA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiaW5kID1cbiAgICB7IEJpbmQubWFpblxuICAgIDsgZlxuICAgIDsgbGhzXG4gICAgOyBsaHNfY2hhbmdlXG4gICAgOyByaHMgPSBVb3B0Lm5vbmVcbiAgICA7IHJoc19zY29wZSA9IFNjb3BlLnRvcFxuICAgIDsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICAoKiBXZSBzZXQgW2xoc19jaGFuZ2VdIHRvIG5ldmVyIGN1dG9mZiBzbyB0aGF0IHdoZW5ldmVyIFtsaHNdIGNoYW5nZXMsIFttYWluXSBpc1xuICAgICByZWNvbXB1dGVkLiAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIFtmXSByZXR1cm5zIGFuIGV4aXN0aW5nIHN0YWJsZVxuICAgICBub2RlLCBpbiB3aGljaCBjYXNlIHRoZSBbbGhzX2NoYW5nZV0gd291bGQgYmUgdGhlIG9ubHkgdGhpbmcgY2F1c2luZyBbbWFpbl0gdG8gYmVcbiAgICAgc3RhbGUuICopXG4gIE5vZGUuc2V0X2N1dG9mZiBsaHNfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgYmluZC5yaHNfc2NvcGUgPC0gQmluZCBiaW5kO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEJpbmRfbGhzX2NoYW5nZSBiaW5kKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChCaW5kX21haW4gYmluZCk7XG4gIG1haW5cbjs7XG5cbmxldCBiaW5kMiBuMSBuMiB+ZiA9XG4gIGJpbmQgKG1hcDIgbjEgbjIgfmY6KGZ1biB2MSB2MiAtPiB2MSwgdjIpKSB+ZjooZnVuICh2MSwgdjIpIC0+IGYgdjEgdjIpXG47O1xuXG5sZXQgYmluZDMgbjEgbjIgbjMgfmYgPVxuICBiaW5kIChtYXAzIG4xIG4yIG4zIH5mOihmdW4gdjEgdjIgdjMgLT4gdjEsIHYyLCB2MykpIH5mOihmdW4gKHYxLCB2MiwgdjMpIC0+IGYgdjEgdjIgdjMpXG47O1xuXG5sZXQgYmluZDQgbjEgbjIgbjMgbjQgfmYgPVxuICBiaW5kXG4gICAgKG1hcDQgbjEgbjIgbjMgbjQgfmY6KGZ1biB2MSB2MiB2MyB2NCAtPiB2MSwgdjIsIHYzLCB2NCkpXG4gICAgfmY6KGZ1biAodjEsIHYyLCB2MywgdjQpIC0+IGYgdjEgdjIgdjMgdjQpXG47O1xuXG5sZXQgam9pbiAobGhzIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBsaHMuc3RhdGUgaW5cbiAgbGV0IGxoc19jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGpvaW4gPSB7IEpvaW4ubGhzOyBsaHNfY2hhbmdlOyByaHMgPSBVb3B0Lm5vbmU7IG1haW4gfSBpblxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIE5vZGUuc2V0X2tpbmQgbGhzX2NoYW5nZSAoSm9pbl9saHNfY2hhbmdlIGpvaW4pO1xuICBOb2RlLnNldF9raW5kIG1haW4gKEpvaW5fbWFpbiBqb2luKTtcbiAgbWFpblxuOztcblxubGV0IGlmXyAodGVzdCA6IF8gTm9kZS50KSB+dGhlbl8gfmVsc2VfID1cbiAgbGV0IHQgPSB0ZXN0LnN0YXRlIGluXG4gIGxldCB0ZXN0X2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgaWZfdGhlbl9lbHNlID1cbiAgICB7IElmX3RoZW5fZWxzZS50ZXN0OyB0aGVuXzsgZWxzZV87IHRlc3RfY2hhbmdlOyBtYWluOyBjdXJyZW50X2JyYW5jaCA9IFVvcHQubm9uZSB9XG4gIGluXG4gIE5vZGUuc2V0X2N1dG9mZiB0ZXN0X2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIE5vZGUuc2V0X2tpbmQgdGVzdF9jaGFuZ2UgKElmX3Rlc3RfY2hhbmdlIGlmX3RoZW5fZWxzZSk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSk7XG4gIG1haW5cbjs7XG5cbmxldCBsYXp5X2Zyb21fZnVuIHQgfmYgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgTGF6eS5mcm9tX2Z1biAoZnVuICgpIC0+IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mKVxuOztcblxubGV0IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUgPSA0XG5cbmxldCBtZW1vaXplX2Z1bl9ieV9rZXlcbiAgICAgID8oaW5pdGlhbF9zaXplID0gZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSlcbiAgICAgIHRcbiAgICAgIGhhc2hhYmxlXG4gICAgICBwcm9qZWN0X2tleVxuICAgICAgZlxuICA9XG4gICgqIEhlcmUncyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgd2UgZ2V0IFt0LmN1cnJlbnRfc2NvcGVdIGhlcmUsIGFuZCB0aGVuIGNhbGxcbiAgICAgW3dpdGhpbl9zY29wZV0gYmVsb3cuICBDb25zaWRlciB0aGlzIChpbXBvc3NpYmxlKSBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgW21lbW9pemVfZnVuX2J5X2tleV06XG5cbiAgICAge1tcbiAgICAgICBsZXQgdGFibGUgPVxuICAgICAgICAgSGFzaHRibC5vZl9hbGlzdF9leG4gaGFzaGFibGVcbiAgICAgICAgICAgKExpc3QubWFwIGFsbF9wb3NzaWJsZV9hX3ZhbHVlcyB+ZjooZnVuIGEgLT4gKHByb2plY3Rfa2V5IGEsIGYgYSkpXG4gICAgICAgaW5cbiAgICAgICBzdGFnZSAoZnVuIGtleSAtPiBIYXNodGJsLmZpbmRfZXhuIHRhYmxlIChwcm9qZWN0X2tleSBhKSlcbiAgICAgXX1cblxuICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgdXNlIFtjdXJyZW50X3Njb3BlXSBvciBbd2l0aGluX3Njb3BlXS4gIEFsbCBjYWxscyB0byBbZl1cbiAgICAgbmF0dXJhbGx5IG9jY3VyIGluIFt0LmN1cnJlbnRfc2NvcGVdLlxuXG4gICAgIFN1Y2ggYW4gaW1wbGVtZW50YXRpb24gaXMgaW1wb3NzaWJsZSBiZWNhdXNlIHdlIGRvIG5vdCBoYXZlIFthbGxfcG9zc2libGVfYV92YWx1ZXNdLlxuICAgICBUaGUgaW1wbGVtZW50YXRpb24gYmVsb3cgdXNlcyBbd2l0aGluX3Njb3BlXSB0byBjYWxsIFtmIGFdIGluIHRoZSBzY29wZSB0aGF0IHdhc1xuICAgICBjdXJyZW50IGF0IHRoZSBwb2ludCBvZiB0aGUgY2FsbCB0byBbbWVtb2l6ZV9mdW5fYnlfa2V5XSBzbyB0aGF0IHdlIGNhbiB0aGluayBvZiB0aGVcbiAgICAgW3RhYmxlXSBhcyBoYXZpbmcgYmVlbiBjcmVhdGVkIHRoZW4sIHdoZW4gaXQgaW4gcmVhbGl0eSBpcyBjcmVhdGVkIG9uLWRlbWFuZC4gKilcbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIGxldCB0YWJsZSA9IEhhc2h0YmwuY3JlYXRlIGhhc2hhYmxlIH5zaXplOmluaXRpYWxfc2l6ZSBpblxuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0YWJsZSBrZXkgd2l0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBiID0gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmY6KGZ1biAoKSAtPiBmIGEpIGluXG4gICAgICBIYXNodGJsLmFkZF9leG4gdGFibGUgfmtleSB+ZGF0YTpiO1xuICAgICAgYilcbjs7XG5cbmxldCBhcnJheV9mb2xkIHQgY2hpbGRyZW4gfmluaXQgfmYgPVxuICBpZiBBcnJheS5sZW5ndGggY2hpbGRyZW4gPSAwXG4gIHRoZW4gY29uc3QgdCBpbml0XG4gIGVsc2UgY3JlYXRlX25vZGUgdCAoQXJyYXlfZm9sZCB7IGluaXQ7IGY7IGNoaWxkcmVuIH0pXG47O1xuXG5sZXQgYWxsIHQgdHMgPSBhcnJheV9mb2xkIHQgKEFycmF5Lm9mX2xpc3RfcmV2IHRzKSB+aW5pdDpbXSB+ZjooZnVuIGFjIGEgLT4gYSA6OiBhYylcblxubW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFVub3JkZXJlZF9hcnJheV9mb2xkLlVwZGF0ZVxuXG5sZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgIHRcbiAgICAgID8oZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA9IEludC5tYXhfdmFsdWUpXG4gICAgICBjaGlsZHJlblxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gICAgICB+dXBkYXRlXG4gID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGlmIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPD0gMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcInVub3JkZXJlZF9hcnJheV9mb2xkIGdvdCBub24tcG9zaXRpdmUgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1wiXG4gICAgICBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICBbJXNleHBfb2Y6IGludF1cbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBOb2RlLnNldF9raW5kXG4gICAgICBtYWluXG4gICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICAgIChVbm9yZGVyZWRfYXJyYXlfZm9sZC5jcmVhdGVcbiAgICAgICAgICAgIH5pbml0XG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfnVwZGF0ZVxuICAgICAgICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgICAgICAgIH5jaGlsZHJlblxuICAgICAgICAgICAgfm1haW4pKTtcbiAgICBtYWluKVxuOztcblxubGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH5mX2ludmVyc2UgPVxuICBsZXQgZiAoYWNjdW0sIG51bV9pbnZhbGlkKSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjdW0sIG51bV9pbnZhbGlkICsgMVxuICAgIHwgU29tZSB4IC0+IGYgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbGV0IGZfaW52ZXJzZSAoYWNjdW0sIG51bV9pbnZhbGlkKSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjdW0sIG51bV9pbnZhbGlkIC0gMVxuICAgIHwgU29tZSB4IC0+IGZfaW52ZXJzZSBhY2N1bSB4LCBudW1faW52YWxpZFxuICBpblxuICBtYXBcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgdHNcbiAgICAgICB+aW5pdDooaW5pdCwgMClcbiAgICAgICB+ZlxuICAgICAgIH51cGRhdGU6KEZfaW52ZXJzZSBmX2ludmVyc2UpXG4gICAgICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpXG4gICAgfmY6KGZ1biAoYWNjdW0sIG51bV9pbnZhbGlkKSAtPiBpZiBudW1faW52YWxpZCA9IDAgdGhlbiBTb21lIGFjY3VtIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfmsgPVxuICBsZXQgYm9vbF90b19pbnQgYiA9IGlmIGIgdGhlbiAxIGVsc2UgMCBpblxuICBtYXBcbiAgICB+ZjooZnVuIGkgLT4gaSA+PSBrKVxuICAgICh1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgIHRcbiAgICAgICBub2Rlc1xuICAgICAgIH5pbml0OjBcbiAgICAgICB+ZjooZnVuIG51bV90cnVlIGIgLT4gbnVtX3RydWUgKyBib29sX3RvX2ludCBiKVxuICAgICAgIH51cGRhdGU6KEZfaW52ZXJzZSAoZnVuIG51bV90cnVlIGIgLT4gbnVtX3RydWUgLSBib29sX3RvX2ludCBiKSkpXG47O1xuXG5sZXQgZXhpc3RzIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6MVxubGV0IGZvcl9hbGwgdCBub2RlcyA9IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+azooQXJyYXkubGVuZ3RoIG5vZGVzKVxuXG5sZXQgc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICB0XG4gICAgbm9kZXNcbiAgICB+aW5pdDp6ZXJvXG4gICAgfmY6YWRkXG4gICAgfnVwZGF0ZTooRl9pbnZlcnNlIHN1YilcbiAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IG9wdF9zdW0gdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBub2RlcyB+emVybyB+YWRkIH5zdWIgPVxuICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICB0XG4gICAgbm9kZXNcbiAgICB+aW5pdDp6ZXJvXG4gICAgfmY6YWRkXG4gICAgfmZfaW52ZXJzZTpzdWJcbiAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IHN1bV9pbnQgdCBub2RlcyA9IHN1bSB0IG5vZGVzIH56ZXJvOjAgfmFkZDooICsgKSB+c3ViOiggLSApXG5cbmxldCBzdW1fZmxvYXQgdCBub2RlcyA9XG4gIHN1bVxuICAgIHRcbiAgICBub2Rlc1xuICAgIH56ZXJvOjAuXG4gICAgfmFkZDooICsuIClcbiAgICB+c3ViOiggLS4gKVxuICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzOihBcnJheS5sZW5ndGggbm9kZXMpXG47O1xuXG5sZXQgc2V0X2ZyZWV6ZSAobm9kZSA6IF8gTm9kZS50KSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW4gPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoU2NvcGUuaXNfdG9wIG5vZGUuY3JlYXRlZF9pbik7XG4gICgqIEJ5IG1ha2luZyBbbm9kZS5raW5kXSBiZSBbRnJlZXplXSwgd2UgYXJlIG1ha2luZyBbTm9kZS5pc19uZWNlc3Nhcnkgbm9kZV0uICopXG4gIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSBpblxuICBOb2RlLnNldF9raW5kIG5vZGUgKEZyZWV6ZSB7IG1haW4gPSBub2RlOyBjaGlsZDsgb25seV9mcmVlemVfd2hlbiB9KTtcbiAgaWYgd2FzX25lY2Vzc2FyeVxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg6S2luZC5mcmVlemVfY2hpbGRfaW5kZXhcbiAgZWxzZSBiZWNhbWVfbmVjZXNzYXJ5IG5vZGVcbjs7XG5cbmxldCBmcmVlemUgKGNoaWxkIDogXyBOb2RlLnQpIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgbm9kZSA9IGNyZWF0ZV9ub2RlX3RvcCB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgc2V0X2ZyZWV6ZSBub2RlIH5jaGlsZCB+b25seV9mcmVlemVfd2hlbjtcbiAgbm9kZVxuOztcblxubGV0IGF0IGNsb2NrIHRpbWUgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAobm93IGNsb2NrKVxuICB0aGVuIGNvbnN0IHQgQmVmb3JlX29yX2FmdGVyLkFmdGVyXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IGF0ID0geyBBdC5hdCA9IHRpbWU7IG1haW47IGFsYXJtID0gQWxhcm0ubnVsbDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXQgYXQpO1xuICAgIGF0LmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQ6dGltZSAoQWxhcm1fdmFsdWUuY3JlYXRlIChBdCBhdCkpO1xuICAgIG1haW4pXG47O1xuXG5sZXQgYWZ0ZXIgY2xvY2sgc3BhbiA9IGF0IGNsb2NrIChUaW1lX25zLmFkZCAobm93IGNsb2NrKSBzcGFuKVxuXG5sZXQgbmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgKGNsb2NrIDogQ2xvY2sudCkgfmJhc2UgfmludGVydmFsID1cbiAgbGV0IGFmdGVyID0gbm93IGNsb2NrIGluXG4gIGxldCBhdCA9IFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsIH5jYW5fZXF1YWxfYWZ0ZXI6ZmFsc2UgKCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgYWZ0ZXIpO1xuICBhdFxuOztcblxubGV0IGF0X2ludGVydmFscyAoY2xvY2sgOiBDbG9jay50KSBpbnRlcnZhbCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLlNwYW4uKCA8ICkgaW50ZXJ2YWwgKFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gY2xvY2sudGltaW5nX3doZWVsKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImF0X2ludGVydmFscyBnb3QgdG9vIHNtYWxsIGludGVydmFsXCJcbiAgICAgIGludGVydmFsXG4gICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XTtcbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGJhc2UgPSBub3cgY2xvY2sgaW5cbiAgbGV0IGF0X2ludGVydmFscyA9IHsgQXRfaW50ZXJ2YWxzLm1haW47IGJhc2U7IGludGVydmFsOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgTm9kZS5zZXRfa2luZCBtYWluIChBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzKTtcbiAgKCogW21haW4gOiB1bml0IE5vZGUudF0sIHNvIHdlIG1ha2UgaXQgbmV2ZXIgY3V0b2ZmIHNvIGl0IGNoYW5nZXMgZWFjaCB0aW1lIGl0IGlzXG4gICAgIHJlY29tcHV0ZWQuICopXG4gIE5vZGUuc2V0X2N1dG9mZiBtYWluIEN1dG9mZi5uZXZlcjtcbiAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gIDwtIGFkZF9hbGFybVxuICAgICAgIGNsb2NrXG4gICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscykpO1xuICBtYWluXG47O1xuXG5sZXQgc25hcHNob3QgY2xvY2sgdmFsdWVfYXQgfmF0IH5iZWZvcmUgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy4oIDw9ICkgYXQgKG5vdyBjbG9jaylcbiAgdGhlblxuICAgIGlmIFRpbWVfbnMuKCA8ICkgYXQgKG5vdyBjbG9jaylcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yIFwiY2Fubm90IHRha2Ugc25hcHNob3QgaW4gdGhlIHBhc3RcIiBhdCBbJXNleHBfb2Y6IFRpbWVfbnMudF1cbiAgICBlbHNlIE9rIChmcmVlemUgdmFsdWVfYXQgfm9ubHlfZnJlZXplX3doZW46KEZuLmNvbnN0IHRydWUpKVxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlX3RvcCB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBsZXQgc25hcHNob3QgPSB7IFNuYXBzaG90Lm1haW47IGF0OyBiZWZvcmU7IHZhbHVlX2F0OyBjbG9jayB9IGluXG4gICAgTm9kZS5zZXRfa2luZCBtYWluIChTbmFwc2hvdCBzbmFwc2hvdCk7XG4gICAgKCogVW5saWtlIG90aGVyIHRpbWUtYmFzZWQgaW5jcmVtZW50YWxzLCBhIHNuYXBzaG90IGlzIGNyZWF0ZWQgaW4gW1Njb3BlLnRvcF0gYW5kXG4gICAgICAgY2Fubm90IGJlIGludmFsaWRhdGVkIGJ5IGl0cyBzY29wZS4gIFRodXMsIHRoZXJlIGlzIG5vIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGVcbiAgICAgICBhbGFybSB0aGF0IGlzIGFkZGVkLCBiZWNhdXNlIGl0IHdpbGwgbmV2ZXIgbmVlZCB0byBiZSByZW1vdmVkIGVhcmx5LiAqKVxuICAgIGlnbm9yZSAoYWRkX2FsYXJtIGNsb2NrIH5hdCAoQWxhcm1fdmFsdWUuY3JlYXRlIChTbmFwc2hvdCBzbmFwc2hvdCkpIDogQWxhcm0udCk7XG4gICAgT2sgbWFpbilcbjs7XG5cbmxldCBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIGNsb2NrIGNoaWxkID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBzdGVwX2Z1bmN0aW9uX25vZGUgPVxuICAgIHsgU3RlcF9mdW5jdGlvbl9ub2RlLm1haW5cbiAgICA7IHZhbHVlID0gVW9wdC5ub25lXG4gICAgOyBjaGlsZCA9IFVvcHQuc29tZSBjaGlsZFxuICAgIDsgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IHVwY29taW5nX3N0ZXBzID0gU2VxdWVuY2UuZW1wdHlcbiAgICA7IGFsYXJtID0gQWxhcm0ubnVsbFxuICAgIDsgYWxhcm1fdmFsdWUgPSBPYmoubWFnaWMgTm9uZSAoKiBzZXQgYmVsb3cgKilcbiAgICA7IGNsb2NrXG4gICAgfVxuICBpblxuICBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm1fdmFsdWUgPC0gQWxhcm1fdmFsdWUuY3JlYXRlIChTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBtYWluXG47O1xuXG5sZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gU3RhYmlsaXphdGlvbl9udW0ubm9uZTtcbiAgKCogZm9yY2UgdGhlIG5vZGUgdG8gYmUgc3RhbGUgKilcbiAgaWYgTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGVcbjs7XG5cbmxldCBhZHZhbmNlX2Nsb2NrIChjbG9jayA6IENsb2NrLnQpIH50b18gPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwiYWR2YW5jZV9jbG9ja1wiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjp0cnVlO1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0O1xuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IGNsb2NrKVxuICB0aGVuIChcbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyBjbG9jay5ub3cgdG9fO1xuICAgIFRpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrIGNsb2NrLnRpbWluZ193aGVlbCB+dG9fIH5oYW5kbGVfZmlyZWQ6Y2xvY2suaGFuZGxlX2ZpcmVkO1xuICAgIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIGNsb2NrLnRpbWluZ193aGVlbCB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICB3aGlsZSBVb3B0LmlzX3NvbWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGRvXG4gICAgICBsZXQgYWxhcm1fdmFsdWUgPSBVb3B0LnVuc2FmZV92YWx1ZSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgaW5cbiAgICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkO1xuICAgICAgYWxhcm1fdmFsdWUubmV4dF9maXJlZCA8LSBVb3B0Lm5vbmU7XG4gICAgICBtYXRjaCBhbGFybV92YWx1ZS5hY3Rpb24gd2l0aFxuICAgICAgfCBBdCB7IG1haW47IF8gfSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgTm9kZS5zZXRfa2luZCBtYWluIChDb25zdCBBZnRlcik7XG4gICAgICAgICAgbWFrZV9zdGFsZSBtYWluKVxuICAgICAgfCBBdF9pbnRlcnZhbHMgKHsgbWFpbjsgYmFzZTsgaW50ZXJ2YWw7IF8gfSBhcyBhdF9pbnRlcnZhbHMpIC0+XG4gICAgICAgIGlmIE5vZGUuaXNfdmFsaWQgbWFpblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgICAgICAgICA8LSBhZGRfYWxhcm1cbiAgICAgICAgICAgICAgIGNsb2NrXG4gICAgICAgICAgICAgICB+YXQ6KG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IGNsb2NrIH5iYXNlIH5pbnRlcnZhbClcbiAgICAgICAgICAgICAgIGFsYXJtX3ZhbHVlO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgU25hcHNob3QgeyBtYWluOyB2YWx1ZV9hdDsgXyB9IC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3ZhbGlkIG1haW4pO1xuICAgICAgICBzZXRfZnJlZXplIG1haW4gfmNoaWxkOnZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihmdW4gXyAtPiB0cnVlKTtcbiAgICAgICAgbWFrZV9zdGFsZSBtYWluXG4gICAgICB8IFN0ZXBfZnVuY3Rpb24geyBtYWluOyBfIH0gLT4gaWYgTm9kZS5pc192YWxpZCBtYWluIHRoZW4gbWFrZV9zdGFsZSBtYWluXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0KVxuOztcblxubGV0IGNyZWF0ZV9jbG9jayB0IH50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCA9XG4gIGxldCB0aW1pbmdfd2hlZWwgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgaW5cbiAgbGV0IHJlYyBjbG9jayA6IENsb2NrLnQgPVxuICAgIHsgbm93ID0gY3JlYXRlX3ZhciB0IHN0YXJ0XG4gICAgOyBoYW5kbGVfZmlyZWRcbiAgICA7IGZpcmVkX2FsYXJtX3ZhbHVlcyA9IFVvcHQubm9uZVxuICAgIDsgdGltaW5nX3doZWVsXG4gICAgfVxuICBhbmQgaGFuZGxlX2ZpcmVkIGFsYXJtID1cbiAgICBsZXQgYWxhcm1fdmFsdWUgPSBUaW1pbmdfd2hlZWwuQWxhcm0udmFsdWUgY2xvY2sudGltaW5nX3doZWVsIGFsYXJtIGluXG4gICAgYWxhcm1fdmFsdWUubmV4dF9maXJlZCA8LSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXM7XG4gICAgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIDwtIFVvcHQuc29tZSBhbGFybV92YWx1ZVxuICBpblxuICBjbG9ja1xuOztcblxubGV0IGNyZWF0ZSAobW9kdWxlIENvbmZpZyA6IENvbmZpZy5JbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBsZXQgYWRqdXN0X2hlaWdodHNfaGVhcCA9IEFkanVzdF9oZWlnaHRzX2hlYXAuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgbGV0IHJlY29tcHV0ZV9oZWFwID0gUmVjb21wdXRlX2hlYXAuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgbGV0IHQgPVxuICAgIHsgc3RhdHVzID0gTm90X3N0YWJpbGl6aW5nXG4gICAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzID0gQ29uZmlnLmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNcbiAgICA7IHN0YWJpbGl6YXRpb25fbnVtID0gU3RhYmlsaXphdGlvbl9udW0uemVyb1xuICAgIDsgY3VycmVudF9zY29wZSA9IFNjb3BlLnRvcFxuICAgIDsgYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgIDsgcmVjb21wdXRlX2hlYXBcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5ID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBudW1fYWN0aXZlX29ic2VydmVycyA9IDBcbiAgICA7IGFsbF9vYnNlcnZlcnMgPSBVb3B0Lm5vbmVcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGRpc2FsbG93ZWRfb2JzZXJ2ZXJzID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBuZXdfb2JzZXJ2ZXJzID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBvbmx5X2luX2RlYnVnID0gT25seV9pbl9kZWJ1Zy5jcmVhdGUgKClcbiAgICA7IHdlYWtfaGFzaHRibHMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgPSBmYWxzZVxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgPSAwXG4gICAgOyBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2NoYW5nZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfaW52YWxpZGF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfY3JlYXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgPSAwXG4gICAgOyBudW1fdmFyX3NldHMgPSAwXG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXlcbiAgICAgID8oaW5pdGlhbF9zaXplID0gZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSlcbiAgICAgIHRcbiAgICAgIGhhc2hhYmxlXG4gICAgICBwcm9qZWN0X2tleVxuICAgICAgZlxuICA9XG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBXZWFrX2hhc2h0YmwuY3JlYXRlIH5zaXplOmluaXRpYWxfc2l6ZSBoYXNoYWJsZSBpblxuICBsZXQgcGFja2VkID0gUGFja2VkX3dlYWtfaGFzaHRibC5UIHRhYmxlIGluXG4gIFdlYWtfaGFzaHRibC5zZXRfcnVuX3doZW5fdW51c2VkX2RhdGEgdGFibGUgfnRocmVhZF9zYWZlX2Y6KGZ1biAoKSAtPlxuICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC53ZWFrX2hhc2h0YmxzIHBhY2tlZCk7XG4gIHN0YWdlIChmdW4gYSAtPlxuICAgIGxldCBrZXkgPSBwcm9qZWN0X2tleSBhIGluXG4gICAgbWF0Y2ggV2Vha19oYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgV2Vha19oYXNodGJsLmFkZF9leG4gdGFibGUgfmtleSB+ZGF0YTpiO1xuICAgICAgYilcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgKCogR2l2ZW4gdGhhdCBpbnZhbGlkIG5vZGUgYXJlIGF0IGF0dGVtcHQgYXQgYXZvaWRpbmcgYnJlYWtpbmcgdGhlIGVudGlyZSBpbmNyZW1lbnRhbFxuICAgICBjb21wdXRhdGlvbiBvbiBwcm9ibGVtcywgbGV0J3MganVzdCBpZ25vcmUgYW55IG9wZXJhdGlvbiBvbiBhbiBpbnZhbGlkIGluY3JlbWVudGFsXG4gICAgIHJhdGhlciB0aGFuIHJhaXNpbmcuICopXG4gIGxldCBleHBlcnRfa2luZF9vZl9ub2RlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgIHwgRXhwZXJ0IGUgLT4gVW9wdC5zb21lIGVcbiAgICB8IEludmFsaWQgLT4gVW9wdC5ub25lXG4gICAgfCBraW5kIC0+IHJhaXNlX3MgWyVzZXhwIFwidW5leHBlY3RlZCBraW5kIGZvciBleHBlcnQgbm9kZVwiLCAoa2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHN0YXRlIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID1cbiAgICBsZXQgZSA9IEV4cGVydC5jcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGluXG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZSBzdGF0ZSAoRXhwZXJ0IGUpIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBpZiBPcHRpb24uaXNfc29tZSBzdGF0ZS5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGVcbiAgICAgIHRoZW5cbiAgICAgICAgc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGVcbiAgICAgICAgPC0gVCBub2RlIDo6IHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSA9XG4gICAgbWF0Y2ggc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJXNleHAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBkdXJpbmcgc3RhYmlsaXphdGlvblwiIDogc3RyaW5nKV1cbiAgICB8IFNvbWUgY3VycmVudCAtPiBjdXJyZW50XG4gIDs7XG5cbiAgKCogTm90ZSB0aGF0IHRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgbm90IHN5bW1ldHJpYyBvZiBvbmUgYW5vdGhlcjogaW4gW2xldCB5ID1cbiAgICAgbWFwIHhdLCBbeF0gaXMgYWx3YXlzIGEgY2hpbGQgb2YgW3ldIChhc3N1bWluZyBbeF0gZG9lc24ndCBiZWNvbWUgaW52YWxpZCkgYnV0IFt5XSBpblxuICAgICBvbmx5IGEgcGFyZW50IG9mIFt4XSBpZiB5IGlzIG5lY2Vzc2FyeS4gKilcbiAgbGV0IGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfY2hpbGQgbm9kZSB+Y2hpbGQ6Y3VycmVudClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgb24gcGFyZW50IG5vZGVzXCIgOiBzdHJpbmcpXG4gICAgICAgICwgfn4obm9kZS5raW5kIDogXyBLaW5kLnQpXG4gICAgICAgICwgfn4oY3VycmVudC5raW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19wYXJlbnQgc3RhdGUgbm9kZSBuYW1lID1cbiAgICBsZXQgKFQgY3VycmVudCkgPSBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lIGluXG4gICAgaWYgbm90IChOb2RlLmhhc19wYXJlbnQgfnBhcmVudDpjdXJyZW50IG5vZGUpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIGNoaWxkcmVuIG5vZGVzXCIgOiBzdHJpbmcpXG4gICAgICAgICwgfn4obm9kZS5raW5kIDogXyBLaW5kLnQpXG4gICAgICAgICwgfn4oY3VycmVudC5raW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgbGV0IGVfb3B0ID0gZXhwZXJ0X2tpbmRfb2Zfbm9kZSBub2RlIGluXG4gICAgaWYgVW9wdC5pc19zb21lIGVfb3B0XG4gICAgdGhlbiAoXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJtYWtlX3N0YWxlXCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICBtYXRjaCBFeHBlcnQubWFrZV9zdGFsZSBlIHdpdGhcbiAgICAgIHwgYEFscmVhZHlfc3RhbGUgLT4gKClcbiAgICAgIHwgYE9rIC0+XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIDs7XG5cbiAgbGV0IGludmFsaWRhdGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJpbnZhbGlkYXRlXCI7XG4gICAgaW52YWxpZGF0ZV9ub2RlIG5vZGU7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgc3RhdGVcbiAgOztcblxuICBsZXQgYWRkX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGRlcCA6IF8gRXhwZXJ0LmVkZ2UpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgbGV0IGVfb3B0ID0gZXhwZXJ0X2tpbmRfb2Zfbm9kZSBub2RlIGluXG4gICAgaWYgVW9wdC5pc19zb21lIGVfb3B0XG4gICAgdGhlbiAoXG4gICAgICBpZiBkZWJ1Z1xuICAgICAgdGhlblxuICAgICAgICBpZiBhbV9zdGFiaWxpemluZyBzdGF0ZVxuICAgICAgICAmJiBub3RcbiAgICAgICAgICAgICAoTGlzdC5tZW1cbiAgICAgICAgICAgICAgICB+ZXF1YWw6cGh5c19lcXVhbFxuICAgICAgICAgICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgICAgICAgICAgKFQgbm9kZSkpXG4gICAgICAgIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcImFkZF9kZXBlbmRlbmN5XCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICBsZXQgbmV3X2NoaWxkX2luZGV4ID0gRXhwZXJ0LmFkZF9jaGlsZF9lZGdlIGUgKEUgZGVwKSBpblxuICAgICAgKCogW25vZGVdIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIG5lY2Vzc2FyeSwgZXZlbiBpZiB3ZSBhcmUgcnVubmluZyBpbiBhIGNoaWxkIG9mXG4gICAgICAgICBbbm9kZV0sIGJlY2F1c2Ugd2UgY291bGQgYmUgcnVubmluZyBkdWUgdG8gYSBwYXJlbnQgb3RoZXIgdGhhbiBbbm9kZV0gbWFraW5nIHVzXG4gICAgICAgICBuZWNlc3NhcnkuICopXG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX3BhcmVudCB+Y2hpbGQ6ZGVwLmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg6bmV3X2NoaWxkX2luZGV4O1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKTtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGUpKVxuICA7O1xuXG4gIGxldCByZW1vdmVfZGVwZW5kZW5jeSAobm9kZSA6IF8gTm9kZS50KSAoZWRnZSA6IF8gRXhwZXJ0LmVkZ2UpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgbGV0IGVfb3B0ID0gZXhwZXJ0X2tpbmRfb2Zfbm9kZSBub2RlIGluXG4gICAgaWYgVW9wdC5pc19zb21lIGVfb3B0XG4gICAgdGhlbiAoXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJyZW1vdmVfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgKCogW25vZGVdIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIG5lY2Vzc2FyeSwgZm9yIHRoZSByZWFzb24gc3RhdGVkIGluXG4gICAgICAgICBbYWRkX2RlcGVuZGVuY3ldICopXG4gICAgICBsZXQgZWRnZV9pbmRleCA9IFVvcHQudmFsdWVfZXhuIGVkZ2UuaW5kZXggaW5cbiAgICAgIGxldCAoRSBsYXN0X2VkZ2UpID0gRXhwZXJ0Lmxhc3RfY2hpbGRfZWRnZV9leG4gZSBpblxuICAgICAgbGV0IGxhc3RfZWRnZV9pbmRleCA9IFVvcHQudmFsdWVfZXhuIGxhc3RfZWRnZS5pbmRleCBpblxuICAgICAgaWYgZWRnZV9pbmRleCA8PiBsYXN0X2VkZ2VfaW5kZXhcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBOb2RlLnN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmRcbiAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgIH5jaGlsZDE6ZWRnZS5jaGlsZFxuICAgICAgICAgICAgfmNoaWxkX2luZGV4MTplZGdlX2luZGV4XG4gICAgICAgICAgICB+Y2hpbGQyOmxhc3RfZWRnZS5jaGlsZFxuICAgICAgICAgICAgfmNoaWxkX2luZGV4MjpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIEV4cGVydC5zd2FwX2NoaWxkcmVuIGUgfmNoaWxkX2luZGV4MTplZGdlX2luZGV4IH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKTtcbiAgICAgIEV4cGVydC5yZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biBlO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfc3RhbGUgbm9kZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlX2NoaWxkIH5jaGlsZDplZGdlLmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZTtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIGVkZ2UuY2hpbGQpIHRoZW4gRXhwZXJ0LmRlY3JfaW52YWxpZF9jaGlsZHJlbiBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBEZXBlbmRlbmN5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEV4cGVydC5lZGdlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/KG9uX2NoYW5nZSA9IGlnbm9yZSkgY2hpbGQgOiBfIHQgPSB7IGNoaWxkOyBvbl9jaGFuZ2U7IGluZGV4ID0gVW9wdC5ub25lIH1cblxuICBsZXQgdmFsdWUgKHQgOiBfIHQpID1cbiAgICBsZXQgc3RhdGUgPSB0LmNoaWxkLnN0YXRlIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBTdGF0ZS5FeHBlcnQuYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50XG4gICAgICAgIHN0YXRlXG4gICAgICAgIHQuY2hpbGRcbiAgICAgICAgXCJEZXBlbmRlbmN5LnZhbHVlXCI7XG4gICAgKCogTm90IGV4cG9zaW5nIHRoZSBfZXhuLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgYWR2ZXJ0aXNlZCBhcyBiZWluZyB1c2FibGUgb25seVxuICAgICAgIGluc2lkZSB0aGUgY2FsbGJhY2tzIG9mIHBhcmVudHMsIHdoZXJlIGl0IHdpbGwgbm90IHJhaXNlLiAqKVxuICAgIE5vZGUudmFsdWVfZXhuIHQuY2hpbGRcbiAgOztcbmVuZFxuXG5tb2R1bGUgTm9kZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgTm9kZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSA/KG9uX29ic2VydmFiaWxpdHlfY2hhbmdlID0gZnVuIH5pc19ub3dfb2JzZXJ2YWJsZTpfIC0+ICgpKSBmID1cbiAgICBTdGF0ZS5FeHBlcnQuY3JlYXRlIHN0YXRlIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc3RhbGUgPSBTdGF0ZS5FeHBlcnQubWFrZV9zdGFsZVxuICBsZXQgd2F0Y2ggPSBGbi5pZFxuICBsZXQgaW52YWxpZGF0ZSA9IFN0YXRlLkV4cGVydC5pbnZhbGlkYXRlXG4gIGxldCBhZGRfZGVwZW5kZW5jeSA9IFN0YXRlLkV4cGVydC5hZGRfZGVwZW5kZW5jeVxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQucmVtb3ZlX2RlcGVuZGVuY3lcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbmxldCBjcmVhdGUgc3RhdGUgY2hpbGRyZW4gfmYgfnJlZHVjZSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggY2hpbGRyZW4gaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlZHVjZXIgPSBCYWxhbmNlZF9yZWR1Y2VyLmNyZWF0ZV9leG4gKCkgfmxlbiB+cmVkdWNlIGluXG4gICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXI7XG4gICAgbGV0IG5vZGUgPVxuICAgICAgRXhwZXJ0MS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBhID0gQmFsYW5jZWRfcmVkdWNlci5jb21wdXRlX2V4biByZWR1Y2VyIGluXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgICAgICBhKVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIEV4cGVydDEuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICBub2RlXG4gICAgICAgIChFeHBlcnQxLkRlcGVuZGVuY3kuY3JlYXRlIGNoaWxkcmVuLihpKSB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICBCYWxhbmNlZF9yZWR1Y2VyLnNldF9leG4gcmVkdWNlciBpIChmIGEpO1xuICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcikpXG4gICAgZG9uZTtcbiAgICBTb21lIChFeHBlcnQxLk5vZGUud2F0Y2ggbm9kZSkpXG47O1xuIiwiKCogVGhpcyBtb2R1bGUgaXMgbW9zdGx5IGEgd3JhcHBlciBhcm91bmQgW1N0YXRlXSBmdW5jdGlvbnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmNyZW1lbnRhbF9pbnRmXG5cbm1vZHVsZSB0eXBlIEluY3JlbWVudGFsX2NvbmZpZyA9IENvbmZpZy5JbmNyZW1lbnRhbF9jb25maWdcblxubW9kdWxlIENvbmZpZyA9IENvbmZpZ1xuXG5sZXQgZGVmYXVsdF9tYXhfaGVpZ2h0X2FsbG93ZWQgPSAxMjhcblxubW9kdWxlIEdlbmVyaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEN1dG9mZiA9IEN1dG9mZlxuICBtb2R1bGUgU3RlcF9mdW5jdGlvbiA9IFN0ZXBfZnVuY3Rpb25cblxuICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgdmFsIHQgOiB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlX2ludGVybmFsID0gY3JlYXRlXG5cbiAgICBsZXQgY3JlYXRlID8obWF4X2hlaWdodF9hbGxvd2VkID0gZGVmYXVsdF9tYXhfaGVpZ2h0X2FsbG93ZWQpICgpIDogKG1vZHVsZSBTKSA9XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSAobW9kdWxlIENvbmZpZy5EZWZhdWx0ICgpKSB+bWF4X2hlaWdodF9hbGxvd2VkXG4gICAgICBlbmQpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFNjb3BlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTY29wZVxuXG4gICAgbGV0IGN1cnJlbnQgKHN0YXRlIDogU3RhdGUudCkgKCkgPSBzdGF0ZS5jdXJyZW50X3Njb3BlXG4gICAgbGV0IHdpdGhpbiBzdGF0ZSB0IH5mID0gU3RhdGUud2l0aGluX3Njb3BlIHN0YXRlIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBOb2RlXG5cbiAgbGV0IHN0YXRlIHQgPSB0LnN0YXRlXG4gIGxldCBwYWNrIHQgPSBQYWNrZWQuVCB0XG4gIGxldCBjb25zdCBzdGF0ZSBhID0gU3RhdGUuY29uc3Qgc3RhdGUgYVxuICBsZXQgcmV0dXJuID0gY29uc3RcbiAgbGV0IG9ic2VydmUgPSBTdGF0ZS5jcmVhdGVfb2JzZXJ2ZXJcbiAgbGV0IG1hcCA9IFN0YXRlLm1hcFxuICBsZXQgYmluZCA9IFN0YXRlLmJpbmRcblxuICBtb2R1bGUgTl9hcnlfbWFwX2FuZF9iaW5kID0gc3RydWN0XG4gICAgbGV0IG1hcDIgPSBTdGF0ZS5tYXAyXG4gICAgbGV0IG1hcDMgPSBTdGF0ZS5tYXAzXG4gICAgbGV0IG1hcDQgPSBTdGF0ZS5tYXA0XG4gICAgbGV0IG1hcDUgPSBTdGF0ZS5tYXA1XG4gICAgbGV0IG1hcDYgPSBTdGF0ZS5tYXA2XG4gICAgbGV0IG1hcDcgPSBTdGF0ZS5tYXA3XG4gICAgbGV0IG1hcDggPSBTdGF0ZS5tYXA4XG4gICAgbGV0IG1hcDkgPSBTdGF0ZS5tYXA5XG4gICAgbGV0IG1hcDEwID0gU3RhdGUubWFwMTBcbiAgICBsZXQgbWFwMTEgPSBTdGF0ZS5tYXAxMVxuICAgIGxldCBtYXAxMiA9IFN0YXRlLm1hcDEyXG4gICAgbGV0IG1hcDEzID0gU3RhdGUubWFwMTNcbiAgICBsZXQgbWFwMTQgPSBTdGF0ZS5tYXAxNFxuICAgIGxldCBtYXAxNSA9IFN0YXRlLm1hcDE1XG4gICAgbGV0IGJpbmQyID0gU3RhdGUuYmluZDJcbiAgICBsZXQgYmluZDMgPSBTdGF0ZS5iaW5kM1xuICAgIGxldCBiaW5kNCA9IFN0YXRlLmJpbmQ0XG4gIGVuZFxuXG4gIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgbW9kdWxlIEluZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBJbmZpeFxuXG4gIGxldCBqb2luID0gU3RhdGUuam9pblxuICBsZXQgaWZfID0gU3RhdGUuaWZfXG4gIGxldCBsYXp5X2Zyb21fZnVuIHN0YXRlIGYgPSBTdGF0ZS5sYXp5X2Zyb21fZnVuIHN0YXRlIH5mXG4gIGxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gU3RhdGUuZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZVxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID0gU3RhdGUubWVtb2l6ZV9mdW5fYnlfa2V5XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5IHN0YXRlID9pbml0aWFsX3NpemUgaGFzaGFibGUgRm4uaWQgZlxuICA7O1xuXG4gIGxldCBhcnJheV9mb2xkIHN0YXRlIHRzIH5pbml0IH5mID0gU3RhdGUuYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZlxuICBsZXQgcmVkdWNlX2JhbGFuY2VkIHN0YXRlIHRzIH5mIH5yZWR1Y2UgPSBSZWR1Y2VfYmFsYW5jZWQuY3JlYXRlIHN0YXRlIHRzIH5mIH5yZWR1Y2VcblxuICBtb2R1bGUgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlID0gU3RhdGUuVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlXG5cbiAgbGV0IHVub3JkZXJlZF9hcnJheV9mb2xkID0gU3RhdGUudW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZFxuICBsZXQgYWxsID0gU3RhdGUuYWxsXG4gIGxldCBleGlzdHMgPSBTdGF0ZS5leGlzdHNcbiAgbGV0IGZvcl9hbGwgPSBTdGF0ZS5mb3JfYWxsXG4gIGxldCBib3RoID0gU3RhdGUuYm90aFxuICBsZXQgc3VtID0gU3RhdGUuc3VtXG4gIGxldCBvcHRfc3VtID0gU3RhdGUub3B0X3N1bVxuICBsZXQgc3VtX2ludCA9IFN0YXRlLnN1bV9pbnRcbiAgbGV0IHN1bV9mbG9hdCA9IFN0YXRlLnN1bV9mbG9hdFxuXG4gIG1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhclxuXG4gICAgbGV0IGNyZWF0ZSA9IFN0YXRlLmNyZWF0ZV92YXJcbiAgICBsZXQgc2V0ID0gU3RhdGUuc2V0X3ZhclxuICAgIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuICAgIGxldCB3YXRjaCB0ID0gdC53YXRjaFxuXG4gICAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8ganVzdCBzaG93IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgICAgcmVwcmVzZW50YXRpb24uICopXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHQudmFsdWUgfD4gWyVzZXhwX29mOiBhXVxuICAgIGxldCByZXBsYWNlIHQgfmYgPSBzZXQgdCAoZiAobGF0ZXN0X3ZhbHVlIHQpKVxuICBlbmRcblxuICBtb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE9ic2VydmVyXG5cbiAgICBtb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IEluaXRpYWxpemVkIG9mICdhXG4gICAgICAgIHwgQ2hhbmdlZCBvZiAnYSAqICdhXG4gICAgICAgIHwgSW52YWxpZGF0ZWRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQgb25fdXBkYXRlX2V4biB0IH4oZiA6IF8gVXBkYXRlLnQgLT4gdW5pdCkgPVxuICAgICAgU3RhdGUub2JzZXJ2ZXJfb25fdXBkYXRlX2V4biB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5lY2Vzc2FyeSBhIC0+IGYgKEluaXRpYWxpemVkIGEpXG4gICAgICAgIHwgQ2hhbmdlZCAoYTEsIGEyKSAtPiBmIChDaGFuZ2VkIChhMSwgYTIpKVxuICAgICAgICB8IEludmFsaWRhdGVkIC0+IGYgSW52YWxpZGF0ZWRcbiAgICAgICAgfCBVbm5lY2Vzc2FyeSAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJJbmNyZW1lbnRhbCBidWcgLS0gT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBnb3QgdW5leHBlY3RlZCB1cGRhdGUgXFxcbiAgICAgICAgICAgICBVbm5lY2Vzc2FyeVwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBbJXNleHBfb2Y6IF8gdF0pXG4gICAgOztcblxuICAgIGxldCBkaXNhbGxvd19mdXR1cmVfdXNlIHQgPSBTdGF0ZS5kaXNhbGxvd19mdXR1cmVfdXNlICF0XG4gICAgbGV0IHZhbHVlID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVcbiAgICBsZXQgdmFsdWVfZXhuID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVfZXhuXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAodCA6IF8gdCkgPVxuICAgICAgbWF0Y2ggIXQuc3RhdGUgd2l0aFxuICAgICAgfCBDcmVhdGVkIC0+IFslbWVzc2FnZSBcIjx1bnN0YWJpbGl6ZWQ+XCJdXG4gICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBbJW1lc3NhZ2UgXCI8ZGlzYWxsb3dlZD5cIl1cbiAgICAgIHwgSW5fdXNlIC0+XG4gICAgICAgIGxldCB1b3B0ID0gIXQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgICAgICB0aGVuIFslbWVzc2FnZSBcIjxpbnZhbGlkPlwiXVxuICAgICAgICBlbHNlIFslc2V4cCAoVW9wdC51bnNhZmVfdmFsdWUgdW9wdCA6IGEpXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBCZWZvcmVfb3JfYWZ0ZXIgPSBCZWZvcmVfb3JfYWZ0ZXJcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlLkNsb2NrXG5cbiAgICBsZXQgc3RhdGUgPSBpbmNyX3N0YXRlXG5cbiAgICBsZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgICAgIGxldCBhbGFybV9wcmVjaXNpb24gPSBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kIGluXG4gICAgICBsZXQgbGV2ZWxfYml0cyA9IFsgMTQ7IDEzOyA1IF0gaW5cbiAgICAgIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb25cbiAgICAgICAgfmxldmVsX2JpdHM6XG4gICAgICAgICAgKFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cyB+ZXh0ZW5kX3RvX21heF9udW1fYml0czp0cnVlKVxuICAgICAgICAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIHN0YXRlID8odGltaW5nX3doZWVsX2NvbmZpZyA9IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZykgfnN0YXJ0ICgpID1cbiAgICAgICgqIE1ha2Ugc3VyZSBbc3RhcnRdIGlzIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICBPdGhlcndpc2UsIGlmIHlvdVxuICAgICAgICAgZmVlZCBbQ2xvY2subm93ICgpXSB0byBhIHRpbWUgZnVuY3Rpb24sIGl0IGNhbiBiZSByb3VuZGVkIGRvd24gdG8gYSB0aW1lIGluXG4gICAgICAgICB0aGUgcGFzdCwgY2F1c2luZyBlcnJvcnMuICopXG4gICAgICBsZXQgc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuICAgICAgICAgIChUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCBzdGFydClcbiAgICAgIGluXG4gICAgICBTdGF0ZS5jcmVhdGVfY2xvY2sgc3RhdGUgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0XG4gICAgOztcblxuICAgIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC50aW1pbmdfd2hlZWxcbiAgICBsZXQgdGltaW5nX3doZWVsX2xlbmd0aCA9IFN0YXRlLnRpbWluZ193aGVlbF9sZW5ndGhcbiAgICBsZXQgbm93ID0gU3RhdGUubm93XG4gICAgbGV0IHdhdGNoX25vdyB0ID0gdC5ub3cud2F0Y2hcbiAgICBsZXQgYXQgPSBTdGF0ZS5hdFxuICAgIGxldCBhZnRlciA9IFN0YXRlLmFmdGVyXG4gICAgbGV0IGF0X2ludGVydmFscyA9IFN0YXRlLmF0X2ludGVydmFsc1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrID0gU3RhdGUuYWR2YW5jZV9jbG9ja1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrX2J5IHQgc3BhbiA9IGFkdmFuY2VfY2xvY2sgdCB+dG9fOihUaW1lX25zLmFkZCAobm93IHQpIHNwYW4pXG4gICAgbGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gPSBTdGF0ZS5pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG5cbiAgICBsZXQgc3RlcF9mdW5jdGlvbiB0IH5pbml0IHN0ZXBzID1cbiAgICAgIGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cbiAgICAgICAgdFxuICAgICAgICAoY29uc3QgKGluY3Jfc3RhdGUgdCkgKFN0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMpKVxuICAgIDs7XG5cbiAgICBsZXQgc25hcHNob3QgPSBTdGF0ZS5zbmFwc2hvdFxuICBlbmRcblxuICBsZXQgZnJlZXplID8od2hlbl8gPSBmdW4gXyAtPiB0cnVlKSB0ID0gU3RhdGUuZnJlZXplIHQgfm9ubHlfZnJlZXplX3doZW46d2hlbl9cbiAgbGV0IGRlcGVuZF9vbiB0IH5kZXBlbmRfb24gPSBTdGF0ZS5kZXBlbmRfb24gdCB+ZGVwZW5kX29uXG4gIGxldCBuZWNlc3NhcnlfaWZfYWxpdmUgPSBTdGF0ZS5uZWNlc3NhcnlfaWZfYWxpdmVcblxuICBtb2R1bGUgVXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxuICBsZXQgb25fdXBkYXRlID0gU3RhdGUubm9kZV9vbl91cGRhdGVcbiAgbGV0IHN0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLnN0YWJpbGl6ZSBzdGF0ZVxuICBsZXQgYW1fc3RhYmlsaXppbmcgc3RhdGUgPSBTdGF0ZS5hbV9zdGFiaWxpemluZyBzdGF0ZVxuICBsZXQgc2F2ZV9kb3QgPSBTdGF0ZS5zYXZlX2RvdFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSA9IFN0YXRlLnNhdmVfZG90X3RvX2ZpbGVcblxuICBtb2R1bGUgTm9kZV92YWx1ZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEludmFsaWRcbiAgICAgIHwgTmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgICAgfCBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgbm9kZV92YWx1ZSB0IDogXyBOb2RlX3ZhbHVlLnQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIEludmFsaWRcbiAgICBlbHNlIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICAgIGVsc2UgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICA7O1xuXG4gICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIHNob3cganVzdCB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICByZXByZXNlbnRhdGlvbi4gIFdlIG9ubHkgc2hvdyB0aGUgdmFsdWUgaWYgaXQgaXMgbmVjZXNzYXJ5IGFuZCB2YWxpZC4gKilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gXCI8aW52YWxpZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgdGhlbiBcIjx1bm5lY2Vzc2FyeT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIFVvcHQuaXNfbm9uZSB0LnZhbHVlX29wdFxuICAgIHRoZW4gXCI8dW5jb21wdXRlZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIHVuc2FmZV92YWx1ZSB0IHw+IFslc2V4cF9vZjogYV1cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gRXhwZXJ0MVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggdDEgdDIgPSBtYXAyIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuXG4gICAgICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHdhdGNoID0gVmFyLndhdGNoXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID0gU3RhdGUud2Vha19tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgRm4uaWQgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY29uZmlnIChJbmNyZW1lbnRhbF9jb25maWcgOiBJbmNyZW1lbnRhbF9jb25maWcpICgpID0gc3RydWN0XG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIChtb2R1bGUgSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkOjEyOFxuICBlbmRcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENsb2NrXG5cbiAgICBsZXQgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCAoKSA9XG4gICAgICBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgU3RhdGUudCB+c3RhcnQgKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBlcnRcblxuICAgIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgbGV0IGNyZWF0ZSA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9IGNyZWF0ZSBTdGF0ZS50ID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gICAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSAoKSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBTdGF0ZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFNjb3BlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTY29wZVxuXG4gICAgbGV0IGN1cnJlbnQgKCkgPSBjdXJyZW50IFN0YXRlLnQgKClcbiAgICBsZXQgd2l0aGluIHQgfmYgPSB3aXRoaW4gU3RhdGUudCB0IH5mXG4gIGVuZFxuXG4gIG1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhclxuXG4gICAgbGV0IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgdmFsdWUgPSBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIFN0YXRlLnQgdmFsdWVcbiAgZW5kXG5cbiAgbGV0IGNvbnN0IGEgPSBjb25zdCBTdGF0ZS50IGFcbiAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuICBsZXQgYWxsIHRzID0gYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGV4aXN0cyB0cyA9IGV4aXN0cyBTdGF0ZS50IHRzXG4gIGxldCBmb3JfYWxsIHRzID0gZm9yX2FsbCBTdGF0ZS50IHRzXG4gIGxldCBsYXp5X2Zyb21fZnVuIHN0YXRlIGYgPSBTdGF0ZS5sYXp5X2Zyb21fZnVuIHN0YXRlIH5mXG5cbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPSBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICBsZXQgYXJyYXlfZm9sZCB0cyB+aW5pdCB+ZiA9IGFycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZlxuICBsZXQgcmVkdWNlX2JhbGFuY2VkIHRzIH5mIH5yZWR1Y2UgPSByZWR1Y2VfYmFsYW5jZWQgU3RhdGUudCB0cyB+ZiB+cmVkdWNlXG5cbiAgbGV0IHVub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH51cGRhdGUgPVxuICAgIHVub3JkZXJlZF9hcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmYgfnVwZGF0ZSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICA7O1xuXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gICAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfmluaXQgfmYgfmZfaW52ZXJzZVxuICA7O1xuXG4gIGxldCBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgc3VtX2ludCB0cyA9IHN1bV9pbnQgU3RhdGUudCB0c1xuICBsZXQgc3VtX2Zsb2F0IHRzID0gc3VtX2Zsb2F0IFN0YXRlLnQgdHNcbiAgbGV0IHN0YWJpbGl6ZSAoKSA9IHN0YWJpbGl6ZSBTdGF0ZS50XG4gIGxldCBhbV9zdGFiaWxpemluZyAoKSA9IGFtX3N0YWJpbGl6aW5nIFN0YXRlLnRcbiAgbGV0IHNhdmVfZG90IG91dCA9IHNhdmVfZG90IFN0YXRlLnQgb3V0XG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgPSBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjpzYXZlX2RvdFxuICBsZXQgbGF6eV9mcm9tX2Z1biBmID0gbGF6eV9mcm9tX2Z1biBTdGF0ZS50IGZcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlICgpID0gTWFrZV93aXRoX2NvbmZpZyAoQ29uZmlnLkRlZmF1bHQgKCkpICgpXG5pbmNsdWRlIEdlbmVyaWNcblxubW9kdWxlIEFkZF93aXRuZXNzMCAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAndyB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ3cgdCA9IE0udFxuXG4gIGxldCBpbnZhcmlhbnQgXyB0ID0gTS5pbnZhcmlhbnQgdFxuICBsZXQgc2V4cF9vZl90IF8gdCA9IE0uc2V4cF9vZl90IHRcbmVuZFxuXG5tb2R1bGUgQWRkX3dpdG5lc3MxIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID0gTS5pbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBNLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuZW5kXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICBpbmNsdWRlIENsb2NrXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChDbG9jaylcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgRXhwZXJ0XG5cbiAgbW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZVxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIGluY2x1ZGUgTm9kZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoTm9kZSlcbmVuZFxuXG50eXBlICgnYSwgJ3cpIHQgPSAoJ2EsICd3KSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbnR5cGUgKCdhLCAndykgaW5jcmVtZW50YWwgPSAoJ2EsICd3KSB0XG5cbmxldCBpbnZhcmlhbnQgPSBOb2RlLmludmFyaWFudFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoT2JzZXJ2ZXIpXG5lbmRcblxubW9kdWxlIFNjb3BlID0gc3RydWN0XG4gIGluY2x1ZGUgU2NvcGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFNjb3BlKVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YXRlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTdGF0ZSlcbmVuZFxuXG5tb2R1bGUgVmFyID0gc3RydWN0XG4gIGluY2x1ZGUgVmFyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChWYXIpXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgaW5jcmVtZW50YWxcbiAgICB3aXRoIHR5cGUgQmVmb3JlX29yX2FmdGVyLnQgPSBCZWZvcmVfb3JfYWZ0ZXIudFxuICAgIHdpdGggdHlwZSBDbG9jay50ID0gc3RhdGVfd2l0bmVzcyBDbG9jay50XG4gICAgd2l0aCB0eXBlICdhIEN1dG9mZi50ID0gJ2EgQ3V0b2ZmLnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0LkRlcGVuZGVuY3kudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0LkRlcGVuZGVuY3kudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuTm9kZS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuTm9kZS50XG4gICAgd2l0aCB0eXBlIEV4cGVydC5TdGVwX3Jlc3VsdC50ID0gRXhwZXJ0LlN0ZXBfcmVzdWx0LnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgT2JzZXJ2ZXIudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci5VcGRhdGUudCA9ICdhIE9ic2VydmVyLlVwZGF0ZS50XG4gICAgd2l0aCB0eXBlIFBhY2tlZC50ID0gUGFja2VkLnRcbiAgICB3aXRoIHR5cGUgU2NvcGUudCA9IHN0YXRlX3dpdG5lc3MgU2NvcGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS50ID0gc3RhdGVfd2l0bmVzcyBTdGF0ZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLlN0YXRzLnQgPSBTdGF0ZS5TdGF0cy50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50ID1cbiAgICAgICAgICAgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVXBkYXRlLnQgPSAnYSBVcGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBWYXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgVmFyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZGVidWcgPSBkZWJ1Z1xuZW5kXG4iLCJcbm9wZW4gQmFzZVxuXG5tb2R1bGUgQ29tbXV0YXRpdmVfZ3JvdXAgPSBzdHJ1Y3RcbiAgKCoqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblxuICAgICAgKyBhc3NvY2lhdGl2aXR5OiBbKGEgKyBiKSArIGMgPSBhICsgKGIgKyBjKV1cbiAgICAgICsgaWRlbnRpdHk6IFt6ZXJvICsgYSA9IGEgKyB6ZXJvID0gYV1cbiAgICAgICsgaW52ZXJzZXM6IGdpdmVuIGFueSBbYV0gdGhlcmUgZXhpc3RzIGEgKHVuaXF1ZSkgZWx0IFtiXSBzdWNoIHRoYXQgW2EgKyBiID0gYiArIGEgPVxuICAgICAgemVyb11cbiAgICAgICsgY29tbXV0YXRpdml0eTogW2EgKyBiID0gYiArIGFdXG4gICopXG5cbiAgbW9kdWxlIHR5cGUgV2l0aG91dF9zZXhwID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCspICA6IHQgLT4gdCAtPiB0XG4gICAgdmFsICgtKSAgOiB0IC0+IHQgLT4gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgaW5jbHVkZSBXaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVmVjdG9yX3NwYWNlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcbiAgICBpbmNsdWRlIENvbW11dGF0aXZlX2dyb3VwLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIEluY3JfbWFwX2ludGZcblxuKCoqIFRoaXMgdHlwZSBsZXRzIHVzIGNhcHR1cmUgdGhlIGtpbmQgb2YgbWFwIGZ1bmN0aW9uIGJlaW5nIHBlcmZvcm1lZCwgc28gd2UgY2FuIHdpdGhcbiAgICBvbmUgaW1wbGVtZW50YXRpb24gcGVyZm9ybSBtYXAgYW5kIGZpbHRlci1tYXAgb3BlcmF0aW9ucy5cblxuICAgIEhlcmUsIFsnaW5wdXRfZGF0YV0gaXMgdGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgaW5wdXQgbWFwLCBbJ291dHB1dF9kYXRhXSBpcyB0aGUgdHlwZVxuICAgIG9mIGRhdGEgaW4gdGhlIG91dHB1dCBtYXAsIGFuZCBbJ2Zfb3V0cHV0XSBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIFt+Zl0gZnVuY3Rpb25cbiAgICBwYXNzZWQgdG8gdGhlIG1hcHBpbmcgZnVuY3Rpb24uICopXG5tb2R1bGUgTWFwX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ2Zfb3V0cHV0KSB0ID1cbiAgICB8IE1hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEpIHRcbiAgICB8IEZpbHRlcl9tYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhIG9wdGlvbikgdFxuXG4gICgqIFRoZSBleHRyYSB0eXBlIHZhcmlhYmxlICdhIGlzIHRvIGFsbG93IGluIGZ1dHVyZTpcbiAgICAgfCBGaWx0ZXIgOiAoJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsIGJvb2wpIHQgKilcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBsZXQgd2l0aF9vbGQgaSB+ZiA9XG4gICAgbGV0IG9wZW4gSW5jcmVtZW50YWwuTGV0X3N5bnRheCBpblxuICAgIGxldCBvbGQgPSByZWYgTm9uZSBpblxuICAgIGxldCVtYXAgYSA9IGkgaW5cbiAgICBsZXQgYiA9IGYgfm9sZDohb2xkIGEgaW5cbiAgICBvbGQgOj0gU29tZSAoYSwgYik7XG4gICAgYlxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8ocmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSA9IGZhbHNlKVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbGV0IGRlZmF1bHQgfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyA9XG4gICAgICAgIGFkZCB+a2V5IH5kYXRhOm5ld19kYXRhIChyZW1vdmUgfmtleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgICBpblxuICAgICAgT3B0aW9uLnZhbHVlIHVwZGF0ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgd2l0aF9vbGQgbWFwIH5mOihmdW4gfm9sZCBuZXdfaW4gLT5cbiAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IE1hcC5mb2xkIH5pbml0IH5mOmFkZCBuZXdfaW5cbiAgICAgICAgIHwgU29tZSBpbml0aWFsIC0+IGluaXRpYWwgfmluaXQgbmV3X2luKVxuICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9vdXQpIC0+XG4gICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgIHRoZW4gaW5pdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgIH5pbml0Om9sZF9vdXRcbiAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgbmV3X2luXG4gICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IG9sZCAtPiByZW1vdmUgfmtleSB+ZGF0YTpvbGQgYWNjXG4gICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld18gLT4gYWRkIH5rZXkgfmRhdGE6bmV3XyBhY2NcbiAgICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkLCBuZXdfKSAtPiB1cGRhdGUgfmtleSB+b2xkX2RhdGE6b2xkIH5uZXdfZGF0YTpuZXdfIGFjYykpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgID91cGRhdGVcbiAgICAgICAgaW5jcl9tYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbWF0Y2ggdXBkYXRlIHdpdGhcbiAgICAgIHwgU29tZSB1cGRhdGUgLT4gdXBkYXRlXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZFxuICAgICAgICAgICAgfm91dGVyX2tleVxuICAgICAgICAgICAgfmlubmVyX2tleVxuICAgICAgICAgICAgfmRhdGE6bmV3X2RhdGFcbiAgICAgICAgICAgIChyZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICBpblxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBpbmNyX21hcFxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlOihmdW4gfmtleTpvdXRlcl9rZXkgfm9sZF9kYXRhOm9sZF9pbm5lcl9tYXAgfm5ld19kYXRhOm5ld19pbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIChNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiBvbGRfaW5uZXJfbWFwIG5ld19pbm5lcl9tYXAgfmRhdGFfZXF1YWwpXG4gICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGlubmVyX2tleSwgZGlmZikgLT5cbiAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBkYXRhX3JlbW92ZWQgLT4gcmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpkYXRhX3JlbW92ZWQgYWNjXG4gICAgICAgICAgICB8IGBSaWdodCBkYXRhX2FkZGVkIC0+IGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9hZGRlZCBhY2NcbiAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZF9kYXRhLCBuZXdfZGF0YSkgLT5cbiAgICAgICAgICAgICAgdXBkYXRlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYykpXG4gICAgICB+YWRkOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgOztcblxuICBsZXQgd2l0aF9jb21wYXJhdG9yJyBnZXRfY29tcGFyYXRvciB4IGYgPVxuICAgIEluY3JlbWVudGFsLmJpbmQgKEluY3JlbWVudGFsLmZyZWV6ZSAoSW5jcmVtZW50YWwubWFwIHggfmY6Z2V0X2NvbXBhcmF0b3IpKSB+ZlxuICA7O1xuXG4gICgqKiBDYXB0dXJlcyB0aGUgY29tcGFyYXRvciAod2hpY2ggY2FuJ3QgY2hhbmdlIGFueXdheSwgc2luY2UgdGhlIHR5cGUgZGV0ZXJtaW5lcyB0aGVcbiAgICAgIGNvbXBhcmF0b3IpIGJ5IGZyZWV6aW5nIHRoZSBjb3JyZXNwb25kaW5nIG1hcC4gIE5vdGUgdGhhdCBieSBmaXJzdCB1c2luZyBJbmNyZW1lbnRhbC5tYXAgdG9cbiAgICAgIGdldCB0aGUgY29tcGFyYXRvciBvdXQgb2YgdGhlIG1hcCwgd2UgYWxsb3cgdGhlIGluaXRpYWwgbWFwIGl0c2VsZiB0byBiZSBnYXJiYWdlXG4gICAgICBjb2xsZWN0ZWQgKilcbiAgbGV0IHdpdGhfY29tcGFyYXRvciBtYXAgZiA9IHdpdGhfY29tcGFyYXRvcicgTWFwLmNvbXBhcmF0b3IgbWFwIGZcblxuICBsZXQgb2Zfc2V0IHNldCA9XG4gICAgd2l0aF9jb21wYXJhdG9yJyBTZXQuY29tcGFyYXRvciBzZXQgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgb2xkX2lucHV0ID0gcmVmIChTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcikgaW5cbiAgICAgIGxldCBvbGRfb3V0cHV0ID0gcmVmIChNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcikgaW5cbiAgICAgIEluY3JlbWVudGFsLm1hcCBzZXQgfmY6KGZ1biBuZXdfaW5wdXQgLT5cbiAgICAgICAgbGV0IG5ld19vdXRwdXQgPVxuICAgICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICAgIChTZXQuc3ltbWV0cmljX2RpZmYgIW9sZF9pbnB1dCBuZXdfaW5wdXQpXG4gICAgICAgICAgICB+aW5pdDohb2xkX291dHB1dFxuICAgICAgICAgICAgfmY6KGZ1biBvdXRwdXQgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBGaXJzdCBrIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtcbiAgICAgICAgICAgICAgfCBTZWNvbmQgayAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTprIH5kYXRhOigpKVxuICAgICAgICBpblxuICAgICAgICBvbGRfaW5wdXQgOj0gbmV3X2lucHV0O1xuICAgICAgICBvbGRfb3V0cHV0IDo9IG5ld19vdXRwdXQ7XG4gICAgICAgIG5ld19vdXRwdXQpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXAgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOmlucHV0X2RhdGEgLT4gZl9vdXRwdXQpXG4gICAgPVxuICAgIHdpdGhfb2xkIG1hcCB+ZjooZnVuIH5vbGQgaW5wdXQgLT5cbiAgICAgIG1hdGNoIG9sZCwgTWFwLmxlbmd0aCBpbnB1dCB3aXRoXG4gICAgICB8IF8sIDAgfCBOb25lLCBfIC0+XG4gICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IChNYXAubWFwaSBpbnB1dCB+ZiA6ICgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQpXG4gICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT4gTWFwLmZpbHRlcl9tYXBpIGlucHV0IH5mKVxuICAgICAgfCBTb21lIChvbGRfaW5wdXQsIG9sZF9vdXRwdXQpLCBfIC0+XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgb2xkX2lucHV0XG4gICAgICAgICAgaW5wdXRcbiAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgIH5pbml0Om9sZF9vdXRwdXRcbiAgICAgICAgICB+ZjooZnVuIG91dHB1dCAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgfCBgUmlnaHQgbmV3X2RhdGEgfCBgVW5lcXVhbCAoXywgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIGxldCByZXMgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgICAgICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpyZXNcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBvdXRwdXRfZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhOm91dHB1dF9kYXRhKSkpKVxuICA7O1xuXG4gIGxldCBtYXBpID9kYXRhX2VxdWFsIG1hcCB+ZiA9IGdlbmVyaWNfbWFwaSBNYXAgP2RhdGFfZXF1YWwgbWFwIH5mXG4gIGxldCBmaWx0ZXJfbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmYgPSBnZW5lcmljX21hcGkgRmlsdGVyX21hcCA/ZGF0YV9lcXVhbCBtYXAgfmZcbiAgbGV0IG1hcCA/ZGF0YV9lcXVhbCBtYXAgfmYgPSBtYXBpID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbiAgbGV0IGZpbHRlcl9tYXAgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCB3aXRoX29sZDIgaTEgaTIgfmYgPVxuICAgIGxldCBvbGQgPSByZWYgTm9uZSBpblxuICAgIEluY3JlbWVudGFsLm1hcDIgaTEgaTIgfmY6KGZ1biBhMSBhMiAtPlxuICAgICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhMSBhMiBpblxuICAgICAgb2xkIDo9IFNvbWUgKGExLCBhMiwgYik7XG4gICAgICBiKVxuICA7O1xuXG4gIGxldCBtYXBpX2NvdW50XG4gICAgICAgICh0eXBlIGEgY21wKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBpbnB1dFxuICAgICAgICB+KGNvbXBhcmF0b3IgOlxuICAgICAgICAgICAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcCkpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9ICh2YWwgY29tcGFyYXRvcikgaW5cbiAgICBsZXQgYWRkIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC51cGRhdGUgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgIHwgU29tZSBuIC0+IG4gKyAxKVxuICAgIGluXG4gICAgbGV0IHJlbW92ZSBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAuY2hhbmdlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgMSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBuIC0+IFNvbWUgKG4gLSAxKSlcbiAgICBpblxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgTS5jb21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgZWxzZSBhY2MgfD4gcmVtb3ZlIHByZXZfa2V5IHw+IGFkZCBuZXdfa2V5KVxuICA7O1xuXG4gIGxldCBtYXBfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtaW5faGVscGVyIG1hcCA9XG4gICAgbWF0Y2ggTWFwLm1pbl9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSAtPiBTb21lIG1pblxuICA7O1xuXG4gIGxldCBtYXhfaGVscGVyIG1hcCA9XG4gICAgbWF0Y2ggTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWF4LCBfKSAtPiBTb21lIG1heFxuICA7O1xuXG4gIGxldCBib3VuZHNfaGVscGVyIG1hcCA9XG4gICAgbWF0Y2ggTWFwLm1pbl9lbHQgbWFwLCBNYXAubWF4X2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtaW4sIF8pLCBTb21lIChtYXgsIF8pIC0+IFNvbWUgKG1pbiwgbWF4KVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgbWFwaV9taW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCB+ZjptaW5faGVscGVyIChtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX21heCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIH5mOm1heF9oZWxwZXIgKG1hcGlfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6Ym91bmRzX2hlbHBlciAobWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9taW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtYXBfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX21heCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl92YWx1ZSA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwaV9tbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXhfdmFsdWUgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWFwX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCB2YWx1ZV9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgPyhkYXRhX2VxdWFsX2xlZnQgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGRhdGFfZXF1YWxfcmlnaHQgPSBwaHlzX2VxdWFsKVxuICAgICAgICBsZWZ0X21hcFxuICAgICAgICByaWdodF9tYXBcbiAgICAgICAgfmZcbiAgICA9XG4gICAgd2l0aF9vbGQyIGxlZnRfbWFwIHJpZ2h0X21hcCB+ZjooZnVuIH5vbGQgbmV3X2xlZnRfbWFwIG5ld19yaWdodF9tYXAgLT5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgICBsZXQgb2xkX2xlZnRfbWFwLCBvbGRfcmlnaHRfbWFwLCBvbGRfb3V0cHV0ID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgICBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIGluXG4gICAgICBsZXQgbGVmdF9kaWZmID1cbiAgICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9sZWZ0X21hcCBuZXdfbGVmdF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICBpblxuICAgICAgbGV0IHJpZ2h0X2RpZmYgPVxuICAgICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX3JpZ2h0X21hcCBuZXdfcmlnaHRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgIGluXG4gICAgICAoKiBXZSBtZXJnZSB0aGUgdHdvIHNpZGVzIG9mIHRoZSBkaWZmcyB0b2dldGhlciBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRvIGhhbmRsZSBlYWNoXG4gICAgICAgICBrZXkgZXhhY3RseSBvbmNlLiBUaGlzIHJlbGllcyBvbiBzeW1tZXRyaWMgZGlmZiBnaXZpbmcgc29ydGVkIG91dHB1dC4gKilcbiAgICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgICBsZWZ0X2RpZmZcbiAgICAgICAgcmlnaHRfZGlmZlxuICAgICAgICB+Y29tcGFyZTooZnVuIChsZWZ0X2tleSwgXykgKHJpZ2h0X2tleSwgXykgLT5cbiAgICAgICAgICBjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5KVxuICAgICAgfD4gU2VxdWVuY2UuZm9sZCB+aW5pdDpvbGRfb3V0cHV0IH5mOihmdW4gb3V0cHV0IGRpZmZfZWxlbWVudCAtPlxuICAgICAgICBsZXQga2V5ID1cbiAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgIHwgTGVmdCAoa2V5LCBfKSB8IFJpZ2h0IChrZXksIF8pIC0+IGtleVxuICAgICAgICAgIHwgQm90aCAoKGxlZnRfa2V5LCBfKSwgKHJpZ2h0X2tleSwgXykpIC0+XG4gICAgICAgICAgICBhc3NlcnQgKGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkgPSAwKTtcbiAgICAgICAgICAgIGxlZnRfa2V5XG4gICAgICAgIGluXG4gICAgICAgICgqIFRoZXNlIHZhbHVlcyByZXByZXNlbnQgd2hldGhlciB0aGVyZSBpcyBkYXRhIGZvciB0aGUgZ2l2ZW4ga2V5IGluIHRoZSBuZXdcbiAgICAgICAgICAgaW5wdXQgaW4gdGhlIGxlZnQgYW5kIHJpZ2h0IG1hcC4gKilcbiAgICAgICAgbGV0IGxlZnRfZGF0YV9vcHQsIHJpZ2h0X2RhdGFfb3B0ID1cbiAgICAgICAgICBsZXQgbmV3X2RhdGEgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgIG5ld19kYXRhIGxlZnRfZGlmZiwgbmV3X2RhdGEgcmlnaHRfZGlmZlxuICAgICAgICAgIHwgTGVmdCAoXywgbGVmdF9kaWZmKSAtPiBuZXdfZGF0YSBsZWZ0X2RpZmYsIE1hcC5maW5kIG5ld19yaWdodF9tYXAga2V5XG4gICAgICAgICAgfCBSaWdodCAoXywgcmlnaHRfZGlmZikgLT4gTWFwLmZpbmQgbmV3X2xlZnRfbWFwIGtleSwgbmV3X2RhdGEgcmlnaHRfZGlmZlxuICAgICAgICBpblxuICAgICAgICBsZXQgb3V0cHV0X2RhdGFfb3B0ID1cbiAgICAgICAgICBtYXRjaCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgeCwgTm9uZSAtPiBmIH5rZXkgKGBMZWZ0IHgpXG4gICAgICAgICAgfCBOb25lLCBTb21lIHkgLT4gZiB+a2V5IChgUmlnaHQgeSlcbiAgICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGYgfmtleSAoYEJvdGggKHgsIHkpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBvdXRwdXRfZGF0YV9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGEpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobGhzIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YTooaW5wdXRfZGF0YSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+IChmX291dHB1dCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGxocyBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcHJldl9ub2RlcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgYWNjIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhYWNjKSBpblxuICAgIGxldCAob25faW5uZXJfY2hhbmdlIDoga2V5OidrZXkgLT4gZl9vdXRwdXQgLT4gdW5pdCkgPVxuICAgICAgbWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICB8IE1hcF90eXBlLk1hcCAtPiBmdW4gfmtleSBkYXRhIC0+IGFjYyA6PSBNYXAuc2V0ICFhY2MgfmtleSB+ZGF0YVxuICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgIGZ1biB+a2V5IG9wdCAtPlxuICAgICAgICAgIGxldCBvbGQgPSAhYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICAgICAgOj0gKG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvbGQga2V5XG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG9sZCB+a2V5IH5kYXRhKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaHNfY2hhbmdlID1cbiAgICAgIGxhenlcbiAgICAgICAgKEluY3JlbWVudGFsLm1hcCBsaHMgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgbGV0IG5ld19ub2RlcyA9XG4gICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgIH5mOihmdW4gbm9kZXMgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGRlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByZXN1bHQgZGVwO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSBNYXAucmVtb3ZlICFhY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgIGxldCB1c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgIChmIH5rZXkgfmRhdGE6KEUuTm9kZS53YXRjaCBub2RlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToob25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IHVzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbm9kZXMgfmtleSB+ZGF0YToobm9kZSwgdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLkZpbHRlcl9tYXBcbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcicgTWFwX3R5cGUuTWFwID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXAnID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBtYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAnID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtZXJnZScgP2N1dG9mZiA/ZGF0YV9lcXVhbF9sZWZ0ID9kYXRhX2VxdWFsX3JpZ2h0IG1hcDEgbWFwMiB+ZiA9XG4gICAgbWVyZ2UgP2RhdGFfZXF1YWxfbGVmdCA/ZGF0YV9lcXVhbF9yaWdodCBtYXAxIG1hcDIgfmY6KGZ1biB+a2V5Ol8gZGlmZiAtPiBTb21lIGRpZmYpXG4gICAgfD4gZmlsdGVyX21hcGknID9jdXRvZmYgfmY6KGZ1biB+a2V5IH5kYXRhOmRpZmYgLT4gZiB+a2V5IGRpZmYpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgICh0eXBlIHYgdjEgdjIgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhkYXRhX2VxdWFsIDogdiAtPiB2IC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGxlZnRfcmVzdWx0X2VxdWFsIDogdjEgLT4gdjEgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ocmlnaHRfcmVzdWx0X2VxdWFsIDogdjIgLT4gdjIgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6diAtPiB2MSAqIHYyKVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBpbnB1dF9jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgbWF0Y2ggTWFwLmlzX2VtcHR5ICFwcmV2X21hcCwgTWFwLmlzX2VtcHR5IG1hcCB3aXRoXG4gICAgICAgICAgfCB0cnVlLCB0cnVlIHwgZmFsc2UsIHRydWUgLT4gZW1wdHlfbWFwLCBlbXB0eV9tYXBcbiAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAoKiBNYXBwaW5nIG9uIGEgbWFwIGlzIHdheSBmYXN0ZXIgdGhhbiBzeW1tZXRyaWMgZGlmZmluZyBhbmQgdGhlblxuICAgICAgICAgICAgICAgYnVpbGRpbmcgdGhlIG1hcHMgdXAgcGllY2UgYnkgcGllY2UsIHNvIHdlIGRvIHRoaXMgd2hlbmV2ZXIgd2VcbiAgICAgICAgICAgICAgIHRyYW5zaXRpb24gZnJvbSBcImVtcHR5XCIgdG8gXCJzb21ldGhpbmdcIiwgd2hpY2ggd2lsbCBhbG1vc3QgYWx3YXlzXG4gICAgICAgICAgICAgICBoYXBwZW4gb24gdGhlIGZpcnN0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICBsZXQgbCwgXyA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJpZ2h0ID1cbiAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgIGxldCBfLCByID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgIH5pbml0OighbGVmdF9hY2MsICFyaWdodF9hY2MpXG4gICAgICAgICAgICAgIH5mOihmdW4gKGxlZnQsIHJpZ2h0KSAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKHByZXYsIG5ld18pIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgcHJldl9hLCBwcmV2X2IgPSBmIH5rZXkgfmRhdGE6cHJldiBpblxuICAgICAgICAgICAgICAgICAgbGV0IG5ld19hLCBuZXdfYiA9IGYgfmtleSB+ZGF0YTpuZXdfIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGxlZnRfcmVzdWx0X2VxdWFsIHByZXZfYSBuZXdfYVxuICAgICAgICAgICAgICAgICAgICB0aGVuIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IGxlZnQgfmtleSB+ZGF0YTpuZXdfYVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgICAgIGlmIHJpZ2h0X3Jlc3VsdF9lcXVhbCBwcmV2X2IgbmV3X2JcbiAgICAgICAgICAgICAgICAgICAgdGhlbiByaWdodFxuICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpuZXdfYlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE1hcC5yZW1vdmUgbGVmdCBrZXksIE1hcC5yZW1vdmUgcmlnaHQga2V5XG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgZWxlbWVudCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGIgPSBmIH5rZXkgfmRhdGE6ZWxlbWVudCBpblxuICAgICAgICAgICAgICAgICAgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6YSwgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOmIpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhbGVmdF9hY2MgbGVmdCkgdGhlbiBFLk5vZGUubWFrZV9zdGFsZSBsZWZ0X3Jlc3VsdDtcbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFyaWdodF9hY2MgcmlnaHQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgcmlnaHRfcmVzdWx0O1xuICAgICAgICBsZWZ0X2FjYyA6PSBsZWZ0O1xuICAgICAgICByaWdodF9hY2MgOj0gcmlnaHQ7XG4gICAgICAgIHByZXZfbWFwIDo9IG1hcClcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9jaGFuZ2UpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUud2F0Y2ggbGVmdF9yZXN1bHQsIEUuTm9kZS53YXRjaCByaWdodF9yZXN1bHRcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaSA/ZGF0YV9lcXVhbCA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCB+ZiA9XG4gICAgbGV0IHBhaXIgPVxuICAgICAgd2l0aF9jb21wYXJhdG9yIGlucHV0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBpbnB1dFxuICAgICAgICB8PiB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgICAgICAgP2xlZnRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IHVuemlwID9sZWZ0X3Jlc3VsdF9lcXVhbCA/cmlnaHRfcmVzdWx0X2VxdWFsIGlucHV0ID1cbiAgICBsZXQgZGF0YV9lcXVhbCA9XG4gICAgICBPcHRpb24ubWFwMiBsZWZ0X3Jlc3VsdF9lcXVhbCByaWdodF9yZXN1bHRfZXF1YWwgfmY6KGZ1biBsIHIgLT5cbiAgICAgICAgVHVwbGUyLmVxdWFsIH5lcTE6bCB+ZXEyOnIpXG4gICAgaW5cbiAgICB1bnppcF9tYXBpXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP2xlZnRfcmVzdWx0X2VxdWFsXG4gICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZGF0YSlcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgICh0eXBlIHYgdjEgdjIgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOih2LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKHYxLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50ICogKHYyLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBsZWZ0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSBsZWZ0X2FjYyA6PSBNYXAuc2V0ICFsZWZ0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSByaWdodF9hY2MgOj0gTWFwLnNldCAhcmlnaHRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmVjIGlucHV0X2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgbGV0IG5ld19ub2RlcyA9XG4gICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgIH5mOihmdW4gbm9kZXMgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBfbGVmdF9kZXAsIF9yaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLm1ha2Vfc3RhbGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgbGVmdF9kZXAsIHJpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X2RlcDtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IHJpZ2h0X2RlcDtcbiAgICAgICAgICAgICAgICAgICBsZWZ0X2FjYyA6PSBNYXAucmVtb3ZlICFsZWZ0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgcmlnaHRfYWNjIDo9IE1hcC5yZW1vdmUgIXJpZ2h0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICB8IGBSaWdodCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIE1hcC5maW5kX2V4biAhcHJldl9tYXAga2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuc2V0X2N1dG9mZiAoRS5Ob2RlLndhdGNoIG5vZGUpIGMpO1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF9pbmNyLCByaWdodF9pbmNyID0gZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgIGxlZnRfaW5jclxuICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihsZWZ0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfaW5jclxuICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihyaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgTWFwLnNldFxuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihub2RlLCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwLCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggbGVmdF9yZXN1bHQsIEUuTm9kZS53YXRjaCByaWdodF9yZXN1bHRcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIG1hcFxuICAgICAgICB8PiB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcicgP2N1dG9mZiA/ZGF0YV9lcXVhbCB+Y29tcGFyYXRvciB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQga2V5cyBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgYWRkIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQuYWRkIGFjYyBrZXkgaW5cbiAgICAgIGxldCByZW1vdmUgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5yZW1vdmUgYWNjIGtleSBpblxuICAgICAgbGV0IGRhdGFfZXF1YWwgXyBfID0gdHJ1ZSBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0OihTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXQ6KGVtcHR5LCBlbXB0eSlcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGE6ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuc2V0IGZpcnN0IH5rZXkgfmRhdGEsIE1hcC5yZW1vdmUgc2Vjb25kIGtleVxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5zZXQgc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5hZGRfZXhuIGZpcnN0IH5rZXkgfmRhdGEsIHNlY29uZFxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gZmlyc3QsIE1hcC5hZGRfZXhuIHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YTpfIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAucmVtb3ZlIHNlY29uZCBrZXkpKVxuICA7O1xuXG4gIGxldCBmbGF0dGVuIHN0YXRlIG1hcCA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IHJlc3VsdCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcCkpIGluXG4gICAgbGV0IG5vZGUgPSBFLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gIXJlc3VsdCkgaW5cbiAgICBNYXAuaXRlcmkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YTppbmNyIC0+XG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbmNyIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIHJlc3VsdCA6PSBNYXAuc2V0ICFyZXN1bHQgfmtleSB+ZGF0YTphKSkpO1xuICAgIEUuTm9kZS53YXRjaCBub2RlXG4gIDs7XG5cbiAgbGV0IGpvaW5fd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIH5jb21wYXJhdG9yID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBtYXBfaW5jciBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCByZXN1bHRfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBvbGRfbWFwX29mX2luY3JzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBjdXJyZW50X2RlcGVuZGVuY2llcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHRfbWFwKSBpblxuICAgIGxldCBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGUgPVxuICAgICAgbGV0IG5ld19kZXAgPVxuICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlIGRhdGFfbm9kZSB+b25fY2hhbmdlOihmdW4gZGF0YSAtPlxuICAgICAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnNldCAhcmVzdWx0X21hcCB+a2V5IH5kYXRhKVxuICAgICAgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgbmV3X2RlcDtcbiAgICAgIE1hcC5zZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTpuZXdfZGVwXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSA9XG4gICAgICBsZXQgZGVwID0gTWFwLmZpbmRfZXhuIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleSBpblxuICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICByZXN1bHRfbWFwIDo9IE1hcC5yZW1vdmUgIXJlc3VsdF9tYXAga2V5O1xuICAgICAgTWFwLnJlbW92ZSBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXlcbiAgICBpblxuICAgIGxldCBsaHNfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBtYXBfaW5jciB+ZjooZnVuIG1hcF9vZl9pbmNycyAtPlxuICAgICAgICBsZXQgbmV3X2RlcGVuZGVuY3lfbWFwID1cbiAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgfmRhdGFfZXF1YWw6cGh5c19lcXVhbFxuICAgICAgICAgICAgIW9sZF9tYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgIG1hcF9vZl9pbmNyc1xuICAgICAgICAgICAgfmluaXQ6IWN1cnJlbnRfZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICB+ZjooZnVuIGN1cnJlbnRfZGVwZW5kZW5jaWVzIChrZXksIGRpZmYpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleVxuICAgICAgICAgICAgICB8IGBSaWdodCBkYXRhX25vZGUgLT4gYWRkX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YV9ub2RlXG4gICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF8sIGRhdGFfbm9kZSkgLT5cbiAgICAgICAgICAgICAgICByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IHw+IGFkZF9zdWJub2RlIH5rZXkgfmRhdGFfbm9kZSlcbiAgICAgICAgaW5cbiAgICAgICAgY3VycmVudF9kZXBlbmRlbmNpZXMgOj0gbmV3X2RlcGVuZGVuY3lfbWFwO1xuICAgICAgICBvbGRfbWFwX29mX2luY3JzIDo9IG1hcF9vZl9pbmNycylcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgbGhzX2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBqb2luIG1hcCA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT4gam9pbl93aXRoX2NvbXBhcmF0b3IgbWFwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIG1vZHVsZSBTZXBhcmF0ZV9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIGlucHV0X21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS50LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIG91dHB1dF9tYXAgOiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50XG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIGNvbXBhcmF0b3IgPVxuICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgIHsgaW5wdXRfbWFwID0gZW1wdHk7IGV4cGVydF9ub2RlcyA9IGVtcHR5OyBvdXRwdXRfbWFwID0gZW1wdHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlX2xvb2t1cF9ub2RlIHN0YXRlIHQga2V5ID1cbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+IE1hcC5maW5kX2V4biB0LmlucHV0X21hcCBrZXkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNlcGFyYXRlIGlucHV0X21hcCB+ZGF0YV9lcXVhbCA9XG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwIGluXG4gICAgd2l0aF9jb21wYXJhdG9yIGlucHV0X21hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBzdGF0ZSA9IFNlcGFyYXRlX3N0YXRlLmNyZWF0ZSBjb21wYXJhdG9yIGluXG4gICAgICBsZXQgb3V0cHV0X21hcF9ub2RlID1cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gc3RhdGUub3V0cHV0X21hcClcbiAgICAgIGluXG4gICAgICBsZXQgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBub2RlIH5pbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxldCBkZXBlbmRlbmN5ID1cbiAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgKExhenkuZm9yY2VfdmFsIGlucHV0X21hcF9jaGFuZ2VkKVxuICAgICAgICBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIGRlcGVuZGVuY3lcbiAgICAgIGluXG4gICAgICAoKiBXZSB3YW50IHRvIG1ha2Ugbm9kZXMgZGVwZW5kIG9uIFtpbnB1dF9tYXBfY2hhbmdlZF0gc28gdGhhdCBbaW5wdXRfbWFwX2NoYW5nZWRdXG4gICAgICAgICBpcyBhbGxvd2VkIHRvIG1ha2UgdGhlbSBzdGFsZSwgYnV0IHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBmb3IgYW55XG4gICAgICAgICBvdGhlciByZWFzb24uIFNvIHdlIG1ha2UgW2lucHV0X21hcF9jaGFuZ2VkXSBhIHVuaXQgaW5jcmVtZW50YWwgKHRoYXQgdGhlcmVmb3JlXG4gICAgICAgICBuZXZlciBjaGFuZ2VzKSBhbmQgdGhpcyB3YXkgW291dHB1dF9tYXBfbm9kZV0gYW5kIHRoZSBsb29rdXAgbm9kZXMgd2lsbCBvbmx5IGJlXG4gICAgICAgICByZWNvbXB1dGVkIHdoZW4gdGhleSBhcmUgZXhwbGljaXRseSBtYWRlIHN0YWxlLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgaW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKEluY3JlbWVudGFsLm1hcCBpbnB1dF9tYXAgfmY6KGZ1biBpbnB1dF9tYXAgLT5cbiAgICAgICAgICAgICBsZXQgcHJldl9pbnB1dF9tYXAgPSBzdGF0ZS5pbnB1dF9tYXAgaW5cbiAgICAgICAgICAgICBsZXQgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIHByZXZfaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICB+aW5pdDooc3RhdGUuZXhwZXJ0X25vZGVzLCBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgICB+ZjooZnVuIChleHBlcnRfbm9kZXMsIG91dHB1dF9tYXApIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgX29sZF92YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG9sZF9ub2RlID0gTWFwLmZpbmRfZXhuIGV4cGVydF9ub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmludmFsaWRhdGUgb2xkX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIE1hcC5yZW1vdmUgZXhwZXJ0X25vZGVzIGtleSwgTWFwLnJlbW92ZSBvdXRwdXRfbWFwIGtleVxuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF9uZXdfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgU2VwYXJhdGVfc3RhdGUuY3JlYXRlX2xvb2t1cF9ub2RlIGluY3JlbWVudGFsX3N0YXRlIHN0YXRlIGtleVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICggTWFwLmFkZF9leG4gZXhwZXJ0X25vZGVzIH5rZXkgfmRhdGE6bm9kZVxuICAgICAgICAgICAgICAgICAgICAgLCBNYXAuYWRkX2V4blxuICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUpIClcbiAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkX3ZhbHVlLCBfbmV3X3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZVxuICAgICAgICAgICAgICAgICAgICAgICAoTWFwLmZpbmRfZXhuIGV4cGVydF9ub2RlcyBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgc3RhdGUuaW5wdXRfbWFwIDwtIGlucHV0X21hcDtcbiAgICAgICAgICAgICBzdGF0ZS5leHBlcnRfbm9kZXMgPC0gZXhwZXJ0X25vZGVzO1xuICAgICAgICAgICAgIHN0YXRlLm91dHB1dF9tYXAgPC0gb3V0cHV0X21hcCkpXG4gICAgICBpblxuICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBvdXRwdXRfbWFwX25vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggb3V0cHV0X21hcF9ub2RlKVxuICA7O1xuXG4gICgqIEp1c3QgZm9yIGRlcml2aW5nIHN0cnVjdHVyYWwgZXF1YWxpdHkuICopXG4gIHR5cGUgJ2EgbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5ID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gICAgfCBJbmNsIG9mICdhXG4gICAgfCBFeGNsIG9mICdhXG4gICAgfCBVbmJvdW5kZWRcbiAgW0BAZGVyaXZpbmcgZXF1YWxdXG5cbiAgbGV0IHN1YnJhbmdlXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcF9pbmNyIDogKChrLCB2LCBjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICByYW5nZVxuICAgID1cbiAgICB3aXRoX29sZDIgbWFwX2luY3IgcmFuZ2UgfmY6KGZ1biB+b2xkIG1hcCByYW5nZSAtPlxuICAgICAgbGV0IGNvbXBhcmUgPSAoTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICBsZXQgZXF1YWwgbCByID0gY29tcGFyZSBsIHIgPSAwIGluXG4gICAgICBsZXQgKCA+ICkgYSBiID0gY29tcGFyZSBhIGIgPiAwXG4gICAgICBhbmQgKCA+PSApIGEgYiA9IGNvbXBhcmUgYSBiID49IDAgaW5cbiAgICAgIGxldCBtYXliZV9ib3VuZF9lcXVhbCBhIGIgOiBib29sID0gZXF1YWxfbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5IGVxdWFsIGEgYiBpblxuICAgICAgbGV0IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heCA6IGJvb2wgPVxuICAgICAgICBtYXRjaCBtaW4sIG1heCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkLCAoVW5ib3VuZGVkIHwgRXhjbCBfIHwgSW5jbCBfKSB8IChFeGNsIF8gfCBJbmNsIF8pLCBVbmJvdW5kZWQgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgICB8IEluY2wgbWluLCBJbmNsIG1heCAtPiBtaW4gPiBtYXhcbiAgICAgICAgfCBFeGNsIG1pbiwgRXhjbCBtYXggfCBJbmNsIG1pbiwgRXhjbCBtYXggfCBFeGNsIG1pbiwgSW5jbCBtYXggLT4gbWluID49IG1heFxuICAgICAgaW5cbiAgICAgIGxldCByYW5nZV9pbmNsdWRlcyB+bWluIH5tYXgga2V5IDogYm9vbCA9XG4gICAgICAgIE1heWJlX2JvdW5kLmlzX2xvd2VyX2JvdW5kIG1pbiB+b2ZfOmtleSB+Y29tcGFyZVxuICAgICAgICAmJiBNYXliZV9ib3VuZC5pc191cHBlcl9ib3VuZCBtYXggfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgIGluXG4gICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogRW1wdHkgbmV3IHJhbmdlIG1lYW5zIGVtcHR5IG1hcCAqKVxuICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgfCBTb21lICgobWluLCBtYXgpIGFzIHJhbmdlKSAtPlxuICAgICAgICBsZXQgZnJvbV9zY3JhdGNoICgpID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDptYXggaW5cbiAgICAgICAgKG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBOb25lLCBfKSAtPlxuICAgICAgICAgICAoKiBubyBvbGQgcmFuZ2UgKilcbiAgICAgICAgICAgZnJvbV9zY3JhdGNoICgpXG4gICAgICAgICB8IFNvbWUgKF8sIFNvbWUgKG9sZF9taW4sIG9sZF9tYXgpLCBfKVxuICAgICAgICAgICB3aGVuIHJhbmdlX2lzX2VtcHR5IH5taW46b2xkX21pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXg6b2xkX21heFxuICAgICAgICAgICAgIHx8IHJhbmdlX2lzX2VtcHR5IH5taW46b2xkX21pbiB+bWF4IC0+XG4gICAgICAgICAgICgqIGVtcHR5IG9sZCByYW5nZSBvciBvbGQgcmFuZ2UgZGlzam9pbnQgd2l0aCBuZXcgKilcbiAgICAgICAgICAgZnJvbV9zY3JhdGNoICgpXG4gICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIFNvbWUgKChvbGRfbWluLCBvbGRfbWF4KSBhcyBvbGRfcmFuZ2UpLCBvbGRfcmVzKSAtPlxuICAgICAgICAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgICAgICAgICAoKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBrZXkgaXMgaW4gYm90aCBuZXcgYW5kIG9sZCByYW5nZXMgKilcbiAgICAgICAgICAgICBsZXQgaW5fcmFuZ2VfaW50ZXJzZWN0aW9uIGtleSA9XG4gICAgICAgICAgICAgICByYW5nZV9pbmNsdWRlcyB+bWluIH5tYXgga2V5XG4gICAgICAgICAgICAgICAmJiByYW5nZV9pbmNsdWRlcyB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4IGtleVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogQXBwbHkgY2hhbmdlcyB0byBrZXlzIHdoaWNoIGFyZSBpbiB0aGUgaW50ZXJzZWN0aW9uIG9mIGJvdGggcmFuZ2VzLlxuXG4gICAgICAgICAgICAgICAgW291dHNpZGVdIGlzIHRoZSBudW1iZXIgb2YgdXBkYXRlcyBvdXRzaWRlIHRoZSByYW5nZSBpbnRlcnNlY3Rpb24gdGhhdCB3ZVxuICAgICAgICAgICAgICAgIHRvbGVyYXRlIGJlZm9yZSBnaXZpbmcgdXAgYW5kIHJlY29uc3RydWN0aW5nIGJhc2VkIG9uIHRoZSBuZXcgcmFuZ2UuIFRoaXNcbiAgICAgICAgICAgICAgICBpcyBhbiBvcHRpbWlzYXRpb24gaW4gdGhlIGNhc2UgdGhhdCB0aGUgbWFwIGNoYW5nZXMgaW4gYSB2ZXJ5IGJpZyB3YXksIGF0XG4gICAgICAgICAgICAgICAgd2hpY2ggcG9pbnQgY29tcHV0aW5nIGJhc2VkIG9uIHRoZSBuZXcgcmFuZ2UgaXMgY2hlYXBlci4gICopXG4gICAgICAgICAgICAgbGV0IGFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIChvdXRzaWRlLCBtYXApIChrZXksIGRhdGEpID1cbiAgICAgICAgICAgICAgIGlmIGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXlcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleVxuICAgICAgICAgICAgICAgICB8IGBSaWdodCBkYXRhIHwgYFVuZXF1YWwgKF8sIGRhdGEpIC0+IG91dHNpZGUsIE1hcC5zZXQgbWFwIH5rZXkgfmRhdGEpXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IG91dHNpZGUgPSBvdXRzaWRlIC0gMSBpblxuICAgICAgICAgICAgICAgICBpZiBJbnQuTy4ob3V0c2lkZSA8IDApXG4gICAgICAgICAgICAgICAgIHRoZW4gcmV0dXJuIChmcm9tX3NjcmF0Y2ggKCkpXG4gICAgICAgICAgICAgICAgIGVsc2Ugb3V0c2lkZSwgTWFwLnJlbW92ZSBtYXAga2V5KVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogRmlyc3QgdXBkYXRlIHRoZSBrZXlzIGluIC9ib3RoLyB0aGUgb2xkIGFuZCB0aGUgbmV3IHJhbmdlLiAqKVxuICAgICAgICAgICAgIGxldCB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvbiA9XG4gICAgICAgICAgICAgICAoKiBDdXRvZmYgdGhlIGJpZyBkaWZmIGNvbXB1dGF0aW9uIGlmIHdlIHJlYWNoIE8ofHN1Ym1hcHwpIG51bWJlciBvZlxuICAgICAgICAgICAgICAgICAgY2hhbmdlcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSByYW5nZSAqKVxuICAgICAgICAgICAgICAgbGV0IG91dHNpZGVfY3V0b2ZmID0gTWFwLmxlbmd0aCBvbGRfcmVzIC8gNCBpblxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgb2xkX21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6KG91dHNpZGVfY3V0b2ZmLCBvbGRfcmVzKVxuICAgICAgICAgICAgICAgICB+ZjphcHBseV9kaWZmX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgICAgfD4gc25kXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiBUdXBsZTIuZXF1YWxcbiAgICAgICAgICAgICAgICAgIH5lcTE6bWF5YmVfYm91bmRfZXF1YWxcbiAgICAgICAgICAgICAgICAgIH5lcTI6bWF5YmVfYm91bmRfZXF1YWxcbiAgICAgICAgICAgICAgICAgIG9sZF9yYW5nZVxuICAgICAgICAgICAgICAgICAgcmFuZ2VcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBUaGVyZSBhcmUgbm8ga2V5cyB0byByZW1vdmUgYW5kIGV2ZXJ5dGhpbmcgaW4gcmFuZ2UgaXMgdXBkYXRlZC4gKilcbiAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAoKiBSZW1vdmUgYW55IGtleXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2VcbiAgICAgICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgICAgICAgIH5sb3dlcl9ib3VuZDptaW5cbiAgICAgICAgICAgICAgICAgICB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCogQWRkIGluIGFueSBrZXlzIHdoaWNoIGFyZSBpbiB0aGUgbmV3IHJhbmdlIGJ1dCBub3QgdGhlIG9sZCByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIGxldCBtYXBfYXBwZW5kX2V4biBsb3dlcl9wYXJ0IHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgICAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImltcG9zc2libGUgY2FzZTogQlVHIGluIGluY3JfbWFwLm1sIHN1YnJhbmdlXCJcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbGV0IGxvd2VyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihJbmNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEV4Y2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgYW5kIHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9tYXggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooSW5jbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihFeGNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbWFwX2FwcGVuZF9leG5cbiAgICAgICAgICAgICAgICAgICBsb3dlcl9wYXJ0XG4gICAgICAgICAgICAgICAgICAgKG1hcF9hcHBlbmRfZXhuIHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgdXBwZXJfcGFydClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSkpKSlcbiAgOztcblxuICBsZXQgcmVrZXkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+ZiA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIG1hcF9pbmNyXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgb3V0cHV0IC0+IE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5OihmIH5rZXkgfmRhdGEpIH5kYXRhKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgb3V0cHV0IC0+IE1hcC5yZW1vdmUgb3V0cHV0IChmIH5rZXkgfmRhdGEpKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBvdXRwdXQgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIChNYXAuY29tcGFyYXRvciBvdXRwdXQpLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBNYXAuc2V0IG91dHB1dCB+a2V5Om5ld19rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICAgICAgZWxzZSBNYXAucmVtb3ZlIG91dHB1dCBwcmV2X2tleSB8PiBNYXAuYWRkX2V4biB+a2V5Om5ld19rZXkgfmRhdGE6bmV3X2RhdGEpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIChmdW4gaW5uZXJfY29tcGFyYXRvciAtPlxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5hZGQ6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBvdXRlcl9tYXAgLT5cbiAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5OmlubmVyX2tleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dGVyX21hcFxuICAgICAgICAgIHwgU29tZSBvdXRlcl9rZXkgLT5cbiAgICAgICAgICAgIE1hcC51cGRhdGUgb3V0ZXJfbWFwIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uXG4gICAgICAgICAgICAgICAgICBpbm5lcl9rZXlcbiAgICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPiBNYXAuYWRkX2V4biBpbm5lcl9tYXAgfmtleTppbm5lcl9rZXkgfmRhdGEpKVxuICAgICAgICB+cmVtb3ZlOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAuY2hhbmdlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiQlVHOiBIaXQgc3VwcG9zZWRseSBpbXBvc3NpYmxlIGNhc2UgaW4gSW5jcl9tYXAuaW5kZXhfYnlcIlxuICAgICAgICAgICAgICB8IFNvbWUgaW5uZXJfbWFwIC0+XG4gICAgICAgICAgICAgICAgbGV0IGlubmVyX21hcCA9IE1hcC5yZW1vdmUgaW5uZXJfbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgICAgIGlmIE1hcC5pc19lbXB0eSBpbm5lcl9tYXAgdGhlbiBOb25lIGVsc2UgU29tZSBpbm5lcl9tYXApKSlcbiAgOztcblxuICBsZXQgaW5kZXhfYnkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICBpbmRleF9ieWkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3IgfmluZGV4OihmdW4gfmtleTpfIH5kYXRhIC0+IGluZGV4IGRhdGEpXG4gIDs7XG5cblxuICAoKiogRmluZCB0d28ga2V5cyBpbiBtYXAgYnkgaW5kZXgsIE8obikuIFdlIHVzZSBqdXN0IG9uZSBmb2xkICh0d28gTWFwLm50aCB3b3VsZCB1c2UgdHdvKVxuICAgICAgYW5kIG9wdGltaXplIGZvciBrZXlzIGNsb3NlIHRvIGVpdGhlciBiZWdpbm5pbmcgb3IgZW5kIGJ5IHVzaW5nIGVpdGhlciBmb2xkIG9yXG4gICAgICBmb2xkX3JpZ2h0LlxuICAqKVxuICBtb2R1bGUgS2V5X3N0YXR1cyA9IHN0cnVjdFxuICAgIHR5cGUgJ2sgdCA9XG4gICAgICB8IEtub3duIG9mICdrXG4gICAgICB8IEtub3duX25vbmVcbiAgICAgIHwgVW5rbm93blxuXG4gICAgbGV0IGlzX2tub3duID0gZnVuY3Rpb25cbiAgICAgIHwgVW5rbm93biAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWVcbiAgICA7O1xuXG4gICAgbGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gfCBLbm93bl9ub25lIC0+IE5vbmVcbiAgICAgIHwgS25vd24gayAtPiBTb21lIGtcbiAgICA7O1xuICBlbmRcblxuICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyICh0eXBlIGspIH5mcm9tIH50b18gKG1hcCA6IChrLCBfLCBfKSBNYXAudClcbiAgICA6IChrICogayBvcHRpb24pIG9wdGlvblxuICAgID1cbiAgICBsZXQgb3BlbiBLZXlfc3RhdHVzIGluXG4gICAgbGV0IGxlbiA9IE1hcC5sZW5ndGggbWFwIGluXG4gICAgbGV0IGJlZ2luX2tleSA9IGlmIEludC4oID49ICkgZnJvbSBsZW4gdGhlbiBLbm93bl9ub25lIGVsc2UgVW5rbm93biBpblxuICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPj0gKSB0b18gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZmluZF9rZXlzIGZvbGQgfnN0YXJ0X3BvcyB+YWR2YW5jZV9wb3MgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgIGZvbGRcbiAgICAgICAgICBtYXBcbiAgICAgICAgICB+aW5pdDooYmVnaW5fa2V5LCBlbmRfa2V5LCBzdGFydF9wb3MpXG4gICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhOl8gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKSAtPlxuICAgICAgICAgICAgbGV0IGJlZ2luX2tleSA9IGlmIEludC4oID0gKSBwb3MgZnJvbSB0aGVuIEtub3duIGtleSBlbHNlIGJlZ2luX2tleSBpblxuICAgICAgICAgICAgbGV0IGVuZF9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIHRvXyB0aGVuIEtub3duIGtleSBlbHNlIGVuZF9rZXkgaW5cbiAgICAgICAgICAgIGlmIGlzX2tub3duIGJlZ2luX2tleSAmJiBpc19rbm93biBlbmRfa2V5XG4gICAgICAgICAgICB0aGVuIHJldHVybiAoYmVnaW5fa2V5LCBlbmRfa2V5LCBwb3MpXG4gICAgICAgICAgICBlbHNlIGJlZ2luX2tleSwgZW5kX2tleSwgYWR2YW5jZV9wb3MgcG9zKSlcbiAgICBpblxuICAgIGxldCBiZWdpbl9rZXksIGVuZF9rZXksIF8gPVxuICAgICAgKCogU2VhcmNoaW5nIGZyb20gbGVmdCB0YWtlcyBPKHRvXyksIGZyb20gcmlnaHQgLSBPKGxlbiAtIGZyb20pLCBzbyBzZWxlY3QgdGhlXG4gICAgICAgICBzbWFsbGVyIG9uZS4gKilcbiAgICAgIGlmIHRvXyA8IGxlbiAtIGZyb21cbiAgICAgIHRoZW4gZmluZF9rZXlzIE1hcC5mb2xkIH5zdGFydF9wb3M6MCB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zICsgMSlcbiAgICAgIGVsc2UgZmluZF9rZXlzIE1hcC5mb2xkX3JpZ2h0IH5zdGFydF9wb3M6KGxlbiAtIDEpIH5hZHZhbmNlX3BvczooZnVuIHBvcyAtPiBwb3MgLSAxKVxuICAgIGluXG4gICAgT3B0aW9uLm1hcCAoS2V5X3N0YXR1cy50b19vcHRpb24gYmVnaW5fa2V5KSB+ZjooZnVuIGJlZ2luX2tleSAtPlxuICAgICAgYmVnaW5fa2V5LCBLZXlfc3RhdHVzLnRvX29wdGlvbiBlbmRfa2V5KVxuICA7O1xuXG4gIGxldCBudGhfZnJvbV9laXRoZXJfc2lkZSAodHlwZSBrKSBuIChtYXAgOiAoaywgXywgXykgTWFwLnQpIDogayBvcHRpb24gPVxuICAgIE9wdGlvbi5tYXAgfmY6ZnN0IChmaW5kX2tleV9yYW5nZV9saW5lYXIgfmZyb206biB+dG9fOm4gbWFwKVxuICA7O1xuXG4gICgqKiBGaW5kIGtleSBbYnldIHBvc2l0aW9ucyBlYXJsaWVyL2xhdGVyIGluIGEgbWFwLiBSZXR1cm5zIG5vbmUgaWYgb3V0IG9mIGJvdW5kcy4gKilcbiAgbGV0IHJlYyBvZmZzZXQgKGtleSA6ICdrKSAobWFwIDogKCdrLCBfLCBfKSBNYXAudCkgfmJ5IDogJ2sgb3B0aW9uID1cbiAgICBpZiBJbnQuKCA9ICkgYnkgMFxuICAgIHRoZW4gU29tZSBrZXlcbiAgICBlbHNlIChcbiAgICAgIGxldCBjbG9zZXN0X2RpciwgYWRkID1cbiAgICAgICAgaWYgSW50LiggPCApIGJ5IDAgdGhlbiBgTGVzc190aGFuLCAxIGVsc2UgYEdyZWF0ZXJfdGhhbiwgLTFcbiAgICAgIGluXG4gICAgICBtYXRjaCBNYXAuY2xvc2VzdF9rZXkgbWFwIGNsb3Nlc3RfZGlyIGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChrZXksIF8pIC0+IG9mZnNldCBrZXkgbWFwIH5ieTooYnkgKyBhZGQpKVxuICA7O1xuXG4gICgqKiBGaW5kIGhvdyB3ZSBuZWVkIHRvIG1vdmUgW2tleV0gaWYgW2NoYW5nZWRfa2V5XSBjaGFuZ2VkIGluIHRoZSBnaXZlblxuICAgICAgd2F5ICopXG4gIGxldCBmaW5kX29mZnNldCB+Y29tcGFyZSB+a2V5IH5jaGFuZ2VkX2tleSBjaGFuZ2UgPVxuICAgIGlmIEludC4oIDwgKSAoY29tcGFyZSBjaGFuZ2VkX2tleSBrZXkpIDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICB8IGBMZWZ0IF8gLT4gMVxuICAgICAgfCBgUmlnaHQgXyAtPiAtMVxuICAgICAgfCBfIC0+IDApXG4gICAgZWxzZSAwXG4gIDs7XG5cbiAgbGV0IHJhbmtcbiAgICAgICAgKHR5cGUgayB2IGNtcCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAobWFwIDogKChrLCB2LCBjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAoa2V5IDogKGssIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBzYW1lX2tleSBhIGIgPSBjb21wYXJlX2tleSBhIGIgPSAwIGluXG4gICAgICBsZXQgd2hlbl9rZXlfY2hhbmdlZCB+bWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuayA9XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IG5ld19rZXkgb2xkX2tleSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgdGhlIG5ldyBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBvbGQga2V5LCBmaW5kIHRoZSBzaXplIG9mIHRoZSBtYXAgc3VicmFuZ2VcbiAgICAgICAgICAgICBiZXR3ZWVuIHRoZW0gYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBuZXdfa2V5LCBFeGNsIG9sZF9rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayAtIE1hcC5sZW5ndGggc3VicmFuZ2UgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBPdGhlcndpc2UsIHRoZSBuZXcga2V5IGlzIGxhcmdlciB0aGFuIHRoZSBvbGQga2V5LCBzbyBmaW5kIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICAgICAgIG1hcCBzdWJyYW5nZSBiZXR3ZWVuIHRoZW0gYW5kIGFkZCBpdCB0byB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG9sZF9rZXksIEV4Y2wgbmV3X2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rICsgTWFwLmxlbmd0aCBzdWJyYW5nZSArIDEpXG4gICAgICBpblxuICAgICAgbGV0IHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleSB+b2xkX3JhbmsgPVxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICgqIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGRhdGEsIHNvIG9wdGltaXplIHRoZXNlIGNoZWNrcyAqKVxuICAgICAgICAgIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpXG4gICAgICAgICAgb2xkX21hcFxuICAgICAgICAgIG5ld19tYXBcbiAgICAgICAgICB+aW5pdDpvbGRfcmFua1xuICAgICAgICAgIH5mOihmdW4gYWNjIChkaWZmX2tleSwgZGlmZikgLT5cbiAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgLSAxXG4gICAgICAgICAgICB8IGBSaWdodCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgKyAxXG4gICAgICAgICAgICB8IF8gLT4gYWNjKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcHJvY2VzcyB+KG9sZCA6ICgoaywgdiwgXykgTWFwLnQgKiBfICogXykgb3B0aW9uKSBuZXdfbWFwIChuZXdfa2V5IDogaykgPVxuICAgICAgICBpZiBub3QgKE1hcC5tZW0gbmV3X21hcCBuZXdfa2V5KVxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGFuZCBrZXkgYXJlIHRoZSBzYW1lLCBqdXN0IHJldXNlIHRoZSBvbGQgcmFuayAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgb2xkX3JhbmspXG4gICAgICAgICAgICB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwICYmIHNhbWVfa2V5IG9sZF9rZXkgbmV3X2tleSAtPiBvbGRfcmFua1xuICAgICAgICAgICgqIElmIHRoZSBtYXAgaXMgdGhlIHNhbWUgYnV0IHRoZSBrZXkgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9rZXlfY2hhbmdlZCB+bWFwOm5ld19tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIHRoZSBrZXkgaXMgdGhlIHNhbWUgYnV0IHRoZSBtYXAgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBzYW1lX2tleSBuZXdfa2V5IG9sZF9rZXkgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleTpuZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiBib3RoIHRoZSBtYXAgYW5kIHRoZSBrZXkgY2hhbmdlZCwgdGhpcyBjYW4gYmUgc2ltdWxhdGVkIGFzIHRoZVxuICAgICAgICAgICAgIG1hcCBjaGFuZ2luZyBmb2xsb3dlZCBieSB0aGUga2V5IGNoYW5naW5nICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSAtPlxuICAgICAgICAgICAgKCogV2UgY2FsbCBbcHJvY2Vzc10gcmVjdXJzaXZlbHkgaW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nXG4gICAgICAgICAgICAgICBbd2hlbl9tYXBfY2hhbmdlZF0gZm9sbG93ZWQgYnkgW3doZW5fa2V5X2NoYW5nZWRdIHNpbmNlIGl0IG1pZ2h0IGJlIHRoZVxuICAgICAgICAgICAgICAgY2FzZSB0aGF0IFtvbGRfa2V5XSBpcyBpbiBbb2xkX21hcF0gYW5kIFtuZXdfa2V5XSBpcyBpbiBbbmV3X21hcF0sIGJ1dFxuICAgICAgICAgICAgICAgW29sZF9rZXldIGlzIG5vdCBpbiBbbmV3X21hcF0uICopXG4gICAgICAgICAgICBsZXQgb2xkX3JhbmsgPVxuICAgICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspKSBuZXdfbWFwIG9sZF9rZXlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG5ld19tYXAsIG9sZF9rZXksIG9sZF9yYW5rKSkgbmV3X21hcCBuZXdfa2V5XG4gICAgICAgICAgKCogSWYgdGhlIHByZXZpb3VzIGtleSB3YXMgbm90IGluIHRoZSBtYXAgb3IgdGhpcyBpcyB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbixcbiAgICAgICAgICAgICBjb21wdXRlIHRoZSByYW5rIGZyb20gc2NyYXRjaCAqKVxuICAgICAgICAgIHwgU29tZSAoXywgXywgTm9uZSkgfCBOb25lIC0+IE1hcC5yYW5rIG5ld19tYXAgbmV3X2tleSlcbiAgICAgIGluXG4gICAgICB3aXRoX29sZDIgbWFwIGtleSB+Zjpwcm9jZXNzKVxuICA7O1xuXG4gICgqKiBSYW5nZSBtYXAgYnkgaW5kaWNlcyAqKVxuICBsZXQgc3VicmFuZ2VfYnlfcmFua1xuICAgICAgICAodHlwZSBrIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXAgOiAoKGssIF8sIF8pIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAocmFuZ2UgOiAoaW50IE1heWJlX2JvdW5kLnQgKiBpbnQgTWF5YmVfYm91bmQudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlIChyYW5nZSA6IChpbnQgKiBpbnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICA6ICgoayAqIGsgb3B0aW9uKSBvcHRpb24sIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgID1cbiAgICAgIHdpdGhfb2xkMiBtYXAgcmFuZ2UgfmY6KGZ1biB+b2xkIG1hcCAoZnJvbSwgdG9fKSAtPlxuICAgICAgICAoKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm8ga2V5cywgb25seSBiZWdpbiBrZXksIG9yIGJlZ2luIGFuZCBlbmQga2V5cy5cbiAgICAgICAgICAgVGhlc2UgYXJlIHRoZSBrZXlzIGF0IFtmcm9tXSBhbmQgW3RvX10gcG9zaXRpb25zIGluIHRoZSBtYXAsIG9yIE5vbmUgaWYgdGhlXG4gICAgICAgICAgIGluZGljZXMgYXJlIHRvbyBiaWcuIEFzIGFsd2F5cyBbMCA8PSBmcm9tICYmIGZyb20gPD0gdG9fXSwgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgcG9zc2liaWxpdHkgb2Ygb25seSBbdG9fXSBiZWluZyBhIHZhbGlkIHBvc2l0aW9uLlxuICAgICAgICAqKVxuICAgICAgICBpZiBJbnQuKCA8ICkgdG9fIGZyb20gfHwgSW50LiggPCApIGZyb20gMFxuICAgICAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiSW52YWxpZCBpbmRpY2VzXCIgKGZyb20gOiBpbnQpICh0b18gOiBpbnQpXTtcbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBTb21lIChvbGRfbWFwLCAob2xkX2Zyb20sIG9sZF90byksIFNvbWUgKGJlZ2luX2tleSwgZW5kX2tleV9vcHQpKSAtPlxuICAgICAgICAgIGxldCBmaW5kX29mZnNldCA9IGZpbmRfb2Zmc2V0IH5jb21wYXJlOihNYXAuY29tcGFyYXRvciBtYXApLmNvbXBhcmUgaW5cbiAgICAgICAgICBsZXQgcmFuZ2Vfb2Zmc2V0X2JlZ2luID0gZnJvbSAtIG9sZF9mcm9tIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9lbmQgPSB0b18gLSBvbGRfdG8gaW5cbiAgICAgICAgICBsZXQgYWRqdXN0X2FuZF9vZmZzZXQgfmJ5IGtleSA9XG4gICAgICAgICAgICBsZXQgYnkgPSBieSArIGlmIGJ5ID49IDAgJiYgbm90IChNYXAubWVtIG1hcCBrZXkpIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgIG9mZnNldCBrZXkgbWFwIH5ieVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogV2Ugb25seSBjYXJlIGFib3V0IHRoZSBrZXlzIGNoYW5naW5nIGFuZCBub3QgdGhlIGRhdGEsIHNvIFtkYXRhX2VxdWFsXSBoZXJlXG4gICAgICAgICAgICAgY2FuIGJlIGFsd2F5cyB0cnVlICopXG4gICAgICAgICAgbGV0IGRpZmYgfmluaXQgfmYgPVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSkgb2xkX21hcCBtYXAgfmluaXQgfmZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBiZWdpbl9rZXlfb3B0LCBlbmRfa2V5X29wdCA9XG4gICAgICAgICAgICBtYXRjaCBlbmRfa2V5X29wdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZW5kX2tleSAtPlxuICAgICAgICAgICAgICBsZXQgbWFwX29mZnNldF9iZWdpbiwgbWFwX29mZnNldF9lbmQgPVxuICAgICAgICAgICAgICAgIGRpZmYgfmluaXQ6KDAsIDApIH5mOihmdW4gKG9mZnNldF9iZWdpbiwgb2Zmc2V0X2VuZCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgKCBvZmZzZXRfYmVnaW4gKyBmaW5kX29mZnNldCB+a2V5OmJlZ2luX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgLCBvZmZzZXRfZW5kICsgZmluZF9vZmZzZXQgfmtleTplbmRfa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlICkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBhZGp1c3RfYW5kX29mZnNldCBlbmRfa2V5IH5ieToobWFwX29mZnNldF9lbmQgKyByYW5nZV9vZmZzZXRfZW5kKSApXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4gPVxuICAgICAgICAgICAgICAgIGRpZmYgfmluaXQ6MCB+ZjooZnVuIG9mZnNldF9iZWdpbiAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICBvZmZzZXRfYmVnaW4gKyBmaW5kX29mZnNldCB+a2V5OmJlZ2luX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBhZGp1c3RfYW5kX29mZnNldCBiZWdpbl9rZXkgfmJ5OihtYXBfb2Zmc2V0X2JlZ2luICsgcmFuZ2Vfb2Zmc2V0X2JlZ2luKVxuICAgICAgICAgICAgICAsIG50aF9mcm9tX2VpdGhlcl9zaWRlIHRvXyBtYXAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXNzZXJ0IChPcHRpb24uZm9yX2FsbCB+ZjooTWFwLm1lbSBtYXApIGJlZ2luX2tleV9vcHQpO1xuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBlbmRfa2V5X29wdCk7XG4gICAgICAgICAgT3B0aW9uLm1hcCBiZWdpbl9rZXlfb3B0IH5mOihmdW4gYmVnaW5fa2V5IC0+IGJlZ2luX2tleSwgZW5kX2tleV9vcHQpXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgKF8sIF8sIE5vbmUpIC0+XG4gICAgICAgICAgKCogT24gZmlyc3QgcnVuICh3aGVuIHdlIGhhdmUgdG8pIG9yIHdoZW4gYm90aCB0aGUga2V5cyBhcmUgbm9uZSwgcnVuIE8obilcbiAgICAgICAgICAgICBzY2FuLiBUaGlzIGlzIGZpbmUgZm9yIGtleXMtYXJlLW5vbmUgY2FzZSBhcyBpdCBoYXBwZW5zIHdoZW4gdGhlIHBvc2l0aW9uc1xuICAgICAgICAgICAgIGFyZSBwYXN0IGVuZCBvZiB0aGUgbWFwLCBzbyB0aGV5IHNob3VsZG4ndCBiZSB0b28gZmFyIGZyb20gZW5kIGFmdGVyIHRoZVxuICAgICAgICAgICAgIG1hcCBjaGFuZ2VzLCBhbmQgW2ZpbmRfa2V5X3JhbmdlX2xpbmVhcl0gaXMgZmFzdCBpbiBzdWNoIGNhc2UuICopXG4gICAgICAgICAgZmluZF9rZXlfcmFuZ2VfbGluZWFyIG1hcCB+ZnJvbSB+dG9fKVxuICAgIGluXG4gICAgKCogSGFuZGxlIGRpZmZlcmVudCBNYXliZV9ib3VuZCBjYXNlcyBhbmQgY2FsbCBmaW5kX2tleV9yYW5nZSBpZiBuZWNlc3NhcnkuIEl0J3NcbiAgICAgICBuaWNlciB0byBkbyB0aGlzIGhlcmUgYXMgb3Bwb3NlZCB0byBtYWtpbmcgZmluZF9rZXlfcmFuZ2UgZXZlbiBtb3JlIGNvbXBsaWNhdGVkICopXG4gICAgbGV0IG9wZW4gSW5jcmVtZW50YWwuTGV0X3N5bnRheCBpblxuICAgIGxldCAoID4+PiApIG5ld18gYm91bmQgPSBNYXliZV9ib3VuZC5tYXAgfmY6KGZ1biBfIC0+IG5ld18pIGJvdW5kIGluXG4gICAgbGV0IHJldHVybiA9IEluY3JlbWVudGFsLnJldHVybiAoSW5jcmVtZW50YWwuc3RhdGUgbWFwKSBpblxuICAgIGxldCBrZXlfcmFuZ2UgPVxuICAgICAgbWF0Y2glcGF0dGVybl9iaW5kIHJhbmdlIHdpdGhcbiAgICAgIHwgTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQgLT5cbiAgICAgICAgcmV0dXJuIChTb21lIChNYXliZV9ib3VuZC5VbmJvdW5kZWQsIE1heWJlX2JvdW5kLlVuYm91bmRlZCkpXG4gICAgICB8ICggKChNYXliZV9ib3VuZC5JbmNsIGwgfCBNYXliZV9ib3VuZC5FeGNsIGwpIGFzIGxiKVxuICAgICAgICAsICgoTWF5YmVfYm91bmQuSW5jbCB1IHwgTWF5YmVfYm91bmQuRXhjbCB1KSBhcyB1YikgKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgdSlcbiAgICAgICAgYW5kIGxiID0gbGJcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgU29tZSBlbmRfa2V5KSAtPiBTb21lIChiZWdpbl9rZXkgPj4+IGxiLCBlbmRfa2V5ID4+PiB1YilcbiAgICAgICAgIHwgU29tZSAoYmVnaW5fa2V5LCBOb25lKSAtPiBTb21lIChiZWdpbl9rZXkgPj4+IGxiLCBVbmJvdW5kZWQpXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgKChNYXliZV9ib3VuZC5JbmNsIGwgfCBNYXliZV9ib3VuZC5FeGNsIGwpIGFzIGxiKSwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggbCBsKVxuICAgICAgICBhbmQgbGIgPSBsYiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBTb21lIChrZXkgPj4+IGxiLCBVbmJvdW5kZWQpXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgTWF5YmVfYm91bmQuVW5ib3VuZGVkLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggdSB1KVxuICAgICAgICBhbmQgdWIgPSB1YiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBTb21lIChVbmJvdW5kZWQsIGtleSA+Pj4gdWIpXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICBpblxuICAgIHN1YnJhbmdlID9kYXRhX2VxdWFsIG1hcCBrZXlfcmFuZ2VcbiAgOztcblxuICBsZXQgdHJhbnNwb3NlXG4gICAgOiB0eXBlIGsxIGsyIHYgazFfY21wIGsyX2NtcCBzdGF0ZV93aXRuZXNzLlxuICAgICAgP2RhdGFfZXF1YWw6KHYgLT4gdiAtPiBib29sKVxuICAgICAgLT4gKGsyLCBrMl9jbXApIE1hcC5jb21wYXJhdG9yXG4gICAgICAtPiAoKGsxLCAoazIsIHYsIGsyX2NtcCkgTWFwLnQsIGsxX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+ICgoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBmdW4gPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbCkgazJfY29tcGFyYXRvciBtIC0+XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbSAoZnVuIGsxX2NvbXBhcmF0b3IgLT5cbiAgICAgICAgbGV0IHVwZGF0ZVxuICAgICAgICAgIDogIGtleTprMSAtPiBvbGRfZGF0YTooazIsIHYsIGsyX2NtcCkgTWFwLnQgLT4gbmV3X2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgICAtPiAoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICA9XG4gICAgICAgICAgZnVuIH5rZXk6azEgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIG9sZF9kYXRhXG4gICAgICAgICAgICAgIG5ld19kYXRhXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgICAgICB+ZjooZnVuIGFjYyAoazIsIGRpZmYpIC0+XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBNYXAuY2hhbmdlIGFjYyBrMiB+ZjooZnVuIGFjY19pbm5lciAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjY19pbm5lciA9XG4gICAgICAgICAgICAgICAgICAgIE1hcC5jaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjX2lubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmRlZmF1bHQ6KE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOmsxX2NvbXBhcmF0b3IpKVxuICAgICAgICAgICAgICAgICAgICAgIGsxXG4gICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBfIC0+IHZhbHVlKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIE1hcC5pc19lbXB0eSBhY2NfaW5uZXIgdGhlbiBOb25lIGVsc2UgU29tZSBhY2NfaW5uZXIpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWRkIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpIH5uZXdfZGF0YTpkYXRhXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW1vdmUgfmtleSB+ZGF0YSA9XG4gICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOmRhdGEgfm5ld19kYXRhOihNYXAuZW1wdHkgazJfY29tcGFyYXRvcilcbiAgICAgICAgaW5cbiAgICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgICBtXG4gICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgfmFkZFxuICAgICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlX2J5XG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcCBjb21iaW5lZF9rZXkgY29tYmluZWRfY21wKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihtZXJnZV9rZXlzIDogb3V0ZXJfa2V5IC0+IGlubmVyX2tleSAtPiBjb21iaW5lZF9rZXkpXG4gICAgICAgIH4oY29tcGFyYXRvciA6IChjb21iaW5lZF9rZXksIGNvbWJpbmVkX2NtcCkgTWFwLmNvbXBhcmF0b3IpXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuc2V0IGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhOm5ld19kYXRhKVxuICAgICAgfmFkZDooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLmFkZF9leG4gYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGEpXG4gICAgICB+cmVtb3ZlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5yZW1vdmUgYWNjIChtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXApXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6XG4gICAgICAgICAgICgob3V0ZXJfa2V5LCAoaW5uZXJfa2V5LCBfLCBpbm5lcl9jbXApIE1hcC50LCBvdXRlcl9jbXApIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+Y29tcGFyYXRvcjooaW5uZXJfY29tcGFyYXRvciA6IChpbm5lcl9rZXksIGlubmVyX2NtcCkgTWFwLmNvbXBhcmF0b3IpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIG91dGVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBtb2R1bGUgQ21wID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG91dGVyX2tleSAqIGlubmVyX2tleVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IChvdXRlcl9jbXAsIGlubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID1cbiAgICAgICAgICBsZXQgaW5uZXJfY29tcGFyYXRvciA9XG4gICAgICAgICAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGlubmVyX2NvbXBhcmF0b3IpIGluXG4gICAgICAgICAgICBNLmNvbXBhcmF0b3JcbiAgICAgICAgICBpblxuICAgICAgICAgIFR1cGxlMi5jb21wYXJhdG9yIG91dGVyX2NvbXBhcmF0b3IgaW5uZXJfY29tcGFyYXRvclxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgY29sbGFwc2VfYnlcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfm1lcmdlX2tleXM6VHVwbGUyLmNyZWF0ZVxuICAgICAgICB+Y29tcGFyYXRvcjoobW9kdWxlIENtcCkpXG4gIDs7XG5cbiAgbGV0IGV4cGFuZCA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBuZXdfZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLnNldCBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGE6bmV3X2RhdGEpKVxuICAgICAgfmFkZDooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IGRhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5hZGRfZXhuIG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5jaGFuZ2UgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBtYXAgLT5cbiAgICAgICAgICAgIGxldCBtYXAgPSBNYXAucmVtb3ZlIG1hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChub3QgKE1hcC5pc19lbXB0eSBtYXApKSBtYXApKVxuICA7O1xuXG4gIGxldCBjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OjBcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgLSAxIGVsc2UgY291bnQpXG4gIDs7XG5cbiAgbGV0IGNvdW50ID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBleGlzdHNpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgKGNvdW50aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZikgfmY6KGZ1biBjb3VudCAtPiBjb3VudCA8PiAwKVxuICA7O1xuXG4gIGxldCBleGlzdHMgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGV4aXN0c2kgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBzdW1cbiAgICAgICAgKHR5cGUgdSlcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDogKChfLCBfLCBfKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKG1vZHVsZSBHcm91cCA6IEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gdSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6R3JvdXAuemVyb1xuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oICsgKSBhY2MgKGYgdikpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggLSApIGFjYyAoZiB2KSlcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgKGNvdW50aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gbm90IChmIH5rZXkgfmRhdGEpKSlcbiAgICAgIH5mOihmdW4gY291bnQgLT4gY291bnQgPSAwKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBmb3JfYWxsaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciA9IGZpbmRfa2V5X3JhbmdlX2xpbmVhclxuICBlbmRcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgdHlwZSAoJ3YsICd3KSBlbnRyeSA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfdmFsdWUgOiAndiBvcHRpb25cbiAgICAgIDsgbm9kZSA6ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS50XG4gICAgICB9XG5cbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgKCogV2UgbWF5IGhhdmUgbXVsdGlwbGUgZW50cmllcyBwZXIga2V5IGlmIG5vZGVzIGJlY29tZSBuZWNlc3NhcnkgYWdhaW4gYWZ0ZXIgYmVpbmdcbiAgICAgICAgIHJlbW92ZWQuICopXG4gICAgICA7IG11dGFibGUgbG9va3VwX2VudHJpZXMgOiAoJ2ssICgndiwgJ3cpIGVudHJ5IGxpc3QsICdjbXApIE1hcC50XG4gICAgICA7IHVwZGF0ZXJfbm9kZSA6ICh1bml0LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgOyBzY29wZSA6ICd3IEluY3JlbWVudGFsLlNjb3BlLnRcbiAgICAgIH1cblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZSA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKSBpbnB1dF9tYXAgfmNvbXBhcmF0b3IgPVxuICAgICAgbGV0IHJlYyBzZWxmID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChsZXQgdXBkYXRlcl9ub2RlID1cbiAgICAgICAgICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgICBsZXQgKGxhenkgc2VsZikgPSBzZWxmIGluXG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcFxuICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgfmluaXQ6KClcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biAoKSAoa2V5LCBjaGFuZ2VkX3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBlbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgc2VsZi5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBMaXN0Lml0ZXIgZW50cmllcyB+ZjooZnVuIGVudHJ5IC0+XG4gICAgICAgICAgICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgPC0gKG1hdGNoIGNoYW5nZWRfdmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfdmFsdWUgfCBgVW5lcXVhbCAoXywgbmV3X3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgbmV3X3ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgZW50cnkubm9kZSkpO1xuICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXAgPC0gaW5wdXRfbWFwKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgICAgeyBzYXZlZF9tYXAgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyBsb29rdXBfZW50cmllcyA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IHVwZGF0ZXJfbm9kZVxuICAgICAgICAgICA7IHNjb3BlID0gSW5jcmVtZW50YWwuU2NvcGUuY3VycmVudCAoSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwKSAoKVxuICAgICAgICAgICB9KVxuICAgICAgaW5cbiAgICAgIExhenkuZm9yY2Ugc2VsZlxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSB+aXNfbm93X29ic2VydmFibGUgPVxuICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICBsZXQgY3VycmVudF9lbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgIGxldCBpc19saW5rZWQgPSBMaXN0LmV4aXN0cyBjdXJyZW50X2VudHJpZXMgfmY6KHBoeXNfZXF1YWwgZW50cnkpIGluXG4gICAgICBpZiBCb29sLmVxdWFsIGlzX2xpbmtlZCBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpZiBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIE1hcC51cGRhdGUgdC5sb29rdXBfZW50cmllcyBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIChvdGhlcl9lbnRyeSA6OiBfIGFzIG90aGVyX2VudHJpZXMpIC0+XG4gICAgICAgICAgICAoKiBVcGRhdGUgdGhpcyBlbnRyeSdzIHZhbHVlIHRvIGJlIGN1cnJlbnQuICopXG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBvdGhlcl9lbnRyeS5zYXZlZF92YWx1ZTtcbiAgICAgICAgICAgIGVudHJ5IDo6IG90aGVyX2VudHJpZXNcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFtdIC0+XG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXk7XG4gICAgICAgICAgICBbIGVudHJ5IF0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld19lbnRyaWVzID1cbiAgICAgICAgICBMaXN0LmZpbHRlciBjdXJyZW50X2VudHJpZXMgfmY6KGZ1biB4IC0+IG5vdCAocGh5c19lcXVhbCBlbnRyeSB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSAoaWYgTGlzdC5pc19lbXB0eSBuZXdfZW50cmllc1xuICAgICAgICAgICAgdGhlbiBNYXAucmVtb3ZlIHQubG9va3VwX2VudHJpZXMga2V5XG4gICAgICAgICAgICBlbHNlIE1hcC5zZXQgdC5sb29rdXBfZW50cmllcyB+a2V5IH5kYXRhOm5ld19lbnRyaWVzKSlcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXkgPVxuICAgICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgdC51cGRhdGVyX25vZGUgaW5cbiAgICAgIEluY3JlbWVudGFsLlNjb3BlLndpdGhpbiBpbmNyZW1lbnRhbF9zdGF0ZSB0LnNjb3BlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbGV0IHJlYyBlbnRyeSA9XG4gICAgICAgICAgbGF6eVxuICAgICAgICAgICAgeyBzYXZlZF92YWx1ZSA9IE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleVxuICAgICAgICAgICAgOyBub2RlID1cbiAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IChmb3JjZSBlbnRyeSkuc2F2ZWRfdmFsdWUpXG4gICAgICAgICAgICAgICAgICB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2U6KHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgICAgZW50cnkubm9kZVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgdC51cGRhdGVyX25vZGUpO1xuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IGtleSA9XG4gICAgICBtYXRjaCBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB3aXRoXG4gICAgICB8IGVudHJ5IDo6IF8gLT4gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZVxuICAgICAgfCBbXSAtPiBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXlcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA9IHN0cnVjdFxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX2VudHJ5IHNleHBfb2ZfdmFsdWUgZW50cnkgPVxuICAgICAgICBsZXQgeyBzYXZlZF92YWx1ZTsgbm9kZSB9ID0gZW50cnkgaW5cbiAgICAgICAgbGV0IG5vZGUgPSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlIGluXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgOiB2YWx1ZSBvcHRpb25cbiAgICAgICAgICA7IG5vZGVfaW5mbyA9IChJbmNyZW1lbnRhbC51c2VyX2luZm8gbm9kZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19jb25zdCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAoSW5jcmVtZW50YWwuaXNfY29uc3Qgbm9kZSkgKCkgOiAodW5pdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX2ludmFsaWQgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKG5vdCAoSW5jcmVtZW50YWwuaXNfdmFsaWQgbm9kZSkpICgpIDogKHVuaXQgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc191bm5lY2Vzc2FyeSA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc19uZWNlc3Nhcnkgbm9kZSkpICgpIDogKHVuaXQgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICB9XVxuICAgICAgOztcblxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgICAgbGV0IGluZm9fcGVyX2tleSA9XG4gICAgICAgICAgTWFwLm1lcmdlIHQuc2F2ZWRfbWFwIHQubG9va3VwX2VudHJpZXMgfmY6KGZ1biB+a2V5IGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBhY3R1YWxfdmFsdWUsIGVudHJpZXMgPVxuICAgICAgICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgeCwgW11cbiAgICAgICAgICAgICAgfCBgUmlnaHQgeSAtPiBOb25lLCB5XG4gICAgICAgICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IFNvbWUgeCwgeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgeyBrZXkgOiBrZXlcbiAgICAgICAgICAgICAgICA7IGFjdHVhbF92YWx1ZSA6ICh2YWx1ZSBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgICAgICAgICA7IGVudHJpZXMgOiB2YWx1ZSBlbnRyeSBsaXN0XG4gICAgICAgICAgICAgICAgfV0pXG4gICAgICAgIGluXG4gICAgICAgIFNleHAuTGlzdCAoTWFwLmRhdGEgaW5mb19wZXJfa2V5KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgIGFuZCB0eXBlICdhIEluY3IuQ3V0b2ZmLnQgPSAnYSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgICBhbmQgdHlwZSAoJ2ssICd2LCAnY21wKSBMb29rdXAudCA9ICgnaywgJ3YsICdjbXAsIHN0YXRlX3dpdG5lc3MpIEdlbmVyaWMuTG9va3VwLnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBmbGF0dGVuIHggPSBmbGF0dGVuIEluY3IuU3RhdGUudCB4XG5cbiAgbW9kdWxlIExvb2t1cCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTG9va3VwXG5cbiAgICB0eXBlICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wLCBJbmNyLnN0YXRlX3dpdG5lc3MpIExvb2t1cC50XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBHZW5lcmljXG4iLCJvcGVuIENvcmVcblxubW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TX2dlbikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEUgPSBJbmNyLkV4cGVydFxuXG4gICgqIEhhc2h0Ymwgc3RhcnRzIG91dCBhdCBhIHJpZGljdWxvdXMgc2l6ZSBvZiAxMjguIFRoaXMgaXMgYSBtb3JlIHJlYXNvbmFibGUgbnVtYmVyXG4gICAgIG9mIGJpbnMgdG8gaGF2ZS4gKilcbiAgbGV0IGhhc2h0Ymxfc2l6ZSA9IDEwXG5cbiAgKCoqIFtzZXR1cF9nZW5lcmF0b3JdIHNldHMgdXAgdGhlIHN0YWdlZCBjb252ZXJzaW9uLlxuXG4gICAgICBbaGFzaGFibGVdIGlzIHVzZWQgdG8gYnVpbGQgYSB0YWJsZSBvZiBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBXZSBkcm9wIHVubmVjZXNzYXJ5XG4gICAgICBkZXBlbmRlbmNpZXMgdG8gYWxsb3cgdGhlbSB0byBiZSBjb2xsZWN0ZWQuXG5cbiAgICAgIFtjb21wdXRlX291dHB1dCBrZXldIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBvdXRwdXQgbm9kZSBjb3JyZXNwb25kaW5nIHRvIFtrZXldLlxuICAgICAgW2NvbXB1dGVfb3V0cHV0XSBpcyBjbG9zZWQgb3ZlciB0aGUgbXV0YWJsZSBzdGF0ZSBkZXRlcm1pbmluZyB0aGUgY3VycmVudCB2YWx1ZSBvZlxuICAgICAgdGhlIHNlbGVjdG9yJ3MgaW5wdXQuXG5cbiAgICAgIFttYWtlX2lucHV0X25vZGVdIG1ha2VzIHN1cmUgdGhhdCB3aGVuIHRoZSBtdXRhYmxlIHN0YXRlIGluc2lkZSBbY29tcHV0ZV9vdXRwdXRdIGlzXG4gICAgICB1cGRhdGVkLCB0aGUgY29ycmVzcG9uZGluZyBub2RlcyBpbiB0aGUgW25lY2Vzc2FyeV9kZXBlbmRlbmNpZXNdIHRhYmxlIGFyZSBtYWRlXG4gICAgICBzdGFsZS4gICopXG4gIGxldCBzZXR1cF9nZW5lcmF0b3JcbiAgICAgICAgKGhhc2hhYmxlIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpXG4gICAgICAgIH4oY29tcHV0ZV9vdXRwdXQgOiAnYSAtPiAnYilcbiAgICAgICAgfihtYWtlX2lucHV0X25vZGUgOiBtYWtlX2tleV9zdGFsZTooJ2EgLT4gdW5pdCkgLT4gdW5pdCBJbmNyLnQpXG4gICAgOiAoJ2EgLT4gJ2IgSW5jci50KSBTdGFnZWQudFxuICAgID1cbiAgICBsZXQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyA9IEhhc2h0YmwuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5zaXplOmhhc2h0Ymxfc2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgICBsZXQgKGlucHV0X25vZGUgOiB1bml0IEluY3IudCkgPVxuICAgICAgbGV0IG1ha2Vfa2V5X3N0YWxlIGtleSA9XG4gICAgICAgIEhhc2h0YmwuZmluZCBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIGtleVxuICAgICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W11cbiAgICAgICAgfD4gTGlzdC5pdGVyIH5mOkUuTm9kZS5tYWtlX3N0YWxlXG4gICAgICBpblxuICAgICAgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZVxuICAgIGluXG4gICAgKCogU2V0IHRoZSBjdXRvZmYgc28gdGhhdCB3ZSBuZXZlciBwYXNzIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgdXBkYXRlIHRvIHRoZSBub2Rlcy4gV2VcbiAgICAgICB3YW50IGV2ZXJ5dGhpbmcgdG8gZ28gdGhyb3VnaCBbbWFrZV9rZXlfc3RhbGVdICopXG4gICAgSW5jci5zZXRfY3V0b2ZmIGlucHV0X25vZGUgSW5jci5DdXRvZmYuYWx3YXlzO1xuICAgIHN0YWdlIChmdW4ga2V5IC0+XG4gICAgICBsZXQgaW5wdXRfZGVwID0gRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9ub2RlIGluXG4gICAgICBsZXQgcmVjIG91dHB1dF9ub2RlID0gbGF6eSAoXG4gICAgICAgIEUuTm9kZS5jcmVhdGVcbiAgICAgICAgICAoZnVuICgpIC0+IGNvbXB1dGVfb3V0cHV0IGtleSlcbiAgICAgICAgICB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2U6KGZ1biB+aXNfbm93X29ic2VydmFibGUgLT5cbiAgICAgICAgICAgIGlmIGlzX25vd19vYnNlcnZhYmxlIHRoZW5cbiAgICAgICAgICAgICAgSGFzaHRibC5hZGRfbXVsdGkgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOihmb3JjZSBvdXRwdXRfbm9kZSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSGFzaHRibC5jaGFuZ2UgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggTGlzdC5maWx0ZXIgbCB+ZjooRm4ubm9uIChwaHlzX2VxdWFsIChmb3JjZSBvdXRwdXRfbm9kZSkpKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgbCcgLT4gU29tZSBsJ1xuICAgICAgICAgICAgICApKSlcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X25vZGUgPSBmb3JjZSBvdXRwdXRfbm9kZSBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG91dHB1dF9ub2RlIGlucHV0X2RlcDtcbiAgICAgIEUuTm9kZS53YXRjaCBvdXRwdXRfbm9kZVxuICAgIClcblxuICAoKiogVGhpcyBjcmVhdGVzIGEgdW5pdCBpbmNyZW1lbnRhbCB0aGF0IGZpcmVzIHdoZW5ldmVyIHRoZSBpbnB1dCBpbmNyZW1lbnRhbFxuICAgICAgZmlyZXMuIFdoZW4gdGhhdCBvY2N1cnMsIGl0IHVwZGF0ZXMgW3NlbGVjdGVkXSB0byBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZSBvZlxuICAgICAgW2lucHV0XSwgYW5kIGNhbGxzIFttYWtlX2tleV9zdGFsZV0gZm9yIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlIG9mIHRoZVxuICAgICAgaW5jcmVtZW50YWwuICopXG4gIGxldCB1cGRhdGVfb25lIH5pbnB1dCB+c2VsZWN0ZWQgfm1ha2Vfc3RhbGUgPVxuICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICBPcHRpb24uaXRlciBpbnAgfmY6bWFrZV9zdGFsZTtcbiAgICAgIE9wdGlvbi5pdGVyICFzZWxlY3RlZCB+ZjptYWtlX3N0YWxlO1xuICAgICAgc2VsZWN0ZWQgOj0gaW5wXG4gICAgKVxuXG4gIGxldCBzZWxlY3Rfb25lJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICAoaW5wdXQgOiBhIG9wdGlvbiBJbmNyLnQpXG4gICAgPVxuICAgIGxldCBzZWxlY3RlZCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBtYXRjaCAhc2VsZWN0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUga2V5JyAtPiBILmNvbXBhcmUga2V5IGtleScgPSAwXG4gICAgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICB1cGRhdGVfb25lIH5pbnB1dCB+c2VsZWN0ZWQgfm1ha2Vfc3RhbGU6bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBILmhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9vbmUgaCBpbnB1dCA9XG4gICAgc2VsZWN0X29uZScgaCAoSW5jci5tYXAgfmY6T3B0aW9uLnNvbWUgaW5wdXQpXG5cbiAgbGV0IHNlbGVjdF9vbmVfdmFsdWUnXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBzZWxlY3RlZCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBtYXRjaCAhc2VsZWN0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgIHwgU29tZSAoa2V5JywgZGF0YSkgLT4gaWYgSC5jb21wYXJlIGtleSBrZXknID0gMCB0aGVuIGRhdGEgZWxzZSBkZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICB1cGRhdGVfb25lIH5zZWxlY3RlZCB+aW5wdXQgfm1ha2Vfc3RhbGU6KGZ1biAoa2V5LCBfKSAtPiBtYWtlX2tleV9zdGFsZSBrZXkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlIGggfmRlZmF1bHQgaW5wdXQgPVxuICAgIHNlbGVjdF9vbmVfdmFsdWUnIGggfmRlZmF1bHQgKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3RfbWFueV92YWx1ZXNcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2h0YmwuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5zaXplOmhhc2h0Ymxfc2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIEhhc2h0YmwuZmluZCBzZWxlY3RlZCBrZXkgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBIYXNodGJsLml0ZXJfa2V5cyBzZWxlY3RlZCB+ZjptYWtlX2tleV9zdGFsZTtcbiAgICAgICAgSGFzaHRibC5jbGVhciBzZWxlY3RlZDtcbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICAgIEhhc2h0Ymwuc2V0IHNlbGVjdGVkIH5rZXkgfmRhdGFcbiAgICAgICAgKSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBoYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3RfbWFueVxuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgaGFzaGFibGUgPSBILmhhc2hhYmxlIGluXG4gICAgbGV0IHNlbGVjdGVkID0gSGFzaF9zZXQuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5zaXplOmhhc2h0Ymxfc2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID0gSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICAgIGxldCBvbGRfc2V0ID0gSGFzaF9zZXQuY29weSBzZWxlY3RlZCBpblxuICAgICAgICBIYXNoX3NldC5jbGVhciBzZWxlY3RlZDtcblxuICAgICAgICBMaXN0Lml0ZXIgaW5wIH5mOihmdW4ga2V5IC0+XG4gICAgICAgICAgaWYgbm90IChIYXNoX3NldC5tZW0gb2xkX3NldCBrZXkpIHRoZW5cbiAgICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNoX3NldC5hZGQgc2VsZWN0ZWQga2V5XG4gICAgICAgICk7XG5cbiAgICAgICAgSGFzaF9zZXQuaXRlciBvbGRfc2V0IH5mOihmdW4ga2V5IC0+XG4gICAgICAgICAgaWYgbm90IChIYXNoX3NldC5tZW0gc2VsZWN0ZWQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcbmVuZFxuXG4iLCJleHRlcm5hbCBqc19wcm9mX21hcmsgOiBzdHJpbmcgLT4gdW5pdCA9IFwianNfcHJvZl9tYXJrXCJcbmV4dGVybmFsIGpzX3Byb2ZfbWVhc3VyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWVhc3VyZVwiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21hcmtzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21hcmtzXCJcbmV4dGVybmFsIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMgOiB1bml0IC0+IHVuaXQgPSBcImpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcIlxuXG5sZXQgbWFyayBuYW1lID0ganNfcHJvZl9tYXJrIG5hbWVcbmxldCBtZWFzdXJlIH5uYW1lIH5zdGFydCB+ZW5kXyA9IGpzX3Byb2ZfbWVhc3VyZSBuYW1lIHN0YXJ0IGVuZF9cblxubGV0IHJlY29yZCBuYW1lIH5mID1cbiAgbGV0IGJlZm9yZV9uYW1lID0gbmFtZSBeIFwiX2JlZm9yZVwiIGluXG4gIGxldCBhZnRlcl9uYW1lID0gbmFtZSBeIFwiX2FmdGVyXCIgaW5cbiAgbGV0ICgpID0gbWFyayBiZWZvcmVfbmFtZSBpblxuICBsZXQgcmVzID0gZiAoKSBpblxuICBsZXQgKCkgPSBtYXJrIGFmdGVyX25hbWUgaW5cbiAgbWVhc3VyZSB+bmFtZSB+c3RhcnQ6YmVmb3JlX25hbWUgfmVuZF86YWZ0ZXJfbmFtZTtcbiAgcmVzXG47O1xuXG5sZXQgY2xlYXJfbWFya3MgKCkgPSBqc19wcm9mX2NsZWFyX21hcmtzICgpXG5sZXQgY2xlYXJfbWVhc3VyZXMgKCkgPSBqc19wcm9mX2NsZWFyX21lYXN1cmVzICgpXG5cbm1vZHVsZSBNYW51YWwgPSBzdHJ1Y3RcbiAgbGV0IG1hcmsgPSBtYXJrXG4gIGxldCBtZWFzdXJlID0gbWVhc3VyZVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gVmlydHVhbF9kb21cblxudHlwZSB0ID1cbiAgeyBmaWxlbmFtZSA6IHN0cmluZ1xuICA7IG1pbWV0eXBlIDogc3RyaW5nXG4gIDsgY29udGVudHMgOiBzdHJpbmdcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgY3JlYXRlID0gRmllbGRzLmNyZWF0ZVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPGRvd25sb2FkZXI6ICVzPlwiIHQuZmlsZW5hbWUpXG5cbmxldCB0cmlnZ2VyIHsgZmlsZW5hbWU7IG1pbWV0eXBlOyBjb250ZW50cyB9ID1cbiAgbGV0IG9wZW4gSnNfb2Zfb2NhbWwgaW5cbiAgaWYgYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuICB0aGVuXG4gICAgcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlIFwiRG93bmxvYWQgdHJpZ2dlcmVkXCIgKGZpbGVuYW1lIDogc3RyaW5nKSAobWltZXR5cGUgOiBzdHJpbmcpIGNvbnRlbnRzXVxuICBlbHNlIChcbiAgICAoKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMjg4OTEvNTU4NTkyICopXG4gICAgbGV0IGEgPSBEb21faHRtbC5jcmVhdGVBIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgbGV0IGNvbnRlbnRzX2JpZ3N0ciA9XG4gICAgICBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgKEJpZ3N0cmluZy5vZl9zdHJpbmcgY29udGVudHMpXG4gICAgaW5cbiAgICBsZXQgYmxvYiA9XG4gICAgICAoKiBEb24ndCB1c2UgW2Jsb2JfZnJvbV9zdHJpbmddLiBUaGF0IGhhcyBhbiBhdHRyYWN0aXZlIHR5cGUgYnV0IHdvcmtzIGJ5IGZpcnN0XG4gICAgICAgICBjb252ZXJ0aW5nIG91ciBPQ2FtbCBzdHJpbmcgdG8gYSBKYXZhc2NyaXB0IHN0cmluZywgd2hpY2ggY29udmVydHMgdG9cbiAgICAgICAgIFVURi0xNi4gSWYgdGhlIHN0cmluZyBjb250YWlucyByYW5kb20gYmluYXJ5IGRhdGEgdGhhdCB3aWxsIGRpc3RvcnQgaXQuICopXG4gICAgICBGaWxlLmJsb2JfZnJvbV9hbnkgWyBgYXJyYXlCdWZmZXIgY29udGVudHNfYmlnc3RyIF0gfmNvbnRlbnRUeXBlOm1pbWV0eXBlXG4gICAgaW5cbiAgICBsZXQgdXJsID0gRG9tX2h0bWwud2luZG93IyMuX1VSTCMjY3JlYXRlT2JqZWN0VVJMIGJsb2IgaW5cbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImhyZWZcIikgdXJsO1xuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiZG93bmxvYWRcIikgKEpzLnN0cmluZyBmaWxlbmFtZSk7XG4gICAgYSMjY2xpY2s7XG4gICAgRG9tX2h0bWwud2luZG93IyMuX1VSTCMjcmV2b2tlT2JqZWN0VVJMIHVybClcbjs7XG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KGVuYWJsZWQgPSB0cnVlKVxuICAgICAgICA/KG9uX2NsaWNrID0gZnVuIF8gLT4gVmRvbS5FZmZlY3QuSWdub3JlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgIH5nZXRfZG93bmxvYWRcbiAgICAgICAgfmJ1dHRvbl90ZXh0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvcGVuIFZkb20gaW5cbiAgICBsZXQgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgZXYgPVxuICAgICAgdHJpZ2dlciAoZ2V0X2Rvd25sb2FkICgpKTtcbiAgICAgIG9uX2NsaWNrIGV2XG4gICAgaW5cbiAgICBsZXQgZW5hYmxlZF9kaXNhYmxlZCA9XG4gICAgICBpZiBlbmFibGVkIHRoZW4gW10gZWxzZSBbIEF0dHIuZGlzYWJsZWQ7IEF0dHIuc3R5bGUgKENzc19nZW4uY29sb3IgKGBOYW1lIFwiZ3JleVwiKSkgXVxuICAgIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgZXh0cmFfYXR0cnM7IGVuYWJsZWRfZGlzYWJsZWQ7IFsgQXR0ci5vbl9jbGljayB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBdIF1cbiAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBOb2RlLmJ1dHRvbiB+YXR0cjooQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMpIFsgTm9kZS50ZXh0IGJ1dHRvbl90ZXh0IF1cbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEluY3IgPSBJbmNyZW1lbnRhbC5NYWtlICgpXG5cbigqIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2xvY2sgZm9yIHJ1bm5pbmcgY2xpZW50cywgYnV0IGJvbnNhaSB0ZXN0cyBoYXZlIHRoZWlyXG4gICBvd24gc2VwYXJhdGUgY2xvY2tzICopXG5sZXQgY2xvY2sgPSBJbmNyLkNsb2NrLmNyZWF0ZSB+c3RhcnQ6KFRpbWVfbnMubm93ICgpKSAoKVxuXG5pbmNsdWRlIEluY3Jcbm1vZHVsZSBNYXAgPSBJbmNyX21hcC5NYWtlIChJbmNyKVxubW9kdWxlIFNlbGVjdCA9IEluY3Jfc2VsZWN0Lk1ha2UgKEluY3IpXG4iLCJvcGVuIFZpcnR1YWxfZG9tXG5vcGVuIENvcmVcblxudHlwZSAoJ2FjdGlvbiwgJ21vZGVsLCAnc3RhdGUsICdleHRyYSkgd2l0aF9leHRyYSA9XG4gIHsgYXBwbHlfYWN0aW9uIDogJ2FjdGlvbiAtPiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHZpZXcgOiBWZG9tLk5vZGUudFxuICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+IHVuaXRcbiAgOyBleHRyYSA6ICdleHRyYVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbnR5cGUgKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsKSB0ID0gKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsLCB1bml0KSB3aXRoX2V4dHJhXG5cbmxldCBjcmVhdGVfd2l0aF9leHRyYSA/YXBwbHlfYWN0aW9uID91cGRhdGVfdmlzaWJpbGl0eSA/b25fZGlzcGxheSB+ZXh0cmEgbW9kZWwgdmlldyA9XG4gIGxldCBhcHBseV9hY3Rpb24gPVxuICAgIE9wdGlvbi52YWx1ZSBhcHBseV9hY3Rpb24gfmRlZmF1bHQ6KGZ1biBfIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgPVxuICAgIE9wdGlvbi52YWx1ZSB1cGRhdGVfdmlzaWJpbGl0eSB+ZGVmYXVsdDooZnVuIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IG9uX2Rpc3BsYXkgPSBPcHRpb24udmFsdWUgb25fZGlzcGxheSB+ZGVmYXVsdDooZnVuIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+ICgpKSBpblxuICB7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXk7IGV4dHJhOyB2aWV3IH1cbjs7XG5cbmxldCBjcmVhdGUgPSBjcmVhdGVfd2l0aF9leHRyYSB+ZXh0cmE6KClcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5cbigqKiBDb21tb24gbW9kdWxlIHR5cGVzICopXG5tb2R1bGUgdHlwZSBNb2RlbCA9IHNpZ1xuICB0eXBlIHRcblxuXG4gICgqKiBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHdoZXRoZXIgdGhlIG1vZGVsIGhhcyBjaGFuZ2VkIGVub3VnaCB0byByZXF1aXJlIHJlZmlyaW5nXG4gICAgICB0aGUgaW5jcmVtZW50YWwgZ3JhcGguXG5cbiAgICAgIEl0J3MgYmVzdCBpZiB0aGUgdmFsdWVzIGluIHRoZSBtb2RlbCBzdXBwb3J0IGEgc2VtYW50aWNhbGx5IHJlYXNvbmFibGUgY3V0b2ZmXG4gICAgICBmdW5jdGlvbiB3aGljaCBsZXRzIHlvdSBhdm9pZCBpbmZpbml0ZSByZWNvbXB1dGF0aW9uIGxvb3BzIHRoYXQgY2FuIG90aGVyd2lzZSBiZVxuICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSB2aXNpYmlsaXR5IGNoZWNrcy4gRm9yIHRoaXMgcmVhc29uLCBpdCdzIHR5cGljYWxseSBhIGdvb2QgaWRlYSB0b1xuICAgICAgYXZvaWQgaGF2aW5nIHNpbXBsZSBjbG9zdXJlcyBzdG9yZWQgaW4gdGhlIG1vZGVsLlxuXG4gICAgICBUaGF0IHNhaWQsIGl0IGRvZXMgd29yayBpZiB5b3UgcHV0IHBoeXNfZXF1YWwgaW4gZm9yIHRoZSBjdXRvZmYuICopXG4gIHZhbCBjdXRvZmYgOiB0IC0+IHQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjdGlvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTdGF0ZSA9IHNpZ1xuICAoKiogUmVwcmVzZW50cyB0aGUgaW1wZXJhdGl2ZSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggYW4gYXBwbGljYXRpb24sIHR5cGljYWxseSB1c2VkIGZvclxuICAgICAgaG91c2luZyB0aGluZ3MgbGlrZSBjb21tdW5pY2F0aW9uIEFzeW5jLVJQQyBjb25uZWN0aW9ucy4gKilcbiAgdHlwZSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgKCoqIFtvbl9zdGFydHVwXSBpcyBjYWxsZWQgb25jZSwgcmlnaHQgYWZ0ZXIgdGhlIGluaXRpYWwgRE9NIGlzIHNldCB0byB0aGUgdmlldyB0aGF0XG4gICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRvaW5nIHRoaW5ncyBsaWtlIHN0YXJ0aW5nIHVwXG4gICAgICBhc3luYyBwcm9jZXNzZXMuICBOb3RlIHRoYXQgdGhpcyBwYXJ0IG9mIHRoZSBjb21wdXRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGFueVxuICAgICAgaW5jcmVtZW50YWxpdHksIHNpbmNlIGl0J3Mgb25seSBydW4gb25jZS4gKilcbiAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgKCoqIFtjcmVhdGVdIGlzIGEgZnVuY3Rpb24gdGhhdCBpbmNyZW1lbnRhbGx5IGNvbnN0cnVjdHMgYSB7IUNvbXBvbmVudH0uIE5vdGUgdGhhdCBhXG4gICAgICBbQ29tcG9uZW50XSBzdXBwb3J0cyBmdW5jdGlvbnMgbGlrZSBbYXBwbHlfYWN0aW9uXSwgd2hpY2ggcmV0dXJuIGEgbmV3IFtNb2RlbC50XSxcbiAgICAgIHdpdGhvdXQgdGFraW5nIGEgbW9kZWwgYXMgYW4gZXhwbGljaXQgaW5wdXQuICBUaGUgaW50ZW50IGlzIGZvciBbYXBwbHlfYWN0aW9uXSB0b1xuICAgICAgaGF2ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgbW9kZWwgdmlhIGl0cyBjb25zdHJ1Y3Rpb25cblxuICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgbWlnaHQgbG9vayBpbiBwcmFjdGljZS5cblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0geyBjb3VudGVyIDogaW50IH0gW0BAZGVyaXZpbmcgZmllbGRzLCBjb21wYXJlXVxuXG4gICAgICAgICAgbGV0IGN1dG9mZiB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPSAwXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEluY3JlbWVudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgbGV0IHNob3VsZF9sb2cgXyA9IGZhbHNlXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBpbml0aWFsX21vZGVsID0geyBNb2RlbC5jb3VudGVyID0gMCB9XG5cbiAgICAgICAgbGV0IG9uX3N0YXJ0dXAgfnNjaGVkdWxlX2FjdGlvbnMgX21vZGVsID1cbiAgICAgICAgICBldmVyeSAoVGltZV9ucy5TcGFuLm9mX3NlYyAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9ucyBbIEFjdGlvbi5JbmNyZW1lbnQgXSk7XG4gICAgICAgICAgRGVmZXJyZWQudW5pdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDpfIH5pbmplY3Q6XyA9XG4gICAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgICAgbGV0JW1hcCBhcHBseV9hY3Rpb24gPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgIGZ1biAoSW5jcmVtZW50IDogQWN0aW9uLnQpIF8gfnNjaGVkdWxlX2FjdGlvbnM6XyAtPlxuICAgICAgICAgICAgICB7IE1vZGVsLmNvdW50ZXIgPSBjb3VudGVyICsgMSB9XG4gICAgICAgICAgYW5kIHZpZXcgPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID1cbiAgICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgVmRvbS5Ob2RlLmRpdiBbXSBbIFZkb20uTm9kZS50ZXh0IChJbnQudG9fc3RyaW5nIGNvdW50ZXIpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBWZG9tLk5vZGUuYm9keSBbXSBbIGNvdW50ZXIgXVxuICAgICAgICAgIGFuZCBtb2RlbCA9IG1vZGVsIGluXG4gICAgICAgICAgKCogTm90ZSB0aGF0IHdlIGRvbid0IGluY2x1ZGUgW29uX2Rpc3BsYXldIG9yIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHNpbmNlXG4gICAgICAgICAgICAgdGhlc2UgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cyAqKVxuICAgICAgICAgIENvbXBvbmVudC5jcmVhdGUgfmFwcGx5X2FjdGlvbiBtb2RlbCB2aWV3XG4gICAgICAgIDs7IF19XG5cbiAgICAgIFRoZSBmdWxsIGNvZGUgZm9yIHRoaXMgZXhhbXBsZSBjYW4gYmUgZm91bmQgaW4gZXhhbXBsZXMvY291bnRlci5cbiAgKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgKCoqIFtvbGRfbW9kZWxdIGNvbnRhaW5zIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBtb2RlbCAqKVxuICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICgqKiBbaW5qZWN0XSBnaXZlcyB5b3UgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGV2ZW50IGhhbmRsZXJzIGluIHRoZSB2aXJ0dWFsIERPTS4gSW5cbiAgICAgICAgeW91ciBldmVudCBoYW5kbGVyLCBjYWxsIHRoaXMgZnVuY3Rpb24gb24gdGhlIGFjdGlvbiB5b3Ugd291bGQgbGlrZSB0b1xuICAgICAgICBzY2hlZHVsZS4gVmlydHVhbCBET00gd2lsbCBhdXRvbWF0aWNhbGx5IGRlbGVnYXRlIHRoYXQgYWN0aW9uIGJhY2sgdG8gdGhlXG4gICAgICAgIFtTdGFydF9hcHBdIG1haW4gbG9vcC4gKilcbiAgICAtPiAoQWN0aW9uLnQsIE1vZGVsLnQsIFN0YXRlLnQpIENvbXBvbmVudC50IEluY3IudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIHR5cGUgKCdzdGF0ZSwgJ21vZGVsLCAnYWN0aW9uKSBzbmFwc2hvdCA9XG4gICAgeyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgICA7IGFwcGx5X2FjdGlvbiA6XG4gICAgICAgICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWwgLT4gJ2FjdGlvbiAtPiAnbW9kZWxcbiAgICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogJ21vZGVsIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbFxuICAgIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiB1bml0XG4gICAgfVxuXG4gIG1vZHVsZSB0eXBlIFNfZm9yX2JvbnNhaSA9IHNpZ1xuICAgIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gICAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICAgIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgICB2YWwgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gOiBBY3Rpb24udCAtPiBib29sXG4gICAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICBNb2RlbC50IEluY3IudFxuICAgICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAgIC0+IChTdGF0ZS50LCBNb2RlbC50LCBBY3Rpb24udCkgc25hcHNob3QgSW5jci50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBSZWN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0b3AgOiAnYVxuICAgIDsgbGVmdCA6ICdhXG4gICAgOyBib3R0b20gOiAnYVxuICAgIDsgcmlnaHQgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICB7IHRvcCA9IGYgdC50b3A7IGxlZnQgPSBmIHQubGVmdDsgYm90dG9tID0gZiB0LmJvdHRvbTsgcmlnaHQgPSBmIHQucmlnaHQgfVxuICA7O1xuXG4gIGxldCBpbnRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtIHQudG9wXG4gIGxldCBpbnRfd2lkdGggdCA9IHQucmlnaHQgLSB0LmxlZnRcbiAgbGV0IGZsb2F0X2hlaWdodCB0ID0gdC5ib3R0b20gLS4gdC50b3BcbiAgbGV0IGZsb2F0X3dpZHRoIHQgPSB0LnJpZ2h0IC0uIHQubGVmdFxuZW5kXG5cbmxldCByb3VuZF9mbG9hdF9yZWN0ID8ocm91bmQgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4pID0gUmVjdC5tYXAgfmY6cm91bmRcblxudHlwZSByb3dzX29yX2NvbHVtbnMgPVxuICB8IFJvd3NcbiAgfCBDb2x1bW5zXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHZhcmlhbnRzLCBjb21wYXJlXVxuXG5sZXQgaW5uZXJIZWlnaHQgKCkgPVxuICBEb21faHRtbC53aW5kb3cjIy5pbm5lckhlaWdodFxuOztcblxubGV0IGlubmVyV2lkdGggKCkgPVxuICBEb21faHRtbC53aW5kb3cjIy5pbm5lcldpZHRoXG47O1xuXG5sZXQgZWxlbWVudF9pc19pbl92aWV3cG9ydCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgRmxvYXQuKCA+PSApIHJlY3QjIy50b3AgMC5cbiAgJiYgRmxvYXQuKCA+PSApIHJlY3QjIy5sZWZ0IDAuXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMuYm90dG9tIChGbG9hdC5vZl9pbnQgKGlubmVySGVpZ2h0ICgpKSlcbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5yaWdodCAoRmxvYXQub2ZfaW50IChpbm5lcldpZHRoICgpKSlcbjs7XG5cbigqKiBTY3JvbGxzIHRvIHRoZSBpdGVtIG1hcmtlZCBhcyBcImtlZXAtaW4tdmlld1wiICopXG5sZXQgc2Nyb2xsID8oaWQgPSBcImtlZXAtaW4tdmlld1wiKSAoKSA9XG4gIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZWx0IC0+IGlmIG5vdCAoZWxlbWVudF9pc19pbl92aWV3cG9ydCBlbHQpIHRoZW4gZWx0IyNzY3JvbGxJbnRvVmlldyBKcy5fdHJ1ZVxuOztcblxuKCogTm90IHlldCBzdXBwb3J0ZWQgb24gQ2hyb21lLiAgTWF5YmUgd2Ugc2hvdWxkIHVzZSBqUXVlcnk/XG4gICB7W1xuICAgICBsZXQgc2Nyb2xsX2ludG9fdmlldyAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IHVuaXQgPVxuICAgICAgIGVsdCMjc2Nyb2xsSW50b1ZpZXcgKG9iamVjdCVqc1xuICAgICAgICAgdmFsIGJsb2NrID0gSnMuc3RyaW5nIFwic3RhcnRcIlxuICAgICAgICAgdmFsIGJlaGF2aW9yID0gSnMuc3RyaW5nIFwic21vb3RoXCJcbiAgICAgICBlbmQpXG4gICBdfVxuKilcbigqIFt2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWxdIGdldHMgYm91bmRpbmcgcmVjdCBvZiBbZWx0XS4gVGhlIGJvdW5kaW5nIHJlY3QgaXNcbiAgIHJlbGF0aXZlIHRvIHRoZSB2aWV3IHBvcnQgKilcbmxldCB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIHsgUmVjdC50b3AgPSByZWN0IyMudG9wXG4gIDsgbGVmdCA9IHJlY3QjIy5sZWZ0XG4gIDsgYm90dG9tID0gcmVjdCMjLmJvdHRvbVxuICA7IHJpZ2h0ID0gcmVjdCMjLnJpZ2h0XG4gIH1cbjs7XG5cbmxldCB2aWV3cG9ydF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDA7IGxlZnQgPSAwOyBib3R0b20gPSBpbm5lckhlaWdodCAoKTsgcmlnaHQgPSBpbm5lcldpZHRoICgpIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IGJvdW5kaW5nX3JlY3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWx0IGluXG4gIHsgYm91bmRpbmdfcmVjdCB3aXRoXG4gICAgYm90dG9tID0gYm91bmRpbmdfcmVjdC50b3AgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gYm91bmRpbmdfcmVjdC5sZWZ0ICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMFxuICA7IGxlZnQgPSAwXG4gIDsgYm90dG9tID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxuXG4oKiogU2ltcGxlIHdyYXBwZXIgZm9yIHRoZSBiaW5hcnktc2VhcmNoIGZ1bmN0b3IgICAqKVxubGV0IGJpbmFyeV9zZWFyY2ggKHR5cGUgZWx0KSB+bGVuZ3RoIH5nZXQgfmNvbXBhcmUgbW9kZSB4ID1cbiAgbGV0IG1vZHVsZSBCcyA9XG4gICAgQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyBlbHQgPSBlbHRcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB1bml0XG5cbiAgICAgIGxldCBnZXQgKCkgbiA9IGdldCBuXG4gICAgICBsZXQgbGVuZ3RoICgpID0gbGVuZ3RoXG4gICAgZW5kKVxuICBpblxuICBCcy5iaW5hcnlfc2VhcmNoICgpIH5jb21wYXJlIG1vZGUgeFxuOztcblxuKCoqIFNlYXJjaGVzIHRocm91Z2ggZWxlbWVudHMgaW5kZXhlZCBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0uICopXG5sZXQgZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgfnNlYXJjaF9ieSBtb2RlIGxheW91dCB4ID1cbiAgbGV0IGdldCA9XG4gICAgbGV0IG50aF9lbGVtZW50IG4gPVxuICAgICAgbGV0IGlkID0gbnRoX2VsZW1lbnRfaWQgbiBpblxuICAgICAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJFbGVtZW50ICVzIG5vdCBmb3VuZFwiIGlkICgpXG4gICAgICB8IFNvbWUgZWx0IC0+IGVsdFxuICAgIGluXG4gICAgbGV0IGZpcnN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAwKSBpblxuICAgIGxldCBsYXN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAobGVuZ3RoIC0gMSkpIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbid0aCBlbGVtZW50IGluIGEgbm9ybWFsaXplZCB3YXksIGFzIGlmIHRoZSBpbmRleGluZyBhbHdheXMgZ29lcyBpblxuICAgICAgIGluY3JlYXNpbmcgb3JkZXIgZnJvbSB0b3AgdG9wIGJvdHRvbSAqKVxuICAgIGxldCBudGhfZWxlbWVudF9ub3JtYWxpemVkIG4gPVxuICAgICAgbGV0IGlzX2FzY2VuZGluZyA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QudG9wIGxhc3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QubGVmdCBsYXN0LmxlZnRcbiAgICAgIGluXG4gICAgICBudGhfZWxlbWVudCAoaWYgaXNfYXNjZW5kaW5nIHRoZW4gbiBlbHNlIGxlbmd0aCAtIG4gLSAxKVxuICAgIGluXG4gICAgZnVuIG4gLT4gc2VhcmNoX2J5ICh2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbikpXG4gIGluXG4gIGJpbmFyeV9zZWFyY2ggfmxlbmd0aCB+Z2V0IH5jb21wYXJlOkZsb2F0LmNvbXBhcmUgbW9kZSB4XG47O1xuXG5sZXQgZmluZF92aXNpYmxlX3JhbmdlIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGxheW91dCA9XG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBlbGVtZW50X3NlYXJjaCA9IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGluXG4gICAgbGV0IHZpZXdwb3J0X3JlY3QgPSB2aWV3cG9ydF9yZWN0ICgpIGluXG4gICAgbGV0IGZpcnN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LmJvdHRvbSwgdmlld3BvcnRfcmVjdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QucmlnaHQsIHZpZXdwb3J0X3JlY3QubGVmdFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICBsZXQgbGFzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC50b3AsIHZpZXdwb3J0X3JlY3QuYm90dG9tXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LmxlZnQsIHZpZXdwb3J0X3JlY3QucmlnaHRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICAoKiBCb3RoIFtmaXJzdF0gYW5kIFtsYXN0XSBuZWVkIHRvIGJlIFtTb21lXS4gT3RoZXJ3aXNlLCBmb3IgZXhhbXBsZSBpZiB0aGUgd2hvbGVcbiAgICAgICB0YWJsZSBpcyBiZWxvdyB2aWV3IHBvcnQsIHRoZW4gW2ZpcnN0XSB3aWxsIGJlIFtTb21lXSwgW2xhc3RdIHdpbGwgYmUgW05vbmVdICopXG4gICAgT3B0aW9uLmJvdGggZmlyc3QgbGFzdClcbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgIHtqc3xcbiAgICAgIChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50O1xuICAgICAgICB2YXIgd2luID0gZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgICAgICAgdmFyIHJlID0gLyhhdXRvfHNjcm9sbCkvO1xuXG4gICAgICAgIGlmIChlbGVtZW50ID09PSBkb2MpIHtcbiAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGN1ciA9IGVsZW1lbnQucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAoY3VyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICB2YXIgc3R5bGUgPSB3aW4uZ2V0Q29tcHV0ZWRTdHlsZShjdXIpO1xuXG4gICAgICAgICAgaWYgKHJlLnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgIH0pXG4gICAgfGpzfVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyIChlbCA6ICNEb20ubm9kZSBKcy50KSA6IERvbS5ub2RlIEpzLnQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciBbfCBKcy5VbnNhZmUuaW5qZWN0IGVsIHxdXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBQZXJmb3JtYW5jZSA9IEphdmFzY3JpcHRfcHJvZmlsaW5nXG5cbmxldCB0aW1lcl9zdGFydCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGUgdGhlbiBQZXJmb3JtYW5jZS5NYW51YWwubWFyayAocyBeIFwiYmVmb3JlXCIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZSAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgdGltZXJfc3RvcCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGVcbiAgdGhlbiAoXG4gICAgbGV0IGJlZm9yZSA9IHMgXiBcImJlZm9yZVwiIGluXG4gICAgbGV0IGFmdGVyID0gcyBeIFwiYWZ0ZXJcIiBpblxuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIGFmdGVyO1xuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tZWFzdXJlIH5uYW1lOnMgfnN0YXJ0OmJlZm9yZSB+ZW5kXzphZnRlcik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lRW5kIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCBwcmludF9lcnJvcmYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKSkgZm10XG5cbm1vZHVsZSBSZXF1ZXN0X2lkcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5cbiAgdmFsIHNldF9vbmNlX2V4blxuICAgIDogIHRcbiAgICAtPiBhbmltYXRpb25fZnJhbWVfaWQ6RG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAtPiBzZXRfdGltZW91dF9pZDpEb21faHRtbC50aW1lb3V0X2lkXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBjYW5jZWxsZWQgOiB0IC0+IGJvb2xcbiAgdmFsIGNhbmNlbCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgaWRzID1cbiAgICB8IEVtcHR5XG4gICAgfCBDYW5jZWxsZWRcbiAgICB8IElkcyBvZlxuICAgICAgICB7IGFuaW1hdGlvbl9mcmFtZV9pZCA6IERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgICAgIDsgc2V0X3RpbWVvdXRfaWQgOiBEb21faHRtbC50aW1lb3V0X2lkXG4gICAgICAgIH1cblxuICB0eXBlIHQgPSBpZHMgcmVmXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSByZWYgRW1wdHlcblxuICBsZXQgc2V0X29uY2VfZXhuICh0IDogdCkgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPlxuICAgICAgKCogVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGxldCdzIGJlIGRlZmVuc2l2ZS4gKilcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWRcbiAgICB8IEVtcHR5IC0+IHQgOj0gSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9XG4gICAgfCBJZHMgXyAtPiBpbnZhbGlkX2FyZyBcInJlcXVlc3RfaWRzIGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgY2FuY2VsbGVkIHggPVxuICAgIG1hdGNoICF4IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiB0cnVlXG4gICAgfCBFbXB0eSB8IElkcyBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGNhbmNlbCAodCA6IHQpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gKClcbiAgICB8IEVtcHR5IC0+IHQgOj0gQ2FuY2VsbGVkXG4gICAgfCBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH0gLT5cbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWQ7XG4gICAgICB0IDo9IENhbmNlbGxlZFxuICA7O1xuZW5kXG5cbigqKiBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIG5vdGlmaWVzIHRoZSBicm93c2VyIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gZG8gc29tZVxuICAgIGNvbXB1dGF0aW9uIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50LiBCZWNhdXNlIHRoaXMgbmVlZHMgdG8gb2NjdXIgaW4gdGhlIHNhbWVcbiAgICBzeW5jaHJvbm91cyBjYWxsIChjYWxsZWQgYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQpLCByZXR1cm5pbmcgYSBEZWZlcnJlZC50IHdpbGwgbm90XG4gICAgd29yay4gSW5zdGVhZCwgeW91IHBhc3MgaW4gYSBqb2IgdG8gYmUgcnVuIGJlZm9yZSB0aGUgcmVwYWludC5cblxuICAgIE5vdGUgdGhhdCBpZiBbY2FsbGJhY2tdIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgd29yayBiZWZvcmUgZG9pbmcgRE9NIGNoYW5nZXMsIHRob3NlXG4gICAgY2hhbmdlcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwYWludCBhbmQgd2lsbCBiZSBzYXZlZCB1bnRpbCB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgIFdoZW4gdGhlIHRhYiBpcyBpbiB0aGUgYmFja2dyb3VuZCwgdGhlIGJyb3dzZXJzIG5hdGl2ZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZnVuY3Rpb25cbiAgICB3aWxsIG5ldmVyIGNhbGwgdGhlIGNhbGxiYWNrLCBzbyBpbiBvcmRlciB0byBjb250aW51ZSBwcm9jZXNzaW5nIGV2ZW50cywgd2Ugc2V0IGFuXG4gICAgYWx0ZXJuYXRlIHNldFRpbWVvdXQgYXQgMSBzZWNvbmQuXG4qKVxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrID1cbiAgKCogV2UgY2FwdHVyZSB0aGUgY3VycmVudCBjb250ZXh0IHRvIHVzZSBpdCBsYXRlciB3aGVuIGhhbmRsaW5nIGNhbGxiYWNrcyBmcm9tXG4gICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgc2luY2UgZXhjZXB0aW9ucyByYWlzZWQgdG8gdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGdvIHRocm91Z2hcbiAgICAgb3VyIG9yZGluYXJ5IEFzeW5jIG1vbml0b3IuICopXG4gIGxldCBjdXJyZW50X2NvbnRleHQgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgaW5cbiAgbGV0IHJlcXVlc3RfaWRzID0gUmVxdWVzdF9pZHMuY3JlYXRlICgpIGluXG4gIGxldCBjYWxsYmFjayAoKSA9XG4gICAgaWYgUmVxdWVzdF9pZHMuY2FuY2VsbGVkIHJlcXVlc3RfaWRzXG4gICAgdGhlbiAoKVxuICAgIGVsc2UgKFxuICAgICAgUmVxdWVzdF9pZHMuY2FuY2VsIHJlcXVlc3RfaWRzO1xuICAgICAgbGV0IGNhbGxiYWNrX3Jlc3VsdCA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aGluX2NvbnRleHQgY3VycmVudF9jb250ZXh0IGNhbGxiYWNrXG4gICAgICBpblxuICAgICAgaWdub3JlIChjYWxsYmFja19yZXN1bHQgOiAodW5pdCwgdW5pdCkgUmVzdWx0LnQpKVxuICBpblxuICBsZXQgYW5pbWF0aW9uX2ZyYW1lX2lkID1cbiAgICBsZXQgYW5pbWF0aW9uX2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2NhbGxiYWNrXG4gIGluXG4gIGxldCBzZXRfdGltZW91dF9pZCA9XG4gICAgbGV0IHRpbWVvdXRfY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICAoKiAxMDAwIG1zID0gMXM7ICBDaG9zZW4gYmVjYXVzZSBiYWNrZ3JvdW5kZWQgdGFuZ2xlIHNlbmRzIHJlcXVlc3RzXG4gICAgICAgYXQgYXBwcm94aW1hdGVseSB0aGlzIHJhdGUuICopXG4gICAgbGV0IHRpbWVvdXQgPSAxMDAwLjAgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgdGltZW91dF9jYWxsYmFjayB0aW1lb3V0XG4gIGluXG4gIFJlcXVlc3RfaWRzLnNldF9vbmNlX2V4biByZXF1ZXN0X2lkcyB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZFxuOztcblxuKCoqIFRoZSBKc19vZl9vY2FtbCB0eXBlIERvbV9odG1sLmVsZW1lbnQgZG9lc24ndCBoYXZlIHRoZSBjb3JyZWN0IG9wdGlvbnMgZm9yXG4gICAgdGhlaXIgYGZvY3VzYCBtZXRob2QuIENhc3QgdG8gdGhpcyBpbiBvcmRlciB0byB3b3JrIGFyb3VuZCB0aGlzIGJ1Zy4gICopXG50eXBlIGZvY3VzYWJsZSA9XG4gIDwgZm9jdXMgOiA8IHByZXZlbnRTY3JvbGwgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnQgLT4gdW5pdCBKcy5tZXRoID5cblxubGV0IGFzX2ZvY3VzYWJsZSA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiBmb2N1c2FibGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2VcblxuKCoqIFtWaXNpYmlsaXR5XSBlbmNhcHN1bGF0ZXMgdGhlIGRpcnR5aW5nIGFuZCBjbGVhbmluZyBvZiB0aGUgdmlzaWJpbGl0eSBmbGFnXG5cbiAgICBUaGUgdmlld3BvcnQgc3RhcnRzIG91dCBkaXJ0eS4gV2hlbiB3ZSBsb29rIGF0IHRoZSBET00gdG8gY29tcHV0ZSB3aGF0IGlzIHZpc2libGUgYnlcbiAgICBjYWxsaW5nIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHRoZSB2aWV3cG9ydCB0aGVuIGJlY29tZXMgY2xlYW4uIEFueSB0aW1lIHRoZSB1c2VyXG4gICAgc2Nyb2xscyBvdXIgcGFnZSBvciByZXNpemVzIHRoZSB3aW5kb3csIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluLiBJZiB3ZSB1cGRhdGVcbiAgICB0aGUgRE9NLCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2FpbiBiZWNhdXNlIGEgRE9NIHVwZGF0ZSBjb3VsZCBjYXVzZSBhIHJlZmxvdyxcbiAgICBtb3ZpbmcgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIHZpc2libGUuXG5cbiAgICBXZSBoYXZlIGltcGxlbWVudGVkIHRoaXMgYXMgYSBmbGFnIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZSB1c2VycyB0byBzZW5kIGFuIGFjdGlvbiBvblxuICAgIHNjcm9sbCBiZWNhdXNlIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8gY29tcHV0ZSB0aGUgdmlzaWJpbGl0eSBvbiB0aGUgdmlydHVhbC1kb21cbiAgICB3aGVuIHRoZSB2aXJ0dWFsLWRvbSBkb2VzIG5vdCBtYXRjaCB0aGUgYWN0dWFsIGRvbSAoYXMgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgIFthcHBseV9hY3Rpb25zXSkuICopXG5tb2R1bGUgVmlzaWJpbGl0eSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlX2FzX2RpcnR5IDogdW5pdCAtPiB0XG4gIHZhbCBtYXJrX2NsZWFuIDogdCAtPiB1bml0XG4gIHZhbCBtYXJrX2RpcnR5IDogdCAtPiB1bml0XG4gIHZhbCBpc19kaXJ0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgbXV0YWJsZSB3aGVuX2RpcnR5IDogdW5pdCBJdmFyLnQgfVxuXG4gIGxldCBjcmVhdGVfYXNfZGlydHkgKCkgPSB7IHdoZW5fZGlydHkgPSBJdmFyLmNyZWF0ZV9mdWxsICgpIH1cbiAgbGV0IG1hcmtfZGlydHkgdCA9IEl2YXIuZmlsbF9pZl9lbXB0eSB0LndoZW5fZGlydHkgKClcbiAgbGV0IGlzX2RpcnR5IHQgPSBJdmFyLmlzX2Z1bGwgdC53aGVuX2RpcnR5XG4gIGxldCBtYXJrX2NsZWFuIHQgPSBpZiBpc19kaXJ0eSB0IHRoZW4gdC53aGVuX2RpcnR5IDwtIEl2YXIuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIExvZ2dpbmdfZmlsdGVyID0gc3RydWN0XG4gIG1vZHVsZSBTdHJpbmdfYmxhbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIEJsYW5nLnQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHwgQWxsXG4gICAgfCBOb25lXG4gICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgb2YgU3RyaW5nX2JsYW5nLnRcbiAgICB8IEN1c3RvbV9maWx0ZXIgb2YgKFNleHAudCAtPiBib29sKVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z19mbGFncyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgdmFsIGluaXRfYXBwXG4gICAgOiAgYXBwX2lkOnN0cmluZ1xuICAgIC0+IGZpbHRlcl9uYW1lczpTdHJpbmcuU2V0LnRcbiAgICAtPiBkZWJ1Zzpib29sXG4gICAgLT4gc3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIG1vZHVsZSBBcHBfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWx0ZXJfbmFtZXMgOiBTdHJpbmcuU2V0LnRcbiAgICAgIDsgbG9nZ2luZ19maWx0ZXIgOiBMb2dnaW5nX2ZpbHRlci50IHJlZlxuICAgICAgOyBzaG91bGRfcHJvZmlsZSA6IGJvb2wgcmVmXG4gICAgICA7IHNob3VsZF9kZWJ1ZyA6IGJvb2wgcmVmXG4gICAgICB9XG5cbiAgICBsZXQgc2V0X2xvZ2dpbmdfZmlsdGVyIHQgfmxvZ2dpbmdfZmlsdGVyID0gdC5sb2dnaW5nX2ZpbHRlciA6PSBsb2dnaW5nX2ZpbHRlclxuICAgIGxldCBzZXRfc2hvdWxkX3Byb2ZpbGUgdCB+c2hvdWxkX3Byb2ZpbGUgPSB0LnNob3VsZF9wcm9maWxlIDo9IHNob3VsZF9wcm9maWxlXG4gICAgbGV0IHNldF9zaG91bGRfZGVidWcgdCB+c2hvdWxkX2RlYnVnID0gdC5zaG91bGRfZGVidWcgOj0gc2hvdWxkX2RlYnVnXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgZ2xvYmFsID1cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCBzdGFydExvZ2dpbmdBbGwgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdGFydExvZ2dpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0N1c3RvbSA6XG4gICAgICAgICgoSnMuanNfc3RyaW5nIEpzLnQgLT4gYm9vbCBKcy50KSAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RvcExvZ2dpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdGFydFByb2ZpbGluZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0b3BQcm9maWxpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdGFydERlYnVnZ2luZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0b3BEZWJ1Z2dpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzYXZlSW5jcmVtZW50YWxHcmFwaCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG4gICAgZW5kXG5cbiAgbGV0IGdsb2JhbCA6IGdsb2JhbCBKcy50ID0gSnMuVW5zYWZlLmdsb2JhbFxuICBsZXQgZ2xvYmFsX2lzX2luaXRpYWxpemVkID0gcmVmIGZhbHNlXG4gIGxldCBhcHBfc3RhdGVzIDogQXBwX3N0YXRlLnQgU3RyaW5nLlRhYmxlLnQgPSBTdHJpbmcuVGFibGUuY3JlYXRlICgpXG5cbiAgbGV0IHNpbmdsZV9saW5lX3N0cmluZ19saXN0IHN0cmluZ3MgPVxuICAgIHN0cmluZ3MgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCJcXFwiXCIgXiBzdHIgXiBcIlxcXCJcIikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICA7O1xuXG4gIGxldCBtdWx0aV9saW5lX3N0cmluZ19saXN0IHN0cmluZ3MgPVxuICAgIHN0cmluZ3MgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyKSB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIlxuICA7O1xuXG4gIGxldCBpbml0X2dsb2JhbCAoKSA9XG4gICAgbGV0IHdpdGhfYXBwX2lkX29wdCB1cGRhdGVfc3RhdGUgYXBwX2lkX29wdCA9XG4gICAgICBsZXQgYXBwX2lkX29wdCA9IEpzLk9wdC50b19vcHRpb24gYXBwX2lkX29wdCB8PiBPcHRpb24ubWFwIH5mOkpzLnRvX3N0cmluZyBpblxuICAgICAgbWF0Y2ggYXBwX2lkX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSGFzaHRibC5pdGVyIGFwcF9zdGF0ZXMgfmY6dXBkYXRlX3N0YXRlXG4gICAgICB8IFNvbWUgYXBwX2lkIC0+XG4gICAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgYXBwX3N0YXRlcyBhcHBfaWQgd2l0aFxuICAgICAgICAgfCBTb21lIHN0YXRlIC0+IHVwZGF0ZV9zdGF0ZSBzdGF0ZVxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZlxuICAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgYXBwIHdpdGggaWQgXFxcIiVzXFxcIi4gVmFsaWQgYXBwIGlkcyBhcmU6ICVzXCJcbiAgICAgICAgICAgICBhcHBfaWRcbiAgICAgICAgICAgICAoSGFzaHRibC5rZXlzIGFwcF9zdGF0ZXMgfD4gc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QpKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBsb2dnaW5nX2ZpbHRlciA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXIgfmxvZ2dpbmdfZmlsdGVyKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfcHJvZmlsZSBzaG91bGRfcHJvZmlsZSA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX3Byb2ZpbGUgfnNob3VsZF9wcm9maWxlKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfZGVidWcgc2hvdWxkX2RlYnVnID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfZGVidWcgfnNob3VsZF9kZWJ1ZylcbiAgICBpblxuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ0FsbCA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgQWxsKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gYmxhbmdfc3RyIC0+XG4gICAgICBsZXQgYmxhbmdfc3RyID0gSnMudG9fc3RyaW5nIGJsYW5nX3N0ciBpblxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChmdW4gYXBwX3N0YXRlIC0+XG4gICAgICAgIGxldCBibGFuZyA9XG4gICAgICAgICAgQmxhbmcudF9vZl9zZXhwIFN0cmluZy50X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIGJsYW5nX3N0cilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludmFsaWRfbmFtZXMgPVxuICAgICAgICAgIEJsYW5nLmZvbGQgYmxhbmcgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGludmFsaWRfbmFtZXMgbmFtZSAtPlxuICAgICAgICAgICAgaWYgU2V0Lm1lbSBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIG5hbWVcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9uYW1lc1xuICAgICAgICAgICAgZWxzZSBTZXQuYWRkIGludmFsaWRfbmFtZXMgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU2V0LmlzX2VtcHR5IGludmFsaWRfbmFtZXNcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXJcbiAgICAgICAgICAgIGFwcF9zdGF0ZVxuICAgICAgICAgICAgfmxvZ2dpbmdfZmlsdGVyOihOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgbmFtZWQgZmlsdGVyKHMpOiAlcy4gVmFsaWQgbmFtZXMgYXJlOlxcbiVzXCJcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBpbnZhbGlkX25hbWVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KVxuICAgICAgICAgICAgKFNldC50b19saXN0IGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdCkpKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdDdXN0b21cbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZmlsdGVyIC0+XG4gICAgICBsZXQgZmlsdGVyIGFjdGlvbl9zZXhwID1cbiAgICAgICAgYWN0aW9uX3NleHAgfD4gU2V4cC50b19zdHJpbmcgfD4gSnMuc3RyaW5nIHw+IGZpbHRlciB8PiBKcy50b19ib29sXG4gICAgICBpblxuICAgICAgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIChDdXN0b21fZmlsdGVyIGZpbHRlcikpO1xuICAgIGdsb2JhbCMjLnN0b3BMb2dnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBOb25lKTtcbiAgICBnbG9iYWwjIy5zdGFydFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnN0YXJ0RGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zYXZlSW5jcmVtZW50YWxHcmFwaFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IGZpbGVuYW1lID0gXCJjdXJyZW50X2luY3JfZG9tX2RvdF9ncmFwaC5kb3RcIiBpblxuICAgICAgVWlfaW5jci5zYXZlX2RvdF90b19maWxlIGZpbGVuYW1lO1xuICAgICAgbGV0IGNvbnRlbnRzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmaWxlbmFtZSBpblxuICAgICAgVmRvbV9maWxlX2Rvd25sb2FkLmNyZWF0ZSB+ZmlsZW5hbWUgfm1pbWV0eXBlOlwicGxhaW4vdGV4dFwiIH5jb250ZW50c1xuICAgICAgfD4gVmRvbV9maWxlX2Rvd25sb2FkLnRyaWdnZXIpO1xuICAgIGxldCBpbml0X21lc3NhZ2UgPVxuICAgICAgXCIgSW5jcl9kb20gQWN0aW9uIExvZ2dpbmdcXG5cXFxuICAgICAgXFwgPT09PT09PT09PT09PT09PT09PT09PT1cXG5cXFxuICAgICAgXFwgTG9nZ2luZyBwcmludHMgYWN0aW9uIGluZm8gdG8gdGhlIGNvbnNvbGUuXFxuXFxcbiAgICAgIFxcIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuXFxuXFxcbiAgICAgIFxcIFRvIHN0YXJ0IGxvZ2dpbmcsIHR5cGUgb25lIG9mIHRoZSBmb2xsb3dpbmc6XFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZ0FsbChbYXBwX2lkXSkgLSBsb2cgYWxsIGFjdGlvbnNcXG5cXFxuICAgICAgXFwgXFx0c3RhcnRMb2dnaW5nKGZpbHRlcl9uYW1lIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBwcmUtZGVmaW5lZCBcXFxuICAgICAgIG5hbWVkIGZpbHRlciBbZmlsdGVyX25hbWVdXFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZV9ibGFuZyBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgYmxhbmcgb2YgXFxcbiAgICAgICBuYW1lZCBmaWx0ZXJzIFtmaWx0ZXJfbmFtZV9ibGFuZ11cXG5cXFxuICAgICAgXFwgXFx0c3RhcnRMb2dnaW5nQ3VzdG9tKGZpbHRlciBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgY3VzdG9tIGZ1bmN0aW9uIFxcXG4gICAgICAgW2ZpbHRlcl0gZnJvbSBhIHN0cmluZyAodGhlIGFjdGlvbiBzZXhwKSB0byBhIGJvb2xcXG5cXFxuICAgICAgXFwgVG8gc3RvcCBsb2dnaW5nLCB0eXBlOiBzdG9wTG9nZ2luZyhbYXBwX2lkXSlcXG5cXG5cXFxuICAgICAgXFwgSW5jcl9kb20gQWN0aW9uIFByb2ZpbGluZ1xcblxcXG4gICAgICBcXCA9PT09PT09PT09PT09PT09PT09PT09PT09XFxuXFxcbiAgICAgIFxcIFByb2ZpbGluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxcblxcXG4gICAgICBcXCBUbyBzdGFydCBwcm9maWxpbmcsIHR5cGU6IHN0YXJ0UHJvZmlsaW5nKFthcHBfaWRdKVxcblxcXG4gICAgICBcXCBUbyBzdG9wIHByb2ZpbGluZywgdHlwZTogc3RvcFByb2ZpbGluZyhbYXBwX2lkXSlcXG5cXG5cXFxuICAgICAgXFwgSW5jcl9kb20gRGVidWdnaW5nXFxuXFxcbiAgICAgIFxcID09PT09PT09PT09PT09PT09PVxcblxcXG4gICAgICBcXCBEZWJ1Z2dpbmcgcHJpbnRzIHRpbWluZyBpbmZvIHRvIHRoZSBjb25zb2xlLlxcblxcXG4gICAgICBcXCBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGJ5IHRoZSBhcHAuXFxuXFxcbiAgICAgIFxcIFRvIHN0YXJ0IGRlYnVnZ2luZywgdHlwZTogc3RhcnREZWJ1Z2dpbmcoW2FwcF9pZF0pXFxuXFxcbiAgICAgIFxcIFRvIHN0b3AgZGVidWdnaW5nLCB0eXBlOiBzdG9wRGVidWdnaW5nKFthcHBfaWRdKVxcblxcblxcXG4gICAgICBcXCBbYXBwX2lkXSBpcyBlcXVhbCB0byB0aGUgaWQgb2YgdGhlIGVsZW1lbnQgdGhhdCB0aGUgaW5jci1kb20gYXBwIGlzIGJvdW5kIHRvLiBJZiBcXFxuICAgICAgIHRoZSBwYWdlIG9ubHkgaGFzIG9uZSBhcHAgb3IgeW91IHdhbnQgdG8gYXBwbHkgdGhlIGFjdGlvbiB0byBhbGwgYXBwcywgeW91IGNhbiBcXFxuICAgICAgIHBhc3MgaW4gW251bGxdIChvciBmb3Igc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucywgb21pdCBpdCBhbHRvZ2V0aGVyKS5cIlxuICAgIGluXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBpbml0X21lc3NhZ2UpXG4gIDs7XG5cbiAgbGV0IGluaXRfYXBwIH5hcHBfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3AgPVxuICAgIGlmIG5vdCAhZ2xvYmFsX2lzX2luaXRpYWxpemVkXG4gICAgdGhlbiAoXG4gICAgICBpbml0X2dsb2JhbCAoKTtcbiAgICAgIGdsb2JhbF9pc19pbml0aWFsaXplZCA6PSB0cnVlKTtcbiAgICBsZXQgYXBwX2luaXRfbWVzc2FnZSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIFwiQXZhaWxhYmxlIGxvZ2dpbmcgZmlsdGVycyBmb3IgXFxcIiVzXFxcIjpcXG4lc1wiXG4gICAgICAgIGFwcF9pZFxuICAgICAgICAoU2V0LnRvX2xpc3QgZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgaW5cbiAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIGFwcF9pbml0X21lc3NhZ2UpO1xuICAgIGxldCBsb2dnaW5nX2ZpbHRlciA9IHJlZiBMb2dnaW5nX2ZpbHRlci5Ob25lIGluXG4gICAgbGV0IHNob3VsZF9wcm9maWxlID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNob3VsZF9kZWJ1ZyA9IHJlZiBkZWJ1ZyBpblxuICAgIEhhc2h0Ymwuc2V0XG4gICAgICBhcHBfc3RhdGVzXG4gICAgICB+a2V5OmFwcF9pZFxuICAgICAgfmRhdGE6eyBmaWx0ZXJfbmFtZXM7IGxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH07XG4gICAgdXBvbiBzdG9wIChmdW4gKCkgLT4gSGFzaHRibC5yZW1vdmUgYXBwX3N0YXRlcyBhcHBfaWQpO1xuICAgIHsgbG9nZ2luZ19maWx0ZXIgPSAoZnVuICgpIC0+ICFsb2dnaW5nX2ZpbHRlcilcbiAgICA7IHNob3VsZF9wcm9maWxlID0gKGZ1biAoKSAtPiAhc2hvdWxkX3Byb2ZpbGUpXG4gICAgOyBzaG91bGRfZGVidWcgPSAoZnVuICgpIC0+ICFzaG91bGRfZGVidWcpXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEFkZHMgdGhlIG5lY2Vzc2FyeSBhdHRyaWJ1dGUgdG8gdGhlIHJvb3Qgbm9kZSBzbyB0aGF0IGl0IGNhbiBpbnRlcmNlcHRcbiAgIGtleWJvYXJkIGV2ZW50cy5cbiAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGFiaW5kZXggKilcbmxldCBvdmVycmlkZV9yb290X2VsZW1lbnQgcm9vdCA9XG4gIGxldCBvcGVuIFZkb20gaW5cbiAgbGV0IHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgPVxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50LmF0dHJzIHw+IEF0dHIuRXhwZXJ0LmNvbnRhaW5zX25hbWUgXCJkaXNhYmxlX3RhYl9pbmRleFwiIHw+IG5vdFxuICBpblxuICBtYXRjaCAocm9vdCA6IE5vZGUudCkgd2l0aFxuICB8IEVsZW1lbnQgZWxlbWVudCB3aGVuIHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgLT5cbiAgICBsZXQgYWRkX25ld19hdHRycyBhdHRycyA9XG4gICAgICBWZG9tLkF0dHIuKHN0eWxlIChDc3NfZ2VuLm91dGxpbmUgfnN0eWxlOmBOb25lICgpKSBAIHRhYmluZGV4IDAgQCBhdHRycylcbiAgICBpblxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50Lm1hcF9hdHRycyB+ZjphZGRfbmV3X2F0dHJzIHw+IE5vZGUuRWxlbWVudFxuICB8IF8gLT4gcm9vdFxuOztcblxubGV0IGdldF90YWdfbmFtZSAobm9kZSA6IFZkb20uTm9kZS50KSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IEVsZW1lbnQgZSAtPiBTb21lIChWZG9tLk5vZGUuRWxlbWVudC50YWcgZSlcbiAgfCBOb25lIHwgVGV4dCBfIHwgV2lkZ2V0IF8gLT4gTm9uZVxuOztcblxubGV0IHN0YXJ0X2JvbnNhaVxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5Qcml2YXRlLlNfZm9yX2JvbnNhaVxuICAgICAgICB3aXRoIHR5cGUgTW9kZWwudCA9IG1vZGVsXG4gICAgICAgICBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICAoKiBUaGlzIGlzIGlkZW1wb3RlbnQgYW5kIHNvIGZpbmUgdG8gZG8uICopXG4gIEFzeW5jX2pzLmluaXQgKCk7XG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCViaW5kICgpID0gQXN5bmNfanMuZG9jdW1lbnRfbG9hZGVkICgpIGluXG4gICAgIGxldCBtb2RlbF92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfdiBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSA9IEluY3IuVmFyLndhdGNoIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgaW5cbiAgICAgbGV0IGN1dG9mZiA9XG4gICAgICAgSW5jci5DdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+XG4gICAgICAgICBBcHAuTW9kZWwuY3V0b2ZmIG9sZF92YWx1ZSBuZXdfdmFsdWUpXG4gICAgIGluXG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbCBjdXRvZmY7XG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSBjdXRvZmY7XG4gICAgIGxldCBhY3Rpb25fcXVldWUgPSBEZXF1ZS5jcmVhdGUgKCkgaW5cbiAgICAgbGV0IG1vZHVsZSBFdmVudCA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lIChzdHJ1Y3RcbiAgICAgICAgIG1vZHVsZSBBY3Rpb24gPSBBcHAuQWN0aW9uXG5cbiAgICAgICAgIGxldCBoYW5kbGUgYWN0aW9uID0gRGVxdWUuZW5xdWV1ZV9iYWNrIGFjdGlvbl9xdWV1ZSBhY3Rpb25cbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCB2aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5jcmVhdGVfYXNfZGlydHkgKCkgaW5cbiAgICAgbGV0IHZpZXdwb3J0X2NoYW5nZWQgKCkgPSBWaXNpYmlsaXR5Lm1hcmtfZGlydHkgdmlzaWJpbGl0eSBpblxuICAgICAoKiBUaGlzIHJlZ2lzdGVycyB0aGUgW3ZpZXdwb3J0X2NoYW5nZWRdIGhhbmRsZXIgd2l0aCBWaXJ0dWFsX2RvbS4gSWYgZXZlbnQgaGFuZGxlcnNcbiAgICAgICAgdXNlIHRoZSBbVmRvbS5FZmZlY3QuVmlld3BvcnRfY2hhbmdlZF0gZXZlbnQsIHdlIGFyZSBub3RpZmllZC4gKilcbiAgICAgbGV0IG1vZHVsZSBfID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmVfdmlzaWJpbGl0eSAoc3RydWN0XG4gICAgICAgICBsZXQgaGFuZGxlID0gdmlld3BvcnRfY2hhbmdlZFxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IGdldF92aWV3LCBnZXRfYXBwbHlfYWN0aW9uLCBnZXRfdXBkYXRlX3Zpc2liaWxpdHksIGdldF9vbl9kaXNwbGF5ID1cbiAgICAgICBsZXQgb2JzID1cbiAgICAgICAgIEluY3Iub2JzZXJ2ZVxuICAgICAgICAgICAoQXBwLmNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsOm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IH5pbmplY3Q6RXZlbnQuaW5qZWN0KVxuICAgICAgIGluXG4gICAgICAgbGV0IGZldGNoIChmIDogXyBBcHBfaW50Zi5Qcml2YXRlLnNuYXBzaG90IC0+IF8pICgpID1cbiAgICAgICAgIGYgKEluY3IuT2JzZXJ2ZXIudmFsdWVfZXhuIG9icylcbiAgICAgICBpblxuICAgICAgICggZmV0Y2ggKGZ1biB7IHZpZXc7IF8gfSAtPiB2aWV3KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IGFwcGx5X2FjdGlvbjsgXyB9IC0+IGFwcGx5X2FjdGlvbilcbiAgICAgICAsIGZldGNoIChmdW4geyB1cGRhdGVfdmlzaWJpbGl0eTsgXyB9IC0+IHVwZGF0ZV92aXNpYmlsaXR5KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IG9uX2Rpc3BsYXk7IF8gfSAtPiBvbl9kaXNwbGF5KSApXG4gICAgIGluXG4gICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICBsZXQgbmFtZWRfbG9nZ2luZ19maWx0ZXJzID1cbiAgICAgICAoXCJhbGxcIiwgRm4uY29uc3QgdHJ1ZSkgOjogKFwibm9uZVwiLCBGbi5jb25zdCBmYWxzZSkgOjogbmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgICAgfD4gU3RyaW5nLlRhYmxlLm9mX2FsaXN0X2V4blxuICAgICBpblxuICAgICBsZXQgeyBEZWJ1Z19mbGFncy5sb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9ID1cbiAgICAgICBsZXQgZmlsdGVyX25hbWVzID0gSGFzaHRibC5rZXlzIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyB8PiBTdHJpbmcuU2V0Lm9mX2xpc3QgaW5cbiAgICAgICBEZWJ1Z19mbGFncy5pbml0X2FwcCB+YXBwX2lkOmJpbmRfdG9fZWxlbWVudF93aXRoX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wXG4gICAgIGluXG4gICAgIGxldCBodG1sID0gZ2V0X3ZpZXcgKCkgaW5cbiAgICAgbGV0IGh0bWxfZG9tID0gVmRvbS5Ob2RlLnRvX2RvbSBodG1sIGluXG4gICAgIGxldCBlbGVtID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfZXhuIGJpbmRfdG9fZWxlbWVudF93aXRoX2lkIGluXG4gICAgIGxldCBwYXJlbnQgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gKEpzLk9wdC50b19vcHRpb24gZWxlbSMjLnBhcmVudE5vZGUpIGluXG4gICAgIERvbS5yZXBsYWNlQ2hpbGQgcGFyZW50IGh0bWxfZG9tIGVsZW07XG4gICAgICgqIHdlIG1ha2Ugc3VyZSB0byBjYWxsIFt2aWV3cG9ydF9jaGFuZ2VkXSB3aGVuZXZlciB0aGUgd2luZG93IHJlc2l6ZXMgb3IgdGhlIHNjcm9sbFxuICAgICAgICBjb250YWluZXIgaW4gd2hpY2ggb3VyIEhUTUwgaXMgbG9jYXRlZCBpcyBzY3JvbGxlZC4gKilcbiAgICAgbGV0IGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBldmVudF9uYW1lIHdoZXJlID1cbiAgICAgICBpZ25vcmVcbiAgICAgICAgIChEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgICAgd2hlcmVcbiAgICAgICAgICAgIChEb20uRXZlbnQubWFrZSBldmVudF9uYW1lKVxuICAgICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgdmlld3BvcnRfY2hhbmdlZCAoKTtcbiAgICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICAgICBpblxuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJzY3JvbGxcIiAoSnNfbWlzYy5nZXRfc2Nyb2xsX2NvbnRhaW5lciBodG1sX2RvbSk7XG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInJlc2l6ZVwiIERvbV9odG1sLndpbmRvdztcbiAgICAgbGV0JWJpbmQgc3RhdGUgPVxuICAgICAgIEFwcC5vbl9zdGFydHVwXG4gICAgICAgICB+c2NoZWR1bGVfYWN0aW9uOihmdW4gYSAtPiBVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZSAoRXZlbnQuaW5qZWN0IGEpKVxuICAgICAgICAgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpXG4gICAgIGluXG4gICAgIGxldCBwcmV2X2h0bWwgPSByZWYgaHRtbCBpblxuICAgICBsZXQgcHJldl9lbHQgPSByZWYgaHRtbF9kb20gaW5cbiAgICAgbGV0IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpID1cbiAgICAgICBsZXQgZWxlbWVudCA9ICFwcmV2X2VsdCBpblxuICAgICAgICgqIElmIHRoZSBlbGVtZW50IHRvIGZvY3VzIGlzIGFuIGVsZW1lbnQsIGNhc3QgaXQgaW50byB0aGVcbiAgICAgICAgICBtb3JlIHBlcm1pc3NpdmUgXCJmb2N1c2FibGVcIiB0eXBlIGRlZmluZWQgYXQgdGhlIHRvcCBvZlxuICAgICAgICAgIHRoaXMgZmlsZSwgYW5kIHRoZW4gZm9jdXMgdGhhdC4gKilcbiAgICAgICBEb21faHRtbC5Db2VyY2VUby5lbGVtZW50IGVsZW1lbnRcbiAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgfD4gT3B0aW9uLm1hcCB+Zjphc19mb2N1c2FibGVcbiAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIGVsZW1lbnQgLT5cbiAgICAgICAgIGVsZW1lbnQjI2ZvY3VzXG4gICAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgICB2YWwgcHJldmVudFNjcm9sbCA9IEpzLl90cnVlXG4gICAgICAgICAgIGVuZCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdGFydCBzID1cbiAgICAgICB0aW1lcl9zdGFydCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdG9wIHMgPVxuICAgICAgIHRpbWVyX3N0b3AgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICAoKlxuICAgICAgICBUYWtlIGFjdGlvbiBvbiBhbnkgYmx1ciBldmVudCwgcmVmb2N1c2luZyB0byB0aGUgcm9vdCBub2RlIGlmIHRoZSByZWxhdGVkVGFyZ2V0IGlzXG4gICAgICAgIG51bGwgb3IgdW5kZWZpbmVkLCBzaWduaWZ5aW5nIHRoYXQgZm9jdXMgd2FzIGxvc3QgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSByZXNldCB0b1xuICAgICAgICB0aGUgYm9keSBub2RlLlxuXG4gICAgICAgIFRoZSBKcy5fdHJ1ZSBwYXJhbWV0ZXIgcHJvdmlkZWQgdG8gRG9tLmFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHVzZUNhcHR1cmVcbiAgICAgICAgcGFyYW1ldGVyIGRlc2NyaWJlZCBoZXJlOlxuICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lclxuICAgICAqKVxuICAgICBpZ25vcmVcbiAgICAgQEAgRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICBEb21faHRtbC53aW5kb3dcbiAgICAgICAgICBEb21faHRtbC5FdmVudC5ibHVyXG4gICAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgKCogW0pzLlVuc2FmZS4qXSBpcyBsaWtlIFtPYmoubWFnaWNdLiBXZSBzaG91bGQgYmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZVxuICAgICAgICAgICAgICAgIGV4cGVjdC4gKilcbiAgICAgICAgICAgICBsZXQgZVxuICAgICAgICAgICAgICAgOiA8IHJlbGF0ZWRUYXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3AgPlxuICAgICAgICAgICAgICAgICAgIEpzLnRcbiAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHJlbGF0ZWRfdGFyZ2V0ID0gZSMjLnJlbGF0ZWRUYXJnZXQgaW5cbiAgICAgICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IHJlbGF0ZWRfdGFyZ2V0KSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpO1xuICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICBKcy5fdHJ1ZTtcbiAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ICgpID1cbiAgICAgICBWaXNpYmlsaXR5Lm1hcmtfY2xlYW4gdmlzaWJpbGl0eTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfdXBkYXRlX3Zpc2liaWxpdHkgKCkpXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWw7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCJcbiAgICAgaW5cbiAgICAgbGV0IG1heWJlX2xvZ19hY3Rpb24gPVxuICAgICAgIGxldCBzYWZlX2ZpbHRlciB+bmFtZSBmaWx0ZXIgYWN0aW9uID1cbiAgICAgICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZmlsdGVyIGFjdGlvbikgd2l0aFxuICAgICAgICAgfCBPayBzaG91bGRfbG9nIC0+IHNob3VsZF9sb2dcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZiAhXCJFeGNlcHRpb24gcmFpc2VkIGJ5ICVzOiAle0Vycm9yI2h1bX1cIiBuYW1lIGVycjtcbiAgICAgICAgICAgZmFsc2VcbiAgICAgICBpblxuICAgICAgIGxldCBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgPVxuICAgICAgICAgQ29yZS5NZW1vLm9mX2NvbXBhcmFibGVcbiAgICAgICAgICAgKG1vZHVsZSBMb2dnaW5nX2ZpbHRlci5TdHJpbmdfYmxhbmcpXG4gICAgICAgICAgIChmdW4gYmxhbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IEhhc2h0YmwuZmluZF9leG4gbmFtZWRfbG9nZ2luZ19maWx0ZXJzIGluXG4gICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICAgfm5hbWU6KHNwcmludGYgIVwibmFtZWQgZmlsdGVyIGJsYW5nIFxcXCIle3NleHA6c3RyaW5nIEJsYW5nLnR9XFxcIlwiIGJsYW5nKVxuICAgICAgICAgICAgICAgIChtYXRjaCBibGFuZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQmFzZSBuYW1lIC0+IGZpbHRlciBuYW1lXG4gICAgICAgICAgICAgICAgIHwgXyAtPiBmdW4gYWN0aW9uIC0+IEJsYW5nLmV2YWwgYmxhbmcgKGZ1biBuYW1lIC0+IGZpbHRlciBuYW1lIGFjdGlvbikpKVxuICAgICAgIGluXG4gICAgICAgZnVuIGFjdGlvbiAtPlxuICAgICAgICAgbGV0IHNob3VsZF9sb2dfYWN0aW9uID1cbiAgICAgICAgICAgbWF0Y2ggbG9nZ2luZ19maWx0ZXIgKCkgd2l0aFxuICAgICAgICAgICB8IEFsbCAtPiB0cnVlXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZyAtPiBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgYmxhbmcgYWN0aW9uXG4gICAgICAgICAgIHwgQ3VzdG9tX2ZpbHRlciBmaWx0ZXIgLT5cbiAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgfm5hbWU6XCJjdXN0b20gZmlsdGVyXCJcbiAgICAgICAgICAgICAgIChmdW4gYWN0aW9uIC0+IGZpbHRlciAoQXBwLkFjdGlvbi5zZXhwX29mX3QgYWN0aW9uKSlcbiAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHNob3VsZF9sb2dfYWN0aW9uXG4gICAgICAgICB0aGVuIEFzeW5jX2pzLmxvZ19zX2FzX3N0cmluZyBbJW1lc3NhZ2UgXCJBY3Rpb25cIiAoYWN0aW9uIDogQXBwLkFjdGlvbi50KV1cbiAgICAgaW5cbiAgICAgbGV0IGFwcGx5X2FjdGlvbiBhY3Rpb24gPVxuICAgICAgIG1heWJlX2xvZ19hY3Rpb24gYWN0aW9uO1xuICAgICAgIGlmIEFwcC5hY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBhY3Rpb25cbiAgICAgICB0aGVuIChcbiAgICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplLWZvci1hY3Rpb25cIjtcbiAgICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCIpXG4gICAgICAgZWxzZSBpZiBzaG91bGRfZGVidWcgKClcbiAgICAgICB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcImFjdGlvbiBhcHBsaWVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIik7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X2FwcGx5X2FjdGlvbiAoKSlcbiAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICAgICAgYWN0aW9uXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWxcbiAgICAgaW5cbiAgICAgbGV0IHJlYyBhcHBseV9hY3Rpb25zICgpID1cbiAgICAgICBtYXRjaCBEZXF1ZS5kZXF1ZXVlX2Zyb250IGFjdGlvbl9xdWV1ZSB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIGFjdGlvbiAtPlxuICAgICAgICAgYXBwbHlfYWN0aW9uIGFjdGlvbjtcbiAgICAgICAgIGFwcGx5X2FjdGlvbnMgKClcbiAgICAgaW5cbiAgICAgbGV0IHBlcmZvcm1fdXBkYXRlICgpID1cbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgICgqIFRoZSBjbG9jayBpcyBzZXQgb25seSBvbmNlIHBlciBjYWxsIHRvIHBlcmZvcm1fdXBkYXRlLCBzbyB0aGF0IGFsbCBhY3Rpb25zIHRoYXRcbiAgICAgICAgICBvY2N1ciBiZWZvcmUgZWFjaCBkaXNwbGF5IHVwZGF0ZSBvY2N1ciBcImF0IHRoZSBzYW1lIHRpbWUuXCIgKilcbiAgICAgICBsZXQgbm93ID1cbiAgICAgICAgIGxldCBkYXRlID0gbmV3JWpzIEpzLmRhdGVfbm93IGluXG4gICAgICAgICBUaW1lX25zLlNwYW4ub2ZfbXMgZGF0ZSMjZ2V0VGltZSB8PiBUaW1lX25zLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgICBpblxuICAgICAgIEluY3IuQ2xvY2suYWR2YW5jZV9jbG9jayBJbmNyLmNsb2NrIH50b186bm93O1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInRvdGFsXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIGlmIFZpc2liaWxpdHkuaXNfZGlydHkgdmlzaWJpbGl0eSB0aGVuIHVwZGF0ZV92aXNpYmlsaXR5ICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIGFwcGx5X2FjdGlvbnMgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgICAgbGV0IGh0bWwgPSBvdmVycmlkZV9yb290X2VsZW1lbnQgaHRtbCBpblxuICAgICAgIHRpbWVyX3N0YXJ0IFwiZGlmZlwiO1xuICAgICAgIGxldCBwYXRjaCA9IFZkb20uTm9kZS5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOiFwcmV2X2h0bWwgfmN1cnJlbnQ6aHRtbCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJkaWZmXCI7XG4gICAgICAgaWYgbm90IChWZG9tLk5vZGUuUGF0Y2guaXNfZW1wdHkgcGF0Y2gpIHRoZW4gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHk7XG4gICAgICAgdGltZXJfc3RhcnQgXCJwYXRjaFwiO1xuICAgICAgIGxldCBlbHQgPSBWZG9tLk5vZGUuUGF0Y2guYXBwbHkgcGF0Y2ggIXByZXZfZWx0IGluXG4gICAgICAgdGltZXJfc3RvcCBcInBhdGNoXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgKGdldF9vbl9kaXNwbGF5ICgpKSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGU7XG4gICAgICAgdGltZXJfc3RvcCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiAoSW5jci5WYXIudmFsdWUgbW9kZWxfdik7XG4gICAgICAgbGV0IG9sZF90YWdfbmFtZSA9IGdldF90YWdfbmFtZSAhcHJldl9odG1sIGluXG4gICAgICAgbGV0IG5ld190YWdfbmFtZSA9IGdldF90YWdfbmFtZSBodG1sIGluXG4gICAgICAgbGV0IHRhZ3NfdGhlX3NhbWUgPSBPcHRpb24uZXF1YWwgU3RyaW5nLmVxdWFsIG9sZF90YWdfbmFtZSBuZXdfdGFnX25hbWUgaW5cbiAgICAgICBwcmV2X2h0bWwgOj0gaHRtbDtcbiAgICAgICBwcmV2X2VsdCA6PSBlbHQ7XG4gICAgICAgdGltZXJfc3RvcCBcInRvdGFsXCI7XG4gICAgICAgaWYgc2hvdWxkX2RlYnVnICgpIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiLS0tLS0tLVwiKTtcbiAgICAgICAoKiBDaGFuZ2luZyB0aGUgdGFnIG5hbWUgY2F1c2VzIGZvY3VzIHRvIGJlIGxvc3QuICBSZWZvY3VzIGluIHRoYXQgY2FzZS4gKilcbiAgICAgICBpZiBub3QgdGFnc190aGVfc2FtZSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgIGluXG4gICAgICgqIFdlIHVzZSBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIHNvIHRoYXQgYnJvd3NlciB0ZWxscyB1cyB3aGVyZSBpdCdzIHRpbWUgdG9cbiAgICAgICAgcmVmcmVzaCB0aGUgVUkuIEFsbCB0aGUgYWN0aW9ucyB3aWxsIGJlIHByb2Nlc3NlZCBhbmQgdGhlIGNoYW5nZXMgcHJvcGFnYXRlZFxuICAgICAgICB0byB0aGUgRE9NIGluIG9uZSBmcmFtZS4gKilcbiAgICAgbGV0IHJlYyBjYWxsYmFjayAoKSA9XG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgICAgdGhlbiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaylcbiAgICAgaW5cbiAgICAgKCogV2Ugd2FudCB0aGUgcm9vdCBlbGVtZW50IHRvIHN0YXJ0IG91dCBmb2N1c2VkLCBzbyBwZXJmb3JtIGFuIGluaXRpYWxcbiAgICAgICAgdXBkYXRlL3JlbmRlciwgdGhlbiBpbW1lZGlhdGVseSBmb2N1cyB0aGUgcm9vdCAodW5sZXNzIGEgbm9uLWJvZHkgZWxlbWVudCBhbHJlYWR5XG4gICAgICAgIGhhcyBmb2N1cykuICBUaGlzIGZvY3VzaW5nIGNhbid0IGhhcHBlbiBpbnNpZGUgb2YgdGhlIGBjYWxsYmFja2AgYmVjYXVzZSB0aGVuIGl0XG4gICAgICAgIHdvdWxkIHJlZm9jdXMgcm9vdCBldmVyeSBmcmFtZS4gICopXG4gICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAobWF0Y2ggSnMuT3B0LnRvX29wdGlvbiBEb21faHRtbC5kb2N1bWVudCMjLmFjdGl2ZUVsZW1lbnQgd2l0aFxuICAgICAgfCBTb21lIGVsIC0+IGlmIEpzLk9wdC50ZXN0IChEb21faHRtbC5Db2VyY2VUby5ib2R5IGVsKSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgICB8IE5vbmUgLT4gcmVmb2N1c19yb290X2VsZW1lbnQgKCkpO1xuICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaztcbiAgICAgRGVmZXJyZWQubmV2ZXIgKCkpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3RhcnRfYm9uc2FpID0gc3RhcnRfYm9uc2FpXG5lbmRcblxubGV0IHN0YXJ0XG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlMgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbCBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICBzdGFydF9ib25zYWlcbiAgICB+ZGVidWdcbiAgICB+c3RvcFxuICAgIH5uYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICB+aW5pdGlhbF9tb2RlbFxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBpbmNsdWRlIEFwcFxuXG4gICAgICBsZXQgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gXyA9IHRydWVcblxuICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgPVxuICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgbGV0JW1hcCBjb21wb25lbnQgPSBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0IGluXG4gICAgICAgIGxldCB2aWV3ID0gQ29tcG9uZW50LnZpZXcgY29tcG9uZW50IGluXG4gICAgICAgIGxldCBhcHBseV9hY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2V2ZW50IF9tb2RlbCBhY3Rpb24gPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQuYXBwbHlfYWN0aW9uIGNvbXBvbmVudCBhY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgX21vZGVsIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC51cGRhdGVfdmlzaWJpbGl0eSBjb21wb25lbnQgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb25fZGlzcGxheSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQub25fZGlzcGxheSBjb21wb25lbnQgc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICB7IEFwcF9pbnRmLlByaXZhdGUudmlldzsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheSB9XG4gICAgICA7O1xuICAgIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gVmlydHVhbF9kb20uVmRvbVxuaW5jbHVkZSBWZG9tX2lucHV0X3dpZGdldHNfaW50ZlxuXG5tb2R1bGUgRGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgdClcbiAgICB0aGVuIGZhaWx3aXRoZiBcIkNhbm5vdCByZXByZXNlbnQgbm9uLWZpbml0ZSBmbG9hdCBhcyBkZWNpbWFsOiAlZlwiIHQgKClcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCB0ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBzcHJpbnRmIFwiJS4xMmdcIiB0XG4gIDs7XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgSW5pdGlhbFxuICAgICgqIFRoaXMgaXMgdXNlZCB0byBhdm9pZCBtYXJraW5nIGFzIGludmFsaWQgYSBmaWVsZCB0aGF0IGhhc24ndCBldmVyIGJlZW5cbiAgICAgICB0b3VjaGVkIGJ5IHRoZSB1c2VyLCB0byBpbXByb3ZlIFVYLiAqKVxuICAgIHwgVmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICB8IEludmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZ1xuICAgICAgICA7IGxhc3RfdmFsaWQgOiAnYSBvcHRpb25cbiAgICAgICAgOyBlcnJvciA6IHN0cmluZ1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgdHlwZSAnYSB1cGRhdGUgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IGxpZnQgKHR5cGUgYSkgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gYSB0XG5cbiAgICAgIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IEluaXRpYWwgLT4gXCJcIlxuICAgICAgICB8IEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yID0gXyB9IC0+IGlucHV0XG4gICAgICAgIHwgVmFsaWQgeyBpbnB1dDsgdmFsdWUgfSAtPlxuICAgICAgICAgIChtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgICAgIHwgU29tZSBpbnB1dCAtPiBpbnB1dFxuICAgICAgICAgICB8IE5vbmUgLT4gTS50b19zdHJpbmcgdmFsdWUpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgVmFsaWQgeyBpbnB1dCA9IFNvbWUgczsgdmFsdWUgPSBNLm9mX3N0cmluZyBzIH0gd2l0aFxuICAgICAgICB8IGV4biAtPiBJbnZhbGlkIHsgaW5wdXQgPSBzOyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgPSBFeG4udG9fc3RyaW5nIGV4biB9XG4gICAgICA7O1xuICAgIGVuZCA6IFN0cmluZ2FibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgPSBhIHQpXG4gIDs7XG5cbiAgbGV0IGluaXRpYWxfZW1wdHkgPSBJbml0aWFsXG4gIGxldCByZXR1cm4gdmFsdWUgPSBWYWxpZCB7IGlucHV0ID0gTm9uZTsgdmFsdWUgfVxuXG4gIGxldCBnZXRfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIF8gfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2xhc3QgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH0gLT4gbGFzdF92YWxpZFxuICAgIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIHwgVmFsaWQgXyAtPiBOb25lXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPiBTb21lIGVycm9yXG4gIDs7XG5cbiAgbGV0IGlzX2ludmFsaWQgPSBmdW5jdGlvblxuICAgIHwgSW52YWxpZCBfIC0+IHRydWVcbiAgICB8IFZhbGlkIF8gfCBJbml0aWFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2luaXRpYWxfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBvbGQgbmV3XyA9XG4gICAgbWF0Y2ggb2xkLCBuZXdfIHdpdGhcbiAgICB8IEluaXRpYWwsIF8gLT4gbmV3X1xuICAgIHwgXywgVmFsaWQgXyAtPiBuZXdfXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgPSBvbGQgfSwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gU29tZSBvbGQ7IGVycm9yIH1cbiAgICB8ICggSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH1cbiAgICAgICwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgfSApIC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQ7IGVycm9yIH1cbiAgICB8IEludmFsaWQgXywgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IFNvbWUgXzsgZXJyb3IgPSBfIH0gLT4gbmV3X1xuICAgIHwgXywgSW5pdGlhbCAtPiBvbGRcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfaW52YWxpZCB2YWxpZGF0ZWQgYXR0cnMgPVxuICBpZiBWYWxpZGF0ZWQuaXNfaW52YWxpZCB2YWxpZGF0ZWRcbiAgdGhlbiBBdHRyLmNyZWF0ZSBcImFyaWEtaW52YWxpZFwiIFwidHJ1ZVwiIDo6IGF0dHJzXG4gIGVsc2UgYXR0cnNcbjs7XG5cbm1vZHVsZSBUaW1lX2NvbXBhdCA9IHN0cnVjdFxuICBtb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUaW1lX25zLk9mZGF5LnRcblxuICAgIGxldCBvZl9zdHJpbmcgPSBUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ1xuXG4gICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0cyBhIEhIOm1tIGZvcm1hdCB3aXRoIG9wdGlvbmFsIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCI7XG4gICAgICAgW1RpbWVfbnMuT2ZkYXkudG9fc3RyaW5nXSBwcm92aWRlcyBwcmVjaXNpb24gaW4gbmFub3NlY29uZHMsIHdoaWNoIGlzIHRvbyBtdWNoLiAqKVxuICAgIGxldCB0b19zdHJpbmcgPSBUaW1lX25zLk9mZGF5LnRvX21pbGxpc2Vjb25kX3N0cmluZ1xuICBlbmRcblxuICBsZXQgem9uZWQgem9uZSA6IChtb2R1bGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gVGltZV9ucy50KSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFRpbWVfbnMudFxuXG4gICAgICAoKiBGb3JtYXQgZnJvbSB0aGUgYnJvd3NlcjogeXl5eS1NTS1kZFRoaDptbSAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbGV0IHBhcnRzID0gU3RyaW5nLnNwbGl0X29uX2NoYXJzIHMgfm9uOlsgJ1QnOyAnOicgXSBpblxuICAgICAgICBsZXQgZGF0ZSA9IExpc3QubnRoX2V4biBwYXJ0cyAwIHw+IERhdGUub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBociA9IExpc3QubnRoX2V4biBwYXJ0cyAxIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG1pbiA9IExpc3QubnRoX2V4biBwYXJ0cyAyIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gVGltZV9ucy5PZmRheS5jcmVhdGUgfmhyIH5taW4gKCkgaW5cbiAgICAgICAgVGltZV9ucy5vZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBzID0gVGltZV9ucy50b19zdHJpbmdfaXNvODYwMV9iYXNpYyB+em9uZSB0IGluXG4gICAgICAgICgqIFRoZSBicm93c2VyIGV4cGVjdCBhIHl5eXktTU0tZGRUaGg6bW0gZm9ybWF0IGFuZCBpdCBhbGxvd3NcbiAgICAgICAgICAgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIi5cblxuICAgICAgICAgICB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyBmb3JtYXQ6IDIwMTktMDEtMzBUMDE6MDA6MDAuMDAwMDAwMDAwKzAxOjAwXG5cbiAgICAgICAgICAgZGVzaXJlZCBmb3JtYXQgYWZ0ZXIgY3V0dGluZzogICAyMDE5LTAxLTMwVDAxOjAwOjAwXG4gICAgICAgICopXG4gICAgICAgIFN0cmluZy5sc3BsaXQyX2V4biB+b246Jy4nIHMgfD4gVHVwbGUyLmdldDFcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQgYXR0cnMgPSBpZiBkaXNhYmxlZCB0aGVuIEF0dHIuZGlzYWJsZWQgOjogYXR0cnMgZWxzZSBhdHRyc1xubGV0IGFkZF9hdHRycyBhdHRycycgYXR0cnMgPSBhdHRycyBAIGF0dHJzJyB8PiBBdHRycy5tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNcblxubGV0IHN0cnVjdHVyYWxfbGlzdCA/KG9yaWVudGF0aW9uID0gYFZlcnRpY2FsKSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCBsYXlvdXRfc3R5bGUgPVxuICAgIG1hdGNoIG9yaWVudGF0aW9uIHdpdGhcbiAgICB8IGBWZXJ0aWNhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBCbG9jaylcbiAgICB8IGBIb3Jpem9udGFsIC0+IENzc19nZW4uKGRpc3BsYXkgYElubGluZV9ibG9jaylcbiAgaW5cbiAgTm9kZS51bFxuICAgIH5hdHRyOlxuICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAoWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgIENzc19nZW4uKGNyZWF0ZSB+ZmllbGQ6XCJsaXN0LXN0eWxlXCIgfnZhbHVlOlwibm9uZVwiIEA+IG1hcmdpbl9sZWZ0IChgUHggMCkpXG4gICAgICAgICAgXVxuICAgICAgICAgIHw+IGFkZF9hdHRycyBhdHRycykpXG4gICAgKExpc3QubWFwIGNoaWxkcmVuIH5mOihmdW4gY2hpbGQgLT4gTm9kZS5saSB+YXR0cjooQXR0ci5zdHlsZSBsYXlvdXRfc3R5bGUpIFsgY2hpbGQgXSkpXG47O1xuXG5tb2R1bGUgVmFsdWVfbm9ybWFsaXppbmdfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlID0gSnNfb2Zfb2NhbWwuSnMuVW5zYWZlXG4gIG9wZW4gSnNfb2Zfb2NhbWxcbiAgb3BlbiBKc19vZl9vY2FtbC5Eb21faHRtbFxuXG4gIGxldCBpc19hY3RpdmUgZWxlbWVudCA9XG4gICAgbGV0IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50ID0gVW5zYWZlLmdldCBkb2N1bWVudCAoSnMuc3RyaW5nIFwiYWN0aXZlRWxlbWVudFwiKSBpblxuICAgIHBoeXNfZXF1YWwgZWxlbWVudCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudFxuICA7O1xuXG4gIGxldCB2YWx1ZV9wcm9wZXJ0eSA9IEpzLnN0cmluZyBcInZhbHVlXCJcbiAgbGV0IGdldF92YWx1ZSBlbGVtZW50IDogJ2EgSnMudCA9IFVuc2FmZS5nZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eVxuICBsZXQgc2V0X3ZhbHVlIGVsZW1lbnQgdmFsdWUgPSBVbnNhZmUuc2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHkgdmFsdWVcblxuICBsZXQgaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgPVxuICAgICgqIFRoaXMgZXZlbnQgaGFuZGxlciBub3JtYWxpemVzIHRoZSB2YWx1ZSBvbiB0aGUgaW5wdXQgZWxlbWVudCBvbiB0aGUgW2NoYW5nZV0gZXZlbnQuXG4gICAgICAgRm9yIGEgdGV4dCBlbnRyeSwgdGhpcyBtZWFucyB3aGVuIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIsIGFuZCB3aGVuIHRoZSB1c2VyIGJsdXJzXG4gICAgICAgdGhlIGVsZW1lbnQuIFdoeSBkb24ndCB3ZSBzaW1wbHkgW3RvX3N0cmluZ10gdGhlIHZhbHVlIGluIHRoZSBtb2RlbD8gQmVjYXVzZSBmb3JcbiAgICAgICBzb21lIGlucHV0IGVsZW1lbnRzLCB5b3UgY2FuIGhhdmUgYSBjaGFuZ2UgZXZlbnQgdGhhdCBmaXJlcyBhZnRlciB0aGUgdmFsdWUgY2hhbmdlc1xuICAgICAgIGJ1dCBiZWZvcmUgW0luY3JfZG9tXSBjYW4gdXBkYXRlIHRoZSBtb2RlbC4gRm9yIGV4YW1wbGUsIHRoaXMgaGFwcGVucyB3aGVuIHlvdVxuICAgICAgIHByZXNzIHRoZSB1cCBhcnJvdyBvbiBhIG51bWJlciBpbnB1dC4gVGhpcyBsZWFkcyB0byBhIGJ1ZyB3aGVyZSB0aGUgdmFsdWUgaW4gdGhlXG4gICAgICAgbW9kZWwgc3dhcHMgYmFjayBhbmQgZm9ydGggd2l0aCB0aGUgdmFsdWUgaW4gdGhlIGVsZW1lbnQuICopXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyIF8gPVxuICAgICAgbGV0IHZhbHVlID0gSnMudG9fc3RyaW5nIChnZXRfdmFsdWUgZWxlbWVudCkgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChmIHZhbHVlKSB+ZjooZnVuIG5vcm1hbGl6ZWQgLT5cbiAgICAgICAgc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyBub3JtYWxpemVkKSk7XG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyID0gRG9tLmhhbmRsZXIgY2hhbmdlX2hhbmRsZXIgaW5cbiAgICBhZGRFdmVudExpc3RlbmVyIGVsZW1lbnQgRXZlbnQuY2hhbmdlIGNoYW5nZV9oYW5kbGVyIEpzLl9mYWxzZVxuICA7O1xuXG4gIG1vZHVsZSBNID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB7IG11dGFibGUgZXZlbnRfaWQgOiBldmVudF9saXN0ZW5lcl9pZCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgdmFsdWUgOiBzdHJpbmdcbiAgICAgICAgOyBmIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHsgdmFsdWU7IF8gfSA9IFNleHAuQXRvbSB2YWx1ZVxuICAgICAgbGV0IGNvbWJpbmUgX2xlZnQgcmlnaHQgPSByaWdodFxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgeyBJbnB1dC52YWx1ZTsgZiB9IGVsZW1lbnQgPVxuICAgICAgaWYgbm90IChpc19hY3RpdmUgZWxlbWVudCkgdGhlbiBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIHZhbHVlKTtcbiAgICAgIGxldCBldmVudF9pZCA9IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mIGluXG4gICAgICB7IFN0YXRlLmV2ZW50X2lkIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuICAgIGxldCBkZXN0cm95IF9pbnB1dCB7IFN0YXRlLmV2ZW50X2lkIH0gX2VsZW1lbnQgPSByZW1vdmVFdmVudExpc3RlbmVyIGV2ZW50X2lkXG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCBzdGF0ZSBlbGVtZW50ID1cbiAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICBsZXQgeyBTdGF0ZS5ldmVudF9pZCB9ID0gaW5pdCBuZXdfaW5wdXQgZWxlbWVudCBpblxuICAgICAgc3RhdGUuU3RhdGUuZXZlbnRfaWQgPC0gZXZlbnRfaWRcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIEF0dHIuSG9va3MuTWFrZSAoTSlcblxuICAoKiBbY3JlYXRlIHZhbHVlIH5mXSB3aWxsIHNldCB0aGUgXCJ2YWx1ZVwiIHByb3BlcnR5IHRvIFt2YWx1ZV0gaWYgdGhlIGVsZW1lbnQgaXMgbm90XG4gICAgIGZvY3VzZWQgYW5kIG9uIGVhY2ggY2hhbmdlLCBydW4gdGhlIGN1cnJlbnQgdmFsdWUgdGhyb3VnaCBbZl0gdG8gcmUtc2V0IGl0LiBBZ2FpbixcbiAgICAgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlIGVsZW1lbnQgaXMgbm90IGZvY3VzZWQuIElmIFtmXSByZXR1cm5zIFtOb25lXSwgbm8gY2hhbmdlXG4gICAgIHRha2VzIHBsYWNlLiAqKVxuICBsZXQgY3JlYXRlIHZhbHVlIH5mID0gQXR0ci5jcmVhdGVfaG9vayBcInZhbHVlOm5vcm1hbGl6ZWRcIiAoY3JlYXRlIHsgdmFsdWU7IGYgfSlcbmVuZFxuXG5tb2R1bGUgRHJvcGRvd24gPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBOb2RlLnNlbGVjdFxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLmNsYXNzXyBcIndpZGdldC1kcm9wZG93blwiXG4gICAgICAgICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gXyB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgIG9uX2NoYW5nZSAoSW50Lm9mX3N0cmluZyB2YWx1ZSB8PiBMaXN0Lm50aF9leG4gdmFsdWVzKSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIChMaXN0Lm1hcGkgdmFsdWVzIH5mOihmdW4gaW5kZXggdmFsdWUgLT5cbiAgICAgICAgIE5vZGUub3B0aW9uXG4gICAgICAgICAgIH5hdHRyOlxuICAgICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgICAgIFsgQXR0ci52YWx1ZSAoSW50LnRvX3N0cmluZyBpbmRleClcbiAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgKGVxdWFsIHZhbHVlIHNlbGVjdGVkKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgIFsgTm9kZS50ZXh0ICh0b19zdHJpbmcgdmFsdWUpIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc19vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCB2YWx1ZXMgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpcIlwiIH5mOk0udG9fc3RyaW5nIGluXG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOlslZXF1YWw6IE0udCBvcHRpb25dXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgTS5hbGxcbiAgICAgIH5lcXVhbDpNLmVxdWFsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgOztcblxuICBsZXQgb2ZfZW51bV9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgTS5hbGwgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpcIlwiIH5mOk0udG9fc3RyaW5nIGluXG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOlslZXF1YWw6IE0udCBvcHRpb25dXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tib3ggPSBzdHJ1Y3RcbiAgbGV0IGltcGwgPyhleHRyYV9hdHRycyA9IFtdKSA/KGRpc2FibGVkID0gZmFsc2UpIH5pc19jaGVja2VkIH5sYWJlbCB+b25fdG9nZ2xlICgpID1cbiAgICBOb2RlLmxhYmVsXG4gICAgICB+YXR0cjooQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgZXh0cmFfYXR0cnMpXG4gICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fdG9nZ2xlICgpKVxuICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIGlzX2NoZWNrZWRcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkKSlcbiAgICAgICAgICBbXVxuICAgICAgOyBOb2RlLnRleHQgbGFiZWxcbiAgICAgIF1cbiAgOztcblxuICBsZXQgc2ltcGxlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgKCkgPVxuICAgIE5vZGUuZGl2XG4gICAgICB+YXR0cjooQXR0ci5jbGFzc18gXCJjaGVja2JveC1jb250YWluZXJcIilcbiAgICAgIFsgaW1wbCA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIH5pc19jaGVja2VkIH5sYWJlbCB+b25fdG9nZ2xlICgpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tsaXN0ID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgPVxuICAgIHN0cnVjdHVyYWxfbGlzdFxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtY2hlY2tsaXN0XCI7IFwiY2hlY2tib3gtY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIENoZWNrYm94LmltcGxcbiAgICAgICAgICAgfmV4dHJhX2F0dHJzXG4gICAgICAgICAgIH5kaXNhYmxlZFxuICAgICAgICAgICB+aXNfY2hlY2tlZDooaXNfY2hlY2tlZCBpdGVtKVxuICAgICAgICAgICB+bGFiZWw6KHRvX3N0cmluZyBpdGVtKVxuICAgICAgICAgICB+b25fdG9nZ2xlOihmdW4gKCkgLT4gb25fdG9nZ2xlIGl0ZW0pXG4gICAgICAgICAgICgpKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRGlzcGxheSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB2YWx1ZXMgfmlzX2NoZWNrZWQgfm9uX3RvZ2dsZSB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgTS5hbGwgfmlzX2NoZWNrZWQgfm9uX3RvZ2dsZSB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpX3NlbGVjdCA9IHN0cnVjdFxuICBtb2R1bGUgUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb19hY3Rpb25cbiAgICAgIHwgQ2xlYXJfYWxsXG4gICAgICB8IFNlbGVjdF9hbGxcbiAgZW5kXG5cbiAgbGV0IGltcGxcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID8ocmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBSZXBlYXRlZF9jbGlja19iZWhhdmlvci5Ob19hY3Rpb24pXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gICAgbGV0IHNpemUgPSBPcHRpb24udmFsdWUgc2l6ZSB+ZGVmYXVsdDooTGlzdC5sZW5ndGggdmFsdWVzKSBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICA7IEF0dHIuY3JlYXRlIFwic2l6ZVwiIChJbnQudG9fc3RyaW5nIHNpemUpXG4gICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gZXZ0IChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0LmJpbmQgZXZ0IyMudGFyZ2V0IERvbV9odG1sLkNvZXJjZVRvLnNlbGVjdClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB0YXJnZXQgLT4gdGFyZ2V0XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICBcIk11bHRpX3NlbGVjdCBbb25fY2hhbmdlXSBldmVudCBmaXJlZCB3aXRoIGEgbWlzc2luZyB0YXJnZXQgb3IgdGFyZ2V0IFxcXG4gICAgICAgICAgICAgICAgIHRoYXQgd2FzIG5vdCBhIHNlbGVjdCBlbGVtZW50LlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgY29sbGVjdGlvbl90b19saXN0IGNvbGxlY3Rpb24gPVxuICAgICAgICAgICAgTGlzdC5pbml0IGNvbGxlY3Rpb24jIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5nZXQgKGNvbGxlY3Rpb24jI2l0ZW0gaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSBjb2xsZWN0aW9uX3RvX2xpc3QgdGFyZ2V0IyMub3B0aW9ucyBpblxuICAgICAgICAgIGxldCBzZWxlY3RlZF92YWx1ZXMgPVxuICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnppcF9leG4gdmFsdWVzIG9wdGlvbnMpIH5mOihmdW4gKHZhbHVlLCBvcHRpb24pIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChKcy50b19ib29sIG9wdGlvbiMjLnNlbGVjdGVkKSB2YWx1ZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSBzZWxlY3RlZF92YWx1ZXMpKVxuICAgICAgXVxuICAgICAgQCBleHRyYV9hdHRyc1xuICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgaW5cbiAgICBsZXQgb3B0aW9ucyA9XG4gICAgICBMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgaXNfc2VsZWN0ZWQgPSBTZXQubWVtIHNlbGVjdGVkIHZhbHVlIGluXG4gICAgICAgIE5vZGUub3B0aW9uXG4gICAgICAgICAgKCogW0F0dHIuYm9vbF9wcm9wZXJ0eV0ga2VlcHMgdGhlIHN0YXRlIG9mIHRoZSBvcHRpb24gaW4gc3luYyBieSBzZXR0aW5nIHRoZSBKU1xuICAgICAgICAgICAgIHByb3BlcnR5LiBbQXR0ci5zZWxlY3RlZF0gbW9kaWZpZXMgdGhlIERPTSBhdHRyaWJ1dGUgc28gdGhhdCBzZWxlY3RlZCBvcHRpb25zXG4gICAgICAgICAgICAgY2FuIGJlIHN0eWxlZCB3aXRoIENTUy4gW0F0dHIuc2VsZWN0ZWRdIGFsb25lIGRvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgICAgICAgICBwcm9wZXJseSBpZiB0aGUgbW9kZWwgY2hhbmdlcywgc28gYm90aCBhcmUgbmVlZGVkLiAqKVxuICAgICAgICAgIH5hdHRyOlxuICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAoWyBTb21lIChBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIGlzX3NlbGVjdGVkKVxuICAgICAgICAgICAgICAgIDsgU29tZVxuICAgICAgICAgICAgICAgICAgICAoQXR0ci5vbl9jbGljayAoZnVuIGV2dCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FzX3JlcGVhdGVkX2NsaWNrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChKcy50b19ib29sIGV2dCMjLmN0cmxLZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICYmIFNldC5lcXVhbCBzZWxlY3RlZCAoU2V0LnNpbmdsZXRvbiAobW9kdWxlIE0pIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB3YXNfcmVwZWF0ZWRfY2xpY2ssIHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBmYWxzZSwgXyB8IHRydWUsIE5vX2FjdGlvbiAtPiBFZmZlY3QuSWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgQ2xlYXJfYWxsIC0+IG9uX2NoYW5nZSAoU2V0LmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgU2VsZWN0X2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgdmFsdWVzKSkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyX29wdCkpXG4gICAgICAgICAgWyBOb2RlLnRleHQgKE0udG9fc3RyaW5nIHZhbHVlKSBdKVxuICAgIGluXG4gICAgTm9kZS5zZWxlY3QgfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIGF0dHJzKSBvcHRpb25zXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3NpemVcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c2l6ZVxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgdmFsdWVzXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3NpemVcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bV9zZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIE0uYWxsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENhbGxfb25faW5wdXRfd2hlbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFRleHRfY2hhbmdlZFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0XG5cbiAgICBsZXQgbGlzdGVuZXIgPSBmdW5jdGlvblxuICAgICAgfCBUZXh0X2NoYW5nZWQgLT4gQXR0ci5vbl9pbnB1dFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0IC0+IEF0dHIub25fY2hhbmdlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG5vcm1hbGl6ZSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMpIHMgPVxuICAgIG1hdGNoIE0udG9fc3RyaW5nIChNLm9mX3N0cmluZyBzKSB3aXRoXG4gICAgfCBleGNlcHRpb24gXyAtPiBTb21lIFwiXCJcbiAgICB8IHYgLT4gU29tZSB2XG4gIDs7XG5cbiAgbGV0IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm4gYXR0cnMgPVxuICAgIG1hdGNoIG9uX3JldHVybiB3aXRoXG4gICAgfCBOb25lIC0+IGF0dHJzXG4gICAgfCBTb21lIG9uX3JldHVybiAtPlxuICAgICAgQXR0ci5vbl9rZXlkb3duIChmdW4gZXYgLT5cbiAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlbiBvbl9yZXR1cm4gKCkgZWxzZSBFZmZlY3QuSWdub3JlKVxuICAgICAgOjogYXR0cnNcbiAgOztcblxuICBsZXQgaW5wdXRfbm9kZSA/KGV4dHJhX2F0dHJzID0gW10pID8oZGlzYWJsZWQgPSBmYWxzZSkgPyhwbGFjZWhvbGRlciA9IFwiXCIpIGF0dHJzID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChhdHRyc1xuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlcjsgQXR0ci5jcmVhdGUgXCJzcGVsbGNoZWNrXCIgXCJmYWxzZVwiIF1cbiAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFtdXG4gIDs7XG5cbiAgbGV0IHJhdyA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciA/b25fcmV0dXJuIH52YWx1ZSB+b25faW5wdXQgKCkgPVxuICAgIFsgQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHZhbHVlOyBBdHRyLm9uX2lucHV0IChmdW4gX2V2IC0+IG9uX2lucHV0KSBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXJcbiAgOztcblxuICBsZXQgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KHNob3VsZF9ub3JtYWxpemUgPSB0cnVlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dHlwZV9hdHRyc1xuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBsZXQgdmFsdWUgPSBPcHRpb24udmFsdWVfbWFwIH5mOk0udG9fc3RyaW5nIHZhbHVlIH5kZWZhdWx0OlwiXCIgaW5cbiAgICAgIGlmIHNob3VsZF9ub3JtYWxpemVcbiAgICAgIHRoZW4gVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIE0pKVxuICAgICAgZWxzZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjooY29uc3QgTm9uZSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiAtPiBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gb25faW5wdXQgTm9uZVxuICAgICAgICB8IHMgLT4gb25faW5wdXQgKE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IE0ub2Zfc3RyaW5nIHMpKSlcbiAgICA7IHZhbHVlXG4gICAgXVxuICAgIHw+IGFkZF9hdHRycyB0eXBlX2F0dHJzXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlclxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGV4dFwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlZFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID9vbl9yZXR1cm5cbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgKG1vZHVsZSBWKSA9IFZhbGlkYXRlZC5saWZ0IChtb2R1bGUgTSkgaW5cbiAgICBsZXQgdmFsdWVfYXR0ciA9XG4gICAgICBtYXRjaCAodmFsdWUgOiBWLnQpIHdpdGhcbiAgICAgIHwgSW5pdGlhbCAtPiBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgXCJcIlxuICAgICAgfCBfIC0+IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIChWLnRvX3N0cmluZyB2YWx1ZSkgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIFYpKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT5cbiAgICAgICAgb25faW5wdXQgKFYub2Zfc3RyaW5nIHMpKVxuICAgIDsgdmFsdWVfYXR0clxuICAgIDsgQXR0ci50eXBlXyBcInRleHRcIlxuICAgIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gbWF5YmVfaW52YWxpZCB2YWx1ZVxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXJcbiAgOztcblxuICBsZXQgdGV4dCA/ZXh0cmFfYXR0cnMgP2NhbGxfb25faW5wdXRfd2hlbiA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH52YWx1ZSB+b25faW5wdXQgKCkgPVxuICAgIG9mX3N0cmluZ2FibGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgU3RyaW5nKVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgbnVtYmVyXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5zdGVwXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwibnVtYmVyXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgcmFuZ2VcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJyYW5nZVwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IHRpbWUgP2V4dHJhX2F0dHJzID9jYWxsX29uX2lucHV0X3doZW4gP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBUaW1lX2NvbXBhdC5PZmRheSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0aW1lXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgZGF0ZSA/ZXh0cmFfYXR0cnMgP2NhbGxfb25faW5wdXRfd2hlbiA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH52YWx1ZSB+b25faW5wdXQgKCkgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIERhdGUpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IGRhdGV0aW1lX2xvY2FsXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP3V0Y19vZmZzZXRcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgaG91cnMgPVxuICAgICAgT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICB1dGNfb2Zmc2V0XG4gICAgICAgICgqIGdldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgdGhlIHRpbWUgem9uZSBkaWZmZXJlbmNlLCBpbiBtaW51dGVzLCBmcm9tIGN1cnJlbnRcbiAgICAgICAgICAgbG9jYWxlIHRvIFVUQy4gVXRjIG9mZnNldCBpcyB0aGUgZGlmZmVyZW5jZSBmcm9tIFVUQyB0byBjdXJyZW50IGxvY2FsZSB3aGljaFxuICAgICAgICAgICBpcyB3aGVyZSB0aGUgbWludXMgY29tZXMgZnJvbS5cblxuICAgICAgICAgICBUaGUgbWludXRlcyBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBob3VycyBzaW5jZSB0aGF0IGlzIHRoZSBmb3JtYXRcbiAgICAgICAgICAgVGltZS5ab25lLm9mX3V0Y19vZmZzZXQgZXhwZWN0cyBmb3IgdGhlIHV0Y19vZmZzZXQuICopXG4gICAgICAgIH5kZWZhdWx0OigobmV3JWpzIEpzX29mX29jYW1sLkpzLmRhdGVfbm93KSMjZ2V0VGltZXpvbmVPZmZzZXQgLyAtNjApXG4gICAgICAgIH5mOihmdW4gdXRjX29mZnNldCAtPiBUaW1lX25zLlNwYW4udG9faHIgdXRjX29mZnNldCB8PiBGbG9hdC50b19pbnQpXG4gICAgaW5cbiAgICBsZXQgKG1vZHVsZSBab25lZF90aW1lKSA9IFRpbWVfY29tcGF0LnpvbmVkIChUaW1lLlpvbmUub2ZfdXRjX29mZnNldCB+aG91cnMpIGluXG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgWm9uZWRfdGltZSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGV0aW1lLWxvY2FsXCIgXVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IHRleHRfYXJlYVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLnRleHRhcmVhXG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgIG9uX2lucHV0IHZhbHVlKVxuICAgICAgICAgICAgOyBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjpPcHRpb24ucmV0dXJuXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuXG4gICgqIEFjY29yZGluZyB0b1xuICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvY29sb3IjVmFsdWUgdGhlXG4gICAgIHZhbHVlIG11c3QgYmUgc2V0IGluIGhleCBmb3JtYXQgYW5kIHdpbGwgYWx3YXlzIGNvbWVzIGJhY2sgaW4gaGV4IGZvcm1hdC4gKilcbiAgbGV0IGNvbG9yX3BpY2tlclxuICAgICAgICA/KGV4dHJhX2F0dHIgPSBBdHRyLmVtcHR5KVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCAoYEhleCB2YWx1ZV8pID0gdmFsdWUgaW5cbiAgICBbIEF0dHIuKHR5cGVfIFwiY29sb3JcIiBAIHZhbHVlX3Byb3AgdmFsdWVfIEAgZXh0cmFfYXR0cilcbiAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgcyAtPiBvbl9pbnB1dCAoYEhleCBzKSlcbiAgICBdXG4gICAgfD4gaW5wdXRfbm9kZSA/ZGlzYWJsZWRcbiAgOztcbmVuZFxuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCB3aXRoX3ZhbGlkYXRpb24gPyhleHRyYV9hdHRycyA9IFtdKSB0ZXh0IH52YWxpZGF0aW9uIH5vbl9jbGljayA9XG4gICAgbWF0Y2ggdmFsaWRhdGlvbiB3aXRoXG4gICAgfCBPayByZXN1bHQgLT5cbiAgICAgIE5vZGUuYnV0dG9uXG4gICAgICAgIH5hdHRyOlxuICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgIChbIEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgcmVzdWx0KTsgQXR0ci50eXBlXyBcImJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gICAgfCBFcnJvciByZWFzb24gLT5cbiAgICAgIE5vZGUuYnV0dG9uXG4gICAgICAgIH5hdHRyOlxuICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgIChbIEF0dHIuZGlzYWJsZWRcbiAgICAgICAgICAgICAgOyBBdHRyLnR5cGVfIFwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXBcIiByZWFzb25cbiAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXAtcG9zaXRpb25cIiBcInRvcFwiXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZSA/KGV4dHJhX2F0dHJzID0gW10pID8oZGlzYWJsZWQgPSBmYWxzZSkgdGV4dCB+b25fY2xpY2sgPVxuICAgIE5vZGUuYnV0dG9uXG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJidXR0b25cIjsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayAoKSkgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFJhZGlvX2J1dHRvbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0eWxlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTmF0aXZlXG4gICAgICB8IEJ1dHRvbl9saWtlIG9mIHsgZXh0cmFfYXR0cnMgOiBjaGVja2VkOmJvb2wgLT4gQXR0ci50IGxpc3QgfVxuXG4gICAgbGV0IGJhcmVib25lc19idXR0b25fbGlrZSA9XG4gICAgICBCdXR0b25fbGlrZVxuICAgICAgICB7IGV4dHJhX2F0dHJzID1cbiAgICAgICAgICAgIChmdW4gfmNoZWNrZWQgLT5cbiAgICAgICAgICAgICAgIGlmIGNoZWNrZWRcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyIH53aWR0aDooYFB4IDEpIH5jb2xvcjooYEhleCBcIiNEMEQwRDBcIikgfnN0eWxlOmBTb2xpZCAoKVxuICAgICAgICAgICAgICAgICAgICAgICBAPiBiYWNrZ3JvdW5kX2NvbG9yIChgSGV4IFwiIzQwNDA0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICBAPiBjb2xvciAoYEhleCBcIiNGN0Y3RjdcIikpXG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyIH53aWR0aDooYFB4IDEpIH5jb2xvcjooYEhleCBcIiNEMEQwRDBcIikgfnN0eWxlOmBTb2xpZCAoKVxuICAgICAgICAgICAgICAgICAgICAgICBAPiBiYWNrZ3JvdW5kX2NvbG9yIChgSGV4IFwiI0VGRUZFRlwiKSlcbiAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBoaWRlX25hdGl2ZV9pbnB1dHMgPVxuICAgIENzc19nZW4uKGNyZWF0ZSB+ZmllbGQ6XCJhcHBlYXJhbmNlXCIgfnZhbHVlOlwibm9uZVwiIEA+IHVuaWZvcm1fbWFyZ2luIChgUHggMCkpXG4gIDs7XG5cbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8oc3R5bGUgOiBTdHlsZS50ID0gTmF0aXZlKVxuICAgICAgICB+b3JpZW50YXRpb25cbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+IFsgQXR0ci5zdHlsZSBoaWRlX25hdGl2ZV9pbnB1dHMgXSwgZXh0cmFfYXR0cnNcbiAgICBpblxuICAgIHN0cnVjdHVyYWxfbGlzdFxuICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAoWyBBdHRyLmNsYXNzZXMgWyBcIndpZGdldC1yYWRpby1idXR0b25zXCI7IFwicmFkaW8tYnV0dG9uLWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBsZXQgY2hlY2tlZCA9IE9wdGlvbi52YWx1ZV9tYXAgc2VsZWN0ZWQgfmRlZmF1bHQ6ZmFsc2UgfmY6KGVxdWFsIGl0ZW0pIGluXG4gICAgICAgICBOb2RlLmxhYmVsXG4gICAgICAgICAgIH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSAobGFiZWxfYXR0cnMgfmNoZWNrZWQpKVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyOlxuICAgICAgICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgIDsgQXR0ci5uYW1lIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgIDsgQXR0ci5jbGFzc2VzIFsgXCJyYWRpby1idXR0b25cIiBdXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCkpXG4gICAgICAgICAgICAgICBbXVxuICAgICAgICAgICA7IE5vZGUudGV4dCAodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgKG1vZHVsZSBFIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3N0eWxlXG4gICAgICB+b3JpZW50YXRpb246YFZlcnRpY2FsXG4gICAgICB+bmFtZVxuICAgICAgfm9uX2NsaWNrXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6RS50b19zdHJpbmdcbiAgICAgIH5lcXVhbDpFLmVxdWFsXG4gICAgICB2YWx1ZXNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzX2hvcml6b250YWxcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgKG1vZHVsZSBFIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3N0eWxlXG4gICAgICB+b3JpZW50YXRpb246YEhvcml6b250YWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIHZhbHVlc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBGaWxlX3NlbGVjdCA9IHN0cnVjdFxuICBtb2R1bGUgSnMgPSBKc19vZl9vY2FtbC5Kc1xuXG4gIGxldCBhY2NlcHRfYXR0cnMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBBdHRyLmVtcHR5XG4gICAgfCBTb21lIGFjY2VwdHMgLT5cbiAgICAgIEF0dHIuY3JlYXRlXG4gICAgICAgIFwiYWNjZXB0XCJcbiAgICAgICAgKExpc3QubWFwIGFjY2VwdHMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYEV4dGVuc2lvbiBzIC0+IGlmIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OlwiLlwiIHRoZW4gcyBlbHNlIFwiLlwiIF4gc1xuICAgICAgICAgICB8IGBNaW1ldHlwZSBzIC0+IHMpXG4gICAgICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIpXG4gIDs7XG5cbiAgbGV0IGxpc3QgPyhleHRyYV9hdHRycyA9IFtdKSA/YWNjZXB0IH5vbl9pbnB1dCAoKSA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiZmlsZVwiXG4gICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmaWxlcyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmluaXQgZmlsZV9saXN0IyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICBmaWxlX2xpc3QjI2l0ZW0gaVxuICAgICAgICAgICAgICAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9leG5cbiAgICAgICAgICAgICAgICAgICAgICAgICB+bWVzc2FnZTpbJXN0cmluZyBcImNvdWxkbid0IGdldCBmaWxlICV7aSNJbnR9XCJdKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZXMpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcblxuICBsZXQgc2luZ2xlID8oZXh0cmFfYXR0cnMgPSBbXSkgP2FjY2VwdCB+b25faW5wdXQgKCkgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgOyBhY2NlcHRfYXR0cnMgYWNjZXB0XG4gICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGZpbGVfbGlzdCMjaXRlbSAwIHw+IEpzLk9wdC50b19vcHRpb24gaW5cbiAgICAgICAgICAgICAgICBvbl9pbnB1dCBmaWxlKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFtdXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgKEMpIEplYW4tQ2hyaXN0b3BoZSBGaWxsaWF0cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgICAgKilcbigqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgKilcbigqICBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nICAgICAgICAgICAgKilcbigqICBkZXNjcmliZWQgaW4gZmlsZSBMSUNFTlNFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgKilcbigqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKilcbigqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpzIE1hcHMgb2YgaW50ZWdlcnMgaW1wbGVtZW50ZWQgYXMgUGF0cmljaWEgdHJlZXMsIGZvbGxvd2luZyBDaHJpc1xuICAgIE9rYXNha2kgYW5kIEFuZHJldyBHaWxsJ3MgcGFwZXIge1xcZW0gRmFzdCBNZXJnZWFibGUgSW50ZWdlciBNYXBzfVxuICAgICh7XFx0dFxcc21hbGwgaHR0cDovL3d3dy5jcy5jb2x1bWJpYS5lZHUvXFx+e31jZG8vcGFwZXJzLmh0bWxcXCNtbDk4bWFwc30pLlxuICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBtb2R1bGUgW1B0c2V0XSB3aGljaCBpcyBhbHNvIGJhc2VkIG9uIHRoZVxuICAgIHNhbWUgZGF0YS1zdHJ1Y3R1cmUuICopXG5cbnR5cGUga2V5ID0gaW50XG5cbnR5cGUgJ2EgdCA9XG4gIHwgRW1wdHlcbiAgfCBMZWFmIG9mIGludCAqICdhXG4gIHwgQnJhbmNoIG9mIGludCAqIGludCAqICdhIHQgKiAnYSB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSB0ID0gdCA9IEVtcHR5XG5cbmxldCB6ZXJvX2JpdCBrIG0gPSAoayBsYW5kIG0pID09IDBcblxubGV0IHJlYyBtZW0gayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChqLF8pIC0+IGsgPT0galxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gbWVtIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgcmVjIGZpbmQgayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBrID09IGogdGhlbiB4IGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBmaW5kIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgZmluZF9vcHQgayBtID0gdHJ5IFNvbWUgKGZpbmQgayBtKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbigqIE5vdGU6IGZpbmRfZmlyc3QvbGFzdCBoYXZlIHRvIGxvb2sgaW4gYm90aCBzdWJ0cmVlc1xuICAgYXMgdGhlc2UgYXJlIGxpdHRsZS1lbmRpYW4gUGF0cmljaWEgdHJlZXMgKilcbmxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrIDwgcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA8IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA+IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPiByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGxvd2VzdF9iaXQgeCA9IHggbGFuZCAoLXgpXG5cbmxldCBicmFuY2hpbmdfYml0IHAwIHAxID0gbG93ZXN0X2JpdCAocDAgbHhvciBwMSlcblxubGV0IG1hc2sgcCBtID0gcCBsYW5kIChtLTEpXG5cbmxldCBqb2luIChwMCx0MCxwMSx0MSkgPVxuICBsZXQgbSA9IGJyYW5jaGluZ19iaXQgcDAgcDEgaW5cbiAgaWYgemVyb19iaXQgcDAgbSB0aGVuXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQwLCB0MSlcbiAgZWxzZVxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MSwgdDApXG5cbmxldCBtYXRjaF9wcmVmaXggayBwIG0gPSAobWFzayBrIG0pID09IHBcblxubGV0IGFkZCBrIHggdCA9XG4gIGxldCByZWMgaW5zID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IExlYWYgKGsseClcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPlxuICAgICAgaWYgaiA9PSBrIHRoZW4gTGVhZiAoayx4KSBlbHNlIGpvaW4gKGssIExlYWYgKGsseCksIGosIHQpXG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBCcmFuY2ggKHAsIG0sIGlucyB0MCwgdDEpXG5cdGVsc2Vcblx0ICBCcmFuY2ggKHAsIG0sIHQwLCBpbnMgdDEpXG4gICAgICBlbHNlXG5cdGpvaW4gKGssIExlYWYgKGsseCksIHAsIHQpXG4gIGluXG4gIGlucyB0XG5cbmxldCBzaW5nbGV0b24gayB2ID1cbiAgYWRkIGsgdiBlbXB0eVxuXG5sZXQgYnJhbmNoID0gZnVuY3Rpb25cbiAgfCAoXyxfLEVtcHR5LHQpIC0+IHRcbiAgfCAoXyxfLHQsRW1wdHkpIC0+IHRcbiAgfCAocCxtLHQwLHQxKSAgIC0+IEJyYW5jaCAocCxtLHQwLHQxKVxuXG5sZXQgcmVtb3ZlIGsgdCA9XG4gIGxldCByZWMgcm12ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT4gaWYgayA9PSBqIHRoZW4gRW1wdHkgZWxzZSB0XG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHJtdiB0MCwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHQwLCBybXYgdDEpXG4gICAgICBlbHNlXG5cdHRcbiAgaW5cbiAgcm12IHRcblxubGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGNhcmRpbmFsIHQwICsgY2FyZGluYWwgdDFcblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeFxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBpdGVyIGYgdDA7IGl0ZXIgZiB0MVxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcCBmIHQwLCBtYXAgZiB0MSlcblxubGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIGsgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXBpIGYgdDAsIG1hcGkgZiB0MSlcblxubGV0IHJlYyBmb2xkIGYgcyBhY2N1ID0gbWF0Y2ggcyB3aXRoXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHggYWNjdVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb2xkIGYgdDAgKGZvbGQgZiB0MSBhY2N1KVxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgKGssIHYpICAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb3JfYWxsIHAgdDAgJiYgZm9yX2FsbCBwIHQxXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaywgdikgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZXhpc3RzIHAgdDAgfHwgZXhpc3RzIHAgdDFcblxubGV0IHJlYyBmaWx0ZXIgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgYXMgdCAtPiBpZiBwciBrIHYgdGhlbiB0IGVsc2UgRW1wdHlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXIgcHIgdDAsIGZpbHRlciBwciB0MSlcblxubGV0IHJlYyBmaWx0ZXJfbWFwIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIC0+IChtYXRjaCBwciBrIHYgd2l0aCBTb21lIHYnIC0+IExlYWYgKGssIHYnKSB8IE5vbmUgLT4gRW1wdHkpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyX21hcCBwciB0MCwgZmlsdGVyX21hcCBwciB0MSlcblxubGV0IHBhcnRpdGlvbiBwIHMgPVxuICBsZXQgcmVjIHBhcnQgKHQsZiBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgcCBrIHYgdGhlbiAoYWRkIGsgdiB0LCBmKSBlbHNlICh0LCBhZGQgayB2IGYpXG4gICAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gcGFydCAocGFydCBhY2MgdDApIHQxXG4gIGluXG4gIHBhcnQgKEVtcHR5LCBFbXB0eSkgc1xuXG5sZXQgcmVjIGNob29zZSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlIHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCByZWMgY2hvb3NlX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlX29wdCB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgc3BsaXQgeCBtID1cbiAgbGV0IGNvbGwgayB2IChsLCBiLCByKSA9XG4gICAgaWYgayA8IHggdGhlbiBhZGQgayB2IGwsIGIsIHJcbiAgICBlbHNlIGlmIGsgPiB4IHRoZW4gbCwgYiwgYWRkIGsgdiByXG4gICAgZWxzZSBsLCBTb21lIHYsIHJcbiAgaW5cbiAgZm9sZCBjb2xsIG0gKGVtcHR5LCBOb25lLCBlbXB0eSlcblxubGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWluX2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWluX2JpbmRpbmcgdCBpblxuICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggKG1pbl9iaW5kaW5nX29wdCBzLCBtaW5fYmluZGluZ19vcHQgdCkgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWF4X2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWF4X2JpbmRpbmcgdCBpblxuICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggbWF4X2JpbmRpbmdfb3B0IHMsIG1heF9iaW5kaW5nX29wdCB0IHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCBiaW5kaW5ncyBtID1cbiAgZm9sZCAoZnVuIGsgdiBhY2MgLT4gKGssIHYpIDo6IGFjYykgbSBbXVxuXG4oKiB3ZSBvcmRlciBjb25zdHJ1Y3RvcnMgYXMgRW1wdHkgPCBMZWFmIDwgQnJhbmNoICopXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPVxuICBsZXQgcmVjIGNvbXBhcmVfYXV4IHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IDBcbiAgICB8IEVtcHR5LCBfIC0+IC0xXG4gICAgfCBfLCBFbXB0eSAtPiAxXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsxIGsyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY21wIHgxIHgyXG4gICAgfCBMZWFmIF8sIEJyYW5jaCBfIC0+IC0xXG4gICAgfCBCcmFuY2ggXywgTGVhZiBfIC0+IDFcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIHAxIHAyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2Vcblx0bGV0IGMgPSBjb21wYXJlIG0xIG0yIGluXG5cdGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9hdXggbDEgbDIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IHIxIHIyXG4gIGluXG4gIGNvbXBhcmVfYXV4IHQxIHQyXG5cbmxldCBlcXVhbCBlcSB0MSB0MiA9XG4gIGxldCByZWMgZXF1YWxfYXV4IHQxIHQyID0gbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPiBrMSA9IGsyICYmIGVxIHgxIHgyXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIHAxID0gcDIgJiYgbTEgPSBtMiAmJiBlcXVhbF9hdXggbDEgbDIgJiYgZXF1YWxfYXV4IHIxIHIyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGVxdWFsX2F1eCB0MSB0MlxuXG5sZXQgbWVyZ2UgZiBtMSBtMiA9XG4gIGxldCBhZGQgbSBrID0gZnVuY3Rpb24gTm9uZSAtPiBtIHwgU29tZSB2IC0+IGFkZCBrIHYgbSBpblxuICAoKiBmaXJzdCBjb25zaWRlciBhbGwgYmluZGluZ3MgaW4gbTEgKilcbiAgbGV0IG0gPSBmb2xkXG4gICAgICAoZnVuIGsxIHYxIG0gLT4gYWRkIG0gazEgKGYgazEgKFNvbWUgdjEpIChmaW5kX29wdCBrMSBtMikpKSBtMSBlbXB0eSBpblxuICAoKiB0aGVuIGJpbmRpbmdzIGluIG0yIHRoYXQgYXJlIG5vdCBpbiBtMSAqKVxuICBmb2xkIChmdW4gazIgdjIgbSAtPiBpZiBtZW0gazIgbTEgdGhlbiBtIGVsc2UgYWRkIG0gazIgKGYgazIgTm9uZSAoU29tZSB2MikpKVxuICAgIG0yIG1cblxubGV0IHVwZGF0ZSB4IGYgbSA9XG4gIG1hdGNoIGYgKGZpbmRfb3B0IHggbSkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHggbVxuICB8IFNvbWUgeiAtPiBhZGQgeCB6IG1cblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9IG4gPj0gMCAmJiAobSA8IDAgfHwgbiA8IG0pXG5cbmxldCByZWMgdW5pb24gZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHksIHQgIC0+IHRcbiAgfCB0LCBFbXB0eSAgLT4gdFxuICB8IExlYWYgKGssdjEpLCB0IC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYxIHwgU29tZSB2MiAtPiBmIGsgdjEgdjIpIHRcbiAgfCB0LCBMZWFmIChrLHYyKSAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MiB8IFNvbWUgdjEgLT4gZiBrIHYxIHYyKSB0XG4gIHwgKEJyYW5jaCAocCxtLHMwLHMxKSBhcyBzKSwgKEJyYW5jaCAocSxuLHQwLHQxKSBhcyB0KSAtPlxuICAgICAgaWYgbSA9PSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFRoZSB0cmVlcyBoYXZlIHRoZSBzYW1lIHByZWZpeC4gTWVyZ2UgdGhlIHN1YnRyZWVzLiAqKVxuXHRicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQwKSwgdW5pb24gZiAoczEsdDEpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBtIG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogW3FdIGNvbnRhaW5zIFtwXS4gTWVyZ2UgW3RdIHdpdGggYSBzdWJ0cmVlIG9mIFtzXS4gKilcblx0aWYgemVyb19iaXQgcSBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQpLCBzMSlcbiAgICAgICAgZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgczAsIHVuaW9uIGYgKHMxLHQpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBuIG0gJiYgbWF0Y2hfcHJlZml4IHAgcSBuIHRoZW5cblx0KCogW3BdIGNvbnRhaW5zIFtxXS4gTWVyZ2UgW3NdIHdpdGggYSBzdWJ0cmVlIG9mIFt0XS4gKilcblx0aWYgemVyb19iaXQgcCBuIHRoZW5cblx0ICBicmFuY2ggKHEsIG4sIHVuaW9uIGYgKHMsdDApLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocSwgbiwgdDAsIHVuaW9uIGYgKHMsdDEpKVxuICAgICAgZWxzZVxuXHQoKiBUaGUgcHJlZml4ZXMgZGlzYWdyZWUuICopXG5cdGpvaW4gKHAsIHMsIHEsIHQpXG5cbmxldCB1bmlvbiBmIHMgdCA9IHVuaW9uIGYgKHMsdClcblxubGV0IHRvX3NlcSBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGssIHYpIC0+IGZ1biAoKSAtPiBTZXEuQ29ucygoayx2KSwgcylcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgdG9fc2VxX2Zyb20gayBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGtleSwgdikgLT4gaWYga2V5ID49IGsgdGhlbiBmdW4gKCkgLT4gU2VxLkNvbnMoKGtleSx2KSwgcykgZWxzZSBzXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IGFkZF9zZXEgcyBtID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgbSBzXG5cbmxldCBvZl9zZXEgcyA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IHNcbiIsImxldCB1dGY4X29mX2NvZGUgYnVmIHggPVxuICBsZXQgYWRkID0gQnVmZmVyLmFkZF9jaGFyIGluXG5cbiAgKCogU3RyYWlnaHQgPD0gZG9lc24ndCB3b3JrIHdpdGggc2lnbmVkIDMxLWJpdCBpbnRzICopXG4gIGxldCBtYXhiaXRzIG4geCA9IHggbHNyIG4gPSAwIGluXG5cbiAgaWYgbWF4Yml0cyA3IHggdGhlbiAoKiA3ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgeClcbiAgZWxzZSBpZiBtYXhiaXRzIDExIHggdGhlbiAoXG4gICAgKCogNSArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAwMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDE2IHggdGhlbiAoXG4gICAgKCogNCArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDAwMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDIxIHggdGhlbiAoXG4gICAgKCogMyArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTEwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAwMDAxMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDI2IHggdGhlbiAoXG4gICAgKCogMiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMDAwMDExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChtYXhiaXRzIDMxIHgpO1xuICAgICgqIDEgKyA2ICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMTAwIGxvciAoKHggbHNyIDMwKSBsYW5kIDBiMDAwMDAwMDEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG5cbmxldCBjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgaiA9XG4gIGxldCBoaWdoMTAgPSBpIC0gMHhEODAwIGluXG4gIGxldCBsb3cxMCA9IGogLSAweERDMDAgaW5cbiAgMHgxMDAwMCArICgoaGlnaDEwIGxzbCAxMCkgbG9yIGxvdzEwKVxuXG5sZXQgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciBidWYgaSBqID1cbiAgdXRmOF9vZl9jb2RlIGJ1ZiAoY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGopXG4iLCJsZXQgdmVyc2lvbiA9IFwiMi4xLjJcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgbGV4ZXJfc3RhdGUgPSB7XG4gIGJ1ZiA6IEJ1ZmZlci50OyAoKiBCdWZmZXIgdXNlZCB0byBhY2N1bXVsYXRlIHN1YnN0cmluZ3MgKilcbiAgbXV0YWJsZSBsbnVtIDogaW50OyAoKiBDdXJyZW50IGxpbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDEpICopXG4gIG11dGFibGUgYm9sIDogaW50O1xuICAgICAgKCogQWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgY3VycmVudCBsaW5lXG4gICAgICAgICAoc3RhcnRpbmcgZnJvbSAwKSAqKVxuICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjsgKCogTmFtZSBkZXNjcmliaW5nIHRoZSBpbnB1dCBmaWxlICopXG59XG5cbm1vZHVsZSBMZXhlcl9zdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBsZXhlcl9zdGF0ZSA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cbmVuZFxuXG5sZXQgaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/KGxudW0gPSAxKSAoKSA9XG4gIGxldCBidWYgPSBtYXRjaCBidWYgd2l0aCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMjU2IHwgU29tZSBidWYgLT4gYnVmIGluXG4gIHsgYnVmOyBsbnVtOyBib2wgPSAwOyBmbmFtZSB9XG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2p1bmsgYnVmIG4gbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMiBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgICAoICgpIClcbiMgOTggXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgMSAtPlxuIyAzIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAoXG4gICAgIGlmIG4gPD0gMCB0aGVuICgpXG4gICAgIGVsc2UgYmVnaW5cbiAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChMZXhpbmcubGV4ZW1lX2NoYXIgbGV4YnVmIDApO1xuICAgICAgIHJlYWRfanVuayBidWYgKG4gLSAxKSBsZXhidWZcbiAgICAgZW5kXG4gICAgIClcbiMgMTA5IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMSBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuIFxubGV0IHJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgbiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICBsZXQganVua19zdGFydF9wb3MgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICByZWFkX2p1bmsgYnVmIG4gbGV4YnVmO1xuICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBqdW5rX3N0YXJ0X3BvcyArIDFcblxuIyAxMjMgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuIiwib3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiEgWW9qc29uXG5cbnR5cGUgdCA9IFlvanNvbi5TYWZlLnRcblxubGV0IHlvanNvbl9vZl91bml0ICgpIDogdCA9IGBOdWxsXG5sZXQgeW9qc29uX29mX2Jvb2wgYiA6IHQgPSBgQm9vbCBiXG5sZXQgeW9qc29uX29mX3N0cmluZyBzdHIgOiB0ID0gYFN0cmluZyBzdHJcbmxldCB5b2pzb25fb2ZfYnl0ZXMgYnl0ZXMgOiB0ID0gYFN0cmluZyAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHlvanNvbl9vZl9jaGFyIGMgOiB0ID0gYFN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHlvanNvbl9vZl9pbnQgbiA6IHQgPSBgSW50IG5cbmxldCB5b2pzb25fb2ZfZmxvYXQgbiA6IHQgPSBgRmxvYXQgblxubGV0IHlvanNvbl9vZl9pbnQzMiAobiA6IEludDMyLnQpIDogdCA9IGBJbnRsaXQgKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9pbnQ2NCAobiA6IEludDY0LnQpIDogdCA9IGBJbnRsaXQgKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgbiA6IHQgPSBgSW50bGl0IChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX3JlZiB5b2pzb25fb2ZfX2EgcmYgPSB5b2pzb25fb2ZfX2EgIXJmXG5sZXQgeW9qc29uX29mX2xhenlfdCB5b2pzb25fb2ZfX2EgbHYgPSB5b2pzb25fb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCB5b2pzb25fb2Zfb3B0aW9uIHlvanNvbl9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IHlvanNvbl9vZl9fYSB4XG4gIHwgTm9uZSAtPiBgTnVsbFxuOztcblxubGV0IHlvanNvbl9vZl9wYWlyIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgKGEsIGIpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGIgXVxuOztcblxubGV0IHlvanNvbl9vZl90cmlwbGUgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiB5b2pzb25fb2ZfX2MgKGEsIGIsIGMpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGI7IHlvanNvbl9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCB5b2pzb25fb2ZfbGlzdCB5b2pzb25fb2ZfX2EgbHN0ID0gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgfmY6eW9qc29uX29mX19hIGxzdCkpXG5cbmxldCB5b2pzb25fb2ZfYXJyYXkgeW9qc29uX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSB5b2pzb25fb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIGBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgeW9qc29uX29mX2hhc2h0YmwgeW9qc29uX29mX2tleSB5b2pzb25fb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBgTGlzdCBbIHlvanNvbl9vZl9rZXkgazsgeW9qc29uX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIGBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHlvanNvbl9vZl9vcGFxdWUgXyA9IGBTdHJpbmcgXCI8b3BhcXVlPlwiXG5sZXQgeW9qc29uX29mX2Z1biBfID0gYFN0cmluZyBcIjxmdW4+XCJcblxuZXhjZXB0aW9uIE9mX3lvanNvbl9lcnJvciBvZiBleG4gKiB0XG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl95b2pzb25fZXJyb3JfZXhuIGV4YyB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChleGMsIHlvanNvbikpXG5sZXQgb2ZfeW9qc29uX2Vycm9yIHdoYXQgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoRmFpbHVyZSB3aGF0LCB5b2pzb24pKVxuXG5sZXQgdW5pdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiAoKVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidW5pdF9vZl95b2pzb246IGBOdWxsIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJvb2xfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEJvb2wgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJib29sX29mX3lvanNvbjogdHJ1ZS9mYWxzZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBzdHJpbmdfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJzdHJpbmdfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYnl0ZXNfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYnl0ZXNfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgY2hhcl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHlvanNvbjtcbiAgICBzdHIuWzBdXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG9mIHNpemUgb25lIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50IHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBmbG9hdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgRmxvYXQgdiAtPiB2XG4gIHwgYEludCBpIC0+IGZsb2F0X29mX2ludCBpXG4gIHwgYEludGxpdCBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiZmxvYXRfb2ZfeW9qc29uOiBmbG9hdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQzMl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQzMi5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDMyLm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQzMl9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50NjRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50NjQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQ2NC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50NjRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG5hdGl2ZWludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBOYXRpdmVpbnQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcIm5hdGl2ZWludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgcmVmX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gcmVmIChhX19vZl95b2pzb24geW9qc29uKVxubGV0IGxhenlfdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IExhenkuZnJvbV92YWwgKGFfX29mX3lvanNvbiB5b2pzb24pXG5cbmxldCBvcHRpb25fb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBlbCAtPiBTb21lIChhX19vZl95b2pzb24gZWwpXG47O1xuXG5sZXQgcGFpcl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgYSwgYlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwicGFpcl9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgdHJpcGxlX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIGNfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uOyBjX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGxldCBjID0gY19fb2ZfeW9qc29uIGNfeW9qc29uIGluXG4gICAgYSwgYiwgY1xuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidHJpcGxlX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCBsaXN0X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2ZfeW9qc29uIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibGlzdF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYXJyYXlfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFtdIC0+IFt8fF1cbiAgfCBgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2ZfeW9qc29uIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2ZfeW9qc29uIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYXJyYXlfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGhhc2h0Ymxfb2ZfeW9qc29uIGtleV9vZl95b2pzb24gdmFsX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBgTGlzdCBbIGtfeW9qc29uOyB2X3lvanNvbiBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3lvanNvbiBrX3lvanNvbikgfmRhdGE6KHZhbF9vZl95b2pzb24gdl95b2pzb24pXG4gICAgICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IHR1cGxlIGxpc3QgbmVlZGVkXCIgeW9qc29uXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBvcGFxdWVfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcIm9wYXF1ZV9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbmxldCBmdW5fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcImZ1bl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHlvanNvblxuOztcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9vZl9hcnJheSA9IHlvanNvbl9vZl9hcnJheVxuICBsZXQgYXJyYXlfb2ZfeW9qc29uID0gYXJyYXlfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYm9vbCA9IHlvanNvbl9vZl9ib29sXG4gIGxldCBib29sX29mX3lvanNvbiA9IGJvb2xfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfY2hhciA9IHlvanNvbl9vZl9jaGFyXG4gIGxldCBjaGFyX29mX3lvanNvbiA9IGNoYXJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfZmxvYXQgPSB5b2pzb25fb2ZfZmxvYXRcbiAgbGV0IGZsb2F0X29mX3lvanNvbiA9IGZsb2F0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludCA9IHlvanNvbl9vZl9pbnRcbiAgbGV0IGludF9vZl95b2pzb24gPSBpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50MzIgPSB5b2pzb25fb2ZfaW50MzJcbiAgbGV0IGludDMyX29mX3lvanNvbiA9IGludDMyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDY0ID0geW9qc29uX29mX2ludDY0XG4gIGxldCBpbnQ2NF9vZl95b2pzb24gPSBpbnQ2NF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9saXN0ID0geW9qc29uX29mX2xpc3RcbiAgbGV0IGxpc3Rfb2ZfeW9qc29uID0gbGlzdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgPSB5b2pzb25fb2ZfbmF0aXZlaW50XG4gIGxldCBuYXRpdmVpbnRfb2ZfeW9qc29uID0gbmF0aXZlaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX29wdGlvbiA9IHlvanNvbl9vZl9vcHRpb25cbiAgbGV0IG9wdGlvbl9vZl95b2pzb24gPSBvcHRpb25fb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfcmVmID0geW9qc29uX29mX3JlZlxuICBsZXQgcmVmX29mX3lvanNvbiA9IHJlZl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9zdHJpbmcgPSB5b2pzb25fb2Zfc3RyaW5nXG4gIGxldCBzdHJpbmdfb2ZfeW9qc29uID0gc3RyaW5nX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2J5dGVzID0geW9qc29uX29mX2J5dGVzXG4gIGxldCBieXRlc19vZl95b2pzb24gPSBieXRlc19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl91bml0ID0geW9qc29uX29mX3VuaXRcbiAgbGV0IHVuaXRfb2ZfeW9qc29uID0gdW5pdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9sYXp5X3QgPSB5b2pzb25fb2ZfbGF6eV90XG4gIGxldCBsYXp5X3Rfb2ZfeW9qc29uID0gbGF6eV90X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2hhc2h0YmwgPSB5b2pzb25fb2ZfaGFzaHRibFxuICBsZXQgaGFzaHRibF9vZl95b2pzb24gPSBoYXNodGJsX29mX3lvanNvblxuZW5kXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFlvanNvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiEgU3RkTGFiZWxzXG5vcGVuIFlvanNvbl9jb252XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZ1xuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2MgeW9qc29uIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2ZfeW9qc29uOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgXFxcbiAgICAgICBmaWVsZHNcIlxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHlvanNvblxuOztcbiIsIm1vZHVsZSBZb2pzb25fY29udl9lcnJvciA9IFlvanNvbl9jb252X2Vycm9yXG5tb2R1bGUgWW9qc29uX2NvbnYgPSBZb2pzb25fY29udlxubW9kdWxlIFlvanNvbmFibGUgPSBZb2pzb25hYmxlX2ludGZcbm1vZHVsZSBZb2pzb24gPSBZb2pzb25cblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICAgIHwgTm9uZVxuICAgIHwgU29tZSBvZiAnYVxuZW5kXG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCBwb2x5X2VxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0ICggISApIDogJ2EgcmVmIC0+ICdhID0gZnVuIHggLT4gIXhcbiIsIiMgMSBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxudHlwZSBub25yZWMgaW50ID0gaW50XG50eXBlIG5vbnJlYyBjaGFyID0gY2hhclxudHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nXG50eXBlIG5vbnJlYyBmbG9hdCA9IGZsb2F0XG50eXBlIG5vbnJlYyBib29sID0gYm9vbFxudHlwZSBub25yZWMgdW5pdCA9IHVuaXRcbnR5cGUgbm9ucmVjIGV4biA9IGV4blxudHlwZSBub25yZWMgJ2EgYXJyYXkgPSAnYSBhcnJheVxudHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3RcbnR5cGUgbm9ucmVjICdhIG9wdGlvbiA9ICdhIG9wdGlvblxudHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50XG50eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyXG50eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0XG50eXBlIG5vbnJlYyAnYSBsYXp5X3QgPSAnYSBsYXp5X3RcbnR5cGUgbm9ucmVjIGJ5dGVzID0gYnl0ZXNcblxuIyAxOCBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxuKCogV2UgcmVxdWlyZSA0LjA4IHdoaWxlIDQuMDcgYWxyZWFkeSBoYXMgYSBTdGRsaWIgbW9kdWxlLlxuICAgSW4gNC4wNywgdGhlIHR5cGUgZXF1YWxpdGllcyBvbiBTdGRsaWIuUGVydmFzaXZlc1xuICAgYXJlIG5vdCBzdHJvbmcgZW5vdWdoIGZvciB0aGUgJ2luY2x1ZGUgU3RkbGliJ1xuICAgYmVsb3cgdG8gc2F0aXNmeSB0aGUgc2lnbmF0dXJlIGNvbnN0cmFpbnRzIG9uXG4gICBQcHhfZGVyaXZpbmdfcnVudGltZS5QZXJ2YXNpdmVzLiAqKVxubW9kdWxlIFN0ZGxpYiA9IFN0ZGxpYlxuXG5pbmNsdWRlIFN0ZGxpYlxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHJlc3VsdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcblxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5lbmRcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcblxubGV0IGNsc3MgPSBBdHRyLmNsYXNzZXM7XG5cbmxldCBkaXZfYyA9IGNscyA9PiBkaXYofmF0dHI9QXR0ci5jbGFzc18oY2xzKSk7XG5sZXQgc3Bhbl9jID0gY2xzID0+IHNwYW4ofmF0dHI9QXR0ci5jbGFzc18oY2xzKSk7XG5cbmxldCBkaXZfZW1wdHkgPSBkaXYofmF0dHI9QXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBcImRpc3BsYXk6bm9uZVwiKSwgW10pO1xuXG5sZXQgZGl2X2lmID0gKHAsIGF0cywgbnMpID0+IHAgPyBkaXYofmF0dHI9QXR0ci5tYW55KGF0cyksIG5zKSA6IGRpdl9lbXB0eTtcbmxldCBzcGFuX2lmID0gKHAsIGF0cywgbnMpID0+XG4gIHAgPyBzcGFuKH5hdHRyPUF0dHIubWFueShhdHMpLCBucykgOiBzcGFuKFtdKTtcblxubGV0IHVubGVzcyA9IChwLCBhKSA9PiBwID8gRWZmZWN0Lk1hbnkoW10pIDogYTtcbiIsImxldCBzd2FwID0gKChhLCBiKSkgPT4gKGIsIGEpO1xuXG5sZXQgbWFwMiA9IChmLCAoYSwgYikpID0+IChmKGEpLCBmKGIpKTtcblxubGV0IG1hcDMgPSAoZiwgKGEsIGIsIGMpKSA9PiAoZihhKSwgZihiKSwgZihjKSk7XG4iLCJsZXQgcHJpbnRfdGltZV9wcmVmaXggPVxuICAgIChuYW1lOiBzdHJpbmcsIHN0YXJ0X3RpbWU6IGZsb2F0LCBlbmRfdGltZTogZmxvYXQpOiB1bml0ID0+IHtcbiAgUHJpbnRmLnByaW50ZihcbiAgICBcIiUtMzJzJTQuMGZtc1wiLFxuICAgIG5hbWUgKysgXCI6XCIsXG4gICAgMTAwMC4wICouIChlbmRfdGltZSAtLiBzdGFydF90aW1lKSxcbiAgKTtcbn07XG5cbmxldCBwcmludF90aW1lID0gKG5hbWU6IHN0cmluZywgc3RhcnRfdGltZTogZmxvYXQsIGVuZF90aW1lOiBmbG9hdCk6IHVuaXQgPT4ge1xuICBwcmludF90aW1lX3ByZWZpeChuYW1lLCBzdGFydF90aW1lLCBlbmRfdGltZSk7XG4gIFByaW50Zi5wcmludGYoXCJcXG4lIVwiKTtcbn07XG5cbmxldCBwcmludF90aW1lcyA9XG4gICAgKG5hbWU6IHN0cmluZywgc3RhcnRfdGltZTogZmxvYXQsIHRpbWVzOiBsaXN0KChzdHJpbmcsIGZsb2F0KSkpOiB1bml0ID0+IHtcbiAgYXNzZXJ0KHRpbWVzICE9IFtdKTtcbiAgbGV0IGVuZF90aW1lID0gTGlzdC5mb2xkX2xlZnQoKF8sIGxhc3QpID0+IHNuZChsYXN0KSwgLTEuMCwgdGltZXMpO1xuICBwcmludF90aW1lX3ByZWZpeChuYW1lLCBzdGFydF90aW1lLCBlbmRfdGltZSk7XG4gIFByaW50Zi5wcmludGYoXCIgW1wiKTtcbiAgbGV0IHJlYyBnbyA9IChwcmV2aW91c190aW1lOiBmbG9hdCwgdGltZXM6IGxpc3QoKHN0cmluZywgZmxvYXQpKSk6IHVuaXQgPT4ge1xuICAgIHN3aXRjaCAodGltZXMpIHtcbiAgICB8IFtdID0+ICgpXG4gICAgfCBbKG5hbWUsIHRpbWUpLCAuLi50aW1lc10gPT5cbiAgICAgIFByaW50Zi5wcmludGYoXCIgJXM6ICUuMGZtc1wiLCBuYW1lLCAxMDAwLjAgKi4gKHRpbWUgLS4gcHJldmlvdXNfdGltZSkpO1xuICAgICAgZ28odGltZSwgdGltZXMpO1xuICAgIH07XG4gIH07XG4gIGdvKHN0YXJ0X3RpbWUsIHRpbWVzKTtcbiAgUHJpbnRmLnByaW50ZihcIiBdXFxuJSFcIik7XG59O1xuXG5sZXQgbWVhc3VyZV90aW1lID0gKG5hbWU6IHN0cmluZywgbWVhc3VyZTogYm9vbCwgZjogdW5pdCA9PiAnYSk6ICdhID0+XG4gIGlmIChtZWFzdXJlKSB7XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBTeXMudGltZSgpO1xuICAgIGxldCB4ID0gZigpO1xuICAgIGxldCBlbmRfdGltZSA9IFN5cy50aW1lKCk7XG4gICAgcHJpbnRfdGltZShuYW1lLCBzdGFydF90aW1lLCBlbmRfdGltZSk7XG4gICAgeDtcbiAgfSBlbHNlIHtcbiAgICBmKCk7XG4gIH07XG4iLCJsZXQgY2F0ID0gU3RyaW5nLmNvbmNhdChcIlwiKTtcblxubGV0IHJlbW92ZV9udGggPSAobiwgdCkgPT4ge1xuICBhc3NlcnQobiA8IFN0cmluZy5sZW5ndGgodCkpO1xuICBTdHJpbmcuc3ViKHQsIDAsIG4pICsrIFN0cmluZy5zdWIodCwgbiArIDEsIFN0cmluZy5sZW5ndGgodCkgLSBuIC0gMSk7XG59O1xuXG5sZXQgcmVtb3ZlX2ZpcnN0ID0gcmVtb3ZlX250aCgwKTtcbmxldCByZW1vdmVfbGFzdCA9IHQgPT4gcmVtb3ZlX250aChTdHJpbmcubGVuZ3RoKHQpIC0gMSwgdCk7XG5cbmxldCBpbnNlcnRfbnRoID0gKG4sIHMsIHQpID0+IHtcbiAgYXNzZXJ0KG4gPCBTdHJpbmcubGVuZ3RoKHQpKTtcbiAgU3RyaW5nLnN1Yih0LCAwLCBuKSArKyBzICsrIFN0cmluZy5zdWIodCwgbiwgU3RyaW5nLmxlbmd0aCh0KSAtIG4pO1xufTtcblxubGV0IHNwbGl0X250aCA9IChuLCB0KSA9PiB7XG4gIGFzc2VydChuIDwgU3RyaW5nLmxlbmd0aCh0KSk7XG4gIChTdHJpbmcuc3ViKHQsIDAsIG4pLCBTdHJpbmcuc3ViKHQsIG4sIFN0cmluZy5sZW5ndGgodCkgLSBuKSk7XG59O1xuXG5sZXQgdG9fbGlzdCA9IHMgPT4gTGlzdC5pbml0KFN0cmluZy5sZW5ndGgocyksIGkgPT4gU3RyaW5nLm1ha2UoMSwgcy5baV0pKTtcblxubGV0IHJlcGVhdCA9IChuLCBzKSA9PiBTdHJpbmcuY29uY2F0KFwiXCIsIExpc3QuaW5pdChuLCBfID0+IHMpKTtcblxubGV0IGFiYnJldmlhdGUgPSAobWF4X2xlbiwgcykgPT5cbiAgU3RyaW5nLmxlbmd0aChzKSA+IG1heF9sZW4gPyBTdHJpbmcuc3ViKHMsIDAsIG1heF9sZW4pICsrIFwiLi4uXCIgOiBzO1xuIiwiLyogVE9ETzogd2UgbWlnaHQgd2FudCB0byBqdXN0IHVzZSB0aGlzIEFQST9cblxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9yZ3JpbmJlcmcvb2NhbWwtbXRsL2Jsb2IvbWFzdGVyL2xpYi9tdGwubWxcblxuICAgVGhvdWdoIGl0J3MgYSBiaXQgaGVhdnksIGVzcGVjaWFsbHkgd2l0aCB0aGUgZXh0cmEgdHlwZSBwYXJhbWV0ZXIuLi5cblxuICAgSW4gYW55IGNhc2UsIHRoYXQncyBhIGdvb2QgcmVmZXJlbmNlLiAqL1xuXG5tb2R1bGUgdHlwZSBNT05BRF9CQVNJQyA9IHtcbiAgW0BkZXJpdmluZyBzZXhwXVxuICB0eXBlIHQoJ2EpO1xuICBsZXQgcmV0dXJuOiAnYSA9PiB0KCdhKTtcbiAgbGV0IGJpbmQ6ICh0KCdhKSwgJ2EgPT4gdCgnYikpID0+IHQoJ2IpO1xufTtcblxubW9kdWxlIHR5cGUgTU9OQURfRlVOQ1RPUiA9IHtcbiAgaW5jbHVkZSBNT05BRF9CQVNJQztcbiAgbGV0IG1hcDogKHQoJ2EpLCAnYSA9PiAnYikgPT4gdCgnYik7XG59O1xuXG5tb2R1bGUgTWFrZV9GdW5jdG9yID0gKE06IE1PTkFEX0JBU0lDKSA9PiB7XG4gIGluY2x1ZGUgTTtcbiAgbGV0IG1hcCA9ICh4LCBmKSA9PiBiaW5kKHgsIGEgPT4gTS5yZXR1cm4oZihhKSkpO1xufTtcblxubW9kdWxlIHR5cGUgTU9OQURfWklQID0ge1xuICBpbmNsdWRlIE1PTkFEX0ZVTkNUT1I7XG4gIGxldCB6aXA6ICh0KCdhKSwgdCgnYikpID0+IHQoKCdhLCAnYikpO1xufTtcblxubW9kdWxlIE1ha2VfWmlwID0gKE06IE1PTkFEX0ZVTkNUT1IpID0+IHtcbiAgaW5jbHVkZSBNO1xuXG4gIGxldCB6aXAgPSAoeCwgeSkgPT4gYmluZCh4LCBhID0+IGJpbmQoeSwgYiA9PiBNLnJldHVybigoYSwgYikpKSk7XG59O1xuXG5tb2R1bGUgdHlwZSBNT05BRCA9IHtcbiAgaW5jbHVkZSBNT05BRF9aSVA7XG5cbiAgbGV0IHNlcXVlbmNlOiBsaXN0KHQoJ2EpKSA9PiB0KGxpc3QoJ2EpKTtcblxuICBtb2R1bGUgU3ludGF4OiB7XG4gICAgbGV0ICggbGV0KiApOiAodCgnYSksICdhID0+IHQoJ2IpKSA9PiB0KCdiKTtcbiAgICBsZXQgKGxldCspOiAodCgnYSksICdhID0+ICdiKSA9PiB0KCdiKTtcbiAgICBsZXQgKGFuZCspOiAodCgnYSksIHQoJ2IpKSA9PiB0KCgnYSwgJ2IpKTtcblxuICAgIGxldCAoPj49KTogKHQoJ2EpLCAnYSA9PiB0KCdiKSkgPT4gdCgnYik7XG4gICAgbGV0ICg+PnwpOiAodCgnYSksICdhID0+ICdiKSA9PiB0KCdiKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBNYWtlX01vbmFkX1ogPSAoTTogTU9OQURfWklQKSA9PiB7XG4gIGluY2x1ZGUgTTtcblxuICBsZXQgc2VxdWVuY2UgPSBtcyA9PiB7XG4gICAgbGV0IHJlYyBzZXF1ZW5jZScgPSAobXMsIGFjYykgPT4ge1xuICAgICAgc3dpdGNoIChtcykge1xuICAgICAgfCBbXSA9PiBhY2NcbiAgICAgIHwgW20sIC4uLm1zXSA9PlxuICAgICAgICBiaW5kKG0sIHggPT4gc2VxdWVuY2UnKG1zLCBtYXAoYWNjLCBhY2MgPT4gW3gsIC4uLmFjY10pKSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIG1hcChzZXF1ZW5jZScobXMsIFtdIHw+IHJldHVybiksIExpc3QucmV2KTtcbiAgfTtcblxuICBtb2R1bGUgU3ludGF4ID0ge1xuICAgIGxldCAoIGxldCogKSA9IGJpbmQ7XG4gICAgbGV0IChsZXQrKSA9IG1hcDtcbiAgICBsZXQgKGFuZCspID0gemlwO1xuXG4gICAgbGV0ICg+Pj0pID0gYmluZDtcbiAgICBsZXQgKD4+fCkgPSBtYXA7XG4gIH07XG59O1xuXG5tb2R1bGUgTWFrZV9Nb25hZF9CID0gKE06IE1PTkFEX0JBU0lDKSA9PlxuICBNYWtlX01vbmFkX1ooTWFrZV9aaXAoTWFrZV9GdW5jdG9yKE0pKSk7XG4iLCJtb2R1bGUgdHlwZSBTVEFURSA9IHtcbiAgdHlwZSB0O1xufTtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgdHlwZSBzdGF0ZTtcblxuICBpbmNsdWRlIE1vbmFkcy5NT05BRCB3aXRoIHR5cGUgdCgnYSkgPSBzdGF0ZSA9PiAoc3RhdGUsICdhKTtcblxuICBsZXQgZ2V0OiB0KHN0YXRlKTtcbiAgbGV0IHB1dDogc3RhdGUgPT4gdCh1bml0KTtcbiAgbGV0IG1vZGlmeTogKHN0YXRlID0+IHN0YXRlKSA9PiB0KHVuaXQpO1xuICBsZXQgbW9kaWZ5JzogKHN0YXRlID0+ICgnYSwgc3RhdGUpKSA9PiB0KCdhKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKFNUOiBTVEFURSkgPT4ge1xuICB0eXBlIHN0YXRlID0gU1QudDtcblxuICBtb2R1bGUgVCA9IHtcbiAgICBbQGRlcml2aW5nIHNleHBdXG4gICAgdHlwZSB0KCdhKSA9IHN0YXRlID0+IChzdGF0ZSwgJ2EpO1xuXG4gICAgbGV0IHJldHVybiA9ICh4LCBzKSA9PiAocywgeCk7XG5cbiAgICBsZXQgYmluZCA9ICh4ZiwgZiwgcykgPT4ge1xuICAgICAgbGV0IChzJywgeCkgPVxuICAgICAgICBzd2l0Y2ggKHhmKHMpKSB7XG4gICAgICAgIHwgciA9PiByXG4gICAgICAgIHwgZXhjZXB0aW9uIGV4biA9PlxuICAgICAgICAgIHByaW50X2VuZGxpbmUoXG4gICAgICAgICAgICBcImJpbmQgZXhjZXB0aW9uOiBcIlxuICAgICAgICAgICAgKysgU2V4cGxpYi5TZXhwLnRvX3N0cmluZ19odW0oU2V4cGxpYi5TdGQuc2V4cF9vZl9leG4oZXhuKSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICByYWlzZShleG4pO1xuICAgICAgICB9O1xuICAgICAgZih4LCBzJyk7XG4gICAgfTtcblxuICAgIGxldCBnZXQgPSBzID0+IChzLCBzKTtcblxuICAgIGxldCBwdXQgPSAoeCwgXykgPT4gKHgsICgpKTtcblxuICAgIGxldCBtb2RpZnkgPSBmID0+IGJpbmQoZ2V0LCBzID0+IHB1dChmKHMpKSk7XG5cbiAgICBsZXQgbW9kaWZ5JyA9IGYgPT5cbiAgICAgIGJpbmQoXG4gICAgICAgIGdldCxcbiAgICAgICAgcyA9PiB7XG4gICAgICAgICAgbGV0ICh4LCBzKSA9IGYocyk7XG4gICAgICAgICAgYmluZChwdXQocyksIF8gPT4gcmV0dXJuKHgpKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gIH07XG5cbiAgaW5jbHVkZSBUO1xuICBpbmNsdWRlIE1vbmFkcy5NYWtlX01vbmFkX0IoVCk7XG59O1xuIiwiaW5jbHVkZSBCYXNlLlJlc3VsdDtcblxubW9kdWxlIFN5bnRheCA9IHtcbiAgbGV0ICggbGV0KiApID0gKHJlc3VsdCwgZikgPT4gYmluZCh+ZiwgcmVzdWx0KTtcbiAgbGV0IChsZXQrKSA9IChyZXN1bHQsIGYpID0+IG1hcCh+ZiwgcmVzdWx0KTtcbn07XG4iLCJsZXQgbWFwX2ZzdCA9IChmLCAoeCwgeSkpID0+IChmKHgpLCB5KTtcbmxldCBtYXBfc25kID0gKGYsICh4LCB5KSkgPT4gKHgsIGYoeSkpO1xuIiwibGV0IGdldCA9IChpZl9ub25lLCBvKSA9PlxuICBzd2l0Y2ggKG8pIHtcbiAgfCBOb25lID0+IGlmX25vbmUoKVxuICB8IFNvbWUoYSkgPT4gYVxuICB9O1xubGV0IGdldF9vcl9mYWlsID0gcyA9PiBnZXQoKCkgPT4gZmFpbHdpdGgocykpO1xubGV0IGdldF9vcl9yYWlzZSA9IGUgPT4gZ2V0KCgpID0+IHJhaXNlKGUpKTtcblxubGV0IG1hcDIgPSAoZiwgbzEsIG8yKSA9PlxuICBzd2l0Y2ggKG8xLCBvMikge1xuICB8IChOb25lLCBfKVxuICB8IChfLCBOb25lKSA9PiBOb25lXG4gIHwgKFNvbWUodjEpLCBTb21lKHYyKSkgPT4gU29tZShmKHYxLCB2MikpXG4gIH07XG5cbmxldCBzb21lX2lmID0gKGNvbmQsIGEpID0+IGNvbmQgPyBTb21lKGEpIDogTm9uZTtcblxubGV0IHppcCA9IChvMSwgbzIpID0+XG4gIHN3aXRjaCAobzEsIG8yKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoU29tZShhKSwgU29tZShiKSkgPT4gU29tZSgoYSwgYikpXG4gIH07XG5sZXQgdW56aXAgPSAobzogb3B0aW9uKCgnYSwgJ2IpKSk6IChvcHRpb24oJ2EpLCBvcHRpb24oJ2IpKSA9PlxuICBzd2l0Y2ggKG8pIHtcbiAgfCBOb25lID0+IChOb25lLCBOb25lKVxuICB8IFNvbWUoKGEsIGIpKSA9PiAoU29tZShhKSwgU29tZShiKSlcbiAgfTtcblxubGV0IHNlcXVlbmNlID0gKGw6IGxpc3Qob3B0aW9uKCdhKSkpOiBvcHRpb24obGlzdCgnYSkpID0+XG4gIExpc3QuZm9sZF9yaWdodChtYXAyKCh4LCB4cykgPT4gW3gsIC4uLnhzXSksIGwsIFNvbWUoW10pKTtcblxubGV0IGFuZF90aGVuID0gKGYsIG8pID0+IE9wdGlvbi5iaW5kKG8sIGYpO1xuXG5tb2R1bGUgU3ludGF4ID0ge1xuICBsZXQgKCBsZXQqICkgPSBPcHRpb24uYmluZDtcbiAgbGV0IChsZXQrKSA9IChvLCBmKSA9PiBPcHRpb24ubWFwKGYsIG8pO1xuICBsZXQgKGFuZCspID0gemlwO1xufTtcbiIsIm1vZHVsZSB0eXBlIE9yZGVyZWRTaG93VHlwZSA9IHtcbiAgaW5jbHVkZSBNYXAuT3JkZXJlZFR5cGU7XG5cbiAgbGV0IHBwOiAoRm9ybWF0LmZvcm1hdHRlciwgdCkgPT4gdW5pdDtcbn07XG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRTZXhwVHlwZSA9IHtcbiAgaW5jbHVkZSBNYXAuT3JkZXJlZFR5cGU7XG5cbiAgbGV0IHNleHBfb2ZfdDogdCA9PiBTZXhwbGliLlNleHAudDtcbiAgbGV0IHRfb2Zfc2V4cDogU2V4cGxpYi5TZXhwLnQgPT4gdDtcbn07XG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRZb2pzb25UeXBlID0ge1xuICBpbmNsdWRlIE1hcC5PcmRlcmVkVHlwZTtcblxuICBsZXQgeW9qc29uX29mX3Q6IHQgPT4gWW9qc29uLlNhZmUudDtcbiAgbGV0IHRfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+IHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9IHtcbiAgaW5jbHVkZSBPcmRlcmVkU2hvd1R5cGU7XG4gIGluY2x1ZGUgT3JkZXJlZFNleHBUeXBlIHdpdGggdHlwZSB0IDo9IHQ7XG4gIGluY2x1ZGUgT3JkZXJlZFlvanNvblR5cGUgd2l0aCB0eXBlIHQgOj0gdDtcbn07XG5cbm1vZHVsZSB0eXBlIFNob3dTID0ge1xuICBpbmNsdWRlIE1hcC5TO1xuXG4gIGxldCBwcDogKChGb3JtYXQuZm9ybWF0dGVyLCAnYSkgPT4gdW5pdCwgRm9ybWF0LmZvcm1hdHRlciwgdCgnYSkpID0+IHVuaXQ7XG59O1xuXG5tb2R1bGUgdHlwZSBTZXhwUyA9IHtcbiAgaW5jbHVkZSBNYXAuUztcblxuICBsZXQgc2V4cF9vZl90OiAoJ3YgPT4gU2V4cGxpYi5TZXhwLnQsIHQoJ3YpKSA9PiBTZXhwbGliLlNleHAudDtcbiAgbGV0IHRfb2Zfc2V4cDogKFNleHBsaWIuU2V4cC50ID0+ICd2LCBTZXhwbGliLlNleHAudCkgPT4gdCgndik7XG59O1xuXG5tb2R1bGUgdHlwZSBZb2pzb25TID0ge1xuICBpbmNsdWRlIE1hcC5TO1xuXG4gIGxldCB5b2pzb25fb2ZfdDogKCd2ID0+IFlvanNvbi5TYWZlLnQsIHQoJ3YpKSA9PiBZb2pzb24uU2FmZS50O1xuICBsZXQgdF9vZl95b2pzb246IChZb2pzb24uU2FmZS50ID0+ICd2LCBZb2pzb24uU2FmZS50KSA9PiB0KCd2KTtcbn07XG5cbm1vZHVsZSB0eXBlIFMgPSB7XG4gIGluY2x1ZGUgU2hvd1M7XG4gIGluY2x1ZGUgU2V4cFMgd2l0aCB0eXBlIHQoJ2EpIDo9IHQoJ2EpIGFuZCB0eXBlIGtleSA6PSBrZXk7XG4gIGluY2x1ZGUgWW9qc29uUyB3aXRoIHR5cGUgdCgnYSkgOj0gdCgnYSkgYW5kIHR5cGUga2V5IDo9IGtleTtcbn07XG5cbm1vZHVsZSBNYWtlU2hvd0ZvciA9IChPOiBPcmRlcmVkU2hvd1R5cGUsIFM6IE1hcC5TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbGV0IHBwID0gKHBwX3YsIGYsIG1hcCkgPT5cbiAgICBTLml0ZXIoXG4gICAgICAoaywgdikgPT4gRm9ybWF0LmZwcmludGYoZiwgXCIlYSAtPiAlYUBcXG5cIiwgTy5wcCwgaywgcHBfdiwgdiksXG4gICAgICBtYXAsXG4gICAgKTtcbn07XG5cbm1vZHVsZSBNYWtlU2hvdyA9IChPOiBPcmRlcmVkU2hvd1R5cGUpIDogKFNob3dTIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZVNob3dGb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZVNleHBGb3IgPSAoTzogT3JkZXJlZFNleHBUeXBlLCBTOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG9wZW4gU2V4cGxpYi5TdGQ7XG5cbiAgW0BkZXJpdmluZyBzZXhwXVxuICB0eXBlIGJpbmRpbmcoJ3YpID0gKE8udCwgJ3YpO1xuXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl92LCBtYXApID0+XG4gICAgbWFwIHw+IFMuYmluZGluZ3MgfD4gc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcbiAgbGV0IHRfb2Zfc2V4cCA9ICh2X29mX3NleHAsIHNleHApID0+XG4gICAgc2V4cFxuICAgIHw+IGxpc3Rfb2Zfc2V4cChiaW5kaW5nX29mX3NleHAodl9vZl9zZXhwKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IFMub2Zfc2VxO1xufTtcblxubW9kdWxlIE1ha2VTZXhwID0gKE86IE9yZGVyZWRTZXhwVHlwZSkgOiAoU2V4cFMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBtb2R1bGUgTSA9IE1hcC5NYWtlKE8pO1xuXG4gIGluY2x1ZGUgTTtcbiAgaW5jbHVkZSBNYWtlU2V4cEZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlWW9qc29uRm9yID0gKE86IE9yZGVyZWRZb2pzb25UeXBlLCBTOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIFtAZGVyaXZpbmcgeW9qc29uXVxuICB0eXBlIGJpbmRpbmcoJ3YpID0gKE8udCwgJ3YpO1xuXG4gIGxldCB5b2pzb25fb2ZfdCA9ICh5b2pzb25fb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBTLmJpbmRpbmdzIHw+IHlvanNvbl9vZl9saXN0KHlvanNvbl9vZl9iaW5kaW5nKHlvanNvbl9vZl92KSk7XG4gIGxldCB0X29mX3lvanNvbiA9ICh2X29mX3lvanNvbiwgeW9qc29uKSA9PlxuICAgIHlvanNvblxuICAgIHw+IGxpc3Rfb2ZfeW9qc29uKGJpbmRpbmdfb2ZfeW9qc29uKHZfb2ZfeW9qc29uKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IFMub2Zfc2VxO1xufTtcblxubW9kdWxlIE1ha2VZb2pzb24gPSAoTzogT3JkZXJlZFlvanNvblR5cGUpIDogKFlvanNvblMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBtb2R1bGUgTSA9IE1hcC5NYWtlKE8pO1xuXG4gIGluY2x1ZGUgTTtcbiAgaW5jbHVkZSBNYWtlWW9qc29uRm9yKE8sIE0pO1xufTtcblxubW9kdWxlIE1ha2VGb3IgPSAoTzogT3JkZXJlZFR5cGUsIE06IE1hcC5TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgaW5jbHVkZSBNYWtlU2hvd0ZvcihPLCBNKTtcbiAgaW5jbHVkZSBNYWtlU2V4cEZvcihPLCBNKTtcbiAgaW5jbHVkZSBNYWtlWW9qc29uRm9yKE8sIE0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTzogT3JkZXJlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBtb2R1bGUgTSA9IE1hcC5NYWtlKE8pO1xuXG4gIGluY2x1ZGUgTTtcbiAgaW5jbHVkZSBNYWtlRm9yKE8sIE0pO1xufTtcbiIsImxldCByZXZfaWYgPSAoYjogYm9vbCkgPT4gYiA/IExpc3QucmV2IDogRnVuLmlkO1xuXG5sZXQgZGVkdXAgPSB4cyA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKHgsIGRlZHVwZWQpID0+IExpc3QubWVtKHgsIGRlZHVwZWQpID8gZGVkdXBlZCA6IFt4LCAuLi5kZWR1cGVkXSxcbiAgICB4cyxcbiAgICBbXSxcbiAgKTtcblxubGV0IGFyZV9kdXBsaWNhdGVzID0geHMgPT5cbiAgTGlzdC5sZW5ndGgoTGlzdC5zb3J0X3VuaXEoY29tcGFyZSwgeHMpKSA9PSBMaXN0Lmxlbmd0aCh4cyk7XG5cbmxldCBncm91cF9ieSA9IChrZXk6ICd4ID0+ICdrLCB4czogbGlzdCgneCkpOiBsaXN0KCgnaywgbGlzdCgneCkpKSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoZ3JvdXBlZCwgeCkgPT4ge1xuICAgICAgbGV0IGsgPSBrZXkoeCk7XG4gICAgICBsZXQga19ncm91cCA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoaywgZ3JvdXBlZCkpIHtcbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIHwgU29tZSh4cykgPT4geHNcbiAgICAgICAgfTtcbiAgICAgIFsoaywgW3gsIC4uLmtfZ3JvdXBdKSwgLi4uTGlzdC5yZW1vdmVfYXNzb2MoaywgZ3JvdXBlZCldO1xuICAgIH0sXG4gICAgW10sXG4gICAgeHMsXG4gICk7XG5cbmxldCByZWMgcmFuZ2UgPSAofmxvPTAsIGhpKSA9PlxuICBpZiAobG8gPiBoaSkge1xuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5yYW5nZVwiKSk7XG4gIH0gZWxzZSBpZiAobG8gPT0gaGkpIHtcbiAgICBbXTtcbiAgfSBlbHNlIHtcbiAgICBbbG8sIC4uLnJhbmdlKH5sbz1sbyArIDEsIGhpKV07XG4gIH07XG5cbi8vIGhlYWRzIG9mIHByZWZpeCBhbmQgc3VmZml4IG5laWdoYm9yIHRoZSBzdWJqZWN0XG50eXBlIGZyYW1lKCd4KSA9IChsaXN0KCd4KSwgbGlzdCgneCkpO1xuXG5sZXQgcmVjIG1rX2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogZnJhbWUoJ3gpID0+IHtcbiAgbGV0IGludmFsaWRfYXJnID0gKCkgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1rX2ZyYW1lXCIpKTtcbiAgaWYgKG4gPCAwKSB7XG4gICAgaW52YWxpZF9hcmcoKTtcbiAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAoW10sIHhzKTtcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBpbnZhbGlkX2FyZygpXG4gICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICBsZXQgKHByZWZpeCwgc3VmZml4KSA9IG1rX2ZyYW1lKG4gLSAxLCB4cyk7XG4gICAgICAocHJlZml4IEAgW3hdLCBzdWZmaXgpO1xuICAgIH07XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0ID1cbiAgICAgICAgKGw6IGxpc3QoJ3gpLCBjb25kOiAneCA9PiBib29sKTogKGxpc3QoJ3gpLCBvcHRpb24oJ3gpLCBsaXN0KCd4KSkgPT4ge1xuICBzd2l0Y2ggKGwpIHtcbiAgfCBbXSA9PiAoW10sIE5vbmUsIFtdKVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBpZiAoY29uZCh4KSkge1xuICAgICAgKFtdLCBTb21lKHgpLCB4cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCAocHJlLCB4JywgcG9zdCkgPSBzcGxpdCh4cywgY29uZCk7XG4gICAgICAoW3gsIC4uLnByZV0sIHgnLCBwb3N0KTtcbiAgICB9XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0X2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKCd4LCBmcmFtZSgneCkpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwibGlzdCBpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFt4LCAuLi54c10pID0+ICh4LCAoW10sIHhzKSlcbiAgfCAoXywgW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQgKHN1YmosIChwcmVmaXgsIHN1ZmZpeCkpID0gc3BsaXRfZnJhbWUobiAtIDEsIHhzKTtcbiAgICAoc3ViaiwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gIH07XG5cbmxldCBvZl9mcmFtZSA9ICh+c3ViamVjdDogbGlzdCgneCk9W10sIChwcmVmaXgsIHN1ZmZpeCk6IGZyYW1lKCd4KSkgPT5cbiAgTGlzdC5jb25jYXQoW0xpc3QucmV2KHByZWZpeCksIHN1YmplY3QsIHN1ZmZpeF0pO1xuXG5sZXQgY29tYmluZV9vcHQgPSAoeHMsIHlzKSA9PlxuICBzd2l0Y2ggKExpc3QuY29tYmluZSh4cywgeXMpKSB7XG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIHwgeHlzID0+IFNvbWUoeHlzKVxuICB9O1xuXG5sZXQgaXNfZW1wdHkgPVxuICBmdW5cbiAgfCBbXSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGZsYXRfbWFwID0gKGYsIGwpID0+IExpc3QuZmxhdHRlbihMaXN0Lm1hcChmLCBsKSk7XG5cbmxldCByZWMgam9pbiA9IChzZXA6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeF0gPT4gW3hdXG4gIHwgW3gsIC4uLnhzXSA9PiBbeCwgc2VwLCAuLi5qb2luKHNlcCwgeHMpXVxuICB9O1xuXG5sZXQgaGRfb3B0ID1cbiAgZnVuXG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4uX10gPT4gU29tZShoZCk7XG5cbmxldCByZWMgbnRoX29wdCA9IChuLCB4cykgPT5cbiAgbiA8IDBcbiAgICA/IE5vbmVcbiAgICA6IChcbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgfCBbaGQsIC4uLnRsXSA9PiBuID09IDAgPyBTb21lKGhkKSA6IG50aF9vcHQobiAtIDEsIHRsKVxuICAgICAgfVxuICAgICk7XG5cbi8qKlxuICogYHNwbGl0X25fb3B0KG4sIHhzKWAgc3BsaXRzIHRoZSBmaXJzdCBgbmAgZWxlbWVudHMgZnJvbSBgeHNgXG4gKiBpZiBgeHNgIGhhcyBgbmAgb3IgbW9yZSBlbGVtZW50c1xuICovXG5sZXQgc3BsaXRfbl9vcHQgPSAobjogaW50LCB4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSkgPT5cbiAgICBpZiAobiA8IDApIHtcbiAgICAgIE5vbmU7XG4gICAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAgIFNvbWUoKFtdLCB4cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICB8IFtdID0+IE5vbmVcbiAgICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgICBnbyhuIC0gMSwgeHMpXG4gICAgICAgIHw+IE9wdGlvbi5tYXAoKChwcmVmaXgsIHN1ZmZpeCkpID0+IChbeCwgLi4ucHJlZml4XSwgc3VmZml4KSlcbiAgICAgIH07XG4gICAgfTtcbiAgZ28obiwgeHMpO1xufTtcblxuLy8gVE9ETyB1bmlmeSB3aXRoIExpc3RGcmFtZVxubGV0IHNwbGl0X24gPSAobjogaW50LCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHNwbGl0X25fb3B0KG4sIHhzKSkge1xuICB8IE5vbmUgPT5cbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfbjogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBzdWJsaXN0IGZyb20gaW5kZXggaSAoaW5jbHVzaXZlKVxuICogdG8gaW5kZXggaiAoZXhjbHVzaXZlKSwgY291cGxlZCB3aXRoIHRoZVxuICogc3Vycm91bmRpbmcgcHJlZml4L3N1ZmZpeCBzdWJsaXN0cy5cbiAqIFJldHVybnMgTm9uZSBpZiBpID4gai5cbiAqL1xubGV0IHNwbGl0X3N1Ymxpc3Rfb3B0ID1cbiAgICAoaTogaW50LCBqOiBpbnQsIHhzOiBsaXN0KCd4KSlcbiAgICA6IG9wdGlvbigobGlzdCgneCksIGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgc3dpdGNoIChzcGxpdF9uX29wdChqLCB4cykpIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKChsZWZ0LCByaWdodCkpID0+XG4gICAgc3dpdGNoIChzcGxpdF9uX29wdChpLCBsZWZ0KSkge1xuICAgIHwgTm9uZSA9PiBOb25lXG4gICAgfCBTb21lKChsZWZ0LCBtaWQpKSA9PiBTb21lKChsZWZ0LCBtaWQsIHJpZ2h0KSlcbiAgICB9XG4gIH07XG59O1xubGV0IHNwbGl0X3N1Ymxpc3QgPVxuICAgIChpOiBpbnQsIGo6IGludCwgeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIHN3aXRjaCAoc3BsaXRfc3VibGlzdF9vcHQoaSwgaiwgeHMpKSB7XG4gIHwgTm9uZSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfc3VibGlzdFwiKSlcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcbmxldCBzdWJsaXN0ID0gKChpLCBqKSwgeHM6IGxpc3QoJ3gpKTogbGlzdCgneCkgPT4ge1xuICBsZXQgKF8sIHN1Ymxpc3QsIF8pID0gc3BsaXRfc3VibGlzdChpLCBqLCB4cyk7XG4gIHN1Ymxpc3Q7XG59O1xuXG5sZXQgcmVjIHNwbGl0X250aF9vcHQgPSAobiwgeHMpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCBfIHdoZW4gbiA8IDAgPT4gTm9uZVxuICB8IChfLCBbXSkgPT4gTm9uZVxuICB8ICgwLCBbeCwgLi4uc3VmZml4XSkgPT4gU29tZSgoW10sIHgsIHN1ZmZpeCkpXG4gIHwgKF8sIFt4LCAuLi54c10pID0+XG4gICAgc3BsaXRfbnRoX29wdChuIC0gMSwgeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHByZWZpeCwgc3ViamVjdCwgc3VmZml4KSkgPT5cbiAgICAgICAgIChbeCwgLi4ucHJlZml4XSwgc3ViamVjdCwgc3VmZml4KVxuICAgICAgIClcbiAgfTtcbmxldCBzcGxpdF9udGggPSAobiwgeHMpID0+XG4gIHN3aXRjaCAoc3BsaXRfbnRoX29wdChuLCB4cykpIHtcbiAgfCBOb25lID0+XG4gICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X250aDogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbmxldCByZWMgcHV0X250aCA9IChuOiBpbnQsIHg6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW18sIC4uLnRsXSkgPT4gW3gsIC4uLnRsXVxuICB8IChfLCBbaGQsIC4uLnRsXSkgPT5cbiAgICBsZXQgdGwgPSBwdXRfbnRoKG4gLSAxLCB4LCB0bCk7XG4gICAgW2hkLCAuLi50bF07XG4gIH07XG5cbmxldCByZWMgbWFwX250aCA9IChuOiBpbnQsIGY6ICdhID0+ICdhLCB4czogbGlzdCgnYSkpOiBsaXN0KCdhKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW2hkLCAuLi50bF0pID0+IFtmKGhkKSwgLi4udGxdXG4gIHwgKF8sIFtoZCwgLi4udGxdKSA9PiBbaGQsIC4uLm1hcF9udGgobiAtIDEsIGYsIHRsKV1cbiAgfTtcblxubGV0IHJlYyBzcGxpdF9sYXN0X29wdCA9ICh4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCAneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3hdID0+IFNvbWUoKFtdLCB4KSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgc3BsaXRfbGFzdF9vcHQoeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKGxlYWRpbmcsIGxhc3QpKSA9PiAoW3gsIC4uLmxlYWRpbmddLCBsYXN0KSlcbiAgfTtcbi8vIGxldCBsYXN0X29wdCA9IHhzID0+IHhzIHw+IHNwbGl0X2xhc3Rfb3B0IHw+IE9wdGlvbi5tYXAoc25kKTtcblxubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCAneCkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9sYXN0XCIpKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xubGV0IGxlYWRpbmcgPSB4cyA9PiBmc3Qoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3QgPSB4cyA9PiBzbmQoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3Rfb3B0ID0geHMgPT4ge1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgoeHMpO1xuICBpZiAobGVuZ3RoID09IDApIHtcbiAgICBOb25lO1xuICB9IGVsc2Uge1xuICAgIFNvbWUoTGlzdC5udGgoeHMsIGxlbmd0aCAtIDEpKTtcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9maXJzdF9vcHQgPSAoeHM6IGxpc3QoJ3gpKTogb3B0aW9uKCgneCwgbGlzdCgneCkpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmaXJzdCwgLi4udHJhaWxpbmddID0+IFNvbWUoKGZpcnN0LCB0cmFpbGluZykpXG4gIH07XG5sZXQgc3BsaXRfZmlyc3QgPSB4cyA9PlxuICBzcGxpdF9maXJzdF9vcHQoeHMpXG4gIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9maXJzdFwiKSk7XG5cbmxldCByZWMgZm9sZF9sZWZ0X21hcCA9XG4gICAgICAgIChmOiAoJ2FjYywgJ3gpID0+ICgnYWNjLCAneSksIHN0YXJ0OiAnYWNjLCB4czogbGlzdCgneCkpXG4gICAgICAgIDogKCdhY2MsIGxpc3QoJ3kpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKHN0YXJ0LCBbXSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgbGV0IChuZXdfYWNjLCB5KSA9IGYoc3RhcnQsIHgpO1xuICAgIGxldCAoZmluYWwsIHlzKSA9IGZvbGRfbGVmdF9tYXAoZiwgbmV3X2FjYywgeHMpO1xuICAgIChmaW5hbCwgW3ksIC4uLnlzXSk7XG4gIH07XG5cbmxldCByZWMgdGFrZV93aGlsZSA9IChwOiAneCA9PiBib29sLCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKFtdLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIGlmIChwKGhkKSkge1xuICAgICAgbGV0ICh0YWtlbiwgcmVzdCkgPSB0YWtlX3doaWxlKHAsIHRsKTtcbiAgICAgIChbaGQsIC4uLnRha2VuXSwgcmVzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIChbXSwgeHMpO1xuICAgIH1cbiAgfTtcblxubGV0IHByb2R1Y3QgPSAoeHMsIHlzKSA9PlxuICB4cyB8PiBMaXN0Lm1hcCh4ID0+IHlzIHw+IExpc3QubWFwKHkgPT4gKHgsIHkpKSkgfD4gTGlzdC5mbGF0dGVuO1xuXG5sZXQgcmVjIG9yZGVyZWRfcGFpcnMgPSAoeHM6IGxpc3QoJ3gpKTogbGlzdCgoJ3gsICd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT4gTGlzdC5tYXAoeCA9PiAoaGQsIHgpLCB0bCkgQCBvcmRlcmVkX3BhaXJzKHRsKVxuICB9O1xuXG5sZXQgcmVjIG5laWdoYm9ycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5uZWlnaGJvcnMoW3gyLCAuLi54c10pXVxuICB9O1xuXG5tb2R1bGUgU3ludGF4ID0ge1xuICBsZXQgKGxldCspID0gKHhzLCBmKSA9PiBMaXN0Lm1hcChmLCB4cyk7XG4gIGxldCAoYW5kKykgPSBwcm9kdWN0O1xuICBsZXQgKCBsZXQqICkgPSAoeHMsIGYpID0+IExpc3QuY29uY2F0X21hcChmLCB4cyk7XG59O1xuXG5sZXQgbWFwX2FsdDogKCdhID0+ICdjLCAnYiA9PiAnYywgbGlzdCgnYSksIGxpc3QoJ2IpKSA9PiBsaXN0KCdjKSA9XG4gIChmeCwgZnksIHhzLCB5cykgPT4ge1xuICAgIGlmIChMaXN0Lmxlbmd0aCh4cykgIT0gTGlzdC5sZW5ndGgoeXMpICsgMSkge1xuICAgICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1hcF9hbHRcIikpO1xuICAgIH07XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKGFjYywgeCwgeSkgPT4gYWNjIEAgW2Z5KHkpLCBmeCh4KV0sXG4gICAgICBbZngoTGlzdC5oZCh4cykpXSxcbiAgICAgIExpc3QudGwoeHMpLFxuICAgICAgeXMsXG4gICAgKTtcbiAgfTtcblxubGV0IGludGVybGVhdmUgPSAoeHMsIHlzKSA9PiBtYXBfYWx0KHggPT4geCwgeSA9PiB5LCB4cywgeXMpO1xuXG5sZXQgcF9pbmRpY2VzID0gKHA6ICdhID0+IGJvb2wsIHhzOiBsaXN0KCdhKSk6IGxpc3QoaW50KSA9PiB7XG4gIGxldCAoXywgaWR4cykgPVxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChuLCBpZHhzKSwgeCkgPT4gKG4gKyAxLCBpZHhzIEAgKHAoeCkgPyBbbl0gOiBbXSkpLFxuICAgICAgKDAsIFtdKSxcbiAgICAgIHhzLFxuICAgICk7XG4gIGlkeHM7XG59O1xuXG5sZXQgc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4cykpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChzcGxpdDogKCd4cywgJ3hzKSk6IGxpc3QoKCd4cywgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygobCBAIFtoZF0sIHRsKSldXG4gICAgfTtcbiAgZ28oKFtdLCB4cykpO1xufTtcblxubGV0IGVsZW1fc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4LCAneHMpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoc3BsaXQ6ICgneHMsICd4LCAneHMpKTogbGlzdCgoJ3hzLCAneCwgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCB4LCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygoW3gsIC4uLmxdLCBoZCwgdGwpKV1cbiAgICB9O1xuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeCwgLi4ueHNdID0+IGdvKChbXSwgeCwgeHMpKVxuICB9O1xufTtcblxubGV0IHJvdGF0ZSA9ICh4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PiB0bCBAIFtoZF1cbiAgfTtcblxubGV0IHNpbmdsZV9lbGVtID0gKHhzOiBsaXN0KCd4KSk6IG9wdGlvbigneCkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbaGQsIC4uLnRsXSA9PiBMaXN0LmZvcl9hbGwoKD09KShoZCksIHRsKSA/IFNvbWUoaGQpIDogTm9uZVxuICB9O1xuXG5sZXQgY291bnRfcHJlZCA9IChmOiAnYSA9PiBib29sLCB4czogbGlzdCgnYSkpOiBpbnQgPT5cbiAgTGlzdC5mb2xkX2xlZnQoKG4sIHgpID0+IGYoeCkgPyBuICsgMSA6IG4sIDAsIHhzKTtcblxubGV0IGZvcl9hbGwyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+IGJvb2wsIHhzOiBsaXN0KCdhKSwgeXM6IGxpc3QoJ2IpKTogb3B0aW9uKGJvb2wpID0+XG4gIHN3aXRjaCAoTGlzdC5mb3JfYWxsMihmLCB4cywgeXMpKSB7XG4gIHwgYiA9PiBTb21lKGIpXG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIH07XG5cbmxldCBtYXAyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+ICdjLCB4czogbGlzdCgnYSksIHlzOiBsaXN0KCdiKSk6IG9wdGlvbihsaXN0KCdjKSkgPT5cbiAgc3dpdGNoIChMaXN0Lm1hcDIoZiwgeHMsIHlzKSkge1xuICB8IGIgPT4gU29tZShiKVxuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gTm9uZVxuICB9O1xuXG4vKiByZXBlYXQgYW4gZWxlbWVudCBuIHRpbWVzICovXG5sZXQgcmVwbGljYXRlID0gKG46IGludCwgZTogJ2EpOiBsaXN0KCdhKSA9PiB7XG4gIC8qIGFkZCBjIGFkZGl0aW9uYWwgY29waWVzIG9mIGUgdG8geHMgKi9cbiAgbGV0IHJlYyBmID0gKGMsIHhzKSA9PlxuICAgIGlmIChjID4gMCkge1xuICAgICAgZihjIC0gMSwgW2UsIC4uLnhzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHhzO1xuICAgIH07XG4gIGYobiwgW10pO1xufTtcblxuLyoqXG4gKiBaaXBzIHRvZ2V0aGVyIHR3byBsaXN0cywgcmV0dXJuaW5nIE5vbmUgaWYgZGlmZmVyZW50IGxlbmd0aHNcbiAqL1xubGV0IHJlYyBvcHRfemlwID0gKHhzOiBsaXN0KCd4KSwgeXM6IGxpc3QoJ3kpKTogb3B0aW9uKGxpc3QoKCd4LCAneSkpKSA9PlxuICBzd2l0Y2ggKHhzLCB5cykge1xuICB8IChbXSwgW18sIC4uLl9dKVxuICB8IChbXywgLi4uX10sIFtdKSA9PiBOb25lXG4gIHwgKFtdLCBbXSkgPT4gU29tZShbXSlcbiAgfCAoW3gsIC4uLnhzXSwgW3ksIC4uLnlzXSkgPT5cbiAgICBvcHRfemlwKHhzLCB5cykgfD4gT3B0aW9uLm1hcCh4eXMgPT4gWyh4LCB5KSwgLi4ueHlzXSlcbiAgfTtcblxubGV0IHJlYyB6aXBfZGVmYXVsdHMgPVxuICAgICAgICAoeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYiksIGRlZmF1bHRfeDogJ2EsIGRlZmF1bHRfeTogJ2IpXG4gICAgICAgIDogbGlzdCgoJ2EsICdiKSkgPT5cbiAgc3dpdGNoICh4cywgeXMpIHtcbiAgfCAoW10sIFtdKSA9PiBbXVxuICB8IChbeCwgLi4ueHNdLCBbeSwgLi4ueXNdKSA9PiBbXG4gICAgICAoeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbXSwgW3ksIC4uLnlzXSkgPT4gW1xuICAgICAgKGRlZmF1bHRfeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbeCwgLi4ueHNdLCBbXSkgPT4gW1xuICAgICAgKHgsIGRlZmF1bHRfeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB9O1xuXG5sZXQgcmVjIHVwZGF0ZV9udGggPSAobiwgeHMsIGYpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IFtdXG4gIHwgKDAsIFt4LCAuLi54c10pID0+IFtmKHgpLCAuLi54c11cbiAgfCAobiwgW3gsIC4uLnhzXSkgPT4gW3gsIC4uLnVwZGF0ZV9udGgobiAtIDEsIHhzLCBmKV1cbiAgfTtcblxubGV0IHJlYyBkaXNqb2ludF9wYWlycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5kaXNqb2ludF9wYWlycyh4cyldXG4gIH07XG5cbmxldCBmaW5kaV9vcHQ6ICgneCA9PiBib29sLCBsaXN0KCd4KSkgPT4gb3B0aW9uKChpbnQsICd4KSkgPVxuICAoZiwgeHMpID0+IHtcbiAgICBMaXN0Lm1hcGkoKGksIHgpID0+IChpLCB4KSwgeHMpXG4gICAgfD4gTGlzdC5maW5kX21hcCgoKF8sIHgpIGFzIHBhaXIpID0+XG4gICAgICAgICBpZiAoZih4KSkge1xuICAgICAgICAgICBTb21lKHBhaXIpO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgTm9uZTtcbiAgICAgICAgIH1cbiAgICAgICApO1xuICB9O1xuXG5sZXQgaW5pdF9mb2xkOiAoaW50LCAnYiwgKGludCwgJ2IpID0+ICgnYiwgJ2EpKSA9PiAoJ2IsIGxpc3QoJ2EpKSA9XG4gIChuLCBiLCBmKSA9PiB7XG4gICAgbGV0IHJhbmdlID0gTGlzdC5pbml0KG4sIG4gPT4gbik7XG4gICAgbGV0IChhY2MsIHJldl94cykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICgoYWNjLCB4cyksIG4pID0+IHtcbiAgICAgICAgICBsZXQgKGFjYycsIGVsdCkgPSBmKG4sIGFjYyk7XG4gICAgICAgICAgKGFjYycsIFtlbHQsIC4uLnhzXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChiLCBbXSksXG4gICAgICAgIHJhbmdlLFxuICAgICAgKTtcbiAgICAoYWNjLCBMaXN0LnJldihyZXZfeHMpKTtcbiAgfTtcblxubGV0IGFzc29jX2VyciA9ICh4LCB4cywgZXJyOiBzdHJpbmcpID0+XG4gIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoeCwgeHMpKSB7XG4gIHwgTm9uZSA9PiBmYWlsd2l0aChlcnIpXG4gIHwgU29tZSh5KSA9PiB5XG4gIH07XG5cbmxldCB1cGRhdGVfYXNzb2MgPSAoKGssIHYpKSA9PlxuICBMaXN0Lm1hcCgoKGsnLCB2JykpID0+IGsgPT0gaycgPyAoaywgdikgOiAoaycsIHYnKSk7XG5cbi8qIEdpdmUgYSBsaXN0IG9mIG9wdGlvbmFsICdhLCBzcGxpdCB0aGVcbiAqIGxpc3QgdXAgdXNpbmcgdGhlIE5vbmVzIGFzIGRpdmlkZXJzICovXG5sZXQgc3BsaXRfYXRfbm9uZXMgPSAoeHM6IGxpc3Qob3B0aW9uKCdhKSkpOiBsaXN0KGxpc3QoJ2EpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoeHMsIGFjYykgPT5cbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBhY2NcbiAgICB8IFtOb25lLCAuLi54c10gPT4gZ28oeHMsIFtbXSwgLi4uYWNjXSlcbiAgICB8IFtTb21lKHgpLCAuLi54c10gPT5cbiAgICAgIHN3aXRjaCAoYWNjKSB7XG4gICAgICB8IFthY2MsIC4uLmFjY3NdID0+IGdvKHhzLCBbW3gsIC4uLmFjY10sIC4uLmFjY3NdKVxuICAgICAgfCBbXSA9PiBnbyh4cywgW1t4XV0pXG4gICAgICB9XG4gICAgfTtcbiAgZ28oeHMsIFtdKSB8PiBMaXN0Lm1hcChMaXN0LnJldikgfD4gTGlzdC5yZXY7XG59O1xuXG4vKiBHaXZlIGEgbGlzdCBvZiBsaXN0cywgcmV0dXJuIGEgbGlzdCBvZiBwYWlycyBvZlxuICogdGhlIGZpcnN0IGFuZCBsYXN0IGVsZW1lbnQgb2YgZWFjaCBsaXN0LiAqL1xubGV0IGZpcnN0X2FuZF9sYXN0ID0gKHhzczogbGlzdChsaXN0KCdhKSkpOiBsaXN0KCgnYSwgJ2EpKSA9PlxuICB4c3NcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgIHwgW3hdID0+IFNvbWUoKHgsIHgpKVxuICAgICAgIHwgW3gsIC4uLnhzXSA9PiBTb21lKCh4LCBsYXN0KHhzKSkpLFxuICAgICApO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBMZWZ0XG4gIHwgUmlnaHQ7XG5cbmxldCB0b2dnbGUgPVxuICBmdW5cbiAgfCBMZWZ0ID0+IFJpZ2h0XG4gIHwgUmlnaHQgPT4gTGVmdDtcblxubGV0IHNpZ24gPVxuICBmdW5cbiAgfCBMZWZ0ID0+ICgtMSlcbiAgfCBSaWdodCA9PiAxO1xuXG5sZXQgY2hvb3NlID0gKGQsIChsLCByKSkgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgTGVmdCA9PiBsXG4gIHwgUmlnaHQgPT4gclxuICB9O1xuIiwib3BlbiBPcHRVdGlsLlN5bnRheDtcblxuLy8gaGVhZHMgb2YgcHJlZml4IGFuZCBzdWZmaXggbmVpZ2hib3IgdGhlIHN1YmplY3Rcbi8vIE5PVEU6IERFUFJFQ0FURURcbnR5cGUgdCgneCkgPSAobGlzdCgneCksIGxpc3QoJ3gpKTtcblxubGV0IHJlYyBta19vcHQgPSAobjogaW50LCB4czogbGlzdCgneCkpOiBvcHRpb24odCgneCkpID0+XG4gIGlmIChuIDwgMCkge1xuICAgIE5vbmU7XG4gIH0gZWxzZSBpZiAobiA9PSAwKSB7XG4gICAgU29tZSgoW10sIHhzKSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpdGNoICh4cykge1xuICAgIHwgW10gPT4gTm9uZVxuICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgbGV0KyAocHJlZml4LCBzdWZmaXgpID0gbWtfb3B0KG4gLSAxLCB4cyk7XG4gICAgICAocHJlZml4IEAgW3hdLCBzdWZmaXgpO1xuICAgIH07XG4gIH07XG5sZXQgbWsgPSAobiwgeHMpID0+XG4gIG1rX29wdChuLCB4cylcbiAgfD4gT3B0VXRpbC5nZXQoKCkgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RGcmFtZS5ta1wiKSkpO1xuXG5sZXQgcmVjIGZpbmRfbWsgPVxuICAgICAgICAocDogJ3ggPT4gb3B0aW9uKCd5KSwgeHM6IGxpc3QoJ3gpKTogb3B0aW9uKCgneSwgdCgneCkpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBzd2l0Y2ggKHAoeCkpIHtcbiAgICB8IFNvbWUoeSkgPT4gU29tZSgoeSwgKFtdLCB4cykpKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0KyAoeSwgKHByZWZpeCwgc3VmZml4KSkgPSBmaW5kX21rKHAsIHhzKTtcbiAgICAgICh5LCAocHJlZml4IEAgW3hdLCBzdWZmaXgpKTtcbiAgICB9XG4gIH07XG5cbmxldCBvcmllbnQgPVxuICAgIChkOiBEaXJlY3Rpb24udCwgKHByZWZpeCwgc3VmZml4KTogdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBkID09IExlZnQgPyAocHJlZml4LCBzdWZmaXgpIDogKHN1ZmZpeCwgcHJlZml4KTtcbmxldCB1bm9yaWVudCA9IG9yaWVudDtcblxubGV0IHJlYyBzcGxpdF9udGggPSAobjogaW50LCB4czogbGlzdCgneCkpOiAoJ3gsIHQoJ3gpKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcImxpc3QgaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuICB8ICgwLCBbeCwgLi4ueHNdKSA9PiAoeCwgKFtdLCB4cykpXG4gIHwgKF8sIFt4LCAuLi54c10pID0+XG4gICAgbGV0IChzdWJqLCAocHJlZml4LCBzdWZmaXgpKSA9IHNwbGl0X250aChuIC0gMSwgeHMpO1xuICAgIChzdWJqLCAocHJlZml4IEAgW3hdLCBzdWZmaXgpKTtcbiAgfTtcblxubGV0IHNwbGl0X3N1Ymxpc3QgPSAoKGk6IGludCwgajogaW50KSwgeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCB0KCd4KSkgPT4ge1xuICBsZXQgKHByZWZpeCwgc3VmZml4KSA9IG1rKGosIHhzKTtcbiAgbGV0IChwcmVmaXgsIHN1Ymxpc3QpID0gbWsoaSwgTGlzdC5yZXYocHJlZml4KSk7XG4gIChzdWJsaXN0LCAocHJlZml4LCBzdWZmaXgpKTtcbn07XG5cbmxldCB0b19saXN0ID0gKH5zdWJqZWN0OiBsaXN0KCd4KT1bXSwgKHByZWZpeCwgc3VmZml4KTogdCgneCkpID0+XG4gIExpc3QuY29uY2F0KFtMaXN0LnJldihwcmVmaXgpLCBzdWJqZWN0LCBzdWZmaXhdKTtcblxubGV0IGFwcGVuZCA9ICgocHJlZml4LCBzdWZmaXgpOiB0KCd4KSwgKHByZWZpeCcsIHN1ZmZpeCcpOiB0KCd4KSkgPT4gKFxuICBwcmVmaXggQCBwcmVmaXgnLFxuICBzdWZmaXggQCBzdWZmaXgnLFxuKTtcbiIsImxldCBudW1fZGlnaXRzID0gbiA9PiBTdHJpbmcubGVuZ3RoKHN0cmluZ19vZl9pbnQobikpO1xuXG5sZXQgbW9kdWxvID0gKHgsIHkpID0+IHtcbiAgbGV0IHJlc3VsdCA9IHggbW9kIHk7XG4gIHJlc3VsdCA+PSAwID8gcmVzdWx0IDogcmVzdWx0ICsgeTtcbn07XG5cbmxldCBpcG93ID0gKGJhc2U6IGludCwgZXhwb25lbnQ6IGludCk6IGludCA9PiB7XG4gIGxldCByZWMgaXBvd19pdGVyID0gKGI6IGludCwgZTogaW50LCByOiBpbnQpOiBpbnQgPT5cbiAgICBpZiAoZSA9PT0gMCkge1xuICAgICAgcjtcbiAgICB9IGVsc2UgaWYgKGUgbGFuZCAxICE9PSAwKSB7XG4gICAgICBpcG93X2l0ZXIoYiAqIGIsIGUgbHNyIDEsIHIgKiBiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXBvd19pdGVyKGIgKiBiLCBlIGxzciAxLCByKTtcbiAgICB9O1xuICBpcG93X2l0ZXIoYmFzZSwgZXhwb25lbnQsIDEpO1xufTtcbiIsImluY2x1ZGUgUHRtYXA7XG5vcGVuIFNleHBsaWIuU3RkO1xubW9kdWxlIFNleHAgPSBTZXhwbGliLlNleHA7XG5cbltAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG50eXBlIGJpbmRpbmcoJ3YpID0gKGludCwgJ3YpO1xuXG5sZXQgc2luZ2xldG9uID0gKGssIHYpID0+IFB0bWFwLmFkZChrLCB2LCBQdG1hcC5lbXB0eSk7XG5cbmxldCBkaXNqX3VuaW9uID0gKG06IHQoJ2EpLCBtJzogdCgnYSkpOiB0KCdhKSA9PlxuICB1bmlvbihcbiAgICAoXywgXywgXykgPT5cbiAgICAgIHJhaXNlKFxuICAgICAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICAgIFwiSW50TWFwLmRpc2pfdW5pb24gZXhwZWN0cyBpbnB1dCBtYXBzIHRvIGhhdmUgZGlzam9pbnQga2V5IHNldHNcIixcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgbSxcbiAgICBtJyxcbiAgKTtcblxubGV0IHBwID0gKHBwX3YsIGYsIG1hcCkgPT5cbiAgaXRlcigoaywgdikgPT4gRm9ybWF0LmZwcmludGYoZiwgXCIlZCAtPiAlYUBcXG5cIiwgaywgcHBfdiwgdiksIG1hcCk7XG5cbmxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl92OiAndiA9PiBTZXhwLnQsIG1hcDogdCgndikpOiBTZXhwLnQgPT5cbiAgbWFwIHw+IGJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG5sZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cDogU2V4cC50ID0+ICd2LCBzZXhwOiBTZXhwLnQpOiB0KCd2KSA9PlxuICBzZXhwIHw+IGxpc3Rfb2Zfc2V4cChiaW5kaW5nX29mX3NleHAodl9vZl9zZXhwKSkgfD4gTGlzdC50b19zZXEgfD4gb2Zfc2VxO1xuXG5sZXQgeW9qc29uX29mX3QgPVxuICAgICh5b2pzb25fb2ZfdjogJ3YgPT4gWW9qc29uLlNhZmUudCwgbWFwOiB0KCd2KSk6IFlvanNvbi5TYWZlLnQgPT5cbiAgbWFwIHw+IGJpbmRpbmdzIHw+IHlvanNvbl9vZl9saXN0KHlvanNvbl9vZl9iaW5kaW5nKHlvanNvbl9vZl92KSk7XG5sZXQgdF9vZl95b2pzb24gPVxuICAgICh2X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiAndiwgeW9qc29uOiBZb2pzb24uU2FmZS50KTogdCgndikgPT5cbiAgeW9qc29uXG4gIHw+IGxpc3Rfb2ZfeW9qc29uKGJpbmRpbmdfb2ZfeW9qc29uKHZfb2ZfeW9qc29uKSlcbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gb2Zfc2VxO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0KCdsLCAncikgPVxuICB8IEwoJ2wpXG4gIHwgUigncik7XG5cbmxldCBsID0geCA9PiBMKHgpO1xubGV0IHIgPSB4ID0+IFIoeCk7XG5cbmxldCBpc19MID1cbiAgZnVuXG4gIHwgTChfKSA9PiB0cnVlXG4gIHwgUihfKSA9PiBmYWxzZTtcbmxldCBpc19SID0gZSA9PiAhaXNfTChlKTtcblxubGV0IGdldF9MID1cbiAgZnVuXG4gIHwgTChsKSA9PiBTb21lKGwpXG4gIHwgUihfKSA9PiBOb25lO1xubGV0IGdldF9SID1cbiAgZnVuXG4gIHwgUihyKSA9PiBTb21lKHIpXG4gIHwgTChfKSA9PiBOb25lO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gaW52YXJpYW50OiBMaXN0Lmxlbmd0aChhcykgPT0gTGlzdC5sZW5ndGgoYnMpICsgMVxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0KCdhLCAnYikgPSAobGlzdCgnYSksIGxpc3QoJ2IpKTtcblxubGV0IG1rID0gKGFzXzogbGlzdCgnYSksIGJzOiBsaXN0KCdiKSk6IHQoJ2EsICdiKSA9PiB7XG4gIGFzc2VydChMaXN0Lmxlbmd0aChhc18pID09IExpc3QubGVuZ3RoKGJzKSArIDEpO1xuICAoYXNfLCBicyk7XG59O1xuXG5sZXQgZmlyc3RfYSA9ICgoYXNfLCBfKTogdCgnYSwgXykpOiAnYSA9PiB7XG4gIGFzc2VydChMaXN0Lmxlbmd0aChhc18pID4gMCk7XG4gIExpc3QuaGQoYXNfKTtcbn07XG5sZXQgbGFzdF9hID0gKChhc18sIF8pOiB0KCdhLCBfKSk6ICdhID0+IHtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGFzXykgPiAwKTtcbiAgTGlzdFV0aWwubGFzdChhc18pO1xufTtcblxubGV0IHJldiA9IChyZXZfYSwgcmV2X2IsIChhc18sIGJzKTogdCgnYSwgJ2IpKTogdCgnYSwgJ2IpID0+IChcbiAgTGlzdC5yZXZfbWFwKHJldl9hLCBhc18pLFxuICBMaXN0LnJldl9tYXAocmV2X2IsIGJzKSxcbik7XG5cbmxldCBjb25zID0gKGE6ICdhLCBiOiAnYiwgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdhLCAnYikgPT4gKFxuICBbYSwgLi4uYXNfXSxcbiAgW2IsIC4uLmJzXSxcbik7XG5sZXQgc25vYyA9ICgoYXNfLCBicyk6IHQoJ2EsICdiKSwgYjogJ2IsIGE6ICdhKTogdCgnYSwgJ2IpID0+IChcbiAgYXNfIEAgW2FdLFxuICBicyBAIFtiXSxcbik7XG5cbmxldCBzaW5nbGV0b24gPSAoYTogJ2EpOiB0KCdhLCBfKSA9PiAoW2FdLCBbXSk7XG5cbmxldCBnZXRfYXM6IHQoJ2EsIF8pID0+IGxpc3QoJ2EpID0gZnN0O1xubGV0IGdldF9iczogdChfLCAnYikgPT4gbGlzdCgnYikgPSBzbmQ7XG5cbmxldCBoZCA9ICgoYXNfLCBfKTogdCgnYSwgJ2IpKTogJ2EgPT4gTGlzdC5oZChhc18pO1xuXG5sZXQgcmVjIGFiYV90cmlwbGVzID0gKGFiYTogdCgnYSwgJ2IpKTogbGlzdCgoJ2EsICdiLCAnYSkpID0+XG4gIHN3aXRjaCAoYWJhKSB7XG4gIHwgKFthMSwgYTIsIC4uLmFzX10sIFtiLCAuLi5ic10pID0+IFtcbiAgICAgIChhMSwgYiwgYTIpLFxuICAgICAgLi4uYWJhX3RyaXBsZXMoKFthMiwgLi4uYXNfXSwgYnMpKSxcbiAgICBdXG4gIHwgXyA9PiBbXVxuICB9O1xuXG5sZXQgbWFwX2EgPSAoZl9hOiAnYSA9PiAnYywgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdjLCAnYikgPT4gKFxuICBMaXN0Lm1hcChmX2EsIGFzXyksXG4gIGJzLFxuKTtcbmxldCBtYXBfYiA9IChmX2I6ICdiID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9iLCBicyksXG4pO1xubGV0IG1hcF9hYmFzID1cbiAgICAoZl9hYmE6ICgoJ2EsICdiLCAnYSkpID0+ICdjLCAoYXNfLCBfKSBhcyBhYmE6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9hYmEsIGFiYV90cmlwbGVzKGFiYSkpLFxuKTtcblxubGV0IHRyaW0gPSAoKGFzXywgYnMpOiB0KCdhLCAnYikpOiBvcHRpb24oKCdhLCB0KCdiLCAnYSksICdhKSkgPT5cbiAgc3dpdGNoIChicykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbXywgLi4uX10gPT5cbiAgICBsZXQgKGwsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICAgIGxldCAoYXNfLCByKSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoYXNfKTtcbiAgICBTb21lKChsLCBtayhicywgYXNfKSwgcikpO1xuICB9O1xuXG5sZXQgc3BsaXQgPSAoZjogJ2MgPT4gRWl0aGVyLnQoJ2EsICdiKSwgY3M6IGxpc3QoJ2MpKTogdChsaXN0KCdhKSwgJ2IpID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAoYywgKGFzXywgYnMpKSA9PlxuICAgICAgc3dpdGNoIChmKGMpKSB7XG4gICAgICB8IEwoYSkgPT5cbiAgICAgICAgbGV0IChoZCwgdGwpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoYXNfKTtcbiAgICAgICAgKFtbYSwgLi4uaGRdLCAuLi50bF0sIGJzKTtcbiAgICAgIHwgUihiKSA9PiAoW1tdLCAuLi5hc19dLCBbYiwgLi4uYnNdKVxuICAgICAgfSxcbiAgICBjcyxcbiAgICBtayhbW11dLCBbXSksXG4gICk7XG5cbmxldCBqb2luID0gKGZfYTogJ2EgPT4gJ2MsIGZfYjogJ2IgPT4gJ2MsIGFiYTogdCgnYSwgJ2IpKTogbGlzdCgnYykgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGdldF9hcyhhYmEpKTtcbiAgbGV0IGJzID0gZ2V0X2JzKGFiYSk7XG4gIExpc3QuZm9sZF9yaWdodDIoXG4gICAgKGEsIGIsIGNzKSA9PiBbZl9hKGEpLCBmX2IoYiksIC4uLmNzXSxcbiAgICBhc18sXG4gICAgYnMsXG4gICAgW2ZfYShhKV0sXG4gICk7XG59O1xuXG5sZXQgZm9sZF9sZWZ0ID1cbiAgICAoZl9hOiAnYSA9PiAnYWNjLCBmX2JhOiAoJ2FjYywgJ2IsICdhKSA9PiAnYWNjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSlcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgKGEsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICBMaXN0LmZvbGRfbGVmdDIoZl9iYSwgZl9hKGEpLCBicywgYXNfKTtcbn07XG5sZXQgZm9sZF9sZWZ0X21hcCA9XG4gICAgKFxuICAgICAgZl9hOiAnYSA9PiAoJ2FjYywgJ2MpLFxuICAgICAgZl9iYTogKCdhY2MsICdiLCAnYSkgPT4gKCdhY2MsICdkLCAnYyksXG4gICAgICBhYmE6IHQoJ2EsICdiKSxcbiAgICApXG4gICAgOiAoJ2FjYywgdCgnYywgJ2QpKSA9PlxuICBhYmFcbiAgfD4gZm9sZF9sZWZ0KFxuICAgICAgIGEgPT4ge1xuICAgICAgICAgbGV0IChhY2MsIGMpID0gZl9hKGEpO1xuICAgICAgICAgKGFjYywgc2luZ2xldG9uKGMpKTtcbiAgICAgICB9LFxuICAgICAgICgoYWNjLCBtYXBwZWQpLCBiLCBhKSA9PiB7XG4gICAgICAgICBsZXQgKGFjYywgZCwgYykgPSBmX2JhKGFjYywgYiwgYSk7XG4gICAgICAgICAoYWNjLCBzbm9jKG1hcHBlZCwgZCwgYykpO1xuICAgICAgIH0sXG4gICAgICk7XG5cbmxldCBmb2xkX3JpZ2h0ID1cbiAgICAoZl9hYjogKCdhLCAnYiwgJ2MpID0+ICdjLCBmX2E6ICdhID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSkgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGFzXyk7XG4gIExpc3QuZm9sZF9yaWdodDIoZl9hYiwgYXNfLCBicywgZl9hKGEpKTtcbn07XG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbm9wZW4gU3RvcmVcblxubW9kdWxlIE1ha2UgKFMgOiBTVE9SRSkgPSBzdHJ1Y3RcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIEluIHRoaXMgdmVyc2lvbiB0aGUgY29kZSwgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11c3Qgbm90IG11dGFibGUuIEluZGVlZCxcbiAgIGV2ZXJ5IG11dGF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHZpYSBbUy5zZXRdLiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mICdhIHJyZWZcbnwgUm9vdCBvZiByYW5rICogJ2FcblxuKCogVGhlIHR5cGUgWydhIHJyZWZdIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBycmVmID1cbiAgJ2EgY29udGVudCBTLnJyZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHR5cGUgb2Ygc3RvcmVzLCBhbmQgdGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIG5ldyBzdG9yZSwgYXJlIHRob3NlXG4gICBvZiB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBbU10uICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICAnYSBjb250ZW50IFMuc3RvcmVcblxubGV0IG5ld19zdG9yZSA6IHVuaXQgLT4gJ2Egc3RvcmUgPVxuICBTLm5ld19zdG9yZVxuXG5sZXQgY29weSA6ICdhIHN0b3JlIC0+ICdhIHN0b3JlID1cbiAgUy5jb3B5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHMgdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgUy5tYWtlIHMgKFJvb3QgKDAsIHYpKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCBzIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIF8pIC0+XG4gICAgICB4XG4gIHwgTGluayB5IC0+XG4gICAgICBsZXQgeiA9IGZpbmQgcyB5IGluXG4gICAgICBpZiBTLmVxIHMgeSB6IHRoZW5cbiAgICAgICAgelxuICAgICAgZWxzZVxuICAgICAgICBsZXQgbGlua190b196ID0gUy5nZXQgcyB5IGluXG4gICAgICAgIFMuc2V0IHMgeCBsaW5rX3RvX3o7XG4gICAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiBib29sID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSBzIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlIHNhbWVcbiAgIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhIHBoeXNpY2FsXG4gICBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XSBhbmQgW3ldIGFyZVxuICAgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBTLmVxIHMgeCB5IHx8IFMuZXEgcyAoZmluZCBzIHgpIChmaW5kIHMgeSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldF8gcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbZ2V0IHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICAgICAgdlxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBnZXRfIHMgeFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0XyBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtzZXQgcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAociwgXykgLT5cbiAgICAgICAgICBTLnNldCBzIHkgKFJvb3QgKHIsIHYpKVxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBzZXRfIHMgeCB2XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiBzIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCBfKSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7IHlcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpOyB4XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocnggKyAxLCB2eCkpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgcyAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgdnkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIFMuc2V0IHMgeSAoUm9vdCAocnksIHYpKTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gUy5zZXQgcyB4IChSb290IChyeCwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCsxLCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIFdlIG1ha2UgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11dGFibGUsIGFuZCB3ZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdFxuICAgZXZlcnkgdmVydGV4IHVuaXF1ZWx5IG93bnMgaXRzIGNvbnRlbnQuIFRoaXMgYWxsb3dzIHVzIHRvIHVwZGF0ZSBhIGNvbnRlbnRcbiAgIGluIHBsYWNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBjb250ZW50IGFuZCB1cGRhdGluZyB0aGUgdmVydGV4IHdpdGhcbiAgIHRoaXMgbmV3IGNvbnRlbnQuXG5cbiAgIFdlIG9idGFpbiB0aGUgcHJvcGVydHkgdGhhdDpcbiAgIC0gb25seSBbbWFrZV0gYWxsb2NhdGVzIGEgbmV3IHZlcnRleCAoYSByZWZlcmVuY2UgYW5kIGEgW1Jvb3RdIGNvbnRlbnQpO1xuICAgLSBvbmx5IFt1bmlvbl0gYW5kIFttZXJnZV0gYWxsb2NhdGUgYSBuZXcgZWRnZSAoYSBbTGlua10gY29udGVudCkuXG4gICBbZmluZF0sIFtnZXRdLCBbc2V0XSwgW2VxXSBhbGxvY2F0ZSBubyBtZW1vcnkuICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgeyBtdXRhYmxlIHBhcmVudCA6ICdhIGVsZW0gfVxufCBSb290IG9mIHsgbXV0YWJsZSByYW5rIDogcmFuazsgbXV0YWJsZSB2YWx1ZSA6ICdhIH1cblxuKCogVGhlIHR5cGUgWydhIGVsZW1dIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBlbGVtID1cbiAgJ2EgY29udGVudCByZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2Ugdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHYgOiAnYSkgOiAnYSBlbGVtID1cbiAgcmVmIChSb290IHsgcmFuayA9IDA7IHZhbHVlID0gdiB9KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIHNvIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kICh4IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgeFxuICB8IExpbmsgKHsgcGFyZW50ID0geSB9IGFzIGxpbmspIC0+XG4gICAgICBsZXQgeiA9IGZpbmQgeSBpblxuICAgICAgaWYgeiAhPSB5IHRoZW5cbiAgICAgICAgbGluay5wYXJlbnQgPC0gejtcbiAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlICh4IDogJ2EgZWxlbSkgOiBib29sID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlXG4gICBzYW1lIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhXG4gICBwaHlzaWNhbCBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XVxuICAgYW5kIFt5XSBhcmUgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6IGJvb2wgPVxuICB4ID09IHkgfHwgZmluZCB4ID09IGZpbmQgeVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0IHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXQgKHggOiAnYSBlbGVtKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgeyB2YWx1ZSA9IHY7IF8gfSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXQgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldCAoeCA6ICdhIGVsZW0pICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHJvb3QgLT5cbiAgICAgIHJvb3QudmFsdWUgPC0gdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyBfIH0gYXMgcm9vdHgpLCBSb290IHsgcmFuayA9IHJ5OyBfIH0gLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4fTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IHZhbHVlID0gdnggfSBhcyByb290eCksXG4gICAgICBSb290ICh7IHJhbmsgPSByeTsgdmFsdWUgPSB2eSB9IGFzIHJvb3R5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiByb290eS52YWx1ZSA8LSB2O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgSU5UTUFQID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgZW1wdHk6ICdhIHRcbiAgdmFsIGZpbmQ6IGludCAtPiAnYSB0IC0+ICdhXG4gIHZhbCBhZGQ6IGludCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW50TWFwIDogSU5UTUFQKSA9IHN0cnVjdFxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGEgcGFpciBvZiBhbiBpbnRlZ2VyIGFkZHJlc3MgYW5kIGEgbWFwIG9mXG4gICBpbnRlZ2VyIGFkZHJlc3NlcyB0byB2YWx1ZXMuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGVcbiAgIGRvbWFpbiBvZiB0aGUgbWFwIFtjb250ZW50XSBpcyB0aGUgc2VtaS1vcGVuIGludGVydmFsIG9mIHplcm9cbiAgIChpbmNsdWRlZCkgdXAgdG8gW2xpbWl0XSAoZXhjbHVkZWQpLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBjb250ZW50IG9mIHRoZSBzdG9yZS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBJbnRNYXAudFxufVxuXG5sZXQgbmV3X3N0b3JlICgpID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBJbnRNYXAuZW1wdHlcbn1cblxuKCogQmVjYXVzZSBhIHBlcnNpc3RlbnQgbWFwIGlzIHVzZWQsIGNvcHlpbmcgYSBzdG9yZSBhbW91bnRzIHRvIGNvcHlpbmdcbiAgIHRoZSBtdXRhYmxlIHJlY29yZCBhdCB0aGUgcm9vdC4gKilcblxubGV0IGNvcHkgcyA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMganVzdCBhbiBpbnRlZ2VyIGFkZHJlc3MuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG5sZXQgbWFrZSBzIHYgPVxuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudDtcbiAgeFxuXG4oKiBbY2hlY2sgcyB4XSBjaGVja3MgdGhhdCB0aGUgYWRkcmVzcyBbeF0gaXMgaW4gcmFuZ2UgZm9yIHRoZSBzdG9yZSBbc10uIElmXG4gICB0aGlzIGR5bmFtaWMgY2hlY2sgZmFpbHMsIHRoZW4gdGhlIHVzZXIgaXMgY29uZnVzZWQgYW5kIGhhcyBwYXNzZWQgdXMgYW5cbiAgIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKElmIHRoZSBjaGVjayBzdWNjZWVkcyxcbiAgIHRoZSB1c2VyIG1heSBiZSBjb25mdXNlZCB0b28hIGJ1dCB3ZSBjYW5ub3QgZGV0ZWN0IGl0LikgKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBnZXQgcyB4ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIEludE1hcC5maW5kIHggcy5jb250ZW50XG5cbmxldCBzZXQgcyB4IHYgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudFxuXG5sZXQgZXEgcyAoeCA6IGludCkgKHkgOiBpbnQpID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcblxuZW5kXG5cbigqIEluY2x1ZGUgdGhlIG1vc3QgY29tbW9uIGluc3RhbmNlIG9mIHRoZSBhYm92ZSBmdW5jdG9yLiAqKVxuXG5pbmNsdWRlIE1ha2UoTWFwLk1ha2Uoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgY29tcGFyZSA9ICgtKSAoKiBvayBzaW5jZSB0aGUgYXJndW1lbnRzIGFyZSBub25uZWdhdGl2ZSBpbnRlZ2VycyAqKVxuZW5kKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXaGVuIE9DYW1sJ3MgYnVpbHQtaW4gc3RvcmUgaXMgdXNlZCwgbm8gZXhwbGljaXQgc3RvcmUgaXMgbmVlZGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgdW5pdFxuXG5sZXQgbmV3X3N0b3JlICgpID1cbiAgKClcblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhIHByaW1pdGl2ZSByZWZlcmVuY2UuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gICdhIHJlZlxuXG5sZXQgbWFrZSAoKSB2ID1cbiAgcmVmIHZcblxubGV0IGdldCAoKSB4ID1cbiAgIXhcblxubGV0IHNldCAoKSB4IHYgPVxuICB4IDo9IHZcblxubGV0IGVxICgpIHggeSA9XG4gIHggPT0geVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcmVmZXJlbmNlIGNlbGwgcmVjb3JkcyBib3RoIGl0cyBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUgYW5kXG4gICBpdHMgbGFzdCBjb21taXR0ZWQgdmFsdWUuIEEgY2VsbCBpcyBjb25zaWRlcmVkIHN0YWJsZSB3aGVuIHRoZXNlIHR3byB2YWx1ZXNcbiAgIGFyZSAocGh5c2ljYWxseSkgZXF1YWwsIGFuZCB1bnN0YWJsZSBvdGhlcndpc2UuICopXG5cbigqIE9uZSBjb3VsZCBwZXJoYXBzIGVucmljaCBlYWNoIGNlbGwgd2l0aCBhIHBvaW50ZXIgdG8gaXRzIHN0b3JlLCBzbyBhcyB0b1xuICAgZW5zdXJlIGF0IHJ1bnRpbWUgdGhhdCB0aGUgdXNlciBpcyBub3QgY29uZnVzZWQuICopXG5cbnR5cGUgJ2EgcnJlZiA9IHtcbiAgKCogVGhlIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjdXJyZW50OiAnYTtcbiAgKCogVGhlIGxhc3QgY29tbWl0dGVkIHZhbHVlLiAqKVxuICBtdXRhYmxlIGNvbW1pdHRlZDogJ2Fcbn1cblxuKCogQSB0cmFuc2FjdGlvbiBjb250YWlucyBhIHN0YWNrIG9mIGFsbCB1bnN0YWJsZSBjZWxscyAoYW5kIHBvc3NpYmx5IHNvbWVcbiAgIHN0YWJsZSBjZWxscyB0b28sIGFsdGhvdWdoIHRoYXQgaXMgdW5saWtlbHkpLiAqKVxuXG50eXBlICdhIHRyYW5zYWN0aW9uID1cbiAgJ2EgcnJlZiBTdGFjay50XG5cbigqIEEgc3RvcmUgY29udGFpbnMgYW4gb3B0aW9uYWwgdHJhbnNhY3Rpb24uIFRoaXMgaW5kaWNhdGVzIHdoZXRoZXIgYVxuICAgdHJhbnNhY3Rpb24gaXMgY3VycmVudGx5IG9uZ29pbmcuIFRyYW5zYWN0aW9ucyBjYW5ub3QgYmUgbmVzdGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgeyBtdXRhYmxlIHRyYW5zYWN0aW9uOiAnYSB0cmFuc2FjdGlvbiBvcHRpb24gfVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPVxuICB7IHRyYW5zYWN0aW9uID0gTm9uZSB9XG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxubGV0IG1ha2UgKF9zIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIHsgY3VycmVudCA9IHY7IGNvbW1pdHRlZCA9IHYgfVxuXG5sZXQgZ2V0IChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICB4LmN1cnJlbnRcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gICgqIElmIHRoZSBuZXcgdmFsdWUgaGFwcGVucyB0byBiZSB0aGUgY3VycmVudCB2YWx1ZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby4gKilcbiAgbGV0IGN1cnJlbnQgPSB4LmN1cnJlbnQgaW5cbiAgaWYgdiA9PSBjdXJyZW50IHRoZW5cbiAgICAoKVxuICBlbHNlIGJlZ2luIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgqIE91dHNpZGUgb2YgYSB0cmFuc2FjdGlvbiwgdHdvIG5vcm1hbCB3cml0ZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQuXG4gICAgICAgICBUaGUgY2VsbCByZW1haW5zIHN0YWJsZS4gTm90aGluZyBpcyBsb2dnZWQuICopXG4gICAgICB4LmN1cnJlbnQgPC0gdjtcbiAgICAgIHguY29tbWl0dGVkIDwtIHZcbiAgfCBTb21lIHN0YWNrIC0+XG4gICAgICAoKiBXZSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24uICopXG4gICAgICAoKiBJZiB0aGlzIGNlbGwgd2FzIHN0YWJsZSBhbmQgbm93IGJlY29tZXMgdW5zdGFibGUsIHRoZW4gaXQgbXVzdCBiZVxuICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgc2V0IG9mIHVuc3RhYmxlIGNlbGxzLCB3aGljaCBpcyByZWNvcmRlZCBhcyBwYXJ0XG4gICAgICAgICBvZiB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICBpZiBjdXJyZW50ID09IHguY29tbWl0dGVkIHRoZW5cbiAgICAgICAgU3RhY2sucHVzaCB4IHN0YWNrO1xuICAgICAgKCogVGhlIGNlbGwgbXVzdCB0aGVuIGJlIHVwZGF0ZWQuIElmIFt2XSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvXG4gICAgICAgICBbY29tbWl0dGVkXSwgdGhpcyBjb3VsZCBtYWtlIHRoZSBjZWxsIHN0YWJsZSBhZ2Fpbi4gV2UgZG8gbm90XG4gICAgICAgICBjaGVjayBmb3IgdGhpcyB1bmxpa2VseSBzaXR1YXRpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgc2V0IG9mXG4gICAgICAgICB1bnN0YWJsZSBjZWxscyBjb3VsZCBhY3R1YWxseSBjb250YWluIHN0YWJsZSBjZWxscyB0b28uICopXG4gICAgICB4LmN1cnJlbnQgPC0gdlxuICAgIGVuZFxuXG5sZXQgZXEgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICB4ID09IHlcblxuZXhjZXB0aW9uIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuXG5sZXQgY29tbWl0IHggPVxuICB4LmNvbW1pdHRlZCA8LSB4LmN1cnJlbnRcblxubGV0IHJvbGxiYWNrIHggPVxuICB4LmN1cnJlbnQgPC0geC5jb21taXR0ZWRcblxubGV0IHRlbnRhdGl2ZWx5IChzIDogJ2Egc3RvcmUpIChmIDogdW5pdCAtPiAnYikgOiAnYiA9XG4gIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICAgcmFpc2UgTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHN0YWNrID0gU3RhY2suY3JlYXRlKCkgaW5cbiAgICAgIHMudHJhbnNhY3Rpb24gPC0gU29tZSBzdGFjaztcbiAgICAgIHRyeVxuICAgICAgICBsZXQgYiA9IGYoKSBpblxuICAgICAgICAoKiBDb21taXQgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciBjb21taXQgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIGJcbiAgICAgIHdpdGggZSAtPlxuICAgICAgICBsZXQgYiA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlKCkgaW5cbiAgICAgICAgKCogUm9sbCBiYWNrIGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgcm9sbGJhY2sgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZW5zaWJsZSBhcnJheSwgdGhhdCBpcywgYSBwYWlyIG9mIGFuXG4gICBpbnRlZ2VyIGFkZHJlc3MgYW5kIGFuIGFycmF5LiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGxlbmd0aCBvZlxuICAgdGhlIGFycmF5IGlzIGF0IGxlYXN0IFtsaW1pdF0uIFRoZSBhcmVhIG9mIHRoZSBhcnJheSBhdCBpbmRleCBbbGltaXRdIGFuZFxuICAgYmV5b25kIGlzIGNvbnNpZGVyZWQgdW5pbml0aWFsaXplZC4gKilcblxuKCogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoaXMgYXJlYSBpcyBmaWxsZWQgd2l0aCBhcmJpdHJhcnkgdmFsdWUocylcbiAgIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGluIGNhbGxzIHRvIFttYWtlXSBvciBbc2V0XS4gVGhpcyBpcyBub3QgaWRlYWwsIGFzIGl0XG4gICBjYW4gY2F1c2UgYSBtZW1vcnkgbGVhay4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIGxvZ2ljYWwgc2l6ZSBvZiB0aGUgYXJyYXk7IGFsc28sIHRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGFycmF5LCB3aG9zZSBsZW5ndGggaXMgYXQgbGVhc3QgW2xpbWl0XS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBhcnJheVxufVxuXG4oKiBUaGUgYXJyYXkgaXMgY3JlYXRlZCB3aXRoIGEgc2l6ZSBhbmQgbGVuZ3RoIG9mIHplcm8uIFdlIGhhdmUgbm8gb3RoZXJcbiAgIGNob2ljZSwgc2luY2Ugd2UgZG8gbm90IGhhdmUgYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYXQgaGFuZC4gKilcblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBbfHxdXG59XG5cbigqIENvcHlpbmcgaXMgc3VwcG9ydGVkLCBidXQgaXMgbm90IGNoZWFwLiBVc2UgYXQgeW91ciBvd24gcmlzay4gKilcblxubGV0IGNvcHkgKHMgOiAnYSBzdG9yZSkgOiAnYSBzdG9yZSA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gQXJyYXkuY29weSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhbiBpbmRleCBpbnRvIHRoZSBhcnJheS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbigqIFRoZSBhcnJheSBqdW1wcyBmcm9tIGxlbmd0aCB6ZXJvIHRvIGxlbmd0aCBbZGVmYXVsdF9pbml0aWFsX2xlbmd0aF0gYXMgc29vblxuICAgYXMgYSBjYWxsIHRvIFttYWtlXSBpcyBtYWRlLiAqKVxuXG5sZXQgZGVmYXVsdF9pbml0aWFsX2xlbmd0aCA9XG4gIDI1NlxuXG4oKiBbZW5sYXJnZSBzIHZdIGluY3JlYXNlcyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSAoaWYgbmVjZXNzYXJ5KSBzbyBhcyB0b1xuICAgZW5zdXJlIHRoYXQgW3MubGltaXRdIGJlY29tZXMgYSB2YWxpZCBpbmRleC4gVGhlIGFyZ3VtZW50IFt2XSBpcyB1c2VkIGFzIGFcbiAgIGRlZmF1bHQgdmFsdWUgdG8gZmlsbCB0aGUgdW5pbml0aWFsaXplZCBhcmVhLiAqKVxuXG5sZXQgZW5sYXJnZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgY29udGVudCA9IHMuY29udGVudCBpblxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbnRlbnQgaW5cbiAgaWYgcy5saW1pdCA9IGxlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbmd0aCcgPVxuICAgICAgaWYgbGVuZ3RoID0gMCB0aGVuXG4gICAgICAgIGRlZmF1bHRfaW5pdGlhbF9sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgMiAqIGxlbmd0aFxuICAgIGluXG4gICAgYXNzZXJ0IChzLmxpbWl0IDwgbGVuZ3RoJyk7XG4gICAgbGV0IGNvbnRlbnQnID0gQXJyYXkubWFrZSBsZW5ndGgnIHYgaW5cbiAgICBBcnJheS5ibGl0IGNvbnRlbnQgMCBjb250ZW50JyAwIGxlbmd0aDtcbiAgICBzLmNvbnRlbnQgPC0gY29udGVudCdcbiAgZW5kXG5cbigqIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBhbmQgW0FycmF5LnVuc2FmZV9nZXRdIHdpdGhvdXRcbiAgIGFueSBwcmVjYXV0aW9ucywgc2luY2UgdGhlIE9DYW1sIHR5cGUtY2hlY2tlciBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlXG4gICBpbmRpY2VzIGFyZSBpbiByYW5nZS4gQSBjb25mdXNlZCB1c2VyIGNvdWxkIHBhc3MgcmVmZXJlbmNlcyBpbnRvIHNvbWVcbiAgIG90aGVyIHN0b3JlLiBXZSBjaG9vc2UgdG8gZXhwbGljaXRseSBjaGVjayB0aGF0IHRoZSBpbmRleCBpcyB3aXRoaW4gdGhlXG4gICBsb2dpY2FsIGJvdW5kcyBvZiB0aGUgYXJyYXkgLS0gdGhpcyBpcyBhIG1vcmUgcHJlY2lzZSBjaGVjay4gKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiB1bml0ID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgZW5sYXJnZSBzIHY7XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHY7XG4gIHhcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9nZXQgcy5jb250ZW50IHhcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2XG5cbmxldCBlcSAgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuIiwiLyogSUQgRkFRXG5cbiAgIFdIQVRTIEFOIElEP1xuXG4gICBJRHMgYXJlIHJhbmRvbS1nZW5lcmF0ZWQgMTI4Yml0IFVVSURzOyB1c2UgSWQubWsoKSB0byBnZW5lcmF0ZSBvbmUuXG5cbiAgIFdIQVQgQVJFIElEUyBVU0VEIEZPUj9cblxuICAgVW5pcXVlIGlkcyBhcmUgYXNzaWduZWQgdG8gdGlsZXMgKGFuZCBoZW5jZSwgaW5kaXJlY3RseSwgdG8gdGVybXMpXG4gICBhdCB0aGUgdGltZSBvZiBjcmVhdGlvbiBvZiBzdXJmYWNlIHN5bnRheC4gSWRzIGFyZSB1c2VkIGFzIGtleXMgaW5cbiAgIHZhcmlvdXMgbWFwcyAobW9zdGx5IG5vdGFibHkgdGhlIE1lYXN1cmVkIG1hcCwgd2hpY2ggdHJhY2tzIHNjcmVlblxuICAgY29vcmRpbmF0ZXMgZm9yIHRoZSB2aWV3LCBhbmQgdGhlIEluZm8gbWFwIHdoaWNoIGNvbGxlY3RzIHN0YXRpY1xuICAgZGF0YSBzdWNoIGFzIHR5cGUgaW5mb3JtYXRpb24pLiBJZHMgYXJlIHVzZWQgZm9yIG1hbnkgemlwcGVyIGFjdGlvbnMsXG4gICBpbmNsdWRpbmcganVtcCB0byBkZWZpbml0aW9uLCBhbmQgYXJlIGFsc28gdXNlZCB0byBjb29yZGluYXRlIHRlcm1cbiAgIGRlY29yYXRpb25zLiBBY2NpZGVudGFsbHkgY3JlYXRpbmcgbm9uLXVuaXF1ZSBJRHMgY2FuIGJlIHRoZSBjYXVzZVxuICAgb2YgbWFueSBvZGQgaXNzdWVzIGZvciB6aXBwZXIgYWN0aW9ucyBhbmQgZGlzcGxheS5cblxuICAgQlVUIFdIWSBJUyBUSEVSRSBBIF9MSVNUXyBPRiBJRFM/XG5cbiAgIFRlY2huaWNhbGx5LCBlYWNoIHRpbGUgaGFzIGEgbGlzdCBvZiBpZHMsIHRvIHN1cHBvcnQgbi1hcnkgZm9ybXMgbGlrZVxuICAgdHVwbGVzOyB0aGVyZSBhcmUgcmVwX2lkIGZ1bmN0aW9ucyBpbiBUZXJtIHRvIGNhbm9uaWNhbGx5IGV4dHJhY3RcbiAgIHNpbmdsZSByZXByZXNlbnRhdGl2ZSBpZHMgZnJvbSB0aGlzIGxpc3Qgd2hlcmUgYXBwcm9wcmlhdGUuXG5cbiAgIENBTiBJIFVTRSBJRFMgSU4gRFlOQU1JQ1M/XG5cbiAgIEN1cnJlbnRseSwgREhFeHBzIChhcyBwcm9kdWNlZCBieSB0aGUgZWxhYm9yYXRvciBhbmQgcHJvZHVjZWQvY29uc3VtZWRcbiAgIGJ5IHRoZSBldmFsdWF0b3IpIGRvIG5vdCBpbiBnZW5lcmFsIHBlcnNpc3QgaWRzOyB0aGUgZXhjZXB0aW9ucyBhcmVcbiAgIHRoaW5ncyBsaWtlIGhvbGVzIGFuZCB0ZXN0cyB3aGljaCBoYXZlIGFkZGl0aW9uYWwgbWV0YWRhdGEgd2hpY2ggaXNcbiAgIGFjY3VtdWxhdGVkIGR1dGluZyBldmFsdWF0aW9uLiBUaGVyZSBhcmUgbWFueSB1c2UgY2FzZXMgZm9yIHRyYWNraW5nXG4gICBpZHMgbW9yZSBnZW5lcmFsbHkgZHVyaW5nIGV2YWx1YXRpb24sIGJ1dCBkb2luZyBzbyBpbiBhIHByaW5jaXBsZWRcbiAgIHdheSBpcyBhIGxhcmdlLXNjYWxlIGNoYW5nZSB3aXRoIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG5sZXQgc2V4cF9vZl90OiBVdWlkbS50ID0+IFNleHBsaWIuU2V4cC50ID1cbiAgdCA9PiBTZXhwbGliLlNleHAuQXRvbShVdWlkbS50b19zdHJpbmcodCkpO1xuXG5sZXQgdF9vZl9zZXhwOiBTZXhwbGliLlNleHAudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgU2V4cGxpYi5TZXhwLkF0b20ocykgPT5cbiAgICBVdWlkbS5vZl9zdHJpbmcocylcbiAgICB8PiBVdGlsLk9wdFV0aWwuZ2V0KF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3NleHA6IG5vdCB2YWxpZCBVVUlEICgxKVwiKSlcbiAgfCBfID0+IGZhaWx3aXRoKFwiVXVpZG0udF9vZl9zZXhwOiBub3QgdmFsaWQgVVVJRCAoMilcIik7XG5cbmxldCB5b2pzb25fb2ZfdDogVXVpZG0udCA9PiBZb2pzb24uU2FmZS50ID0gdCA9PiBgU3RyaW5nKFV1aWRtLnRvX3N0cmluZyh0KSk7XG5cbmxldCB0X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgYFN0cmluZyhzKSA9PlxuICAgIFV1aWRtLm9mX3N0cmluZyhzKVxuICAgIHw+IFV0aWwuT3B0VXRpbC5nZXQoXyA9PlxuICAgICAgICAgZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDEpXCIpXG4gICAgICAgKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDIpXCIpO1xuXG50eXBlIHQgPSBVdWlkbS50O1xuXG5sZXQgbWs6IHVuaXQgPT4gdCA9IFV1aWRtLnY0X2dlbihSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSk7XG5cbmxldCBjb21wYXJlOiAodCwgdCkgPT4gaW50ID0gVXVpZG0uY29tcGFyZTtcbmxldCB0b19zdHJpbmc6ICh+dXBwZXI6IGJvb2w9PywgdCkgPT4gc3RyaW5nID0gVXVpZG0udG9fc3RyaW5nO1xubGV0IG9mX3N0cmluZzogKH5wb3M6IGludD0/LCBzdHJpbmcpID0+IG9wdGlvbih0KSA9IFV1aWRtLm9mX3N0cmluZztcbmxldCBwcDogKEZvcm1hdC5mb3JtYXR0ZXIsIHQpID0+IHVuaXQgPVxuICAoZiwgaWQpID0+XG4gICAgRm9ybWF0LmZwcmludGYoXG4gICAgICBmLFxuICAgICAgXCJPcHRpb24uZ2V0KEhhejNsY29yZS5JZC5vZl9zdHJpbmcoXFxcIiVzXFxcIikpXCIsXG4gICAgICB0b19zdHJpbmcoaWQpLFxuICAgICk7XG5sZXQgc2hvdyA9IGlkID0+XG4gIEZvcm1hdC5zcHJpbnRmKFxuICAgIFwiT3B0aW9uLmdldChIYXozbGNvcmUuSWQub2Zfc3RyaW5nKFxcXCIlc1xcXCIpKVwiLFxuICAgIHRvX3N0cmluZyhpZCksXG4gICk7XG5cbltAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG50eXBlIGJpbmRpbmcoJ3YpID0gKHQsICd2KTtcblxubW9kdWxlIE1hcCA9IHtcbiAgaW5jbHVkZSBNYXAuTWFrZShVdWlkbSk7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gYmluZGluZ3MgfD4gU2V4cGxpYi5TdGQuc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcblxuICBsZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cCwgc2V4cCkgPT5cbiAgICBzZXhwXG4gICAgfD4gU2V4cGxpYi5TdGQubGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCB5b2pzb25fb2ZfdCA9ICh5b2pzb25fb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuXG4gIGxldCB0X29mX3lvanNvbiA9ICh2X29mX3lvanNvbiwganNvbikgPT5cbiAgICBqc29uXG4gICAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCBwcCA9IChwcF92LCBmbXQsIG1hcCkgPT5cbiAgICBiaW5kaW5ncyhtYXApXG4gICAgfD4gTGlzdC5pdGVyKCgoaywgdikpID0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZihmbXQsIFwiJWEgLT4gJWFcXG5cIiwgcHAsIGssIHBwX3YsIHYpXG4gICAgICAgKTtcbn07XG5sZXQgaW52YWxpZDogdCA9XG4gIFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIgfD4gVXVpZG0ub2Zfc3RyaW5nIHw+IE9wdGlvbi5nZXQ7XG5cbi8qIFNwZWNpYWwgaWQgdXNlZCB0byBkZW5vdGUgYSB0cml2aWFsIChlbXB0eSkgZnVuY3Rpb24gYXBwbGljYXRpb24gKi9cbmxldCBudWxsYXJ5X2FwX2ZsYWc6IHQgPVxuICBcIkRFQURCRUVGLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiIHw+IFV1aWRtLm9mX3N0cmluZyB8PiBPcHRpb24uZ2V0O1xuXG5sZXQgaXNfbnVsbGFyeV9hcF9mbGFnID0gKGlkczogbGlzdCh0KSkgPT5cbiAgc3dpdGNoIChpZHMpIHtcbiAgfCBbaWRdIHdoZW4gaWQgPT0gbnVsbGFyeV9hcF9mbGFnID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbm1vZHVsZSBVZjoge1xuICB0eXBlIHN0b3JlKCdhKTtcbiAgbGV0IGluaXQ6IHVuaXQgPT4gc3RvcmUoXyk7XG4gIGxldCBhZGQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgZ2V0OiAodCwgc3RvcmUoJ2EpKSA9PiAnYTtcbiAgbGV0IGdldF9vcHQ6ICh0LCBzdG9yZSgnYSkpID0+IG9wdGlvbignYSk7XG4gIGxldCBzZXQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgbWVyZ2U6ICgoJ2EsICdhKSA9PiAnYSwgdCwgdCwgc3RvcmUoJ2EpKSA9PiB1bml0O1xufSA9IHtcbiAgbW9kdWxlIE0gPSBVbmlvbkZpbmQuTWFrZShVbmlvbkZpbmQuU3RvcmVWZWN0b3IpO1xuICB0eXBlIHN0b3JlKCdhKSA9IHtcbiAgICByZWZzOiByZWYoTWFwLnQoTS5ycmVmKCdhKSkpLFxuICAgIHN0b3JlOiBNLnN0b3JlKCdhKSxcbiAgfTtcbiAgbGV0IGluaXQgPSAoKSA9PiB7cmVmczogcmVmKE1hcC5lbXB0eSksIHN0b3JlOiBNLm5ld19zdG9yZSgpfTtcbiAgbGV0IHJyZWYgPSAoaWQsIHMpID0+IE1hcC5maW5kKGlkLCBzLnJlZnNeKTtcbiAgbGV0IGFkZCA9IChpZCwgYSwgcykgPT5cbiAgICBzd2l0Y2ggKE1hcC5maW5kX29wdChpZCwgcy5yZWZzXikpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCByID0gTS5tYWtlKHMuc3RvcmUsIGEpO1xuICAgICAgcy5yZWZzIDo9IE1hcC5hZGQoaWQsIHIsIHMucmVmc14pO1xuICAgIHwgU29tZShfKSA9PiAoKVxuICAgIH07XG4gIGxldCBnZXQgPSAoaWQsIHMpID0+IE0uZ2V0KHMuc3RvcmUsIE0uZmluZChzLnN0b3JlLCBycmVmKGlkLCBzKSkpO1xuICBsZXQgZ2V0X29wdCA9IChpZCwgcykgPT5cbiAgICBNYXAuZmluZF9vcHQoaWQsIHMucmVmc14pIHw+IE9wdGlvbi5tYXAoXyA9PiBnZXQoaWQsIHMpKTtcbiAgbGV0IHNldCA9IChpZCwgYSwgcykgPT4gTS5zZXQocy5zdG9yZSwgTS5maW5kKHMuc3RvcmUsIHJyZWYoaWQsIHMpKSwgYSk7XG5cbiAgbGV0IG1lcmdlID0gKGYsIGlkLCBpZCcsIHMpID0+XG4gICAgaWdub3JlKE0ubWVyZ2Uocy5zdG9yZSwgZiwgcnJlZihpZCwgcyksIHJyZWYoaWQnLCBzKSkpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbi8qKlxuICogaGlnaGVyIHByZWNlZGVuY2UgbWVhbnMgbG93ZXIgaW50IHJlcHJlc2VudGF0aW9uXG4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGludDtcblxubGV0IG1heDogdCA9IDA7XG5cbmxldCB1bnF1b3RlID0gMTtcbmxldCBhcCA9IDI7XG5sZXQgbmVnID0gMztcbmxldCBwb3dlciA9IDQ7XG5sZXQgbXVsdCA9IDU7XG5sZXQgcGx1cyA9IDY7XG5sZXQgY29ucyA9IDc7XG5sZXQgY29uY2F0ID0gODtcbmxldCBlcXMgPSA5O1xubGV0IGFuZF8gPSAxMDtcbmxldCBvcl8gPSAxMTtcbmxldCBhbm4gPSAxMjtcbmxldCBpZl8gPSAxMztcbmxldCBmdW5fID0gMTQ7XG5sZXQgcHJvZCA9IDE1O1xubGV0IHNlbWkgPSAxNjtcbmxldCBsZXRfID0gMTc7XG5sZXQgZmlsdGVyID0gMTg7XG5sZXQgcnVsZV9hcnIgPSAxOTtcbmxldCBydWxlX3ByZSA9IDIwO1xubGV0IHJ1bGVfc2VwID0gMjE7XG5sZXQgY2FzZV8gPSAyMjtcblxubGV0IG1pbiA9IDIzO1xuXG5sZXQgY29tcGFyZSA9IChwMTogdCwgcDI6IHQpOiBpbnQgPT5cbiAgKC0xKSAqIEludC5jb21wYXJlKChwMSA6PiBpbnQpLCAocDIgOj4gaW50KSk7XG4vLyBsZXQgbWluID0gKHAxOiB0LCBwMjogdCk6IHQgPT4gbWF4KHAxLCBwMik7XG5cbmxldCBhc3NvY2lhdGl2aXR5X21hcDogSW50TWFwLnQoRGlyZWN0aW9uLnQpID1cbiAgW1xuICAgIChtdWx0LCBEaXJlY3Rpb24uTGVmdCksXG4gICAgKHBsdXMsIExlZnQpLFxuICAgIChwb3dlciwgUmlnaHQpLFxuICAgIChjb25zLCBSaWdodCksXG4gICAgKGNvbmNhdCwgUmlnaHQpLFxuICAgIChhbm4sIExlZnQpLFxuICAgIChlcXMsIExlZnQpLFxuICBdXG4gIHw+IExpc3QudG9fc2VxXG4gIHw+IEludE1hcC5vZl9zZXE7XG5cbmxldCBhc3NvY2lhdGl2aXR5ID0gKHA6IHQpOiBvcHRpb24oRGlyZWN0aW9uLnQpID0+XG4gIEludE1hcC5maW5kX29wdChwLCBhc3NvY2lhdGl2aXR5X21hcCk7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IEFueVxuICB8IE51bFxuICB8IFBhdFxuICB8IFR5cFxuICB8IFRQYXRcbiAgfCBSdWxcbiAgfCBFeHA7XG5cbmxldCByb290ID0gRXhwO1xuXG5sZXQgYWxsID0gW0FueSwgTnVsLCBQYXQsIFR5cCwgUnVsLCBFeHAsIFRQYXRdO1xuXG5sZXQgY29uc2lzdGVudCA9IChzLCBzJykgPT5cbiAgc3dpdGNoIChzLCBzJykge1xuICB8IChBbnksIF8pXG4gIHwgKF8sIEFueSkgPT4gdHJ1ZVxuICB8IChOdWwsIF8pXG4gIHwgKF8sIE51bCkgPT4gZmFsc2VcbiAgfCBfID0+IHMgPT0gcydcbiAgfTtcblxubGV0IHRvX3N0cmluZyA9XG4gIGZ1blxuICB8IEFueSA9PiBcIkFueVwiXG4gIHwgTnVsID0+IFwiTnVsXCJcbiAgfCBQYXQgPT4gXCJQYXRcIlxuICB8IFRQYXQgPT4gXCJUUGF0XCJcbiAgfCBUeXAgPT4gXCJUeXBcIlxuICB8IFJ1bCA9PiBcIlJ1bFwiXG4gIHwgRXhwID0+IFwiRXhwXCI7XG5cbmxldCB0b19zdHJpbmdfdmVyYm9zZSA9XG4gIGZ1blxuICB8IEFueSA9PiBcImFueVwiXG4gIHwgTnVsID0+IFwibnVsbFwiXG4gIHwgUGF0ID0+IFwicGF0dGVyblwiXG4gIHwgVFBhdCA9PiBcInR5cGUgcGF0dGVyblwiXG4gIHwgVHlwID0+IFwidHlwZVwiXG4gIHwgUnVsID0+IFwicnVsZVwiXG4gIHwgRXhwID0+IFwiZXhwcmVzc2lvblwiO1xuIiwibW9kdWxlIFNoYXBlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBDb252ZXhcbiAgICB8IENvbmNhdmUoUHJlY2VkZW5jZS50KTtcblxuICBsZXQgY29uY2F2ZSA9ICh+cD0/LCAoKSkgPT4ge1xuICAgIGxldCBwID1cbiAgICAgIHN3aXRjaCAocCkge1xuICAgICAgfCBOb25lID0+IFByZWNlZGVuY2UubWluXG4gICAgICB8IFNvbWUocCkgPT4gcFxuICAgICAgfTtcbiAgICBDb25jYXZlKHApO1xuICB9O1xuXG4gIGxldCBmaXRzID0gKGw6IHQsIHI6IHQpID0+XG4gICAgc3dpdGNoIChsLCByKSB7XG4gICAgfCAoQ29udmV4LCBDb25jYXZlKF8pKVxuICAgIHwgKENvbmNhdmUoXyksIENvbnZleCkgPT4gdHJ1ZVxuICAgIHwgKENvbnZleCwgQ29udmV4KVxuICAgIHwgKENvbmNhdmUoXyksIENvbmNhdmUoXykpID0+IGZhbHNlXG4gICAgfTtcblxuICBsZXQgZml0dGluZyA9XG4gICAgZnVuXG4gICAgfCBDb252ZXggPT4gY29uY2F2ZSgpXG4gICAgfCBDb25jYXZlKF8pID0+IENvbnZleDtcblxuICBsZXQgZmxpcCA9XG4gICAgZnVuXG4gICAgfCBDb252ZXggPT4gY29uY2F2ZSgpXG4gICAgfCBDb25jYXZlKF8pID0+IENvbnZleDtcblxuICBsZXQgYWJzb2x1dGUgPSAoZDogVXRpbC5EaXJlY3Rpb24udCwgczogdCk6IFV0aWwuRGlyZWN0aW9uLnQgPT5cbiAgICAvKiBUaGUgZGlyZWN0aW9uIGFuIHMtc2hhcGVkIG5pYiBvbiB0aGUgZC1oYW5kIHNpZGUgaXMgZmFjaW5nICovXG4gICAgc3dpdGNoIChzKSB7XG4gICAgfCBDb252ZXggPT4gZFxuICAgIHwgQ29uY2F2ZShfKSA9PiBVdGlsLkRpcmVjdGlvbi50b2dnbGUoZClcbiAgICB9O1xuXG4gIGxldCByZWxhdGl2ZSA9IChuaWI6IFV0aWwuRGlyZWN0aW9uLnQsIHNpZGU6IFV0aWwuRGlyZWN0aW9uLnQpOiB0ID0+XG4gICAgbmliID09IHNpZGUgPyBDb252ZXggOiBjb25jYXZlKCk7XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHNoYXBlOiBTaGFwZS50LFxuICBzb3J0OiBTb3J0LnQsXG59O1xuXG5sZXQgc2hhcGUgPSBuID0+IG4uc2hhcGU7XG5cbmxldCBmaXRzID0gKGw6IHQsIHI6IHQpOiBib29sID0+XG4gIGwuc29ydCA9PSByLnNvcnQgJiYgU2hhcGUuZml0cyhsLnNoYXBlLCByLnNoYXBlKTtcblxubGV0IGZpdHRpbmcgPSAobmliOiB0KTogdCA9PiB7Li4ubmliLCBzaGFwZTogU2hhcGUuZml0dGluZyhuaWIuc2hhcGUpfTtcblxubGV0IGZsaXAgPSAobmliOiB0KSA9PiB7Li4ubmliLCBzaGFwZTogU2hhcGUuZmxpcChuaWIuc2hhcGUpfTtcblxuLy8gbGV0IHRvZ2dsZSA9IChuaWI6IHQpID0+IHtcbi8vICAgLi4ubmliLFxuLy8gICBvcmllbnRhdGlvbjogRGlyZWN0aW9uLnRvZ2dsZShuaWIub3JpZW50YXRpb24pLFxuLy8gfTtcblxuLy8gbGV0IHNvcnRfY29uc2lzdGVudCA9IChuaWI6IHQsIG5pYic6IHQpID0+IG5pYi5zb3J0ID09IG5pYicuc29ydDtcblxuLy8gbGV0IG9mX3NvcnQgPSBzb3J0ID0+IFtcbi8vICAge3NvcnQsIG9yaWVudGF0aW9uOiBMZWZ0fSxcbi8vICAge3NvcnQsIG9yaWVudGF0aW9uOiBSaWdodH0sXG4vLyBdO1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNoYXBlID1cbiAgfCBDb252ZXhcbiAgfCBDb25jYXZlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBzaGFwZSxcbn07XG5cbmxldCBpZCA9IGcgPT4gZy5pZDtcblxubGV0IHNoYXBlcyA9IGcgPT5cbiAgc3dpdGNoIChnLnNoYXBlKSB7XG4gIHwgQ29udmV4ID0+IE5pYi5TaGFwZS4oQ29udmV4LCBDb252ZXgpXG4gIHwgQ29uY2F2ZSA9PiBOaWIuU2hhcGUuKENvbmNhdmUoUHJlY2VkZW5jZS5taW4pLCBDb25jYXZlKFByZWNlZGVuY2UubWluKSlcbiAgfTtcblxuLy8gYXNzdW1lcyBzYW1lIHNoYXBlIG9uIGJvdGggc2lkZXNcbmxldCBta19maXRzX3NoYXBlID0gKHM6IE5pYi5TaGFwZS50KTogdCA9PiB7XG4gIGxldCBpZCA9IElkLm1rKCk7XG4gIGxldCBzaGFwZSA9XG4gICAgc3dpdGNoIChzKSB7XG4gICAgfCBDb252ZXggPT4gQ29uY2F2ZVxuICAgIHwgQ29uY2F2ZShfKSA9PiBDb252ZXhcbiAgICB9O1xuICB7aWQsIHNoYXBlfTtcbn07XG4vL2xldCBta19maXRzID0gKChsLCByKTogTmlicy5zaGFwZXMpOiBvcHRpb24odCkgPT5cbi8vICBOaWIuU2hhcGUuZml0cyhsLCByKSA/IE5vbmUgOiBTb21lKG1rX2ZpdHNfc2hhcGUobCkpO1xuXG5sZXQgZml0c19zaGFwZSA9IChnOiB0LCBzOiBOaWIuU2hhcGUudCkgPT5cbiAgc3dpdGNoIChnLnNoYXBlLCBzKSB7XG4gIHwgKENvbnZleCwgQ29udmV4KVxuICB8IChDb25jYXZlLCBDb25jYXZlKF8pKSA9PiBmYWxzZVxuICB8IChDb252ZXgsIENvbmNhdmUoXykpXG4gIHwgKENvbmNhdmUsIENvbnZleCkgPT4gdHJ1ZVxuICB9O1xuXG5sZXQgZml0cyA9IChnOiB0LCBnJzogdCkgPT5cbiAgc3dpdGNoIChnLnNoYXBlLCBnJy5zaGFwZSkge1xuICB8IChDb252ZXgsIENvbnZleClcbiAgfCAoQ29uY2F2ZSwgQ29uY2F2ZSkgPT4gZmFsc2VcbiAgfCAoQ29udmV4LCBDb25jYXZlKVxuICB8IChDb25jYXZlLCBDb252ZXgpID0+IHRydWVcbiAgfTtcblxubGV0IG1lcmdlID0gKGdzOiBsaXN0KHQpKTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoZ3MpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHRsKSkge1xuICAgIHwgTm9uZSA9PiBTb21lKGhkKVxuICAgIHwgU29tZSgoXywgZnQpKSA9PiBoZC5zaGFwZSA9PSBmdC5zaGFwZSA/IFNvbWUoaGQpIDogTm9uZVxuICAgIH1cbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIG1ha2UgYW4gZW51bVxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gc3RyaW5nO1xuXG5tb2R1bGUgSW5kZXggPSB7XG4gIHR5cGUgdCA9IGludDtcbn07XG5cbmxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoO1xubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZTtcbmxldCBybV9udGggPSBVdGlsLlN0cmluZ1V0aWwucmVtb3ZlX250aDtcbmxldCBybV9sYXN0ID0gVXRpbC5TdHJpbmdVdGlsLnJlbW92ZV9sYXN0O1xubGV0IHJtX2ZpcnN0ID0gVXRpbC5TdHJpbmdVdGlsLnJlbW92ZV9maXJzdDtcbmxldCBzcGxpdF9udGggPSBVdGlsLlN0cmluZ1V0aWwuc3BsaXRfbnRoO1xubGV0IGluc2VydF9udGggPSBVdGlsLlN0cmluZ1V0aWwuaW5zZXJ0X250aDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIEEgbGFiZWwgaXMgdGhlIHRleHR1YWwgZXhwcmVzc2lvbiBvZiBhIGZvcm0ncyBkZWxpbWl0ZXJzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBsaXN0KFRva2VuLnQpO1xuZXhjZXB0aW9uIEVtcHR5X2xhYmVsO1xuXG5sZXQgbGVuZ3RoOiB0ID0+IGludCA9IExpc3QubGVuZ3RoO1xuXG5sZXQgcmV2OiB0ID0+IHQgPSBMaXN0LnJldjtcblxubGV0IGhkX3RsID0gKGxibDogdCk6IChUb2tlbi50LCBsaXN0KFRva2VuLnQpKSA9PlxuICBzd2l0Y2ggKGxibCkge1xuICB8IFtdID0+IHJhaXNlKEVtcHR5X2xhYmVsKVxuICB8IFtoZCwgLi4udGxdID0+IChoZCwgdGwpXG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSAoTmliLnQsIE5pYi50KTtcblxuW0BkZXJpdmluZyBzaG93XVxudHlwZSBzaGFwZXMgPSAoTmliLlNoYXBlLnQsIE5pYi5TaGFwZS50KTtcblxubGV0IGZsaXAgPSAoKGwsIHIpOiB0KSA9PiAociwgbCk7XG5cbmxldCBvZl9ob2xlID0gc29ydCA9PiBOaWIuKHtzb3J0LCBzaGFwZTogQ29udmV4fSwge3NvcnQsIHNoYXBlOiBDb252ZXh9KTtcblxubGV0IGZpdHRpbmcgPSAoKGwsIHIpOiB0KSA9PiAoTmliLmZpdHRpbmcobCksIE5pYi5maXR0aW5nKHIpKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgb3V0OiBTb3J0LnQsXG4gIGluXzogbGlzdChTb3J0LnQpLFxuICBuaWJzOiBOaWJzLnQsXG59O1xuXG5sZXQgZmxpcF9uaWJzID0gbSA9PiB7Li4ubSwgbmliczogTmlicy5mbGlwKG0ubmlicyl9O1xuXG5sZXQgbWtfb3AgPSAob3V0LCBpbl8pID0+IHtcbiAgbGV0IG4gPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IG91dH07XG4gIHtvdXQsIGluXywgbmliczogKG4sIG4pfTtcbn07XG5sZXQgbWtfcHJlID0gKHAsIG91dCwgaW5fKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBvdXR9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IG91dH07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfcG9zdCA9IChwLCBvdXQsIGluXykgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IG91dH07XG4gIGxldCByID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBvdXR9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX2JpbiA9ICh+bD0/LCB+cj0/LCBwLCBvdXQsIGluXykgPT4ge1xuICBsZXQgbCA9IE9wdGlvbi52YWx1ZShsLCB+ZGVmYXVsdD1vdXQpO1xuICBsZXQgciA9IE9wdGlvbi52YWx1ZShyLCB+ZGVmYXVsdD1vdXQpO1xuICBsZXQgbmliID0gc29ydCA9PiBOaWIue3NvcnQsIHNoYXBlOiBDb25jYXZlKHApfTtcbiAge291dCwgaW5fLCBuaWJzOiAobmliKGwpLCBuaWIocikpfTtcbn07XG5cbi8vIGZvcm1zIHdoZXJlIHRpcHMgY2FuIGJlIGRpZmZlcmVudCB0aGFuIG91dCBzb3J0XG5sZXQgbWtfcHJlJyA9IChwLCBvdXQsIHNvcnRfbCwgaW5fLCBzb3J0X3IpID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IHNvcnRfbH07XG4gIGxldCByID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogc29ydF9yfTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcbmxldCBta19wb3N0JyA9IChwLCBvdXQsIHNvcnRfbCwgaW5fLCBzb3J0X3IpID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X2x9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogc29ydF9yfTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcbmxldCBta19iaW4nID0gKHAsIG91dCwgc29ydF9sLCBpbl8sIHNvcnRfcikgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfbH07XG4gIGxldCByID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogc29ydF9yfTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcblxubGV0IG5pYnMgPSAofmluZGV4PT8sIG1vbGQ6IHQpOiBOaWJzLnQgPT5cbiAgc3dpdGNoIChpbmRleCkge1xuICB8IE5vbmUgPT4gbW9sZC5uaWJzXG4gIHwgU29tZShpKSA9PlxuICAgIGxldCAobCwgcikgPSBtb2xkLm5pYnM7XG4gICAgbGV0IGluXyA9IG1vbGQuaW5fO1xuICAgIGxldCBsID1cbiAgICAgIGkgPT0gMCA/IGwgOiBOaWIue3NoYXBlOiBTaGFwZS5jb25jYXZlKCksIHNvcnQ6IExpc3QubnRoKGluXywgaSAtIDEpfTtcbiAgICBsZXQgciA9XG4gICAgICBpID09IExpc3QubGVuZ3RoKGluXylcbiAgICAgICAgPyByIDogTmliLntzaGFwZTogU2hhcGUuY29uY2F2ZSgpLCBzb3J0OiBMaXN0Lm50aChpbl8sIGkpfTtcbiAgICAobCwgcik7XG4gIH07XG5cbmxldCBuaWJfc2hhcGVzID0gKH5pbmRleD0/LCBtb2xkOiB0KTogTmlicy5zaGFwZXMgPT4ge1xuICBsZXQgKG5pYl9sLCBuaWJfcikgPSBuaWJzKH5pbmRleD8sIG1vbGQpO1xuICAobmliX2wuc2hhcGUsIG5pYl9yLnNoYXBlKTtcbn07XG5cbm1vZHVsZSBNYXAgPSB7XG4gIHR5cGUgbW9sZCA9IHQ7XG4gIGluY2x1ZGUgSWQuTWFwO1xuICB0eXBlIG5vbnJlYyB0ID0gSWQuTWFwLnQobGlzdChtb2xkKSk7XG59O1xuXG5sZXQgb2ZfZ3JvdXQ6IChHcm91dC50LCBTb3J0LnQpID0+IHQgPVxuICAoZywgc29ydCkgPT4ge1xuICAgIG5pYnM6XG4gICAgICAvLyBUT0RPKGQpOiByZXZpc2l0IHRoaXMgd2hlbiByZWZvcm11bGF0aW5nIG1vbGRzXG4gICAgICBzd2l0Y2ggKGcuc2hhcGUpIHtcbiAgICAgIHwgQ29udmV4ID0+XG4gICAgICAgIGxldCBuID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0fTtcbiAgICAgICAgKG4sIG4pO1xuICAgICAgfCBDb25jYXZlID0+XG4gICAgICAgIGxldCBuID0gTmliLntzaGFwZTogQ29uY2F2ZShQcmVjZWRlbmNlLm1pbiksIHNvcnR9O1xuICAgICAgICAobiwgbik7XG4gICAgICB9LFxuICAgIG91dDogc29ydCxcbiAgICBpbl86IFtdLFxuICB9O1xuXG5sZXQgb2Zfc2Vjb25kYXJ5ID0gKGw6IE5pYi50KSA9PiB7XG4gIG5pYnM6IChOaWIuZmxpcChsKSwgbCksXG4gIG91dDogbC5zb3J0LFxuICBpbl86IFtdLFxufTtcblxubGV0IGZpdHNfc2hhcGUgPSAoZDogRGlyZWN0aW9uLnQsIHM6IE5pYi5TaGFwZS50LCBtOiB0KTogYm9vbCA9PiB7XG4gIGxldCBzJyA9IERpcmVjdGlvbi5jaG9vc2UoZCwgbmliX3NoYXBlcyhtKSk7XG4gIE5pYi5TaGFwZS5maXRzKHMsIHMnKTtcbn07XG5cbmxldCBjb25zaXN0ZW50X3NoYXBlcyA9IChtczogbGlzdCh0KSkgPT5cbiAgbXNcbiAgfD4gTGlzdC5tYXAobmliX3NoYXBlcylcbiAgfD4gTGlzdC5zcGxpdFxuICB8PiBUdXBsZVV0aWwubWFwMihMaXN0VXRpbC5zaW5nbGVfZWxlbSk7XG5cbmxldCBpc19pbmZpeF9vcCA9IChtb2xkOiB0KTogYm9vbCA9PlxuICBzd2l0Y2ggKG1vbGQubmlicywgbW9sZC5pbl8pIHtcbiAgfCAoKHtzaGFwZTogQ29uY2F2ZShfKSwgX30sIHtzaGFwZTogQ29uY2F2ZShfKSwgX30pLCBbXSkgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcblxubGV0IGNoZXZyb24gPSAoc29ydDogU29ydC50LCBwOiBQcmVjZWRlbmNlLnQsIGQ6IFV0aWwuRGlyZWN0aW9uLnQpOiB0ID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IFJpZ2h0ID0+IG1rX3Bvc3QocCwgc29ydCwgW10pXG4gIHwgTGVmdCA9PiBta19wcmUocCwgc29ydCwgW10pXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBNb2xkO1xubW9kdWxlIFAgPSBQcmVjZWRlbmNlO1xuXG4vKiBGT1JNXG4gICBUaGlzIG1vZHVsZSBkZXRlcm1pbmVzIHRoZSBzeW50YWN0aWMgZXh0ZW50IG9mIHRoZSBsYW5ndWFnZTsgdGhlXG4gICBlbnRpcmUgU3ludGF4IG1vZHVsZSBpcyBkcml2ZW4gYnkgdGhlIGJlbG93IGRlZmluaXRpb25zLiBBZGRpbmdcbiAgIGEgbmV3IHN5bnRhY3RpYyBmb3JtIGlzIHNpbXBseSBhIG1hdHRlciBvZiBhZGRpbmcgYSBuZXcgbGluZSB0byBlaXRoZXJcbiAgIHRoZSAnY29udmV4X21vbm9zJyB0YWJsZSwgZm9yIHNpbmdsZS10b2tlbiBmb3Jtcywgb3IgdGhlICdmb3JtcydcbiAgIHRhYmxlLCBmb3IgY29tcG91bmQgZm9ybXMuXG4gICBUaGUgd3JhcHBpbmcgZnVuY3Rpb25zIHNlZW4gaW4gYm90aCBvZiB0aG9zZSB0YWJsZXMgZGV0ZXJtaW5lIHRoZVxuICAgc2hhcGUsIHByZWNlZGVuY2UsIGFuZCBleHBhbnNpb24gYmVoYXZpb3Igb2YgdGhlIGZvcm0uICovXG5cbmxldCByZWdleHAgPSAociwgcykgPT5cbiAgSnNfb2Zfb2NhbWwuUmVnZXhwLnN0cmluZ19tYXRjaChKc19vZl9vY2FtbC5SZWdleHAucmVnZXhwKHIpLCBzLCAwKVxuICB8PiBPcHRpb24uaXNfc29tZTtcblxuLyogQSBsYWJlbCBpcyB0aGUgdGV4dHVhbCBleHByZXNzaW9uIG9mIGEgZm9ybSdzIGRlbGltaXRlcnMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbGFiZWwgPSBsaXN0KFRva2VuLnQpO1xuXG4vKiBUaGUgY29uc3RydWN0aW9uIG9mIGEgY29tcG91bmQgZm9ybXMgY2FuIGJlIHRyaWdnZXJlZCBieSBpbnNlcnRpbmdcbiAgIG9uZSBvZiBpdHMgZGVsaW1pdGVycyB0aHJvdWdoIGEgcHJvY2VzcyBjYWxsZWQgZXhwYW5zaW9uLiBFeHBhbnNpb25cbiAgIGNhbiBlaXRoZXIgb2NjdXIgKEluc3RhbnQpbHkgdXBvbiBkZWxpbWl0ZXIgY3JlYXRpb24sIG9yIGJlIChEZWxheWVkKVxuICAgdW50aWwgYWZ0ZXIgYSB0b2tlbiBib3VuZGFyeSBldmVudCBpcyB0cmlnZ2VyZWQgKHNheSBieSBwcmVzc2luZ1xuICAgc3BhY2UgYWZ0ZXIgZW50ZXJpbmcgJ2xldCcpLiBUaGUgKFN0YXRpYykgY2FzZSBpcyB1c2VkIGZvciBtb25vc1xuICAgYWthIHNpbmdsZS10b2tlbiBmb3Jtcy4gKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHBhbnNpb25fdGltZSA9XG4gIHwgU3RhdGljXG4gIHwgSW5zdGFudFxuICB8IERlbGF5ZWQ7XG5cbi8qIEV4cGFuc2lvbiBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGVpdGhlci9ib3RoIHRoZSBmaXJzdCBvciBsYXN0IHRva2VuXG4gICBvZiBhIGZvcm0sIHJlcHJlc2VudGVkIGhlcmUgYnkgdGhlIGZpcnN0L2xhc3QgZWxlbWVudHMgb2YgdGhpcyBwYWlyLiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHBhbnNpb24gPSAoZXhwYW5zaW9uX3RpbWUsIGV4cGFuc2lvbl90aW1lKTtcblxuLyogQSBsYWJlbCwgYSBtb2xkLCBhbmQgZXhwYW5zaW9uIGJlaGF2aW9yIHRvZ2V0aGVyIGRldGVybWluZSBhIGZvcm0uICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGxhYmVsLFxuICBleHBhbnNpb24sXG4gIG1vbGQ6IE1vbGQudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYmFkX3Rva2VuX2NscyA9XG4gIHwgT3RoZXJcbiAgfCBCYWRJbnQ7XG5cbmxldCBtayA9IChleHBhbnNpb24sIGxhYmVsLCBtb2xkKSA9PiB7bGFiZWwsIG1vbGQsIGV4cGFuc2lvbn07XG5cbi8qIEFiYnJldmlhdGlvbnMgZm9yIGV4cGFuc2lvbiBiZWhhdmlvcnMgKi9cbmxldCBzczogZXhwYW5zaW9uID0gKFN0YXRpYywgU3RhdGljKTtcbmxldCBpaTogZXhwYW5zaW9uID0gKEluc3RhbnQsIEluc3RhbnQpO1xubGV0IGlzOiBleHBhbnNpb24gPSAoSW5zdGFudCwgU3RhdGljKTtcbmxldCBkczogZXhwYW5zaW9uID0gKERlbGF5ZWQsIFN0YXRpYyk7XG5cbmxldCBta19pbmZpeCA9ICh0OiBUb2tlbi50LCBzb3J0OiBTb3J0LnQsIHByZWMpID0+XG4gIG1rKHNzLCBbdF0sIG1rX2JpbihwcmVjLCBzb3J0LCBbXSkpO1xuXG4vKiBUb2tlbiBSZWNvZ25pdGlvbiBQcmVkaWNhdGVzICovXG5cbi8qIEEuIFNlY29uZGFyeSBOb3RhdGlvbiAoQ29tbWVudHMsIFdoaXRlc3BhY2UsIGV0Yy4pICAqL1xubGV0IHNwYWNlID0gXCIgXCI7XG4vKiBIQUNLKGFuZHJldyk6IFVzaW5nIOKPjiBjaGFyIHRvIHJlcHJlc2VudCBsaW5lYnJlYWsgdG8gYXZvaWQgcmVnZXhwXG4gICBpc3N1ZXMgd2l0aCB1c2luZyBcXG4uIFNvbWVvbmUgd2hvIHVuZGVyc3RhbmRzIHJlZ2V4cHMgYmV0dGVyXG4gICBzaG91bGQgZml4IHRoaXMuICovXG5sZXQgbGluZWJyZWFrID0gXCLij45cIjtcbmxldCBjb21tZW50X3JlZ2V4cCA9IFwiXiNbXiPij45dKiMkXCI7IC8qIE11bHRpbGluZSBjb21tZW50cyBub3Qgc3VwcG9ydGVkICovXG5sZXQgaXNfY29tbWVudCA9IHQgPT4gcmVnZXhwKGNvbW1lbnRfcmVnZXhwLCB0KSB8fCB0ID09IFwiI1wiO1xubGV0IGlzX2NvbW1lbnRfZGVsaW0gPSB0ID0+IHQgPT0gXCIjXCI7XG5sZXQgaXNfc2Vjb25kYXJ5ID0gdCA9PlxuICBMaXN0Lm1lbSh0LCBbc3BhY2UsIGxpbmVicmVha10pIHx8IHJlZ2V4cChjb21tZW50X3JlZ2V4cCwgdCk7XG5cbi8qIFNUUklOR1M6IHNwZWNpYWwtY2FzZSBzeW50YXggKi9cblxuLyogaXNfc3RyaW5nOiBsYXN0IGNsYXVzZSBpcyBhIHNvbWV3aGF0IGhhY2t5IHdheSBvZiBtYWtpbmcgc3VyZVxuICAgdGhlcmUgYXJlIGF0IG1vc3QgdHdvIHF1b3RlcywgaW4gb3JkZXIgdG8gcHJldmVudCBtZXJnZXMgKi9cbmxldCBpc19zdHJpbmcgPSB0ID0+XG4gIHJlZ2V4cChcIl5cXFwiW17ij45dKlxcXCIkXCIsIHQpXG4gICYmIExpc3QubGVuZ3RoKFN0cmluZy5zcGxpdF9vbl9jaGFyKCdcIicsIHQpKSA8IDQ7XG5sZXQgc3RyaW5nX2RlbGltID0gXCJcXFwiXCI7XG5sZXQgZW1wdHlfc3RyaW5nID0gc3RyaW5nX2RlbGltICsrIHN0cmluZ19kZWxpbTtcbmxldCBpc19zdHJpbmdfZGVsaW0gPSAoPT0pKHN0cmluZ19kZWxpbSk7XG5sZXQgc3RyaXBfcXVvdGVzID0gcyA9PlxuICBpZiAoU3RyaW5nLmxlbmd0aChzKSA8IDIpIHtcbiAgICBzO1xuICB9IGVsc2UgaWYgKFN0cmluZy5zdWIocywgMCwgMSkgIT0gXCJcXFwiXCJcbiAgICAgICAgICAgICB8fCBTdHJpbmcuc3ViKHMsIFN0cmluZy5sZW5ndGgocykgLSAxLCAxKSAhPSBcIlxcXCJcIikge1xuICAgIHM7XG4gIH0gZWxzZSB7XG4gICAgU3RyaW5nLnN1YihzLCAxLCBTdHJpbmcubGVuZ3RoKHMpIC0gMik7XG4gIH07XG5sZXQgc3RyaW5nX3F1b3RlID0gcyA9PiBcIlxcXCJcIiArKyBzICsrIFwiXFxcIlwiO1xuXG5sZXQga2V5d29yZHMgPSBbXG4gIFwiZnVuXCIsXG4gIFwibGV0XCIsXG4gIFwiaW5cIixcbiAgXCJ0eXBlXCIsXG4gIFwiY2FzZVwiLFxuICBcInRlc3RcIixcbiAgXCJpZlwiLFxuICBcInRoZW5cIixcbiAgXCJlbHNlXCIsXG5dO1xubGV0IHJlc2VydmVkX2tleXdvcmRzID0gW1wib2ZcIiwgXCJ3aGVuXCIsIFwid2l0aFwiLCBcInN3aXRjaFwiLCBcIm1hdGNoXCJdO1xubGV0IGlzX2tleXdvcmQgPSByZWdleHAoXCJeKFwiICsrIFN0cmluZy5jb25jYXQoXCJ8XCIsIGtleXdvcmRzKSArKyBcIikkXCIpO1xubGV0IGlzX3Jlc2VydmVkX2tleXdvcmQgPVxuICByZWdleHAoXCJeKFwiICsrIFN0cmluZy5jb25jYXQoXCJ8XCIsIHJlc2VydmVkX2tleXdvcmRzKSArKyBcIikkXCIpO1xuXG4vKiBQb3RlbnRpYWwgdG9rZW5zOiBUaGVzZSBhcmUgZmFsbHRocm91Z2ggY2xhc3NlcyB3aGljaCBkZXRlcm1pbmVcbiAqIHRoZSBiZWhhdmlvciB3aGVuIGluc2VydGluZyBhIGNoYXJhY3RlciBpbiBjb250YWN0IHdpdGggYSB0b2tlbiAqL1xubGV0IGlzX3BvdGVudGlhbF9vcGVyYW5kID0gcmVnZXhwKFwiXlthLXpBLVowLTlfJ1xcXFwuP10rJFwiKTtcbi8qIEFueXRoaW5nIGVsc2UgaXMgY29uc2lkZXJlZCBhIHBvdGVudGlhbCBvcGVyYXRvciwgYXMgbG9uZ1xuICogIGFzIGl0IGRvZXMgbm90IGNvbnRhaW4gYW55IHdoaXRlc3BhY2UsIGxpbmVicmVha3MsIGNvbW1lbnRcbiAqICBkZWxpbWl0ZXJzLCBzdHJpbmcgZGVsaW1pdGVycywgb3IgdGhlIGluc3RhbnQgZXhwYW5kaW5nIHBhaXJlZFxuICogIGRlbGltaXRlcnM6ICgpW118ICovXG5sZXQgaXNfcG90ZW50aWFsX29wZXJhdG9yID0gcmVnZXhwKFwiXlteYS16QS1aMC05Xyc/XFxcIiPij45cXFxcc1xcXFxbXFxcXF1cXFxcKFxcXFwpXSskXCIpO1xubGV0IGlzX3BvdGVudGlhbF90b2tlbiA9IHQgPT5cbiAgaXNfcG90ZW50aWFsX29wZXJhbmQodClcbiAgfHwgaXNfcG90ZW50aWFsX29wZXJhdG9yKHQpXG4gIHx8IGlzX3N0cmluZyh0KVxuICB8fCBpc19jb21tZW50KHQpO1xuXG5sZXQgaXNfYXJiaXRhcnlfaW50ID0gcmVnZXhwKFwiXi0/XFxcXGQrWzAtOV9dKiRcIik7XG5sZXQgaXNfYXJiaXRhcnlfZmxvYXQgPSB4ID0+XG4gIHggIT0gXCIuXCIgJiYgeCAhPSBcIi1cIiAmJiByZWdleHAoXCJeLT9bMC05XSpcXFxcLj9bMC05XSooKGV8RSktP1swLTldKik/JFwiLCB4KTtcbmxldCBpc19pbnQgPSBzdHIgPT4gaXNfYXJiaXRhcnlfaW50KHN0cikgJiYgaW50X29mX3N0cmluZ19vcHQoc3RyKSAhPSBOb25lO1xuLyogTk9URTogVGhlIGlzX2FyYml0YXJ5X2ludCBjaGVjayBpcyBuZWNlc3NhcnkgdG8gcHJldmVudFxuICAgbWludXNlcyBmcm9tIGJlaW5nIHBhcnNlZCBhcyBwYXJ0IG9mIHRoZSBpbnQgdG9rZW4uICovXG5cbmxldCBpc19iYWRfaW50ID0gc3RyID0+IGlzX2FyYml0YXJ5X2ludChzdHIpICYmICFpc19pbnQoc3RyKTtcblxuLyogTk9URTogQXMgd2VsbCBhcyBtYWtpbmcgaXNfZmxvYXQgIGRpc2pvaW50IGZyb20gaXNfaW50LFxuICAgdGhlIGlzX2FyYml0YXJ5X2ludCAgYWxzbyBwcmV2ZW50cyBpbnRzIG92ZXIgaW50X21heCBmcm9tIGJlaW5nXG4gICBjYXN0IGFzIGZsb2F0cy4gVGhlIGlzX2FyYml0YXJ5X2Zsb2F0IGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50XG4gICBtaW51c2VzIGZyb20gYmVpbmcgcGFyc2VkIGFzIHBhcnQgb2YgdGhlIGZsb2F0IHRva2VuLiAqL1xubGV0IGlzX2Zsb2F0ID0gc3RyID0+XG4gICFpc19hcmJpdGFyeV9pbnQoc3RyKVxuICAmJiBpc19hcmJpdGFyeV9mbG9hdChzdHIpXG4gICYmIGZsb2F0X29mX3N0cmluZ19vcHQoc3RyKSAhPSBOb25lO1xubGV0IGlzX2JhZF9mbG9hdCA9IHN0ciA9PiBpc19hcmJpdGFyeV9mbG9hdChzdHIpICYmICFpc19mbG9hdChzdHIpO1xubGV0IGJvb2xzID0gW1widHJ1ZVwiLCBcImZhbHNlXCJdO1xubGV0IGlzX2Jvb2wgPSByZWdleHAoXCJeKFwiICsrIFN0cmluZy5jb25jYXQoXCJ8XCIsIGJvb2xzKSArKyBcIikkXCIpO1xuXG5sZXQgaXNfdmFyID0gc3RyID0+XG4gICFpc19ib29sKHN0cilcbiAgJiYgc3RyICE9IFwiX1wiXG4gIC8vJiYgIWlzX2tleXdvcmQoc3RyKVxuICAvLyYmICFpc19yZXNlcnZlZChzdHIpXG4gICYmIHJlZ2V4cChcbiAgICAgICB7fCheW2Etel9dW0EtWmEtejAtOV8nXSokKXwoXltBLVpdW0EtWmEtejAtOV8nXSpcXC5bYS16XVtBLVphLXowLTlfJ10qJCl8fSxcbiAgICAgICBzdHIsXG4gICAgICk7XG5sZXQgaXNfY2FwaXRhbGl6ZWRfbmFtZSA9IHJlZ2V4cChcIl5bQS1aXVtBLVphLXowLTlfXSokXCIpO1xubGV0IGlzX2N0ciA9IGlzX2NhcGl0YWxpemVkX25hbWU7XG5sZXQgYmFzZV90eXBzID0gW1wiU3RyaW5nXCIsIFwiSW50XCIsIFwiRmxvYXRcIiwgXCJCb29sXCJdO1xubGV0IGlzX2Jhc2VfdHlwID0gcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCBiYXNlX3R5cHMpICsrIFwiKSRcIik7XG5sZXQgaXNfdHlwX3ZhciA9IGlzX2NhcGl0YWxpemVkX25hbWU7XG5sZXQgd2lsZCA9IFwiX1wiO1xubGV0IGlzX3dpbGQgPSByZWdleHAoXCJeXCIgKysgd2lsZCArKyBcIiRcIik7XG5cbi8qIExpc3QgbGl0ZXJhbHMgKi9cbmxldCBsaXN0X3N0YXJ0ID0gXCJbXCI7XG5sZXQgbGlzdF9lbmQgPSBcIl1cIjtcbmxldCBsaXN0bGl0X2xibCA9IFtsaXN0X3N0YXJ0LCBsaXN0X2VuZF07XG5sZXQgZW1wdHlfbGlzdCA9IGxpc3Rfc3RhcnQgKysgbGlzdF9lbmQ7XG5sZXQgaXNfZW1wdHlfbGlzdCA9ICg9PSkoZW1wdHlfbGlzdCk7XG5cbi8qIFR1cGxlcyAqL1xubGV0IHR1cGxlX3N0YXJ0ID0gXCIoXCI7XG5sZXQgdHVwbGVfZW5kID0gXCIpXCI7XG5sZXQgdHVwbGVfbGJsID0gW3R1cGxlX3N0YXJ0LCB0dXBsZV9lbmRdO1xubGV0IGVtcHR5X3R1cGxlID0gdHVwbGVfc3RhcnQgKysgdHVwbGVfZW5kO1xubGV0IGlzX2VtcHR5X3R1cGxlID0gKD09KShlbXB0eV90dXBsZSk7XG5cbi8qIFRoZXNlIGZ1bmN0aW9ucyBkZXRlcm1pbmUgd2hpY2ggZm9ybXMgY2FuIHN3aXRjaCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuXG4gICBtb25vIGFuZCBkdW90aWxlIGZvcm1zLCBsaWtlIGxpc3QgbGl0ZXJhbHMgYW5kIHR1cGxlcyBzd2l0Y2hpbmcgdG8vZnJvbVxuICAgdGhlIGVtcHR5IGxpc3QgYW5kIGVtcHR5IHR1cGxlLiBUZWNobmljYWxseSB0aGlzIHNob3VsZCBiZSBkZXJpdmFibGUgZnJvbVxuICAgdGhlIGxhbmd1YWdlIGRhdGE7IGxlYXZpbmcgdGhhdCBmb3IgYSBmdXR1cmUgcmVmYWN0b3IuICovXG5sZXQgZHVvc3BsaXRzID0gKHQ6IFRva2VuLnQpOiBMYWJlbC50ID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuIGlzX2VtcHR5X2xpc3QodCkgPT4gbGlzdGxpdF9sYmxcbiAgfCBfIHdoZW4gaXNfZW1wdHlfdHVwbGUodCkgPT4gdHVwbGVfbGJsXG4gIHwgXyA9PiBbXVxuICB9O1xuXG5sZXQgZHVvbWVyZ2VzID0gKGxibDogTGFiZWwudCk6IG9wdGlvbihMYWJlbC50KSA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiBsYmwgPT0gbGlzdGxpdF9sYmwgPT4gU29tZShbZW1wdHlfbGlzdF0pXG4gIHwgXyB3aGVuIGxibCA9PSB0dXBsZV9sYmwgPT4gU29tZShbZW1wdHlfdHVwbGVdKVxuICB8IF8gPT4gTm9uZVxuICB9O1xuXG4vL1RPRE8oYW5kcmV3KTogcmVmYWN0b3IgYXRvbWljX2Zvcm1zIHRvIHNlcGVyYXRlIHRoZXNlIG91dFxubGV0IGNvbnN0X21vbm9fZGVsaW1zID1cbiAgYmFzZV90eXBzIEAgYm9vbHMgQCBbd2lsZCwgZW1wdHlfbGlzdCwgZW1wdHlfdHVwbGUsIGVtcHR5X3N0cmluZ107XG5cbmxldCBleHBsaWNpdF9ob2xlID0gXCI/XCI7XG5sZXQgaXNfZXhwbGljaXRfaG9sZSA9IHQgPT4gdCA9PSBleHBsaWNpdF9ob2xlO1xubGV0IGJhZF90b2tlbl9jbHM6IHN0cmluZyA9PiBiYWRfdG9rZW5fY2xzID1cbiAgdCA9PlxuICAgIHN3aXRjaCAoKSB7XG4gICAgfCBfIHdoZW4gaXNfYmFkX2ludCh0KSA9PiBCYWRJbnRcbiAgICB8IF8gPT4gT3RoZXJcbiAgICB9O1xuXG4vKiBCLiBPcGVyYW5kczpcbiAgIE9yZGVyIGluIHRoaXMgbGlzdCBkZXRlcm1pbmVzIHJlbGF0aXZlIHJlbW9sZGluZ1xuICAgcHJpb3JpdHkgZm9yIGZvcm1zIHdpdGggb3ZlcmxhcHBpbmcgcmVnZXhwcyAqL1xubGV0IGF0b21pY19mb3JtczogbGlzdCgoc3RyaW5nLCAoc3RyaW5nID0+IGJvb2wsIGxpc3QoTW9sZC50KSkpKSA9IFtcbiAgKFwidmFyXCIsIChpc192YXIsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcbiAgICBcImV4cGxpY2l0X2hvbGVcIixcbiAgICAoXG4gICAgICBpc19leHBsaWNpdF9ob2xlLFxuICAgICAgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKSwgbWtfb3AoVHlwLCBbXSksIG1rX29wKFRQYXQsIFtdKV0sXG4gICAgKSxcbiAgKSxcbiAgKFwid2lsZFwiLCAoaXNfd2lsZCwgW21rX29wKFBhdCwgW10pXSkpLFxuICAoXCJzdHJpbmdcIiwgKGlzX3N0cmluZywgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiaW50X2xpdFwiLCAoaXNfaW50LCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJmbG9hdF9saXRcIiwgKGlzX2Zsb2F0LCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJib29sX2xpdFwiLCAoaXNfYm9vbCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiZW1wdHlfbGlzdFwiLCAoaXNfZW1wdHlfbGlzdCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFxuICAgIFwiZW1wdHlfdHVwbGVcIixcbiAgICAoaXNfZW1wdHlfdHVwbGUsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSksIG1rX29wKFR5cCwgW10pXSksXG4gICksXG4gIChcInR5X3ZhclwiLCAoaXNfdHlwX3ZhciwgW21rX29wKFR5cCwgW10pXSkpLFxuICAoXCJ0eV92YXJfcFwiLCAoaXNfdHlwX3ZhciwgW21rX29wKFRQYXQsIFtdKV0pKSxcbiAgKFwiY3RyXCIsIChpc19jdHIsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcInR5cGVcIiwgKGlzX2Jhc2VfdHlwLCBbbWtfb3AoVHlwLCBbXSldKSksXG5dO1xuXG4vKiBDLiBDb21wb3VuZCBGb3JtczpcbiAgIE9yZGVyIGluIHRoaXMgbGlzdCBkZXRlcm1pbmVzIHJlbGF0aXZlIHJlbW9sZGluZ1xuICAgcHJpb3JpdHkgZm9yIGZvcm1zIHdoaWNoIHNoYXJlIHRoZSBzYW1lIGxhYmVscyAqL1xuXG5sZXQgZm9ybXM6IGxpc3QoKHN0cmluZywgdCkpID0gW1xuICAvLyBJTkZJWCBPUEVSQVRPUlNcbiAgKFwidHlwX3BsdXNcIiwgbWtfaW5maXgoXCIrXCIsIFR5cCwgUC5vcl8pKSxcbiAgKFwidHlwZS1hcnJvd1wiLCBta19pbmZpeChcIi0+XCIsIFR5cCwgNikpLFxuICAoXCJjZWxsLWpvaW5cIiwgbWtfaW5maXgoXCI7XCIsIEV4cCwgMTApKSxcbiAgKFwicGx1c1wiLCBta19pbmZpeChcIitcIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwibWludXNcIiwgbWtfaW5maXgoXCItXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcInRpbWVzXCIsIG1rX2luZml4KFwiKlwiLCBFeHAsIFAubXVsdCkpLFxuICAoXCJwb3dlclwiLCBta19pbmZpeChcIioqXCIsIEV4cCwgUC5wb3dlcikpLFxuICAoXCJmcG93ZXJcIiwgbWtfaW5maXgoXCIqKi5cIiwgRXhwLCBQLnBvd2VyKSksXG4gIChcImRpdmlkZVwiLCBta19pbmZpeChcIi9cIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwiZXF1YWxzXCIsIG1rX2luZml4KFwiPT1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJzdHJpbmdfZXF1YWxzXCIsIG1rX2luZml4KFwiJD09XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwic3RyaW5nX2NvbmNhdFwiLCBta19pbmZpeChcIisrXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcImx0XCIsIG1rX2luZml4KFwiPFwiLCBFeHAsIFAuZXFzKSksXG4gIChcImd0XCIsIG1rX2luZml4KFwiPlwiLCBFeHAsIFAuZXFzKSksXG4gIChcIm5vdF9lcXVhbHNcIiwgbWtfaW5maXgoXCIhPVwiLCBFeHAsIFAuZXFzKSksXG4gIChcImd0ZVwiLCBta19pbmZpeChcIj49XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwibHRlXCIsIG1rX2luZml4KFwiPD1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmcGx1c1wiLCBta19pbmZpeChcIisuXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcImZtaW51c1wiLCBta19pbmZpeChcIi0uXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcImZ0aW1lc1wiLCBta19pbmZpeChcIiouXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcImZkaXZpZGVcIiwgbWtfaW5maXgoXCIvLlwiLCBFeHAsIFAubXVsdCkpLFxuICAoXCJmZXF1YWxzXCIsIG1rX2luZml4KFwiPT0uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZmx0XCIsIG1rX2luZml4KFwiPC5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmZ3RcIiwgbWtfaW5maXgoXCI+LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZub3RfZXF1YWxzXCIsIG1rX2luZml4KFwiIT0uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZmd0ZVwiLCBta19pbmZpeChcIj49LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZsdGVcIiwgbWtfaW5maXgoXCI8PS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJsb2dpY2FsX2FuZFwiLCBta19pbmZpeChcIiYmXCIsIEV4cCwgUC5hbmRfKSksXG4gIChcImxvZ2ljYWxfb3JfbGVnYWN5XCIsIG1rX2luZml4KFwiXFxcXC9cIiwgRXhwLCBQLm9yXykpLFxuICAoXCJsb2dpY2FsX29yXCIsIG1rX2luZml4KFwifHxcIiwgRXhwLCBQLm9yXykpLFxuICAoXCJsaXN0X2NvbmNhdFwiLCBta19pbmZpeChcIkBcIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwiY29uc19leHBcIiwgbWtfaW5maXgoXCI6OlwiLCBFeHAsIFAuY29ucykpLFxuICAoXCJjb25zX3BhdFwiLCBta19pbmZpeChcIjo6XCIsIFBhdCwgUC5jb25zKSksXG4gIChcInR5cGVhbm5cIiwgbWsoc3MsIFtcIjpcIl0sIG1rX2JpbicoUC5hbm4sIFBhdCwgUGF0LCBbXSwgVHlwKSkpLFxuICAvLyBVTkFSWSBQUkVGSVggT1BFUkFUT1JTXG4gIChcIm5vdFwiLCBtayhpaSwgW1wiIVwiXSwgbWtfcHJlKDUsIEV4cCwgW10pKSksIC8vVE9ETzogcHJlY2VkZW5jZVxuICAoXCJ0eXBfc3VtX3NpbmdsZVwiLCBtayhzcywgW1wiK1wiXSwgbWtfcHJlKFAub3JfLCBUeXAsIFtdKSkpLFxuICAoXCJ1bmFyeV9taW51c1wiLCBtayhzcywgW1wiLVwiXSwgbWtfcHJlKFAubmVnLCBFeHAsIFtdKSkpLFxuICAoXCJ1bnF1b3RlXCIsIG1rKHNzLCBbXCIkXCJdLCBta19wcmUoUC51bnF1b3RlLCBFeHAsIFtdKSkpLFxuICAvLyBOLUFSWSBPUFMgKG9uIHRoZSBzZW1hbnRpY3MgbGV2ZWwpXG4gIChcImNvbW1hX2V4cFwiLCBta19pbmZpeChcIixcIiwgRXhwLCBQLnByb2QpKSxcbiAgKFwiY29tbWFfcGF0XCIsIG1rX2luZml4KFwiLFwiLCBQYXQsIFAucHJvZCkpLFxuICAoXCJjb21tYV90eXBcIiwgbWtfaW5maXgoXCIsXCIsIFR5cCwgUC5wcm9kKSksXG4gIC8vIFBBSVJFRCBERUxJTUlURVJTOlxuICAoXCJsaXN0X2xpdF9leHBcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChFeHAsIFtFeHBdKSkpLFxuICAoXCJsaXN0X2xpdF9wYXRcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChQYXQsIFtQYXRdKSkpLFxuICAoXCJsaXN0X3R5cFwiLCBtayhpaSwgW1wiW1wiLCBcIl1cIl0sIG1rX29wKFR5cCwgW1R5cF0pKSksXG4gIC8vTk9URShhbmRyZXcpOiBwYXJlbnMgYmVpbmcgYmVsb3cgYXBzIGlzIGxvYWQtYmVhcmluZywgdW5mb3J0dW5hdGVseVxuICAoXCJwYXJlbnNfZXhwXCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwicGFyZW5zX3BhdFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX29wKFBhdCwgW1BhdF0pKSksXG4gIChcInBhcmVuc190eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19vcChUeXAsIFtUeXBdKSkpLFxuICAoXCJhcF9leHBfZW1wdHlcIiwgbWsoaWksIFtcIigpXCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW10pKSksXG4gIChcImFwX2V4cFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX3Bvc3QoUC5hcCwgRXhwLCBbRXhwXSkpKSxcbiAgKFwiYXBfcGF0XCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfcG9zdChQLmFwLCBQYXQsIFtQYXRdKSkpLFxuICAoXCJhcF90eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19wb3N0KFAuYXAsIFR5cCwgW1R5cF0pKSksXG4gIChcImNhc2VcIiwgbWsoZHMsIFtcImNhc2VcIiwgXCJlbmRcIl0sIG1rX29wKEV4cCwgW1J1bF0pKSksXG4gIChcInRlc3RcIiwgbWsoZHMsIFtcInRlc3RcIiwgXCJlbmRcIl0sIG1rX29wKEV4cCwgW0V4cF0pKSksXG4gIChcImZ1bl9cIiwgbWsoZHMsIFtcImZ1blwiLCBcIi0+XCJdLCBta19wcmUoUC5mdW5fLCBFeHAsIFtQYXRdKSkpLFxuICAoXG4gICAgXCJydWxlXCIsXG4gICAgbWsoZHMsIFtcInxcIiwgXCI9PlwiXSwgbWtfYmluJyhQLnJ1bGVfc2VwLCBSdWwsIEV4cCwgW1BhdF0sIEV4cCkpLFxuICApLFxuICAoXCJwaXBlbGluZVwiLCBta19pbmZpeChcInw+XCIsIEV4cCwgUC5lcXMpKSwgLy8gaW4gT0NhbWwsIHBpcGVsaW5lIHByZWNlZGVuY2UgaXMgaW4gc2FtZSBjbGFzcyBhcyAnPScsICc8JywgZXRjLlxuICAvLyBET1VCTEUgREVMSU1JVEVSU1xuICAoXCJmaWx0ZXJfaGlkZVwiLCBtayhkcywgW1wiaGlkZVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAoXCJmaWx0ZXJfZXZhbFwiLCBtayhkcywgW1wiZXZhbFwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAoXCJmaWx0ZXJfcGF1c2VcIiwgbWsoZHMsIFtcInBhdXNlXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9kZWJ1Z1wiLCBtayhkcywgW1wiZGVidWdcIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbRXhwXSkpKSxcbiAgLy8gVFJJUExFIERFTElNSVRFUlNcbiAgKFwibGV0X1wiLCBtayhkcywgW1wibGV0XCIsIFwiPVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtQYXQsIEV4cF0pKSksXG4gIChcbiAgICBcInR5cGVfYWxpYXNcIixcbiAgICBtayhkcywgW1widHlwZVwiLCBcIj1cIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbVFBhdCwgVHlwXSkpLFxuICApLFxuICAoXCJpZl9cIiwgbWsoZHMsIFtcImlmXCIsIFwidGhlblwiLCBcImVsc2VcIl0sIG1rX3ByZShQLmlmXywgRXhwLCBbRXhwLCBFeHBdKSkpLFxuXTtcblxubGV0IGdldDogU3RyaW5nLnQgPT4gdCA9XG4gIG5hbWUgPT4gVXRpbC5MaXN0VXRpbC5hc3NvY19lcnIobmFtZSwgZm9ybXMsIFwiRm9ybXMuZ2V0XCIpO1xuXG5sZXQgZGVsaW1zOiBsaXN0KFRva2VuLnQpID1cbiAgZm9ybXNcbiAgfD4gTGlzdC5mb2xkX2xlZnQoKGFjYywgKF8sIHtsYWJlbCwgX306IHQpKSA9PiB7bGFiZWwgQCBhY2N9LCBbXSlcbiAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbmxldCBhdG9taWNfbW9sZHM6IFRva2VuLnQgPT4gbGlzdChNb2xkLnQpID1cbiAgcyA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sICh0ZXN0LCBtb2xkcykpKSA9PiB0ZXN0KHMpID8gbW9sZHMgQCBhY2MgOiBhY2MsXG4gICAgICBbXSxcbiAgICAgIGF0b21pY19mb3JtcyxcbiAgICApO1xuXG5sZXQgaXNfYXRvbWljID0gdCA9PiBhdG9taWNfbW9sZHModCkgIT0gW107XG5cbmxldCBpc19kZWxpbSA9IHQgPT4gTGlzdC5tZW0odCwgZGVsaW1zKTtcblxubGV0IGlzX3ZhbGlkX3Rva2VuID0gdCA9PiBpc19hdG9taWModCkgfHwgaXNfc2Vjb25kYXJ5KHQpIHx8IGlzX2RlbGltKHQpO1xuXG5sZXQgbWtfYXRvbWljID0gKHNvcnQ6IFNvcnQudCwgdDogVG9rZW4udCkgPT4ge1xuICBhc3NlcnQoaXNfYXRvbWljKHQpKTtcbiAgbWsoc3MsIFt0XSwgTW9sZC4obWtfb3Aoc29ydCwgW10pKSk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjbHMgPVxuICB8IFdoaXRlc3BhY2VcbiAgfCBDb21tZW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNlY29uZGFyeV9jb250ZW50ID1cbiAgfCBXaGl0ZXNwYWNlKHN0cmluZylcbiAgfCBDb21tZW50KHN0cmluZyk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgaWQ6IElkLnQsXG4gIGNvbnRlbnQ6IHNlY29uZGFyeV9jb250ZW50LFxufTtcblxubGV0IGNsc19vZiA9IChzOiB0KTogY2xzID0+XG4gIHN3aXRjaCAocy5jb250ZW50KSB7XG4gIHwgV2hpdGVzcGFjZShfKSA9PiBXaGl0ZXNwYWNlXG4gIHwgQ29tbWVudChfKSA9PiBDb21tZW50XG4gIH07XG5cbmxldCBta19zcGFjZSA9IGlkID0+IHtjb250ZW50OiBXaGl0ZXNwYWNlKEZvcm0uc3BhY2UpLCBpZH07XG5cbmxldCBjb25zdHJ1Y3RfY29tbWVudCA9IGNvbnRlbnQgPT5cbiAgaWYgKFN0cmluZy5lcXVhbChjb250ZW50LCBcIiNcIikpIHtcbiAgICBDb21tZW50KFwiIyNcIik7XG4gIH0gZWxzZSB7XG4gICAgQ29tbWVudChjb250ZW50KTtcbiAgfTtcblxubGV0IGlzX3NwYWNlOiB0ID0+IGJvb2wgPVxuICB3ID0+XG4gICAgc3dpdGNoICh3LmNvbnRlbnQpIHtcbiAgICB8IFdoaXRlc3BhY2UocykgPT4gcyA9PSBGb3JtLnNwYWNlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2xpbmVicmVhazogdCA9PiBib29sID1cbiAgdyA9PlxuICAgIHN3aXRjaCAody5jb250ZW50KSB7XG4gICAgfCBXaGl0ZXNwYWNlKHMpID0+IHMgPT0gRm9ybS5saW5lYnJlYWtcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuXG5sZXQgY29udGVudF9pc19jb21tZW50OiBzZWNvbmRhcnlfY29udGVudCA9PiBib29sID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2NvbW1lbnQ6IHQgPT4gYm9vbCA9XG4gIHcgPT5cbiAgICBzd2l0Y2ggKHcuY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxuLy8gUmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBXaGl0ZXNwYWNlXG5sZXQgZ2V0X3N0cmluZzogc2Vjb25kYXJ5X2NvbnRlbnQgPT4gc3RyaW5nID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChzKVxuICAgIHwgV2hpdGVzcGFjZShzKSA9PiBzXG4gICAgfTtcblxubGV0IGlkID0gdyA9PiB3LmlkO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWdtZW50ID0gbGlzdChwaWVjZSlcbmFuZCBwaWVjZSA9XG4gIHwgVGlsZSh0aWxlKVxuICB8IEdyb3V0KEdyb3V0LnQpXG4gIHwgU2Vjb25kYXJ5KFNlY29uZGFyeS50KVxuYW5kIHRpbGUgPSB7XG4gIC8vIGludmFyaWFudHM6XG4gIC8vIC0gbGVuZ3RoKG1vbGQuaW5fKSArIDEgPT0gbGVuZ3RoKGxhYmVsKVxuICAvLyAtIGxlbmd0aChzaGFyZHMpIDw9IGxlbmd0aChsYWJlbClcbiAgLy8gLSBsZW5ndGgoc2hhcmRzKSA9PSBsZW5ndGgoY2hpbGRyZW4pICsgMVxuICAvLyAtIHNvcnQoc2hhcmRzKSA9PSBzaGFyZHNcbiAgaWQ6IElkLnQsXG4gIGxhYmVsOiBMYWJlbC50LFxuICBtb2xkOiBNb2xkLnQsXG4gIHNoYXJkczogbGlzdChpbnQpLFxuICBjaGlsZHJlbjogbGlzdChzZWdtZW50KSxcbn07XG5cbi8vIFRoaXMgaXMgZm9yIGNvbW1lbnQgaW5zZXJ0aW9uXG5sZXQgbWtfc2Vjb25kYXJ5ID0gKGlkLCBjb250ZW50KSA9PiBbU2Vjb25kYXJ5KHtpZCwgY29udGVudH0pXTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgVG91Y2goSWQudClcbiAgfCBEZWxldGUoSWQudCk7XG5cbi8vIHVzZWQgdG8gcmVjb3JkIGVmZmVjdHMgb3ZlciB0aGUgY291cnNlIG9mIGEgc2luZ2xlIGFjdGlvblxubGV0IHM6IHJlZihsaXN0KHQpKSA9IHJlZihbXSk7XG5sZXQgc19jbGVhciA9ICgpID0+IHMgOj0gW107XG5sZXQgc190b3VjaCA9IChpZHM6IGxpc3QoSWQudCkpID0+XG4gIHMgOj0gTGlzdC5tYXAoaWQgPT4gVG91Y2goaWQpLCBpZHMpIEAgc147XG5cbmxldCBzX3RvdWNoZWQgPSAoaWQ6IElkLnQpOiBib29sID0+IExpc3QubWVtKFRvdWNoKGlkKSwgc14pO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHBhbnNpb25zID0gbGlzdCgoVG9rZW4udCwgKGxpc3QoVG9rZW4udCksIERpcmVjdGlvbi50KSkpO1xuXG5sZXQgZm9ybXNfYXNzb2M6IGxpc3QoKExhYmVsLnQsIGxpc3QoTW9sZC50KSkpID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKGFjYywgKF8sIHtsYWJlbCwgbW9sZCwgX306IEZvcm0udCkpID0+IHtcbiAgICAgIGxldCBtb2xkcyA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQobGFiZWwsIGFjYykpIHtcbiAgICAgICAgfCBTb21lKG9sZF9tb2xkcykgPT4gb2xkX21vbGRzIEAgW21vbGRdXG4gICAgICAgIHwgTm9uZSA9PiBbbW9sZF1cbiAgICAgICAgfTtcbiAgICAgIExpc3QuY29ucygobGFiZWwsIG1vbGRzKSwgTGlzdC5yZW1vdmVfYXNzb2MobGFiZWwsIGFjYykpO1xuICAgIH0sXG4gICAgW10sXG4gICAgRm9ybS5mb3JtcyxcbiAgKTtcblxubGV0IGdldCA9IChsYWJlbDogTGFiZWwudCk6IGxpc3QoTW9sZC50KSA9PlxuICBzd2l0Y2ggKGxhYmVsLCBMaXN0LmFzc29jX29wdChsYWJlbCwgZm9ybXNfYXNzb2MpKSB7XG4gIHwgKFt0XSwgU29tZShtb2xkcykpIHdoZW4gRm9ybS5hdG9taWNfbW9sZHModCkgIT0gW10gPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IGRvZXMgdGhpcyBtYWtlIHNlbnNlP1xuICAgIEZvcm0uYXRvbWljX21vbGRzKHQpIEAgbW9sZHNcbiAgfCAoW3RdLCBOb25lKSB3aGVuIEZvcm0uYXRvbWljX21vbGRzKHQpICE9IFtdID0+IEZvcm0uYXRvbWljX21vbGRzKHQpXG4gIHwgKF8sIFNvbWUobW9sZHMpKSA9PiBtb2xkc1xuICB8IChbdF0sIE5vbmUpID0+XG4gICAgLyogRm9yIHRva2VucyB3aGljaCBhcmUgbm90IGFzc2lnbmVkIG1vbGRzIGJ5IHRoZSBsYW5ndWFnZSBkZWZpbml0aW9uLFxuICAgICAgIGFzc2luZyBhIGRlZmF1bHQgJ0FueScgbW9sZCwgd2hpY2ggaXMgZWl0aGVyIGNvbnZleCBvciBjb25jYXZlXG4gICAgICAgZGVwZW5kaW5nIG9uIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIFRoaXMgaXMgYSBoZXVyaXN0aWMgYXQgdGhlXG4gICAgICAgbW9tZW50IGFzIHdlIGRvbid0IGN1cnJlbnRseSByaWdvcm91c2x5IGRpdmlkZSB0b2tlbiBjbGFzc2VzXG4gICAgICAgZm9yIG9wZXJhdG9ycyB2cyBvcGVyYW5kcywgYnV0IGlzIHNvbWV3aGF0IGxvYWQtYmVhcmluZyBpbiB0aGF0XG4gICAgICAgcmVtb2xkaW5nIGFzIG9uZSBpcyB0eXBpbmcgaW4gYSBtdWx0aS1jaGFyYWN0ZXIgb3BlcmF0b3IgY2FuIGNhdXNlXG4gICAgICAgamFuaywgd2hpY2ggaXMgYWxsZXZpYXRlZCBpZiB3ZSBjb3JyZWN0bHkgZ3Vlc3MgdGhhdCBpdCB3aWxsXG4gICAgICAgYmVjb21lIGFuIG9wZXJhdG9yLiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGNvdWxkIGJlIGJhc2VkIG9uXG4gICAgICAgbG9naWMgd2hpY2ggY2hlY2tzIGlmIHRoZSB0b2tlbiBpcyB0aGUgcHJlZml4IG9mIHdoYXRldmVyLiAqL1xuICAgIHN3aXRjaCAoRm9ybS5pc19wb3RlbnRpYWxfb3BlcmFuZCh0KSwgRm9ybS5pc19wb3RlbnRpYWxfb3BlcmF0b3IodCkpIHtcbiAgICB8ICh0cnVlLCBmYWxzZSkgPT4gW01vbGQubWtfb3AoQW55LCBbXSldXG4gICAgfCAoZmFsc2UsIHRydWUpID0+IFtNb2xkLm1rX2JpbihQcmVjZWRlbmNlLm1heCwgQW55LCBbXSldXG4gICAgfCAodHJ1ZSwgdHJ1ZSkgPT5cbiAgICAgIFByaW50Zi5wcmludGYoXG4gICAgICAgIFwiV2FybmluZzogTW9sZHMuZ2V0OiBjYW4ndCBkZWNpZGUgaWYgb3BlcmFuZCBvciBvcGVyYXRvcjogJyVzJ1xcblwiLFxuICAgICAgICB0LFxuICAgICAgKTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXTtcbiAgICB8IChmYWxzZSwgZmFsc2UpID0+XG4gICAgICAvL1RPRE8oYW5kcmV3KTogdGhpcyBpcyB0cmlnZ2VyZWQgaW4gYWxsIGluc3RhbnQgZXhwYW5kIGNhc2VzIChbXSgpfCwgZXRjKVxuICAgICAgLy9QcmludGYucHJpbnRmKFwiV2FybmluZzogTW9sZHMuZ2V0OiB1bmhhbmRsZWQgbW9ubzogJyVzJ1xcblwiLCB0KTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXVxuICAgIH1cbiAgfCAobGJsLCBOb25lKSA9PlxuICAgIFByaW50Zi5wcmludGYoXG4gICAgICBcIldhcm5pbmc6IE1vbGRzLmdldDogdW5oYW5kbGVkIGxhYmVsOiAnJXMnXFxuXCIsXG4gICAgICBTdHJpbmcuY29uY2F0KFwiIFwiLCBsYmwpLFxuICAgICk7XG4gICAgW01vbGQubWtfb3AoQW55LCBbXSldO1xuICB9O1xuXG5sZXQgZGVsYXllZF9leHBhbnNpb25zOiBleHBhbnNpb25zID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgoXywge2V4cGFuc2lvbiwgbGFiZWwsIF99OiBGb3JtLnQpKSA9PlxuICAgICAgc3dpdGNoIChleHBhbnNpb24sIGxhYmVsKSB7XG4gICAgICB8ICgoRGVsYXllZCwgRGVsYXllZCksIFtoZCwgLi4uX10pID0+XG4gICAgICAgIFNvbWUoW1xuICAgICAgICAgIChoZCwgKGxhYmVsLCBEaXJlY3Rpb24uTGVmdCkpLFxuICAgICAgICAgIChMaXN0VXRpbC5sYXN0KGxhYmVsKSwgKGxhYmVsLCBSaWdodCkpLFxuICAgICAgICBdKVxuICAgICAgfCAoKERlbGF5ZWQsIF8pLCBbaGQsIC4uLl9dKSA9PiBTb21lKFsoaGQsIChsYWJlbCwgTGVmdCkpXSlcbiAgICAgIHwgKChfLCBEZWxheWVkKSwgW18sIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFsoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKV0pXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfSxcbiAgICBGb3JtLmZvcm1zLFxuICApXG4gIHw+IExpc3QuZmxhdHRlblxuICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uczogZXhwYW5zaW9ucyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICAoKF8sIHtleHBhbnNpb24sIGxhYmVsLCBffTogRm9ybS50KSkgPT5cbiAgICAgIHN3aXRjaCAoZXhwYW5zaW9uLCBsYWJlbCkge1xuICAgICAgfCAoKEluc3RhbnQsIEluc3RhbnQpLCBbaGQsIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFtcbiAgICAgICAgICAoaGQsIChsYWJlbCwgRGlyZWN0aW9uLkxlZnQpKSxcbiAgICAgICAgICAoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKSxcbiAgICAgICAgXSlcbiAgICAgIHwgKChJbnN0YW50LCBfKSwgW2hkLCAuLi5fXSkgPT4gU29tZShbKGhkLCAobGFiZWwsIExlZnQpKV0pXG4gICAgICB8ICgoXywgSW5zdGFudCksIFtfLCAuLi5fXSkgPT5cbiAgICAgICAgU29tZShbKExpc3RVdGlsLmxhc3QobGFiZWwpLCAobGFiZWwsIFJpZ2h0KSldKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH0sXG4gICAgRm9ybS5mb3JtcyxcbiAgKVxuICB8PiBMaXN0LmZsYXR0ZW5cbiAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbmxldCBkZWxheWVkX2V4cGFuc2lvbjogVG9rZW4udCA9PiAobGlzdChUb2tlbi50KSwgRGlyZWN0aW9uLnQpID1cbiAgcyA9PlxuICAgIC8qIENvbXBsZXRpb25zIHdoaWNoIG11c3QgYmUgZGVmZXJlZCBhcyB0aGV5IGFyZSBhbWJpZ3VvdXMgcHJlZml4ZXMgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGRlbGF5ZWRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uOiBUb2tlbi50ID0+IChsaXN0KFRva2VuLnQpLCBEaXJlY3Rpb24udCkgPVxuICBzID0+XG4gICAgLyogQ29tcGxldGlvbnMgd2hpY2ggY2FuIG9yIG11c3QgYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGluc3RhbnRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGlzX2RlbGF5ZWQgPSBrdyA9PiBMaXN0Lmxlbmd0aChkZWxheWVkX2V4cGFuc2lvbihrdykgfD4gZnN0KSA+IDE7XG5cbmxldCBhbGxvd19tZXJnZSA9IChsOiBUb2tlbi50LCByOiBUb2tlbi50KTogYm9vbCA9PlxuICBGb3JtLmlzX3BvdGVudGlhbF90b2tlbihsICsrIHIpO1xuXG5sZXQgYWxsb3dfYXBwZW5kX3JpZ2h0ID0gKHQ6IFRva2VuLnQsIGNoYXI6IHN0cmluZyk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2FwcGVuZF9sZWZ0ID0gKGNoYXI6IHN0cmluZywgdDogVG9rZW4udCk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2luc2VydGlvbiA9IChfY2hhcjogc3RyaW5nLCBfdDogVG9rZW4udCwgbmV3X3Q6IFRva2VuLnQpOiBib29sID0+XG4gIEZvcm0uaXNfcG90ZW50aWFsX3Rva2VuKG5ld190KTtcbiIsIm9wZW4gVXRpbDtcbmluY2x1ZGUgQmFzZTtcblxuZXhjZXB0aW9uIEFtYmlndW91c19tb2xkcztcbmV4Y2VwdGlvbiBJbnZhbGlkX21vbGQ7XG5leGNlcHRpb24gRW1wdHlfdGlsZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gdGlsZTtcblxubGV0IGlkID0gdCA9PiB0LmlkO1xuXG5sZXQgaXNfY29tcGxldGUgPSAodDogdCkgPT4gTGlzdC5sZW5ndGgodC5sYWJlbCkgPT0gTGlzdC5sZW5ndGgodC5zaGFyZHMpO1xuXG5sZXQgbF9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwuaGRfb3B0KHQuc2hhcmRzKSk7XG5sZXQgcl9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwubGFzdF9vcHQodC5zaGFyZHMpKTtcblxubGV0IGhhc19lbmQgPSAoZDogRGlyZWN0aW9uLnQsIHQpID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gbF9zaGFyZCh0KSA9PSAwXG4gIHwgUmlnaHQgPT4gcl9zaGFyZCh0KSA9PSBMaXN0Lmxlbmd0aCh0LmxhYmVsKSAtIDFcbiAgfTtcbmxldCBoYXNfZW5kcyA9IHQgPT4gaGFzX2VuZChMZWZ0LCB0KSAmJiBoYXNfZW5kKFJpZ2h0LCB0KTtcblxubGV0IG5pYnMgPSAodDogdCkgPT4ge1xuICBsZXQgKGwsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1sX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICBsZXQgKF8sIHIpID0gTW9sZC5uaWJzKH5pbmRleD1yX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICAobCwgcik7XG59O1xuXG5sZXQgc2hhcGVzID0gKHQ6IHQpID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnModCk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB0b19waWVjZSA9IHQgPT4gVGlsZSh0KTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9ICh7bW9sZCwgc2hhcmRzLCBjaGlsZHJlbiwgX306IHQpID0+XG4gIEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgKF8sIGwpID0gTW9sZC5uaWJzKH5pbmRleD1sLCBtb2xkKTtcbiAgICAgICBsZXQgKHIsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1yLCBtb2xkKTtcbiAgICAgICAobC5zb3J0ID09IHIuc29ydCA/IGwuc29ydCA6IEFueSwgY2hpbGQpO1xuICAgICB9KTtcblxubGV0IGNvbnRhaW5lZF9jaGlsZHJlbiA9ICh0OiB0KTogbGlzdCgodCwgQmFzZS5zZWdtZW50LCB0KSkgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgbCA9IHsuLi50LCBzaGFyZHM6IFtsXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICBsZXQgciA9IHsuLi50LCBzaGFyZHM6IFtyXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICAobCwgY2hpbGQsIHIpO1xuICAgICB9KTtcblxuLy8gbGV0IHJlbW9sZCA9ICh0OiB0KTogbGlzdCh0KSA9PlxuLy8gICBNb2xkcy5nZXQodC5sYWJlbCkgfD4gTGlzdC5tYXAobW9sZCA9PiB7Li4udCwgbW9sZH0pO1xuXG5sZXQgc3BsaXRfc2hhcmRzID0gKGlkLCBsYWJlbCwgbW9sZCwgc2hhcmRzKSA9PlxuICBzaGFyZHMgfD4gTGlzdC5tYXAoaSA9PiB7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHM6IFtpXSwgY2hpbGRyZW46IFtdfSk7XG5cbi8vIHBvc3Rjb25kOiBvdXRwdXQgc2VnbWVudCBpcyBub25lbXB0eVxubGV0IGRpc2Fzc2VtYmxlID0gKHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcywgY2hpbGRyZW59OiB0KTogc2VnbWVudCA9PiB7XG4gIGxldCBzaGFyZHMgPSBzcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMpO1xuICBBYmEubWsoc2hhcmRzLCBjaGlsZHJlbilcbiAgfD4gQWJhLmpvaW4ocyA9PiBbdG9fcGllY2UocyldLCBGdW4uaWQpXG4gIHw+IExpc3QuY29uY2F0O1xufTtcblxubGV0IGRpc2ludGVncmF0ZSA9ICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIF99OiB0KTogbGlzdCh0aWxlKSA9PiB7XG4gIHNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcyk7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaDogQWJhLnQodCwgc2VnbWVudCkpOiB0ID0+IHtcbiAgbGV0IHQgPSBBYmEuaGQobWF0Y2gpO1xuICBsZXQgKHNoYXJkcywgY2hpbGRyZW4pID1cbiAgICBtYXRjaFxuICAgIHw+IEFiYS5mb2xkX3JpZ2h0KFxuICAgICAgICAgKHQsIGNoaWxkLCAoc2hhcmRzLCBjaGlsZHJlbikpID0+XG4gICAgICAgICAgICh0LnNoYXJkcyBAIHNoYXJkcywgdC5jaGlsZHJlbiBAIFtjaGlsZCwgLi4uY2hpbGRyZW5dKSxcbiAgICAgICAgIHQgPT4gKHQuc2hhcmRzLCB0LmNoaWxkcmVuKSxcbiAgICAgICApO1xuICAvLyBjaGVjayBsZW5ndGhzXG4gIGxldCBfID0gQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pO1xuICBhc3NlcnQoTGlzdC5zb3J0KEludC5jb21wYXJlLCBzaGFyZHMpID09IHNoYXJkcyk7XG4gIHtcbiAgICBpZDogdC5pZCxcbiAgICBsYWJlbDogdC5sYWJlbCxcbiAgICAvLyBub3RlOiB0aGlzIHRocm93cyBhd2F5IG1vbGRzIG9uIHRpbGVzIG90aGVyIHRoYW4gaGQuXG4gICAgLy8gaW4gY2FzZXMgd2hlcmUgdGhvc2UgbW9sZHMgZGlmZmVyLCByZWFzc2VtYmxlZCB0aWxlXG4gICAgLy8gc2hvdWxkIHVuZGVyZ28gc3Vic2VxdWVudCByZW1vbGRpbmcuXG4gICAgbW9sZDogdC5tb2xkLFxuICAgIHNoYXJkcyxcbiAgICBjaGlsZHJlbixcbiAgfTtcbn07XG5cbmxldCBwb3BfbCA9ICh0aWxlOiB0KTogKHBpZWNlLCBzZWdtZW50KSA9PlxuICBkaXNhc3NlbWJsZSh0aWxlKVxuICB8PiBMaXN0VXRpbC5zcGxpdF9maXJzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5sZXQgcG9wX3IgPSAodGlsZTogdCk6IChzZWdtZW50LCBwaWVjZSkgPT5cbiAgZGlzYXNzZW1ibGUodGlsZSlcbiAgfD4gTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5cbi8vIGxldCB1bmlxdWVfbW9sZCA9IF8gPT4gZmFpbHdpdGgoXCJ0b2RvIHVuaXF1ZV9tb2xkXCIpO1xuXG4vLyBtb2R1bGUgTWF0Y2ggPSB7XG4vLyAgIHR5cGUgdGlsZSA9IHQ7XG5cbi8vICAgbW9kdWxlIE1ha2UgPSAoTzogT3JpZW50YXRpb24uUykgPT4ge1xuLy8gICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbi8vICAgICB0eXBlIHQgPSBBYmEudChTaGFyZC50LCBzZWdtZW50KTtcblxuLy8gICAgIGxldCBpZCA9IChtOiB0KSA9PiBBYmEuaGQobSkudGlsZV9pZDtcblxuLy8gICAgIGxldCBsYWJlbCA9IChtOiB0KSA9PiBzbmQoQWJhLmhkKG0pLmxhYmVsKTtcblxuLy8gICAgIGxldCBzaGFyZHM6IHQgPT4gbGlzdChTaGFyZC50KSA9IEFiYS5nZXRfYXM7XG4vLyAgICAgLy8gbGV0IGNoaWxkcmVuOiB0ID0+IGxpc3Qoc2VnbWVudCkgPSBBYmEuZ2V0X2JzO1xuXG4vLyAgICAgbGV0IGxlbmd0aCA9IChtOiB0KSA9PiBMaXN0Lmxlbmd0aChzaGFyZHMobSkpO1xuXG4vLyAgICAgbGV0IG1vbGQgPSAobTogdCkgPT4ge1xuLy8gICAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgICAgc3dpdGNoIChTaGFyZC5jb25zaXN0ZW50X21vbGRzKHNoYXJkcyhtKSkpIHtcbi8vICAgICAgICAgfCBbXSA9PlxuLy8gICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgZXZlcnl0aGluZyB3aWxsIGJlIHN1YnNlcXVlbnRseSByZW1vbGRlZFxuLy8gICAgICAgICAgIE1vbGRzLmdldChsYWJlbChtKSlcbi8vICAgICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgICAgfTtcbi8vICAgICAgIGFzc2VydChtb2xkcyAhPSBbXSk7XG4vLyAgICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgICB9O1xuXG4vLyAgICAgbGV0IGNoaWxkcmVuID0gbSA9PlxuLy8gICAgICAgTGlzdC5tYXAoTGlzdFV0aWwucmV2X2lmKE8uZCA9PSBMZWZ0KSwgQWJhLmdldF9icyhtKSk7XG5cbi8vICAgICBsZXQgam9pbiA9IChtOiB0KTogc2VnbWVudCA9PlxuLy8gICAgICAgbSB8PiBBYmEuam9pbihzID0+IFtTaGFyZC50b19waWVjZShzKV0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuXG4vLyAgICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24odGlsZSkgPT4ge1xuLy8gICAgICAgbGV0IGlkID0gaWQobSk7XG4vLyAgICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICAgIGxldCBtb2xkID0gbW9sZChtKTtcbi8vICAgICAgIGxlbmd0aChtKSA9PSBMYWJlbC5sZW5ndGgobGFiZWwpXG4vLyAgICAgICAgID8ge1xuLy8gICAgICAgICAgIGxldCBjaGlsZHJlbiA9IExpc3RVdGlsLnJldl9pZihPLmQgPT0gTGVmdCwgY2hpbGRyZW4obSkpO1xuLy8gICAgICAgICAgIFNvbWUoQmFzZS5UaWxlLntpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVufSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgOiBOb25lO1xuLy8gICAgIH07XG4vLyAgIH07XG4vLyB9O1xuIiwiLy8gb3BlbiBVdGlsO1xuaW5jbHVkZSBCYXNlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBwaWVjZTtcblxubGV0IHNlY29uZGFyeSA9IHcgPT4gU2Vjb25kYXJ5KHcpO1xubGV0IGdyb3V0ID0gZyA9PiBHcm91dChnKTtcbmxldCB0aWxlID0gdCA9PiBUaWxlKHQpO1xuXG5sZXQgZ2V0ID0gKGZfdywgZl9nLCBmX3QsIHA6IHQpID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeSh3KSA9PiBmX3codylcbiAgfCBHcm91dChnKSA9PiBmX2coZylcbiAgfCBUaWxlKHQpID0+IGZfdCh0KVxuICB9O1xuXG5sZXQgaWQgPSBnZXQoU2Vjb25kYXJ5LmlkLCBHcm91dC5pZCwgVGlsZS5pZCk7XG5cbmxldCBzb3J0ID1cbiAgZ2V0KFxuICAgIF8gPT4gKFNvcnQuQW55LCBbXSksXG4gICAgXyA9PiAoU29ydC5BbnksIFtdKSxcbiAgICB0ID0+ICh0Lm1vbGQub3V0LCB0Lm1vbGQuaW5fKSxcbiAgKTtcblxubGV0IG5pYnMgPVxuICBnZXQoXG4gICAgXyA9PiBOb25lLFxuICAgIGcgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IEdyb3V0LnNoYXBlcyhnKTtcbiAgICAgIFNvbWUoTmliLih7c2hhcGU6IGwsIHNvcnQ6IEFueX0sIHtzaGFwZTogciwgc29ydDogQW55fSkpO1xuICAgIH0sXG4gICAgdCA9PiBTb21lKFRpbGUubmlicyh0KSksXG4gICk7XG5cbmxldCBuaWJfc29ydHMgPVxuICBnZXQoXG4gICAgXyA9PiAoU29ydC5BbnksIFNvcnQuQW55KSxcbiAgICBfID0+IChTb3J0LkFueSwgU29ydC5BbnkpLFxuICAgIHQgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgIChsLnNvcnQsIHIuc29ydCk7XG4gICAgfSxcbiAgKTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IGdldChfID0+IFtdLCBfID0+IFtdLCBUaWxlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBwID0+IHNvcnRlZF9jaGlsZHJlbihwKSB8PiBMaXN0LnNwbGl0IHw+IHNuZDtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID1cbi8vICAgZnVuXG4vLyAgIHwgU2hhcmQoXykgPT4gZmFsc2Vcbi8vICAgfCBTZWNvbmRhcnkoXylcbi8vICAgfCBHcm91dChfKVxuLy8gICB8IFRpbGUoXykgPT4gdHJ1ZTtcblxubGV0IHBvcF9sID0gKHA6IHQpOiAodCwgc2VnbWVudCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9sKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKHAsIFtdKVxuICB9O1xubGV0IHBvcF9yID0gKHA6IHQpOiAoc2VnbWVudCwgdCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9yKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKFtdLCBwKVxuICB9O1xuXG5sZXQgZGlzYXNzZW1ibGUgPSAocDogdCk6IHNlZ21lbnQgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4gIHwgVGlsZSh0KSA9PiBUaWxlLmRpc2Fzc2VtYmxlKHQpXG4gIH07XG5cbi8vIGxldCByZW1vbGQgPSAocDogdCkgPT5cbi8vICAgc3dpdGNoIChwKSB7XG4vLyAgIHwgR3JvdXQoXylcbi8vICAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4vLyAgIHwgVGlsZSh0KSA9PiBMaXN0Lm1hcCh0aWxlLCBUaWxlLnJlbW9sZCh0KSlcbi8vICAgfTtcblxubGV0IHNoYXBlcyA9XG4gIGdldChfID0+IE5vbmUsIGcgPT4gU29tZShHcm91dC5zaGFwZXMoZykpLCB0ID0+IFNvbWUoVGlsZS5zaGFwZXModCkpKTtcblxubGV0IGlzX2dyb3V0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBHcm91dChfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGlzX3NlY29uZGFyeTogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgU2Vjb25kYXJ5KF8pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgaXNfdGlsZTogdCA9PiBvcHRpb24oVGlsZS50KSA9XG4gIGZ1blxuICB8IFRpbGUodCkgPT4gU29tZSh0KVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGxhYmVsOiB0ID0+IG9wdGlvbihMYWJlbC50KSA9XG4gIGZ1blxuICB8IFRpbGUoe2xhYmVsLCBffSkgPT4gU29tZShsYWJlbClcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBtb25vdGlsZTogdCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBmdW5cbiAgfCBUaWxlKHtsYWJlbDogW3RdLCBffSkgPT4gU29tZSh0KVxuICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHcpID0+XG4gICAgU29tZShTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGhhc19lbmRzID0gZ2V0KF8gPT4gdHJ1ZSwgXyA9PiB0cnVlLCBUaWxlLmhhc19lbmRzKTtcblxubGV0IGlzX2NvbXBsZXRlOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBUaWxlKHQpID0+IFRpbGUuaXNfY29tcGxldGUodClcbiAgfCBfID0+IHRydWU7XG5cbmxldCBnZXRfb3V0c2lkZV9zb3J0cyA9ICh+ZGVmYXVsdF9zb3J0PVNvcnQuQW55LCBwOiB0KTogbGlzdChTb3J0LnQpID0+XG4gIC8vVE9ETzogRGF2aWQgcGxlYXNlIHJldmlldyB0aGlzXG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeShfKSA9PiBbXVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gW11cbiAgfCBHcm91dCh7c2hhcGU6IENvbmNhdmUsIF99KSA9PiBbZGVmYXVsdF9zb3J0LCBkZWZhdWx0X3NvcnRdXG4gIHwgVGlsZSh7c2hhcmRzOiBfLCBffSBhcyB0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+XG4gICAgLy8gVE9ETyhhbmRyZXcpOiBiZXR0ZXIgaW5jb21wbGV0ZSB0aWxlIGhhbmRsaW5nXG4gICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2hhcGUgb2YgaW5jb21wbGV0ZSB0aWxlIGlzXG4gICAgW11cbiAgfCBUaWxlKHQpID0+XG4gICAgbGV0IChzb3J0X2wsIHNvcnRfcikgPSBuaWJfc29ydHMocCk7XG4gICAgc3dpdGNoICgodC5tb2xkLm5pYnMgfD4gZnN0KS5zaGFwZSwgKHQubW9sZC5uaWJzIHw+IHNuZCkuc2hhcGUpIHtcbiAgICB8IChDb252ZXgsIENvbnZleCkgPT4gW11cbiAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFtzb3J0X3JdXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PiBbc29ydF9sXVxuICAgIHwgKENvbmNhdmUoXyksIENvbmNhdmUoXykpID0+IFtzb3J0X2wsIHNvcnRfcl1cbiAgICB9O1xuICB9O1xuXG5sZXQgbW9sZF9vZiA9ICh+c2hhcGU9TmliLlNoYXBlLkNvbnZleCwgcDogdCkgPT5cbiAgLy8gVE9ETyhkKSBmaXggc29ydHNcbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiB0Lm1vbGRcbiAgfCBHcm91dChnKSA9PiBNb2xkLm9mX2dyb3V0KGcsIEFueSlcbiAgfCBTZWNvbmRhcnkoXykgPT4gTW9sZC5vZl9zZWNvbmRhcnkoe3NvcnQ6IEFueSwgc2hhcGV9KVxuICB9O1xuIiwib3BlbiBVdGlsO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBPcChyb290KVxuICB8IFByZShyb290LCB0KVxuICB8IFBvc3QodCwgcm9vdClcbiAgfCBCaW4odCwgcm9vdCwgdClcbmFuZCByb290ID0gQWJhLnQoaW50LCB0KTtcblxuLy8gbGV0IHJlYyBzaXplID1cbi8vICAgZnVuXG4vLyAgIHwgT3AoXykgPT4gMVxuLy8gICB8IFByZShfLCByKSA9PiAxICsgc2l6ZShyKVxuLy8gICB8IFBvc3QobCwgXykgPT4gc2l6ZShsKSArIDFcbi8vICAgfCBCaW4obCwgXywgcikgPT4gc2l6ZShsKSArIDEgKyBzaXplKHIpO1xuXG4vLyBUT0RPKGQpOiByZW5hbWUgdG8gcmVmbGVjdCBhYmFcbmxldCByb290ID1cbiAgZnVuXG4gIHwgT3AocilcbiAgfCBQcmUociwgXylcbiAgfCBQb3N0KF8sIHIpXG4gIHwgQmluKF8sIHIsIF8pID0+IHI7XG5cbi8vIGxldCBjaGlsZHJlbiA9XG4vLyAgIGZ1blxuLy8gICB8IE9wKF8pID0+IFtdXG4vLyAgIHwgUHJlKF8sIHNrZWwpID0+IFsoRGlyZWN0aW9uLlJpZ2h0LCBza2VsKV1cbi8vICAgfCBQb3N0KHNrZWwsIF8pID0+IFsoTGVmdCwgc2tlbCldXG4vLyAgIHwgQmluKGwsIF8sIHIpID0+IFsoTGVmdCwgbCksIChSaWdodCwgcildO1xuXG4vLyByZXR1cm5zIGluY2x1c2l2ZSBsb3dlciBib3VuZCwgZXhjbHVzaXZlIHVwcGVyIGJvdW5kXG4vLyBsZXQgcmVjIHJhbmdlID1cbi8vICAgZnVuXG4vLyAgIHwgT3AobikgPT4gKG4sIG4gKyAxKVxuLy8gICB8IFByZShuLCByKSA9PiAobiwgc25kKHJhbmdlKHIpKSlcbi8vICAgfCBQb3N0KGwsIG4pID0+IChmc3QocmFuZ2UobCkpLCBuICsgMSlcbi8vICAgfCBCaW4obCwgXywgcikgPT4gKGZzdChyYW5nZShsKSksIHNuZChyYW5nZShyKSkpO1xuXG4vLyBsZXQgcmVjIHNrZWxfYXQgPSAobiwgc2tlbCkgPT5cbi8vICAgc3dpdGNoIChza2VsKSB7XG4vLyAgIHwgT3AobSkgPT4gbiA9PSBtID8gc2tlbCA6IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJTa2VsLnNrZWxfYXRcIikpXG4vLyAgIHwgUHJlKG0sIHIpID0+IG4gPT0gbSA/IHNrZWwgOiBza2VsX2F0KG4sIHIpXG4vLyAgIHwgUG9zdChsLCBtKSA9PiBuID09IG0gPyBza2VsIDogc2tlbF9hdChuLCBsKVxuLy8gICB8IEJpbihsLCBtLCByKSA9PlxuLy8gICAgIGlmIChuIDwgbSkge1xuLy8gICAgICAgc2tlbF9hdChuLCBsKTtcbi8vICAgICB9IGVsc2UgaWYgKG4gPiBtKSB7XG4vLyAgICAgICBza2VsX2F0KG4sIHIpO1xuLy8gICAgIH0gZWxzZSB7XG4vLyAgICAgICBza2VsO1xuLy8gICAgIH1cbi8vICAgfTtcblxuZXhjZXB0aW9uIElucHV0X2NvbnRhaW5zX3NlY29uZGFyeTtcbmV4Y2VwdGlvbiBOb25jb252ZXhfc2VnbWVudDtcblxuW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG50eXBlIGlwID0gKGludCwgUGllY2UudCk7XG5cbnR5cGUgcmVsID1cbiAgfCBMdFxuICB8IEVxXG4gIHwgR3Q7XG5cbmxldCByZWwgPSAocDE6IFBpZWNlLnQsIHAyOiBQaWVjZS50KTogb3B0aW9uKHJlbCkgPT5cbiAgc3dpdGNoIChwMSwgcDIpIHtcbiAgfCAoU2Vjb25kYXJ5KF8pLCBfKVxuICB8IChfLCBTZWNvbmRhcnkoXykpID0+IE5vbmVcbiAgfCAoR3JvdXQoe3NoYXBlLCBffSksIF8pID0+XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgQ29udmV4ID0+IFNvbWUoR3QpXG4gICAgfCBDb25jYXZlID0+IFNvbWUoTHQpXG4gICAgfVxuICB8IChfLCBHcm91dCh7c2hhcGUsIF99KSkgPT5cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBDb252ZXggPT4gU29tZShMdClcbiAgICB8IENvbmNhdmUgPT4gU29tZShHdClcbiAgICB9XG4gIHwgKFRpbGUodDEpLCBUaWxlKHQyKSkgPT5cbiAgICBvcGVuIExhYmVscztcbiAgICBsZXQgbGJsMSA9ICg9PSkodDEubGFiZWwpO1xuICAgIGxldCBsYmwyID0gKD09KSh0Mi5sYWJlbCk7XG4gICAgbGV0IGVxID1cbiAgICAgIFtcbiAgICAgICAgbGJsMShjYXNlKSAmJiBsYmwyKHJ1bGUpLFxuICAgICAgICBsYmwxKHJ1bGUpICYmIGxibDIocnVsZSksXG4gICAgICAgIGxibDEoY29tbWEpICYmIGxibDIoY29tbWEpICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgICAgbGJsMShbXCIrXCJdKSAmJiBsYmwyKFtcIitcIl0pICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgIF1cbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KCh8fCksIGZhbHNlKTtcbiAgICBpZiAoZXEpIHtcbiAgICAgIFNvbWUoRXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIHIxKSA9IFRpbGUuc2hhcGVzKHQxKTtcbiAgICAgIGxldCAobDIsIF8pID0gVGlsZS5zaGFwZXModDIpO1xuICAgICAgc3dpdGNoIChyMSwgbDIpIHtcbiAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PiBOb25lXG4gICAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IFNvbWUoTHQpXG4gICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFNvbWUoR3QpXG4gICAgICB8IChDb25jYXZlKHApLCBDb25jYXZlKHAnKSkgPT5cbiAgICAgICAgaWYgKHAgPCBwJykge1xuICAgICAgICAgIFNvbWUoTHQpO1xuICAgICAgICB9IGVsc2UgaWYgKHAgPiBwJykge1xuICAgICAgICAgIFNvbWUoR3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAoUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHApKSB7XG4gICAgICAgICAgfCBTb21lKExlZnQpID0+IFNvbWUoR3QpXG4gICAgICAgICAgfCBTb21lKFJpZ2h0KSA9PiBTb21lKEx0KVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgLy8gbWF5IHdhbnQgdG8gbWFrZSB0aGlzIFNvbWUoRXEpXG4gICAgICAgICAgICAvLyBmb3IgdGhpbmdzIGxpa2UgY29tbWEgYnV0IGRvbid0XG4gICAgICAgICAgICAvLyB3YW50IHRvIGJvdGhlciB3aXRoIG1vbGQgY29uY2VybnMgaGVyZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxubW9kdWxlIFN0YWNrcyA9IHtcbiAgW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG4gIHR5cGUgc2tlbCA9IHQ7XG4gIFtAZGVyaXZpbmcgc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pXVxuICB0eXBlIHQgPSB7XG4gICAgb3V0cHV0OiBsaXN0KHNrZWwpLFxuICAgIHNodW50ZWQ6IGxpc3QoaXApLFxuICB9O1xuXG4gIGxldCBlbXB0eSA9IHtvdXRwdXQ6IFtdLCBzaHVudGVkOiBbXX07XG5cbiAgbGV0IHJlYyBwb3BfY2hhaW4gPVxuICAgICAgICAgICh+cG9wcGVkPVtdLCBzaHVudGVkOiBsaXN0KGlwKSk6IChsaXN0KGlwKSwgbGlzdChpcCkpID0+XG4gICAgc3dpdGNoIChzaHVudGVkKSB7XG4gICAgfCBbXSA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAocG9wcGVkKSB7XG4gICAgICB8IFtdID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZF0sIHRsKVxuICAgICAgfCBbcCwgLi4uX10gPT5cbiAgICAgICAgc3dpdGNoIChyZWwoc25kKGhkKSwgc25kKHApKSkge1xuICAgICAgICB8IFNvbWUoRXEpID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZCwgLi4ucG9wcGVkXSwgdGwpXG4gICAgICAgIHwgXyA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgc2hhcGVzID0gcCA9PlxuICAgIFBpZWNlLnNoYXBlcyhwKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnB1dF9jb250YWluc19zZWNvbmRhcnkpO1xuXG4gIGxldCBzaGFwZXNfb2ZfY2hhaW4gPVxuICAgICAgKGNoYWluOiBsaXN0KGlwKSk6IG9wdGlvbigoTmliLlNoYXBlLnQsIE5pYi5TaGFwZS50KSkgPT5cbiAgICBzd2l0Y2ggKGNoYWluLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChjaGFpbikpIHtcbiAgICB8IChbKF8sIGZpcnN0KSwgLi4uX10sIFNvbWUoKF8sIChfLCBsYXN0KSkpKSA9PlxuICAgICAgbGV0IChsLCBfKSA9IHNoYXBlcyhmaXJzdCk7XG4gICAgICBsZXQgKF8sIHIpID0gc2hhcGVzKGxhc3QpO1xuICAgICAgU29tZSgobCwgcikpO1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgcmVjIHB1c2hfb3V0cHV0ID0gKH5wcmVjOiBvcHRpb24oUHJlY2VkZW5jZS50KT0/LCBzdGFja3M6IHQpOiB0ID0+IHtcbiAgICBsZXQgKGNoYWluLCBzaHVudGVkKSA9IHBvcF9jaGFpbihzdGFja3Muc2h1bnRlZCk7XG4gICAgc3dpdGNoIChwcmVjLCBzaGFwZXNfb2ZfY2hhaW4oY2hhaW4pKSB7XG4gICAgfCAoU29tZShwcmVjKSwgU29tZSgoXywgQ29uY2F2ZShwcmVjJykpKSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFByZWNlZGVuY2UuY29tcGFyZShwcmVjJywgcHJlYykgPCAwXG4gICAgICAgICAgfHwgUHJlY2VkZW5jZS5jb21wYXJlKHByZWMnLCBwcmVjKSA9PSAwXG4gICAgICAgICAgJiYgUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHByZWMnKSAhPSBTb21lKExlZnQpID0+IHN0YWNrc1xuICAgIHwgKF8sIE5vbmUpID0+IHN0YWNrc1xuICAgIHwgKF8sIFNvbWUoKGwsIHIpKSkgPT5cbiAgICAgIGxldCBpcyA9IExpc3QubWFwKGZzdCwgY2hhaW4pO1xuICAgICAgbGV0IHNwbGl0X2tpZHMgPSBuID0+XG4gICAgICAgIHRyeShMaXN0VXRpbC5zcGxpdF9uKG4sIHN0YWNrcy5vdXRwdXQpIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpKSB7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIHByaW50X2VuZGxpbmUoc2hvdyhzdGFja3MpKTtcbiAgICAgICAgICBmYWlsd2l0aChcIlNrZWwucHVzaF9vdXRwdXQ6IHNwbGl0X2tpZHM6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH07XG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgc3dpdGNoIChsLCByKSB7XG4gICAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pIC0gMSk7XG4gICAgICAgICAgW09wKEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+XG4gICAgICAgICAgbGV0IChraWRzLCBvdXRwdXQpID0gc3BsaXRfa2lkcyhMaXN0Lmxlbmd0aChjaGFpbikpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtQcmUoQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIHwgKENvbmNhdmUoXyksIENvbnZleCkgPT5cbiAgICAgICAgICBsZXQgKGtpZHMsIG91dHB1dCkgPSBzcGxpdF9raWRzKExpc3QubGVuZ3RoKGNoYWluKSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIFtQb3N0KGwsIEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pICsgMSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtCaW4obCwgQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIH07XG4gICAgICBwdXNoX291dHB1dCh+cHJlYz8sIHtzaHVudGVkLCBvdXRwdXR9KTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBwdXNoX3NodW50ZWQgPSAoKF8sIHApIGFzIGlwOiBpcCwgc3RhY2tzOiB0KTogdCA9PiB7XG4gICAgbGV0IChsLCBfKSA9IHNoYXBlcyhwKTtcbiAgICBsZXQgc3RhY2tzID1cbiAgICAgIHN3aXRjaCAobCkge1xuICAgICAgfCBDb252ZXggPT4gc3RhY2tzXG4gICAgICB8IENvbmNhdmUocHJlYykgPT4gcHVzaF9vdXRwdXQofnByZWMsIHN0YWNrcylcbiAgICAgIH07XG4gICAgey4uLnN0YWNrcywgc2h1bnRlZDogW2lwLCAuLi5zdGFja3Muc2h1bnRlZF19O1xuICB9O1xuXG4gIGxldCBmaW5pc2ggPSBzdGFja3MgPT4gcHVzaF9vdXRwdXQoc3RhY2tzKTtcbn07XG5cbmxldCBtayA9IChzZWc6IGxpc3QoaXApKTogdCA9PiB7XG4gIGxldCBzdGFja3MgPVxuICAgIHNlZ1xuICAgIHw+IExpc3QuZm9sZF9sZWZ0KEZ1bi5mbGlwKFN0YWNrcy5wdXNoX3NodW50ZWQpLCBTdGFja3MuZW1wdHkpXG4gICAgfD4gU3RhY2tzLmZpbmlzaDtcbiAgTGlzdFV0aWwuaGRfb3B0KHN0YWNrcy5vdXRwdXQpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKE5vbmNvbnZleF9zZWdtZW50KTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zZWdtZW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBCYXNlLnNlZ21lbnQ7XG5cbmxldCBlbXB0eSA9IFtdO1xubGV0IGNvbnMgPSBMaXN0LmNvbnM7XG5sZXQgY29uY2F0ID0gTGlzdC5jb25jYXQ7XG5sZXQgZm9sZF9yaWdodCA9IExpc3QuZm9sZF9yaWdodDtcbmxldCByZXYgPSBMaXN0LnJldjtcblxubGV0IG9mX3RpbGUgPSB0ID0+IFtUaWxlLnRvX3BpZWNlKHQpXTtcblxubGV0IG5pYnMgPSB0aWxlcyA9PlxuICBzd2l0Y2ggKHRpbGVzLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdCh0aWxlcykpIHtcbiAgfCAoW10sIF8pXG4gIHwgKF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoW19maXJzdCwgLi4uX10sIFNvbWUoKF8sIF9sYXN0KSkpID0+IGZhaWx3aXRoKFwidG9kbyBUaWxlcy5uaWJzXCIpXG4gIH07XG5cbmxldCBpbmNvbXBsZXRlX3RpbGVzID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgKTtcbmxldCB0aWxlcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4gU29tZSh0KVxuICAgIHwgXyA9PiBOb25lLFxuICApO1xuXG5sZXQgY29udmV4X2dyb3V0ID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuR3JvdXQoZykgd2hlbiBnLnNoYXBlID09IENvbnZleCA9PiBTb21lKGcpXG4gICAgfCBfID0+IE5vbmUsXG4gICk7XG5cbmxldCBjb250YWluc19tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0JykgPT4gdCcuaWQgPT0gdC5pZFxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IHJlbW92ZV9tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCcpIHdoZW4gdCcuaWQgPT0gdC5pZCA9PiBOb25lXG4gICAgfCBwID0+IFNvbWUocCksXG4gICk7XG5cbmxldCBzbm9jID0gKHRpbGVzLCB0aWxlKSA9PiB0aWxlcyBAIFt0aWxlXTtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID0gTGlzdC5mb3JfYWxsKFBpZWNlLmlzX2JhbGFuY2VkKTtcblxubGV0IHNoYXBlX2FmZml4ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIGFmZml4OiB0LCByOiBOaWIuU2hhcGUudClcbiAgICA6IChBYmEudChsaXN0KFNlY29uZGFyeS50KSwgR3JvdXQudCksIE5pYi5TaGFwZS50LCB0KSA9PiB7XG4gIGxldCBlbXB0eV93Z3cgPSBBYmEubWsoW1tdXSwgW10pO1xuICBsZXQgcmVjIGdvID0gKGFmZml4OiB0LCByOiBOaWIuU2hhcGUudCkgPT5cbiAgICBzd2l0Y2ggKGFmZml4KSB7XG4gICAgfCBbXSA9PiAoZW1wdHlfd2d3LCByLCBbXSlcbiAgICB8IFtwLCAuLi50bF0gPT5cbiAgICAgIGxldCAod2d3LCBzLCB0bCkgPSBnbyh0bCwgcik7XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgU2Vjb25kYXJ5KHcpID0+XG4gICAgICAgIGxldCAod3NzLCBncykgPSB3Z3c7XG4gICAgICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgICAgICAoKFtbdywgLi4ud3NdLCAuLi53c3NdLCBncyksIHMsIHRsKTtcbiAgICAgIHwgR3JvdXQoZykgPT4gKEFiYS5jb25zKFtdLCBnLCB3Z3cpLCBzLCB0bClcbiAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICBsZXQgKGwsIF8pID0gVGlsZS5zaGFwZXModCkgfD4gKGQgPT0gTGVmdCA/IFR1cGxlVXRpbC5zd2FwIDogRnVuLmlkKTtcbiAgICAgICAgKGVtcHR5X3dndywgbCwgdGwpO1xuICAgICAgfTtcbiAgICB9O1xuICBnbygoZCA9PSBMZWZ0ID8gTGlzdC5yZXYgOiBGdW4uaWQpKGFmZml4KSwgcik7XG59O1xubGV0IHNoYXBlID0gc2hhcGVfYWZmaXgoUmlnaHQpO1xuXG5sZXQgcmVjIGNvbnZleCA9IHNlZyA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCBsID1cbiAgICBmb2xkX3JpZ2h0KFxuICAgICAgKHA6IFBpZWNlLnQsIHNoYXBlKSA9PiB7XG4gICAgICAgIGxldCogcyA9IHNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHApIHtcbiAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gc2hhcGVcbiAgICAgICAgfCBHcm91dChnKSA9PlxuICAgICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgcykgPyBTb21lKGZzdChHcm91dC5zaGFwZXMoZykpKSA6IE5vbmVcbiAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgbGV0IChsLCByKSA9IFRpbGUuc2hhcGVzKHQpO1xuICAgICAgICAgIExpc3QuZm9yX2FsbChjb252ZXgsIHQuY2hpbGRyZW4pICYmIE5pYi5TaGFwZS5maXRzKHIsIHMpXG4gICAgICAgICAgICA/IFNvbWUobCkgOiBOb25lO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHNlZyxcbiAgICAgIFNvbWUoTmliLlNoYXBlLmNvbmNhdmUoKSksXG4gICAgKTtcbiAgc3dpdGNoIChsKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUobCkgPT4gTmliLlNoYXBlLmZpdHMoTmliLlNoYXBlLmNvbmNhdmUoKSwgbClcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9ieV9ncm91dDogdCA9PiBBYmEudCh0LCBHcm91dC50KSA9XG4gIEFiYS5zcGxpdChcbiAgICBmdW5cbiAgICB8IFBpZWNlLkdyb3V0KGcpID0+IEVpdGhlci5SKGcpXG4gICAgfCBwID0+IEwocCksXG4gICk7XG5cbmxldCByZWMgcmVtb2xkID0gKH5zaGFwZT1OaWIuU2hhcGUuY29uY2F2ZSgpLCBzZWc6IHQsIHM6IFNvcnQudCkgPT5cbiAgc3dpdGNoIChzKSB7XG4gIHwgQW55ID0+IHNlZ1xuICB8IFR5cCA9PiByZW1vbGRfdHlwKHNoYXBlLCBzZWcpXG4gIHwgUGF0ID0+IHJlbW9sZF9wYXQoc2hhcGUsIHNlZylcbiAgfCBFeHAgPT4gcmVtb2xkX2V4cChzaGFwZSwgc2VnKVxuICB8IFJ1bCA9PiByZW1vbGRfcnVsKHNoYXBlLCBzZWcpXG4gIHwgVFBhdCA9PiByZW1vbGRfdHBhdChzaGFwZSwgc2VnKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJyZW1vbGQgdW5leHBlY3RlZFwiKVxuICB9XG5hbmQgcmVtb2xkX3RpbGUgPSAoczogU29ydC50LCBzaGFwZSwgdDogVGlsZS50KTogb3B0aW9uKFRpbGUudCkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHJlbW9sZGVkID1cbiAgICBNb2xkcy5nZXQodC5sYWJlbClcbiAgICB8PiBMaXN0LmZpbHRlcigobTogTW9sZC50KSA9PiBtLm91dCA9PSBzKVxuICAgIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLnQsIG1vbGR9KVxuICAgIHw+IChcbiAgICAgIGZ1blxuICAgICAgfCBbX10gYXMgdHMgPT4gdHNcbiAgICAgIHwgdHMgPT5cbiAgICAgICAgdHMgfD4gTGlzdC5maWx0ZXIodCA9PiBOaWIuU2hhcGUuZml0cyhzaGFwZSwgZnN0KFRpbGUuc2hhcGVzKHQpKSkpXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLmhkX29wdDtcbiAgbGV0IGNoaWxkcmVuID1cbiAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAoKGwsIGNoaWxkLCByKSwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgbGV0IGNoaWxkID1cbiAgICAgICAgICBpZiAobFxuICAgICAgICAgICAgICArIDEgPT0gclxuICAgICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgTGlzdC5udGgocmVtb2xkZWQubW9sZC5pbl8sIGwpICE9IExpc3QubnRoKHQubW9sZC5pbl8sIGwpXG4gICAgICAgICAgICAgICAgfHwgRWZmZWN0LnNfdG91Y2hlZChyZW1vbGRlZC5pZClcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmVtb2xkKGNoaWxkLCBMaXN0Lm50aChyZW1vbGRlZC5tb2xkLmluXywgbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZDtcbiAgICAgICAgICB9O1xuICAgICAgICBbY2hpbGQsIC4uLmNoaWxkcmVuXTtcbiAgICAgIH0sXG4gICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHJlbW9sZGVkLnNoYXJkcywgcmVtb2xkZWQuY2hpbGRyZW4pKSxcbiAgICAgIFtdLFxuICAgICk7XG4gIHsuLi5yZW1vbGRlZCwgY2hpbGRyZW59O1xufVxuYW5kIHJlbW9sZF90eXAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF90eXAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoVHlwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3R5cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT4gW1RpbGUodCksIC4uLnJlbW9sZF90eXAoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90eXBfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgKFtoZCwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFR5cCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gKFtdLCBzaGFwZSwgc2VnKVxuICAgICAgfCBTb21lKHQpIHdoZW4gIVRpbGUuaGFzX2VuZChSaWdodCwgdCkgPT5cbiAgICAgICAgbGV0IChfLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgICAgbGV0IHJlbW9sZGVkID0gcmVtb2xkKH5zaGFwZT1yLnNoYXBlLCB0bCwgci5zb3J0KTtcbiAgICAgICAgbGV0IChfLCBzaGFwZSwgXykgPSBzaGFwZV9hZmZpeChMZWZ0LCByZW1vbGRlZCwgci5zaGFwZSk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgW10pO1xuICAgICAgfCBTb21lKHQpIHdoZW4gdC5sYWJlbCA9PSBGb3JtLmdldChcImNvbW1hX3R5cFwiKS5sYWJlbCA9PiAoXG4gICAgICAgICAgW10sXG4gICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgc2VnLFxuICAgICAgICApXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICByZW1vbGRfdHlwX3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3BhdF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9XG4gICAgICAgICAgICByZW1vbGRfcGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9wYXQgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9wYXQoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3BhdChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9wYXQoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IF8gPT4gW1RpbGUodCksIC4uLnJlbW9sZF9wYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3RwYXRfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHBhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgIChbaGQsIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICAgIHJlbW9sZF90cGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90cGF0ID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfdHBhdChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfdHBhdChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX2V4cF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3RwYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90cGF0XSBAIHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9wYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCByZXN0KTtcbiAgICAgICAgICAoW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkX3BhdF0gQCByZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUnVsfSkgPT5cbiAgICAgICAgICAvLyBUT0RPIHJldmlldyBzaG9ydCBjaXJjdWl0XG4gICAgICAgICAgKFtUaWxlKHQpXSwgc2hhcGUsIHRsKVxuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPVxuICAgICAgICAgICAgcmVtb2xkX2V4cF91bmkoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpO1xuICAgICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfcnVsID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFJ1bCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBFeHB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9ydWwoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICAvLyBUT0RPKGQpIGNvbnRpbnVpbmcgb250byBydWxlIG1pZ2h0IG5vdCBiZSByaWdodCByaWdodC4uLlxuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCBfID0+IGZhaWx3aXRoKFwicmVtb2xkX3J1bCB1bmV4cGVjdGVkXCIpXG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgW2hkLCAuLi50bF0pO1xuICAgICAgICBzd2l0Y2ggKHJlbW9sZGVkKSB7XG4gICAgICAgIHwgW10gPT4gW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZF9ydWwoc2hhcGUsIHRsKV1cbiAgICAgICAgfCBbXywgLi4uX10gPT4gcmVtb2xkZWQgQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9leHAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9leHAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFRQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfZXhwKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFJ1bH0pID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbmxldCBza2VsID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsIHNlZyA9PlxuICAgIHNlZ1xuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpXG4gICAgfD4gU2tlbC5ta1xuICApO1xuXG5sZXQgc29ydGVkX2NoaWxkcmVuID0gTGlzdC5jb25jYXRfbWFwKFBpZWNlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBzZWcgPT4gTGlzdC5tYXAoc25kLCBzb3J0ZWRfY2hpbGRyZW4oc2VnKSk7XG5cbm1vZHVsZSBUcmltID0ge1xuICB0eXBlIHNlZyA9IHQ7XG4gIHR5cGUgdCA9IEFiYS50KGxpc3QoU2Vjb25kYXJ5LnQpLCBHcm91dC50KTtcblxuICBsZXQgZW1wdHkgPSBBYmEubWsoW1tdXSwgW10pO1xuXG4gIGxldCByZXYgPSBBYmEucmV2KExpc3QucmV2LCBGdW4uaWQpO1xuXG4gIGxldCBjb25zX3cgPSAodzogU2Vjb25kYXJ5LnQsICh3c3MsIGdzKSkgPT4ge1xuICAgIC8vIHNhZmUgYmMgQWJhIGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIEEgZWxlbWVudFxuICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgIEFiYS5tayhbW3csIC4uLndzXSwgLi4ud3NzXSwgZ3MpO1xuICB9O1xuICBsZXQgY29uc19nID0gKGc6IEdyb3V0LnQsICh3c3MsIGdzKSkgPT5cbiAgICBBYmEubWsoW1tdLCAuLi53c3NdLCBbZywgLi4uZ3NdKTtcblxuICBsZXQgd3MgPSAoKHdzcywgXyk6IHQpOiBzZWcgPT4gTGlzdC4obWFwKFBpZWNlLnNlY29uZGFyeSwgY29uY2F0KHdzcykpKTtcblxuICAvLyBwb3N0Y29uZDogcmVzdWx0IGlzIGVpdGhlciA8d3M+IG9yIDx3cyxnLHdzJz5cbiAgbGV0IG1lcmdlID0gKCh3c3MsIGdzKTogdCk6IHQgPT4ge1xuICAgIHN3aXRjaCAoR3JvdXQubWVyZ2UoZ3MpKSB7XG4gICAgfCBOb25lID0+IEFiYS5tayhbTGlzdC5jb25jYXQod3NzKV0sIFtdKVxuICAgIHwgU29tZShnKSA9PlxuICAgICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gICAgICBBYmEubWsoW3dzLCBMaXN0LmNvbmNhdCh3c3MpXSwgW2ddKTtcbiAgICB9O1xuICB9O1xuICAvLyBzYW1lIGFzIG1lcmdlIGJ1dCB0eXBlIGVuY29kZXMgcG9zdGNvbmRcbiAgLy8gbGV0IG1lcmdlZCA9ICh0cmltOiB0KTogKGxpc3QoU2Vjb25kYXJ5LnQpLCBvcHRpb24oKEdyb3V0LnQsIGxpc3QoU2Vjb25kYXJ5LnQpKSkpID0+IHtcbiAgLy8gICBsZXQgKHdzcywgZ3MpID0gbWVyZ2UodHJpbSk7XG4gIC8vICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gIC8vICAgc3dpdGNoIChncykge1xuICAvLyAgIHwgW10gPT4gKHdzLCBOb25lKVxuICAvLyAgIHwgW2csIC4uLl9dID0+ICh3cywgU29tZSgoZywgTGlzdC5jb25jYXQod3NzKSkpKVxuICAvLyAgIH07XG4gIC8vIH07XG4gIGxldCByZWMgcm1fdXBfdG9fb25lX3NwYWNlID1cbiAgICAgICAgICAod3NzOiBsaXN0KGxpc3QoU2Vjb25kYXJ5LnQpKSk6IGxpc3QobGlzdChTZWNvbmRhcnkudCkpID0+XG4gICAgc3dpdGNoICh3c3MpIHtcbiAgICB8IFtdID0+IFtdXG4gICAgfCBbW3csIC4uLndzXSwgLi4ud3NzXSB3aGVuIFNlY29uZGFyeS5pc19zcGFjZSh3KSA9PiBMaXN0LmNvbnMod3MsIHdzcylcbiAgICB8IFt3cywgLi4ud3NzXSA9PiBMaXN0LmNvbnMod3MsIHJtX3VwX3RvX29uZV9zcGFjZSh3c3MpKVxuICAgIH07XG5cbiAgbGV0IGFkZF9ncm91dCA9ICh+ZDogRGlyZWN0aW9uLnQsIHNoYXBlOiBOaWIuU2hhcGUudCwgKHdzcywgZ3MpOiB0KTogdCA9PiB7XG4gICAgbGV0IGcgPSBHcm91dC5ta19maXRzX3NoYXBlKHNoYXBlKTtcbiAgICAvKiBXaGVuIGFkZGluZyBhIGdyb3V0IHRvIHRoZSBsZWZ0LCBjb25zdW1lIGEgc3BhY2UuIE5vdGVcbiAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgYWNjb3VudCB0aGUgb3RoZXIgZGlyZWN0aW9uIGluICdyZWdyb3V0JyBiZWxvdyAqL1xuICAgIGxldCB3c3MnID1cbiAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgLyogUmlnaHQgQ29udmV4IGUuZy4gQmFja3NwYWNlIGAxfCArIDJgID0+IGB8PD4gKyAyYCAoRG9uJ3QgY29uc3VtZSkgKi9cbiAgICAgIC8qIFJpZ2h0IENvbmNhdmUgZS5nLiBCYWNrc3BhY2UgYDEgK3wgMWAgPT4gYDEgfD48IDFgIChEb24ndCBjb25zdW1lKSAqL1xuICAgICAgfCBSaWdodCA9PiB3c3NcbiAgICAgIC8qIExlZnQgQ29udmV4IGUuZy4gSW5zZXJ0IFNwYWNlIGBbfF1gID0+IGBbIHxdYCA9PiBgWzw+fF1gIChDb25zdW1lKSAqL1xuICAgICAgLyogTGVmdCBDb25jYXZlIGUuZy4gSW5zZXJ0IFwiaVwiIGBsZXQgYSA9IDEgaXxgID0+IGBsZXQgYSA9IDE+PGl8YCAoQ29uc3VtZSkgKi9cbiAgICAgIHwgTGVmdCA9PiBybV91cF90b19vbmVfc3BhY2Uod3NzKVxuICAgICAgfTtcbiAgICBjb25zX2coZywgKHdzcycsIGdzKSk7XG4gIH07XG5cbiAgLy8gYXNzdW1lcyBncm91dCBpbiB0cmltIGZpdCByIGJ1dCBtYXkgbm90IGZpdCBsXG4gIGxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCAobCwgcik6IE5pYnMuc2hhcGVzLCB0cmltOiB0KTogdCA9PlxuICAgIGlmIChOaWIuU2hhcGUuZml0cyhsLCByKSkge1xuICAgICAgbGV0ICh3c3MsIGdzKSA9IHRyaW07XG4gICAgICAvKiBXaGVuIHJlbW92aW5nIGEgZ3JvdXQgdG8gdGhlIExlZnQsIGFkZCBhIHNwYWNlLiBOb3RlXG4gICAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgICBhY2NvdW50IHRoZSBvdGhlciBkaXJlY3Rpb24gaW4gJ2FkZF9ncm91dCcgYWJvdmUgKi9cbiAgICAgIGxldCBuZXdfc3BhY2VzID1cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgIChnOiBHcm91dC50KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGcuc2hhcGUsIGQpIHtcbiAgICAgICAgICAgIC8qIExlZnQgQ29uY2F2ZSBlLmcuIGBsZXQgYSA9IDE+PGlufGAgPT4gYGxldCBhID0gMSBpbiB8YCAoQWRkKSAqL1xuICAgICAgICAgICAgLyogTk9URShhbmRyZXcpOiBOb3Qgc3VyZSB3aHkgZCBoZXJlIHNlZW1zIHJldmVyc2VkLiBBbHNvIG5vdCBzdXJlIHdoeVxuICAgICAgICAgICAgICogcmVzdHJpY3Rpb24gdG8gY29uY2F2ZSBpcyBuZWNlc3NhcnkgYnV0IHNlZW1zIHRvIHByZXZlbnQgYWRkaXRpb25cbiAgICAgICAgICAgICAqIG9mIG5lZWRsZXNzIHdoaXRlc3BhY2UgaW4gc29tZSBzaXR1YXRpb24gc3VjaCBhcyB3aGVuIGluc2VydGluZ1xuICAgICAgICAgICAgICogb24gYCh8KWAsIHdoaWNoIHNlZW1zIHRvIGFkZCB3aGl0ZXNwYWNlIGFmdGVyIHRoZSByaWdodCBwYXJlbnNcbiAgICAgICAgICAgICAqIHdpdGhvdXQgdGhpcyBzaGFwZSByZXN0aXJjdGlvbiAqL1xuICAgICAgICAgICAgfCAoQ29uY2F2ZSwgUmlnaHQpID0+IFNvbWUoU2Vjb25kYXJ5Lm1rX3NwYWNlKGcuaWQpKVxuICAgICAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdzLFxuICAgICAgICApO1xuICAgICAgLyogTm90ZSBiZWxvdyB0aGF0IGl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGFkZCB0aGUgbmV3IHNwYWNlc1xuICAgICAgICAgYmVmb3JlIHRoZSBleGlzdGluZyB3c3MsIGFzIGRvaW5nIG90aGVyd2lzZSBtYXkgcmVzdWx0XG4gICAgICAgICBpbiB0aGUgbmV3IHNwYWNlcyBlbmRpbmcgdXAgbGVhZGluZyBhIGxpbmUuIFRoaXMgYXBwcm9hY2ggaXNcbiAgICAgICAgIHNvbWV3aGF0IGhhY2t5OyB3ZSBtYXkganVzdCB3YW50IHRvIHJlbW92ZSBhbGwgdGhlIHNwYWNlc1xuICAgICAgICAgd2hlbmV2ZXIgdGhlcmUgaXMgYSBsaW5lYnJlYWs7IG5vdCBtYWtpbmcgdGhpcyBjaGFuY2Ugbm93XG4gICAgICAgICBhcyBJJ20gd29ycmllZCBhYm91dCBpdCBpbnRyb2R1Y2luZyBzdWJ0bGUgamFuayAqL1xuXG4gICAgICAvKiBEYXZpZCBQUiBjb21tZW50OlxuICAgICAgICAgQWxsIHRoZXNlIGNoYW5nZXMgYXNzdW1lIHRoZSB0cmltIGlzIG9yZGVyZWQgbGVmdC10by1yaWdodCxcbiAgICAgICAgIGJ1dCB0aGlzIG1heSBub3QgYmUgdHJ1ZSB3aGVuIFRyaW0ucmVncm91dCBpcyBjYWxsZWQgYnlcbiAgICAgICAgIHJlZ3JvdXRfYWZmaXgoTGVmdCwgLi4uKSBiZWxvdywgd2hpY2ggcmV2ZXJzZXMgdGhlIGFmZml4IGJlZm9yZVxuICAgICAgICAgcHJvY2Vzc2luZy4gKFRoaXMgZGlkbid0IHBvc2UgYW4gaXNzdWUgYmVmb3JlIHdpdGggdHJpbSBiZWNhdXNlXG4gICAgICAgICB0aGUgc2Vjb25kYXJ5IGFuZCBncm91dCBhcmUgc3ltbWV0cmljIGFuZCB0aGUgZXhpc3RpbmcgY29kZVxuICAgICAgICAgZGlkbid0IGFmZmVjdCBvcmRlci4pXG4gICAgICAgICBQcm9wZXIgZml4IHdvdWxkIHJlcXVpcmUgdGhyZWFkaW5nIHRocm91Z2ggZGlyZWN0aW9uYWwgcGFyYW1ldGVyXG4gICAgICAgICBmcm9tIHJlZ3JvdXRfYWZmaXggaW50byBUcmltLnJlZ3JvdXQgYW5kIGFwcGVuZGluZyB0byBjb3JyZWN0IHNpZGUuXG4gICAgICAgICBTaW1pbGFyIHRocmVhZGluZyBmb3IgYWRkX2dyb3V0LiBUaGF0IHNhaWQsIEkgY291bGRuJ3QgdHJpZ2dlciBhbnlcbiAgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yIHdpdGggdGhlc2UgY2hhbmdlcyBhbmQgYW0gZmluZSB3aXRoIGdvaW5nIGFoZWFkXG4gICAgICAgICB3aXRoIHRoaXMgZm9yIG5vdy4gKi9cbiAgICAgIGxldCB3c3MgPSBbbmV3X3NwYWNlcyBAIExpc3QuY29uY2F0KHdzcyldO1xuICAgICAgQWJhLm1rKHdzcywgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIGdzKSBhcyBtZXJnZWQgPSBtZXJnZSh0cmltKTtcbiAgICAgIHN3aXRjaCAoZ3MpIHtcbiAgICAgIHwgW10gPT4gYWRkX2dyb3V0KH5kLCBsLCBtZXJnZWQpXG4gICAgICB8IFtfLCAuLi5fXSA9PiBtZXJnZWRcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgdG9fc2VnID0gKHRyaW06IHQpID0+XG4gICAgdHJpbVxuICAgIHw+IEFiYS5qb2luKExpc3QubWFwKFBpZWNlLnNlY29uZGFyeSksIGcgPT4gW1BpZWNlLkdyb3V0KGcpXSlcbiAgICB8PiBMaXN0LmNvbmNhdDtcbn07XG5cbmxldCByZWMgcmVncm91dCA9ICgobCwgciksIHNlZykgPT4ge1xuICBsZXQgKHRyaW0sIHIsIHRsKSA9IHJlZ3JvdXRfYWZmaXgoRGlyZWN0aW9uLlJpZ2h0LCBzZWcsIHIpO1xuICBsZXQgdHJpbSA9IFRyaW0ucmVncm91dChEaXJlY3Rpb24uUmlnaHQsIChsLCByKSwgdHJpbSk7XG4gIFRyaW0udG9fc2VnKHRyaW0pIEAgdGw7XG59XG5hbmQgcmVncm91dF9hZmZpeCA9XG4gICAgKGQ6IERpcmVjdGlvbi50LCBhZmZpeDogdCwgcjogTmliLlNoYXBlLnQpOiAoVHJpbS50LCBOaWIuU2hhcGUudCwgdCkgPT4ge1xuICBsZXQgKHRyaW0sIHMsIGFmZml4KSA9XG4gICAgZm9sZF9yaWdodChcbiAgICAgIChwOiBQaWVjZS50LCAodHJpbSwgciwgdGwpKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICB8IFNlY29uZGFyeSh3KSA9PiAoVHJpbS5jb25zX3codywgdHJpbSksIHIsIHRsKVxuICAgICAgICB8IEdyb3V0KGcpID0+IChUcmltLihtZXJnZShjb25zX2coZywgdHJpbSkpKSwgciwgdGwpXG4gICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgIGxldCBjaGlsZHJlbiA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAgICAgICAgIChoZCwgdGwpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdGwgPSB0bDtcbiAgICAgICAgICAgICAgICBsZXQgaGQgPSByZWdyb3V0KE5pYi5TaGFwZS4oY29uY2F2ZSgpLCBjb25jYXZlKCkpLCBoZCk7XG4gICAgICAgICAgICAgICAgW2hkLCAuLi50bF07XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHQuY2hpbGRyZW4sXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgcCA9IFBpZWNlLlRpbGUoey4uLnQsIGNoaWxkcmVufSk7XG4gICAgICAgICAgbGV0IChsJywgcicpID1cbiAgICAgICAgICAgIFRpbGUuc2hhcGVzKHQpIHw+IChkID09IExlZnQgPyBUdXBsZVV0aWwuc3dhcCA6IEZ1bi5pZCk7XG4gICAgICAgICAgbGV0IHRyaW0gPSBUcmltLnJlZ3JvdXQoZCwgKHInLCByKSwgdHJpbSk7XG4gICAgICAgICAgKFRyaW0uZW1wdHksIGwnLCBbcCwgLi4uVHJpbS50b19zZWcodHJpbSldIEAgdGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGQgPT0gTGVmdCA/IExpc3QucmV2IDogRnVuLmlkKShhZmZpeCksXG4gICAgICAoQWJhLm1rKFtbXV0sIFtdKSwgciwgZW1wdHkpLFxuICAgICk7XG4gIGQgPT0gTGVmdCA/IChUcmltLnJldih0cmltKSwgcywgcmV2KGFmZml4KSkgOiAodHJpbSwgcywgYWZmaXgpO1xufTtcblxuLy8gZm9yIGludGVybmFsIHVzZSB3aGVuIGRlYWxpbmcgd2l0aCBzZWdtZW50cyBpbiByZXZlcnNlIG9yZGVyIChlZyBBZmZpeC5yZSlcbi8vIGxldCBmbGlwX25pYnMgPVxuLy8gICBMaXN0Lm1hcChcbi8vICAgICBmdW5cbi8vICAgICB8IChQaWVjZS5TZWNvbmRhcnkoXykgfCBHcm91dChfKSkgYXMgcCA9PiBwXG4vLyAgICAgfCBUaWxlKHQpID0+IFRpbGUoey4uLnQsIG1vbGQ6IE1vbGQuZmxpcF9uaWJzKHQubW9sZCl9KSxcbi8vICAgKTtcblxubGV0IHNwbGl0X2J5X21hdGNoaW5nID0gKGlkOiBJZC50KTogKHQgPT4gQWJhLnQodCwgVGlsZS50KSkgPT5cbiAgQWJhLnNwbGl0KFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuIHQuaWQgPT0gaWQgPT4gRWl0aGVyLlIodClcbiAgICB8IHAgPT4gTChwKSxcbiAgKTtcblxuLy8gbW9kdWxlIE1hdGNoID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xubGV0IHJlYyByZWFzc2VtYmxlID0gKHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChpbmNvbXBsZXRlX3RpbGVzKHNlZykpIHtcbiAgfCBbXSA9PiBzZWdcbiAgfCBbdCwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKEFiYS50cmltKHNwbGl0X2J5X21hdGNoaW5nKHQuaWQsIHNlZykpKSB7XG4gICAgfCBOb25lID0+IHNlZ1xuICAgIHwgU29tZSgoc2VnX2wsIG1hdGNoLCBzZWdfcikpID0+XG4gICAgICBsZXQgdCA9IFRpbGUucmVhc3NlbWJsZShtYXRjaCk7XG4gICAgICBsZXQgY2hpbGRyZW4gPSBMaXN0Lm1hcChyZWFzc2VtYmxlLCB0LmNoaWxkcmVuKTtcbiAgICAgIGxldCBwID0gVGlsZS50b19waWVjZSh7Li4udCwgY2hpbGRyZW59KTtcbiAgICAgIHNlZ19sIEAgW3AsIC4uLnJlYXNzZW1ibGUoc2VnX3IpXTtcbiAgICB9XG4gIH07XG5cbmxldCB0cmltX2Y6IChsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSksIERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKHRyaW1fbCwgZCwgcHMpID0+IHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExlZnQgPT4gcHMgfD4gdHJpbV9sXG4gICAgfCBSaWdodCA9PiBwcyB8PiBMaXN0LnJldiB8PiB0cmltX2wgfD4gTGlzdC5yZXZcbiAgICB9O1xuICB9O1xuXG5sZXQgdHJpbV9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgc2Vjb25kYXJ5ICovXG4gICAgbGV0IHJlYyB0cmltX2wgPSB4cyA9PlxuICAgICAgc3dpdGNoICh4cykge1xuICAgICAgfCBbXSA9PiBbXVxuICAgICAgfCBbUGllY2UuU2Vjb25kYXJ5KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgdHJpbV9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBncm91dCAqL1xuICAgIGxldCByZWMgdHJpbV9sOiBsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSkgPVxuICAgICAgeHMgPT5cbiAgICAgICAgc3dpdGNoICh4cykge1xuICAgICAgICB8IFtdID0+IFtdXG4gICAgICAgIHwgW0dyb3V0KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgICB8IFtfLCAuLi5fXSA9PiB4c1xuICAgICAgICB9O1xuICAgIHRyaW1fZih0cmltX2wsIGQsIHBzKTtcbiAgfTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBzZWNvbmRhcnksIGNvbnRpbnVpbmdcbiAgICAgICB0byB0cmltIGFyb3VuZCBncm91dCB1bnRpbCBmaXJzdCBUaWxlIGlzIHJlYWNoZWQgKi9cbiAgICBsZXQgcmVjIHRyaW1fbDogbGlzdChCYXNlLnBpZWNlKSA9PiBsaXN0KEJhc2UucGllY2UpID1cbiAgICAgIHhzID0+XG4gICAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICB8IFtTZWNvbmRhcnkoXykgfCBHcm91dChfKSwgLi4ueHNdID0+IHRyaW1fbCh4cylcbiAgICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgICAgfTtcbiAgICB0cmltX2YodHJpbV9sLCBkLCBwcyk7XG4gIH07XG5cbmxldCB0cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgZ3JvdXQsIHNraXBwaW5nIG92ZXIgc2Vjb25kYXJ5LFxuICAgICAgIGJ1dCBub3Qgc2tpcHBpbmcgb3ZlciBvdGhlciBwaWVjZXMuICovXG4gICAgbGV0IHJlYyB0cmltX2w6IGxpc3QoQmFzZS5waWVjZSkgPT4gbGlzdChCYXNlLnBpZWNlKSA9XG4gICAgICB4cyA9PlxuICAgICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICAgIHwgW10gPT4gW11cbiAgICAgICAgfCBbU2Vjb25kYXJ5KHcpLCAuLi54c10gPT4gW1NlY29uZGFyeSh3KSwgLi4udHJpbV9sKHhzKV1cbiAgICAgICAgfCBbR3JvdXQoXyksIC4uLnhzXSA9PiB0cmltX2woeHMpXG4gICAgICAgIHwgW18sIC4uLl9dID0+IHhzXG4gICAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgZWRnZV9zaGFwZV9vZiA9IChkOiBEaXJlY3Rpb24udCwgcHM6IHQpOiBvcHRpb24oTmliLlNoYXBlLnQpID0+IHtcbiAgbGV0IHRyaW1tZWQgPSB0cmltX3NlY29uZGFyeShkLCBwcyk7XG4gIHN3aXRjaCAoZCwgTGlzdFV0aWwuaGRfb3B0KHRyaW1tZWQpLCBMaXN0VXRpbC5sYXN0X29wdCh0cmltbWVkKSkge1xuICB8IChSaWdodCwgXywgU29tZShwKSkgPT4gcCB8PiBQaWVjZS5zaGFwZXMgfD4gT3B0aW9uLm1hcChzbmQpXG4gIHwgKExlZnQsIFNvbWUocCksIF8pID0+IHAgfD4gUGllY2Uuc2hhcGVzIHw+IE9wdGlvbi5tYXAoZnN0KVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IGVkZ2VfZGlyZWN0aW9uX29mID0gKGQ6IERpcmVjdGlvbi50LCBwczogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgT3B0aW9uLm1hcChOaWIuU2hhcGUuYWJzb2x1dGUoZCksIGVkZ2Vfc2hhcGVfb2YoZCwgcHMpKTtcblxubGV0IHJlYyBzZXJpYWxpemUgPSAoc2VnOiB0KSA9PlxuICBzZWdcbiAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgKFBpZWNlLlNlY29uZGFyeShfKSB8IEdyb3V0KF8pIHwgVGlsZSh7c2hhcmRzOiBbX10sIF99KSkgYXMgcCA9PiBbXG4gICAgICAgICAgIHAsXG4gICAgICAgICBdXG4gICAgICAgfCBUaWxlKHQpID0+IHtcbiAgICAgICAgICAgbGV0IHNoYXJkcyA9XG4gICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICBUaWxlLnRvX3BpZWNlLFxuICAgICAgICAgICAgICAgVGlsZS5zcGxpdF9zaGFyZHModC5pZCwgdC5sYWJlbCwgdC5tb2xkLCB0LnNoYXJkcyksXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gTGlzdC5tYXAoc2VyaWFsaXplLCB0LmNoaWxkcmVuKTtcbiAgICAgICAgICAgQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pXG4gICAgICAgICAgIHw+IEFiYS5qb2luKHMgPT4gW3NdLCBGdW4uaWQpXG4gICAgICAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgICAgICAgfSxcbiAgICAgKTtcblxubGV0IHNhbWVsaW5lX3NlY29uZGFyeSA9XG4gIExpc3QuZm9yX2FsbChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlNlY29uZGFyeSh3KSA9PiAhU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KVxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IGV4cGVjdGVkX3NvcnRzID0gKHNvcnQ6IFNvcnQudCwgc2VnOiB0KTogbGlzdCgoaW50LCBTb3J0LnQpKSA9PiB7XG4gIGxldCBwID0gTGlzdC5udGgoc2VnKTtcbiAgbGV0IHJlYyBnbyA9IChzb3J0OiBTb3J0LnQsIHNrZWw6IFNrZWwudCk6IGxpc3QoKGxpc3QoaW50KSwgU29ydC50KSkgPT4ge1xuICAgIGxldCByb290ID0gU2tlbC5yb290KHNrZWwpO1xuICAgIGxldCBpbnNpZGVfc29ydHMgPVxuICAgICAgQWJhLmFiYV90cmlwbGVzKHJvb3QpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChuX2wsIGtpZCwgbl9yKSkgPT4ge1xuICAgICAgICAgICBsZXQgKF8sIHNfbCkgPSBQaWVjZS5uaWJfc29ydHMocChuX2wpKTtcbiAgICAgICAgICAgbGV0IChzX3IsIF8pID0gUGllY2UubmliX3NvcnRzKHAobl9yKSk7XG4gICAgICAgICAgIGxldCBzID0gc19sID09IHNfciA/IHNfbCA6IFNvcnQuQW55O1xuICAgICAgICAgICBnbyhzLCBraWQpO1xuICAgICAgICAgfSk7XG4gICAgbGV0IG91dHNpZGVfc29ydHMgPSB7XG4gICAgICBsZXQgbnMgPSBBYmEuZ2V0X2FzKHJvb3QpO1xuICAgICAgbGV0IChsX3NvcnQsIF8pID0gUGllY2UubmliX3NvcnRzKHAoQWJhLmZpcnN0X2Eocm9vdCkpKTtcbiAgICAgIGxldCAoXywgcl9zb3J0KSA9IFBpZWNlLm5pYl9zb3J0cyhwKEFiYS5sYXN0X2Eocm9vdCkpKTtcbiAgICAgIHN3aXRjaCAoc2tlbCkge1xuICAgICAgfCBPcChfKSA9PiBbKG5zLCBzb3J0KV1cbiAgICAgIHwgUHJlKF8sIHIpID0+IFsobnMsIHNvcnQpXSBAIGdvKHJfc29ydCwgcilcbiAgICAgIHwgUG9zdChsLCBfKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldXG4gICAgICB8IEJpbihsLCBfLCByKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldIEAgZ28ocl9zb3J0LCByKVxuICAgICAgfTtcbiAgICB9O1xuICAgIG91dHNpZGVfc29ydHMgQCBpbnNpZGVfc29ydHM7XG4gIH07XG4gIGdvKHNvcnQsIHNrZWwoc2VnKSlcbiAgfD4gTGlzdC5jb25jYXRfbWFwKCgobnMsIHMpKSA9PiBMaXN0Lm1hcChuID0+IChuLCBzKSwgbnMpKTtcbn07XG5cbmxldCByZWMgaG9sZXMgPSAoc2VnbWVudDogdCk6IGxpc3QoR3JvdXQudCkgPT5cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuU2Vjb25kYXJ5KF8pID0+IFtdXG4gICAgfCBUaWxlKHQpID0+IExpc3QuY29uY2F0X21hcChob2xlcywgdC5jaGlsZHJlbilcbiAgICB8IEdyb3V0KGcpID0+IFtnXSxcbiAgICBzZWdtZW50LFxuICApO1xuXG5sZXQgZ2V0X2NoaWxkcmVuczogdCA9PiBsaXN0KHQpID1cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB0LmNoaWxkcmVuXG4gICAgfCBfID0+IFtdLFxuICApO1xuXG5sZXQgcmVjIGdldF9pbmNvbXBsZXRlX2lkcyA9IChzZWc6IHQpOiBsaXN0KElkLnQpID0+XG4gIExpc3QuY29uY2F0X21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICBsZXQgaWRzID0gTGlzdC5jb25jYXRfbWFwKGdldF9pbmNvbXBsZXRlX2lkcywgdC5jaGlsZHJlbik7XG4gICAgICAgIFRpbGUuaXNfY29tcGxldGUodCkgPyBpZHMgOiBbdC5pZCwgLi4uaWRzXTtcbiAgICAgIH1cbiAgICB8IF8gPT4gW10sXG4gICAgc2VnLFxuICApO1xuXG5sZXQgaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkZWxpbWl0ZWRzID0gKHNlZzogdCk6IGxpc3QoSWQudCkgPT5cbiAgZ2V0X2NoaWxkcmVucyhzZWcpIHw+IExpc3QuY29uY2F0IHw+IGdldF9pbmNvbXBsZXRlX2lkcztcbiIsIm9wZW4gVXRpbDtcblxuLy8gbW9kdWxlIFByZWZpeCA9IEFmZml4Lk1ha2UoT3JpZW50YXRpb24uTCk7XG4vLyBtb2R1bGUgU3VmZml4ID0gQWZmaXguTWFrZShPcmllbnRhdGlvbi5SKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKFNlZ21lbnQudCwgU2VnbWVudC50KTtcblxubGV0IGVtcHR5ID0gU2VnbWVudC4oZW1wdHksIGVtcHR5KTtcblxubGV0IG5vX3NpYmxpbmdzOiB0ID0+IGJvb2wgPSBzID0+IHMgPT0gZW1wdHk7XG5cbmxldCB1bnppcDogKGludCwgU2VnbWVudC50KSA9PiB0ID0gTGlzdFV0aWwuc3BsaXRfbjtcbmxldCB6aXAgPSAofnNlbD1TZWdtZW50LmVtcHR5LCAocHJlLCBzdWYpOiB0KSA9PlxuICBTZWdtZW50LmNvbmNhdChbcHJlLCBzZWwsIHN1Zl0pO1xuXG5sZXQgcHJlcGVuZCA9IChkOiBEaXJlY3Rpb24udCwgc2VnOiBTZWdtZW50LnQsIChsLCByKTogdCk6IHQgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgTGVmdCA9PiAobCBAIHNlZywgcilcbiAgfCBSaWdodCA9PiAobCwgc2VnIEAgcilcbiAgfTtcblxubGV0IGNvbmNhdCA9IChzaWJzczogbGlzdCh0KSk6IHQgPT5cbiAgc2lic3NcbiAgfD4gTGlzdC5zcGxpdFxuICB8PiBQYWlyVXRpbC5tYXBfZnN0KExpc3QucmV2KVxuICB8PiBQYWlyVXRpbC5tYXBfZnN0KExpc3QuY29uY2F0KVxuICB8PiBQYWlyVXRpbC5tYXBfc25kKExpc3QuY29uY2F0KTtcblxuLy8gbGV0IGNvbnNpc3RlbnRfc2hhcmRzID0gKChwcmUsIHN1Zik6IHQpOiBib29sID0+IHtcbi8vICAgbGV0IHNoYXJkc19wcmUgPSBQcmVmaXguc2hhcmRzKHByZSk7XG4vLyAgIGxldCBzaGFyZHNfc3VmID0gU3VmZml4LnNoYXJkcyhzdWYpO1xuLy8gICBMaXN0VXRpbC5ncm91cF9ieShTaGFyZC5pZCwgc2hhcmRzX3ByZSBAIHNoYXJkc19zdWYpXG4vLyAgIHw+IExpc3QuZm9yX2FsbCgoKF8sIHNoYXJkcykpID0+IFNoYXJkLmNvbnNpc3RlbnRfbW9sZHMoc2hhcmRzKSAhPSBbXSk7XG4vLyB9O1xuXG5sZXQgcmVtb2xkID0gKChwcmUsIF8pIGFzIHNpYnM6IHQsIHM6IFNvcnQudCk6IHQgPT5cbiAgU2VnbWVudC5yZW1vbGQoemlwKHNpYnMpLCBzKSB8PiB1bnppcChMaXN0Lmxlbmd0aChwcmUpKTtcblxubGV0IHNoYXBlcyA9ICgocHJlLCBzdWYpOiB0KSA9PiB7XG4gIGxldCBzID0gTmliLlNoYXBlLmNvbmNhdmUoKTtcbiAgbGV0IChfLCBsLCBfKSA9IFNlZ21lbnQuc2hhcGVfYWZmaXgoTGVmdCwgcHJlLCBzKTtcbiAgbGV0IChfLCByLCBfKSA9IFNlZ21lbnQuc2hhcGVfYWZmaXgoUmlnaHQsIHN1Ziwgcyk7XG4gIChsLCByKTtcbn07XG5cbmxldCBpc19taXNtYXRjaCA9ICgobCwgcik6IHQpOiBib29sID0+IHtcbiAgLyogcHJlZGljdHMgaWYgZ3JvdXQgaXMgbmVjY2Vzc2FyeSBiZXR3ZWVuIHNpYmxpbmdzICovXG4gIHN3aXRjaCAoU2VnbWVudC5lZGdlX3NoYXBlX29mKExlZnQsIHIpLCBTZWdtZW50LmVkZ2Vfc2hhcGVfb2YoUmlnaHQsIGwpKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IGZhbHNlXG4gIHwgKHMxLCBzMikgPT4gczEgPT0gczJcbiAgfTtcbn07XG5cbmxldCBjb250YWluc19tYXRjaGluZyA9ICh0OiBUaWxlLnQsIChwcmUsIHN1Zik6IHQpID0+XG4gIFNlZ21lbnQuKGNvbnRhaW5zX21hdGNoaW5nKHQsIHByZSkgfHwgY29udGFpbnNfbWF0Y2hpbmcodCwgc3VmKSk7XG5cbmxldCBwdXNoID0gKG9udG86IERpcmVjdGlvbi50LCBwOiBQaWVjZS50LCAocHJlLCBzdWYpOiB0KTogdCA9PlxuICBzd2l0Y2ggKG9udG8pIHtcbiAgfCBMZWZ0ID0+IChwcmUgQCBbcF0sIHN1ZilcbiAgfCBSaWdodCA9PiAocHJlLCBbcCwgLi4uc3VmXSlcbiAgfTtcblxubGV0IHBvcCA9IChmcm9tOiBEaXJlY3Rpb24udCwgKHByZSwgc3VmKTogdCk6IG9wdGlvbigoUGllY2UudCwgdCkpID0+XG4gIHN3aXRjaCAoZnJvbSkge1xuICB8IExlZnQgPT5cbiAgICBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChwcmUpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHByZSwgcCkpID0+IHtcbiAgICAgICAgIGxldCAocHJlJywgcCkgPSBQaWVjZS5wb3BfcihwKTtcbiAgICAgICAgIChwLCAocHJlIEAgcHJlJywgc3VmKSk7XG4gICAgICAgfSlcbiAgfCBSaWdodCA9PlxuICAgIExpc3RVdGlsLnNwbGl0X2ZpcnN0X29wdChzdWYpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHAsIHN1ZikpID0+IHtcbiAgICAgICAgIGxldCAocCwgc3VmJykgPSBQaWVjZS5wb3BfbChwKTtcbiAgICAgICAgIChwLCAocHJlLCBzdWYnIEAgc3VmKSk7XG4gICAgICAgfSlcbiAgfTtcblxubGV0IGluY29tcGxldGVfdGlsZXMgPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LmluY29tcGxldGVfdGlsZXMpO1xuXG5sZXQgc3BsaXRfYnlfbWF0Y2hpbmcgPSBpZCA9PiBUdXBsZVV0aWwubWFwMihTZWdtZW50LnNwbGl0X2J5X21hdGNoaW5nKGlkKSk7XG5cbmxldCByZWFzc2VtYmxlID0gVHVwbGVVdGlsLm1hcDIoU2VnbWVudC5yZWFzc2VtYmxlKTtcblxubGV0IHJlZ3JvdXQgPSAoKHByZSwgc3VmKTogdCkgPT4ge1xuICBsZXQgcyA9IE5pYi5TaGFwZS5jb25jYXZlKCk7XG4gIGxldCBzdWYgPSBTZWdtZW50LnJlZ3JvdXRfYWZmaXgoUmlnaHQsIHN1Ziwgcyk7XG4gIGxldCAodHJpbV9sLCBzX2wsIHByZSkgPSBTZWdtZW50LnJlZ3JvdXRfYWZmaXgoTGVmdCwgcHJlLCBzKTtcbiAgKChwcmUsIHNfbCwgdHJpbV9sKSwgc3VmKTtcbn07XG5cbmxldCBsZWZ0X25laWdoYm9yOiB0ID0+IG9wdGlvbihQaWVjZS50KSA9ICgobCwgXykpID0+IExpc3RVdGlsLmxhc3Rfb3B0KGwpO1xuXG5sZXQgcmlnaHRfbmVpZ2hib3I6IHQgPT4gb3B0aW9uKFBpZWNlLnQpID0gKChfLCByKSkgPT4gTGlzdFV0aWwuaGRfb3B0KHIpO1xuXG5sZXQgbmVpZ2hib3JzOiB0ID0+IChvcHRpb24oUGllY2UudCksIG9wdGlvbihQaWVjZS50KSkgPVxuICBuID0+IChsZWZ0X25laWdoYm9yKG4pLCByaWdodF9uZWlnaGJvcihuKSk7XG5cbmxldCB0cmltX3NlY29uZGFyeSA9ICgobF9zaWJzLCByX3NpYnMpOiB0KSA9PiAoXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnkoUmlnaHQsIGxfc2licyksXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnkoTGVmdCwgcl9zaWJzKSxcbik7XG5cbmxldCB0cmltX2dyb3V0ID0gKChsX3NpYnMsIHJfc2licyk6IHQpID0+IChcbiAgU2VnbWVudC50cmltX2dyb3V0KFJpZ2h0LCBsX3NpYnMpLFxuICBTZWdtZW50LnRyaW1fZ3JvdXQoTGVmdCwgcl9zaWJzKSxcbik7XG5cbmxldCB0cmltX3NlY29uZGFyeV9hbmRfZ3JvdXQgPSAoKGxfc2licywgcl9zaWJzKTogdCkgPT4gKFxuICBTZWdtZW50LnRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dChSaWdodCwgbF9zaWJzKSxcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeV9hbmRfZ3JvdXQoTGVmdCwgcl9zaWJzKSxcbik7XG5cbmxldCBkaXJlY3Rpb25fYmV0d2VlbiA9ICgobCwgcik6IHQpOiBvcHRpb24oRGlyZWN0aW9uLnQpID0+XG4gIC8qIEZhY2luZyBkaXJlY3Rpb24gb2YgdGhlIHNoYXJlZCBuaWIgYmV0d2VlbiBsICYgciAqL1xuICBzd2l0Y2ggKFNlZ21lbnQuZWRnZV9kaXJlY3Rpb25fb2YoTGVmdCwgcikpIHtcbiAgfCBOb25lID0+IFNlZ21lbnQuZWRnZV9kaXJlY3Rpb25fb2YoUmlnaHQsIGwpXG4gIHwgZCA9PiBkXG4gIH07XG5cbmxldCBtb2xkX2ZpdHRpbmdfYmV0d2VlbiA9IChzb3J0OiBTb3J0LnQsIHA6IFByZWNlZGVuY2UudCwgc2liczogdCk6IE1vbGQudCA9PlxuICBzd2l0Y2ggKGRpcmVjdGlvbl9iZXR3ZWVuKHNpYnMpKSB7XG4gIHwgU29tZShkKSA9PiBNb2xkLmNoZXZyb24oc29ydCwgcCwgZClcbiAgfCBOb25lID0+IE1vbGQubWtfb3Aoc29ydCwgW10pXG4gIH07XG5cbmxldCBzb3J0ZWRfY2hpbGRyZW4gPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LnNvcnRlZF9jaGlsZHJlbik7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5leGNlcHRpb24gRW1wdHlfc2hhcmRfYWZmaXg7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcCA9IGludDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpZDogSWQudCxcbiAgbGFiZWw6IExhYmVsLnQsXG4gIG1vbGQ6IE1vbGQudCxcbiAgc2hhcmRzOiAobGlzdChpbnQpLCBsaXN0KGludCkpLFxuICBjaGlsZHJlbjogKGxpc3QoU2VnbWVudC50KSwgbGlzdChTZWdtZW50LnQpKSxcbn07XG5cbi8vIFRPRE8oZCkgcmV2aXNpdCBuYW1pbmcgdy5yLnQuIG91dGVyIHZzIGlubmVyIHNoYXJkc1xubGV0IGxfc2hhcmQgPSBhID0+XG4gIExpc3RVdGlsLmhkX29wdChmc3QoYS5zaGFyZHMpKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG5sZXQgcl9zaGFyZCA9IGEgPT5cbiAgTGlzdFV0aWwubGFzdF9vcHQoc25kKGEuc2hhcmRzKSlcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpO1xuXG5sZXQgbmlicyA9IChhOiB0KSA9PiB7XG4gIGxldCAobCwgXykgPSBNb2xkLm5pYnMofmluZGV4PWxfc2hhcmQoYSksIGEubW9sZCk7XG4gIGxldCAoXywgcikgPSBNb2xkLm5pYnMofmluZGV4PXJfc2hhcmQoYSksIGEubW9sZCk7XG4gIChsLCByKTtcbn07XG5sZXQgc2hhcGVzID0gYSA9PiB7XG4gIGxldCAobCwgcikgPSBuaWJzKGEpO1xuICAobC5zaGFwZSwgci5zaGFwZSk7XG59O1xuXG5sZXQgemlwID0gKGNoaWxkOiBTZWdtZW50LnQsIHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcywgY2hpbGRyZW59OiB0KTogVGlsZS50ID0+IHtcbiAgaWQsXG4gIGxhYmVsLFxuICBtb2xkLFxuICBzaGFyZHM6IGZzdChzaGFyZHMpIEAgc25kKHNoYXJkcyksXG4gIGNoaWxkcmVuOiBmc3QoY2hpbGRyZW4pIEAgW2NoaWxkLCAuLi5zbmQoY2hpbGRyZW4pXSxcbn07XG5cbmxldCBzb3J0ZWRfY2hpbGRyZW4gPSAoYTogdCkgPT4ge1xuICBsZXQgbiA9IExpc3QubGVuZ3RoKGZzdChhLmNoaWxkcmVuKSk7XG4gIGxldCB0ID0gemlwKFNlZ21lbnQuZW1wdHksIGEpO1xuICBsZXQgKGwsIF8sIHIpID0gTGlzdFV0aWwuc3BsaXRfbnRoKG4sIFRpbGUuc29ydGVkX2NoaWxkcmVuKHQpKTtcbiAgKGwsIHIpO1xufTtcblxuLy8gVE9ETyBmbGF0dGVuIHdpdGggc2hhcmQgaW5kaWNlc1xuLy8gbGV0IHN0ZXAgPSAoZnJhbWU6IHQpOiBzdGVwID0+IHtcbi8vICAgbGV0IChwcmVmaXgsIF8pID0gZnJhbWUuY2hpbGRyZW47XG4vLyAgIExpc3QubGVuZ3RoKHByZWZpeCk7XG4vLyB9O1xuXG5sZXQgcmVtb2xkID0gKGE6IHQpOiBsaXN0KHQpID0+XG4gIE1vbGRzLmdldChhLmxhYmVsKSB8PiBMaXN0Lm1hcChtb2xkID0+IHsuLi5hLCBtb2xkfSk7XG5cbi8vIGxldCBzb3J0ID0gKGZyYW1lOiB0KTogU29ydC50ID0+IHtcbi8vICAgYXNzZXJ0KHN0ZXAoZnJhbWUpID49IDAgJiYgc3RlcChmcmFtZSkgPCBMaXN0Lmxlbmd0aChmcmFtZS5tb2xkLmluXykpO1xuLy8gICBMaXN0Lm50aChmcmFtZS5tb2xkLmluXywgc3RlcChmcmFtZSkpO1xuLy8gfTtcbmxldCBzb3J0ID0gKGE6IHQpOiBTb3J0LnQgPT4ge1xuICBsZXQgKHByZSwgc3VmKSA9IGEuc2hhcmRzO1xuICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHByZSksIHN1Zikge1xuICB8IChTb21lKChfLCBpKSksIFtqLCAuLi5fXSkgPT5cbiAgICBsZXQgKF8sIGwpID0gTW9sZC5uaWJzKH5pbmRleD1pLCBhLm1vbGQpO1xuICAgIGxldCAociwgXykgPSBNb2xkLm5pYnMofmluZGV4PWosIGEubW9sZCk7XG4gICAgbC5zb3J0ID09IHIuc29ydCA/IGwuc29ydCA6IEFueTtcbiAgfCBfID0+IHJhaXNlKEVtcHR5X3NoYXJkX2FmZml4KVxuICB9O1xufTtcblxubGV0IGRpc2Fzc2VtYmxlID1cbiAgICAoe2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBjaGlsZHJlbjogKGtpZHNfbCwga2lkc19yKX06IHQpOiBTaWJsaW5ncy50ID0+IHtcbiAgbGV0IChzaGFyZHNfbCwgc2hhcmRzX3IpID1cbiAgICBzaGFyZHNcbiAgICB8PiBUdXBsZVV0aWwubWFwMihUaWxlLnNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQpKVxuICAgIHw+IFR1cGxlVXRpbC5tYXAyKExpc3QubWFwKFRpbGUudG9fcGllY2UpKTtcbiAgbGV0IGZsYXR0ZW4gPSAoc2hhcmRzLCBraWRzKSA9PlxuICAgIEFiYS5tayhzaGFyZHMsIGtpZHMpIHw+IEFiYS5qb2luKHAgPT4gW3BdLCBGdW4uaWQpIHw+IExpc3QuZmxhdHRlbjtcbiAgKGZsYXR0ZW4oc2hhcmRzX2wsIGtpZHNfbCksIGZsYXR0ZW4oc2hhcmRzX3IsIGtpZHNfcikpO1xufTtcblxubGV0IGNvbnRhaW5lcl9zaGFyZHMgPSAoYTogdCk6IChQaWVjZS50LCBQaWVjZS50KSA9PiB7XG4gIGxldCAoc2hhcmRzX2wsIHNoYXJkc19yKSA9XG4gICAgYS5zaGFyZHNcbiAgICB8PiBUdXBsZVV0aWwubWFwMihUaWxlLnNwbGl0X3NoYXJkcyhhLmlkLCBhLmxhYmVsLCBhLm1vbGQpKVxuICAgIHw+IFR1cGxlVXRpbC5tYXAyKExpc3QubWFwKFRpbGUudG9fcGllY2UpKTtcbiAgbGV0IGwgPVxuICAgIExpc3RVdGlsLmxhc3Rfb3B0KHNoYXJkc19sKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG4gIGxldCByID1cbiAgICBMaXN0VXRpbC5oZF9vcHQoc2hhcmRzX3IpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbiAgKGwsIHIpO1xufTtcblxubGV0IHJlYXNzZW1ibGUgPSAobWF0Y2hfbDogQWJhLnQoVGlsZS50LCBTZWdtZW50LnQpIGFzICdtLCBtYXRjaF9yOiAnbSk6IHQgPT4ge1xuICAvLyBUT0RPKGQpIGJpdCBoYWNreSwgbmVlZCB0byBkbyBhIGZsaXAvb3JpZW50YXRpb24gcGFzc1xuICAvLyBsZXQgbWF0Y2hfbCA9IEFiYS5tYXBfYihTZWdtZW50LnJldiwgbWF0Y2hfbCk7XG4gIGxldCAodF9sLCB0X3IpID0gVGlsZS4ocmVhc3NlbWJsZShtYXRjaF9sKSwgcmVhc3NlbWJsZShtYXRjaF9yKSk7XG4gIGFzc2VydCh0X2wuaWQgPT0gdF9yLmlkKTtcbiAge1xuICAgIGlkOiB0X2wuaWQsXG4gICAgbGFiZWw6IHRfbC5sYWJlbCxcbiAgICBtb2xkOiB0X2wubW9sZCxcbiAgICBzaGFyZHM6ICh0X2wuc2hhcmRzLCB0X3Iuc2hhcmRzKSxcbiAgICBjaGlsZHJlbjogKHRfbC5jaGlsZHJlbiwgdF9yLmNoaWxkcmVuKSxcbiAgfTtcbn07XG5cbi8vIG1vZHVsZSBNYXRjaCA9IHtcbi8vICAgbW9kdWxlIFByZWZpeCA9IFRpbGUuTWF0Y2guTWFrZShPcmllbnRhdGlvbi5MKTtcbi8vICAgbW9kdWxlIFN1ZmZpeCA9IFRpbGUuTWF0Y2guTWFrZShPcmllbnRhdGlvbi5SKTtcblxuLy8gICB0eXBlIGFuY2VzdG9yID0gdDtcbi8vICAgdHlwZSB0ID0gKFByZWZpeC50LCBTdWZmaXgudCk7XG5cbi8vICAgbGV0IGlkID0gKChwcmUsIF8pOiB0KSA9PiBQcmVmaXguaWQocHJlKTtcblxuLy8gICBsZXQgc2hhcmRzID0gKChwcmUsIHN1Zik6IHQpID0+XG4vLyAgICAgTGlzdC5yZXYoUHJlZml4LnNoYXJkcyhwcmUpKSBAIFN1ZmZpeC5zaGFyZHMoc3VmKTtcblxuLy8gICBsZXQgbGFiZWwgPSAoKF8sIHN1ZikpID0+IFN1ZmZpeC5sYWJlbChzdWYpO1xuXG4vLyAgIGxldCBsZW5ndGggPSAoKHByZSwgc3VmKSkgPT4gUHJlZml4Lmxlbmd0aChwcmUpICsgU3VmZml4Lmxlbmd0aChzdWYpO1xuXG4vLyAgIGxldCBjaGlsZHJlbiA9ICgocHJlLCBzdWYpKSA9PiAoXG4vLyAgICAgUHJlZml4LmNoaWxkcmVuKHByZSksXG4vLyAgICAgU3VmZml4LmNoaWxkcmVuKHN1ZiksXG4vLyAgICk7XG5cbi8vICAgbGV0IG1vbGQgPSAobTogdCkgPT4ge1xuLy8gICAgIGxldCBtb2xkcyA9XG4vLyAgICAgICBzd2l0Y2ggKFNoYXJkLmNvbnNpc3RlbnRfbW9sZHMoc2hhcmRzKG0pKSkge1xuLy8gICAgICAgfCBbXSA9PlxuLy8gICAgICAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiB1cG9uIGNvbnN0cnVjdC9kZXN0cnVjdCxcbi8vICAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBldmVyeXRoaW5nIHdpbGwgYmUgc3Vic2VxdWVudGx5IHJlbW9sZGVkXG4vLyAgICAgICAgIE1vbGRzLmdldChsYWJlbChtKSlcbi8vICAgICAgIHwgW18sIC4uLl9dIGFzIG1vbGRzID0+IG1vbGRzXG4vLyAgICAgICB9O1xuLy8gICAgIGFzc2VydChtb2xkcyAhPSBbXSk7XG4vLyAgICAgTGlzdC5oZChtb2xkcyk7XG4vLyAgIH07XG5cbi8vICAgbGV0IGpvaW4gPSAoKHByZSwgc3VmKTogdCkgPT4gKFByZWZpeC5qb2luKHByZSksIFN1ZmZpeC5qb2luKHN1ZikpO1xuXG4vLyAgIGxldCBjb21wbGV0ZSA9IChtOiB0KTogb3B0aW9uKGFuY2VzdG9yKSA9PiB7XG4vLyAgICAgbGV0IGlkID0gaWQobSk7XG4vLyAgICAgbGV0IGxhYmVsID0gbGFiZWwobSk7XG4vLyAgICAgbGV0IG1vbGQgPSBtb2xkKG0pO1xuLy8gICAgIGxlbmd0aChtKSA9PSBUaWxlLkxhYmVsLmxlbmd0aChsYWJlbClcbi8vICAgICAgID8gU29tZSh7aWQsIGxhYmVsLCBtb2xkLCBjaGlsZHJlbjogY2hpbGRyZW4obSl9KSA6IE5vbmU7XG4vLyAgIH07XG4vLyB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBnZW5lcmF0aW9uID0gKEFuY2VzdG9yLnQsIFNpYmxpbmdzLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBsaXN0KGdlbmVyYXRpb24pO1xuXG5sZXQgZW1wdHkgPSBbXTtcblxubGV0IHBhcmVudDogdCA9PiBvcHRpb24oQW5jZXN0b3IudCkgPVxuICBmdW5cbiAgfCBbXSA9PiBOb25lXG4gIHwgWyhwYXJlbnQsIF8pLCAuLi5fXSA9PiBTb21lKHBhcmVudCk7XG5cbmxldCBzb3J0ID1cbiAgZnVuXG4gIHwgW10gPT4gU29ydC5yb290XG4gIHwgWyhhLCBfKSwgLi4uX10gPT4gQW5jZXN0b3Iuc29ydChhKTtcblxubGV0IHppcF9nZW4gPSAoc2VnOiBTZWdtZW50LnQsIChhLCAocHJlLCBzdWYpKTogZ2VuZXJhdGlvbik6IFNlZ21lbnQudCA9PlxuICBwcmUgQCBbUGllY2UuVGlsZShBbmNlc3Rvci56aXAoc2VnLCBhKSksIC4uLnN1Zl07XG5sZXQgemlwID0gKHNlZzogU2VnbWVudC50LCBhbmNzOiB0KSA9PiBhbmNzIHw+IExpc3QuZm9sZF9sZWZ0KHppcF9nZW4sIHNlZyk7XG5cbmxldCBkaXNhc3NlbWJsZSA9IGFuY3MgPT5cbiAgYW5jc1xuICB8PiBMaXN0Lm1hcCgoKGEsIHNpYnMpKSA9PlxuICAgICAgIFNpYmxpbmdzLmNvbmNhdChbQW5jZXN0b3IuZGlzYXNzZW1ibGUoYSksIHNpYnNdKVxuICAgICApXG4gIHw+IFNpYmxpbmdzLmNvbmNhdDtcblxuLy8gbGV0IHJlbW9sZCA9IChhbmNlc3RvcnM6IHQpOiBsaXN0KHQpID0+XG4vLyAgIExpc3QuZm9sZF9yaWdodChcbi8vICAgICAoKGEsIHNpYnMpLCByZW1vbGRlZCkgPT4ge1xuLy8gICAgICAgb3BlbiBMaXN0VXRpbC5TeW50YXg7XG4vLyAgICAgICBsZXQrIGFuY2VzdG9ycyA9IHJlbW9sZGVkXG4vLyAgICAgICBhbmQrIHNpYnMgPSBTaWJsaW5ncy5yZW1vbGQoc2licylcbi8vICAgICAgIGFuZCsgYSA9IEFuY2VzdG9yLnJlbW9sZChhKTtcbi8vICAgICAgIFsoYSwgc2licyksIC4uLmFuY2VzdG9yc107XG4vLyAgICAgfSxcbi8vICAgICBhbmNlc3RvcnMsXG4vLyAgICAgW2VtcHR5XSxcbi8vICAgKTtcblxubGV0IHNrZWwgPSAoKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKTogU2tlbC50ID0+IHtcbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aChwcmUpO1xuICBsZXQgYSA9IChuLCBQaWVjZS5UaWxlKEFuY2VzdG9yLnppcChTZWdtZW50LmVtcHR5LCBhKSkpO1xuICBsZXQgcHJlID1cbiAgICBwcmVcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChpLCBwKSlcbiAgICB8PiBMaXN0LmZpbHRlcigoKF8sIHApKSA9PiAhUGllY2UuaXNfc2Vjb25kYXJ5KHApKTtcbiAgbGV0IHN1ZiA9XG4gICAgc3VmXG4gICAgfD4gTGlzdC5tYXBpKChpLCBwKSA9PiAobiArIDEgKyBpLCBwKSlcbiAgICB8PiBMaXN0LmZpbHRlcigoKF8sIHApKSA9PiAhUGllY2UuaXNfc2Vjb25kYXJ5KHApKTtcbiAgU2tlbC5tayhwcmUgQCBbYSwgLi4uc3VmXSk7XG59O1xuXG4vLyBsZXQgc29ydHMgPSAoaSwgKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKSA9PiB7XG4vLyAgIGxldCBuID0gTGlzdC5sZW5ndGgocHJlKTtcbi8vICAgaWYgKGkgPCBMaXN0Lmxlbmd0aChwcmUpKSB7XG4vLyAgICAgTGlzdC5udGhfb3B0KHByZSwgaSlcbi8vICAgICB8PiBPcHRpb24ubWFwKFBpZWNlLnNvcnQpXG4vLyAgICAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkFuY2VzdG9ycy5zb3J0X291dFwiKSlcbi8vICAgfSBlbHNlIGlmIChpID4gbikge1xuLy8gICAgIExpc3QubnRoX29wdChzdWYsIGkgLSAxIC0gbilcbi8vICAgICB8PiBPcHRpb24ubWFwKFBpZWNlLnNvcnQpXG4vLyAgICAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkFuY2VzdG9ycy5zb3J0X291dFwiKSlcbi8vICAgfSBlbHNlIHtcbi8vICAgICBhLm1vbGQub3V0O1xuLy8gICB9O1xuLy8gfTtcblxubGV0IHJlZ3JvdXQgPSAoYW5jczogdCkgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICgoYSwgc2licyk6IGdlbmVyYXRpb24sIHJlZ3JvdXRlZCkgPT4ge1xuICAgICAgbGV0IHJlZ3JvdXRlZCA9IHJlZ3JvdXRlZDtcbiAgICAgIGxldCAoKHByZSwgbCwgdHJpbV9sKSwgKHRyaW1fciwgciwgc3VmKSkgPSBTaWJsaW5ncy5yZWdyb3V0KHNpYnMpO1xuICAgICAgbGV0IChsJywgcicpID0gVHVwbGVVdGlsLm1hcDIoTmliLnNoYXBlLCBNb2xkLm5pYnMoYS5tb2xkKSk7XG4gICAgICBsZXQgdHJpbV9sID0gU2VnbWVudC5UcmltLnJlZ3JvdXQoTGVmdCwgKGwsIGwnKSwgdHJpbV9sKTtcbiAgICAgIGxldCB0cmltX3IgPSBTZWdtZW50LlRyaW0ucmVncm91dChSaWdodCwgKHInLCByKSwgdHJpbV9yKTtcbiAgICAgIGxldCBwcmUgPSBwcmUgQCBTZWdtZW50LlRyaW0udG9fc2VnKHRyaW1fbCk7XG4gICAgICBsZXQgc3VmID0gU2VnbWVudC5UcmltLnRvX3NlZyh0cmltX3IpIEAgc3VmO1xuICAgICAgWyhhLCAocHJlLCBzdWYpKSwgLi4ucmVncm91dGVkXTtcbiAgICB9LFxuICAgIGFuY3MsXG4gICAgZW1wdHksXG4gICk7XG5cbmxldCBwYXJlbnRfbWF0Y2hlcyA9ICh0OiBUaWxlLnQsIGFuY3M6IHQpID0+XG4gIHN3aXRjaCAoYW5jcykge1xuICB8IFtdID0+IGZhbHNlXG4gIHwgWyhhLCBfKSwgLi4uX10gPT4gYS5pZCA9PSB0LmlkXG4gIH07XG4iLCJ0eXBlIHQgPSBpbnQ7XG5sZXQgdCA9IHJlZigwKTtcblxubGV0IHRpY2sgPSAoKTogdCA9PiB7XG4gIGxldCB0aW1lID0gdF47XG4gIHQgOj0gdGltZSArIDE7XG4gIHRpbWU7XG59O1xuXG5sZXQgbHQgPSAoPCk7XG5cbmxldCBtaW4gPSBtaW47XG5sZXQgbWF4ID0gbWF4O1xuXG5sZXQgbWF4X3RpbWUgPSBJbnQubWF4X2ludDtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoVGltZS50KTtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgbGV0IHRvdWNoZWQ6IHQ7XG59O1xuXG5sZXQgdXBkYXRlID0gKHQ6IFRpbWUudCwgZXM6IGxpc3QoRWZmZWN0LnQpLCB0ZDogdCkgPT5cbiAgZXNcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKHRkLCBlOiBFZmZlY3QudCkgPT5cbiAgICAgICAgIHN3aXRjaCAoZSkge1xuICAgICAgICAgfCBEZWxldGUoaWQpID0+IHRkIHw+IHJlbW92ZShpZClcbiAgICAgICAgIHwgVG91Y2goaWQpID0+XG4gICAgICAgICAgIHRkXG4gICAgICAgICAgIHw+IHVwZGF0ZShcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICB8IE5vbmUgPT4gU29tZSh0KVxuICAgICAgICAgICAgICAgIHwgU29tZSh0JykgPT4gU29tZShUaW1lLm1heCh0LCB0JykpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICB9LFxuICAgICAgIHRkLFxuICAgICApO1xuIiwibGV0IGxhbSA9IFwizrtcIjtcbmxldCB1cF9hcnJvdyA9IFwi4oaRXCI7XG5sZXQgZG93bl9hcnJvdyA9IFwi4oaTXCI7XG5sZXQgbGVmdF9hcnJvdyA9IFwi4oaQXCI7XG5sZXQgcmlnaHRfYXJyb3cgPSBcIuKGklwiO1xubGV0IG5ic3AgPSBcIlxceEMyXFx4QTBcIjtcbmxldCB6d3NwID0gXCLigItcIjtcblxubGV0IHR5cGVBcnJvd1N5bSA9IFwi4oaSXCI7IC8vIFUrMjE5MiBcIlJpZ2h0d2FyZHMgQXJyb3dcIlxubGV0IGNhc3RBcnJvd1N5bSA9IFwi4oeoXCI7XG5cbmxldCBlbGxpcHNpcyA9IFwiXFx4RTJcXHg4MFxceEE2XCI7XG5cbi8vIGNvcGllZCBmcm9tIGhhemVsXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcm93ID0gaW50O1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjb2wgPSBpbnQ7XG5cbm1vZHVsZSBQb2ludCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgcm93LFxuICAgIGNvbCxcbiAgfTtcbiAgbGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuXG4gIGxldCBlcXVhbHM6ICh0LCB0KSA9PiBib29sID0gKHAsIHEpID0+IHAucm93ID09IHEucm93ICYmIHAuY29sID09IHEuY29sO1xuXG4gIHR5cGUgY29tcGFyaXNvbiA9XG4gICAgfCBFeGFjdFxuICAgIHwgVW5kZXJcbiAgICB8IE92ZXI7XG5cbiAgbGV0IGNvbXAgPSAoY3VycmVudCwgdGFyZ2V0KTogY29tcGFyaXNvbiA9PlxuICAgIHN3aXRjaCAoKSB7XG4gICAgfCBfIHdoZW4gY3VycmVudCA9PSB0YXJnZXQgPT4gRXhhY3RcbiAgICB8IF8gd2hlbiBjdXJyZW50IDwgdGFyZ2V0ID0+IFVuZGVyXG4gICAgfCBfID0+IE92ZXJcbiAgICB9O1xuICBsZXQgY29tcGFyZSA9IChwMSwgcDIpID0+XG4gICAgc3dpdGNoIChjb21wKHAxLCBwMikpIHtcbiAgICB8IEV4YWN0ID0+IDBcbiAgICB8IFVuZGVyID0+ICgtMSlcbiAgICB8IE92ZXIgPT4gMVxuICAgIH07XG5cbiAgbGV0IGRjb21wID0gKGRpcmVjdGlvbjogRGlyZWN0aW9uLnQsIGEsIGIpID0+XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICB8IFJpZ2h0ID0+IGNvbXAoYSwgYilcbiAgICB8IExlZnQgPT4gY29tcChiLCBhKVxuICAgIH07XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG1lYXN1cmVtZW50ID0ge1xuICBvcmlnaW46IFBvaW50LnQsXG4gIGxhc3Q6IFBvaW50LnQsXG59O1xuXG4vLyBpbmRlbnRhdGlvbiByZWxhdGl2ZSB0byBjb250YWluZXJcbnR5cGUgcmVsX2luZGVudCA9IGludDtcbi8vIGluZGVudGF0aW9uIHJlbGF0aXZlIHRvIGNvZGUgY29udGFpbmVyXG50eXBlIGFic19pbmRlbnQgPSBpbnQ7XG5cbm1vZHVsZSBSb3dzID0ge1xuICBpbmNsdWRlIEludE1hcDtcbiAgdHlwZSBzaGFwZSA9IHtcbiAgICBpbmRlbnQ6IGNvbCxcbiAgICBtYXhfY29sOiBjb2wsXG4gIH07XG4gIHR5cGUgdCA9IEludE1hcC50KHNoYXBlKTtcblxuICBsZXQgbWF4X2NvbCA9IChyczogbGlzdChyb3cpLCBtYXA6IHQpID0+XG4gICAgcnMgfD4gTGlzdC5tYXAociA9PiBmaW5kKHIsIG1hcCkubWF4X2NvbCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAwKTtcblxuICBsZXQgbWluX2NvbCA9IChyczogbGlzdChyb3cpLCBtYXA6IHQpID0+XG4gICAgcnNcbiAgICB8PiBMaXN0Lm1hcChyID0+IGZpbmQociwgbWFwKS5pbmRlbnQpXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQobWluLCBJbnQubWF4X2ludCk7XG59O1xuXG5tb2R1bGUgU2hhcmRzID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc2hhcmQgPSAoaW50LCBtZWFzdXJlbWVudCk7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdChzaGFyZCk7XG5cbiAgLy8gZWxlbWVudHMgb2YgcmV0dXJuZWQgbGlzdCBhcmUgbm9uZW1wdHlcbiAgbGV0IHJlYyBzcGxpdF9ieV9yb3c6IHQgPT4gbGlzdCh0KSA9XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAoc3BsaXRfYnlfcm93KHRsKSkge1xuICAgICAgfCBbXSA9PiBbW2hkXV1cbiAgICAgIHwgW3JvdywgLi4ucm93c10gPT5cbiAgICAgICAgc25kKExpc3QuaGQocm93KSkub3JpZ2luLnJvdyA9PSBzbmQoaGQpLm9yaWdpbi5yb3dcbiAgICAgICAgICA/IFtbaGQsIC4uLnJvd10sIC4uLnJvd3NdIDogW1toZF0sIHJvdywgLi4ucm93c11cbiAgICAgIH07XG4gIC8vIGxldCBsYXN0ID0gKHNoYXJkczogdCkgPT5cbiAgLy8gICBzaGFyZHNcbiAgLy8gICB8PiBMaXN0LnNvcnQoKChpLCBfKSwgKGosIF8pKSA9PiBJbnQuY29tcGFyZShpLCBqKSlcbiAgLy8gICB8PiBMaXN0VXRpbC5sYXN0X29wdFxuICAvLyAgIHw+IE9wdGlvbi5tYXAoc25kKTtcbn07XG5cbnR5cGUgdCA9IHtcbiAgdGlsZXM6IElkLk1hcC50KFNoYXJkcy50KSxcbiAgZ3JvdXQ6IElkLk1hcC50KG1lYXN1cmVtZW50KSxcbiAgc2Vjb25kYXJ5OiBJZC5NYXAudChtZWFzdXJlbWVudCksXG4gIHJvd3M6IFJvd3MudCxcbiAgbGluZWJyZWFrczogSWQuTWFwLnQocmVsX2luZGVudCksXG59O1xuXG5sZXQgZW1wdHkgPSB7XG4gIHRpbGVzOiBJZC5NYXAuZW1wdHksXG4gIGdyb3V0OiBJZC5NYXAuZW1wdHksXG4gIHNlY29uZGFyeTogSWQuTWFwLmVtcHR5LFxuICByb3dzOiBSb3dzLmVtcHR5LFxuICBsaW5lYnJlYWtzOiBJZC5NYXAuZW1wdHksXG59O1xuXG5sZXQgYWRkX3MgPSAoaWQ6IElkLnQsIGk6IGludCwgbSwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgdGlsZXM6XG4gICAgbWFwLnRpbGVzXG4gICAgfD4gSWQuTWFwLnVwZGF0ZShcbiAgICAgICAgIGlkLFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IE5vbmUgPT4gU29tZShbKGksIG0pXSlcbiAgICAgICAgIHwgU29tZShtcykgPT5cbiAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICBbKGksIG0pLCAuLi5tc11cbiAgICAgICAgICAgICB8PiBMaXN0LnNvcnQoKChpLCBfKSwgKGosIF8pKSA9PiBJbnQuY29tcGFyZShpLCBqKSksXG4gICAgICAgICAgICksXG4gICAgICAgKSxcbn07XG5cbi8vIGFzc3VtZXMgdGlsZSBpcyBzaW5nbGUgc2hhcmRcbmxldCBhZGRfdCA9ICh0OiBUaWxlLnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHRpbGVzOlxuICAgIG1hcC50aWxlc1xuICAgIHw+IElkLk1hcC51cGRhdGUoXG4gICAgICAgICB0LmlkLFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IE5vbmUgPT4gU29tZShbKFRpbGUubF9zaGFyZCh0KSwgbSldKVxuICAgICAgICAgfCBTb21lKG1zKSA9PiBTb21lKFsoVGlsZS5sX3NoYXJkKHQpLCBtKSwgLi4ubXNdKSxcbiAgICAgICApLFxufTtcbmxldCBhZGRfZyA9IChnOiBHcm91dC50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICBncm91dDogbWFwLmdyb3V0IHw+IElkLk1hcC5hZGQoZy5pZCwgbSksXG59O1xubGV0IGFkZF93ID0gKHc6IFNlY29uZGFyeS50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICBzZWNvbmRhcnk6IG1hcC5zZWNvbmRhcnkgfD4gSWQuTWFwLmFkZCh3LmlkLCBtKSxcbn07XG5sZXQgYWRkX3AgPSAocDogUGllY2UudCwgbSwgbWFwKSA9PlxuICBwXG4gIHw+IFBpZWNlLmdldChcbiAgICAgICB3ID0+IGFkZF93KHcsIG0sIG1hcCksXG4gICAgICAgZyA9PiBhZGRfZyhnLCBtLCBtYXApLFxuICAgICAgIHQgPT4gYWRkX3QodCwgbSwgbWFwKSxcbiAgICAgKTtcblxubGV0IGFkZF9yb3cgPSAocm93OiBpbnQsIHNoYXBlOiBSb3dzLnNoYXBlLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICByb3dzOiBSb3dzLmFkZChyb3csIHNoYXBlLCBtYXAucm93cyksXG59O1xuXG5sZXQgYWRkX2xiID0gKGlkLCBpbmRlbnQsIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIGxpbmVicmVha3M6IElkLk1hcC5hZGQoaWQsIGluZGVudCwgbWFwLmxpbmVicmVha3MpLFxufTtcblxubGV0IHNpbmdsZXRvbl93ID0gKHcsIG0pID0+IGVtcHR5IHw+IGFkZF93KHcsIG0pO1xubGV0IHNpbmdsZXRvbl9nID0gKGcsIG0pID0+IGVtcHR5IHw+IGFkZF9nKGcsIG0pO1xubGV0IHNpbmdsZXRvbl9zID0gKGlkLCBzaGFyZCwgbSkgPT4gZW1wdHkgfD4gYWRkX3MoaWQsIHNoYXJkLCBtKTtcblxuLy8gVE9ETyhkKSByZW5hbWVcbmxldCBmaW5kX29wdF9zaGFyZHMgPSAodDogVGlsZS50LCBtYXApID0+IElkLk1hcC5maW5kX29wdCh0LmlkLCBtYXAudGlsZXMpO1xubGV0IGZpbmRfc2hhcmRzID0gKHQ6IFRpbGUudCwgbWFwKSA9PiBJZC5NYXAuZmluZCh0LmlkLCBtYXAudGlsZXMpO1xuXG5sZXQgZmluZF9vcHRfbGIgPSAoaWQsIG1hcCkgPT4gSWQuTWFwLmZpbmRfb3B0KGlkLCBtYXAubGluZWJyZWFrcyk7XG5cbmxldCBmaW5kX3NoYXJkcycgPSAoaWQ6IElkLnQsIG1hcCkgPT5cbiAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC50aWxlcykpIHtcbiAgfCBOb25lID0+IFtdXG4gIHwgU29tZShzcykgPT4gc3NcbiAgfTtcblxubGV0IGZpbmRfdyA9ICh3OiBTZWNvbmRhcnkudCwgbWFwKTogbWVhc3VyZW1lbnQgPT5cbiAgSWQuTWFwLmZpbmQody5pZCwgbWFwLnNlY29uZGFyeSk7XG5sZXQgZmluZF9nID0gKGc6IEdyb3V0LnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+IElkLk1hcC5maW5kKGcuaWQsIG1hcC5ncm91dCk7XG4vLyByZXR1cm5zIHRoZSBtZWFzdXJlbWVudCBzcGFubmluZyB0aGUgd2hvbGUgdGlsZVxubGV0IGZpbmRfdCA9ICh0OiBUaWxlLnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+IHtcbiAgbGV0IHNoYXJkcyA9IElkLk1hcC5maW5kKHQuaWQsIG1hcC50aWxlcyk7XG4gIGxldCBmaXJzdCA9IExpc3RVdGlsLmFzc29jX2VycihUaWxlLmxfc2hhcmQodCksIHNoYXJkcywgXCJmaW5kX3RcIik7XG4gIGxldCBsYXN0ID0gTGlzdFV0aWwuYXNzb2NfZXJyKFRpbGUucl9zaGFyZCh0KSwgc2hhcmRzLCBcImZpbmRfdFwiKTtcbiAge29yaWdpbjogZmlyc3Qub3JpZ2luLCBsYXN0OiBsYXN0Lmxhc3R9O1xufTtcbi8vIGxldCBmaW5kX2EgPSAoe3NoYXJkczogKGwsIHIpLCBffSBhcyBhOiBBbmNlc3Rvci50LCBtYXApID0+XG4vLyAgIExpc3QuYXNzb2MobCBAIHIsIElkLk1hcC5maW5kKGEuaWQsIG1hcC50aWxlcykpO1xubGV0IGZpbmRfcCA9IChwOiBQaWVjZS50LCBtYXApOiBtZWFzdXJlbWVudCA9PlxuICBwXG4gIHw+IFBpZWNlLmdldChcbiAgICAgICB3ID0+IGZpbmRfdyh3LCBtYXApLFxuICAgICAgIGcgPT4gZmluZF9nKGcsIG1hcCksXG4gICAgICAgdCA9PiBmaW5kX3QodCwgbWFwKSxcbiAgICAgKTtcblxubGV0IGZpbmRfYnlfaWQgPSAoaWQ6IElkLnQsIG1hcDogdCk6IG9wdGlvbihtZWFzdXJlbWVudCkgPT4ge1xuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnNlY29uZGFyeSkpIHtcbiAgfCBTb21lKG0pID0+IFNvbWUobSlcbiAgfCBOb25lID0+XG4gICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC5ncm91dCkpIHtcbiAgICB8IFNvbWUobSkgPT4gU29tZShtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC50aWxlcykpIHtcbiAgICAgIHwgU29tZShzaGFyZHMpID0+XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgTGlzdFV0aWwuYXNzb2NfZXJyKExpc3QuaGQoc2hhcmRzKSB8PiBmc3QsIHNoYXJkcywgXCJmaW5kX2J5X2lkXCIpO1xuICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgTGlzdFV0aWwuYXNzb2NfZXJyKFxuICAgICAgICAgICAgTGlzdFV0aWwubGFzdChzaGFyZHMpIHw+IGZzdCxcbiAgICAgICAgICAgIHNoYXJkcyxcbiAgICAgICAgICAgIFwiZmluZF9ieV9pZFwiLFxuICAgICAgICAgICk7XG4gICAgICAgIFNvbWUoe29yaWdpbjogZmlyc3Qub3JpZ2luLCBsYXN0OiBsYXN0Lmxhc3R9KTtcbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBQcmludGYucHJpbnRmKFwiTWVhc3VyZWQuV0FSTklORzogaWQgJXMgbm90IGZvdW5kXCIsIElkLnRvX3N0cmluZyhpZCkpO1xuICAgICAgICBOb25lO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmxldCBwb3N0X3RpbGVfaW5kZW50ID0gKHQ6IFRpbGUudCkgPT4ge1xuICAvLyBoYWNrIGZvciBpbmRlbnQgZm9sbG93aW5nIGZ1bi9pZiB0aWxlcy5cbiAgLy8gcHJvcGVyIGZpeCBpbnZvbHZlcyB1cGRhdGluZyBtb2xkIGRhdGF0eXBlXG4gIC8vIHRvIHNwZWNpZnkgd2hldGhlciBhIHJpZ2h0LWZhY2luZyBjb25jYXZlXG4gIC8vIHRpcCBpbXBvc2VzIGluZGVudGF0aW9uIG9uIGEgZm9sbG93aW5nIG5ld2xpbmUuXG4gIGxldCBjb21wbGV0ZV9mdW4gPVxuICAgIFRpbGUuaXNfY29tcGxldGUodClcbiAgICAmJiAoXG4gICAgICB0LmxhYmVsID09IEZvcm0uZ2V0KFwiZnVuX1wiKS5sYWJlbCB8fCB0LmxhYmVsID09IEZvcm0uZ2V0KFwiaWZfXCIpLmxhYmVsXG4gICAgKTtcbiAgbGV0IG1pc3NpbmdfcmlnaHRfZXh0cmVtZSA9IFRpbGUucl9zaGFyZCh0KSA8IExpc3QubGVuZ3RoKHQubGFiZWwpIC0gMTtcbiAgY29tcGxldGVfZnVuIHx8IG1pc3NpbmdfcmlnaHRfZXh0cmVtZTtcbn07XG5cbmxldCBtaXNzaW5nX2xlZnRfZXh0cmVtZSA9ICh0OiBUaWxlLnQpID0+IFRpbGUubF9zaGFyZCh0KSA+IDA7XG5cbmxldCBpc19pbmRlbnRlZF9tYXAgPSAoc2VnOiBTZWdtZW50LnQpID0+IHtcbiAgbGV0IHJlYyBnbyA9ICh+aXNfaW5kZW50ZWQ9ZmFsc2UsIH5tYXA9SWQuTWFwLmVtcHR5LCBzZWc6IFNlZ21lbnQudCkgPT5cbiAgICBzZWdcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICgoaXNfaW5kZW50ZWQsIG1hcCksIHA6IFBpZWNlLnQpID0+XG4gICAgICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT4gKFxuICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICBJZC5NYXAuYWRkKHcuaWQsIGlzX2luZGVudGVkLCBtYXApLFxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgfCBTZWNvbmRhcnkoXylcbiAgICAgICAgICAgfCBHcm91dChfKSA9PiAoaXNfaW5kZW50ZWQsIG1hcClcbiAgICAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgICAgbGV0IGlzX2luZGVudGVkID0gaXNfaW5kZW50ZWQgfHwgcG9zdF90aWxlX2luZGVudCh0KTtcbiAgICAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgICAobWFwLCBjaGlsZCkgPT4gZ28ofmlzX2luZGVudGVkPXRydWUsIH5tYXAsIGNoaWxkKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCk7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCksXG4gICAgICAgKVxuICAgIHw+IHNuZDtcbiAgZ28oc2VnKTtcbn07XG5cbmxldCBvZl9zZWdtZW50ID0gKH5vbGQ6IHQ9ZW1wdHksIH50b3VjaGVkPVRvdWNoZWQuZW1wdHksIHNlZzogU2VnbWVudC50KTogdCA9PiB7XG4gIGxldCBpc19pbmRlbnRlZCA9IGlzX2luZGVudGVkX21hcChzZWcpO1xuXG4gIC8vIHJlY3Vyc2l2ZSBhY3Jvc3Mgc2VnJ3MgYmlkZWxpbWl0ZWQgY29udGFpbmVyc1xuICBsZXQgcmVjIGdvX25lc3RlZCA9XG4gICAgICAgICAgKFxuICAgICAgICAgICAgfm1hcCxcbiAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50OiBhYnNfaW5kZW50PTAsXG4gICAgICAgICAgICB+b3JpZ2luPVBvaW50Lnplcm8sXG4gICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoUG9pbnQudCwgdCkgPT4ge1xuICAgIGxldCBmaXJzdF90b3VjaGVkX2luY29tcGxldGUgPVxuICAgICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VnKSkge1xuICAgICAgfCBbXSA9PiBOb25lXG4gICAgICB8IHRzID0+XG4gICAgICAgIHRzXG4gICAgICAgIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IFRvdWNoZWQuZmluZF9vcHQodC5pZCwgdG91Y2hlZCkpXG4gICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgIChhY2MsIHRvdWNoZWQpID0+XG4gICAgICAgICAgICAgICBzd2l0Y2ggKGFjYywgdG91Y2hlZCkge1xuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgU29tZSh0aW1lJykpID0+IFNvbWUoVGltZS5taW4odGltZSwgdGltZScpKVxuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgXylcbiAgICAgICAgICAgICAgIHwgKF8sIFNvbWUodGltZSkpID0+IFNvbWUodGltZSlcbiAgICAgICAgICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgIClcbiAgICAgIH07XG5cbiAgICAvLyByZWN1cnNpdmUgYWNyb3NzIHNlZydzIGxpc3Qgc3RydWN0dXJlXG4gICAgbGV0IHJlYyBnb19zZXEgPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICB+Y29udGFpbmVkX2luZGVudDogcmVsX2luZGVudD0wLFxuICAgICAgICAgICAgICB+b3JpZ2luOiBQb2ludC50LFxuICAgICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogKFBvaW50LnQsIHQpID0+XG4gICAgICBzd2l0Y2ggKHNlZykge1xuICAgICAgfCBbXSA9PlxuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICBtYXBcbiAgICAgICAgICB8PiBhZGRfcm93KFxuICAgICAgICAgICAgICAgb3JpZ2luLnJvdyxcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgaW5kZW50OiBjb250YWluZXJfaW5kZW50ICsgY29udGFpbmVkX2luZGVudCxcbiAgICAgICAgICAgICAgICAgbWF4X2NvbDogb3JpZ2luLmNvbCxcbiAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgKG9yaWdpbiwgbWFwKTtcbiAgICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgICAgbGV0IChjb250YWluZWRfaW5kZW50LCBvcmlnaW4sIG1hcCkgPVxuICAgICAgICAgIHN3aXRjaCAoaGQpIHtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT5cbiAgICAgICAgICAgIGxldCByb3dfaW5kZW50ID0gY29udGFpbmVyX2luZGVudCArIGNvbnRhaW5lZF9pbmRlbnQ7XG4gICAgICAgICAgICBsZXQgaW5kZW50ID1cbiAgICAgICAgICAgICAgaWYgKFNlZ21lbnQuc2FtZWxpbmVfc2Vjb25kYXJ5KHRsKSkge1xuICAgICAgICAgICAgICAgIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgIFRvdWNoZWQuZmluZF9vcHQody5pZCwgdG91Y2hlZCksXG4gICAgICAgICAgICAgICAgICBmaXJzdF90b3VjaGVkX2luY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICBmaW5kX29wdF9sYih3LmlkLCBvbGQpLFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHwgKFNvbWUodG91Y2hlZCksIFNvbWUodG91Y2hlZCcpLCBTb21lKGluZGVudCkpXG4gICAgICAgICAgICAgICAgICAgIHdoZW4gVGltZS5sdCh0b3VjaGVkLCB0b3VjaGVkJykgPT4gaW5kZW50XG4gICAgICAgICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICAgICAgICBjb250YWluZWRfaW5kZW50ICsgKElkLk1hcC5maW5kKHcuaWQsIGlzX2luZGVudGVkKSA/IDIgOiAwKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgIFBvaW50Lntyb3c6IG9yaWdpbi5yb3cgKyAxLCBjb2w6IGNvbnRhaW5lcl9pbmRlbnQgKyBpbmRlbnR9O1xuICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICB8PiBhZGRfdyh3LCB7b3JpZ2luLCBsYXN0fSlcbiAgICAgICAgICAgICAgfD4gYWRkX3JvdyhcbiAgICAgICAgICAgICAgICAgICBvcmlnaW4ucm93LFxuICAgICAgICAgICAgICAgICAgIHtpbmRlbnQ6IHJvd19pbmRlbnQsIG1heF9jb2w6IG9yaWdpbi5jb2x9LFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHw+IGFkZF9sYih3LmlkLCBpbmRlbnQpO1xuICAgICAgICAgICAgKGluZGVudCwgbGFzdCwgbWFwKTtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSA9PlxuICAgICAgICAgICAgbGV0IHdzcGFjZV9sZW5ndGggPVxuICAgICAgICAgICAgICBVbmljb2RlLmxlbmd0aChTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKTtcbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgd3NwYWNlX2xlbmd0aH07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF93KHcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgR3JvdXQoZykgPT5cbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgMX07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF9nKGcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgICAgbGV0IHRva2VuID0gTGlzdC5udGgodC5sYWJlbCk7XG4gICAgICAgICAgICBsZXQgYWRkX3NoYXJkID0gKG9yaWdpbiwgc2hhcmQsIG1hcCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgICAgUG9pbnQue1xuICAgICAgICAgICAgICAgICAgLi4ub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgY29sOiBvcmlnaW4uY29sICsgU3RyaW5nLmxlbmd0aCh0b2tlbihzaGFyZCkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGxldCBtYXAgPSBtYXAgfD4gYWRkX3ModC5pZCwgc2hhcmQsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgICAgKGxhc3QsIG1hcCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IChsYXN0LCBtYXApID1cbiAgICAgICAgICAgICAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICAgICAgICAgICAgICB8PiBBYmEuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgIHNoYXJkID0+IGFkZF9zaGFyZChvcmlnaW4sIHNoYXJkLCBtYXApLFxuICAgICAgICAgICAgICAgICAgICgob3JpZ2luLCBtYXApLCBjaGlsZCwgc2hhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hpbGRfbGFzdCwgY2hpbGRfbWFwKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIGdvX25lc3RlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50PWNvbnRhaW5lcl9pbmRlbnQgKyBjb250YWluZWRfaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICBhZGRfc2hhcmQoY2hpbGRfbGFzdCwgc2hhcmQsIGNoaWxkX21hcCk7XG4gICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIH07XG4gICAgICAgIGxldCAodGxfbGFzdCwgbWFwKSA9IGdvX3NlcSh+bWFwLCB+Y29udGFpbmVkX2luZGVudCwgfm9yaWdpbiwgdGwpO1xuICAgICAgICAodGxfbGFzdCwgbWFwKTtcbiAgICAgIH07XG4gICAgZ29fc2VxKH5tYXAsIH5vcmlnaW4sIHNlZyk7XG4gIH07XG4gIHNuZChnb19uZXN0ZWQofm1hcD1lbXB0eSwgc2VnKSk7XG59O1xuXG5sZXQgbGVuZ3RoID0gKHNlZzogU2VnbWVudC50LCBtYXA6IHQpOiBpbnQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAwXG4gIHwgW3BdID0+XG4gICAgbGV0IG0gPSBmaW5kX3AocCwgbWFwKTtcbiAgICBtLmxhc3QuY29sIC0gbS5vcmlnaW4uY29sO1xuICB8IFtoZCwgLi4udGxdID0+XG4gICAgbGV0IGZpcnN0ID0gZmluZF9wKGhkLCBtYXApO1xuICAgIGxldCBsYXN0ID0gZmluZF9wKExpc3RVdGlsLmxhc3QodGwpLCBtYXApO1xuICAgIGxhc3QubGFzdC5jb2wgLSBmaXJzdC5vcmlnaW4uY29sO1xuICB9O1xuXG5sZXQgc2VnbWVudF9vcmlnaW4gPSAoc2VnOiBTZWdtZW50LnQpOiBvcHRpb24oUG9pbnQudCkgPT5cbiAgT3B0aW9uLm1hcChcbiAgICBmaXJzdCA9PiBmaW5kX3AoZmlyc3QsIG9mX3NlZ21lbnQoc2VnKSkub3JpZ2luLFxuICAgIExpc3RVdGlsLmhkX29wdChzZWcpLFxuICApO1xuXG5sZXQgc2VnbWVudF9sYXN0ID0gKHNlZzogU2VnbWVudC50KTogb3B0aW9uKFBvaW50LnQpID0+XG4gIE9wdGlvbi5tYXAoXG4gICAgbGFzdCA9PiBmaW5kX3AobGFzdCwgb2Zfc2VnbWVudChzZWcpKS5sYXN0LFxuICAgIExpc3RVdGlsLmxhc3Rfb3B0KHNlZyksXG4gICk7XG5cbmxldCBzZWdtZW50X2hlaWdodCA9IChzZWc6IFNlZ21lbnQudCkgPT5cbiAgc3dpdGNoIChzZWdtZW50X2xhc3Qoc2VnKSwgc2VnbWVudF9vcmlnaW4oc2VnKSkge1xuICB8IChTb21lKGxhc3QpLCBTb21lKGZpcnN0KSkgPT4gMSArIGxhc3Qucm93IC0gZmlyc3Qucm93XG4gIHwgXyA9PiAwXG4gIH07XG5cbmxldCBzZWdtZW50X3dpZHRoID0gKHNlZzogU2VnbWVudC50KTogaW50ID0+XG4gIEludE1hcC5mb2xkKFxuICAgIChfLCB7bWF4X2NvbCwgX306IFJvd3Muc2hhcGUsIGFjYykgPT4gbWF4KG1heF9jb2wsIGFjYyksXG4gICAgb2Zfc2VnbWVudChzZWcpLnJvd3MsXG4gICAgMCxcbiAgKTtcbiIsIm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBidWZmZXIgPVxuICB8IFVucGFyc2VkXG4gIHwgUGFyc2VkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG1vZGUgPVxuICB8IE5vcm1hbFxuICB8IEJ1ZmZlcihidWZmZXIpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGZvY3VzOiBEaXJlY3Rpb24udCxcbiAgY29udGVudDogU2VnbWVudC50LFxuICBtb2RlLFxufTtcblxuLyogTk9URTogYmFja3BhY2sgbm8gbG9uZ2VyIHVzZXMgc2VsZWN0aW9uIGZvY3VzICovXG5sZXQgbWsgPSAofm1vZGU9Tm9ybWFsLCB+Zm9jdXM9RGlyZWN0aW9uLkxlZnQsIGNvbnRlbnQ6IFNlZ21lbnQudCkgPT4ge1xuICBmb2N1cyxcbiAgY29udGVudCxcbiAgbW9kZSxcbn07XG5cbmxldCBta19idWZmZXIgPSBidWZmZXIgPT4gbWsofm1vZGU9QnVmZmVyKGJ1ZmZlciksIH5mb2N1cz1EaXJlY3Rpb24uTGVmdCk7XG5cbmxldCBpc19idWZmZXI6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IHttb2RlOiBCdWZmZXIoXyksIF99ID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgYnVmZmVyX2lkcyA9IChzZWw6IHQpOiBsaXN0KElkLnQpID0+IHtcbiAgLyogQ29sbGVjdCBpZHMgb2YgdG9rZW5zIGluIGJ1ZmZlciBmb3Igc3R5bGluZyBwdXJwb3Nlcy4gVGhpcyBpc1xuICAgKiBjdXJyZW50bHkgbmVjZXNzYXJ5IGFzIHRoZSBzZWxlY3Rpb24gaXMgbm90IHBlcnNpc3RlZCB0aHJvdWdoXG4gICAqIHVuemlwcGluZyBmb3IgZGlzcGxheSAqL1xuICBsZXQgYnVmZmVyID0gaXNfYnVmZmVyKHNlbCkgPyBzZWwuY29udGVudCA6IFtdO1xuICBJZC5NYXAuYmluZGluZ3MoTWVhc3VyZWQub2Zfc2VnbWVudChidWZmZXIpLnRpbGVzKSB8PiBMaXN0Lm1hcChmc3QpO1xufTtcblxubGV0IGVtcHR5ID0gbWsoU2VnbWVudC5lbXB0eSk7XG5cbmxldCBtYXAgPSAoZiwgc2VsKSA9PiB7Li4uc2VsLCBjb250ZW50OiBmKHNlbC5jb250ZW50KX07XG5cbmxldCB0b2dnbGVfZm9jdXMgPSBzZWxlY3Rpb24gPT4ge1xuICAuLi5zZWxlY3Rpb24sXG4gIGZvY3VzOiBVdGlsLkRpcmVjdGlvbi50b2dnbGUoc2VsZWN0aW9uLmZvY3VzKSxcbn07XG5cbmxldCBpc19lbXB0eSA9IChzZWxlY3Rpb246IHQpID0+IHNlbGVjdGlvbi5jb250ZW50ID09IFNlZ21lbnQuZW1wdHk7XG5cbmxldCBwdXNoID0gKHA6IFBpZWNlLnQsIHtmb2N1cywgY29udGVudCwgbW9kZX06IHQpOiB0ID0+IHtcbiAgbGV0IGNvbnRlbnQgPVxuICAgIFNlZ21lbnQucmVhc3NlbWJsZShcbiAgICAgIHN3aXRjaCAoZm9jdXMpIHtcbiAgICAgIHwgTGVmdCA9PiBTZWdtZW50LmNvbnMocCwgY29udGVudClcbiAgICAgIHwgUmlnaHQgPT4gU2VnbWVudC5zbm9jKGNvbnRlbnQsIHApXG4gICAgICB9LFxuICAgICk7XG4gIHtmb2N1cywgY29udGVudCwgbW9kZX07XG59O1xuXG5sZXQgcG9wID0gKHNlbDogdCk6IG9wdGlvbigoUGllY2UudCwgdCkpID0+XG4gIHN3aXRjaCAoc2VsLmZvY3VzLCBzZWwuY29udGVudCwgTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoc2VsLmNvbnRlbnQpKSB7XG4gIHwgKF8sIFtdLCBfKVxuICB8IChfLCBfLCBOb25lKSA9PiBOb25lXG4gIHwgKExlZnQsIFtwLCAuLi5jb250ZW50XSwgXykgPT5cbiAgICBsZXQgKHAsIHJlc3QpID0gUGllY2UucG9wX2wocCk7XG4gICAgU29tZSgocCwgey4uLnNlbCwgY29udGVudDogcmVzdCBAIGNvbnRlbnR9KSk7XG4gIHwgKFJpZ2h0LCBfLCBTb21lKChjb250ZW50LCBwKSkpID0+XG4gICAgbGV0IChyZXN0LCBwKSA9IFBpZWNlLnBvcF9yKHApO1xuICAgIFNvbWUoKHAsIHsuLi5zZWwsIGNvbnRlbnQ6IGNvbnRlbnQgQCByZXN0fSkpO1xuICB9O1xuXG5sZXQgc3BsaXRfcGllY2UgPSBfOiBvcHRpb24oKFBpZWNlLnQsIHQpKSA9PiBmYWlsd2l0aChcInRvZG8gc3BsaXRfcGllY2VcIik7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgU2hhcmRJbmZvID0ge1xuICBtb2R1bGUgT3JkZXIgPSB7XG4gICAgdHlwZSBrZXkgPSAoSWQudCwgaW50KTtcbiAgICAvLyBsZXQga2V5ID0gKHM6IFNoYXJkLnQpID0+IChzLnRpbGVfaWQsIFNoYXJkLmluZGV4KHMpKTtcblxuICAgIG9wZW4gSGFzaHRibDtcbiAgICB0eXBlIHQgPSBIYXNodGJsLnQoa2V5LCBIYXNodGJsLnQoa2V5LCB1bml0KSk7XG5cbiAgICBsZXQgbiA9IDIwO1xuICAgIGxldCBpbml0ID0gKCkgPT4gY3JlYXRlKG4pO1xuXG4gICAgbGV0IGx0ID0gKGw6IFRpbGUudCwgcjogVGlsZS50LCBvcmQ6IHQpOiBib29sID0+IHtcbiAgICAgIGxldCAoaV9sLCBpX3IpID0gVGlsZS4ocl9zaGFyZChsKSwgbF9zaGFyZChyKSk7XG4gICAgICBzd2l0Y2ggKGZpbmRfb3B0KG9yZCwgKGwuaWQsIGlfbCkpKSB7XG4gICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgIHwgU29tZShyb3cpID0+IE9wdGlvbi5pc19zb21lKGZpbmRfb3B0KHJvdywgKHIuaWQsIGlfcikpKVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBndCA9IChsLCByLCBvcmQpID0+IGx0KHIsIGwsIG9yZCk7XG4gICAgbGV0IHVuID0gKGwsIHIsIG9yZCkgPT4gIWx0KGwsIHIsIG9yZCkgJiYgIWd0KGwsIHIsIG9yZCk7XG5cbiAgICBsZXQgZGlzb3JkZXJlZCA9ICh0OiBUaWxlLnQsIHQnOiBUaWxlLnQpOiBib29sID0+XG4gICAgICB0LmlkID09IHQnLmlkXG4gICAgICAmJiB7XG4gICAgICAgIGxldCAobCwgcikgPSBUaWxlLihsX3NoYXJkKHQpLCByX3NoYXJkKHQpKTtcbiAgICAgICAgbGV0IChsJywgcicpID0gVGlsZS4obF9zaGFyZCh0JyksIHJfc2hhcmQodCcpKTtcbiAgICAgICAgbCA8IGwnICYmIGwnIDwgciB8fCBsJyA8IGwgJiYgbCA8IHInO1xuICAgICAgfTtcblxuICAgIGxldCBsdF9vcl91biA9IChscywgcnMsIG9yZCkgPT5cbiAgICAgIGxzXG4gICAgICB8PiBMaXN0LmZvcl9hbGwobCA9PlxuICAgICAgICAgICByc1xuICAgICAgICAgICB8PiBMaXN0LmZvcl9hbGwociA9PlxuICAgICAgICAgICAgICAgICFkaXNvcmRlcmVkKGwsIHIpICYmIChsdChsLCByLCBvcmQpIHx8IHVuKGwsIHIsIG9yZCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICk7XG5cbiAgICBsZXQgZ2V0ID0gKGksIGosIG0pID0+IHtcbiAgICAgIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gICAgICBsZXQqIHIgPSBmaW5kX29wdChtLCBpKTtcbiAgICAgIGZpbmRfb3B0KHIsIGopO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gKGksIGosIG0pID0+IHtcbiAgICAgIGxldCByID1cbiAgICAgICAgc3dpdGNoIChmaW5kX29wdChtLCBpKSkge1xuICAgICAgICB8IE5vbmUgPT4gY3JlYXRlKG4pXG4gICAgICAgIHwgU29tZShyKSA9PiByXG4gICAgICAgIH07XG4gICAgICByZXBsYWNlKHIsIGosICgpKTtcbiAgICAgIHJlcGxhY2UobSwgaSwgcik7XG4gICAgfTtcblxuICAgIGxldCBhZGRfdGlsZSA9IChpZCwgbGJsLCBvcmQpID0+XG4gICAgICBsYmxcbiAgICAgIHw+IExpc3QuaXRlcmkoKGksIF8pID0+IHtcbiAgICAgICAgICAgc3dpdGNoIChmaW5kX29wdChvcmQsIChpZCwgaSkpKSB7XG4gICAgICAgICAgIHwgU29tZShfKSA9PiAoKVxuICAgICAgICAgICB8IE5vbmUgPT4gcmVwbGFjZShvcmQsIChpZCwgaSksIGNyZWF0ZShuKSlcbiAgICAgICAgICAgfTtcbiAgICAgICAgICAgaSA9PSAwID8gKCkgOiBzZXQoKGlkLCBpIC0gMSksIChpZCwgaSksIG9yZCk7XG4gICAgICAgICB9KTtcblxuICAgIC8vIFdhcnNoYWxsJ3MgYWxnb3JpdGhtIGh0dHBzOi8vY3Mud2lub25hLmVkdS9saW4vY3M0NDAvY2gwOC0yLnBkZlxuICAgIGxldCB0cmFuX2Nsb3NlID0gKG9yZDogdCk6IHVuaXQgPT4ge1xuICAgICAgbGV0IGtleXMgPSBMaXN0Lm9mX3NlcShIYXNodGJsLnRvX3NlcV9rZXlzKG9yZCkpO1xuICAgICAga2V5c1xuICAgICAgfD4gTGlzdC5pdGVyaSgobiwgaykgPT5cbiAgICAgICAgICAgaWYgKG4gPT0gMCkge1xuICAgICAgICAgICAgICgpO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgIGtleXNcbiAgICAgICAgICAgICB8PiBMaXN0Lml0ZXIoaSA9PlxuICAgICAgICAgICAgICAgICAga2V5c1xuICAgICAgICAgICAgICAgICAgfD4gTGlzdC5pdGVyKGogPT5cbiAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXQoaSwgaiwgb3JkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoXykgPT4gKClcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXQoaSwgaywgb3JkKSwgZ2V0KGssIGosIG9yZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChOb25lLCBfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF8sIE5vbmUpID0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoU29tZShfKSwgU29tZShfKSkgPT4gc2V0KGksIGosIG9yZClcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICB9XG4gICAgICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIENvdW50ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGxhYmVsczogSWQuTWFwLnQoTGFiZWwudCksXG4gICAgICBjb3VudHM6IElkLk1hcC50KGludCksXG4gICAgfTtcblxuICAgIGxldCBvZl90aWxlID0gKHQ6IFRpbGUudCkgPT4ge1xuICAgICAgbGFiZWxzOiBJZC5NYXAuc2luZ2xldG9uKHQuaWQsIHQubGFiZWwpLFxuICAgICAgY291bnRzOiBJZC5NYXAuc2luZ2xldG9uKHQuaWQsIExpc3QubGVuZ3RoKHQuc2hhcmRzKSksXG4gICAgfTtcblxuICAgIGxldCBtZXJnZSA9IChtOiB0LCBtJzogdCkgPT4ge1xuICAgICAgbGFiZWxzOiBJZC5NYXAudW5pb24oKF8sIGxibCwgXykgPT4gU29tZShsYmwpLCBtLmxhYmVscywgbScubGFiZWxzKSxcbiAgICAgIGNvdW50czogSWQuTWFwLnVuaW9uKChfLCBuLCBuJykgPT4gU29tZShuICsgbicpLCBtLmNvdW50cywgbScuY291bnRzKSxcbiAgICB9O1xuXG4gICAgbGV0IG1lbSA9IChpZCwgbSkgPT4gSWQuTWFwLm1lbShpZCwgbS5sYWJlbHMpO1xuXG4gICAgbGV0IGV4aXN0c19tZW0gPSAodHM6IGxpc3QoVGlsZS50KSwgbSkgPT5cbiAgICAgIExpc3QuZXhpc3RzKCh0OiBUaWxlLnQpID0+IG1lbSh0LmlkLCBtKSwgdHMpO1xuXG4gICAgbGV0IGlzX2NvbXBsZXRlID0gKG06IHQpID0+XG4gICAgICBtLmNvdW50c1xuICAgICAgfD4gSWQuTWFwLmZvcl9hbGwoKGlkLCBuKSA9PlxuICAgICAgICAgICBuID09IExpc3QubGVuZ3RoKElkLk1hcC5maW5kKGlkLCBtLmxhYmVscykpXG4gICAgICAgICApO1xuICB9O1xuXG4gIG1vZHVsZSBDb3VudHMgPSB7XG4gICAgdHlwZSB0ID0gSWQuVWYuc3RvcmUoQ291bnQudCk7XG4gICAgaW5jbHVkZSBJZC5VZjtcbiAgICBsZXQgbWVyZ2UgPSBtZXJnZShDb3VudC5tZXJnZSk7XG4gICAgbGV0IGFkZF90aWxlID0gKHQ6IFRpbGUudCwgY3M6IHQpOiB1bml0ID0+XG4gICAgICBzd2l0Y2ggKGdldF9vcHQodC5pZCwgY3MpKSB7XG4gICAgICB8IE5vbmUgPT4gYWRkKHQuaWQsIENvdW50Lm9mX3RpbGUodCksIGNzKVxuICAgICAgfCBTb21lKGMpID0+XG4gICAgICAgIGxldCBjID0ge1xuICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgY291bnRzOlxuICAgICAgICAgICAgSWQuTWFwLnVwZGF0ZShcbiAgICAgICAgICAgICAgdC5pZCxcbiAgICAgICAgICAgICAgT3B0aW9uLm1hcCgoKykoTGlzdC5sZW5ndGgodC5zaGFyZHMpKSksXG4gICAgICAgICAgICAgIGMuY291bnRzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgICAgc2V0KHQuaWQsIGMsIGNzKTtcbiAgICAgIH07XG4gIH07XG5cbiAgLy8gU2hhcmRzIGFyZSBjb25zaWRlcmVkIHNlbGVjdGlvbi1tYXRjaGluZyBpZiB0aGV5IGFyZSByZWxhdGVkIHRyYW5zaXRpdmVseVxuICAvLyBieSBub3JtYWwgd2l0aGluLXRpbGUgbWF0Y2hpbmcgb3IgYnkgc2FtZS1zZWxlY3Rpb24tY29udGFpbm1lbnQuXG4gIC8vIFNlbGVjdGlvbi1tYXRjaGluZyBzaGFyZHMgYXJlIG9yZGVyZWQgdHJhbnNpdGl2ZWx5IGJ5IHdpdGhpbi10aWxlXG4gIC8vIG9yZGVyaW5nIGFuZCBzYW1lLXNlbGVjdGlvbiBvcmRlcmluZyBjb21iaW5lZCB3aXRoIHdlbGwtbmVzdGVkbmVzcy5cbiAgLy8gUmVwcmVzZW50cyB0aGUgZXhwZWN0ZWQgb3JkZXIgb2YgYWxsIHNlbGVjdGlvbi1tYXRjaGluZyBzaGFyZHMgYXNcbiAgLy8gaW1wb3NlZCBieSBzZWxlY3Rpb25zIGluIHRoZSBiYWNrcGFjaywgYWxvbmcgd2l0aCBjb3VudHMgb2YgdGhvc2VcbiAgLy8gc2hhcmRzIGNvbnRhaW5lZCBpbiB0aGUgYmFja3BhY2suXG4gIC8vIENvdW50cyBhcmUgcGFydGl0aW9uZWQgYnkgdGhlIHNlbGVjdGlvbi1tYXRjaGluZyByZWxhdGlvbi5cbiAgdHlwZSB0ID0ge1xuICAgIG9yZGVyOiBPcmRlci50LFxuICAgIGNvdW50czogQ291bnRzLnQsXG4gIH07XG5cbiAgbGV0IGluaXQgPSAoKSA9PiB7b3JkZXI6IE9yZGVyLmluaXQoKSwgY291bnRzOiBDb3VudHMuaW5pdCgpfTtcblxuICBsZXQgYWRkX3NlbCA9IChzZWw6IFNlbGVjdGlvbi50LCB7Y291bnRzLCBvcmRlcn06IHQpOiB1bml0ID0+IHtcbiAgICBsZXQgdHMgPSBTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VsLmNvbnRlbnQpO1xuICAgIC8vIGluaXRpYWxpemVcbiAgICB0c1xuICAgIHw+IExpc3QuaXRlcigodDogVGlsZS50KSA9PiB7XG4gICAgICAgICBDb3VudHMuYWRkX3RpbGUodCwgY291bnRzKTtcbiAgICAgICAgIE9yZGVyLmFkZF90aWxlKHQuaWQsIHQubGFiZWwsIG9yZGVyKTtcbiAgICAgICB9KTtcbiAgICAvLyBtZXJnZSBjb3VudHNcbiAgICBpZ25vcmUoXG4gICAgICB0c1xuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChwcmV2OiBvcHRpb24oVGlsZS50KSwgY3VycjogVGlsZS50KSA9PiB7XG4gICAgICAgICAgICAgc3dpdGNoIChwcmV2KSB7XG4gICAgICAgICAgICAgfCBOb25lID0+ICgpXG4gICAgICAgICAgICAgfCBTb21lKHByZXYpID0+IENvdW50cy5tZXJnZShwcmV2LmlkLCBjdXJyLmlkLCBjb3VudHMpXG4gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICBTb21lKGN1cnIpO1xuICAgICAgICAgICB9LFxuICAgICAgICAgICBOb25lLFxuICAgICAgICAgKSxcbiAgICApO1xuICAgIC8vIHByb3BhZ2F0ZSB3ZWxsLW5lc3RlZCBvcmRlcmluZyBjb25zdHJhaW50c1xuICAgIExpc3RVdGlsLm9yZGVyZWRfcGFpcnModHMpXG4gICAgfD4gTGlzdC5pdGVyKCgobDogVGlsZS50LCByOiBUaWxlLnQpKSA9PiB7XG4gICAgICAgICBsZXQgKG5fbCwgbl9yKSA9IExpc3QuKGxlbmd0aChsLmxhYmVsKSwgbGVuZ3RoKHIubGFiZWwpKTtcbiAgICAgICAgIGxldCAoaV9sLCBpX3IpID0gVGlsZS4ocl9zaGFyZChsKSwgbF9zaGFyZChyKSk7XG4gICAgICAgICBPcmRlci5zZXQoKGwuaWQsIGlfbCksIChyLmlkLCBpX3IpLCBvcmRlcik7XG4gICAgICAgICBpZiAoaV9sID09IG5fbCAtIDEgJiYgaV9yICE9IDApIHtcbiAgICAgICAgICAgLy8gbCBtdXN0IGJlIG5lc3RlZCB3aXRoaW4gclxuICAgICAgICAgICBPcmRlci5zZXQoXG4gICAgICAgICAgICAgKHIuaWQsIGlfciAtIDEpLFxuICAgICAgICAgICAgIChsLmlkLCAwKSxcbiAgICAgICAgICAgICBvcmRlcixcbiAgICAgICAgICAgKTtcbiAgICAgICAgIH0gZWxzZSBpZiAoaV9sICE9IG5fbCAtIDEgJiYgaV9yID09IDApIHtcbiAgICAgICAgICAgLy8gciBtdXN0IGJlIG5lc3RlZCB3aXRoaW4gbFxuICAgICAgICAgICBPcmRlci5zZXQoXG4gICAgICAgICAgICAgKHIuaWQsIG5fciAtIDEpLFxuICAgICAgICAgICAgIChsLmlkLCBpX2wgKyAxKSxcbiAgICAgICAgICAgICBvcmRlcixcbiAgICAgICAgICAgKTtcbiAgICAgICAgIH07XG4gICAgICAgfSk7XG4gIH07XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBsaXN0KFNlbGVjdGlvbi50KTtcblxubGV0IGVtcHR5ID0gW107XG5cbmxldCBzaGFyZF9pbmZvID0gKGJwOiB0KSA9PiB7XG4gIG9wZW4gU2hhcmRJbmZvO1xuICBsZXQgaW5mbyA9IGluaXQoKTtcbiAgYnAgfD4gTGlzdC5pdGVyKHNlbCA9PiBhZGRfc2VsKHNlbCwgaW5mbykpO1xuICBPcmRlci50cmFuX2Nsb3NlKGluZm8ub3JkZXIpO1xuICBpbmZvO1xufTtcblxuLyogUEVSRjogVGhpcyBiZWNvbWVzIHZlcnkgY29zdGx5IHdoZW4gdGhlcmUgYXJlIGEgbG90IG9mIHRoaW5nc1xuICAgaW4gdGhlIGJhY2twYWNrOyBlLmcuIGlmIHlvdSBvcGVuIDIzIHBhcmVucywgaXQncyBhbG1vc3QgMTAwJVxuICAgb2YgdGhlIGtleXN0b2tlIGNvc3QsIGZvciBhIDU1eCB0b3RhbCBzbG93ZG93biAgKi9cbmxldCBzaGFyZF9pbmZvID0gQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgc2hhcmRfaW5mbyk7XG5cbmxldCBwdXNoID0gc2VsID0+IFNlbGVjdGlvbi5pc19lbXB0eShzZWwpID8gRnVuLmlkIDogTGlzdC5jb25zKHNlbCk7XG5cbmxldCBwdXNoX3M6IChsaXN0KFNlbGVjdGlvbi50KSwgdCkgPT4gdCA9IExpc3QuZm9sZF9yaWdodChwdXNoKTtcblxubGV0IHBvcCA9XG4gICAgKChwcmUsIHN1Zik6IChsaXN0KFRpbGUudCksIGxpc3QoVGlsZS50KSksIGJwOiB0KVxuICAgIDogb3B0aW9uKChib29sLCBTZWxlY3Rpb24udCwgdCkpID0+IHtcbiAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgbGV0KiAoaGQsIHRsKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0X29wdChicCk7XG4gIHN3aXRjaCAoU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKGhkLmNvbnRlbnQpKSB7XG4gIHwgW10gPT4gU29tZSgodHJ1ZSwgaGQsIHRsKSlcbiAgfCBbdCwgLi4uX10gYXMgdHMgPT5cbiAgICBvcGVuIFNoYXJkSW5mbztcbiAgICBsZXQge2NvdW50cywgb3JkZXJ9ID0gc2hhcmRfaW5mbyhicCk7XG4gICAgbGV0IGNvdW50ID0gQ291bnRzLmdldCh0LmlkLCBjb3VudHMpO1xuICAgIGxldCBmaXJzdCA9IENvdW50LmlzX2NvbXBsZXRlKGNvdW50KTtcbiAgICBmaXJzdFxuICAgIHx8IChDb3VudC5leGlzdHNfbWVtKHByZSwgY291bnQpIHx8IENvdW50LmV4aXN0c19tZW0oc3VmLCBjb3VudCkpXG4gICAgJiYgT3JkZXIubHRfb3JfdW4ocHJlLCB0cywgb3JkZXIpXG4gICAgJiYgT3JkZXIubHRfb3JfdW4odHMsIHN1Ziwgb3JkZXIpXG4gICAgICA/IFNvbWUoKGZpcnN0LCBoZCwgdGwpKSA6IE5vbmU7XG4gIH07XG59O1xuXG5sZXQgcmVzdHJpY3RlZCA9IChicDogdCk6IGJvb2wgPT5cbiAgc3dpdGNoIChicCkge1xuICB8IFtdID0+IGZhbHNlXG4gIHwgW2hkLCAuLi5fXSA9PlxuICAgIHN3aXRjaCAoU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKGhkLmNvbnRlbnQpKSB7XG4gICAgfCBbXSA9PiBmYWxzZVxuICAgIHwgW3QsIC4uLl9dID0+XG4gICAgICBvcGVuIFNoYXJkSW5mbztcbiAgICAgIGxldCBpbmZvID0gc2hhcmRfaW5mbyhicCk7XG4gICAgICAhQ291bnQuaXNfY29tcGxldGUoQ291bnRzLmdldCh0LmlkLCBpbmZvLmNvdW50cykpO1xuICAgIH1cbiAgfTtcblxubGV0IHJlbW92ZV9tYXRjaGluZyA9ICh0czogbGlzdChUaWxlLnQpLCBicDogdCkgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKGJwLCB0OiBUaWxlLnQpID0+XG4gICAgICBicFxuICAgICAgfD4gTGlzdC5tYXAoU2VsZWN0aW9uLm1hcChTZWdtZW50LnJlbW92ZV9tYXRjaGluZyh0KSkpXG4gICAgICB8PiBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAgICAgIGZ1blxuICAgICAgICAgICB8IHNlbCB3aGVuICFTZWxlY3Rpb24uaXNfZW1wdHkoc2VsKSA9PiBTb21lKHNlbClcbiAgICAgICAgICAgfCBfID0+IE5vbmUsXG4gICAgICAgICApLFxuICAgIGJwLFxuICAgIHRzLFxuICApO1xuXG5sZXQgd2lsbF9iYXJmID0gKHQ6IFRva2VuLnQsIGJwOiB0KTogYm9vbCA9PlxuICAvKiBEb2VzIHRoZSBmaXJzdCBzZWxlY3Rpb24gaW4gdGhlIGJhY2twYWNrIGNvbnNpc3RcbiAgICAgb2YgYSBzaW5nbGUgdG9rZW4gd2hpY2ggbWF0Y2hlcyB0aGUgb25lIHByb3ZpZGVkPyAqL1xuICBzd2l0Y2ggKGJwKSB7XG4gIHwgW10gPT4gZmFsc2VcbiAgfCBbe2NvbnRlbnQ6IFtwXSwgX30sIC4uLl9dID0+XG4gICAgc3dpdGNoIChwKSB7XG4gICAgfCBUaWxlKHtzaGFyZHM6IFtpXSwgbGFiZWwsIF99KSA9PlxuICAgICAgYXNzZXJ0KGkgPCBMaXN0Lmxlbmd0aChsYWJlbCkpO1xuICAgICAgTGlzdC5udGgobGFiZWwsIGkpID09IHQ7XG4gICAgfCBfID0+IGZhbHNlXG4gICAgfVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcblxubGV0IHJlbW92ZV91bmlfdGlsZXNfd2l0aF9kZWVwX21hdGNoZXMgPSAoYnA6IHQsIHNlbDogU2VsZWN0aW9uLnQpOiB0ID0+IHtcbiAgLyogVGhpcyBpcyBhIGhhY2sgdG8gcHJldmVudCBpbmNvbXBsZXRlIHRpbGVzIGluc2lkZSBzZWxlY3Rpb24gdGlsZXNcbiAgICogZnJvbSBiZWluZyBvcnBoYW5lZCBvbiBkZWxldGlvbiwgZS5nLiBpZiB5b3UgZGVsZXRlIHNlZ21lbnQgXCIoWylcIlxuICAgKiB3aXRoIFwiXVwiIGluIHRoZSBiYWNrcGFjay4gICovXG4gIGxldCBpZHMgPSBTZWdtZW50Lmlkc19vZl9pbmNvbXBsZXRlX3RpbGVzX2luX2JpZGVsaW1pdGVkcyhzZWwuY29udGVudCk7XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFNlbGVjdGlvbi57Y29udGVudDogW1BpZWNlLlRpbGUoe2lkLCBffSldLCBffSB3aGVuIExpc3QubWVtKGlkLCBpZHMpID0+XG4gICAgICBOb25lXG4gICAgfCB4ID0+IFNvbWUoeCksXG4gICAgYnAsXG4gICk7XG59O1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHNpYmxpbmdzOiBTaWJsaW5ncy50LFxuICBhbmNlc3RvcnM6IEFuY2VzdG9ycy50LFxufTtcblxubGV0IGVtcHR5ID0ge3NpYmxpbmdzOiBTaWJsaW5ncy5lbXB0eSwgYW5jZXN0b3JzOiBBbmNlc3RvcnMuZW1wdHl9O1xuXG5sZXQgcHVzaCA9IChkOiBEaXJlY3Rpb24udCwgcDogUGllY2UudCwgcnM6IHQpOiB0ID0+IHtcbiAgLi4ucnMsXG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5wdXNoKGQsIHAsIHJzLnNpYmxpbmdzKSxcbn07XG5cbmxldCBwcmVwZW5kID0gKGQ6IERpcmVjdGlvbi50LCBzZWc6IFNlZ21lbnQudCwgcnM6IHQpOiB0ID0+IHtcbiAgbGV0IHNpYmxpbmdzID0gU2libGluZ3MucHJlcGVuZChkLCBzZWcsIHJzLnNpYmxpbmdzKTtcbiAgey4uLnJzLCBzaWJsaW5nc307XG59O1xuXG5sZXQgcG9wID0gKGQ6IERpcmVjdGlvbi50LCByczogdCk6IG9wdGlvbigoUGllY2UudCwgdCkpID0+XG4gIHN3aXRjaCAoU2libGluZ3MucG9wKGQsIHJzLnNpYmxpbmdzKSkge1xuICB8IFNvbWUoKHAsIHNpYmxpbmdzKSkgPT4gU29tZSgocCwgey4uLnJzLCBzaWJsaW5nc30pKVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKHJzLmFuY2VzdG9ycykge1xuICAgIHwgW10gPT4gTm9uZVxuICAgIHwgWyhhbmNlc3Rvciwgc2libGluZ3MpLCAuLi5hbmNlc3RvcnNdID0+XG4gICAgICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICAgICAgbGV0IHNpYmxpbmdzJyA9IEFuY2VzdG9yLmRpc2Fzc2VtYmxlKGFuY2VzdG9yKTtcbiAgICAgIGxldCsgKHAsIHNpYmxpbmdzKSA9XG4gICAgICAgIFNpYmxpbmdzLihwb3AoZCwgY29uY2F0KFtycy5zaWJsaW5ncywgc2libGluZ3MnLCBzaWJsaW5nc10pKSk7XG4gICAgICAocCwge3NpYmxpbmdzLCBhbmNlc3RvcnN9KTtcbiAgICB9XG4gIH07XG5cbmxldCB6aXAgPSAofnNlbD1TZWdtZW50LmVtcHR5LCB7c2libGluZ3MsIGFuY2VzdG9yc306IHQpID0+XG4gIEFuY2VzdG9ycy56aXAoU2libGluZ3MuemlwKH5zZWwsIHNpYmxpbmdzKSwgYW5jZXN0b3JzKTtcblxubGV0IGxvY2FsX2luY29tcGxldGVfdGlsZXMgPSAoe3NpYmxpbmdzOiAocHJlLCBzdWYpLCBhbmNlc3RvcnN9OiB0KSA9PiB7XG4gIGxldCBzaWJzID1cbiAgICBzd2l0Y2ggKGFuY2VzdG9ycykge1xuICAgIHwgW10gPT4gKHByZSwgc3VmKVxuICAgIHwgWyhhLCBfKSwgLi4uX10gPT5cbiAgICAgIGxldCAobCwgcikgPSBBbmNlc3Rvci5jb250YWluZXJfc2hhcmRzKGEpO1xuICAgICAgKFtsLCAuLi5wcmVdLCBzdWYgQCBbcl0pO1xuICAgIH07XG4gIFNpYmxpbmdzLmluY29tcGxldGVfdGlsZXMoc2licyk7XG59O1xuXG5sZXQgcGFyZW50ID1cbiAgICAofnNlbD1TZWdtZW50LmVtcHR5LCB7c2libGluZ3M6IChsX3NpYnMsIHJfc2licyksIGFuY2VzdG9yc306IHQpXG4gICAgOiBvcHRpb24oUGllY2UudCkgPT5cbiAgYW5jZXN0b3JzXG4gIHw+IEFuY2VzdG9ycy5wYXJlbnRcbiAgfD4gT3B0aW9uLm1hcChwID0+IEJhc2UuVGlsZShBbmNlc3Rvci56aXAobF9zaWJzIEAgc2VsIEAgcl9zaWJzLCBwKSkpO1xuXG5sZXQgZGVsZXRlX3BhcmVudCA9ICh7c2libGluZ3MsIGFuY2VzdG9yc306IHQpOiB0ID0+IHtcbiAgc3dpdGNoIChhbmNlc3RvcnMpIHtcbiAgfCBbXSA9PiB7c2libGluZ3MsIGFuY2VzdG9yc31cbiAgfCBbKF8sIHBfc2licyksIC4uLmFuY2VzdG9yc10gPT4ge1xuICAgICAgc2libGluZ3M6IFNpYmxpbmdzLmNvbmNhdChbc2libGluZ3MsIHBfc2lic10pLFxuICAgICAgYW5jZXN0b3JzLFxuICAgIH1cbiAgfTtcbn07XG5cbmxldCBkaXNhc3NlbWJsZSA9ICh7c2libGluZ3MsIGFuY2VzdG9yc306IHQpOiBTaWJsaW5ncy50ID0+XG4gIFNpYmxpbmdzLmNvbmNhdChbc2libGluZ3MsIEFuY2VzdG9ycy5kaXNhc3NlbWJsZShhbmNlc3RvcnMpXSk7XG5cbmxldCByZW1vbGQgPSAoe3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogdCA9PiB7XG4gIGxldCBzID0gQW5jZXN0b3JzLnNvcnQoYW5jZXN0b3JzKTtcbiAgbGV0IHNpYmxpbmdzID0gU2libGluZ3MucmVtb2xkKHNpYmxpbmdzLCBzKTtcbiAge2FuY2VzdG9ycywgc2libGluZ3N9O1xufTtcblxubGV0IHJlZ3JvdXQgPSAoZDogRGlyZWN0aW9uLnQsIHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IHQgPT4ge1xuICAvKiBEaXJlY3Rpb24gaXMgc2lkZSBvZiBncm91dCBjYXJldCB3aWxsIGVuZCB1cCBvbiAqL1xuXG4gIGxldCBhbmNlc3RvcnMgPSBBbmNlc3RvcnMucmVncm91dChhbmNlc3RvcnMpO1xuICBsZXQgc2libGluZ3MgPSB7XG4gICAgbGV0ICgocHJlLCBzX2wsIHRyaW1fbCksICh0cmltX3IsIHNfciwgc3VmKSkgPVxuICAgICAgU2libGluZ3MucmVncm91dChzaWJsaW5ncyk7XG4gICAgbGV0ICh0cmltX2wsIHRyaW1fcikgPSB7XG4gICAgICBvcGVuIFNlZ21lbnQuVHJpbTtcbiAgICAgIGxldCAoKF8sIGdzX2wpLCAoXywgZ3NfcikpID0gKHRyaW1fbCwgdHJpbV9yKTtcbiAgICAgIGxldCAoc2VnX2wsIHNlZ19yKSA9ICh0b19zZWcodHJpbV9sKSwgdG9fc2VnKHRyaW1fcikpO1xuICAgICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChnc19sKSwgZ3Nfcikge1xuICAgICAgfCAoU29tZSgoXywgZ19sKSksIFtnX3IsIC4uLl9dKSA9PlxuICAgICAgICBHcm91dC5maXRzKGdfbCwgZ19yKVxuICAgICAgICAgIC8vIG5vdGU6IGFzc3VtZXMgc2luZ2xlIGdyb3V0IGludmFyaWFudCBpbiB1bi1jYXJldC1pbnRlcnJ1cHRlZCB0cmltXG4gICAgICAgICAgPyAod3ModHJpbV9sKSwgd3ModHJpbV9yKSkgIC8vKHdzKHRyaW1fbCksIHNlZ19yKVxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgICAgICB8IExlZnQgPT4gKHdzKHRyaW1fbCksIHNlZ19yKVxuICAgICAgICAgICAgfCBSaWdodCA9PiAoc2VnX2wsIHdzKHRyaW1fcikpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgfCAoU29tZSgoXywgZykpLCBbXSkgPT5cbiAgICAgICAgR3JvdXQuZml0c19zaGFwZShnLCBzX3IpID8gKHNlZ19sLCBzZWdfcikgOiAod3ModHJpbV9sKSwgc2VnX3IpXG4gICAgICB8IChOb25lLCBbZywgLi4uX10pID0+XG4gICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgc19sKSA/IChzZWdfbCwgc2VnX3IpIDogKHNlZ19sLCB3cyh0cmltX3IpKVxuICAgICAgfCAoTm9uZSwgW10pID0+XG4gICAgICAgIE5pYi5TaGFwZS5maXRzKHNfbCwgc19yKVxuICAgICAgICAgID8gKHNlZ19sLCBzZWdfcilcbiAgICAgICAgICAvLyBjYW4gbW9kdWxhdGUgd2l0aCBkaXJlY3Rpb25hbCBhcmdcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICAgICAgfCBMZWZ0ID0+XG4gICAgICAgICAgICAgIGxldCB0cmltID0gYWRkX2dyb3V0KH5kPVJpZ2h0LCBzX3IsIHRyaW1fcik7XG4gICAgICAgICAgICAgIChzZWdfbCwgdG9fc2VnKHRyaW0pKTtcbiAgICAgICAgICAgIHwgUmlnaHQgPT5cbiAgICAgICAgICAgICAgbGV0IHRyaW0gPSBhZGRfZ3JvdXQofmQ9TGVmdCwgc19sLCB0cmltX2wpO1xuICAgICAgICAgICAgICAodG9fc2VnKHRyaW0pLCBzZWdfcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgfTtcbiAgICB9O1xuICAgIChwcmUgQCB0cmltX2wsIHRyaW1fciBAIHN1Zik7XG4gIH07XG4gIHtzaWJsaW5ncywgYW5jZXN0b3JzfTtcbn07XG5cbmxldCBwcmVwZW5kX2dlbmVyYXRpb24gPSAoKGEsIHNpYnMpOiBBbmNlc3RvcnMuZ2VuZXJhdGlvbiwgcnM6IHQpOiB0ID0+IHtcbiAgc2libGluZ3M6IFNpYmxpbmdzLmVtcHR5LFxuICBhbmNlc3RvcnM6IFsoYSwgU2libGluZ3MuY29uY2F0KFtzaWJzLCBycy5zaWJsaW5nc10pKSwgLi4ucnMuYW5jZXN0b3JzXSxcbn07XG5sZXQgcHJlcGVuZF9zaWJsaW5ncyA9IChzaWJzOiBTaWJsaW5ncy50LCByczogdCk6IHQgPT4ge1xuICAuLi5ycyxcbiAgc2libGluZ3M6IFNpYmxpbmdzLmNvbmNhdChbc2licywgcnMuc2libGluZ3NdKSxcbn07XG5cbmxldCBjb25jYXQgPSAocnNzOiBsaXN0KHQpKTogdCA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKHJzOiB0LCBjYXQ6IHQpID0+XG4gICAgICBMaXN0LmZvbGRfcmlnaHQocHJlcGVuZF9nZW5lcmF0aW9uLCBycy5hbmNlc3RvcnMsIGNhdClcbiAgICAgIHw+IHByZXBlbmRfc2libGluZ3MocnMuc2libGluZ3MpLFxuICAgIHJzcyxcbiAgICBlbXB0eSxcbiAgKTtcblxubGV0IHJlYXNzZW1ibGVfcGFyZW50ID0gKHJzOiB0KTogdCA9PlxuICBzd2l0Y2ggKHJzLmFuY2VzdG9ycykge1xuICB8IFtdID0+IHJzXG4gIHwgWyhhLCBzaWJzKSwgLi4uYW5jc10gPT5cbiAgICBsZXQgKGwsIHIpID1cbiAgICAgIHJzLnNpYmxpbmdzXG4gICAgICB8PiBTaWJsaW5ncy5zcGxpdF9ieV9tYXRjaGluZyhhLmlkKVxuICAgICAgfD4gVHVwbGVVdGlsLm1hcDIoQWJhLnRyaW0pO1xuICAgIGxldCBmbGF0dGVuX21hdGNoID1cbiAgICAgIEFiYS5mb2xkX3JpZ2h0KFxuICAgICAgICAodDogVGlsZS50LCBraWQsIChzaGFyZHMsIGtpZHMpKSA9PlxuICAgICAgICAgIEFiYS5tayh0LnNoYXJkcyBAIHNoYXJkcywgdC5jaGlsZHJlbiBAIFtraWQsIC4uLmtpZHNdKSxcbiAgICAgICAgKHQ6IFRpbGUudCkgPT4gQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKSxcbiAgICAgICk7XG4gICAgbGV0IChhLCBsKSA9XG4gICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgIHwgTm9uZSA9PiAoYSwgZnN0KHJzLnNpYmxpbmdzKSlcbiAgICAgIHwgU29tZSgob3V0ZXJfbCwgbWF0Y2hfbCwgaW5uZXJfbCkpID0+XG4gICAgICAgIGxldCAoc2hhcmRzX2wsIGtpZHNfbCkgPSBmbGF0dGVuX21hdGNoKG1hdGNoX2wpO1xuICAgICAgICBsZXQgYSA9IHtcbiAgICAgICAgICAuLi5hLFxuICAgICAgICAgIHNoYXJkczogYS5zaGFyZHMgfD4gUGFpclV0aWwubWFwX2ZzdChzcyA9PiBzcyBAIHNoYXJkc19sKSxcbiAgICAgICAgICBjaGlsZHJlbjpcbiAgICAgICAgICAgIGEuY2hpbGRyZW5cbiAgICAgICAgICAgIHw+IFBhaXJVdGlsLm1hcF9mc3Qoa2lkcyA9PiBraWRzIEAgW291dGVyX2wsIC4uLmtpZHNfbF0pLFxuICAgICAgICB9O1xuICAgICAgICAoYSwgaW5uZXJfbCk7XG4gICAgICB9O1xuICAgIGxldCAoYSwgcikgPVxuICAgICAgc3dpdGNoIChyKSB7XG4gICAgICB8IE5vbmUgPT4gKGEsIHNuZChycy5zaWJsaW5ncykpXG4gICAgICB8IFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSA9PlxuICAgICAgICBsZXQgKHNoYXJkc19yLCBraWRzX3IpID0gZmxhdHRlbl9tYXRjaChtYXRjaF9yKTtcbiAgICAgICAgbGV0IGEgPSB7XG4gICAgICAgICAgLi4uYSxcbiAgICAgICAgICBzaGFyZHM6IGEuc2hhcmRzIHw+IFBhaXJVdGlsLm1hcF9zbmQoc3MgPT4gc2hhcmRzX3IgQCBzcyksXG4gICAgICAgICAgY2hpbGRyZW46XG4gICAgICAgICAgICBhLmNoaWxkcmVuXG4gICAgICAgICAgICB8PiBQYWlyVXRpbC5tYXBfc25kKGtpZHMgPT4gW291dGVyX3IsIC4uLmtpZHNfcl0gQCBraWRzKSxcbiAgICAgICAgfTtcbiAgICAgICAgKGEsIGlubmVyX3IpO1xuICAgICAgfTtcbiAgICB7c2libGluZ3M6IChsLCByKSwgYW5jZXN0b3JzOiBbKGEsIHNpYnMpLCAuLi5hbmNzXX07XG4gIH07XG5cbmxldCByZWFzc2VtYmxlX3NpYmxpbmdzID0gKHJzOiB0KSA9PiB7XG4gIC4uLnJzLFxuICBzaWJsaW5nczogU2libGluZ3MucmVhc3NlbWJsZShycy5zaWJsaW5ncyksXG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChyczogdCk6IHQgPT4ge1xuICBsZXQgcmVjIGdvID0gKHJzOiB0KTogdCA9PlxuICAgIHN3aXRjaCAoU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKHNuZChycy5zaWJsaW5ncykpKSB7XG4gICAgfCBbXSA9PiByc1xuICAgIHwgW3QsIC4uLl9dID0+XG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBycy5zaWJsaW5nc1xuICAgICAgICB8PiBTaWJsaW5ncy5zcGxpdF9ieV9tYXRjaGluZyh0LmlkKVxuICAgICAgICB8PiBUdXBsZVV0aWwubWFwMihBYmEudHJpbSlcbiAgICAgICkge1xuICAgICAgfCAoXywgTm9uZSkgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlXCIpXG4gICAgICB8IChOb25lLCBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSkpID0+XG4gICAgICAgIGxldCB7c2libGluZ3M6IChwcmUsIHN1ZiksIGFuY2VzdG9yc30gPVxuICAgICAgICAgIGdvKHsuLi5ycywgc2libGluZ3M6IChmc3QocnMuc2libGluZ3MpLCBvdXRlcl9yKX0pO1xuICAgICAgICBsZXQgdCA9IFRpbGUucmVhc3NlbWJsZShtYXRjaF9yKTtcbiAgICAgICAgbGV0IHN1ZiA9IFNlZ21lbnQuY29uY2F0KFtpbm5lcl9yLCBbVGlsZS50b19waWVjZSh0KSwgLi4uc3VmXV0pO1xuICAgICAgICB7c2libGluZ3M6IChwcmUsIHN1ZiksIGFuY2VzdG9yc307XG4gICAgICB8IChcbiAgICAgICAgICBTb21lKChvdXRlcl9sLCBtYXRjaF9sLCBpbm5lcl9sKSksXG4gICAgICAgICAgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpLFxuICAgICAgICApID0+XG4gICAgICAgIGxldCBycyA9IGdvKHsuLi5ycywgc2libGluZ3M6IChvdXRlcl9sLCBvdXRlcl9yKX0pO1xuICAgICAgICBsZXQgYW5jZXN0b3JzID0gW1xuICAgICAgICAgIChBbmNlc3Rvci5yZWFzc2VtYmxlKG1hdGNoX2wsIG1hdGNoX3IpLCBycy5zaWJsaW5ncyksXG4gICAgICAgICAgLi4ucnMuYW5jZXN0b3JzLFxuICAgICAgICBdO1xuICAgICAgICBsZXQgc2libGluZ3MgPSAoaW5uZXJfbCwgaW5uZXJfcik7XG4gICAgICAgIHthbmNlc3RvcnMsIHNpYmxpbmdzfTtcbiAgICAgIH1cbiAgICB9O1xuICBycyB8PiByZWFzc2VtYmxlX3NpYmxpbmdzIHw+IHJlYXNzZW1ibGVfcGFyZW50IHw+IGdvO1xufTtcblxuLy8gbGV0IHJlYyByZWFzc2VtYmxlID0gKHJzOiB0KTogdCA9PiB7XG4vLyAgIGxldCBzaWJsaW5ncyA9IFNpYmxpbmdzLnJlYXNzZW1ibGUocnMuc2libGluZ3MpO1xuLy8gICBzd2l0Y2ggKFNpYmxpbmdzLmluY29tcGxldGVfdGlsZXMoc2libGluZ3MpKSB7XG4vLyAgIHwgKFtdLCBfKVxuLy8gICB8IChfLCBbXSkgPT4gey4uLnJzLCBzaWJsaW5nc31cbi8vICAgfCAoW18sIC4uLl9dLCBbdCwgLi4uX10pID0+XG4vLyAgICAgc3dpdGNoIChcbi8vICAgICAgIHNpYmxpbmdzXG4vLyAgICAgICB8PiBTaWJsaW5ncy5zcGxpdF9ieV9tYXRjaGluZyh0LmlkKVxuLy8gICAgICAgfD4gVHVwbGVVdGlsLm1hcDIoQWJhLnRyaW0pXG4vLyAgICAgKSB7XG4vLyAgICAgfCAoTm9uZSwgTm9uZSkgPT4gey4uLnJzLCBzaWJsaW5nc31cbi8vICAgICB8IChOb25lLCBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSkpID0+XG4vLyAgICAgICBsZXQge3NpYmxpbmdzOiAobCwgciksIGFuY2VzdG9yc30gPVxuLy8gICAgICAgICByZWFzc2VtYmxlKHsuLi5ycywgc2libGluZ3M6IChmc3Qoc2libGluZ3MpLCBvdXRlcl9yKX0pO1xuLy8gICAgICAge1xuLy8gICAgICAgICBzaWJsaW5nczogKFxuLy8gICAgICAgICAgIGwsXG4vLyAgICAgICAgICAgU2VnbWVudC5jb25jYXQoW2lubmVyX3IsIEFuY2VzdG9yLk1hdGNoLlN1ZmZpeC5qb2luKG1hdGNoX3IpLCByXSksXG4vLyAgICAgICAgICksXG4vLyAgICAgICAgIGFuY2VzdG9ycyxcbi8vICAgICAgIH07XG4vLyAgICAgfCAoU29tZSgoaW5uZXJfbCwgbWF0Y2hfbCwgb3V0ZXJfbCkpLCBOb25lKSA9PlxuLy8gICAgICAgbGV0IHtzaWJsaW5nczogKGwsIHIpLCBhbmNlc3RvcnN9ID1cbi8vICAgICAgICAgcmVhc3NlbWJsZSh7Li4ucnMsIHNpYmxpbmdzOiAob3V0ZXJfbCwgc25kKHJzLnNpYmxpbmdzKSl9KTtcbi8vICAgICAgIHtcbi8vICAgICAgICAgc2libGluZ3M6IChcbi8vICAgICAgICAgICBTZWdtZW50LmNvbmNhdChbaW5uZXJfbCwgQW5jZXN0b3IuTWF0Y2guU3VmZml4LmpvaW4obWF0Y2hfbCksIGxdKSxcbi8vICAgICAgICAgICByLFxuLy8gICAgICAgICApLFxuLy8gICAgICAgICBhbmNlc3RvcnMsXG4vLyAgICAgICB9O1xuLy8gICAgIHwgKFNvbWUoKGlubmVyX2wsIG1hdGNoX2wsIG91dGVyX2wpKSwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpKSA9PlxuLy8gICAgICAgbGV0IG1hdGNoID0gKG1hdGNoX2wsIG1hdGNoX3IpO1xuLy8gICAgICAgbGV0IHJzX2lubmVyID1cbi8vICAgICAgICAgc3dpdGNoIChBbmNlc3Rvci5NYXRjaC5jb21wbGV0ZShtYXRjaCkpIHtcbi8vICAgICAgICAgfCBOb25lID0+IHtcbi8vICAgICAgICAgICAgIHNpYmxpbmdzOlxuLy8gICAgICAgICAgICAgICBTaWJsaW5ncy5jb25jYXQoW1xuLy8gICAgICAgICAgICAgICAgIChpbm5lcl9sLCBpbm5lcl9yKSxcbi8vICAgICAgICAgICAgICAgICBBbmNlc3Rvci5NYXRjaC5qb2luKG1hdGNoKSxcbi8vICAgICAgICAgICAgICAgXSksXG4vLyAgICAgICAgICAgICBhbmNlc3RvcnM6IEFuY2VzdG9ycy5lbXB0eSxcbi8vICAgICAgICAgICB9XG4vLyAgICAgICAgIHwgU29tZShhKSA9PiB7XG4vLyAgICAgICAgICAgICBzaWJsaW5nczogKGlubmVyX2wsIGlubmVyX3IpLFxuLy8gICAgICAgICAgICAgYW5jZXN0b3JzOiBbKGEsIFNpYmxpbmdzLmVtcHR5KV0sXG4vLyAgICAgICAgICAgfVxuLy8gICAgICAgICB9O1xuLy8gICAgICAgbGV0IHJzX291dGVyID0gcmVhc3NlbWJsZSh7Li4ucnMsIHNpYmxpbmdzOiAob3V0ZXJfbCwgb3V0ZXJfcil9KTtcbi8vICAgICAgIGNvbmNhdChbcnNfaW5uZXIsIHJzX291dGVyXSk7XG4vLyAgICAgfVxuLy8gICB9O1xuLy8gfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5tb2R1bGUgQ2FyZXQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IE91dGVyXG4gICAgfCBJbm5lcihpbnQsIGludCk7XG5cbiAgbGV0IGRlY3JlbWVudDogdCA9PiB0ID1cbiAgICBmdW5cbiAgICB8IE91dGVyXG4gICAgfCBJbm5lcihfLCAwKSA9PiBPdXRlclxuICAgIHwgSW5uZXIoZCwgYykgPT4gSW5uZXIoZCwgYyAtIDEpO1xuXG4gIGxldCBvZmZzZXQ6IHQgPT4gaW50ID1cbiAgICBmdW5cbiAgICB8IE91dGVyID0+IDBcbiAgICB8IElubmVyKF8sIGMpID0+IGMgKyAxO1xufTtcblxuLy8gYXNzdW1pbmcgc2luZ2xlIGJhY2twYWNrLCBzaGFyZHMgbWF5IGFwcGVhciBpbiBzZWxlY3Rpb24sIGJhY2twYWNrLCBvciBzaWJsaW5nc1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzZWxlY3Rpb246IFNlbGVjdGlvbi50LFxuICBiYWNrcGFjazogQmFja3BhY2sudCxcbiAgcmVsYXRpdmVzOiBSZWxhdGl2ZXMudCxcbiAgY2FyZXQ6IENhcmV0LnQsXG4gIC8vIGNvbF90YXJnZXQ6IGludCxcbn07XG5cbmxldCBpbml0OiB1bml0ID0+IHQgPVxuICAoKSA9PiB7XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb24ubWsoW10pLFxuICAgIGJhY2twYWNrOiBbXSxcbiAgICByZWxhdGl2ZXM6IHtcbiAgICAgIHNpYmxpbmdzOiAoW10sIFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0pLFxuICAgICAgYW5jZXN0b3JzOiBbXSxcbiAgICB9LFxuICAgIGNhcmV0OiBPdXRlcixcbiAgICAvLyBjb2xfdGFyZ2V0OiAwLFxuICB9O1xuXG5sZXQgbmV4dF9ibGFuayA9IF8gPT4gSWQubWsoKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjaHVua2luZXNzID1cbiAgfCBCeUNoYXJcbiAgfCBNb25vQnlDaGFyXG4gIHwgQnlUb2tlbjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwbGFuYXIgPVxuICB8IFVwXG4gIHwgRG93blxuICB8IExlZnQoY2h1bmtpbmVzcylcbiAgfCBSaWdodChjaHVua2luZXNzKTtcblxubGV0IGZyb21fcGxhbmU6IHBsYW5hciA9PiBEaXJlY3Rpb24udCA9XG4gIGZ1blxuICB8IExlZnQoXykgPT4gTGVmdFxuICB8IFJpZ2h0KF8pID0+IFJpZ2h0XG4gIHwgVXAgPT4gTGVmdFxuICB8IERvd24gPT4gUmlnaHQ7XG5cbmxldCB1cGRhdGVfY2FyZXQgPSAoZjogQ2FyZXQudCA9PiBDYXJldC50LCB6OiB0KTogdCA9PiB7XG4gIC4uLnosXG4gIGNhcmV0OiBmKHouY2FyZXQpLFxufTtcbmxldCBzZXRfY2FyZXQgPSAoY2FyZXQ6IENhcmV0LnQpOiAodCA9PiB0KSA9PiB1cGRhdGVfY2FyZXQoXyA9PiBjYXJldCk7XG5cbmxldCB1cGRhdGVfcmVsYXRpdmVzID0gKGY6IFJlbGF0aXZlcy50ID0+IFJlbGF0aXZlcy50LCB6OiB0KTogdCA9PiB7XG4gIC4uLnosXG4gIHJlbGF0aXZlczogZih6LnJlbGF0aXZlcyksXG59O1xuXG5sZXQgdXBkYXRlX3NpYmxpbmdzOiAoU2libGluZ3MudCA9PiBTaWJsaW5ncy50LCB0KSA9PiB0ID1cbiAgZiA9PiB1cGRhdGVfcmVsYXRpdmVzKHJzID0+IHsuLi5ycywgc2libGluZ3M6IGYocnMuc2libGluZ3MpfSk7XG5cbmxldCBwYXJlbnQgPSAoejogdCk6IG9wdGlvbihQaWVjZS50KSA9PlxuICBSZWxhdGl2ZXMucGFyZW50KH5zZWw9ei5zZWxlY3Rpb24uY29udGVudCwgei5yZWxhdGl2ZXMpO1xuXG5sZXQgZGVsZXRlX3BhcmVudCA9ICh6OiB0KTogdCA9PiB7XG4gIC4uLnosXG4gIHJlbGF0aXZlczogUmVsYXRpdmVzLmRlbGV0ZV9wYXJlbnQoei5yZWxhdGl2ZXMpLFxufTtcblxubGV0IHppcCA9ICh6OiB0KTogU2VnbWVudC50ID0+XG4gIFJlbGF0aXZlcy56aXAofnNlbD16LnNlbGVjdGlvbi5jb250ZW50LCB6LnJlbGF0aXZlcyk7XG5cbmxldCB1bnppcCA9IChzZWc6IFNlZ21lbnQudCk6IHQgPT4ge1xuICBzZWxlY3Rpb246IFNlbGVjdGlvbi5tayhbXSksXG4gIGJhY2twYWNrOiBbXSxcbiAgcmVsYXRpdmVzOiB7XG4gICAgc2libGluZ3M6IChzZWcsIFtdKSxcbiAgICBhbmNlc3RvcnM6IFtdLFxuICB9LFxuICBjYXJldDogT3V0ZXIsXG59O1xuXG5sZXQgc2lic193aXRoX3NlbCA9XG4gICAgKFxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb246IHtjb250ZW50LCBmb2N1cywgX30sXG4gICAgICAgIHJlbGF0aXZlczoge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBffSxcbiAgICAgICAgXyxcbiAgICAgIH06IHQsXG4gICAgKVxuICAgIDogU2libGluZ3MudCA9PlxuICBzd2l0Y2ggKGZvY3VzKSB7XG4gIHwgTGVmdCA9PiAobF9zaWJzLCBjb250ZW50IEAgcl9zaWJzKVxuICB8IFJpZ2h0ID0+IChsX3NpYnMgQCBjb250ZW50LCByX3NpYnMpXG4gIH07XG5cbmxldCBwb3BfYmFja3BhY2sgPSAoejogdCkgPT5cbiAgQmFja3BhY2sucG9wKFJlbGF0aXZlcy5sb2NhbF9pbmNvbXBsZXRlX3RpbGVzKHoucmVsYXRpdmVzKSwgei5iYWNrcGFjayk7XG5cbmxldCBsZWZ0X25laWdoYm9yX21vbm90aWxlOiBTaWJsaW5ncy50ID0+IG9wdGlvbihUb2tlbi50KSA9XG4gIHMgPT4gcyB8PiBTaWJsaW5ncy5sZWZ0X25laWdoYm9yIHw+IE9wdFV0aWwuYW5kX3RoZW4oUGllY2UubW9ub3RpbGUpO1xuXG5sZXQgcmlnaHRfbmVpZ2hib3JfbW9ub3RpbGU6IFNpYmxpbmdzLnQgPT4gb3B0aW9uKFRva2VuLnQpID1cbiAgcyA9PiBzIHw+IFNpYmxpbmdzLnJpZ2h0X25laWdoYm9yIHw+IE9wdFV0aWwuYW5kX3RoZW4oUGllY2UubW9ub3RpbGUpO1xuXG5sZXQgbmVpZ2hib3JfbW9ub3RpbGVzOiBTaWJsaW5ncy50ID0+IChvcHRpb24oVG9rZW4udCksIG9wdGlvbihUb2tlbi50KSkgPVxuICBzID0+IChsZWZ0X25laWdoYm9yX21vbm90aWxlKHMpLCByaWdodF9uZWlnaGJvcl9tb25vdGlsZShzKSk7XG5cbmxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PiB7XG4gIGFzc2VydChTZWxlY3Rpb24uaXNfZW1wdHkoei5zZWxlY3Rpb24pKTtcbiAgbGV0IHJlbGF0aXZlcyA9IFJlbGF0aXZlcy5yZWdyb3V0KGQsIHoucmVsYXRpdmVzKTtcbiAgey4uLnosIHJlbGF0aXZlc307XG59O1xuXG5sZXQgcmVtb2xkID0gKHo6IHQpOiB0ID0+IHtcbiAgYXNzZXJ0KFNlbGVjdGlvbi5pc19lbXB0eSh6LnNlbGVjdGlvbikpO1xuICB7Li4ueiwgcmVsYXRpdmVzOiBSZWxhdGl2ZXMucmVtb2xkKHoucmVsYXRpdmVzKX07XG59O1xuXG5sZXQgcmVtb2xkX3JlZ3JvdXQgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+IHogfD4gcmVtb2xkIHw+IHJlZ3JvdXQoZCk7XG5cbmxldCBjbGVhcl91bnBhcnNlZF9idWZmZXIgPSAoejogdCkgPT5cbiAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gIHwgQnVmZmVyKFVucGFyc2VkKSA9PiB7Li4ueiwgc2VsZWN0aW9uOiBTZWxlY3Rpb24uZW1wdHl9XG4gIHwgXyA9PiB6XG4gIH07XG5cbmxldCB1bnNlbGVjdCA9ICh+ZXJhc2VfYnVmZmVyPWZhbHNlLCB6OiB0KTogdCA9PiB7XG4gIC8qIE5PVEUoYW5kcmV3KTogRXJhc2UgYnVmZmVyIGZsYWcgb25seSBhcHBsaWVzIHRvIHVucGFyc2VkIGJ1ZmZlcixcbiAgICogdGhhdCBpcywgdGhlIGJ1ZmZlciBzdHlsZSB0aGF0IGp1c3QgY29udGFpbnMgYSBzaW5nbGUgZmxhdCB0b2tlbi5cbiAgICogRXJhc2luZyBhIGJ1ZmZlciB0aGUgY29udGFpbnMgYXJiaXRyYXJ5IHRpbGVzIHdvdWxkIGJlIG1vcmUgY29tcGxleFxuICAgKiBhcyB3ZSBjYW4ndCBqdXN0IGVtcHR5IHRoZSBzZWxlY3Rpb24gd2l0aG91dCByZWdyb3V0aW5nICovXG4gIGxldCB6ID0gZXJhc2VfYnVmZmVyID8gY2xlYXJfdW5wYXJzZWRfYnVmZmVyKHopIDogejtcbiAgbGV0IHJlbGF0aXZlcyA9XG4gICAgei5yZWxhdGl2ZXNcbiAgICB8PiBSZWxhdGl2ZXMucHJlcGVuZCh6LnNlbGVjdGlvbi5mb2N1cywgei5zZWxlY3Rpb24uY29udGVudClcbiAgICB8PiBSZWxhdGl2ZXMucmVhc3NlbWJsZTtcbiAgbGV0IHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5lbXB0eTtcbiAgey4uLnosIHNlbGVjdGlvbiwgcmVsYXRpdmVzfTtcbn07XG5sZXQgdW5zZWxlY3RfYW5kX3ppcCA9ICh+ZXJhc2VfYnVmZmVyPWZhbHNlLCB6OiB0KTogU2VnbWVudC50ID0+XG4gIHogfD4gdW5zZWxlY3QofmVyYXNlX2J1ZmZlcikgfD4gemlwO1xuXG5sZXQgdXBkYXRlX3NlbGVjdGlvbiA9IChzZWxlY3Rpb246IFNlbGVjdGlvbi50LCB6OiB0KTogKFNlbGVjdGlvbi50LCB0KSA9PiB7XG4gIGxldCBvbGQgPSB6LnNlbGVjdGlvbjtcbiAgLy8gdXNlZCB0byBiZSBuZWNlc3NhcnkgdG8gdW5zZWxlY3Qgd2hlbiBzZWxlY3Rpb24gdXBkYXRlXG4gIC8vIGluY2x1ZGVkIHJlbW9sZC9yZWdyb3V0LCBub3cgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpZiBuZWVkc1xuICAvLyB0byBiZSBjaGFuZ2VkIGJ1dCBrZWVwaW5nIGZvciBub3cgdG8gbWluaW1pemUgY2hhbmdlXG4gIGxldCB6ID0gdW5zZWxlY3Qoey4uLnosIHNlbGVjdGlvbn0pO1xuICAob2xkLCB6KTtcbn07XG5cbmxldCBwdXRfc2VsZWN0aW9uID0gKHNlbDogU2VsZWN0aW9uLnQsIHo6IHQpOiB0ID0+XG4gIHNuZCh1cGRhdGVfc2VsZWN0aW9uKHNlbCwgeikpO1xuXG5sZXQgZ3Jvd19zZWxlY3Rpb24gPSAoejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCsgKHAsIHJlbGF0aXZlcykgPSBSZWxhdGl2ZXMucG9wKHouc2VsZWN0aW9uLmZvY3VzLCB6LnJlbGF0aXZlcyk7XG4gIGxldCBzZWxlY3Rpb24gPSBTZWxlY3Rpb24ucHVzaChwLCB6LnNlbGVjdGlvbik7XG4gIHsuLi56LCBzZWxlY3Rpb24sIHJlbGF0aXZlc307XG59O1xuXG4vLyB0b2dnbGVzIGZvY3VzIGFuZCBncm93cyBpZiBzZWxlY3Rpb24gaXMgZW1wdHlcbmxldCBzaHJpbmtfc2VsZWN0aW9uID0gKHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICBzd2l0Y2ggKFNlbGVjdGlvbi5wb3Aoei5zZWxlY3Rpb24pKSB7XG4gIHwgTm9uZSA9PlxuICAgIGxldCBzZWxlY3Rpb24gPSBTZWxlY3Rpb24udG9nZ2xlX2ZvY3VzKHouc2VsZWN0aW9uKTtcbiAgICBncm93X3NlbGVjdGlvbih7Li4ueiwgc2VsZWN0aW9ufSk7XG4gIHwgU29tZSgocCwgc2VsZWN0aW9uKSkgPT5cbiAgICBsZXQgcmVsYXRpdmVzID1cbiAgICAgIHoucmVsYXRpdmVzXG4gICAgICB8PiBSZWxhdGl2ZXMucHVzaChzZWxlY3Rpb24uZm9jdXMsIHApXG4gICAgICB8PiBSZWxhdGl2ZXMucmVhc3NlbWJsZTtcbiAgICBTb21lKHsuLi56LCBzZWxlY3Rpb24sIHJlbGF0aXZlc30pO1xuICB9O1xufTtcblxubGV0IHRvZ2dsZV9mb2N1cyA9ICh6OiB0KTogdCA9PiB7XG4gIC4uLnosXG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLnRvZ2dsZV9mb2N1cyh6LnNlbGVjdGlvbiksXG59O1xuXG5sZXQgZGlyZWN0aW9uYWxfdW5zZWxlY3QgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+IHtcbiAgbGV0IHNlbGVjdGlvbiA9IHsuLi56LnNlbGVjdGlvbiwgZm9jdXM6IERpcmVjdGlvbi50b2dnbGUoZCl9O1xuICB1bnNlbGVjdCh7Li4ueiwgc2VsZWN0aW9ufSk7XG59O1xuXG5sZXQgbW92ZSA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PlxuICBpZiAoU2VsZWN0aW9uLmlzX2VtcHR5KHouc2VsZWN0aW9uKSkge1xuICAgIC8vIGxldCBiYWxhbmNlZCA9ICFCYWNrcGFjay5pc19iYWxhbmNlZCh6LmJhY2twYWNrKTtcbiAgICBsZXQrIChwLCByZWxhdGl2ZXMpID0gUmVsYXRpdmVzLnBvcChkLCB6LnJlbGF0aXZlcyk7XG4gICAgbGV0IHJlbGF0aXZlcyA9XG4gICAgICByZWxhdGl2ZXNcbiAgICAgIHw+IFJlbGF0aXZlcy5wdXNoKERpcmVjdGlvbi50b2dnbGUoZCksIHApXG4gICAgICB8PiBSZWxhdGl2ZXMucmVhc3NlbWJsZTtcbiAgICB7Li4ueiwgcmVsYXRpdmVzfTtcbiAgfSBlbHNlIHtcbiAgICBTb21lKGRpcmVjdGlvbmFsX3Vuc2VsZWN0KGQsIHopKTtcbiAgfTtcblxubGV0IHNlbGVjdCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PlxuICBkID09IHouc2VsZWN0aW9uLmZvY3VzID8gZ3Jvd19zZWxlY3Rpb24oeikgOiBzaHJpbmtfc2VsZWN0aW9uKHopO1xuXG5sZXQgcGlja191cCA9ICh6OiB0KTogdCA9PiB7XG4gIGxldCAoc2VsZWN0ZWQsIHopID0gdXBkYXRlX3NlbGVjdGlvbihTZWxlY3Rpb24uZW1wdHksIHopO1xuICBsZXQgc2VsZWN0aW9uID1cbiAgICBzZWxlY3RlZC5jb250ZW50XG4gICAgfD4gU2VnbWVudC50cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnkoTGVmdClcbiAgICB8PiBTZWdtZW50LnRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeShSaWdodClcbiAgICB8PiBTZWxlY3Rpb24ubWs7XG4gIFNlZ21lbnQudGlsZXMoc2VsZWN0aW9uLmNvbnRlbnQpXG4gIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IHQuaWQpXG4gIHw+IEVmZmVjdC5zX3RvdWNoO1xuICBsZXQgYmFja3BhY2sgPSBCYWNrcGFjay5wdXNoKHNlbGVjdGlvbiwgei5iYWNrcGFjayk7XG4gIHsuLi56LCBiYWNrcGFja307XG59O1xuXG5sZXQgZGVzdHJ1Y3QgPSAofmRlc3Ryb3lfa2lkcz10cnVlLCB6OiB0KTogdCA9PiB7XG4gIGxldCBiYWNrcGFjayA9XG4gICAgQmFja3BhY2sucmVtb3ZlX3VuaV90aWxlc193aXRoX2RlZXBfbWF0Y2hlcyh6LmJhY2twYWNrLCB6LnNlbGVjdGlvbik7XG4gIGxldCAoc2VsZWN0ZWQsIHopID0gdXBkYXRlX3NlbGVjdGlvbihTZWxlY3Rpb24uZW1wdHksIHopO1xuICBsZXQgKHRvX3BpY2tfdXAsIHRvX3JlbW92ZSkgPVxuICAgIFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhzZWxlY3RlZC5jb250ZW50KVxuICAgIHw+IExpc3QucGFydGl0aW9uKHQgPT5cbiAgICAgICAgIFNpYmxpbmdzLmNvbnRhaW5zX21hdGNoaW5nKHQsIHoucmVsYXRpdmVzLnNpYmxpbmdzKVxuICAgICAgICAgfHwgQW5jZXN0b3JzLnBhcmVudF9tYXRjaGVzKHQsIHoucmVsYXRpdmVzLmFuY2VzdG9ycylcbiAgICAgICApO1xuICAvKiBJZiBmbGFnIGlzIHNldCwgYnJlYWsgdXAgdGlsZXMgYW5kIHJlbW92ZSBjaGlsZHJlbiAqL1xuICBsZXQgdG9fcGlja191cCA9XG4gICAgZGVzdHJveV9raWRzXG4gICAgICA/IExpc3QubWFwKFRpbGUuZGlzaW50ZWdyYXRlLCB0b19waWNrX3VwKSB8PiBMaXN0LmZsYXR0ZW4gOiB0b19waWNrX3VwO1xuICBFZmZlY3Quc190b3VjaChMaXN0Lm1hcCgodDogVGlsZS50KSA9PiB0LmlkLCB0b19waWNrX3VwKSk7XG4gIGxldCBiYWNrcGFjayA9XG4gICAgYmFja3BhY2tcbiAgICB8PiBCYWNrcGFjay5yZW1vdmVfbWF0Y2hpbmcodG9fcmVtb3ZlKVxuICAgIHw+IEJhY2twYWNrLnB1c2hfcyhcbiAgICAgICAgIHRvX3BpY2tfdXAgfD4gTGlzdC5tYXAoU2VnbWVudC5vZl90aWxlKSB8PiBMaXN0Lm1hcChTZWxlY3Rpb24ubWspLFxuICAgICAgICk7XG4gIHsuLi56LCBiYWNrcGFja307XG59O1xuXG5sZXQgZGVsZXRlID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gIHogfD4gc2VsZWN0KGQpIHw+IE9wdGlvbi5tYXAoZGVzdHJ1Y3QpO1xuXG5sZXQgcHV0X2Rvd24gPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICBsZXQgeiA9IGRlc3RydWN0KHopO1xuICBsZXQqIChfLCBwb3BwZWQsIGJhY2twYWNrKSA9IHBvcF9iYWNrcGFjayh6KTtcbiAgU2VnbWVudC50aWxlcyhwb3BwZWQuY29udGVudClcbiAgfD4gTGlzdC5tYXAoKHQ6IFRpbGUudCkgPT4gdC5pZClcbiAgfD4gRWZmZWN0LnNfdG91Y2g7XG4gIGxldCB6ID0gey4uLnosIGJhY2twYWNrfSB8PiBwdXRfc2VsZWN0aW9uKHBvcHBlZCkgfD4gdW5zZWxlY3Q7XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gU29tZSh6KVxuICB8IFJpZ2h0ID0+IG1vdmUoTGVmdCwgeilcbiAgfTtcbn07XG5cbmxldCByZWMgY29uc3RydWN0ID1cbiAgICAgICAgKH5jYXJldDogRGlyZWN0aW9uLnQsIH5iYWNrcGFjazogRGlyZWN0aW9uLnQsIGxhYmVsOiBMYWJlbC50LCB6OiB0KTogdCA9PiB7XG4gIHN3aXRjaCAobGFiZWwpIHtcbiAgfCBbdF0gd2hlbiBGb3JtLmlzX3N0cmluZ19kZWxpbSh0KSA9PlxuICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgY29uc3RydWN0aW5nIHN0cmluZyBsaXRlcmFscy5cbiAgICAgICBTZWUgSW5zZXJ0Lm1vdmVfaW50b19pZl9zdHJpbmdsaXQgZm9yIG1vcmUgc3BlY2lhbC1jYXNpbmcuICovXG4gICAgY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBbRm9ybS5zdHJpbmdfZGVsaW0gKysgRm9ybS5zdHJpbmdfZGVsaW1dLCB6KVxuICB8IFtjb250ZW50XSB3aGVuIEZvcm0uaXNfY29tbWVudChjb250ZW50KSA9PlxuICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgY29tbWVudHMsIGNhbid0IHJlbHkgb24gdGhlIGxhc3QgYnJhbmNoIHRvIGNvbnN0cnVjdCAqL1xuICAgIGxldCBjb250ZW50ID0gU2Vjb25kYXJ5LmNvbnN0cnVjdF9jb21tZW50KGNvbnRlbnQpO1xuICAgIGxldCBpZCA9IElkLm1rKCk7XG4gICAgRWZmZWN0LnNfdG91Y2goW2lkXSk7XG4gICAgbGV0IHogPSBkZXN0cnVjdCh6KTtcbiAgICBsZXQgc2VsZWN0aW9ucyA9IFtTZWxlY3Rpb24ubWsoQmFzZS5ta19zZWNvbmRhcnkoaWQsIGNvbnRlbnQpKV07XG4gICAgbGV0IGJhY2twYWNrID0gQmFja3BhY2sucHVzaF9zKHNlbGVjdGlvbnMsIHouYmFja3BhY2spO1xuICAgIE9wdGlvbi5nZXQocHV0X2Rvd24oY2FyZXQsIHsuLi56LCBiYWNrcGFja30pKTtcblxuICB8IFtjb250ZW50XSB3aGVuIEZvcm0uaXNfc2Vjb25kYXJ5KGNvbnRlbnQpID0+XG4gICAgbGV0IGNvbnRlbnQgPSBTZWNvbmRhcnkuV2hpdGVzcGFjZShjb250ZW50KTtcbiAgICBsZXQgaWQgPSBJZC5taygpO1xuICAgIEVmZmVjdC5zX3RvdWNoKFtpZF0pO1xuICAgIHogfD4gdXBkYXRlX3NpYmxpbmdzKCgobCwgcikpID0+IChsIEAgW1NlY29uZGFyeSh7aWQsIGNvbnRlbnR9KV0sIHIpKTtcbiAgfCBfID0+XG4gICAgbGV0IHogPSBkZXN0cnVjdCh6KTtcbiAgICBsZXQgbW9sZHMgPSBNb2xkcy5nZXQobGFiZWwpO1xuICAgIGFzc2VydChtb2xkcyAhPSBbXSk7XG4gICAgLy8gaW5pdGlhbCBtb2xkIHRvIHR5cGVjaGVjaywgd2lsbCBiZSByZW1vbGRlZFxuICAgIGxldCBtb2xkID0gTGlzdC5oZChtb2xkcyk7XG4gICAgbGV0IGlkID0gSWQubWsoKTtcbiAgICBFZmZlY3Quc190b3VjaChbaWRdKTtcbiAgICBsZXQgc2VsZWN0aW9ucyA9XG4gICAgICBUaWxlLnNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQsIExpc3QubWFwaSgoaSwgXykgPT4gaSwgbGFiZWwpKVxuICAgICAgfD4gTGlzdC5tYXAoU2VnbWVudC5vZl90aWxlKVxuICAgICAgfD4gTGlzdC5tYXAoU2VsZWN0aW9uLm1rKVxuICAgICAgfD4gTGlzdFV0aWwucmV2X2lmKGJhY2twYWNrID09IFJpZ2h0KTtcbiAgICBsZXQgYmFja3BhY2sgPSBCYWNrcGFjay5wdXNoX3Moc2VsZWN0aW9ucywgei5iYWNrcGFjayk7XG4gICAgT3B0aW9uLmdldChwdXRfZG93bihjYXJldCwgey4uLnosIGJhY2twYWNrfSkpO1xuICB9O1xufTtcblxubGV0IGNvbnN0cnVjdF9tb25vID0gKGQ6IERpcmVjdGlvbi50LCB0OiBUb2tlbi50LCB6OiB0KTogdCA9PlxuICBjb25zdHJ1Y3QofmNhcmV0PWQsIH5iYWNrcGFjaz1MZWZ0LCBbdF0sIHopO1xuXG5sZXQgcmVwbGFjZSA9XG4gICAgKH5jYXJldDogRGlyZWN0aW9uLnQsIH5iYWNrcGFjazogRGlyZWN0aW9uLnQsIGw6IExhYmVsLnQsIHo6IHQpXG4gICAgOiBvcHRpb24odCkgPT5cbiAgLyogaS5lLiBzZWxlY3QgYW5kIGNvbnN0cnVjdCwgb3ZlcndyaXRpbmcgdGhlIHNlbGVjdGlvbiAqL1xuICB6IHw+IGRlbGV0ZShjYXJldCkgfD4gT3B0aW9uLm1hcChjb25zdHJ1Y3QofmNhcmV0LCB+YmFja3BhY2ssIGwpKTtcblxubGV0IHJlcGxhY2VfbW9ubyA9IChkOiBEaXJlY3Rpb24udCwgdDogVG9rZW4udCwgejogdCk6IG9wdGlvbih0KSA9PlxuICByZXBsYWNlKH5jYXJldD1kLCB+YmFja3BhY2s9TGVmdCwgW3RdLCB6KTtcblxubGV0IHJlcHJlc2VudGF0aXZlX3BpZWNlID0gKHo6IHQpOiBvcHRpb24oKFBpZWNlLnQsIERpcmVjdGlvbi50KSkgPT4ge1xuICAvKiBUaGUgcGllY2UgdG8gdGhlIGxlZnQgb2YgdGhlIGNhcmV0LCBvciBpZiBub25lIGV4aXN0cywgdGhlIHBpZWNlIHRvIHRoZSByaWdodCAqL1xuICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyhzaWJzX3dpdGhfc2VsKHopKSkge1xuICB8IChTb21lKGwpLCBfKSA9PiBTb21lKChsLCBMZWZ0KSlcbiAgfCAoXywgU29tZShyKSkgPT4gU29tZSgociwgUmlnaHQpKVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IGNhcmV0X2RpcmVjdGlvbiA9ICh6OiB0KTogb3B0aW9uKERpcmVjdGlvbi50KSA9PlxuICAvKiBEaXJlY3Rpb24gdGhlIGNhcmV0IGlzIGZhY2luZyBpbiAqL1xuICBzd2l0Y2ggKHouY2FyZXQpIHtcbiAgfCBJbm5lcihfKSA9PiBOb25lXG4gIHwgT3V0ZXIgPT5cbiAgICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyhzaWJzX3dpdGhfc2VsKHopKSkge1xuICAgIHwgKFNvbWUobCksIFNvbWUocikpIHdoZW4gUGllY2UuaXNfc2Vjb25kYXJ5KGwpICYmIFBpZWNlLmlzX3NlY29uZGFyeShyKSA9PlxuICAgICAgTm9uZVxuICAgIHwgXyA9PiBTaWJsaW5ncy5kaXJlY3Rpb25fYmV0d2VlbihzaWJzX3dpdGhfc2VsKHopKVxuICAgIH1cbiAgfTtcblxubGV0IGJhc2VfcG9pbnQgPSAobWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IHQpOiBNZWFzdXJlZC5Qb2ludC50ID0+IHtcbiAgc3dpdGNoIChyZXByZXNlbnRhdGl2ZV9waWVjZSh6KSkge1xuICB8IFNvbWUoKHAsIGQpKSA9PlxuICAgIGxldCBzZWcgPSBQaWVjZS5kaXNhc3NlbWJsZShwKTtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExlZnQgPT5cbiAgICAgIGxldCBwID0gTGlzdFV0aWwubGFzdChzZWcpO1xuICAgICAgbGV0IG0gPSBNZWFzdXJlZC5maW5kX3AocCwgbWVhc3VyZWQpO1xuICAgICAgbS5sYXN0O1xuICAgIHwgUmlnaHQgPT5cbiAgICAgIGxldCBwID0gTGlzdC5oZChzZWcpO1xuICAgICAgbGV0IG0gPSBNZWFzdXJlZC5maW5kX3AocCwgbWVhc3VyZWQpO1xuICAgICAgbS5vcmlnaW47XG4gICAgfTtcbiAgfCBOb25lID0+IHtyb3c6IDAsIGNvbDogMH1cbiAgfTtcbn07XG5sZXQgY2FyZXRfcG9pbnQgPSAobWVhc3VyZWQsIHo6IHQpOiBNZWFzdXJlZC5Qb2ludC50ID0+IHtcbiAgbGV0IE1lYXN1cmVkLlBvaW50Lntyb3csIGNvbH0gPSBiYXNlX3BvaW50KG1lYXN1cmVkLCB6KTtcbiAge3JvdywgY29sOiBjb2wgKyBDYXJldC5vZmZzZXQoei5jYXJldCl9O1xufTtcblxubGV0IHNlcmlhbGl6ZSA9ICh6OiB0KTogc3RyaW5nID0+IHtcbiAgc2V4cF9vZl90KHopIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG59O1xuXG5sZXQgZGVzZXJpYWxpemUgPSAoZGF0YTogc3RyaW5nKTogdCA9PiB7XG4gIFNleHBsaWIuU2V4cC5vZl9zdHJpbmcoZGF0YSkgfD4gdF9vZl9zZXhwO1xufTtcblxubGV0IGNhbl9wdXRfZG93biA9IHogPT5cbiAgc3dpdGNoIChwb3BfYmFja3BhY2soeikpIHtcbiAgfCBTb21lKF8pID0+IHouY2FyZXQgPT0gT3V0ZXJcbiAgfCBOb25lID0+IGZhbHNlXG4gIH07XG5cbmxldCBzZXRfYnVmZmVyID0gKHo6IHQsIH5tb2RlOiBTZWxlY3Rpb24uYnVmZmVyLCB+Y29udGVudDogU2VnbWVudC50KTogdCA9PiB7XG4gIC4uLnosXG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rX2J1ZmZlcihtb2RlLCBjb250ZW50KSxcbn07XG5cbmxldCBpc19saW5lYnJlYWtfdG9fcmlnaHRfb2ZfY2FyZXQgPVxuICAgICh7cmVsYXRpdmVzOiB7c2libGluZ3M6IChfLCByKSwgX30sIF99OiB0KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAocikge1xuICB8IFtTZWNvbmRhcnkocyksIC4uLl9dIHdoZW4gU2Vjb25kYXJ5LmlzX2xpbmVicmVhayhzKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xufTtcblxuLyogVHJ5IHRvIGNvbXBsZXRlIHRoZSBzeW50YXggdG8gZ2l2ZSBiZXR0ZXIgc2VtYW50aWMgZmVlYmFjay5cbiAqIFRoaXMgaXMgYSBiZXN0LWVmZm9ydCBhcHByb2FjaCBmb2N1c3NlZCBvbiBhZGRpbmcgbmV3IGRlZmluaXRpb25zXG4gKiBhcyBvcHBvc2VkIHRvIHJlc3RydWN0dXJpbmc7IGl0IGRvZXMgbm90IGNvbXBsZXRlIHRoZSBzeW50YXggaW5cbiAqIGFsbCBjYXNlcy5cbiAqXG4gKiBOT1RFOiBTZXR0aW5nIHRoZSBjYXJldCB0byBvdXRlciB3YXMgbmVjZXNzYXJ5IHRvICdnZXQgaXQgcGFzdCdcbiAqIHN0cmluZyBsaXRlcmFscywgaS5lLiBvZmZlciBsaXZlIGZlZWJhY2sgd2hlbiB0eXBpbmcgaW5zaWRlIGFcbiAqIHN0cmluZzsgbm90IHN1cmUgaWYgdGhpcyBpcyBhIGhhY2sgb3Igbm90LCBpdCBtYXkgYmUgY29tcGVuc2F0aW5nXG4gKiBmb3IgdGhlIHB1dF9kb3duIGxvZ2ljIG5vdCB3b3JraW5nIHJpZ2h0IHdpdGggc3RyaW5nIGxpdHMuIFRvIHRlc3QsXG4gKiB0cnkgdG8gbG9vayBhdCBsaXZlIGV2YWx1YXRpb24gd2hpbGUgdHlwaW5nIGluc2lkZSBhIHN0cmluZyBsaXQgd2l0aFxuICogc3R1ZmYgbGVmdCB0byBkcm9wIGluIGJhY2twYWNrIHdpdGggYmVsb3cgc2V0OiBPdXRlciBkaXNhYmxlZC4gKi9cbmxldCB0cnlfdG9fZHVtcF9iYWNrcGFjayA9ICh6aXBwZXI6IHQpID0+IHtcbiAgc3dpdGNoICh6aXBwZXIuYmFja3BhY2spIHtcbiAgfCBbXSA9PiB6aXBwZXJcbiAgfCBfID0+XG4gICAgbGV0IHppcHBlciA9IHsuLi56aXBwZXIsIGNhcmV0OiBPdXRlcn07XG4gICAgbGV0IHJlYyBtb3ZlX3VudGlsX2NhbnRfcHV0X2Rvd24gPSAoel9sYXN0LCB6OiB0KSA9PlxuICAgICAgaWYgKGNhbl9wdXRfZG93bih6KSAmJiAhaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0KHopKSB7XG4gICAgICAgIHN3aXRjaCAobW92ZShSaWdodCwgeikpIHtcbiAgICAgICAgfCBOb25lID0+IHpcbiAgICAgICAgfCBTb21lKHpfbmV3KSA9PiBtb3ZlX3VudGlsX2NhbnRfcHV0X2Rvd24oeiwgel9uZXcpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB6X2xhc3Q7XG4gICAgICB9O1xuICAgIGxldCByZWMgbW92ZV91bnRpbF9jYW5fcHV0X2Rvd24gPSAoejogdCkgPT5cbiAgICAgIGlmICghY2FuX3B1dF9kb3duKHopKSB7XG4gICAgICAgIHN3aXRjaCAobW92ZShSaWdodCwgeikpIHtcbiAgICAgICAgfCBOb25lID0+IHpcbiAgICAgICAgfCBTb21lKHpfbmV3KSA9PiBtb3ZlX3VudGlsX2Nhbl9wdXRfZG93bih6X25ldylcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHo7XG4gICAgICB9O1xuICAgIGxldCByZWMgZ28gPSAoejogdCk6IHQgPT5cbiAgICAgIGlmIChjYW5fcHV0X2Rvd24oeikpIHtcbiAgICAgICAgbGV0IHpfY2FuID0gbW92ZV91bnRpbF9jYW50X3B1dF9kb3duKHosIHopO1xuICAgICAgICBzd2l0Y2ggKHB1dF9kb3duKFJpZ2h0LCB6X2NhbikpIHtcbiAgICAgICAgfCBOb25lID0+IHpfY2FuXG4gICAgICAgIHwgU29tZSh6KSA9PlxuICAgICAgICAgIGxldCB6ID0gcmVncm91dChSaWdodCwgeik7XG4gICAgICAgICAgZ28oeik7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgel9jYW4gPSBtb3ZlX3VudGlsX2Nhbl9wdXRfZG93bih6KTtcbiAgICAgICAgbGV0IHpfY2FuID0gbW92ZV91bnRpbF9jYW50X3B1dF9kb3duKHpfY2FuLCB6X2Nhbik7XG4gICAgICAgIHN3aXRjaCAocHV0X2Rvd24oUmlnaHQsIHpfY2FuKSkge1xuICAgICAgICB8IE5vbmUgPT4gel9jYW5cbiAgICAgICAgfCBTb21lKHopID0+XG4gICAgICAgICAgbGV0IHogPSByZWdyb3V0KFJpZ2h0LCB6KTtcbiAgICAgICAgICBnbyh6KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgZ28oemlwcGVyKTtcbiAgfTtcbn07XG5cbmxldCBzbWFydF9zZWcgPSAofmR1bXBfYmFja3BhY2s6IGJvb2wsIH5lcmFzZV9idWZmZXI6IGJvb2wsIHo6IHQpID0+IHtcbiAgbGV0IHogPSBlcmFzZV9idWZmZXIgPyBjbGVhcl91bnBhcnNlZF9idWZmZXIoeikgOiB6O1xuICBsZXQgeiA9IGR1bXBfYmFja3BhY2sgPyB0cnlfdG9fZHVtcF9iYWNrcGFjayh6KSA6IHo7XG4gIHVuc2VsZWN0X2FuZF96aXAofmVyYXNlX2J1ZmZlciwgeik7XG59O1xuXG5sZXQgc2VnX2Zvcl92aWV3ID0gc21hcnRfc2VnKH5lcmFzZV9idWZmZXI9ZmFsc2UsIH5kdW1wX2JhY2twYWNrPWZhbHNlKTtcbmxldCBzZWdfZm9yX3NlbSA9IHNtYXJ0X3NlZyh+ZXJhc2VfYnVmZmVyPXRydWUsIH5kdW1wX2JhY2twYWNrPXRydWUpO1xuXG5sZXQgc2VnX3dpdGhvdXRfYnVmZmVyID0gc21hcnRfc2VnKH5lcmFzZV9idWZmZXI9dHJ1ZSwgfmR1bXBfYmFja3BhY2s9ZmFsc2UpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0XygnYSkgPSBsaXN0KChUb2tlbi50LCAnYSkpO1xuXG5sZXQgZW1wdHkgPSBbXTtcblxubGV0IGlzX2VtcHR5ID1cbiAgZnVuXG4gIHwgW10gPT4gdHJ1ZVxuICB8IFtfLCAuLi5fXSA9PiBmYWxzZTtcblxubGV0IGV4dGVuZCA9IChjdHgsIHhhKSA9PiB7XG4gIFt4YSwgLi4uY3R4XTtcbn07XG5cbi8vIFRoZSBuZXcgdGhpbmdzIHNob3VsZCBnbyB0byB0aGUgcmlnaHQgd2hlbiBjb25jYXRlbmF0aW5nXG5sZXQgY29uY2F0ID0gKGN0eCwgbmV3X2N0eCkgPT4gbmV3X2N0eCBAIGN0eDtcblxubGV0IGxvb2t1cCA9IChjdHgsIHgpID0+IExpc3QuYXNzb2Nfb3B0KHgsIGN0eCk7XG5cbmxldCBjb250YWlucyA9IChjdHgsIHgpID0+IExpc3QubWVtX2Fzc29jKHgsIGN0eCk7XG5cbmxldCBtYXAgPSAoZiwgeHMpID0+IExpc3QubWFwKCgoeCwgXykgYXMgeGEpID0+ICh4LCBmKHhhKSksIHhzKTtcblxubGV0IGZpbHRlciA9IExpc3QuZmlsdGVyO1xuXG5sZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGg7XG5cbmxldCB0b19saXN0ID0gY3R4ID0+IGN0eDtcblxubGV0IGZpbmRfbWFwID0gTGlzdC5maW5kX21hcDtcblxubGV0IHJlYyB1cGRhdGUgPSAoY3R4OiB0XygnYSksIG5hbWU6IHN0cmluZywgZjogJ2EgPT4gJ2EpOiB0XygnYSkgPT5cbiAgc3dpdGNoIChjdHgpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFsoaywgdiksIC4uLmN0eF0gPT5cbiAgICBpZiAobmFtZSA9PSBrKSB7XG4gICAgICBbKGssIGYodikpLCAuLi5jdHhdO1xuICAgIH0gZWxzZSB7XG4gICAgICBbKGssIHYpLCAuLi51cGRhdGUoY3R4LCBuYW1lLCBmKV07XG4gICAgfVxuICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBMZXRcbiAgfCBDYXNlXG4gIHwgRnVuXG4gIHwgVGVzdDtcblxubGV0IGlzX0xldCA9IFN0cmluZy5lcXVhbChcImxldFwiKTtcbmxldCBpc19DYXNlID0gU3RyaW5nLmVxdWFsKFwiY2FzZVwiKTtcbmxldCBpc19GdW4gPSBTdHJpbmcuZXF1YWwoXCJmdW5cIik7XG5sZXQgaXNfVGVzdCA9IFN0cmluZy5lcXVhbChcInRlc3RcIik7XG5cbmxldCBtayA9ICh0ZXh0OiBzdHJpbmcpOiBvcHRpb24odCkgPT5cbiAgaWYgKHRleHQgfD4gaXNfTGV0KSB7XG4gICAgU29tZShMZXQpO1xuICB9IGVsc2UgaWYgKHRleHQgfD4gaXNfQ2FzZSkge1xuICAgIFNvbWUoQ2FzZSk7XG4gIH0gZWxzZSBpZiAodGV4dCB8PiBpc19GdW4pIHtcbiAgICBTb21lKEZ1bik7XG4gIH0gZWxzZSBpZiAodGV4dCB8PiBpc19UZXN0KSB7XG4gICAgU29tZShUZXN0KTtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xuXG5sZXQgdG9fc3RyaW5nID1cbiAgZnVuXG4gIHwgTGV0ID0+IFwibGV0XCJcbiAgfCBDYXNlID0+IFwiY2FzZVwiXG4gIHwgRnVuID0+IFwiZnVuXCJcbiAgfCBUZXN0ID0+IFwidGVzdFwiO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gSWQudDtcbiIsIm1vZHVsZSBIb2xlUmVhc29uID0ge1xuICAvKiBWYXJpYWJsZTogcmVhc29uICovXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEZyZWVcbiAgICB8IEV4cGFuZGluZ0tleXdvcmQoRXhwYW5kaW5nS2V5d29yZC50KTtcbn07XG5cbi8qIFZhcmlhYmxlOiB2YXJfZXJyICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE5vdEluVmFySG9sZVxuICB8IEluVmFySG9sZShIb2xlUmVhc29uLnQsIE1ldGFWYXIudCk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbDtcbiIsIm9wZW4gVXRpbC5PcHRVdGlsLlN5bnRheDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYmluZGluZygnYSkgPSAoQ29uc3RydWN0b3IudCwgJ2EpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQoJ2EpID0gbGlzdChiaW5kaW5nKCdhKSk7XG5cbmxldCBjb21wYXJlID0gY29tcGFyZTtcblxubGV0IGVtcHR5OiB0KCdhKSA9IFtdO1xuXG5sZXQgaXNfZW1wdHk6IHQoJ2EpID0+IGJvb2wgPVxuICBmdW5cbiAgfCBbXSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IHJlYyBhZGQgPSAoY3RyOiBDb25zdHJ1Y3Rvci50LCB2YWx1ZTogJ2EsIG1hcDogdCgnYSkpOiB0KCdhKSA9PlxuICBzd2l0Y2ggKG1hcCkge1xuICB8IFtdID0+IFsoY3RyLCB2YWx1ZSldXG4gIHwgWyhjdHInLCB2YWx1ZScpIGFzIGhlYWQsIC4uLnRhaWxdID0+XG4gICAgaWYgKENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgY3RyJykpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdmFsdWUnKSB7XG4gICAgICAgIG1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsoY3RyLCB2YWx1ZSksIC4uLnRhaWxdO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgW2hlYWQsIC4uLmFkZChjdHIsIHZhbHVlLCB0YWlsKV07XG4gICAgfVxuICB9O1xuXG5sZXQgc2luZ2xldG9uID0gKGN0cjogQ29uc3RydWN0b3IudCwgdmFsdWU6ICdhKTogdCgnYSkgPT4gWyhjdHIsIHZhbHVlKV07XG5cbmxldCBjb21wYXJlX2JpbmRpbmdzID1cbiAgICAoKGN0cjEsIF8pOiBiaW5kaW5nKCdhKSwgKGN0cjIsIF8pOiBiaW5kaW5nKCdhKSk6IGludCA9PlxuICBjb21wYXJlKGN0cjEsIGN0cjIpO1xuXG4vKiBjb21wYXJlcyBjdHJzIG9ubHkgKi9cbmxldCBlcXVhbCA9ICh2YWxfZXF1YWw6ICgnYSwgJ2EpID0+IGJvb2wsIG1hcDE6IHQoJ2EpLCBtYXAyOiB0KCdhKSk6IGJvb2wgPT4ge1xuICBsZXQgZXF1YWxfYmluZGluZ3MgPVxuICAgICAgKFxuICAgICAgICB2YWxfZXF1YWw6ICgnYSwgJ2EpID0+IGJvb2wsXG4gICAgICAgIChjdHIxLCB2YWwxKTogYmluZGluZygnYSksXG4gICAgICAgIChjdHIyLCB2YWwyKTogYmluZGluZygnYSksXG4gICAgICApXG4gICAgICA6IGJvb2wgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKSAmJiB2YWxfZXF1YWwodmFsMSwgdmFsMik7XG4gIG1hcDEgPT09IG1hcDJcbiAgfHwge1xuICAgIGxldCBtYXAxID0gTGlzdC5mYXN0X3NvcnQoY29tcGFyZV9iaW5kaW5ncywgbWFwMSk7XG4gICAgbGV0IG1hcDIgPSBMaXN0LmZhc3Rfc29ydChjb21wYXJlX2JpbmRpbmdzLCBtYXAyKTtcbiAgICBMaXN0LmVxdWFsKGVxdWFsX2JpbmRpbmdzKHZhbF9lcXVhbCksIG1hcDEsIG1hcDIpO1xuICB9O1xufTtcblxubGV0IGNhcmRpbmFsOiB0KCdhKSA9PiBpbnQgPSBMaXN0Lmxlbmd0aDtcblxubGV0IGN0cnNfb2YgPSAobTogbGlzdCgoQ29uc3RydWN0b3IudCwgJ2EpKSk6IGxpc3QoQ29uc3RydWN0b3IudCkgPT5cbiAgTGlzdC5tYXAoZnN0LCBtKTtcblxubGV0IHNhbWVfY29uc3RydWN0b3JzX3NhbWVfb3JkZXIgPSAobWFwMTogdCgnYSksIG1hcDI6IHQoJ2EpKTogYm9vbCA9PlxuICBjYXJkaW5hbChtYXAxKSA9PT0gY2FyZGluYWwobWFwMilcbiAgJiYgTGlzdC5mb3JfYWxsMihDb25zdHJ1Y3Rvci5lcXVhbCwgY3Ryc19vZihtYXAxKSwgY3Ryc19vZihtYXAyKSk7XG5cbmxldCBjdHJzX2VxdWFsID0gKG1hcDE6IHQoJ2EpLCBtYXAyOiB0KCdhKSk6IGJvb2wgPT4ge1xuICBsZXQgY3RyczEgPSBjdHJzX29mKG1hcDEpO1xuICBsZXQgY3RyczIgPSBjdHJzX29mKG1hcDIpO1xuICBjdHJzMSA9PT0gY3RyczJcbiAgfHwgTGlzdC5mYXN0X3NvcnQoY29tcGFyZSwgY3RyczEpID09IExpc3QuZmFzdF9zb3J0KGNvbXBhcmUsIGN0cnMyKTtcbn07XG5cbmxldCBmb3JfYWxsOiAoYmluZGluZygnYSkgPT4gYm9vbCwgdCgnYSkpID0+IGJvb2wgPSBMaXN0LmZvcl9hbGw7XG5cbmxldCBiaW5kaW5nczogdCgnYSkgPT4gbGlzdChiaW5kaW5nKCdhKSkgPSB4ID0+IHg7XG5cbmxldCBmaW5kX29wdCA9IChjdHI6IENvbnN0cnVjdG9yLnQsIG1hcDogdCgnYSkpOiBvcHRpb24oJ2EpID0+IHtcbiAgbGV0KyBiaW5kaW5nID0gTGlzdC5maW5kX29wdCgoKGssIF8pKSA9PiBDb25zdHJ1Y3Rvci5lcXVhbChjdHIsIGspLCBtYXApO1xuICBzbmQoYmluZGluZyk7XG59O1xuXG5sZXQgbWFwID0gKGY6ICdhID0+ICdiLCBtOiB0KCdhKSk6IHQoJ2IpID0+IHtcbiAgbGV0IChjdHJzLCB2YWxzKSA9IExpc3Quc3BsaXQobSk7XG4gIGxldCB2YWxzID0gTGlzdC5tYXAoZiwgdmFscyk7XG4gIExpc3QuY29tYmluZShjdHJzLCB2YWxzKTtcbn07XG5cbi8qIHNvcnRzIG9uIGN0cnMgb25seSAqL1xubGV0IHNvcnQgPSAobWFwOiB0KCdhKSk6IHQoJ2EpID0+IHtcbiAgTGlzdC5mYXN0X3NvcnQoY29tcGFyZV9iaW5kaW5ncywgbWFwKTtcbn07XG5cbmxldCBvZl9saXN0OiBsaXN0KGJpbmRpbmcoJ2EpKSA9PiB0KCdhKSA9IHggPT4geDtcblxubGV0IHJlYyBpc19ncm91bmQgPSAoaXNfZ3JvdW5kX3ZhbHVlOiAnYSA9PiBib29sLCBtYXA6IHQoJ2EpKTogYm9vbCA9PlxuICBzd2l0Y2ggKG1hcCkge1xuICB8IFtdID0+IHRydWVcbiAgfCBbKF8sIGhlYWQpLCAuLi50YWlsXSA9PlxuICAgIGlzX2dyb3VuZF92YWx1ZShoZWFkKSAmJiB0YWlsIHw+IGlzX2dyb3VuZChpc19ncm91bmRfdmFsdWUpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbmxldCBlcSA9IFN0cmluZy5lcXVhbDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubGV0IGVxID0gU3RyaW5nLmVxdWFsO1xuXG5sZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aDtcblxubGV0IHZhbGlkX3JlZ2V4ID1cbiAgUmUuU3RyLnJlZ2V4cChcIl5cXFxcKFthLXpBLVpdXFxcXHxfW19hLXpBLVowLTldXFxcXClbX2EtekEtWjAtOSddKiRcIik7XG5sZXQgaXNfdmFsaWQgPSBzID0+IFJlLlN0ci5zdHJpbmdfbWF0Y2godmFsaWRfcmVnZXgsIHMsIDApO1xuXG4vKiBoZWxwZXIgZnVuY3Rpb24gZm9yIGd1YXJkaW5nIG9wdGlvbnMgd2l0aCBpc192YWxpZCAqL1xubGV0IGNoZWNrX3ZhbGlkID0gKHMsIHJlc3VsdCkgPT5cbiAgaWYgKGlzX3ZhbGlkKHMpKSB7XG4gICAgcmVzdWx0O1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBpc190cnVlID0gZXEoXCJ0cnVlXCIpO1xuXG5sZXQgaXNfZmFsc2UgPSBlcShcImZhbHNlXCIpO1xuXG5sZXQgaXNfbGV0ID0gZXEoXCJsZXRcIik7XG5cbmxldCBpc19mdW4gPSBlcShcImZ1blwiKTtcblxubGV0IGlzX2Nhc2UgPSBlcShcImNhc2VcIik7XG5cbmxldCBpc193aWxkID0gZXEoXCJfXCIpO1xuXG5sZXQgaXNfa2V5d29yZCA9IHMgPT5cbiAgc3dpdGNoIChFeHBhbmRpbmdLZXl3b3JkLm1rKHMpKSB7XG4gIHwgU29tZShfKSA9PiB0cnVlXG4gIHwgTm9uZSA9PiBmYWxzZVxuICB9O1xuXG5sZXQgc3BsaXQgPSAocG9zLCBuYW1lKSA9PiB7XG4gIGxldCBsZWZ0X3ZhciA9IFN0cmluZy5zdWIobmFtZSwgMCwgcG9zKTtcbiAgbGV0IHJpZ2h0X3ZhciA9IFN0cmluZy5zdWIobmFtZSwgcG9zLCBTdHJpbmcubGVuZ3RoKG5hbWUpIC0gcG9zKTtcbiAgKGxlZnRfdmFyLCByaWdodF92YXIpO1xufTtcblxuLyogVXNlZCBmb3IgVmFyQnN0TWFwICovXG5sZXQgY29tcGFyZSA9ICh4OiB0LCB5OiB0KSA9PiBjb21wYXJlKHgsIHkpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBwcmVjZWRlbmNlX1Byb2QgPSAxO1xubGV0IHByZWNlZGVuY2VfQXJyb3cgPSAyO1xubGV0IHByZWNlZGVuY2VfU3VtID0gMztcbmxldCBwcmVjZWRlbmNlX0NvbnN0ID0gNDtcblxubW9kdWxlIHJlYyBUeXA6IHtcbiAgLyogVFlQRV9QUk9WRU5BTkNFOiBGcm9tIHdoZW5jZSBkb2VzIGFuIHVua25vd24gdHlwZSBvcmlnaW5hdGU/XG4gICAgIElzIGl0IGdlbmVyYXRlZCBmcm9tIGFuIHVuYW5ub3RhdGVkIHBhdHRlcm4gdmFyaWFibGUgKFN5blN3aXRjaCksXG4gICAgIGEgcGF0dGVybiB2YXJpYWJsZSBhbm5vdGF0ZWQgd2l0aCBhIHR5cGUgaG9sZSAoVHlwZUhvbGUpLCBvclxuICAgICBnZW5lcmF0ZWQgYnkgYW4gaW50ZXJuYWwganVkZ2VtZW50IChJbnRlcm5hbCk/ICovXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0eXBlX3Byb3ZlbmFuY2UgPVxuICAgIHwgU3luU3dpdGNoXG4gICAgfCBUeXBlSG9sZVxuICAgIHwgRnJlZShUeXBWYXIudClcbiAgICB8IEludGVybmFsO1xuXG4gIC8qIFRZUC5UOiBIYXplbCB0eXBlcyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBVbmtub3duKHR5cGVfcHJvdmVuYW5jZSlcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IEJvb2xcbiAgICB8IFN0cmluZ1xuICAgIHwgVmFyKFR5cFZhci50KVxuICAgIHwgTGlzdCh0KVxuICAgIHwgQXJyb3codCwgdClcbiAgICB8IFN1bShzdW1fbWFwKVxuICAgIHwgUHJvZChsaXN0KHQpKVxuICAgIHwgUmVjKFR5cFZhci50LCB0KVxuICBhbmQgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQob3B0aW9uKHQpKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3VtX2VudHJ5ID0gQ29uc3RydWN0b3JNYXAuYmluZGluZyhvcHRpb24odCkpO1xuXG4gIC8qIEhhemVsIHR5cGUgYW5ub3RhdGVkIHdpdGggYSByZWxldmFudCBzb3VyY2UgbG9jYXRpb24uXG4gICAgIEN1cnJlbnRseSB1c2VkIHRvIHRyYWNrIG1hdGNoIGJyYW5jaGVzIGZvciBpbmNvbnNpc3RlbnRcbiAgICAgYnJhbmNoZXMgZXJyb3JzLCBidXQgY291bGQgcGVyaGFwcyBiZSB1c2VkIG1vcmUgYnJvYWRseVxuICAgICBmb3IgdHlwZSBkZWJ1Z2dpbmcgVUkuICovXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzb3VyY2UgPSB7XG4gICAgaWQ6IElkLnQsXG4gICAgdHk6IHQsXG4gIH07XG5cbiAgbGV0IG9mX3NvdXJjZTogbGlzdChzb3VyY2UpID0+IGxpc3QodCk7XG4gIGxldCBqb2luX3R5cGVfcHJvdmVuYW5jZTpcbiAgICAodHlwZV9wcm92ZW5hbmNlLCB0eXBlX3Byb3ZlbmFuY2UpID0+IHR5cGVfcHJvdmVuYW5jZTtcbiAgbGV0IG1hdGNoZWRfYXJyb3c6IChDdHgudCwgdCkgPT4gKHQsIHQpO1xuICBsZXQgbWF0Y2hlZF9wcm9kOiAoQ3R4LnQsIGludCwgdCkgPT4gbGlzdCh0KTtcbiAgbGV0IG1hdGNoZWRfbGlzdDogKEN0eC50LCB0KSA9PiB0O1xuICBsZXQgcHJlY2VkZW5jZTogdCA9PiBpbnQ7XG4gIGxldCBzdWJzdDogKHQsIFR5cFZhci50LCB0KSA9PiB0O1xuICBsZXQgdW5yb2xsOiB0ID0+IHQ7XG4gIGxldCBlcTogKHQsIHQpID0+IGJvb2w7XG4gIGxldCBmcmVlX3ZhcnM6ICh+Ym91bmQ6IGxpc3QoVmFyLnQpPT8sIHQpID0+IGxpc3QoVmFyLnQpO1xuICBsZXQgam9pbjogKH5yZXNvbHZlOiBib29sPT8sIH5maXg6IGJvb2wsIEN0eC50LCB0LCB0KSA9PiBvcHRpb24odCk7XG4gIGxldCBqb2luX2ZpeDogKH5yZXNvbHZlOiBib29sPT8sIEN0eC50LCB0LCB0KSA9PiBvcHRpb24odCk7XG4gIGxldCBqb2luX2FsbDogKH5lbXB0eTogdCwgQ3R4LnQsIGxpc3QodCkpID0+IG9wdGlvbih0KTtcbiAgbGV0IGlzX2NvbnNpc3RlbnQ6IChDdHgudCwgdCwgdCkgPT4gYm9vbDtcbiAgbGV0IHdlYWtfaGVhZF9ub3JtYWxpemU6IChDdHgudCwgdCkgPT4gdDtcbiAgbGV0IG5vcm1hbGl6ZTogKEN0eC50LCB0KSA9PiB0O1xuICBsZXQgc3VtX2VudHJ5OiAoQ29uc3RydWN0b3IudCwgc3VtX21hcCkgPT4gb3B0aW9uKHN1bV9lbnRyeSk7XG4gIGxldCBnZXRfc3VtX2NvbnN0cnVjdG9yczogKEN0eC50LCB0KSA9PiBvcHRpb24oc3VtX21hcCk7XG4gIGxldCBpc191bmtub3duOiB0ID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9wcm92ZW5hbmNlID1cbiAgICB8IFN5blN3aXRjaFxuICAgIHwgVHlwZUhvbGVcbiAgICB8IEZyZWUoVHlwVmFyLnQpXG4gICAgfCBJbnRlcm5hbDtcblxuICAvKiBUWVAuVDogSGF6ZWwgdHlwZXMgKi9cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgVW5rbm93bih0eXBlX3Byb3ZlbmFuY2UpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFZhcihUeXBWYXIudClcbiAgICB8IExpc3QodClcbiAgICB8IEFycm93KHQsIHQpXG4gICAgfCBTdW0oc3VtX21hcClcbiAgICB8IFByb2QobGlzdCh0KSlcbiAgICB8IFJlYyhUeXBWYXIudCwgdClcbiAgYW5kIHN1bV9tYXAgPSBDb25zdHJ1Y3Rvck1hcC50KG9wdGlvbih0KSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN1bV9lbnRyeSA9IENvbnN0cnVjdG9yTWFwLmJpbmRpbmcob3B0aW9uKHQpKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc291cmNlID0ge1xuICAgIGlkOiBJZC50LFxuICAgIHR5OiB0LFxuICB9O1xuXG4gIC8qIFN0cmlwIGxvY2F0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBsaXN0IG9mIHNvdXJjZXMgKi9cbiAgbGV0IG9mX3NvdXJjZSA9IExpc3QubWFwKChzb3VyY2U6IHNvdXJjZSkgPT4gc291cmNlLnR5KTtcblxuICAvKiBIb3cgdHlwZSBwcm92ZW5hbmNlIGluZm9ybWF0aW9uIHNob3VsZCBiZSBjb2xsYXRlZCB3aGVuXG4gICAgIGpvaW5pbmcgdW5rbm93biB0eXBlcy4gVGhpcyBwcm9iYWJseSByZXF1aXJlcyBtb3JlIHRob3VnaHQsXG4gICAgIGJ1dCByaWdodCBub3cgVHlwZUhvbGUgc3RyaWN0bHkgcHJlZG9taW5hdGVzIG92ZXIgSW50ZXJuYWxcbiAgICAgd2hpY2ggc3RyaWN0bHkgcHJlZG9taW5hdGVzIG92ZXIgU3luU3dpdGNoLiAqL1xuICBsZXQgam9pbl90eXBlX3Byb3ZlbmFuY2UgPVxuICAgICAgKHAxOiB0eXBlX3Byb3ZlbmFuY2UsIHAyOiB0eXBlX3Byb3ZlbmFuY2UpOiB0eXBlX3Byb3ZlbmFuY2UgPT5cbiAgICBzd2l0Y2ggKHAxLCBwMikge1xuICAgIHwgKEZyZWUodHYxKSwgRnJlZSh0djIpKSB3aGVuIFR5cFZhci5lcSh0djEsIHR2MikgPT4gRnJlZSh0djEpXG4gICAgfCAoVHlwZUhvbGUsIFR5cGVIb2xlIHwgU3luU3dpdGNoKVxuICAgIHwgKFN5blN3aXRjaCwgVHlwZUhvbGUpID0+IFR5cGVIb2xlXG4gICAgfCAoU3luU3dpdGNoLCBJbnRlcm5hbClcbiAgICB8IChJbnRlcm5hbCwgU3luU3dpdGNoKSA9PiBTeW5Td2l0Y2hcbiAgICB8IChJbnRlcm5hbCB8IEZyZWUoXyksIF8pXG4gICAgfCAoXywgSW50ZXJuYWwgfCBGcmVlKF8pKSA9PiBJbnRlcm5hbFxuICAgIHwgKFN5blN3aXRjaCwgU3luU3dpdGNoKSA9PiBTeW5Td2l0Y2hcbiAgICB9O1xuXG4gIGxldCBwcmVjZWRlbmNlID0gKHR5OiB0KTogaW50ID0+XG4gICAgc3dpdGNoICh0eSkge1xuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBVbmtub3duKF8pXG4gICAgfCBWYXIoXylcbiAgICB8IFJlYyhfKVxuICAgIHwgU3VtKF8pID0+IHByZWNlZGVuY2VfU3VtXG4gICAgfCBMaXN0KF8pID0+IHByZWNlZGVuY2VfQ29uc3RcbiAgICB8IFByb2QoXykgPT4gcHJlY2VkZW5jZV9Qcm9kXG4gICAgfCBBcnJvdyhfLCBfKSA9PiBwcmVjZWRlbmNlX0Fycm93XG4gICAgfTtcblxuICBsZXQgcmVjIHN1YnN0ID0gKHM6IHQsIHg6IFR5cFZhci50LCB0eTogdCkgPT4ge1xuICAgIHN3aXRjaCAodHkpIHtcbiAgICB8IEludCA9PiBJbnRcbiAgICB8IEZsb2F0ID0+IEZsb2F0XG4gICAgfCBCb29sID0+IEJvb2xcbiAgICB8IFN0cmluZyA9PiBTdHJpbmdcbiAgICB8IFVua25vd24ocHJvdikgPT4gVW5rbm93bihwcm92KVxuICAgIHwgQXJyb3codHkxLCB0eTIpID0+IEFycm93KHN1YnN0KHMsIHgsIHR5MSksIHN1YnN0KHMsIHgsIHR5MikpXG4gICAgfCBQcm9kKHR5cykgPT4gUHJvZChMaXN0Lm1hcChzdWJzdChzLCB4KSwgdHlzKSlcbiAgICB8IFN1bShzbSkgPT4gU3VtKENvbnN0cnVjdG9yTWFwLm1hcChPcHRpb24ubWFwKHN1YnN0KHMsIHgpKSwgc20pKVxuICAgIHwgUmVjKHksIHR5KSB3aGVuIFR5cFZhci5lcSh4LCB5KSA9PiBSZWMoeSwgdHkpXG4gICAgfCBSZWMoeSwgdHkpID0+IFJlYyh5LCBzdWJzdChzLCB4LCB0eSkpXG4gICAgfCBMaXN0KHR5KSA9PiBMaXN0KHN1YnN0KHMsIHgsIHR5KSlcbiAgICB8IFZhcih5KSA9PiBUeXBWYXIuZXEoeCwgeSkgPyBzIDogVmFyKHkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdW5yb2xsID0gKHR5OiB0KTogdCA9PlxuICAgIHN3aXRjaCAodHkpIHtcbiAgICB8IFJlYyh4LCB0eV9ib2R5KSA9PiBzdWJzdCh0eSwgeCwgdHlfYm9keSlcbiAgICB8IF8gPT4gdHlcbiAgICB9O1xuXG4gIC8qIFR5cGUgRXF1YWxpdHk6IEF0IHRoZSBtb21lbnQsIHRoaXMgY29pbmNpZGVzIHdpdGggYWxwaGEgZXF1aXZhbGVuY2UsXG4gICAgIGJ1dCB0aGlzIHdpbGwgY2hhbmdlIHdoZW4gcG9seW1vcnBoaWMgdHlwZXMgYXJlIGltcGxlbWVudGVkICovXG4gIGxldCByZWMgZXEgPSAodDE6IHQsIHQyOiB0KTogYm9vbCA9PiB7XG4gICAgc3dpdGNoICh0MSwgdDIpIHtcbiAgICB8IChSZWMoeDEsIHQxKSwgUmVjKHgyLCB0MikpID0+IGVxKHQxLCBzdWJzdChWYXIoeDEpLCB4MiwgdDIpKVxuICAgIHwgKFJlYyhfKSwgXykgPT4gZmFsc2VcbiAgICB8IChJbnQsIEludCkgPT4gdHJ1ZVxuICAgIHwgKEludCwgXykgPT4gZmFsc2VcbiAgICB8IChGbG9hdCwgRmxvYXQpID0+IHRydWVcbiAgICB8IChGbG9hdCwgXykgPT4gZmFsc2VcbiAgICB8IChCb29sLCBCb29sKSA9PiB0cnVlXG4gICAgfCAoQm9vbCwgXykgPT4gZmFsc2VcbiAgICB8IChTdHJpbmcsIFN0cmluZykgPT4gdHJ1ZVxuICAgIHwgKFN0cmluZywgXykgPT4gZmFsc2VcbiAgICB8IChVbmtub3duKF8pLCBVbmtub3duKF8pKSA9PiB0cnVlXG4gICAgfCAoVW5rbm93bihfKSwgXykgPT4gZmFsc2VcbiAgICB8IChBcnJvdyh0MSwgdDIpLCBBcnJvdyh0MScsIHQyJykpID0+IGVxKHQxLCB0MScpICYmIGVxKHQyLCB0MicpXG4gICAgfCAoQXJyb3coXyksIF8pID0+IGZhbHNlXG4gICAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgPT4gTGlzdC5lcXVhbChlcSwgdHlzMSwgdHlzMilcbiAgICB8IChQcm9kKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKExpc3QodDEpLCBMaXN0KHQyKSkgPT4gZXEodDEsIHQyKVxuICAgIHwgKExpc3QoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoU3VtKHNtMSksIFN1bShzbTIpKSA9PlxuICAgICAgQ29uc3RydWN0b3JNYXAuZXF1YWwoT3B0aW9uLmVxdWFsKGVxKSwgc20xLCBzbTIpXG4gICAgfCAoU3VtKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFZhcihuMSksIFZhcihuMikpID0+IG4xID09IG4yXG4gICAgfCAoVmFyKF8pLCBfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBmcmVlX3ZhcnMgPSAofmJvdW5kPVtdLCB0eTogdCk6IGxpc3QoVmFyLnQpID0+XG4gICAgc3dpdGNoICh0eSkge1xuICAgIHwgVW5rbm93bihfKVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nID0+IFtdXG4gICAgfCBWYXIodikgPT4gTGlzdC5tZW0odiwgYm91bmQpID8gW10gOiBbdl1cbiAgICB8IExpc3QodHkpID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5KVxuICAgIHwgQXJyb3codDEsIHQyKSA9PiBmcmVlX3ZhcnMofmJvdW5kLCB0MSkgQCBmcmVlX3ZhcnMofmJvdW5kLCB0MilcbiAgICB8IFN1bShzbSkgPT5cbiAgICAgIExpc3RVdGlsLmZsYXRfbWFwKFxuICAgICAgICBmdW5cbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIHwgU29tZSh0eXApID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5cCksXG4gICAgICAgIExpc3QubWFwKHNuZCwgc20pLFxuICAgICAgKVxuICAgIHwgUHJvZCh0eXMpID0+IExpc3RVdGlsLmZsYXRfbWFwKGZyZWVfdmFycyh+Ym91bmQpLCB0eXMpXG4gICAgfCBSZWMoeCwgdHkpID0+IGZyZWVfdmFycyh+Ym91bmQ9W3gsIC4uLmJvdW5kXSwgdHkpXG4gICAgfTtcblxuICAvKiBMYXR0aWNlIGpvaW4gb24gdHlwZXMuIFRoaXMgaXMgYSBMVUIgam9pbiBpbiB0aGUgaGF6ZWwyXG4gICAgIHNlbnNlIGluIHRoYXQgYW55IHR5cGUgZG9taW5hdGVzIFVua25vd24uIFRoZSBvcHRpb25hbFxuICAgICByZXNvbHZlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciwgaW4gdGhlIGNhc2Ugb2YgYSB0eXBlXG4gICAgIHZhcmlhYmxlIGFuZCBhIHN1Y2Nlc2Z1bCBqb2luLCB0byByZXR1cm4gdGhlIHJlc29sdmVkIGpvaW4gdHlwZSxcbiAgICAgb3IgdG8gcmV0dXJuIHRoZSAoZmlyc3QpIHR5cGUgdmFyaWFibGUgZm9yIHJlYWRhYmlsaXR5ICovXG4gIGxldCByZWMgam9pbiA9XG4gICAgICAgICAgKH5yZXNvbHZlPWZhbHNlLCB+Zml4LCBjdHg6IEN0eC50LCB0eTE6IHQsIHR5MjogdCk6IG9wdGlvbih0KSA9PiB7XG4gICAgbGV0IGpvaW4nID0gam9pbih+cmVzb2x2ZSwgfmZpeCwgY3R4KTtcbiAgICBzd2l0Y2ggKHR5MSwgdHkyKSB7XG4gICAgfCAoXywgVW5rbm93bihUeXBlSG9sZSB8IEZyZWUoXykpIGFzIHR5KSB3aGVuIGZpeCA9PlxuICAgICAgLyogTk9URShhbmRyZXcpOiBUaGlzIGlzIGxvYWQgYmVhcmluZ1xuICAgICAgICAgZm9yIGVuc3VyaW5nIHRoYXQgZnVuY3Rpb24gbGl0ZXJhbHMgZ2V0IGFwcHJvcHJpYXRlXG4gICAgICAgICBjYXN0cy4gRG9jdW1lbnRhdGlvbi9EeW5hbWljcyBoYXMgcmVncmVzc2lvbiB0ZXN0cyAqL1xuICAgICAgU29tZSh0eSlcbiAgICB8IChVbmtub3duKHAxKSwgVW5rbm93bihwMikpID0+XG4gICAgICBTb21lKFVua25vd24oam9pbl90eXBlX3Byb3ZlbmFuY2UocDEsIHAyKSkpXG4gICAgfCAoVW5rbm93bihfKSwgdHkpXG4gICAgfCAodHksIFVua25vd24oSW50ZXJuYWwgfCBTeW5Td2l0Y2gpKSA9PiBTb21lKHR5KVxuICAgIHwgKFZhcihuMSksIFZhcihuMikpID0+XG4gICAgICBpZiAobjEgPT0gbjIpIHtcbiAgICAgICAgU29tZShWYXIobjEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCogdHkxID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG4xKTtcbiAgICAgICAgbGV0KiB0eTIgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjIpO1xuICAgICAgICBsZXQrIHR5X2pvaW4gPSBqb2luJyh0eTEsIHR5Mik7XG4gICAgICAgICFyZXNvbHZlICYmIGVxKHR5MSwgdHlfam9pbikgPyBWYXIobjEpIDogdHlfam9pbjtcbiAgICAgIH1cbiAgICB8IChWYXIobmFtZSksIHR5KVxuICAgIHwgKHR5LCBWYXIobmFtZSkpID0+XG4gICAgICBsZXQqIHR5X25hbWUgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbmFtZSk7XG4gICAgICBsZXQrIHR5X2pvaW4gPSBqb2luJyh0eV9uYW1lLCB0eSk7XG4gICAgICAhcmVzb2x2ZSAmJiBlcSh0eV9uYW1lLCB0eV9qb2luKSA/IFZhcihuYW1lKSA6IHR5X2pvaW47XG4gICAgLyogTm90ZTogT3JkZXJpbmcgb2YgVW5rbm93biwgVmFyLCBhbmQgUmVjIGFib3ZlIGlzIGxvYWQtYmVhcmluZyEgKi9cbiAgICB8IChSZWMoeDEsIHR5MSksIFJlYyh4MiwgdHkyKSkgPT5cbiAgICAgIC8qIFRPRE86XG4gICAgICAgICAgIFRoaXMgY29kZSBpc24ndCBmdWxseSBjb3JyZWN0LCBhcyB3ZSBtYXkgYmUgZG9pbmdcbiAgICAgICAgICAgc3Vic3RpdHV0aW9uIG9uIG9wZW4gdGVybXM7IGlmIHgxIG9jY3VycyBpbiB0eTIsXG4gICAgICAgICAgIHdlIHNob3VsZCBiZSBzdWJzdGl0dXRpbmcgeDEgZm9yIGEgZnJlc2ggdmFyaWFibGVcbiAgICAgICAgICAgaW4gdHkyLiBUaGlzIGlzIGFubm95aW5nLCBhbmQgc2hvdWxkIGJlIG9idmlhdGVkXG4gICAgICAgICAgIGJ5IHRoZSBmb3J0aGNvbWluZyBkZWJydWlqbiBpbmRleCBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgKi9cbiAgICAgIGxldCBjdHggPSBDdHguZXh0ZW5kX2R1bW15X3R2YXIoY3R4LCB4MSk7XG4gICAgICBsZXQrIHR5X2JvZHkgPVxuICAgICAgICBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgsIHR5MSwgc3Vic3QoVmFyKHgxKSwgeDIsIHR5MikpO1xuICAgICAgUmVjKHgxLCB0eV9ib2R5KTtcbiAgICB8IChSZWMoXyksIF8pID0+IE5vbmVcbiAgICB8IChJbnQsIEludCkgPT4gU29tZShJbnQpXG4gICAgfCAoSW50LCBfKSA9PiBOb25lXG4gICAgfCAoRmxvYXQsIEZsb2F0KSA9PiBTb21lKEZsb2F0KVxuICAgIHwgKEZsb2F0LCBfKSA9PiBOb25lXG4gICAgfCAoQm9vbCwgQm9vbCkgPT4gU29tZShCb29sKVxuICAgIHwgKEJvb2wsIF8pID0+IE5vbmVcbiAgICB8IChTdHJpbmcsIFN0cmluZykgPT4gU29tZShTdHJpbmcpXG4gICAgfCAoU3RyaW5nLCBfKSA9PiBOb25lXG4gICAgfCAoQXJyb3codHkxLCB0eTIpLCBBcnJvdyh0eTEnLCB0eTInKSkgPT5cbiAgICAgIGxldCogdHkxID0gam9pbicodHkxLCB0eTEnKTtcbiAgICAgIGxldCsgdHkyID0gam9pbicodHkyLCB0eTInKTtcbiAgICAgIEFycm93KHR5MSwgdHkyKTtcbiAgICB8IChBcnJvdyhfKSwgXykgPT4gTm9uZVxuICAgIHwgKFByb2QodHlzMSksIFByb2QodHlzMikpID0+XG4gICAgICBsZXQqIHR5cyA9IExpc3RVdGlsLm1hcDJfb3B0KGpvaW4nLCB0eXMxLCB0eXMyKTtcbiAgICAgIGxldCsgdHlzID0gT3B0VXRpbC5zZXF1ZW5jZSh0eXMpO1xuICAgICAgUHJvZCh0eXMpO1xuICAgIHwgKFByb2QoXyksIF8pID0+IE5vbmVcbiAgICB8IChTdW0oc20xKSwgU3VtKHNtMikpID0+XG4gICAgICBsZXQgKHNvcnRlZDEsIHNvcnRlZDIpID1cbiAgICAgICAgLyogSWYgc2FtZSBvcmRlciwgcmV0YWluIG9yZGVyIGZvciBVSSAqL1xuICAgICAgICBDb25zdHJ1Y3Rvck1hcC5zYW1lX2NvbnN0cnVjdG9yc19zYW1lX29yZGVyKHNtMSwgc20yKVxuICAgICAgICAgID8gKHNtMSwgc20yKVxuICAgICAgICAgIDogKENvbnN0cnVjdG9yTWFwLnNvcnQoc20xKSwgQ29uc3RydWN0b3JNYXAuc29ydChzbTIpKTtcbiAgICAgIGxldCogdHkgPVxuICAgICAgICBMaXN0VXRpbC5tYXAyX29wdChcbiAgICAgICAgICBqb2luX3N1bV9lbnRyaWVzKH5yZXNvbHZlLCB+Zml4LCBjdHgpLFxuICAgICAgICAgIHNvcnRlZDEsXG4gICAgICAgICAgc29ydGVkMixcbiAgICAgICAgKTtcbiAgICAgIGxldCsgdHkgPSBPcHRVdGlsLnNlcXVlbmNlKHR5KTtcbiAgICAgIFN1bSh0eSk7XG4gICAgfCAoU3VtKF8pLCBfKSA9PiBOb25lXG4gICAgfCAoTGlzdCh0eTEpLCBMaXN0KHR5MikpID0+XG4gICAgICBsZXQrIHR5ID0gam9pbicodHkxLCB0eTIpO1xuICAgICAgTGlzdCh0eSk7XG4gICAgfCAoTGlzdChfKSwgXykgPT4gTm9uZVxuICAgIH07XG4gIH1cbiAgYW5kIGpvaW5fc3VtX2VudHJpZXMgPVxuICAgICAgKFxuICAgICAgICB+cmVzb2x2ZSxcbiAgICAgICAgfmZpeCxcbiAgICAgICAgY3R4OiBDdHgudCxcbiAgICAgICAgKGN0cjEsIHR5MSk6IHN1bV9lbnRyeSxcbiAgICAgICAgKGN0cjIsIHR5Mik6IHN1bV9lbnRyeSxcbiAgICAgIClcbiAgICAgIDogb3B0aW9uKHN1bV9lbnRyeSkgPT5cbiAgICBzd2l0Y2ggKHR5MSwgdHkyKSB7XG4gICAgfCAoTm9uZSwgTm9uZSkgd2hlbiBjdHIxID09IGN0cjIgPT4gU29tZSgoY3RyMSwgTm9uZSkpXG4gICAgfCAoU29tZSh0eTEpLCBTb21lKHR5MikpIHdoZW4gY3RyMSA9PSBjdHIyID0+XG4gICAgICBsZXQrIHR5X2pvaW4gPSBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgsIHR5MSwgdHkyKTtcbiAgICAgIChjdHIxLCBTb21lKHR5X2pvaW4pKTtcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG5cbiAgbGV0IGpvaW5fZml4ID0gam9pbih+Zml4PXRydWUpO1xuXG4gIGxldCBqb2luX2FsbCA9ICh+ZW1wdHk6IHQsIGN0eDogQ3R4LnQsIHRzOiBsaXN0KHQpKTogb3B0aW9uKHQpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB0eSkgPT4gT3B0VXRpbC5hbmRfdGhlbihqb2luKH5maXg9ZmFsc2UsIGN0eCwgdHkpLCBhY2MpLFxuICAgICAgU29tZShlbXB0eSksXG4gICAgICB0cyxcbiAgICApO1xuXG4gIGxldCBpc19jb25zaXN0ZW50ID0gKGN0eDogQ3R4LnQsIHR5MTogdCwgdHkyOiB0KTogYm9vbCA9PlxuICAgIGpvaW4ofmZpeD1mYWxzZSwgY3R4LCB0eTEsIHR5MikgIT0gTm9uZTtcblxuICBsZXQgcmVjIHdlYWtfaGVhZF9ub3JtYWxpemUgPSAoY3R4OiBDdHgudCwgdHk6IHQpOiB0ID0+XG4gICAgc3dpdGNoICh0eSkge1xuICAgIHwgVmFyKHgpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgICAgfCBTb21lKHR5KSA9PiB3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpXG4gICAgICB8IE5vbmUgPT4gdHlcbiAgICAgIH1cbiAgICB8IF8gPT4gdHlcbiAgICB9O1xuXG4gIGxldCByZWMgbm9ybWFsaXplID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogdCA9PiB7XG4gICAgc3dpdGNoICh0eSkge1xuICAgIHwgVmFyKHgpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgICAgfCBTb21lKHR5KSA9PiBub3JtYWxpemUoY3R4LCB0eSlcbiAgICAgIHwgTm9uZSA9PiB0eVxuICAgICAgfVxuICAgIHwgVW5rbm93bihfKVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nID0+IHR5XG4gICAgfCBMaXN0KHQpID0+IExpc3Qobm9ybWFsaXplKGN0eCwgdCkpXG4gICAgfCBBcnJvdyh0MSwgdDIpID0+IEFycm93KG5vcm1hbGl6ZShjdHgsIHQxKSwgbm9ybWFsaXplKGN0eCwgdDIpKVxuICAgIHwgUHJvZCh0cykgPT4gUHJvZChMaXN0Lm1hcChub3JtYWxpemUoY3R4KSwgdHMpKVxuICAgIHwgU3VtKHRzKSA9PiBTdW0oQ29uc3RydWN0b3JNYXAubWFwKE9wdGlvbi5tYXAobm9ybWFsaXplKGN0eCkpLCB0cykpXG4gICAgfCBSZWMobmFtZSwgdHkpID0+XG4gICAgICAvKiBOT1RFOiBEdW1teSB0dmFyIGFkZGVkIGhhcyBmYWtlIGlkIGJ1dCBzaG91bGRuJ3QgbWF0dGVyXG4gICAgICAgICBhcyBpbiBjdXJyZW50IGltcGxlbWVudGF0aW9uIFJlY3MgZG8gbm90IG9jY3VyIGluIHRoZVxuICAgICAgICAgc3VyZmFjZSBzeW50YXgsIHNvIHdlIHdvbid0IHRyeSB0byBqdW1wIHRvIHRoZW0uICovXG4gICAgICBSZWMobmFtZSwgbm9ybWFsaXplKEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIG5hbWUpLCB0eSkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgbWF0Y2hlZF9hcnJvdyA9IChjdHgsIHR5KSA9PlxuICAgIHN3aXRjaCAod2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkge1xuICAgIHwgQXJyb3codHlfaW4sIHR5X291dCkgPT4gKHR5X2luLCB0eV9vdXQpXG4gICAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gKFVua25vd24oU3luU3dpdGNoKSwgVW5rbm93bihTeW5Td2l0Y2gpKVxuICAgIHwgXyA9PiAoVW5rbm93bihJbnRlcm5hbCksIFVua25vd24oSW50ZXJuYWwpKVxuICAgIH07XG5cbiAgbGV0IG1hdGNoZWRfcHJvZCA9IChjdHgsIGxlbmd0aCwgdHkpID0+XG4gICAgc3dpdGNoICh3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSB7XG4gICAgfCBQcm9kKHR5cykgd2hlbiBMaXN0Lmxlbmd0aCh0eXMpID09IGxlbmd0aCA9PiB0eXNcbiAgICB8IFVua25vd24oU3luU3dpdGNoKSA9PiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFVua25vd24oU3luU3dpdGNoKSlcbiAgICB8IF8gPT4gTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBVbmtub3duKEludGVybmFsKSlcbiAgICB9O1xuXG4gIGxldCBtYXRjaGVkX2xpc3QgPSAoY3R4LCB0eSkgPT5cbiAgICBzd2l0Y2ggKHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSkpIHtcbiAgICB8IExpc3QodHkpID0+IHR5XG4gICAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gVW5rbm93bihTeW5Td2l0Y2gpXG4gICAgfCBfID0+IFVua25vd24oSW50ZXJuYWwpXG4gICAgfTtcblxuICBsZXQgc3VtX2VudHJ5ID0gKGN0cjogQ29uc3RydWN0b3IudCwgY3Ryczogc3VtX21hcCk6IG9wdGlvbihzdW1fZW50cnkpID0+XG4gICAgTGlzdC5maW5kX21hcChcbiAgICAgIGZ1blxuICAgICAgfCAodCwgdHlwKSB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKHQsIGN0cikgPT4gU29tZSgodCwgdHlwKSlcbiAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgY3RycyxcbiAgICApO1xuXG4gIGxldCBnZXRfc3VtX2NvbnN0cnVjdG9ycyA9IChjdHg6IEN0eC50LCB0eTogdCk6IG9wdGlvbihzdW1fbWFwKSA9PiB7XG4gICAgbGV0IHR5ID0gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KTtcbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBTdW0oc20pID0+IFNvbWUoc20pXG4gICAgfCBSZWMoXykgPT5cbiAgICAgIC8qIE5vdGU6IFdlIG11c3QgdW5yb2xsIGhlcmUgdG8gZ2V0IHJpZ2h0IGN0ciB0eXBlcztcbiAgICAgICAgIG90aGVyd2lzZSB0aGUgcmVjIHBhcmFtZXRlciB3aWxsIGxlYWsuIEhvd2V2ZXIsIHNlZWluZ1xuICAgICAgICAgYXMgc3Vic3RpdHV0aW9uIGlzIHRvbyBleHBlbnNpdmUgdG8gYmUgdXNlZCBoZXJlLCB3ZVxuICAgICAgICAgY3VycmVudGx5IG1ha2luZyB0aGUgb3B0aW1pemF0aW9uIHRoYXQsIHNpbmNlIGFsbFxuICAgICAgICAgcmVjdXJzaXZlIHR5cGVzIGFyZSB0eXBlIGFsaXNlcyB3aGljaCB1c2UgdGhlIGFsaWFzIG5hbWVcbiAgICAgICAgIGFzIHRoZSByZWN1cnNpdmUgcGFyYW1ldGVyLCBhbmQgdHlwZSBhbGlhc2VzIGNhbm5vdCBiZVxuICAgICAgICAgc2hhZG93ZWQsIGl0IGlzIHNhZmUgdG8gc2ltcGx5IHJlbW92ZSB0aGUgUmVjIGNvbnN0cnVjdG9yLFxuICAgICAgICAgcHJvdmlkZWQgd2UgaGF2ZW4ndCBlc2NhcGVkIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBhbGlhc1xuICAgICAgICAgaXMgYm91bmQuIElmIGVpdGhlciBvZiB0aGUgYWJvdmUgYXNzdW1wdGlvbnMgYmVjb21lIGludmFsaWQsXG4gICAgICAgICB0aGUgYmVsb3cgY29kZSB3aWxsIGJlIGluY29ycmVjdCEgKi9cbiAgICAgIGxldCB0eSA9XG4gICAgICAgIHN3aXRjaCAodHkpIHtcbiAgICAgICAgfCBSZWMoeCwgdHlfYm9keSkgPT5cbiAgICAgICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgICAgICAgIHwgTm9uZSA9PiB1bnJvbGwodHkpXG4gICAgICAgICAgfCBTb21lKF8pID0+IHR5X2JvZHlcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiB0eVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoICh0eSkge1xuICAgICAgfCBTdW0oc20pID0+IFNvbWUoc20pXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfTtcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGlzX3Vua25vd24gPSAodHk6IHQpOiBib29sID0+XG4gICAgc3dpdGNoICh0eSkge1xuICAgIHwgVW5rbm93bihfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBDdHg6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhcl9lbnRyeSA9IHtcbiAgICBuYW1lOiBWYXIudCxcbiAgICBpZDogSWQudCxcbiAgICB0eXA6IFR5cC50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0dmFyX2VudHJ5ID0ge1xuICAgIG5hbWU6IFR5cFZhci50LFxuICAgIGlkOiBJZC50LFxuICAgIGtpbmQ6IEtpbmQudCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZW50cnkgPVxuICAgIHwgVmFyRW50cnkodmFyX2VudHJ5KVxuICAgIHwgQ29uc3RydWN0b3JFbnRyeSh2YXJfZW50cnkpXG4gICAgfCBUVmFyRW50cnkodHZhcl9lbnRyeSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KGVudHJ5KTtcblxuICBsZXQgZXh0ZW5kOiAodCwgZW50cnkpID0+IHQ7XG4gIGxldCBleHRlbmRfdHZhcjogKHQsIHR2YXJfZW50cnkpID0+IHQ7XG4gIGxldCBleHRlbmRfYWxpYXM6ICh0LCBUeXBWYXIudCwgSWQudCwgVHlwLnQpID0+IHQ7XG4gIGxldCBleHRlbmRfZHVtbXlfdHZhcjogKHQsIFR5cFZhci50KSA9PiB0O1xuICBsZXQgbG9va3VwX3R2YXI6ICh0LCBUeXBWYXIudCkgPT4gb3B0aW9uKHR2YXJfZW50cnkpO1xuICBsZXQgbG9va3VwX2FsaWFzOiAodCwgVHlwVmFyLnQpID0+IG9wdGlvbihUeXAudCk7XG4gIGxldCBnZXRfaWQ6IGVudHJ5ID0+IElkLnQ7XG4gIGxldCBsb29rdXBfdmFyOiAodCwgc3RyaW5nKSA9PiBvcHRpb24odmFyX2VudHJ5KTtcbiAgbGV0IGxvb2t1cF9jdHI6ICh0LCBzdHJpbmcpID0+IG9wdGlvbih2YXJfZW50cnkpO1xuICBsZXQgaXNfYWxpYXM6ICh0LCBUeXBWYXIudCkgPT4gYm9vbDtcbiAgbGV0IGFkZF9jdHJzOiAodCwgVHlwVmFyLnQsIElkLnQsIFR5cC5zdW1fbWFwKSA9PiB0O1xuICBsZXQgc3VidHJhY3RfcHJlZml4OiAodCwgdCkgPT4gb3B0aW9uKHQpO1xuICBsZXQgYWRkZWRfYmluZGluZ3M6ICh0LCB0KSA9PiB0O1xuICBsZXQgZmlsdGVyX2R1cGxpY2F0ZXM6IHQgPT4gdDtcbiAgbGV0IHNoYWRvd3NfdHlwOiAodCwgVHlwVmFyLnQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdmFyX2VudHJ5ID0ge1xuICAgIG5hbWU6IFZhci50LFxuICAgIGlkOiBJZC50LFxuICAgIHR5cDogVHlwLnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHR2YXJfZW50cnkgPSB7XG4gICAgbmFtZTogVHlwVmFyLnQsXG4gICAgaWQ6IElkLnQsXG4gICAga2luZDogS2luZC50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlbnRyeSA9XG4gICAgfCBWYXJFbnRyeSh2YXJfZW50cnkpXG4gICAgfCBDb25zdHJ1Y3RvckVudHJ5KHZhcl9lbnRyeSlcbiAgICB8IFRWYXJFbnRyeSh0dmFyX2VudHJ5KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IGxpc3QoZW50cnkpO1xuXG4gIGxldCBleHRlbmQgPSAoY3R4LCBlbnRyeSkgPT4gTGlzdC5jb25zKGVudHJ5LCBjdHgpO1xuXG4gIGxldCBleHRlbmRfdHZhciA9IChjdHg6IHQsIHR2YXJfZW50cnk6IHR2YXJfZW50cnkpOiB0ID0+XG4gICAgZXh0ZW5kKGN0eCwgVFZhckVudHJ5KHR2YXJfZW50cnkpKTtcblxuICBsZXQgZXh0ZW5kX2FsaWFzID0gKGN0eDogdCwgbmFtZTogVHlwVmFyLnQsIGlkOiBJZC50LCB0eTogVHlwLnQpOiB0ID0+XG4gICAgZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQsIGtpbmQ6IFNpbmdsZXRvbih0eSl9KTtcblxuICBsZXQgZXh0ZW5kX2R1bW15X3R2YXIgPSAoY3R4OiB0LCBuYW1lOiBUeXBWYXIudCkgPT5cbiAgICBleHRlbmRfdHZhcihjdHgsIHtraW5kOiBBYnN0cmFjdCwgbmFtZSwgaWQ6IElkLmludmFsaWR9KTtcblxuICBsZXQgbG9va3VwX3R2YXIgPSAoY3R4OiB0LCBuYW1lOiBUeXBWYXIudCk6IG9wdGlvbih0dmFyX2VudHJ5KSA9PlxuICAgIExpc3QuZmluZF9tYXAoXG4gICAgICBmdW5cbiAgICAgIHwgVFZhckVudHJ5KHYpIHdoZW4gdi5uYW1lID09IG5hbWUgPT4gU29tZSh2KVxuICAgICAgfCBfID0+IE5vbmUsXG4gICAgICBjdHgsXG4gICAgKTtcblxuICBsZXQgbG9va3VwX2FsaWFzID0gKGN0eDogdCwgdDogVHlwVmFyLnQpOiBvcHRpb24oVHlwLnQpID0+XG4gICAgc3dpdGNoIChsb29rdXBfdHZhcihjdHgsIHQpKSB7XG4gICAgfCBTb21lKHtraW5kOiBTaW5nbGV0b24odHkpLCBffSkgPT4gU29tZSh0eSlcbiAgICB8IFNvbWUoe2tpbmQ6IEFic3RyYWN0LCBffSlcbiAgICB8IE5vbmUgPT4gTm9uZVxuICAgIH07XG5cbiAgbGV0IGdldF9pZDogZW50cnkgPT4gSWQudCA9XG4gICAgZnVuXG4gICAgfCBWYXJFbnRyeSh7aWQsIF99KVxuICAgIHwgQ29uc3RydWN0b3JFbnRyeSh7aWQsIF99KVxuICAgIHwgVFZhckVudHJ5KHtpZCwgX30pID0+IGlkO1xuXG4gIGxldCBsb29rdXBfdmFyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHZhcl9lbnRyeSkgPT5cbiAgICBMaXN0LmZpbmRfbWFwKFxuICAgICAgZnVuXG4gICAgICB8IFZhckVudHJ5KHYpIHdoZW4gdi5uYW1lID09IG5hbWUgPT4gU29tZSh2KVxuICAgICAgfCBfID0+IE5vbmUsXG4gICAgICBjdHgsXG4gICAgKTtcblxuICBsZXQgbG9va3VwX2N0ciA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IG9wdGlvbih2YXJfZW50cnkpID0+XG4gICAgTGlzdC5maW5kX21hcChcbiAgICAgIGZ1blxuICAgICAgfCBDb25zdHJ1Y3RvckVudHJ5KHQpIHdoZW4gdC5uYW1lID09IG5hbWUgPT4gU29tZSh0KVxuICAgICAgfCBfID0+IE5vbmUsXG4gICAgICBjdHgsXG4gICAgKTtcblxuICBsZXQgaXNfYWxpYXMgPSAoY3R4OiB0LCBuYW1lOiBUeXBWYXIudCk6IGJvb2wgPT5cbiAgICBzd2l0Y2ggKGxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpKSB7XG4gICAgfCBTb21lKF8pID0+IHRydWVcbiAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICB9O1xuXG4gIGxldCBhZGRfY3RycyA9IChjdHg6IHQsIG5hbWU6IFR5cFZhci50LCBpZDogSWQudCwgY3RyczogVHlwLnN1bV9tYXApOiB0ID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGN0ciwgdHlwKSkgPT5cbiAgICAgICAgQ29uc3RydWN0b3JFbnRyeSh7XG4gICAgICAgICAgbmFtZTogY3RyLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHR5cDpcbiAgICAgICAgICAgIHN3aXRjaCAodHlwKSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gVmFyKG5hbWUpXG4gICAgICAgICAgICB8IFNvbWUodHlwKSA9PiBBcnJvdyh0eXAsIFZhcihuYW1lKSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgY3RycyxcbiAgICApXG4gICAgQCBjdHg7XG5cbiAgbGV0IHN1YnRyYWN0X3ByZWZpeCA9IChjdHg6IHQsIHByZWZpeF9jdHg6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIC8vIE5PVEU6IGRvZXMgbm90IGNoZWNrIHRoYXQgdGhlIHByZWZpeCBpcyBhbiBhY3R1YWwgcHJlZml4XG4gICAgbGV0IHByZWZpeF9sZW5ndGggPSBMaXN0Lmxlbmd0aChwcmVmaXhfY3R4KTtcbiAgICBsZXQgY3R4X2xlbmd0aCA9IExpc3QubGVuZ3RoKGN0eCk7XG4gICAgaWYgKHByZWZpeF9sZW5ndGggPiBjdHhfbGVuZ3RoKSB7XG4gICAgICBOb25lO1xuICAgIH0gZWxzZSB7XG4gICAgICBTb21lKFxuICAgICAgICBMaXN0LnJldihcbiAgICAgICAgICBMaXN0VXRpbC5zdWJsaXN0KChwcmVmaXhfbGVuZ3RoLCBjdHhfbGVuZ3RoKSwgTGlzdC5yZXYoY3R4KSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbGV0IGFkZGVkX2JpbmRpbmdzID0gKGN0eF9hZnRlcjogdCwgY3R4X2JlZm9yZTogdCk6IHQgPT4ge1xuICAgIC8qIFByZWNvbmRpdGlvbjogbmV3X2N0eCBpcyBvbGRfY3R4IHBsdXMgc29tZSBuZXcgYmluZGluZ3MgKi9cbiAgICBsZXQgbmV3X2NvdW50ID0gTGlzdC5sZW5ndGgoY3R4X2FmdGVyKSAtIExpc3QubGVuZ3RoKGN0eF9iZWZvcmUpO1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbl9vcHQobmV3X2NvdW50LCBjdHhfYWZ0ZXIpKSB7XG4gICAgfCBTb21lKChjdHgsIF8pKSA9PiBjdHhcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBWYXJTZXQgPSBTZXQuTWFrZShWYXIpO1xuXG4gIC8vIE5vdGU6IGZpbHRlciBvdXQgZHVwbGljYXRlcyB3aGVuIHJlbmRlcmluZ1xuICBsZXQgZmlsdGVyX2R1cGxpY2F0ZXMgPSAoY3R4OiB0KTogdCA9PlxuICAgIGN0eFxuICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KSwgZW50cnkpID0+IHtcbiAgICAgICAgICAgc3dpdGNoIChlbnRyeSkge1xuICAgICAgICAgICB8IFZhckVudHJ5KHtuYW1lLCBffSlcbiAgICAgICAgICAgfCBDb25zdHJ1Y3RvckVudHJ5KHtuYW1lLCBffSkgPT5cbiAgICAgICAgICAgICBWYXJTZXQubWVtKG5hbWUsIHRlcm1fc2V0KVxuICAgICAgICAgICAgICAgPyAoY3R4LCB0ZXJtX3NldCwgdHlwX3NldClcbiAgICAgICAgICAgICAgIDogKFtlbnRyeSwgLi4uY3R4XSwgVmFyU2V0LmFkZChuYW1lLCB0ZXJtX3NldCksIHR5cF9zZXQpXG4gICAgICAgICAgIHwgVFZhckVudHJ5KHtuYW1lLCBffSkgPT5cbiAgICAgICAgICAgICBWYXJTZXQubWVtKG5hbWUsIHR5cF9zZXQpXG4gICAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgICAgOiAoW2VudHJ5LCAuLi5jdHhdLCB0ZXJtX3NldCwgVmFyU2V0LmFkZChuYW1lLCB0eXBfc2V0KSlcbiAgICAgICAgICAgfVxuICAgICAgICAgfSxcbiAgICAgICAgIChbXSwgVmFyU2V0LmVtcHR5LCBWYXJTZXQuZW1wdHkpLFxuICAgICAgIClcbiAgICB8PiAoKChjdHgsIF8sIF8pKSA9PiBMaXN0LnJldihjdHgpKTtcblxuICBsZXQgc2hhZG93c190eXAgPSAoY3R4OiB0LCBuYW1lOiBUeXBWYXIudCk6IGJvb2wgPT5cbiAgICBGb3JtLmlzX2Jhc2VfdHlwKG5hbWUpIHx8IGxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpICE9IE5vbmU7XG59XG5hbmQgS2luZDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBTaW5nbGV0b24oVHlwLnQpXG4gICAgfCBBYnN0cmFjdDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IFNpbmdsZXRvbihUeXAudClcbiAgICB8IEFic3RyYWN0O1xufTtcbiIsIltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IFZhck1hcC50XyhUeXAudCk7XG5pbmNsdWRlIFZhck1hcDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcblxubW9kdWxlIElubmVyID0ge1xuICBpbmNsdWRlIE1hcC5NYWtlKFZhcik7XG5cbiAgLyogU2VlIEludE1hcCAqL1xuICBbQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxuICB0eXBlIGJpbmRpbmcoJ3YpID0gKFZhci50LCAndik7XG5cbiAgbGV0IHBwID0gKHBwX3YsIGYsIG1hcCkgPT5cbiAgICBpdGVyKChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVzIC0+ICVhQFxcblwiLCBrLCBwcF92LCB2KSwgbWFwKTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdjogJ3YgPT4gU2V4cC50LCBtYXA6IHQoJ3YpKTogU2V4cC50ID0+XG4gICAgbWFwIHw+IGJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwOiBTZXhwLnQgPT4gJ3YsIHNleHA6IFNleHAudCk6IHQoJ3YpID0+XG4gICAgc2V4cCB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcTtcblxuICBsZXQgeW9qc29uX29mX3QgPVxuICAgICAgKHlvanNvbl9vZl92OiAndiA9PiBZb2pzb24uU2FmZS50LCBtYXA6IHQoJ3YpKTogWW9qc29uLlNhZmUudCA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuICBsZXQgdF9vZl95b2pzb24gPVxuICAgICAgKHZfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+ICd2LCB5b2pzb246IFlvanNvbi5TYWZlLnQpOiB0KCd2KSA9PlxuICAgIHlvanNvblxuICAgIHw+IGxpc3Rfb2ZfeW9qc29uKGJpbmRpbmdfb2ZfeW9qc29uKHZfb2ZfeW9qc29uKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IG9mX3NlcTtcbn07XG5cbm1vZHVsZSBWYXJCc3RNYXAwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdF8oJ2EpID0gSW5uZXIudCgnYSk7XG5cbiAgbGV0IGVtcHR5ID0gSW5uZXIuZW1wdHk7XG5cbiAgbGV0IGlzX2VtcHR5ID0gSW5uZXIuaXNfZW1wdHk7XG5cbiAgbGV0IHNpbmdsZXRvbiA9ICgoeCwgYSkpID0+IElubmVyLnNpbmdsZXRvbih4LCBhKTtcblxuICBsZXQgZXh0ZW5kID0gKGN0eCwgKHgsIGEpKSA9PiBJbm5lci5hZGQoeCwgYSwgY3R4KTtcblxuICBsZXQgdXBkYXRlID0gKGN0eCwgZiwgeCkgPT4gSW5uZXIudXBkYXRlKHgsIGYsIGN0eCk7XG5cbiAgbGV0IHVuaW9uID0gKGN0eDEsIGN0eDIpID0+XG4gICAgSW5uZXIudW5pb24oKF94LCBhLCBfYScpID0+IFNvbWUoYSksIGN0eDEsIGN0eDIpO1xuXG4gIGxldCBsb29rdXAgPSAoY3R4LCB4KSA9PiBJbm5lci5maW5kX29wdCh4LCBjdHgpO1xuXG4gIGxldCBjb250YWlucyA9IChjdHgsIHgpID0+IElubmVyLm1lbSh4LCBjdHgpO1xuXG4gIGxldCBtYXAgPSBmID0+IElubmVyLm1hcGkoKHgsIGEpID0+IGYoKHgsIGEpKSk7XG5cbiAgbGV0IGZpbHRlciA9IGYgPT4gSW5uZXIuZmlsdGVyKCh4LCBhKSA9PiBmKCh4LCBhKSkpO1xuXG4gIGxldCBmb2xkID0gKGYsIGluaXQsIGN0eCkgPT5cbiAgICBJbm5lci5mb2xkKCh4LCBhLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBjdHgsIGluaXQpO1xuXG4gIGxldCBsZW5ndGggPSBJbm5lci5jYXJkaW5hbDtcblxuICBsZXQgdG9fbGlzdCA9IGN0eCA9PiBjdHggfD4gSW5uZXIudG9fc2VxIHw+IExpc3Qub2Zfc2VxO1xuXG4gIGxldCBvZl9saXN0ID0gYmluZGluZ3MgPT4gYmluZGluZ3MgfD4gTGlzdC50b19zZXEgfD4gSW5uZXIub2Zfc2VxO1xufTtcblxubW9kdWxlIE9yZGVyZWQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0XygnYSkgPSB7XG4gICAgbWFwOiBWYXJCc3RNYXAwLnRfKCdhKSxcbiAgICAvKiogVGhlIHJldmVyc2UgaW5zZXJ0aW9uIG9yZGVyIG9mIGJpbmRpbmdzIChkZW5vdGVkIGJ5IGtleSkuICovXG4gICAgcmV2X29yZGVyOiBsaXN0KChWYXIudCwgdW5pdCkpLFxuICB9O1xuXG4gIGxldCBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50ID0gKCkgPT5cbiAgICBmYWlsd2l0aChcIlZhckJzdE1hcC5PcmRlcmVkOiBvcmRlciBrZXkgbm90IGluIG1hcFwiKTtcblxuICBsZXQgZW1wdHkgPSB7bWFwOiBWYXJCc3RNYXAwLmVtcHR5LCByZXZfb3JkZXI6IFtdfTtcblxuICBsZXQgaXNfZW1wdHkgPSAoe21hcCwgX30pID0+IFZhckJzdE1hcDAuaXNfZW1wdHkobWFwKTtcblxuICBsZXQgc2luZ2xldG9uID0gKCh4LCBhKSkgPT4ge1xuICAgIHttYXA6IFZhckJzdE1hcDAuc2luZ2xldG9uKCh4LCBhKSksIHJldl9vcmRlcjogWyh4LCAoKSldfTtcbiAgfTtcblxuICBsZXQgZXh0ZW5kID0gKHttYXAsIHJldl9vcmRlcn0sICh4LCBhKSkgPT4ge1xuICAgIG1hcDogVmFyQnN0TWFwMC5leHRlbmQobWFwLCAoeCwgYSkpLFxuICAgIHJldl9vcmRlcjogWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIHJldl9vcmRlcildLFxuICB9O1xuXG4gIGxldCB1bmlvbiA9XG4gICAgICAoXG4gICAgICAgIHttYXA6IG1hcDEsIHJldl9vcmRlcjogcmV2X29yZGVyMX0sXG4gICAgICAgIHttYXA6IG1hcDIsIHJldl9vcmRlcjogcmV2X29yZGVyMn0sXG4gICAgICApID0+IHtcbiAgICBsZXQgcmVjIHVuaW9uX29yZGVyID0gKG9yZGVyMSwgcmV2X29yZGVyMikgPT5cbiAgICAgIHN3aXRjaCAob3JkZXIxLCByZXZfb3JkZXIyKSB7XG4gICAgICB8IChbXSwgb3JkZXIyKSA9PiBvcmRlcjJcbiAgICAgIHwgKFsoeCwgKCkpLCAuLi5yZXZfb3JkZXIxJ10sIG9yZGVyMikgPT5cbiAgICAgICAgbGV0IHJldl9vcmRlcjInID0gWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIG9yZGVyMildO1xuICAgICAgICB1bmlvbl9vcmRlcihyZXZfb3JkZXIxJywgcmV2X29yZGVyMicpO1xuICAgICAgfTtcblxuICAgIGxldCBtYXAgPSBWYXJCc3RNYXAwLnVuaW9uKG1hcDEsIG1hcDIpO1xuICAgIGxldCByZXZfb3JkZXIgPSB1bmlvbl9vcmRlcihMaXN0LnJldihyZXZfb3JkZXIxKSwgcmV2X29yZGVyMik7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgbG9va3VwID0gKHttYXAsIF99LCB4KSA9PiBWYXJCc3RNYXAwLmxvb2t1cChtYXAsIHgpO1xuXG4gIGxldCBjb250YWlucyA9ICh7bWFwLCBffSwgeCkgPT4gVmFyQnN0TWFwMC5jb250YWlucyhtYXAsIHgpO1xuXG4gIGxldCBtYXBrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gbWFwIHw+IFZhckJzdE1hcDAubWFwKGYpO1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IG1hcG8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCBtYXAgPVxuICAgICAgcmV2X29yZGVyXG4gICAgICB8PiBMaXN0LnJldlxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChtYXAnLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgICAgIHwgU29tZShhKSA9PlxuICAgICAgICAgICAgICAgbGV0IGEgPSBmKCh4LCBhKSk7XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLmV4dGVuZChtYXAnLCAoeCwgYSkpO1xuICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBWYXJCc3RNYXAwLmVtcHR5LFxuICAgICAgICAgKTtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBmaWx0ZXJrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gVmFyQnN0TWFwMC5maWx0ZXIoZiwgbWFwKTtcbiAgICBsZXQgcmV2X29yZGVyID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoeCwgXykpID0+IFZhckJzdE1hcDAuY29udGFpbnMobWFwLCB4KSlcbiAgICAgIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZpbHRlcm8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCAobWFwLCByZXZfb3JkZXIpID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoKG1hcCcsIHJldl9vcmRlcicpLCAoeCwgKCkpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IHJldl9vcmRlcicgPSByZWYocmV2X29yZGVyJyk7XG4gICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLnVwZGF0ZShcbiAgICAgICAgICAgICAgICAgbWFwJyxcbiAgICAgICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICAgICAgIHwgU29tZShhKSB3aGVuICFmKCh4LCBhKSkgPT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFNvbWUoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgcmV2X29yZGVyJyA6PSBbKHgsICgpKSwgLi4ucmV2X29yZGVyJ15dO1xuICAgICAgICAgICAgICAgICAgICAgU29tZShhKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KCksXG4gICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIChtYXAsIHJldl9vcmRlcideKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgKG1hcCwgW10pLFxuICAgICAgICAgKTtcblxuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZvbGRrID0gKGYsIGluaXQsIHttYXAsIF99KSA9PlxuICAgIFZhckJzdE1hcDAuZm9sZCgoKHgsIGEpLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBpbml0LCBtYXApO1xuXG4gIGxldCBmb2xkbyA9IChmLCBpbml0LCB7bWFwLCByZXZfb3JkZXJ9KSA9PlxuICAgIHJldl9vcmRlclxuICAgIHw+IExpc3QucmV2XG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICBzd2l0Y2ggKFZhckJzdE1hcDAubG9va3VwKG1hcCwgeCkpIHtcbiAgICAgICAgICAgfCBTb21lKGEpID0+IGYoKHgsIGEpLCBhY2MpXG4gICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgfSxcbiAgICAgICAgIGluaXQsXG4gICAgICAgKTtcblxuICBsZXQgbGVuZ3RoID0gKHtyZXZfb3JkZXIsIF99KSA9PiBMaXN0Lmxlbmd0aChyZXZfb3JkZXIpO1xuXG4gIGxldCB0b19saXN0ayA9ICh7bWFwLCBffSkgPT4gVmFyQnN0TWFwMC50b19saXN0KG1hcCk7XG5cbiAgbGV0IHRvX2xpc3RvID0gKHttYXAsIHJldl9vcmRlcn0pID0+XG4gICAgcmV2X29yZGVyXG4gICAgfD4gTGlzdC5yZXZcbiAgICB8PiBMaXN0Lm1hcCgoKHgsICgpKSkgPT5cbiAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgfCBTb21lKGEpID0+ICh4LCBhKVxuICAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQoKVxuICAgICAgICAgfVxuICAgICAgICk7XG5cbiAgbGV0IG9mX2xpc3QgPSBiaW5kaW5ncyA9PiB7XG4gICAgbGV0IG1hcCA9IFZhckJzdE1hcDAub2ZfbGlzdChiaW5kaW5ncyk7XG4gICAgbGV0IHJldl9vcmRlciA9IGJpbmRpbmdzIHw+IExpc3QubWFwKCgoeCwgXykpID0+ICh4LCAoKSkpIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IChrZXlzLCBtKSA9PiB7XG4gICAgZmlsdGVyaygoKHMsIF8pKSA9PiAhTGlzdC5leGlzdHMoeCA9PiB4ID09IHMsIGtleXMpLCBtKTtcbiAgfTtcbn07XG5cbmluY2x1ZGUgVmFyQnN0TWFwMDtcbiIsIm1vZHVsZSBIb2xlUmVhc29uID0ge1xuICAvKiBWYXJpYWJsZTogYHJlYXNvbmAgKi9cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgVHlwZUluY29uc2lzdGVudFxuICAgIHwgV3JvbmdMZW5ndGg7XG5cbiAgbGV0IGVxID0gKHgsIHkpID0+IHggPT0geTtcbn07XG5cbi8qIFZhcmlhYmxlOiBgZXJyYCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb3RJbkhvbGVcbiAgfCBJbkhvbGUoSG9sZVJlYXNvbi50LCBNZXRhVmFyLnQpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyoqXG4gKiBIb2xlIGluc3RhbmNlIGluZGV4IGluIERIUGF0IGFuZCBESEV4cFxuICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBpbnQ7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IEVtcHR5SG9sZShNZXRhVmFyLnQsIE1ldGFWYXJJbnN0LnQpXG4gIHwgTm9uRW1wdHlIb2xlKEVyclN0YXR1cy5Ib2xlUmVhc29uLnQsIE1ldGFWYXIudCwgTWV0YVZhckluc3QudCwgdClcbiAgfCBXaWxkXG4gIHwgRXhwYW5kaW5nS2V5d29yZChNZXRhVmFyLnQsIE1ldGFWYXJJbnN0LnQsIEV4cGFuZGluZ0tleXdvcmQudClcbiAgfCBJbnZhbGlkVGV4dChNZXRhVmFyLnQsIE1ldGFWYXJJbnN0LnQsIHN0cmluZylcbiAgfCBCYWRDb25zdHJ1Y3RvcihNZXRhVmFyLnQsIE1ldGFWYXJJbnN0LnQsIHN0cmluZylcbiAgfCBWYXIoVmFyLnQpXG4gIHwgSW50TGl0KGludClcbiAgfCBGbG9hdExpdChmbG9hdClcbiAgfCBCb29sTGl0KGJvb2wpXG4gIHwgU3RyaW5nTGl0KHN0cmluZylcbiAgfCBMaXN0TGl0KFR5cC50LCBsaXN0KHQpKVxuICB8IENvbnModCwgdClcbiAgfCBUdXBsZShsaXN0KHQpKVxuICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgfCBBcCh0LCB0KTtcblxubGV0IG1rX3R1cGxlOiBsaXN0KHQpID0+IHQgPVxuICBmdW5cbiAgfCBbXVxuICB8IFtfXSA9PiBmYWlsd2l0aChcIm1rX3R1cGxlOiBleHBlY3RlZCBhdCBsZWFzdCAyIGVsZW1lbnRzXCIpXG4gIHwgZHBzID0+IFR1cGxlKGRwcyk7XG5cbi8qKlxuICogV2hldGhlciBkcCBjb250YWlucyB0aGUgdmFyaWFibGUgeCBvdXRzaWRlIG9mIGEgaG9sZS5cbiAqL1xubGV0IHJlYyBiaW5kc192YXIgPSAoeDogVmFyLnQsIGRwOiB0KTogYm9vbCA9PlxuICBzd2l0Y2ggKGRwKSB7XG4gIHwgRW1wdHlIb2xlKF8sIF8pXG4gIHwgTm9uRW1wdHlIb2xlKF8sIF8sIF8sIF8pXG4gIHwgV2lsZFxuICB8IEludmFsaWRUZXh0KF8pXG4gIHwgQmFkQ29uc3RydWN0b3IoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IEJvb2xMaXQoXylcbiAgfCBTdHJpbmdMaXQoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IEV4cGFuZGluZ0tleXdvcmQoXywgXywgXykgPT4gZmFsc2VcbiAgfCBWYXIoeSkgPT4gVmFyLmVxKHgsIHkpXG4gIHwgVHVwbGUoZHBzKSA9PiBkcHMgfD4gTGlzdC5leGlzdHMoYmluZHNfdmFyKHgpKVxuICB8IENvbnMoZHAxLCBkcDIpID0+IGJpbmRzX3Zhcih4LCBkcDEpIHx8IGJpbmRzX3Zhcih4LCBkcDIpXG4gIHwgTGlzdExpdChfLCBkX2xpc3QpID0+XG4gICAgbGV0IG5ld19saXN0ID0gTGlzdC5tYXAoYmluZHNfdmFyKHgpLCBkX2xpc3QpO1xuICAgIExpc3QuZm9sZF9sZWZ0KCh8fCksIGZhbHNlLCBuZXdfbGlzdCk7XG4gIHwgQXAoXywgXykgPT4gZmFsc2VcbiAgfTtcblxubGV0IHJlYyBib3VuZF92YXJzID0gKGRwOiB0KTogbGlzdChWYXIudCkgPT5cbiAgc3dpdGNoIChkcCkge1xuICB8IEVtcHR5SG9sZShfLCBfKVxuICB8IE5vbkVtcHR5SG9sZShfLCBfLCBfLCBfKVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkVGV4dChfKVxuICB8IEJhZENvbnN0cnVjdG9yKF8pXG4gIHwgSW50TGl0KF8pXG4gIHwgRmxvYXRMaXQoXylcbiAgfCBCb29sTGl0KF8pXG4gIHwgU3RyaW5nTGl0KF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKF8sIF8sIF8pID0+IFtdXG4gIHwgVmFyKHkpID0+IFt5XVxuICB8IFR1cGxlKGRwcykgPT4gTGlzdC5mbGF0dGVuKExpc3QubWFwKGJvdW5kX3ZhcnMsIGRwcykpXG4gIHwgQ29ucyhkcDEsIGRwMikgPT4gYm91bmRfdmFycyhkcDEpIEAgYm91bmRfdmFycyhkcDIpXG4gIHwgTGlzdExpdChfLCBkcHMpID0+IExpc3QuZmxhdHRlbihMaXN0Lm1hcChib3VuZF92YXJzLCBkcHMpKVxuICB8IEFwKF8sIGRwMSkgPT4gYm91bmRfdmFycyhkcDEpXG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9XG4gIHwgU3RlcFxuICB8IEV2YWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY291bnQgPVxuICB8IE9uZVxuICB8IEFsbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKGFjdGlvbiwgY291bnQpO1xuXG5sZXQgc3RyaW5nX29mX3QgPSB2ID0+IHtcbiAgc3dpdGNoICh2KSB7XG4gIHwgKFN0ZXAsIE9uZSkgPT4gXCJwYXVzZVwiXG4gIHwgKFN0ZXAsIEFsbCkgPT4gXCJkZWJ1Z1wiXG4gIHwgKEV2YWwsIE9uZSkgPT4gXCJoaWRlXCJcbiAgfCAoRXZhbCwgQWxsKSA9PiBcImV2YWxcIlxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGludDtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgSW52YWxpZE9mU3RyaW5nXG4gIHwgSW5kZXhPdXRPZkJvdW5kc1xuICB8IERpdmlkZUJ5WmVyb1xuICB8IE5lZ2F0aXZlRXhwb25lbnRcbiAgfCBPdXRPZkZ1ZWw7XG5cbmxldCBlcnJfbXNnID0gKGVycjogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKGVycikge1xuICB8IEludmFsaWRPZlN0cmluZyA9PiBcIkVycm9yOiBJbnZhbGlkIFN0cmluZyBDb252ZXJzaW9uXCJcbiAgfCBJbmRleE91dE9mQm91bmRzID0+IFwiRXJyb3I6IEluZGV4IE91dCBvZiBCb3VuZHNcIlxuICB8IERpdmlkZUJ5WmVybyA9PiBcIkVycm9yOiBEaXZpZGUgYnkgWmVyb1wiXG4gIHwgTmVnYXRpdmVFeHBvbmVudCA9PiBcIkVycm9yOiBOZWdhdGl2ZSBFeHBvbmVudCBpbiBJbnRlZ2VyIEV4cG9uZW50aWF0aW9uIChDb25zaWRlciB1c2luZyAqKi4pXCJcbiAgfCBPdXRPZkZ1ZWwgPT4gXCJFcnJvcjogT3V0IG9mIEZ1ZWxcIlxuICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gSWQudDtcbiIsIi8qXG4gICAgIFRoaXMgbW9kdWxlIGFkZHMgaGVscGVycyBmb3IgY3JlYXRpbmcgcy1leHByZXNzaW9ucyB0aGF0IHVzZSBzb21lIHN0cnVjdHVyYWwgc2hhcmluZ1xuICAgICAoaHR0cHM6Ly93d3cub2NhbWx3aWtpLmNvbS93aWtpL1N0cnVjdHVyYWxfc2hhcmluZykgaW5zdGVhZCBvZiBjb3B5aW5nIGFsbCBpbnN0YW5jZXNcbiAgICAgb2YgdGhlIHNhbWUgcmVjb3JkLlxuICovXG5cbmxldCBzdHJ1Y3R1cmVfc2hhcmVfbWFwOiByZWYob3B0aW9uKElkLk1hcC50KFNleHBsaWIuU2V4cC50KSkpID0gcmVmKE5vbmUpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHN0cnVjdHVyZV9zaGFyZWQgPSAoU2V4cGxpYi5TZXhwLnQsIElkLk1hcC50KFNleHBsaWIuU2V4cC50KSk7XG5cbi8vIFRvIGJlIHVzZWQgb24gdGhlIGRhdGEgc3RydWN0dXJlIHdoZXJlIHRoZSBzdHJ1Y3R1cmUgc2hhcmluZyB0YWtlcyBwbGFjZVxubGV0IHN0cnVjdHVyZV9zaGFyZV9oZXJlID1cbiAgICAoXG4gICAgICBrZXlfZjogJ2EgPT4gSWQudCxcbiAgICAgIHNleHBfb2ZfdDogJ2EgPT4gU2V4cGxpYi5TZXhwLnQsXG4gICAgICB0X29mX3NleHA6IFNleHBsaWIuU2V4cC50ID0+ICdhLFxuICAgIClcbiAgICA6ICgnYSA9PiBTZXhwbGliLlNleHAudCwgU2V4cGxpYi5TZXhwLnQgPT4gJ2EpID0+IHtcbiAgbGV0IHNleHBfb2ZfdCcgPSAodGhpbmc6ICdhKTogU2V4cGxpYi5TZXhwLnQgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IFNvbWUobSkgPT5cbiAgICAgIGxldCBzZXhwID0gc2V4cF9vZl90KHRoaW5nKTtcbiAgICAgIGxldCBrZXkgPSBrZXlfZih0aGluZyk7XG4gICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwIDo9IFNvbWUoSWQuTWFwLnVwZGF0ZShrZXksIF8gPT4gU29tZShzZXhwKSwgbSkpO1xuICAgICAgSWQuc2V4cF9vZl90KGtleSk7XG4gICAgfCBOb25lID0+IHNleHBfb2ZfdCh0aGluZylcbiAgICB9O1xuICB9O1xuICBsZXQgdF9vZl9zZXhwJyA9IHNleHAgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IFNvbWUobSkgPT5cbiAgICAgIGxldCBpZCA9IElkLnRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIGxldCB0aGluZ19zID1cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG0pKSB7XG4gICAgICAgIHwgU29tZSh0KSA9PiB0XG4gICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcInN0cnVjdHVyZS1zaGFyaW5nIGRlc2VyaWFsaXphdGlvbiBmYWlsZWRcIilcbiAgICAgICAgfTtcbiAgICAgIHRfb2Zfc2V4cCh0aGluZ19zKTtcbiAgICB8IE5vbmUgPT4gdF9vZl9zZXhwKHNleHApXG4gICAgfTtcbiAgfTtcbiAgKHNleHBfb2ZfdCcsIHRfb2Zfc2V4cCcpO1xufTtcblxuLy8gVG8gYmUgdXNlZCBvbiB0aGUgcm9vdCBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgY3VycmVudGx5IGJlaW5nIHNlcmlhbGl6ZWRcbmxldCBzdHJ1Y3R1cmVfc2hhcmVfaW4gPSAoc2V4cF9vZl90LCB0X29mX3NleHApID0+IHtcbiAgbGV0IHNleHBfb2ZfdCcgPSAodGhpbmc6ICdhKTogU2V4cGxpYi5TZXhwLnQgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShJZC5NYXAuZW1wdHkpO1xuICAgICAgbGV0IHNleHAgPSBzZXhwX29mX3QodGhpbmcpO1xuICAgICAgbGV0IHJlc3VsdDogc3RydWN0dXJlX3NoYXJlZCA9IChcbiAgICAgICAgc2V4cCxcbiAgICAgICAgc3RydWN0dXJlX3NoYXJlX21hcF4gfD4gT3B0aW9uLmdldCxcbiAgICAgICk7XG4gICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwIDo9IE5vbmU7XG4gICAgICBzZXhwX29mX3N0cnVjdHVyZV9zaGFyZWQocmVzdWx0KTtcbiAgICB8IFNvbWUoXykgPT4gc2V4cF9vZl90KHRoaW5nKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVG8gYmUgdXNlZCBvbmx5IG9uIHRoZSByb290IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBjdXJyZW50bHkgYmVpbmcgc2VyaWFsaXplZFxuICBsZXQgdF9vZl9zZXhwJyA9IChzZXhwOiBTZXhwbGliLlNleHAudCk6ICdhID0+IHtcbiAgICBzd2l0Y2ggKHN0cnVjdHVyZV9zaGFyZV9tYXBeKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgKHNleHAsIG1hcCkgPSBzdHJ1Y3R1cmVfc2hhcmVkX29mX3NleHAoc2V4cCk7XG4gICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwIDo9IFNvbWUobWFwKTtcbiAgICAgIGxldCB0aGluZyA9IHRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gTm9uZTtcbiAgICAgIHRoaW5nO1xuICAgIHwgU29tZShfKSA9PiB0X29mX3NleHAoc2V4cClcbiAgICB9O1xuICB9O1xuICAoc2V4cF9vZl90JywgdF9vZl9zZXhwJyk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIHJlYyBBbnk6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKFVFeHAudClcbiAgICB8IFBhdChVUGF0LnQpXG4gICAgfCBUeXAoVVR5cC50KVxuICAgIHwgVFBhdChVVFBhdC50KVxuICAgIHwgUnVsKFVSdWwudClcbiAgICB8IE51bCh1bml0KVxuICAgIHwgQW55KHVuaXQpO1xuXG4gIGxldCBpc19leHA6IHQgPT4gb3B0aW9uKFVFeHAudCk7XG4gIGxldCBpc19wYXQ6IHQgPT4gb3B0aW9uKFVQYXQudCk7XG4gIGxldCBpc190eXA6IHQgPT4gb3B0aW9uKFVUeXAudCk7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBFeHAoVUV4cC50KVxuICAgIHwgUGF0KFVQYXQudClcbiAgICB8IFR5cChVVHlwLnQpXG4gICAgfCBUUGF0KFVUUGF0LnQpXG4gICAgfCBSdWwoVVJ1bC50KVxuICAgIHwgTnVsKHVuaXQpXG4gICAgfCBBbnkodW5pdCk7XG5cbiAgbGV0IGlzX2V4cDogdCA9PiBvcHRpb24oVUV4cC50KSA9XG4gICAgZnVuXG4gICAgfCBFeHAoZSkgPT4gU29tZShlKVxuICAgIHwgXyA9PiBOb25lO1xuICBsZXQgaXNfcGF0OiB0ID0+IG9wdGlvbihVUGF0LnQpID1cbiAgICBmdW5cbiAgICB8IFBhdChwKSA9PiBTb21lKHApXG4gICAgfCBfID0+IE5vbmU7XG4gIGxldCBpc190eXA6IHQgPT4gb3B0aW9uKFVUeXAudCkgPVxuICAgIGZ1blxuICAgIHwgVHlwKHQpID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZTtcbn1cbmFuZCBVRXhwOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF91bl9ib29sID1cbiAgICB8IE5vdDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfdW5fbWV0YSA9XG4gICAgfCBVbnF1b3RlO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF91bl9pbnQgPVxuICAgIHwgTWludXM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2Jpbl9ib29sID1cbiAgICB8IEFuZFxuICAgIHwgT3I7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2Jpbl9pbnQgPVxuICAgIHwgUGx1c1xuICAgIHwgTWludXNcbiAgICB8IFRpbWVzXG4gICAgfCBQb3dlclxuICAgIHwgRGl2aWRlXG4gICAgfCBMZXNzVGhhblxuICAgIHwgTGVzc1RoYW5PckVxdWFsXG4gICAgfCBHcmVhdGVyVGhhblxuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsXG4gICAgfCBFcXVhbHNcbiAgICB8IE5vdEVxdWFscztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX2Zsb2F0ID1cbiAgICB8IFBsdXNcbiAgICB8IE1pbnVzXG4gICAgfCBUaW1lc1xuICAgIHwgUG93ZXJcbiAgICB8IERpdmlkZVxuICAgIHwgTGVzc1RoYW5cbiAgICB8IExlc3NUaGFuT3JFcXVhbFxuICAgIHwgR3JlYXRlclRoYW5cbiAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbFxuICAgIHwgRXF1YWxzXG4gICAgfCBOb3RFcXVhbHM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2Jpbl9zdHJpbmcgPVxuICAgIHwgQ29uY2F0XG4gICAgfCBFcXVhbHM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX3VuID1cbiAgICB8IE1ldGEob3BfdW5fbWV0YSlcbiAgICB8IEludChvcF91bl9pbnQpXG4gICAgfCBCb29sKG9wX3VuX2Jvb2wpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF9iaW4gPVxuICAgIHwgSW50KG9wX2Jpbl9pbnQpXG4gICAgfCBGbG9hdChvcF9iaW5fZmxvYXQpXG4gICAgfCBCb29sKG9wX2Jpbl9ib29sKVxuICAgIHwgU3RyaW5nKG9wX2Jpbl9zdHJpbmcpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjbHMgPVxuICAgIHwgSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGVcbiAgICB8IFRyaXZcbiAgICB8IEJvb2xcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IFN0cmluZ1xuICAgIHwgTGlzdExpdFxuICAgIHwgVGFnXG4gICAgfCBGdW5cbiAgICB8IFR1cGxlXG4gICAgfCBWYXJcbiAgICB8IExldFxuICAgIHwgQXBcbiAgICB8IElmXG4gICAgfCBTZXFcbiAgICB8IFRlc3RcbiAgICB8IEZpbHRlclxuICAgIHwgUGFyZW5zXG4gICAgfCBDb25zXG4gICAgfCBMaXN0Q29uY2F0XG4gICAgfCBVbk9wKG9wX3VuKVxuICAgIHwgQmluT3Aob3BfYmluKVxuICAgIHwgTWF0Y2g7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFRyaXZcbiAgICB8IEJvb2woYm9vbClcbiAgICB8IEludChpbnQpXG4gICAgfCBGbG9hdChmbG9hdClcbiAgICB8IFN0cmluZyhzdHJpbmcpXG4gICAgfCBMaXN0TGl0KGxpc3QodCkpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBGdW4oVVBhdC50LCB0KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFZhcihWYXIudClcbiAgICB8IExldChVUGF0LnQsIHQsIHQpXG4gICAgfCBUeUFsaWFzKFVUUGF0LnQsIFVUeXAudCwgdClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBQaXBlbGluZSh0LCB0KVxuICAgIHwgSWYodCwgdCwgdClcbiAgICB8IFNlcSh0LCB0KVxuICAgIHwgVGVzdCh0KVxuICAgIHwgRmlsdGVyKEZpbHRlckFjdGlvbi50LCB0LCB0KVxuICAgIHwgUGFyZW5zKHQpIC8vIChcbiAgICB8IENvbnModCwgdClcbiAgICB8IExpc3RDb25jYXQodCwgdClcbiAgICB8IFVuT3Aob3BfdW4sIHQpXG4gICAgfCBCaW5PcChvcF9iaW4sIHQsIHQpXG4gICAgfCBNYXRjaCh0LCBsaXN0KChVUGF0LnQsIHQpKSlcbiAgYW5kIHQgPSB7XG4gICAgLy8gaW52YXJpYW50OiBub25lbXB0eVxuICAgIGlkczogbGlzdChJZC50KSxcbiAgICB0ZXJtLFxuICB9O1xuXG4gIGxldCBib29sX29wX3RvX3N0cmluZzogb3BfYmluX2Jvb2wgPT4gc3RyaW5nO1xuICBsZXQgaW50X29wX3RvX3N0cmluZzogb3BfYmluX2ludCA9PiBzdHJpbmc7XG4gIGxldCBmbG9hdF9vcF90b19zdHJpbmc6IG9wX2Jpbl9mbG9hdCA9PiBzdHJpbmc7XG4gIGxldCBzdHJpbmdfb3BfdG9fc3RyaW5nOiBvcF9iaW5fc3RyaW5nID0+IHN0cmluZztcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF91bl9ib29sID1cbiAgICB8IE5vdDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfdW5fbWV0YSA9XG4gICAgfCBVbnF1b3RlO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF91bl9pbnQgPVxuICAgIHwgTWludXM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2Jpbl9ib29sID1cbiAgICB8IEFuZFxuICAgIHwgT3I7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2Jpbl9pbnQgPVxuICAgIHwgUGx1c1xuICAgIHwgTWludXNcbiAgICB8IFRpbWVzXG4gICAgfCBQb3dlclxuICAgIHwgRGl2aWRlXG4gICAgfCBMZXNzVGhhblxuICAgIHwgTGVzc1RoYW5PckVxdWFsXG4gICAgfCBHcmVhdGVyVGhhblxuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsXG4gICAgfCBFcXVhbHNcbiAgICB8IE5vdEVxdWFscztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX2Zsb2F0ID1cbiAgICB8IFBsdXNcbiAgICB8IE1pbnVzXG4gICAgfCBUaW1lc1xuICAgIHwgUG93ZXJcbiAgICB8IERpdmlkZVxuICAgIHwgTGVzc1RoYW5cbiAgICB8IExlc3NUaGFuT3JFcXVhbFxuICAgIHwgR3JlYXRlclRoYW5cbiAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbFxuICAgIHwgRXF1YWxzXG4gICAgfCBOb3RFcXVhbHM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2Jpbl9zdHJpbmcgPVxuICAgIHwgQ29uY2F0XG4gICAgfCBFcXVhbHM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX3VuID1cbiAgICB8IE1ldGEob3BfdW5fbWV0YSlcbiAgICB8IEludChvcF91bl9pbnQpXG4gICAgfCBCb29sKG9wX3VuX2Jvb2wpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF9iaW4gPVxuICAgIHwgSW50KG9wX2Jpbl9pbnQpXG4gICAgfCBGbG9hdChvcF9iaW5fZmxvYXQpXG4gICAgfCBCb29sKG9wX2Jpbl9ib29sKVxuICAgIHwgU3RyaW5nKG9wX2Jpbl9zdHJpbmcpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjbHMgPVxuICAgIHwgSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGVcbiAgICB8IFRyaXZcbiAgICB8IEJvb2xcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IFN0cmluZ1xuICAgIHwgTGlzdExpdFxuICAgIHwgVGFnXG4gICAgfCBGdW5cbiAgICB8IFR1cGxlXG4gICAgfCBWYXJcbiAgICB8IExldFxuICAgIHwgQXBcbiAgICB8IElmXG4gICAgfCBTZXFcbiAgICB8IFRlc3RcbiAgICB8IEZpbHRlclxuICAgIHwgUGFyZW5zXG4gICAgfCBDb25zXG4gICAgfCBMaXN0Q29uY2F0XG4gICAgfCBVbk9wKG9wX3VuKVxuICAgIHwgQmluT3Aob3BfYmluKVxuICAgIHwgTWF0Y2g7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFRyaXZcbiAgICB8IEJvb2woYm9vbClcbiAgICB8IEludChpbnQpXG4gICAgfCBGbG9hdChmbG9hdClcbiAgICB8IFN0cmluZyhzdHJpbmcpXG4gICAgfCBMaXN0TGl0KGxpc3QodCkpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBGdW4oVVBhdC50LCB0KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFZhcihWYXIudClcbiAgICB8IExldChVUGF0LnQsIHQsIHQpXG4gICAgfCBUeUFsaWFzKFVUUGF0LnQsIFVUeXAudCwgdClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBQaXBlbGluZSh0LCB0KVxuICAgIHwgSWYodCwgdCwgdClcbiAgICB8IFNlcSh0LCB0KVxuICAgIHwgVGVzdCh0KVxuICAgIHwgRmlsdGVyKEZpbHRlckFjdGlvbi50LCB0LCB0KVxuICAgIHwgUGFyZW5zKHQpIC8vIChcbiAgICB8IENvbnModCwgdClcbiAgICB8IExpc3RDb25jYXQodCwgdClcbiAgICB8IFVuT3Aob3BfdW4sIHQpXG4gICAgfCBCaW5PcChvcF9iaW4sIHQsIHQpXG4gICAgfCBNYXRjaCh0LCBsaXN0KChVUGF0LnQsIHQpKSlcbiAgYW5kIHQgPSB7XG4gICAgLy8gaW52YXJpYW50OiBub25lbXB0eVxuICAgIGlkczogbGlzdChJZC50KSxcbiAgICB0ZXJtLFxuICB9O1xuXG4gIGxldCBib29sX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Jvb2wpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IEFuZCA9PiBcIiYmXCJcbiAgICB8IE9yID0+IFwifHxcIlxuICAgIH07XG4gIH07XG5cbiAgbGV0IGludF9vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9pbnQpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IFBsdXMgPT4gXCIrXCJcbiAgICB8IE1pbnVzID0+IFwiLVwiXG4gICAgfCBUaW1lcyA9PiBcIipcIlxuICAgIHwgUG93ZXIgPT4gXCIqKlwiXG4gICAgfCBEaXZpZGUgPT4gXCIvXCJcbiAgICB8IExlc3NUaGFuID0+IFwiPFwiXG4gICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCI8PVwiXG4gICAgfCBHcmVhdGVyVGhhbiA9PiBcIj5cIlxuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiPj1cIlxuICAgIHwgRXF1YWxzID0+IFwiPT1cIlxuICAgIHwgTm90RXF1YWxzID0+IFwiIT1cIlxuICAgIH07XG4gIH07XG5cbiAgbGV0IGZsb2F0X29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Zsb2F0KTogc3RyaW5nID0+IHtcbiAgICBzd2l0Y2ggKG9wKSB7XG4gICAgfCBQbHVzID0+IFwiKy5cIlxuICAgIHwgTWludXMgPT4gXCItLlwiXG4gICAgfCBUaW1lcyA9PiBcIiouXCJcbiAgICB8IFBvd2VyID0+IFwiKiouXCJcbiAgICB8IERpdmlkZSA9PiBcIi8uXCJcbiAgICB8IExlc3NUaGFuID0+IFwiPC5cIlxuICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiPD0uXCJcbiAgICB8IEdyZWF0ZXJUaGFuID0+IFwiPi5cIlxuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiPj0uXCJcbiAgICB8IEVxdWFscyA9PiBcIj09LlwiXG4gICAgfCBOb3RFcXVhbHMgPT4gXCIhPS5cIlxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0cmluZ19vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9zdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IENvbmNhdCA9PiBcIisrXCJcbiAgICB8IEVxdWFscyA9PiBcIiQ9PVwiXG4gICAgfTtcbiAgfTtcbn1cbmFuZCBVUGF0OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgVHJpdlxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IFR5cGVBbm4odCwgVVR5cC50KVxuICBhbmQgdCA9IHtcbiAgICBpZHM6IGxpc3QoSWQudCksXG4gICAgdGVybSxcbiAgfTtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgVHJpdlxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IFR5cGVBbm4odCwgVVR5cC50KVxuICBhbmQgdCA9IHtcbiAgICBpZHM6IGxpc3QoSWQudCksXG4gICAgdGVybSxcbiAgfTtcbn1cbmFuZCBVVHlwOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3QodClcbiAgICB8IFZhcihzdHJpbmcpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IFN1bShsaXN0KHZhcmlhbnQpKVxuICBhbmQgdmFyaWFudCA9XG4gICAgfCBWYXJpYW50KENvbnN0cnVjdG9yLnQsIGxpc3QoSWQudCksIG9wdGlvbih0KSlcbiAgICB8IEJhZEVudHJ5KHQpXG4gIGFuZCB0ID0ge1xuICAgIGlkczogbGlzdChJZC50KSxcbiAgICB0ZXJtLFxuICB9O1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IEJvb2xcbiAgICB8IFN0cmluZ1xuICAgIHwgTGlzdCh0KVxuICAgIHwgVmFyKHN0cmluZylcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IEFycm93KHQsIHQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgUGFyZW5zKHQpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgU3VtKGxpc3QodmFyaWFudCkpXG4gIGFuZCB2YXJpYW50ID1cbiAgICB8IFZhcmlhbnQoQ29uc3RydWN0b3IudCwgbGlzdChJZC50KSwgb3B0aW9uKHQpKVxuICAgIHwgQmFkRW50cnkodClcbiAgYW5kIHQgPSB7XG4gICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIHRlcm0sXG4gIH07XG59XG5hbmQgVVRQYXQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFZhcihUeXBWYXIudClcbiAgYW5kIHQgPSB7XG4gICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIHRlcm0sXG4gIH07XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVmFyKFR5cFZhci50KVxuICBhbmQgdCA9IHtcbiAgICBpZHM6IGxpc3QoSWQudCksXG4gICAgdGVybSxcbiAgfTtcbn1cbmFuZCBVUnVsOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFJ1bGVzKFVFeHAudCwgbGlzdCgoVVBhdC50LCBVRXhwLnQpKSlcbiAgYW5kIHQgPSB7XG4gICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIHRlcm0sXG4gIH07XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEhvbGUobGlzdChBbnkudCkpXG4gICAgfCBSdWxlcyhVRXhwLnQsIGxpc3QoKFVQYXQudCwgVUV4cC50KSkpXG4gIGFuZCB0ID0ge1xuICAgIGlkczogbGlzdChJZC50KSxcbiAgICB0ZXJtLFxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgaWZfY29uc2lzdGVuY3kgPVxuICB8IENvbnNpc3RlbnRJZlxuICB8IEluY29uc2lzdGVudElmO1xuXG5tb2R1bGUgcmVjIERIRXhwOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEVtcHR5SG9sZShNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQpXG4gICAgfCBOb25FbXB0eUhvbGUoRXJyU3RhdHVzLkhvbGVSZWFzb24udCwgTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCB0KVxuICAgIHwgRXhwYW5kaW5nS2V5d29yZChNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIEV4cGFuZGluZ0tleXdvcmQudClcbiAgICB8IEZyZWVWYXIoTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCBWYXIudClcbiAgICB8IEludmFsaWRUZXh0KE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudCwgc3RyaW5nKVxuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCBjYXNlKVxuICAgIHwgQ2xvc3VyZShbQG9wYXF1ZV0gQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gICAgfCBGaWx0ZXIoREhGaWx0ZXIudCwgdClcbiAgICB8IEJvdW5kVmFyKFZhci50KVxuICAgIHwgU2VxdWVuY2UodCwgdClcbiAgICB8IExldChESFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihWYXIudCwgVHlwLnQsIHQpXG4gICAgfCBGdW4oREhQYXQudCwgVHlwLnQsIHQsIG9wdGlvbihWYXIudCkpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgQXBCdWlsdGluKHN0cmluZywgdClcbiAgICB8IEJ1aWx0aW5GdW4oc3RyaW5nKVxuICAgIHwgVGVzdChLZXl3b3JkSUQudCwgdClcbiAgICB8IEJvb2xMaXQoYm9vbClcbiAgICB8IEludExpdChpbnQpXG4gICAgfCBGbG9hdExpdChmbG9hdClcbiAgICB8IFN0cmluZ0xpdChzdHJpbmcpXG4gICAgfCBCaW5Cb29sT3AoVGVybUJhc2UuVUV4cC5vcF9iaW5fYm9vbCwgdCwgdClcbiAgICB8IEJpbkludE9wKFRlcm1CYXNlLlVFeHAub3BfYmluX2ludCwgdCwgdClcbiAgICB8IEJpbkZsb2F0T3AoVGVybUJhc2UuVUV4cC5vcF9iaW5fZmxvYXQsIHQsIHQpXG4gICAgfCBCaW5TdHJpbmdPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9zdHJpbmcsIHQsIHQpXG4gICAgfCBMaXN0TGl0KE1ldGFWYXIudCwgTWV0YVZhckluc3QudCwgVHlwLnQsIGxpc3QodCkpXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBMaXN0Q29uY2F0KHQsIHQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgUHJqKHQsIGludClcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IENvbnNpc3RlbnRDYXNlKGNhc2UpXG4gICAgfCBDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICAgIHwgSW52YWxpZE9wZXJhdGlvbih0LCBJbnZhbGlkT3BlcmF0aW9uRXJyb3IudClcbiAgICB8IElmVGhlbkVsc2UoaWZfY29uc2lzdGVuY3ksIHQsIHQsIHQpIC8vIHVzZSBib29sIHRhZyB0byB0cmFjayBpZiBicmFuY2hlcyBhcmUgY29uc2lzdGVudFxuICBhbmQgY2FzZSA9XG4gICAgfCBDYXNlKHQsIGxpc3QocnVsZSksIGludClcbiAgYW5kIHJ1bGUgPVxuICAgIHwgUnVsZShESFBhdC50LCB0KTtcblxuICBsZXQgY29uc3RydWN0b3Jfc3RyaW5nOiB0ID0+IHN0cmluZztcblxuICBsZXQgbWtfdHVwbGU6IGxpc3QodCkgPT4gdDtcblxuICBsZXQgY2FzdDogKHQsIFR5cC50LCBUeXAudCkgPT4gdDtcblxuICBsZXQgYXBwbHlfY2FzdHM6ICh0LCBsaXN0KChUeXAudCwgVHlwLnQpKSkgPT4gdDtcbiAgbGV0IHN0cmlwX2Nhc3RzOiB0ID0+IHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIC8qIEhvbGUgdHlwZXMgKi9cbiAgICB8IEVtcHR5SG9sZShNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQpXG4gICAgfCBOb25FbXB0eUhvbGUoRXJyU3RhdHVzLkhvbGVSZWFzb24udCwgTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCB0KVxuICAgIHwgRXhwYW5kaW5nS2V5d29yZChNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIEV4cGFuZGluZ0tleXdvcmQudClcbiAgICB8IEZyZWVWYXIoTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCBWYXIudClcbiAgICB8IEludmFsaWRUZXh0KE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudCwgc3RyaW5nKVxuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCBjYXNlKVxuICAgIC8qIEdlbmVyYWxpemVkIGNsb3N1cmVzICovXG4gICAgfCBDbG9zdXJlKENsb3N1cmVFbnZpcm9ubWVudC50LCB0KVxuICAgIHwgRmlsdGVyKERIRmlsdGVyLnQsIHQpXG4gICAgLyogT3RoZXIgZXhwcmVzc2lvbnMgZm9ybXMgKi9cbiAgICB8IEJvdW5kVmFyKFZhci50KVxuICAgIHwgU2VxdWVuY2UodCwgdClcbiAgICB8IExldChESFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihWYXIudCwgVHlwLnQsIHQpXG4gICAgfCBGdW4oREhQYXQudCwgVHlwLnQsIHQsIG9wdGlvbihWYXIudCkpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgQXBCdWlsdGluKHN0cmluZywgdClcbiAgICB8IEJ1aWx0aW5GdW4oc3RyaW5nKVxuICAgIHwgVGVzdChLZXl3b3JkSUQudCwgdClcbiAgICB8IEJvb2xMaXQoYm9vbClcbiAgICB8IEludExpdChpbnQpXG4gICAgfCBGbG9hdExpdChmbG9hdClcbiAgICB8IFN0cmluZ0xpdChzdHJpbmcpXG4gICAgfCBCaW5Cb29sT3AoVGVybUJhc2UuVUV4cC5vcF9iaW5fYm9vbCwgdCwgdClcbiAgICB8IEJpbkludE9wKFRlcm1CYXNlLlVFeHAub3BfYmluX2ludCwgdCwgdClcbiAgICB8IEJpbkZsb2F0T3AoVGVybUJhc2UuVUV4cC5vcF9iaW5fZmxvYXQsIHQsIHQpXG4gICAgfCBCaW5TdHJpbmdPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9zdHJpbmcsIHQsIHQpXG4gICAgfCBMaXN0TGl0KE1ldGFWYXIudCwgTWV0YVZhckluc3QudCwgVHlwLnQsIGxpc3QodCkpXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBMaXN0Q29uY2F0KHQsIHQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgUHJqKHQsIGludClcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IENvbnNpc3RlbnRDYXNlKGNhc2UpXG4gICAgfCBDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICAgIHwgSW52YWxpZE9wZXJhdGlvbih0LCBJbnZhbGlkT3BlcmF0aW9uRXJyb3IudClcbiAgICB8IElmVGhlbkVsc2UoaWZfY29uc2lzdGVuY3ksIHQsIHQsIHQpXG4gIGFuZCBjYXNlID1cbiAgICB8IENhc2UodCwgbGlzdChydWxlKSwgaW50KVxuICBhbmQgcnVsZSA9XG4gICAgfCBSdWxlKERIUGF0LnQsIHQpO1xuXG4gIGxldCBjb25zdHJ1Y3Rvcl9zdHJpbmcgPSAoZDogdCk6IHN0cmluZyA9PlxuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgRW1wdHlIb2xlKF8sIF8pID0+IFwiRW1wdHlIb2xlXCJcbiAgICB8IE5vbkVtcHR5SG9sZShfLCBfLCBfLCBfKSA9PiBcIk5vbkVtcHR5SG9sZVwiXG4gICAgfCBFeHBhbmRpbmdLZXl3b3JkKF8sIF8sIF8pID0+IFwiRXhwYW5kaW5nS2V5d29yZFwiXG4gICAgfCBGcmVlVmFyKF8sIF8sIF8pID0+IFwiRnJlZVZhclwiXG4gICAgfCBJbnZhbGlkVGV4dChfKSA9PiBcIkludmFsaWRUZXh0XCJcbiAgICB8IEJvdW5kVmFyKF8pID0+IFwiQm91bmRWYXJcIlxuICAgIHwgU2VxdWVuY2UoXywgXykgPT4gXCJTZXF1ZW5jZVwiXG4gICAgfCBGaWx0ZXIoXywgXykgPT4gXCJGaWx0ZXJcIlxuICAgIHwgTGV0KF8sIF8sIF8pID0+IFwiTGV0XCJcbiAgICB8IEZpeEYoXywgXywgXykgPT4gXCJGaXhGXCJcbiAgICB8IEZ1bihfLCBfLCBfLCBfKSA9PiBcIkZ1blwiXG4gICAgfCBDbG9zdXJlKF8sIF8pID0+IFwiQ2xvc3VyZVwiXG4gICAgfCBBcChfLCBfKSA9PiBcIkFwXCJcbiAgICB8IEFwQnVpbHRpbihfLCBfKSA9PiBcIkFwQnVpbHRpblwiXG4gICAgfCBCdWlsdGluRnVuKF8pID0+IFwiQnVpbHRpbkZ1blwiXG4gICAgfCBUZXN0KF8pID0+IFwiVGVzdFwiXG4gICAgfCBCb29sTGl0KF8pID0+IFwiQm9vbExpdFwiXG4gICAgfCBJbnRMaXQoXykgPT4gXCJJbnRMaXRcIlxuICAgIHwgRmxvYXRMaXQoXykgPT4gXCJGbG9hdExpdFwiXG4gICAgfCBTdHJpbmdMaXQoXykgPT4gXCJTdHJpbmdMaXRcIlxuICAgIHwgQmluQm9vbE9wKF8sIF8sIF8pID0+IFwiQmluQm9vbE9wXCJcbiAgICB8IEJpbkludE9wKF8sIF8sIF8pID0+IFwiQmluSW50T3BcIlxuICAgIHwgQmluRmxvYXRPcChfLCBfLCBfKSA9PiBcIkJpbkZsb2F0T3BcIlxuICAgIHwgQmluU3RyaW5nT3AoXywgXywgXykgPT4gXCJCaW5TdHJpbmdPcFwiXG4gICAgfCBMaXN0TGl0KF8pID0+IFwiTGlzdExpdFwiXG4gICAgfCBDb25zKF8sIF8pID0+IFwiQ29uc1wiXG4gICAgfCBMaXN0Q29uY2F0KF8sIF8pID0+IFwiTGlzdENvbmNhdFwiXG4gICAgfCBUdXBsZShfKSA9PiBcIlR1cGxlXCJcbiAgICB8IFByaihfKSA9PiBcIlByalwiXG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBcIkNvbnN0cnVjdG9yXCJcbiAgICB8IENvbnNpc3RlbnRDYXNlKF8pID0+IFwiQ29uc2lzdGVudENhc2VcIlxuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXywgXywgXykgPT4gXCJJbmNvbnNpc3RlbnRCcmFuY2hlc1wiXG4gICAgfCBDYXN0KF8sIF8sIF8pID0+IFwiQ2FzdFwiXG4gICAgfCBGYWlsZWRDYXN0KF8sIF8sIF8pID0+IFwiRmFpbGVkQ2FzdFwiXG4gICAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pID0+IFwiSW52YWxpZE9wZXJhdGlvblwiXG4gICAgfCBJZlRoZW5FbHNlKF8sIF8sIF8sIF8pID0+IFwiSWZUaGVuRWxzZVwiXG4gICAgfTtcblxuICBsZXQgbWtfdHVwbGU6IGxpc3QodCkgPT4gdCA9XG4gICAgZnVuXG4gICAgfCBbXVxuICAgIHwgW19dID0+IGZhaWx3aXRoKFwibWtfdHVwbGU6IGV4cGVjdGVkIGF0IGxlYXN0IDIgZWxlbWVudHNcIilcbiAgICB8IHhzID0+IFR1cGxlKHhzKTtcblxuICBsZXQgY2FzdCA9IChkOiB0LCB0MTogVHlwLnQsIHQyOiBUeXAudCk6IHQgPT5cbiAgICBpZiAoVHlwLmVxKHQxLCB0MikgfHwgdDIgPT0gVW5rbm93bihTeW5Td2l0Y2gpKSB7XG4gICAgICBkO1xuICAgIH0gZWxzZSB7XG4gICAgICBDYXN0KGQsIHQxLCB0Mik7XG4gICAgfTtcblxuICBsZXQgYXBwbHlfY2FzdHMgPSAoZDogdCwgY2FzdHM6IGxpc3QoKFR5cC50LCBUeXAudCkpKTogdCA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChkLCAodHkxLCB0eTIpKSA9PiBjYXN0KGQsIHR5MSwgdHkyKSwgZCwgY2FzdHMpO1xuXG4gIGxldCByZWMgc3RyaXBfY2FzdHMgPVxuICAgIGZ1blxuICAgIHwgQ2xvc3VyZShlaSwgZCkgPT4gQ2xvc3VyZShlaSwgc3RyaXBfY2FzdHMoZCkpXG4gICAgfCBDYXN0KGQsIF8sIF8pID0+IHN0cmlwX2Nhc3RzKGQpXG4gICAgfCBGYWlsZWRDYXN0KGQsIF8sIF8pID0+IHN0cmlwX2Nhc3RzKGQpXG4gICAgfCBUdXBsZShkcykgPT4gVHVwbGUoZHMgfD4gTGlzdC5tYXAoc3RyaXBfY2FzdHMpKVxuICAgIHwgUHJqKGQsIG4pID0+IFByaihzdHJpcF9jYXN0cyhkKSwgbilcbiAgICB8IENvbnMoZDEsIGQyKSA9PiBDb25zKHN0cmlwX2Nhc3RzKGQxKSwgc3RyaXBfY2FzdHMoZDIpKVxuICAgIHwgTGlzdENvbmNhdChkMSwgZDIpID0+IExpc3RDb25jYXQoc3RyaXBfY2FzdHMoZDEpLCBzdHJpcF9jYXN0cyhkMikpXG4gICAgfCBMaXN0TGl0KGEsIGIsIGMsIGRzKSA9PiBMaXN0TGl0KGEsIGIsIGMsIExpc3QubWFwKHN0cmlwX2Nhc3RzLCBkcykpXG4gICAgfCBOb25FbXB0eUhvbGUoZXJyLCB1LCBpLCBkKSA9PiBOb25FbXB0eUhvbGUoZXJyLCB1LCBpLCBzdHJpcF9jYXN0cyhkKSlcbiAgICB8IFNlcXVlbmNlKGEsIGIpID0+IFNlcXVlbmNlKHN0cmlwX2Nhc3RzKGEpLCBzdHJpcF9jYXN0cyhiKSlcbiAgICB8IEZpbHRlcihmLCBiKSA9PiBGaWx0ZXIoREhGaWx0ZXIuc3RyaXBfY2FzdHMoZiksIHN0cmlwX2Nhc3RzKGIpKVxuICAgIHwgTGV0KGRwLCBiLCBjKSA9PiBMZXQoZHAsIHN0cmlwX2Nhc3RzKGIpLCBzdHJpcF9jYXN0cyhjKSlcbiAgICB8IEZpeEYoYSwgYiwgYykgPT4gRml4RihhLCBiLCBzdHJpcF9jYXN0cyhjKSlcbiAgICB8IEZ1bihhLCBiLCBjLCBkKSA9PiBGdW4oYSwgYiwgc3RyaXBfY2FzdHMoYyksIGQpXG4gICAgfCBBcChhLCBiKSA9PiBBcChzdHJpcF9jYXN0cyhhKSwgc3RyaXBfY2FzdHMoYikpXG4gICAgfCBUZXN0KGlkLCBhKSA9PiBUZXN0KGlkLCBzdHJpcF9jYXN0cyhhKSlcbiAgICB8IEFwQnVpbHRpbihmbiwgYXJncykgPT4gQXBCdWlsdGluKGZuLCBzdHJpcF9jYXN0cyhhcmdzKSlcbiAgICB8IEJ1aWx0aW5GdW4oZm4pID0+IEJ1aWx0aW5GdW4oZm4pXG4gICAgfCBCaW5Cb29sT3AoYSwgYiwgYykgPT4gQmluQm9vbE9wKGEsIHN0cmlwX2Nhc3RzKGIpLCBzdHJpcF9jYXN0cyhjKSlcbiAgICB8IEJpbkludE9wKGEsIGIsIGMpID0+IEJpbkludE9wKGEsIHN0cmlwX2Nhc3RzKGIpLCBzdHJpcF9jYXN0cyhjKSlcbiAgICB8IEJpbkZsb2F0T3AoYSwgYiwgYykgPT4gQmluRmxvYXRPcChhLCBzdHJpcF9jYXN0cyhiKSwgc3RyaXBfY2FzdHMoYykpXG4gICAgfCBCaW5TdHJpbmdPcChhLCBiLCBjKSA9PlxuICAgICAgQmluU3RyaW5nT3AoYSwgc3RyaXBfY2FzdHMoYiksIHN0cmlwX2Nhc3RzKGMpKVxuICAgIHwgQ29uc2lzdGVudENhc2UoQ2FzZShhLCBycywgYikpID0+XG4gICAgICBDb25zaXN0ZW50Q2FzZShcbiAgICAgICAgQ2FzZShzdHJpcF9jYXN0cyhhKSwgTGlzdC5tYXAoc3RyaXBfY2FzdHNfcnVsZSwgcnMpLCBiKSxcbiAgICAgIClcbiAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2Uoc2NydXQsIHJ1bGVzLCBuKSkgPT5cbiAgICAgIEluY29uc2lzdGVudEJyYW5jaGVzKFxuICAgICAgICB1LFxuICAgICAgICBpLFxuICAgICAgICBDYXNlKHN0cmlwX2Nhc3RzKHNjcnV0KSwgTGlzdC5tYXAoc3RyaXBfY2FzdHNfcnVsZSwgcnVsZXMpLCBuKSxcbiAgICAgIClcbiAgICB8IEVtcHR5SG9sZShfKSBhcyBkXG4gICAgfCBFeHBhbmRpbmdLZXl3b3JkKF8pIGFzIGRcbiAgICB8IEZyZWVWYXIoXykgYXMgZFxuICAgIHwgSW52YWxpZFRleHQoXykgYXMgZFxuICAgIHwgQm91bmRWYXIoXykgYXMgZFxuICAgIHwgQm9vbExpdChfKSBhcyBkXG4gICAgfCBJbnRMaXQoXykgYXMgZFxuICAgIHwgRmxvYXRMaXQoXykgYXMgZFxuICAgIHwgU3RyaW5nTGl0KF8pIGFzIGRcbiAgICB8IENvbnN0cnVjdG9yKF8pIGFzIGRcbiAgICB8IEludmFsaWRPcGVyYXRpb24oXykgYXMgZCA9PiBkXG4gICAgfCBJZlRoZW5FbHNlKGNvbnNpc3RlbnQsIGMsIGQxLCBkMikgPT5cbiAgICAgIElmVGhlbkVsc2UoXG4gICAgICAgIGNvbnNpc3RlbnQsXG4gICAgICAgIHN0cmlwX2Nhc3RzKGMpLFxuICAgICAgICBzdHJpcF9jYXN0cyhkMSksXG4gICAgICAgIHN0cmlwX2Nhc3RzKGQyKSxcbiAgICAgIClcbiAgYW5kIHN0cmlwX2Nhc3RzX3J1bGUgPSAoUnVsZShhLCBkKSkgPT4gUnVsZShhLCBzdHJpcF9jYXN0cyhkKSk7XG5cbiAgbGV0IHJlYyBmYXN0X2VxdWFsID0gKGQxOiB0LCBkMjogdCk6IGJvb2wgPT4ge1xuICAgIHN3aXRjaCAoZDEsIGQyKSB7XG4gICAgLyogUHJpbWl0aXZlIGZvcm1zOiByZWd1bGFyIHN0cnVjdHVyYWwgZXF1YWxpdHkgKi9cbiAgICB8IChCb3VuZFZhcihfKSwgXylcbiAgICAvKiBUT0RPOiBOb3Qgc3VyZSBpZiB0aGlzIGlzIHJpZ2h0Li4uICovXG4gICAgfCAoQm9vbExpdChfKSwgXylcbiAgICB8IChJbnRMaXQoXyksIF8pXG4gICAgfCAoRmxvYXRMaXQoXyksIF8pXG4gICAgfCAoQ29uc3RydWN0b3IoXyksIF8pID0+IGQxID09IGQyXG4gICAgfCAoU3RyaW5nTGl0KHMxKSwgU3RyaW5nTGl0KHMyKSkgPT4gU3RyaW5nLmVxdWFsKHMxLCBzMilcbiAgICB8IChTdHJpbmdMaXQoXyksIF8pID0+IGZhbHNlXG5cbiAgICAvKiBOb24taG9sZSBmb3JtczogcmVjdXJzZSAqL1xuICAgIHwgKFRlc3QoaWQxLCBkMSksIFRlc3QoaWQyLCBkMikpID0+IGlkMSA9PSBpZDIgJiYgZmFzdF9lcXVhbChkMSwgZDIpXG4gICAgfCAoU2VxdWVuY2UoZDExLCBkMjEpLCBTZXF1ZW5jZShkMTIsIGQyMikpID0+XG4gICAgICBmYXN0X2VxdWFsKGQxMSwgZDEyKSAmJiBmYXN0X2VxdWFsKGQyMSwgZDIyKVxuICAgIHwgKEZpbHRlcihmMSwgZDEpLCBGaWx0ZXIoZjIsIGQyKSkgPT5cbiAgICAgIERIRmlsdGVyLmZhc3RfZXF1YWwoZjEsIGYyKSAmJiBmYXN0X2VxdWFsKGQxLCBkMilcbiAgICB8IChMZXQoZHAxLCBkMTEsIGQyMSksIExldChkcDIsIGQxMiwgZDIyKSkgPT5cbiAgICAgIGRwMSA9PSBkcDIgJiYgZmFzdF9lcXVhbChkMTEsIGQxMikgJiYgZmFzdF9lcXVhbChkMjEsIGQyMilcbiAgICB8IChGaXhGKGYxLCB0eTEsIGQxKSwgRml4RihmMiwgdHkyLCBkMikpID0+XG4gICAgICBmMSA9PSBmMiAmJiB0eTEgPT0gdHkyICYmIGZhc3RfZXF1YWwoZDEsIGQyKVxuICAgIHwgKEZ1bihkcDEsIHR5MSwgZDEsIHMxKSwgRnVuKGRwMiwgdHkyLCBkMiwgczIpKSA9PlxuICAgICAgZHAxID09IGRwMiAmJiB0eTEgPT0gdHkyICYmIGZhc3RfZXF1YWwoZDEsIGQyKSAmJiBzMSA9PSBzMlxuICAgIHwgKEFwKGQxMSwgZDIxKSwgQXAoZDEyLCBkMjIpKVxuICAgIHwgKENvbnMoZDExLCBkMjEpLCBDb25zKGQxMiwgZDIyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZDExLCBkMTIpICYmIGZhc3RfZXF1YWwoZDIxLCBkMjIpXG4gICAgfCAoTGlzdENvbmNhdChkMTEsIGQyMSksIExpc3RDb25jYXQoZDEyLCBkMjIpKSA9PlxuICAgICAgZmFzdF9lcXVhbChkMTEsIGQxMikgJiYgZmFzdF9lcXVhbChkMjEsIGQyMilcbiAgICB8IChUdXBsZShkczEpLCBUdXBsZShkczIpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoZHMxKSA9PSBMaXN0Lmxlbmd0aChkczIpXG4gICAgICAmJiBMaXN0LmZvcl9hbGwyKGZhc3RfZXF1YWwsIGRzMSwgZHMyKVxuICAgIHwgKFByaihkMSwgbiksIFByaihkMiwgbSkpID0+IG4gPT0gbSAmJiBmYXN0X2VxdWFsKGQxLCBkMilcbiAgICB8IChBcEJ1aWx0aW4oZjEsIGQxKSwgQXBCdWlsdGluKGYyLCBkMikpID0+IGYxID09IGYyICYmIGQxID09IGQyXG4gICAgfCAoQnVpbHRpbkZ1bihmMSksIEJ1aWx0aW5GdW4oZjIpKSA9PiBmMSA9PSBmMlxuICAgIHwgKExpc3RMaXQoXywgXywgXywgZHMxKSwgTGlzdExpdChfLCBfLCBfLCBkczIpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoZHMxKSA9PSBMaXN0Lmxlbmd0aChkczIpXG4gICAgICAmJiBMaXN0LmZvcl9hbGwyKGZhc3RfZXF1YWwsIGRzMSwgZHMyKVxuICAgIHwgKEJpbkJvb2xPcChvcDEsIGQxMSwgZDIxKSwgQmluQm9vbE9wKG9wMiwgZDEyLCBkMjIpKSA9PlxuICAgICAgb3AxID09IG9wMiAmJiBmYXN0X2VxdWFsKGQxMSwgZDEyKSAmJiBmYXN0X2VxdWFsKGQyMSwgZDIyKVxuICAgIHwgKEJpbkludE9wKG9wMSwgZDExLCBkMjEpLCBCaW5JbnRPcChvcDIsIGQxMiwgZDIyKSkgPT5cbiAgICAgIG9wMSA9PSBvcDIgJiYgZmFzdF9lcXVhbChkMTEsIGQxMikgJiYgZmFzdF9lcXVhbChkMjEsIGQyMilcbiAgICB8IChCaW5GbG9hdE9wKG9wMSwgZDExLCBkMjEpLCBCaW5GbG9hdE9wKG9wMiwgZDEyLCBkMjIpKSA9PlxuICAgICAgb3AxID09IG9wMiAmJiBmYXN0X2VxdWFsKGQxMSwgZDEyKSAmJiBmYXN0X2VxdWFsKGQyMSwgZDIyKVxuICAgIHwgKEJpblN0cmluZ09wKG9wMSwgZDExLCBkMjEpLCBCaW5TdHJpbmdPcChvcDIsIGQxMiwgZDIyKSkgPT5cbiAgICAgIG9wMSA9PSBvcDIgJiYgZmFzdF9lcXVhbChkMTEsIGQxMikgJiYgZmFzdF9lcXVhbChkMjEsIGQyMilcbiAgICB8IChDYXN0KGQxLCB0eTExLCB0eTIxKSwgQ2FzdChkMiwgdHkxMiwgdHkyMikpXG4gICAgfCAoRmFpbGVkQ2FzdChkMSwgdHkxMSwgdHkyMSksIEZhaWxlZENhc3QoZDIsIHR5MTIsIHR5MjIpKSA9PlxuICAgICAgZmFzdF9lcXVhbChkMSwgZDIpICYmIHR5MTEgPT0gdHkxMiAmJiB0eTIxID09IHR5MjJcbiAgICB8IChJbnZhbGlkT3BlcmF0aW9uKGQxLCByZWFzb24xKSwgSW52YWxpZE9wZXJhdGlvbihkMiwgcmVhc29uMikpID0+XG4gICAgICBmYXN0X2VxdWFsKGQxLCBkMikgJiYgcmVhc29uMSA9PSByZWFzb24yXG4gICAgfCAoQ29uc2lzdGVudENhc2UoY2FzZTEpLCBDb25zaXN0ZW50Q2FzZShjYXNlMikpID0+XG4gICAgICBmYXN0X2VxdWFsX2Nhc2UoY2FzZTEsIGNhc2UyKVxuICAgIHwgKElmVGhlbkVsc2UoYzEsIGQxMSwgZDEyLCBkMTMpLCBJZlRoZW5FbHNlKGMyLCBkMjEsIGQyMiwgZDIzKSkgPT5cbiAgICAgIGMxID09IGMyXG4gICAgICAmJiBmYXN0X2VxdWFsKGQxMSwgZDIxKVxuICAgICAgJiYgZmFzdF9lcXVhbChkMTIsIGQyMilcbiAgICAgICYmIGZhc3RfZXF1YWwoZDEzLCBkMjMpXG4gICAgLyogV2UgY2FuIGdyb3VwIHRoZXNlIGFsbCBpbnRvIGEgYF8gPT4gZmFsc2VgIGNsYXVzZTsgc2VwYXJhdGluZ1xuICAgICAgIHRoZXNlIHNvIHRoYXQgd2UgZ2V0IGV4aGF1c3RpdmVuZXNzIGNoZWNraW5nLiAqL1xuICAgIHwgKFNlcXVlbmNlKF8pLCBfKVxuICAgIHwgKEZpbHRlcihfKSwgXylcbiAgICB8IChMZXQoXyksIF8pXG4gICAgfCAoRml4RihfKSwgXylcbiAgICB8IChGdW4oXyksIF8pXG4gICAgfCAoVGVzdChfKSwgXylcbiAgICB8IChBcChfKSwgXylcbiAgICB8IChBcEJ1aWx0aW4oXyksIF8pXG4gICAgfCAoQnVpbHRpbkZ1bihfKSwgXylcbiAgICB8IChDb25zKF8pLCBfKVxuICAgIHwgKExpc3RDb25jYXQoXyksIF8pXG4gICAgfCAoTGlzdExpdChfKSwgXylcbiAgICB8IChUdXBsZShfKSwgXylcbiAgICB8IChQcmooXyksIF8pXG4gICAgfCAoQmluQm9vbE9wKF8pLCBfKVxuICAgIHwgKEJpbkludE9wKF8pLCBfKVxuICAgIHwgKEJpbkZsb2F0T3AoXyksIF8pXG4gICAgfCAoQmluU3RyaW5nT3AoXyksIF8pXG4gICAgfCAoQ2FzdChfKSwgXylcbiAgICB8IChGYWlsZWRDYXN0KF8pLCBfKVxuICAgIHwgKEludmFsaWRPcGVyYXRpb24oXyksIF8pXG4gICAgfCAoSWZUaGVuRWxzZShfKSwgXylcbiAgICB8IChDb25zaXN0ZW50Q2FzZShfKSwgXykgPT4gZmFsc2VcblxuICAgIC8qIEhvbGUgZm9ybXM6IHdoZW4gY2hlY2tpbmcgZW52aXJvbm1lbnRzLCBvbmx5IGNoZWNrIHRoYXRcbiAgICAgICBlbnZpcm9ubWVudCBJRCdzIGFyZSBlcXVhbCwgZG9uJ3QgY2hlY2sgc3RydWN0dXJhbCBlcXVhbGl0eS5cblxuICAgICAgIChUaGlzIHJlc29sdmVzIGEgcGVyZm9ybWFuY2UgaXNzdWUgd2l0aCBtYW55IG5lc3RlZCBob2xlcy4pICovXG4gICAgfCAoRW1wdHlIb2xlKHUxLCBpMSksIEVtcHR5SG9sZSh1MiwgaTIpKSA9PiB1MSA9PSB1MiAmJiBpMSA9PSBpMlxuICAgIHwgKE5vbkVtcHR5SG9sZShyZWFzb24xLCB1MSwgaTEsIGQxKSwgTm9uRW1wdHlIb2xlKHJlYXNvbjIsIHUyLCBpMiwgZDIpKSA9PlxuICAgICAgcmVhc29uMSA9PSByZWFzb24yICYmIHUxID09IHUyICYmIGkxID09IGkyICYmIGZhc3RfZXF1YWwoZDEsIGQyKVxuICAgIHwgKEV4cGFuZGluZ0tleXdvcmQodTEsIGkxLCBrdzEpLCBFeHBhbmRpbmdLZXl3b3JkKHUyLCBpMiwga3cyKSkgPT5cbiAgICAgIHUxID09IHUyICYmIGkxID09IGkyICYmIGt3MSA9PSBrdzJcbiAgICB8IChGcmVlVmFyKHUxLCBpMSwgeDEpLCBGcmVlVmFyKHUyLCBpMiwgeDIpKSA9PlxuICAgICAgdTEgPT0gdTIgJiYgaTEgPT0gaTIgJiYgeDEgPT0geDJcbiAgICB8IChJbnZhbGlkVGV4dCh1MSwgaTEsIHRleHQxKSwgSW52YWxpZFRleHQodTIsIGkyLCB0ZXh0MikpID0+XG4gICAgICB1MSA9PSB1MiAmJiBpMSA9PSBpMiAmJiB0ZXh0MSA9PSB0ZXh0MlxuICAgIHwgKENsb3N1cmUoc2lnbWExLCBkMSksIENsb3N1cmUoc2lnbWEyLCBkMikpID0+XG4gICAgICBDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwoc2lnbWExLCBzaWdtYTIpICYmIGZhc3RfZXF1YWwoZDEsIGQyKVxuICAgIHwgKFxuICAgICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1MSwgaTEsIGNhc2UxKSxcbiAgICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXModTIsIGkyLCBjYXNlMiksXG4gICAgICApID0+XG4gICAgICB1MSA9PSB1MiAmJiBpMSA9PSBpMiAmJiBmYXN0X2VxdWFsX2Nhc2UoY2FzZTEsIGNhc2UyKVxuICAgIHwgKEVtcHR5SG9sZShfKSwgXylcbiAgICB8IChOb25FbXB0eUhvbGUoXyksIF8pXG4gICAgfCAoRXhwYW5kaW5nS2V5d29yZChfKSwgXylcbiAgICB8IChGcmVlVmFyKF8pLCBfKVxuICAgIHwgKEludmFsaWRUZXh0KF8pLCBfKVxuICAgIHwgKENsb3N1cmUoXyksIF8pXG4gICAgfCAoSW5jb25zaXN0ZW50QnJhbmNoZXMoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfVxuICBhbmQgZmFzdF9lcXVhbF9jYXNlID0gKENhc2UoZDEsIHJ1bGVzMSwgaTEpLCBDYXNlKGQyLCBydWxlczIsIGkyKSkgPT4ge1xuICAgIGZhc3RfZXF1YWwoZDEsIGQyKVxuICAgICYmIExpc3QubGVuZ3RoKHJ1bGVzMSkgPT0gTGlzdC5sZW5ndGgocnVsZXMyKVxuICAgICYmIExpc3QuZm9yX2FsbDIoXG4gICAgICAgICAoUnVsZShkcDEsIGQxKSwgUnVsZShkcDIsIGQyKSkgPT5cbiAgICAgICAgICAgZHAxID09IGRwMiAmJiBmYXN0X2VxdWFsKGQxLCBkMiksXG4gICAgICAgICBydWxlczEsXG4gICAgICAgICBydWxlczIsXG4gICAgICAgKVxuICAgICYmIGkxID09IGkyO1xuICB9O1xufVxuXG5hbmQgRW52aXJvbm1lbnQ6IHtcbiAgaW5jbHVkZVxuICAgICAobW9kdWxlIHR5cGUgb2YgVmFyQnN0TWFwLk9yZGVyZWQpIHdpdGhcbiAgICAgIHR5cGUgdF8oJ2EpID0gVmFyQnN0TWFwLk9yZGVyZWQudF8oJ2EpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gdF8oREhFeHAudCk7XG59ID0ge1xuICBpbmNsdWRlIFZhckJzdE1hcC5PcmRlcmVkO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gdF8oREhFeHAudCk7XG59XG5cbmFuZCBDbG9zdXJlRW52aXJvbm1lbnQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQ7XG5cbiAgbGV0IHdyYXA6IChFbnZpcm9ubWVudElkLnQsIEVudmlyb25tZW50LnQpID0+IHQ7XG5cbiAgbGV0IGlkX29mOiB0ID0+IEVudmlyb25tZW50SWQudDtcbiAgbGV0IG1hcF9vZjogdCA9PiBFbnZpcm9ubWVudC50O1xuXG4gIGxldCB0b19saXN0OiB0ID0+IGxpc3QoKFZhci50LCBESEV4cC50KSk7XG5cbiAgbGV0IG9mX2Vudmlyb25tZW50OiBFbnZpcm9ubWVudC50ID0+IHQ7XG5cbiAgbGV0IGlkX2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcblxuICBsZXQgZW1wdHk6IHQ7XG4gIGxldCBpc19lbXB0eTogdCA9PiBib29sO1xuICBsZXQgbGVuZ3RoOiB0ID0+IGludDtcblxuICBsZXQgbG9va3VwOiAodCwgVmFyLnQpID0+IG9wdGlvbihESEV4cC50KTtcbiAgbGV0IGNvbnRhaW5zOiAodCwgVmFyLnQpID0+IGJvb2w7XG4gIGxldCB1cGRhdGU6IChFbnZpcm9ubWVudC50ID0+IEVudmlyb25tZW50LnQsIHQpID0+IHQ7XG4gIGxldCB1cGRhdGVfa2VlcF9pZDogKEVudmlyb25tZW50LnQgPT4gRW52aXJvbm1lbnQudCwgdCkgPT4gdDtcbiAgbGV0IGV4dGVuZDogKHQsIChWYXIudCwgREhFeHAudCkpID0+IHQ7XG4gIGxldCBleHRlbmRfa2VlcF9pZDogKHQsIChWYXIudCwgREhFeHAudCkpID0+IHQ7XG4gIGxldCB1bmlvbjogKHQsIHQpID0+IHQ7XG4gIGxldCB1bmlvbl9rZWVwX2lkOiAodCwgdCkgPT4gdDtcbiAgbGV0IG1hcDogKCgoVmFyLnQsIERIRXhwLnQpKSA9PiBESEV4cC50LCB0KSA9PiB0O1xuICBsZXQgbWFwX2tlZXBfaWQ6ICgoKFZhci50LCBESEV4cC50KSkgPT4gREhFeHAudCwgdCkgPT4gdDtcbiAgbGV0IGZpbHRlcjogKCgoVmFyLnQsIERIRXhwLnQpKSA9PiBib29sLCB0KSA9PiB0O1xuICBsZXQgZmlsdGVyX2tlZXBfaWQ6ICgoKFZhci50LCBESEV4cC50KSkgPT4gYm9vbCwgdCkgPT4gdDtcbiAgbGV0IGZvbGQ6ICgoKFZhci50LCBESEV4cC50KSwgJ2IpID0+ICdiLCAnYiwgdCkgPT4gJ2I7XG5cbiAgbGV0IHdpdGhvdXRfa2V5czogKGxpc3QoVmFyLnQpLCB0KSA9PiB0O1xuXG4gIGxldCBwbGFjZWhvbGRlcjogdDtcbn0gPSB7XG4gIG1vZHVsZSBJbm5lcjoge1xuICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgICB0eXBlIHQ7XG5cbiAgICBsZXQgd3JhcDogKEVudmlyb25tZW50SWQudCwgRW52aXJvbm1lbnQudCkgPT4gdDtcblxuICAgIGxldCBpZF9vZjogdCA9PiBFbnZpcm9ubWVudElkLnQ7XG4gICAgbGV0IG1hcF9vZjogdCA9PiBFbnZpcm9ubWVudC50O1xuICB9ID0ge1xuICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgICB0eXBlIHQgPSAoRW52aXJvbm1lbnRJZC50LCBFbnZpcm9ubWVudC50KTtcblxuICAgIGxldCB3cmFwID0gKGVpLCBtYXApOiB0ID0+IChlaSwgbWFwKTtcblxuICAgIGxldCBpZF9vZiA9ICgoZWksIF8pKSA9PiBlaTtcbiAgICBsZXQgbWFwX29mID0gKChfLCBtYXApKSA9PiBtYXA7XG4gICAgbGV0IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPVxuICAgICAgU3RydWN0dXJlU2hhcmVTZXhwLnN0cnVjdHVyZV9zaGFyZV9oZXJlKGlkX29mLCBzZXhwX29mX3QsIHRfb2Zfc2V4cCk7XG4gIH07XG4gIGluY2x1ZGUgSW5uZXI7XG5cbiAgbGV0IHRvX2xpc3QgPSBlbnYgPT4gZW52IHw+IG1hcF9vZiB8PiBFbnZpcm9ubWVudC50b19saXN0bztcblxuICBsZXQgb2ZfZW52aXJvbm1lbnQgPSBtYXAgPT4ge1xuICAgIGxldCBlaSA9IElkLm1rKCk7XG4gICAgd3JhcChlaSwgbWFwKTtcbiAgfTtcblxuICAvKiBFcXVhbHMgb25seSBuZWVkcyB0byBjaGVjayBlbnZpcm9ubWVudCBpZCdzIChmYXN0ZXIgdGhhbiBzdHJ1Y3R1cmFsIGVxdWFsaXR5XG4gICAqIGNoZWNraW5nLikgKi9cbiAgbGV0IGlkX2VxdWFsID0gKGVudjEsIGVudjIpID0+IGlkX29mKGVudjEpID09IGlkX29mKGVudjIpO1xuXG4gIGxldCBlbXB0eSA9IEVudmlyb25tZW50LmVtcHR5IHw+IG9mX2Vudmlyb25tZW50O1xuXG4gIGxldCBpc19lbXB0eSA9IGVudiA9PiBlbnYgfD4gbWFwX29mIHw+IEVudmlyb25tZW50LmlzX2VtcHR5O1xuXG4gIGxldCBsZW5ndGggPSBlbnYgPT4gRW52aXJvbm1lbnQubGVuZ3RoKG1hcF9vZihlbnYpKTtcblxuICBsZXQgbG9va3VwID0gKGVudiwgeCkgPT5cbiAgICBlbnYgfD4gbWFwX29mIHw+IChtYXAgPT4gRW52aXJvbm1lbnQubG9va3VwKG1hcCwgeCkpO1xuXG4gIGxldCBjb250YWlucyA9IChlbnYsIHgpID0+XG4gICAgZW52IHw+IG1hcF9vZiB8PiAobWFwID0+IEVudmlyb25tZW50LmNvbnRhaW5zKG1hcCwgeCkpO1xuXG4gIGxldCB1cGRhdGUgPSAoZiwgZW52KSA9PiBlbnYgfD4gbWFwX29mIHw+IGYgfD4gb2ZfZW52aXJvbm1lbnQ7XG5cbiAgbGV0IHVwZGF0ZV9rZWVwX2lkID0gKGYsIGVudikgPT4gZW52IHw+IG1hcF9vZiB8PiBmIHw+IHdyYXAoZW52IHw+IGlkX29mKTtcblxuICBsZXQgZXh0ZW5kID0gKGVudiwgeHIpID0+XG4gICAgZW52IHw+IHVwZGF0ZShtYXAgPT4gRW52aXJvbm1lbnQuZXh0ZW5kKG1hcCwgeHIpKTtcblxuICBsZXQgZXh0ZW5kX2tlZXBfaWQgPSAoZW52LCB4cikgPT5cbiAgICBlbnYgfD4gdXBkYXRlX2tlZXBfaWQobWFwID0+IEVudmlyb25tZW50LmV4dGVuZChtYXAsIHhyKSk7XG5cbiAgbGV0IHVuaW9uID0gKGVudjEsIGVudjIpID0+XG4gICAgZW52MiB8PiB1cGRhdGUobWFwMiA9PiBFbnZpcm9ubWVudC51bmlvbihlbnYxIHw+IG1hcF9vZiwgbWFwMikpO1xuXG4gIGxldCB1bmlvbl9rZWVwX2lkID0gKGVudjEsIGVudjIpID0+XG4gICAgZW52MiB8PiB1cGRhdGVfa2VlcF9pZChtYXAyID0+IEVudmlyb25tZW50LnVuaW9uKGVudjEgfD4gbWFwX29mLCBtYXAyKSk7XG5cbiAgbGV0IG1hcCA9IChmLCBlbnYpID0+IGVudiB8PiB1cGRhdGUoRW52aXJvbm1lbnQubWFwbyhmKSk7XG5cbiAgbGV0IG1hcF9rZWVwX2lkID0gKGYsIGVudikgPT4gZW52IHw+IHVwZGF0ZV9rZWVwX2lkKEVudmlyb25tZW50Lm1hcG8oZikpO1xuXG4gIGxldCBmaWx0ZXIgPSAoZiwgZW52KSA9PiBlbnYgfD4gdXBkYXRlKEVudmlyb25tZW50LmZpbHRlcm8oZikpO1xuXG4gIGxldCBmaWx0ZXJfa2VlcF9pZCA9IChmLCBlbnYpID0+XG4gICAgZW52IHw+IHVwZGF0ZV9rZWVwX2lkKEVudmlyb25tZW50LmZpbHRlcm8oZikpO1xuXG4gIGxldCBmb2xkID0gKGYsIGluaXQsIGVudikgPT4gZW52IHw+IG1hcF9vZiB8PiBFbnZpcm9ubWVudC5mb2xkbyhmLCBpbml0KTtcblxuICBsZXQgcGxhY2Vob2xkZXIgPSB3cmFwKEVudmlyb25tZW50SWQuaW52YWxpZCwgRW52aXJvbm1lbnQuZW1wdHkpO1xuXG4gIGxldCB3aXRob3V0X2tleXMgPSBrZXlzID0+IHVwZGF0ZShFbnZpcm9ubWVudC53aXRob3V0X2tleXMoa2V5cykpO1xufVxuXG5hbmQgRmlsdGVyOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHBhdDogREhFeHAudCxcbiAgICBhY3Q6IEZpbHRlckFjdGlvbi50LFxuICB9O1xuXG4gIGxldCBtazogKERIRXhwLnQsIEZpbHRlckFjdGlvbi50KSA9PiB0O1xuXG4gIGxldCBtYXA6IChESEV4cC50ID0+IERIRXhwLnQsIHQpID0+IHQ7XG5cbiAgbGV0IHN0cmlwX2Nhc3RzOiB0ID0+IHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgcGF0OiBESEV4cC50LFxuICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gIH07XG5cbiAgbGV0IG1rID0gKHBhdDogREhFeHAudCwgYWN0OiBGaWx0ZXJBY3Rpb24udCk6IHQgPT4ge3BhdCwgYWN0fTtcblxuICBsZXQgbWFwID0gKGY6IERIRXhwLnQgPT4gREhFeHAudCwgZmlsdGVyOiB0KTogdCA9PiB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBhdDogZihmaWx0ZXIucGF0KSxcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9IChmMTogdCwgZjI6IHQpOiBib29sID0+IHtcbiAgICBESEV4cC5mYXN0X2VxdWFsKGYxLnBhdCwgZjIucGF0KSAmJiBmMS5hY3QgPT0gZjIuYWN0O1xuICB9O1xuXG4gIGxldCBzdHJpcF9jYXN0cyA9IChmOiB0KTogdCA9PiB7Li4uZiwgcGF0OiBmLnBhdCB8PiBESEV4cC5zdHJpcF9jYXN0c307XG59XG5cbmFuZCBESEZpbHRlcjoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBGaWx0ZXIoRmlsdGVyLnQpXG4gICAgfCBSZXNpZHVlKGludCwgRmlsdGVyQWN0aW9uLnQpO1xuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG4gIGxldCBzdHJpcF9jYXN0czogdCA9PiB0O1xuICBsZXQgbWFwOiAoREhFeHAudCA9PiBESEV4cC50LCB0KSA9PiB0O1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRmlsdGVyKEZpbHRlci50KVxuICAgIHwgUmVzaWR1ZShpbnQsIEZpbHRlckFjdGlvbi50KTtcbiAgbGV0IGZhc3RfZXF1YWwgPSAoZjE6IHQsIGYyOiB0KSA9PiB7XG4gICAgc3dpdGNoIChmMSwgZjIpIHtcbiAgICB8IChGaWx0ZXIoZmx0MSksIEZpbHRlcihmbHQyKSkgPT4gRmlsdGVyLmZhc3RfZXF1YWwoZmx0MSwgZmx0MilcbiAgICB8IChSZXNpZHVlKGlkeDEsIGFjdDEpLCBSZXNpZHVlKGlkeDIsIGFjdDIpKSA9PlxuICAgICAgaWR4MSA9PSBpZHgyICYmIGFjdDEgPT0gYWN0MlxuICAgIHwgXyA9PiBmYWxzZVxuICAgIH07XG4gIH07XG4gIGxldCBzdHJpcF9jYXN0cyA9IGYgPT4ge1xuICAgIHN3aXRjaCAoZikge1xuICAgIHwgRmlsdGVyKGZsdCkgPT4gRmlsdGVyKEZpbHRlci5zdHJpcF9jYXN0cyhmbHQpKVxuICAgIHwgUmVzaWR1ZShpZHgsIGFjdCkgPT4gUmVzaWR1ZShpZHgsIGFjdClcbiAgICB9O1xuICB9O1xuICBsZXQgbWFwID0gKG1hcHBlciwgZmlsdGVyKSA9PiB7XG4gICAgc3dpdGNoIChmaWx0ZXIpIHtcbiAgICB8IEZpbHRlcihmbHQpID0+IEZpbHRlcihGaWx0ZXIubWFwKG1hcHBlciwgZmx0KSlcbiAgICB8IFJlc2lkdWUoaWR4LCBhY3QpID0+IFJlc2lkdWUoaWR4LCBhY3QpXG4gICAgfTtcbiAgfTtcbn1cblxuYW5kIEZpbHRlckVudmlyb25tZW50OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdChGaWx0ZXIudCk7XG5cbiAgbGV0IGV4dGVuZHM6IChGaWx0ZXIudCwgdCkgPT4gdDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdChGaWx0ZXIudCk7XG5cbiAgbGV0IGV4dGVuZHMgPSAoZmx0LCBlbnYpID0+IFtmbHQsIC4uLmVudl07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBPdXRPZkZ1ZWxcbiAgfCBTdGVwRG9lc05vdE1hdGNoXG4gIHwgRnJlZUludmFsaWRWYXIoVmFyLnQpXG4gIHwgQmFkUGF0dGVybk1hdGNoXG4gIHwgQ2FzdEJWSG9sZUdyb3VuZChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEZ1bihESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEJvb2xMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRJbnRMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRGbG9hdExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZExpc3RMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRTdHJpbmdMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRUdXBsZShESEV4cC50KVxuICB8IEludmFsaWRCdWlsdGluKHN0cmluZylcbiAgfCBCYWRCdWlsdGluQXAoc3RyaW5nLCBsaXN0KERIRXhwLnQpKVxuICB8IEludmFsaWRQcm9qZWN0aW9uKGludCk7XG5cbmV4Y2VwdGlvbiBFeGNlcHRpb24odCk7XG4iLCJvcGVuIERIRXhwO1xuXG4vKlxuICAgQnVpbHQtaW4gZnVuY3Rpb25zIGZvciBIYXplbC5cblxuICAgVG8gYWRkIGEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgY29uc3RhbnQsIHdyaXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0aGVcbiAgIGBQZXJ2YXNpdmVzLkltcGxzYCBtb2R1bGUgYmVsb3cgYW5kIGFkZCBpdCB0byBgYnVpbHRpbnNgLlxuXG4gICBTZWUgdGhlIGV4aXN0aW5nIG9uZXMgZm9yIHJlZmVyZW5jZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJ1aWx0aW4gPVxuICB8IENvbnN0KFR5cC50LCBESEV4cC50KVxuICB8IEZuKFR5cC50LCBUeXAudCwgREhFeHAudCA9PiBESEV4cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gVmFyTWFwLnRfKGJ1aWx0aW4pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZvcm1zID0gVmFyTWFwLnRfKERIRXhwLnQgPT4gREhFeHAudCk7XG5cbnR5cGUgcmVzdWx0ID0gUmVzdWx0LnQoREhFeHAudCwgRXZhbHVhdG9yRXJyb3IudCk7XG5cbmxldCBjb25zdCA9IChuYW1lOiBWYXIudCwgdHlwOiBUeXAudCwgdjogREhFeHAudCwgYnVpbHRpbnM6IHQpOiB0ID0+XG4gIFZhck1hcC5leHRlbmQoYnVpbHRpbnMsIChuYW1lLCBDb25zdCh0eXAsIHYpKSk7XG5sZXQgZm4gPVxuICAgIChuYW1lOiBWYXIudCwgdDE6IFR5cC50LCB0MjogVHlwLnQsIGltcGw6IERIRXhwLnQgPT4gREhFeHAudCwgYnVpbHRpbnM6IHQpXG4gICAgOiB0ID0+XG4gIFZhck1hcC5leHRlbmQoYnVpbHRpbnMsIChuYW1lLCBGbih0MSwgdDIsIGltcGwpKSk7XG5cbm1vZHVsZSBQZXJ2YXNpdmVzID0ge1xuICBtb2R1bGUgSW1wbHMgPSB7XG4gICAgLyogY29uc3RhbnRzICovXG4gICAgbGV0IGluZmluaXR5ID0gREhFeHAuRmxvYXRMaXQoRmxvYXQuaW5maW5pdHkpO1xuICAgIGxldCBuZWdfaW5maW5pdHkgPSBESEV4cC5GbG9hdExpdChGbG9hdC5uZWdfaW5maW5pdHkpO1xuICAgIGxldCBuYW4gPSBESEV4cC5GbG9hdExpdChGbG9hdC5uYW4pO1xuICAgIGxldCBlcHNpbG9uX2Zsb2F0ID0gREhFeHAuRmxvYXRMaXQoZXBzaWxvbl9mbG9hdCk7XG4gICAgbGV0IHBpID0gREhFeHAuRmxvYXRMaXQoRmxvYXQucGkpO1xuICAgIGxldCBtYXhfaW50ID0gREhFeHAuSW50TGl0KEludC5tYXhfaW50KTtcbiAgICBsZXQgbWluX2ludCA9IERIRXhwLkludExpdChJbnQubWluX2ludCk7XG5cbiAgICBsZXQgdW5hcnkgPSAoZjogREhFeHAudCA9PiByZXN1bHQsIHI6IERIRXhwLnQpID0+XG4gICAgICBzd2l0Y2ggKGYocikpIHtcbiAgICAgIHwgT2socicpID0+IHInXG4gICAgICB8IEVycm9yKGUpID0+IEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihlKSB8PiByYWlzZVxuICAgICAgfTtcblxuICAgIGxldCBpc19maW5pdGUgPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IEZsb2F0TGl0KGYpID0+IE9rKEJvb2xMaXQoRmxvYXQuaXNfZmluaXRlKGYpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgaXNfaW5maW5pdGUgPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IEZsb2F0TGl0KGYpID0+IE9rKEJvb2xMaXQoRmxvYXQuaXNfaW5maW5pdGUoZikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBpc19uYW4gPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IEZsb2F0TGl0KGYpID0+IE9rKEJvb2xMaXQoRmxvYXQuaXNfbmFuKGYpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX29mX2ludCA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgSW50TGl0KG4pID0+IE9rKFN0cmluZ0xpdChzdHJpbmdfb2ZfaW50KG4pKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkKSksXG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9mbG9hdCA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgRmxvYXRMaXQoZikgPT4gT2soU3RyaW5nTGl0KHN0cmluZ19vZl9mbG9hdChmKSkpXG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRGbG9hdExpdChkKSksXG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9ib29sID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBCb29sTGl0KGIpID0+IE9rKFN0cmluZ0xpdChzdHJpbmdfb2ZfYm9vbChiKSkpXG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRCb29sTGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgaW50X29mX2Zsb2F0ID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBGbG9hdExpdChmKSA9PiBPayhJbnRMaXQoaW50X29mX2Zsb2F0KGYpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb2ZfaW50ID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBJbnRMaXQobikgPT4gT2soRmxvYXRMaXQoZmxvYXRfb2ZfaW50KG4pKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkKSksXG4gICAgICApO1xuXG4gICAgbGV0IGFicyA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgSW50TGl0KG4pID0+IE9rKEludExpdChhYnMobikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb3AgPSBmbiA9PlxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IEZsb2F0TGl0KGYpID0+IE9rKEZsb2F0TGl0KGZuKGYpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgYWJzX2Zsb2F0ID0gZmxvYXRfb3AoYWJzX2Zsb2F0KTtcbiAgICBsZXQgY2VpbCA9IGZsb2F0X29wKGNlaWwpO1xuICAgIGxldCBmbG9vciA9IGZsb2F0X29wKGZsb29yKTtcbiAgICBsZXQgc3FydCA9IGZsb2F0X29wKHNxcnQpO1xuICAgIGxldCBleHAgPSBmbG9hdF9vcChleHApO1xuICAgIGxldCBsb2cgPSBmbG9hdF9vcChsb2cpO1xuICAgIGxldCBsb2cxMCA9IGZsb2F0X29wKGxvZzEwKTtcbiAgICBsZXQgc2luID0gZmxvYXRfb3Aoc2luKTtcbiAgICBsZXQgY29zID0gZmxvYXRfb3AoY29zKTtcbiAgICBsZXQgdGFuID0gZmxvYXRfb3AodGFuKTtcbiAgICBsZXQgYXNpbiA9IGZsb2F0X29wKGFzaW4pO1xuICAgIGxldCBhY29zID0gZmxvYXRfb3AoYWNvcyk7XG4gICAgbGV0IGF0YW4gPSBmbG9hdF9vcChhdGFuKTtcblxuICAgIGxldCBvZl9zdHJpbmcgPVxuICAgICAgICAoY29udmVydDogc3RyaW5nID0+IG9wdGlvbignYSksIHdyYXA6ICdhID0+IERIRXhwLnQsIG5hbWU6IHN0cmluZykgPT5cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBTdHJpbmdMaXQocykgYXMgZCA9PlxuICAgICAgICAgIHN3aXRjaCAoY29udmVydChzKSkge1xuICAgICAgICAgIHwgU29tZShuKSA9PiBPayh3cmFwKG4pKVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgbGV0IGQnID0gREhFeHAuQXAoREhFeHAuQnVpbHRpbkZ1bihuYW1lKSwgZCk7XG4gICAgICAgICAgICBPayhJbnZhbGlkT3BlcmF0aW9uKGQnLCBJbnZhbGlkT2ZTdHJpbmcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBpbnRfb2Zfc3RyaW5nID0gb2Zfc3RyaW5nKGludF9vZl9zdHJpbmdfb3B0LCBuID0+IEludExpdChuKSk7XG4gICAgbGV0IGZsb2F0X29mX3N0cmluZyA9IG9mX3N0cmluZyhmbG9hdF9vZl9zdHJpbmdfb3B0LCBmID0+IEZsb2F0TGl0KGYpKTtcbiAgICBsZXQgYm9vbF9vZl9zdHJpbmcgPSBvZl9zdHJpbmcoYm9vbF9vZl9zdHJpbmdfb3B0LCBiID0+IEJvb2xMaXQoYikpO1xuXG4gICAgbGV0IGludF9tb2QgPSAobmFtZSwgZDEpID0+XG4gICAgICBzd2l0Y2ggKGQxKSB7XG4gICAgICB8IFR1cGxlKFtJbnRMaXQobiksIEludExpdChtKV0pID0+XG4gICAgICAgIHN3aXRjaCAobSkge1xuICAgICAgICB8IDAgPT5cbiAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uKFxuICAgICAgICAgICAgREhFeHAuQXAoREhFeHAuQnVpbHRpbkZ1bihuYW1lKSwgZDEpLFxuICAgICAgICAgICAgRGl2aWRlQnlaZXJvLFxuICAgICAgICAgIClcbiAgICAgICAgfCBfID0+IEludExpdChuIG1vZCBtKVxuICAgICAgICB9XG4gICAgICB8IGQxID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRUdXBsZShkMSkpKVxuICAgICAgfTtcblxuICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBTdHJpbmdMaXQocykgPT4gT2soSW50TGl0KFN0cmluZy5sZW5ndGgocykpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX2NvbXBhcmUgPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFR1cGxlKFtTdHJpbmdMaXQoczEpLCBTdHJpbmdMaXQoczIpXSkgPT5cbiAgICAgICAgICBPayhJbnRMaXQoU3RyaW5nLmNvbXBhcmUoczEsIHMyKSkpXG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRUdXBsZShkKSksXG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ190cmltID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBTdHJpbmdMaXQocykgPT4gT2soU3RyaW5nTGl0KFN0cmluZy50cmltKHMpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkKSksXG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZjogREhFeHAudCA9PiBvcHRpb24oc3RyaW5nKSA9XG4gICAgICBmdW5cbiAgICAgIHwgU3RyaW5nTGl0KHMpID0+IFNvbWUocylcbiAgICAgIHwgXyA9PiBOb25lO1xuXG4gICAgbGV0IHN0cmluZ19jb25jYXQgPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFR1cGxlKFtTdHJpbmdMaXQoczEpLCBMaXN0TGl0KF8sIF8sIF8sIHhzKV0pID0+XG4gICAgICAgICAgc3dpdGNoICh4cyB8PiBMaXN0Lm1hcChzdHJpbmdfb2YpIHw+IFV0aWwuT3B0VXRpbC5zZXF1ZW5jZSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoTGlzdC5oZCh4cykpKVxuICAgICAgICAgIHwgU29tZSh4cykgPT4gT2soU3RyaW5nTGl0KFN0cmluZy5jb25jYXQoczEsIHhzKSkpXG4gICAgICAgICAgfVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkVHVwbGUoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfc3ViID0gbmFtZSA9PlxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFR1cGxlKFtTdHJpbmdMaXQocyksIEludExpdChpZHgpLCBJbnRMaXQobGVuKV0pIGFzIGQgPT5cbiAgICAgICAgICB0cnkoT2soU3RyaW5nTGl0KFN0cmluZy5zdWIocywgaWR4LCBsZW4pKSkpIHtcbiAgICAgICAgICB8IF8gPT5cbiAgICAgICAgICAgIGxldCBkJyA9IERIRXhwLkFwKERIRXhwLkJ1aWx0aW5GdW4obmFtZSksIGQpO1xuICAgICAgICAgICAgT2soSW52YWxpZE9wZXJhdGlvbihkJywgSW5kZXhPdXRPZkJvdW5kcykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZFR1cGxlKGQpKSxcbiAgICAgICk7XG4gIH07XG5cbiAgb3BlbiBJbXBscztcbiAgbGV0IGJ1aWx0aW5zID1cbiAgICBWYXJNYXAuZW1wdHlcbiAgICB8PiBjb25zdChcImluZmluaXR5XCIsIEZsb2F0LCBpbmZpbml0eSlcbiAgICB8PiBjb25zdChcIm5lZ19pbmZpbml0eVwiLCBGbG9hdCwgbmVnX2luZmluaXR5KVxuICAgIHw+IGNvbnN0KFwibmFuXCIsIEZsb2F0LCBuYW4pXG4gICAgfD4gY29uc3QoXCJlcHNpbG9uX2Zsb2F0XCIsIEZsb2F0LCBlcHNpbG9uX2Zsb2F0KVxuICAgIHw+IGNvbnN0KFwicGlcIiwgRmxvYXQsIHBpKVxuICAgIHw+IGNvbnN0KFwibWF4X2ludFwiLCBJbnQsIG1heF9pbnQpXG4gICAgfD4gY29uc3QoXCJtaW5faW50XCIsIEludCwgbWluX2ludClcbiAgICB8PiBmbihcImlzX2Zpbml0ZVwiLCBGbG9hdCwgQm9vbCwgaXNfZmluaXRlKVxuICAgIHw+IGZuKFwiaXNfaW5maW5pdGVcIiwgRmxvYXQsIEJvb2wsIGlzX2luZmluaXRlKVxuICAgIHw+IGZuKFwiaXNfbmFuXCIsIEZsb2F0LCBCb29sLCBpc19uYW4pXG4gICAgfD4gZm4oXCJpbnRfb2ZfZmxvYXRcIiwgRmxvYXQsIEludCwgaW50X29mX2Zsb2F0KVxuICAgIHw+IGZuKFwiZmxvYXRfb2ZfaW50XCIsIEludCwgRmxvYXQsIGZsb2F0X29mX2ludClcbiAgICB8PiBmbihcInN0cmluZ19vZl9pbnRcIiwgSW50LCBTdHJpbmcsIHN0cmluZ19vZl9pbnQpXG4gICAgfD4gZm4oXCJzdHJpbmdfb2ZfZmxvYXRcIiwgRmxvYXQsIFN0cmluZywgc3RyaW5nX29mX2Zsb2F0KVxuICAgIHw+IGZuKFwic3RyaW5nX29mX2Jvb2xcIiwgQm9vbCwgU3RyaW5nLCBzdHJpbmdfb2ZfYm9vbClcbiAgICB8PiBmbihcImludF9vZl9zdHJpbmdcIiwgU3RyaW5nLCBJbnQsIGludF9vZl9zdHJpbmcoXCJpbnRfb2Zfc3RyaW5nXCIpKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJmbG9hdF9vZl9zdHJpbmdcIixcbiAgICAgICAgIFN0cmluZyxcbiAgICAgICAgIEZsb2F0LFxuICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nKFwiZmxvYXRfb2Zfc3RyaW5nXCIpLFxuICAgICAgIClcbiAgICB8PiBmbihcImJvb2xfb2Zfc3RyaW5nXCIsIFN0cmluZywgQm9vbCwgYm9vbF9vZl9zdHJpbmcoXCJib29sX29mX3N0cmluZ1wiKSlcbiAgICB8PiBmbihcImFic1wiLCBJbnQsIEludCwgYWJzKVxuICAgIHw+IGZuKFwiYWJzX2Zsb2F0XCIsIEZsb2F0LCBGbG9hdCwgYWJzX2Zsb2F0KVxuICAgIHw+IGZuKFwiY2VpbFwiLCBGbG9hdCwgRmxvYXQsIGNlaWwpXG4gICAgfD4gZm4oXCJmbG9vclwiLCBGbG9hdCwgRmxvYXQsIGZsb29yKVxuICAgIHw+IGZuKFwiZXhwXCIsIEZsb2F0LCBGbG9hdCwgZXhwKVxuICAgIHw+IGZuKFwibG9nXCIsIEZsb2F0LCBGbG9hdCwgbG9nKVxuICAgIHw+IGZuKFwibG9nMTBcIiwgRmxvYXQsIEZsb2F0LCBsb2cxMClcbiAgICB8PiBmbihcInNxcnRcIiwgRmxvYXQsIEZsb2F0LCBzcXJ0KVxuICAgIHw+IGZuKFwic2luXCIsIEZsb2F0LCBGbG9hdCwgc2luKVxuICAgIHw+IGZuKFwiY29zXCIsIEZsb2F0LCBGbG9hdCwgY29zKVxuICAgIHw+IGZuKFwidGFuXCIsIEZsb2F0LCBGbG9hdCwgdGFuKVxuICAgIHw+IGZuKFwiYXNpblwiLCBGbG9hdCwgRmxvYXQsIGFzaW4pXG4gICAgfD4gZm4oXCJhY29zXCIsIEZsb2F0LCBGbG9hdCwgYWNvcylcbiAgICB8PiBmbihcImF0YW5cIiwgRmxvYXQsIEZsb2F0LCBhdGFuKVxuICAgIHw+IGZuKFwibW9kXCIsIFByb2QoW0ludCwgSW50XSksIEludCwgaW50X21vZChcIm1vZFwiKSlcbiAgICB8PiBmbihcInN0cmluZ19sZW5ndGhcIiwgU3RyaW5nLCBJbnQsIHN0cmluZ19sZW5ndGgpXG4gICAgfD4gZm4oXCJzdHJpbmdfY29tcGFyZVwiLCBQcm9kKFtTdHJpbmcsIFN0cmluZ10pLCBJbnQsIHN0cmluZ19jb21wYXJlKVxuICAgIHw+IGZuKFwic3RyaW5nX3RyaW1cIiwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZ190cmltKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfY29uY2F0XCIsXG4gICAgICAgICBQcm9kKFtTdHJpbmcsIExpc3QoU3RyaW5nKV0pLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgc3RyaW5nX2NvbmNhdCxcbiAgICAgICApXG4gICAgfD4gZm4oXG4gICAgICAgICBcInN0cmluZ19zdWJcIixcbiAgICAgICAgIFByb2QoW1N0cmluZywgSW50LCBJbnRdKSxcbiAgICAgICAgIFN0cmluZyxcbiAgICAgICAgIHN0cmluZ19zdWIoXCJzdHJpbmdfc3ViXCIpLFxuICAgICAgICk7XG59O1xuXG5sZXQgY3R4X2luaXQ6IEN0eC50ID0ge1xuICBsZXQgbWV0YV9jb25zX21hcCA9IENvbnN0cnVjdG9yTWFwLm9mX2xpc3QoWyhcIiRlXCIsIE5vbmUpLCAoXCIkdlwiLCBOb25lKV0pO1xuICBsZXQgbWV0YSA9XG4gICAgQ3R4LlRWYXJFbnRyeSh7XG4gICAgICBuYW1lOiBcIiRNZXRhXCIsXG4gICAgICBpZDogSWQuaW52YWxpZCxcbiAgICAgIGtpbmQ6IEtpbmQuU2luZ2xldG9uKFN1bShtZXRhX2NvbnNfbWFwKSksXG4gICAgfSk7XG4gIExpc3QubWFwKFxuICAgIGZ1blxuICAgIHwgKG5hbWUsIENvbnN0KHR5cCwgXykpID0+IEN0eC5WYXJFbnRyeSh7bmFtZSwgdHlwLCBpZDogSWQuaW52YWxpZH0pXG4gICAgfCAobmFtZSwgRm4odDEsIHQyLCBfKSkgPT5cbiAgICAgIEN0eC5WYXJFbnRyeSh7bmFtZSwgdHlwOiBBcnJvdyh0MSwgdDIpLCBpZDogSWQuaW52YWxpZH0pLFxuICAgIFBlcnZhc2l2ZXMuYnVpbHRpbnMsXG4gIClcbiAgfD4gQ3R4LmV4dGVuZChfLCBtZXRhKVxuICB8PiBDdHguYWRkX2N0cnMoXywgXCIkTWV0YVwiLCBJZC5pbnZhbGlkLCBtZXRhX2NvbnNfbWFwKTtcbn07XG5cbmxldCBmb3Jtc19pbml0OiBmb3JtcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IChfLCBDb25zdChfKSkgPT4gTm9uZVxuICAgIHwgKG5hbWUsIEZuKF8sIF8sIGYpKSA9PiBTb21lKChuYW1lLCBmKSksXG4gICAgUGVydmFzaXZlcy5idWlsdGlucyxcbiAgKTtcblxubGV0IGVudl9pbml0OiBFbnZpcm9ubWVudC50ID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgZW52ID0+XG4gICAgICBmdW5cbiAgICAgIHwgKG5hbWUsIENvbnN0KF8sIGQpKSA9PiBFbnZpcm9ubWVudC5leHRlbmQoZW52LCAobmFtZSwgZCkpXG4gICAgICB8IChuYW1lLCBGbihfKSkgPT4gRW52aXJvbm1lbnQuZXh0ZW5kKGVudiwgKG5hbWUsIEJ1aWx0aW5GdW4obmFtZSkpKSxcbiAgICBFbnZpcm9ubWVudC5lbXB0eSxcbiAgICBQZXJ2YXNpdmVzLmJ1aWx0aW5zLFxuICApO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIEV2YWx1YXRpb24gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHNob3dfY2FzZV9jbGF1c2VzOiBib29sLFxuICAgIHNob3dfZm5fYm9kaWVzOiBib29sLFxuICAgIHNob3dfZml4cG9pbnRzOiBib29sLFxuICAgIHNob3dfY2FzdHM6IGJvb2wsXG4gICAgc2hvd19sb29rdXBfc3RlcHM6IGJvb2wsXG4gICAgc2hvd19zdGVwcGVyX2ZpbHRlcnM6IGJvb2wsXG4gICAgLy8gVE9ET1tNYXR0XTogTW92ZSB0aGlzIHRvIHNvbWV3aGVyZSB3aGVyZSBpdCBpcyBhIHBlci1zY3JhdGNoIHNldHRpbmdcbiAgICBzdGVwcGVyX2hpc3Rvcnk6IGJvb2wsXG4gICAgc2hvd19zZXR0aW5nczogYm9vbCxcbiAgfTtcblxuICBsZXQgaW5pdCA9IHtcbiAgICBzaG93X2Nhc2VfY2xhdXNlczogdHJ1ZSxcbiAgICBzaG93X2ZuX2JvZGllczogZmFsc2UsXG4gICAgc2hvd19maXhwb2ludHM6IGZhbHNlLFxuICAgIHNob3dfY2FzdHM6IGZhbHNlLFxuICAgIHNob3dfbG9va3VwX3N0ZXBzOiBmYWxzZSxcbiAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogZmFsc2UsXG4gICAgc3RlcHBlcl9oaXN0b3J5OiBmYWxzZSxcbiAgICBzaG93X3NldHRpbmdzOiBmYWxzZSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdGljczogYm9vbCxcbiAgZWxhYm9yYXRlOiBib29sLFxuICBhc3Npc3Q6IGJvb2wsXG4gIGR5bmFtaWNzOiBib29sLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLnQsXG59O1xuXG5sZXQgb2ZmOiB0ID0ge1xuICBzdGF0aWNzOiBmYWxzZSxcbiAgZWxhYm9yYXRlOiBmYWxzZSxcbiAgYXNzaXN0OiBmYWxzZSxcbiAgZHluYW1pY3M6IGZhbHNlLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLmluaXQsXG59O1xuXG5sZXQgb246IHQgPSB7XG4gIHN0YXRpY3M6IHRydWUsXG4gIGVsYWJvcmF0ZTogdHJ1ZSxcbiAgYXNzaXN0OiB0cnVlLFxuICBkeW5hbWljczogdHJ1ZSxcbiAgZXZhbHVhdGlvbjogRXZhbHVhdGlvbi5pbml0LFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIERIO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgTWFya1xuICB8IENsb3N1cmVcbiAgfCBGaWx0ZXJQYXR0ZXJuXG4gIHwgRmlsdGVyXG4gIHwgU2VxdWVuY2UxXG4gIHwgU2VxdWVuY2UyXG4gIHwgTGV0MVxuICB8IExldDJcbiAgfCBBcDFcbiAgfCBBcDJcbiAgfCBGdW5cbiAgfCBGaXhGXG4gIHwgQmluQm9vbE9wMVxuICB8IEJpbkJvb2xPcDJcbiAgfCBCaW5JbnRPcDFcbiAgfCBCaW5JbnRPcDJcbiAgfCBCaW5GbG9hdE9wMVxuICB8IEJpbkZsb2F0T3AyXG4gIHwgQmluU3RyaW5nT3AxXG4gIHwgQmluU3RyaW5nT3AyXG4gIHwgSWZUaGVuRWxzZTFcbiAgfCBJZlRoZW5FbHNlMlxuICB8IElmVGhlbkVsc2UzXG4gIHwgVHVwbGUoaW50KVxuICB8IExpc3RMaXQoaW50KVxuICB8IEFwQnVpbHRpblxuICB8IFRlc3RcbiAgfCBDb25zMVxuICB8IENvbnMyXG4gIHwgTGlzdENvbmNhdDFcbiAgfCBMaXN0Q29uY2F0MlxuICB8IFByalxuICB8IE5vbkVtcHR5SG9sZVxuICB8IENhc3RcbiAgfCBGYWlsZWRDYXN0XG4gIHwgSW52YWxpZE9wZXJhdGlvblxuICB8IENvbnNpc3RlbnRDYXNlXG4gIHwgQ29uc2lzdGVudENhc2VSdWxlKGludClcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlc1xuICB8IEluY29uc2lzdGVudEJyYW5jaGVzUnVsZShpbnQpXG4gIHwgRmFpbGVkQ2FzdENhc3RcbiAgLy8gVXNlZCB3aGVuIGVudGVyaW5nIGEgYm91bmQgdmFyaWFibGUgZXhwcmVzc2lvbiBpbiBzdWJzdGl0dXRpb24gbW9kZVxuICB8IEJvdW5kVmFyO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE1hcmtcbiAgfCBDbG9zdXJlKFtAc2hvdy5vcGFxdWVdIENsb3N1cmVFbnZpcm9ubWVudC50LCB0KVxuICB8IEZpbHRlcihESC5ESEZpbHRlci50LCB0KVxuICB8IFNlcXVlbmNlMSh0LCBESEV4cC50KVxuICB8IFNlcXVlbmNlMihESEV4cC50LCB0KVxuICB8IExldDEoREhQYXQudCwgdCwgREhFeHAudClcbiAgfCBMZXQyKERIUGF0LnQsIERIRXhwLnQsIHQpXG4gIHwgRnVuKERIUGF0LnQsIFR5cC50LCB0LCBvcHRpb24oVmFyLnQpKVxuICB8IEZpeEYoVmFyLnQsIFR5cC50LCB0KVxuICB8IEFwMSh0LCBESEV4cC50KVxuICB8IEFwMihESEV4cC50LCB0KVxuICB8IElmVGhlbkVsc2UxKGlmX2NvbnNpc3RlbmN5LCB0LCBESEV4cC50LCBESEV4cC50KVxuICB8IElmVGhlbkVsc2UyKGlmX2NvbnNpc3RlbmN5LCBESEV4cC50LCB0LCBESEV4cC50KVxuICB8IElmVGhlbkVsc2UzKGlmX2NvbnNpc3RlbmN5LCBESEV4cC50LCBESEV4cC50LCB0KVxuICB8IEJpbkJvb2xPcDEoVGVybUJhc2UuVUV4cC5vcF9iaW5fYm9vbCwgdCwgREhFeHAudClcbiAgfCBCaW5Cb29sT3AyKFRlcm1CYXNlLlVFeHAub3BfYmluX2Jvb2wsIERIRXhwLnQsIHQpXG4gIHwgQmluSW50T3AxKFRlcm1CYXNlLlVFeHAub3BfYmluX2ludCwgdCwgREhFeHAudClcbiAgfCBCaW5JbnRPcDIoVGVybUJhc2UuVUV4cC5vcF9iaW5faW50LCBESEV4cC50LCB0KVxuICB8IEJpbkZsb2F0T3AxKFRlcm1CYXNlLlVFeHAub3BfYmluX2Zsb2F0LCB0LCBESEV4cC50KVxuICB8IEJpbkZsb2F0T3AyKFRlcm1CYXNlLlVFeHAub3BfYmluX2Zsb2F0LCBESEV4cC50LCB0KVxuICB8IEJpblN0cmluZ09wMShUZXJtQmFzZS5VRXhwLm9wX2Jpbl9zdHJpbmcsIHQsIERIRXhwLnQpXG4gIHwgQmluU3RyaW5nT3AyKFRlcm1CYXNlLlVFeHAub3BfYmluX3N0cmluZywgREhFeHAudCwgdClcbiAgfCBUdXBsZSh0LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpXG4gIHwgQXBCdWlsdGluKHN0cmluZywgdClcbiAgfCBUZXN0KEtleXdvcmRJRC50LCB0KVxuICB8IExpc3RMaXQoXG4gICAgICBNZXRhVmFyLnQsXG4gICAgICBNZXRhVmFySW5zdC50LFxuICAgICAgVHlwLnQsXG4gICAgICB0LFxuICAgICAgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpLFxuICAgIClcbiAgfCBDb25zMSh0LCBESEV4cC50KVxuICB8IENvbnMyKERIRXhwLnQsIHQpXG4gIHwgTGlzdENvbmNhdDEodCwgREhFeHAudClcbiAgfCBMaXN0Q29uY2F0MihESEV4cC50LCB0KVxuICB8IFByaih0LCBpbnQpXG4gIHwgTm9uRW1wdHlIb2xlKEVyclN0YXR1cy5Ib2xlUmVhc29uLnQsIE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudCwgdClcbiAgfCBDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgfCBGYWlsZWRDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgfCBJbnZhbGlkT3BlcmF0aW9uKHQsIEludmFsaWRPcGVyYXRpb25FcnJvci50KVxuICB8IENvbnNpc3RlbnRDYXNlKGNhc2UpXG4gIHwgQ29uc2lzdGVudENhc2VSdWxlKFxuICAgICAgREhFeHAudCxcbiAgICAgIERIUGF0LnQsXG4gICAgICB0LFxuICAgICAgKGxpc3QoREhFeHAucnVsZSksIGxpc3QoREhFeHAucnVsZSkpLFxuICAgICAgaW50LFxuICAgIClcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIGNhc2UpXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXNSdWxlKFxuICAgICAgREhFeHAudCxcbiAgICAgIE1ldGFWYXIudCxcbiAgICAgIEhvbGVJbnN0YW5jZUlkLnQsXG4gICAgICBESFBhdC50LFxuICAgICAgdCxcbiAgICAgIChsaXN0KERIRXhwLnJ1bGUpLCBsaXN0KERIRXhwLnJ1bGUpKSxcbiAgICAgIGludCxcbiAgICApXG5hbmQgY2FzZSA9XG4gIHwgQ2FzZSh0LCBsaXN0KHJ1bGUpLCBpbnQpXG5hbmQgcnVsZSA9IERIRXhwLnJ1bGU7XG5cbmxldCByZWMgZnV6enlfbWFyayA9XG4gIGZ1blxuICB8IE1hcmsgPT4gdHJ1ZVxuICB8IENsb3N1cmUoXywgeClcbiAgfCBUZXN0KF8sIHgpXG4gIHwgQ2FzdCh4LCBfLCBfKVxuICB8IEZhaWxlZENhc3QoeCwgXywgXylcbiAgfCBGaWx0ZXIoXywgeCkgPT4gZnV6enlfbWFyayh4KVxuICB8IFNlcXVlbmNlMShfKVxuICB8IFNlcXVlbmNlMihfKVxuICB8IExldDEoXylcbiAgfCBMZXQyKF8pXG4gIHwgRnVuKF8pXG4gIHwgRml4RihfKVxuICB8IEFwMShfKVxuICB8IEFwMihfKVxuICB8IElmVGhlbkVsc2UxKF8pXG4gIHwgSWZUaGVuRWxzZTIoXylcbiAgfCBJZlRoZW5FbHNlMyhfKVxuICB8IEJpbkJvb2xPcDEoXylcbiAgfCBCaW5Cb29sT3AyKF8pXG4gIHwgQmluSW50T3AxKF8pXG4gIHwgQmluSW50T3AyKF8pXG4gIHwgQmluRmxvYXRPcDEoXylcbiAgfCBCaW5GbG9hdE9wMihfKVxuICB8IEJpblN0cmluZ09wMShfKVxuICB8IEJpblN0cmluZ09wMihfKVxuICB8IFR1cGxlKF8pXG4gIHwgQXBCdWlsdGluKF8pXG4gIHwgTGlzdExpdChfKVxuICB8IENvbnMxKF8pXG4gIHwgQ29uczIoXylcbiAgfCBMaXN0Q29uY2F0MShfKVxuICB8IExpc3RDb25jYXQyKF8pXG4gIHwgUHJqKF8pXG4gIHwgTm9uRW1wdHlIb2xlKF8pXG4gIHwgSW52YWxpZE9wZXJhdGlvbihfKVxuICB8IENvbnNpc3RlbnRDYXNlKF8pXG4gIHwgQ29uc2lzdGVudENhc2VSdWxlKF8pXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXylcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlc1J1bGUoXykgPT4gZmFsc2U7XG5cbmxldCByZWMgdW53cmFwID0gKGN0eDogdCwgc2VsOiBjbHMpOiBvcHRpb24odCkgPT4ge1xuICBzd2l0Y2ggKHNlbCwgY3R4KSB7XG4gIHwgKE1hcmssIF8pID0+XG4gICAgcHJpbnRfZW5kbGluZShcbiAgICAgIFwiTWFyayBkb2VzIG5vdCBtYXRjaCB3aXRoIFwiXG4gICAgICArKyBTZXhwbGliLlNleHAudG9fc3RyaW5nX2h1bShzZXhwX29mX3QoY3R4KSksXG4gICAgKTtcbiAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oU3RlcERvZXNOb3RNYXRjaCkpO1xuICB8IChCb3VuZFZhciwgYylcbiAgfCAoTm9uRW1wdHlIb2xlLCBOb25FbXB0eUhvbGUoXywgXywgXywgYykpXG4gIHwgKENsb3N1cmUsIENsb3N1cmUoXywgYykpXG4gIHwgKEZpbHRlciwgRmlsdGVyKF8sIGMpKVxuICB8IChTZXF1ZW5jZTEsIFNlcXVlbmNlMShjLCBfKSlcbiAgfCAoU2VxdWVuY2UyLCBTZXF1ZW5jZTIoXywgYykpXG4gIHwgKExldDEsIExldDEoXywgYywgXykpXG4gIHwgKExldDIsIExldDIoXywgXywgYykpXG4gIHwgKEZ1biwgRnVuKF8sIF8sIGMsIF8pKVxuICB8IChGaXhGLCBGaXhGKF8sIF8sIGMpKVxuICB8IChBcDEsIEFwMShjLCBfKSlcbiAgfCAoQXAyLCBBcDIoXywgYykpXG4gIHwgKEJpbkJvb2xPcDEsIEJpbkJvb2xPcDEoXywgYywgXykpXG4gIHwgKEJpbkJvb2xPcDIsIEJpbkJvb2xPcDIoXywgXywgYykpXG4gIHwgKEJpbkludE9wMSwgQmluSW50T3AxKF8sIGMsIF8pKVxuICB8IChCaW5JbnRPcDIsIEJpbkludE9wMihfLCBfLCBjKSlcbiAgfCAoQmluRmxvYXRPcDEsIEJpbkZsb2F0T3AxKF8sIGMsIF8pKVxuICB8IChCaW5GbG9hdE9wMiwgQmluRmxvYXRPcDIoXywgXywgYykpXG4gIHwgKEJpblN0cmluZ09wMSwgQmluU3RyaW5nT3AxKF8sIGMsIF8pKVxuICB8IChCaW5TdHJpbmdPcDIsIEJpblN0cmluZ09wMihfLCBfLCBjKSlcbiAgfCAoSWZUaGVuRWxzZTEsIElmVGhlbkVsc2UxKF8sIGMsIF8sIF8pKVxuICB8IChJZlRoZW5FbHNlMiwgSWZUaGVuRWxzZTIoXywgXywgYywgXykpXG4gIHwgKElmVGhlbkVsc2UzLCBJZlRoZW5FbHNlMyhfLCBfLCBfLCBjKSlcbiAgfCAoQ29uczEsIENvbnMxKGMsIF8pKVxuICB8IChDb25zMiwgQ29uczIoXywgYykpXG4gIHwgKExpc3RDb25jYXQxLCBMaXN0Q29uY2F0MShjLCBfKSlcbiAgfCAoTGlzdENvbmNhdDIsIExpc3RDb25jYXQyKF8sIGMpKVxuICB8IChUZXN0LCBUZXN0KF8sIGMpKVxuICB8IChQcmosIFByaihjLCBfKSkgPT4gU29tZShjKVxuICB8IChMaXN0TGl0KG4pLCBMaXN0TGl0KF8sIF8sIF8sIGMsIChsZCwgXykpKVxuICB8IChUdXBsZShuKSwgVHVwbGUoYywgKGxkLCBfKSkpID0+XG4gICAgaWYgKExpc3QubGVuZ3RoKGxkKSA9PSBuKSB7XG4gICAgICBTb21lKGMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBOb25lO1xuICAgIH1cbiAgfCAoQ29uc2lzdGVudENhc2VSdWxlKG4pLCBDb25zaXN0ZW50Q2FzZVJ1bGUoXywgXywgYywgKGxkLCBfKSwgXykpXG4gIHwgKFxuICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXNSdWxlKG4pLFxuICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXNSdWxlKF8sIF8sIF8sIF8sIGMsIChsZCwgXyksIF8pLFxuICAgICkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgobGQpID09IG4pIHtcbiAgICAgIFNvbWUoYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE5vbmU7XG4gICAgfVxuICB8IChJbmNvbnNpc3RlbnRCcmFuY2hlcywgSW5jb25zaXN0ZW50QnJhbmNoZXMoXywgXywgQ2FzZShzY3J1dCwgXywgXykpKSA9PlxuICAgIFNvbWUoc2NydXQpXG4gIHwgKENvbnNpc3RlbnRDYXNlLCBDb25zaXN0ZW50Q2FzZShDYXNlKHNjcnV0LCBfLCBfKSkpID0+IFNvbWUoc2NydXQpXG4gIHwgKENhc3QsIENhc3QoYywgXywgXykpXG4gIHwgKEZhaWxlZENhc3RDYXN0LCBGYWlsZWRDYXN0KENhc3QoYywgXywgXyksIF8sIF8pKVxuICB8IChGYWlsZWRDYXN0LCBGYWlsZWRDYXN0KGMsIF8sIF8pKSA9PiBTb21lKGMpXG4gIHwgKEFwMSwgQXAyKF8sIF8pKVxuICB8IChBcDIsIEFwMShfLCBfKSlcbiAgfCAoSWZUaGVuRWxzZTEsIElmVGhlbkVsc2UyKF8pKVxuICB8IChJZlRoZW5FbHNlMSwgSWZUaGVuRWxzZTMoXykpXG4gIHwgKElmVGhlbkVsc2UyLCBJZlRoZW5FbHNlMShfKSlcbiAgfCAoSWZUaGVuRWxzZTIsIElmVGhlbkVsc2UzKF8pKVxuICB8IChJZlRoZW5FbHNlMywgSWZUaGVuRWxzZTEoXykpXG4gIHwgKElmVGhlbkVsc2UzLCBJZlRoZW5FbHNlMihfKSlcbiAgfCAoTGV0MSwgTGV0MihfKSlcbiAgfCAoTGV0MiwgTGV0MShfKSlcbiAgfCAoQmluQm9vbE9wMSwgQmluQm9vbE9wMihfKSlcbiAgfCAoQmluQm9vbE9wMiwgQmluQm9vbE9wMShfKSlcbiAgfCAoQmluSW50T3AxLCBCaW5JbnRPcDIoXykpXG4gIHwgKEJpbkludE9wMiwgQmluSW50T3AxKF8pKVxuICB8IChCaW5GbG9hdE9wMSwgQmluRmxvYXRPcDIoXykpXG4gIHwgKEJpbkZsb2F0T3AyLCBCaW5GbG9hdE9wMShfKSlcbiAgfCAoQmluU3RyaW5nT3AxLCBCaW5TdHJpbmdPcDIoXykpXG4gIHwgKEJpblN0cmluZ09wMiwgQmluU3RyaW5nT3AxKF8pKVxuICB8IChDb25zMSwgQ29uczIoXykpXG4gIHwgKENvbnMyLCBDb25zMShfKSlcbiAgfCAoU2VxdWVuY2UxLCBTZXF1ZW5jZTIoXykpXG4gIHwgKFNlcXVlbmNlMiwgU2VxdWVuY2UxKF8pKVxuICB8IChMaXN0Q29uY2F0MSwgTGlzdENvbmNhdDIoXykpXG4gIHwgKExpc3RDb25jYXQyLCBMaXN0Q29uY2F0MShfKSkgPT4gTm9uZVxuICB8IChGaWx0ZXJQYXR0ZXJuLCBfKSA9PiBOb25lXG4gIHwgKEZpbHRlciwgXykgPT4gU29tZShjdHgpXG4gIHwgKHRhZywgRmlsdGVyKF8sIGMpKSA9PiB1bndyYXAoYywgdGFnKVxuICB8IChDbG9zdXJlLCBfKSA9PiBTb21lKGN0eClcbiAgfCAodGFnLCBDbG9zdXJlKF8sIGMpKSA9PiB1bndyYXAoYywgdGFnKVxuICB8IChDYXN0LCBfKSA9PiBTb21lKGN0eClcbiAgfCAodGFnLCBDYXN0KGMsIF8sIF8pKSA9PiB1bndyYXAoYywgdGFnKVxuICB8IChfLCBNYXJrKSA9PiBOb25lXG4gIHwgKF8sIF8pID0+XG4gICAgLy8gcHJpbnRfZW5kbGluZShcbiAgICAvLyAgIFNleHBsaWIuU2V4cC50b19zdHJpbmdfaHVtKHNleHBfb2ZfY2xzKHRhZykpXG4gICAgLy8gICArKyBcIiBkb2VzIG5vdCBtYXRjaCB3aXRoIFwiXG4gICAgLy8gICArKyBTZXhwbGliLlNleHAudG9fc3RyaW5nX2h1bShzZXhwX29mX3QoY3R4KSksXG4gICAgLy8gKTtcbiAgICBOb25lXG4gIC8vIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihTdGVwRG9lc05vdE1hdGNoKSk7XG4gIH07XG59O1xuIiwib3BlbiBVdGlsO1xuXG50eXBlIG1hdGNoX3Jlc3VsdCA9XG4gIHwgTWF0Y2hlcyhFbnZpcm9ubWVudC50KVxuICB8IERvZXNOb3RNYXRjaFxuICB8IEluZGV0TWF0Y2g7XG5cbmxldCBjb25zdF91bmtub3duOiAnYSA9PiBUeXAudCA9IF8gPT4gVW5rbm93bihJbnRlcm5hbCk7XG5cbmxldCBjYXN0X3N1bV9tYXBzID1cbiAgICAoc20xOiBUeXAuc3VtX21hcCwgc20yOiBUeXAuc3VtX21hcClcbiAgICA6IG9wdGlvbihDb25zdHJ1Y3Rvck1hcC50KChUeXAudCwgVHlwLnQpKSkgPT4ge1xuICBsZXQgKGN0cnMxLCB0eXMxKSA9IHNtMSB8PiBDb25zdHJ1Y3Rvck1hcC5iaW5kaW5ncyB8PiBMaXN0LnNwbGl0O1xuICBsZXQgKGN0cnMyLCB0eXMyKSA9IHNtMiB8PiBDb25zdHJ1Y3Rvck1hcC5iaW5kaW5ncyB8PiBMaXN0LnNwbGl0O1xuICBpZiAoY3RyczEgPT0gY3RyczIpIHtcbiAgICBsZXQgdHlzMSA9IHR5czEgfD4gTGlzdC5maWx0ZXIoT3B0aW9uLmlzX3NvbWUpIHw+IExpc3QubWFwKE9wdGlvbi5nZXQpO1xuICAgIGxldCB0eXMyID0gdHlzMiB8PiBMaXN0LmZpbHRlcihPcHRpb24uaXNfc29tZSkgfD4gTGlzdC5tYXAoT3B0aW9uLmdldCk7XG4gICAgaWYgKExpc3QubGVuZ3RoKHR5czEpID09IExpc3QubGVuZ3RoKHR5czIpKSB7XG4gICAgICBTb21lKFxuICAgICAgICBMaXN0Lihjb21iaW5lKHR5czEsIHR5czIpIHw+IGNvbWJpbmUoY3RyczEpKVxuICAgICAgICB8PiBDb25zdHJ1Y3Rvck1hcC5vZl9saXN0LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgTm9uZTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG59O1xuXG5sZXQgcmVjIG1hdGNoZXMgPSAoZHA6IERIUGF0LnQsIGQ6IERIRXhwLnQpOiBtYXRjaF9yZXN1bHQgPT5cbiAgc3dpdGNoIChkcCwgZCkge1xuICB8IChfLCBCb3VuZFZhcihfKSkgPT4gRG9lc05vdE1hdGNoXG4gIHwgKEVtcHR5SG9sZShfKSwgXylcbiAgfCAoTm9uRW1wdHlIb2xlKF8pLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgKFdpbGQsIF8pID0+IE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpXG4gIHwgKEV4cGFuZGluZ0tleXdvcmQoXyksIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IChJbnZhbGlkVGV4dChfKSwgXykgPT4gSW5kZXRNYXRjaFxuICB8IChCYWRDb25zdHJ1Y3RvcihfKSwgXykgPT4gSW5kZXRNYXRjaFxuICB8IChWYXIoeCksIF8pID0+XG4gICAgbGV0IGVudiA9IEVudmlyb25tZW50LmV4dGVuZChFbnZpcm9ubWVudC5lbXB0eSwgKHgsIGQpKTtcbiAgICBNYXRjaGVzKGVudik7XG4gIHwgKF8sIEVtcHR5SG9sZShfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBOb25FbXB0eUhvbGUoXykpID0+IEluZGV0TWF0Y2hcbiAgfCAoXywgRmFpbGVkQ2FzdChfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBJbnZhbGlkT3BlcmF0aW9uKF8pKSA9PiBJbmRldE1hdGNoXG4gIHwgKF8sIEZyZWVWYXIoXykpID0+IEluZGV0TWF0Y2hcbiAgfCAoXywgSW52YWxpZFRleHQoXykpID0+IEluZGV0TWF0Y2hcbiAgfCAoXywgTGV0KF8pKSA9PiBJbmRldE1hdGNoXG4gIHwgKF8sIEZpeEYoXykpID0+IERvZXNOb3RNYXRjaFxuICB8IChfLCBGdW4oXykpID0+IERvZXNOb3RNYXRjaFxuICB8IChfLCBCaW5Cb29sT3AoXykpID0+IEluZGV0TWF0Y2hcbiAgfCAoXywgQmluSW50T3AoXykpID0+IEluZGV0TWF0Y2hcbiAgfCAoXywgQmluRmxvYXRPcChfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBDb25zaXN0ZW50Q2FzZShDYXNlKF8pKSkgPT4gSW5kZXRNYXRjaFxuXG4gIC8qIENsb3N1cmUgc2hvdWxkIG1hdGNoIGxpa2UgdW5kZXJseWluZyBleHByZXNzaW9uLiAqL1xuICB8IChfLCBDbG9zdXJlKF8sIGQnKSlcbiAgfCAoXywgRmlsdGVyKF8sIGQnKSkgPT4gbWF0Y2hlcyhkcCwgZCcpXG5cbiAgfCAoQm9vbExpdChiMSksIEJvb2xMaXQoYjIpKSA9PlxuICAgIGlmIChiMSA9PSBiMikge1xuICAgICAgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERvZXNOb3RNYXRjaDtcbiAgICB9XG4gIHwgKEJvb2xMaXQoXyksIENhc3QoZCwgQm9vbCwgVW5rbm93bihfKSkpID0+IG1hdGNoZXMoZHAsIGQpXG4gIHwgKEJvb2xMaXQoXyksIENhc3QoZCwgVW5rbm93bihfKSwgQm9vbCkpID0+IG1hdGNoZXMoZHAsIGQpXG4gIHwgKEJvb2xMaXQoXyksIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IChJbnRMaXQobjEpLCBJbnRMaXQobjIpKSA9PlxuICAgIGlmIChuMSA9PSBuMikge1xuICAgICAgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERvZXNOb3RNYXRjaDtcbiAgICB9XG4gIHwgKEludExpdChfKSwgQ2FzdChkLCBJbnQsIFVua25vd24oXykpKSA9PiBtYXRjaGVzKGRwLCBkKVxuICB8IChJbnRMaXQoXyksIENhc3QoZCwgVW5rbm93bihfKSwgSW50KSkgPT4gbWF0Y2hlcyhkcCwgZClcbiAgfCAoSW50TGl0KF8pLCBfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCAoRmxvYXRMaXQobjEpLCBGbG9hdExpdChuMikpID0+XG4gICAgaWYgKG4xID09IG4yKSB7XG4gICAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgRG9lc05vdE1hdGNoO1xuICAgIH1cbiAgfCAoRmxvYXRMaXQoXyksIENhc3QoZCwgRmxvYXQsIFVua25vd24oXykpKSA9PiBtYXRjaGVzKGRwLCBkKVxuICB8IChGbG9hdExpdChfKSwgQ2FzdChkLCBVbmtub3duKF8pLCBGbG9hdCkpID0+IG1hdGNoZXMoZHAsIGQpXG4gIHwgKEZsb2F0TGl0KF8pLCBfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCAoU3RyaW5nTGl0KHMxKSwgU3RyaW5nTGl0KHMyKSkgPT5cbiAgICBpZiAoczEgPT0gczIpIHtcbiAgICAgIE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBEb2VzTm90TWF0Y2g7XG4gICAgfVxuICB8IChTdHJpbmdMaXQoXyksIENhc3QoZCwgU3RyaW5nLCBVbmtub3duKF8pKSkgPT4gbWF0Y2hlcyhkcCwgZClcbiAgfCAoU3RyaW5nTGl0KF8pLCBDYXN0KGQsIFVua25vd24oXyksIFN0cmluZykpID0+IG1hdGNoZXMoZHAsIGQpXG4gIHwgKFN0cmluZ0xpdChfKSwgXykgPT4gRG9lc05vdE1hdGNoXG5cbiAgfCAoQXAoZHAxLCBkcDIpLCBBcChkMSwgZDIpKSA9PlxuICAgIHN3aXRjaCAobWF0Y2hlcyhkcDEsIGQxKSkge1xuICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgIHwgSW5kZXRNYXRjaCA9PlxuICAgICAgc3dpdGNoIChtYXRjaGVzKGRwMiwgZDIpKSB7XG4gICAgICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgICAgIHwgSW5kZXRNYXRjaFxuICAgICAgfCBNYXRjaGVzKF8pID0+IEluZGV0TWF0Y2hcbiAgICAgIH1cbiAgICB8IE1hdGNoZXMoZW52MSkgPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcDIsIGQyKSkge1xuICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRNYXRjaFxuICAgICAgfCBNYXRjaGVzKGVudjIpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24oZW52MSwgZW52MikpXG4gICAgICB9XG4gICAgfVxuICB8IChcbiAgICAgIEFwKENvbnN0cnVjdG9yKGN0ciksIGRwX29wdCksXG4gICAgICBDYXN0KGQsIFN1bShzbTEpIHwgUmVjKF8sIFN1bShzbTEpKSwgU3VtKHNtMikgfCBSZWMoXywgU3VtKHNtMikpKSxcbiAgICApID0+XG4gICAgc3dpdGNoIChjYXN0X3N1bV9tYXBzKHNtMSwgc20yKSkge1xuICAgIHwgU29tZShjYXN0bWFwKSA9PiBtYXRjaGVzX2Nhc3RfU3VtKGN0ciwgU29tZShkcF9vcHQpLCBkLCBbY2FzdG1hcF0pXG4gICAgfCBOb25lID0+IERvZXNOb3RNYXRjaFxuICAgIH1cblxuICB8IChBcChfLCBfKSwgQ2FzdChkLCBTdW0oXykgfCBSZWMoXywgU3VtKF8pKSwgVW5rbm93bihfKSkpXG4gIHwgKEFwKF8sIF8pLCBDYXN0KGQsIFVua25vd24oXyksIFN1bShfKSB8IFJlYyhfLCBTdW0oXykpKSkgPT5cbiAgICBtYXRjaGVzKGRwLCBkKVxuICB8IChBcChfLCBfKSwgXykgPT4gRG9lc05vdE1hdGNoXG5cbiAgfCAoQ29uc3RydWN0b3IoY3RyKSwgQ29uc3RydWN0b3IoY3RyJykpID0+XG4gICAgY3RyID09IGN0cicgPyBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSA6IERvZXNOb3RNYXRjaFxuICB8IChcbiAgICAgIENvbnN0cnVjdG9yKGN0ciksXG4gICAgICBDYXN0KGQsIFN1bShzbTEpIHwgUmVjKF8sIFN1bShzbTEpKSwgU3VtKHNtMikgfCBSZWMoXywgU3VtKHNtMikpKSxcbiAgICApID0+XG4gICAgc3dpdGNoIChjYXN0X3N1bV9tYXBzKHNtMSwgc20yKSkge1xuICAgIHwgU29tZShjYXN0bWFwKSA9PiBtYXRjaGVzX2Nhc3RfU3VtKGN0ciwgTm9uZSwgZCwgW2Nhc3RtYXBdKVxuICAgIHwgTm9uZSA9PiBEb2VzTm90TWF0Y2hcbiAgICB9XG4gIHwgKENvbnN0cnVjdG9yKF8pLCBDYXN0KGQsIFN1bShfKSB8IFJlYyhfLCBTdW0oXykpLCBVbmtub3duKF8pKSkgPT5cbiAgICBtYXRjaGVzKGRwLCBkKVxuICB8IChDb25zdHJ1Y3RvcihfKSwgQ2FzdChkLCBVbmtub3duKF8pLCBTdW0oXykgfCBSZWMoXywgU3VtKF8pKSkpID0+XG4gICAgbWF0Y2hlcyhkcCwgZClcbiAgfCAoQ29uc3RydWN0b3IoXyksIF8pID0+IERvZXNOb3RNYXRjaFxuXG4gIHwgKFR1cGxlKGRwcyksIFR1cGxlKGRzKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgoZHBzKSAhPSBMaXN0Lmxlbmd0aChkcykpIHtcbiAgICAgIERvZXNOb3RNYXRjaDtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAocmVzdWx0LCBkcCwgZCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgICAgICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgICAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gICAgICAgICAgfCBNYXRjaGVzKGVudikgPT5cbiAgICAgICAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcCwgZCkpIHtcbiAgICAgICAgICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgICAgICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgICAgICAgIHwgTWF0Y2hlcyhlbnYnKSA9PiBNYXRjaGVzKEVudmlyb25tZW50LnVuaW9uKGVudiwgZW52JykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSksXG4gICAgICAgIGRwcyxcbiAgICAgICAgZHMsXG4gICAgICApO1xuICAgIH1cbiAgfCAoVHVwbGUoZHBzKSwgQ2FzdChkLCBQcm9kKHR5cyksIFByb2QodHlzJykpKSA9PlxuICAgIGFzc2VydChMaXN0Lmxlbmd0aCh0eXMpID09IExpc3QubGVuZ3RoKHR5cycpKTtcbiAgICBtYXRjaGVzX2Nhc3RfVHVwbGUoXG4gICAgICBkcHMsXG4gICAgICBkLFxuICAgICAgTGlzdC5tYXAocCA9PiBbcF0sIExpc3QuY29tYmluZSh0eXMsIHR5cycpKSxcbiAgICApO1xuICB8IChUdXBsZShkcHMpLCBDYXN0KGQsIFByb2QodHlzKSwgVW5rbm93bihfKSkpID0+XG4gICAgbWF0Y2hlc19jYXN0X1R1cGxlKFxuICAgICAgZHBzLFxuICAgICAgZCxcbiAgICAgIExpc3QubWFwKFxuICAgICAgICBwID0+IFtwXSxcbiAgICAgICAgTGlzdC5jb21iaW5lKHR5cywgTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIGNvbnN0X3Vua25vd24pKSxcbiAgICAgICksXG4gICAgKVxuICB8IChUdXBsZShkcHMpLCBDYXN0KGQsIFVua25vd24oXyksIFByb2QodHlzJykpKSA9PlxuICAgIG1hdGNoZXNfY2FzdF9UdXBsZShcbiAgICAgIGRwcyxcbiAgICAgIGQsXG4gICAgICBMaXN0Lm1hcChcbiAgICAgICAgcCA9PiBbcF0sXG4gICAgICAgIExpc3QuY29tYmluZShMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzJyksIGNvbnN0X3Vua25vd24pLCB0eXMnKSxcbiAgICAgICksXG4gICAgKVxuICB8IChUdXBsZShfKSwgQ2FzdChfKSkgPT4gRG9lc05vdE1hdGNoXG4gIHwgKFR1cGxlKF8pLCBfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCAoQ29ucyhfKSB8IExpc3RMaXQoXyksIENhc3QoZCwgTGlzdCh0eTEpLCBMaXN0KHR5MikpKSA9PlxuICAgIG1hdGNoZXNfY2FzdF9Db25zKGRwLCBkLCBbKHR5MSwgdHkyKV0pXG4gIHwgKENvbnMoXykgfCBMaXN0TGl0KF8pLCBDYXN0KGQsIFVua25vd24oXyksIExpc3QodHkyKSkpID0+XG4gICAgbWF0Y2hlc19jYXN0X0NvbnMoZHAsIGQsIFsoVW5rbm93bihJbnRlcm5hbCksIHR5MildKVxuICB8IChDb25zKF8pIHwgTGlzdExpdChfKSwgQ2FzdChkLCBMaXN0KHR5MSksIFVua25vd24oXykpKSA9PlxuICAgIG1hdGNoZXNfY2FzdF9Db25zKGRwLCBkLCBbKHR5MSwgVW5rbm93bihJbnRlcm5hbCkpXSlcbiAgfCAoQ29ucyhfLCBfKSwgQ29ucyhfLCBfKSlcbiAgfCAoTGlzdExpdChfLCBfKSwgQ29ucyhfLCBfKSlcbiAgfCAoQ29ucyhfLCBfKSwgTGlzdExpdChfKSlcbiAgfCAoTGlzdExpdChfKSwgTGlzdExpdChfKSkgPT4gbWF0Y2hlc19jYXN0X0NvbnMoZHAsIGQsIFtdKVxuICB8IChDb25zKF8pIHwgTGlzdExpdChfKSwgXykgPT4gRG9lc05vdE1hdGNoXG4gIH1cbmFuZCBtYXRjaGVzX2Nhc3RfU3VtID1cbiAgICAoXG4gICAgICBjdHI6IHN0cmluZyxcbiAgICAgIGRwOiBvcHRpb24oREhQYXQudCksXG4gICAgICBkOiBESEV4cC50LFxuICAgICAgY2FzdG1hcHM6IGxpc3QoQ29uc3RydWN0b3JNYXAudCgoVHlwLnQsIFR5cC50KSkpLFxuICAgIClcbiAgICA6IG1hdGNoX3Jlc3VsdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBDb25zdHJ1Y3RvcihjdHInKSA9PlxuICAgIHN3aXRjaCAoXG4gICAgICBkcCxcbiAgICAgIGNhc3RtYXBzIHw+IExpc3QubWFwKENvbnN0cnVjdG9yTWFwLmZpbmRfb3B0KGN0cicpKSB8PiBPcHRVdGlsLnNlcXVlbmNlLFxuICAgICkge1xuICAgIHwgKE5vbmUsIFNvbWUoXykpID0+XG4gICAgICBjdHIgPT0gY3RyJyA/IE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpIDogRG9lc05vdE1hdGNoXG4gICAgfCBfID0+IERvZXNOb3RNYXRjaFxuICAgIH1cbiAgfCBBcChDb25zdHJ1Y3RvcihjdHInKSwgZCcpID0+XG4gICAgc3dpdGNoIChcbiAgICAgIGRwLFxuICAgICAgY2FzdG1hcHMgfD4gTGlzdC5tYXAoQ29uc3RydWN0b3JNYXAuZmluZF9vcHQoY3RyJykpIHw+IE9wdFV0aWwuc2VxdWVuY2UsXG4gICAgKSB7XG4gICAgfCAoU29tZShkcCksIFNvbWUoc2lkZV9jYXN0cykpID0+XG4gICAgICBtYXRjaGVzKGRwLCBESEV4cC5hcHBseV9jYXN0cyhkJywgc2lkZV9jYXN0cykpXG4gICAgfCBfID0+IERvZXNOb3RNYXRjaFxuICAgIH1cbiAgfCBDYXN0KGQnLCBTdW0oc20xKSB8IFJlYyhfLCBTdW0oc20xKSksIFN1bShzbTIpIHwgUmVjKF8sIFN1bShzbTIpKSkgPT5cbiAgICBzd2l0Y2ggKGNhc3Rfc3VtX21hcHMoc20xLCBzbTIpKSB7XG4gICAgfCBTb21lKGNhc3RtYXApID0+IG1hdGNoZXNfY2FzdF9TdW0oY3RyLCBkcCwgZCcsIFtjYXN0bWFwLCAuLi5jYXN0bWFwc10pXG4gICAgfCBOb25lID0+IERvZXNOb3RNYXRjaFxuICAgIH1cbiAgfCBDYXN0KGQnLCBTdW0oXykgfCBSZWMoXywgU3VtKF8pKSwgVW5rbm93bihfKSlcbiAgfCBDYXN0KGQnLCBVbmtub3duKF8pLCBTdW0oXykgfCBSZWMoXywgU3VtKF8pKSkgPT5cbiAgICBtYXRjaGVzX2Nhc3RfU3VtKGN0ciwgZHAsIGQnLCBjYXN0bWFwcylcbiAgfCBGcmVlVmFyKF8pXG4gIHwgRXhwYW5kaW5nS2V5d29yZChfKVxuICB8IEludmFsaWRUZXh0KF8pXG4gIHwgTGV0KF8pXG4gIHwgQXAoXylcbiAgfCBBcEJ1aWx0aW4oXylcbiAgfCBCaW5Cb29sT3AoXylcbiAgfCBCaW5JbnRPcChfKVxuICB8IEJpbkZsb2F0T3AoXylcbiAgfCBCaW5TdHJpbmdPcChfKVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKF8pXG4gIHwgRW1wdHlIb2xlKF8pXG4gIHwgTm9uRW1wdHlIb2xlKF8pXG4gIHwgRmFpbGVkQ2FzdChfLCBfLCBfKVxuICB8IFRlc3QoXylcbiAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pXG4gIHwgQ29uc2lzdGVudENhc2UoXylcbiAgfCBQcmooXylcbiAgfCBJZlRoZW5FbHNlKF8pXG4gIHwgQnVpbHRpbkZ1bihfKSA9PiBJbmRldE1hdGNoXG4gIHwgQ2FzdChfKVxuICB8IEJvdW5kVmFyKF8pXG4gIHwgRml4RihfKVxuICB8IEZ1bihfKVxuICB8IEJvb2xMaXQoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IFN0cmluZ0xpdChfKVxuICB8IExpc3RMaXQoXylcbiAgfCBUdXBsZShfKVxuICB8IFNlcXVlbmNlKF8sIF8pXG4gIHwgQ2xvc3VyZShfKVxuICB8IEZpbHRlcihfKVxuICB8IENvbnMoXylcbiAgfCBMaXN0Q29uY2F0KF8pID0+IERvZXNOb3RNYXRjaFxuICB9XG5hbmQgbWF0Y2hlc19jYXN0X1R1cGxlID1cbiAgICAoXG4gICAgICBkcHM6IGxpc3QoREhQYXQudCksXG4gICAgICBkOiBESEV4cC50LFxuICAgICAgZWx0X2Nhc3RzOiBsaXN0KGxpc3QoKFR5cC50LCBUeXAudCkpKSxcbiAgICApXG4gICAgOiBtYXRjaF9yZXN1bHQgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgVHVwbGUoZHMpID0+XG4gICAgaWYgKExpc3QubGVuZ3RoKGRwcykgIT0gTGlzdC5sZW5ndGgoZHMpKSB7XG4gICAgICBEb2VzTm90TWF0Y2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChMaXN0Lmxlbmd0aChMaXN0LmNvbWJpbmUoZHBzLCBkcykpID09IExpc3QubGVuZ3RoKGVsdF9jYXN0cykpO1xuICAgICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgICAoKChkcCwgZCksIGNhc3RzKSwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICAgICAgICB8IERvZXNOb3RNYXRjaFxuICAgICAgICAgIHwgSW5kZXRNYXRjaCA9PiByZXN1bHRcbiAgICAgICAgICB8IE1hdGNoZXMoZW52KSA9PlxuICAgICAgICAgICAgc3dpdGNoIChtYXRjaGVzKGRwLCBESEV4cC5hcHBseV9jYXN0cyhkLCBjYXN0cykpKSB7XG4gICAgICAgICAgICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgICAgICAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gICAgICAgICAgICB8IE1hdGNoZXMoZW52JykgPT4gTWF0Y2hlcyhFbnZpcm9ubWVudC51bmlvbihlbnYsIGVudicpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgTGlzdC5jb21iaW5lKExpc3QuY29tYmluZShkcHMsIGRzKSwgZWx0X2Nhc3RzKSxcbiAgICAgICAgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSksXG4gICAgICApO1xuICAgIH1cbiAgfCBDYXN0KGQnLCBQcm9kKHR5cyksIFByb2QodHlzJykpID0+XG4gICAgaWYgKExpc3QubGVuZ3RoKGRwcykgIT0gTGlzdC5sZW5ndGgodHlzKSkge1xuICAgICAgRG9lc05vdE1hdGNoO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoTGlzdC5sZW5ndGgodHlzKSA9PSBMaXN0Lmxlbmd0aCh0eXMnKSk7XG4gICAgICBtYXRjaGVzX2Nhc3RfVHVwbGUoXG4gICAgICAgIGRwcyxcbiAgICAgICAgZCcsXG4gICAgICAgIExpc3QubWFwMihMaXN0LmNvbnMsIExpc3QuY29tYmluZSh0eXMsIHR5cycpLCBlbHRfY2FzdHMpLFxuICAgICAgKTtcbiAgICB9XG4gIHwgQ2FzdChkJywgUHJvZCh0eXMpLCBVbmtub3duKF8pKSA9PlxuICAgIGxldCB0eXMnID0gTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIGNvbnN0X3Vua25vd24pO1xuICAgIG1hdGNoZXNfY2FzdF9UdXBsZShcbiAgICAgIGRwcyxcbiAgICAgIGQnLFxuICAgICAgTGlzdC5tYXAyKExpc3QuY29ucywgTGlzdC5jb21iaW5lKHR5cywgdHlzJyksIGVsdF9jYXN0cyksXG4gICAgKTtcbiAgfCBDYXN0KGQnLCBVbmtub3duKF8pLCBQcm9kKHR5cycpKSA9PlxuICAgIGxldCB0eXMgPSBMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzJyksIGNvbnN0X3Vua25vd24pO1xuICAgIG1hdGNoZXNfY2FzdF9UdXBsZShcbiAgICAgIGRwcyxcbiAgICAgIGQnLFxuICAgICAgTGlzdC5tYXAyKExpc3QuY29ucywgTGlzdC5jb21iaW5lKHR5cywgdHlzJyksIGVsdF9jYXN0cyksXG4gICAgKTtcbiAgfCBDYXN0KF8sIF8sIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEJvdW5kVmFyKF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEZyZWVWYXIoXykgPT4gSW5kZXRNYXRjaFxuICB8IEludmFsaWRUZXh0KF8pID0+IEluZGV0TWF0Y2hcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBMZXQoXywgXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEZpeEYoXywgXywgXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgRnVuKF8sIF8sIF8sIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IENsb3N1cmUoXywgRnVuKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBDbG9zdXJlKF8sIF8pID0+IEluZGV0TWF0Y2hcbiAgfCBGaWx0ZXIoXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEFwKF8sIF8pID0+IEluZGV0TWF0Y2hcbiAgfCBBcEJ1aWx0aW4oXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEJpbkJvb2xPcChfLCBfLCBfKVxuICB8IEJpbkludE9wKF8sIF8sIF8pXG4gIHwgQmluRmxvYXRPcChfLCBfLCBfKVxuICB8IEJpblN0cmluZ09wKF8pXG4gIHwgQm9vbExpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBJbnRMaXQoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgU2VxdWVuY2UoXylcbiAgfCBCdWlsdGluRnVuKF8pXG4gIHwgVGVzdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBGbG9hdExpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBTdHJpbmdMaXQoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgTGlzdExpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBDb25zKF8sIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IExpc3RDb25jYXQoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgUHJqKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBDb25zaXN0ZW50Q2FzZShfKVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBFbXB0eUhvbGUoXykgPT4gSW5kZXRNYXRjaFxuICB8IE5vbkVtcHR5SG9sZShfKSA9PiBJbmRldE1hdGNoXG4gIHwgRmFpbGVkQ2FzdChfLCBfLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgSW52YWxpZE9wZXJhdGlvbihfKSA9PiBJbmRldE1hdGNoXG4gIHwgSWZUaGVuRWxzZShfKSA9PiBJbmRldE1hdGNoXG4gIH1cbmFuZCBtYXRjaGVzX2Nhc3RfQ29ucyA9XG4gICAgKGRwOiBESFBhdC50LCBkOiBESEV4cC50LCBlbHRfY2FzdHM6IGxpc3QoKFR5cC50LCBUeXAudCkpKTogbWF0Y2hfcmVzdWx0ID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExpc3RMaXQoXywgXywgXywgW10pID0+XG4gICAgc3dpdGNoIChkcCkge1xuICAgIHwgTGlzdExpdChfLCBbXSkgPT4gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSlcbiAgICB8IF8gPT4gRG9lc05vdE1hdGNoXG4gICAgfVxuICB8IExpc3RMaXQodSwgaSwgdHksIFtkaGQsIC4uLmR0bF0gYXMgZHMpID0+XG4gICAgc3dpdGNoIChkcCkge1xuICAgIHwgQ29ucyhkcDEsIGRwMikgPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcDEsIERIRXhwLmFwcGx5X2Nhc3RzKGRoZCwgZWx0X2Nhc3RzKSkpIHtcbiAgICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgIHwgTWF0Y2hlcyhlbnYxKSA9PlxuICAgICAgICBsZXQgbGlzdF9jYXN0cyA9XG4gICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAoYzogKFR5cC50LCBUeXAudCkpID0+IHtcbiAgICAgICAgICAgICAgbGV0ICh0eTEsIHR5MikgPSBjO1xuICAgICAgICAgICAgICAoVHlwLkxpc3QodHkxKSwgVHlwLkxpc3QodHkyKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWx0X2Nhc3RzLFxuICAgICAgICAgICk7XG4gICAgICAgIGxldCBkMiA9IERIRXhwLkxpc3RMaXQodSwgaSwgdHksIGR0bCk7XG4gICAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcDIsIERIRXhwLmFwcGx5X2Nhc3RzKGQyLCBsaXN0X2Nhc3RzKSkpIHtcbiAgICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gICAgICAgIHwgTWF0Y2hlcyhlbnYyKSA9PiBNYXRjaGVzKEVudmlyb25tZW50LnVuaW9uKGVudjEsIGVudjIpKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIHwgTGlzdExpdChfLCBkcHMpID0+XG4gICAgICBzd2l0Y2ggKExpc3RVdGlsLm9wdF96aXAoZHBzLCBkcykpIHtcbiAgICAgIHwgTm9uZSA9PiBEb2VzTm90TWF0Y2hcbiAgICAgIHwgU29tZShsc3QpID0+XG4gICAgICAgIGxzdFxuICAgICAgICB8PiBMaXN0Lm1hcCgoKGRwLCBkKSkgPT5cbiAgICAgICAgICAgICBtYXRjaGVzKGRwLCBESEV4cC5hcHBseV9jYXN0cyhkLCBlbHRfY2FzdHMpKVxuICAgICAgICAgICApXG4gICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgIChtYXRjaDEsIG1hdGNoMikgPT5cbiAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gxLCBtYXRjaDIpIHtcbiAgICAgICAgICAgICAgIHwgKERvZXNOb3RNYXRjaCwgXylcbiAgICAgICAgICAgICAgIHwgKF8sIERvZXNOb3RNYXRjaCkgPT4gRG9lc05vdE1hdGNoXG4gICAgICAgICAgICAgICB8IChJbmRldE1hdGNoLCBfKVxuICAgICAgICAgICAgICAgfCAoXywgSW5kZXRNYXRjaCkgPT4gSW5kZXRNYXRjaFxuICAgICAgICAgICAgICAgfCAoTWF0Y2hlcyhlbnYxKSwgTWF0Y2hlcyhlbnYyKSkgPT5cbiAgICAgICAgICAgICAgICAgTWF0Y2hlcyhFbnZpcm9ubWVudC51bmlvbihlbnYxLCBlbnYyKSlcbiAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSksXG4gICAgICAgICAgIClcbiAgICAgIH1cbiAgICB8IF8gPT4gZmFpbHdpdGgoXCJjYWxsZWQgbWF0Y2hlc19jYXN0X0NvbnMgd2l0aCBub24tbGlzdCBwYXR0ZXJuXCIpXG4gICAgfVxuICB8IENvbnMoZDEsIGQyKSA9PlxuICAgIHN3aXRjaCAoZHApIHtcbiAgICB8IENvbnMoZHAxLCBkcDIpID0+XG4gICAgICBzd2l0Y2ggKG1hdGNoZXMoZHAxLCBESEV4cC5hcHBseV9jYXN0cyhkMSwgZWx0X2Nhc3RzKSkpIHtcbiAgICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgIHwgTWF0Y2hlcyhlbnYxKSA9PlxuICAgICAgICBsZXQgbGlzdF9jYXN0cyA9XG4gICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAoYzogKFR5cC50LCBUeXAudCkpID0+IHtcbiAgICAgICAgICAgICAgbGV0ICh0eTEsIHR5MikgPSBjO1xuICAgICAgICAgICAgICAoVHlwLkxpc3QodHkxKSwgVHlwLkxpc3QodHkyKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWx0X2Nhc3RzLFxuICAgICAgICAgICk7XG4gICAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcDIsIERIRXhwLmFwcGx5X2Nhc3RzKGQyLCBsaXN0X2Nhc3RzKSkpIHtcbiAgICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gICAgICAgIHwgTWF0Y2hlcyhlbnYyKSA9PiBNYXRjaGVzKEVudmlyb25tZW50LnVuaW9uKGVudjEsIGVudjIpKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIHwgTGlzdExpdChfLCBbXSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCBMaXN0TGl0KHR5LCBbZHBoZCwgLi4uZHB0bF0pID0+XG4gICAgICBzd2l0Y2ggKG1hdGNoZXMoZHBoZCwgREhFeHAuYXBwbHlfY2FzdHMoZDEsIGVsdF9jYXN0cykpKSB7XG4gICAgICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gICAgICB8IE1hdGNoZXMoZW52MSkgPT5cbiAgICAgICAgbGV0IGxpc3RfY2FzdHMgPVxuICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgKGM6IChUeXAudCwgVHlwLnQpKSA9PiB7XG4gICAgICAgICAgICAgIGxldCAodHkxLCB0eTIpID0gYztcbiAgICAgICAgICAgICAgKFR5cC5MaXN0KHR5MSksIFR5cC5MaXN0KHR5MikpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVsdF9jYXN0cyxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQgZHAyID0gREhQYXQuTGlzdExpdCh0eSwgZHB0bCk7XG4gICAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcDIsIERIRXhwLmFwcGx5X2Nhc3RzKGQyLCBsaXN0X2Nhc3RzKSkpIHtcbiAgICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gICAgICAgIHwgTWF0Y2hlcyhlbnYyKSA9PiBNYXRjaGVzKEVudmlyb25tZW50LnVuaW9uKGVudjEsIGVudjIpKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIHwgXyA9PiBmYWlsd2l0aChcImNhbGxlZCBtYXRjaGVzX2Nhc3RfQ29ucyB3aXRoIG5vbi1saXN0IHBhdHRlcm5cIilcbiAgICB9XG4gIHwgQ2FzdChkJywgTGlzdCh0eTEpLCBMaXN0KHR5MikpID0+XG4gICAgbWF0Y2hlc19jYXN0X0NvbnMoZHAsIGQnLCBbKHR5MSwgdHkyKSwgLi4uZWx0X2Nhc3RzXSlcbiAgfCBDYXN0KGQnLCBMaXN0KHR5MSksIFVua25vd24oXykpID0+XG4gICAgbWF0Y2hlc19jYXN0X0NvbnMoZHAsIGQnLCBbKHR5MSwgVW5rbm93bihJbnRlcm5hbCkpLCAuLi5lbHRfY2FzdHNdKVxuICB8IENhc3QoZCcsIFVua25vd24oXyksIExpc3QodHkyKSkgPT5cbiAgICBtYXRjaGVzX2Nhc3RfQ29ucyhkcCwgZCcsIFsoVW5rbm93bihJbnRlcm5hbCksIHR5MiksIC4uLmVsdF9jYXN0c10pXG4gIHwgQ2FzdChfLCBfLCBfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBCb3VuZFZhcihfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBGcmVlVmFyKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBJbnZhbGlkVGV4dChfKSA9PiBJbmRldE1hdGNoXG4gIHwgRXhwYW5kaW5nS2V5d29yZChfKSA9PiBJbmRldE1hdGNoXG4gIHwgTGV0KF8sIF8sIF8pID0+IEluZGV0TWF0Y2hcbiAgfCBGaXhGKF8sIF8sIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEZ1bihfLCBfLCBfLCBfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBDbG9zdXJlKF8sIGQnKSA9PiBtYXRjaGVzX2Nhc3RfQ29ucyhkcCwgZCcsIGVsdF9jYXN0cylcbiAgfCBGaWx0ZXIoXywgZCcpID0+IG1hdGNoZXNfY2FzdF9Db25zKGRwLCBkJywgZWx0X2Nhc3RzKVxuICB8IEFwKF8sIF8pID0+IEluZGV0TWF0Y2hcbiAgfCBBcEJ1aWx0aW4oXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEJpbkJvb2xPcChfLCBfLCBfKVxuICB8IEJpbkludE9wKF8sIF8sIF8pXG4gIHwgQmluRmxvYXRPcChfLCBfLCBfKVxuICB8IEJpblN0cmluZ09wKF8pXG4gIHwgTGlzdENvbmNhdChfKVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgQm9vbExpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBJbnRMaXQoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgU2VxdWVuY2UoXylcbiAgfCBUZXN0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEZsb2F0TGl0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IFN0cmluZ0xpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBUdXBsZShfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBQcmooXykgPT4gSW5kZXRNYXRjaFxuICB8IENvbnN0cnVjdG9yKF8pID0+IERvZXNOb3RNYXRjaFxuICB8IENvbnNpc3RlbnRDYXNlKF8pXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXykgPT4gSW5kZXRNYXRjaFxuICB8IEVtcHR5SG9sZShfKSA9PiBJbmRldE1hdGNoXG4gIHwgTm9uRW1wdHlIb2xlKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBGYWlsZWRDYXN0KF8sIF8sIF8pID0+IEluZGV0TWF0Y2hcbiAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBJZlRoZW5FbHNlKF8pID0+IEluZGV0TWF0Y2hcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgUGFzc1xuICB8IEZhaWxcbiAgfCBJbmRldDtcblxubGV0IHRvX3N0cmluZzogdCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBQYXNzID0+IFwiUGFzc1wiXG4gIHwgRmFpbCA9PiBcIkZhaWxcIlxuICB8IEluZGV0ID0+IFwiSW5kZXRcIjtcblxubGV0IGpvaW46ICh0LCB0KSA9PiB0ID1cbiAgKGEsIGIpID0+XG4gICAgc3dpdGNoIChhLCBiKSB7XG4gICAgfCAoRmFpbCwgXykgPT4gRmFpbFxuICAgIHwgKEluZGV0LCBGYWlsKSA9PiBGYWlsXG4gICAgfCAoSW5kZXQsIF8pID0+IEluZGV0XG4gICAgfCAoUGFzcywgeCkgPT4geFxuICAgIH07XG5cbmxldCBqb2luX2FsbDogbGlzdCh0KSA9PiB0ID0gTGlzdC5mb2xkX2xlZnQoam9pbiwgUGFzcyk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBGSVhNRTogTWFrZSBtb3JlIG9idmlvdXMgbmFtZXMuICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGluc3RhbmNlX3JlcG9ydCA9IChESEV4cC50LCBUZXN0U3RhdHVzLnQpO1xuXG5sZXQgam9pbnRfc3RhdHVzOiBsaXN0KGluc3RhbmNlX3JlcG9ydCkgPT4gVGVzdFN0YXR1cy50ID1cbiAgcmVwb3J0cyA9PiBUZXN0U3RhdHVzLmpvaW5fYWxsKExpc3QubWFwKHNuZCwgcmVwb3J0cykpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHJlcG9ydCA9IChLZXl3b3JkSUQudCwgbGlzdChpbnN0YW5jZV9yZXBvcnQpKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gbGlzdChyZXBvcnQpO1xubGV0IGVtcHR5OiB0ID0gW107XG5cbmxldCBsb29rdXAgPSBMaXN0LmFzc29jX29wdDtcblxubGV0IGxvb2t1cF9hbmRfam9pbiA9IChuLCB0ZXN0X21hcCkgPT5cbiAgc3dpdGNoIChsb29rdXAobiwgdGVzdF9tYXApKSB7XG4gIHwgTm9uZSA9PiBUZXN0U3RhdHVzLkluZGV0XG4gIHwgU29tZShyZXBvcnRzKSA9PiBqb2ludF9zdGF0dXMocmVwb3J0cylcbiAgfTtcblxubGV0IGV4dGVuZCA9ICgoaWQsIHJlcG9ydCksIHRlc3RfbWFwKSA9PiB7XG4gIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoaWQsIHRlc3RfbWFwKSkge1xuICB8IFNvbWUoYSkgPT4gTGlzdC5yZW1vdmVfYXNzb2MoaWQsIHRlc3RfbWFwKSBAIFsoaWQsIGEgQCBbcmVwb3J0XSldXG4gIHwgTm9uZSA9PiB0ZXN0X21hcCBAIFsoaWQsIFtyZXBvcnRdKV1cbiAgfTtcbn07XG5cbmxldCBjb3VudCA9IExpc3QubGVuZ3RoO1xuXG5sZXQgY291bnRfc3RhdHVzID0gKHN0YXR1cywgdGVzdF9tYXApID0+XG4gIExpc3QuZmlsdGVyKFxuICAgICgoXywgaW5zdGFuY2VzKSkgPT4gc3RhdHVzID09IGpvaW50X3N0YXR1cyhpbnN0YW5jZXMpLFxuICAgIHRlc3RfbWFwLFxuICApXG4gIHw+IExpc3QubGVuZ3RoO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gUGF0dGVybk1hdGNoO1xub3BlbiBESDtcblxuLyogVHJhbnNpdGlvbi5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBldmFsdWF0aW9uIHNlbWFudGljcyBvZiBIYXplbCBpbiB0ZXJtcyBvZiBzbWFsbCBzdGVwXG4gICBldmFsdWF0aW9uLiBUaGVzZSBzbWFsbCBzdGVwcyBhcmUgd3JhcHBlZCB1cCBpbnRvIGEgYmlnIHN0ZXAgaW4gRXZhbHVhdG9yLnJlLlxuXG4gICBJJ2xsIHVzZSB0aGUgU2VxdWVuY2UgY2FzZSBhcyBhbiBleGFtcGxlOlxuXG4gICAgfCBTZXF1ZW5jZShkMSwgZDIpID0+XG4gICAgICAgIGxldC4gXyA9IG90aGVyd2lzZShkMSA9PiBTZXF1ZW5jZShkMSwgZDIpKVxuICAgICAgICBhbmQuIF8gPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCAwLCBkMSk7XG4gICAgICAgIFN0ZXAoe2FwcGx5OiAoKSA9PiBkMiwga2luZDogU2VxdWVuY2UsIGZpbmFsOiBmYWxzZX0pO1xuXG5cbiAgICBFYWNoIHN0ZXAgc2VtYW50aWNzIHN0YXJ0cyB3aXRoIGEgYGxldC4gKCkgPSBvdGhlcndpc2UoLi4uKWAgdGhhdCBkZWZpbmVzIGhvd1xuICAgIHRvIHdyYXAgdGhlIGV4cHJlc3Npb24gYmFjayB1cCBpZiB0aGUgc3RlcCBjb3VsZG4ndCBiZSBldmFsdWF0ZWQuXG5cbiAgICBUaGlzIGlzIGZvbGxvd2VkIGJ5IGEgc2VyaWVzIG9mIGBhbmQuIGQxJyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIDxpPiwgPGQxPilgXG4gICAgd2hpY2ggaW5kaWNhdGUgdGhhdCBpbiBvcmRlciB0byBldmFsdWF0ZSB0aGUgc3RlcCwgPGQxPiBtdXN0IGJlIGZpbmFsLiAocmVxX3ZhbHVlXG4gICAgaXMgYWxzbyBhdmFpbGFibGUgaWYgaXQgbmVlZHMgdG8gYmUgYSB2YWx1ZSkuIE5vdGUgdGhhdCBpZiBzdWNjZXNzZnVsLCBkMScgd2lsbFxuICAgIGJlIHRoZSBmdWxseS1ldmFsdWF0ZWQgdmVyc2lvbiBvZiBkMS4gVGhlIHN1Yi1leHByZXNzaW9ucyBhcmUgYWxsIGVudW1lcmF0ZWQgYnlcbiAgICB0aGUgPGk+IGZpZWxkLCBzbyBpPTAgaW5kaWNhdGVzIHRoYXQgaXQgaXMgdGhlIGZpcnN0IHN1Yi1leHByZXNzaW9uLCBpPTEgdGhlXG4gICAgc2Vjb25kIGV0Yy5cblxuICAgIEZpbmFsbHksIHdlIGhhdmUgdGhlIFN0ZXAgY29uc3RydWN0IHRoYXQgZGVmaW5lcyB0aGUgYWN0dWFsIHN0ZXAuIE5vdGUgXCJTdGVwXCJzXG4gICAgc2hvdWxkIGJlIHVzZWQgaWYgYW5kIG9ubHkgaWYgdGhleSBjaGFuZ2UgdGhlIGV4cHJlc3Npb24uIElmIHRoZXkgZG8gbm90IGNoYW5nZVxuICAgIHRoZSBleHByZXNzaW9uLCB1c2UgYENvbnN0cnVjdG9yYCBvciBgSW5kZXRgLlxuXG4gICAgVGhlIHN0ZXAgZGVmaW5lcyBmaXJzdGx5LCBhIGAoKSA9PiAuLi5gIGZ1bmN0aW9uIGdpdmluZyB0aGUgcmVzdWx0IG9mIHRoZSBzdGVwLFxuICAgIHNlY29uZGx5IGEgYGtpbmRgLCB0aGF0IGRlc2NyaWJlcyB0aGUgc3RlcCAod2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSBzdGVwcGVyKVxuXG4gICAgTGFzdGx5LCB0aGUgYHZhbHVlYCBmaWVsZCBhbGxvd3MgZm9yIHNvbWUgc3BlZWRpbmcgdXAgb2YgdGhlIGV2YWx1YXRvci4gSWYgeW91XG4gICAgYXJlIHVuc3VyZSwgaXQgaXMgYWx3YXlzIHNhZmUgdG8gcHV0IGB2YWx1ZTogZmFsc2VgLlxuXG4gICAgYHZhbHVlOiB0cnVlYCBndWFyYW50ZWVzOlxuICAgICAgLSBpZiBhbGwgcmVxdWlyZW1lbnRzIGFyZSB2YWx1ZXMsIHRoZW4gdGhlIG91dHB1dCB3aWxsIGJlIGEgdmFsdWVcbiAgICAgIC0gaWYgc29tZSByZXF1aXJlbWVudHMgYXJlIGluZGV0LCB0aGVuIHRoZSBvdXRwdXQgd2lsbCBiZSBpbmRldFxuXG4gICAgQSB2YWx1ZSBpcyBlaXRoZXIgYSBsaXRlcmFsLCBvciBhIGZ1bmN0aW9uIHdpdGggYSBjbG9zdXJlLiAoZnVuY3Rpb25zIHdpdGhvdXRcbiAgICBjbG9zdXJlcyBpbW1lZGlhdGVseSBpbnNpZGUgdGhlbSBkbyBub3QgY291bnQgYXMgdmFsdWVzKS5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBJbnZhbGlkU3RlcFxuICB8IFZhckxvb2t1cFxuICB8IFNlcXVlbmNlXG4gIHwgTGV0QmluZFxuICB8IEZ1bkNsb3N1cmVcbiAgfCBGaXhVbndyYXBcbiAgfCBVcGRhdGVUZXN0XG4gIHwgRnVuQXBcbiAgfCBDYXN0QXBcbiAgfCBCdWlsdGluV3JhcFxuICB8IEJ1aWx0aW5BcChzdHJpbmcpXG4gIHwgQmluQm9vbE9wKFRlcm1CYXNlLlVFeHAub3BfYmluX2Jvb2wpXG4gIHwgQmluSW50T3AoVGVybUJhc2UuVUV4cC5vcF9iaW5faW50KVxuICB8IEJpbkZsb2F0T3AoVGVybUJhc2UuVUV4cC5vcF9iaW5fZmxvYXQpXG4gIHwgQmluU3RyaW5nT3AoVGVybUJhc2UuVUV4cC5vcF9iaW5fc3RyaW5nKVxuICB8IENvbmRpdGlvbmFsKGJvb2wpXG4gIHwgUHJvamVjdGlvblxuICB8IExpc3RDb25zXG4gIHwgTGlzdENvbmNhdFxuICB8IENhc2VBcHBseVxuICB8IENhc2VOZXh0XG4gIHwgQ29tcGxldGVDbG9zdXJlXG4gIHwgQ29tcGxldGVGaWx0ZXJcbiAgfCBDYXN0XG4gIHwgU2tpcDtcblxubW9kdWxlIENhc3RIZWxwZXJzID0ge1xuICBbQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgZ3JvdW5kX2Nhc2VzID1cbiAgICB8IEhvbGVcbiAgICB8IEdyb3VuZFxuICAgIHwgTm90R3JvdW5kT3JIb2xlKFR5cC50KSAvKiB0aGUgYXJndW1lbnQgaXMgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdW5kIHR5cGUgKi87XG5cbiAgbGV0IGNvbnN0X3Vua25vd246ICdhID0+IFR5cC50ID0gXyA9PiBVbmtub3duKEludGVybmFsKTtcblxuICBsZXQgZ3JvdW5kZWRfQXJyb3cgPVxuICAgIE5vdEdyb3VuZE9ySG9sZShBcnJvdyhVbmtub3duKEludGVybmFsKSwgVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgbGV0IGdyb3VuZGVkX1Byb2QgPSBsZW5ndGggPT5cbiAgICBOb3RHcm91bmRPckhvbGUoXG4gICAgICBQcm9kKExpc3RVdGlsLnJlcGxpY2F0ZShsZW5ndGgsIFR5cC5Vbmtub3duKEludGVybmFsKSkpLFxuICAgICk7XG4gIGxldCBncm91bmRlZF9TdW0gPSAoc206IFR5cC5zdW1fbWFwKTogZ3JvdW5kX2Nhc2VzID0+IHtcbiAgICBsZXQgc20nID0gc20gfD4gQ29uc3RydWN0b3JNYXAubWFwKE9wdGlvbi5tYXAoY29uc3RfdW5rbm93bikpO1xuICAgIE5vdEdyb3VuZE9ySG9sZShTdW0oc20nKSk7XG4gIH07XG4gIGxldCBncm91bmRlZF9MaXN0ID0gTm90R3JvdW5kT3JIb2xlKExpc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcblxuICBsZXQgcmVjIGdyb3VuZF9jYXNlc19vZiA9ICh0eTogVHlwLnQpOiBncm91bmRfY2FzZXMgPT4ge1xuICAgIGxldCBpc19ncm91bmRfYXJnOiBvcHRpb24oVHlwLnQpID0+IGJvb2wgPVxuICAgICAgZnVuXG4gICAgICB8IE5vbmVcbiAgICAgIHwgU29tZShUeXAuVW5rbm93bihfKSkgPT4gdHJ1ZVxuICAgICAgfCBTb21lKHR5KSA9PiBncm91bmRfY2FzZXNfb2YodHkpID09IEdyb3VuZDtcbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBVbmtub3duKF8pID0+IEhvbGVcbiAgICB8IEJvb2xcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IFN0cmluZ1xuICAgIHwgVmFyKF8pXG4gICAgfCBSZWMoXylcbiAgICB8IEFycm93KFVua25vd24oXyksIFVua25vd24oXykpXG4gICAgfCBMaXN0KFVua25vd24oXykpID0+IEdyb3VuZFxuICAgIHwgUHJvZCh0eXMpID0+XG4gICAgICBpZiAoTGlzdC5mb3JfYWxsKFxuICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICB8IFR5cC5Vbmtub3duKF8pID0+IHRydWVcbiAgICAgICAgICAgIHwgXyA9PiBmYWxzZSxcbiAgICAgICAgICAgIHR5cyxcbiAgICAgICAgICApKSB7XG4gICAgICAgIEdyb3VuZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR5cyB8PiBMaXN0Lmxlbmd0aCB8PiBncm91bmRlZF9Qcm9kO1xuICAgICAgfVxuICAgIHwgU3VtKHNtKSA9PlxuICAgICAgc20gfD4gQ29uc3RydWN0b3JNYXAuaXNfZ3JvdW5kKGlzX2dyb3VuZF9hcmcpXG4gICAgICAgID8gR3JvdW5kIDogZ3JvdW5kZWRfU3VtKHNtKVxuICAgIHwgQXJyb3coXywgXykgPT4gZ3JvdW5kZWRfQXJyb3dcbiAgICB8IExpc3QoXykgPT4gZ3JvdW5kZWRfTGlzdFxuICAgIH07XG4gIH07XG59O1xuXG5sZXQgZXZhbHVhdGVfZXh0ZW5kX2VudiA9XG4gICAgKG5ld19iaW5kaW5nczogRW52aXJvbm1lbnQudCwgdG9fZXh0ZW5kOiBDbG9zdXJlRW52aXJvbm1lbnQudClcbiAgICA6IENsb3N1cmVFbnZpcm9ubWVudC50ID0+IHtcbiAgdG9fZXh0ZW5kXG4gIHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2ZcbiAgfD4gRW52aXJvbm1lbnQudW5pb24obmV3X2JpbmRpbmdzKVxuICB8PiBDbG9zdXJlRW52aXJvbm1lbnQub2ZfZW52aXJvbm1lbnQ7XG59O1xuXG50eXBlIHJ1bGUgPVxuICB8IFN0ZXAoe1xuICAgICAgYXBwbHk6IHVuaXQgPT4gREhFeHAudCxcbiAgICAgIGtpbmQ6IHN0ZXBfa2luZCxcbiAgICAgIHZhbHVlOiBib29sLFxuICAgIH0pXG4gIHwgQ29uc3RydWN0b3JcbiAgfCBJbmRldDtcblxubW9kdWxlIHR5cGUgRVZfTU9ERSA9IHtcbiAgdHlwZSBzdGF0ZTtcbiAgdHlwZSByZXN1bHQ7XG4gIHR5cGUgcmVxdWlyZW1lbnQoJ2EpO1xuICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpO1xuXG4gIGxldCByZXFfdmFsdWU6XG4gICAgKERIRXhwLnQgPT4gcmVzdWx0LCBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBESEV4cC50KSA9PlxuICAgIHJlcXVpcmVtZW50KERIRXhwLnQpO1xuICBsZXQgcmVxX2FsbF92YWx1ZTpcbiAgICAoXG4gICAgICBESEV4cC50ID0+IHJlc3VsdCxcbiAgICAgIChFdmFsQ3R4LnQsIChsaXN0KERIRXhwLnQpLCBsaXN0KERIRXhwLnQpKSkgPT4gRXZhbEN0eC50LFxuICAgICAgbGlzdChESEV4cC50KVxuICAgICkgPT5cbiAgICByZXF1aXJlbWVudChsaXN0KERIRXhwLnQpKTtcbiAgbGV0IHJlcV9maW5hbDpcbiAgICAoREhFeHAudCA9PiByZXN1bHQsIEV2YWxDdHgudCA9PiBFdmFsQ3R4LnQsIERIRXhwLnQpID0+XG4gICAgcmVxdWlyZW1lbnQoREhFeHAudCk7XG4gIGxldCByZXFfYWxsX2ZpbmFsOlxuICAgIChcbiAgICAgIERIRXhwLnQgPT4gcmVzdWx0LFxuICAgICAgKEV2YWxDdHgudCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKSA9PiBFdmFsQ3R4LnQsXG4gICAgICBsaXN0KERIRXhwLnQpXG4gICAgKSA9PlxuICAgIHJlcXVpcmVtZW50KGxpc3QoREhFeHAudCkpO1xuXG4gIGxldCAobGV0Lik6IChyZXF1aXJlbWVudHMoJ2EsIERIRXhwLnQpLCAnYSA9PiBydWxlKSA9PiByZXN1bHQ7XG4gIGxldCAoYW5kLik6XG4gICAgKHJlcXVpcmVtZW50cygnYSwgJ2MgPT4gJ2IpLCByZXF1aXJlbWVudCgnYykpID0+XG4gICAgcmVxdWlyZW1lbnRzKCgnYSwgJ2MpLCAnYik7XG4gIGxldCBvdGhlcndpc2U6IChDbG9zdXJlRW52aXJvbm1lbnQudCwgJ2EpID0+IHJlcXVpcmVtZW50cyh1bml0LCAnYSk7XG5cbiAgbGV0IHVwZGF0ZV90ZXN0OiAoc3RhdGUsIEtleXdvcmRJRC50LCBUZXN0TWFwLmluc3RhbmNlX3JlcG9ydCkgPT4gdW5pdDtcbn07XG5cbm1vZHVsZSBUcmFuc2l0aW9uID0gKEVWOiBFVl9NT0RFKSA9PiB7XG4gIG9wZW4gRVY7XG4gIG9wZW4gREhFeHA7XG4gIGxldCAobGV0Lm1hdGNoKSA9ICgoZW52LCBtYXRjaF9yZXN1bHQpLCByKSA9PlxuICAgIHN3aXRjaCAobWF0Y2hfcmVzdWx0KSB7XG4gICAgfCBJbmRldE1hdGNoXG4gICAgfCBEb2VzTm90TWF0Y2ggPT4gSW5kZXRcbiAgICB8IE1hdGNoZXMoZW52JykgPT4gcihldmFsdWF0ZV9leHRlbmRfZW52KGVudicsIGVudikpXG4gICAgfTtcblxuICBsZXQgdHJhbnNpdGlvbiA9IChyZXEsIHN0YXRlLCBlbnYsIGQpOiAnYSA9PlxuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgQm91bmRWYXIoeCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIEJvdW5kVmFyKHgpKTtcbiAgICAgIGxldCBkID1cbiAgICAgICAgQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpXG4gICAgICAgIHw+IE9wdFV0aWwuZ2V0KCgpID0+IHtcbiAgICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oRnJlZUludmFsaWRWYXIoeCkpKVxuICAgICAgICAgICB9KTtcbiAgICAgIFN0ZXAoe2FwcGx5OiAoKSA9PiBkLCBraW5kOiBWYXJMb29rdXAsIHZhbHVlOiBmYWxzZX0pO1xuICAgIHwgU2VxdWVuY2UoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gU2VxdWVuY2UoZDEsIGQyKSlcbiAgICAgIGFuZC4gXyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IFNlcXVlbmNlMShkMSwgZDIpLCBkMSk7XG4gICAgICBTdGVwKHthcHBseTogKCkgPT4gZDIsIGtpbmQ6IFNlcXVlbmNlLCB2YWx1ZTogZmFsc2V9KTtcbiAgICB8IExldChkcCwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gTGV0KGRwLCBkMSwgZDIpKVxuICAgICAgYW5kLiBkMScgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBMZXQxKGRwLCBkMSwgZDIpLCBkMSk7XG4gICAgICBsZXQubWF0Y2ggZW52JyA9IChlbnYsIG1hdGNoZXMoZHAsIGQxJykpO1xuICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IENsb3N1cmUoZW52JywgZDIpLCBraW5kOiBMZXRCaW5kLCB2YWx1ZTogZmFsc2V9KTtcbiAgICB8IEZ1bihfLCBfLCBDbG9zdXJlKF8pLCBfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IEZ1bihwLCB0LCBkLCB2KSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgRnVuKHAsIHQsIGQsIHYpKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT4gRnVuKHAsIHQsIENsb3N1cmUoZW52LCBkKSwgdiksXG4gICAgICAgIGtpbmQ6IEZ1bkNsb3N1cmUsXG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBGaXhGKGYsIHQsIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgRml4RihmLCB0LCBkMSkpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgIENsb3N1cmUoXG4gICAgICAgICAgICBldmFsdWF0ZV9leHRlbmRfZW52KEVudmlyb25tZW50LnNpbmdsZXRvbigoZiwgZDEpKSwgZW52KSxcbiAgICAgICAgICAgIGQxLFxuICAgICAgICAgICksXG4gICAgICAgIGtpbmQ6IEZpeFVud3JhcCxcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBUZXN0KGlkLCBkKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCA9PiBUZXN0KGlkLCBkKSlcbiAgICAgIGFuZC4gZCcgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkID0+IFRlc3QoaWQsIGQpLCBkKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQnKSB7XG4gICAgICAgICAgfCBCb29sTGl0KHRydWUpID0+XG4gICAgICAgICAgICB1cGRhdGVfdGVzdChzdGF0ZSwgaWQsIChkJywgUGFzcykpO1xuICAgICAgICAgICAgVHVwbGUoW10pO1xuICAgICAgICAgIHwgQm9vbExpdChmYWxzZSkgPT5cbiAgICAgICAgICAgIHVwZGF0ZV90ZXN0KHN0YXRlLCBpZCwgKGQnLCBGYWlsKSk7XG4gICAgICAgICAgICBUdXBsZShbXSk7XG4gICAgICAgICAgLyogSGFjazogYXNzdW1lIGlmIGZpbmFsIGFuZCBub3QgQm9vbCwgdGhlbiBJbmRldDsgdGhpcyB3b24ndCBjYXRjaCBlcnJvcnMgaW4gc3RhdGljcyAqL1xuICAgICAgICAgIHwgXyA9PlxuICAgICAgICAgICAgdXBkYXRlX3Rlc3Qoc3RhdGUsIGlkLCAoZCcsIEluZGV0KSk7XG4gICAgICAgICAgICBUdXBsZShbXSk7XG4gICAgICAgICAgfSxcbiAgICAgICAga2luZDogVXBkYXRlVGVzdCxcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEFwKGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEFwKGQxLCBkMikpXG4gICAgICBhbmQuIGQxJyA9IHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQxID0+IEFwMShkMSwgZDIpLCBkMSlcbiAgICAgIGFuZC4gZDInID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDIgPT4gQXAyKGQxLCBkMiksIGQyKTtcbiAgICAgIHN3aXRjaCAoZDEnKSB7XG4gICAgICB8IENvbnN0cnVjdG9yKF8pID0+IENvbnN0cnVjdG9yXG4gICAgICB8IEZ1bihkcCwgXywgQ2xvc3VyZShlbnYnLCBkMyksIF8pID0+XG4gICAgICAgIGxldC5tYXRjaCBlbnYnJyA9IChlbnYnLCBtYXRjaGVzKGRwLCBkMicpKTtcbiAgICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IENsb3N1cmUoZW52JycsIGQzKSwga2luZDogRnVuQXAsIHZhbHVlOiBmYWxzZX0pO1xuICAgICAgfCBDYXN0KGQzJywgQXJyb3codHkxLCB0eTIpLCBBcnJvdyh0eTEnLCB0eTInKSkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgYXBwbHk6ICgpID0+IENhc3QoQXAoZDMnLCBDYXN0KGQyJywgdHkxJywgdHkxKSksIHR5MiwgdHkyJyksXG4gICAgICAgICAga2luZDogQ2FzdEFwLFxuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgQnVpbHRpbkZ1bihpZGVudCkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgYXBwbHk6ICgpID0+IHtcbiAgICAgICAgICAgIC8vSEFDS1tNYXR0XTogVGhpcyBzdGVwIGlzIGp1c3Qgc28gd2UgY2FuIGNoZWNrIHRoYXQgZDInIGlzIG5vdCBpbmRldFxuICAgICAgICAgICAgQXBCdWlsdGluKFxuICAgICAgICAgICAgICBpZGVudCxcbiAgICAgICAgICAgICAgZDInLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtpbmQ6IEJ1aWx0aW5XcmFwLFxuICAgICAgICAgIHZhbHVlOiBmYWxzZSAvLyBOb3QgbmVjZXNzYXJpbHkgYSB2YWx1ZSBiZWNhdXNlIG9mIEludmFsaWRPcGVyYXRpb25zXG4gICAgICAgIH0pXG4gICAgICB8IF8gPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgYXBwbHk6ICgpID0+IHtcbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGdW4oZDEnKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2luZDogSW52YWxpZFN0ZXAsXG4gICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIHwgQXBCdWlsdGluKGlkZW50LCBhcmcpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBhcmcgPT4gQXBCdWlsdGluKGlkZW50LCBhcmcpKVxuICAgICAgYW5kLiBhcmcnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgYXJnID0+IEFwQnVpbHRpbihpZGVudCwgYXJnKSwgYXJnKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT4ge1xuICAgICAgICAgIGxldCBidWlsdGluID1cbiAgICAgICAgICAgIFZhck1hcC5sb29rdXAoQnVpbHRpbnMuZm9ybXNfaW5pdCwgaWRlbnQpXG4gICAgICAgICAgICB8PiBPcHRVdGlsLmdldCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQnVpbHRpbihpZGVudCkpKVxuICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgYnVpbHRpbihhcmcnKTtcbiAgICAgICAgfSxcbiAgICAgICAga2luZDogQnVpbHRpbkFwKGlkZW50KSxcbiAgICAgICAgdmFsdWU6IGZhbHNlIC8vIE5vdCBuZWNlc3NhcmlseSBhIHZhbHVlIGJlY2F1c2Ugb2YgSW52YWxpZE9wZXJhdGlvbnNcbiAgICAgIH0pO1xuICAgIHwgQm9vbExpdChfKVxuICAgIHwgSW50TGl0KF8pXG4gICAgfCBGbG9hdExpdChfKVxuICAgIHwgU3RyaW5nTGl0KF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQnVpbHRpbkZ1bihfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IElmVGhlbkVsc2UoY29uc2lzdGVudCwgYywgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgYyA9PiBJZlRoZW5FbHNlKGNvbnNpc3RlbnQsIGMsIGQxLCBkMikpXG4gICAgICBhbmQuIGMnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBjID0+IElmVGhlbkVsc2UxKGNvbnNpc3RlbnQsIGMsIGQxLCBkMiksXG4gICAgICAgICAgYyxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAoY29uc2lzdGVudCwgYycpIHtcbiAgICAgIHwgKENvbnNpc3RlbnRJZiwgQm9vbExpdChiKSkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgYXBwbHk6ICgpID0+IHtcbiAgICAgICAgICAgIGIgPyBkMSA6IGQyO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gQXR0YWNoIGMnIHRvIGluZGljYXRlIHdoaWNoIGJyYW5jaCB0YWtlbi5cbiAgICAgICAgICBraW5kOiBDb25kaXRpb25hbChiKSxcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAvLyBVc2UgYSBzZXBlcmF0ZSBjYXNlIGZvciBpbnZhbGlkIGNvbmRpdGlvbmFscy4gTWFrZXMgZXh0cmFjdGluZyB0aGUgYm9vbCBmcm9tIEJvb2xMaXQgKGFib3ZlKSBlYXNpZXIuXG4gICAgICB8IChDb25zaXN0ZW50SWYsIF8pID0+XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGFwcGx5OiAoKSA9PiB7XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkQm9vbExpdChjJykpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtpbmQ6IEludmFsaWRTdGVwLFxuICAgICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgLy8gSW5jb25zaXN0ZW50IGJyYW5jaGVzIHNob3VsZCBiZSBJbmRldFxuICAgICAgfCAoSW5jb25zaXN0ZW50SWYsIF8pID0+IEluZGV0XG4gICAgICB9O1xuICAgIHwgQmluQm9vbE9wKEFuZCwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gQmluQm9vbE9wKEFuZCwgZDEsIGQyKSlcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQmluQm9vbE9wMShBbmQsIGQxLCBkMiksIGQxKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQxJykge1xuICAgICAgICAgIHwgQm9vbExpdCh0cnVlKSA9PiBkMlxuICAgICAgICAgIHwgQm9vbExpdChmYWxzZSkgPT4gQm9vbExpdChmYWxzZSlcbiAgICAgICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEJvb2xMaXQoZDEnKSkpXG4gICAgICAgICAgfSxcbiAgICAgICAga2luZDogQmluQm9vbE9wKEFuZCksXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgQmluQm9vbE9wKE9yLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBCaW5Cb29sT3AoT3IsIGQxLCBkMikpXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQxID0+IEJpbkJvb2xPcDEoT3IsIGQxLCBkMiksIGQxKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQxJykge1xuICAgICAgICAgIHwgQm9vbExpdCh0cnVlKSA9PiBCb29sTGl0KHRydWUpXG4gICAgICAgICAgfCBCb29sTGl0KGZhbHNlKSA9PiBkMlxuICAgICAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkQm9vbExpdChkMikpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGtpbmQ6IEJpbkJvb2xPcChPciksXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgQmluSW50T3Aob3AsIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpbkludE9wKG9wLCBkMSwgZDIpKVxuICAgICAgYW5kLiBkMScgPSByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBCaW5JbnRPcDEob3AsIGQxLCBkMiksIGQxKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMiA9PiBCaW5JbnRPcDIob3AsIGQxLCBkMiksIGQyKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQxJywgZDInKSB7XG4gICAgICAgICAgfCAoSW50TGl0KG4xKSwgSW50TGl0KG4yKSkgPT5cbiAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIHwgUGx1cyA9PiBJbnRMaXQobjEgKyBuMilcbiAgICAgICAgICAgIHwgTWludXMgPT4gSW50TGl0KG4xIC0gbjIpXG4gICAgICAgICAgICB8IFBvd2VyIHdoZW4gbjIgPCAwID0+XG4gICAgICAgICAgICAgIEludmFsaWRPcGVyYXRpb24oXG4gICAgICAgICAgICAgICAgQmluSW50T3Aob3AsIEludExpdChuMSksIEludExpdChuMikpLFxuICAgICAgICAgICAgICAgIE5lZ2F0aXZlRXhwb25lbnQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgUG93ZXIgPT4gSW50TGl0KEludFV0aWwuaXBvdyhuMSwgbjIpKVxuICAgICAgICAgICAgfCBUaW1lcyA9PiBJbnRMaXQobjEgKiBuMilcbiAgICAgICAgICAgIHwgRGl2aWRlIHdoZW4gbjIgPT0gMCA9PlxuICAgICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uKFxuICAgICAgICAgICAgICAgIEJpbkludE9wKG9wLCBJbnRMaXQobjEpLCBJbnRMaXQobjIpKSxcbiAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgRGl2aWRlID0+IEludExpdChuMSAvIG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbiA9PiBCb29sTGl0KG4xIDwgbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBCb29sTGl0KG4xIDw9IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbiA9PiBCb29sTGl0KG4xID4gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBCb29sTGl0KG4xID49IG4yKVxuICAgICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbExpdChuMSA9PSBuMilcbiAgICAgICAgICAgIHwgTm90RXF1YWxzID0+IEJvb2xMaXQobjEgIT0gbjIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCAoSW50TGl0KF8pLCBfKSA9PlxuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChkMicpKSlcbiAgICAgICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChkMScpKSlcbiAgICAgICAgICB9LFxuICAgICAgICBraW5kOiBCaW5JbnRPcChvcCksXG4gICAgICAgIC8vIEZhbHNlIHNvIHRoYXQgSW52YWxpZE9wZXJhdGlvbnMgYXJlIGNhdWdodCBhbmQgbWFkZSBpbmRldCBieSB0aGUgbmV4dCBzdGVwXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgQmluRmxvYXRPcChvcCwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQmluRmxvYXRPcChvcCwgZDEsIGQyKSlcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQmluRmxvYXRPcDEob3AsIGQxLCBkMiksIGQxKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMiA9PiBCaW5GbG9hdE9wMihvcCwgZDEsIGQyKSwgZDIpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgIHN3aXRjaCAoZDEnLCBkMicpIHtcbiAgICAgICAgICB8IChGbG9hdExpdChuMSksIEZsb2F0TGl0KG4yKSkgPT5cbiAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIHwgUGx1cyA9PiBGbG9hdExpdChuMSArLiBuMilcbiAgICAgICAgICAgIHwgTWludXMgPT4gRmxvYXRMaXQobjEgLS4gbjIpXG4gICAgICAgICAgICB8IFBvd2VyID0+IEZsb2F0TGl0KG4xICoqIG4yKVxuICAgICAgICAgICAgfCBUaW1lcyA9PiBGbG9hdExpdChuMSAqLiBuMilcbiAgICAgICAgICAgIHwgRGl2aWRlID0+IEZsb2F0TGl0KG4xIC8uIG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbiA9PiBCb29sTGl0KG4xIDwgbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBCb29sTGl0KG4xIDw9IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbiA9PiBCb29sTGl0KG4xID4gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBCb29sTGl0KG4xID49IG4yKVxuICAgICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbExpdChuMSA9PSBuMilcbiAgICAgICAgICAgIHwgTm90RXF1YWxzID0+IEJvb2xMaXQobjEgIT0gbjIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCAoRmxvYXRMaXQoXyksIF8pID0+XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkRmxvYXRMaXQoZDInKSkpXG4gICAgICAgICAgfCBfID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGbG9hdExpdChkMScpKSlcbiAgICAgICAgICB9LFxuICAgICAgICBraW5kOiBCaW5GbG9hdE9wKG9wKSxcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEJpblN0cmluZ09wKG9wLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBCaW5TdHJpbmdPcChvcCwgZDEsIGQyKSlcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQmluU3RyaW5nT3AxKG9wLCBkMSwgZDIpLCBkMSlcbiAgICAgIGFuZC4gZDInID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDIgPT4gQmluU3RyaW5nT3AyKG9wLCBkMSwgZDIpLCBkMik7XG4gICAgICBTdGVwKHtcbiAgICAgICAgYXBwbHk6ICgpID0+XG4gICAgICAgICAgc3dpdGNoIChkMScsIGQyJykge1xuICAgICAgICAgIHwgKFN0cmluZ0xpdChzMSksIFN0cmluZ0xpdChzMikpID0+XG4gICAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICB8IENvbmNhdCA9PiBTdHJpbmdMaXQoczEgKysgczIpXG4gICAgICAgICAgICB8IEVxdWFscyA9PiBCb29sTGl0KHMxID09IHMyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgKFN0cmluZ0xpdChfKSwgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZDInKSkpXG4gICAgICAgICAgfCBfID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZDEnKSkpXG4gICAgICAgICAgfSxcbiAgICAgICAga2luZDogQmluU3RyaW5nT3Aob3ApLFxuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgVHVwbGUoZHMpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkcyA9PiBUdXBsZShkcykpXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfYWxsX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgKGQxLCBkcykgPT4gVHVwbGUoZDEsIGRzKSwgZHMpO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBQcmooZDEsIG4pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBQcmooZDEsIG4pKVxuICAgICAgYW5kLiBkMScgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBQcmooZDEsIG4pLCBkMSk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgYXBwbHk6ICgpID0+XG4gICAgICAgICAgc3dpdGNoIChkMScpIHtcbiAgICAgICAgICB8IFR1cGxlKGRzKSB3aGVuIG4gPCAwIHx8IExpc3QubGVuZ3RoKGRzKSA8PSBuID0+XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZFByb2plY3Rpb24obikpKVxuICAgICAgICAgIHwgVHVwbGUoZHMpID0+IExpc3QubnRoKGRzLCBuKVxuICAgICAgICAgIHwgQ2FzdChfLCBQcm9kKHRzKSwgUHJvZChfKSkgd2hlbiBuIDwgMCB8fCBMaXN0Lmxlbmd0aCh0cykgPD0gbiA9PlxuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRQcm9qZWN0aW9uKG4pKSlcbiAgICAgICAgICB8IENhc3QoZDIsIFByb2QodHMxKSwgUHJvZCh0czIpKSA9PlxuICAgICAgICAgICAgQ2FzdChQcmooZDIsIG4pLCBMaXN0Lm50aCh0czEsIG4pLCBMaXN0Lm50aCh0czIsIG4pKVxuICAgICAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZFByb2plY3Rpb24obikpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGtpbmQ6IFByb2plY3Rpb24sXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIC8vIFRPRE8oTWF0dCk6IENhbiB3ZSBkbyBzb21ldGhpbmcgY2xldmVyZXIgd2hlbiB0aGUgbGlzdCBzdHJ1Y3R1cmUgaXMgY29tcGxldGUgYnV0IHRoZSBjb250ZW50cyBhcmVuJ3Q/XG4gICAgfCBDb25zKGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IENvbnMoZDEsIGQyKSlcbiAgICAgIGFuZC4gZDEnID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQ29uczEoZDEsIGQyKSwgZDEpXG4gICAgICBhbmQuIGQyJyA9IHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQyID0+IENvbnMyKGQxLCBkMiksIGQyKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQyJykge1xuICAgICAgICAgIHwgTGlzdExpdCh1LCBpLCB0eSwgZHMpID0+IExpc3RMaXQodSwgaSwgdHksIFtkMScsIC4uLmRzXSlcbiAgICAgICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZExpc3RMaXQoZDInKSkpXG4gICAgICAgICAgfSxcbiAgICAgICAga2luZDogTGlzdENvbnMsXG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBMaXN0Q29uY2F0KGQxLCBkMikgPT5cbiAgICAgIC8vIFRPRE8oTWF0dCk6IENhbiB3ZSBkbyBzb21ldGhpbmcgY2xldmVyZXIgd2hlbiB0aGUgbGlzdCBzdHJ1Y3R1cmUgaXMgY29tcGxldGUgYnV0IHRoZSBjb250ZW50cyBhcmVuJ3Q/XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBMaXN0Q29uY2F0KGQxLCBkMikpXG4gICAgICBhbmQuIGQxJyA9IHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQxID0+IExpc3RDb25jYXQxKGQxLCBkMiksIGQxKVxuICAgICAgYW5kLiBkMicgPSByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMiA9PiBMaXN0Q29uY2F0MihkMSwgZDIpLCBkMik7XG4gICAgICBTdGVwKHtcbiAgICAgICAgYXBwbHk6ICgpID0+XG4gICAgICAgICAgc3dpdGNoIChkMScsIGQyJykge1xuICAgICAgICAgIHwgKExpc3RMaXQodTEsIGkxLCB0MSwgZHMxKSwgTGlzdExpdChfLCBfLCBfLCBkczIpKSA9PlxuICAgICAgICAgICAgTGlzdExpdCh1MSwgaTEsIHQxLCBkczEgQCBkczIpXG4gICAgICAgICAgfCAoTGlzdExpdChfKSwgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRMaXN0TGl0KGQyJykpKVxuICAgICAgICAgIHwgKF8sIF8pID0+XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkTGlzdExpdChkMScpKSlcbiAgICAgICAgICB9LFxuICAgICAgICBraW5kOiBMaXN0Q29uY2F0LFxuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgTGlzdExpdCh1LCBpLCB0eSwgZHMpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkcyA9PiBMaXN0TGl0KHUsIGksIHR5LCBkcykpXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfYWxsX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICAoZDEsIGRzKSA9PiBMaXN0TGl0KHUsIGksIHR5LCBkMSwgZHMpLFxuICAgICAgICAgIGRzLFxuICAgICAgICApO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgLy8gVE9ETyhNYXR0KTogVGhpcyB3aWxsIGN1cnJlbnRseSByZS10cmF2ZXJzZSBkMSBpZiBpdCBpcyBhIGxhcmdlIGNvbnN0cnVjdG9yXG4gICAgfCBDb25zaXN0ZW50Q2FzZShDYXNlKGQxLCBydWxlcywgbikpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBDb25zaXN0ZW50Q2FzZShDYXNlKGQxLCBydWxlcywgbikpKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IENvbnNpc3RlbnRDYXNlKENhc2UoZDEsIHJ1bGVzLCBuKSksXG4gICAgICAgICAgZDEsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKExpc3QubnRoX29wdChydWxlcywgbikpIHtcbiAgICAgIHwgTm9uZSA9PiBJbmRldFxuICAgICAgfCBTb21lKFJ1bGUoZHAsIGQyKSkgPT5cbiAgICAgICAgc3dpdGNoIChtYXRjaGVzKGRwLCBkMScpKSB7XG4gICAgICAgIHwgTWF0Y2hlcyhlbnYnKSA9PlxuICAgICAgICAgIFN0ZXAoe1xuICAgICAgICAgICAgYXBwbHk6ICgpID0+IENsb3N1cmUoZXZhbHVhdGVfZXh0ZW5kX2VudihlbnYnLCBlbnYpLCBkMiksXG4gICAgICAgICAgICBraW5kOiBDYXNlQXBwbHksXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgfSlcbiAgICAgICAgfCBEb2VzTm90TWF0Y2ggPT5cbiAgICAgICAgICBTdGVwKHtcbiAgICAgICAgICAgIGFwcGx5OiAoKSA9PiBDb25zaXN0ZW50Q2FzZShDYXNlKGQxJywgcnVsZXMsIG4gKyAxKSksXG4gICAgICAgICAgICBraW5kOiBDYXNlTmV4dCxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICB9KVxuICAgICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzKF8pIGFzIGQgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgSW5kZXQ7XG4gICAgfCBDbG9zdXJlKGVudicsIGQpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkID0+IENsb3N1cmUoZW52JywgZCkpXG4gICAgICBhbmQuIGQnID0gcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52JyksIGQxID0+IENsb3N1cmUoZW52JywgZDEpLCBkKTtcbiAgICAgIFN0ZXAoe2FwcGx5OiAoKSA9PiBkJywga2luZDogQ29tcGxldGVDbG9zdXJlLCB2YWx1ZTogdHJ1ZX0pO1xuICAgIHwgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgaSwgZDEpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBkMSkpXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIGksIGQxKSxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIEluZGV0O1xuICAgIHwgRW1wdHlIb2xlKF8pXG4gICAgfCBGcmVlVmFyKF8pXG4gICAgfCBJbnZhbGlkVGV4dChfKVxuICAgIHwgSW52YWxpZE9wZXJhdGlvbihfKVxuICAgIHwgRXhwYW5kaW5nS2V5d29yZChfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBJbmRldDtcbiAgICB8IENhc3QoZCwgdDEsIHQyKSA9PlxuICAgICAgb3BlbiBDYXN0SGVscGVyczsgLyogQ2FzdCBjYWxjdWx1cyAqL1xuXG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkID0+IENhc3QoZCwgdDEsIHQyKSlcbiAgICAgIGFuZC4gZCcgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkID0+IENhc3QoZCwgdDEsIHQyKSwgZCk7XG4gICAgICBzd2l0Y2ggKGdyb3VuZF9jYXNlc19vZih0MSksIGdyb3VuZF9jYXNlc19vZih0MikpIHtcbiAgICAgIHwgKEhvbGUsIEhvbGUpXG4gICAgICB8IChHcm91bmQsIEdyb3VuZCkgPT5cbiAgICAgICAgLyogaWYgdHdvIHR5cGVzIGFyZSBncm91bmQgYW5kIGNvbnNpc3RlbnQsIHRoZW4gdGhleSBhcmUgZXEgKi9cbiAgICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IGQnLCBraW5kOiBDYXN0LCB2YWx1ZTogdHJ1ZX0pXG4gICAgICB8IChHcm91bmQsIEhvbGUpID0+XG4gICAgICAgIC8qIGNhbid0IHJlbW92ZSB0aGUgY2FzdCBvciBkbyBhbnl0aGluZyBlbHNlIGhlcmUsIHNvIHdlJ3JlIGRvbmUgKi9cbiAgICAgICAgQ29uc3RydWN0b3JcbiAgICAgIHwgKEhvbGUsIEdyb3VuZCkgPT5cbiAgICAgICAgc3dpdGNoIChkJykge1xuICAgICAgICB8IENhc3QoZDIsIHQzLCBVbmtub3duKF8pKSA9PlxuICAgICAgICAgIC8qIGJ5IGNhbm9uaWNhbCBmb3JtcywgZDEnIG11c3QgYmUgb2YgdGhlIGZvcm0gZDx0eScnIC0+ID8+ICovXG4gICAgICAgICAgaWYgKFR5cC5lcSh0MywgdDIpKSB7XG4gICAgICAgICAgICBTdGVwKHthcHBseTogKCkgPT4gZDIsIGtpbmQ6IENhc3QsIHZhbHVlOiB0cnVlfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFN0ZXAoe1xuICAgICAgICAgICAgICBhcHBseTogKCkgPT4gRmFpbGVkQ2FzdChkJywgdDEsIHQyKSxcbiAgICAgICAgICAgICAga2luZDogQ2FzdCxcbiAgICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IF8gPT4gSW5kZXRcbiAgICAgICAgfVxuICAgICAgfCAoSG9sZSwgTm90R3JvdW5kT3JIb2xlKHQyX2dyb3VuZGVkKSkgPT5cbiAgICAgICAgLyogSVRFeHBhbmQgcnVsZSAqL1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICAgIERIRXhwLkNhc3QoQ2FzdChkJywgdDEsIHQyX2dyb3VuZGVkKSwgdDJfZ3JvdW5kZWQsIHQyKSxcbiAgICAgICAgICBraW5kOiBDYXN0LFxuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgKE5vdEdyb3VuZE9ySG9sZSh0MV9ncm91bmRlZCksIEhvbGUpID0+XG4gICAgICAgIC8qIElUR3JvdW5kIHJ1bGUgKi9cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgYXBwbHk6ICgpID0+XG4gICAgICAgICAgICBESEV4cC5DYXN0KENhc3QoZCcsIHQxLCB0MV9ncm91bmRlZCksIHQxX2dyb3VuZGVkLCB0MiksXG4gICAgICAgICAga2luZDogQ2FzdCxcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IChHcm91bmQsIE5vdEdyb3VuZE9ySG9sZShfKSlcbiAgICAgIHwgKE5vdEdyb3VuZE9ySG9sZShfKSwgR3JvdW5kKSA9PlxuICAgICAgICAvKiBjYW4ndCBkbyBhbnl0aGluZyB3aGVuIGNhc3RpbmcgYmV0d2VlbiBkaXNlcSwgbm9uLWhvbGUgdHlwZXMgKi9cbiAgICAgICAgQ29uc3RydWN0b3JcbiAgICAgIHwgKE5vdEdyb3VuZE9ySG9sZShfKSwgTm90R3JvdW5kT3JIb2xlKF8pKSA9PlxuICAgICAgICAvKiB0aGV5IG1pZ2h0IGJlIGVxIGluIHRoaXMgY2FzZSwgc28gcmVtb3ZlIGNhc3QgaWYgc28gKi9cbiAgICAgICAgaWYgKFR5cC5lcSh0MSwgdDIpKSB7XG4gICAgICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IGQnLCBraW5kOiBDYXN0LCB2YWx1ZTogdHJ1ZX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIENvbnN0cnVjdG9yO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIHwgRmFpbGVkQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gRmFpbGVkQ2FzdChkMSwgdDEsIHQyKSlcbiAgICAgIGFuZC4gXyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IEZhaWxlZENhc3QoZDEsIHQxLCB0MiksIGQxKTtcbiAgICAgIEluZGV0O1xuICAgIHwgRmlsdGVyKGYxLCBkMSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IEZpbHRlcihmMSwgZDEpKVxuICAgICAgYW5kLiBkMSA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IEZpbHRlcihmMSwgZDEpLCBkMSk7XG4gICAgICBTdGVwKHthcHBseTogKCkgPT4gZDEsIGtpbmQ6IENvbXBsZXRlRmlsdGVyLCB2YWx1ZTogdHJ1ZX0pO1xuICAgIH07XG59O1xuXG5sZXQgc2hvdWxkX2hpZGVfc3RlcCA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy5FdmFsdWF0aW9uLnQpID0+XG4gIGZ1blxuICB8IExldEJpbmRcbiAgfCBTZXF1ZW5jZVxuICB8IFVwZGF0ZVRlc3RcbiAgfCBGdW5BcFxuICB8IEJ1aWx0aW5BcChfKVxuICB8IEJpbkJvb2xPcChfKVxuICB8IEJpbkludE9wKF8pXG4gIHwgQmluRmxvYXRPcChfKVxuICB8IEJpblN0cmluZ09wKF8pXG4gIHwgTGlzdENvbnNcbiAgfCBMaXN0Q29uY2F0XG4gIHwgQ2FzZUFwcGx5XG4gIHwgUHJvamVjdGlvbiAvLyBUT0RPKE1hdHQpOiBXZSBkb24ndCB3YW50IHRvIHNob3cgcHJvamVjdGlvbiB0byB0aGUgdXNlclxuICB8IFNraXBcbiAgfCBDb25kaXRpb25hbChfKVxuICB8IEludmFsaWRTdGVwID0+IGZhbHNlXG4gIHwgVmFyTG9va3VwID0+ICFzZXR0aW5ncy5zaG93X2xvb2t1cF9zdGVwc1xuICB8IENhc3RBcFxuICB8IENhc3QgPT4gIXNldHRpbmdzLnNob3dfY2FzdHNcbiAgfCBDYXNlTmV4dFxuICB8IENvbXBsZXRlQ2xvc3VyZVxuICB8IENvbXBsZXRlRmlsdGVyXG4gIHwgRml4VW53cmFwXG4gIHwgQnVpbHRpbldyYXBcbiAgfCBGdW5DbG9zdXJlID0+IHRydWU7XG4iLCJvcGVuIERIRXhwO1xub3BlbiBUcmFuc2l0aW9uO1xub3BlbiBVdGlsO1xuXG50eXBlIHQgPVxuICB8IFZhbHVlXG4gIHwgSW5kZXRcbiAgfCBFeHByO1xuXG5tb2R1bGUgVmFsdWVDaGVja2VyRVZNb2RlOiB7XG4gIGluY2x1ZGUgRVZfTU9ERSB3aXRoIHR5cGUgcmVzdWx0ID0gdCBhbmQgdHlwZSBzdGF0ZSA9IHVuaXQ7XG59ID0ge1xuICB0eXBlIHN0YXRlID0gdW5pdDtcbiAgdHlwZSByZXN1bHQgPSB0O1xuXG4gIHR5cGUgcmVxdWlyZW1lbnQoJ2EpID0gKCdhLCAocmVzdWx0LCBib29sKSk7XG4gIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYikgPSAoJ2EsIChyZXN1bHQsIGJvb2wpKTtcblxuICBsZXQgY29tYmluZSA9ICgocjEsIGIxKSwgKHIyLCBiMikpID0+IChcbiAgICBzd2l0Y2ggKHIxLCByMikge1xuICAgIHwgKEV4cHIsIF8pID0+IEV4cHJcbiAgICB8IChfLCBFeHByKSA9PiBFeHByXG4gICAgfCAoSW5kZXQsIF8pID0+IEluZGV0XG4gICAgfCAoXywgSW5kZXQpID0+IEluZGV0XG4gICAgfCAoVmFsdWUsIFZhbHVlKSA9PiBWYWx1ZVxuICAgIH0sXG4gICAgYjEgJiYgYjIsXG4gICk7XG5cbiAgbGV0IHJlcV92YWx1ZSA9ICh2YywgXywgZCkgPT4gKFxuICAgIGQsXG4gICAgc3dpdGNoICh2YyhkKSkge1xuICAgIHwgVmFsdWUgPT4gKFZhbHVlLCB0cnVlKVxuICAgIHwgSW5kZXQgPT4gKEluZGV0LCBmYWxzZSlcbiAgICB8IEV4cHIgPT4gKEV4cHIsIGZhbHNlKVxuICAgIH0sXG4gICk7XG4gIGxldCByZXFfYWxsX3ZhbHVlID0gKHZjLCBfLCBkcykgPT5cbiAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAoKHYxLCByMSksICh2MiwgcjIpKSA9PiAoW3YxLCAuLi52Ml0sIGNvbWJpbmUocjEsIHIyKSksXG4gICAgICBMaXN0Lm1hcChyZXFfdmFsdWUodmMsIHggPT4geCksIGRzKSxcbiAgICAgIChbXSwgKFZhbHVlLCB0cnVlKSksXG4gICAgKTtcbiAgbGV0IHJlcV9maW5hbCA9ICh2YywgXywgZCkgPT4gKFxuICAgIGQsXG4gICAgc3dpdGNoICh2YyhkKSkge1xuICAgIHwgVmFsdWUgPT4gKFZhbHVlLCB0cnVlKVxuICAgIHwgSW5kZXQgPT4gKEluZGV0LCB0cnVlKVxuICAgIHwgRXhwciA9PiAoRXhwciwgZmFsc2UpXG4gICAgfSxcbiAgKTtcbiAgbGV0IHJlcV9hbGxfZmluYWwgPSAodmMsIF8sIGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICgodjEsIHIxKSwgKHYyLCByMikpID0+IChbdjEsIC4uLnYyXSwgY29tYmluZShyMSwgcjIpKSxcbiAgICAgIExpc3QubWFwKHJlcV9maW5hbCh2YywgeCA9PiB4KSwgZHMpLFxuICAgICAgKFtdLCAoVmFsdWUsIHRydWUpKSxcbiAgICApO1xuXG4gIGxldCBvdGhlcndpc2UgPSAoXywgXykgPT4gKCgpLCAoVmFsdWUsIHRydWUpKTtcblxuICBsZXQgKGxldC4pID0gKCh2LCAociwgYikpLCBydWxlKSA9PlxuICAgIHN3aXRjaCAoYiwgciwgcnVsZSh2KSkge1xuICAgIHwgKF8sIF8sIENvbnN0cnVjdG9yKSA9PiByXG4gICAgfCAoXywgRXhwciwgSW5kZXQpID0+IEV4cHJcbiAgICB8IChfLCBfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8ICh0cnVlLCBfLCBTdGVwKF8pKSA9PiBFeHByXG4gICAgfCAoZmFsc2UsIF8sIFN0ZXAoXykpID0+IHJcbiAgICB9O1xuXG4gIGxldCAoYW5kLikgPSAoKHYxLCByMSksICh2MiwgcjIpKSA9PiB7XG4gICAgKCh2MSwgdjIpLCBjb21iaW5lKHIxLCByMikpO1xuICB9O1xuXG4gIGxldCB1cGRhdGVfdGVzdCA9ICgoKSwgXywgXykgPT4gKCk7XG59O1xuXG5tb2R1bGUgQ1YgPSBUcmFuc2l0aW9uKFZhbHVlQ2hlY2tlckVWTW9kZSk7XG5cbmxldCByZWMgY2hlY2tfdmFsdWUgPSAoKCksIGVudiwgZCkgPT4gQ1YudHJhbnNpdGlvbihjaGVja192YWx1ZSwgKCksIGVudiwgZCk7XG5cbmxldCBjaGVja192YWx1ZSA9IGNoZWNrX3ZhbHVlKCk7XG5cbmxldCByZWMgY2hlY2tfdmFsdWVfbW9kX2N0eCA9ICgoKSwgZW52KSA9PlxuICBmdW5cbiAgfCBCb3VuZFZhcih4KSA9PlxuICAgIGNoZWNrX3ZhbHVlX21vZF9jdHgoXG4gICAgICAoKSxcbiAgICAgIGVudixcbiAgICAgIENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCB4KVxuICAgICAgfD4gT3B0VXRpbC5nZXQoKCkgPT4ge1xuICAgICAgICAgICBwcmludF9lbmRsaW5lKFwiRnJlZUludmFsaWRWYXI6XCIgKysgeCk7XG4gICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihGcmVlSW52YWxpZFZhcih4KSkpO1xuICAgICAgICAgfSksXG4gICAgKVxuICB8IGQgPT4gQ1YudHJhbnNpdGlvbihjaGVja192YWx1ZV9tb2RfY3R4LCAoKSwgZW52LCBkKTtcblxubGV0IGNoZWNrX3ZhbHVlX21vZF9jdHggPSBjaGVja192YWx1ZV9tb2RfY3R4KCk7XG4iLCIvKiBCaXQgb2YgYSBoYWNrLiBXZSB3YW50IHRvIGRlY29yYXRlIHN1Z2dlc3Rpb25zIHdoaWNoIHdpbGwgdHJpZ2dlclxuICAgYW4gZXhwYW5zaW9uIHRvIHRlbGVncmFwaCB0aGF0IGV4cGFuc2lvbi4gRWFzaWVzdCB3YXkgbWV0cmljcyB3aXNlXG4gICBpcyB0byBrZWVwIHRoYXQgZGVjbyBpbiB0aGUgc3ludGF4LiBXYW50IHRvIGRlY29yYXRlIHdpdGggZWxsaXBzZXNcbiAgIGNoYXJhY3RlciwgYnV0IE9DYW1sIHN0cmluZyBmdW5jdGlvbnMgZG9uJ3Qgc3VwcG9ydCB1bmljb2RlLCBzb1xuICAgd2UgdXNlICQsIHRoZW4gc3dhcCBpdCBvdXQgZm9yIHRoZSB1bmljb2RlIGNoYXJhY3RlciBpbiBDb2RlLlxuICAgRXZlbnR1YWxseSByZXBsYWNlIHRoaXMgYnkgZXh0ZW5kaW5nIHRoZSBzdWdnZXN0aW9uIGRhdGEgc3RydWN0dXJlICovXG5sZXQgYyA9IFwiJFwiO1xuXG5sZXQgaXNfZXhwYW5kZXJfdG9rID0gKHQ6IFRva2VuLnQpID0+XG4gIFN0cmluZy5zdWIodCwgU3RyaW5nLmxlbmd0aCh0KSAtIDEsIDEpID09IGM7XG5cbmxldCB0cmltX2xhc3QgPSAodDogVG9rZW4udCkgPT4gU3RyaW5nLnN1Yih0LCAwLCBTdHJpbmcubGVuZ3RoKHQpIC0gMSk7XG5cbmxldCBpc19leHBhbmRlciA9IChsYWJlbDogTGFiZWwudCkgPT5cbiAgc3dpdGNoIChsYWJlbCkge1xuICB8IFt0XSA9PiBpc19leHBhbmRlcl90b2sodClcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCBtYXJrID0gKGxhYmVsOiBMYWJlbC50KTogTGFiZWwudCA9PlxuICBpc19leHBhbmRlcihsYWJlbCkgPyBMaXN0Lm1hcCh0ID0+IHRyaW1fbGFzdCh0KSArKyBcIuKAplwiLCBsYWJlbCkgOiBsYWJlbDtcblxubGV0IHRyaW0gPSAoY29tcGxldGlvbjogVG9rZW4udCk6IFRva2VuLnQgPT5cbiAgaXNfZXhwYW5kZXJfdG9rKGNvbXBsZXRpb24pID8gdHJpbV9sYXN0KGNvbXBsZXRpb24pIDogY29tcGxldGlvbjtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIENvLWNvbnRleHRzOlxuXG4gICBBIHR5cGluZyBjby1jb250ZXh0IChkdWFsIHRvIGEgdHlwaW5nIGNvbnRleHQpLCBpcyBhIG1hcCBiZXR3ZWVuXG4gICB2YXJpYWJsZSBuYW1lcyBhbmQgYSBsaXN0IG9mIHRoYXQgdmFyaWFibGUncyB1c2VzIHdpdGhpbiBzb21lIHNjb3BlLlxuICAgRm9yIGVhY2ggdXNlLCB3ZSByZXRhaW4gdGhlIHVuaXF1ZSBpZCBhbmQgZXhwZWN0ZWQgdHlwZSBvZiB0aGUgdXNlIHNpdGUuXG4gICBUaGUgY28tY3R4LCBhbG9uZyB3aXRoIHRoZSBjdHgsIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBmcmVlIGFuZCB1bnVzZWQgdmFyaWFibGVzLlxuXG4gICBUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSB1c2VmdWw6XG5cbiAgIDEuIEEgbG9jYWxseSBmcmVlIHZhcmlhYmxlIChpbiBhbiBleHByZXNzaW9uKSBpcyBvbmVcbiAgICAgIHRoYXQgb2NjdXJzIGluIHRoZSBjb19jdHggb2YgdGhhdCBleHByZXNzaW9uLlxuICAgMi4gQSBnbG9iYWwgZnJlZSB2YXJpYWJsZSAoaW4gdGhlIHByb2dyYW0pIGlzIG9uZSB0aGF0XG4gICAgICBvY2N1cnMgaW4gdGhlIGNvX2N0eCBidXQgbm90IHRoZSBjdHggb2Ygc29tZSBleHByZXNzaW9uXG4gICAzLiBBIGxvY2FsbHkgdW51c2VkIHZhcmlhYmxlIChpbiBhbiBleHByZXNzaW9uKSBpcyBvbmUgdGhhdFxuICAgICAgb2NjdXJzIGluIHRoZSBjdHggYnV0IG5vdCB0aGUgY28tY3R4IG9mIHRoYXQgZXhwcmVzc2lvblxuICAgNC4gQSBnbG9iYWwgdW51c2VkIHZhcmlhYmxlIChpbiB0aGUgcHJvZ3JhbSkgaXMgb25lIHRoYXRcbiAgICAgIG9jY3VycyBpbiB0aGUgY3R4IGJ1dCBub3QgdGhlIGNvX2N0eCBvZiBzb21lIGV4cHJlc3Npb25cblxuICAgVGhlIGZvbGxvd2luZyB0aGVvcmVtcyBzaG91bGQgaG9sZDpcblxuICAgQS4gVG8gZGV0ZXJtaW5lIGlmIGEgdmFyaWFibGUgaXMgZ2xvYmFsbHkgZnJlZSwgaXQgc3VmZmljZXMgdG8gY29uc2lkZXJcbiAgICAgIGV4cHJlc3Npb25zIHdoaWNoIGFyZSB2YXJpYWJsZSByZWZlcmVuY2VzIChsb2N1cyBvZiBjdHggbG9va3VwcylcbiAgIEIuIFRvIGRldGVybWluZSBpZiBhIHZhcmlhYmxlIGlzIGdsb2JhbGx5IHVudXNlZCwgaXQgc3VmZmljZXMgdG8gY29uc2lkZXJcbiAgICAgIGV4cHJlc3Npb25zIHdoaWNoIGFyZSB0aGUgYm9kaWVzIG9mIGJpbmRpbmcgZm9ybXMgKGxvY3VzIG9mIGN0eCBleHRlbnNpb25zKVxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVudHJ5ID0ge1xuICBpZDogSWQudCxcbiAgZXhwZWN0ZWRfdHk6IFR5cC50LFxufTtcblxuLyogRWFjaCBjby1jb250ZXh0IGVudHJ5IGlzIGEgbGlzdCBvZiB0aGUgdXNlcyBvZiBhIHZhcmlhYmxlXG4gICB3aXRoaW4gc29tZSBzY29wZSwgaW5jbHVkaW5nIHRoZWlyIHR5cGUgZGVtYW5kcyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gVmFyTWFwLnRfKGxpc3QoZW50cnkpKTtcblxubGV0IGVtcHR5OiB0ID0gVmFyTWFwLmVtcHR5O1xuXG5sZXQgbWsgPSAoY3R4X2JlZm9yZTogQ3R4LnQsIGN0eF9hZnRlciwgY29fY3R4OiB0KTogdCA9PiB7XG4gIGxldCBhZGRlZF9iaW5kaW5ncyA9IEN0eC5hZGRlZF9iaW5kaW5ncyhjdHhfYWZ0ZXIsIGN0eF9iZWZvcmUpO1xuICBWYXJNYXAuZmlsdGVyKFxuICAgICgobmFtZSwgXykpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGFkZGVkX2JpbmRpbmdzLCBuYW1lKSkge1xuICAgICAgfCBOb25lID0+IHRydWVcbiAgICAgIHwgU29tZShfKSA9PiBmYWxzZVxuICAgICAgfSxcbiAgICBjb19jdHgsXG4gICk7XG59O1xuXG4vKiBOb3RlOiB0aGlzIGN1cnJlbnRseSBzaGFkb3dzIGluIHRoZSBjYXNlIG9mIGR1cGxpY2F0ZXMgKi9cbmxldCB1bmlvbjogbGlzdCh0KSA9PiB0ID1cbiAgTGlzdC5mb2xkX2xlZnQoKGNvX2N0eDEsIGNvX2N0eDIpID0+IGNvX2N0eDEgQCBjb19jdHgyLCBbXSk7XG5cbmxldCBzaW5nbGV0b24gPSAobmFtZSwgaWQsIGV4cGVjdGVkX3R5KTogdCA9PiBbXG4gIChuYW1lLCBbe2lkLCBleHBlY3RlZF90eX1dKSxcbl07XG5cbmxldCBqb2luOiAoQ3R4LnQsIGxpc3QoZW50cnkpKSA9PiBUeXAudCA9XG4gIChjdHgsIGVudHJpZXMpID0+IHtcbiAgICBsZXQgZXhwZWN0ZWRfdHlzID0gTGlzdC5tYXAoZW50cnkgPT4gZW50cnkuZXhwZWN0ZWRfdHksIGVudHJpZXMpO1xuICAgIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eT1Vbmtub3duKEludGVybmFsKSwgY3R4LCBleHBlY3RlZF90eXMpKSB7XG4gICAgfCBOb25lID0+IFVua25vd24oSW50ZXJuYWwpXG4gICAgfCBTb21lKHR5KSA9PiB0eVxuICAgIH07XG4gIH07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG4vKiBNT0RFLnJlXG5cbiAgICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgKGFuYWx5dGljKSB0eXBlIGV4cGVjdGF0aW9uIGltcG9zZWQgYnkgYSB0ZXJtJ3NcbiAgICAgIHN5bnRhY3RpYyBjb250ZXh0LCBpbiBwYXJ0aWN1bGFyIGl0cyBpbW1lZGlhdGUgcGFyZW50LiBUaGUgbW9zdCBjb21tb25cbiAgICAgIGNhc2VzIGFyZSBlaXRoZXIgU3luIChubyB0eXBlIGV4cGVjdGF0aW9uKSwgb3IgQW5hIChzb21lIHR5cGUgZXhwZWN0YXRpb24pLlxuXG4gICAgICBBIHRlcm0ncyBNT0RFIGlzIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGF0IHRlcm0ncyBTRUxGIChTZWxmLnJlKSBieVxuICAgICAgdG8gZGV0ZXJtaW5lIHRoYXQgdGVybSdzIFNUQVRVUyAoSW5mby5yZSksIHdoaWNoIGRpY3RhdGVzIHdoZXRoZXIgb3Igbm90XG4gICAgICBpdCBpcyBwbGFjZWQgaW4gYSBob2xlLCBhbmQgaGVuY2UgaXRzIEZJWEVEIFRZUEUgKEluZm8ucmUpLlxuXG4gICAgICAoSXQgaXMgY29uamVjdHVyZWQgW2NpdGF0aW9uIG5lZWRlZF0gdGhhdCB0aGUgU3luIG1vZGUgaXMgZnVuY3Rpb25hbGx5XG4gICAgICBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIEFuYShVbmtub3duKFN5blN3aXRjaCkpLCBhbmQgdGhhdCB0aGlzIHR5cGUgaXNcbiAgICAgIHRodXMgdmVzdGlnaWFsLilcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBTeW5GdW4gLyogVXNlZCBvbmx5IGluIGZ1bmN0aW9uIHBvc2l0aW9uIG9mIGFwcGxpY2F0aW9ucyAqL1xuICB8IFN5blxuICB8IEFuYShUeXAudCk7XG5cbmxldCBhbmE6IFR5cC50ID0+IHQgPSB0eSA9PiBBbmEodHkpO1xuXG4vKiBUaGUgZXhwZWN0ZWQgdHlwZSBpbXBvc2VkIGJ5IGEgbW9kZSAqL1xubGV0IHR5X29mOiB0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgQW5hKHR5KSA9PiB0eVxuICB8IFN5biA9PiBVbmtub3duKFN5blN3aXRjaClcbiAgfCBTeW5GdW4gPT4gQXJyb3coVW5rbm93bihTeW5Td2l0Y2gpLCBVbmtub3duKFN5blN3aXRjaCkpO1xuXG5sZXQgb2ZfYXJyb3cgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6ICh0LCB0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW4gPT4gKFN5biwgU3luKVxuICB8IEFuYSh0eSkgPT4gdHkgfD4gVHlwLm1hdGNoZWRfYXJyb3coY3R4KSB8PiBUdXBsZVV0aWwubWFwMihhbmEpXG4gIH07XG5cbmxldCBvZl9wcm9kID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQsIGxlbmd0aCk6IGxpc3QodCkgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuID0+IExpc3QuaW5pdChsZW5ndGgsIF8gPT4gU3luKVxuICB8IEFuYSh0eSkgPT4gdHkgfD4gVHlwLm1hdGNoZWRfcHJvZChjdHgsIGxlbmd0aCkgfD4gTGlzdC5tYXAoYW5hKVxuICB9O1xuXG5sZXQgb2ZfY29uc19oZCA9IChjdHg6IEN0eC50LCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW4gPT4gU3luXG4gIHwgQW5hKHR5KSA9PiBBbmEoVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5KSlcbiAgfTtcblxubGV0IG9mX2NvbnNfdGwgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgaGRfdHk6IFR5cC50KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW4gPT4gQW5hKExpc3QoaGRfdHkpKVxuICB8IEFuYSh0eSkgPT4gQW5hKExpc3QoVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5KSkpXG4gIH07XG5cbmxldCBvZl9saXN0ID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1biA9PiBTeW5cbiAgfCBBbmEodHkpID0+IEFuYShUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKVxuICB9O1xuXG5sZXQgb2ZfbGlzdF9jb25jYXQgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6IHQgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuID0+IEFuYShMaXN0KFVua25vd24oU3luU3dpdGNoKSkpXG4gIHwgQW5hKHR5KSA9PiBBbmEoTGlzdChUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKSlcbiAgfTtcblxubGV0IG9mX2xpc3RfbGl0ID0gKGN0eDogQ3R4LnQsIGxlbmd0aCwgbW9kZTogdCk6IGxpc3QodCkgPT5cbiAgTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBvZl9saXN0KGN0eCwgbW9kZSkpO1xuXG5sZXQgY3RyX2FuYV90eXAgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgY3RyOiBDb25zdHJ1Y3Rvci50KTogb3B0aW9uKFR5cC50KSA9PiB7XG4gIC8qIElmIGEgY3RyIGlzIGJlaW5nIGFuYWx5emVkIGFnYWluc3QgKGFuIGFycm93IHR5cGUgcmV0dXJuaW5nKVxuICAgICBhIHN1bSB0eXBlIGhhdmluZyB0aGF0IGN0ciBhcyBhIHZhcmlhbnQsIHdlIGNvbnNpZGVyIHRoZVxuICAgICBjdHIncyB0eXBlIHRvIGJlIGRldGVybWluZWQgYnkgdGhlIHN1bSB0eXBlICovXG4gIHN3aXRjaCAobW9kZSkge1xuICB8IEFuYShBcnJvdyhfLCB0eV9hbmEpKVxuICB8IEFuYSh0eV9hbmEpID0+XG4gICAgbGV0KiBjdHJzID0gVHlwLmdldF9zdW1fY29uc3RydWN0b3JzKGN0eCwgdHlfYW5hKTtcbiAgICBsZXQrIChfLCB0eV9lbnRyeSkgPSBUeXAuc3VtX2VudHJ5KGN0ciwgY3Rycyk7XG4gICAgc3dpdGNoICh0eV9lbnRyeSkge1xuICAgIHwgTm9uZSA9PiB0eV9hbmFcbiAgICB8IFNvbWUodHlfaW4pID0+IEFycm93KHR5X2luLCB0eV9hbmEpXG4gICAgfTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBvZl9jdHJfaW5fYXAgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgY3RyOiBDb25zdHJ1Y3Rvci50KTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoY3RyX2FuYV90eXAoY3R4LCBtb2RlLCBjdHIpKSB7XG4gIHwgU29tZShBcnJvdyhfKSBhcyB0eV9hbmEpID0+IFNvbWUoQW5hKHR5X2FuYSkpXG4gIHwgU29tZSh0eV9hbmEpID0+XG4gICAgLyogQ29uc2lkZXIgZm9yIGV4YW1wbGUgXCJsZXQgXyA6ICtZbyA9IFlvKFwibG9sXCIpIGluLi4uXCJcbiAgICAgICBIZXJlLCB0aGUgJ1lvJyBjb25zdHJ1Y3RvciBzaG91bGQgYmUgaW4gYSBob2xlLCBhcyBpdFxuICAgICAgIGlzIG51bGxhcnkgYnV0IHVzZWQgYXMgdW5hcnk7IHdlIHJlZmxlY3QgdGhpcyBieSBhbmFseXppbmdcbiAgICAgICBhZ2FpbnN0IGFuIGFycm93IHR5cGUuIFNpbmNlIHdlIGNhbid0IGd1ZXNzIGF0IHdoYXQgdGhlXG4gICAgICAgcGFyYW1ldGVyIHR5cGUgbWlnaHQgaGF2ZSBiZSwgd2UgdXNlIFVua25vd24uICovXG4gICAgU29tZShBbmEoQXJyb3coVW5rbm93bihJbnRlcm5hbCksIHR5X2FuYSkpKVxuICB8IE5vbmUgPT4gTm9uZVxuICB9O1xuXG5sZXQgb2ZfYXAgPSAoY3R4LCBtb2RlLCBjdHI6IG9wdGlvbihDb25zdHJ1Y3Rvci50KSk6IHQgPT5cbiAgLyogSWYgYSBjdHIgYXBwbGljYXRpb24gaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCBhIHN1bSB0eXBlIGZvclxuICAgICB3aGljaCB0aGF0IGN0ciBpcyBhIHZhcmlhbnQsIHRoZW4gd2UgY29uc2lkZXIgdGhlIGN0ciB0byBiZSBpblxuICAgICBhbmFseXRpYyBtb2RlIGFnYWluc3QgYW4gYXJyb3cgcmV0dXJuaW5nIHRoYXQgc3VtIHR5cGU7IG90aGVyd2lzZVxuICAgICB3ZSB1c2UgdGhlIHR5cGljYWwgbW9kZSBmb3IgZnVuY3Rpb24gYXBwbGljYXRpb25zICovXG4gIHN3aXRjaCAoY3RyKSB7XG4gIHwgU29tZShuYW1lKSA9PlxuICAgIHN3aXRjaCAob2ZfY3RyX2luX2FwKGN0eCwgbW9kZSwgbmFtZSkpIHtcbiAgICB8IFNvbWUobW9kZSkgPT4gbW9kZVxuICAgIHwgXyA9PiBTeW5GdW5cbiAgICB9XG4gIHwgTm9uZSA9PiBTeW5GdW5cbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIFNFTEYucmVcblxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgU0VMRiBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggcmVwcmVzZW50c1xuICAgdGhlIHN5bnRoZXRpYyB0eXBlIGluZm9ybWF0aW9uIGRlcml2YWJsZSBmcm9tIGEgdGVybSBpbmRlcGVuZGVudFxuICAgb2YgdGhlIHR5cGUgZXhwZWN0YXRpb24gKGkuZS4gTU9ERSkgb2YgaXRzIHN5bnRhY3RpYyBjb250ZXh0LiBUaGlzXG4gICBzeW5ldGhldGljIGluZm9ybWF0aW9uIGlzIG5vdCBlbnRpcmVseSBpbmRlcGVuZGVudCwgaW4gdGhhdCBpdCBzdGlsbFxuICAgdXNlcyB0aGUgdHlwaW5nIGNvbnRleHQgcGFzc2VkIGRvd24gZnJvbSB0aGUgc3ludGFjdGljIGNvbnRleHQuXG5cbiAgIEEgdGVybSB3aGljaCBmcm9tIHdoaWNoIGEgdHlwZSBjYW4gYmUgZGVyaXZlZCBpbiBpc29sYXRpb24sIHRoYXQgaXMsXG4gICB0aGF0IGhhcyBhIHZhbGlkIHN5bnRoZXRpYyB0eXBpbmcganVkZ2VtZW50LCB3aWxsIGdlbmVyYWxseSBoYXZlIGEgU0VMRlxuICAgb2YgSnVzdChzb21lX3R5cGUpLiAoVGhlIG9uZSBjdXJyZW50IGV4Y2VwdGlvbiBhcmUgdGhlIGNvbnN0cnVjdG9ycyBvZiBsYWJlbGxlZFxuICAgc3VtIHR5cGVzLCB3aGljaCBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYXMgdGhlaXIgc3ludGhldGljIHR5cGVcbiAgIG1heSBiZSAnb3ZlcndyaXR0ZW4nIGJ5IHRoZSBhbmFseXRpYyBleHBlY3RhdGlvbilcblxuICAgVGhlIG90aGVyIGNhc2VzIGFsbCByZXByZXNlbnQgc3RhdGVzIGZvciB3aGljaCBubyBzaW5nbGUgdHlwZSBjYW4gYmVcbiAgIGRlcml2ZWQsIHN1Y2ggYXMgc3ludGFjdGljIGVycm9ycywgb3IgYnJhbmNoaW5nIGNvbnN0cnVjdHMgd2hpY2ggbWF5XG4gICBoYXZlIGluY29uc2lzdGVudCB0eXBlcy5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqb2luX3R5cGUgPVxuICB8IElkXG4gIHwgTGlzdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBKdXN0KFR5cC50KSAvKiBKdXN0IGEgcmVndWxhciB0eXBlICovXG4gIHwgTm9Kb2luKGpvaW5fdHlwZSwgbGlzdChUeXAuc291cmNlKSkgLyogSW5jb25zaXN0ZW50IHR5cGVzIGZvciBlLmcgbWF0Y2gsIGxpc3RsaXRzICovXG4gIHwgQmFkVG9rZW4oVG9rZW4udCkgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUcml2QXAoVHlwLnQpIC8qIFRyaXZpYWwgKG51bGxhcnkpIGFwIG9uIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCB0YWtlIHRyaXYgKi9cbiAgfCBJc011bHRpIC8qIE11bHRpaG9sZSwgdHJlYXRlZCBhcyBob2xlICovXG4gIHwgSXNDb25zdHJ1Y3Rvcih7XG4gICAgICBuYW1lOiBDb25zdHJ1Y3Rvci50LFxuICAgICAgc3luX3R5OiBvcHRpb24oVHlwLnQpLFxuICAgIH0pOyAvKiBDb25zdHJ1Y3RvcnMgaGF2ZSBzcGVjaWFsIGFuYSBsb2dpYyAqL1xuXG4vKiBFeHByZXNzaW9ucyBjYW4gYWxzbyBiZSBmcmVlIHZhcmlhYmxlcyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHAgPVxuICB8IEZyZWUoVmFyLnQpXG4gIHwgQ29tbW9uKHQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBhdCA9XG4gIHwgQ29tbW9uKHQpO1xuXG5sZXQgam9pbl9vZiA9IChqOiBqb2luX3R5cGUsIHR5OiBUeXAudCk6IFR5cC50ID0+XG4gIHN3aXRjaCAoaikge1xuICB8IElkID0+IHR5XG4gIHwgTGlzdCA9PiBMaXN0KHR5KVxuICB9O1xuXG4vKiBXaGF0IHRoZSB0eXBlIHdvdWxkIGJlIGlmIHRoZSBwb3NpdGlvbiBoYWQgYmVlblxuICAgc3ludGhldGljLCBzbyBubyBob2xlIGZpeGluZy4gUmV0dXJucyBub25lIGlmXG4gICB0aGVyZSdzIG5vIGFwcGxpY2FibGUgc3ludGhldGljIHJ1bGUuICovXG5sZXQgdHlwX29mOiAoQ3R4LnQsIHQpID0+IG9wdGlvbihUeXAudCkgPVxuICBfY3R4ID0+XG4gICAgZnVuXG4gICAgfCBKdXN0KHR5cCkgPT4gU29tZSh0eXApXG4gICAgfCBJc0NvbnN0cnVjdG9yKHtzeW5fdHksIF99KSA9PiBzeW5fdHlcbiAgICB8IEJhZFRva2VuKF8pXG4gICAgfCBCYWRUcml2QXAoXylcbiAgICB8IElzTXVsdGlcbiAgICB8IE5vSm9pbihfKSA9PiBOb25lO1xuXG5sZXQgdHlwX29mX2V4cDogKEN0eC50LCBleHApID0+IG9wdGlvbihUeXAudCkgPVxuICBjdHggPT5cbiAgICBmdW5cbiAgICB8IEZyZWUoXykgPT4gTm9uZVxuICAgIHwgQ29tbW9uKHNlbGYpID0+IHR5cF9vZihjdHgsIHNlbGYpO1xuXG5sZXQgdHlwX29mX3BhdDogKEN0eC50LCBwYXQpID0+IG9wdGlvbihUeXAudCkgPVxuICBjdHggPT5cbiAgICBmdW5cbiAgICB8IENvbW1vbihzZWxmKSA9PiB0eXBfb2YoY3R4LCBzZWxmKTtcblxuLyogVGhlIHNlbGYgb2YgYSB2YXIgZGVwZW5kcyBvbiB0aGUgY3R4OyBpZiB0aGVcbiAgIGxvb2t1cCBmYWlscywgaXQgaXMgYSBmcmVlIHZhcmlhYmxlICovXG5sZXQgb2ZfZXhwX3ZhciA9IChjdHg6IEN0eC50LCBuYW1lOiBWYXIudCk6IGV4cCA9PlxuICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgfCBOb25lID0+IEZyZWUobmFtZSlcbiAgfCBTb21lKHZhcikgPT4gQ29tbW9uKEp1c3QodmFyLnR5cCkpXG4gIH07XG5cbi8qIFRoZSBzZWxmIG9mIGEgY3RyIGRlcGVuZHMgb24gdGhlIGN0eCwgYnV0IGFcbiAgIGxvb2t1cCBmYWlsdXJlIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbnMgaXRzXG4gICBmcmVlOyBpdCBtYXkgYmUgZ2l2ZW4gYSB0eXBlIGFuYWx5dGljYWxseSAqL1xubGV0IG9mX2N0ciA9IChjdHg6IEN0eC50LCBuYW1lOiBDb25zdHJ1Y3Rvci50KTogdCA9PlxuICBJc0NvbnN0cnVjdG9yKHtcbiAgICBuYW1lLFxuICAgIHN5bl90eTpcbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9jdHIoY3R4LCBuYW1lKSkge1xuICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgIHwgU29tZSh7dHlwLCBffSkgPT4gU29tZSh0eXApXG4gICAgICB9LFxuICB9KTtcblxubGV0IGFkZF9zb3VyY2UgPSBMaXN0Lm1hcDIoKGlkLCB0eSkgPT4gVHlwLntpZCwgdHl9KTtcblxubGV0IG1hdGNoID0gKGN0eDogQ3R4LnQsIHR5czogbGlzdChUeXAudCksIGlkczogbGlzdChJZC50KSk6IHQgPT5cbiAgc3dpdGNoIChUeXAuam9pbl9hbGwofmVtcHR5PVVua25vd24oSW50ZXJuYWwpLCBjdHgsIHR5cykpIHtcbiAgfCBOb25lID0+IE5vSm9pbihJZCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdCh0eSlcbiAgfTtcblxubGV0IGxpc3RsaXQgPSAofmVtcHR5LCBjdHg6IEN0eC50LCB0eXM6IGxpc3QoVHlwLnQpLCBpZHM6IGxpc3QoSWQudCkpOiB0ID0+XG4gIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eSwgY3R4LCB0eXMpKSB7XG4gIHwgTm9uZSA9PiBOb0pvaW4oTGlzdCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdChMaXN0KHR5KSlcbiAgfTtcblxubGV0IGxpc3RfY29uY2F0ID0gKGN0eDogQ3R4LnQsIHR5czogbGlzdChUeXAudCksIGlkczogbGlzdChJZC50KSk6IHQgPT5cbiAgc3dpdGNoIChUeXAuam9pbl9hbGwofmVtcHR5PVVua25vd24oSW50ZXJuYWwpLCBjdHgsIHR5cykpIHtcbiAgfCBOb25lID0+IE5vSm9pbihMaXN0LCBhZGRfc291cmNlKGlkcywgdHlzKSlcbiAgfCBTb21lKHR5KSA9PiBKdXN0KHR5KVxuICB9O1xuIiwiLyogVEVSTVxuXG4gICBUaGVzZSBkYXRhIHN0cnVjdHVyZXMgZGVmaW5lIHRoZSB0ZXJtIHN0cnVjdHVyZXMgb24gd2hpY2hcbiAgIHRoZSBzdGF0aWMgYW5kIGR5bmFtaWMgc2VtYW50aWNzIG9mIHRoZSBsYW5ndWFnZSBhcmUgYmFzZWQuXG4gICBFYWNoIHNvcnQgaGFzIGEgY29ycmVzcG9uZGluZyBVPFNvcnQ+IG1vZHVsZS5cblxuICAgVGhlIGNvbnRhaW5lZCBjbHMgdHlwZSBsaXN0cyB0aGUgdGVybXMgb2YgdGhhdCBzb3J0LCBhbmRcbiAgIHNob3VsZCBiZSBpbiAxLTEgY29ycmVzcG9uZGVuY2Ugd2l0aCB0aGUgdGVybSB0eXBlIHdoaWNoXG4gICBpcyB1c2VkIHRvIGJ1aWxkIGNvbXBvc2l0ZSB0ZXJtcy5cblxuICAgVGhpcyBpcyB3cmFwcGVkIGluIGEgcmVjb3JkIHR5cGUgdG8gYXNzb2NpYXRlIGEgdW5pcXVlIGlkXG4gICB3aXRoIGVhY2ggdGVybS4gVGhlc2UgdW5pcXVlIGlkcyBhcmUgdGhlIHNhbWUgYXMgZnJvbSB0aGVcbiAgIHRpbGUgc3RydWN0dXJlIGZyb20gdGhlIHN5bnRheCBtb2R1bGUsIGFzIHRoZXJlIGlzIGEgMS0xXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIHRlcm1zIGFuZCB0aWxlcy5cblxuICAgVE9ETzogYWRkIHRlc3RzIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBmb3JtcyBhbmQvb3IgdGVybXNcbiAgIHdpdGhvdXQgY29ycmVwb25kaW5nIHN5bnRheCBjbGFzc2VzICovXG5cbmluY2x1ZGUgVGVybUJhc2UuQW55O1xuXG50eXBlIGFueSA9IHQ7XG5tb2R1bGUgVVR5cCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBBcnJvd1xuICAgIHwgVHVwbGVcbiAgICB8IFN1bVxuICAgIHwgTGlzdFxuICAgIHwgVmFyXG4gICAgfCBDb25zdHJ1Y3RvclxuICAgIHwgUGFyZW5zXG4gICAgfCBBcDtcblxuICBpbmNsdWRlIFRlcm1CYXNlLlVUeXA7XG5cbiAgbGV0IHJlcF9pZCA9ICh7aWRzLCBffTogdCkgPT4ge1xuICAgIGFzc2VydChpZHMgIT0gW10pO1xuICAgIExpc3QuaGQoaWRzKTtcbiAgfTtcblxuICBsZXQgaG9sZSA9ICh0bXM6IGxpc3QoYW55KSkgPT5cbiAgICBzd2l0Y2ggKHRtcykge1xuICAgIHwgW10gPT4gRW1wdHlIb2xlXG4gICAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgICB9O1xuXG4gIGxldCBjbHNfb2ZfdGVybTogdGVybSA9PiBjbHMgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gTXVsdGlIb2xlXG4gICAgfCBJbnQgPT4gSW50XG4gICAgfCBGbG9hdCA9PiBGbG9hdFxuICAgIHwgQm9vbCA9PiBCb29sXG4gICAgfCBTdHJpbmcgPT4gU3RyaW5nXG4gICAgfCBMaXN0KF8pID0+IExpc3RcbiAgICB8IEFycm93KF8pID0+IEFycm93XG4gICAgfCBWYXIoXykgPT4gVmFyXG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgVHVwbGUoXykgPT4gVHVwbGVcbiAgICB8IFBhcmVucyhfKSA9PiBQYXJlbnNcbiAgICB8IEFwKF8pID0+IEFwXG4gICAgfCBTdW0oXykgPT4gU3VtO1xuXG4gIGxldCBzaG93X2NsczogY2xzID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkID0+IFwiSW52YWxpZCB0eXBlXCJcbiAgICB8IE11bHRpSG9sZSA9PiBcIkJyb2tlbiB0eXBlXCJcbiAgICB8IEVtcHR5SG9sZSA9PiBcIkVtcHR5IHR5cGUgaG9sZVwiXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmdcbiAgICB8IEJvb2wgPT4gXCJCYXNlIHR5cGVcIlxuICAgIHwgVmFyID0+IFwiVHlwZSB2YXJpYWJsZVwiXG4gICAgfCBDb25zdHJ1Y3RvciA9PiBcIlN1bSBjb25zdHJ1Y3RvclwiXG4gICAgfCBMaXN0ID0+IFwiTGlzdCB0eXBlXCJcbiAgICB8IEFycm93ID0+IFwiRnVuY3Rpb24gdHlwZVwiXG4gICAgfCBUdXBsZSA9PiBcIlByb2R1Y3QgdHlwZVwiXG4gICAgfCBTdW0gPT4gXCJTdW0gdHlwZVwiXG4gICAgfCBQYXJlbnMgPT4gXCJQYXJlbnRoZXNpemVkIHR5cGVcIlxuICAgIHwgQXAgPT4gXCJDb25zdHJ1Y3RvciBhcHBsaWNhdGlvblwiO1xuXG4gIGxldCByZWMgaXNfYXJyb3cgPSAodHlwOiB0KSA9PiB7XG4gICAgc3dpdGNoICh0eXAudGVybSkge1xuICAgIHwgUGFyZW5zKHR5cCkgPT4gaXNfYXJyb3codHlwKVxuICAgIHwgQXJyb3coXykgPT4gdHJ1ZVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXylcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IEJvb2xcbiAgICB8IFN0cmluZ1xuICAgIHwgTGlzdChfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IFZhcihfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pXG4gICAgfCBTdW0oXykgPT4gZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIC8qIENvbnZlcnRzIGEgc3ludGFjdGljIHR5cGUgaW50byBhIHNlbWFudGljIHR5cGUgKi9cbiAgbGV0IHJlYyB0b190eXA6IChDdHgudCwgdCkgPT4gVHlwLnQgPVxuICAgIChjdHgsIHV0eXApID0+XG4gICAgICBzd2l0Y2ggKHV0eXAudGVybSkge1xuICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICB8IE11bHRpSG9sZShfKSA9PiBVbmtub3duKEludGVybmFsKVxuICAgICAgfCBFbXB0eUhvbGUgPT4gVW5rbm93bihUeXBlSG9sZSlcbiAgICAgIHwgQm9vbCA9PiBCb29sXG4gICAgICB8IEludCA9PiBJbnRcbiAgICAgIHwgRmxvYXQgPT4gRmxvYXRcbiAgICAgIHwgU3RyaW5nID0+IFN0cmluZ1xuICAgICAgfCBWYXIobmFtZSkgPT5cbiAgICAgICAgc3dpdGNoIChDdHgubG9va3VwX3R2YXIoY3R4LCBuYW1lKSkge1xuICAgICAgICB8IFNvbWUoXykgPT4gVmFyKG5hbWUpXG4gICAgICAgIHwgTm9uZSA9PiBVbmtub3duKEZyZWUobmFtZSkpXG4gICAgICAgIH1cbiAgICAgIHwgQXJyb3codTEsIHUyKSA9PiBBcnJvdyh0b190eXAoY3R4LCB1MSksIHRvX3R5cChjdHgsIHUyKSlcbiAgICAgIHwgVHVwbGUodXMpID0+IFByb2QoTGlzdC5tYXAodG9fdHlwKGN0eCksIHVzKSlcbiAgICAgIHwgU3VtKHV0cykgPT4gU3VtKHRvX2N0cl9tYXAoY3R4LCB1dHMpKVxuICAgICAgfCBMaXN0KHUpID0+IExpc3QodG9fdHlwKGN0eCwgdSkpXG4gICAgICB8IFBhcmVucyh1KSA9PiB0b190eXAoY3R4LCB1KVxuICAgICAgLyogVGhlIGJlbG93IGNhc2VzIHNob3VsZCBvY2N1ciBvbmx5IGluc2lkZSBzdW1zICovXG4gICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICB8IEFwKF8pID0+IFVua25vd24oSW50ZXJuYWwpXG4gICAgICB9XG4gIGFuZCB0b192YXJpYW50OlxuICAgIChDdHgudCwgdmFyaWFudCkgPT4gb3B0aW9uKENvbnN0cnVjdG9yTWFwLmJpbmRpbmcob3B0aW9uKFR5cC50KSkpID1cbiAgICBjdHggPT5cbiAgICAgIGZ1blxuICAgICAgfCBWYXJpYW50KGN0ciwgXywgdSkgPT4gU29tZSgoY3RyLCBPcHRpb24ubWFwKHRvX3R5cChjdHgpLCB1KSkpXG4gICAgICB8IEJhZEVudHJ5KF8pID0+IE5vbmVcbiAgYW5kIHRvX2N0cl9tYXAgPSAoY3R4OiBDdHgudCwgdXRzOiBsaXN0KHZhcmlhbnQpKTogVHlwLnN1bV9tYXAgPT4ge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdXQpID0+XG4gICAgICAgIExpc3QuZmluZF9vcHQoKChjdHIsIF8pKSA9PiBjdHIgPT0gZnN0KHV0KSwgYWNjKSA9PSBOb25lXG4gICAgICAgICAgPyBhY2MgQCBbdXRdIDogYWNjLFxuICAgICAgW10sXG4gICAgICBMaXN0LmZpbHRlcl9tYXAodG9fdmFyaWFudChjdHgpLCB1dHMpLFxuICAgICk7XG4gIH07XG59O1xuXG5tb2R1bGUgVVRQYXQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjbHMgPVxuICAgIHwgSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGVcbiAgICB8IFZhcjtcblxuICBpbmNsdWRlIFRlcm1CYXNlLlVUUGF0O1xuXG4gIGxldCByZXBfaWQgPSAoe2lkcywgX30pID0+IHtcbiAgICBhc3NlcnQoaWRzICE9IFtdKTtcbiAgICBMaXN0LmhkKGlkcyk7XG4gIH07XG5cbiAgbGV0IGhvbGUgPSAodG1zOiBsaXN0KGFueSkpID0+XG4gICAgc3dpdGNoICh0bXMpIHtcbiAgICB8IFtdID0+IEVtcHR5SG9sZVxuICAgIHwgW18sIC4uLl9dID0+IE11bHRpSG9sZSh0bXMpXG4gICAgfTtcblxuICBsZXQgY2xzX29mX3Rlcm06IHRlcm0gPT4gY2xzID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQoXykgPT4gSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlID0+IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pID0+IE11bHRpSG9sZVxuICAgIHwgVmFyKF8pID0+IFZhcjtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgdHlwZSBhbGlhc1wiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gdHlwZSBhbGlhc1wiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSB0eXBlIGFsaWFzIGhvbGVcIlxuICAgIHwgVmFyID0+IFwiVHlwZSBhbGlhc1wiO1xufTtcblxubW9kdWxlIFVQYXQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjbHMgPVxuICAgIHwgSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGVcbiAgICB8IFdpbGRcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IEJvb2xcbiAgICB8IFN0cmluZ1xuICAgIHwgVHJpdlxuICAgIHwgTGlzdExpdFxuICAgIHwgQ29uc3RydWN0b3JcbiAgICB8IENvbnNcbiAgICB8IFZhclxuICAgIHwgVHVwbGVcbiAgICB8IFBhcmVuc1xuICAgIHwgQXBcbiAgICB8IFR5cGVBbm47XG5cbiAgaW5jbHVkZSBUZXJtQmFzZS5VUGF0O1xuXG4gIGxldCByZXBfaWQgPSAoe2lkcywgX306IHQpID0+IHtcbiAgICBhc3NlcnQoaWRzICE9IFtdKTtcbiAgICBMaXN0LmhkKGlkcyk7XG4gIH07XG5cbiAgbGV0IGhvbGUgPSAodG1zOiBsaXN0KGFueSkpID0+XG4gICAgc3dpdGNoICh0bXMpIHtcbiAgICB8IFtdID0+IEVtcHR5SG9sZVxuICAgIHwgW18sIC4uLl9dID0+IE11bHRpSG9sZSh0bXMpXG4gICAgfTtcblxuICBsZXQgY2xzX29mX3Rlcm06IHRlcm0gPT4gY2xzID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQoXykgPT4gSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlID0+IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pID0+IE11bHRpSG9sZVxuICAgIHwgV2lsZCA9PiBXaWxkXG4gICAgfCBJbnQoXykgPT4gSW50XG4gICAgfCBGbG9hdChfKSA9PiBGbG9hdFxuICAgIHwgQm9vbChfKSA9PiBCb29sXG4gICAgfCBTdHJpbmcoXykgPT4gU3RyaW5nXG4gICAgfCBUcml2ID0+IFRyaXZcbiAgICB8IExpc3RMaXQoXykgPT4gTGlzdExpdFxuICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICB8IENvbnMoXykgPT4gQ29uc1xuICAgIHwgVmFyKF8pID0+IFZhclxuICAgIHwgVHVwbGUoXykgPT4gVHVwbGVcbiAgICB8IFBhcmVucyhfKSA9PiBQYXJlbnNcbiAgICB8IEFwKF8pID0+IEFwXG4gICAgfCBUeXBlQW5uKF8pID0+IFR5cGVBbm47XG5cbiAgbGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQgPT4gXCJJbnZhbGlkIHBhdHRlcm5cIlxuICAgIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIHBhdHRlcm5cIlxuICAgIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgcGF0dGVybiBob2xlXCJcbiAgICB8IFdpbGQgPT4gXCJXaWxkY2FyZFwiXG4gICAgfCBJbnQgPT4gXCJJbnRlZ2VyIGxpdGVyYWxcIlxuICAgIHwgRmxvYXQgPT4gXCJGbG9hdCBsaXRlcmFsXCJcbiAgICB8IEJvb2wgPT4gXCJCb29sZWFuIGxpdGVyYWxcIlxuICAgIHwgU3RyaW5nID0+IFwiU3RyaW5nIGxpdGVyYWxcIlxuICAgIHwgVHJpdiA9PiBcIlRyaXZpYWwgbGl0ZXJhbFwiXG4gICAgfCBMaXN0TGl0ID0+IFwiTGlzdCBsaXRlcmFsXCJcbiAgICB8IENvbnN0cnVjdG9yID0+IFwiQ29uc3RydWN0b3JcIlxuICAgIHwgQ29ucyA9PiBcIkNvbnNcIlxuICAgIHwgVmFyID0+IFwiVmFyaWFibGUgYmluZGluZ1wiXG4gICAgfCBUdXBsZSA9PiBcIlR1cGxlXCJcbiAgICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgcGF0dGVyblwiXG4gICAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCJcbiAgICB8IFR5cGVBbm4gPT4gXCJBbm5vdGF0aW9uXCI7XG5cbiAgbGV0IHJlYyBpc192YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gaXNfdmFyKHBhdClcbiAgICB8IFZhcihfKSA9PiB0cnVlXG4gICAgfCBUeXBlQW5uKF8pXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBUcml2XG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGlzX2Z1bl92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gaXNfZnVuX3ZhcihwYXQpXG4gICAgfCBUeXBlQW5uKHBhdCwgdHlwKSA9PiBpc192YXIocGF0KSAmJiBVVHlwLmlzX2Fycm93KHR5cClcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IFRyaXZcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl9hcnJvd3MgPSAocGF0OiB0KSA9PlxuICAgIGlzX2Z1bl92YXIocGF0KVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKHBhdCkgPT4gaXNfdHVwbGVfb2ZfYXJyb3dzKHBhdClcbiAgICAgIHwgVHVwbGUocGF0cykgPT4gcGF0cyB8PiBMaXN0LmZvcl9hbGwoaXNfZnVuX3ZhcilcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IFRyaXZcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBDb25zKF8sIF8pXG4gICAgICB8IFZhcihfKVxuICAgICAgfCBUeXBlQW5uKF8pXG4gICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICB8IEFwKF8pID0+IGZhbHNlXG4gICAgICB9XG4gICAgKTtcblxuICBsZXQgcmVjIGdldF92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X3ZhcihwYXQpXG4gICAgfCBWYXIoeCkgPT4gU29tZSh4KVxuICAgIHwgVHlwZUFubihfKVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXylcbiAgICB8IFdpbGRcbiAgICB8IEludChfKVxuICAgIHwgRmxvYXQoXylcbiAgICB8IEJvb2woXylcbiAgICB8IFN0cmluZyhfKVxuICAgIHwgVHJpdlxuICAgIHwgTGlzdExpdChfKVxuICAgIHwgQ29ucyhfLCBfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBOb25lXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9mdW5fdmFyID0gKHBhdDogdCkgPT4ge1xuICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICB8IFBhcmVucyhwYXQpID0+IGdldF9mdW5fdmFyKHBhdClcbiAgICB8IFR5cGVBbm4ocGF0LCB0eXApID0+XG4gICAgICBpZiAoVVR5cC5pc19hcnJvdyh0eXApKSB7XG4gICAgICAgIGdldF92YXIocGF0KSB8PiBPcHRpb24ubWFwKHZhciA9PiB2YXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9uZTtcbiAgICAgIH1cbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IFRyaXZcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBOb25lXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9yZWN1cnNpdmVfYmluZGluZ3MgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChnZXRfZnVuX3ZhcihwYXQpKSB7XG4gICAgfCBTb21lKHgpID0+IFNvbWUoW3hdKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgfCBQYXJlbnMocGF0KSA9PiBnZXRfcmVjdXJzaXZlX2JpbmRpbmdzKHBhdClcbiAgICAgIHwgVHVwbGUocGF0cykgPT5cbiAgICAgICAgbGV0IGZ1bl92YXJzID0gcGF0cyB8PiBMaXN0Lm1hcChnZXRfZnVuX3Zhcik7XG4gICAgICAgIGlmIChMaXN0LmV4aXN0cyhPcHRpb24uaXNfbm9uZSwgZnVuX3ZhcnMpKSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTb21lKExpc3QubWFwKE9wdGlvbi5nZXQsIGZ1bl92YXJzKSk7XG4gICAgICAgIH07XG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBXaWxkXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IFN0cmluZyhfKVxuICAgICAgfCBUcml2XG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgQ29ucyhfLCBfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgVHlwZUFubihfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgfCBBcChfKSA9PiBOb25lXG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBsZXQgY3RyX25hbWUgPSAocDogdCk6IG9wdGlvbihDb25zdHJ1Y3Rvci50KSA9PlxuICAgIHN3aXRjaCAocC50ZXJtKSB7XG4gICAgfCBDb25zdHJ1Y3RvcihuYW1lKSA9PiBTb21lKG5hbWUpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xufTtcblxubW9kdWxlIFVFeHAgPSB7XG4gIGluY2x1ZGUgVGVybUJhc2UuVUV4cDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBUcml2XG4gICAgfCBCb29sXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBGdW5cbiAgICB8IFR1cGxlXG4gICAgfCBWYXJcbiAgICB8IE1ldGFWYXJcbiAgICB8IExldFxuICAgIHwgVHlBbGlhc1xuICAgIHwgQXBcbiAgICB8IFBpcGVsaW5lXG4gICAgfCBJZlxuICAgIHwgU2VxXG4gICAgfCBUZXN0XG4gICAgfCBGaWx0ZXJcbiAgICB8IFBhcmVuc1xuICAgIHwgQ29uc1xuICAgIHwgVW5PcChvcF91bilcbiAgICB8IEJpbk9wKG9wX2JpbilcbiAgICB8IE1hdGNoXG4gICAgfCBMaXN0Q29uY2F0O1xuXG4gIGxldCBob2xlID0gKHRtczogbGlzdChhbnkpKTogdGVybSA9PlxuICAgIHN3aXRjaCAodG1zKSB7XG4gICAgfCBbXSA9PiBFbXB0eUhvbGVcbiAgICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICAgIH07XG5cbiAgbGV0IHJlcF9pZCA9ICh7aWRzLCBffSkgPT4ge1xuICAgIGFzc2VydChpZHMgIT0gW10pO1xuICAgIExpc3QuaGQoaWRzKTtcbiAgfTtcblxuICBsZXQgY2xzX29mX3Rlcm06IHRlcm0gPT4gY2xzID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQoXykgPT4gSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlID0+IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pID0+IE11bHRpSG9sZVxuICAgIHwgVHJpdiA9PiBUcml2XG4gICAgfCBCb29sKF8pID0+IEJvb2xcbiAgICB8IEludChfKSA9PiBJbnRcbiAgICB8IEZsb2F0KF8pID0+IEZsb2F0XG4gICAgfCBTdHJpbmcoXykgPT4gU3RyaW5nXG4gICAgfCBMaXN0TGl0KF8pID0+IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IENvbnN0cnVjdG9yXG4gICAgfCBGdW4oXykgPT4gRnVuXG4gICAgfCBUdXBsZShfKSA9PiBUdXBsZVxuICAgIHwgVmFyKF8pID0+IFZhclxuICAgIHwgTGV0KF8pID0+IExldFxuICAgIHwgVHlBbGlhcyhfKSA9PiBUeUFsaWFzXG4gICAgfCBBcChfKSA9PiBBcFxuICAgIHwgUGlwZWxpbmUoXykgPT4gUGlwZWxpbmVcbiAgICB8IElmKF8pID0+IElmXG4gICAgfCBTZXEoXykgPT4gU2VxXG4gICAgfCBUZXN0KF8pID0+IFRlc3RcbiAgICB8IEZpbHRlcihfKSA9PiBGaWx0ZXJcbiAgICB8IFBhcmVucyhfKSA9PiBQYXJlbnNcbiAgICB8IENvbnMoXykgPT4gQ29uc1xuICAgIHwgTGlzdENvbmNhdChfKSA9PiBMaXN0Q29uY2F0XG4gICAgfCBVbk9wKG9wLCBfKSA9PiBVbk9wKG9wKVxuICAgIHwgQmluT3Aob3AsIF8sIF8pID0+IEJpbk9wKG9wKVxuICAgIHwgTWF0Y2goXykgPT4gTWF0Y2g7XG5cbiAgbGV0IHNob3dfb3BfdW5fbWV0YTogb3BfdW5fbWV0YSA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgVW5xdW90ZSA9PiBcIlVuLXF1b3RhdGlvblwiO1xuXG4gIGxldCBzaG93X29wX3VuX2Jvb2w6IG9wX3VuX2Jvb2wgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IE5vdCA9PiBcIkJvb2xlYW4gTmVnYXRpb25cIjtcblxuICBsZXQgc2hvd19vcF91bl9pbnQ6IG9wX3VuX2ludCA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgTWludXMgPT4gXCJJbnRlZ2VyIE5lZ2F0aW9uXCI7XG5cbiAgbGV0IHNob3dfdW5vcDogb3BfdW4gPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IE1ldGEob3ApID0+IHNob3dfb3BfdW5fbWV0YShvcClcbiAgICB8IEJvb2wob3ApID0+IHNob3dfb3BfdW5fYm9vbChvcClcbiAgICB8IEludChvcCkgPT4gc2hvd19vcF91bl9pbnQob3ApO1xuXG4gIGxldCBzaG93X29wX2Jpbl9ib29sOiBvcF9iaW5fYm9vbCA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgQW5kID0+IFwiQm9vbGVhbiBDb25qdW5jdGlvblwiXG4gICAgfCBPciA9PiBcIkJvb2xlYW4gRGlzanVuY3Rpb25cIjtcblxuICBsZXQgc2hvd19vcF9iaW5faW50OiBvcF9iaW5faW50ID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBQbHVzID0+IFwiSW50ZWdlciBBZGRpdGlvblwiXG4gICAgfCBNaW51cyA9PiBcIkludGVnZXIgU3VidHJhY3Rpb25cIlxuICAgIHwgVGltZXMgPT4gXCJJbnRlZ2VyIE11bHRpcGxpY2F0aW9uXCJcbiAgICB8IFBvd2VyID0+IFwiSW50ZWdlciBFeHBvbmVudGlhdGlvblwiXG4gICAgfCBEaXZpZGUgPT4gXCJJbnRlZ2VyIERpdmlzaW9uXCJcbiAgICB8IExlc3NUaGFuID0+IFwiSW50ZWdlciBMZXNzIFRoYW5cIlxuICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiSW50ZWdlciBMZXNzIFRoYW4gb3IgRXF1YWxcIlxuICAgIHwgR3JlYXRlclRoYW4gPT4gXCJJbnRlZ2VyIEdyZWF0ZXIgVGhhblwiXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gXCJJbnRlZ2VyIEdyZWF0ZXIgVGhhbiBvciBFcXVhbFwiXG4gICAgfCBFcXVhbHMgPT4gXCJJbnRlZ2VyIEVxdWFsaXR5XCJcbiAgICB8IE5vdEVxdWFscyA9PiBcIkludGVnZXIgSW5lcXVhbGl0eVwiO1xuXG4gIGxldCBzaG93X29wX2Jpbl9mbG9hdDogb3BfYmluX2Zsb2F0ID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBQbHVzID0+IFwiRmxvYXQgQWRkaXRpb25cIlxuICAgIHwgTWludXMgPT4gXCJGbG9hdCBTdWJ0cmFjdGlvblwiXG4gICAgfCBUaW1lcyA9PiBcIkZsb2F0IE11bHRpcGxpY2F0aW9uXCJcbiAgICB8IFBvd2VyID0+IFwiRmxvYXQgRXhwb25lbnRpYXRpb25cIlxuICAgIHwgRGl2aWRlID0+IFwiRmxvYXQgRGl2aXNpb25cIlxuICAgIHwgTGVzc1RoYW4gPT4gXCJGbG9hdCBMZXNzIFRoYW5cIlxuICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiRmxvYXQgTGVzcyBUaGFuIG9yIEVxdWFsXCJcbiAgICB8IEdyZWF0ZXJUaGFuID0+IFwiRmxvYXQgR3JlYXRlciBUaGFuXCJcbiAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIkZsb2F0IEdyZWF0ZXIgVGhhbiBvciBFcXVhbFwiXG4gICAgfCBFcXVhbHMgPT4gXCJGbG9hdCBFcXVhbGl0eVwiXG4gICAgfCBOb3RFcXVhbHMgPT4gXCJGbG9hdCBJbmVxdWFsaXR5XCI7XG5cbiAgbGV0IHNob3dfb3BfYmluX3N0cmluZzogb3BfYmluX3N0cmluZyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgQ29uY2F0ID0+IFwiU3RyaW5nIENvbmNhdGVuYXRpb25cIlxuICAgIHwgRXF1YWxzID0+IFwiU3RyaW5nIEVxdWFsaXR5XCI7XG5cbiAgbGV0IHNob3dfYmlub3A6IG9wX2JpbiA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW50KG9wKSA9PiBzaG93X29wX2Jpbl9pbnQob3ApXG4gICAgfCBGbG9hdChvcCkgPT4gc2hvd19vcF9iaW5fZmxvYXQob3ApXG4gICAgfCBCb29sKG9wKSA9PiBzaG93X29wX2Jpbl9ib29sKG9wKVxuICAgIHwgU3RyaW5nKG9wKSA9PiBzaG93X29wX2Jpbl9zdHJpbmcob3ApO1xuXG4gIGxldCBzaG93X2NsczogY2xzID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkID0+IFwiSW52YWxpZCBleHByZXNzaW9uXCJcbiAgICB8IE11bHRpSG9sZSA9PiBcIkJyb2tlbiBleHByZXNzaW9uXCJcbiAgICB8IEVtcHR5SG9sZSA9PiBcIkVtcHR5IGV4cHJlc3Npb24gaG9sZVwiXG4gICAgfCBUcml2ID0+IFwiVHJpdmlhbCBsaXRlcmFsXCJcbiAgICB8IEJvb2wgPT4gXCJCb29sZWFuIGxpdGVyYWxcIlxuICAgIHwgSW50ID0+IFwiSW50ZWdlciBsaXRlcmFsXCJcbiAgICB8IEZsb2F0ID0+IFwiRmxvYXQgbGl0ZXJhbFwiXG4gICAgfCBTdHJpbmcgPT4gXCJTdHJpbmcgbGl0ZXJhbFwiXG4gICAgfCBMaXN0TGl0ID0+IFwiTGlzdCBsaXRlcmFsXCJcbiAgICB8IENvbnN0cnVjdG9yID0+IFwiQ29uc3RydWN0b3JcIlxuICAgIHwgRnVuID0+IFwiRnVuY3Rpb24gbGl0ZXJhbFwiXG4gICAgfCBUdXBsZSA9PiBcIlR1cGxlIGxpdGVyYWxcIlxuICAgIHwgVmFyID0+IFwiVmFyaWFibGUgcmVmZXJlbmNlXCJcbiAgICB8IE1ldGFWYXIgPT4gXCJNZXRhIHZhcmlhYmxlIHJlZmVyZW5jZVwiXG4gICAgfCBMZXQgPT4gXCJMZXQgZXhwcmVzc2lvblwiXG4gICAgfCBUeUFsaWFzID0+IFwiVHlwZSBBbGlhcyBkZWZpbml0aW9uXCJcbiAgICB8IEFwID0+IFwiQXBwbGljYXRpb25cIlxuICAgIHwgUGlwZWxpbmUgPT4gXCJQaXBlbGluZSBleHByZXNzaW9uXCJcbiAgICB8IElmID0+IFwiSWYgZXhwcmVzc2lvblwiXG4gICAgfCBTZXEgPT4gXCJTZXF1ZW5jZSBleHByZXNzaW9uXCJcbiAgICB8IFRlc3QgPT4gXCJUZXN0XCJcbiAgICB8IEZpbHRlciA9PiBcIkZpbHRlclwiXG4gICAgfCBQYXJlbnMgPT4gXCJQYXJlbnRoZXNpemVkIGV4cHJlc3Npb25cIlxuICAgIHwgQ29ucyA9PiBcIkNvbnNcIlxuICAgIHwgTGlzdENvbmNhdCA9PiBcIkxpc3QgQ29uY2F0ZW5hdGlvblwiXG4gICAgfCBCaW5PcChvcCkgPT4gc2hvd19iaW5vcChvcClcbiAgICB8IFVuT3Aob3ApID0+IHNob3dfdW5vcChvcClcbiAgICB8IE1hdGNoID0+IFwiQ2FzZSBleHByZXNzaW9uXCI7XG5cbiAgbGV0IHJlYyBpc19mdW4gPSAoZTogdCkgPT4ge1xuICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgfCBQYXJlbnMoZSkgPT4gaXNfZnVuKGUpXG4gICAgfCBGdW4oXykgPT4gdHJ1ZVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXylcbiAgICB8IFRyaXZcbiAgICB8IEJvb2woXylcbiAgICB8IEludChfKVxuICAgIHwgRmxvYXQoXylcbiAgICB8IFN0cmluZyhfKVxuICAgIHwgTGlzdExpdChfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IFZhcihfKVxuICAgIHwgTGV0KF8pXG4gICAgfCBUeUFsaWFzKF8pXG4gICAgfCBBcChfKVxuICAgIHwgUGlwZWxpbmUoXylcbiAgICB8IElmKF8pXG4gICAgfCBTZXEoXylcbiAgICB8IFRlc3QoXylcbiAgICB8IEZpbHRlcihfKVxuICAgIHwgQ29ucyhfKVxuICAgIHwgTGlzdENvbmNhdChfKVxuICAgIHwgVW5PcChfKVxuICAgIHwgQmluT3AoXylcbiAgICB8IE1hdGNoKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl9mdW5jdGlvbnMgPSAoZTogdCkgPT5cbiAgICBpc19mdW4oZSlcbiAgICB8fCAoXG4gICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgfCBQYXJlbnMoZSkgPT4gaXNfdHVwbGVfb2ZfZnVuY3Rpb25zKGUpXG4gICAgICB8IFR1cGxlKGVzKSA9PiBlcyB8PiBMaXN0LmZvcl9hbGwoaXNfZnVuKVxuICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICB8IEVtcHR5SG9sZVxuICAgICAgfCBNdWx0aUhvbGUoXylcbiAgICAgIHwgVHJpdlxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBGdW4oXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IExldChfKVxuICAgICAgfCBUeUFsaWFzKF8pXG4gICAgICB8IEFwKF8pXG4gICAgICB8IFBpcGVsaW5lKF8pXG4gICAgICB8IElmKF8pXG4gICAgICB8IFNlcShfKVxuICAgICAgfCBUZXN0KF8pXG4gICAgICB8IEZpbHRlcihfKVxuICAgICAgfCBDb25zKF8pXG4gICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgIHwgVW5PcChfKVxuICAgICAgfCBCaW5PcChfKVxuICAgICAgfCBNYXRjaChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IGN0cl9uYW1lID0gKGU6IHQpOiBvcHRpb24oQ29uc3RydWN0b3IudCkgPT5cbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgQ29uc3RydWN0b3IobmFtZSkgPT4gU29tZShuYW1lKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbn07XG5cbi8vIFRPRE8oZCk6IGNvbnNpZGVyIGp1c3QgZm9sZGluZyB0aGlzIGludG8gVUV4cFxubW9kdWxlIFVSdWwgPSB7XG4gIGluY2x1ZGUgVGVybUJhc2UuVVJ1bDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IFJ1bGU7XG5cbiAgLy8gZXhhbXBsZSBvZiBhd2t3YXJkbmVzcyBpbmR1Y2VkIGJ5IGhhdmluZyBmb3JtcyBsaWtlIHJ1bGVzXG4gIC8vIHRoYXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQtc29ydGVkIGNoaWxkIHdpdGggbm8gZGVsaW1pdGVyc1xuICAvLyAoZWcgc2NydXQgd2l0aCBubyBydWxlcylcbiAgbGV0IGlkcyA9ICh+YW55X2lkcywge2lkcywgdGVybX06IHQpID0+XG4gICAgc3dpdGNoIChpZHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiBpZHNcbiAgICB8IFtdID0+XG4gICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgIHwgSG9sZShbdG0sIC4uLl9dKSA9PiBhbnlfaWRzKHRtKVxuICAgICAgfCBSdWxlcyhzY3J1dCwgW10pID0+IHNjcnV0Lmlkc1xuICAgICAgfCBfID0+IFtdXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgcmVwX2lkID0gKH5hbnlfaWRzLCB0bSkgPT5cbiAgICBzd2l0Y2ggKGlkcyh+YW55X2lkcywgdG0pKSB7XG4gICAgfCBbXSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVGVybS5VRXhwLnJlcF9pZFwiKSlcbiAgICB8IFtpZCwgLi4uX10gPT4gaWRcbiAgICB9O1xufTtcblxubW9kdWxlIENscyA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKFVFeHAuY2xzKVxuICAgIHwgUGF0KFVQYXQuY2xzKVxuICAgIHwgVHlwKFVUeXAuY2xzKVxuICAgIHwgVFBhdChVVFBhdC5jbHMpXG4gICAgfCBSdWwoVVJ1bC5jbHMpXG4gICAgfCBTZWNvbmRhcnkoU2Vjb25kYXJ5LmNscyk7XG5cbiAgbGV0IHNob3cgPSAoY2xzOiB0KSA9PlxuICAgIHN3aXRjaCAoY2xzKSB7XG4gICAgfCBFeHAoY2xzKSA9PiBVRXhwLnNob3dfY2xzKGNscylcbiAgICB8IFBhdChjbHMpID0+IFVQYXQuc2hvd19jbHMoY2xzKVxuICAgIHwgVHlwKGNscykgPT4gVVR5cC5zaG93X2NscyhjbHMpXG4gICAgfCBUUGF0KGNscykgPT4gVVRQYXQuc2hvd19jbHMoY2xzKVxuICAgIHwgUnVsKGNscykgPT4gVVJ1bC5zaG93X2NscyhjbHMpXG4gICAgfCBTZWNvbmRhcnkoY2xzKSA9PiBTZWNvbmRhcnkuc2hvd19jbHMoY2xzKVxuICAgIH07XG59O1xuXG5sZXQgcmVjIGlkcyA9XG4gIGZ1blxuICB8IEV4cCh0bSkgPT4gdG0uaWRzXG4gIHwgUGF0KHRtKSA9PiB0bS5pZHNcbiAgfCBUeXAodG0pID0+IHRtLmlkc1xuICB8IFRQYXQodG0pID0+IHRtLmlkc1xuICB8IFJ1bCh0bSkgPT4gVVJ1bC5pZHMofmFueV9pZHM9aWRzLCB0bSlcbiAgfCBOdWwgKClcbiAgfCBBbnkgKCkgPT4gW107XG5cbi8vIFRlcm1zIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIHRpbGVzLCBlZyB0aGUgY29tbWFzIGluIGFuIG4tdHVwbGUsXG4vLyB0aGUgcnVsZXMgb2YgYSBjYXNlIGV4cHJlc3Npb24gKyB0aGUgc3Vycm91bmRpbmcgY2FzZS1lbmQgdGlsZSxcbi8vIHRoZSBsaXN0IGJyYWNrZXRzIHRpbGUgY291cGxlZCB3aXRoIHRoZSBlbGVtLXNlcGFyYXRpbmcgY29tbWFzLlxuLy8gVGhlIF9yZXByZXNlbnRhdGl2ZSBpZF8gaXMgdGhlIGNhbm9uaWNhbCB0aWxlIGlkIHVzZWQgdG8gaWRlbnRpZnlcbi8vIGFuZCBsb29rIHVwIGluZm8gYWJvdXQgYSB0ZXJtLlxuLy9cbi8vIEluIGluc3RhbmNlcyBsaWtlIGNhc2UgZXhwcmVzc2lvbnMgYW5kIGxpc3QgbGl0ZXJhbHMsIHdoZXJlIGEgcGFyZW50XG4vLyB0aWxlIHN1cnJvdW5kcyB0aGUgb3RoZXIgdGlsZXMsIHRoZSByZXByZXNlbnRhdGl2ZSBpZCBpcyB0aGUgcGFyZW50IHRpbGUncy5cbi8vIEluIG90aGVyIGluc3RhbmNlcyBsaWtlIG4tdHVwbGVzLCB3aGVyZSB0aGUgY29tbWFzIGFyZSBhbGwgc2libGluZ3MsXG4vLyB0aGUgcmVwcmVzZW50YXRpdmUgaWQgaXMgb25lIG9mIHRoZSBjb21tYSBpZHMsIHVuc3BlY2lmaWVkIHdoaWNoIG9uZS5cbi8vIChUaGlzIHdvdWxkIGNoYW5nZSBmb3Igbi10dXBsZXMgaWYgd2UgZGVjaWRlZCBwYXJlbnRoZXNlcyBhcmUgbmVjZXNzYXJ5LilcbmxldCByZXBfaWQgPVxuICBmdW5cbiAgfCBFeHAodG0pID0+IFVFeHAucmVwX2lkKHRtKVxuICB8IFBhdCh0bSkgPT4gVVBhdC5yZXBfaWQodG0pXG4gIHwgVHlwKHRtKSA9PiBVVHlwLnJlcF9pZCh0bSlcbiAgfCBUUGF0KHRtKSA9PiBVVFBhdC5yZXBfaWQodG0pXG4gIHwgUnVsKHRtKSA9PiBVUnVsLnJlcF9pZCh+YW55X2lkcz1pZHMsIHRtKVxuICB8IE51bCAoKVxuICB8IEFueSAoKSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVGVybS5yZXBfaWRcIikpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5vcGVuIFRlcm07XG5cbi8qIElORk8ucmVcblxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgY3Vyc29yIElORk8gZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIGlzIHVzZWRcbiAgIHRvIHJlcHJlc2VudCB0aGUgc3RhdGljIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHRlcm0gaW4gdGhlXG4gICBBU1QuIFRoaXMgaW5jbHVkZXMgdGhlIHRlcm0gaXRzZWxmLCBhbmQgaW5mb3JtYXRpb24gcmVsYXRlZCB0b1xuICAgdHlwaW5nIGFuZCBzeW50YXgsIGluY2x1ZGVkIGVycm9uZW91cyBzdGF0ZXMuXG5cbiAgIEVhY2ggdGVybSBpcyBhc3NpZ25lZCBhIFNUQVRVUywgd2hpY2ggaXMgZGlyZWN0bHkgdXNlZCB0byBkZXRlcm1pbmVcbiAgIHRoZSBtZXNzYWdlIGRpc3BsYXllZCB0byB0aGUgdXNlciBpbiBDdXJzb3JJbnNwZWN0b3IucmUuIEVhY2ggc29ydFxuICAgaGFzIGl0cyBvd24gc3RhdHVzIGRhdGF0eXBlLCB3aGljaCBpcyBkaXZpZGVkIGludG8gT0sgc3RhdGVzIChub3RcbiAgIGluIGVycm9yIGhvbGVzKSBhbmQgRVJST1Igc3RhdGVzIChpbiBlcnJvciBob2xlcykuXG5cbiAgIFJlZ2FyZGxlc3Mgb2YgZXJyb3JzLCBldmVyeSBleHByZXNzaW9uICYgcGF0dGVybiB0ZXJtIGlzIHVsdGltYXRlbHlcbiAgIGFzc2lnbmVkIGEgRklYRUQgVFlQRSwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgdGhlIHRlcm0gYWZ0ZXIgaG9sZVxuICAgZml4aW5nOyB0aGF0IGlzLCBhbGwgb3RoZXJ3aXNlIGlsbC10eXBlZCB0ZXJtcyBhcmUgY29uc2lkZXJlZCB0b1xuICAgYmUgJ3dyYXBwZWQgaW4gbm9uLWVtcHR5IGhvbGVzJywgaS5lLiBhc3NpZ25lZCBhbiBVbmtub3duIHR5cGUuXG5cbiAgIEZpeGVkIHR5cGVzIGFyZSBkZXRlcm1pbmVkIGJ5IHJlY29uY2lsbGluZyB0d28gc291cmNlcyBvZiB0eXBlXG4gICBpbmZvcm1hdGlvbjogdGhlIFNFTEYgKFNlbGYucmUpLCByZXByZXNlbnRpbmcgdGhlIHR5cGUgaW5mb3JtYXRpb25cbiAgIGRlcml2YWJsZSBmcm9tIGEgdGVybSBpbiBpc29sYXRpb24sIGFuZCB0aGUgTU9ERSAoTW9kZS5yZSksXG4gICByZXByZXNlbnRpbmcgdGhlIGV4cGVjdGVkIHR5cGUgaW5mb3JtYXRpb24gaW1wb3NlZCBieSB0aGUgc3Vycm91bmRpbmdcbiAgIHN5bnRhY3RpYyBjb250ZXh0LiBBIHN1Y2Nlc3NmdWwgcmVjb25jaWxsaWF0aW9uIHJlc3VsdHMgaW4gYW4gT0tcbiAgIHN0YXR1czsgb3RoZXJ3aXNlLCBhbiBFUlJPUiBzdGF0dXMsIGJ1dCBpbiBib3RoIGNhc2VzLCBhIGZpeGVkIHR5cGVcbiAgIGlzIGRldGVybWluZWQuXG5cbiAgICovXG5cbi8qIFRoZSBpZHMgb2YgYSB0ZXJtJ3MgYW5jZXN0b3JzIGluIHRoZSBBU1QgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYW5jZXN0b3JzID0gbGlzdChJZC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9pbmNvbnNpc3RlbnQgPVxuICAvKiBTZWxmIHR5cGUgKHN5bikgaW5jb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZSAoYW5hKSAqL1xuICB8IEV4cGVjdGF0aW9uKHtcbiAgICAgIGFuYTogVHlwLnQsXG4gICAgICBzeW46IFR5cC50LFxuICAgIH0pXG4gIC8qIEluY29uc2lzdGVudCBtYXRjaCBvciBsaXN0bGl0ICovXG4gIHwgSW50ZXJuYWwobGlzdChUeXAudCkpXG4gIC8qIEJhZCBmdW5jdGlvbiBwb3NpdGlvbiAqL1xuICB8IFdpdGhBcnJvdyhUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3Jfbm9fdHlwZSA9XG4gIC8qIEludmFsaWQgZXhwcmVzc2lvbiB0b2tlbiwgdHJlYXRlZCBhcyBob2xlICovXG4gIHwgQmFkVG9rZW4oVG9rZW4udClcbiAgLyogRW1wdHkgYXBwbGljYXRpb24gb2YgZnVuY3Rpb24gd2l0aCBpbmNvbnNpc3RlbnQgdHlwZSAqL1xuICB8IEJhZFRyaXZBcChUeXAudClcbiAgLyogU3VtIGNvbnN0cnVjdG9yIG5laXRlciBib3VuZCBub3IgaW4gYW5hIHR5cGUgKi9cbiAgfCBGcmVlQ29uc3RydWN0b3IoQ29uc3RydWN0b3IudCk7XG5cbi8qIEVycm9ycyB3aGljaCBjYW4gYXBwbHkgdG8gZWl0aGVyIGV4cHJlc3Npb24gb3IgcGF0dGVybnMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3JfY29tbW9uID1cbiAgLyogVW5kZXJkZXRlcm1pbmVkOiBObyB0eXBlIGNhbiBiZSBhc3NpZ25lZCAqL1xuICB8IE5vVHlwZShlcnJvcl9ub190eXBlKVxuICAvKiBPdmVyZGV0ZXJtaW5lZDogQ29uZmxpY3RpbmcgdHlwZSBleHBlY3RhdGlvbnMgKi9cbiAgfCBJbmNvbnNpc3RlbnQoZXJyb3JfaW5jb25zaXN0ZW50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9leHAgPVxuICB8IEZyZWVWYXJpYWJsZShWYXIudCkgLyogVW5ib3VuZCB2YXJpYWJsZSAobm90IGluIHR5cGluZyBjb250ZXh0KSAqL1xuICB8IENvbW1vbihlcnJvcl9jb21tb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3BhdCA9XG4gIHwgRXhwZWN0ZWRDb25zdHJ1Y3RvciAvKiBPbmx5IGNvbnN0cnV0b3JzIGNhbiBiZSBhcHBsaWVkICovXG4gIHwgQ29tbW9uKGVycm9yX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfYW5hID1cbiAgLyogVGhlIGV4cGVjdGVkIChhbmEpIHR5cGUgYW5kIHRoZSBzZWxmIChzeW4pIHR5cGUgYXJlXG4gICAgIGNvbnNpc3RlbnQsIGFzIHdpdG5lc3NlZCBieSB0aGVpciBqb2ludCB0eXBlIChqb2luKSAqL1xuICB8IENvbnNpc3RlbnQoe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgICBqb2luOiBUeXAudCxcbiAgICB9KVxuICAvKiBBIG1hdGNoIGV4cHJlc3Npb24gb3IgbGlzdCBsaXRlcmFsIHdoaWNoLCBpbiBzeW50aGV0aWMgcG9zaXRpb24sXG4gICAgIHdvdWxkIGJlIG1hcmtlZCBhcyBpbnRlcm5hbGx5IGluY29uc2lzdGVudCwgYnV0IGlzIGNvbnNpZGVyZWRcbiAgICAgZmluZSBhcyB0aGUgZXhwZWN0ZWQgdHlwZSBwcm92aWRlcyBhIGNvbnNpc3RlbnQgbG93ZXIgYm91bmRcbiAgICAgKG9mdGVuIFVua25vd24pIGZvciB0aGUgdHlwZXMgb2YgdGhlIGJyYW5jaGVzL2VsZW1lbnRzICovXG4gIHwgSW50ZXJuYWxseUluY29uc2lzdGVudCh7XG4gICAgICBhbmE6IFR5cC50LFxuICAgICAgbm9qb2luOiBsaXN0KFR5cC50KSxcbiAgICB9KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19jb21tb24gPVxuICB8IFN5bihUeXAudClcbiAgfCBBbmEob2tfYW5hKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19leHAgPSBva19jb21tb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfcGF0ID0gb2tfY29tbW9uO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c19jb21tb24gPVxuICB8IEluSG9sZShlcnJvcl9jb21tb24pXG4gIHwgTm90SW5Ib2xlKG9rX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX2V4cCA9XG4gIHwgSW5Ib2xlKGVycm9yX2V4cClcbiAgfCBOb3RJbkhvbGUob2tfZXhwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfcGF0ID1cbiAgfCBJbkhvbGUoZXJyb3JfcGF0KVxuICB8IE5vdEluSG9sZShva19wYXQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c192YXJpYW50ID1cbiAgfCBVbmlxdWVcbiAgfCBEdXBsaWNhdGU7XG5cbi8qIEV4cGVjdGF0aW9uIGltcG9zZWQgb24gYSB0eXBlIGJ5IHRoZSBwYXJlbnQgZm9ybS5cbiAgIFRPRE86IFRoaXMgaXMgZnVuZGFtZW50YWxseSBzeW50YWN0aWMgYW5kIHNob3VsZFxuICAgZXZlbnR1YWxseSBiZSByZWltcGxlbWV0ZWQgdmlhIGEgc2VwZXJhdGUgc29ydCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBfZXhwZWN0cyA9XG4gIHwgVHlwZUV4cGVjdGVkXG4gIHwgQ29uc3RydWN0b3JFeHBlY3RlZChzdGF0dXNfdmFyaWFudCwgVHlwLnQpXG4gIHwgVmFyaWFudEV4cGVjdGVkKHN0YXR1c192YXJpYW50LCBUeXAudCk7XG5cbi8qIFR5cGUgdGVybSBlcnJvcnNcbiAgIFRPRE86IFRoZSB0aHJlZSBhZGRpdGlvbmFsIGVycm9ycyBzdGF0dXNlc1xuICAgYXJlIGZ1bmRhbWVudGFsbHkgc3ludGFjdGljIGFuZCBzaG91bGQgd2hlblxuICAgcG9zc2libGUgYmUgcmVpbXBsZW1ldGVkIHZpYSBhIHNlcGVyYXRlIHNvcnQgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3JfdHlwID1cbiAgfCBCYWRUb2tlbihUb2tlbi50KSAvKiBJbnZhbGlkIHRva2VuLCB0cmVhdGVkIGFzIHR5cGUgaG9sZSAqL1xuICB8IEZyZWVUeXBlVmFyaWFibGUoVHlwVmFyLnQpIC8qIEZyZWUgdHlwZSB2YXJpYWJsZSAqL1xuICB8IER1cGxpY2F0ZUNvbnN0cnVjdG9yKENvbnN0cnVjdG9yLnQpIC8qIER1cGxpY2F0ZSBjdHIgaW4gc2FtZSBzdW0gKi9cbiAgfCBXYW50VHlwZUZvdW5kQXBcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZFR5cGUoVHlwLnQpXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRBcDtcblxuLyogVHlwZSBvayBzdGF0dXNlcyBmb3IgY3Vyc29yIGluc3BlY3RvciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva190eXAgPVxuICB8IFZhcmlhbnQoQ29uc3RydWN0b3IudCwgVHlwLnQpXG4gIHwgVmFyaWFudEluY29tcGxldGUoVHlwLnQpXG4gIHwgVHlwZUFsaWFzKFR5cFZhci50LCBUeXAudClcbiAgfCBUeXBlKFR5cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfdHlwID1cbiAgfCBJbkhvbGUoZXJyb3JfdHlwKVxuICB8IE5vdEluSG9sZShva190eXApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHR5cGVfdmFyX2VyciA9XG4gIHwgT3RoZXJcbiAgfCBOb3RDYXBpdGFsaXplZDtcblxuLyogVHlwZSBwYXR0ZXJuIHRlcm0gZXJyb3JzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3RwYXQgPVxuICB8IFNoYWRvd3NUeXBlKFR5cFZhci50KVxuICB8IE5vdEFWYXIodHlwZV92YXJfZXJyKTtcblxuLyogVHlwZSBwYXR0ZXJuIG9rIHN0YXR1c2VzIGZvciBjdXJzb3IgaW5zcGVjdG9yICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9rX3RwYXQgPVxuICB8IEVtcHR5XG4gIHwgVmFyKFR5cFZhci50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfdHBhdCA9XG4gIHwgTm90SW5Ib2xlKG9rX3RwYXQpXG4gIHwgSW5Ib2xlKGVycm9yX3RwYXQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cCA9IHtcbiAgdGVybTogVUV4cC50LCAvKiBUaGUgdGVybSB1bmRlciBjb25zaWRlcmF0aW9uICovXG4gIGFuY2VzdG9ycywgLyogQXNjZW5kaW5nIGxpc3Qgb2YgY29udGFpbmluZyB0ZXJtIGlkcyAqL1xuICBjdHg6IEN0eC50LCAvKiBUeXBpbmcgY29udGV4dCBmb3IgdGhlIHRlcm0gKi9cbiAgbW9kZTogTW9kZS50LCAvKiBQYXJlbnRhbCB0eXBlIGV4cGVjdGF0aW9ucyAgKi9cbiAgc2VsZjogU2VsZi5leHAsIC8qIEV4cGVjdGF0aW9uLWluZGVwZW5kZW50IHR5cGUgaW5mbyAqL1xuICBjb19jdHg6IENvQ3R4LnQsIC8qIExvY2FsbHkgZnJlZSB2YXJpYWJsZXMgKi9cbiAgY2xzOiBUZXJtLkNscy50LCAvKiBERVJJVkVEOiBTeW50YXggY2xhc3MgKGkuZS4gZm9ybSBuYW1lKSAqL1xuICBzdGF0dXM6IHN0YXR1c19leHAsIC8qIERFUklWRUQ6IE9rL0Vycm9yIHN0YXR1c2VzIGZvciBkaXNwbGF5ICovXG4gIHR5OiBUeXAudCAvKiBERVJJVkVEOiBUeXBlIGFmdGVyIG5vbmVtcHR5IGhvbGUgZml4aW5nICovXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBhdCA9IHtcbiAgdGVybTogVVBhdC50LFxuICBhbmNlc3RvcnMsXG4gIGN0eDogQ3R4LnQsXG4gIGNvX2N0eDogQ29DdHgudCxcbiAgbW9kZTogTW9kZS50LFxuICBzZWxmOiBTZWxmLnBhdCxcbiAgY2xzOiBUZXJtLkNscy50LFxuICBzdGF0dXM6IHN0YXR1c19wYXQsXG4gIHR5OiBUeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHlwID0ge1xuICB0ZXJtOiBVVHlwLnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgZXhwZWN0czogdHlwX2V4cGVjdHMsXG4gIGNsczogVGVybS5DbHMudCxcbiAgc3RhdHVzOiBzdGF0dXNfdHlwLFxuICB0eTogVHlwLnQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRwYXQgPSB7XG4gIHRlcm06IFVUUGF0LnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgY2xzOiBUZXJtLkNscy50LFxuICBzdGF0dXM6IHN0YXR1c190cGF0LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWNvbmRhcnkgPSB7XG4gIGlkOiBJZC50LCAvLyBJZCBvZiB0ZXJtIHN0YXRpYyBpbmZvIGlzIHNvdXJjZWQgZnJvbVxuICBjbHM6IFRlcm0uQ2xzLnQsIC8vIENscyBvZiBzZWNvbmRhcnksIG5vdCBzb3VyY2UgdGVybVxuICBzb3J0OiBTb3J0LnQsIC8vIGZyb20gc291cmNlIHRlcm1cbiAgY3R4OiBDdHgudCAvLyBmcm9tIHNvdXJjZSB0ZXJtXG59O1xuXG4vKiBUaGUgc3RhdGljIGluZm9ybWF0aW9uIGNvbGxhdGVkIGZvciBlYWNoIHRlcm0gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgSW5mb0V4cChleHApXG4gIHwgSW5mb1BhdChwYXQpXG4gIHwgSW5mb1R5cCh0eXApXG4gIHwgSW5mb1RQYXQodHBhdClcbiAgfCBTZWNvbmRhcnkoc2Vjb25kYXJ5KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvciA9XG4gIHwgRXhwKGVycm9yX2V4cClcbiAgfCBQYXQoZXJyb3JfcGF0KVxuICB8IFR5cChlcnJvcl90eXApXG4gIHwgVFBhdChlcnJvcl90cGF0KTtcblxubGV0IHNvcnRfb2Y6IHQgPT4gU29ydC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cChfKSA9PiBFeHBcbiAgfCBJbmZvUGF0KF8pID0+IFBhdFxuICB8IEluZm9UeXAoXykgPT4gVHlwXG4gIHwgSW5mb1RQYXQoXykgPT4gVFBhdFxuICB8IFNlY29uZGFyeShzKSA9PiBzLnNvcnQ7XG5cbmxldCBjbHNfb2Y6IHQgPT4gQ2xzLnQgPVxuICBmdW5cbiAgfCBJbmZvRXhwKHtjbHMsIF99KVxuICB8IEluZm9QYXQoe2NscywgX30pXG4gIHwgSW5mb1R5cCh7Y2xzLCBffSlcbiAgfCBJbmZvVFBhdCh7Y2xzLCBffSlcbiAgfCBTZWNvbmRhcnkoe2NscywgX30pID0+IGNscztcblxubGV0IGN0eF9vZjogdCA9PiBDdHgudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2N0eCwgX30pXG4gIHwgSW5mb1BhdCh7Y3R4LCBffSlcbiAgfCBJbmZvVHlwKHtjdHgsIF99KVxuICB8IEluZm9UUGF0KHtjdHgsIF99KVxuICB8IFNlY29uZGFyeSh7Y3R4LCBffSkgPT4gY3R4O1xuXG5sZXQgYW5jZXN0b3JzX29mOiB0ID0+IGFuY2VzdG9ycyA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2FuY2VzdG9ycywgX30pXG4gIHwgSW5mb1BhdCh7YW5jZXN0b3JzLCBffSlcbiAgfCBJbmZvVHlwKHthbmNlc3RvcnMsIF99KVxuICB8IEluZm9UUGF0KHthbmNlc3RvcnMsIF99KSA9PiBhbmNlc3RvcnNcbiAgfCBTZWNvbmRhcnkoXykgPT4gW107IC8vVE9ET1xuXG5sZXQgaWRfb2Y6IHQgPT4gSWQudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoaSkgPT4gVGVybS5VRXhwLnJlcF9pZChpLnRlcm0pXG4gIHwgSW5mb1BhdChpKSA9PiBUZXJtLlVQYXQucmVwX2lkKGkudGVybSlcbiAgfCBJbmZvVHlwKGkpID0+IFRlcm0uVVR5cC5yZXBfaWQoaS50ZXJtKVxuICB8IEluZm9UUGF0KGkpID0+IFRlcm0uVVRQYXQucmVwX2lkKGkudGVybSlcbiAgfCBTZWNvbmRhcnkocykgPT4gcy5pZDtcblxubGV0IGVycm9yX29mOiB0ID0+IG9wdGlvbihlcnJvcikgPVxuICBmdW5cbiAgfCBJbmZvRXhwKHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pXG4gIHwgSW5mb1BhdCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KVxuICB8IEluZm9UeXAoe3N0YXR1czogTm90SW5Ib2xlKF8pLCBffSlcbiAgfCBJbmZvVFBhdCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KSA9PiBOb25lXG4gIHwgSW5mb0V4cCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoRXhwKGVycikpXG4gIHwgSW5mb1BhdCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoUGF0KGVycikpXG4gIHwgSW5mb1R5cCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoVHlwKGVycikpXG4gIHwgSW5mb1RQYXQoe3N0YXR1czogSW5Ib2xlKGVyciksIF99KSA9PiBTb21lKFRQYXQoZXJyKSlcbiAgfCBTZWNvbmRhcnkoXykgPT4gTm9uZTtcblxubGV0IGV4cF9jb19jdHg6IGV4cCA9PiBDb0N0eC50ID0gKHtjb19jdHgsIF99KSA9PiBjb19jdHg7XG5sZXQgZXhwX3R5OiBleHAgPT4gVHlwLnQgPSAoe3R5LCBffSkgPT4gdHk7XG5sZXQgcGF0X2N0eDogcGF0ID0+IEN0eC50ID0gKHtjdHgsIF99KSA9PiBjdHg7XG5sZXQgcGF0X3R5OiBwYXQgPT4gVHlwLnQgPSAoe3R5LCBffSkgPT4gdHk7XG5cbmxldCByZWMgc3RhdHVzX2NvbW1vbiA9XG4gICAgICAgIChjdHg6IEN0eC50LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYudCk6IHN0YXR1c19jb21tb24gPT5cbiAgc3dpdGNoIChzZWxmLCBtb2RlKSB7XG4gIHwgKEp1c3Qoc3luKSwgU3luKSA9PiBOb3RJbkhvbGUoU3luKHN5bikpXG4gIHwgKEp1c3Qoc3luKSwgQW5hKGFuYSkpID0+XG4gICAgc3dpdGNoIChUeXAuam9pbl9maXgoY3R4LCBhbmEsIHN5bikpIHtcbiAgICB8IE5vbmUgPT4gSW5Ib2xlKEluY29uc2lzdGVudChFeHBlY3RhdGlvbih7c3luLCBhbmF9KSkpXG4gICAgfCBTb21lKGpvaW4pID0+IE5vdEluSG9sZShBbmEoQ29uc2lzdGVudCh7YW5hLCBzeW4sIGpvaW59KSkpXG4gICAgfVxuICB8IChKdXN0KHN5biksIFN5bkZ1bikgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fZml4KGN0eCwgQXJyb3coVW5rbm93bihJbnRlcm5hbCksIFVua25vd24oSW50ZXJuYWwpKSwgc3luKVxuICAgICkge1xuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KFdpdGhBcnJvdyhzeW4pKSlcbiAgICB8IFNvbWUoXykgPT4gTm90SW5Ib2xlKFN5bihzeW4pKVxuICAgIH1cbiAgfCAoSXNDb25zdHJ1Y3Rvcih7bmFtZSwgc3luX3R5fSksIF8pID0+XG4gICAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgICAgYSBzdW0gdHlwZSBoYXZpbmcgdGhhdCBjdHIgYXMgYSB2YXJpYW50LCBpdHMgc2VsZiB0eXBlIGlzXG4gICAgICAgY29uc2lkZXJlZCB0byBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBzdW0gdHlwZTsgb3RoZXJ3aXNlLFxuICAgICAgIGNoZWNrIHRoZSBjb250ZXh0IGZvciB0aGUgY3RyJ3MgdHlwZSAqL1xuICAgIHN3aXRjaCAoTW9kZS5jdHJfYW5hX3R5cChjdHgsIG1vZGUsIG5hbWUpLCBzeW5fdHkpIHtcbiAgICB8IChTb21lKGFuYV90eSksIF8pID0+IHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBKdXN0KGFuYV90eSkpXG4gICAgfCAoXywgU29tZShzeW5fdHkpKSA9PiBzdGF0dXNfY29tbW9uKGN0eCwgbW9kZSwgSnVzdChzeW5fdHkpKVxuICAgIHwgXyA9PiBJbkhvbGUoTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihuYW1lKSkpXG4gICAgfVxuICB8IChCYWRUb2tlbihuYW1lKSwgXykgPT4gSW5Ib2xlKE5vVHlwZShCYWRUb2tlbihuYW1lKSkpXG4gIHwgKEJhZFRyaXZBcCh0eSksIF8pID0+IEluSG9sZShOb1R5cGUoQmFkVHJpdkFwKHR5KSkpXG4gIHwgKElzTXVsdGksIF8pID0+IE5vdEluSG9sZShTeW4oVW5rbm93bihJbnRlcm5hbCkpKVxuICB8IChOb0pvaW4od3JhcCwgdHlzKSwgQW5hKGFuYSkpID0+XG4gICAgbGV0IHN5bjogVHlwLnQgPSBTZWxmLmpvaW5fb2Yod3JhcCwgVW5rbm93bihJbnRlcm5hbCkpO1xuICAgIHN3aXRjaCAoVHlwLmpvaW5fZml4KGN0eCwgYW5hLCBzeW4pKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe2FuYSwgc3lufSkpKVxuICAgIHwgU29tZShfKSA9PlxuICAgICAgTm90SW5Ib2xlKFxuICAgICAgICBBbmEoSW50ZXJuYWxseUluY29uc2lzdGVudCh7YW5hLCBub2pvaW46IFR5cC5vZl9zb3VyY2UodHlzKX0pKSxcbiAgICAgIClcbiAgICB9O1xuICB8IChOb0pvaW4oXywgdHlzKSwgU3luIHwgU3luRnVuKSA9PlxuICAgIEluSG9sZShJbmNvbnNpc3RlbnQoSW50ZXJuYWwoVHlwLm9mX3NvdXJjZSh0eXMpKSkpXG4gIH07XG5cbmxldCBzdGF0dXNfcGF0ID0gKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5wYXQpOiBzdGF0dXNfcGF0ID0+XG4gIHN3aXRjaCAobW9kZSwgc2VsZikge1xuICB8IChTeW4gfCBBbmEoXyksIENvbW1vbihzZWxmX3BhdCkpXG4gIHwgKFN5bkZ1biwgQ29tbW9uKElzQ29uc3RydWN0b3IoXykgYXMgc2VsZl9wYXQpKSA9PlxuICAgIC8qIExpdHRsZSBiaXQgb2YgYSBoYWNrLiBBbnl0aGluZyBvdGhlciB0aGFuIGEgYm91bmQgY3RyIHdpbGwsIGluXG4gICAgICAgZnVuY3Rpb24gcG9zaXRpb24sIGhhdmUgU3luRnVuIG1vZGUgKHNlZSBUeXAuYXBfbW9kZSkuIFNpbmNlIHdlXG4gICAgICAgYXJlIHByb2hpYml0aW5nIG5vbi1jdHJzIGluIGN0ciBhcHBsaWNhdGlvbnMgaW4gcGF0dGVybnMgZm9yIG5vdyxcbiAgICAgICB3ZSBjYXRjaCB0aGVtIGhlcmUsIGRpdmVydGluZyB0byBhbiBFeHBlY3RlZENvbnN0cnVjdG9yIGVycm9yLiBCdXQgd2VcbiAgICAgICBhdm9pZCBjYXB0dXJpbmcgdGhlIHNlY29uZCBjYXNlIGFib3ZlLCBhcyB0aGVzZSB3aWxsIHVsdGltYXRlbHlcbiAgICAgICBnZXQgYSAobW9yZSBwcmVjaXNlKSB1bmJvdW5kIGN0ciAgdmlhIHN0YXR1c19jb21tb24gKi9cbiAgICBzd2l0Y2ggKHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBzZWxmX3BhdCkpIHtcbiAgICB8IE5vdEluSG9sZShva19leHApID0+IE5vdEluSG9sZShva19leHApXG4gICAgfCBJbkhvbGUoZXJyX3BhdCkgPT4gSW5Ib2xlKENvbW1vbihlcnJfcGF0KSlcbiAgICB9XG4gIHwgKFN5bkZ1biwgXykgPT4gSW5Ib2xlKEV4cGVjdGVkQ29uc3RydWN0b3IpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbiBleHByZXNzaW9uIG9yIHBhdHRlcm4gaXMgaW4gYW4gZXJyb3IgaG9sZSxcbiAgIGRlcGVuZGluZyBvbiB0aGUgbW9kZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgZXhwZWN0YXRpb25zIG9mIHRoZVxuICAgc3Vycm91bmRpbmcgc3ludGFjdGljIGNvbnRleHQsIGFuZCB0aGUgc2VsZiB3aGljaCByZXByZXNlbnRzIHRoZVxuICAgbWFrZXVwIG9mIHRoZSBleHByZXNzaW9uIC8gcGF0dGVybiBpdHNlbGYuICovXG5sZXQgc3RhdHVzX2V4cCA9IChjdHg6IEN0eC50LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYuZXhwKTogc3RhdHVzX2V4cCA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoRnJlZShuYW1lKSwgXykgPT4gSW5Ib2xlKEZyZWVWYXJpYWJsZShuYW1lKSlcbiAgfCAoQ29tbW9uKHNlbGZfcGF0KSwgXykgPT5cbiAgICBzd2l0Y2ggKHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBzZWxmX3BhdCkpIHtcbiAgICB8IE5vdEluSG9sZShva19leHApID0+IE5vdEluSG9sZShva19leHApXG4gICAgfCBJbkhvbGUoZXJyX3BhdCkgPT4gSW5Ib2xlKENvbW1vbihlcnJfcGF0KSlcbiAgICB9XG4gIH07XG5cbi8qIFRoaXMgbG9naWMgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdHlwZSBzaG91bGQgYmUgcHV0XG4gICBpbiBhIGhvbGUgb3Igbm90LiBJdCdzIG1vc3RseSBzeW50YWN0aWMsIGRldGVybWluaW5nXG4gICB0aGUgcHJvcGVyIHBsYWNlbWVudCBvZiBzdW0gdHlwZSB2YXJpYW50cyBhbmQgY3RycztcbiAgIHRoaXMgc2hvdWxkIGJlIHJlaW1wbGVtZW50ZWQgaW4gdGhlIGZ1dHVyZSBhcyBhXG4gICBzZXBhcmF0ZSBzb3J0LiBJdCBhbHNvIGRldGVybWluZXMgc2VtYW50aWMgcHJvcGVydGllc1xuICAgc3VjaCBhcyB3aGV0aGVyIG9yIG5vdCBhIHR5cGUgdmFyaWFibGUgcmVmZXJlbmNlIGlzXG4gICBmcmVlLCBhbmQgd2hldGhlciBhIGN0ciBuYW1lIGlzIGEgZHVwZS4gKi9cbmxldCBzdGF0dXNfdHlwID1cbiAgICAoY3R4OiBDdHgudCwgZXhwZWN0czogdHlwX2V4cGVjdHMsIHRlcm06IFRlcm1CYXNlLlVUeXAudCwgdHk6IFR5cC50KVxuICAgIDogc3RhdHVzX3R5cCA9PlxuICBzd2l0Y2ggKHRlcm0udGVybSkge1xuICB8IEludmFsaWQodG9rZW4pID0+IEluSG9sZShCYWRUb2tlbih0b2tlbikpXG4gIHwgRW1wdHlIb2xlID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgfCBWYXIobmFtZSlcbiAgfCBDb25zdHJ1Y3RvcihuYW1lKSA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVmFyaWFudEV4cGVjdGVkKFVuaXF1ZSwgc3VtX3R5KVxuICAgIHwgQ29uc3RydWN0b3JFeHBlY3RlZChVbmlxdWUsIHN1bV90eSkgPT5cbiAgICAgIE5vdEluSG9sZShWYXJpYW50KG5hbWUsIHN1bV90eSkpXG4gICAgfCBWYXJpYW50RXhwZWN0ZWQoRHVwbGljYXRlLCBfKVxuICAgIHwgQ29uc3RydWN0b3JFeHBlY3RlZChEdXBsaWNhdGUsIF8pID0+XG4gICAgICBJbkhvbGUoRHVwbGljYXRlQ29uc3RydWN0b3IobmFtZSkpXG4gICAgfCBUeXBlRXhwZWN0ZWQgPT5cbiAgICAgIHN3aXRjaCAoQ3R4LmlzX2FsaWFzKGN0eCwgbmFtZSkpIHtcbiAgICAgIHwgZmFsc2UgPT4gSW5Ib2xlKEZyZWVUeXBlVmFyaWFibGUobmFtZSkpXG4gICAgICB8IHRydWUgPT4gTm90SW5Ib2xlKFR5cGVBbGlhcyhuYW1lLCBUeXAud2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkpXG4gICAgICB9XG4gICAgfVxuICB8IEFwKHQxLCB0MikgPT5cbiAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChzdGF0dXNfdmFyaWFudCwgdHlfdmFyaWFudCkgPT5cbiAgICAgIGxldCB0eV9pbiA9IFVUeXAudG9fdHlwKGN0eCwgdDIpO1xuICAgICAgc3dpdGNoIChzdGF0dXNfdmFyaWFudCwgdDEudGVybSkge1xuICAgICAgfCAoVW5pcXVlLCBWYXIobmFtZSkgfCBDb25zdHJ1Y3RvcihuYW1lKSkgPT5cbiAgICAgICAgTm90SW5Ib2xlKFZhcmlhbnQobmFtZSwgQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpKSlcbiAgICAgIHwgXyA9PiBOb3RJbkhvbGUoVmFyaWFudEluY29tcGxldGUoQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpKSlcbiAgICAgIH07XG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKF8pID0+IEluSG9sZShXYW50Q29uc3RydWN0b3JGb3VuZEFwKVxuICAgIHwgVHlwZUV4cGVjdGVkID0+IEluSG9sZShXYW50VHlwZUZvdW5kQXApXG4gICAgfVxuICB8IF8gPT5cbiAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICB8IFR5cGVFeHBlY3RlZCA9PiBOb3RJbkhvbGUoVHlwZSh0eSkpXG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKF8pXG4gICAgfCBWYXJpYW50RXhwZWN0ZWQoXykgPT4gSW5Ib2xlKFdhbnRDb25zdHJ1Y3RvckZvdW5kVHlwZSh0eSkpXG4gICAgfVxuICB9O1xuXG5sZXQgc3RhdHVzX3RwYXQgPSAoY3R4OiBDdHgudCwgdXRwYXQ6IFVUUGF0LnQpOiBzdGF0dXNfdHBhdCA9PlxuICBzd2l0Y2ggKHV0cGF0LnRlcm0pIHtcbiAgfCBFbXB0eUhvbGUgPT4gTm90SW5Ib2xlKEVtcHR5KVxuICB8IFZhcihuYW1lKVxuICAgICAgd2hlbiBGb3JtLmlzX2Jhc2VfdHlwKG5hbWUpIHx8IEN0eC5sb29rdXBfYWxpYXMoY3R4LCBuYW1lKSAhPSBOb25lID0+XG4gICAgSW5Ib2xlKFNoYWRvd3NUeXBlKG5hbWUpKVxuICB8IFZhcihuYW1lKSA9PiBOb3RJbkhvbGUoVmFyKG5hbWUpKVxuICB8IEludmFsaWQoXykgPT4gSW5Ib2xlKE5vdEFWYXIoTm90Q2FwaXRhbGl6ZWQpKVxuICB8IE11bHRpSG9sZShfKSA9PiBJbkhvbGUoTm90QVZhcihPdGhlcikpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbnkgdGVybSBpcyBpbiBhbiBlcnJvciBob2xlLiAqL1xubGV0IGlzX2Vycm9yID0gKGNpOiB0KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBJbmZvRXhwKHttb2RlLCBzZWxmLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9QYXQoe21vZGUsIHNlbGYsIGN0eCwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgICB8IEluSG9sZShfKSA9PiB0cnVlXG4gICAgfCBOb3RJbkhvbGUoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgSW5mb1R5cCh7ZXhwZWN0cywgY3R4LCB0ZXJtLCB0eSwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfdHlwKGN0eCwgZXhwZWN0cywgdGVybSwgdHkpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9UUGF0KHt0ZXJtLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX3RwYXQoY3R4LCB0ZXJtKSkge1xuICAgIHwgSW5Ib2xlKF8pID0+IHRydWVcbiAgICB8IE5vdEluSG9sZShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBTZWNvbmRhcnkoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIERldGVybWluZWQgdGhlIHR5cGUgb2YgYW4gZXhwcmVzc2lvbiBvciBwYXR0ZXJuICdhZnRlciBob2xlIGZpeGluZyc7XG4gICB0aGF0IGlzLCBhbGwgaWxsLXR5cGVkIHRlcm1zIGFyZSBjb25zaWRlcmVkIHRvIGJlICd3cmFwcGVkIGluXG4gICBub24tZW1wdHkgaG9sZXMnLCBpLmUuIGFzc2lnbmVkIFVua25vd24gdHlwZS4gKi9cbmxldCBmaXhlZF90eXBfb2s6IG9rX3BhdCA9PiBUeXAudCA9XG4gIGZ1blxuICB8IFN5bihzeW4pID0+IHN5blxuICB8IEFuYShDb25zaXN0ZW50KHtqb2luLCBffSkpID0+IGpvaW5cbiAgfCBBbmEoSW50ZXJuYWxseUluY29uc2lzdGVudCh7YW5hLCBffSkpID0+IGFuYTtcblxubGV0IGZpeGVkX3R5cF9wYXQgPSAoY3R4LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYucGF0KTogVHlwLnQgPT5cbiAgc3dpdGNoIChzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgfCBJbkhvbGUoXykgPT4gVW5rbm93bihJbnRlcm5hbClcbiAgfCBOb3RJbkhvbGUob2spID0+IGZpeGVkX3R5cF9vayhvaylcbiAgfTtcblxubGV0IGZpeGVkX3R5cF9leHAgPSAoY3R4LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYuZXhwKTogVHlwLnQgPT5cbiAgc3dpdGNoIChzdGF0dXNfZXhwKGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgfCBJbkhvbGUoXykgPT4gVW5rbm93bihJbnRlcm5hbClcbiAgfCBOb3RJbkhvbGUob2spID0+IGZpeGVkX3R5cF9vayhvaylcbiAgfTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBleHByZXNzaW9uIHRlcm1zICovXG5sZXQgZGVyaXZlZF9leHAgPVxuICAgICh+dWV4cDogVUV4cC50LCB+Y3R4LCB+bW9kZSwgfmFuY2VzdG9ycywgfnNlbGYsIH5jb19jdHgpOiBleHAgPT4ge1xuICBsZXQgY2xzID0gQ2xzLkV4cChVRXhwLmNsc19vZl90ZXJtKHVleHAudGVybSkpO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpO1xuICBsZXQgdHkgPSBmaXhlZF90eXBfZXhwKGN0eCwgbW9kZSwgc2VsZik7XG4gIHtjbHMsIHNlbGYsIHR5LCBtb2RlLCBzdGF0dXMsIGN0eCwgY29fY3R4LCBhbmNlc3RvcnMsIHRlcm06IHVleHB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBwYXR0ZXJuIHRlcm1zICovXG5sZXQgZGVyaXZlZF9wYXQgPVxuICAgICh+dXBhdDogVVBhdC50LCB+Y3R4LCB+Y29fY3R4LCB+bW9kZSwgfmFuY2VzdG9ycywgfnNlbGYpOiBwYXQgPT4ge1xuICBsZXQgY2xzID0gQ2xzLlBhdChVUGF0LmNsc19vZl90ZXJtKHVwYXQudGVybSkpO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX3BhdChjdHgsIG1vZGUsIHNlbGYpO1xuICBsZXQgdHkgPSBmaXhlZF90eXBfcGF0KGN0eCwgbW9kZSwgc2VsZik7XG4gIHtjbHMsIHNlbGYsIG1vZGUsIHR5LCBzdGF0dXMsIGN0eCwgY29fY3R4LCBhbmNlc3RvcnMsIHRlcm06IHVwYXR9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciB0eXBlcyAqL1xubGV0IGRlcml2ZWRfdHlwID0gKH51dHlwOiBVVHlwLnQsIH5jdHgsIH5hbmNlc3RvcnMsIH5leHBlY3RzKTogdHlwID0+IHtcbiAgbGV0IGNsczogQ2xzLnQgPVxuICAgIC8qIEhhY2sgdG8gaW1wcm92ZSBDSSBkaXNwbGF5ICovXG4gICAgc3dpdGNoIChleHBlY3RzLCBVVHlwLmNsc19vZl90ZXJtKHV0eXAudGVybSkpIHtcbiAgICB8IChWYXJpYW50RXhwZWN0ZWQoXyksIFZhcikgPT4gQ2xzLlR5cChDb25zdHJ1Y3RvcilcbiAgICB8IChfLCBjbHMpID0+IENscy5UeXAoY2xzKVxuICAgIH07XG4gIGxldCB0eSA9IFVUeXAudG9fdHlwKGN0eCwgdXR5cCk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfdHlwKGN0eCwgZXhwZWN0cywgdXR5cCwgdHkpO1xuICB7Y2xzLCBjdHgsIGFuY2VzdG9ycywgc3RhdHVzLCBleHBlY3RzLCB0eSwgdGVybTogdXR5cH07XG59O1xuXG4vKiBBZGQgZGVyaXZhYmxlIGF0dHJpYnV0ZXMgZm9yIHR5cGUgcGF0dGVybnMgKi9cbmxldCBkZXJpdmVkX3RwYXQgPSAofnV0cGF0OiBVVFBhdC50LCB+Y3R4LCB+YW5jZXN0b3JzKTogdHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuVFBhdChVVFBhdC5jbHNfb2ZfdGVybSh1dHBhdC50ZXJtKSk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfdHBhdChjdHgsIHV0cGF0KTtcbiAge2NscywgYW5jZXN0b3JzLCBzdGF0dXMsIGN0eCwgdGVybTogdXRwYXR9O1xufTtcblxuLyogSWYgdGhlIGluZm8gcmVwcmVzZW50cyBzb21lIGtpbmQgb2YgbmFtZSBiaW5kaW5nIHdoaWNoXG4gICBleGlzdHMgaW4gdGhlIGNvbnRleHQsIHJldHVybiB0aGUgaWQgd2hlcmUgdGhlIGJpbmRpbmcgb2NjdXJzICovXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZSA9IChpbmZvOiB0KTogb3B0aW9uKElkLnQpID0+IHtcbiAgc3dpdGNoIChpbmZvKSB7XG4gIHwgSW5mb0V4cCh7dGVybToge3Rlcm06IFZhcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSk7XG4gICAgZW50cnkuaWQ7XG4gIHwgSW5mb0V4cCh7dGVybToge3Rlcm06IENvbnN0cnVjdG9yKG5hbWUpLCBffSwgY3R4LCBffSlcbiAgfCBJbmZvUGF0KHt0ZXJtOiB7dGVybTogQ29uc3RydWN0b3IobmFtZSksIF99LCBjdHgsIF99KSA9PlxuICAgIGxldCsgZW50cnkgPSBDdHgubG9va3VwX2N0cihjdHgsIG5hbWUpO1xuICAgIGVudHJ5LmlkO1xuICB8IEluZm9UeXAoe3Rlcm06IHt0ZXJtOiBWYXIobmFtZSksIF99LCBjdHgsIF99KSA9PlxuICAgIGxldCsgZW50cnkgPSBDdHgubG9va3VwX3R2YXIoY3R4LCBuYW1lKTtcbiAgICBlbnRyeS5pZDtcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBUeURpOiBUeXBlLURpcmVjdGVkIE5leHQtVG9rZW4gU3VnZ2VzdGlvbnNcblxuICAgIElERUE6IEV4cGFuZGVkIGNyaXRlcmlhIGZvciB3aGVuIHRvIGF1dG9zaG93OiBDdXJyZW50bHksIHdlIHNob3cgb25seVxuICAgIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHN1Z2dlc3Rpb24gd2hpY2ggcHJlZml4LW1hdGNoZXMgYnV0IGlzIG5vdFxuICAgIGlkZW50aWNhbCB0byB0aGUgY3VycmVudCBub256ZXJvIHByZWZpeC4gV2UgbWlnaHQgY29uc2lkZXIgcmVsYXhpbmdcbiAgICB0aGUgbm9uemVybyBwcmVmaXggcGFydC4gV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBhdXRvc2hvdyBvbiBjb3JyZWN0XG4gICAgdG9rZW5zLCBidXQgd2UgY291bGQgYXV0b3Nob3cgb24gZXJyb3JzIGlmIHRoZXJlIGFyZSBmaXhlcywgb3Igb25cbiAgICBlbXB0aWVzIGlmIHRoZXJlJ3Mgb25seSBvbmUgb3B0aW9uLlxuXG4gICAgIElERUE6IEFkZCBhIGtleWJpbmRpbmcgdG8gZm9yY2UgcmV2ZWFsIHN1Z2dlc3Rpb24gaWYgbm90IGN1cnJlbnQgc2hvd24uXG4gICAgIEkndmUgc3R1YmJlZCB0aGlzIG91dCAoQ21kKz8pIGJ1dCBuZWVkcyBhbiBvcHRpb24gdG8gc2hvdyBzdWdnZXN0aW9uc1xuICAgICBldmVuIGlmIG9uIGhvbGUgKGllIHByZWZpeCBmb3IgY29tcGxldGlvbiBpcyBcIlwiKVxuXG4gICAgIElERUE6IElmIHRoZXJlIGFyZSB+IG5vIGN1cnJlbnQgc3VnZ2VzdGlvbnMsIGFuZCB0aGUgaW5kaWNhdGVkIHRlcm1cbiAgICAgaGFzIGEgdHlwZSBlcnJvciBzdWdnZXN0IGZvbGxvd2luZyBpbmZpeGVzIHdoaWNoIGZpeCB0aGF0IHR5cGUgZXJyb3IsXG4gICAgIGUuZy4gZ2l2ZW4gXCJsZXQgYTpGbG9hdCA9IGZzdCgxLjB8XCIgc3VnZ2VzdCBjb21tYVxuICAgICBlLmcuIGdpdmVuIFwibGV0IGI6Qm9vbCA9IDF8XCIgc3VnZ2VzdCA8LCA+LCA8PSwgPj0sID09LCAhPSwgZXRjLlxuXG4gICAgIElERUE6IFVOQklESVJFQ1RJT05BTCBQT1NJVElPTlM6XG4gICAgMS4gSW4gYXAgZnVucG9zOiBmYXZvciBpbnB1dCB0eSBjb25zaXN0ZW50IHdpdGggYXJnXG4gICAgMi4gSW4gY2FzZSBzY3J1dCwgZmF2b3IgdGhlIHR5cyBvZiBleHRhbnQgcGF0dGVybnNcbiAgICAzLiBJbiBsaXN0IGVsZW1lbnQsIGZhdm9yIHRoZSB0eXMgb2YgZXh0YW50IGVsZW1lbnRzXG4gICAgMy4gSW4gcGF0dGVybiBhbm5vdGF0aW9uIHR5cGU6IGZhdm9yIHBhdGFubiBleHBlY3RlZCB0eXBlXG5cbiAgICBJREVBOiBJZiBvbiBpbmZpeCBvcCwgc3VnZ2VzdCBiYXNlZCBvbiBlaXRoZXIgb3BlcmFuZCB0eXBlLFxuICAgIGVzcGVjaWFsbHkgdGhlIGNhc2Ugd2hlcmUgaXQgd291bGQgZml4IGFuIG9wZXJhbmQgdHlwZSBlcnJvclxuXG4gICAgSURFQTogSWYgb24gMi1tdWx0aWhvbGUsIHN1Z2dlc3QgaW5maXggb3BzIGFzIGFib3ZlIG9yIEFwIGlmIGFwcGxpY2FibGVcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9hbGwgPVxuICB8IEZyb21CYWNrcGFjaztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9jb21tb24gPVxuICB8IE5ld0Zvcm0oVHlwLnQpXG4gIHwgRnJvbUN0eChUeXAudClcbiAgfCBGcm9tQ3R4QXAoVHlwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X2V4cCA9XG4gIHwgQ29tbW9uKHN0cmF0ZWd5X2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfcGF0ID1cbiAgfCBDb21tb24oc3RyYXRlZ3lfY29tbW9uKVxuICB8IEZyb21Db0N0eChUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfdHlwID1cbiAgfCBOZXdGb3JtXG4gIHwgRnJvbUN0eDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneSA9XG4gIHwgQW55KHN0cmF0ZWd5X2FsbClcbiAgfCBFeHAoc3RyYXRlZ3lfZXhwKVxuICB8IFBhdChzdHJhdGVneV9wYXQpXG4gIHwgVHlwKHN0cmF0ZWd5X3R5cCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgY29udGVudDogc3RyaW5nLFxuICBzdHJhdGVneSxcbn07XG5cbmxldCBjb21wYXJlID0gKHMxOiB0LCBzMjogdCk6IGludCA9PiB7XG4gIFN0cmluZy5jb21wYXJlKHMxLmNvbnRlbnQsIHMyLmNvbnRlbnQpO1xufTtcbiIsIm9wZW4gU3VnZ2VzdGlvbjtcblxubGV0IGV4cGFuZGVyID0gQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogRm9yIHN1Z2dlc3Rpb25zIGluIHBhdHRlcm5zLCBzdWdnZXN0IHZhcmlhYmxlcyB3aGljaFxuICogb2NjdXIgZnJlZSBpbiB0aGF0IHBhdHRlcm4ncyBzY29wZS4gKi9cbmxldCBmcmVlX3ZhcmlhYmxlcyA9XG4gICAgKGV4cGVjdGVkX3R5OiBUeXAudCwgY3R4OiBDdHgudCwgY29fY3R4OiBDb0N0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgobmFtZSwgZW50cmllcykpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgam9pbnRfdXNlX3R5cCA9IENvQ3R4LmpvaW4oY3R4LCBlbnRyaWVzKTtcbiAgICAgICAgaWYgKFR5cC5pc19jb25zaXN0ZW50KGN0eCwgZXhwZWN0ZWRfdHksIGpvaW50X3VzZV90eXApKSB7XG4gICAgICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IFBhdChGcm9tQ29DdHgoam9pbnRfdXNlX3R5cCkpfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfTtcbiAgICAgIHwgU29tZShfKSA9PiBOb25lXG4gICAgICB9LFxuICAgIGNvX2N0eCxcbiAgKTtcbn07XG5cbi8qIEZvciBzdWdnZXN0c2lvbnMgaW4gZXhwcmVzc2lvbnMsIHN1Z2dlc3QgdmFyaWFibGVzIGZyb20gdGhlIGN0eCAqL1xubGV0IGJvdW5kX3ZhcmlhYmxlcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwLCBuYW1lLCBffSlcbiAgICAgICAgd2hlbiBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IEV4cChDb21tb24oRnJvbUN0eCh0eXApKSl9KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGJvdW5kX2NvbnN0cnVjdG9ycyA9XG4gICAgKHdyYXA6IHN0cmF0ZWd5X2NvbW1vbiA9PiBzdHJhdGVneSwgdHk6IFR5cC50LCBjdHg6IEN0eC50KVxuICAgIDogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIC8qIGdldCBuYW1lcyBvZiBhbGwgY29uc3RydWN0b3IgZW50cmllcyBjb25zaXN0ZW50IHdpdGggdHkgKi9cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgQ3R4LkNvbnN0cnVjdG9yRW50cnkoe3R5cCwgbmFtZSwgX30pXG4gICAgICAgIHdoZW4gVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IHdyYXAoRnJvbUN0eCh0eXApKX0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGFwcGx5aW5nIGEgZnVuY3Rpb24gZnJvbSB0aGUgY3R4IHdoaWNoIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdHlwZSAqL1xubGV0IGJvdW5kX2FwcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwOiBBcnJvdyhfLCB0eV9vdXQpIGFzIHR5X2FyciwgbmFtZSwgX30pXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlfb3V0KVxuICAgICAgICAgICYmICFUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlfYXJyKSA9PiB7XG4gICAgICAgIFNvbWUoe1xuICAgICAgICAgIGNvbnRlbnQ6IG5hbWUgKysgXCIoXCIgKysgZXhwYW5kZXIsXG4gICAgICAgICAgc3RyYXRlZ3k6IEV4cChDb21tb24oRnJvbUN0eEFwKHR5X291dCkpKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgYm91bmRfY29uc3RydWN0b3JfYXBzID0gKHdyYXAsIHR5OiBUeXAudCwgY3R4OiBDdHgudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDdHguQ29uc3RydWN0b3JFbnRyeSh7dHlwOiBBcnJvdyhfLCB0eV9vdXQpIGFzIHR5X2FyciwgbmFtZSwgX30pXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5LCB0eV9vdXQpXG4gICAgICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHksIHR5X2FycikgPT5cbiAgICAgIFNvbWUoe1xuICAgICAgICBjb250ZW50OiBuYW1lICsrIFwiKFwiICsrIGV4cGFuZGVyLFxuICAgICAgICBzdHJhdGVneTogd3JhcChGcm9tQ3R4QXAodHlfb3V0KSksXG4gICAgICB9KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxuLyogU3VnZ2VzdCBib3VuZCB0eXBlIGFsaWFzZXMgaW4gdHlwZSBhbm5vdGF0aW9ucyBvciBkZWZpbml0aW9ucyAqL1xubGV0IHR5cF9jb250ZXh0X2VudHJpZXMgPSAoY3R4OiBDdHgudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDdHguVFZhckVudHJ5KHtraW5kOiBTaW5nbGV0b24oXyksIG5hbWUsIF99KSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IFR5cChGcm9tQ3R4KX0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgc3VnZ2VzdF92YXJpYWJsZSA9IChjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IGN0eCA9IEluZm8uY3R4X29mKGNpKTtcbiAgc3dpdGNoIChjaSkge1xuICB8IEluZm9FeHAoe21vZGUsIF99KSA9PlxuICAgIGJvdW5kX3ZhcmlhYmxlcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9hcHMoTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gRXhwKENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IEV4cChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gIHwgSW5mb1BhdCh7bW9kZSwgY29fY3R4LCBffSkgPT5cbiAgICBmcmVlX3ZhcmlhYmxlcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgsIGNvX2N0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9ycyh4ID0+IFBhdChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMoeCA9PiBQYXQoQ29tbW9uKHgpKSwgTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICB8IEluZm9UeXAoXykgPT4gdHlwX2NvbnRleHRfZW50cmllcyhjdHgpXG4gIHwgXyA9PiBbXVxuICB9O1xufTtcblxuLyogU3VnZ2VzdCBsb29rYWhlYWQgdG9rZW5zOlxuICpcbiAqIFNvbWV0aW1lcyB0aGUgZXhwZWN0ZWQgdHlwZSBpcyBUeSwgYnV0IHdlIHdhbnQgdG8gZW50ZXIgc29tZXRoaW5nIG9mIFR5J1xuICogYmVjYXVzZSB3ZSdyZSBnb2luZyB0byBmb2xsb3cgaXQgdXAgd2l0aCBhbiBpbmZpeCBvcCBvZiB0eXBlIChUeScsIF8pIC0+IFR5LlxuICpcbiAqIEZvciBub3cgd2Ugc3BlY2lhbC1jYXNlIHN1Y2ggc2l0dWF0aW9ucyBpbnN0ZWFkIG9mIGRlcml2aW5nIHRoZW0gZnJvbSB0aGVcbiAqIGdyYW1tYXIuIEluIHRoZSBjdXJyZW50IGdyYW1tYXIgdGhlcmUgYXJlIGJhc2ljYWxseSAzIGNsYXNzZXM6XG4gKlxuICogMS4gSWYgYm9vbCBpcyBleHBlY3RlZCwgY291bGQgYmUgaW50LCBmbG9hdCBvciBzdHJpbmcgKGNvbXBhcmlzb25zKVxuICogMi4gSWYgbGlzdCh0eSkgaXMgZXhwZWN0ZWQsIGNvdWxkIGJlIHR5IChjb25zKVxuICogMy4gSWYgdHVwbGUoW3R5LCAuLi5dKSBpcyBleHBlY3RlZCwgY291bGQgYmUgdHkgKGNvbW1hKVxuXG4gKiAyIGFuZCAzIGFyZSB0aGUgZWFzaWVzdCB0byBtYWtlIGVyZ29ub21pYyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBzdWNoXG4gKiBpbmZpeCBvcCwgc28gd2UgY2FuIGp1c3QgY29tYmluZSB0aGUgdHdvIHRva2VucyBpbnRvIGEgc2luZ2xlIGNvbXBsZXRpb24uXG4gKiAxIGlzIHNsaWdodGx5IG1vcmUgZnJhdWdodCBiZWNhdXNlIGFzIHdlIGVpdGhlciBuZWVkIHRvIG5vdCBzaG93IHRoZVxuICogc2Vjb25kIHRva2VuLCBvciBwaWNrIGFuIGFyYml0cmFyeSByZXByZXNlbnRhdGl2ZSBvcCB0byBzaG93LCBhbmQgd2VcbiAqIHByb2JhYmx5IHdvdWxkbid0IHdhbnQgdG8gY29tcGxldGUgdGhhdCBvcCwgZm9yY2luZyB0aGUgdXNlciB0byBiYWNrc3BhY2VcbiAqIGlmIHRoZXkgbWVhbnQgYW5vdGhlciwgc28gd2UnZCBuZWVkIHRvIGltcGxlbWVudCBzdGFnZWQgY29tcGxldGlvbi5cbiAqIEZvciBub3cgd2UganVzdCBkb24ndCBzaG93IGEgc2Vjb25kIHRva2VuLCB3aGljaCBjYW4gYmUgc2xpZ2h0bHkgY29uZnVzaW5nLlxuICpcbiAqL1xuXG5sZXQgc3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUgPSAoY2k6IEluZm8udCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIGxldCByZXN0cmF0ZWdpemUgPSAoc3VmZml4LCB7Y29udGVudCwgc3RyYXRlZ3l9KSA9PiB7XG4gICAgY29udGVudDogY29udGVudCArKyBzdWZmaXgsXG4gICAgc3RyYXRlZ3ksXG4gIH07XG4gIGxldCBjdHggPSBJbmZvLmN0eF9vZihjaSk7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBJbmZvRXhwKHttb2RlLCBffSkgPT5cbiAgICBsZXQgZXhwX3JlZnMgPSB0eSA9PlxuICAgICAgYm91bmRfdmFyaWFibGVzKHR5LCBjdHgpXG4gICAgICBAIGJvdW5kX2NvbnN0cnVjdG9ycyh4ID0+IEV4cChDb21tb24oeCkpLCB0eSwgY3R4KTtcbiAgICBsZXQgZXhwX2FwcyA9IHR5ID0+XG4gICAgICBib3VuZF9hcHModHksIGN0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gRXhwKENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIHN3aXRjaCAoTW9kZS50eV9vZihtb2RlKSkge1xuICAgIHwgTGlzdCh0eSkgPT5cbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApOjpcIiksIGV4cF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCI6OlwiKSwgZXhwX3JlZnModHkpKVxuICAgIHwgUHJvZChbdHksIC4uLnR5c10pID0+XG4gICAgICBsZXQgY29tbWFzID1cbiAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIF8gPT4gXCIsXCIpIHw+IFN0cmluZy5jb25jYXQoXCIgXCIpO1xuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiIClcIiArKyBjb21tYXMpLCBleHBfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKGNvbW1hcyksIGV4cF9yZWZzKHR5KSk7XG4gICAgfCBCb29sID0+XG4gICAgICAvKiBUT0RPOiBGaW5kIGEgVUkgdG8gbWFrZSB0aGVzZSBsZXNzIGNvbmZ1c2luZyAqL1xuICAgICAgZXhwX3JlZnMoSW50KVxuICAgICAgQCBleHBfcmVmcyhGbG9hdClcbiAgICAgIEAgZXhwX3JlZnMoU3RyaW5nKVxuICAgICAgQCBleHBfYXBzKEludClcbiAgICAgIEAgZXhwX2FwcyhGbG9hdClcbiAgICAgIEAgZXhwX2FwcyhTdHJpbmcpXG4gICAgfCBfID0+IFtdXG4gICAgfTtcbiAgfCBJbmZvUGF0KHttb2RlLCBjb19jdHgsIF99KSA9PlxuICAgIGxldCBwYXRfcmVmcyA9IHR5ID0+XG4gICAgICBmcmVlX3ZhcmlhYmxlcyh0eSwgY3R4LCBjb19jdHgpXG4gICAgICBAIGJvdW5kX2NvbnN0cnVjdG9ycyh4ID0+IFBhdChDb21tb24oeCkpLCB0eSwgY3R4KTtcbiAgICBsZXQgcGF0X2FwcyA9IHR5ID0+IGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IFBhdChDb21tb24oeCkpLCB0eSwgY3R4KTtcbiAgICBzd2l0Y2ggKE1vZGUudHlfb2YobW9kZSkpIHtcbiAgICB8IExpc3QodHkpID0+XG4gICAgICBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCIgKTo6XCIpLCBwYXRfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiOjpcIiksIHBhdF9yZWZzKHR5KSlcbiAgICB8IFByb2QoW3R5LCAuLi50eXNdKSA9PlxuICAgICAgbGV0IGNvbW1hcyA9XG4gICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aCh0eXMpLCBfID0+IFwiLFwiKSB8PiBTdHJpbmcuY29uY2F0KFwiIFwiKTtcbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApXCIgKysgY29tbWFzKSwgcGF0X2Fwcyh0eSkpXG4gICAgICBAIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShjb21tYXMpLCBwYXRfcmVmcyh0eSkpO1xuICAgIHwgXyA9PiBbXVxuICAgIH07XG4gIHwgSW5mb1R5cChfKSA9PiBbXVxuICB8IF8gPT4gW11cbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG4vKiBUaGlzIG1vZHVsZSBnZW5lcmF0ZXMgVHlEaSBzdWdnZXN0aW9ucyB3aGljaCBkZXBlbmRcbiAqIG5laXRoZXIgb24gdGhlIHR5cGluZyBjb250ZXh0IG9yIHRoZSBiYWNrcGFjayAqL1xuXG5sZXQgbGVhZGluZ19leHBhbmRlciA9IFwiIFwiICsrIEFzc2lzdGFudEV4cGFuZGVyLmM7XG5cbi8qIFNwZWNpZmllcyB0eXBlIGluZm9ybWF0aW9uIGZvciBzeW50YWN0aWMgZm9ybXMuIENvdWxkIGluIHByaW5jaXBsZSBiZVxuICogZGVyaXZlZCBieSBnZW5lcmF0aW5nIHNlZ21lbnRzIGZyb20gRm9ybXMsIHBhcnNpbmcgdGhlbSB0byB0ZXJtcywgYW5kXG4gKiBydW5uaW5nIFN0YXRpY3MsIGJ1dCBmb3Igbm93LCBuZXcgZm9ybXMgZS5nLiBvcGVyYXRvcnMgbXVzdCBiZSBhZGRlZFxuICogYmVsb3cgbWFudWFsbHkuICAqL1xubW9kdWxlIFR5cCA9IHtcbiAgbGV0IHVuazogVHlwLnQgPSBVbmtub3duKEludGVybmFsKTtcblxuICBsZXQgb2ZfY29uc3RfbW9ub19kZWxpbTogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9IFtcbiAgICAoXCJ0cnVlXCIsIEJvb2wpLFxuICAgIChcImZhbHNlXCIsIEJvb2wpLFxuICAgIC8vKFwiW11cIiwgTGlzdCh1bmspKSwgLyAqTk9URTogd291bGQgbmVlZCB0byByZWZhY3RvciBidWZmZXIgZm9yIHRoaXMgdG8gc2hvdyB1cCAqL1xuICAgIC8vKFwiKClcIiwgUHJvZChbXSkpLCAvKiBOT1RFOiB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yIGJ1ZmZlciBmb3IgdGhpcyB0byBzaG93IHVwICovXG4gICAgKFwiXFxcIlxcXCJcIiwgU3RyaW5nKSwgLyogTk9URTogSXJyZWxldmVudCBhcyBzZWNvbmQgcXVvdGUgYXBwZWFycyBhdXRvbWF0aWNhbGx5ICovXG4gICAgKFwiX1wiLCB1bmspLFxuICBdO1xuXG4gIGxldCBvZl9sZWFkaW5nX2RlbGltOiBsaXN0KChUb2tlbi50LCBUeXAudCkpID0gW1xuICAgIChcImNhc2VcIiArKyBsZWFkaW5nX2V4cGFuZGVyLCB1bmspLFxuICAgIChcImZ1blwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIEFycm93KHVuaywgdW5rKSksXG4gICAgKFwiaWZcIiArKyBsZWFkaW5nX2V4cGFuZGVyLCB1bmspLFxuICAgIChcImxldFwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gICAgKFwidGVzdFwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIFByb2QoW10pKSxcbiAgICAoXCJ0eXBlXCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgXTtcblxuICBsZXQgb2ZfaW5maXhfZGVsaW06IGxpc3QoKFRva2VuLnQsIFR5cC50KSkgPSBbXG4gICAgKFwifD5cIiwgdW5rKSwgLyogKi9cbiAgICAoXCIsXCIsIFByb2QoW3VuaywgdW5rXSkpLCAvKiBOT1RFOiBDdXJyZW50IGFwcHJvYWNoIGRvZXNuJ3Qgd29yayBmb3IgdGhpcywgYnV0IGlycmVsZXZhbnQgYXMgMS1jaGFyICovXG4gICAgKFwiOjpcIiwgTGlzdCh1bmspKSxcbiAgICAoXCJAXCIsIExpc3QodW5rKSksXG4gICAgKFwiO1wiLCB1bmspLFxuICAgIChcIiYmXCIsIEJvb2wpLFxuICAgIChcIlxcXFwvXCIsIEJvb2wpLFxuICAgIChcInx8XCIsIEJvb2wpLFxuICAgIChcIiQ9PVwiLCBCb29sKSxcbiAgICAoXCI9PS5cIiwgQm9vbCksXG4gICAgKFwiPT1cIiwgQm9vbCksXG4gICAgKFwiIVwiLCBCb29sKSwgLy8gbWF5YmUgZG9lc250IGJlbG9uZyBoZXJlPyBidXQgYmxvY2tzIGF1dG9jb21wbGV0ZSBvZiAhIHRvICE9XG4gICAgKFwiIT1cIiwgQm9vbCksXG4gICAgKFwiIT0uXCIsIEJvb2wpLFxuICAgIChcIjxcIiwgQm9vbCksXG4gICAgKFwiPlwiLCBCb29sKSxcbiAgICAoXCI8PVwiLCBCb29sKSxcbiAgICAoXCI+PVwiLCBCb29sKSxcbiAgICAoXCI8LlwiLCBCb29sKSxcbiAgICAoXCI+LlwiLCBCb29sKSxcbiAgICAoXCI8PS5cIiwgQm9vbCksXG4gICAgKFwiPj0uXCIsIEJvb2wpLFxuICAgIChcIitcIiwgSW50KSxcbiAgICAoXCItXCIsIEludCksXG4gICAgKFwiKlwiLCBJbnQpLFxuICAgIChcIi9cIiwgSW50KSxcbiAgICAoXCIqKlwiLCBJbnQpLFxuICAgIChcIisuXCIsIEZsb2F0KSxcbiAgICAoXCItLlwiLCBGbG9hdCksXG4gICAgKFwiKi5cIiwgRmxvYXQpLFxuICAgIChcIi8uXCIsIEZsb2F0KSxcbiAgICAoXCIqKi5cIiwgRmxvYXQpLFxuICAgIChcIisrXCIsIFN0cmluZyksXG4gIF07XG5cbiAgbGV0IGV4cGVjdGVkOiBJbmZvLnQgPT4gVHlwLnQgPVxuICAgIGZ1blxuICAgIHwgSW5mb0V4cCh7bW9kZSwgX30pXG4gICAgfCBJbmZvUGF0KHttb2RlLCBffSkgPT4gTW9kZS50eV9vZihtb2RlKVxuICAgIHwgXyA9PiBVbmtub3duKEludGVybmFsKTtcblxuICBsZXQgZmlsdGVyX2J5ID1cbiAgICAgIChcbiAgICAgICAgY3R4OiBDdHgudCxcbiAgICAgICAgZXhwZWN0ZWRfdHk6IFR5cC50LFxuICAgICAgICBzZWxmX3R5czogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSxcbiAgICAgICAgZGVsaW1zOiBsaXN0KHN0cmluZyksXG4gICAgICApXG4gICAgICA6IGxpc3QoKFRva2VuLnQsIFR5cC50KSkgPT5cbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICBkZWxpbSA9PiB7XG4gICAgICAgIGxldCogc2VsZl90eSA9IExpc3QuYXNzb2Nfb3B0KGRlbGltLCBzZWxmX3R5cyk7XG4gICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgZXhwZWN0ZWRfdHksIHNlbGZfdHkpXG4gICAgICAgICAgPyBTb21lKChkZWxpbSwgc2VsZl90eSkpIDogTm9uZTtcbiAgICAgIH0sXG4gICAgICBkZWxpbXMsXG4gICAgKTtcbn07XG5cbi8qIEF1dG9tYXRpY2FsbHkgY29sbGF0ZXMgbW9zdCBkZWxpbWl0ZXJzIGZyb20gRm9ybXMsIG5vdGFibHkgYWxsXG4gKiBtb25vIGRlbGltaXRlcnMsIGFsbCBpbmZpeCBvcGVyYXRvcnMsIGFuZCBhbGwgbGVhZGluZyBkZWxpbWl0ZXJzICovXG5tb2R1bGUgRGVsaW1zID0ge1xuICBsZXQgZGVsYXllZF9sZWFkaW5nID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmRlbGltc1xuICAgIHw+IExpc3QubWFwKHRva2VuID0+IHtcbiAgICAgICAgIGxldCAobGJsLCBfKSA9IE1vbGRzLmRlbGF5ZWRfZXhwYW5zaW9uKHRva2VuKTtcbiAgICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgKG06IE1vbGQudCkgPT5cbiAgICAgICAgICAgICBMaXN0Lmxlbmd0aChsYmwpID4gMSAmJiB0b2tlbiA9PSBMaXN0LmhkKGxibCkgJiYgbS5vdXQgPT0gc29ydFxuICAgICAgICAgICAgICAgPyBTb21lKHRva2VuICsrIGxlYWRpbmdfZXhwYW5kZXIpIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KGxibCksXG4gICAgICAgICApO1xuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbiAgbGV0IGRlbGF0ZWRfbGVhZGluZ19leHAgPSBkZWxheWVkX2xlYWRpbmcoRXhwKTtcbiAgbGV0IGRlbGF0ZWRfbGVhZGluZ19wYXQgPSBkZWxheWVkX2xlYWRpbmcoUGF0KTtcbiAgbGV0IGRlbGF0ZWRfbGVhZGluZ190eXAgPSBkZWxheWVkX2xlYWRpbmcoVHlwKTtcblxuICBsZXQgZGVsYXllZF9sZWFkaW5nID0gKHNvcnQ6IFNvcnQudCk6IGxpc3Qoc3RyaW5nKSA9PlxuICAgIHN3aXRjaCAoc29ydCkge1xuICAgIHwgRXhwID0+IGRlbGF0ZWRfbGVhZGluZ19leHBcbiAgICB8IFBhdCA9PiBkZWxhdGVkX2xlYWRpbmdfcGF0XG4gICAgfCBUeXAgPT4gZGVsYXRlZF9sZWFkaW5nX3R5cFxuICAgIHwgXyA9PiBbXVxuICAgIH07XG5cbiAgbGV0IGluZml4ID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmRlbGltc1xuICAgIHw+IExpc3QubWFwKHRva2VuID0+IHtcbiAgICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgKG06IE1vbGQudCkgPT5cbiAgICAgICAgICAgICBtLm91dCA9PSBzb3J0ICYmIE1vbGQuaXNfaW5maXhfb3AobSkgPyBTb21lKHRva2VuKSA6IE5vbmUsXG4gICAgICAgICAgIE1vbGRzLmdldChbdG9rZW5dKSxcbiAgICAgICAgIClcbiAgICAgICB9KVxuICAgIHw+IExpc3QuZmxhdHRlblxuICAgIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuICBsZXQgaW5maXhfZXhwID0gaW5maXgoRXhwKTtcbiAgbGV0IGluZml4X3BhdCA9IGluZml4KFBhdCk7XG4gIGxldCBpbmZpeF90eXAgPSBpbmZpeChUeXApO1xuICBsZXQgaW5maXggPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gaW5maXhfZXhwXG4gICAgfCBQYXQgPT4gaW5maXhfcGF0XG4gICAgfCBUeXAgPT4gaW5maXhfdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcblxuICBsZXQgY29uc3RfbW9ubyA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KFRva2VuLnQpID0+XG4gICAgRm9ybS5jb25zdF9tb25vX2RlbGltc1xuICAgIHw+IExpc3QubWFwKHRva2VuID0+IHtcbiAgICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgKG06IE1vbGQudCkgPT5cbiAgICAgICAgICAgICBtLm91dCA9PSBzb3J0ICYmIExpc3QubWVtKHRva2VuLCBGb3JtLmNvbnN0X21vbm9fZGVsaW1zKVxuICAgICAgICAgICAgICAgPyBTb21lKHRva2VuKSA6IE5vbmUsXG4gICAgICAgICAgIE1vbGRzLmdldChbdG9rZW5dKSxcbiAgICAgICAgIClcbiAgICAgICB9KVxuICAgIHw+IExpc3QuZmxhdHRlblxuICAgIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuXG4gIGxldCBjb25zdF9tb25vX2V4cCA9IGNvbnN0X21vbm8oRXhwKTtcbiAgbGV0IGNvbnN0X21vbm9fcGF0ID0gY29uc3RfbW9ubyhQYXQpO1xuICBsZXQgY29uc3RfbW9ub190eXAgPSBjb25zdF9tb25vKFR5cCk7XG5cbiAgbGV0IGNvbnN0X21vbm8gPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gY29uc3RfbW9ub19leHBcbiAgICB8IFBhdCA9PiBjb25zdF9tb25vX3BhdFxuICAgIHwgVHlwID0+IGNvbnN0X21vbm9fdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcbn07XG5cbmxldCBzdWdnZXN0X2Zvcm0gPSAodHlfbWFwLCBkZWxpbXNfb2Zfc29ydCwgY2k6IEluZm8udCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIGxldCBzb3J0ID0gSW5mby5zb3J0X29mKGNpKTtcbiAgbGV0IGRlbGltcyA9IGRlbGltc19vZl9zb3J0KHNvcnQpO1xuICBsZXQgZmlsdGVyZWQgPVxuICAgIFR5cC5maWx0ZXJfYnkoSW5mby5jdHhfb2YoY2kpLCBUeXAuZXhwZWN0ZWQoY2kpLCB0eV9tYXAsIGRlbGltcyk7XG4gIHN3aXRjaCAoc29ydCkge1xuICB8IEV4cCA9PlxuICAgIExpc3QubWFwKFxuICAgICAgKChjb250ZW50LCB0eSkpID0+XG4gICAgICAgIFN1Z2dlc3Rpb24ue2NvbnRlbnQsIHN0cmF0ZWd5OiBFeHAoQ29tbW9uKE5ld0Zvcm0odHkpKSl9LFxuICAgICAgZmlsdGVyZWQsXG4gICAgKVxuICB8IFBhdCA9PlxuICAgIExpc3QubWFwKFxuICAgICAgKChjb250ZW50LCB0eSkpID0+XG4gICAgICAgIFN1Z2dlc3Rpb24ue2NvbnRlbnQsIHN0cmF0ZWd5OiBQYXQoQ29tbW9uKE5ld0Zvcm0odHkpKSl9LFxuICAgICAgZmlsdGVyZWQsXG4gICAgKVxuICB8IF8gPT5cbiAgICBkZWxpbXNcbiAgICB8PiBMaXN0Lm1hcChjb250ZW50ID0+IFN1Z2dlc3Rpb24ue2NvbnRlbnQsIHN0cmF0ZWd5OiBUeXAoTmV3Rm9ybSl9KVxuICB9O1xufTtcblxubGV0IHN1Z2dlc3Rfb3BlcmF0b3I6IEluZm8udCA9PiBsaXN0KFN1Z2dlc3Rpb24udCkgPVxuICBzdWdnZXN0X2Zvcm0oVHlwLm9mX2luZml4X2RlbGltLCBEZWxpbXMuaW5maXgpO1xuXG5sZXQgc3VnZ2VzdF9vcGVyYW5kOiBJbmZvLnQgPT4gbGlzdChTdWdnZXN0aW9uLnQpID1cbiAgc3VnZ2VzdF9mb3JtKFR5cC5vZl9jb25zdF9tb25vX2RlbGltLCBEZWxpbXMuY29uc3RfbW9ubyk7XG5cbmxldCBzdWdnZXN0X2xlYWRpbmc6IEluZm8udCA9PiBsaXN0KFN1Z2dlc3Rpb24udCkgPVxuICBzdWdnZXN0X2Zvcm0oVHlwLm9mX2xlYWRpbmdfZGVsaW0sIERlbGltcy5kZWxheWVkX2xlYWRpbmcpO1xuIiwiW0BkZXJpdmluZyBzZXhwXVxudHlwZSBob2xlX3NvcnQgPVxuICB8IEV4cHJlc3Npb25Ib2xlXG4gIHwgUGF0dGVybkhvbGU7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IE1ldGFWYXJNYXAudCgoaG9sZV9zb3J0LCBUeXAudCwgVmFyQ3R4LnQpKTtcbmxldCBlbXB0eTogdCA9IChNZXRhVmFyTWFwLmVtcHR5OiB0KTtcbiIsIm9wZW4gVXRpbDtcblxuaW5jbHVkZSBJZC5NYXA7XG50eXBlIHJhbmdlID0gKFBpZWNlLnQsIFBpZWNlLnQpO1xudHlwZSBub25yZWMgdCA9IHQocmFuZ2UpO1xuXG5sZXQgdW5pb24gPSB1bmlvbigoXywgcmFuZ2UsIF8pID0+IFNvbWUocmFuZ2UpKTtcblxuLyogUEVSRjogVXAgdG8gNTAlIHJlZHVjdGlvbiBpbiBzb21lIGNhc2VzIGJ5IG1lbW9pemluZ1xuICogdGhpcyBmdW5jdGlvbi4gTWlnaHQgYmUgYmV0dGVyIHRob3VnaCB0byBqdXN0IGRvIGFuXG4gKiB1bm1lbW9pemVkIHRyYXZlcnNhbCBidWlsZGluZyBhIGhhc2h0YmwgYXZvaWRpbmcgdW5pb25pbmcuXG5cbiAgIFRPRE8oYW5kcmV3KTogQ29uc2lkZXIgc2V0dGluZyBhIGxpbWl0IGZvciB0aGUgaGFzaHRibCBzaXplICovXG5sZXQgcmFuZ2VfaGFzaDogSGFzaHRibC50KFRpbGUuc2VnbWVudCwgSWQuTWFwLnQocmFuZ2UpKSA9XG4gIEhhc2h0YmwuY3JlYXRlKDEwMDApO1xuXG4vLyBOT1RFOiB0aGlzIGNhbGN1bGF0aW9uIGlzIG91dCBvZiBzeW5jIHdpdGhcbi8vIE1ha2VUZXJtLCB3aGljaCBtYXRjaGVzIHRoaW5ncyBsaWtlIGxpc3QgYnJhY2tldHNcbi8vIGFuZCBjYXNlLi4uZW5kIHRvIHNlcGFyYXRvcnMgaW5zaWRlIGVnIGxpc3QgY29tbWFzXG4vLyBhbmQgcnVsZXMgYHwgcCA9PmAuIHRoaXMgY2FsY3VsYXRpb24gZG9lcyBub3Rcbi8vIGluY2x1ZGUgdGhlIGNvbnRhaW5lciBpbiB0aGUgcmFuZ2VzIGZvciB0aG9zZSBpbm5lclxuLy8gc2VwYXJhdG9ycy5cbi8vIFRPRE8oZCkgZml4IG9yIGRlcml2ZSBmcm9tIG90aGVyIGluZm9cbi8vXG4vLyB0YWlsLXJlY3Vyc2l2ZSBpbiBvdXRlciByZWN1cnNpb25cbmxldCByZWMgbWsnID0gKHNlZzogU2VnbWVudC50KSA9PiB7XG4gIGxldCByZWMgZ28gPSAoc2tlbDogU2tlbC50KTogKHJhbmdlLCB0KSA9PiB7XG4gICAgbGV0IHJvb3QgPSBTa2VsLnJvb3Qoc2tlbCkgfD4gQWJhLm1hcF9hKExpc3QubnRoKHNlZykpO1xuICAgIGxldCByb290X2wgPSBBYmEuZmlyc3RfYShyb290KTtcbiAgICBsZXQgcm9vdF9yID0gQWJhLmxhc3RfYShyb290KTtcbiAgICBsZXQgKHJhbmdlLCB1bmljaGlsZF9tYXApID1cbiAgICAgIHN3aXRjaCAoc2tlbCkge1xuICAgICAgfCBPcChfKSA9PiAoKHJvb3RfbCwgcm9vdF9yKSwgZW1wdHkpXG4gICAgICB8IFByZShfLCByKSA9PlxuICAgICAgICBsZXQgKChfLCByKSwgbWFwKSA9IGdvKHIpO1xuICAgICAgICAoKHJvb3RfbCwgciksIG1hcCk7XG4gICAgICB8IFBvc3QobCwgXykgPT5cbiAgICAgICAgbGV0ICgobCwgXyksIG1hcCkgPSBnbyhsKTtcbiAgICAgICAgKChsLCByb290X3IpLCBtYXApO1xuICAgICAgfCBCaW4obCwgXywgcikgPT5cbiAgICAgICAgbGV0ICgobCwgXyksIG1hcF9sKSA9IGdvKGwpO1xuICAgICAgICBsZXQgKChfLCByKSwgbWFwX3IpID0gZ28ocik7XG4gICAgICAgICgobCwgciksIHVuaW9uKG1hcF9sLCBtYXBfcikpO1xuICAgICAgfTtcbiAgICBsZXQgYmV0d2Vlbl9jaGlsZF9tYXAgPVxuICAgICAgQWJhLmdldF9icyhyb290KVxuICAgICAgfD4gTGlzdC5tYXAoZ28pXG4gICAgICB8PiBMaXN0Lm1hcChzbmQpXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdCh1bmlvbiwgZW1wdHkpO1xuICAgIGxldCBtYXAgPVxuICAgICAgQWJhLmdldF9hcyhyb290KVxuICAgICAgfD4gTGlzdC5tYXAoUGllY2UuaWQpXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKG1hcCwgaWQpID0+IElkLk1hcC5hZGQoaWQsIHJhbmdlLCBtYXApLFxuICAgICAgICAgICB1bmlvbihiZXR3ZWVuX2NoaWxkX21hcCwgdW5pY2hpbGRfbWFwKSxcbiAgICAgICAgICk7XG4gICAgKHJhbmdlLCBtYXApO1xuICB9O1xuICBTZWdtZW50LmNoaWxkcmVuKHNlZylcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKG1hcCwga2lkKSA9PiB1bmlvbihtYXAsIG1rKGtpZCkpLFxuICAgICAgIHVuaW9uKGVtcHR5LCBzbmQoZ28oU2VnbWVudC5za2VsKHNlZykpKSksXG4gICAgICk7XG59XG5hbmQgbWsgPSBzZWcgPT5cbiAgdHJ5KEhhc2h0YmwuZmluZChyYW5nZV9oYXNoLCBzZWcpKSB7XG4gIHwgXyA9PlxuICAgIGxldCByZXMgPSBtaycoc2VnKTtcbiAgICBIYXNodGJsLmFkZChyYW5nZV9oYXNoLCBzZWcsIHJlcyk7XG4gICAgcmVzO1xuICB9O1xuIiwib3BlbiBUZXJtO1xuXG4vKiBTVEFUSUNTLnJlXG5cbiAgIFRoaXMgbW9kdWxlIGRldGVybWluZXMgdGhlIHN0YXRpY3Mgc2VtYW50aWNzIG9mIGEgcHJvZ3JhbS5cbiAgIEl0IG1ha2VzIHVzZSBvZiB0aGUgZm9sbG93aW5nIG1vZHVsZXM6XG5cbiAgIElORk8ucmU6IERlZmluZXMgdGhlIEluZm8udCB0eXBlIHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZVxuICAgc3RhdGljIFNUQVRVUyBvZiBhIHRlcm0uIFRoaXMgU1RBVFVTIGNhbiBiZSBlaXRoZXIgT0sgb3IgRVJST1IsXG4gICBhbmQgaXMgZGV0ZXJtaW5lZCBieSByZWNvbmNpbGxpbmcgdHdvIHNvdXJjZXMgb2YgdHlwaW5nIGluZm9ybWF0aW9uLFxuICAgdGhlIE1PREUgYW5kIHRoZSBTRUxGLlxuXG4gICBNT0RFLnJlOiBEZWZpbmVzIHRoZSBNb2RlLnQgdHlwZSB3aGljaCBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGVcbiAgIHR5cGluZyBleHBlY3RhdGlvbnMgaW1wb3NlZCBieSBhIHRlcm0ncyBhbmNlc3RvcnMuXG5cbiAgIFNFTEYucmU6IERlZmluZSB0aGUgU2VsZi50IHR5cGUgd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgdGhlXG4gICB0eXBlIGluZm9ybWF0aW9uIGRlcml2YWJsZSBmcm9tIHRoZSB0ZXJtIGl0c2VsZi5cblxuICAgVGhlIHBvaW50IG9mIFNUQVRJQ1MucmUgaXRzZWxmIGlzIHRvIGRlcml2ZSBhIG1hcCBiZXR3ZWVuIGVhY2hcbiAgIHRlcm0ncyB1bmlxdWUgaWQgYW5kIHRoYXQgdGVybSdzIHN0YXRpYyBJTkZPLiBUaGUgYmVsb3cgZnVuY3Rpb25zXG4gICBhcmUgaW50ZW5kZWQgbW9zdGx5IGFzIGluZnJhc3RydWN0dXJlOiBUaGUgcG9pbnQgaXMgdG8gZGVmaW5lIGFcbiAgIHRyYXZlcnNhbCB0aHJvdWdoIHRoZSBzeW50YXggdHJlZSB3aGljaCwgZm9yIGVhY2ggdGVybSwgcGFzc2VzXG4gICBkb3duIHRoZSBNT0RFLCBwYXNzZXMgdXAgdGhlIFNFTEYsIGNhbGN1bGF0ZXMgdGhlIElORk8sIGFuZCBhZGRzXG4gICBpdCB0byB0aGUgbWFwLlxuXG4gICBUaGUgYXJjaGl0ZWN0dXJhbCBpbnRlbnRpb24gaGVyZSBpcyB0aGF0IG1vc3QgdHlwZS1tYW5pcHVsYXRpb25cbiAgIGxvZ2ljIGlzIGRlZmluZWQgaW4gSU5GTywgTU9ERSwgYW5kIFNFTEYsIGFuZCB0aGUgU1RBVElDUyBtb2R1bGVcbiAgIGl0c2VsZiBpcyBkZWRpY2F0ZWQgdG8gdGhlIHBpcGluZyBuZWNlc3NhcnkgdG8gKEEpIGludHJvZHVjZSBhbmRcbiAgIChCKSBwcm9wYWdhdGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0aHJvdWdoIHRoZSBzeW50YXggdHJlZS5cblxuICAgICovXG5cbm1vZHVsZSBJbmZvID0gSW5mbztcblxubW9kdWxlIE1hcCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBJZC5NYXAudChJbmZvLnQpO1xuXG4gIGxldCBlcnJvcl9pZHMgPSAodGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCwgaW5mb19tYXA6IHQpOiBsaXN0KElkLnQpID0+XG4gICAgSWQuTWFwLmZvbGQoXG4gICAgICAoaWQsIGluZm8sIGFjYykgPT5cbiAgICAgICAgLyogQmVjYXVzZSBvZiBhcnRlZmFjdHMgaW4gTWFrZXRlcm0gSUQgaGFuZGxpbmcsXG4gICAgICAgICAqIHRoZXJlIGFyZSBiZSBzaXR1YXRpb25zIHdoZXJlIGlkcyBhcHBlYXIgaW4gdGhlXG4gICAgICAgICAqIGluZm9fbWFwIHdoaWNoIGRvIG5vdCBvY2N1ciBpbiB0ZXJtX3Jhbmdlcy4gVGhlc2VcbiAgICAgICAgICogaWRzIHNob3VsZCBiZSBwdXJlbHkgZHVwbGljYXRpdmUsIHNvIHNraXBwaW5nIHRoZW1cbiAgICAgICAgICogd2hlbiBpdGVyYXRpbmcgb3ZlciB0aGUgaW5mb19tYXAgc2hvdWxkIGhhdmUgbm9cbiAgICAgICAgICogZWZmZWN0LCBiZXlvbmQgc3VwcmVzc2luZyB0aGUgcmVzdWx0aW5nIE5vdF9mb3VuZCBleHMgKi9cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIHRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IFNvbWUoXykgd2hlbiBJbmZvLmlzX2Vycm9yKGluZm8pID0+IFtpZCwgLi4uYWNjXVxuICAgICAgICB8IF8gPT4gYWNjXG4gICAgICAgIH0sXG4gICAgICBpbmZvX21hcCxcbiAgICAgIFtdLFxuICAgICk7XG59O1xuXG5sZXQgbWFwX20gPSAoZiwgeHMsIG06IE1hcC50KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoKHhzLCBtKSwgeCkgPT4gZih4LCBtKSB8PiAoKCh4LCBtKSkgPT4gKHhzIEAgW3hdLCBtKSksXG4gICAgKFtdLCBtKSxcbiAgICB4cyxcbiAgKTtcblxubGV0IGFkZF9pbmZvID0gKGlkczogbGlzdChJZC50KSwgaW5mbzogSW5mby50LCBtOiBNYXAudCk6IE1hcC50ID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobSwgaWQpID0+IElkLk1hcC5hZGQoaWQsIGluZm8sIG0pLCBtKTtcblxubGV0IGV4dGVuZF9sZXRfZGVmX2N0eCA9XG4gICAgKGN0eDogQ3R4LnQsIHBhdDogVVBhdC50LCBwYXRfY3R4OiBDdHgudCwgZGVmOiBVRXhwLnQpOiBDdHgudCA9PlxuICBpZiAoVVBhdC5pc190dXBsZV9vZl9hcnJvd3MocGF0KSAmJiBVRXhwLmlzX3R1cGxlX29mX2Z1bmN0aW9ucyhkZWYpKSB7XG4gICAgcGF0X2N0eDtcbiAgfSBlbHNlIHtcbiAgICBjdHg7XG4gIH07XG5cbmxldCB0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQ6IFVFeHAub3BfYmluX2ludCA9PiBUeXAudCA9XG4gIGZ1blxuICB8IChQbHVzIHwgTWludXMgfCBUaW1lcyB8IFBvd2VyIHwgRGl2aWRlKSBhcyBfb3AgPT4gSW50XG4gIHwgKFxuICAgICAgTGVzc1RoYW4gfCBHcmVhdGVyVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuT3JFcXVhbCB8IEVxdWFscyB8XG4gICAgICBOb3RFcXVhbHNcbiAgICApIGFzIF9vcCA9PlxuICAgIEJvb2w7XG5cbmxldCB0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdDogVUV4cC5vcF9iaW5fZmxvYXQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCAoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSkgYXMgX29wID0+IEZsb2F0XG4gIHwgKFxuICAgICAgTGVzc1RoYW4gfCBHcmVhdGVyVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuT3JFcXVhbCB8IEVxdWFscyB8XG4gICAgICBOb3RFcXVhbHNcbiAgICApIGFzIF9vcCA9PlxuICAgIEJvb2w7XG5cbmxldCB0eXBfZXhwX2Jpbm9wX2Jpbl9zdHJpbmc6IFVFeHAub3BfYmluX3N0cmluZyA9PiBUeXAudCA9XG4gIGZ1blxuICB8IENvbmNhdCA9PiBTdHJpbmdcbiAgfCBFcXVhbHMgPT4gQm9vbDtcblxubGV0IHR5cF9leHBfYmlub3A6IFVFeHAub3BfYmluID0+IChUeXAudCwgVHlwLnQsIFR5cC50KSA9XG4gIGZ1blxuICB8IEJvb2woQW5kIHwgT3IpID0+IChCb29sLCBCb29sLCBCb29sKVxuICB8IEludChvcCkgPT4gKEludCwgSW50LCB0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQob3ApKVxuICB8IEZsb2F0KG9wKSA9PiAoRmxvYXQsIEZsb2F0LCB0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdChvcCkpXG4gIHwgU3RyaW5nKG9wKSA9PiAoU3RyaW5nLCBTdHJpbmcsIHR5cF9leHBfYmlub3BfYmluX3N0cmluZyhvcCkpO1xuXG5sZXQgdHlwX2V4cF91bm9wOiBVRXhwLm9wX3VuID0+IChUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgTWV0YShVbnF1b3RlKSA9PiAoVmFyKFwiJE1ldGFcIiksIFVua25vd24oRnJlZShcIiRNZXRhXCIpKSlcbiAgfCBCb29sKE5vdCkgPT4gKEJvb2wsIEJvb2wpXG4gIHwgSW50KE1pbnVzKSA9PiAoSW50LCBJbnQpO1xuXG5sZXQgcmVjIGFueV90b19pbmZvX21hcCA9XG4gICAgICAgICh+Y3R4OiBDdHgudCwgfmFuY2VzdG9ycywgYW55OiBhbnksIG06IE1hcC50KTogKENvQ3R4LnQsIE1hcC50KSA9PlxuICBzd2l0Y2ggKGFueSkge1xuICB8IEV4cChlKSA9PlxuICAgIGxldCAoe2NvX2N0eCwgX306IEluZm8uZXhwLCBtKSA9XG4gICAgICB1ZXhwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIGUsIG0pO1xuICAgIChjb19jdHgsIG0pO1xuICB8IFBhdChwKSA9PlxuICAgIGxldCBtID1cbiAgICAgIHVwYXRfdG9faW5mb19tYXAoXG4gICAgICAgIH5pc19zeW5zd2l0Y2g9ZmFsc2UsXG4gICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgIH5hbmNlc3RvcnMsXG4gICAgICAgIH5jdHgsXG4gICAgICAgIHAsXG4gICAgICAgIG0sXG4gICAgICApXG4gICAgICB8PiBzbmQ7XG4gICAgKENvQ3R4LmVtcHR5LCBtKTtcbiAgfCBUUGF0KHRwKSA9PiAoXG4gICAgICBDb0N0eC5lbXB0eSxcbiAgICAgIHV0cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHRwLCBtKSB8PiBzbmQsXG4gICAgKVxuICB8IFR5cCh0eSkgPT4gKFxuICAgICAgQ29DdHguZW1wdHksXG4gICAgICB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHR5LCBtKSB8PiBzbmQsXG4gICAgKVxuICB8IFJ1bChfKVxuICB8IE51bCAoKVxuICB8IEFueSAoKSA9PiAoQ29DdHguZW1wdHksIG0pXG4gIH1cbmFuZCBtdWx0aSA9ICh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpID0+XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgICgoY29fY3R4cywgbSksIGFueSkgPT4ge1xuICAgICAgbGV0IChjb19jdHgsIG0pID0gYW55X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIGFueSwgbSk7XG4gICAgICAoY29fY3R4cyBAIFtjb19jdHhdLCBtKTtcbiAgICB9LFxuICAgIChbXSwgbSksXG4gICAgdG1zLFxuICApXG5hbmQgdWV4cF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eDogQ3R4LnQsXG4gICAgICB+bW9kZT1Nb2RlLlN5bixcbiAgICAgIH5pc19pbl9maWx0ZXI9ZmFsc2UsXG4gICAgICB+YW5jZXN0b3JzLFxuICAgICAge2lkcywgdGVybX0gYXMgdWV4cDogVUV4cC50LFxuICAgICAgbTogTWFwLnQsXG4gICAgKVxuICAgIDogKEluZm8uZXhwLCBNYXAudCkgPT4ge1xuICAvKiBNYXliZSBzd2l0Y2ggbW9kZSB0byBzeW4gKi9cbiAgbGV0IG1vZGUgPVxuICAgIHN3aXRjaCAobW9kZSkge1xuICAgIHwgQW5hKFVua25vd24oU3luU3dpdGNoKSkgPT4gTW9kZS5TeW5cbiAgICB8IF8gPT4gbW9kZVxuICAgIH07XG4gIGxldCBhZGQnID0gKH5zZWxmLCB+Y29fY3R4LCBtKSA9PiB7XG4gICAgbGV0IGluZm8gPVxuICAgICAgSW5mby5kZXJpdmVkX2V4cCh+dWV4cCwgfmN0eCwgfm1vZGUsIH5hbmNlc3RvcnMsIH5zZWxmLCB+Y29fY3R4KTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvRXhwKGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhZGQgPSAofnNlbGYsIH5jb19jdHgsIG0pID0+IGFkZCcofnNlbGY9Q29tbW9uKHNlbGYpLCB+Y29fY3R4LCBtKTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVRXhwLnJlcF9pZCh1ZXhwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAgIChcbiAgICAgICAgfmN0eCxcbiAgICAgICAgfm1vZGU9TW9kZS5TeW4sXG4gICAgICAgIH5pc19pbl9maWx0ZXI9aXNfaW5fZmlsdGVyLFxuICAgICAgICB+YW5jZXN0b3JzPWFuY2VzdG9ycyxcbiAgICAgICAgdWV4cDogVUV4cC50LFxuICAgICAgICBtOiBNYXAudCxcbiAgICAgICkgPT4ge1xuICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfm1vZGUsIH5pc19pbl9maWx0ZXIsIH5hbmNlc3RvcnMsIHVleHAsIG0pO1xuICB9O1xuICBsZXQgZ28nID0gdWV4cF90b19pbmZvX21hcCh+YW5jZXN0b3JzKTtcbiAgbGV0IGdvID0gZ28nKH5jdHgpO1xuICBsZXQgbWFwX21fZ28gPSBtID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChlcywgbSksIG1vZGUsIGUpID0+XG4gICAgICAgIGdvKH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAoW10sIG0pLFxuICAgICk7XG4gIGxldCBnb19wYXQgPSB1cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgYXRvbWljID0gc2VsZiA9PiBhZGQofnNlbGYsIH5jb19jdHg9Q29DdHguZW1wdHksIG0pO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoY29fY3R4cywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZCh+c2VsZj1Jc011bHRpLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKGNvX2N0eHMpLCBtKTtcbiAgfCBJbnZhbGlkKHRva2VuKSA9PiBhdG9taWMoQmFkVG9rZW4odG9rZW4pKVxuICB8IEVtcHR5SG9sZSA9PiBhdG9taWMoSnVzdChVbmtub3duKEludGVybmFsKSkpXG4gIHwgVHJpdiA9PiBhdG9taWMoSnVzdChQcm9kKFtdKSkpXG4gIHwgQm9vbChfKSA9PiBhdG9taWMoSnVzdChCb29sKSlcbiAgfCBJbnQoXykgPT4gYXRvbWljKEp1c3QoSW50KSlcbiAgfCBGbG9hdChfKSA9PiBhdG9taWMoSnVzdChGbG9hdCkpXG4gIHwgU3RyaW5nKF8pID0+IGF0b21pYyhKdXN0KFN0cmluZykpXG4gIHwgTGlzdExpdChlcykgPT5cbiAgICBsZXQgaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIGVzKTtcbiAgICBsZXQgbW9kZXMgPSBNb2RlLm9mX2xpc3RfbGl0KGN0eCwgTGlzdC5sZW5ndGgoZXMpLCBtb2RlKTtcbiAgICBsZXQgKGVzLCBtKSA9IG1hcF9tX2dvKG0sIG1vZGVzLCBlcyk7XG4gICAgbGV0IHR5cyA9IExpc3QubWFwKEluZm8uZXhwX3R5LCBlcyk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5saXN0bGl0KH5lbXB0eT1Vbmtub3duKEludGVybmFsKSwgY3R4LCB0eXMsIGlkcyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKExpc3QubWFwKEluZm8uZXhwX2NvX2N0eCwgZXMpKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICBsZXQgKGhkLCBtKSA9IGdvKH5tb2RlPU1vZGUub2ZfY29uc19oZChjdHgsIG1vZGUpLCBoZCwgbSk7XG4gICAgbGV0ICh0bCwgbSkgPSBnbyh+bW9kZT1Nb2RlLm9mX2NvbnNfdGwoY3R4LCBtb2RlLCBoZC50eSksIHRsLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KExpc3QoaGQudHkpKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2hkLmNvX2N0eCwgdGwuY29fY3R4XSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgTGlzdENvbmNhdChlMSwgZTIpID0+XG4gICAgbGV0IGlkcyA9IExpc3QubWFwKFRlcm0uVUV4cC5yZXBfaWQsIFtlMSwgZTJdKTtcbiAgICBsZXQgbW9kZSA9IE1vZGUub2ZfbGlzdF9jb25jYXQoY3R4LCBtb2RlKTtcbiAgICBsZXQgKGUxLCBtKSA9IGdvKH5tb2RlLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubGlzdF9jb25jYXQoY3R4LCBbZTEudHksIGUyLnR5XSwgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2UxLmNvX2N0eCwgZTIuY29fY3R4XSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgVmFyKG5hbWUpID0+XG4gICAgYWRkJyhcbiAgICAgIH5zZWxmPVNlbGYub2ZfZXhwX3ZhcihjdHgsIG5hbWUpLFxuICAgICAgfmNvX2N0eD1Db0N0eC5zaW5nbGV0b24obmFtZSwgVUV4cC5yZXBfaWQodWV4cCksIE1vZGUudHlfb2YobW9kZSkpLFxuICAgICAgbSxcbiAgICApXG4gIHwgUGFyZW5zKGUpID0+XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChlLnR5KSwgfmNvX2N0eD1lLmNvX2N0eCwgbSk7XG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBlKSB3aGVuIGlzX2luX2ZpbHRlciA9PlxuICAgIGxldCBlOiBVRXhwLnQgPSB7XG4gICAgICBpZHM6IGUuaWRzLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICAgICAgfCBWYXIoXCJlXCIpID0+IFVFeHAuQ29uc3RydWN0b3IoXCIkZVwiKVxuICAgICAgICB8IFZhcihcInZcIikgPT4gVUV4cC5Db25zdHJ1Y3RvcihcIiR2XCIpXG4gICAgICAgIHwgXyA9PiBlLnRlcm1cbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGxldCB0eV9pbiA9IFR5cC5WYXIoXCIkTWV0YVwiKTtcbiAgICBsZXQgdHlfb3V0ID0gVHlwLlVua25vd24oSW50ZXJuYWwpO1xuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEodHlfaW4pLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0eV9vdXQpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBVbk9wKG9wLCBlKSA9PlxuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSB0eXBfZXhwX3Vub3Aob3ApO1xuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEodHlfaW4pLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0eV9vdXQpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBCaW5PcChvcCwgZTEsIGUyKSA9PlxuICAgIGxldCAodHkxLCB0eTIsIHR5X291dCkgPSB0eXBfZXhwX2Jpbm9wKG9wKTtcbiAgICBsZXQgKGUxLCBtKSA9IGdvKH5tb2RlPUFuYSh0eTEpLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZT1BbmEodHkyKSwgZTIsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9Q29DdHgudW5pb24oW2UxLmNvX2N0eCwgZTIuY29fY3R4XSksIG0pO1xuICB8IFR1cGxlKGVzKSA9PlxuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfcHJvZChjdHgsIG1vZGUsIExpc3QubGVuZ3RoKGVzKSk7XG4gICAgbGV0IChlcywgbSkgPSBtYXBfbV9nbyhtLCBtb2RlcywgZXMpO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoUHJvZChMaXN0Lm1hcChJbmZvLmV4cF90eSwgZXMpKSksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKExpc3QubWFwKEluZm8uZXhwX2NvX2N0eCwgZXMpKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBUZXN0KGUpID0+XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYShCb29sKSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoUHJvZChbXSkpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBGaWx0ZXIoXywgY29uZCwgYm9keSkgPT5cbiAgICBsZXQgKGNvbmQsIG0pID0gZ28ofm1vZGUsIGNvbmQsIG0sIH5pc19pbl9maWx0ZXI9dHJ1ZSk7XG4gICAgbGV0IChib2R5LCBtKSA9IGdvKH5tb2RlLCBib2R5LCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KGJvZHkudHkpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbY29uZC5jb19jdHgsIGJvZHkuY29fY3R4XSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgU2VxKGUxLCBlMikgPT5cbiAgICBsZXQgKGUxLCBtKSA9IGdvKH5tb2RlPVN5biwgZTEsIG0pO1xuICAgIGxldCAoZTIsIG0pID0gZ28ofm1vZGUsIGUyLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChlMi50eSksIH5jb19jdHg9Q29DdHgudW5pb24oW2UxLmNvX2N0eCwgZTIuY29fY3R4XSksIG0pO1xuICB8IENvbnN0cnVjdG9yKGN0cikgPT4gYXRvbWljKFNlbGYub2ZfY3RyKGN0eCwgY3RyKSlcbiAgfCBBcChmbiwgYXJnKVxuICB8IFBpcGVsaW5lKGFyZywgZm4pID0+XG4gICAgbGV0IGZuX21vZGUgPSBNb2RlLm9mX2FwKGN0eCwgbW9kZSwgVUV4cC5jdHJfbmFtZShmbikpO1xuICAgIGxldCAoZm4sIG0pID0gZ28ofm1vZGU9Zm5fbW9kZSwgZm4sIG0pO1xuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIGZuLnR5KTtcbiAgICBsZXQgKGFyZywgbSkgPSBnbyh+bW9kZT1BbmEodHlfaW4pLCBhcmcsIG0pO1xuICAgIGxldCBzZWxmOiBTZWxmLnQgPVxuICAgICAgSWQuaXNfbnVsbGFyeV9hcF9mbGFnKGFyZy50ZXJtLmlkcylcbiAgICAgICYmICFUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2luLCBQcm9kKFtdKSlcbiAgICAgICAgPyBCYWRUcml2QXAodHlfaW4pIDogSnVzdCh0eV9vdXQpO1xuICAgIGFkZCh+c2VsZiwgfmNvX2N0eD1Db0N0eC51bmlvbihbZm4uY29fY3R4LCBhcmcuY29fY3R4XSksIG0pO1xuICB8IEZ1bihwLCBlKSA9PlxuICAgIGxldCAobW9kZV9wYXQsIG1vZGVfYm9keSkgPSBNb2RlLm9mX2Fycm93KGN0eCwgbW9kZSk7XG4gICAgbGV0IChwJywgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBsZXQgKGUsIG0pID0gZ28nKH5jdHg9cCcuY3R4LCB+bW9kZT1tb2RlX2JvZHksIGUsIG0pO1xuICAgIC8qIGFkZCBjb19jdHggdG8gcGF0dGVybiAqL1xuICAgIGxldCAocCwgbSkgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9ZS5jb19jdHgsIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KEFycm93KHAudHksIGUudHkpKSxcbiAgICAgIH5jb19jdHg9Q29DdHgubWsoY3R4LCBwLmN0eCwgZS5jb19jdHgpLFxuICAgICAgbSxcbiAgICApO1xuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgbGV0IChwX3N5biwgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9dHJ1ZSwgfmNvX2N0eD1Db0N0eC5lbXB0eSwgfm1vZGU9U3luLCBwLCBtKTtcbiAgICBsZXQgZGVmX2N0eCA9IGV4dGVuZF9sZXRfZGVmX2N0eChjdHgsIHAsIHBfc3luLmN0eCwgZGVmKTtcbiAgICBsZXQgKGRlZiwgbSkgPSBnbycofmN0eD1kZWZfY3R4LCB+bW9kZT1BbmEocF9zeW4udHkpLCBkZWYsIG0pO1xuICAgIC8qIEFuYWx5emUgcGF0dGVybiB0byBpbmNvcnBvcmF0ZSBkZWYgdHlwZSBpbnRvIGN0eCAqL1xuICAgIGxldCAocF9hbmEnLCBfKSA9XG4gICAgICBnb19wYXQoXG4gICAgICAgIH5pc19zeW5zd2l0Y2g9ZmFsc2UsXG4gICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgIH5tb2RlPUFuYShkZWYudHkpLFxuICAgICAgICBwLFxuICAgICAgICBtLFxuICAgICAgKTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28nKH5jdHg9cF9hbmEnLmN0eCwgfm1vZGUsIGJvZHksIG0pO1xuICAgIC8qIGFkZCBjb19jdHggdG8gcGF0dGVybiAqL1xuICAgIGxldCAocF9hbmEsIG0pID1cbiAgICAgIGdvX3BhdChcbiAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgfmNvX2N0eD1ib2R5LmNvX2N0eCxcbiAgICAgICAgfm1vZGU9QW5hKGRlZi50eSksXG4gICAgICAgIHAsXG4gICAgICAgIG0sXG4gICAgICApO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoYm9keS50eSksXG4gICAgICB+Y29fY3R4PVxuICAgICAgICBDb0N0eC51bmlvbihbZGVmLmNvX2N0eCwgQ29DdHgubWsoY3R4LCBwX2FuYS5jdHgsIGJvZHkuY29fY3R4KV0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IElmKGUwLCBlMSwgZTIpID0+XG4gICAgbGV0IGJyYW5jaF9pZHMgPSBMaXN0Lm1hcChVRXhwLnJlcF9pZCwgW2UxLCBlMl0pO1xuICAgIGxldCAoY29uZCwgbSkgPSBnbyh+bW9kZT1BbmEoQm9vbCksIGUwLCBtKTtcbiAgICBsZXQgKGNvbnMsIG0pID0gZ28ofm1vZGUsIGUxLCBtKTtcbiAgICBsZXQgKGFsdCwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubWF0Y2goY3R4LCBbY29ucy50eSwgYWx0LnR5XSwgYnJhbmNoX2lkcyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtjb25kLmNvX2N0eCwgY29ucy5jb19jdHgsIGFsdC5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBNYXRjaChzY3J1dCwgcnVsZXMpID0+XG4gICAgbGV0IChzY3J1dCwgbSkgPSBnbyh+bW9kZT1TeW4sIHNjcnV0LCBtKTtcbiAgICBsZXQgKHBzLCBlcykgPSBMaXN0LnNwbGl0KHJ1bGVzKTtcbiAgICBsZXQgYnJhbmNoX2lkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBlcyk7XG4gICAgbGV0IChwcycsIF8pID1cbiAgICAgIG1hcF9tKFxuICAgICAgICBnb19wYXQoXG4gICAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgICB+Y29fY3R4PUNvQ3R4LmVtcHR5LFxuICAgICAgICAgIH5tb2RlPU1vZGUuQW5hKHNjcnV0LnR5KSxcbiAgICAgICAgKSxcbiAgICAgICAgcHMsXG4gICAgICAgIG0sXG4gICAgICApO1xuICAgIGxldCBwX2N0eHMgPSBMaXN0Lm1hcChJbmZvLnBhdF9jdHgsIHBzJyk7XG4gICAgbGV0IChlcywgbSkgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoKGVzLCBtKSwgZSwgY3R4KSA9PlxuICAgICAgICAgIGdvJyh+Y3R4LCB+bW9kZSwgZSwgbSkgfD4gKCgoZSwgbSkpID0+IChlcyBAIFtlXSwgbSkpLFxuICAgICAgICAoW10sIG0pLFxuICAgICAgICBlcyxcbiAgICAgICAgcF9jdHhzLFxuICAgICAgKTtcbiAgICBsZXQgZV90eXMgPSBMaXN0Lm1hcChJbmZvLmV4cF90eSwgZXMpO1xuICAgIGxldCBlX2NvX2N0eHMgPVxuICAgICAgTGlzdC5tYXAyKENvQ3R4Lm1rKGN0eCksIHBfY3R4cywgTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpO1xuICAgIC8qIEFkZCBjby1jdHhzIHRvIHBhdHRlcm5zICovXG4gICAgbGV0IChfLCBtKSA9XG4gICAgICBtYXBfbShcbiAgICAgICAgKChwLCBjb19jdHgpKSA9PlxuICAgICAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4LCB+bW9kZT1Nb2RlLkFuYShzY3J1dC50eSksIHApLFxuICAgICAgICBMaXN0LmNvbWJpbmUocHMsIGVfY29fY3R4cyksXG4gICAgICAgIG0sXG4gICAgICApO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubWF0Y2goY3R4LCBlX3R5cywgYnJhbmNoX2lkcyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtzY3J1dC5jb19jdHhdIEAgZV9jb19jdHhzKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBUeUFsaWFzKHR5cGF0LCB1dHlwLCBib2R5KSA9PlxuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHlwYXQsIG0pIHw+IHNuZDtcbiAgICBzd2l0Y2ggKHR5cGF0LnRlcm0pIHtcbiAgICB8IFZhcihuYW1lKSB3aGVuICFDdHguc2hhZG93c190eXAoY3R4LCBuYW1lKSA9PlxuICAgICAgLyogQ3VycmVudGx5IHdlIGRpc2FsbG93IGFsbCB0eXBlIHNoYWRvd2luZyAqL1xuICAgICAgLyogTk9URShhbmRyZXcpOiBDdXJyZW50bHksIFVUeXAudG9fdHlwIHJldHVybnMgVW5rbm93bihUeXBlSG9sZSlcbiAgICAgICAgIGZvciBhbnkgdHlwZSB2YXJpYWJsZSByZWZlcmVuY2Ugbm90IGluIGl0cyBjdHguIFNvIGFueSBmcmVlIHZhcmlhYmxlc1xuICAgICAgICAgaW4gdGhlIGRlZmluaXRpb24gd29uJ3QgYmUgbm90aWNlZC4gQnV0IHdlIG5lZWQgdG8gY2hlY2sgZm9yIGZyZWVcbiAgICAgICAgIHZhcmlhYmxlcyB0byBkZWNpZGUgd2hldGhlciB0byBtYWtlIGEgcmVjdXJzaXZlIHR5cGUgb3Igbm90LiBTbyB3ZVxuICAgICAgICAgdGVudGF0aXZlbHkgYWRkIGFuIGFidHJhY3QgdHlwZSB0byB0aGUgY3R4LCByZXByZXNlbnRpbmcgdGhlXG4gICAgICAgICBzcGVjdWxhdGl2ZSByZWMgcGFyYW1ldGVyLiAqL1xuICAgICAgbGV0ICh0eV9kZWYsIGN0eF9kZWYsIGN0eF9ib2R5KSA9IHtcbiAgICAgICAgbGV0IHR5X3ByZSA9IFVUeXAudG9fdHlwKEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIG5hbWUpLCB1dHlwKTtcbiAgICAgICAgc3dpdGNoICh1dHlwLnRlcm0pIHtcbiAgICAgICAgfCBTdW0oXykgd2hlbiBMaXN0Lm1lbShuYW1lLCBUeXAuZnJlZV92YXJzKHR5X3ByZSkpID0+XG4gICAgICAgICAgLyogTk9URTogV2hlbiBkZWJ1Z2dpbmcgdHlwZSBzeXN0ZW0gaXNzdWVzIGl0IG1heSBiZSBiZW5lZmljaWFsIHRvXG4gICAgICAgICAgICAgdXNlIGEgZGlmZmVyZW50IG5hbWUgdGhhbiB0aGUgYWxpYXMgZm9yIHRoZSByZWN1cnNpdmUgcGFyYW1ldGVyICovXG4gICAgICAgICAgLy9sZXQgdHlfcmVjID0gVHlwLlJlYyhcIs6xXCIsIFR5cC5zdWJzdChWYXIoXCLOsVwiKSwgbmFtZSwgdHlfcHJlKSk7XG4gICAgICAgICAgbGV0IHR5X3JlYyA9IFR5cC5SZWMobmFtZSwgdHlfcHJlKTtcbiAgICAgICAgICBsZXQgY3R4X2RlZiA9XG4gICAgICAgICAgICBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVVRQYXQucmVwX2lkKHR5cGF0KSwgdHlfcmVjKTtcbiAgICAgICAgICAodHlfcmVjLCBjdHhfZGVmLCBjdHhfZGVmKTtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IHR5ID0gVVR5cC50b190eXAoY3R4LCB1dHlwKTtcbiAgICAgICAgICAodHksIGN0eCwgQ3R4LmV4dGVuZF9hbGlhcyhjdHgsIG5hbWUsIFVUUGF0LnJlcF9pZCh0eXBhdCksIHR5KSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgbGV0IGN0eF9ib2R5ID1cbiAgICAgICAgc3dpdGNoIChUeXAuZ2V0X3N1bV9jb25zdHJ1Y3RvcnMoY3R4LCB0eV9kZWYpKSB7XG4gICAgICAgIHwgU29tZShzbSkgPT4gQ3R4LmFkZF9jdHJzKGN0eF9ib2R5LCBuYW1lLCBVVHlwLnJlcF9pZCh1dHlwKSwgc20pXG4gICAgICAgIHwgTm9uZSA9PiBjdHhfYm9keVxuICAgICAgICB9O1xuICAgICAgbGV0ICh7Y29fY3R4LCB0eTogdHlfYm9keSwgX306IEluZm8uZXhwLCBtKSA9XG4gICAgICAgIGdvJyh+Y3R4PWN0eF9ib2R5LCB+bW9kZSwgYm9keSwgbSk7XG4gICAgICAvKiBNYWtlIHN1cmUgdHlwZXMgZG9uJ3QgZXNjYXBlIHRoZWlyIHNjb3BlICovXG4gICAgICBsZXQgdHlfZXNjYXBlID0gVHlwLnN1YnN0KHR5X2RlZiwgbmFtZSwgdHlfYm9keSk7XG4gICAgICBsZXQgbSA9IHV0eXBfdG9faW5mb19tYXAofmN0eD1jdHhfZGVmLCB+YW5jZXN0b3JzLCB1dHlwLCBtKSB8PiBzbmQ7XG4gICAgICBhZGQofnNlbGY9SnVzdCh0eV9lc2NhcGUpLCB+Y29fY3R4LCBtKTtcbiAgICB8IFZhcihfKVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgIGxldCAoe2NvX2N0eCwgdHk6IHR5X2JvZHksIF99OiBJbmZvLmV4cCwgbSkgPVxuICAgICAgICBnbycofmN0eCwgfm1vZGUsIGJvZHksIG0pO1xuICAgICAgbGV0IG0gPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0eXAsIG0pIHw+IHNuZDtcbiAgICAgIGFkZCh+c2VsZj1KdXN0KHR5X2JvZHkpLCB+Y29fY3R4LCBtKTtcbiAgICB9O1xuICB9O1xufVxuYW5kIHVwYXRfdG9faW5mb19tYXAgPVxuICAgIChcbiAgICAgIH5pc19zeW5zd2l0Y2gsXG4gICAgICB+Y3R4LFxuICAgICAgfmNvX2N0eCxcbiAgICAgIH5hbmNlc3RvcnM6IEluZm8uYW5jZXN0b3JzLFxuICAgICAgfm1vZGU6IE1vZGUudD1Nb2RlLlN5bixcbiAgICAgIHtpZHMsIHRlcm19IGFzIHVwYXQ6IFVQYXQudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9ICh+c2VsZiwgfmN0eCwgbSkgPT4ge1xuICAgIGxldCBpbmZvID1cbiAgICAgIEluZm8uZGVyaXZlZF9wYXQoXG4gICAgICAgIH51cGF0LFxuICAgICAgICB+Y3R4LFxuICAgICAgICB+Y29fY3R4LFxuICAgICAgICB+bW9kZSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfnNlbGY9Q29tbW9uKHNlbGYpLFxuICAgICAgKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvUGF0KGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhdG9taWMgPSBzZWxmID0+IGFkZCh+c2VsZiwgfmN0eCwgbSk7XG4gIGxldCBhbmNlc3RvcnMgPSBbVVBhdC5yZXBfaWQodXBhdCldIEAgYW5jZXN0b3JzO1xuICBsZXQgZ28gPSB1cGF0X3RvX2luZm9fbWFwKH5pc19zeW5zd2l0Y2gsIH5hbmNlc3RvcnMsIH5jb19jdHgpO1xuICBsZXQgdW5rbm93biA9IFR5cC5Vbmtub3duKGlzX3N5bnN3aXRjaCA/IFN5blN3aXRjaCA6IEludGVybmFsKTtcbiAgbGV0IGN0eF9mb2xkID0gKGN0eDogQ3R4LnQsIG0pID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChjdHgsIHR5cywgbSksIGUsIG1vZGUpID0+XG4gICAgICAgIGdvKH5jdHgsIH5tb2RlLCBlLCBtKVxuICAgICAgICB8PiAoKChpbmZvLCBtKSkgPT4gKGluZm8uY3R4LCB0eXMgQCBbaW5mby50eV0sIG0pKSxcbiAgICAgIChjdHgsIFtdLCBtKSxcbiAgICApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoXywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZCh+c2VsZj1Jc011bHRpLCB+Y3R4LCBtKTtcbiAgfCBJbnZhbGlkKHRva2VuKSA9PiBhdG9taWMoQmFkVG9rZW4odG9rZW4pKVxuICB8IEVtcHR5SG9sZSA9PiBhdG9taWMoSnVzdCh1bmtub3duKSlcbiAgfCBJbnQoXykgPT4gYXRvbWljKEp1c3QoSW50KSlcbiAgfCBGbG9hdChfKSA9PiBhdG9taWMoSnVzdChGbG9hdCkpXG4gIHwgVHJpdiA9PiBhdG9taWMoSnVzdChQcm9kKFtdKSkpXG4gIHwgQm9vbChfKSA9PiBhdG9taWMoSnVzdChCb29sKSlcbiAgfCBTdHJpbmcoXykgPT4gYXRvbWljKEp1c3QoU3RyaW5nKSlcbiAgfCBMaXN0TGl0KHBzKSA9PlxuICAgIGxldCBpZHMgPSBMaXN0Lm1hcChVUGF0LnJlcF9pZCwgcHMpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfbGlzdF9saXQoY3R4LCBMaXN0Lmxlbmd0aChwcyksIG1vZGUpO1xuICAgIGxldCAoY3R4LCB0eXMsIG0pID0gY3R4X2ZvbGQoY3R4LCBtLCBwcywgbW9kZXMpO1xuICAgIGFkZCh+c2VsZj1TZWxmLmxpc3RsaXQofmVtcHR5PXVua25vd24sIGN0eCwgdHlzLCBpZHMpLCB+Y3R4LCBtKTtcbiAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICBsZXQgKGhkLCBtKSA9IGdvKH5jdHgsIH5tb2RlPU1vZGUub2ZfY29uc19oZChjdHgsIG1vZGUpLCBoZCwgbSk7XG4gICAgbGV0ICh0bCwgbSkgPVxuICAgICAgZ28ofmN0eD1oZC5jdHgsIH5tb2RlPU1vZGUub2ZfY29uc190bChjdHgsIG1vZGUsIGhkLnR5KSwgdGwsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KExpc3QoaGQudHkpKSwgfmN0eD10bC5jdHgsIG0pO1xuICB8IFdpbGQgPT4gYXRvbWljKEp1c3QodW5rbm93bikpXG4gIHwgVmFyKG5hbWUpID0+XG4gICAgLyogTk9URTogVGhlIHNlbGYgdHlwZSBhc3NpZ25lZCB0byBwYXR0ZXJuIHZhcmlhYmxlcyAoVW5rbm93bilcbiAgICAgICBtYXkgYmUgU3luU3dpdGNoLCBidXQgU3luU3dpdGNoIGlzIG5ldmVyIGFkZGVkIHRvIHRoZSBjb250ZXh0O1xuICAgICAgIFVua25vd24oSW50ZXJuYWwpIGlzIHVzZWQgaW4gdGhpcyBjYXNlICovXG4gICAgbGV0IGN0eF90eXAgPVxuICAgICAgSW5mby5maXhlZF90eXBfcGF0KGN0eCwgbW9kZSwgQ29tbW9uKEp1c3QoVW5rbm93bihJbnRlcm5hbCkpKSk7XG4gICAgbGV0IGVudHJ5ID0gQ3R4LlZhckVudHJ5KHtuYW1lLCBpZDogVVBhdC5yZXBfaWQodXBhdCksIHR5cDogY3R4X3R5cH0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHVua25vd24pLCB+Y3R4PUN0eC5leHRlbmQoY3R4LCBlbnRyeSksIG0pO1xuICB8IFR1cGxlKHBzKSA9PlxuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfcHJvZChjdHgsIG1vZGUsIExpc3QubGVuZ3RoKHBzKSk7XG4gICAgbGV0IChjdHgsIHR5cywgbSkgPSBjdHhfZm9sZChjdHgsIG0sIHBzLCBtb2Rlcyk7XG4gICAgYWRkKH5zZWxmPUp1c3QoUHJvZCh0eXMpKSwgfmN0eCwgbSk7XG4gIHwgUGFyZW5zKHApID0+XG4gICAgbGV0IChwLCBtKSA9IGdvKH5jdHgsIH5tb2RlLCBwLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChwLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PiBhdG9taWMoU2VsZi5vZl9jdHIoY3R4LCBjdHIpKVxuICB8IEFwKGZuLCBhcmcpID0+XG4gICAgbGV0IGZuX21vZGUgPSBNb2RlLm9mX2FwKGN0eCwgbW9kZSwgVVBhdC5jdHJfbmFtZShmbikpO1xuICAgIGxldCAoZm4sIG0pID0gZ28ofmN0eCwgfm1vZGU9Zm5fbW9kZSwgZm4sIG0pO1xuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIGZuLnR5KTtcbiAgICBsZXQgKGFyZywgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEodHlfaW4pLCBhcmcsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jdHg9YXJnLmN0eCwgbSk7XG4gIHwgVHlwZUFubihwLCBhbm4pID0+XG4gICAgbGV0IChhbm4sIG0pID0gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCBhbm4sIG0pO1xuICAgIGxldCAocCwgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEoYW5uLnR5KSwgcCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoYW5uLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIH07XG59XG5hbmQgdXR5cF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eCxcbiAgICAgIH5leHBlY3RzPUluZm8uVHlwZUV4cGVjdGVkLFxuICAgICAgfmFuY2VzdG9ycyxcbiAgICAgIHtpZHMsIHRlcm19IGFzIHV0eXA6IFVUeXAudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnR5cCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3R5cCh+dXR5cCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpO1xuICAgIChpbmZvLCBhZGRfaW5mbyhpZHMsIEluZm9UeXAoaW5mbyksIG0pKTtcbiAgfTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVVHlwLnJlcF9pZCh1dHlwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCBnbycgPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgZ28gPSBnbycofmV4cGVjdHM9VHlwZUV4cGVjdGVkKTtcbiAgLy9UT0RPKGFuZHJldyk6IG1ha2UgdGhpcyByZXR1cm4gZnJlZSwgcmVwbGFjaW5nIFR5cC5mcmVlX3ZhcnNcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgTXVsdGlIb2xlKHRtcykgPT5cbiAgICBsZXQgKF8sIG0pID0gbXVsdGkofmN0eCwgfmFuY2VzdG9ycywgbSwgdG1zKTtcbiAgICBhZGQobSk7XG4gIHwgSW52YWxpZChfKVxuICB8IEVtcHR5SG9sZVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiBhZGQobSlcbiAgfCBWYXIoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PlxuICAgIC8qIE5hbWVzIGFyZSByZXNvbHZlZCBpbiBJbmZvLnN0YXR1c190eXAgKi9cbiAgICBhZGQobSlcbiAgfCBMaXN0KHQpXG4gIHwgUGFyZW5zKHQpID0+IGFkZChnbyh0LCBtKSB8PiBzbmQpXG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIGxldCBtID0gZ28odDEsIG0pIHw+IHNuZDtcbiAgICBsZXQgbSA9IGdvKHQyLCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pO1xuICB8IFR1cGxlKHRzKSA9PlxuICAgIGxldCBtID0gbWFwX20oZ28sIHRzLCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pO1xuICB8IEFwKHQxLCB0MikgPT5cbiAgICBsZXQgdHlfaW4gPSBVVHlwLnRvX3R5cChjdHgsIHQyKTtcbiAgICBsZXQgdDFfbW9kZTogSW5mby50eXBfZXhwZWN0cyA9XG4gICAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICAgIHwgVmFyaWFudEV4cGVjdGVkKG0sIHN1bV90eSkgPT5cbiAgICAgICAgQ29uc3RydWN0b3JFeHBlY3RlZChtLCBBcnJvdyh0eV9pbiwgc3VtX3R5KSlcbiAgICAgIHwgXyA9PiBDb25zdHJ1Y3RvckV4cGVjdGVkKFVuaXF1ZSwgQXJyb3codHlfaW4sIFVua25vd24oSW50ZXJuYWwpKSlcbiAgICAgIH07XG4gICAgbGV0IG0gPSBnbycofmV4cGVjdHM9dDFfbW9kZSwgdDEsIG0pIHw+IHNuZDtcbiAgICBsZXQgbSA9IGdvJyh+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQsIHQyLCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pO1xuICB8IFN1bSh2YXJpYW50cykgPT5cbiAgICBsZXQgdHlfc3VtID0gVVR5cC50b190eXAoY3R4LCB1dHlwKTtcbiAgICBsZXQgKG0sIF8pID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICB2YXJpYW50X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIH50eV9zdW0pLFxuICAgICAgICAobSwgW10pLFxuICAgICAgICB2YXJpYW50cyxcbiAgICAgICk7XG4gICAgYWRkKG0pO1xuICB9O1xufVxuYW5kIHV0cGF0X3RvX2luZm9fbWFwID1cbiAgICAofmN0eCwgfmFuY2VzdG9ycywge2lkcywgdGVybX0gYXMgdXRwYXQ6IFVUUGF0LnQsIG06IE1hcC50KVxuICAgIDogKEluZm8udHBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3RwYXQofnV0cGF0LCB+Y3R4LCB+YW5jZXN0b3JzKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvVFBhdChpbmZvKSwgbSkpO1xuICB9O1xuICBsZXQgYW5jZXN0b3JzID0gW1VUUGF0LnJlcF9pZCh1dHBhdCldIEAgYW5jZXN0b3JzO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoXywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZChtKTtcbiAgfCBJbnZhbGlkKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVmFyKF8pID0+IGFkZChtKVxuICB9O1xufVxuYW5kIHZhcmlhbnRfdG9faW5mb19tYXAgPVxuICAgICh+Y3R4LCB+YW5jZXN0b3JzLCB+dHlfc3VtLCAobSwgY3RycyksIHV0eTogVVR5cC52YXJpYW50KSA9PiB7XG4gIGxldCBnbyA9IGV4cGVjdHMgPT4gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cyk7XG4gIHN3aXRjaCAodXR5KSB7XG4gIHwgQmFkRW50cnkodXR5KSA9PlxuICAgIGxldCBtID0gZ28oVmFyaWFudEV4cGVjdGVkKFVuaXF1ZSwgdHlfc3VtKSwgdXR5LCBtKSB8PiBzbmQ7XG4gICAgKG0sIGN0cnMpO1xuICB8IFZhcmlhbnQoY3RyLCBpZHMsIHBhcmFtKSA9PlxuICAgIGxldCBtID1cbiAgICAgIGdvKFxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKFxuICAgICAgICAgIExpc3QubWVtKGN0ciwgY3RycykgPyBEdXBsaWNhdGUgOiBVbmlxdWUsXG4gICAgICAgICAgdHlfc3VtLFxuICAgICAgICApLFxuICAgICAgICB7dGVybTogQ29uc3RydWN0b3IoY3RyKSwgaWRzfSxcbiAgICAgICAgbSxcbiAgICAgIClcbiAgICAgIHw+IHNuZDtcbiAgICBsZXQgbSA9XG4gICAgICBzd2l0Y2ggKHBhcmFtKSB7XG4gICAgICB8IFNvbWUocGFyYW1fdHkpID0+IGdvKFR5cGVFeHBlY3RlZCwgcGFyYW1fdHksIG0pIHw+IHNuZFxuICAgICAgfCBOb25lID0+IG1cbiAgICAgIH07XG4gICAgKG0sIFtjdHIsIC4uLmN0cnNdKTtcbiAgfTtcbn07XG5cbmxldCBjb2xsZWN0X2Vycm9ycyA9IChtYXA6IE1hcC50KTogbGlzdCgoSWQudCwgSW5mby5lcnJvcikpID0+XG4gIElkLk1hcC5mb2xkKFxuICAgIChpZCwgaW5mbzogSW5mby50LCBhY2MpID0+XG4gICAgICBPcHRpb24udG9fbGlzdChJbmZvLmVycm9yX29mKGluZm8pIHw+IE9wdGlvbi5tYXAoeCA9PiAoaWQsIHgpKSkgQCBhY2MsXG4gICAgbWFwLFxuICAgIFtdLFxuICApO1xuIiwiLyogY2xvc2VkIHN1YnN0aXR1dGlvbiBbZDEveF1kMiAqL1xubGV0IHJlYyBzdWJzdF92YXIgPSAoZDE6IERIRXhwLnQsIHg6IFZhci50LCBkMjogREhFeHAudCk6IERIRXhwLnQgPT5cbiAgc3dpdGNoIChkMikge1xuICB8IEJvdW5kVmFyKHkpID0+XG4gICAgaWYgKFZhci5lcSh4LCB5KSkge1xuICAgICAgZDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGQyO1xuICAgIH1cbiAgfCBGcmVlVmFyKF8pID0+IGQyXG4gIHwgSW52YWxpZFRleHQoXykgPT4gZDJcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKF8pID0+IGQyXG4gIHwgU2VxdWVuY2UoZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgIFNlcXVlbmNlKGQzLCBkNCk7XG4gIHwgRmlsdGVyKGZpbHRlciwgZGJvZHkpID0+XG4gICAgbGV0IGRib2R5ID0gc3Vic3RfdmFyKGQxLCB4LCBkYm9keSk7XG4gICAgbGV0IGZpbHRlciA9IHN1YnN0X3Zhcl9maWx0ZXIoZDEsIHgsIGZpbHRlcik7XG4gICAgRmlsdGVyKGZpbHRlciwgZGJvZHkpO1xuICB8IExldChkcCwgZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9XG4gICAgICBpZiAoREhQYXQuYmluZHNfdmFyKHgsIGRwKSkge1xuICAgICAgICBkNDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgICAgfTtcbiAgICBMZXQoZHAsIGQzLCBkNCk7XG4gIHwgRml4Rih5LCB0eSwgZDMpID0+XG4gICAgbGV0IGQzID1cbiAgICAgIGlmIChWYXIuZXEoeCwgeSkpIHtcbiAgICAgICAgZDM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICAgIH07XG4gICAgRml4Rih5LCB0eSwgZDMpO1xuICB8IEZ1bihkcCwgdHksIGQzLCBzKSA9PlxuICAgIGlmIChESFBhdC5iaW5kc192YXIoeCwgZHApKSB7XG4gICAgICBGdW4oZHAsIHR5LCBkMywgcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgICAgRnVuKGRwLCB0eSwgZDMsIHMpO1xuICAgIH1cbiAgfCBDbG9zdXJlKGVudiwgZDMpID0+XG4gICAgLyogQ2xvc3VyZSBzaG91bGRuJ3QgYXBwZWFyIGR1cmluZyBzdWJzdGl0dXRpb24gKHdoaWNoXG4gICAgICAgb25seSBpcyBjYWxsZWQgZnJvbSBlbGFib3JhdGlvbiBjdXJyZW50bHkpICovXG4gICAgbGV0IGVudicgPSBzdWJzdF92YXJfZW52KGQxLCB4LCBlbnYpO1xuICAgIGxldCBkMycgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBDbG9zdXJlKGVudicsIGQzJyk7XG4gIHwgQXAoZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgIEFwKGQzLCBkNCk7XG4gIHwgQXBCdWlsdGluKGlkZW50LCBkMSkgPT5cbiAgICBsZXQgZDIgPSBzdWJzdF92YXIoZDEsIHgsIGQxKTtcbiAgICBBcEJ1aWx0aW4oaWRlbnQsIGQyKTtcbiAgfCBCdWlsdGluRnVuKGlkZW50KSA9PiBCdWlsdGluRnVuKGlkZW50KVxuICB8IFRlc3QoaWQsIGQzKSA9PiBUZXN0KGlkLCBzdWJzdF92YXIoZDEsIHgsIGQzKSlcbiAgfCBCb29sTGl0KF8pXG4gIHwgSW50TGl0KF8pXG4gIHwgRmxvYXRMaXQoXylcbiAgfCBTdHJpbmdMaXQoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBkMlxuICB8IExpc3RMaXQoYSwgYiwgYywgZHMpID0+XG4gICAgTGlzdExpdChhLCBiLCBjLCBMaXN0Lm1hcChzdWJzdF92YXIoZDEsIHgpLCBkcykpXG4gIHwgQ29ucyhkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgQ29ucyhkMywgZDQpO1xuICB8IExpc3RDb25jYXQoZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgIExpc3RDb25jYXQoZDMsIGQ0KTtcbiAgfCBUdXBsZShkcykgPT4gVHVwbGUoTGlzdC5tYXAoc3Vic3RfdmFyKGQxLCB4KSwgZHMpKVxuICB8IFByaihkLCBuKSA9PiBQcmooc3Vic3RfdmFyKGQxLCB4LCBkKSwgbilcbiAgfCBCaW5Cb29sT3Aob3AsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIoZDEsIHgsIGQ0KTtcbiAgICBCaW5Cb29sT3Aob3AsIGQzLCBkNCk7XG4gIHwgQmluSW50T3Aob3AsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIoZDEsIHgsIGQ0KTtcbiAgICBCaW5JbnRPcChvcCwgZDMsIGQ0KTtcbiAgfCBCaW5GbG9hdE9wKG9wLCBkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgQmluRmxvYXRPcChvcCwgZDMsIGQ0KTtcbiAgfCBCaW5TdHJpbmdPcChvcCwgZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgIEJpblN0cmluZ09wKG9wLCBkMywgZDQpO1xuICB8IENvbnNpc3RlbnRDYXNlKENhc2UoZDMsIHJ1bGVzLCBuKSkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBsZXQgcnVsZXMgPSBzdWJzdF92YXJfcnVsZXMoZDEsIHgsIHJ1bGVzKTtcbiAgICBDb25zaXN0ZW50Q2FzZShDYXNlKGQzLCBydWxlcywgbikpO1xuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2UoZDMsIHJ1bGVzLCBuKSkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBsZXQgcnVsZXMgPSBzdWJzdF92YXJfcnVsZXMoZDEsIHgsIHJ1bGVzKTtcbiAgICBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKGQzLCBydWxlcywgbikpO1xuICB8IEVtcHR5SG9sZSh1LCBpKSA9PiBFbXB0eUhvbGUodSwgaSlcbiAgfCBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBkMykgPT5cbiAgICBsZXQgZDMnID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgaSwgZDMnKTtcbiAgfCBDYXN0KGQsIHR5MSwgdHkyKSA9PlxuICAgIGxldCBkJyA9IHN1YnN0X3ZhcihkMSwgeCwgZCk7XG4gICAgQ2FzdChkJywgdHkxLCB0eTIpO1xuICB8IEZhaWxlZENhc3QoZCwgdHkxLCB0eTIpID0+XG4gICAgbGV0IGQnID0gc3Vic3RfdmFyKGQxLCB4LCBkKTtcbiAgICBGYWlsZWRDYXN0KGQnLCB0eTEsIHR5Mik7XG4gIHwgSW52YWxpZE9wZXJhdGlvbihkLCBlcnIpID0+XG4gICAgbGV0IGQnID0gc3Vic3RfdmFyKGQxLCB4LCBkKTtcbiAgICBJbnZhbGlkT3BlcmF0aW9uKGQnLCBlcnIpO1xuICB8IElmVGhlbkVsc2UoZDMsIGQ0LCBkNSwgZDYpID0+XG4gICAgbGV0IGQ0JyA9IHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgIGxldCBkNScgPSBzdWJzdF92YXIoZDEsIHgsIGQ1KTtcbiAgICBsZXQgZDYnID0gc3Vic3RfdmFyKGQxLCB4LCBkNik7XG4gICAgSWZUaGVuRWxzZShkMywgZDQnLCBkNScsIGQ2Jyk7XG4gIH1cblxuYW5kIHN1YnN0X3Zhcl9ydWxlcyA9XG4gICAgKGQxOiBESEV4cC50LCB4OiBWYXIudCwgcnVsZXM6IGxpc3QoREhFeHAucnVsZSkpOiBsaXN0KERIRXhwLnJ1bGUpID0+XG4gIHJ1bGVzXG4gIHw+IExpc3QubWFwKChyOiBESEV4cC5ydWxlKSA9PlxuICAgICAgIHN3aXRjaCAocikge1xuICAgICAgIHwgUnVsZShkcCwgZDIpID0+XG4gICAgICAgICBpZiAoREhQYXQuYmluZHNfdmFyKHgsIGRwKSkge1xuICAgICAgICAgICByO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgUnVsZShkcCwgc3Vic3RfdmFyKGQxLCB4LCBkMikpO1xuICAgICAgICAgfVxuICAgICAgIH1cbiAgICAgKVxuXG5hbmQgc3Vic3RfdmFyX2VudiA9XG4gICAgKGQxOiBESEV4cC50LCB4OiBWYXIudCwgZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCk6IENsb3N1cmVFbnZpcm9ubWVudC50ID0+IHtcbiAgbGV0IGlkID0gZW52IHw+IENsb3N1cmVFbnZpcm9ubWVudC5pZF9vZjtcbiAgbGV0IG1hcCA9XG4gICAgZW52XG4gICAgfD4gQ2xvc3VyZUVudmlyb25tZW50Lm1hcF9vZlxuICAgIHw+IEVudmlyb25tZW50LmZvbGRvKFxuICAgICAgICAgKCh4JywgZCc6IERIRXhwLnQpLCBtYXApID0+IHtcbiAgICAgICAgICAgbGV0IGQnID1cbiAgICAgICAgICAgICBzd2l0Y2ggKGQnKSB7XG4gICAgICAgICAgICAgLyogU3Vic3RpdHV0ZSBlYWNoIHByZXZpb3VzbHkgc3Vic3RpdHV0ZWQgYmluZGluZyBpbnRvIHRoZVxuICAgICAgICAgICAgICAqIGZpeHBvaW50LiAqL1xuICAgICAgICAgICAgIHwgRml4RihfKSBhcyBkID0+XG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIHw+IEVudmlyb25tZW50LmZvbGRvKFxuICAgICAgICAgICAgICAgICAgICAoKHgnJywgZCcnKSwgZCkgPT4gc3Vic3RfdmFyKGQnJywgeCcnLCBkKSxcbiAgICAgICAgICAgICAgICAgICAgZCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IGQgPT4gZFxuICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgLyogU3Vic3RpdHV0ZS4gKi9cbiAgICAgICAgICAgbGV0IGQnID0gc3Vic3RfdmFyKGQxLCB4LCBkJyk7XG4gICAgICAgICAgIEVudmlyb25tZW50LmV4dGVuZChtYXAsICh4JywgZCcpKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBFbnZpcm9ubWVudC5lbXB0eSxcbiAgICAgICApO1xuXG4gIENsb3N1cmVFbnZpcm9ubWVudC53cmFwKGlkLCBtYXApO1xufVxuXG5hbmQgc3Vic3RfdmFyX2ZpbHRlciA9XG4gICAgKGQxOiBESEV4cC50LCB4OiBWYXIudCwgZmx0OiBESC5ESEZpbHRlci50KTogREguREhGaWx0ZXIudCA9PiB7XG4gIGZsdCB8PiBESC5ESEZpbHRlci5tYXAoc3Vic3RfdmFyKGQxLCB4KSk7XG59O1xuXG5sZXQgc3Vic3QgPSAoZW52OiBFbnZpcm9ubWVudC50LCBkOiBESEV4cC50KTogREhFeHAudCA9PlxuICBlbnZcbiAgfD4gRW52aXJvbm1lbnQuZm9sZG8oXG4gICAgICAgKHhkOiAoVmFyLnQsIERIRXhwLnQpLCBkMikgPT4ge1xuICAgICAgICAgbGV0ICh4LCBkMSkgPSB4ZDtcbiAgICAgICAgIHN1YnN0X3ZhcihkMSwgeCwgZDIpO1xuICAgICAgIH0sXG4gICAgICAgZCxcbiAgICAgKTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbm1vZHVsZSBFbGFib3JhdGlvblJlc3VsdCA9IHtcbiAgW0BkZXJpdmluZyBzZXhwXVxuICB0eXBlIHQgPVxuICAgIHwgRWxhYm9yYXRlcyhESEV4cC50LCBUeXAudCwgRGVsdGEudClcbiAgICB8IERvZXNOb3RFbGFib3JhdGU7XG59O1xuXG5sZXQgZXhwX2Jpbm9wX29mOiBUZXJtLlVFeHAub3BfYmluID0+IChUeXAudCwgKF8sIF8pID0+IERIRXhwLnQpID1cbiAgZnVuXG4gIHwgSW50KG9wKSA9PiAoSW50LCAoKGUxLCBlMikgPT4gQmluSW50T3Aob3AsIGUxLCBlMikpKVxuICB8IEZsb2F0KG9wKSA9PiAoRmxvYXQsICgoZTEsIGUyKSA9PiBCaW5GbG9hdE9wKG9wLCBlMSwgZTIpKSlcbiAgfCBCb29sKG9wKSA9PiAoQm9vbCwgKChlMSwgZTIpID0+IEJpbkJvb2xPcChvcCwgZTEsIGUyKSkpXG4gIHwgU3RyaW5nKG9wKSA9PiAoU3RyaW5nLCAoKGUxLCBlMikgPT4gQmluU3RyaW5nT3Aob3AsIGUxLCBlMikpKTtcblxubGV0IGZpeGVkX2V4cF90eXAgPSAobTogU3RhdGljcy5NYXAudCwgZTogVGVybS5VRXhwLnQpOiBvcHRpb24oVHlwLnQpID0+XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KFRlcm0uVUV4cC5yZXBfaWQoZSksIG0pKSB7XG4gIHwgU29tZShJbmZvRXhwKHt0eSwgX30pKSA9PiBTb21lKHR5KVxuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgZml4ZWRfcGF0X3R5cCA9IChtOiBTdGF0aWNzLk1hcC50LCBwOiBUZXJtLlVQYXQudCk6IG9wdGlvbihUeXAudCkgPT5cbiAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoVGVybS5VUGF0LnJlcF9pZChwKSwgbSkpIHtcbiAgfCBTb21lKEluZm9QYXQoe3R5LCBffSkpID0+IFNvbWUodHkpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCBjYXN0ID0gKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZl90eTogVHlwLnQsIGQ6IERIRXhwLnQpID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5biA9PiBkXG4gIHwgU3luRnVuID0+XG4gICAgc3dpdGNoIChzZWxmX3R5KSB7XG4gICAgfCBVbmtub3duKHByb3YpID0+XG4gICAgICBESEV4cC5jYXN0KGQsIFVua25vd24ocHJvdiksIEFycm93KFVua25vd24ocHJvdiksIFVua25vd24ocHJvdikpKVxuICAgIHwgQXJyb3coXykgPT4gZFxuICAgIHwgXyA9PiBmYWlsd2l0aChcIkVsYWJvcmF0b3Iud3JhcDogU3luRnVuIG5vbi1hcnJvdy10eXBlXCIpXG4gICAgfVxuICB8IEFuYShhbmFfdHkpID0+XG4gICAgbGV0IGFuYV90eSA9IFR5cC5ub3JtYWxpemUoY3R4LCBhbmFfdHkpO1xuICAgIC8qIEZvcm1zIHdpdGggc3BlY2lhbCBhbmEgcnVsZXMgZ2V0IGNhc3QgZnJvbSB0aGVpciBhcHByb3ByaWF0ZSBNYXRjaGVkIHR5cGVzICovXG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgfCBDb25zKF8pID0+XG4gICAgICBzd2l0Y2ggKGFuYV90eSkge1xuICAgICAgfCBVbmtub3duKHByb3YpID0+IERIRXhwLmNhc3QoZCwgTGlzdChVbmtub3duKHByb3YpKSwgVW5rbm93bihwcm92KSlcbiAgICAgIHwgXyA9PiBkXG4gICAgICB9XG4gICAgfCBGdW4oXykgPT5cbiAgICAgIC8qIFNlZSByZWdyZXNzaW9uIHRlc3RzIGluIERvY3VtZW50YXRpb24vRHluYW1pY3MgKi9cbiAgICAgIGxldCAoXywgYW5hX291dCkgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIGFuYV90eSk7XG4gICAgICBsZXQgKHNlbGZfaW4sIF8pID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBzZWxmX3R5KTtcbiAgICAgIERIRXhwLmNhc3QoZCwgQXJyb3coc2VsZl9pbiwgYW5hX291dCksIGFuYV90eSk7XG4gICAgfCBUdXBsZShkcykgPT5cbiAgICAgIHN3aXRjaCAoYW5hX3R5KSB7XG4gICAgICB8IFVua25vd24ocHJvdikgPT5cbiAgICAgICAgbGV0IHVzID0gTGlzdC5pbml0KExpc3QubGVuZ3RoKGRzKSwgXyA9PiBUeXAuVW5rbm93bihwcm92KSk7XG4gICAgICAgIERIRXhwLmNhc3QoZCwgUHJvZCh1cyksIFVua25vd24ocHJvdikpO1xuICAgICAgfCBfID0+IGRcbiAgICAgIH1cbiAgICB8IEFwKE5vbkVtcHR5SG9sZShfLCBfLCBfLCBDb25zdHJ1Y3RvcihfKSksIF8pXG4gICAgfCBBcChDb25zdHJ1Y3RvcihfKSwgXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+XG4gICAgICBzd2l0Y2ggKGFuYV90eSwgc2VsZl90eSkge1xuICAgICAgfCAoVW5rbm93bihwcm92KSwgUmVjKF8sIFN1bShfKSkpXG4gICAgICB8IChVbmtub3duKHByb3YpLCBTdW0oXykpID0+IERIRXhwLmNhc3QoZCwgc2VsZl90eSwgVW5rbm93bihwcm92KSlcbiAgICAgIHwgXyA9PiBkXG4gICAgICB9XG4gICAgLyogRm9ybXMgd2l0aCBzcGVjaWFsIGFuYSBydWxlcyBidXQgbm8gcGFydGljdWxhciB0eXBpbmcgcmVxdWlyZW1lbnRzICovXG4gICAgfCBDb25zaXN0ZW50Q2FzZShfKVxuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXylcbiAgICB8IElmVGhlbkVsc2UoXylcbiAgICB8IFNlcXVlbmNlKF8pXG4gICAgfCBMZXQoXylcbiAgICB8IEZpeEYoXykgPT4gZFxuICAgIC8qIEhvbGUtbGlrZSBmb3JtczogRG9uJ3QgY2FzdCAqL1xuICAgIHwgSW52YWxpZFRleHQoXylcbiAgICB8IEZyZWVWYXIoXylcbiAgICB8IEV4cGFuZGluZ0tleXdvcmQoXylcbiAgICB8IEVtcHR5SG9sZShfKVxuICAgIHwgTm9uRW1wdHlIb2xlKF8pID0+IGRcbiAgICAvKiBESEV4cC1zcGVjaWZpYyBmb3JtczogRG9uJ3QgY2FzdCAqL1xuICAgIHwgQ2FzdChfKVxuICAgIHwgQ2xvc3VyZShfKVxuICAgIHwgRmlsdGVyKF8pXG4gICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pID0+IGRcbiAgICAvKiBOb3JtYWwgY2FzZXM6IHdyYXAgKi9cbiAgICB8IEJvdW5kVmFyKF8pXG4gICAgfCBBcChfKVxuICAgIHwgQXBCdWlsdGluKF8pXG4gICAgfCBCdWlsdGluRnVuKF8pXG4gICAgfCBQcmooXylcbiAgICB8IEJvb2xMaXQoXylcbiAgICB8IEludExpdChfKVxuICAgIHwgRmxvYXRMaXQoXylcbiAgICB8IFN0cmluZ0xpdChfKVxuICAgIHwgQmluQm9vbE9wKF8pXG4gICAgfCBCaW5JbnRPcChfKVxuICAgIHwgQmluRmxvYXRPcChfKVxuICAgIHwgQmluU3RyaW5nT3AoXylcbiAgICB8IFRlc3QoXykgPT4gREhFeHAuY2FzdChkLCBzZWxmX3R5LCBhbmFfdHkpXG4gICAgfTtcbiAgfTtcblxuLyogSGFuZGxlcyBjYXN0IGluc2VydGlvbiBhbmQgbm9uLWVtcHR5LWhvbGUgd3JhcHBpbmdcbiAgIGZvciBlbGFib3JhdGVkIGV4cHJlc3Npb25zICovXG5sZXQgd3JhcCA9IChjdHg6IEN0eC50LCB1OiBJZC50LCBtb2RlOiBNb2RlLnQsIHNlbGYsIGQ6IERIRXhwLnQpOiBESEV4cC50ID0+XG4gIHN3aXRjaCAoSW5mby5zdGF0dXNfZXhwKGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgfCBOb3RJbkhvbGUoXykgPT5cbiAgICBsZXQgc2VsZl90eSA9XG4gICAgICBzd2l0Y2ggKFNlbGYudHlwX29mX2V4cChjdHgsIHNlbGYpKSB7XG4gICAgICB8IFNvbWUoc2VsZl90eSkgPT4gVHlwLm5vcm1hbGl6ZShjdHgsIHNlbGZfdHkpXG4gICAgICB8IE5vbmUgPT4gVW5rbm93bihJbnRlcm5hbClcbiAgICAgIH07XG4gICAgY2FzdChjdHgsIG1vZGUsIHNlbGZfdHksIGQpO1xuICB8IEluSG9sZShfKSA9PiBOb25FbXB0eUhvbGUoVHlwZUluY29uc2lzdGVudCwgdSwgMCwgZClcbiAgfTtcblxubGV0IHJlYyBkaGV4cF9vZl91ZXhwID1cbiAgICAgICAgKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFRlcm0uVUV4cC50LCBpbl9maWx0ZXI6IGJvb2wpXG4gICAgICAgIDogb3B0aW9uKERIRXhwLnQpID0+IHtcbiAgbGV0IGRoZXhwX29mX3VleHAgPSAofmluX2ZpbHRlcj1pbl9maWx0ZXIsIG0sIHVleHApID0+IHtcbiAgICBkaGV4cF9vZl91ZXhwKG0sIHVleHAsIGluX2ZpbHRlcik7XG4gIH07XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KFRlcm0uVUV4cC5yZXBfaWQodWV4cCksIG0pKSB7XG4gIHwgU29tZShJbmZvRXhwKHttb2RlLCBzZWxmLCBjdHgsIF99KSkgPT5cbiAgICBsZXQgZXJyX3N0YXR1cyA9IEluZm8uc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpO1xuICAgIGxldCBpZCA9IFRlcm0uVUV4cC5yZXBfaWQodWV4cCk7IC8qIE5PVEU6IHVzaW5nIHRlcm0gdWlkcyBmb3IgaG9sZSBpZHMgKi9cbiAgICBsZXQrIGQ6IERIRXhwLnQgPVxuICAgICAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgICAgIHwgSW52YWxpZCh0KSA9PiBTb21lKERIRXhwLkludmFsaWRUZXh0KGlkLCAwLCB0KSlcbiAgICAgIHwgRW1wdHlIb2xlID0+IFNvbWUoREhFeHAuRW1wdHlIb2xlKGlkLCAwKSlcbiAgICAgIHwgTXVsdGlIb2xlKF90bXMpID0+XG4gICAgICAgIC8qIFRPRE86IGFkZCBhIGRoZXhwIGNhc2UgYW5kIGV2YWwgbG9naWMgZm9yIG11bHRpaG9sZXMuXG4gICAgICAgICAgIE1ha2Ugc3VyZSBuZXcgZGhleHAgZm9ybSBpcyBwcm9wZXJseSBjb25zaWRlcmVkIEluZGV0XG4gICAgICAgICAgIHRvIGF2b2lkIGNhc3RpbmcgaXNzdWVzLiAqL1xuICAgICAgICBTb21lKEVtcHR5SG9sZShpZCwgMCkpXG4gICAgICB8IFRyaXYgPT4gU29tZShUdXBsZShbXSkpXG4gICAgICB8IEJvb2woYikgPT4gU29tZShCb29sTGl0KGIpKVxuICAgICAgfCBJbnQobikgPT4gU29tZShJbnRMaXQobikpXG4gICAgICB8IEZsb2F0KG4pID0+IFNvbWUoRmxvYXRMaXQobikpXG4gICAgICB8IFN0cmluZyhzKSA9PiBTb21lKFN0cmluZ0xpdChzKSlcbiAgICAgIHwgTGlzdExpdChlcykgPT5cbiAgICAgICAgbGV0KiBkcyA9IGVzIHw+IExpc3QubWFwKGRoZXhwX29mX3VleHAobSkpIHw+IE9wdFV0aWwuc2VxdWVuY2U7XG4gICAgICAgIGxldCsgdHkgPSBmaXhlZF9leHBfdHlwKG0sIHVleHApO1xuICAgICAgICBsZXQgdHkgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpO1xuICAgICAgICBESEV4cC5MaXN0TGl0KGlkLCAwLCB0eSwgZHMpO1xuICAgICAgfCBGdW4ocCwgYm9keSkgPT5cbiAgICAgICAgbGV0KiBkcCA9IGRocGF0X29mX3VwYXQobSwgcCk7XG4gICAgICAgIGxldCogZDEgPSBkaGV4cF9vZl91ZXhwKG0sIGJvZHkpO1xuICAgICAgICBsZXQrIHR5ID0gZml4ZWRfcGF0X3R5cChtLCBwKTtcbiAgICAgICAgREhFeHAuRnVuKGRwLCB0eSwgZDEsIE5vbmUpO1xuICAgICAgfCBUdXBsZShlcykgPT5cbiAgICAgICAgbGV0KyBkcyA9IGVzIHw+IExpc3QubWFwKGRoZXhwX29mX3VleHAobSkpIHw+IE9wdFV0aWwuc2VxdWVuY2U7XG4gICAgICAgIERIRXhwLlR1cGxlKGRzKTtcbiAgICAgIHwgQ29ucyhlMSwgZTIpID0+XG4gICAgICAgIGxldCogZGMxID0gZGhleHBfb2ZfdWV4cChtLCBlMSk7XG4gICAgICAgIGxldCsgZGMyID0gZGhleHBfb2ZfdWV4cChtLCBlMik7XG4gICAgICAgIERIRXhwLkNvbnMoZGMxLCBkYzIpO1xuICAgICAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAgICAgbGV0KiBkYzEgPSBkaGV4cF9vZl91ZXhwKG0sIGUxKTtcbiAgICAgICAgbGV0KyBkYzIgPSBkaGV4cF9vZl91ZXhwKG0sIGUyKTtcbiAgICAgICAgREhFeHAuTGlzdENvbmNhdChkYzEsIGRjMik7XG4gICAgICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgPT5cbiAgICAgICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICAgICAgfCBWYXIoXCJlXCIpIHdoZW4gaW5fZmlsdGVyID0+IFNvbWUoQ29uc3RydWN0b3IoXCIkZVwiKSlcbiAgICAgICAgfCBWYXIoXCJ2XCIpIHdoZW4gaW5fZmlsdGVyID0+IFNvbWUoQ29uc3RydWN0b3IoXCIkdlwiKSlcbiAgICAgICAgfCBfID0+IFNvbWUoREhFeHAuRW1wdHlIb2xlKGlkLCAwKSlcbiAgICAgICAgfVxuICAgICAgfCBVbk9wKEludChNaW51cyksIGUpID0+XG4gICAgICAgIGxldCsgZGMgPSBkaGV4cF9vZl91ZXhwKG0sIGUpO1xuICAgICAgICBESEV4cC5CaW5JbnRPcChNaW51cywgSW50TGl0KDApLCBkYyk7XG4gICAgICB8IFVuT3AoQm9vbChOb3QpLCBlKSA9PlxuICAgICAgICBsZXQrIGRfc2NydXQgPSBkaGV4cF9vZl91ZXhwKG0sIGUpO1xuICAgICAgICBsZXQgZF9ydWxlcyA9XG4gICAgICAgICAgREhFeHAuW1xuICAgICAgICAgICAgUnVsZShCb29sTGl0KHRydWUpLCBCb29sTGl0KGZhbHNlKSksXG4gICAgICAgICAgICBSdWxlKEJvb2xMaXQoZmFsc2UpLCBCb29sTGl0KHRydWUpKSxcbiAgICAgICAgICBdO1xuICAgICAgICBsZXQgZCA9IERIRXhwLkNvbnNpc3RlbnRDYXNlKERIRXhwLkNhc2UoZF9zY3J1dCwgZF9ydWxlcywgMCkpO1xuICAgICAgICAvKiBNYW51YWxseSBjb25zdHJ1Y3QgY2FzdCAoY2FzZSBpcyBub3Qgb3RoZXJ3aXNlIGNhc3QpICovXG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICB8IEFuYShhbmFfdHkpID0+IERIRXhwLmNhc3QoZCwgQm9vbCwgYW5hX3R5KVxuICAgICAgICB8IF8gPT4gZFxuICAgICAgICB9O1xuICAgICAgfCBCaW5PcChvcCwgZTEsIGUyKSA9PlxuICAgICAgICBsZXQgKF8sIGNvbnMpID0gZXhwX2Jpbm9wX29mKG9wKTtcbiAgICAgICAgbGV0KiBkYzEgPSBkaGV4cF9vZl91ZXhwKG0sIGUxKTtcbiAgICAgICAgbGV0KyBkYzIgPSBkaGV4cF9vZl91ZXhwKG0sIGUyKTtcbiAgICAgICAgY29ucyhkYzEsIGRjMik7XG4gICAgICB8IFBhcmVucyhlKSA9PiBkaGV4cF9vZl91ZXhwKG0sIGUpXG4gICAgICB8IFNlcShlMSwgZTIpID0+XG4gICAgICAgIGxldCogZDEgPSBkaGV4cF9vZl91ZXhwKG0sIGUxKTtcbiAgICAgICAgbGV0KyBkMiA9IGRoZXhwX29mX3VleHAobSwgZTIpO1xuICAgICAgICBESEV4cC5TZXF1ZW5jZShkMSwgZDIpO1xuICAgICAgfCBUZXN0KHRlc3QpID0+XG4gICAgICAgIGxldCsgZHRlc3QgPSBkaGV4cF9vZl91ZXhwKG0sIHRlc3QpO1xuICAgICAgICBESEV4cC5UZXN0KGlkLCBkdGVzdCk7XG4gICAgICB8IEZpbHRlcihhY3QsIGNvbmQsIGJvZHkpID0+XG4gICAgICAgIGxldCogZGNvbmQgPSBkaGV4cF9vZl91ZXhwKH5pbl9maWx0ZXI9dHJ1ZSwgbSwgY29uZCk7XG4gICAgICAgIGxldCsgZGJvZHkgPSBkaGV4cF9vZl91ZXhwKG0sIGJvZHkpO1xuICAgICAgICBESEV4cC5GaWx0ZXIoRmlsdGVyKEZpbHRlci5tayhkY29uZCwgYWN0KSksIGRib2R5KTtcbiAgICAgIHwgVmFyKG5hbWUpID0+XG4gICAgICAgIHN3aXRjaCAoZXJyX3N0YXR1cykge1xuICAgICAgICB8IEluSG9sZShGcmVlVmFyaWFibGUoXykpID0+IFNvbWUoRnJlZVZhcihpZCwgMCwgbmFtZSkpXG4gICAgICAgIHwgXyA9PiBTb21lKEJvdW5kVmFyKG5hbWUpKVxuICAgICAgICB9XG4gICAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+XG4gICAgICAgIHN3aXRjaCAoZXJyX3N0YXR1cykge1xuICAgICAgICB8IEluSG9sZShDb21tb24oTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihfKSkpKSA9PlxuICAgICAgICAgIFNvbWUoRnJlZVZhcihpZCwgMCwgbmFtZSkpXG4gICAgICAgIHwgXyA9PiBTb21lKENvbnN0cnVjdG9yKG5hbWUpKVxuICAgICAgICB9XG4gICAgICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgICAgIGxldCBhZGRfbmFtZTogKG9wdGlvbihzdHJpbmcpLCBESEV4cC50KSA9PiBESEV4cC50ID0gKFxuICAgICAgICAgIG5hbWUgPT5cbiAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgfCBGdW4ocCwgdHksIGUsIF8pID0+IERIRXhwLkZ1bihwLCB0eSwgZSwgbmFtZSlcbiAgICAgICAgICAgIHwgZCA9PiBkXG4gICAgICAgICk7XG4gICAgICAgIGxldCogZHAgPSBkaHBhdF9vZl91cGF0KG0sIHApO1xuICAgICAgICBsZXQqIGRkZWYgPSBkaGV4cF9vZl91ZXhwKG0sIGRlZik7XG4gICAgICAgIGxldCogZGJvZHkgPSBkaGV4cF9vZl91ZXhwKG0sIGJvZHkpO1xuICAgICAgICBsZXQrIHR5ID0gZml4ZWRfcGF0X3R5cChtLCBwKTtcbiAgICAgICAgc3dpdGNoIChUZXJtLlVQYXQuZ2V0X3JlY3Vyc2l2ZV9iaW5kaW5ncyhwKSkge1xuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAvKiBub3QgcmVjdXJzaXZlICovXG4gICAgICAgICAgREhFeHAuTGV0KGRwLCBhZGRfbmFtZShUZXJtLlVQYXQuZ2V0X3ZhcihwKSwgZGRlZiksIGRib2R5KVxuICAgICAgICB8IFNvbWUoW2ZdKSA9PlxuICAgICAgICAgIC8qIHNpbXBsZSByZWN1cnNpb24gKi9cbiAgICAgICAgICBMZXQoZHAsIEZpeEYoZiwgdHksIGFkZF9uYW1lKFNvbWUoZiksIGRkZWYpKSwgZGJvZHkpXG4gICAgICAgIHwgU29tZShmcykgPT5cbiAgICAgICAgICAvKiBtdXR1YWwgcmVjdXJzaW9uICovXG4gICAgICAgICAgbGV0IGRkZWYgPVxuICAgICAgICAgICAgc3dpdGNoIChkZGVmKSB7XG4gICAgICAgICAgICB8IFR1cGxlKGEpID0+XG4gICAgICAgICAgICAgIERIRXhwLlR1cGxlKExpc3QubWFwMihzID0+IGFkZF9uYW1lKFNvbWUocykpLCBmcywgYSkpXG4gICAgICAgICAgICB8IF8gPT4gZGRlZlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgdW5pcV9pZCA9IExpc3QubnRoKGRlZi5pZHMsIDApO1xuICAgICAgICAgIGxldCBzZWxmX2lkID0gXCJfX211dHVhbF9fXCIgKysgSWQudG9fc3RyaW5nKHVuaXFfaWQpO1xuICAgICAgICAgIGxldCBzZWxmX3ZhciA9IERIRXhwLkJvdW5kVmFyKHNlbGZfaWQpO1xuICAgICAgICAgIGxldCAoXywgc3Vic3RpdHV0ZWRfZGVmKSA9XG4gICAgICAgICAgICBmc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICgoaSwgZGRlZiksIGYpID0+IHtcbiAgICAgICAgICAgICAgICAgICBsZXQgZGRlZiA9XG4gICAgICAgICAgICAgICAgICAgICBTdWJzdGl0dXRpb24uc3Vic3RfdmFyKERIRXhwLlByaihzZWxmX3ZhciwgaSksIGYsIGRkZWYpO1xuICAgICAgICAgICAgICAgICAgIChpICsgMSwgZGRlZik7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICgwLCBkZGVmKSxcbiAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgTGV0KGRwLCBGaXhGKHNlbGZfaWQsIHR5LCBzdWJzdGl0dXRlZF9kZWYpLCBkYm9keSk7XG4gICAgICAgIH07XG4gICAgICB8IEFwKGZuLCBhcmcpXG4gICAgICB8IFBpcGVsaW5lKGFyZywgZm4pID0+XG4gICAgICAgIGxldCogY19mbiA9IGRoZXhwX29mX3VleHAobSwgZm4pO1xuICAgICAgICBsZXQrIGNfYXJnID0gZGhleHBfb2ZfdWV4cChtLCBhcmcpO1xuICAgICAgICBESEV4cC5BcChjX2ZuLCBjX2FyZyk7XG4gICAgICB8IElmKGMsIGUxLCBlMikgPT5cbiAgICAgICAgbGV0KiBjJyA9IGRoZXhwX29mX3VleHAobSwgYyk7XG4gICAgICAgIGxldCogZDEgPSBkaGV4cF9vZl91ZXhwKG0sIGUxKTtcbiAgICAgICAgbGV0KyBkMiA9IGRoZXhwX29mX3VleHAobSwgZTIpO1xuICAgICAgICAvLyBVc2UgdGFnIHRvIG1hcmsgaW5jb25zaXN0ZW50IGJyYW5jaGVzXG4gICAgICAgIHN3aXRjaCAoZXJyX3N0YXR1cykge1xuICAgICAgICB8IEluSG9sZShDb21tb24oSW5jb25zaXN0ZW50KEludGVybmFsKF8pKSkpID0+XG4gICAgICAgICAgREhFeHAuSWZUaGVuRWxzZShESC5JbmNvbnNpc3RlbnRJZiwgYycsIGQxLCBkMilcbiAgICAgICAgfCBfID0+IERIRXhwLklmVGhlbkVsc2UoREguQ29uc2lzdGVudElmLCBjJywgZDEsIGQyKVxuICAgICAgICB9O1xuICAgICAgfCBNYXRjaChzY3J1dCwgcnVsZXMpID0+XG4gICAgICAgIGxldCogZF9zY3J1dCA9IGRoZXhwX29mX3VleHAobSwgc2NydXQpO1xuICAgICAgICBsZXQrIGRfcnVsZXMgPVxuICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgKChwLCBlKSkgPT4ge1xuICAgICAgICAgICAgICBsZXQqIGRfcCA9IGRocGF0X29mX3VwYXQobSwgcCk7XG4gICAgICAgICAgICAgIGxldCsgZF9lID0gZGhleHBfb2ZfdWV4cChtLCBlKTtcbiAgICAgICAgICAgICAgREhFeHAuUnVsZShkX3AsIGRfZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnVsZXMsXG4gICAgICAgICAgKVxuICAgICAgICAgIHw+IE9wdFV0aWwuc2VxdWVuY2U7XG4gICAgICAgIGxldCBkID0gREhFeHAuQ2FzZShkX3NjcnV0LCBkX3J1bGVzLCAwKTtcbiAgICAgICAgc3dpdGNoIChlcnJfc3RhdHVzKSB7XG4gICAgICAgIHwgSW5Ib2xlKENvbW1vbihJbmNvbnNpc3RlbnQoSW50ZXJuYWwoXykpKSkgPT5cbiAgICAgICAgICBESEV4cC5JbmNvbnNpc3RlbnRCcmFuY2hlcyhpZCwgMCwgZClcbiAgICAgICAgfCBfID0+IENvbnNpc3RlbnRDYXNlKGQpXG4gICAgICAgIH07XG4gICAgICB8IFR5QWxpYXMoXywgXywgZSkgPT4gZGhleHBfb2ZfdWV4cChtLCBlKVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKHVleHAudGVybSkge1xuICAgIHwgUGFyZW5zKF8pID0+IGRcbiAgICB8IF8gPT4gd3JhcChjdHgsIGlkLCBtb2RlLCBzZWxmLCBkKVxuICAgIH07XG4gIHwgU29tZShJbmZvUGF0KF8pIHwgSW5mb1R5cChfKSB8IEluZm9UUGF0KF8pIHwgU2Vjb25kYXJ5KF8pKVxuICB8IE5vbmUgPT4gTm9uZVxuICB9O1xufVxuYW5kIGRocGF0X29mX3VwYXQgPSAobTogU3RhdGljcy5NYXAudCwgdXBhdDogVGVybS5VUGF0LnQpOiBvcHRpb24oREhQYXQudCkgPT4ge1xuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChUZXJtLlVQYXQucmVwX2lkKHVwYXQpLCBtKSkge1xuICB8IFNvbWUoSW5mb1BhdCh7bW9kZSwgc2VsZiwgY3R4LCBffSkpID0+XG4gICAgbGV0IGVycl9zdGF0dXMgPSBJbmZvLnN0YXR1c19wYXQoY3R4LCBtb2RlLCBzZWxmKTtcbiAgICBsZXQgbWF5YmVfcmVhc29uOiBvcHRpb24oRXJyU3RhdHVzLkhvbGVSZWFzb24udCkgPVxuICAgICAgc3dpdGNoIChlcnJfc3RhdHVzKSB7XG4gICAgICB8IE5vdEluSG9sZShfKSA9PiBOb25lXG4gICAgICB8IEluSG9sZShfKSA9PiBTb21lKFR5cGVJbmNvbnNpc3RlbnQpXG4gICAgICB9O1xuICAgIGxldCB1ID0gVGVybS5VUGF0LnJlcF9pZCh1cGF0KTsgLyogTk9URTogdXNpbmcgdGVybSB1aWRzIGZvciBob2xlIGlkcyAqL1xuICAgIGxldCB3cmFwID0gKGQ6IERIUGF0LnQpOiBvcHRpb24oREhQYXQudCkgPT5cbiAgICAgIHN3aXRjaCAobWF5YmVfcmVhc29uKSB7XG4gICAgICB8IE5vbmUgPT4gU29tZShkKVxuICAgICAgfCBTb21lKHJlYXNvbikgPT4gU29tZShOb25FbXB0eUhvbGUocmVhc29uLCB1LCAwLCBkKSlcbiAgICAgIH07XG4gICAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgICB8IEludmFsaWQodCkgPT4gU29tZShESFBhdC5JbnZhbGlkVGV4dCh1LCAwLCB0KSlcbiAgICB8IEVtcHR5SG9sZSA9PiBTb21lKEVtcHR5SG9sZSh1LCAwKSlcbiAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgLy8gVE9ETzogZGhleHAsIGV2YWwgZm9yIG11bHRpaG9sZXNcbiAgICAgIFNvbWUoRW1wdHlIb2xlKHUsIDApKVxuICAgIHwgV2lsZCA9PiB3cmFwKFdpbGQpXG4gICAgfCBCb29sKGIpID0+IHdyYXAoQm9vbExpdChiKSlcbiAgICB8IEludChuKSA9PiB3cmFwKEludExpdChuKSlcbiAgICB8IEZsb2F0KG4pID0+IHdyYXAoRmxvYXRMaXQobikpXG4gICAgfCBTdHJpbmcocykgPT4gd3JhcChTdHJpbmdMaXQocykpXG4gICAgfCBUcml2ID0+IHdyYXAoVHVwbGUoW10pKVxuICAgIHwgTGlzdExpdChwcykgPT5cbiAgICAgIGxldCogZHMgPSBwcyB8PiBMaXN0Lm1hcChkaHBhdF9vZl91cGF0KG0pKSB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICAgICAgbGV0KiB0eSA9IGZpeGVkX3BhdF90eXAobSwgdXBhdCk7XG4gICAgICB3cmFwKExpc3RMaXQoVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5KSwgZHMpKTtcbiAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+XG4gICAgICBzd2l0Y2ggKGVycl9zdGF0dXMpIHtcbiAgICAgIHwgSW5Ib2xlKENvbW1vbihOb1R5cGUoRnJlZUNvbnN0cnVjdG9yKF8pKSkpID0+XG4gICAgICAgIFNvbWUoQmFkQ29uc3RydWN0b3IodSwgMCwgbmFtZSkpXG4gICAgICB8IF8gPT4gd3JhcChDb25zdHJ1Y3RvcihuYW1lKSlcbiAgICAgIH1cbiAgICB8IENvbnMoaGQsIHRsKSA9PlxuICAgICAgbGV0KiBkX2hkID0gZGhwYXRfb2ZfdXBhdChtLCBoZCk7XG4gICAgICBsZXQqIGRfdGwgPSBkaHBhdF9vZl91cGF0KG0sIHRsKTtcbiAgICAgIHdyYXAoQ29ucyhkX2hkLCBkX3RsKSk7XG4gICAgfCBUdXBsZShwcykgPT5cbiAgICAgIGxldCogZHMgPSBwcyB8PiBMaXN0Lm1hcChkaHBhdF9vZl91cGF0KG0pKSB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICAgICAgd3JhcChESFBhdC5UdXBsZShkcykpO1xuICAgIHwgVmFyKG5hbWUpID0+IFNvbWUoVmFyKG5hbWUpKVxuICAgIHwgUGFyZW5zKHApID0+IGRocGF0X29mX3VwYXQobSwgcClcbiAgICB8IEFwKHAxLCBwMikgPT5cbiAgICAgIGxldCogZF9wMSA9IGRocGF0X29mX3VwYXQobSwgcDEpO1xuICAgICAgbGV0KiBkX3AyID0gZGhwYXRfb2ZfdXBhdChtLCBwMik7XG4gICAgICB3cmFwKEFwKGRfcDEsIGRfcDIpKTtcbiAgICB8IFR5cGVBbm4ocCwgX3R5KSA9PlxuICAgICAgbGV0KiBkcCA9IGRocGF0X29mX3VwYXQobSwgcCk7XG4gICAgICB3cmFwKGRwKTtcbiAgICB9O1xuICB8IFNvbWUoSW5mb0V4cChfKSB8IEluZm9UeXAoXykgfCBJbmZvVFBhdChfKSB8IFNlY29uZGFyeShfKSlcbiAgfCBOb25lID0+IE5vbmVcbiAgfTtcbn07XG5cbi8vbGV0IGRoZXhwX29mX3VleHAgPSBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBkaGV4cF9vZl91ZXhwKTtcblxubGV0IHVleHBfZWxhYiA9IChtOiBTdGF0aWNzLk1hcC50LCB1ZXhwOiBUZXJtLlVFeHAudCk6IEVsYWJvcmF0aW9uUmVzdWx0LnQgPT5cbiAgc3dpdGNoIChkaGV4cF9vZl91ZXhwKG0sIHVleHAsIGZhbHNlKSkge1xuICB8IE5vbmUgPT4gRG9lc05vdEVsYWJvcmF0ZVxuICB8IFNvbWUoZCkgPT5cbiAgICAvL2xldCBkID0gdWV4cF9lbGFiX3dyYXBfYnVpbHRpbnMoZCk7XG4gICAgbGV0IHR5ID1cbiAgICAgIHN3aXRjaCAoZml4ZWRfZXhwX3R5cChtLCB1ZXhwKSkge1xuICAgICAgfCBTb21lKHR5KSA9PiB0eVxuICAgICAgfCBOb25lID0+IFR5cC5Vbmtub3duKEludGVybmFsKVxuICAgICAgfTtcbiAgICBFbGFib3JhdGVzKGQsIHR5LCBEZWx0YS5lbXB0eSk7XG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IEJveGVkVmFsdWUoREhFeHAudClcbiAgfCBJbmRldChESEV4cC50KTtcblxubGV0IHVuYm94ID1cbiAgZnVuXG4gIHwgQm94ZWRWYWx1ZShkKVxuICB8IEluZGV0KGQpID0+IGQ7XG5cbmxldCBmYXN0X2VxdWFsID0gKHIxLCByMikgPT5cbiAgc3dpdGNoIChyMSwgcjIpIHtcbiAgfCAoQm94ZWRWYWx1ZShkMSksIEJveGVkVmFsdWUoZDIpKVxuICB8IChJbmRldChkMSksIEluZGV0KGQyKSkgPT4gREhFeHAuZmFzdF9lcXVhbChkMSwgZDIpXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge3N0ZXA6IGludH07XG5cbmxldCBpbml0aWFsOiB0ID0ge3N0ZXA6IDB9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGVwfSkgPT4ge3N0ZXA6IHN0ZXAgKyAxfTtcbmxldCBnZXRfc3RlcCA9ICh7c3RlcH0pID0+IHN0ZXA7XG5sZXQgcHV0X3N0ZXAgPSBzdGVwID0+IHtzdGVwOiBzdGVwfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdHM6IEV2YWx1YXRvclN0YXRzLnQsXG4gIHRlc3RzOiBUZXN0TWFwLnQsXG59O1xuXG5sZXQgaW5pdCA9IHtzdGF0czogRXZhbHVhdG9yU3RhdHMuaW5pdGlhbCwgdGVzdHM6IFRlc3RNYXAuZW1wdHl9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGF0cywgX30gYXMgZXMpID0+IHtcbiAgLi4uZXMsXG4gIHN0YXRzOiBzdGF0cyB8PiBFdmFsdWF0b3JTdGF0cy50YWtlX3N0ZXAsXG59O1xuXG5sZXQgZ2V0X3N0ZXAgPSAoe3N0YXRzLCBffSkgPT4gc3RhdHMgfD4gRXZhbHVhdG9yU3RhdHMuZ2V0X3N0ZXA7XG5cbmxldCBwdXRfc3RlcCA9IChzdGVwLCBlcykgPT4gey4uLmVzLCBzdGF0czogRXZhbHVhdG9yU3RhdHMucHV0X3N0ZXAoc3RlcCl9O1xuXG5sZXQgYWRkX3Rlc3QgPSAoe3Rlc3RzLCBffSBhcyBlcywgaWQsIHJlcG9ydCkgPT4ge1xuICBsZXQgdGVzdHMgPSB0ZXN0cyB8PiBUZXN0TWFwLmV4dGVuZCgoaWQsIHJlcG9ydCkpO1xuICB7Li4uZXMsIHRlc3RzfTtcbn07XG5cbmxldCBnZXRfdGVzdHMgPSAoe3Rlc3RzLCBffSkgPT4gdGVzdHM7XG5cbmxldCBwdXRfdGVzdHMgPSAodGVzdHMsIGVzKSA9PiB7Li4uZXMsIHRlc3RzfTtcbiIsIm9wZW4gRXZhbHVhdG9yUmVzdWx0O1xub3BlbiBUcmFuc2l0aW9uO1xuXG5tb2R1bGUgRXZhbHVhdG9yRVZNb2RlOiB7XG4gIHR5cGUgcmVzdWx0X3VuZmluaXNoZWQgPVxuICAgIHwgQm94ZWRWYWx1ZShESEV4cC50KVxuICAgIHwgSW5kZXQoREhFeHAudClcbiAgICB8IFVuZXZhbChESEV4cC50KTtcbiAgbGV0IHVuYm94OiByZXN1bHRfdW5maW5pc2hlZCA9PiBESEV4cC50O1xuXG4gIGluY2x1ZGVcbiAgICBFVl9NT0RFIHdpdGhcbiAgICAgIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCkgYW5kIHR5cGUgcmVzdWx0ID0gcmVzdWx0X3VuZmluaXNoZWQ7XG59ID0ge1xuICB0eXBlIHJlcXN0YXRlID1cbiAgICB8IEJveGVkUmVhZHlcbiAgICB8IEluZGV0UmVhZHlcbiAgICB8IEluZGV0QmxvY2tlZDtcblxuICBsZXQgKCYmKSA9ICh4LCB5KSA9PlxuICAgIHN3aXRjaCAoeCwgeSkge1xuICAgIHwgKEluZGV0QmxvY2tlZCwgXykgPT4gSW5kZXRCbG9ja2VkXG4gICAgfCAoXywgSW5kZXRCbG9ja2VkKSA9PiBJbmRldEJsb2NrZWRcbiAgICB8IChJbmRldFJlYWR5LCBfKSA9PiBJbmRldFJlYWR5XG4gICAgfCAoXywgSW5kZXRSZWFkeSkgPT4gSW5kZXRSZWFkeVxuICAgIHwgKEJveGVkUmVhZHksIEJveGVkUmVhZHkpID0+IEJveGVkUmVhZHlcbiAgICB9O1xuXG4gIHR5cGUgcmVxdWlyZW1lbnQoJ2EpID0gKHJlcXN0YXRlLCAnYSk7XG5cbiAgdHlwZSByZXF1aXJlbWVudHMoJ2EsICdiKSA9IChyZXFzdGF0ZSwgJ2EsICdiKTsgLy8gY3VtdWxhdGl2ZSBzdGF0ZSwgY3VtdWxhdGl2ZSBhcmd1bWVudHMsIGN1bXVsYXRpdmUgJ3VuZG8nXG5cbiAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICBzdGF0ZSA6PSBFdmFsdWF0b3JTdGF0ZS5hZGRfdGVzdChzdGF0ZV4sIGlkLCB2KTtcblxuICB0eXBlIHJlc3VsdF91bmZpbmlzaGVkID1cbiAgICB8IEJveGVkVmFsdWUoREhFeHAudClcbiAgICB8IEluZGV0KERIRXhwLnQpXG4gICAgfCBVbmV2YWwoREhFeHAudCk7XG5cbiAgdHlwZSByZXN1bHQgPSByZXN1bHRfdW5maW5pc2hlZDtcblxuICBsZXQgdW5ib3ggPVxuICAgIGZ1blxuICAgIHwgQm94ZWRWYWx1ZSh4KVxuICAgIHwgSW5kZXQoeClcbiAgICB8IFVuZXZhbCh4KSA9PiB4O1xuXG4gIGxldCByZXFfdmFsdWUgPSAoZiwgXywgeCkgPT5cbiAgICBzd2l0Y2ggKGYoeCkpIHtcbiAgICB8IEJveGVkVmFsdWUoeCkgPT4gKEJveGVkUmVhZHksIHgpXG4gICAgfCBJbmRldCh4KSA9PiAoSW5kZXRCbG9ja2VkLCB4KVxuICAgIHwgVW5ldmFsKF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF92YWx1ZSA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV92YWx1ZShmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF92YWx1ZShmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IHJlcV9maW5hbCA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgQm94ZWRWYWx1ZSh4KSA9PiAoQm94ZWRSZWFkeSwgeClcbiAgICB8IEluZGV0KHgpID0+IChJbmRldFJlYWR5LCB4KVxuICAgIHwgVW5ldmFsKF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF9maW5hbCA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV9maW5hbChmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF9maW5hbChmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IG90aGVyd2lzZSA9IChfLCBjKSA9PiAoQm94ZWRSZWFkeSwgKCksIGMpO1xuXG4gIGxldCAoYW5kLikgPSAoKHIxLCB4MSwgYzEpLCAocjIsIHgyKSkgPT4gKHIxICYmIHIyLCAoeDEsIHgyKSwgYzEoeDIpKTtcblxuICBsZXQgKGxldC4pID0gKChyLCB4LCBjKSwgcykgPT5cbiAgICBzd2l0Y2ggKHIsIHMoeCkpIHtcbiAgICB8IChCb3hlZFJlYWR5LCBTdGVwKHthcHBseSwgdmFsdWU6IHRydWUsIF99KSkgPT4gQm94ZWRWYWx1ZShhcHBseSgpKVxuICAgIHwgKEluZGV0UmVhZHksIFN0ZXAoe2FwcGx5LCB2YWx1ZTogdHJ1ZSwgX30pKSA9PiBJbmRldChhcHBseSgpKVxuICAgIHwgKEJveGVkUmVhZHksIFN0ZXAoe2FwcGx5LCB2YWx1ZTogZmFsc2UsIF99KSlcbiAgICB8IChJbmRldFJlYWR5LCBTdGVwKHthcHBseSwgdmFsdWU6IGZhbHNlLCBffSkpID0+IFVuZXZhbChhcHBseSgpKVxuICAgIHwgKEJveGVkUmVhZHksIENvbnN0cnVjdG9yKSA9PiBCb3hlZFZhbHVlKGMpXG4gICAgfCAoSW5kZXRSZWFkeSwgQ29uc3RydWN0b3IpID0+IEluZGV0KGMpXG4gICAgfCAoSW5kZXRCbG9ja2VkLCBfKSA9PiBJbmRldChjKVxuICAgIHwgKF8sIEluZGV0KSA9PiBJbmRldChjKVxuICAgIH07XG59O1xubW9kdWxlIEV2YWwgPSBUcmFuc2l0aW9uKEV2YWx1YXRvckVWTW9kZSk7XG5cbmxldCByZWMgZXZhbHVhdGUgPSAoc3RhdGUsIGVudiwgZCkgPT4ge1xuICBsZXQgdSA9IEV2YWwudHJhbnNpdGlvbihldmFsdWF0ZSwgc3RhdGUsIGVudiwgZCk7XG4gIHN3aXRjaCAodSkge1xuICB8IEJveGVkVmFsdWUoeCkgPT4gQm94ZWRWYWx1ZSh4KVxuICB8IEluZGV0KHgpID0+IEluZGV0KHgpXG4gIHwgVW5ldmFsKHgpID0+IGV2YWx1YXRlKHN0YXRlLCBlbnYsIHgpXG4gIH07XG59O1xuXG5sZXQgZXZhbHVhdGUgPSAoZW52LCBkKTogKEV2YWx1YXRvclN0YXRlLnQsIEV2YWx1YXRvclJlc3VsdC50KSA9PiB7XG4gIGxldCBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS5pbml0KTtcbiAgbGV0IGVudiA9IENsb3N1cmVFbnZpcm9ubWVudC5vZl9lbnZpcm9ubWVudChlbnYpO1xuICBsZXQgcmVzdWx0ID0gZXZhbHVhdGUoc3RhdGUsIGVudiwgZCk7XG4gIGxldCByZXN1bHQgPVxuICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgfCBCb3hlZFZhbHVlKHgpID0+IEJveGVkVmFsdWUoeClcbiAgICB8IEluZGV0KHgpID0+IEluZGV0KHgpXG4gICAgfCBVbmV2YWwoeCkgPT4gSW5kZXQoeClcbiAgICB9O1xuICAoc3RhdGVeLCByZXN1bHQpO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gWmlwcGVyO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxudHlwZSByZWxhdGlvbiA9XG4gIHwgUGFyZW50XG4gIHwgU2libGluZztcblxubGV0IHBpZWNlJyA9XG4gICAgKH5ub193czogYm9vbCwgfmlnbjogUGllY2UudCA9PiBib29sLCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHo6IFppcHBlci50KVxuICAgIDogb3B0aW9uKChQaWVjZS50LCBEaXJlY3Rpb24udCwgcmVsYXRpb24pKSA9PiB7XG4gIGxldCBzaWJzID1cbiAgICB0cmltX3NlY29uZGFyeVxuICAgICAgPyBzaWJzX3dpdGhfc2VsKHopIHw+IFNpYmxpbmdzLnRyaW1fc2Vjb25kYXJ5IDogc2lic193aXRoX3NlbCh6KTtcbiAgLyogUmV0dXJucyB0aGUgcGllY2UgY3VycmVudGx5IGluZGljYXRlZCAoaWYgYW55KSBhbmQgd2hpY2ggc2lkZSBvZlxuICAgICB0aGF0IHBpZWNlIHRoZSBjYXJldCBpcyBvbi4gV2UgZmF2b3IgaW5kaWNhdGluZyB0aGUgcGllY2UgdG8gdGhlXG4gICAgIChSKWlnaHQsIGJ1dCBtYXkgZW5kIHVwIGluZGljYXRpbmcgdGhlIChQKWFyZW50IG9yIHRoZSAoTCllZnQuXG4gICAgIFdlIGRvbid0IGluZGljYXRlIHNlY29uZGFyeSB0aWxlcy4gVGhpcyBmdW5jdGlvbiBpZ25vcmVzIHdoZXRoZXJcbiAgICAgb3Igbm90IHRoZXJlIGlzIGEgc2VsZWN0aW9uIHNvIHRoaXMgY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBjYXJldFxuICAgICBkaXJlY3Rpb24sIGJ1dCB0aGUgY2FsbGVyIHNob3VsZG4ndCBpbmRpY2F0ZSBpZiB0aGVyZSdzIGEgc2VsZWN0aW9uICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnMpLCBwYXJlbnQoeikpIHtcbiAgLyogTm9uLWVtcHR5IHNlbGVjdGlvbiA9PiBubyBpbmRpY2F0aW9uICovXG4gIC8vfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBOb25lXG4gIC8qIEVtcHR5IHN5bnRheCA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBOb25lKSwgTm9uZSkgPT4gTm9uZVxuICAvKiBMIG5vdCBzZWNvbmRhcnksIFIgaXMgc2Vjb25kYXJ5ID0+IGluZGljYXRlIEwgKi9cbiAgfCAoKFNvbWUobCksIFNvbWUocikpLCBfKSB3aGVuICFpZ24obCkgJiYgaWduKHIpID0+XG4gICAgU29tZSgobCwgTGVmdCwgU2libGluZykpXG4gIC8qIEwgYW5kIFIgYXJlIHNlY29uZGFyeXMgPT4gbm8gaW5kaWNhdGlvbiAqL1xuICB8ICgoU29tZShsKSwgU29tZShyKSksIF8pIHdoZW4gaWduKGwpICYmIGlnbihyKSA9PlxuICAgIG5vX3dzID8gTm9uZSA6IFNvbWUoKGwsIExlZnQsIFNpYmxpbmcpKVxuICAvKiBBdCByaWdodCBlbmQgb2Ygc3ludGF4IGFuZCBMIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChTb21lKGwpLCBOb25lKSwgTm9uZSkgd2hlbiBpZ24obCkgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogQXQgbGVmdCBlbmQgb2Ygc3ludGF4IGFuZCBSIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgTm9uZSkgd2hlbiBpZ24ocikgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIEwgYW5kIFIgaXMgYSBzZWNvbmRhcnkgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgU29tZShwYXJlbnQpKSB3aGVuIGlnbihyKSA9PlxuICAgIFNvbWUoKHBhcmVudCwgTGVmdCwgUGFyZW50KSlcbiAgLyogTCBpcyBub3Qgc2Vjb25kYXJ5IGFuZCBjYXJldCBpcyBvdXRlciA9PiBpbmRpY2F0ZSBMICovXG4gIHwgKChTb21lKGwpLCBfKSwgXykgd2hlbiAhaWduKGwpICYmIHouY2FyZXQgPT0gT3V0ZXIgPT5cbiAgICBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogTm8gTCwgc29tZSBQLCBhbmQgY2FyZXQgaXMgb3V0ZXIgPT4gaW5kaWNhdGUgUiAqL1xuICB8ICgoTm9uZSwgXyksIFNvbWUocGFyZW50KSkgd2hlbiB6LmNhcmV0ID09IE91dGVyID0+XG4gICAgU29tZSgocGFyZW50LCBMZWZ0LCBQYXJlbnQpKVxuICAvKiBSIGlzIG5vdCBzZWNvbmRhcnksIGVpdGhlciBubyBMIG9yIEwgaXMgc2Vjb25kYXJ5IG9yIGNhcmV0IGlzIGlubmVyID0+IGluZGljYXRlIFIgKi9cbiAgfCAoKF8sIFNvbWUocikpLCBfKSA9PiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIFIgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChfLCBOb25lKSwgU29tZShwYXJlbnQpKSA9PiBTb21lKChwYXJlbnQsIFJpZ2h0LCBQYXJlbnQpKVxuICAvKiBUaGVyZSBpcyBhbiBMIGJ1dCBubyBSIGFuZCBubyBQID0+IGluZGljYXRlIEwgKi9cbiAgLy9UT0RPKGFuZHJldyk6IFJpZ2h0IGJlbG93IHNlZW1zIHdyb25nIGJ1dCBpdCBnZXRzIGZ1Y2t5IG90aGVyd2lzZVxuICB8ICgoU29tZShsKSwgTm9uZSksIE5vbmUpID0+IFNvbWUoKGwsIFJpZ2h0LCBTaWJsaW5nKSlcbiAgfTtcbn07XG5cbmxldCBwaWVjZSA9XG4gIHBpZWNlJyh+bm9fd3M9dHJ1ZSwgfmlnbj1wID0+IFBpZWNlLihpc19zZWNvbmRhcnkocCkgfHwgaXNfZ3JvdXQocCkpKTtcblxubGV0IHNoYXJkX2luZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKGludCkgPT5cbiAgc3dpdGNoIChwaWVjZSh6KSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoKHAsIHNpZGUsIHJlbGF0aW9uKSkgPT5cbiAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7XG4gICAgfCBQYXJlbnQgPT5cbiAgICAgIHN3aXRjaCAoQW5jZXN0b3JzLnBhcmVudCh6LnJlbGF0aXZlcy5hbmNlc3RvcnMpKSB7XG4gICAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJpbmRpY2F0ZWRfc2hhcmRfaW5kZXggaW1wb3NzaWJsZVwiKVxuICAgICAgfCBTb21lKHtjaGlsZHJlbjogKGJlZm9yZSwgXyksIF99KSA9PlxuICAgICAgICBsZXQgYmVmb3JlID0gTGlzdC5sZW5ndGgoYmVmb3JlKTtcbiAgICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICAgIHwgKF8sIE5vbmUpID0+IFNvbWUoYmVmb3JlICsgMSlcbiAgICAgICAgfCBfID0+IFNvbWUoYmVmb3JlKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIHwgU2libGluZyA9PlxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFNlY29uZGFyeShfKVxuICAgICAgfCBHcm91dChfKSA9PiBTb21lKDApXG4gICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgIHwgTGVmdCA9PiBTb21lKExpc3QubGVuZ3RoKHQuY2hpbGRyZW4pKVxuICAgICAgICB8IFJpZ2h0ID0+IFNvbWUoMClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxubGV0IGluZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKElkLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgcGllY2UnKH5ub193cz1mYWxzZSwgfmlnbj1QaWVjZS5pc19zZWNvbmRhcnksIH50cmltX3NlY29uZGFyeT1mYWxzZSwgeilcbiAgKSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZSgocCwgXywgXykpID0+IFNvbWUoUGllY2UuaWQocCkpXG4gIH07XG5cbmxldCBjaV9vZiA9ICh6OiBaaXBwZXIudCwgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQpOiBvcHRpb24oU3RhdGljcy5JbmZvLnQpID0+XG4gIC8qIFRoaXMgdmVyc2lvbiB0YWtlcyBpbnRvIGFjY291bnRzIFNlY29uZGFyeSwgd2hpbGUgYWNjb3VudGluZyBmb3IgdGhlXG4gICAqIGZhY3QgdGhhdCBTZWNvbmRhcnkgaXMgbm90IGN1cnJlbnRseSBhZGRlZCB0byB0aGUgaW5mb21hcC4gRmlyc3Qgd2VcbiAgICogdHJ5IHRoZSBiYXNpYyBpbmRpY2F0aW9uIGZ1bmN0aW9uLCBzcGVjaWZ5aW5nIHRoYXQgd2UgZG8gbm90IHdhbnRcbiAgICogU2Vjb25kYXJ5LiBCdXQgaWYgdGhpcyBkb2Vzbid0IHN1Y2NlZWQsIHRoZW4gd2UgY3JlYXRlIGEgJ3ZpcnR1YWwnXG4gICAqIGluZm8gbWFwIGVudHJ5IHJlcHJlc2VudGluZyB0aGUgU2Vjb25kYXJ5IG5vdGF0aW9uLCB3aGljaCB0YWtlcyBvblxuICAgKiBzb21lIG9mIHRoZSBzZW1hbnRpYyBjb250ZXh0IG9mIGEgbmVhcmJ5ICdwcm94eScgdGVybSAqL1xuICBzd2l0Y2ggKFxuICAgIHBpZWNlJyh+bm9fd3M9dHJ1ZSwgfmlnbj1QaWVjZS5pc19zZWNvbmRhcnksIH50cmltX3NlY29uZGFyeT1mYWxzZSwgeilcbiAgKSB7XG4gIHwgU29tZSgocCwgXywgXykpID0+IElkLk1hcC5maW5kX29wdChQaWVjZS5pZChwKSwgaW5mb19tYXApXG4gIHwgTm9uZSA9PlxuICAgIGxldCBzaWJzID0gc2lic193aXRoX3NlbCh6KTtcbiAgICBsZXQqIGNscyA9XG4gICAgICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyhzaWJzKSkge1xuICAgICAgLyogSWYgb24gc2lkZSBvZiBjb21tZW50LCBzYXkgd2UncmUgb24gY29tbWVudCAqL1xuICAgICAgfCAoU29tZShTZWNvbmRhcnkoc2wpKSwgU29tZShTZWNvbmRhcnkoXykpKVxuICAgICAgICAgIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQoc2wpID0+XG4gICAgICAgIFNvbWUoU2Vjb25kYXJ5LmNsc19vZihzbCkpXG4gICAgICB8IChTb21lKFNlY29uZGFyeShfKSksIFNvbWUoU2Vjb25kYXJ5KHNyKSkpXG4gICAgICAgICAgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudChzcikgPT5cbiAgICAgICAgU29tZShTZWNvbmRhcnkuY2xzX29mKHNyKSlcbiAgICAgIHwgKF8sIFNvbWUoU2Vjb25kYXJ5KHMpKSlcbiAgICAgIHwgKFNvbWUoU2Vjb25kYXJ5KHMpKSwgXykgPT4gU29tZShTZWNvbmRhcnkuY2xzX29mKHMpKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH07XG4gICAgbGV0KiBwcm94eV9pZCA9XG4gICAgICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyhTaWJsaW5ncy50cmltX3NlY29uZGFyeShzaWJzKSkpIHtcbiAgICAgIHwgKF8sIFNvbWUocCkpXG4gICAgICB8IChTb21lKHApLCBfKSA9PiBTb21lKFBpZWNlLmlkKHApKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH07XG4gICAgbGV0KyBjaSA9IElkLk1hcC5maW5kX29wdChwcm94eV9pZCwgaW5mb19tYXApO1xuICAgIEluZm8uU2Vjb25kYXJ5KHtcbiAgICAgIGlkOiBwcm94eV9pZCxcbiAgICAgIGNsczogU2Vjb25kYXJ5KGNscyksXG4gICAgICBzb3J0OiBJbmZvLnNvcnRfb2YoY2kpLFxuICAgICAgY3R4OiBJbmZvLmN0eF9vZihjaSksXG4gICAgfSk7XG4gIH07XG4iLCJpbmNsdWRlIElkLk1hcDtcbnR5cGUgdCA9IElkLk1hcC50KFRlcm0udCk7XG5cbmxldCBhZGRfYWxsID0gKGlkczogbGlzdChJZC50KSwgdG06IFRlcm0udCwgbWFwOiB0KSA9PlxuICBpZHMgfD4gTGlzdC5mb2xkX2xlZnQoKG1hcCwgaWQpID0+IGFkZChpZCwgdG0sIG1hcCksIG1hcCk7XG4iLCJpbmNsdWRlIElkLk1hcDtcbnR5cGUgdCA9IElkLk1hcC50KFRpbGUudCk7XG5cbi8vIHRhaWwtcmVjdXJzaXZlXG5sZXQgcmVjIG1rID0gKH5tYXA9ZW1wdHksIHNlZzogU2VnbWVudC50KTogdCA9PlxuICBTZWdtZW50LnRpbGVzKHNlZylcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKG1hcCwgdDogVGlsZS50KSA9PiB7XG4gICAgICAgICB0LmNoaWxkcmVuXG4gICAgICAgICB8PiBMaXN0LmZvbGRfbGVmdCgobWFwLCBraWQpID0+IG1rKH5tYXAsIGtpZCksIGFkZCh0LmlkLCB0LCBtYXApKVxuICAgICAgIH0sXG4gICAgICAgbWFwLFxuICAgICApO1xuIiwiLyogTUFLRVRFUk1cblxuICAgICBUaGlzIHBhcnNlcyB0aWxlIHN0cnVjdHVyZSBpbnRvIHRlcm0gc3RydWN0dXJlLlxuICAgICBUaGUgbGFuZ3VhZ2Ugc3ludGF4LCBhcyBkZXRlcm1pbmVkIGJ5IEZvcm0ucmUsIGlzIGFuXG4gICAgIG9wZW4sIGRhdGEtZHJpdmVuIHN5c3RlbSwgc28gYWRkaW5nIGEgc3ludGFjdGljIGZvcm1cbiAgICAgdGhlcmUgd2lsbCBub3QgdHJpZ2dlciBhIHN0YXRpYyBlcnJvciBoZXJlOyB5b3UgbXVzdFxuICAgICByZW1lbWJlciB0byBhZGQgYSBjYXNlIGJlbG93IGZvciBlYWNoIG5ldyBmb3JtIGFkZGVkXG4gICAgIHRvIHRoZSBzeW50YXguXG5cbiAgICAgV0FSTklORzogVGhpcyBtb2R1bGUgaXMgc3RpbGwgc3RydWN0dXJhbGx5IGluIGZsdXguXG4gICAqL1xuXG5vcGVuIFV0aWw7XG5vcGVuIFRlcm07XG5cbi8vIFRPRE8gbWFrZSBsZXNzIGhhY2t5XG5sZXQgdG9rZW5zID1cbiAgUGllY2UuZ2V0KFxuICAgIF8gPT4gW10sXG4gICAgXyA9PiBbXCIgXCJdLFxuICAgICh0OiBUaWxlLnQpID0+IHQuc2hhcmRzIHw+IExpc3QubWFwKExpc3QubnRoKHQubGFiZWwpKSxcbiAgKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0aWxlID0gKElkLnQsIEFiYS50KFRva2VuLnQsIHQpKTtcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGlsZXMgPSBBYmEudCh0aWxlLCB0KTtcbmxldCBzaW5nbGUgPSAoaWQsIHN1YnN0KSA9PiAoWyhpZCwgc3Vic3QpXSwgW10pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHVuc29ydGVkID1cbiAgfCBPcCh0aWxlcylcbiAgfCBQcmUodGlsZXMsIHQpXG4gIHwgUG9zdCh0LCB0aWxlcylcbiAgfCBCaW4odCwgdGlsZXMsIHQpO1xuXG5sZXQgaXNfbmFyeSA9XG4gICAgKGlzX3NvcnQ6IGFueSA9PiBvcHRpb24oJ3NvcnQpLCBkZWxpbTogVG9rZW4udCwgKGRlbGltcywga2lkcyk6IHRpbGVzKVxuICAgIDogb3B0aW9uKGxpc3QoJ3NvcnQpKSA9PlxuICBpZiAoZGVsaW1zIHw+IExpc3QubWFwKHNuZCkgfD4gTGlzdC5mb3JfYWxsKCg9PSkoKFtkZWxpbV0sIFtdKSkpKSB7XG4gICAga2lkcyB8PiBMaXN0Lm1hcChpc19zb3J0KSB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBpc190dXBsZV9leHAgPSBpc19uYXJ5KFRlcm1CYXNlLkFueS5pc19leHAsIFwiLFwiKTtcbmxldCBpc190dXBsZV9wYXQgPSBpc19uYXJ5KFRlcm1CYXNlLkFueS5pc19wYXQsIFwiLFwiKTtcbmxldCBpc190dXBsZV90eXAgPSBpc19uYXJ5KFRlcm1CYXNlLkFueS5pc190eXAsIFwiLFwiKTtcbmxldCBpc190eXBfYnN1bSA9IGlzX25hcnkoVGVybUJhc2UuQW55LmlzX3R5cCwgXCIrXCIpO1xuXG5sZXQgaXNfZ3JvdXQgPSB0aWxlcyA9PlxuICBBYmEuZ2V0X2FzKHRpbGVzKSB8PiBMaXN0Lm1hcChzbmQpIHw+IExpc3QuZm9yX2FsbCgoPT0pKChbXCIgXCJdLCBbXSkpKTtcblxubGV0IGlzX3J1bGVzID0gKCh0cywga2lkcyk6IHRpbGVzKTogb3B0aW9uKEFiYS50KFVQYXQudCwgVUV4cC50KSkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHBzID1cbiAgICB0c1xuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChfLCAoW1wifFwiLCBcIj0+XCJdLCBbUGF0KHApXSkpID0+IFNvbWUocClcbiAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgIClcbiAgICB8PiBPcHRVdGlsLnNlcXVlbmNlXG4gIGFuZCsgY2xhdXNlcyA9XG4gICAga2lkc1xuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IEV4cChjbGF1c2UpID0+IFNvbWUoY2xhdXNlKVxuICAgICAgICAgfCBfID0+IE5vbmUsXG4gICAgICAgKVxuICAgIHw+IE9wdFV0aWwuc2VxdWVuY2U7XG4gIEFiYS5tayhwcywgY2xhdXNlcyk7XG59O1xuXG5sZXQgaWRzX29mX3RpbGVzID0gKHRpbGVzOiB0aWxlcykgPT4gTGlzdC5tYXAoZnN0LCBBYmEuZ2V0X2FzKHRpbGVzKSk7XG5sZXQgaWRzID1cbiAgZnVuXG4gIHwgT3AodGlsZXMpXG4gIHwgUHJlKHRpbGVzLCBfKVxuICB8IFBvc3QoXywgdGlsZXMpXG4gIHwgQmluKF8sIHRpbGVzLCBfKSA9PiBpZHNfb2ZfdGlsZXModGlsZXMpO1xuXG5sZXQga2lkc19vZl90aWxlID0gKChfaWQsIChfdG9rZW5zLCBraWRzKSk6IHRpbGUpID0+IGtpZHM7XG5sZXQga2lkc19vZl90aWxlcyA9ICh0aWxlczogdGlsZXMpID0+XG4gIHRpbGVzXG4gIHw+IEFiYS5tYXBfYShraWRzX29mX3RpbGUpXG4gIHw+IEFiYS5qb2luKEZ1bi5pZCwga2lkID0+IFtraWRdKVxuICB8PiBMaXN0LmNvbmNhdDtcbmxldCBraWRzX29mX3Vuc29ydGVkID1cbiAgZnVuXG4gIHwgT3AodGlsZXMpID0+IGtpZHNfb2ZfdGlsZXModGlsZXMpXG4gIHwgUHJlKHRpbGVzLCByKSA9PiBraWRzX29mX3RpbGVzKHRpbGVzKSBAIFtyXVxuICB8IFBvc3QobCwgdGlsZXMpID0+IFtsXSBAIGtpZHNfb2ZfdGlsZXModGlsZXMpXG4gIHwgQmluKGwsIHRpbGVzLCByKSA9PiBbbF0gQCBraWRzX29mX3RpbGVzKHRpbGVzKSBAIFtyXTtcblxuLy8gTmVlZCB0aGlzIG1hcCB0byBjb2xsZWN0IGFsbCBzdHJ1Y3R1cmFsIHRlcm1zLFxuLy8gbm90IGp1c3QgdGhlIG9uZXMgcmVjb2duaXplZCBpbiBTdGF0aWNzLlxuLy8gVE9ETyB1bmhhY2tcbmxldCBtYXA6IHJlZihUZXJtTWFwLnQpID0gcmVmKElkLk1hcC5lbXB0eSk7XG5sZXQgcmV0dXJuID0gKHdyYXAsIGlkcywgdG0pID0+IHtcbiAgbWFwIDo9IFRlcm1NYXAuYWRkX2FsbChpZHMsIHdyYXAodG0pLCBtYXBeKTtcbiAgdG07XG59O1xuXG5sZXQgcGFyc2Vfc3VtX3Rlcm06IFVUeXAudCA9PiBVVHlwLnZhcmlhbnQgPVxuICBmdW5cbiAgfCB7dGVybTogVmFyKGN0ciksIGlkc30gPT4gVmFyaWFudChjdHIsIGlkcywgTm9uZSlcbiAgfCB7dGVybTogQXAoe3Rlcm06IFZhcihjdHIpLCBpZHM6IGlkc19jdHJ9LCB1KSwgaWRzOiBpZHNfYXB9ID0+XG4gICAgVmFyaWFudChjdHIsIGlkc19jdHIgQCBpZHNfYXAsIFNvbWUodSkpXG4gIHwgdCA9PiBCYWRFbnRyeSh0KTtcblxubGV0IHJlYyBnb19zID0gKHM6IFNvcnQudCwgc2tlbDogU2tlbC50LCBzZWc6IFNlZ21lbnQudCk6IGFueSA9PlxuICBzd2l0Y2ggKHMpIHtcbiAgfCBQYXQgPT4gUGF0KHBhdCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBUUGF0ID0+IFRQYXQodHBhdCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBUeXAgPT4gVHlwKHR5cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBFeHAgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBSdWwgPT4gUnVsKHJ1bCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBOdWwgPT4gTnVsKCkgLy9UT0RPXG4gIHwgQW55ID0+XG4gICAgbGV0IHRtID0gdW5zb3J0ZWQoc2tlbCwgc2VnKTtcbiAgICBsZXQgaWRzID0gaWRzKHRtKTtcbiAgICBzd2l0Y2ggKExpc3RVdGlsLmhkX29wdChpZHMpKSB7XG4gICAgfCBOb25lID0+IEV4cChleHAodW5zb3J0ZWQoc2tlbCwgc2VnKSkpXG4gICAgfCBTb21lKGlkKSA9PlxuICAgICAgc3dpdGNoIChUaWxlTWFwLmZpbmRfb3B0KGlkLCBUaWxlTWFwLm1rKHNlZykpKSB7XG4gICAgICB8IE5vbmUgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBpZiAodC5tb2xkLm91dCA9PSBBbnkpIHtcbiAgICAgICAgICBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnb19zKHQubW9sZC5vdXQsIHNrZWwsIHNlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbmFuZCBleHAgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCAodGVybSwgaW5uZXJfaWRzKSA9IGV4cF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCkgQCBpbm5lcl9pZHM7XG4gIHJldHVybihlID0+IEV4cChlKSwgaWRzLCB7aWRzLCB0ZXJtfSk7XG59XG5hbmQgZXhwX3Rlcm06IHVuc29ydGVkID0+IChVRXhwLnRlcm0sIGxpc3QoSWQudCkpID0ge1xuICBsZXQgcmV0ID0gKHRtOiBVRXhwLnRlcm0pID0+ICh0bSwgW10pO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFRlcm0uVUV4cC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIC8vIHNpbmdsZS10aWxlIGNhc2VcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHN3aXRjaCAodCkge1xuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IHJldChUcml2KVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X2xpc3QodCkgPT4gcmV0KExpc3RMaXQoW10pKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2Jvb2wodCkgPT4gcmV0KEJvb2woYm9vbF9vZl9zdHJpbmcodCkpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2ludCh0KSA9PiByZXQoSW50KGludF9vZl9zdHJpbmcodCkpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSA9PlxuICAgICAgICByZXQoU3RyaW5nKEZvcm0uc3RyaXBfcXVvdGVzKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19mbG9hdCh0KSA9PiByZXQoRmxvYXQoZmxvYXRfb2Zfc3RyaW5nKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc192YXIodCkgPT4gcmV0KFZhcih0KSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19jdHIodCkgPT4gcmV0KENvbnN0cnVjdG9yKHQpKVxuICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtFeHAoYm9keSldKSA9PiByZXQoUGFyZW5zKGJvZHkpKVxuICAgICAgfCAoW1wiW1wiLCBcIl1cIl0sIFtFeHAoYm9keSldKSA9PlxuICAgICAgICBzd2l0Y2ggKGJvZHkpIHtcbiAgICAgICAgfCB7aWRzLCB0ZXJtOiBUdXBsZShlcyl9ID0+IChMaXN0TGl0KGVzKSwgaWRzKVxuICAgICAgICB8IHRlcm0gPT4gcmV0KExpc3RMaXQoW3Rlcm1dKSlcbiAgICAgICAgfVxuICAgICAgfCAoW1widGVzdFwiLCBcImVuZFwiXSwgW0V4cCh0ZXN0KV0pID0+IHJldChUZXN0KHRlc3QpKVxuICAgICAgfCAoW1wiY2FzZVwiLCBcImVuZFwiXSwgW1J1bCh7aWRzLCB0ZXJtOiBSdWxlcyhzY3J1dCwgcnVsZXMpfSldKSA9PiAoXG4gICAgICAgICAgTWF0Y2goc2NydXQsIHJ1bGVzKSxcbiAgICAgICAgICBpZHMsXG4gICAgICAgIClcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gdCAhPSBcIiBcIiAmJiAhRm9ybS5pc19leHBsaWNpdF9ob2xlKHQpID0+XG4gICAgICAgIHJldChJbnZhbGlkKHQpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUodGlsZXMsIEV4cChyKSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICB8IChbXCIkXCJdLCBbXSkgPT4gVW5PcChNZXRhKFVucXVvdGUpLCByKVxuICAgICAgICB8IChbXCItXCJdLCBbXSkgPT4gVW5PcChJbnQoTWludXMpLCByKVxuICAgICAgICB8IChbXCIhXCJdLCBbXSkgPT4gVW5PcChCb29sKE5vdCksIHIpXG4gICAgICAgIHwgKFtcImZ1blwiLCBcIi0+XCJdLCBbUGF0KHBhdCldKSA9PiBGdW4ocGF0LCByKVxuICAgICAgICB8IChbXCJsZXRcIiwgXCI9XCIsIFwiaW5cIl0sIFtQYXQocGF0KSwgRXhwKGRlZildKSA9PiBMZXQocGF0LCBkZWYsIHIpXG4gICAgICAgIHwgKFtcImhpZGVcIiwgXCJpblwiXSwgW0V4cChmaWx0ZXIpXSkgPT5cbiAgICAgICAgICBGaWx0ZXIoKEV2YWwsIE9uZSksIGZpbHRlciwgcilcbiAgICAgICAgfCAoW1wiZXZhbFwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcigoRXZhbCwgQWxsKSwgZmlsdGVyLCByKVxuICAgICAgICB8IChbXCJwYXVzZVwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcigoU3RlcCwgT25lKSwgZmlsdGVyLCByKVxuICAgICAgICB8IChbXCJkZWJ1Z1wiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcigoU3RlcCwgQWxsKSwgZmlsdGVyLCByKVxuICAgICAgICB8IChbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBbVFBhdCh0cGF0KSwgVHlwKGRlZildKSA9PlxuICAgICAgICAgIFR5QWxpYXModHBhdCwgZGVmLCByKVxuICAgICAgICB8IChbXCJpZlwiLCBcInRoZW5cIiwgXCJlbHNlXCJdLCBbRXhwKGNvbmQpLCBFeHAoY29uc2VxKV0pID0+XG4gICAgICAgICAgSWYoY29uZCwgY29uc2VxLCByKVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQb3N0KEV4cChsKSwgdGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgc3dpdGNoICh0KSB7XG4gICAgICB8IChbXCIoKVwiXSwgW10pID0+XG4gICAgICAgIHJldChBcChsLCB7aWRzOiBbSWQubnVsbGFyeV9hcF9mbGFnXSwgdGVybTogVHJpdn0pKVxuICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtFeHAoYXJnKV0pID0+IHJldChBcChsLCBhcmcpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oRXhwKGwpLCB0aWxlcywgRXhwKHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAoaXNfdHVwbGVfZXhwKHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+IHJldChUdXBsZShbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICAgIHJldChcbiAgICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICB8IChbXCIrXCJdLCBbXSkgPT4gQmluT3AoSW50KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIipcIl0sIFtdKSA9PiBCaW5PcChJbnQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIioqXCJdLCBbXSkgPT4gQmluT3AoSW50KFBvd2VyKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIvXCJdLCBbXSkgPT4gQmluT3AoSW50KERpdmlkZSksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPFwiXSwgW10pID0+IEJpbk9wKEludChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPlwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PVwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09XCJdLCBbXSkgPT4gQmluT3AoSW50KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIrLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiouXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi8uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoRGl2aWRlKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIqKi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChQb3dlciksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPC5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCImJlwiXSwgW10pID0+IEJpbk9wKEJvb2woQW5kKSwgbCwgcilcbiAgICAgICAgICB8IChbXCJ8fFwiXSwgW10pID0+IEJpbk9wKEJvb2woT3IpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjo6XCJdLCBbXSkgPT4gQ29ucyhsLCByKVxuICAgICAgICAgIHwgKFtcIjtcIl0sIFtdKSA9PiBTZXEobCwgcilcbiAgICAgICAgICB8IChbXCIrK1wiXSwgW10pID0+IEJpbk9wKFN0cmluZyhDb25jYXQpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiQ9PVwiXSwgW10pID0+IEJpbk9wKFN0cmluZyhFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcInw+XCJdLCBbXSkgPT4gUGlwZWxpbmUobCwgcilcbiAgICAgICAgICB8IChbXCJAXCJdLCBbXSkgPT4gTGlzdENvbmNhdChsLCByKVxuICAgICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfVxuICB8IHRtID0+IHJldChob2xlKHRtKSk7XG59XG5cbmFuZCBwYXQgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCAodGVybSwgaW5uZXJfaWRzKSA9IHBhdF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCkgQCBpbm5lcl9pZHM7XG4gIHJldHVybihwID0+IFBhdChwKSwgaWRzLCB7aWRzLCB0ZXJtfSk7XG59XG5hbmQgcGF0X3Rlcm06IHVuc29ydGVkID0+IChVUGF0LnRlcm0sIGxpc3QoSWQudCkpID0ge1xuICBsZXQgcmV0ID0gKHRlcm06IFVQYXQudGVybSkgPT4gKHRlcm0sIFtdKTtcbiAgbGV0IGhvbGUgPSB1bnNvcnRlZCA9PiBUZXJtLlVQYXQuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV90dXBsZSh0KSA9PiBUcml2XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV9saXN0KHQpID0+IExpc3RMaXQoW10pXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19ib29sKHQpID0+IEJvb2woYm9vbF9vZl9zdHJpbmcodCkpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19mbG9hdCh0KSA9PiBGbG9hdChmbG9hdF9vZl9zdHJpbmcodCkpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19pbnQodCkgPT4gSW50KGludF9vZl9zdHJpbmcodCkpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgPT5cbiAgICAgICAgICBsZXQgcyA9IFJlLlN0ci5zdHJpbmdfYWZ0ZXIodCwgMSk7XG4gICAgICAgICAgbGV0IHMgPSBSZS5TdHIuc3RyaW5nX2JlZm9yZShzLCBTdHJpbmcubGVuZ3RoKHMpIC0gMSk7XG4gICAgICAgICAgU3RyaW5nKHMpO1xuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfdmFyKHQpID0+IFZhcih0KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfd2lsZCh0KSA9PiBXaWxkXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19jdHIodCkgPT4gQ29uc3RydWN0b3IodClcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiB0ICE9IFwiIFwiICYmICFGb3JtLmlzX2V4cGxpY2l0X2hvbGUodCkgPT5cbiAgICAgICAgICBJbnZhbGlkKHQpXG4gICAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbUGF0KGJvZHkpXSkgPT4gUGFyZW5zKGJvZHkpXG4gICAgICAgIHwgKFtcIltcIiwgXCJdXCJdLCBbUGF0KGJvZHkpXSkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGJvZHkpIHtcbiAgICAgICAgICB8IHt0ZXJtOiBUdXBsZShwcyksIF99ID0+IExpc3RMaXQocHMpXG4gICAgICAgICAgfCB0ZXJtID0+IExpc3RMaXQoW3Rlcm1dKVxuICAgICAgICAgIH1cbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUG9zdChQYXQobCksIHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbUGF0KGFyZyldKSA9PiBBcChsLCBhcmcpXG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFByZShfKSBhcyB0bSA9PiByZXQoaG9sZSh0bSkpXG4gIHwgQmluKFBhdChwKSwgdGlsZXMsIFR5cCh0eSkpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCAoW1wiOlwiXSwgW10pKV0sIFtdKSA9PiByZXQoVHlwZUFubihwLCB0eSkpXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgQmluKFBhdChsKSwgdGlsZXMsIFBhdChyKSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKGlzX3R1cGxlX3BhdCh0aWxlcykpIHtcbiAgICB8IFNvbWUoYmV0d2Vlbl9raWRzKSA9PiByZXQoVHVwbGUoW2xdIEAgYmV0d2Vlbl9raWRzIEAgW3JdKSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICAgIHwgKFsoX2lkLCAoW1wiOjpcIl0sIFtdKSldLCBbXSkgPT4gcmV0KENvbnMobCwgcikpXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIH1cbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuYW5kIHR5cCA9IHVuc29ydGVkID0+IHtcbiAgbGV0ICh0ZXJtLCBpbm5lcl9pZHMpID0gdHlwX3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKSBAIGlubmVyX2lkcztcbiAgcmV0dXJuKHR5ID0+IFR5cCh0eSksIGlkcywge2lkcywgdGVybX0pO1xufVxuYW5kIHR5cF90ZXJtOiB1bnNvcnRlZCA9PiAoVVR5cC50ZXJtLCBsaXN0KElkLnQpKSA9IHtcbiAgbGV0IHJldCA9ICh0ZXJtOiBVVHlwLnRlcm0pID0+ICh0ZXJtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVGVybS5VVHlwLmhvbGUoa2lkc19vZl91bnNvcnRlZCh1bnNvcnRlZCkpO1xuICBmdW5cbiAgfCBPcCh0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHRpbGUpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodGlsZSkge1xuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfdHVwbGUodCkgPT4gVHVwbGUoW10pXG4gICAgICAgIHwgKFtcIkJvb2xcIl0sIFtdKSA9PiBCb29sXG4gICAgICAgIHwgKFtcIkludFwiXSwgW10pID0+IEludFxuICAgICAgICB8IChbXCJGbG9hdFwiXSwgW10pID0+IEZsb2F0XG4gICAgICAgIHwgKFtcIlN0cmluZ1wiXSwgW10pID0+IFN0cmluZ1xuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfdHlwX3Zhcih0KSA9PiBWYXIodClcbiAgICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtUeXAoYm9keSldKSA9PiBQYXJlbnMoYm9keSlcbiAgICAgICAgfCAoW1wiW1wiLCBcIl1cIl0sIFtUeXAoYm9keSldKSA9PiBMaXN0KGJvZHkpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gdCAhPSBcIiBcIiAmJiAhRm9ybS5pc19leHBsaWNpdF9ob2xlKHQpID0+XG4gICAgICAgICAgSW52YWxpZCh0KVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQb3N0KFR5cCh0KSwgdGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoXywgKFtcIihcIiwgXCIpXCJdLCBbVHlwKHR5cCldKSldLCBbXSkgPT4gcmV0KEFwKHQsIHR5cCkpXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKHRpbGVzLCBUeXAoe3Rlcm06IFN1bSh0MCksIGlkc30pKSBhcyB0bSA9PlxuICAgIC8qIENhc2UgZm9yIGxlYWRpbmcgcHJlZml4ICsgcHJlY2VlZGluZyBhIHN1bSAqL1xuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF8sIChbXCIrXCJdLCBbXSkpXSwgW10pID0+IChTdW0odDApLCBpZHMpXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKHRpbGVzLCBUeXAodCkpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoXywgKFtcIitcIl0sIFtdKSldLCBbXSkgPT4gcmV0KFN1bShbcGFyc2Vfc3VtX3Rlcm0odCldKSlcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oVHlwKHQxKSwgdGlsZXMsIFR5cCh0MikpIGFzIHRtIHdoZW4gaXNfdHlwX2JzdW0odGlsZXMpICE9IE5vbmUgPT5cbiAgICBzd2l0Y2ggKGlzX3R5cF9ic3VtKHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+XG4gICAgICByZXQoU3VtKExpc3QubWFwKHBhcnNlX3N1bV90ZXJtLCBbdDFdIEAgYmV0d2Vlbl9raWRzIEAgW3QyXSkpKVxuICAgIHwgTm9uZSA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihUeXAobCksIHRpbGVzLCBUeXAocikpIGFzIHRtID0+XG4gICAgc3dpdGNoIChpc190dXBsZV90eXAodGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT4gcmV0KFR1cGxlKFtsXSBAIGJldHdlZW5fa2lkcyBAIFtyXSkpXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgICB8IChbKF9pZCwgKFtcIi0+XCJdLCBbXSkpXSwgW10pID0+IHJldChBcnJvdyhsLCByKSlcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfVxuICB8IHRtID0+IHJldChob2xlKHRtKSk7XG59XG5hbmQgdHBhdCA9IHVuc29ydGVkID0+IHtcbiAgbGV0IHRlcm0gPSB0cGF0X3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKTtcbiAgcmV0dXJuKHR5ID0+IFRQYXQodHkpLCBpZHMsIHtpZHMsIHRlcm19KTtcbn1cbmFuZCB0cGF0X3Rlcm06IHVuc29ydGVkID0+IFVUUGF0LnRlcm0gPSB7XG4gIGxldCByZXQgPSAodGVybTogVVRQYXQudGVybSkgPT4gdGVybTtcbiAgbGV0IGhvbGUgPSB1bnNvcnRlZCA9PiBUZXJtLlVUUGF0LmhvbGUoa2lkc19vZl91bnNvcnRlZCh1bnNvcnRlZCkpO1xuICBmdW5cbiAgfCBPcCh0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHRpbGUpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodGlsZSkge1xuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfdHlwX3Zhcih0KSA9PiBWYXIodClcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiB0ICE9IFwiIFwiICYmICFGb3JtLmlzX2V4cGxpY2l0X2hvbGUodCkgPT5cbiAgICAgICAgICBJbnZhbGlkKHQpXG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IChQcmUoXykgfCBQb3N0KF8pKSBhcyB0bSA9PiByZXQoaG9sZSh0bSkpXG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cblxuLy8gYW5kIHJ1bCA9IHVuc29ydGVkID0+IHtcbi8vICAgbGV0IHRlcm0gPSBydWxfdGVybSh1bnNvcnRlZCk7XG4vLyAgIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpO1xuLy8gICByZXR1cm4ociA9PiBSdWwociksIGlkcywge2lkcywgdGVybX0pO1xuLy8gfVxuYW5kIHJ1bCA9ICh1bnNvcnRlZDogdW5zb3J0ZWQpOiBVUnVsLnQgPT4ge1xuICBsZXQgaG9sZSA9IFRlcm0uVVJ1bC5Ib2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgc3dpdGNoIChleHAodW5zb3J0ZWQpKSB7XG4gIHwge3Rlcm06IE11bHRpSG9sZShfKSwgX30gPT5cbiAgICBzd2l0Y2ggKHVuc29ydGVkKSB7XG4gICAgfCBCaW4oRXhwKHNjcnV0KSwgdGlsZXMsIEV4cChsYXN0X2NsYXVzZSkpID0+XG4gICAgICBzd2l0Y2ggKGlzX3J1bGVzKHRpbGVzKSkge1xuICAgICAgfCBTb21lKChwcywgbGVhZGluZ19jbGF1c2VzKSkgPT4ge1xuICAgICAgICAgIGlkczogaWRzKHVuc29ydGVkKSxcbiAgICAgICAgICB0ZXJtOlxuICAgICAgICAgICAgUnVsZXMoc2NydXQsIExpc3QuY29tYmluZShwcywgbGVhZGluZ19jbGF1c2VzIEAgW2xhc3RfY2xhdXNlXSkpLFxuICAgICAgICB9XG4gICAgICB8IE5vbmUgPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZX1cbiAgICAgIH1cbiAgICB8IF8gPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZX1cbiAgICB9XG4gIHwgZSA9PiB7aWRzOiBbXSwgdGVybTogUnVsZXMoZSwgW10pfVxuICB9O1xufVxuXG5hbmQgdW5zb3J0ZWQgPSAoc2tlbDogU2tlbC50LCBzZWc6IFNlZ21lbnQudCk6IHVuc29ydGVkID0+IHtcbiAgbGV0IHRpbGVfa2lkcyA9IChwOiBQaWVjZS50KTogbGlzdChhbnkpID0+XG4gICAgc3dpdGNoIChwKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+IFtdXG4gICAgfCBUaWxlKHttb2xkLCBzaGFyZHMsIGNoaWxkcmVuLCBffSkgPT5cbiAgICAgIEFiYS5hYmFfdHJpcGxlcyhBYmEubWsoc2hhcmRzLCBjaGlsZHJlbikpXG4gICAgICB8PiBMaXN0Lm1hcCgoKGwsIGtpZCwgcikpID0+IHtcbiAgICAgICAgICAgbGV0IHMgPSBsICsgMSA9PSByID8gTGlzdC5udGgobW9sZC5pbl8sIGwpIDogU29ydC5Bbnk7XG4gICAgICAgICAgIGdvX3MocywgU2VnbWVudC5za2VsKGtpZCksIGtpZCk7XG4gICAgICAgICB9KVxuICAgIH07XG5cbiAgbGV0IHJvb3Q6IEFiYS50KFBpZWNlLnQsIFNrZWwudCkgPVxuICAgIFNrZWwucm9vdChza2VsKSB8PiBBYmEubWFwX2EoTGlzdC5udGgoc2VnKSk7XG5cbiAgLy8gbWFpbnRhaW5pbmcgdGhpcyBhbHRlcm5hdGluZyBvcmRlcmVkIHN0cnVjdHVyZVxuICAvLyBmb3IgaGFuZGxpbmcgaW5jb21wbGV0ZSBmb3JtcyBsYXRlclxuICBsZXQgdGlsZXMgPVxuICAgIHJvb3RcbiAgICB8PiBBYmEubWFwX2FiYXMoKChwX2wsIGtpZCwgcF9yKSkgPT4ge1xuICAgICAgICAgbGV0IChfLCBzX2wpID0gUGllY2UubmliX3NvcnRzKHBfbCk7XG4gICAgICAgICBsZXQgKHNfciwgXykgPSBQaWVjZS5uaWJfc29ydHMocF9yKTtcbiAgICAgICAgIGxldCBzID0gc19sID09IHNfciA/IHNfbCA6IFNvcnQuQW55O1xuICAgICAgICAgZ29fcyhzLCBraWQsIHNlZyk7XG4gICAgICAgfSlcbiAgICB8PiBBYmEubWFwX2EocFxuICAgICAgICAgLy8gVE9ETyB0aHJvdyBwcm9wZXIgZXhjZXB0aW9uXG4gICAgICAgICA9PiAoUGllY2UuaWQocCksIEFiYS5tayh0b2tlbnMocCksIHRpbGVfa2lkcyhwKSkpKTtcblxuICBsZXQgKGxfc29ydCwgcl9zb3J0KSA9IHtcbiAgICBsZXQgcF9sID0gQWJhLmZpcnN0X2Eocm9vdCk7XG4gICAgbGV0IHBfciA9IEFiYS5sYXN0X2Eocm9vdCk7XG4gICAgLy8gVE9ETyB0aHJvdyBwcm9wZXIgZXhjZXB0aW9uc1xuICAgIGxldCAobCwgXykgPSBPcHRpb24uZ2V0KFBpZWNlLm5pYnMocF9sKSk7XG4gICAgbGV0IChfLCByKSA9IE9wdGlvbi5nZXQoUGllY2UubmlicyhwX3IpKTtcbiAgICAobC5zb3J0LCByLnNvcnQpO1xuICB9O1xuXG4gIHN3aXRjaCAoc2tlbCkge1xuICB8IE9wKF8pID0+IE9wKHRpbGVzKVxuICB8IFByZShfLCByKSA9PiBQcmUodGlsZXMsIGdvX3Mocl9zb3J0LCByLCBzZWcpKVxuICB8IFBvc3QobCwgXykgPT4gUG9zdChnb19zKGxfc29ydCwgbCwgc2VnKSwgdGlsZXMpXG4gIHwgQmluKGwsIF8sIHIpID0+IEJpbihnb19zKGxfc29ydCwgbCwgc2VnKSwgdGlsZXMsIGdvX3Mocl9zb3J0LCByLCBzZWcpKVxuICB9O1xufTtcblxubGV0IGdvID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMCxcbiAgICBzZWcgPT4ge1xuICAgICAgbWFwIDo9IFRlcm1NYXAuZW1wdHk7XG4gICAgICBsZXQgZSA9IGV4cCh1bnNvcnRlZChTZWdtZW50LnNrZWwoc2VnKSwgc2VnKSk7XG4gICAgICAoZSwgbWFwXik7XG4gICAgfSxcbiAgKTtcblxubGV0IGZyb21femlwID0gKH5kdW1wX2JhY2twYWNrOiBib29sLCB+ZXJhc2VfYnVmZmVyOiBib29sLCB6OiBaaXBwZXIudCkgPT4ge1xuICBsZXQgc2VnID0gWmlwcGVyLnNtYXJ0X3NlZyh+ZHVtcF9iYWNrcGFjaywgfmVyYXNlX2J1ZmZlciwgeik7XG4gIGdvKHNlZyk7XG59O1xuXG5sZXQgZnJvbV96aXBfZm9yX3ZpZXcgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLFxuICAgIGZyb21femlwKH5kdW1wX2JhY2twYWNrPWZhbHNlLCB+ZXJhc2VfYnVmZmVyPXRydWUpLFxuICApO1xuXG5sZXQgZnJvbV96aXBfZm9yX3NlbSA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsXG4gICAgZnJvbV96aXAofmR1bXBfYmFja3BhY2s9dHJ1ZSwgfmVyYXNlX2J1ZmZlcj10cnVlKSxcbiAgKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qKlxuICBUaGUgcmVzdWx0IG9mIGEgcHJvZ3JhbSBldmFsdWF0aW9uLiBJbmNsdWRlcyB0aGUgeyF0eXBlOkV2YWx1YXRvclJlc3VsdC50fSxcbiAgdGhlIHshdHlwZTpFdmFsdWF0b3JTdGF0ZX0sIGFuZCB0aGUgdHJhY2tlZCBob2xlIGluc3RhbmNlIGluZm9ybWF0aW9uXG4gICh7IXR5cGU6SG9sZUluc3RhbmNlSW5mby50fSkuIENvbnN0cnVjdGVkIGJ5IHshdmFsOlByb2dyYW0uZ2V0X3Jlc3VsdH0uXG4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgaW5uZXIgPSB7XG4gIHJlc3VsdDogRXZhbHVhdG9yUmVzdWx0LnQsXG4gIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvciA9XG4gIHwgVGltZW91dFxuICB8IEV2YXVsYXRvckVycm9yKEV2YWx1YXRvckVycm9yLnQpXG4gIHwgVW5rbm93bkV4Y2VwdGlvbihzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE9mZihESEV4cC50KSAvL2VsYWJcbiAgfCBSZXN1bHRPayhpbm5lcilcbiAgfCBSZXN1bHRGYWlsKGVycm9yKVxuICB8IFJlc3VsdFBlbmRpbmc7XG5cbmxldCBnZXRfZGhleHAgPSAocjogaW5uZXIpID0+IEV2YWx1YXRvclJlc3VsdC51bmJveChyLnJlc3VsdCk7XG5sZXQgZ2V0X3N0YXRlID0gKHI6IGlubmVyKSA9PiByLnN0YXRlO1xuIiwibW9kdWxlIFN0YXRpY3MgPSB7XG4gIGxldCBta19tYXAnID1cbiAgICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBlID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcChcbiAgICAgICAgfmN0eD1CdWlsdGlucy5jdHhfaW5pdCxcbiAgICAgICAgfmFuY2VzdG9ycz1bXSxcbiAgICAgICAgZSxcbiAgICAgICAgSWQuTWFwLmVtcHR5LFxuICAgICAgKVxuICAgICAgfD4gc25kXG4gICAgfSk7XG4gIGxldCBta19tYXAgPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGV4cCkgPT5cbiAgICBjb3JlLnN0YXRpY3MgPyBta19tYXAnKGV4cCkgOiBJZC5NYXAuZW1wdHk7XG5cbiAgbGV0IG1rX21hcF9hbmRfaW5mb19jdHggPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIChjdHgsIGUpID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzPVtdLCBlLCBJZC5NYXAuZW1wdHkpXG4gICAgfSk7XG4gIGxldCBta19tYXBfYW5kX2luZm9fY3R4ID0gKGNvcmU6IENvcmVTZXR0aW5ncy50LCBjdHgsIGV4cCkgPT5cbiAgICBjb3JlLnN0YXRpY3NcbiAgICAgID8ge1xuICAgICAgICBsZXQgKGluZm8sIG1hcCkgPSBta19tYXBfYW5kX2luZm9fY3R4KGN0eCwgZXhwKTtcbiAgICAgICAgKFNvbWUoaW5mbyksIG1hcCk7XG4gICAgICB9XG4gICAgICA6IChOb25lLCBJZC5NYXAuZW1wdHkpO1xuXG4gIGxldCBta19tYXBfY3R4ID1cbiAgICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCAoY3R4LCBlKSA9PiB7XG4gICAgICBTdGF0aWNzLnVleHBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycz1bXSwgZSwgSWQuTWFwLmVtcHR5KSB8PiBzbmRcbiAgICB9KTtcbiAgbGV0IG1rX21hcF9jdHggPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGN0eCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljcyA/IG1rX21hcF9jdHgoY3R4LCBleHApIDogSWQuTWFwLmVtcHR5O1xufTtcblxubGV0IGRoX2VyciA9IChlcnJvcjogc3RyaW5nKTogREhFeHAudCA9PiBCb3VuZFZhcihlcnJvcik7XG5cbmxldCBlbGFib3JhdGUgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBFbGFib3JhdG9yLnVleHBfZWxhYik7XG5cbmV4Y2VwdGlvbiBEb2VzTm90RWxhYm9yYXRlO1xubGV0IGVsYWJvcmF0ZSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBtYXAsIHRlcm0pOiBESEV4cC50ID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5zdGF0aWNzID0+IGRoX2VycihcIlN0YXRpY3MgZGlzYWJsZWRcIilcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzICYmICFzZXR0aW5ncy5lbGFib3JhdGUgPT5cbiAgICBkaF9lcnIoXCJEeW5hbWljcyAmIEVsYWJvcmF0aW9uIGRpc2FibGVkXCIpXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZWxhYm9yYXRlKG1hcCwgdGVybSkpIHtcbiAgICB8IERvZXNOb3RFbGFib3JhdGUgPT4gZGhfZXJyKFwiRWxhYm9yYXRpb24gcmV0dXJucyBOb25lXCIpXG4gICAgfCBFbGFib3JhdGVzKGQsIF8sIF8pID0+IGRcbiAgICB9XG4gIH07XG5cbmxldCBldmFsdWF0ZSA9XG4gICAgKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5lbnY9QnVpbHRpbnMuZW52X2luaXQsIGVsYWI6IERIRXhwLnQpXG4gICAgOiBQcm9ncmFtUmVzdWx0LnQgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzID0+IE9mZihlbGFiKVxuICB8IF8gPT5cbiAgICBzd2l0Y2ggKEV2YWx1YXRvci5ldmFsdWF0ZShlbnYsIGVsYWIpKSB7XG4gICAgfCBleGNlcHRpb24gKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihyZWFzb24pKSA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkV2YWx1YXRvckVycm9yOlwiICsrIEV2YWx1YXRvckVycm9yLnNob3cocmVhc29uKSk7XG4gICAgICBSZXN1bHRGYWlsKEV2YXVsYXRvckVycm9yKHJlYXNvbikpO1xuICAgIHwgZXhjZXB0aW9uIGV4biA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkVYTjpcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgICBSZXN1bHRGYWlsKFVua25vd25FeGNlcHRpb24oUHJpbnRleGMudG9fc3RyaW5nKGV4bikpKTtcbiAgICB8IChzdGF0ZSwgcmVzdWx0KSA9PiBSZXN1bHRPayh7cmVzdWx0LCBzdGF0ZX0pXG4gICAgfVxuICB9O1xuXG5sZXQgZXZhbF96ID1cbiAgICAoXG4gICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgfmN0eF9pbml0OiBDdHgudCxcbiAgICAgIH5lbnZfaW5pdDogRW52aXJvbm1lbnQudCxcbiAgICAgIHo6IFppcHBlci50LFxuICAgIClcbiAgICA6IFByb2dyYW1SZXN1bHQudCA9PiB7XG4gIGxldCAodGVybSwgXykgPSBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKHopO1xuICBsZXQgaW5mb19tYXAgPSBTdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MsIGN0eF9pbml0LCB0ZXJtKTtcbiAgbGV0IGQgPSBlbGFib3JhdGUofnNldHRpbmdzLCBpbmZvX21hcCwgdGVybSk7XG4gIGV2YWx1YXRlKH5zZXR0aW5ncywgfmVudj1lbnZfaW5pdCwgZCk7XG59O1xuIiwib3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xub3BlbiBTdWdnZXN0aW9uO1xuXG4vKiBTdWdnZXN0IHRoZSB0b2tlbiBhdCB0aGUgdG9wIG9mIHRoZSBiYWNrcGFjaywgaWYgd2UgY2FuIHB1dCBpdCBkb3duICovXG5sZXQgc3VnZ2VzdF9iYWNrcGFjayA9ICh6OiBaaXBwZXIudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIC8qIE5vdGU6IFNvcnQgY2hlY2sgdW5uZWNlc3NhcnkgaGVyZSBhcyB3b3VsZG4ndCBiZSBhYmxlIHRvIHB1dCBkb3duICovXG4gIHN3aXRjaCAoei5iYWNrcGFjaykge1xuICB8IFtdID0+IFtdXG4gIHwgW3tjb250ZW50LCBffSwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKGNvbnRlbnQpIHtcbiAgICB8IFtUaWxlKHtsYWJlbCwgc2hhcmRzOiBbaWR4XSwgX30pXSB3aGVuIFppcHBlci5jYW5fcHV0X2Rvd24oeikgPT4gW1xuICAgICAgICB7Y29udGVudDogTGlzdC5udGgobGFiZWwsIGlkeCksIHN0cmF0ZWd5OiBBbnkoRnJvbUJhY2twYWNrKX0sXG4gICAgICBdXG4gICAgfCBfID0+IFtdXG4gICAgfVxuICB9O1xufTtcblxubGV0IHN1Z2dlc3QgPSAoY2k6IEluZm8udCwgejogWmlwcGVyLnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT4ge1xuICAvKiBOT1RFOiBTb3J0aW5nIGVuc3VyZXMgdGhhdCBpZiB3ZSBoYXZlIGFuIGV4YWN0IG1hdGNoIGFscmVhZHksXG4gICAqIHdlIHdvbid0IHN1Z2dlc3QgZXh0ZW5kaW5nIGl0LCBidXQgc3RyYWlnaHQtdXAgbGV4aWNhbCBzb3J0aW5nXG4gICAqIG1heSBub3QgYmUgZGVzaXJhYmxlIGluIG90aGVyIHdheXMsIGZvciBleGFtcGxlIG1heWJlIHdlIHdhbnRcbiAgICogcmVjZW5jeSBiaWFzIGluIGN0eC4gUmV2aXNpdCB0aGlzIGxhdGVyLiBJJ20gc29ydGluZyBiZWZvcmVcbiAgICogY29tYmluYXRpb24gYmVjYXVzZSB3ZSB3YW50IGJhY2twYWNrIGNhbmRpZGF0ZXMgdG8gc2hvdyB1cCBmaXJzdCAqL1xuICBzdWdnZXN0X2JhY2twYWNrKHopXG4gIEAgKFxuICAgIEFzc2lzdGFudEZvcm1zLnN1Z2dlc3Rfb3BlcmFuZChjaSlcbiAgICBAIEFzc2lzdGFudEZvcm1zLnN1Z2dlc3RfbGVhZGluZyhjaSlcbiAgICBAIEFzc2lzdGFudEN0eC5zdWdnZXN0X3ZhcmlhYmxlKGNpKVxuICAgIEAgQXNzaXN0YW50Q3R4LnN1Z2dlc3RfbG9va2FoZWFkX3ZhcmlhYmxlKGNpKVxuICAgIHw+IExpc3Quc29ydChTdWdnZXN0aW9uLmNvbXBhcmUpXG4gIClcbiAgQCAoQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9vcGVyYXRvcihjaSkgfD4gTGlzdC5zb3J0KFN1Z2dlc3Rpb24uY29tcGFyZSkpO1xufTtcblxuLyogSWYgdGhlcmUgaXMgYSBtb25vdGlsZSB0byB0aGUgbGVmdCBvZiB0aGUgY2FyZXQsIHJldHVybiBpdC4gV2VcbiAqIGN1cnJlbnRseSBvbmx5IG1ha2Ugc3VnZ2VzdGlvbnMgaW4gc3VjaCBzaXR1YXRpb25zICovXG5sZXQgdG9rZW5fdG9fbGVmdCA9ICh6OiBaaXBwZXIudCk6IG9wdGlvbihzdHJpbmcpID0+XG4gIHN3aXRjaCAoXG4gICAgei5jYXJldCxcbiAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyB8PiBmc3QgfD4gTGlzdC5yZXYsXG4gICAgei5yZWxhdGl2ZXMuc2libGluZ3MgfD4gc25kLFxuICApIHtcbiAgfCAoT3V0ZXIsIFtUaWxlKHtsYWJlbDogW3Rva190b19sZWZ0XSwgX30pLCAuLi5fXSwgXykgPT5cbiAgICBTb21lKHRva190b19sZWZ0KVxuICB8IF8gPT4gTm9uZVxuICB9O1xuXG4vKiBUaGUgc2VsZWN0aW9uIGJ1ZmZlciB1c2VkIGJ5IFR5RGkgaXMgY3VycmVudGx5IHVuc3RydWN0dXJlZDsgaXQgc2ltcGx5XG4gKiBob2xkcyBhbiB1bnBhcnNlZCBzdHJpbmcsIHdoaWNoIGlzIHBhcnNlZCB2aWEgdGhlIHNhbWUgbWVjaGFuaXNtIGFzXG4gKiBQYXN0ZSBvbmx5IHdoZW4gYSBzdWdnZXN0aW9uIGlzIGFjY2VwdGVkLiAqL1xubGV0IG1rX3VucGFyc2VkX2J1ZmZlciA9XG4gICAgKH5zb3J0OiBTb3J0LnQsIHNpYnM6IFNpYmxpbmdzLnQsIHQ6IFRva2VuLnQpOiBTZWdtZW50LnQgPT4ge1xuICBsZXQgbW9sZCA9IFNpYmxpbmdzLm1vbGRfZml0dGluZ19iZXR3ZWVuKHNvcnQsIFByZWNlZGVuY2UubWF4LCBzaWJzKTtcbiAgW1RpbGUoe2lkOiBJZC5taygpLCBsYWJlbDogW3RdLCBzaGFyZHM6IFswXSwgY2hpbGRyZW46IFtdLCBtb2xkfSldO1xufTtcblxuLyogSWYgJ2N1cnJlbnQnIGlzIGEgcHJvcGVyIHByZWZpeCBvZiAnY2FuZGlkYXRlJywgcmV0dXJuIHRoZVxuICogc3VmZml4IHN1Y2ggdGhhdCBjdXJyZW50ICsrIHN1ZmZpeCA9PSBjYW5kaWRhdGUgKi9cbmxldCBzdWZmaXhfb2YgPSAoY2FuZGlkYXRlOiBUb2tlbi50LCBjdXJyZW50OiBUb2tlbi50KTogb3B0aW9uKFRva2VuLnQpID0+IHtcbiAgbGV0IGNhbmRpZGF0ZV9zdWZmaXggPVxuICAgIFN0cmluZy5zdWIoXG4gICAgICBjYW5kaWRhdGUsXG4gICAgICBTdHJpbmcubGVuZ3RoKGN1cnJlbnQpLFxuICAgICAgU3RyaW5nLmxlbmd0aChjYW5kaWRhdGUpIC0gU3RyaW5nLmxlbmd0aChjdXJyZW50KSxcbiAgICApO1xuICBjYW5kaWRhdGVfc3VmZml4ID09IFwiXCIgPyBOb25lIDogU29tZShjYW5kaWRhdGVfc3VmZml4KTtcbn07XG5cbi8qIFBFUkY6IFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlICovXG5sZXQgel90b19jaSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB+Y3R4OiBDdHgudCwgejogWmlwcGVyLnQpID0+IHtcbiAgbGV0IG1hcCA9XG4gICAgelxuICAgIHw+IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW1cbiAgICB8PiBmc3RcbiAgICB8PiBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLCBjdHgpO1xuICBsZXQqIGluZGV4ID0gSW5kaWNhdGVkLmluZGV4KHopO1xuICBJZC5NYXAuZmluZF9vcHQoaW5kZXgsIG1hcCk7XG59O1xuXG4vKiBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIHN1Z2dlc3Rpb24gYnVmZmVyICovXG5sZXQgZ2V0X2J1ZmZlciA9ICh6OiBaaXBwZXIudCk6IG9wdGlvbihUb2tlbi50KSA9PlxuICBzd2l0Y2ggKHouc2VsZWN0aW9uLm1vZGUsIHouc2VsZWN0aW9uLmNvbnRlbnQpIHtcbiAgfCAoQnVmZmVyKFVucGFyc2VkKSwgW1RpbGUoe2xhYmVsOiBbY29tcGxldGlvbl0sIF99KV0pID0+XG4gICAgU29tZShjb21wbGV0aW9uKVxuICB8IF8gPT4gTm9uZVxuICB9O1xuXG4vKiBQb3B1bGF0ZXMgdGhlIHN1Z2dlc3Rpb24gYnVmZmVyIHdpdGggYSB0eXBlLWRpcmVjdGVkIHN1Z2dlc3Rpb24gKi9cbmxldCBzZXRfYnVmZmVyID0gKH5zZXR0aW5ncywgfmN0eDogQ3R4LnQsIHo6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gIGxldCogdG9rX3RvX2xlZnQgPSB0b2tlbl90b19sZWZ0KHopO1xuICBsZXQqIGNpID0gel90b19jaSh+c2V0dGluZ3MsIH5jdHgsIHopO1xuICBsZXQgc3VnZ2VzdGlvbnMgPSBzdWdnZXN0KGNpLCB6KTtcbiAgbGV0IHN1Z2dlc3Rpb25zID1cbiAgICBzdWdnZXN0aW9uc1xuICAgIHw+IExpc3QuZmlsdGVyKCh7Y29udGVudCwgX306IFN1Z2dlc3Rpb24udCkgPT5cbiAgICAgICAgIFN0cmluZy5zdGFydHNfd2l0aCh+cHJlZml4PXRva190b19sZWZ0LCBjb250ZW50KVxuICAgICAgICk7XG4gIGxldCogdG9wX3N1Z2dlc3Rpb24gPSBzdWdnZXN0aW9ucyB8PiBVdGlsLkxpc3RVdGlsLmhkX29wdDtcbiAgbGV0KiBzdWdnZXN0aW9uX3N1ZmZpeCA9IHN1ZmZpeF9vZih0b3Bfc3VnZ2VzdGlvbi5jb250ZW50LCB0b2tfdG9fbGVmdCk7XG4gIGxldCBjb250ZW50ID1cbiAgICBta191bnBhcnNlZF9idWZmZXIoXG4gICAgICB+c29ydD1JbmZvLnNvcnRfb2YoY2kpLFxuICAgICAgei5yZWxhdGl2ZXMuc2libGluZ3MsXG4gICAgICBzdWdnZXN0aW9uX3N1ZmZpeCxcbiAgICApO1xuICBsZXQgeiA9IFppcHBlci5zZXRfYnVmZmVyKHosIH5jb250ZW50LCB+bW9kZT1VbnBhcnNlZCk7XG4gIFNvbWUoeik7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICB0ZXN0X21hcDogVGVzdE1hcC50LFxuICBzdGF0dXNlczogbGlzdChUZXN0U3RhdHVzLnQpLFxuICBkZXNjcmlwdGlvbnM6IGxpc3Qoc3RyaW5nKSxcbiAgdG90YWw6IGludCxcbiAgcGFzc2luZzogaW50LFxuICBmYWlsaW5nOiBpbnQsXG4gIHVuZmluaXNoZWQ6IGludCxcbn07XG5cbmxldCBta19yZXN1bHRzID0gKH5kZXNjcmlwdGlvbnM9W10sIHRlc3RfbWFwOiBUZXN0TWFwLnQpOiB0ID0+IHtcbiAgdGVzdF9tYXAsXG4gIHN0YXR1c2VzOiB0ZXN0X21hcCB8PiBMaXN0Lm1hcChyID0+IHIgfD4gc25kIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzKSxcbiAgZGVzY3JpcHRpb25zLFxuICB0b3RhbDogVGVzdE1hcC5jb3VudCh0ZXN0X21hcCksXG4gIHBhc3Npbmc6IFRlc3RNYXAuY291bnRfc3RhdHVzKFBhc3MsIHRlc3RfbWFwKSxcbiAgZmFpbGluZzogVGVzdE1hcC5jb3VudF9zdGF0dXMoRmFpbCwgdGVzdF9tYXApLFxuICB1bmZpbmlzaGVkOiBUZXN0TWFwLmNvdW50X3N0YXR1cyhJbmRldCwgdGVzdF9tYXApLFxufTtcblxubGV0IHJlc3VsdF9zdW1tYXJ5X3N0ciA9XG4gICAgKH5uLCB+cCwgfnEsIH5uX3N0ciwgfm5zX3N0ciwgfnBfc3RyLCB+cV9zdHIsIH5yX3N0cik6IHN0cmluZyA9PiB7XG4gIGxldCBvbmVfcCA9IFwib25lIGlzIFwiICsrIHBfc3RyICsrIFwiIFwiO1xuICBsZXQgb25lX3EgPSBcIm9uZSBpcyBcIiArKyBxX3N0ciArKyBcIiBcIjtcbiAgbGV0IG1ueV9wID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHAsIHBfc3RyKTtcbiAgbGV0IG1ueV9xID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHEsIHFfc3RyKTtcbiAgbGV0IG9mX24gPSBQcmludGYuc3ByaW50ZihcIk91dCBvZiAlZCAlcywgXCIsIG4sIG5zX3N0cik7XG4gIHN3aXRjaCAobiwgcCwgcSkge1xuICB8ICgwLCBfLCBfKSA9PiBcIk5vIFwiICsrIG5zX3N0ciArKyBcIiBhdmFpbGFibGUuXCJcbiAgfCAoXywgMCwgMCkgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHJfc3RyICsrIFwiISBcIlxuICB8IChuLCBfLCBjKSB3aGVuIG4gPT0gYyA9PiBcIkFsbCBcIiArKyBuc19zdHIgKysgXCIgXCIgKysgcV9zdHIgKysgXCIgXCJcbiAgfCAobiwgZiwgXykgd2hlbiBuID09IGYgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDAsIDEpID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHFfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDEsIDApID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDIsIDEsIDEpID0+XG4gICAgXCJPbmUgXCIgKysgbl9zdHIgKysgXCIgXCIgKysgcF9zdHIgKysgXCIgYW5kIG9uZSBcIiArKyBxX3N0ciArKyBcIiBcIlxuICB8IChfLCAwLCAxKSA9PiBvZl9uICsrIG9uZV9xXG4gIHwgKF8sIDEsIDApID0+IG9mX24gKysgb25lX3BcbiAgfCAoXywgMSwgMSkgPT4gb2ZfbiArKyBvbmVfcCArKyBcImFuZCBcIiArKyBvbmVfcVxuICB8IChfLCAxLCBfKSA9PiBvZl9uICsrIG9uZV9wICsrIFwiYW5kIFwiICsrIG1ueV9xXG4gIHwgKF8sIF8sIDEpID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgb25lX3FcbiAgfCAoXywgMCwgXykgPT4gb2ZfbiArKyBtbnlfcVxuICB8IChfLCBfLCAwKSA9PiBvZl9uICsrIG1ueV9wXG4gIHwgKF8sIF8sIF8pID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgbW55X3FcbiAgfTtcbn07XG5cbmxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogdCk6IHN0cmluZyA9PlxuICByZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgIH5yX3N0cj1cInBhc3NpbmdcIixcbiAgKTtcbiIsIm9wZW4gVHJhbnNpdGlvbjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwID0ge1xuICBkOiBESEV4cC50LCAvLyB0ZWNobmljYWxseSBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIGRfbG9jIGFuZCBjdHhcbiAgc3RhdGU6IEV2YWx1YXRvclN0YXRlLnQsXG4gIGRfbG9jOiBESEV4cC50LCAvLyB0aGUgZXhwcmVzc2lvbiBhdCB0aGUgbG9jYXRpb24gZ2l2ZW4gYnkgY3R4XG4gIGN0eDogRXZhbEN0eC50LFxuICBrbmQ6IHN0ZXBfa2luZCxcbn07XG5cbmxldCB1bndyYXAgPSAoc3RlcCwgc2VsOiBFdmFsQ3R4LmNscykgPT5cbiAgRXZhbEN0eC51bndyYXAoc3RlcC5jdHgsIHNlbCkgfD4gT3B0aW9uLm1hcChjdHggPT4gey4uLnN0ZXAsIGN0eH0pO1xuXG5sZXQgdW53cmFwX3Vuc2FmZSA9IChzdGVwLCBzZWw6IEV2YWxDdHguY2xzKSA9PlxuICAvLyBUT0RPW01hdHRdOiBicmluZyBiYWNrIFwic2FmZVwiIHZlcnNpb25cbiAgRXZhbEN0eC51bndyYXAoc3RlcC5jdHgsIHNlbCkgfD4gT3B0aW9uLm1hcChjdHggPT4gey4uLnN0ZXAsIGN0eH0pO1xuXG5tb2R1bGUgRXZhbE9iaiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCwgLy8gdGVjaG5pY2FsbHkgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSBjdHhcbiAgICBkX2xvYzogREhFeHAudCxcbiAgICBjdHg6IEV2YWxDdHgudCxcbiAgICBrbmQ6IHN0ZXBfa2luZCxcbiAgfTtcblxuICBsZXQgbWsgPSAoY3R4LCBlbnYsIGRfbG9jLCBrbmQpID0+IHtjdHgsIGVudiwgZF9sb2MsIGtuZH07XG5cbiAgbGV0IGdldF9jdHggPSAob2JqOiB0KTogRXZhbEN0eC50ID0+IHtcbiAgICBvYmouY3R4O1xuICB9O1xuICBsZXQgZ2V0X2tpbmQgPSAob2JqOiB0KTogc3RlcF9raW5kID0+IG9iai5rbmQ7XG5cbiAgbGV0IHdyYXAgPSAoZjogRXZhbEN0eC50ID0+IEV2YWxDdHgudCwgb2JqOiB0KSA9PiB7XG4gICAgLi4ub2JqLFxuICAgIGN0eDogb2JqLmN0eCB8PiBmLFxuICB9O1xufTtcblxubW9kdWxlIERlY29tcG9zZSA9IHtcbiAgbW9kdWxlIFJlc3VsdCA9IHtcbiAgICB0eXBlIHQgPVxuICAgICAgfCBJbmRldFxuICAgICAgfCBCb3hlZFZhbHVlXG4gICAgICB8IFN0ZXAobGlzdChFdmFsT2JqLnQpKTtcblxuICAgIGxldCB1bmJveCA9IChyOiB0KTogbGlzdChFdmFsT2JqLnQpID0+IHtcbiAgICAgIHN3aXRjaCAocikge1xuICAgICAgfCBJbmRldFxuICAgICAgfCBCb3hlZFZhbHVlID0+IFtdXG4gICAgICB8IFN0ZXAob2JqcykgPT4gb2Jqc1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBEZWNvbXBvc2VFVk1vZGU6IHtcbiAgICBpbmNsdWRlXG4gICAgICBFVl9NT0RFIHdpdGhcbiAgICAgICAgdHlwZSByZXN1bHQgPSBSZXN1bHQudCBhbmQgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgfSA9IHtcbiAgICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpOyAvLyBUT0RPW01hdHRdOiBNYWtlIHN1cmUgdGhpcyBnZXRzIHBhc3NlZCBhcm91bmQgY29ycmVjdGx5XG4gICAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoUmVzdWx0LnQsICdhKTtcbiAgICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKCdiLCBSZXN1bHQudCwgQ2xvc3VyZUVudmlyb25tZW50LnQsICdhKTtcbiAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50O1xuXG4gICAgbGV0IHJlcV92YWx1ZSA9IChjb250LCB3ciwgZCkgPT4ge1xuICAgICAgc3dpdGNoIChjb250KGQpKSB7XG4gICAgICB8IFJlc3VsdC5JbmRldCA9PiAoUmVzdWx0LkluZGV0LCBkKVxuICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIGQpXG4gICAgICB8IFJlc3VsdC5TdGVwKG9ianMpID0+IChcbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSksXG4gICAgICAgICAgZCxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0ICgmJik6IChSZXN1bHQudCwgUmVzdWx0LnQpID0+IFJlc3VsdC50ID1cbiAgICAgICh1LCB2KSA9PlxuICAgICAgICBzd2l0Y2ggKHUsIHYpIHtcbiAgICAgICAgfCAoU3RlcChzczEpLCBTdGVwKHNzMikpID0+IFN0ZXAoc3MxIEAgc3MyKVxuICAgICAgICB8IChTdGVwKHNzKSwgXylcbiAgICAgICAgfCAoXywgU3RlcChzcykpID0+IFN0ZXAoc3MpXG4gICAgICAgIHwgKEluZGV0LCBCb3hlZFZhbHVlKVxuICAgICAgICB8IChCb3hlZFZhbHVlLCBJbmRldClcbiAgICAgICAgfCAoSW5kZXQsIEluZGV0KSA9PiBJbmRldFxuICAgICAgICB8IChCb3hlZFZhbHVlLCBCb3hlZFZhbHVlKSA9PiBCb3hlZFZhbHVlXG4gICAgICAgIH07XG5cbiAgICBsZXQgcmVjIHJlcV9hbGxfdmFsdWUnID0gKGNvbnQsIHdyLCBkcycpID0+XG4gICAgICBmdW5cbiAgICAgIHwgW10gPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBbXSlcbiAgICAgIHwgW2QsIC4uLmRzXSA9PiB7XG4gICAgICAgICAgbGV0IChyMSwgdikgPSByZXFfdmFsdWUoY29udCwgd3IoXywgKGRzJywgZHMpKSwgZCk7XG4gICAgICAgICAgbGV0IChyMiwgdnMpID0gcmVxX2FsbF92YWx1ZScoY29udCwgd3IsIFtkLCAuLi5kcyddLCBkcyk7XG4gICAgICAgICAgKHIxICYmIHIyLCBbdiwgLi4udnNdKTtcbiAgICAgICAgfTtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChjb250LCB3ciwgZHMpID0+IHtcbiAgICAgIHJlcV9hbGxfdmFsdWUnKGNvbnQsIHdyLCBbXSwgZHMpO1xuICAgIH07XG5cbiAgICBsZXQgcmVxX2ZpbmFsID0gKGNvbnQsIHdyLCBkKSA9PiB7XG4gICAgICAoXG4gICAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgICB8IFJlc3VsdC5JbmRldCA9PiBSZXN1bHQuQm94ZWRWYWx1ZVxuICAgICAgICB8IFJlc3VsdC5Cb3hlZFZhbHVlID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT5cbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSlcbiAgICAgICAgfSxcbiAgICAgICAgZCxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGxldCByZWMgcmVxX2FsbF9maW5hbCcgPSAoY29udCwgd3IsIGRzJykgPT5cbiAgICAgIGZ1blxuICAgICAgfCBbXSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIFtdKVxuICAgICAgfCBbZCwgLi4uZHNdID0+IHtcbiAgICAgICAgICBsZXQgKHIxLCB2KSA9IHJlcV9maW5hbChjb250LCB3cihfLCAoZHMnLCBkcykpLCBkKTtcbiAgICAgICAgICBsZXQgKHIyLCB2cykgPSByZXFfYWxsX2ZpbmFsJyhjb250LCB3ciwgW2QsIC4uLmRzJ10sIGRzKTtcbiAgICAgICAgICAocjEgJiYgcjIsIFt2LCAuLi52c10pO1xuICAgICAgICB9O1xuXG4gICAgbGV0IHJlcV9hbGxfZmluYWwgPSAoY29udCwgd3IsIGRzKSA9PiB7XG4gICAgICByZXFfYWxsX2ZpbmFsJyhjb250LCB3ciwgW10sIGRzKTtcbiAgICB9O1xuXG4gICAgbGV0IChsZXQuKTogKHJlcXVpcmVtZW50cygnYSwgREhFeHAudCksICdhID0+IHJ1bGUpID0+IHJlc3VsdCA9XG4gICAgICAocnEsIHJsKSA9PlxuICAgICAgICBzd2l0Y2ggKHJxKSB7XG4gICAgICAgIHwgKF8sIFJlc3VsdC5JbmRldCwgXywgXykgPT4gUmVzdWx0LkluZGV0XG4gICAgICAgIHwgKHVuZG8sIFJlc3VsdC5Cb3hlZFZhbHVlLCBlbnYsIHYpID0+XG4gICAgICAgICAgc3dpdGNoIChybCh2KSkge1xuICAgICAgICAgIHwgQ29uc3RydWN0b3IgPT4gUmVzdWx0LkJveGVkVmFsdWVcbiAgICAgICAgICB8IEluZGV0ID0+IFJlc3VsdC5JbmRldFxuICAgICAgICAgIHwgU3RlcChzKSA9PiBSZXN1bHQuU3RlcChbRXZhbE9iai5tayhNYXJrLCBlbnYsIHVuZG8sIHMua2luZCldKVxuICAgICAgICAgIH1cbiAgICAgICAgfCAoXywgUmVzdWx0LlN0ZXAoXykgYXMgciwgXywgXykgPT4gclxuICAgICAgICB9O1xuXG4gICAgbGV0IChhbmQuKTpcbiAgICAgIChyZXF1aXJlbWVudHMoJ2EsICdjID0+ICdiKSwgcmVxdWlyZW1lbnQoJ2MpKSA9PlxuICAgICAgcmVxdWlyZW1lbnRzKCgnYSwgJ2MpLCAnYikgPVxuICAgICAgKCh1LCByMSwgZW52LCB2MSksIChyMiwgdjIpKSA9PiAodSh2MiksIHIxICYmIHIyLCBlbnYsICh2MSwgdjIpKTtcblxuICAgIGxldCBvdGhlcndpc2UgPSAoZW52LCBvKSA9PiAobywgUmVzdWx0LkJveGVkVmFsdWUsIGVudiwgKCkpO1xuICAgIGxldCB1cGRhdGVfdGVzdCA9IChzdGF0ZSwgaWQsIHYpID0+XG4gICAgICBzdGF0ZSA6PSBFdmFsdWF0b3JTdGF0ZS5hZGRfdGVzdChzdGF0ZV4sIGlkLCB2KTtcbiAgfTtcblxuICBtb2R1bGUgRGVjb21wID0gVHJhbnNpdGlvbihEZWNvbXBvc2VFVk1vZGUpO1xuICBsZXQgcmVjIGRlY29tcG9zZSA9IChzdGF0ZSwgZW52LCBleHApID0+IHtcbiAgICBzd2l0Y2ggKGV4cCkge1xuICAgIHwgREhFeHAuRmlsdGVyKGZsdCwgZDEpID0+XG4gICAgICBEZWNvbXBvc2VFVk1vZGUuKFxuICAgICAgICB7XG4gICAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxKSA9PiAoRmlsdGVyKGZsdCwgZDEpOiBESEV4cC50KSlcbiAgICAgICAgICBhbmQuIGQxID1cbiAgICAgICAgICAgIHJlcV9maW5hbChkZWNvbXBvc2Uoc3RhdGUsIGVudiksIGQxID0+IEZpbHRlcihmbHQsIGQxKSwgZDEpO1xuICAgICAgICAgIFN0ZXAoe2FwcGx5OiAoKSA9PiBkMSwga2luZDogQ29tcGxldGVGaWx0ZXIsIHZhbHVlOiB0cnVlfSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB8IF8gPT4gRGVjb21wLnRyYW5zaXRpb24oZGVjb21wb3NlLCBzdGF0ZSwgZW52LCBleHApXG4gICAgfTtcbiAgfTtcbn07XG5cbm1vZHVsZSBUYWtlU3RlcCA9IHtcbiAgbW9kdWxlIFRha2VTdGVwRVZNb2RlOiB7XG4gICAgaW5jbHVkZVxuICAgICAgRVZfTU9ERSB3aXRoXG4gICAgICAgIHR5cGUgcmVzdWx0ID0gb3B0aW9uKERIRXhwLnQpIGFuZCB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICB9ID0ge1xuICAgIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gICAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAnYTtcbiAgICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gJ2E7XG4gICAgdHlwZSByZXN1bHQgPSBvcHRpb24oREhFeHAudCk7XG5cbiAgICAvLyBBc3N1bWUgdGhhdCBldmVyeXRoaW5nIGlzIGVpdGhlciB2YWx1ZSBvciBmaW5hbCBhcyByZXF1aXJlZC5cbiAgICBsZXQgcmVxX3ZhbHVlID0gKF8sIF8sIGQpID0+IGQ7XG4gICAgbGV0IHJlcV9hbGxfdmFsdWUgPSAoXywgXywgZHMpID0+IGRzO1xuICAgIGxldCByZXFfZmluYWwgPSAoXywgXywgZCkgPT4gZDtcbiAgICBsZXQgcmVxX2FsbF9maW5hbCA9IChfLCBfLCBkcykgPT4gZHM7XG5cbiAgICBsZXQgKGxldC4pID0gKHJxOiByZXF1aXJlbWVudHMoJ2EsIERIRXhwLnQpLCBybDogJ2EgPT4gcnVsZSkgPT5cbiAgICAgIHN3aXRjaCAocmwocnEpKSB7XG4gICAgICB8IFN0ZXAoe2FwcGx5LCBffSkgPT4gU29tZShhcHBseSgpKVxuICAgICAgfCBDb25zdHJ1Y3RvclxuICAgICAgfCBJbmRldCA9PiBOb25lXG4gICAgICB9O1xuXG4gICAgbGV0IChhbmQuKSA9ICh4MSwgeDIpID0+ICh4MSwgeDIpO1xuXG4gICAgbGV0IG90aGVyd2lzZSA9IChfLCBfKSA9PiAoKTtcblxuICAgIGxldCB1cGRhdGVfdGVzdCA9IChzdGF0ZSwgaWQsIHYpID0+XG4gICAgICBzdGF0ZSA6PSBFdmFsdWF0b3JTdGF0ZS5hZGRfdGVzdChzdGF0ZV4sIGlkLCB2KTtcbiAgfTtcblxuICBtb2R1bGUgVGFrZVN0ZXBFViA9IFRyYW5zaXRpb24oVGFrZVN0ZXBFVk1vZGUpO1xuXG4gIGxldCB0YWtlX3N0ZXAgPSAoc3RhdGUsIGVudiwgZCkgPT5cbiAgICBUYWtlU3RlcEVWLnRyYW5zaXRpb24oKF8sIF8sIF8pID0+IE5vbmUsIHN0YXRlLCBlbnYsIGQpO1xufTtcblxubGV0IHRha2Vfc3RlcCA9IFRha2VTdGVwLnRha2Vfc3RlcDtcblxubGV0IHJlYyByZXZfY29uY2F0OiAobGlzdCgnYSksIGxpc3QoJ2EpKSA9PiBsaXN0KCdhKSA9XG4gIChscywgcnMpID0+IHtcbiAgICBzd2l0Y2ggKGxzKSB7XG4gICAgfCBbXSA9PiByc1xuICAgIHwgW2hkLCAuLi50bF0gPT4gcmV2X2NvbmNhdCh0bCwgW2hkLCAuLi5yc10pXG4gICAgfTtcbiAgfTtcblxubGV0IHJlYyBjb21wb3NlID0gKGN0eDogRXZhbEN0eC50LCBkOiBESEV4cC50KTogREhFeHAudCA9PiB7XG4gIERIRXhwLihcbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgIHwgTWFyayA9PiBkXG4gICAgfCBDbG9zdXJlKGVudiwgY3R4KSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBDbG9zdXJlKGVudiwgZCk7XG4gICAgfCBGaWx0ZXIoZmx0LCBjdHgpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEZpbHRlcihmbHQsIGQpO1xuICAgIHwgU2VxdWVuY2UxKGN0eCwgZDIpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBTZXF1ZW5jZShkMSwgZDIpO1xuICAgIHwgU2VxdWVuY2UyKGQxLCBjdHgpID0+XG4gICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBTZXF1ZW5jZShkMSwgZDIpO1xuICAgIHwgQXAxKGN0eCwgZDIpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBBcChkMSwgZDIpO1xuICAgIHwgQXAyKGQxLCBjdHgpID0+XG4gICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBBcChkMSwgZDIpO1xuICAgIHwgQXBCdWlsdGluKHMsIGN0eCkgPT5cbiAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEFwQnVpbHRpbihzLCBkJyk7XG4gICAgfCBJZlRoZW5FbHNlMShjLCBjdHgsIGQyLCBkMykgPT5cbiAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIElmVGhlbkVsc2UoYywgZCcsIGQyLCBkMyk7XG4gICAgfCBJZlRoZW5FbHNlMihjLCBkMSwgY3R4LCBkMykgPT5cbiAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIElmVGhlbkVsc2UoYywgZDEsIGQnLCBkMyk7XG4gICAgfCBJZlRoZW5FbHNlMyhjLCBkMSwgZDIsIGN0eCkgPT5cbiAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIElmVGhlbkVsc2UoYywgZDEsIGQyLCBkJyk7XG4gICAgfCBUZXN0KGxpdCwgY3R4KSA9PlxuICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgVGVzdChsaXQsIGQxKTtcbiAgICB8IEJpbkJvb2xPcDEob3AsIGN0eCwgZDIpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBCaW5Cb29sT3Aob3AsIGQxLCBkMik7XG4gICAgfCBCaW5Cb29sT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQmluQm9vbE9wKG9wLCBkMSwgZDIpO1xuICAgIHwgQmluSW50T3AxKG9wLCBjdHgsIGQyKSA9PlxuICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQmluSW50T3Aob3AsIGQxLCBkMik7XG4gICAgfCBCaW5JbnRPcDIob3AsIGQxLCBjdHgpID0+XG4gICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBCaW5JbnRPcChvcCwgZDEsIGQyKTtcbiAgICB8IEJpbkZsb2F0T3AxKG9wLCBjdHgsIGQyKSA9PlxuICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQmluRmxvYXRPcChvcCwgZDEsIGQyKTtcbiAgICB8IEJpbkZsb2F0T3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQmluRmxvYXRPcChvcCwgZDEsIGQyKTtcbiAgICB8IEJpblN0cmluZ09wMShvcCwgY3R4LCBkMikgPT5cbiAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEJpblN0cmluZ09wKG9wLCBkMSwgZDIpO1xuICAgIHwgQmluU3RyaW5nT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQmluU3RyaW5nT3Aob3AsIGQxLCBkMik7XG4gICAgfCBDb25zMShjdHgsIGQyKSA9PlxuICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQ29ucyhkMSwgZDIpO1xuICAgIHwgQ29uczIoZDEsIGN0eCkgPT5cbiAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIENvbnMoZDEsIGQyKTtcbiAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBMaXN0Q29uY2F0KGQxLCBkMik7XG4gICAgfCBMaXN0Q29uY2F0MihkMSwgY3R4KSA9PlxuICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgTGlzdENvbmNhdChkMSwgZDIpO1xuICAgIHwgVHVwbGUoY3R4LCAobGQsIHJkKSkgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgVHVwbGUocmV2X2NvbmNhdChsZCwgW2QsIC4uLnJkXSkpO1xuICAgIHwgTGlzdExpdChtLCBpLCB0LCBjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBMaXN0TGl0KG0sIGksIHQsIHJldl9jb25jYXQobGQsIFtkLCAuLi5yZF0pKTtcbiAgICB8IExldDEoZHAsIGN0eCwgZDIpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIExldChkcCwgZCwgZDIpO1xuICAgIHwgTGV0MihkcCwgZDEsIGN0eCkgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgTGV0KGRwLCBkMSwgZCk7XG4gICAgfCBGdW4oZHAsIHQsIGN0eCwgdikgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgRnVuKGRwLCB0LCBkLCB2KTtcbiAgICB8IEZpeEYodiwgdCwgY3R4KSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBGaXhGKHYsIHQsIGQpO1xuICAgIHwgUHJqKGN0eCwgbikgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgUHJqKGQsIG4pO1xuICAgIHwgQ2FzdChjdHgsIHR5MSwgdHkyKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBDYXN0KGQsIHR5MSwgdHkyKTtcbiAgICB8IEZhaWxlZENhc3QoY3R4LCB0eTEsIHR5MikgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgRmFpbGVkQ2FzdChkLCB0eTEsIHR5Mik7XG4gICAgfCBJbnZhbGlkT3BlcmF0aW9uKGN0eCwgZXJyKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBJbnZhbGlkT3BlcmF0aW9uKGQsIGVycik7XG4gICAgfCBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBjdHgpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIGksIGQpO1xuICAgIHwgQ29uc2lzdGVudENhc2UoQ2FzZShjdHgsIHJ1bGUsIG4pKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBDb25zaXN0ZW50Q2FzZShDYXNlKGQsIHJ1bGUsIG4pKTtcbiAgICB8IENvbnNpc3RlbnRDYXNlUnVsZShzY3IsIHAsIGN0eCwgKGxyLCByciksIG4pID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIENvbnNpc3RlbnRDYXNlKFxuICAgICAgICBDYXNlKHNjciwgcmV2X2NvbmNhdChsciwgWyhSdWxlKHAsIGQpOiBESEV4cC5ydWxlKSwgLi4ucnJdKSwgbiksXG4gICAgICApO1xuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXModSwgaSwgQ2FzZShjdHgsIHJ1bGUsIG4pKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKGQsIHJ1bGUsIG4pKTtcbiAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzUnVsZShzY3IsIG12LCBoaSwgcCwgY3R4LCAobHIsIHJyKSwgbikgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXMoXG4gICAgICAgIG12LFxuICAgICAgICBoaSxcbiAgICAgICAgQ2FzZShzY3IsIHJldl9jb25jYXQobHIsIFsoUnVsZShwLCBkKTogREhFeHAucnVsZSksIC4uLnJyXSksIG4pLFxuICAgICAgKTtcbiAgICB9XG4gICk7XG59O1xuXG5sZXQgZGVjb21wb3NlID0gKGQ6IERIRXhwLnQpID0+IHtcbiAgbGV0IGVzID0gRXZhbHVhdG9yU3RhdGUuaW5pdDtcbiAgbGV0IGVudiA9IENsb3N1cmVFbnZpcm9ubWVudC5vZl9lbnZpcm9ubWVudChCdWlsdGlucy5lbnZfaW5pdCk7XG4gIGxldCBycyA9IERlY29tcG9zZS5kZWNvbXBvc2UocmVmKGVzKSwgZW52LCBkKTtcbiAgRGVjb21wb3NlLlJlc3VsdC51bmJveChycyk7XG59O1xuXG5sZXQgZXZhbHVhdGVfd2l0aF9oaXN0b3J5ID0gZCA9PiB7XG4gIGxldCBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS5pbml0KTtcbiAgbGV0IHJlYyBnbyA9IGQgPT5cbiAgICBzd2l0Y2ggKGRlY29tcG9zZShkKSkge1xuICAgIHwgW10gPT4gW11cbiAgICB8IFt4LCAuLi5fXSA9PlxuICAgICAgc3dpdGNoICh0YWtlX3N0ZXAoc3RhdGUsIHguZW52LCB4LmRfbG9jKSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUoZCkgPT5cbiAgICAgICAgbGV0IG5leHQgPSBjb21wb3NlKHguY3R4LCBkKTtcbiAgICAgICAgW25leHQsIC4uLmdvKG5leHQpXTtcbiAgICAgIH1cbiAgICB9O1xuICBnbyhkKTtcbn07XG4iLCJsZXQgcmVjIG1hdGNoZXNfZXhwID1cbiAgICAgICAgKGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIGQ6IERIRXhwLnQsIGY6IERIRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChkLCBmKSB7XG4gIHwgKENvbnN0cnVjdG9yKFwiJGVcIiksIF8pID0+IGZhaWx3aXRoKFwiJGUgaW4gbWF0Y2hlZCBleHByZXNzaW9uXCIpXG4gIHwgKENvbnN0cnVjdG9yKFwiJHZcIiksIF8pID0+IGZhaWx3aXRoKFwiJHYgaW4gbWF0Y2hlZCBleHByZXNzaW9uXCIpXG5cbiAgLy8gSEFDS1tNYXR0XTogaWdub3JlIGZpeHBvaW50cyBpbiBjb21wYXJpc29uLCB0byBhbGxvdyBwYXVzaW5nIG9uIGZpeHBvaW50IHN0ZXBzXG4gIHwgKEZpeEYoZHAsIF8sIGRjKSwgZikgPT5cbiAgICBtYXRjaGVzX2V4cChcbiAgICAgIGVudixcbiAgICAgIENsb3N1cmUoXG4gICAgICAgIFRyYW5zaXRpb24uZXZhbHVhdGVfZXh0ZW5kX2VudihFbnZpcm9ubWVudC5zaW5nbGV0b24oKGRwLCBkYykpLCBlbnYpLFxuICAgICAgICBkYyxcbiAgICAgICksXG4gICAgICBmLFxuICAgIClcbiAgfCAoZCwgRml4RihmcCwgXywgZmMpKSA9PlxuICAgIG1hdGNoZXNfZXhwKFxuICAgICAgZW52LFxuICAgICAgZCxcbiAgICAgIENsb3N1cmUoXG4gICAgICAgIFRyYW5zaXRpb24uZXZhbHVhdGVfZXh0ZW5kX2VudihFbnZpcm9ubWVudC5zaW5nbGV0b24oKGZwLCBmYykpLCBlbnYpLFxuICAgICAgICBmYyxcbiAgICAgICksXG4gICAgKVxuXG4gIHwgKF8sIENvbnN0cnVjdG9yKFwiJHZcIikpID0+XG4gICAgc3dpdGNoIChWYWx1ZUNoZWNrZXIuY2hlY2tfdmFsdWUoZW52LCBkKSkge1xuICAgIHwgSW5kZXRcbiAgICB8IFZhbHVlID0+IHRydWVcbiAgICB8IEV4cHIgPT4gZmFsc2VcbiAgICB9XG5cbiAgfCAoXywgRW1wdHlIb2xlKF8pKVxuICB8IChfLCBDb25zdHJ1Y3RvcihcIiRlXCIpKSA9PiB0cnVlXG5cbiAgfCAoXywgQ2xvc3VyZShlbnYsIGYpKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKF8sIENhc3QoZiwgXywgXykpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgfCAoXywgRmFpbGVkQ2FzdChmLCBfLCBfKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuXG4gIHwgKENsb3N1cmUoZW52LCBkKSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB8IChDYXN0KGQsIF8sIF8pLCBfKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKEZhaWxlZENhc3QoZCwgXywgXyksIF8pID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcblxuICB8IChCb3VuZFZhcihkeCksIEJvdW5kVmFyKGZ4KSkgPT4gZHggPT0gZnhcbiAgfCAoQm91bmRWYXIoZHgpLCBfKSA9PlxuICAgIGxldCBkID1cbiAgICAgIENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCBkeClcbiAgICAgIHw+IFV0aWwuT3B0VXRpbC5nZXQoKCkgPT4ge1xuICAgICAgICAgICBwcmludF9lbmRsaW5lKFwiRnJlZUludmFsaWRWYXI6XCIgKysgZHgpO1xuICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oRnJlZUludmFsaWRWYXIoZHgpKSk7XG4gICAgICAgICB9KTtcbiAgICBtYXRjaGVzX2V4cChlbnYsIGQsIGYpO1xuICB8IChfLCBCb3VuZFZhcihmeCkpID0+XG4gICAgc3dpdGNoIChDbG9zdXJlRW52aXJvbm1lbnQubG9va3VwKGVudiwgZngpKSB7XG4gICAgfCBTb21lKGYpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICB9XG5cbiAgfCAoRW1wdHlIb2xlKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEZpbHRlcihkZiwgZGQpLCBGaWx0ZXIoZmYsIGZkKSkgPT5cbiAgICBESC5ESEZpbHRlci5mYXN0X2VxdWFsKGRmLCBmZikgJiYgbWF0Y2hlc19leHAoZW52LCBkZCwgZmQpXG4gIHwgKEZpbHRlcihfKSwgXykgPT4gZmFsc2VcblxuICB8IChCb29sTGl0KGR2KSwgQm9vbExpdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEJvb2xMaXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoSW50TGl0KGR2KSwgSW50TGl0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoSW50TGl0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEZsb2F0TGl0KGR2KSwgRmxvYXRMaXQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChGbG9hdExpdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChTdHJpbmdMaXQoZHYpLCBTdHJpbmdMaXQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChTdHJpbmdMaXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQ29uc3RydWN0b3IoXyksIEFwKENvbnN0cnVjdG9yKFwifk1WYWxcIiksIFR1cGxlKFtdKSkpID0+IHRydWVcbiAgfCAoQ29uc3RydWN0b3IoZHQpLCBDb25zdHJ1Y3RvcihmdCkpID0+IGR0ID09IGZ0XG4gIHwgKENvbnN0cnVjdG9yKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEJ1aWx0aW5GdW4oZG4pLCBCdWlsdGluRnVuKGZuKSkgPT4gZG4gPT0gZm5cbiAgfCAoQnVpbHRpbkZ1bihfKSwgXykgPT4gZmFsc2VcblxuICB8IChGdW4oZHAxLCBkdHkxLCBkMSwgZG5hbWUxKSwgRnVuKGZwMSwgZnR5MSwgZjEsIGZuYW1lMSkpID0+XG4gICAgbWF0Y2hlc19wYXQoZHAxLCBmcDEpXG4gICAgJiYgZHR5MSA9PSBmdHkxXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpXG4gICAgJiYgZG5hbWUxID09IGZuYW1lMVxuICB8IChGdW4oXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoRnJlZVZhcihkdSwgZGksIGR4KSwgRnJlZVZhcihmdSwgZmksIGZ4KSkgPT5cbiAgICBkdSA9PSBmdSAmJiBkaSA9PSBmaSAmJiBkeCA9PSBmeFxuICB8IChGcmVlVmFyKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExldChkcCwgZDEsIGQyKSwgTGV0KGZwLCBmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfcGF0KGRwLCBmcClcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoTGV0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEFwKGQxLCBkMiksIEFwKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChBcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChJZlRoZW5FbHNlKGRjLCBkMSwgZDIsIGQzKSwgSWZUaGVuRWxzZShmYywgZjEsIGYyLCBmMykpID0+XG4gICAgZGMgPT0gZmNcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQzLCBmMylcbiAgfCAoSWZUaGVuRWxzZShfKSwgXykgPT4gZmFsc2VcblxuICB8IChTZXF1ZW5jZShkMSwgZDIpLCBTZXF1ZW5jZShmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoU2VxdWVuY2UoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoVGVzdChpZDEsIGQyKSwgVGVzdChpZDIsIGYyKSkgPT5cbiAgICBpZDEgPT0gaWQyICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChUZXN0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKENvbnMoZDEsIGQyKSwgQ29ucyhmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoQ29ucyhfKSwgXykgPT4gZmFsc2VcblxuICB8IChMaXN0TGl0KF8sIF8sIGR0LCBkdiksIExpc3RMaXQoXywgXywgZnQsIGZ2KSkgPT5cbiAgICBkdCA9PSBmdFxuICAgICYmIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgIChhY2MsIGQsIGYpID0+IGFjYyAmJiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpLFxuICAgICAgICAgdHJ1ZSxcbiAgICAgICAgIGR2LFxuICAgICAgICAgZnYsXG4gICAgICAgKVxuICB8IChMaXN0TGl0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR1cGxlKGR2KSwgVHVwbGUoZnYpKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgIChhY2MsIGQsIGYpID0+IGFjYyAmJiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpLFxuICAgICAgdHJ1ZSxcbiAgICAgIGR2LFxuICAgICAgZnYsXG4gICAgKVxuICB8IChUdXBsZShfKSwgXykgPT4gZmFsc2VcblxuICB8IChCaW5Cb29sT3AoZF9vcF9iaW4sIGQxLCBkMiksIEJpbkJvb2xPcChmX29wX2JpbiwgZjEsIGYyKSkgPT5cbiAgICBkX29wX2JpbiA9PSBmX29wX2JpblxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuXG4gIHwgKEJpbkJvb2xPcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChCaW5JbnRPcChkX29wX2JpbiwgZDEsIGQyKSwgQmluSW50T3AoZl9vcF9iaW4sIGYxLCBmMikpID0+XG4gICAgZF9vcF9iaW4gPT0gZl9vcF9iaW5cbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoQmluSW50T3AoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQmluRmxvYXRPcChkX29wX2JpbiwgZDEsIGQyKSwgQmluRmxvYXRPcChmX29wX2JpbiwgZjEsIGYyKSkgPT5cbiAgICBkX29wX2JpbiA9PSBmX29wX2JpblxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChCaW5GbG9hdE9wKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEJpblN0cmluZ09wKGRfb3BfYmluLCBkMSwgZDIpLCBCaW5TdHJpbmdPcChmX29wX2JpbiwgZjEsIGYyKSkgPT5cbiAgICBkX29wX2JpbiA9PSBmX29wX2JpblxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChCaW5TdHJpbmdPcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChMaXN0Q29uY2F0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFxuICAgICAgQ29uc2lzdGVudENhc2UoQ2FzZShkc2NydXQsIGRydWxlLCBfKSksXG4gICAgICBDb25zaXN0ZW50Q2FzZShDYXNlKGZzY3J1dCwgZnJ1bGUsIF8pKSxcbiAgICApXG4gIHwgKFxuICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXMoXywgXywgQ2FzZShkc2NydXQsIGRydWxlLCBfKSksXG4gICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfLCBfLCBDYXNlKGZzY3J1dCwgZnJ1bGUsIF8pKSxcbiAgICApID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkc2NydXQsIGZzY3J1dClcbiAgICAmJiAoXG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgICAgKHJlcywgZHJ1bGUsIGZydWxlKSA9PiByZXMgJiYgbWF0Y2hlc19ydWwoZW52LCBkcnVsZSwgZnJ1bGUpLFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAgZHJ1bGUsXG4gICAgICAgICAgZnJ1bGUsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IGZhbHNlXG4gICAgICB8IHJlcyA9PiByZXNcbiAgICAgIH1cbiAgICApXG4gIHwgKENvbnNpc3RlbnRDYXNlKF8pLCBfKVxuICB8IChJbmNvbnNpc3RlbnRCcmFuY2hlcyhfKSwgXykgPT4gZmFsc2VcblxuICB8IChOb25FbXB0eUhvbGUoXyksIF8pID0+IGZhbHNlXG4gIHwgKEV4cGFuZGluZ0tleXdvcmQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEludmFsaWRUZXh0KF8pLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkT3BlcmF0aW9uKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEFwQnVpbHRpbihkbmFtZSwgZGFyZyksIEFwQnVpbHRpbihmbmFtZSwgZmFyZykpID0+XG4gICAgZG5hbWUgPT0gZm5hbWUgJiYgbWF0Y2hlc19leHAoZW52LCBkYXJnLCBmYXJnKVxuICB8IChBcEJ1aWx0aW4oXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoUHJqKGR2LCBkaSksIFByaihmdiwgZmkpKSA9PiBtYXRjaGVzX2V4cChlbnYsIGR2LCBmdikgJiYgZGkgPT0gZmlcbiAgfCAoUHJqKF8pLCBfKSA9PiBmYWxzZVxuICB9O1xufVxuYW5kIG1hdGNoZXNfcGF0ID0gKGQ6IERIUGF0LnQsIGY6IERIUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChkLCBmKSB7XG4gIHwgKF8sIEVtcHR5SG9sZShfKSkgPT4gdHJ1ZVxuICB8IChXaWxkLCBXaWxkKSA9PiB0cnVlXG4gIHwgKFdpbGQsIF8pID0+IGZhbHNlXG4gIHwgKEludExpdChkdiksIEludExpdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEludExpdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoRmxvYXRMaXQoZHYpLCBGbG9hdExpdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEZsb2F0TGl0KF8pLCBfKSA9PiBmYWxzZVxuICB8IChCb29sTGl0KGR2KSwgQm9vbExpdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEJvb2xMaXQoXyksIF8pID0+IGZhbHNlXG4gIHwgKFN0cmluZ0xpdChkdiksIFN0cmluZ0xpdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKFN0cmluZ0xpdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoTGlzdExpdChkdHkxLCBkbCksIExpc3RMaXQoZnR5MSwgZmwpKSA9PlxuICAgIHN3aXRjaCAoXG4gICAgICBMaXN0LmZvbGRfbGVmdDIoKHJlcywgZCwgZikgPT4gcmVzICYmIG1hdGNoZXNfcGF0KGQsIGYpLCB0cnVlLCBkbCwgZmwpXG4gICAgKSB7XG4gICAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IGZhbHNlXG4gICAgfCByZXMgPT4gbWF0Y2hlc190eXAoZHR5MSwgZnR5MSkgJiYgcmVzXG4gICAgfVxuICB8IChMaXN0TGl0KF8pLCBfKSA9PiBmYWxzZVxuICB8IChDb25zdHJ1Y3RvcihkdCksIENvbnN0cnVjdG9yKGZ0KSkgPT4gZHQgPT0gZnRcbiAgfCAoQ29uc3RydWN0b3IoXyksIF8pID0+IGZhbHNlXG4gIHwgKFZhcihkeCksIFZhcihmeCkpID0+IGR4ID09IGZ4XG4gIHwgKFZhcihfKSwgXykgPT4gZmFsc2VcbiAgfCAoVHVwbGUoZGwpLCBUdXBsZShmbCkpID0+XG4gICAgc3dpdGNoIChcbiAgICAgIExpc3QuZm9sZF9sZWZ0MigocmVzLCBkLCBmKSA9PiByZXMgJiYgbWF0Y2hlc19wYXQoZCwgZiksIHRydWUsIGRsLCBmbClcbiAgICApIHtcbiAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gZmFsc2VcbiAgICB8IHJlcyA9PiByZXNcbiAgICB9XG4gIHwgKFR1cGxlKF8pLCBfKSA9PiBmYWxzZVxuICB8IChBcChkMSwgZDIpLCBBcChmMSwgZjIpKSA9PiBtYXRjaGVzX3BhdChkMSwgZjEpICYmIG1hdGNoZXNfcGF0KGQyLCBmMilcbiAgfCAoQXAoXyksIF8pID0+IGZhbHNlXG4gIHwgKEJhZENvbnN0cnVjdG9yKF8sIF8sIGR0KSwgQmFkQ29uc3RydWN0b3IoXywgXywgZnQpKSA9PiBkdCA9PSBmdFxuICB8IChCYWRDb25zdHJ1Y3RvcihfKSwgXykgPT4gZmFsc2VcbiAgfCAoQ29ucyhkMSwgZDIpLCBDb25zKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19wYXQoZDEsIGYxKSAmJiBtYXRjaGVzX3BhdChkMiwgZjIpXG4gIHwgKENvbnMoXyksIF8pID0+IGZhbHNlXG4gIHwgKEVtcHR5SG9sZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoTm9uRW1wdHlIb2xlKF8pLCBfKSA9PiBmYWxzZVxuICB8IChFeHBhbmRpbmdLZXl3b3JkKF8pLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkVGV4dChfKSwgXykgPT4gZmFsc2VcbiAgfTtcbn1cbmFuZCBtYXRjaGVzX3R5cCA9IChkOiBUeXAudCwgZjogVHlwLnQpID0+IHtcbiAgVHlwLmVxKGQsIGYpO1xufVxuYW5kIG1hdGNoZXNfcnVsID0gKGVudiwgZDogREhFeHAucnVsZSwgZjogREhFeHAucnVsZSkgPT4ge1xuICBzd2l0Y2ggKGQsIGYpIHtcbiAgfCAoUnVsZShkcCwgZCksIFJ1bGUoZnAsIGYpKSA9PlxuICAgIG1hdGNoZXNfcGF0KGRwLCBmcCkgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB9O1xufTtcblxubGV0IG1hdGNoZXMgPVxuICAgICh+ZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCwgfmV4cDogREhFeHAudCwgfmZsdDogRmlsdGVyLnQpXG4gICAgOiBvcHRpb24oRmlsdGVyQWN0aW9uLnQpID0+XG4gIGlmIChtYXRjaGVzX2V4cChlbnYsIGV4cCwgZmx0LnBhdCkpIHtcbiAgICBTb21lKGZsdC5hY3QpO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBtYXRjaGVzID1cbiAgICAofmVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIH5leHA6IERIRXhwLnQsIH5hY3Q6IEZpbHRlckFjdGlvbi50LCBmbHRfZW52KVxuICAgIDogKEZpbHRlckFjdGlvbi50LCBpbnQpID0+IHtcbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoKGZsdF9lbnYpO1xuICBsZXQgcmVjIG1hdGNoZXMnID0gKH5lbnYsIH5leHAsIH5hY3QsIGZsdF9lbnYsIGlkeCkgPT4ge1xuICAgIHN3aXRjaCAoZmx0X2Vudikge1xuICAgIHwgW10gPT4gKGFjdCwgaWR4KVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyh+ZW52LCB+ZXhwLCB+Zmx0PWhkKSkge1xuICAgICAgfCBTb21lKGFjdCkgPT4gKGFjdCwgaWR4KVxuICAgICAgfCBOb25lID0+IG1hdGNoZXMnKH5lbnYsIH5leHAsIH5hY3QsIHRsLCBpZHggKyAxKVxuICAgICAgfVxuICAgIH07XG4gIH07XG4gIGxldCAoYWN0LCBpZHgpID0gbWF0Y2hlcycofmVudiwgfmV4cCwgfmFjdCwgZmx0X2VudiwgMCk7XG4gIChhY3QsIGxlbiAtIGlkeCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gRXZhbHVhdG9yU3RlcDtcbm9wZW4gVHJhbnNpdGlvbjtcblxuZXhjZXB0aW9uIEV4Y2VwdGlvbjtcblxudHlwZSBzdGVwX3dpdGhfcHJldmlvdXMgPSB7XG4gIHN0ZXAsXG4gIHByZXZpb3VzOiBvcHRpb24oc3RlcCksXG4gIGhpZGRlbjogbGlzdChzdGVwKSxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY3VycmVudCA9XG4gIHwgU3RlcHBlck9LKERIRXhwLnQsIEV2YWx1YXRvclN0YXRlLnQpXG4gIHwgU3RlcFRpbWVvdXQgLy8gTXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBpbiBwcmV2aW91c1xuICB8IFN0ZXBQZW5kaW5nKERIRXhwLnQsIEV2YWx1YXRvclN0YXRlLnQsIG9wdGlvbihFdmFsT2JqLnQpKTsgLy8gU3RlcFBlbmRpbmcoXyxTb21lKF8pKSBjYW5ub3QgYmUgc2F2ZWRcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICAvKiBNaWdodCBiZSBkaWZmZXJlbnQgdG8gZmlyc3QgZXhwcmVzc2lvbiBpbiBwcmV2aW91cyBiZWNhdXNlXG4gICAgIHN0ZXBzIGFyZSB0YWtlbiBhdXRvbWF0aWNhbGx5ICh0aGlzIG1heSBubyBsb25nZXIgYmUgdHJ1ZSAtIE1hdHQpICovXG4gIGVsYWI6IERIRXhwLnQsXG4gIHByZXZpb3VzOiBsaXN0KHN0ZXApLFxuICBjdXJyZW50LFxuICBuZXh0OiBsaXN0KEV2YWxPYmoudCksXG59O1xuXG5sZXQgcmVjIG1hdGNoZXMgPVxuICAgICAgICAoXG4gICAgICAgICAgZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCxcbiAgICAgICAgICBmbHQ6IEZpbHRlckVudmlyb25tZW50LnQsXG4gICAgICAgICAgY3R4OiBFdmFsQ3R4LnQsXG4gICAgICAgICAgZXhwOiBESEV4cC50LFxuICAgICAgICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gICAgICAgICAgaWR4OiBpbnQsXG4gICAgICAgIClcbiAgICAgICAgOiAoRmlsdGVyQWN0aW9uLnQsIGludCwgRXZhbEN0eC50KSA9PiB7XG4gIGxldCBjb21wb3NlZCA9IGNvbXBvc2UoY3R4LCBleHApO1xuICBsZXQgKHBhY3QsIHBpZHgpID0gKGFjdCwgaWR4KTtcbiAgbGV0IChtYWN0LCBtaWR4KSA9IEZpbHRlck1hdGNoZXIubWF0Y2hlcyh+ZW52LCB+ZXhwPWNvbXBvc2VkLCB+YWN0LCBmbHQpO1xuICBsZXQgKGFjdCwgaWR4KSA9XG4gICAgc3dpdGNoIChjdHgpIHtcbiAgICB8IEZpbHRlcihfLCBfKSA9PiAocGFjdCwgcGlkeClcbiAgICB8IF8gPT4gbWlkeCA+IGlkeCA/IChtYWN0LCBtaWR4KSA6IChwYWN0LCBwaWR4KVxuICAgIH07XG4gIGxldCBtYXAgPSAoKGEsIGksIGMpLCBmOiBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50KSA9PiB7XG4gICAgKGEsIGksIGYoYykpO1xuICB9O1xuICBsZXQgKGxldCspID0gbWFwO1xuICBsZXQgKHJhY3QsIHJpZHgsIHJjdHgpID1cbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgIHwgTWFyayA9PiAoYWN0LCBpZHgsIEV2YWxDdHguTWFyaylcbiAgICB8IENsb3N1cmUoZW52LCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBDbG9zdXJlKGVudiwgY3R4KTtcbiAgICB8IEZpbHRlcihGaWx0ZXIoZmx0JyksIGN0eCkgPT5cbiAgICAgIGxldCBmbHQgPSBmbHQgfD4gRmlsdGVyRW52aXJvbm1lbnQuZXh0ZW5kcyhmbHQnKTtcbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEZpbHRlcihGaWx0ZXIoZmx0JyksIGN0eCk7XG4gICAgfCBGaWx0ZXIoUmVzaWR1ZShpZHgsIGFjdCksIGN0eCkgPT5cbiAgICAgIGxldCAocmFjdCwgcmlkeCwgcmN0eCkgPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgaWYgKHJpZHggPT0gaWR4ICYmIHJhY3QgfD4gc25kID09IEFsbCkge1xuICAgICAgICAocmFjdCwgcmlkeCwgRmlsdGVyKFJlc2lkdWUoaWR4LCBhY3QpLCByY3R4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAocmFjdCwgcmlkeCwgcmN0eCk7XG4gICAgICB9O1xuICAgIHwgU2VxdWVuY2UxKGN0eCwgZDIpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBTZXF1ZW5jZTEoY3R4LCBkMik7XG4gICAgfCBTZXF1ZW5jZTIoZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIFNlcXVlbmNlMihkMSwgY3R4KTtcbiAgICB8IExldDEoZDEsIGN0eCwgZDMpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBMZXQxKGQxLCBjdHgsIGQzKTtcbiAgICB8IExldDIoZDEsIGQyLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBMZXQyKGQxLCBkMiwgY3R4KTtcbiAgICB8IEZ1bihkcCwgdHksIGN0eCwgbmFtZSkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEZ1bihkcCwgdHksIGN0eCwgbmFtZSk7XG4gICAgfCBGaXhGKG5hbWUsIHR5LCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBGaXhGKG5hbWUsIHR5LCBjdHgpO1xuICAgIHwgQXAxKGN0eCwgZDIpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBBcDEoY3R4LCBkMik7XG4gICAgfCBBcDIoZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEFwMihkMSwgY3R4KTtcbiAgICB8IElmVGhlbkVsc2UxKGMsIGN0eCwgZDIsIGQzKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgSWZUaGVuRWxzZTEoYywgY3R4LCBkMiwgZDMpO1xuICAgIHwgSWZUaGVuRWxzZTIoYywgZDEsIGN0eCwgZDMpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBJZlRoZW5FbHNlMihjLCBkMSwgY3R4LCBkMyk7XG4gICAgfCBJZlRoZW5FbHNlMyhjLCBkMSwgZDIsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIElmVGhlbkVsc2UzKGMsIGQxLCBkMiwgY3R4KTtcbiAgICB8IEJpbkJvb2xPcDEob3AsIGN0eCwgZDEpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBCaW5Cb29sT3AxKG9wLCBjdHgsIGQxKTtcbiAgICB8IEJpbkJvb2xPcDIob3AsIGQxLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBCaW5Cb29sT3AyKG9wLCBkMSwgY3R4KTtcbiAgICB8IEJpbkludE9wMShvcCwgY3R4LCBkMikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpbkludE9wMShvcCwgY3R4LCBkMik7XG4gICAgfCBCaW5JbnRPcDIob3AsIGQxLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBCaW5JbnRPcDIob3AsIGQxLCBjdHgpO1xuICAgIHwgQmluRmxvYXRPcDEob3AsIGN0eCwgZDIpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBCaW5GbG9hdE9wMShvcCwgY3R4LCBkMik7XG4gICAgfCBCaW5GbG9hdE9wMihvcCwgZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpbkZsb2F0T3AyKG9wLCBkMSwgY3R4KTtcbiAgICB8IEJpblN0cmluZ09wMShvcCwgY3R4LCBkMikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpblN0cmluZ09wMShvcCwgY3R4LCBkMik7XG4gICAgfCBCaW5TdHJpbmdPcDIob3AsIGQxLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBCaW5TdHJpbmdPcDIob3AsIGQxLCBjdHgpO1xuICAgIHwgVHVwbGUoY3R4LCBkcykgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIFR1cGxlKGN0eCwgZHMpO1xuICAgIHwgQXBCdWlsdGluKG5hbWUsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEFwQnVpbHRpbihuYW1lLCBjdHgpO1xuICAgIHwgVGVzdChpZCwgY3R4KSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgVGVzdChpZCwgY3R4KTtcbiAgICB8IExpc3RMaXQodSwgaSwgdHksIGN0eCwgZHMpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBMaXN0TGl0KHUsIGksIHR5LCBjdHgsIGRzKTtcbiAgICB8IENvbnMxKGN0eCwgZDIpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBDb25zMShjdHgsIGQyKTtcbiAgICB8IENvbnMyKGQxLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBDb25zMihkMSwgY3R4KTtcbiAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBMaXN0Q29uY2F0MShjdHgsIGQyKTtcbiAgICB8IExpc3RDb25jYXQyKGQxLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBMaXN0Q29uY2F0MihkMSwgY3R4KTtcbiAgICB8IFByaihjdHgsIG4pID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBQcmooY3R4LCBuKTtcbiAgICB8IE5vbkVtcHR5SG9sZShlLCB1LCBpLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBOb25FbXB0eUhvbGUoZSwgdSwgaSwgY3R4KTtcbiAgICB8IENhc3QoY3R4LCB0eSwgdHknKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgQ2FzdChjdHgsIHR5LCB0eScpO1xuICAgIHwgRmFpbGVkQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBGYWlsZWRDYXN0KGN0eCwgdHksIHR5Jyk7XG4gICAgfCBJbnZhbGlkT3BlcmF0aW9uKGN0eCwgZXJyb3IpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBJbnZhbGlkT3BlcmF0aW9uKGN0eCwgZXJyb3IpO1xuICAgIHwgQ29uc2lzdGVudENhc2UoQ2FzZShjdHgsIHJzLCBpKSkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIENvbnNpc3RlbnRDYXNlKENhc2UoY3R4LCBycywgaSkpO1xuICAgIHwgQ29uc2lzdGVudENhc2VSdWxlKGRleHAsIGRwYXQsIGN0eCwgcnMsIGkpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBDb25zaXN0ZW50Q2FzZVJ1bGUoZGV4cCwgZHBhdCwgY3R4LCBycywgaSk7XG4gICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKGN0eCwgcnMsIHJpKSkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2UoY3R4LCBycywgcmkpKTtcbiAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzUnVsZShkZXhwLCB1LCBpLCBkcGF0LCBjdHgsIHJzLCByaSkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEluY29uc2lzdGVudEJyYW5jaGVzUnVsZShkZXhwLCB1LCBpLCBkcGF0LCBjdHgsIHJzLCByaSk7XG4gICAgfTtcbiAgc3dpdGNoIChjdHgpIHtcbiAgfCBGaWx0ZXIoXykgPT4gKHJhY3QsIHJpZHgsIHJjdHgpXG4gIHwgXyB3aGVuIG1pZHggPT0gcmlkeCAmJiBtaWR4ID4gcGlkeCAmJiBtYWN0IHw+IHNuZCA9PSBBbGwgPT4gKFxuICAgICAgcmFjdCxcbiAgICAgIHJpZHgsXG4gICAgICBGaWx0ZXIoUmVzaWR1ZShtaWR4LCBtYWN0KSwgcmN0eCksXG4gICAgKVxuICB8IF8gPT4gKHJhY3QsIHJpZHgsIHJjdHgpXG4gIH07XG59O1xuXG5sZXQgc2hvdWxkX2hpZGVfZXZhbF9vYmogPVxuICAgICh+c2V0dGluZ3MsIHg6IEV2YWxPYmoudCk6IChGaWx0ZXJBY3Rpb24uYWN0aW9uLCBFdmFsT2JqLnQpID0+XG4gIGlmIChzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncywgeC5rbmQpKSB7XG4gICAgKEV2YWwsIHgpO1xuICB9IGVsc2Uge1xuICAgIGxldCAoYWN0LCBfLCBjdHgpID1cbiAgICAgIG1hdGNoZXMoQ2xvc3VyZUVudmlyb25tZW50LmVtcHR5LCBbXSwgeC5jdHgsIHguZF9sb2MsIChTdGVwLCBPbmUpLCAwKTtcbiAgICBzd2l0Y2ggKGFjdCkge1xuICAgIHwgKEV2YWwsIF8pID0+IChFdmFsLCB7Li4ueCwgY3R4fSlcbiAgICB8IChTdGVwLCBfKSA9PiAoU3RlcCwgey4uLngsIGN0eH0pXG4gICAgfTtcbiAgfTtcblxubGV0IHNob3VsZF9oaWRlX3N0ZXAgPSAofnNldHRpbmdzLCB4OiBzdGVwKTogKEZpbHRlckFjdGlvbi5hY3Rpb24sIHN0ZXApID0+XG4gIGlmIChzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncywgeC5rbmQpKSB7XG4gICAgKEV2YWwsIHgpO1xuICB9IGVsc2Uge1xuICAgIGxldCAoYWN0LCBfLCBjdHgpID1cbiAgICAgIG1hdGNoZXMoQ2xvc3VyZUVudmlyb25tZW50LmVtcHR5LCBbXSwgeC5jdHgsIHguZF9sb2MsIChTdGVwLCBPbmUpLCAwKTtcbiAgICBzd2l0Y2ggKGFjdCkge1xuICAgIHwgKEV2YWwsIF8pID0+IChFdmFsLCB7Li4ueCwgY3R4fSlcbiAgICB8IChTdGVwLCBfKSA9PiAoU3RlcCwgey4uLngsIGN0eH0pXG4gICAgfTtcbiAgfTtcblxubGV0IGdldF9lbGFiID0gKHtlbGFiLCBffTogdCkgPT4gZWxhYjtcblxubGV0IGdldF9uZXh0X3N0ZXBzID0gcyA9PiBzLm5leHQ7XG5cbmxldCBjdXJyZW50X2V4cHIgPSAoczogdCkgPT5cbiAgc3dpdGNoIChzLmN1cnJlbnQsIHMucHJldmlvdXMpIHtcbiAgfCAoU3RlcHBlck9LKGQsIF8pLCBfKVxuICB8IChTdGVwUGVuZGluZyhkLCBfLCBfKSwgXykgPT4gZFxuICB8IChTdGVwVGltZW91dCwgW3gsIC4uLl9dKSA9PiB4LmRcbiAgfCAoU3RlcFRpbWVvdXQsIFtdKSA9PiBzLmVsYWJcbiAgfTtcblxubGV0IHN0ZXBfcGVuZGluZyA9IChpZHg6IGludCwge2VsYWIsIHByZXZpb3VzLCBjdXJyZW50LCBuZXh0fTogdCkgPT4ge1xuICAvLyBUT0RPW01hdHRdOiBjaGFuZ2UgdG8gbnRoX29wdCBhZnRlciByZWZhY3RvclxuICBsZXQgZW8gPSBMaXN0Lm50aChuZXh0LCBpZHgpO1xuICBzd2l0Y2ggKGN1cnJlbnQpIHtcbiAgfCBTdGVwcGVyT0soZCwgcykgPT4ge1xuICAgICAgZWxhYixcbiAgICAgIHByZXZpb3VzLFxuICAgICAgY3VycmVudDogU3RlcFBlbmRpbmcoZCwgcywgU29tZShlbykpLFxuICAgICAgbmV4dCxcbiAgICB9XG4gIHwgU3RlcFRpbWVvdXQgPT4ge1xuICAgICAgZWxhYixcbiAgICAgIHByZXZpb3VzOiBMaXN0LnRsKHByZXZpb3VzKSxcbiAgICAgIGN1cnJlbnQ6XG4gICAgICAgIFN0ZXBQZW5kaW5nKFxuICAgICAgICAgIExpc3QuaGQocHJldmlvdXMpLmQsXG4gICAgICAgICAgTGlzdC5oZChwcmV2aW91cykuc3RhdGUsXG4gICAgICAgICAgU29tZShlbyksXG4gICAgICAgICksXG4gICAgICBuZXh0LFxuICAgIH1cbiAgfCBTdGVwUGVuZGluZyhkLCBzLCBfKSA9PiB7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBjdXJyZW50OiBTdGVwUGVuZGluZyhkLCBzLCBTb21lKGVvKSksXG4gICAgICBuZXh0LFxuICAgIH1cbiAgfTtcbn07XG5cbmxldCBpbml0ID0gKGVsYWI6IERIRXhwLnQpID0+IHtcbiAge1xuICAgIGVsYWIsXG4gICAgcHJldmlvdXM6IFtdLFxuICAgIGN1cnJlbnQ6IFN0ZXBQZW5kaW5nKGVsYWIsIEV2YWx1YXRvclN0YXRlLmluaXQsIE5vbmUpLFxuICAgIG5leHQ6IGRlY29tcG9zZShlbGFiKSxcbiAgfTtcbn07XG5cbmxldCB1cGRhdGVfcmVzdWx0ID1cbiAgICAoXG4gICAgICAoXG4gICAgICAgIGQ6IERIRXhwLnQsXG4gICAgICAgIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxuICAgICAgICBuZXh0X2V2YWxfb2JqczogbGlzdChFdmFsT2JqLnQpLFxuICAgICAgICBza2lwcGVkX3N0ZXBzOiBsaXN0KHN0ZXApLFxuICAgICAgKSxcbiAgICAgIHM6IHQsXG4gICAgKSA9PiB7XG4gIHByZXZpb3VzOiBza2lwcGVkX3N0ZXBzIEAgcy5wcmV2aW91cyxcbiAgY3VycmVudDogU3RlcHBlck9LKGQsIHN0YXRlKSxcbiAgbmV4dDogbmV4dF9ldmFsX29ianMsXG4gIGVsYWI6IHMuZWxhYixcbn07XG5cbmxldCByZWMgZXZhbHVhdGVfcGVuZGluZyA9ICh+c2V0dGluZ3MsIHM6IHQpID0+IHtcbiAgc3dpdGNoIChzLmN1cnJlbnQpIHtcbiAgfCBTdGVwcGVyT0soXylcbiAgfCBTdGVwVGltZW91dCA9PiBzXG4gIHwgU3RlcFBlbmRpbmcoZCwgc3RhdGUsIFNvbWUoZW8pKSA9PlxuICAgIGxldCBzdGF0ZV9yZWYgPSByZWYoc3RhdGUpO1xuICAgIGxldCBkX2xvYycgPVxuICAgICAgc3dpdGNoICh0YWtlX3N0ZXAoc3RhdGVfcmVmLCBlby5lbnYsIGVvLmRfbG9jKSkge1xuICAgICAgfCBTb21lKGQpID0+IGRcbiAgICAgIHwgTm9uZSA9PiByYWlzZShFeGNlcHRpb24pXG4gICAgICB9O1xuICAgIGxldCBkJyA9IGNvbXBvc2UoZW8uY3R4LCBkX2xvYycpO1xuICAgIHtcbiAgICAgIGVsYWI6IHMuZWxhYixcbiAgICAgIHByZXZpb3VzOiBbXG4gICAgICAgIHtkLCBkX2xvYzogZW8uZF9sb2MsIGN0eDogZW8uY3R4LCBrbmQ6IGVvLmtuZCwgc3RhdGV9LFxuICAgICAgICAuLi5zLnByZXZpb3VzLFxuICAgICAgXSxcbiAgICAgIGN1cnJlbnQ6IFN0ZXBQZW5kaW5nKGQnLCBzdGF0ZV9yZWZeLCBOb25lKSxcbiAgICAgIG5leHQ6IGRlY29tcG9zZShkJyksXG4gICAgfVxuICAgIHw+IGV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzKTtcbiAgfCBTdGVwUGVuZGluZyhkLCBzdGF0ZSwgTm9uZSkgPT5cbiAgICBsZXQgbmV4dCcgPSBzLm5leHQgfD4gTGlzdC5tYXAoc2hvdWxkX2hpZGVfZXZhbF9vYmoofnNldHRpbmdzKSk7XG4gICAgc3dpdGNoIChMaXN0LmZpbmRfb3B0KCgoYWN0LCBfKSkgPT4gYWN0ID09IEZpbHRlckFjdGlvbi5FdmFsLCBuZXh0JykpIHtcbiAgICB8IFNvbWUoKF8sIGVvKSkgPT5cbiAgICAgIHtcbiAgICAgICAgZWxhYjogcy5lbGFiLFxuICAgICAgICBwcmV2aW91czogcy5wcmV2aW91cyxcbiAgICAgICAgY3VycmVudDogU3RlcFBlbmRpbmcoZCwgc3RhdGUsIFNvbWUoZW8pKSxcbiAgICAgICAgbmV4dDogbmV4dCcgfD4gTGlzdC5tYXAoc25kKSxcbiAgICAgIH1cbiAgICAgIHw+IGV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzKVxuICAgIHwgTm9uZSA9PiB7XG4gICAgICAgIGVsYWI6IHMuZWxhYixcbiAgICAgICAgcHJldmlvdXM6IHMucHJldmlvdXMsXG4gICAgICAgIGN1cnJlbnQ6IFN0ZXBwZXJPSyhkLCBzdGF0ZSksXG4gICAgICAgIG5leHQ6IG5leHQnIHw+IExpc3QubWFwKHNuZCksXG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn07XG5cbmxldCByZWMgZXZhbHVhdGVfZnVsbCA9ICh+c2V0dGluZ3MsIHM6IHQpID0+IHtcbiAgc3dpdGNoIChzLmN1cnJlbnQpIHtcbiAgfCBTdGVwVGltZW91dCA9PiBzXG4gIHwgU3RlcHBlck9LKF8pIHdoZW4gcy5uZXh0ID09IFtdID0+IHNcbiAgfCBTdGVwcGVyT0soXykgPT4gcyB8PiBzdGVwX3BlbmRpbmcoMCkgfD4gZXZhbHVhdGVfZnVsbCh+c2V0dGluZ3MpXG4gIHwgU3RlcFBlbmRpbmcoXykgPT5cbiAgICBldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncywgcykgfD4gZXZhbHVhdGVfZnVsbCh+c2V0dGluZ3MpXG4gIH07XG59O1xuXG5sZXQgdGltZW91dCA9XG4gIGZ1blxuICB8IHtlbGFiLCBwcmV2aW91cywgY3VycmVudDogU3RlcFBlbmRpbmcoZCwgc3RhdGUsIFNvbWUoZW8pKSwgbmV4dH0gPT4ge1xuICAgICAgZWxhYixcbiAgICAgIHByZXZpb3VzOiBbXG4gICAgICAgIHtkLCBkX2xvYzogZW8uZF9sb2MsIGN0eDogZW8uY3R4LCBrbmQ6IGVvLmtuZCwgc3RhdGV9LFxuICAgICAgICAuLi5wcmV2aW91cyxcbiAgICAgIF0sXG4gICAgICBjdXJyZW50OiBTdGVwVGltZW91dCxcbiAgICAgIG5leHQsXG4gICAgfVxuICB8IHtjdXJyZW50OiBTdGVwVGltZW91dCB8IFN0ZXBwZXJPSyhfKSB8IFN0ZXBQZW5kaW5nKF8sIF8sIE5vbmUpLCBffSBhcyBzID0+IHM7XG5cbi8vIGxldCByZWMgc3RlcF9mb3J3YXJkID0gKH5zZXR0aW5ncywgZTogRXZhbE9iai50LCBzOiB0KSA9PiB7XG4vLyAgIGxldCBjdXJyZW50ID0gY29tcG9zZShlLmN0eCwgZS5hcHBseSgpKTtcbi8vICAgc2tpcF9zdGVwcyhcbi8vICAgICB+c2V0dGluZ3MsXG4vLyAgICAge1xuLy8gICAgICAgY3VycmVudCxcbi8vICAgICAgIHByZXZpb3VzOiBbe2Q6IHMuY3VycmVudCwgc3RlcDogZX0sIC4uLnMucHJldmlvdXNdLFxuLy8gICAgICAgbmV4dDogZGVjb21wb3NlKGN1cnJlbnQpLFxuLy8gICAgIH0sXG4vLyAgICk7XG4vLyB9XG4vLyBhbmQgc2tpcF9zdGVwcyA9ICh+c2V0dGluZ3MsIHMpID0+IHtcbi8vICAgc3dpdGNoIChcbi8vICAgICBMaXN0LmZpbmRfb3B0KFxuLy8gICAgICAgKHg6IEV2YWxPYmoudCkgPT4gc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MsIHgua25kKSxcbi8vICAgICAgIHMubmV4dCxcbi8vICAgICApXG4vLyAgICkge1xuLy8gICB8IE5vbmUgPT4gc1xuLy8gICB8IFNvbWUoZSkgPT4gc3RlcF9mb3J3YXJkKH5zZXR0aW5ncywgZSwgcylcbi8vICAgfTtcbi8vIH07XG5cbmxldCByZWMgdW5kb19wb2ludCA9XG4gICAgICAgICh+c2V0dGluZ3MpOiAobGlzdChzdGVwKSA9PiBvcHRpb24oKHN0ZXAsIGxpc3Qoc3RlcCkpKSkgPT5cbiAgZnVuXG4gIHwgW10gPT4gTm9uZVxuICB8IFt4LCAuLi54c10gd2hlbiBzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncywgeCkgfD4gZnN0ID09IEV2YWwgPT5cbiAgICB1bmRvX3BvaW50KH5zZXR0aW5ncywgeHMpXG4gIHwgW3gsIC4uLnhzXSA9PiBTb21lKCh4LCB4cykpO1xuXG5sZXQgc3RlcF9iYWNrd2FyZCA9ICh+c2V0dGluZ3MsIHM6IHQpID0+XG4gIHN3aXRjaCAodW5kb19wb2ludCh+c2V0dGluZ3MsIHMucHJldmlvdXMpKSB7XG4gIHwgTm9uZSA9PiBmYWlsd2l0aChcImNhbm5vdCBzdGVwIGJhY2t3YXJkc1wiKVxuICB8IFNvbWUoKHgsIHhzKSkgPT4ge1xuICAgICAgY3VycmVudDogU3RlcHBlck9LKHguZCwgeC5zdGF0ZSksXG4gICAgICBuZXh0OiBkZWNvbXBvc2UoeC5kKSxcbiAgICAgIHByZXZpb3VzOiB4cyxcbiAgICAgIGVsYWI6IHMuZWxhYixcbiAgICB9XG4gIH07XG5cbmxldCBnZXRfanVzdGlmaWNhdGlvbjogc3RlcF9raW5kID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IExldEJpbmQgPT4gXCJzdWJzdGl0dXRpb25cIlxuICB8IFNlcXVlbmNlID0+IFwic2VxdWVuY2VcIlxuICB8IEZpeFVud3JhcCA9PiBcInVucm9sbCBmaXhwb2ludFwiXG4gIHwgVXBkYXRlVGVzdCA9PiBcInVwZGF0ZSB0ZXN0XCJcbiAgfCBGdW5BcCA9PiBcImFwcGx5IGZ1bmN0aW9uXCJcbiAgfCBCdWlsdGluV3JhcCA9PiBcIndyYXAgYnVpbHRpblwiXG4gIHwgQnVpbHRpbkFwKHMpID0+IFwiZXZhbHVhdGUgXCIgKysgc1xuICB8IEJpbkludE9wKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpXG4gIHwgQmluRmxvYXRPcChQbHVzIHwgTWludXMgfCBUaW1lcyB8IFBvd2VyIHwgRGl2aWRlKSA9PiBcImFyaXRobWV0aWNcIlxuICB8IEJpbkludE9wKExlc3NUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW4gfCBHcmVhdGVyVGhhbk9yRXF1YWwpXG4gIHwgQmluRmxvYXRPcChMZXNzVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuIHwgR3JlYXRlclRoYW5PckVxdWFsKSA9PiBcImNvbXBhcmlzb25cIlxuICB8IEJpbkludE9wKEVxdWFscyB8IE5vdEVxdWFscylcbiAgfCBCaW5GbG9hdE9wKEVxdWFscyB8IE5vdEVxdWFscylcbiAgfCBCaW5TdHJpbmdPcChFcXVhbHMpID0+IFwiY2hlY2sgZXF1YWxpdHlcIlxuICB8IEJpblN0cmluZ09wKENvbmNhdCkgPT4gXCJzdHJpbmcgbWFuaXB1bGF0aW9uXCJcbiAgfCBCaW5Cb29sT3AoXykgPT4gXCJib29sZWFuIGxvZ2ljXCJcbiAgfCBDb25kaXRpb25hbChfKSA9PiBcImNvbmRpdGlvbmFsXCJcbiAgfCBMaXN0Q29ucyA9PiBcImxpc3QgbWFuaXB1bGF0aW9uXCJcbiAgfCBMaXN0Q29uY2F0ID0+IFwibGlzdCBtYW5pcHVsYXRpb25cIlxuICB8IENhc2VBcHBseSA9PiBcImNhc2Ugc2VsZWN0aW9uXCJcbiAgfCBDYXNlTmV4dCA9PiBcImNhc2UgZGlzY2FyZGluZ1wiXG4gIHwgUHJvamVjdGlvbiA9PiBcInByb2plY3Rpb25cIiAvLyBUT0RPKE1hdHQpOiBXZSBkb24ndCB3YW50IHRvIHNob3cgcHJvamVjdGlvbiB0byB0aGUgdXNlclxuICB8IEludmFsaWRTdGVwID0+IFwiZXJyb3JcIlxuICB8IFZhckxvb2t1cCA9PiBcInZhcmlhYmxlIGxvb2t1cFwiXG4gIHwgQ2FzdEFwXG4gIHwgQ2FzdCA9PiBcImNhc3QgY2FsY3VsdXNcIlxuICB8IENvbXBsZXRlRmlsdGVyID0+IFwidW5pZGVudGlmaWVkIHN0ZXBcIlxuICB8IENvbXBsZXRlQ2xvc3VyZSA9PiBcInVuaWRlbnRpZmllZCBzdGVwXCJcbiAgfCBGdW5DbG9zdXJlID0+IFwidW5pZGVudGlmaWVkIHN0ZXBcIlxuICB8IFNraXAgPT4gXCJza2lwcGVkIHN0ZXBzXCI7XG5cbmxldCBnZXRfaGlzdG9yeSA9ICh+c2V0dGluZ3MsIHN0ZXBwZXIpID0+IHtcbiAgbGV0IHJlYyBnZXRfaGlzdG9yeSc6XG4gICAgbGlzdChzdGVwKSA9PiAobGlzdChzdGVwKSwgbGlzdChzdGVwX3dpdGhfcHJldmlvdXMpKSA9XG4gICAgZnVuXG4gICAgfCBbXSA9PiAoW10sIFtdKVxuICAgIHwgW3N0ZXAsIC4uLnN0ZXBzXSA9PiB7XG4gICAgICAgIGxldCAoaGlkZGVuLCBzcykgPSBnZXRfaGlzdG9yeScoc3RlcHMpO1xuICAgICAgICBzd2l0Y2ggKHN0ZXAgfD4gc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MpIHw+IGZzdCkge1xuICAgICAgICB8IEV2YWwgPT4gKFtzdGVwLCAuLi5oaWRkZW5dLCBzcylcbiAgICAgICAgfCBTdGVwID0+IChcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RlcCxcbiAgICAgICAgICAgICAgICBwcmV2aW91czpcbiAgICAgICAgICAgICAgICAgIE9wdGlvbi5tYXAoXG4gICAgICAgICAgICAgICAgICAgICh4OiBzdGVwX3dpdGhfcHJldmlvdXMpID0+IHguc3RlcCxcbiAgICAgICAgICAgICAgICAgICAgTGlzdC5udGhfb3B0KHNzLCAwKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaGlkZGVuLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAuLi5zcyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgc3RlcHBlci5wcmV2aW91cyB8PiBnZXRfaGlzdG9yeSc7XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBlcnNpc3RlbnQgPSB7XG4gIGVsYWI6IERIRXhwLnQsXG4gIHByZXZpb3VzOiBsaXN0KHN0ZXApLFxuICBjdXJyZW50LFxufTtcblxubGV0IChzZXhwX29mX3BlcnNpc3RlbnQsIHBlcnNpc3RlbnRfb2Zfc2V4cCkgPVxuICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2luKFxuICAgIHNleHBfb2ZfcGVyc2lzdGVudCxcbiAgICBwZXJzaXN0ZW50X29mX3NleHAsXG4gICk7XG5cbi8vIFJlbW92ZSBFdmFsT2JqLnQgb2JqZWN0cyBmcm9tIHN0ZXBwZXIgdG8gcHJldmVudCBwcm9ibGVtcyB3aGVuIGxvYWRpbmdcbmxldCB0b19wZXJzaXN0ZW50OiB0ID0+IHBlcnNpc3RlbnQgPVxuICBmdW5cbiAgfCB7ZWxhYiwgcHJldmlvdXMsIGN1cnJlbnQ6IFN0ZXBQZW5kaW5nKGQsIHN0YXRlLCBTb21lKF8pKSwgX30gPT4ge1xuICAgICAgZWxhYixcbiAgICAgIHByZXZpb3VzLFxuICAgICAgY3VycmVudDogU3RlcFBlbmRpbmcoZCwgc3RhdGUsIE5vbmUpLFxuICAgIH1cbiAgfCB7ZWxhYiwgcHJldmlvdXMsIGN1cnJlbnQsIF99ID0+IHtlbGFiLCBwcmV2aW91cywgY3VycmVudH07XG5cbmxldCBmcm9tX3BlcnNpc3RlbnQ6IHBlcnNpc3RlbnQgPT4gdCA9XG4gICh7ZWxhYiwgcHJldmlvdXMsIGN1cnJlbnR9KSA9PiB7XG4gICAgbGV0IHMgPSB7ZWxhYiwgcHJldmlvdXMsIGN1cnJlbnQsIG5leHQ6IFtdfTtcbiAgICB7ZWxhYiwgcHJldmlvdXMsIGN1cnJlbnQsIG5leHQ6IGRlY29tcG9zZShjdXJyZW50X2V4cHIocykpfTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFppcHBlcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwaWVjZV9nb2FsID1cbiAgfCBHcm91dDtcblxubGV0IG9mX3BpZWNlX2dvYWwgPVxuICBmdW5cbiAgfCBHcm91dCA9PiAoXG4gICAgICBmdW5cbiAgICAgIHwgUGllY2UuR3JvdXQoXykgPT4gdHJ1ZVxuICAgICAgfCBfID0+IGZhbHNlXG4gICAgKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBnb2FsID1cbiAgfCBQb2ludChNZWFzdXJlZC5Qb2ludC50KVxuICB8IFBpZWNlKHBpZWNlX2dvYWwsIERpcmVjdGlvbi50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZlID1cbiAgfCBFeHRyZW1lKHBsYW5hcilcbiAgfCBMb2NhbChwbGFuYXIpXG4gIHwgR29hbChnb2FsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqdW1wX3RhcmdldCA9XG4gIHwgVGlsZUlkKElkLnQpXG4gIHwgQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByZWwgPVxuICB8IEN1cnJlbnRcbiAgfCBJZChJZC50LCBEaXJlY3Rpb24udCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VsZWN0ID1cbiAgfCBBbGxcbiAgfCBSZXNpemUobW92ZSlcbiAgfCBTbWFydFxuICB8IFRpbGUocmVsKVxuICB8IFRlcm0ocmVsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBNb3ZlKG1vdmUpXG4gIHwgTW92ZVRvTmV4dEhvbGUoRGlyZWN0aW9uLnQpXG4gIHwgSnVtcChqdW1wX3RhcmdldClcbiAgfCBTZWxlY3Qoc2VsZWN0KVxuICB8IFVuc2VsZWN0KG9wdGlvbihEaXJlY3Rpb24udCkpXG4gIHwgRGVzdHJ1Y3QoRGlyZWN0aW9uLnQpXG4gIHwgSW5zZXJ0KHN0cmluZylcbiAgfCBSb3RhdGVCYWNrcGFja1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KHBsYW5hcilcbiAgfCBQaWNrX3VwXG4gIHwgUHV0X2Rvd247XG5cbm1vZHVsZSBGYWlsdXJlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBDYW50X21vdmVcbiAgICB8IENhbnRfaW5zZXJ0XG4gICAgfCBDYW50X2Rlc3RydWN0XG4gICAgfCBDYW50X3NlbGVjdFxuICAgIHwgQ2FudF9wdXRfZG93bjtcbn07XG5cbm1vZHVsZSBSZXN1bHQgPSB7XG4gIGluY2x1ZGUgUmVzdWx0O1xuICB0eXBlIHQoJ3N1Y2Nlc3MpID0gUmVzdWx0LnQoJ3N1Y2Nlc3MsIEZhaWx1cmUudCk7XG59O1xuXG5sZXQgaXNfZWRpdDogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgSW5zZXJ0KF8pXG4gIHwgRGVzdHJ1Y3QoXylcbiAgfCBQaWNrX3VwXG4gIHwgUHV0X2Rvd24gPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgTWV0YSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIGNvbF90YXJnZXQ6IGludCxcbiAgICB0b3VjaGVkOiBUb3VjaGVkLnQsXG4gICAgbWVhc3VyZWQ6IE1lYXN1cmVkLnQsXG4gICAgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCxcbiAgICB1bnNlbGVjdGVkOiBTZWdtZW50LnQsXG4gICAgc2VnbWVudDogU2VnbWVudC50LFxuICAgIHZpZXdfdGVybTogVGVybS5VRXhwLnQsXG4gICAgdGVybXM6IFRlcm1NYXAudCxcbiAgICB0aWxlczogVGlsZU1hcC50LFxuICAgIGhvbGVzOiBsaXN0KEdyb3V0LnQpLFxuICAgIGJ1ZmZlcl9pZHM6IGxpc3QoSWQudCksXG4gIH07XG5cbiAgbGV0IGluaXQgPSAoejogWmlwcGVyLnQpID0+IHtcbiAgICBsZXQgdW5zZWxlY3RlZCA9IFppcHBlci51bnNlbGVjdF9hbmRfemlwKHopO1xuICAgIGxldCAodmlld190ZXJtLCB0ZXJtcykgPSBNYWtlVGVybS5nbyh1bnNlbGVjdGVkKTtcbiAgICB7XG4gICAgICBjb2xfdGFyZ2V0OiAwLFxuICAgICAgdG91Y2hlZDogVG91Y2hlZC5lbXB0eSxcbiAgICAgIG1lYXN1cmVkOiBNZWFzdXJlZC5vZl9zZWdtZW50KHVuc2VsZWN0ZWQpLFxuICAgICAgdW5zZWxlY3RlZCxcbiAgICAgIHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLm1rKHVuc2VsZWN0ZWQpLFxuICAgICAgc2VnbWVudDogWmlwcGVyLnppcCh6KSxcbiAgICAgIHRpbGVzOiBUaWxlTWFwLm1rKHVuc2VsZWN0ZWQpLFxuICAgICAgdmlld190ZXJtLFxuICAgICAgdGVybXMsXG4gICAgICBob2xlczogU2VnbWVudC5ob2xlcyh1bnNlbGVjdGVkKSxcbiAgICAgIGJ1ZmZlcl9pZHM6IFNlbGVjdGlvbi5idWZmZXJfaWRzKHouc2VsZWN0aW9uKSxcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSB0eXBlIFMgPSB7XG4gICAgbGV0IHRvdWNoZWQ6IFRvdWNoZWQudDtcbiAgICBsZXQgbWVhc3VyZWQ6IE1lYXN1cmVkLnQ7XG4gICAgbGV0IHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQ7XG4gICAgbGV0IGNvbF90YXJnZXQ6IGludDtcbiAgfTtcbiAgbGV0IG1vZHVsZV9vZl90ID0gKG06IHQpOiAobW9kdWxlIFMpID0+XG4gICAgKG1vZHVsZVxuICAgICB7XG4gICAgICAgbGV0IHRvdWNoZWQgPSBtLnRvdWNoZWQ7XG4gICAgICAgbGV0IG1lYXN1cmVkID0gbS5tZWFzdXJlZDtcbiAgICAgICBsZXQgdGVybV9yYW5nZXMgPSBtLnRlcm1fcmFuZ2VzO1xuICAgICAgIGxldCBjb2xfdGFyZ2V0ID0gbS5jb2xfdGFyZ2V0O1xuICAgICB9KTtcblxuICAvLyBzaG91bGQgbm90IGJlIHNlcmlhbGl6aW5nXG4gIGxldCBzZXhwX29mX3QgPSBfID0+IGZhaWx3aXRoKFwiRWRpdG9yLk1ldGEuc2V4cF9vZl90XCIpO1xuICBsZXQgdF9vZl9zZXhwID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnRfb2Zfc2V4cFwiKTtcbiAgbGV0IHlvanNvbl9vZl90ID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnlvanNvbl9vZl90XCIpO1xuICBsZXQgdF9vZl95b2pzb24gPSBfID0+IGZhaWx3aXRoKFwiRWRpdG9yLk1ldGEudF9vZl95b2pzb25cIik7XG5cbiAgbGV0IG5leHQgPVxuICAgICAgKH5lZmZlY3RzOiBsaXN0KEVmZmVjdC50KT1bXSwgYTogQWN0aW9uLnQsIHo6IFppcHBlci50LCBtZXRhOiB0KTogdCA9PiB7XG4gICAgbGV0IHt0b3VjaGVkLCBtZWFzdXJlZCwgY29sX3RhcmdldCwgX30gPSBtZXRhO1xuICAgIGxldCB0b3VjaGVkID0gVG91Y2hlZC51cGRhdGUoVGltZS50aWNrKCksIGVmZmVjdHMsIHRvdWNoZWQpO1xuICAgIGxldCBpc19lZGl0ID0gQWN0aW9uLmlzX2VkaXQoYSk7XG4gICAgbGV0IHVuc2VsZWN0ZWQgPSBpc19lZGl0ID8gWmlwcGVyLnVuc2VsZWN0X2FuZF96aXAoeikgOiBtZXRhLnVuc2VsZWN0ZWQ7XG4gICAgbGV0IG1lYXN1cmVkID1cbiAgICAgIGlzX2VkaXRcbiAgICAgICAgPyBNZWFzdXJlZC5vZl9zZWdtZW50KH50b3VjaGVkLCB+b2xkPW1lYXN1cmVkLCB1bnNlbGVjdGVkKSA6IG1lYXN1cmVkO1xuICAgIGxldCBjb2xfdGFyZ2V0ID1cbiAgICAgIHN3aXRjaCAoYSkge1xuICAgICAgfCBNb3ZlKExvY2FsKFVwIHwgRG93bikpXG4gICAgICB8IFNlbGVjdChSZXNpemUoTG9jYWwoVXAgfCBEb3duKSkpID0+IGNvbF90YXJnZXRcbiAgICAgIHwgXyA9PiBaaXBwZXIuY2FyZXRfcG9pbnQobWVhc3VyZWQsIHopLmNvbFxuICAgICAgfTtcbiAgICBsZXQgKHZpZXdfdGVybSwgdGVybXMpID1cbiAgICAgIGlzX2VkaXQgPyBNYWtlVGVybS5nbyh1bnNlbGVjdGVkKSA6IChtZXRhLnZpZXdfdGVybSwgbWV0YS50ZXJtcyk7XG4gICAge1xuICAgICAgY29sX3RhcmdldCxcbiAgICAgIHRvdWNoZWQsXG4gICAgICBtZWFzdXJlZCxcbiAgICAgIHVuc2VsZWN0ZWQsXG4gICAgICB0ZXJtX3JhbmdlczogaXNfZWRpdCA/IFRlcm1SYW5nZXMubWsodW5zZWxlY3RlZCkgOiBtZXRhLnRlcm1fcmFuZ2VzLFxuICAgICAgc2VnbWVudDogWmlwcGVyLnppcCh6KSxcbiAgICAgIHRpbGVzOiBpc19lZGl0ID8gVGlsZU1hcC5tayh1bnNlbGVjdGVkKSA6IG1ldGEudGlsZXMsXG4gICAgICB2aWV3X3Rlcm0sXG4gICAgICB0ZXJtcyxcbiAgICAgIGhvbGVzOiBpc19lZGl0ID8gU2VnbWVudC5ob2xlcyh1bnNlbGVjdGVkKSA6IG1ldGEuaG9sZXMsXG4gICAgICBidWZmZXJfaWRzOiBTZWxlY3Rpb24uYnVmZmVyX2lkcyh6LnNlbGVjdGlvbiksXG4gICAgfTtcbiAgfTtcbn07XG5cbm1vZHVsZSBTdGF0ZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgemlwcGVyOiBaaXBwZXIudCxcbiAgICBbQG9wYXF1ZV1cbiAgICBtZXRhOiBNZXRhLnQsXG4gIH07XG5cbiAgbGV0IGluaXQgPSB6aXBwZXIgPT4ge3ppcHBlciwgbWV0YTogTWV0YS5pbml0KHppcHBlcil9O1xuXG4gIGxldCBuZXh0ID0gKH5lZmZlY3RzOiBsaXN0KEVmZmVjdC50KT1bXSwgYTogQWN0aW9uLnQsIHo6IFppcHBlci50LCBzdGF0ZSkgPT4ge1xuICAgIHppcHBlcjogeixcbiAgICBtZXRhOiBNZXRhLm5leHQofmVmZmVjdHMsIGEsIHosIHN0YXRlLm1ldGEpLFxuICB9O1xufTtcblxubW9kdWxlIEhpc3RvcnkgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBhZmZpeCA9IGxpc3QoKEFjdGlvbi50LCBTdGF0ZS50KSk7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gKGFmZml4LCBhZmZpeCk7XG5cbiAgbGV0IGVtcHR5ID0gKFtdLCBbXSk7XG5cbiAgbGV0IGFkZCA9IChhOiBBY3Rpb24udCwgc3RhdGU6IFN0YXRlLnQsIChwcmUsIF8pOiB0KTogdCA9PiAoXG4gICAgWyhhLCBzdGF0ZSksIC4uLnByZV0sXG4gICAgW10sXG4gICk7XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHN0YXRlOiBTdGF0ZS50LFxuICBoaXN0b3J5OiBIaXN0b3J5LnQsXG4gIHJlYWRfb25seTogYm9vbCxcbn07XG5cbmxldCBpbml0ID0gKH5yZWFkX29ubHk9ZmFsc2UsIHopID0+IHtcbiAgc3RhdGU6IFN0YXRlLmluaXQoeiksXG4gIGhpc3Rvcnk6IEhpc3RvcnkuZW1wdHksXG4gIHJlYWRfb25seSxcbn07XG5sZXQgZW1wdHkgPSBpZCA9PiBpbml0KH5yZWFkX29ubHk9ZmFsc2UsIFppcHBlci5pbml0KGlkKSk7XG5cbmxldCB1cGRhdGVfeiA9IChmOiBaaXBwZXIudCA9PiBaaXBwZXIudCwgZWQ6IHQpID0+IHtcbiAgLi4uZWQsXG4gIHN0YXRlOiB7XG4gICAgLi4uZWQuc3RhdGUsXG4gICAgemlwcGVyOiBmKGVkLnN0YXRlLnppcHBlciksXG4gIH0sXG59O1xubGV0IHB1dF96ID0gKHo6IFppcHBlci50KSA9PiB1cGRhdGVfeihfID0+IHopO1xuXG5sZXQgdXBkYXRlX3pfb3B0ID0gKGY6IFppcHBlci50ID0+IG9wdGlvbihaaXBwZXIudCksIGVkOiB0KSA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCsgeiA9IGYoZWQuc3RhdGUuemlwcGVyKTtcbiAgcHV0X3ooeiwgZWQpO1xufTtcblxubGV0IG5ld19zdGF0ZSA9XG4gICAgKH5lZmZlY3RzOiBsaXN0KEVmZmVjdC50KT1bXSwgYTogQWN0aW9uLnQsIHo6IFppcHBlci50LCBlZDogdCk6IHQgPT4ge1xuICBsZXQgc3RhdGUgPSBTdGF0ZS5uZXh0KH5lZmZlY3RzLCBhLCB6LCBlZC5zdGF0ZSk7XG4gIGxldCBoaXN0b3J5ID0gSGlzdG9yeS5hZGQoYSwgZWQuc3RhdGUsIGVkLmhpc3RvcnkpO1xuICB7c3RhdGUsIGhpc3RvcnksIHJlYWRfb25seTogZWQucmVhZF9vbmx5fTtcbn07XG5cbmxldCBjYXJldF9wb2ludCA9IChlZDogdCk6IE1lYXN1cmVkLlBvaW50LnQgPT4ge1xuICBsZXQgU3RhdGUue3ppcHBlciwgbWV0YX0gPSBlZC5zdGF0ZTtcbiAgWmlwcGVyLmNhcmV0X3BvaW50KG1ldGEubWVhc3VyZWQsIHppcHBlcik7XG59O1xuXG5sZXQgdW5kbyA9IChlZDogdCkgPT5cbiAgc3dpdGNoIChlZC5oaXN0b3J5KSB7XG4gIHwgKFtdLCBfKSA9PiBOb25lXG4gIHwgKFsoYSwgcHJldiksIC4uLmJlZm9yZV0sIGFmdGVyKSA9PlxuICAgIFNvbWUoe1xuICAgICAgc3RhdGU6IHByZXYsXG4gICAgICBoaXN0b3J5OiAoYmVmb3JlLCBbKGEsIGVkLnN0YXRlKSwgLi4uYWZ0ZXJdKSxcbiAgICAgIHJlYWRfb25seTogZWQucmVhZF9vbmx5LFxuICAgIH0pXG4gIH07XG5sZXQgcmVkbyA9IChlZDogdCkgPT5cbiAgc3dpdGNoIChlZC5oaXN0b3J5KSB7XG4gIHwgKF8sIFtdKSA9PiBOb25lXG4gIHwgKGJlZm9yZSwgWyhhLCBuZXh0KSwgLi4uYWZ0ZXJdKSA9PlxuICAgIFNvbWUoe1xuICAgICAgc3RhdGU6IG5leHQsXG4gICAgICBoaXN0b3J5OiAoWyhhLCBlZC5zdGF0ZSksIC4uLmJlZm9yZV0sIGFmdGVyKSxcbiAgICAgIHJlYWRfb25seTogZWQucmVhZF9vbmx5LFxuICAgIH0pXG4gIH07XG5cbmxldCBjYW5fdW5kbyA9IGVkID0+IE9wdGlvbi5pc19zb21lKHVuZG8oZWQpKTtcbmxldCBjYW5fcmVkbyA9IGVkID0+IE9wdGlvbi5pc19zb21lKHJlZG8oZWQpKTtcblxubGV0IHNldF9yZWFkX29ubHkgPSAoZWQsIHJlYWRfb25seSkgPT4gey4uLmVkLCByZWFkX29ubHl9O1xuXG5sZXQgdHJhaWxpbmdfaG9sZV9jdHggPSAoZWQ6IHQsIGluZm9fbWFwOiBTdGF0aWNzLk1hcC50KSA9PiB7XG4gIGxldCBzZWdtZW50ID0gWmlwcGVyLnVuc2VsZWN0X2FuZF96aXAoZWQuc3RhdGUuemlwcGVyKTtcbiAgbGV0IGNvbnZleF9ncm91dCA9IFNlZ21lbnQuY29udmV4X2dyb3V0KHNlZ21lbnQpO1xuICAvLyBwcmludF9lbmRsaW5lKFN0cmluZy5jb25jYXQoXCI7IFwiLCBMaXN0Lm1hcChHcm91dC5zaG93LCBjb252ZXhfZ3JvdXQpKSk7XG4gIGxldCBsYXN0ID0gVXRpbC5MaXN0VXRpbC5sYXN0X29wdChjb252ZXhfZ3JvdXQpO1xuICBzd2l0Y2ggKGxhc3QpIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKGdyb3V0KSA9PlxuICAgIGxldCBpZCA9IGdyb3V0LmlkO1xuICAgIGxldCBpbmZvID0gSWQuTWFwLmZpbmRfb3B0KGlkLCBpbmZvX21hcCk7XG4gICAgc3dpdGNoIChpbmZvKSB7XG4gICAgfCBTb21lKGluZm8pID0+IFNvbWUoSW5mby5jdHhfb2YoaW5mbykpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xuICB9O1xufTtcbiIsIm9wZW4gWmlwcGVyO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbW92YWJpbGl0eSA9XG4gIHwgQ2FuRW50ZXIoaW50LCBpbnQpXG4gIHwgQ2FuUGFzc1xuICB8IENhbnRFdmVuO1xuXG5sZXQgbW92YWJpbGl0eSA9IChjaHVua2luZXNzOiBjaHVua2luZXNzLCBsYWJlbCwgZGVsaW1faWR4KTogbW92YWJpbGl0eSA9PiB7XG4gIGFzc2VydChkZWxpbV9pZHggPCBMaXN0Lmxlbmd0aChsYWJlbCkpO1xuICBzd2l0Y2ggKGNodW5raW5lc3MsIGxhYmVsLCBkZWxpbV9pZHgpIHtcbiAgfCAoQnlDaGFyLCBfLCBfKVxuICB8IChNb25vQnlDaGFyLCBbX10sIDApID0+XG4gICAgbGV0IGNoYXJfbWF4ID0gVG9rZW4ubGVuZ3RoKExpc3QubnRoKGxhYmVsLCBkZWxpbV9pZHgpKSAtIDI7XG4gICAgY2hhcl9tYXggPCAwID8gQ2FuUGFzcyA6IENhbkVudGVyKGRlbGltX2lkeCwgY2hhcl9tYXgpO1xuICB8IChCeVRva2VuLCBfLCBfKVxuICB8IChNb25vQnlDaGFyLCBfLCBfKSA9PiBDYW5QYXNzXG4gIH07XG59O1xuXG5sZXQgbmVpZ2hib3JfbW92YWJpbGl0eSA9XG4gICAgKGNodW5raW5lc3M6IGNodW5raW5lc3MsIHtyZWxhdGl2ZXM6IHtzaWJsaW5ncywgYW5jZXN0b3JzfSwgX306IHQpXG4gICAgOiAobW92YWJpbGl0eSwgbW92YWJpbGl0eSkgPT4ge1xuICBsZXQgbW92YWJpbGl0eSA9IG1vdmFiaWxpdHkoY2h1bmtpbmVzcyk7XG4gIGxldCAoc3VwZXJuaGJyX2wsIHN1cGVybmhicl9yKSA9XG4gICAgc3dpdGNoIChhbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IChDYW50RXZlbiwgQ2FudEV2ZW4pXG4gICAgfCBbKHtjaGlsZHJlbjogKGxfa2lkcywgXyksIGxhYmVsLCBffSwgXyksIC4uLl9dID0+IChcbiAgICAgICAgbW92YWJpbGl0eShsYWJlbCwgTGlzdC5sZW5ndGgobF9raWRzKSksXG4gICAgICAgIG1vdmFiaWxpdHkobGFiZWwsIExpc3QubGVuZ3RoKGxfa2lkcykgKyAxKSxcbiAgICAgIClcbiAgICB9O1xuICBsZXQgKGxfbmhiciwgcl9uaGJyKSA9IFNpYmxpbmdzLm5laWdoYm9ycyhzaWJsaW5ncyk7XG4gIGxldCBsID1cbiAgICBzd2l0Y2ggKGxfbmhicikge1xuICAgIHwgU29tZShUaWxlKHtsYWJlbCwgX30pKSA9PiBtb3ZhYmlsaXR5KGxhYmVsLCBMaXN0Lmxlbmd0aChsYWJlbCkgLSAxKVxuICAgIHwgU29tZShTZWNvbmRhcnkodykpIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQodykgPT5cbiAgICAgIC8vIENvbW1lbnRzIGFyZSBhbHdheXMgbGVuZ3RoID49IDJcbiAgICAgIGxldCBjb250ZW50X3N0cmluZyA9IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCk7XG4gICAgICBDYW5FbnRlcihcbiAgICAgICAgVW5pY29kZS5sZW5ndGgoY29udGVudF9zdHJpbmcpIC0gMSxcbiAgICAgICAgVW5pY29kZS5sZW5ndGgoY29udGVudF9zdHJpbmcpIC0gMixcbiAgICAgICk7XG4gICAgfCBTb21lKF8pID0+IENhblBhc3NcbiAgICB8IF8gPT4gc3VwZXJuaGJyX2xcbiAgICB9O1xuICBsZXQgciA9XG4gICAgc3dpdGNoIChyX25oYnIpIHtcbiAgICB8IFNvbWUoVGlsZSh7bGFiZWwsIF99KSkgPT4gbW92YWJpbGl0eShsYWJlbCwgMClcbiAgICB8IFNvbWUoU2Vjb25kYXJ5KHcpKSB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHcpID0+XG4gICAgICAvLyBDb21tZW50cyBhcmUgYWx3YXlzIGxlbmd0aCA+PSAyXG4gICAgICBsZXQgY29udGVudF9zdHJpbmcgPSBTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpO1xuICAgICAgQ2FuRW50ZXIoMCwgVW5pY29kZS5sZW5ndGgoY29udGVudF9zdHJpbmcpIC0gMik7XG4gICAgfCBTb21lKF8pID0+IENhblBhc3NcbiAgICB8IF8gPT4gc3VwZXJuaGJyX3JcbiAgICB9O1xuICAobCwgcik7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChNOiBFZGl0b3IuTWV0YS5TKSA9PiB7XG4gIGxldCBjYXJldF9wb2ludCA9IFppcHBlci5jYXJldF9wb2ludChNLm1lYXN1cmVkKTtcblxuICBsZXQgcG9wX291dCA9IHogPT4gU29tZSh6IHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpKTtcbiAgbGV0IHBvcF9tb3ZlID0gKGQsIHopID0+IHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoZCk7XG4gIGxldCBpbm5lcl9pbmNyID0gKGRlbGltLCBjLCB6KSA9PlxuICAgIFNvbWUoWmlwcGVyLnNldF9jYXJldChJbm5lcihkZWxpbSwgYyArIDEpLCB6KSk7XG4gIGxldCBpbm5lcl9kZWNyID0geiA9PiBTb21lKFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeikpO1xuICBsZXQgaW5uZXJfc3RhcnQgPSAoZF9pbml0LCB6KSA9PlxuICAgIFNvbWUoWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2luaXQsIDApLCB6KSk7XG4gIGxldCBpbm5lcl9lbmQgPSAoZCwgZF9pbml0LCBjX21heCwgeikgPT5cbiAgICB6IHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoZF9pbml0LCBjX21heCkpIHw+IFppcHBlci5tb3ZlKGQpO1xuXG4gIGxldCBwcmltYXJ5ID0gKGNodW5raW5lc3M6IGNodW5raW5lc3MsIGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBzd2l0Y2ggKGQsIHouY2FyZXQsIG5laWdoYm9yX21vdmFiaWxpdHkoY2h1bmtpbmVzcywgeikpIHtcbiAgICAvKiB0aGlzIGNhc2UgbWF5YmUgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgY3VycmVudGx5IGNvdmVycyBhbiBlZGdlXG4gICAgICAgKHNlbGVjdCBhbiBvcGVuIHBhcmVucyB0byBsZWZ0IG9mIGEgbXVsdGljaGFyIHRva2VuIGFuZCBwcmVzcyBsZWZ0KSAqL1xuICAgIHwgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4gcG9wX21vdmUoZCwgeilcbiAgICB8IChMZWZ0LCBPdXRlciwgKENhbkVudGVyKGRsbSwgY19tYXgpLCBfKSkgPT5cbiAgICAgIGlubmVyX2VuZChkLCBkbG0sIGNfbWF4LCB6KVxuICAgIHwgKExlZnQsIE91dGVyLCBfKSA9PiBaaXBwZXIubW92ZShkLCB6KVxuICAgIHwgKExlZnQsIElubmVyKF8pLCBfKSB3aGVuIGNodW5raW5lc3MgPT0gQnlUb2tlbiA9PiBwb3Bfb3V0KHopXG4gICAgfCAoTGVmdCwgSW5uZXIoXyksIF8pID0+XG4gICAgICBTb21lKFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeikpXG4gICAgfCAoUmlnaHQsIE91dGVyLCAoXywgQ2FuRW50ZXIoZF9pbml0LCBfKSkpID0+IGlubmVyX3N0YXJ0KGRfaW5pdCwgeilcbiAgICB8IChSaWdodCwgT3V0ZXIsIF8pID0+IFppcHBlci5tb3ZlKGQsIHopXG4gICAgfCAoUmlnaHQsIElubmVyKF8sIGMpLCAoXywgQ2FuRW50ZXIoXywgY19tYXgpKSkgd2hlbiBjID09IGNfbWF4ID0+XG4gICAgICBwb3BfbW92ZShkLCB6KVxuICAgIHwgKFJpZ2h0LCBJbm5lcihfKSwgXykgd2hlbiBjaHVua2luZXNzID09IEJ5VG9rZW4gPT4gcG9wX21vdmUoZCwgeilcbiAgICB8IChSaWdodCwgSW5uZXIoZGVsaW0sIGMpLCBfKSA9PiBpbm5lcl9pbmNyKGRlbGltLCBjLCB6KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGlzX2F0X3NpZGVfb2Zfcm93ID0gKGQ6IERpcmVjdGlvbi50LCB6OiBaaXBwZXIudCkgPT4ge1xuICAgIGxldCBNZWFzdXJlZC5Qb2ludC57cm93LCBjb2x9ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgc3dpdGNoIChaaXBwZXIubW92ZShkLCB6KSkge1xuICAgIHwgTm9uZSA9PiB0cnVlXG4gICAgfCBTb21lKHopID0+XG4gICAgICBsZXQgTWVhc3VyZWQuUG9pbnQue3Jvdzogcm93cCwgY29sOiBjb2xwfSA9IGNhcmV0X3BvaW50KHopO1xuICAgICAgcm93ICE9IHJvd3AgfHwgY29sID09IGNvbHA7XG4gICAgfTtcbiAgfTtcblxuICBsZXQgZG9fdG93YXJkcyA9XG4gICAgICAoXG4gICAgICAgIH5hbmNob3I6IG9wdGlvbihNZWFzdXJlZC5Qb2ludC50KT0/LFxuICAgICAgICBmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSxcbiAgICAgICAgZ29hbDogTWVhc3VyZWQuUG9pbnQudCxcbiAgICAgICAgejogdCxcbiAgICAgIClcbiAgICAgIDogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgaW5pdCA9IGNhcmV0X3BvaW50KHopO1xuICAgIGxldCBkID1cbiAgICAgIGdvYWwucm93IDwgaW5pdC5yb3cgfHwgZ29hbC5yb3cgPT0gaW5pdC5yb3cgJiYgZ29hbC5jb2wgPCBpbml0LmNvbFxuICAgICAgICA/IERpcmVjdGlvbi5MZWZ0IDogUmlnaHQ7XG4gICAgbGV0IHJlYyBnbyA9IChwcmV2OiB0LCBjdXJyOiB0KSA9PiB7XG4gICAgICBsZXQgY3Vycl9wID0gY2FyZXRfcG9pbnQoY3Vycik7XG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBNZWFzdXJlZC5Qb2ludC5kY29tcChkLCBjdXJyX3AuY29sLCBnb2FsLmNvbCksXG4gICAgICAgIE1lYXN1cmVkLlBvaW50LmRjb21wKGQsIGN1cnJfcC5yb3csIGdvYWwucm93KSxcbiAgICAgICkge1xuICAgICAgfCAoRXhhY3QsIEV4YWN0KSA9PiBjdXJyXG4gICAgICB8IChfLCBPdmVyKSA9PiBwcmV2XG4gICAgICB8IChfLCBVbmRlcilcbiAgICAgIHwgKFVuZGVyLCBFeGFjdCkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQsIGN1cnIpKSB7XG4gICAgICAgIHwgTm9uZSA9PiBjdXJyXG4gICAgICAgIHwgU29tZShuZXh0KSA9PiBnbyhjdXJyLCBuZXh0KVxuICAgICAgICB9XG4gICAgICB8IChPdmVyLCBFeGFjdCkgPT5cbiAgICAgICAgc3dpdGNoIChhbmNob3IpIHtcbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgLyogU3BlY2lhbCBjYXNlIGZvciB3aGVuIHlvdSdyZSAoZWcpIHlvdSdyZSB0cnlpbmdcbiAgICAgICAgICAgICB0byBtb3ZlIGRvd24sIGJ1dCB5b3UncmUgYXQgdGhlIHJpZ2h0IGVuZCBvZiBhIHJvd1xuICAgICAgICAgICAgIGFuZCB0aGUgZmlyc3QgcG9zaXRpb24gb2YgdGhlIG5leHQgcm93IGlzIGZ1cnRoZXJcbiAgICAgICAgICAgICByaWdodCB0aGFuIHRoZSBjdXJyZW50IHJvdydzIGVuZC4gSW4gdGhpcyBjYXNlIHdlXG4gICAgICAgICAgICAgd2FudCB0byBwcm9ncmVzcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG5ld1xuICAgICAgICAgICAgIHBvc2l0aW9uIHdvdWxkIGJlIGNsb3NlciBvciBmdXRoZXIgZnJvbSB0aGVcbiAgICAgICAgICAgICBnb2FsIGNvbCAqL1xuICAgICAgICAgIGlzX2F0X3NpZGVfb2Zfcm93KERpcmVjdGlvbi50b2dnbGUoZCksIGN1cnIpXG4gICAgICAgICAgICA/IGN1cnJcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBsZXQgZF9jdXJyID0gYWJzKGN1cnJfcC5jb2wgLSBnb2FsLmNvbCk7XG4gICAgICAgICAgICAgIGxldCBkX3ByZXYgPSBhYnMoY2FyZXRfcG9pbnQocHJldikuY29sIC0gZ29hbC5jb2wpO1xuICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGdvaW5nIG92ZXIgd2hlbiBlcXVhbFxuICAgICAgICAgICAgICBkX3ByZXYgPCBkX2N1cnIgPyBwcmV2IDogY3VycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBTb21lKGFuY2hvcikgPT5cbiAgICAgICAgICBsZXQgYW5jaG9yX2QgPVxuICAgICAgICAgICAgZ29hbC5yb3cgPCBhbmNob3Iucm93XG4gICAgICAgICAgICB8fCBnb2FsLnJvdyA9PSBhbmNob3Iucm93XG4gICAgICAgICAgICAmJiBnb2FsLmNvbCA8IGFuY2hvci5jb2xcbiAgICAgICAgICAgICAgPyBEaXJlY3Rpb24uTGVmdCA6IFJpZ2h0O1xuICAgICAgICAgIGFuY2hvcl9kID09IGQgPyBjdXJyIDogcHJldjtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCByZXMgPSBnbyh6LCB6KTtcbiAgICBNZWFzdXJlZC5Qb2ludC5lcXVhbHMoY2FyZXRfcG9pbnQocmVzKSwgY2FyZXRfcG9pbnQoeikpXG4gICAgICA/IE5vbmUgOiBTb21lKHJlcyk7XG4gIH07XG4gIGxldCBkb192ZXJ0aWNhbCA9XG4gICAgICAoZjogKERpcmVjdGlvbi50LCB0KSA9PiBvcHRpb24odCksIGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICAvKiBIZXJlIGYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gd2hpY2ggcmVzdWx0cyBpbiBzdHJpY3QgZC13YXJkc1xuICAgICAgIG1vdmVtZW50IG9mIHRoZSBjYXJldC4gSXRlcmF0ZSBmIHVudGlsIHdlIGdldCB0byB0aGUgY2xvc2V0XG4gICAgICAgY2FyZXQgcG9zaXRpb24gdG8gYSB0YXJnZXQgZGVyaXZlZCBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9uICovXG4gICAgbGV0IGN1cl9wID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGdvYWwgPVxuICAgICAgTWVhc3VyZWQuUG9pbnQue1xuICAgICAgICBjb2w6IE0uY29sX3RhcmdldCxcbiAgICAgICAgcm93OiBjdXJfcC5yb3cgKyAoZCA9PSBSaWdodCA/IDEgOiAoLTEpKSxcbiAgICAgIH07XG4gICAgZG9fdG93YXJkcyhmLCBnb2FsLCB6KTtcbiAgfTtcblxuICBsZXQgZG9fZXh0cmVtZSA9XG4gICAgICAoZjogKERpcmVjdGlvbi50LCB0KSA9PiBvcHRpb24odCksIGQ6IHBsYW5hciwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gICAgbGV0IGN1cl9wID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGdvYWw6IE1lYXN1cmVkLlBvaW50LnQgPVxuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICB8IFJpZ2h0KF8pID0+IHtjb2w6IEludC5tYXhfaW50LCByb3c6IGN1cl9wLnJvd31cbiAgICAgIHwgTGVmdChfKSA9PiB7Y29sOiAwLCByb3c6IGN1cl9wLnJvd31cbiAgICAgIHwgVXAgPT4ge2NvbDogMCwgcm93OiAwfVxuICAgICAgfCBEb3duID0+IHtjb2w6IEludC5tYXhfaW50LCByb3c6IEludC5tYXhfaW50fVxuICAgICAgfTtcbiAgICBkb190b3dhcmRzKGYsIGdvYWwsIHopO1xuICB9O1xuXG4gIGxldCB0b19zdGFydCA9IGRvX2V4dHJlbWUocHJpbWFyeShCeVRva2VuKSwgVXApO1xuICBsZXQgdG9fZW5kID0gZG9fZXh0cmVtZShwcmltYXJ5KEJ5VG9rZW4pLCBEb3duKTtcblxuICBsZXQgdG9fZWRnZTogKERpcmVjdGlvbi50LCB0KSA9PiBvcHRpb24odCkgPVxuICAgIGZ1blxuICAgIHwgTGVmdCA9PiB0b19zdGFydFxuICAgIHwgUmlnaHQgPT4gdG9fZW5kO1xuXG4gIC8qIERvIG1vdmVfYWN0aW9uIHVudGlsIHRoZSBpbmRpY2F0ZWQgcGllY2UgaXMgc3VjaCB0aGF0IHBpZWNlX3AgaXMgdHJ1ZS5cbiAgICAgSWYgbm8gc3VjaCBwaWVjZSBpcyBmb3VuZCwgZG9uJ3QgbW92ZS4gKi9cbiAgbGV0IHJlYyBkb191bnRpbCA9XG4gICAgICAgICAgKFxuICAgICAgICAgICAgfm1vdmVfZmlyc3Q9dHJ1ZSxcbiAgICAgICAgICAgIG1vdmVfYWN0aW9uOiB0ID0+IG9wdGlvbih0KSxcbiAgICAgICAgICAgIHBpZWNlX3A6IFBpZWNlLnQgPT4gYm9vbCxcbiAgICAgICAgICAgIHo6IHQsXG4gICAgICAgICAgKVxuICAgICAgICAgIDogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQqIHogPSBtb3ZlX2ZpcnN0ID8gbW92ZV9hY3Rpb24oeikgOiBTb21lKHopO1xuICAgIGxldCogKHBpZWNlLCBfLCBfKSA9IEluZGljYXRlZC5waWVjZScofm5vX3dzPWZhbHNlLCB+aWduPV8gPT4gZmFsc2UsIHopO1xuICAgIGlmIChwaWVjZV9wKHBpZWNlKSkge1xuICAgICAgU29tZSh6KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0KiB6ID0gbW92ZV9maXJzdCA/IFNvbWUoeikgOiBtb3ZlX2FjdGlvbih6KTtcbiAgICAgIGRvX3VudGlsKH5tb3ZlX2ZpcnN0LCBtb3ZlX2FjdGlvbiwgcGllY2VfcCwgeik7XG4gICAgfTtcbiAgfTtcblxuICAvKiBEbyBtb3ZlX2FjdGlvbiB1bnRpbCB0aGUgaW5kaWNhdGVkIHBpZWNlIGlzIHN1Y2ggdGhhdCBwaWVjZV9wIGlzIHRydWUsXG4gICAgIHJlc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nL2VuZCBpZiBub3QgZm91bmQgaW4gZm9yd2FyZCBkaXJlY3Rpb24uXG4gICAgIElmIG5vIHN1Y2ggcGllY2UgaXMgZm91bmQsIGRvbid0IG1vdmUuICovXG4gIGxldCBkb191bnRpbF93cmFwID0gKHAsIGQsIHopID0+XG4gICAgc3dpdGNoIChkb191bnRpbChwcmltYXJ5KEJ5VG9rZW4sIGQpLCBwLCB6KSkge1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0KiB6ID0gdG9fZWRnZShEaXJlY3Rpb24udG9nZ2xlKGQpLCB6KTtcbiAgICAgIGRvX3VudGlsKHByaW1hcnkoQnlUb2tlbiwgZCksIHAsIHopO1xuICAgIHwgU29tZSh6KSA9PiBTb21lKHopXG4gICAgfTtcblxuICBsZXQganVtcF90b19pZCA9ICh6OiB0LCBpZDogSWQudCk6IG9wdGlvbih0KSA9PiB7XG4gICAgbGV0KiB7b3JpZ2luLCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQoaWQsIE0ubWVhc3VyZWQpO1xuICAgIGxldCB6ID1cbiAgICAgIHN3aXRjaCAodG9fc3RhcnQoeikpIHtcbiAgICAgIHwgTm9uZSA9PiB6XG4gICAgICB8IFNvbWUoeikgPT4gelxuICAgICAgfTtcbiAgICBzd2l0Y2ggKGRvX3Rvd2FyZHMocHJpbWFyeShCeUNoYXIpLCBvcmlnaW4sIHopKSB7XG4gICAgfCBOb25lID0+IFNvbWUoeilcbiAgICB8IFNvbWUoeikgPT4gU29tZSh6KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZlcnRpY2FsID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gICAgei5zZWxlY3Rpb24uY29udGVudCA9PSBbXVxuICAgICAgPyBkb192ZXJ0aWNhbChwcmltYXJ5KEJ5Q2hhciksIGQsIHopXG4gICAgICA6IFNvbWUoWmlwcGVyLmRpcmVjdGlvbmFsX3Vuc2VsZWN0KGQsIHopKTtcblxuICBsZXQgdGFyZ2V0c193aXRoaW5fcm93ID0gKHo6IHQpOiBsaXN0KHQpID0+IHtcbiAgICBsZXQgaW5pdCA9IGNhcmV0X3BvaW50KHopO1xuICAgIGxldCByZWMgZ28gPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpID0+IHtcbiAgICAgIHN3aXRjaCAocHJpbWFyeShCeUNoYXIsIGQsIHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZSh6KSA9PlxuICAgICAgICBpZiAoY2FyZXRfcG9pbnQoeikucm93ICE9IGluaXQucm93KSB7XG4gICAgICAgICAgW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3dpdGNoIChwb3BfYmFja3BhY2soeikpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gZ28oZCwgeilcbiAgICAgICAgICB8IFNvbWUoXykgPT4gW3osIC4uLmdvKGQsIHopXVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgY3VyciA9XG4gICAgICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUoXykgPT4gW3pdXG4gICAgICB9O1xuICAgIExpc3QucmV2KGdvKExlZnQsIHopKSBAIGN1cnIgQCBnbyhSaWdodCwgeik7XG4gIH07XG5cbiAgLy8gVE9ETyhkKTogdW5pZnkgdGhpcyBsb2dpYyB3aXRoIHJlc3Qgb2YgbW92ZW1lbnQgbG9naWNcbiAgbGV0IHJlYyB0b19iYWNrcGFja190YXJnZXQgPSAoZDogcGxhbmFyLCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgZG9uZV9vcl90cnlfYWdhaW4gPSAoZCwgeikgPT5cbiAgICAgIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gICAgICB8IE5vbmUgPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFNvbWUoXykgPT4gU29tZSh6KVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExlZnQoY2h1bmspID0+XG4gICAgICBsZXQqIHogPSBwcmltYXJ5KGNodW5rLCBMZWZ0LCB6KTtcbiAgICAgIGRvbmVfb3JfdHJ5X2FnYWluKGQsIHopO1xuICAgIHwgUmlnaHQoY2h1bmspID0+XG4gICAgICBsZXQqIHogPSBwcmltYXJ5KGNodW5rLCBSaWdodCwgeik7XG4gICAgICBkb25lX29yX3RyeV9hZ2FpbihkLCB6KTtcbiAgICB8IFVwID0+XG4gICAgICBsZXQqIHogPSB2ZXJ0aWNhbChMZWZ0LCB6KTtcbiAgICAgIGxldCB6cyA9XG4gICAgICAgIHRhcmdldHNfd2l0aGluX3Jvdyh6KVxuICAgICAgICB8PiBMaXN0LnNvcnQoKHoxLCB6MikgPT4ge1xuICAgICAgICAgICAgIGxldCBkaXN0MSA9IGNhcmV0X3BvaW50KHoxKS5jb2wgLSBNLmNvbF90YXJnZXQ7XG4gICAgICAgICAgICAgbGV0IGRpc3QyID0gY2FyZXRfcG9pbnQoejIpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgYyA9IEludC5jb21wYXJlKGFicyhkaXN0MSksIGFicyhkaXN0MikpO1xuICAgICAgICAgICAgIC8vIGZhdm9yIGxlZnRcbiAgICAgICAgICAgICBjICE9IDAgPyBjIDogSW50LmNvbXBhcmUoZGlzdDEsIGRpc3QyKTtcbiAgICAgICAgICAgfSk7XG4gICAgICBzd2l0Y2ggKHpzKSB7XG4gICAgICB8IFtdID0+IHRvX2JhY2twYWNrX3RhcmdldChkLCB6KVxuICAgICAgfCBbeiwgLi4uX10gPT4gU29tZSh6KVxuICAgICAgfTtcbiAgICB8IERvd24gPT5cbiAgICAgIGxldCogeiA9IHZlcnRpY2FsKFJpZ2h0LCB6KTtcbiAgICAgIGxldCB6cyA9XG4gICAgICAgIHRhcmdldHNfd2l0aGluX3Jvdyh6KVxuICAgICAgICB8PiBMaXN0LnNvcnQoKHoxLCB6MikgPT4ge1xuICAgICAgICAgICAgIGxldCBkaXN0MSA9IGNhcmV0X3BvaW50KHoxKS5jb2wgLSBNLmNvbF90YXJnZXQ7XG4gICAgICAgICAgICAgbGV0IGRpc3QyID0gY2FyZXRfcG9pbnQoejIpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgYyA9IEludC5jb21wYXJlKGFicyhkaXN0MSksIGFicyhkaXN0MikpO1xuICAgICAgICAgICAgIC8vIGZhdm9yIHJpZ2h0XG4gICAgICAgICAgICAgYyAhPSAwID8gYyA6IC0gSW50LmNvbXBhcmUoZGlzdDEsIGRpc3QyKTtcbiAgICAgICAgICAgfSk7XG4gICAgICBzd2l0Y2ggKHpzKSB7XG4gICAgICB8IFtdID0+IHRvX2JhY2twYWNrX3RhcmdldChkLCB6KVxuICAgICAgfCBbeiwgLi4uX10gPT4gU29tZSh6KVxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBnbyA9IChkOiBBY3Rpb24ubW92ZSwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBHb2FsKFBpZWNlKHAsIGQpKSA9PiBkb191bnRpbF93cmFwKEFjdGlvbi5vZl9waWVjZV9nb2FsKHApLCBkLCB6KVxuICAgIHwgR29hbChQb2ludChnb2FsKSkgPT5cbiAgICAgIGxldCB6ID0gWmlwcGVyLnVuc2VsZWN0KHopO1xuICAgICAgZG9fdG93YXJkcyhwcmltYXJ5KEJ5Q2hhciksIGdvYWwsIHopO1xuICAgIHwgRXh0cmVtZShkKSA9PiBkb19leHRyZW1lKHByaW1hcnkoQnlUb2tlbiksIGQsIHopXG4gICAgfCBMb2NhbChkKSA9PlxuICAgICAgelxuICAgICAgfD4gKFxuICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgfCBMZWZ0KGNodW5rKSA9PiBwcmltYXJ5KGNodW5rLCBMZWZ0KVxuICAgICAgICB8IFJpZ2h0KGNodW5rKSA9PiBwcmltYXJ5KGNodW5rLCBSaWdodClcbiAgICAgICAgfCBVcCA9PiB2ZXJ0aWNhbChMZWZ0KVxuICAgICAgICB8IERvd24gPT4gdmVydGljYWwoUmlnaHQpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbm1vZHVsZSBNYWtlID0gKE06IEVkaXRvci5NZXRhLlMpID0+IHtcbiAgbW9kdWxlIE1vdmUgPSBNb3ZlLk1ha2UoTSk7XG5cbiAgbGV0IHByaW1hcnkgPSAoZDogRGlyZWN0aW9uLnQsIHo6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PlxuICAgIGlmICh6LmNhcmV0ID09IE91dGVyKSB7XG4gICAgICBaaXBwZXIuc2VsZWN0KGQsIHopO1xuICAgIH0gZWxzZSBpZiAoZCA9PSBMZWZ0KSB7XG4gICAgICB6XG4gICAgICB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKVxuICAgICAgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gICAgICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5zZWxlY3QoZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6IHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpIHw+IFppcHBlci5zZWxlY3QoZCk7XG4gICAgfTtcblxuICBsZXQgdmVydGljYWwgPSAoZDogRGlyZWN0aW9uLnQsIGVkOiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT5cbiAgICBNb3ZlLmRvX3ZlcnRpY2FsKHByaW1hcnksIGQsIGVkKTtcblxuICBsZXQgcmFuZ2UgPSAobDogSWQudCwgcjogSWQudCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgICBsZXQqIHogPSBNb3ZlLmp1bXBfdG9faWQoeiwgbCk7XG4gICAgbGV0KiBNZWFzdXJlZC57bGFzdCwgX30gPSBNZWFzdXJlZC5maW5kX2J5X2lkKHIsIE0ubWVhc3VyZWQpO1xuICAgIE1vdmUuZG9fdG93YXJkcyhwcmltYXJ5LCBsYXN0LCB6KTtcbiAgfTtcblxuICBsZXQgdGVybSA9IChpZDogSWQudCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgICAvL1RPRE86IGNoZWNrIGlmIHNlbGVjdGlvbiBpcyBhbHJlYWR5IGEgdGVybTogbm8tb3AgaW4gdGhpcyBjYXNlXG4gICAgbGV0KiAobCwgcikgPSBUZXJtUmFuZ2VzLmZpbmRfb3B0KGlkLCBNLnRlcm1fcmFuZ2VzKTtcbiAgICByYW5nZShQaWVjZS5pZChsKSwgUGllY2UuaWQociksIHopO1xuICB9O1xuXG4gIGxldCB0aWxlID0gKGlkOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIGxldCogeiA9IE1vdmUuanVtcF90b19pZCh6LCBpZCk7XG4gICAgbGV0KiBNZWFzdXJlZC57bGFzdCwgX30gPSBNZWFzdXJlZC5maW5kX2J5X2lkKGlkLCBNLm1lYXN1cmVkKTtcbiAgICBNb3ZlLmRvX3Rvd2FyZHMocHJpbWFyeSwgbGFzdCwgeik7XG4gIH07XG5cbiAgbGV0IGdvID0gKGQ6IEFjdGlvbi5tb3ZlLCB6OiBaaXBwZXIudCkgPT5cbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IEdvYWwoUGllY2UoXykpID0+IGZhaWx3aXRoKFwiU2VsZWN0LmdvIG5vdCBpbXBsZW1lbnRlZCBmb3IgUGllY2UgR29hbFwiKVxuICAgIHwgR29hbChQb2ludChnb2FsKSkgPT5cbiAgICAgIGxldCBhbmNob3IgPSB6IHw+IFppcHBlci50b2dnbGVfZm9jdXMgfD4gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQpO1xuICAgICAgTW92ZS5kb190b3dhcmRzKH5hbmNob3IsIHByaW1hcnksIGdvYWwsIHopO1xuICAgIHwgRXh0cmVtZShkKSA9PiBNb3ZlLmRvX2V4dHJlbWUocHJpbWFyeSwgZCwgeilcbiAgICB8IExvY2FsKGQpID0+XG4gICAgICAvKiBOb3RlOiBEb24ndCB1cGRhdGUgdGFyZ2V0IG9uIHZlcnRpY2FsIHNlbGVjdGlvbiAqL1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICB8IExlZnQoXykgPT4gcHJpbWFyeShMZWZ0LCB6KVxuICAgICAgfCBSaWdodChfKSA9PiBwcmltYXJ5KFJpZ2h0LCB6KVxuICAgICAgfCBVcCA9PiB2ZXJ0aWNhbChMZWZ0LCB6KVxuICAgICAgfCBEb3duID0+IHZlcnRpY2FsKFJpZ2h0LCB6KVxuICAgICAgfVxuICAgIH07XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5sZXQgZGVzdHJ1Y3QgPVxuICAgIChcbiAgICAgIGQ6IERpcmVjdGlvbi50LFxuICAgICAge2NhcmV0LCByZWxhdGl2ZXM6IHtzaWJsaW5nczogKGxfc2licywgcl9zaWJzKSwgX30sIF99IGFzIHo6IHQsXG4gICAgKVxuICAgIDogb3B0aW9uKHQpID0+IHtcbiAgLyogQ291bGQgYWRkIGNoZWNrcyBvbiB2YWxpZCB0b2tlbnMgKGFsbCBvZiB0aGVzZSBob2xkIGFzc3VtaW5nIHN1YnN0cmluZykgKi9cbiAgbGV0IGxhc3RfaW5uZXJfcG9zID0gdCA9PiBUb2tlbi5sZW5ndGgodCkgLSAyO1xuICBsZXQgZGVsZXRlX3JpZ2h0ID0geiA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLmRlbGV0ZShSaWdodCk7XG4gIGxldCBkZWxldGVfbGVmdCA9IFppcHBlci5kZWxldGUoTGVmdCk7XG4gIGxldCBjb25zdHJ1Y3RfcmlnaHQgPSAobCwgcykgPT5cbiAgICBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PVJpZ2h0LCB+YmFja3BhY2s9UmlnaHQsIGwpLCBzKTtcbiAgbGV0IGNvbnN0cnVjdF9sZWZ0ID0gKGwsIHMpID0+XG4gICAgT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0KH5jYXJldD1MZWZ0LCB+YmFja3BhY2s9TGVmdCwgbCksIHMpO1xuICBzd2l0Y2ggKGQsIGNhcmV0LCBuZWlnaGJvcl9tb25vdGlsZXMoKGxfc2licywgcl9zaWJzKSkpIHtcbiAgLyogV2hlbiB0aGVyZSdzIGEgc2VsZWN0aW9uLCBkZWZlciB0byBPdXRlciAqL1xuICB8IF8gd2hlbiB6LnNlbGVjdGlvbi5jb250ZW50ICE9IFtdID0+IHogfD4gWmlwcGVyLmRlc3RydWN0IHw+IE9wdGlvbi5zb21lXG4gIC8qIFNwZWNpYWwgY2FzZXMgZm9yIG1vbm8gZm9ybXMgd2hpY2ggY2FuIHNwbGl0IGludG8gZHVvIGZvcm1zLFxuICAgICBlLmcuIGxpc3QgbGl0ZXJhbHMuIFdoZW4gZGVsZXRpb24gd291bGQgYWx0ZXIgdGhlIG1vbm8gZm9ybSxcbiAgICAgd2UgcmVwbGFjZSBpdCB0byB0aGUgY29ycmVzcG9uZGluZyBkdW8gZm9ybS4gICovXG4gIHwgKExlZnQsIE91dGVyLCAoU29tZSh0KSwgXykpIHdoZW4gRm9ybS5kdW9zcGxpdHModCkgIT0gW10gPT5cbiAgICB6IHw+IGRlbGV0ZV9sZWZ0IHw+IGNvbnN0cnVjdF9sZWZ0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChSaWdodCwgT3V0ZXIsIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9yaWdodChGb3JtLmR1b3NwbGl0cyh0KSlcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9yaWdodChGb3JtLmR1b3NwbGl0cyh0KSlcbiAgfCAoUmlnaHQsIElubmVyKF8sIG4pLCAoXywgU29tZSh0KSkpXG4gICAgICB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdICYmIG4gPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICB6IHw+IGRlbGV0ZV9yaWdodCB8PiBjb25zdHJ1Y3RfbGVmdChGb3JtLmR1b3NwbGl0cyh0KSlcbiAgLyogU3BlY2lhbCBjYXNlcyBmb3Igc3RyaW5nIGxpdGVyYWxzLiBXaGVuIGRlbGV0aW9uIHdvdWxkXG4gICAgIHJlbW92ZSBhbiBvdXRlciBxdW90ZSwgd2UgaW5zdGVhZCByZW1vdmUgdGhlIHdob2xlIHN0cmluZyAqL1xuICB8IChMZWZ0LCBPdXRlciwgKFNvbWUodCksIF8pKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfbGVmdCh6KVxuICB8IChSaWdodCwgT3V0ZXIsIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgfHwgRm9ybS5pc19jb21tZW50KHQpID0+XG4gICAgZGVsZXRlX3JpZ2h0KHopXG4gIHwgKExlZnQsIElubmVyKF8sIDApLCAoXywgU29tZSh0KSkpIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgfHwgRm9ybS5pc19jb21tZW50KHQpID0+XG4gICAgZGVsZXRlX3JpZ2h0KHopXG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBuKSwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlblxuICAgICAgICAoRm9ybS5pc19zdHJpbmcodCkgfHwgRm9ybS5pc19jb21tZW50KHQpKSAmJiBuID09IGxhc3RfaW5uZXJfcG9zKHQpID0+XG4gICAgZGVsZXRlX3JpZ2h0KHopIC8qIFJlbW92ZSBpbm5lciBjaGFyYWN0ZXIgKi9cbiAgfCAoTGVmdCwgSW5uZXIoXywgY19pZHgpLCAoXywgU29tZSh0KSkpID0+XG4gICAgbGV0IHogPSBaaXBwZXIudXBkYXRlX2NhcmV0KFppcHBlci5DYXJldC5kZWNyZW1lbnQsIHopO1xuICAgIFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIFRva2VuLnJtX250aChjX2lkeCwgdCksIHopO1xuICB8IChSaWdodCwgSW5uZXIoXywgY19pZHgpLCAoXywgU29tZSh0KSkpIHdoZW4gY19pZHggPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9udGgoY19pZHggKyAxLCB0KSwgeilcbiAgICB8PiBPcHRVdGlsLmFuZF90aGVuKHogPT5cbiAgICAgICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gICAgICAgKSAvKiBJZiBub3Qgb24gbGFzdCBpbm5lciBwb3NpdGlvbiAqL1xuICB8IChSaWdodCwgSW5uZXIoXywgY19pZHgpLCAoXywgU29tZSh0KSkpID0+XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fbnRoKGNfaWR4ICsgMSwgdCksIHopXG4gIC8qIENhbid0IHN1YmRlc3RydWN0IGluIGRlbGltaXRlciwgc28ganVzdCBkZXN0cnVjdCBvbiB3aG9sZSBkZWxpbWl0ZXIgKi9cbiAgfCAoTGVmdCwgSW5uZXIoXyksIChfLCBOb25lKSlcbiAgfCAoUmlnaHQsIElubmVyKF8pLCAoXywgTm9uZSkpID0+XG4gICAgLyogTm90ZTogQ291bnRlcmludHVpdHZlLCBidXQgeWVzLCB0aGVzZSBjYXNlcyBhcmUgaWRlbnRpY2FsbHkgaGFuZGxlZCAqL1xuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLmRlbGV0ZShSaWdodClcblxuICAvL3wgKF8sIElubmVyKF8pLCAoXywgTm9uZSkpID0+IE5vbmVcbiAgfCAoTGVmdCwgT3V0ZXIsIChTb21lKHQpLCBfKSkgd2hlbiBUb2tlbi5sZW5ndGgodCkgPiAxID0+XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhMZWZ0LCBUb2tlbi5ybV9sYXN0KHQpLCB6KVxuICB8IChSaWdodCwgT3V0ZXIsIChfLCBTb21lKHQpKSkgd2hlbiBUb2tlbi5sZW5ndGgodCkgPiAxID0+XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fZmlyc3QodCksIHopXG4gIHwgKF8sIE91dGVyLCAoU29tZShfKSwgXykpIC8qIHQubGVuZ3RoID09IDEgKi9cbiAgfCAoXywgT3V0ZXIsIChOb25lLCBfKSkgPT4geiB8PiBaaXBwZXIuZGVsZXRlKGQpXG4gIH07XG59O1xuXG5sZXQgbWVyZ2UgPSAoKGwsIHIpOiAoVG9rZW4udCwgVG9rZW4udCksIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgelxuICB8PiBaaXBwZXIuc2V0X2NhcmV0KElubmVyKDAsIFRva2VuLmxlbmd0aChsKSAtIDEpKSAgLy8gbm90ZSBtb25vdGlsZSBhc3N1bXB0aW9uXG4gIHw+IFppcHBlci5kZWxldGUoTGVmdClcbiAgfD4gT3B0VXRpbC5hbmRfdGhlbihaaXBwZXIuZGVsZXRlKFJpZ2h0KSlcbiAgfD4gT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0X21vbm8oUmlnaHQsIGwgKysgcikpO1xuXG4vKiBDaGVjayBpZiBjb250YWluaW5nIGR1byBmb3JtIGhhcyBhIG1vbm8gZXF1aXZhbGVudCBlLmcuIGxpc3QgbGl0ZXJhbHMgKi9cbmxldCBwYXJlbnRfZHVvbWVyZ2VzID0gKHo6IFppcHBlci50KSA9PiB7XG4gIGxldCogcGFyZW50ID0gUmVsYXRpdmVzLnBhcmVudCh6LnJlbGF0aXZlcyk7XG4gIGxldCogbGJsID0gUGllY2UubGFiZWwocGFyZW50KTtcbiAgRm9ybS5kdW9tZXJnZXMobGJsKTtcbn07XG5cbmxldCBnbyA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCogeiA9IGRlc3RydWN0KGQsIHopO1xuICBzd2l0Y2ggKFxuICAgIHBhcmVudF9kdW9tZXJnZXMoeiksXG4gICAgei5jYXJldCxcbiAgICBuZWlnaGJvcl9tb25vdGlsZXMoei5yZWxhdGl2ZXMuc2libGluZ3MpLFxuICApIHtcbiAgfCAoU29tZShsYmwpLCBPdXRlciwgKE5vbmUsIE5vbmUpKVxuICAgICAgd2hlbiBTaWJsaW5ncy5ub19zaWJsaW5ncyh6LnJlbGF0aXZlcy5zaWJsaW5ncykgPT5cbiAgICAvKiBOb3RlOiB3ZSBtdXN0IGRvIHRoZSBub19zaWJsaW5ncyBjaGVjaywgaXQgZG9lcyBub3Qgc3VmZmljZVxuICAgICAgIHRvIGNoZWNrIG5vIG1vbm90aWxlIG5laWdoYm9ycyBhcyB0aGVyZSBjb3VsZCBiZSBvdGhlciBuZWlnaGJvcnNcbiAgICAgICBmb3IgZXhhbXBsZSBlZGdlIGNhc2U6IFwiKCh8KSlcIiAqL1xuICAgIHpcbiAgICB8PiBaaXBwZXIuZGVsZXRlX3BhcmVudFxuICAgIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoMCwgMCkpXG4gICAgfD4gWmlwcGVyLmNvbnN0cnVjdCh+Y2FyZXQ9UmlnaHQsIH5iYWNrcGFjaz1MZWZ0LCBsYmwpXG4gICAgLyogQmVsb3cgcmVncm91dGluZyBpbXBvcnRhbnQgZm9yIHBhcmVucy9hcCBwb3NpdGlvbmluZyAqL1xuICAgIHw+IFppcHBlci5yZWdyb3V0KFJpZ2h0KVxuICAgIHw+IE9wdGlvbi5zb21lXG4gIHwgKF8sIE91dGVyLCAoU29tZShsKSwgU29tZShyKSkpIHdoZW4gTW9sZHMuYWxsb3dfbWVyZ2UobCwgcikgPT5cbiAgICBtZXJnZSgobCwgciksIHopXG4gIHwgXyA9PiBTb21lKHopXG4gIH07XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5sZXQgYmFyZiA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIFJlbW92ZXMgdGhlIGQtbmVpZ2hib3JpbmcgdGlsZSBhbmQgZHJvcHMgZnJvbSBiYWNrcGFjaztcbiAgICAgcHJlY29uZGl0aW9uOiB0aGUgZC1uZWlnaGJvciBzaG91bGQgYmUgYSBtb25vdGlsZVxuICAgICBzdHJpbmctbWF0Y2hpbmcgdGhlIGRyb3BwaW5nIHNoYXJkICovXG4gIGxldCogeiA9IGRlbGV0ZShkLCB6KTtcbiAgbGV0KyB6ID0gcHV0X2Rvd24oZCwgeik7XG4gIHo7XG59O1xuXG5sZXQgZGVsYXllZF9leHBhbmQgPSAodDogVG9rZW4udCwgY2FyZXQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogUmVtb3ZlcyB0aGUgZC1uZWlnaGJvcmluZyB0aWxlIGFuZCByZWNvbnN0cnVjdHMgaXQsIHRyaWdnZXJpbmdcbiAgICAga2V5d29yZC1leHBhbnNpb247IHByZWNvbmRpdGlvbjogdGhlIGQtbmVpZ2hib3Igc2hvdWxkIGJlIGEgbW9ub3RpbGVcbiAgICAgc3RyaW5nLW1hdGNoaW5nIGEga2V5d29yZCBvZiBhbiBleHBhbmRpbmcgZm9ybSAqL1xuICBsZXQgKG5ld19sYWJlbCwgYmFja3BhY2spID0gTW9sZHMuZGVsYXllZF9leHBhbnNpb24odCk7XG4gIGxldCsgeiA9IGRlbGV0ZShjYXJldCwgeik7XG4gIGNvbnN0cnVjdCh+YmFja3BhY2ssIH5jYXJldCwgbmV3X2xhYmVsLCB6KTtcbn07XG5cbmxldCBleHBhbmRfb3JfYmFyZl9sZWZ0X25laWdoYm9yID0gKHogYXMgczogdCk6IG9wdGlvbih0KSA9PlxuICAvKiBJZiBsZWZ0IG5laWdoYm9yIGlzIGEgbW9ub3RpbGUgKGEpIHN0cmluZy1tYXRjaGluZyB0aGUgc2hhcmQgYXQgdGhlXG4gICAgIHRvcCBvZiB0aGUgYmFja3BhY2ssIGJhcmYgaXQsIG9yIChiKSBhbiBleHBhbnNpbmcga2V5d29yZCwgZXhwYW5kIGl0LiAqL1xuICBzd2l0Y2ggKGxlZnRfbmVpZ2hib3JfbW9ub3RpbGUoei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gIHwgU29tZSh0KSB3aGVuIEJhY2twYWNrLndpbGxfYmFyZih0LCB6LmJhY2twYWNrKSA9PiBiYXJmKExlZnQsIHMpXG4gIHwgU29tZSh0KSB3aGVuIE1vbGRzLmlzX2RlbGF5ZWQodCkgPT4gZGVsYXllZF9leHBhbmQodCwgTGVmdCwgcylcbiAgfCBfID0+IFNvbWUocylcbiAgfTtcblxubGV0IGV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yID0gKHogYXMgczogdCk6IG9wdGlvbih0KSA9PlxuICAvKiBJZiByaWdodCBuZWlnaGJvciBpcyBhIG1vbm90aWxlIChhKSBzdHJpbmctbWF0Y2hpbmcgdGhlIHNoYXJkIGF0IHRoZVxuICAgICB0b3Agb2YgdGhlIGJhY2twYWNrLCBiYXJmIGl0LCBvciAoYikgYW4gZXhwYW5zaW5nIGtleXdvcmQsIGV4cGFuZCBpdC4gKi9cbiAgc3dpdGNoIChyaWdodF9uZWlnaGJvcl9tb25vdGlsZSh6LnJlbGF0aXZlcy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKHQpIHdoZW4gQmFja3BhY2sud2lsbF9iYXJmKHQsIHouYmFja3BhY2spID0+IGJhcmYoUmlnaHQsIHMpXG4gIHwgU29tZSh0KSB3aGVuIE1vbGRzLmlzX2RlbGF5ZWQodCkgPT4gZGVsYXllZF9leHBhbmQodCwgUmlnaHQsIHMpXG4gIHwgXyA9PiBTb21lKHMpXG4gIH07XG5cbmxldCBnZXRfZHVvX3NoYXJkID0gKHtsYWJlbCwgc2hhcmRzLCBffTogVGlsZS50KSA9PlxuICBpZiAoTGlzdC5sZW5ndGgobGFiZWwpID09IDIgJiYgTGlzdC5sZW5ndGgoc2hhcmRzKSA9PSAxKSB7XG4gICAgTGlzdC5udGhfb3B0KGxhYmVsLCBMaXN0LmhkKHNoYXJkcykpO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBuZWlnaGJvcl9jYW5fZHVvbWVyZ2UgPVxuICAgICh0OiBUb2tlbi50LCBzOiBTaWJsaW5ncy50KTogb3B0aW9uKChMYWJlbC50LCBEaXJlY3Rpb24udCkpID0+XG4gIC8qIENoZWNrcyBpZiBhIG5laWdoYm9yLCBwcmVmZXJlbnRpYWxseSB0aGUgbGVmdCBuZWlnaGJvciwgaXNcbiAgICAgYSBzaGFyZCBvZiBhIGR1b3RpbGUgd2hpY2ggY2FuIGJlIG1lcmdlZCB0byBmb3JtIGEgbW9ub3RpbGUuXG4gICAgIEl0IHJldHVybnMgdGhlIHJlc3VsdGluZyAobW9ubylsYWJlbCwgYW5kIHRoZSBkaXJlY3Rpb24gb2ZcbiAgICAgdGhlIHJlbGV2YW50IG5laWdoYm9yLiAqL1xuICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyhzKSkge1xuICB8IChTb21lKFRpbGUodGlsZSkpLCBfKSA9PlxuICAgIGxldCogc3RhcnQgPSBnZXRfZHVvX3NoYXJkKHRpbGUpO1xuICAgIGxldCsgbW9ub19sYmwgPSBGb3JtLmR1b21lcmdlcyhbc3RhcnQsIHRdKTtcbiAgICAobW9ub19sYmwsIERpcmVjdGlvbi5MZWZ0KTtcbiAgfCAoXywgU29tZShUaWxlKHRpbGUpKSkgPT5cbiAgICBsZXQqIGxhc3QgPSBnZXRfZHVvX3NoYXJkKHRpbGUpO1xuICAgIGxldCsgbW9ub19sYmwgPSBGb3JtLmR1b21lcmdlcyhbdCwgbGFzdF0pO1xuICAgIChtb25vX2xibCwgRGlyZWN0aW9uLlJpZ2h0KTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IG1ha2VfbmV3X3RpbGUgPSAodDogVG9rZW4udCwgY2FyZXQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PlxuICAvKiBBZGRzIGEgbmV3IHRpbGUgYXQgdGhlIGNhcmV0LiBJZiB0aGUgbmV3IHRva2VuIG1hdGNoZXMgdGhlIHRvcFxuICAgICBvZiB0aGUgYmFja3BhY2ssIHRoZSBiYWNrcGFjayBzaGFyZCBpcyBkcm9wcGVkLiBPdGhlcndpc2UsIHdlXG4gICAgIGNvbnN0cnVjdCBhIG5ldyB0aWxlLCB3aGljaCBtYXkgaW1tZWRpYXRlbHkgZXhwYW5kLiAqL1xuICBCYWNrcGFjay53aWxsX2JhcmYodCwgei5iYWNrcGFjaylcbiAgICA/IHN3aXRjaCAobmVpZ2hib3JfY2FuX2R1b21lcmdlKHQsIHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICAgICAgfCBTb21lKChsYmwsIGQpKSA9PlxuICAgICAgICBaaXBwZXIucmVwbGFjZSh+Y2FyZXQ9ZCwgfmJhY2twYWNrPWQsIGxibCwgeikgfD4gT3B0aW9uLmdldFxuICAgICAgfCBOb25lID0+IHB1dF9kb3duKGNhcmV0LCB6KSB8PiBPcHRpb24uZ2V0XG4gICAgICB9XG4gICAgOiB7XG4gICAgICBsZXQgKGxibCwgYmFja3BhY2spID0gTW9sZHMuaW5zdGFudF9leHBhbnNpb24odCk7XG4gICAgICBsZXQgeiA9IGNvbnN0cnVjdCh+Y2FyZXQsIH5iYWNrcGFjaywgbGJsLCB6KTtcbiAgICAgIHo7XG4gICAgfTtcblxubGV0IGV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3X3RpbGUgPSAoY2hhcjogVG9rZW4udCwgc3RhdGU6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBUcmlnZ2VyIGEgdG9rZW4gYm91bmRhcnkgZXZlbnQgYW5kIGNyZWF0ZSBhIG5ldyB0aWxlLlxuICAgICBUaGlzIHByb2Nlc3MgcG90ZW50aWFsbHkgaW52b2x2ZXMgYm90aCBuZWlnaGJvcmluZyB0aWxlcyxcbiAgICAgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyB1cCB0byAzIGV4cGFuc2lvbnMgb3IgYmFja3BhY2sgYmFyZnMuXG4gICAgIEluIHBhcnRpY3VsYXIsIGJvdGggbGVmdCBhbmQgcmlnaHQgbmVpZ2hib3JpbmcgbW9ub3RpbGVzIG1heVxuICAgICB1bmRlcmdvIGRlbGF5ZWQgKGFrYSBrZXl3b3JkKSBleHBhbnNpb24sIGFuZCB0aGUgbmV3bHktY3JlYXRlZFxuICAgICBzaW5nbGUtY2hhcmFjdGVyIHRva2VuIG1heSB1bmRlcmdvIGluc3RhbnQgZXhwYW5zaW9uLiBDdXJyZW50bHlcbiAgICAgbWFkZSB0aGUgZGVjaXNpb24gdG8gZXhwYW5kIG9yIGJhcmYgdGhlIG5laWdoYm9ycyBiZWZvcmUgbWFraW5nXG4gICAgIHRoZSBuZXcgdGlsZSBiZWNhdXNlIGJhcmZpbmcgaXMgbGltaXRlZCB0byB0aGUgdG9wIG9mIHRoZSBiYWNrcGFjayxcbiAgICAgYW5kIEkgd2FudGVkIHRoaW5ncyBsaWtlIFwiaWZ8dGhlblwiLCB3aGVuIHlvdSBlbnRlciBhIFwiKFwiLCB0b1xuICAgICBiYXJmIHRoZSBcInRoZW5cIiwgYmVmb3JlIGl0IGlzIGJ1cmllZCBieSB0aGUgXCIpXCIgYWRkZWQgdG8gdGhlIEJQLlxuICAgICBUaGUgb3JkZXIgaGVyZSBjb3VsZCBiZSByZXZpc2l0ZWQgaWYgYmFyZmluZyB3YXMgbW9yZSBzb3BoaXN0aWNhdGVkLlxuICAgICAqL1xuICBsZXQqIHogPSBleHBhbmRfb3JfYmFyZl9sZWZ0X25laWdoYm9yKHN0YXRlKTtcbiAgLy9sZXQgKHopID0gcmVncm91dChMZWZ0LCB6KTtcbiAgLyogTm90ZSB0byBkYXZpZDogSSdtIG5vdCBzdXJlIHdoeSB0aGUgYWJvdmUgcmVncm91dCBpcyBuZWNlc3NhcnkuXG4gICAgIFdpdGhvdXQgaXQsIHRoZXJlIGlzIGEgTm9uY29udmV4IHNlZ21lbnQgZXJyb3IgdGhyb3duIGluIGV4YWN0bHlcbiAgICAgb25lIGNhc2UsIHRoZSBkb3VibGUgYmFyZiBjYXNlOiBpbnNlcnQgc3BhY2Ugb24gXCJpZiB0aGVufGVsc2VcIiAqL1xuICBsZXQrIHogPSBleHBhbmRfb3JfYmFyZl9yaWdodF9uZWlnaGJvcih6KTtcbiAgbWFrZV9uZXdfdGlsZShjaGFyLCBMZWZ0LCB6KTtcbn07XG5cbmxldCByZXBsYWNlX3RpbGUgPSAodDogVG9rZW4udCwgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICBsZXQrIHogPSBkZWxldGUoZCwgeik7XG4gIG1ha2VfbmV3X3RpbGUodCwgZCwgeik7XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFwcGVuZGFiaWxpdHkgPVxuICB8IEFwcGVuZExlZnQoVG9rZW4udClcbiAgfCBBcHBlbmRSaWdodChUb2tlbi50KVxuICB8IE1ha2VOZXc7XG5cbmxldCBzaWJsaW5nX2FwcGVuZGFiaWxpdHk6IChzdHJpbmcsIFNpYmxpbmdzLnQpID0+IGFwcGVuZGFiaWxpdHkgPVxuICAoY2hhciwgc2libGluZ3MpID0+XG4gICAgc3dpdGNoIChuZWlnaGJvcl9tb25vdGlsZXMoc2libGluZ3MpKSB7XG4gICAgfCAoU29tZSh0KSwgXykgd2hlbiBNb2xkcy5hbGxvd19hcHBlbmRfcmlnaHQodCwgY2hhcikgPT5cbiAgICAgIEFwcGVuZExlZnQodCArKyBjaGFyKVxuICAgIHwgKF8sIFNvbWUodCkpIHdoZW4gTW9sZHMuYWxsb3dfYXBwZW5kX2xlZnQoY2hhciwgdCkgPT5cbiAgICAgIEFwcGVuZFJpZ2h0KGNoYXIgKysgdClcbiAgICB8IF8gPT4gTWFrZU5ld1xuICAgIH07XG5cbmxldCBpbnNlcnRfb3V0ZXIgPSAoY2hhcjogc3RyaW5nLCB6IGFzIHN0YXRlOiB0KTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoc2libGluZ19hcHBlbmRhYmlsaXR5KGNoYXIsIHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICB8IE1ha2VOZXcgPT4gZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfdGlsZShjaGFyLCBzdGF0ZSlcbiAgfCBBcHBlbmRMZWZ0KHQpID0+IHJlcGxhY2VfdGlsZSh0LCBMZWZ0LCBzdGF0ZSlcbiAgfCBBcHBlbmRSaWdodCh0KSA9PiByZXBsYWNlX3RpbGUodCwgUmlnaHQsIHN0YXRlKVxuICB9O1xuXG5sZXQgaW5zZXJ0X2R1byA9IChsYmw6IExhYmVsLnQsIHo6IG9wdGlvbih0KSk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IE9wdGlvbi5tYXAoeiA9PiBaaXBwZXIuY29uc3RydWN0KH5jYXJldD1MZWZ0LCB+YmFja3BhY2s9TGVmdCwgbGJsLCB6KSlcbiAgfD4gT3B0VXRpbC5hbmRfdGhlbih6ID0+IHtcbiAgICAgICAvL05PVEU6IHJlZ3JvdXQgdG8gcHV0IGUuZy4gYXAoMXwpIGJhY2sgdG9nZXRoZXJcbiAgICAgICB6XG4gICAgICAgfD4gcmVtb2xkX3JlZ3JvdXQoTGVmdClcbiAgICAgICB8PiBaaXBwZXIucHV0X2Rvd24oTGVmdClcbiAgICAgICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5tb3ZlKExlZnQpKVxuICAgICB9KTtcblxubGV0IGluc2VydF9tb25vcyA9IChsOiBUb2tlbi50LCByOiBUb2tlbi50LCB6OiBvcHRpb24odCkpOiBvcHRpb24odCkgPT5cbiAgelxuICB8PiBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3RfbW9ubyhSaWdodCwgcikpXG4gIHw+IE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdF9tb25vKExlZnQsIGwpKTtcblxubGV0IHNwbGl0ID0gKHo6IHQsIGNoYXI6IHN0cmluZywgaWR4OiBpbnQsIHQ6IFRva2VuLnQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBDdXJyZW50IHRoaXMgbmVjZXNzYXJpbHkgY3JlYXRlcyB0aHJlZSB0b2tlbnM7IHR3byBmcm9tIHNwbGl0dGluZ1xuICAgKiB0aGUgZXhpc3Rpbmcgb25lLCBhbmQgYSBuZXcgb25lLiBUaGUgdHdvIHNwbGl0dGluZyB0b2tlbnMgbWF5IGJlY29tZVxuICAgKiBkZWxpbWl0ZXJzIG9mIHRoZSBzYW1lIHRpbWUgKGUuZy4gYFt8XWA9PmBbPD58XWApLiBJbiB0aGUgZnV0dXJlIGl0XG4gICAqIG1heSBiZSBwcnVkZW50IHRvIHJlbGF4IHRoaXMgYnksIGFmdGVyIHNwbGl0dGluZywgZmlyc3QgYXR0ZW1wdGluZ1xuICAgKiB0byBhcHBlbmQgdGhlIG5ldyBjaGFyIHRvIHRoZSBsZWZ0IGhhbGYsIGFuZCB0aGVuIHRoZSByaWdodCBoYWxmLFxuICAgKiBhbmQgb25seSBpZiB0aG9zZSBmYWlsIGNyZWF0aW5nIGEgbmV3IGNlbnRlciB0b2tlbi4gKi9cbiAgbGV0IChsLCByKSA9IFRva2VuLnNwbGl0X250aChpZHgsIHQpO1xuICB6XG4gIHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpXG4gIHw+IFppcHBlci5zZWxlY3QoUmlnaHQpXG4gIHw+IChcbiAgICAvKiBvdmVyd3JpdGUgc2VsZWN0aW9uICovXG4gICAgc3dpdGNoIChGb3JtLmR1b21lcmdlcyhbbCwgcl0pKSB7XG4gICAgfCBTb21lKF8pID0+IGluc2VydF9kdW8oW2wsIHJdKVxuICAgIHwgTm9uZSA9PiBpbnNlcnRfbW9ub3MobCwgcilcbiAgICB9XG4gIClcbiAgfD4gT3B0VXRpbC5hbmRfdGhlbihleHBhbmRfbmVpZ2hib3JzX2FuZF9tYWtlX25ld190aWxlKGNoYXIpKTtcbn07XG5cbmxldCBvcHRfcmVncm9sZCA9IGQgPT4gT3B0aW9uLm1hcChyZW1vbGRfcmVncm91dChkKSk7XG5cbmxldCBtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQgPSAoY2hhciwgeikgPT5cbiAgLyogVGhpcyBpcyBzcGVjaWFsLWNhc2UgbG9naWMgZm9yIGFkdmFuY2luZyB0aGUgY2FyZXQgdG8gcG9zaXRpb24gYmV0d2VlbiB0aGUgcXVvdGVzXG4gICAgIGluIG5ld2x5LWNyZWF0ZWQgc3RyaW5nbGl0cy4gVGhlIG1haW4gc3RyaW5nbGl0IHNwZWNpYWwtY2FzZSBpcyBpbiBaaXBwZXIuY29uc3R1Y3RcbiAgICAgYW5kIGlkZWFsbHkgdGhpcyBsb2dpYyB3b3VsZCBiZSBsb2NhdGVkIHRoZXJlIGFzIHdlbGwsIGJ1dCBib3RoIHJlZ3JvdXRpbmcgYW5kXG4gICAgIHN1YnNlcXVlbnQgY2FyZXQgcG9zaXRpb24gbG9naWMgYXQgdGhpcyBmdW5jdGlvbidzIGNhbGxzaXRlcyBkaWNhdGUgdGhhdCB0aGlzXG4gICAgIGJlIGRvbmUgYWZ0ZXIuIE5vdCB0b28gaGFwcHkgYWJvdXQgdGhpcyB0YmguICovXG4gIEZvcm0uaXNfc3RyaW5nX2RlbGltKGNoYXIpIHx8IEZvcm0uaXNfY29tbWVudF9kZWxpbShjaGFyKVxuICAgID8gc3dpdGNoIChtb3ZlKExlZnQsIHopKSB7XG4gICAgICB8IE5vbmUgPT4gelxuICAgICAgfCBTb21lKHopID0+IHogfD4gc2V0X2NhcmV0KElubmVyKDAsIDApKVxuICAgICAgfVxuICAgIDogejtcblxubGV0IGNsb3Npbmdfc3RyaW5nbGl0X29yX2NvbW1lbnQgPSAoY2hhciwgdCkgPT5cbiAgRm9ybS5pc19zdHJpbmcodClcbiAgJiYgRm9ybS5pc19zdHJpbmdfZGVsaW0oY2hhcilcbiAgfHwgRm9ybS5pc19jb21tZW50KHQpXG4gICYmIEZvcm0uaXNfY29tbWVudF9kZWxpbShjaGFyKTtcblxubGV0IGdvID1cbiAgICAoY2hhcjogc3RyaW5nLCB7Y2FyZXQsIHJlbGF0aXZlczoge3NpYmxpbmdzLCBffSwgX30gYXMgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIElmIHRoZXJlJ3MgYSBzZWxlY3Rpb24sIGRlbGV0ZSBpdCBiZWZvcmUgcHJvY2VlZGluZyAqL1xuICBsZXQgeiA9IHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPyBaaXBwZXIuZGVzdHJ1Y3QoeikgOiB6O1xuICBzd2l0Y2ggKGNhcmV0LCBuZWlnaGJvcl9tb25vdGlsZXMoc2libGluZ3MpKSB7XG4gIC8qIElmIHdlIHRyeSB0byBpbnNlcnQgYSBxdW90ZSBpbnNpZGUgYW4gZXhpc3Rpbmcgc3RyaW5nLCBvciBhICNcbiAgICogaW4gYSBjb21tZW50LCB3ZSBhcmUgaW5zdGVhZCBtb3ZlZCB0byB0aGUgcmlnaHRoYW5kIHNpZGUgb2ZcbiAgICogdGhlIG9wZXJhbmQuIE5vdGUgdGhhdCB0aGlzIGJlaGF2aW9yIGlzIGxvYWQtYmVhcmluZyBmb3IgdGhlXG4gICAqIGN1cnJlbnQgcGFyc2luZyBhcHByb2FjaCBpbmNsdWRpbmcgUGFzdGUgKi9cbiAgfCAoXywgKF8sIFNvbWUodCkpKSB3aGVuIGNsb3Npbmdfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhciwgdCkgPT5cbiAgICB6IHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpIHw+IFppcHBlci5tb3ZlKFJpZ2h0KVxuICB8IChPdXRlciwgKFNvbWUodCksIF8pKSB3aGVuIGNsb3Npbmdfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhciwgdCkgPT5cbiAgICBTb21lKHopXG4gIHwgKElubmVyKGRfaWR4LCBuKSwgKF8sIFNvbWUodCkpKSA9PlxuICAgIGxldCBpZHggPSBuICsgMTtcbiAgICBsZXQgbmV3X3QgPSBUb2tlbi5pbnNlcnRfbnRoKGlkeCwgY2hhciwgdCk7XG4gICAgLyogSWYgaW5zZXJ0aW5nIHdvdWxkbid0IHByb2R1Y2UgYSB2YWxpZCB0b2tlbiwgc3BsaXQuIFRoaXMgaXNcbiAgICAgKiBtb3N0bHkgdGFyZ2V0dGluZyB0aGUgY2FzZSBvZiBpbnNlcnRpbmcgYW4gaW5maXggb3BlcmF0b3JcbiAgICAgKiBpbnNpZGUgYW4gb3BlcmFuZCAob3IgbW9yZSByYXJlbHkgdmljZS12ZXJzYSkuIEluIHN1Y2ggY2FzZXMsXG4gICAgICogZHVlIHRvIHRoZSBjdXJyZW50IE1PU1RMWSBkaXNqb2ludGVkbmVzcyBvZiB0aGVzZSBjaGFyYWN0ZXJcbiAgICAgKiBjbGFzc2VzLCBBTEwgKGlzaD8pIGN1cnJlbnQgc3BsaXRzIHNob3VsZCBiZSAzLXdheVxuICAgICAqIHNwbGl0cyAoYXMgb3Bwb3NlZCB0byAyLXdheSkuIFRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5XG4gICAgICoga2luZCBvZiBzcGxpdHRpbmcgc3VwcG9ydGVkOyB0aGlzIHNob3VsZCBiZSByZXZpc2l0ZWQgaWZcbiAgICAgKiB3ZSBtb3ZlIHRvIG1vcmUgc3VidGxlIHRva2VuIGRpdmlzaW9uIGxvZ2ljICovXG4gICAgTW9sZHMuYWxsb3dfaW5zZXJ0aW9uKGNoYXIsIHQsIG5ld190KVxuICAgICAgPyB6XG4gICAgICAgIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoZF9pZHgsIGlkeCkpXG4gICAgICAgIHw+IFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIG5ld190KVxuICAgICAgICB8PiBvcHRfcmVncm9sZChMZWZ0KVxuICAgICAgOiBzcGxpdCh6LCBjaGFyLCBpZHgsIHQpIHw+IG9wdF9yZWdyb2xkKFJpZ2h0KTtcbiAgLyogQ2FuJ3QgaW5zZXJ0IGluc2lkZSBkZWxpbWl0ZXIgKi9cbiAgfCAoSW5uZXIoXywgXyksIChfLCBOb25lKSkgPT4gTm9uZVxuICB8IChPdXRlciwgKF8sIFNvbWUoXykpKSA9PlxuICAgIGxldCBjYXJldDogWmlwcGVyLkNhcmV0LnQgPVxuICAgICAgc3dpdGNoIChzaWJsaW5nX2FwcGVuZGFiaWxpdHkoY2hhciwgc2libGluZ3MpKSB7XG4gICAgICB8IEFwcGVuZFJpZ2h0KF8pID0+XG4gICAgICAgIC8qIElmIHdlJ3JlIGFkZGluZyB0byB0aGUgcmlnaHQsIG1vdmUgY2FyZXQgaW5zaWRlIHJpZ2h0IG5oYnIuXG4gICAgICAgICAqIE5vdGUgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGlzIGlzIGEgbW9ub3RpbGUgKi9cbiAgICAgICAgSW5uZXIoMCwgMClcbiAgICAgIHwgTWFrZU5ld1xuICAgICAgfCBBcHBlbmRMZWZ0KF8pID0+IE91dGVyXG4gICAgICB9O1xuICAgIHpcbiAgICB8PiBpbnNlcnRfb3V0ZXIoY2hhcilcbiAgICB8PiBPcHRpb24ubWFwKFppcHBlci5zZXRfY2FyZXQoY2FyZXQpKVxuICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgfD4gT3B0aW9uLm1hcChtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhcikpO1xuICB8IChPdXRlciwgKF8sIE5vbmUpKSA9PlxuICAgIHpcbiAgICB8PiBpbnNlcnRfb3V0ZXIoY2hhcilcbiAgICB8PiBvcHRfcmVncm9sZChMZWZ0KVxuICAgIHw+IE9wdGlvbi5tYXAobW92ZV9pbnRvX2lmX3N0cmluZ2xpdF9vcl9jb21tZW50KGNoYXIpKVxuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gWmlwcGVyO1xuXG5sZXQgaXNfd3JpdGVfYWN0aW9uID0gKGE6IEFjdGlvbi50KSA9PiB7XG4gIHN3aXRjaCAoYSkge1xuICB8IE1vdmUoXylcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IFVuc2VsZWN0KF8pXG4gIHwgSnVtcChfKVxuICB8IFNlbGVjdChfKSA9PiBmYWxzZVxuICB8IERlc3RydWN0KF8pXG4gIHwgSW5zZXJ0KF8pXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUm90YXRlQmFja3BhY2tcbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldChfKSA9PiB0cnVlXG4gIH07XG59O1xuXG5sZXQgZ29feiA9XG4gICAgKFxuICAgICAgfm1ldGE6IG9wdGlvbihFZGl0b3IuTWV0YS50KT0/LFxuICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgIGE6IEFjdGlvbi50LFxuICAgICAgejogWmlwcGVyLnQsXG4gICAgKVxuICAgIDogQWN0aW9uLlJlc3VsdC50KFppcHBlci50KSA9PiB7XG4gIGxldCBtZXRhID1cbiAgICBzd2l0Y2ggKG1ldGEpIHtcbiAgICB8IFNvbWUobSkgPT4gbVxuICAgIHwgTm9uZSA9PiBFZGl0b3IuTWV0YS5pbml0KHopXG4gICAgfTtcbiAgbW9kdWxlIE0gPSAodmFsIEVkaXRvci5NZXRhLm1vZHVsZV9vZl90KG1ldGEpKTtcbiAgbW9kdWxlIE1vdmUgPSBNb3ZlLk1ha2UoTSk7XG4gIG1vZHVsZSBTZWxlY3QgPSBTZWxlY3QuTWFrZShNKTtcblxuICBsZXQgc2VsZWN0X3Rlcm1fY3VycmVudCA9IHogPT5cbiAgICBzd2l0Y2ggKEluZGljYXRlZC5pbmRleCh6KSkge1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFNlbGVjdC50ZXJtKGlkLCB6KSkge1xuICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICB9XG4gICAgfTtcblxuICBzd2l0Y2ggKGEpIHtcbiAgfCBNb3ZlKGQpID0+XG4gICAgTW92ZS5nbyhkLCB6KSB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpXG4gIHwgTW92ZVRvTmV4dEhvbGUoZCkgPT5cbiAgICBNb3ZlLmdvKEdvYWwoUGllY2UoR3JvdXQsIGQpKSwgeilcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpXG4gIHwgSnVtcChqdW1wX3RhcmdldCkgPT5cbiAgICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuXG4gICAgbGV0IGlkeCA9IEluZGljYXRlZC5pbmRleCh6KTtcbiAgICBsZXQgKHRlcm0sIF8pID1cbiAgICAgIFV0aWwuVGltZVV0aWwubWVhc3VyZV90aW1lKFwiUGVyZm9ybS5nb196ID0+IE1ha2VUZXJtLmZyb21femlwXCIsIHRydWUsICgpID0+XG4gICAgICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl92aWV3KHopXG4gICAgICApO1xuICAgIGxldCBzdGF0aWNzID0gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwKHNldHRpbmdzLCB0ZXJtKTtcblxuICAgIChcbiAgICAgIHN3aXRjaCAoanVtcF90YXJnZXQpIHtcbiAgICAgIHwgQmluZGluZ1NpdGVPZkluZGljYXRlZFZhciA9PlxuICAgICAgICBsZXQqIGlkeCA9IGlkeDtcbiAgICAgICAgbGV0KiBjaSA9IElkLk1hcC5maW5kX29wdChpZHgsIHN0YXRpY3MpO1xuICAgICAgICBsZXQqIGJpbmRpbmdfaWQgPSBJbmZvLmdldF9iaW5kaW5nX3NpdGUoY2kpO1xuICAgICAgICBNb3ZlLmp1bXBfdG9faWQoeiwgYmluZGluZ19pZCk7XG4gICAgICB8IFRpbGVJZChpZCkgPT4gTW92ZS5qdW1wX3RvX2lkKHosIGlkKVxuICAgICAgfVxuICAgIClcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpO1xuICB8IFVuc2VsZWN0KFNvbWUoZCkpID0+IE9rKFppcHBlci5kaXJlY3Rpb25hbF91bnNlbGVjdChkLCB6KSlcbiAgfCBVbnNlbGVjdChOb25lKSA9PlxuICAgIGxldCB6ID0gWmlwcGVyLmRpcmVjdGlvbmFsX3Vuc2VsZWN0KHouc2VsZWN0aW9uLmZvY3VzLCB6KTtcbiAgICBPayh6KTtcbiAgfCBTZWxlY3QoQWxsKSA9PlxuICAgIHN3aXRjaCAoTW92ZS5kb19leHRyZW1lKE1vdmUucHJpbWFyeShCeVRva2VuKSwgVXAsIHopKSB7XG4gICAgfCBTb21lKHopID0+XG4gICAgICBzd2l0Y2ggKFNlbGVjdC5nbyhFeHRyZW1lKERvd24pLCB6KSkge1xuICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICB9XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIH1cbiAgfCBTZWxlY3QoVGVybShDdXJyZW50KSkgPT4gc2VsZWN0X3Rlcm1fY3VycmVudCh6KVxuICB8IFNlbGVjdChTbWFydCkgPT5cbiAgICAvKiBJZiB0aGUgY3VycmVudCB0aWxlIGlzIG5vdCBjb2luY2lkZW50IHdpdGggdGhlIHRlcm0sXG4gICAgICAgc2VsZWN0IHRoZSB0ZXJtLiBPdGhlcndpc2UsIHNlbGVjdCB0aGUgcGFyZW50IHRlcm0uICovXG4gICAgbGV0IHRpbGVfaXNfdGVybSA9XG4gICAgICBzd2l0Y2ggKEluZGljYXRlZC5pbmRleCh6KSkge1xuICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICB8IFNvbWUoaWQpID0+IFNlbGVjdC50aWxlKGlkLCB6KSA9PSBTZWxlY3QudGVybShpZCwgeilcbiAgICAgIH07XG4gICAgaWYgKCF0aWxlX2lzX3Rlcm0pIHtcbiAgICAgIHNlbGVjdF90ZXJtX2N1cnJlbnQoeik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vUEVSRjogdGhpcyBpcyBleHBlbnNpdmVcbiAgICAgIGxldCAodGVybSwgXykgPSBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfdmlldyh6KTtcbiAgICAgIGxldCBzdGF0aWNzID0gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwKHNldHRpbmdzLCB0ZXJtKTtcbiAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgIEluZGljYXRlZC5pbmRleCh6KVxuICAgICAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oaWR4ID0+IElkLk1hcC5maW5kX29wdChpZHgsIHN0YXRpY3MpKVxuICAgICAgICApIHtcbiAgICAgICAgfCBTb21lKGNpKSA9PlxuICAgICAgICAgIHN3aXRjaCAoSW5mby5hbmNlc3RvcnNfb2YoY2kpKSB7XG4gICAgICAgICAgfCBbXSA9PiBOb25lXG4gICAgICAgICAgfCBbcGFyZW50LCAuLi5fXSA9PiBTb21lKHBhcmVudClcbiAgICAgICAgICB9XG4gICAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRhcmdldCkge1xuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfCBTb21lKGlkKSA9PlxuICAgICAgICBzd2l0Y2ggKFNlbGVjdC50ZXJtKGlkLCB6KSkge1xuICAgICAgICB8IFNvbWUoeikgPT4gT2soeilcbiAgICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIHwgU2VsZWN0KFRlcm0oSWQoaWQsIGQpKSkgPT5cbiAgICBzd2l0Y2ggKFNlbGVjdC50ZXJtKGlkLCB6KSkge1xuICAgIHwgU29tZSh6KSA9PlxuICAgICAgbGV0IHogPSBkID09IFJpZ2h0ID8geiA6IFppcHBlci50b2dnbGVfZm9jdXMoeik7XG4gICAgICBPayh6KTtcbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfVxuICB8IFNlbGVjdChUaWxlKEN1cnJlbnQpKSA9PlxuICAgIHN3aXRjaCAoSW5kaWNhdGVkLmluZGV4KHopKSB7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIHwgU29tZShpZCkgPT5cbiAgICAgIHN3aXRjaCAoU2VsZWN0LnRpbGUoaWQsIHopKSB7XG4gICAgICB8IFNvbWUoeikgPT4gT2soeilcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIH1cbiAgICB9XG4gIHwgU2VsZWN0KFRpbGUoSWQoaWQsIGQpKSkgPT5cbiAgICBzd2l0Y2ggKFNlbGVjdC50aWxlKGlkLCB6KSkge1xuICAgIHwgU29tZSh6KSA9PlxuICAgICAgbGV0IHogPSBkID09IFJpZ2h0ID8geiA6IFppcHBlci50b2dnbGVfZm9jdXMoeik7XG4gICAgICBPayh6KTtcbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfVxuICB8IFNlbGVjdChSZXNpemUoZCkpID0+XG4gICAgU2VsZWN0LmdvKGQsIHopIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICB8IERlc3RydWN0KGQpID0+XG4gICAgelxuICAgIHw+IERlc3RydWN0LmdvKGQpXG4gICAgfD4gT3B0aW9uLm1hcChyZW1vbGRfcmVncm91dChkKSlcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X2Rlc3RydWN0KVxuICB8IEluc2VydChjaGFyKSA9PlxuICAgIHpcbiAgICB8PiBJbnNlcnQuZ28oY2hhcilcbiAgICAvKiBub3RlOiByZW1vbGRpbmcgaGVyZSBpcyBkb25lIGNhc2UtYnktY2FzZSAqL1xuICAgIC8vfD4gT3B0aW9uLm1hcCgoeikgPT4gcmVtb2xkX3JlZ3JvdXQoUmlnaHQsIHopKVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfaW5zZXJ0KVxuICB8IFBpY2tfdXAgPT4gT2socmVtb2xkX3JlZ3JvdXQoTGVmdCwgWmlwcGVyLnBpY2tfdXAoeikpKVxuICB8IFB1dF9kb3duID0+XG4gICAgbGV0IHogPVxuICAgICAgLyogQWx0ZXJuYXRpdmVseSwgcHV0dGluZyBkb3duIGluc2lkZSB0b2tlbiBjb3VsZCBlaXRlciBtZXJnZS1pbiBvciBzcGxpdCAqL1xuICAgICAgc3dpdGNoICh6LmNhcmV0KSB7XG4gICAgICB8IElubmVyKF8pID0+IE5vbmVcbiAgICAgIHwgT3V0ZXIgPT4gWmlwcGVyLnB1dF9kb3duKExlZnQsIHopXG4gICAgICB9O1xuICAgIHpcbiAgICB8PiBPcHRpb24ubWFwKHJlbW9sZF9yZWdyb3V0KExlZnQpKVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfcHV0X2Rvd24pO1xuICB8IFJvdGF0ZUJhY2twYWNrID0+XG4gICAgbGV0IHogPSB7Li4ueiwgYmFja3BhY2s6IFV0aWwuTGlzdFV0aWwucm90YXRlKHouYmFja3BhY2spfTtcbiAgICBPayh6KTtcbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldCgoTGVmdChfKSB8IFJpZ2h0KF8pKSBhcyBkKSA9PlxuICAgIGlmIChCYWNrcGFjay5yZXN0cmljdGVkKHouYmFja3BhY2spKSB7XG4gICAgICBNb3ZlLnRvX2JhY2twYWNrX3RhcmdldChkLCB6KVxuICAgICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgTW92ZS5nbyhMb2NhbChkKSwgeilcbiAgICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSk7XG4gICAgfVxuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KChVcCB8IERvd24pIGFzIGQpID0+XG4gICAgTW92ZS50b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpXG4gIH07XG59O1xuXG5sZXQgZ28gPVxuICAgICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBhOiBBY3Rpb24udCwgZWQ6IEVkaXRvci50KVxuICAgIDogQWN0aW9uLlJlc3VsdC50KEVkaXRvci50KSA9PlxuICBpZiAoZWQucmVhZF9vbmx5ICYmIGlzX3dyaXRlX2FjdGlvbihhKSkge1xuICAgIFJlc3VsdC5PayhlZCk7XG4gIH0gZWxzZSB7XG4gICAgb3BlbiBSZXN1bHQuU3ludGF4O1xuICAgIGxldCBFZGl0b3IuU3RhdGUue3ppcHBlciwgbWV0YX0gPSBlZC5zdGF0ZTtcbiAgICBFZmZlY3Quc19jbGVhcigpO1xuICAgIGxldCsgeiA9IGdvX3oofnNldHRpbmdzLCB+bWV0YSwgYSwgemlwcGVyKTtcbiAgICBFZGl0b3IubmV3X3N0YXRlKH5lZmZlY3RzPUVmZmVjdC5zXiwgYSwgeiwgZWQpO1xuICB9O1xuIiwib3BlbiBVdGlsO1xub3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGNvZGU6IGxpc3Qoc3RyaW5nKSxcbiAgc2VsZWN0aW9uOiBsaXN0KHN0cmluZyksXG4gIGJhY2twYWNrOiBsaXN0KGxpc3Qoc3RyaW5nKSksXG59O1xuXG5sZXQgc2VnX29mX3ppcCA9IFppcHBlci5zZWdfd2l0aG91dF9idWZmZXI7XG5cbmxldCByZWMgb2Zfc2VnbWVudCA9ICh+aG9sZXMsIHNlZzogU2VnbWVudC50KTogc3RyaW5nID0+XG4gIHNlZyB8PiBMaXN0Lm1hcChvZl9waWVjZSh+aG9sZXMpKSB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfcGllY2UgPSAofmhvbGVzLCBwOiBQaWVjZS50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFRpbGUodCkgPT4gb2ZfdGlsZSh+aG9sZXMsIHQpXG4gIHwgR3JvdXQoe3NoYXBlOiBDb25jYXZlLCBffSkgPT4gXCIgXCJcbiAgfCBHcm91dCh7c2hhcGU6IENvbnZleCwgX30pIHdoZW4gaG9sZXMgIT0gTm9uZSA9PiBPcHRpb24uZ2V0KGhvbGVzKVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gXCIgXCJcbiAgfCBTZWNvbmRhcnkodykgPT5cbiAgICBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID8gXCJcXG5cIiA6IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudClcbiAgfVxuYW5kIG9mX3RpbGUgPSAofmhvbGVzLCB0OiBUaWxlLnQpOiBzdHJpbmcgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuam9pbihvZl9kZWxpbSh0KSwgb2Zfc2VnbWVudCh+aG9sZXMpKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfZGVsaW0gPSAodDogUGllY2UudGlsZSwgaTogaW50KTogc3RyaW5nID0+IExpc3QubnRoKHQubGFiZWwsIGkpO1xuXG5sZXQgdG9fc3RyaW5nX2Jhc2ljID0gKHo6IFppcHBlci50KTogc3RyaW5nID0+IHtcbiAgeiB8PiBzZWdfb2ZfemlwIHw+IG9mX3NlZ21lbnQofmhvbGVzPU5vbmUpO1xufTtcblxubGV0IGxpbmVzX3RvX2xpc3QgPSBTdHJpbmcuc3BsaXRfb25fY2hhcignXFxuJyk7XG5cbmxldCBjYXJldF9zdHIgPSBcIuKWkVwiO1xuXG5sZXQgdG9fcm93cyA9XG4gICAgKFxuICAgICAgfmhvbGVzOiBvcHRpb24oc3RyaW5nKSxcbiAgICAgIH5tZWFzdXJlZDogTWVhc3VyZWQudCxcbiAgICAgIH5jYXJldDogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpLFxuICAgICAgfmluZGVudDogc3RyaW5nLFxuICAgICAgfnNlZ21lbnQ6IFNlZ21lbnQudCxcbiAgICApXG4gICAgOiBsaXN0KHN0cmluZykgPT4ge1xuICBsZXQgaW5kZW50X29mID0gaSA9PiBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgbWVhc3VyZWQucm93cykuaW5kZW50O1xuICBsZXQgbWtfaW5kZW50ID0gKGksIHIpID0+IFN0cmluZ1V0aWwucmVwZWF0KGluZGVudF9vZihpKSwgaW5kZW50KSArKyByO1xuICBsZXQgcm93cyA9XG4gICAgc2VnbWVudCB8PiBvZl9zZWdtZW50KH5ob2xlcykgfD4gbGluZXNfdG9fbGlzdCB8PiBMaXN0Lm1hcGkobWtfaW5kZW50KTtcbiAgc3dpdGNoIChjYXJldCkge1xuICB8IFNvbWUoe3JvdywgY29sfSkgPT5cbiAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X250aF9vcHQocm93LCByb3dzKSkge1xuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpIHdoZW4gY29sIDwgU3RyaW5nLmxlbmd0aChjYXJldF9yb3cpID0+XG4gICAgICBwcmUgQCBbU3RyaW5nVXRpbC5pbnNlcnRfbnRoKGNvbCwgY2FyZXRfc3RyLCBjYXJldF9yb3cpXSBAIHN1ZlxuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpID0+IHByZSBAIFtjYXJldF9yb3cgKysgY2FyZXRfc3RyXSBAIHN1ZlxuICAgIHwgXyA9PiByb3dzXG4gICAgfVxuICB8IE5vbmUgPT4gcm93c1xuICB9O1xufTtcblxubGV0IHByZXR0eV9wcmludCA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogc3RyaW5nID0+XG4gIHRvX3Jvd3MoXG4gICAgfmhvbGVzPU5vbmUsXG4gICAgfm1lYXN1cmVkLFxuICAgIH5jYXJldD1Ob25lLFxuICAgIH5pbmRlbnQ9XCIgXCIsXG4gICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXFxuXCIpO1xuXG5sZXQgdG9fc3RyaW5nX2VkaXRvciA9XG4gICAgKH5ob2xlczogb3B0aW9uKHN0cmluZyk9U29tZShcIlwiKSwgZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5ob2xlcyxcbiAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgfmNhcmV0PU5vbmUsXG4gICAgfmluZGVudD1cIlwiLFxuICAgIH5zZWdtZW50PXNlZ19vZl96aXAoZWRpdG9yLnN0YXRlLnppcHBlciksXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX3N0cmluZ19zZWxlY3Rpb24gPSAoZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5tZWFzdXJlZD1lZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZCxcbiAgICB+Y2FyZXQ9Tm9uZSxcbiAgICB+aW5kZW50PVwiIFwiLFxuICAgIH5ob2xlcz1Ob25lLFxuICAgIH5zZWdtZW50PWVkaXRvci5zdGF0ZS56aXBwZXIuc2VsZWN0aW9uLmNvbnRlbnQsXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX2xvZyA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogdCA9PiB7XG4gIGNvZGU6XG4gICAgdG9fcm93cyhcbiAgICAgIH5ob2xlcz1Ob25lLFxuICAgICAgfm1lYXN1cmVkLFxuICAgICAgfmNhcmV0PVNvbWUoWmlwcGVyLmNhcmV0X3BvaW50KG1lYXN1cmVkLCB6KSksXG4gICAgICB+aW5kZW50PVwiIFwiLFxuICAgICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgICApLFxuICBzZWxlY3Rpb246IHouc2VsZWN0aW9uLmNvbnRlbnQgfD4gb2Zfc2VnbWVudCh+aG9sZXM9Tm9uZSkgfD4gbGluZXNfdG9fbGlzdCxcbiAgYmFja3BhY2s6XG4gICAgTGlzdC5tYXAoXG4gICAgICAoczogU2VsZWN0aW9uLnQpID0+XG4gICAgICAgIHMuY29udGVudCB8PiBvZl9zZWdtZW50KH5ob2xlcz1Ob25lKSB8PiBsaW5lc190b19saXN0LFxuICAgICAgei5iYWNrcGFjayxcbiAgICApLFxufTtcblxubGV0IHRvX2xvZ19mbGF0ID0gKH5tZWFzdXJlZCwgejogWmlwcGVyLnQpOiBzdHJpbmcgPT4ge1xuICBsZXQge2NvZGUsIHNlbGVjdGlvbiwgYmFja3BhY2t9ID0gdG9fbG9nKH5tZWFzdXJlZCwgeik7XG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwiQ09ERTpcXG4lc1xcblNFTEVDVElPTjpcXG4lc1xcbiVzXFxuXCIsXG4gICAgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBjb2RlKSxcbiAgICBTdHJpbmcuY29uY2F0KFwiXFxuXCIsIHNlbGVjdGlvbiksXG4gICAgYmFja3BhY2tcbiAgICB8PiBMaXN0Lm1hcGkoKGksIGIpID0+XG4gICAgICAgICBQcmludGYuc3ByaW50ZihcIkJQKCVkKTpcXG4gJXNcXG5cIiwgaSwgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBiKSlcbiAgICAgICApXG4gICAgfD4gU3RyaW5nLmNvbmNhdChcIlwiKSxcbiAgKTtcbn07XG5cbmxldCB6aXBwZXJfb2Zfc3RyaW5nID1cbiAgICAofnppcHBlcl9pbml0PVppcHBlci5pbml0KCksIHN0cjogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gIGxldCBpbnNlcnQgPSAoejogb3B0aW9uKFppcHBlci50KSwgYzogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gejtcbiAgICB0cnkoYyA9PSBcIlxcclwiID8gU29tZSh6KSA6IEluc2VydC5nbyhjID09IFwiXFxuXCIgPyBGb3JtLmxpbmVicmVhayA6IGMsIHopKSB7XG4gICAgfCBleG4gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJXQVJOOiB6aXBwZXJfb2Zfc3RyaW5nOiBcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgICBOb25lO1xuICAgIH07XG4gIH07XG4gIHN0ciB8PiBVdGlsLlN0cmluZ1V0aWwudG9fbGlzdCB8PiBMaXN0LmZvbGRfbGVmdChpbnNlcnQsIFNvbWUoemlwcGVyX2luaXQpKTtcbn07XG5cbmxldCBwYXN0ZV9pbnRvX3ppcCA9ICh6OiBaaXBwZXIudCwgc3RyOiBzdHJpbmcpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgLyogSEFDSyhhbmRyZXcpOiBUaGVzZSB0d28gcGVyZm9ybSBjYWxscyBhcmUgYSBoYWNrIHRvXG4gICAgIGRlYWwgd2l0aCB0aGUgZmFjdCB0aGF0IHBhc3Rpbmcgc29tZXRoaW5nIGxpa2UgXCJsZXQgYSA9IGIgaW5cIlxuICAgICB3b24ndCB0cmlnZ2VyIHRoZSBiYXJmaW5nIG9mIHRoZSBcImluXCI7IHRvIHRyaWdnZXIgdGhpcywgd2VcbiAgICAgaW5zZXJ0IGEgc3BhY2UsIGFuZCB0aGVuIHdlIGltbWVkaWF0ZWx5IGRlbGV0ZSBpdC4gKi9cbiAgbGV0IHNldHRpbmdzID0gQ29yZVNldHRpbmdzLm9mZjtcbiAgbGV0KiB6ID0gemlwcGVyX29mX3N0cmluZyh+emlwcGVyX2luaXQ9eiwgc3RyKTtcbiAgc3dpdGNoIChQZXJmb3JtLmdvX3oofnNldHRpbmdzLCBJbnNlcnQoXCIgXCIpLCB6KSkge1xuICB8IEVycm9yKF8pID0+IE5vbmVcbiAgfCBPayh6KSA9PlxuICAgIHN3aXRjaCAoUGVyZm9ybS5nb196KH5zZXR0aW5ncywgRGVzdHJ1Y3QoTGVmdCksIHopKSB7XG4gICAgfCBFcnJvcihfKSA9PiBOb25lXG4gICAgfCBPayh6KSA9PiBTb21lKHopXG4gICAgfVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgemlwcGVyOiBzdHJpbmcsXG4gIGJhY2t1cF90ZXh0OiBzdHJpbmcsXG59O1xuXG5sZXQgcGVyc2lzdCA9ICh6aXBwZXI6IFppcHBlci50KSA9PiB7XG4gIHtcbiAgICB6aXBwZXI6IFppcHBlci5zZXhwX29mX3QoemlwcGVyKSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nLFxuICAgIGJhY2t1cF90ZXh0OiBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpLFxuICB9O1xufTtcblxubGV0IHVucGVyc2lzdCA9IChwZXJzaXN0ZWQ6IHQpID0+XG4gIHRyeShTZXhwbGliLlNleHAub2Zfc3RyaW5nKHBlcnNpc3RlZC56aXBwZXIpIHw+IFppcHBlci50X29mX3NleHApIHtcbiAgfCBfID0+XG4gICAgcHJpbnRfZW5kbGluZShcbiAgICAgIFwiV2FybmluZzogdXNpbmcgYmFja3VwIHRleHQhIFNlcmlhbGl6YXRpb24gbWF5IGJlIGZvciBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhemVsLlwiLFxuICAgICk7XG4gICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcocGVyc2lzdGVkLmJhY2t1cF90ZXh0KSkge1xuICAgIHwgTm9uZSA9PiBaaXBwZXIuaW5pdCgpXG4gICAgfCBTb21lKHopID0+IHpcbiAgICB9O1xuICB9O1xuXG5sZXQgc2VyaWFsaXplID0gKHppcHBlcjogWmlwcGVyLnQpID0+IHtcbiAgcGVyc2lzdCh6aXBwZXIpIHw+IHlvanNvbl9vZl90IHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgbGV0IHBlcnNpc3RlZCA9IGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gdF9vZl95b2pzb247XG4gIHVucGVyc2lzdChwZXJzaXN0ZWQpO1xufTtcbiIsIm9wZW4gVXRpbDtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgbGV0IGQ6IERpcmVjdGlvbi50O1xuICBsZXQgb3JpZW50OiAoKCdhLCAnYSkpID0+ICgnYSwgJ2EpO1xufTtcblxubW9kdWxlIEw6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLkxlZnQ7XG4gIGxldCBvcmllbnQgPSAoKGwsIHIpKSA9PiAobCwgcik7XG59O1xubW9kdWxlIFI6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLlJpZ2h0O1xuICBsZXQgb3JpZW50ID0gKChsLCByKSkgPT4gKHIsIGwpO1xufTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXZhbF9yZXN1bHQgPSB7XG4gIGVsYWI6IERIRXhwLnQsXG4gIGV2YWx1YXRpb246IFByb2dyYW1SZXN1bHQudCxcbiAgcHJldmlvdXM6IFByb2dyYW1SZXN1bHQudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTm9FbGFiXG4gIHwgRXZhbHVhdGlvbihldmFsX3Jlc3VsdClcbiAgfCBTdGVwcGVyKFN0ZXBwZXIudCk7XG5cbmxldCBpbml0X2V2YWwgPSBlbGFiID0+XG4gIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSk7XG5cbmxldCB1cGRhdGVfZWxhYiA9IGVsYWIgPT5cbiAgZnVuXG4gIHwgTm9FbGFiID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmd9KVxuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb24sIF99KSA9PlxuICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBldmFsdWF0aW9ufSlcbiAgfCBTdGVwcGVyKHtlbGFiOiBlbGFiMiwgX30pIGFzIHMgd2hlbiBESEV4cC5mYXN0X2VxdWFsKGVsYWIsIGVsYWIyKSA9PiBzXG4gIHwgU3RlcHBlcihfKSA9PiBTdGVwcGVyKFN0ZXBwZXIuaW5pdChlbGFiKSk7XG5cbmxldCB1cGRhdGVfc3RlcHBlciA9IGYgPT5cbiAgZnVuXG4gIHwgTm9FbGFiIGFzIGVcbiAgfCBFdmFsdWF0aW9uKF8pIGFzIGUgPT4gZVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlcihmKHMpKTtcblxubGV0IHN0ZXBfZm9yd2FyZCA9IChpZHg6IGludCwgbXI6IHQpID0+XG4gIG1yIHw+IHVwZGF0ZV9zdGVwcGVyKFN0ZXBwZXIuc3RlcF9wZW5kaW5nKGlkeCkpO1xuXG5sZXQgc3RlcF9iYWNrd2FyZCA9ICh+c2V0dGluZ3MsIG1yOiB0KSA9PlxuICBtciB8PiB1cGRhdGVfc3RlcHBlcihTdGVwcGVyLnN0ZXBfYmFja3dhcmQofnNldHRpbmdzKSk7XG5cbmxldCBydW5fcGVuZGluZyA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50KSA9PlxuICBmdW5cbiAgfCBOb0VsYWIgPT4gTm9FbGFiXG4gIHwgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXN9KSA9PlxuICAgIEV2YWx1YXRpb24oe1xuICAgICAgZWxhYixcbiAgICAgIHByZXZpb3VzLFxuICAgICAgZXZhbHVhdGlvbjogSW50ZXJmYWNlLmV2YWx1YXRlKH5zZXR0aW5ncywgZWxhYiksXG4gICAgfSlcbiAgfCBFdmFsdWF0aW9uKF8pIGFzIGUgPT4gZVxuICB8IFN0ZXBwZXIocykgPT5cbiAgICBTdGVwcGVyKFN0ZXBwZXIuZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3M9c2V0dGluZ3MuZXZhbHVhdGlvbiwgcykpO1xuXG5sZXQgdGltZW91dDogdCA9PiB0ID1cbiAgZnVuXG4gIHwgTm9FbGFiID0+IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb24sIF99IGFzIGUpID0+XG4gICAgRXZhbHVhdGlvbih7Li4uZSwgZXZhbHVhdGlvbjogUmVzdWx0RmFpbChUaW1lb3V0KSwgcHJldmlvdXM6IGV2YWx1YXRpb259KVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlcihTdGVwcGVyLnRpbWVvdXQocykpO1xuXG5sZXQgdG9nZ2xlX3N0ZXBwZXIgPVxuICBmdW5cbiAgfCBOb0VsYWIgPT4gTm9FbGFiXG4gIHwgRXZhbHVhdGlvbih7ZWxhYiwgX30pID0+IFN0ZXBwZXIoU3RlcHBlci5pbml0KGVsYWIpKVxuICB8IFN0ZXBwZXIoe2VsYWIsIF99KSA9PlxuICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSk7XG5cbmxldCB0ZXN0X3Jlc3VsdHMgPSAocmVzdWx0OiB0KSA9PlxuICBzd2l0Y2ggKHJlc3VsdCkge1xuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IFJlc3VsdE9rKHByKSwgX30pXG4gIHwgRXZhbHVhdGlvbih7XG4gICAgICBldmFsdWF0aW9uOiBPZmYoXykgfCBSZXN1bHRGYWlsKF8pIHwgUmVzdWx0UGVuZGluZyxcbiAgICAgIHByZXZpb3VzOiBSZXN1bHRPayhwciksXG4gICAgICBfLFxuICAgIH0pID0+XG4gICAgcHJcbiAgICB8PiBQcm9ncmFtUmVzdWx0LmdldF9zdGF0ZVxuICAgIHw+IEV2YWx1YXRvclN0YXRlLmdldF90ZXN0c1xuICAgIHw+IFRlc3RSZXN1bHRzLm1rX3Jlc3VsdHNcbiAgICB8PiBPcHRpb24uc29tZVxuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IE9mZihfKSB8IFJlc3VsdEZhaWwoXykgfCBSZXN1bHRQZW5kaW5nLCBffSlcbiAgfCBOb0VsYWJcbiAgfCBTdGVwcGVyKF8pID0+IE5vbmVcbiAgfTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50ID1cbiAgfCBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihTdGVwcGVyLnBlcnNpc3RlbnQpO1xuXG5sZXQgdG9fcGVyc2lzdGVudDogdCA9PiBwZXJzaXN0ZW50ID1cbiAgZnVuXG4gIHwgTm9FbGFiXG4gIHwgRXZhbHVhdGlvbihfKSA9PiBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIudG9fcGVyc2lzdGVudChzKSk7XG5cbmxldCBvZl9wZXJzaXN0ZW50OiBwZXJzaXN0ZW50ID0+IHQgPVxuICBmdW5cbiAgfCBFdmFsdWF0aW9uID0+IE5vRWxhYlxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlcihTdGVwcGVyLmZyb21fcGVyc2lzdGVudChzKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKlxuIE1vZGVsUmVzdWx0cyBpcyB1c2VkIHRvIHN0b3JlIHRoZSByZXN1bHRzIG9mXG4gZXZhbHVhdGlvbnMgcmVxdWVzdGVkIGJ5IHRoZSBjdXJyZW50IGVkaXRvciBtb2RlLFxuIHdpdGggdGhlIGtleSBkaXN0aW5ndWlzaGluZyB0aGVzZSByZXF1ZXN0cy5cblxuIFNlZSB0aGUgU2Nob29sRXhlcmNpc2UgbW9kdWxlIGZvciBhbiBleGFtcGxlLlxuICovXG5tb2R1bGUgS2V5ID0ge1xuICBpbmNsdWRlIFN0cmluZztcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBzdHJpbmc7XG59O1xuXG5tb2R1bGUgTSA9IFV0aWwuTWFwVXRpbC5NYWtlKEtleSk7XG5pbmNsdWRlIE07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE0udChNb2RlbFJlc3VsdC50KTtcblxubGV0IGluaXRfZXZhbCA9IChkczogbGlzdCgoS2V5LnQsIERIRXhwLnQpKSk6IHQgPT5cbiAgZHMgfD4gTGlzdC50b19zZXEgfD4gb2Zfc2VxIHw+IG1hcChNb2RlbFJlc3VsdC5pbml0X2V2YWwpO1xuXG5sZXQgdXBkYXRlX2VsYWJzID1cbiAgTGlzdC5mb2xkX3JpZ2h0KCgoaywgZWxhYiksIGFjYykgPT5cbiAgICB1cGRhdGUoXG4gICAgICBrLFxuICAgICAgdiA9PlxuICAgICAgICBTb21lKFxuICAgICAgICAgIHZcbiAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9TW9kZWxSZXN1bHQuTm9FbGFiKVxuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnVwZGF0ZV9lbGFiKGVsYWIpLFxuICAgICAgICApLFxuICAgICAgYWNjLFxuICAgIClcbiAgKTtcblxubGV0IGxvb2t1cCA9IChyZXN1bHRzOiB0LCBrZXk6IEtleS50KSA9PiBmaW5kX29wdChrZXksIHJlc3VsdHMpO1xuXG5sZXQgcnVuX3BlbmRpbmcgPSAofnNldHRpbmdzKSA9PiBNLm1hcChNb2RlbFJlc3VsdC5ydW5fcGVuZGluZyh+c2V0dGluZ3MpKTtcblxubGV0IHRpbWVvdXRfYWxsID0gbWFwKE1vZGVsUmVzdWx0LnRpbWVvdXQpO1xuXG5sZXQgYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0ID1cbiAgICAocmVzdWx0czogdCwgKGtleTogS2V5LnQsIGVsYWI6IERIRXhwLnQpKVxuICAgIDogb3B0aW9uKChLZXkudCwgTW9kZWxSZXN1bHQudCkpID0+XG4gIHN3aXRjaCAobG9va3VwKHJlc3VsdHMsIGtleSkpIHtcbiAgfCBTb21lKFN0ZXBwZXIoXykpID0+IE5vbmVcbiAgfCBTb21lKEV2YWx1YXRpb24oe2V2YWx1YXRpb246IHByZXZpb3VzLCBffSkpID0+XG4gICAgU29tZSgoa2V5LCBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91c30pKSlcbiAgfCBTb21lKE5vRWxhYilcbiAgfCBOb25lID0+XG4gICAgU29tZSgoXG4gICAgICBrZXksXG4gICAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91czogUmVzdWx0UGVuZGluZ30pLFxuICAgICkpXG4gIH07XG5cbmxldCBzdGVwcGVyX3Jlc3VsdF9vcHQgPVxuICAgICgoa2V5OiBLZXkudCwgcjogTW9kZWxSZXN1bHQudCkpOiBvcHRpb24oKEtleS50LCBNb2RlbFJlc3VsdC50KSkgPT5cbiAgc3dpdGNoIChyKSB7XG4gIHwgU3RlcHBlcihfKSA9PiBTb21lKChrZXksIHIpKVxuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgdG9fZXZhbHVhdGUgPSAocmVzdWx0czogdCwgZWxhYnM6IGxpc3QoKEtleS50LCBESEV4cC50KSkpOiB0ID0+XG4gIGVsYWJzXG4gIHw+IExpc3QuZmlsdGVyX21hcChhZHZhbmNlX2V2YWx1YXRvcl9yZXN1bHQocmVzdWx0cykpXG4gIHw+IExpc3QudG9fc2VxXG4gIHw+IG9mX3NlcTtcblxubGV0IHRvX3N0ZXAgPSAocmVzdWx0czogdCk6IHQgPT5cbiAgYmluZGluZ3MocmVzdWx0cylcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKHN0ZXBwZXJfcmVzdWx0X29wdClcbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gb2Zfc2VxO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudCk7XG5cbmxldCB1X29mID0gKCh1LCBfKTogdCk6IE1ldGFWYXIudCA9PiB1O1xubGV0IGlfb2YgPSAoKF8sIGkpOiB0KTogSG9sZUluc3RhbmNlSWQudCA9PiBpO1xuXG5sZXQgcmVzdWx0OiB0ID0gKElkLmludmFsaWQsIDApO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gbGlzdCgoSG9sZUluc3RhbmNlLnQsIFZhci50KSk7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IExcbiAgfCBSO1xuXG5sZXQgdG9fc3RyaW5nID1cbiAgZnVuXG4gIHwgTCA9PiBcIkxcIlxuICB8IFIgPT4gXCJSXCI7XG5cbmxldCBwaWNrID0gKHNpZGUsIGwsIHIpID0+XG4gIHN3aXRjaCAoc2lkZSkge1xuICB8IEwgPT4gbFxuICB8IFIgPT4gclxuICB9O1xuIiwidHlwZSB0ID0gSWQuTWFwLnQobGlzdChpbnQpKTtcblxubGV0IHQgPSByZWYoSWQuTWFwLmVtcHR5KTtcblxubGV0IGNvbnRhaW5zID0gKGlkLCBpKTogYm9vbCA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgdF4pKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUoaXMpID0+IExpc3QubWVtKGksIGlzKVxuICB9O1xuXG5sZXQgY2xlYXIgPSAoKSA9PiB7XG4gIHQgOj0gSWQuTWFwLmVtcHR5O1xufTtcblxuLy8gYXNzdW1lcyBzZWcgaXMgZnVsbHkgYXNzZW1ibGVkXG5sZXQgc2V0ID0gKHNlZzogQmFzZS5zZWdtZW50KTogdW5pdCA9PlxuICB0IDo9XG4gICAgc2VnXG4gICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICAgICAgIGxldCAobF9zaGFyZCwgcl9zaGFyZCkgPSBUaWxlLihsX3NoYXJkKHQpLCByX3NoYXJkKHQpKTtcbiAgICAgICAgICAgICBsZXQgbCA9IGxfc2hhcmQgPT0gMCA/IFtdIDogW2xfc2hhcmQgLSAxXTtcbiAgICAgICAgICAgICBsZXQgciA9IHJfc2hhcmQgPT0gTGlzdC5sZW5ndGgodC5sYWJlbCkgLSAxID8gW10gOiBbcl9zaGFyZF07XG4gICAgICAgICAgICAgbGV0IGxyID0gbCBAIHI7XG4gICAgICAgICAgICAgbHIgPT0gW10gPyBOb25lIDogU29tZSgodC5pZCwgbCBAIHIpKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfCBHcm91dChfKVxuICAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBJZC5NYXAub2Zfc2VxO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0XyA9IChWYXIudCwgSG9sZUluc3RhbmNlLnQpXG5hbmQgdCA9IGxpc3QodF8pO1xuXG5sZXQgdG9fbGlzdCA9IChoY3A6IHQpOiBsaXN0KHRfKSA9PiBoY3A7XG5sZXQgc2luZ2xldG9uID0gKHBhcmVudDogdF8pID0+IFtwYXJlbnRdO1xuXG5sZXQgYWRkX3BhcmVudCA9IChoY3A6IHQsIG5ld19wYXJlbnQ6IHRfKSA9PiBbXG4gIG5ld19wYXJlbnQsXG4gIC4uLkxpc3QuZmlsdGVyKHAgPT4gcCAhPSBuZXdfcGFyZW50LCBoY3ApLFxuXTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE1ldGFWYXJNYXAudChsaXN0KChDbG9zdXJlRW52aXJvbm1lbnQudCwgSG9sZUluc3RhbmNlUGFyZW50cy50KSkpO1xuXG5sZXQgZW1wdHk6IHQgPSBNZXRhVmFyTWFwLmVtcHR5O1xuXG5sZXQgbnVtX2luc3RhbmNlcyA9IChoaWk6IHQsIHU6IE1ldGFWYXIudCk6IGludCA9PlxuICBoaWlcbiAgfD4gTWV0YVZhck1hcC5maW5kX29wdCh1KVxuICB8PiBPcHRpb24ubWFwKGhpcyA9PiBMaXN0Lmxlbmd0aChoaXMpKVxuICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9MCk7XG5cbmxldCBmaW5kX2luc3RhbmNlID1cbiAgICAoaGlpOiB0LCB1OiBNZXRhVmFyLnQsIGk6IEhvbGVJbnN0YW5jZUlkLnQpXG4gICAgOiBvcHRpb24oKENsb3N1cmVFbnZpcm9ubWVudC50LCBIb2xlSW5zdGFuY2VQYXJlbnRzLnQpKSA9PiB7XG4gIHN3aXRjaCAoaGlpIHw+IE1ldGFWYXJNYXAuZmluZF9vcHQodSkpIHtcbiAgfCBTb21lKGhpcykgPT4gTGlzdC5udGhfb3B0KGhpcywgaSlcbiAgfCBOb25lID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBhZGRfcGFyZW50ID1cbiAgICAoKHUsIGkpOiBIb2xlSW5zdGFuY2UudCwgcGFyZW50OiBIb2xlSW5zdGFuY2VQYXJlbnRzLnRfLCBoaWk6IHQpOiB0ID0+IHtcbiAgbGV0IHVfaW5zdGFuY2VzID0gaGlpIHw+IE1ldGFWYXJNYXAuZmluZCh1KTtcbiAgaGlpXG4gIHw+IE1ldGFWYXJNYXAuYWRkKFxuICAgICAgIHUsXG4gICAgICAgdV9pbnN0YW5jZXNcbiAgICAgICB8PiBMaXN0Lm1hcGkoKGknLCAoZW52LCBwYXJlbnRzKSkgPT5cbiAgICAgICAgICAgIGlmIChpJyA9PSBpKSB7XG4gICAgICAgICAgICAgIChlbnYsIHBhcmVudCB8PiBIb2xlSW5zdGFuY2VQYXJlbnRzLmFkZF9wYXJlbnQocGFyZW50cykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgKGVudiwgcGFyZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKSxcbiAgICAgKTtcbn07XG4iLCIvKlxuICBWYXJpYWJsZSBuYW1lczpcbiAgICBbaGlpXSA9PiBcImhvbGUgaW5zdGFuY2UgaW5mb1wiXG4gICAgW2hpc10gPT4gXCJob2xlIGluc3RhbmNlc1wiXG4gICAgW2hpcF0gPT4gXCJob2xlIGluc3RhbmNlIHBhcmVudHNcIlxuXG4gIFRPRE86IENsZWFyIGV4cGxhbmF0aW9uIG9mIG5hbWluZ3MsIHByb2JhYmx5IGluIG92ZXJhbGwgZG9jLlxuICovXG5cbi8qKlxuICBNYXAgYXNzb2NpYXRlcyBhIGhvbGUgaWQgdG8gYSBob2xlIGluc3RhbmNlIGlkLCBob2xlIGNsb3N1cmUgZW52aXJvbm1lbnQsIGFuZFxuICBob2xlIGluc3RhbmNlIHBhcmVudHMuXG4gKi9cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9XG4gIE1ldGFWYXJNYXAudChcbiAgICBFbnZpcm9ubWVudElkTWFwLnQoXG4gICAgICAoSG9sZUluc3RhbmNlSWQudCwgQ2xvc3VyZUVudmlyb25tZW50LnQsIEhvbGVJbnN0YW5jZVBhcmVudHMudCksXG4gICAgKSxcbiAgKTtcblxubGV0IGVtcHR5OiB0ID0gTWV0YVZhck1hcC5lbXB0eTtcblxubGV0IGFkZF9pbnN0YW5jZSA9XG4gICAgKGhpaTogdCwgdTogTWV0YVZhci50LCBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50KTogKHQsIEhvbGVJbnN0YW5jZUlkLnQpID0+IHtcbiAgbGV0IGVpID0gZW52IHw+IENsb3N1cmVFbnZpcm9ubWVudC5pZF9vZjtcbiAgc3dpdGNoIChoaWkgfD4gTWV0YVZhck1hcC5maW5kX29wdCh1KSkge1xuICAvKiBIb2xlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYXAuICovXG4gIHwgU29tZShoaXMpID0+XG4gICAgc3dpdGNoIChoaXMgfD4gRW52aXJvbm1lbnRJZE1hcC5maW5kX29wdChlaSkpIHtcbiAgICAvKiBIb2xlIGluc3RhbmNlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYXAsIHNpbXBseSByZXR1cm4gdGhlIGhvbGUgaW5zdGFuY2VcbiAgICAgKiBpZC4gKi9cbiAgICB8IFNvbWUoKGksIF8sIF8pKSA9PiAoaGlpLCBpKVxuICAgIC8qIEhvbGUgZXhpc3RzIGluIHRoZSBpbmZvIG1hcCwgYnV0IGluc3RhbmNlIGRvZXNuJ3Q7IGNyZWF0ZSBhIG5ldyBob2xlXG4gICAgICogaW5zdGFuY2Ugd2l0aCBuZXh0IHVuaXF1ZSBpbnN0YW5jZSBpZC4gKi9cbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBpID0gaGlzIHw+IEVudmlyb25tZW50SWRNYXAuY2FyZGluYWw7XG4gICAgICBsZXQgaGlzID0gaGlzIHw+IEVudmlyb25tZW50SWRNYXAuYWRkKGVpLCAoaSwgZW52LCBbXSkpO1xuICAgICAgbGV0IGhpaSA9IGhpaSB8PiBNZXRhVmFyTWFwLmFkZCh1LCBoaXMpO1xuICAgICAgKGhpaSwgaSk7XG4gICAgfVxuICAvKiBIb2xlIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIG1hcC4gKi9cbiAgfCBOb25lID0+XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBoaXMgPSBFbnZpcm9ubWVudElkTWFwLnNpbmdsZXRvbihlaSwgKDAsIGVudiwgW10pKTtcbiAgICBsZXQgaGlpID0gaGlpIHw+IE1ldGFWYXJNYXAuYWRkKHUsIGhpcyk7XG4gICAgKGhpaSwgaSk7XG4gIH07XG59O1xuXG5sZXQgdG9faG9sZV9pbnN0YW5jZV9pbmZvID0gKGhpaTogdCk6IEhvbGVJbnN0YW5jZUluZm8udCA9PlxuICAvKiBGb3IgZWFjaCBob2xlLCBhcnJhbmdlIGluc3RhbmNlcyBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIGhvbGUgaW5zdGFuY2UgaWQuICovXG4gIGhpaVxuICB8PiBNZXRhVmFyTWFwLm1hcChoaXMgPT5cbiAgICAgICBoaXNcbiAgICAgICB8PiBFbnZpcm9ubWVudElkTWFwLmJpbmRpbmdzXG4gICAgICAgfD4gTGlzdC5zb3J0KCgoXywgKGkxLCBfLCBfKSksIChfLCAoaTIsIF8sIF8pKSkgPT5cbiAgICAgICAgICAgIGNvbXBhcmUoaTEsIGkyKVxuICAgICAgICAgIClcbiAgICAgICB8PiBMaXN0Lm1hcCgoKF8sIChfLCBlbnYsIGhpcCkpKSA9PiAoZW52LCBoaXApKVxuICAgICApO1xuIiwibW9kdWxlIFBwTW9uYWQgPSB7XG4gIGluY2x1ZGUgVXRpbC5TdGF0ZU1vbmFkLk1ha2Uoe1xuICAgIFtAZGVyaXZpbmcgc2V4cF1cbiAgICB0eXBlIHQgPSAoRW52aXJvbm1lbnRJZE1hcC50KENsb3N1cmVFbnZpcm9ubWVudC50KSwgSG9sZUluc3RhbmNlSW5mb18udCk7XG4gIH0pO1xuXG4gIG9wZW4gU3ludGF4O1xuXG4gIGxldCBnZXRfcGUgPSBnZXQgPj58ICgoKHBlLCBfKSkgPT4gcGUpO1xuICBsZXQgcGVfYWRkID0gKGVpLCBlbnYpID0+XG4gICAgbW9kaWZ5KCgocGUsIGhpaSkpID0+IChwZSB8PiBFbnZpcm9ubWVudElkTWFwLmFkZChlaSwgZW52KSwgaGlpKSk7XG5cbiAgbGV0IGhpaV9hZGRfaW5zdGFuY2UgPSAodSwgZW52KSA9PlxuICAgIG1vZGlmeScoKChwZSwgaGlpKSkgPT4ge1xuICAgICAgbGV0IChoaWksIGkpID0gSG9sZUluc3RhbmNlSW5mb18uYWRkX2luc3RhbmNlKGhpaSwgdSwgZW52KTtcbiAgICAgIChpLCAocGUsIGhpaSkpO1xuICAgIH0pO1xufTtcblxub3BlbiBQcE1vbmFkO1xub3BlbiBQcE1vbmFkLlN5bnRheDtcbm9wZW4gREhFeHA7XG5cbnR5cGUgbSgnYSkgPSBQcE1vbmFkLnQoJ2EpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yID1cbiAgfCBDbG9zdXJlSW5zaWRlQ2xvc3VyZVxuICB8IEZpeEZPdXRzaWRlQ2xvc3VyZUVudlxuICB8IFVuZXZhbE91dHNpZGVDbG9zdXJlXG4gIHwgSW52YWxpZENsb3N1cmVCb2R5XG4gIHwgUG9zdHByb2Nlc3NlZE5vbkhvbGVJbkNsb3N1cmVcbiAgfCBQb3N0cHJvY2Vzc2VkSG9sZU91dHNpZGVDbG9zdXJlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG5leGNlcHRpb24gRXhjZXB0aW9uKGVycm9yKTtcblxuLyoqXG4gIFBvc3Rwcm9jZXNzIGluc2lkZSBldmFsdWF0aW9uIGJvdW5kYXJ5LlxuICovXG5sZXQgcmVjIHBwX2V2YWwgPSAoZDogREhFeHAudCk6IG0oREhFeHAudCkgPT5cbiAgc3dpdGNoIChkKSB7XG4gIC8qIE5vbi1ob2xlIGV4cHJlc3Npb25zOiByZWN1cnNlIHRocm91Z2ggc3ViZXhwcmVzc2lvbnMgKi9cbiAgfCBUZXN0KF8pXG4gIHwgQm9vbExpdChfKVxuICB8IEludExpdChfKVxuICB8IEZsb2F0TGl0KF8pXG4gIHwgU3RyaW5nTGl0KF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZCB8PiByZXR1cm5cblxuICB8IFNlcXVlbmNlKGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIGxldCsgZDInID0gcHBfZXZhbChkMik7XG4gICAgU2VxdWVuY2UoZDEnLCBkMicpO1xuXG4gIHwgRmlsdGVyKGYsIGRib2R5KSA9PlxuICAgIGxldCsgZGJvZHknID0gcHBfZXZhbChkYm9keSk7XG4gICAgRmlsdGVyKGYsIGRib2R5Jyk7XG5cbiAgfCBBcChkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF9ldmFsKGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX2V2YWwoZDIpO1xuICAgIEFwKGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBBcEJ1aWx0aW4oZiwgZDEpID0+XG4gICAgbGV0KiBkMScgPSBwcF9ldmFsKGQxKTtcbiAgICBBcEJ1aWx0aW4oZiwgZDEnKSB8PiByZXR1cm47XG5cbiAgfCBCaW5Cb29sT3Aob3AsIGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIGxldCogZDInID0gcHBfZXZhbChkMik7XG4gICAgQmluQm9vbE9wKG9wLCBkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgQnVpbHRpbkZ1bihmKSA9PiBCdWlsdGluRnVuKGYpIHw+IHJldHVyblxuXG4gIHwgQmluSW50T3Aob3AsIGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIGxldCogZDInID0gcHBfZXZhbChkMik7XG4gICAgQmluSW50T3Aob3AsIGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBCaW5GbG9hdE9wKG9wLCBkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF9ldmFsKGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX2V2YWwoZDIpO1xuICAgIEJpbkZsb2F0T3Aob3AsIGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBCaW5TdHJpbmdPcChvcCwgZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfZXZhbChkMSk7XG4gICAgbGV0KiBkMicgPSBwcF9ldmFsKGQyKTtcbiAgICBCaW5TdHJpbmdPcChvcCwgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IENvbnMoZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfZXZhbChkMSk7XG4gICAgbGV0KiBkMicgPSBwcF9ldmFsKGQyKTtcbiAgICBDb25zKGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBMaXN0Q29uY2F0KGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIGxldCogZDInID0gcHBfZXZhbChkMik7XG4gICAgTGlzdENvbmNhdChkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgTGlzdExpdChhLCBiLCBjLCBkcykgPT5cbiAgICBsZXQrIGRzID1cbiAgICAgIGRzXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKGRzLCBkKSA9PiB7XG4gICAgICAgICAgICAgbGV0KiBkcyA9IGRzO1xuICAgICAgICAgICAgIGxldCsgZCA9IHBwX2V2YWwoZCk7XG4gICAgICAgICAgICAgZHMgQCBbZF07XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgIHJldHVybihbXSksXG4gICAgICAgICApO1xuICAgIExpc3RMaXQoYSwgYiwgYywgZHMpO1xuXG4gIHwgVHVwbGUoZHMpID0+XG4gICAgbGV0KyBkcyA9XG4gICAgICBkc1xuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChkcywgZCkgPT4ge1xuICAgICAgICAgICAgIGxldCogZHMgPSBkcztcbiAgICAgICAgICAgICBsZXQrIGQgPSBwcF9ldmFsKGQpO1xuICAgICAgICAgICAgIGRzIEAgW2RdO1xuICAgICAgICAgICB9LFxuICAgICAgICAgICByZXR1cm4oW10pLFxuICAgICAgICAgKTtcbiAgICBUdXBsZShkcyk7XG5cbiAgfCBQcmooZCwgbikgPT5cbiAgICBsZXQrIGQgPSBwcF9ldmFsKGQpO1xuICAgIFByaihkLCBuKTtcblxuICB8IENhc3QoZCcsIHR5MSwgdHkyKSA9PlxuICAgIGxldCogZCcnID0gcHBfZXZhbChkJyk7XG4gICAgQ2FzdChkJycsIHR5MSwgdHkyKSB8PiByZXR1cm47XG5cbiAgfCBGYWlsZWRDYXN0KGQnLCB0eTEsIHR5MikgPT5cbiAgICBsZXQqIGQnJyA9IHBwX2V2YWwoZCcpO1xuICAgIEZhaWxlZENhc3QoZCcnLCB0eTEsIHR5MikgfD4gcmV0dXJuO1xuXG4gIHwgSW52YWxpZE9wZXJhdGlvbihkJywgcmVhc29uKSA9PlxuICAgIGxldCogZCcnID0gcHBfZXZhbChkJyk7XG4gICAgSW52YWxpZE9wZXJhdGlvbihkJycsIHJlYXNvbikgfD4gcmV0dXJuO1xuXG4gIHwgSWZUaGVuRWxzZShjb25zaXN0ZW50LCBjLCBkMSwgZDIpID0+XG4gICAgbGV0KiBjJyA9IHBwX2V2YWwoYyk7XG4gICAgbGV0KiBkMScgPSBwcF9ldmFsKGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX2V2YWwoZDIpO1xuICAgIElmVGhlbkVsc2UoY29uc2lzdGVudCwgYycsIGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgLyogVGhlc2UgZXhwcmVzc2lvbiBmb3JtcyBzaG91bGQgbm90IGV4aXN0IG91dHNpZGUgY2xvc3VyZSBpbiBldmFsdWF0ZWQgcmVzdWx0ICovXG4gIHwgQm91bmRWYXIoXylcbiAgfCBMZXQoXylcbiAgfCBDb25zaXN0ZW50Q2FzZShfKVxuICB8IEZ1bihfKVxuICB8IEVtcHR5SG9sZShfKVxuICB8IE5vbkVtcHR5SG9sZShfKVxuICB8IEV4cGFuZGluZ0tleXdvcmQoXylcbiAgfCBGcmVlVmFyKF8pXG4gIHwgSW52YWxpZFRleHQoXylcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfKSA9PiByYWlzZShFeGNlcHRpb24oVW5ldmFsT3V0c2lkZUNsb3N1cmUpKVxuXG4gIHwgRml4RihfKSA9PiByYWlzZShFeGNlcHRpb24oRml4Rk91dHNpZGVDbG9zdXJlRW52KSlcblxuICAvKiBDbG9zdXJlOiBwb3N0cHJvY2VzcyBlbnZpcm9ubWVudCwgdGhlbiBwb3N0cHJvY2VzcyBgZCdgLlxuXG4gICAgIFNvbWUgcGFydHMgb2YgYGQnYCBtYXkgbGllIGluc2lkZSBhbmQgb3V0c2lkZSB0aGUgZXZhbHVhdGlvbiBib3VuZGFyeSxcbiAgICAgdXNlIGBwcF9ldmFsYCBhbmQgYHBwX3VuZXZhbGAgYXMgbmVjZXNzYXJ5LlxuICAgICAqL1xuICB8IENsb3N1cmUoZW52LCBkKSA9PlxuICAgIGxldCogZW52ID1cbiAgICAgIFV0aWwuVGltZVV0aWwubWVhc3VyZV90aW1lKFwicHBfZXZhbF9lbnYvQ2xvc3VyZVwiLCB0cnVlLCAoKSA9PlxuICAgICAgICBwcF9ldmFsX2VudihlbnYpXG4gICAgICApO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIC8qIE5vbi1ob2xlIGNvbnN0cnVjdHMgaW5zaWRlIGNsb3N1cmVzLiAqL1xuICAgIHwgRnVuKGRwLCB0eSwgZCwgcykgPT5cbiAgICAgIGxldCogZCA9IHBwX3VuZXZhbChlbnYsIGQpO1xuICAgICAgRnVuKGRwLCB0eSwgZCwgcykgfD4gcmV0dXJuO1xuXG4gICAgfCBMZXQoZHAsIGQxLCBkMikgPT5cbiAgICAgIC8qIGQxIHNob3VsZCBhbHJlYWR5IGJlIGV2YWx1YXRlZCwgZDIgaXMgbm90ICovXG4gICAgICBsZXQqIGQxID0gcHBfZXZhbChkMSk7XG4gICAgICBsZXQqIGQyID0gcHBfdW5ldmFsKGVudiwgZDIpO1xuICAgICAgTGV0KGRwLCBkMSwgZDIpIHw+IHJldHVybjtcblxuICAgIHwgQ29uc2lzdGVudENhc2UoQ2FzZShzY3J1dCwgcnVsZXMsIGkpKSA9PlxuICAgICAgLyogc2NydXQgc2hvdWxkIGFscmVhZHkgYmUgZXZhbHVhdGVkLCBydWxlIGJvZGllcyBhcmUgbm90ICovXG4gICAgICBsZXQqIHNjcnV0ID1cbiAgICAgICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJwcF9ldmFsKHNjcnV0KVwiLCB0cnVlLCAoKSA9PlxuICAgICAgICAgIHBwX2V2YWwoc2NydXQpXG4gICAgICAgICk7XG4gICAgICBsZXQqIHJ1bGVzID1cbiAgICAgICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJwcF91bmV2YWxfcnVsZXNcIiwgdHJ1ZSwgKCkgPT5cbiAgICAgICAgICBwcF91bmV2YWxfcnVsZXMoZW52LCBydWxlcylcbiAgICAgICAgKTtcbiAgICAgIENvbnNpc3RlbnRDYXNlKENhc2Uoc2NydXQsIHJ1bGVzLCBpKSkgfD4gcmV0dXJuO1xuXG4gICAgLyogSG9sZSBjb25zdHJ1Y3RzIGluc2lkZSBjbG9zdXJlcy5cblxuICAgICAgIGBOb25FbXB0eUhvbGVgIGFuZCBgSW5jb25zaXN0ZW50QnJhbmNoZXNgIGhhdmUgc3ViZXhwcmVzc2lvbnMgdGhhdFxuICAgICAgIGxpZSBpbnNpZGUgdGhlIGV2YWx1YXRpb24gYm91bmRhcnksIGFuZCBuZWVkIHRvIGJlIGhhbmRsZWQgZGlmZmVyZW50bHlcbiAgICAgICB0aGFuIGluIGBwcF91bmV2YWxgLiBUaGUgb3RoZXIgaG9sZSB0eXBlcyBkb24ndCBoYXZlIGFueSBldmFsdWF0ZWRcbiAgICAgICBzdWJleHByZXNzaW9ucyBhbmQgd2UgY2FuIHVzZSBgcHBfdW5ldmFsYC5cbiAgICAgICAqL1xuICAgIHwgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgXywgZCkgPT5cbiAgICAgIGxldCogZCA9IHBwX2V2YWwoZCk7XG4gICAgICBsZXQqIGkgPSBoaWlfYWRkX2luc3RhbmNlKHUsIGVudik7XG4gICAgICBDbG9zdXJlKGVudiwgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgaSwgZCkpIHw+IHJldHVybjtcblxuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXModSwgXywgQ2FzZShzY3J1dCwgcnVsZXMsIGNhc2VfaSkpID0+XG4gICAgICBsZXQqIHNjcnV0ID0gcHBfZXZhbChzY3J1dCk7XG4gICAgICBsZXQqIGkgPSBoaWlfYWRkX2luc3RhbmNlKHUsIGVudik7XG4gICAgICBDbG9zdXJlKGVudiwgSW5jb25zaXN0ZW50QnJhbmNoZXModSwgaSwgQ2FzZShzY3J1dCwgcnVsZXMsIGNhc2VfaSkpKVxuICAgICAgfD4gcmV0dXJuO1xuXG4gICAgfCBFbXB0eUhvbGUoXylcbiAgICB8IEV4cGFuZGluZ0tleXdvcmQoXylcbiAgICB8IEZyZWVWYXIoXylcbiAgICB8IEludmFsaWRUZXh0KF8pID0+IHBwX3VuZXZhbChlbnYsIGQpXG5cbiAgICAvKiBPdGhlciBleHByZXNzaW9uIGZvcm1zIGNhbm5vdCBiZSBkaXJlY3RseSBpbiBhIGNsb3N1cmUuICovXG4gICAgfCBfID0+IHJhaXNlKEV4Y2VwdGlvbihJbnZhbGlkQ2xvc3VyZUJvZHkpKVxuICAgIH07XG4gIH1cblxuLyogUmVjdXJzZSB0aHJvdWdoIGVudmlyb25tZW50cywgdXNpbmcgbWVtb2l6ZWQgcmVzdWx0IGlmIGF2YWlsYWJsZS4gKi9cbmFuZCBwcF9ldmFsX2VudiA9IChlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50KTogbShDbG9zdXJlRW52aXJvbm1lbnQudCkgPT4ge1xuICBsZXQgZWkgPSBlbnYgfD4gQ2xvc3VyZUVudmlyb25tZW50LmlkX29mO1xuXG4gIGxldCogcGUgPSBnZXRfcGU7XG4gIHN3aXRjaCAocGUgfD4gRW52aXJvbm1lbnRJZE1hcC5maW5kX29wdChlaSkpIHtcbiAgfCBTb21lKGVudikgPT4gZW52IHw+IHJldHVyblxuICB8IE5vbmUgPT5cbiAgICBsZXQqIGVudiA9XG4gICAgICBlbnZcbiAgICAgIHw+IENsb3N1cmVFbnZpcm9ubWVudC5mb2xkKFxuICAgICAgICAgICAoKHgsIGQpLCBlbnYnKSA9PiB7XG4gICAgICAgICAgICAgbGV0KiBlbnYnID0gZW52JztcbiAgICAgICAgICAgICBsZXQqIGQnID1cbiAgICAgICAgICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICAgICAgICAgfCBGaXhGKGYsIHR5LCBkMSkgPT5cbiAgICAgICAgICAgICAgICAgbGV0KyBkMSA9IHBwX3VuZXZhbChlbnYnLCBkMSk7XG4gICAgICAgICAgICAgICAgIEZpeEYoZiwgdHksIGQxKTtcbiAgICAgICAgICAgICAgIHwgZCA9PiBwcF9ldmFsKGQpXG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIENsb3N1cmVFbnZpcm9ubWVudC5leHRlbmQoZW52JywgKHgsIGQnKSkgfD4gcmV0dXJuO1xuICAgICAgICAgICB9LFxuICAgICAgICAgICBFbnZpcm9ubWVudC5lbXB0eSB8PiBDbG9zdXJlRW52aXJvbm1lbnQud3JhcChlaSkgfD4gcmV0dXJuLFxuICAgICAgICAgKTtcblxuICAgIGxldCogKCkgPSBwZV9hZGQoZWksIGVudik7XG4gICAgZW52IHw+IHJldHVybjtcbiAgfTtcbn1cblxuLyoqXG4gIFBvc3Rwcm9jZXNzIGluc2lkZSBldmFsdWF0aW9uIGJvdW5kYXJ5LiBFbnZpcm9ubWVudCBzaG91bGQgYWxyZWFkeSBiZVxuICBwb3N0cHJvY2Vzc2VkLlxuICovXG5hbmQgcHBfdW5ldmFsID0gKGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIGQ6IERIRXhwLnQpOiBtKERIRXhwLnQpID0+XG4gIHN3aXRjaCAoZCkge1xuICAvKiBCb3VuZCB2YXJpYWJsZXMgc2hvdWxkIGJlIGxvb2tlZCB1cCB3aXRoaW4gdGhlIGNsb3N1cmVcbiAgICAgZW52aXJvbm1lbnQuIElmIGxvb2t1cCBmYWlscywgdGhlbiB2YXJpYWJsZSBpcyBub3QgYm91bmQuICovXG4gIHwgQm91bmRWYXIoeCkgPT5cbiAgICBzd2l0Y2ggKENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCB4KSkge1xuICAgIHwgU29tZShkJykgPT4gZCcgfD4gcmV0dXJuXG4gICAgfCBOb25lID0+IGQgfD4gcmV0dXJuXG4gICAgfVxuXG4gIC8qIE5vbi1ob2xlIGV4cHJlc3Npb25zOiBleHBhbmQgcmVjdXJzaXZlbHkgKi9cbiAgfCBCb29sTGl0KF8pXG4gIHwgSW50TGl0KF8pXG4gIHwgRmxvYXRMaXQoXylcbiAgfCBTdHJpbmdMaXQoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBkIHw+IHJldHVyblxuXG4gIHwgVGVzdChpZCwgZDEpID0+XG4gICAgbGV0KyBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgVGVzdChpZCwgZDEnKTtcblxuICB8IFNlcXVlbmNlKGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBsZXQrIGQyJyA9IHBwX3VuZXZhbChlbnYsIGQyKTtcbiAgICBTZXF1ZW5jZShkMScsIGQyJyk7XG5cbiAgfCBGaWx0ZXIoZmx0LCBkYm9keSkgPT5cbiAgICBsZXQrIGRib2R5JyA9IHBwX3VuZXZhbChlbnYsIGRib2R5KTtcbiAgICBGaWx0ZXIoZmx0LCBkYm9keScpO1xuICB8IExldChkcCwgZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfdW5ldmFsKGVudiwgZDEpO1xuICAgIGxldCogZDInID0gcHBfdW5ldmFsKGVudiwgZDIpO1xuICAgIExldChkcCwgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IEZpeEYoZiwgdHksIGQxKSA9PlxuICAgIGxldCogZDEnID0gcHBfdW5ldmFsKGVudiwgZDEpO1xuICAgIEZpeEYoZiwgdHksIGQxJykgfD4gcmV0dXJuO1xuXG4gIHwgRnVuKGRwLCB0eSwgZCcsIHMpID0+XG4gICAgbGV0KiBkJycgPSBwcF91bmV2YWwoZW52LCBkJyk7XG4gICAgRnVuKGRwLCB0eSwgZCcnLCBzKSB8PiByZXR1cm47XG5cbiAgfCBBcChkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgQXAoZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IEFwQnVpbHRpbihmLCBkMSkgPT5cbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBBcEJ1aWx0aW4oZiwgZDEnKSB8PiByZXR1cm47XG4gIHwgQnVpbHRpbkZ1bihmKSA9PiBCdWlsdGluRnVuKGYpIHw+IHJldHVyblxuXG4gIHwgQmluQm9vbE9wKG9wLCBkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgQmluQm9vbE9wKG9wLCBkMScsIGQyJykgfD4gcmV0dXJuO1xuICB8IEJpbkludE9wKG9wLCBkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgQmluSW50T3Aob3AsIGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBCaW5GbG9hdE9wKG9wLCBkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgQmluRmxvYXRPcChvcCwgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IEJpblN0cmluZ09wKG9wLCBkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgQmluU3RyaW5nT3Aob3AsIGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBJZlRoZW5FbHNlKGNvbnNpc3RlbnQsIGMsIGQxLCBkMikgPT5cbiAgICBsZXQqIGMnID0gcHBfdW5ldmFsKGVudiwgYyk7XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgSWZUaGVuRWxzZShjb25zaXN0ZW50LCBjJywgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IENvbnMoZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfdW5ldmFsKGVudiwgZDEpO1xuICAgIGxldCogZDInID0gcHBfdW5ldmFsKGVudiwgZDIpO1xuICAgIENvbnMoZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfdW5ldmFsKGVudiwgZDEpO1xuICAgIGxldCogZDInID0gcHBfdW5ldmFsKGVudiwgZDIpO1xuICAgIExpc3RDb25jYXQoZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IExpc3RMaXQoYSwgYiwgYywgZHMpID0+XG4gICAgbGV0KyBkcyA9XG4gICAgICBkc1xuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChkcywgZCkgPT4ge1xuICAgICAgICAgICAgIGxldCogZHMgPSBkcztcbiAgICAgICAgICAgICBsZXQrIGQgPSBwcF91bmV2YWwoZW52LCBkKTtcbiAgICAgICAgICAgICBkcyBAIFtkXTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgcmV0dXJuKFtdKSxcbiAgICAgICAgICk7XG4gICAgTGlzdExpdChhLCBiLCBjLCBkcyk7XG5cbiAgfCBUdXBsZShkcykgPT5cbiAgICBsZXQrIGRzID1cbiAgICAgIGRzXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKGRzLCBkKSA9PiB7XG4gICAgICAgICAgICAgbGV0KiBkcyA9IGRzO1xuICAgICAgICAgICAgIGxldCsgZCA9IHBwX3VuZXZhbChlbnYsIGQpO1xuICAgICAgICAgICAgIGRzIEAgW2RdO1xuICAgICAgICAgICB9LFxuICAgICAgICAgICByZXR1cm4oW10pLFxuICAgICAgICAgKTtcbiAgICBUdXBsZShkcyk7XG5cbiAgfCBQcmooZCwgbikgPT5cbiAgICBsZXQrIGQgPSBwcF91bmV2YWwoZW52LCBkKTtcbiAgICBQcmooZCwgbik7XG5cbiAgfCBDYXN0KGQnLCB0eTEsIHR5MikgPT5cbiAgICBsZXQqIGQnJyA9IHBwX3VuZXZhbChlbnYsIGQnKTtcbiAgICBDYXN0KGQnJywgdHkxLCB0eTIpIHw+IHJldHVybjtcblxuICB8IEZhaWxlZENhc3QoZCcsIHR5MSwgdHkyKSA9PlxuICAgIGxldCogZCcnID0gcHBfdW5ldmFsKGVudiwgZCcpO1xuICAgIEZhaWxlZENhc3QoZCcnLCB0eTEsIHR5MikgfD4gcmV0dXJuO1xuXG4gIHwgSW52YWxpZE9wZXJhdGlvbihkJywgcmVhc29uKSA9PlxuICAgIGxldCogZCcnID0gcHBfdW5ldmFsKGVudiwgZCcpO1xuICAgIEludmFsaWRPcGVyYXRpb24oZCcnLCByZWFzb24pIHw+IHJldHVybjtcblxuICB8IENvbnNpc3RlbnRDYXNlKENhc2Uoc2NydXQsIHJ1bGVzLCBpKSkgPT5cbiAgICBsZXQqIHNjcnV0JyA9IHBwX3VuZXZhbChlbnYsIHNjcnV0KTtcbiAgICBsZXQqIHJ1bGVzJyA9IHBwX3VuZXZhbF9ydWxlcyhlbnYsIHJ1bGVzKTtcbiAgICBDb25zaXN0ZW50Q2FzZShDYXNlKHNjcnV0JywgcnVsZXMnLCBpKSkgfD4gcmV0dXJuO1xuXG4gIC8qIENsb3N1cmVzIHNob3VsZG4ndCBleGlzdCBpbnNpZGUgb3RoZXIgY2xvc3VyZXMgKi9cbiAgfCBDbG9zdXJlKF8pID0+IHJhaXNlKEV4Y2VwdGlvbihDbG9zdXJlSW5zaWRlQ2xvc3VyZSkpXG5cbiAgLyogSG9sZSBleHByZXNzaW9uczpcbiAgICAgLSBVc2UgdGhlIGNsb3N1cmUgZW52aXJvbm1lbnQgYXMgdGhlIGhvbGUgZW52aXJvbm1lbnQuXG4gICAgIC0gTnVtYmVyIHRoZSBob2xlIGluc3RhbmNlIGFwcHJvcHJpYXRlbHkuXG4gICAgIC0gUmVjdXJzZSB0aHJvdWdoIGlubmVyIGV4cHJlc3Npb24gKGlmIGFueSkuXG4gICAgICovXG4gIHwgRW1wdHlIb2xlKHUsIF8pID0+XG4gICAgbGV0KiBpID0gaGlpX2FkZF9pbnN0YW5jZSh1LCBlbnYpO1xuICAgIENsb3N1cmUoZW52LCBFbXB0eUhvbGUodSwgaSkpIHw+IHJldHVybjtcblxuICB8IE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIF8sIGQnKSA9PlxuICAgIGxldCogZCcgPSBwcF91bmV2YWwoZW52LCBkJyk7XG4gICAgbGV0KiBpID0gaGlpX2FkZF9pbnN0YW5jZSh1LCBlbnYpO1xuICAgIENsb3N1cmUoZW52LCBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBkJykpIHw+IHJldHVybjtcblxuICB8IEV4cGFuZGluZ0tleXdvcmQodSwgXywga3cpID0+XG4gICAgbGV0KiBpID0gaGlpX2FkZF9pbnN0YW5jZSh1LCBlbnYpO1xuICAgIENsb3N1cmUoZW52LCBFeHBhbmRpbmdLZXl3b3JkKHUsIGksIGt3KSkgfD4gcmV0dXJuO1xuXG4gIHwgRnJlZVZhcih1LCBfLCB4KSA9PlxuICAgIGxldCogaSA9IGhpaV9hZGRfaW5zdGFuY2UodSwgZW52KTtcbiAgICBDbG9zdXJlKGVudiwgRnJlZVZhcih1LCBpLCB4KSkgfD4gcmV0dXJuO1xuXG4gIHwgSW52YWxpZFRleHQodSwgXywgdGV4dCkgPT5cbiAgICBsZXQqIGkgPSBoaWlfYWRkX2luc3RhbmNlKHUsIGVudik7XG4gICAgQ2xvc3VyZShlbnYsIEludmFsaWRUZXh0KHUsIGksIHRleHQpKSB8PiByZXR1cm47XG5cbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBfLCBDYXNlKHNjcnV0LCBydWxlcywgY2FzZV9pKSkgPT5cbiAgICBsZXQqIHNjcnV0ID0gcHBfdW5ldmFsKGVudiwgc2NydXQpO1xuICAgIGxldCogcnVsZXMgPSBwcF91bmV2YWxfcnVsZXMoZW52LCBydWxlcyk7XG4gICAgbGV0KiBpID0gaGlpX2FkZF9pbnN0YW5jZSh1LCBlbnYpO1xuICAgIENsb3N1cmUoZW52LCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKHNjcnV0LCBydWxlcywgY2FzZV9pKSkpXG4gICAgfD4gcmV0dXJuO1xuICB9XG5cbmFuZCBwcF91bmV2YWxfcnVsZXMgPVxuICAgIChlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCBydWxlczogbGlzdChESEV4cC5ydWxlKSlcbiAgICA6IG0obGlzdChESEV4cC5ydWxlKSkgPT4ge1xuICBydWxlc1xuICB8PiBMaXN0Lm1hcCgoUnVsZShkcCwgZCkpID0+IHtcbiAgICAgICBsZXQqIGQnID0gcHBfdW5ldmFsKGVudiwgZCk7XG4gICAgICAgUnVsZShkcCwgZCcpIHw+IHJldHVybjtcbiAgICAgfSlcbiAgfD4gc2VxdWVuY2U7XG59O1xuXG4vKipcbiAgVHJhY2tpbmcgY2hpbGRyZW4gb2YgaG9sZSBpbnN0YW5jZXMuIEEgaG9sZSBpbnN0YW5jZSBpcyBhIGNoaWxkIG9mIGFub3RoZXIgaG9sZVxuICBpbnN0YW5jZSBpZiBpdCBleGlzdHMgaW4gdGhlIGhvbGUgZW52aXJvbm1lbnQgb2YgdGhlIHBhcmVudC5cblxuICBUaGlzIGlzIHRoZSBzZWNvbmQgc3RhZ2Ugb2YgcG9zdHByb2Nlc3NpbmcsIHNlcGFyYXRlIGZyb20gaG9sZSBudW1iZXJpbmcgYW5kXG4gIHN1YnN0aXR1dGlvbiwgc2luY2UgbWVtb2l6YXRpb24gYmVjb21lcyBtdWNoIG1vcmUgY29udm9sdXRlZCBpZiB0aGVzZSB0d29cbiAgc3RhZ2VzIGFyZSBjb21iaW5lZC5cblxuICBUaGlzIHdvcmtzIGJ5IHNpbXBseSBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIChwb3N0cHJvY2Vzc2VkKSBob2xlIGluc3RhbmNlXG4gIGVudmlyb25tZW50cyBpbiB0aGUgSG9sZUluc3RhbmNlSW5mb18udCBhbmQgbG9va2luZyBmb3IgXCJjaGlsZFwiIGhvbGVzLlxuICovXG5sZXQgcmVjIHRyYWNrX2NoaWxkcmVuX29mX2hvbGUgPVxuICAgICAgICAoaGlpOiBIb2xlSW5zdGFuY2VJbmZvLnQsIHBhcmVudDogSG9sZUluc3RhbmNlUGFyZW50cy50XywgZDogREhFeHAudClcbiAgICAgICAgOiBIb2xlSW5zdGFuY2VJbmZvLnQgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBCb29sTGl0KF8pXG4gIHwgSW50TGl0KF8pXG4gIHwgRmxvYXRMaXQoXylcbiAgfCBTdHJpbmdMaXQoXylcbiAgfCBCdWlsdGluRnVuKF8pXG4gIHwgQm91bmRWYXIoXykgPT4gaGlpXG4gIHwgVGVzdChfLCBkKVxuICB8IEZpeEYoXywgXywgZClcbiAgfCBGdW4oXywgXywgZCwgXylcbiAgfCBQcmooZCwgXylcbiAgfCBDYXN0KGQsIF8sIF8pXG4gIHwgRmFpbGVkQ2FzdChkLCBfLCBfKVxuICB8IEludmFsaWRPcGVyYXRpb24oZCwgXykgPT4gdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZClcbiAgfCBTZXF1ZW5jZShkMSwgZDIpXG4gIHwgTGV0KF8sIGQxLCBkMilcbiAgfCBBcChkMSwgZDIpXG4gIHwgQmluQm9vbE9wKF8sIGQxLCBkMilcbiAgfCBCaW5JbnRPcChfLCBkMSwgZDIpXG4gIHwgQmluRmxvYXRPcChfLCBkMSwgZDIpXG4gIHwgQmluU3RyaW5nT3AoXywgZDEsIGQyKVxuICB8IENvbnMoZDEsIGQyKSA9PlxuICAgIGxldCBoaWkgPSB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkMSk7XG4gICAgdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZDIpO1xuICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgIGxldCBoaWkgPSB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkMSk7XG4gICAgdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZDIpO1xuXG4gIHwgTGlzdExpdChfLCBfLCBfLCBkcykgPT5cbiAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAoZCwgaGlpKSA9PiB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkKSxcbiAgICAgIGRzLFxuICAgICAgaGlpLFxuICAgIClcblxuICB8IFR1cGxlKGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgIChkLCBoaWkpID0+IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGQpLFxuICAgICAgZHMsXG4gICAgICBoaWksXG4gICAgKVxuICB8IElmVGhlbkVsc2UoXywgYywgZDEsIGQyKSA9PlxuICAgIGxldCBoaWkgPSB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBjKTtcbiAgICBsZXQgaGlpID0gdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZDEpO1xuICAgIHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGQyKTtcblxuICB8IENvbnNpc3RlbnRDYXNlKENhc2Uoc2NydXQsIHJ1bGVzLCBfKSkgPT5cbiAgICBsZXQgaGlpID1cbiAgICAgIFV0aWwuVGltZVV0aWwubWVhc3VyZV90aW1lKFwidHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShzY3J1dClcIiwgdHJ1ZSwgKCkgPT5cbiAgICAgICAgdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgc2NydXQpXG4gICAgICApO1xuICAgIFV0aWwuVGltZVV0aWwubWVhc3VyZV90aW1lKFwidHJhY2tfY2hpbGRyZW5fb2ZfaG9sZV9ydWxlc1wiLCB0cnVlLCAoKSA9PlxuICAgICAgdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZV9ydWxlcyhoaWksIHBhcmVudCwgcnVsZXMpXG4gICAgKTtcblxuICB8IEFwQnVpbHRpbihfLCBkKSA9PiB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkKVxuXG4gIC8qIEhvbGUgdHlwZXMgKi9cbiAgfCBOb25FbXB0eUhvbGUoXywgdSwgaSwgZCkgPT5cbiAgICBsZXQgaGlpID0gdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZCk7XG4gICAgaGlpIHw+IEhvbGVJbnN0YW5jZUluZm8uYWRkX3BhcmVudCgodSwgaSksIHBhcmVudCk7XG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXModSwgaSwgQ2FzZShzY3J1dCwgcnVsZXMsIF8pKSA9PlxuICAgIGxldCBoaWkgPSB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBzY3J1dCk7XG4gICAgbGV0IGhpaSA9IHRyYWNrX2NoaWxkcmVuX29mX2hvbGVfcnVsZXMoaGlpLCBwYXJlbnQsIHJ1bGVzKTtcbiAgICBoaWkgfD4gSG9sZUluc3RhbmNlSW5mby5hZGRfcGFyZW50KCh1LCBpKSwgcGFyZW50KTtcbiAgfCBFbXB0eUhvbGUodSwgaSlcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKHUsIGksIF8pXG4gIHwgRnJlZVZhcih1LCBpLCBfKVxuICB8IEludmFsaWRUZXh0KHUsIGksIF8pID0+XG4gICAgaGlpIHw+IEhvbGVJbnN0YW5jZUluZm8uYWRkX3BhcmVudCgodSwgaSksIHBhcmVudClcblxuICAvKiBUaGUgb25seSB0aGluZyB0aGF0IHNob3VsZCBleGlzdCBpbiBjbG9zdXJlcyBhdCB0aGlzIHBvaW50XG4gICAgIGFyZSBob2xlcy4gSWdub3JlIHRoZSBob2xlIGVudmlyb25tZW50LCBub3QgbmVjZXNzYXJ5IGZvclxuICAgICBwYXJlbnQgdHJhY2tpbmcuICovXG4gIHwgRmlsdGVyKF8sIGQpXG4gIHwgQ2xvc3VyZShfLCBkKSA9PiB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkKVxuICB9XG5cbmFuZCB0cmFja19jaGlsZHJlbl9vZl9ob2xlX3J1bGVzID1cbiAgICAoXG4gICAgICBoaWk6IEhvbGVJbnN0YW5jZUluZm8udCxcbiAgICAgIHBhcmVudDogSG9sZUluc3RhbmNlUGFyZW50cy50XyxcbiAgICAgIHJ1bGVzOiBsaXN0KERIRXhwLnJ1bGUpLFxuICAgIClcbiAgICA6IEhvbGVJbnN0YW5jZUluZm8udCA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKERIRXhwLlJ1bGUoXywgZCksIGhpaSkgPT4gdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZCksXG4gICAgcnVsZXMsXG4gICAgaGlpLFxuICApO1xuXG4vKipcbiAgRHJpdmVyIGZvciBob2xlIHBhcmVudCB0cmFja2luZzsgaXRlcmF0ZSB0aHJvdWdoIGFsbCBob2xlIGluc3RhbmNlcyBpbiB0aGVcbiAgW0hvbGVJbnN0YW5jZUluZm8udF0sIGFuZCBjYWxsIFt0cmFja19jaGlsZHJlbl9vZl9ob2xlXSBvbiB0aGVtLlxuICovXG5sZXQgdHJhY2tfY2hpbGRyZW4gPSAoaGlpOiBIb2xlSW5zdGFuY2VJbmZvLnQpOiBIb2xlSW5zdGFuY2VJbmZvLnQgPT5cbiAgTWV0YVZhck1hcC5mb2xkKFxuICAgICh1LCBoaXMsIGhpaSkgPT5cbiAgICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICAgKChpLCAoZW52LCBfKSksIGhpaSkgPT5cbiAgICAgICAgICBFbnZpcm9ubWVudC5mb2xkbyhcbiAgICAgICAgICAgICgoeCwgZCksIGhpaSkgPT4gdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksICh4LCAodSwgaSkpLCBkKSxcbiAgICAgICAgICAgIGhpaSxcbiAgICAgICAgICAgIGVudiB8PiBDbG9zdXJlRW52aXJvbm1lbnQubWFwX29mLFxuICAgICAgICAgICksXG4gICAgICAgIGhpcyB8PiBMaXN0Lm1hcGkoKGksIGhjKSA9PiAoaSwgaGMpKSxcbiAgICAgICAgaGlpLFxuICAgICAgKSxcbiAgICBoaWksXG4gICAgaGlpLFxuICApO1xuXG5sZXQgcG9zdHByb2Nlc3MgPSAoZDogREhFeHAudCk6IChIb2xlSW5zdGFuY2VJbmZvLnQsIERIRXhwLnQpID0+IHtcbiAgLyogU3Vic3RpdHV0aW9uIGFuZCBob2xlIG51bWJlcmluZyBwb3N0cHJvY2Vzc2luZyAqL1xuICBsZXQgKChfLCBoaWkpLCBkKSA9XG4gICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJwcF9ldmFsXCIsIHRydWUsICgpID0+XG4gICAgICBwcF9ldmFsKGQsIChFbnZpcm9ubWVudElkTWFwLmVtcHR5LCBIb2xlSW5zdGFuY2VJbmZvXy5lbXB0eSkpXG4gICAgKTtcblxuICAvKiBCdWlsZCBob2xlIGluc3RhbmNlIGluZm8uICovXG4gIGxldCBoaWkgPVxuICAgIFV0aWwuVGltZVV0aWwubWVhc3VyZV90aW1lKFwidG9faGlpXCIsIHRydWUsICgpID0+XG4gICAgICBoaWkgfD4gSG9sZUluc3RhbmNlSW5mb18udG9faG9sZV9pbnN0YW5jZV9pbmZvXG4gICAgKTtcblxuICAvKiBBZGQgc3BlY2lhbCBob2xlIGFjdGluZyBhcyB0b3AtbGV2ZWwgZXhwcmVzc2lvbiAodG8gYWN0IGFzIHBhcmVudFxuICAgICBmb3IgaG9sZXMgZGlyZWN0bHkgaW4gdGhlIHJlc3VsdCkgKi9cbiAgLyogRklYTUU6IEJldHRlciB3YXkgdG8gZG8gdGhpcz8gKi9cbiAgbGV0ICh1X3Jlc3VsdCwgXykgPSBIb2xlSW5zdGFuY2UucmVzdWx0O1xuICBsZXQgaGlpID1cbiAgICBNZXRhVmFyTWFwLmFkZChcbiAgICAgIHVfcmVzdWx0LFxuICAgICAgW1xuICAgICAgICAoXG4gICAgICAgICAgQ2xvc3VyZUVudmlyb25tZW50LndyYXAoXG4gICAgICAgICAgICBFbnZpcm9ubWVudElkLmludmFsaWQsXG4gICAgICAgICAgICBFbnZpcm9ubWVudC5zaW5nbGV0b24oKFwiXCIsIGQpKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIFtdLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICAgIGhpaSxcbiAgICApO1xuXG4gIGxldCBoaWkgPVxuICAgIFV0aWwuVGltZVV0aWwubWVhc3VyZV90aW1lKFwidHJhY2tfY2hpbGRyZW5cIiwgdHJ1ZSwgKCkgPT5cbiAgICAgIGhpaSB8PiB0cmFja19jaGlsZHJlblxuICAgICk7XG5cbiAgLyogUGVyZm9ybSBob2xlIHBhcmVudCB0cmFja2luZy4gKi9cbiAgKGhpaSwgZCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gc3RyaW5nO1xuIiwibGV0IGVkaXRvcl9vZl9jb2RlID0gKH5yZWFkX29ubHk9ZmFsc2UsIGNvZGU6IENvZGVTdHJpbmcudCkgPT4ge1xuICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoeikgPT4gU29tZShFZGl0b3IuaW5pdCh+cmVhZF9vbmx5LCB6KSlcbiAgfTtcbn07XG5cbmxldCBlZGl0b3JzX2ZvciA9XG4gICAgKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KCdhKSwgZjogJ2EgPT4gb3B0aW9uKHN0cmluZykpXG4gICAgOiAoaW50LCBsaXN0KCgnYSwgb3B0aW9uKEVkaXRvci50KSkpKSA9PiB7XG4gIGxldCB6cyA9XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjX3pzLCBhKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZihhKSkge1xuICAgICAgICB8IFNvbWUoc3RyKSA9PlxuICAgICAgICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHN0cikpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gYWNjX3pzIEAgWyhhLCBTb21lKFppcHBlci5pbml0KCkpKV1cbiAgICAgICAgICB8IFNvbWUoeikgPT4gYWNjX3pzIEAgWyhhLCBTb21lKHopKV1cbiAgICAgICAgICB9XG4gICAgICAgIHwgTm9uZSA9PiBhY2NfenMgQCBbKGEsIE5vbmUpXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW10sXG4gICAgICB4cyxcbiAgICApO1xuICAoXG4gICAgMCxcbiAgICBMaXN0Lm1hcChcbiAgICAgICgoYSwgc3opKSA9PlxuICAgICAgICBzd2l0Y2ggKHN6KSB7XG4gICAgICAgIHwgU29tZSh6KSA9PiAoYSwgU29tZShFZGl0b3IuaW5pdCh6LCB+cmVhZF9vbmx5KSkpXG4gICAgICAgIHwgTm9uZSA9PiAoYSwgTm9uZSlcbiAgICAgICAgfSxcbiAgICAgIHpzLFxuICAgICksXG4gICk7XG59O1xuXG5sZXQgZWRpdG9yc19vZl9zdHJpbmdzID0gKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KHN0cmluZykpID0+IHtcbiAgbGV0IChpLCBhZXMpID0gZWRpdG9yc19mb3IoeHMsIHggPT4gU29tZSh4KSwgfnJlYWRfb25seSk7XG4gIChpLCBMaXN0Lm1hcCgoKF8sIG9lKSkgPT4gT3B0aW9uLmdldChvZSksIGFlcykpO1xufTtcblxubGV0IHJlYyBhcHBlbmRfZXhwID0gKGUxOiBUZXJtQmFzZS5VRXhwLnQsIGUyOiBUZXJtQmFzZS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoIChlMS50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IFRyaXZcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBMaXN0TGl0KF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBGdW4oXylcbiAgfCBUdXBsZShfKVxuICB8IFZhcihfKVxuICB8IEFwKF8pXG4gIHwgUGlwZWxpbmUoXylcbiAgfCBJZihfKVxuICB8IFRlc3QoXylcbiAgfCBQYXJlbnMoXylcbiAgfCBDb25zKF8pXG4gIHwgTGlzdENvbmNhdChfKVxuICB8IFVuT3AoXylcbiAgfCBCaW5PcChfKVxuICB8IE1hdGNoKF8pID0+IFRlcm1CYXNlLlVFeHAue2lkczogW0lkLm1rKCldLCB0ZXJtOiBTZXEoZTEsIGUyKX1cbiAgfCBTZXEoZTExLCBlMTIpID0+XG4gICAgbGV0IGUxMicgPSBhcHBlbmRfZXhwKGUxMiwgZTIpO1xuICAgIFRlcm1CYXNlLlVFeHAue2lkczogZTEuaWRzLCB0ZXJtOiBTZXEoZTExLCBlMTInKX07XG4gIHwgRmlsdGVyKGFjdCwgZWNvbmQsIGVib2R5KSA9PlxuICAgIGxldCBlYm9keScgPSBhcHBlbmRfZXhwKGVib2R5LCBlMik7XG4gICAgVGVybUJhc2UuVUV4cC57aWRzOiBlMS5pZHMsIHRlcm06IEZpbHRlcihhY3QsIGVjb25kLCBlYm9keScpfTtcbiAgfCBMZXQocCwgZWRlZiwgZWJvZHkpID0+XG4gICAgbGV0IGVib2R5JyA9IGFwcGVuZF9leHAoZWJvZHksIGUyKTtcbiAgICBUZXJtQmFzZS5VRXhwLntpZHM6IGUxLmlkcywgdGVybTogTGV0KHAsIGVkZWYsIGVib2R5Jyl9O1xuICB8IFR5QWxpYXModHAsIHRkZWYsIGVib2R5KSA9PlxuICAgIGxldCBlYm9keScgPSBhcHBlbmRfZXhwKGVib2R5LCBlMik7XG4gICAgVGVybUJhc2UuVUV4cC57aWRzOiBlMS5pZHMsIHRlcm06IFR5QWxpYXModHAsIHRkZWYsIGVib2R5Jyl9O1xuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdGljcyA9IHtcbiAgdGVybTogVGVybS5VRXhwLnQsXG4gIGluZm9fbWFwOiBTdGF0aWNzLk1hcC50LFxuICBlcnJvcl9pZHM6IGxpc3QoSWQudCksXG59O1xuXG5sZXQgZW1wdHlfc3RhdGljczogc3RhdGljcyA9IHtcbiAgdGVybTogVGVybS5VRXhwLntpZHM6IFtJZC5pbnZhbGlkXSwgdGVybTogVHJpdn0sXG4gIGluZm9fbWFwOiBJZC5NYXAuZW1wdHksXG4gIGVycm9yX2lkczogW10sXG59O1xuXG5tb2R1bGUgS2V5ID0ge1xuICBpbmNsdWRlIFN0cmluZztcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBzdHJpbmc7XG59O1xuXG5tb2R1bGUgTSA9IFV0aWwuTWFwVXRpbC5NYWtlKEtleSk7XG5pbmNsdWRlIE07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE0udChzdGF0aWNzKTtcblxubGV0IG1rID0gKGRzOiBsaXN0KChLZXkudCwgc3RhdGljcykpKTogdCA9PlxuICBkcyB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXEgfD4gbWFwKEZ1bi5pZCk7XG5cbmxldCBsb29rdXAgPSAocmVzdWx0czogdCwga2V5OiBLZXkudCkgPT5cbiAgc3dpdGNoIChmaW5kX29wdChrZXksIHJlc3VsdHMpKSB7XG4gIHwgTm9uZSA9PiBlbXB0eV9zdGF0aWNzXG4gIHwgU29tZShzdGF0aWNzKSA9PiBzdGF0aWNzXG4gIH07XG4iLCJsZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiOyAvLyBVVEYtOCBlbmNvZGluZyBmb3IgVSswMEEwIFwiTm8tYnJlYWsgc3BhY2VcIlxuXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIi8vIE1hcHMga2V5ZWQgYnkgYW4gZW5kIHBvc2l0aW9uXG4vLyBJbnZhcmllbnQ6IGtleXMgYXJlIGFzY2VuZGluZyBhbmQgdW5pcXVlXG50eXBlIGtleSA9IGludDtcbnR5cGUgdCgnYSkgPSBsaXN0KChrZXksICdhKSk7XG5sZXQgZW1wdHk6ICdhLiB0KCdhKSA9IFtdO1xubGV0IHNpbmdsZXRvbjogJ2EuIChrZXksICdhKSA9PiB0KCdhKSA9IChwb3MsIHgpID0+IFsocG9zLCB4KV07XG5sZXQgcmVjIHVuaW9uOiAnYS4gKCgnYSwgJ2EpID0+ICdhLCB0KCdhKSwgdCgnYSkpID0+IHQoJ2EpID1cbiAgKGYsIHQxLCB0MikgPT5cbiAgICBzd2l0Y2ggKHQxLCB0Mikge1xuICAgIHwgKFtdLCB0X290aGVyKSA9PiB0X290aGVyXG4gICAgfCAodF9vdGhlciwgW10pID0+IHRfb3RoZXJcbiAgICB8IChbKHAxLCB4MSksIC4uLnhzMV0sIFsocDIsIHgyKSwgLi4ueHMyXSkgPT5cbiAgICAgIGlmIChwMSA8IHAyKSB7XG4gICAgICAgIFsocDEsIHgxKSwgLi4udW5pb24oZiwgeHMxLCBbKHAyLCB4MiksIC4uLnhzMl0pXTtcbiAgICAgIH0gZWxzZSBpZiAocDEgPiBwMikge1xuICAgICAgICBbKHAyLCB4MiksIC4uLnVuaW9uKGYsIFsocDEsIHgxKSwgLi4ueHMxXSwgeHMyKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbKHAxLCBmKHgxLCB4MikpLCAuLi51bmlvbihmLCB4czEsIHhzMildO1xuICAgICAgfVxuICAgIH07XG5sZXQgcmVjIG1hcDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYoeCkpLCAuLi5tYXAoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBpOiAnYSAnYi4gKChrZXksICdhKSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYocG9zLCB4KSksIC4uLm1hcGkoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBrOiAnYSAnYi4gKChrZXksICdhKSA9PiAoa2V5LCAnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIGYgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IFtmKHBvcywgeCksIC4uLm1hcGsoZiwgcmVzdCldO1xubGV0IHJlYyBmb2xkX2xlZnQ6ICdhICdiLiAoKGtleSwgJ2IsICdhKSA9PiAnYiwgJ2IsIHQoJ2EpKSA9PiAnYiA9XG4gIChmLCB6KSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gelxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBmb2xkX2xlZnQoZiwgZihwb3MsIHosIHgpLCByZXN0KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IHtcbiAgcm93OiBpbnQsXG4gIGNvbDogaW50LFxufTtcblxubGV0IGNvbXBhcmUgPSAocG9zMSwgcG9zMikgPT5cbiAgaWYgKHBvczEucm93IDwgcG9zMi5yb3cpIHtcbiAgICAoLTEpO1xuICB9IGVsc2UgaWYgKHBvczEucm93ID4gcG9zMi5yb3cpIHtcbiAgICAxO1xuICB9IGVsc2Uge1xuICAgIEludC5jb21wYXJlKHBvczEuY29sLCBwb3MyLmNvbCk7XG4gIH07XG5cbmxldCB6ZXJvID0ge3JvdzogMCwgY29sOiAwfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIFRPRE86IHJlbmFtZSBBbm5vdCB0byBBbm4/XG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIEludmFyaWFudDogY29udGFpbnMgbm8gbmV3bGluZXMuIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBBc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7IC8vIEFubm90YXRpb25zXG5cbmxldCBhbGlnbiA9IChsOiB0KCdhbm5vdCkpID0+IEFsaWduKGwpO1xubGV0IGFubm90ID0gKGFubm90OiAnYW5ub3QsIGw6IHQoJ2Fubm90KSkgPT4gQW5ub3QoYW5ub3QsIGwpO1xuXG5sZXQgcmVjIHJlbW92ZV9hbm5vdHMgPSAobGF5b3V0OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICBzd2l0Y2ggKGxheW91dCkge1xuICB8IEFubm90KF8sIGwpID0+IHJlbW92ZV9hbm5vdHMobClcbiAgfCBUZXh0KHN0cmluZykgPT4gVGV4dChzdHJpbmcpXG4gIHwgQ2F0KGwxLCBsMikgPT4gQ2F0KHJlbW92ZV9hbm5vdHMobDEpLCByZW1vdmVfYW5ub3RzKGwyKSlcbiAgfCBMaW5lYnJlYWsgPT4gTGluZWJyZWFrXG4gIHwgQWxpZ24obCkgPT4gQWxpZ24ocmVtb3ZlX2Fubm90cyhsKSlcbiAgfTtcbn07XG5cbi8vIFRPRE8/XG4vL2xldCB0ZXh0ID0gKHN0cmluZykgPT4gdF9vZl9sYXlvdXQoVGV4dChzdHJpbmcpKTtcbi8vbGV0IGNhdCA9ICh0MSwgdDIpID0+IHRfb2ZfbGF5b3V0KENhdCh0MSwgdDIpKTtcbi8vbGV0IGxpbmVicmVhayA9IHRfb2ZfbGF5b3V0KGxpbmVicmVhayk7XG5cbi8vIFRPRE86IG1vdmUgdG8gb3duIG1vZHVsZVxudHlwZSB0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpID0ge1xuICAvLyBUT0RPOiByZW5hbWUgYGltcGBcbiAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+ICdpbXAsXG4gIGltcF9hcHBlbmQ6ICgnaW1wLCAnaW1wKSA9PiAnaW1wLFxuICBpbXBfbmV3bGluZTogaW50ID0+ICdpbXAsXG4gIGltcF9vZl9hbm5vdDogKCdhbm5vdCwgJ2ltcCkgPT4gJ2ltcCxcbiAgdF9vZl9pbXA6ICdpbXAgPT4gJ3QsXG59O1xuXG5sZXQgbWtfb2ZfbGF5b3V0OiAodGV4dCgnYW5ub3QsICdpbXAsICd0KSwgdCgnYW5ub3QpKSA9PiAndCA9XG4gICh0ZXh0LCBsYXlvdXQpID0+IHtcbiAgICBsZXQgY29sdW1uOiByZWYoaW50KSA9IHJlZigwKTtcbiAgICBsZXQgcmVjIGdvOiAoaW50LCB0KCdhbm5vdCkpID0+ICdpbXAgPVxuICAgICAgKGluZGVudCwgbGF5b3V0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAgICAgY29sdW1uIDo9IGNvbHVtbl4gKyBVbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgICAgIHRleHQuaW1wX29mX3N0cmluZyhzdHJpbmcpO1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IGltcDEgPSBnbyhpbmRlbnQsIGwxKTtcbiAgICAgICAgICBsZXQgaW1wMiA9IGdvKGluZGVudCwgbDIpO1xuICAgICAgICAgIHRleHQuaW1wX2FwcGVuZChpbXAxLCBpbXAyKTtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICAvLyBUT0RPOiBubyBpbmRlbnQgaWYgb24gZmluYWwgbGluZSBicmVha1xuICAgICAgICAgIGNvbHVtbiA6PSBpbmRlbnQ7XG4gICAgICAgICAgdGV4dC5pbXBfbmV3bGluZShpbmRlbnQpO1xuICAgICAgICB8IEFsaWduKGwpID0+IGdvKGNvbHVtbl4sIGwpXG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+IHRleHQuaW1wX29mX2Fubm90KGFubm90LCBnbyhpbmRlbnQsIGwpKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB0ZXh0LnRfb2ZfaW1wKGdvKDAsIGxheW91dCkpO1xuICB9O1xuXG5sZXQgc3RyaW5nX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gc3RyaW5nID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOiAnYW5ub3QuIHRleHQoJ2Fubm90LCBzdHJpbmcsIHN0cmluZykgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gc3RyaW5nLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4gczEgKysgczIsXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFwiXFxuXCIgKysgU3RyaW5nLm1ha2UoaW5kZW50LCAnICcpLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogaW1wID0+IGltcCxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG5cbmxldCBzdHJpbmdzX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gbGlzdCgoaW50LCBzdHJpbmcpKSA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDpcbiAgICAgICdhbm5vdC5cbiAgICAgIHRleHQoJ2Fubm90LCBsaXN0KChpbnQsIHN0cmluZykpLCBsaXN0KChpbnQsIHN0cmluZykpKVxuICAgICA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBbKDAsIHN0cmluZyldLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4ge1xuICAgICAgICBzd2l0Y2ggKExpc3QucmV2KHMxKSwgczIpIHtcbiAgICAgICAgfCAoW10sIF8pID0+IHMyXG4gICAgICAgIHwgKF8sIFtdKSA9PiBzMVxuICAgICAgICB8IChcbiAgICAgICAgICAgIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSksIC4uLnJlc3QxXSxcbiAgICAgICAgICAgIFsoZmlyc3RfaW5kZW50XzIsIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdLFxuICAgICAgICAgICkgPT5cbiAgICAgICAgICBhc3NlcnQoZmlyc3RfaW5kZW50XzIgPT0gMCk7XG4gICAgICAgICAgTGlzdC5yZXYocmVzdDEpXG4gICAgICAgICAgQCBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEgKysgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml07XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBbKGluZGVudCwgXCJcIildLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogcyA9PiBzLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcbiIsImxldCBzcGxpdF9maXJzdCA9ICh4czogbGlzdCgnYSkpOiAoJ2EsIGxpc3QoJ2EpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gKGZpcnN0LCB0cmFpbGluZylcbiAgfTtcblxubGV0IHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCdhKSk6IG9wdGlvbigobGlzdCgnYSksICdhKSkgPT5cbiAgc3dpdGNoIChMaXN0LnJldih4cykpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3ksIC4uLnlzXSA9PiBTb21lKChMaXN0LnJldih5cyksIHkpKVxuICB9O1xubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ2EpKTogKGxpc3QoJ2EpLCAnYSkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSBib3ggPSB7XG4gIGhlaWdodDogaW50LFxuICB3aWR0aDogaW50LFxufTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIGxheW91dDogdCcoJ2Fubm90KSxcbiAgbWV0cmljczogbGlzdChib3gpLFxufVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IExpbmVicmVha1xuICB8IFRleHQoc3RyaW5nKVxuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpO1xuXG50eXBlIHdpdGhfb2Zmc2V0KCdhbm5vdCkgPSAoaW50LCB0KCdhbm5vdCkpO1xuXG5sZXQgaGVpZ2h0ID0gKG06IHQoXykpID0+XG4gIG0ubWV0cmljcyB8PiBMaXN0Lm1hcChib3ggPT4gYm94LmhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKTtcblxubGV0IHdpZHRoID0gKH5vZmZzZXQ9MCwgbTogdChfKSkgPT5cbiAgTGlzdC50bChtLm1ldHJpY3MpXG4gIHw+IExpc3QubWFwKGJveCA9PiBib3gud2lkdGgpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgb2Zmc2V0ICsgTGlzdC5oZChtLm1ldHJpY3MpLndpZHRoKTtcblxubGV0IGZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6ICdhY2MsXG4gICAgICB+dGV4dDogc3RyaW5nID0+ICdhY2MsXG4gICAgICB+YWxpZ246ICdhY2MgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6ICgnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gYWxsb3cgY2xpZW50IHRvIGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgICh0KCdhbm5vdCkgPT4gJ2FjYywgJ2Fubm90LCB0KCdhbm5vdCkpID0+ICdhY2MsXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAobTogdChfKSkgPT5cbiAgICBzd2l0Y2ggKG0ubGF5b3V0KSB7XG4gICAgfCBMaW5lYnJlYWsgPT4gbGluZWJyZWFrXG4gICAgfCBUZXh0KHMpID0+IHRleHQocylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKGdvKG0pKVxuICAgIHwgQ2F0KG0xLCBtMikgPT5cbiAgICAgIGxldCBhY2MxID0gZ28obTEpO1xuICAgICAgbGV0IGFjYzIgPSBnbyhtMik7XG4gICAgICBjYXQoYWNjMSwgYWNjMik7XG4gICAgfCBBbm5vdChhbm4sIG0pID0+IGFubm90KGdvLCBhbm4sIG0pXG4gICAgfTtcbiAgZ28obSk7XG59O1xuXG5sZXQgbmV4dF9wb3NpdGlvbiA9XG4gICAgKH5pbmRlbnQ6IGludCwge3JvdywgY29sfTogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKVxuICAgIDogTWVhc3VyZWRQb3NpdGlvbi50ID0+IHtcbiAgbGV0IHVwZGF0ZWRfcm93ID0gcm93ICsgaGVpZ2h0KG0pIC0gMTtcbiAgbGV0IHVwZGF0ZWRfY29sID0ge1xuICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0ubWV0cmljcyk7XG4gICAgbGFzdC53aWR0aFxuICAgICsgKFxuICAgICAgc3dpdGNoIChsZWFkaW5nKSB7XG4gICAgICB8IFtdID0+IGNvbFxuICAgICAgfCBbXywgLi4uX10gPT4gaW5kZW50XG4gICAgICB9XG4gICAgKTtcbiAgfTtcbiAge3JvdzogdXBkYXRlZF9yb3csIGNvbDogdXBkYXRlZF9jb2x9O1xufTtcblxubGV0IHBvc19mb2xkID1cbiAgICAoXG4gICAgICB+bGluZWJyZWFrOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4gJ2FjYyxcbiAgICAgIH50ZXh0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCBzdHJpbmcpID0+ICdhY2MsXG4gICAgICB+YWxpZ246IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MpID0+ICdhY2MsXG4gICAgICB+Y2F0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCAnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gbGV0IGNsaWVudCBjb250cm9sIHJlY3Vyc2lvbiBiYXNlZCBvbiBhbm5vdGF0aW9uXG4gICAgICAgICAoXG4gICAgICAgICAgIH5nbzogdCgnYW5ub3QpID0+ICdhY2MsXG4gICAgICAgICAgIH5pbmRlbnQ6IGludCxcbiAgICAgICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICAgICAgICdhbm5vdCxcbiAgICAgICAgICAgdCgnYW5ub3QpXG4gICAgICAgICApID0+XG4gICAgICAgICAnYWNjLFxuICAgICAgfmluZGVudD0wLFxuICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQ9TWVhc3VyZWRQb3NpdGlvbi56ZXJvLFxuICAgICAgbTogdCgnYW5ub3QpLFxuICAgIClcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgcmVjIGdvID0gKGluZGVudDogaW50LCBzdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWsoc3RhcnQpXG4gICAgfCBUZXh0KHMpID0+IHRleHQoc3RhcnQsIHMpXG4gICAgfCBBbGlnbihtKSA9PiBhbGlnbihzdGFydCwgZ28oc3RhcnQuY29sLCBzdGFydCwgbSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IG1pZCA9IG5leHRfcG9zaXRpb24ofmluZGVudCwgc3RhcnQsIG0xKTtcbiAgICAgIGNhdChzdGFydCwgZ28oaW5kZW50LCBzdGFydCwgbTEpLCBnbyhpbmRlbnQsIG1pZCwgbTIpKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QofmdvPWdvKGluZGVudCwgc3RhcnQpLCB+aW5kZW50LCB+c3RhcnQsIGFubiwgbSlcbiAgICB9O1xuICBnbyhpbmRlbnQsIHN0YXJ0LCBtKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgdGFibGU6IE1lbW9UYmwudChMYXlvdXQudCh1bml0KSwgdCh1bml0KSkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldCh0YWJsZSwgT2JqLm1hZ2ljKGwpKSkge1xuICAgIHwgU29tZShtKSA9PiBPYmoubWFnaWMobSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBtID1cbiAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgIHwgTGluZWJyZWFrID0+XG4gICAgICAgICAgbGV0IGJveCA9IHtoZWlnaHQ6IDEsIHdpZHRoOiAwfTtcbiAgICAgICAgICB7bWV0cmljczogW2JveCwgYm94XSwgbGF5b3V0OiBMaW5lYnJlYWt9O1xuICAgICAgICB8IFRleHQocykgPT4ge1xuICAgICAgICAgICAgbWV0cmljczogW3toZWlnaHQ6IDEsIHdpZHRoOiBVbmljb2RlLmxlbmd0aChzKX1dLFxuICAgICAgICAgICAgbGF5b3V0OiBUZXh0KHMpLFxuICAgICAgICAgIH1cbiAgICAgICAgfCBBbGlnbihsKSA9PlxuICAgICAgICAgIGxldCBtID0gbWsobCk7XG4gICAgICAgICAgbGV0IGJvdW5kaW5nX2JveCA9XG4gICAgICAgICAgICBtLm1ldHJpY3NcbiAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAoe2hlaWdodDogYmgsIHdpZHRoOiBid30sIHtoZWlnaHQsIHdpZHRofSkgPT5cbiAgICAgICAgICAgICAgICAgICB7aGVpZ2h0OiBiaCArIGhlaWdodCwgd2lkdGg6IG1heChidywgd2lkdGgpfSxcbiAgICAgICAgICAgICAgICAge2hlaWdodDogMCwgd2lkdGg6IDB9LFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB7bWV0cmljczogW2JvdW5kaW5nX2JveF0sIGxheW91dDogQWxpZ24obSl9O1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IG0xID0gbWsobDEpO1xuICAgICAgICAgIGxldCBtMiA9IG1rKGwyKTtcbiAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChtMS5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgKGZpcnN0LCB0cmFpbGluZykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChtMi5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgbWlkX2JveCA9IHtcbiAgICAgICAgICAgIGhlaWdodDogbWF4KGxhc3QuaGVpZ2h0LCBmaXJzdC5oZWlnaHQpLFxuICAgICAgICAgICAgd2lkdGg6IGxhc3Qud2lkdGggKyBmaXJzdC53aWR0aCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHttZXRyaWNzOiBsZWFkaW5nIEAgW21pZF9ib3gsIC4uLnRyYWlsaW5nXSwgbGF5b3V0OiBDYXQobTEsIG0yKX07XG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICB7Li4ubSwgbGF5b3V0OiBBbm5vdChhbm5vdCwgbSl9O1xuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKG0pKTtcbiAgICAgIG07XG4gICAgfTtcbiAgfTtcbn07XG4iLCJ0eXBlIHQgPSB7XG4gIC8vIFN1bSBvZiB0aGUgc3F1YXJlIG9mIGhvdyBtdWNoIGVhY2ggbGluZSBleHRlbmRzIGJleW9uZCBtYXggd2lkdGguICBVc3VhbGx5IHplcm8uXG4gIG92ZXJmbG93X2Nvc3Q6IGludCxcbiAgLy8gSGVpZ2h0IG1pbnVzIG9uZS4gIEEuay5hLiBudW1iZXIgb2YgbGluZSBicmVha3MuXG4gIGhlaWdodF9jb3N0OiBpbnQsXG59O1xuXG5sZXQgbWsgPSAofm92ZXJmbG93X2Nvc3Q6IGludCwgfmhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdCxcbiAgaGVpZ2h0X2Nvc3QsXG59O1xuXG5sZXQgbWtfaGVpZ2h0ID0gKGhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IG1rKH5vdmVyZmxvd19jb3N0PTAsIH5oZWlnaHRfY29zdCk7XG5cbmxldCBta19vdmVyZmxvdyA9IChvdmVyZmxvd19jb3N0OiBpbnQpOiB0ID0+XG4gIG1rKH5vdmVyZmxvd19jb3N0LCB+aGVpZ2h0X2Nvc3Q9MCk7XG5cbmxldCB6ZXJvOiB0ID0ge292ZXJmbG93X2Nvc3Q6IDAsIGhlaWdodF9jb3N0OiAwfTtcblxubGV0IGluZjogdCA9IHtvdmVyZmxvd19jb3N0OiBtYXhfaW50LCBoZWlnaHRfY29zdDogbWF4X2ludH07XG5cbmxldCBhZGQgPSAoYzE6IHQsIGMyOiB0KTogdCA9PiB7XG4gIG92ZXJmbG93X2Nvc3Q6IGMxLm92ZXJmbG93X2Nvc3QgKyBjMi5vdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdDogYzEuaGVpZ2h0X2Nvc3QgKyBjMi5oZWlnaHRfY29zdCxcbn07XG5cbmxldCBlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGMxLm92ZXJmbG93X2Nvc3QgPT09IGMyLm92ZXJmbG93X2Nvc3QgJiYgYzEuaGVpZ2h0X2Nvc3QgPT09IGMyLmhlaWdodF9jb3N0O1xuXG5sZXQgbHQgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDwgYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8IGMyLm92ZXJmbG93X2Nvc3Q7XG4gIH07XG5cbmxldCBsZXEgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDw9IGMyLmhlaWdodF9jb3N0O1xuICB9IGVsc2Uge1xuICAgIGMxLm92ZXJmbG93X2Nvc3QgPD0gYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbm1vZHVsZSBXaWR0aFBvc0tleSA9IHtcbiAgdHlwZSB0ID0gKGludCwgaW50KTtcbiAgbGV0IGhhc2ggPSAoKHdpZHRoLCBwb3MpKSA9PiAyNTYgKiAyNTYgKiB3aWR0aCArIHBvcztcbiAgbGV0IGVxdWFsID0gKCh3MSwgcDEpLCAodzIsIHAyKSkgPT4gdzEgPT0gdzIgJiYgcDEgPT0gcDI7XG59O1xuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTWFrZShXaWR0aFBvc0tleSk7XG5cbi8vIE5PVEU6IHBvcyBpcyByZWxhdGl2ZSB0byBtb3N0IHJlY2VudCBgQWxpZ25gXG50eXBlIG0nKCdhKSA9IFBvc01hcC50KChDb3N0LnQsICdhKSk7XG50eXBlIG0oJ2EpID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpID0+IG0nKCdhKTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIG1lbTogW0BzZXhwLm9wYXF1ZV0gTS50KG0nKExheW91dC50KCdhbm5vdCkpKSxcbiAgZG9jOiB0JygnYW5ub3QpLFxufVxuW0BkZXJpdmluZyBzZXhwXVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKSAvLyBUZXh0KFwiXCIpIGlzIGlkZW50aXR5IGZvciBgQ2F0YFxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSkgLy8gYXNzb2NpYXRpdmVcbiAgfCBMaW5lYnJlYWtcbiAgfCBBbGlnbih0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpIC8vIEFubm90YXRpb25zXG4gIHwgRmFpbCAvLyBpZGVudGl0eSBmb3IgYENob2ljZWBcbiAgfCBDaG9pY2UodCgnYW5ub3QpLCB0KCdhbm5vdCkpO1xuXG5sZXQgdF9vZl90JyA9ICh0JzogdCcoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7bWVtOiBNLmNyZWF0ZSgwKSwgZG9jOiB0J307XG5cbmxldCB0ZXh0ID0gKHM6IHN0cmluZykgPT4gdF9vZl90JyhUZXh0KHMpKTtcbmxldCBsaW5lYnJlYWsgPSAoKSA9PiB0X29mX3QnKExpbmVicmVhayk7XG5sZXQgYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhBbGlnbihkb2MpKTtcbmxldCBhbm5vdCA9IChhbm5vdCwgZG9jKSA9PiB0X29mX3QnKEFubm90KGFubm90LCBkb2MpKTtcbmxldCBmYWlsID0gKCkgPT4gdF9vZl90JyhGYWlsKTtcblxubGV0IGVtcHR5ID0gKCkgPT4gdGV4dChcIlwiKTtcbmxldCBzcGFjZSA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwKTsgLy8gVE9ETzogcGFyYW0gdG8gaHNlcFxuXG5sZXQgaW5kZW50ID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3AgKysgVW5pY29kZS5uYnNwKTtcbmxldCBpbmRlbnRfYW5kX2FsaWduID0gZG9jID0+IHRfb2ZfdCcoQ2F0KGluZGVudCgpLCBhbGlnbihkb2MpKSk7XG5cbmxldCBoY2F0ID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHkpKTtcbmxldCBoY2F0czogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoY2F0LCBkb2MsIGRvY3MpO1xuXG5sZXQgaHNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChzcGFjZSgpLCB5KSkpKTtcbmxldCBoc2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoc2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgdnNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChsaW5lYnJlYWsoKSwgeSkpKSk7XG5sZXQgdnNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsd2l0aChfX0xPQ19fICsrIFwiOiB2c2VwcyByZXF1aXJlcyBhIG5vbi1lbXB0eSBsaXN0XCIpXG4gIHwgW2RvY10gPT4gZG9jXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQodnNlcCwgZG9jLCBkb2NzKTtcblxubGV0IGNob2ljZSA9ICh4LCB5KSA9PiB0X29mX3QnKENob2ljZSh4LCB5KSk7XG5sZXQgY2hvaWNlczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWwoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGNob2ljZSwgZG9jLCBkb2NzKTtcblxubGV0IG1hcF90JzogJ2EgJ2IuICh0JygnYSkgPT4gdCcoJ2IpLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT4gdF9vZl90JyhmKGQuZG9jKSk7XG5cbmxldCByZWMgbWFwX2Fubm90OiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT5cbiAgICBkXG4gICAgfD4gbWFwX3QnKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChUZXh0KF8pIHwgTGluZWJyZWFrIHwgRmFpbCkgYXMgZCcgPT4gZCdcbiAgICAgICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IEFubm90KGYoYW5ub3QpLCBtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IEFsaWduKGQpID0+IEFsaWduKG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQ2F0KGQxLCBkMikgPT4gQ2F0KG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpXG4gICAgICAgICB8IENob2ljZShkMSwgZDIpID0+IENob2ljZShtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKSxcbiAgICAgICApO1xuIiwiLy8gVE9ETzogY29tcHV0ZSBhY3R1YWwgbGF5b3V0IHNpemUgYW5kIHVzZSBpbnN0ZWFkIG9mIHRfb2ZfbGF5b3V0XG5sZXQgcmVjIGFsbDogJ2Fubm90LiBEb2MudCgnYW5ub3QpID0+IGxpc3QoTGF5b3V0LnQoJ2Fubm90KSkgPSB7XG4gIGRvYyA9PiB7XG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT4gW0xheW91dC5UZXh0KHN0cmluZyldXG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGxzMSA9IGFsbChkMSk7XG4gICAgICBsZXQgbHMyID0gYWxsKGQyKTtcbiAgICAgIExpc3QuY29uY2F0KFxuICAgICAgICBMaXN0Lm1hcChsMSA9PiBMaXN0Lm1hcChsMiA9PiBMYXlvdXQuQ2F0KGwxLCBsMiksIGxzMiksIGxzMSksXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+IFtMYXlvdXQuTGluZWJyZWFrXVxuICAgIHwgQWxpZ24oZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQWxpZ24obCksIGFsbChkKSlcbiAgICB8IEFubm90KGFubm90LCBkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5Bbm5vdChhbm5vdCwgbCksIGFsbChkKSlcbiAgICB8IEZhaWwgPT4gW11cbiAgICB8IENob2ljZShkMSwgZDIpID0+IGFsbChkMSkgQCBhbGwoZDIpXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIE5vdGU6IFRoaXMgdW5pb24gaXMgbGVmdCBiaWFzZWRcbmxldCBtJ191bmlvbjogJ2EuIChEb2MubScoJ2EpLCBEb2MubScoJ2EpKSA9PiBEb2MubScoJ2EpID1cbiAgKHAxLCBwMikgPT4ge1xuICAgIGxldCBjb3N0X3VuaW9uID0gKChjb3N0MTogQ29zdC50LCBfKSBhcyB0MSwgKGNvc3QyOiBDb3N0LnQsIF8pIGFzIHQyKSA9PlxuICAgICAgaWYgKENvc3QubGVxKGNvc3QxLCBjb3N0MikpIHtcbiAgICAgICAgdDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0MjtcbiAgICAgIH07XG4gICAgUG9zTWFwLnVuaW9uKGNvc3RfdW5pb24sIHAxLCBwMik7XG4gIH07XG5cbmxldCByZWMgbGF5b3V0X29mX2RvYycgPSAoZG9jOiBEb2MudCh1bml0KSk6IERvYy5tKExheW91dC50KHVuaXQpKSA9PiB7XG4gIGxldCBnID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICAvLyBUT0RPOiBsaWZ0IHRoZSBzd2l0Y2goZG9jLmRvYykgb3V0c2lkZSB0aGUgbGFtYmRhXG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgIC8vIFRPRE86IGNhY2hlIHRleHQgbGVuZ3RoIGluIFRleHQ/XG4gICAgICBsZXQgcG9zJyA9IHBvcyArIFN0cmluZy5sZW5ndGgoc3RyaW5nKTsgLy9Vbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgbGV0IGNvc3QgPVxuICAgICAgICBpZiAocG9zJyA8PSB3aWR0aCkge1xuICAgICAgICAgIENvc3QuemVybztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgb3ZlcmZsb3cgPSBwb3MnIC0gd2lkdGg7XG4gICAgICAgICAgLy8gb3ZlcmZsb3dfY29zdCA9IHN1bSBpIGZyb20gMSB0byBvdmVyZmxvd1xuICAgICAgICAgIGxldCBvdmVyZmxvd19jb3N0ID0gb3ZlcmZsb3cgKiAob3ZlcmZsb3cgKyAxKSAvIDI7XG4gICAgICAgICAgQ29zdC5ta19vdmVyZmxvdyhvdmVyZmxvd19jb3N0KTtcbiAgICAgICAgfTtcbiAgICAgIFBvc01hcC5zaW5nbGV0b24ocG9zJywgKGNvc3QsIExheW91dC5UZXh0KHN0cmluZykpKTtcbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5mb2xkX2xlZnQoXG4gICAgICAgIChwb3MsIHosIChjb3N0MSwgbGF5b3V0MSkpID0+IHtcbiAgICAgICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgICAgICBsZXQgbGF5b3V0cyA9XG4gICAgICAgICAgICBQb3NNYXAubWFwKFxuICAgICAgICAgICAgICAoKGNvc3QyLCBsYXlvdXQyKSkgPT5cbiAgICAgICAgICAgICAgICAoQ29zdC5hZGQoY29zdDEsIGNvc3QyKSwgTGF5b3V0LkNhdChsYXlvdXQxLCBsYXlvdXQyKSksXG4gICAgICAgICAgICAgIGwyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBtJ191bmlvbih6LCBsYXlvdXRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgUG9zTWFwLmVtcHR5LFxuICAgICAgICBsMSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgIFBvc01hcC5zaW5nbGV0b24oMCwgKENvc3QubWtfaGVpZ2h0KDEpLCBMYXlvdXQuTGluZWJyZWFrKSlcbiAgICB8IEFsaWduKGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoPXdpZHRoIC0gcG9zLCB+cG9zPTApO1xuICAgICAgUG9zTWFwLm1hcGsoXG4gICAgICAgIChwLCAoYywgbCkpID0+IChwICsgcG9zLCAoYywgTGF5b3V0LkFsaWduKGwpKSksXG4gICAgICAgIGxheW91dCxcbiAgICAgICk7XG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLm1hcCgoKGMsIGwpKSA9PiAoYywgTGF5b3V0LkFubm90KGFubm90LCBsKSksIGxheW91dCk7XG4gICAgfCBGYWlsID0+IFBvc01hcC5lbXB0eVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICBtJ191bmlvbihsMSwgbDIpO1xuICAgIH07XG4gIH07XG4gIGxldCBoID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICBsZXQga2V5ID0gKHdpZHRoLCBwb3MpO1xuICAgIHN3aXRjaCAoRG9jLk0uZmluZF9vcHQoZG9jLm1lbSwga2V5KSkge1xuICAgIHwgU29tZSh2YWx1ZSkgPT4gdmFsdWVcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2YWx1ZSA9IGcofndpZHRoLCB+cG9zKTtcbiAgICAgIERvYy5NLmFkZChkb2MubWVtLCBrZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlO1xuICAgIH07XG4gIH07XG4gIGg7XG59O1xuXG5sZXQgbGF5b3V0X29mX2RvYyA9XG4gICAgKGRvYzogRG9jLnQoJ2Fubm90KSwgfndpZHRoOiBpbnQsIH5wb3M6IGludCk6IG9wdGlvbihMYXlvdXQudCgnYW5ub3QpKSA9PiB7XG4gIGxldCByZWMgbWluaW11bSA9XG4gICAgICAgICAgKChwb3MsIChjb3N0LCB0KSk6IChpbnQsIChDb3N0LnQsIG9wdGlvbignYSkpKSlcbiAgICAgICAgICA6IChsaXN0KChpbnQsIChDb3N0LnQsICdhKSkpID0+IG9wdGlvbignYSkpID0+IHtcbiAgICBmdW5cbiAgICB8IFtdID0+IHRcbiAgICB8IFsoeF9wb3MsICh4X2Nvc3QsIHgpKSwgLi4ucmVzdF0gPT5cbiAgICAgIC8vIFByZWZlciBsb3dlc3QgY29zdCwgb3IgaWYgc2FtZSBjb3N0LCBwcmVmZXIgZW5kaW5nIGF0IGFuIGVhcmxpZXIgY29sdW1uXG4gICAgICAvLyAoQ29sdW1ucyBhcmUgdW5pcXVlIGJ5IGNvbnN0cnVjdGlvbiBvZiBQb3NNYXAuKVxuICAgICAgaWYgKENvc3QubHQoeF9jb3N0LCBjb3N0KSB8fCBDb3N0LmVxKHhfY29zdCwgY29zdCkgJiYgeF9wb3MgPCBwb3MpIHtcbiAgICAgICAgbWluaW11bSgoeF9wb3MsICh4X2Nvc3QsIFNvbWUoeCkpKSwgcmVzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaW5pbXVtKChwb3MsIChjb3N0LCB0KSksIHJlc3QpO1xuICAgICAgfTtcbiAgfTtcbiAgLy8gVE9ETzogdXNlIG9wdGlvbnMgaW5zdGVhZCBvZiBtYXhfaW50XG4gIC8vIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgbGV0IGwgPVxuICAgIG1pbmltdW0oXG4gICAgICAobWF4X2ludCwgKENvc3QuaW5mLCBOb25lKSksXG4gICAgICBPYmoubWFnaWMobGF5b3V0X29mX2RvYycoT2JqLm1hZ2ljKGRvYyksIH53aWR0aCwgfnBvcykpLFxuICAgICk7XG4gIC8vIGxldCBlbmRfdGltZSA9IFN5cy50aW1lKCk7XG4gIC8qXG4gICBQcmludGYucHJpbnRmKFxuICAgICBcImxheW91dF9vZl9kb2M6ICVkIFxcdCVmXFxuXCIsXG4gICAgIC0xLCAvL2ZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSMjLnNpemUsXG4gICAgIC8vTWVtb2l6ZS5XZWFrUG9seS5UYWJsZS5sZW5ndGgoZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpKSxcbiAgICAgMTAwMC4wICouIChlbmRfdGltZSAtLiBzdGFydF90aW1lKSxcbiAgICk7XG4gICAqL1xuICBsO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZylcbiAgfCBIQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBWQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgaGVpZ2h0X3RibDogTWVtb1RibC50KHQodW5pdCksIGludCkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgaGVpZ2h0ID0gKGJveDogdCgnYW5ub3QpKSA9PlxuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCkpKSB7XG4gICAgfCBTb21lKGgpID0+IGhcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBoID1cbiAgICAgICAgc3dpdGNoIChib3gpIHtcbiAgICAgICAgfCBUZXh0KF8pID0+IDFcbiAgICAgICAgfCBBbm5vdChfLCBiKSA9PiBoZWlnaHQoYilcbiAgICAgICAgfCBIQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgMSkgLy8gTm90ZTogMSBpcyBIQm94KFtdKSBoZWlnaHRcbiAgICAgICAgfCBWQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMClcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpLCBoKTtcbiAgICAgIGg7XG4gICAgfTtcblxuICAvLyBOb3RlOiBhbm5vdHMgYXJlIGluc2lkZS1vdXQgKGkuZS4gTGlzdC5oZChhbm5vdHMpIGlzIHRoZSBpbm5lci1tb3N0IGFubm90KVxuICBsZXQgcmVjIGFubm90ID0gKGFubm90czogbGlzdCgnYW5ub3QpLCBib3g6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChhbm5vdHMpIHtcbiAgICB8IFtdID0+IGJveFxuICAgIHwgW2FubiwgLi4uYW5uc10gPT4gYW5ub3QoYW5ucywgQW5ub3QoYW5uLCBib3gpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBhcHBlbmRfYm94ID1cbiAgICAgICAgICAofmFubm90czogbGlzdCgnYW5ub3QpPVtdLCBib3gxOiB0KCdhbm5vdCksIGJveDI6IHQoJ2Fubm90KSlcbiAgICAgICAgICA6IHQoJ2Fubm90KSA9PlxuICAgIGlmIChoZWlnaHQoYm94MSkgPD0gMSkge1xuICAgICAgSEJveChbYW5ub3QoYW5ub3RzLCBib3gxKSwgYm94Ml0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjIGFwcGVuZF9sYXN0ID0gKGJzMTogbGlzdCh0KCdhbm5vdCkpKTogbGlzdCh0KCdhbm5vdCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChiczEpIHtcbiAgICAgICAgfCBbXSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgICB8IFtiMV0gPT4gW2FwcGVuZF9ib3gofmFubm90cywgYjEsIGJveDIpXVxuICAgICAgICB8IFtiMSwgLi4uYnMxXSA9PiBbYW5ub3QoYW5ub3RzLCBiMSksIC4uLmFwcGVuZF9sYXN0KGJzMSldXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoIChib3gxKSB7XG4gICAgICB8IFRleHQoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgIHwgSEJveChiczEpID0+IEhCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgVkJveChiczEpID0+IFZCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgQW5ub3QoYW5ub3QsIGIpID0+IGFwcGVuZF9ib3gofmFubm90cz1bYW5ub3QsIC4uLmFubm90c10sIGIsIGJveDIpXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGFwcGVuZF9oYm94ID0gKGJveGVzMTogbGlzdCh0KCdhbm5vdCkpLCBib3hlczI6IGxpc3QodCgnYW5ub3QpKSkgPT4ge1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoYm94ZXMxKSkge1xuICAgIHwgTm9uZSA9PiBib3hlczJcbiAgICB8IFNvbWUoKGxlYWRpbmcsIGxhc3QpKSA9PiBsZWFkaW5nIEAgW2FwcGVuZF9ib3gobGFzdCwgSEJveChib3hlczIpKV1cbiAgICB9O1xuICB9O1xuXG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIGxldCBtayA9IChib3hlczogbGlzdChsaXN0KHQoXykpKSkgPT5cbiAgICAgIFZCb3goTGlzdC5tYXAocm93ID0+IEhCb3gocm93KSwgYm94ZXMpKTtcbiAgICBsZXQgcmVjIGdvID0gKGw6IExheW91dC50KF8pKSA9PiB7XG4gICAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgICB8IFNvbWUoYm94KSA9PiBPYmoubWFnaWMoYm94KVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBib3ggPVxuICAgICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICAgIHwgTGluZWJyZWFrID0+IFtbXSwgW11dXG4gICAgICAgICAgfCBUZXh0KHMpID0+IFtbVGV4dChzKV1dXG4gICAgICAgICAgfCBBbGlnbihsKSA9PiBbW21rKGdvKGwpKV1dXG4gICAgICAgICAgfCBBbm5vdChhbm4sIGwpID0+XG4gICAgICAgICAgICBnbyhsKSB8PiBMaXN0Lm1hcChyb3cgPT4gW0Fubm90KGFubiwgSEJveChyb3cpKV0pXG4gICAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ28obDEpKTtcbiAgICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGdvKGwyKSk7XG4gICAgICAgICAgICBsZWFkaW5nIEAgW2FwcGVuZF9oYm94KGxhc3QsIGZpcnN0KSwgLi4udHJhaWxpbmddO1xuICAgICAgICAgIH07XG4gICAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhib3gpKTtcbiAgICAgICAgYm94O1xuICAgICAgfTtcbiAgICB9O1xuICAgIG1rKGdvKGwpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3ludGF4X3Jlc3VsdCA9IHtcbiAgcmVzdWx0czogbGlzdChib29sKSxcbiAgcGVyY2VudGFnZTogZmxvYXQsXG59O1xuXG5sZXQgcmVjIGZpbmRfdmFyX3VwYXQgPSAobmFtZTogc3RyaW5nLCB1cGF0OiBUZXJtLlVQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1cCkgPT4ge2FjYyB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKX0sIGZhbHNlLCBsKVxuICB8IFBhcmVucyh1cCkgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IFR5cGVBbm4odXAsIF8pID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG5sZXQgcmVjIHZhcl9tZW50aW9uID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIGZpbmRfdmFyX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgZGVmKSB8fCB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IFRlc3QodSlcbiAgfCBQYXJlbnModSlcbiAgfCBVbk9wKF8sIHUpXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KSA9PiB2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MilcbiAgfCBQaXBlbGluZSh1MSwgdTIpXG4gIHwgU2VxKHUxLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MilcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MikgfHwgdmFyX21lbnRpb24obmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgIHx8IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgcGUpID0+IHtcbiAgICAgICAgICAgbGV0IChwLCBlKSA9IHBlO1xuICAgICAgICAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgfHwgdmFyX21lbnRpb24obmFtZSwgZSk7XG4gICAgICAgICB9LFxuICAgICAgICAgZmFsc2UsXG4gICAgICAgICBsLFxuICAgICAgIClcbiAgfTtcbn07XG5cbmxldCByZWMgdmFyX2FwcGxpZWQgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IFZhcihfKVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBGdW4oYXJncywgYm9keSkgPT5cbiAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgZmluZF92YXJfdXBhdChuYW1lLCBwKVxuICAgICAgPyBmYWxzZSA6IHZhcl9hcHBsaWVkKG5hbWUsIGRlZikgfHwgdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgXywgdSkgPT4gdmFyX2FwcGxpZWQobmFtZSwgdSlcbiAgfCBBcCh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IFBpcGVsaW5lKHUxLCB1MikgPT5cbiAgICBzd2l0Y2ggKHUyLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogdmFyX2FwcGxpZWQobmFtZSwgdTEpXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB9XG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgU2VxKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MikgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfYXBwbGllZChuYW1lLCBnKVxuICAgIHx8IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgcGUpID0+IHtcbiAgICAgICAgICAgbGV0IChwLCBlKSA9IHBlO1xuICAgICAgICAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgfHwgdmFyX2FwcGxpZWQobmFtZSwgZSk7XG4gICAgICAgICB9LFxuICAgICAgICAgZmFsc2UsXG4gICAgICAgICBsLFxuICAgICAgIClcbiAgfTtcbn07XG5cbmxldCByZWMgZmluZF9pbl9sZXQgPVxuICAgICAgICAoXG4gICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgIHVwYXQ6IFRlcm0uVVBhdC50LFxuICAgICAgICAgIGRlZjogVGVybS5VRXhwLnQsXG4gICAgICAgICAgbDogbGlzdChUZXJtLlVFeHAudCksXG4gICAgICAgIClcbiAgICAgICAgOiBsaXN0KFRlcm0uVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtLCBkZWYudGVybSkge1xuICB8IChQYXJlbnModXApLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGwpXG4gIHwgKFBhcmVucyh1cCksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKF8sIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwYXQsIHVlLCBsKVxuICB8IChUeXBlQW5uKHVwLCBfKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoVmFyKHgpLCBGdW4oXykpID0+XG4gICAgaWYgKHggPT0gbmFtZSkge1xuICAgICAgW2RlZiwgLi4ubF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGw7XG4gICAgfVxuICB8IChUdXBsZShwbCksIFR1cGxlKHVsKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgocGwpICE9IExpc3QubGVuZ3RoKHVsKSkge1xuICAgICAgbDtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoYWNjLCB1cCwgdWUpID0+IHtmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGFjYyl9LFxuICAgICAgICBsLFxuICAgICAgICBwbCxcbiAgICAgICAgdWwsXG4gICAgICApO1xuICAgIH1cbiAgfCAoVmFyKF8pLCBfKVxuICB8IChUdXBsZShfKSwgXylcbiAgfCAoXG4gICAgICBFbXB0eUhvbGUgfCBXaWxkIHwgVHJpdiB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8XG4gICAgICBCb29sKF8pIHxcbiAgICAgIFN0cmluZyhfKSB8XG4gICAgICBMaXN0TGl0KF8pIHxcbiAgICAgIENvbnN0cnVjdG9yKF8pIHxcbiAgICAgIENvbnMoXywgXykgfFxuICAgICAgQXAoXywgXyksXG4gICAgICBfLFxuICAgICkgPT4gbFxuICB9O1xufTtcblxubGV0IHJlYyBmaW5kX2ZuID1cbiAgICAgICAgKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQsIGw6IGxpc3QoVGVybS5VRXhwLnQpKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBMZXQodXAsIGRlZiwgYm9keSkgPT5cbiAgICBsIHw+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYpIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KHVsKVxuICB8IFR1cGxlKHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHUxKSA9PiB7ZmluZF9mbihuYW1lLCB1MSwgYWNjKX0sIGwsIHVsKVxuICB8IEZ1bihfLCBib2R5KSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBQYXJlbnModTEpXG4gIHwgVW5PcChfLCB1MSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUxKVxuICB8IFRlc3QodTEpXG4gIHwgRmlsdGVyKF8sIF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKSB8PiBmaW5kX2ZuKG5hbWUsIHUzKVxuICB8IE1hdGNoKHUxLCB1bCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIChfLCB1ZSkpID0+IHtmaW5kX2ZuKG5hbWUsIHVlLCBhY2MpfSxcbiAgICAgIGwgfD4gZmluZF9mbihuYW1lLCB1MSksXG4gICAgICB1bCxcbiAgICApXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiBsXG4gIH07XG59O1xuXG5sZXQgaXNfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgcmVjIHRhaWxfY2hlY2sgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXylcbiAgfCBQaXBlbGluZShfLCBfKSA9PiB0cnVlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgZmluZF92YXJfdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgZmluZF92YXJfdXBhdChuYW1lLCBwKSB8fCB2YXJfbWVudGlvbihuYW1lLCBkZWYpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIC8vSWYgbCBoYXMgbm8gcmVjdXJzaXZlIGNhbGxzIHRoZW4gdHJ1ZVxuICAgICFMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBUZXN0KF8pID0+IGZhbHNlXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KVxuICB8IFBhcmVucyh1KSA9PiB0YWlsX2NoZWNrKG5hbWUsIHUpXG4gIHwgVW5PcChfLCB1KSA9PiAhdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBBcCh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUyKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MSlcbiAgfCBTZXEodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiAhKHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MikpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSlcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICAgID8gZmFsc2VcbiAgICAgIDogTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgKGFjYywgKHAsIGUpKSA9PiB7XG4gICAgICAgICAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgJiYgdGFpbF9jaGVjayhuYW1lLCBlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBsLFxuICAgICAgICApXG4gIH07XG59O1xuXG5sZXQgaXNfdGFpbF9yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpICYmIHRhaWxfY2hlY2sobmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbmxldCBjaGVjayA9XG4gICAgKHVleHA6IFRlcm0uVUV4cC50LCBwcmVkaWNhdGVzOiBsaXN0KFRlcm0uVUV4cC50ID0+IGJvb2wpKTogc3ludGF4X3Jlc3VsdCA9PiB7XG4gIGxldCByZXN1bHRzID0gTGlzdC5tYXAocHJlZCA9PiB7dWV4cCB8PiBwcmVkfSwgcHJlZGljYXRlcyk7XG4gIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aChwcmVkaWNhdGVzKTtcbiAgbGV0IHBhc3NpbmcgPSBVdGlsLkxpc3RVdGlsLmNvdW50X3ByZWQocmVzID0+IHJlcywgcmVzdWx0cyk7XG5cbiAge1xuICAgIHJlc3VsdHMsXG4gICAgcGVyY2VudGFnZTpcbiAgICAgIC8vdmFjdW91c2x5IHBhc3NlcyBpZiB0aGVyZSBhcmUgbm8gdGVzdHNcbiAgICAgIGxlbmd0aCA9PSAwID8gMS4gOiBmbG9hdF9vZl9pbnQocGFzc2luZykgLy4gZmxvYXRfb2ZfaW50KGxlbmd0aCksXG4gIH07XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHByZWRpY2F0ZSA9XG4gIHwgVmFyQXBwbGllZChzdHJpbmcpXG4gIHwgSXNSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzTm90UmVjdXJzaXZlKHN0cmluZylcbiAgfCBJc1RhaWxSZWN1cnNpdmUoc3RyaW5nKTtcblxubGV0IHByZWRpY2F0ZV9mbiA9IHByZWRpY2F0ZSA9PiB7XG4gIHN3aXRjaCAocHJlZGljYXRlKSB7XG4gIHwgVmFyQXBwbGllZChuYW1lKSA9PiB2YXJfYXBwbGllZChuYW1lKVxuICB8IElzUmVjdXJzaXZlKG5hbWUpID0+IGlzX3JlY3Vyc2l2ZShuYW1lKVxuICB8IElzTm90UmVjdXJzaXZlKG5hbWUpID0+ICh1ZXhwID0+ICFpc19yZWN1cnNpdmUobmFtZSwgdWV4cCkpXG4gIHwgSXNUYWlsUmVjdXJzaXZlKG5hbWUpID0+IGlzX3RhaWxfcmVjdXJzaXZlKG5hbWUpXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgdHlwZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlO1xuICBsZXQgZGVmYXVsdDogbm9kZTtcbiAgbGV0IG91dHB1dF9oZWFkZXI6IHN0cmluZyA9PiBzdHJpbmc7XG59O1xuXG5sZXQgb3V0cHV0X2hlYWRlcl9ncmFkaW5nID0gX21vZHVsZV9uYW1lID0+XG4gIFwibW9kdWxlIEV4ZXJjaXNlID0gR3JhZGVQcmVsdWRlLkV4ZXJjaXNlXFxuXCIgKysgXCJsZXQgcHJvbXB0ID0gKClcXG5cIjtcblxubW9kdWxlIEYgPSAoRXhlcmNpc2VFbnY6IEV4ZXJjaXNlRW52KSA9PiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB3cm9uZ19pbXBsKCdjb2RlKSA9IHtcbiAgICBpbXBsOiAnY29kZSxcbiAgICBoaW50OiBzdHJpbmcsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZGRlbl90ZXN0cygnY29kZSkgPSB7XG4gICAgdGVzdHM6ICdjb2RlLFxuICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpbnQgPSBzdHJpbmc7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0ID0gKGhpbnQsIFN5bnRheFRlc3QucHJlZGljYXRlKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3ludGF4X3Rlc3RzID0gbGlzdChzeW50YXhfdGVzdCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHlvdXJfdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICByZXF1aXJlZDogaW50LFxuICAgIHByb3ZpZGVkOiBpbnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvaW50X2Rpc3RyaWJ1dGlvbiA9IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb246IGludCxcbiAgICBtdXRhdGlvbl90ZXN0aW5nOiBpbnQsXG4gICAgaW1wbF9ncmFkaW5nOiBpbnQsXG4gIH07XG5cbiAgbGV0IHZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiA9XG4gICAgICAoe3Rlc3RfdmFsaWRhdGlvbiwgbXV0YXRpb25fdGVzdGluZywgaW1wbF9ncmFkaW5nfTogcG9pbnRfZGlzdHJpYnV0aW9uKSA9PlxuICAgIHRlc3RfdmFsaWRhdGlvbiArIG11dGF0aW9uX3Rlc3RpbmcgKyBpbXBsX2dyYWRpbmcgPT0gMTAwXG4gICAgICA/ICgpIDogZmFpbHdpdGgoXCJJbnZhbGlkIHBvaW50IGRpc3RyaWJ1dGlvbiBpbiBleGVyY2lzZS5cIik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHAoJ2NvZGUpID0ge1xuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogaW50LFxuICAgIG1vZHVsZV9uYW1lOiBzdHJpbmcsXG4gICAgcHJvbXB0OlxuICAgICAgW0BwcmludGVyIChmbXQsIF8pID0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcInByb21wdFwiKV0gW0BvcGFxdWVdIEV4ZXJjaXNlRW52Lm5vZGUsXG4gICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgIHByZWx1ZGU6ICdjb2RlLFxuICAgIGNvcnJlY3RfaW1wbDogJ2NvZGUsXG4gICAgeW91cl90ZXN0czogeW91cl90ZXN0cygnY29kZSksXG4gICAgeW91cl9pbXBsOiAnY29kZSxcbiAgICBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKCdjb2RlKSksXG4gICAgaGlkZGVuX3Rlc3RzOiBoaWRkZW5fdGVzdHMoJ2NvZGUpLFxuICAgIHN5bnRheF90ZXN0cyxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUga2V5ID0gKHN0cmluZywgaW50KTtcblxuICBsZXQga2V5X29mID0gcCA9PiB7XG4gICAgKHAudGl0bGUsIHAudmVyc2lvbik7XG4gIH07XG5cbiAgbGV0IGZpbmRfa2V5X29wdCA9IChrZXksIHNwZWNzOiBsaXN0KHAoJ2NvZGUpKSkgPT4ge1xuICAgIHNwZWNzIHw+IFV0aWwuTGlzdFV0aWwuZmluZGlfb3B0KHNwZWMgPT4ga2V5X29mKHNwZWMpID09IGtleSk7XG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvcyA9XG4gICAgfCBQcmVsdWRlXG4gICAgfCBDb3JyZWN0SW1wbFxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZ1xuICAgIHwgWW91ckltcGxcbiAgICB8IEhpZGRlbkJ1Z3MoaW50KVxuICAgIHwgSGlkZGVuVGVzdHM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNwZWMgPSBwKFppcHBlci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHJhbnNpdGlvbmFyeV9zcGVjID0gcChDb2RlU3RyaW5nLnQpO1xuXG4gIGxldCBtYXAgPSAocDogcCgnYSksIGY6ICdhID0+ICdiKTogcCgnYikgPT4ge1xuICAgIHtcbiAgICAgIHRpdGxlOiBwLnRpdGxlLFxuICAgICAgdmVyc2lvbjogcC52ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWU6IHAubW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQ6IHAucHJvbXB0LFxuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBwLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGU6IGYocC5wcmVsdWRlKSxcbiAgICAgIGNvcnJlY3RfaW1wbDogZihwLmNvcnJlY3RfaW1wbCksXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBmKHAueW91cl90ZXN0cy50ZXN0cyksXG4gICAgICAgIHJlcXVpcmVkOiBwLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBwLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICB9LFxuICAgICAgeW91cl9pbXBsOiBmKHAueW91cl9pbXBsKSxcbiAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICBwLmhpZGRlbl9idWdzXG4gICAgICAgIHw+IExpc3QubWFwKHdyb25nX2ltcGwgPT4ge1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIGltcGw6IFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdCh3cm9uZ19pbXBsLmltcGwpLFxuICAgICAgICAgICAgICAgaGludDogd3JvbmdfaW1wbC5oaW50LFxuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgfSksXG4gICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChwLmhpZGRlbl90ZXN0cy50ZXN0cyksXG4gICAgICAgIGhpbnRzOiBwLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgIH0sXG4gICAgICBzeW50YXhfdGVzdHM6IHAuc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGVkcyA9IHAoRWRpdG9yLnQpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzdGF0ZSA9IHtcbiAgICBwb3MsXG4gICAgZWRzLFxuICB9O1xuXG4gIGxldCBrZXlfb2Zfc3RhdGUgPSAoe2VkcywgX30pID0+IGtleV9vZihlZHMpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50X3N0YXRlID0gKHBvcywgbGlzdCgocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnQpKSk7XG5cbiAgbGV0IGVkaXRvcl9vZl9zdGF0ZTogc3RhdGUgPT4gRWRpdG9yLnQgPVxuICAgICh7cG9zLCBlZHMsIF99KSA9PlxuICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgIHwgUHJlbHVkZSA9PiBlZHMucHJlbHVkZVxuICAgICAgfCBDb3JyZWN0SW1wbCA9PiBlZHMuY29ycmVjdF9pbXBsXG4gICAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBlZHMueW91cl90ZXN0cy50ZXN0c1xuICAgICAgfCBZb3VySW1wbCA9PiBlZHMueW91cl9pbXBsXG4gICAgICB8IEhpZGRlbkJ1Z3MoaSkgPT4gTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBpKS5pbXBsXG4gICAgICB8IEhpZGRlblRlc3RzID0+IGVkcy5oaWRkZW5fdGVzdHMudGVzdHNcbiAgICAgIH07XG5cbiAgbGV0IHB1dF9lZGl0b3IgPSAoe3BvcywgZWRzLCBffSBhcyBzdGF0ZTogc3RhdGUsIGVkaXRvcjogRWRpdG9yLnQpID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHByZWx1ZGU6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IENvcnJlY3RJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBjb3JyZWN0X2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy55b3VyX3Rlc3RzLFxuICAgICAgICAgICAgdGVzdHM6IGVkaXRvcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91ckltcGwgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuQnVncyhuKSA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgICAgICBVdGlsLkxpc3RVdGlsLnB1dF9udGgoXG4gICAgICAgICAgICAgIG4sXG4gICAgICAgICAgICAgIHsuLi5MaXN0Lm50aChlZHMuaGlkZGVuX2J1Z3MsIG4pLCBpbXBsOiBlZGl0b3J9LFxuICAgICAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuVGVzdHMgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICAgICAgLi4uZWRzLmhpZGRlbl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBlZGl0b3JzID0gKHtlZHMsIF99OiBzdGF0ZSkgPT5cbiAgICBbXG4gICAgICBlZHMucHJlbHVkZSxcbiAgICAgIGVkcy5jb3JyZWN0X2ltcGwsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgZWRzLnlvdXJfaW1wbCxcbiAgICBdXG4gICAgQCBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHdyb25nX2ltcGwuaW1wbCwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW2Vkcy5oaWRkZW5fdGVzdHMudGVzdHNdO1xuXG4gIGxldCBlZGl0b3JfcG9zaXRpb25zID0gKHtlZHMsIF99OiBzdGF0ZSkgPT5cbiAgICBbUHJlbHVkZSwgQ29ycmVjdEltcGwsIFlvdXJUZXN0c1Rlc3RpbmcsIFlvdXJUZXN0c1ZhbGlkYXRpb24sIFlvdXJJbXBsXVxuICAgIEAgTGlzdC5tYXBpKChpLCBfKSA9PiBIaWRkZW5CdWdzKGkpLCBlZHMuaGlkZGVuX2J1Z3MpXG4gICAgQCBbSGlkZGVuVGVzdHNdO1xuXG4gIGxldCBwb3NpdGlvbmVkX2VkaXRvcnMgPSBzdGF0ZSA9PlxuICAgIExpc3QuY29tYmluZShlZGl0b3JfcG9zaXRpb25zKHN0YXRlKSwgZWRpdG9ycyhzdGF0ZSkpO1xuXG4gIGxldCBpZHhfb2ZfcG9zID0gKHBvcywgcDogcCgnY29kZSkpID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gMFxuICAgIHwgQ29ycmVjdEltcGwgPT4gMVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiAyXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IDNcbiAgICB8IFlvdXJJbXBsID0+IDRcbiAgICB8IEhpZGRlbkJ1Z3MoaSkgPT5cbiAgICAgIGlmIChpIDwgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgNSArIGk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWlsd2l0aChcImludmFsaWQgaGlkZGVuIGJ1ZyBpbmRleFwiKTtcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKVxuICAgIH07XG5cbiAgbGV0IHBvc19vZl9pZHggPSAocDogcCgnY29kZSksIGlkeDogaW50KSA9PlxuICAgIHN3aXRjaCAoaWR4KSB7XG4gICAgfCAwID0+IFByZWx1ZGVcbiAgICB8IDEgPT4gQ29ycmVjdEltcGxcbiAgICB8IDIgPT4gWW91clRlc3RzVGVzdGluZ1xuICAgIHwgMyA9PiBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCA0ID0+IFlvdXJJbXBsXG4gICAgfCBfID0+XG4gICAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgICBmYWlsd2l0aChcIm5lZ2F0aXZlIGlkeFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoaWR4IDwgNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlbkJ1Z3MoaWR4IC0gNSk7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA9PSA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgSGlkZGVuVGVzdHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWlsd2l0aChcImVsZW1lbnQgaWR4XCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IHN3aXRjaF9lZGl0b3IgPSAofnBvcywgaW5zdHJ1Y3Rvcl9tb2RlLCB+ZXhlcmNpc2UpID0+XG4gICAgaWYgKCFpbnN0cnVjdG9yX21vZGUpIHtcbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IEhpZGRlblRlc3RzXG4gICAgICB8IEhpZGRlbkJ1Z3MoXykgPT4gZXhlcmNpc2VcbiAgICAgIHwgXyA9PiB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc31cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHtlZHM6IGV4ZXJjaXNlLmVkcywgcG9zfTtcbiAgICB9O1xuXG4gIGxldCB6aXBwZXJfb2ZfY29kZSA9IGNvZGUgPT4ge1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKGNvZGUpKSB7XG4gICAgfCBOb25lID0+IGZhaWx3aXRoKFwiVHJhbnNpdGlvbiBmYWlsZWQuXCIpXG4gICAgfCBTb21lKHppcHBlcikgPT4gemlwcGVyXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbjogdHJhbnNpdGlvbmFyeV9zcGVjID0+IHNwZWMgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH0sXG4gICAgKSA9PiB7XG4gICAgICBsZXQgcHJlbHVkZSA9IHppcHBlcl9vZl9jb2RlKHByZWx1ZGUpO1xuICAgICAgbGV0IGNvcnJlY3RfaW1wbCA9IHppcHBlcl9vZl9jb2RlKGNvcnJlY3RfaW1wbCk7XG4gICAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUoeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICAgIH07XG4gICAgICBsZXQgeW91cl9pbXBsID0gemlwcGVyX29mX2NvZGUoeW91cl9pbXBsKTtcbiAgICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGltcGwgPSB6aXBwZXJfb2ZfY29kZShpbXBsKTtcbiAgICAgICAgICAgIGFjYyBAIFt7aW1wbCwgaGludH1dO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgICB9O1xuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiA9IHppcHBlciA9PiBFZGl0b3IuaW5pdCh6aXBwZXIpO1xuICBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBoaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCgoe2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAgICB7aW1wbCwgaGludH07XG4gICAgICAgICAgIH0pO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICAvL1xuICAvLyBPbGQgdmVyc2lvbiBvZiBhYm92ZSB0aGF0IGRpZCBzdHJpbmctYmFzZWQgcGFyc2luZywgbWF5IGJlIHVzZWZ1bFxuICAvLyBmb3IgdHJhbnNpdGlvbnMgYmV0d2VlbiB6aXBwZXIgZGF0YSBzdHJ1Y3R1cmUgdmVyc2lvbnMgKFRPRE8pXG4gIC8vXG4gIC8vIGxldCBlZGl0b3Jfb2ZfY29kZSA9IChpbml0X2lkLCBjb2RlKSA9PlxuICAvLyAgIHN3aXRjaCAoRWRpdG9yVXRpbC5lZGl0b3Jfb2ZfY29kZShpbml0X2lkLCBjb2RlKSkge1xuICAvLyAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIkV4ZXJjaXNlIGVycm9yOiBpbnZhbGlkIGNvZGVcIilcbiAgLy8gICB8IFNvbWUoeCkgPT4geFxuICAvLyAgIH07XG4gIC8vIGxldCBlZHNfb2Zfc3BlYzogc3BlYyA9PiBlZHMgPVxuICAvLyAgIChcbiAgLy8gICAgIHtcbiAgLy9cbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH0sXG4gIC8vICAgKSA9PiB7XG4gIC8vICAgICBsZXQgaWQgPSBuZXh0X2lkO1xuICAvLyAgICAgbGV0IChpZCwgcHJlbHVkZSkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgcHJlbHVkZSk7XG4gIC8vICAgICBsZXQgKGlkLCBjb3JyZWN0X2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGNvcnJlY3RfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfdGVzdHMudGVzdHMpO1xuICAvLyAgICAgICAoXG4gIC8vICAgICAgICAgaWQsXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgdGVzdHMsXG4gIC8vICAgICAgICAgICBudW1fcmVxdWlyZWQ6IHlvdXJfdGVzdHMubnVtX3JlcXVpcmVkLFxuICAvLyAgICAgICAgICAgbWluaW11bTogeW91cl90ZXN0cy5taW5pbXVtLFxuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9O1xuICAvLyAgICAgbGV0IChpZCwgeW91cl9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX2J1Z3MpID1cbiAgLy8gICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gIC8vICAgICAgICAgKChpZCwgYWNjKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gIC8vICAgICAgICAgICBsZXQgKGlkLCBpbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBpbXBsKTtcbiAgLy8gICAgICAgICAgIChpZCwgYWNjIEAgW3tpbXBsLCBoaW50fV0pO1xuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICAgKGlkLCBbXSksXG4gIC8vICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgICk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB0ZXN0cyk7XG4gIC8vICAgICAgIChpZCwge3Rlc3RzLCBoaW50c30pO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbmV4dF9pZDogaWQsXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9O1xuICAvLyAgIH07XG5cbiAgbGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoe2VkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBuZXdfbW9kZTogYm9vbCkgPT4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkczoge1xuICAgICAgLi4uZWRzLFxuICAgICAgcHJlbHVkZTogRWRpdG9yLnNldF9yZWFkX29ubHkoZWRzLnByZWx1ZGUsICFuZXdfbW9kZSksXG4gICAgfSxcbiAgfTtcblxuICBsZXQgdmlzaWJsZV9pbiA9IChwb3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0cnVlXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGZhbHNlXG4gICAgfCBZb3VySW1wbCA9PiB0cnVlXG4gICAgfCBIaWRkZW5CdWdzKF8pID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGVfb2Zfc3BlYyA9IChzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogc3RhdGUgPT4ge1xuICAgIGxldCBlZHMgPSBlZHNfb2Zfc3BlYyhzcGVjKTtcbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKHtwb3M6IFlvdXJJbXBsLCBlZHN9LCBpbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlID1cbiAgICAgICh7cG9zLCBffSBhcyBzdGF0ZTogc3RhdGUsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpID0+IHtcbiAgICBsZXQgemlwcGVycyA9XG4gICAgICBwb3NpdGlvbmVkX2VkaXRvcnMoc3RhdGUpXG4gICAgICB8PiBMaXN0LmZpbHRlcigoKHBvcywgXykpID0+IHZpc2libGVfaW4ocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSlcbiAgICAgIHw+IExpc3QubWFwKCgocG9zLCBlZGl0b3IpKSA9PiB7XG4gICAgICAgICAgIChwb3MsIFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChFZGl0b3IuKGVkaXRvci5zdGF0ZS56aXBwZXIpKSlcbiAgICAgICAgIH0pO1xuICAgIChwb3MsIHppcHBlcnMpO1xuICB9O1xuXG4gIGxldCB1bnBlcnNpc3Rfc3RhdGUgPVxuICAgICAgKFxuICAgICAgICAocG9zLCBwb3NpdGlvbmVkX3ppcHBlcnMpOiBwZXJzaXN0ZW50X3N0YXRlLFxuICAgICAgICB+c3BlYzogc3BlYyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZTogYm9vbCxcbiAgICAgIClcbiAgICAgIDogc3RhdGUgPT4ge1xuICAgIGxldCBsb29rdXAgPSAocG9zLCBkZWZhdWx0KSA9PlxuICAgICAgaWYgKHZpc2libGVfaW4ocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICBsZXQgcGVyc2lzdGVkX3ppcHBlciA9IExpc3QuYXNzb2MocG9zLCBwb3NpdGlvbmVkX3ppcHBlcnMpO1xuICAgICAgICBsZXQgemlwcGVyID0gUGVyc2lzdGVudFppcHBlci51bnBlcnNpc3QocGVyc2lzdGVkX3ppcHBlcik7XG4gICAgICAgIEVkaXRvci5pbml0KHppcHBlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihkZWZhdWx0KTtcbiAgICAgIH07XG4gICAgbGV0IHByZWx1ZGUgPSBsb29rdXAoUHJlbHVkZSwgc3BlYy5wcmVsdWRlKTtcbiAgICBsZXQgY29ycmVjdF9pbXBsID0gbG9va3VwKENvcnJlY3RJbXBsLCBzcGVjLmNvcnJlY3RfaW1wbCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBsb29rdXAoWW91clRlc3RzVmFsaWRhdGlvbiwgc3BlYy55b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgeW91cl9pbXBsID0gbG9va3VwKFlvdXJJbXBsLCBzcGVjLnlvdXJfaW1wbCk7XG4gICAgbGV0IChfLCBoaWRkZW5fYnVncykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICgoaSwgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgbGV0IGltcGwgPSBsb29rdXAoSGlkZGVuQnVncyhpKSwgaW1wbCk7XG4gICAgICAgICAgKGkgKyAxLCBoaWRkZW5fYnVncyBAIFt7aW1wbCwgaGludH1dKTtcbiAgICAgICAgfSxcbiAgICAgICAgKDAsIFtdKSxcbiAgICAgICAgc3BlYy5oaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXN0cyA9IGxvb2t1cChIaWRkZW5UZXN0cywgc3BlYy5oaWRkZW5fdGVzdHMudGVzdHMpO1xuXG4gICAgc2V0X2luc3RydWN0b3JfbW9kZShcbiAgICAgIHtcbiAgICAgICAgcG9zLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICB0aXRsZTogc3BlYy50aXRsZSxcbiAgICAgICAgICB2ZXJzaW9uOiBzcGVjLnZlcnNpb24sXG4gICAgICAgICAgbW9kdWxlX25hbWU6IHNwZWMubW9kdWxlX25hbWUsXG4gICAgICAgICAgcHJvbXB0OiBzcGVjLnByb21wdCxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb246IHNwZWMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHNwZWMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIHByb3ZpZGVkOiBzcGVjLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgaGludHM6IHNwZWMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ludGF4X3Rlc3RzOiBzcGVjLnN5bnRheF90ZXN0cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBpbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAgfTtcblxuICAvLyAjIFN0aXRjaGluZ1xuXG4gIG1vZHVsZSBUZXJtSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBUZXJtQmFzZS5VRXhwLnQsXG4gICAgICB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy50LFxuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIFN0YXRpY3NJdGVtID0ge1xuICAgIHR5cGUgdCA9IENhY2hlZFN0YXRpY3Muc3RhdGljcztcbiAgfTtcblxuICB0eXBlIHN0aXRjaGVkKCdhKSA9IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb246ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgeW91cl90ZXN0c1xuICAgIHVzZXJfaW1wbDogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGxcbiAgICB1c2VyX3Rlc3RzOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbCArIHlvdXJfdGVzdHNcbiAgICBwcmVsdWRlOiAnYSwgLy8gcHJlbHVkZVxuICAgIGluc3RydWN0b3I6ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgaGlkZGVuX3Rlc3RzLnRlc3RzIC8vIFRPRE8gb25seSBuZWVkcyB0byBydW4gaW4gaW5zdHJ1Y3RvciBtb2RlXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3QoJ2EpLCAvLyBwcmVsdWRlICsgaGlkZGVuX2J1Z3NbaV0uaW1wbCArIHlvdXJfdGVzdHMsXG4gICAgaGlkZGVuX3Rlc3RzOiAnYSxcbiAgfTtcblxuICBsZXQgd3JhcF9maWx0ZXIgPSAoYWN0OiBGaWx0ZXJBY3Rpb24uYWN0aW9uLCB0ZXJtOiBUZXJtLlVFeHAudCk6IFRlcm0uVUV4cC50ID0+XG4gICAgVGVybUJhc2UuVUV4cC57XG4gICAgICB0ZXJtOlxuICAgICAgICBUZXJtQmFzZS5VRXhwLkZpbHRlcihcbiAgICAgICAgICBGaWx0ZXJBY3Rpb24uKGFjdCwgT25lKSxcbiAgICAgICAgICB7dGVybTogQ29uc3RydWN0b3IoXCIkZVwiKSwgaWRzOiBbSWQubWsoKV19LFxuICAgICAgICAgIHRlcm0sXG4gICAgICAgICksXG4gICAgICBpZHM6IFtJZC5taygpXSxcbiAgICB9O1xuXG4gIGxldCB3cmFwID0gKHRlcm0sIGVkaXRvcjogRWRpdG9yLnQpOiBUZXJtSXRlbS50ID0+IHtcbiAgICB0ZXJtLFxuICAgIHRlcm1fcmFuZ2VzOiBlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcyxcbiAgfTtcblxuICBsZXQgdGVybV9vZiA9IChlZGl0b3I6IEVkaXRvci50KTogVGVybS5VRXhwLnQgPT5cbiAgICBlZGl0b3Iuc3RhdGUubWV0YS52aWV3X3Rlcm07XG5cbiAgbGV0IHN0aXRjaDMgPSAoZWQxOiBFZGl0b3IudCwgZWQyOiBFZGl0b3IudCwgZWQzOiBFZGl0b3IudCkgPT5cbiAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAoXG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodGVybV9vZihlZDEpLCB0ZXJtX29mKGVkMikpLFxuICAgICAgdGVybV9vZihlZDMpLFxuICAgICk7XG5cbiAgbGV0IHN0aXRjaF90ZXJtID0gKHtlZHMsIF99OiBzdGF0ZSk6IHN0aXRjaGVkKFRlcm1JdGVtLnQpID0+IHtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgdXNlcl9pbXBsX3Rlcm0gPSB7XG4gICAgICBsZXQgeW91cl9pbXBsX3Rlcm0gPVxuICAgICAgICBlZHMueW91cl9pbXBsIHw+IHRlcm1fb2YgfD4gd3JhcF9maWx0ZXIoRmlsdGVyQWN0aW9uLlN0ZXApO1xuICAgICAgbGV0IHByZWx1ZGVfdGVybSA9XG4gICAgICAgIGVkcy5wcmVsdWRlIHw+IHRlcm1fb2YgfD4gd3JhcF9maWx0ZXIoRmlsdGVyQWN0aW9uLkV2YWwpO1xuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHByZWx1ZGVfdGVybSwgeW91cl9pbXBsX3Rlcm0pO1xuICAgIH07XG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbl90ZXJtID1cbiAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIGVkcy5jb3JyZWN0X2ltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgdXNlcl90ZXN0c190ZXJtID1cbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh1c2VyX2ltcGxfdGVybSwgdGVybV9vZihlZHMueW91cl90ZXN0cy50ZXN0cykpO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLmhpZGRlbl90ZXN0cy50ZXN0cykpO1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbjogd3JhcCh0ZXN0X3ZhbGlkYXRpb25fdGVybSwgZWRzLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgdXNlcl9pbXBsOiB3cmFwKHVzZXJfaW1wbF90ZXJtLCBlZHMueW91cl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IHdyYXAodXNlcl90ZXN0c190ZXJtLCBlZHMueW91cl90ZXN0cy50ZXN0cyksXG4gICAgICAvLyBpbnN0cnVjdG9yIHdvcmtzIGhlcmUgYXMgbG9uZyBhcyB5b3UgZG9uJ3Qgc2hhZG93IGFueXRoaW5nIGluIHRoZSBwcmVsdWRlXG4gICAgICBwcmVsdWRlOiB3cmFwKGluc3RydWN0b3IsIGVkcy5wcmVsdWRlKSxcbiAgICAgIGluc3RydWN0b3I6IHdyYXAoaW5zdHJ1Y3RvciwgZWRzLmNvcnJlY3RfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHQpOiBUZXJtSXRlbS50ID0+XG4gICAgICAgICAgICB3cmFwKHN0aXRjaDMoZWRzLnByZWx1ZGUsIHQuaW1wbCwgZWRzLnlvdXJfdGVzdHMudGVzdHMpLCB0LmltcGwpLFxuICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIGhpZGRlbl90ZXN0czogd3JhcChoaWRkZW5fdGVzdHNfdGVybSwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyksXG4gICAgfTtcbiAgfTtcbiAgbGV0IHN0aXRjaF90ZXJtID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX3Rlcm0pO1xuXG4gIHR5cGUgc3RpdGNoZWRfc3RhdGljcyA9IHN0aXRjaGVkKFN0YXRpY3NJdGVtLnQpO1xuXG4gIC8qIE11bHRpcGxlIHN0aXRjaGluZ3MgYXJlIG5lZWRlZCBmb3IgZWFjaCBleGVyY2lzZVxuICAgICAoc2VlIGNvbW1lbnRzIGluIHRoZSBzdGl0Y2hlZCB0eXBlIGFib3ZlKVxuXG4gICAgIFN0aXRjaGluZyBpcyBuZWNlc3NhcnkgdG8gY29uY2F0ZW5hdGUgdGVybXNcbiAgICAgZnJvbSBkaWZmZXJlbnQgZWRpdG9ycywgd2hpY2ggYXJlIHRoZW4gdHlwZWNoZWNrZWQuICovXG4gIGxldCBzdGl0Y2hfc3RhdGljID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHQ6IHN0aXRjaGVkKFRlcm1JdGVtLnQpKTogc3RpdGNoZWRfc3RhdGljcyA9PiB7XG4gICAgbGV0IG1rID0gKHt0ZXJtLCB0ZXJtX3JhbmdlcywgX306IFRlcm1JdGVtLnQpOiBTdGF0aWNzSXRlbS50ID0+IHtcbiAgICAgIGxldCBpbmZvX21hcCA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncywgdGVybSk7XG4gICAgICB7XG4gICAgICAgIHRlcm0sXG4gICAgICAgIGVycm9yX2lkczogU3RhdGljcy5NYXAuZXJyb3JfaWRzKHRlcm1fcmFuZ2VzLCBpbmZvX21hcCksXG4gICAgICAgIGluZm9fbWFwLFxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBpbnN0cnVjdG9yID0gbWsodC5pbnN0cnVjdG9yKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IG1rKHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgIHVzZXJfaW1wbDogbWsodC51c2VyX2ltcGwpLFxuICAgICAgdXNlcl90ZXN0czogbWsodC51c2VyX3Rlc3RzKSxcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsIC8vIHdvcmtzIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzOiBMaXN0Lm1hcChtaywgdC5oaWRkZW5fYnVncyksXG4gICAgICBoaWRkZW5fdGVzdHM6IG1rKHQuaGlkZGVuX3Rlc3RzKSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfc3RhdGljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX3N0YXRpYyk7XG5cbiAgbGV0IHN0YXRpY3Nfb2Zfc3RpY2hlZCA9XG4gICAgICAoc3RhdGU6IHN0YXRlLCBzOiBzdGl0Y2hlZChTdGF0aWNzSXRlbS50KSk6IFN0YXRpY3NJdGVtLnQgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBzLnByZWx1ZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IHMuaW5zdHJ1Y3RvclxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiBzLnRlc3RfdmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBzLnVzZXJfdGVzdHNcbiAgICB8IFlvdXJJbXBsID0+IHMudXNlcl9pbXBsXG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gTGlzdC5udGgocy5oaWRkZW5fYnVncywgaWR4KVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gcy5oaWRkZW5fdGVzdHNcbiAgICB9O1xuXG4gIGxldCBzdGF0aWNzX29mID0gKH5zZXR0aW5ncywgZXhlcmNpc2U6IHN0YXRlKTogU3RhdGljc0l0ZW0udCA9PlxuICAgIGV4ZXJjaXNlXG4gICAgfD4gc3RpdGNoX3Rlcm1cbiAgICB8PiBzdGl0Y2hfc3RhdGljKHNldHRpbmdzKVxuICAgIHw+IHN0YXRpY3Nfb2Zfc3RpY2hlZChleGVyY2lzZSk7XG5cbiAgbGV0IHByZWx1ZGVfa2V5ID0gXCJwcmVsdWRlXCI7XG4gIGxldCB0ZXN0X3ZhbGlkYXRpb25fa2V5ID0gXCJ0ZXN0X3ZhbGlkYXRpb25cIjtcbiAgbGV0IHVzZXJfaW1wbF9rZXkgPSBcInVzZXJfaW1wbFwiO1xuICBsZXQgdXNlcl90ZXN0c19rZXkgPSBcInVzZXJfdGVzdHNcIjtcbiAgbGV0IGluc3RydWN0b3Jfa2V5ID0gXCJpbnN0cnVjdG9yXCI7XG4gIGxldCBoaWRkZW5fYnVnc19rZXkgPSBuID0+IFwiaGlkZGVuX2J1Z3NfXCIgKysgc3RyaW5nX29mX2ludChuKTtcbiAgbGV0IGhpZGRlbl90ZXN0c19rZXkgPSBcImhpZGRlbl90ZXN0c1wiO1xuXG4gIGxldCBrZXlfZm9yX3N0YXRpY3MgPSAoc3RhdGU6IHN0YXRlKTogc3RyaW5nID0+XG4gICAgc3dpdGNoIChzdGF0ZS5wb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gcHJlbHVkZV9rZXlcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3Jfa2V5XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRlc3RfdmFsaWRhdGlvbl9rZXlcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gdXNlcl90ZXN0c19rZXlcbiAgICB8IFlvdXJJbXBsID0+IHVzZXJfaW1wbF9rZXlcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBoaWRkZW5fYnVnc19rZXkoaWR4KVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaGlkZGVuX3Rlc3RzX2tleVxuICAgIH07XG5cbiAgbGV0IHNwbGljZWRfZWxhYnMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBESEV4cC50KSkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZTogXyxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IGVsYWIgPSAoczogQ2FjaGVkU3RhdGljcy5zdGF0aWNzKSA9PlxuICAgICAgSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3MsIHMuaW5mb19tYXAsIHMudGVybSk7XG4gICAgW1xuICAgICAgKHRlc3RfdmFsaWRhdGlvbl9rZXksIGVsYWIodGVzdF92YWxpZGF0aW9uKSksXG4gICAgICAodXNlcl9pbXBsX2tleSwgZWxhYih1c2VyX2ltcGwpKSxcbiAgICAgICh1c2VyX3Rlc3RzX2tleSwgZWxhYih1c2VyX3Rlc3RzKSksXG4gICAgICAoaW5zdHJ1Y3Rvcl9rZXksIGVsYWIoaW5zdHJ1Y3RvcikpLFxuICAgICAgKGhpZGRlbl90ZXN0c19rZXksIGVsYWIoaGlkZGVuX3Rlc3RzKSksXG4gICAgXVxuICAgIEAgKFxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwaSgobiwgaGlkZGVuX2J1ZzogU3RhdGljc0l0ZW0udCkgPT5cbiAgICAgICAgICAgKGhpZGRlbl9idWdzX2tleShuKSwgZWxhYihoaWRkZW5fYnVnKSlcbiAgICAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIGxldCBta19zdGF0aWNzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgU3RhdGljc0l0ZW0udCkpID0+IHtcbiAgICBsZXQgc3RpdGNoZWQgPSBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIFtcbiAgICAgIChwcmVsdWRlX2tleSwgc3RpdGNoZWQucHJlbHVkZSksXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgc3RpdGNoZWQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBzdGl0Y2hlZC51c2VyX2ltcGwpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBzdGl0Y2hlZC51c2VyX3Rlc3RzKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgc3RpdGNoZWQuaW5zdHJ1Y3RvciksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgc3RpdGNoZWQuaGlkZGVuX3Rlc3RzKSxcbiAgICBdXG4gICAgQCBMaXN0Lm1hcGkoXG4gICAgICAgIChuLCBoaWRkZW5fYnVnOiBTdGF0aWNzSXRlbS50KSA9PiAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBoaWRkZW5fYnVnKSxcbiAgICAgICAgc3RpdGNoZWQuaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICB9O1xuXG4gIG1vZHVsZSBEeW5hbWljc0l0ZW0gPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgdGVybTogVGVybUJhc2UuVUV4cC50LFxuICAgICAgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQsXG4gICAgICByZXN1bHQ6IE1vZGVsUmVzdWx0LnQsXG4gICAgfTtcbiAgICBsZXQgZW1wdHk6IHQgPSB7XG4gICAgICB0ZXJtOiB7XG4gICAgICAgIHRlcm06IFR1cGxlKFtdKSxcbiAgICAgICAgaWRzOiBbSWQubWsoKV0sXG4gICAgICB9LFxuICAgICAgaW5mb19tYXA6IElkLk1hcC5lbXB0eSxcbiAgICAgIHJlc3VsdDogTm9FbGFiLFxuICAgIH07XG4gICAgbGV0IHN0YXRpY3Nfb25seSA9ICh7dGVybSwgaW5mb19tYXAsIF99OiBTdGF0aWNzSXRlbS50KTogdCA9PiB7XG4gICAgICB7dGVybSwgaW5mb19tYXAsIHJlc3VsdDogTm9FbGFifTtcbiAgICB9O1xuICB9O1xuXG4gIC8qIEdpdmVuIHRoZSBldmFsdWF0aW9uIHJlc3VsdHMsIGNvbGxlY3RzIHRoZVxuICAgICByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IgcHJvZHVjaW5nIGR5bmFtaWNcbiAgICAgZmVlZGJhY2sqL1xuICBsZXQgc3RpdGNoX2R5bmFtaWMgPVxuICAgICAgKFxuICAgICAgICBzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgcmVzdWx0czogb3B0aW9uKE1vZGVsUmVzdWx0cy50KSxcbiAgICAgIClcbiAgICAgIDogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpID0+IHtcbiAgICBsZXQge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIHByZWx1ZGUsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfSA9XG4gICAgICBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIGxldCByZXN1bHRfb2YgPSBrZXkgPT5cbiAgICAgIHN3aXRjaCAocmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IE1vZGVsUmVzdWx0Lk5vRWxhYlxuICAgICAgfCBTb21lKHJlc3VsdHMpID0+XG4gICAgICAgIE1vZGVsUmVzdWx0cy5sb29rdXAocmVzdWx0cywga2V5KVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9TW9kZWxSZXN1bHQuTm9FbGFiKVxuICAgICAgfTtcblxuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb24gPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogdGVzdF92YWxpZGF0aW9uLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiB0ZXN0X3ZhbGlkYXRpb24uaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHRlc3RfdmFsaWRhdGlvbl9rZXkpLFxuICAgICAgfTtcblxuICAgIGxldCB1c2VyX2ltcGwgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogdXNlcl9pbXBsLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiB1c2VyX2ltcGwuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfaW1wbF9rZXkpLFxuICAgICAgfTtcblxuICAgIGxldCB1c2VyX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHVzZXJfdGVzdHMudGVybSxcbiAgICAgICAgaW5mb19tYXA6IHVzZXJfdGVzdHMuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfdGVzdHNfa2V5KSxcbiAgICAgIH07XG4gICAgbGV0IHByZWx1ZGUgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogcHJlbHVkZS50ZXJtLFxuICAgICAgICBpbmZvX21hcDogcHJlbHVkZS5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgICB9O1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IGluc3RydWN0b3IudGVybSxcbiAgICAgICAgaW5mb19tYXA6IGluc3RydWN0b3IuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGluc3RydWN0b3Jfa2V5KSxcbiAgICAgIH07XG4gICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgIExpc3QubWFwaShcbiAgICAgICAgKG4sIHN0YXRpY3NfaXRlbTogU3RhdGljc0l0ZW0udCkgPT5cbiAgICAgICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICAgICAgdGVybTogc3RhdGljc19pdGVtLnRlcm0sXG4gICAgICAgICAgICBpbmZvX21hcDogc3RhdGljc19pdGVtLmluZm9fbWFwLFxuICAgICAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YoaGlkZGVuX2J1Z3Nfa2V5KG4pKSxcbiAgICAgICAgICB9LFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiBoaWRkZW5fdGVzdHMudGVybSxcbiAgICAgICAgaW5mb19tYXA6IGhpZGRlbl90ZXN0cy5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YoaGlkZGVuX3Rlc3RzX2tleSksXG4gICAgICB9O1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PlxuICAgIGlmIChzZXR0aW5ncy5zdGF0aWNzICYmIHNldHRpbmdzLmR5bmFtaWNzKSB7XG4gICAgICBzdGl0Y2hfZHluYW1pYyhzZXR0aW5ncywgc3RhdGUsIHJlc3VsdHMpO1xuICAgIH0gZWxzZSBpZiAoc2V0dGluZ3Muc3RhdGljcykge1xuICAgICAgbGV0IHQgPSBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgICB1c2VyX2ltcGw6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC51c2VyX2ltcGwpLFxuICAgICAgICB1c2VyX3Rlc3RzOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl90ZXN0cyksXG4gICAgICAgIGluc3RydWN0b3I6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5pbnN0cnVjdG9yKSxcbiAgICAgICAgcHJlbHVkZTogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnByZWx1ZGUpLFxuICAgICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAoRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSwgdC5oaWRkZW5fYnVncyksXG4gICAgICAgIGhpZGRlbl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LmhpZGRlbl90ZXN0cyksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7XG4gICAgICAgIHRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICB1c2VyX2ltcGw6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHN0YXRlLmVkcy5oaWRkZW5fYnVncyksIF8gPT5cbiAgICAgICAgICAgIER5bmFtaWNzSXRlbS5lbXB0eVxuICAgICAgICAgICksXG4gICAgICAgIGhpZGRlbl90ZXN0czogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgfTtcbiAgICB9O1xuICBsZXQgc3RpdGNoX2R5bmFtaWMgPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfZHluYW1pYyk7XG5cbiAgLy8gTW9kdWxlIEV4cG9ydFxuXG4gIGxldCBlZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IHNlcmlhbGl6YXRpb24gPSBaaXBwZXIuc2hvdyh6aXBwZXIpO1xuICAgIC8vIGxldCBzdHJpbmdfbGl0ZXJhbCA9IFwiXFxcIlwiICsrIFN0cmluZy5lc2NhcGVkKHNlcmlhbGl6YXRpb24pICsrIFwiXFxcIlwiO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBzZXJpYWxpemF0aW9uKTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKGVkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IHByZWZpeCArKyByZWNvcmQgKysgXCJcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCB0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCA9IChmbXQsIGVkaXRvcjogRWRpdG9yLnQpID0+IHtcbiAgICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBsZXQgY29kZSA9IFByaW50ZXIudG9fc3RyaW5nX2Jhc2ljKHppcHBlcik7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIFwiXFxcIlwiICsrIFN0cmluZy5lc2NhcGVkKGNvZGUpICsrIFwiXFxcIlwiKTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgcHJlZml4ID1cbiAgICAgIFwibGV0IHByb21wdCA9IFwiXG4gICAgICArKyBtb2R1bGVfbmFtZVxuICAgICAgKysgXCJfcHJvbXB0LnByb21wdFxcblwiXG4gICAgICArKyBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IEV4ZXJjaXNlLnRyYW5zaXRpb24oXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcCh0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IHByZWZpeCArKyByZWNvcmQgKysgXCIpXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X2dyYWRpbmdfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgaGVhZGVyID0gb3V0cHV0X2hlYWRlcl9ncmFkaW5nKG1vZHVsZV9uYW1lKTtcbiAgICBsZXQgcHJlZml4ID0gXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKGVkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IGhlYWRlciArKyBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgYmxhbmtfc3BlYyA9XG4gICAgICAoXG4gICAgICAgIH50aXRsZSxcbiAgICAgICAgfm1vZHVsZV9uYW1lLFxuICAgICAgICB+cG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICB+cmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIH5wcm92aWRlZF90ZXN0cyxcbiAgICAgICAgfm51bV93cm9uZ19pbXBscyxcbiAgICAgICkgPT4ge1xuICAgIGxldCBwcmVsdWRlID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgY29ycmVjdF9pbXBsID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgIExpc3QuaW5pdChcbiAgICAgICAgbnVtX3dyb25nX2ltcGxzLFxuICAgICAgICBpID0+IHtcbiAgICAgICAgICBsZXQgemlwcGVyID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICAgICAgICB7aW1wbDogemlwcGVyLCBoaW50OiBcIlRPRE86IGhpbnQgXCIgKysgc3RyaW5nX29mX2ludChpKX07XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIHtcbiAgICAgIHRpdGxlLFxuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBFeGVyY2lzZUVudi5kZWZhdWx0LFxuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZF90ZXN0cyxcbiAgICAgICAgcHJvdmlkZWQ6IHByb3ZpZGVkX3Rlc3RzLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgIGhpbnRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBzeW50YXhfdGVzdHM6IFtdLFxuICAgIH07XG4gIH07XG5cbiAgLy8gRnJvbSBTdG9yZVxuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBleGVyY2lzZV9leHBvcnQgPSB7XG4gICAgY3VyX2V4ZXJjaXNlOiBrZXksXG4gICAgZXhlcmNpc2VfZGF0YTogbGlzdCgoa2V5LCBwZXJzaXN0ZW50X3N0YXRlKSksXG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZV9leGVyY2lzZSA9IChleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfD4gc2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlXG4gICAgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemVfZXhlcmNpc2UgPSAoZGF0YSwgfnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBkYXRhXG4gICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgIHw+IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cFxuICAgIHw+IHVucGVyc2lzdF9zdGF0ZSh+c3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCA9IGRhdGEgPT4ge1xuICAgIGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBleGVyY2lzZV9leHBvcnRfb2Zfc2V4cDtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZS5FeGVyY2lzZUVudikgPT4ge1xuICBvcGVuIEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJjZW50YWdlID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludHMgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNjb3JlID0gKHBvaW50cywgcG9pbnRzKTtcblxuICBsZXQgc2NvcmVfb2ZfcGVyY2VudCA9IChwZXJjZW50LCBtYXhfcG9pbnRzKSA9PiB7XG4gICAgbGV0IG1heF9wb2ludHMgPSBmbG9hdF9vZl9pbnQobWF4X3BvaW50cyk7XG4gICAgKHBlcmNlbnQgKi4gbWF4X3BvaW50cywgbWF4X3BvaW50cyk7XG4gIH07XG5cbiAgbW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgcmVxdWlyZWQ6IGludCxcbiAgICAgIHByb3ZpZGVkOiBpbnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF9yZXN1bHRzLFxuICAgICAgICByZXF1aXJlZDogZWRzLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBlZHMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gMC4wXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICBsZXQgbnVtX3Rlc3RzID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy50b3RhbCk7XG4gICAgICAgIGxldCByZXF1aXJlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICBsZXQgcHJvdmlkZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnByb3ZpZGVkKTtcbiAgICAgICAgbGV0IG51bV9wYXNzaW5nID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxuICAgICAgICByZXF1aXJlZCAtLiBwcm92aWRlZCA8PSAwLjAgfHwgbnVtX3Rlc3RzIDw9IDAuMFxuICAgICAgICAgID8gMC4wXG4gICAgICAgICAgOiBudW1fcGFzc2luZ1xuICAgICAgICAgICAgLy4gbnVtX3Rlc3RzXG4gICAgICAgICAgICAqLiAoXG4gICAgICAgICAgICAgIEZsb2F0Lm1heChcbiAgICAgICAgICAgICAgICAwLixcbiAgICAgICAgICAgICAgICBGbG9hdC5taW4obnVtX3Rlc3RzIC0uIHByb3ZpZGVkLCByZXF1aXJlZCAtLiBwcm92aWRlZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy4gKHJlcXVpcmVkIC0uIHByb3ZpZGVkKVxuICAgICAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7cmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKX07XG5cbiAgICBsZXQgaGlkZGVuX2J1Z19zdGF0dXMgPVxuICAgICAgICAoXG4gICAgICAgICAgdGVzdF92YWxpZGF0aW9uX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIGhpZGRlbl9idWdfZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIClcbiAgICAgICAgOiBUZXN0U3RhdHVzLnQgPT4ge1xuICAgICAgc3dpdGNoIChcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHRlc3RfdmFsaWRhdGlvbl9kYXRhLnJlc3VsdCksXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhoaWRkZW5fYnVnX2RhdGEucmVzdWx0KSxcbiAgICAgICkge1xuICAgICAgfCAoTm9uZSwgXylcbiAgICAgIHwgKF8sIE5vbmUpID0+IEluZGV0XG4gICAgICB8IChTb21lKHRlc3RfdmFsaWRhdGlvbl9kYXRhKSwgU29tZShoaWRkZW5fYnVnX2RhdGEpKSA9PlxuICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X21hcCA9IHRlc3RfdmFsaWRhdGlvbl9kYXRhLnRlc3RfbWFwO1xuICAgICAgICBsZXQgaGlkZGVuX2J1Z190ZXN0X21hcCA9IGhpZGRlbl9idWdfZGF0YS50ZXN0X21hcDtcblxuICAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgIGhpZGRlbl9idWdfdGVzdF9tYXBcbiAgICAgICAgICB8PiBMaXN0LmZpbmRfb3B0KCgoaWQsIGluc3RhbmNlX3JlcG9ydHMpKSA9PiB7XG4gICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VfcmVwb3J0cyk7XG4gICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3NcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWwgPT5cbiAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzID1cbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3Rlc3RfbWFwIHw+IFRlc3RNYXAubG9va3VwKGlkKTtcbiAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cykge1xuICAgICAgICAgICAgICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lKHJlcG9ydHMpID0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKHJlcG9ydHMpO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3MgPT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgIHN3aXRjaCAoZm91bmQpIHtcbiAgICAgICAgfCBOb25lID0+IEZhaWxcbiAgICAgICAgfCBTb21lKF8pID0+IFBhc3NcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTsgLy8gZm9yIGVhY2ggaGlkZGVuIGJ1Z1xuICAgIC8vICAgaW4gdGhlIHRlc3QgcmVzdWx0cyBkYXRhLCBmaW5kIGEgdGVzdCBJRCB0aGF0IHBhc3NlcyB0ZXN0IHZhbGlkYXRpb24gYnV0IGZhaWxzIGFnYWluc3RcblxuICAgIGxldCBtayA9XG4gICAgICAgIChcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpLFxuICAgICAgICAgIH5oaWRkZW5fYnVnczogbGlzdChEeW5hbWljc0l0ZW0udCksXG4gICAgICAgIClcbiAgICAgICAgOiB0ID0+IHtcbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTGlzdC5tYXAoaGlkZGVuX2J1Z19zdGF0dXModGVzdF92YWxpZGF0aW9uKSwgaGlkZGVuX2J1Z3MpO1xuICAgICAgbGV0IGhpbnRzID1cbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHdyb25nX2ltcGw6IHdyb25nX2ltcGwoRWRpdG9yLnQpKSA9PiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z3Nfc3RhdGUsXG4gICAgICAgICk7XG4gICAgICBsZXQgcmVzdWx0cyA9IExpc3QuY29tYmluZShyZXN1bHRzLCBoaW50cyk7XG4gICAgICB7cmVzdWx0czogcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPSByZXBvcnQucmVzdWx0cztcbiAgICAgIGxldCBudW1fd3JvbmdfaW1wbHMgPSBMaXN0Lmxlbmd0aChyZXN1bHRzKTtcbiAgICAgIGxldCBudW1fcGFzc2VkID1cbiAgICAgICAgcmVzdWx0c1xuICAgICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgICBzd2l0Y2ggKG51bV93cm9uZ19pbXBscykge1xuICAgICAgfCAwID0+IDEuMFxuICAgICAgfCBfID0+IGZsb2F0X29mX2ludChudW1fcGFzc2VkKSAvLiBmbG9hdF9vZl9pbnQobnVtX3dyb25nX2ltcGxzKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8gVE9ETyBtb3ZlIHRvIHNlcGFyYXRlIG1vZHVsZVxuXG4gICAgbGV0IHN1bW1hcnlfc3RyID0gKH50b3RhbCwgfmZvdW5kKTogc3RyaW5nID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dG90YWwsXG4gICAgICAgIH5wPWZvdW5kLFxuICAgICAgICB+cT0wLFxuICAgICAgICB+bl9zdHI9XCJidWdcIixcbiAgICAgICAgfm5zX3N0cj1cImJ1Z3NcIixcbiAgICAgICAgfnBfc3RyPVwiZXhwb3NlZFwiLFxuICAgICAgICB+cV9zdHI9XCJcIixcbiAgICAgICAgfnJfc3RyPVwidW5yZXZlYWxlZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKGJvb2wsIGhpbnQpKSxcbiAgICAgIHBlcmNlbnRhZ2UsXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+eW91cl9pbXBsOiBFZGl0b3IudCwgfnRlc3RzOiBzeW50YXhfdGVzdHMpOiB0ID0+IHtcbiAgICAgIGxldCB1c2VyX2ltcGxfdGVybSA9IHlvdXJfaW1wbC5zdGF0ZS5tZXRhLnZpZXdfdGVybTtcblxuICAgICAgbGV0IHByZWRpY2F0ZXMgPVxuICAgICAgICBMaXN0Lm1hcCgoKF8sIHApKSA9PiBTeW50YXhUZXN0LnByZWRpY2F0ZV9mbihwKSwgdGVzdHMpO1xuICAgICAgbGV0IGhpbnRzID0gTGlzdC5tYXAoKChoLCBfKSkgPT4gaCwgdGVzdHMpO1xuICAgICAgbGV0IHN5bnRheF9yZXN1bHRzID0gU3ludGF4VGVzdC5jaGVjayh1c2VyX2ltcGxfdGVybSwgcHJlZGljYXRlcyk7XG5cbiAgICAgIHtcbiAgICAgICAgaGludGVkX3Jlc3VsdHM6XG4gICAgICAgICAgTGlzdC5tYXAyKChyLCBoKSA9PiAociwgaCksIHN5bnRheF9yZXN1bHRzLnJlc3VsdHMsIGhpbnRzKSxcbiAgICAgICAgcGVyY2VudGFnZTogc3ludGF4X3Jlc3VsdHMucGVyY2VudGFnZSxcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgSW1wbEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludHM6IGxpc3Qoc3RyaW5nKSxcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKFRlc3RTdGF0dXMudCwgc3RyaW5nKSksXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+aGludHM6IGxpc3Qoc3RyaW5nKSwgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKTogdCA9PiB7XG4gICAgICBsZXQgaGludGVkX3Jlc3VsdHMgPVxuICAgICAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuICAgICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICAgIGxldCBzdGF0dXNlcyA9IHRlc3RfcmVzdWx0cy5zdGF0dXNlcztcbiAgICAgICAgICBVdGlsLkxpc3RVdGlsLnppcF9kZWZhdWx0cyhcbiAgICAgICAgICAgIHN0YXR1c2VzLFxuICAgICAgICAgICAgaGludHMsXG4gICAgICAgICAgICBIYXozbGNvcmUuVGVzdFN0YXR1cy5JbmRldCxcbiAgICAgICAgICAgIFwiTm8gaGludCBhdmFpbGFibGUuXCIsXG4gICAgICAgICAgKTtcblxuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICBVdGlsLkxpc3RVdGlsLnppcF9kZWZhdWx0cyhcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgaGludHMsXG4gICAgICAgICAgICBIYXozbGNvcmUuVGVzdFN0YXR1cy5JbmRldCxcbiAgICAgICAgICAgIFwiRXhlcmNpc2UgY29uZmlndXJhdGlvbiBlcnJvcjogSGludCB3aXRob3V0IGEgdGVzdC5cIixcbiAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgICB7aGludHMsIHRlc3RfcmVzdWx0cywgaGludGVkX3Jlc3VsdHN9O1xuICAgIH07XG5cbiAgICBsZXQgdG90YWwgPSAocmVwb3J0OiB0KSA9PiBMaXN0Lmxlbmd0aChyZXBvcnQuaGludGVkX3Jlc3VsdHMpO1xuICAgIGxldCBudW1fcGFzc2VkID0gKHJlcG9ydDogdCkgPT4ge1xuICAgICAgcmVwb3J0LmhpbnRlZF9yZXN1bHRzXG4gICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgIHw+IExpc3QubGVuZ3RoO1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQsIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBzeW50YXhfcmVwb3J0LnBlcmNlbnRhZ2VcbiAgICAgICouIChmbG9hdF9vZl9pbnQobnVtX3Bhc3NlZChyZXBvcnQpKSAvLiBmbG9hdF9vZl9pbnQodG90YWwocmVwb3J0KSkpO1xuICAgIH07XG5cbiAgICBsZXQgdGVzdF9zdW1tYXJ5X3N0ciA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgICAgICB+cD10ZXN0X3Jlc3VsdHMuZmFpbGluZyxcbiAgICAgICAgfnE9dGVzdF9yZXN1bHRzLnVuZmluaXNoZWQsXG4gICAgICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICAgICAgfm5zX3N0cj1cInRlc3RzXCIsXG4gICAgICAgIH5wX3N0cj1cImZhaWxpbmdcIixcbiAgICAgICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgICAgICB+cl9zdHI9XCJ2YWxpZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBHcmFkaW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQ6IFRlc3RWYWxpZGF0aW9uUmVwb3J0LnQsXG4gICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydDogTXV0YXRpb25UZXN0aW5nUmVwb3J0LnQsXG4gICAgICBzeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCxcbiAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQ6IEltcGxHcmFkaW5nUmVwb3J0LnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgfnN0aXRjaGVkX2R5bmFtaWNzOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkpID0+IHtcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogZWRzLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQ6XG4gICAgICAgIFRlc3RWYWxpZGF0aW9uUmVwb3J0Lm1rKFxuICAgICAgICAgIGVkcyxcbiAgICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoc3RpdGNoZWRfZHluYW1pY3MudGVzdF92YWxpZGF0aW9uLnJlc3VsdCksXG4gICAgICAgICksXG4gICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydDpcbiAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0Lm1rKFxuICAgICAgICAgIH50ZXN0X3ZhbGlkYXRpb249c3RpdGNoZWRfZHluYW1pY3MudGVzdF92YWxpZGF0aW9uLFxuICAgICAgICAgIH5oaWRkZW5fYnVnc19zdGF0ZT1lZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgfmhpZGRlbl9idWdzPXN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl9idWdzLFxuICAgICAgICApLFxuICAgICAgc3ludGF4X3JlcG9ydDpcbiAgICAgICAgU3ludGF4UmVwb3J0Lm1rKH55b3VyX2ltcGw9ZWRzLnlvdXJfaW1wbCwgfnRlc3RzPWVkcy5zeW50YXhfdGVzdHMpLFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDpcbiAgICAgICAgSW1wbEdyYWRpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfmhpbnRzPWVkcy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfnRlc3RfcmVzdWx0cz1cbiAgICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy5oaWRkZW5fdGVzdHMucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICB9O1xuXG4gICAgbGV0IG92ZXJhbGxfc2NvcmUgPVxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydCxcbiAgICAgICAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0LFxuICAgICAgICAgICAgc3ludGF4X3JlcG9ydCxcbiAgICAgICAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQsXG4gICAgICAgICAgICBfLFxuICAgICAgICAgIH06IHQsXG4gICAgICAgIClcbiAgICAgICAgOiBzY29yZSA9PiB7XG4gICAgICBsZXQgKHR2X3BvaW50cywgdHZfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQucGVyY2VudGFnZSh0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24udGVzdF92YWxpZGF0aW9uLFxuICAgICAgICApO1xuICAgICAgbGV0IChtdF9wb2ludHMsIG10X21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIE11dGF0aW9uVGVzdGluZ1JlcG9ydC5wZXJjZW50YWdlKG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24ubXV0YXRpb25fdGVzdGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCAoaWdfcG9pbnRzLCBpZ19tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5wZXJjZW50YWdlKGltcGxfZ3JhZGluZ19yZXBvcnQsIHN5bnRheF9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5pbXBsX2dyYWRpbmcsXG4gICAgICAgICk7XG4gICAgICBsZXQgdG90YWxfcG9pbnRzID0gdHZfcG9pbnRzICsuIG10X3BvaW50cyArLiBpZ19wb2ludHM7XG4gICAgICBsZXQgbWF4X3BvaW50cyA9IHR2X21heCArLiBtdF9tYXggKy4gaWdfbWF4O1xuICAgICAgKHRvdGFsX3BvaW50cywgbWF4X3BvaW50cyk7XG4gICAgfTtcbiAgfTtcbn07XG4iLCJtb2R1bGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZSA9IHVuaXQ7XG4gIGxldCBkZWZhdWx0ID0gKCk7XG4gIGxldCBvdXRwdXRfaGVhZGVyID0gRXhlcmNpc2Uub3V0cHV0X2hlYWRlcl9ncmFkaW5nO1xufTtcblxubW9kdWxlIEV4ZXJjaXNlID0gRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG5cbm1vZHVsZSBHcmFkaW5nID0gR3JhZGluZy5GKEV4ZXJjaXNlRW52KTtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzLzIwMTQgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxubGV0IGRlYnVnID1cbiAgbGV0IF9ERUJVRyA9XG4gICAgdHJ5XG4gICAgICBTb21lKFN5cy5nZXRlbnYgXCJERUJVR1wiKVxuICAgIHdpdGggXyAtPiBOb25lXG4gIGFuZCBfT01EX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIk9NRF9ERUJVR1wiKVxuICAgIHdpdGggXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIF9ERUJVRywgX09NRF9ERUJVRyB3aXRoXG4gIHwgXywgU29tZSBcImZhbHNlXCIgLT5cbiAgICAgZmFsc2VcbiAgfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBERUJVRyBpcyBzZXQsIFxcXG4gICAgICAgICAgICAgIHlvdSBjYW4gZGVhY3RpdmF0ZSB0aGUgbW9kZSBieSB1bnNldHRpbmcgREVCVUcgXFxcbiAgICAgICAgICAgICAgb3IgYnkgc2V0dGluZyBPTURfREVCVUcgdG8gdGhlIHN0cmluZyBcXFwiZmFsc2VcXFwiLlxcbiUhXCI7XG4gICAgIHRydWVcbiAgfCBOb25lLCBOb25lIC0+XG4gICAgIGZhbHNlXG4gIHwgXywgU29tZSBfIC0+XG4gICAgIGVwcmludGYgXCJvbWQ6IGRlYnVnIG1vZGUgYWN0aXZhdGVkIGJlY2F1c2UgT01EX0RFQlVHIGlzIHNldFxuICAgICAgICAgICAgICB0byBhIHZhbHVlIHRoYXQgaXNuJ3QgdGhlIHN0cmluZyBcXFwiZmFsc2VcXFwiLlxcbiUhXCI7XG4gICAgIHRydWVcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgd2FybiA/KHdlPWZhbHNlKSBtc2cgPVxuICBpZiB3ZSB0aGVuXG4gICAgcmFpc2UgKEVycm9yIG1zZylcbiAgZWxzZVxuICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiAlc1xcbiUhXCIgbXNnXG5cblxubGV0IHRyYWNrZml4ID1cbiAgdHJ5XG4gICAgaWdub3JlKFN5cy5nZXRlbnYgXCJPTURfRklYXCIpO1xuICAgIGVwcmludGYgXCJvbWQ6IHRyYWNraW5nIG1vZGUgYWN0aXZhdGVkOiB0b2tlbiBsaXN0IGFyZSB2ZXJ5IG9mdGVuIGNoZWNrZWQsIFxcXG4gICAgICAgICAgICAgaXQgbWlnaHQgdGFrZSBhICp2ZXJ5KiBsb25nIHRpbWUgaWYgeW91ciBpbnB1dCBpcyBsYXJnZS5cXG4lIVwiO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBmYWxzZVxuXG5sZXQgXyA9IGlmIGRlYnVnIHRoZW4gUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZSB0cnVlXG5cbmxldCByYWlzZSA9XG4gIGlmIGRlYnVnIHRoZW5cbiAgICAoZnVuIGUgLT5cbiAgICAgICBlcHJpbnRmIFwiKE9NRCkgRXhjZXB0aW9uIHJhaXNlZDogJXNcXG4lIVwiIChQcmludGV4Yy50b19zdHJpbmcgZSk7XG4gICAgICAgcmFpc2UgZSlcbiAgZWxzZVxuICAgIHJhaXNlXG5cbm1vZHVsZSBTdHJpbmdTZXQgOiBzaWdcbiAgaW5jbHVkZSBTZXQuUyB3aXRoIHR5cGUgZWx0ID0gc3RyaW5nXG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU2V0Lk1ha2UoU3RyaW5nKVxuICBsZXQgb2ZfbGlzdCBsID0gTGlzdC5mb2xkX2xlZnQgKGZ1biByIGUgLT4gYWRkIGUgcikgZW1wdHkgbFxuZW5kXG5cblxudHlwZSAnYSBzcGxpdCA9ICdhIGxpc3QgLT4gJ2Egc3BsaXRfYWN0aW9uXG5hbmQgJ2Egc3BsaXRfYWN0aW9uID1cbiAgfCBDb250aW51ZVxuICB8IENvbnRpbnVlX3dpdGggb2YgJ2EgbGlzdCAqICdhIGxpc3RcbiAgfCBTcGxpdCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuXG5cbmxldCBmc3BsaXRfcmV2ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+KGY6J2Egc3BsaXQpIGxcbiAgICA6ICgnYSBsaXN0ICogJ2EgbGlzdCkgb3B0aW9uID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmIFtdIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgZW5kXG4gICAgfCBlOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGV4Y2wgbCB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIG1hdGNoIGYgbCB3aXRoXG4gICAgICAgICAgfCBTcGxpdChsZWZ0LCByaWdodCkgLT4gICAgICBTb21lKGxlZnRAYWNjdSwgcmlnaHQpXG4gICAgICAgICAgfCBDb250aW51ZV93aXRoKGxlZnQsIHRsKSAtPiBsb29wIChsZWZ0QGFjY3UpIHRsXG4gICAgICAgICAgfCBDb250aW51ZSAtPiAgICAgICAgICAgICAgICBsb29wIChlOjphY2N1KSB0bFxuICBpbiBsb29wIFtdIGxcblxubGV0IGZzcGxpdCA/KGV4Y2w9KGZ1biBfIC0+IGZhbHNlKSkgfmYgbCA9XG4gIG1hdGNoIGZzcGxpdF9yZXYgfmV4Y2w6ZXhjbCB+ZjpmIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lKHJldiwgbCkgLT4gU29tZShMaXN0LnJldiByZXYsIGwpXG5cbmxldCBpZF9vZl9zdHJpbmcgaWRzIHMgPVxuICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgb3V0ID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gICgqIFB1dCBbc10gaW50byBbYl0sIHJlcGxhY2luZyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBkYXNoZXMuICopXG4gIGxldCByZWMgbG9vcCBzdGFydGVkIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gKClcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvdXQgYyA7XG4gICAgICAgIGxvb3AgdHJ1ZSAoaSArIDEpXG4gICAgICAoKiBEb24ndCB3YW50IHRvIHN0YXJ0IHdpdGggZGFzaGVzLiAqKVxuICAgICAgfCBfIHdoZW4gbm90IHN0YXJ0ZWQgLT5cbiAgICAgICAgbG9vcCBmYWxzZSAoaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCAnLScgO1xuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgaW5cbiAgbG9vcCBmYWxzZSAwIDtcbiAgbGV0IHMnID0gQnVmZmVyLmNvbnRlbnRzIG91dCBpblxuICBpZiBzJyA9IFwiXCIgdGhlbiBcIlwiXG4gIGVsc2VcbiAgICAoKiBGaW5kIG91dCB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhcmFjdGVyIGluIFtzJ10gdGhhdCBpc24ndCBhIGRhc2guICopXG4gICAgbGV0IGxhc3RfdHJhaWxpbmcgPSBcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA8IDAgfHwgcycuW2ldIDw+ICctJyB0aGVuIGlcbiAgICAgICAgZWxzZSBsb29wIChpIC0gMSlcbiAgICAgIGluXG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHMnIC0gMSlcbiAgICBpblxuICAgICgqIFRyaW0gdHJhaWxpbmcgZGFzaGVzLiAqKVxuICAgIGlkcyNtYW5nbGUgQEAgU3RyaW5nLnN1YiBzJyAwIChsYXN0X3RyYWlsaW5nICsgMSlcblxuKCogb25seSBjb252ZXJ0IHdoZW4gXCJuZWNlc3NhcnlcIiAqKVxubGV0IGh0bWxlbnRpdGllcyA/KG1kPWZhbHNlKSBzID1cbiAgbGV0IG1vZHVsZSBCcmVhayA9IHN0cnVjdCBleGNlcHRpb24gQnJlYWsgZW5kIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAoKVxuICAgIGVsc2VcbiAgICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgKCAnMCcgLi4gJzknIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgKSBhcyBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCAnXCInIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImcXVvdDtcIlxuICAgICAgICB8ICdcXCcnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImIzM5O1wiXG4gICAgICAgIHwgJyYnIC0+XG4gICAgICAgICAgICBpZiBtZCB0aGVuXG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSBtYXRjaCBzLltpKzFdIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJyMnIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWMgZmYgaiA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcy5bal0gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWMgZmYgaiA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcy5bal0gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gZmYgKHN1Y2MgailcbiAgICAgICAgICAgICAgICAgICAgICB8ICc7JyAtPiAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBmZiAoaSsyKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZcIlxuICAgICAgICAgICAgICAgIHdpdGggXyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgICAgICAgfCAnPCcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZsdDtcIlxuICAgICAgICB8ICc+JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmd0O1wiXG4gICAgICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICBpbiBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgbWluaW1hbGl6ZV9ibGFua3MgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSBsIGluXG4gIGxldCByZWMgbG9vcCBmIGkgPVxuICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIC0+XG4gICAgICAgIGxvb3AgdHJ1ZSAoc3VjYyBpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgZiB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICBsb29wIGZhbHNlIChzdWNjIGkpXG4gIGluIGxvb3AgZmFsc2UgMFxuXG5sZXQgcmVjIGVhdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IGU6OnRsIGFzIGwgLT4gaWYgZiBlIHRoZW4gZWF0IGYgdGwgZWxzZSBsXG5cblxubGV0IHJlYyBleHRyYWN0X2h0bWxfYXR0cmlidXRlcyAoaHRtbDpzdHJpbmcpID1cbiAgbGV0IHJlYyBjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgaSAoai1pKSwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IHJlbW92ZV9wcmVmaXhfc3BhY2VzIHMgPSBcbiAgICBpZiBzID0gXCJcIiB0aGVuXG4gICAgICBzIFxuICAgIGVsc2UgaWYgcy5bMF0gPD4gJyAnIHRoZW5cbiAgICAgIHNcbiAgICBlbHNlXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgIFN0cmluZy5zdWIgcyBpIChTdHJpbmcubGVuZ3RoIHMgLSBpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJyAnIC0+IGxvb3AgKGkrMSlcbiAgICAgICAgICB8IF8gLT4gU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICBpbiBsb29wIDFcbiAgaW5cbiAgbGV0IHJlbW92ZV9zdWZmaXhfc3BhY2VzIHMgPVxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLltTdHJpbmcubGVuZ3RoIHMgLSAxXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICcgJyAtPiBsb29wIChpLTEpXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgMCAoaSsxKVxuICAgICAgaW4gbG9vcCAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHMgcmVzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgcmVzXG4gICAgZWxzZVxuICAgICAgbWF0Y2hcbiAgICAgICAgdHJ5XG4gICAgICAgICAgU29tZSAodGFrZV9hdHRyaWJ1dGUgcyBpKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG4gICAgICB3aXRoXG4gICAgICB8IFNvbWUgKCgoXyxfKSBhcyBhKSwgbmV3X3MpIC0+XG4gICAgICAgIGxvb3AgbmV3X3MgKGE6OnJlcykgMFxuICAgICAgfCBOb25lIC0+IHJlc1xuICBhbmQgdGFrZV9hdHRyaWJ1dGUgcyBpID1cbiAgICAgIGxldCBuYW1lLCBhZnRlcl9lcSA9IGN1dF9vbl9jaGFyX2Zyb20gcyBpICc9JyBpblxuICAgICAgbGV0IG5hbWUgPSByZW1vdmVfc3VmZml4X3NwYWNlcyBuYW1lIGluXG4gICAgICBsZXQgYWZ0ZXJfZXEgPSByZW1vdmVfcHJlZml4X3NwYWNlcyBhZnRlcl9lcSBpblxuICAgICAgbGV0IHZhbHVlLCByZXN0ID0gY3V0X29uX2NoYXJfZnJvbSBhZnRlcl9lcSAxIGFmdGVyX2VxLlswXSBpblxuICAgICAgKG5hbWUsdmFsdWUpLCByZW1vdmVfcHJlZml4X3NwYWNlcyByZXN0XG4gIGluXG4gIGlmICgqIEhhcyBpdCBhdCBsZWFzdCBvbmUgYXR0cmlidXRlPyAqKVxuICAgIHRyeSBTdHJpbmcuaW5kZXggaHRtbCAnPicgPCBTdHJpbmcuaW5kZXggaHRtbCAnICdcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlXG4gIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gIG1hdGNoIGh0bWwuWzFdIHdpdGhcbiAgfCAnPCcgfCAnICcgLT5cbiAgICBleHRyYWN0X2h0bWxfYXR0cmlidXRlc1xuICAgICAgKHJlbW92ZV9wcmVmaXhfc3BhY2VzIChTdHJpbmcuc3ViIGh0bWwgMSAoU3RyaW5nLmxlbmd0aCBodG1sIC0gMSkpKVxuICB8IF8gLT5cbiAgICB0cnlcbiAgICAgIGxldCBodG1sID0gc25kIChjdXRfb25fY2hhcl9mcm9tIGh0bWwgMCAnICcpIGluXG4gICAgICBsb29wIChTdHJpbmcuc3ViIGh0bWwgMCAoU3RyaW5nLmluZGV4IGh0bWwgJz4nKSkgW10gMFxuICAgIHdpdGggTm90X2ZvdW5kIC0+IFtdXG5cbmxldCByZWMgZXh0cmFjdF9pbm5lcl9odG1sIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVjIHJjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcucmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIDAgaiwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IF8sIHAgPSBjdXRfb25fY2hhcl9mcm9tIGh0bWwgMCAnPicgaW5cbiAgbGV0IHIsIF8gPSByY3V0X29uX2NoYXJfZnJvbSBwIChTdHJpbmcubGVuZ3RoIHAgLSAxKSAnPCcgaW5cbiAgclxuXG5cbmxldCBodG1sX3ZvaWRfZWxlbWVudHMgPSBTdHJpbmdTZXQub2ZfbGlzdCBbXG4gIFwiaW1nXCI7XG4gIFwiaW5wdXRcIjtcbiAgXCJsaW5rXCI7XG4gIFwibWV0YVwiO1xuICBcImJyXCI7XG4gIFwiaHJcIjtcbiAgXCJzb3VyY2VcIjtcbiAgXCJ3YnJcIjtcbiAgXCJwYXJhbVwiO1xuICBcImVtYmVkXCI7XG4gIFwiYmFzZVwiO1xuICBcImFyZWFcIjtcbiAgXCJjb2xcIjtcbiAgXCJ0cmFja1wiO1xuICBcImtleWdlblwiO1xuXVxuXG5sZXQgKCBAICkgbDEgbDIgPVxuICBMaXN0LnJldl9hcHBlbmQgKExpc3QucmV2IGwxKSBsMlxuIiwib3BlbiBPbWRfdXRpbHNcbm9wZW4gUHJpbnRmXG5cbigqKiByZWZlcmVuY2VzLCBpbnN0YW5jZXMgY3JlYXRlZCBpbiBbT21kX3BhcnNlci5tYWluX3BhcnNlXSBhbmRcbiAgICBhY2Nlc3NlZCBpbiB0aGUgW09tZF9iYWNrZW5kXSBtb2R1bGUuICopXG5tb2R1bGUgUiA9IE1hcC5NYWtlKFN0cmluZylcbmNsYXNzIHJlZl9jb250YWluZXIgOiBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBjIDogKHN0cmluZyAqIHN0cmluZykgUi50XG4gICAgbWV0aG9kIGFkZF9yZWYgOiBSLmtleSAtPiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXRcbiAgICBtZXRob2QgZ2V0X3JlZiA6IFIua2V5IC0+IChzdHJpbmcgKiBzdHJpbmcpIG9wdGlvblxuICAgIG1ldGhvZCBnZXRfYWxsIDogKHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcpKSBsaXN0XG4gIGVuZCA9IG9iamVjdFxuICB2YWwgbXV0YWJsZSBjID0gUi5lbXB0eVxuICB2YWwgbXV0YWJsZSBjMiA9IFIuZW1wdHlcblxuICBtZXRob2QgZ2V0X2FsbCA9IFIuYmluZGluZ3MgY1xuXG4gIG1ldGhvZCBhZGRfcmVmIG5hbWUgdGl0bGUgdXJsID1cbiAgICBjIDwtIFIuYWRkIG5hbWUgKHVybCwgdGl0bGUpIGM7XG4gICAgbGV0IGxuID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBuYW1lIGluXG4gICAgaWYgbG4gPD4gbmFtZSB0aGVuIGMyIDwtIFIuYWRkIGxuICh1cmwsIHRpdGxlKSBjMlxuXG4gIG1ldGhvZCBnZXRfcmVmIG5hbWUgPVxuICAgIHRyeVxuICAgICAgbGV0ICh1cmwsIHRpdGxlKSBhcyByID1cbiAgICAgICAgdHJ5IFIuZmluZCBuYW1lIGNcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICAgICAgICB0cnkgUi5maW5kIGxuIGNcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgUi5maW5kIGxuIGMyXG4gICAgICBpbiBTb21lIHJcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgTm9uZVxuZW5kXG5cbnR5cGUgZWxlbWVudCA9XG4gIHwgSDEgb2YgdFxuICB8IEgyIG9mIHRcbiAgfCBIMyBvZiB0XG4gIHwgSDQgb2YgdFxuICB8IEg1IG9mIHRcbiAgfCBINiBvZiB0XG4gIHwgUGFyYWdyYXBoIG9mIHRcbiAgfCBUZXh0IG9mIHN0cmluZ1xuICB8IEVtcGggb2YgdFxuICB8IEJvbGQgb2YgdFxuICB8IFVsIG9mIHQgbGlzdFxuICB8IE9sIG9mIHQgbGlzdFxuICB8IFVscCBvZiB0IGxpc3RcbiAgfCBPbHAgb2YgdCBsaXN0XG4gIHwgQ29kZSBvZiBuYW1lICogc3RyaW5nXG4gIHwgQ29kZV9ibG9jayBvZiBuYW1lICogc3RyaW5nXG4gIHwgQnJcbiAgfCBIclxuICB8IE5MXG4gIHwgVXJsIG9mIGhyZWYgKiB0ICogdGl0bGVcbiAgfCBSZWYgb2YgcmVmX2NvbnRhaW5lciAqIG5hbWUgKiBzdHJpbmcgKiBmYWxsYmFja1xuICB8IEltZ19yZWYgb2YgcmVmX2NvbnRhaW5lciAqIG5hbWUgKiBhbHQgKiBmYWxsYmFja1xuICB8IEh0bWwgb2YgbmFtZSAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogdFxuICB8IEh0bWxfYmxvY2sgb2YgbmFtZSAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogdFxuICB8IEh0bWxfY29tbWVudCBvZiBzdHJpbmdcbiAgfCBSYXcgb2Ygc3RyaW5nXG4gIHwgUmF3X2Jsb2NrIG9mIHN0cmluZ1xuICB8IEJsb2NrcXVvdGUgb2YgdFxuICB8IEltZyBvZiBhbHQgKiBzcmMgKiB0aXRsZVxuICB8IFggb2ZcbiAgICAgIDwgbmFtZSA6IHN0cmluZztcbiAgICAgICAgdG9faHRtbCA6ID9pbmRlbnQ6aW50IC0+ICh0IC0+IHN0cmluZykgLT4gdCAtPiBzdHJpbmcgb3B0aW9uO1xuICAgICAgICB0b19zZXhwciA6ICh0IC0+IHN0cmluZykgLT4gdCAtPiBzdHJpbmcgb3B0aW9uO1xuICAgICAgICB0b190IDogdCAtPiB0IG9wdGlvbiA+XG5hbmQgZmFsbGJhY2sgPSA8IHRvX3N0cmluZyA6IHN0cmluZyA7IHRvX3QgOiB0ID5cbmFuZCBuYW1lID0gc3RyaW5nXG5hbmQgYWx0ID0gc3RyaW5nXG5hbmQgc3JjID0gc3RyaW5nXG5hbmQgaHJlZiA9IHN0cmluZ1xuYW5kIHRpdGxlID0gc3RyaW5nXG5hbmQgdCA9IGVsZW1lbnQgbGlzdFxuXG5cbmxldCByZWMgbG9vc2VfY29tcGFyZSB0MSB0MiA9IG1hdGNoIHQxLHQyIHdpdGhcbiAgfCBIMSBlMTo6dGwxLCBIMSBlMjo6dGwyXG4gIHwgSDIgZTE6OnRsMSwgSDIgZTI6OnRsMlxuICB8IEgzIGUxOjp0bDEsIEgzIGUyOjp0bDJcbiAgfCBINCBlMTo6dGwxLCBINCBlMjo6dGwyXG4gIHwgSDUgZTE6OnRsMSwgSDUgZTI6OnRsMlxuICB8IEg2IGUxOjp0bDEsIEg2IGUyOjp0bDJcbiAgfCBFbXBoIGUxOjp0bDEsIEVtcGggZTI6OnRsMlxuICB8IEJvbGQgZTE6OnRsMSwgQm9sZCBlMjo6dGwyXG4gIHwgQmxvY2txdW90ZSBlMTo6dGwxLCBCbG9ja3F1b3RlIGUyOjp0bDJcbiAgfCBQYXJhZ3JhcGggZTE6OnRsMSwgUGFyYWdyYXBoIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFVsIGUxOjp0bDEsIFVsIGUyOjp0bDJcbiAgfCBPbCBlMTo6dGwxLCBPbCBlMjo6dGwyXG4gIHwgVWxwIGUxOjp0bDEsIFVscCBlMjo6dGwyXG4gIHwgT2xwIGUxOjp0bDEsIE9scCBlMjo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmVfbGlzdHMgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCAoQ29kZSBfIGFzIGUxKTo6dGwxLCAoQ29kZSBfIGFzIGUyKTo6dGwyXG4gIHwgKEJyIGFzIGUxKTo6dGwxLCAoQnIgYXMgZTIpOjp0bDJcbiAgfCAoSHIgYXMgZTEpOjp0bDEsIChIciBhcyBlMik6OnRsMlxuICB8IChOTCBhcyBlMSk6OnRsMSwgKE5MIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWwgXyBhcyBlMSk6OnRsMSwgKEh0bWwgXyBhcyBlMik6OnRsMlxuICB8IChIdG1sX2Jsb2NrIF8gYXMgZTEpOjp0bDEsIChIdG1sX2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoUmF3IF8gYXMgZTEpOjp0bDEsIChSYXcgXyBhcyBlMik6OnRsMlxuICB8IChSYXdfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKFJhd19ibG9jayBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfY29tbWVudCBfIGFzIGUxKTo6dGwxLCAoSHRtbF9jb21tZW50IF8gYXMgZTIpOjp0bDJcbiAgfCAoSW1nIF8gYXMgZTEpOjp0bDEsIChJbWcgXyBhcyBlMik6OnRsMlxuICB8IChUZXh0IF8gYXMgZTEpOjp0bDEsIChUZXh0IF8gYXMgZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IENvZGVfYmxvY2sobDEsYzEpOjp0bDEsIENvZGVfYmxvY2sobDIsYzIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBsMSBsMiwgU3RyaW5nLmxlbmd0aCBjMSAtIFN0cmluZy5sZW5ndGggYzIgd2l0aFxuICAgICAgICAgfCAwLCAwIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgYzEgYzIgd2l0aFxuICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IDAsIDEgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSAoYzJeXCJcXG5cIikgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgLTEgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSAoYzFeXCJcXG5cIikgYzIgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSwgXyAtPiBpXG4gICAgICApXG5cbiAgfCBVcmwgKGhyZWYxLCB0MSwgdGl0bGUxKTo6dGwxLCBVcmwgKGhyZWYyLCB0MiwgdGl0bGUyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgaHJlZjEgaHJlZjIgd2l0aFxuICAgICAgICAgfCAwIC0+IChtYXRjaCBsb29zZV9jb21wYXJlIHQxIHQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgdGl0bGUxIHRpdGxlMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFJlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBSZWYgKHJlZl9jb250YWluZXIyLCBuYW1lMiwgeDIsIGZhbGxiYWNrMik6OnRsMlxuICB8IEltZ19yZWYgKHJlZl9jb250YWluZXIxLCBuYW1lMSwgeDEsIGZhbGxiYWNrMSk6OnRsMSxcbiAgICAgICAgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gICAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSAobmFtZTEsIHgxKSAobmFtZTIsIHgyKSB3aXRoXG4gICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICBsZXQgY2ZmID1cbiAgICAgICAgICAgICAgIGlmIGZhbGxiYWNrMSN0b19zdHJpbmcgPSBmYWxsYmFjazIjdG9fc3RyaW5nIHRoZW5cbiAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb29zZV9jb21wYXJlIChmYWxsYmFjazEjdG9fdCkgKGZhbGxiYWNrMiN0b190KVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBpZiBjZmYgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICBjb21wYXJlIChyZWZfY29udGFpbmVyMSNnZXRfYWxsKSAocmVmX2NvbnRhaW5lcjIjZ2V0X2FsbClcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBjZmZcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgWCBlMTo6dGwxLCBYIGUyOjp0bDIgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChlMSNuYW1lKSAoZTIjbmFtZSkgd2l0aFxuICAgICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlIChlMSN0b190KSAoZTIjdG9fdCkgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuICB8IFggXzo6XywgXyAtPiAxXG4gIHwgXywgWCBfOjpfIC0+IC0xXG4gIHwgXyAtPiBjb21wYXJlIHQxIHQyXG5cbmFuZCBsb29zZV9jb21wYXJlX2xpc3RzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+XG4gICAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmVfbGlzdHMgdGwxIHRsMlxuICAgICAgICAgICB8IGkgLT4gaSlcbiAgICB8IF8sIFtdIC0+IDFcbiAgICB8IF8gLT4gLTFcblxuXG50eXBlIHRvayA9ICgqIENzKG4pIG1lYW5zIChuKzIpIHRpbWVzIEMgKilcbnwgQW1wZXJzYW5kXG58IEFtcGVyc2FuZHMgb2YgaW50XG58IEF0XG58IEF0cyBvZiBpbnRcbnwgQmFja3F1b3RlXG58IEJhY2txdW90ZXMgb2YgaW50XG58IEJhY2tzbGFzaFxufCBCYWNrc2xhc2hzIG9mIGludFxufCBCYXJcbnwgQmFycyBvZiBpbnRcbnwgQ2FyZXRcbnwgQ2FyZXRzIG9mIGludFxufCBDYnJhY2VcbnwgQ2JyYWNlcyBvZiBpbnRcbnwgQ29sb25cbnwgQ29sb25zIG9mIGludFxufCBDb21tYVxufCBDb21tYXMgb2YgaW50XG58IENwYXJlbnRoZXNpc1xufCBDcGFyZW50aGVzaXNzIG9mIGludFxufCBDYnJhY2tldFxufCBDYnJhY2tldHMgb2YgaW50XG58IERvbGxhclxufCBEb2xsYXJzIG9mIGludFxufCBEb3RcbnwgRG90cyBvZiBpbnRcbnwgRG91YmxlcXVvdGVcbnwgRG91YmxlcXVvdGVzIG9mIGludFxufCBFeGNsYW1hdGlvblxufCBFeGNsYW1hdGlvbnMgb2YgaW50XG58IEVxdWFsXG58IEVxdWFscyBvZiBpbnRcbnwgR3JlYXRlcnRoYW5cbnwgR3JlYXRlcnRoYW5zIG9mIGludFxufCBIYXNoXG58IEhhc2hzIG9mIGludFxufCBMZXNzdGhhblxufCBMZXNzdGhhbnMgb2YgaW50XG58IE1pbnVzXG58IE1pbnVzcyBvZiBpbnRcbnwgTmV3bGluZVxufCBOZXdsaW5lcyBvZiBpbnRcbnwgTnVtYmVyIG9mIHN0cmluZ1xufCBPYnJhY2VcbnwgT2JyYWNlcyBvZiBpbnRcbnwgT3BhcmVudGhlc2lzXG58IE9wYXJlbnRoZXNpc3Mgb2YgaW50XG58IE9icmFja2V0XG58IE9icmFja2V0cyBvZiBpbnRcbnwgUGVyY2VudFxufCBQZXJjZW50cyBvZiBpbnRcbnwgUGx1c1xufCBQbHVzcyBvZiBpbnRcbnwgUXVlc3Rpb25cbnwgUXVlc3Rpb25zIG9mIGludFxufCBRdW90ZVxufCBRdW90ZXMgb2YgaW50XG58IFNlbWljb2xvblxufCBTZW1pY29sb25zIG9mIGludFxufCBTbGFzaFxufCBTbGFzaHMgb2YgaW50XG58IFNwYWNlXG58IFNwYWNlcyBvZiBpbnRcbnwgU3RhclxufCBTdGFycyBvZiBpbnRcbnwgVGFiXG58IFRhYnMgb2YgaW50XG58IFRpbGRlXG58IFRpbGRlcyBvZiBpbnRcbnwgVW5kZXJzY29yZVxufCBVbmRlcnNjb3JlcyBvZiBpbnRcbnwgV29yZCBvZiBzdHJpbmdcbnwgVGFnIG9mIG5hbWUgKiBleHRlbnNpb25cblxuYW5kIGV4dGVuc2lvbiA9IDxcbiAgcGFyc2VyX2V4dGVuc2lvbiA6XG4gICAgdCAtPiB0b2sgbGlzdCAtPiB0b2sgbGlzdCAtPiAoKHQgKiB0b2sgbGlzdCAqIHRvayBsaXN0KSBvcHRpb24pO1xuICB0b19zdHJpbmcgOiBzdHJpbmdcbj5cblxudHlwZSBleHRlbnNpb25zID0gZXh0ZW5zaW9uIGxpc3RcblxubGV0IGVtcHR5X2V4dGVuc2lvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IE5vbmVcbiAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbmVuZFxuXG5sZXQgcmVjIG5vcm1hbGlzZV9tZCBsID1cbiAgaWYgZGVidWcgdGhlblxuICAgIGVwcmludGYgXCIoT01EKSBub3JtYWxpc2VfbWRcXG4lIVwiO1xuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW05MO05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtdXG4gICAgfCBbTkw7TkxdXG4gICAgfCBbTkxdIC0+IFtdXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgTkw6Ok5MOjpOTDo6dGwgLT4gbG9vcCAoTkw6Ok5MOjp0bClcbiAgICB8IFRleHQgdDE6OlRleHQgdDI6OnRsIC0+IGxvb3AgKFRleHQodDFedDIpOjp0bClcbiAgICB8IE5MOjooKChQYXJhZ3JhcGggX3xIMSBffEgyIF98SDMgX3xINCBffEg1IF98SDYgX1xuICAgICAgICAgICAgfENvZGVfYmxvY2sgX3xPbCBffFVsIF98T2xwIF98VWxwIF8pOjpfKSBhcyB0bCkgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoW1RleHQgXCIgXCJdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoKHApOjp0bCAtPiBQYXJhZ3JhcGgobG9vcCBwKTo6bG9vcCB0bFxuICAgIHwgSDEgdjo6dGwgLT4gSDEobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDIgdjo6dGwgLT4gSDIobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDMgdjo6dGwgLT4gSDMobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDQgdjo6dGwgLT4gSDQobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDUgdjo6dGwgLT4gSDUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDYgdjo6dGwgLT4gSDYobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgRW1waCB2Ojp0bCAtPiBFbXBoKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEJvbGQgdjo6dGwgLT4gQm9sZChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVbCB2Ojp0bCAtPiBVbChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBPbCB2Ojp0bCAtPiBPbChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVbHAgdjo6dGwgLT4gVWxwKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9scCB2Ojp0bCAtPiBPbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSB2Ojp0bCAtPiBCbG9ja3F1b3RlKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVybChocmVmLHYsdGl0bGUpOjp0bCAtPiBVcmwoaHJlZiwobG9vcCB2KSx0aXRsZSk6Omxvb3AgdGxcbiAgICB8IFRleHQgX1xuICAgIHwgQ29kZSBfXG4gICAgfCBDb2RlX2Jsb2NrIF9cbiAgICB8IEJyXG4gICAgfCBIclxuICAgIHwgTkxcbiAgICB8IFJlZiBfXG4gICAgfCBJbWdfcmVmIF9cbiAgICB8IEh0bWwgX1xuICAgIHwgSHRtbF9ibG9jayBfXG4gICAgfCBIdG1sX2NvbW1lbnQgX1xuICAgIHwgUmF3IF9cbiAgICB8IFJhd19ibG9jayBfXG4gICAgfCBJbWcgX1xuICAgIHwgWCBfIGFzIHY6OnRsIC0+IHY6Omxvb3AgdGxcbiAgaW5cbiAgbGV0IGEgPSBsb29wIGwgaW5cbiAgbGV0IGIgPSBsb29wIGEgaW5cbiAgaWYgYSA9IGIgdGhlblxuICAgIGFcbiAgZWxzZVxuICAgIG5vcm1hbGlzZV9tZCBiXG5cblxuXG5sZXQgZHVtbXlfWCA9XG4gIFggKG9iamVjdFxuICAgIG1ldGhvZCBuYW1lID0gXCJkdW1teVwiXG4gICAgbWV0aG9kIHRvX2h0bWwgPyhpbmRlbnQ9MCkgXyBfID0gTm9uZVxuICAgIG1ldGhvZCB0b19zZXhwciBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3QgXyA9IE5vbmVcbiAgZW5kKVxuXG5cbmxldCByZWMgdmlzaXQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBQYXJhZ3JhcGggdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gUGFyYWdyYXBoKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDEodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgyIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDMgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDModmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg0IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDUgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg1KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINiB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDYodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEVtcGggdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEVtcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJvbGQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEJvbGQodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFVsIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVsKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE9sIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IE9sKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFVscCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVbHAoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2xwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IE9scChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCbG9ja3F1b3RlIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEJsb2NrcXVvdGUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFVybChocmVmLHYsdGl0bGUpIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVcmwoaHJlZix2aXNpdCBmIHYsdGl0bGUpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVGV4dCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQ29kZSBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQ29kZV9ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmVmIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBJbWdfcmVmIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIdG1sIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIdG1sX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJhdyBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3X2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBJbWcgIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBYICBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQnIgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEJyOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHIgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEhyOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgTkwgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IE5MOjp2aXNpdCBmIHRsXG4gICAgZW5kXG5cblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvZGVfc3R5bGlzdCA9IGxhbmc6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcblxub3BlbiBQcmludGZcbm9wZW4gT21kX3JlcHJlc2VudGF0aW9uXG5vcGVuIE9tZF91dGlsc1xuXG5sZXQgZGVmYXVsdF9sYW5ndWFnZSA9IHJlZiBcIlwiXG5cblxuXG5sZXQgdGV4dF9vZl9tZCBtZCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFggXyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgICAgbG9vcCBxO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgbmFtZSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGFsdCk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhdyB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3X2Jsb2NrIHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWwgbCB8IE9sIGwpIDo6IHRsIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIGl0ZW0gLT4gbG9vcCBpdGVtOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJykgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgKFVscCBsIHwgT2xwIGwpIDo6IHRsIC0+XG4gICAgICAgIExpc3QuaXRlciBsb29wIGw7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZShsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDEgbWQgOjogdGxcbiAgICB8IEgyIG1kIDo6IHRsXG4gICAgfCBIMyBtZCA6OiB0bFxuICAgIHwgSDQgbWQgOjogdGxcbiAgICB8IEg1IG1kIDo6IHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCBtZDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgZGVmYXVsdF9jb2RlX3N0eWxpc3QgfmxhbmcgY29kZSA9IGNvZGVcblxubGV0IGZpbHRlcl90ZXh0X29tZF9yZXYgbCA9XG4gIGxldCByZWMgbG9vcCBiIHIgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgfCAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKTo6dGwgLT5cbiAgICAgIGxvb3AgdHJ1ZSByIHRsXG4gICAgfCBlOjp0bCAtPlxuICAgICAgbG9vcCBiIChlOjpyKSB0bFxuICBpblxuICBsb29wIGZhbHNlIFtdIGxcblxubGV0IHJlbW92ZV9saW5rcyA6IHQgLT4gdCA9XG4gIE9tZF9yZXByZXNlbnRhdGlvbi52aXNpdFxuICAgIChmdW4gZSAtPlxuICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgVXJsKF8sIHQsIF8pIC0+IFNvbWUgdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApXG5cbmxldCByZWMgaHRtbF9hbmRfaGVhZGVyc19vZl9tZFxuICAgID8ocmVtb3ZlX2hlYWRlcl9saW5rcz1mYWxzZSlcbiAgICA/KG92ZXJyaWRlPShmdW4gKGU6ZWxlbWVudCkgLT4gKE5vbmU6c3RyaW5nIG9wdGlvbikpKVxuICAgID8ocGluZGVudD1mYWxzZSlcbiAgICA/KG5sMmJyPWZhbHNlKVxuICAgID9jczooY29kZV9zdHlsZT1kZWZhdWx0X2NvZGVfc3R5bGlzdClcbiAgICBtZFxuICA9XG4gIGxldCBpZHMgPSBvYmplY3QodGhpcylcbiAgICB2YWwgbXV0YWJsZSBpZHMgPSBTdHJpbmdTZXQuYWRkIFwiXCIgU3RyaW5nU2V0LmVtcHR5XG4gICAgbWV0aG9kIG1hbmdsZSBpZCA9XG4gICAgICBsZXQgcmVjIG0gaSA9XG4gICAgICAgIGlmIFN0cmluZ1NldC5tZW0gaWQgaWRzIHRoZW5cbiAgICAgICAgICBsZXQgaWR4ID0gaWYgaSA+IDAgdGhlbiBpZF5cIl9cIl5zdHJpbmdfb2ZfaW50IGkgZWxzZSBpZCBpblxuICAgICAgICAgIGlmIFN0cmluZ1NldC5tZW0gaWR4IGlkcyB0aGVuXG4gICAgICAgICAgICBtIChpKzEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKGlkcyA8LSBTdHJpbmdTZXQuYWRkIGlkeCBpZHM7XG4gICAgICAgICAgICAgaWR4KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKGlkcyA8LSBTdHJpbmdTZXQuYWRkIGlkIGlkcztcbiAgICAgICAgICAgaWQpXG4gICAgICBpbiBtIDBcbiAgZW5kIGluXG4gIGxldCBlbXB0eSBzID1cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXG4nIC0+IGxvb3AgKGkrMSlcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHRydWVcbiAgICBpblxuICAgIGxvb3AgMFxuICBpblxuICBsZXQgcmVtb3ZlX3RyYWlsaW5nX2JsYW5rcyBzID1cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpIDwgMCB0aGVuIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICcgJ3wnXFx0J3wnXFxuJyAtPlxuICAgICAgICAgIGxvb3AgKHByZWQgaSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgdGhlblxuICAgICAgICAgICAgc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgaW4gbG9vcCAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBoZWFkZXJzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbG9vcCBpbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgWCB4IGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBpbmRlbnQgdFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBtYXRjaCB4I3RvX2h0bWwgfmluZGVudDppbmRlbnRcbiAgICAgICAgICAgICAgIChodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUpIG1kXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQmxvY2txdW90ZSBxIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgcTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9ibG9ja3F1b3RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKGhyZWYsIHRpdGxlKSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudFxuICAgICAgICAgICAgICAgIChVcmwoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGhyZWYsXG4gICAgICAgICAgICAgICAgICAgICBbVGV4dCh0ZXh0KV0sXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpXG4gICAgICAgICAgICAgICAgIDo6dGwpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgKGZhbGxiYWNrI3RvX3QpO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmMjZ2V0X3JlZiBuYW1lIHdpdGhcbiAgICAgICAgICAgIHwgU29tZShzcmMsIHRpdGxlKSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudFxuICAgICAgICAgICAgICAgIChJbWcoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGFsdCxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBzcmMsXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IFBhcmFncmFwaCBbXSA6OiB0bCAtPiBsb29wIGluZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICAgaWYgZW1wdHkgcyB0aGVuXG4gICAgICAgICAgICAgKClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHA+XCI7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChyZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMpO1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvcD5cXG5cIjtcbiAgICAgICAgICAgICBlbmQpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGltZyBzcmM9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBzcmMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIGFsdD0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGFsdCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgXCI7XG4gICAgICAgICAgaWYgdGl0bGUgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAoQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiB0aXRsZT0nXCI7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIi8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgVGV4dCB0IGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7ICopXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHQpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEVtcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8ZW0+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgbWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvZW0+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQm9sZCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxzdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgbWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvc3Ryb25nPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChVbCBsfE9sIGx8VWxwIGx8T2xwIGwgYXMgZSkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgICAgfCBPbCBffE9scCBfIC0+IFwiPG9sPlwiXG4gICAgICAgICAgICAgIHwgXyAtPiBcIjx1bD5cIik7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8bGk+XCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoaW5kZW50KzIpIGxpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2xpPlwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBsO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8L29sPlwiXG4gICAgICAgICAgICAgIHwgXyAtPiBcIjwvdWw+XCIpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHByZT48Y29kZT5cIlxuICAgICAgICAgIGVsc2UgaWYgbGFuZyA9IFwiXCIgdGhlblxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPHByZSBjbGFzcz0nJXMnPjxjb2RlIGNsYXNzPSclcyc+XCJcbiAgICAgICAgICAgICAgIWRlZmF1bHRfbGFuZ3VhZ2UgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIiBsYW5nIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT48L3ByZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBDb2RlKGxhbmcsIGMpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsYW5nID0gXCJcIiAmJiAhZGVmYXVsdF9sYW5ndWFnZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiICFkZWZhdWx0X2xhbmd1YWdlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPGNvZGUgY2xhc3M9JyVzJz5cIiBsYW5nO1xuICAgICAgICAgIGxldCBuZXdfYyA9IGNvZGVfc3R5bGUgfmxhbmc6bGFuZyBjIGluXG4gICAgICAgICAgaWYgYyA9IG5ld19jIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIG5ld19jO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2NvZGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQnIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEhyIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGhyLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSYXcgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhd19ibG9jayBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgW10pIGFzIGUgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIGFzIGUgOjogdGwgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgYm9keTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIGFzIGUgOjogdGwgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBib2R5ID0gW10gJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyB0aGVuXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgYm9keTtcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9jb21tZW50IHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBzID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIHMgaW5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGEgaHJlZj0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGhyZWYpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInXCI7XG4gICAgICAgICAgaWYgdGl0bGUgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9hPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChIMSBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBIMSBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoMSBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2gxPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChIMiBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBIMiBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoMiBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2gyPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChIMyBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBIMyBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoMyBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2gzPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChINCBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBINCBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoNCBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2g0PlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChINSBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBINSBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoNSBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2g1PlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChINiBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBINiBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoNiBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2g2PlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IE5MIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBubDJiciB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gIGluXG4gIGxvb3AgMCBtZDtcbiAgQnVmZmVyLmNvbnRlbnRzIGIsIExpc3QucmV2ICFoZWFkZXJzXG5cbmFuZCBzdHJpbmdfb2ZfYXR0cnMgYXR0cnMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgKGEsIFNvbWUgdikgLT5cbiAgICAgICAgaWYgbm90KFN0cmluZy5jb250YWlucyB2ICdcXCcnKSB0aGVuXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJXMnXCIgYSB2XG4gICAgICAgIGVsc2UgaWYgbm90KFN0cmluZy5jb250YWlucyB2ICdcIicpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICgqIGlmIGh0bWw0IHRoZW4gKilcbiAgICAgICAgKCogICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIGEgKilcbiAgICAgICAgKCogZWxzZSAqKVxuICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPScnXCIgYSAoKiBIVE1MNSAqKVxuICAgIClcbiAgICBhdHRycztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuYW5kIGh0bWxfb2ZfbWRcbiAgICA/KG92ZXJyaWRlPShmdW4gKGU6ZWxlbWVudCkgLT4gKE5vbmU6c3RyaW5nIG9wdGlvbikpKVxuICAgID8ocGluZGVudD1mYWxzZSlcbiAgICA/KG5sMmJyPWZhbHNlKVxuICAgID9jc1xuICAgIG1kXG4gID1cbiAgZnN0IChodG1sX2FuZF9oZWFkZXJzX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgP2NzIG1kKVxuYW5kIGhlYWRlcnNfb2ZfbWQgP3JlbW92ZV9oZWFkZXJfbGlua3MgbWQgPVxuICBzbmQgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgP3JlbW92ZV9oZWFkZXJfbGlua3MgbWQpXG5cblxubGV0IHJlYyBzZXhwcl9vZl9tZCBtZCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCB4IDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPlxuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgIGxvb3AgdDtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggeCN0b19zZXhwciBzZXhwcl9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCB4I3RvX2h0bWwgfmluZGVudDowIGh0bWxfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJsb2NrcXVvdGVcIjtcbiAgICAgICAgbG9vcCBxO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIF8pIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSZWYgJVMgJVMpXCIgbmFtZSB0ZXh0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIF8pIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihJbWdfcmVmICVTICVTKVwiIG5hbWUgYWx0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihQYXJhZ3JhcGhcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZyAlUyAlUyAlUylcIiBhbHQgc3JjIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFRleHQgJVNcIiB0O1xuICAgICAgICBsZXQgcmVjIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgICAgICBicHJpbnRmIGIgXCIgJVNcIiB0O1xuICAgICAgICAgICAgZiB0bFxuICAgICAgICAgIHwgeCAtPiB4XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0bCA9IGYgdGwgaW5cbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoRW1waFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQm9sZFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBPbCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTsgYnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVsIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVsXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoT2xwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWxwIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVscFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTticHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZShsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoQ29kZSAlUylcIiBjO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlX2Jsb2NrICVzKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQnIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSHIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhdyBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSYXcgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhd19ibG9jayAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbCAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfYmxvY2sgJXMgJXMgXCIgdGFnbmFtZSAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sX2NvbW1lbnQgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVcmwgJVMgJVMgJVMpXCIgaHJlZiAoaHRtbF9vZl9tZCBzKSB0aXRsZTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIMVwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMiBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgyXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgzIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDNcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg1XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDZcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihOTClcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyAqIDIpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJy4nIGFzIGMgLT5cbiAgICAgICAgaWYgaSA+IDAgJiZcbiAgICAgICAgICAgbWF0Y2ggcy5baS0xXSB3aXRoXG4gICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiBpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgcy5baSsxXSA9ICcgJ1xuICAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnLScgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiAocy5baSsxXSA9ICcgJ3x8cy5baSsxXSA9ICctJykpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJysnIGFzIGMgLT5cbiAgICAgICAgaWYgKGkgPSAwIHx8IG1hdGNoIHMuW2ktMV0gd2l0aCAnICd8ICdcXG4nIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICYmIChpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgcy5baSsxXSA9ICcgJylcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnIScgYXMgYyAtPlxuICAgICAgICBpZiBpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgcy5baSsxXSA9ICdbJyB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICc8JyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSAmJlxuICAgICAgICAgICAgIChtYXRjaCBzLltpKzFdIHdpdGggJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJz4nIGFzIGMgLT5cbiAgICAgICAgaWYgaSA9IDAgfHxcbiAgICAgICAgICAgICAobWF0Y2ggcy5baS0xXSB3aXRoICcgJyB8ICdcXG4nIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICcjJyBhcyBjIC0+XG4gICAgICAgICBpZiBpID0gMCB8fCBzLltpLTFdID0gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICdcXFxcJyB8ICdbJyB8ICddJyB8ICcoJyB8ICcpJyB8ICdgJyB8ICcqJyBhcyBjIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCBjIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICBkb25lO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByZWMgbWFya2Rvd25fb2ZfbWQgbWQgPVxuICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXJrZG93bl9vZl9tZCglUylcXG4lIVwiIChzZXhwcl9vZl9tZCBtZCk7XG4gIGxldCBxdW90ZSA/KGluZGVudD0wKSBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCByZWMgbG9vcCBubCBpID1cbiAgICAgIGlmIGkgPCBsIHRoZW5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBpZiBubCAmJiBpIDwgbCAtIDEgdGhlblxuICAgICAgICAgICAgKGZvciBpID0gMSB0byBpbmRlbnQgZG9cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICcgJ1xuICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj4gXCIpO1xuICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIGxvb3AgdHJ1ZSAoc3VjYyBpKVxuICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgaW4gbG9vcCB0cnVlIDBcbiAgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBhZGRfc3BhY2VzIG4gPSBmb3IgaSA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnICcgZG9uZSBpblxuICBsZXQgcmVmZXJlbmNlcyA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCA/KGZzdF9wX2luX2xpPXRydWUpID8oaXNfaW5fbGlzdD1mYWxzZSkgbGlzdF9pbmRlbnQgbCA9XG4gICAgKCogW2xpc3RfaW5kZW50OiBpbnRdIGlzIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCBpbiBudW1iZXIgb2Ygc3BhY2VzLiAqKVxuICAgICgqIFtpc19pbl9saXN0OiBib29sXSBpcyBuZWNlc3NhcnkgdG8ga25vdyBpZiB3ZSBhcmUgaW5zaWRlIGEgcGFyYWdyYXBoXG4gICAgICAgd2hpY2ggaXMgaW5zaWRlIGEgbGlzdCBpdGVtIGJlY2F1c2UgdGhvc2UgbmVlZCB0byBiZSBpbmRlbnRlZCEgKilcbiAgICBsZXQgbG9vcCA/KGZzdF9wX2luX2xpPWZzdF9wX2luX2xpKSA/KGlzX2luX2xpc3Q9aXNfaW5fbGlzdCkgbGlzdF9pbmRlbnQgbCA9XG4gICAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZzdF9wX2luX2xpIH5pc19pbl9saXN0OmlzX2luX2xpc3QgbGlzdF9pbmRlbnQgbFxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+IGxvb3AgbGlzdF9pbmRlbnQgdFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBtYXRjaCB4I3RvX2h0bWwgfmluZGVudDowIGh0bWxfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAocXVvdGUgfmluZGVudDpsaXN0X2luZGVudCAobWFya2Rvd25fb2ZfbWQgcSkpO1xuICAgICAgaWYgdGwgPD4gW10gdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBpZiAhcmVmZXJlbmNlcyA9IE5vbmUgdGhlbiByZWZlcmVuY2VzIDo9IFNvbWUgcmM7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgKFJhdyhmYWxsYmFjayN0b19zdHJpbmcpOjp0bClcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgaWYgaXNfaW5fbGlzdCB0aGVuXG4gICAgICAgIGlmIGZzdF9wX2luX2xpIHRoZW5cbiAgICAgICAgICBhZGRfc3BhY2VzIChsaXN0X2luZGVudC0yKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZhbHNlIGxpc3RfaW5kZW50IG1kO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIlxcblxcblwiO1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiIVslc10oJXMgXFxcIiVzXFxcIilcIiBhbHQgc3JjIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgdCk7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBjO1xuICAgICAgICAgICAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICAgICAgICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgICAgICkgbDtcbiAgICAgIGlmIGxpc3RfaW5kZW50ID0gMCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCItIFwiO1xuICAgICAgICAgICAgICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgICAgICkgbDtcbiAgICAgIGlmIGxpc3RfaW5kZW50ID0gMCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2xwIGwgOjogdGwgLT5cbiAgICAgIGxldCBjID0gcmVmIDAgaW4gKCogZG9uJ3QgdXNlIExpc3QuaXRlcmkgYmVjYXVzZSBpdCdzIG5vdCBpbiAzLjEyICopXG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJ1xuICAgICAgICB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICBpbmNyIGM7XG4gICAgICAgIGJwcmludGYgYiBcIiVkLiBcIiAhYztcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgKSBsO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVWxwIGwgOjogdGwgLT5cbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGJwcmludGYgYiBcIisgXCI7XG4gICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAoKiBQYXJhZ3JhcGhzID0+IE5vIG5lZWQgb2YgJ1xcbicgKilcbiAgICAgICAgICAgICAgICkgbDtcbiAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgIHwgKEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol9cbiAgICAgIHwgTkw6OihIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF8pOjpfIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nXG4gICAgICB8IF8gLT4gKClcbiAgICAgIGVuZDtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IENvZGUoX2xhbmcsIGMpIDo6IHRsIC0+ICgqIEZJWE1FICopXG4gICAgICBsZXQgbiA9ICgqIGNvbXB1dGUgaG93IG1hbnkgYmFja3F1b3RlcyB3ZSBuZWVkIHRvIHVzZSAqKVxuICAgICAgICBsZXQgZmlsdGVyIChuOmludCkgKHM6aW50IGxpc3QpID1cbiAgICAgICAgICBpZiBuID4gMCAmJiBuIDwgMTAgdGhlblxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBlIC0+IGUgPD4gbikgc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGMgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgeCBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgfCBoZDo6XyAtPiBoZFxuICAgICAgICAgICAgfCBbXSAtPiB4KzFcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBjLltpXSB3aXRoXG4gICAgICAgICAgICB8ICdgJyAtPiBsb29wIHMgeCAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIChtYXggYiB4KSAwIChzdWNjIGkpXG4gICAgICAgIGluXG4gICAgICAgICAgbG9vcCBbMTsyOzM7NDs1OzY7Nzs4Ozk7MTBdIDAgMCAwXG4gICAgICBpblxuICAgICAgICBiZWdpblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgICAgaWYgYy5bMF0gPSAnYCcgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgYztcbiAgICAgICAgICBpZiBjLltTdHJpbmcubGVuZ3RoIGMgLSAxXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgbiBzID1cbiAgICAgICAgICBpZiBuID4gMCAmJiBuIDwgMTAgdGhlblxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBlIC0+IGUgPD4gbikgc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGMgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgYiBpID1cbiAgICAgICAgICBpZiBpID0gbCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBmaWx0ZXIgYiBzIHdpdGhcbiAgICAgICAgICAgICAgfCBoZDo6XyAtPiBoZFxuICAgICAgICAgICAgICB8IFtdIC0+IDBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBjLltpXSB3aXRoXG4gICAgICAgICAgICB8ICdgJyAtPiBsb29wIHMgKHN1Y2MgYikgKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPiBsb29wIChmaWx0ZXIgYiBzKSAwIChzdWNjIGkpXG4gICAgICAgIGluXG4gICAgICAgICAgbG9vcCBbMzs0OzU7Njs3Ozg7OTsxMF0gMCAwXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9pbmRlbnRlZF9ibG9jayBuIHMgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgcCBpID1cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJyAnKTtcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBzLltpXTtcbiAgICAgICAgICAgICAgICBsb29wIHMuW2ldIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBzLltpXTtcbiAgICAgICAgICAgICAgICBsb29wIHMuW2ldIChzdWNjIGkpXG4gICAgICAgIGluIGxvb3AgJ1xcbicgMFxuICAgICAgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAgKCogRklYTUUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgKCogY2FzZSB3aGVyZSB3ZSBjYW4ndCB1c2UgYmFja3F1b3RlcyAqKVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKDQrbGlzdF9pbmRlbnQpIGM7XG4gICAgICAgICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIlxuICAgICAgICAgIGVuZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5tYWtlIChsaXN0X2luZGVudCkgJyAnKTtcbiAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlcyVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKVxuICAgICAgICAgICAgICAoaWYgbGFuZyA9IFwiXCIgdGhlbiAhZGVmYXVsdF9sYW5ndWFnZSBlbHNlIGxhbmcpO1xuICAgICAgICAgICAgb3V0cHV0X2luZGVudGVkX2Jsb2NrIChsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5tYWtlIChsaXN0X2luZGVudCkgJyAnKTtcbiAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1xcblwiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgICAgZW5kO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxiciAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqICogKlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJhd19ibG9jayBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgW10pIDo6IHRsXG4gICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGEpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgIGlmIGEgPT0gYXR0cnMgdGhlblxuICAgICAgICBsb29wIGxpc3RfaW5kZW50IGJvZHlcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbF9vZl9tZCBib2R5KTtcbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCAoSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkpOjp0bCAtPlxuICAgICAgbGV0IG5lZWRzX25ld2xpbmVzID1cbiAgICAgICAgbWF0Y2ggdGwgd2l0aFxuICAgICAgICB8IE5MIDo6IFBhcmFncmFwaCBwIDo6IF9cbiAgICAgICAgfCBQYXJhZ3JhcGggcCA6OiBfIC0+IHAgPD4gW11cbiAgICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgICAgfCBVbCBfIHwgT2wgXyB8IFVscCBfIHwgT2xwIF8gfCBDb2RlIChfLCBfKSB8IENvZGVfYmxvY2sgKF8sIF8pXG4gICAgICAgICAgfCBUZXh0IF8gfCBFbXBoIF8gfCBCb2xkIF8gfCBCciB8SHIgfCBVcmwgKF8sIF8sIF8pXG4gICAgICAgICAgfCBSZWYgKF8sIF8sIF8sIF8pIHwgSW1nX3JlZiAoXywgXywgXywgXylcbiAgICAgICAgICB8IEh0bWwgKF8sIF8sIF8pXG4gICAgICAgICAgfCBCbG9ja3F1b3RlIF8gfCBJbWcgKF8sIF8sIF8pKSA6OiBfIC0+IHRydWVcbiAgICAgICAgfCAoIEh0bWxfYmxvY2sgKF8sIF8sIF8pIHwgSHRtbF9jb21tZW50IF9cbiAgICAgICAgICB8IFJhdyBffFJhd19ibG9jayBfKSA6OiBfLT4gZmFsc2VcbiAgICAgICAgfCBYIF8gOjogXyAtPiBmYWxzZVxuICAgICAgICB8IE5MIDo6IF8gLT4gZmFsc2VcbiAgICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgKFxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgICAgIGlmIG5lZWRzX25ld2xpbmVzIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiO1xuICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICAgICAgKVxuICAgICAgZWxzZVxuICAgICAgICAoXG4gICAgICAgICAgbGV0IGEgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGEpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IGJvZHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIDo6IHRsIC0+XG4gICAgICBpZiB0aXRsZSA9IFwiXCIgdGhlblxuICAgICAgICBicHJpbnRmIGIgXCJbJXNdKCVzKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmXG4gICAgICBlbHNlXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMgXFxcIiVzXFxcIilcIiAobWFya2Rvd25fb2ZfbWQgcykgaHJlZiB0aXRsZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgxIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMiBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgzIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg0IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINSBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPSAxXG4gICAgICB8fCAoQnVmZmVyLmxlbmd0aCBiID4gMSAmJlxuICAgICAgICAgIG5vdChCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpID0gJ1xcbidcbiAgICAgICAgICAgICAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAyKSA9ICdcXG4nKSlcbiAgICAgIHRoZW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCAwIG1kO1xuICAgIGJlZ2luIG1hdGNoICFyZWZlcmVuY2VzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIHIgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gKG5hbWUsICh1cmwsIHRpdGxlKSkgLT5cbiAgICAgICAgICAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgIGJwcmludGYgYiBcIlslc106ICVzIFxcblwiIG5hbWUgdXJsXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGJwcmludGYgYiBcIlslc106ICVzIFxcXCIlc1xcXCJcXG5cIiBuYW1lIHVybCB0aXRsZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgciNnZXRfYWxsXG4gICAgZW5kO1xuICAgIGxldCByZXMgPSBCdWZmZXIuY29udGVudHMgYiBpblxuICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBtYXJrZG93bl9vZl9tZCglUykgPT4gJVNcXG4lIVwiXG4gICAgICAgIChzZXhwcl9vZl9tZCBtZCkgcmVzO1xuICAgIHJlc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbXBsZW1lbnRhdGlvbiBub3RlcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgKiAtIFRoaXMgbW9kdWxlIHNob3VsZCBkZXBlbmQgb24gT0NhbWwncyBzdGFuZGFyZCBsaWJyYXJ5IG9ubHkgYW5kXG4gICAqIHNob3VsZCBiZSBhcyAncHVyZSBPQ2FtbCcgKGkuZS4gZGVwZW5kIGFzIGxlYXN0IGFzIHBvc3NpYmxlIG9uXG4gICAqIGV4dGVybmFsIHRvb2xzKSBhcyBwb3NzaWJsZS5cblxuICAgKiAtIGB3aGlsZScgbG9vcHMgYXJlIHNvbWV0aW1lcyBwcmVmZXJyZWQgdG8gcmVjdXJzaW9uIGJlY2F1c2UgdGhpc1xuICAgKiBtYXkgYmUgdXNlZCBvbiBzeXN0ZW1zIHdoZXJlIHRhaWwgcmVjdXJzaW9uIGlzIG5vdCB3ZWxsXG4gICAqIHN1cHBvcnRlZC4gKEkgdHJpZWQgdG8gd3JpdGUgXCJ3aGlsZVwiIGFzIG9mdGVuIGFzIHBvc3NpYmxlLCBidXQgaXRcbiAgICogdHVybmVkIG91dCB0aGF0IGl0IHdhcyBwcmV0dHkgaW5jb252ZW5pZW50LCBzbyBJIGRvIHVzZVxuICAgKiByZWN1cnNpb24uICBXaGVuIEkgaGF2ZSB0aW1lLCBJJ2xsIGRvIHNvbWUgdGVzdHMgYW5kIHNlZSBpZiBJXG4gICAqIG5lZWQgdG8gY29udmVydCByZWN1cnNpdmUgbG9vcHMgaW50byBpdGVyYXRpdmUgbG9vcHMuIFNvcnJ5IGlmIGl0XG4gICAqIG1ha2VzIGl0IGhhcmRlciB0byByZWFkLilcblxuKilcblxuKCogY2xhc3MgdHlwZSB0YWcgPSBvYmplY3QgbWV0aG9kIGlzX21lIDogJ2EuICdhIC0+IGJvb2wgZW5kICopXG5cbm9wZW4gT21kX3JlcHJlc2VudGF0aW9uXG5cbnR5cGUgdG9rZW4gPSBPbWRfcmVwcmVzZW50YXRpb24udG9rXG50eXBlIHQgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcblxubGV0IHN0cmluZ19vZl90b2tlbiA9IGZ1bmN0aW9uXG4gIHwgVGFnIChuYW1lLCBvKSAtPlxuICAgIGlmIE9tZF91dGlscy5kZWJ1ZyB0aGVuIFwiVEFHKFwiXm5hbWVeXCIpXCIgXiBvI3RvX3N0cmluZyBlbHNlIG8jdG9fc3RyaW5nXG4gIHwgQW1wZXJzYW5kIC0+IFwiJlwiXG4gIHwgQW1wZXJzYW5kcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyYnXG4gIHwgQXQgLT4gXCJAXCJcbiAgfCBBdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdAJ1xuICB8IEJhY2txdW90ZSAtPiBcImBcIlxuICB8IEJhY2txdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdgJ1xuICB8IEJhY2tzbGFzaCAtPiBcIlxcXFxcIlxuICB8IEJhY2tzbGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXFxcJ1xuICB8IEJhciAtPiBcInxcIlxuICB8IEJhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd8J1xuICB8IENhcmV0IC0+IFwiXlwiXG4gIHwgQ2FyZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXidcbiAgfCBDYnJhY2UgLT4gXCJ9XCJcbiAgfCBDYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfSdcbiAgfCBDb2xvbiAtPiBcIjpcIlxuICB8IENvbG9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzonXG4gIHwgQ29tbWEgLT4gXCIsXCJcbiAgfCBDb21tYXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcsJ1xuICB8IENwYXJlbnRoZXNpcyAtPiBcIilcIlxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcpJ1xuICB8IENicmFja2V0IC0+IFwiXVwiXG4gIHwgQ2JyYWNrZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXSdcbiAgfCBEb2xsYXIgLT4gXCIkXCJcbiAgfCBEb2xsYXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJCdcbiAgfCBEb3QgLT4gXCIuXCJcbiAgfCBEb3RzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLidcbiAgfCBEb3VibGVxdW90ZSAtPiBcIlxcXCJcIlxuICB8IERvdWJsZXF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1wiJ1xuICB8IEV4Y2xhbWF0aW9uIC0+IFwiIVwiXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnISdcbiAgfCBFcXVhbCAtPiBcIj1cIlxuICB8IEVxdWFscyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz0nXG4gIHwgR3JlYXRlcnRoYW4gLT4gXCI+XCJcbiAgfCBHcmVhdGVydGhhbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc+J1xuICB8IEhhc2ggLT4gXCIjXCJcbiAgfCBIYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyMnXG4gIHwgTGVzc3RoYW4gLT4gXCI8XCJcbiAgfCBMZXNzdGhhbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc8J1xuICB8IE1pbnVzIC0+IFwiLVwiXG4gIHwgTWludXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLSdcbiAgfCBOZXdsaW5lIC0+IFwiXFxuXCJcbiAgfCBOZXdsaW5lcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcbidcbiAgfCBOdW1iZXIgcyAtPiBzXG4gIHwgT2JyYWNlIC0+IFwie1wiXG4gIHwgT2JyYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3snXG4gIHwgT3BhcmVudGhlc2lzIC0+IFwiKFwiXG4gIHwgT3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJygnXG4gIHwgT2JyYWNrZXQgLT4gXCJbXCJcbiAgfCBPYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdbJ1xuICB8IFBlcmNlbnQgLT4gXCIlXCJcbiAgfCBQZXJjZW50cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyUnXG4gIHwgUGx1cyAtPiBcIitcIlxuICB8IFBsdXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKydcbiAgfCBRdWVzdGlvbiAtPiBcIj9cIlxuICB8IFF1ZXN0aW9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz8nXG4gIHwgUXVvdGUgLT4gXCInXCJcbiAgfCBRdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXCcnXG4gIHwgU2VtaWNvbG9uIC0+IFwiO1wiXG4gIHwgU2VtaWNvbG9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzsnXG4gIHwgU2xhc2ggLT4gXCIvXCJcbiAgfCBTbGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcvJ1xuICB8IFNwYWNlIC0+IFwiIFwiXG4gIHwgU3BhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnICdcbiAgfCBTdGFyIC0+IFwiKlwiXG4gIHwgU3RhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcqJ1xuICB8IFRhYiAtPiBcIiAgICBcIlxuICB8IFRhYnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgoMituKSo0KSAnICdcbiAgfCBUaWxkZSAtPiBcIn5cIlxuICB8IFRpbGRlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ34nXG4gIHwgVW5kZXJzY29yZSAtPiBcIl9cIlxuICB8IFVuZGVyc2NvcmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXydcbiAgfCBXb3JkIHMgLT4gc1xuXG5cbmxldCBzaXplX2FuZF9uZXdsaW5lcyA9IGZ1bmN0aW9uXG4gIHwgVGFnIF8gLT4gKDAsIDApXG4gIHwgQW1wZXJzYW5kIHwgQXQgfCBCYWNrcXVvdGUgfCBCYWNrc2xhc2ggfCBCYXIgfCBDYXJldCB8IENicmFjZVxuICB8IENvbG9uIHwgQ29tbWEgfCBDcGFyZW50aGVzaXMgfCBDYnJhY2tldCB8IERvbGxhciB8IERvdFxuICB8IERvdWJsZXF1b3RlIHwgRXhjbGFtYXRpb24gfCBFcXVhbCB8IEdyZWF0ZXJ0aGFuIHwgSGFzaCB8IExlc3N0aGFuXG4gIHwgTWludXMgfCBPYnJhY2UgfCBPcGFyZW50aGVzaXMgfCBPYnJhY2tldCB8IFBlcmNlbnQgfCBQbHVzXG4gIHwgUXVlc3Rpb24gfCBRdW90ZSB8IFNlbWljb2xvbiB8IFNsYXNoIHwgU3BhY2UgfCBTdGFyIHwgVGFiXG4gIHwgVGlsZGUgfCBVbmRlcnNjb3JlIC0+ICgxLCAwKVxuICB8IEFtcGVyc2FuZHMgeCB8IEF0cyB4IHwgQmFja3F1b3RlcyB4IHwgQmFja3NsYXNocyB4IHwgQmFycyB4IHwgQ2FyZXRzIHhcbiAgfCBDYnJhY2VzIHggfCBDb2xvbnMgeCB8IENvbW1hcyB4IHwgQ3BhcmVudGhlc2lzcyB4IHwgQ2JyYWNrZXRzIHhcbiAgfCBEb2xsYXJzIHggfCBEb3RzIHhcbiAgfCBEb3VibGVxdW90ZXMgeCB8IEV4Y2xhbWF0aW9ucyB4IHwgRXF1YWxzIHggfCBHcmVhdGVydGhhbnMgeCB8IEhhc2hzIHhcbiAgfCBMZXNzdGhhbnMgeFxuICB8IE1pbnVzcyB4IHwgT2JyYWNlcyB4IHwgT3BhcmVudGhlc2lzcyB4IHwgT2JyYWNrZXRzIHggfCBQZXJjZW50cyB4IHwgUGx1c3MgeFxuICB8IFF1ZXN0aW9ucyB4IHwgUXVvdGVzIHggfCBTZW1pY29sb25zIHggfCBTbGFzaHMgeCB8IFNwYWNlcyB4IHwgU3RhcnMgeFxuICB8IFRhYnMgeFxuICB8IFRpbGRlcyB4IHwgVW5kZXJzY29yZXMgeCAtPiAoMit4LCAwKVxuICB8IE5ld2xpbmUgLT4gKDAsIDEpXG4gIHwgTmV3bGluZXMgeCAtPiAoMCwgMit4KVxuICB8IE51bWJlciBzIHwgV29yZCBzIC0+IChTdHJpbmcubGVuZ3RoIHMsIDApXG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCBjLCBubCA9IHNpemVfYW5kX25ld2xpbmVzIHQgaW5cbiAgYyArIG5sXG5cbmxldCBzcGxpdF9maXJzdCA9IGZ1bmN0aW9uXG4gIHwgQW1wZXJzYW5kcyBuIC0+IEFtcGVyc2FuZCwgKGlmIG4gPiAwIHRoZW4gQW1wZXJzYW5kcyhuLTEpIGVsc2UgQW1wZXJzYW5kKVxuICB8IEF0cyBuIC0+IEF0LCAoaWYgbiA+IDAgdGhlbiBBdHMobi0xKSBlbHNlIEF0KVxuICB8IEJhY2txdW90ZXMgbiAtPiBCYWNrcXVvdGUsIChpZiBuID4gMCB0aGVuIEJhY2txdW90ZXMobi0xKSBlbHNlIEJhY2txdW90ZSlcbiAgfCBCYWNrc2xhc2hzIG4gLT4gQmFja3NsYXNoLCAoaWYgbiA+IDAgdGhlbiBCYWNrc2xhc2hzKG4tMSkgZWxzZSBCYWNrc2xhc2gpXG4gIHwgQmFycyBuIC0+IEJhciwgKGlmIG4gPiAwIHRoZW4gQmFycyhuLTEpIGVsc2UgQmFyKVxuICB8IENhcmV0cyBuIC0+IENhcmV0LCAoaWYgbiA+IDAgdGhlbiBDYXJldHMobi0xKSBlbHNlIENhcmV0KVxuICB8IENicmFjZXMgbiAtPiBDYnJhY2UsIChpZiBuID4gMCB0aGVuIENicmFjZXMobi0xKSBlbHNlIENicmFjZSlcbiAgfCBDb2xvbnMgbiAtPiBDb2xvbiwgKGlmIG4gPiAwIHRoZW4gQ29sb25zKG4tMSkgZWxzZSBDb2xvbilcbiAgfCBDb21tYXMgbiAtPiBDb21tYSwgKGlmIG4gPiAwIHRoZW4gQ29tbWFzKG4tMSkgZWxzZSBDb21tYSlcbiAgfCBDcGFyZW50aGVzaXNzIG4gLT4gQ3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBDcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENwYXJlbnRoZXNpcylcbiAgfCBDYnJhY2tldHMgbiAtPiBDYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNrZXRzKG4tMSkgZWxzZSBDYnJhY2tldClcbiAgfCBEb2xsYXJzIG4gLT4gRG9sbGFyLCAoaWYgbiA+IDAgdGhlbiBEb2xsYXJzKG4tMSkgZWxzZSBEb2xsYXIpXG4gIHwgRG90cyBuIC0+IERvdCwgKGlmIG4gPiAwIHRoZW4gRG90cyhuLTEpIGVsc2UgRG90KVxuICB8IERvdWJsZXF1b3RlcyBuIC0+IERvdWJsZXF1b3RlLCAoaWYgbiA+IDAgdGhlbiBEb3VibGVxdW90ZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERvdWJsZXF1b3RlKVxuICB8IEV4Y2xhbWF0aW9ucyBuIC0+IEV4Y2xhbWF0aW9uLCAoaWYgbiA+IDAgdGhlbiBFeGNsYW1hdGlvbnMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEV4Y2xhbWF0aW9uKVxuICB8IEVxdWFscyBuIC0+IEVxdWFsLCAoaWYgbiA+IDAgdGhlbiBFcXVhbHMobi0xKSBlbHNlIEVxdWFsKVxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFuLCAoaWYgbiA+IDAgdGhlbiBHcmVhdGVydGhhbnMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFuKVxuICB8IEhhc2hzIG4gLT4gSGFzaCwgKGlmIG4gPiAwIHRoZW4gSGFzaHMobi0xKSBlbHNlIEhhc2gpXG4gIHwgTGVzc3RoYW5zIG4gLT4gTGVzc3RoYW4sIChpZiBuID4gMCB0aGVuIExlc3N0aGFucyhuLTEpIGVsc2UgTGVzc3RoYW4pXG4gIHwgTWludXNzIG4gLT4gTWludXMsIChpZiBuID4gMCB0aGVuIE1pbnVzcyhuLTEpIGVsc2UgTWludXMpXG4gIHwgTmV3bGluZXMgbiAtPiBOZXdsaW5lLCAoaWYgbiA+IDAgdGhlbiBOZXdsaW5lcyhuLTEpIGVsc2UgTmV3bGluZSlcbiAgfCBPYnJhY2VzIG4gLT4gT2JyYWNlLCAoaWYgbiA+IDAgdGhlbiBPYnJhY2VzKG4tMSkgZWxzZSBPYnJhY2UpXG4gIHwgT3BhcmVudGhlc2lzcyBuIC0+IE9wYXJlbnRoZXNpcywgKGlmIG4gPiAwIHRoZW4gT3BhcmVudGhlc2lzcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXMpXG4gIHwgT2JyYWNrZXRzIG4gLT4gT2JyYWNrZXQsIChpZiBuID4gMCB0aGVuIE9icmFja2V0cyhuLTEpIGVsc2UgT2JyYWNrZXQpXG4gIHwgUGVyY2VudHMgbiAtPiBQZXJjZW50LCAoaWYgbiA+IDAgdGhlbiBQZXJjZW50cyhuLTEpIGVsc2UgUGVyY2VudClcbiAgfCBQbHVzcyBuIC0+IFBsdXMsIChpZiBuID4gMCB0aGVuIFBsdXNzKG4tMSkgZWxzZSBQbHVzKVxuICB8IFF1ZXN0aW9ucyBuIC0+IFF1ZXN0aW9uLCAoaWYgbiA+IDAgdGhlbiBRdWVzdGlvbnMobi0xKSBlbHNlIFF1ZXN0aW9uKVxuICB8IFF1b3RlcyBuIC0+IFF1b3RlLCAoaWYgbiA+IDAgdGhlbiBRdW90ZXMobi0xKSBlbHNlIFF1b3RlKVxuICB8IFNlbWljb2xvbnMgbiAtPiBTZW1pY29sb24sIChpZiBuID4gMCB0aGVuIFNlbWljb2xvbnMobi0xKSBlbHNlIFNlbWljb2xvbilcbiAgfCBTbGFzaHMgbiAtPiBTbGFzaCwgKGlmIG4gPiAwIHRoZW4gU2xhc2hzKG4tMSkgZWxzZSBTbGFzaClcbiAgfCBTcGFjZXMgbiAtPiBTcGFjZSwgKGlmIG4gPiAwIHRoZW4gU3BhY2VzKG4tMSkgZWxzZSBTcGFjZSlcbiAgfCBTdGFycyBuIC0+IFN0YXIsIChpZiBuID4gMCB0aGVuIFN0YXJzKG4tMSkgZWxzZSBTdGFyKVxuICB8IFRhYnMgbiAtPiBUYWIsIChpZiBuID4gMCB0aGVuIFRhYnMobi0xKSBlbHNlIFRhYilcbiAgfCBUaWxkZXMgbiAtPiBUaWxkZSwgKGlmIG4gPiAwIHRoZW4gVGlsZGVzKG4tMSkgZWxzZSBUaWxkZSlcbiAgfCBVbmRlcnNjb3JlcyBuIC0+IFVuZGVyc2NvcmUsIChpZiBuID4gMCB0aGVuIFVuZGVyc2NvcmVzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZSlcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlIHwgQ29sb25cbiAgfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90IHwgRG91YmxlcXVvdGVcbiAgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW4gfCBNaW51c1xuICB8IE5ld2xpbmUgfCBOdW1iZXIgXyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudFxuICB8IFBsdXMgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgfCBUYWcgXyB8IFdvcmQgXyAtPlxuICAgICBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5zcGxpdF9maXJzdFwiXG5cbm1vZHVsZSB0eXBlIElucHV0ID1cbnNpZ1xuICB0eXBlIHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyXG4gIHZhbCBzdWIgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgTGV4KEkgOiBJbnB1dCkgOlxuc2lnXG4gIHZhbCBsZXggOiBJLnQgLT4gdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgbGV4IChzIDogSS50KSA9XG4gICAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbCA9IEkubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmNvdW50IGMgPVxuICAgICAgKCogW3Jjb3VudCBjXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgaW1tZWRpYXRlIGNvbnNlY3V0aXZlXG4gICAgICAgICBvY2N1cnJlbmNlcyBvZiBbY10uICBCeSBzaWRlLWVmZmVjdCwgaXQgaW5jcmVhc2VzIHRoZSByZWZlcmVuY2VcbiAgICAgICAgIGNvdW50ZXIgW2ldLiAqKVxuICAgICAgbGV0IHJlYyBsb29wIHIgPVxuICAgICAgICBpZiAhaSA9IGwgdGhlbiByXG4gICAgICAgIGVsc2UgaWYgSS5nZXQgcyAhaSA9IGMgdGhlbiAoaW5jciBpOyBsb29wIChyKzEpKVxuICAgICAgICBlbHNlIHJcbiAgICAgIGluXG4gICAgICBsb29wIDFcbiAgICBpblxuICAgIGxldCB3b3JkICgpID1cbiAgICAgIGxldCBzdGFydCA9ICFpIGluXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgICAgICBXb3JkKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnXG4gICAgICAgICAgICB8ICdcIicgfCAnXFxcXCcgfCAnXycgfCAnWycgfCAnXScgfCAneycgfCAnfScgfCAnKCcgfCAnKScgfCAnOidcbiAgICAgICAgICAgIHwgJzsnIHwgJz4nIHwgJ34nIHwgJzwnIHwgJ0AnIHwgJyYnIHwgJ3wnIHwgJ14nIHwgJy4nIHwgJy8nXG4gICAgICAgICAgICB8ICckJyB8ICclJyB8ICchJyB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICAgIHwgYyAtPiBpbmNyIGk7IGxvb3AoKVxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBsb29wKClcbiAgICBpblxuICAgIGxldCBtYXliZV9udW1iZXIgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIHdoaWxlXG4gICAgICAgICFpIDwgbCAmJlxuICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBkb1xuICAgICAgICBpbmNyIGlcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhaSA9IGwgdGhlblxuICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgfCAnIycgfCAnKicgfCAnLScgfCAnKycgfCAnYCcgfCAnXFwnJyB8ICdcIidcbiAgICAgICAgICB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6JyB8ICc7JyB8ICc+J1xuICAgICAgICAgIHwgJ34nIHwgJzwnIHwgJ0AnIHwgJyYnIHwgJ3wnIHwgJ14nIHwgJy4nIHwgJy8nIHwgJyQnIHwgJyUnIHwgJyEnXG4gICAgICAgICAgfCAnPycgfCAnPScgLT5cbiAgICAgICAgICAgICAgTnVtYmVyKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGkgOj0gc3RhcnQ7XG4gICAgICAgICAgICAgIHdvcmQoKVxuICAgICAgICBlbmRcbiAgICBpblxuXG4gICAgbGV0IG5fb2NjIGMgPSBpbmNyIGk7IHJjb3VudCBjIGluXG5cbiAgICB3aGlsZSAhaSA8IGwgZG9cbiAgICAgIGxldCBjID0gSS5nZXQgcyAhaSBpblxuICAgICAgbGV0IHcgPSBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNwYWNlIGVsc2UgU3BhY2VzIChuLTIpXG4gICAgICAgIHwgJ1xcdCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2VzKDIpIGVsc2UgU3BhY2VzKDQqbi0yKVxuICAgICAgICB8ICdcXG4nIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE5ld2xpbmUgZWxzZSBOZXdsaW5lcyAobi0yKVxuICAgICAgICB8ICdcXHInIC0+ICgqIGVsaW1pbmF0aW5nIFxcciBieSBjb252ZXJ0aW5nIGFsbCBzdHlsZXMgdG8gdW5peCBzdHlsZSAqKVxuICAgICAgICAgIGluY3IgaTtcbiAgICAgICAgICBsZXQgcmVjIGNvdW50X3JuIHggPVxuICAgICAgICAgICAgaWYgIWkgPCBsICYmIEkuZ2V0IHMgKCFpKSA9ICdcXG4nIHRoZW5cbiAgICAgICAgICAgICAgaWYgIWkgKyAxIDwgbCAmJiBJLmdldCBzICghaSsxKSA9ICdcXHInIHRoZW5cbiAgICAgICAgICAgICAgICAoaSA6PSAhaSArIDI7IGNvdW50X3JuICh4KzEpKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcm4gPSAxICsgY291bnRfcm4gMCBpblxuICAgICAgICAgIGlmIHJuID0gMSB0aGVuXG4gICAgICAgICAgICBtYXRjaCBuX29jYyBjIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBOZXdsaW5lXG4gICAgICAgICAgICB8IHggLT4gYXNzZXJ0KHg+PTIpOyBOZXdsaW5lcyh4LTIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKGFzc2VydChybj49Mik7TmV3bGluZXMocm4tMikpXG4gICAgICAgIHwgJyMnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBIYXNoIGVsc2UgSGFzaHMgKG4tMilcbiAgICAgICAgfCAnKicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFN0YXIgZWxzZSBTdGFycyAobi0yKVxuICAgICAgICB8ICctJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTWludXMgZWxzZSBNaW51c3MgKG4tMilcbiAgICAgICAgfCAnKycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFBsdXMgZWxzZSBQbHVzcyAobi0yKVxuICAgICAgICB8ICdgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3F1b3RlIGVsc2UgQmFja3F1b3RlcyAobi0yKVxuICAgICAgICB8ICdcXCcnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFF1b3RlIGVsc2UgUXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1wiJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG91YmxlcXVvdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcXFwnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhY2tzbGFzaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBCYWNrc2xhc2hzIChuLTIpXG4gICAgICAgIHwgJ18nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBVbmRlcnNjb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVuZGVyc2NvcmVzIChuLTIpXG4gICAgICAgIHwgJ1snICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBPYnJhY2tldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAnXScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFja2V0IGVsc2UgQ2JyYWNrZXRzIChuLTIpXG4gICAgICAgIHwgJ3snICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBPYnJhY2UgZWxzZSBPYnJhY2VzIChuLTIpXG4gICAgICAgIHwgJ30nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYnJhY2UgZWxzZSBDYnJhY2VzIChuLTIpXG4gICAgICAgIHwgJygnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBPcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICcpJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ3BhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENwYXJlbnRoZXNpc3MgKG4tMilcbiAgICAgICAgfCAnOicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbG9uIGVsc2UgQ29sb25zIChuLTIpXG4gICAgICAgIHwgJzsnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTZW1pY29sb24gZWxzZSBTZW1pY29sb25zIChuLTIpXG4gICAgICAgIHwgJz4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBHcmVhdGVydGhhbnMgKG4tMilcbiAgICAgICAgfCAnficgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFRpbGRlIGVsc2UgVGlsZGVzIChuLTIpXG4gICAgICAgIHwgJzwnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyAobi0yKVxuICAgICAgICB8ICdAJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQXQgZWxzZSBBdHMgKG4tMilcbiAgICAgICAgfCAnJicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEFtcGVyc2FuZCBlbHNlIEFtcGVyc2FuZHMgKG4tMilcbiAgICAgICAgfCAnfCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhciBlbHNlIEJhcnMgKG4tMilcbiAgICAgICAgfCAnXicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENhcmV0IGVsc2UgQ2FyZXRzIChuLTIpXG4gICAgICAgIHwgJywnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDb21tYSBlbHNlIENvbW1hcyAobi0yKVxuICAgICAgICB8ICcuJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG90IGVsc2UgRG90cyAobi0yKVxuICAgICAgICB8ICcvJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU2xhc2ggZWxzZSBTbGFzaHMgKG4tMilcbiAgICAgICAgfCAnJCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvbGxhciBlbHNlIERvbGxhcnMgKG4tMilcbiAgICAgICAgfCAnJScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFBlcmNlbnQgZWxzZSBQZXJjZW50cyAobi0yKVxuICAgICAgICB8ICc9JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXF1YWwgZWxzZSBFcXVhbHMgKG4tMilcbiAgICAgICAgfCAnIScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEV4Y2xhbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEV4Y2xhbWF0aW9ucyAobi0yKVxuICAgICAgICB8ICc/JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVlc3Rpb24gZWxzZSBRdWVzdGlvbnMgKG4tMilcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+IG1heWJlX251bWJlcigpXG4gICAgICAgIHwgYyAtPiB3b3JkKCkgaW5cbiAgICAgIHJlc3VsdCA6PSB3IDo6ICFyZXN1bHRcbiAgICBkb25lO1xuICAgIExpc3QucmV2ICFyZXN1bHRcbmVuZFxuXG5tb2R1bGUgTGV4X3N0cmluZyA9IExleChTdHJpbmdMYWJlbHMpXG5sZXQgbGV4ID0gTGV4X3N0cmluZy5sZXhcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhcixcbiAgICAgICAgICAgICAgICAgIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbm1vZHVsZSBCaWdhcnJheV9pbnB1dCA6IElucHV0IHdpdGggdHlwZSB0ID0gYmlnc3RyaW5nID1cbnN0cnVjdFxuICBtb2R1bGUgQkEgPSBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IGJpZ3N0cmluZ1xuICBsZXQgZ2V0ID0gQkEuQXJyYXkxLmdldFxuICBsZXQgbGVuZ3RoID0gQkEuQXJyYXkxLmRpbVxuICBsZXQgc3ViIGFyciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgcG9zIDwgMCB8fCBwb3MgKyBsZW4gPiBCQS5BcnJheTEuZGltIGFyclxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdhcnJheV9pbnB1dC5zdWJcIjtcbiAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBzIGkgKEJBLkFycmF5MS51bnNhZmVfZ2V0IGFyciAoaSArIHBvcykpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbmVuZFxubW9kdWxlIExleF9iaWdhcnJheSA9IExleChCaWdhcnJheV9pbnB1dClcbmxldCBsZXhfYmlnYXJyYXkgPSBMZXhfYmlnYXJyYXkubGV4XG5cbmxldCBtYWtlX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAwIC0+IGludmFsaWRfYXJnIFwiT21kX2xleGVyLm1ha2Vfc3BhY2VcIlxuICB8IDEgLT4gU3BhY2VcbiAgfCBuIC0+IGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiIGVsc2UgU3BhY2VzIChuLTIpXG5cblxuKCpcbigqKiBbc3RyaW5nX29mX3RsIGxdIHJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsLlxuICAgIFtlc3RyaW5nX29mX3RsIGxdIHJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGxcbiAgICAoc2FtZSBzZW1hbnRpY3MgYXMgW1N0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdGwgbCldKS4gKilcbmxldCBzdHJpbmdfb2ZfdGwsIGVzdHJpbmdfb2ZfdGwgPVxuICBsZXQgZyBlc2NhcGVkIHRsID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNDIgaW5cbiAgICBsZXQgcmVjIGxvb3AgOiAnYSB0IGxpc3QgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaWYgZXNjYXBlZCB0aGVuIFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdCBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc3RyaW5nX29mX3QgZSk7XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgICgpXG4gICAgaW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCB0bDsgYilcbiAgaW4gZyBmYWxzZSwgZyB0cnVlXG4qKVxuXG5sZXQgc3RyaW5nX29mX3Rva2VucyB0bCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgTGlzdC5pdGVyIChmdW4gZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfdG9rZW4gZSkpIHRsO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBkZXN0cmluZ19vZl90b2tlbnMgPyhsaW1pdD1tYXhfaW50KSB0bCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCAoaTppbnQpICh0bGlzdDp0b2sgbGlzdCkgOiB1bml0ID0gbWF0Y2ggdGxpc3Qgd2l0aFxuICAgIHwgZTo6dGwgLT5cbiAgICAgICAgaWYgbGltaXQgPSBpIHRoZW5cbiAgICAgICAgICBsb29wIGkgW11cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3Rva2VuIGUpKTtcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI6OlwiO1xuICAgICAgICAgICAgbG9vcCAoc3VjYyBpKSB0bFxuICAgICAgICAgIGVuZFxuICAgIHwgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIltdXCJcbiAgaW5cbiAgICBCdWZmZXIuY29udGVudHMgKGxvb3AgMCB0bDsgYilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzLTIwMTQgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHNkZWJ1ZyA9IHRydWVcblxub3BlbiBQcmludGZcbm9wZW4gT21kX3JlcHJlc2VudGF0aW9uXG5vcGVuIE9tZF91dGlsc1xubW9kdWxlIEwgPSBPbWRfbGV4ZXJcblxudHlwZSByID0gT21kX3JlcHJlc2VudGF0aW9uLnRcbigqKiBhY2N1bXVsYXRvciAoYmV3YXJlLCByZXZlcnNlZCB0b2tlbnMpICopXG5cbmFuZCBwID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG4oKiogY29udGV4dCBpbmZvcm1hdGlvbjogcHJldmlvdXMgZWxlbWVudHMgKilcblxuYW5kIGwgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiB0b2tlbnMgdG8gcGFyc2UgKilcblxuYW5kIG1haW5fbG9vcCA9XG4gID9odG1sOmJvb2wgLT5cbiAgciAtPiAoKiBhY2N1bXVsYXRvciAoYmV3YXJlLCByZXZlcnNlZCB0b2tlbnMpICopXG4gIHAgLT4gKCogaW5mbzogcHJldmlvdXMgZWxlbWVudHMgKilcbiAgbCAtPiAoKiB0b2tlbnMgdG8gcGFyc2UgKilcbiAgT21kX3JlcHJlc2VudGF0aW9uLnQgKCogZmluYWwgcmVzdWx0ICopXG4oKiogbW9zdCBpbXBvcnRhbnQgbG9vcCAqKVxuXG5cbigqKiBOLkIuIFBsZWFzZSBkbyBub3QgdXNlIHRhYnVsYXRpb25zIGluIHlvdXIgTWFya2Rvd24gZmlsZSEgKilcblxubW9kdWxlIHR5cGUgRW52ID0gc2lnXG4gIHZhbCByYzogT21kX3JlcHJlc2VudGF0aW9uLnJlZl9jb250YWluZXJcbiAgdmFsIGV4dGVuc2lvbnMgOiBPbWRfcmVwcmVzZW50YXRpb24uZXh0ZW5zaW9uc1xuICB2YWwgZGVmYXVsdF9sYW5nIDogc3RyaW5nXG4gIHZhbCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlIDogYm9vbFxuICB2YWwgYmxpbmRfaHRtbCA6IGJvb2xcbiAgdmFsIHN0cmljdF9odG1sIDogYm9vbFxuICB2YWwgd2FybmluZyA6IGJvb2xcbiAgdmFsIHdhcm5fZXJyb3IgOiBib29sXG5lbmRcblxubW9kdWxlIFVuaXQgPSBzdHJ1Y3QgZW5kXG5cbm1vZHVsZSBEZWZhdWx0X2VudiAoVW5pdDpzaWcgZW5kKSA6IEVudiA9IHN0cnVjdFxuICBsZXQgcmMgPSBuZXcgT21kX3JlcHJlc2VudGF0aW9uLnJlZl9jb250YWluZXJcbiAgbGV0IGV4dGVuc2lvbnMgPSBbXVxuICBsZXQgZGVmYXVsdF9sYW5nID0gXCJcIlxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSA9IHRydWVcbiAgbGV0IGJsaW5kX2h0bWwgPSBmYWxzZVxuICBsZXQgc3RyaWN0X2h0bWwgPSBmYWxzZVxuICBsZXQgd2FybmluZyA9IGZhbHNlXG4gIGxldCB3YXJuX2Vycm9yID0gZmFsc2VcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRW52OkVudikgPVxuc3RydWN0XG4gIGluY2x1ZGUgRW52XG5cbiAgbGV0IHdhcm4gPSBPbWRfdXRpbHMud2FybiB+d2U6d2Fybl9lcnJvclxuXG4gICgqKiBzZXQgb2Yga25vd24gSFRNTCBjb2RlcyAqKVxuICBsZXQgaHRtbGNvZGVzX3NldCA9IFN0cmluZ1NldC5vZl9saXN0ICgqIFRoaXMgbGlzdCBzaG91bGQgYmUgY2hlY2tlZC4uLiAqKVxuICAgICAgKCogbGlzdCBleHRyYWN0ZWQgZnJvbTogaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvY2hhcnNldC5odG1sICopXG4gICAgICBbIFwiQUVsaWdcIjsgIFwiQWFjdXRlXCI7ICBcIkFjaXJjXCI7ICBcIkFncmF2ZVwiOyBcIkFscGhhXCI7ICBcIkFyaW5nXCI7ICBcIkF0aWxkZVwiO1xuICAgICAgICBcIkF1bWxcIjsgXCJCZXRhXCI7ICBcIkNjZWRpbFwiOyBcIkNoaVwiOyBcIkRhZ2dlclwiOyAgXCJEZWx0YVwiOyBcIkVUSFwiOyBcIkVhY3V0ZVwiO1xuICAgICAgICBcIkVjaXJjXCI7ICBcIkVncmF2ZVwiOyAgXCJFcHNpbG9uXCI7ICAgXCJFdGFcIjsgIFwiRXVtbFwiOyAgXCJHYW1tYVwiOyAgXCJJYWN1dGVcIjtcbiAgICAgICAgXCJJY2lyY1wiOyBcIklncmF2ZVwiOyBcIklvdGFcIjsgIFwiSXVtbFwiOyBcIkthcHBhXCI7IFwiTGFtYmRhXCI7IFwiTXVcIjsgXCJOdGlsZGVcIjtcbiAgICAgICAgXCJOdVwiOyAgXCJPRWxpZ1wiOyAgXCJPYWN1dGVcIjsgICBcIk9jaXJjXCI7ICBcIk9ncmF2ZVwiOyAgXCJPbWVnYVwiOyAgXCJPbWljcm9uXCI7XG4gICAgICAgIFwiT3NsYXNoXCI7ICBcIk90aWxkZVwiOyAgXCJPdW1sXCI7ICBcIlBoaVwiOyAgXCJQaVwiOyAgXCJQcmltZVwiOyAgXCJQc2lcIjsgIFwiUmhvXCI7XG4gICAgICAgIFwiU2Nhcm9uXCI7ICBcIlNpZ21hXCI7ICAgXCJUSE9STlwiOyAgXCJUYXVcIjsgIFwiVGhldGFcIjsgICBcIlVhY3V0ZVwiOyAgXCJVY2lyY1wiO1xuICAgICAgICBcIlVncmF2ZVwiOyBcIlVwc2lsb25cIjsgXCJVdW1sXCI7IFwiWGlcIjsgXCJZYWN1dGVcIjsgXCJZdW1sXCI7IFwiWmV0YVwiOyBcImFhY3V0ZVwiO1xuICAgICAgICBcImFjaXJjXCI7IFwiYWN1dGVcIjsgXCJhZWxpZ1wiOyBcImFncmF2ZVwiOyBcImFsZWZzeW1cIjsgXCJhbHBoYVwiOyBcImFtcFwiOyBcImFuZFwiO1xuICAgICAgICBcImFuZ1wiOyBcImFyaW5nXCI7IFwiYXN5bXBcIjsgIFwiYXRpbGRlXCI7IFwiYXVtbFwiOyBcImJkcXVvXCI7IFwiYmV0YVwiOyBcImJydmJhclwiO1xuICAgICAgICBcImJ1bGxcIjsgIFwiY2FwXCI7ICBcImNjZWRpbFwiOyBcImNlZGlsXCI7ICBcImNlbnRcIjsgIFwiY2hpXCI7IFwiY2lyY1wiOyAgXCJjbHVic1wiO1xuICAgICAgICBcImNvbmdcIjsgIFwiY29weVwiOyBcImNyYXJyXCI7IFwiY3VwXCI7ICBcImN1cnJlblwiOyBcImRBcnJcIjsgIFwiZGFnZ2VyXCI7IFwiZGFyclwiO1xuICAgICAgICBcImRlZ1wiOyAgXCJkZWx0YVwiOyAgXCJkaWFtc1wiOyAgIFwiZGl2aWRlXCI7ICBcImVhY3V0ZVwiOyAgXCJlY2lyY1wiOyAgXCJlZ3JhdmVcIjtcbiAgICAgICAgXCJlbXB0eVwiOyAgXCJlbXNwXCI7IFwiZW5zcFwiOyAgXCJlcHNpbG9uXCI7IFwiZXF1aXZcIjsgIFwiZXRhXCI7ICBcImV0aFwiOyBcImV1bWxcIjtcbiAgICAgICAgXCJldXJvXCI7ICBcImV4aXN0XCI7ICBcImZub2ZcIjsgIFwiZm9yYWxsXCI7ICBcImZyYWMxMlwiOyAgXCJmcmFjMTRcIjsgIFwiZnJhYzM0XCI7XG4gICAgICAgIFwiZnJhc2xcIjsgIFwiZ2FtbWFcIjsgIFwiZ2VcIjsgXCJndFwiOyAgXCJoQXJyXCI7ICBcImhhcnJcIjsgXCJoZWFydHNcIjsgIFwiaGVsbGlwXCI7XG4gICAgICAgIFwiaWFjdXRlXCI7IFwiaWNpcmNcIjsgXCJpZXhjbFwiOyBcImlncmF2ZVwiOyBcImltYWdlXCI7IFwiaW5maW5cIjsgXCJpbnRcIjsgXCJpb3RhXCI7XG4gICAgICAgIFwiaXF1ZXN0XCI7IFwiaXNpblwiOyBcIml1bWxcIjsgIFwia2FwcGFcIjsgXCJsQXJyXCI7IFwibGFtYmRhXCI7IFwibGFuZ1wiOyBcImxhcXVvXCI7XG4gICAgICAgIFwibGFyclwiOyAgXCJsY2VpbFwiOyAgXCJsZHF1b1wiOyBcImxlXCI7ICBcImxmbG9vclwiOyAgXCJsb3dhc3RcIjsgXCJsb3pcIjsgIFwibHJtXCI7XG4gICAgICAgIFwibHNhcXVvXCI7IFwibHNxdW9cIjsgXCJsdFwiOyAgXCJtYWNyXCI7IFwibWRhc2hcIjsgXCJtaWNyb1wiOyBcIm1pZGRvdFwiOyBcIm1pbnVzXCI7XG4gICAgICAgIFwibXVcIjsgXCJuYWJsYVwiOyAgXCJuYnNwXCI7IFwibmRhc2hcIjsgIFwibmVcIjsgXCJuaVwiOyBcIm5vdFwiOyAgXCJub3RpblwiOyBcIm5zdWJcIjtcbiAgICAgICAgXCJudGlsZGVcIjsgIFwibnVcIjsgICBcIm9hY3V0ZVwiOyAgXCJvY2lyY1wiOyAgXCJvZWxpZ1wiOyAgIFwib2dyYXZlXCI7ICBcIm9saW5lXCI7XG4gICAgICAgIFwib21lZ2FcIjsgXCJvbWljcm9uXCI7IFwib3BsdXNcIjsgXCJvclwiOyBcIm9yZGZcIjsgXCJvcmRtXCI7IFwib3NsYXNoXCI7IFwib3RpbGRlXCI7XG4gICAgICAgIFwib3RpbWVzXCI7ICBcIm91bWxcIjsgIFwicGFyYVwiOyAgXCJwYXJ0XCI7ICBcInBlcm1pbFwiOyBcInBlcnBcIjsgIFwicGhpXCI7ICBcInBpXCI7XG4gICAgICAgIFwicGl2XCI7ICBcInBsdXNtblwiOyAgXCJwb3VuZFwiOyBcInByaW1lXCI7ICBcInByb2RcIjsgIFwicHJvcFwiOyBcInBzaVwiOyAgXCJxdW90XCI7XG4gICAgICAgIFwickFyclwiOyAgXCJyYWRpY1wiOyBcInJhbmdcIjsgXCJyYXF1b1wiOyAgXCJyYXJyXCI7IFwicmNlaWxcIjsgIFwicmRxdW9cIjsgXCJyZWFsXCI7XG4gICAgICAgIFwicmVnXCI7IFwicmZsb29yXCI7ICBcInJob1wiOyBcInJsbVwiOyBcInJzYXF1b1wiOyAgXCJyc3F1b1wiOyBcInNicXVvXCI7IFwic2Nhcm9uXCI7XG4gICAgICAgIFwic2RvdFwiOyAgXCJzZWN0XCI7ICBcInNoeVwiOyBcInNpZ21hXCI7ICBcInNpZ21hZlwiOyAgXCJzaW1cIjsgXCJzcGFkZXNcIjsgIFwic3ViXCI7XG4gICAgICAgIFwic3ViZVwiOyBcInN1bVwiOyBcInN1cFwiOyBcInN1cDFcIjsgIFwic3VwMlwiOyBcInN1cDNcIjsgXCJzdXBlXCI7IFwic3psaWdcIjsgXCJ0YXVcIjtcbiAgICAgICAgXCJ0aGVyZTRcIjsgIFwidGhldGFcIjsgXCJ0aGV0YXN5bVwiOyAgXCJ0aGluc3BcIjsgXCJ0aG9yblwiOyAgXCJ0aWxkZVwiOyBcInRpbWVzXCI7XG4gICAgICAgIFwidHJhZGVcIjsgXCJ1QXJyXCI7IFwidWFjdXRlXCI7ICBcInVhcnJcIjsgXCJ1Y2lyY1wiOyBcInVncmF2ZVwiOyBcInVtbFwiOyBcInVwc2loXCI7XG4gICAgICAgIFwidXBzaWxvblwiOyAgXCJ1dW1sXCI7IFwid2VpZXJwXCI7IFwieGlcIjsgIFwieWFjdXRlXCI7IFwieWVuXCI7ICBcInl1bWxcIjsgXCJ6ZXRhXCI7XG4gICAgICAgIFwiendqXCI7IFwiendualwiOyBdXG5cblxuICAoKiogc2V0IG9mIGtub3duIGlubGluZSBIVE1MIHRhZ3MgKilcbiAgbGV0IGlubGluZV9odG1sdGFnc19zZXQgPVxuICAgICAgKFN0cmluZ1NldC5vZl9saXN0XG4gICAgICAgICAoKiBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9JbmxpbmVfZWxlbWVudHMgKilcbiAgICAgICAgIFsgXCJiXCI7XCJiaWdcIjtcImlcIjtcInNtYWxsXCI7XCJ0dFwiO1xuICAgICAgICAgICBcImFiYnJcIjtcImFjcm9ueW1cIjtcImNpdGVcIjtcImNvZGVcIjtcImRmblwiO1wiZW1cIjtcImtiZFwiO1wic3Ryb25nXCI7XCJzYW1wXCI7XCJ2YXJcIjtcbiAgICAgICAgICAgXCJhXCI7XCJiZG9cIjtcImJyXCI7XCJpbWdcIjtcIm1hcFwiO1wib2JqZWN0XCI7XCJxXCI7XCJzcGFuXCI7XCJzdWJcIjtcInN1cFwiO1xuICAgICAgICAgICBcImJ1dHRvblwiO1wiaW5wdXRcIjtcImxhYmVsXCI7XCJzZWxlY3RcIjtcInRleHRhcmVhXCI7XSlcblxuICAoKiogTi5CLiBpdCBzZWVtcyB0aGF0IHRoZXJlIGlzIG5vIGNsZWFyIGRpc3RpbmN0aW9uIGJldHdlZW4gaW5saW5lXG4gICAgICB0YWdzIGFuZCBibG9jay1sZXZlbCB0YWdzOiBpbiBIVE1MNCBpdCB3YXMgbm90IGNsZWFyLCBpbiBIVE1MNVxuICAgICAgaXQncyBldmVuIG1vcmUgY29tcGxpY2F0ZWQuIFNvLCB0aGUgY2hvaWNlICpoZXJlKiBpcyB0byBzcGVjaWZ5XG4gICAgICBhIHNldCBvZiB0YWdzIGNvbnNpZGVyZWQgYXMgXCJpbmxpbmVcIiwgY2YuIFtpbmxpbmVfaHRtbHRhZ3Nfc2V0XS5cbiAgICAgIFNvIHRoZXJlIHdpbGwgYmUgaW5saW5lIHRhZ3MsIG5vbi1pbmxpbmUgdGFncywgYW5kIHVua25vd25cbiAgICAgIHRhZ3MuKilcblxuICAoKiogc2V0IG9mIEhUTUwgdGFncyB0aGF0IG1heSBhcHBlYXIgb3V0IG9mIGEgYm9keSAqKVxuICBsZXQgbm90aW5ib2R5dGFncyA9IFN0cmluZ1NldC5vZl9saXN0XG4gICAgICBbXG4gICAgICAgIFwidGl0bGVcIjtcbiAgICAgICAgXCJsaW5rXCI7XG4gICAgICAgIFwibWV0YVwiO1xuICAgICAgICBcInN0eWxlXCI7XG4gICAgICAgIFwiaHRtbFwiO1xuICAgICAgICBcImhlYWRcIjtcbiAgICAgICAgXCJib2R5XCI7XG4gICAgICBdXG5cbiAgKCoqIEFsbCBrbm93biBIVE1MIHRhZ3MgKilcbiAgbGV0IGh0bWx0YWdzX3NldCA9XG4gICAgU3RyaW5nU2V0LnVuaW9uIG5vdGluYm9keXRhZ3NcbiAgICAgIChTdHJpbmdTZXQudW5pb24gaW5saW5lX2h0bWx0YWdzX3NldFxuICAgICAgICAgKFN0cmluZ1NldC5vZl9saXN0XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwiYVwiO1wiYWJiclwiO1wiYWNyb255bVwiO1wiYWRkcmVzc1wiO1wiYXBwbGV0XCI7XCJhcmVhXCI7XCJhcnRpY2xlXCI7XCJhc2lkZVwiXG4gICAgICAgICAgICAgIDtcImF1ZGlvXCI7XCJiXCI7XCJiYXNlXCI7XCJiYXNlZm9udFwiO1wiYmRpXCI7XCJiZG9cIjtcImJpZ1wiO1wiYmxvY2txdW90ZVwiXG4gICAgICAgICAgICAgIDtcImJyXCI7XCJidXR0b25cIjtcImNhbnZhc1wiO1wiY2FwdGlvblwiO1wiY2VudGVyXCI7XCJjaXRlXCI7XCJjb2RlXCI7XCJjb2xcIlxuICAgICAgICAgICAgICA7XCJjb2xncm91cFwiO1wiY29tbWFuZFwiO1wiZGF0YWxpc3RcIjtcImRkXCI7XCJkZWxcIjtcImRldGFpbHNcIjtcImRmblwiXG4gICAgICAgICAgICAgIDtcImRpYWxvZ1wiO1wiZGlyXCI7XCJkaXZcIjtcImRsXCI7XCJkdFwiO1wiZW1cIjtcImVtYmVkXCI7XCJmaWVsZHNldFwiXG4gICAgICAgICAgICAgIDtcImZpZ2NhcHRpb25cIjtcImZpZ3VyZVwiO1wiZm9udFwiO1wiZm9vdGVyXCI7XCJmb3JtXCI7XCJmcmFtZVwiO1wiZnJhbWVzZXRcIlxuICAgICAgICAgICAgICA7XCJoMlwiO1wiaDNcIjtcImg0XCI7XCJoNVwiO1wiaDZcIlxuICAgICAgICAgICAgICA7XCJoMVwiO1wiaGVhZGVyXCI7XCJoclwiO1wiaVwiO1wiaWZyYW1lXCI7XCJpbWdcIjtcImlucHV0XCI7XCJpbnNcIjtcImtiZFwiXG4gICAgICAgICAgICAgIDtcImtleWdlblwiO1wibGFiZWxcIjtcImxlZ2VuZFwiO1wibGlcIjtcIm1hcFwiO1wibWFya1wiO1wibWVudVwiO1wibWV0ZXJcIjtcIm5hdlwiXG4gICAgICAgICAgICAgIDtcIm5vZnJhbWVzXCI7XCJub3NjcmlwdFwiO1wib2JqZWN0XCI7XCJvbFwiO1wib3B0Z3JvdXBcIjtcIm9wdGlvblwiO1wib3V0cHV0XCJcbiAgICAgICAgICAgICAgO1wicFwiO1wicGFyYW1cIjtcInByZVwiO1wicHJvZ3Jlc3NcIjtcInFcIjtcInJwXCI7XCJydFwiO1wicnVieVwiO1wic1wiO1wic2FtcFwiXG4gICAgICAgICAgICAgIDtcInNjcmlwdFwiO1wic2VjdGlvblwiO1wic2VsZWN0XCI7XCJzbWFsbFwiO1wic291cmNlXCI7XCJzcGFuXCI7XCJzdHJpa2VcIlxuICAgICAgICAgICAgICA7XCJzdHJvbmdcIjtcInN0eWxlXCI7XCJzdWJcIjtcInN1bW1hcnlcIjtcInN1cFwiO1widGFibGVcIjtcInRib2R5XCI7XCJ0ZFwiXG4gICAgICAgICAgICAgIDtcInRleHRhcmVhXCI7XCJ0Zm9vdFwiO1widGhcIjtcInRoZWFkXCI7XCJ0aW1lXCI7XCJ0clwiO1widHJhY2tcIjtcInR0XCI7XCJ1XCJcbiAgICAgICAgICAgICAgO1widWxcIjtcInZhclwiO1widmlkZW9cIjtcIndiclwiXG4gICAgICAgICAgICBdKSlcblxuXG4gICgqKiBUaGlzIGZ1bmN0aW9ucyBmaXhlcyBiYWQgbGV4aW5nIHRyZWVzLCB3aGljaCBtYXkgYmUgYnVpbHQgd2hlblxuICAgICAgZXh0cmFjdGlvbiBhIHBvcnRpb24gb2YgYW5vdGhlciBsZXhpbmcgdHJlZS4gKilcbiAgbGV0IGZpeCBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAoKiBjb2RlIHRvIGdlbmVyYXRlIHdoYXQgZm9sbG93cy4uLlxuICAgICAgICAgTGlzdC5pdGVyIChmdW4gZSAtPlxuICAgICAgICAgUHJpbnRmLnByaW50ZiBcIlxuICAgICAgICAgfCAlczo6JXM6OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDFcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzIDA6OnRsKVxuICAgICAgICAgfCAlc3Mgbjo6JXM6OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDJcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzKG4rMSk6OnRsKVxuICAgICAgICAgfCAlczo6JXNzIG46OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDNcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzKG4rMSk6OnRsKVxuICAgICAgICAgfCAlc3MgYTo6JXNzIGI6OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDRcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzKGErYisyKTo6dGwpXCJcbiAgICAgICAgIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUpXG4gICAgICAgICBbXCJBbXBlcnNhbmRcIjsgXCJBdFwiOyBcIkJhY2txdW90ZVwiOyBcIkJhY2tzbGFzaFwiOyBcIkJhclwiOyBcIkNhcmV0XCI7IFwiQ2JyYWNlXCI7IFwiQ29sb25cIjsgXCJDb21tYVwiOyBcIkNwYXJlbnRoZXNpc1wiOyBcIkNicmFja2V0XCI7IFwiRG9sbGFyXCI7IFwiRG90XCI7IFwiRG91YmxlcXVvdGVcIjsgXCJFeGNsYW1hdGlvblwiOyBcIkVxdWFsXCI7IFwiR3JlYXRlcnRoYW5cIjsgXCJIYXNoXCI7IFwiTGVzc3RoYW5cIjsgXCJNaW51c1wiOyBcIk5ld2xpbmVcIjsgXCJPYnJhY2VcIjsgXCJPcGFyZW50aGVzaXNcIjsgXCJPYnJhY2tldFwiOyBcIlBlcmNlbnRcIjsgXCJQbHVzXCI7IFwiUXVlc3Rpb25cIjsgXCJRdW90ZVwiOyBcIlNlbWljb2xvblwiOyBcIlNsYXNoXCI7IFwiU3BhY2VcIjsgXCJTdGFyXCI7IFwiVGFiXCI7IFwiVGlsZGVcIjsgXCJVbmRlcnNjb3JlXCJdO1xuICAgICAgICAgcHJpbnRfc3RyaW5nIFwifCB4Ojp0bCAtPiBsb29wICh4OjphY2N1KSB0bFxcbnwgW10gLT4gTGlzdC5yZXYgYWNjdVxcblwiOyAqKVxuICAgICAgfCBBbXBlcnNhbmQ6OkFtcGVyc2FuZDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzIDA6OnRsKVxuICAgICAgfCBBbXBlcnNhbmRzIG46OkFtcGVyc2FuZDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzKG4rMSk6OnRsKVxuICAgICAgfCBBbXBlcnNhbmQ6OkFtcGVyc2FuZHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzKG4rMSk6OnRsKVxuICAgICAgfCBBbXBlcnNhbmRzIGE6OkFtcGVyc2FuZHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzKGErYisyKTo6dGwpXG4gICAgICB8IEF0OjpBdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyAwOjp0bClcbiAgICAgIHwgQXRzIG46OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKG4rMSk6OnRsKVxuICAgICAgfCBBdDo6QXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0cyBhOjpBdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhhK2IrMik6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzIDA6OnRsKVxuICAgICAgfCBCYWNrcXVvdGVzIG46OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OkJhY2txdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGVzIGE6OkJhY2txdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3NsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMgMDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgbjo6QmFja3NsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMobisxKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3NsYXNocyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMobisxKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgYTo6QmFja3NsYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFyOjpCYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyAwOjp0bClcbiAgICAgIHwgQmFycyBuOjpCYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyhuKzEpOjp0bClcbiAgICAgIHwgQmFyOjpCYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyhuKzEpOjp0bClcbiAgICAgIHwgQmFycyBhOjpCYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyhhK2IrMik6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMgMDo6dGwpXG4gICAgICB8IENhcmV0cyBuOjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2FyZXQ6OkNhcmV0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldHMgYTo6Q2FyZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMoYStiKzIpOjp0bClcbiAgICAgIHwgQ2JyYWNlOjpDYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyAwOjp0bClcbiAgICAgIHwgQ2JyYWNlcyBuOjpDYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNlOjpDYnJhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNlcyBhOjpDYnJhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMgMDo6dGwpXG4gICAgICB8IENvbG9ucyBuOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgQ29sb246OkNvbG9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbnMgYTo6Q29sb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzIDA6OnRsKVxuICAgICAgfCBDb21tYXMgbjo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMobisxKTo6dGwpXG4gICAgICB8IENvbW1hOjpDb21tYXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWFzIGE6OkNvbW1hcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKGErYisyKTo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpczo6Q3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MgMDo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3Mgbjo6Q3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpczo6Q3BhcmVudGhlc2lzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgYTo6Q3BhcmVudGhlc2lzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MoYStiKzIpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzIDA6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgbjo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IENicmFja2V0OjpDYnJhY2tldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIGE6OkNicmFja2V0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKGErYisyKTo6dGwpXG4gICAgICB8IERvbGxhcjo6RG9sbGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMgMDo6dGwpXG4gICAgICB8IERvbGxhcnMgbjo6RG9sbGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMobisxKTo6dGwpXG4gICAgICB8IERvbGxhcjo6RG9sbGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMobisxKTo6dGwpXG4gICAgICB8IERvbGxhcnMgYTo6RG9sbGFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgRG90OjpEb3Q6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyAwOjp0bClcbiAgICAgIHwgRG90cyBuOjpEb3Q6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyhuKzEpOjp0bClcbiAgICAgIHwgRG90OjpEb3RzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyhuKzEpOjp0bClcbiAgICAgIHwgRG90cyBhOjpEb3RzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMgMDo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBuOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGU6OkRvdWJsZXF1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgYTo6RG91YmxlcXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zIDA6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMobisxKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9uOjpFeGNsYW1hdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb25zIGE6OkV4Y2xhbWF0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKGErYisyKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyAwOjp0bClcbiAgICAgIHwgRXF1YWxzIG46OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKG4rMSk6OnRsKVxuICAgICAgfCBFcXVhbDo6RXF1YWxzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFscyBhOjpFcXVhbHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhhK2IrMik6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMgMDo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW46OkdyZWF0ZXJ0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgYTo6R3JlYXRlcnRoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgSGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMgMDo6dGwpXG4gICAgICB8IEhhc2hzIG46Okhhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNocyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhuKzEpOjp0bClcbiAgICAgIHwgSGFzaHMgYTo6SGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMoYStiKzIpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zIDA6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMobisxKTo6dGwpXG4gICAgICB8IExlc3N0aGFuOjpMZXNzdGhhbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIGE6Okxlc3N0aGFucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKGErYisyKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyAwOjp0bClcbiAgICAgIHwgTWludXNzIG46Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKG4rMSk6OnRsKVxuICAgICAgfCBNaW51czo6TWludXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzcyBhOjpNaW51c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhhK2IrMik6OnRsKVxuICAgICAgfCBOZXdsaW5lOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyAwOjp0bClcbiAgICAgIHwgTmV3bGluZXMgbjo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKG4rMSk6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBhOjpOZXdsaW5lcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2U6Ok9icmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzIDA6OnRsKVxuICAgICAgfCBPYnJhY2VzIG46Ok9icmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2U6Ok9icmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2VzIGE6Ok9icmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpczo6T3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MgMDo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpc3Mgbjo6T3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpczo6T3BhcmVudGhlc2lzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgYTo6T3BhcmVudGhlc2lzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MoYStiKzIpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzIDA6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgbjo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IE9icmFja2V0OjpPYnJhY2tldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXRzIGE6Ok9icmFja2V0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKGErYisyKTo6dGwpXG4gICAgICB8IFBlcmNlbnQ6OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzIDA6OnRsKVxuICAgICAgfCBQZXJjZW50cyBuOjpQZXJjZW50Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMobisxKTo6dGwpXG4gICAgICB8IFBlcmNlbnRzIGE6OlBlcmNlbnRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKGErYisyKTo6dGwpXG4gICAgICB8IFBsdXM6OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzIDA6OnRsKVxuICAgICAgfCBQbHVzcyBuOjpQbHVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MobisxKTo6dGwpXG4gICAgICB8IFBsdXNzIGE6OlBsdXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKGErYisyKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyAwOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIG46OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKG4rMSk6OnRsKVxuICAgICAgfCBRdWVzdGlvbjo6UXVlc3Rpb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9ucyBhOjpRdWVzdGlvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMgMDo6dGwpXG4gICAgICB8IFF1b3RlcyBuOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgUXVvdGU6OlF1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZXMgYTo6UXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU2VtaWNvbG9uOjpTZW1pY29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyAwOjp0bClcbiAgICAgIHwgU2VtaWNvbG9ucyBuOjpTZW1pY29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgU2VtaWNvbG9uOjpTZW1pY29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgU2VtaWNvbG9ucyBhOjpTZW1pY29sb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMgMDo6dGwpXG4gICAgICB8IFNsYXNocyBuOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgU2xhc2g6OlNsYXNocyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaHMgYTo6U2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMoYStiKzIpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzIDA6OnRsKVxuICAgICAgfCBTcGFjZXMgbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMobisxKTo6dGwpXG4gICAgICB8IFNwYWNlOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2VzIGE6OlNwYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IFN0YXI6OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzIDA6OnRsKVxuICAgICAgfCBTdGFycyBuOjpTdGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMobisxKTo6dGwpXG4gICAgICB8IFN0YXJzIGE6OlN0YXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKGErYisyKTo6dGwpXG4gICAgICB8IFRhYjo6VGFiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMgMDo6dGwpXG4gICAgICB8IFRhYnMgbjo6VGFiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMobisxKTo6dGwpXG4gICAgICB8IFRhYjo6VGFicyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMobisxKTo6dGwpXG4gICAgICB8IFRhYnMgYTo6VGFicyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzIDA6OnRsKVxuICAgICAgfCBUaWxkZXMgbjo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMobisxKTo6dGwpXG4gICAgICB8IFRpbGRlOjpUaWxkZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGVzIGE6OlRpbGRlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKGErYisyKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmU6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzIDA6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlcyBuOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMobisxKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIGE6OlVuZGVyc2NvcmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKGErYisyKTo6dGwpfCB4Ojp0bCAtPiBsb29wICh4OjphY2N1KSB0bFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2N1XG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuXG4gICgqIFJlbW92ZSBhbGwgW05MXSBhbmQgW0JyXSBhdCB0aGUgYmVnaW5uaW5nLiAqKVxuICBsZXQgcmVjIHJlbW92ZV9pbml0aWFsX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoTkwgfCBCcikgOjogdGwgLT4gcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgdGxcbiAgICB8IGwgLT4gbFxuXG5cbiAgKCoqIC0gcmVjb2duaXplcyBwYXJhZ3JhcGhzXG4gICAgICAtIGdsdWVzIGZvbGxvd2luZyBibG9ja3F1b3RlcyAgKilcbiAgbGV0IG1ha2VfcGFyYWdyYXBocyBtZCA9XG4gICAgbGV0IHJlYyBsb29wIGNwIGFjY3UgPSBmdW5jdGlvbiAoKiBjcCBtZWFucyBjdXJyZW50IHBhcmFncmFwaCAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgYWNjdSA9XG4gICAgICAgICAgbWF0Y2ggY3Agd2l0aFxuICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBhY2N1XG4gICAgICAgICAgfCAoTkx8QnIpOjpjcCAtPiBQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1XG4gICAgICAgICAgfCBjcCAtPiBQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1XG4gICAgICAgIGluXG4gICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgIHwgQmxvY2txdW90ZSBiMSA6OiBCbG9ja3F1b3RlIGIyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgY3AgYWNjdSAoQmxvY2txdW90ZShiMUBiMik6OiB0bClcbiAgICAgIHwgQmxvY2txdW90ZSBiIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gQmxvY2txdW90ZShsb29wIFtdIFtdIGIpIGluXG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgKFVscCBiKSA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IFVscChMaXN0Lm1hcCAoZnVuIGxpIC0+IGxvb3AgW10gW10gbGkpIGIpIGluXG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgKE9scCBiKSA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IE9scChMaXN0Lm1hcCAoZnVuIGxpIC0+IGxvb3AgW10gW10gbGkpIGIpIGluXG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgSHRtbF9jb21tZW50IF8gYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSAtPiBsb29wIFtdIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBbTkxdIHwgW0JyXSAtPiBsb29wIFtdIChlOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIChlOjpjcCkgYWNjdSB0bClcbiAgICAgIHwgKFJhd19ibG9jayBfIHwgSHRtbF9ibG9jayBfKSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6Y3BAYWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgKENvZGVfYmxvY2sgXyB8IEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgX1xuICAgICAgICB8IE9sIF8gfCBVbCBfKSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgVGV4dCBcIlxcblwiIDo6IF8gfCBQYXJhZ3JhcGggXyA6OiBfIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwiT21kX3BhcnNlci5tYWtlX3BhcmFncmFwaHNcIlxuICAgICAgfCAoTkx8QnIpIDo6IChOTHxCcikgOjogdGwgLT5cbiAgICAgICAgbGV0IHRsID0gcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgdGwgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggY3Agd2l0aFxuICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIFtdIChOTDo6Tkw6OmFjY3UpIHRsXG4gICAgICAgICAgfCBfIC0+IGxvb3AgW10gKFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBYKHgpIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4dGVuc2lvbiByZXR1cm5zIGEgYmxvY2sgYXMgZmlyc3QgZWxlbWVudCxcbiAgICAgICAgICAgdGhlbiBjb25zaWRlciB0aGUgZXh0ZW5zaW9uIGFzIGEgYmxvY2suIEhvd2V2ZXJcbiAgICAgICAgICAgZG9uJ3QgdGFrZSBpdHMgY29udGVudHMgYXMgaXQgaXMgeWV0LCB0aGUgY29udGVudHNcbiAgICAgICAgICAgb2YgdGhlIGV4dGVuc2lvbiBzaGFsbCBiZSBjb25zaWRlcmVkIGZpbmFsIGFzIGxhdGVcbiAgICAgICAgICAgYXMgcG9zc2libGUuICopXG4gICAgICAgIGJlZ2luIG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgICAgfCBTb21lKHQpIC0+XG4gICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgKCBIMSBfXG4gICAgICAgICAgICAgIHwgSDIgX1xuICAgICAgICAgICAgICB8IEgzIF9cbiAgICAgICAgICAgICAgfCBINCBfXG4gICAgICAgICAgICAgIHwgSDUgIF9cbiAgICAgICAgICAgICAgfCBINiAgX1xuICAgICAgICAgICAgICB8IFBhcmFncmFwaCAgX1xuICAgICAgICAgICAgICB8IFVsIF9cbiAgICAgICAgICAgICAgfCBPbCBfXG4gICAgICAgICAgICAgIHwgVWxwIF9cbiAgICAgICAgICAgICAgfCBPbHAgX1xuICAgICAgICAgICAgICB8IENvZGVfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEhyXG4gICAgICAgICAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICAgICAgICAgIHwgUmF3X2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBCbG9ja3F1b3RlIF9cbiAgICAgICAgICAgICAgKSA6OiBfXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT5cbiAgICAgICAgICAgICAgICAgbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgICAgICBlbmRcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICBpblxuICAgIGxldCByZW1vdmVfd2hpdGVfY3J1bWJzIGwgPVxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IFRleHQgXCIgXCIgOjogdGxcbiAgICAgICAgfCBOTDo6dGxcbiAgICAgICAgfCBCcjo6dGxcbiAgICAgICAgICAtPlxuICAgICAgICAgIGxvb3AgdGxcbiAgICAgICAgfCBsIC0+IGxcbiAgICAgIGluXG4gICAgICBMaXN0LnJldiAobG9vcCAoTGlzdC5yZXYgbCkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGNsZWFuX3BhcmFncmFwaHMgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgY2xlYW5fcGFyYWdyYXBoc1xcblwiO1xuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gW11cbiAgICAgIHwgUGFyYWdyYXBoW106OnRsIC0+IHRsXG4gICAgICB8IFBhcmFncmFwaChwKSA6OiB0bCAtPlxuICAgICAgICBQYXJhZ3JhcGgoY2xlYW5fcGFyYWdyYXBoc1xuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX2luaXRpYWxfbmV3bGluZXNcbiAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZV93aGl0ZV9jcnVtYnMobm9ybWFsaXNlX21kIHApKSkpXG4gICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDEgdiA6OiB0bCAtPiBIMShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMiB2IDo6IHRsIC0+IEgyKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgzIHYgOjogdGwgLT4gSDMoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDQgdiA6OiB0bCAtPiBINChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINSB2IDo6IHRsIC0+IEg1KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg2IHYgOjogdGwgLT4gSDYoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgRW1waCB2IDo6IHRsIC0+IEVtcGgoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCb2xkIHYgOjogdGwgLT4gQm9sZChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVsIHYgOjogdGwgLT4gVWwoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2wgdiA6OiB0bCAtPiBPbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVbHAgdiA6OiB0bCAtPiBVbHAoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IE9scCB2IDo6IHRsIC0+IE9scChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgQmxvY2txdW90ZSB2IDo6IHRsIC0+IEJsb2NrcXVvdGUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVcmwoaHJlZix2LHRpdGxlKSA6OiB0bCAtPiBVcmwoaHJlZiwoY2xlYW5fcGFyYWdyYXBocyB2KSx0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBUZXh0IF9cbiAgICAgIHwgQ29kZSBfXG4gICAgICB8IENvZGVfYmxvY2sgX1xuICAgICAgfCBCclxuICAgICAgfCBIclxuICAgICAgfCBOTFxuICAgICAgfCBSZWYgX1xuICAgICAgfCBJbWdfcmVmIF9cbiAgICAgIHwgUmF3IF9cbiAgICAgIHwgUmF3X2Jsb2NrIF9cbiAgICAgIHwgSHRtbCBfXG4gICAgICB8IEh0bWxfYmxvY2sgX1xuICAgICAgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgfCBJbWcgX1xuICAgICAgfCBYIF8gYXMgdiA6OiB0bCAtPiB2IDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICBpblxuICAgIGxldCByID0gY2xlYW5fcGFyYWdyYXBocyhsb29wIFtdIFtdIG1kKVxuICAgIGluXG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgY2xlYW5fcGFyYWdyYXBocyAlUyAtLT4gJVNcXG4lIVwiXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCBtZClcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIHIpO1xuICAgIHJcblxuXG4gICgqKiBbYXNzZXJ0X3dlbGxfZm9ybWVkXSBpcyBhIGRldmVsb3BlcidzIGZ1bmN0aW9uIHRoYXQgaGVscHMgdG9cbiAgICAgIHRyYWNrIGJhZGx5IGNvbnN0cnVjdGVkIHRva2VuIGxpc3RzLiAgVGhpcyBmdW5jdGlvbiBoYXMgYW5cbiAgICAgIGVmZmVjdCBvbmx5IGlmIFt0cmFja2ZpeF0gaXMgW3RydWVdLiAgKilcbiAgbGV0IGFzc2VydF93ZWxsX2Zvcm1lZCAobDp0b2sgbGlzdCkgOiB1bml0ID1cbiAgICBpZiB0cmFja2ZpeCB0aGVuXG4gICAgICBsZXQgcmVjIGVxdWl2IGwxIGwyID0gbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICAgICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgICAgICB8IFRhZyBfOjp0bDEsIFRhZyBfOjp0bDItPiBlcXVpdiB0bDEgdGwyXG4gICAgICAgIHwgZTE6OnRsMSwgZTI6OnRsMiAtPiBlMSA9IGUyICYmIGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgYXNzZXJ0KGVxdWl2IChmaXggbCkgbCk7XG4gICAgICAoKVxuXG4gICgqKiBHZW5lcmF0ZSBmYWxsYmFjayBmb3IgcmVmZXJlbmNlcy4gKilcbiAgbGV0IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgbCA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5leHRyYWN0X2ZhbGxiYWNrXFxuJSFcIjtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICAgIHwgZTo6dGwgYXMgciAtPlxuICAgICAgICBpZiByID09IHJlbWFpbnMgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGUsIHJlbWFpbnMgd2l0aFxuICAgICAgICAgIHwgQ2JyYWNrZXRzIDAsIENicmFja2V0OjpyIHdoZW4gdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgQ2JyYWNrZXRzIG4sIENicmFja2V0cyBtOjpyIHdoZW4gbSArIDEgPSBuICYmIHRsID0gciAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBXb3JkIFwiXVwiIDo6IGFjY3UgaW5cbiAgICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBsZXQgYSA9IGxvb3AgW10gbCBpblxuICAgIG9iamVjdFxuICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IEwuc3RyaW5nX29mX3Rva2VucyBhXG4gICAgICBtZXRob2QgdG9fdCA9IFtUZXh0KEwuc3RyaW5nX29mX3Rva2VucyBhKV1cbiAgICBlbmRcblxuXG4gIGxldCB1bmluZGVudF9yZXYgbiBsZXhlbWVzID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBDQUxMOiBPbWRfcGFyc2VyLnVuaW5kZW50X3JldlxcbiUhXCI7XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgY2wgPSBmdW5jdGlvblxuICAgICAgfCBOZXdsaW5lcyB4OjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lcyB5Ojp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKHgreSsyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoMSt4KTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoMSt4KTo6dGwpXG4gICAgICB8IE5ld2xpbmU6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoMCk6OnRsKVxuXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIDAgYXMgbmwpOjooU3BhY2V8U3BhY2VzIF8gYXMgcyk6OihcbiAgICAgICAgICAoTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgfCAoKFN0YXJ8UGx1c3xNaW51cyk6OihTcGFjZXxTcGFjZXMgXyk6Ol8pXG4gICAgICAgICAgYXMgdGwpIGFzIGwgLT5cbiAgICAgICAgaWYgbiA9IEwubGVuZ3RoIHMgdGhlblxuICAgICAgICAgIGxvb3AgKG5sOjpjbEBhY2N1KSBbXSB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIDAgYXMgbmwpOjooU3BhY2V8U3BhY2VzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgIGxldCB4ID0gTC5sZW5ndGggcyAtIG4gaW5cbiAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpXG4gICAgICAgICAgKGlmIHggPiAwIHRoZW4gW0wubWFrZV9zcGFjZSB4XSBlbHNlIFtdKVxuICAgICAgICAgIHRsXG4gICAgICB8IE5ld2xpbmVzKF8pOjpfIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IE5ld2xpbmU6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IChlOjpjbCkgdGxcbiAgICAgIHwgW10gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICBpblxuICAgIG1hdGNoIGxvb3AgW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgfCBbXSwgcmlnaHQgLT4gW10sIHJpZ2h0XG4gICAgfCBsLCByaWdodCAtPlxuICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgICBsLCByaWdodFxuXG4gIGxldCB1bmluZGVudCBuIGxleGVtZXMgPVxuICAgIGxldCBmc3QsIHNuZCA9IHVuaW5kZW50X3JldiBuIGxleGVtZXMgaW5cbiAgICBMaXN0LnJldiBmc3QsIHNuZFxuXG4gIGxldCByZWMgaXNfYmxhbmsgPSBmdW5jdGlvblxuICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lIHwgTmV3bGluZXMgXykgOjogdGwgLT5cbiAgICAgIGlzX2JsYW5rIHRsXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IHNlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXJzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSxTdGFycyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6U3Rhcjo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihTdGFycyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihTdGFyfFN0YXJzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChTdGFyfFN0YXJzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuICBsZXQgc21fdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG5cbiAgbGV0IGdoX3VlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OihXb3JkIF98TnVtYmVyIF8gYXMgdyk6OiB0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt3O3NdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgdWVtcGhfb3JfYm9sZCBuIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBpZiBnaF91ZW1waF9vcl9ib2xkX3N0eWxlIHRoZW5cbiAgICAgIGdoX3VlbXBoX29yX2JvbGQgbiBsXG4gICAgZWxzZVxuICAgICAgc21fdWVtcGhfb3JfYm9sZCBuIGxcblxuICBsZXQgZWF0X2JsYW5rID1cbiAgICBlYXQgKGZ1bmN0aW9uIHxTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8gLT4gdHJ1ZXwgXyAtPiBmYWxzZSlcblxuXG4gICgqIHVzZWQgYnkgdGFnX19tYXliZV9oMSBhbmQgdGFnX19tYXliZV9oMiAqKVxuICBsZXQgc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCAobDpsKSA6IChPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3QgKiBsKSBvcHRpb24gPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIHIgbCA9XG4gICAgICAoKiBJZiB0aGVyZSdzIGEgYmFsYW5jZWQgKGNvbXBsZXRlKSBiYWNrcXVvdGUtc3RhcnRlZCBjb2RlIGJsb2NrXG4gICAgICAgICB0aGVuIGl0IHNob3VsZCBiZSBcImlnbm9yZWRcIiwgZWxzZSBpdCBtZWFucyB0aGUgbGluZSB0aGF0XG4gICAgICAgICBmb2xsb3dzIGlzIHBhcnQgb2YgYSBjb2RlIGJsb2NrLCBzbyBpdCdzIG5vdCBkZWZpbmluZyBhXG4gICAgICAgICBzZXRleHQtc3R5bGUgdGl0bGUuICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBkZXRlY3RfYmFsYW5jZWRfYnFzIG49JWQgcj0lUyBsPSVTXFxuJSFcIlxuICAgICAgICAgIG4gKEwuc3RyaW5nX29mX3Rva2VucyByKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIDA6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyB4Ojp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZSBhcyBiKTo6dGwgd2hlbiBuID0gMSAtPlxuICAgICAgICBTb21lKExpc3QucmV2IChiOjpyKSwgdGwpXG4gICAgICB8IChCYWNrcXVvdGVzIHggYXMgYik6OnRsIHdoZW4gbiA9IHgrMiAtPlxuICAgICAgICBTb21lKExpc3QucmV2IChiOjpyKSwgdGwpXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoZTo6cikgdGxcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgaWYgciA9IFtdIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTb21lKExpc3QucmV2IHIsIFtdKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIDA6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzIDEgW10gdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShibCx0bCkgLT4gbG9vcCAoYmxAcikgdGxcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICAgIHwgQmFja3F1b3Rlcyh4KTo6dGwgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZGV0ZWN0X2JhbGFuY2VkX2JxcyAoeCsyKSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBOZXdsaW5lOjooRXF1YWx8RXF1YWxzIF98TWludXN8TWludXNzIF8pOjp0bCAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgdGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5zZXRleHRfdGl0bGUgaXMgd3JvbmdseSB1c2VkIVxcbiUhXCI7XG4gICAgICAgIE5vbmVcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6cikgdGxcbiAgICBpblxuICAgIGlmIG1hdGNoIGwgd2l0aFxuICAgICAgfCBMZXNzdGhhbjo6V29yZCBfOjpfIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1haW5fbG9vcCBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IChIdG1sX2Jsb2NrIF8gfCBDb2RlX2Jsb2NrIF8gfCBSYXdfYmxvY2sgXyk6Ol8gLT5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCByZXN1bHQgPSBsb29wIFtdIGwgaW5cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIHNldGV4dF90aXRsZSBsPSVTIHJlc3VsdD0lUywlU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpXG4gICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSAoeCx0bCkgLT4gTC5zdHJpbmdfb2ZfdG9rZW5zIHgpXG4gICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSAoeCx0bCkgLT4gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsKTtcbiAgICAgIHJlc3VsdFxuXG4gIGxldCB0YWdfX21heWJlX2gxIChtYWluX2xvb3A6bWFpbl9sb29wKSA9XG4gICAgVGFnKFwidGFnX19tYXliZV9oMVwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9XG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSh0aXRsZSwgdGwpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBIMShtYWluX2xvb3AgW10gW10gdGl0bGUpIGluXG4gICAgICAgICAgICAgICAgICBTb21lKCh0aXRsZTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogT21kX3BhcnNlci50YWdfX21heWJlX2gxIGlzIHdyb25nbHkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIChwPSVTKSFcXG5cIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBwKTtcbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgIGVuZFxuICAgICAgKVxuXG4gIGxldCB0YWdfX21heWJlX2gyIChtYWluX2xvb3A6bWFpbl9sb29wKSA9XG4gICAgVGFnKFwidGFnX19tYXliZV9oMlwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9XG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSh0aXRsZSwgdGwpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBIMihtYWluX2xvb3AgW10gW10gdGl0bGUpIGluXG4gICAgICAgICAgICAgICAgICBTb21lKCh0aXRsZTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogT21kX3BhcnNlci50YWdfX21heWJlX2gyIGlzIHdyb25nbHkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIChwPSVTKSFcXG5cIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBwKTtcbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgIGVuZFxuICAgICAgKVxuXG4gIGxldCB0YWdfX21kIG1kID0gKCogW21kXSBzaG91bGQgYmUgaW4gcmV2ZXJzZSAqKVxuICAgIFRhZyhcInRhZ19fbWRcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPSBTb21lKG1kQHIsIFtdLCBsKVxuICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgIGVuZFxuICAgICAgIClcblxuICAoKiBMZXQncyB0YWcgdGhlIGxpbmVzIHRoYXQgKm1pZ2h0KiBiZSB0aXRsZXMgdXNpbmcgc2V0ZXh0LXN0eWxlLlxuICAgICBcIm1pZ2h0XCIgYmVjYXVzZSBpZiB0aGV5IGFyZSwgZm9yIGluc3RhbmNlLCBpbiBhIGNvZGUgc2VjdGlvbixcbiAgICAgdGhlbiB0aGV5IGFyZSBub3QgdGl0bGVzIGF0IGFsbC4gKilcbiAgbGV0IHRhZ19zZXRleHQgbWFpbl9sb29wIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBwbCByZXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF9dIC0+XG4gICAgICAgIHBsQHJlc1xuICAgICAgfCAoTmV3bGluZSBhcyBlMSk6OihFcXVhbHxFcXVhbHMgXyBhcyBlMik6OnRsIC0+ICgqIG1pZ2h0IGJlIGEgSDEuICopXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdF9yZXZcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xFcXVhbHxFcXVhbHMgXyk6OnRsIC0+IENvbnRpbnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IFNwbGl0KFtdLFtdKVxuICAgICAgICAgICAgICAgICAgfCBfOjpfIGFzIGwgLT4gU3BsaXQoW10sIGwpKVxuICAgICAgICAgICAgICB0bFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUocmxlZnQsICgoW118KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8pIGFzIHJpZ2h0KSkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHRhZ19fbWF5YmVfaDEgbWFpbl9sb29wOjpyZXMpKSByaWdodFxuICAgICAgICAgIHwgU29tZShybGVmdCwgcmlnaHQpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEByZXMpKSByaWdodFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAoZTI6OmUxOjpwbEByZXMpIFtdXG4gICAgICAgIGVuZFxuICAgICAgfCAoTmV3bGluZSBhcyBlMSk6OihNaW51c3xNaW51c3MgXyBhcyBlMik6OnRsIC0+ICgqIG1pZ2h0IGJlIGEgSDIuICopXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdF9yZXZcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+IENvbnRpbnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IFNwbGl0KFtdLFtdKVxuICAgICAgICAgICAgICAgICAgfCBfOjpfIGFzIGwgLT4gU3BsaXQoW10sIGwpKVxuICAgICAgICAgICAgICB0bFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUocmxlZnQsICgoW118KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8pIGFzIHJpZ2h0KSkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHRhZ19fbWF5YmVfaDIgbWFpbl9sb29wOjpyZXMpKSByaWdodFxuICAgICAgICAgIHwgU29tZShybGVmdCwgcmlnaHQpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEByZXMpKSByaWdodFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAoZTI6OmUxOjpwbEByZXMpIFtdXG4gICAgICAgIGVuZFxuICAgICAgfCAoTmV3bGluZSB8IE5ld2xpbmVzIF8gYXMgZTEpOjp0bCAtPlxuICAgICAgICBsb29wIFtdIChlMTo6cGxAcmVzKSB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpwbCkgcmVzIHRsXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBbXSBbXSBsZXhlbWVzKVxuXG5cbiAgbGV0IGhyX20gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIG4gPSBmdW5jdGlvblxuICAgICAgfCAoKE5ld2xpbmVzIF98TmV3bGluZSk6OnRsKSB8IChbXSBhcyB0bCkgLT5cbiAgICAgICAgaWYgbiA+PSAzIHRoZW4gU29tZSB0bCBlbHNlIE5vbmVcbiAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgbG9vcCBuIHRsXG4gICAgICB8IE1pbnVzOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IE1pbnVzcyB4Ojp0bCAtPlxuICAgICAgICBsb29wICh4KzIrbikgdGxcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBOb25lXG4gICAgaW4gbG9vcCAwIGxcblxuICBsZXQgaHJfcyBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgU3Rhcjo6dGwgLT5cbiAgICAgICAgbG9vcCAobisxKSB0bFxuICAgICAgfCBTdGFycyB4Ojp0bCAtPlxuICAgICAgICBsb29wICh4KzIrbikgdGxcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBOb25lXG4gICAgaW4gbG9vcCAwIGxcblxuICBsZXQgaHIgbCA9XG4gICAgbWF0Y2ggaHJfbSBsIHdpdGhcbiAgICB8IE5vbmUgLT4gaHJfcyBsXG4gICAgfCBTb21lIF8gYXMgdGwgLT4gdGxcblxuICAoKiogW2Jjb2RlXSBwYXJzZXMgY29kZSB0aGF0J3MgZGVsaW1pdGVkIGJ5IGJhY2txdW90ZShzKSAqKVxuICBsZXQgYmNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIHAgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IGUsIHRsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgLT4gZSwgdGxcbiAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk9tZF9wYXJzZXIuYmNvZGUgaXMgd3JvbmdseSBjYWxsZWRcIlxuICAgIGluXG4gICAgbGV0IHJlYyBjb2RlX2Jsb2NrIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgZSA9IEJhY2txdW90ZSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKEJhY2txdW90ZTo6YWNjdSkgdGxcbiAgICAgIHwgKEJhY2txdW90ZXMgbiBhcyBiKTo6dGwgLT5cbiAgICAgICAgaWYgZSA9IGIgdGhlblxuICAgICAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YWNjdSAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX2Jsb2NrIChiOjphY2N1KSB0bFxuICAgICAgfCBUYWcoXywgXyk6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgYWNjdSB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBjb2RlX2Jsb2NrIChlOjphY2N1KSB0bFxuICAgIGluXG4gICAgbWF0Y2ggY29kZV9ibG9jayBbXSB0bCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUoY2IsIGwpIC0+XG4gICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgXykgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGNiXG4gICAgICAmJiAobWF0Y2ggcCB3aXRoIFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgKG1hdGNoIGUgd2l0aCBCYWNrcXVvdGVzIG4gd2hlbiBuID4gMCAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgIHRoZW5cbiAgICAgICAgbWF0Y2ggY2Igd2l0aFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIDAgOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zKE5ld2xpbmU6OnRsKSBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lcyBuIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmVzIG4gOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyAoTmV3bGluZXMobi0xKTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0bCBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyBjYiBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2xlYW5fYmNvZGUgcyA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wMSBpID1cbiAgICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDEoaSsxKVxuICAgICAgICAgICAgICB8IF8gLT4gaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wMiBpID1cbiAgICAgICAgICAgIGlmIGkgPSAtMSB0aGVuIFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICAgIHwgJyAnIC0+IGxvb3AyKGktMSlcbiAgICAgICAgICAgICAgfCBfIC0+IGkrMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggbG9vcDEgMCwgbG9vcDIgKFN0cmluZy5sZW5ndGggcyAtIDEpIHdpdGhcbiAgICAgICAgICB8IDAsIG4gd2hlbiBuID0gU3RyaW5nLmxlbmd0aCBzIC0gMSAtPiBzXG4gICAgICAgICAgfCBpLCBuIC0+IFN0cmluZy5zdWIgcyBpIChuLWkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgY2xlYW5fYmNvZGUgJVMgPT4gJVNcXG4lIVwiIGNvZGUgKGNsZWFuX2Jjb2RlIGNvZGUpO1xuICAgICAgICBTb21lKENvZGUoZGVmYXVsdF9sYW5nLCBjbGVhbl9iY29kZSBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcblxuXG4gIGV4Y2VwdGlvbiBOTF9leGNlcHRpb25cbiAgZXhjZXB0aW9uIFByZW1hdHVyZV9lbmRpbmdcblxuICAoKiAhIURPIE5PVCBERUxFVEUgVEhJUyEhXG4gICAgIFRoZSBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIHRoZSBnZW5lcmF0ZWQgcGFydCB0aGF0IGZvbGxvd3MgcmlnaHQgYWZ0ZXIuXG4gICAgIExpc3QuaXRlciAoZnVuIChhLGIsYykgLT5cbiAgICAgcHJpbnRfZW5kbGluZSAoXCJsZXQgcmVhZF91bnRpbF9cIl5hXlwiID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeYl5cIiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeYl5cInMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoXCJeYl5cIjo6YWNjdSkgbiAoXCJeYl5cIjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXCJcbiAgICAgIF4oaWYgYzw+XCJcIiB0aGVuIFwiXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeY15cIiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeY15cInMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoXCJeY15cIjo6YWNjdSkgbiAoXCJeY15cIjo6dGwpXG4gICAgICB8IFwiXmNeXCIgYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBcIl5jXlwicyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICBcIiBlbHNlIFwiXCIpXlxuICAgICBcIiAgICB8IFwiXmJeXCIgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IFwiXmJeXCJzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFwiXmJeXCI6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSAobi0xKSAoXCJeYl5cIjo6dGwpXG4gICAgICB8IFwiXmJeXCJzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFwiXmJeXCJzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBcIl5iXlwiOjphY2N1IC0+IFwiXmJeXCJzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBcIl5iXlwicyB4OjphY2N1IC0+IFwiXmJeXCJzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gXCJeYl5cIjo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoXCJeYl5cInMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYlxcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcXFwiT21kX3BhcnNlci5yZWFkX3VudGlsX1wiXmFeXCIgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXFxcbiUhXFxcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cIikpXG5cbiAgICAgWyBcImd0XCIsIFwiR3JlYXRlcnRoYW5cIiwgXCJMZXNzdGhhblwiO1xuICAgICBcImx0XCIsIFwiTGVzc3RoYW5cIiwgXCJcIjtcbiAgICAgXCJjcGFyZW50aFwiLCBcIkNwYXJlbnRoZXNpc1wiLCBcIk9wYXJlbnRoZXNpc1wiO1xuICAgICBcIm9wYXJlbnRoXCIsIFwiT3BhcmVudGhlc2lzXCIsIFwiXCI7XG4gICAgIFwiZHFcIiwgXCJEb3VibGVxdW90ZVwiLCBcIlwiO1xuICAgICBcInFcIiwgXCJRdW90ZVwiLCBcIlwiO1xuICAgICBcIm9icmFja2V0XCIsIFwiT2JyYWNrZXRcIiwgXCJcIjtcbiAgICAgXCJjYnJhY2tldFwiLCBcIkNicmFja2V0XCIsIFwiT2JyYWNrZXRcIjtcbiAgICAgXCJzcGFjZVwiLCBcIlNwYWNlXCIsIFwiXCI7XG4gICAgIF1cbiAgKilcblxuICAoKiBiZWdpbiBnZW5lcmF0ZWQgcGFydCAqKVxuXG5sZXQgcmVhZF91bnRpbF9ndCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoR3JlYXRlcnRoYW46OmFjY3UpIG4gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IExlc3N0aGFuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgTGVzc3RoYW5zIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IEdyZWF0ZXJ0aGFuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW46OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgKG4tMSkgKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIEdyZWF0ZXJ0aGFucyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OmFjY3UgLT4gR3JlYXRlcnRoYW5zKDApOjphY2N1XG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgeDo6YWNjdSAtPiBHcmVhdGVydGhhbnMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBHcmVhdGVydGhhbjo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9ndCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2x0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgbiAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IExlc3N0aGFuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW46OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgKG4tMSkgKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIExlc3N0aGFucyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgTGVzc3RoYW46OmFjY3UgLT4gTGVzc3RoYW5zKDApOjphY2N1XG4gICAgICAgICAgICAgfCBMZXNzdGhhbnMgeDo6YWNjdSAtPiBMZXNzdGhhbnMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBMZXNzdGhhbjo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoTGVzc3RoYW5zKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9sdCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2NwYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgbiAoQ3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSBuIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBPcGFyZW50aGVzaXNzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IENwYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDcGFyZW50aGVzaXM6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChDcGFyZW50aGVzaXM6OmFjY3UpIChuLTEpIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpc3MoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpczo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBDcGFyZW50aGVzaXNzIHg6OmFjY3UgLT4gQ3BhcmVudGhlc2lzcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IENwYXJlbnRoZXNpczo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoQ3BhcmVudGhlc2lzcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9vcGFyZW50aCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBPcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9wYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBPcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gT3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2RxID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGUgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKERvdWJsZXF1b3RlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChEb3VibGVxdW90ZTo6YWNjdSkgbiAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IERvdWJsZXF1b3RlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGU6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChEb3VibGVxdW90ZTo6YWNjdSkgKG4tMSkgKERvdWJsZXF1b3RlOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIERvdWJsZXF1b3Rlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OmFjY3UgLT4gRG91YmxlcXVvdGVzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgeDo6YWNjdSAtPiBEb3VibGVxdW90ZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBEb3VibGVxdW90ZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoRG91YmxlcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9kcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX3EgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoUXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFF1b3RlOjphY2N1KSBuIChRdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgUXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IFF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFF1b3RlOjphY2N1KSAobi0xKSAoUXVvdGU6OnRsKVxuICAgICAgfCBRdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgUXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBRdW90ZTo6YWNjdSAtPiBRdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFF1b3RlcyB4OjphY2N1IC0+IFF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChRdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9xICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29icmFja2V0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IE9icmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBPYnJhY2tldHMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXQ6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgKG4tMSkgKE9icmFja2V0Ojp0bClcbiAgICAgIHwgT2JyYWNrZXRzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9icmFja2V0cyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgT2JyYWNrZXQ6OmFjY3UgLT4gT2JyYWNrZXRzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBPYnJhY2tldHMgeDo6YWNjdSAtPiBPYnJhY2tldHMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPYnJhY2tldDo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoT2JyYWNrZXRzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vYnJhY2tldCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2NicmFja2V0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENicmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChDYnJhY2tldDo6YWNjdSkgbiAoQ2JyYWNrZXQ6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIG4gKE9icmFja2V0Ojp0bClcbiAgICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBPYnJhY2tldHMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IENicmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSAobi0xKSAoQ2JyYWNrZXQ6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBDYnJhY2tldDo6YWNjdSAtPiBDYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENicmFja2V0cyB4OjphY2N1IC0+IENicmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IENicmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NicmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfc3BhY2UgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoU3BhY2VzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFNwYWNlOjphY2N1KSBuIChTcGFjZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgU3BhY2UgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IFNwYWNlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFNwYWNlOjphY2N1KSAobi0xKSAoU3BhY2U6OnRsKVxuICAgICAgfCBTcGFjZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgU3BhY2VzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBTcGFjZTo6YWNjdSAtPiBTcGFjZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFNwYWNlcyB4OjphY2N1IC0+IFNwYWNlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFNwYWNlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChTcGFjZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3NwYWNlICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcbiAgKCogL2VuZCBnZW5lcmF0ZWQgcGFydCAqKVxuXG4gIGxldCByZWFkX3VudGlsX25ld2xpbmUgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCAoKEJhY2tzbGFzaCBhcyBhKSkgOjogKChOZXdsaW5lIGFzIGIpKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiIDo6IGEgOjogYWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lIDo6IEJhY2tzbGFzaCA6OiBhY2N1KSBuIChOZXdsaW5lIDo6IHRsKVxuICAgICAgfCAoKEJhY2tzbGFzaHMgMCBhcyBlKSkgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8ICgoQmFja3NsYXNocyB4IGFzIGUpKSA6OiB0bCAtPlxuICAgICAgICBpZiAoeCBtb2QgMikgPSAwXG4gICAgICAgIHRoZW4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICAgIGVsc2UgbG9vcCAoKEJhY2tzbGFzaHMgKHggLSAxKSkgOjogYWNjdSkgbiAoQmFja3NsYXNoIDo6IHRsKVxuICAgICAgfCAoKE5ld2xpbmUgYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW4gKChMaXN0LnJldiBhY2N1KSwgdGwpIGVsc2UgbG9vcCAoZSA6OiBhY2N1KSAobiAtIDEpIHRsXG4gICAgICB8IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDBcbiAgICAgICAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCAoTmV3bGluZSA6OiB0bCkpXG4gICAgICAgIGVsc2UgbG9vcCAoTmV3bGluZSA6OiBhY2N1KSAobiAtIDEpIChOZXdsaW5lIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lcyBuIDo6IHRsIC0+ICgoTGlzdC5yZXYgYWNjdSksICgoTmV3bGluZXMgKG4gLSAxKSkgOjogdGwpKVxuICAgICAgfCBlIDo6IHRsIC0+IGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgaW4gbG9vcCBbXSAwIGxcblxuICAoKiBIMSwgSDIsIEgzLCAuLi4gKilcbiAgbGV0IHJlYWRfdGl0bGUgKG1haW5fbG9vcDptYWluX2xvb3ApIG4gciBfcHJldmlvdXMgbGV4ZW1lcyA9XG4gICAgbGV0IHRpdGxlLCByZXN0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2g6OnRsIC0+XG4gICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KSB0bFxuICAgICAgICB8IEJhY2tzbGFzaHMobik6Okhhc2g6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2hzKG4tMSk6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNoOjpIYXNocyhoKTo6dGwgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaDo6YWNjdSlcbiAgICAgICAgICAgICAgICAoKGlmIGggPSAwIHRoZW4gSGFzaCBlbHNlIEhhc2hzKGgtMSkpOjp0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNocyhoKTo6QmFja3NsYXNoOjphY2N1KSB0bFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IEJhY2tzbGFzaHMobik6Okhhc2hzKGgpOjp0bCB3aGVuIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgICAgICAgfCBbXVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxOZXdsaW5lcyBfKTo6X1xuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2hzKG4pOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2hzKG4pOjphY2N1KSB0bFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IChIYXNofEhhc2hzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgfCAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChbXSBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChIYXNofEhhc2hzIF8pIDo6IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoW10gYXMgbCkgLT5cbiAgICAgICAgICBtYWluX2xvb3AgW10gW10gKExpc3QucmV2IGFjY3UpLCBsXG4gICAgICAgIHwgW0hhc2h8SGFzaHMgX11cbiAgICAgICAgfCBbKFNwYWNlfFNwYWNlcyBfKTsgSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyAoSGFzaHxIYXNocyBfKTsgKFNwYWNlfFNwYWNlcyBfKV0gLT5cbiAgICAgICAgICBtYWluX2xvb3AgW10gW10gKExpc3QucmV2IGFjY3UpLCBbXVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgbG9vcCAoeDo6YWNjdSkgdGxcbiAgICAgIGluXG4gICAgICBsb29wIFtdIGxleGVtZXNcbiAgICBpblxuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgMSAtPiBTb21lKEgxIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDIgLT4gU29tZShIMiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCAzIC0+IFNvbWUoSDMgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNCAtPiBTb21lKEg0IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDUgLT4gU29tZShINSB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA2IC0+IFNvbWUoSDYgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcCBsID1cbiAgICBtYXRjaCBleHRlbnNpb25zIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IF8gLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKGZ1biBmIC0+IGYjcGFyc2VyX2V4dGVuc2lvbiByIHAgbClcbiAgICAgICAgICB8IFNvbWUobnIsIG5wLCBubCkgYXMgZSAtPlxuICAgICAgICAgICAgKGZ1biBmIC0+IG1hdGNoIGYjcGFyc2VyX2V4dGVuc2lvbiBuciBucCBubCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gZVxuICAgICAgICAgICAgICAgfCBTb21lIF8gYXMgayAtPiBrKVxuICAgICAgICApXG4gICAgICAgIE5vbmVcbiAgICAgICAgZXh0ZW5zaW9uc1xuXG4gICgqIGJsb2NrcXVvdGVzICopXG4gIGxldCBlbWFpbHN0eWxlX3F1b3RpbmcgKG1haW5fbG9vcDptYWluX2xvb3ApIHIgX3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIGJsb2NrIGNsID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjooTmV3bGluZTo6XyBhcyB0bCkgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtTcGFjZV0gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtTcGFjZXMobi0xKV0gdGxcblxuICAgICAgKCogbXVsdGkgcGFyYWdyYXBoIGJsb2NrcXVvdGVzIHdpdGggZW1wdHkgbGluZXMgKilcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lcyAwOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lcyAwOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lcyAwOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICB8IChOZXdsaW5lcyBfOjpfIGFzIGwpIHwgKFtdIGFzIGwpIC0+IGZpeChMaXN0LnJldihjbEBibG9jaykpLCBsXG4gICAgICB8IGU6OnRsIC0+IGxvb3AgYmxvY2sgKGU6OmNsKSB0bFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpibG9jaywgdGwgLT5cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nICVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgYmxvY2spO1xuICAgICAgU29tZSgoQmxvY2txdW90ZShtYWluX2xvb3AgW10gW10gYmxvY2spOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICB8IF8gLT5cbiAgICAgIE5vbmVcblxuXG4gICgqIG1heWJlIGEgcmVmZXJlbmNlICopXG4gIGxldCBtYXliZV9yZWZlcmVuY2UgKG1haW5fbG9vcDptYWluX2xvb3ApIHJjIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBrbm93IGl0J3Mgbm90IGEgbGluayBhbHRob3VnaFxuICAgICAgIGl0IHN0YXJ0ZWQgd2l0aCBhICdbJyAqKVxuICAgICgqIFNvIGl0IGNvdWxkIGJlIGEgcmVmZXJlbmNlIG9yIGEgbGluayBkZWZpbml0aW9uLiAqKVxuICAgIGxldCByZWMgbWF5YmVfcmVmIGwgPVxuICAgICAgbGV0IHRleHQsIHJlbWFpbnMgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGlmICh0cnkgaWdub3JlKHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgdGV4dCk7IHRydWVcbiAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZzsgKCogPC0tIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBsZXQgYmxhbmssIHJlbWFpbnMgPSByZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHJlbWFpbnMgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIHVud2FudGVkIGNoYXJhY3RlcnMgYmV0d2VlbiBDQiBhbmQgT0IuICopXG4gICAgICBpZiBlYXQgKGxldCBmbGFnID0gcmVmIHRydWUgaW5cbiAgICAgICAgICAgICAgZnVuY3Rpb24gKCogYWxsb3cgb25seSBhIHNwYWNlLCBtdWx0aXBsZSBzcGFjZXMsIG9yIGEgbmV3bGluZSAqKVxuICAgICAgICAgICAgICB8IE5ld2xpbmUgLT4gIWZsYWcgJiYgKGZsYWcgOj0gZmFsc2U7IHRydWUpXG4gICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSBibGFuayA8PiBbXSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmcgKCogPC0tIG5vdCBhIHJlZ3VsYXIgcmVmZXJlbmNlICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyB3aXRoXG4gICAgICAgIHwgW10sIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBpZCwgaWQsIGZhbGxiYWNrKSk6OnIpLCBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgICAgICB8IGlkLCByZW1haW5zIC0+XG4gICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICAgICAgU29tZSgoKFJlZihyYywgTC5zdHJpbmdfb2ZfdG9rZW5zIGlkLFxuICAgICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQsIGZhbGxiYWNrKSk6OnIpLFxuICAgICAgICAgICAgICAgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICBpblxuICAgIGxldCByZWMgbWF5YmVfbm9ucmVndWxhcl9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQgaW4gKCogaW1wbGljaXQgYW5jaG9yICopXG4gICAgICBTb21lKCgoUmVmKHJjLCBpZCwgaWQsIGZhbGxiYWNrKSk6OnIpLCBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9kZWYgbCA9XG4gICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgd2l0aFxuICAgICAgfCBfLCBbXSAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICB8IGlkLCAoQ29sb246OihTcGFjZXxTcGFjZXMgXyk6OnJlbWFpbnMpXG4gICAgICB8IGlkLCAoQ29sb246OnJlbWFpbnMpIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyk6OiBfIGFzIGwgLT4gU3BsaXQoW10sIGwpXG4gICAgICAgICAgICAgICAgICB8IGU6OnRsIC0+IENvbnRpbnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IFNwbGl0KFtdLFtdKSlcbiAgICAgICAgICAgICAgcmVtYWluc1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgfCBTb21lKFtdLCBfKSAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgfCBTb21lKHVybCwgcmVtYWlucykgLT5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVtYWlucyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgZWF0XG4gICAgICAgICAgICAgICAgICAoZnVuY3Rpb24gfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgcmVtYWluc1xuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IFF1b3RlcygwKTo6dGwgLT4gW10sIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IHJlYWRfdW50aWxfcSB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpczo6dGwtPiByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgbCAtPiBbXSwgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHVybCA+IDIgJiYgdXJsLlswXSA9ICc8J1xuICAgICAgICAgICAgICAgICAmJiB1cmwuW1N0cmluZy5sZW5ndGggdXJsIC0gMV0gPSAnPicgdGhlblxuICAgICAgICAgICAgICAgIFN0cmluZy5zdWIgdXJsIDEgKFN0cmluZy5sZW5ndGggdXJsIC0gMilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJjI2FkZF9yZWYgKEwuc3RyaW5nX29mX3Rva2VucyBpZCkgKEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSkgdXJsO1xuICAgICAgICAgICAgU29tZShyLCBbTmV3bGluZV0sIHJlbWFpbnMpXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpblxuICAgIHRyeVxuICAgICAgbWF5YmVfcmVmIGxcbiAgICB3aXRoIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgdHJ5XG4gICAgICAgIG1heWJlX2RlZiBsXG4gICAgICB3aXRoXG4gICAgICB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbWF5YmVfbm9ucmVndWxhcl9yZWYgbFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgIE5vbmVcblxuXG4gICgqKiBtYXliZSBhIGxpbmsgKilcbiAgbGV0IG1heWJlX2xpbmsgKG1haW5fbG9vcDptYWluX2xvb3ApIHIgX3AgbCA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rXFxuXCI7XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYWRfdXJsIG5hbWUgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+cmVhZF91cmwgJVNcXG5cIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgdHJ5XG4gICAgICAgIGxldCBsX2NwLCByX2NwID1cbiAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5ub19ubDp0cnVlIH5icTpmYWxzZSBsXG4gICAgICAgIGluXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9jcD0lUyByX2NwPSVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbF9jcClcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHJfY3ApO1xuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgbF9kcSwgcl9kcSA9XG4gICAgICAgICAgICByZWFkX3VudGlsX2RxIH5ub19ubDp0cnVlIH5icTpmYWxzZSBsXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IGxfZHE9JVMgcl9kcT0lU1xcbiUhXCJcbiAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbF9kcSlcbiAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9kcSk7XG4gICAgICAgICAgKCogbWF5YmUgdGl0bGUgKilcbiAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBsX2NwID4gTGlzdC5sZW5ndGggbF9kcSB0aGVuICgqIHRpdGxlICopXG4gICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IHRpdGxlXFxuJSFcIjtcbiAgICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggTGlzdC5yZXYgbF9kcSB3aXRoXG4gICAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGxcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyAoTGlzdC5yZXYgdGwpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgbF9kcVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIHJlc3QgPSByZWFkX3VudGlsX2RxIH5ub19ubDpmYWxzZSB+YnE6ZmFsc2Ugcl9kcSBpblxuICAgICAgICAgICAgICBsZXQgcmVzdCA9IHNuZChyZWFkX3VudGlsX2NwYXJlbnRoIHJlc3QpIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgKCogbm8gdGl0bGUgKilcbiAgICAgICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgd2l0aCBOTF9leGNlcHRpb24gfCBQcmVtYXR1cmVfZW5kaW5nIC0+ICgqIG5vIHRpdGxlICopXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbm8gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgbGV0IHVybCA9IG1hdGNoIExpc3QucmV2IGxfY3Agd2l0aFxuICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGwgLT4gTGlzdC5yZXYgdGxcbiAgICAgICAgICAgICAgfCBfIC0+IGxfY3BcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdGl0bGUsIHJlc3QgPSBbXSwgcl9jcCBpblxuICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgU29tZShVcmwodXJsLCBuYW1lLCB0aXRsZSkgOjogciwgW0NwYXJlbnRoZXNpc10sIHJlc3QpXG4gICAgICAgICAgZW5kXG4gICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYWRfbmFtZSBsID1cbiAgICAgICgqIGl0J3Mgbm90IHJlYWxseSB0aGUgXCJuYW1lXCIgb2YgYSBVUkwgYnV0IHdoYXRcbiAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBpbm5lciBIVE1MIG9mIGFuIEhUTUwgJ0EnIHRhZyAqKVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rPiByZWFkX25hbWVcXG5cIjtcbiAgICAgIHRyeVxuICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgd2l0aFxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXM6OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoZWF0X2JsYW5rIHRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIDA6OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzcyBuOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKE9wYXJlbnRoZXNpc3Mobi0xKTo6dGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPiBOb25lXG4gICAgaW5cbiAgICByZWFkX25hbWUgbFxuXG5cbiAgbGV0IGhhc19wYXJhZ3JhcGhzIGwgPVxuICAgICgqIEhhcyBhdCBsZWFzdCAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLiAqKVxuICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBOZXdsaW5lcyBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsXG5cbiAgbGV0IHBhcnNlX2xpc3QgKG1haW5fbG9vcDptYWluX2xvb3ApIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgaWYgZGVidWcgdGhlbiBiZWdpblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Qgcj0oJXMpIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIFwiXCIgKCogKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSkgKilcbiAgICAgICAgXCJcIiAoKiAoZGVzdHJpbmdfb2ZfdGwgcCkgKilcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIH5saW1pdDo0MCBsKTtcbiAgICBlbmQ7XG4gICAgbGV0IG1vZHVsZSBVTyA9IHN0cnVjdCB0eXBlIG9yZGVyZWQgPSBPIHwgVSBlbmQgaW5cbiAgICBsZXQgb3BlbiBVTyBpblxuICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBwYXJzZV9saXN0OiBsPSglcylcXG4lIVwiIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICBsZXQgZW5kX29mX2l0ZW0gKGluZGVudDppbnQpIGwgOiB0b2sgc3BsaXRfYWN0aW9uICA9IG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBTcGxpdChbXSxbXSlcbiAgICAgIHwgTmV3bGluZXMgMCA6OiAoKFNwYWNlcyBuKSA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogdGxcbiAgICAgICAgICAgICAgICAgICAgICAgYXMgcykgLT5cbiAgICAgICAgYXNzZXJ0KG4+PTApO1xuICAgICAgICBpZiBuKzIgPSBpbmRlbnQrNCB0aGVuICgqIGJsb2NrcXVvdGUgKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAobisyKSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZXMgMCA6OiAoU3BhY2VzIG4gOjogdGwgYXMgcykgLT5cbiAgICAgICAgYXNzZXJ0KG4+PTApO1xuICAgICAgICBpZiBuKzIgPj0gaW5kZW50KzggdGhlbiAoKiBjb2RlIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMCk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmU6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlIGlmIG4rMiA+PSBpbmRlbnQrNCB0aGVuICgqIG5ldyBwYXJhZ3JhcGggaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgKE5ld2xpbmVzIF8pIDo6IF8gLT4gKCogbiA+IDAgKilcbiAgICAgICAgKCogRW5kIG9mIGl0ZW0sIHN0b3AgKilcbiAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjpcbiAgICAgICAgKFxuICAgICAgICAgICgoU3BhY2V8U3BhY2VzIF8pIDo6IChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXyk6OiBfKVxuICAgICAgICB8ICgoU3BhY2V8U3BhY2VzIF8pIDo6IE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgIHwgKChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXyk6OiBfKVxuICAgICAgICB8IChOdW1iZXIgXyA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfKVxuICAgICAgICAgIGFzIHRsKSAtPlxuICAgICAgICBTcGxpdChbTmV3bGluZV0sIHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICgqIEEgbGluZSB3aXRoIHNwYWNlcyBzaG91bGRuJ3QgaW50ZXJmZXJlIGhlcmUsXG4gICAgICAgICAgIHdoaWNoIGlzIGFib3V0IGV4YWN0bHkgMiBjb25zZWN1dGl2ZSBuZXdsaW5lcyxcbiAgICAgICAgICAgc28gd2UgcmV3cml0ZSB0aGUgaGVhZCBvZiB0aGUgbGV4aW5nIHN0cmVhbS4gKilcbiAgICAgICAgQ29udGludWVfd2l0aChbXSwgTmV3bGluZXMgMCA6OiB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogKE5ld2xpbmVzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgYXQgbGVhc3QgMyBjb25zZWN1dGl2ZSBuZXdsaW5lcyxcbiAgICAgICAgICAgc28gd2Ugc3RvcC4gKilcbiAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZXMgXyBhcyBzKSA6OiB0bCAtPlxuICAgICAgICBDb250aW51ZV93aXRoXG4gICAgICAgICAgKFtzO1xuICAgICAgICAgICAgVGFnKFwicGFyc2VfbGlzdC9yZW1lbWJlciBzcGFjZXNcIixcbiAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCA9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFNwYWNlcyBfOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICBlbmQpO1xuICAgICAgICAgICAgTmV3bGluZV0sXG4gICAgICAgICAgIHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSBhcyBzKSA6OiB0bCAtPlxuICAgICAgICBDb250aW51ZV93aXRoXG4gICAgICAgICAgKFtzO1xuICAgICAgICAgICAgVGFnKFwicGFyc2VfbGlzdC9yZW1lbWJlciBzcGFjZVwiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT4gU29tZShyLHAsU3BhY2U6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICBlbmQpO1xuICAgICAgICAgICAgTmV3bGluZV0sXG4gICAgICAgICAgIHRsKVxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIENvbnRpbnVlXG4gICAgaW5cbiAgICBsZXQgcmV2X3RvX3QgbCA9XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgICgqIE5ld2xpbmVzIGF0IHRoZSBlbmQgb2YgaXRlbXMgaGF2ZSBubyBtZWFuaW5nIChleGNlcHQgdG8gZW5kIHRoZVxuICAgICAgICAgaXRlbSB3aGljaCBpcyBleHByZXNzZWQgYnkgdGhlIGNvbnN0cnVjdG9yIGFscmVhZHkpLiAqKVxuICAgICAgbGV0IGwgPSBtYXRjaCBsIHdpdGggKE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPiB0bCB8IF8gLT4gbCBpblxuICAgICAgbWFpbl9sb29wIFtdIFtOZXdsaW5lXSAoTGlzdC5yZXYgbClcbiAgICBpblxuICAgIGxldCBhZGQgKHN1Ymxpc3Q6ZWxlbWVudCkgaXRlbXMgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgYWRkXFxuJSFcIjtcbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IChPLGluZGVudHMsaXRlbSk6OnRsIC0+XG4gICAgICAgIChPLGluZGVudHMsKGl0ZW1AW3N1Ymxpc3RdKSk6OnRsXG4gICAgICB8IChVLGluZGVudHMsaXRlbSk6OnRsIC0+XG4gICAgICAgIChVLGluZGVudHMsKGl0ZW1AW3N1Ymxpc3RdKSk6OnRsXG4gICAgaW5cbiAgICBsZXQgbWFrZV91cCB+cCBpdGVtcyA6IE9tZF9yZXByZXNlbnRhdGlvbi5lbGVtZW50ID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1ha2VfdXAgcD0lYlxcbiUhXCIgcDtcbiAgICAgIGxldCBpdGVtcyA9IExpc3QucmV2IGl0ZW1zIGluXG4gICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICB8IChVLF8saXRlbSk6Ol8gLT5cbiAgICAgICAgaWYgcCB0aGVuXG4gICAgICAgICAgVWxwKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFVsKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgIHwgKE8sXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBPbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT2woTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCBbXSAtPlxuICAgICAgICBmYWlsd2l0aCBcIm1ha2VfdXAgY2FsbGVkIHdpdGggW11cIiAoKiBhc3NlcnQgZmFsc2UgKilcbiAgICBpblxuICAgIGxldCByZWMgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIGwgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbGlzdF9pdGVtczogcD0lYiBsPSglcylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAoTC5kZXN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICgqIG5vIG1vcmUgbGlzdCBpdGVtcyAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICgqIG1vcmUgbGlzdCBpdGVtcyAqKVxuICAgICAgKCogbmV3IHVub3JkZXJlZCBpdGVtcyAqKVxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgyMzQ2KSBuZXdfaXRlbT0lU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbmV3X2l0ZW0pO1xuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMF0gKChVLFswXSwgcmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6KFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzFdICgoVSxbMV0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgIHwgMTo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGkgPiAxIHRoZW5cbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICAgICAgZWxzZSAoKiBpIDwgMSA6IG5ldyBzdWIgbGlzdCopXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoMTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhVLDE6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXSByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6KFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gKG4rMikpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7ICgqIGHvZS4uLiBsaXN0ZXMgbWFsIGZvcm3pZXMgPyEgKilcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbbisyXSAoKFUsW24rMl0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlcyglZDo6Xykgbj0lZCBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICBpIG4gKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgaWYgaSA9IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSAoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKSA6OiBpdGVtcyBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyBpdGVtcyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhVLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICAgICAgICBlbHNlICgqIGkgPiBuICsgMiAqKVxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgICgqIG5ldyBvcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMCkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbmV3X2l0ZW07XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKE8sWzBdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMDo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBfOjpfIC0+XG4gICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2U6Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzFdICgoTyxbMV0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKE8sMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnA6cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2VzIG46Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gKG4rMikpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlc1tdIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoTyxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGlmIGkgPCBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cFxuICAgICAgICAgICAgICAgICAgICAoKG4rMik6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywobisyKTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldXG4gICAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnA6cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICAgICAgICBlbHNlICgqIGkgPiBuICsgMiAqKVxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgICgqICopXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgfCBOZXdsaW5lcyAwOjooTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFNwYWNlfFNwYWNlcyBfKTo6U3Rhcjo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFNwYWNlfFNwYWNlcyBfKTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgICAtPlxuICAgICAgICBsaXN0X2l0ZW1zIH5wOnRydWUgaW5kZW50cyBpdGVtcyBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBsZXQgcmVjIHN0cmluZ19vZl9pdGVtcyBpdGVtcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgKE8saW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKE8saT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IChVLGluZGVudDo6XyxpdGVtKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgc3ByaW50ZiBcIihVLGk9JWQsJVMpXCIgKGluZGVudCkgKE9tZF9iYWNrZW5kLmh0bWxfb2ZfbWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaXRlbXMgdGxcbiAgICAgICAgICAgICAgfCBfIC0+IFwiKHdlaXJkKVwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5BTEkgcGFyc2VfbGlzdDogbD0oJVMpIGl0ZW1zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIChzdHJpbmdfb2ZfaXRlbXMgaXRlbXMpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAoKiBub3QgYSBsaXN0IGl0ZW0gKilcbiAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgaW5cbiAgICBtYXRjaCBsaXN0X2l0ZW1zIH5wOmZhbHNlIFtdIFtdIGwgd2l0aFxuICAgIHwgcnAsIGwgLT5cbiAgICAgIHJwOjpyLCBbTmV3bGluZV0sIGxcblxuXG5cbiAgbGV0IGljb2RlID8oZGVmYXVsdF9sYW5nPWRlZmF1bHRfbGFuZykgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBpbmRlbnRlZCBjb2RlOiByZXR1cm5zIChyLHAsbCkgd2hlcmUgciBpcyB0aGUgcmVzdWx0LCBwIGlzIHRoZVxuICAgICAgIGxhc3QgdGhpbmcgcmVhZCwgbCBpcyB0aGUgcmVtYWlucyAqKVxuICAgIGxldCBkdW1teV90YWcgPSBUYWcoXCJkdW1teV90YWdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiA9IGZ1biByIHAgbCAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIGluXG4gICAgbGV0IGFjY3UgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgbGV0IHJlYyBsb29wIHMgdGwgPSBtYXRjaCBzLCB0bCB3aXRoXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIChTcGFjZXxTcGFjZXMoMHwxKSk6Ol8gLT5cbiAgICAgICAgKCogMSwgMiBvciAzIHNwYWNlcy4gKilcbiAgICAgICAgKCogLT4gUmV0dXJuIHdoYXQncyBiZWVuIGZvdW5kIGFzIGNvZGUgYmVjYXVzZSB3aGF0IGZvbGxvd3MgaXNuJ3QuICopXG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSkgOjogciwgW3BdLCB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCBTcGFjZXMobik6OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICAoKiBBdCBsZWFzdCA0IHNwYWNlcywgaXQncyBzdGlsbCBjb2RlLiAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpZiBuID49IDQgdGhlbiBTcGFjZXMobi00KSBlbHNlIGlmIG4gPSAzIHRoZW4gU3BhY2UgZWxzZSBkdW1teV90YWcpXG4gICAgICAgICAgdGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKG5vdF9zcGFjZXM6Ol8gYXMgdGwpIC0+ICgqIHN0b3AgKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIGl0J3Mgbm8gbW9yZSBjb2RlLiAqKVxuICAgICAgfCBwLCBlOjp0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgKCogaHRtbCBlbnRpdGllcyBhcmUgdG8gYmUgY29udmVydGVkIGxhdGVyISAqKVxuICAgICAgICBsb29wIGUgdGxcbiAgICAgIHwgcCwgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSk6OnIsIFtwXSwgW11cbiAgICBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgU3BhY2VzIG46OnRsIC0+XG4gICAgICBpZiBuID49IDQgdGhlblxuICAgICAgICBTb21lKGxvb3AgKFNwYWNlcyhuLTQpKSB0bClcbiAgICAgIGVsc2UgaWYgbiA9IDMgdGhlblxuICAgICAgICBTb21lKGxvb3AgU3BhY2UgdGwpXG4gICAgICBlbHNlIFNvbWUobG9vcCBkdW1teV90YWcgdGwpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbiAgKCogUmV0dXJucyBbKHIscCxsKV0gd2hlcmUgW3JdIGlzIHRoZSByZXN1bHQsIFtwXSBpcyB0aGUgbGFzdCB0aGluZ1xuICAgICByZWFkLCBhbmQgW2xdIGlzIHdoYXQgcmVtYWlucy4gKilcbiAgbGV0IHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBhc3NlcnQgKG4gPiAwKTtcbiAgICBpZiBuIDw9IDMgdGhlbiAoXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICAgICgqIHVub3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCAoTnVtYmVyIF8pOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgICgqIG9yZGVyZWQgbGlzdCAqKVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIChMLm1ha2Vfc3BhY2Ugbjo6bGV4ZW1lcylcbiAgICAgIHwgW11cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyAgLT4gKCogYmxhbmsgbGluZSwgc2tpcCBzcGFjZXMgKilcbiAgICAgICAgciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICAgIHwgIF86Ol8gLT5cbiAgICAgICAgVGV4dCAoXCIgXCIpOjpyLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgIClcbiAgICBlbHNlICggKCogbj49NCwgYmxhbmsgbGluZSBvciBpbmRlbnRlZCBjb2RlICopXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgW10gfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCBfIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgaWNvZGUgfmRlZmF1bHRfbGFuZyByIFtOZXdsaW5lXSAoTC5tYWtlX3NwYWNlIG4gOjogbGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IHIscCxsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmljb2RlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgIClcblxuICBsZXQgc3BhY2VzX25vdF9hdF9iZWdpbm5pbmdfb2ZfbGluZSA/KGh0bWw9ZmFsc2UpIG4gciBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBhc3NlcnQgKG4gPiAwKTtcbiAgICBpZiBuID0gMSB0aGVuXG4gICAgICAoVGV4dCBcIiBcIjo6ciksIFtTcGFjZV0sIGxleGVtZXNcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBOZXdsaW5lIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgdGhlIG5ld2xpbmVcXG4lIVwiO1xuICAgICAgICBCcjo6ciwgW1NwYWNlcyhuLTIpXSwgdGxcbiAgICAgIHwgTmV3bGluZXMgayA6OiB0bCB3aGVuIG5vdCBodG1sIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIihPTUQpIDIgb3IgbW9yZSBzcGFjZXMgYmVmb3JlIGEgbmV3bGluZSwgZWF0IDEgbmV3bGluZVwiO1xuICAgICAgICBsZXQgbmV3bGluZXMgPSBpZiBrID0gMCB0aGVuIE5ld2xpbmUgZWxzZSBOZXdsaW5lcyhrLTEpIGluXG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCBuZXdsaW5lcyA6OiB0bFxuICAgICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAobj4xKTtcbiAgICAgICAgKFRleHQgKFN0cmluZy5tYWtlIG4gJyAnKTo6ciksIFtTcGFjZXMobi0yKV0sIGxleGVtZXNcbiAgICApXG5cblxuICBsZXQgbWF5YmVfYXV0b2VtYWlsIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IExlc3N0aGFuOjp0bCAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBmc3BsaXQgfmV4Y2w6KGZ1bmN0aW9uIChOZXdsaW5lfE5ld2xpbmVzIF98U3BhY2V8U3BhY2VzIF8pIDo6IF8tPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgfmY6KGZ1bmN0aW9uIEF0Ojp0bCAtPiBTcGxpdChbXSx0bCkgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgdGxcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUobGVmdCwgcmlnaHQpIC0+XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb24gR3JlYXRlcnRoYW46OnRsIC0+IFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDA6OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuOjp0bCAtPiBTcGxpdChbXSxHcmVhdGVydGhhbnMobi0xKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICByaWdodFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZShkb21haW4sIHRsKSAtPlxuICAgICAgICAgICAgbGV0IGVtYWlsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIF4gXCJAXCIgXiBMLnN0cmluZ19vZl90b2tlbnMgZG9tYWluIGluXG4gICAgICAgICAgICBTb21lKFVybChcIm1haWx0bzpcIl5lbWFpbCxbVGV4dCBlbWFpbF0sXCJcIik6OnIsW0dyZWF0ZXJ0aGFuXSx0bClcbiAgICAgIGVuZFxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIk9tZF9wYXJzZXIubWF5YmVfYXV0b2VtYWlsOiB3cm9uZyB1c2Ugb2YgdGhlIGZ1bmN0aW9uLlwiXG5cbiAgbGV0IGlzX2hleCBzID1cbiAgICBTdHJpbmcubGVuZ3RoIHMgPiAxXG4gICAgJiYgKHMuWzBdID0gJ1gnIHx8IHMuWzBdID0gJ3gnKVxuICAgICYmIChsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgICBpID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICB8fFxuICAgICAgICAgKG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPlxuICAgICAgICAgICAgbG9vcCAoc3VjYyBpKVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgaW4gbG9vcCAxKVxuXG4gIGxldCBtZWRpYXR5cGV0ZXh0b21kIDogc3RyaW5nIGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IGZpbHRlcl90ZXh0X29tZF9yZXYgbCA9XG4gICAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGlmIGIgdGhlbiByIGVsc2UgbFxuICAgICAgfCAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKTo6dGwgLT5cbiAgICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCBiIChlOjpyKSB0bFxuICAgIGluXG4gICAgbG9vcCBmYWxzZSBbXSBsXG5cbiAgZXhjZXB0aW9uIE9ycGhhbl9jbG9zaW5nIG9mIHN0cmluZyAqIGwgKiBsXG5cbiAgbGV0IHJlYyBtYWluX2ltcGxfcmV2IH5odG1sIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgKCogaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsX3JldiBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWIgcj0lcyBwPSglcykgbD0oJXMpXFxuJSFcIlxuICAgICAgICBodG1sXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCAoTGlzdC5yZXYgcikpXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBwcmV2aW91cylcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGxleGVtZXMpO1xuICAgIG1hdGNoIHByZXZpb3VzLCBsZXhlbWVzIHdpdGhcbiAgICAoKiBubyBtb3JlIHRvIHByb2Nlc3MgKilcbiAgICB8IF8sIFtdIC0+XG4gICAgICAoKiByZXR1cm4gdGhlIHJlc3VsdCAoLyFcXCBpdCBoYXMgdG8gYmUgcmV2ZXJzZWQgYXMgc29tZSBwb2ludCkgKilcbiAgICAgIHJcblxuICAgICgqIFRhZzogdGFnIHN5c3RlbSAkXFxjdXAkIGhpZ2gtcHJpb3JpdHkgZXh0ZW5zaW9uIG1lY2hhbmlzbSAqKVxuICAgIHwgXywgVGFnKF9uYW1lLCBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZSNwYXJzZXJfZXh0ZW5zaW9uIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwcmV2aW91cyB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBIVE1MIGNvbW1lbnRzICopXG4gICAgfCBfLCAoTGVzc3RoYW4gYXMgdCk6OihFeGNsYW1hdGlvbjo6TWludXNzIDA6OmMgYXMgdGwpIC0+XG4gICAgICBiZWdpblxuICAgICAgICBsZXQgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAoTWludXNzIF8gYXMgbSk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGwgLT5cbiAgICAgICAgICAgIFNwbGl0KFtnO21dLCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGZzcGxpdCB+ZjpmIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIChjb21tZW50cywgbmV3X3RsKSAtPlxuICAgICAgICAgIGxldCByID0gSHRtbF9jb21tZW50KEwuc3RyaW5nX29mX3Rva2VucyBjb21tZW50cykgOjogciBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBbTmV3bGluZV0gbmV3X3RsXG4gICAgICBlbmRcblxuICAgICgqIGVtYWlsLXN0eWxlIHF1b3RpbmcgLyBibG9ja3F1b3RlICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCBHcmVhdGVydGhhbjo6KFNwYWNlfFNwYWNlcyBfKTo6XyAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBlbWFpbHN0eWxlX3F1b3RpbmcgbWFpbl9sb29wIHIgcHJldmlvdXMgKE5ld2xpbmU6OmxleGVtZXMpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZywgd2l0aCBsaW5lcyBzdGFydGluZyB3aXRoIHNwYWNlcyEgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChTcGFjZXxTcGFjZXMoMHwxKSBhcyBzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogR3JlYXRlcnRoYW4gOjogKFNwYWNlfFNwYWNlcyBfKTo6XyAtPlxuICAgICAgKCogSXQncyAxLCAyIG9yIDMgc3BhY2VzLCBub3QgbW9yZSBiZWNhdXNlIGl0IHdvdWxkbid0IG1lYW5cbiAgICAgICAgIHF1b3RpbmcgYW55bW9yZSBidXQgY29kZS4gKilcbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBuZXdfciwgcCwgcmVzdCA9XG4gICAgICAgICAgbGV0IGZvbywgcmVzdCA9XG4gICAgICAgICAgICBtYXRjaCB1bmluZGVudCAoTC5sZW5ndGggcykgKE5ld2xpbmU6OmxleGVtZXMpIHdpdGhcbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmZvbywgcmVzdCAtPiBmb28sIHJlc3RcbiAgICAgICAgICAgIHwgcmVzIC0+IHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgW10gcHJldmlvdXMgKE5ld2xpbmU6OmZvbylcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKG5ld19yLCBwLCBbXSkgLT4gbmV3X3IsIHAsIHJlc3RcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAobmV3X3JAcikgW05ld2xpbmVdIHJlc3RcbiAgICAgIGVuZFxuXG4gICAgKCogbWludXMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksXG4gICAgICAoTWludXN8TWludXNzIF8gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgdGwpIC0+XG4gICAgICAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfbSBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgqIG5vIGhyLCBzbyBpdCBjb3VsZCBiZSBhIGxpc3QgKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgTWludXMgLT4gKCogaXQncyBhIGxpc3QgKilcbiAgICAgICAgICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG4gICAgICAgICAgICB8IF8gLT4gKCogbm90IGEgbGlzdCAqKVxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgbCAtPiAoKiBociAqKVxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgZW5kXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoTWludXN8TWludXNzIF8gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIGFuZCBpdCdzIG5vdCBhIGxpc3QgZWl0aGVyXG4gICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGl0J3Mgbm90IGZvbGxvd2VkIGJ5IHNwYWNlcyAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgbCAtPiAoKiBociAqKVxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgZW5kXG5cbiAgICAoKiBoYXNoZXMgKilcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSxcbiAgICAgIChIYXNocyBuIGFzIHQpIDo6ICgoU3BhY2V8U3BhY2VzIF8pIDo6IHR0bCBhcyB0bClcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSxcbiAgICAgIChIYXNocyBuIGFzIHQpIDo6ICh0dGwgYXMgdGwpIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBpZiBuIDw9IDQgdGhlblxuICAgICAgICBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAobisyKSByIHByZXZpb3VzIHR0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnJlYWRfdGl0bGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGxcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgSGFzaCA6OiB0bCAtPiAoKiBoYXNoIHRpdGxlcyAqKVxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF90aXRsZSBtYWluX2xvb3AgMSByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIHwgXywgKEhhc2h8SGFzaHMgXyBhcyB0KSA6OiB0bCAtPiAoKiBoYXNoIC0tIG5vIHRpdGxlICopXG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcblxuICAgICgqIHNwYWNlcyBhZnRlciBhIG5ld2xpbmU6IGNvdWxkIGxlYWQgdG8gaHIgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksICgoU3BhY2V8U3BhY2VzIF8pIGFzIHNwKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaHIgdGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBObyBbSHJdLCBidXQgbWF5YmUgW1VsXSwgW09sXSwgY29kZSwuLi4gKilcbiAgICAgICAgICBsZXQgbiA9IEwubGVuZ3RoIHNwIGluXG4gICAgICAgICAgbGV0IHIsIHAsIGwgPVxuICAgICAgICAgICBzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUgbWFpbl9sb29wIGRlZmF1bHRfbGFuZyBuIHIgcHJldmlvdXMgdGwgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgU29tZSB0bCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gdGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFueXdoZXJlICopXG4gICAgfCBfLCAoKFNwYWNlfFNwYWNlcyBfKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogdG9vIG1hbnkgY2FzZXMgdG8gYmUgaGFuZGxlZCBoZXJlICopXG4gICAgICBsZXQgbiA9IEwubGVuZ3RoIHQgaW5cbiAgICAgIGxldCByLCBwLCBsID0gc3BhY2VzX25vdF9hdF9iZWdpbm5pbmdfb2ZfbGluZSB+aHRtbCBuIHIgdGwgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcblxuICAgICgqIHVuZGVyc2NvcmVzICopXG4gICAgfCBfLCAoVW5kZXJzY29yZSBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiB1bmRlcnNjb3JlLCBvciBlbXBoICopXG4gICAgICAobWF0Y2ggdWVtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgKVxuICAgIHwgXywgKFVuZGVyc2NvcmVzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiB1bmRlcnNjb3Jlcywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggdWVtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgaWYgbiA9IDAgdGhlbiAoKiAxIHVuZGVyc2NvcmUgKilcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2UgKCogMiB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKFtCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCldKSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG5cbiAgICAoKiBlbnVtZXJhdGVkIGxpc3RzICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoTnVtYmVyIF8pIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IHRsIC0+XG4gICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcblxuICAgICgqIHBsdXMgKilcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgUGx1cyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogc3RhcnMgKilcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgU3RhciA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICgqIG1heWJlIGhyIG9yIG5ldyBsaXN0ICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgIGVuZFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFycyBfIDo6IF8gd2hlbiBocl9zIGxleGVtZXMgPD4gTm9uZSAtPlxuICAgICAgKCogaHIgKilcbiAgICAgIChtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgIHwgU29tZSBsIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIClcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgKFN0YXIgYXMgdCkgOjogdGwgLT4gKCogbWF5YmUgaHIgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIClcbiAgICAgIGVuZFxuICAgIHwgXywgKFN0YXIgYXMgdCkgOjogdGwgLT4gKCogb25lIFwib3JwaGFuXCIgc3Rhciwgb3IgZW1waCAvLyBjYW4ndCBiZSBociAqKVxuICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcbiAgICB8IF8sIChTdGFycygoMHwxKSBhcyBuKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogMiBvciAzIFwib3JwaGFuXCIgc3RhcnMsIG9yIGVtcGgvYm9sZCAqKVxuICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgKG4rMikgdGwgd2l0aFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogYmFja3NsYXNoZXMgKilcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTmV3bGluZSBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcbiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTmV3bGluZXMgMCA6OiB0bCAtPiAoKiBcXFxcblxcblxcblxcbi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW0JhY2tzbGFzaDsgTmV3bGluZV0gKE5ld2xpbmUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTmV3bGluZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXVxuICAgICAgICAoTmV3bGluZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEJhY2txdW90ZSBhcyB0KSA6OiB0bCAtPiAoKiBcXGAgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBCYWNrcXVvdGVzIDAgOjogdGwgLT4gKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXSAoQmFja3F1b3RlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcYGBgYC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEJhY2txdW90ZV1cbiAgICAgICAgKEJhY2txdW90ZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFN0YXIgYXMgdCkgOjogdGwgLT4gKCogXFwqICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogU3RhcnMgMCA6OiB0bCAtPiAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhciA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwqKioqLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW0JhY2tzbGFzaDsgU3Rhcl0gKFN0YXJzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIFxcXyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIDAgOjogdGwgLT4gKCogXFxfX18uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbQmFja3NsYXNoOyBVbmRlcnNjb3JlXSAoVW5kZXJzY29yZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBVbmRlcnNjb3JlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxfX18uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbQmFja3NsYXNoOyBVbmRlcnNjb3JlXVxuICAgICAgICAoVW5kZXJzY29yZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9icmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXHsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwie1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIDAgOjogdGwgLT4gKCogXFx7e3suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwie1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2VdIChPYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx7e3suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwie1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2VdIChPYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2UgYXMgdCkgOjogdGwgLT4gKCogXFx9ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIn1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyAwIDo6IHRsIC0+ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIn1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNlXSAoQ2JyYWNlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFjZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIn1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNlXSAoQ2JyYWNlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgdCkgOjogdGwgLT4gKCogXFxbICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIDAgOjogdGwgLT4gKCogXFxbW1suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2tldF0gKE9icmFja2V0IDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFja2V0cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxbW1suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2tldF0gKE9icmFja2V0cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXQgYXMgdCkgOjogdGwgLT4gKCogXFx9ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2tldF0gKENicmFja2V0IDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFja2V0cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2tldF0gKENicmFja2V0cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIoXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCgoKC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIoXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9wYXJlbnRoZXNpc10gKE9wYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCgoKC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIoXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9wYXJlbnRoZXNpc11cbiAgICAgICAgKE9wYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpcyBhcyB0KSA6OiB0bCAtPiAoKiBcXCkgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT4gKCogXFwpKSkuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKVwiKSA6OiByKSBbQmFja3NsYXNoOyBDcGFyZW50aGVzaXNdXG4gICAgICAgIChDcGFyZW50aGVzaXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ3BhcmVudGhlc2lzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwpKSkuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKVwiKSA6OiByKSBbQmFja3NsYXNoOyBDcGFyZW50aGVzaXNdXG4gICAgICAgIChDcGFyZW50aGVzaXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChQbHVzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIDAgOjogdGwgLT4gKCogXFwrKysuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbQmFja3NsYXNoOyBQbHVzXSAoUGx1cyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBQbHVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwrKysuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbQmFja3NsYXNoOyBQbHVzXSAoUGx1c3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE1pbnVzIGFzIHQpIDo6IHRsIC0+ICgqIFxcLSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyAwIDo6IHRsIC0+ICgqIFxcLS0tLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW0JhY2tzbGFzaDsgTWludXNdIChNaW51cyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBNaW51c3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcLS0tLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW0JhY2tzbGFzaDsgTWludXNdIChNaW51c3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKERvdCBhcyB0KSA6OiB0bCAtPiAoKiBcXC4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBEb3RzIDAgOjogdGwgLT4gKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90IDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcLi4uLi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFtCYWNrc2xhc2g7IERvdF0gKERvdHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEV4Y2xhbWF0aW9uIGFzIHQpIDo6IHRsIC0+ICgqIFxcISAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyAwIDo6IHRsIC0+ICgqIFxcISEhLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW0JhY2tzbGFzaDsgRXhjbGFtYXRpb25dIChFeGNsYW1hdGlvbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBFeGNsYW1hdGlvbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcISEhLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW0JhY2tzbGFzaDsgRXhjbGFtYXRpb25dXG4gICAgICAgIChFeGNsYW1hdGlvbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEhhc2ggYXMgdCkgOjogdGwgLT4gKCogXFwjICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgMCA6OiB0bCAtPiAoKiBcXCMjIy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEhhc2hdIChIYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEhhc2hzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCMjIy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEhhc2hdIChIYXNocyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgdCkgOjogdGwgLT4gKCogXFw+ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIDAgOjogdGwgLT4gKCogXFw+Pj4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbQmFja3NsYXNoOyBHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEdyZWF0ZXJ0aGFucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFw+Pj4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbQmFja3NsYXNoOyBHcmVhdGVydGhhbl1cbiAgICAgICAgKEdyZWF0ZXJ0aGFucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgdCkgOjogdGwgLT4gKCogXFw8ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIDAgOjogdGwgLT4gKCogXFw8PDwuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbQmFja3NsYXNoOyBMZXNzdGhhbl0gKExlc3N0aGFuIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IExlc3N0aGFucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFw8PDwuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbQmFja3NsYXNoOyBMZXNzdGhhbl1cbiAgICAgICAgKExlc3N0aGFucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIChCYWNrc2xhc2hzIDAgYXMgdCkgOjogdGwgLT4gKCogXFxcXFxcXFwuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXFxcXFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIChCYWNrc2xhc2hzIG4gYXMgdCkgOjogdGwgLT4gKCogXFxcXFxcXFwuLi4gKilcbiAgICAgIGlmIG4gbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChTdHJpbmcubWFrZSAoKG4rMikvMikgJ1xcXFwnKSA6OiByKSBbdF0gdGxcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChTdHJpbmcubWFrZSAoKG4rMikvMikgJ1xcXFwnKSA6OiByKSBbdF0gKEJhY2tzbGFzaCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaDo6W10gLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgXCJcXFxcXCIgOjogcikgW10gW11cbiAgICB8IF8sIEJhY2tzbGFzaDo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgXCJcXFxcXCIgOjogcikgW0JhY2tzbGFzaF0gdGxcblxuICAgICgqIDwgKilcbiAgICB8IF8sIChMZXNzdGhhbnxMZXNzdGhhbnMgXyBhcyB0KVxuICAgICAgICAgOjogKFdvcmQoXCJodHRwXCJ8XCJodHRwc1wifFwiZnRwXCJ8XCJmdHBzXCJ8XCJzc2hcInxcImFmcFwifFwiaW1hcFwiKSBhcyB3KVxuICAgICAgICAgOjogQ29sb246OlNsYXNocyhuKTo6dGwgLT5cbiAgICAgICgqIFwic2VtaS1hdXRvbWF0aWNcIiBVUkxzICopXG4gICAgICBsZXQgcmVjIHJlYWRfdXJsIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbiB3KSBeIFwiOi8vXCJcbiAgICAgICAgICAgIF4gKGlmIG4gPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5tYWtlIChuLTEpICcvJylcbiAgICAgICAgICAgIF4gTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiBhY2N1KVxuICAgICAgICAgIGluIFNvbWUodXJsLCB0bClcbiAgICAgICAgfCB4Ojp0bCAtPlxuICAgICAgICAgIHJlYWRfdXJsICh4OjphY2N1KSB0bFxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgaW5cbiAgICAgIGJlZ2luIG1hdGNoIHJlYWRfdXJsIFtdIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHVybCwgbmV3X3RsKSAtPlxuICAgICAgICAgIGxldCByID0gXG4gICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIDAgLT4gVGV4dCBcIjxcIiA6OiByXG4gICAgICAgICAgICB8IExlc3N0aGFucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJzwnKSA6OiByXG4gICAgICAgICAgICB8IF8gLT4gclxuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVXJsKHVybCxbVGV4dCB1cmxdLFwiXCIpOjpyKSBbXSBuZXdfdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuXG4gICAgKCogV29yZCh3KSAqKVxuICAgIHwgXywgV29yZCB3Ojp0bCAtPlxuICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgdyA6OiByKSBbV29yZCB3XSB0bFxuXG4gICAgKCogbmV3bGluZSBhdCB0aGUgZW5kICopXG4gICAgfCBfLCBbTmV3bGluZV0gLT5cbiAgICAgIE5MOjpyXG5cbiAgICAoKiBuYW1lZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKFdvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpIGFzIHRsMikgLT5cbiAgICAgIGlmIFN0cmluZ1NldC5tZW0gdyBodG1sY29kZXNfc2V0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cbiAgICAoKiBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6Ok51bWJlciB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgIGFzIHRsMikgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cbiAgICAoKiBtYXliZSBoZXggZGlnaXQtY29kZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChIYXNoOjpXb3JkIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSB3aGVuIGlzX2hleCB3IC0+XG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHcgPD0gNCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG5cbiAgICAoKiBBbXBlcnNhbmQgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbQW1wZXJzYW5kXSB0bFxuXG4gICAgKCogMiBBbXBlcnNhbmRzICopXG4gICAgfCBfLCBBbXBlcnNhbmRzKDApOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIChBbXBlcnNhbmQ6OnRsKVxuXG4gICAgKCogU2V2ZXJhbCBBbXBlcnNhbmRzIChtb3JlIHRoYW4gMikgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMobik6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZHMobi0xKTo6dGwpXG5cbiAgICAoKiBiYWNrcXVvdGVzICopXG4gICAgfCBfLCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJjb2RlIH5kZWZhdWx0X2xhbmcgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgKilcbiAgICAoKiA8YnIvPiBhbmQgPGhyLz4gd2l0aCBvciB3aXRob3V0IHNwYWNlKHMpICopXG4gICAgfCBfLCAoTGVzc3RoYW46OldvcmQoXCJiclwifFwiaHJcIiBhcyB3KTo6U2xhc2hcbiAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGwpXG4gICAgfCBfLCAoTGVzc3RoYW46OldvcmQoXCJiclwifFwiaHJcIiBhcyB3KTo6KFNwYWNlfFNwYWNlcyBfKTo6U2xhc2hcbiAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGwpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBnIHdpdGhcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXVxuICAgICAgICAgICAgKEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gdGxcbiAgICAgIGVuZFxuXG4gICAgKCogYXdhaXRlZCBvcnBoYW4gaHRtbCBjbG9zaW5nIHRhZyAqKVxuICAgIHwgXywgTGVzc3RoYW46OlNsYXNoOjpXb3JkKHcpOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsXG4gICAgICB3aGVuICFtZWRpYXR5cGV0ZXh0b21kIDw+IFtdIC0+XG4gICAgICByYWlzZSAoT3JwaGFuX2Nsb3NpbmcodyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbnMobi0xKTo6dGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRsKSkpXG5cbiAgICAoKiBibG9jayBodG1sICopXG4gICAgfCAoW10gfCBbTmV3bGluZXxOZXdsaW5lcyBffFRhZyhcIkhUTUxCTE9DS1wiLCBfKV0pLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBpbmxpbmVfaHRtbHRhZ3Nfc2V0IHRoZW5cbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtXb3JkIFwiXCJdIGxleGVtZXNcbiAgICAgIGVsc2UgaWYgbm90IChibGluZF9odG1sIHx8IFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBodG1sdGFnc19zZXQpIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IEZUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgUlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCBodG1sIGwgPVxuICAgICAgICAgICAgICBsZXQgbWRfb2ZfaW50ZXJtX2xpc3QgPyhodG1sPWh0bWwpIGwgPVxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IGh0bWwgbFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICB8IEhUTUwodCwgYSwgYyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgbGV0IGZfYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYSBpblxuICAgICAgICAgICAgICAgICAgaWYgZl9hICE9IGEgdGhlblxuICAgICAgICAgICAgICAgICAgICBIdG1sX2Jsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKHQsXG4gICAgICAgICAgICAgICAgICAgICAgIGZfYSxcbiAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1kX29mX2ludGVybV9saXN0IH5odG1sOmZhbHNlIChMaXN0LnJldiBjKSkpXG4gICAgICAgICAgICAgICAgICAgIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCwgZl9hLCBtZF9vZl9pbnRlcm1fbGlzdCB+aHRtbDp0cnVlIChMaXN0LnJldiBjKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgTUQgbWQ6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRAbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKExpc3QucmV2X2FwcGVuZCB0MSB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OlJUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3RcbiAgICAgICAgICAgICAgICAgIChGVE9LRU5TKExpc3QucmV2X2FwcGVuZCB0MSAoTGlzdC5yZXYgdDIpKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0MTo6RlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IEZUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIGlmIGh0bWwgdGhlblxuICAgICAgICAgICAgICAgICAgUmF3KEwuc3RyaW5nX29mX3Rva2VucyB0KSA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1haW5fbG9vcCB+aHRtbCBbXSBbV29yZCBcIlwiXSB0XG4gICAgICAgICAgICAgICAgICBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXYgdCkgOjogdGwpXG4gICAgICAgICAgICBsZXQgbWRfb2ZfaW50ZXJtX2xpc3QgbCA9IG1kX29mX2ludGVybV9saXN0IHRydWUgbFxuICAgICAgICAgICAgbGV0IHN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzID1cbiAgICAgICAgICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgICAgICAgICAgIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgT3BlbiB0IC0+IGJwcmludGYgYiBcIntCL09wZW4gJXN9XCIgdFxuICAgICAgICAgICAgICAgICAgfCBBd2FpdGluZyB0IC0+IGJwcmludGYgYiBcIntCL0F3YWl0aW5nICVzfVwiIHRcbiAgICAgICAgICAgICAgICApIHRhZ3N0YXR1cztcbiAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICBsZXQgYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5ID1cbiAgICAgICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICAgfCBULlJUT0tFTlMgciA6OiBib2R5IC0+IFQuUlRPS0VOUyh4OjpyKTo6Ym9keVxuICAgICAgICAgICAgfCBfIC0+IFQuUlRPS0VOU1t4XSA6OiBib2R5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgKGJvZHk6VC5pbnRlcm0gbGlzdCkgYXR0cnMgdGFnc3RhdHVzIHRva2VucyA9XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzMzIEJIVE1MIGxvb3AgYm9keT0lUyB0YWdzdGF0dXM9JVMgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kKFQubWRfb2ZfaW50ZXJtX2xpc3QgYm9keSkpXG4gICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MDEgQkhUTUwgTm90IGVub3VnaCB0byByZWFkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IExlc3N0aGFucyBuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MDggQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyhuLTEpKVxuICAgICAgICAgICAgICAgICAgICAgICBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgKExlc3N0aGFuOjp0b2tlbnMpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogc2VsZi1jbG9zaW5nIHRhZ3MgKilcbiAgICAgICAgICAgIHwgU2xhc2g6OkdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcodGFnbmFtZSkgOjogdGFnc3RhdHVzXG4gICAgICAgICAgICAgICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0YWduYW1lLCBhdHRycywgW10pXSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDE5IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICBTbGFzaFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgdGFnIG9wZW5lciAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6U2xhc2g6OihXb3JkKHRhZ25hbWUpIGFzIHcpXG4gICAgICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiB0ID0gdGFnbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzM3NSBCSFRNTCBwcm9wZXJseSBjbG9zaW5nICVTXFxuJSFcIiB0O1xuICAgICAgICAgICAgICAgICAgU29tZShib2R5LFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbnMobi0xKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0b2tlbnMpKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzM3OSBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAxXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuUlRPS0VOU1tnO3c7U2xhc2g7TGVzc3RoYW5dOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzM4MyBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAyXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGlmICFtZWRpYXR5cGV0ZXh0b21kIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoT3JwaGFuX2Nsb3NpbmcodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhbjo6dG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFucyhuLTEpOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0b2tlbnMpKSlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyAzXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXRcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDg5IEJIVE1MIDxXb3JkKCVzKS4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBhdHRycyA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTYgQkhUTUwgdGFnICVTIGJ1dCBhdHRycyA8PiBbXVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDIxIEJIVE1MIHRhZyAlUywgdGFnc3RhdHVzPSVTLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM9W10sIHRva2Vucz0lU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnbmFtZSAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgW10gW10gKFQuQXdhaXRpbmcgdGFnbmFtZTo6dGFnc3RhdHVzKSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDg5IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVzc3RoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShiLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDMzIEJIVE1MIHRhZ3N0YXR1cz0lUyB0b2tlbnM9JVNcXG4lIVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShiQGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogZW5kIG9mIG9wZW5pbmcgdGFnICopXG4gICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiB0YWdzdGF0dXMgLT5cbiAgICAgICAgICAgICAgICAgIGlmIExpc3QubWVtIChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpIGF0dHJzIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gdCA6OiAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZShtYWluX2ltcGxfcmV2IH5odG1sIFtdIFtdIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTI0IEJIVE1MIGNsb3NpbmcgdGFnIG5vdCBmb3VuZCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiAlU1xcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2xvc2luZyB0YWcgYCVzJyBub3QgZm91bmQgZm9yIHRleHQvb21kIHpvbmUuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYXR5cGV0ZXh0b21kIDo9IExpc3QudGwgIW1lZGlhdHlwZXRleHRvbWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aCBPcnBoYW5fY2xvc2luZyh0YWduYW1lLCBkZWxpbWl0ZXIsIGFmdGVyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJlZm9yZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWMgZiByID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExlc3N0aGFucyBuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW46Ol8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMZXNzdGhhbjo6dGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVzc3RoYW46OnJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVzc3RoYW5zKG4tMSk6OnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGwgPT0gZGVsaW1pdGVyIHx8IHRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlOjp0bCBhcyBsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsID09IGRlbGltaXRlciB8fCBsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiAoZTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZiBbXSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTUyIEJIVE1MIHRva2Vucz0lcyBkZWxpbWl0ZXI9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI9JXMgYmVmb3JlPSVzICh0YWduYW1lPXQpPSViXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBkZWxpbWl0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgYWZ0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgYmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ25hbWUgPSB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAhbWVkaWF0eXBldGV4dG9tZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IHRsIC0+IG1lZGlhdHlwZXRleHRvbWQgOj0gdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiB0YWduYW1lID0gdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVC5IVE1MXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVC5NRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFpbl9pbXBsIH5odG1sIFtdIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBiZWZvcmUpKV0pXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzU3MSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIGJvZHkgW10gKFQuT3BlbiB0Ojp0YWdzdGF0dXMpIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTE5IEJIVE1MIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdWxkbid0IGZpbmQgYW4gY2xvc2luZyB0YWcgZm9yICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGJvZHksIGwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDk4IEJIVE1MIEZvdW5kIGEgY2xvc2luZyB0YWcgJXNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHQsIGF0dHJzLCBib2R5KV0gW10gdGFnc3RhdHVzIGxcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShbVC5IVE1MKHQsIGF0dHJzLCBib2R5KV0sIGwpXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIDM1OTEgQkhUTUwgU29tZSBgPmAgaXNuJ3QgZm9yIGFuIG9wZW5pbmcgdGFnXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKGFkZF90b2tlbl90b19ib2R5IEdyZWF0ZXJ0aGFuIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTQyIEJIVE1MIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM2MjggQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBOb25lKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IE5hbWVkIGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY2MSBCSFRNTCBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjY4IEJIVE1MIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM2NTQgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjkwIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzYyMiBCSFRNTCAlcz0lUyAlc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBWb2lkLCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgIHwgeDo6dG9rZW5zIGFzIGRndHNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzYyMCBCSFRNTCBnZW5lcmFsICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGRndHMpO1xuICAgICAgICAgICAgICAgIGxvb3AgKGFkZF90b2tlbl90b19ib2R5IHggYm9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmUgfCBTcGFjZSB8IFNwYWNlcyBfKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNzM3IEJIVE1MIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lcyBfIGFzIHgpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM4MjcgQkhUTUwgbmV3bGluZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIHdhcm4gXCJ0aGVyZSBhcmUgZW1wdHkgbGluZXMgaW4gd2hhdCBtYXkgYmUgYW4gSFRNTCBibG9ja1wiO1xuICAgICAgICAgICAgICAgIGxvb3AgKGFkZF90b2tlbl90b19ib2R5IHggYm9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3NDIgQkhUTUwgZmFsbGJhY2sgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgW10gLT4gXCJOb25lXCJcbiAgICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IFwiQXdhaXRpbmdcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5PcGVuIF8gOjogXyAtPiBcIk9wZW4gKGNhbid0IGJlKVwiKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MDggQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgbWF0Y2ggbG9vcCBbXSBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaCwgcmVzdCkgLT5cbiAgICAgICAgICAgIFNvbWUoVC5tZF9vZl9pbnRlcm1fbGlzdCBoLCByZXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIHJlYWRfaHRtbCgpIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaCwgcmVzdCkgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKGhAcikgW1RhZyhcIkhUTUxCTE9DS1wiLCBlbXB0eV9leHRlbnNpb24pXSByZXN0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgdGV4dCA9IEwuc3RyaW5nX29mX3Rva2VuIHQgaW5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQodGV4dCBeIHRhZ25hbWV0b3ApOjpyKSBbd10gaHRtbF9zdHVmZlxuICAgICAgICBlbmRcbiAgICAoKiAvIGVuZCBvZiBibG9jayBIVE1MLiAqKVxuXG5cbiAgICAoKiBpbmxpbmUgSFRNTCAqKVxuICAgIHwgXyxcbiAgICAgIChMZXNzdGhhbiBhcyB0KVxuICAgICAgOjooKFdvcmQodGFnbmFtZXRvcCkgYXMgdylcbiAgICAgICAgIDo6KChTcGFjZXxTcGFjZXMgX3xHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXylcbiAgICAgICAgICAgIDo6XyBhcyBodG1sX3N0dWZmKSBhcyB0bHgpIC0+XG4gICAgICBpZiAoc3RyaWN0X2h0bWwgJiYgbm90KFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBpbmxpbmVfaHRtbHRhZ3Nfc2V0KSlcbiAgICAgIHx8IG5vdChibGluZF9odG1sIHx8IFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBodG1sdGFnc19zZXQpXG4gICAgICB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bHhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHJlYWRfaHRtbCgpID1cbiAgICAgICAgICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgQXdhaXRpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgICAgIHwgT3BlbiBvZiBzdHJpbmdcbiAgICAgICAgICAgIHR5cGUgaW50ZXJtID1cbiAgICAgICAgICAgICAgfCBIVE1MIG9mIHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogaW50ZXJtIGxpc3RcbiAgICAgICAgICAgICAgfCBUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgTUQgb2YgT21kX3JlcHJlc2VudGF0aW9uLnRcbiAgICAgICAgICAgIGxldCByZWMgbWRfb2ZfaW50ZXJtX2xpc3QgPSBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICBIdG1sKHQsIGEsIG1kX29mX2ludGVybV9saXN0KExpc3QucmV2IGMpKTo6bWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT4gbWQgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFRPS0VOUyB0MTo6VE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChUT0tFTlModDFAdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIG1haW5faW1wbCB+aHRtbCBbXSBbV29yZCBcIlwiXSAodClcbiAgICAgICAgICAgICAgICBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0kvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0kvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgVC5UT0tFTlNbeF06OmJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3MTggbG9vcCB0YWdzdGF0dXM9KCVzKSAlc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoKiBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpIGJvZHk9KCVzKSAlc1xcbiUhXCIgKilcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSkgKilcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpOjpfIHdoZW4gU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBOb3QgZW5vdWdoIHRvIHJlYWQgZm9yIGlubGluZSBIVE1MXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IExlc3N0aGFucyBuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKTo6dGFnc3RhdHVzXG4gICAgICAgICAgICAgICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0YWduYW1lLCBhdHRycywgW10pXSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbjtTbGFzaF06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBtdWx0aXBsZSBuZXdsaW5lcyBhcmUgbm90IHRvIGJlIHNlZW4gaW4gaW5saW5lIEhUTUwgKilcbiAgICAgICAgICAgIHwgTmV3bGluZXMgXyA6OiBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIE11bHRpcGxlIGxpbmVzIGluIGlubGluZSBIVE1MXFxuJSFcIjtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBfIC0+IHdhcm4gXCJtdWx0aXBsZSBuZXdsaW5lcyBpbiBpbmxpbmUgSFRNTFwiOyBOb25lKVxuICAgICAgICAgICAgKCogbWF5YmUgY29kZSAqKVxuICAgICAgICAgICAgfCAoQmFja3F1b3RlIHwgQmFja3F1b3RlcyBfIGFzIGIpOjp0bCAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IG5vIGNvZGVcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IG5vbmVcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbGV0J3MgdHJ5XFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJjb2RlIFtdIFtTcGFjZV0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lICgoKENvZGUgXzo6XykgYXMgYyksIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtZWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuTUQgYzo6Ym9keSkgW10gdGFnc3RhdHVzIGxcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IGZhaWxlZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbYl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0bFxuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTM2IHByb3Blcmx5IGNsb3NpbmcgJVMgdG9rZW5zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHQgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgU29tZShib2R5LFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbnMobi0xKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0b2tlbnMpKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE0NCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAxXFxuJSFcIiB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tnO3c7U2xhc2g7TGVzc3RoYW5dOjpib2R5KSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE0OSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAyXFxuJSFcIiB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE1NCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZ2x5IGNsb3Npbmcgbm90aGluZyB3aXRoICVTIDNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OihXb3JkKHRhZ25hbWUpIGFzIHdvcmQpOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIGJsaW5kX2h0bWxcbiAgICAgICAgICAgICAgICB8fCAoc3RyaWN0X2h0bWwgJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGlubGluZV9odG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgICAgfHwgKG5vdCBzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbHRhZ3Nfc2V0KVxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSA8JXMuLi5cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCkgOjogX1xuICAgICAgICAgICAgICAgICAgd2hlbiB0IDw+IHRhZ25hbWUgJiYgU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzk2IHRhZyAlcywgYXR0cnM9W11cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW3dvcmQ7TGVzc3RoYW5dOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShiQGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogZW5kIG9mIG9wZW5pbmcgdGFnICopXG4gICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTg1IGVuZCBvZiBvcGVuaW5nIHRhZyB0b2tlbnM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiB0YWdzdGF0dXMgYXMgdHMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODYgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdWxkbid0IGZpbmQgYW4gY2xvc2luZyB0YWcgZm9yICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0O1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgNDE5MiBGb3VuZCBhIGNsb3NpbmcgdGFnICVzIHRzPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoVC5IVE1MKHQsIGF0dHJzLCBiKTo6Ym9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogTm90ZTogd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgdmFsdWUgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyc10gaGVyZSBiZWNhdXNlIGluIHdlIGhhdmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ3N0YXR1c10gbWF0Y2hlcyBbVC5PcGVuIF8gOjogX10gYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVyZSdzIGEgY29ycmVzcG9uZGluZyBmaWx0ZXIgdGhhdCB3aWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGNhcmUgb2YgYXR0cnMgdGhhdCB3aWxsIHRha2UgY2FyZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIChULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5KSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgVHVybnMgb3V0IGFuIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbR3JlYXRlcnRoYW5dOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDIwMiB0YWdzdGF0dXM9W11cXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgKCogbWF5YmUgYXR0cmlidXRlICopXG4gICAgICAgICAgICB8IChDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpOjp0b2tlbnNcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICA6OihDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpXG4gICAgICAgICAgICAgIDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEF0dHJpYnV0ZV92YWx1ZSA9IHN0cnVjdFxuICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gRW1wdHkgb2YgbmFtZSB8IE5hbWVkIG9mIG5hbWUgfCBWb2lkXG4gICAgICAgICAgICAgICAgICBhbmQgbmFtZSA9IHN0cmluZ1xuICAgICAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgICAgIGxldCBvcGVuIEF0dHJpYnV0ZV92YWx1ZSBpblxuICAgICAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyaWJ1dGUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSkgOjogdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IChHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXykgOjogXyBhcyB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgRXF1YWwgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIE5hbWVkKEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBDb2xvbiB8IENvbG9ucyBfIHwgVW5kZXJzY29yZSB8IFVuZGVyc2NvcmVzIF8gfCBXb3JkIF9cbiAgICAgICAgICAgICAgICAgIHwgTnVtYmVyIF8gfCBNaW51cyB8IE1pbnVzcyBfIHwgRG90IHwgRG90cyBfIGFzIHQgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfYXR0cmlidXRlICh0OjphY2N1KSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgdG9rZW5zIC0+IFZvaWQsIHRva2Vuc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmFjdF9hdHRyaWJ1dGUgW3RdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFbXB0eSBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICgqIGF0dHJpYnV0ZSB3aXRoIG5vIGV4cGxpY2l0IHZhbHVlICopXG4gICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBOb25lKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IE5hbWVkIGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoMzk1NykgJXM9JVMgJXNcXG4lIVwiIGF0dHJpYnV0ZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBWb2lkLCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjp4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNoO3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICB8IEJhY2tzbGFzaHMobik6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICYmIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0JhY2tzbGFzaHMobik7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDQxNjEpIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgKHg6OnRva2VucykpO1xuICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICg0Mjg5KSBzcGFjZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIGxvb3AgYm9keSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDQyOTQpIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2sgd2l0aCB0b2tlbnM9JXMgYW5kIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyk7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gcmVhZCBhbiBvcGVuIEhUTUwgdGFnICglcyksIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgfCBULk9wZW4gdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIGZpbmQgdGhlIGNsb3NpbmcgSFRNTCB0YWcgZm9yICVzLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgaW4gbWF0Y2ggbG9vcCBbXSBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaHRtbCwgcmVzdCkgLT5cbiAgICAgICAgICAgIFNvbWUoVC5tZF9vZl9pbnRlcm1fbGlzdCBodG1sLCByZXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIHJlYWRfaHRtbCgpIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaCwgcmVzdCkgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKGhAcikgW0dyZWF0ZXJ0aGFuXSByZXN0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgdGV4dCA9IEwuc3RyaW5nX29mX3Rva2VuIHQgaW5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQodGV4dCBeIHRhZ25hbWV0b3ApOjpyKSBbd10gaHRtbF9zdHVmZlxuICAgICAgICBlbmRcbiAgICAoKiAvIGVuZCBvZiBpbmxpbmUgSFRNTC4gKilcblxuICAgICgqIDwgOiBlbWFpbHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2F1dG9lbWFpbCByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICgqIGxpbmUgYnJlYWtzICopXG4gICAgfCBfLCBOZXdsaW5lOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6OnIpIFtOZXdsaW5lXSB0bFxuICAgIHwgXywgTmV3bGluZXMgXzo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKE5MOjpOTDo6cikgW05ld2xpbmVdIHRsXG5cbiAgICAoKiBbICopXG4gICAgfCBfLCAoT2JyYWNrZXQgYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9saW5rIG1haW5fbG9vcCByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWF0Y2ggbWF5YmVfcmVmZXJlbmNlIG1haW5fbG9vcCByYyByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICgqIGltZyAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9ufEV4Y2xhbWF0aW9ucyBfIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdKC9wYXRoL3RvL2ltZy5qcGcpICopXG4gICAgICAodHJ5XG4gICAgICAgICBiZWdpblxuICAgICAgICAgICBsZXQgYiwgdGwgPSByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSB0bCBpblxuICAgICAgICAgICAoKiBuZXcgbGluZXMgdGhlcmUgYXJlIGFsbG93ZWQgKilcbiAgICAgICAgICAgbGV0IHIgKCogdXBkYXRlZCByZXN1bHQgKikgPSBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyAwIC0+IFRleHQgXCIhXCIgOjogclxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnIScpIDo6IHJcbiAgICAgICAgICAgICB8IF8gLT4gciBpblxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIHRyeSBTb21lKHJlYWRfdW50aWxfc3BhY2UgfmJxOmZhbHNlIH5ub19ubDp0cnVlIGIpXG4gICAgICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IE5vbmVcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICB8IFNvbWUodXJsLCB0bHMpIC0+XG4gICAgICAgICAgICAgbGV0IHRpdGxlLCBzaG91bGRfYmVfZW1wdHlfbGlzdCA9XG4gICAgICAgICAgICAgICByZWFkX3VudGlsX2RxIH5icTp0cnVlIChzbmQgKHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGxzKSkgaW5cbiAgICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIHRpdGxlKSA6OiByKSBbQ3BhcmVudGhlc2lzXSB0bFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGIgaW5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoXCJcIiwgdXJsLCBcIlwiKSA6OiByKSBbQ3BhcmVudGhlc2lzXSB0bFxuICAgICAgICAgZW5kXG4gICAgICAgd2l0aFxuICAgICAgIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgICgqIGltZyByZWYgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbiBhcyB0KVxuICAgICAgICAgOjpPYnJhY2tldDo6Q2JyYWNrZXQ6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogcmVmIGltYWdlIGluc2VydGlvbiB3aXRoIG5vIFwiYWx0XCIgKilcbiAgICAgICgqICFbXVtyZWZdICopXG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgaWQsIHRsID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSB+bm9fbmw6dHJ1ZSB0bCBpblxuICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgdGwgbGV4ZW1lcyBpblxuICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGlkIGluXG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgXCJcIiwgZmFsbGJhY2spIDo6IHIpIFtDYnJhY2tldF0gdGxcbiAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cblxuICAgICgqIGltZyAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9ufEV4Y2xhbWF0aW9ucyBfIGFzIHQpOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICgqIGltYWdlIGluc2VydGlvbiB3aXRoIFwiYWx0XCIgKilcbiAgICAgICgqICFbQWx0IHRleHRdKC9wYXRoL3RvL2ltZy5qcGcgXCJPcHRpb25hbCB0aXRsZVwiKSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSB0bCB3aXRoXG4gICAgICAgICB8IGFsdCwgT3BhcmVudGhlc2lzOjpudGwgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBsZXQgYWx0ID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFsdCBpblxuICAgICAgICAgICAgICBsZXQgcGF0aF90aXRsZSwgcmVzdCA9XG4gICAgICAgICAgICAgICAgcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgbnRsIGluXG4gICAgICAgICAgICAgIGxldCBwYXRoLCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICByZWFkX3VudGlsX3NwYWNlIH5icTp0cnVlIH5ub19ubDp0cnVlIHBhdGhfdGl0bGVcbiAgICAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gcGF0aF90aXRsZSwgW10gaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlLCBub3RoaW5nID1cbiAgICAgICAgICAgICAgICBpZiB0aXRsZSA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICByZWFkX3VudGlsX2RxIH5icTp0cnVlIChzbmQocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0aXRsZSkpXG4gICAgICAgICAgICAgICAgZWxzZSBbXSwgW10gaW5cbiAgICAgICAgICAgICAgaWYgbm90aGluZyA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uOyAoKiBjYXVnaHQgcmlnaHQgYmVsb3cgKilcbiAgICAgICAgICAgICAgbGV0IHIgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgICAgIGxldCBwYXRoID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHBhdGggaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhhbHQsIHBhdGgsIHRpdGxlKSA6OiByKSBbQ3BhcmVudGhlc2lzXSByZXN0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvblxuICAgICAgICAgICAgKCogaWYgTkxfZXhjZXB0aW9uIHdhcyByYWlzZWQsIHRoZW4gZmFsbCBiYWNrIHRvIFwidGV4dFwiICopXG4gICAgICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgKVxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjpXb3JkKGlkKTo6Q2JyYWNrZXQ6Om50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooU3BhY2V8U3BhY2VzIF8pOjpXb3JkKGlkKTo6Q2JyYWNrZXQ6Om50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooU3BhY2V8U3BhY2VzIF8pOjpXb3JkKGlkKTo6KFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICAgIDo6Q2JyYWNrZXQ6Om50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjpXb3JkKGlkKTo6KFNwYWNlfFNwYWNlcyBfKTo6Q2JyYWNrZXQ6Om50bCAtPlxuICAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCBudGwgbGV4ZW1lcyBpblxuICAgICAgICAgICBsZXQgYWx0ID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFsdCBpblxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgYWx0LCBmYWxsYmFjayk6OnIpIFtDYnJhY2tldF0gbnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OigoTmV3bGluZXxTcGFjZXxTcGFjZXMgX3xXb3JkIF98TnVtYmVyIF8pOjpfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBudGwpIC0+XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgbnRsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSwgcmVzdCAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICAgIHwgaWQsIHJlc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZXN0IGxleGVtZXMgaW5cbiAgICAgICAgICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWx0ID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFsdCBpblxuICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cilcbiAgICAgICAgICAgICAgICAgIFtDYnJhY2tldF1cbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgZW5kXG4gICAgICAgd2l0aFxuICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICB8IF8sXG4gICAgICAoQXR8QmFyfENhcmV0fENicmFjZXxDb2xvbnxDb21tYXxDcGFyZW50aGVzaXN8Q2JyYWNrZXR8RG9sbGFyXG4gICAgICB8RG90fERvdWJsZXF1b3RlfEV4Y2xhbWF0aW9ufEVxdWFsfE1pbnVzfE9icmFjZXxPcGFyZW50aGVzaXNcbiAgICAgIHxQZXJjZW50fFBsdXN8UXVlc3Rpb258UXVvdGV8U2VtaWNvbG9ufFNsYXNofFRhYnxUaWxkZVxuICAgICAgfEdyZWF0ZXJ0aGFuIGFzIHQpOjp0bFxuICAgICAgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuICAgIHwgXywgKE51bWJlciBfICBhcyB0KTo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcblxuICAgIHwgXywgKEF0cyBfIHwgQmFycyBfIHwgQ2FyZXRzIF8gfCBDYnJhY2VzIF8gfCBDYnJhY2tldHMgXyB8IENvbG9ucyBfXG4gICAgICAgICB8IENvbW1hcyBfIHwgQ3BhcmVudGhlc2lzcyBfIHwgRG9sbGFycyBfIHwgRG90cyBfIHwgRG91YmxlcXVvdGVzIF9cbiAgICAgICAgIHwgRXF1YWxzIF8gfCBFeGNsYW1hdGlvbnMgXyB8IEdyZWF0ZXJ0aGFucyBfIHwgTGVzc3RoYW5zIF9cbiAgICAgICAgIHwgTWludXNzIF8gfCBPYnJhY2VzIF8gfCBPYnJhY2tldHMgXyB8IE9wYXJlbnRoZXNpc3MgX1xuICAgICAgICAgfCBQZXJjZW50cyBfIHwgUGx1c3MgXyB8IFF1ZXN0aW9ucyBfIHwgUXVvdGVzIF8gfCBTZW1pY29sb25zIF9cbiAgICAgICAgIHwgU2xhc2hzIF8gfCBTdGFycyBfIHwgVGFicyBfIHwgVGlsZGVzIF8gfCBVbmRlcnNjb3JlcyBfIGFzIHRrKVxuICAgICAgICAgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCB0azAsIHRrcyA9IEwuc3BsaXRfZmlyc3QgdGsgaW5cbiAgICAgICAgICBsZXQgdGV4dCA9IEwuc3RyaW5nX29mX3Rva2VuIHRrMCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgdGV4dCA6OiByKSBbdGswXSAodGtzIDo6IHRsKVxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcblxuXG4gIGFuZCBtYWluX2ltcGwgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGwgaHRtbD0lYlxcbiUhXCIgaHRtbDsgKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBMaXN0LnJldiAobWFpbl9sb29wX3JldiB+aHRtbCByIHByZXZpb3VzIGxleGVtZXMpXG5cbiAgYW5kIG1haW5fbG9vcCA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGwgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzXG5cbiAgYW5kIG1haW5fbG9vcF9yZXYgPyhodG1sPWZhbHNlKSAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuXG4gIGxldCBtYWluX3BhcnNlIGxleGVtZXMgPVxuICAgIG1haW5fbG9vcCBbXSBbXSAodGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcylcblxuICBsZXQgcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9wYXJzZSBsZXhlbWVzXG5cbmVuZFxuXG5sZXQgZGVmYXVsdF9wYXJzZSA/KGV4dGVuc2lvbnM9W10pID8oZGVmYXVsdF9sYW5nPVwiXCIpIGxleGVtZXMgPVxuICBsZXQgZSA9IGV4dGVuc2lvbnMgYW5kIGQgPSBkZWZhdWx0X2xhbmcgaW5cbiAgbGV0IG1vZHVsZSBFID0gRGVmYXVsdF9lbnYoVW5pdCkgaW5cbiAgbGV0IG1vZHVsZSBNID1cbiAgICBNYWtlKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFXG4gICAgICBsZXQgZXh0ZW5zaW9ucyA9IGVcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBkXG4gICAgZW5kKVxuICBpblxuICBNLm1haW5fcGFyc2UgbGV4ZW1lc1xuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBZb3Ugc2hvdWxkIGVpdGhlciB1c2UgdGhpcyBtb2R1bGUgb3IgT21kX2xleGVyLCBub3QgYm90aC5cbiAgICBUaGlzIG1vZHVsZSBpbmNsdWRlcyBPbWRfbGV4ZXIuXG4qKVxuXG5pbmNsdWRlIE9tZF9sZXhlclxuXG5sZXQgbGV4X2Zyb21faW5jaGFubmVsIGljID1cbiAgKCogTWFpbnRlbmFuY2UtZWFzaW5lc3MtZHJpdmVuIGltcGxlbWVudGF0aW9uLiAqKVxuICBsZXQgaWNfY29udGVudCA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAoaW5wdXRfY2hhciBpYylcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYiBpblxuICBsZXggaWNfY29udGVudFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogT01EOiBNYXJrZG93biB0b29sIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTQgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZTogIElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGh0bWwgPSBodG1sX25vZGUgbGlzdFxuXG5hbmQgaHRtbF9ub2RlID1cbiAgfCBOb2RlIG9mIG5vZGVuYW1lICogYXR0cmlidXRlcyAqIGh0bWxcbiAgfCBEYXRhIG9mIHN0cmluZ1xuICB8IFJhd2RhdGEgb2Ygc3RyaW5nXG4gIHwgQ29tbWVudCBvZiBzdHJpbmdcblxuYW5kIG5vZGVuYW1lID0gc3RyaW5nXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIGF0dHJpYnV0ZSA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxubGV0IHRvX3N0cmluZyBodG1sID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHBwIGYgPSBQcmludGYuYnByaW50ZiBiIGYgaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IE5vZGUobm9kZW5hbWUsIGF0dHJpYnV0ZXMsIGh0bWwpIC0+XG4gICAgICBwcCBcIjwlc1wiIG5vZGVuYW1lO1xuICAgICAgcHBhIGF0dHJpYnV0ZXM7XG4gICAgICBwcCBcIj5cIjtcbiAgICAgIExpc3QuaXRlciBsb29wIGh0bWw7XG4gICAgICBwcCBcIjwvJXM+XCIgbm9kZW5hbWVcbiAgICB8IERhdGEgcyAtPiBwcCBcIiVzXCIgc1xuICAgIHwgUmF3ZGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBDb21tZW50IGMgLT4gcHAgXCI8IS0tICVzIC0tPlwiIGNcbiAgYW5kIHBwYSBhdHRycyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICAgIHBwIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgICBlbHNlIGlmIG5vdCAoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgcHAgXCIgJXM9XFxcIlwiIGE7XG4gICAgICAgICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHYgLSAxIGRvXG4gICAgICAgICAgICAgICAgbWF0Y2ggdi5baV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgJ1wiJyAtPiBwcCBcIiZxdW90O1wiXG4gICAgICAgICAgICAgICAgfCBjICAgIC0+IHBwIFwiJWNcIiBjXG4gICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgIHBwIFwiXFxcIlwiXG4gICAgICAgICAgICApXG4gICAgICAgIHwgYSwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzXG4gIGluXG4gIExpc3QuaXRlciBsb29wIGh0bWw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5pbmNsdWRlIE9tZF9yZXByZXNlbnRhdGlvblxuaW5jbHVkZSBPbWRfYmFja2VuZFxuXG5sZXQgb2ZfaW5wdXQgbGV4ID9leHRlbnNpb25zOmUgP2RlZmF1bHRfbGFuZzpkIHMgPVxuICBsZXQgbW9kdWxlIEUgPSBPbWRfcGFyc2VyLkRlZmF1bHRfZW52KHN0cnVjdCBlbmQpIGluXG4gIGxldCBtb2R1bGUgUGFyc2VyID0gT21kX3BhcnNlci5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBFXG4gICAgICBsZXQgZXh0ZW5zaW9ucyA9IG1hdGNoIGUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gRS5leHRlbnNpb25zXG4gICAgICBsZXQgZGVmYXVsdF9sYW5nID0gbWF0Y2ggZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmRlZmF1bHRfbGFuZ1xuICAgIGVuZFxuICApIGluXG4gIGxldCBtZCA9XG4gICAgUGFyc2VyLnBhcnNlIChsZXggcylcbiAgaW5cbiAgUGFyc2VyLm1ha2VfcGFyYWdyYXBocyBtZFxuXG5sZXQgb2Zfc3RyaW5nID0gb2ZfaW5wdXQgT21kX2xleGVyLmxleFxubGV0IG9mX2JpZ2FycmF5ID0gb2ZfaW5wdXQgT21kX2xleGVyLmxleF9iaWdhcnJheVxuXG5sZXQgdG9faHRtbCA6XG4gID9vdmVycmlkZTooT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgLT4gc3RyaW5nIG9wdGlvbikgLT5cbiAgP3BpbmRlbnQ6Ym9vbCAtPlxuICA/bmwyYnI6Ym9vbCAtPlxuICA/Y3M6Y29kZV9zdHlsaXN0IC0+XG4gIHQgLT5cbiAgc3RyaW5nXG4gID1cbiAgaHRtbF9vZl9tZFxuXG5sZXQgdG9fdGV4dCA6IHQgLT4gc3RyaW5nID0gdGV4dF9vZl9tZFxuXG5sZXQgdG9fbWFya2Rvd24gOiB0IC0+IHN0cmluZyA9IG1hcmtkb3duX29mX21kXG5cbmxldCBodG1sX29mX3N0cmluZyAoaHRtbDpzdHJpbmcpIDogc3RyaW5nID1cbiAgaHRtbF9vZl9tZCAoT21kX3BhcnNlci5kZWZhdWx0X3BhcnNlIChPbWRfbGV4ZXIubGV4IGh0bWwpKVxuXG5cbmxldCByZWMgc2V0X2RlZmF1bHRfbGFuZyBsYW5nID0gZnVuY3Rpb25cbiAgfCBDb2RlKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGUobGFuZywgY29kZSkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQ29kZV9ibG9jayhcIlwiLCBjb2RlKSA6OiB0bCAtPiBDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgKCogUmVjdXJzZSBvbiBhbGwgZWxlbWVudHMgZXZlbiB0aG91Z2ggY29kZSAoYmxvY2tzKSBhcmUgbm90IGFsbG93ZWRcbiAgICAgZXZlcnl3aGVyZS4gKilcbiAgfCBIMSB0IDo6IHRsIC0+IEgxKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBIMiB0IDo6IHRsIC0+IEgyKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBIMyB0IDo6IHRsIC0+IEgzKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBINCB0IDo6IHRsIC0+IEg0KHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBINSB0IDo6IHRsIC0+IEg1KHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBINiB0IDo6IHRsIC0+IEg2KHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBQYXJhZ3JhcGggdCA6OiB0bCAtPiBQYXJhZ3JhcGgoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBFbXBoIHQgOjogdGwgLT4gRW1waChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQm9sZCB0IDo6IHRsIC0+IEJvbGQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVsIHQgOjogdGwgLT4gVWwoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2wgdCA6OiB0bCAtPiBPbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVbHAgdCA6OiB0bCAtPiBVbHAoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IE9scCB0IDo6IHRsIC0+IE9scChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVXJsKGhyZWYsIHQsIHRpdGxlKSA6OiB0bCAtPiBVcmwoaHJlZiwgc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQsIHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCbG9ja3F1b3RlIHQgOjogdGwgLT4gQmxvY2txdW90ZShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgKCogRWxlbWVudHMgdGhhdCBkbyBub3QgY29udGFpbiBNYXJrZG93bi4gKilcbiAgfCAoVGV4dCBffENvZGUgX3xDb2RlX2Jsb2NrIF98QnJ8SHJ8Tkx8UmVmIF98SW1nX3JlZiBffFJhdyBffFJhd19ibG9jayBfXG4gICAgfEh0bWwgX3xIdG1sX2Jsb2NrIF98SHRtbF9jb21tZW50IF98SW1nIF98WCBfKSBhcyBlIDo6IHRsIC0+XG4gICAgIGUgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgW10gLT4gW11cblxuXG4oKiBUYWJsZSBvZiBjb250ZW50c1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBHaXZlbiBhIGxpc3Qgb2YgaGVhZGVycyDigJQgaW4gdGhlIG9yZGVyIG9mIHRoZSBkb2N1bWVudCDigJQgZ28gdG8gdGhlXG4gICByZXF1ZXN0ZWQgc3Vic2VjdGlvbi4gIFdlIGZpcnN0IHNlZWsgZm9yIHRoZSBbbnVtYmVyXXRoIGhlYWRlciBhdFxuICAgW2xldmVsXS4gICopXG5sZXQgcmVjIGZpbmRfc3RhcnQgaGVhZGVycyBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnMgPVxuICBtYXRjaCBoZWFkZXJzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IChIMSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDEgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDIgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAyIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEgzIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMyBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINCBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDQgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDUgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA1IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg2IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNiBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IF8gOjogXyAtPiBhc3NlcnQgZmFsc2VcblxuYW5kIGRlYWxfd2l0aF9oZWFkZXIgaF9sZXZlbCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIGlmIGhfbGV2ZWwgPiBsZXZlbCB0aGVuICgqIFNraXAsIHJpZ2h0IFtsZXZlbF0taGVhZGVyIG5vdCB5ZXQgcmVhY2hlZC4gKilcbiAgICBpZiBudW1iZXIgPSAwIHRoZW5cbiAgICAgICgqIEFzc3VtZSBlbXB0eSBzZWN0aW9uIGF0IFtsZXZlbF0sIGRvIG5vdCBjb25zdW1lIHRva2VuLiAqKVxuICAgICAgKG1hdGNoIHN1YnNlY3Rpb25zIHdpdGhcbiAgICAgICB8IFtdIC0+IGhlYWRlcnMgKCogbm8gc3Vic2VjdGlvbiB0byBmaW5kICopXG4gICAgICAgfCBuIDo6IHN1YnNlY3Rpb25zIC0+IGZpbmRfc3RhcnQgaGVhZGVycyAobGV2ZWwgKyAxKSBuIHN1YnNlY3Rpb25zKVxuICAgIGVsc2UgZmluZF9zdGFydCB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgZWxzZSBpZiBoX2xldmVsID0gbGV2ZWwgdGhlbiAoXG4gICAgKCogQXQgcHJvcGVyIFtsZXZlbF0uICBIYXZlIHdlIHJlYWNoZWQgdGhlIFtudW1iZXJdIG9uZT8gKilcbiAgICBpZiBudW1iZXIgPD0gMSB0aGVuIChcbiAgICAgIG1hdGNoIHN1YnNlY3Rpb25zIHdpdGhcbiAgICAgIHwgW10gLT4gdGwgKCogbm8gc3Vic2VjdGlvbiB0byBmaW5kICopXG4gICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCB0bCAobGV2ZWwgKyAxKSBuIHN1YnNlY3Rpb25zXG4gICAgKVxuICAgIGVsc2UgZmluZF9zdGFydCB0bCBsZXZlbCAobnVtYmVyIC0gMSkgc3Vic2VjdGlvbnNcbiAgKVxuICBlbHNlICgqIGhfbGV2ZWwgPCBsZXZlbCAqKVxuICAgIFtdICgqIFNvdWdodCBbbGV2ZWxdIGhhcyBub3QgYmVlbiBmb3VuZCBpbiB0aGUgY3VycmVudCBzZWN0aW9uICopXG5cbigqIEFzc3VtZSB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBoZWFkZXJzIHdlIGFyZSBpbnRlcmVzdGVkIGluLlxuICAgUmV0dXJuIHRoZSBsaXN0IG9mIFRPQyBlbnRyaWVzIGZvciBbbWluX2xldmVsXSBhbmQgdGhlIFtoZWFkZXJzXVxuICAgbm90IHVzZWQgZm9yIHRoZSBUT0MgZW50cmllcy4gKilcbmxldCByZWMgbWFrZV90b2MgKGhlYWRlcnM6KGVsZW1lbnQqc3RyaW5nKnN0cmluZylsaXN0KSB+bWluX2xldmVsIH5tYXhfbGV2ZWwgPVxuICBpZiBtaW5fbGV2ZWwgPiBtYXhfbGV2ZWwgdGhlbiBbXSwgaGVhZGVyc1xuICBlbHNlIChcbiAgICBtYXRjaCBoZWFkZXJzIHdpdGhcbiAgICB8IFtdIC0+IFtdLCBbXVxuICAgIHwgKEgxIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAxIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDIgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDIgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMyB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMyB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg0IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA0IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDUgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDUgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICApXG5hbmQgdG9jX2VudHJ5IGhlYWRlcnMgaF9sZXZlbCB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIGhfbGV2ZWwgPiBtYXhfbGV2ZWwgdGhlbiAoKiB0b28gZGVlcCwgc2tpcCAqKVxuICAgIG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICBlbHNlIGlmIGhfbGV2ZWwgPCBtaW5fbGV2ZWwgdGhlblxuICAgICgqIHNlY3Rpb24gd2Ugd2FudGVkIHRoZSBUT0MgZm9yIGlzIGZpbmlzaGVkLCBkbyBub3QgY29tc3VtZSB0aGUgdG9rZW4gKilcbiAgICBbXSwgaGVhZGVyc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBtaW5fbGV2ZWwgdGhlbiAoXG4gICAgbGV0IHN1Yl90b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2NfZW50cnkgPSBtYXRjaCBzdWJfdG9jIHdpdGhcbiAgICAgIHwgW10gLT4gW1VybChcIiNcIiBeIGlkLCB0LCBcIlwiKTsgTkxdXG4gICAgICB8IF8gLT4gW1VybChcIiNcIiBeIGlkLCB0LCBcIlwiKTsgTkw7IFVsIHN1Yl90b2M7IE5MXSBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgdG9jX2VudHJ5IDo6IHRvYywgdGxcbiAgKSBlbHNlICgqIGhfbGV2ZWwgPiBtaW5fbGV2ZWwgKilcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyBoZWFkZXJzIH5taW5fbGV2ZWw6KG1pbl9sZXZlbCArIDEpIH5tYXhfbGV2ZWwgaW5cbiAgICBsZXQgdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCBpblxuICAgIFtVbCBzdWJfdG9jXSA6OiB0b2MsIHRsXG5cbmxldCB0b2MgPyhzdGFydD1bXSkgPyhkZXB0aD0yKSBtZCA9XG4gIGlmIGRlcHRoIDwgMSB0aGVuIGludmFsaWRfYXJnIFwiT21kLnRvYzogfmRlcHRoIG11c3QgYmUgPj0gMVwiO1xuICBsZXQgaGVhZGVycyA9IE9tZF9iYWNrZW5kLmhlYWRlcnNfb2ZfbWQgfnJlbW92ZV9oZWFkZXJfbGlua3M6dHJ1ZSBtZCBpblxuICBsZXQgaGVhZGVycyA9IG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IFtdIC0+IGhlYWRlcnNcbiAgICB8IG51bWJlciA6OiBzdWJzZWN0aW9ucyAtPlxuICAgICAgIGlmIG51bWJlciA8IDAgdGhlbiBpbnZhbGlkX2FyZyhcIk9tZC50b2M6IGxldmVsIDEgc3RhcnQgbXVzdCBiZSA+PSAwXCIpO1xuICAgICAgIGZpbmRfc3RhcnQgaGVhZGVycyAxIG51bWJlciBzdWJzZWN0aW9ucyBpblxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggc3RhcnQgaW5cbiAgbGV0IHRvYywgXyA9IG1ha2VfdG9jIGhlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH5taW5fbGV2ZWw6KGxlbiArIDEpIH5tYXhfbGV2ZWw6KGxlbiArIGRlcHRoKSBpblxuICBtYXRjaCB0b2Mgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgXyAtPiBbVWwodG9jKV1cblxubGV0IGFkZF90b2MgP3N0YXJ0ID9kZXB0aCA/dGl0bGUgbWQgPVxuICBsZXQgdG9jID0gdG9jID9zdGFydCA/ZGVwdGggbWQgaW5cbiAgKCogUmVwbGFjZSBcIipUYWJsZSBvZiBjb250ZW50cypcIiB3aXRoIHRoZSBhY3R1YWwgVE9DLiAqKVxuICB0b2NcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG50eXBlIGtleSA9IHN0cmluZztcblxubW9kdWxlIFJlcXVlc3QgPSB7XG4gIFtAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG4gIHR5cGUgdmFsdWUgPSBIYXozbGNvcmUuTW9kZWxSZXN1bHRzLnQ7XG4gIFtAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHZhbHVlO1xuXG4gIGxldCBzZXJpYWxpemUgPSBwcm9ncmFtID0+IHByb2dyYW0gfD4gc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIGxldCBkZXNlcmlhbGl6ZSA9IHNleHAgPT4gc2V4cCB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHRfb2Zfc2V4cDtcbn07XG5cbm1vZHVsZSBSZXNwb25zZSA9IHtcbiAgW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB2YWx1ZSA9IEhhejNsY29yZS5Nb2RlbFJlc3VsdHMudDtcbiAgW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gdmFsdWU7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHIgPT4gciB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubGV0IHdvcmsgPSAocmVzOiBSZXF1ZXN0LnZhbHVlKTogUmVzcG9uc2UudmFsdWUgPT5cbiAgSGF6M2xjb3JlLk1vZGVsUmVzdWx0cy5ydW5fcGVuZGluZyhcbiAgICB+c2V0dGluZ3M9SGF6M2xjb3JlLkNvcmVTZXR0aW5ncy5vbixcbiAgICByZXMsXG4gICk7XG5cbmxldCBvbl9yZXF1ZXN0ID0gKHJlcTogc3RyaW5nKTogdW5pdCA9PlxuICByZXFcbiAgfD4gUmVxdWVzdC5kZXNlcmlhbGl6ZVxuICB8PiB3b3JrXG4gIHw+IFJlc3BvbnNlLnNlcmlhbGl6ZVxuICB8PiBKc19vZl9vY2FtbC5Xb3JrZXIucG9zdF9tZXNzYWdlO1xuXG5sZXQgc3RhcnQgPSAoKSA9PiBKc19vZl9vY2FtbC5Xb3JrZXIuc2V0X29ubWVzc2FnZShvbl9yZXF1ZXN0KTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIFdvcmtlclNlcnZlcjtcblxubGV0IG5hbWUgPSBcIndvcmtlci5qc1wiOyAvLyBXb3JrZXIgZmlsZSBuYW1lXG5sZXQgdGltZW91dER1cmF0aW9uID0gMjAwMDA7IC8vIFdvcmtlciB0aW1lb3V0IGluIG1zXG5cbmxldCBpbml0V29ya2VyID0gKCkgPT4gV29ya2VyLmNyZWF0ZShuYW1lKTtcblxubGV0IHdvcmtlclJlZjogcmVmKEpzLnQoV29ya2VyLndvcmtlcihzdHJpbmcsIHN0cmluZykpKSA9XG4gIHJlZihpbml0V29ya2VyKCkpO1xuXG5sZXQgdGltZW91dElkID0gcmVmKE5vbmUpO1xuXG5sZXQgcmVzdGFydF93b3JrZXIgPSAoKTogdW5pdCA9PiB7XG4gIHdvcmtlclJlZi5jb250ZW50cyMjdGVybWluYXRlO1xuICB3b3JrZXJSZWYuY29udGVudHMgPSBpbml0V29ya2VyKCk7XG59O1xuXG5sZXQgcmVxdWVzdCA9XG4gICAgKFxuICAgICAgcmVxOiBSZXF1ZXN0LnQsXG4gICAgICB+aGFuZGxlcjogUmVzcG9uc2UudCA9PiB1bml0LFxuICAgICAgfnRpbWVvdXQ6IFJlcXVlc3QudCA9PiB1bml0LFxuICAgIClcbiAgICA6IHVuaXQgPT4ge1xuICBsZXQgc2V0dXBXb3JrZXJNZXNzYWdlSGFuZGxlciA9IHdvcmtlciA9PiB7XG4gICAgd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICBEb20uaGFuZGxlcihldnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRpbWVvdXRJZC5jb250ZW50cykge1xuICAgICAgICB8IFNvbWUoaWQpID0+IERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKVxuICAgICAgICB8IE5vbmUgPT4gKClcbiAgICAgICAgfTtcbiAgICAgICAgdGltZW91dElkLmNvbnRlbnRzID0gTm9uZTsgLyogQ2xlYXIgdGltZW91dCBhZnRlciByZXNwb25zZSAqL1xuICAgICAgICBldnQjIy5kYXRhIHw+IFJlc3BvbnNlLmRlc2VyaWFsaXplIHw+IGhhbmRsZXI7XG4gICAgICAgIEpzLl90cnVlO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLyogSWYgdGhlcmUncyBhbiBvbmdvaW5nIHJlcXVlc3QsIHRlcm1pbmF0ZSB0aGUgd29ya2VyIGFuZCByZWluaXRpYWxpemUgKi9cbiAgc3dpdGNoICh0aW1lb3V0SWQuY29udGVudHMpIHtcbiAgfCBTb21lKGlkKSA9PlxuICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKTtcbiAgICByZXN0YXJ0X3dvcmtlcigpO1xuICB8IE5vbmUgPT4gKClcbiAgfTtcblxuICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG5cbiAgd29ya2VyUmVmLmNvbnRlbnRzIyNwb3N0TWVzc2FnZShSZXF1ZXN0LnNlcmlhbGl6ZShyZXEpKTtcblxuICBsZXQgb25UaW1lb3V0ID0gKCk6IHVuaXQgPT4ge1xuICAgIHJlc3RhcnRfd29ya2VyKCk7XG4gICAgc2V0dXBXb3JrZXJNZXNzYWdlSGFuZGxlcih3b3JrZXJSZWYuY29udGVudHMpO1xuICAgIHRpbWVvdXQocmVxKTtcbiAgfTtcblxuICB0aW1lb3V0SWQuY29udGVudHMgPVxuICAgIFNvbWUoXG4gICAgICBEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQoXG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sob25UaW1lb3V0KSxcbiAgICAgICAgZmxvYXRfb2ZfaW50KHRpbWVvdXREdXJhdGlvbiksXG4gICAgICApLFxuICAgICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IGJ1dHRvbiA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24pID0+XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIGNsc3MoW1wiaWNvblwiXSksXG4gICAgICAgIEF0dHIub25fbW91c2Vkb3duKGFjdGlvbiksXG4gICAgICAgIEF0dHIudGl0bGUodG9vbHRpcCksXG4gICAgICBdKSxcbiAgICBbaWNvbl0sXG4gICk7XG5cbmxldCBidXR0b25fbmFtZWQgPSAofnRvb2x0aXA9XCJcIiwgaWNvbiwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcIm5hbWVkLW1lbnUtaXRlbVwiXSksIEF0dHIub25fY2xpY2soYWN0aW9uKV0pLFxuICAgIFtidXR0b24oaWNvbiwgXyA9PiBFZmZlY3QuSWdub3JlKSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuXG5sZXQgYnV0dG9uX2QgPSAofnRvb2x0aXA9XCJcIiwgaWNvbiwgYWN0aW9uLCB+ZGlzYWJsZWQ6IGJvb2wpID0+XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIGNsc3MoW1wiaWNvblwiXSBAIChkaXNhYmxlZCA/IFtcImRpc2FibGVkXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24oXyA9PiB1bmxlc3MoZGlzYWJsZWQsIGFjdGlvbikpLFxuICAgICAgXSksXG4gICAgW2ljb25dLFxuICApO1xuXG5sZXQgbGluayA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCB1cmwpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImljb25cIl0pLFxuICAgIFtcbiAgICAgIGEoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICAgIEF0dHIuW2hyZWYodXJsKSwgdGl0bGUodG9vbHRpcCksIGNyZWF0ZShcInRhcmdldFwiLCBcIl9ibGFua1wiKV0sXG4gICAgICAgICAgKSxcbiAgICAgICAgW2ljb25dLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xuXG5sZXQgdG9nZ2xlID0gKH50b29sdGlwPVwiXCIsIGxhYmVsLCBhY3RpdmUsIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJ0b2dnbGUtc3dpdGNoXCJdIEAgKGFjdGl2ZSA/IFtcImFjdGl2ZVwiXSA6IFtdKSksXG4gICAgICAgIEF0dHIub25fY2xpY2soYWN0aW9uKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgIF0pLFxuICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJ0b2dnbGUta25vYlwiXSksIFt0ZXh0KGxhYmVsKV0pXSxcbiAgKTtcblxubGV0IHRvZ2dsZV9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3RpdmUsIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJuYW1lZC1tZW51LWl0ZW1cIl0gQCAoYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhhY3Rpb24pLFxuICAgICAgXSksXG4gICAgW3RvZ2dsZShpY29uLCBhY3RpdmUsIF8gPT4gRWZmZWN0Lklnbm9yZSksIGRpdihbdGV4dCh0b29sdGlwKV0pXSxcbiAgKTtcblxubGV0IGZpbGVfc2VsZWN0X2J1dHRvbiA9ICh+dG9vbHRpcD1cIlwiLCBpZCwgaWNvbiwgb25faW5wdXQpID0+IHtcbiAgLyogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTcyNzY4L3N0eWxpbmctYW4taW5wdXQtdHlwZS1maWxlLWJ1dHRvbiAqL1xuICBsYWJlbChcbiAgICB+YXR0cj1BdHRyLmZvcl8oaWQpLFxuICAgIFtcbiAgICAgIFZkb21faW5wdXRfd2lkZ2V0cy5GaWxlX3NlbGVjdC5zaW5nbGUoXG4gICAgICAgIH5leHRyYV9hdHRycz1bQXR0ci5jbGFzc18oXCJmaWxlLXNlbGVjdC1idXR0b25cIiksIEF0dHIuaWQoaWQpXSxcbiAgICAgICAgfmFjY2VwdD1bYEV4dGVuc2lvbihcImpzb25cIildLFxuICAgICAgICB+b25faW5wdXQsXG4gICAgICAgICgpLFxuICAgICAgKSxcbiAgICAgIGRpdih+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wiaWNvblwiXSksIEF0dHIudGl0bGUodG9vbHRpcCldKSwgW2ljb25dKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpZCwgaWNvbiwgb25faW5wdXQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wibmFtZWQtbWVudS1pdGVtXCJdKV0pLFxuICAgIFtmaWxlX3NlbGVjdF9idXR0b24oaWQsIGljb24sIG9uX2lucHV0KSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuIiwiLy8gY29waWVkIGZyb20gaGF6ZWxcblxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnM7XG5cbm1vZHVsZSBKU19NQVAgPSB7XG4gIGNsYXNzIHR5cGUgdCAoJ2ssICd2KSA9IHtcbiAgICBwdWIgZ2V0OiAnayA9PiBKcy5tZXRoKEpzLm9wdGRlZigndikpO1xuICAgIHB1YiBoYXM6ICdrID0+IEpzLm1ldGgoYm9vbCk7XG4gICAgcHViIHNldDogKCdrLCAndikgPT4gSnMubWV0aCh0KCdrLCAndikpO1xuICB9O1xufTtcblxubW9kdWxlIEpzTWFwID0ge1xuICB0eXBlIHQoJ2ssICd2KSA9IEpzLnQoSlNfTUFQLnQoJ2ssICd2KSk7XG5cbiAgbGV0IG1rOiAnayAndi4gdW5pdCA9PiB0KCdrLCAndikgPVxuICAgICgpID0+IHtcbiAgICAgIGxldCBjID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NYXA7XG4gICAgICBbJWpzIG5ldyBjXTtcbiAgICB9O1xufTtcblxubW9kdWxlIEpzV2Vha01hcCA9IHtcbiAgdHlwZSB0KCdrLCAndikgPSBKcy50KEpTX01BUC50KCdrLCAndikpO1xuXG4gIGxldCBtazogJ2sgJ3YuIHVuaXQgPT4gdCgnaywgJ3YpID1cbiAgICAoKSA9PiB7XG4gICAgICBsZXQgYyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2Vha01hcDtcbiAgICAgIFslanMgbmV3IGNdO1xuICAgIH07XG59O1xuXG5sZXQgaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uX2ltcGw6IEpzLlVuc2FmZS50b3AgPT4gSnMudChib29sKSA9XG4gIC8vIEJhc2VkIG9uIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzg1MTEyODEvY2hlY2staWYtYS12YWx1ZS1pcy1hbi1vYmplY3QtaW4tamF2YXNjcmlwdFxuICBKcy5VbnNhZmUucHVyZV9qc19leHByKFxuICAgIFwiXG4gIGZ1bmN0aW9uICh2YWwpIHtcbiAgICByZXR1cm4gKHZhbCA9PT0gbnVsbCkgfHwgKHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpICYmICh0eXBlb2YgdmFsICE9PSAnb2JqZWN0Jyk7XG4gIH1cIixcbiAgKTtcblxubGV0IGlzX3ByaW1pdGl2ZV9yZXByZXNlbnRhdGlvbjogJ2EuICdhID0+IGJvb2wgPVxuICB4ID0+IEpzLnRvX2Jvb2woaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uX2ltcGwoT2JqLm1hZ2ljKHgpKSk7XG5cbnR5cGUgdCgnaywgJ3YpID0ge1xuICBwcmltaXRpdmVfa2V5czogSnNNYXAudCgnaywgJ3YpLFxuICBub25fcHJpbWl0aXZlX2tleXM6IEpzV2Vha01hcC50KCdrLCAndiksXG59O1xuXG5sZXQgbWsgPSAoKTogdCgnaywgJ3YpID0+IHtcbiAge3ByaW1pdGl2ZV9rZXlzOiBKc01hcC5taygpLCBub25fcHJpbWl0aXZlX2tleXM6IEpzV2Vha01hcC5taygpfTtcbn07XG5cbmxldCBnZXQgPSAodDogdCgnaywgJ3YpLCBrOiAnayk6IG9wdGlvbigndikgPT4ge1xuICBsZXQgbWFwID1cbiAgICBpZiAoaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uKGspKSB7XG4gICAgICB0LnByaW1pdGl2ZV9rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0Lm5vbl9wcmltaXRpdmVfa2V5cztcbiAgICB9O1xuICBKcy5PcHRkZWYudG9fb3B0aW9uKG1hcCMjZ2V0KGspKTtcbn07XG5cbmxldCBzZXQgPSAodDogdCgnaywgJ3YpLCBrOiAnaywgdjogJ3YpOiB1bml0ID0+IHtcbiAgbGV0IG1hcCA9XG4gICAgaWYgKGlzX3ByaW1pdGl2ZV9yZXByZXNlbnRhdGlvbihrKSkge1xuICAgICAgdC5wcmltaXRpdmVfa2V5cztcbiAgICB9IGVsc2Uge1xuICAgICAgdC5ub25fcHJpbWl0aXZlX2tleXM7XG4gICAgfTtcbiAgaWdub3JlKG1hcCMjc2V0KGssIHYpKTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcblxubGV0IG1rX3NlY29uZGFyeTogc3RyaW5nID0+IFBpZWNlLnQgPVxuICBjb250ZW50ID0+IFNlY29uZGFyeSh7aWQ6IElkLm1rKCksIGNvbnRlbnQ6IFdoaXRlc3BhY2UoY29udGVudCl9KTtcblxubGV0IG1rX3RpbGU6IChGb3JtLnQsIGxpc3QobGlzdChQaWVjZS50KSkpID0+IFBpZWNlLnQgPVxuICAvL1RPRE86IGFzc2VydHNcbiAgKGZvcm0sIGNoaWxkcmVuKSA9PlxuICAgIFRpbGUoe1xuICAgICAgaWQ6IElkLm1rKCksXG4gICAgICBsYWJlbDogZm9ybS5sYWJlbCxcbiAgICAgIG1vbGQ6IGZvcm0ubW9sZCxcbiAgICAgIHNoYXJkczogTGlzdC5tYXBpKChpLCBfKSA9PiBpLCBmb3JtLmxhYmVsKSxcbiAgICAgIGNoaWxkcmVuLFxuICAgIH0pO1xuXG5sZXQgbWtfYW5jZXN0b3I6IChGb3JtLnQsIChsaXN0KFNlZ21lbnQudCksIGxpc3QoU2VnbWVudC50KSkpID0+IEFuY2VzdG9yLnQgPVxuICAvL1RPRE86IGFzc2VydHNcbiAgKGZvcm0sIChsLCBfKSBhcyBjaGlsZHJlbikgPT4ge1xuICAgIGlkOiBJZC5taygpLFxuICAgIGxhYmVsOiBmb3JtLmxhYmVsLFxuICAgIG1vbGQ6IGZvcm0ubW9sZCxcbiAgICBzaGFyZHM6XG4gICAgICBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGZvcm0ubGFiZWwpXG4gICAgICB8PiBVdGlsLkxpc3RVdGlsLnNwbGl0X24oTGlzdC5sZW5ndGgobCkgKyAxKSxcbiAgICBjaGlsZHJlbixcbiAgfTtcblxubGV0IG1rX21vbm90aWxlID0gZm9ybSA9PiBta190aWxlKGZvcm0sIFtdKTsgLy9UT0RPOiBhc3NlcnRzXG5sZXQgaW50ID0gbiA9PiBta19tb25vdGlsZShGb3JtLm1rX2F0b21pYyhFeHAsIG4pKTtcbmxldCBleHAgPSB2ID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKEV4cCwgdikpO1xubGV0IHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoUGF0LCB2KSk7XG5sZXQgbWtfcGFyZW5zX2V4cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfZXhwXCIpKTtcbmxldCBta19mdW4gPSBta190aWxlKEZvcm0uZ2V0KFwiZnVuX1wiKSk7XG5sZXQgbWtfZnVuX2FuY2VzdG9yID0gbWtfYW5jZXN0b3IoRm9ybS5nZXQoXCJmdW5fXCIpKTtcbmxldCBta19wYXJlbnNfYW5jZXN0b3IgPSBta19hbmNlc3RvcihGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX2xldF9hbmNlc3RvciA9IG1rX2FuY2VzdG9yKEZvcm0uZ2V0KFwibGV0X1wiKSk7XG5sZXQgcGx1cyA9IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicGx1c1wiKSk7XG5cbmxldCBsX3NpYmxpbmc6IFNlZ21lbnQudCA9IFtwbHVzLCBHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV07XG5sZXQgcl9zaWJsaW5nOiBTZWdtZW50LnQgPSBbbWtfcGFyZW5zX2V4cChbW2ludChcIjFcIiksIHBsdXMsIGludChcIjJcIildXSldO1xuXG5sZXQgY29udGVudDogU2VnbWVudC50ID0gW2V4cChcImZvb1wiKSwgR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29uY2F2ZX0pXTtcblxubGV0IGFuY2VzdG9yczogQW5jZXN0b3JzLnQgPSBbXG4gIChta19wYXJlbnNfYW5jZXN0b3IoKFtdLCBbXSkpLCAoW21rX2Z1bihbW3BhdChcImJhclwiKV1dKV0sIFtdKSksXG4gIChta19wYXJlbnNfYW5jZXN0b3IoKFtdLCBbXSkpLCAoW21rX2Z1bihbW3BhdChcInRhelwiKV1dKV0sIFtdKSksXG4gIChta19sZXRfYW5jZXN0b3IoKFtbcGF0KFwiZm9vXCIpXV0sIFtdKSksIChbXSwgW2ludChcIjJcIildKSksXG5dO1xuXG5sZXQgYmFja3BhY2s6IEJhY2twYWNrLnQgPSBbU2VsZWN0aW9uLm1rKFtleHAoXCJmb29cIildKV07XG5cbmxldCB6aXBwZXI6IFppcHBlci50ID0ge1xuICBzZWxlY3Rpb246IFNlbGVjdGlvbi5tayhjb250ZW50KSxcbiAgYmFja3BhY2ssXG4gIHJlbGF0aXZlczoge1xuICAgIHNpYmxpbmdzOiAobF9zaWJsaW5nLCByX3NpYmxpbmcpLFxuICAgIGFuY2VzdG9ycyxcbiAgfSxcbiAgY2FyZXQ6IE91dGVyLFxufTtcblxuLy8gVE9ETyBNYWtlIHN1cmUgdXNpbmcgdGhpcyBmb3IgYWxsIHRoZSBmb3JtcyB0aGF0IHNob3VsZCwgbGlrZSB3aWxkIGFuZCBuaWxcbi8vIFRPRE8gU2hvdWxkIHRoaXMgaGF2ZSBpdHMgb3duIElEIGdlbmVyYXRvciBvciBpcyB1c2luZyB0aGUgRXhhbXBsZSBvbmUgZmluZT9cbmxldCBjb25zX2V4cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29uc19leHBcIikpO1xubGV0IGxpc3RfY29uY2F0X2V4cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibGlzdF9jb25jYXRcIikpO1xubGV0IGNvbnNfcGF0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb25zX3BhdFwiKSk7XG5sZXQgc2VxID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjZWxsLWpvaW5cIikpO1xubGV0IGV4cCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKEV4cCwgW10pKSkpO1xubGV0IHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKFBhdCwgW10pKSkpO1xubGV0IHR5cCA9IHQgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdF0sIE1vbGQuKG1rX29wKFR5cCwgW10pKSkpO1xubGV0IHRwYXQgPSB2ID0+IG1rX21vbm90aWxlKEZvcm0ubWsoRm9ybS5zcywgW3ZdLCBNb2xkLihta19vcChUUGF0LCBbXSkpKSk7XG5sZXQgdHlwX3BhdF92YXIgPSB0ID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKFRQYXQsIHQpKTtcbmxldCBta19wYXJlbnNfZXhwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX3BhcmVuc19wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwicGFyZW5zX3BhdFwiKSk7XG5sZXQgbWtfcGFyZW5zX3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfdHlwXCIpKTtcbmxldCBta19saXN0X2V4cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJsaXN0X2xpdF9leHBcIikpO1xubGV0IG1rX2xpc3RfcGF0ID0gbWtfdGlsZShGb3JtLmdldChcImxpc3RfbGl0X3BhdFwiKSk7XG5sZXQgbWtfbGlzdF90eXAgPSBta190aWxlKEZvcm0uZ2V0KFwibGlzdF90eXBcIikpO1xubGV0IGFycm93ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBlLWFycm93XCIpKTtcbmxldCB1bmFyeV9taW51cyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwidW5hcnlfbWludXNcIikpO1xubGV0IHVuYXJ5X25vdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibm90XCIpKTtcbmxldCBwbHVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJwbHVzXCIpKTtcbmxldCBtaW51cyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibWludXNcIikpO1xubGV0IHRpbWVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0aW1lc1wiKSk7XG5sZXQgcG93ZXIgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBvd2VyXCIpKTtcbmxldCBkaXZpZGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImRpdmlkZVwiKSk7XG5sZXQgZXF1YWxzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJlcXVhbHNcIikpO1xubGV0IG5vdF9lcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcIm5vdF9lcXVhbHNcIikpO1xubGV0IGx0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsdFwiKSk7XG5sZXQgbHRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsdGVcIikpO1xubGV0IGd0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJndFwiKSk7XG5sZXQgZ3RlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJndGVcIikpO1xubGV0IGZwbHVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmcGx1c1wiKSk7XG5sZXQgZm1pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmbWludXNcIikpO1xubGV0IGZ0aW1lcyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZnRpbWVzXCIpKTtcbmxldCBmcG93ZXIgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZwb3dlclwiKSk7XG5sZXQgZmRpdmlkZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmRpdmlkZVwiKSk7XG5sZXQgZmVxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmVxdWFsc1wiKSk7XG5sZXQgZm5vdF9lcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZub3RfZXF1YWxzXCIpKTtcbmxldCBmbHQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZsdFwiKSk7XG5sZXQgZmx0ZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmx0ZVwiKSk7XG5sZXQgZmd0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZ3RcIikpO1xubGV0IGZndGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZndGVcIikpO1xubGV0IHNlcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInN0cmluZ19lcXVhbHNcIikpO1xubGV0IHNjb25jYXQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInN0cmluZ19jb25jYXRcIikpO1xubGV0IGxvZ2ljYWxfYW5kID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsb2dpY2FsX2FuZFwiKSk7XG5sZXQgbG9naWNhbF9vciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibG9naWNhbF9vclwiKSk7XG5sZXQgY29tbWFfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb21tYV9leHBcIikpO1xubGV0IGNvbW1hX3BhdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29tbWFfcGF0XCIpKTtcbmxldCBjb21tYV90eXAgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbW1hX3R5cFwiKSk7XG5sZXQgcGlwZWxpbmUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBpcGVsaW5lXCIpKTtcbmxldCBuaWwgPSAoKSA9PiBleHAoXCJbXVwiKTtcbmxldCB0eXBlYW5uID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBlYW5uXCIpKTtcbmxldCBta19mdW4gPSBta190aWxlKEZvcm0uZ2V0KFwiZnVuX1wiKSk7XG5sZXQgbWtfYXBfZXhwID0gbWtfdGlsZShGb3JtLmdldChcImFwX2V4cFwiKSk7XG5sZXQgbWtfYXBfcGF0ID0gbWtfdGlsZShGb3JtLmdldChcImFwX3BhdFwiKSk7XG5sZXQgbWtfbGV0ID0gbWtfdGlsZShGb3JtLmdldChcImxldF9cIikpO1xubGV0IG1rX3R5YWxpYXMgPSBta190aWxlKEZvcm0uZ2V0KFwidHlwZV9hbGlhc1wiKSk7XG5sZXQgbWtfaWYgPSBta190aWxlKEZvcm0uZ2V0KFwiaWZfXCIpKTtcbmxldCBta190ZXN0ID0gbWtfdGlsZShGb3JtLmdldChcInRlc3RcIikpO1xubGV0IG1rX2Nhc2UgPSBta190aWxlKEZvcm0uZ2V0KFwiY2FzZVwiKSk7XG5sZXQgbWtfcnVsZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJydWxlXCIpKTtcbmxldCBta19oaWRlID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9oaWRlXCIpKTtcbmxldCBta19ldmFsID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9ldmFsXCIpKTtcbmxldCBta19wYXVzZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmaWx0ZXJfcGF1c2VcIikpO1xubGV0IG1rX2RlYnVnID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9kZWJ1Z1wiKSk7XG5sZXQgbWtfdW5xdW90ZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJ1bnF1b3RlXCIpKTtcbmxldCBsaW5lYnJlYWsgPSAoKSA9PiBta19zZWNvbmRhcnkoRm9ybS5saW5lYnJlYWspO1xubGV0IHNwYWNlID0gKCkgPT4gbWtfc2Vjb25kYXJ5KEZvcm0uc3BhY2UpO1xuXG5sZXQgbWtfZXhhbXBsZSA9IHN0ciA9PiB7XG4gIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHN0cikpIHtcbiAgfCBOb25lID0+IFtdXG4gIHwgU29tZSh6KSA9PiBaaXBwZXIuemlwKHopXG4gIH07XG59O1xuXG4vKiBJbnQgcGFyYW0gYmVsb3cgc2hvdWxkIGJlIH4gd2lkdGggb2Ygc2lkZWJhciAqL1xubGV0IGFiYnJldmlhdGUgPSBVdGlsLlN0cmluZ1V0aWwuYWJicmV2aWF0ZSgyMCk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbi8vIFRPRE8gTWFrZSB1bmlmaWVkIHdheSBvZiB1c2luZyBjb25zaXN0ZW50IG1ldGF2YXJpYWJsZXMgZm9yIHN5bnRhY3RpYyBmb3Jtc1xuLy8gVE9ETyBVc2UgL3RhdSBpbnN0ZWFkIG9mIHR5IHdoZW4gY2FuIGRvIHRoYXQgYW5kIHN0aWxsIGhhdmUgaGlnaGxpZ2h0aW5nIHdvcmtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBsaXN0X2V4YW1wbGVzID1cbiAgfCBJbnRcbiAgfCBUdXBsZVxuICB8IENvbnMxXG4gIHwgQ29uczI7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZnVuX2V4YW1wbGVzID1cbiAgfCBCYXNpY1xuICB8IFdpbGRcbiAgfCBJbnRMaXRcbiAgfCBGbG9hdExpdFxuICB8IEJvb2xMaXRcbiAgfCBTdHJMaXRcbiAgfCBUcml2XG4gIHwgTGlzdE5pbFxuICB8IExpc3RMaXRcbiAgfCBDb25zSGRcbiAgfCBDb25zU25kXG4gIHwgVmFySW5jclxuICB8IFZhckFuZFxuICB8IFR1cGxlMlxuICB8IFR1cGxlM1xuICB8IEN0clxuICB8IEFwO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxldF9leGFtcGxlcyA9XG4gIHwgQmFzaWNcbiAgfCBXaWxkXG4gIHwgSW50TGl0XG4gIHwgRmxvYXRMaXRcbiAgfCBCb29sTGl0XG4gIHwgU3RyTGl0XG4gIHwgVHJpdlxuICB8IExpc3ROaWxcbiAgfCBMaXN0TGl0XG4gIHwgQ29uc0hkXG4gIHwgQ29uc1NuZFxuICB8IFZhclxuICB8IFR1cGxlMlxuICB8IFR1cGxlM1xuICB8IEN0clxuICB8IEFwO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG51bWVyaWNfYmluX29wX2V4YW1wbGVzID1cbiAgfCBQbHVzXG4gIHwgTWludXNcbiAgfCBUaW1lc1xuICB8IFBvd2VyXG4gIHwgRGl2aWRlXG4gIHwgTGVzc1RoYW5UcnVlXG4gIHwgTGVzc1RoYW5GYWxzZVxuICB8IExlc3NUaGFuRXF1YWxMZXNzXG4gIHwgTGVzc1RoYW5FcXVhbEVxdWFsXG4gIHwgTGVzc1RoYW5FcXVhbEZhbHNlXG4gIHwgR3JlYXRlclRoYW5UcnVlXG4gIHwgR3JlYXRlclRoYW5GYWxzZVxuICB8IEdyZWF0ZXJUaGFuRXF1YWxHcmVhdGVyXG4gIHwgR3JlYXRlclRoYW5FcXVhbEVxdWFsXG4gIHwgR3JlYXRlclRoYW5FcXVhbEZhbHNlXG4gIHwgRXF1YWxGYWxzZVxuICB8IEVxdWFsVHJ1ZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleGFtcGxlX2lkID1cbiAgfCBMaXN0KGxpc3RfZXhhbXBsZXMpXG4gIHwgRnVuKGZ1bl9leGFtcGxlcylcbiAgfCBUdXBsZTFcbiAgfCBUdXBsZTJcbiAgfCBMZXQobGV0X2V4YW1wbGVzKVxuICB8IEZ1bkFwXG4gIHwgQ29uQXBcbiAgfCBJZlRydWVcbiAgfCBJZkZhbHNlXG4gIHwgU2VxQmFzaWNcbiAgfCBTZXFUZXN0XG4gIHwgVGVzdFRydWVcbiAgfCBUZXN0RmFsc2VcbiAgfCBJbnRVbmFyeU1pbnVzXG4gIHwgSW50KG51bWVyaWNfYmluX29wX2V4YW1wbGVzKVxuICB8IEZsb2F0KG51bWVyaWNfYmluX29wX2V4YW1wbGVzKVxuICB8IEFuZEZhbHNlXG4gIHwgQW5kVHJ1ZVxuICB8IE9yRmFsc2VcbiAgfCBPclRydWVcbiAgfCBTdHJpbmdFcXVhbEZhbHNlXG4gIHwgU3RyaW5nRXF1YWxUcnVlXG4gIHwgQ2FzZVdpbGRTaW1wbGVcbiAgfCBDYXNlV2lsZFR1cGxlXG4gIHwgQ2FzZUludFxuICB8IENhc2VCb29sXG4gIHwgUGlwZWxpbmUxXG4gIHwgRmlsdGVyU3RlcFxuICB8IEZpbHRlckV2YWxcbiAgfCBGaWx0ZXJIaWRlXG4gIHwgRmlsdGVyRGVidWdcbiAgfCBGaWx0ZXJTZWxlY3RvcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleGFtcGxlID0ge1xuICBzdWJfaWQ6IGV4YW1wbGVfaWQsXG4gIHRlcm06IFNlZ21lbnQudCxcbiAgbWVzc2FnZTogc3RyaW5nLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwYXRfc3ViX2Zvcm1faWQgPVxuICB8IEJhc2VcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGVcbiAgfCBXaWxkXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nXG4gIHwgVHJpdlxuICB8IExpc3ROaWxcbiAgfCBMaXN0TGl0XG4gIHwgTGlzdENvbnNcbiAgfCBWYXJcbiAgfCBUdXBsZVxuICB8IFR1cGxlMlxuICB8IFR1cGxlM1xuICB8IEN0clxuICB8IEFwO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZvcm1faWQgPVxuICB8IEVtcHR5SG9sZUV4cFxuICB8IE11bHRpSG9sZUV4cFxuICB8IFRyaXZFeHBcbiAgfCBCb29sRXhwXG4gIHwgSW50RXhwXG4gIHwgRmxvYXRFeHBcbiAgfCBTdHJpbmdFeHBcbiAgfCBWYXJFeHBcbiAgfCBDdHJFeHBcbiAgfCBMaXN0RXhwXG4gIHwgQ29uc0V4cFxuICB8IExpc3RDb25jYXRFeHBcbiAgfCBGdW5jdGlvbkV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgVHVwbGVFeHBcbiAgfCBUdXBsZTJFeHBcbiAgfCBUdXBsZTNFeHBcbiAgfCBMZXRFeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IEZ1bkFwRXhwXG4gIHwgQ29uQXBFeHBcbiAgfCBJZkV4cFxuICB8IFNlcUV4cFxuICB8IFRlc3RFeHBcbiAgfCBVbk9wRXhwKFRlcm0uVUV4cC5vcF91bilcbiAgfCBCaW5PcEV4cChUZXJtLlVFeHAub3BfYmluKVxuICB8IENhc2VFeHBcbiAgfCBUeUFsaWFzRXhwXG4gIHwgRW1wdHlIb2xlUGF0XG4gIHwgTXVsdGlIb2xlUGF0XG4gIHwgV2lsZFBhdFxuICB8IEludFBhdFxuICB8IEZsb2F0UGF0XG4gIHwgQm9vbFBhdFxuICB8IFN0clBhdFxuICB8IFRyaXZQYXRcbiAgfCBWYXJQYXRcbiAgfCBDdHJQYXRcbiAgfCBMaXN0TGl0UGF0XG4gIHwgTGlzdE5pbFBhdFxuICB8IENvbnNQYXRcbiAgfCBDb25zMlBhdFxuICB8IFR1cGxlUGF0XG4gIHwgVHVwbGUyUGF0XG4gIHwgVHVwbGUzUGF0XG4gIHwgQXBQYXRcbiAgfCBUeXBBbm5QYXRcbiAgfCBFbXB0eUhvbGVUeXBcbiAgfCBNdWx0aUhvbGVUeXBcbiAgfCBJbnRUeXBcbiAgfCBGbG9hdFR5cFxuICB8IEJvb2xUeXBcbiAgfCBTdHJUeXBcbiAgfCBWYXJUeXBcbiAgfCBMaXN0VHlwXG4gIHwgQXJyb3dUeXBcbiAgfCBBcnJvdzNUeXBcbiAgfCBUdXBsZVR5cFxuICB8IFR1cGxlMFR5cFxuICB8IFR1cGxlMlR5cFxuICB8IFR1cGxlM1R5cFxuICB8IExhYmVsbGVkU3VtVHlwXG4gIHwgU3VtVHlwVW5hcnlDb25zdHJ1Y3RvckRlZlxuICB8IFN1bVR5cE51bGxhcnlDb25zdHJ1Y3RvckRlZlxuICB8IEVtcHR5SG9sZVRQYXRcbiAgfCBNdWx0aUhvbGVUUGF0XG4gIHwgVmFyVFBhdFxuICB8IFBpcGVsaW5lRXhwXG4gIHwgRmlsdGVyUGF1c2VcbiAgfCBGaWx0ZXJFdmFsXG4gIHwgRmlsdGVyRGVidWdcbiAgfCBGaWx0ZXJIaWRlXG4gIHwgRmlsdGVyU2VsZWN0b3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZm9ybSA9IHtcbiAgaWQ6IGZvcm1faWQsXG4gIHN5bnRhY3RpY19mb3JtOiBTZWdtZW50LnQsXG4gIGV4cGFuZGFibGVfaWQ6IG9wdGlvbigoSWQudCwgU2VnbWVudC50KSksXG4gIGV4cGxhbmF0aW9uOiBzdHJpbmcsXG4gIGV4YW1wbGVzOiBsaXN0KGV4YW1wbGUpLFxufTtcblxuLy8gSEFOTkFIIC0gVE9ETzogTm90IHN1cmUgdGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gZm9ybV9pZCAtIG1heWJlIGp1c3Qgb25lIGlkXG4vLyBNQVlCRSBkb24ndCBldmVuIG5lZWQgYW4gaWQgYXQgYWxsIGZvciB0aGUgZ3JvdXAgLSBqdXN0IHVzZSB0aGUgbW9zdCBzcGVjaWZpYyAoMXN0KSBmb3JtIGlkIGluIGZvcm1zXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdyb3VwX2lkID1cbiAgfCBFbXB0eUhvbGVFeHBcbiAgfCBNdWx0aUhvbGVFeHBcbiAgfCBUcml2RXhwXG4gIHwgQm9vbEV4cFxuICB8IEludEV4cFxuICB8IEZsb2F0RXhwXG4gIHwgU3RyaW5nRXhwXG4gIHwgVmFyRXhwXG4gIHwgQ3RyRXhwXG4gIHwgTGlzdEV4cFxuICB8IENvbnNFeHBcbiAgfCBMaXN0Q29uY2F0RXhwXG4gIHwgRnVuY3Rpb25FeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IFR1cGxlRXhwXG4gIHwgVHVwbGUyRXhwXG4gIHwgVHVwbGUzRXhwXG4gIHwgTGV0RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBGdW5BcEV4cFxuICB8IENvbkFwRXhwXG4gIHwgSWZFeHBcbiAgfCBTZXFFeHBcbiAgfCBUZXN0RXhwXG4gIHwgVW5PcEV4cChUZXJtLlVFeHAub3BfdW4pXG4gIHwgQmluT3BFeHAoVGVybS5VRXhwLm9wX2JpbilcbiAgfCBDYXNlRXhwXG4gIHwgVHlBbGlhc0V4cFxuICB8IFBpcGVsaW5lRXhwXG4gIHwgRW1wdHlIb2xlUGF0XG4gIHwgTXVsdGlIb2xlUGF0XG4gIHwgV2lsZFBhdFxuICB8IEludFBhdFxuICB8IEZsb2F0UGF0XG4gIHwgQm9vbFBhdFxuICB8IFN0clBhdFxuICB8IFRyaXZQYXRcbiAgfCBWYXJQYXRcbiAgfCBDdHJQYXRcbiAgfCBMaXN0TGl0UGF0XG4gIHwgTGlzdE5pbFBhdFxuICB8IENvbnNQYXRcbiAgfCBDb25zMlBhdFxuICB8IFR1cGxlUGF0XG4gIHwgVHVwbGUyUGF0XG4gIHwgVHVwbGUzUGF0XG4gIHwgQXBQYXRcbiAgfCBUeXBBbm5QYXRcbiAgfCBFbXB0eUhvbGVUeXBcbiAgfCBNdWx0aUhvbGVUeXBcbiAgfCBJbnRUeXBcbiAgfCBGbG9hdFR5cFxuICB8IEJvb2xUeXBcbiAgfCBTdHJUeXBcbiAgfCBWYXJUeXBcbiAgfCBMaXN0VHlwXG4gIHwgQXJyb3dUeXBcbiAgfCBBcnJvdzNUeXBcbiAgfCBUdXBsZVR5cFxuICB8IFR1cGxlMFR5cFxuICB8IFR1cGxlMlR5cFxuICB8IFR1cGxlM1R5cFxuICB8IExhYmVsbGVkU3VtVHlwXG4gIHwgU3VtVHlwVW5hcnlDb25zdHJ1Y3RvckRlZlxuICB8IFN1bVR5cE51bGxhcnlDb25zdHJ1Y3RvckRlZlxuICB8IEVtcHR5SG9sZVRQYXRcbiAgfCBNdWx0aUhvbGVUUGF0XG4gIHwgVmFyVFBhdFxuICB8IEZpbHRlclBhdXNlXG4gIHwgRmlsdGVyRXZhbFxuICB8IEZpbHRlckRlYnVnXG4gIHwgRmlsdGVySGlkZVxuICB8IEZpbHRlclNlbGVjdG9yO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdyb3VwID0ge1xuICBpZDogZ3JvdXBfaWQsXG4gIGZvcm1zOiBsaXN0KGZvcm0pIC8vIE9yZGVyZWQgLSBtb3JlIHNwZWNpZmljIHRvIGxlc3Mgc3BlY2lmaWNcbn07XG5cbm1vZHVsZSBTaW1wbGUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIGdyb3VwX2lkLFxuICAgIGZvcm1faWQsXG4gICAgYWJzdHJhY3Q6IChTZWdtZW50LnQsIGxpc3QoKElkLnQsIElkLnQpKSksXG4gICAgZXhwbGFuYXRpb246IHN0cmluZyxcbiAgICBleGFtcGxlczogbGlzdChleGFtcGxlKSxcbiAgfTtcblxuICBsZXQgdG9fZ3JvdXAgPVxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgZXhwbGFuYXRpb24sXG4gICAgICAgICAgYWJzdHJhY3Q6IChzeW50YWN0aWNfZm9ybSwgY29sb3JpbmdzKSxcbiAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICBmb3JtX2lkLFxuICAgICAgICAgIGV4YW1wbGVzLFxuICAgICAgICB9OiB0LFxuICAgICAgKSA9PiAoXG4gICAgZXhwbGFuYXRpb24sXG4gICAgY29sb3JpbmdzLFxuICAgIHtcbiAgICAgIGlkOiBncm91cF9pZCxcbiAgICAgIGZvcm1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogZm9ybV9pZCxcbiAgICAgICAgICBzeW50YWN0aWNfZm9ybSxcbiAgICAgICAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgICAgICAgIGV4cGxhbmF0aW9uOiBcIlwiLFxuICAgICAgICAgIGV4YW1wbGVzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICApO1xuXG4gIGxldCBta18xID1cbiAgICAgICgobjogc3RyaW5nLCBpZDogSWQudCksIG1rX2Zvcm06IFBpZWNlLnQgPT4gU2VnbWVudC50KVxuICAgICAgOiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpID0+IHtcbiAgICBsZXQgcCA9IEV4YW1wbGUuZXhwKG4pO1xuICAgIChta19mb3JtKHApLCBbKFBpZWNlLmlkKHApLCBpZCldKTtcbiAgfTtcblxuICBsZXQgbWtfMiA9XG4gICAgICAoXG4gICAgICAgIChuMTogc3RyaW5nLCBpZF8xOiBJZC50KSxcbiAgICAgICAgKG4yOiBzdHJpbmcsIGlkXzI6IElkLnQpLFxuICAgICAgICBta19mb3JtOiAoUGllY2UudCwgUGllY2UudCkgPT4gU2VnbWVudC50LFxuICAgICAgKVxuICAgICAgOiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpID0+IHtcbiAgICBsZXQgKHAxLCBwMikgPSAoRXhhbXBsZS5leHAobjEpLCBFeGFtcGxlLmV4cChuMikpO1xuICAgIChta19mb3JtKHAxLCBwMiksIFsoUGllY2UuaWQocDEpLCBpZF8xKSwgKFBpZWNlLmlkKHAyKSwgaWRfMildKTtcbiAgfTtcblxuICBsZXQgbWtfMyA9XG4gICAgICAoXG4gICAgICAgIChuMTogc3RyaW5nLCBpZF8xOiBJZC50KSxcbiAgICAgICAgKG4yOiBzdHJpbmcsIGlkXzI6IElkLnQpLFxuICAgICAgICAobjM6IHN0cmluZywgaWRfMzogSWQudCksXG4gICAgICAgIG1rX2Zvcm06IChQaWVjZS50LCBQaWVjZS50LCBQaWVjZS50KSA9PiBTZWdtZW50LnQsXG4gICAgICApXG4gICAgICA6IChTZWdtZW50LnQsIGxpc3QoKElkLnQsIElkLnQpKSkgPT4ge1xuICAgIGxldCAocDEsIHAyLCBwMykgPSAoXG4gICAgICBFeGFtcGxlLmV4cChuMSksXG4gICAgICBFeGFtcGxlLmV4cChuMiksXG4gICAgICBFeGFtcGxlLmV4cChuMyksXG4gICAgKTtcbiAgICAoXG4gICAgICBta19mb3JtKHAxLCBwMiwgcDMpLFxuICAgICAgW1xuICAgICAgICAoUGllY2UuaWQocDEpLCBpZF8xKSxcbiAgICAgICAgKFBpZWNlLmlkKHAyKSwgaWRfMiksXG4gICAgICAgIChQaWVjZS5pZChwMyksIGlkXzMpLFxuICAgICAgXSxcbiAgICApO1xuICB9O1xufTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgdmFyX3R5cF9wYXQgPSAobjogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiYCVzYCBiaW5kcyBhIHR5cGUgdmFyaWFibGUuXCI7XG4gIHtcbiAgICBpZDogVmFyVFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW24gfD4gYWJicmV2aWF0ZSB8PiB0cGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB2YXJfdHlwX3BhdHMgPSAobjogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogVmFyVFBhdCxcbiAgZm9ybXM6IFt2YXJfdHlwX3BhdChuKV0sXG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm1vZHVsZSBTZXhwID0gU2V4cGxpYi5TZXhwO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgZW5hYmxlOiBib29sLFxuICAgIGlzX2VkaXRpbmc6IGJvb2wsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGFjdGlvbiA9XG4gICAgfCBUb2dnbGVFbmFibGVcbiAgICB8IFRvZ2dsZUlzRWRpdGluZztcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgaW5wdXQ6IHN0cmluZyxcbiAgcXVlcnlfcmVzdWx0OiBvcHRpb24oc3RyaW5nKSxcbn07XG5cbmxldCBpbml0ID0ge2lucHV0OiBcIlwiLCBxdWVyeV9yZXN1bHQ6IE5vbmV9O1xuXG5sZXQgcmVtb3ZlX2xhc3RfY2hhciA9IChzdHI6IHN0cmluZykgPT5cbiAgaWYgKFN0cmluZy5sZW5ndGgoc3RyKSA+IDApIHtcbiAgICBTdHJpbmcuc3ViKHN0ciwgMCwgU3RyaW5nLmxlbmd0aChzdHIpIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgc3RyO1xuICB9O1xuXG5sZXQgcGVyZm9ybV9hY3Rpb24gPSAobW9kZWw6IHQsIGFjdGlvbjogQWN0aW9uLnQpID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgfCBBY3Rpb24uSW5zZXJ0KHMpID0+IHsuLi5tb2RlbCwgaW5wdXQ6IG1vZGVsLmlucHV0ICsrIHN9XG4gIHwgQWN0aW9uLkRlc3RydWN0KFJpZ2h0KSA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGlucHV0OiByZW1vdmVfbGFzdF9jaGFyKG1vZGVsLmlucHV0KSxcbiAgICB9XG4gIHwgXyA9PiBtb2RlbFxuICB9O1xufTtcblxudHlwZSB1cGRhdGUgPVxuICB8IEVkaXQoQWN0aW9uLnQpO1xuXG5sZXQgdXBkYXRlID0gKG1vZGVsOiB0LCB1cGRhdGU6IHVwZGF0ZSk6IHQgPT5cbiAgc3dpdGNoICh1cGRhdGUpIHtcbiAgfCBFZGl0KGFjdGlvbikgPT4gcGVyZm9ybV9hY3Rpb24obW9kZWwsIGFjdGlvbilcbiAgfTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IGNvZGUgPSAoY29kZTogc3RyaW5nKSA9PiB7XG4gIE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImV4ZXJjaXNlLWNvZGVcIiksIFtOb2RlLnRleHQoY29kZSldKTtcbn07XG5cbmxldCBlcXVpdiA9IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwiIOKJoSBcIildKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gRXhlcmNpc2VVdGlsO1xuXG5sZXQgcHJvbXB0ID1cbiAgZGl2KFtcbiAgICBwKFtcbiAgICAgIHRleHQoXG4gICAgICAgIFwiV3JpdGUgYSByZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGludGVnZXIgaXMgb2RkLiBcIixcbiAgICAgICksXG4gICAgXSksXG4gICAgcChbXG4gICAgICBjb2RlKFwib2RkKG4pXCIpLFxuICAgICAgZXF1aXYsXG4gICAgICBjb2RlKFwidHJ1ZVwiKSxcbiAgICAgIHRleHQoXCIgaWZmIFwiKSxcbiAgICAgIGNvZGUoXCJuXCIpLFxuICAgICAgdGV4dChcIiBpcyBvZGQuXCIpLFxuICAgIF0pLFxuICBdKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSBOb2RlLnQ7XG4gIGxldCBkZWZhdWx0ID0gTm9kZS50ZXh0KFwiVE9ETzogcHJvbXB0XCIpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IG1vZHVsZV9uYW1lID0+XG4gICAgXCJsZXQgcHJvbXB0ID0gXCIgKysgbW9kdWxlX25hbWUgKysgXCJfcHJvbXB0LnByb21wdFxcblwiO1xufTtcblxuaW5jbHVkZSBIYXozbHNjaG9vbC5FeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcbiIsIm9wZW4gSGF6M2xjb3JlXG5cbmxldCBwcm9tcHQgPSBFeF9PZGRseVJlY3Vyc2l2ZV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIk9kZGx5IFJlY3Vyc2l2ZVwiO1xuICAgIHZlcnNpb24gPSAxO1xuICAgIG1vZHVsZV9uYW1lID0gXCJFeF9PZGRseVJlY3Vyc2l2ZVwiO1xuICAgIHByb21wdDtcbiAgICBwb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgeyB0ZXN0X3ZhbGlkYXRpb24gPSAxOyBtdXRhdGlvbl90ZXN0aW5nID0gMTsgaW1wbF9ncmFkaW5nID0gMiB9O1xuICAgIHByZWx1ZGUgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgKCBbXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICBdICkgKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSAoWyAwOyAxIF0sIFsgMiBdKTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gUmlnaHQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA2O1xuICAgICAgICBwcm92aWRlZCA9IDI7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiYWx3YXlzIHJldHVybnMgZmFsc2VcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJhbHdheXMgcmV0dXJucyB0cnVlXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGhpbnQgPSBcImluY29ycmVjdCBiYXNlIGNhc2VcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgaGlkZGVuX3Rlc3RzID1cbiAgICAgIHtcbiAgICAgICAgdGVzdHMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjQyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyN1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgaGludHMgPSBbIFwiemVyb1wiIF07XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcIm9kZCBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcIm9kZFwiKSBdO1xuICB9XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEV4ZXJjaXNlVXRpbDtcblxubGV0IHByb21wdCA9XG4gIGRpdihbXG4gICAgcChbXG4gICAgICBkaXYoW1xuICAgICAgICB0ZXh0KFxuICAgICAgICAgIFwiV3JpdGUgdGVzdHMgY2FzZXMgZm9yLCBhbmQgdGhlbiBpbXBsZW1lbnQsIGEgZnVuY3Rpb24sIHRoYXQgcmVjdXJzaXZlbHkgZGV0ZXJtaW5lcyB0aGUgbnRoIGZpYm9uYWNjaSBudW1iZXIuXCIsXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICBwKFtcbiAgICAgIGNvZGUoXCJmaWIobilcIiksXG4gICAgICBlcXVpdixcbiAgICAgIHRleHQoXCJ0aGUgXCIpLFxuICAgICAgY29kZShcIm5cIiksXG4gICAgICB0ZXh0KFwidGggZmlib25hY2NpIG51bWJlciwgYXNzdW1pbmcgXCIpLFxuICAgICAgY29kZShcIm4gPj0gMC5cIiksXG4gICAgXSksXG4gIF0pO1xuIiwib3BlbiBIYXozbGNvcmVcblxubGV0IHByb21wdCA9IEV4X1JlY3Vyc2l2ZUZpYm9uYWNjaV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIlJlY3Vyc2l2ZSBGaWJvbmFjY2lcIjtcbiAgICB2ZXJzaW9uID0gMTtcbiAgICBtb2R1bGVfbmFtZSA9IFwiRXhfUmVjdXJzaXZlRmlib25hY2NpXCI7XG4gICAgcHJvbXB0O1xuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbiA9XG4gICAgICB7IHRlc3RfdmFsaWRhdGlvbiA9IDE7IG11dGF0aW9uX3Rlc3RpbmcgPSAxOyBpbXBsX2dyYWRpbmcgPSAyIH07XG4gICAgcHJlbHVkZSA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9IChbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdLCBbXSk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDU7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiK1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID0gKFtdLCBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA1O1xuICAgICAgICBwcm92aWRlZCA9IDA7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJuXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgYmFzZSBjYXNlc1wiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgaW1wbCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgcmVjdXJzaW9uXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIGhpZGRlbl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiM1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjZcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMTNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjdcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMzRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIGhpbnRzID0gW107XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcImZpYiBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcImZpYlwiKSBdO1xuICB9XG4iLCJsZXQgZmlsZW5hbWUgPSBcImhhejNsLWRlbW9cIjtcbmxldCBsb2dfa2V5ID0gZmlsZW5hbWU7XG5sZXQgZXhlcmNpc2VzOiBsaXN0KEV4ZXJjaXNlLnNwZWMpID0gW1xuICBFeF9PZGRseVJlY3Vyc2l2ZS5leGVyY2lzZSxcbiAgRXhfUmVjdXJzaXZlRmlib25hY2NpLmV4ZXJjaXNlLFxuXTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZmVlZGJhY2tfb3B0aW9uID1cbiAgfCBUaHVtYnNVcFxuICB8IFRodW1ic0Rvd247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZV9tb2RlbCA9IHtcbiAgc3ViX2lkOiBleGFtcGxlX2lkLFxuICBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9uLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIGZvcm06IGZvcm1faWQsXG4gIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBvcHRpb24oZmVlZGJhY2tfb3B0aW9uKSxcbiAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZV9tb2RlbCksXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdyb3VwX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIHNlbGVjdGVkOiBmb3JtX2lkLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzcGVjaWZpY2l0eV9vcGVuOiBib29sLFxuICBmb3JtczogbGlzdChmb3JtX21vZGVsKSxcbiAgZ3JvdXBzOiBsaXN0KGdyb3VwX21vZGVsKSxcbn07XG5cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZ2hsaWdodCA9XG4gICAgfCBOb0hpZ2hsaWdodFxuICAgIHwgT25lKElkLnQpXG4gICAgfCBBbGw7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvdzogYm9vbCxcbiAgICBzaG93X2ZlZWRiYWNrOiBib29sLFxuICAgIGhpZ2hsaWdodCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGlnaGxpZ2h0X2FjdGlvbiA9XG4gICAgfCBUb2dnbGVcbiAgICB8IEhvdmVyKElkLnQpXG4gICAgfCBVbnNldEhvdmVyO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBhY3Rpb24gPVxuICAgIHwgVG9nZ2xlU2hvd1xuICAgIHwgVG9nZ2xlU2hvd0ZlZWRiYWNrXG4gICAgfCBTZXRIaWdobGlnaHQoaGlnaGxpZ2h0X2FjdGlvbik7XG5cbiAgbGV0IGluaXQgPSB7c2hvdzogdHJ1ZSwgc2hvd19mZWVkYmFjazogZmFsc2UsIGhpZ2hsaWdodDogTm9IaWdobGlnaHR9O1xufTtcblxubGV0IGluaXQ6IHQgPSB7c3BlY2lmaWNpdHlfb3BlbjogZmFsc2UsIGZvcm1zOiBbXSwgZ3JvdXBzOiBbXX07XG5cbmxldCBnZXRfZXhwbGFuYXRpb25fZmVlZGJhY2sgPVxuICAgIChncm91cF9pZDogZ3JvdXBfaWQsIGZvcm1faWQ6IGZvcm1faWQsIG1vZGVsOiB0KTogb3B0aW9uKGZlZWRiYWNrX29wdGlvbikgPT4ge1xuICBsZXQgZm9ybXMgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGZvcm06IGZvcm1fbW9kZWwpID0+IGZvcm0uZ3JvdXAgPT0gZ3JvdXBfaWQgJiYgZm9ybS5mb3JtID09IGZvcm1faWQsXG4gICAgICBtb2RlbC5mb3JtcyxcbiAgICApO1xuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PiBmb3JtLmV4cGxhbmF0aW9uX2ZlZWRiYWNrXG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGZvcm0sIGdyb3VwIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICsrIFwiLCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9leGFtcGxlX2ZlZWRiYWNrID1cbiAgICAoZ3JvdXBfaWQ6IGdyb3VwX2lkLCBmb3JtX2lkOiBmb3JtX2lkLCBleGFtcGxlX2lkOiBleGFtcGxlX2lkLCBtb2RlbDogdClcbiAgICA6IG9wdGlvbihmZWVkYmFja19vcHRpb24pID0+IHtcbiAgbGV0IGZvcm1zID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChmb3JtOiBmb3JtX21vZGVsKSA9PiBmb3JtLmdyb3VwID09IGdyb3VwX2lkICYmIGZvcm0uZm9ybSA9PSBmb3JtX2lkLFxuICAgICAgbW9kZWwuZm9ybXMsXG4gICAgKTtcblxuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PlxuICAgIGxldCBleGFtcGxlcyA9XG4gICAgICBMaXN0LmZpbHRlcihcbiAgICAgICAgKGV4YW1wbGU6IGV4YW1wbGVfbW9kZWwpID0+IGV4YW1wbGUuc3ViX2lkID09IGV4YW1wbGVfaWQsXG4gICAgICAgIGZvcm0uZXhhbXBsZXMsXG4gICAgICApO1xuICAgIHN3aXRjaCAoZXhhbXBsZXMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFtleGFtcGxlXSA9PiBTb21lKGV4YW1wbGUuZmVlZGJhY2spXG4gICAgfCBfID0+XG4gICAgICByYWlzZShcbiAgICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgICBcIkVhY2ggZ3JvdXAsIGZvcm0sIGV4YW1wbGUgdHJpcGxlIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgICArKyBcIiwgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9leGFtcGxlX2lkKGV4YW1wbGVfaWQpKVxuICAgICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGV4YW1wbGVzKSlcbiAgICAgICAgICArKyBcIiB0aW1lc1wiLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH07XG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGdyb3VwLCBmb3JtIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZm9ybV9pZChmb3JtX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9mb3JtX2luX2dyb3VwID0gKGZvcm1faWQ6IGZvcm1faWQsIGdyb3VwOiBncm91cCk6IGZvcm0gPT4ge1xuICBPcHRVdGlsLmdldF9vcl9yYWlzZShcbiAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJGb3JtIFwiXG4gICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICArKyBcIiBpcyBub3QgaW4gZ3JvdXAgXCJcbiAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZ3JvdXBfaWQoZ3JvdXAuaWQpKSxcbiAgICApLFxuICAgIExpc3QuZmluZF9vcHQoKGZvcm06IGZvcm0pID0+IGZvcm0uaWQgPT0gZm9ybV9pZCwgZ3JvdXAuZm9ybXMpLFxuICApO1xufTtcblxubGV0IGdldF9zZWxlY3RlZF9vcHRpb24gPSAoZ3JvdXA6IGdyb3VwLCBtb2RlbDogdCk6IGZvcm0gPT4ge1xuICBsZXQgc2VsZWN0ZWQgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGdyb3VwJzogZ3JvdXBfbW9kZWwpID0+IGdyb3VwJy5ncm91cCA9PSBncm91cC5pZCxcbiAgICAgIG1vZGVsLmdyb3VwcyxcbiAgICApO1xuICBzd2l0Y2ggKHNlbGVjdGVkLCBncm91cC5mb3Jtcykge1xuICB8IChbXSwgW2Zvcm0sIC4uLl9mc10pID0+IGZvcm1cbiAgfCAoW3NlbGVjdGVkXSwgXykgPT4gZ2V0X2Zvcm1faW5fZ3JvdXAoc2VsZWN0ZWQuc2VsZWN0ZWQsIGdyb3VwKVxuICB8IChbX2YxLCBfZjIsIC4uLl9mc10sIF8pID0+XG4gICAgcmFpc2UoXG4gICAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICBcIkVhY2ggZ3JvdXAgc2hvdWxkIGhhdmUgb25seSBvbmUgc2VsZWN0aW9uLCBidXQgZ3JvdXAgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cC5pZCkpXG4gICAgICAgICsrIFwiIGhhcyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHNlbGVjdGVkKSlcbiAgICAgICAgKysgXCJmb3JtcyBzZWxlY3RlZFwiLFxuICAgICAgKSxcbiAgICApXG4gIHwgKF8sIFtdKSA9PlxuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJFYWNoIGdyb3VwIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZm9ybVwiKSlcbiAgfTtcbn07XG5cbmxldCBnZXRfb3B0aW9ucyA9IChncm91cDogZ3JvdXApOiBsaXN0KChmb3JtX2lkLCBTZWdtZW50LnQpKSA9PlxuICBpZiAoTGlzdC5sZW5ndGgoZ3JvdXAuZm9ybXMpIDwgMikge1xuICAgIFtdO1xuICB9IGVsc2Uge1xuICAgIExpc3QucmV2KFxuICAgICAgTGlzdC5tYXAoXG4gICAgICAgIChmb3JtOiBmb3JtKSA9PlxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZvcm0uaWQsXG4gICAgICAgICAgICBzbmQoXG4gICAgICAgICAgICAgIE9wdFV0aWwuZ2V0X29yX3JhaXNlKFxuICAgICAgICAgICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgICAgICAgICBcIkZvcm1zIHVzZWQgZm9yIGdyb3VwIG9wdGlvbnMgbXVzdCBzcGVjaWZ5IGV4cGFuZGFibGVcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGZvcm0uZXhwYW5kYWJsZV9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZ3JvdXAuZm9ybXMsXG4gICAgICApLFxuICAgICk7XG4gIH07XG5cbmxldCBnZXRfZm9ybV9hbmRfb3B0aW9ucyA9XG4gICAgKGdyb3VwOiBncm91cCwgbW9kZWw6IHQpOiAoZm9ybSwgbGlzdCgoZm9ybV9pZCwgU2VnbWVudC50KSkpID0+IHtcbiAgKGdldF9zZWxlY3RlZF9vcHRpb24oZ3JvdXAsIG1vZGVsKSwgZ2V0X29wdGlvbnMoZ3JvdXApKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG1vZGUgPVxuICB8IFNjcmF0Y2hcbiAgfCBEb2N1bWVudGF0aW9uXG4gIHwgRXhlcmNpc2VzO1xuXG5sZXQgbW9kZV9vZl9zdHJpbmcgPSAoczogc3RyaW5nKTogbW9kZSA9PlxuICBzd2l0Y2ggKHMpIHtcbiAgfCBcIlNjcmF0Y2hcIiA9PiBTY3JhdGNoXG4gIHwgXCJEb2N1bWVudGF0aW9uXCIgPT4gRG9jdW1lbnRhdGlvblxuICB8IFwiRXhlcmNpc2VzXCIgPT4gRXhlcmNpc2VzXG4gIHwgXyA9PiBmYWlsd2l0aChcIm1vZGVfb2Zfc3RyaW5nOiB1bmtub3duIG1vZGU6XCIgKysgcylcbiAgfTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBjYXB0aW9uczogYm9vbCxcbiAgc2Vjb25kYXJ5X2ljb25zOiBib29sLFxuICBjb3JlOiBIYXozbGNvcmUuQ29yZVNldHRpbmdzLnQsXG4gIGFzeW5jX2V2YWx1YXRpb246IGJvb2wsXG4gIGNvbnRleHRfaW5zcGVjdG9yOiBib29sLFxuICBpbnN0cnVjdG9yX21vZGU6IGJvb2wsXG4gIGJlbmNobWFyazogYm9vbCxcbiAgZXhwbGFpblRoaXM6IEV4cGxhaW5UaGlzTW9kZWwuU2V0dGluZ3MudCxcbiAgYWNjZXNzaWJpbGl0eTogQWNjZXNzaWJpbGl0eU1vZGVsLlNldHRpbmdzLnQsXG4gIG1vZGUsXG59O1xuXG5sZXQgZml4X2luc3RydWN0b3JfbW9kZSA9IHNldHRpbmdzID0+XG4gIGlmIChzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgJiYgIUV4ZXJjaXNlU2V0dGluZ3Muc2hvd19pbnN0cnVjdG9yKSB7XG4gICAgey4uLnNldHRpbmdzLCBpbnN0cnVjdG9yX21vZGU6IGZhbHNlfTtcbiAgfSBlbHNlIHtcbiAgICBzZXR0aW5ncztcbiAgfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXRlID0gRWRpdG9yLnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IFBlcnNpc3RlbnRaaXBwZXIudDtcblxubGV0IHNjcmF0Y2hfa2V5ID0gbiA9PiBcInNjcmF0Y2hfXCIgKysgbjtcblxubGV0IHBlcnNpc3QgPSAoZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoZWRpdG9yLnN0YXRlLnppcHBlcik7XG59O1xuXG5sZXQgdW5wZXJzaXN0ID0gKHppcHBlcjogcGVyc2lzdGVudF9zdGF0ZSkgPT4ge1xuICBsZXQgemlwcGVyID0gUGVyc2lzdGVudFppcHBlci51bnBlcnNpc3QoemlwcGVyKTtcbiAgRWRpdG9yLmluaXQoemlwcGVyLCB+cmVhZF9vbmx5PWZhbHNlKTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoc3RhdGU6IHN0YXRlKSA9PiB7XG4gIHBlcnNpc3Qoc3RhdGUpIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICBTZXhwbGliLlNleHAub2Zfc3RyaW5nKGRhdGEpIHw+IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cCB8PiB1bnBlcnNpc3Q7XG59O1xuXG5sZXQgZGVzZXJpYWxpemVfb3B0ID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICBsZXQgc2V4cCA9XG4gICAgdHJ5KFNvbWUoU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhkYXRhKSB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHApKSB7XG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xuICBzZXhwIHw+IE9wdGlvbi5tYXAoc2V4cCA9PiBzZXhwIHw+IHVucGVyc2lzdCk7XG59O1xuXG5sZXQgZXhwb3J0ID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBzdGF0ZSB8PiBwZXJzaXN0IHw+IHlvanNvbl9vZl9wZXJzaXN0ZW50X3N0YXRlO1xufTtcblxubGV0IGltcG9ydCA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgZGF0YSB8PiBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3lvanNvbiB8PiB1bnBlcnNpc3Q7XG59O1xuXG5sZXQgZXhwb3J0X2luaXQgPSAoc3RhdGU6IHN0YXRlKSA9PiB7XG4gIHN0YXRlIHw+IHBlcnNpc3QgfD4gc2hvd19wZXJzaXN0ZW50X3N0YXRlO1xufTtcblxubGV0IG1rX3N0YXRpY3MgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGVkaXRvcjogRWRpdG9yLnQsIGN0eF9pbml0OiBDdHgudClcbiAgICA6IENhY2hlZFN0YXRpY3Muc3RhdGljcyA9PiB7XG4gIGxldCB0ZXJtID0gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbShlZGl0b3Iuc3RhdGUuemlwcGVyKSB8PiBmc3Q7XG4gIGxldCBpbmZvX21hcCA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MuY29yZSwgY3R4X2luaXQsIHRlcm0pO1xuICBsZXQgZXJyb3JfaWRzID1cbiAgICBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoZWRpdG9yLnN0YXRlLm1ldGEudGVybV9yYW5nZXMsIGluZm9fbWFwKTtcbiAge3Rlcm0sIGluZm9fbWFwLCBlcnJvcl9pZHN9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzY3JhdGNoID0gKFxuICBpbnQsXG4gIGxpc3QoU2NyYXRjaFNsaWRlLnBlcnNpc3RlbnRfc3RhdGUpLFxuICBsaXN0KChzdHJpbmcsIE1vZGVsUmVzdWx0LnBlcnNpc3RlbnQpKSxcbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZG9jdW1lbnRhdGlvbiA9IChcbiAgc3RyaW5nLFxuICBsaXN0KChzdHJpbmcsIFNjcmF0Y2hTbGlkZS5wZXJzaXN0ZW50X3N0YXRlKSksXG4gIFtAZGVmYXVsdCBbXV0gbGlzdCgoc3RyaW5nLCBNb2RlbFJlc3VsdC5wZXJzaXN0ZW50KSksXG4pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHNldHRpbmdzOiBTZXR0aW5ncy50LFxuICBzY3JhdGNoLFxuICBkb2N1bWVudGF0aW9uLFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzY3JhdGNoID0gKGludCwgbGlzdChTY3JhdGNoU2xpZGUuc3RhdGUpKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleGFtcGxlcyA9IChzdHJpbmcsIGxpc3QoKHN0cmluZywgU2NyYXRjaFNsaWRlLnN0YXRlKSkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4ZXJjaXNlcyA9IChpbnQsIGxpc3QoRXhlcmNpc2Uuc3BlYyksIEV4ZXJjaXNlLnN0YXRlKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBTY3JhdGNoKGludCwgbGlzdChTY3JhdGNoU2xpZGUuc3RhdGUpKVxuICB8IERvY3VtZW50YXRpb24oc3RyaW5nLCBsaXN0KChzdHJpbmcsIFNjcmF0Y2hTbGlkZS5zdGF0ZSkpKVxuICB8IEV4ZXJjaXNlcyhpbnQsIGxpc3QoRXhlcmNpc2Uuc3BlYyksIEV4ZXJjaXNlLnN0YXRlKTtcblxubGV0IGdldF9lZGl0b3IgPSAoZWRpdG9yczogdCk6IEVkaXRvci50ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PlxuICAgIGFzc2VydChuIDwgTGlzdC5sZW5ndGgoc2xpZGVzKSk7XG4gICAgTGlzdC5udGgoc2xpZGVzLCBuKTtcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBhc3NlcnQoTGlzdC5tZW1fYXNzb2MobmFtZSwgc2xpZGVzKSk7XG4gICAgTGlzdC5hc3NvYyhuYW1lLCBzbGlkZXMpO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT4gRXhlcmNpc2UuZWRpdG9yX29mX3N0YXRlKGV4ZXJjaXNlKVxuICB9O1xuXG5sZXQgcHV0X2VkaXRvciA9IChlZDogRWRpdG9yLnQsIGVkczogdCk6IHQgPT5cbiAgc3dpdGNoIChlZHMpIHtcbiAgfCBTY3JhdGNoKG4sIHNsaWRlcykgPT5cbiAgICBhc3NlcnQobiA8IExpc3QubGVuZ3RoKHNsaWRlcykpO1xuICAgIFNjcmF0Y2gobiwgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKG4sIGVkLCBzbGlkZXMpKTtcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBhc3NlcnQoTGlzdC5tZW1fYXNzb2MobmFtZSwgc2xpZGVzKSk7XG4gICAgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMgfD4gTGlzdFV0aWwudXBkYXRlX2Fzc29jKChuYW1lLCBlZCkpKTtcbiAgfCBFeGVyY2lzZXMobiwgc3BlY3MsIGV4ZXJjaXNlKSA9PlxuICAgIEV4ZXJjaXNlcyhuLCBzcGVjcywgRXhlcmNpc2UucHV0X2VkaXRvcihleGVyY2lzZSwgZWQpKVxuICB9O1xuXG5sZXQgZ2V0X3ppcHBlciA9IChlZGl0b3JzOiB0KTogWmlwcGVyLnQgPT4gZ2V0X2VkaXRvcihlZGl0b3JzKS5zdGF0ZS56aXBwZXI7XG5cbmxldCBnZXRfY3R4X2luaXQgPSAofnNldHRpbmdzIGFzIF86IFNldHRpbmdzLnQsIGVkaXRvcnM6IHQpOiBDdHgudCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRXhlcmNpc2VzKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBCdWlsdGlucy5jdHhfaW5pdFxuICB9O1xuXG5sZXQgZ2V0X2Vudl9pbml0ID0gKH5zZXR0aW5ncyBhcyBfOiBTZXR0aW5ncy50LCBlZGl0b3JzOiB0KTogRW52aXJvbm1lbnQudCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRXhlcmNpc2VzKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBCdWlsdGlucy5lbnZfaW5pdFxuICB9O1xuXG5sZXQgbWtfc3RhdGljcyA9ICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGVkaXRvcnM6IHQpOiBDYWNoZWRTdGF0aWNzLnQgPT4ge1xuICBsZXQgZWRpdG9yID0gZ2V0X2VkaXRvcihlZGl0b3JzKTtcbiAgbGV0IGN0eF9pbml0ID0gZ2V0X2N0eF9pbml0KH5zZXR0aW5ncywgZWRpdG9ycyk7XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IF8gd2hlbiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+IENhY2hlZFN0YXRpY3MubWsoW10pXG4gIHwgU2NyYXRjaChpZHgsIF8pID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KGlkeCkpO1xuICAgIFsoa2V5LCBTY3JhdGNoU2xpZGUubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvciwgY3R4X2luaXQpKV1cbiAgICB8PiBDYWNoZWRTdGF0aWNzLm1rO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG5hbWUpO1xuICAgIFsoa2V5LCBTY3JhdGNoU2xpZGUubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvciwgY3R4X2luaXQpKV1cbiAgICB8PiBDYWNoZWRTdGF0aWNzLm1rO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZS5ta19zdGF0aWNzKHNldHRpbmdzLmNvcmUsIGV4ZXJjaXNlKSB8PiBDYWNoZWRTdGF0aWNzLm1rXG4gIH07XG59O1xuXG5sZXQgbG9va3VwX3N0YXRpY3MgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIH5zdGF0aWNzLCBlZGl0b3JzOiB0KTogQ2FjaGVkU3RhdGljcy5zdGF0aWNzID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IF8gd2hlbiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljc1xuICB8IFNjcmF0Y2goaWR4LCBfKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChpZHgpKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG5hbWUpO1xuICAgIENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIGtleSk7XG4gIHwgRXhlcmNpc2VzKF8sIF8sIGV4ZXJjaXNlKSA9PlxuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3MoZXhlcmNpc2UpO1xuICAgIENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIGtleSk7XG4gIH07XG5cbi8qIEVhY2ggbW9kZSAoZS5nLiBTY3JhdGNoLCBTY2hvb2wpIHJlcXVpcmVzXG4gICBlbGFib3JhdGluZyBvbiBzb21lIG51bWJlciBvZiBleHByZXNzaW9uc1xuICAgdGhhdCBhcmUgc3BsaWNlZCB0b2dldGhlciBmcm9tIHRoZSBlZGl0b3JzXG4gICBpbiB0aGUgbW9kZS4gRWFjaCBlbGFib3JhdGVkIGV4cHJlc3Npb25cbiAgIGlzIGdpdmVuIGEga2V5IGZvciBsYXRlciBsb29rdXAgYnkgdGhlIG1vZGUuXG5cbiAgIFVzZWQgaW4gdGhlIFVwZGF0ZSBtb2R1bGUgKi9cbmxldCBnZXRfc3BsaWNlZF9lbGFicyA9XG4gICAgKH5zZXR0aW5nczogU2V0dGluZ3MudCwgc3RhdGljcywgZWRpdG9yczogdClcbiAgICA6IGxpc3QoKE1vZGVsUmVzdWx0cy5rZXksIERIRXhwLnQpKSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKGlkeCwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KGlkeCB8PiBzdHJpbmdfb2ZfaW50KTtcbiAgICBsZXQgQ2FjaGVkU3RhdGljcy57dGVybSwgaW5mb19tYXAsIF99ID1cbiAgICAgIGxvb2t1cF9zdGF0aWNzKH5zZXR0aW5ncywgfnN0YXRpY3MsIGVkaXRvcnMpO1xuICAgIGxldCBkID0gSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgaW5mb19tYXAsIHRlcm0pO1xuICAgIFsoa2V5LCBkKV07XG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBfKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobmFtZSk7XG4gICAgbGV0IENhY2hlZFN0YXRpY3Mue3Rlcm0sIGluZm9fbWFwLCBffSA9XG4gICAgICBsb29rdXBfc3RhdGljcyh+c2V0dGluZ3MsIH5zdGF0aWNzLCBlZGl0b3JzKTtcbiAgICBsZXQgZCA9IEludGVyZmFjZS5lbGFib3JhdGUofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGluZm9fbWFwLCB0ZXJtKTtcbiAgICBbKGtleSwgZCldO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZS5zcGxpY2VkX2VsYWJzKHNldHRpbmdzLmNvcmUsIGV4ZXJjaXNlKVxuICB9O1xuXG5sZXQgc2V0X2luc3RydWN0b3JfbW9kZSA9IChlZGl0b3JzOiB0LCBpbnN0cnVjdG9yX21vZGU6IGJvb2wpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IGVkaXRvcnNcbiAgfCBFeGVyY2lzZXMobiwgc3BlY3MsIGV4ZXJjaXNlKSA9PlxuICAgIEV4ZXJjaXNlcyhcbiAgICAgIG4sXG4gICAgICBzcGVjcyxcbiAgICAgIEV4ZXJjaXNlLnNldF9pbnN0cnVjdG9yX21vZGUoZXhlcmNpc2UsIGluc3RydWN0b3JfbW9kZSksXG4gICAgKVxuICB9O1xuXG5sZXQgcmVzZXRfbnRoX3NsaWRlID0gKG4sIHNsaWRlcykgPT4ge1xuICBsZXQgKF8sIGluaXRfZWRpdG9ycywgXykgPSBJbml0LnN0YXJ0dXAuc2NyYXRjaDtcbiAgbGV0IGRhdGEgPSBMaXN0Lm50aChpbml0X2VkaXRvcnMsIG4pO1xuICBsZXQgaW5pdF9udGggPSBTY3JhdGNoU2xpZGUudW5wZXJzaXN0KGRhdGEpO1xuICBVdGlsLkxpc3RVdGlsLnB1dF9udGgobiwgaW5pdF9udGgsIHNsaWRlcyk7XG59O1xuXG5sZXQgcmVzZXRfbmFtZWRfc2xpZGUgPSAobmFtZSwgc2xpZGVzKSA9PiB7XG4gIGxldCAoXywgaW5pdF9lZGl0b3JzLCBfKSA9IEluaXQuc3RhcnR1cC5kb2N1bWVudGF0aW9uO1xuICBsZXQgZGF0YSA9IExpc3QuYXNzb2MobmFtZSwgaW5pdF9lZGl0b3JzKTtcbiAgbGV0IGluaXRfbmFtZSA9IFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QoZGF0YSk7XG4gIHNsaWRlcyB8PiBMaXN0LnJlbW92ZV9hc3NvYyhuYW1lKSB8PiBMaXN0LmNvbnMoKG5hbWUsIGluaXRfbmFtZSkpO1xufTtcblxubGV0IHJlc2V0X2N1cnJlbnQgPSAoZWRpdG9yczogdCwgfmluc3RydWN0b3JfbW9kZTogYm9vbCk6IHQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChuLCBzbGlkZXMpID0+IFNjcmF0Y2gobiwgcmVzZXRfbnRoX3NsaWRlKG4sIHNsaWRlcykpXG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgRG9jdW1lbnRhdGlvbihuYW1lLCByZXNldF9uYW1lZF9zbGlkZShuYW1lLCBzbGlkZXMpKVxuICB8IEV4ZXJjaXNlcyhuLCBzcGVjcywgXykgPT5cbiAgICBFeGVyY2lzZXMoXG4gICAgICBuLFxuICAgICAgc3BlY3MsXG4gICAgICBMaXN0Lm50aChzcGVjcywgbikgfD4gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyh+aW5zdHJ1Y3Rvcl9tb2RlKSxcbiAgICApXG4gIH07XG5cbmxldCBpbXBvcnRfY3VycmVudCA9IChlZGl0b3JzOiB0LCBkYXRhOiBvcHRpb24oc3RyaW5nKSk6IHQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgRG9jdW1lbnRhdGlvbihfKVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGVcIilcbiAgfCBTY3JhdGNoKGlkeCwgc2xpZGVzKSA9PlxuICAgIHN3aXRjaCAoZGF0YSkge1xuICAgIHwgTm9uZSA9PiBlZGl0b3JzXG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICBsZXQgc3RhdGUgPSBTY3JhdGNoU2xpZGUuaW1wb3J0KGRhdGEpO1xuICAgICAgbGV0IHNsaWRlcyA9IFV0aWwuTGlzdFV0aWwucHV0X250aChpZHgsIHN0YXRlLCBzbGlkZXMpO1xuICAgICAgU2NyYXRjaChpZHgsIHNsaWRlcyk7XG4gICAgfVxuICB9O1xuXG5sZXQgc3dpdGNoX2V4YW1wbGVfc2xpZGUgPSAoZWRpdG9yczogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBFeGVyY2lzZXMoXykgPT4gTm9uZVxuICB8IERvY3VtZW50YXRpb24oY3VyLCBzbGlkZXMpXG4gICAgICB3aGVuICFMaXN0Lm1lbV9hc3NvYyhuYW1lLCBzbGlkZXMpIHx8IGN1ciA9PSBuYW1lID0+XG4gICAgTm9uZVxuICB8IERvY3VtZW50YXRpb24oXywgc2xpZGVzKSA9PiBTb21lKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSlcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhwbGFpblRoaXNNb2RlbDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB1cGRhdGUgPVxuICB8IFNwZWNpZmljaXR5T3Blbihib29sKVxuICB8IFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGZlZWRiYWNrX29wdGlvbilcbiAgfCBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIGZlZWRiYWNrX29wdGlvbilcbiAgfCBVcGRhdGVHcm91cFNlbGVjdGlvbihncm91cF9pZCwgZm9ybV9pZCk7XG5cbmxldCBzZXRfdXBkYXRlID1cbiAgICAoZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LCB1OiB1cGRhdGUpOiBFeHBsYWluVGhpc01vZGVsLnQgPT4ge1xuICBzd2l0Y2ggKHUpIHtcbiAgfCBTcGVjaWZpY2l0eU9wZW4oYikgPT4gey4uLmV4cGxhaW5UaGlzTW9kZWwsIHNwZWNpZmljaXR5X29wZW46IGJ9XG4gIHwgVG9nZ2xlRXhwbGFuYXRpb25GZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZmVlZGJhY2tfb3B0aW9uKSA9PlxuICAgIGxldCAocHJlLCBmb3JtLCBwb3N0KSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmZvcm1zLCBmID0+XG4gICAgICAgIGYuZm9ybSA9PSBmb3JtX2lkICYmIGYuZ3JvdXAgPT0gZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgbGV0IGZvcm0gPVxuICAgICAgc3dpdGNoIChmb3JtKSB7XG4gICAgICB8IFNvbWUoZm9ybSkgPT5cbiAgICAgICAgbGV0IGZlZWRiYWNrID1cbiAgICAgICAgICBzd2l0Y2ggKGZvcm0uZXhwbGFuYXRpb25fZmVlZGJhY2ssIGZlZWRiYWNrX29wdGlvbikge1xuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzVXApLCBUaHVtYnNEb3duKVxuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzRG93biksIFRodW1ic1VwKVxuICAgICAgICAgIHwgKE5vbmUsIF8pID0+IFNvbWUoZmVlZGJhY2tfb3B0aW9uKVxuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzVXApLCBUaHVtYnNVcClcbiAgICAgICAgICB8IChTb21lKFRodW1ic0Rvd24pLCBUaHVtYnNEb3duKSA9PiBOb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgey4uLmZvcm0sIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBmZWVkYmFja307XG4gICAgICB8IE5vbmUgPT4ge1xuICAgICAgICAgIGdyb3VwOiBncm91cF9pZCxcbiAgICAgICAgICBmb3JtOiBmb3JtX2lkLFxuICAgICAgICAgIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBTb21lKGZlZWRiYWNrX29wdGlvbiksXG4gICAgICAgICAgZXhhbXBsZXM6IFtdLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIHsuLi5leHBsYWluVGhpc01vZGVsLCBmb3JtczogcHJlIEAgW2Zvcm1dIEAgcG9zdH07XG4gIHwgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBmZWVkYmFja19vcHRpb24pID0+XG4gICAgbGV0IChwcmVfZm9ybSwgZm9ybSwgcG9zdF9mb3JtKSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmZvcm1zLCBmID0+XG4gICAgICAgIGYuZm9ybSA9PSBmb3JtX2lkICYmIGYuZ3JvdXAgPT0gZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgbGV0IGZvcm06IGZvcm1fbW9kZWwgPVxuICAgICAgc3dpdGNoIChmb3JtKSB7XG4gICAgICB8IFNvbWUoZm9ybSkgPT5cbiAgICAgICAgbGV0IChwcmVfZXhhbXBsZSwgZXhhbXBsZSwgcG9zdF9leGFtcGxlKSA9XG4gICAgICAgICAgTGlzdFV0aWwuc3BsaXQoZm9ybS5leGFtcGxlcywgZSA9PiBlLnN1Yl9pZCA9PSBleGFtcGxlX2lkKTtcbiAgICAgICAgbGV0IGV4YW1wbGVzOiBsaXN0KGV4YW1wbGVfbW9kZWwpID1cbiAgICAgICAgICBzd2l0Y2ggKGV4YW1wbGUpIHtcbiAgICAgICAgICB8IFNvbWUoZXhhbXBsZSkgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoZXhhbXBsZS5mZWVkYmFjaywgZmVlZGJhY2tfb3B0aW9uKSB7XG4gICAgICAgICAgICB8IChUaHVtYnNVcCwgVGh1bWJzRG93bilcbiAgICAgICAgICAgIHwgKFRodW1ic0Rvd24sIFRodW1ic1VwKSA9PlxuICAgICAgICAgICAgICBwcmVfZXhhbXBsZVxuICAgICAgICAgICAgICBAIFt7Li4uZXhhbXBsZSwgZmVlZGJhY2s6IGZlZWRiYWNrX29wdGlvbn1dXG4gICAgICAgICAgICAgIEAgcG9zdF9leGFtcGxlXG4gICAgICAgICAgICB8IChUaHVtYnNVcCwgVGh1bWJzVXApXG4gICAgICAgICAgICB8IChUaHVtYnNEb3duLCBUaHVtYnNEb3duKSA9PiBwcmVfZXhhbXBsZSBAIHBvc3RfZXhhbXBsZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgcHJlX2V4YW1wbGVcbiAgICAgICAgICAgIEAgW3tzdWJfaWQ6IGV4YW1wbGVfaWQsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XVxuICAgICAgICAgICAgQCBwb3N0X2V4YW1wbGVcbiAgICAgICAgICB9O1xuICAgICAgICB7Li4uZm9ybSwgZXhhbXBsZXN9O1xuICAgICAgfCBOb25lID0+IHtcbiAgICAgICAgICBncm91cDogZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybTogZm9ybV9pZCxcbiAgICAgICAgICBleHBsYW5hdGlvbl9mZWVkYmFjazogTm9uZSxcbiAgICAgICAgICBleGFtcGxlczogW3tzdWJfaWQ6IGV4YW1wbGVfaWQsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB7Li4uZXhwbGFpblRoaXNNb2RlbCwgZm9ybXM6IHByZV9mb3JtIEAgW2Zvcm1dIEAgcG9zdF9mb3JtfTtcbiAgfCBVcGRhdGVHcm91cFNlbGVjdGlvbihncm91cF9pZCwgZm9ybV9pZCkgPT5cbiAgICBsZXQgKHByZV9ncm91cCwgX2dyb3VwLCBwb3N0X2dyb3VwKSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmdyb3VwcywgZyA9PiBnLmdyb3VwID09IGdyb3VwX2lkKTtcbiAgICB7XG4gICAgICAuLi5leHBsYWluVGhpc01vZGVsLFxuICAgICAgZ3JvdXBzOlxuICAgICAgICBwcmVfZ3JvdXAgQCBbe2dyb3VwOiBncm91cF9pZCwgc2VsZWN0ZWQ6IGZvcm1faWR9XSBAIHBvc3RfZ3JvdXAsXG4gICAgfTtcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQHdhcm5pbmcgXCItMzNcIl1cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgcm93X2hlaWdodDogZmxvYXQsXG4gIGNvbF93aWR0aDogZmxvYXQsXG59O1xuXG5sZXQgaW5pdCA9IHtyb3dfaGVpZ2h0OiAxMC4sIGNvbF93aWR0aDogMTAufTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBnZXRfZWxlbV9ieV9pZCA9IGlkID0+IHtcbiAgbGV0IGRvYyA9IERvbV9odG1sLmRvY3VtZW50O1xuICBKcy5PcHQuZ2V0KFxuICAgIGRvYyMjZ2V0RWxlbWVudEJ5SWQoSnMuc3RyaW5nKGlkKSksXG4gICAgKCkgPT4ge1xuICAgICAgcHJpbnRfZW5kbGluZShpZCk7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgIH0sXG4gICk7XG59O1xuXG5sZXQgZGF0ZV9ub3cgPSAoKSA9PiB7XG4gIFslanMgbmV3IEpzLmRhdGVfbm93XTtcbn07XG5cbmxldCB0aW1lc3RhbXAgPSAoKSA9PiBkYXRlX25vdygpIyN2YWx1ZU9mO1xuXG5sZXQgZ2V0X2tleSA9IGV2dCA9PlxuICBKcy50b19zdHJpbmcoSnMuT3B0ZGVmLmdldChldnQjIy5rZXksICgpID0+IGZhaWx3aXRoKFwiSnNVdGlsLmdldF9rZXlcIikpKTtcblxubGV0IGN0cmxfaGVsZCA9IGV2dCA9PiBKcy50b19ib29sKGV2dCMjLmN0cmxLZXkpO1xubGV0IHNoaWZ0X2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5zaGlmdEtleSk7XG5sZXQgYWx0X2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5hbHRLZXkpO1xubGV0IG1ldGFfaGVsZCA9IGV2dCA9PiBKcy50b19ib29sKGV2dCMjLm1ldGFLZXkpO1xuXG5sZXQgbnVtX2NsaWNrcyA9IChldnQ6IEpzLnQoSnNfb2Zfb2NhbWwuRG9tX2h0bWwubW91c2VFdmVudCkpOiBpbnQgPT5cbiAgSnMuVW5zYWZlLmNvZXJjZShldnQpIyMuZGV0YWlsO1xuXG5sZXQgaXNfZG91YmxlX2NsaWNrID0gKGV2dDogSnMudChKc19vZl9vY2FtbC5Eb21faHRtbC5tb3VzZUV2ZW50KSk6IGJvb2wgPT5cbiAgbnVtX2NsaWNrcyhldnQpID09IDI7XG5cbmxldCBkb3dubG9hZF9zdHJpbmdfZmlsZSA9XG4gICAgKH5maWxlbmFtZTogc3RyaW5nLCB+Y29udGVudF90eXBlOiBzdHJpbmcsIH5jb250ZW50czogc3RyaW5nKSA9PiB7XG4gIGxldCBibG9iID0gRmlsZS5ibG9iX2Zyb21fc3RyaW5nKH5jb250ZW50VHlwZT1jb250ZW50X3R5cGUsIGNvbnRlbnRzKTtcbiAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICBsZXQgbGluayA9IERvbV9odG1sLmNyZWF0ZUEoRG9tX2h0bWwuZG9jdW1lbnQpO1xuICBsaW5rIyMuaHJlZiA6PSB1cmw7XG4gIGxpbmsjI3NldEF0dHJpYnV0ZShKcy5zdHJpbmcoXCJkb3dubG9hZFwiKSwgSnMuc3RyaW5nKGZpbGVuYW1lKSk7XG4gIGxpbmsjIy5vbmNsaWNrIDo9IERvbV9odG1sLmhhbmRsZXIoXyA9PiB7SnMuX3RydWV9KTtcbiAgbGluayMjY2xpY2s7XG59O1xuXG5sZXQgZG93bmxvYWRfanNvbiA9IChmaWxlbmFtZSwgY29udGVudHMpOiB1bml0ID0+XG4gIGRvd25sb2FkX3N0cmluZ19maWxlKFxuICAgIH5maWxlbmFtZT1maWxlbmFtZSArKyBcIi5qc29uXCIsXG4gICAgfmNvbnRlbnRfdHlwZT1cImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICB+Y29udGVudHM9Y29udGVudHMgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nLFxuICApO1xuXG5sZXQgcmVhZF9maWxlID0gKGZpbGUsIGspID0+IHtcbiAgbGV0IHJlYWRlciA9IFslanMgbmV3IEZpbGUuZmlsZVJlYWRlcl07XG4gIHJlYWRlciMjcmVhZEFzVGV4dChmaWxlKTtcbiAgcmVhZGVyIyMub25sb2FkIDo9XG4gICAgRG9tLmhhbmRsZXIoXyA9PiB7XG4gICAgICBsZXQgcmVzdWx0ID0gcmVhZGVyIyMucmVzdWx0O1xuICAgICAgbGV0IG9wdGlvbiA9IEpzLk9wdC50b19vcHRpb24oRmlsZS5Db2VyY2VUby5zdHJpbmcocmVzdWx0KSk7XG4gICAgICBsZXQgZGF0YSA9IE9wdGlvbi5tYXAoSnMudG9fc3RyaW5nLCBvcHRpb24pO1xuICAgICAgayhkYXRhKTtcbiAgICAgIEpzLl90cnVlO1xuICAgIH0pO1xufTtcblxubGV0IHNldF9sb2NhbHN0b3JlID0gKGs6IHN0cmluZywgdjogc3RyaW5nKTogdW5pdCA9PiB7XG4gIGxldCBsb2NhbF9zdG9yZSA9XG4gICAgSnMuT3B0ZGVmLmdldChEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UsICgpID0+IGFzc2VydChmYWxzZSkpO1xuICBsb2NhbF9zdG9yZSMjc2V0SXRlbShKcy5zdHJpbmcoayksIEpzLnN0cmluZyh2KSk7XG59O1xuXG5sZXQgZ2V0X2xvY2Fsc3RvcmUgPSAoazogc3RyaW5nKTogb3B0aW9uKHN0cmluZykgPT5cbiAgdHJ5KHtcbiAgICBsZXQgbG9jYWxfc3RvcmUgPVxuICAgICAgSnMuT3B0ZGVmLmdldChEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UsICgpID0+IGFzc2VydChmYWxzZSkpO1xuICAgIGxvY2FsX3N0b3JlIyNnZXRJdGVtKEpzLnN0cmluZyhrKSlcbiAgICB8PiAoXG4gICAgICB4ID0+IEpzLk9wdC5nZXQoeCwgKCkgPT4gYXNzZXJ0KGZhbHNlKSkgfD4gSnMudG9fc3RyaW5nIHw+IE9wdGlvbi5zb21lXG4gICAgKTtcbiAgfSkge1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgY2xlYXJfbG9jYWxzdG9yZSA9ICgpID0+IHtcbiAgbGV0IGxvY2FsX3N0b3JlID1cbiAgICBKcy5PcHRkZWYuZ2V0KERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSwgKCkgPT4gYXNzZXJ0KGZhbHNlKSk7XG4gIGxvY2FsX3N0b3JlIyNjbGVhcjtcbn07XG5cbmxldCBjb25maXJtID0gbWVzc2FnZSA9PiB7XG4gIEpzLnRvX2Jvb2woRG9tX2h0bWwud2luZG93IyNjb25maXJtKEpzLnN0cmluZyhtZXNzYWdlKSkpO1xufTtcblxubGV0IGxvZyA9IGRhdGEgPT4ge1xuICBGaXJlYnVnLmNvbnNvbGUjI2xvZyhkYXRhKTtcbn07XG5cbmxldCBjbGlwYm9hcmRfc2hpbV9pZCA9IFwiY2xpcGJvYXJkLXNoaW1cIjtcblxubGV0IGZvY3VzX2NsaXBib2FyZF9zaGltID0gKCkgPT4gZ2V0X2VsZW1fYnlfaWQoY2xpcGJvYXJkX3NoaW1faWQpIyNmb2N1cztcblxubGV0IGNsaXBib2FyZF9zaGltID0ge1xuICBOb2RlLnRleHRhcmVhKH5hdHRyPUF0dHIubWFueShbQXR0ci5pZChjbGlwYm9hcmRfc2hpbV9pZCldKSwgW10pO1xufTtcblxubGV0IGNvcHkgPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcbiAgRG9tX2h0bWwuZG9jdW1lbnQjI2V4ZWNDb21tYW5kKFxuICAgIEpzLnN0cmluZyhcInNlbGVjdEFsbFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQuZW1wdHksXG4gICk7XG4gIERvbV9odG1sLmRvY3VtZW50IyNleGVjQ29tbWFuZChcbiAgICBKcy5zdHJpbmcoXCJpbnNlcnRUZXh0XCIpLFxuICAgIEpzLmJvb2woZmFsc2UpLFxuICAgIEpzLk9wdC5vcHRpb24oU29tZShKcy5zdHJpbmcoc3RyKSkpLFxuICApO1xuICBEb21faHRtbC5kb2N1bWVudCMjZXhlY0NvbW1hbmQoXG4gICAgSnMuc3RyaW5nKFwic2VsZWN0QWxsXCIpLFxuICAgIEpzLmJvb2woZmFsc2UpLFxuICAgIEpzLk9wdC5lbXB0eSxcbiAgKTtcbn07XG5cbmxldCBzY3JvbGxfY3Vyc29yX2ludG9fdmlld19pZl9uZWVkZWQgPSAoKSA9PlxuICB0cnkoe1xuICAgIGxldCBjYXJldF9lbGVtID0gZ2V0X2VsZW1fYnlfaWQoXCJjYXJldFwiKTtcbiAgICBsZXQgbWFpbiA9IGdldF9lbGVtX2J5X2lkKFwibWFpblwiKTtcbiAgICBsZXQgbWFpbl9yZWN0ID0gbWFpbiMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuICAgIGxldCBjYXJldF9yZWN0ID0gY2FyZXRfZWxlbSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuXG4gICAgaWYgKGNhcmV0X3JlY3QjIy50b3AgPCBtYWluX3JlY3QjIy50b3ApIHtcbiAgICAgIGNhcmV0X2VsZW0jI3Njcm9sbEludG9WaWV3KEpzLl90cnVlKTtcbiAgICB9IGVsc2UgaWYgKGNhcmV0X3JlY3QjIy5ib3R0b20gPiBtYWluX3JlY3QjIy5ib3R0b20pIHtcbiAgICAgIGNhcmV0X2VsZW0jI3Njcm9sbEludG9WaWV3KEpzLl9mYWxzZSk7XG4gICAgfTtcbiAgfSkge1xuICB8IEFzc2VydF9mYWlsdXJlKF8pID0+ICgpXG4gIH07XG5cbm1vZHVsZSBGcmFnbWVudCA9IHtcbiAgbGV0IHNldF9jdXJyZW50ID0gZnJhZyA9PiB7XG4gICAgbGV0IGZyYWcgPVxuICAgICAgc3dpdGNoIChmcmFnKSB7XG4gICAgICB8IFwiXCIgPT4gXCJcIlxuICAgICAgfCBmcmFnID0+IFwiI1wiICsrIGZyYWdcbiAgICAgIH07XG4gICAgbGV0IGhpc3RvcnkgPSBKc19vZl9vY2FtbC5Eb21faHRtbC53aW5kb3cjIy5oaXN0b3J5O1xuICAgIGhpc3RvcnkjI3B1c2hTdGF0ZShKcy5udWxsLCBKcy5zdHJpbmcoXCJcIiksIEpzLnNvbWUoSnMuc3RyaW5nKGZyYWcpKSk7XG4gIH07XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gKCkgPT4ge1xuICAgIGxldCBmcmFnbWVudF9vZl91cmwgPSAodXJsOiBVcmwudXJsKTogc3RyaW5nID0+XG4gICAgICBzd2l0Y2ggKHVybCkge1xuICAgICAgfCBIdHRwKHtodV9mcmFnbWVudDogc3RyLCBffSlcbiAgICAgIHwgSHR0cHMoe2h1X2ZyYWdtZW50OiBzdHIsIF99KVxuICAgICAgfCBGaWxlKHtmdV9mcmFnbWVudDogc3RyLCBffSkgPT4gc3RyXG4gICAgICB9O1xuICAgIFVybC5DdXJyZW50LmdldCgpIHw+IE9wdGlvbi5tYXAoZnJhZ21lbnRfb2ZfdXJsKTtcbiAgfTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCB0eV92aWV3ID0gKGNsczogc3RyaW5nLCBzOiBzdHJpbmcpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgY2xzXSksIFt0ZXh0KHMpXSk7XG5cbmxldCBhbGlhc192aWV3ID0gKHM6IHN0cmluZyk6IE5vZGUudCA9PlxuICBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtYWxpYXMtdmlld1wiXSksIFt0ZXh0KHMpXSk7XG5cbmxldCBwcm92X3ZpZXc6IFR5cC50eXBlX3Byb3ZlbmFuY2UgPT4gTm9kZS50ID1cbiAgZnVuXG4gIHwgSW50ZXJuYWwgPT4gZGl2KFtdKVxuICB8IEZyZWUobmFtZSkgPT5cbiAgICBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtbW9kXCIsIFwiZnJlZS10eXBlLXZhclwiXSksIFt0ZXh0KG5hbWUpXSlcbiAgfCBUeXBlSG9sZSA9PiBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtbW9kXCIsIFwidHlwZS1ob2xlXCJdKSwgW3RleHQoXCLwnZyPXCIpXSlcbiAgfCBTeW5Td2l0Y2ggPT4gZGl2KH5hdHRyPWNsc3MoW1widHlwLW1vZFwiLCBcInN5bi1zd2l0Y2hcIl0pLCBbdGV4dChcIuKHklwiKV0pO1xuXG5sZXQgcmVjIHZpZXdfdHkgPSAodHk6IEhhejNsY29yZS5UeXAudCk6IE5vZGUudCA9PlxuICAvL1RPRE86IHBhcmVucyBvbiBvcHMgd2hlbiBhbWJpZ3VvdXNcbiAgc3dpdGNoICh0eSkge1xuICB8IFVua25vd24ocHJvdikgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBjbHNzKFtcInR5cC12aWV3XCIsIFwiYXRvbVwiLCBcInVua25vd25cIl0pLFxuICAgICAgICAgIEF0dHIudGl0bGUoVHlwLnNob3dfdHlwZV9wcm92ZW5hbmNlKHByb3YpKSxcbiAgICAgICAgXSksXG4gICAgICBbdGV4dChcIj9cIikgLyosIHByb3Zfdmlldyhwcm92KSovXSxcbiAgICApXG4gIHwgSW50ID0+IHR5X3ZpZXcoXCJJbnRcIiwgXCJJbnRcIilcbiAgfCBGbG9hdCA9PiB0eV92aWV3KFwiRmxvYXRcIiwgXCJGbG9hdFwiKVxuICB8IFN0cmluZyA9PiB0eV92aWV3KFwiU3RyaW5nXCIsIFwiU3RyaW5nXCIpXG4gIHwgQm9vbCA9PiB0eV92aWV3KFwiQm9vbFwiLCBcIkJvb2xcIilcbiAgfCBWYXIobmFtZSkgPT4gdHlfdmlldyhcIlZhclwiLCBuYW1lKVxuICB8IFJlYyh4LCB0KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJSZWNcIl0pLFxuICAgICAgW3RleHQoXCJSZWMgXCIgKysgeCArKyBcIi4gXCIpLCB2aWV3X3R5KHQpXSxcbiAgICApXG4gIHwgTGlzdCh0KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJhdG9tXCIsIFwiTGlzdFwiXSksXG4gICAgICBbdGV4dChcIltcIiksIHZpZXdfdHkodCksIHRleHQoXCJdXCIpXSxcbiAgICApXG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJBcnJvd1wiXSksXG4gICAgICBbdmlld190eSh0MSksIHRleHQoXCIgLT4gXCIpLCB2aWV3X3R5KHQyKV0sXG4gICAgKVxuICB8IFByb2QoW10pID0+IGRpdih+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUHJvZFwiXSksIFt0ZXh0KFwiKClcIildKVxuICB8IFByb2QoW19dKSA9PlxuICAgIGRpdih+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUHJvZFwiXSksIFt0ZXh0KFwiU2luZ2xldG9uIFByb2R1Y3RcIildKVxuICB8IFByb2QoW3QwLCAuLi50c10pID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcImF0b21cIiwgXCJQcm9kXCJdKSxcbiAgICAgIFtcbiAgICAgICAgdGV4dChcIihcIiksXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUHJvZFwiXSksXG4gICAgICAgICAgW3ZpZXdfdHkodDApXVxuICAgICAgICAgIEAgKExpc3QubWFwKHQgPT4gW3RleHQoXCIsIFwiKSwgdmlld190eSh0KV0sIHRzKSB8PiBMaXN0LmZsYXR0ZW4pLFxuICAgICAgICApLFxuICAgICAgICB0ZXh0KFwiKVwiKSxcbiAgICAgIF0sXG4gICAgKVxuICB8IFN1bSh0cykgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiU3VtXCJdKSxcbiAgICAgIHN3aXRjaCAodHMpIHtcbiAgICAgIHwgW10gPT4gW3RleHQoXCJOdWxsYXJ5IFN1bVwiKV1cbiAgICAgIHwgW3QwXSA9PiBbdGV4dChcIitcIildIEAgY3RyX3ZpZXcodDApXG4gICAgICB8IFt0MCwgLi4udHNdID0+XG4gICAgICAgIGxldCB0c192aWV3cyA9XG4gICAgICAgICAgTGlzdC5tYXAodCA9PiBbdGV4dChcIiArIFwiKV0gQCBjdHJfdmlldyh0KSwgdHMpIHw+IExpc3QuZmxhdHRlbjtcbiAgICAgICAgY3RyX3ZpZXcodDApIEAgdHNfdmlld3M7XG4gICAgICB9LFxuICAgIClcbiAgfVxuYW5kIGN0cl92aWV3ID0gKChjdHIsIHR5cCkpID0+XG4gIHN3aXRjaCAodHlwKSB7XG4gIHwgTm9uZSA9PiBbdGV4dChjdHIpXVxuICB8IFNvbWUodHlwKSA9PiBbdGV4dChjdHIgKysgXCIoXCIpLCB2aWV3X3R5KHR5cCksIHRleHQoXCIpXCIpXVxuICB9O1xuXG5sZXQgdmlldyA9ICh0eTogSGF6M2xjb3JlLlR5cC50KTogTm9kZS50ID0+XG4gIGRpdl9jKFwidHlwLXdyYXBwZXJcIiwgW3ZpZXdfdHkodHkpXSk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQgdmlldyA9IChraW5kOiBIYXozbGNvcmUuS2luZC50KTogTm9kZS50ID0+XG4gIHN3aXRjaCAoa2luZCkge1xuICB8IFNpbmdsZXRvbih0eSkgPT4gZGl2X2MoXCJraW5kLXZpZXdcIiwgW1R5cGUudmlldyh0eSldKVxuICB8IEFic3RyYWN0ID0+IGRpdl9jKFwia2luZC12aWV3XCIsIFt0ZXh0KFwiVHlwZVwiKV0pXG4gIH07XG4iLCJvcGVuIEhhejNsY29yZTtcblxuLy8gQSBnZW5lcmljIGtleS12YWx1ZSBzdG9yZSBmb3Igc2F2aW5nL2xvYWRpbmcgZGF0YSB0by9mcm9tIGxvY2FsIHN0b3JhZ2Vcbm1vZHVsZSBHZW5lcmljID0ge1xuICBsZXQgcHJlZml4OiBzdHJpbmcgPSBcIktFWV9TVE9SRV9cIjtcblxuICBsZXQgZnVsbF9rZXkgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIHByZWZpeCArKyBrZXk7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB1bml0ID0+XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGZ1bGxfa2V5KGtleSksIHZhbHVlKTtcblxuICBsZXQgbG9hZCA9IChrZXk6IHN0cmluZyk6IG9wdGlvbihzdHJpbmcpID0+XG4gICAgSnNVdGlsLmdldF9sb2NhbHN0b3JlKGZ1bGxfa2V5KGtleSkpO1xufTtcblxuLy8gU2V0dGluZ3Mgc2VyaWFsaXphdGlvblxubW9kdWxlIFNldHRpbmdzID0ge1xuICBsZXQgc2F2ZV9zZXR0aW5nc19rZXk6IHN0cmluZyA9IFwiU0VUVElOR1NcIjtcblxuICBsZXQgZGVmYXVsdCA9IEluaXQuc3RhcnR1cC5zZXR0aW5ncztcblxuICBsZXQgc2VyaWFsaXplID0gc2V0dGluZ3MgPT5cbiAgICBzZXR0aW5ncyB8PiBTZXR0aW5ncy5zZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+XG4gICAgdHJ5KFxuICAgICAgZGF0YVxuICAgICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgICAgfD4gU2V0dGluZ3MudF9vZl9zZXhwXG4gICAgICB8PiBTZXR0aW5ncy5maXhfaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgKSB7XG4gICAgfCBfID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiQ291bGQgbm90IGRlc2VyaWFsaXplIHNldHRpbmdzLlwiKTtcbiAgICAgIGRlZmF1bHQ7XG4gICAgfTtcblxuICBsZXQgc2F2ZSA9IChzZXR0aW5nczogU2V0dGluZ3MudCk6IHVuaXQgPT5cbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXksIHNlcmlhbGl6ZShzZXR0aW5ncykpO1xuXG4gIGxldCBpbml0ID0gKCkgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX3NldHRpbmdzX2tleSwgc2VyaWFsaXplKGRlZmF1bHQpKTtcbiAgICBkZWZhdWx0O1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCk6IFNldHRpbmdzLnQgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX3NldHRpbmdzX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCgpXG4gICAgfCBTb21lKGRhdGEpID0+IGRlc2VyaWFsaXplKGRhdGEpXG4gICAgfTtcblxuICBsZXQgZXhwb3J0ID0gKCkgPT4gT3B0aW9uLmdldChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXkpKTtcbiAgbGV0IGltcG9ydCA9IGRhdGEgPT4ge1xuICAgIGxldCBzZXR0aW5ncyA9IGRlc2VyaWFsaXplKGRhdGEpO1xuICAgIHNhdmUoc2V0dGluZ3MpO1xuICAgIHNldHRpbmdzO1xuICB9O1xufTtcblxuLy8gRXhwbGFpblRoaXNNb2RlbCBzZXJpYWxpemF0aW9uXG5tb2R1bGUgRXhwbGFpblRoaXNNb2RlbCA9IHtcbiAgbGV0IHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXk6IHN0cmluZyA9IFwiRXhwbGFpblRoaXNNb2RlbFwiO1xuXG4gIGxldCBzZXJpYWxpemUgPSBleHBsYWluVGhpc01vZGVsID0+XG4gICAgZXhwbGFpblRoaXNNb2RlbCB8PiBFeHBsYWluVGhpc01vZGVsLnNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuXG4gIGxldCBkZXNlcmlhbGl6ZSA9IGRhdGEgPT5cbiAgICB0cnkoZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IEV4cGxhaW5UaGlzTW9kZWwudF9vZl9zZXhwKSB7XG4gICAgfCBfID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiQ291bGQgbm90IGRlc2VyaWFsaXplIEV4cGxhaW5UaGlzTW9kZWwuXCIpO1xuICAgICAgRXhwbGFpblRoaXNNb2RlbC5pbml0O1xuICAgIH07XG5cbiAgbGV0IHNhdmUgPSAoZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50KTogdW5pdCA9PlxuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShcbiAgICAgIHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXksXG4gICAgICBzZXJpYWxpemUoZXhwbGFpblRoaXNNb2RlbCksXG4gICAgKTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoXG4gICAgICBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5LFxuICAgICAgc2VyaWFsaXplKEV4cGxhaW5UaGlzTW9kZWwuaW5pdCksXG4gICAgKTtcbiAgICBFeHBsYWluVGhpc01vZGVsLmluaXQ7XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAoKTogRXhwbGFpblRoaXNNb2RlbC50ID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCgpXG4gICAgfCBTb21lKGRhdGEpID0+IGRlc2VyaWFsaXplKGRhdGEpXG4gICAgfTtcblxuICBsZXQgcmVjIGV4cG9ydCA9ICgpID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSkpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBfID0gaW5pdCgpO1xuICAgICAgZXhwb3J0KCk7XG4gICAgfCBTb21lKGRhdGEpID0+IGRhdGFcbiAgICB9O1xuXG4gIGxldCBpbXBvcnQgPSBkYXRhID0+IHtcbiAgICBsZXQgZXhwbGFpblRoaXNNb2RlbCA9IGRlc2VyaWFsaXplKGRhdGEpO1xuICAgIHNhdmUoZXhwbGFpblRoaXNNb2RlbCk7XG4gIH07XG59O1xuXG4vLyBTY3JhdGNoIG1vZGUgc2VyaWFsaXphdGlvblxubW9kdWxlIFNjcmF0Y2ggPSB7XG4gIGxldCBzYXZlX3NjcmF0Y2hfa2V5OiBzdHJpbmcgPSBcIlNBVkVfU0NSQVRDSFwiO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50ID0gUGVyc2lzdGVudERhdGEuc2NyYXRjaDtcblxuICBsZXQgdG9fcGVyc2lzdGVudCA9ICgoaWR4LCBzbGlkZXMsIHJlc3VsdHMpKTogcGVyc2lzdGVudCA9PiAoXG4gICAgaWR4LFxuICAgIExpc3QubWFwKFNjcmF0Y2hTbGlkZS5wZXJzaXN0LCBzbGlkZXMpLFxuICAgIHJlc3VsdHNcbiAgICB8PiBNb2RlbFJlc3VsdHMubWFwKE1vZGVsUmVzdWx0LnRvX3BlcnNpc3RlbnQpXG4gICAgfD4gTW9kZWxSZXN1bHRzLmJpbmRpbmdzLFxuICApO1xuXG4gIGxldCBvZl9wZXJzaXN0ZW50ID0gKChpZHgsIHNsaWRlcywgcmVzdWx0cyk6IHBlcnNpc3RlbnQpID0+IHtcbiAgICAoXG4gICAgICBpZHgsXG4gICAgICBMaXN0Lm1hcChTY3JhdGNoU2xpZGUudW5wZXJzaXN0LCBzbGlkZXMpLFxuICAgICAgcmVzdWx0c1xuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5vZl9zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQub2ZfcGVyc2lzdGVudCksXG4gICAgKTtcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplID0gc2NyYXRjaCA9PiB7XG4gICAgc2NyYXRjaCB8PiB0b19wZXJzaXN0ZW50IHw+IHNleHBfb2ZfcGVyc2lzdGVudCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZSA9IGRhdGEgPT4ge1xuICAgIGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBwZXJzaXN0ZW50X29mX3NleHAgfD4gb2ZfcGVyc2lzdGVudDtcbiAgfTtcblxuICBsZXQgc2F2ZSA9IChzY3JhdGNoKTogdW5pdCA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfc2NyYXRjaF9rZXksIHNlcmlhbGl6ZShzY3JhdGNoKSk7XG4gIH07XG5cbiAgbGV0IGluaXQgPSAoKSA9PiB7XG4gICAgbGV0IHNjcmF0Y2ggPSBvZl9wZXJzaXN0ZW50KEluaXQuc3RhcnR1cC5zY3JhdGNoKTtcbiAgICBzYXZlKHNjcmF0Y2gpO1xuICAgIHNjcmF0Y2g7XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAoKSA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfc2NyYXRjaF9rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgdHJ5KGRlc2VyaWFsaXplKGRhdGEpKSB7XG4gICAgICB8IF8gPT4gaW5pdCgpXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZXhwb3J0ID0gKCkgPT4gc2VyaWFsaXplKGxvYWQoKSk7XG4gIGxldCBpbXBvcnQgPSBkYXRhID0+IHNhdmUoZGVzZXJpYWxpemUoZGF0YSkpO1xufTtcblxubW9kdWxlIERvY3VtZW50YXRpb24gPSB7XG4gIGxldCBzYXZlX2RvY3VtZW50YXRpb25fa2V5OiBzdHJpbmcgPSBcIlNBVkVfRE9DVU1FTlRBVElPTlwiO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50ID0gUGVyc2lzdGVudERhdGEuZG9jdW1lbnRhdGlvbjtcblxuICBsZXQgcGVyc2lzdCA9ICgobmFtZSwgZWRpdG9yOiBFZGl0b3IudCkpID0+IHtcbiAgICAobmFtZSwgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KGVkaXRvci5zdGF0ZS56aXBwZXIpKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0ID0gKChuYW1lLCB6aXBwZXIpKSA9PiB7XG4gICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHppcHBlcik7XG4gICAgKG5hbWUsIEVkaXRvci5pbml0KHppcHBlciwgfnJlYWRfb25seT1mYWxzZSkpO1xuICB9O1xuXG4gIGxldCB0b19wZXJzaXN0ZW50ID0gKChzdHJpbmcsIHNsaWRlcywgcmVzdWx0cykpOiBwZXJzaXN0ZW50ID0+IChcbiAgICBzdHJpbmcsXG4gICAgTGlzdC5tYXAocGVyc2lzdCwgc2xpZGVzKSxcbiAgICByZXN1bHRzXG4gICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC50b19wZXJzaXN0ZW50KVxuICAgIHw+IE1vZGVsUmVzdWx0cy5iaW5kaW5ncyxcbiAgKTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9ICgoc3RyaW5nLCBzbGlkZXMsIHJlc3VsdHMpOiBwZXJzaXN0ZW50KSA9PiB7XG4gICAgKFxuICAgICAgc3RyaW5nLFxuICAgICAgTGlzdC5tYXAodW5wZXJzaXN0LCBzbGlkZXMpLFxuICAgICAgcmVzdWx0c1xuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5vZl9zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQub2ZfcGVyc2lzdGVudCksXG4gICAgKTtcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplID0gc2xpZGVzID0+IHtcbiAgICBzbGlkZXMgfD4gdG9fcGVyc2lzdGVudCB8PiBzZXhwX29mX3BlcnNpc3RlbnQgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gcGVyc2lzdGVudF9vZl9zZXhwIHw+IG9mX3BlcnNpc3RlbnQ7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoc2xpZGVzKTogdW5pdCA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfZG9jdW1lbnRhdGlvbl9rZXksIHNlcmlhbGl6ZShzbGlkZXMpKTtcbiAgfTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtcbiAgICBsZXQgZG9jdW1lbnRhdGlvbiA9IG9mX3BlcnNpc3RlbnQoSW5pdC5zdGFydHVwLmRvY3VtZW50YXRpb24pO1xuICAgIHNhdmUoZG9jdW1lbnRhdGlvbik7XG4gICAgZG9jdW1lbnRhdGlvbjtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICgpID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9kb2N1bWVudGF0aW9uX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCgpXG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICB0cnkoZGVzZXJpYWxpemUoZGF0YSkpIHtcbiAgICAgIHwgXyA9PiBpbml0KClcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBleHBvcnQgPSAoKSA9PiBzZXJpYWxpemUobG9hZCgpKTtcbiAgbGV0IGltcG9ydCA9IGRhdGEgPT4gc2F2ZShkZXNlcmlhbGl6ZShkYXRhKSk7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSB7XG4gIG9wZW4gRXhlcmNpc2U7XG5cbiAgbGV0IGN1cl9leGVyY2lzZV9rZXkgPSBcIkNVUl9FWEVSQ0lTRVwiO1xuXG4gIGxldCBrZXlzdHJpbmdfb2Zfa2V5ID0ga2V5ID0+IHtcbiAgICBrZXkgfD4gc2V4cF9vZl9rZXkgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQga2V5c3RyaW5nX29mID0gcCA9PiB7XG4gICAga2V5X29mKHApIHw+IGtleXN0cmluZ19vZl9rZXk7XG4gIH07XG5cbiAgbGV0IGtleV9vZl9rZXlzdHJpbmcgPSBrZXlzdHJpbmcgPT4ge1xuICAgIGtleXN0cmluZyB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IGtleV9vZl9zZXhwO1xuICB9O1xuXG4gIGxldCBzYXZlX2V4ZXJjaXNlX2tleSA9IGtleSA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZ19vZl9rZXkoa2V5KSk7XG4gIH07XG5cbiAgbGV0IHNhdmVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X29mX3N0YXRlKGV4ZXJjaXNlKTtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIGxldCB2YWx1ZSA9IEV4ZXJjaXNlLnNlcmlhbGl6ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGtleXN0cmluZywgdmFsdWUpO1xuICB9O1xuXG4gIGxldCBpbml0X2V4ZXJjaXNlID0gKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X29mKHNwZWMpO1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgbGV0IGV4ZXJjaXNlID0gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyhzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBzYXZlX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nKTtcbiAgICBleGVyY2lzZTtcbiAgfTtcblxuICBsZXQgbG9hZF9leGVyY2lzZSA9IChrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpOiBFeGVyY2lzZS5zdGF0ZSA9PiB7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShrZXlzdHJpbmcpKSB7XG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICBsZXQgZXhlcmNpc2UgPVxuICAgICAgICB0cnkoRXhlcmNpc2UuZGVzZXJpYWxpemVfZXhlcmNpc2UoZGF0YSwgfnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgIHwgXyA9PiBpbml0X2V4ZXJjaXNlKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgICAgIH07XG4gICAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nKTtcbiAgICAgIGV4ZXJjaXNlO1xuICAgIHwgTm9uZSA9PiBpbml0X2V4ZXJjaXNlKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc2F2ZSA9ICgobiwgc3BlY3MsIGV4ZXJjaXNlKSwgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBrZXkgPSBrZXlfb2YoTGlzdC5udGgoc3BlY3MsIG4pKTtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIHNhdmVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmcpO1xuICB9O1xuXG4gIGxldCBpbml0ID0gKH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQgZXhlcmNpc2VzID0ge1xuICAgICAgKFxuICAgICAgICAwLFxuICAgICAgICBFeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgICAgTGlzdC5udGgoRXhlcmNpc2VTZXR0aW5ncy5leGVyY2lzZXMsIDApXG4gICAgICAgIHw+IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMofmluc3RydWN0b3JfbW9kZSksXG4gICAgICApO1xuICAgIH07XG4gICAgc2F2ZShleGVyY2lzZXMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIGV4ZXJjaXNlcztcbiAgfTtcblxuICBsZXQgbG9hZCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5KSkge1xuICAgIHwgU29tZShrZXlzdHJpbmcpID0+XG4gICAgICBsZXQga2V5ID0ga2V5X29mX2tleXN0cmluZyhrZXlzdHJpbmcpO1xuICAgICAgc3dpdGNoIChFeGVyY2lzZS5maW5kX2tleV9vcHQoa2V5LCBzcGVjcykpIHtcbiAgICAgIHwgU29tZSgobiwgc3BlYykpID0+XG4gICAgICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGtleXN0cmluZykpIHtcbiAgICAgICAgfCBTb21lKGRhdGEpID0+XG4gICAgICAgICAgbGV0IGV4ZXJjaXNlID1cbiAgICAgICAgICAgIHRyeShkZXNlcmlhbGl6ZV9leGVyY2lzZShkYXRhLCB+c3BlYywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgICAgIHwgXyA9PiBpbml0X2V4ZXJjaXNlKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIChuLCBzcGVjcywgZXhlcmNpc2UpO1xuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAvLyBpbml0aWFsaXplIGV4ZXJjaXNlIGZyb20gc3BlY1xuICAgICAgICAgIGxldCBleGVyY2lzZSA9IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMoc3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgICAgICAgc2F2ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgICAgICAgKG4sIHNwZWNzLCBleGVyY2lzZSk7XG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICAvLyBpbnZhbGlkIGN1cnJlbnQgZXhlcmNpc2Uga2V5IHNhdmVkLCBsb2FkIHRoZSBmaXJzdCBleGVyY2lzZVxuICAgICAgICBsZXQgZmlyc3Rfc3BlYyA9IExpc3QubnRoKHNwZWNzLCAwKTtcbiAgICAgICAgbGV0IGZpcnN0X2tleSA9IEV4ZXJjaXNlLmtleV9vZihmaXJzdF9zcGVjKTtcbiAgICAgICAgKDAsIHNwZWNzLCBsb2FkX2V4ZXJjaXNlKGZpcnN0X2tleSwgZmlyc3Rfc3BlYywgfmluc3RydWN0b3JfbW9kZSkpO1xuICAgICAgfTtcbiAgICB8IE5vbmUgPT4gaW5pdCh+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHByZXBfZXhlcmNpc2VfZXhwb3J0ID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHtcbiAgICAgIGN1cl9leGVyY2lzZTpcbiAgICAgICAga2V5X29mX2tleXN0cmluZyhcbiAgICAgICAgICBPcHRpb24uZ2V0KEpzVXRpbC5nZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5KSksXG4gICAgICAgICksXG4gICAgICBleGVyY2lzZV9kYXRhOlxuICAgICAgICBzcGVjc1xuICAgICAgICB8PiBMaXN0Lm1hcChzcGVjID0+IHtcbiAgICAgICAgICAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X29mKHNwZWMpO1xuICAgICAgICAgICAgIGxldCBleGVyY2lzZSA9XG4gICAgICAgICAgICAgICBsb2FkX2V4ZXJjaXNlKGtleSwgc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICAgICAgICAgICAgIHw+IEV4ZXJjaXNlLnBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUofmluc3RydWN0b3JfbW9kZSk7XG4gICAgICAgICAgICAgKGtleSwgZXhlcmNpc2UpO1xuICAgICAgICAgICB9KSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0ID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHByZXBfZXhlcmNpc2VfZXhwb3J0KH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSlcbiAgICB8PiBzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydFxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGV4cG9ydCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0KH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IGltcG9ydCA9IChkYXRhLCB+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQgZXhlcmNpc2VfZXhwb3J0ID0gZGF0YSB8PiBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQ7XG4gICAgc2F2ZV9leGVyY2lzZV9rZXkoZXhlcmNpc2VfZXhwb3J0LmN1cl9leGVyY2lzZSk7XG4gICAgZXhlcmNpc2VfZXhwb3J0LmV4ZXJjaXNlX2RhdGFcbiAgICB8PiBMaXN0Lml0ZXIoKChrZXksIHBlcnNpc3RlbnRfc3RhdGUpKSA9PiB7XG4gICAgICAgICBsZXQgc3BlYyA9IEV4ZXJjaXNlLmZpbmRfa2V5X29wdChrZXksIHNwZWNzKTtcbiAgICAgICAgIHN3aXRjaCAoc3BlYykge1xuICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgIHByaW50X2VuZGxpbmUoXCJXYXJuaW5nOiBzYXZlZCBrZXkgZG9lcyBub3QgY29ycmVzcG9uZCB0byBleGVyY2lzZVwiKVxuICAgICAgICAgfCBTb21lKChfLCBzcGVjKSkgPT5cbiAgICAgICAgICAgc2F2ZV9leGVyY2lzZShcbiAgICAgICAgICAgICBFeGVyY2lzZS51bnBlcnNpc3Rfc3RhdGUoXG4gICAgICAgICAgICAgICBwZXJzaXN0ZW50X3N0YXRlLFxuICAgICAgICAgICAgICAgfnNwZWMsXG4gICAgICAgICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgfmluc3RydWN0b3JfbW9kZSxcbiAgICAgICAgICAgKVxuICAgICAgICAgfTtcbiAgICAgICB9KTtcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbi8qIE1PREVMOlxuXG4gICAgICBUaGUgbW9kZWwgY29uc2lzdHMgb2YgdGhyZWUgYnJvYWQgY2F0ZWdvcmllcy4gRWRpdG9ycyBpcyB0aGUgbWVhdCxcbiAgICAgIGNvbnRhaW5pbmcgdGhlIGNvZGUgY29udGVudCBhbmQgY3Vyc29yL3NlbGVjdGlvbi9idWZmZXIgc3RhdGUgZm9yIGFsbFxuICAgICAgYWN0aXZlIGVkaXRvcnMuIFNldHRpbmdzIGFyZSB1c2VyLXNlbGVjdGFibGUgcHJlZmVyZW5jZXMuIFRvZ2V0aGVyLFxuICAgICAgdGhlc2UgdHdvIGNvbXByaXNlIHRoZSBwZXJzaXN0ZW50IHN0YXRlIG9mIHRoZSBhcHBsaWNhdGlvbiB3aGljaCBpc1xuICAgICAgc2F2ZWQgdG8gbG9jYWxzdG9yZS5cblxuICAgICAgTWV0YSBvbiB0aGUgb3RoZXIgaGFuZCBjb25zaXN0cyBvZiBldmVyeXRoaW5nIHdoaWNoIGlzIG5vdFxuICAgICAgcGVyaXN0YW50LCBpbmNsdWRpbmcgdHJhbnNpdG9yeSB1aV9zdGF0ZSBzdWNoIGFzIHdoZXRoZXIgdGhlIG1vdXNlXG4gICAgICBpcyBoZWxkIGRvd24uXG5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uLCBzZXhwKV1cbnR5cGUgdGltZXN0YW1wID0gZmxvYXQ7XG5cbi8qIE5vbi1wZXJzaXN0ZW50IGFwcGxpY2F0aW9uIHN0YXRlICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG50eXBlIHVpX3N0YXRlID0ge1xuICBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gIHNob3dfYmFja3BhY2tfdGFyZ2V0czogYm9vbCxcbiAgbW91c2Vkb3duOiBib29sLFxufTtcblxubGV0IHVpX3N0YXRlX2luaXQgPSB7XG4gIGZvbnRfbWV0cmljczogRm9udE1ldHJpY3MuaW5pdCxcbiAgc2hvd19iYWNrcGFja190YXJnZXRzOiBmYWxzZSxcbiAgbW91c2Vkb3duOiBmYWxzZSxcbn07XG5cbnR5cGUgdCA9IHtcbiAgZWRpdG9yczogRWRpdG9ycy50LFxuICBzZXR0aW5nczogU2V0dGluZ3MudCxcbiAgcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gIHN0YXRpY3M6IENhY2hlZFN0YXRpY3MudCxcbiAgZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICBhY2Nlc3NpYmlsaXR5TW9kZWw6IEFjY2Vzc2liaWxpdHlNb2RlbC50LFxuICB1aV9zdGF0ZSxcbn07XG5cbmxldCBjdXRvZmYgPSAoPT09KTtcblxubGV0IG1rID0gKGVkaXRvcnMsIHJlc3VsdHMsIHN0YXRpY3MpID0+IHtcbiAgZWRpdG9ycyxcbiAgc2V0dGluZ3M6IEluaXQuc3RhcnR1cC5zZXR0aW5ncyxcbiAgcmVzdWx0cyxcbiAgc3RhdGljcyxcbiAgZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC5pbml0LFxuICBhY2Nlc3NpYmlsaXR5TW9kZWw6IEFjY2Vzc2liaWxpdHlNb2RlbC5pbml0LFxuICB1aV9zdGF0ZTogdWlfc3RhdGVfaW5pdCxcbn07XG5cbmxldCBibGFuayA9XG4gIG1rKEVkaXRvcnMuU2NyYXRjaCgwLCBbXSksIE1vZGVsUmVzdWx0cy5lbXB0eSwgQ2FjaGVkU3RhdGljcy5lbXB0eSk7XG5cbmxldCBsb2FkX2VkaXRvcnMgPVxuICAgICh+bW9kZTogU2V0dGluZ3MubW9kZSwgfmluc3RydWN0b3JfbW9kZTogYm9vbClcbiAgICA6IChFZGl0b3JzLnQsIE1vZGVsUmVzdWx0cy50KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTY3JhdGNoID0+XG4gICAgbGV0IChpZHgsIHNsaWRlcywgcmVzdWx0cykgPSBTdG9yZS5TY3JhdGNoLmxvYWQoKTtcbiAgICAoU2NyYXRjaChpZHgsIHNsaWRlcyksIHJlc3VsdHMpO1xuICB8IERvY3VtZW50YXRpb24gPT5cbiAgICBsZXQgKG5hbWUsIHNsaWRlcywgcmVzdWx0cykgPSBTdG9yZS5Eb2N1bWVudGF0aW9uLmxvYWQoKTtcbiAgICAoRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpLCByZXN1bHRzKTtcbiAgfCBFeGVyY2lzZXMgPT5cbiAgICBsZXQgKG4sIHNwZWNzLCBleGVyY2lzZSkgPVxuICAgICAgU3RvcmUuRXhlcmNpc2UubG9hZChcbiAgICAgICAgfnNwZWNzPUV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzLFxuICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgKTtcbiAgICAoRXhlcmNpc2VzKG4sIHNwZWNzLCBleGVyY2lzZSksIE1vZGVsUmVzdWx0cy5lbXB0eSk7XG4gIH07XG5cbmxldCBzYXZlX2VkaXRvcnMgPVxuICAgIChlZGl0b3JzOiBFZGl0b3JzLnQsIHJlc3VsdHM6IE1vZGVsUmVzdWx0cy50LCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKVxuICAgIDogdW5pdCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKG4sIHNsaWRlcykgPT4gU3RvcmUuU2NyYXRjaC5zYXZlKChuLCBzbGlkZXMsIHJlc3VsdHMpKVxuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIFN0b3JlLkRvY3VtZW50YXRpb24uc2F2ZSgobmFtZSwgc2xpZGVzLCByZXN1bHRzKSlcbiAgfCBFeGVyY2lzZXMobiwgc3BlY3MsIGV4ZXJjaXNlKSA9PlxuICAgIFN0b3JlLkV4ZXJjaXNlLnNhdmUoKG4sIHNwZWNzLCBleGVyY2lzZSksIH5pbnN0cnVjdG9yX21vZGUpXG4gIH07XG5cbmxldCBsb2FkID0gKGluaXRfbW9kZWw6IHQpOiB0ID0+IHtcbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MubG9hZCgpO1xuICBsZXQgZXhwbGFpblRoaXNNb2RlbCA9IFN0b3JlLkV4cGxhaW5UaGlzTW9kZWwubG9hZCgpO1xuICBsZXQgKGVkaXRvcnMsIHJlc3VsdHMpID1cbiAgICBsb2FkX2VkaXRvcnMoXG4gICAgICB+bW9kZT1zZXR0aW5ncy5tb2RlLFxuICAgICAgfmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAgbGV0IGFjY2Vzc2liaWxpdHlNb2RlbCA9IGluaXRfbW9kZWwuYWNjZXNzaWJpbGl0eU1vZGVsO1xuICBsZXQgdWlfc3RhdGUgPSBpbml0X21vZGVsLnVpX3N0YXRlO1xuICBsZXQgc3RhdGljcyA9IEVkaXRvcnMubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICB7XG4gICAgZWRpdG9ycyxcbiAgICBzZXR0aW5ncyxcbiAgICByZXN1bHRzLFxuICAgIHN0YXRpY3MsXG4gICAgZXhwbGFpblRoaXNNb2RlbCxcbiAgICBhY2Nlc3NpYmlsaXR5TW9kZWwsXG4gICAgdWlfc3RhdGUsXG4gIH07XG59O1xuXG5sZXQgc2F2ZSA9ICh7ZWRpdG9ycywgc2V0dGluZ3MsIGV4cGxhaW5UaGlzTW9kZWwsIHJlc3VsdHMsIF99OiB0KSA9PiB7XG4gIHNhdmVfZWRpdG9ycyhlZGl0b3JzLCByZXN1bHRzLCB+aW5zdHJ1Y3Rvcl9tb2RlPXNldHRpbmdzLmluc3RydWN0b3JfbW9kZSk7XG4gIFN0b3JlLkV4cGxhaW5UaGlzTW9kZWwuc2F2ZShleHBsYWluVGhpc01vZGVsKTtcbiAgU3RvcmUuU2V0dGluZ3Muc2F2ZShzZXR0aW5ncyk7XG59O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuID0gKG1vZGVsOiB0KSA9PiB7XG4gIHNhdmUobW9kZWwpO1xuICBPayhtb2RlbCk7XG59O1xubGV0IHJlc2V0ID0gKG1vZGVsOiB0KTogdCA9PiB7XG4gIC8qIFJlc2V0IG1vZGVsIHRvIGRlZmF1bHQsIGluY2x1ZGluZyBpbiBsb2NhbHN0b3JhZ2UsXG4gICAgIGJ1dCBkb24ndCBvdGhlcndpc2UgZXJhc2UgbG9jYWxzdG9yYWdlLCBhbGxvd2luZ1xuICAgICBlLmcuIGFwaSBrZXlzIHRvIHBlcnNpc3QgKi9cbiAgaWdub3JlKFN0b3JlLlNldHRpbmdzLmluaXQoKSk7XG4gIGlnbm9yZShTdG9yZS5FeHBsYWluVGhpc01vZGVsLmluaXQoKSk7XG4gIGlnbm9yZShTdG9yZS5TY3JhdGNoLmluaXQoKSk7XG4gIGlnbm9yZShTdG9yZS5Eb2N1bWVudGF0aW9uLmluaXQoKSk7XG4gIGlnbm9yZShTdG9yZS5FeGVyY2lzZS5pbml0KH5pbnN0cnVjdG9yX21vZGU9dHJ1ZSkpO1xuICBsZXQgbmV3X21vZGVsID0gbG9hZChibGFuayk7XG4gIHtcbiAgICAuLi5uZXdfbW9kZWwsXG4gICAgdWlfc3RhdGU6IHtcbiAgICAgIC4uLm1vZGVsLnVpX3N0YXRlLFxuICAgICAgZm9udF9tZXRyaWNzOiBtb2RlbC51aV9zdGF0ZS5mb250X21ldHJpY3MsXG4gICAgfSxcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBDdXJzb3JQb3NcbiAgfCBDdXJzb3JJbmZvXG4gIHwgQ3Vyc29yTW92ZVxuICB8IENvbnRleHRJbmZvO1xuXG5sZXQgdG9fc3RyaW5nID0gKHF1ZXJ5OiB0KTogc3RyaW5nID0+XG4gIHN3aXRjaCAocXVlcnkpIHtcbiAgfCBDdXJzb3JQb3MgPT4gXCJDdXJzb3JQb3NcIlxuICB8IEN1cnNvckluZm8gPT4gXCJDdXJzb3JJbmZvXCJcbiAgfCBDdXJzb3JNb3ZlID0+IFwiQ3Vyc29yTW92ZVwiXG4gIHwgQ29udGV4dEluZm8gPT4gXCJDb250ZXh0SW5mb1wiXG4gIH07XG5cbmxldCBnZXRfcG9zaXRpb24gPSAoaWQ6IElkLnQsIG1lYXN1cmVkOiBNZWFzdXJlZC50KSA9PlxuICBzd2l0Y2ggKE1lYXN1cmVkLmZpbmRfYnlfaWQoaWQsIG1lYXN1cmVkKSkge1xuICB8IFNvbWUobSkgPT4gU29tZShtLmxhc3QpXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBpbmZvX2V4cF9zdHIgPSAoZXhwOiBJbmZvLmV4cCk6IHN0cmluZyA9PlxuICBcIkV4cHJlc3Npb24uIFwiICsrIChleHAuY2xzIHw+IFRlcm0uQ2xzLnNob3cpICsrIFwiLiBcIiArKyAoZXhwLnR5IHw+IFR5cC5zaG93KTtcblxubGV0IGluZm9fcGF0X3N0ciA9IChwYXQ6IEluZm8ucGF0KTogc3RyaW5nID0+XG4gIFwiUGF0dGVybi4gXCIgKysgKHBhdC5jbHMgfD4gVGVybS5DbHMuc2hvdykgKysgXCIuIFwiICsrIChwYXQudHkgfD4gVHlwLnNob3cpO1xuXG5sZXQgaW5mb190eXBfc3RyID0gKHR5cDogSW5mby50eXApOiBzdHJpbmcgPT5cbiAgXCJUeXBlLiBcIiArKyAodHlwLmNscyB8PiBUZXJtLkNscy5zaG93KTtcblxubGV0IGluZm9fdHBhdF9zdHIgPSAodHBhdDogSW5mby50cGF0KTogc3RyaW5nID0+XG4gIFwiVHlwZSBQYXR0ZXJuLiBcIiArKyAodHBhdC5jbHMgfD4gVGVybS5DbHMuc2hvdyk7XG5cbmxldCBpbmZvX3NlY19zdHIgPSAoc2VjOiBJbmZvLnNlY29uZGFyeSk6IHN0cmluZyA9PlxuICBcIlNlY29uZGFyeS4gXCIgKysgKHNlYy5jbHMgfD4gVGVybS5DbHMuc2hvdyk7XG5cbmxldCBpbmZvX3N0ciA9IChpbmZvOiBJbmZvLnQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoIChpbmZvKSB7XG4gIHwgSW5mb0V4cChleHApID0+IGluZm9fZXhwX3N0cihleHApXG4gIHwgSW5mb1BhdChwYXQpID0+IGluZm9fcGF0X3N0cihwYXQpXG4gIHwgSW5mb1R5cCh0eXApID0+IGluZm9fdHlwX3N0cih0eXApXG4gIHwgSW5mb1RQYXQodHBhdCkgPT4gaW5mb190cGF0X3N0cih0cGF0KVxuICB8IFNlY29uZGFyeShzZWMpID0+IGluZm9fc2VjX3N0cihzZWMpXG4gIH07XG5cbmxldCBxdWVyeV9yZXBseSA9ICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIHF1ZXJ5OiB0LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICBsZXQgdW5zZWxlY3RlZCA9IFppcHBlci51bnNlbGVjdF9hbmRfemlwKHppcHBlcik7XG4gIGxldCAodGVybSwgXykgPSBNYWtlVGVybS5nbyh1bnNlbGVjdGVkKTtcbiAgbGV0IGluZm9fbWFwID0gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwKHNldHRpbmdzLmNvcmUsIHRlcm0pO1xuICBzd2l0Y2ggKHF1ZXJ5KSB7XG4gIHwgQ3Vyc29yUG9zID0+XG4gICAgbGV0IGluZGV4ID0gSW5kaWNhdGVkLmluZGV4KHppcHBlcik7XG4gICAgbGV0IHBvc2l0aW9uID1cbiAgICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgIHwgU29tZShpZCkgPT4gZ2V0X3Bvc2l0aW9uKGlkLCBlZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZClcbiAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICB9O1xuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICB8IFNvbWUoe3JvdywgY29sfSkgPT5cbiAgICAgIFwiSXQgaXMgb24gcm93IFwiXG4gICAgICArKyBzdHJpbmdfb2ZfaW50KHJvdylcbiAgICAgICsrIFwiIGNvbHVtbiBcIlxuICAgICAgKysgc3RyaW5nX29mX2ludChjb2wpXG4gICAgICArKyBcIi5cIlxuICAgIHwgTm9uZSA9PiBcIkVycm9yIG9jY3VycyB3aGVuIHF1ZXJ5aW5nIGN1cnNvciBwb3NpdGlvbi5cIlxuICAgIH07XG4gIHwgQ3Vyc29ySW5mbyA9PlxuICAgIHN3aXRjaCAoemlwcGVyLmJhY2twYWNrLCBJbmRpY2F0ZWQuaW5kZXgoemlwcGVyKSkge1xuICAgIHwgKFtfLCAuLi5fXSwgXykgPT4gXCJObyBpbmZvcm1hdGlvbiB3aGlsZSBiYWNrcGFjayBpbiB1c2VcIlxuICAgIHwgKF8sIE5vbmUpID0+IFwiTm8gY3Vyc29yIGluIHByb2dyYW1cIlxuICAgIHwgKF8sIFNvbWUoaWQpKSA9PlxuICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIGluZm9fbWFwKSkge1xuICAgICAgfCBOb25lID0+IFwiV2hpdGVzcGFjZSBvciBDb21tZW50XCJcbiAgICAgIHwgU29tZShjaSkgPT4gaW5mb19zdHIoY2kpXG4gICAgICB9XG4gICAgfVxuICB8IEN1cnNvck1vdmUgPT5cbiAgICAvLyB3aGVuIHRoZSBsYXN0IGFjdGlvbiBpcyBtb3ZpbmcgdXAgb3IgZG93biwgd2Ugd2lsbCByZWFkIHRoZSBmdWxsIGxpbmUsIG90aGVyd2lzZSB0aGUgY2hhcmFjdGVyIHRoZSBjdXJzb3IgYXRcbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIHN3aXRjaCAoZWRpdG9yLmhpc3RvcnkpIHtcbiAgICAgIHwgKF8sIFtdKSA9PiBOb25lXG4gICAgICB8IChfLCBbKGFjdGlvbiwgXyksIC4uLl9dKSA9PiBTb21lKGFjdGlvbilcbiAgICAgIH07XG5cbiAgICBsZXQgaXNfbGluZV9uZWVkZWQgPVxuICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIHwgU29tZShNb3ZlKEV4dHJlbWUoVXApKSlcbiAgICAgIHwgU29tZShNb3ZlKEV4dHJlbWUoRG93bikpKVxuICAgICAgfCBTb21lKE1vdmUoTG9jYWwoVXApKSlcbiAgICAgIHwgU29tZShNb3ZlKExvY2FsKERvd24pKSkgPT4gdHJ1ZVxuICAgICAgfCBfID0+IGZhbHNlXG4gICAgICB9O1xuXG4gICAgbGV0IHByb2dyYW0gPSBQcmludGVyLnRvX3N0cmluZ19lZGl0b3IoZWRpdG9yKTtcbiAgICBsZXQgcm93cyA9IFN0cmluZy5zcGxpdF9vbl9jaGFyKCdcXG4nLCBwcm9ncmFtKTtcbiAgICBzd2l0Y2ggKEVkaXRvci5jYXJldF9wb2ludChlZGl0b3IpKSB7XG4gICAgfCB7cm93LCBjb2x9ID0+XG4gICAgICBzd2l0Y2ggKExpc3QubnRoX29wdChyb3dzLCByb3cpKSB7XG4gICAgICB8IFNvbWUoc3RyKSA9PlxuICAgICAgICBpc19saW5lX25lZWRlZFxuICAgICAgICAgID8gc3RyXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBzd2l0Y2ggKFN0cmluZy5zdWIoc3RyLCBtaW4oY29sLCBTdHJpbmcubGVuZ3RoKHN0cikgLSAxKSwgMSkpIHtcbiAgICAgICAgICAgIHwgcyA9PiBzXG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gXCJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIHwgTm9uZSA9PiBcIlwiXG4gICAgICB9XG4gICAgfTtcbiAgfCBDb250ZXh0SW5mbyA9PlxuICAgIGxldCBjb250ZXh0X2VudHJ5ID0gKGVudHJ5OiBIYXozbGNvcmUuQ3R4LmVudHJ5KSA9PlxuICAgICAgc3dpdGNoIChlbnRyeSkge1xuICAgICAgfCBWYXJFbnRyeSh7bmFtZSwgdHlwLCBffSlcbiAgICAgIHwgQ29uc3RydWN0b3JFbnRyeSh7bmFtZSwgdHlwLCBffSkgPT5cbiAgICAgICAgbmFtZSArKyBcIiBvZiB0eXBlIFwiICsrICh0eXAgfD4gVHlwLnNob3cpXG4gICAgICB8IFRWYXJFbnRyeSh7bmFtZSwga2luZCwgX30pID0+XG4gICAgICAgIG5hbWUgKysgXCIgb2Yga2luZCBcIiArKyAoa2luZCB8PiBLaW5kLnNob3cpXG4gICAgICB9O1xuICAgIHN3aXRjaCAoemlwcGVyLmJhY2twYWNrLCBJbmRpY2F0ZWQuaW5kZXgoemlwcGVyKSkge1xuICAgIHwgKFtfLCAuLi5fXSwgXykgPT4gXCJcIlxuICAgIHwgKF8sIE5vbmUpID0+IFwiXCJcbiAgICB8IChfLCBTb21lKGlkKSkgPT5cbiAgICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBpbmZvX21hcCkpIHtcbiAgICAgIHwgTm9uZSA9PiBcIlwiXG4gICAgICB8IFNvbWUoY2kpID0+XG4gICAgICAgIEhhejNsY29yZS5JbmZvLmN0eF9vZihjaSlcbiAgICAgICAgfD4gSGF6M2xjb3JlLkN0eC5maWx0ZXJfZHVwbGljYXRlc1xuICAgICAgICB8PiBMaXN0LnJldlxuICAgICAgICB8PiBMaXN0Lm1hcChjb250ZXh0X2VudHJ5KVxuICAgICAgICB8PiBTdHJpbmcuY29uY2F0KFwiXFxuXCIpXG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb24gPVxuICB8IFNob3dSZWNvcmRcbiAgfCBTaG93Q2FzZUNsYXVzZXNcbiAgfCBTaG93Rm5Cb2RpZXNcbiAgfCBTaG93Q2FzdHNcbiAgfCBTaG93Rml4cG9pbnRzXG4gIHwgU2hvd0xvb2t1cHNcbiAgfCBTaG93RmlsdGVyc1xuICB8IFNob3dTZXR0aW5ncztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZXR0aW5nc19hY3Rpb24gPVxuICB8IENhcHRpb25zXG4gIHwgU2Vjb25kYXJ5SWNvbnNcbiAgfCBTdGF0aWNzXG4gIHwgRHluYW1pY3NcbiAgfCBBc3Npc3RcbiAgfCBFbGFib3JhdGVcbiAgfCBCZW5jaG1hcmtcbiAgfCBDb250ZXh0SW5zcGVjdG9yXG4gIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgfCBFdmFsdWF0aW9uKGV2YWx1YXRpb25fc2V0dGluZ3NfYWN0aW9uKVxuICB8IEV4cGxhaW5UaGlzKEV4cGxhaW5UaGlzTW9kZWwuU2V0dGluZ3MuYWN0aW9uKVxuICB8IEFjY2Vzc2liaWxpdHkoQWNjZXNzaWJpbGl0eU1vZGVsLlNldHRpbmdzLmFjdGlvbilcbiAgfCBNb2RlKFNldHRpbmdzLm1vZGUpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0ZXBwZXJfYWN0aW9uID1cbiAgfCBTdGVwRm9yd2FyZChpbnQpXG4gIHwgU3RlcEJhY2t3YXJkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFnZW50ID1cbiAgfCBUeURpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFnZW50X2FjdGlvbiA9XG4gIHwgUHJvbXB0KGFnZW50KVxuICB8IEFjY2VwdFN1Z2dlc3Rpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2V0X21ldGEgPVxuICB8IE1vdXNlZG93blxuICB8IE1vdXNldXBcbiAgfCBTaG93QmFja3BhY2tUYXJnZXRzKGJvb2wpXG4gIHwgRm9udE1ldHJpY3MoRm9udE1ldHJpY3MudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYmVuY2htYXJrX2FjdGlvbiA9XG4gIHwgU3RhcnRcbiAgfCBGaW5pc2g7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIC8qIG1ldGEgKi9cbiAgfCBSZXNldFxuICB8IFNldChzZXR0aW5nc19hY3Rpb24pXG4gIHwgU2V0TWV0YShzZXRfbWV0YSlcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKEV4cGxhaW5UaGlzVXBkYXRlLnVwZGF0ZSlcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IERlYnVnQ29uc29sZShzdHJpbmcpXG4gIC8qIGVkaXRvcnMgKi9cbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBJbml0SW1wb3J0QWxsKFtAb3BhcXVlXSBKc19vZl9vY2FtbC5Kcy50KEpzX29mX29jYW1sLkZpbGUuZmlsZSkpXG4gIHwgRmluaXNoSW1wb3J0QWxsKG9wdGlvbihzdHJpbmcpKVxuICB8IFN3aXRjaEVkaXRvcihFeGVyY2lzZS5wb3MpIC8vZXhlcmNpc2Vtb2RlIG9ubHlcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoc3RyaW5nKSAvL2V4YW1wbGVtb2RlIG9ubHlcbiAgLy8gZWRpdG9yczogc2NyYXRjaG1vZGUgb25seVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKFtAb3BhcXVlXSBKc19vZl9vY2FtbC5Kcy50KEpzX29mX29jYW1sLkZpbGUuZmlsZSkpXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChvcHRpb24oc3RyaW5nKSlcbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoaW50KVxuICAvKiBlZGl0b3IgKi9cbiAgfCBUQUJcbiAgfCBTYXZlXG4gIHwgUGVyZm9ybUFjdGlvbihBY3Rpb24udClcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IEN1dFxuICB8IENvcHlcbiAgfCBQYXN0ZShzdHJpbmcpXG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBNb3ZlVG9OZXh0SG9sZShEaXJlY3Rpb24udClcbiAgfCBCZW5jaG1hcmsoYmVuY2htYXJrX2FjdGlvbilcbiAgfCBBc3Npc3RhbnQoYWdlbnRfYWN0aW9uKVxuICB8IFF1ZXJ5SW5wdXRcbiAgfCBQZXJmb3JtUXVlcnkoUXVlcnkudClcbiAgfCBUb2dnbGVTdGVwcGVyKE1vZGVsUmVzdWx0cy5LZXkudClcbiAgfCBTdGVwcGVyQWN0aW9uKE1vZGVsUmVzdWx0cy5LZXkudCwgc3RlcHBlcl9hY3Rpb24pXG4gIHwgVXBkYXRlUmVzdWx0KE1vZGVsUmVzdWx0cy50KTtcblxubW9kdWxlIEZhaWx1cmUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IENhbnRVbmRvXG4gICAgfCBDYW50UmVkb1xuICAgIHwgQ2FudFBhc3RlXG4gICAgfCBDYW50UmVzZXRcbiAgICB8IENhbnRTdWdnZXN0XG4gICAgfCBGYWlsZWRUb0xvYWRcbiAgICB8IEZhaWxlZFRvU3dpdGNoXG4gICAgfCBGYWlsZWRUb1BlcmZvcm0oQWN0aW9uLkZhaWx1cmUudClcbiAgICB8IEV4Y2VwdGlvbihzdHJpbmcpO1xufTtcblxubW9kdWxlIFJlc3VsdCA9IHtcbiAgaW5jbHVkZSBSZXN1bHQ7XG4gIHR5cGUgdCgnc3VjY2VzcykgPSBSZXN1bHQudCgnc3VjY2VzcywgRmFpbHVyZS50KTtcbn07XG5cbmxldCBpc19lZGl0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+IEFjdGlvbi5pc19lZGl0KGEpXG4gIHwgU2V0KHNfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc19hY3Rpb24pIHtcbiAgICB8IE1vZGUoXykgPT4gdHJ1ZVxuICAgIHwgQ2FwdGlvbnNcbiAgICB8IFNlY29uZGFyeUljb25zXG4gICAgfCBTdGF0aWNzXG4gICAgfCBBc3Npc3RcbiAgICB8IEVsYWJvcmF0ZVxuICAgIHwgRXhwbGFpblRoaXMoXylcbiAgICB8IER5bmFtaWNzXG4gICAgfCBCZW5jaG1hcmtcbiAgICB8IENvbnRleHRJbnNwZWN0b3JcbiAgICB8IEluc3RydWN0b3JNb2RlXG4gICAgfCBFdmFsdWF0aW9uKF8pXG4gICAgfCBBY2Nlc3NpYmlsaXR5KF8pID0+IGZhbHNlXG4gICAgfVxuICB8IFNldE1ldGEobWV0YV9hY3Rpb24pID0+XG4gICAgc3dpdGNoIChtZXRhX2FjdGlvbikge1xuICAgIHwgTW91c2Vkb3duXG4gICAgfCBNb3VzZXVwXG4gICAgfCBTaG93QmFja3BhY2tUYXJnZXRzKF8pXG4gICAgfCBGb250TWV0cmljcyhfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBDdXRcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IFBhc3RlKF8pXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXylcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbilcbiAgfCBSZXNldCA9PiB0cnVlXG4gIHwgVXBkYXRlUmVzdWx0KF8pXG4gIHwgU3dpdGNoRWRpdG9yKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBTYXZlXG4gIHwgQ29weVxuICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXylcbiAgfCBEZWJ1Z0NvbnNvbGUoXylcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IEJlbmNobWFyayhfKVxuICB8IFRBQlxuICB8IEFzc2lzdGFudChQcm9tcHQoXykpXG4gIHwgUXVlcnlJbnB1dFxuICB8IFBlcmZvcm1RdWVyeShfKSA9PiBmYWxzZTtcblxubGV0IHJlZXZhbHVhdGVfcG9zdF91cGRhdGU6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IFBlcmZvcm1BY3Rpb24oYSkgPT4gQWN0aW9uLmlzX2VkaXQoYSlcbiAgfCBTZXQoc19hY3Rpb24pID0+XG4gICAgc3dpdGNoIChzX2FjdGlvbikge1xuICAgIHwgQXNzaXN0XG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IENvbnRleHRJbnNwZWN0b3JcbiAgICB8IEJlbmNobWFya1xuICAgIHwgRXhwbGFpblRoaXMoXylcbiAgICB8IEV2YWx1YXRpb24oXG4gICAgICAgIFNob3dDYXNlQ2xhdXNlcyB8IFNob3dGbkJvZGllcyB8IFNob3dDYXN0cyB8IFNob3dSZWNvcmQgfCBTaG93Rml4cG9pbnRzIHxcbiAgICAgICAgU2hvd0xvb2t1cHMgfFxuICAgICAgICBTaG93RmlsdGVycyB8XG4gICAgICAgIFNob3dTZXR0aW5ncyxcbiAgICAgICkgPT5cbiAgICAgIGZhbHNlXG4gICAgfCBFbGFib3JhdGVcbiAgICB8IER5bmFtaWNzXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgTW9kZShfKVxuICAgIHwgQWNjZXNzaWJpbGl0eShfKSA9PiB0cnVlXG4gICAgfVxuICB8IFNldE1ldGEobWV0YV9hY3Rpb24pID0+XG4gICAgc3dpdGNoIChtZXRhX2FjdGlvbikge1xuICAgIHwgTW91c2Vkb3duXG4gICAgfCBNb3VzZXVwXG4gICAgfCBTaG93QmFja3BhY2tUYXJnZXRzKF8pXG4gICAgfCBGb250TWV0cmljcyhfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbikgPT4gdHJ1ZVxuICB8IEFzc2lzdGFudChQcm9tcHQoXykpID0+IGZhbHNlXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBTYXZlXG4gIHwgQ29weVxuICB8IEluaXRJbXBvcnRBbGwoXylcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IFVwZGF0ZVJlc3VsdChfKVxuICB8IFN3aXRjaEVkaXRvcihfKVxuICB8IERlYnVnQ29uc29sZShfKVxuICB8IFRBQlxuICB8IEJlbmNobWFyayhfKVxuICB8IFF1ZXJ5SW5wdXRcbiAgfCBQZXJmb3JtUXVlcnkoXykgPT4gZmFsc2VcbiAgfCBTdGVwcGVyQWN0aW9uKF8sIFN0ZXBGb3J3YXJkKF8pIHwgU3RlcEJhY2t3YXJkKVxuICB8IFRvZ2dsZVN0ZXBwZXIoXylcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoXylcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXylcbiAgfCBSZXNldFxuICB8IEN1dFxuICB8IFBhc3RlKF8pXG4gIHwgVW5kb1xuICB8IFJlZG8gPT4gdHJ1ZTtcblxubGV0IHNob3VsZF9zY3JvbGxfdG9fY2FyZXQgPVxuICBmdW5cbiAgfCBTZXQoc19hY3Rpb24pID0+XG4gICAgc3dpdGNoIChzX2FjdGlvbikge1xuICAgIHwgTW9kZShfKSA9PiB0cnVlXG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IEFzc2lzdFxuICAgIHwgRWxhYm9yYXRlXG4gICAgfCBFeHBsYWluVGhpcyhfKVxuICAgIHwgRHluYW1pY3NcbiAgICB8IEJlbmNobWFya1xuICAgIHwgQ29udGV4dEluc3BlY3RvclxuICAgIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgICB8IEV2YWx1YXRpb24oXylcbiAgICB8IEFjY2Vzc2liaWxpdHkoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgU2V0TWV0YShtZXRhX2FjdGlvbikgPT5cbiAgICBzd2l0Y2ggKG1ldGFfYWN0aW9uKSB7XG4gICAgfCBGb250TWV0cmljcyhfKSA9PiB0cnVlXG4gICAgfCBNb3VzZWRvd25cbiAgICB8IE1vdXNldXBcbiAgICB8IFNob3dCYWNrcGFja1RhcmdldHMoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgQXNzaXN0YW50KFByb21wdChfKSlcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBUb2dnbGVTdGVwcGVyKF8pXG4gIHwgU3RlcHBlckFjdGlvbihfLCBTdGVwQmFja3dhcmQgfCBTdGVwRm9yd2FyZChfKSkgPT4gZmFsc2VcbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbikgPT4gdHJ1ZVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBTd2l0Y2hFZGl0b3IoXylcbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoXylcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXylcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IFJlc2V0XG4gIHwgQ29weVxuICB8IFBhc3RlKF8pXG4gIHwgQ3V0XG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IFRBQiA9PiB0cnVlXG4gIHwgUGVyZm9ybUFjdGlvbihhKSA9PlxuICAgIHN3aXRjaCAoYSkge1xuICAgIHwgTW92ZShfKVxuICAgIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgICB8IEp1bXAoXylcbiAgICB8IFNlbGVjdChSZXNpemUoXykgfCBUZXJtKF8pIHwgU21hcnQgfCBUaWxlKF8pKVxuICAgIHwgRGVzdHJ1Y3QoXylcbiAgICB8IEluc2VydChfKVxuICAgIHwgUGlja191cFxuICAgIHwgUHV0X2Rvd25cbiAgICB8IFJvdGF0ZUJhY2twYWNrXG4gICAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldChfKSA9PiB0cnVlXG4gICAgfCBVbnNlbGVjdChfKVxuICAgIHwgU2VsZWN0KEFsbCkgPT4gZmFsc2VcbiAgICB9XG4gIHwgU2F2ZVxuICB8IEluaXRJbXBvcnRBbGwoXylcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IERlYnVnQ29uc29sZShfKVxuICB8IEJlbmNobWFyayhfKVxuICB8IFF1ZXJ5SW5wdXRcbiAgfCBQZXJmb3JtUXVlcnkoXykgPT4gZmFsc2U7XG4iLCJvcGVuIEhhejNsY29yZTtcbmluY2x1ZGUgVXBkYXRlQWN0aW9uO1xuXG4vKiBOT1RFOiB0aGlzIGlzIGR1cGxpY2F0ZWQgZnJvbSBVcGRhdGUgKi9cbmxldCBwZXJmb3JtX2FjdGlvbiA9IChtb2RlbDogTW9kZWwudCwgYTogQWN0aW9uLnQpOiBSZXN1bHQudChNb2RlbC50KSA9PiB7XG4gIGxldCBlZF9pbml0ID0gRWRpdG9ycy5nZXRfZWRpdG9yKG1vZGVsLmVkaXRvcnMpO1xuICBzd2l0Y2ggKEhhejNsY29yZS5QZXJmb3JtLmdvKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlLCBhLCBlZF9pbml0KSkge1xuICB8IEVycm9yKGVycikgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGVycikpXG4gIHwgT2soZWQpID0+IE9rKHsuLi5tb2RlbCwgZWRpdG9yczogRWRpdG9ycy5wdXRfZWRpdG9yKGVkLCBtb2RlbC5lZGl0b3JzKX0pXG4gIH07XG59O1xuXG5sZXQgcmVzZXRfYnVmZmVyID0gKG1vZGVsOiBNb2RlbC50KSA9PiB7XG4gIGxldCBlZCA9IG1vZGVsLmVkaXRvcnMgfD4gRWRpdG9ycy5nZXRfZWRpdG9yO1xuICBsZXQgeiA9IGVkLnN0YXRlLnppcHBlcjtcbiAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gIHwgQnVmZmVyKF8pID0+XG4gICAgc3dpdGNoIChQZXJmb3JtLmdvX3oofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUsIERlc3RydWN0KExlZnQpLCB6KSkge1xuICAgIHwgRXJyb3IoXykgPT4gbW9kZWxcbiAgICB8IE9rKHopID0+XG4gICAgICBsZXQgZWQgPSBFZGl0b3IubmV3X3N0YXRlKERlc3RydWN0KExlZnQpLCB6LCBlZCk7XG4gICAgICAvL1RPRE8oYW5kcmV3KTogZml4IGRvdWJsZSBhY3Rpb25cbiAgICAgIHsuLi5tb2RlbCwgZWRpdG9yczogRWRpdG9ycy5wdXRfZWRpdG9yKGVkLCBtb2RlbC5lZGl0b3JzKX07XG4gICAgfVxuICB8IF8gPT4gbW9kZWxcbiAgfTtcbn07XG5cbmxldCBhcHBseSA9XG4gICAgKFxuICAgICAge3NldHRpbmdzLCBffSBhcyBtb2RlbDogTW9kZWwudCxcbiAgICAgIHVwZGF0ZTogYWdlbnRfYWN0aW9uLFxuICAgICAgfnNjaGVkdWxlX2FjdGlvbixcbiAgICAgIH5zdGF0ZSxcbiAgICAgIH5tYWluLFxuICAgIClcbiAgICA6IFJlc3VsdC50KE1vZGVsLnQpID0+IHtcbiAgbGV0IGVkaXRvciA9IG1vZGVsLmVkaXRvcnMgfD4gRWRpdG9ycy5nZXRfZWRpdG9yO1xuICBsZXQgeiA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gIHN3aXRjaCAodXBkYXRlKSB7XG4gIHwgUHJvbXB0KFR5RGkpID0+XG4gICAgbGV0IGN0eF9pbml0ID0gRWRpdG9ycy5nZXRfY3R4X2luaXQofnNldHRpbmdzLCBtb2RlbC5lZGl0b3JzKTtcbiAgICBzd2l0Y2ggKFR5RGkuc2V0X2J1ZmZlcih+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgfmN0eD1jdHhfaW5pdCwgeikpIHtcbiAgICB8IE5vbmUgPT4gT2sobW9kZWwpXG4gICAgfCBTb21lKHopID0+XG4gICAgICBsZXQgZWQgPSBFZGl0b3IubmV3X3N0YXRlKFBpY2tfdXAsIHosIGVkaXRvcik7XG4gICAgICAvL1RPRE86IGFkZCBjb3JyZWN0IGFjdGlvbiB0byBoaXN0b3J5IChQaWNrX3VwIGlzIHdyb25nKVxuICAgICAgbGV0IGVkaXRvcnMgPSBFZGl0b3JzLnB1dF9lZGl0b3IoZWQsIG1vZGVsLmVkaXRvcnMpO1xuICAgICAgT2soey4uLm1vZGVsLCBlZGl0b3JzfSk7XG4gICAgfTtcbiAgfCBBY2NlcHRTdWdnZXN0aW9uID0+XG4gICAgcHJpbnRfZW5kbGluZShcImFjY2VwdGluZyBzdWdnZXN0aW9uXCIpO1xuICAgIGxldCB0cmltID0gQXNzaXN0YW50RXhwYW5kZXIudHJpbTtcbiAgICBzd2l0Y2ggKHouc2VsZWN0aW9uLm1vZGUpIHtcbiAgICB8IE5vcm1hbCA9PiBPayhtb2RlbClcbiAgICB8IEJ1ZmZlcihQYXJzZWQpID0+IHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBVbnNlbGVjdChTb21lKFJpZ2h0KSkpXG4gICAgfCBCdWZmZXIoVW5wYXJzZWQpID0+XG4gICAgICBzd2l0Y2ggKFR5RGkuZ2V0X2J1ZmZlcih6KSkge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgLyogVGhpcyBjYXNlIHNob3VsZG4ndCBoYXBwZW4gaWYgd2UgYXNzdW1lIHRoYXQgd2UgcHJldmFsaWRhdGVcbiAgICAgICAqIGV2ZXJ5dGhpbmcgd2UgcHV0IGluIHRoZSB1bnBhcnNlZCBidWZmZXIqL1xuICAgICAgfCBTb21lKGNvbXBsZXRpb24pIHdoZW4gU3RyaW5nLmNvbnRhaW5zKGNvbXBsZXRpb24sICcgJykgPT5cbiAgICAgICAgLyogU2xpZ2h0bHkgaGFja3kuIFdlIGFzc3VtZSB0aGF0IGlmIGEgY29tcGxldGlvbiBzdHJpbmcgaGFzXG4gICAgICAgICAqIHNwYWNlcyBpbiBpdCwgdGhhdCBtZWFucyBpdCB3aWxsIGhhdmUgYSBob2xlIGluIGl0LiBUaGlzXG4gICAgICAgICAqIGlzIGEgbm9uLWVzc2VudGlhbCBpbnZhcmlhbnQgY3VycmVudGx5IG1haW50YWluZWQgaW4gVHlEaS5cbiAgICAgICAgICogSW4gc3VjaCBhIGNhc2UsIHdlIGluc2VydCB0aGUgY29tcGxldGlvbiBhcyBub3JtYWwgYnlcbiAgICAgICAgICogcGFzdGluZywgdGhlbiByZXR1cm4gdG8gdGhlIGJlZ2lubmluZyBhbmQgYWR2YW5jZSB0byB0aGVcbiAgICAgICAgICogZmlyc3QgaG9sZS4gVGhpcyBzaG91bGQgYmUgcmV2aXNpdGVkIGlmIGNvbXBsZXRpb25zIGFyZVxuICAgICAgICAgKiByZWZhY3RvcmVkIHRvIHVzZSBhIG1vcmUgc3RydWN0dXJlZCBidWZmZXIgZm9ybWF0ICovXG4gICAgICAgIG1vZHVsZSBNID0gKHZhbCBFZGl0b3IuTWV0YS5tb2R1bGVfb2ZfdChlZGl0b3Iuc3RhdGUubWV0YSkpO1xuICAgICAgICBsZXQgc3RhcnQgPSBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCwgeik7XG4gICAgICAgIGxldCByZWMgZG9fYWN0aW9ucyA9IChtb2RlbCwgYWN0aW9uczogbGlzdChVcGRhdGVBY3Rpb24udCkpID0+XG4gICAgICAgICAgc3dpdGNoIChhY3Rpb25zKSB7XG4gICAgICAgICAgfCBbXSA9PiBPayhtb2RlbClcbiAgICAgICAgICB8IFtoZCwgLi4udGxdID0+XG4gICAgICAgICAgICBzd2l0Y2ggKG1haW4obW9kZWwsIGhkLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbikpIHtcbiAgICAgICAgICAgIHwgRXJyb3IoZXJyKSA9PiBFcnJvcihlcnIpXG4gICAgICAgICAgICB8IE9rKG1vZGVsKSA9PiBkb19hY3Rpb25zKG1vZGVsLCB0bClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAvKiBUT0RPKGFuZHJldyk6IHVzZSB6aXBwZXItbGV2ZWwgYWN0aW9ucyBoZXJlIHRvIGF2b2lkXG4gICAgICAgICAqIG1lYXN1cmVkIHJlY29tcHV0YXRpb24gYXQgZWRpdG9yLWxldmVsICovXG4gICAgICAgIGRvX2FjdGlvbnMoXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgUGFzdGUodHJpbShjb21wbGV0aW9uKSksXG4gICAgICAgICAgICBQZXJmb3JtQWN0aW9uKE1vdmUoR29hbChQb2ludChzdGFydCkpKSksXG4gICAgICAgICAgICBQZXJmb3JtQWN0aW9uKE1vdmVUb05leHRIb2xlKFJpZ2h0KSksXG4gICAgICAgICAgICBQZXJmb3JtQWN0aW9uKE1vdmUoTG9jYWwoTGVmdChCeVRva2VuKSkpKSxcbiAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgfCBTb21lKGNvbXBsZXRpb24pID0+XG4gICAgICAgIG1haW4obW9kZWwsIFBhc3RlKHRyaW0oY29tcGxldGlvbikpLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbilcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufTtcbiIsImxldCBzYW1wbGVfMSA9IHt8IyBIYXplbCBMYW5ndWFnZSBRdWljayBSZWZlcmVuY2UgI1xuXG4jIFJlY3Vyc2l2ZSBGdW5jdGlvbnMgKGFycm93IHR5cGUgYW5ub3RhdGlvbiByZXF1aXJlZCkgI1xubGV0IGRvdWJsZV9yZWN1cnNpdmVseSA6IEludCAtPiBJbnQgPVxuICBmdW4gbiAtPlxuICAgIGlmIG4gPT0gMCB0aGVuIDBcbiAgICBlbHNlIGRvdWJsZV9yZWN1cnNpdmVseShuIC0gMSkgKyAyXG5pblxuXG4jIExpc3RzICNcbmxldCBlbXB0eV9saXN0IDogW0ludF0gPSBbXSBpblxubGV0IG5vbl9lbXB0eV9saXN0IDogW0ludF0gPSAxOjoyOjozOjpbXSBpblxubGV0IGxpc3RfbGl0ZXJhbHMgOiBbSW50XSA9IFsxLCAyLCAzXSBpblxubGV0IGxlbmd0aCA6IFtJbnRdIC0+IEludCA9XG4gIGZ1biB4cyAtPlxuICAgIGNhc2UgeHNcbiAgICAgIHwgW10gPT4gMFxuICAgICAgfCBoZDo6dGwgPT4gMSArIGxlbmd0aCh0bClcbiAgICBlbmRcbmluXG5sZXQgaGFzX2F0X2xlYXN0X3R3b19lbGVtZW50cyA6IFtJbnRdIC0+IEJvb2wgPVxuICBmdW4geHMgLT5cbiAgICBjYXNlIHhzXG4gICAgICB8IFtdID0+IGZhbHNlXG4gICAgICB8IGhkOjpbXSA9PiBmYWxzZVxuICAgICAgfCBhOjpiOjpbXSA9PiB0cnVlXG4gICAgZW5kXG5pblxuXG4jIFN0cmluZ3MgI1xubGV0IHN0cmluZ19saXRzID0gXCJIZWxsbywgd29ybGQhXCIgaW5cbmxldCBzdHJpbmdfZXF1YWxpdHkgPSBzdHJpbmdfbGl0cyAkPT0gXCJIZWxsbywgd29ybGQhXCIgaW5cblxuIyBOb24tZW1wdHkgaG9sZXMgYXJlIHRoZSByZWQgZG90dGVkIGJveGVzIGFyb3VuZCBlcnJvcnMgI1xuIyAoeW91IGNhbiBzdGlsbCBydW4gcHJvZ3JhbXMgd2l0aCBub24tZW1wdHkgaG9sZXMpICNcbmxldCBub25fZW1wdHlfaG9sZSA6IEludCA9IHRydWUgaW5cblxuMiArIDJcbnx9O1xuXG5sZXQgc3RyX3RvX2luc2VydHMgPSAoc3RyOiBzdHJpbmcpOiBsaXN0KFVwZGF0ZUFjdGlvbi50KSA9PlxuICBMaXN0LmluaXQoXG4gICAgU3RyaW5nLmxlbmd0aChzdHIpLFxuICAgIGkgPT4ge1xuICAgICAgbGV0IGMgPSBTdHJpbmcuc3ViKHN0ciwgaSwgMSk7XG4gICAgICBsZXQgYyA9IGMgPT0gXCJcXG5cIiA/IEhhejNsY29yZS5Gb3JtLmxpbmVicmVhayA6IGM7XG4gICAgICBVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihJbnNlcnQoYykpO1xuICAgIH0sXG4gICk7XG5cbmxldCBhY3Rpb25zXzEgPSBzdHJfdG9faW5zZXJ0cyhzYW1wbGVfMSkgQCBbQmVuY2htYXJrKEZpbmlzaCldO1xuXG5sZXQgdGltZSA9IHJlZigtMS4wKTtcblxubGV0IHN0YXJ0ID0gKCk6IHVuaXQgPT4ge1xuICB0aW1lIDo9IEpzVXRpbC50aW1lc3RhbXAoKTtcbiAgcHJpbnRfZW5kbGluZShcIkJlbmNobWFyazogU3RhcnRpbmdcIik7XG59O1xuXG5sZXQgZmluaXNoID0gKCk6IHVuaXQgPT4ge1xuICBzd2l0Y2ggKHRpbWVeKSB7XG4gIHwgKC0xLjApID0+XG4gICAgUHJpbnRmLnNwcmludGYoXCJCZW5jaG1hcms6IEVycm9yOiBObyBiZW5jaG1hcmsgcnVubmluZ1wiKSB8PiBwcmludF9lbmRsaW5lXG5cbiAgfCBfID0+XG4gICAgbGV0IGVsYXBzZWQgPSAoSnNVdGlsLnRpbWVzdGFtcCgpIC0uIHRpbWVeKSAvLiAxMDAwLjtcbiAgICB0aW1lIDo9ICgtMS4wKTtcbiAgICBQcmludGYuc3ByaW50ZihcIkJlbmNobWFyazogRmluaXNoZWQ6IHRpbWU6ICVmIHNlY29uZHNcIiwgZWxhcHNlZClcbiAgICB8PiBwcmludF9lbmRsaW5lO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG4vKiBUaGlzIGlzIGEgcGxhY2UgdG8gYWRkIGFkLWhvYyBkZWJ1Z2dpbmcgcHJpbnQgYWN0aW9ucy5cbiAgIEl0IHdhcyBvcmlnaW5hbGx5IGRpcmVjdGx5IGluIEtleWJvYXJkLCBidXQgdGhhdCBhZGRlZCBhIGhhbmRsZXJcbiAgIGRlcGVuZGVuY3kgb24gdGhlIG1vZGVsLCB3aGljaCBpcyB0ZWNobmljYWxseSBhZ2FpbnN0IGFyY2hpdGVjdHVyZSAqL1xuXG5sZXQgcHJpbnQgPSAoe3NldHRpbmdzLCBlZGl0b3JzLCBffTogTW9kZWwudCwga2V5OiBzdHJpbmcpOiB1bml0ID0+IHtcbiAgbGV0IHogPSBFZGl0b3JzLmdldF96aXBwZXIoZWRpdG9ycyk7XG4gIGxldCBwcmludCA9IHN0ciA9PiBzdHIgfD4gcHJpbnRfZW5kbGluZTtcbiAgbGV0IHNldHRpbmdzID0gc2V0dGluZ3M7XG4gIGxldCB0ZXJtID0geiA9PiB6IHw+IE1ha2VUZXJtLmZyb21femlwX2Zvcl92aWV3IHw+IGZzdDtcbiAgbGV0IGN0eF9pbml0ID0gRWRpdG9ycy5nZXRfY3R4X2luaXQofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgc3dpdGNoIChrZXkpIHtcbiAgfCBcIkYxXCIgPT4geiB8PiBaaXBwZXIuc2hvdyB8PiBwcmludFxuICB8IFwiRjJcIiA9PiB6IHw+IFppcHBlci51bnNlbGVjdF9hbmRfemlwIHw+IFNlZ21lbnQuc2hvdyB8PiBwcmludFxuICB8IFwiRjNcIiA9PiB6IHw+IHRlcm0gfD4gVGVybUJhc2UuVUV4cC5zaG93IHw+IHByaW50XG4gIHwgXCJGNFwiID0+XG4gICAgelxuICAgIHw+IHRlcm1cbiAgICB8PiBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0KVxuICAgIHw+IFN0YXRpY3MuTWFwLnNob3dcbiAgICB8PiBwcmludFxuICB8IFwiRjVcIiA9PlxuICAgIGxldCBlbnZfaW5pdCA9IEVkaXRvcnMuZ2V0X2Vudl9pbml0KH5zZXR0aW5ncywgZWRpdG9ycyk7XG4gICAgSW50ZXJmYWNlLmV2YWxfeih+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgfmVudl9pbml0LCB+Y3R4X2luaXQsIHopXG4gICAgfD4gUHJvZ3JhbVJlc3VsdC5zaG93XG4gICAgfD4gcHJpbnQ7XG4gIHwgXCJGNlwiID0+XG4gICAgbGV0IGluZGV4ID0gSW5kaWNhdGVkLmluZGV4KHopO1xuICAgIGxldCBtYXAgPVxuICAgICAgeiB8PiB0ZXJtIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MuY29yZSwgY3R4X2luaXQpO1xuICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICB8IFNvbWUoaW5kZXgpID0+XG4gICAgICBzd2l0Y2ggKEhhejNsY29yZS5JZC5NYXAuZmluZF9vcHQoaW5kZXgsIG1hcCkpIHtcbiAgICAgIHwgU29tZShjaSkgPT4gcHJpbnQoSW5mby5zaG93KGNpKSlcbiAgICAgIHwgTm9uZSA9PiBwcmludChcIkRFQlVHOiBObyBDSSBmb3VuZCBmb3IgaW5kZXhcIilcbiAgICAgIH1cbiAgICB8IE5vbmUgPT4gcHJpbnQoXCJERUJVRzogTm8gaW5kaWNhdGVkIGluZGV4XCIpXG4gICAgfTtcblxuICB8IF8gPT4gcHJpbnQoXCJERUJVRzogTm8gYWN0aW9uIGZvciBrZXk6IFwiICsrIGtleSlcbiAgfTtcbn07XG4iLCIvKiBMb2dnaW5nIHN5c3RlbSBmb3IgYWN0aW9ucy4gUGVyc2lzdHMgbG9nIHZpYSBJbmRleGVkREIgKi9cblxub3BlbiBTZXhwbGliLlN0ZDtcblxubGV0IGlzX2FjdGlvbl9sb2dnZWQ6IFVwZGF0ZUFjdGlvbi50ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBTZXRNZXRhKF8pXG4gIHwgU2F2ZVxuICB8IEluaXRJbXBvcnRBbGwoXylcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgRmluaXNoSW1wb3J0QWxsKF8pXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IEJlbmNobWFyayhfKVxuICB8IERlYnVnQ29uc29sZShfKSA9PiBmYWxzZVxuICB8IFJlc2V0XG4gIHwgVEFCXG4gIHwgQXNzaXN0YW50KF8pXG4gIHwgU2V0KF8pXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgU3dpdGNoRWRpdG9yKF8pXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBQZXJmb3JtQWN0aW9uKF8pXG4gIHwgQ3V0XG4gIHwgQ29weVxuICB8IFBhc3RlKF8pXG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBRdWVyeUlucHV0XG4gIHwgUGVyZm9ybVF1ZXJ5KF8pXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBUb2dnbGVTdGVwcGVyKF8pXG4gIHwgU3RlcHBlckFjdGlvbihfLCBTdGVwRm9yd2FyZChfKSB8IFN0ZXBCYWNrd2FyZClcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pID0+IHRydWU7XG5cbm1vZHVsZSBEQiA9IHtcbiAgb3BlbiBFempzX2lkYjtcblxuICBtb2R1bGUgU3RvcmUgPSBFempzX2lkYi5TdG9yZShTdHJpbmdUciwgU3RyaW5nVHIpO1xuXG4gIHR5cGUgZGIgPSBFempzX21pbi50KFR5cGVzLmlEQkRhdGFiYXNlKTtcblxuICBsZXQgZGJfbmFtZSA9IFwiaGF6ZWxfZGJcIjtcbiAgbGV0IHRhYmxlX25hbWUgPSBcImxvZ1wiO1xuXG4gIGxldCBrdl9zdG9yZSA9IChkYjogZGIpOiBTdG9yZS5zdG9yZSA9PlxuICAgIFN0b3JlLnN0b3JlKH5tb2RlPVJFQURXUklURSwgZGIsIHRhYmxlX25hbWUpO1xuXG4gIGxldCB3aXRoX2RiID0gKGYpOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfOiB1bml0ID0+IHByaW50X2VuZGxpbmUoXCJFUlJPUjogTG9nLklEQktWLm9wZW5cIik7XG4gICAgbGV0IHVwZ3JhZGUgPSAoZGI6IGRiLCBlOiBkYl91cGdyYWRlKTogdW5pdCA9PlxuICAgICAgZS5uZXdfdmVyc2lvbiA+PSAxICYmIGUub2xkX3ZlcnNpb24gPT0gMFxuICAgICAgICA/IGlnbm9yZShTdG9yZS5jcmVhdGUoZGIsIHRhYmxlX25hbWUpKSA6ICgpO1xuICAgIG9wZW5EQih+dXBncmFkZSwgfmVycm9yLCB+dmVyc2lvbj0xLCBkYl9uYW1lLCBkYiA9PiBmKGRiKSk7XG4gIH07XG5cbiAgbGV0IGFkZCA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHVuaXQgPT5cbiAgICB3aXRoX2RiKGRiID0+XG4gICAgICBTdG9yZS5hZGQofmtleSwgfmNhbGxiYWNrPV9rZXkgPT4gKCksIGt2X3N0b3JlKGRiKSwgdmFsdWUpXG4gICAgKTtcblxuICBsZXQgZ2V0ID0gKGtleTogc3RyaW5nLCBmOiBvcHRpb24oc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRcIik7XG4gICAgd2l0aF9kYihkYiA9PiBTdG9yZS5nZXQofmVycm9yLCBrdl9zdG9yZShkYiksIGYsIEsoa2V5KSkpO1xuICB9O1xuXG4gIGxldCBnZXRfYWxsID0gKGY6IGxpc3Qoc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRfYWxsXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuZ2V0X2FsbCh+ZXJyb3IsIGt2X3N0b3JlKGRiKSwgZikpO1xuICB9O1xuXG4gIGxldCBjbGVhcl9hbmQgPSAoY2FsbGJhY2spOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfID0+IFByaW50Zi5wcmludGYoXCJFUlJPUjogTG9nLklEQktWLmNsZWFyXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuY2xlYXIofmVycm9yLCB+Y2FsbGJhY2ssIGt2X3N0b3JlKGRiKSkpO1xuICB9O1xufTtcblxubW9kdWxlIEVudHJ5ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgdCA9IChNb2RlbC50aW1lc3RhbXAsIFVwZGF0ZUFjdGlvbi50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgcyA9IGxpc3QodCk7XG5cbiAgbGV0IG1rID0gKHVwZGF0ZSk6IHQgPT4ge1xuICAgIChKc1V0aWwudGltZXN0YW1wKCksIHVwZGF0ZSk7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoKHRzLCBhY3Rpb24pOiB0KSA9PlxuICAgIERCLmFkZChcbiAgICAgIFByaW50Zi5zcHJpbnRmKFwiJS4wZlwiLCB0cyksXG4gICAgICAodHMsIGFjdGlvbikgfD4gc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmcsXG4gICAgKTtcbn07XG5cbmxldCBpbXBvcnQgPSAoZGF0YTogc3RyaW5nKTogdW5pdCA9PlxuICAvKiBTaG91bGQgYmUgZmluZSB0byBmaXJlIHNhdmVzIGNvbmN1cnJlbnRseT8gKi9cbiAgREIuY2xlYXJfYW5kKCgpID0+XG4gICAgdHJ5KFxuICAgICAgZGF0YVxuICAgICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgICAgfD4gRW50cnkuc19vZl9zZXhwXG4gICAgICB8PiBMaXN0Lml0ZXIoRW50cnkuc2F2ZSlcbiAgICApIHtcbiAgICB8IF8gPT4gUHJpbnRmLnByaW50ZihcIkxvZy5FbnRyeS5pbXBvcnQ6IERlc2VyaWFsaXphdGlvbiBlcnJvclwiKVxuICAgIH1cbiAgKTtcblxubGV0IHVwZGF0ZSA9IChhY3Rpb246IFVwZGF0ZUFjdGlvbi50KTogdW5pdCA9PlxuICBpZiAoaXNfYWN0aW9uX2xvZ2dlZChhY3Rpb24pKSB7XG4gICAgRW50cnkuc2F2ZShFbnRyeS5tayhhY3Rpb24pKTtcbiAgfTtcblxubGV0IGdldF9hbmQgPSAoZjogc3RyaW5nID0+IHVuaXQpOiB1bml0ID0+XG4gIERCLmdldF9hbGwoZW50cmllcyA9PiBmKFwiKFwiICsrIFN0cmluZy5jb25jYXQoXCIgXCIsIGVudHJpZXMpICsrIFwiKVwiKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFsbCA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgZXhwbGFpblRoaXNNb2RlbDogc3RyaW5nLFxuICBzY3JhdGNoOiBzdHJpbmcsXG4gIGV4ZXJjaXNlOiBzdHJpbmcsXG4gIGRvY3VtZW50YXRpb246IHN0cmluZyxcbiAgbG9nOiBzdHJpbmcsXG59O1xuXG4vLyBmYWxsYmFjayBmb3Igc2F2ZWQgc3RhdGUgcHJpb3IgdG8gcmVsZWFzZSBvZiBsYW5nIGRvYyBpbiA0OTBGMjJcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWxsX2YyMiA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgc2NyYXRjaDogc3RyaW5nLFxuICBleGVyY2lzZTogc3RyaW5nLFxuICBsb2c6IHN0cmluZyxcbn07XG5cbmxldCBta19hbGwgPSAofmluc3RydWN0b3JfbW9kZSwgfmxvZykgPT4ge1xuICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5leHBvcnQoKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmV4cG9ydCgpO1xuICBsZXQgc2NyYXRjaCA9IFN0b3JlLlNjcmF0Y2guZXhwb3J0KCk7XG4gIGxldCBkb2N1bWVudGF0aW9uID0gU3RvcmUuRG9jdW1lbnRhdGlvbi5leHBvcnQoKTtcbiAgbGV0IGV4ZXJjaXNlID1cbiAgICBTdG9yZS5FeGVyY2lzZS5leHBvcnQoXG4gICAgICB+c3BlY3M9RXhlcmNpc2VTZXR0aW5ncy5leGVyY2lzZXMsXG4gICAgICB+aW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICk7XG4gIHtzZXR0aW5ncywgZXhwbGFpblRoaXNNb2RlbCwgc2NyYXRjaCwgZG9jdW1lbnRhdGlvbiwgZXhlcmNpc2UsIGxvZ307XG59O1xuXG5sZXQgZXhwb3J0X2FsbCA9ICh+aW5zdHJ1Y3Rvcl9tb2RlLCB+bG9nKSA9PiB7XG4gIG1rX2FsbCh+aW5zdHJ1Y3Rvcl9tb2RlLCB+bG9nKSB8PiB5b2pzb25fb2ZfYWxsO1xufTtcblxubGV0IGltcG9ydF9hbGwgPSAoZGF0YSwgfnNwZWNzKSA9PiB7XG4gIGxldCBhbGwgPVxuICAgIHRyeShkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IGFsbF9vZl95b2pzb24pIHtcbiAgICB8IF8gPT5cbiAgICAgIGxldCBhbGxfZjIyID0gZGF0YSB8PiBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyB8PiBhbGxfZjIyX29mX3lvanNvbjtcbiAgICAgIHtcbiAgICAgICAgc2V0dGluZ3M6IGFsbF9mMjIuc2V0dGluZ3MsXG4gICAgICAgIHNjcmF0Y2g6IGFsbF9mMjIuc2NyYXRjaCxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogXCJcIixcbiAgICAgICAgZXhlcmNpc2U6IGFsbF9mMjIuZXhlcmNpc2UsXG4gICAgICAgIGxvZzogYWxsX2YyMi5sb2csXG4gICAgICAgIGV4cGxhaW5UaGlzTW9kZWw6IFwiXCIsXG4gICAgICB9O1xuICAgIH07XG4gIGxldCBzZXR0aW5ncyA9IFN0b3JlLlNldHRpbmdzLmltcG9ydChhbGwuc2V0dGluZ3MpO1xuICBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmltcG9ydChhbGwuZXhwbGFpblRoaXNNb2RlbCk7XG4gIGxldCBpbnN0cnVjdG9yX21vZGUgPSBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGU7XG4gIFN0b3JlLlNjcmF0Y2guaW1wb3J0KGFsbC5zY3JhdGNoKTtcbiAgU3RvcmUuRXhlcmNpc2UuaW1wb3J0KGFsbC5leGVyY2lzZSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgTG9nLmltcG9ydChhbGwubG9nKTtcbn07XG4iLCIvLyBvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBRdWVyeUNvbW1hbmQucmVcblxuICAgICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgcXVlcnkgY29tbWFuZHMgYW5kIHF1ZXJ5IHBsYW4gZm9ybWF0LlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNlbGVjdGlvbiA9XG4gIHwgVGVybVxuICB8IE1hdGNoO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHF1ZXJ5ID1cbiAgfCBUeXBlXG4gIHwgRGVmaW5pdGlvblxuICB8IERvTm90aGluZztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBTZWxlY3Qoc2VsZWN0aW9uKVxuICB8IFF1ZXJ5KHF1ZXJ5KTtcbiIsImxldCBnZXRfaW5wdXRfdmFsdWUgPSAoKTogc3RyaW5nID0+IFwiXCI7XG5sZXQgcXVlcnlfcGFyc2VyID0gKCk6IFF1ZXJ5Q29tbWFuZC50ID0+IHtcbiAgbGV0IHF1ZXJ5ID0gZ2V0X2lucHV0X3ZhbHVlKCk7XG4gIEpzVXRpbC5sb2cocXVlcnkpO1xuICBTZWxlY3QoVGVybSk7XG59O1xuIiwidHlwZSB0ID0gdW5pdDtcbmxldCBpbml0ID0gKCkgPT4gKCk7XG4iLCJvcGVuIEhhejNsY29yZTtcblxuaW5jbHVkZSBVcGRhdGVBY3Rpb247IC8vIHRvIHByZXZlbnQgY2lyY3VsYXJpdHlcblxubGV0IHVwZGF0ZV9zZXR0aW5ncyA9XG4gICAgKGE6IHNldHRpbmdzX2FjdGlvbiwge3NldHRpbmdzLCBffSBhcyBtb2RlbDogTW9kZWwudCk6IE1vZGVsLnQgPT5cbiAgc3dpdGNoIChhKSB7XG4gIHwgU3RhdGljcyA9PlxuICAgIC8qIE5PVEU6IGR5bmFtaWNzIGRlcGVuZHMgb24gc3RhdGljcywgc28gaWYgZHluYW1pY3MgaXMgb24gYW5kXG4gICAgICAgd2UncmUgdHVybmluZyBzdGF0aWNzIG9mZiwgdHVybiBkeW5hbWljcyBvZmYgYXMgd2VsbCAqL1xuICAgIHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogIXNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBlbGFib3JhdGU6IHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlLFxuICAgICAgICAgIGR5bmFtaWNzOiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzICYmIHNldHRpbmdzLmNvcmUuZHluYW1pY3MsXG4gICAgICAgICAgZXZhbHVhdGlvbjogc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIHwgRWxhYm9yYXRlID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5lbGFib3JhdGUgfHwgc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogc2V0dGluZ3MuY29yZS5hc3Npc3QsXG4gICAgICAgICAgZWxhYm9yYXRlOiAhc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgICAgZHluYW1pY3M6IHNldHRpbmdzLmNvcmUuZHluYW1pY3MsXG4gICAgICAgICAgZXZhbHVhdGlvbjogc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIHwgRHluYW1pY3MgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmR5bmFtaWNzIHx8IHNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBhc3Npc3Q6IHNldHRpbmdzLmNvcmUuYXNzaXN0LFxuICAgICAgICAgIGVsYWJvcmF0ZTogc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgICAgZHluYW1pY3M6ICFzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICAgIGV2YWx1YXRpb246IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB8IEFzc2lzdCA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgc3RhdGljczogIXNldHRpbmdzLmNvcmUuYXNzaXN0IHx8IHNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBhc3Npc3Q6ICFzZXR0aW5ncy5jb3JlLmFzc2lzdCxcbiAgICAgICAgICBlbGFib3JhdGU6IHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlLFxuICAgICAgICAgIGR5bmFtaWNzOiBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICAgIGV2YWx1YXRpb246IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB8IEV2YWx1YXRpb24odSkgPT5cbiAgICBsZXQgZXZhbHVhdGlvbiA9IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbjtcbiAgICBsZXQgZXZhbHVhdGlvbicgPSB7XG4gICAgICBzd2l0Y2ggKHUpIHtcbiAgICAgIHwgU2hvd1JlY29yZCA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzdGVwcGVyX2hpc3Rvcnk6ICFldmFsdWF0aW9uLnN0ZXBwZXJfaGlzdG9yeSxcbiAgICAgICAgfVxuICAgICAgfCBTaG93Q2FzZUNsYXVzZXMgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19jYXNlX2NsYXVzZXM6ICFldmFsdWF0aW9uLnNob3dfY2FzZV9jbGF1c2VzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dGbkJvZGllcyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X2ZuX2JvZGllczogIWV2YWx1YXRpb24uc2hvd19mbl9ib2RpZXMsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0Nhc3RzID0+IHsuLi5ldmFsdWF0aW9uLCBzaG93X2Nhc3RzOiAhZXZhbHVhdGlvbi5zaG93X2Nhc3RzfVxuICAgICAgfCBTaG93Rml4cG9pbnRzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfZml4cG9pbnRzOiAhZXZhbHVhdGlvbi5zaG93X2ZpeHBvaW50cyxcbiAgICAgICAgfVxuICAgICAgfCBTaG93TG9va3VwcyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X2xvb2t1cF9zdGVwczogIWV2YWx1YXRpb24uc2hvd19sb29rdXBfc3RlcHMsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0ZpbHRlcnMgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19zdGVwcGVyX2ZpbHRlcnM6ICFldmFsdWF0aW9uLnNob3dfc3RlcHBlcl9maWx0ZXJzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dTZXR0aW5ncyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X3NldHRpbmdzOiAhZXZhbHVhdGlvbi5zaG93X3NldHRpbmdzLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIC4uLnNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgZXZhbHVhdGlvbjogZXZhbHVhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIHwgRXhwbGFpblRoaXMoVG9nZ2xlU2hvdykgPT5cbiAgICBsZXQgZXhwbGFpblRoaXMgPSB7XG4gICAgICAuLi5zZXR0aW5ncy5leHBsYWluVGhpcyxcbiAgICAgIHNob3c6ICFzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93LFxuICAgIH07XG4gICAgbGV0IHNldHRpbmdzID0gey4uLnNldHRpbmdzLCBleHBsYWluVGhpc307XG4gICAgey4uLm1vZGVsLCBzZXR0aW5nc307XG4gIHwgRXhwbGFpblRoaXMoVG9nZ2xlU2hvd0ZlZWRiYWNrKSA9PlxuICAgIGxldCBleHBsYWluVGhpcyA9IHtcbiAgICAgIC4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLFxuICAgICAgc2hvd19mZWVkYmFjazogIXNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3dfZmVlZGJhY2ssXG4gICAgfTtcbiAgICBsZXQgc2V0dGluZ3MgPSB7Li4uc2V0dGluZ3MsIGV4cGxhaW5UaGlzfTtcbiAgICB7Li4ubW9kZWwsIHNldHRpbmdzfTtcbiAgfCBFeHBsYWluVGhpcyhTZXRIaWdobGlnaHQoYSkpID0+XG4gICAgbGV0IGhpZ2hsaWdodDogRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy5oaWdobGlnaHQgPVxuICAgICAgc3dpdGNoIChhLCBzZXR0aW5ncy5leHBsYWluVGhpcy5oaWdobGlnaHQpIHtcbiAgICAgIHwgKFRvZ2dsZSwgQWxsKSA9PiBOb0hpZ2hsaWdodFxuICAgICAgfCAoVG9nZ2xlLCBfKSA9PiBBbGxcbiAgICAgIHwgKEhvdmVyKF8pLCBBbGwpID0+IEFsbFxuICAgICAgfCAoSG92ZXIoaWQpLCBfKSA9PiBPbmUoaWQpXG4gICAgICB8IChVbnNldEhvdmVyLCBBbGwpID0+IEFsbFxuICAgICAgfCAoVW5zZXRIb3ZlciwgXykgPT4gTm9IaWdobGlnaHRcbiAgICAgIH07XG4gICAgbGV0IGV4cGxhaW5UaGlzID0gey4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLCBoaWdobGlnaHR9O1xuICAgIGxldCBzZXR0aW5ncyA9IHsuLi5zZXR0aW5ncywgZXhwbGFpblRoaXN9O1xuICAgIHsuLi5tb2RlbCwgc2V0dGluZ3N9O1xuICB8IEJlbmNobWFyayA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBiZW5jaG1hcms6ICFzZXR0aW5ncy5iZW5jaG1hcmssXG4gICAgICB9LFxuICAgIH1cbiAgfCBDYXB0aW9ucyA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjYXB0aW9uczogIXNldHRpbmdzLmNhcHRpb25zLFxuICAgICAgfSxcbiAgICB9XG4gIHwgU2Vjb25kYXJ5SWNvbnMgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgc2Vjb25kYXJ5X2ljb25zOiAhc2V0dGluZ3Muc2Vjb25kYXJ5X2ljb25zLFxuICAgICAgfSxcbiAgICB9XG4gIHwgQ29udGV4dEluc3BlY3RvciA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb250ZXh0X2luc3BlY3RvcjogIXNldHRpbmdzLmNvbnRleHRfaW5zcGVjdG9yLFxuICAgICAgfSxcbiAgICB9XG4gIHwgSW5zdHJ1Y3Rvck1vZGUgPT5cbiAgICBsZXQgbmV3X21vZGUgPSAhc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlO1xuICAgIHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgZWRpdG9yczogRWRpdG9ycy5zZXRfaW5zdHJ1Y3Rvcl9tb2RlKG1vZGVsLmVkaXRvcnMsIG5ld19tb2RlKSxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBpbnN0cnVjdG9yX21vZGU6ICFzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUsXG4gICAgICB9LFxuICAgIH07XG4gIHwgTW9kZShtb2RlKSA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBtb2RlLFxuICAgICAgfSxcbiAgICB9XG4gIHwgQWNjZXNzaWJpbGl0eShUb2dnbGVFbmFibGUpID0+XG4gICAgbGV0IGFjY2Vzc2liaWxpdHkgPSB7XG4gICAgICAuLi5zZXR0aW5ncy5hY2Nlc3NpYmlsaXR5LFxuICAgICAgZW5hYmxlOiAhc2V0dGluZ3MuYWNjZXNzaWJpbGl0eS5lbmFibGUsXG4gICAgfTtcbiAgICBsZXQgc2V0dGluZ3MgPSB7Li4uc2V0dGluZ3MsIGFjY2Vzc2liaWxpdHl9O1xuICAgIHsuLi5tb2RlbCwgc2V0dGluZ3N9O1xuICB8IEFjY2Vzc2liaWxpdHkoVG9nZ2xlSXNFZGl0aW5nKSA9PlxuICAgIGxldCBhY2Nlc3NpYmlsaXR5ID0ge1xuICAgICAgLi4uc2V0dGluZ3MuYWNjZXNzaWJpbGl0eSxcbiAgICAgIGlzX2VkaXRpbmc6ICFzZXR0aW5ncy5hY2Nlc3NpYmlsaXR5LmlzX2VkaXRpbmcsXG4gICAgfTtcbiAgICBsZXQgc2V0dGluZ3MgPSB7Li4uc2V0dGluZ3MsIGFjY2Vzc2liaWxpdHl9O1xuICAgIHsuLi5tb2RlbCwgc2V0dGluZ3N9O1xuICB9O1xuXG5sZXQgc2NoZWR1bGVfZXZhbHVhdGlvbiA9ICh+c2NoZWR1bGVfYWN0aW9uLCBtb2RlbDogTW9kZWwudCk6IHVuaXQgPT5cbiAgaWYgKG1vZGVsLnNldHRpbmdzLmNvcmUuZHluYW1pY3MpIHtcbiAgICBsZXQgZWxhYnMgPVxuICAgICAgRWRpdG9ycy5nZXRfc3BsaWNlZF9lbGFicyhcbiAgICAgICAgfnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLFxuICAgICAgICBtb2RlbC5zdGF0aWNzLFxuICAgICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgKTtcbiAgICBsZXQgZXZhbF9ycyA9IE1vZGVsUmVzdWx0cy50b19ldmFsdWF0ZShtb2RlbC5yZXN1bHRzLCBlbGFicyk7XG4gICAgaWYgKCFNb2RlbFJlc3VsdHMuaXNfZW1wdHkoZXZhbF9ycykpIHtcbiAgICAgIHNjaGVkdWxlX2FjdGlvbihVcGRhdGVSZXN1bHQoZXZhbF9ycykpO1xuICAgICAgV29ya2VyQ2xpZW50LnJlcXVlc3QoXG4gICAgICAgIGV2YWxfcnMsXG4gICAgICAgIH5oYW5kbGVyPXJzID0+IHNjaGVkdWxlX2FjdGlvbihVcGRhdGVSZXN1bHQocnMpKSxcbiAgICAgICAgfnRpbWVvdXQ9XG4gICAgICAgICAgcnFzID0+XG4gICAgICAgICAgICBzY2hlZHVsZV9hY3Rpb24oVXBkYXRlUmVzdWx0KE1vZGVsUmVzdWx0cy50aW1lb3V0X2FsbChycXMpKSksXG4gICAgICApO1xuICAgIH07XG4gICAgLyogTm90IHNlbmRpbmcgc3RlcHBlciB0byB3b3JrZXIgZm9yIG5vdyBiYyBjbG9zdXJlIHBlcmYgKi9cbiAgICBsZXQgc3RlcF9ycyA9IE1vZGVsUmVzdWx0cy50b19zdGVwKG1vZGVsLnJlc3VsdHMpO1xuICAgIGlmICghTW9kZWxSZXN1bHRzLmlzX2VtcHR5KHN0ZXBfcnMpKSB7XG4gICAgICBsZXQgbmV3X3JzID1cbiAgICAgICAgc3RlcF9yc1xuICAgICAgICB8PiBNb2RlbFJlc3VsdHMudXBkYXRlX2VsYWJzKGVsYWJzKVxuICAgICAgICB8PiBNb2RlbFJlc3VsdHMucnVuX3BlbmRpbmcofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUpO1xuICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChuZXdfcnMpKTtcbiAgICB9O1xuICB9O1xuXG5sZXQgdXBkYXRlX2NhY2hlZF9kYXRhID0gKH5zY2hlZHVsZV9hY3Rpb24sIHVwZGF0ZSwgbTogTW9kZWwudCk6IE1vZGVsLnQgPT4ge1xuICBsZXQgdXBkYXRlX3N0YXRpY3MgPSBpc19lZGl0KHVwZGF0ZSkgfHwgcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgdXBkYXRlX2R5bmFtaWNzID0gcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgbSA9XG4gICAgdXBkYXRlX3N0YXRpY3MgfHwgdXBkYXRlX2R5bmFtaWNzICYmIG0uc2V0dGluZ3MuY29yZS5zdGF0aWNzXG4gICAgICA/IHsuLi5tLCBzdGF0aWNzOiBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzPW0uc2V0dGluZ3MsIG0uZWRpdG9ycyl9XG4gICAgICA6IG07XG4gIGlmICh1cGRhdGVfZHluYW1pY3MgJiYgbS5zZXR0aW5ncy5jb3JlLmR5bmFtaWNzKSB7XG4gICAgc2NoZWR1bGVfZXZhbHVhdGlvbih+c2NoZWR1bGVfYWN0aW9uLCBtKTtcbiAgICBtO1xuICB9IGVsc2Uge1xuICAgIG07XG4gIH07XG59O1xuXG5sZXQgcGVyZm9ybV9hY3Rpb24gPSAobW9kZWw6IE1vZGVsLnQsIGE6IEFjdGlvbi50KTogUmVzdWx0LnQoTW9kZWwudCkgPT5cbiAgc3dpdGNoIChcbiAgICBtb2RlbC5lZGl0b3JzXG4gICAgfD4gRWRpdG9ycy5nZXRfZWRpdG9yXG4gICAgfD4gSGF6M2xjb3JlLlBlcmZvcm0uZ28ofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUsIGEpXG4gICkge1xuICB8IEVycm9yKGVycikgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGVycikpXG4gIHwgT2soZWQpID0+XG4gICAgbGV0IG1vZGVsID0gey4uLm1vZGVsLCBlZGl0b3JzOiBFZGl0b3JzLnB1dF9lZGl0b3IoZWQsIG1vZGVsLmVkaXRvcnMpfTtcbiAgICAvKiBOb3RlOiBOb3Qgc2F2aW5nIGhlcmUgYXMgc2F2aW5nIGlzIGNvc3RseSB0byBkbyBlYWNoIGtleXN0cm9rZSxcbiAgICAgICB3ZSB3YWl0IGEgc2Vjb25kIGFmdGVyIHRoZSBsYXN0IGVkaXQgYWN0aW9uIChzZWUgTWFpbi5yZSkgKi9cbiAgICBPayhtb2RlbCk7XG4gIH07XG5cbmxldCBzd2l0Y2hfc2NyYXRjaF9zbGlkZSA9XG4gICAgKGVkaXRvcnM6IEVkaXRvcnMudCwgfmluc3RydWN0b3JfbW9kZSwgaWR4OiBpbnQpOiBvcHRpb24oRWRpdG9ycy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IE5vbmVcbiAgfCBTY3JhdGNoKG4sIF8pIHdoZW4gbiA9PSBpZHggPT4gTm9uZVxuICB8IFNjcmF0Y2goXywgc2xpZGVzKSB3aGVuIGlkeCA+PSBMaXN0Lmxlbmd0aChzbGlkZXMpID0+IE5vbmVcbiAgfCBTY3JhdGNoKF8sIHNsaWRlcykgPT4gU29tZShTY3JhdGNoKGlkeCwgc2xpZGVzKSlcbiAgfCBFeGVyY2lzZXMoXywgc3BlY3MsIF8pIHdoZW4gaWR4ID49IExpc3QubGVuZ3RoKHNwZWNzKSA9PiBOb25lXG4gIHwgRXhlcmNpc2VzKF8sIHNwZWNzLCBfKSA9PlxuICAgIGxldCBzcGVjID0gTGlzdC5udGgoc3BlY3MsIGlkeCk7XG4gICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9vZihzcGVjKTtcbiAgICBsZXQgZXhlcmNpc2UgPSBTdG9yZS5FeGVyY2lzZS5sb2FkX2V4ZXJjaXNlKGtleSwgc3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgU29tZShFeGVyY2lzZXMoaWR4LCBzcGVjcywgZXhlcmNpc2UpKTtcbiAgfTtcblxubGV0IHN3aXRjaF9leGVyY2lzZV9lZGl0b3IgPVxuICAgIChlZGl0b3JzOiBFZGl0b3JzLnQsIH5wb3MsIH5pbnN0cnVjdG9yX21vZGUpOiBvcHRpb24oRWRpdG9ycy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBEb2N1bWVudGF0aW9uKF8pXG4gIHwgU2NyYXRjaChfKSA9PiBOb25lXG4gIHwgRXhlcmNpc2VzKG0sIHNwZWNzLCBleGVyY2lzZSkgPT5cbiAgICBsZXQgZXhlcmNpc2UgPSBFeGVyY2lzZS5zd2l0Y2hfZWRpdG9yKH5wb3MsIGluc3RydWN0b3JfbW9kZSwgfmV4ZXJjaXNlKTtcbiAgICAvL05vdGU6IG5vdyBzYXZpbmcgYWZ0ZXIgZWFjaCBlZGl0IChkZWxheWVkIGJ5IDEgc2Vjb25kKSBzbyBubyBuZWVkIHRvIHNhdmUgaGVyZVxuICAgIC8vU3RvcmUuRXhlcmNpc2Uuc2F2ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgU29tZShFeGVyY2lzZXMobSwgc3BlY3MsIGV4ZXJjaXNlKSk7XG4gIH07XG5cbi8qIFRoaXMgYWN0aW9uIHNhdmVzIGEgZmlsZSB3aGljaCBzZXJpYWxpemVzIGFsbCBjdXJyZW50IGVkaXRvclxuICAgc2V0dGluZ3MsIGluY2x1ZGluZyB0aGUgc3RhdGVzIG9mIGFsbCBTY3JhdGNoIGFuZCBFeGFtcGxlIHNsaWRlcy5cbiAgIFRoaXMgc2F2ZWQgZmlsZSBjYW4gZGlyZWN0bHkgcmVwbGFjZSBIYXozbHdlYi9Jbml0Lm1sLCBhbGxvd2luZ1xuICAgeW91IHRvIG1ha2UgeW91ciBjdXJyZW50IHN0YXRlIHRoZSBkZWZhdWx0IHN0YXJ0dXAgc3RhdGUuXG5cbiAgIFRoaXMgZG9lcyBOT1Qgc2F2ZSBhbnkgRXhlcmNpc2VzIG1vZGUgc3RhdGUgb3IgYW55IGxhbmdkb2NzXG4gICBzdGF0ZS4gVGhlIGxhdHRlciBpcyBpbnRlbnRpb25hbCBhcyB3ZSBkb24ndCB3YW50IHRvIHBlcnNpc3RcbiAgIHRoaXMgYmV0d2VlbiB1c2Vycy4gVGhlIGZvcm1lciBpcyBhIFRPRE8sIGN1cnJlbnRseSBkaWZmaWN1bHRcbiAgIGR1ZSB0byB0aGUgbW9yZSBjb21wbGV4IGFyY2hpdGVjdHVyZSBvZiBFeGVyY2lzZXMuICovXG5sZXQgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSA9ICgpID0+IHtcbiAgbGV0IGRhdGE6IFBlcnNpc3RlbnREYXRhLnQgPSB7XG4gICAgZG9jdW1lbnRhdGlvbjpcbiAgICAgIFN0b3JlLkRvY3VtZW50YXRpb24ubG9hZCgpIHw+IFN0b3JlLkRvY3VtZW50YXRpb24udG9fcGVyc2lzdGVudCxcbiAgICBzY3JhdGNoOiBTdG9yZS5TY3JhdGNoLmxvYWQoKSB8PiBTdG9yZS5TY3JhdGNoLnRvX3BlcnNpc3RlbnQsXG4gICAgc2V0dGluZ3M6IFN0b3JlLlNldHRpbmdzLmxvYWQoKSxcbiAgfTtcbiAgbGV0IGNvbnRlbnRzID1cbiAgICBcImxldCBzdGFydHVwIDogUGVyc2lzdGVudERhdGEudCA9IFwiICsrIFBlcnNpc3RlbnREYXRhLnNob3coZGF0YSk7XG4gIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZShcbiAgICB+ZmlsZW5hbWU9XCJJbml0Lm1sXCIsXG4gICAgfmNvbnRlbnRfdHlwZT1cInRleHQvcGxhaW5cIixcbiAgICB+Y29udGVudHMsXG4gICk7XG4gIHByaW50X2VuZGxpbmUoXCJJTkZPOiBQZXJzaXN0ZW50IGRhdGEgZXhwb3J0ZWQgdG8gSW5pdC5tbFwiKTtcbn07XG5cbmxldCB1aV9zdGF0ZV91cGRhdGUgPVxuICAgICh1aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsIHVwZGF0ZTogc2V0X21ldGEsIH5zY2hlZHVsZV9hY3Rpb24gYXMgXylcbiAgICA6IE1vZGVsLnVpX3N0YXRlID0+IHtcbiAgc3dpdGNoICh1cGRhdGUpIHtcbiAgfCBNb3VzZWRvd24gPT4gey4uLnVpX3N0YXRlLCBtb3VzZWRvd246IHRydWV9XG4gIHwgTW91c2V1cCA9PiB7Li4udWlfc3RhdGUsIG1vdXNlZG93bjogZmFsc2V9XG4gIHwgU2hvd0JhY2twYWNrVGFyZ2V0cyhiKSA9PiB7Li4udWlfc3RhdGUsIHNob3dfYmFja3BhY2tfdGFyZ2V0czogYn1cbiAgfCBGb250TWV0cmljcyhmb250X21ldHJpY3MpID0+IHsuLi51aV9zdGF0ZSwgZm9udF9tZXRyaWNzfVxuICB9O1xufTtcblxubGV0IHJlYyBhcHBseSA9XG4gICAgICAgIChtb2RlbDogTW9kZWwudCwgdXBkYXRlOiB0LCBzdGF0ZTogU3RhdGUudCwgfnNjaGVkdWxlX2FjdGlvbilcbiAgICAgICAgOiBSZXN1bHQudChNb2RlbC50KSA9PiB7XG4gIGxldCBtOiBSZXN1bHQudChNb2RlbC50KSA9XG4gICAgc3dpdGNoICh1cGRhdGUpIHtcbiAgICB8IFJlc2V0ID0+IE9rKE1vZGVsLnJlc2V0KG1vZGVsKSlcbiAgICB8IFNldChFdmFsdWF0aW9uKF8pIGFzIHNfYWN0aW9uKSA9PiBPayh1cGRhdGVfc2V0dGluZ3Moc19hY3Rpb24sIG1vZGVsKSlcbiAgICB8IFNldChzX2FjdGlvbikgPT5cbiAgICAgIGxldCBtb2RlbCA9IHVwZGF0ZV9zZXR0aW5ncyhzX2FjdGlvbiwgbW9kZWwpO1xuICAgICAgTW9kZWwuc2F2ZShtb2RlbCk7XG4gICAgICBzd2l0Y2ggKHVwZGF0ZSkge1xuICAgICAgLy8gTk9URTogTG9hZCBoZXJlIG5lY2Vzc2FyeSB0byBsb2FkIGVkaXRvcnMgb24gc3dpdGNoaW5nIG1vZGVcbiAgICAgIHwgU2V0KE1vZGUoXykpID0+IE9rKE1vZGVsLmxvYWQobW9kZWwpKVxuICAgICAgfCBfID0+IE9rKG1vZGVsKVxuICAgICAgfTtcbiAgICB8IFNldE1ldGEoYWN0aW9uKSA9PlxuICAgICAgbGV0IHVpX3N0YXRlID1cbiAgICAgICAgdWlfc3RhdGVfdXBkYXRlKG1vZGVsLnVpX3N0YXRlLCBhY3Rpb24sIH5zY2hlZHVsZV9hY3Rpb24pO1xuICAgICAgT2soey4uLm1vZGVsLCB1aV9zdGF0ZX0pO1xuICAgIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbCh1KSA9PlxuICAgICAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPVxuICAgICAgICBFeHBsYWluVGhpc1VwZGF0ZS5zZXRfdXBkYXRlKG1vZGVsLmV4cGxhaW5UaGlzTW9kZWwsIHUpO1xuICAgICAgTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZXhwbGFpblRoaXNNb2RlbH0pO1xuICAgIHwgRGVidWdDb25zb2xlKGtleSkgPT5cbiAgICAgIERlYnVnQ29uc29sZS5wcmludChtb2RlbCwga2V5KTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFNhdmUgPT4gTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKG1vZGVsKVxuICAgIHwgSW5pdEltcG9ydEFsbChmaWxlKSA9PlxuICAgICAgSnNVdGlsLnJlYWRfZmlsZShmaWxlLCBkYXRhID0+IHNjaGVkdWxlX2FjdGlvbihGaW5pc2hJbXBvcnRBbGwoZGF0YSkpKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IEZpbmlzaEltcG9ydEFsbChkYXRhKSA9PlxuICAgICAgc3dpdGNoIChkYXRhKSB7XG4gICAgICB8IE5vbmUgPT4gT2sobW9kZWwpXG4gICAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgICAgRXhwb3J0LmltcG9ydF9hbGwoZGF0YSwgfnNwZWNzPUV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzKTtcbiAgICAgICAgT2soTW9kZWwubG9hZChtb2RlbCkpO1xuICAgICAgfVxuICAgIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoZmlsZSkgPT5cbiAgICAgIEpzVXRpbC5yZWFkX2ZpbGUoZmlsZSwgZGF0YSA9PlxuICAgICAgICBzY2hlZHVsZV9hY3Rpb24oRmluaXNoSW1wb3J0U2NyYXRjaHBhZChkYXRhKSlcbiAgICAgICk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKGRhdGEpID0+XG4gICAgICBsZXQgZWRpdG9ycyA9IEVkaXRvcnMuaW1wb3J0X2N1cnJlbnQobW9kZWwuZWRpdG9ycywgZGF0YSk7XG4gICAgICBNb2RlbC5zYXZlX2FuZF9yZXR1cm4oey4uLm1vZGVsLCBlZGl0b3JzfSk7XG4gICAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YSA9PlxuICAgICAgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSgpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgUmVzZXRDdXJyZW50RWRpdG9yID0+XG4gICAgICBsZXQgaW5zdHJ1Y3Rvcl9tb2RlID0gbW9kZWwuc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlO1xuICAgICAgbGV0IGVkaXRvcnMgPSBFZGl0b3JzLnJlc2V0X2N1cnJlbnQobW9kZWwuZWRpdG9ycywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgICBNb2RlbC5zYXZlX2FuZF9yZXR1cm4oey4uLm1vZGVsLCBlZGl0b3JzfSk7XG4gICAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUobikgPT5cbiAgICAgIGxldCBpbnN0cnVjdG9yX21vZGUgPSBtb2RlbC5zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGU7XG4gICAgICBzd2l0Y2ggKHN3aXRjaF9zY3JhdGNoX3NsaWRlKG1vZGVsLmVkaXRvcnMsIH5pbnN0cnVjdG9yX21vZGUsIG4pKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoRmFpbGVkVG9Td2l0Y2gpXG4gICAgICB8IFNvbWUoZWRpdG9ycykgPT4gTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pXG4gICAgICB9O1xuICAgIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKG5hbWUpID0+XG4gICAgICBzd2l0Y2ggKEVkaXRvcnMuc3dpdGNoX2V4YW1wbGVfc2xpZGUobW9kZWwuZWRpdG9ycywgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihGYWlsZWRUb1N3aXRjaClcbiAgICAgIHwgU29tZShlZGl0b3JzKSA9PiBNb2RlbC5zYXZlX2FuZF9yZXR1cm4oey4uLm1vZGVsLCBlZGl0b3JzfSlcbiAgICAgIH1cbiAgICB8IFN3aXRjaEVkaXRvcihwb3MpID0+XG4gICAgICBsZXQgaW5zdHJ1Y3Rvcl9tb2RlID0gbW9kZWwuc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlO1xuICAgICAgc3dpdGNoIChzd2l0Y2hfZXhlcmNpc2VfZWRpdG9yKG1vZGVsLmVkaXRvcnMsIH5wb3MsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoRmFpbGVkVG9Td2l0Y2gpXG4gICAgICB8IFNvbWUoZWRpdG9ycykgPT4gT2soey4uLm1vZGVsLCBlZGl0b3JzfSlcbiAgICAgIH07XG4gICAgfCBUQUIgPT5cbiAgICAgIC8qIEF0dGVtcHQgdG8gYWN0IGludGVsbGlnZW50bHkgd2hlbiBUQUIgaXMgcHJlc3NlZC5cbiAgICAgICAqIFRPRE8oYW5kcmV3KTogQ29uc2lkZXIgbW9yZSBhZHZhbmNlZCBUQUIgbG9naWMuIEluc3RlYWRcbiAgICAgICAqIG9mIHNpbXBseSBtb3ZpbmcgdG8gbmV4dCBob2xlLCBpZiB0aGUgYmFja3BhY2sgaXMgbm9uLWVtcHR5XG4gICAgICAgKiBidXQgY2FuJ3QgaW1tZWRpYXRlbHkgcHV0IGRvd24sIG1vdmUgdG8gbmV4dCBwb3NpdGlvbiBvZlxuICAgICAgICogaW50ZXJlc3QsIHdoaWNoIGlzIGNsb3NldCBvZjogbmVhcmVzdCBwb3NpdGlvbiB3aGVyZSBjYW5cbiAgICAgICAqIHB1dCBkb3duLCBmYXJ0aGVzdCBwb3NpdGlvbiB3aGVyZSBjYW4gcHV0IGRvd24sIG5leHQgaG9sZSAqL1xuICAgICAgbGV0IHogPVxuICAgICAgICBtb2RlbC5lZGl0b3JzXG4gICAgICAgIHw+IEVkaXRvcnMuZ2V0X2VkaXRvclxuICAgICAgICB8PiAoKGVkOiBFZGl0b3IudCkgPT4gZWQuc3RhdGUuemlwcGVyKTtcbiAgICAgIGxldCBhID1cbiAgICAgICAgU2VsZWN0aW9uLmlzX2J1ZmZlcih6LnNlbGVjdGlvbilcbiAgICAgICAgICA/IEFzc2lzdGFudChBY2NlcHRTdWdnZXN0aW9uKVxuICAgICAgICAgIDogWmlwcGVyLmNhbl9wdXRfZG93bih6KVxuICAgICAgICAgICAgICA/IFBlcmZvcm1BY3Rpb24oUHV0X2Rvd24pIDogTW92ZVRvTmV4dEhvbGUoUmlnaHQpO1xuICAgICAgYXBwbHkobW9kZWwsIGEsIHN0YXRlLCB+c2NoZWR1bGVfYWN0aW9uKTtcbiAgICB8IFBlcmZvcm1BY3Rpb24oYSkgd2hlbiBtb2RlbC5zZXR0aW5ncy5hY2Nlc3NpYmlsaXR5LmlzX2VkaXRpbmcgPT5cbiAgICAgIGxldCBhY2Nlc3NpYmlsaXR5TW9kZWwgPVxuICAgICAgICBBY2Nlc3NpYmlsaXR5TW9kZWwudXBkYXRlKG1vZGVsLmFjY2Vzc2liaWxpdHlNb2RlbCwgRWRpdChhKSk7XG4gICAgICBsZXQgbW9kZWwgPSB7Li4ubW9kZWwsIGFjY2Vzc2liaWxpdHlNb2RlbH07XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBQZXJmb3JtQWN0aW9uKGEpXG4gICAgICAgIHdoZW4gbW9kZWwuc2V0dGluZ3MuY29yZS5hc3Npc3QgJiYgbW9kZWwuc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+XG4gICAgICBsZXQgbW9kZWwgPSBVcGRhdGVBc3Npc3RhbnQucmVzZXRfYnVmZmVyKG1vZGVsKTtcbiAgICAgIHN3aXRjaCAocGVyZm9ybV9hY3Rpb24obW9kZWwsIGEpKSB7XG4gICAgICB8IE9rKG1vZGVsKSB3aGVuIEFjdGlvbi5pc19lZGl0KGEpID0+XG4gICAgICAgIFVwZGF0ZUFzc2lzdGFudC5hcHBseShcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICBQcm9tcHQoVHlEaSksXG4gICAgICAgICAgfnNjaGVkdWxlX2FjdGlvbixcbiAgICAgICAgICB+c3RhdGUsXG4gICAgICAgICAgfm1haW49YXBwbHksXG4gICAgICAgIClcbiAgICAgIHwgeCA9PiB4XG4gICAgICB9O1xuICAgIHwgUGVyZm9ybUFjdGlvbihhKSA9PiBwZXJmb3JtX2FjdGlvbihtb2RlbCwgYSlcbiAgICB8IFF1ZXJ5SW5wdXQgPT5cbiAgICAgIGxldCBfY29tbWFuZCA9IFF1ZXJ5UGFyc2VyLnF1ZXJ5X3BhcnNlcigpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgUGVyZm9ybVF1ZXJ5KHF1ZXJ5KSA9PlxuICAgICAgLy9UT0RPXG4gICAgICBwcmludF9lbmRsaW5lKFxuICAgICAgICBRdWVyeS5xdWVyeV9yZXBseShcbiAgICAgICAgICB+c2V0dGluZ3M9bW9kZWwuc2V0dGluZ3MsXG4gICAgICAgICAgUXVlcnkuQ3Vyc29yTW92ZSxcbiAgICAgICAgICBFZGl0b3JzLmdldF9lZGl0b3IobW9kZWwuZWRpdG9ycyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcHJpbnRfZW5kbGluZShRdWVyeS50b19zdHJpbmcocXVlcnkpKTtcbiAgICAgIHByaW50X2VuZGxpbmUoXG4gICAgICAgIFF1ZXJ5LnF1ZXJ5X3JlcGx5KFxuICAgICAgICAgIH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncyxcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICBFZGl0b3JzLmdldF9lZGl0b3IobW9kZWwuZWRpdG9ycyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3IgPT5cbiAgICAgIC8qIFRoaXMgc2VyaWFsaXplcyB0aGUgY3VycmVudCBlZGl0b3IgdG8gdGV4dCwgcmVzZXRzIHRoZSBjdXJyZW50XG4gICAgICAgICBlZGl0b3IsIGFuZCB0aGVuIGRlc2VyaWFsaXplcy4gSXQgaXMgaW50ZW5kZWQgYXMgYSAodGFjdGljYWwpXG4gICAgICAgICBudWNsZWFyIG9wdGlvbiBmb3Igd2VpcmQgYmFja3BhY2sgc3RhdGVzICovXG4gICAgICBsZXQgZWQgPSBFZGl0b3JzLmdldF9lZGl0b3IobW9kZWwuZWRpdG9ycyk7XG4gICAgICBsZXQgemlwcGVyX2luaXQgPSBaaXBwZXIuaW5pdCgpO1xuICAgICAgbGV0IGVkX3N0ciA9IFByaW50ZXIudG9fc3RyaW5nX2VkaXRvcihlZCk7XG4gICAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyh+emlwcGVyX2luaXQsIGVkX3N0cikpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50UmVzZXQpXG4gICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgLy9UT0RPOiBhZGQgY29ycmVjdCBhY3Rpb24gdG8gaGlzdG9yeSAoUGlja191cCBpcyB3cm9uZylcbiAgICAgICAgbGV0IGVkaXRvciA9IEhhejNsY29yZS5FZGl0b3IubmV3X3N0YXRlKFBpY2tfdXAsIHosIGVkKTtcbiAgICAgICAgbGV0IGVkaXRvcnMgPSBFZGl0b3JzLnB1dF9lZGl0b3IoZWRpdG9yLCBtb2RlbC5lZGl0b3JzKTtcbiAgICAgICAgT2soey4uLm1vZGVsLCBlZGl0b3JzfSk7XG4gICAgICB9O1xuICAgIHwgQ3V0ID0+XG4gICAgICAvLyBzeXN0ZW0gY2xpcGJvYXJkIGhhbmRsaW5nIGl0c2VsZiBpcyBkb25lIGluIFBhZ2UudmlldyBoYW5kbGVyc1xuICAgICAgcGVyZm9ybV9hY3Rpb24obW9kZWwsIERlc3RydWN0KExlZnQpKVxuICAgIHwgQ29weSA9PlxuICAgICAgLy8gc3lzdGVtIGNsaXBib2FyZCBoYW5kbGluZyBpdHNlbGYgaXMgZG9uZSBpbiBQYWdlLnZpZXcgaGFuZGxlcnNcbiAgICAgIC8vIGRvZXNuJ3QgY2hhbmdlIHRoZSBzdGF0ZSBidXQgaW5jbHVkaW5nIGFzIGFuIGFjdGlvbiBmb3IgbG9nZ2luZyBwdXJwb3Nlc1xuICAgICAgT2sobW9kZWwpXG4gICAgfCBQYXN0ZShjbGlwYm9hcmQpID0+XG4gICAgICBsZXQgZWQgPSBFZGl0b3JzLmdldF9lZGl0b3IobW9kZWwuZWRpdG9ycyk7XG4gICAgICBzd2l0Y2ggKFByaW50ZXIucGFzdGVfaW50b196aXAoZWQuc3RhdGUuemlwcGVyLCBjbGlwYm9hcmQpKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQ2FudFBhc3RlKVxuICAgICAgfCBTb21lKHopID0+XG4gICAgICAgIC8vSEFDSyhhbmRyZXcpOiBiZWxvdyBpcyBub3Qgc3RyaWN0bHkgYSBpbnNlcnQgYWN0aW9uLi4uXG4gICAgICAgIGxldCBlZCA9IEhhejNsY29yZS5FZGl0b3IubmV3X3N0YXRlKEluc2VydChjbGlwYm9hcmQpLCB6LCBlZCk7XG4gICAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5wdXRfZWRpdG9yKGVkLCBtb2RlbC5lZGl0b3JzKTtcbiAgICAgICAgT2soey4uLm1vZGVsLCBlZGl0b3JzfSk7XG4gICAgICB9O1xuICAgIHwgVW5kbyA9PlxuICAgICAgbGV0IGVkID0gRWRpdG9ycy5nZXRfZWRpdG9yKG1vZGVsLmVkaXRvcnMpO1xuICAgICAgc3dpdGNoIChIYXozbGNvcmUuRWRpdG9yLnVuZG8oZWQpKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQ2FudFVuZG8pXG4gICAgICB8IFNvbWUoZWQpID0+XG4gICAgICAgIE9rKHsuLi5tb2RlbCwgZWRpdG9yczogRWRpdG9ycy5wdXRfZWRpdG9yKGVkLCBtb2RlbC5lZGl0b3JzKX0pXG4gICAgICB9O1xuICAgIHwgUmVkbyA9PlxuICAgICAgbGV0IGVkID0gRWRpdG9ycy5nZXRfZWRpdG9yKG1vZGVsLmVkaXRvcnMpO1xuICAgICAgc3dpdGNoIChIYXozbGNvcmUuRWRpdG9yLnJlZG8oZWQpKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQ2FudFJlZG8pXG4gICAgICB8IFNvbWUoZWQpID0+XG4gICAgICAgIE9rKHsuLi5tb2RlbCwgZWRpdG9yczogRWRpdG9ycy5wdXRfZWRpdG9yKGVkLCBtb2RlbC5lZGl0b3JzKX0pXG4gICAgICB9O1xuICAgIHwgTW92ZVRvTmV4dEhvbGUoZCkgPT5cbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBNb3ZlKEdvYWwoUGllY2UoR3JvdXQsIGQpKSkpXG4gICAgfCBBc3Npc3RhbnQoYWN0aW9uKSA9PlxuICAgICAgVXBkYXRlQXNzaXN0YW50LmFwcGx5KFxuICAgICAgICBtb2RlbCxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICB+c2NoZWR1bGVfYWN0aW9uLFxuICAgICAgICB+c3RhdGUsXG4gICAgICAgIH5tYWluPWFwcGx5LFxuICAgICAgKVxuICAgIHwgQmVuY2htYXJrKFN0YXJ0KSA9PlxuICAgICAgTGlzdC5pdGVyKHNjaGVkdWxlX2FjdGlvbiwgQmVuY2htYXJrLmFjdGlvbnNfMSk7XG4gICAgICBCZW5jaG1hcmsuc3RhcnQoKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IEJlbmNobWFyayhGaW5pc2gpID0+XG4gICAgICBCZW5jaG1hcmsuZmluaXNoKCk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgU3RlcEZvcndhcmQoaWR4KSkgPT5cbiAgICAgIGxldCByID1cbiAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICB8PiBNb2RlbFJlc3VsdHMuZmluZChrZXkpXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0LnN0ZXBfZm9yd2FyZChpZHgpO1xuICAgICAgT2soey4uLm1vZGVsLCByZXN1bHRzOiBtb2RlbC5yZXN1bHRzIHw+IE1vZGVsUmVzdWx0cy5hZGQoa2V5LCByKX0pO1xuICAgIHwgU3RlcHBlckFjdGlvbihrZXksIFN0ZXBCYWNrd2FyZCkgPT5cbiAgICAgIGxldCByID1cbiAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICB8PiBNb2RlbFJlc3VsdHMuZmluZChrZXkpXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0LnN0ZXBfYmFja3dhcmQofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbik7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHM6IG1vZGVsLnJlc3VsdHMgfD4gTW9kZWxSZXN1bHRzLmFkZChrZXksIHIpfSk7XG4gICAgfCBUb2dnbGVTdGVwcGVyKGtleSkgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIHJlc3VsdHM6XG4gICAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0cy51cGRhdGUoa2V5LCB2ID0+XG4gICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Ob0VsYWI6IE1vZGVsUmVzdWx0LnQpXG4gICAgICAgICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnRvZ2dsZV9zdGVwcGVyLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICksXG4gICAgICB9KVxuICAgIHwgVXBkYXRlUmVzdWx0KHJlc3VsdHMpID0+XG4gICAgICBsZXQgcmVzdWx0cyA9XG4gICAgICAgIE1vZGVsUmVzdWx0cy51bmlvbigoXywgX2EsIGIpID0+IFNvbWUoYiksIG1vZGVsLnJlc3VsdHMsIHJlc3VsdHMpO1xuICAgICAgT2soey4uLm1vZGVsLCByZXN1bHRzfSk7XG4gICAgfTtcbiAgbSB8PiBSZXN1bHQubWFwKH5mPXVwZGF0ZV9jYWNoZWRfZGF0YSh+c2NoZWR1bGVfYWN0aW9uLCB1cGRhdGUpKTtcbn07XG4iLCJsZXQgbGFtID0gXCLOu1wiO1xubGV0IHVwX2Fycm93ID0gXCLihpFcIjtcbmxldCBkb3duX2Fycm93ID0gXCLihpNcIjtcbmxldCBsZWZ0X2Fycm93ID0gXCLihpBcIjtcbmxldCByaWdodF9hcnJvdyA9IFwi4oaSXCI7XG5sZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiO1xubGV0IHp3c3AgPSBcIuKAi1wiO1xuXG5sZXQgdHlwZUFycm93U3ltID0gXCLihpJcIjsgLy8gVSsyMTkyIFwiUmlnaHR3YXJkcyBBcnJvd1wiXG5sZXQgY2FzdEFycm93U3ltID0gXCLih6hcIjtcblxubGV0IGVsbGlwc2lzID0gXCJcXHhFMlxceDgwXFx4QTZcIjtcblxuLy8gY29waWVkIGZyb20gaGF6ZWxcbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbmxldCBfcGF0ID0gcGF0KFwicFwiKTtcbmxldCBfdHlwID0gdHlwKFwidHlcIik7XG5sZXQgdHlwYW5uX3BhdF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0X2lkOiBJZC50LCB+dHlwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQpLCBwYXRfaWQpLFxuICAoUGllY2UuaWQoX3R5cCksIHR5cF9pZCksXG5dO1xubGV0IHR5cGFubl9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IG1hdGNoIHRoZSBbdHlwZSBhbm5vdGF0ZWQgcGF0dGVybl0oJXMpIGFuZCBoYXZlIHRoZSBbaW5kaWNhdGVkIHR5cGVdKCVzKSBtYXRjaCB0aGlzIHR5cGUgYW5ub3RhdGlvbiBwYXR0ZXJuLlwiO1xuICB7XG4gICAgaWQ6IFR5cEFublBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXQsIHNwYWNlKCksIHR5cGVhbm4oKSwgc3BhY2UoKSwgX3R5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHlwYW5uOiBncm91cCA9IHtpZDogVHlwQW5uUGF0LCBmb3JtczogW3R5cGFubl9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHBhdCA9IHRwYXQoXCJwXCIpO1xubGV0IF90eXBfZGVmID0gdHlwKFwidHlfZGVmXCIpO1xubGV0IHR5YWxpYXNfYmFzZV9leHBfY29sb3JpbmdfaWRzID0gKH50cGF0X2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KSA9PiBbXG4gIChQaWVjZS5pZChfdHBhdCksIHRwYXRfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCB0eWFsaWFzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgWyp0eXBlKl0oJXMpIGlzIGJvdW5kIHRvIHRoZSBbKnR5cGUgdmFyaWFibGUqXSglcykgaW4gdGhlIGJvZHkuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX3R5YWxpYXMoW1tzcGFjZSgpLCBfdHBhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfdHlwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogVHlBbGlhc0V4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0eWFsaWFzX2V4cHM6IGdyb3VwID0ge2lkOiBUeUFsaWFzRXhwLCBmb3JtczogW3R5YWxpYXNfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgdHVwbGVfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgdHVwbGUgdHlwZSBjbGFzc2lmaWVzICVzLXR1cGxlcyB3aXRoIGNvcnJlc3BvbmRpbmcgZWxlbWVudCB0eXBlcy5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfdHlwKCk7XG4gIHtcbiAgICBpZDogVHVwbGVUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJ0eTFcIiksIGNvbW1hLCBzcGFjZSgpLCB0eXAoXCIuLi5cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFt0eXAoXCJ0eTFcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR1cGxlMF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBlZGdlLWNhc2UgdHVwbGUgdHlwZSwgYWxzbyBrbm93biBhcyB0aGUgYHVuaXRgIHR5cGUsIGNsYXNzaWZpZXMgMC10dXBsZXMsIG9mIHdoaWNoIHRoZXJlIGlzIG9ubHkgb25lLlwiO1xuICB7XG4gICAgaWQ6IFR1cGxlMFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIigpXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBfdHlwX2VsZW0xID0gdHlwKFwidHkxXCIpO1xubGV0IF90eXBfZWxlbTIgPSB0eXAoXCJ0eTJcIik7XG5sZXQgdHVwbGUyX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2VsZW0xKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9lbGVtMiksIGVsZW0yX2lkKSxcbl07XG5sZXQgdHVwbGUyX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHR1cGxlIHR5cGUgY2xhc3NpZmllcyAyLXR1cGxlcyB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBbZmlyc3QgZWxlbWVudCB0eXBlXSglcykgYW5kIHNlY29uZCBlbGVtZW50IG9mIHRoZSBbc2Vjb25kIGVsZW1lbnQgdHlwZV0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV90eXAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTJUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfdHlwX2VsZW0xLCBjb21tYSwgc3BhY2UoKSwgX3R5cF9lbGVtMl0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3R5cChcInR5MVwiKSwgY29tbWFfdHlwKCksIHR5cChcInR5MlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF90eXBfZWxlbTEgPSB0eXAoXCJ0eTFcIik7XG5sZXQgX3R5cF9lbGVtMiA9IHR5cChcInR5MlwiKTtcbmxldCBfdHlwX2VsZW0zID0gdHlwKFwidHkzXCIpO1xubGV0IHR1cGxlM190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQsIH5lbGVtM19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2VsZW0xKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9lbGVtMiksIGVsZW0yX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTMpLCBlbGVtM19pZCksXG5dO1xubGV0IHR1cGxlM190eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyB0dXBsZSB0eXBlIGNsYXNzaWZpZXMgMy10dXBsZXMgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgW2ZpcnN0IGVsZW1lbnQgdHlwZV0oJXMpLCBzZWNvbmQgZWxlbWVudCBvZiB0aGUgW3NlY29uZCBlbGVtZW50IHR5cGVdKCVzKSwgYW5kIHRoaXJkIGVsZW1lbnQgb2YgdGhlIFt0aGlyZCBlbGVtZW50IHR5cGVdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfdHlwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUzVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfdHlwX2VsZW0xLFxuICAgICAgY29tbWFfdHlwKCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3R5cF9lbGVtMixcbiAgICAgIGNvbW1hLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF90eXBfZWxlbTMsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW3R5cChcInR5MVwiKSwgY29tbWFfdHlwKCksIHR5cChcInR5MlwiKSwgY29tbWFfdHlwKCksIHR5cChcInR5M1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHVwbGU6IGdyb3VwID0ge2lkOiBUdXBsZVR5cCwgZm9ybXM6IFt0dXBsZV90eXBdfTtcblxubGV0IHR1cGxlMDogZ3JvdXAgPSB7aWQ6IFR1cGxlMFR5cCwgZm9ybXM6IFt0dXBsZTBfdHlwXX07XG5cbmxldCB0dXBsZTI6IGdyb3VwID0ge2lkOiBUdXBsZTJUeXAsIGZvcm1zOiBbdHVwbGUyX3R5cCwgdHVwbGVfdHlwXX07XG5cbmxldCB0dXBsZTM6IGdyb3VwID0ge2lkOiBUdXBsZTNUeXAsIGZvcm1zOiBbdHVwbGUzX3R5cCwgdHVwbGVfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgdHVwbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgJXMtdHVwbGVzIHdpdGggZWxlbWVudHMgbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJucyBtYXRjaCB0aGlzIHR1cGxlIHBhdHRlcm4uXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwicDFcIiksIGNvbW1hLCBzcGFjZSgpLCBwYXQoXCIuLi5cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCB0dXBsZV9wYXRfc2l6ZTJfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIGVsZW0yX2lkKSxcbl07XG5sZXQgdHVwbGVfcGF0X3NpemUyOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgMi10dXBsZXMgd2l0aCBmaXJzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbZmlyc3QgZWxlbWVudCBwYXR0ZXJuXSglcykgYW5kIHNlY29uZCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbc2Vjb25kIGVsZW1lbnQgcGF0dGVybl0oJXMpIG1hdGNoIHRoaXMgdHVwbGUgcGF0dGVybi5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIHtcbiAgICBpZDogVHVwbGUyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdDEsIGNvbW1hLCBzcGFjZSgpLCBfcGF0Ml0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX3BhdDMgPSBwYXQoXCJwM1wiKTtcbmxldCB0dXBsZV9wYXRfc2l6ZTNfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQsIH5lbGVtM19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0MSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgZWxlbTJfaWQpLFxuICAoUGllY2UuaWQoX3BhdDMpLCBlbGVtM19pZCksXG5dO1xubGV0IHR1cGxlX3BhdF9zaXplMzogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIDMtdHVwbGVzIHdpdGggZmlyc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgW2ZpcnN0IGVsZW1lbnQgcGF0dGVybl0oJXMpLCBzZWNvbmQgZWxlbWVudCBtYXRjaGluZyB0aGUgW3NlY29uZCBlbGVtZW50IHBhdHRlcm5dKCVzKSwgYW5kIHRoaXJkIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFt0aGlyZCBlbGVtZW50IHBhdHRlcm5dKCVzKSBtYXRjaCB0aGlzIHR1cGxlIHBhdHRlcm4uXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlM1BhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX3BhdDEsXG4gICAgICBjb21tYV9wYXQoKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfcGF0MixcbiAgICAgIGNvbW1hLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9wYXQzLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR1cGxlOiBncm91cCA9IHtpZDogVHVwbGVQYXQsIGZvcm1zOiBbdHVwbGVfcGF0XX07XG5sZXQgdHVwbGUyOiBncm91cCA9IHtpZDogVHVwbGUyUGF0LCBmb3JtczogW3R1cGxlX3BhdF9zaXplMiwgdHVwbGVfcGF0XX07XG5sZXQgdHVwbGUzOiBncm91cCA9IHtpZDogVHVwbGUzUGF0LCBmb3JtczogW3R1cGxlX3BhdF9zaXplMywgdHVwbGVfcGF0XX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgdHVwbGVfZXhhbXBsZV8xID0ge1xuICBzdWJfaWQ6IFR1cGxlMSxcbiAgdGVybTogbWtfZXhhbXBsZShcIih0cnVlLCAxKVwiKSxcbiAgbWVzc2FnZTogXCJBIHR1cGxlIHdpdGggZmlyc3QgZWxtZW50IHRydWUgYW5kIHNlY29uZCBlbGVtZW50IDEuXCIsXG59O1xubGV0IHR1cGxlX2V4YW1wbGVfMiA9IHtcbiAgc3ViX2lkOiBUdXBsZTIsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIoMSwgMiwgMylcIiksXG4gIG1lc3NhZ2U6IFwiQSB0dXBsZSB3aXRoIGZpcnN0IGVsZW1lbnQgMSwgc2Vjb25kIGVsZW1lbnQgMiwgYW5kIHRoaXJkIGVsZW1lbnQgMy5cIixcbn07XG5sZXQgdHVwbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSB0dXBsZSBoYXMgJXMgZWxlbWVudHMuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbZXhwKFwiZTFcIiksIGNvbW1hLCBzcGFjZSgpLCBleHAoXCIuLi5cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIGV4cChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlX2V4YW1wbGVfMSwgdHVwbGVfZXhhbXBsZV8yXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IHR1cGxlX2V4cF9zaXplMl9jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKFBpZWNlLmlkKF9leHAxKSwgZXhwMV9pZCksIChQaWVjZS5pZChfZXhwMiksIGV4cDJfaWQpXTtcbn07XG5sZXQgdHVwbGVfZXhwX3NpemUyOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSAyLXR1cGxlIGhhcyBhIFtmaXJzdF0oJXMpIGFuZCBbc2Vjb25kXSglcykgZWxlbWVudC5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfZXhwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUyRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIGNvbW1hLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW2V4cChcImUxXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiZTJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZV9leGFtcGxlXzFdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgX2V4cDMgPSBleHAoXCJlM1wiKTtcbmxldCB0dXBsZV9leHBfc2l6ZTNfY29sb3JpbmdfaWRzID1cbiAgICAofmV4cDFfaWQ6IElkLnQsIH5leHAyX2lkOiBJZC50LCB+ZXhwM19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cDIpLCBleHAyX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cDMpLCBleHAzX2lkKSxcbiAgXTtcbn07XG5sZXQgdHVwbGVfZXhwX3NpemUzOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSAzLXR1cGxlIGhhcyBhIFtmaXJzdF0oJXMpLCBbc2Vjb25kXSglcyksIGFuZCBbdGhpcmRdKCVzKSBlbGVtZW50LlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTNFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF9leHAxLFxuICAgICAgY29tbWFfZXhwKCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX2V4cDIsXG4gICAgICBjb21tYSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfZXhwMyxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBleHAoXCJlMlwiKSwgY29tbWFfZXhwKCksIGV4cChcImUzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGVfZXhhbXBsZV8yXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZXM6IGdyb3VwID0ge2lkOiBUdXBsZUV4cCwgZm9ybXM6IFt0dXBsZV9leHBdfTtcblxubGV0IHR1cGxlczI6IGdyb3VwID0ge2lkOiBUdXBsZTJFeHAsIGZvcm1zOiBbdHVwbGVfZXhwX3NpemUyLCB0dXBsZV9leHBdfTtcblxubGV0IHR1cGxlczM6IGdyb3VwID0ge2lkOiBUdXBsZTNFeHAsIGZvcm1zOiBbdHVwbGVfZXhwX3NpemUzLCB0dXBsZV9leHBdfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID1cbiAgfCBDb2xsYXBzZWRcbiAgfCBTdGVwKGludClcbiAgfCBUZXJtXG4gIHwgSG9sZUxhYmVsXG4gIHwgRGVsaW1cbiAgfCBFbXB0eUhvbGUoYm9vbCwgSG9sZUluc3RhbmNlLnQpXG4gIHwgTm9uRW1wdHlIb2xlKEVyclN0YXR1cy5Ib2xlUmVhc29uLnQsIEhvbGVJbnN0YW5jZS50KVxuICB8IFZhckhvbGUoVmFyRXJyU3RhdHVzLkhvbGVSZWFzb24udCwgSG9sZUluc3RhbmNlLnQpXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoSG9sZUluc3RhbmNlLnQpXG4gIHwgSW52YWxpZChIb2xlSW5zdGFuY2UudClcbiAgfCBGYWlsZWRDYXN0RGVsaW1cbiAgfCBGYWlsZWRDYXN0RGVjb3JhdGlvblxuICB8IENhc3REZWNvcmF0aW9uXG4gIHwgT3BlcmF0aW9uRXJyb3IoSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gIHwgU3RlcHBhYmxlKGludClcbiAgfCBTdGVwcGVkXG4gIHwgU3Vic3RpdHV0ZWQ7XG4iLCJ0eXBlIG9yZGluYWwgPSBpbnQ7XG5cbnR5cGUgc3RhdHVzID1cbiAgfCBFbXB0eVxuICB8IFBhcnRpYWxcbiAgfCBGdWxsO1xuXG50eXBlIGludGVydmFsID0gKGZsb2F0LCBmbG9hdCk7XG5cbnR5cGUgdCA9IHtcbiAgcm9vdDogbm9kZSxcbiAgLy8gaW50ZXJ2YWwgZW5kcG9pbnRzIHNwZWNpZmllZCBhdCBpbml0aWFsaXphdGlvblxuICB2YWx1ZXM6IGFycmF5KGZsb2F0KSxcbiAgLy8gb3JkaW5hbHMgb2Ygc29ydGVkIGVuZHBvaW50c1xuICBvcmRpbmFsczogSGFzaHRibC50KGZsb2F0LCBvcmRpbmFsKSxcbn1cbmFuZCBub2RlID0ge1xuICAvLyBpbnZhcmlhbnQ6IHVuaXQgaW50ZXJ2YWxzIGFyZSBsZWF2ZXNcbiAgaW50ZXJ2YWw6IChvcmRpbmFsLCBvcmRpbmFsKSxcbiAgc2hhcGU6IG5vZGVfc2hhcGUsXG4gIC8vIHN0YXR1cyBhbmQgY291bnQgY291bGQgYmUgZXh0ZXJuYWxpemVkIGluIGEgbW9yZVxuICAvLyBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZGF0YSBzdHJ1Y3R1cmVcbiAgLy8gYnV0IHdlIG9ubHkgbmVlZCB0aGlzIGRhdGEgc3RydWN0dXJlIGZvciBhIHNpbmdsZVxuICAvLyBwdXJwb3NlIGF0IHRoZSBtb21lbnRcbiAgc3RhdHVzLFxuICBjb3VudDogaW50LFxufVxuYW5kIG5vZGVfc2hhcGUgPVxuICB8IExlYWZcbiAgfCBCcmFuY2goTGF6eS50KG5vZGUpLCBMYXp5LnQobm9kZSkpO1xuXG5sZXQgbWsgPSAodmFsdWVzOiBsaXN0KGZsb2F0KSkgPT4ge1xuICBsZXQgKHZhbHVlcywgb3JkaW5hbHMpID0ge1xuICAgIGxldCBzb3J0ZWRfdmFsdWVzID0gTGlzdC5zb3J0X3VuaXEoRmxvYXQuY29tcGFyZSwgdmFsdWVzKTtcbiAgICAoXG4gICAgICBBcnJheS5vZl9saXN0KHNvcnRlZF92YWx1ZXMpLFxuICAgICAgc29ydGVkX3ZhbHVlc1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCB5KSA9PiAoeSwgaSkpXG4gICAgICB8PiBMaXN0LnRvX3NlcVxuICAgICAgfD4gSGFzaHRibC5vZl9zZXEsXG4gICAgKTtcbiAgfTtcblxuICBsZXQgcmVjIG1rX25vZGUgPSAoYTogb3JkaW5hbCwgYjogb3JkaW5hbCk6IG5vZGUgPT4ge1xuICAgIGxldCBzaGFwZSA9XG4gICAgICBpZiAoYSArIDEgPT0gYikge1xuICAgICAgICBMZWFmO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1pZCA9IChhICsgYikgLyAyO1xuICAgICAgICBCcmFuY2gobGF6eShta19ub2RlKGEsIG1pZCkpLCBsYXp5KG1rX25vZGUobWlkLCBiKSkpO1xuICAgICAgfTtcbiAgICB7c2hhcGUsIGludGVydmFsOiAoYSwgYiksIGNvdW50OiAwLCBzdGF0dXM6IEVtcHR5fTtcbiAgfTtcblxuICB7dmFsdWVzLCBvcmRpbmFscywgcm9vdDogbWtfbm9kZSgwLCBBcnJheS5sZW5ndGgodmFsdWVzKSAtIDEpfTtcbn07XG5cbmxldCB1cGRhdGVfc3RhdHVzID0gKG5vZGU6IG5vZGUpOiBub2RlID0+IHtcbiAgbGV0IHN0YXR1cyA9XG4gICAgaWYgKG5vZGUuY291bnQgPiAwKSB7XG4gICAgICBGdWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKG5vZGUuc2hhcGUpIHtcbiAgICAgIHwgTGVhZiA9PiBFbXB0eVxuICAgICAgfCBCcmFuY2gobCwgcikgPT5cbiAgICAgICAgc3dpdGNoIChMYXp5LmZvcmNlKGwpLnN0YXR1cywgTGF6eS5mb3JjZShyKS5zdGF0dXMpIHtcbiAgICAgICAgfCAoRW1wdHksIEVtcHR5KSA9PiBFbXB0eVxuICAgICAgICB8IF8gPT4gUGFydGlhbFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIHsuLi5ub2RlLCBzdGF0dXN9O1xufTtcblxudHlwZSBvcCA9XG4gIHwgSW5zZXJ0XG4gIHwgRGVsZXRlO1xubGV0IHN0cmluZ19vZl9vcCA9XG4gIGZ1blxuICB8IEluc2VydCA9PiBcImluc2VydFwiXG4gIHwgRGVsZXRlID0+IFwiZGVsZXRlXCI7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gZm9sbG93cyBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFNlY3Rpb25zIDguMyArIDguNVxuICogb2YgQ29tcHV0YXRpb25hbCBHZW9tZXRyeTogQW4gSW50cm9kdWN0aW9uIGJ5IFByZXBhcmF0YSAmIFNoYW1vcy5cbiAqIFNlY3Rpb24gOC4zIGRlc2NyaWJlcyB0aGUgZ2VuZXJhbCB1c2Ugb2Ygc2VnbWVudCB0cmVlcyB0byBjb21wdXRlXG4gKiBmZWF0dXJlcyBvZiBhIGNvbGxlY3Rpb24gb2YgcmVjdGFuZ2xlczsgU2VjdGlvbiA4LjUgZGVzY3JpYmVzIHRoZVxuICogc3BlY2lhbGl6YXRpb24gb2YgdGhhdCBhcHByb2FjaCB0byBjb21wdXRlIHRoZSBjb250b3VyIG9mIGEgdW5pb25cbiAqIG9mIHJlY3RhbmdsZXMuIFRoZSBnZW5lcmFsIGZyYW1ld29yayBsYWlkIG91dCBpbiA4LjMgaXMgdW5uZWNlc3NhcnlcbiAqIGZvciBvdXIgcHVycG9zZXMgKHNvIG91ciBpbXBsZW1lbnRhdGlvbiBjb3VsZCBiZSBzdHJlYW1saW5lZCkgYnV0IElcbiAqIGltcGxlbWVudGVkIGl0IGFueXdheSBzbyB0aGF0IHRoZSB0ZXh0IHNlcnZlcyBhcyBkb2N1bWVudGF0aW9uIHRoYXRcbiAqIGNsb3NlbHkgbWFwcyB0byBvdXIgY29kZS5cbiAqL1xubGV0IHBlcmZvcm0gPSAob3AsIChhLCBiKTogaW50ZXJ2YWwsIHRyZWU6IHQpOiB0ID0+IHtcbiAgbGV0IHJlYyBnbyA9IChvcCwgKGEsIGIpIGFzIGludGVydmFsLCBub2RlOiBub2RlKTogbm9kZSA9PiB7XG4gICAgbGV0IChhJywgYicpID0gbm9kZS5pbnRlcnZhbDtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBpZiAoYSA8PSBhJyAmJiBiJyA8PSBiKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBhbGxvY2F0ZSB0byB0aGlzIG5vZGVcbiAgICAgICAgICAuLi5ub2RlLFxuICAgICAgICAgIGNvdW50OlxuICAgICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgfCBJbnNlcnQgPT4gbm9kZS5jb3VudCArIDFcbiAgICAgICAgICAgIHwgRGVsZXRlID0+IG5vZGUuY291bnQgLSAxXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICAgIHwgTGVhZiA9PiBub2RlXG4gICAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgICAgbGV0IG1pZCA9IChhJyArIGInKSAvIDI7XG4gICAgICAgICAgbGV0IGwgPSBhID49IG1pZCA/IGwgOiAobGF6eShnbyhvcCwgaW50ZXJ2YWwsIExhenkuZm9yY2UobCkpKSk7XG4gICAgICAgICAgbGV0IHIgPSBiIDw9IG1pZCA/IHIgOiAobGF6eShnbyhvcCwgaW50ZXJ2YWwsIExhenkuZm9yY2UocikpKSk7XG4gICAgICAgICAgey4uLm5vZGUsIHNoYXBlOiBCcmFuY2gobCwgcil9O1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB1cGRhdGVfc3RhdHVzKG5vZGUpO1xuICB9O1xuICBzd2l0Y2ggKFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYSksXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBiKSxcbiAgKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+XG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgXCJTZWdtZW50VHJlZS4lczogZXhwZWN0ZWQgaW50ZXJ2YWwgd2l0aCBlbmRwb2ludHMgc3BlY2lmaWVkIGF0IGluaXRpYWxpemF0aW9uXCIsXG4gICAgICAgIHN0cmluZ19vZl9vcChvcCksXG4gICAgICApO1xuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQobXNnKSk7XG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+XG4gICAgbGV0IGludGVydmFsID0gYSA8IGIgPyAoYSwgYikgOiAoYiwgYSk7XG4gICAgbGV0IG5ld19yb290ID0gZ28ob3AsIGludGVydmFsLCB0cmVlLnJvb3QpO1xuICAgIHsuLi50cmVlLCByb290OiBuZXdfcm9vdH07XG4gIH07XG59O1xubGV0IGluc2VydCA9IHBlcmZvcm0oSW5zZXJ0KTtcbmxldCBkZWxldGUgPSBwZXJmb3JtKERlbGV0ZSk7XG5cbi8qKlxuICogUHJlcGFyYXRhICYgU2hhbW9zIHVzZSB0aGUgdGVybWlub2xvZ3kgXCJjb250cmlidXRpb25cIiBhbmQgc3BlY2lmeVxuICogdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgcHJvY2VkdXJlIENPTlRSIGluIFNlY3Rpb24gOC41LlxuICovXG5sZXQgY29tcGxlbWVudF9pbnRlcnNlY3Rpb24gPSAoKGEsIGIpOiBpbnRlcnZhbCwgdHJlZTogdCk6IGxpc3QoaW50ZXJ2YWwpID0+IHtcbiAgbGV0IHJlYyBnbyA9XG4gICAgICAgICAgKH5zdGFjaz1bXSwgKGEsIGIpIGFzIGludGVydmFsLCBub2RlOiBub2RlKVxuICAgICAgICAgIDogbGlzdCgob3JkaW5hbCwgb3JkaW5hbCkpID0+IHtcbiAgICBsZXQgKGEnLCBiJykgPSBub2RlLmludGVydmFsO1xuICAgIHN3aXRjaCAobm9kZS5zdGF0dXMpIHtcbiAgICB8IEZ1bGwgPT4gc3RhY2tcbiAgICB8IEVtcHR5IHdoZW4gYSA8PSBhJyAmJiBiJyA8PSBiID0+XG4gICAgICAvLyBtZXJnZSBjb250aW51b3VzIHNlZ21lbnRzXG4gICAgICBzd2l0Y2ggKHN0YWNrKSB7XG4gICAgICB8IFsoYScnLCBiJycpLCAuLi5yZXN0XSB3aGVuIGEnID09IGInJyA9PiBbKGEnJywgYicpLCAuLi5yZXN0XVxuICAgICAgfCBfID0+IFsoYScsIGInKSwgLi4uc3RhY2tdXG4gICAgICB9XG4gICAgfCBfID0+XG4gICAgICBzd2l0Y2ggKG5vZGUuc2hhcGUpIHtcbiAgICAgIHwgTGVhZiA9PiBzdGFja1xuICAgICAgfCBCcmFuY2gobCwgcikgPT5cbiAgICAgICAgbGV0IG1pZCA9IChhJyArIGInKSAvIDI7XG4gICAgICAgIGxldCBzdGFjayA9IGEgPj0gbWlkID8gc3RhY2sgOiBnbyh+c3RhY2ssIGludGVydmFsLCBMYXp5LmZvcmNlKGwpKTtcbiAgICAgICAgYiA8PSBtaWQgPyBzdGFjayA6IGdvKH5zdGFjaywgaW50ZXJ2YWwsIExhenkuZm9yY2UocikpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIHN3aXRjaCAoXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBhKSxcbiAgICBIYXNodGJsLmZpbmRfb3B0KHRyZWUub3JkaW5hbHMsIGIpLFxuICApIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gZmFpbHdpdGgoXCJpbnZhbGlkIGFyZ3VtZW50XCIpXG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+XG4gICAgbGV0IGludGVydmFsID0gYSA8IGIgPyAoYSwgYikgOiAoYiwgYSk7XG4gICAgZ28oaW50ZXJ2YWwsIHRyZWUucm9vdClcbiAgICB8PiBMaXN0Lm1hcCgoKG9yZGluYWwxLCBvcmRpbmFsMikpID0+IHtcbiAgICAgICAgIGxldCAobzEsIG8yKSA9IGEgPCBiID8gKG9yZGluYWwxLCBvcmRpbmFsMikgOiAob3JkaW5hbDIsIG9yZGluYWwxKTtcbiAgICAgICAgICh0cmVlLnZhbHVlc1tvMV0sIHRyZWUudmFsdWVzW28yXSk7XG4gICAgICAgfSk7XG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgUG9pbnQgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICB4OiBmbG9hdCxcbiAgICB5OiBmbG9hdCxcbiAgfTtcbn07XG5cbm1vZHVsZSBWZWN0b3IgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBkeDogZmxvYXQsXG4gICAgZHk6IGZsb2F0LFxuICB9O1xufTtcblxubW9kdWxlIFJlY3QgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBtaW46IFBvaW50LnQsXG4gICAgd2lkdGg6IGZsb2F0LFxuICAgIGhlaWdodDogZmxvYXQsXG4gIH07XG59O1xuXG5tb2R1bGUgUGF0aCA9IHtcbiAgdHlwZSB0ID0gbGlzdChjbWQpXG4gIGFuZCBjbWQgPVxuICAgIHwgWlxuICAgIHwgTShQb2ludC50KVxuICAgIHwgTV8oVmVjdG9yLnQpXG4gICAgfCBMKFBvaW50LnQpXG4gICAgfCBMXyhWZWN0b3IudClcbiAgICB8IEgoe3g6IGZsb2F0fSlcbiAgICB8IEhfKHtkeDogZmxvYXR9KVxuICAgIHwgVih7eTogZmxvYXR9KVxuICAgIHwgVl8oe2R5OiBmbG9hdH0pXG4gICAgfCBBXyh7XG4gICAgICAgIHJ4OiBmbG9hdCxcbiAgICAgICAgcnk6IGZsb2F0LFxuICAgICAgICB4X2F4aXNfcm90YXRpb246IGZsb2F0LFxuICAgICAgICBsYXJnZV9hcmNfZmxhZzogYm9vbCxcbiAgICAgICAgc3dlZXBfZmxhZzogYm9vbCxcbiAgICAgICAgZHg6IGZsb2F0LFxuICAgICAgICBkeTogZmxvYXQsXG4gICAgICB9KTtcblxuICBsZXQgY21kZnVkZ2UgPSAofng9MC4sIH55PTAuLCBjOiBjbWQpOiBjbWQgPT4ge1xuICAgIGxldCAoaCwgdikgPSAoeCwgeSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgfCBNKHt4LCB5fSkgPT4gTSh7eDogeCArLiBoLCB5OiB5ICsuIHZ9KVxuICAgIHwgTCh7eCwgeX0pID0+IEwoe3g6IHggKy4gaCwgeTogeSArLiB2fSlcbiAgICB8IEgoe3h9KSA9PiBIKHt4OiB4ICsuIGh9KVxuICAgIHwgVih7eX0pID0+IFYoe3k6IHkgKy4gdn0pXG4gICAgfCBfID0+IGNcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtID0gKH54LCB+eSkgPT4gTSh7eDogRmxvYXQub2ZfaW50KHgpLCB5OiBGbG9hdC5vZl9pbnQoeSl9KTtcbiAgbGV0IGxfID0gKH5keCwgfmR5KSA9PiBMXyh7ZHg6IEZsb2F0Lm9mX2ludChkeCksIGR5OiBGbG9hdC5vZl9pbnQoZHkpfSk7XG4gIGxldCBoID0gKH54KSA9PiBIKHt4OiBGbG9hdC5vZl9pbnQoeCl9KTtcbiAgbGV0IGhfID0gKH5keCkgPT4gSF8oe2R4OiBGbG9hdC5vZl9pbnQoZHgpfSk7XG4gIGxldCB2ID0gKH55KSA9PiBWKHt5OiBGbG9hdC5vZl9pbnQoeSl9KTtcbiAgbGV0IHZfID0gKH5keSkgPT4gVl8oe2R5OiBGbG9hdC5vZl9pbnQoZHkpfSk7XG5cbiAgbGV0IHNjYWxlX2NtZCA9ICh+c2NhbGVfeD0xLiwgfnNjYWxlX3k9MS4pID0+XG4gICAgZnVuXG4gICAgfCAoWiB8IE0oXykgfCBMKF8pIHwgSChfKSB8IFYoXykgfCBBXyhfKSkgYXMgY21kID0+IGNtZFxuICAgIHwgTV8oe2R4LCBkeX0pID0+IE1fKHtkeDogc2NhbGVfeCAqLiBkeCwgZHk6IHNjYWxlX3kgKi4gZHl9KVxuICAgIHwgTF8oe2R4LCBkeX0pID0+IExfKHtkeDogc2NhbGVfeCAqLiBkeCwgZHk6IHNjYWxlX3kgKi4gZHl9KVxuICAgIHwgSF8oe2R4fSkgPT4gSF8oe2R4OiBzY2FsZV94ICouIGR4fSlcbiAgICB8IFZfKHtkeX0pID0+IFZfKHtkeTogc2NhbGVfeSAqLiBkeX0pO1xuXG4gIGxldCBzY2FsZSA9IHMgPT4gTGlzdC5tYXAoc2NhbGVfY21kKH5zY2FsZV94PXMsIH5zY2FsZV95PXMpKTtcbiAgbGV0IHNjYWxlX3ggPSBzID0+IExpc3QubWFwKHNjYWxlX2NtZCh+c2NhbGVfeD1zKSk7XG4gIGxldCBzY2FsZV95ID0gcyA9PiBMaXN0Lm1hcChzY2FsZV9jbWQofnNjYWxlX3k9cykpO1xuXG4gIGxldCByZXZlcnNlID0gTGlzdC5yZXZfbWFwKHNjYWxlX2NtZCh+c2NhbGVfeD0tMS4sIH5zY2FsZV95PS0xLikpO1xuXG4gIGxldCB0cmFuc2xhdGVfY21kID0gKHY6IFZlY3Rvci50KSA9PlxuICAgIGZ1blxuICAgIHwgKFogfCBNXyhfKSB8IExfKF8pIHwgSF8oXykgfCBWXyhfKSB8IEFfKF8pKSBhcyBjbWQgPT4gY21kXG4gICAgfCBNKHt4LCB5fSkgPT4gTSh7eDogeCArLiB2LmR4LCB5OiB5ICsuIHYuZHl9KVxuICAgIHwgTCh7eCwgeX0pID0+IEwoe3g6IHggKy4gdi5keCwgeTogeSArLiB2LmR5fSlcbiAgICB8IEgoe3h9KSA9PiBIKHt4OiB4ICsuIHYuZHh9KVxuICAgIHwgVih7eX0pID0+IFYoe3k6IHkgKy4gdi5keX0pO1xuICBsZXQgdHJhbnNsYXRlID0gdiA9PiBMaXN0Lm1hcCh0cmFuc2xhdGVfY21kKHYpKTtcblxuICBsZXQgc3RyaW5nX29mX2ZsYWcgPVxuICAgIGZ1blxuICAgIHwgZmFsc2UgPT4gXCIwXCJcbiAgICB8IHRydWUgPT4gXCIxXCI7XG5cbiAgbGV0IHN0cmluZ19vZl9jb21tYW5kID1cbiAgICBmdW5cbiAgICB8IFogPT4gXCJaXCJcbiAgICB8IE0oe3gsIHl9KSA9PiBQcmludGYuc3ByaW50ZihcIk0gJWYgJWZcIiwgeCwgeSlcbiAgICB8IE1fKHtkeCwgZHl9KSA9PiBQcmludGYuc3ByaW50ZihcIm0gJWYgJWZcIiwgZHgsIGR5KVxuICAgIHwgTCh7eCwgeX0pID0+IFByaW50Zi5zcHJpbnRmKFwiTCAlZiAlZlwiLCB4LCB5KVxuICAgIHwgTF8oe2R4LCBkeX0pID0+IFByaW50Zi5zcHJpbnRmKFwibCAlZiAlZlwiLCBkeCwgZHkpXG4gICAgfCBIKHt4fSkgPT4gUHJpbnRmLnNwcmludGYoXCJIICVmXCIsIHgpXG4gICAgfCBIXyh7ZHh9KSA9PiBQcmludGYuc3ByaW50ZihcImggJWZcIiwgZHgpXG4gICAgfCBWKHt5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJWICVmXCIsIHkpXG4gICAgfCBWXyh7ZHl9KSA9PiBQcmludGYuc3ByaW50ZihcInYgJWZcIiwgZHkpXG4gICAgfCBBXyh7cngsIHJ5LCB4X2F4aXNfcm90YXRpb24sIGxhcmdlX2FyY19mbGFnLCBzd2VlcF9mbGFnLCBkeCwgZHl9KSA9PlxuICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgIFwiYSAlZiAlZiAlZiAlcyAlcyAlZiAlZlwiLFxuICAgICAgICByeCxcbiAgICAgICAgcnksXG4gICAgICAgIHhfYXhpc19yb3RhdGlvbixcbiAgICAgICAgc3RyaW5nX29mX2ZsYWcobGFyZ2VfYXJjX2ZsYWcpLFxuICAgICAgICBzdHJpbmdfb2ZfZmxhZyhzd2VlcF9mbGFnKSxcbiAgICAgICAgZHgsXG4gICAgICAgIGR5LFxuICAgICAgKTtcblxuICBsZXQgdmlldyA9ICh+YXR0cnM6IEF0dHJzLnQsIHBhdGg6IHQpOiBOb2RlLnQgPT4ge1xuICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlKExpc3QubGVuZ3RoKHBhdGgpICogMjApO1xuICAgIHBhdGhcbiAgICB8PiBMaXN0Lml0ZXIoY21kID0+IHtcbiAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGJ1ZmZlciwgc3RyaW5nX29mX2NvbW1hbmQoY21kKSk7XG4gICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhidWZmZXIsIFwiIFwiKTtcbiAgICAgICB9KTtcbiAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICBcInBhdGhcIixcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW0F0dHIuY3JlYXRlKFwiZFwiLCBCdWZmZXIuY29udGVudHMoYnVmZmVyKSksIC4uLmF0dHJzXSksXG4gICAgICBbXSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIE9ydGhvZ29uYWxQb2x5Z29uID0ge1xuICB0eXBlIHQgPSBQYXRoLnQ7XG5cbiAgdHlwZSBsaW5rZWRfZWRnZSA9IHtcbiAgICBzcmM6IFBvaW50LnQsXG4gICAgZHN0OiBQb2ludC50LFxuICAgIG11dGFibGUgbmV4dDogW0BzZXhwLm9wYXF1ZV0gb3B0aW9uKGxpbmtlZF9lZGdlKSxcbiAgfTtcblxuICBsZXQgbGlua2VkX2VkZ2VfZXEgPSAoZTEsIGUyKSA9PiBlMS5zcmMgPT0gZTIuc3JjICYmIGUxLmRzdCA9PSBlMi5kc3Q7XG5cbiAgbGV0IGNtZF9vZl9saW5rZWRfZWRnZSA9IChlZGdlKTogUGF0aC5jbWQgPT4ge1xuICAgIGxldCBzcmMgPSBlZGdlLnNyYztcbiAgICBsZXQgZHN0ID0gZWRnZS5kc3Q7XG4gICAgc3JjLnggPT0gZHN0LnggPyBWXyh7ZHk6IGRzdC55IC0uIHNyYy55fSkgOiBIXyh7ZHg6IGRzdC54IC0uIHNyYy54fSk7XG4gIH07XG5cbiAgbGV0IHJvdW5kX2Nvcm5lcnMgPSAoKHJ4OiBmbG9hdCwgcnk6IGZsb2F0KSwgcGF0aDogUGF0aC50KTogUGF0aC50ID0+IHtcbiAgICAvLyBDb3JuZXIgcm91bmRpbmcgY3V0cyBpbnRvIHRoZSBsZW5ndGhzIG9mIHRoZSBlbnRlcmluZyBhbmRcbiAgICAvLyBleGl0aW5nIGVkZ2VzLiBGaW5kIHRoZSBtYXhpbXVtIChwcm9wb3J0aW9uYWxseSBzY2FsZWQpXG4gICAgLy8gcmFkaWkgcG9zc2libGUgZ2l2ZW4gbGVuZ3RocyBvZiBlbnRlcmluZyBhbmQgZXhpdGluZyBlZGdlcy5cbiAgICBsZXQgbWF4X3JhZGlpID1cbiAgICAgICAgKChyeDogZmxvYXQsIHJ5OiBmbG9hdCksIChkeDogZmxvYXQsIGR5OiBmbG9hdCkpOiAoZmxvYXQsIGZsb2F0KSA9PiB7XG4gICAgICBsZXQgcnhfbWluID0gbWluKHJ4LCBGbG9hdC5hYnMoZHgpKTtcbiAgICAgIGxldCByeV9taW4gPSBtaW4ocnksIEZsb2F0LmFicyhkeSkpO1xuICAgICAgcnlfbWluICouIHJ4ID49IHJ4X21pbiAqLiByeVxuICAgICAgICA/IChyeF9taW4sIHJ4X21pbiAqLiByeSAvLiByeCkgOiAocnlfbWluICouIHJ4IC8uIHJ5LCByeV9taW4pO1xuICAgIH07XG5cbiAgICBwYXRoXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgUGF0aC5IXyh7ZHh9KSA9PiBQYXRoLltIXyh7ZHg6IGR4ICouIDAuNX0pLCBIXyh7ZHg6IGR4ICouIDAuNX0pXVxuICAgICAgICAgfCBWXyh7ZHl9KSA9PiBbVl8oe2R5OiBkeSAqLiAwLjV9KSwgVl8oe2R5OiBkeSAqLiAwLjV9KV1cbiAgICAgICAgIHwgY21kID0+IFtjbWRdLFxuICAgICAgIClcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICB8PiBMaXN0VXRpbC5yb3RhdGVcbiAgICB8PiBMaXN0VXRpbC5kaXNqb2ludF9wYWlyc1xuICAgIHw+IExpc3QubWFwKCgoY21kMTogUGF0aC5jbWQsIGNtZDI6IFBhdGguY21kKSkgPT4ge1xuICAgICAgICAgc3dpdGNoIChjbWQxLCBjbWQyKSB7XG4gICAgICAgICB8IChIXyh7ZHh9KSwgVl8oe2R5fSkpID0+XG4gICAgICAgICAgIGxldCAocngsIHJ5KSA9IG1heF9yYWRpaSgocngsIHJ5KSwgKGR4LCBkeSkpO1xuICAgICAgICAgICBsZXQgY2xvY2t3aXNlID0gRmxvYXQuc2lnbl9iaXQoZHgpID09IEZsb2F0LnNpZ25fYml0KGR5KTtcbiAgICAgICAgICAgUGF0aC5bXG4gICAgICAgICAgICAgSF8oe2R4OiBGbG9hdC5jb3B5X3NpZ24oRmxvYXQuYWJzKGR4KSAtLiByeCwgZHgpfSksXG4gICAgICAgICAgICAgQV8oe1xuICAgICAgICAgICAgICAgcngsXG4gICAgICAgICAgICAgICByeSxcbiAgICAgICAgICAgICAgIHhfYXhpc19yb3RhdGlvbjogMC4sXG4gICAgICAgICAgICAgICBsYXJnZV9hcmNfZmxhZzogZmFsc2UsXG4gICAgICAgICAgICAgICBzd2VlcF9mbGFnOiBjbG9ja3dpc2UsXG4gICAgICAgICAgICAgICBkeDogRmxvYXQuY29weV9zaWduKHJ4LCBkeCksXG4gICAgICAgICAgICAgICBkeTogRmxvYXQuY29weV9zaWduKHJ5LCBkeSksXG4gICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgVl8oe2R5OiBGbG9hdC5jb3B5X3NpZ24oRmxvYXQuYWJzKGR5KSAtLiByeSwgZHkpfSksXG4gICAgICAgICAgIF07XG4gICAgICAgICB8IChWXyh7ZHl9KSwgSF8oe2R4fSkpID0+XG4gICAgICAgICAgIGxldCAocngsIHJ5KSA9IG1heF9yYWRpaSgocngsIHJ5KSwgKGR4LCBkeSkpO1xuICAgICAgICAgICBsZXQgY2xvY2t3aXNlID0gRmxvYXQuc2lnbl9iaXQoZHkpICE9IEZsb2F0LnNpZ25fYml0KGR4KTtcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIFZfKHtkeTogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeSkgLS4gcnksIGR5KX0pLFxuICAgICAgICAgICAgIEFfKHtcbiAgICAgICAgICAgICAgIHJ4LFxuICAgICAgICAgICAgICAgcnksXG4gICAgICAgICAgICAgICB4X2F4aXNfcm90YXRpb246IDAuLFxuICAgICAgICAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgc3dlZXBfZmxhZzogY2xvY2t3aXNlLFxuICAgICAgICAgICAgICAgZHg6IEZsb2F0LmNvcHlfc2lnbihyeCwgZHgpLFxuICAgICAgICAgICAgICAgZHk6IEZsb2F0LmNvcHlfc2lnbihyeSwgZHkpLFxuICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgIEhfKHtkeDogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeCkgLS4gcngsIGR4KX0pLFxuICAgICAgICAgICBdO1xuICAgICAgICAgfCBfID0+IFtjbWQxLCBjbWQyXVxuICAgICAgICAgfVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuO1xuICB9O1xuXG4gIGxldCBpc19sZWZ0X3NpZGUgPSAoZWRnZTogbGlua2VkX2VkZ2UpOiBib29sID0+IHtcbiAgICBlZGdlLnNyYy55ID4gZWRnZS5kc3QueTtcbiAgfTtcblxuICAvKipcbiAgICogTWVyZ2UgY29pbmNpZGluZyB2ZXJ0aWNhbCBlZGdlcyB0aGF0IHBvaW50IGluIHRoZSBzYW1lIGRpcmVjdGlvbi5cbiAgICovXG4gIGxldCBtZXJnZV9jb2luY2lkaW5nX3ZlcnRpY2FsX2VkZ2VzID1cbiAgICAgIChlZGdlczogbGlzdChsaW5rZWRfZWRnZSkpOiBsaXN0KGxpbmtlZF9lZGdlKSA9PiB7XG4gICAgLy8gdGhlcmUgbWF5IGJlIGEgY2xlYW5lciArIG1vcmUgZWZmaWNpZW50IG1ldGhvZCBmb3IgdGhpcyBwYXNzXG4gICAgLy8gYnV0IGdvb2QgZW5vdWdoIGZvciBub3dcbiAgICBsZXQgKGxlZnRfZWRnZXMsIHJpZ2h0X2VkZ2VzKSA9IExpc3QucGFydGl0aW9uKGlzX2xlZnRfc2lkZSwgZWRnZXMpO1xuICAgIGxldCBtZXJnZWRfbGVmdF9lZGdlcyA9XG4gICAgICBsZWZ0X2VkZ2VzXG4gICAgICB8PiBMaXN0LnNvcnQoKHYxLCB2MikgPT5cbiAgICAgICAgICAgaWYgKHYxLnNyYy54IDwgdjIuc3JjLngpIHtcbiAgICAgICAgICAgICAoLTEpO1xuICAgICAgICAgICB9IGVsc2UgaWYgKHYxLnNyYy54ID4gdjIuc3JjLngpIHtcbiAgICAgICAgICAgICAxO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICgtMSkgKiBGbG9hdC5jb21wYXJlKHYxLnNyYy55LCB2Mi5zcmMueSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoc3RhY2ssIHYpID0+XG4gICAgICAgICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgICAgICAgIHwgW10gPT4gW3ZdXG4gICAgICAgICAgICAgfCBbaGQsIC4uLnRsXSBhcyBzdGFjayA9PlxuICAgICAgICAgICAgICAgaWYgKHYuc3JjLnggPT0gaGQuZHN0LnggJiYgdi5zcmMueSA+PSBoZC5kc3QueSkge1xuICAgICAgICAgICAgICAgICBbey4uLmhkLCBkc3Q6IHYuZHN0fSwgLi4udGxdO1xuICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgW3YsIC4uLnN0YWNrXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBbXSxcbiAgICAgICAgICk7XG4gICAgbGV0IG1lcmdlZF9yaWdodF9lZGdlcyA9XG4gICAgICByaWdodF9lZGdlc1xuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBGbG9hdC5jb21wYXJlKHYxLnNyYy55LCB2Mi5zcmMueSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoc3RhY2ssIHYpID0+XG4gICAgICAgICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgICAgICAgIHwgW10gPT4gW3ZdXG4gICAgICAgICAgICAgfCBbaGQsIC4uLnRsXSBhcyBzdGFjayA9PlxuICAgICAgICAgICAgICAgaWYgKHYuc3JjLnggPT0gaGQuZHN0LnggJiYgdi5zcmMueSA8PSBoZC5kc3QueSkge1xuICAgICAgICAgICAgICAgICBbey4uLmhkLCBkc3Q6IHYuZHN0fSwgLi4udGxdO1xuICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgW3YsIC4uLnN0YWNrXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBbXSxcbiAgICAgICAgICk7XG4gICAgbWVyZ2VkX2xlZnRfZWRnZXMgQCBtZXJnZWRfcmlnaHRfZWRnZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIGB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzKHJzKWAgY29tcHV0ZSB0aGUgdmVydGljYWwgZWRnZXMgb2YgdGhlXG4gICAqIGNvbnRvdXIgb2YgdGhlIHVuaW9uIG9mIHJlY3RhbmdsZXMgYHJzYFxuICAgKi9cbiAgbGV0IHZlcnRpY2FsX2NvbnRvdXJfZWRnZXMgPSAocmVjdHM6IGxpc3QoUmVjdC50KSk6IGxpc3QobGlua2VkX2VkZ2UpID0+IHtcbiAgICBsZXQgc29ydGVkX3ZlcnRpY2FsX3NpZGVzOiBsaXN0KGxpbmtlZF9lZGdlKSA9XG4gICAgICByZWN0c1xuICAgICAgfD4gTGlzdC5tYXAoKFJlY3Que21pbiwgd2lkdGgsIGhlaWdodH0pID0+IHtcbiAgICAgICAgICAgbGV0IG1heF94ID0gbWluLnggKy4gd2lkdGg7XG4gICAgICAgICAgIGxldCBtYXhfeSA9IG1pbi55ICsuIGhlaWdodDtcbiAgICAgICAgICAgbGV0IG1heCA9IFBvaW50Lnt4OiBtYXhfeCwgeTogbWF4X3l9O1xuICAgICAgICAgICBsZXQgbWluX21heCA9IFBvaW50Lnt4OiBtaW4ueCwgeTogbWF4X3l9O1xuICAgICAgICAgICBsZXQgbWF4X21pbiA9IFBvaW50Lnt4OiBtYXhfeCwgeTogbWluLnl9O1xuICAgICAgICAgICBbXG4gICAgICAgICAgICAgLy8gbGVmdCBzaWRlcyBwb2ludCBpbiBuZWdhdGl2ZSBkaXJlY3Rpb25cbiAgICAgICAgICAgICB7c3JjOiBtaW5fbWF4LCBkc3Q6IG1pbiwgbmV4dDogTm9uZX0sXG4gICAgICAgICAgICAgLy8gcmlnaHQgc2lkZXMgcG9pbnQgaW4gcG9zaXRpdmUgZGlyZWN0aW9uXG4gICAgICAgICAgICAge3NyYzogbWF4X21pbiwgZHN0OiBtYXgsIG5leHQ6IE5vbmV9LFxuICAgICAgICAgICBdO1xuICAgICAgICAgfSlcbiAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAvLyBmb3IgdmVydGljYWwgc2lkZXMgb2YgZXF1YWwgYWJzY2lzc2EsXG4gICAgICAgICAgICAgLy8gbmVlZCB0byBzb3J0IGxlZnQgc2lkZXMgYmVmb3JlIHJpZ2h0IHNpZGVzXG4gICAgICAgICAgICAgbGV0IGlzX2xlZnQxID0gaXNfbGVmdF9zaWRlKHYxKTtcbiAgICAgICAgICAgICBsZXQgaXNfbGVmdDIgPSBpc19sZWZ0X3NpZGUodjIpO1xuICAgICAgICAgICAgIGlmIChpc19sZWZ0MSAmJiAhaXNfbGVmdDIpIHtcbiAgICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgICAgfSBlbHNlIGlmICghaXNfbGVmdDEgJiYgaXNfbGVmdDIpIHtcbiAgICAgICAgICAgICAgIDE7XG4gICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIDA7XG4gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgfVxuICAgICAgICAgKTtcblxuICAgIGxldCBzZWdtZW50X3RyZWUgPVxuICAgICAgcmVjdHNcbiAgICAgIHw+IExpc3QubWFwKChSZWN0LnttaW4sIGhlaWdodCwgX30pID0+IFttaW4ueSwgbWluLnkgKy4gaGVpZ2h0XSlcbiAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgfD4gU2VnbWVudFRyZWUubWs7XG5cbiAgICBzb3J0ZWRfdmVydGljYWxfc2lkZXNcbiAgICAvLyBwbGFuZS1zd2VlcFxuICAgIHw+IExpc3QuZm9sZF9sZWZ0X21hcChcbiAgICAgICAgICh0cmVlLCB2KSA9PiB7XG4gICAgICAgICAgIGxldCB4ID0gdi5zcmMueDtcbiAgICAgICAgICAgbGV0IHlzID0gKHYuc3JjLnksIHYuZHN0LnkpO1xuICAgICAgICAgICBsZXQgbWtfY29udG91cl9lZGdlID0gKCh5X3NyYywgeV9kc3QpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IHNyYyA9IFBvaW50Lnt4LCB5OiB5X3NyY307XG4gICAgICAgICAgICAgbGV0IGRzdCA9IFBvaW50Lnt4LCB5OiB5X2RzdH07XG4gICAgICAgICAgICAge3NyYywgZHN0LCBuZXh0OiBOb25lfTtcbiAgICAgICAgICAgfTtcbiAgICAgICAgICAgaWYgKGlzX2xlZnRfc2lkZSh2KSkge1xuICAgICAgICAgICAgIGxldCBuZXdfY29udG91cl9lZGdlcyA9XG4gICAgICAgICAgICAgICBTZWdtZW50VHJlZS5jb21wbGVtZW50X2ludGVyc2VjdGlvbih5cywgdHJlZSlcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwKG1rX2NvbnRvdXJfZWRnZSk7XG4gICAgICAgICAgICAgbGV0IHVwZGF0ZWRfdHJlZSA9IFNlZ21lbnRUcmVlLmluc2VydCh5cywgdHJlZSk7XG4gICAgICAgICAgICAgKHVwZGF0ZWRfdHJlZSwgbmV3X2NvbnRvdXJfZWRnZXMpO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgIGxldCB1cGRhdGVkX3RyZWUgPSBTZWdtZW50VHJlZS5kZWxldGUoeXMsIHRyZWUpO1xuICAgICAgICAgICAgIGxldCBuZXdfY29udG91cl9lZGdlcyA9XG4gICAgICAgICAgICAgICBTZWdtZW50VHJlZS5jb21wbGVtZW50X2ludGVyc2VjdGlvbih5cywgdXBkYXRlZF90cmVlKVxuICAgICAgICAgICAgICAgfD4gTGlzdC5tYXAobWtfY29udG91cl9lZGdlKTtcbiAgICAgICAgICAgICAodXBkYXRlZF90cmVlLCBuZXdfY29udG91cl9lZGdlcyk7XG4gICAgICAgICAgIH07XG4gICAgICAgICB9LFxuICAgICAgICAgc2VnbWVudF90cmVlLFxuICAgICAgIClcbiAgICB8PiBzbmRcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IGV4cGxpY2F0ZWQgYnkgUHJlcGFyYXRhICYgU2hhbW9zXG4gICAgLy8gYnV0IGl0cyBhYnNlbmNlIGNhdXNlcyBidWdzXG4gICAgfD4gbWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlcztcbiAgfTtcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFNlY3Rpb24gOC41IG9mXG4gICAqIENvbXB1dGF0aW9uYWwgR2VvbWV0cnk6IEFuIEludHJvZHVjdGlvbiBieSBQcmVwYXJhdGFcbiAgICogJiBTaGFtb3MuIElmIHlvdSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFsZ29yaXRobSBpblxuICAgKiBkZXRhaWwsIHlvdSBzaG91bGQgZmlyc3QgcmVhZCBTZWN0aW9ucyAxLjIuMy4xICsgOC4zLlxuICAgKi9cbiAgbGV0IG1rID0gKH5jb3JuZXJfcmFkaWk6IChmbG9hdCwgZmxvYXQpLCByZWN0czogbGlzdChSZWN0LnQpKTogdCA9PiB7XG4gICAgYXNzZXJ0KHJlY3RzICE9IFtdKTtcblxuICAgIGxldCB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzID0gdmVydGljYWxfY29udG91cl9lZGdlcyhyZWN0cyk7XG5cbiAgICAvLyBqb2luIHZlcnRpY2FsIGNvbnRvdXIgZWRnZXMgdmlhIGhvcml6b250YWwgZWRnZXNcbiAgICB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzXG4gICAgfD4gTGlzdC5tYXAodiA9PiBbKGZhbHNlLCB2KSwgKHRydWUsIHYpXSlcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAvLyBzb3J0IGVuZHBvaW50cyBieSB5IGNvb3JkaW5hdGUsIHRoZW4geCBjb29yZGluYXRlXG4gICAgfD4gTGlzdC5zb3J0KCgoaXNfc3JjMSwgdjEpLCAoaXNfc3JjMiwgdjIpKSA9PiB7XG4gICAgICAgICBsZXQgcHQxID0gaXNfc3JjMSA/IHYxLnNyYyA6IHYxLmRzdDtcbiAgICAgICAgIGxldCBwdDIgPSBpc19zcmMyID8gdjIuc3JjIDogdjIuZHN0O1xuICAgICAgICAgaWYgKHB0MS55IDwgcHQyLnkpIHtcbiAgICAgICAgICAgKC0xKTtcbiAgICAgICAgIH0gZWxzZSBpZiAocHQxLnkgPiBwdDIueSkge1xuICAgICAgICAgICAxO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgRmxvYXQuY29tcGFyZShwdDEueCwgcHQyLngpO1xuICAgICAgICAgfTtcbiAgICAgICB9KVxuICAgIHw+IExpc3RVdGlsLmRpc2pvaW50X3BhaXJzXG4gICAgLy8gY29uc2VjdXRpdmUgcGFpcnMgb2YgZW5kcG9pbnRzIGZvcm0gaG9yaXpvbnRhbCBlZGdlc1xuICAgIHw+IExpc3QuaXRlcigoKChpc19zcmMxLCB2MSksIChpc19zcmMyLCB2MikpKSA9PiB7XG4gICAgICAgICBsZXQgcHQxID0gaXNfc3JjMSA/IHYxLnNyYyA6IHYxLmRzdDtcbiAgICAgICAgIGxldCBwdDIgPSBpc19zcmMyID8gdjIuc3JjIDogdjIuZHN0O1xuICAgICAgICAgYXNzZXJ0KHB0MS55ID09IHB0Mi55KTtcbiAgICAgICAgIGxldCB5ID0gcHQxLnk7XG5cbiAgICAgICAgIGxldCAoeF9zcmMsIHhfZHN0LCBwcmV2LCBuZXh0KSA9XG4gICAgICAgICAgIGlzX3NyYzEgPyAocHQyLngsIHB0MS54LCB2MiwgdjEpIDogKHB0MS54LCBwdDIueCwgdjEsIHYyKTtcblxuICAgICAgICAgbGV0IGggPSB7XG4gICAgICAgICAgIGxldCBzcmMgPSBQb2ludC57eDogeF9zcmMsIHl9O1xuICAgICAgICAgICBsZXQgZHN0ID0gUG9pbnQue3g6IHhfZHN0LCB5fTtcbiAgICAgICAgICAge3NyYywgZHN0LCBuZXh0OiBTb21lKG5leHQpfTtcbiAgICAgICAgIH07XG4gICAgICAgICBwcmV2Lm5leHQgPSBTb21lKGgpO1xuICAgICAgIH0pO1xuXG4gICAgbGV0IHN0YXJ0ID0gTGlzdC5oZCh2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzKTtcbiAgICBsZXQgcmVjIGJ1aWxkX3BhdGggPSAoZWRnZTogbGlua2VkX2VkZ2UpOiBQYXRoLnQgPT4ge1xuICAgICAgc3dpdGNoIChlZGdlLm5leHQpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcImV4cGVjdGVkIHNpbmdsZSBjeWNsZVwiKVxuICAgICAgfCBTb21lKG5leHQpID0+XG4gICAgICAgIGxpbmtlZF9lZGdlX2VxKG5leHQsIHN0YXJ0KVxuICAgICAgICAgID8gW10gOiBbY21kX29mX2xpbmtlZF9lZGdlKG5leHQpLCAuLi5idWlsZF9wYXRoKG5leHQpXVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBwYXRoID0gW2NtZF9vZl9saW5rZWRfZWRnZShzdGFydCksIC4uLmJ1aWxkX3BhdGgoc3RhcnQpXTtcblxuICAgIHBhdGhcbiAgICB8PiByb3VuZF9jb3JuZXJzKGNvcm5lcl9yYWRpaSlcbiAgICB8PiBMaXN0LmNvbnMoXG4gICAgICAgICBQYXRoLk0oe1xuICAgICAgICAgICB4OiAoc3RhcnQuc3JjLnggKy4gc3RhcnQuZHN0LngpICouIDAuNSxcbiAgICAgICAgICAgeTogKHN0YXJ0LnNyYy55ICsuIHN0YXJ0LmRzdC55KSAqLiAwLjUsXG4gICAgICAgICB9KSxcbiAgICAgICApO1xuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIE1lYXN1cmVkUG9zaXRpb24gPSBQcmV0dHkuTWVhc3VyZWRQb3NpdGlvbjtcbm1vZHVsZSBNZWFzdXJlZExheW91dCA9IFByZXR0eS5NZWFzdXJlZExheW91dDtcblxudHlwZSBjb250YWluZXJfdHlwZSA9XG4gIHwgU3ZnXG4gIHwgRGl2O1xuXG4vKipcbiAqIEEgYnVmZmVyZWQgY29udGFpbmVyIGZvciBTVkcgZWxlbWVudHMgc28gdGhhdCBzdHJva2VzIGFsb25nXG4gKiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBlbGVtZW50cyBkbyBub3QgZ2V0IGNsaXBwZWQgYnkgdGhlXG4gKiB2aWV3Qm94IGJvdW5kYXJpZXNcbiAqL1xubGV0IGNvbnRhaW5lciA9XG4gICAgKFxuICAgICAgfmNvbnRhaW5lcl90eXBlOiBjb250YWluZXJfdHlwZSxcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+b3JpZ2luOiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICB+aGVpZ2h0OiBpbnQsXG4gICAgICB+d2lkdGg6IGludCxcbiAgICAgIH5jbHM6IHN0cmluZyxcbiAgICAgIGNvbnRlbnRzOiBsaXN0KE5vZGUudCksXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgbGV0IGJ1ZmZlcmVkX2hlaWdodCA9IGhlaWdodDtcbiAgbGV0IGJ1ZmZlcmVkX3dpZHRoID0gd2lkdGg7XG5cbiAgbGV0IGJ1ZmZlcmVkX2hlaWdodF9weCA9XG4gICAgRmxvYXQub2ZfaW50KGJ1ZmZlcmVkX2hlaWdodCkgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQ7XG4gIGxldCBidWZmZXJlZF93aWR0aF9weCA9XG4gICAgRmxvYXQub2ZfaW50KGJ1ZmZlcmVkX3dpZHRoKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoO1xuXG4gIGxldCBjb250YWluZXJfb3JpZ2luX3ggPVxuICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93KSAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodDtcbiAgbGV0IGNvbnRhaW5lcl9vcmlnaW5feSA9IEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoO1xuXG4gIGxldCBpbm5lciA9XG4gICAgc3dpdGNoIChjb250YWluZXJfdHlwZSkge1xuICAgIHwgRGl2ID0+XG4gICAgICBOb2RlLmRpdihcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwiZGVjb3JhdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXCIlcy1jb250YWluZXJcIiwgY2xzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgXCJ3aWR0aDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgICAgICAgICAgICAgIGJ1ZmZlcmVkX3dpZHRoX3B4LFxuICAgICAgICAgICAgICAgIGJ1ZmZlcmVkX2hlaWdodF9weCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIGNvbnRlbnRzLFxuICAgICAgKVxuICAgIHwgU3ZnID0+XG4gICAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICAgIFwic3ZnXCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW2Nsc10pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICAgIFwidmlld0JveFwiLFxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcIjAgMCAlZCAlZFwiLCBidWZmZXJlZF93aWR0aCwgYnVmZmVyZWRfaGVpZ2h0KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcIndpZHRoXCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCBidWZmZXJlZF93aWR0aF9weCkpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCBidWZmZXJlZF9oZWlnaHRfcHgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIGNvbnRlbnRzLFxuICAgICAgKVxuICAgIH07XG4gIE5vZGUuZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICBcImRlY29yYXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYoXCIlcy1jb250YWluZXJcIiwgY2xzKSxcbiAgICAgICAgXSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgIFwidG9wOiBjYWxjKCVmcHgpOyBsZWZ0OiAlZnB4O1wiLFxuICAgICAgICAgICAgY29udGFpbmVyX29yaWdpbl94LFxuICAgICAgICAgICAgY29udGFpbmVyX29yaWdpbl95LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBbaW5uZXJdLFxuICApO1xufTtcblxubGV0IGNvcm5lcl9yYWRpaSA9IChmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQpID0+IHtcbiAgbGV0IHIgPSAyLjU7XG4gIChyIC8uIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgsIHIgLy4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQpO1xufTtcblxubGV0IHJlY3RzID1cbiAgICAoXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+dnRyaW09MC4wLFxuICAgICAgc3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgIG06IE1lYXN1cmVkTGF5b3V0LnQoXyksXG4gICAgKVxuICAgIDogbGlzdChTdmdVdGlsLlJlY3QudCkgPT4ge1xuICBsZXQgbWtfcmVjdCA9XG4gICAgICAoXG4gICAgICAgIH5pc19maXJzdD1mYWxzZSxcbiAgICAgICAgfmlzX2xhc3Q9ZmFsc2UsXG4gICAgICAgIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICAgIGJveDogTWVhc3VyZWRMYXlvdXQuYm94LFxuICAgICAgKSA9PlxuICAgIFN2Z1V0aWwuUmVjdC57XG4gICAgICBtaW46IHtcbiAgICAgICAgeDogRmxvYXQub2ZfaW50KHN0YXJ0LmNvbCksXG4gICAgICAgIHk6IEZsb2F0Lm9mX2ludChzdGFydC5yb3cpICsuIChpc19maXJzdCA/IHZ0cmltIDogMC4wKSxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogRmxvYXQub2ZfaW50KGJveC53aWR0aCksXG4gICAgICBoZWlnaHQ6XG4gICAgICAgIEZsb2F0Lm9mX2ludChib3guaGVpZ2h0KVxuICAgICAgICAtLiAoaXNfZmlyc3QgPyB2dHJpbSA6IDAuMClcbiAgICAgICAgLS4gKGlzX2xhc3QgPyB2dHJpbSA6IDAuMCksXG4gICAgfTtcbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aChtLm1ldHJpY3MpO1xuICBtLm1ldHJpY3NcbiAgfD4gTGlzdC5tYXBpKChpLCBib3gpID0+IChpLCBib3gpKVxuICB8PiBMaXN0LmZvbGRfbGVmdF9tYXAoXG4gICAgICAgKHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIChpLCBib3g6IE1lYXN1cmVkTGF5b3V0LmJveCkpID0+XG4gICAgICAgICAoXG4gICAgICAgICAgIHtyb3c6IHN0YXJ0LnJvdyArIGJveC5oZWlnaHQsIGNvbDogaW5kZW50fSxcbiAgICAgICAgICAgbWtfcmVjdCh+aXNfZmlyc3Q9aSA9PSAwLCB+aXNfbGFzdD1pID09IG4gLSAxLCBzdGFydCwgYm94KSxcbiAgICAgICAgICksXG4gICAgICAgc3RhcnQsXG4gICAgIClcbiAgfD4gc25kO1xufTtcblxubW9kdWxlIEVyckhvbGUgPSB7XG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfnZ0cmltPTAuLFxuICAgICAgICB+Y29ybmVyX3JhZGlpOiAoZmxvYXQsIGZsb2F0KSxcbiAgICAgICAgKG9mZnNldCwgc3ViamVjdCk6IE1lYXN1cmVkTGF5b3V0LndpdGhfb2Zmc2V0KF8pLFxuICAgICAgKVxuICAgICAgOiBOb2RlLnQgPT5cbiAgICBzdWJqZWN0XG4gICAgfD4gcmVjdHMofnZ0cmltLCB7cm93OiAwLCBjb2w6IG9mZnNldH0pXG4gICAgfD4gU3ZnVXRpbC5PcnRob2dvbmFsUG9seWdvbi5tayh+Y29ybmVyX3JhZGlpKVxuICAgIHw+IFN2Z1V0aWwuUGF0aC52aWV3KFxuICAgICAgICAgfmF0dHJzPVxuICAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgICBjbGFzc2VzKFtcImVyci1ob2xlXCJdKSxcbiAgICAgICAgICAgICBjcmVhdGUoXCJ2ZWN0b3ItZWZmZWN0XCIsIFwibm9uLXNjYWxpbmctc3Ryb2tlXCIpLFxuICAgICAgICAgICBdLFxuICAgICAgICk7XG59O1xuXG5tb2R1bGUgVmFyRXJySG9sZSA9IHtcbiAgbGV0IHZpZXcgPVxuICAgICAgKFxuICAgICAgICB+dnRyaW09MC4sXG4gICAgICAgIH5jb3JuZXJfcmFkaWk6IChmbG9hdCwgZmxvYXQpLFxuICAgICAgICAob2Zmc2V0LCBzdWJqZWN0KTogTWVhc3VyZWRMYXlvdXQud2l0aF9vZmZzZXQoXyksXG4gICAgICApXG4gICAgICA6IE5vZGUudCA9PlxuICAgIHN1YmplY3RcbiAgICB8PiByZWN0cyh+dnRyaW0sIHtyb3c6IDAsIGNvbDogb2Zmc2V0fSlcbiAgICB8PiBTdmdVdGlsLk9ydGhvZ29uYWxQb2x5Z29uLm1rKH5jb3JuZXJfcmFkaWkpXG4gICAgfD4gU3ZnVXRpbC5QYXRoLnZpZXcoXG4gICAgICAgICB+YXR0cnM9XG4gICAgICAgICAgIEF0dHIuW1xuICAgICAgICAgICAgIGNsYXNzZXMoW1widmFyLWVyci1ob2xlXCJdKSxcbiAgICAgICAgICAgICBjcmVhdGUoXCJ2ZWN0b3ItZWZmZWN0XCIsIFwibm9uLXNjYWxpbmctc3Ryb2tlXCIpLFxuICAgICAgICAgICBdLFxuICAgICAgICk7XG59O1xuIiwib3BlbiBQcmV0dHk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IERvYy50KERIQW5ub3QudCk7XG4iLCJtb2R1bGUgRG9jID0gUHJldHR5LkRvYztcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBESERvYztcblxudHlwZSBmb3JtYXR0YWJsZV9jaGlsZCA9ICh+ZW5mb3JjZV9pbmxpbmU6IGJvb2wpID0+IHQ7XG5cbm1vZHVsZSBQID0gUHJlY2VkZW5jZTtcbmxldCBwcmVjZWRlbmNlX2NvbnN0ID0gUC5tYXg7XG5sZXQgcHJlY2VkZW5jZV9BcCA9IFAuYXA7XG5sZXQgcHJlY2VkZW5jZV9Qb3dlciA9IFAucG93ZXI7XG5cbmxldCBwcmVjZWRlbmNlX1RpbWVzID0gUC5tdWx0O1xubGV0IHByZWNlZGVuY2VfRGl2aWRlID0gUC5tdWx0O1xubGV0IHByZWNlZGVuY2VfUGx1cyA9IFAucGx1cztcbmxldCBwcmVjZWRlbmNlX01pbnVzID0gUC5wbHVzO1xubGV0IHByZWNlZGVuY2VfQ29ucyA9IFAuY29ucztcbmxldCBwcmVjZWRlbmNlX0VxdWFscyA9IFAuZXFzO1xubGV0IHByZWNlZGVuY2VfTGVzc1RoYW4gPSBQLmVxcztcbmxldCBwcmVjZWRlbmNlX0dyZWF0ZXJUaGFuID0gUC5lcXM7XG5sZXQgcHJlY2VkZW5jZV9BbmQgPSBQLmFuZF87XG5sZXQgcHJlY2VkZW5jZV9PciA9IFAub3JfO1xubGV0IHByZWNlZGVuY2VfQ29tbWEgPSBQLnByb2Q7XG5sZXQgcHJlY2VkZW5jZV9tYXggPSBQLm1pbjtcblxubGV0IHBhZF9jaGlsZCA9XG4gICAgKFxuICAgICAgfmlubGluZV9wYWRkaW5nIGFzIChsLCByKT0oRG9jLmVtcHR5KCksIERvYy5lbXB0eSgpKSxcbiAgICAgIH5lbmZvcmNlX2lubGluZTogYm9vbCxcbiAgICAgIGNoaWxkOiBmb3JtYXR0YWJsZV9jaGlsZCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IGlubGluZV9jaG9pY2UgPSBEb2MuaGNhdHMoW2wsIGNoaWxkKH5lbmZvcmNlX2lubGluZT10cnVlKSwgcl0pO1xuICBsZXQgcGFyYV9jaG9pY2UgPVxuICAgIERvYy4oXG4gICAgICBoY2F0cyhbXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBpbmRlbnRfYW5kX2FsaWduKGNoaWxkKH5lbmZvcmNlX2lubGluZT1mYWxzZSkpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0pXG4gICAgKTtcbiAgZW5mb3JjZV9pbmxpbmUgPyBpbmxpbmVfY2hvaWNlIDogRG9jLmNob2ljZShpbmxpbmVfY2hvaWNlLCBwYXJhX2Nob2ljZSk7XG59O1xuXG5tb2R1bGUgRGVsaW0gPSB7XG4gIGxldCBtayA9IChkZWxpbV90ZXh0OiBzdHJpbmcpOiB0ID0+XG4gICAgRG9jLnRleHQoZGVsaW1fdGV4dCkgfD4gRG9jLmFubm90KERIQW5ub3QuRGVsaW0pO1xuXG4gIGxldCBlbXB0eV9ob2xlID0gKChfdSwgX2kpOiBIb2xlSW5zdGFuY2UudCk6IHQgPT4ge1xuICAgIGxldCBsYmwgPVxuICAgICAgLy9TdHJpbmdVdGlsLmNhdChbc3RyaW5nX29mX2ludCh1ICsgMSksIFwiOlwiLCBzdHJpbmdfb2ZfaW50KGkgKyAxKV0pO1xuICAgICAgXCI/XCI7XG4gICAgRG9jLnRleHQobGJsKVxuICAgIHw+IERvYy5hbm5vdChESEFubm90LkhvbGVMYWJlbClcbiAgICB8PiBEb2MuYW5ub3QoREhBbm5vdC5EZWxpbSk7XG4gIH07XG5cbiAgbGV0IGxpc3RfbmlsID0gbWsoXCJbXVwiKTtcbiAgbGV0IHRyaXYgPSBtayhcIigpXCIpO1xuICBsZXQgd2lsZCA9IG1rKFwiX1wiKTtcblxuICBsZXQgb3Blbl9QYXJlbnRoZXNpemVkID0gbWsoXCIoXCIpO1xuICBsZXQgY2xvc2VfUGFyZW50aGVzaXplZCA9IG1rKFwiKVwiKTtcblxuICBsZXQgc3ltX0Z1biA9IG1rKFwiZnVuXCIpO1xuICBsZXQgY29sb25fRnVuID0gbWsoXCI6XCIpO1xuICBsZXQgYXJyb3dfRnVuID0gbWsoXCItPlwiKTtcblxuICBsZXQgZml4X0ZpeEYgPSBtayhcImZpeFwiKTtcblxuICBsZXQgYXJyb3dfRml4RiA9IG1rKFwiLT5cIik7XG4gIGxldCBjb2xvbl9GaXhGID0gbWsoXCI6XCIpO1xuXG4gIGxldCBwcm9qZWN0aW9uX2RvdCA9IG1rKFwiLlwiKTtcblxuICBsZXQgb3Blbl9DYXNlID0gbWsoXCJjYXNlXCIpO1xuICBsZXQgY2xvc2VfQ2FzZSA9IG1rKFwiZW5kXCIpO1xuXG4gIGxldCBiYXJfUnVsZSA9IG1rKFwifFwiKTtcbiAgbGV0IGFycm93X1J1bGUgPSBtayhcIj0+XCIpO1xuXG4gIGxldCBvcGVuX0Nhc3QgPSBtayhcIjxcIik7XG4gIGxldCBhcnJvd19DYXN0ID0gbWsoVW5pY29kZS5jYXN0QXJyb3dTeW0pO1xuICBsZXQgY2xvc2VfQ2FzdCA9IG1rKFwiPlwiKTtcblxuICBsZXQgb3Blbl9GYWlsZWRDYXN0ID0gb3Blbl9DYXN0IHw+IERvYy5hbm5vdChESEFubm90LkZhaWxlZENhc3REZWxpbSk7XG4gIGxldCBhcnJvd19GYWlsZWRDYXN0ID1cbiAgICBtayhVbmljb2RlLmNhc3RBcnJvd1N5bSkgfD4gRG9jLmFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlbGltKTtcbiAgbGV0IGNsb3NlX0ZhaWxlZENhc3QgPSBjbG9zZV9DYXN0IHw+IERvYy5hbm5vdChESEFubm90LkZhaWxlZENhc3REZWxpbSk7XG59O1xuXG5sZXQgbWtfRW1wdHlIb2xlID0gKH5zZWxlY3RlZD1mYWxzZSwgaGM6IEhvbGVJbnN0YW5jZS50KSA9PlxuICBEZWxpbS5lbXB0eV9ob2xlKGhjKSB8PiBEb2MuYW5ub3QoREhBbm5vdC5FbXB0eUhvbGUoc2VsZWN0ZWQsIGhjKSk7XG5cbmxldCBta19FeHBhbmRpbmdLZXl3b3JkID0gKGhjLCBrKSA9PlxuICBEb2MudGV4dChFeHBhbmRpbmdLZXl3b3JkLnRvX3N0cmluZyhrKSlcbiAgfD4gRG9jLmFubm90KERIQW5ub3QuVmFySG9sZShFeHBhbmRpbmdLZXl3b3JkKGspLCBoYykpO1xuXG5sZXQgbWtfSW52YWxpZFRleHQgPSAodCwgaGMpID0+XG4gIERvYy50ZXh0KHQpIHw+IERvYy5hbm5vdChESEFubm90LkludmFsaWQoaGMpKTtcblxubGV0IG1rX1NlcXVlbmNlID0gKGRvYzEsIGRvYzIpID0+IERvYy4oaGNhdHMoW2RvYzEsIGxpbmVicmVhaygpLCBkb2MyXSkpO1xuXG5sZXQgbWtfSW50TGl0ID0gbiA9PiBEb2MudGV4dChzdHJpbmdfb2ZfaW50KG4pKTtcblxubGV0IG1rX1N0cmluZ0xpdCA9IHMgPT4gRG9jLnRleHQoRm9ybS5zdHJpbmdfcXVvdGUocykpO1xuXG5sZXQgbWtfVGVzdCA9IHQgPT4gRG9jLihoY2F0cyhbdGV4dChcIlRlc3RcIiksIHQsIHRleHQoXCJFbmRcIildKSk7XG5cbmxldCBta19GbG9hdExpdCA9IChmOiBmbG9hdCkgPT5cbiAgc3dpdGNoIChmIDwgMC4sIEZsb2F0LmlzX2luZmluaXRlKGYpLCBGbG9hdC5pc19uYW4oZikpIHtcbiAgfCAoZmFsc2UsIHRydWUsIF8pID0+IERvYy50ZXh0KFwiSW5mXCIpIC8qIFRPRE86IE5lZ0luZiBpcyB0ZW1wb3JhcmlseSBpbnRyb2R1Y2VkIHVudGlsIHVuYXJ5IG1pbnVzIGlzIGludHJvZHVjZWQgdG8gSGF6ZWwgKi9cbiAgfCAodHJ1ZSwgdHJ1ZSwgXykgPT4gRG9jLnRleHQoXCJOZWdJbmZcIilcbiAgfCAoXywgXywgdHJ1ZSkgPT4gRG9jLnRleHQoXCJOYU5cIilcbiAgfCBfID0+IERvYy50ZXh0KHN0cmluZ19vZl9mbG9hdChmKSlcbiAgfTtcblxubGV0IG1rX0Jvb2xMaXQgPSBiID0+IERvYy50ZXh0KHN0cmluZ19vZl9ib29sKGIpKTtcblxubGV0IG1rX0NvbnN0cnVjdG9yTGl0ID0gRG9jLnRleHQ7XG5cbmxldCBta19Db25zID0gKGhkLCB0bCkgPT4gRG9jLihoY2F0cyhbaGQsIHRleHQoXCI6OlwiKSwgdGxdKSk7XG5sZXQgbWtfTGlzdENvbmNhdCA9IChoZCwgdGwpID0+IERvYy4oaGNhdHMoW2hkLCB0ZXh0KFwiQFwiKSwgdGxdKSk7XG5cbmxldCBta19jb21tYV9zZXEgPSAobGQsIHJkLCBsKSA9PiB7XG4gIGxldCByZWMgbWtfY29tbWFfc2VxX2lubmVyID0gbCA9PiB7XG4gICAgc3dpdGNoIChsKSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW2hkXSA9PiBbaGRdXG4gICAgfCBbaGQsIC4uLnRsXSA9PiBEb2MuKFtoZCwgdGV4dChcIiwgXCIpXSBAIG1rX2NvbW1hX3NlcV9pbm5lcih0bCkpXG4gICAgfTtcbiAgfTtcbiAgRG9jLihoY2F0cyhbdGV4dChsZCldIEAgbWtfY29tbWFfc2VxX2lubmVyKGwpIEAgW3RleHQocmQpXSkpO1xufTtcblxubGV0IG1rX0xpc3RMaXQgPSBsID0+IG1rX2NvbW1hX3NlcShcIltcIiwgXCJdXCIsIGwpO1xuXG5sZXQgbWtfVHVwbGUgPSBlbHRzID0+IG1rX2NvbW1hX3NlcShcIlwiLCBcIlwiLCBlbHRzKTtcblxubGV0IG1rX0FwID0gKGRvYzEsIGRvYzIpID0+XG4gIERvYy4oaGNhdHMoW2RvYzEsIHRleHQoXCIoXCIpLCBkb2MyLCB0ZXh0KFwiKVwiKV0pKTtcblxubGV0IG1rX1ByaiA9ICh0YXJnLCBuKSA9PlxuICBEb2MuaGNhdHMoW3RhcmcsIERlbGltLnByb2plY3Rpb25fZG90LCBEb2MudGV4dChzdHJpbmdfb2ZfaW50KG4pKV0pO1xuIiwib3BlbiBQcmV0dHk7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IHByZWNlZGVuY2UgPSAoZHA6IERIUGF0LnQpID0+XG4gIHN3aXRjaCAoZHApIHtcbiAgfCBFbXB0eUhvbGUoXylcbiAgfCBOb25FbXB0eUhvbGUoXylcbiAgfCBXaWxkXG4gIHwgRXhwYW5kaW5nS2V5d29yZChfKVxuICB8IEludmFsaWRUZXh0KF8pXG4gIHwgQmFkQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IEJvb2xMaXQoXylcbiAgfCBTdHJpbmdMaXQoXylcbiAgfCBMaXN0TGl0KF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfY29uc3RcbiAgfCBUdXBsZShfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db21tYVxuICB8IENvbnMoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQ29uc1xuICB8IEFwKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwXG4gIH07XG5cbmxldCByZWMgbWsgPVxuICAgICAgICAofnBhcmVudGhlc2l6ZT1mYWxzZSwgfmVuZm9yY2VfaW5saW5lOiBib29sLCBkcDogREhQYXQudCk6IERIRG9jLnQgPT4ge1xuICBsZXQgbWsnID0gbWsofmVuZm9yY2VfaW5saW5lKTtcbiAgbGV0IG1rX2xlZnRfYXNzb2NpYXRpdmVfb3BlcmFuZHMgPSAocHJlY2VkZW5jZV9vcCwgZHAxLCBkcDIpID0+IChcbiAgICBtaycofnBhcmVudGhlc2l6ZT1wcmVjZWRlbmNlKGRwMSkgPiBwcmVjZWRlbmNlX29wLCBkcDEpLFxuICAgIG1rJyh+cGFyZW50aGVzaXplPXByZWNlZGVuY2UoZHAyKSA+PSBwcmVjZWRlbmNlX29wLCBkcDIpLFxuICApO1xuICBsZXQgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMgPSAocHJlY2VkZW5jZV9vcCwgZHAxLCBkcDIpID0+IChcbiAgICBtaycofnBhcmVudGhlc2l6ZT1wcmVjZWRlbmNlKGRwMSkgPj0gcHJlY2VkZW5jZV9vcCwgZHAxKSxcbiAgICBtaycofnBhcmVudGhlc2l6ZT1wcmVjZWRlbmNlKGRwMikgPiBwcmVjZWRlbmNlX29wLCBkcDIpLFxuICApO1xuICBsZXQgZG9jID1cbiAgICBzd2l0Y2ggKGRwKSB7XG4gICAgfCBFbXB0eUhvbGUodSwgaSkgPT4gREhEb2NfY29tbW9uLm1rX0VtcHR5SG9sZSgodSwgaSkpXG4gICAgfCBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBkcCkgPT5cbiAgICAgIG1rJyhkcCkgfD4gRG9jLmFubm90KERIQW5ub3QuTm9uRW1wdHlIb2xlKHJlYXNvbiwgKHUsIGkpKSlcbiAgICB8IEV4cGFuZGluZ0tleXdvcmQodSwgaSwgaykgPT5cbiAgICAgIERIRG9jX2NvbW1vbi5ta19FeHBhbmRpbmdLZXl3b3JkKCh1LCBpKSwgaylcbiAgICB8IEludmFsaWRUZXh0KHUsIGksIHQpID0+IERIRG9jX2NvbW1vbi5ta19JbnZhbGlkVGV4dCh0LCAodSwgaSkpXG4gICAgfCBCYWRDb25zdHJ1Y3Rvcih1LCBpLCB0KSA9PiBESERvY19jb21tb24ubWtfSW52YWxpZFRleHQodCwgKHUsIGkpKVxuICAgIHwgVmFyKHgpID0+IERvYy50ZXh0KHgpXG4gICAgfCBXaWxkID0+IERIRG9jX2NvbW1vbi5EZWxpbS53aWxkXG4gICAgfCBDb25zdHJ1Y3RvcihuYW1lKSA9PiBESERvY19jb21tb24ubWtfQ29uc3RydWN0b3JMaXQobmFtZSlcbiAgICB8IEludExpdChuKSA9PiBESERvY19jb21tb24ubWtfSW50TGl0KG4pXG4gICAgfCBGbG9hdExpdChmKSA9PiBESERvY19jb21tb24ubWtfRmxvYXRMaXQoZilcbiAgICB8IEJvb2xMaXQoYikgPT4gREhEb2NfY29tbW9uLm1rX0Jvb2xMaXQoYilcbiAgICB8IFN0cmluZ0xpdChzKSA9PiBESERvY19jb21tb24ubWtfU3RyaW5nTGl0KHMpXG4gICAgfCBMaXN0TGl0KF8sIGRfbGlzdCkgPT5cbiAgICAgIGxldCBvbCA9IExpc3QubWFwKG1rJywgZF9saXN0KTtcbiAgICAgIERIRG9jX2NvbW1vbi5ta19MaXN0TGl0KG9sKTtcbiAgICB8IENvbnMoZHAxLCBkcDIpID0+XG4gICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQ29ucywgZHAxLCBkcDIpO1xuICAgICAgREhEb2NfY29tbW9uLm1rX0NvbnMoZG9jMSwgZG9jMik7XG4gICAgfCBUdXBsZShbXSkgPT4gREhEb2NfY29tbW9uLkRlbGltLnRyaXZcbiAgICB8IFR1cGxlKGRzKSA9PiBESERvY19jb21tb24ubWtfVHVwbGUoTGlzdC5tYXAobWsnLCBkcykpXG4gICAgfCBBcChkcDEsIGRwMikgPT5cbiAgICAgIGxldCAoZG9jMSwgZG9jMikgPVxuICAgICAgICBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzKERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwLCBkcDEsIGRwMik7XG4gICAgICBESERvY19jb21tb24ubWtfQXAoZG9jMSwgZG9jMik7XG4gICAgfTtcbiAgcGFyZW50aGVzaXplXG4gICAgPyBEb2MuaGNhdHMoW1xuICAgICAgICBESERvY19jb21tb24uRGVsaW0ub3Blbl9QYXJlbnRoZXNpemVkLFxuICAgICAgICBkb2MsXG4gICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5jbG9zZV9QYXJlbnRoZXNpemVkLFxuICAgICAgXSlcbiAgICA6IGRvYztcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcbm1vZHVsZSBEb2MgPSBQcmV0dHkuRG9jO1xuXG50eXBlIHQgPSBEb2MudChIVHlwQW5ub3QudCk7XG5cbnR5cGUgZm9ybWF0dGFibGVfY2hpbGQgPSAofmVuZm9yY2VfaW5saW5lOiBib29sKSA9PiB0O1xuXG5sZXQgcGFkX2NoaWxkID1cbiAgICAoXG4gICAgICB+aW5saW5lX3BhZGRpbmcgYXMgKGwsIHIpPShEb2MuZW1wdHkoKSwgRG9jLmVtcHR5KCkpLFxuICAgICAgfmVuZm9yY2VfaW5saW5lOiBib29sLFxuICAgICAgY2hpbGQ6IGZvcm1hdHRhYmxlX2NoaWxkLFxuICAgIClcbiAgICA6IHQgPT4ge1xuICBsZXQgaW5saW5lX2Nob2ljZSA9IERvYy5oY2F0cyhbbCwgY2hpbGQofmVuZm9yY2VfaW5saW5lPXRydWUpLCByXSk7XG4gIGxldCBwYXJhX2Nob2ljZSA9XG4gICAgRG9jLihcbiAgICAgIGhjYXRzKFtcbiAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgIGluZGVudF9hbmRfYWxpZ24oY2hpbGQofmVuZm9yY2VfaW5saW5lPWZhbHNlKSksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgXSlcbiAgICApO1xuICBlbmZvcmNlX2lubGluZSA/IGlubGluZV9jaG9pY2UgOiBEb2MuY2hvaWNlKGlubGluZV9jaG9pY2UsIHBhcmFfY2hvaWNlKTtcbn07XG5cbmxldCBta19kZWxpbSA9IHMgPT4gRG9jLihhbm5vdChIVHlwQW5ub3QuRGVsaW0sIHRleHQocykpKTtcblxubGV0IHJlYyBtayA9ICh+cGFyZW50aGVzaXplPWZhbHNlLCB+ZW5mb3JjZV9pbmxpbmU6IGJvb2wsIHR5OiBUeXAudCk6IHQgPT4ge1xuICBvcGVuIERvYztcbiAgbGV0IG1rJyA9IG1rKH5lbmZvcmNlX2lubGluZSk7XG4gIGxldCBta19yaWdodF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyA9IChwcmVjZWRlbmNlX29wLCB0eTEsIHR5MikgPT4gKFxuICAgIGFubm90KFxuICAgICAgSFR5cEFubm90LlN0ZXAoMCksXG4gICAgICBtaycofnBhcmVudGhlc2l6ZT1UeXAucHJlY2VkZW5jZSh0eTEpIDw9IHByZWNlZGVuY2Vfb3AsIHR5MSksXG4gICAgKSxcbiAgICBhbm5vdChcbiAgICAgIEhUeXBBbm5vdC5TdGVwKDEpLFxuICAgICAgbWsnKH5wYXJlbnRoZXNpemU9VHlwLnByZWNlZGVuY2UodHkyKSA8IHByZWNlZGVuY2Vfb3AsIHR5MiksXG4gICAgKSxcbiAgKTtcbiAgbGV0IChkb2MsIHBhcmVudGhlc2l6ZSkgPVxuICAgIHN3aXRjaCAodHkpIHtcbiAgICB8IFVua25vd24oXykgPT4gKFxuICAgICAgICBhbm5vdChIVHlwQW5ub3QuRGVsaW0sIGFubm90KEhUeXBBbm5vdC5Ib2xlTGFiZWwsIHRleHQoXCI/XCIpKSksXG4gICAgICAgIHBhcmVudGhlc2l6ZSxcbiAgICAgIClcbiAgICB8IEludCA9PiAodGV4dChcIkludFwiKSwgcGFyZW50aGVzaXplKVxuICAgIHwgRmxvYXQgPT4gKHRleHQoXCJGbG9hdFwiKSwgcGFyZW50aGVzaXplKVxuICAgIHwgQm9vbCA9PiAodGV4dChcIkJvb2xcIiksIHBhcmVudGhlc2l6ZSlcbiAgICB8IFN0cmluZyA9PiAodGV4dChcIlN0cmluZ1wiKSwgcGFyZW50aGVzaXplKVxuICAgIHwgVmFyKG5hbWUpID0+ICh0ZXh0KG5hbWUpLCBwYXJlbnRoZXNpemUpXG4gICAgfCBMaXN0KHR5KSA9PiAoXG4gICAgICAgIGhjYXRzKFtcbiAgICAgICAgICBta19kZWxpbShcIltcIiksXG4gICAgICAgICAgKFxuICAgICAgICAgICAgKH5lbmZvcmNlX2lubGluZSkgPT5cbiAgICAgICAgICAgICAgYW5ub3QoSFR5cEFubm90LlN0ZXAoMCksIG1rKH5lbmZvcmNlX2lubGluZSwgdHkpKVxuICAgICAgICAgIClcbiAgICAgICAgICB8PiBwYWRfY2hpbGQofmVuZm9yY2VfaW5saW5lKSxcbiAgICAgICAgICBta19kZWxpbShcIl1cIiksXG4gICAgICAgIF0pLFxuICAgICAgICBwYXJlbnRoZXNpemUsXG4gICAgICApXG4gICAgfCBBcnJvdyh0eTEsIHR5MikgPT5cbiAgICAgIGxldCAoZDEsIGQyKSA9XG4gICAgICAgIG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzKFR5cEJhc2UucHJlY2VkZW5jZV9BcnJvdywgdHkxLCB0eTIpO1xuICAgICAgKFxuICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgZDEsXG4gICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgY2hvaWNlcyhbbGluZWJyZWFrKCksIHNwYWNlKCldKSxcbiAgICAgICAgICAgIHRleHQoVW5pY29kZS50eXBlQXJyb3dTeW0gKysgXCIgXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGQyLFxuICAgICAgICBdKSxcbiAgICAgICAgcGFyZW50aGVzaXplLFxuICAgICAgKTtcbiAgICB8IFByb2QoW10pID0+ICh0ZXh0KFwiKClcIiksIHBhcmVudGhlc2l6ZSlcbiAgICB8IFByb2QoW2hlYWQsIC4uLnRhaWxdKSA9PlxuICAgICAgbGV0IGNlbnRlciA9XG4gICAgICAgIFtcbiAgICAgICAgICBhbm5vdChcbiAgICAgICAgICAgIEhUeXBBbm5vdC5TdGVwKDApLFxuICAgICAgICAgICAgbWsnKFxuICAgICAgICAgICAgICB+cGFyZW50aGVzaXplPVR5cC5wcmVjZWRlbmNlKGhlYWQpIDw9IFR5cEJhc2UucHJlY2VkZW5jZV9Qcm9kLFxuICAgICAgICAgICAgICBoZWFkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIC4uLkxpc3QubWFwaShcbiAgICAgICAgICAgICAgIChpLCB0eSkgPT5cbiAgICAgICAgICAgICAgICAgYW5ub3QoXG4gICAgICAgICAgICAgICAgICAgSFR5cEFubm90LlN0ZXAoaSArIDEpLFxuICAgICAgICAgICAgICAgICAgIG1rJyhcbiAgICAgICAgICAgICAgICAgICAgIH5wYXJlbnRoZXNpemU9XG4gICAgICAgICAgICAgICAgICAgICAgIFR5cC5wcmVjZWRlbmNlKHR5KSA8PSBUeXBCYXNlLnByZWNlZGVuY2VfUHJvZCxcbiAgICAgICAgICAgICAgICAgICAgIHR5LFxuICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICB0YWlsLFxuICAgICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgfD4gTGlzdFV0aWwuam9pbihcbiAgICAgICAgICAgICBoY2F0cyhbdGV4dChcIixcIiksIGNob2ljZXMoW2xpbmVicmVhaygpLCBzcGFjZSgpXSldKSxcbiAgICAgICAgICAgKVxuICAgICAgICB8PiBoY2F0cztcbiAgICAgIChjZW50ZXIsIHRydWUpO1xuICAgIHwgUmVjKHgsIHR5KSA9PiAoXG4gICAgICAgIGhjYXRzKFtcbiAgICAgICAgICB0ZXh0KFwiUmVjIFwiICsrIHggKysgXCIue1wiKSxcbiAgICAgICAgICAoXG4gICAgICAgICAgICAofmVuZm9yY2VfaW5saW5lKSA9PlxuICAgICAgICAgICAgICBhbm5vdChIVHlwQW5ub3QuU3RlcCgwKSwgbWsofmVuZm9yY2VfaW5saW5lLCB0eSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIHw+IHBhZF9jaGlsZCh+ZW5mb3JjZV9pbmxpbmUpLFxuICAgICAgICAgIG1rX2RlbGltKFwifVwiKSxcbiAgICAgICAgXSksXG4gICAgICAgIHBhcmVudGhlc2l6ZSxcbiAgICAgIClcbiAgICB8IFN1bShzdW1fbWFwKSA9PlxuICAgICAgbGV0IGNlbnRlciA9XG4gICAgICAgIExpc3QubWFwaShcbiAgICAgICAgICAoaSwgKGN0ciwgdHkpKSA9PlxuICAgICAgICAgICAgc3dpdGNoICh0eSkge1xuICAgICAgICAgICAgfCBOb25lID0+IGFubm90KEhUeXBBbm5vdC5TdGVwKGkgKyAxKSwgdGV4dChjdHIpKVxuICAgICAgICAgICAgfCBTb21lKHR5KSA9PlxuICAgICAgICAgICAgICBhbm5vdChcbiAgICAgICAgICAgICAgICBIVHlwQW5ub3QuU3RlcChpICsgMSksXG4gICAgICAgICAgICAgICAgaGNhdHMoW3RleHQoY3RyICsrIFwiKFwiKSwgbWsnKHR5KSwgdGV4dChcIilcIildKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBzdW1fbWFwLFxuICAgICAgICApXG4gICAgICAgIHw+IExpc3RVdGlsLmpvaW4oXG4gICAgICAgICAgICAgaGNhdHMoW3RleHQoXCIgK1wiKSwgY2hvaWNlcyhbbGluZWJyZWFrKCksIHNwYWNlKCldKV0pLFxuICAgICAgICAgICApXG4gICAgICAgIHw+IGhjYXRzO1xuICAgICAgKGNlbnRlciwgdHJ1ZSk7XG4gICAgfTtcbiAgbGV0IGRvYyA9IGFubm90KEhUeXBBbm5vdC5UZXJtLCBkb2MpO1xuICBwYXJlbnRoZXNpemUgPyBEb2MuaGNhdHMoW21rX2RlbGltKFwiKFwiKSwgZG9jLCBta19kZWxpbShcIilcIildKSA6IGRvYztcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gUHJldHR5O1xuXG5sZXQgcHJvbW90ZV9hbm5vdCA9XG4gIGZ1blxuICB8IEhUeXBBbm5vdC5UZXJtID0+IERIQW5ub3QuVGVybVxuICB8IEhUeXBBbm5vdC5TdGVwKG4pID0+IERIQW5ub3QuU3RlcChuKVxuICB8IEhUeXBBbm5vdC5Ib2xlTGFiZWwgPT4gREhBbm5vdC5Ib2xlTGFiZWxcbiAgfCBIVHlwQW5ub3QuRGVsaW0gPT4gREhBbm5vdC5EZWxpbTtcbmxldCBwcm9tb3RlID0gKGQ6IEhUeXBEb2MudCk6IERIRG9jLnQgPT4gZCB8PiBEb2MubWFwX2Fubm90KHByb21vdGVfYW5ub3QpO1xubGV0IG1rID0gKH5lbmZvcmNlX2lubGluZTogYm9vbCwgdHk6IFR5cC50KTogREhEb2MudCA9PlxuICB0eSB8PiBIVHlwRG9jLm1rKH5lbmZvcmNlX2lubGluZSkgfD4gcHJvbW90ZTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFdmFsdWF0b3JTdGVwO1xub3BlbiBUcmFuc2l0aW9uO1xubW9kdWxlIERvYyA9IFByZXR0eS5Eb2M7XG5cbmxldCBwcmVjZWRlbmNlX2Jpbl9ib29sX29wID0gKG9wOiBUZXJtQmFzZS5VRXhwLm9wX2Jpbl9ib29sKSA9PlxuICBzd2l0Y2ggKG9wKSB7XG4gIHwgQW5kID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FuZFxuICB8IE9yID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX09yXG4gIH07XG5cbmxldCBwcmVjZWRlbmNlX2Jpbl9pbnRfb3AgPSAoYmlvOiBUZXJtQmFzZS5VRXhwLm9wX2Jpbl9pbnQpID0+XG4gIHN3aXRjaCAoYmlvKSB7XG4gIHwgVGltZXMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfVGltZXNcbiAgfCBQb3dlciA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9Qb3dlclxuICB8IERpdmlkZSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9EaXZpZGVcbiAgfCBQbHVzID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1BsdXNcbiAgfCBNaW51cyA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9NaW51c1xuICB8IEVxdWFscyA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9FcXVhbHNcbiAgfCBOb3RFcXVhbHMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRXF1YWxzXG4gIHwgTGVzc1RoYW4gPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfTGVzc1RoYW5cbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfTGVzc1RoYW5cbiAgfCBHcmVhdGVyVGhhbiA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9HcmVhdGVyVGhhblxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9HcmVhdGVyVGhhblxuICB9O1xubGV0IHByZWNlZGVuY2VfYmluX2Zsb2F0X29wID0gKGJmbzogVGVybUJhc2UuVUV4cC5vcF9iaW5fZmxvYXQpID0+XG4gIHN3aXRjaCAoYmZvKSB7XG4gIHwgVGltZXMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfVGltZXNcbiAgfCBQb3dlciA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9Qb3dlclxuICB8IERpdmlkZSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9EaXZpZGVcbiAgfCBQbHVzID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1BsdXNcbiAgfCBNaW51cyA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9NaW51c1xuICB8IEVxdWFscyA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9FcXVhbHNcbiAgfCBOb3RFcXVhbHMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRXF1YWxzXG4gIHwgTGVzc1RoYW4gPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfTGVzc1RoYW5cbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfTGVzc1RoYW5cbiAgfCBHcmVhdGVyVGhhbiA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9HcmVhdGVyVGhhblxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9HcmVhdGVyVGhhblxuICB9O1xubGV0IHByZWNlZGVuY2VfYmluX3N0cmluZ19vcCA9IChic286IFRlcm1CYXNlLlVFeHAub3BfYmluX3N0cmluZykgPT5cbiAgc3dpdGNoIChic28pIHtcbiAgfCBDb25jYXQgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfUGx1c1xuICB8IEVxdWFscyA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9FcXVhbHNcbiAgfTtcbmxldCByZWMgcHJlY2VkZW5jZSA9ICh+c2hvd19jYXN0czogYm9vbCwgZDogREhFeHAudCkgPT4ge1xuICBsZXQgcHJlY2VkZW5jZScgPSBwcmVjZWRlbmNlKH5zaG93X2Nhc3RzKTtcbiAgc3dpdGNoIChkKSB7XG4gIHwgQm91bmRWYXIoXylcbiAgfCBGcmVlVmFyKF8pXG4gIHwgSW52YWxpZFRleHQoXylcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKF8pXG4gIHwgQm9vbExpdChfKVxuICB8IEludExpdChfKVxuICB8IFNlcXVlbmNlKF8pXG4gIHwgVGVzdChfKVxuICB8IEZsb2F0TGl0KF8pXG4gIHwgU3RyaW5nTGl0KF8pXG4gIHwgTGlzdExpdChfKVxuICB8IFByaihfKVxuICB8IEVtcHR5SG9sZShfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRmFpbGVkQ2FzdChfKVxuICB8IEludmFsaWRPcGVyYXRpb24oXylcbiAgfCBJZlRoZW5FbHNlKF8pXG4gIHwgQ2xvc3VyZShfKVxuICB8IEJ1aWx0aW5GdW4oXylcbiAgfCBGaWx0ZXIoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfY29uc3RcbiAgfCBDYXN0KGQxLCBfLCBfKSA9PlxuICAgIHNob3dfY2FzdHMgPyBESERvY19jb21tb24ucHJlY2VkZW5jZV9jb25zdCA6IHByZWNlZGVuY2UnKGQxKVxuICB8IEFwKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwXG4gIHwgQXBCdWlsdGluKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwXG4gIHwgQ29ucyhfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db25zXG4gIHwgTGlzdENvbmNhdChfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9QbHVzXG4gIHwgVHVwbGUoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQ29tbWFcbiAgfCBGdW4oXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfbWF4XG4gIHwgTGV0KF8pXG4gIHwgRml4RihfKVxuICB8IENvbnNpc3RlbnRDYXNlKF8pXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfbWF4XG5cbiAgfCBCaW5Cb29sT3Aob3AsIF8sIF8pID0+IHByZWNlZGVuY2VfYmluX2Jvb2xfb3Aob3ApXG4gIHwgQmluSW50T3Aob3AsIF8sIF8pID0+IHByZWNlZGVuY2VfYmluX2ludF9vcChvcClcbiAgfCBCaW5GbG9hdE9wKG9wLCBfLCBfKSA9PiBwcmVjZWRlbmNlX2Jpbl9mbG9hdF9vcChvcClcbiAgfCBCaW5TdHJpbmdPcChvcCwgXywgXykgPT4gcHJlY2VkZW5jZV9iaW5fc3RyaW5nX29wKG9wKVxuXG4gIHwgTm9uRW1wdHlIb2xlKF8sIF8sIF8sIGQpID0+IHByZWNlZGVuY2UnKGQpXG4gIH07XG59O1xuXG5sZXQgbWtfYmluX2Jvb2xfb3AgPSAob3A6IFRlcm1CYXNlLlVFeHAub3BfYmluX2Jvb2wpOiBESERvYy50ID0+XG4gIERvYy50ZXh0KFRlcm1CYXNlLlVFeHAuYm9vbF9vcF90b19zdHJpbmcob3ApKTtcblxubGV0IG1rX2Jpbl9pbnRfb3AgPSAob3A6IFRlcm1CYXNlLlVFeHAub3BfYmluX2ludCk6IERIRG9jLnQgPT5cbiAgRG9jLnRleHQoVGVybUJhc2UuVUV4cC5pbnRfb3BfdG9fc3RyaW5nKG9wKSk7XG5cbmxldCBta19iaW5fZmxvYXRfb3AgPSAob3A6IFRlcm1CYXNlLlVFeHAub3BfYmluX2Zsb2F0KTogREhEb2MudCA9PlxuICBEb2MudGV4dChUZXJtQmFzZS5VRXhwLmZsb2F0X29wX3RvX3N0cmluZyhvcCkpO1xuXG5sZXQgbWtfYmluX3N0cmluZ19vcCA9IChvcDogVGVybUJhc2UuVUV4cC5vcF9iaW5fc3RyaW5nKTogREhEb2MudCA9PlxuICBEb2MudGV4dChUZXJtQmFzZS5VRXhwLnN0cmluZ19vcF90b19zdHJpbmcob3ApKTtcblxubGV0IG1rID1cbiAgICAoXG4gICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy5FdmFsdWF0aW9uLnQsXG4gICAgICB+ZW5mb3JjZV9pbmxpbmU6IGJvb2wsXG4gICAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZTogb3B0aW9uKEhvbGVJbnN0YW5jZS50KSxcbiAgICAgIC8vIFRoZSBuZXh0IGZvdXIgYXJlIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBzdGVwcGVyIHRvIHRyYWNrIHdoZXJlIHdlIGNhbiBhbm5vdGF0ZSBjaGFuZ2VzXG4gICAgICB+cHJldmlvdXNfc3RlcDogb3B0aW9uKHN0ZXApLCAvLyBUaGUgc3RlcCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGFib3ZlIHRoaXMgb25lXG4gICAgICB+aGlkZGVuX3N0ZXBzOiBsaXN0KHN0ZXApLCAvLyBUaGUgaGlkZGVuIHN0ZXBzIGJldHdlZW4gdGhlIGFib3ZlIGFuZCB0aGUgY3VycmVudCBvbmVcbiAgICAgIH5jaG9zZW5fc3RlcDogb3B0aW9uKHN0ZXApLCAvLyBUaGUgc3RlcCB0aGF0IHdpbGwgYmUgdGFrZW4gbmV4dFxuICAgICAgfm5leHRfc3RlcHM6IGxpc3QoRXZhbE9iai50KSwgLy8gVGhlIG9wdGlvbnMgZm9yIHRoZSBuZXh0IHN0ZXAsIGlmIGl0IGhhc24ndCBiZWVuIGNob3NlbiB5ZXRcbiAgICAgIH5lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgZDogREhFeHAudCxcbiAgICApXG4gICAgOiBESERvYy50ID0+IHtcbiAgbGV0IHByZWNlZGVuY2UgPSBwcmVjZWRlbmNlKH5zaG93X2Nhc3RzPXNldHRpbmdzLnNob3dfY2FzdHMpO1xuICBsZXQgcmVjIGdvID1cbiAgICAgICAgICAoXG4gICAgICAgICAgICBkOiBESEV4cC50LFxuICAgICAgICAgICAgZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCxcbiAgICAgICAgICAgIGVuZm9yY2VfaW5saW5lOiBib29sLFxuICAgICAgICAgICAgcHJldmlvdXNfc3RlcDogb3B0aW9uKHN0ZXApLFxuICAgICAgICAgICAgaGlkZGVuX3N0ZXBzOiBsaXN0KHN0ZXApLFxuICAgICAgICAgICAgY2hvc2VuX3N0ZXA6IG9wdGlvbihzdGVwKSxcbiAgICAgICAgICAgIG5leHRfc3RlcHM6IGxpc3QoKEV2YWxDdHgudCwgaW50KSksXG4gICAgICAgICAgICByZWNlbnRfc3Vic3Q6IGxpc3QoVmFyLnQpLFxuICAgICAgICAgICAgcmVjdXJzaXZlX2NhbGxzOiBsaXN0KFZhci50KSxcbiAgICAgICAgICApXG4gICAgICAgICAgOiBESERvYy50ID0+IHtcbiAgICBvcGVuIERvYztcbiAgICBsZXQgcmVjZW50X3N1YnN0ID1cbiAgICAgIHN3aXRjaCAocHJldmlvdXNfc3RlcCkge1xuICAgICAgfCBTb21lKHBzKSB3aGVuIHBzLmN0eCA9PSBNYXJrID0+XG4gICAgICAgIHN3aXRjaCAocHMua25kLCBwcy5kX2xvYykge1xuICAgICAgICB8IChGdW5BcCwgQXAoRnVuKHAsIF8sIF8sIF8pLCBfKSkgPT4gREhQYXQuYm91bmRfdmFycyhwKVxuICAgICAgICB8IChGdW5BcCwgXykgPT4gW11cbiAgICAgICAgfCAoTGV0QmluZCwgTGV0KHAsIF8sIF8pKSA9PiBESFBhdC5ib3VuZF92YXJzKHApXG4gICAgICAgIHwgKExldEJpbmQsIF8pID0+IFtdXG4gICAgICAgIHwgKEZpeFVud3JhcCwgXykgLy8gVE9ET1tNYXR0XTogQ291bGQgZG8gc29tZXRoaW5nIGhlcmU/XG4gICAgICAgIHwgKEludmFsaWRTdGVwLCBfKVxuICAgICAgICB8IChWYXJMb29rdXAsIF8pXG4gICAgICAgIHwgKFNlcXVlbmNlLCBfKVxuICAgICAgICB8IChGdW5DbG9zdXJlLCBfKVxuICAgICAgICB8IChVcGRhdGVUZXN0LCBfKVxuICAgICAgICB8IChDYXN0QXAsIF8pXG4gICAgICAgIHwgKEJ1aWx0aW5XcmFwLCBfKVxuICAgICAgICB8IChCdWlsdGluQXAoXyksIF8pXG4gICAgICAgIHwgKEJpbkJvb2xPcChfKSwgXylcbiAgICAgICAgfCAoQmluSW50T3AoXyksIF8pXG4gICAgICAgIHwgKEJpbkZsb2F0T3AoXyksIF8pXG4gICAgICAgIHwgKEJpblN0cmluZ09wKF8pLCBfKVxuICAgICAgICB8IChQcm9qZWN0aW9uLCBfKVxuICAgICAgICB8IChMaXN0Q29ucywgXylcbiAgICAgICAgfCAoTGlzdENvbmNhdCwgXylcbiAgICAgICAgfCAoQ2FzZUFwcGx5LCBfKVxuICAgICAgICB8IChDYXNlTmV4dCwgXylcbiAgICAgICAgfCAoQ29tcGxldGVDbG9zdXJlLCBfKVxuICAgICAgICB8IChDb21wbGV0ZUZpbHRlciwgXylcbiAgICAgICAgfCAoQ2FzdCwgXylcbiAgICAgICAgfCAoQ29uZGl0aW9uYWwoXyksIF8pXG4gICAgICAgIHwgKFNraXAsIF8pID0+IFtdXG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiByZWNlbnRfc3Vic3RcbiAgICAgIH07XG4gICAgbGV0IGdvJyA9XG4gICAgICAgIChcbiAgICAgICAgICB+ZW52PWVudixcbiAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZW5mb3JjZV9pbmxpbmUsXG4gICAgICAgICAgfnJlY2VudF9zdWJzdD1yZWNlbnRfc3Vic3QsXG4gICAgICAgICAgfnJlY3Vyc2l2ZV9jYWxscz1yZWN1cnNpdmVfY2FsbHMsXG4gICAgICAgICAgZCxcbiAgICAgICAgICBjdHgsXG4gICAgICAgICkgPT4ge1xuICAgICAgZ28oXG4gICAgICAgIGQsXG4gICAgICAgIGVudixcbiAgICAgICAgZW5mb3JjZV9pbmxpbmUsXG4gICAgICAgIE9wdGlvbi5qb2luKFxuICAgICAgICAgIE9wdGlvbi5tYXAoRXZhbHVhdG9yU3RlcC51bndyYXAoXywgY3R4KSwgcHJldmlvdXNfc3RlcCksXG4gICAgICAgICksXG4gICAgICAgIGhpZGRlbl9zdGVwc1xuICAgICAgICB8PiBMaXN0LmZpbHRlcihzID0+ICFFdmFsQ3R4LmZ1enp5X21hcmsocy5jdHgpKVxuICAgICAgICB8PiBMaXN0LmZpbHRlcl9tYXAoRXZhbHVhdG9yU3RlcC51bndyYXAoXywgY3R4KSksXG4gICAgICAgIE9wdGlvbi5qb2luKE9wdGlvbi5tYXAoRXZhbHVhdG9yU3RlcC51bndyYXAoXywgY3R4KSwgY2hvc2VuX3N0ZXApKSxcbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICgoeCwgeSkpID0+XG4gICAgICAgICAgICBzd2l0Y2ggKEV2YWxDdHgudW53cmFwKHgsIGN0eCkpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICAgICAgICB8IFNvbWUoeCcpID0+IFNvbWUoKHgnLCB5KSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgbmV4dF9zdGVwcyxcbiAgICAgICAgKSxcbiAgICAgICAgcmVjZW50X3N1YnN0LFxuICAgICAgICByZWN1cnNpdmVfY2FsbHMsXG4gICAgICApO1xuICAgIH07XG4gICAgbGV0IHBhcmVudGhlc2l6ZSA9IChiLCBkb2MpID0+XG4gICAgICBpZiAoYikge1xuICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm9wZW5fUGFyZW50aGVzaXplZCxcbiAgICAgICAgICBkb2MgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZCh+ZW5mb3JjZV9pbmxpbmUpLFxuICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5jbG9zZV9QYXJlbnRoZXNpemVkLFxuICAgICAgICBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvYyh+ZW5mb3JjZV9pbmxpbmUpO1xuICAgICAgfTtcbiAgICBsZXQgZ29fY2FzZV9ydWxlID1cbiAgICAgICAgKGNvbnNpc3RlbnQ6IGJvb2wsIHJ1bGVfaWR4OiBpbnQsIFJ1bGUoZHAsIGRjbGF1c2UpOiBESEV4cC5ydWxlKVxuICAgICAgICA6IERIRG9jLnQgPT4ge1xuICAgICAgbGV0IGtpbmQ6IEV2YWxDdHguY2xzID1cbiAgICAgICAgaWYgKGNvbnNpc3RlbnQpIHtcbiAgICAgICAgICBDb25zaXN0ZW50Q2FzZVJ1bGUocnVsZV9pZHgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEluY29uc2lzdGVudEJyYW5jaGVzUnVsZShydWxlX2lkeCk7XG4gICAgICAgIH07XG4gICAgICBsZXQgaGlkZGVuX2NsYXVzZSA9IGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFVuaWNvZGUuZWxsaXBzaXMpKTtcbiAgICAgIGxldCBjbGF1c2VfZG9jID1cbiAgICAgICAgc2V0dGluZ3Muc2hvd19jYXNlX2NsYXVzZXNcbiAgICAgICAgICA/IGNob2ljZXMoW1xuICAgICAgICAgICAgICBoY2F0cyhbc3BhY2UoKSwgZ28nKH5lbmZvcmNlX2lubGluZT10cnVlLCBkY2xhdXNlLCBraW5kKV0pLFxuICAgICAgICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgICAgICAgICAgaW5kZW50X2FuZF9hbGlnbihnbycofmVuZm9yY2VfaW5saW5lPWZhbHNlLCBkY2xhdXNlLCBraW5kKSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgICA6IGhjYXQoc3BhY2UoKSwgaGlkZGVuX2NsYXVzZSk7XG4gICAgICBoY2F0cyhbXG4gICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5iYXJfUnVsZSxcbiAgICAgICAgREhEb2NfUGF0Lm1rKGRwKVxuICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWZhbHNlLFxuICAgICAgICAgICApLFxuICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfUnVsZSxcbiAgICAgICAgY2xhdXNlX2RvYyxcbiAgICAgIF0pO1xuICAgIH07XG4gICAgbGV0IGdvX2Nhc2UgPSAoZHNjcnV0LCBkcnMsIGNvbnNpc3RlbnQpID0+XG4gICAgICBpZiAoZW5mb3JjZV9pbmxpbmUpIHtcbiAgICAgICAgZmFpbCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGtpbmQ6IEV2YWxDdHguY2xzID1cbiAgICAgICAgICBpZiAoY29uc2lzdGVudCkge0NvbnNpc3RlbnRDYXNlfSBlbHNlIHtJbmNvbnNpc3RlbnRCcmFuY2hlc307XG4gICAgICAgIGxldCBzY3J1dF9kb2MgPVxuICAgICAgICAgIGNob2ljZXMoW1xuICAgICAgICAgICAgaGNhdHMoW3NwYWNlKCksIGdvJyh+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSwgZHNjcnV0LCBraW5kKV0pLFxuICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgICAgICAgICAgaW5kZW50X2FuZF9hbGlnbihnbycofmVuZm9yY2VfaW5saW5lPWZhbHNlLCBkc2NydXQsIGtpbmQpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIF0pO1xuICAgICAgICB2c2VwcyhcbiAgICAgICAgICBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICBbaGNhdChESERvY19jb21tb24uRGVsaW0ub3Blbl9DYXNlLCBzY3J1dF9kb2MpXSxcbiAgICAgICAgICAgIGRycyB8PiBMaXN0Lm1hcGkoZ29fY2FzZV9ydWxlKGNvbnNpc3RlbnQpKSxcbiAgICAgICAgICAgIFtESERvY19jb21tb24uRGVsaW0uY2xvc2VfQ2FzZV0sXG4gICAgICAgICAgXSksXG4gICAgICAgICk7XG4gICAgICB9O1xuICAgIGxldCBnb19mb3JtYXR0YWJsZSA9ICh+ZW5mb3JjZV9pbmxpbmUpID0+IGdvJyh+ZW5mb3JjZV9pbmxpbmUpO1xuICAgIGxldCBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzID0gKHByZWNlZGVuY2Vfb3AsIChkMSwgbCksIChkMiwgcikpID0+IChcbiAgICAgIGdvX2Zvcm1hdHRhYmxlKGQxLCBsKSB8PiBwYXJlbnRoZXNpemUocHJlY2VkZW5jZShkMSkgPiBwcmVjZWRlbmNlX29wKSxcbiAgICAgIGdvX2Zvcm1hdHRhYmxlKGQyLCByKSB8PiBwYXJlbnRoZXNpemUocHJlY2VkZW5jZShkMikgPj0gcHJlY2VkZW5jZV9vcCksXG4gICAgKTtcbiAgICBsZXQgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMgPSAocHJlY2VkZW5jZV9vcCwgKGQxLCBsKSwgKGQyLCByKSkgPT4gKFxuICAgICAgZ29fZm9ybWF0dGFibGUoZDEsIGwpIHw+IHBhcmVudGhlc2l6ZShwcmVjZWRlbmNlKGQxKSA+PSBwcmVjZWRlbmNlX29wKSxcbiAgICAgIGdvX2Zvcm1hdHRhYmxlKGQyLCByKSB8PiBwYXJlbnRoZXNpemUocHJlY2VkZW5jZShkMikgPiBwcmVjZWRlbmNlX29wKSxcbiAgICApO1xuICAgIGxldCBkb2MgPSB7XG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgQ2xvc3VyZShlbnYnLCBkJykgPT4gZ28nKGQnLCBDbG9zdXJlLCB+ZW52PWVudicpXG4gICAgICB8IEZpbHRlcihmbHQsIGQnKSA9PlxuICAgICAgICBpZiAoc2V0dGluZ3Muc2hvd19zdGVwcGVyX2ZpbHRlcnMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZsdCkge1xuICAgICAgICAgIHwgRmlsdGVyKHtwYXQsIGFjdH0pID0+XG4gICAgICAgICAgICBsZXQga2V5d29yZCA9IEZpbHRlckFjdGlvbi5zdHJpbmdfb2ZfdChhY3QpO1xuICAgICAgICAgICAgbGV0IGZsdF9kb2MgPSBnb19mb3JtYXR0YWJsZShwYXQsIEZpbHRlclBhdHRlcm4pO1xuICAgICAgICAgICAgdnNlcHMoW1xuICAgICAgICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKGtleXdvcmQpLFxuICAgICAgICAgICAgICAgIGZsdF9kb2NcbiAgICAgICAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBzcGFjZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcImluXCIpLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgZ28nKGQnLCBGaWx0ZXIpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfCBSZXNpZHVlKF8sIGFjdCkgPT5cbiAgICAgICAgICAgIGxldCBrZXl3b3JkID0gRmlsdGVyQWN0aW9uLnN0cmluZ19vZl90KGFjdCk7XG4gICAgICAgICAgICB2c2VwcyhbREhEb2NfY29tbW9uLkRlbGltLm1rKGtleXdvcmQpLCBnbycoZCcsIEZpbHRlcildKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAoZmx0KSB7XG4gICAgICAgICAgfCBSZXNpZHVlKF8pID0+IGdvJyhkJywgRmlsdGVyKVxuICAgICAgICAgIHwgRmlsdGVyKF8pID0+IGdvJyhkJywgRmlsdGVyKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgLyogSG9sZSBleHByZXNzaW9ucyBtdXN0IGFwcGVhciB3aXRoaW4gYSBjbG9zdXJlIGluXG4gICAgICAgICB0aGUgcG9zdHByb2Nlc3NlZCByZXN1bHQgKi9cbiAgICAgIHwgRW1wdHlIb2xlKHUsIGkpID0+XG4gICAgICAgIGxldCBzZWxlY3RlZCA9XG4gICAgICAgICAgc3dpdGNoIChzZWxlY3RlZF9ob2xlX2luc3RhbmNlKSB7XG4gICAgICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICAgICAgfCBTb21lKCh1JywgaScpKSA9PiB1ID09IHUnICYmIGkgPT0gaSdcbiAgICAgICAgICB9O1xuICAgICAgICBESERvY19jb21tb24ubWtfRW1wdHlIb2xlKH5zZWxlY3RlZCwgKHUsIGkpKTtcbiAgICAgIHwgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgaSwgZCcpID0+XG4gICAgICAgIGdvJyhkJywgTm9uRW1wdHlIb2xlKVxuICAgICAgICB8PiBhbm5vdChESEFubm90Lk5vbkVtcHR5SG9sZShyZWFzb24sICh1LCBpKSkpXG4gICAgICB8IEV4cGFuZGluZ0tleXdvcmQodSwgaSwgaykgPT5cbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0V4cGFuZGluZ0tleXdvcmQoKHUsIGkpLCBrKVxuICAgICAgfCBGcmVlVmFyKHUsIGksIHgpID0+XG4gICAgICAgIHRleHQoeCkgfD4gYW5ub3QoREhBbm5vdC5WYXJIb2xlKEZyZWUsICh1LCBpKSkpXG4gICAgICB8IEludmFsaWRUZXh0KHUsIGksIHQpID0+IERIRG9jX2NvbW1vbi5ta19JbnZhbGlkVGV4dCh0LCAodSwgaSkpXG4gICAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2UoZHNjcnV0LCBkcnMsIF8pKSA9PlxuICAgICAgICBnb19jYXNlKGRzY3J1dCwgZHJzLCBmYWxzZSlcbiAgICAgICAgfD4gYW5ub3QoREhBbm5vdC5JbmNvbnNpc3RlbnRCcmFuY2hlcygodSwgaSkpKVxuICAgICAgfCBCb3VuZFZhcih4KSB3aGVuIExpc3QubWVtKHgsIHJlY3Vyc2l2ZV9jYWxscykgPT4gdGV4dCh4KVxuICAgICAgfCBCb3VuZFZhcih4KSB3aGVuIHNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzID0+IHRleHQoeClcbiAgICAgIHwgQm91bmRWYXIoeCkgPT5cbiAgICAgICAgc3dpdGNoIChDbG9zdXJlRW52aXJvbm1lbnQubG9va3VwKGVudiwgeCkpIHtcbiAgICAgICAgfCBOb25lID0+IHRleHQoeClcbiAgICAgICAgfCBTb21lKGQnKSA9PlxuICAgICAgICAgIGlmIChMaXN0Lm1lbSh4LCByZWNlbnRfc3Vic3QpKSB7XG4gICAgICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgICAgIGdvJyh+ZW52PUNsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgQm91bmRWYXIoeCksIEJvdW5kVmFyKVxuICAgICAgICAgICAgICB8PiBhbm5vdChESEFubm90LlN1YnN0aXR1dGVkKSxcbiAgICAgICAgICAgICAgZ28nKH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LmVtcHR5LCBkJywgQm91bmRWYXIpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdvJyh+ZW52PUNsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgZCcsIEJvdW5kVmFyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHwgQnVpbHRpbkZ1bihmKSA9PiB0ZXh0KGYpXG4gICAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+IERIRG9jX2NvbW1vbi5ta19Db25zdHJ1Y3RvckxpdChuYW1lKVxuICAgICAgfCBCb29sTGl0KGIpID0+IERIRG9jX2NvbW1vbi5ta19Cb29sTGl0KGIpXG4gICAgICB8IEludExpdChuKSA9PiBESERvY19jb21tb24ubWtfSW50TGl0KG4pXG4gICAgICB8IEZsb2F0TGl0KGYpID0+IERIRG9jX2NvbW1vbi5ta19GbG9hdExpdChmKVxuICAgICAgfCBTdHJpbmdMaXQocykgPT4gREhEb2NfY29tbW9uLm1rX1N0cmluZ0xpdChzKVxuICAgICAgfCBUZXN0KF8sIGQpID0+IERIRG9jX2NvbW1vbi5ta19UZXN0KGdvJyhkLCBUZXN0KSlcbiAgICAgIHwgU2VxdWVuY2UoZDEsIGQyKSA9PlxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID0gKGdvJyhkMSwgU2VxdWVuY2UxKSwgZ28nKGQyLCBTZXF1ZW5jZTIpKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX1NlcXVlbmNlKGRvYzEsIGRvYzIpO1xuICAgICAgfCBMaXN0TGl0KF8sIF8sIF8sIGRfbGlzdCkgPT5cbiAgICAgICAgbGV0IG9sID0gZF9saXN0IHw+IExpc3QubWFwaSgoaSwgZCkgPT4gZ28nKGQsIExpc3RMaXQoaSkpKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0xpc3RMaXQob2wpO1xuICAgICAgfCBBcChkMSwgZDIpID0+XG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPSAoXG4gICAgICAgICAgZ29fZm9ybWF0dGFibGUoZDEsIEFwMSlcbiAgICAgICAgICB8PiBwYXJlbnRoZXNpemUocHJlY2VkZW5jZShkMSkgPiBESERvY19jb21tb24ucHJlY2VkZW5jZV9BcCksXG4gICAgICAgICAgZ28nKGQyLCBBcDIpLFxuICAgICAgICApO1xuICAgICAgICBESERvY19jb21tb24ubWtfQXAoZG9jMSwgZG9jMik7XG4gICAgICB8IEFwQnVpbHRpbihpZGVudCwgZCkgPT5cbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0FwKFxuICAgICAgICAgIHRleHQoaWRlbnQpLFxuICAgICAgICAgIGdvX2Zvcm1hdHRhYmxlKGQsIEFwQnVpbHRpbilcbiAgICAgICAgICB8PiBwYXJlbnRoZXNpemUocHJlY2VkZW5jZShkKSA+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwKSxcbiAgICAgICAgKVxuICAgICAgfCBCaW5JbnRPcChvcCwgZDEsIGQyKSA9PlxuICAgICAgICAvLyBUT0RPIGFzc3VtZXMgYWxsIGJpbiBpbnQgb3BzIGFyZSBsZWZ0IGFzc29jaWF0aXZlXG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPVxuICAgICAgICAgIG1rX2xlZnRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoXG4gICAgICAgICAgICBwcmVjZWRlbmNlX2Jpbl9pbnRfb3Aob3ApLFxuICAgICAgICAgICAgKGQxLCBCaW5JbnRPcDEpLFxuICAgICAgICAgICAgKGQyLCBCaW5JbnRPcDIpLFxuICAgICAgICAgICk7XG4gICAgICAgIGhzZXBzKFtkb2MxLCBta19iaW5faW50X29wKG9wKSwgZG9jMl0pO1xuICAgICAgfCBCaW5GbG9hdE9wKG9wLCBkMSwgZDIpID0+XG4gICAgICAgIC8vIFRPRE8gYXNzdW1lcyBhbGwgYmluIGZsb2F0IG9wcyBhcmUgbGVmdCBhc3NvY2lhdGl2ZVxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgICBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzKFxuICAgICAgICAgICAgcHJlY2VkZW5jZV9iaW5fZmxvYXRfb3Aob3ApLFxuICAgICAgICAgICAgKGQxLCBCaW5GbG9hdE9wMSksXG4gICAgICAgICAgICAoZDIsIEJpbkZsb2F0T3AyKSxcbiAgICAgICAgICApO1xuICAgICAgICBoc2VwcyhbZG9jMSwgbWtfYmluX2Zsb2F0X29wKG9wKSwgZG9jMl0pO1xuICAgICAgfCBCaW5TdHJpbmdPcChvcCwgZDEsIGQyKSA9PlxuICAgICAgICAvLyBUT0RPIGFzc3VtZXMgYWxsIGJpbiBzdHJpbmcgb3BzIGFyZSBsZWZ0IGFzc29jaWF0aXZlXG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPVxuICAgICAgICAgIG1rX2xlZnRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoXG4gICAgICAgICAgICBwcmVjZWRlbmNlX2Jpbl9zdHJpbmdfb3Aob3ApLFxuICAgICAgICAgICAgKGQxLCBCaW5TdHJpbmdPcDEpLFxuICAgICAgICAgICAgKGQyLCBCaW5TdHJpbmdPcDIpLFxuICAgICAgICAgICk7XG4gICAgICAgIGhzZXBzKFtkb2MxLCBta19iaW5fc3RyaW5nX29wKG9wKSwgZG9jMl0pO1xuICAgICAgfCBDb25zKGQxLCBkMikgPT5cbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9XG4gICAgICAgICAgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoXG4gICAgICAgICAgICBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db25zLFxuICAgICAgICAgICAgKGQxLCBDb25zMSksXG4gICAgICAgICAgICAoZDIsIENvbnMyKSxcbiAgICAgICAgICApO1xuICAgICAgICBESERvY19jb21tb24ubWtfQ29ucyhkb2MxLCBkb2MyKTtcbiAgICAgIHwgTGlzdENvbmNhdChkMSwgZDIpID0+XG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPVxuICAgICAgICAgIG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzKFxuICAgICAgICAgICAgREhEb2NfY29tbW9uLnByZWNlZGVuY2VfUGx1cyxcbiAgICAgICAgICAgIChkMSwgTGlzdENvbmNhdDEpLFxuICAgICAgICAgICAgKGQyLCBMaXN0Q29uY2F0MiksXG4gICAgICAgICAgKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0xpc3RDb25jYXQoZG9jMSwgZG9jMik7XG4gICAgICB8IEJpbkJvb2xPcChvcCwgZDEsIGQyKSA9PlxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgICBta19yaWdodF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyhcbiAgICAgICAgICAgIHByZWNlZGVuY2VfYmluX2Jvb2xfb3Aob3ApLFxuICAgICAgICAgICAgKGQxLCBCaW5Cb29sT3AxKSxcbiAgICAgICAgICAgIChkMiwgQmluQm9vbE9wMiksXG4gICAgICAgICAgKTtcbiAgICAgICAgaHNlcHMoW2RvYzEsIG1rX2Jpbl9ib29sX29wKG9wKSwgZG9jMl0pO1xuICAgICAgfCBUdXBsZShbXSkgPT4gREhEb2NfY29tbW9uLkRlbGltLnRyaXZcbiAgICAgIHwgVHVwbGUoZHMpID0+XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19UdXBsZShkcyB8PiBMaXN0Lm1hcGkoKGksIGQpID0+IGdvJyhkLCBUdXBsZShpKSkpKVxuICAgICAgfCBQcmooZCwgbikgPT4gREhEb2NfY29tbW9uLm1rX1ByaihnbycoZCwgUHJqKSwgbilcbiAgICAgIHwgQ29uc2lzdGVudENhc2UoQ2FzZShkc2NydXQsIGRycywgXykpID0+IGdvX2Nhc2UoZHNjcnV0LCBkcnMsIHRydWUpXG4gICAgICB8IENhc3QoZCwgXywgdHkpIHdoZW4gc2V0dGluZ3Muc2hvd19jYXN0cyA9PlxuICAgICAgICAvLyBUT0RPW01hdHRdOiBSb2xsIG11bHRpcGxlIGNhc3RzIGludG8gb25lIGNhc3RcbiAgICAgICAgbGV0IGRvYyA9IGdvJyhkLCBDYXN0KTtcbiAgICAgICAgRG9jLihcbiAgICAgICAgICBoY2F0KFxuICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgYW5ub3QoXG4gICAgICAgICAgICAgIERIQW5ub3QuQ2FzdERlY29yYXRpb24sXG4gICAgICAgICAgICAgIERIRG9jX1R5cC5tayh+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSwgdHkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB8IENhc3QoZCwgXywgXykgPT5cbiAgICAgICAgbGV0IGRvYyA9IGdvJyhkLCBDYXN0KTtcbiAgICAgICAgZG9jO1xuICAgICAgfCBMZXQoZHAsIGRkZWYsIGRib2R5KSA9PlxuICAgICAgICBpZiAoZW5mb3JjZV9pbmxpbmUpIHtcbiAgICAgICAgICBmYWlsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGJpbmRpbmdzID0gREhQYXQuYm91bmRfdmFycyhkcCk7XG4gICAgICAgICAgbGV0IGRlZl9kb2MgPSBnb19mb3JtYXR0YWJsZShkZGVmLCBMZXQxKTtcbiAgICAgICAgICB2c2VwcyhbXG4gICAgICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcImxldFwiKSxcbiAgICAgICAgICAgICAgREhEb2NfUGF0Lm1rKGRwKVxuICAgICAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lLFxuICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCI9XCIpLFxuICAgICAgICAgICAgICBkZWZfZG9jXG4gICAgICAgICAgICAgIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQoXG4gICAgICAgICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBzcGFjZSgpKSxcbiAgICAgICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcImluXCIpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBnbycoXG4gICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICAgICAgICAgICAgfmVudj1DbG9zdXJlRW52aXJvbm1lbnQud2l0aG91dF9rZXlzKGJpbmRpbmdzLCBlbnYpLFxuICAgICAgICAgICAgICB+cmVjZW50X3N1YnN0PVxuICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyKHggPT4gIUxpc3QubWVtKHgsIGJpbmRpbmdzKSwgcmVjZW50X3N1YnN0KSxcbiAgICAgICAgICAgICAgZGJvZHksXG4gICAgICAgICAgICAgIExldDIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB8IEZhaWxlZENhc3QoQ2FzdChkLCB0eTEsIHR5MiksIHR5MicsIHR5Mykgd2hlbiBUeXAuZXEodHkyLCB0eTInKSA9PlxuICAgICAgICBsZXQgZF9kb2MgPSBnbycoZCwgRmFpbGVkQ2FzdENhc3QpO1xuICAgICAgICBsZXQgY2FzdF9kZWNvcmF0aW9uID1cbiAgICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ub3Blbl9GYWlsZWRDYXN0LFxuICAgICAgICAgICAgaHNlcHMoW1xuICAgICAgICAgICAgICBESERvY19UeXAubWsofmVuZm9yY2VfaW5saW5lPXRydWUsIHR5MSksXG4gICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5hcnJvd19GYWlsZWRDYXN0LFxuICAgICAgICAgICAgICBESERvY19UeXAubWsofmVuZm9yY2VfaW5saW5lPXRydWUsIHR5MyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5jbG9zZV9GYWlsZWRDYXN0LFxuICAgICAgICAgIF0pXG4gICAgICAgICAgfD4gYW5ub3QoREhBbm5vdC5GYWlsZWRDYXN0RGVjb3JhdGlvbik7XG4gICAgICAgIGhjYXRzKFtkX2RvYywgY2FzdF9kZWNvcmF0aW9uXSk7XG4gICAgICB8IEZhaWxlZENhc3QoX2QsIF90eTEsIF90eTIpID0+XG4gICAgICAgIGZhaWx3aXRoKFwidW5leHBlY3RlZCBGYWlsZWRDYXN0IHdpdGhvdXQgaW5uZXIgY2FzdFwiKVxuICAgICAgfCBJbnZhbGlkT3BlcmF0aW9uKGQsIGVycikgPT5cbiAgICAgICAgbGV0IGRfZG9jID0gZ28nKGQsIEludmFsaWRPcGVyYXRpb24pO1xuICAgICAgICBsZXQgZGVjb3JhdGlvbiA9XG4gICAgICAgICAgRG9jLnRleHQoSW52YWxpZE9wZXJhdGlvbkVycm9yLmVycl9tc2coZXJyKSlcbiAgICAgICAgICB8PiBhbm5vdChESEFubm90Lk9wZXJhdGlvbkVycm9yKGVycikpO1xuICAgICAgICBoY2F0cyhbZF9kb2MsIGRlY29yYXRpb25dKTtcblxuICAgICAgfCBJZlRoZW5FbHNlKF8sIGMsIGQxLCBkMikgPT5cbiAgICAgICAgbGV0IGNfZG9jID0gZ29fZm9ybWF0dGFibGUoYywgSWZUaGVuRWxzZTEpO1xuICAgICAgICBsZXQgZDFfZG9jID0gZ29fZm9ybWF0dGFibGUoZDEsIElmVGhlbkVsc2UyKTtcbiAgICAgICAgbGV0IGQyX2RvYyA9IGdvX2Zvcm1hdHRhYmxlKGQyLCBJZlRoZW5FbHNlMyk7XG4gICAgICAgIGhjYXRzKFtcbiAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCIoXCIpLFxuICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcImlmXCIpLFxuICAgICAgICAgIGNfZG9jXG4gICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgKSxcbiAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJ0aGVuXCIpLFxuICAgICAgICAgIGQxX2RvY1xuICAgICAgICAgIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQoXG4gICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgICksXG4gICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKFwiZWxzZVwiKSxcbiAgICAgICAgICBkMl9kb2NcbiAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBlbXB0eSgpKSxcbiAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICAgICAgICAgICApLFxuICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcIilcIiksXG4gICAgICAgIF0pO1xuICAgICAgfCBGdW4oZHAsIHR5LCBDbG9zdXJlKGVudicsIGQpLCBzKSA9PlxuICAgICAgICBpZiAoc2V0dGluZ3Muc2hvd19mbl9ib2RpZXMpIHtcbiAgICAgICAgICBsZXQgYmluZGluZ3MgPSBESFBhdC5ib3VuZF92YXJzKGRwKTtcbiAgICAgICAgICBsZXQgYm9keV9kb2MgPVxuICAgICAgICAgICAgZ29fZm9ybWF0dGFibGUoXG4gICAgICAgICAgICAgIENsb3N1cmUoXG4gICAgICAgICAgICAgICAgQ2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhPcHRpb24udG9fbGlzdChzKSwgZW52JyksXG4gICAgICAgICAgICAgICAgZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmVudj1cbiAgICAgICAgICAgICAgICBDbG9zdXJlRW52aXJvbm1lbnQud2l0aG91dF9rZXlzKFxuICAgICAgICAgICAgICAgICAgREhQYXQuYm91bmRfdmFycyhkcCkgQCBPcHRpb24udG9fbGlzdChzKSxcbiAgICAgICAgICAgICAgICAgIGVudixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+cmVjZW50X3N1YnN0PVxuICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyKHggPT4gIUxpc3QubWVtKHgsIGJpbmRpbmdzKSwgcmVjZW50X3N1YnN0KSxcbiAgICAgICAgICAgICAgRnVuLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBoY2F0cyhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLnN5bV9GdW4sXG4gICAgICAgICAgICAgIERIRG9jX1BhdC5tayhkcClcbiAgICAgICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZSxcbiAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIEAgKFxuICAgICAgICAgICAgICBzZXR0aW5ncy5zaG93X2Nhc3RzXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uY29sb25fRnVuLFxuICAgICAgICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgICAgICAgIERIRG9jX1R5cC5tayh+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSwgdHkpLFxuICAgICAgICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBbXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgQCBbXG4gICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5hcnJvd19GdW4sXG4gICAgICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgICAgIGJvZHlfZG9jIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQofmVuZm9yY2VfaW5saW5lPWZhbHNlKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2l0Y2ggKHMpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gYW5ub3QoREhBbm5vdC5Db2xsYXBzZWQsIHRleHQoXCI8YW5vbiBmbj5cIikpXG4gICAgICAgICAgfCBTb21lKG5hbWUpID0+IGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFwiPFwiICsrIG5hbWUgKysgXCI+XCIpKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIHwgRnVuKGRwLCB0eSwgZGJvZHksIHMpID0+XG4gICAgICAgIGlmIChzZXR0aW5ncy5zaG93X2ZuX2JvZGllcykge1xuICAgICAgICAgIGxldCBiaW5kaW5ncyA9IERIUGF0LmJvdW5kX3ZhcnMoZHApO1xuICAgICAgICAgIGxldCBib2R5X2RvYyA9XG4gICAgICAgICAgICBnb19mb3JtYXR0YWJsZShcbiAgICAgICAgICAgICAgZGJvZHksXG4gICAgICAgICAgICAgIH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhiaW5kaW5ncywgZW52KSxcbiAgICAgICAgICAgICAgfnJlY2VudF9zdWJzdD1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcih4ID0+ICFMaXN0Lm1lbSh4LCBiaW5kaW5ncyksIHJlY2VudF9zdWJzdCksXG4gICAgICAgICAgICAgIH5yZWN1cnNpdmVfY2FsbHM9T3B0aW9uLnRvX2xpc3QocykgQCByZWN1cnNpdmVfY2FsbHMsXG4gICAgICAgICAgICAgIEZ1bixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaGNhdHMoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5zeW1fRnVuLFxuICAgICAgICAgICAgICBESERvY19QYXQubWsoZHApXG4gICAgICAgICAgICAgIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQoXG4gICAgICAgICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBzcGFjZSgpKSxcbiAgICAgICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmUsXG4gICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICBAIChcbiAgICAgICAgICAgICAgc2V0dGluZ3Muc2hvd19jYXN0c1xuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmNvbG9uX0Z1bixcbiAgICAgICAgICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgICAgICAgICBESERvY19UeXAubWsofmVuZm9yY2VfaW5saW5lPXRydWUsIHR5KSxcbiAgICAgICAgICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW11cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIEAgW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfRnVuLFxuICAgICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgICBib2R5X2RvYyB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3dpdGNoIChzKSB7XG4gICAgICAgICAgfCBOb25lID0+IGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFwiPGFub24gZm4+XCIpKVxuICAgICAgICAgIHwgU29tZShuYW1lKSA9PiBhbm5vdChESEFubm90LkNvbGxhcHNlZCwgdGV4dChcIjxcIiArKyBuYW1lICsrIFwiPlwiKSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB8IEZpeEYoeCwgdHksIGRib2R5KSB3aGVuIHNldHRpbmdzLnNob3dfZml4cG9pbnRzID0+XG4gICAgICAgIGxldCBkb2NfYm9keSA9XG4gICAgICAgICAgZ29fZm9ybWF0dGFibGUoXG4gICAgICAgICAgICBkYm9keSxcbiAgICAgICAgICAgIH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhbeF0sIGVudiksXG4gICAgICAgICAgICBGaXhGLFxuICAgICAgICAgICk7XG4gICAgICAgIGhjYXRzKFxuICAgICAgICAgIFtESERvY19jb21tb24uRGVsaW0uZml4X0ZpeEYsIHNwYWNlKCksIHRleHQoeCldXG4gICAgICAgICAgQCAoXG4gICAgICAgICAgICBzZXR0aW5ncy5zaG93X2Nhc3RzXG4gICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5jb2xvbl9GdW4sXG4gICAgICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgICAgICBESERvY19UeXAubWsofmVuZm9yY2VfaW5saW5lPXRydWUsIHR5KSxcbiAgICAgICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIDogW11cbiAgICAgICAgICApXG4gICAgICAgICAgQCBbXG4gICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfRml4RixcbiAgICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgICBkb2NfYm9keSB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZSksXG4gICAgICAgICAgXSxcbiAgICAgICAgKTtcbiAgICAgIHwgRml4Rih4LCBfLCBkKSA9PlxuICAgICAgICBnbycofmVudj1DbG9zdXJlRW52aXJvbm1lbnQud2l0aG91dF9rZXlzKFt4XSwgZW52KSwgZCwgRml4RilcbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgc3RlcHBhYmxlID1cbiAgICAgIG5leHRfc3RlcHMgfD4gTGlzdC5maW5kX29wdCgoKGN0eCwgXykpID0+IGN0eCA9PSBFdmFsQ3R4Lk1hcmspO1xuICAgIGxldCBzdGVwcGVkID1cbiAgICAgIGNob3Nlbl9zdGVwXG4gICAgICB8PiBPcHRpb24ubWFwKHggPT4geC5jdHggPT0gTWFyaylcbiAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1mYWxzZSk7XG4gICAgbGV0IHN1YnN0aXR1dGlvbiA9XG4gICAgICBoaWRkZW5fc3RlcHNcbiAgICAgIHw+IExpc3QuZmluZF9vcHQoc3RlcCA9PlxuICAgICAgICAgICBzdGVwLmtuZCA9PSBWYXJMb29rdXBcbiAgICAgICAgICAgLy8gSEFDS1tNYXR0XTogdG8gcHJldmVudCBzdWJzdGl0dXRpb25zIGhpZGluZyBpbnNpZGUgY2FzdHNcbiAgICAgICAgICAgJiYgRXZhbEN0eC5mdXp6eV9tYXJrKHN0ZXAuY3R4KVxuICAgICAgICAgKTtcbiAgICBsZXQgZG9jID1cbiAgICAgIHN3aXRjaCAoc3Vic3RpdHV0aW9uKSB7XG4gICAgICB8IFNvbWUoe2RfbG9jOiBCb3VuZFZhcih2KSwgX30pIHdoZW4gTGlzdC5tZW0odiwgcmVjZW50X3N1YnN0KSA9PlxuICAgICAgICBoY2F0cyhbdGV4dCh2KSB8PiBhbm5vdChESEFubm90LlN1YnN0aXR1dGVkKSwgZG9jXSlcbiAgICAgIHwgU29tZShfKVxuICAgICAgfCBOb25lID0+IGRvY1xuICAgICAgfTtcbiAgICBsZXQgZG9jID1cbiAgICAgIGlmIChzdGVwcGVkKSB7XG4gICAgICAgIGFubm90KERIQW5ub3QuU3RlcHBlZCwgZG9jKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoc3RlcHBhYmxlKSB7XG4gICAgICAgIHwgU29tZSgoXywgZnVsbCkpID0+IGFubm90KERIQW5ub3QuU3RlcHBhYmxlKGZ1bGwpLCBkb2MpXG4gICAgICAgIHwgTm9uZSA9PiBkb2NcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgZG9jO1xuICB9O1xuICBnbyhcbiAgICBkLFxuICAgIGVudixcbiAgICBlbmZvcmNlX2lubGluZSxcbiAgICBwcmV2aW91c19zdGVwLFxuICAgIGhpZGRlbl9zdGVwcyxcbiAgICBjaG9zZW5fc3RlcCxcbiAgICBMaXN0Lm1hcGkoKGlkeCwgeDogRXZhbE9iai50KSA9PiAoeC5jdHgsIGlkeCksIG5leHRfc3RlcHMpLFxuICAgIFtdLFxuICAgIFtdLFxuICApO1xufTtcbiIsIm9wZW4gUHJldHR5O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBMYXlvdXQudChESEFubm90LnQpO1xuIiwibW9kdWxlIE1lYXN1cmVkUG9zaXRpb24gPSBQcmV0dHkuTWVhc3VyZWRQb3NpdGlvbjtcbm1vZHVsZSBNZWFzdXJlZExheW91dCA9IFByZXR0eS5NZWFzdXJlZExheW91dDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gTWVhc3VyZWRMYXlvdXQudChESEFubm90LnQpO1xudHlwZSB3aXRoX29mZnNldCA9IE1lYXN1cmVkTGF5b3V0LndpdGhfb2Zmc2V0KERIQW5ub3QudCk7XG5pbmNsdWRlIE1lYXN1cmVkTGF5b3V0Lk1ha2UoV2Vha01hcCk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xub3BlbiBQcmV0dHk7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IHdpdGhfY2xzID0gY2xzID0+IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzZXMoW2Nsc10pKTtcblxubGV0IHZpZXdfb2ZfbGF5b3V0ID1cbiAgICAofmluamVjdCwgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfnJlc3VsdF9rZXksIGw6IERITGF5b3V0LnQpXG4gICAgOiBOb2RlLnQgPT4ge1xuICBsZXQgY29ybmVyX3JhZGlpID0gRGVjb3JhdGlvbl9jb21tb24uY29ybmVyX3JhZGlpKGZvbnRfbWV0cmljcyk7XG4gIGxldCAodGV4dCwgZGVjb3JhdGlvbnMpID1cbiAgICBESE1lYXN1cmVkTGF5b3V0Lm1rKGwpXG4gICAgfD4gTWVhc3VyZWRMYXlvdXQucG9zX2ZvbGQoXG4gICAgICAgICB+bGluZWJyZWFrPV8gPT4gKFtOb2RlLmJyKCldLCBbXSksXG4gICAgICAgICB+dGV4dD0oXywgcykgPT4gKFtOb2RlLnRleHQocyldLCBbXSksXG4gICAgICAgICB+YWxpZ249XG4gICAgICAgICAgIChfLCAodHh0LCBkcykpID0+XG4gICAgICAgICAgICAgKFtOb2RlLmRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiQWxpZ25cIl0pLCB0eHQpXSwgZHMpLFxuICAgICAgICAgfmNhdD0oXywgKHR4dDEsIGRzMSksICh0eHQyLCBkczIpKSA9PiAodHh0MSBAIHR4dDIsIGRzMSBAIGRzMiksXG4gICAgICAgICB+YW5ub3Q9XG4gICAgICAgICAgICh+Z28sIH5pbmRlbnQsIH5zdGFydCwgYW5ub3Q6IERIQW5ub3QudCwgbSkgPT4ge1xuICAgICAgICAgICAgIGxldCAodHh0LCBkcykgPSBnbyhtKTtcbiAgICAgICAgICAgICBzd2l0Y2ggKGFubm90KSB7XG4gICAgICAgICAgICAgfCBTdGVwcGFibGUob2JqKSA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLmNsYXNzXyhcInN0ZXBwYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlN0ZXBwZXJBY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwRm9yd2FyZChvYmopLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgdHh0LFxuICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgIGRzLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgU3RlcHBlZCA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4ofmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInN0ZXBwZWRcIildKSwgdHh0KSxcbiAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgZHMsXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfCBTdGVwKF8pXG4gICAgICAgICAgICAgfCBTdWJzdGl0dXRlZCA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICAgICB+YXR0cj1BdHRyLm1hbnkoW0F0dHIuY2xhc3NfKFwic3Vic3RpdHV0ZWRcIildKSxcbiAgICAgICAgICAgICAgICAgICAgIHR4dCxcbiAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IFRlcm0gPT4gKHR4dCwgZHMpXG4gICAgICAgICAgICAgfCBDb2xsYXBzZWQgPT4gKFt3aXRoX2NscyhcIkNvbGxhcHNlZFwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBIb2xlTGFiZWwgPT4gKFt3aXRoX2NscyhcIkhvbGVMYWJlbFwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBEZWxpbSA9PiAoW3dpdGhfY2xzKFwiY29kZS1kZWxpbVwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBFbXB0eUhvbGUoc2VsZWN0ZWQsIF9pbnN0KSA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFbXB0eUhvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlbGVjdGVkID8gW1wic2VsZWN0ZWRcIl0gOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkb20uRWZmZWN0Lk1hbnkoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZG9tLkVmZmVjdC5TdG9wX3Byb3BhZ2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2luamVjdChNb2RlbEFjdGlvbi5TZWxlY3RIb2xlSW5zdGFuY2UoaW5zdCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgIHR4dCxcbiAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IEZhaWxlZENhc3REZWxpbSA9PiAoW3dpdGhfY2xzKFwiRmFpbGVkQ2FzdERlbGltXCIsIHR4dCldLCBkcylcbiAgICAgICAgICAgICB8IEZhaWxlZENhc3REZWNvcmF0aW9uID0+IChcbiAgICAgICAgICAgICAgICAgW3dpdGhfY2xzKFwiRmFpbGVkQ2FzdERlY29yYXRpb25cIiwgdHh0KV0sXG4gICAgICAgICAgICAgICAgIGRzLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgQ2FzdERlY29yYXRpb24gPT4gKFt3aXRoX2NscyhcIkNhc3REZWNvcmF0aW9uXCIsIHR4dCldLCBkcylcbiAgICAgICAgICAgICB8IE9wZXJhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8gfCBJbnZhbGlkT2ZTdHJpbmcgfCBJbmRleE91dE9mQm91bmRzLFxuICAgICAgICAgICAgICAgKSA9PiAoXG4gICAgICAgICAgICAgICAgIFt3aXRoX2NscyhcIk9wZXJhdGlvbkVycm9yXCIsIHR4dCldLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IE9wZXJhdGlvbkVycm9yKE5lZ2F0aXZlRXhwb25lbnQpID0+IChcbiAgICAgICAgICAgICAgICAgW3dpdGhfY2xzKFwiT3BlcmF0aW9uRXJyb3JcIiwgdHh0KV0sXG4gICAgICAgICAgICAgICAgIGRzLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgT3BlcmF0aW9uRXJyb3IoT3V0T2ZGdWVsKSA9PiAoXG4gICAgICAgICAgICAgICAgIFt3aXRoX2NscyhcIk9wZXJhdGlvbkVycm9yXCIsIHR4dCldLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IFZhckhvbGUoXykgPT4gKFt3aXRoX2NscyhcIkluVmFySG9sZVwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBJbnZhbGlkKChfLCAoLTY2NikpKSA9PlxuICAgICAgICAgICAgICAgLyogRXZhbHVhdGlvbiBhbmQgRWxhYm9yYXRpb24gZXhjZXB0aW9ucyAqL1xuICAgICAgICAgICAgICAgKFt3aXRoX2NscyhcImV4Y2VwdGlvblwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBOb25FbXB0eUhvbGUoXylcbiAgICAgICAgICAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzKF8pXG4gICAgICAgICAgICAgfCBJbnZhbGlkKF8pID0+XG4gICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gc3RhcnQuY29sIC0gaW5kZW50O1xuICAgICAgICAgICAgICAgbGV0IGRlY29yYXRpb24gPVxuICAgICAgICAgICAgICAgICBEZWNvcmF0aW9uX2NvbW1vbi5jb250YWluZXIoXG4gICAgICAgICAgICAgICAgICAgfmNvbnRhaW5lcl90eXBlPVN2ZyxcbiAgICAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgICAgIH5oZWlnaHQ9TWVhc3VyZWRMYXlvdXQuaGVpZ2h0KG0pLFxuICAgICAgICAgICAgICAgICAgIH53aWR0aD1NZWFzdXJlZExheW91dC53aWR0aCh+b2Zmc2V0LCBtKSxcbiAgICAgICAgICAgICAgICAgICB+b3JpZ2luPU1lYXN1cmVkUG9zaXRpb24ue3Jvdzogc3RhcnQucm93LCBjb2w6IGluZGVudH0sXG4gICAgICAgICAgICAgICAgICAgfmNscz1cImVyci1ob2xlXCIsXG4gICAgICAgICAgICAgICAgICAgW0RIRGVjb3JhdGlvbi5FcnJIb2xlLnZpZXcofmNvcm5lcl9yYWRpaSwgKG9mZnNldCwgbSkpXSxcbiAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICh0eHQsIFtkZWNvcmF0aW9uLCAuLi5kc10pO1xuICAgICAgICAgICAgIH07XG4gICAgICAgICAgIH0sXG4gICAgICAgKTtcbiAgTm9kZS5kaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcIkRIQ29kZVwiXSksXG4gICAgW3dpdGhfY2xzKFwiY29kZVwiLCB0ZXh0KSwgLi4uZGVjb3JhdGlvbnNdLFxuICApO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5sb2NrZWQgYXMgXz1mYWxzZSwgLy8gTk9URTogV2hlbiB3ZSBhZGQgbW91c2UgZXZlbnRzIHRvIHRoaXMsIGlnbm9yZSB0aGVtIGlmIGxvY2tlZFxuICAgICAgfmluamVjdCxcbiAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCxcbiAgICAgIH5zZWxlY3RlZF9ob2xlX2luc3RhbmNlOiBvcHRpb24oSG9sZUluc3RhbmNlLnQpLFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH53aWR0aDogaW50LFxuICAgICAgfnBvcz0wLFxuICAgICAgfnByZXZpb3VzX3N0ZXA6IG9wdGlvbihFdmFsdWF0b3JTdGVwLnN0ZXApPU5vbmUsIC8vIFRoZSBzdGVwIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgYWJvdmUgdGhpcyBvbmVcbiAgICAgIH5oaWRkZW5fc3RlcHM6IGxpc3QoRXZhbHVhdG9yU3RlcC5zdGVwKT1bXSwgLy8gVGhlIGhpZGRlbiBzdGVwcyBiZXR3ZWVuIHRoZSBhYm92ZSBhbmQgdGhlIGN1cnJlbnQgb25lXG4gICAgICB+Y2hvc2VuX3N0ZXA6IG9wdGlvbihFdmFsdWF0b3JTdGVwLnN0ZXApPU5vbmUsIC8vIFRoZSBzdGVwIHRoYXQgd2lsbCBiZSB0YWtlbiBuZXh0XG4gICAgICB+bmV4dF9zdGVwczogbGlzdChFdmFsdWF0b3JTdGVwLkV2YWxPYmoudCk9W10sXG4gICAgICB+cmVzdWx0X2tleTogc3RyaW5nLFxuICAgICAgZDogREhFeHAudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICBESERvY19FeHAubWsoXG4gICAgfnByZXZpb3VzX3N0ZXAsXG4gICAgfmhpZGRlbl9zdGVwcyxcbiAgICB+Y2hvc2VuX3N0ZXAsXG4gICAgfm5leHRfc3RlcHMsXG4gICAgfmVudj1DbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksXG4gICAgfnNldHRpbmdzLFxuICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZSxcbiAgICBkLFxuICApXG4gIHw+IExheW91dE9mRG9jLmxheW91dF9vZl9kb2MofndpZHRoLCB+cG9zKVxuICB8PiBPcHRVdGlsLmdldCgoKSA9PlxuICAgICAgIGZhaWx3aXRoKFwidW5pbXBsZW1lbnRlZDogdmlld19vZl9kaGV4cCBvbiBsYXlvdXQgZmFpbHVyZVwiKVxuICAgICApXG4gIHw+IHZpZXdfb2ZfbGF5b3V0KH5pbmplY3QsIH5mb250X21ldHJpY3MsIH5yZXN1bHRfa2V5KTtcbn07XG5cbnR5cGUgZm9udF9tZXRyaWNzID0gRm9udE1ldHJpY3MudDtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5cbm1vZHVsZSBUZXN0U3RhdHVzID0gSGF6M2xjb3JlLlRlc3RTdGF0dXM7XG5tb2R1bGUgVGVzdE1hcCA9IEhhejNsY29yZS5UZXN0TWFwO1xubW9kdWxlIFRlc3RSZXN1bHRzID0gSGF6M2xjb3JlLlRlc3RSZXN1bHRzO1xubW9kdWxlIEludGVyZmFjZSA9IEhhejNsY29yZS5JbnRlcmZhY2U7XG5cbmxldCB0ZXN0X2luc3RhbmNlX3ZpZXcgPVxuICAgICh+c2V0dGluZ3MsIH5pbmplY3QsIH5mb250X21ldHJpY3MsIChkLCBzdGF0dXMpOiBUZXN0TWFwLmluc3RhbmNlX3JlcG9ydCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtjbHNzKFtcInRlc3QtaW5zdGFuY2VcIiwgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKV0pXSksXG4gICAgW1xuICAgICAgREhDb2RlLnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2U9Tm9uZSxcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfndpZHRoPTQwLFxuICAgICAgICB+cmVzdWx0X2tleT1cIlwiLFxuICAgICAgICBkLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xuXG5sZXQganVtcF90b190ZXN0ID0gKH5pbmplY3QsIHBvcywgaWQsIF8pID0+IHtcbiAgbGV0IGVmZmVjdDEgPSBpbmplY3QoVXBkYXRlLlN3aXRjaEVkaXRvcihwb3MpKTtcbiAgbGV0IGVmZmVjdDIgPSBpbmplY3QoVXBkYXRlLlBlcmZvcm1BY3Rpb24oSnVtcChUaWxlSWQoaWQpKSkpO1xuICBFZmZlY3QuYmluZChlZmZlY3QxLCB+Zj1fcmVzdWx0MSA9PiBlZmZlY3QyKTtcbn07XG5cbmxldCB0ZXN0X3JlcG9ydF92aWV3ID1cbiAgICAoXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5kZXNjcmlwdGlvbjogb3B0aW9uKHN0cmluZyk9Tm9uZSxcbiAgICAgIGk6IGludCxcbiAgICAgIChpZCwgaW5zdGFuY2VfcmVwb3J0cyk6IFRlc3RNYXAucmVwb3J0LFxuICAgICkgPT4ge1xuICBsZXQgc3RhdHVzID1cbiAgICBpbnN0YW5jZV9yZXBvcnRzIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzIHw+IFRlc3RTdGF0dXMudG9fc3RyaW5nO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzXyhcInRlc3QtcmVwb3J0XCIpLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKGp1bXBfdG9fdGVzdCh+aW5qZWN0LCBZb3VyVGVzdHNUZXN0aW5nLCBpZCkpLFxuICAgICAgXSksXG4gICAgW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1jbHNzKFtcInRlc3QtaWRcIiwgXCJUZXN0XCIgKysgc3RhdHVzXSksXG4gICAgICAgIC8vIG5vdGU6IHByaW50cyBsZXhpY2FsIGluZGV4LCBub3QgaWRcbiAgICAgICAgW3RleHQoc3RyaW5nX29mX2ludChpICsgMSkpXSxcbiAgICAgICksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1pbnN0YW5jZXNcIiksXG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgIHRlc3RfaW5zdGFuY2Vfdmlldyh+c2V0dGluZ3MsIH5pbmplY3QsIH5mb250X21ldHJpY3MpLFxuICAgICAgICAgIGluc3RhbmNlX3JlcG9ydHMsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF1cbiAgICBAIChcbiAgICAgIHN3aXRjaCAoZGVzY3JpcHRpb24pIHtcbiAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgfCBTb21lKGQpID0+IFtkaXYofmF0dHI9Y2xzcyhbXCJ0ZXN0LWRlc2NyaXB0aW9uXCJdKSwgW3RleHQoZCldKV1cbiAgICAgIH1cbiAgICApLFxuICApO1xufTtcblxubGV0IHRlc3RfcmVwb3J0c192aWV3ID1cbiAgICAofnNldHRpbmdzLCB+aW5qZWN0LCB+Zm9udF9tZXRyaWNzLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInBhbmVsLWJvZHlcIiwgXCJ0ZXN0LXJlcG9ydHNcIl0pLFxuICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlcG9ydCBhdmFpbGFibGUuXCIpXVxuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChpLCByKSA9PlxuICAgICAgICAgIHRlc3RfcmVwb3J0X3ZpZXcoXG4gICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgIH5kZXNjcmlwdGlvbj1MaXN0Lm50aF9vcHQodGVzdF9yZXN1bHRzLmRlc2NyaXB0aW9ucywgaSksXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcixcbiAgICAgICAgICApLFxuICAgICAgICB0ZXN0X3Jlc3VsdHMudGVzdF9tYXAsXG4gICAgICApXG4gICAgfSxcbiAgKTtcblxubGV0IHRlc3RfYmFyX3NlZ21lbnQgPSAofmluamVjdCwgcG9zLCAoaWQsIHJlcG9ydHMpKSA9PiB7XG4gIGxldCBzdGF0dXMgPSByZXBvcnRzIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzIHw+IFRlc3RTdGF0dXMudG9fc3RyaW5nO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcInNlZ21lbnRcIiwgc3RhdHVzXSksXG4gICAgICAgIEF0dHIub25fY2xpY2soanVtcF90b190ZXN0KH5pbmplY3QsIHBvcywgaWQpKSxcbiAgICAgIF0pLFxuICAgIFtdLFxuICApO1xufTtcblxubGV0IHRlc3RfYmFyID0gKH5pbmplY3QsIH50ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQsIHBvcykgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1iYXJcIiksXG4gICAgTGlzdC5tYXAodGVzdF9iYXJfc2VnbWVudCh+aW5qZWN0LCBwb3MpLCB0ZXN0X3Jlc3VsdHMudGVzdF9tYXApLFxuICApO1xuXG4vLyByZXN1bHRfc3VtbWFyeV9zdHIgYW5kIHRlc3Rfc3VtbWFyeV9zdHIgaGF2ZSBiZWVuIG1vdmVkIHRvIGhhejNsY29yZS9UZXN0UmVzdWx0cy5yZVxuXG5sZXQgcGVyY2VudF92aWV3ID0gKG46IGludCwgcDogaW50KTogTm9kZS50ID0+IHtcbiAgbGV0IHBlcmNlbnRhZ2UgPVxuICAgIG4gPT0gMCA/IDEwMC4gOiAxMDAuICouIGZsb2F0X29mX2ludChwKSAvLiBmbG9hdF9vZl9pbnQobik7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRlc3QtcGVyY2VudFwiLCBuID09IHAgPyBcImFsbC1wYXNzXCIgOiBcInNvbWUtZmFpbFwiXSksXG4gICAgW3RleHQoUHJpbnRmLnNwcmludGYoXCIlLjBmJSVcIiwgcGVyY2VudGFnZSkpXSxcbiAgKTtcbn07XG5cbmxldCB0ZXN0X3BlcmNlbnRhZ2UgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KTogTm9kZS50ID0+XG4gIHBlcmNlbnRfdmlldyh0ZXN0X3Jlc3VsdHMudG90YWwsIHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxubGV0IHRlc3RfdGV4dCA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgIFtcbiAgICAgIHRlc3RfcGVyY2VudGFnZSh0ZXN0X3Jlc3VsdHMpLFxuICAgICAgZGl2KFt0ZXh0KFwiOlwiKV0pLFxuICAgICAgdGV4dChUZXN0UmVzdWx0cy50ZXN0X3N1bW1hcnlfc3RyKHRlc3RfcmVzdWx0cykpLFxuICAgIF0sXG4gICk7XG5cbmxldCB0ZXN0X3N1bW1hcnkgPSAofmluamVjdCwgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRlc3Qtc3VtbWFyeVwiXSksXG4gICAge1xuICAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXN1bHRzIGF2YWlsYWJsZS5cIildXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PiBbXG4gICAgICAgICAgdGVzdF90ZXh0KHRlc3RfcmVzdWx0cyksXG4gICAgICAgICAgdGVzdF9iYXIofmluamVjdCwgfnRlc3RfcmVzdWx0cywgWW91clRlc3RzVGVzdGluZyksXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn07XG5cbmxldCB2aWV3X29mX21haW5fdGl0bGVfYmFyID0gKHRpdGxlX3RleHQ6IHN0cmluZykgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJ0aXRsZS1iYXJcIiwgXCJwYW5lbC10aXRsZS1iYXJcIl0pXSksXG4gICAgW05vZGUudGV4dCh0aXRsZV90ZXh0KV0sXG4gICk7XG5cbmxldCBpbnNwZWN0b3JfdmlldyA9XG4gICAgKFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfmluamVjdCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+dGVzdF9tYXA6IFRlc3RNYXAudCxcbiAgICAgIGlkOiBIYXozbGNvcmUuSWQudCxcbiAgICApXG4gICAgOiBvcHRpb24odCkgPT4ge1xuICBzd2l0Y2ggKFRlc3RNYXAubG9va3VwKGlkLCB0ZXN0X21hcCkpIHtcbiAgfCBTb21lKGluc3RhbmNlcykgd2hlbiBUZXN0TWFwLmpvaW50X3N0YXR1cyhpbnN0YW5jZXMpICE9IEluZGV0ID0+XG4gICAgU29tZShcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LWluc3BlY3RvclwiKSxcbiAgICAgICAgW1xuICAgICAgICAgIGRpdihcbiAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1pbnN0YW5jZXNcIiksXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgdGVzdF9pbnN0YW5jZV92aWV3KH5zZXR0aW5ncywgfmluamVjdCwgfmZvbnRfbWV0cmljcyksXG4gICAgICAgICAgICAgIGluc3RhbmNlcyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCB0ZXN0X3RydWVfZXggPSB7XG4gIHN1Yl9pZDogVGVzdFRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0ZXN0IHRydWUgZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoaXMgaXMgcmVwb3J0ZWQgYXMgYSBwYXNzaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyB0cnVlLlwiLFxufTtcbi8vIFRPRE8gYXJlIHRoZXNlIHJlYWxseSB0aGUgY29ycmVjdCBtZXNzYWdlcy9leHBsYW5hdGlvbnM7IG1heWJlIGluY2x1ZGUgc29tZXRoaW5nIGFib3V0IHRoZSByZXN1bHQgYmVpbmcgdHJpdlxubGV0IHRlc3RfZmFsc2VfZXggPSB7XG4gIHN1Yl9pZDogVGVzdEZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCAzIDwgMSBlbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhpcyBpcyByZXBvcnRlZCBhcyBhIGZhaWxpbmcgdGVzdCBiZWNhdXNlIHRoZSBib2R5IG9mIHRoZSB0ZXN0IGlzIDMgPCAxIHdoaWNoIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZVwiKTtcbmxldCB0ZXN0X2V4cF9jb2xvcmluZ19pZHMgPSAofmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9ib2R5KSwgYm9keV9pZCksXG5dO1xubGV0IHRlc3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmJvZHkqXSglcykgb2YgdGhlIHRlc3QgZXZhbHV0ZXMgdG8gYHRydWVgLCB0aGUgdGVzdCBwYXNzZXMuIE90aGVyd2lzZSwgdGhlIHRlc3QgZmFpbHMuXCI7XG4gIHtcbiAgICBpZDogVGVzdEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW21rX3Rlc3QoW1tzcGFjZSgpLCBfZXhwX2JvZHksIHNwYWNlKCldXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0ZXN0X3RydWVfZXgsIHRlc3RfZmFsc2VfZXhdLFxuICB9O1xufTtcblxubGV0IHRlc3RzOiBncm91cCA9IHtpZDogVGVzdEV4cCwgZm9ybXM6IFt0ZXN0X2V4cF19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBpbnRfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBgSW50YCB0eXBlIGNsYXNzaWZpZXMgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcy5cIjtcbiAge1xuICAgIGlkOiBJbnRUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJJbnRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGZsb2F0X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEZsb2F0YCB0eXBlIGNsYXNzaWZpZXMgNjQtYml0IGZsb2F0aW5nLXBvaW50IHZhbHVlcyBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IHN0YW5kYXJkLlwiO1xuICB7XG4gICAgaWQ6IEZsb2F0VHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiRmxvYXRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGJvb2xfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBgQm9vbGAgdHlwZSBjbGFzc2lmaWVzIGJvb2xlYW4gdmFsdWVzLlwiO1xuICB7XG4gICAgaWQ6IEJvb2xUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJCb29sXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdHJfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBgU3RyaW5nYCB0eXBlIGNsYXNzaWZpZXMgc3RyaW5nIHZhbHVlcy5cIjtcbiAge1xuICAgIGlkOiBTdHJUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJTdHJpbmdcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHZhcl90eXAgPSAobmFtZTogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiYCVzYCBpcyBhIHR5cGUgdmFyaWFibGUuXCI7XG4gIHtcbiAgICBpZDogVmFyVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHR5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgaW50OiBncm91cCA9IHtpZDogSW50VHlwLCBmb3JtczogW2ludF90eXBdfTtcblxubGV0IGZsb2F0OiBncm91cCA9IHtpZDogRmxvYXRUeXAsIGZvcm1zOiBbZmxvYXRfdHlwXX07XG5cbmxldCBib29sOiBncm91cCA9IHtpZDogQm9vbFR5cCwgZm9ybXM6IFtib29sX3R5cF19O1xuXG5sZXQgc3RyOiBncm91cCA9IHtpZDogU3RyVHlwLCBmb3JtczogW3N0cl90eXBdfTtcblxubGV0IHZhciA9IChuYW1lOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhclR5cCwgZm9ybXM6IFt2YXJfdHlwKG5hbWUpXX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbmxldCB3aWxkX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgKndpbGRjYXJkIHBhdHRlcm4qIG1hdGNoZXMgYW55IGV4cHJlc3Npb24uXCI7XG4gIHtcbiAgICBpZDogV2lsZFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIl9cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGludGxpdF9wYXQgPSAoaTogaW50KTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlaWAgbWF0Y2ggdGhlICpgJWlgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEludFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2kgfD4gc3RyaW5nX29mX2ludCB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZmxvYXRsaXRfcGF0ID0gKGY6IGZsb2F0KTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlZmAgbWF0Y2ggdGhlICpgJWZgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEZsb2F0UGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbZiB8PiBzdHJpbmdfb2ZfZmxvYXQgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGJvb2xsaXRfcGF0ID0gKGI6IGJvb2wpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHdpdGggdmFsdWUgYCViYCBtYXRjaCB0aGUgKmAlYmAgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogQm9vbFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2IgfD4gc3RyaW5nX29mX2Jvb2wgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHN0cmxpdF9wYXQgPSAoczogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlc2AgbWF0Y2ggdGhlICpgJXNgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IFN0clBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3MgfD4gYWJicmV2aWF0ZSB8PiBIYXozbGNvcmUuRm9ybS5zdHJpbmdfcXVvdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0cml2X3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHdpdGggdGhlIHRyaXZpYWwgdmFsdWUgYCgpYCBtYXRjaCB0aGUgKnRyaXZpYWwgcGF0dGVybiBgKClgKi5cIjtcbiAge1xuICAgIGlkOiBUcml2UGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwiKClcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHZhcl9wYXQgPSAobmFtZTogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyAqcGF0dGVybiB2YXJpYWJsZSogbWF0Y2hlcyBhbnkgZXhwcmVzc2lvbiwgYmluZGluZyBpdHMgdmFsdWUgdG8gdmFyaWFibGUgYCVzYC5cIjtcbiAge1xuICAgIGlkOiBWYXJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuYW1lIHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBjdHJfcGF0ID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCB0aGUgKmAlc2AgY29uc3RydWN0b3IqIG1hdGNoIHRoaXMgY29uc3RydWN0b3IgcGF0dGVybi5cIjtcbiAge1xuICAgIGlkOiBDdHJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuYW1lIHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB3aWxkOiBncm91cCA9IHtpZDogV2lsZFBhdCwgZm9ybXM6IFt3aWxkX3BhdF19O1xuXG5sZXQgaW50bGl0ID0gKGk6IGludCk6IGdyb3VwID0+IHtpZDogSW50UGF0LCBmb3JtczogW2ludGxpdF9wYXQoaSldfTtcblxubGV0IGZsb2F0bGl0ID0gKGY6IGZsb2F0KTogZ3JvdXAgPT4ge1xuICBpZDogRmxvYXRQYXQsXG4gIGZvcm1zOiBbZmxvYXRsaXRfcGF0KGYpXSxcbn07XG5cbmxldCBib29sbGl0ID0gKGI6IGJvb2wpOiBncm91cCA9PiB7aWQ6IEJvb2xQYXQsIGZvcm1zOiBbYm9vbGxpdF9wYXQoYildfTtcblxubGV0IHN0cmxpdCA9IChzOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFN0clBhdCwgZm9ybXM6IFtzdHJsaXRfcGF0KHMpXX07XG5cbmxldCB0cml2OiBncm91cCA9IHtpZDogVHJpdlBhdCwgZm9ybXM6IFt0cml2X3BhdF19O1xuXG5sZXQgdmFyID0gKG5hbWU6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogVmFyUGF0LCBmb3JtczogW3Zhcl9wYXQobmFtZSldfTtcblxubGV0IGN0ciA9IChuYW1lOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IEN0clBhdCwgZm9ybXM6IFtjdHJfcGF0KG5hbWUpXX07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHRyaXZfZXhwOiBmb3JtID0ge1xuICBpZDogVHJpdkV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtleHAoXCIoKVwiKV0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIlRoZSB1bmlxdWUgdmFsdWUgb2YgdHlwZSBgKClgLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IHRyaXZfZXhwczogZ3JvdXAgPSB7aWQ6IFRyaXZFeHAsIGZvcm1zOiBbdHJpdl9leHBdfTtcblxubGV0IGJvb2xfZXhwID0gKGI6IGJvb2wpOiBmb3JtID0+IHtcbiAgaWQ6IEJvb2xFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZXhwKGIgfD4gc3RyaW5nX29mX2Jvb2wpXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBib29sZWFuIGxpdGVyYWwsIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBib29sX2V4cHMgPSAoYjogYm9vbCk6IGdyb3VwID0+IHtpZDogQm9vbEV4cCwgZm9ybXM6IFtib29sX2V4cChiKV19O1xuXG5sZXQgaW50X2V4cCA9IChuOiBpbnQpOiBmb3JtID0+IHtcbiAgaWQ6IEludEV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtuIHw+IHN0cmluZ19vZl9pbnQgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBzaWduZWQgaW50ZWdlciBsaXRlcmFsLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IGludF9leHBzID0gKGk6IGludCk6IGdyb3VwID0+IHtpZDogSW50RXhwLCBmb3JtczogW2ludF9leHAoaSldfTtcblxubGV0IGZsb2F0X2V4cCA9IChmOiBmbG9hdCk6IGZvcm0gPT4ge1xuICBpZDogRmxvYXRFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZiB8PiBzdHJpbmdfb2ZfZmxvYXQgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBmbG9hdGluZy1wb2ludCBsaXRlcmFsLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IGZsb2F0X2V4cHMgPSAoZjogZmxvYXQpOiBncm91cCA9PiB7XG4gIGlkOiBGbG9hdEV4cCxcbiAgZm9ybXM6IFtmbG9hdF9leHAoZildLFxufTtcblxubGV0IHN0cmluZ19leHAgPSAoczogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGlkOiBTdHJpbmdFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbcyB8PiBhYmJyZXZpYXRlIHw+IEhhejNsY29yZS5Gb3JtLnN0cmluZ19xdW90ZSB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJBIHN0cmluZyBsaXRlcmFsLiBBbnkgY2hhcmFjdGVyIGJlc2lkZXMgZG91YmxlIHF1b3RlcyAoYFxcXCJgKSBjYW4gYmUgdXNlZC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBzdHJpbmdfZXhwcyA9IChzOiBzdHJpbmcpOiBncm91cCA9PiB7XG4gIGlkOiBTdHJpbmdFeHAsXG4gIGZvcm1zOiBbc3RyaW5nX2V4cChzKV0sXG59O1xuXG5sZXQgdmFyX2V4cCA9IChuOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgaWQ6IFZhckV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtuIHw+IGFiYnJldmlhdGUgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiVGFrZXMgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIHRoYXQgaXQgd2FzIGJvdW5kIHRvLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IHZhcl9leHBzID0gKHg6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogVmFyRXhwLCBmb3JtczogW3Zhcl9leHAoeCldfTtcblxubGV0IGN0cl9leHAgPSAoYzogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGlkOiBDdHJFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbYyB8PiBhYmJyZXZpYXRlIHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcImAlc2AgaXMgYSBjb25zdHJ1Y3RvciBmb3IgYSBzdW0gdHlwZSB2YXJpYW50LlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IGN0ciA9IChjOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IEN0ckV4cCwgZm9ybXM6IFtjdHJfZXhwKGMpXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGFiZWxsZWRfc3VtX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJTdW0gdHlwZXMgZGVzY3JpYmUgYSBmaW5pdGUgc2V0IG9mIGxhYmVsZWQgY2hvaWNlcy4gVmFsdWVzIG9mIHRoaXMgdHlwZSBjb25zaXN0IG9mIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbnN0cnVjdG9ycyBhcHBsaWVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlciB0eXBlLCBpZiBzcGVjaWZpZWQuIENvbnN0cnVjdG9yIG5hbWVzIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIHN1bS5cIjtcbiAgbGV0IGRpdmlkZXIgPSBFeGFtcGxlLm1rX21vbm90aWxlKEZvcm0uZ2V0KFwidHlwX3BsdXNcIikpO1xuICB7XG4gICAgaWQ6IExhYmVsbGVkU3VtVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBzcGFjZSgpLFxuICAgICAgdHlwKFwiQ29uc3RydWN0b3IodHkpXCIpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGRpdmlkZXIsXG4gICAgICBzcGFjZSgpLFxuICAgICAgdHlwKFwiLi4uXCIpLFxuICAgICAgc3BhY2UoKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZiA9IChjOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHNwZWNpZmllcyBvbmUgcG9zc2libGUgd2F5IG9mIGNvbnN0cnVjdGluZyB0aGUgcGFyZW50IHN1bSB0eXBlLCB3aGVuIGFwcGxpZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIgdHlwZS5cIjtcbiAge1xuICAgIGlkOiBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbYyArKyBcIihUeXBlKVwiIHw+IGFiYnJldmlhdGUgfD4gdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgc3BlY2lmaWVzIG9uZSBwb3NzaWJsZSB3YXkgb2YgY29uc3RydWN0aW5nIHRoZSBwYXJlbnQgc3VtIHR5cGUuXCI7XG4gIHtcbiAgICBpZDogU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbYyB8PiBhYmJyZXZpYXRlIHw+IHR5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGFiZWxsZWRfc3VtX3R5cHM6IGdyb3VwID0ge1xuICBpZDogTGFiZWxsZWRTdW1UeXAsXG4gIGZvcm1zOiBbbGFiZWxsZWRfc3VtX3R5cF0sXG59O1xuXG5sZXQgc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzID0gKGM6IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWYsXG4gIGZvcm1zOiBbc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWYoYyldLFxufTtcblxubGV0IHN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWZzID0gKGM6IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFN1bVR5cE51bGxhcnlDb25zdHJ1Y3RvckRlZixcbiAgZm9ybXM6IFtzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmKGMpXSxcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBpY29uX3NpemUgPSAyMC47XG5cbmxldCBzaW1wbGVfaWNvbiA9ICh+dHJhbnNmb3JtPVwiXCIsIH52aWV3OiBzdHJpbmcsIGRzOiBsaXN0KHN0cmluZykpID0+XG4gIC8qIHRha2VzIGEgbGlzdCBvZiBwYXRocyBhcyBzdHJpbmdzLCBhIHZpZXdwb3J0IGFzIGEgc3RyaW5nLFxuICAgICBhbmQgYW4gb3B0aW9uYWwgKHN0cmluZykgdHJhbnNmb3JtIHRvIGFwcGx5IHRvIGVhY2ggKi9cbiAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIEF0dHIuW1xuICAgICAgICAgIGNyZWF0ZShcInZpZXdCb3hcIiwgdmlldyksXG4gICAgICAgICAgY3JlYXRlKFwid2lkdGhcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIGljb25fc2l6ZSkpLFxuICAgICAgICAgIGNyZWF0ZShcImhlaWdodFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgaWNvbl9zaXplKSksXG4gICAgICAgICAgY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIExpc3QubWFwKFxuICAgICAgZCA9PlxuICAgICAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLm1hbnkoXG4gICAgICAgICAgICAgIFtBdHRyLmNyZWF0ZShcImRcIiwgZCldXG4gICAgICAgICAgICAgIEAgKFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9PSBcIlwiID8gW10gOiBbQXR0ci5jcmVhdGUoXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtKV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgW10sXG4gICAgICAgICksXG4gICAgICBkcyxcbiAgICApLFxuICApO1xuXG5sZXQgZ2VhciA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTExOTMuMiA2OTAuOTVjNC40ODgzLTI5LjY2NCA2LjgyODEtNjAuMDQ3IDYuODI4MS05MC45NjEgMC0zMC45MS0yLjMzOTgtNjEuMjczLTYuODI4MS05MC45MzhsLTE1MS4zNy03NC4zMDVjLTMuODM5OC0xMC4yNjItOC4wMTU2LTIwLjM2My0xMi41NjItMzAuMjY2bDU0LjQ2OS0xNTkuNTJjLTM2LjEwOS00OS4xNDgtNzkuNTI3LTkyLjU2Ni0xMjguNjYtMTI4LjY3bC0xNTkuNTMgNTQuNDY5Yy05Ljg5ODQtNC41MjM0LTE5Ljk5Mi04LjcxMDktMzAuMjY2LTEyLjU1MWwtNzQuMzAxLTE1MS4zNmMtMjkuNjY0LTQuNTIzNC02MC4wNTEtNi44NTE2LTkwLjk2MS02Ljg1MTZzLTYxLjI4NSAyLjMyODEtOTAuOTQ5IDYuODUxNmwtNzQuMzA1IDE1MS4zNmMtMTAuMjYyIDMuODM5OC0yMC4zNTIgOC4wMjczLTMwLjI2NiAxMi41NTFsLTE1OS41Mi01NC40NjVjLTQ5LjEyOSAzNi4xMDktOTIuNTQzIDc5LjUzNS0xMjguNjYgMTI4LjY2bDU0LjQ1NyAxNTkuNTJjLTQuNTExNyA5Ljg5ODQtOC42ODc1IDIwLjAwNC0xMi41MzkgMzAuMjY2bC0xNTEuMzYgNzQuMzEyYy00LjUxMTcgMjkuNjY0LTYuODUxNiA2MC4wMjMtNi44NTE2IDkwLjkzOCAwIDMwLjkxIDIuMzM5OCA2MS4yOTcgNi44NTE2IDkwLjk2MWwxNTEuMzYgNzQuMzA1YzMuODUxNiAxMC4yNjIgOC4wMjczIDIwLjM1MiAxMi41MzkgMzAuMjc3bC01NC40NTMgMTU5LjUxYzM2LjEyMSA0OS4xMjkgNzkuNTM1IDkyLjU0MyAxMjguNjYgMTI4LjY4bDE1OS41Mi01NC40NTdjOS45MTAyIDQuNTExNyAyMC4wMDQgOC42ODc1IDMwLjI2NiAxMi41MjdsNzQuMzA1IDE1MS4zN2MyOS42NzIgNC41MDM5IDYwLjA0NyA2Ljg0MzggOTAuOTU3IDYuODQzOHM2MS4yOTctMi4zMzk4IDkwLjk2MS02LjgzOThsNzQuMjkzLTE1MS4zN2MxMC4yNzMtMy44Mzk4IDIwLjM2My04LjAxNTYgMzAuMjg5LTEyLjUyN2wxNTkuNSA1NC40NTdjNDkuMTI5LTM2LjEzMyA5Mi41NDMtNzkuNTQ3IDEyOC42NS0xMjguNjhsLTU0LjQ2MS0xNTkuNTFjNC41NDY5LTkuOTI1OCA4LjcyMjctMjAuMDE2IDEyLjU2Mi0zMC4yNzd6bS01OTMuMTcgNDguNTE2Yy03Ny4wMTYgMC0xMzkuNDQtNjIuNDQ5LTEzOS40NC0xMzkuNDggMC03Ny4wMTYgNjIuNDI2LTEzOS40NSAxMzkuNDQtMTM5LjQ1czEzOS40OCA2Mi40MzggMTM5LjQ4IDEzOS40NWMwIDc3LjAyNy02Mi40NjEgMTM5LjQ4LTEzOS40OCAxMzkuNDh6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGluZm8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm0xMTIwLjUgNTMxLjc1Yy0xNy4wNjItMTMwLjI0LTgyLjMzMi0yNDkuMzYtMTgyLjkyLTMzMy44My0xMDAuNTktODQuNDc3LTIyOS4xOS0xMjguMTgtMzYwLjQyLTEyMi40OC0xMzEuMjMgNS43MDMxLTI1NS41NiA2MC4zOTUtMzQ4LjQ0IDE1My4yOHMtMTQ3LjU3IDIxNy4yMS0xNTMuMjggMzQ4LjQ0Yy01LjY5OTIgMTMxLjIzIDM4IDI1OS44MyAxMjIuNDggMzYwLjQyIDg0LjQ3NyAxMDAuNTkgMjAzLjU5IDE2NS44NiAzMzMuODMgMTgyLjkyIDEwNi43NSAxMy45ODQgMjE1LjIyLTUuMTg3NSAzMTAuNzEtNTQuOTIyIDk1LjQ4OC00OS43MzQgMTczLjM4LTEyNy42MiAyMjMuMTEtMjIzLjExIDQ5LjczNC05NS40OTIgNjguOTA2LTIwMy45NiA1NC45MjItMzEwLjcxem0tNDQ1LjUgMzE3LjI1YzAgMjYuNzkzLTE0LjI5MyA1MS41NTUtMzcuNSA2NC45NTMtMjMuMjA3IDEzLjM5NS01MS43OTMgMTMuMzk1LTc1IDAtMjMuMjA3LTEzLjM5OC0zNy41LTM4LjE2LTM3LjUtNjQuOTUzdi0yMjVjMC0yNi43OTMgMTQuMjkzLTUxLjU1NSAzNy41LTY0Ljk1MyAyMy4yMDctMTMuMzk1IDUxLjc5My0xMy4zOTUgNzUgMCAyMy4yMDcgMTMuMzk4IDM3LjUgMzguMTYgMzcuNSA2NC45NTN6bS03NS00MjNjLTE5Ljg5MSAwLTM4Ljk2OS03LjkwMjMtNTMuMDMxLTIxLjk2OS0xNC4wNjYtMTQuMDYyLTIxLjk2OS0zMy4xNDEtMjEuOTY5LTUzLjAzMXM3LjkwMjMtMzguOTY5IDIxLjk2OS01My4wMzFjMTQuMDYyLTE0LjA2NiAzMy4xNDEtMjEuOTY5IDUzLjAzMS0yMS45NjlzMzguOTY5IDcuOTAyMyA1My4wMzEgMjEuOTY5YzE0LjA2NiAxNC4wNjIgMjEuOTY5IDMzLjE0MSAyMS45NjkgNTMuMDMxcy03LjkwMjMgMzguOTY5LTIxLjk2OSA1My4wMzFjLTE0LjA2MiAxNC4wNjYtMzMuMTQxIDIxLjk2OS01My4wMzEgMjEuOTY5elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBzdGFyID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTIwMCAxMjAwXCIsXG4gICAgW1xuICAgICAgXCJtMTA0NS4yIDQ1OS42LTI3MC01Ny42MDItMTM2LjgtMjM4LjhjLTE2LjgwMS0yOC44MDEtNTguODAxLTI4LjgwMS03NS42MDIgMGwtMTM4IDIzOC44LTI3MCA1Ny42MDJjLTMyLjM5OCA3LjE5OTItNDUuNjAyIDQ2LjgwMS0yNCA3MmwxODQuOCAyMDUuMi0yOC44MDEgMjczLjZjLTMuNjAxNiAzMy41OTggMzAgNTcuNTk4IDYxLjE5OSA0NC4zOThsMjUyLTExMS42IDI1MiAxMTEuNmMzMS4xOTkgMTMuMTk5IDY0LjgwMS0xMC44MDEgNjEuMTk5LTQ0LjM5OGwtMjguODAxLTI3My42IDE4NC44LTIwNS4yYzIxLjYwMi0yNS4yMDMgOS42MDE2LTY0LjgwMS0yNC03MnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgYm9tYiA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTcwMC44OCAzNjQuODh2LTk0LjMxMmMwLTEwLjUtOC40Mzc1LTE4Ljc1LTE4Ljc1LTE4Ljc1aC05OC44MTJjMS4zMTI1LTIyLjUgOS41NjI1LTk0LjY4OCA2MS41LTEyMy4xOSA1Mi42ODgtMjkuMDYyIDE0MC4yNS02LjE4NzUgMjUzLjMxIDY2LjM3NSA4LjYyNSA1LjYyNSAyMC4yNSAzLjE4NzUgMjUuODc1LTUuNjI1IDUuNjI1LTguNjI1IDMtMjAuMjUtNS42MjUtMjUuODc1LTEyNy4xMi04MS41NjItMjI1LjM4LTEwNC40NC0yOTEuOTQtNjcuNjg4LTcwLjMxMiAzOC44MTItNzkuNSAxMjkuNzUtODAuNjI1IDE1NmgtOTljLTEwLjMxMiAwLTE4Ljc1IDguMjUtMTguNzUgMTguNzV2OTIuNDM4YzAgMC41NjI1IDAgMS4zMTI1IDAuMTg3NSAxLjg3NS0xNTMuMTkgNTUuNjg4LTI2Mi42OSAyMDIuNjktMjYyLjY5IDM3NC44MSAwIDIxOS45NCAxNzguODggMzk4LjgxIDM5OC44MSAzOTguODFzMzk5LTE3OC44OCAzOTktMzk4LjgxYzAtMTcxLjk0LTEwOS41LTMxOC43NS0yNjIuNS0zNzQuODF6bS04Mi42ODggOTAuNzVjLTkuOTM3NS0zLjE4NzUtMTUuMzc1LTEzLjY4OC0xMi4zNzUtMjMuNjI1IDMuMTg3NS05Ljc1IDEzLjY4OC0xNS4zNzUgMjMuNDM4LTEyLjE4OCAyLjgxMjUgMC45Mzc1IDI3OSA5MC43NSAyMzcuNzUgMzg1LjMxLTEuMzEyNSA5LjM3NS05LjM3NSAxNi4xMjUtMTguNTYyIDE2LjEyNS0wLjkzNzUgMC0xLjY4NzUgMC0yLjYyNS0wLjE4NzUtMTAuMzEyLTEuMzEyNS0xNy40MzgtMTAuODc1LTE1LjkzOC0yMSAzNi45MzgtMjYzLjYyLTIwMS41Ni0zNDEuMjUtMjExLjY5LTM0NC40NHpcIixcbiAgICAgIFwibTg5My4yNSAyNDQuODgtMzAuNTYyIDI5LjI1Yy0zLjU2MjUgMy41NjI1LTguMjUgNS4yNS0xMi45MzggNS4yNS00Ljg3NSAwLTkuOTM3NS0xLjg3NS0xMy41LTUuODEyNS03LjMxMjUtNy41LTYuOTM3NS0xOS4zMTIgMC41NjI1LTI2LjQzOGwzMC41NjItMjkuMjVjNy41LTcuMzEyNSAxOS41LTYuOTM3NSAyNi42MjUgMC41NjI1czYuNzUgMTkuMzEyLTAuNzUgMjYuNDM4elwiLFxuICAgICAgXCJtOTU4LjMxIDgzLjI1LTYuNzUgNDEuNjI1Yy0xLjMxMjUgOS4zNzUtOS4zNzUgMTUuNzUtMTguMzc1IDE1Ljc1LTAuOTM3NSAwLTIuMDYyNSAwLTMtMC4xODc1LTEwLjMxMi0xLjY4NzUtMTcuMjUtMTEuMjUtMTUuNTYyLTIxLjM3NWw2Ljc1LTQxLjgxMmMxLjY4NzUtMTAuMzEyIDExLjQzOC0xNy4yNSAyMS41NjItMTUuNTYyczE3LjA2MiAxMS4yNSAxNS4zNzUgMjEuNTYyelwiLFxuICAgICAgXCJtMTAyOC40IDI0OS45NGMtMy41NjI1IDQuNS05IDYuOTM3NS0xNC42MjUgNi45Mzc1LTQuMTI1IDAtOC4yNS0xLjMxMjUtMTEuNjI1LTQuMTI1bC0zMy0yNi40MzhjLTguMDYyNS02LjU2MjUtOS4zNzUtMTguMzc1LTIuODEyNS0yNi40MzggNi4zNzUtOC4wNjI1IDE4LjE4OC05LjM3NSAyNi4yNS0yLjgxMjVsMzMgMjYuNDM4YzguMDYyNSA2LjU2MjUgOS4zNzUgMTguMzc1IDIuODEyNSAyNi40Mzh6XCIsXG4gICAgICBcIm0xMDIzLjYgMTU1LjA2LTM4LjQzOCAxNy44MTJjLTIuNDM3NSAxLjEyNS01LjI1IDEuNjg3NS03Ljg3NSAxLjY4NzUtNi45Mzc1IDAtMTMuODc1LTQuMTI1LTE3LjA2Mi0xMC44NzUtNC4zMTI1LTkuMzc1LTAuMTg3NS0yMC42MjUgOS4xODc1LTI0LjkzOGwzOC40MzgtMTcuODEyYzkuMzc1LTQuMzEyNSAyMC42MjUtMC4xODc1IDI0LjkzOCA5LjE4NzVzMC4xODc1IDIwLjYyNS05LjE4NzUgMjQuOTM4elwiLFxuICAgICAgXCJtOTU2LjYyIDI4NC4wNmMwLjc1IDEwLjMxMi03LjEyNSAxOS4zMTItMTcuNDM4IDE5Ljg3NS0wLjU2MjUgMC4xODc1LTAuOTM3NSAwLjE4NzUtMS4zMTI1IDAuMTg3NS05Ljc1IDAtMTgtNy42ODc1LTE4Ljc1LTE3LjYyNWwtMi44MTI1LTQyLjE4OGMtMC41NjI1LTEwLjMxMiA3LjEyNS0xOS4zMTIgMTcuNjI1LTE5Ljg3NSAxMC4zMTItMC43NSAxOS4xMjUgNy4xMjUgMTkuODc1IDE3LjQzOHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgZXhwb3J0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNjcuNjcxIDY3LjY3MVwiLFxuICAgIFtcbiAgICAgIFwiTTUyLjk0NiwyMy4zNDhINDIuODM0djZoMTAuMTEyYzMuMDA3LDAsNS4zNCwxLjUzNiw1LjM0LDIuODU4djI2LjYwNmMwLDEuMzIyLTIuMzMzLDIuODU4LTUuMzQsMi44NThIMTQuNzI0ICAgYy0zLjAwNywwLTUuMzQtMS41MzYtNS4zNC0yLjg1OFYzMi4yMDdjMC0xLjMyMiwyLjMzMy0yLjg1OCw1LjM0LTIuODU4aDEwLjExdi02aC0xMC4xMWMtNi4zNTksMC0xMS4zNCwzLjg5MS0xMS4zNCw4Ljg1OHYyNi42MDYgICBjMCw0Ljk2OCw0Ljk4MSw4Ljg1OCwxMS4zNCw4Ljg1OGgzOC4yMjNjNi4zNTgsMCwxMS4zNC0zLjg5MSwxMS4zNC04Ljg1OFYzMi4yMDdDNjQuMjg2LDI3LjIzOSw1OS4zMDUsMjMuMzQ4LDUyLjk0NiwyMy4zNDh6XCIsXG4gICAgICBcIk0yNC45NTcsMTQuOTU1YzAuNzY4LDAsMS41MzUtMC4yOTMsMi4xMjEtMC44NzlsMy43NTYtMy43NTZ2MTMuMDI4djZ2MTEuNDk0YzAsMS42NTcsMS4zNDMsMywzLDNzMy0xLjM0MywzLTNWMjkuMzQ4di02ICAgVjEwLjExN2wzLjk1OSwzLjk1OWMwLjU4NiwwLjU4NiwxLjM1NCwwLjg3OSwyLjEyMSwwLjg3OXMxLjUzNS0wLjI5MywyLjEyMS0wLjg3OWMxLjE3Mi0xLjE3MSwxLjE3Mi0zLjA3MSwwLTQuMjQybC04Ljk1Ny04Ljk1NyAgIEMzNS40OTIsMC4yOTEsMzQuNzI1LDAsMzMuOTU4LDBjLTAuMDA4LDAtMC4wMTUsMC0wLjAyMywwcy0wLjAxNSwwLTAuMDIzLDBjLTAuNzY3LDAtMS41MzQsMC4yOTEtMi4xMiwwLjg3N2wtOC45NTcsOC45NTcgICBjLTEuMTcyLDEuMTcxLTEuMTcyLDMuMDcxLDAsNC4yNDJDMjMuNDIyLDE0LjY2MiwyNC4xODksMTQuOTU1LDI0Ljk1NywxNC45NTV6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGltcG9ydCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDYxIDYxXCIsXG4gICAgW1xuICAgICAgXCJNNDkuNTYxLDE2LjQ2NEgzOS40NXY2aDEwLjExMWMzLjAwOCwwLDUuMzQxLDEuNTM1LDUuMzQxLDIuODU3djI2LjYwN2MwLDEuMzIxLTIuMzMzLDIuODU4LTUuMzQxLDIuODU4SDExLjM0ICAgYy0zLjAwNywwLTUuMzQtMS41MzctNS4zNC0yLjg1OFYyNS4zMjRjMC0xLjMyMiwyLjMzMy0yLjg1OCw1LjM0LTIuODU4aDEwLjExdi02SDExLjM0QzQuOTgxLDE2LjQ2NiwwLDIwLjM1NywwLDI1LjMyNHYyNi42MDUgICBjMCw0Ljk2OCw0Ljk4MSw4Ljg1NywxMS4zNCw4Ljg1N2gzOC4yMjNjNi4zNTcsMCwxMS4zNC0zLjg5MSwxMS4zNC04Ljg1N1YyNS4zMjRDNjAuOTAyLDIwLjM1NSw1NS45MjEsMTYuNDY0LDQ5LjU2MSwxNi40NjR6XCIsXG4gICAgICBcIk0zOS41MjksMjkuMDA0Yy0wLjc2OCwwLTEuNTM1LDAuMjk0LTIuMTIxLDAuODhsLTMuNzU2LDMuNzU1VjIwLjYxMnYtNlYzLjExN2MwLTEuNjU2LTEuMzQzLTMtMy0zcy0zLDEuMzQ0LTMsM3YxMS40OTR2NiAgIHYxMy4yM2wtMy45NTktMy45NThjLTAuNTg2LTAuNTg2LTEuMzU0LTAuODgtMi4xMjEtMC44OHMtMS41MzUsMC4yOTQtMi4xMjEsMC44OGMtMS4xNzIsMS4xNy0xLjE3MiwzLjA3LDAsNC4yNDFsOC45NTcsOC45NTcgICBjMC41ODYsMC41ODYsMS4zNTQsMC44NzcsMi4xMiwwLjg3N2MwLjAwOCwwLDAuMDE2LDAsMC4wMjMsMHMwLjAxNSwwLDAuMDIyLDBjMC43NjgsMCwxLjUzNC0wLjI5MSwyLjEyLTAuODc3bDguOTU3LTguOTU3ICAgYzEuMTcyLTEuMTcxLDEuMTcyLTMuMDcxLDAtNC4yNDFDNDEuMDY0LDI5LjI5OCw0MC4yOTgsMjkuMDA0LDM5LjUyOSwyOS4wMDR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHVuZG8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA1MTIgNTEyXCIsXG4gICAgW1xuICAgICAgXCJNMTI5LjcsNDYuNGwzNy4yLDM3LjdsLTY2LjYsNjcuMWgyNTQuNGM4Ni44LDAsMTU3LjIsNzAuNCwxNTcuMiwxNTcuMnMtNzAuNCwxNTcuMi0xNTcuMiwxNTcuMmgtNTIuNHYtNTIuNGg1Mi40IGM1Ny45LDAsMTA0LjgtNDYuOSwxMDQuOC0xMDQuOHMtNDYuOS0xMDQuOC0xMDQuOC0xMDQuOEgxMDAuNGw2Ni42LDY1LjhsLTM3LjIsMzYuOUwwLDE3Ny40TDEyOS43LDQ2LjR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHJlZG8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA1MTIgNTEyXCIsXG4gICAgW1xuICAgICAgXCJNMzgyLjMsNDYuNGwtMzcuMiwzNy43bDY2LjYsNjcuMUgxNTcuMkM3MC40LDE1MS4yLDAsMjIxLjYsMCwzMDguNHM3MC40LDE1Ny4yLDE1Ny4yLDE1Ny4yaDUyLjR2LTUyLjRoLTUyLjQgYy01Ny45LDAtMTA0LjgtNDYuOS0xMDQuOC0xMDQuOHM0Ni45LTEwNC44LDEwNC44LTEwNC44aDI1NC40bC02Ni42LDY1LjhsMzYuOSwzNi45bDEzMC0xMjguOUwzODIuMyw0Ni40elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBjaXJjbGVfcXVlc3Rpb24gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIi0wLjUgLTAuNSAyNSAyNVwiLFxuICAgIFtcbiAgICAgIFwiTTEyIDJjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHMtNC40ODYgMTAtMTAgMTAtMTAtNC40ODYtMTAtMTAgNC40ODYtMTAgMTAtMTB6bTAtMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnM1LjM3MyAxMiAxMiAxMiAxMi01LjM3MyAxMi0xMi01LjM3My0xMi0xMi0xMnptMS4yNSAxN2MwIC42OS0uNTU5IDEuMjUtMS4yNSAxLjI1LS42ODkgMC0xLjI1LS41Ni0xLjI1LTEuMjVzLjU2MS0xLjI1IDEuMjUtMS4yNWMuNjkxIDAgMS4yNS41NiAxLjI1IDEuMjV6bTEuMzkzLTkuOTk4Yy0uNjA4LS42MTYtMS41MTUtLjk1NS0yLjU1MS0uOTU1LTIuMTggMC0zLjU5IDEuNTUtMy41OSAzLjk1aDIuMDExYzAtMS40ODYuODI5LTIuMDEzIDEuNTM4LTIuMDEzLjYzNCAwIDEuMzA3LjQyMSAxLjM2NCAxLjIyNi4wNjIuODQ3LS4zOSAxLjI3Ny0uOTYyIDEuODIxLTEuNDEyIDEuMzQzLTEuNDM4IDEuOTkzLTEuNDMyIDMuNDY4aDIuMDA1Yy0uMDEzLS42NjQuMDMtMS4yMDMuOTM1LTIuMTc4LjY3Ny0uNzMgMS41MTktMS42MzggMS41MzYtMy4wMjIuMDExLS45MjQtLjI4NC0xLjcxOS0uODU0LTIuMjk3elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBnaXRodWIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIi0wLjUgLTAuNSAyNSAyNVwiLFxuICAgIFtcbiAgICAgIFwiTTEyIDBjLTYuNjI2IDAtMTIgNS4zNzMtMTIgMTIgMCA1LjMwMiAzLjQzOCA5LjggOC4yMDcgMTEuMzg3LjU5OS4xMTEuNzkzLS4yNjEuNzkzLS41Nzd2LTIuMjM0Yy0zLjMzOC43MjYtNC4wMzMtMS40MTYtNC4wMzMtMS40MTYtLjU0Ni0xLjM4Ny0xLjMzMy0xLjc1Ni0xLjMzMy0xLjc1Ni0xLjA4OS0uNzQ1LjA4My0uNzI5LjA4My0uNzI5IDEuMjA1LjA4NCAxLjgzOSAxLjIzNyAxLjgzOSAxLjIzNyAxLjA3IDEuODM0IDIuODA3IDEuMzA0IDMuNDkyLjk5Ny4xMDctLjc3NS40MTgtMS4zMDUuNzYyLTEuNjA0LTIuNjY1LS4zMDUtNS40NjctMS4zMzQtNS40NjctNS45MzEgMC0xLjMxMS40NjktMi4zODEgMS4yMzYtMy4yMjEtLjEyNC0uMzAzLS41MzUtMS41MjQuMTE3LTMuMTc2IDAgMCAxLjAwOC0uMzIyIDMuMzAxIDEuMjMuOTU3LS4yNjYgMS45ODMtLjM5OSAzLjAwMy0uNDA0IDEuMDIuMDA1IDIuMDQ3LjEzOCAzLjAwNi40MDQgMi4yOTEtMS41NTIgMy4yOTctMS4yMyAzLjI5Ny0xLjIzLjY1MyAxLjY1My4yNDIgMi44NzQuMTE4IDMuMTc2Ljc3Ljg0IDEuMjM1IDEuOTExIDEuMjM1IDMuMjIxIDAgNC42MDktMi44MDcgNS42MjQtNS40NzkgNS45MjEuNDMuMzcyLjgyMyAxLjEwMi44MjMgMi4yMjJ2My4yOTNjMCAuMzE5LjE5Mi42OTQuODAxLjU3NiA0Ljc2NS0xLjU4OSA4LjE5OS02LjA4NiA4LjE5OS0xMS4zODYgMC02LjYyNy01LjM3My0xMi0xMi0xMnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgYmFjayA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDMzMCAzMzBcIixcbiAgICBbXG4gICAgICBcIk0yNTAuNjA2LDE1NC4zODlsLTE1MC0xNDkuOTk2Yy01Ljg1Ny01Ljg1OC0xNS4zNTUtNS44NTgtMjEuMjEzLDAuMDAxICBjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTMgIEM4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNiAgQzI1NSwxNjEuMDE4LDI1My40MiwxNTcuMjAyLDI1MC42MDYsMTU0LjM4OXpcIixcbiAgICBdLFxuICAgIH50cmFuc2Zvcm09XCJzY2FsZSgtMC43NSwgMC43NSkgdHJhbnNsYXRlKC0zMzAsIDUwKVwiLFxuICApO1xuXG5sZXQgZm9yd2FyZCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDMzMCAzMzBcIixcbiAgICBbXG4gICAgICBcIk0yNTAuNjA2LDE1NC4zODlsLTE1MC0xNDkuOTk2Yy01Ljg1Ny01Ljg1OC0xNS4zNTUtNS44NTgtMjEuMjEzLDAuMDAxICBjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTMgIEM4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNiAgQzI1NSwxNjEuMDE4LDI1My40MiwxNTcuMjAyLDI1MC42MDYsMTU0LjM4OXpcIixcbiAgICBdLFxuICAgIH50cmFuc2Zvcm09XCJzY2FsZSgwLjc1LCAwLjc1KSB0cmFuc2xhdGUoMCwgNTApXCIsXG4gICk7XG5cbmxldCBleWUgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA0OCA0OFwiLFxuICAgIFtcbiAgICAgIFwiTTI0IDljLTEwIDAtMTguNTQgNi4yMi0yMiAxNSAzLjQ2IDguNzggMTIgMTUgMjIgMTUgMTAuMDEgMCAxOC41NC02LjIyIDIyLTE1LTMuNDYtOC43OC0xMS45OS0xNS0yMi0xNXptMCAyNWMtNS41MiAwLTEwLTQuNDgtMTAtMTBzNC40OC0xMCAxMC0xMCAxMCA0LjQ4IDEwIDEwLTQuNDggMTAtMTAgMTB6bTAtMTZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB0cmFzaCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDI0IDI0XCIsXG4gICAgW1xuICAgICAgXCJNMyA2djE4aDE4di0xOGgtMTh6bTUgMTRjMCAuNTUyLS40NDggMS0xIDFzLTEtLjQ0OC0xLTF2LTEwYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYxMHptNSAwYzAgLjU1Mi0uNDQ4IDEtMSAxcy0xLS40NDgtMS0xdi0xMGMwLS41NTIuNDQ4LTEgMS0xczEgLjQ0OCAxIDF2MTB6bTUgMGMwIC41NTItLjQ0OCAxLTEgMXMtMS0uNDQ4LTEtMXYtMTBjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjEwem00LTE4djJoLTIwdi0yaDUuNzExYy45IDAgMS42MzEtMS4wOTkgMS42MzEtMmg1LjMxNWMwIC45MDEuNzMgMiAxLjYzMSAyaDUuNzEyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBoYXplbG51dCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMTAwIDAgNTAwIDUwMFwiLFxuICAgIFtcbiAgICAgIFwibTQ5OS44NCAxMzAuNTFjLTkzLjM2My05My4zNjMtMjA3LjU5LTEyOS4wNi0zMDAuNjUtMzYuMDUxLTk1LjA3IDk1LjExMy0xMTYuMDcgMjEzLjE1LTYyLjU2MiAzNTAuODMgMy4xNDg0IDguMDUwOC0wLjg3NSAyOC40MzggOS41MzkxIDM4Ljg5NSAxMC40MTQgMTAuNDU3IDI5LjgzNiA1LjQ2ODggMzYuNzA3IDguMDA3OCAxMjguODQgNDcuNTEyIDI1NC44IDM3LjE4OCAzNTMuMDItNjEuMjUgOTMuMDA4LTkyLjc5NyA1Ny4zNTItMjA3LjAzLTM2LjA1NS0zMDAuNDN6bS0xMi4zODMgMTIuMzgzYzMyLjI4OSAzMi4yODkgODguNTA4IDk5LjU3NCA4NS4wOTQgMTczLjY0LTc2LjIxMS0zMy4zNC04NS45MjItODUuMTQxLTE0NC43Ny0xNDMuOTgtMzUuNDgtMzUuNDgtMTAzLjgyLTU4LjA1NS0xMTYuMDctMTE0LjYyIDY2LjAyLTQuMTk5MiAxMjkuMjQgMzguMzI0IDE3NS43NCA4NC45NjF6bTM2LjA1MSAyNzUuODljLTg3LjUgODcuNS0xOTkuOTggMTA2LjYyLTMzNC41NSA1Ni44NzUtOS4xODc1LTMuMzY3Mi0yNy4zNDQtMS4wNTA4LTMwLjYyNS0zLjkzNzUtMy44OTQ1LTMuOTM3NS0xLjU3NDItMjIuNDg4LTUuNjAxNi0zMi44NTUtNTEuNTM5LTEzMi40OC0zMi4zNzUtMjQxLjExIDU4LjYyNS0zMzIuMTEgMjUuNDE4LTI1LjM3NSA1My4xMTMtNDAuOTQ5IDgyLjc3My00Ni42OCAxMy40MzQgNjYuMDEyIDg3LjE5NSA5MC43NzcgMTIxLjUgMTI0Ljg2IDU4LjQ0OSA1OC42NzIgNjkuMDgyIDExNC4yMyAxNTQuODggMTQ5LjcxLTUuMDc0MiAyNy45MS0xOS4yNSA1Ni40MzgtNDYuOTg4IDg0LjEyOXpcIixcbiAgICAgIFwibTI3NC4wMSAzNzQuNzIgMTA4LjExLTEwOC4xMWMxLjc2OTUtMS42MTMzIDIuODA0Ny0zLjg3ODkgMi44NTk0LTYuMjczNCAwLjA1NDY4OC0yLjM5NDUtMC44NzUtNC43MDctMi41NzAzLTYuMzk4NC0xLjY5NTMtMS42OTE0LTQuMDExNy0yLjYxMzMtNi40MDYyLTIuNTUwOC0yLjM5NDUgMC4wNjY0MDYtNC42NjAyIDEuMTA1NS02LjI2NTYgMi44ODI4bC0xMDguMTEgMTA4LjA2Yy0zLjQxOCAzLjQyMTktMy40MTggOC45NjQ4IDAgMTIuMzgzczguOTYwOSAzLjQxOCAxMi4zODMgMHpcIixcbiAgICAgIFwibTQ0NS40MiAzOTkuNjFjLTAuNTIzNDQgMC4zOTQ1My01Mi45MzggNDAuNTU1LTExNS41NCA0Ni4yNDItNC44MzIgMC40Mzc1LTguMzk4NCA0LjcwNy03Ljk2MDkgOS41MzkxIDAuNDMzNTkgNC44MzIgNC43MDMxIDguMzk4NCA5LjUzNTIgNy45NjA5IDY3Ljg1NS02LjE2OCAxMjIuNS00OC4xMjUgMTI0LjY5LTQ5LjgzMiAxLjkwNjItMS4zOTQ1IDMuMTY4LTMuNSAzLjQ5NjEtNS44Mzk4IDAuMzI4MTMtMi4zMzk4LTAuMzA0NjktNC43MTA5LTEuNzUtNi41NzgxLTEuNDQ5Mi0xLjg2NzItMy41ODk4LTMuMDcwMy01LjkzNzUtMy4zMzU5LTIuMzQzOC0wLjI2MTcyLTQuNjk5MiAwLjQzMzU5LTYuNTI3MyAxLjkyOTd6XCIsXG4gICAgICBcIm0zNDQuOTMgNDEwLjY0YzIuMjYxNyA0LjI2MTcgNy41NDY5IDUuODgyOCAxMS44MTIgMy42MzI4IDM0Ljc2Mi0xOC40MzQgNjguMDE2LTM5LjU4NiA5OS40NDEtNjMuMjYyIDMuODA4Ni0yLjk4NDQgNC40NzI3LTguNDg4MyAxLjQ4ODMtMTIuMjk3LTIuOTg0NC0zLjgwNDctOC40ODgzLTQuNDY4OC0xMi4yOTMtMS40ODQ0LTMwLjY0OCAyMy4wMDQtNjMuMDMxIDQzLjU5OC05Ni44NjMgNjEuNTk4LTQuMjQyMiAyLjI4MTItNS44NDc3IDcuNTU4Ni0zLjU4NTkgMTEuODEyelwiLFxuICAgICAgXCJtMzUwIDM1Ny42MWMtMi44NDM4LTMuODk4NC04LjMwMDgtNC43NTc4LTEyLjIwNy0xLjkyNTgtMC41MjM0NCAwLjM1MTU2LTUwLjE4IDM2LjQ0NS0xMDUuNjEgNzEuMDk0LTIuMDM5MSAxLjE5NTMtMy41MDc4IDMuMTY0MS00LjA3NDIgNS40NjA5LTAuNTYyNSAyLjI5NjktMC4xNzU3OCA0LjcyMjcgMS4wNzgxIDYuNzMwNSAxLjI1MzkgMi4wMDM5IDMuMjY1NiAzLjQxNDEgNS41NzgxIDMuOTE0MSAyLjMxMjUgMC40OTYwOSA0LjcyNjYgMC4wMzkwNjIgNi42OTUzLTEuMjczNCA1Ni4wNDMtMzQuNzM4IDEwNi03MS40MDIgMTA2LjUzLTcxLjc5MyAzLjkyNTgtMi44MTY0IDQuODI0Mi04LjI4MTIgMi4wMTE3LTEyLjIwN3pcIixcbiAgICBdLFxuICApO1xuXG5sZXQgbWFnbmlmeSA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDI0IDI0IFwiLFxuICAgIFtcbiAgICAgIFwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBjaGVzdCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEwMCAxMjVcIixcbiAgICBbXG4gICAgICBcIk01Niw1NHYtNGMwLTEuMSwwLjktMiwyLTJzMiwwLjksMiwydjRjMCwxLjEtMC45LDItMiwyUzU2LDU1LjEsNTYsNTR6IE05NCwyOHYxMnYzNmMwLDMuMy0yLjcsNi02LDZIMTJjLTMuMywwLTYtMi43LTYtNiAgVjQwVjI4YzAtNS41LDQuNS0xMCwxMC0xMGg2OEM4OS41LDE4LDk0LDIyLjUsOTQsMjh6IE04NCwyMkgyNGMxLjMsMS43LDIsMy43LDIsNnYxMGg2NFYyOEM5MCwyNC43LDg3LjMsMjIsODQsMjJ6IE0xMCwzOGgxMlYyOCAgYzAtMy4zLTIuNy02LTYtNnMtNiwyLjctNiw2VjM4eiBNMTIsNzhoMTBWNDJIMTB2MzRDMTAsNzcuMSwxMC45LDc4LDEyLDc4eiBNOTAsNDJIMjZ2MzZoNjJjMS4xLDAsMi0wLjksMi0yVjQyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBzcHJvdXQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMDAgMTI1XCIsXG4gICAgW1xuICAgICAgXCJNNDguOCw2OC4yYy0yLDAuOC0xLjYsMi4yLTIuMSwyLjVjLTAuOCwwLjMtMC4xLTEtMi4xLTEuNmMtNC41LTEuNC00LDQuMy02LjUsNC4yYy0xLjctMC4xLTEuOC0wLjYtMy40LTAuNCAgYy0xLjYsMC4zLTEuMSwyLjEtMi45LDIuM2MtMS4xLDAuMS0wLjcsMS4yLTIuNCwxYy0xLjQtMC4yLTIsMS42LTIuMSwyLjdjLTAuMSwwLjgtMC4zLDEuNi0xLjYsMi4zYy0xLjIsMC43LTMuMywwLjItNC40LDEuNyAgYy0xLjYsMi0xLjcsNS4xLTEuNyw1LjFoNjAuN2MwLDAtMC4xLTIuMy0yLjYtMy45Yy0wLjctMC40LDAuMS0wLjQsMC40LTJjMC4xLTAuNiwwLTEuNS0wLjctMi42Yy0wLjktMS4zLTIuNy0wLjktMy40LTAuNyAgYzAuMi0wLjksMC4yLTItMS4yLTIuOWMtMS0wLjctMS4zLTAuMy0xLjktMC40Yy0wLjctMC4xLTAuMy0wLjgtMS0xLjJjLTEuOC0xLjEtMC41LTIuMS0zLjMtMy4yYy0xLjctMC43LTItMC42LTUuNi0wLjYgIGMtMS40LDAtMS43LTIuMy0zLjYtMS44Yy0xLjksMC42LTEuMS0wLjUtMi4yLTEuNmMtMC4zLTAuMy0wLjktMC41LTEuNS0wLjVjLTAuMS0xMC42LTAuMS0yNC41LDAuMy0yNy4yYzAuNi00LjUsNS43LTkuOCwxMy4xLTEwLjYgIGMtNyw1LjItMTAuMiw2LjctMTAuOCw5LjljLTAuNiwzLjIsNS4xLDIuNSw5LjYsMGM0LjUtMi41LDEyLjEtMTQuNiwxMi40LTE5Yy02LjQtMS42LTIyLDQuMS0yNy4xLDE2LjZDNDkuNiwyNi42LDQ3LjcsMTIsMjAuMywxMiAgYy0wLjEsMi42LDAuNiwyLjksMS45LDYuMWMxLjMsMy4yLDkuOSwxOC4xLDIwLjcsMTcuNWMxLjYtMC4xLTAuMy0zLjgtMi45LTYuOGMwLDAtNi40LTUuOS04LjMtNy41YzYuNCwyLjUsMTYuMiw5LjksMTcsMTUuMyAgYzAuNSwzLjUsMC40LDIwLjIsMC4yLDMxLjdDNDksNjguMiw0OC45LDY4LjIsNDguOCw2OC4yelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB4ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIyOTUwIDEwMDAgNDUwIDQ1MFwiLFxuICAgIFtcbiAgICAgIFwiTTMzODIuODQgNzg0LjMgMzQ2Mi40MyA4NjIuODI5IDM1NDAuOTYgNzgzLjIzOCAzNjAxLjIzIDg0Mi43MDQgMzUyMi43IDkyMi4yOTUgMzYwMi4yOSAxMDAwLjgyIDM1NDIuODIgMTA2MS4wOSAzNDYzLjIzIDk4Mi41NjYgMzM4NC43IDEwNjIuMTYgMzMyNC40MyAxMDAyLjY5IDM0MDIuOTYgOTIzLjEgMzMyMy4zNyA4NDQuNTdaXCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGJhY2twYWNrID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTAwMCAxMDAwXCIsXG4gICAgW1xuICAgICAgXCJtOTAyLjA5IDc2OS41NWMwLjMzNTk0LTM1LjE0OCAwLjIwMzEyLTExMi4yOS01LjkxNDEtMTg4LjUyIDAuNTM5MDYgMzIuMTI1IDEuMzc4OSA2MS41MjMgMi40NzI3IDc2LjkwNiAwLjYwOTM4IDguODI0MiAxLjk1MzEgNTUuMDIzIDMuNDQxNCAxMTEuNjF6XCIsXG4gICAgICBcIm02MDguMTQgMTA4LjQ1YzEuMDQzLTI0LjY5NS0wLjI4OTA2LTUxLjE0NSAyMC42NDEtNDkuNjMzIDEwLjA0MyAwLjczMDQ3IDI3LjM0OCAzLjI4OTEgNDguNzU4IDcuNTcwMyAyMy43MzQgNC43NTM5IDIwLjM4NyAxMzMuNDUgMjAuMzg3IDEzMy40NWw4Ni4wNTEgMzMuNDU3YzIuODMyLTkzLjEzMy0yMC40NDktMjAxLjI4LTQzLjY4LTIwNy45LTM4LjkzLTExLjEwMi05Ni4wNTktMzQuMjQ2LTE1Mi44My0yMS44MjgtMzcuOTM0IDguMjkzLTQ4LjA4NiAxNDcuNTUtNDguMDg2IDE0Ny41NWw2Ni4zODMgMTcuMzg3YzAuMDAzOTA2IDAgMC42OTkyMi0yMC41NDMgMi4zNzg5LTYwLjA1OXpcIixcbiAgICAgIFwibTIwNy43NiA1NzkuMmMxMy45OCA1LjE3MTkgMzcuMDIgMTIuNzcgNjQuMjk3IDIxLjMyNCAyMC4zODctNTYuNDYxIDU0Ljk2MS05OS41MjcgNTQuOTYxLTk5LjUyN3M3Ljk4MDUtMjAuOTE0IDQ4LjA3LTEyLjQ5MmM0MC4wOTQgOC40MTAyIDQxLjk2NSAyNi43MTEgNDEuOTY1IDI2LjcxMXMtMjUuOTY5IDQyLjA5OC01MS4yMTUgOTguODMyYy0xLjU1ODYgMy41MDM5LTMuNjEzMyA3Ljg1OTQtNS4xNzE5IDEzLjIyMyA2My41NjIgMTguNTI3IDEyNC45OCAzNC45MzQgMTQyLjY0IDM2LjUzOSAzNC43NjYgMy4xNzk3IDEyMi4wOSA2Ljk5NjEgMTM4LjY4LTc3LjAzOSAxNi4zNjctODIuOTM0IDMyLjU2Ni0xMzMuNTIgNDYuMzY3LTE2NS4xMSAyLjc2MTctNi44OTg0IDUuMjQyMi0xMi42MTMgNy4wNjY0LTE2LjczOCAzLjc1NzgtOC40OTYxIDE1LjE5MS0yNS41MzUgMzEuODI0LTQyLjIzOHYtMC4wMjM0MzhjMC4wNDY4NzUtMC4xMjEwOSAwLjEyMTA5LTAuMTc5NjkgMC4yMTQ4NC0wLjIwMzEyIDIyLjIyMy0yMi4xOTkgNTMuNjY0LTQzLjcwMyA4OC43NjYtNDMuNTcgMS44NDc3IDAgNC4xMDU1IDAuMjI2NTYgNi42MTMzIDAuNjEzMjgtMjAuNjUyLTIyLjk2OS00NC4xODQtNDIuNTI3LTY5LjIzOC01Mi4xODgtNS42OTkyLTIuMTk1My0yMTIuNjItODMuOTc3LTI3NC40NC03NS4yMjctMS43NzczIDAuMjUzOTEtMy40MzM2IDAuNDkyMTktNS4wMjczIDAuNzE4NzUgMy0wLjQzMzU5IDUuMDI3My0wLjcxODc1IDUuMDI3My0wLjcxODc1LTAuMDAzOTA3LTAuMDAzOTA2LTE0MS43MyAzLjUxMTctMjM1LjQ1IDk3LjE1Ni00OC45NjEgNDguOTEtOTEuOTQ1IDEzNi42Ni0xMTguOTMgMjIwLjk3LTAuMzQ3NjYgMjEuMzk4IDI2Ljk1MyA0OC4yNzcgODIuOTggNjguOTg4elwiLFxuICAgICAgXCJtNDg0LjM1IDcyNi42NGMtMjcuODYzLTUuMTEzMy03OS42MjEtMTkuMjk3LTEzNC43OS0zNS42MDUtOC4zOTg0IDMzLjIyNy0xLjI2MTcgOTAuMzAxLTEuMjYxNyA5MC4zMDFzLTEwLjg0OCAyNS44OTUtNTMuNjA1IDE2LjQzYy0zNi40MzQtOC4wODk4LTM1LjQ5Ni0zNC4zNzktMzUuNDk2LTM0LjM3OXMtOS4zMTI1LTUzLjM1Mi0xLjEwNTUtMTAwLjMxYy01Mi41MTItMTYuNTM1LTk3LjEyOS0zMS4zNzktMTEzLjU0LTM3LjY4LTE5Ljc1NC03LjU1ODYtMzMuOTk2LTE4LjA5OC00NC4yNTgtMjkuODY3LTAuNzU3ODEgNC42NjgtMS40Mjk3IDIzLjUyLTIuMDYyNSAyOC4wMDgtMzcuMjE5IDI2NS4xIDQwLjAzNSAzNzkuMjcgNDUuNTA4IDQwMy4zOCA3LjM1NTUgMzIuNDEgMTQ4LjU3IDEwMC4zNyAyODQuODkgMTUwLjE2IDc5LjA3OCAyOC44ODMgMTY3LjM2IDIzLjI4MSAyMDIuNDMgMjAuNzYybDIuNTY2NC0wLjE0NDUzYzUuNTc4MS0xMDIuNSAyMC43NzMtMzY5LjMyIDI4LjIyMy01MzIuNjEtMTEuODA1IDU5Ljk1My0xMTAuNzkgNzMuNzc3LTE3Ny41IDYxLjU2MnpcIixcbiAgICAgIFwibTkwMi4wOSA3NjkuNTVjLTEuNDg4My01Ni41OTQtMi44MjAzLTEwMi43Ny0zLjQ0NTMtMTExLjY0LTEuMDkzOC0xNS4zNTktMS45MzM2LTQ0Ljc2Mi0yLjQ3MjctNzYuODk1LTUuNDYwOS02Ny44NzEtMjIuOTU3LTE0MC43Mi0zNy45MjItMTc4LjU5LTI1LjE1Mi02My43NDItOTguMTk1IDE2LjIxMS0xMTguODIgNjYuNTUxLTIxLjM1OSA1Mi4xMjktNDEuNTc4IDY1My4wMy00My41NDcgNzEyLjYgNTEtMTMuMjg1IDEyNC4wNS0zMi4zNTIgMTMzLjAxLTQ2LjQwMiAxOC45NzMtMjkuNzExIDI5LjI1OC01OC40NzcgMzMuOTk2LTgyLjk2OSAzLjE0NDUtMTYuMzA5IDQ1LjMyNC0zMS41NTkgNDUuMzI0LTMxLjU1OXMtMi45ODgzLTEyOS42LTUuNjg3NS0yMzQuMTlsLTAuNzQyMTkgMi43NjE3YzAgMC4wMTk1MzEgMC4yMDMxMi03LjE5MTQgMC4zMTI1LTE5LjY3MnpcIixcbiAgICAgIFwibTEwODkuMSA1MDguMjVzLTEwLjgxMi0xMjguNzktMTMuMjYyLTE1My44MmMtNS45Mjk3LTYwLjQ0NS02MC40NTctMjU0Ljg0LTI0Ni4zMS0xMDUuOWw0OS4yMzQgNTMuNzExczEyNS45NS0xMTMuMTggMTMwLjcgMTU2LjVjMC4zOTQ1MyAyMi44MjQgMS45MDYyIDU0LjcwNyAxNS42MzcgMjQ2LjU5IDE1LjE5MSAyMTIuMTUtNjcuNzc3IDIxMy4zMi02Ny43NzcgMjEzLjMybDMuNzQyMiA5MC4yMTVzMzAuODE2LTguMDYyNSA2Mi42NDEtMjEuNDU3YzQ1LjAzNS0xOC45NzMgODguMTg4LTk4LjM3NSA4OC4xODgtMjE0Ljc3LTAuMDM5MDYyLTQ2LjA1MS0yMi43OTMtMjY0LjQxLTIyLjc5My0yNjQuNDF6XCIsXG4gICAgICBcIm00MzguMjUgMTQ4LjE4IDQxLjA5LTYuMzEyNXYtMzQuNzczbDcuOTA2Mi0yOC40NDFzLTM3Ljk0NSAxNy4zODctNDguOTk2IDM0Ljc2NmMtMTEuMDYyIDE3LjM4Ny0xNS44MTYgMjYuODY3LTE1LjgxNiAzNC43NjYgMCA3LjkwNjIgMTUuODE2LTAuMDAzOTA3IDE1LjgxNi0wLjAwMzkwN3pcIixcbiAgICBdLFxuICApO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCBzZXR0aW5nc19tb2RhbCA9ICh+aW5qZWN0LCBzZXR0aW5nczogQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCkgPT4ge1xuICBsZXQgbW9kYWwgPSBkaXYofmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLW1vZGFsXCIpXSkpO1xuICBsZXQgc2V0dGluZyA9IChpY29uLCBuYW1lLCBjdXJyZW50LCBhY3Rpb246IFVwZGF0ZUFjdGlvbi5zZXR0aW5nc19hY3Rpb24pID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLXRvZ2dsZVwiKV0pLFxuICAgICAgW1xuICAgICAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1uYW1lLCBpY29uLCBjdXJyZW50LCBfID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoYWN0aW9uKSlcbiAgICAgICAgKSxcbiAgICAgICAgdGV4dChuYW1lKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgW1xuICAgIG1vZGFsKFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLW1vZGFsLXRvcFwiKV0pLFxuICAgICAgICBbXG4gICAgICAgICAgV2lkZ2V0cy5idXR0b24oSWNvbnMueCwgXyA9PlxuICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoRXZhbHVhdGlvbihTaG93U2V0dGluZ3MpKSlcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwiaFwiLFxuICAgICAgICBcInNob3cgZnVsbCBzdGVwIHRyYWNlXCIsXG4gICAgICAgIHNldHRpbmdzLnN0ZXBwZXJfaGlzdG9yeSxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93UmVjb3JkKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcInxcIixcbiAgICAgICAgXCJzaG93IGNhc2UgY2xhdXNlc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Q2FzZUNsYXVzZXMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwizrtcIixcbiAgICAgICAgXCJzaG93IGZ1bmN0aW9uIGJvZGllc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2ZuX2JvZGllcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Rm5Cb2RpZXMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwieFwiLFxuICAgICAgICBcInNob3cgZml4cG9pbnRzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfZml4cG9pbnRzLFxuICAgICAgICBFdmFsdWF0aW9uKFNob3dGaXhwb2ludHMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFVuaWNvZGUuY2FzdEFycm93U3ltLFxuICAgICAgICBcInNob3cgY2FzdHNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19jYXN0cyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Q2FzdHMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwi8J+UjVwiLFxuICAgICAgICBcInNob3cgbG9va3VwIHN0ZXBzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzLFxuICAgICAgICBFdmFsdWF0aW9uKFNob3dMb29rdXBzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIuKPr++4j1wiLFxuICAgICAgICBcInNob3cgc3RlcHBlciBmaWx0ZXJzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfc3RlcHBlcl9maWx0ZXJzLFxuICAgICAgICBFdmFsdWF0aW9uKFNob3dGaWx0ZXJzKSxcbiAgICAgICksXG4gICAgXSksXG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc18oXCJtb2RhbC1iYWNrXCIpLFxuICAgICAgICAgIEF0dHIub25fbW91c2Vkb3duKF8gPT5cbiAgICAgICAgICAgIGluamVjdChVcGRhdGUuU2V0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICBbXSxcbiAgICApLFxuICBdO1xufTtcblxubGV0IHN0ZXBwZXJfdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+cmVzdWx0X2tleSxcbiAgICAgIHN0ZXBwZXI6IFN0ZXBwZXIudCxcbiAgICApID0+IHtcbiAgbGV0IGJ1dHRvbl9iYWNrID1cbiAgICBXaWRnZXRzLmJ1dHRvbl9kKFxuICAgICAgSWNvbnMudW5kbyxcbiAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU3RlcHBlckFjdGlvbihyZXN1bHRfa2V5LCBTdGVwQmFja3dhcmQpKSxcbiAgICAgIH5kaXNhYmxlZD1TdGVwcGVyLnVuZG9fcG9pbnQofnNldHRpbmdzLCBzdGVwcGVyLnByZXZpb3VzKSA9PSBOb25lLFxuICAgICAgfnRvb2x0aXA9XCJTdGVwIEJhY2t3YXJkc1wiLFxuICAgICk7XG4gIGxldCAoaGlkZGVuLCBwcmV2aW91cykgPVxuICAgIGlmIChzZXR0aW5ncy5zdGVwcGVyX2hpc3RvcnkpIHtcbiAgICAgIFN0ZXBwZXIuZ2V0X2hpc3RvcnkofnNldHRpbmdzLCBzdGVwcGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgKFtdLCBbXSk7XG4gICAgfTtcbiAgbGV0IGRoX2NvZGVfY3VycmVudCA9IGQgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wicmVzdWx0XCJdKSxcbiAgICAgIFtcbiAgICAgICAgREhDb2RlLnZpZXcoXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2U9Tm9uZSxcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH53aWR0aD04MCxcbiAgICAgICAgICB+cHJldmlvdXNfc3RlcD1cbiAgICAgICAgICAgIHByZXZpb3VzXG4gICAgICAgICAgICB8PiBMaXN0Lm50aF9vcHQoXywgMClcbiAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IFN0ZXBwZXIuc3RlcF93aXRoX3ByZXZpb3VzKSA9PiB4LnN0ZXApLFxuICAgICAgICAgIH5uZXh0X3N0ZXBzPVN0ZXBwZXIuZ2V0X25leHRfc3RlcHMoc3RlcHBlciksXG4gICAgICAgICAgfmhpZGRlbl9zdGVwcz1oaWRkZW4sXG4gICAgICAgICAgfnJlc3VsdF9rZXksXG4gICAgICAgICAgZCxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgbGV0IGRoX2NvZGVfcHJldmlvdXMgPSAoc3RlcF93aXRoX3ByZXZpb3VzOiBTdGVwcGVyLnN0ZXBfd2l0aF9wcmV2aW91cykgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wicmVzdWx0XCJdKSxcbiAgICAgIFtcbiAgICAgICAgREhDb2RlLnZpZXcoXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2U9Tm9uZSxcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH53aWR0aD04MCxcbiAgICAgICAgICB+cHJldmlvdXNfc3RlcD1zdGVwX3dpdGhfcHJldmlvdXMucHJldmlvdXMsXG4gICAgICAgICAgfmNob3Nlbl9zdGVwPVNvbWUoc3RlcF93aXRoX3ByZXZpb3VzLnN0ZXApLFxuICAgICAgICAgIH5oaWRkZW5fc3RlcHM9c3RlcF93aXRoX3ByZXZpb3VzLmhpZGRlbixcbiAgICAgICAgICB+cmVzdWx0X2tleSxcbiAgICAgICAgICBzdGVwX3dpdGhfcHJldmlvdXMuc3RlcC5kLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICApO1xuICBsZXQgaGlkZV9zdGVwcGVyID1cbiAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1cIlNob3cgU3RlcHBlclwiLCBcInNcIiwgdHJ1ZSwgXyA9PlxuICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5Ub2dnbGVTdGVwcGVyKHJlc3VsdF9rZXkpKVxuICAgICk7XG4gIGxldCBzaG93X2hpc3RvcnkgPVxuICAgIFdpZGdldHMudG9nZ2xlKH50b29sdGlwPVwiU2hvdyBIaXN0b3J5XCIsIFwiaFwiLCBzZXR0aW5ncy5zdGVwcGVyX2hpc3RvcnksIF8gPT5cbiAgICAgIGluamVjdChTZXQoRXZhbHVhdGlvbihTaG93UmVjb3JkKSkpXG4gICAgKTtcbiAgbGV0IGV2YWxfc2V0dGluZ3MgPVxuICAgIFdpZGdldHMuYnV0dG9uKEljb25zLmdlYXIsIF8gPT4gaW5qZWN0KFNldChFdmFsdWF0aW9uKFNob3dTZXR0aW5ncykpKSk7XG4gIGxldCBjdXJyZW50ID1cbiAgICBzd2l0Y2ggKHN0ZXBwZXIuY3VycmVudCkge1xuICAgIHwgU3RlcHBlck9LKGQsIF8pID0+XG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIiwgXCJjZWxsLXJlc3VsdFwiXSksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJlcXVpdlwiKSwgW05vZGUudGV4dChcIuKJoVwiKV0pLFxuICAgICAgICAgIGRoX2NvZGVfY3VycmVudChkKSxcbiAgICAgICAgICBidXR0b25fYmFjayxcbiAgICAgICAgICBldmFsX3NldHRpbmdzLFxuICAgICAgICAgIHNob3dfaGlzdG9yeSxcbiAgICAgICAgICBoaWRlX3N0ZXBwZXIsXG4gICAgICAgIF0sXG4gICAgICApXG4gICAgLy8gVE9ET1tNYXR0XTogc2hvdyBlcnJvcnMgYW5kIHdhaXRpbmdcbiAgICB8IFN0ZXBUaW1lb3V0XG4gICAgfCBTdGVwUGVuZGluZyhfLCBfLCBfKSA9PiBkaXYoW10pXG4gICAgfTtcblxuICBsZXQgcHJldmlvdXNfc3RlcCA9IChzdGVwOiBTdGVwcGVyLnN0ZXBfd2l0aF9wcmV2aW91cykgPT4ge1xuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIiwgXCJjZWxsLXJlc3VsdFwiXSksXG4gICAgICBbXG4gICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgIGRoX2NvZGVfcHJldmlvdXMoc3RlcCksXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wic3RlcHBlci1qdXN0aWZpY2F0aW9uXCJdKSxcbiAgICAgICAgICBbTm9kZS50ZXh0KFN0ZXBwZXIuZ2V0X2p1c3RpZmljYXRpb24oc3RlcC5zdGVwLmtuZCkpXSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcbiAgbGV0IG5vZGVzX3ByZXZpb3VzID0gTGlzdC5tYXAocHJldmlvdXNfc3RlcCwgcHJldmlvdXMpO1xuICBMaXN0LmZvbGRfbGVmdCgoeCwgeSkgPT4gTGlzdC5jb25zKHksIHgpLCBbY3VycmVudF0sIG5vZGVzX3ByZXZpb3VzKVxuICBAIChzZXR0aW5ncy5zaG93X3NldHRpbmdzID8gc2V0dGluZ3NfbW9kYWwofmluamVjdCwgc2V0dGluZ3MpIDogW10pO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gRWRpdG9ycztcbmxldCBpbWcgPSBjcmVhdGUoXCJpbWdcIik7XG5cbmxldCBzbGlkZSA9IChoZWFkZXIsIGNvbnRlbnQpID0+XG4gIGRpdihcbiAgICB+a2V5PVwic2xpZGVcIixcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInNsaWRlXCIpLFxuICAgIFtcbiAgICAgIGgxKH5rZXk9XCJoZWFkZXJcIiwgfmF0dHI9QXR0ci5jbGFzc18oXCJzbGlkZS1oZWFkZXJcIiksIFt0ZXh0KGhlYWRlcildKSxcbiAgICAgIGRpdih+a2V5PVwiY29udGVudFwiLCB+YXR0cj1BdHRyLmNsYXNzXyhcInNsaWRlLWNvbnRlbnRcIiksIGNvbnRlbnQpLFxuICAgIF0sXG4gICk7XG5cbmxldCBjb2RlID0gY29udGVudCA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKFwiY29kZVwiKSwgW3RleHQoY29udGVudCldKTtcblxubGV0IGVtID0gY29udGVudCA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKFwiZW1cIiksIFt0ZXh0KGNvbnRlbnQpXSk7XG5cbmxldCBnZXRfY29udGVudCA9XG4gIGZ1blxuICB8IERvY3VtZW50YXRpb24oXCJQcm9ncmFtbWluZyBFeHByZXNzaXZlbHlcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiUHJvZ3JhbW1pbmcgRXhwcmVzc2l2ZWx5XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiWW91IG1pZ2h0IG5vdCBoYXZlIHJlYWxpemVkIGl0LCBidXQgeW91IHdyb3RlIHlvdXJcbiAgICAgIGZpcnN0IGNvbXB1dGVyIHByb2dyYW1zIGluIGdyYWRlIHNjaG9vbCBpbiB0aGUgZm9ybSBvZlxuICAgICAgYXJpdGhtZXRpYyBleHByZXNzaW9ucyFcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiRm9yIGV4YW1wbGUsIGVudGVyIHRoZSBwcm9ncmFtIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyICsgMlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGluIHRoZSBleHByZXNzaW9uIGVkaXRvciBiZWxvdy5cbiAgICAgICAgICAgICAgSGF6ZWwgb3BlcmF0ZXMgbGlrZSBhIGNhbGN1bGF0b3IsIGNvbXB1dGluZyB0aGUgdmFsdWUgb2YgeW91ciBleHByZXNzaW9uIGJ5IGVxdWF0aW9uYWxseSBzaW1wbGlmeWluZyBpdCAoaS5lLiBldmFsdWF0aW5nIGl0KSwgaGVyZSB0byB0aGUgaW50ZWdlciB2YWx1ZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiNFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIFwiKSxcbiAgICAgICAgICAgIHRleHQoXCJUaGUgc3ltYm9sIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCLiiaFcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGlzIHByb25vdW5jZWQgXFxcImlzIGVxdWl2YWxlbnQgdG9cXFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wb3NpbmcgQXJpdGhtZXRpYyBFeHByZXNzaW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb21wb3NpbmcgQXJpdGhtZXRpYyBFeHByZXNzaW9uc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiQXJpdGhtZXRpYyBleHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQgXCIpLFxuICAgICAgICAgICAgZW0oXCJjb21wb3NpdGlvbmFsbHlcIiksXG4gICAgICAgICAgICB0ZXh0KFwiOiBieSBjb21iaW5pbmcgc21hbGxlciBleHByZXNzaW9ucyB1c2luZyB2YXJpb3VzIFwiKSxcbiAgICAgICAgICAgIGVtKFwib3BlcmF0b3JzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgbGlrZSBhZGRpdGlvbiAoXCIpLFxuICAgICAgICAgICAgY29kZShcIitcIiksXG4gICAgICAgICAgICB0ZXh0KFwiKSBhbmQgbXVsdGlwbGljYXRpb24gKFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIqXCIpLFxuICAgICAgICAgICAgdGV4dChcIiksIFwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIHRvIGZvcm0gbGFyZ2VyIGV4cHJlc3Npb25zLiBUaGUgc21hbGxlc3QgYXJpdGhtZXRpYyBleHByZXNzaW9ucyBhcmUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW0oXCJudW1iZXIgbGl0ZXJhbHNcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGxpa2UgXCIpLFxuICAgICAgICAgICAgY29kZShcIjJcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGFuZCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiNDJcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJGb3IgZXhhbXBsZSwgZW50ZXIgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgKiAzICsgNCAqIDVcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpbiB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3csIG9ic2VydmluZyB0aGF0IGl0cyB2YWx1ZSBpcyBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiMjZcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIFRoZSByZWFzb24gaXMgYmVjYXVzZSBvZiB0aGUgZmFtaWxpYXIgb3JkZXIgb2Ygb3BlcmF0aW9uczogbXVsdGlwbGljYXRpb24gcHJlY2VkZXMgYWRkaXRpb24uXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgQnkgcnVubmluZyB5b3VyIGN1cnNvciB0aHJvdWdoIHRoaXMgcHJvZ3JhbSwgb2JzZXJ2ZSBob3cgSGF6ZWwncyBjdXJzb3IgZGVjb3JhdGlvbnMgZGVtb25zdHJhdGUgdGhpcyBvcmRlciBvZiBvcGVyYXRpb25zIGJ5IGdyb3VwaW5nIHRvZ2V0aGVyIHRoZSBvcGVyYW5kcyBvZiBlYWNoIG9wZXJhdG9yLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wdXRpbmcgRXF1YXRpb25hbGx5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbXB1dGluZyBFcXVhdGlvbmFsbHlcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIlRvIHByb3ZlIHRoYXQgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgKiAzICsgNCAqIDUg4omhIDI2XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW4gZ3JhZGUgc2Nob29sLCB3ZSB3b3VsZCBoYXZlIHdyaXR0ZW4gb3V0IGEgc2VyaWVzIG9mIGVxdWF0aW9uYWwgc3RlcHMsIGVhY2ggc2ltcGxpZnlpbmcgdGhlIGV4cHJlc3Npb24gZnJvbSB0aGUgcHJldmlvdXMgc3RlcCBieSBwZXJmb3JtaW5nIG9uZSBlbGVtZW50YXJ5IGFyaXRobWV0aWMgY29tcHV0YXRpb24gYXQgYSB0aW1lLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiVXNlIEhhemVsJ3Mgc3RlcHBlciBieSBjbGlja2luZyB0aGUgYnV0dG9uIHRvIHRoZSByaWdodCBvZiB0aGUgcmVzdWx0IGJlbG93IGFuZCBpbnRlcmFjdGl2ZWx5IHByb3ZlIHRoYXQgb3VyIGV2YWx1YXRpb24gdG8gXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjI2XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaXMgY29ycmVjdCBvbmUgZWxlbWVudGFyeSBhcml0aG1ldGljIHN0ZXAgYXQgYSB0aW1lLiBUaGlzIHByb29mIGlzIHRoZSBlc3NlbmNlIG9mIGNvbXB1dGF0aW9uIVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJWYXJpYWJsZXNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiVmFyaWFibGVzXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiQXMgaXQgdHVybnMgb3V0LCB5b3UgY2FuIGVucmljaCBhcml0aG1ldGljIGV4cHJlc3Npb25zIHRvIGdvIGZyb20gc2ltcGxlIGludGVnZXIgY29tcHV0YXRpb25zIHRvIGdlbmVyYWwtcHVycG9zZSBjb21wdXRhdGlvbnMhIE92ZXIgdGhlIG5leHQgc2V2ZXJhbCBzbGlkZXMsIHdlIHdpbGwgc2VlIGhvdyB0aGlzIHdvcmtzLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiT3VyIGZpcnN0IHN0ZXAgaXMgdG8gaW50cm9kdWNlIGEgd2F5IHRvIGFiYnJldmlhdGUgZXhwcmVzc2lvbnMgdXNpbmcgdmFyaWFibGVzLiBUeXBlIHRoZSBleHByZXNzaW9uIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJsZXQgeCA9IDIgKiAzIGluIHggKyAxXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW50byB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3csIG9ic2VydmluZyB0aGF0IGl0IGV2YWx1YXRlcyB0byBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiN1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIFlvdSBjYW4gaW5zZXJ0IGEgbmV3IGxpbmUgYWZ0ZXIgdGhlIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJpblwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGtleXdvcmQgdG8gbWFrZSB0aGUgcHJvZ3JhbSBtb3JlIGlkaW9tYXRpYyAoaS5lLiByZWFkYWJsZSkuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgYXJlIGdpdmVuIGNvbXB1dGF0aW9uYWwgbWVhbmluZyBzaW1wbHkgYnkgc3Vic3RpdHV0aW9uLiBVc2UgdGhlIHN0ZXBwZXIgdG8gc2VlIGhvdyB0aGlzIHdvcmtzLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wb3NpdGlvbmFsaXR5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbXBvc2l0aW9uYWxpdHlcIixcbiAgICAgICAgW1xuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIkxldCBleHByZXNzaW9ucyBhcmUgZXhwcmVzc2lvbnMsIGp1c3QgbGlrZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLiBBcyB3ZSBkaXNjdXNzZWQgZWFybGllciwgZXhwcmVzc2lvbnMgYXJlIGNvbnN0cnVjdGVkIGNvbXBvc2l0aW9uYWxseSwgc28gd2UgY2FuIGV2ZW4gbWFrZSBhIGxldCBleHByZXNzaW9uIGFuIG9wZXJhbmQgb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvci5cIixcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlNjb3BlXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlNjb3BlXCIsXG4gICAgICAgIFtcbiAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgXCJUaGUgc2NvcGUgb2YgYSB2YXJpYWJsZSBpcyB0aGUgZXhwcmVzc2lvbihzKSBvZiB0aGUgcHJvZ3JhbSB3aGVyZSBpdCBpcyBhdmFpbGFibGUgZm9yIHVzZS4gRm9yIGxldCBleHByZXNzaW9ucywgdGhlIHN1Yi1leHByZXNzaW9uIHRoYXQgZm9sbG93cyB0aGUgXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjb2RlKFwiaW5cIiksXG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiIGtleXdvcmQgaGFzIHRoZSB2YXJpYWJsZSBib3VuZCBieSB0aGUgbGV0IGV4cHJlc3Npb24gaW4gc2NvcGUuIEhhemVsJ3MgZXhwcmVzc2lvbiBkZWNvcmF0aW9ucyBzaG93IHlvdSB3aGVyZSB0aGUgc2NvcGUgb2YgdGhlIHZhcmlhYmxlIHdpbGwgZW5kLlwiLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiU2hhZG93aW5nXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlNoYWRvd2luZ1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIk9uY2UgYSB2YXJpYWJsZSBpcyBkZWZpbmVkLCBpdCBjYW5ub3QgYmUgY2hhbmdlZC4gVGhlcmUgaXMgbm8gYXNzaWdubWVudCBvcGVyYXRvciBpbiBsYW5ndWFnZXMgYmFzZWQgb24gcHVyZSBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbnMsIHdoZXJlIHZhcmlhYmxlcyBhcmUgZ2l2ZW4gbWVhbmluZyBieSBzdWJzdGl0dXRpb24sIGxpa2UgSGF6ZWwuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIFwiKSxcbiAgICAgICAgICAgIGVtKFwibmV3IHZhcmlhYmxlXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgdGhhdCBzaGFyZXMgdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlLiBIb3dldmVyLCB0aGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcmVmZXIgdG8gdGhlIHByZXZpb3VzIGJpbmRpbmcgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgbmV3IGJpbmRpbmc7IHdlIHNheSB0aGF0IHZhcmlhYmxlIGhhcyBiZWVuIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtKFwic2hhZG93ZWRcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJCb29sZWFucyBhbmQgVHlwZXNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQm9vbGVhbnMgYW5kIFR5cGVzXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiU28gZmFyLCB3ZSBoYXZlIG9ubHkgc2VlbiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIGludGVnZXJzLiBIb3dldmVyLCBIYXplbCBzdXBwb3J0cyBtYW55IG90aGVyIHR5cGVzIG9mIHZhbHVlcywgbGlrZSBib29sZWFucy4gVGhlcmUgYXJlIHR3byBib29sZWFuIHZhbHVlcywgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcInRydWVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGFuZCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiZmFsc2VcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiSGF6ZWwncyB0eXBlIHN5c3RlbSBlbnN1cmVzIHRoYXQgZXhwcmVzc2lvbnMgYXJlIHVzZWQgaW4gd2F5cyB0aGF0IG1ha2Ugc2Vuc2UuIEVhY2ggZXhwcmVzc2lvbiBoYXMgYSB0eXBlLCB3aGljaCBwcmVkaWN0cyB0aGUgdHlwZSBvZiBpdHMgdmFsdWUuIFRoZSBleHByZXNzaW9ucyBpbiB0aGUgcHJldmlvdXMgc2xpZGVzIGFsbCBoYWQgdHlwZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiSW50XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIsIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGludGVnZXJzLCB3aGVyZWFzIHRoZSBib29sZWFuIHZhbHVlcyBoYXZlIHR5cGUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIkJvb2xcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIllvdSBjYW4gc2VlIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIHlvdXIgY3Vyc29yIGlzIG9uIGluIHRoZSBjdXJzb3IgaW5zcGVjdG9yIGF0IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4gVGhlIHN5bWJvbCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiOlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgaXMgcHJvbm91bmNlZCBcXFwiaGFzIHR5cGVcXFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiQm9vbGVhbiB2YWx1ZXMgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IHVzaW5nIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjxcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiPT1cIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBhbmQgXCIpLFxuICAgICAgICAgICAgY29kZShcIj5cIiksXG4gICAgICAgICAgICB0ZXh0KFwiIG9uIGludGVnZXJzLiBGb3IgZXhhbXBsZSwgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgPCAzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcInRydWVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIEJvb2xlYW5zIGNhbiBhbHNvIGJlIGNvbWJpbmVkIHVzaW5nIGxvZ2ljYWwgYW5kIChjb25qdW5jdGlvbiksIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCImJlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIsIGFuZCBsb2dpY2FsIG9yIChkaXNqdW5jdGlvbiksIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJ8fFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkNvbmRpdGlvbmFsIEV4cHJlc3Npb25zXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbmRpdGlvbmFsIEV4cHJlc3Npb25zXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiR2l2ZW4gYSBib29sZWFuIGV4cHJlc3Npb24sIHdlIGNhbiB1c2UgaXQgdG8gY2hvb3NlIGJldHdlZW4gdHdvIGV4cHJlc3Npb25zIHVzaW5nIGEgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW0oXCJjb25kaXRpb25hbCBleHByZXNzaW9uXCIpLFxuICAgICAgICAgICAgdGV4dChcIi4gRm9yIGV4YW1wbGUsIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJpZiAyIDwgMyB0aGVuIDQgKiA0IGVsc2UgNSAqIDVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGV2YWx1YXRlcyB0byBcIiksXG4gICAgICAgICAgICBjb2RlKFwiNFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkZ1bmN0aW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJGdW5jdGlvbnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgYXJlIGV4cHJlc3Npb25zIHRoYXQgdGFrZSBvdGhlciBleHByZXNzaW9ucyBhcyBpbnB1dHMgYW5kIHByb2R1Y2Ugb3RoZXIgZXhwcmVzc2lvbnMgYXMgb3V0cHV0cy4gRm9yIGV4YW1wbGUsIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJmdW4geCAtPiB4ICsgMVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBpbnRlZ2VyIGV4cHJlc3Npb24gYXMgaW5wdXQgYW5kIHByb2R1Y2VzIGFuIGludGVnZXIgZXhwcmVzc2lvbiBhcyBvdXRwdXQuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgaW4gSGF6ZWwgZG8gbm90IHRoZW1zZWx2ZXMgaGF2ZSBuYW1lcy4gSW5zdGVhZCwgeW91IGNhbiB1c2UgYSBsZXQgZXhwcmVzc2lvbiB0byBuYW1lIGEgZnVuY3Rpb24uXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJZb3UgYXBwbHkgYSBmdW5jdGlvbiB0byBhbiBhcmd1bWVudCBleHByZXNzaW9uIGJ5IHVzaW5nIHBhcmVudGhlc2VzIGluIHRoZSB1c3VhbCB3YXkuIEZvciBleGFtcGxlLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwibGV0IGYgPSBmdW4geCAtPiB4ICsgMSBpbiBmKDIpXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcIjNcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIi4gR28gdGhyb3VnaCB0aGlzIGV4YW1wbGUgaW4gdGhlIHN0ZXBwZXIgdG8gc2VlIGhvdyBzdWJzdGl0dXRpb24gb2YgdGhlIGZ1bmN0aW9uIGZvciB0aGUgdmFyaWFibGUgc3RhbmRpbmcgZm9yIHRoZSBmdW5jdGlvbiB3b3Jrcy5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiVHVwbGVzXCIsIF8pID0+IFNvbWUoc2xpZGUoXCJUdXBsZXNcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIFR1cGxlc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIFR1cGxlc1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvblwiLCBfKSA9PiBTb21lKHNsaWRlKFwiUmVjdXJzaW9uXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiTGlzdHNcIiwgXykgPT4gU29tZShzbGlkZShcIkxpc3RzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUGF0dGVybiBNYXRjaGluZyBvbiBMaXN0c1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIExpc3RzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBsZW5ndGhcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBsZW5ndGhcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb24gb24gTGlzdHM6IHN1bVwiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJSZWN1cnNpb24gb24gTGlzdHM6IHN1bVwiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvbiBvbiBMaXN0czogbnVtX3plcm9zXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlJlY3Vyc2lvbiBvbiBMaXN0czogbnVtX3plcm9zXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiSGlnaGVyLU9yZGVyIEZ1bmN0aW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJIaWdoZXItT3JkZXIgRnVuY3Rpb25zXCIsIFtdKSlcbiAgfCBfID0+IE5vbmU7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgc2VxX2Jhc2ljX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBTZXFCYXNpYyxcbiAgdGVybTogbWtfZXhhbXBsZShcIjE7IDJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMSwgd2hpY2ggaXMgaWdub3JlZC4gVGhlbiB0aGUgcmlnaHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgdG8gMi5cIixcbn07XG4vLyBUT0RPIGFyZSB0aGVzZSByZWFsbHkgdGhlIGNvcnJlY3QgbWVzc2FnZXMvZXhwbGFuYXRpb25zXG5sZXQgc2VxX3Rlc3RfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IFNlcVRlc3QsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0ZXN0IHRydWUgZW5kOyAzXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGFuZCByZWNvcmRlZCBhcyBhIHBhc3NpbmcgdGVzdCBiZWNhdXNlIHRoZSBib2R5IG9mIHRoZSB0ZXN0IGlzIHRydWUuIFRoZW4gdGhlIHJpZ2h0IGV4cHJlc3Npb24gaXMgZXZhbGF1dGVzIHRvIDMuXCIsXG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBzZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5leHAxX2lkOiBJZC50LCB+ZXhwMl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwMSksIGV4cDFfaWQpLFxuICAoUGllY2UuaWQoX2V4cDIpLCBleHAyX2lkKSxcbl07XG5sZXQgc2VxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgW2xlZnQgZXhwcmVzc2lvbl0oJXMpIGlzIGV2YWx1YXRlZCwgdGhlbiB0aGUgW3JpZ2h0IGV4cHJlc3Npb25dKCVzKSBpcyBldmFsdWF0ZWQuXCI7XG4gIHtcbiAgICBpZDogU2VxRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNlcSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3NlcV9iYXNpY19leHBfZXgsIHNlcV90ZXN0X2V4cF9leF0sXG4gIH07XG59O1xuXG5sZXQgc2VxczogZ3JvdXAgPSB7aWQ6IFNlcUV4cCwgZm9ybXM6IFtzZXFfZXhwXX07XG4iLCJsZXQgZmlsbGVkX3NsaWRlcyA9IFtdO1xuXG5sZXQgZW1wdHk6IFNjcmF0Y2hTbGlkZS5wZXJzaXN0ZW50X3N0YXRlID0ge1xuICB6aXBwZXI6IFwiKChzZWxlY3Rpb24oKGZvY3VzIExlZnQpKGNvbnRlbnQoKSkpKShiYWNrcGFjaygpKShyZWxhdGl2ZXMoKHNpYmxpbmdzKCgpKChHcm91dCgoaWQgMCkoc2hhcGUgQ29udmV4KSkpKSkpKGFuY2VzdG9ycygpKSkpKGNhcmV0IE91dGVyKSlcIixcbiAgYmFja3VwX3RleHQ6IFwiXCIsXG59O1xuXG5sZXQgbnVtX2VtcHR5ID0gODtcblxubGV0IGluaXRfZGF0YSA9IGZpbGxlZF9zbGlkZXMgQCBMaXN0LmluaXQobnVtX2VtcHR5LCBfID0+IGVtcHR5KTtcblxuYXNzZXJ0KExpc3QubGVuZ3RoKGluaXRfZGF0YSkgPiAwKTtcblxubGV0IGluaXQgPSAoKSA9PiAoMCwgaW5pdF9kYXRhIHw+IExpc3QubWFwKFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QpKTtcblxubGV0IGluaXRfbnRoID0gbiA9PiB7XG4gIGxldCBkYXRhID0gTGlzdC5udGgoaW5pdF9kYXRhLCBuKTtcbiAgU2NyYXRjaFNsaWRlLnVucGVyc2lzdChkYXRhKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBzdmcgPSAoYXR0cnMsIGNoaWxkcmVuKSA9PlxuICBOb2RlLmNyZWF0ZV9zdmcoXCJzdmdcIiwgfmF0dHI9QXR0ci5tYW55KGF0dHJzKSwgY2hpbGRyZW4pO1xuXG5sZXQgc3RvcCA9IGF0dHJzID0+IE5vZGUuY3JlYXRlX3N2ZyhcInN0b3BcIiwgfmF0dHI9QXR0ci5tYW55KGF0dHJzKSwgW10pO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsO1xuXG5sZXQgdGlwX3dpZHRoID0gMC4zMjtcbmxldCBjb25jYXZlX2FkaiA9IDAuMjU7XG5sZXQgY29udmV4X2FkaiA9ICgtMC4xMyk7XG5sZXQgc2hhZG93X2FkaiA9IDAuMDE1O1xuXG5sZXQgY2FyZXRfYWRqdXN0ID0gKHNpZGU6IERpcmVjdGlvbi50LCBzaGFwZTogb3B0aW9uKERpcmVjdGlvbi50KSkgPT5cbiAgc3dpdGNoIChzaWRlLCBzaGFwZSkge1xuICB8IChfLCBOb25lKSA9PiAwLlxuICB8IChMZWZ0LCBTb21lKExlZnQpKSA9PiBjb25jYXZlX2FkalxuICB8IChSaWdodCwgU29tZShSaWdodCkpID0+IC0uIGNvbmNhdmVfYWRqXG4gIHwgKExlZnQsIFNvbWUoUmlnaHQpKSA9PiBjb252ZXhfYWRqXG4gIHwgKFJpZ2h0LCBTb21lKExlZnQpKSA9PiAtLiBjb252ZXhfYWRqXG4gIH07XG5cbmxldCBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzID0gMC4wNTtcblxubGV0IHQgPSBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIC8uIDAuNTtcbmxldCBzaG9ydF90aXBfaGVpZ2h0ID0gKDEuIC0uIHQpICouIDAuNTtcblxubGV0IHN0cmV0Y2hfZHggPSAwLjE1O1xuXG5sZXQgcmFpc2VkX3NoYWRvd19keCA9IFwiMC4xXCI7XG5sZXQgcmFpc2VkX3NoYWRvd19keSA9IFwiMC4wMzdcIjtcbmxldCBzaGFkb3dfZHggPSByYWlzZWRfc2hhZG93X2R4O1xubGV0IHNoYWRvd19keSA9IHJhaXNlZF9zaGFkb3dfZHk7XG5cbmxldCBleHRyYV90YWlsID0gMC47XG5sZXQgamFnZ2VkX2VkZ2VfaCA9IGNoaWxkX2JvcmRlcl90aGlja25lc3MgLy4gMy47XG5sZXQgamFnZ2VkX2VkZ2VfdyA9IGNoaWxkX2JvcmRlcl90aGlja25lc3MgLy4gMS47XG5cbmxldCBzaG9ydF90aXBfd2lkdGggPSAoMS4gLS4gdCkgKi4gdGlwX3dpZHRoO1xuXG50eXBlIGRpbXMgPSB7XG4gIHdpZHRoOiBpbnQsXG4gIGhlaWdodDogaW50LFxuICBsZWZ0OiBpbnQsXG4gIHRvcDogaW50LFxufTtcblxudHlwZSBmZGltcyA9IHtcbiAgd2lkdGg6IGZsb2F0LFxuICBoZWlnaHQ6IGZsb2F0LFxuICBsZWZ0OiBmbG9hdCxcbiAgdG9wOiBmbG9hdCxcbn07XG5cbmxldCBmemVybzogZmRpbXMgPSB7d2lkdGg6IDAuLCBoZWlnaHQ6IDAuLCBsZWZ0OiAwLiwgdG9wOiAwLn07XG5cbmxldCBwb3Nfc3RyID0gKH5kOiBkaW1zLCB+ZnVkZ2U6IGZkaW1zPWZ6ZXJvLCBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQpID0+XG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7IHdpZHRoOiAlZnB4OyBoZWlnaHQ6ICVmcHg7XCIsXG4gICAgRmxvYXQub2ZfaW50KGQubGVmdCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBmdWRnZS5sZWZ0LFxuICAgIEZsb2F0Lm9mX2ludChkLnRvcCkgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gZnVkZ2UudG9wLFxuICAgIEZsb2F0Lm9mX2ludChkLndpZHRoKSAqLiAoZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBmdWRnZS53aWR0aCksXG4gICAgRmxvYXQub2ZfaW50KGQuaGVpZ2h0KSAqLiAoZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gZnVkZ2UuaGVpZ2h0KSxcbiAgKTtcblxubGV0IGNvZGVfc3ZnX3NpemVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm1lYXN1cmVtZW50IGFzIHtvcmlnaW4sIGxhc3R9OiBIYXozbGNvcmUuTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgICB+YmFzZV9jbHM9W10sXG4gICAgICB+cGF0aF9jbHM9W10sXG4gICAgICB+ZnVkZ2U6IGZkaW1zPWZ6ZXJvLFxuICAgICAgcGF0aHM6IGxpc3QoU3ZnVXRpbC5QYXRoLmNtZCksXG4gICAgKSA9PiB7XG4gIGxldCAobGVmdCwgdG9wKSA9IChvcmlnaW4uY29sLCBvcmlnaW4ucm93KTtcbiAgbGV0ICh3aWR0aCwgaGVpZ2h0KSA9IChcbiAgICBhYnMobGFzdC5jb2wgLSBvcmlnaW4uY29sKSxcbiAgICBhYnMobGFzdC5yb3cgLSBvcmlnaW4ucm93ICsgMSksXG4gICk7XG4gIGxldCBzdHlsZSA9IHBvc19zdHIofmQ9e2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH0sIH5mdWRnZSwgZm9udF9tZXRyaWNzKTtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc2VzKGJhc2VfY2xzKSxcbiAgICAgICAgQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBzdHlsZSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFwidmlld0JveFwiLCBQcmludGYuc3ByaW50ZihcIjAgMCAlZCAlZFwiLCB3aWR0aCwgaGVpZ2h0KSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICBdKSxcbiAgICBbU3ZnVXRpbC5QYXRoLnZpZXcofmF0dHJzPVtBdHRyLmNsYXNzZXMocGF0aF9jbHMpXSwgcGF0aHMpXSxcbiAgKTtcbn07XG5cbmxldCBwb3NpdGlvbiA9XG4gICAgKFxuICAgICAgfnN0eWxlPVwiXCIsXG4gICAgICB+bGVmdF9mdWRnZT0wLjAsXG4gICAgICB+dG9wX2Z1ZGdlPTAuMCxcbiAgICAgIH53aWR0aF9mdWRnZT0wLjAsXG4gICAgICB+aGVpZ2h0X2Z1ZGdlPTAuMCxcbiAgICAgIH5zY2FsZT0xLixcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICBvcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgICkgPT5cbiAgQXR0ci5jcmVhdGUoXG4gICAgXCJzdHlsZVwiLFxuICAgIHN0eWxlXG4gICAgKysgXCI7XCJcbiAgICArKyBQcmludGYuc3ByaW50ZihcbiAgICAgICAgIFwibGVmdDogJWZweDsgdG9wOiAlZnB4OyB3aWR0aDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gbGVmdF9mdWRnZSxcbiAgICAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93KSAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCArLiB0b3BfZnVkZ2UsXG4gICAgICAgICBzY2FsZSAqLiAoZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiB3aWR0aF9mdWRnZSksXG4gICAgICAgICBzY2FsZSAqLiAoZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gaGVpZ2h0X2Z1ZGdlKSxcbiAgICAgICApLFxuICApO1xuXG5sZXQgYWJzX3Bvc2l0aW9uID1cbiAgICAoXG4gICAgICB+bGVmdF9mdWRnZT0wLjAsXG4gICAgICB+dG9wX2Z1ZGdlPTAuMCxcbiAgICAgIH53aWR0aF9mdWRnZT0wLjAsXG4gICAgICB+aGVpZ2h0X2Z1ZGdlPTAuMCxcbiAgICAgIH5zY2FsZT0xLixcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICBvcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgICkgPT4ge1xuICBwb3NpdGlvbihcbiAgICB+c3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIixcbiAgICB+bGVmdF9mdWRnZSxcbiAgICB+dG9wX2Z1ZGdlLFxuICAgIH53aWR0aF9mdWRnZSxcbiAgICB+aGVpZ2h0X2Z1ZGdlLFxuICAgIH5zY2FsZSxcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIG9yaWdpbixcbiAgKTtcbn07XG5cbmxldCBjb2RlX3N2ZyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5vcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgICAgfmJhc2VfY2xzPVtdLFxuICAgICAgfnBhdGhfY2xzPVtdLFxuICAgICAgfmxlZnRfZnVkZ2U9MC4wLFxuICAgICAgfnRvcF9mdWRnZT0wLjAsXG4gICAgICB+d2lkdGhfZnVkZ2U9MC4wLFxuICAgICAgfmhlaWdodF9mdWRnZT0wLjAsXG4gICAgICB+aWQ9XCJcIixcbiAgICAgIH5hdHRycz1bXSxcbiAgICAgIH5hYnNfcG9zPXRydWUsXG4gICAgICBwYXRoczogbGlzdChTdmdVdGlsLlBhdGguY21kKSxcbiAgICApID0+IHtcbiAgLy8gVXNpbmcgYSB2aWV3Qm94IG9mIDAgMCAxIDEgc2VlbXMgdG8gdHJpZ2dlciBDaHJvbWUgcm91bmRpbmcgYnVnXG4gIC8vIChodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00MjQyODgpIHRoYXRcbiAgLy8gY2F1c2VzIG1pYXNsaWdubWVudCBiZXR3ZWVuIHBpZWNlIGRlY29yYXRpb25zIGFuZCB0ZXh0LlxuICAvLyBVc2luZyBhIGRpZmZlcmVudCB2aWV3Qm94IHNpemUgc2VlbXMgdG8gZml4IHRoaXMuXG4gIGxldCBzY2FsZSA9IDIuO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIChpZCA9PSBcIlwiID8gW10gOiBbQXR0ci5pZChpZCldKVxuICAgICAgICBAIFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoYmFzZV9jbHMpLFxuICAgICAgICAgIGFic19wb3NcbiAgICAgICAgICAgID8gYWJzX3Bvc2l0aW9uKFxuICAgICAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICAgICAgfmxlZnRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnRvcF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+d2lkdGhfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfmhlaWdodF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+c2NhbGUsXG4gICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHBvc2l0aW9uKFxuICAgICAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICAgICAgfmxlZnRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnRvcF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+d2lkdGhfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfmhlaWdodF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+c2NhbGUsXG4gICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwidmlld0JveFwiLCBQcmludGYuc3ByaW50ZihcIjAgMCAlZiAlZlwiLCBzY2FsZSwgc2NhbGUpKSxcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgICBdXG4gICAgICAgIEAgYXR0cnMsXG4gICAgICApLFxuICAgIFtTdmdVdGlsLlBhdGgudmlldyh+YXR0cnM9W0F0dHIuY2xhc3NlcyhwYXRoX2NscyldLCBwYXRocyldLFxuICApO1xufTtcblxubGV0IHJhaXNlZF9zaGFkb3dfZmlsdGVyID0gKHNvcnQ6IEhhejNsY29yZS5Tb3J0LnQpID0+IHtcbiAgbGV0IHMgPSBIYXozbGNvcmUuU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJmaWx0ZXJcIixcbiAgICB+YXR0cj1BdHRyLmlkKFwicmFpc2VkLWRyb3Atc2hhZG93LVwiICsrIHMpLFxuICAgIFtcbiAgICAgIGNyZWF0ZV9zdmcoXG4gICAgICAgIFwiZmVEcm9wU2hhZG93XCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGlsZS1kcm9wLXNoYWRvd1wiXSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR4XCIsIHJhaXNlZF9zaGFkb3dfZHgpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeVwiLCByYWlzZWRfc2hhZG93X2R5KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3RkRGV2aWF0aW9uXCIsIFwiMFwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgc2hhZG93X2ZpbHRlciA9IChzb3J0OiBIYXozbGNvcmUuU29ydC50KSA9PiB7XG4gIGxldCBzID0gSGF6M2xjb3JlLlNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwiZmlsdGVyXCIsXG4gICAgfmF0dHI9QXR0ci5pZChcImRyb3Atc2hhZG93LVwiICsrIHMpLFxuICAgIFtcbiAgICAgIGNyZWF0ZV9zdmcoXG4gICAgICAgIFwiZmVEcm9wU2hhZG93XCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGlsZS1kcm9wLXNoYWRvd1wiXSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR4XCIsIHNoYWRvd19keCksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR5XCIsIHNoYWRvd19keSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0ZERldmlhdGlvblwiLCBcIjBcIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGZpbHRlcnMgPVxuICBOb2RlVXRpbC5zdmcoXG4gICAgQXR0ci5baWQoXCJmaWx0ZXJzXCIpXSxcbiAgICBMaXN0Lm1hcChyYWlzZWRfc2hhZG93X2ZpbHRlciwgSGF6M2xjb3JlLlNvcnQuYWxsKVxuICAgIEAgTGlzdC5tYXAoc2hhZG93X2ZpbHRlciwgSGF6M2xjb3JlLlNvcnQuYWxsKSxcbiAgKTtcbiIsIm9wZW4gRGVjVXRpbDtcbm9wZW4gU3ZnVXRpbC5QYXRoO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuLy9UT0RPKD8pOiBkZXByZWNhdGUgdGhpcyBtb2R1bGVcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0aXBfc2hhcGUgPSAoSGF6M2xjb3JlLk5pYi50LCBpbnQpO1xuXG4vLyB0b3AgcmlnaHQgdG8gYm90dG9tIGxlZnRcbmxldCB0cl9ibCA9XG4gICAgKFxuICAgICAgfnNjYWxlIGFzIHM9MS4sXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLihcbiAgICB7XG4gICAgICBsZXQgKGRpYWcsIGp1bmN0aW9uKSA9XG4gICAgICAgIHdpdGhfY2hpbGRfYm9yZGVyXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICBMXyh7ZHg6IEZsb2F0Lm5lZyhzaG9ydF90aXBfd2lkdGgpLCBkeTogc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgICAgICAgICAgSF8oe2R4OiBGbG9hdC5uZWcoMC41IC0uIHNob3J0X3RpcF93aWR0aCl9KSxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBMXyh7ZHg6IEZsb2F0Lm5lZyh0aXBfd2lkdGgpLCBkeTogMC41ICsuIHN0cmV0Y2hfeX0pLFxuICAgICAgICAgICAgSF8oe2R4OiBGbG9hdC5uZWcoc3RyZXRjaF94KX0pLFxuICAgICAgICAgICk7XG4gICAgICBsZXQgcGF0aCA9XG4gICAgICAgIHN3aXRjaCAoaGVtaSkge1xuICAgICAgICB8IGBOb3J0aCA9PiBbanVuY3Rpb24sIGRpYWddXG4gICAgICAgIHwgYFNvdXRoID0+IFtkaWFnLCBqdW5jdGlvbl1cbiAgICAgICAgfTtcbiAgICAgIHNjYWxlKHMsIHBhdGgpO1xuICAgIH1cbiAgKTtcbi8vIGJvdHRvbSBsZWZ0IHRvIHRvcCByaWdodFxubGV0IGJsX3RyID1cbiAgICAoXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLnJldmVyc2UoXG4gICAgdHJfYmwofmhlbWksIH53aXRoX2NoaWxkX2JvcmRlciwgfnN0cmV0Y2hfeCwgfnN0cmV0Y2hfeSwgKCkpLFxuICApO1xuXG4vLyB0b3AgbGVmdCB0byBib3R0b20gcmlnaHRcbmxldCB0bF9iciA9XG4gICAgKFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC4oXG4gICAge1xuICAgICAgbGV0IChkaWFnLCBqdW5jdGlvbikgPVxuICAgICAgICB3aXRoX2NoaWxkX2JvcmRlclxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgTF8oe2R4OiBzaG9ydF90aXBfd2lkdGgsIGR5OiBzaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgICAgICAgICBIXyh7ZHg6IDAuNSAtLiBzaG9ydF90aXBfd2lkdGh9KSxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoTF8oe2R4OiB0aXBfd2lkdGgsIGR5OiAwLjUgKy4gc3RyZXRjaF95fSksIEhfKHtkeDogc3RyZXRjaF94fSkpO1xuICAgICAgc3dpdGNoIChoZW1pKSB7XG4gICAgICB8IGBOb3J0aCA9PiBbanVuY3Rpb24sIGRpYWddXG4gICAgICB8IGBTb3V0aCA9PiBbZGlhZywganVuY3Rpb25dXG4gICAgICB9O1xuICAgIH1cbiAgKTtcbi8vIGJvdHRvbSByaWdodCB0byB0b3AgbGVmdFxubGV0IGJyX3RsID1cbiAgICAoXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLnJldmVyc2UoXG4gICAgdGxfYnIofmhlbWksIH53aXRoX2NoaWxkX2JvcmRlciwgfnN0cmV0Y2hfeCwgfnN0cmV0Y2hfeSwgKCkpLFxuICApO1xuXG5sZXQgbGVmdF90aXBfcGF0aCA9XG4gICAgKH5zY2FsZV94IGFzIHNfeD0xLiwgfnNjYWxlX3kgYXMgc195PTEuLCB0aXA6IHRpcF9zaGFwZSk6IFN2Z1V0aWwuUGF0aC50ID0+IHtcbiAgbGV0IHBhdGggPVxuICAgIHN3aXRjaCAodGlwKSB7XG4gICAgfCAoe3NoYXBlOiBDb252ZXgsIF99LCBfKSA9PlxuICAgICAgYnJfdGwofmhlbWk9YFNvdXRoLCAoKSkgQCBibF90cih+aGVtaT1gTm9ydGgsICgpKVxuICAgIHwgKHtzaGFwZTogQ29uY2F2ZShfYSksIF99LCBuKSA9PlxuICAgICAgbGV0IGphZyA9IFtcbiAgICAgICAgTF8oe2R4OiAtLiBqYWdnZWRfZWRnZV93LCBkeTogLS4gamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IGphZ2dlZF9lZGdlX3csIGR5OiAtLiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogLS4gamFnZ2VkX2VkZ2VfdywgZHk6IC0uIGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgIF07XG4gICAgICBsZXQgYm90dG9tX2hhbGYgPVxuICAgICAgICBuID09IDBcbiAgICAgICAgICA/IFtIXyh7ZHg6IEZsb2F0Lm5lZyh0aXBfd2lkdGgpfSksIC4uLmJsX3RyKH5oZW1pPWBTb3V0aCwgKCkpXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICBbSF8oe2R4OiAtLiAoZXh0cmFfdGFpbCArLiAwLjUpfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IGphZ2dlZF9lZGdlX3cgKy4gZXh0cmFfdGFpbH0pXSxcbiAgICAgICAgICAgICAgYmxfdHIofmhlbWk9YFNvdXRoLCB+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgKCkpLFxuICAgICAgICAgICAgXSk7XG4gICAgICBsZXQgdG9wX2hhbGYgPVxuICAgICAgICBuID09IDAgfHwgbiA9PSAxXG4gICAgICAgICAgPyBicl90bCh+aGVtaT1gTm9ydGgsICgpKSBAIFtIXyh7ZHg6IHRpcF93aWR0aH0pXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICBicl90bCh+aGVtaT1gTm9ydGgsIH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCAoKSksXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IC0uIChqYWdnZWRfZWRnZV93ICsuIGV4dHJhX3RhaWwpfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IGV4dHJhX3RhaWwgKy4gMC41fSldLFxuICAgICAgICAgICAgXSk7XG4gICAgICBib3R0b21faGFsZiBAIHRvcF9oYWxmO1xuICAgIH07XG4gIHNjYWxlX3goc194LCBzY2FsZV95KHNfeSwgcGF0aCkpO1xufTtcbmxldCByaWdodF90aXBfcGF0aCA9XG4gICAgKH5zY2FsZV94IGFzIHNfeD0xLiwgfnNjYWxlX3kgYXMgc195PTEuLCB0aXA6IHRpcF9zaGFwZSk6IFN2Z1V0aWwuUGF0aC50ID0+IHtcbiAgbGV0IHBhdGggPVxuICAgIHN3aXRjaCAodGlwKSB7XG4gICAgfCAoe3NoYXBlOiBDb252ZXgsIF99LCBfKSA9PlxuICAgICAgdGxfYnIofmhlbWk9YE5vcnRoLCAoKSkgQCB0cl9ibCh+aGVtaT1gU291dGgsICgpKVxuICAgIHwgKHtzaGFwZTogQ29uY2F2ZShfYSksIF99LCBuKSA9PlxuICAgICAgb3BlbiBTdmdVdGlsLlBhdGg7XG4gICAgICBsZXQgamFnID0gW1xuICAgICAgICBMXyh7ZHg6IGphZ2dlZF9lZGdlX3csIGR5OiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogLS4gamFnZ2VkX2VkZ2VfdywgZHk6IGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiBqYWdnZWRfZWRnZV93LCBkeTogamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgXTtcbiAgICAgIGxldCB0b3BfaGFsZiA9XG4gICAgICAgIG4gPT0gMCB8fCBuID09IDFcbiAgICAgICAgICA/IFtIXyh7ZHg6IHRpcF93aWR0aH0pLCAuLi50cl9ibCh+aGVtaT1gTm9ydGgsICgpKV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgW0hfKHtkeDogMC41ICsuIGV4dHJhX3RhaWx9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogLS4gKGV4dHJhX3RhaWwgKy4gamFnZ2VkX2VkZ2Vfdyl9KV0sXG4gICAgICAgICAgICAgIHRyX2JsKH5oZW1pPWBOb3J0aCwgfndpdGhfY2hpbGRfYm9yZGVyPXRydWUsICgpKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgbGV0IGJvdHRvbV9oYWxmID1cbiAgICAgICAgbiA9PSAwXG4gICAgICAgICAgPyB0bF9icih+aGVtaT1gU291dGgsICgpKSBAIFtIXyh7ZHg6IEZsb2F0Lm5lZyh0aXBfd2lkdGgpfSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIHRsX2JyKH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCB+aGVtaT1gU291dGgsICgpKSxcbiAgICAgICAgICAgICAgW0hfKHtkeDogZXh0cmFfdGFpbH0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBGbG9hdC5uZWcoamFnZ2VkX2VkZ2VfdyArLiBleHRyYV90YWlsICsuIDAuNSl9KV0sXG4gICAgICAgICAgICBdKTtcbiAgICAgIHRvcF9oYWxmIEAgYm90dG9tX2hhbGY7XG4gICAgfTtcbiAgc2NhbGVfeChzX3gsIHNjYWxlX3koc195LCBwYXRoKSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBQcm9maWxlID0ge1xuICB0eXBlIHQgPSB7XG4gICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIG1vbGQ6IE1vbGQudCxcbiAgfTtcbn07XG5cbmxldCBwYXRoID0gKHRpcF9sLCB0aXBfciwgb2Zmc2V0LCBzOiBmbG9hdCkgPT4ge1xuICBsZXQgeF9kaWxhdGUgPSAxLjU7XG4gIExpc3QuY29uY2F0KFxuICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICBbXG4gICAgICAgIE0oe3g6IG9mZnNldCArLiAwLjUsIHk6IDAuNSAtLiBzIC8uIDIufSksXG4gICAgICAgIEhfKHtkeDogeF9kaWxhdGUgKi4gcyAvLiAyLn0pLFxuICAgICAgXSxcbiAgICAgIERpYWcucmlnaHRfdGlwX3BhdGgofnNjYWxlX3g9cyAqLiB4X2RpbGF0ZSwgfnNjYWxlX3k9cywgKHRpcF9yLCAwKSksXG4gICAgICBbSF8oe2R4OiAtLiBzICouIHhfZGlsYXRlfSldLFxuICAgICAgRGlhZy5sZWZ0X3RpcF9wYXRoKH5zY2FsZV94PXMgKi4geF9kaWxhdGUsIH5zY2FsZV95PXMsICh0aXBfbCwgMCkpLFxuICAgICAgW1pdLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgdmlldyA9ICh+Zm9udF9tZXRyaWNzLCB7bWVhc3VyZW1lbnQsIG1vbGR9OiBQcm9maWxlLnQpOiBOb2RlLnQgPT4ge1xuICBsZXQgc29ydCA9IG1vbGQub3V0O1xuICBsZXQgY19jbHMgPSBTb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgbGV0ICh0aXBfbCwgdGlwX3IpOiAoSGF6M2xjb3JlLk5pYi5TaGFwZS50LCBIYXozbGNvcmUuTmliLlNoYXBlLnQpID1cbiAgICBVdGlsLlR1cGxlVXRpbC5tYXAyKEhhejNsY29yZS5OaWIuc2hhcGUsIG1vbGQubmlicyk7XG4gIGxldCAodGlwX2wsIHRpcF9yKTogKEhhejNsY29yZS5OaWIudCwgSGF6M2xjb3JlLk5pYi50KSA9IChcbiAgICB7c29ydCwgc2hhcGU6IHRpcF9sfSxcbiAgICB7c29ydCwgc2hhcGU6IHRpcF9yfSxcbiAgKTtcbiAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5tZWFzdXJlbWVudCxcbiAgICB+YmFzZV9jbHM9W1wiZW1wdHktaG9sZVwiXSxcbiAgICB+cGF0aF9jbHM9W1wiZW1wdHktaG9sZS1wYXRoXCIsIGNfY2xzXSxcbiAgICBwYXRoKHRpcF9sLCB0aXBfciwgMC4sIDAuMjgpLFxuICApO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBVdGlsO1xub3BlbiBVdGlsLldlYjtcblxubGV0IG9mX2RlbGltJyA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAwLFxuICAgICgobGFiZWwsIGlzX2luX2J1ZmZlciwgc29ydCwgaXNfY29uc2lzdGVudCwgaXNfY29tcGxldGUsIGkpKSA9PiB7XG4gICAgICBsZXQgY2xzID1cbiAgICAgICAgc3dpdGNoIChsYWJlbCkge1xuICAgICAgICB8IF8gd2hlbiBpc19pbl9idWZmZXIgPT4gXCJpbi1idWZmZXJcIlxuICAgICAgICB8IF8gd2hlbiAhaXNfY29uc2lzdGVudCA9PiBcInNvcnQtaW5jb25zaXN0ZW50XCJcbiAgICAgICAgfCBfIHdoZW4gIWlzX2NvbXBsZXRlID0+IFwiaW5jb21wbGV0ZVwiXG4gICAgICAgIHwgW3NdIHdoZW4gcyA9PSBGb3JtLmV4cGxpY2l0X2hvbGUgPT4gXCJleHBsaWNpdC1ob2xlXCJcbiAgICAgICAgfCBbc10gd2hlbiBGb3JtLmlzX3N0cmluZyhzKSA9PiBcInN0cmluZy1saXRcIlxuICAgICAgICB8IF8gPT4gXCJkZWZhdWx0XCJcbiAgICAgICAgfTtcbiAgICAgIGxldCBwbHVyYWxpdHkgPSBMaXN0Lmxlbmd0aChsYWJlbCkgPT0gMSA/IFwibW9ub1wiIDogXCJwb2x5XCI7XG4gICAgICBsZXQgbGFiZWwgPSBpc19pbl9idWZmZXIgPyBBc3Npc3RhbnRFeHBhbmRlci5tYXJrKGxhYmVsKSA6IGxhYmVsO1xuICAgICAgW1xuICAgICAgICBzcGFuKFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRva2VuXCIsIGNscywgU29ydC50b19zdHJpbmcoc29ydCksIHBsdXJhbGl0eV0pLFxuICAgICAgICAgIFtOb2RlLnRleHQoTGlzdC5udGgobGFiZWwsIGkpKV0sXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0sXG4gICk7XG5sZXQgb2ZfZGVsaW0gPVxuICAgIChpc19pbl9idWZmZXIsIGlzX2NvbnNpc3RlbnQsIHQ6IFBpZWNlLnRpbGUsIGk6IGludCk6IGxpc3QoTm9kZS50KSA9PlxuICBvZl9kZWxpbScoKFxuICAgIHQubGFiZWwsXG4gICAgaXNfaW5fYnVmZmVyLFxuICAgIHQubW9sZC5vdXQsXG4gICAgaXNfY29uc2lzdGVudCxcbiAgICBUaWxlLmlzX2NvbXBsZXRlKHQpLFxuICAgIGksXG4gICkpO1xuXG5sZXQgb2ZfZ3JvdXQgPSBbTm9kZS50ZXh0KFVuaWNvZGUubmJzcCldO1xuXG5sZXQgb2Zfc2Vjb25kYXJ5ID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsICgoY29udGVudCwgc2Vjb25kYXJ5X2ljb25zLCBpbmRlbnQpKSA9PlxuICAgIGlmIChTdHJpbmcuZXF1YWwoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCksIEZvcm0ubGluZWJyZWFrKSkge1xuICAgICAgbGV0IHN0ciA9IHNlY29uZGFyeV9pY29ucyA/IEZvcm0ubGluZWJyZWFrIDogXCJcIjtcbiAgICAgIFtcbiAgICAgICAgc3Bhbl9jKFwibGluZWJyZWFrXCIsIFt0ZXh0KHN0cildKSxcbiAgICAgICAgTm9kZS5icigpLFxuICAgICAgICBOb2RlLnRleHQoU3RyaW5nVXRpbC5yZXBlYXQoaW5kZW50LCBVbmljb2RlLm5ic3ApKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChTdHJpbmcuZXF1YWwoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCksIEZvcm0uc3BhY2UpKSB7XG4gICAgICBsZXQgc3RyID0gc2Vjb25kYXJ5X2ljb25zID8gXCLCt1wiIDogVW5pY29kZS5uYnNwO1xuICAgICAgW3NwYW5fYyhcInNlY29uZGFyeVwiLCBbdGV4dChzdHIpXSldO1xuICAgIH0gZWxzZSBpZiAoU2Vjb25kYXJ5LmNvbnRlbnRfaXNfY29tbWVudChjb250ZW50KSkge1xuICAgICAgW3NwYW5fYyhcImNvbW1lbnRcIiwgW05vZGUudGV4dChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSldKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIFtzcGFuX2MoXCJzZWNvbmRhcnlcIiwgW05vZGUudGV4dChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSldKV07XG4gICAgfVxuICApO1xuXG5tb2R1bGUgVGV4dCA9IChNOiB7XG4gICAgICAgICAgICAgICAgIGxldCBtYXA6IE1lYXN1cmVkLnQ7XG4gICAgICAgICAgICAgICAgIGxldCBzZXR0aW5nczogU2V0dGluZ3MudDtcbiAgICAgICAgICAgICAgIH0pID0+IHtcbiAgbGV0IG0gPSBwID0+IE1lYXN1cmVkLmZpbmRfcChwLCBNLm1hcCk7XG4gIGxldCByZWMgb2Zfc2VnbWVudCA9XG4gICAgICAgICAgKGJ1ZmZlcl9pZHMsIG5vX3NvcnRzLCBzb3J0LCBzZWc6IFNlZ21lbnQudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgLyogbm90ZTogbm9fc29ydHMgZmxhZyBpcyB1c2VkIGZvciBiYWNrcGFjayB2aWV3O1xuICAgICAgIG90aGVyd2lzZSBTZWdtZW50LmV4cGVjdGVkX3NvcnRzIGNhbGwgY3Jhc2hlcyBmb3Igc29tZSByZWFzb24gKi9cbiAgICBsZXQgZXhwZWN0ZWRfc29ydHMgPVxuICAgICAgbm9fc29ydHNcbiAgICAgICAgPyBMaXN0LmluaXQoTGlzdC5sZW5ndGgoc2VnKSwgaSA9PiAoaSwgU29ydC5BbnkpKVxuICAgICAgICA6IFNlZ21lbnQuZXhwZWN0ZWRfc29ydHMoc29ydCwgc2VnKTtcbiAgICBsZXQgc29ydF9vZl9wX2lkeCA9IGlkeCA9PlxuICAgICAgc3dpdGNoIChMaXN0LmFzc29jX29wdChpZHgsIGV4cGVjdGVkX3NvcnRzKSkge1xuICAgICAgfCBOb25lID0+IFNvcnQuQW55XG4gICAgICB8IFNvbWUoc29ydCkgPT4gc29ydFxuICAgICAgfTtcbiAgICBzZWdcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChpLCBwKSlcbiAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChpLCBwKSkgPT5cbiAgICAgICAgIG9mX3BpZWNlKGJ1ZmZlcl9pZHMsIHNvcnRfb2ZfcF9pZHgoaSksIHApXG4gICAgICAgKTtcbiAgfVxuICBhbmQgb2ZfcGllY2UgPVxuICAgICAgKGJ1ZmZlcl9pZHMsIGV4cGVjdGVkX3NvcnQ6IFNvcnQudCwgcDogUGllY2UudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgc3dpdGNoIChwKSB7XG4gICAgfCBUaWxlKHQpID0+IG9mX3RpbGUoYnVmZmVyX2lkcywgZXhwZWN0ZWRfc29ydCwgdClcbiAgICB8IEdyb3V0KF8pID0+IG9mX2dyb3V0XG4gICAgfCBTZWNvbmRhcnkoe2NvbnRlbnQsIF99KSA9PlxuICAgICAgb2Zfc2Vjb25kYXJ5KChjb250ZW50LCBNLnNldHRpbmdzLnNlY29uZGFyeV9pY29ucywgbShwKS5sYXN0LmNvbCkpXG4gICAgfTtcbiAgfVxuICBhbmQgb2ZfdGlsZSA9IChidWZmZXJfaWRzLCBleHBlY3RlZF9zb3J0OiBTb3J0LnQsIHQ6IFRpbGUudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgbGV0IGNoaWxkcmVuX2FuZF9zb3J0cyA9XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChpLCAobCwgY2hpbGQsIHIpKSA9PlxuICAgICAgICAgIC8vVE9ETyhhbmRyZXcpOiBtb3JlIHN1YnRsZSBsb2dpYyBhYm91dCBzb3J0IGFjY2VwdGFiaWxpdHlcbiAgICAgICAgICAoY2hpbGQsIGwgKyAxID09IHIgPyBMaXN0Lm50aCh0Lm1vbGQuaW5fLCBpKSA6IFNvcnQuQW55KSxcbiAgICAgICAgQWJhLmFiYV90cmlwbGVzKEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbikpLFxuICAgICAgKTtcbiAgICBsZXQgaXNfY29uc2lzdGVudCA9IFNvcnQuY29uc2lzdGVudCh0Lm1vbGQub3V0LCBleHBlY3RlZF9zb3J0KTtcbiAgICBsZXQgaXNfaW5fYnVmZmVyID0gTGlzdC5tZW0odC5pZCwgYnVmZmVyX2lkcyk7XG4gICAgQWJhLm1rKHQuc2hhcmRzLCBjaGlsZHJlbl9hbmRfc29ydHMpXG4gICAgfD4gQWJhLmpvaW4ob2ZfZGVsaW0oaXNfaW5fYnVmZmVyLCBpc19jb25zaXN0ZW50LCB0KSwgKChzZWcsIHNvcnQpKSA9PlxuICAgICAgICAgb2Zfc2VnbWVudChidWZmZXJfaWRzLCBmYWxzZSwgc29ydCwgc2VnKVxuICAgICAgIClcbiAgICB8PiBMaXN0LmNvbmNhdDtcbiAgfTtcbn07XG5cbmxldCByZWMgaG9sZXMgPVxuICAgICAgICAofmZvbnRfbWV0cmljcywgfm1hcDogTWVhc3VyZWQudCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KE5vZGUudCkgPT5cbiAgc2VnXG4gIHw+IExpc3QuY29uY2F0X21hcChcbiAgICAgICBmdW5cbiAgICAgICB8IFBpZWNlLlNlY29uZGFyeShfKSA9PiBbXVxuICAgICAgIHwgVGlsZSh0KSA9PiBMaXN0LmNvbmNhdF9tYXAoaG9sZXMofm1hcCwgfmZvbnRfbWV0cmljcyksIHQuY2hpbGRyZW4pXG4gICAgICAgfCBHcm91dChnKSA9PiBbXG4gICAgICAgICAgIEVtcHR5SG9sZURlYy52aWV3KFxuICAgICAgICAgICAgIH5mb250X21ldHJpY3MsIC8vIFRPRE8oZCkgZml4IHNvcnRcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBtZWFzdXJlbWVudDogTWVhc3VyZWQuZmluZF9nKGcsIG1hcCksXG4gICAgICAgICAgICAgICBtb2xkOiBNb2xkLm9mX2dyb3V0KGcsIEFueSksXG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgKSxcbiAgICAgICAgIF0sXG4gICAgICk7XG5cbmxldCBzaW1wbGVfdmlldyA9XG4gICAgKH5mb250X21ldHJpY3MsIH51bnNlbGVjdGVkLCB+bWFwLCB+c2V0dGluZ3M6IFNldHRpbmdzLnQpOiBOb2RlLnQgPT4ge1xuICBtb2R1bGUgVGV4dCA9XG4gICAgVGV4dCh7XG4gICAgICBsZXQgbWFwID0gbWFwO1xuICAgICAgbGV0IHNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgfSk7XG4gIGxldCBob2xlcyA9IGhvbGVzKH5tYXAsIH5mb250X21ldHJpY3MsIHVuc2VsZWN0ZWQpO1xuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJjb2RlXCIpLFxuICAgIFtcbiAgICAgIHNwYW5fYyhcImNvZGUtdGV4dFwiLCBUZXh0Lm9mX3NlZ21lbnQoW10sIGZhbHNlLCBTb3J0LkFueSwgdW5zZWxlY3RlZCkpLFxuICAgICAgLi4uaG9sZXMsXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBvZl9ob2xlID0gKH5mb250X21ldHJpY3MsIH5tZWFzdXJlZCwgZzogR3JvdXQudCkgPT5cbiAgLy8gVE9ETyhkKSBmaXggc29ydFxuICBFbXB0eUhvbGVEZWMudmlldyhcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIHtcbiAgICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5maW5kX2coZywgbWVhc3VyZWQpLFxuICAgICAgbW9sZDogTW9sZC5vZl9ncm91dChnLCBBbnkpLFxuICAgIH0sXG4gICk7XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+c29ydDogU29ydC50LFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIHtzdGF0ZToge21ldGE6IHttZWFzdXJlZCwgYnVmZmVyX2lkcywgdW5zZWxlY3RlZCwgaG9sZXMsIF99LCBffSwgX306IEVkaXRvci50LFxuICAgIClcbiAgICA6IE5vZGUudCA9PiB7XG4gIG1vZHVsZSBUZXh0ID1cbiAgICBUZXh0KHtcbiAgICAgIGxldCBtYXAgPSBtZWFzdXJlZDtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgIH0pO1xuICBsZXQgY29kZSA9IFRleHQub2Zfc2VnbWVudChidWZmZXJfaWRzLCBmYWxzZSwgc29ydCwgdW5zZWxlY3RlZCk7XG4gIGxldCBob2xlcyA9IExpc3QubWFwKG9mX2hvbGUofm1lYXN1cmVkLCB+Zm9udF9tZXRyaWNzKSwgaG9sZXMpO1xuICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjb2RlXCIpLCBbc3Bhbl9jKFwiY29kZS10ZXh0XCIsIGNvZGUpLCAuLi5ob2xlc10pO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgYmFja3BhY2tfc2VsX3ZpZXcgPVxuICAgIChcbiAgICAgIHhfb2ZmOiBmbG9hdCxcbiAgICAgIHlfb2ZmOiBmbG9hdCxcbiAgICAgIHNjYWxlOiBmbG9hdCxcbiAgICAgIG9wYWNpdHk6IGZsb2F0LFxuICAgICAge2ZvY3VzOiBfLCBjb250ZW50LCBffTogU2VsZWN0aW9uLnQsXG4gICAgKSA9PiB7XG4gIG1vZHVsZSBUZXh0ID1cbiAgICBDb2RlLlRleHQoe1xuICAgICAgbGV0IG1hcCA9IE1lYXN1cmVkLm9mX3NlZ21lbnQoY29udGVudCk7XG4gICAgICBsZXQgc2V0dGluZ3MgPSBJbml0LnN0YXJ0dXAuc2V0dGluZ3M7XG4gICAgfSk7XG4gIC8vIFRPRE8oYW5kcmV3KTogTWF5YmUgdXNlIGluaXQgc29ydCBhdCBjYXJldCB0byBwcmltZSB0aGlzXG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NlcyhbXCJjb2RlLXRleHRcIiwgXCJiYWNrcGFjay1zZWxlY3Rpb25cIl0pLFxuICAgICAgICBBdHRyLmNyZWF0ZShcbiAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7IHRyYW5zZm9ybTogdHJhbnNsYXRlKCVmcHgsICVmcHgpIHNjYWxlKCVmKTsgb3BhY2l0eTogJWYlJTtcIixcbiAgICAgICAgICAgIHhfb2ZmLFxuICAgICAgICAgICAgeV9vZmYsXG4gICAgICAgICAgICBzY2FsZSxcbiAgICAgICAgICAgIG9wYWNpdHksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIC8vIHp3c3AgbmVjZXNzYXJ5IGZvciBjb250YWluaW5nIGJveCB0byBzdHJldGNoIHRvIGNvbnRhaW4gdHJhaWxpbmcgbmV3bGluZVxuICAgIFRleHQub2Zfc2VnbWVudChbXSwgdHJ1ZSwgQW55LCBjb250ZW50KSBAIFt0ZXh0KFVuaWNvZGUuendzcCldLFxuICApO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+b3JpZ2luOiBNZWFzdXJlZC5Qb2ludC50LFxuICAgICAge2JhY2twYWNrLCBffSBhcyB6OiBaaXBwZXIudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICAvL1RPRE8oYW5kcmV3KTogY2xlYW4gdXAgdGhpcyBkdW1wc3RlciBmaXJlIG9mIGEgZnVuY3Rpb25cbiAgbGV0IGhlaWdodF9oZWFkID1cbiAgICBzd2l0Y2ggKGJhY2twYWNrKSB7XG4gICAgfCBbXSA9PiAwXG4gICAgfCBbaGQsIC4uLl9dID0+IE1lYXN1cmVkLnNlZ21lbnRfaGVpZ2h0KGhkLmNvbnRlbnQpXG4gICAgfTtcbiAgbGV0IGNhbl9wdXRfZG93biA9XG4gICAgc3dpdGNoIChaaXBwZXIucG9wX2JhY2twYWNrKHopKSB7XG4gICAgLy8gY2FyZXQgdGhpbmcgaXMgaGFjazsgaSBkb24ndCBrbm93IHdoeSBwb3BfYmFja3BhY2tcbiAgICAvLyBnaXZlcyB1cyB3aGF0IHdlIHdhbnQgaGVyZVxuICAgIHwgU29tZShfKSA9PiB6LmNhcmV0ID09IE91dGVyXG4gICAgfCBOb25lID0+IGZhbHNlXG4gICAgfTtcbiAgbGV0IGNhcmV0X2FkaiA9IHtcbiAgICBsZXQgc2hhcGUgPSBaaXBwZXIuY2FyZXRfZGlyZWN0aW9uKHopO1xuICAgIGxldCBzaWRlID1cbiAgICAgIHN3aXRjaCAoSW5kaWNhdGVkLnBpZWNlKHopKSB7XG4gICAgICB8IFNvbWUoKF8sIHNpZGUsIF8pKSA9PiBzaWRlXG4gICAgICB8IF8gPT4gUmlnaHRcbiAgICAgIH07XG4gICAgRGVjVXRpbC5jYXJldF9hZGp1c3Qoc2lkZSwgc2hhcGUpO1xuICB9O1xuICBsZXQgY2FyZXRfYWRqX3B4ID1cbiAgICAvL1RPRE8oYW5kcmV3KTogZmlndXJlIG91dCB3aHkgd2UgbmVlZCB0aGlzIG15c3RlcnkgcGl4ZWwgYmVsb3dcbiAgICAoLTEuKSArLiBjYXJldF9hZGogKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aDtcbiAgbGV0IG1heF9kaXNwID0gMzsgLyogTWF4aW11bSB2ZXJ0aWNhbCBiYWNrcGFjayBkaXNwbGFjZW1lbnQgKi9cbiAgbGV0IHZlcnRpY2FsX2Rpc3AgPSBvcmlnaW4ucm93IDw9IG1heF9kaXNwID8gb3JpZ2luLnJvdyA6IG1heF9kaXNwO1xuICBsZXQgc2VsZWN0aW9uc19zdHlsZSA9XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4O1wiLFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gY2FyZXRfYWRqX3B4LFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cgLSB2ZXJ0aWNhbF9kaXNwIC0gaGVpZ2h0X2hlYWQgLSAxKVxuICAgICAgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgKTtcbiAgbGV0IHNjYWxlX2ZuID0gaWR4ID0+IGZsb2F0X29mX2ludCgxMDAgLSAxMiAqIGlkeCkgLy4gMTAwLjtcbiAgbGV0IHhfZm4gPSBpZHggPT4gZmxvYXRfb2ZfaW50KDEyICogaWR4KTtcbiAgbGV0IGluaXRfb3BhY2l0eSA9IDEwMC47XG4gIGxldCBvcGFjaXR5X3JlZHVjdGlvbiA9IDIwLjsgLy8gcmVkdWN0aW9uIHBlciBsaW5lXG4gIGxldCBpbml0X2lkeCA9IDA7XG4gIGxldCBkeV9mbiA9IChpZHgsIGJhc2VfaGVpZ2h0KSA9PlxuICAgIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0XG4gICAgKi4gZmxvYXRfb2ZfaW50KGJhc2VfaGVpZ2h0KVxuICAgICouIHNjYWxlX2ZuKGlkeClcbiAgICAtLiA0LjtcbiAgbGV0IGluaXRfeV9vZmZzZXQgPSBkeV9mbihpbml0X2lkeCwgaGVpZ2h0X2hlYWQpO1xuICBsZXQgKF8sIF8sIF8sIHNlbGVjdGlvbnMpID1cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICgoaWR4LCB5X29mZnNldCwgb3BhY2l0eSwgdnMpLCBzOiBTZWxlY3Rpb24udCkgPT4ge1xuICAgICAgICBsZXQgYmFzZV9oZWlnaHQgPSBNZWFzdXJlZC5zZWdtZW50X2hlaWdodChzLmNvbnRlbnQpO1xuICAgICAgICBsZXQgc2NhbGUgPSBzY2FsZV9mbihpZHgpO1xuICAgICAgICBsZXQgeF9vZmZzZXQgPSB4X2ZuKGlkeCk7XG4gICAgICAgIGxldCBuZXdfeV9vZmZzZXQgPSB5X29mZnNldCAtLiBkeV9mbihpZHgsIGJhc2VfaGVpZ2h0KTtcbiAgICAgICAgbGV0IHYgPSBiYWNrcGFja19zZWxfdmlldyh4X29mZnNldCwgbmV3X3lfb2Zmc2V0LCBzY2FsZSwgb3BhY2l0eSwgcyk7XG4gICAgICAgIGxldCBuZXdfaWR4ID0gaWR4ICsgMTtcbiAgICAgICAgbGV0IG5ld19vcGFjaXR5ID0gb3BhY2l0eSAtLiBvcGFjaXR5X3JlZHVjdGlvbjtcbiAgICAgICAgLy9UT0RPKGFuZHJldyk6IGFtIGkgbWFraW5nIHRoaXMgZGlmZmljdWx0IGJ5IGdvaW5nIGJhY2t3YXJkcz9cbiAgICAgICAgKG5ld19pZHgsIG5ld195X29mZnNldCwgbmV3X29wYWNpdHksIExpc3QuY29ucyh2LCB2cykpO1xuICAgICAgfSxcbiAgICAgIChpbml0X2lkeCwgaW5pdF95X29mZnNldCwgaW5pdF9vcGFjaXR5LCBbXSksXG4gICAgICBiYWNrcGFjayxcbiAgICApO1xuICBsZXQgc2VsZWN0aW9uc192aWV3ID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0eWxlXCIsIHNlbGVjdGlvbnNfc3R5bGUpLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJiYWNrcGFja1wiXSksXG4gICAgICAgIF0pLFxuICAgICAgc2VsZWN0aW9ucyxcbiAgICApO1xuICBsZXQgbGVuZ3RoID1cbiAgICBzd2l0Y2ggKGJhY2twYWNrKSB7XG4gICAgfCBbXSA9PiAwXG4gICAgfCBbaGQsIC4uLl9dID0+IE1lYXN1cmVkLnNlZ21lbnRfd2lkdGgoaGQuY29udGVudClcbiAgICB9O1xuXG4gIGxldCBqb2luZXJfc3R5bGUgPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICVmcHg7IHRvcDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gY2FyZXRfYWRqX3B4LFxuICAgICAgKC0zLilcbiAgICAgICsuIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93IC0gdmVydGljYWxfZGlzcClcbiAgICAgICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICAgMy4gKy4gRmxvYXQub2ZfaW50KHZlcnRpY2FsX2Rpc3ApICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICk7XG4gIGxldCBqb2luZXIgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgam9pbmVyX3N0eWxlKSxcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiYmFja3BhY2stam9pbmVyXCJdKSxcbiAgICAgICAgXSksXG4gICAgICBbXSxcbiAgICApO1xuICAvL1RPRE8oYW5kcmV3KTogYnJlYWsgb3V0IGJhY2twYWNrIGRlY29yYXRpb24gaW50byBpdHMgb3duIG1vZHVsZVxuICBsZXQgZ2VuaWVfdmlldyA9XG4gICAgRGVjVXRpbC5jb2RlX3N2ZyhcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+b3JpZ2luPXtyb3c6IDAsIGNvbDogMH0sXG4gICAgICB+YmFzZV9jbHM9W1wicmVzdHJ1Y3R1cmluZy1nZW5pZVwiXSxcbiAgICAgIH5wYXRoX2Nscz1bXCJyZXN0cnVjdHVyaW5nLWdlbmllLXBhdGhcIl0sXG4gICAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgICBNKHt4OiAwLiwgeTogMC59KSxcbiAgICAgICAgVih7eTogKC0xLjApfSksXG4gICAgICAgIEhfKHtkeDogRmxvYXQub2ZfaW50KGxlbmd0aCl9KSxcbiAgICAgICAgVl8oe2R5OiAwLjB9KSxcbiAgICAgICAgWixcbiAgICAgIF0sXG4gICAgKTtcbiAgbGV0IGdlbmllX3N0eWxlID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7XCIsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBjYXJldF9hZGpfcHgsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdyAtIHZlcnRpY2FsX2Rpc3ApXG4gICAgICAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodFxuICAgICAgKy4gMS4sXG4gICAgKTtcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc2VzKFxuICAgICAgICAgIFtcImJhY2twYWNrXCJdIEAgKGNhbl9wdXRfZG93biA/IFtdIDogW1wiY2FudC1wdXQtZG93blwiXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBbXG4gICAgICBzZWxlY3Rpb25zX3ZpZXcsXG4gICAgICBkaXYofmF0dHI9QXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBnZW5pZV9zdHlsZSksIFtnZW5pZV92aWV3XSksXG4gICAgXVxuICAgIEAgKGJhY2twYWNrICE9IFtdID8gW2pvaW5lcl0gOiBbXSksXG4gICk7XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBTdmdVdGlsO1xuXG5sZXQgY2FyZXRfd2lkdGhfc3RyYWlnaHQgPSAwLjE7XG5sZXQgY2FyZXRfd2lkdGhfYmVudCA9IDAuMTtcbmxldCBjYXJldF9iZW5kID0gRGVjVXRpbC50aXBfd2lkdGg7XG5cbm1vZHVsZSBQcm9maWxlID0ge1xuICB0eXBlIHQgPSB7XG4gICAgc2lkZTogRGlyZWN0aW9uLnQsXG4gICAgb3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICBzaGFwZTogb3B0aW9uKERpcmVjdGlvbi50KSxcbiAgfTtcbn07XG5cbmxldCBjYXJldF9wYXRoID0gKHNoYXBlOiBvcHRpb24oRGlyZWN0aW9uLnQpKSA9PiB7XG4gIGxldCBjYXJldF9iZW5kX3BhcmFtID1cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBTb21lKFJpZ2h0KSA9PiAtLiBjYXJldF9iZW5kXG4gICAgfCBTb21lKExlZnQpID0+IGNhcmV0X2JlbmRcbiAgICB8IE5vbmUgPT4gMC4wXG4gICAgfTtcbiAgbGV0IGNhcmV0X3dpZHRoX3BhcmFtID1cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBTb21lKFJpZ2h0KSA9PiAtLiBjYXJldF93aWR0aF9iZW50XG4gICAgfCBTb21lKExlZnQpID0+IGNhcmV0X3dpZHRoX2JlbnRcbiAgICB8IE5vbmUgPT4gY2FyZXRfd2lkdGhfc3RyYWlnaHRcbiAgICB9O1xuICBQYXRoLltcbiAgICBtKH54PTAsIH55PTApLFxuICAgIEgoe3g6IGNhcmV0X3dpZHRoX3BhcmFtfSksXG4gICAgTF8oe2R4OiAtLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogMC41fSksXG4gICAgTF8oe2R4OiArLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogMC41fSksXG4gICAgSCh7eDogLS4gY2FyZXRfd2lkdGhfcGFyYW19KSxcbiAgICBMXyh7ZHg6IC0uIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAoLTAuNSl9KSxcbiAgICBMXyh7ZHg6ICsuIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAoLTAuNSl9KSxcbiAgXTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnByb2ZpbGUgYXMge3NoYXBlLCBzaWRlLCBvcmlnaW59OiBQcm9maWxlLnQsXG4gICAgKSA9PiB7XG4gIGxldCBsX2FkaiA9IERlY1V0aWwuY2FyZXRfYWRqdXN0KHNpZGUsIHNoYXBlKTtcbiAgRGVjVXRpbC5jb2RlX3N2ZyhcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5vcmlnaW4sXG4gICAgfmlkPVwiY2FyZXRcIixcbiAgICB+YmFzZV9jbHM9W1wiYmxpbmtcIl0sXG4gICAgfnBhdGhfY2xzPVtcImNhcmV0LXBhdGhcIl0sXG4gICAgfmhlaWdodF9mdWRnZT1EZWNVdGlsLnNoYWRvd19hZGogKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgfmxlZnRfZnVkZ2U9bF9hZGogKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCxcbiAgICBjYXJldF9wYXRoKHNoYXBlKSxcbiAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbm1vZHVsZSBQcm9maWxlID0ge1xuICB0eXBlIHN0eWxlID0gWyB8IGBCYXJlIHwgYFNpYmxpbmcgfCBgQW5jaG9yIHwgYENhcmV0XTtcbiAgdHlwZSB0ID0ge1xuICAgIHN0eWxlLFxuICAgIG1lYXN1cmVtZW50OiBIYXozbGNvcmUuTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgc29ydDogSGF6M2xjb3JlLlNvcnQudCxcbiAgfTtcbn07XG5cbmxldCBjYXJldF9wb3NpdGlvbl9yYWRpaSA9XG4gICAgKH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsIH5zdHlsZTogUHJvZmlsZS5zdHlsZSkgPT4ge1xuICBsZXQgciA9XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgIHwgYENhcmV0ID0+IDMuNzVcbiAgICB8IGBBbmNob3JcbiAgICB8IGBTaWJsaW5nID0+IDIuNzVcbiAgICB8IGBCYXJlID0+IDIuMFxuICAgIH07XG4gIChyIC8uIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgsIHIgLy4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQpO1xufTtcblxubGV0IHZpZXcgPSAofmZvbnRfbWV0cmljcywge3N0eWxlLCBzb3J0LCBtZWFzdXJlbWVudH06IFByb2ZpbGUudCkgPT4ge1xuICBsZXQgKHJfeCwgcl95KSA9IGNhcmV0X3Bvc2l0aW9uX3JhZGlpKH5mb250X21ldHJpY3MsIH5zdHlsZSk7XG4gIGxldCBjX2NscyA9IEhhejNsY29yZS5Tb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgbGV0IGNscyA9XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgIHwgYEJhcmUgPT4gXCJvdXRlci1jb3VzaW5cIlxuICAgIHwgYENhcmV0ID0+IFwiY3VycmVudC1jYXJldC1wb3NcIlxuICAgIHwgYEFuY2hvciA9PiBcImFuY2hvclwiXG4gICAgfCBgU2libGluZyA9PiBcInNpYmxpbmdcIlxuICAgIH07XG4gIE5vZGUuY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc18oY2xzKSxcbiAgICAgICAgRGVjVXRpbC5hYnNfcG9zaXRpb24ofmZvbnRfbWV0cmljcywgbWVhc3VyZW1lbnQub3JpZ2luKSxcbiAgICAgICAgQXR0ci5jcmVhdGUoXCJ2aWV3Qm94XCIsIFByaW50Zi5zcHJpbnRmKFwiMCAwIDEgMVwiKSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICBdKSxcbiAgICBbXG4gICAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICAgIFwicmVjdFwiLFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoXG4gICAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgICAgY3JlYXRlKFwieFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgLS4gcl94KSksXG4gICAgICAgICAgICAgIGNyZWF0ZShcInlcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIDAuMSAtLiByX3kpKSxcbiAgICAgICAgICAgICAgY3JlYXRlKFwid2lkdGhcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIDEuICouIHJfeCkpLFxuICAgICAgICAgICAgICBjcmVhdGUoXCJoZWlnaHRcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIDEuICouIHJfeSkpLFxuICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiY2FyZXQtcG9zaXRpb24tcGF0aFwiLCBjbHMsIGNfY2xzXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcbiIsInR5cGUgY29sb3JNYXAgPSBIYXozbGNvcmUuSWQuTWFwLnQoc3RyaW5nKTtcblxuLypbQGRlcml2aW5nIHNleHBdKi9cbnR5cGUgdCA9IChjb2xvck1hcCwgaW50KTtcblxuLyogVE9ETzogSGFubmFoIC0gUGljayA3IG9yIHNvIGRpc3RpbmN0IGNvbG9ycyBmcm9tIHRoZSBkaWZmZXJlbnQgY29sb3IgZ2VuZXJhdG9yIHRoaW5nIChIU0x1dilcbiAgIE1ha2Ugc3VyZSBkaXN0aW5ndWlzaGFibGUgZm9yIGNvbG9yIGJsaW5kIG9yIGdyZXlzY2FsZVxuICAgLSB0aGluayBhYm91dCByZWxhdGVkIGNvbG9ycyBmb3IgcmVsYXRlZCBjb25jZXB0cyovXG5sZXQgY2hpbGRfY29sb3JzID0gW1wiYmx1ZVwiLCBcInBpbmtcIiwgXCJ0ZWFsXCIsIFwib3JhbmdlXCIsIFwicHVycGxlXCIsIFwieWVsbG93XCJdO1xuXG5sZXQgZW1wdHkgPSAoSGF6M2xjb3JlLklkLk1hcC5lbXB0eSwgMCk7XG5sZXQgZ2V0X2NvbG9yID0gKGlkOiBIYXozbGNvcmUuSWQudCwgKG1hcHBpbmcsIGluZGV4KTogdCk6IChzdHJpbmcsIHQpID0+XG4gIHN3aXRjaCAoSGF6M2xjb3JlLklkLk1hcC5maW5kX29wdChpZCwgbWFwcGluZykpIHtcbiAgfCBOb25lID0+XG4gICAgbGV0IGNvbG9yID0gTGlzdC5udGgoY2hpbGRfY29sb3JzLCBpbmRleCBtb2QgTGlzdC5sZW5ndGgoY2hpbGRfY29sb3JzKSk7XG4gICAgbGV0IG1hcHBpbmcgPSBIYXozbGNvcmUuSWQuTWFwLmFkZChpZCwgY29sb3IsIG1hcHBpbmcpO1xuICAgIChjb2xvciwgKG1hcHBpbmcsIGluZGV4ICsgMSkpO1xuICB8IFNvbWUoY29sb3IpID0+IChjb2xvciwgKG1hcHBpbmcsIGluZGV4KSlcbiAgfTtcblxubGV0IHRvX2xpc3QgPSAobWFwOiBjb2xvck1hcCk6IGxpc3QoKEhhejNsY29yZS5JZC50LCBzdHJpbmcpKSA9PiB7XG4gIExpc3Qub2Zfc2VxKEhhejNsY29yZS5JZC5NYXAudG9fc2VxKG1hcCkpO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBTdmdVdGlsO1xuXG5sZXQgcnVuOiBOaWIuU2hhcGUudCA9PiBmbG9hdCA9XG4gIGZ1blxuICB8IENvbnZleCA9PiArLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aFxuICB8IENvbmNhdmUoXykgPT4gLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGg7XG5cbmxldCBhZGo6IE5pYi5TaGFwZS50ID0+IGZsb2F0ID1cbiAgZnVuXG4gIHwgQ29udmV4ID0+IERlY1V0aWwuY29udmV4X2FkalxuICB8IENvbmNhdmUoXykgPT4gRGVjVXRpbC5jb25jYXZlX2FkajtcblxubGV0IGxfaG9vayA9IChsOiBOaWIuU2hhcGUudCk6IGxpc3QoUGF0aC5jbWQpID0+IFtcbiAgSF8oe2R4OiAtLiBhZGoobCl9KSxcbiAgTF8oe2R4OiAtLiBydW4obCksIGR5OiAoLTAuNSl9KSxcbiAgTF8oe2R4OiArLiBydW4obCksIGR5OiAoLTAuNSl9KSxcbiAgSF8oe2R4OiArLiBhZGoobCl9KSxcbl07XG5cbmxldCByX2hvb2sgPSAocjogTmliLlNoYXBlLnQpOiBsaXN0KFBhdGguY21kKSA9PiBbXG4gIEhfKHtkeDogKy4gYWRqKHIpfSksXG4gIExfKHtkeDogKy4gcnVuKHIpLCBkeTogMC41fSksXG4gIExfKHtkeDogLS4gcnVuKHIpLCBkeTogMC41fSksXG4gIEhfKHtkeDogLS4gYWRqKHIpfSksXG5dO1xuXG5sZXQgc2ltcGxlX3NoYXJkX3BhdGggPSAoKGwsIHIpOiBOaWJzLnNoYXBlcywgbGVuZ3RoOiBpbnQpOiBsaXN0KFBhdGguY21kKSA9PlxuICBMaXN0LmZsYXR0ZW4oXG4gICAgUGF0aC5bXG4gICAgICBbbSh+eD0wLCB+eT0wKSwgaCh+eD1sZW5ndGgpXSxcbiAgICAgIHJfaG9vayhyKSxcbiAgICAgIFtoKH54PTApXSxcbiAgICAgIGxfaG9vayhsKSxcbiAgICBdLFxuICApO1xuXG5sZXQgc2ltcGxlX3NoYXJkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfnNoYXBlcyxcbiAgICAgIH5wYXRoX2NscyxcbiAgICAgIH5iYXNlX2NscyxcbiAgICAgIH5mdWRnZT1EZWNVdGlsLmZ6ZXJvLFxuICAgICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIClcbiAgICA6IHQgPT5cbiAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5tZWFzdXJlbWVudCxcbiAgICB+YmFzZV9jbHMsXG4gICAgfnBhdGhfY2xzLFxuICAgIH5mdWRnZSxcbiAgICBzaW1wbGVfc2hhcmRfcGF0aChzaGFwZXMsIG1lYXN1cmVtZW50Lmxhc3QuY29sIC0gbWVhc3VyZW1lbnQub3JpZ2luLmNvbCksXG4gICk7XG5cbmxldCBzaW1wbGVfc2hhcmRfc2VsZWN0ZWQgPVxuICAgICh+Zm9udF9tZXRyaWNzLCB+c2hhcGVzLCB+bWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LCB+YnVmZmVyKTogdCA9PiB7XG4gIGxldCBwYXRoX2NscyA9IFtcbiAgICBcInRpbGUtcGF0aFwiLFxuICAgIFwicmFpc2VkXCIsXG4gICAgYnVmZmVyID8gXCJzZWxlY3RlZC1idWZmZXJcIiA6IFwic2VsZWN0ZWRcIixcbiAgXTtcbiAgbGV0IGJhc2VfY2xzID0gW1widGlsZS1zZWxlY3RlZFwiXTtcbiAgc2ltcGxlX3NoYXJkKFxuICAgIC8qIEluY3JlYXNlIGhlaWdodCBzbGlnaHRseSB0byBhdm9pZCBsZWF2aW5nIHNwYWNlcyBiZXR3ZWVuIHNlbGVjdGVkIGxpbmVzICovXG4gICAgfmZ1ZGdlPXtoZWlnaHQ6IDAuMywgdG9wOiAwLiwgd2lkdGg6IDAuLCBsZWZ0OiAwLn0sXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+c2hhcGVzLFxuICAgIH5wYXRoX2NscyxcbiAgICB+YmFzZV9jbHMsXG4gICAgbWVhc3VyZW1lbnQsXG4gICk7XG59O1xuXG5sZXQgc2ltcGxlX3NoYXJkX2luZGljYXRlZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5oYXNfY2FyZXQsXG4gICAgICB+c2hhcGVzLFxuICAgICAgfnNvcnQsXG4gICAgICB+bWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIClcbiAgICA6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPVxuICAgIFtcInRpbGUtcGF0aFwiLCBcInJhaXNlZFwiLCBTb3J0LnRvX3N0cmluZyhzb3J0KV1cbiAgICBAIChoYXNfY2FyZXQgPyBbXCJpbmRpY2F0ZWQtY2FyZXRcIl0gOiBbXCJpbmRpY2F0ZWRcIl0pO1xuICBsZXQgYmFzZV9jbHMgPSBbXCJ0aWxlLWluZGljYXRlZFwiXTtcbiAgc2ltcGxlX3NoYXJkKH5mb250X21ldHJpY3MsIH5zaGFwZXMsIH5wYXRoX2NscywgfmJhc2VfY2xzLCBtZWFzdXJlbWVudCk7XG59O1xuXG5sZXQgc2ltcGxlX3NoYXJkc19pbmRpY2F0ZWQgPVxuICAgICh+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LCB+Y2FyZXQ6IChJZC50LCBpbnQpLCAoaWQsIG1vbGQsIHNoYXJkcykpXG4gICAgOiBsaXN0KHQpID0+XG4gIExpc3QubWFwKFxuICAgICgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgIHNpbXBsZV9zaGFyZF9pbmRpY2F0ZWQoXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH5oYXNfY2FyZXQ9Y2FyZXQgPT0gKGlkLCBpbmRleCksXG4gICAgICAgIH5zaGFwZXM9TW9sZC5uaWJfc2hhcGVzKH5pbmRleCwgbW9sZCksXG4gICAgICAgIH5zb3J0PW1vbGQub3V0LFxuICAgICAgICB+bWVhc3VyZW1lbnQsXG4gICAgICApLFxuICAgIHNoYXJkcyxcbiAgKTtcblxubGV0IHNoYWRvd2Z1ZGdlID0gUGF0aC5jbWRmdWRnZSh+eT1EZWNVdGlsLnNoYWRvd19hZGopO1xuXG5sZXQgc2hhcmRzX29mX3RpbGVzID0gdGlsZXMgPT5cbiAgdGlsZXNcbiAgfD4gTGlzdC5jb25jYXRfbWFwKCgoXywgXywgc2hhcmRzKSkgPT4gc2hhcmRzKVxuICB8PiBMaXN0LnNvcnQoXG4gICAgICAgKChfLCBtMTogTWVhc3VyZWQubWVhc3VyZW1lbnQpLCAoXywgbTI6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSkgPT5cbiAgICAgICBNZWFzdXJlZC5Qb2ludC5jb21wYXJlKG0xLm9yaWdpbiwgbTIub3JpZ2luKVxuICAgICApO1xuXG5sZXQgYmlfbGluZXMgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cm93czogTWVhc3VyZWQuUm93cy50LFxuICAgICAgdGlsZXM6IGxpc3QoKElkLnQsIE1vbGQudCwgTWVhc3VyZWQuU2hhcmRzLnQpKSxcbiAgICApXG4gICAgOiBsaXN0KHQpID0+IHtcbiAgbGV0IHNoYXJkcyA9IHNoYXJkc19vZl90aWxlcyh0aWxlcyk7XG4gIGxldCBzaGFyZF9yb3dzID0gTWVhc3VyZWQuU2hhcmRzLnNwbGl0X2J5X3JvdyhzaGFyZHMpO1xuICBsZXQgaW50cmFfbGluZXMgPVxuICAgIHNoYXJkX3Jvd3NcbiAgICB8PiBMaXN0Lm1hcChMaXN0VXRpbC5uZWlnaGJvcnMpXG4gICAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICgoKF8sIGw6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSwgKF8sIHI6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSkpID0+XG4gICAgICAgICAgIChcbiAgICAgICAgICAgICBsLm9yaWdpbixcbiAgICAgICAgICAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgICBoKH54PXIubGFzdC5jb2wgLSBsLm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIClcbiAgICAgICAgICksXG4gICAgICAgKTtcbiAgbGV0IGludGVyX2xpbmVzID1cbiAgICBMaXN0VXRpbC5uZWlnaGJvcnMoc2hhcmRfcm93cylcbiAgICB8PiBMaXN0Lm1hcChcbiAgICAgICAgICgocm93X3NoYXJkczogTWVhc3VyZWQuU2hhcmRzLnQsIHJvd19zaGFyZHMnOiBNZWFzdXJlZC5TaGFyZHMudCkpID0+IHtcbiAgICAgICAgIGFzc2VydChyb3dfc2hhcmRzICE9IFtdKTtcbiAgICAgICAgIGFzc2VydChyb3dfc2hhcmRzJyAhPSBbXSk7XG4gICAgICAgICBsZXQgb3JpZ2luID0gc25kKExpc3QuaGQocm93X3NoYXJkcykpLm9yaWdpbjtcbiAgICAgICAgIGxldCBvcmlnaW4nID0gc25kKExpc3QuaGQocm93X3NoYXJkcycpKS5vcmlnaW47XG4gICAgICAgICBsZXQgaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKG9yaWdpbi5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgICAgIGxldCB2X2RlbHRhID0gb3JpZ2luJy5jb2wgPT0gaW5kZW50ID8gKC0xKSA6IDA7XG4gICAgICAgICAoXG4gICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICBoXyh+ZHg9aW5kZW50IC0gb3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodl8ofmR5PW9yaWdpbicucm93IC0gb3JpZ2luLnJvdyArIHZfZGVsdGEpKSxcbiAgICAgICAgICAgICBoXyh+ZHg9b3JpZ2luJy5jb2wgLSBpbmRlbnQpLFxuICAgICAgICAgICBdLFxuICAgICAgICAgKTtcbiAgICAgICB9KTtcbiAgLy8gVE9ETyhkKSBjbGVhbiB1cCBQcm9maWxlIGRhdGF0eXBlXG4gIGxldCBzID1cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IHRpbGVcIilcbiAgICB8IFsoXywgbW9sZCwgXyksIC4uLl9dID0+IG1vbGQub3V0XG4gICAgfTtcbiAgbGV0IGNsc3MgPSBbXCJjaGlsZC1saW5lXCIsIFNvcnQudG9fc3RyaW5nKHMpXTtcbiAgaW50cmFfbGluZXNcbiAgQCBpbnRlcl9saW5lc1xuICB8PiBMaXN0Lm1hcCgoKG9yaWdpbiwgcGF0aCkpID0+XG4gICAgICAgRGVjVXRpbC5jb2RlX3N2Zyh+Zm9udF9tZXRyaWNzLCB+b3JpZ2luLCB+cGF0aF9jbHM9Y2xzcywgcGF0aClcbiAgICAgKTtcbn07XG5cbmxldCB1bmlfbGluZXMgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cm93czogTWVhc3VyZWQuUm93cy50LFxuICAgICAgKGw6IE1lYXN1cmVkLlBvaW50LnQsIHI6IE1lYXN1cmVkLlBvaW50LnQpLFxuICAgICAgdGlsZXM6IGxpc3QoKElkLnQsIE1vbGQudCwgTWVhc3VyZWQuU2hhcmRzLnQpKSxcbiAgICApID0+IHtcbiAgb3BlbiBTdmdVdGlsLlBhdGg7XG4gIGxldCBzaGFyZHMgPSBzaGFyZHNfb2ZfdGlsZXModGlsZXMpO1xuICBsZXQgbF9saW5lID0ge1xuICAgIGxldCAoXywgbV9maXJzdCkgPSBMaXN0LmhkKHNoYXJkcyk7XG4gICAgbGV0IChfLCBtX2xhc3Rfb2ZfZmlyc3QpID0ge1xuICAgICAgbGV0IHNoYXJkX3Jvd3MgPSBNZWFzdXJlZC5TaGFyZHMuc3BsaXRfYnlfcm93KHNoYXJkcyk7XG4gICAgICBhc3NlcnQoc2hhcmRfcm93cyAhPSBbXSk7XG4gICAgICBsZXQgcm93ID0gTGlzdC5oZChzaGFyZF9yb3dzKTtcbiAgICAgIGFzc2VydChyb3cgIT0gW10pO1xuICAgICAgTGlzdFV0aWwubGFzdChyb3cpO1xuICAgIH07XG4gICAgaWYgKE1lYXN1cmVkLlBvaW50LmNvbXBhcmUobCwgbV9maXJzdC5vcmlnaW4pIDwgMCkge1xuICAgICAgbGV0IG1heF9jb2wgPVxuICAgICAgICBNZWFzdXJlZC5Sb3dzLm1heF9jb2woXG4gICAgICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPWwucm93LCBtX2ZpcnN0Lm9yaWdpbi5yb3cpLFxuICAgICAgICAgIHJvd3MsXG4gICAgICAgIClcbiAgICAgICAgfD4gbWF4KG1fZmlyc3Qub3JpZ2luLmNvbCk7XG4gICAgICBsZXQgaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKG1fZmlyc3Qub3JpZ2luLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgW1xuICAgICAgICBsLnJvdyA9PSBtX2ZpcnN0Lm9yaWdpbi5yb3dcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIG1fZmlyc3Qub3JpZ2luLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICAgaCh+eD1sLmNvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgIExfKHtcbiAgICAgICAgICAgICAgICBkeDogLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgICAgICAgICAgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCAvLiAyLiAvL2hhY2tcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vTF8oe1xuICAgICAgICAgICAgICAvLyAgZHg6IERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICAgICAgICAvLyAgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCxcbiAgICAgICAgICAgICAgLy99KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKVxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgbV9maXJzdC5vcmlnaW4sXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIG1fZmlyc3Qub3JpZ2luLmNvbCA9PSBpbmRlbnRcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIG0ofng9bV9sYXN0X29mX2ZpcnN0Lmxhc3QuY29sIC0gbV9maXJzdC5vcmlnaW4uY29sLCB+eT0wKSxcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE8oZCkgbmVlZCB0byB0YWtlIG1heCBvZiBhbGwgcm93cywgbm90IGp1c3QgdG9wXG4gICAgICAgICAgICAgICAgICBoKH54PW1heF9jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1sLnJvdyAtIG1fbGFzdF9vZl9maXJzdC5vcmlnaW4ucm93KSksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgICAgICBoKH54PWluZGVudCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PWwucm93ICsgMSAtIG1fZmlyc3Qub3JpZ2luLnJvdykpLFxuICAgICAgICAgICAgICAgICAgaCh+eD1tYXhfY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9bC5yb3cgLSBtX2ZpcnN0Lm9yaWdpbi5yb3cpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBAIFtcbiAgICAgICAgICAgICAgaCh+eD1sLmNvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgIExfKHtcbiAgICAgICAgICAgICAgICBkeDogLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgICAgICAgICAgZHk6IERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCAvLiAyLiAvL2hhY2tcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vTF8oe2R4OiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCwgZHk6IERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgW107XG4gICAgfTtcbiAgfTtcbiAgbGV0IHJfbGluZSA9IHtcbiAgICBsZXQgKF8sIG1fbGFzdCkgPSBMaXN0VXRpbC5sYXN0KHNoYXJkcyk7XG4gICAgbGV0IGhvb2sgPSBbXG4gICAgICBMXyh7XG4gICAgICAgIGR4OiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCAvLiAyLiAvL2hhY2tcbiAgICAgIH0pLFxuICAgICAgLy9MXyh7ZHg6IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLCBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgXTtcbiAgICBpZiAoci5yb3cgPT0gbV9sYXN0Lmxhc3Qucm93ICYmIHIuY29sID4gbV9sYXN0Lmxhc3QuY29sKSB7XG4gICAgICBbXG4gICAgICAgIChcbiAgICAgICAgICBtX2xhc3Qub3JpZ2luLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKFxuICAgICAgICAgICAgICBtKFxuICAgICAgICAgICAgICAgIH54PW1fbGFzdC5sYXN0LmNvbCAtIG1fbGFzdC5vcmlnaW4uY29sLFxuICAgICAgICAgICAgICAgIH55PW1fbGFzdC5sYXN0LnJvdyAtIG1fbGFzdC5vcmlnaW4ucm93ICsgMSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBoKH54PXIuY29sIC0gbV9sYXN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgLi4uaG9vayxcbiAgICAgICAgICBdLFxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKHIucm93ID4gbV9sYXN0Lmxhc3Qucm93KSB7XG4gICAgICBsZXQgbWluX2NvbCA9XG4gICAgICAgIE1lYXN1cmVkLlJvd3MubWluX2NvbChcbiAgICAgICAgICBMaXN0VXRpbC5yYW5nZSh+bG89bV9sYXN0Lmxhc3Qucm93LCByLnJvdyArIDEpLFxuICAgICAgICAgIHJvd3MsXG4gICAgICAgIClcbiAgICAgICAgfD4gbWluKG1fbGFzdC5sYXN0LmNvbCk7XG4gICAgICAvLyBsZXQgcl9pbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQoci5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgIGxldCAoXywgbV9mbGFzdCkgPSB7XG4gICAgICAgIGxldCBzaGFyZF9yb3dzID0gTWVhc3VyZWQuU2hhcmRzLnNwbGl0X2J5X3JvdyhzaGFyZHMpO1xuICAgICAgICBhc3NlcnQoc2hhcmRfcm93cyAhPSBbXSk7XG4gICAgICAgIGxldCByb3cgPSBMaXN0VXRpbC5sYXN0KHNoYXJkX3Jvd3MpO1xuICAgICAgICBhc3NlcnQocm93ICE9IFtdKTtcbiAgICAgICAgTGlzdC5oZChyb3cpO1xuICAgICAgfTtcbiAgICAgIC8vIGxldCBmbGFzdF9pbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQobV9mbGFzdC5vcmlnaW4ucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICBbXG4gICAgICAgIChcbiAgICAgICAgICBtX2ZsYXN0Lm9yaWdpbixcbiAgICAgICAgICBbXG4gICAgICAgICAgICBzaGFkb3dmdWRnZShcbiAgICAgICAgICAgICAgbSh+eD0wLCB+eT1tX2ZsYXN0Lmxhc3Qucm93IC0gbV9mbGFzdC5vcmlnaW4ucm93ICsgMSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaCh+eD1taW5fY29sIC0gbV9mbGFzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9ci5yb3cgLSBtX2ZsYXN0Lm9yaWdpbi5yb3cgKyAxKSksXG4gICAgICAgICAgICBoKH54PXIuY29sIC0gbV9mbGFzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgIC4uLmhvb2ssXG4gICAgICAgICAgXSxcbiAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIFtdO1xuICAgIH07XG4gIH07XG4gIC8vIFRPRE8oZCkgY2xlYW4gdXAgUHJvZmlsZSBkYXRhdHlwZVxuICBsZXQgcyA9XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSB0aWxlXCIpXG4gICAgfCBbKF8sIG1vbGQsIF8pLCAuLi5fXSA9PiBtb2xkLm91dFxuICAgIH07XG4gIGxldCBjbHNzID0gW1wiY2hpbGQtbGluZVwiLCBTb3J0LnRvX3N0cmluZyhzKV07XG4gIGxfbGluZVxuICBAIHJfbGluZVxuICB8PiBMaXN0Lm1hcCgoKG9yaWdpbiwgcGF0aCkpID0+XG4gICAgICAgRGVjVXRpbC5jb2RlX3N2Zyh+Zm9udF9tZXRyaWNzLCB+b3JpZ2luLCB+cGF0aF9jbHM9Y2xzcywgcGF0aClcbiAgICAgKTtcbn07XG5cbmxldCBpbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cm93czogTWVhc3VyZWQuUm93cy50LFxuICAgICAgfmNhcmV0LFxuICAgICAgfnRpbGVzLFxuICAgICAgcmFuZ2UsXG4gICAgKVxuICAgIDogbGlzdChOb2RlLnQpID0+IHtcbiAgTGlzdC5jb25jYXRfbWFwKHNpbXBsZV9zaGFyZHNfaW5kaWNhdGVkKH5mb250X21ldHJpY3MsIH5jYXJldCksIHRpbGVzKVxuICBAIHVuaV9saW5lcyh+Zm9udF9tZXRyaWNzLCB+cm93cywgcmFuZ2UsIHRpbGVzKVxuICBAIGJpX2xpbmVzKH5mb250X21ldHJpY3MsIH5yb3dzLCB0aWxlcyk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBEZWNvID1cbiAgICAgICAoXG4gICAgICAgICBNOiB7XG4gICAgICAgICAgIGxldCBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQ7XG4gICAgICAgICAgIGxldCBtYXA6IE1lYXN1cmVkLnQ7XG4gICAgICAgICAgIGxldCBzaG93X2JhY2twYWNrX3RhcmdldHM6IGJvb2w7XG4gICAgICAgICAgIGxldCB0ZXJtczogVGVybU1hcC50O1xuICAgICAgICAgICBsZXQgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudDtcbiAgICAgICAgICAgbGV0IGVycm9yX2lkczogbGlzdChJZC50KTtcbiAgICAgICAgICAgbGV0IHRpbGVzOiBUaWxlTWFwLnQ7XG4gICAgICAgICB9LFxuICAgICAgICkgPT4ge1xuICBsZXQgZm9udF9tZXRyaWNzID0gTS5mb250X21ldHJpY3M7XG5cbiAgbGV0IHRpbGUgPSBpZCA9PiBJZC5NYXAuZmluZChpZCwgTS50aWxlcyk7XG5cbiAgbGV0IGNhcmV0ID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBsZXQgb3JpZ2luID0gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWFwLCB6KTtcbiAgICBsZXQgc2hhcGUgPSBaaXBwZXIuY2FyZXRfZGlyZWN0aW9uKHopO1xuICAgIGxldCBzaWRlID1cbiAgICAgIHN3aXRjaCAoSW5kaWNhdGVkLnBpZWNlKHopKSB7XG4gICAgICB8IFNvbWUoKF8sIHNpZGUsIF8pKSA9PiBzaWRlXG4gICAgICB8IF8gPT4gUmlnaHRcbiAgICAgIH07XG4gICAgW0NhcmV0RGVjLnZpZXcofmZvbnRfbWV0cmljcywgfnByb2ZpbGU9e3NpZGUsIG9yaWdpbiwgc2hhcGV9KV07XG4gIH07XG5cbiAgdHlwZSBzaGFyZF9kYXRhID0gKE1lYXN1cmVkLm1lYXN1cmVtZW50LCBOaWJzLnNoYXBlcyk7XG5cbiAgbGV0IHNlbF9zaGFyZF9zdmcgPVxuICAgICAgKH5pbmRleD0/LCB+c3RhcnRfc2hhcGUsIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCwgcClcbiAgICAgIDogKE1lYXN1cmVkLm1lYXN1cmVtZW50LCBOaWJzLnNoYXBlcykgPT4gKFxuICAgIG1lYXN1cmVtZW50LFxuICAgIE1vbGQubmliX3NoYXBlcyh+aW5kZXg/LCBQaWVjZS5tb2xkX29mKH5zaGFwZT1zdGFydF9zaGFwZSwgcCkpLFxuICApO1xuXG4gIGxldCByZWMgc2VsX29mX3BpZWNlID1cbiAgICAgICAgICAoc3RhcnRfc2hhcGU6IE5pYi5TaGFwZS50LCBwOiBQaWVjZS50KVxuICAgICAgICAgIDogKE5pYi5TaGFwZS50LCBsaXN0KG9wdGlvbihzaGFyZF9kYXRhKSkpID0+IHtcbiAgICBsZXQgc2hhcmRfZGF0YSA9XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgVGlsZSh0KSA9PiBzZWxfb2ZfdGlsZSh+c3RhcnRfc2hhcGUsIHQpXG4gICAgICB8IEdyb3V0KGcpID0+IFtcbiAgICAgICAgICBTb21lKHNlbF9zaGFyZF9zdmcofnN0YXJ0X3NoYXBlLCBNZWFzdXJlZC5maW5kX2coZywgTS5tYXApLCBwKSksXG4gICAgICAgIF1cbiAgICAgIHwgU2Vjb25kYXJ5KHcpIHdoZW4gU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KSA9PiBbTm9uZV1cbiAgICAgIHwgU2Vjb25kYXJ5KHcpID0+IFtcbiAgICAgICAgICBTb21lKHNlbF9zaGFyZF9zdmcofnN0YXJ0X3NoYXBlLCBNZWFzdXJlZC5maW5kX3codywgTS5tYXApLCBwKSksXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgbGV0IHN0YXJ0X3NoYXBlID1cbiAgICAgIHN3aXRjaCAoUGllY2UubmlicyhwKSkge1xuICAgICAgfCBOb25lID0+IHN0YXJ0X3NoYXBlXG4gICAgICB8IFNvbWUoKF8sIHtzaGFwZSwgX30pKSA9PiBzaGFwZVxuICAgICAgfTtcbiAgICAoc3RhcnRfc2hhcGUsIHNoYXJkX2RhdGEpO1xuICB9XG4gIGFuZCBzZWxfb2ZfdGlsZSA9ICh+c3RhcnRfc2hhcGUsIHQ6IFRpbGUudCk6IGxpc3Qob3B0aW9uKHNoYXJkX2RhdGEpKSA9PiB7XG4gICAgbGV0IHRpbGVfc2hhcmRzID1cbiAgICAgIE1lYXN1cmVkLmZpbmRfc2hhcmRzKHQsIE0ubWFwKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChpLCBfKSkgPT4gTGlzdC5tZW0oaSwgdC5zaGFyZHMpKVxuICAgICAgfD4gTGlzdC5tYXAoKChpbmRleCwgbWVhc3VyZW1lbnQpKSA9PlxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgU29tZShzZWxfc2hhcmRfc3ZnKH5zdGFydF9zaGFwZSwgfmluZGV4LCBtZWFzdXJlbWVudCwgVGlsZSh0KSkpLFxuICAgICAgICAgICBdXG4gICAgICAgICApO1xuICAgIGxldCBzaGFwZV9hdCA9IGluZGV4ID0+IHNuZChNb2xkLm5pYnMofmluZGV4LCB0Lm1vbGQpKS5zaGFwZTtcbiAgICBsZXQgY2hpbGRyZW5fc2hhcmRzID1cbiAgICAgIHQuY2hpbGRyZW4gfD4gTGlzdC5tYXBpKGluZGV4ID0+IHNlbF9vZl9zZWdtZW50KHNoYXBlX2F0KGluZGV4KSkpO1xuICAgIExpc3RVdGlsLmludGVybGVhdmUodGlsZV9zaGFyZHMsIGNoaWxkcmVuX3NoYXJkcykgfD4gTGlzdC5mbGF0dGVuO1xuICB9XG4gIGFuZCBzZWxfb2Zfc2VnbWVudCA9XG4gICAgICAoc3RhcnRfc2hhcGU6IE5pYi5TaGFwZS50LCBzZWc6IFNlZ21lbnQudCk6IGxpc3Qob3B0aW9uKHNoYXJkX2RhdGEpKSA9PiB7XG4gICAgc2VnXG4gICAgfD4gTGlzdFV0aWwuZm9sZF9sZWZ0X21hcChzZWxfb2ZfcGllY2UsIHN0YXJ0X3NoYXBlKVxuICAgIHw+IHNuZFxuICAgIHw+IExpc3QuZmxhdHRlbjtcbiAgfVxuICBhbmQgc2VsZWN0ZWRfcGllY2VzID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+XG4gICAgLyogV2UgZHJhdyBhIHNpbmdsZSBkZWNvIHBlciByb3cgYnkgZGl2aWRpbmcgcGFydGlvbmluaW5nIHRoZSBzaGFyZHNcbiAgICAgKiBpbnRvIGxpbmVicmVhay1zZXBlcmF0ZWQgc2VnbWVudHMsIHRoZW4gY29tYmluaW5nIHRoZSBtZWFzdXJlbWVudHNcbiAgICAgKiBhbmQgc2hhcGVzIG9mIHRoZSBmaXJzdCBhbmQgbGFzdCBzaGFyZCBvZiBlYWNoIHNlZ21lbnQuIElkZWFsbHkgd2VcbiAgICAgKiBjb3VsZCBqdXN0IGdldCB0aGlzIGluZm8gZnJvbSB0aGUgcm93IG1lYXN1cmVtZW50cywgYnV0IHdlIGhhdmUgbm9cbiAgICAgKiBjdXJyZW50IHdheSBvZiBmaWd1cmluZyBvdXQgc2hhcGVzIGZvciB3aGl0ZXNwYWNlIHdpdGhvdXQgdHJhdmVyc2luZyAqL1xuICAgIHNlbF9vZl9zZWdtZW50KFxuICAgICAgZnN0KFNpYmxpbmdzLnNoYXBlcyh6LnJlbGF0aXZlcy5zaWJsaW5ncykpLFxuICAgICAgei5zZWxlY3Rpb24uY29udGVudCxcbiAgICApXG4gICAgfD4gTGlzdFV0aWwuc3BsaXRfYXRfbm9uZXNcbiAgICB8PiBMaXN0VXRpbC5maXJzdF9hbmRfbGFzdFxuICAgIHw+IExpc3QubWFwKCgoKG0xLCAobDEsIF8pKTogc2hhcmRfZGF0YSwgKG0yLCAoXywgcjIpKTogc2hhcmRfZGF0YSkpID0+XG4gICAgICAgICAoKHtvcmlnaW46IG0xLm9yaWdpbiwgbGFzdDogbTIubGFzdH0sIChsMSwgcjIpKTogc2hhcmRfZGF0YSlcbiAgICAgICApXG4gICAgfD4gTGlzdC5tYXAoKChtZWFzdXJlbWVudCwgc2hhcGVzKSkgPT5cbiAgICAgICAgIFBpZWNlRGVjLnNpbXBsZV9zaGFyZF9zZWxlY3RlZChcbiAgICAgICAgICAgfmJ1ZmZlcj1TZWxlY3Rpb24uaXNfYnVmZmVyKHouc2VsZWN0aW9uKSxcbiAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgfm1lYXN1cmVtZW50LFxuICAgICAgICAgICB+c2hhcGVzLFxuICAgICAgICAgKVxuICAgICAgICk7XG5cbiAgbGV0IGluZGljYXRlZF9waWVjZV9kZWNvID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBzd2l0Y2ggKEluZGljYXRlZC5waWVjZSh6KSkge1xuICAgIHwgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4gW11cbiAgICB8IE5vbmUgPT4gW11cbiAgICB8IFNvbWUoKEdyb3V0KF8pLCBfLCBfKSkgPT4gW11cbiAgICB8IFNvbWUoKHAsIHNpZGUsIF8pKSA9PlxuICAgICAgLy8gcm9vdF9wcm9maWxlIGNhbGN1bGF0aW9uIGFzc3VtZXMgcCBpcyB0aWxlXG4gICAgICAvLyBUT0RPIGVuY29kZSBpbiB0eXBlc1xuICAgICAgbGV0IF9uaWJfc2hhcGUgPVxuICAgICAgICBzd2l0Y2ggKFppcHBlci5jYXJldF9kaXJlY3Rpb24oeikpIHtcbiAgICAgICAgfCBOb25lID0+IE5pYi5TaGFwZS5Db252ZXhcbiAgICAgICAgfCBTb21lKG5pYikgPT4gTmliLlNoYXBlLnJlbGF0aXZlKG5pYiwgc2lkZSlcbiAgICAgICAgfTtcbiAgICAgIGxldCByYW5nZTogb3B0aW9uKChNZWFzdXJlZC5Qb2ludC50LCBNZWFzdXJlZC5Qb2ludC50KSkgPSB7XG4gICAgICAgIC8vIGlmIChQaWVjZS5oYXNfZW5kcyhwKSkge1xuICAgICAgICBzd2l0Y2ggKFRlcm1SYW5nZXMuZmluZF9vcHQoUGllY2UuaWQocCksIE0udGVybV9yYW5nZXMpKSB7XG4gICAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICAgIHwgU29tZSgocF9sLCBwX3IpKSA9PlxuICAgICAgICAgIGxldCBsID0gTWVhc3VyZWQuZmluZF9wKHBfbCwgTS5tYXApLm9yaWdpbjtcbiAgICAgICAgICBsZXQgciA9IE1lYXN1cmVkLmZpbmRfcChwX3IsIE0ubWFwKS5sYXN0O1xuICAgICAgICAgIFNvbWUoKGwsIHIpKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgaW5kZXggPVxuICAgICAgICBzd2l0Y2ggKEluZGljYXRlZC5zaGFyZF9pbmRleCh6KSkge1xuICAgICAgICB8IE5vbmUgPT4gKC0xKVxuICAgICAgICB8IFNvbWUoaSkgPT4gaVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoIChyYW5nZSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUocmFuZ2UpID0+XG4gICAgICAgIGxldCB0aWxlcyA9XG4gICAgICAgICAgSWQuTWFwLmZpbmQoUGllY2UuaWQocCksIE0udGVybXMpXG4gICAgICAgICAgfD4gVGVybS5pZHNcbiAgICAgICAgICAvKiBOT1RFKGFuZHJldyk6IGRhcmtfaWRzIHdlcmUgb3JpZ2luYWxseSBmaWx0ZXJlZCBoZXJlLlxuICAgICAgICAgICAqIExlYXZpbmcgdGhpcyBjb21tZW50IGluIHBsYWNlIGluIGNhc2UgaXNzdWVzIGluIHRoZVxuICAgICAgICAgICAqIGZ1dHVyZSBhcmUgdHJhY2VkIGJhY2sgdG8gaGVyZS5cbiAgICAgICAgICAgKiB8PiBMaXN0LmZpbHRlcihpZCA9PiBpZCA+PSAwKSovXG4gICAgICAgICAgfD4gTGlzdC5tYXAoaWQgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHQgPSB0aWxlKGlkKTtcbiAgICAgICAgICAgICAgIChpZCwgdC5tb2xkLCBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBNLm1hcCkpO1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICBQaWVjZURlYy5pbmRpY2F0ZWQoXG4gICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICB+cm93cz1NLm1hcC5yb3dzLFxuICAgICAgICAgIH5jYXJldD0oUGllY2UuaWQocCksIGluZGV4KSxcbiAgICAgICAgICB+dGlsZXMsXG4gICAgICAgICAgcmFuZ2UsXG4gICAgICAgICk7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyB0YXJnZXRzID0gKH5jb250YWluZXJfc2hhcmRzPT8sIGJwOiBCYWNrcGFjay50LCBzZWc6IFNlZ21lbnQudCkgPT4ge1xuICAgIGxldCB3aXRoX2NvbnRhaW5lcl9zaGFyZHMgPSAoKHByZSwgc3VmKSBhcyBzaWJzKSA9PlxuICAgICAgc3dpdGNoIChjb250YWluZXJfc2hhcmRzKSB7XG4gICAgICB8IE5vbmUgPT4gc2lic1xuICAgICAgfCBTb21lKChsLCByKSkgPT4gKFtsLCAuLi5wcmVdLCBzdWYgQCBbcl0pXG4gICAgICB9O1xuICAgIGxldCByb290X3RhcmdldHMgPVxuICAgICAgTGlzdFV0aWwuc3BsaXRzKHNlZylcbiAgICAgIHw+IExpc3QuY29uY2F0X21hcCgoKGwsIHIpKSA9PiB7XG4gICAgICAgICAgIGxldCBzaWJzID1cbiAgICAgICAgICAgICBTZWdtZW50LihpbmNvbXBsZXRlX3RpbGVzKGwpLCBpbmNvbXBsZXRlX3RpbGVzKHIpKVxuICAgICAgICAgICAgIHw+IHdpdGhfY29udGFpbmVyX3NoYXJkcztcbiAgICAgICAgICAgc3dpdGNoIChCYWNrcGFjay5wb3Aoc2licywgYnApKSB7XG4gICAgICAgICAgIHwgTm9uZVxuICAgICAgICAgICB8IFNvbWUoKHRydWUsIF8sIF8pKSA9PiBbXVxuICAgICAgICAgICB8IFNvbWUoXykgPT5cbiAgICAgICAgICAgICBsZXQgbWVhc3VyZW1lbnQgPVxuICAgICAgICAgICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoKGwsIHIpKSkge1xuICAgICAgICAgICAgICAgfCAoTm9uZSwgTm9uZSkgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlXCIpXG4gICAgICAgICAgICAgICB8IChfLCBTb21lKHApKSA9PlxuICAgICAgICAgICAgICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBNLm1hcCk7XG4gICAgICAgICAgICAgICAgIE1lYXN1cmVkLntvcmlnaW46IG0ub3JpZ2luLCBsYXN0OiBtLm9yaWdpbn07XG4gICAgICAgICAgICAgICB8IChTb21lKHApLCBfKSA9PlxuICAgICAgICAgICAgICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBNLm1hcCk7XG4gICAgICAgICAgICAgICAgIE1lYXN1cmVkLntvcmlnaW46IG0ubGFzdCwgbGFzdDogbS5sYXN0fTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgbGV0IHByb2ZpbGUgPVxuICAgICAgICAgICAgICAgQ2FyZXRQb3NEZWMuUHJvZmlsZS57c3R5bGU6IGBTaWJsaW5nLCBtZWFzdXJlbWVudCwgc29ydDogRXhwfTtcbiAgICAgICAgICAgICBbQ2FyZXRQb3NEZWMudmlldyh+Zm9udF9tZXRyaWNzLCBwcm9maWxlKV07XG4gICAgICAgICAgIH07XG4gICAgICAgICB9KTtcbiAgICBzd2l0Y2ggKHJvb3RfdGFyZ2V0cykge1xuICAgIHwgW18sIC4uLl9dID0+IHJvb3RfdGFyZ2V0c1xuICAgIHwgW10gPT5cbiAgICAgIHNlZ1xuICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICBmdW5cbiAgICAgICAgICAgfCBQaWVjZS5UaWxlKHQpID0+IFNvbWUodClcbiAgICAgICAgICAgfCBfID0+IE5vbmUsXG4gICAgICAgICApXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKHQ6IFRpbGUudCkgPT4ge1xuICAgICAgICAgICAvLyBUT0RPKGQpOiB1bmlmeSB3aXRoIFJlbGF0aXZlcy5sb2NhbF9pbmNvbXBsZXRlX3RpbGVzXG4gICAgICAgICAgIFRpbGUuY29udGFpbmVkX2NoaWxkcmVuKHQpXG4gICAgICAgICAgIHw+IExpc3QuY29uY2F0X21hcCgoKGwsIHNlZywgcikpID0+XG4gICAgICAgICAgICAgICAgdGFyZ2V0cyh+Y29udGFpbmVyX3NoYXJkcz0obCwgciksIGJwLCBzZWcpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgIH0pXG4gICAgfTtcbiAgfTtcblxuICBsZXQgYmFja3BhY2sgPSAoejogWmlwcGVyLnQpOiBsaXN0KE5vZGUudCkgPT4gW1xuICAgIEJhY2twYWNrVmlldy52aWV3KFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5vcmlnaW49WmlwcGVyLmNhcmV0X3BvaW50KE0ubWFwLCB6KSxcbiAgICAgIHosXG4gICAgKSxcbiAgXTtcblxuICBsZXQgdGFyZ2V0cycgPSAoYmFja3BhY2ssIHNlZykgPT4ge1xuICAgIE0uc2hvd19iYWNrcGFja190YXJnZXRzICYmIEJhY2twYWNrLnJlc3RyaWN0ZWQoYmFja3BhY2spXG4gICAgICA/IHRhcmdldHMoYmFja3BhY2ssIHNlZykgOiBbXTtcbiAgfTtcblxuICBsZXQgdGVybV9kZWNvcmF0aW9uID1cbiAgICAgIChcbiAgICAgICAgfmlkOiBJZC50LFxuICAgICAgICBkZWNvOlxuICAgICAgICAgICgoTWVhc3VyZWQuUG9pbnQudCwgTWVhc3VyZWQuUG9pbnQudCwgU3ZnVXRpbC5QYXRoLnQpKSA9PiBOb2RlLnQsXG4gICAgICApID0+IHtcbiAgICBsZXQgKHBfbCwgcF9yKSA9IFRlcm1SYW5nZXMuZmluZChpZCwgTS50ZXJtX3Jhbmdlcyk7XG4gICAgbGV0IGwgPSBNZWFzdXJlZC5maW5kX3AocF9sLCBNLm1hcCkub3JpZ2luO1xuICAgIGxldCByID0gTWVhc3VyZWQuZmluZF9wKHBfciwgTS5tYXApLmxhc3Q7XG4gICAgb3BlbiBTdmdVdGlsLlBhdGg7XG4gICAgbGV0IHJfZWRnZSA9XG4gICAgICBMaXN0VXRpbC5yYW5nZSh+bG89bC5yb3csIHIucm93ICsgMSlcbiAgICAgIHw+IExpc3QuY29uY2F0X21hcChpID0+IHtcbiAgICAgICAgICAgbGV0IHJvdyA9IE1lYXN1cmVkLlJvd3MuZmluZChpLCBNLm1hcC5yb3dzKTtcbiAgICAgICAgICAgW2gofng9aSA9PSByLnJvdyA/IHIuY29sIDogcm93Lm1heF9jb2wpLCB2Xyh+ZHk9MSldO1xuICAgICAgICAgfSk7XG4gICAgbGV0IGxfZWRnZSA9XG4gICAgICBMaXN0VXRpbC5yYW5nZSh+bG89bC5yb3csIHIucm93ICsgMSlcbiAgICAgIHw+IExpc3QucmV2X21hcChpID0+IHtcbiAgICAgICAgICAgbGV0IHJvdyA9IE1lYXN1cmVkLlJvd3MuZmluZChpLCBNLm1hcC5yb3dzKTtcbiAgICAgICAgICAgW2gofng9aSA9PSBsLnJvdyA/IGwuY29sIDogcm93LmluZGVudCksIHZfKH5keT0tMSldO1xuICAgICAgICAgfSlcbiAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgIGxldCBwYXRoID1cbiAgICAgIFttKH54PWwuY29sLCB+eT1sLnJvdyksIC4uLnJfZWRnZV1cbiAgICAgIEAgbF9lZGdlXG4gICAgICBAIFtaXVxuICAgICAgfD4gdHJhbnNsYXRlKHtkeDogRmxvYXQub2ZfaW50KC0gbC5jb2wpLCBkeTogRmxvYXQub2ZfaW50KC0gbC5yb3cpfSk7XG4gICAgKGwsIHIsIHBhdGgpIHw+IGRlY287XG4gIH07XG5cbiAgbGV0IHRlcm1faGlnaGxpZ2h0ID0gKH5jbHNzOiBsaXN0KHN0cmluZyksIGlkOiBJZC50KSA9PiB7XG4gICAgdGVybV9kZWNvcmF0aW9uKH5pZCwgKChvcmlnaW4sIGxhc3QsIHBhdGgpKSA9PlxuICAgICAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfm1lYXN1cmVtZW50PXtvcmlnaW4sIGxhc3R9LFxuICAgICAgICB+YmFzZV9jbHM9Y2xzcyxcbiAgICAgICAgcGF0aCxcbiAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIGxldCBjb2xvcl9oaWdobGlnaHRzID0gKGNvbG9yaW5nczogbGlzdCgoSWQudCwgc3RyaW5nKSkpID0+IHtcbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAoKGlkLCBjb2xvcikpID0+XG4gICAgICAgIC8qIEhBQ0soYW5kcmV3KTogQ2F0Y2hpbmcgZXhjZXB0aW9ucyBzaW5jZSB3aGVuIHNob3dpbmdcbiAgICAgICAgICAgdGVybSBoaWdobGlnaHRzIHdoZW4gdGhlIGJhY2twYWNrIGlzIG5vbi1lbXB0eSwgdGhlXG4gICAgICAgICAgIHByb3NwZWN0aXZlIGNvbXBsZXRpb24gbWF5IGhhdmUgZGlmZmVyZW50IHRlcm0gaWRzXG4gICAgICAgICAgIHRoYW4gdGhlIGRpc3BsYXllZCBjb2RlLiAqL1xuICAgICAgICB0cnkoU29tZSh0ZXJtX2hpZ2hsaWdodCh+Y2xzcz1bXCJoaWdobGlnaHQtY29kZS1cIiArKyBjb2xvcl0sIGlkKSkpIHtcbiAgICAgICAgfCBOb3RfZm91bmQgPT4gTm9uZVxuICAgICAgICB9LFxuICAgICAgY29sb3JpbmdzLFxuICAgICk7XG4gIH07XG5cbiAgLy8gZmFzdGVyIGluZm9tYXAgdHJhdmVyc2FsXG4gIGxldCBlcnJfaG9sZXMgPSAoX3o6IFppcHBlci50KSA9PlxuICAgIExpc3QubWFwKHRlcm1faGlnaGxpZ2h0KH5jbHNzPVtcImVyci1ob2xlXCJdKSwgTS5lcnJvcl9pZHMpO1xuXG4gIGxldCBhbGwgPSAoemlwcGVyLCBzZWxfc2VnKSA9PlxuICAgIExpc3QuY29uY2F0KFtcbiAgICAgIGNhcmV0KHppcHBlciksXG4gICAgICBpbmRpY2F0ZWRfcGllY2VfZGVjbyh6aXBwZXIpLFxuICAgICAgc2VsZWN0ZWRfcGllY2VzKHppcHBlciksXG4gICAgICBiYWNrcGFjayh6aXBwZXIpLFxuICAgICAgdGFyZ2V0cycoemlwcGVyLmJhY2twYWNrLCBzZWxfc2VnKSxcbiAgICAgIGVycl9ob2xlcyh6aXBwZXIpLFxuICAgIF0pO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBOb2RlO1xuXG5sZXQgZ2V0X2dvYWwgPSAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfnRhcmdldF9pZCwgZSkgPT4ge1xuICBsZXQgcmVjdCA9IEpzVXRpbC5nZXRfZWxlbV9ieV9pZCh0YXJnZXRfaWQpIyNnZXRCb3VuZGluZ0NsaWVudFJlY3Q7XG4gIGxldCBnb2FsX3ggPSBmbG9hdF9vZl9pbnQoZSMjLmNsaWVudFgpO1xuICBsZXQgZ29hbF95ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRZKTtcbiAgTWVhc3VyZWQuUG9pbnQue1xuICAgIHJvdzogRmxvYXQudG9faW50KChnb2FsX3kgLS4gcmVjdCMjLnRvcCkgLy4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQpLFxuICAgIGNvbDpcbiAgICAgIEZsb2F0LihcbiAgICAgICAgdG9faW50KHJvdW5kKChnb2FsX3ggLS4gcmVjdCMjLmxlZnQpIC8uIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgpKVxuICAgICAgKSxcbiAgfTtcbn07XG5cbmxldCBtb3VzZWRvd25fb3ZlcmxheSA9ICh+aW5qZWN0LCB+Zm9udF9tZXRyaWNzLCB+dGFyZ2V0X2lkKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIEF0dHIuW1xuICAgICAgICAgIGlkKFwibW91c2Vkb3duLW92ZXJsYXlcIiksXG4gICAgICAgICAgb25fbW91c2V1cChfID0+IGluamVjdChVcGRhdGUuU2V0TWV0YShNb3VzZXVwKSkpLFxuICAgICAgICAgIG9uX21vdXNlbW92ZShlID0+IHtcbiAgICAgICAgICAgIGxldCBnb2FsID0gZ2V0X2dvYWwofmZvbnRfbWV0cmljcywgfnRhcmdldF9pZCwgZSk7XG4gICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgIFVwZGF0ZS5QZXJmb3JtQWN0aW9uKFNlbGVjdChSZXNpemUoR29hbChQb2ludChnb2FsKSkpKSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICBbXSxcbiAgKTtcblxubGV0IG1vdXNlZG93bl9oYW5kbGVyID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiAnYSxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+dGFyZ2V0X2lkLFxuICAgICAgfm1vdXNlZG93bl91cGRhdGVzLFxuICAgICAgZXZ0LFxuICAgICkgPT5cbiAgc3dpdGNoIChKc1V0aWwuY3RybF9oZWxkKGV2dCksIEpzVXRpbC5udW1fY2xpY2tzKGV2dCkpIHtcbiAgfCAodHJ1ZSwgXykgPT5cbiAgICBsZXQgZ29hbCA9IGdldF9nb2FsKH5mb250X21ldHJpY3MsIH50YXJnZXRfaWQsIGV2dCk7XG5cbiAgICBsZXQgZXZlbnRzID0gW1xuICAgICAgaW5qZWN0KFBlcmZvcm1BY3Rpb24oTW92ZShHb2FsKFBvaW50KGdvYWwpKSkpKSxcbiAgICAgIGluamVjdChQZXJmb3JtQWN0aW9uKEp1bXAoQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcikpKSxcbiAgICBdO1xuICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lk1hbnkoZXZlbnRzKTtcbiAgfCAoZmFsc2UsIDEpID0+XG4gICAgbGV0IGdvYWwgPSBnZXRfZ29hbCh+Zm9udF9tZXRyaWNzLCB+dGFyZ2V0X2lkLCBldnQpO1xuICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lk1hbnkoXG4gICAgICBMaXN0Lm1hcChcbiAgICAgICAgaW5qZWN0LFxuICAgICAgICBVcGRhdGUuKFxuICAgICAgICAgIFtTZXRNZXRhKE1vdXNlZG93bildXG4gICAgICAgICAgQCBtb3VzZWRvd25fdXBkYXRlc1xuICAgICAgICAgIEAgW1BlcmZvcm1BY3Rpb24oTW92ZShHb2FsKFBvaW50KGdvYWwpKSkpXVxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICB8IChmYWxzZSwgMikgPT4gaW5qZWN0KFBlcmZvcm1BY3Rpb24oU2VsZWN0KFRpbGUoQ3VycmVudCkpKSlcbiAgfCAoZmFsc2UsIDMgfCBfKSA9PiBpbmplY3QoUGVyZm9ybUFjdGlvbihTZWxlY3QoU21hcnQpKSlcbiAgfTtcblxubGV0IG5hcnJhdGl2ZV9jZWxsID0gKGNvbnRlbnQ6IE5vZGUudCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwiY2VsbFwiKSxcbiAgICBbZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiY2VsbC1jaGFwdGVyXCIpLCBbY29udGVudF0pXSxcbiAgKTtcblxubGV0IHNpbXBsZV9jZWxsX2l0ZW0gPSAoY29udGVudDogbGlzdChOb2RlLnQpKSA9PlxuICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiXSksIGNvbnRlbnQpO1xuXG5sZXQgY2FwdGlvbiA9ICh+cmVzdDogb3B0aW9uKHN0cmluZyk9PywgYm9sZGVkOiBzdHJpbmcpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW0F0dHIuY2xhc3NlcyhbXCJjZWxsLWNhcHRpb25cIl0pXSksXG4gICAgW3N0cm9uZyhbdGV4dChib2xkZWQpXSldIEAgKHJlc3QgfD4gT3B0aW9uLm1hcCh0ZXh0KSB8PiBPcHRpb24udG9fbGlzdCksXG4gICk7XG5cbmxldCBzaW1wbGVfY2VsbF92aWV3ID0gKGl0ZW1zOiBsaXN0KHQpKSA9PlxuICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsXCIpLCBpdGVtcyk7XG5cbmxldCB0ZXN0X3N0YXR1c19pY29uX3ZpZXcgPVxuICAgICh+Zm9udF9tZXRyaWNzLCBpbnN0cywgbXM6IE1lYXN1cmVkLlNoYXJkcy50KTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAobXMpIHtcbiAgfCBbKF8sIHtvcmlnaW46IF8sIGxhc3R9KSwgLi4uX10gPT5cbiAgICBsZXQgc3RhdHVzID0gaW5zdHMgfD4gVGVzdE1hcC5qb2ludF9zdGF0dXMgfD4gVGVzdFN0YXR1cy50b19zdHJpbmc7XG4gICAgbGV0IHBvcyA9IERlY1V0aWwuYWJzX3Bvc2l0aW9uKH5mb250X21ldHJpY3MsIGxhc3QpO1xuICAgIFNvbWUoXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcInRlc3QtcmVzdWx0XCIsIHN0YXR1c10pLCBwb3NdKSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgICk7XG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCB0ZXN0X3Jlc3VsdF9sYXllciA9XG4gICAgKH5mb250X21ldHJpY3MsIH5tZWFzdXJlZDogTWVhc3VyZWQudCwgdGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KVxuICAgIDogbGlzdCh0KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgKChpZCwgaW5zdHMpKSA9PlxuICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1lYXN1cmVkLnRpbGVzKSkge1xuICAgICAgfCBTb21lKG1zKSA9PiB0ZXN0X3N0YXR1c19pY29uX3ZpZXcofmZvbnRfbWV0cmljcywgaW5zdHMsIG1zKVxuICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgIH0sXG4gICAgdGVzdF9yZXN1bHRzLnRlc3RfbWFwLFxuICApO1xuXG5sZXQgZGVjbyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5zaG93X2JhY2twYWNrX3RhcmdldHMsXG4gICAgICB+c2VsZWN0ZWQsXG4gICAgICB+ZXJyb3JfaWRzLFxuICAgICAgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgfmhpZ2hsaWdodHM6IG9wdGlvbihDb2xvclN0ZXBzLmNvbG9yTWFwKSxcbiAgICAgIHtcbiAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICB6aXBwZXIsXG4gICAgICAgICAgbWV0YToge3Rlcm1fcmFuZ2VzLCBzZWdtZW50LCBtZWFzdXJlZCwgdGVybXMsIHRpbGVzLCBffSxcbiAgICAgICAgICBfLFxuICAgICAgICB9LFxuICAgICAgICBfLFxuICAgICAgfTogRWRpdG9yLnQsXG4gICAgKSA9PiB7XG4gIG1vZHVsZSBEZWNvID1cbiAgICBEZWNvLkRlY28oe1xuICAgICAgbGV0IG1hcCA9IG1lYXN1cmVkO1xuICAgICAgbGV0IHRlcm1zID0gdGVybXM7XG4gICAgICBsZXQgdGVybV9yYW5nZXMgPSB0ZXJtX3JhbmdlcztcbiAgICAgIGxldCB0aWxlcyA9IHRpbGVzO1xuICAgICAgbGV0IGZvbnRfbWV0cmljcyA9IGZvbnRfbWV0cmljcztcbiAgICAgIGxldCBzaG93X2JhY2twYWNrX3RhcmdldHMgPSBzaG93X2JhY2twYWNrX3RhcmdldHM7XG4gICAgICBsZXQgZXJyb3JfaWRzID0gZXJyb3JfaWRzO1xuICAgIH0pO1xuICBsZXQgZGVjb3MgPSBzZWxlY3RlZCA/IERlY28uYWxsKHppcHBlciwgc2VnbWVudCkgOiBEZWNvLmVycl9ob2xlcyh6aXBwZXIpO1xuICBsZXQgZGVjb3MgPVxuICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IGRlY29zXG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgIGRlY29zIEAgdGVzdF9yZXN1bHRfbGF5ZXIofmZvbnRfbWV0cmljcywgfm1lYXN1cmVkLCB0ZXN0X3Jlc3VsdHMpIC8vIFRPRE8gbW92ZSBpbnRvIGRlY29zXG4gICAgfTtcbiAgc3dpdGNoIChoaWdobGlnaHRzKSB7XG4gIHwgU29tZShjb2xvck1hcCkgPT5cbiAgICBkZWNvcyBAIERlY28uY29sb3JfaGlnaGxpZ2h0cyhDb2xvclN0ZXBzLnRvX2xpc3QoY29sb3JNYXApKVxuICB8IF8gPT4gZGVjb3NcbiAgfTtcbn07XG5cbmxldCBlcnJvcl9tc2cgPSAoZXJyOiBQcm9ncmFtUmVzdWx0LmVycm9yKSA9PlxuICBzd2l0Y2ggKGVycikge1xuICB8IEV2YXVsYXRvckVycm9yKGVycikgPT4gRXZhbHVhdG9yRXJyb3Iuc2hvdyhlcnIpXG4gIHwgVW5rbm93bkV4Y2VwdGlvbihzdHIpID0+IHN0clxuICB8IFRpbWVvdXQgPT4gXCJFdmFsdWF0aW9uIHRpbWVkIG91dFwiXG4gIH07XG5cbmxldCBzdGF0dXNfb2Y6IFByb2dyYW1SZXN1bHQudCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBSZXN1bHRQZW5kaW5nID0+IFwicGVuZGluZ1wiXG4gIHwgUmVzdWx0T2soXykgPT4gXCJva1wiXG4gIHwgUmVzdWx0RmFpbChfKSA9PiBcImZhaWxcIlxuICB8IE9mZihfKSA9PiBcIm9mZlwiO1xuXG5sZXQgbGl2ZV9ldmFsID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlIGFzIHtmb250X21ldHJpY3MsIF99OiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5yZXN1bHRfa2V5OiBzdHJpbmcsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+bG9ja2VkLFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC5ldmFsX3Jlc3VsdCxcbiAgICApID0+IHtcbiAgb3BlbiBOb2RlO1xuICBsZXQgZGhleHAgPVxuICAgIHN3aXRjaCAocmVzdWx0LmV2YWx1YXRpb24sIHJlc3VsdC5wcmV2aW91cykge1xuICAgIHwgKFJlc3VsdE9rKHJlcyksIF8pID0+IFByb2dyYW1SZXN1bHQuZ2V0X2RoZXhwKHJlcylcbiAgICB8IChSZXN1bHRQZW5kaW5nLCBSZXN1bHRPayhyZXMpKSA9PiBQcm9ncmFtUmVzdWx0LmdldF9kaGV4cChyZXMpXG4gICAgfCBfID0+IHJlc3VsdC5lbGFiXG4gICAgfTtcbiAgbGV0IGRoY29kZV92aWV3ID1cbiAgICBESENvZGUudmlldyhcbiAgICAgIH5sb2NrZWQsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnNldHRpbmdzPXNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgIH5zZWxlY3RlZF9ob2xlX2luc3RhbmNlPU5vbmUsXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfndpZHRoPTgwLFxuICAgICAgfnJlc3VsdF9rZXksXG4gICAgICBkaGV4cCxcbiAgICApO1xuICBsZXQgZXhuX3ZpZXcgPVxuICAgIHN3aXRjaCAocmVzdWx0LmV2YWx1YXRpb24pIHtcbiAgICB8IFJlc3VsdEZhaWwoZXJyKSA9PiBbXG4gICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiZXJyb3ItbXNnXCJdKSwgW3RleHQoZXJyb3JfbXNnKGVycikpXSksXG4gICAgICBdXG4gICAgfCBfID0+IFtdXG4gICAgfTtcbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIiwgXCJjZWxsLXJlc3VsdFwiXSksXG4gICAgZXhuX3ZpZXdcbiAgICBAIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInN0YXR1c1wiLCBzdGF0dXNfb2YocmVzdWx0LmV2YWx1YXRpb24pXSksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcInNwaW5uZXJcIl0pLCBbXSksXG4gICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJlcVwiXSksIFt0ZXh0KFwi4omhXCIpXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wicmVzdWx0XCIsIHN0YXR1c19vZihyZXN1bHQuZXZhbHVhdGlvbildKSxcbiAgICAgICAgW2RoY29kZV92aWV3XSxcbiAgICAgICksXG4gICAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1cIlNob3cgU3RlcHBlclwiLCBcInNcIiwgZmFsc2UsIF8gPT5cbiAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5Ub2dnbGVTdGVwcGVyKHJlc3VsdF9rZXkpKVxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGZvb3RlciA9XG4gICAgKFxuICAgICAgfmxvY2tlZCxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUgYXMge2ZvbnRfbWV0cmljcywgX30gYXMgdWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfnJlc3VsdDogTW9kZWxSZXN1bHQudCxcbiAgICAgIH5yZXN1bHRfa2V5LFxuICAgICkgPT5cbiAgc3dpdGNoIChyZXN1bHQpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuZHluYW1pY3MgPT4gW11cbiAgfCBOb0VsYWIgPT4gW11cbiAgfCBFdmFsdWF0aW9uKHJlc3VsdCkgPT4gW1xuICAgICAgbGl2ZV9ldmFsKH5sb2NrZWQsIH5pbmplY3QsIH51aV9zdGF0ZSwgfnNldHRpbmdzLCB+cmVzdWx0X2tleSwgcmVzdWx0KSxcbiAgICBdXG4gIHwgU3RlcHBlcihzKSA9PlxuICAgIFN0ZXBwZXJWaWV3LnN0ZXBwZXJfdmlldyhcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3M9c2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgcyxcbiAgICApXG4gIH07XG5cbmxldCBlZGl0b3JfdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZSBhc1xuICAgICAgICB7Zm9udF9tZXRyaWNzLCBzaG93X2JhY2twYWNrX3RhcmdldHMsIG1vdXNlZG93biwgX306IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfnRhcmdldF9pZDogc3RyaW5nLFxuICAgICAgfm1vdXNlZG93bl91cGRhdGVzOiBsaXN0KFVwZGF0ZS50KT1bXSxcbiAgICAgIH5zZWxlY3RlZDogYm9vbD10cnVlLFxuICAgICAgfmxvY2tlZD1mYWxzZSxcbiAgICAgIH5jYXB0aW9uOiBvcHRpb24oTm9kZS50KT0/LFxuICAgICAgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgfmZvb3Rlcjogb3B0aW9uKGxpc3QoTm9kZS50KSk9PyxcbiAgICAgIH5oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgICB+b3ZlcmxheWVyOiBvcHRpb24oTm9kZS50KT1Ob25lLFxuICAgICAgfmVycm9yX2lkczogbGlzdChJZC50KSxcbiAgICAgIH5zb3J0PVNvcnQucm9vdCxcbiAgICAgIGVkaXRvcjogRWRpdG9yLnQsXG4gICAgKSA9PiB7XG4gIGxldCBjb2RlX3RleHRfdmlldyA9IENvZGUudmlldyh+c29ydCwgfmZvbnRfbWV0cmljcywgfnNldHRpbmdzLCBlZGl0b3IpO1xuICBsZXQgZGVjb192aWV3ID1cbiAgICBkZWNvKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5zaG93X2JhY2twYWNrX3RhcmdldHMsXG4gICAgICB+c2VsZWN0ZWQsXG4gICAgICB+ZXJyb3JfaWRzLFxuICAgICAgfnRlc3RfcmVzdWx0cyxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgZWRpdG9yLFxuICAgICk7XG4gIGxldCBjb2RlX3ZpZXcgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW0F0dHIuaWQodGFyZ2V0X2lkKSwgQXR0ci5jbGFzc2VzKFtcImNvZGUtY29udGFpbmVyXCJdKV0pLFxuICAgICAgW2NvZGVfdGV4dF92aWV3XSBAIGRlY29fdmlldyBAIE9wdGlvbi50b19saXN0KG92ZXJsYXllciksXG4gICAgKTtcbiAgbGV0IG1vdXNlZG93bl9vdmVybGF5ID1cbiAgICBzZWxlY3RlZCAmJiBtb3VzZWRvd25cbiAgICAgID8gW21vdXNlZG93bl9vdmVybGF5KH5pbmplY3QsIH5mb250X21ldHJpY3MsIH50YXJnZXRfaWQpXSA6IFtdO1xuICBsZXQgb25fbW91c2Vkb3duID1cbiAgICBsb2NrZWRcbiAgICAgID8gXyA9PlxuICAgICAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0LihNYW55KFtQcmV2ZW50X2RlZmF1bHQsIFN0b3BfcHJvcGFnYXRpb25dKSlcbiAgICAgIDogbW91c2Vkb3duX2hhbmRsZXIoXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH50YXJnZXRfaWQsXG4gICAgICAgICAgfm1vdXNlZG93bl91cGRhdGVzLFxuICAgICAgICApO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICBcImNlbGxcIixcbiAgICAgICAgc2VsZWN0ZWQgPyBcInNlbGVjdGVkXCIgOiBcImRlc2VsZWN0ZWRcIixcbiAgICAgICAgbG9ja2VkID8gXCJsb2NrZWRcIiA6IFwidW5sb2NrZWRcIixcbiAgICAgIF0pLFxuICAgIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIl0pLFxuICAgICAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24ob25fbW91c2Vkb3duKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgT3B0aW9uLnRvX2xpc3QoY2FwdGlvbikgQCBtb3VzZWRvd25fb3ZlcmxheSBAIFtjb2RlX3ZpZXddLFxuICAgICAgKSxcbiAgICBdXG4gICAgQCAoZm9vdGVyIHw+IE9wdGlvbi50b19saXN0IHw+IExpc3QuY29uY2F0KSxcbiAgKTtcbn07XG5cbmxldCByZXBvcnRfZm9vdGVyX3ZpZXcgPSBjb250ZW50ID0+IHtcbiAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIiwgXCJjZWxsLXJlcG9ydFwiXSksIGNvbnRlbnQpO1xufTtcblxubGV0IHRlc3RfcmVwb3J0X2Zvb3Rlcl92aWV3ID0gKH5pbmplY3QsIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSkgPT4ge1xuICByZXBvcnRfZm9vdGVyX3ZpZXcoW1Rlc3RWaWV3LnRlc3Rfc3VtbWFyeSh+aW5qZWN0LCB+dGVzdF9yZXN1bHRzKV0pO1xufTtcblxubGV0IHBhbmVsID0gKH5jbGFzc2VzPVtdLCBjb250ZW50LCB+Zm9vdGVyOiBvcHRpb24odCkpID0+IHtcbiAgc2ltcGxlX2NlbGxfdmlldyhcbiAgICBbZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIiwgXCJwYW5lbFwiXSBAIGNsYXNzZXMpLCBjb250ZW50KV1cbiAgICBAIE9wdGlvbi50b19saXN0KGZvb3RlciksXG4gICk7XG59O1xuXG5sZXQgdGl0bGVfY2VsbCA9IHRpdGxlID0+IHtcbiAgc2ltcGxlX2NlbGxfdmlldyhbXG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0aXRsZS1jZWxsXCIpLFxuICAgICAgW2Rpdih+YXR0cj1BdHRyLmNsYXNzXyhcInRpdGxlLXRleHRcIiksIFt0ZXh0KHRpdGxlKV0pXSxcbiAgICApLFxuICBdKTtcbn07XG5cbi8qIEFuIGVkaXRvciB2aWV3IHRoYXQgaXMgbm90IHNlbGVjdGFibGUgb3IgZWRpdGFibGUsXG4gKiBhbmQgZG9lcyBub3Qgc2hvdyBlcnJvciBob2xlcyBvciB0ZXN0IHJlc3VsdHMuXG4gKiBVc2VkIGluIERvY3MgdG8gZGlzcGxheSB0aGUgaGVhZGVyIGV4YW1wbGUgKi9cbmxldCBsb2NrZWRfbm9fc3RhdGljcyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZSxcbiAgICAgIH5zZWdtZW50LFxuICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+c29ydCxcbiAgICAgIH5leHBhbmRlcl9kZWNvLFxuICAgICAgfnRhcmdldF9pZCxcbiAgICApID0+IFtcbiAgZWRpdG9yX3ZpZXcoXG4gICAgfmxvY2tlZD10cnVlLFxuICAgIH5zZWxlY3RlZD1mYWxzZSxcbiAgICB+aGlnaGxpZ2h0cyxcbiAgICB+aW5qZWN0LFxuICAgIH51aV9zdGF0ZSxcbiAgICB+c2V0dGluZ3MsXG4gICAgfnRhcmdldF9pZCxcbiAgICB+Zm9vdGVyPVtdLFxuICAgIH50ZXN0X3Jlc3VsdHM9Tm9uZSxcbiAgICB+ZXJyb3JfaWRzPVtdLFxuICAgIH5vdmVybGF5ZXI9U29tZShleHBhbmRlcl9kZWNvKSxcbiAgICB+c29ydCxcbiAgICBzZWdtZW50IHw+IFppcHBlci51bnppcCB8PiBFZGl0b3IuaW5pdCh+cmVhZF9vbmx5PXRydWUpLFxuICApLFxuXTtcblxuLyogQW4gZWRpdG9yIHZpZXcgdGhhdCBpcyBub3Qgc2VsZWN0YWJsZSBvciBlZGl0YWJsZSxcbiAqIGJ1dCBkb2VzIHNob3cgc3RhdGljIGVycm9ycywgdGVzdCByZXN1bHRzLCBhbmQgbGl2ZSB2YWx1ZXMuXG4gKiBVc2VkIGluIERvY3MgZm9yIGV4YW1wbGVzICovXG5sZXQgbG9ja2VkID1cbiAgICAoXG4gICAgICB+dWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnRhcmdldF9pZCxcbiAgICAgIH5zZWdtZW50OiBTZWdtZW50LnQsXG4gICAgKSA9PiB7XG4gIGxldCBlZGl0b3IgPSBzZWdtZW50IHw+IFppcHBlci51bnppcCB8PiBFZGl0b3IuaW5pdCh+cmVhZF9vbmx5PXRydWUpO1xuICBsZXQgc3RhdGljcyA9XG4gICAgc2V0dGluZ3MuY29yZS5zdGF0aWNzXG4gICAgICA/IFNjcmF0Y2hTbGlkZS5ta19zdGF0aWNzKH5zZXR0aW5ncywgZWRpdG9yLCBCdWlsdGlucy5jdHhfaW5pdClcbiAgICAgIDogQ2FjaGVkU3RhdGljcy5lbXB0eV9zdGF0aWNzO1xuICBsZXQgZWxhYiA9XG4gICAgc2V0dGluZ3MuY29yZS5lbGFib3JhdGUgfHwgc2V0dGluZ3MuY29yZS5keW5hbWljc1xuICAgICAgPyBJbnRlcmZhY2UuZWxhYm9yYXRlKFxuICAgICAgICAgIH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgIHN0YXRpY3MuaW5mb19tYXAsXG4gICAgICAgICAgZWRpdG9yLnN0YXRlLm1ldGEudmlld190ZXJtLFxuICAgICAgICApXG4gICAgICA6IERIRXhwLkJvb2xMaXQodHJ1ZSk7XG4gIGxldCByZXN1bHQ6IE1vZGVsUmVzdWx0LnQgPVxuICAgIHNldHRpbmdzLmNvcmUuZHluYW1pY3NcbiAgICAgID8gRXZhbHVhdGlvbih7XG4gICAgICAgICAgZWxhYixcbiAgICAgICAgICBldmFsdWF0aW9uOiBJbnRlcmZhY2UuZXZhbHVhdGUofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGVsYWIpLFxuICAgICAgICAgIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nLFxuICAgICAgICB9KVxuICAgICAgOiBOb0VsYWI7XG4gIGxldCBmb290ZXIgPVxuICAgIHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlIHx8IHNldHRpbmdzLmNvcmUuZHluYW1pY3NcbiAgICAgID8gZm9vdGVyKFxuICAgICAgICAgIH5sb2NrZWQ9dHJ1ZSxcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfnJlc3VsdF9rZXk9dGFyZ2V0X2lkLFxuICAgICAgICAgIH5yZXN1bHQsXG4gICAgICAgIClcbiAgICAgIDogW107XG4gIGVkaXRvcl92aWV3KFxuICAgIH5sb2NrZWQ9dHJ1ZSxcbiAgICB+c2VsZWN0ZWQ9ZmFsc2UsXG4gICAgfmhpZ2hsaWdodHM9Tm9uZSxcbiAgICB+aW5qZWN0LFxuICAgIH51aV9zdGF0ZSxcbiAgICB+c2V0dGluZ3MsXG4gICAgfnRhcmdldF9pZCxcbiAgICB+Zm9vdGVyLFxuICAgIH50ZXN0X3Jlc3VsdHM9TW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHJlc3VsdCksXG4gICAgfmVycm9yX2lkcz1zdGF0aWNzLmVycm9yX2lkcyxcbiAgICBlZGl0b3IsXG4gICk7XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbnR5cGUgc3RhdGUgPSAoSWQudCwgRWRpdG9yLnQpO1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5yZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgfnN0YXRpY3MgYXMge2Vycm9yX2lkcywgX306IENhY2hlZFN0YXRpY3Muc3RhdGljcyxcbiAgICAgIGVkaXRvcjogRWRpdG9yLnQsXG4gICAgKSA9PiB7XG4gIGxldCByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIHJlc3VsdF9rZXkpO1xuICBsZXQgdGVzdF9yZXN1bHRzID0gVXRpbC5PcHRVdGlsLmFuZF90aGVuKE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cywgcmVzdWx0KTtcbiAgbGV0IHRhcmdldF9pZCA9IFwiY29kZS1jb250YWluZXJcIjtcbiAgbGV0IGZvb3RlciA9XG4gICAgc2V0dGluZ3MuY29yZS5lbGFib3JhdGUgfHwgc2V0dGluZ3MuY29yZS5keW5hbWljc1xuICAgICAgPyByZXN1bHRcbiAgICAgICAgfD4gT3B0aW9uLm1hcChyZXN1bHQgPT5cbiAgICAgICAgICAgICBDZWxsLmZvb3RlcihcbiAgICAgICAgICAgICAgIH5sb2NrZWQ9ZmFsc2UsXG4gICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgICAgICAgfnJlc3VsdCxcbiAgICAgICAgICAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgKVxuICAgICAgOiBOb25lO1xuICBbXG4gICAgQ2VsbC5lZGl0b3JfdmlldyhcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+dGFyZ2V0X2lkLFxuICAgICAgfmVycm9yX2lkcyxcbiAgICAgIH50ZXN0X3Jlc3VsdHMsXG4gICAgICB+Zm9vdGVyPyxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgZWRpdG9yLFxuICAgICksXG4gIF07XG59O1xuXG5sZXQgZXhwb3J0X2J1dHRvbiA9IHN0YXRlID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICBsZXQganNvbl9kYXRhID0gU2NyYXRjaFNsaWRlLmV4cG9ydChzdGF0ZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfanNvbihcImhhemVsLXNjcmF0Y2hwYWRcIiwganNvbl9kYXRhKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IFNjcmF0Y2hwYWRcIixcbiAgKTtcbmxldCBpbXBvcnRfYnV0dG9uID0gaW5qZWN0ID0+XG4gIFdpZGdldHMuZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkKFxuICAgIFwiaW1wb3J0LXNjcmF0Y2hwYWRcIixcbiAgICBJY29ucy5zdGFyLFxuICAgIGZpbGUgPT4ge1xuICAgICAgc3dpdGNoIChmaWxlKSB7XG4gICAgICB8IE5vbmUgPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlXG4gICAgICB8IFNvbWUoZmlsZSkgPT4gaW5qZWN0KFVwZGF0ZUFjdGlvbi5Jbml0SW1wb3J0U2NyYXRjaHBhZChmaWxlKSlcbiAgICAgIH1cbiAgICB9LFxuICAgIH50b29sdGlwPVwiSW1wb3J0IFNjcmF0Y2hwYWRcIixcbiAgKTtcblxubGV0IHJlc2V0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy50cmFzaCxcbiAgICBfID0+IHtcbiAgICAgIGxldCBjb25maXJtZWQgPVxuICAgICAgICBKc1V0aWwuY29uZmlybShcbiAgICAgICAgICBcIkFyZSB5b3UgU1VSRSB5b3Ugd2FudCB0byByZXNldCB0aGlzIHNjcmF0Y2hwYWQ/IFlvdSB3aWxsIGxvc2UgYW55IGV4aXN0aW5nIGNvZGUuXCIsXG4gICAgICAgICk7XG4gICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUmVzZXRDdXJyZW50RWRpdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICAgIH07XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIlJlc2V0IFNjcmF0Y2hwYWRcIixcbiAgKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gUXVlcnlDb21tYW5kO1xuXG5tb2R1bGUgRXhlY3V0aW9uUGxhbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KFF1ZXJ5Q29tbWFuZC50KTtcbn07XG5cbm1vZHVsZSBRdWVyeVJlc3VsdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRleHRvYmplY3QgPVxuICAgIHwgVGVybShUZXJtLnQpXG4gICAgfCBJbmZvKEluZm8udClcbiAgICB8IFR5cGUoVHlwLnQpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHJlc3VsdDogc3RyaW5nLFxuICAgIHRfb2JqZWN0OiBvcHRpb24odGV4dG9iamVjdCksXG4gIH07XG5cbiAgbGV0IGVtcHR5ID0ge3Jlc3VsdDogXCJub3RoaW5nXCIsIHRfb2JqZWN0OiBOb25lfTtcbiAgbGV0IGVycm9yID0gKG1zZzogc3RyaW5nKSA9PiB7cmVzdWx0OiBtc2csIHRfb2JqZWN0OiBOb25lfTtcblxuICBsZXQgbWsgPSAocmVzdWx0LCB0X29iamVjdCk6IHQgPT4ge1xuICAgIHtyZXN1bHQsIHRfb2JqZWN0fTtcbiAgfTtcbn07XG5cbmxldCBleGVjdXRlID0gKHBsYW46IEV4ZWN1dGlvblBsYW4udCwgZWRpdG9yOiBFZGl0b3IudCk6IFF1ZXJ5UmVzdWx0LnQgPT4ge1xuICBzd2l0Y2ggKHBsYW4sIGVkaXRvcikge1xuICB8IF8gPT4ge3Jlc3VsdDogXCJub3RoaW5nXCIsIHRfb2JqZWN0OiBOb25lfVxuICB9O1xufTtcblxubGV0IGV4ZWN1dGVfY29tbWFuZCA9IC8vIFRPRE86IGNoYW5nZSB0aGUgaW5wdXQgdG8gemlwcGVyIGFuZCBpbmZvX21hcFxuICAgIChcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5jdHhfaW5pdCxcbiAgICAgIGNvbW1hbmQ6IFF1ZXJ5Q29tbWFuZC50LFxuICAgICAgcmVzdWx0OiBRdWVyeVJlc3VsdC50LFxuICAgICAgZWRpdG9yOiBFZGl0b3IudCxcbiAgICApXG4gICAgOiBRdWVyeVJlc3VsdC50ID0+IHtcbiAgc3dpdGNoIChjb21tYW5kLCByZXN1bHQpIHtcbiAgfCAoU2VsZWN0KFRlcm0pLCBfKSA9PlxuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCAodGVybSwgXykgPSBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKHppcHBlcik7XG4gICAgbGV0IGluZm9fbWFwID1cbiAgICAgIEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MuY29yZSwgY3R4X2luaXQsIHRlcm0pO1xuICAgIHN3aXRjaCAoemlwcGVyLmJhY2twYWNrLCBJbmRpY2F0ZWQuaW5kZXgoemlwcGVyKSkge1xuICAgIHwgXyB3aGVuICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT4gUXVlcnlSZXN1bHQuZW1wdHlcbiAgICB8IF8gd2hlbiBJZC5NYXAuaXNfZW1wdHkoaW5mb19tYXApID0+XG4gICAgICBRdWVyeVJlc3VsdC5lcnJvcihcIk5vIFN0YXRpYyBpbmZvcm1hdGlvbiBhdmFpbGFibGVcIilcbiAgICB8IChfLCBOb25lKSA9PiBRdWVyeVJlc3VsdC5lcnJvcihcIk5vIGN1cnNvciBpbiBwcm9ncmFtXCIpXG4gICAgfCAoXywgU29tZShpZCkpID0+XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgaW5mb19tYXApKSB7XG4gICAgICB8IE5vbmUgPT4gUXVlcnlSZXN1bHQuZXJyb3IoXCJXaGl0ZXNwYWNlIG9yIENvbW1lbnRcIilcbiAgICAgIHwgU29tZShjaSkgPT4gUXVlcnlSZXN1bHQubWsoXCJpbmZvXCIsIFNvbWUoUXVlcnlSZXN1bHQuSW5mbyhjaSkpKSAvL1RPRE86IHJldHVybiB0aGUgcmVzdWx0IGluc3RlYWQgb2YgXCJpbmZvXCJcbiAgICAgIH1cbiAgICB9O1xuICB8IChRdWVyeShUeXBlKSwgXykgPT5cbiAgICBsZXQgb2NpID1cbiAgICAgIHN3aXRjaCAocmVzdWx0LnRfb2JqZWN0KSB7XG4gICAgICB8IFNvbWUoUXVlcnlSZXN1bHQuSW5mbyhjaSkpID0+IFNvbWUoY2kpXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKG9jaSkge1xuICAgIHwgU29tZShJbmZvRXhwKGUpKSA9PlxuICAgICAgUXVlcnlSZXN1bHQubWsoXCJ0eXBlXCIsIFNvbWUoUXVlcnlSZXN1bHQuVHlwZShlLnR5KSkpIC8vVE9ETzogcmV0dXJuIHRoZSByZXN1bHQgaW5zdGVhZCBvZiBcInR5cGVcIlxuICAgIHwgU29tZShJbmZvUGF0KHApKSA9PlxuICAgICAgUXVlcnlSZXN1bHQubWsoXCJ0eXBlXCIsIFNvbWUoUXVlcnlSZXN1bHQuVHlwZShwLnR5KSkpIC8vVE9ETzogcmV0dXJuIHRoZSByZXN1bHQgaW5zdGVhZCBvZiBcInR5cGVcIlxuICAgIHwgU29tZShJbmZvVHlwKHQpKSA9PlxuICAgICAgUXVlcnlSZXN1bHQubWsoXCJ0eXBlXCIsIFNvbWUoUXVlcnlSZXN1bHQuVHlwZSh0LnR5KSkpIC8vVE9ETzogcmV0dXJuIHRoZSByZXN1bHQgaW5zdGVhZCBvZiBcInR5cGVcIlxuICAgIHwgXyA9PiBRdWVyeVJlc3VsdC5lcnJvcihcIk5vIHR5cGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlXCIpXG4gICAgfTtcbiAgfCBfID0+IFF1ZXJ5UmVzdWx0LmVtcHR5XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjb3VudCA9IG9wdGlvbihpbnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRleHRfb2JqZWN0X2tleSA9XG4gIHwgVGVybSAvLyB3XG4gIHwgUGFyZW50aGVzaXM7IC8vICgpXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWN0aW9uX2tleSA9XG4gIHwgTW92ZTsgLy8gbVxuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHF1ZXJ5X2RlY29yYXRpb24gPVxuICB8IERlZmluaXRpb247IC8vIGRcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBxdWVyeV9rZXkgPVxuICB8IFR5cGUgLy8gdFxuICB8IFJlYWQ7IC8vIHJcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBxdWVyeV9vcCA9IChvcHRpb24ocXVlcnlfZGVjb3JhdGlvbiksIHF1ZXJ5X2tleSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcXVlcnkgPSAodGV4dF9vYmplY3QsIHF1ZXJ5X29wKVxuYW5kIHRleHRfb2JqZWN0ID1cbiAgfCBJbm5lcih0ZXh0X29iamVjdF9rZXkpIC8vIGlcbiAgfCBRdWVyaWVkKHF1ZXJ5KTsgLy8gcVxuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9ICh0ZXh0X29iamVjdCwgYWN0aW9uX2tleSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY29tbWFuZCA9XG4gIHwgQWN0aW9uKGFjdGlvbilcbiAgfCBRdWVyeShxdWVyeSk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG4vKiAoQSkgVXNlIHRoaXMgZmlsZSBhcyBhbiBleGFtcGxlIGZvciBhZGRpbmcgYSBuZXcgZm9ybSB0byBFeHBsYWluVGhpcy5cbiAqIFlvdSBzaG91bGQgYmUgYWJsZSB0byBjb3B5LXBhc3RlIHRoaXMgZmlsZSBhbmQgbW9kaWZ5IGl0IHRvIGFkZCBhIG5ldyBmb3JtICovXG5cbmxldCBzaW5nbGUgPSAofmFyZ19pZDogSWQudCwgfmZuX2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICAvKiAoQikgWW91J2xsIG5lZWQgdG8gYWRkIG5ldyBjYXNlcyB0byBFeHBsYWluVGhpc0Zvcm0ucmUgZm9yIHRoZSBuZXcgZm9ybVxuICAgKiB0byByZXByZXNlbnQgYSBncm91cF9pZCBhbmQgZm9ybV9pZC4gVGhpcyBTaW1wbGUgc3R5bGUgaXMgc3BlY2lhbGl6ZWRcbiAgICogdG8gc2luZ2xldG9uIGdyb3Vwcy4gSW4gZ2VuZXJhbCwgdGhlIGdyb3VwX2lkIG5lZWRzIHRvIGJlIHVuaXF1ZSwgYW5kXG4gICAqIGZvcm1faWRzIG5lZWQgdG8gYmUgdW5pcXVlIHdpdGhpbiBhIGdyb3VwLiBUaGVzZSBpZHMgYXJlIHVzZWQgdG8gdHJhY2tcbiAgICogRXhwbGFpblRoaXMgcGVyc2lzdGVudCBzdGF0ZS4gKi9cbiAgZ3JvdXBfaWQ6IFBpcGVsaW5lRXhwLFxuICBmb3JtX2lkOiBQaXBlbGluZUV4cCxcbiAgLyogKEMpIFRoZSBhYnN0cmFjdCBmaWVsZCBkZWZpbmVzIGFuIGFic3RyYWN0IGV4YW1wbGUgaWxsdXN0cmF0aW5nIHRoZVxuICAgKiBuZXcgZm9ybS4gWW91J2xsIG5lZWQgdG8gcHJvdmlkZSBwYWlycyBhc3NvY2lhdGluZyBhbnkgcmVwcmVzZW50YXRpdmVcbiAgICogc3VidGVybXMgb2YgdGhlIGV4ZW1wbGFyIChlLmcuIFwiZV9hcmdcIiBhbmQgXCJlX2Z1blwiIGJlbG93KSB3aXRoIHRoZVxuICAgKiBjb25jcmV0ZSBzdWJ0ZXJtcyBvZiB0aGUgdGVybSB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgKGhlcmUsIGFyZ19pZFxuICAgKiBhbmQgZm5faWQpLiBZb3UnbGwgdGhlbiBuZWVkIGEgZnVuY3Rpb24gdG8gY29uc3RydWN0IGEgc2VnbWVudFxuICAgKiByZXByZXNlbnRpbmcgeW91ciBhYnN0cmFjdC4gVGhpcyBpcyBkb25lIGluIHRoaXMgaW5kaXJlY3Qgd2F5IHNvXG4gICAqIGFzIHRvIGFzc29jaWF0ZSByZXByZXNlbnRhdGl2ZSBhbmQgY29uY3JldGUgc3VidGVybXMgaWRzIGZvclxuICAgKiBzeW50YXggaGlnaGxpZ2h0aW5nIHB1cnBvc2VzLiAqL1xuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJlX2FyZ1wiLCBhcmdfaWQpLCAoXCJlX2Z1blwiLCBmbl9pZCksIChlX2FyZycsIGVfZm4nKSA9PlxuICAgICAgW2VfYXJnJywgc3BhY2UoKSwgcGlwZWxpbmUoKSwgc3BhY2UoKSwgZV9mbiddXG4gICAgKSxcbiAgLyogKEQpIFRoZSBleHBsYW5hdGlvbiB3aGljaCB3aWxsIGFwcGVhciBpbiB0aGUgc2lkZWJhciBiZWxvdyB0aGUgYWJzdHJhY3QgKi9cbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlBhc3NlcyB0aGUgWyphcmd1bWVudCpdKCVzKSB0byB0aGUgWypmdW5jdGlvbipdKCVzKS5cIixcbiAgICAgIGFyZ19pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBmbl9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgLyogKEUpIEFkZGl0aW9uYWwgbW9yZSBjb25jcmV0ZSBleGFtcGxlcyBhbmQgYXNzb2NpYXRlZCBleHBsYW5hdGlvbnMgKi9cbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IFBpcGVsaW5lMSxcbiAgICAgIHRlcm06IG1rX2V4YW1wbGUoXCIxIHw+IGZ1biB4IC0+IHggKyAxXCIpLFxuICAgICAgbWVzc2FnZToge3xcbiAgICAgICAgICAgICAgVGhlIGFyZ3VtZW50IDEgaXMgcGFzc2VkIHRvIGFuIGluY3JlbWVudCBmdW5jdGlvbiwgYW5kIHRoZSBlbnRpcmUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cbiAgICAgICAgICAgICAgVGhlIHBpcGVsaW5lIG9wZXJhdG9yIGlzIHVzZWZ1bCBmb3IgY2hhaW5pbmcgZnVuY3Rpb25zIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICB8fSxcbiAgICB9LFxuICBdLFxufTtcbiIsIlxubW9kdWxlIE1lbmhpckJhc2ljcyA9IHN0cnVjdFxuICBcbiAgZXhjZXB0aW9uIEVycm9yXG4gIFxuICBsZXQgX2VSUiA9XG4gICAgZnVuIF9zIC0+XG4gICAgICByYWlzZSBFcnJvclxuICBcbiAgdHlwZSB0b2tlbiA9IFxuICAgIHwgVEVYVF9PQkpFQ1RfUVVFUllcbiAgICB8IFRFWFRfT0JKRUNUX0tFWSBvZiAoXG4jIDYgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgICAgICAoUXVlcnlBc3QudGV4dF9vYmplY3Rfa2V5KVxuIyAxNiBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gIClcbiAgICB8IFRFWFRfT0JKRUNUX0lOTkVSXG4gICAgfCBRVUVSWV9LRVkgb2YgKFxuIyA5IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgKFF1ZXJ5QXN0LnF1ZXJ5X2tleSlcbiMgMjIgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICApXG4gICAgfCBRVUVSWV9ERUNPUkFUSU9OIG9mIChcbiMgOCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgIChRdWVyeUFzdC5xdWVyeV9kZWNvcmF0aW9uKVxuIyAyNyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gIClcbiAgICB8IEVPRlxuICAgIHwgRElHSVRTIG9mIChcbiMgNSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgIChpbnQpXG4jIDMzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sXCJcbiAgKVxuICAgIHwgQUNUSU9OX0tFWSBvZiAoXG4jIDcgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgICAgICAoUXVlcnlBc3QuYWN0aW9uX2tleSlcbiMgMzggXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICApXG4gIFxuZW5kXG5cbmluY2x1ZGUgTWVuaGlyQmFzaWNzXG5cbiMgMSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICBcbm9wZW4gUXVlcnlBc3RcblxuIyA0OSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG5cbnR5cGUgKCdzLCAncikgX21lbmhpcl9zdGF0ZSA9IFxuICB8IE1lbmhpclN0YXRlMDAgOiAoJ3MsIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGVcbiAgICAoKiogU3RhdGUgMDAuXG4gICAgICAgIFN0YWNrIHNoYXBlIDogLlxuICAgICAgICBTdGFydCBzeW1ib2w6IG1haW4uICopXG5cbiAgfCBNZW5oaXJTdGF0ZTAxIDogKCgncywgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9jZWxsMV9URVhUX09CSkVDVF9RVUVSWSwgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9zdGF0ZVxuICAgICgqKiBTdGF0ZSAwMS5cbiAgICAgICAgU3RhY2sgc2hhcGUgOiBURVhUX09CSkVDVF9RVUVSWS5cbiAgICAgICAgU3RhcnQgc3ltYm9sOiBtYWluLiAqKVxuXG5cbmFuZCAoJ3MsICdyKSBfbWVuaGlyX2NlbGwxX3RleHRfb2JqZWN0ID0gXG4gIHwgTWVuaGlyQ2VsbDFfdGV4dF9vYmplY3Qgb2YgJ3MgKiAoJ3MsICdyKSBfbWVuaGlyX3N0YXRlICogKFF1ZXJ5QXN0LnRleHRfb2JqZWN0KVxuXG5hbmQgKCdzLCAncikgX21lbmhpcl9jZWxsMV9URVhUX09CSkVDVF9RVUVSWSA9IFxuICB8IE1lbmhpckNlbGwxX1RFWFRfT0JKRUNUX1FVRVJZIG9mICdzICogKCdzLCAncikgX21lbmhpcl9zdGF0ZVxuXG5hbmQgX21lbmhpcl9ib3hfbWFpbiA9IFxuICB8IE1lbmhpckJveF9tYWluIG9mIChRdWVyeUFzdC5jb21tYW5kKSBbQEB1bmJveGVkXVxuXG5sZXQgX21lbmhpcl9hY3Rpb25fMSA9XG4gIGZ1biBfMSBfMiAtPlxuICAgIChcbiMgMjMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLCBfMikgKVxuIyA3NyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gICAgIDogKFF1ZXJ5QXN0LmFjdGlvbikpXG5cbmxldCBfbWVuaGlyX2FjdGlvbl8yID1cbiAgZnVuIF8xIC0+XG4gICAgKFxuIyAxOSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKCBBY3Rpb24oXzEpIClcbiMgODUgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICAgICA6IChRdWVyeUFzdC5jb21tYW5kKSlcblxubGV0IF9tZW5oaXJfYWN0aW9uXzMgPVxuICBmdW4gXzEgLT5cbiAgICAoXG4jIDIwIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICggUXVlcnkoXzEpIClcbiMgOTMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICAgICA6IChRdWVyeUFzdC5jb21tYW5kKSlcblxubGV0IF9tZW5oaXJfYWN0aW9uXzQgPVxuICBmdW4gXzEgXzIgLT5cbiAgICAoXG4jIDMwIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsIF8yKSApXG4jIDEwMSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gICAgIDogKFF1ZXJ5QXN0LnF1ZXJ5KSlcblxubGV0IF9tZW5oaXJfYWN0aW9uXzUgPVxuICBmdW4gXzEgLT5cbiAgICAoXG4jIDMzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICggKE5vbmUsIF8xKSApXG4jIDEwOSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gICAgIDogKFF1ZXJ5QXN0LnF1ZXJ5X29wKSlcblxubGV0IF9tZW5oaXJfYWN0aW9uXzYgPVxuICBmdW4gXzEgXzIgLT5cbiAgICAoXG4jIDM0IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoU29tZShfMSksIF8yKSApXG4jIDExNyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gICAgIDogKFF1ZXJ5QXN0LnF1ZXJ5X29wKSlcblxubGV0IF9tZW5oaXJfYWN0aW9uXzcgPVxuICBmdW4gXzIgLT5cbiAgICAoXG4jIDI2IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggSW5uZXIoXzIpIClcbiMgMTI1IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sXCJcbiAgICAgOiAoUXVlcnlBc3QudGV4dF9vYmplY3QpKVxuXG5sZXQgX21lbmhpcl9hY3Rpb25fOCA9XG4gIGZ1biBfMiAtPlxuICAgIChcbiMgMjcgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFF1ZXJpZWQoXzIpIClcbiMgMTMzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sXCJcbiAgICAgOiAoUXVlcnlBc3QudGV4dF9vYmplY3QpKVxuXG5sZXQgX21lbmhpcl9wcmludF90b2tlbiA6IHRva2VuIC0+IHN0cmluZyA9XG4gIGZ1biBfdG9rIC0+XG4gICAgbWF0Y2ggX3RvayB3aXRoXG4gICAgfCBBQ1RJT05fS0VZIF8gLT5cbiAgICAgICAgXCJBQ1RJT05fS0VZXCJcbiAgICB8IERJR0lUUyBfIC0+XG4gICAgICAgIFwiRElHSVRTXCJcbiAgICB8IEVPRiAtPlxuICAgICAgICBcIkVPRlwiXG4gICAgfCBRVUVSWV9ERUNPUkFUSU9OIF8gLT5cbiAgICAgICAgXCJRVUVSWV9ERUNPUkFUSU9OXCJcbiAgICB8IFFVRVJZX0tFWSBfIC0+XG4gICAgICAgIFwiUVVFUllfS0VZXCJcbiAgICB8IFRFWFRfT0JKRUNUX0lOTkVSIC0+XG4gICAgICAgIFwiVEVYVF9PQkpFQ1RfSU5ORVJcIlxuICAgIHwgVEVYVF9PQkpFQ1RfS0VZIF8gLT5cbiAgICAgICAgXCJURVhUX09CSkVDVF9LRVlcIlxuICAgIHwgVEVYVF9PQkpFQ1RfUVVFUlkgLT5cbiAgICAgICAgXCJURVhUX09CSkVDVF9RVUVSWVwiXG5cbmxldCBfbWVuaGlyX2ZhaWwgOiB1bml0IC0+ICdhID1cbiAgZnVuICgpIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJJbnRlcm5hbCBmYWlsdXJlIC0tIHBsZWFzZSBjb250YWN0IHRoZSBwYXJzZXIgZ2VuZXJhdG9yJ3MgZGV2ZWxvcGVycy5cXG4lIVwiO1xuICAgIGFzc2VydCBmYWxzZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBcbiAgW0BAQG9jYW1sLndhcm5pbmcgXCItNC0zN1wiXVxuICBcbiAgbGV0IF9tZW5oaXJfZ290b19tYWluIDogdHlwZSAgdHR2X3N0YWNrLiB0dHZfc3RhY2sgLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfdiAtPlxuICAgICAgTWVuaGlyQm94X21haW4gX3ZcbiAgXG4gIGxldCBfbWVuaGlyX3J1bl8xMiA6IHR5cGUgIHR0dl9zdGFjay4gdHR2X3N0YWNrIC0+IF8gLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfdiBfdG9rIC0+XG4gICAgICBtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgfCBFT0YgLT5cbiAgICAgICAgICBsZXQgXzEgPSBfdiBpblxuICAgICAgICAgIGxldCBfdiA9IF9tZW5oaXJfYWN0aW9uXzMgXzEgaW5cbiAgICAgICAgICBfbWVuaGlyX2dvdG9fbWFpbiBfbWVuaGlyX3N0YWNrIF92XG4gICAgICB8IF8gLT5cbiAgICAgICAgICBfZVJSICgpXG4gIFxuICBsZXQgcmVjIF9tZW5oaXJfZ290b190ZXh0X29iamVjdCA6IHR5cGUgIHR0dl9zdGFjay4gdHR2X3N0YWNrIC0+IF8gLT4gXyAtPiBfIC0+ICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGUgLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rIC0+XG4gICAgICBtYXRjaCBfbWVuaGlyX3Mgd2l0aFxuICAgICAgfCBNZW5oaXJTdGF0ZTAwIC0+XG4gICAgICAgICAgX21lbmhpcl9ydW5fMTAgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rXG4gICAgICB8IE1lbmhpclN0YXRlMDEgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wNCBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgX21lbmhpcl9zIF90b2tcbiAgXG4gIGFuZCBfbWVuaGlyX3J1bl8xMCA6IHR5cGUgIHR0dl9zdGFjay4gdHR2X3N0YWNrIC0+IF8gLT4gXyAtPiBfIC0+ICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGUgLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rIC0+XG4gICAgICBtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgfCBRVUVSWV9LRVkgX3ZfMCAtPlxuICAgICAgICAgIGxldCBfbWVuaGlyX3N0YWNrID0gTWVuaGlyQ2VsbDFfdGV4dF9vYmplY3QgKF9tZW5oaXJfc3RhY2ssIF9tZW5oaXJfcywgX3YpIGluXG4gICAgICAgICAgX21lbmhpcl9ydW5fMDUgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92XzBcbiAgICAgIHwgUVVFUllfREVDT1JBVElPTiBfdl8xIC0+XG4gICAgICAgICAgbGV0IF9tZW5oaXJfc3RhY2sgPSBNZW5oaXJDZWxsMV90ZXh0X29iamVjdCAoX21lbmhpcl9zdGFjaywgX21lbmhpcl9zLCBfdikgaW5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wNiBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3ZfMVxuICAgICAgfCBBQ1RJT05fS0VZIF92XzIgLT5cbiAgICAgICAgICBsZXQgX3RvayA9IF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9sZXhidWYgaW5cbiAgICAgICAgICBsZXQgKF8yLCBfMSkgPSAoX3ZfMiwgX3YpIGluXG4gICAgICAgICAgbGV0IF92ID0gX21lbmhpcl9hY3Rpb25fMSBfMSBfMiBpblxuICAgICAgICAgIChtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgICAgIHwgRU9GIC0+XG4gICAgICAgICAgICAgIGxldCBfMSA9IF92IGluXG4gICAgICAgICAgICAgIGxldCBfdiA9IF9tZW5oaXJfYWN0aW9uXzIgXzEgaW5cbiAgICAgICAgICAgICAgX21lbmhpcl9nb3RvX21haW4gX21lbmhpcl9zdGFjayBfdlxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBfZVJSICgpKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgX2VSUiAoKVxuICBcbiAgYW5kIF9tZW5oaXJfcnVuXzA1IDogdHlwZSAgdHR2X3N0YWNrLiAodHR2X3N0YWNrLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX2NlbGwxX3RleHRfb2JqZWN0IC0+IF8gLT4gXyAtPiBfIC0+IF9tZW5oaXJfYm94X21haW4gPVxuICAgIGZ1biBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgLT5cbiAgICAgIGxldCBfdG9rID0gX21lbmhpcl9sZXhlciBfbWVuaGlyX2xleGJ1ZiBpblxuICAgICAgbGV0IF8xID0gX3YgaW5cbiAgICAgIGxldCBfdiA9IF9tZW5oaXJfYWN0aW9uXzUgXzEgaW5cbiAgICAgIF9tZW5oaXJfZ290b19xdWVyeV9vcCBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgX3Rva1xuICBcbiAgYW5kIF9tZW5oaXJfZ290b19xdWVyeV9vcCA6IHR5cGUgIHR0dl9zdGFjay4gKHR0dl9zdGFjaywgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9jZWxsMV90ZXh0X29iamVjdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF9tZW5oaXJfYm94X21haW4gPVxuICAgIGZ1biBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgX3RvayAtPlxuICAgICAgbGV0IE1lbmhpckNlbGwxX3RleHRfb2JqZWN0IChfbWVuaGlyX3N0YWNrLCBfbWVuaGlyX3MsIF8xKSA9IF9tZW5oaXJfc3RhY2sgaW5cbiAgICAgIGxldCBfMiA9IF92IGluXG4gICAgICBsZXQgX3YgPSBfbWVuaGlyX2FjdGlvbl80IF8xIF8yIGluXG4gICAgICBfbWVuaGlyX2dvdG9fcXVlcnkgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rXG4gIFxuICBhbmQgX21lbmhpcl9nb3RvX3F1ZXJ5IDogdHlwZSAgdHR2X3N0YWNrLiB0dHZfc3RhY2sgLT4gXyAtPiBfIC0+IF8gLT4gKHR0dl9zdGFjaywgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9zdGF0ZSAtPiBfIC0+IF9tZW5oaXJfYm94X21haW4gPVxuICAgIGZ1biBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgX21lbmhpcl9zIF90b2sgLT5cbiAgICAgIG1hdGNoIF9tZW5oaXJfcyB3aXRoXG4gICAgICB8IE1lbmhpclN0YXRlMDAgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8xMiBfbWVuaGlyX3N0YWNrIF92IF90b2tcbiAgICAgIHwgTWVuaGlyU3RhdGUwMSAtPlxuICAgICAgICAgIF9tZW5oaXJfcnVuXzA5IF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfdG9rXG4gIFxuICBhbmQgX21lbmhpcl9ydW5fMDkgOiB0eXBlICB0dHZfc3RhY2suICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfY2VsbDFfVEVYVF9PQkpFQ1RfUVVFUlkgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF90b2sgLT5cbiAgICAgIGxldCBNZW5oaXJDZWxsMV9URVhUX09CSkVDVF9RVUVSWSAoX21lbmhpcl9zdGFjaywgX21lbmhpcl9zKSA9IF9tZW5oaXJfc3RhY2sgaW5cbiAgICAgIGxldCBfMiA9IF92IGluXG4gICAgICBsZXQgX3YgPSBfbWVuaGlyX2FjdGlvbl84IF8yIGluXG4gICAgICBfbWVuaGlyX2dvdG9fdGV4dF9vYmplY3QgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rXG4gIFxuICBhbmQgX21lbmhpcl9ydW5fMDYgOiB0eXBlICB0dHZfc3RhY2suICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfY2VsbDFfdGV4dF9vYmplY3QgLT4gXyAtPiBfIC0+IF8gLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiAtPlxuICAgICAgbGV0IF90b2sgPSBfbWVuaGlyX2xleGVyIF9tZW5oaXJfbGV4YnVmIGluXG4gICAgICBtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgfCBRVUVSWV9LRVkgX3ZfMCAtPlxuICAgICAgICAgIGxldCBfdG9rID0gX21lbmhpcl9sZXhlciBfbWVuaGlyX2xleGJ1ZiBpblxuICAgICAgICAgIGxldCAoXzIsIF8xKSA9IChfdl8wLCBfdikgaW5cbiAgICAgICAgICBsZXQgX3YgPSBfbWVuaGlyX2FjdGlvbl82IF8xIF8yIGluXG4gICAgICAgICAgX21lbmhpcl9nb3RvX3F1ZXJ5X29wIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfdG9rXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBfZVJSICgpXG4gIFxuICBhbmQgX21lbmhpcl9ydW5fMDQgOiB0eXBlICB0dHZfc3RhY2suICgodHR2X3N0YWNrLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX2NlbGwxX1RFWFRfT0JKRUNUX1FVRVJZIGFzICdzdGFjaykgLT4gXyAtPiBfIC0+IF8gLT4gKCdzdGFjaywgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9zdGF0ZSAtPiBfIC0+IF9tZW5oaXJfYm94X21haW4gPVxuICAgIGZ1biBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgX21lbmhpcl9zIF90b2sgLT5cbiAgICAgIGxldCBfbWVuaGlyX3N0YWNrID0gTWVuaGlyQ2VsbDFfdGV4dF9vYmplY3QgKF9tZW5oaXJfc3RhY2ssIF9tZW5oaXJfcywgX3YpIGluXG4gICAgICBtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgfCBRVUVSWV9LRVkgX3ZfMCAtPlxuICAgICAgICAgIF9tZW5oaXJfcnVuXzA1IF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdl8wXG4gICAgICB8IFFVRVJZX0RFQ09SQVRJT04gX3ZfMSAtPlxuICAgICAgICAgIF9tZW5oaXJfcnVuXzA2IF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdl8xXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBfZVJSICgpXG4gIFxuICBsZXQgX21lbmhpcl9ydW5fMDIgOiB0eXBlICB0dHZfc3RhY2suIHR0dl9zdGFjayAtPiBfIC0+IF8gLT4gKHR0dl9zdGFjaywgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9zdGF0ZSAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF9tZW5oaXJfcyAtPlxuICAgICAgbGV0IF90b2sgPSBfbWVuaGlyX2xleGVyIF9tZW5oaXJfbGV4YnVmIGluXG4gICAgICBtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgfCBURVhUX09CSkVDVF9LRVkgX3YgLT5cbiAgICAgICAgICBsZXQgX3RvayA9IF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9sZXhidWYgaW5cbiAgICAgICAgICBsZXQgXzIgPSBfdiBpblxuICAgICAgICAgIGxldCBfdiA9IF9tZW5oaXJfYWN0aW9uXzcgXzIgaW5cbiAgICAgICAgICBfbWVuaGlyX2dvdG9fdGV4dF9vYmplY3QgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBfZVJSICgpXG4gIFxuICBsZXQgcmVjIF9tZW5oaXJfcnVuXzAxIDogdHlwZSAgdHR2X3N0YWNrLiB0dHZfc3RhY2sgLT4gXyAtPiBfIC0+ICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGUgLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfbWVuaGlyX3MgLT5cbiAgICAgIGxldCBfbWVuaGlyX3N0YWNrID0gTWVuaGlyQ2VsbDFfVEVYVF9PQkpFQ1RfUVVFUlkgKF9tZW5oaXJfc3RhY2ssIF9tZW5oaXJfcykgaW5cbiAgICAgIGxldCBfbWVuaGlyX3MgPSBNZW5oaXJTdGF0ZTAxIGluXG4gICAgICBsZXQgX3RvayA9IF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9sZXhidWYgaW5cbiAgICAgIG1hdGNoIChfdG9rIDogTWVuaGlyQmFzaWNzLnRva2VuKSB3aXRoXG4gICAgICB8IFRFWFRfT0JKRUNUX1FVRVJZIC0+XG4gICAgICAgICAgX21lbmhpcl9ydW5fMDEgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF9tZW5oaXJfc1xuICAgICAgfCBURVhUX09CSkVDVF9JTk5FUiAtPlxuICAgICAgICAgIF9tZW5oaXJfcnVuXzAyIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfbWVuaGlyX3NcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIF9lUlIgKClcbiAgXG4gIGxldCBfbWVuaGlyX3J1bl8wMCA6IHR5cGUgIHR0dl9zdGFjay4gdHR2X3N0YWNrIC0+IF8gLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIC0+XG4gICAgICBsZXQgX21lbmhpcl9zID0gTWVuaGlyU3RhdGUwMCBpblxuICAgICAgbGV0IF90b2sgPSBfbWVuaGlyX2xleGVyIF9tZW5oaXJfbGV4YnVmIGluXG4gICAgICBtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgfCBURVhUX09CSkVDVF9RVUVSWSAtPlxuICAgICAgICAgIF9tZW5oaXJfcnVuXzAxIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfbWVuaGlyX3NcbiAgICAgIHwgVEVYVF9PQkpFQ1RfSU5ORVIgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wMiBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9zXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBfZVJSICgpXG4gIFxuZW5kXG5cbmxldCBtYWluID1cbiAgZnVuIF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9sZXhidWYgLT5cbiAgICBsZXQgX21lbmhpcl9zdGFjayA9ICgpIGluXG4gICAgbGV0IE1lbmhpckJveF9tYWluIHYgPSBfbWVuaGlyX3J1bl8wMCBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgaW5cbiAgICB2XG4iLCIle1xub3BlbiBRdWVyeUFzdFxuJX1cblxuJXRva2VuIDxpbnQ+IERJR0lUU1xuJXRva2VuIDxRdWVyeUFzdC50ZXh0X29iamVjdF9rZXk+IFRFWFRfT0JKRUNUX0tFWVxuJXRva2VuIDxRdWVyeUFzdC5hY3Rpb25fa2V5PiBBQ1RJT05fS0VZXG4ldG9rZW4gPFF1ZXJ5QXN0LnF1ZXJ5X2RlY29yYXRpb24+IFFVRVJZX0RFQ09SQVRJT05cbiV0b2tlbiA8UXVlcnlBc3QucXVlcnlfa2V5PiBRVUVSWV9LRVlcbiV0b2tlbiBURVhUX09CSkVDVF9JTk5FUlxuJXRva2VuIFRFWFRfT0JKRUNUX1FVRVJZXG4ldG9rZW4gRU9GXG5cbiVzdGFydCA8UXVlcnlBc3QuY29tbWFuZD4gbWFpblxuXG4lJVxuXG5tYWluOlxuICB8IGFjdGlvbiBFT0YgeyBBY3Rpb24oJDEpIH1cbiAgfCBxdWVyeSBFT0YgeyBRdWVyeSgkMSkgfVxuXG5hY3Rpb246XG4gIHwgdGV4dF9vYmplY3QgQUNUSU9OX0tFWSB7ICgkMSwgJDIpIH1cblxudGV4dF9vYmplY3Q6XG4gIHwgVEVYVF9PQkpFQ1RfSU5ORVIgVEVYVF9PQkpFQ1RfS0VZIHsgSW5uZXIoJDIpIH1cbiAgfCBURVhUX09CSkVDVF9RVUVSWSBxdWVyeSB7IFF1ZXJpZWQoJDIpIH1cblxucXVlcnk6XG4gIHwgdGV4dF9vYmplY3QgcXVlcnlfb3AgeyAoJDEsICQyKSB9XG5cbnF1ZXJ5X29wOlxuICB8IFFVRVJZX0tFWSB7IChOb25lLCAkMSkgfVxuICB8IFFVRVJZX0RFQ09SQVRJT04gUVVFUllfS0VZIHsgKFNvbWUoJDEpLCAkMikgfVxuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuLy9vcGVuIFV0aWwuV2ViO1xuXG5sZXQgaW5wdXRGaWVsZF9pZCA9IFwiYTExeS1pbnB1dFwiO1xubGV0IG91dHB1dEFyZWFfaWQgPSBcImExMXktb3V0cHV0XCI7XG5cbmxldCBpbnB1dF92aWV3ID0gKGlkLCBpbnB1dCk6IE5vZGUudCA9PiB7XG4gIE5vZGUuaW5wdXQoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLnR5cGVfKFwidGV4dFwiKSxcbiAgICAgICAgQXR0ci5pZChpZCksXG4gICAgICAgIEF0dHIucGxhY2Vob2xkZXIoXCJZb3VyIGlucHV0Li4uXCIpLFxuICAgICAgXSksXG4gICAgW05vZGUudGV4dChpbnB1dCldLFxuICApO1xufTtcblxubGV0IG91dHB1dF92aWV3ID0gKGlkLCBjb250ZW50KTogTm9kZS50ID0+IHtcbiAgTm9kZS5kaXYofmF0dHI9QXR0ci5pZChpZCksIFtOb2RlLnRleHQoY29udGVudCldKTtcbn07XG5cbmxldCB2aWV3ID0gKH5faW5qZWN0LCBtb2RlbDogQWNjZXNzaWJpbGl0eU1vZGVsLnQpOiBOb2RlLnQgPT4ge1xuICBOb2RlLmRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiYTExeVwiXSksXG4gICAgW1xuICAgICAgaW5wdXRfdmlldyhpbnB1dEZpZWxkX2lkLCBtb2RlbC5pbnB1dCksXG4gICAgICBvdXRwdXRfdmlldyhcbiAgICAgICAgb3V0cHV0QXJlYV9pZCxcbiAgICAgICAgbW9kZWwucXVlcnlfcmVzdWx0IHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1cIlwiKSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZnVuYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBGdW5BcCxcbiAgdGVybTogbWtfZXhhbXBsZShcIihmdW4geCAtPiB4KSgxKVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaWRlbnRpdHkgZnVuY3Rpb24gaXMgYXBwbGllZCB0byAxLiBUaGUgYXJndW1lbnQgeCBpcyBib3VuZCB0byAxIGluIHRoZSBmdW5jdGlvbiBib2R5IGFuZCB0aGUgYm9keSBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG4vLyBUT0RPIEhhcyBhIHJlZCBib3ggYXJvdW5kIGl0IGluIHRoZSByZXN1bHRcbmxldCBjb25hcHBfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IENvbkFwLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHlwZSBUID0gTm9uZSArIFNvbWUoSW50KVxcbmluIFNvbWUoMSlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGNvbnN0cnVjdG9yIFNvbWUgaXMgYXBwbGllZCB0byAxLCB3aGljaCBldmFsdWF0ZXMgdG8gU29tZSgxKS5cIixcbn07XG5sZXQgX2V4cF9mdW4gPSBleHAoXCJlX2Z1blwiKTtcbmxldCBfZXhwX2FyZyA9IGV4cChcImVfYXJnXCIpO1xubGV0IGZ1bmFwcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnhfaWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9mdW4pLCB4X2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfYXJnKSwgYXJnX2lkKSxcbl07XG5sZXQgZnVuYXBwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBcHBsaWVzIHRoZSBbKmZ1bmN0aW9uKl0oJXMpIHRvIHRoZSBbKmFyZ3VtZW50Kl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IEZ1bkFwRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF9mdW4sIG1rX2FwX2V4cChbW19leHBfYXJnXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZnVuYXBwX2V4cF9leF0sXG4gIH07XG59O1xubGV0IF9leHBfY29uID0gZXhwKFwiZV9jb25cIik7XG5sZXQgX2V4cF9hcmcgPSBleHAoXCJlX2FyZ1wiKTtcbmxldCBjb25hcHBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54X2lkOiBJZC50LCB+YXJnX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfY29uKSwgeF9pZCksXG4gIChQaWVjZS5pZChfZXhwX2FyZyksIGFyZ19pZCksXG5dO1xubGV0IGNvbmFwcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQXBwbGllcyB0aGUgWypgJXNgIGNvbnN0cnVjdG9yKl0oJXMpIHRvIHRoZSBbKmFyZ3VtZW50Kl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IENvbkFwRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF9jb24sIG1rX2FwX2V4cChbW19leHBfYXJnXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbY29uYXBwX2V4cF9leF0sXG4gIH07XG59O1xuXG5sZXQgZnVuYXBzOiBncm91cCA9IHtpZDogRnVuQXBFeHAsIGZvcm1zOiBbZnVuYXBwX2V4cF19O1xuXG5sZXQgY29uYXBzOiBncm91cCA9IHtpZDogQ29uQXBFeHAsIGZvcm1zOiBbY29uYXBwX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBhcF9wYXRfY29sb3JpbmdfaWRzID0gKH5jb25faWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBhcF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IG1hdGNoIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdpdGggYW4gKmFyZ3VtZW50KiBtYXRjaGluZyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIG1hdGNoIHRoaXMgKmNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEFwUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdF9jb24sIG1rX2FwX3BhdChbW19wYXRfYXJnXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBhcDogZ3JvdXAgPSB7aWQ6IEFwUGF0LCBmb3JtczogW2FwX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90eXBfYXJnID0gdHlwKFwidHlfYXJnXCIpO1xubGV0IF90eXBfb3V0ID0gdHlwKFwidHlfb3V0XCIpO1xubGV0IGFycm93X3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+YXJnX2lkOiBJZC50LCB+cmVzdWx0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfYXJnKSwgYXJnX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfb3V0KSwgcmVzdWx0X2lkKSxcbl07XG5sZXQgYXJyb3dfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgYXJyb3cgdHlwZSBjbGFzc2lmaWVzIGZ1bmN0aW9ucyB3aXRoIFsqYXJndW1lbnQgdHlwZSpdKCVzKSBhbmQgWypvdXRwdXQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBBcnJvd1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW190eXBfYXJnLCBzcGFjZSgpLCBhcnJvdygpLCBzcGFjZSgpLCBfdHlwX291dF0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3R5cF9vdXQpLCBbdHlwKFwidHlfb3V0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3R5cF9hcmcxID0gdHlwKFwidHlfYXJnMVwiKTtcbmxldCBfdHlwX2FyZzIgPSB0eXAoXCJ0eV9hcmcyXCIpO1xubGV0IF90eXBfb3V0ID0gdHlwKFwidHlfb3V0XCIpO1xubGV0IGFycm93M190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmFyZzFfaWQ6IElkLnQsIH5hcmcyX2lkOiBJZC50LCB+cmVzdWx0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfYXJnMSksIGFyZzFfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9hcmcyKSwgYXJnMl9pZCksXG4gIChQaWVjZS5pZChfdHlwX291dCksIHJlc3VsdF9pZCksXG5dO1xubGV0IGFycm93M190eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBhcnJvdyB0eXBlIGNsYXNzaWZpZXMgZnVuY3Rpb25zIHdpdGggWypmaXJzdCBhcmd1bWVudCB0eXBlKl0oJXMpLCBbKnNlY29uZCBhcmd1bWVudCB0eXBlKl0oJXMpLCBhbmQgWypvdXRwdXQgdHlwZSpdKCVzKS5cIjtcbiAgbGV0IGFycm93MiA9IGFycm93KCk7XG4gIHtcbiAgICBpZDogQXJyb3czVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfdHlwX2FyZzEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgYXJyb3coKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX2FyZzIsXG4gICAgICBzcGFjZSgpLFxuICAgICAgYXJyb3cyLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF90eXBfb3V0LFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFycm93MiksIFt0eXAoXCJ0eV9hcmcyXCIpLCBhcnJvdygpLCB0eXAoXCJ0eV9vdXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGFycm93OiBncm91cCA9IHtpZDogQXJyb3dUeXAsIGZvcm1zOiBbYXJyb3dfdHlwXX07XG5cbmxldCBhcnJvdzM6IGdyb3VwID0ge2lkOiBBcnJvdzNUeXAsIGZvcm1zOiBbYXJyb3czX3R5cCwgYXJyb3dfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlID0ge1xuICBzdWJfaWQ6IENhc2VXaWxkU2ltcGxlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAxIFxcbnwgMiA9PiAzIFxcbnwgXyA9PiA0IFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgMS4gU2luY2UgdGhlIHNjcnV0aW5lZSBkb2VzIG5vdCBtYXRjaCB0aGUgdGhlIGZpcnN0IHBhdHRlcm4gMi4gU2luY2UgdGhlIHNjcnV0aW5lZSBkb2VzIG1hdGNoIHRoZSBzZWNvbmQgcGF0dGVybiB3aGljaCBpcyBhIHdpbGRjYXJkLCB0aGUgc2Vjb25kIGJyYW5jaCBpcyB0YWtlbi4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBzZWNvbmQgY2xhdXNlIDQuXCIsXG59O1xubGV0IGNhc2VfZXhhbXBsZV93aWxkX3R1cGxlID0ge1xuICBzdWJfaWQ6IENhc2VXaWxkVHVwbGUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlICgxLCAyKSBcXG58IChfLCAyKSA9PiAzIFxcbnwgXyA9PiA0IFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgKDEsIDIpLiBTaW5jZSB0aGUgc2NydXRpbmVlIG1hdGNoZXMgdGhlIGZpcnN0IHBhdHRlcm4gKF8sIDIpLCB0aGUgZmlyc3QgYnJhbmNoIGlzIHRha2VuLiBUaGlzIHBhdHRlcm4gaXMgbWF0Y2hlZCBiZWNhdXNlIHRoZSBmaXJzdCBlbGVtZW50IDEgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBwYXR0ZXJuLCB3aGljaCBpcyBhIHdpbGRjYXJkLCBhbmQgdGhlIHNlY29uZCBlbGVtZW50IDIgbWF0Y2hlcyB0aGUgc2Vjb25kIGVsZW1lbnQgcGF0dGVybiAyLiBUaGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIGZpcnN0IGNsYXVzZSAzLlwiLFxufTtcbmxldCBjYXNlX2V4YW1wbGVfaW50ID0ge1xuICBzdWJfaWQ6IENhc2VJbnQsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlIDEgXFxufCAxID0+IDEuMSBcXG58IDIgPT4gMi4yIFxcbnwgXyA9PiAzLjMgXFxuZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBzY3J1dGluZWUgb2YgdGhlIGNhc2UgZXhwcmVzc2lvbiBpcyAxLiBTaW5jZSB0aGUgc2NydXRpbmVlIG1hdGNoZXMgdGhlIGZpcnN0IHBhdHRlcm4sIHRoZSBmaXJzdCBicmFuY2ggaXMgdGFrZW4sIGFuZCB0aGUgY2FzZSBldmFsdWF0ZXMgdG8gdGhlIGZpcnN0IGNsYXVzZS5cIixcbn07XG5sZXQgY2FzZV9leGFtcGxlX2Jvb2wgPSB7XG4gIHN1Yl9pZDogQ2FzZUJvb2wsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlIGZhbHNlIFxcbnwgdHJ1ZSA9PiAxIFxcbnwgZmFsc2UgPT4gMiBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzIGZhbHNlLiBUaGUgc2NydXRpbmVlIGRvZXMgbm90IG1hdGNoIHRoZSBmaXJzdCBwYXR0ZXJuIGJ1dCBkb2VzIG1hdGNoIHRoZSBzZWNvbmQgcGF0dGVybiwgc28gdGhlIHNlY29uZCBicmFuY2ggaXMgdGFrZW4uXCIsXG59O1xuLy8gVE9ETyAtIEkgZG9uJ3QgdGhpbmsgY2hhbmdpbmcgc3BlY2lmaWNpdHkgb24gdGhlIG51bWJlciBvZiBjYXNlcyBpcyByZWFsbHkgdGhlIG1vc3Rcbi8vIGJlbmVmaWNpYWwgc3BlY2lmaWNpdHkgY2hhbmdlIC0gSSB0aGluayBpbnN0ZWFkIGhhdmUgZ2VuZXJpYyBhdCB0b3AgbGV2ZWxcbi8vIGFuZCB0aGVuIGhhdmUgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2V0dXAgZm9yIHNwZWNpZmljIHRoYXQgaXMgY3JlYXRlZCBtb3JlXG4vLyBkeW5hbWljYWxseSBjYWxsaW5nIHNldHVwIG1ldGhvZHMgaGVyZSBidXQgbW9yZVxuLy8gd29yayBkb25lIGluIHRoZSBFeHBsYWluVGhpcyBjb2RlIC0gbWF5YmUganVzdCB1cCB0byAzIG9yIDQgYnJhbmNoZXM/XG5sZXQgX2V4cF9zY3J1dCA9IGV4cChcImVfc2NydXRcIik7XG5sZXQgY2FzZV9leHBfY29sb3JpbmdfaWRzID0gKH5zY3J1dF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX3NjcnV0KSwgc2NydXRfaWQpLFxuXTtcbmxldCBjYXNlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJDb25zaWRlciBlYWNoIGJyYW5jaCBpbiBvcmRlci4gRm9yIHRoZSBmaXJzdCBicmFuY2ggd2l0aCBhICpwYXR0ZXJuKiB0aGF0IG1hdGNoZXMgdGhlIFsqc2NydXRpbmVlKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgKmNsYXVzZSouXCI7XG4gIGxldCBjYXNlID1cbiAgICBta19jYXNlKFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX2V4cF9zY3J1dCxcbiAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgIG1rX3J1bGUoW1tzcGFjZSgpLCBwYXQoXCJwMVwiKSwgc3BhY2UoKV1dKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgZXhwKFwiZTFcIiksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBta19ydWxlKFtbc3BhY2UoKSwgcGF0KFwiLi4uXCIpLCBzcGFjZSgpXV0pLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBleHAoXCIuLi5cIiksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgXSxcbiAgICBdKTtcbiAge1xuICAgIGlkOiBDYXNlRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbY2FzZV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW1xuICAgICAgY2FzZV9leGFtcGxlX2ludCxcbiAgICAgIGNhc2VfZXhhbXBsZV9ib29sLFxuICAgICAgY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlLFxuICAgICAgY2FzZV9leGFtcGxlX3dpbGRfdHVwbGUsXG4gICAgXSxcbiAgfTtcbn07XG5cbmxldCBjYXNlOiBncm91cCA9IHtpZDogQ2FzZUV4cCwgZm9ybXM6IFtjYXNlX2V4cF19O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IGp1bXBfdG8gPSBlbnRyeSA9PlxuICBVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihKdW1wKFRpbGVJZChIYXozbGNvcmUuQ3R4LmdldF9pZChlbnRyeSkpKSk7XG5cbmxldCBjb250ZXh0X2VudHJ5X3ZpZXcgPSAofmluamVjdCwgZW50cnk6IEhhejNsY29yZS5DdHguZW50cnkpOiBOb2RlLnQgPT4ge1xuICBsZXQgZGl2X25hbWUgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIGNsc3MoW1wibmFtZVwiXSksXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IGluamVjdChqdW1wX3RvKGVudHJ5KSkpLFxuICAgICAgICBdKSxcbiAgICApO1xuICBzd2l0Y2ggKGVudHJ5KSB7XG4gIHwgVmFyRW50cnkoe25hbWUsIHR5cCwgX30pXG4gIHwgQ29uc3RydWN0b3JFbnRyeSh7bmFtZSwgdHlwLCBffSkgPT5cbiAgICBkaXZfYyhcbiAgICAgIFwiY29udGV4dC1lbnRyeVwiLFxuICAgICAgW1xuICAgICAgICBkaXZfbmFtZShbdGV4dChuYW1lKV0pLFxuICAgICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzZXBlcmF0b3JcIl0pLCBbdGV4dChcIjpcIildKSxcbiAgICAgICAgVHlwZS52aWV3KHR5cCksXG4gICAgICBdLFxuICAgIClcbiAgfCBUVmFyRW50cnkoe25hbWUsIGtpbmQsIF99KSA9PlxuICAgIGRpdl9jKFxuICAgICAgXCJjb250ZXh0LWVudHJ5XCIsXG4gICAgICBbXG4gICAgICAgIGRpdl9uYW1lKFtUeXBlLmFsaWFzX3ZpZXcobmFtZSldKSxcbiAgICAgICAgZGl2KH5hdHRyPWNsc3MoW1wic2VwZXJhdG9yXCJdKSwgW3RleHQoXCI6OlwiKV0pLFxuICAgICAgICBLaW5kLnZpZXcoa2luZCksXG4gICAgICBdLFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBjdHhfdmlldyA9ICh+aW5qZWN0LCBjdHg6IEhhejNsY29yZS5DdHgudCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJjb250ZXh0LWVudHJpZXNcIl0pLFxuICAgIExpc3QubWFwKFxuICAgICAgY29udGV4dF9lbnRyeV92aWV3KH5pbmplY3QpLFxuICAgICAgY3R4IHw+IEhhejNsY29yZS5DdHguZmlsdGVyX2R1cGxpY2F0ZXMgfD4gTGlzdC5yZXYsXG4gICAgKSxcbiAgKTtcblxubGV0IGN0eF9zb3J0c192aWV3ID0gKH5pbmplY3QsIGNpOiBIYXozbGNvcmUuU3RhdGljcy5JbmZvLnQpID0+XG4gIEhhejNsY29yZS5JbmZvLmN0eF9vZihjaSlcbiAgfD4gSGF6M2xjb3JlLkN0eC5maWx0ZXJfZHVwbGljYXRlc1xuICB8PiBMaXN0LnJldlxuICB8PiBMaXN0Lm1hcChjb250ZXh0X2VudHJ5X3ZpZXcofmluamVjdCkpO1xuXG5sZXQgdmlldyA9XG4gICAgKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgY2k6IEhhejNsY29yZS5TdGF0aWNzLkluZm8udCk6IE5vZGUudCA9PiB7XG4gIGxldCBjbHNzID1cbiAgICBjbHNzKFxuICAgICAgW1wiY29udGV4dC1pbnNwZWN0b3JcIl0gQCAoc2V0dGluZ3MuY29udGV4dF9pbnNwZWN0b3IgPyBbXCJ2aXNpYmxlXCJdIDogW10pLFxuICAgICk7XG4gIGRpdih+YXR0cj1jbHNzLCBjdHhfc29ydHNfdmlldyh+aW5qZWN0LCBjaSkpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVycmMgPSBcImVycm9yXCI7XG5sZXQgb2tjID0gXCJva1wiO1xubGV0IGRpdl9lcnIgPSBkaXYofmF0dHI9Y2xzcyhbZXJyY10pKTtcbmxldCBkaXZfb2sgPSBkaXYofmF0dHI9Y2xzcyhbb2tjXSkpO1xuXG5sZXQgY29kZV9lcnIgPSAoY29kZTogc3RyaW5nKTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcImNvZGVcIl0pLCBbdGV4dChjb2RlKV0pO1xuXG5sZXQgZXhwbGFpbl90aGlzX3RvZ2dsZSA9ICh+aW5qZWN0LCB+c2hvd19leHBsYWluX3RoaXM6IGJvb2wpOiBOb2RlLnQgPT4ge1xuICBsZXQgdG9vbHRpcCA9IFwiVG9nZ2xlIGxhbmd1YWdlIGRvY3VtZW50YXRpb25cIjtcbiAgbGV0IHRvZ2dsZV9leHBsYWluX3RoaXMgPSBfID0+XG4gICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuTWFueShbXG4gICAgICBpbmplY3QoVXBkYXRlLlNldChFeHBsYWluVGhpcyhUb2dnbGVTaG93KSkpLFxuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuU3RvcF9wcm9wYWdhdGlvbixcbiAgICBdKTtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiZXhwbGFpbi10aGlzLWJ1dHRvblwiXSksXG4gICAgW1dpZGdldHMudG9nZ2xlKH50b29sdGlwLCBcIj9cIiwgc2hvd19leHBsYWluX3RoaXMsIHRvZ2dsZV9leHBsYWluX3RoaXMpXSxcbiAgKTtcbn07XG5cbmxldCBjbHNfdmlldyA9IChjaTogSW5mby50KTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInN5bnRheC1jbGFzc1wiXSksXG4gICAgW3RleHQoY2kgfD4gSW5mby5jbHNfb2YgfD4gVGVybS5DbHMuc2hvdyldLFxuICApO1xuXG5sZXQgY3R4X3RvZ2dsZSA9ICh+aW5qZWN0LCBjb250ZXh0X2luc3BlY3RvcjogYm9vbCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4gaW5qZWN0KFVwZGF0ZS5TZXQoQ29udGV4dEluc3BlY3RvcikpKSxcbiAgICAgICAgY2xzcyhbXCJnYW1tYVwiXSBAIChjb250ZXh0X2luc3BlY3RvciA/IFtcInZpc2libGVcIl0gOiBbXSkpLFxuICAgICAgXSksXG4gICAgW3RleHQoXCLOk1wiKV0sXG4gICk7XG5cbmxldCB0ZXJtX3ZpZXcgPSAofmluamVjdCwgfnNldHRpbmdzOiBTZXR0aW5ncy50LCBjaSkgPT4ge1xuICBsZXQgc29ydCA9IGNpIHw+IEluZm8uc29ydF9vZiB8PiBTb3J0LnNob3c7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImNpLWhlYWRlclwiLCBzb3J0XSBAIChJbmZvLmlzX2Vycm9yKGNpKSA/IFtlcnJjXSA6IFtdKSksXG4gICAgW1xuICAgICAgY3R4X3RvZ2dsZSh+aW5qZWN0LCBzZXR0aW5ncy5jb250ZXh0X2luc3BlY3RvciksXG4gICAgICBDdHhJbnNwZWN0b3Iudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKSxcbiAgICAgIGRpdih+YXR0cj1jbHNzKFtcInRlcm0tdGFnXCJdKSwgW3RleHQoc29ydCldKSxcbiAgICAgIGV4cGxhaW5fdGhpc190b2dnbGUoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5zaG93X2V4cGxhaW5fdGhpcz1zZXR0aW5ncy5leHBsYWluVGhpcy5zaG93LFxuICAgICAgKSxcbiAgICAgIGNsc192aWV3KGNpKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGVsZW1lbnRzX25vdW46IFRlcm0uQ2xzLnQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgRXhwKE1hdGNoIHwgSWYpID0+IFwiQnJhbmNoZXNcIlxuICB8IEV4cChMaXN0TGl0KVxuICB8IFBhdChMaXN0TGl0KSA9PiBcIkVsZW1lbnRzXCJcbiAgfCBFeHAoTGlzdENvbmNhdCkgPT4gXCJPcGVyYW5kc1wiXG4gIHwgXyA9PiBmYWlsd2l0aChcImVsZW1lbnRzX25vdW46IENscyBkb2Vzbid0IGhhdmUgZWxlbWVudHNcIik7XG5cbmxldCBjb21tb25fZXJyX3ZpZXcgPSAoY2xzOiBUZXJtLkNscy50LCBlcnI6IEluZm8uZXJyb3JfY29tbW9uKSA9PlxuICBzd2l0Y2ggKGVycikge1xuICB8IE5vVHlwZShCYWRUb2tlbih0b2tlbikpID0+XG4gICAgc3dpdGNoIChGb3JtLmJhZF90b2tlbl9jbHModG9rZW4pKSB7XG4gICAgfCBCYWRJbnQgPT4gW3RleHQoXCJJbnRlZ2VyIGlzIHRvbyBsYXJnZSBvciB0b28gc21hbGxcIildXG4gICAgfCBPdGhlciA9PiBbdGV4dChQcmludGYuc3ByaW50ZihcIlxcXCIlc1xcXCIgaXNuJ3QgYSB2YWxpZCB0b2tlblwiLCB0b2tlbikpXVxuICAgIH1cbiAgfCBOb1R5cGUoQmFkVHJpdkFwKHR5KSkgPT4gW1xuICAgICAgdGV4dChcIkZ1bmN0aW9uIGFyZ3VtZW50IHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcodHkpLFxuICAgICAgdGV4dChcImluY29uc2lzdGVudCB3aXRoXCIpLFxuICAgICAgVHlwZS52aWV3KFByb2QoW10pKSxcbiAgICBdXG4gIHwgTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihuYW1lKSkgPT4gW2NvZGVfZXJyKG5hbWUpLCB0ZXh0KFwibm90IGZvdW5kXCIpXVxuICB8IEluY29uc2lzdGVudChXaXRoQXJyb3codHlwKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcodHlwKSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aCBhcnJvdyB0eXBlXCIpLFxuICAgIF1cbiAgfCBJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe2FuYSwgc3lufSkpID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiaW5jb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCBJbmNvbnNpc3RlbnQoSW50ZXJuYWwodHlzKSkgPT4gW1xuICAgICAgdGV4dChlbGVtZW50c19ub3VuKGNscykgKysgXCIgaGF2ZSBpbmNvbnNpc3RlbnQgdHlwZXM6XCIpLFxuICAgICAgLi4uTGlzdFV0aWwuam9pbih0ZXh0KFwiLFwiKSwgTGlzdC5tYXAoVHlwZS52aWV3LCB0eXMpKSxcbiAgICBdXG4gIH07XG5cbmxldCBjb21tb25fb2tfdmlldyA9IChjbHM6IFRlcm0uQ2xzLnQsIG9rOiBJbmZvLm9rX3BhdCkgPT4ge1xuICBzd2l0Y2ggKGNscywgb2spIHtcbiAgfCAoRXhwKE11bHRpSG9sZSkgfCBQYXQoTXVsdGlIb2xlKSwgXykgPT4gW1xuICAgICAgdGV4dChcIkV4cGVjdGluZyBvcGVyYXRvciBvciBkZWxpbWl0ZXJcIiksXG4gICAgXVxuICB8IChFeHAoRW1wdHlIb2xlKSwgU3luKF8pKSA9PiBbdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBleHByZXNzaW9uXCIpXVxuICB8IChQYXQoRW1wdHlIb2xlKSwgU3luKF8pKSA9PiBbdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBwYXR0ZXJuXCIpXVxuICB8IChFeHAoRW1wdHlIb2xlKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBleHByZXNzaW9uIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKFBhdChFbXB0eUhvbGUpLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBffSkpKSA9PiBbXG4gICAgICB0ZXh0KFwiRmlsbGFibGUgYnkgYW55IHBhdHRlcm4gb2YgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgU3luKHN5bikpID0+IFt0ZXh0KFwiOlwiKSwgVHlwZS52aWV3KHN5bildXG4gIHwgKFBhdChWYXIpIHwgUGF0KFdpbGQpLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBffSkpKSA9PiBbXG4gICAgICB0ZXh0KFwiOlwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgQW5hKENvbnNpc3RlbnQoe2FuYSwgc3luLCBffSkpKSB3aGVuIGFuYSA9PSBzeW4gPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJlcXVhbHMgZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICBdXG4gIHwgKF8sIEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJjb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgQW5hKEludGVybmFsbHlJbmNvbnNpc3RlbnQoe2FuYSwgbm9qb2luOiB0eXN9KSkpID0+XG4gICAgW1xuICAgICAgdGV4dChlbGVtZW50c19ub3VuKGNscykgKysgXCIgaGF2ZSBpbmNvbnNpc3RlbnQgdHlwZXM6XCIpLFxuICAgICAgLi4uTGlzdFV0aWwuam9pbih0ZXh0KFwiLFwiKSwgTGlzdC5tYXAoVHlwZS52aWV3LCB0eXMpKSxcbiAgICBdXG4gICAgQCBbdGV4dChcImJ1dCBjb25zaXN0ZW50IHdpdGggZXhwZWN0ZWRcIiksIFR5cGUudmlldyhhbmEpXVxuICB9O1xufTtcblxubGV0IHR5cF9va192aWV3ID0gKGNsczogVGVybS5DbHMudCwgb2s6IEluZm8ub2tfdHlwKSA9PlxuICBzd2l0Y2ggKG9rKSB7XG4gIHwgVHlwZShfKSB3aGVuIGNscyA9PSBUeXAoRW1wdHlIb2xlKSA9PiBbdGV4dChcIkZpbGxhYmxlIGJ5IGFueSB0eXBlXCIpXVxuICB8IFR5cGUodHkpID0+IFtUeXBlLnZpZXcodHkpXVxuICB8IFR5cGVBbGlhcyhuYW1lLCB0eV9sb29rdXApID0+IFtcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkpLFxuICAgICAgdGV4dChcImlzIGFuIGFsaWFzIGZvclwiKSxcbiAgICAgIFR5cGUudmlldyh0eV9sb29rdXApLFxuICAgIF1cbiAgfCBWYXJpYW50KG5hbWUsIF9zdW1fdHkpID0+IFtUeXBlLnZpZXcoVmFyKG5hbWUpKV1cbiAgfCBWYXJpYW50SW5jb21wbGV0ZShfc3VtX3R5KSA9PiBbdGV4dChcImlzIGluY29tcGxldGVcIildXG4gIH07XG5cbmxldCB0eXBfZXJyX3ZpZXcgPSAob2s6IEluZm8uZXJyb3JfdHlwKSA9PlxuICBzd2l0Y2ggKG9rKSB7XG4gIHwgRnJlZVR5cGVWYXJpYWJsZShuYW1lKSA9PiBbVHlwZS52aWV3KFZhcihuYW1lKSksIHRleHQoXCJub3QgZm91bmRcIildXG4gIHwgQmFkVG9rZW4odG9rZW4pID0+IFtcbiAgICAgIGNvZGVfZXJyKHRva2VuKSxcbiAgICAgIHRleHQoXCJub3QgYSB0eXBlIG9yIHR5cGUgb3BlcmF0b3JcIiksXG4gICAgXVxuICB8IFdhbnRDb25zdHJ1Y3RvckZvdW5kQXBcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZFR5cGUoXykgPT4gW3RleHQoXCJFeHBlY3RlZCBhIGNvbnN0cnVjdG9yXCIpXVxuICB8IFdhbnRUeXBlRm91bmRBcCA9PiBbdGV4dChcIk11c3QgYmUgcGFydCBvZiBhIHN1bSB0eXBlXCIpXVxuICB8IER1cGxpY2F0ZUNvbnN0cnVjdG9yKG5hbWUpID0+IFtcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkpLFxuICAgICAgdGV4dChcImFscmVhZHkgdXNlZCBpbiB0aGlzIHN1bVwiKSxcbiAgICBdXG4gIH07XG5cbmxldCBleHBfdmlldyA9IChjbHM6IFRlcm0uQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfZXhwKSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IEluSG9sZShGcmVlVmFyaWFibGUobmFtZSkpID0+XG4gICAgZGl2X2VycihbY29kZV9lcnIobmFtZSksIHRleHQoXCJub3QgZm91bmRcIildKVxuICB8IEluSG9sZShDb21tb24oZXJyb3IpKSA9PiBkaXZfZXJyKGNvbW1vbl9lcnJfdmlldyhjbHMsIGVycm9yKSlcbiAgfCBOb3RJbkhvbGUob2spID0+IGRpdl9vayhjb21tb25fb2tfdmlldyhjbHMsIG9rKSlcbiAgfTtcblxubGV0IHBhdF92aWV3ID0gKGNsczogVGVybS5DbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c19wYXQpID0+XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gIHwgSW5Ib2xlKEV4cGVjdGVkQ29uc3RydWN0b3IpID0+IGRpdl9lcnIoW3RleHQoXCJFeHBlY3RlZCBhIGNvbnN0cnVjdG9yXCIpXSlcbiAgfCBJbkhvbGUoQ29tbW9uKGVycm9yKSkgPT4gZGl2X2Vycihjb21tb25fZXJyX3ZpZXcoY2xzLCBlcnJvcikpXG4gIHwgTm90SW5Ib2xlKG9rKSA9PiBkaXZfb2soY29tbW9uX29rX3ZpZXcoY2xzLCBvaykpXG4gIH07XG5cbmxldCB0eXBfdmlldyA9IChjbHM6IFRlcm0uQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfdHlwKSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IE5vdEluSG9sZShvaykgPT4gZGl2X29rKHR5cF9va192aWV3KGNscywgb2spKVxuICB8IEluSG9sZShlcnIpID0+IGRpdl9lcnIodHlwX2Vycl92aWV3KGVycikpXG4gIH07XG5cbmxldCB0cGF0X3ZpZXcgPSAoXzogVGVybS5DbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c190cGF0KSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IE5vdEluSG9sZShFbXB0eSkgPT4gZGl2X29rKFt0ZXh0KFwiRmlsbGFibGUgd2l0aCBhIG5ldyBhbGlhc1wiKV0pXG4gIHwgTm90SW5Ib2xlKFZhcihuYW1lKSkgPT4gZGl2X29rKFtUeXBlLmFsaWFzX3ZpZXcobmFtZSldKVxuICB8IEluSG9sZShOb3RBVmFyKE5vdENhcGl0YWxpemVkKSkgPT5cbiAgICBkaXZfZXJyKFt0ZXh0KFwiTXVzdCBiZWdpbiB3aXRoIGEgY2FwaXRhbCBsZXR0ZXJcIildKVxuICB8IEluSG9sZShOb3RBVmFyKF8pKSA9PiBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYW4gYWxpYXNcIildKVxuICB8IEluSG9sZShTaGFkb3dzVHlwZShuYW1lKSkgd2hlbiBGb3JtLmlzX2Jhc2VfdHlwKG5hbWUpID0+XG4gICAgZGl2X2VycihbdGV4dChcIkNhbid0IHNoYWRvdyBiYXNlIHR5cGVcIiksIFR5cGUudmlldyhWYXIobmFtZSkpXSlcbiAgfCBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSkpID0+XG4gICAgZGl2X2VycihbdGV4dChcIkNhbid0IHNoYWRvdyBleGlzdGluZyBhbGlhc1wiKSwgVHlwZS52aWV3KFZhcihuYW1lKSldKVxuICB9O1xuXG5sZXQgc2Vjb25kYXJ5X3ZpZXcgPSAoY2xzOiBUZXJtLkNscy50KSA9PlxuICBkaXZfb2soW3RleHQoY2xzIHw+IFRlcm0uQ2xzLnNob3cpXSk7XG5cbmxldCB2aWV3X29mX2luZm8gPSAofmluamVjdCwgfnNldHRpbmdzLCBjaSk6IE5vZGUudCA9PiB7XG4gIGxldCB3cmFwcGVyID0gc3RhdHVzX3ZpZXcgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcImluZm9cIl0pLFxuICAgICAgW3Rlcm1fdmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKSwgc3RhdHVzX3ZpZXddLFxuICAgICk7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBTZWNvbmRhcnkoXykgPT4gd3JhcHBlcihkaXYoW10pKVxuICB8IEluZm9FeHAoe2Nscywgc3RhdHVzLCBffSkgPT4gd3JhcHBlcihleHBfdmlldyhjbHMsIHN0YXR1cykpXG4gIHwgSW5mb1BhdCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHBhdF92aWV3KGNscywgc3RhdHVzKSlcbiAgfCBJbmZvVHlwKHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIodHlwX3ZpZXcoY2xzLCBzdGF0dXMpKVxuICB8IEluZm9UUGF0KHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIodHBhdF92aWV3KGNscywgc3RhdHVzKSlcbiAgfTtcbn07XG5cbmxldCBpbnNwZWN0b3JfdmlldyA9ICh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImN1cnNvci1pbnNwZWN0b3JcIl0gQCBbSW5mby5pc19lcnJvcihjaSkgPyBlcnJjIDogb2tjXSksXG4gICAgW3ZpZXdfb2ZfaW5mbyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKV0sXG4gICk7XG5cbmxldCB2aWV3ID0gKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgY3Vyc29yX2luZm86IG9wdGlvbihJbmZvLnQpKSA9PiB7XG4gIGxldCBiYXJfdmlldyA9IGRpdih+YXR0cj1BdHRyLmlkKFwiYm90dG9tLWJhclwiKSk7XG4gIGxldCBlcnJfdmlldyA9IGVyciA9PlxuICAgIGJhcl92aWV3KFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJjdXJzb3ItaW5zcGVjdG9yXCIsIFwibm8taW5mb1wiXSksXG4gICAgICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJpY29uXCJdKSwgW0ljb25zLm1hZ25pZnldKSwgdGV4dChlcnIpXSxcbiAgICAgICksXG4gICAgXSk7XG4gIHN3aXRjaCAoY3Vyc29yX2luZm8pIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuc3RhdGljcyA9PiBkaXZfZW1wdHlcbiAgfCBOb25lID0+IGVycl92aWV3KFwiV2hpdGVzcGFjZSBvciBDb21tZW50XCIpXG4gIHwgU29tZShjaSkgPT5cbiAgICBiYXJfdmlldyhbXG4gICAgICBpbnNwZWN0b3Jfdmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKSxcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJpZFwiXSksXG4gICAgICAgIFt0ZXh0KFN0cmluZy5zdWIoSWQudG9fc3RyaW5nKEluZm8uaWRfb2YoY2kpKSwgMCwgNCkpXSxcbiAgICAgICksXG4gICAgXSlcbiAgfTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFdpZGdldHM7XG5cbmxldCBvcHRpb25fdmlldyA9IChuYW1lLCBuKSA9PlxuICBvcHRpb24oXG4gICAgfmF0dHI9biA9PSBuYW1lID8gQXR0ci5jcmVhdGUoXCJzZWxlY3RlZFwiLCBcInNlbGVjdGVkXCIpIDogQXR0ci5tYW55KFtdKSxcbiAgICBbdGV4dChuKV0sXG4gICk7XG5cbmxldCBtb2RlX21lbnUgPSAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EsIH5tb2RlOiBTZXR0aW5ncy5tb2RlKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcIm1vZGUtbmFtZVwiKSwgQXR0ci50aXRsZShcIlRvZ2dsZSBNb2RlXCIpXSksXG4gICAgW1xuICAgICAgc2VsZWN0KFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm9uX2NoYW5nZSgoXywgbmFtZSkgPT5cbiAgICAgICAgICAgIGluamVjdChTZXQoTW9kZShTZXR0aW5ncy5tb2RlX29mX3N0cmluZyhuYW1lKSkpKVxuICAgICAgICAgICksXG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgIG9wdGlvbl92aWV3KFNldHRpbmdzLnNob3dfbW9kZShtb2RlKSksXG4gICAgICAgICAgW1wiU2NyYXRjaFwiLCBcIkRvY3VtZW50YXRpb25cIiwgXCJFeGVyY2lzZXNcIl0sXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF0sXG4gICk7XG5cbmxldCBzbGlkZV9zZWxlY3QgPSAofmluamVjdCwgfmN1cl9zbGlkZSwgfm51bV9zbGlkZXMpID0+IHtcbiAgbGV0IG5leHRfZWQgPSAoY3VyX3NsaWRlICsgMSkgbW9kIG51bV9zbGlkZXM7XG4gIGxldCBwcmV2X2VkID0gVXRpbC5JbnRVdGlsLm1vZHVsbyhjdXJfc2xpZGUgLSAxLCBudW1fc2xpZGVzKTtcbiAgW1xuICAgIGJ1dHRvbihJY29ucy5iYWNrLCBfID0+IGluamVjdChVcGRhdGUuU3dpdGNoU2NyYXRjaFNsaWRlKHByZXZfZWQpKSksXG4gICAgdGV4dChQcmludGYuc3ByaW50ZihcIiVkIC8gJWRcIiwgY3VyX3NsaWRlICsgMSwgbnVtX3NsaWRlcykpLFxuICAgIGJ1dHRvbihJY29ucy5mb3J3YXJkLCBfID0+IGluamVjdChVcGRhdGUuU3dpdGNoU2NyYXRjaFNsaWRlKG5leHRfZWQpKSksXG4gIF07XG59O1xuXG5sZXQgc2NyYXRjaF92aWV3ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5zbGlkZXMpID0+XG4gIFttb2RlX21lbnUofmluamVjdCwgfm1vZGU9U2NyYXRjaCldXG4gIEAgc2xpZGVfc2VsZWN0KH5pbmplY3QsIH5jdXJfc2xpZGUsIH5udW1fc2xpZGVzPUxpc3QubGVuZ3RoKHNsaWRlcykpO1xuXG5sZXQgZG9jdW1lbnRhdGlvbl92aWV3ID0gKH5pbmplY3QsIH5uYW1lLCB+ZWRpdG9ycykgPT4ge1xuICBsZXQgZWRpdG9yX25hbWVzID0gTGlzdC5tYXAoZnN0LCBlZGl0b3JzKTtcbiAgbGV0IHJlYyBmaW5kX3ByZXZfbmV4dDogbGlzdChzdHJpbmcpID0+IChvcHRpb24oc3RyaW5nKSwgb3B0aW9uKHN0cmluZykpID1cbiAgICBmdW5cbiAgICB8IFtdXG4gICAgfCBbX10gPT4gKE5vbmUsIE5vbmUpXG4gICAgfCBbeCwgeV0gd2hlbiBuYW1lID09IHggPT4gKE5vbmUsIFNvbWUoeSkpXG4gICAgfCBbeCwgeV0gd2hlbiBuYW1lID09IHkgPT4gKFNvbWUoeCksIE5vbmUpXG4gICAgfCBbXywgX10gPT4gKE5vbmUsIE5vbmUpXG4gICAgfCBbeCwgeSwgLi4uX10gd2hlbiBuYW1lID09IHggPT4gKE5vbmUsIFNvbWUoeSkpXG4gICAgfCBbeCwgeSwgeiwgLi4uX10gd2hlbiBuYW1lID09IHkgPT4gKFNvbWUoeCksIFNvbWUoeikpXG4gICAgfCBbXywgLi4ueXNdID0+IGZpbmRfcHJldl9uZXh0KHlzKTtcbiAgbGV0IChwcmV2LCBuZXh0KSA9IGZpbmRfcHJldl9uZXh0KGVkaXRvcl9uYW1lcyk7XG4gIGxldCBwcmV2ID1cbiAgICBwcmV2XG4gICAgfD4gT3B0aW9uLm1hcChzID0+XG4gICAgICAgICBidXR0b24oSWNvbnMuYmFjaywgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShzKSkpXG4gICAgICAgKVxuICAgIHw+IE9wdGlvbi52YWx1ZShcbiAgICAgICAgIH5kZWZhdWx0PVxuICAgICAgICAgICBidXR0b25fZChcbiAgICAgICAgICAgICBJY29ucy5iYWNrLFxuICAgICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKFwibm9uZVwiKSksXG4gICAgICAgICAgICAgfmRpc2FibGVkPXRydWUsXG4gICAgICAgICAgICksXG4gICAgICAgKTtcbiAgbGV0IG5leHQgPVxuICAgIG5leHRcbiAgICB8PiBPcHRpb24ubWFwKHMgPT5cbiAgICAgICAgIGJ1dHRvbihJY29ucy5mb3J3YXJkLCBfID0+XG4gICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKHMpKVxuICAgICAgICAgKVxuICAgICAgIClcbiAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgYnV0dG9uX2QoXG4gICAgICAgICAgICAgSWNvbnMuZm9yd2FyZCxcbiAgICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShcIm5vbmVcIikpLFxuICAgICAgICAgICAgIH5kaXNhYmxlZD10cnVlLFxuICAgICAgICAgICApLFxuICAgICAgICk7XG4gIFtcbiAgICBtb2RlX21lbnUofmluamVjdCwgfm1vZGU9RG9jdW1lbnRhdGlvbiksXG4gICAgcHJldixcbiAgICBzZWxlY3QoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5vbl9jaGFuZ2UoKF8sIG5hbWUpID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUobmFtZSkpXG4gICAgICAgICksXG4gICAgICBMaXN0Lm1hcChvcHRpb25fdmlldyhuYW1lKSwgZWRpdG9yX25hbWVzKSxcbiAgICApLFxuICAgIG5leHQsXG4gIF07XG59O1xuXG5sZXQgaW5zdHJ1Y3Rvcl90b2dnbGUgPSAofmluamVjdCwgfmluc3RydWN0b3JfbW9kZSkgPT5cbiAgRXhlcmNpc2VTZXR0aW5ncy5zaG93X2luc3RydWN0b3JcbiAgICA/IFtcbiAgICAgIHRvZ2dsZShcIvCfjpNcIiwgfnRvb2x0aXA9XCJUb2dnbGUgSW5zdHJ1Y3RvciBNb2RlXCIsIGluc3RydWN0b3JfbW9kZSwgXyA9PlxuICAgICAgICBpbmplY3QoVXBkYXRlLlNldChJbnN0cnVjdG9yTW9kZSkpXG4gICAgICApLFxuICAgIF1cbiAgICA6IFtdO1xuXG5sZXQgZXhlcmNpc2VzX3ZpZXcgPSAofmluamVjdCwgfmN1cl9zbGlkZSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gIFttb2RlX21lbnUofmluamVjdCwgfm1vZGU9RXhlcmNpc2VzKV1cbiAgQCBpbnN0cnVjdG9yX3RvZ2dsZSh+aW5qZWN0LCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICBAIHNsaWRlX3NlbGVjdCh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+bnVtX3NsaWRlcz1MaXN0Lmxlbmd0aChzcGVjcykpO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhLFxuICAgICAgfmVkaXRvcnM6IEVkaXRvcnMudCxcbiAgICAgIH5zZXR0aW5ncyBhcyB7aW5zdHJ1Y3Rvcl9tb2RlLCBffTogU2V0dGluZ3MudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICBsZXQgY29udGVudHMgPVxuICAgIHN3aXRjaCAoZWRpdG9ycykge1xuICAgIHwgU2NyYXRjaChjdXJfc2xpZGUsIHNsaWRlcykgPT5cbiAgICAgIHNjcmF0Y2hfdmlldyh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+c2xpZGVzKVxuICAgIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBlZGl0b3JzKSA9PlxuICAgICAgZG9jdW1lbnRhdGlvbl92aWV3KH5pbmplY3QsIH5uYW1lLCB+ZWRpdG9ycylcbiAgICB8IEV4ZXJjaXNlcyhjdXJfc2xpZGUsIHNwZWNzLCBfKSA9PlxuICAgICAgZXhlcmNpc2VzX3ZpZXcofmN1cl9zbGlkZSwgfnNwZWNzLCB+aW5qZWN0LCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIH07XG4gIGRpdih+YXR0cj1BdHRyLmlkKFwiZWRpdG9yLW1vZGVcIiksIGNvbnRlbnRzKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmluY2x1ZGUgSGF6M2xzY2hvb2wuR3JhZGluZy5GKEV4ZXJjaXNlLkV4ZXJjaXNlRW52KTtcblxubGV0IHNjb3JlX3ZpZXcgPSAoKGVhcm5lZDogcG9pbnRzLCBtYXg6IHBvaW50cykpID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgXCJ0ZXN0LXBlcmNlbnRcIixcbiAgICAgICAgRmxvYXQuZXF1YWwoZWFybmVkLCBtYXgpID8gXCJhbGwtcGFzc1wiIDogXCJzb21lLWZhaWxcIixcbiAgICAgIF0pLFxuICAgIFt0ZXh0KFByaW50Zi5zcHJpbnRmKFwiJS4xZiAvICUuMWYgcHRzXCIsIGVhcm5lZCwgbWF4KSldLFxuICApO1xufTtcblxubGV0IHBlcmNlbnRhZ2VfdmlldyA9IChwOiBwZXJjZW50YWdlKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwidGVzdC1wZXJjZW50XCIsXG4gICAgICAgIEZsb2F0LmVxdWFsKHAsIDEuKSA/IFwiYWxsLXBhc3NcIiA6IFwic29tZS1mYWlsXCIsXG4gICAgICBdKSxcbiAgICBbdGV4dChQcmludGYuc3ByaW50ZihcIiUuMGYlJVwiLCAxMDAuICouIHApKV0sXG4gICk7XG59O1xuXG5tb2R1bGUgVGVzdFZhbGlkYXRpb25SZXBvcnQgPSB7XG4gIGluY2x1ZGUgVGVzdFZhbGlkYXRpb25SZXBvcnQ7XG4gIGxldCB0ZXh0dWFsX3N1bW1hcnkgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHNcIildXG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gW1xuICAgICAgICB7XG4gICAgICAgICAgbGV0IHRvdGFsX3Rlc3RzID0gdGVzdF9yZXN1bHRzLnRvdGFsO1xuICAgICAgICAgIGxldCByZXF1aXJlZCA9IHJlcG9ydC5yZXF1aXJlZDtcbiAgICAgICAgICBsZXQgbnVtX3Rlc3RzX21lc3NhZ2UgPVxuICAgICAgICAgICAgdG90YWxfdGVzdHMgPj0gcmVxdWlyZWRcbiAgICAgICAgICAgICAgPyBcImF0IGxlYXN0IFwiICsrIHN0cmluZ19vZl9pbnQocmVxdWlyZWQpXG4gICAgICAgICAgICAgIDogc3RyaW5nX29mX2ludCh0ZXN0X3Jlc3VsdHMudG90YWwpXG4gICAgICAgICAgICAgICAgKysgXCIgb2YgXCJcbiAgICAgICAgICAgICAgICArKyBzdHJpbmdfb2ZfaW50KHJlcG9ydC5yZXF1aXJlZCk7XG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiRW50ZXJlZCBcIlxuICAgICAgICAgICAgKysgbnVtX3Rlc3RzX21lc3NhZ2VcbiAgICAgICAgICAgICsrIFwiIHRlc3RzLiBcIlxuICAgICAgICAgICAgKysgdGVzdF9zdW1tYXJ5X3N0cih0ZXN0X3Jlc3VsdHMpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmlldyA9ICh+aW5qZWN0LCByZXBvcnQ6IHQsIG1heF9wb2ludHM6IGludCkgPT4ge1xuICAgIENlbGwucmVwb3J0X2Zvb3Rlcl92aWV3KFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3Qtc3VtbWFyeVwiXSksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtdGV4dFwiKSxcbiAgICAgICAgICAgIFtzY29yZV92aWV3KHNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZShyZXBvcnQpLCBtYXhfcG9pbnRzKSldXG4gICAgICAgICAgICBAIHRleHR1YWxfc3VtbWFyeShyZXBvcnQpLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCBPcHRpb24udG9fbGlzdChcbiAgICAgICAgICAgIHJlcG9ydC50ZXN0X3Jlc3VsdHNcbiAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAodGVzdF9yZXN1bHRzID0+XG4gICAgICAgICAgICAgICAgIFRlc3RWaWV3LnRlc3RfYmFyKFxuICAgICAgICAgICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgICAgICAgICAgfnRlc3RfcmVzdWx0cyxcbiAgICAgICAgICAgICAgICAgICBZb3VyVGVzdHNWYWxpZGF0aW9uLFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgIF0pO1xuICB9O1xufTtcblxubW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgaW5jbHVkZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQ7XG4gIG9wZW4gSGF6M2xjb3JlO1xuXG4gIGxldCBzdW1tYXJ5X21lc3NhZ2UgPSAofnNjb3JlLCB+dG90YWwsIH5mb3VuZCk6IE5vZGUudCA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXRleHRcIl0pLFxuICAgICAgW3Njb3JlX3ZpZXcoc2NvcmUpLCB0ZXh0KHN1bW1hcnlfc3RyKH50b3RhbCwgfmZvdW5kKSldLFxuICAgICk7XG5cbiAgbGV0IGJhciA9ICh+aW5qZWN0LCBpbnN0YW5jZXMpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtYmFyXCJdKSxcbiAgICAgIExpc3QubWFwaShcbiAgICAgICAgKGlkLCAoc3RhdHVzLCBfKSkgPT5cbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wic2VnbWVudFwiLCBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpXSksXG4gICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhcbiAgICAgICAgICAgICAgICAgIC8vVE9ETzogd2lyZSB1cCB0ZXN0IGlkc1xuICAgICAgICAgICAgICAgICAgVGVzdFZpZXcuanVtcF90b190ZXN0KH5pbmplY3QsIEhpZGRlbkJ1Z3MoaWQpLCBJZC5pbnZhbGlkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICksXG4gICAgICAgIGluc3RhbmNlcyxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgc3VtbWFyeSA9ICh+aW5qZWN0LCB+cmVwb3J0LCB+bWF4X3BvaW50cykgPT4ge1xuICAgIGxldCB0b3RhbCA9IExpc3QubGVuZ3RoKHJlcG9ydC5yZXN1bHRzKTtcbiAgICBsZXQgZm91bmQgPVxuICAgICAgTGlzdC5sZW5ndGgoXG4gICAgICAgIExpc3QuZmlsdGVyKCgoeDogVGVzdFN0YXR1cy50LCBfKSkgPT4geCA9PSBQYXNzLCByZXBvcnQucmVzdWx0cyksXG4gICAgICApO1xuICAgIGxldCBzdGF0dXNfY2xhc3MgPSB0b3RhbCA9PSBmb3VuZCA/IFwiUGFzc1wiIDogXCJGYWlsXCI7XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgXCJjZWxsLWl0ZW1cIixcbiAgICAgICAgICBcInRlc3Qtc3VtbWFyeVwiLFxuICAgICAgICAgIFwiY2VsbC1yZXBvcnRcIixcbiAgICAgICAgICBzdGF0dXNfY2xhc3MsXG4gICAgICAgIF0pLFxuICAgICAgW1xuICAgICAgICBzdW1tYXJ5X21lc3NhZ2UoXG4gICAgICAgICAgfnNjb3JlPXNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZShyZXBvcnQpLCBtYXhfcG9pbnRzKSxcbiAgICAgICAgICB+dG90YWwsXG4gICAgICAgICAgfmZvdW5kLFxuICAgICAgICApLFxuICAgICAgICBiYXIofmluamVjdCwgcmVwb3J0LnJlc3VsdHMpLFxuICAgICAgXSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydCA9IChpZCwgfmluamVjdCwgfmhpbnQ6IHN0cmluZywgfnN0YXR1czogVGVzdFN0YXR1cy50KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlcG9ydFwiXSksXG4gICAgICAgICAgLy9UT0RPOiB3aXJlIHVwIHRlc3QgaWRzXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhcbiAgICAgICAgICAgIFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5CdWdzKGlkKSwgSWQuaW52YWxpZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1pZFwiLFxuICAgICAgICAgICAgICBcIlRlc3RcIiArKyBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgLyogTk9URTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCB1bmlxdWUgaWQgKi9cbiAgICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGlkICsgMSkpXSxcbiAgICAgICAgKSxcbiAgICAgICAgLy8gVGVzdFZpZXcudGVzdF9pbnN0YW5jZV92aWV3KH5mb250X21ldHJpY3MsIGluc3RhbmNlKSxcbiAgICAgIF1cbiAgICAgIEAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcInRlc3QtaGludFwiLFxuICAgICAgICAgICAgICBcInRlc3QtaW5zdGFuY2VcIixcbiAgICAgICAgICAgICAgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIFt0ZXh0KGhpbnQpXSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnRzID0gKH5pbmplY3QsIGNvdmVyYWdlX3Jlc3VsdHMpID0+XG4gICAgZGl2KFxuICAgICAgY292ZXJhZ2VfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoaSwgfmluamVjdCwgfmhpbnQsIH5zdGF0dXMpXG4gICAgICAgICApLFxuICAgICk7XG5cbiAgLy8gbGV0IHBhc3NpbmdfdGVzdF9pZHMgPSB0ZXN0X21hcCA9PlxuICAvLyAgIHRlc3RfbWFwXG4gIC8vICAgfD4gTGlzdC5maWx0ZXIoKChfaWQsIHJlcG9ydHMpKSA9PlxuICAvLyAgICAgICAgTGlzdC5mb3JfYWxsKFxuICAvLyAgICAgICAgICAoKF8sIHN0YXR1cykpID0+IHN0YXR1cyA9PSBIYXozbGNvcmUuVGVzdFN0YXR1cy5QYXNzLFxuICAvLyAgICAgICAgICByZXBvcnRzLFxuICAvLyAgICAgICAgKVxuICAvLyAgICAgIClcbiAgLy8gICB8PiBMaXN0LnNwbGl0XG4gIC8vICAgfD4gZnN0O1xuXG4gIC8vIGxldCBmYWlsaW5nX3Rlc3RfaWRzID0gdGVzdF9tYXAgPT5cbiAgLy8gICB0ZXN0X21hcFxuICAvLyAgIHw+IExpc3QuZmlsdGVyKCgoX2lkLCByZXBvcnRzKSkgPT5cbiAgLy8gICAgICAgIExpc3QuZm9yX2FsbChcbiAgLy8gICAgICAgICAgKChfLCBzdGF0dXMpKSA9PiBzdGF0dXMgPT0gSGF6M2xjb3JlLlRlc3RTdGF0dXMuRmFpbCxcbiAgLy8gICAgICAgICAgcmVwb3J0cyxcbiAgLy8gICAgICAgIClcbiAgLy8gICAgICApXG4gIC8vICAgfD4gTGlzdC5zcGxpdFxuICAvLyAgIHw+IGZzdDtcblxuICAvLyBsZXQgZ2V0X3Rlc3RfbWFwID0gKGVkaXRvcnM6IGxpc3QoSGF6M2xjb3JlLkVkaXRvci50KSkgPT4ge1xuICAvLyAgIGxldCAocmVmZXJlbmNlX3Rlcm0sIHJlZmVyZW5jZV9tYXApID0gc3BsaWNlZF9zdGF0aWNzKGVkaXRvcnMpO1xuICAvLyAgIGxldCByZXN1bHRfcmVmZXJlbmNlID1cbiAgLy8gICAgIEludGVyZmFjZS50ZXN0X3Jlc3VsdHMocmVmZXJlbmNlX21hcCwgcmVmZXJlbmNlX3Rlcm0pO1xuICAvLyAgIHN3aXRjaCAocmVzdWx0X3JlZmVyZW5jZSkge1xuICAvLyAgIHwgTm9uZSA9PiBbXVxuICAvLyAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IHRlc3RfcmVzdWx0cy50ZXN0X21hcFxuICAvLyAgIH07XG4gIC8vIH07XG4gIC8vIGxldCBzaG93X3Rlcm0gPSAoZWRpdG9yOiBFZGl0b3IudCwgXykgPT5cbiAgLy8gICBlZGl0b3Iuc3RhdGUuemlwcGVyXG4gIC8vICAgfD4gWmlwcGVyLnppcFxuICAvLyAgIHw+IE1ha2VUZXJtLmdvXG4gIC8vICAgfD4gZnN0XG4gIC8vICAgfD4gVGVybS5VRXhwLnNob3dcbiAgLy8gICB8PiBwcmludF9lbmRsaW5lXG4gIC8vICAgfD4gKF8gPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlKTtcblxuICAvLyBsZXQgZ2V0X2ZpcnN0X2NvbW1vbiA9XG4gIC8vICAgICAocmVmZXJlbmNlX3Bhc3NpbmcsIHdyb25nKTogKFRlc3RTdGF0dXMudCwgb3B0aW9uKCdhKSkgPT4ge1xuICAvLyAgIGxldCB3cm9uZ190ZXN0X21hcCA9IHdyb25nIHw+IGdldF90ZXN0X21hcDtcbiAgLy8gICBsZXQgd3JvbmdfZmFpbGluZyA9IHdyb25nX3Rlc3RfbWFwIHw+IGZhaWxpbmdfdGVzdF9pZHM7XG4gIC8vICAgbGV0IGNvbW1vbiA9XG4gIC8vICAgICBMaXN0LmZpbHRlcih4ID0+IExpc3QubWVtKHgsIHJlZmVyZW5jZV9wYXNzaW5nKSwgd3JvbmdfZmFpbGluZyk7XG4gIC8vICAgbGV0IGluc3RhbmNlOiBvcHRpb24obGlzdCgnYSkpID1cbiAgLy8gICAgIHN3aXRjaCAoY29tbW9uKSB7XG4gIC8vICAgICB8IFtdID0+IE5vbmVcbiAgLy8gICAgIHwgW3gsIC4uLl9dID0+IExpc3QuYXNzb2Nfb3B0KHgsIHdyb25nX3Rlc3RfbWFwKVxuICAvLyAgICAgfTtcbiAgLy8gICBzd2l0Y2ggKGluc3RhbmNlKSB7XG4gIC8vICAgfCBTb21lKFtpbnN0YW5jZSwgLi4uX10pID0+IChUZXN0U3RhdHVzLlBhc3MsIFNvbWUoaW5zdGFuY2UpKVxuICAvLyAgIHwgXyA9PiAoVGVzdFN0YXR1cy5GYWlsLCBOb25lKVxuICAvLyAgIH07XG4gIC8vIH07XG5cbiAgbGV0IHZpZXcgPSAofmluamVjdCwgcmVwb3J0OiB0LCBtYXhfcG9pbnRzOiBpbnQpID0+XG4gICAgaWYgKG1heF9wb2ludHMgPT0gMCkge1xuICAgICAgTm9kZS5kaXYoW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBDZWxsLnBhbmVsKFxuICAgICAgICB+Y2xhc3Nlcz1bXCJ0ZXN0LXBhbmVsXCJdLFxuICAgICAgICBbXG4gICAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgICAgXCJNdXRhdGlvbiBUZXN0aW5nXCIsXG4gICAgICAgICAgICB+cmVzdD1cIjogWW91ciBUZXN0cyB2cy4gQnVnZ3kgSW1wbGVtZW50YXRpb25zIChoaWRkZW4pXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydHMofmluamVjdCwgcmVwb3J0LnJlc3VsdHMpLFxuICAgICAgICBdLFxuICAgICAgICB+Zm9vdGVyPVNvbWUoc3VtbWFyeSh+aW5qZWN0LCB+cmVwb3J0LCB+bWF4X3BvaW50cykpLFxuICAgICAgKTtcbiAgICB9O1xufTtcblxubW9kdWxlIFN5bnRheFJlcG9ydCA9IHtcbiAgaW5jbHVkZSBTeW50YXhSZXBvcnQ7XG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydCA9IChpOiBpbnQsIGhpbnQ6IHN0cmluZywgc3RhdHVzOiBib29sKSA9PiB7XG4gICAgbGV0IHJlc3VsdF9zdHJpbmcgPSBzdGF0dXMgPyBcIlBhc3NcIiA6IFwiSW5kZXRcIjtcblxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlcG9ydFwiXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1pZFwiLCBcIlRlc3RcIiArKyByZXN1bHRfc3RyaW5nXSksXG4gICAgICAgICAgW3RleHQoc3RyaW5nX29mX2ludChpICsgMSkpXSxcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICAgIEAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtaGludFwiLCBcInRlc3QtaW5zdGFuY2VcIiwgcmVzdWx0X3N0cmluZ10pLFxuICAgICAgICAgIFt0ZXh0KGhpbnQpXSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnRzID0gKGhpbnRlZF9yZXN1bHRzOiBsaXN0KChib29sLCBzdHJpbmcpKSkgPT4ge1xuICAgIGRpdihcbiAgICAgIGhpbnRlZF9yZXN1bHRzXG4gICAgICB8PiBMaXN0Lm1hcGkoKGksIChzdGF0dXMsIGhpbnQpKSA9PlxuICAgICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydChpLCBoaW50LCBzdGF0dXMpXG4gICAgICAgICApLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHZpZXcgPSAoc3ludGF4X3JlcG9ydDogdCkgPT4ge1xuICAgIENlbGwucGFuZWwoXG4gICAgICB+Y2xhc3Nlcz1bXCJ0ZXN0LXBhbmVsXCJdLFxuICAgICAgW1xuICAgICAgICBDZWxsLmNhcHRpb24oXG4gICAgICAgICAgXCJTeW50YXggVmFsaWRhdGlvblwiLFxuICAgICAgICAgIH5yZXN0PVxuICAgICAgICAgICAgXCI6IERvZXMgeW91ciBpbXBsZW1lbnRhdGlvbiBzYXRpc2Z5IHRoZSBzeW50YWN0aWMgcmVxdWlyZW1lbnRzP1wiLFxuICAgICAgICApLFxuICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydHMoc3ludGF4X3JlcG9ydC5oaW50ZWRfcmVzdWx0cyksXG4gICAgICBdLFxuICAgICAgfmZvb3Rlcj1cbiAgICAgICAgU29tZShcbiAgICAgICAgICBDZWxsLnJlcG9ydF9mb290ZXJfdmlldyhbXG4gICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VfdmlldyhzeW50YXhfcmVwb3J0LnBlcmNlbnRhZ2UpLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICAgICAgICAgIFwiIG9mIHRoZSBJbXBsZW1lbnRhdGlvbiBWYWxpZGF0aW9uIHBvaW50cyB3aWxsIGJlIGVhcm5lZFwiLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIEltcGxHcmFkaW5nUmVwb3J0ID0ge1xuICBvcGVuIEhhejNsY29yZTtcbiAgaW5jbHVkZSBJbXBsR3JhZGluZ1JlcG9ydDtcbiAgbGV0IHRleHR1YWxfc3VtbWFyeSA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHJlcG9ydC50ZXN0X3Jlc3VsdHMpIHtcbiAgICB8IE5vbmUgPT4gW05vZGUudGV4dChcIk5vIHRlc3QgcmVzdWx0c1wiKV1cbiAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0KHRlc3Rfc3VtbWFyeV9zdHIodGVzdF9yZXN1bHRzKSk7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfTtcbiAgfTtcblxuICAvLyBsZXQgc3VtbWFyeSA9ICh+aW5qZWN0LCB+cmVwb3J0LCB+bWF4X3BvaW50cykgPT4ge1xuICAvLyAgIGxldCBwZXJjZW50YWdlID0gcGVyY2VudGFnZShyZXBvcnQpO1xuICAvLyAgIGxldCBzY29yZSA9IHNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZSk7XG4gIC8vICAgbGV0IHRvdGFsID0gdG90YWwocmVwb3J0KTtcbiAgLy8gICBsZXQgbnVtX3Bhc3NlZCA9IG51bV9wYXNzZWQocmVwb3J0KTtcbiAgLy8gICBsZXQgc3RhdHVzX2NsYXNzID0gdG90YWwgPT0gbnVtX3Bhc3NlZCA/IFwiUGFzc1wiIDogXCJGYWlsXCI7XG4gIC8vICAgZGl2KFxuICAvLyAgICAgfmF0dHI9XG4gIC8vICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gIC8vICAgICAgICAgXCJjZWxsLWl0ZW1cIixcbiAgLy8gICAgICAgICBcInRlc3Qtc3VtbWFyeVwiLFxuICAvLyAgICAgICAgIFwiY2VsbC1yZXBvcnRcIixcbiAgLy8gICAgICAgICBzdGF0dXNfY2xhc3MsXG4gIC8vICAgICAgIF0pLFxuICAvLyAgICAgW1xuICAvLyAgICAgICBzdW1tYXJ5X21lc3NhZ2UoXG4gIC8vICAgICAgICAgfnNjb3JlLFxuICAvLyAgICAgICAgIH50b3RhbCxcbiAgLy8gICAgICAgICB+Zm91bmQ9bnVtX3Bhc3NlZCxcbiAgLy8gICAgICAgKSxcbiAgLy8gICAgICAgYmFyKH5pbmplY3QsIHJlcG9ydC5yZXN1bHRzKSxcbiAgLy8gICAgIF0sXG4gIC8vICAgKTtcbiAgLy8gfTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnQgPSAoaSwgfmluamVjdCwgfmhpbnQ6IHN0cmluZywgfnN0YXR1cywgKGlkLCBfKSkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGVzdC1yZXBvcnRcIl0pLFxuICAgICAgICAgIEF0dHIub25fY2xpY2soVGVzdFZpZXcuanVtcF90b190ZXN0KH5pbmplY3QsIEhpZGRlblRlc3RzLCBpZCkpLFxuICAgICAgICBdKSxcbiAgICAgIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgXCJ0ZXN0LWlkXCIsXG4gICAgICAgICAgICAgIFwiVGVzdFwiICsrIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAvKiBOT1RFOiBwcmludHMgbGV4aWNhbCBpbmRleCwgbm90IHVuaXF1ZSBpZCAqL1xuICAgICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaSArIDEpKV0sXG4gICAgICAgICksXG4gICAgICAgIC8vIFRlc3RWaWV3LnRlc3RfaW5zdGFuY2Vfdmlldyh+Zm9udF9tZXRyaWNzLCBpbnN0YW5jZSksXG4gICAgICBdXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgXCJ0ZXN0LWhpbnRcIixcbiAgICAgICAgICAgICAgXCJ0ZXN0LWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBbdGV4dChoaW50KV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0cyA9ICh+aW5qZWN0LCB+cmVwb3J0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cylcbiAgICAgICAgd2hlblxuICAgICAgICAgIExpc3QubGVuZ3RoKHRlc3RfcmVzdWx0cy50ZXN0X21hcClcbiAgICAgICAgICA9PSBMaXN0Lmxlbmd0aChyZXBvcnQuaGludGVkX3Jlc3VsdHMpID0+XG4gICAgICAvKiBOT1RFOiBUaGlzIGNvbmRpdGlvbiB3aWxsIGJlIGZhbHNlIHdoZW4gZXZhbHVhdGlvbiBjcmFzaGVzLFxuICAgICAgICogZm9yIGV4YW1wbGUgZHVlIHRvIGEgc3RhY2sgb3ZlcmZsb3csIHdoaWNoIG1heSBvY2N1ciBpbiBub3JtYWwgb3BlcmF0aW9uICAqL1xuICAgICAgZGl2KFxuICAgICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydChcbiAgICAgICAgICAgICAgIGksXG4gICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgfmhpbnQsXG4gICAgICAgICAgICAgICB+c3RhdHVzLFxuICAgICAgICAgICAgICAgTGlzdC5udGgodGVzdF9yZXN1bHRzLnRlc3RfbWFwLCBpKSxcbiAgICAgICAgICAgICApXG4gICAgICAgICAgICksXG4gICAgICApXG4gICAgfCBfID0+IGRpdihbXSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCB2aWV3ID1cbiAgICAgICh+aW5qZWN0LCB+cmVwb3J0OiB0LCB+c3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQsIH5tYXhfcG9pbnRzOiBpbnQpID0+IHtcbiAgICBDZWxsLnBhbmVsKFxuICAgICAgfmNsYXNzZXM9W1wiY2VsbC1pdGVtXCIsIFwicGFuZWxcIiwgXCJ0ZXN0LXBhbmVsXCJdLFxuICAgICAgW1xuICAgICAgICBDZWxsLmNhcHRpb24oXG4gICAgICAgICAgXCJJbXBsZW1lbnRhdGlvbiBHcmFkaW5nXCIsXG4gICAgICAgICAgfnJlc3Q9XCI6IEhpZGRlbiBUZXN0cyB2cy4gWW91ciBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICApLFxuICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydHMofmluamVjdCwgfnJlcG9ydCksXG4gICAgICBdLFxuICAgICAgfmZvb3Rlcj1cbiAgICAgICAgU29tZShcbiAgICAgICAgICBDZWxsLnJlcG9ydF9mb290ZXJfdmlldyhbXG4gICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHNjb3JlX3ZpZXcoXG4gICAgICAgICAgICAgICAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2UocmVwb3J0LCBzeW50YXhfcmVwb3J0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgdGV4dHVhbF9zdW1tYXJ5KHJlcG9ydCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBAIE9wdGlvbi50b19saXN0KFxuICAgICAgICAgICAgICAgICAgcmVwb3J0LnRlc3RfcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uLm1hcCh0ZXN0X3Jlc3VsdHMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgVGVzdFZpZXcudGVzdF9iYXIofmluamVjdCwgfnRlc3RfcmVzdWx0cywgSGlkZGVuVGVzdHMpXG4gICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICApLFxuICAgICk7XG4gIH07XG59O1xuXG5tb2R1bGUgR3JhZGluZ1JlcG9ydCA9IHtcbiAgaW5jbHVkZSBHcmFkaW5nUmVwb3J0O1xuXG4gIGxldCB2aWV3X292ZXJhbGxfc2NvcmUgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgc2NvcmVfdmlldyhvdmVyYWxsX3Njb3JlKHJlcG9ydCkpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG50eXBlIHZpc19tYXJrZWQoJ2EpID1cbiAgfCBJbnN0cnVjdG9yT25seSh1bml0ID0+ICdhKVxuICB8IEFsd2F5cygnYSk7XG5cbmxldCByZW5kZXJfY2VsbHMgPSAoc2V0dGluZ3M6IFNldHRpbmdzLnQsIHY6IGxpc3QodmlzX21hcmtlZChOb2RlLnQpKSkgPT4ge1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgdmlzID0+XG4gICAgICBzd2l0Y2ggKHZpcykge1xuICAgICAgfCBJbnN0cnVjdG9yT25seShmKSA9PiBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPyBTb21lKGYoKSkgOiBOb25lXG4gICAgICB8IEFsd2F5cyhub2RlKSA9PiBTb21lKG5vZGUpXG4gICAgICB9LFxuICAgIHYsXG4gICk7XG59O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+ZXhlcmNpc2UsXG4gICAgICB+cmVzdWx0cyxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICkgPT4ge1xuICBsZXQgRXhlcmNpc2Uue2VkcywgcG9zfSA9IGV4ZXJjaXNlO1xuICBsZXQgc3RpdGNoZWRfZHluYW1pY3MgPVxuICAgIEV4ZXJjaXNlLnN0aXRjaF9keW5hbWljKFxuICAgICAgc2V0dGluZ3MuY29yZSxcbiAgICAgIGV4ZXJjaXNlLFxuICAgICAgc2V0dGluZ3MuY29yZS5keW5hbWljcyA/IFNvbWUocmVzdWx0cykgOiBOb25lLFxuICAgICk7XG4gIGxldCB7XG4gICAgdGVzdF92YWxpZGF0aW9uLFxuICAgIHVzZXJfaW1wbCxcbiAgICB1c2VyX3Rlc3RzLFxuICAgIHByZWx1ZGUsXG4gICAgaW5zdHJ1Y3RvcixcbiAgICBoaWRkZW5fYnVncyxcbiAgICBoaWRkZW5fdGVzdHM6IF8sXG4gIH06XG4gICAgRXhlcmNpc2Uuc3RpdGNoZWQoRXhlcmNpc2UuRHluYW1pY3NJdGVtLnQpID0gc3RpdGNoZWRfZHluYW1pY3M7XG5cbiAgbGV0IGdyYWRpbmdfcmVwb3J0ID0gR3JhZGluZy5HcmFkaW5nUmVwb3J0Lm1rKGVkcywgfnN0aXRjaGVkX2R5bmFtaWNzKTtcblxuICBsZXQgc2NvcmVfdmlldyA9IEdyYWRpbmcuR3JhZGluZ1JlcG9ydC52aWV3X292ZXJhbGxfc2NvcmUoZ3JhZGluZ19yZXBvcnQpO1xuXG4gIGxldCBlZGl0b3JfdmlldyA9XG4gICAgICAoXG4gICAgICAgIH5lZGl0b3I6IEVkaXRvci50LFxuICAgICAgICB+Y2FwdGlvbjogc3RyaW5nLFxuICAgICAgICB+c3ViY2FwdGlvbjogb3B0aW9uKHN0cmluZyk9PyxcbiAgICAgICAgfmZvb3Rlcj0/LFxuICAgICAgICB+ZGk6IEV4ZXJjaXNlLkR5bmFtaWNzSXRlbS50LFxuICAgICAgICB0aGlzX3BvcyxcbiAgICAgICkgPT4ge1xuICAgIENlbGwuZWRpdG9yX3ZpZXcoXG4gICAgICB+c2VsZWN0ZWQ9cG9zID09IHRoaXNfcG9zLFxuICAgICAgfmVycm9yX2lkcz1cbiAgICAgICAgU3RhdGljcy5NYXAuZXJyb3JfaWRzKGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLCBkaS5pbmZvX21hcCksXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlLFxuICAgICAgfm1vdXNlZG93bl91cGRhdGVzPVtTd2l0Y2hFZGl0b3IodGhpc19wb3MpXSxcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgfmNhcHRpb249Q2VsbC5jYXB0aW9uKGNhcHRpb24sIH5yZXN0PT9zdWJjYXB0aW9uKSxcbiAgICAgIH50YXJnZXRfaWQ9RXhlcmNpc2Uuc2hvd19wb3ModGhpc19wb3MpLFxuICAgICAgfnRlc3RfcmVzdWx0cz1Nb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoZGkucmVzdWx0KSxcbiAgICAgIH5mb290ZXI/LFxuICAgICAgZWRpdG9yLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHRpdGxlX3ZpZXcgPSBDZWxsLnRpdGxlX2NlbGwoZWRzLnRpdGxlKTtcblxuICBsZXQgcHJvbXB0X3ZpZXcgPVxuICAgIENlbGwubmFycmF0aXZlX2NlbGwoXG4gICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsLXByb21wdFwiKSwgW2Vkcy5wcm9tcHRdKSxcbiAgICApO1xuXG4gIGxldCBwcmVsdWRlX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBQcmVsdWRlLFxuICAgICAgICB+Y2FwdGlvbj1cIlByZWx1ZGVcIixcbiAgICAgICAgfnN1YmNhcHRpb249c2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlID8gXCJcIiA6IFwiIChSZWFkLU9ubHkpXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnByZWx1ZGUsXG4gICAgICAgIH5kaT1wcmVsdWRlLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBjb3JyZWN0X2ltcGxfdmlldyA9XG4gICAgSW5zdHJ1Y3Rvck9ubHkoXG4gICAgICAoKSA9PlxuICAgICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgICBDb3JyZWN0SW1wbCxcbiAgICAgICAgICB+Y2FwdGlvbj1cIkNvcnJlY3QgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgICB+ZWRpdG9yPWVkcy5jb3JyZWN0X2ltcGwsXG4gICAgICAgICAgfmRpPWluc3RydWN0b3IsXG4gICAgICAgICksXG4gICAgKTtcblxuICAvLyBkZXRlcm1pbmUgdHJhaWxpbmcgaG9sZVxuICAvLyBUT0RPOiBtb2R1bGVcbiAgbGV0IGNvcnJlY3RfaW1wbF9jdHhfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAge1xuICAgICAgICBsZXQgZXhwX2N0eF92aWV3ID0ge1xuICAgICAgICAgIGxldCBjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHggPVxuICAgICAgICAgICAgSGF6M2xjb3JlLkVkaXRvci50cmFpbGluZ19ob2xlX2N0eChcbiAgICAgICAgICAgICAgZWRzLmNvcnJlY3RfaW1wbCxcbiAgICAgICAgICAgICAgaW5zdHJ1Y3Rvci5pbmZvX21hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHggPVxuICAgICAgICAgICAgSGF6M2xjb3JlLkVkaXRvci50cmFpbGluZ19ob2xlX2N0eChlZHMucHJlbHVkZSwgcHJlbHVkZS5pbmZvX21hcCk7XG4gICAgICAgICAgc3dpdGNoIChjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgsIHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgpIHtcbiAgICAgICAgICB8IChOb25lLCBfKSA9PiBOb2RlLmRpdihbdGV4dChcIk5vIGNvbnRleHQgYXZhaWxhYmxlICgxKVwiKV0pXG4gICAgICAgICAgfCAoXywgTm9uZSkgPT4gTm9kZS5kaXYoW3RleHQoXCJObyBjb250ZXh0IGF2YWlsYWJsZSAoMilcIildKSAvLyBUT0RPIHNob3cgZXhlcmNpc2UgY29uZmlndXJhdGlvbiBlcnJvclxuICAgICAgICAgIHwgKFxuICAgICAgICAgICAgICBTb21lKGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCksXG4gICAgICAgICAgICAgIFNvbWUocHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCksXG4gICAgICAgICAgICApID0+XG4gICAgICAgICAgICBsZXQgc3BlY2lmaWNfY3R4ID1cbiAgICAgICAgICAgICAgSGF6M2xjb3JlLkN0eC5zdWJ0cmFjdF9wcmVmaXgoXG4gICAgICAgICAgICAgICAgY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4LFxuICAgICAgICAgICAgICAgIHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzd2l0Y2ggKHNwZWNpZmljX2N0eCkge1xuICAgICAgICAgICAgfCBOb25lID0+IE5vZGUuZGl2KFt0ZXh0KFwiTm8gY29udGV4dCBhdmFpbGFibGVcIildKSAvLyBUT0RPIHNob3cgZXhlcmNpc2UgY29uZmlndXJhdGlvbiBlcnJvclxuICAgICAgICAgICAgfCBTb21lKHNwZWNpZmljX2N0eCkgPT5cbiAgICAgICAgICAgICAgQ3R4SW5zcGVjdG9yLmN0eF92aWV3KH5pbmplY3QsIHNwZWNpZmljX2N0eClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgQ2VsbC5zaW1wbGVfY2VsbF92aWV3KFtcbiAgICAgICAgICBDZWxsLnNpbXBsZV9jZWxsX2l0ZW0oW1xuICAgICAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgICAgICBcIkNvcnJlY3QgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgICAgICAgfnJlc3Q9XCIgKFR5cGUgU2lnbmF0dXJlcyBPbmx5KVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGV4cF9jdHhfdmlldyxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSk7XG4gICAgICB9LFxuICAgICk7XG5cbiAgbGV0IHlvdXJfdGVzdHNfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFlvdXJUZXN0c1ZhbGlkYXRpb24sXG4gICAgICAgIH5jYXB0aW9uPVwiVGVzdCBWYWxpZGF0aW9uXCIsXG4gICAgICAgIH5zdWJjYXB0aW9uPVwiOiBZb3VyIFRlc3RzIHZzLiBDb3JyZWN0IEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICAgIH5kaT10ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgIH5mb290ZXI9W1xuICAgICAgICAgIEdyYWRpbmcuVGVzdFZhbGlkYXRpb25SZXBvcnQudmlldyhcbiAgICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgICBncmFkaW5nX3JlcG9ydC50ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgZ3JhZGluZ19yZXBvcnQucG9pbnRfZGlzdHJpYnV0aW9uLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCB3cm9uZ19pbXBsX3ZpZXdzID1cbiAgICBMaXN0Lm1hcGkoXG4gICAgICAoaSwgKEV4ZXJjaXNlLntpbXBsLCBffSwgZGkpKSA9PiB7XG4gICAgICAgIEluc3RydWN0b3JPbmx5KFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgICAgICAgSGlkZGVuQnVncyhpKSxcbiAgICAgICAgICAgICAgfmNhcHRpb249XCJXcm9uZyBJbXBsZW1lbnRhdGlvbiBcIiArKyBzdHJpbmdfb2ZfaW50KGkgKyAxKSxcbiAgICAgICAgICAgICAgfmVkaXRvcj1pbXBsLFxuICAgICAgICAgICAgICB+ZGksXG4gICAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgTGlzdC5jb21iaW5lKGVkcy5oaWRkZW5fYnVncywgaGlkZGVuX2J1Z3MpLFxuICAgICk7XG5cbiAgbGV0IG11dGF0aW9uX3Rlc3RpbmdfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgR3JhZGluZy5NdXRhdGlvblRlc3RpbmdSZXBvcnQudmlldyhcbiAgICAgICAgfmluamVjdCxcbiAgICAgICAgZ3JhZGluZ19yZXBvcnQubXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgIGdyYWRpbmdfcmVwb3J0LnBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCB5b3VyX2ltcGxfdmlldyA9IHtcbiAgICBBbHdheXMoXG4gICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgWW91ckltcGwsXG4gICAgICAgIH5jYXB0aW9uPVwiWW91ciBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy55b3VyX2ltcGwsXG4gICAgICAgIH5kaT11c2VyX2ltcGwsXG4gICAgICAgIH5mb290ZXI9XG4gICAgICAgICAgQ2VsbC5mb290ZXIoXG4gICAgICAgICAgICB+bG9ja2VkPWZhbHNlLFxuICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICAgIH5yZXN1bHQ9dXNlcl9pbXBsLnJlc3VsdCxcbiAgICAgICAgICAgIH5yZXN1bHRfa2V5PUV4ZXJjaXNlLnVzZXJfaW1wbF9rZXksXG4gICAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgfTtcblxuICBsZXQgc3ludGF4X2dyYWRpbmdfdmlldyA9XG4gICAgQWx3YXlzKEdyYWRpbmcuU3ludGF4UmVwb3J0LnZpZXcoZ3JhZGluZ19yZXBvcnQuc3ludGF4X3JlcG9ydCkpO1xuXG4gIGxldCBpbXBsX3ZhbGlkYXRpb25fdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFlvdXJUZXN0c1Rlc3RpbmcsXG4gICAgICAgIH5jYXB0aW9uPVwiSW1wbGVtZW50YXRpb24gVmFsaWRhdGlvblwiLFxuICAgICAgICB+c3ViY2FwdGlvbj1cbiAgICAgICAgICBcIjogWW91ciBUZXN0cyAoY29kZSBzeW5jaHJvbml6ZWQgd2l0aCBUZXN0IFZhbGlkYXRpb24gY2VsbCBhYm92ZSkgdnMuIFlvdXIgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgfmVkaXRvcj1lZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgICAgfmRpPXVzZXJfdGVzdHMsXG4gICAgICAgIH5mb290ZXI9W1xuICAgICAgICAgIENlbGwudGVzdF9yZXBvcnRfZm9vdGVyX3ZpZXcoXG4gICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgfnRlc3RfcmVzdWx0cz1Nb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHModXNlcl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IGhpZGRlbl90ZXN0c192aWV3ID1cbiAgICBJbnN0cnVjdG9yT25seShcbiAgICAgICgpID0+XG4gICAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICAgIEhpZGRlblRlc3RzLFxuICAgICAgICAgIH5jYXB0aW9uPVwiSGlkZGVuIFRlc3RzXCIsXG4gICAgICAgICAgfmVkaXRvcj1lZHMuaGlkZGVuX3Rlc3RzLnRlc3RzLFxuICAgICAgICAgIH5kaT1pbnN0cnVjdG9yLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgbGV0IGltcGxfZ3JhZGluZ192aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBHcmFkaW5nLkltcGxHcmFkaW5nUmVwb3J0LnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5yZXBvcnQ9Z3JhZGluZ19yZXBvcnQuaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgfnN5bnRheF9yZXBvcnQ9Z3JhZGluZ19yZXBvcnQuc3ludGF4X3JlcG9ydCxcbiAgICAgICAgfm1heF9wb2ludHM9Z3JhZGluZ19yZXBvcnQucG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICksXG4gICAgKTtcblxuICBbc2NvcmVfdmlldywgdGl0bGVfdmlldywgcHJvbXB0X3ZpZXddXG4gIEAgcmVuZGVyX2NlbGxzKFxuICAgICAgc2V0dGluZ3MsXG4gICAgICBbXG4gICAgICAgIHByZWx1ZGVfdmlldyxcbiAgICAgICAgY29ycmVjdF9pbXBsX3ZpZXcsXG4gICAgICAgIGNvcnJlY3RfaW1wbF9jdHhfdmlldyxcbiAgICAgICAgeW91cl90ZXN0c192aWV3LFxuICAgICAgXVxuICAgICAgQCB3cm9uZ19pbXBsX3ZpZXdzXG4gICAgICBAIFtcbiAgICAgICAgbXV0YXRpb25fdGVzdGluZ192aWV3LFxuICAgICAgICB5b3VyX2ltcGxfdmlldyxcbiAgICAgICAgc3ludGF4X2dyYWRpbmdfdmlldyxcbiAgICAgICAgaW1wbF92YWxpZGF0aW9uX3ZpZXcsXG4gICAgICAgIGhpZGRlbl90ZXN0c192aWV3LFxuICAgICAgICBpbXBsX2dyYWRpbmdfdmlldyxcbiAgICAgIF0sXG4gICAgKTtcbn07XG5cbmxldCByZXNldF9idXR0b24gPSBpbmplY3QgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMudHJhc2gsXG4gICAgXyA9PiB7XG4gICAgICBsZXQgY29uZmlybWVkID1cbiAgICAgICAgSnNVdGlsLmNvbmZpcm0oXG4gICAgICAgICAgXCJBcmUgeW91IFNVUkUgeW91IHdhbnQgdG8gcmVzZXQgdGhpcyBleGVyY2lzZT8gWW91IHdpbGwgbG9zZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IHlvdSBoYXZlIHdyaXR0ZW4sIGFuZCBjb3Vyc2Ugc3RhZmYgaGF2ZSBubyB3YXkgdG8gcmVzdG9yZSBpdCFcIixcbiAgICAgICAgKTtcbiAgICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5SZXNldEN1cnJlbnRFZGl0b3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgICAgfTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiUmVzZXQgRXhlcmNpc2VcIixcbiAgKTtcblxubGV0IGluc3RydWN0b3JfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPSBFeGVyY2lzZS5leHBvcnRfbW9kdWxlKG1vZHVsZV9uYW1lLCBleGVyY2lzZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUofmZpbGVuYW1lLCB+Y29udGVudF90eXBlLCB+Y29udGVudHMpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgRXhlcmNpc2UgTW9kdWxlXCIsXG4gICk7XG5cbmxldCBpbnN0cnVjdG9yX3RyYW5zaXRpb25hcnlfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPVxuICAgICAgICBFeGVyY2lzZS5leHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBUcmFuc2l0aW9uYXJ5IEV4ZXJjaXNlIE1vZHVsZVwiLFxuICApO1xuXG5sZXQgaW5zdHJ1Y3Rvcl9ncmFkaW5nX2V4cG9ydCA9IChleGVyY2lzZTogRXhlcmNpc2Uuc3RhdGUpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICAvLyAubWwgZmlsZXMgYmVjYXVzZSBzaG93IHVzZXMgT0NhbWwgc3ludGF4IChkdW5lIGhhbmRsZXMgc2VhbWxlc3NseSlcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZTtcbiAgICAgIGxldCBmaWxlbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZSArKyBcIl9ncmFkaW5nLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPSBFeGVyY2lzZS5leHBvcnRfZ3JhZGluZ19tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBHcmFkaW5nIEV4ZXJjaXNlIE1vZHVsZVwiLFxuICApO1xuXG5sZXQgZG93bmxvYWRfZWRpdG9yX3N0YXRlID0gKH5pbnN0cnVjdG9yX21vZGUpID0+XG4gIExvZy5nZXRfYW5kKGxvZyA9PiB7XG4gICAgbGV0IGRhdGEgPSBFeHBvcnQuZXhwb3J0X2FsbCh+aW5zdHJ1Y3Rvcl9tb2RlLCB+bG9nKTtcbiAgICBKc1V0aWwuZG93bmxvYWRfanNvbihFeGVyY2lzZVNldHRpbmdzLmZpbGVuYW1lLCBkYXRhKTtcbiAgfSk7XG5cbmxldCBleHBvcnRfc3VibWlzc2lvbiA9ICh+c2V0dGluZ3M6IFNldHRpbmdzLnQpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICBkb3dubG9hZF9lZGl0b3Jfc3RhdGUofmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgU3VibWlzc2lvblwiLFxuICApO1xuXG5sZXQgaW1wb3J0X3N1Ym1pc3Npb24gPSAofmluamVjdCkgPT5cbiAgV2lkZ2V0cy5maWxlX3NlbGVjdF9idXR0b25fbmFtZWQoXG4gICAgXCJpbXBvcnQtc3VibWlzc2lvblwiLFxuICAgIEljb25zLnN0YXIsXG4gICAgZmlsZSA9PiB7XG4gICAgICBzd2l0Y2ggKGZpbGUpIHtcbiAgICAgIHwgTm9uZSA9PiBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmVcbiAgICAgIHwgU29tZShmaWxlKSA9PiBpbmplY3QoVXBkYXRlQWN0aW9uLkluaXRJbXBvcnRBbGwoZmlsZSkpXG4gICAgICB9XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkltcG9ydCBTdWJtaXNzaW9uXCIsXG4gICk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZmlsdGVyX3BhdXNlID0gKH5wX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlclBhdXNlLFxuICBmb3JtX2lkOiBGaWx0ZXJQYXVzZSxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfcGF1c2UoW1tzcGFjZSgpLCBwJywgc3BhY2UoKV1dKSwgbGluZWJyZWFrKCksIGVfYm9keSddXG4gICAgKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlBhdXNlIGZpbHRlciBmb3Igc3RlcHBlci4gVGhlIGV2YWx1YXRpb24gb2YgYWxsIHN1YmV4cHJlc3Npb25zIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgYmUgcGF1c2VkIGR1cmluZyBldmFsdWF0aW9uXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJTdGVwLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImV2YWwgJGUgKyAkZSBpblxcbigxICsgMikgKiAoMyArIDQpXCIpLFxuICAgICAgbWVzc2FnZTogXCJUaGUgZXhwcmVzc2lvbiAoMSAqIDIpICsgKDMgKiA0KSBpcyBndWFyZGVkIGJ5IGEgcGF1c2UgZmlsdGVyIGV4cHJlc3Npb24gcGF1c2UgJHYgKyAkdiwgd2hpY2ggaW5zdHJ1Y3QgdGhlIGV2YWx1YXRvciB0byBwYXVzZSB0aGUgZXZhbHVhdGlvbiB3aGVuIGl0IHNlZXMgYSB2YWx1ZSBpcyBhZGRlZCB0byBhbm90aGVyIHZhbHVlLiBBZnRlciBldmFsdWF0aW5nIHN1YnRlcm1zICgxICogMikgYW5kICgzICogNCksIHRoZSBleHByZXNzaW9uIHR1cm5zIGludG8gMiArIDEyLiAyIG1hdGNoZXMgdGhlIGZpcnN0ICR2IHBhdHRlcm4sIGFuZCAxMiBtYXRjaGVzIHRoZSBzZWNvbmQgJHYgcGF0dGVybi4gVGhlcmVmb3JlLCB0aGUgZXZhbHVhdG9yIHN0b3BzIHdoZW4gdGhlIGV4cHJlc3Npb24gc3RlcHMgdG8gMiArIDEyXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfZXZhbCA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJFdmFsLFxuICBmb3JtX2lkOiBGaWx0ZXJFdmFsLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19ldmFsKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJGdWxsIGV2YWx1YXRpb24gZmlsdGVyIGZvciBzdGVwcGVyLiBBbGwgc3ViZXhwcmVzc2lvbnMgd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBnZXQgZXZhbHVhdGVkIGluIG9uZSBnb1wiLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRmlsdGVyRXZhbCxcbiAgICAgIHRlcm06XG4gICAgICAgIG1rX2V4YW1wbGUoXG4gICAgICAgICAgXCJwYXVzZSAkZSBpblxcbmhpZGUgbGV0ID0gaW4gaW5cXG5sZXQgeCA9IDEgaW5cXG5sZXQgeSA9IDIgaW5cXG54ICsgeVwiLFxuICAgICAgICApLFxuICAgICAgbWVzc2FnZTogXCJwYXVzZSAkZSBpbiBpbnN0cnVjdCB0aGUgZXZhbHVhdG9yIHRvIGFjdCBsaWtlIGEgc2luZ2xlLXN0ZXBwZXIsIGUuZy4gc3RvcCBhdCBldmVyeSBzdGVwLiBUaGUgaGlkZSBmaWx0ZXIgZXhwcmVzc2lvbiBpbnN0cnVjdHMgdGhlIGV2YWx1YXRvciB0byBza2lwIG92ZXIgYWxsIGV2YWx1YXRvciBzdGVwcyB0aGF0IGRlc3RydWN0cyBwZXJmb3JtIHN1YnN0aXR1dGlvbiBvbiBhIGxldC1leHByZXNzaW9uLiBIZXJlLCB0aGUgc3Vic3RpdHV0aW9uIG9mIHZhcmlhYmxlIHggYW5kIHkgaXMgc2tpcHBlZCBvdmVyIGFuZCB3ZSBkaXJlY3RseSBnb3QgMSArIDIgaW4gdGhlIHJlc3VsdCBhcmVhLlwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5sZXQgZmlsdGVyX2hpZGUgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVySGlkZSxcbiAgZm9ybV9pZDogRmlsdGVySGlkZSxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfaGlkZShbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiU3RlcCBoaWRpbmcgZmlsdGVyIGZvciBzdGVwcGVyLiBUaGUgZWxpbWluYXRpb24gb2YgYWxsIGxhbmd1YWdlIGNvbnN0cnVjdHMgKGxpa2UgYmluYXJ5IG9wZXJhdG9yICsgb3IgbGV0IC4uID0gLi4gaW4pIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgZ2V0IHNraXBwZWQuXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJIaWRlLFxuICAgICAgdGVybTpcbiAgICAgICAgbWtfZXhhbXBsZShcbiAgICAgICAgICBcInBhdXNlICRlIGluXFxuaGlkZSBsZXQgPSBpbiBpblxcbmxldCB4ID0gMSBpblxcbmxldCB5ID0gMiBpblxcbnggKyB5XCIsXG4gICAgICAgICksXG4gICAgICBtZXNzYWdlOiBcInBhdXNlICRlIGluIGluc3RydWN0IHRoZSBldmFsdWF0b3IgdG8gYWN0IGxpa2UgYSBzaW5nbGUtc3RlcHBlciwgZS5nLiBzdG9wIGF0IGV2ZXJ5IHN0ZXAuIFRoZSBoaWRlIGZpbHRlciBleHByZXNzaW9uIGluc3RydWN0cyB0aGUgZXZhbHVhdG9yIHRvIHNraXAgb3ZlciBhbGwgZXZhbHVhdG9yIHN0ZXBzIHRoYXQgZGVzdHJ1Y3RzIHBlcmZvcm0gc3Vic3RpdHV0aW9uIG9uIGEgbGV0LWV4cHJlc3Npb24uIEhlcmUsIHRoZSBzdWJzdGl0dXRpb24gb2YgdmFyaWFibGUgeCBhbmQgeSBpcyBza2lwcGVkIG92ZXIgYW5kIHdlIGRpcmVjdGx5IGdvdCAxICsgMiBpbiB0aGUgcmVzdWx0IGFyZWEuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfZGVidWcgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVyRGVidWcsXG4gIGZvcm1faWQ6IEZpbHRlckRlYnVnLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19kZWJ1ZyhbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiRGVidWcgZmlsdGVyIGZvciBzdGVwcGVyLiBBbGwgbWF0Y2hlZCBzdWItZXhwcmVzc2lvbiB3aXRoaW4gWypib2R5Kl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSB3aWxsIGJlIHN0ZXBwZWQgdGhyb3VnaC5cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlckRlYnVnLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImV2YWwgJGUgaW5cXG5kZWJ1ZyAkdiArICR2ICsgJHYgaW5cXG4xICsgMiArIDNcIiksXG4gICAgICBtZXNzYWdlOiBcIlRoZSBkZWJ1ZyBmaWx0ZXIgcGF0dGVybiAkdiArICR2ICsgJHYgbWF0Y2hlcyAxICsgMiArIDMsIHRoZXJlZm9yZSwgdGhlIGV2YWx1YXRvciB3aWxsIHN0ZXAgaW50byB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgbWF0Y2hlZCBzdWItZXhwcmVzc2lvbiAxICsgMiArIDMuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCB1bnF1b3RlID0gKH5zZWxfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJTZWxlY3RvcixcbiAgZm9ybV9pZDogRmlsdGVyU2VsZWN0b3IsXG4gIGFic3RyYWN0OiBTaW1wbGUubWtfMSgoXCJzZWxcIiwgc2VsX2lkKSwgc2VsJyA9PiBbbWtfdW5xdW90ZShbXSksIHNlbCddKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlNlbGVjdG9yIGV4cHJlc3Npb24gZm9yIGEgc3RlcHBlciBmaWx0ZXIgcGF0dGVybi4gV2hlbiBbKnNlbCpdKCVzKSBpcyAnZScsIGl0IG1hdGNoZXMgYW55IGV4cHJlc3Npb24sIHdoZW4gWypzZWwqXSglcykgaXMgJ3YnIGl0IG9ubHkgbWF0Y2hlcyB2YWx1ZXMuXCIsXG4gICAgICBzZWxfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgc2VsX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW10sXG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGJhc2ljX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQmFzaWMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIHggLT4geFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaWRlbnRpdHkgZnVuY3Rpb24uIFdoZW4gZ2l2ZW4gYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhhdCBhcmd1bWVudC5cIixcbn07XG5sZXQgd2lsZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFdpbGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIF8gLT4gM1wiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDMuXCIsXG59O1xubGV0IGludGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEludExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gMSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSAxLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGZsb2F0bGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oRmxvYXRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIDEuMSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSAxLjEsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgYm9vbGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEJvb2xMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIHRydWUgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdmFsdWUgdHJ1ZSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBzdHJsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihTdHJMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFxcXCJhYmNcXFwiIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIFxcXCJhYmNcXFwiLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IHRyaXZfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihUcml2KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoKSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB0aGUgKCkgdmFsdWUsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGlzdG5pbF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKExpc3ROaWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFtdIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHRoZSBlbXB0eSBsaXN0IHZhbHVlLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxpc3RsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihMaXN0TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBbeCwgeV0gLT4geFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBsaXN0IG9mIHR3byBlbGVtZW50cywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IGNvbnNfaGRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDb25zSGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIGhkOjp0bCAtPiBoZFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBub24tZW1wdHkgbGlzdCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgaGVhZCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IGNvbnNfc25kX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQ29uc1NuZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gZnN0OjpzbmQ6OnRsIC0+IHNuZFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBsaXN0IHdpdGggYXQgbGVhc3QgdHdvIGVsZW1lbnRzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IHZhcl9pbmNyX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVmFySW5jciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4geCAtPiB4ICsgMVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGludGVnZXIgYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGFyZ3VtZW50IHBsdXMgMS5cIixcbn07XG5sZXQgdmFyX2FuZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFZhckFuZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gYiAtPiBiICYmIHRydWVcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIGJvb2xlYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGxvZ2ljYWwtYW5kIG9mIHRoZSBhcmd1bWVudCBhbmQgdHJ1ZSwgd2hpY2ggZXZhbHVhdGVzIHRvIHRoZSB0cnV0aCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuXCIsXG59O1xubGV0IHR1cGxlMl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFR1cGxlMiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gKHgsIHkpIC0+IHggKyB5XCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSAyLXR1cGxlIG9mIGludGVnZXJzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBzdW0gb2YgdGhlIHR3byBpbnRlZ2Vycy5cIixcbn07XG5sZXQgdHVwbGUzX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVHVwbGUzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoYSwgYiwgYykgLT5cXG5hICYmIGIgJiYgY1wiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgMy10dXBsZSBvZiBib29sZWFucywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgbG9naWNhbC1hbmQgb2YgdGhlIHRocmVlIGJvb2xlYW5zLlwiLFxufTtcbmxldCBjdHJfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDdHIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIE5vbmUgLT4gMVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgTm9uZSBjb25zdHJ1Y3RvciBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyAxLlwiLFxufTtcbmxldCBhcF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEFwKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBTb21lKGEpIC0+IGFcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIFNvbWUgY29uc3RydWN0b3IgYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGNvbnN0cnVjdG9yJ3MgYXJndW1lbnQuXCIsXG59O1xuLy8gVE9ETyBmb3Igc2hhcmVkIGV4YW1wbGVzLCBzaG91bGQgdGhlIGZlZWRiYWNrIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGZvciBlYWNoIFwiaW5zdGFuY2VcIj9cbmxldCBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX3BhdF9pZDogSWQudCwgc2ZfYm9keV9pZDogSWQudCwgfnBhdF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKHNmX3BhdF9pZCwgcGF0X2lkKSwgKHNmX2JvZHlfaWQsIGJvZHlfaWQpXTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInBcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEJhc2UpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0gLy8gVE9ETyBXaGF0IG90aGVyIGV4YW1wbGVzIHNob3VsZCBiZSBoZXJlXG4gIH07XG59O1xuXG5sZXQgX3BhdCA9IFBpZWNlLkdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fZW1wdHlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKSwgYWZ0ZXIgdGhlIFtlbXB0eSBob2xlIHBhdHRlcm5dKCVzKSBpcyBmaWxsZWQuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEVtcHR5SG9sZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtiYXNpY19mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSU5WQUxJRFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX211bHRpX2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcyksIGFmdGVyIHRoZSBbaW52YWxpZCBhcmd1bWVudCBwYXR0ZXJuXSglcykgaXMgY29ycmVjdGVkLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChNdWx0aUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSU5WQUxJRFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3dpbGRfZXhwX2NvbG9yaW5nX2lkcyA9ICh+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpXTtcbn07XG5sZXQgZnVuY3Rpb25fd2lsZF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgaXMgaWdub3JlZCwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBfcGF0ID0gcGF0KFwiX1wiKTtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoV2lsZCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJfXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbd2lsZF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSW50TGl0XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2ludGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9pbnRsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIGAlc2AuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChJbnQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSW50TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50bGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJGbG9hdExpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9mbG9hdGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9mbG9hdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVmYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIC8vIFRPRE8gcHJpbnQgb3V0IHRoZSBmbG9hdCBsaXRlcmFsIG5pY2VyXG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEZsb2F0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkZsb2F0TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkJvb2xMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fYm9vbGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9ib29sbGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJWJgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQm9vbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJCb29sTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYm9vbGxpdF9mdW5fZXhdLFxuICB9O1xufTtcblxubGV0IF9wYXQgPSBwYXQoXCJTdHJpbmdMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fc3RybGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3N0cmxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVzYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG5cbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoU3RyaW5nKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIlN0cmluZ0xpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3N0cmxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiKClcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHJpdl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl90cml2X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyB0aGUgdHJpdmlhbCB2YWx1ZSBgKClgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS4gVGhpcyBpZiBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBhIHplcm8gYXJndW1lbnQgZnVuY3Rpb24uXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFRyaXYpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiKClcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0cml2X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJbXVwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2xpc3RuaWxfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIHRoZSBlbXB0eSBsaXN0IGBbXWAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChMaXN0TmlsKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIltdXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGlzdG5pbF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2xpc3RsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgYXJlIGxpc3RzIHdpdGggJW4tZWxlbWVudHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTGlzdExpdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChfcGF0KSxcbiAgICAgICAgW21rX2xpc3RfcGF0KFtbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildXSldLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsaXN0bmlsX2Z1bl9leCwgbGlzdGxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9jb25zX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlICphcmd1bWVudCBwYXR0ZXJuKiBhcmUgbm9uLWVtcHR5IGxpc3RzIHRoYXQgbWF0Y2ggdGhlIFsqaGVhZCBwYXR0ZXJuKl0oJXMpIGFuZCBbKnRhaWwgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBjb25zID0gY29uc19wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfZnVuKFtbc3BhY2UoKSwgX3BhdF9oZCwgY29ucywgX3BhdF90bCwgc3BhY2UoKV1dKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTGlzdENvbnMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb25zKSwgW3BhdChcInBfaGRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25zX2hkX2Z1bl9leCwgY29uc19zbmRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInhcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdmFyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3Zhcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBbKnZhcmlhYmxlKl0oJXMpIGAlc2AsIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChWYXIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwieFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leCwgdmFyX2luY3JfZnVuX2V4LCB2YXJfYW5kX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9jb21tYSA9IGNvbW1hX3BhdCgpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfY29tbWEpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fdHVwbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgYXJlICVzLXR1cGxlcyB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBlbGVtZW50IHBhdHRlcm4uIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBwYXQoXCJwMVwiKSwgX2NvbW1hLCBzcGFjZSgpLCBwYXQoXCIuLi5cIiksIHNwYWNlKCldXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX2NvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGUyX2Z1bl9leCwgdHVwbGUzX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fdHVwbGUyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSAyLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBfcGF0MSwgY29tbWEsIHNwYWNlKCksIF9wYXQyLCBzcGFjZSgpXV0pLFxuICAgIHNwYWNlKCksXG4gICAgX2V4cCxcbiAgXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChUdXBsZTIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGUyX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfcGF0MyA9IHBhdChcInAzXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlM19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+cGF0M19pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQzKSwgcGF0M19pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fdHVwbGUzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSAzLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kIHRoZSB0aGlyZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqdGhpcmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbXG4gICAgICBbXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQxLFxuICAgICAgICBjb21tYV9wYXQoKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDIsXG4gICAgICAgIGNvbW1hLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MyxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgIF0sXG4gICAgXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZTNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkNcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fY3RyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgdGhlICpgJXNgIGNvbnN0cnVjdG9yKi4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEN0ciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJDXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbY3RyX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9hcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmNvbl9pZDogSWQudCwgfmFyZ19pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXRfY29uKSwgY29uX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwKSwgYm9keV9pZCksXG4gIF07XG59O1xubGV0IGZ1bmN0aW9uX2FwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSB0aGUgWypjb25zdHJ1Y3RvcipdKCVzKSB3aGVyZSB0aGUgKmNvbnN0cnVjdG9yIGFyZ3VtZW50KiBtYXRjaGVzIHRoZSBbKmNvbnN0cnVjdG9yIGFyZ3VtZW50IHBhdHRlcm4qXSglcykuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSAqYXJndW1lbnQgcGF0dGVybiosIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgYXAgPSBta19hcF9wYXQoW1tfcGF0X2FyZ11dKTtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdF9jb24sIGFwLCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChBcCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFwKSwgW3BhdChcInBfY29uXCIpLCBta19hcF9wYXQoW1twYXQoXCJwX2FyZ1wiKV1dKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2FwX2Z1bl9leF0sXG4gIH07XG59O1xuXG5sZXQgZnVuY3Rpb25zOiBncm91cCA9IHtpZDogRnVuY3Rpb25FeHAoQmFzZSksIGZvcm1zOiBbZnVuY3Rpb25fZXhwXX07XG5sZXQgZnVuY3Rpb25zX2VtcHR5X2hvbGUgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChFbXB0eUhvbGUpLFxuICBmb3JtczogW2Z1bmN0aW9uX2VtcHR5X2hvbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbmxldCBmdW5jdGlvbnNfbXVsdGlfaG9sZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKE11bHRpSG9sZSksXG4gIGZvcm1zOiBbZnVuY3Rpb25fbXVsdGlfaG9sZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc193aWxkID0ge1xuICBpZDogRnVuY3Rpb25FeHAoV2lsZCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fd2lsZF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19pbnQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChJbnQpLFxuICBmb3JtczogW2Z1bmN0aW9uX2ludGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19mbG9hdCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEZsb2F0KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9mbG9hdGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19ib29sID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQm9vbCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fYm9vbGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3N0ciA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFN0cmluZyksXG4gIGZvcm1zOiBbZnVuY3Rpb25fc3RybGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdHJpdiA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFRyaXYpLFxuICBmb3JtczogW2Z1bmN0aW9uX3RyaXZfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19saXN0bmlsID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTGlzdE5pbCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fbGlzdG5pbF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2xpc3RsaXQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChMaXN0TGl0KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9saXN0bGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfY29ucyA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKExpc3RDb25zKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9jb25zX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdmFyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVmFyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl92YXJfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190dXBsZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl90dXBsZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3R1cGxlMiA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMiksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHVwbGUyX2V4cCwgZnVuY3Rpb25fdHVwbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190dXBsZTMgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChUdXBsZTMpLFxuICBmb3JtczogW2Z1bmN0aW9uX3R1cGxlM19leHAsIGZ1bmN0aW9uX3R1cGxlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfY3RyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQ3RyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9jdHJfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19hcCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEFwKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9hcF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVtcHR5X2hvbGVfdGVtcGxhdGUgPSAoX3NvcnQsIHN0ciwgaWQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiVGhpcyBzaG91bGQgYmUgZmlsbGVkIHdpdGggJXMgdG8gY29tcGxldGUgdGhlIHByb2dyYW0uXCIsXG4gICAgICBzdHIsXG4gICAgKTtcbiAge1xuICAgIGlkLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IG11bHRpX2hvbGVfdGVtcGxhdGUgPSAoc29ydCwgaWQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGlzIGFuIGludmFsaWQgdGVybS5cIjtcbiAge1xuICAgIGlkLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbc29ydChcIklOVkFMSURcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZW1wdHlfaG9sZV9leHA6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUuZW1wdHlfaG9sZV90ZW1wbGF0ZShleHAsIFwiYW4gZXhwcmVzc2lvblwiLCBFbXB0eUhvbGVFeHApO1xubGV0IGVtcHR5X2hvbGVfZXhwcyA9IHtpZDogRW1wdHlIb2xlRXhwLCBmb3JtczogW2VtcHR5X2hvbGVfZXhwXX07XG5cbmxldCBtdWx0aV9ob2xlX2V4cDogZm9ybSA9XG4gIEhvbGVUZW1wbGF0ZS5tdWx0aV9ob2xlX3RlbXBsYXRlKGV4cCwgTXVsdGlIb2xlRXhwKTtcblxubGV0IG11bHRpX2hvbGVfZXhwcyA9IHtpZDogTXVsdGlIb2xlRXhwLCBmb3JtczogW211bHRpX2hvbGVfZXhwXX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gSGF6M2xjb3JlO1xubGV0IGVtcHR5X2hvbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkV4cHJlc3Npb25zIGFyZSBub3QgbWF0Y2hlZCBhZ2FpbnN0IHRoZSAqZW1wdHkgaG9sZSBwYXR0ZXJuKiB1bnRpbCBpdCBpcyBmaWxsZWQuXCI7XG4gIHtcbiAgICBpZDogRW1wdHlIb2xlUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IG11bHRpX2hvbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkV4cHJlc3Npb25zIGFyZSBub3QgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBpbnZhbGlkIHBhdHRlcm4gdW50aWwgaXQgaXMgY29ycmVjdGVkLlwiO1xuICB7XG4gICAgaWQ6IE11bHRpSG9sZVBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIkludmFsaWRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGVtcHR5X2hvbGU6IGdyb3VwID0ge2lkOiBFbXB0eUhvbGVQYXQsIGZvcm1zOiBbZW1wdHlfaG9sZV9wYXRdfTtcblxubGV0IG11bHRpX2hvbGU6IGdyb3VwID0ge2lkOiBNdWx0aUhvbGVQYXQsIGZvcm1zOiBbbXVsdGlfaG9sZV9wYXRdfTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZW1wdHlfaG9sZV90cGF0OiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLmVtcHR5X2hvbGVfdGVtcGxhdGUodHBhdCwgXCJhIHR5cGUgcGF0dGVyblwiLCBFbXB0eUhvbGVUUGF0KTtcbmxldCBlbXB0eV9ob2xlX3RwYXRzID0ge2lkOiBFbXB0eUhvbGVUUGF0LCBmb3JtczogW2VtcHR5X2hvbGVfdHBhdF19O1xuXG5sZXQgbXVsdGlfaG9sZV90cGF0OiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLm11bHRpX2hvbGVfdGVtcGxhdGUodHBhdCwgTXVsdGlIb2xlVFBhdCk7XG5cbmxldCBtdWx0aV9ob2xlX3RwYXRzID0ge2lkOiBNdWx0aUhvbGVUUGF0LCBmb3JtczogW211bHRpX2hvbGVfdHBhdF19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVtcHR5X2hvbGVfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgbWFya3MgYSB0eXBlIHRoYXQgbmVlZHMgdG8gYmUgZmlsbGVkIGluLlwiO1xuICB7XG4gICAgaWQ6IEVtcHR5SG9sZVR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbi8vIFRPRE8gRGlkIGdldCBhIGNhc2Ugd2hlcmUgaW4gdHlwZSBwb3NpdGlvbiBoYWQgc3BhY2UgYmV0d2VlbiB0d28gdmFyaWFibGVzIHdoZXJlIGdvdCBpbnRvIHdlaXJkIHN0YXRlXG5sZXQgbXVsdGlfaG9sZV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBpcyBhbiBpbnZhbGlkIHR5cGUuXCI7XG4gIHtcbiAgICBpZDogTXVsdGlIb2xlVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiSW52YWxpZFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZW1wdHlfaG9sZTogZ3JvdXAgPSB7aWQ6IEVtcHR5SG9sZVR5cCwgZm9ybXM6IFtlbXB0eV9ob2xlX3R5cF19O1xuXG5sZXQgbXVsdGlfaG9sZTogZ3JvdXAgPSB7aWQ6IE11bHRpSG9sZVR5cCwgZm9ybXM6IFttdWx0aV9ob2xlX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGlmX2Jhc2ljMV9leHBfZXggPSB7XG4gIHN1Yl9pZDogSWZUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiaWYgKHRydWUpIHRoZW4gMSBlbHNlIDJcIiksXG4gIG1lc3NhZ2U6IFwiU2luY2UgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLCB0aGUgaWYgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIHRoZW4gYnJhbmNoLCAxLlwiLFxufTtcbmxldCBpZl9iYXNpYzJfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IElmRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJpZiAoMiA8IDEpIHRoZW4gMyBlbHNlIDRcIiksXG4gIG1lc3NhZ2U6IFwiU2luY2UgdGhlIGNvbmRpdGlvbiBpcyAyIDwgMSBpcyBmYWxzZSwgdGhlIGlmIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBlbHNlIGJyYW5jaCwgNC5cIixcbn07XG5sZXQgX2V4cF9jb25kID0gZXhwKFwiZV9jb25kXCIpO1xubGV0IF9leHBfdGhlbiA9IGV4cChcImVfdGhlblwiKTtcbmxldCBfZXhwX2Vsc2UgPSBleHAoXCJlX2Vsc2VcIik7XG5sZXQgaWZfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5jb25kX2lkOiBJZC50LCB+dGhlbl9pZDogSWQudCwgfmVsc2VfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9jb25kKSwgY29uZF9pZCksXG4gIChQaWVjZS5pZChfZXhwX3RoZW4pLCB0aGVuX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZWxzZSksIGVsc2VfaWQpLFxuXTtcbmxldCBpZl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqY29uZGl0aW9uKl0oJXMpIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIGV2YWx1YXRlIHRoZSBbKnRoZW4gYnJhbmNoKl0oJXMpLiBPdGhlcndpc2UsIGV2YWx1YXRlIHRoZSBbKmVsc2UgYnJhbmNoKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IElmRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBta19pZihbXG4gICAgICAgIFtzcGFjZSgpLCBfZXhwX2NvbmQsIGxpbmVicmVhaygpXSxcbiAgICAgICAgW3NwYWNlKCksIF9leHBfdGhlbiwgbGluZWJyZWFrKCldLFxuICAgICAgXSksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX2V4cF9lbHNlLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2lmX2Jhc2ljMV9leHBfZXgsIGlmX2Jhc2ljMl9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IGlmczogZ3JvdXAgPSB7aWQ6IElmRXhwLCBmb3JtczogW2lmX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGxldF9iYXNlX2V4ID0ge1xuICBzdWJfaWQ6IExldChCYXNpYyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgeCA9IDEgaW4gXFxueFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMVwiLFxufTtcbmxldCBsZXRfd2lsZF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoV2lsZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgXyA9IDEgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9pbnRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEludExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgMSA9IDEgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9mbG9hdF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoRmxvYXRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IDEuMSA9IDEuMSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxLjEgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfYm9vbF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQm9vbExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgdHJ1ZSA9IHRydWUgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdHJ1ZSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9zdHJfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFN0ckxpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgXFxcImFiY1xcXCIgPSBcXFwiYWJjXFxcIiBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB0cnVlIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X3RyaXZfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFRyaXYpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICgpID0gKCkgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgKCkgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfbGlzdGxpdF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoTGlzdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgW3gsIHldID0gWzEsIDJdIGluIFxcbnhcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSBhbmQgdGhlIHkgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEuXCIsXG59O1xubGV0IGxldF9saXN0bmlsX2V4ID0ge1xuICBzdWJfaWQ6IExldChMaXN0TmlsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBbXSA9IFtdIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGVtcHR5IGxpc3QgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfY29uc19oZF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQ29uc0hkKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBoZDo6dGwgPSAxOjpbXSBpbiBcXG5oZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaGQgaXMgYm91bmQgdG8gMSBhbmQgdGhlIHRsIGlzIGJvdW5kIHRvIHRoZSBlbXB0eSBsaXN0LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG5sZXQgbGV0X2NvbnNfc25kX2V4ID0ge1xuICBzdWJfaWQ6IExldChDb25zU25kKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBmc3Q6OnNuZDo6dGwgPSB0cnVlOjpmYWxzZTo6W10gaW4gXFxuc25kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBmc3QgaXMgYm91bmQgdG8gdHJ1ZSwgdGhlIHNuZCBpcyBib3VuZCB0byBmYWxzZSwgYW5kIHRoZSB0bCBpcyBib3VuZCB0byB0aGUgZW1wdHkgbGlzdCwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBsZXRfdmFyX2V4ID0ge1xuICBzdWJfaWQ6IExldChWYXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IHggPSAxIGluIFxcbnggKyAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxICsgMiwgd2hpY2ggaXMgMy5cIixcbn07XG5sZXQgbGV0X3R1cGxlMl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoVHVwbGUyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAoeCwgeSkgPSAoMSwgMikgaW4gXFxueCArIHlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSBhbmQgdGhlIHkgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyLCB3aGljaCBpcyAzLlwiLFxufTtcbmxldCBsZXRfdHVwbGUzX2V4ID0ge1xuICBzdWJfaWQ6IExldChUdXBsZTMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICh4LCB5LCB6KSA9ICgxLCAyLCAzKVxcbmluIHggKyB5ICsgelwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxLCB0aGUgeSBpcyBib3VuZCB0byAyLCBhbmQgdGhlIHogaXMgYm91bmQgdG8gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyICsgMywgd2hpY2ggaXMgNi5cIixcbn07XG5sZXQgbGV0X2N0cl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQ3RyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG4gaW4gbGV0IE5vbmUgPSBOb25lXFxuaW4gMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgTm9uZSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9hcF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQXApLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXCJ0eXBlIFQgPSBOb25lICsgU29tZShJbnQpXFxuIGluIGxldCBTb21lKGEpID0gU29tZSgyKVxcbmluIGFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGEgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChcbiAgICAgIHNmX3BhdF9pZDogSWQudCxcbiAgICAgIHNmX2RlZl9pZDogSWQudCxcbiAgICAgIHNmX2JvZHlfaWQ6IElkLnQsXG4gICAgICB+cGF0X2lkOiBJZC50LFxuICAgICAgfmRlZl9pZDogSWQudCxcbiAgICAgIH5ib2R5X2lkOiBJZC50LFxuICAgIClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfcGF0X2lkLCBwYXRfaWQpLCAoc2ZfZGVmX2lkLCBkZWZfaWQpLCAoc2ZfYm9keV9pZCwgYm9keV9pZCldO1xufTtcbmxldCBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX3BhdF9pZDogSWQudCwgc2ZfZGVmX2lkOiBJZC50LCB+cGF0X2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9wYXRfaWQsIHBhdF9pZCksIChzZl9kZWZfaWQsIGRlZl9pZCldO1xufTtcbmxldCBfcGF0ID0gcGF0KFwicFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9iYXNlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfYmFzZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIFsqcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEJhc2UpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IFBpZWNlLkdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9lbXB0eV9ob2xlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBZnRlciB0aGUgWyplbXB0eSBob2xlIHBhdHRlcm4qXSglcykgaXMgZmlsbGVkLCB0aGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoRW1wdHlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3BhdCksIFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIklOVkFMSURcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X211bHRpX2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFmdGVyIHRoZSBbaW52YWxpZCBwYXR0ZXJuXSglcykgaXMgY29ycmVjdGVkLCB0aGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTXVsdGlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIklOVkFMSURcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYmFzZV9leF0sXG4gIH07XG59O1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF93aWxkX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZGVmX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG4gIChQaWVjZS5pZChfZXhwX2JvZHkpLCBib2R5X2lkKSxcbl07XG5sZXQgbGV0X3dpbGRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgZXZhbHVhdGVkIGFuZCBpZ25vcmVkLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IHBhdF8gPSBwYXQoXCJfXCIpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBwYXRfLCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoV2lsZCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQocGF0XyksIFtwYXQoXCJfXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3dpbGRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSW50TGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9pbnRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2ludF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCVzYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChJbnQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSW50TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2ludF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJGbG9hdExpdFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2Zsb2F0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJWZgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEZsb2F0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkZsb2F0TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Zsb2F0X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkJvb2xMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2Jvb2xfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIGAlYmAuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoQm9vbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJCb29sTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jvb2xfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiU3RyaW5nTGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X3N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCVzYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChTdHJpbmcpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiU3RyaW5nTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3N0cl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCIoKVwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfdHJpdl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlIHRyaXZpYWwgdmFsdWUgYCgpYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUcml2KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIigpXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3RyaXZfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfbGlzdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSBhcmUgbGlzdHMgd2l0aCAlcy1lbGVtZW50cywgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTGlzdExpdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfbGlzdGxpdF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJbXVwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfbGlzdG5pbF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlIGVtcHR5IGxpc3QgYFtdYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChMaXN0TmlsKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIltdXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2xpc3RuaWxfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCwgfmRlZl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0X2hkKSwgaGRfaWQpLFxuICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgbGV0X2NvbnNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIG5vbi1lbXB0eSBsaXN0cyB0aGF0IG1hdGNoIHRoZSBbKmhlYWQqXSglcykgYW5kIFsqdGFpbCpdKCVzKSBwYXR0ZXJucy5cIjtcbiAgbGV0IGNvbnMgPSBjb25zX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIF9wYXRfaGQsIGNvbnMsIF9wYXRfdGwsIHNwYWNlKCldLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKExpc3RDb25zKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29ucyksIFtwYXQoXCJwX2hkXCIpLCBjb25zX3BhdCgpLCBwYXQoXCJwX3RsXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2NvbnNfaGRfZXgsIGxldF9jb25zX3NuZF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJ4XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF92YXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X3Zhcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBib3VuZCB0byB0aGUgWyp2YXJpYWJsZSpdKCVzKSBgJXNgIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChWYXIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwieFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF92YXJfZXhdLFxuICAgIC8vIFRPRE8gRG9lcyB0aGlzIGV4YW1wbGUgYmVpbmcgc2xpZ2h0bHkgZGlmZmVyZW50IGFjdHVhbGx5IGFkZCBhbnl0aGluZz9cbiAgfTtcbn07XG5sZXQgX2NvbW1hID0gY29tbWFfcGF0KCk7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9jb21tYSksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X3R1cGxlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIGFyZSAlcy10dXBsZXMgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIHBhdChcInAxXCIpLCBfY29tbWEsIHNwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHVwbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHVwbGUyX2V4LCBsZXRfdHVwbGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X3R1cGxlMl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIHBhdDJfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfdHVwbGUyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSAyLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdDEsIGNvbW1hLCBzcGFjZSgpLCBfcGF0Miwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHVwbGUyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF90dXBsZTJfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX3BhdDMgPSBwYXQoXCJwM1wiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfnBhdDNfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gIChQaWVjZS5pZChfcGF0MyksIHBhdDNfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfdHVwbGUzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSAzLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kIHRoZSB0aGlyZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqdGhpcmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDEsXG4gICAgICAgIGNvbW1hX3BhdCgpLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MixcbiAgICAgICAgY29tbWEsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQzLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUdXBsZTMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKSwgY29tbWFfcGF0KCksIHBhdChcInAzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3R1cGxlM19leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJDXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9jdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlICpgJXNgIGNvbnN0cnVjdG9yKi4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChDdHIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiQ1wiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9jdHJfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2NvbiA9IHBhdChcInBfY29uXCIpO1xubGV0IF9wYXRfYXJnID0gcGF0KFwicF9hcmdcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5jb25faWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfYXBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdoZXJlIHRoZSAqYXJndW1lbnQqIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGFwID0gbWtfYXBfcGF0KFtbX3BhdF9hcmddXSk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdF9jb24sIGFwLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChBcCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFwKSwgW3BhdChcInBfY29uXCIpLCBta19hcF9wYXQoW1twYXQoXCJwX2FyZ1wiKV1dKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9hcF9leF0sXG4gIH07XG59O1xuXG5sZXQgbGV0c19lbXB0eWhvbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKEVtcHR5SG9sZSksXG4gIGZvcm1zOiBbbGV0X2VtcHR5X2hvbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbXV0bGlob2xlOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChNdWx0aUhvbGUpLFxuICBmb3JtczogW2xldF9tdWx0aV9ob2xlX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3dpbGQ6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFdpbGQpLFxuICBmb3JtczogW2xldF93aWxkX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2ludDogZ3JvdXAgPSB7aWQ6IExldEV4cChJbnQpLCBmb3JtczogW2xldF9pbnRfZXhwLCBsZXRfYmFzZV9leHBdfTtcblxubGV0IGxldHNfZmxvYXQ6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKEZsb2F0KSxcbiAgZm9ybXM6IFtsZXRfZmxvYXRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfYm9vbDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoQm9vbCksXG4gIGZvcm1zOiBbbGV0X2Jvb2xfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfc3RyOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChTdHJpbmcpLFxuICBmb3JtczogW2xldF9zdHJfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHJpdjogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoVHJpdiksXG4gIGZvcm1zOiBbbGV0X3RyaXZfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbGlzdGxpdDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdExpdCksXG4gIGZvcm1zOiBbbGV0X2xpc3RsaXRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbGlzdG5pbDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdE5pbCksXG4gIGZvcm1zOiBbbGV0X2xpc3RuaWxfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfY29uczogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdENvbnMpLFxuICBmb3JtczogW2xldF9jb25zX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3ZhcjogZ3JvdXAgPSB7aWQ6IExldEV4cChWYXIpLCBmb3JtczogW2xldF92YXJfZXhwLCBsZXRfYmFzZV9leHBdfTtcblxubGV0IGxldHNfdHVwbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFR1cGxlKSxcbiAgZm9ybXM6IFtsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHVwbGUyOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUdXBsZTIpLFxuICBmb3JtczogW2xldF90dXBsZTJfZXhwLCBsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHVwbGUzOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUdXBsZTMpLFxuICBmb3JtczogW2xldF90dXBsZTNfZXhwLCBsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfY3RyOiBncm91cCA9IHtpZDogTGV0RXhwKEN0ciksIGZvcm1zOiBbbGV0X2N0cl9leHAsIGxldF9iYXNlX2V4cF19O1xuXG5sZXQgbGV0c19hcDogZ3JvdXAgPSB7aWQ6IExldEV4cChBcCksIGZvcm1zOiBbbGV0X2FwX2V4cCwgbGV0X2Jhc2VfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGlzdF9leHA6IGZvcm0gPSB7XG4gIGxldCBpbnRfbGlzdCA9IHtcbiAgICBzdWJfaWQ6IExpc3QoSW50KSxcbiAgICB0ZXJtOiBta19leGFtcGxlKFwiWzEsIDJdXCIpLFxuICAgIG1lc3NhZ2U6IFwiQSBsaXN0IHdpdGggdHdvIGVsZW1lbnRzLCAxIGFuZCAyLlwiLFxuICB9O1xuICBsZXQgdHVwbGVfbGlzdCA9IHtcbiAgICBzdWJfaWQ6IExpc3QoVHVwbGUpLFxuICAgIHRlcm06IG1rX2V4YW1wbGUoXCJbKDEsIHRydWUpLCAoMiwgZmFsc2UpXVwiKSxcbiAgICBtZXNzYWdlOiBcIkEgbGlzdCB3aXRoIHR3byBlbGVtZW50cywgYSB0dXBsZSB3aXRoIDEgYW5kIHRydWUgYW5kIGEgdHVwbGUgd2l0aCAyIGFuZCBmYWxzZS5cIixcbiAgfTtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJMaXN0IGxpdGVyYWwgd2l0aCAlcyBlbGVtZW50KHMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIG1rX2xpc3RfZXhwKFtbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBzcGFjZSgpLCBleHAoXCIuLi5cIildXSksXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2xpc3QsIHR1cGxlX2xpc3RdLFxuICB9O1xufTtcblxubGV0IGNvbnMxX2V4ID0ge1xuICBzdWJfaWQ6IExpc3QoQ29uczEpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMTo6W11cIiksXG4gIG1lc3NhZ2U6IFwiQSBzaW5nbGUgZWxlbWVudCBsaXN0IG9mIDEuXCIsXG59O1xubGV0IGNvbnMyX2V4ID0ge1xuICBzdWJfaWQ6IExpc3QoQ29uczIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHJ1ZTo6ZmFsc2U6OltdXCIpLFxuICBtZXNzYWdlOiBcIkEgbGlzdCB3aXRoIHR3byBlbGVtZW50cywgdHJ1ZSBhbmQgZmFsc2UuXCIsXG59O1xubGV0IF9leHBfaGQgPSBleHAoXCJlX2hkXCIpO1xubGV0IF9leHBfdGwgPSBleHAoXCJlX3RsXCIpO1xubGV0IGNvbnNfZXhwX2NvbG9yaW5nX2lkcyA9ICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2hkKSwgaGRfaWQpLFxuICAoUGllY2UuaWQoX2V4cF90bCksIHRsX2lkKSxcbl07XG5sZXQgY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ3JlYXRlcyBhIGxpc3Qgd2l0aCBbKmhlYWQgZWxlbWVudCpdKCVzKSBhbmQgWyp0YWlsIGVsZW1lbnQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQ29uc0V4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfaGQsIGNvbnNfZXhwKCksIF9leHBfdGxdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25zMV9leCwgY29uczJfZXhdLFxuICB9O1xufTtcblxubGV0IF9leHBfeHMgPSBleHAoXCJ4c1wiKTtcbmxldCBfZXhwX3lzID0gZXhwKFwieXNcIik7XG5sZXQgY29uY2F0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eHNfaWQ6IElkLnQsIH55c19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX3hzKSwgeHNfaWQpLFxuICAoUGllY2UuaWQoX2V4cF95cyksIHlzX2lkKSxcbl07XG5sZXQgbGlzdF9jb25jYXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkNyZWF0ZXMgYSBsaXN0IGJ5IGNvbWJpbmluZyB0aGUgWypmaXJzdCBvcGVyYW5kKl0oJXMpIGFuZCB0aGUgWypzZWNvbmQgb3BlcmFuZCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBMaXN0Q29uY2F0RXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF94cywgc3BhY2UoKSwgbGlzdF9jb25jYXRfZXhwKCksIHNwYWNlKCksIF9leHBfeXNdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxpc3RsaXRzOiBncm91cCA9IHtpZDogTGlzdEV4cCwgZm9ybXM6IFtsaXN0X2V4cF19O1xuXG5sZXQgbGlzdGNvbnM6IGdyb3VwID0ge2lkOiBDb25zRXhwLCBmb3JtczogW2NvbnNfZXhwXX07XG5cbmxldCBsaXN0Y29uY2F0czogZ3JvdXAgPSB7aWQ6IExpc3RDb25jYXRFeHAsIGZvcm1zOiBbbGlzdF9jb25jYXRfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgbGlzdGxpdF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSBsaXN0cyB3aXRoICVzLWVsZW1lbnRzIHdoZXJlIGVhY2ggZWxlbWVudCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybiBtYXRjaCB0aGlzICpsaXN0IGxpdGVyYWwgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogTGlzdExpdFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBsaXN0bmlsX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIGVtcHR5IGxpc3RzIGBbXWAgbWF0Y2ggdGhlICplbXB0eSBsaXN0IGBbXWAgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogTGlzdE5pbFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIltdXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBjb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyA9XG4gICAgKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gIChQaWVjZS5pZChfcGF0X3RsKSwgdGxfaWQpLFxuXTtcbmxldCBjb25zX2Jhc2VfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm9uLWVtcHR5IGxpc3RzIHdpdGggKmhlYWQgZWxlbWVudCogbWF0Y2hpbmcgdGhlIFsqaGVhZCBlbGVtZW50IHBhdHRlcm4qXSglcykgYW5kICp0YWlsKiBsaXN0IG1hdGNoaW5nIHRoZSBbKnRhaWwgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzIG5vbi1lbXB0eSBsaXN0IHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogQ29uc1BhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfaGQsIGNvbnNfcGF0KCksIF9wYXRfdGxdLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXRfdGwpLCBbcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9wYXRfZnN0ID0gcGF0KFwicF9mc3RcIik7XG5sZXQgX3BhdF9zbmQgPSBwYXQoXCJwX3NuZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBjb25zMl9wYXRfY29sb3JpbmdfaWRzID1cbiAgICAofmZzdF9pZDogSWQudCwgfnNuZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfZnN0KSwgZnN0X2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfc25kKSwgc25kX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG5dO1xubGV0IGNvbnMyX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vbi1lbXB0eSBsaXN0cyB3aXRoICpmaXJzdCBlbGVtZW50KiBtYXRjaGluZyB0aGUgWypmaXJzdCBlbGVtZW50IHBhdHRlcm4qXSglcyksICpzZWNvbmQgZWxlbWVudCogbWF0Y2hpbmcgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kICp0YWlsKiBsaXN0IG1hdGNoaW5nIHRoZSBbKnRhaWwgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzIG5vbi1lbXB0eSBsaXN0IHBhdHRlcm4uXCI7XG4gIGxldCBjID0gY29uc19wYXQoKTtcbiAge1xuICAgIGlkOiBDb25zMlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfZnN0LCBjb25zX3BhdCgpLCBfcGF0X3NuZCwgYywgX3BhdF90bF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGMpLCBbcGF0KFwicF9zbmRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxpc3RsaXQ6IGdyb3VwID0ge2lkOiBMaXN0TGl0UGF0LCBmb3JtczogW2xpc3RsaXRfcGF0XX07XG5cbmxldCBsaXN0bmlsOiBncm91cCA9IHtpZDogTGlzdE5pbFBhdCwgZm9ybXM6IFtsaXN0bmlsX3BhdF19O1xuXG5sZXQgY29uczogZ3JvdXAgPSB7aWQ6IENvbnNQYXQsIGZvcm1zOiBbY29uc19iYXNlX3BhdF19O1xuXG5sZXQgY29uczI6IGdyb3VwID0ge2lkOiBDb25zMlBhdCwgZm9ybXM6IFtjb25zMl9wYXQsIGNvbnNfYmFzZV9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHlwX2VsZW0gPSB0eXAoXCJ0eV9lbGVtXCIpO1xuLy8gVE9ETyBTeW50YWN0aWMgZm9ybSBjb2xvcmluZyBsb29rcyBvZmYgZm9yIHRoaXMgb25lIGFuZCBvdGhlciB0eXBlcyBvbmVzLi4uXG5sZXQgbGlzdF90eXBfY29sb3JpbmdfaWRzID0gKH5lbGVtX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfZWxlbSksIGVsZW1faWQpLFxuXTtcbmxldCBsaXN0X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgbGlzdCB0eXBlIGNsYXNzaWZpZXMgbGlzdHMgd2l0aCBlbGVtZW50cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFsqZWxlbWVudCB0eXBlKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta19saXN0X3R5cChbW190eXBfZWxlbV1dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGlzdDogZ3JvdXAgPSB7aWQ6IExpc3RUeXAsIGZvcm1zOiBbbGlzdF90eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBpbnRfdW5hcnlfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogSW50VW5hcnlNaW51cyxcbiAgdGVybTogbWtfZXhhbXBsZShcIi0xXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxIGlzIG5lZ2F0ZWQuXCIsXG59O1xubGV0IGludF9wbHVzX2V4ID0ge1xuICBzdWJfaWQ6IEludChQbHVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgKyAyXCIpLFxuICBtZXNzYWdlOiBcIjEgYWRkZWQgdG8gMiBldmFsdXRlcyB0byAzLlwiLFxufTtcbmxldCBpbnRfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KE1pbnVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIgLSAxXCIpLFxuICBtZXNzYWdlOiBcIjIgbWludXMgMSBldmFsdXRlcyB0byAxLlwiLFxufTtcbmxldCBpbnRfdGltZXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KFRpbWVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgKiAyXCIpLFxuICBtZXNzYWdlOiBcIjEgbXVsdGlwbGllZCBiZSAyIGV2YWx1dGVzIHRvIDIuXCIsXG59O1xubGV0IGludF9wb3dlcl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoUG93ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMiAqKiA0XCIpLFxuICBtZXNzYWdlOiBcIjIgcmFpc2VkIHRvIDQgZXZhbHVhdGVzIHRvIDE2XCIsXG59O1xubGV0IGludF9kaXZpZGVfZXggPSB7XG4gIHN1Yl9pZDogSW50KERpdmlkZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI2IC8gM1wiKSxcbiAgbWVzc2FnZTogXCI2IGRpdmlkZWQgYnkgMyBldmFsdXRlcyB0byAyLlwiLFxufTtcbmxldCBpbnRfbHQxX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhblRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA8IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBsZXNzIHRoYW4gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2x0Ml9leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0IDwgM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGxlc3Mgbm90IGxlc3MgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9sdGUxX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkVxdWFsTGVzcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxIDw9IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBsZXNzIHRoYW4gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2x0ZTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0IDw9IDNcIiksXG4gIG1lc3NhZ2U6IFwiNCBpcyBsZXNzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfbHRlM19leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUgPD0gNVwiKSxcbiAgbWVzc2FnZTogXCI1IGlzIGVxdWFsIHRvIDUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZ3QxX2V4ID0ge1xuICBzdWJfaWQ6IEludChHcmVhdGVyVGhhbkZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPiAyXCIpLFxuICBtZXNzYWdlOiBcIjEgaXMgbm90IGdyZWF0ZXIgdGhhbiAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9ndDJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0ID4gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGdyZWF0ZXIgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2d0ZTFfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxID49IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2d0ZTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxHcmVhdGVyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPj0gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGdyZWF0ZXIgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2d0ZTNfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1ID49IDVcIiksXG4gIG1lc3NhZ2U6IFwiNSBpcyBlcXVhbCB0byA1LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2VxMV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxID09IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBkb2VzIG5vdCBlcXVhbCAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9lcTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEVxdWFsVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzID09IDNcIiksXG4gIG1lc3NhZ2U6IFwiMyBpcyBlcXVhbCB0byAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfcGx1c19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChQbHVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuICsuIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLiBhZGRlZCB0byAyLjEgZXZhbHV0ZXMgdG8gMy4xXCIsXG59O1xubGV0IGZsb2F0X21pbnVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KE1pbnVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIuIC0uIDEuMVwiKSxcbiAgbWVzc2FnZTogXCIyLiBtaW51cyAxLjEgZXZhbHV0ZXMgdG8gMC45XCIsXG59O1xubGV0IGZsb2F0X3RpbWVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KFRpbWVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuICouIDIuMlwiKSxcbiAgbWVzc2FnZTogXCIxIG11bHRpcGxpZWQgYmUgMi4yIGV2YWx1dGVzIHRvIDIuMi5cIixcbn07XG5sZXQgZmxvYXRfcG93ZXJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoUG93ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMi4gKiouIDQuXCIpLFxuICBtZXNzYWdlOiBcIjIuIHJhaXNlZCB0byA0LiBldmFsdWF0ZXMgdG8gMTYuXCIsXG59O1xubGV0IGZsb2F0X2RpdmlkZV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChEaXZpZGUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4yIC8uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCI0LjIgZGl2aWRlZCBieSAyLjEgZXZhbHV0ZXMgdG8gMi5cIixcbn07XG5sZXQgZmxvYXRfbHQxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA8LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4gaXMgbGVzcyB0aGFuIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfbHQyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPC4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjQuIGlzIGxlc3Mgbm90IGxlc3MgdGhhbiAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfbHRlMV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhbkVxdWFsTGVzcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA8PS4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuIGlzIGxlc3MgdGhhbiAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1dGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2x0ZTJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuIDw9LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgbGVzcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9sdGUzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1LjUgPD0uIDUuNVwiKSxcbiAgbWVzc2FnZTogXCI1LjUgaXMgZXF1YWwgdG8gNS41LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZ3QxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4xID4uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLjEgaXMgbm90IGdyZWF0ZXIgdGhhbiAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfZ3QyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LiA+LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgZ3JlYXRlciB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuMSA+PS4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuMSBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9ndGUyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRXF1YWxHcmVhdGVyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuID49LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgZ3JlYXRlciB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUuNSA+PS4gNS41XCIpLFxuICBtZXNzYWdlOiBcIjUuNSBpcyBlcXVhbCB0byA1LjUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9lcTFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA9PS4gMi5cIiksXG4gIG1lc3NhZ2U6IFwiMS4gZG9lcyBub3QgZXF1YWwgMi4sIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfZXEyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEVxdWFsVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzLjEgPT0uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCIzLjEgaXMgZXF1YWwgdG8gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgYm9vbF9hbmQxX2V4ID0ge1xuICBzdWJfaWQ6IEFuZEZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHJ1ZSAmJiBmYWxzZVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGlzIHRydWUsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBpcyBmYWxzZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBib29sX2FuZDJfZXggPSB7XG4gIHN1Yl9pZDogQW5kVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPCAyICYmIDMgPCA0XCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgZXZhbHVhdGVzIHRvIHRydWUsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBhbHNvIGV2YWx1dGVzIHRvIHRydWUsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBib29sX29yMV9leCA9IHtcbiAgc3ViX2lkOiBPckZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZmFsc2UgXFxcXC8gMiA8IDFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgb3BlcmFuZCBldmFsdWF0ZXMgdG8gZmFsc2UsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBhbHNvIGV2YWx1YXRlcyB0byBmYWxzZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBib29sX29yMl9leCA9IHtcbiAgc3ViX2lkOiBPclRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzIDwgNCBcXFxcLyBmYWxzZVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGV2YWx1dGVzIHRvIHRydWUsIHNvIHRoZSByaWdodCBvcGVyYW5kIGlzIG5vdCBldmFsdWF0ZWQuIFRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBzdHJfZXExX2V4ID0ge1xuICBzdWJfaWQ6IFN0cmluZ0VxdWFsRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJcXFwiYWJjXFxcIiAkPT0gXFxcInh5elxcXCJcIiksXG4gIG1lc3NhZ2U6IFwiXFxcImFiY1xcXCIgZG9lcyBub3QgZXF1YWwgXFxcInh5elxcXCIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgc3RyX2VxMl9leCA9IHtcbiAgc3ViX2lkOiBTdHJpbmdFcXVhbFRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJcXFwiYWJjXFxcIiAkPT0gXFxcImFiY1xcXCJcIiksXG4gIG1lc3NhZ2U6IFwiXFxcImFiY1xcXCIgaXMgZXF1YWwgdG8gXFxcImFiY1xcXCIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBfdW5vcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfZXhwX2lkOiBJZC50LCB+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKHNmX2V4cF9pZCwgZXhwX2lkKSxcbl07XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgYm9vbF91bmFyeV9ub3RfZXhwX2NvbG9yaW5nX2lkcyA9ICh+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF91bm9wX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2V4cCksIH5leHBfaWQpO1xubGV0IGJvb2xfdW5hcnlfbm90X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJQZXJmb3JtcyBib29sZWFuIG5lZ2F0aW9uIG9mIHRoZSBbKm9wZXJhbmQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogVW5PcEV4cChCb29sKE5vdCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdW5hcnlfbm90KCksIF9leHBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBpbnRfdW5hcnlfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9ICh+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF91bm9wX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2V4cCksIH5leHBfaWQpO1xubGV0IGludF91bmFyeV9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiUGVyZm9ybXMgaW50ZWdlciBuZWdhdGlvbiBvZiB0aGUgWypvcGVyYW5kKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IFVuT3BFeHAoSW50KE1pbnVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFt1bmFyeV9taW51cygpLCBfZXhwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3VuYXJ5X21pbnVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChzZl9sZWZ0X2lkOiBJZC50LCBzZl9yaWdodF9pZDogSWQudCwgfmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfbGVmdF9pZCwgbGVmdF9pZCksIChzZl9yaWdodF9pZCwgcmlnaHRfaWQpXTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9wbHVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9wbHVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgc3VtIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KFBsdXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBwbHVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3BsdXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X21pbnVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBtaW51cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9taW51c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X3RpbWVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcHJvZHVjdCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChUaW1lcykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHRpbWVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3RpbWVzX2V4XSxcbiAgfTtcbn07XG5sZXQgaW50X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9wb3dlcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHJlc3VsdCBvZiByYWlzaW5nIFsqbGVmdCpdKCVzKSBybyB0aGUgWypyaWdodCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoUG93ZXIpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBwb3dlcigpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9wb3dlcl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9kaXZpZGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBxdW90aWVudCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChEaXZpZGUpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBkaXZpZGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZGl2aWRlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9sdF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfbHRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGx0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2x0MV9leCwgaW50X2x0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9sdGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsdGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbHRlMV9leCwgaW50X2x0ZTJfZXgsIGludF9sdGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9ndF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZ3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGd0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2d0MV9leCwgaW50X2d0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZ3RlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9ndGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBndGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZ3RlMV9leCwgaW50X2d0ZTJfZXgsIGludF9ndGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZXExX2V4LCBpbnRfZXEyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9uZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X25lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIG5vdCBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChOb3RFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBub3RfZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfcGx1c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHN1bSBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBsdXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmcGx1cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3BsdXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbWludXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmbWludXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9taW51c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF90aW1lc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHByb2R1Y3Qgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChUaW1lcykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZ0aW1lcygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3RpbWVzX2V4XSxcbiAgfTtcbn07XG5sZXQgZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfcG93ZXJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSByZXN1bHQgb2YgcmFpc2luZyBbKmxlZnQqXSglcykgdG8gdGhlIFsqcmlnaHQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoUG93ZXIpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmcG93ZXIoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9wb3dlcl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZGl2aWRlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcXVvdGllbnQgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChEaXZpZGUpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZGl2aWRlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZGl2aWRlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2x0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2x0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbGVzcyB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChMZXNzVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZsdCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2x0MV9leCwgZmxvYXRfbHQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9sdGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZsdGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9sdGUxX2V4LCBmbG9hdF9sdGUyX2V4LCBmbG9hdF9sdGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2d0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2d0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZ3JlYXRlciB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChHcmVhdGVyVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZndCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2d0MV9leCwgZmxvYXRfZ3QyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2d0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9ndGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZndGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9ndGUxX2V4LCBmbG9hdF9ndGUyX2V4LCBmbG9hdF9ndGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2VxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZXExX2V4LCBmbG9hdF9lcTJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X25lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIG5vdCBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KE5vdEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZub3RfZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGJvb2xfYW5kX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGJvb2xfYW5kX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgZXZhbHVhdGUgdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKS4gSWYgdGhhdCBhbHNvIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoQm9vbChBbmQpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsb2dpY2FsX2FuZCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jvb2xfYW5kMV9leCwgYm9vbF9hbmQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG4vLyBUT0RPIFNvbWUgb2YgdGhlIGV4YW1wbGVzIGFyZSBldmFsdWF0aW5nIHdlaXJkbHkgYW5kIGNhbid0IHR5cGUgdGhlIHx8IGluIHRoZSBlZGl0b3JcbmxldCBib29sX29yX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZSB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLiBJZiB0aGF0IGV2YWx1YXRlcyB0byBgdHJ1ZWAsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoQm9vbChPcikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGxvZ2ljYWxfb3IoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtib29sX29yMV9leCwgYm9vbF9vcjJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc3RyX2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IHN0cl9lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoU3RyaW5nKEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHNlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzdHJfZXExX2V4LCBzdHJfZXEyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IHN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgc3RyX2NvbmNhdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiUmV0dXJucyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgYW5kIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoU3RyaW5nKENvbmNhdCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHNjb25jYXQoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGJvb2xfdW5fbm90OiBncm91cCA9IHtcbiAgaWQ6IFVuT3BFeHAoQm9vbChOb3QpKSxcbiAgZm9ybXM6IFtib29sX3VuYXJ5X25vdF9leHBdLFxufTtcblxubGV0IGludF91bl9taW51czogZ3JvdXAgPSB7XG4gIGlkOiBVbk9wRXhwKEludChNaW51cykpLFxuICBmb3JtczogW2ludF91bmFyeV9taW51c19leHBdLFxufTtcblxubGV0IGludF9wbHVzOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KFBsdXMpKSwgZm9ybXM6IFtpbnRfcGx1c19leHBdfTtcblxubGV0IGludF9taW51czogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChNaW51cykpLCBmb3JtczogW2ludF9taW51c19leHBdfTtcblxubGV0IGludF90aW1lczogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChUaW1lcykpLCBmb3JtczogW2ludF90aW1lc19leHBdfTtcblxubGV0IGludF9wb3dlcjogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChQb3dlcikpLCBmb3JtczogW2ludF9wb3dlcl9leHBdfTtcblxubGV0IGludF9kaXZpZGU6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KERpdmlkZSkpLFxuICBmb3JtczogW2ludF9kaXZpZGVfZXhwXSxcbn07XG5cbmxldCBpbnRfbGVzc190aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbikpLFxuICBmb3JtczogW2ludF9sdF9leHBdLFxufTtcblxubGV0IGludF9sZXNzX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2ludF9sdGVfZXhwXSxcbn07XG5cbmxldCBpbnRfZ3JlYXRlcl90aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbikpLFxuICBmb3JtczogW2ludF9ndF9leHBdLFxufTtcblxubGV0IGludF9ncmVhdGVyX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2ludF9ndGVfZXhwXSxcbn07XG5cbmxldCBpbnRfZXF1YWw6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoRXF1YWxzKSksIGZvcm1zOiBbaW50X2VxX2V4cF19O1xuXG5sZXQgaW50X25vdF9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoTm90RXF1YWxzKSksXG4gIGZvcm1zOiBbaW50X25lcV9leHBdLFxufTtcblxubGV0IGZsb2F0X3BsdXM6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoUGx1cykpLFxuICBmb3JtczogW2Zsb2F0X3BsdXNfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9taW51czogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChNaW51cykpLFxuICBmb3JtczogW2Zsb2F0X21pbnVzX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfdGltZXM6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoVGltZXMpKSxcbiAgZm9ybXM6IFtmbG9hdF90aW1lc19leHBdLFxufTtcblxubGV0IGZsb2F0X3Bvd2VyOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBvd2VyKSksXG4gIGZvcm1zOiBbZmxvYXRfcG93ZXJfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9kaXZpZGU6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoRGl2aWRlKSksXG4gIGZvcm1zOiBbZmxvYXRfZGl2aWRlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfbGVzc190aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuKSksXG4gIGZvcm1zOiBbZmxvYXRfbHRfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9sZXNzX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbZmxvYXRfbHRlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZ3JlYXRlcl90aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuKSksXG4gIGZvcm1zOiBbZmxvYXRfZ3RfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ncmVhdGVyX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbZmxvYXRfZ3RlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoRXF1YWxzKSksXG4gIGZvcm1zOiBbZmxvYXRfZXFfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ub3RfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTm90RXF1YWxzKSksXG4gIGZvcm1zOiBbZmxvYXRfbmVxX2V4cF0sXG59O1xuXG5sZXQgYm9vbF9hbmQ6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChCb29sKEFuZCkpLCBmb3JtczogW2Jvb2xfYW5kX2V4cF19O1xuXG5sZXQgYm9vbF9vcjogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEJvb2woT3IpKSwgZm9ybXM6IFtib29sX29yX2V4cF19O1xuXG5sZXQgc3RyaW5nX2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKFN0cmluZyhFcXVhbHMpKSxcbiAgZm9ybXM6IFtzdHJfZXFfZXhwXSxcbn07XG5cbmxldCBzdHJpbmdfY29uY2F0OiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKFN0cmluZyhDb25jYXQpKSxcbiAgZm9ybXM6IFtzdHJfY29uY2F0X2V4cF0sXG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gSGF6M2xjb3JlO1xuXG4vKiBJZiB5b3UgYXJlIGFkZGluZyBkb2NzIGhlcmUgZm9yIG5ldyBzeW50YXgsIHNlZSBQaXBlbGluZUV4cC5yZVxuICogd2hpY2ggZG9jdW1lbnRzIHRoZSBzaW1wbGVzdCB3YXkgdG8gYWRkIGEgbmV3IGZvcm0uICovXG5cbmxldCBmZWVkYmFja192aWV3ID0gKG1lc3NhZ2UsIHVwX2FjdGl2ZSwgdXBfYWN0aW9uLCBkb3duX2FjdGl2ZSwgZG93bl9hY3Rpb24pID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiZmVlZGJhY2tcIl0pLFxuICAgIFtcbiAgICAgIGRpdih+YXR0cj1jbHNzKFtcIm1lc3NhZ2VcIl0pLCBbdGV4dChtZXNzYWdlKV0pLFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgY2xzcyhbXCJvcHRpb25cIl0gQCAodXBfYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgICAgIEF0dHIub25fY2xpY2sodXBfYWN0aW9uKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW3RleHQoXCLwn5GNXCIpXSxcbiAgICAgICksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBjbHNzKFtcIm9wdGlvblwiXSBAIChkb3duX2FjdGl2ZSA/IFtcImFjdGl2ZVwiXSA6IFtdKSksXG4gICAgICAgICAgICBBdHRyLm9uX2NsaWNrKGRvd25fYWN0aW9uKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW3RleHQoXCLwn5GOXCIpXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBleHBsYW5hdGlvbl9mZWVkYmFja192aWV3ID0gKH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBtb2RlbCkgPT4ge1xuICBsZXQgKHVwX2FjdGl2ZSwgZG93bl9hY3RpdmUpID1cbiAgICBzd2l0Y2ggKFxuICAgICAgRXhwbGFpblRoaXNNb2RlbC5nZXRfZXhwbGFuYXRpb25fZmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIG1vZGVsKVxuICAgICkge1xuICAgIHwgU29tZShUaHVtYnNVcCkgPT4gKHRydWUsIGZhbHNlKVxuICAgIHwgU29tZShUaHVtYnNEb3duKSA9PiAoZmFsc2UsIHRydWUpXG4gICAgfCBOb25lID0+IChmYWxzZSwgZmFsc2UpXG4gICAgfTtcbiAgZmVlZGJhY2tfdmlldyhcbiAgICBcIlRoaXMgZXhwbGFuYXRpb24gaXMgaGVscGZ1bFwiLFxuICAgIHVwX2FjdGl2ZSxcbiAgICBfID0+XG4gICAgICBpbmplY3QoXG4gICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgIFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIFRodW1ic1VwKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgZG93bl9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeHBsYW5hdGlvbkZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBUaHVtYnNEb3duKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICk7XG59O1xuXG5sZXQgZXhhbXBsZV9mZWVkYmFja192aWV3ID0gKH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBtb2RlbCkgPT4ge1xuICBsZXQgKHVwX2FjdGl2ZSwgZG93bl9hY3RpdmUpID1cbiAgICBzd2l0Y2ggKFxuICAgICAgRXhwbGFpblRoaXNNb2RlbC5nZXRfZXhhbXBsZV9mZWVkYmFjayhcbiAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgIGZvcm1faWQsXG4gICAgICAgIGV4YW1wbGVfaWQsXG4gICAgICAgIG1vZGVsLFxuICAgICAgKVxuICAgICkge1xuICAgIHwgU29tZShUaHVtYnNVcCkgPT4gKHRydWUsIGZhbHNlKVxuICAgIHwgU29tZShUaHVtYnNEb3duKSA9PiAoZmFsc2UsIHRydWUpXG4gICAgfCBOb25lID0+IChmYWxzZSwgZmFsc2UpXG4gICAgfTtcbiAgZmVlZGJhY2tfdmlldyhcbiAgICBcIlRoaXMgZXhhbXBsZSBpcyBoZWxwZnVsXCIsXG4gICAgdXBfYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBUaHVtYnNVcCksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIGRvd25fYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBUaHVtYnNEb3duKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICk7XG59O1xuXG5sZXQgY29kZV9ub2RlID0gdGV4dCA9PiBOb2RlLnNwYW4ofmF0dHI9Y2xzcyhbXCJjb2RlXCJdKSwgW05vZGUudGV4dCh0ZXh0KV0pO1xuXG5sZXQgaGlnaGxpZ2h0ID1cbiAgICAofmluamVjdCwgbXNnOiBsaXN0KE5vZGUudCksIGlkOiBJZC50LCBtYXBwaW5nOiBDb2xvclN0ZXBzLnQpXG4gICAgOiAoTm9kZS50LCBDb2xvclN0ZXBzLnQpID0+IHtcbiAgbGV0IChjLCBtYXBwaW5nKSA9IENvbG9yU3RlcHMuZ2V0X2NvbG9yKGlkLCBtYXBwaW5nKTtcbiAgbGV0IGNsYXNzZXMgPSBjbHNzKFtcImhpZ2hsaWdodC1cIiArKyBjLCBcImNsaWNrYWJsZVwiXSk7XG4gIGxldCBhdHRyID1cbiAgICBzd2l0Y2ggKGluamVjdCkge1xuICAgIHwgU29tZShpbmplY3QpID0+XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbGFzc2VzLFxuICAgICAgICBBdHRyLm9uX21vdXNlZW50ZXIoXyA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KEV4cGxhaW5UaGlzKFNldEhpZ2hsaWdodChIb3ZlcihpZCkpKSkpXG4gICAgICAgICksXG4gICAgICAgIEF0dHIub25fbW91c2VsZWF2ZShfID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5TZXQoRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KFVuc2V0SG92ZXIpKSkpXG4gICAgICAgICksXG4gICAgICAgIEF0dHIub25fY2xpY2soXyA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihTZWxlY3QoVGVybShJZChpZCwgTGVmdCkpKSkpXG4gICAgICAgICksXG4gICAgICBdKVxuICAgIHwgTm9uZSA9PiBjbGFzc2VzXG4gICAgfTtcbiAgKE5vZGUuc3Bhbih+YXR0ciwgbXNnKSwgbWFwcGluZyk7XG59O1xuXG4vKlxuIE1hcmtkb3duIGxpa2UgdGhpbmc6XG4gaGlnaGxpZ2h0eSB0aGluZyA6IFt0aGluZyB0byBoaWdobGlnaHRdKGlkKVxuIGJ1bGxldGVkIGxpc3Q6IC0gbGlzdCBpdGVtXG4gICAgICAgICAgICAgICAgLSBsaXN0IGl0ZW1cbiBjb2RlOiBgY29kZWBcbiBpdGFsaWNzOiAqd29yZCpcbiAqL1xubGV0IG1rX3RyYW5zbGF0aW9uID0gKH5pbmplY3QsIHRleHQ6IHN0cmluZyk6IChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCkgPT4ge1xuICBsZXQgb21kID0gT21kLm9mX3N0cmluZyh0ZXh0KTtcbiAgLy9wcmludF9tYXJrZG93bihvbWQpO1xuICBsZXQgcmVjIHRyYW5zbGF0ZSA9XG4gICAgICAgICAgKGRvYzogT21kLnQsIG1hcHBpbmc6IENvbG9yU3RlcHMudCk6IChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICgobXNnLCBtYXBwaW5nKSwgZWxlbSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGVsZW0pIHtcbiAgICAgICAgfCBPbWQuUGFyYWdyYXBoKGQpID0+IHRyYW5zbGF0ZShkLCBtYXBwaW5nKVxuICAgICAgICB8IFRleHQodCkgPT4gKExpc3QuYXBwZW5kKG1zZywgW05vZGUudGV4dCh0KV0pLCBtYXBwaW5nKVxuICAgICAgICB8IFVsKGl0ZW1zKSA9PlxuICAgICAgICAgIGxldCAoYnVsbGV0cywgbWFwcGluZykgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICgobm9kZXMsIG1hcHBpbmcpLCBkKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IChuLCBtYXBwaW5nKSA9IHRyYW5zbGF0ZShkLCBtYXBwaW5nKTtcbiAgICAgICAgICAgICAgICAoTGlzdC5hcHBlbmQobm9kZXMsIFtOb2RlLmxpKG4pXSksIG1hcHBpbmcpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAoW10sIG1hcHBpbmcpLFxuICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgKExpc3QuYXBwZW5kKG1zZywgW05vZGUudWwoYnVsbGV0cyldKSwgbWFwcGluZyk7IC8qIFRPRE8gSGFubmFoIC0gU2hvdWxkIHRoaXMgYmUgYW4gb3JkZXJlZCBsaXN0IGluc3RlYWQgb2YgYW4gdW5vcmRlcmVkIGxpc3Q/ICovXG4gICAgICAgIHwgQ29kZShfbmFtZSwgdCkgPT4gKExpc3QuYXBwZW5kKG1zZywgW2NvZGVfbm9kZSh0KV0pLCBtYXBwaW5nKVxuICAgICAgICB8IFVybChpZCwgZCwgX3RpdGxlKSA9PlxuICAgICAgICAgIGxldCAoZCwgbWFwcGluZykgPSB0cmFuc2xhdGUoZCwgbWFwcGluZyk7XG4gICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgIHN3aXRjaCAoSWQub2Zfc3RyaW5nKGlkKSkge1xuICAgICAgICAgICAgfCBTb21lKGlkKSA9PiBpZFxuICAgICAgICAgICAgfCBOb25lID0+IElkLmludmFsaWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IChpbm5lcl9tc2csIG1hcHBpbmcpID0gaGlnaGxpZ2h0KH5pbmplY3QsIGQsIGlkLCBtYXBwaW5nKTtcbiAgICAgICAgICAoTGlzdC5hcHBlbmQobXNnLCBbaW5uZXJfbXNnXSksIG1hcHBpbmcpO1xuICAgICAgICB8IEVtcGgoZCkgPT5cbiAgICAgICAgICBsZXQgKGQsIG1hcHBpbmcpID0gdHJhbnNsYXRlKGQsIG1hcHBpbmcpO1xuICAgICAgICAgIChcbiAgICAgICAgICAgIExpc3QuYXBwZW5kKFxuICAgICAgICAgICAgICBtc2csXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgQXR0ci5zdHlsZShcbiAgICAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLmNyZWF0ZSh+ZmllbGQ9XCJmb250LXN0eWxlXCIsIH52YWx1ZT1cIml0YWxpY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXBwaW5nLFxuICAgICAgICAgICk7XG4gICAgICAgIHwgXyA9PiAobXNnLCBtYXBwaW5nKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKFtdLCBtYXBwaW5nKSxcbiAgICAgIGRvYyxcbiAgICApO1xuICB0cmFuc2xhdGUob21kLCBDb2xvclN0ZXBzLmVtcHR5KTtcbn07XG5cbmxldCBta19leHBsYW5hdGlvbiA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIGdyb3VwX2lkLFxuICAgICAgZm9ybV9pZCxcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgIG1vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgKVxuICAgIDogKE5vZGUudCwgQ29sb3JTdGVwcy50KSA9PiB7XG4gIGxldCAobXNnLCBjb2xvcl9tYXApID0gbWtfdHJhbnNsYXRpb24ofmluamVjdD1Tb21lKGluamVjdCksIHRleHQpO1xuICBsZXQgZmVlZGJhY2sgPVxuICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3dfZmVlZGJhY2tcbiAgICAgID8gW2V4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZpZXcofmluamVjdCwgZ3JvdXBfaWQsIGZvcm1faWQsIG1vZGVsKV0gOiBbXTtcbiAgKFxuICAgIGRpdihbZGl2KH5hdHRyPWNsc3MoW1wiZXhwbGFuYXRpb24tY29udGVudHNcIl0pLCBtc2cpXSBAIGZlZWRiYWNrKSxcbiAgICBjb2xvcl9tYXAsXG4gICk7XG59O1xuXG5sZXQgZXhwYW5kZXJfZGVjbyA9XG4gICAgKFxuICAgICAgfmRvY3M6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUgYXMge2ZvbnRfbWV0cmljcywgX306IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgfm9wdGlvbnM6IGxpc3QoKEV4cGxhaW5UaGlzRm9ybS5mb3JtX2lkLCBTZWdtZW50LnQpKSxcbiAgICAgIH5ncm91cDogRXhwbGFpblRoaXNGb3JtLmdyb3VwLFxuICAgICAgfmRvYzogRXhwbGFpblRoaXNGb3JtLmZvcm0sXG4gICAgKSA9PiB7XG4gIG1vZHVsZSBEZWNvID1cbiAgICBEZWNvLkRlY28oe1xuICAgICAgbGV0IGZvbnRfbWV0cmljcyA9IGZvbnRfbWV0cmljcztcbiAgICAgIGxldCBtYXAgPSBNZWFzdXJlZC5vZl9zZWdtZW50KGRvYy5zeW50YWN0aWNfZm9ybSk7XG4gICAgICBsZXQgc2hvd19iYWNrcGFja190YXJnZXRzID0gZmFsc2U7XG4gICAgICBsZXQgKF90ZXJtLCB0ZXJtcykgPSBNYWtlVGVybS5nbyhkb2Muc3ludGFjdGljX2Zvcm0pO1xuICAgICAgbGV0IHRlcm1fcmFuZ2VzID0gVGVybVJhbmdlcy5tayhkb2Muc3ludGFjdGljX2Zvcm0pO1xuICAgICAgbGV0IHRpbGVzID0gVGlsZU1hcC5tayhkb2Muc3ludGFjdGljX2Zvcm0pO1xuICAgICAgbGV0IGVycm9yX2lkcyA9IFtdO1xuICAgIH0pO1xuICBzd2l0Y2ggKGRvYy5leHBhbmRhYmxlX2lkLCBMaXN0Lmxlbmd0aChvcHRpb25zKSkge1xuICB8IChOb25lLCBfKVxuICB8IChfLCAwIHwgMSkgPT4gZGl2KFtdKVxuICB8IChTb21lKChleHBhbmRhYmxlLCBfKSksIF8pID0+XG4gICAgRGVjby50ZXJtX2RlY29yYXRpb24oXG4gICAgICB+aWQ9ZXhwYW5kYWJsZSxcbiAgICAgICgob3JpZ2luLCBfLCBwYXRoKSkgPT4ge1xuICAgICAgICBsZXQgc3BlY2lmaWNpdHlfcG9zID1cbiAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyB0b3A6ICVmcHg7XCIsXG4gICAgICAgICAgICBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBzcGVjaWZpY2l0eV9zdHlsZSA9XG4gICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgICBzcGVjaWZpY2l0eV9wb3NcbiAgICAgICAgICAgICsrIChkb2NzLnNwZWNpZmljaXR5X29wZW4gPyBcInRyYW5zZm9ybTogc2NhbGVZKDEpO1wiIDogXCJcIiksXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZ2V0X2Nsc3MgPSBzZWdtZW50ID0+XG4gICAgICAgICAgc3dpdGNoIChMaXN0Lm50aChzZWdtZW50LCAwKSkge1xuICAgICAgICAgIHwgQmFzZS5UaWxlKHttb2xkLCBffSkgPT4gW1xuICAgICAgICAgICAgICBcImNpLWhlYWRlci1cIiArKyBTb3J0LnRvX3N0cmluZyhtb2xkLm91dCkgLy8gVE9ETyB0aGUgYnJvd24gb24gYnJvd24gaXNuJ3QgdGhlIGdyZWF0ZXN0Li4uIGJ1dCBva2F5XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfCBfID0+IFtdXG4gICAgICAgICAgfTtcblxuICAgICAgICBsZXQgc3BlY2lmaWNpdHlfbWVudSA9XG4gICAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICBjbHNzKFtcInNwZWNpZmljaXR5LW9wdGlvbnMtbWVudVwiLCBcImV4cGFuZGFibGVcIl0pLFxuICAgICAgICAgICAgICAgIHNwZWNpZmljaXR5X3N0eWxlLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICAoKGlkOiBFeHBsYWluVGhpc0Zvcm0uZm9ybV9pZCwgc2VnbWVudDogU2VnbWVudC50KSk6IE5vZGUudCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG1hcCA9IE1lYXN1cmVkLm9mX3NlZ21lbnQoc2VnbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvZGVfdmlldyA9XG4gICAgICAgICAgICAgICAgICBDb2RlLnNpbXBsZV92aWV3KFxuICAgICAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgICAgICB+dW5zZWxlY3RlZD1zZWdtZW50LFxuICAgICAgICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjbGFzc2VzID1cbiAgICAgICAgICAgICAgICAgIGlkID09IGRvYy5pZFxuICAgICAgICAgICAgICAgICAgICA/IFtcInNlbGVjdGVkXCJdIEAgZ2V0X2Nsc3Moc2VnbWVudCkgOiBnZXRfY2xzcyhzZWdtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlX2dyb3VwX3NlbGVjdGlvbiA9IF8gPT5cbiAgICAgICAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuVXBkYXRlR3JvdXBTZWxlY3Rpb24oZ3JvdXAuaWQsIGlkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICBjbHNzKGNsYXNzZXMpLFxuICAgICAgICAgICAgICAgICAgICAgIEF0dHIub25fY2xpY2sodXBkYXRlX2dyb3VwX3NlbGVjdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgW2NvZGVfdmlld10sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZXhwYW5kX2Fycm93X3N0eWxlID0gQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBzcGVjaWZpY2l0eV9wb3MpO1xuICAgICAgICBsZXQgZXhwYW5kX2Fycm93ID1cbiAgICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJhcnJvd1wiXSksIGV4cGFuZF9hcnJvd19zdHlsZV0pLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZXhwYW5kYWJsZV9kZWNvID1cbiAgICAgICAgICBEZWNVdGlsLmNvZGVfc3ZnKFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgIH5vcmlnaW4sXG4gICAgICAgICAgICB+YmFzZV9jbHM9W1wiZXhwYW5kYWJsZVwiXSxcbiAgICAgICAgICAgIH5hYnNfcG9zPWZhbHNlLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICApO1xuXG4gICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgY2xzcyhbXCJleHBhbmRhYmxlLXRhcmdldFwiXSksXG4gICAgICAgICAgICAgIERlY1V0aWwuYWJzX3Bvc2l0aW9uKH5mb250X21ldHJpY3MsIG9yaWdpbiksXG4gICAgICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PiB7XG4gICAgICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgIEV4cGxhaW5UaGlzVXBkYXRlLlNwZWNpZmljaXR5T3BlbighZG9jcy5zcGVjaWZpY2l0eV9vcGVuKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIFtleHBhbmRhYmxlX2RlY28sIHNwZWNpZmljaXR5X21lbnVdXG4gICAgICAgICAgQCAoZG9jcy5zcGVjaWZpY2l0eV9vcGVuID8gW10gOiBbZXhwYW5kX2Fycm93XSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBleGFtcGxlX3ZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+Z3JvdXBfaWQsXG4gICAgICB+Zm9ybV9pZCxcbiAgICAgIH5leGFtcGxlczogbGlzdChFeHBsYWluVGhpc0Zvcm0uZXhhbXBsZSksXG4gICAgICB+bW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICApID0+IHtcbiAgZXhhbXBsZXMgPT0gW11cbiAgICA/IFtdXG4gICAgOiBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuaWQoXCJleGFtcGxlc1wiKSxcbiAgICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAgIChpZHgsIHt0ZXJtLCBtZXNzYWdlLCBzdWJfaWQsIF99OiBFeHBsYWluVGhpc0Zvcm0uZXhhbXBsZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGZlZWRiYWNrID1cbiAgICAgICAgICAgICAgc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvd19mZWVkYmFja1xuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgZXhhbXBsZV9mZWVkYmFja192aWV3KFxuICAgICAgICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgICAgICAgICAgICAgc3ViX2lkLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgIH5hdHRyPWNsc3MoW1wiZXhhbXBsZVwiXSksXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBDZWxsLmxvY2tlZChcbiAgICAgICAgICAgICAgICAgIH5zZWdtZW50PXRlcm0sXG4gICAgICAgICAgICAgICAgICB+dGFyZ2V0X2lkPVwiZXhhbXBsZVwiICsrIHN0cmluZ19vZl9pbnQoaWR4KSxcbiAgICAgICAgICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgICB+YXR0cj1jbHNzKFtcImV4cGxhbmF0aW9uXCJdKSxcbiAgICAgICAgICAgICAgICAgIFt0ZXh0KG1lc3NhZ2UpXSBAIGZlZWRiYWNrLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXMsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF07XG59O1xuXG5sZXQgcmVjIGJ5cGFzc19wYXJlbnNfYW5kX2Fubm90X3BhdCA9IChwYXQ6IFRlcm1CYXNlLlVQYXQudCkgPT4ge1xuICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gIHwgUGFyZW5zKHApXG4gIHwgVHlwZUFubihwLCBfKSA9PiBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQocClcbiAgfCBfID0+IHBhdFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX3BhdCA9IChwYXQ6IFRlcm1CYXNlLlVQYXQudCkgPT4ge1xuICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gIHwgUGFyZW5zKHApID0+IGJ5cGFzc19wYXJlbnNfcGF0KHApXG4gIHwgXyA9PiBwYXRcbiAgfTtcbn07XG5cbmxldCByZWMgYnlwYXNzX3BhcmVuc19leHAgPSAoZXhwOiBUZXJtQmFzZS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoIChleHAudGVybSkge1xuICB8IFBhcmVucyhlKSA9PiBieXBhc3NfcGFyZW5zX2V4cChlKVxuICB8IF8gPT4gZXhwXG4gIH07XG59O1xuXG5sZXQgcmVjIGJ5cGFzc19wYXJlbnNfdHlwID0gKHR5cDogVGVybUJhc2UuVVR5cC50KSA9PiB7XG4gIHN3aXRjaCAodHlwLnRlcm0pIHtcbiAgfCBQYXJlbnModCkgPT4gYnlwYXNzX3BhcmVuc190eXAodClcbiAgfCBfID0+IHR5cFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtZXNzYWdlX21vZGUgPVxuICB8IE1lc3NhZ2VDb250ZW50KFxuICAgICAgVXBkYXRlQWN0aW9uLnQgPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QudCh1bml0KSxcbiAgICAgIE1vZGVsLnVpX3N0YXRlLFxuICAgICAgU2V0dGluZ3MudCxcbiAgICApXG4gIHwgQ29sb3JpbmdzO1xuXG5sZXQgZ2V0X2RvYyA9XG4gICAgKFxuICAgICAgfmRvY3M6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICAgIGluZm86IG9wdGlvbihTdGF0aWNzLkluZm8udCksXG4gICAgICBtb2RlOiBtZXNzYWdlX21vZGUsXG4gICAgKVxuICAgIDogKGxpc3QoTm9kZS50KSwgKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSwgbGlzdChOb2RlLnQpKSA9PiB7XG4gIGxldCBzaW1wbGUgPSBtc2cgPT4gKFtdLCAoW3RleHQobXNnKV0sIChJZC5NYXAuZW1wdHksIDApKSwgW10pO1xuICBsZXQgZGVmYXVsdCA9IHNpbXBsZShcIk5vIGRvY3MgYXZhaWxhYmxlXCIpO1xuICBsZXQgZ2V0X3NwZWNpZmljaXR5X2xldmVsID0gZ3JvdXBfaWQgPT5cbiAgICBmc3QoRXhwbGFpblRoaXNNb2RlbC5nZXRfZm9ybV9hbmRfb3B0aW9ucyhncm91cF9pZCwgZG9jcykpLmlkO1xuICBsZXQgZ2V0X21lc3NhZ2UgPVxuICAgICAgKFxuICAgICAgICB+Y29sb3JpbmdzPVtdLFxuICAgICAgICB+Zm9ybWF0OiBvcHRpb24oc3RyaW5nID0+IHN0cmluZyk9Tm9uZSxcbiAgICAgICAgfmV4cGxhbmF0aW9uOiBvcHRpb24oc3RyaW5nKT0/LFxuICAgICAgICBncm91cDogRXhwbGFpblRoaXNGb3JtLmdyb3VwLFxuICAgICAgKVxuICAgICAgOiAobGlzdChOb2RlLnQpLCAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpLCBsaXN0KE5vZGUudCkpID0+IHtcbiAgICBsZXQgKGRvYywgb3B0aW9ucykgPSBFeHBsYWluVGhpc01vZGVsLmdldF9mb3JtX2FuZF9vcHRpb25zKGdyb3VwLCBkb2NzKTtcblxuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMxOTk4NDA4L29jYW1sLWNvbnZlcnRpbmctc3RyaW5ncy10by1hLXVuaXQtc3RyaW5nLWZvcm1hdFxuICAgIGxldCBleHBsYW5hdGlvbl9tc2cgPVxuICAgICAgc3dpdGNoIChleHBsYW5hdGlvbiwgZm9ybWF0KSB7XG4gICAgICB8IChTb21lKG1zZyksIF8pID0+IG1zZ1xuICAgICAgfCAoXywgU29tZShmKSkgPT4gZihkb2MuZXhwbGFuYXRpb24pXG4gICAgICB8IChfLCBOb25lKSA9PiBkb2MuZXhwbGFuYXRpb25cbiAgICAgIH07XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgfCBNZXNzYWdlQ29udGVudChpbmplY3QsIHVpX3N0YXRlLCBzZXR0aW5ncykgPT5cbiAgICAgIGxldCAoZXhwbGFuYXRpb24sIGNvbG9yX21hcCkgPVxuICAgICAgICBta19leHBsYW5hdGlvbihcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICBncm91cC5pZCxcbiAgICAgICAgICBkb2MuaWQsXG4gICAgICAgICAgZXhwbGFuYXRpb25fbXNnLFxuICAgICAgICAgIGRvY3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgc29ydCA9XG4gICAgICAgIHN3aXRjaCAoaW5mbykge1xuICAgICAgICB8IE5vbmUgPT4gU29ydC5BbnlcbiAgICAgICAgfCBTb21lKGNpKSA9PiBJbmZvLnNvcnRfb2YoY2kpXG4gICAgICAgIH07XG4gICAgICBsZXQgaGlnaGxpZ2h0cyA9XG4gICAgICAgIGNvbG9yaW5nc1xuICAgICAgICB8PiBMaXN0Lm1hcCgoKHN5bnRhY3RpY19mb3JtX2lkOiBJZC50LCBjb2RlX2lkOiBJZC50KSkgPT4ge1xuICAgICAgICAgICAgIGxldCAoY29sb3IsIF8pID0gQ29sb3JTdGVwcy5nZXRfY29sb3IoY29kZV9pZCwgY29sb3JfbWFwKTtcbiAgICAgICAgICAgICAoc3ludGFjdGljX2Zvcm1faWQsIGNvbG9yKTtcbiAgICAgICAgICAgfSlcbiAgICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgICAgfD4gSWQuTWFwLm9mX3NlcVxuICAgICAgICB8PiBPcHRpb24uc29tZTtcbiAgICAgIGxldCBleHBhbmRlcl9kZWNvID1cbiAgICAgICAgZXhwYW5kZXJfZGVjbyhcbiAgICAgICAgICB+ZG9jcyxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfm9wdGlvbnMsXG4gICAgICAgICAgfmdyb3VwLFxuICAgICAgICAgIH5kb2MsXG4gICAgICAgICk7XG4gICAgICBsZXQgc3ludGFjdGljX2Zvcm1fdmlldyA9XG4gICAgICAgIENlbGwubG9ja2VkX25vX3N0YXRpY3MoXG4gICAgICAgICAgfnRhcmdldF9pZD1cImV4cGxhaW5UaGlzU3ludGFjdGljRm9ybVwiLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5zZWdtZW50PWRvYy5zeW50YWN0aWNfZm9ybSxcbiAgICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfnNvcnQsXG4gICAgICAgICAgfmV4cGFuZGVyX2RlY28sXG4gICAgICAgICk7XG4gICAgICBsZXQgZXhhbXBsZV92aWV3ID1cbiAgICAgICAgZXhhbXBsZV92aWV3KFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+Z3JvdXBfaWQ9Z3JvdXAuaWQsXG4gICAgICAgICAgfmZvcm1faWQ9ZG9jLmlkLFxuICAgICAgICAgIH5leGFtcGxlcz1kb2MuZXhhbXBsZXMsXG4gICAgICAgICAgfm1vZGVsPWRvY3MsXG4gICAgICAgICk7XG4gICAgICAoc3ludGFjdGljX2Zvcm1fdmlldywgKFtleHBsYW5hdGlvbl0sIGNvbG9yX21hcCksIGV4YW1wbGVfdmlldyk7XG4gICAgfCBDb2xvcmluZ3MgPT5cbiAgICAgIGxldCAoXywgY29sb3JfbWFwKSA9IG1rX3RyYW5zbGF0aW9uKH5pbmplY3Q9Tm9uZSwgZXhwbGFuYXRpb25fbXNnKTtcbiAgICAgIChbXSwgKFtdLCBjb2xvcl9tYXApLCBbXSk7XG4gICAgfTtcbiAgfTtcblxuICAvKiBVc2UgdGhpcyB3aGVuIGFkZGluZyBuZXcgZW50cmllcyAqL1xuICBsZXQgbWVzc2FnZV9zaW5nbGUgPSAoZTogRXhwbGFpblRoaXNGb3JtLlNpbXBsZS50KSA9PiB7XG4gICAgbGV0IChleHBsYW5hdGlvbiwgY29sb3JpbmdzLCBncm91cCkgPSBFeHBsYWluVGhpc0Zvcm0uU2ltcGxlLnRvX2dyb3VwKGUpO1xuICAgIGdldF9tZXNzYWdlKH5jb2xvcmluZ3MsIH5mb3JtYXQ9Tm9uZSwgfmV4cGxhbmF0aW9uLCBncm91cCk7XG4gIH07XG5cbiAgc3dpdGNoIChpbmZvKSB7XG4gIHwgU29tZShJbmZvRXhwKHt0ZXJtLCBffSkpID0+XG4gICAgbGV0IHJlYyBnZXRfbWVzc2FnZV9leHAgPVxuICAgICAgICAgICAgKHRlcm0pXG4gICAgICAgICAgICA6IChsaXN0KE5vZGUudCksIChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCksIGxpc3QoTm9kZS50KSkgPT5cbiAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgfCBUZXJtQmFzZS5VRXhwLkludmFsaWQoXykgPT4gc2ltcGxlKFwiTm90IGEgdmFsaWQgZXhwcmVzc2lvblwiKVxuICAgICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZUV4cC5lbXB0eV9ob2xlX2V4cHMpXG4gICAgICB8IE11bHRpSG9sZShfY2hpbGRyZW4pID0+IGdldF9tZXNzYWdlKEhvbGVFeHAubXVsdGlfaG9sZV9leHBzKVxuICAgICAgfCBUeUFsaWFzKHR5X3BhdCwgdHlfZGVmLCBfYm9keSkgPT5cbiAgICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0eV9wYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGRlZl9pZCA9IExpc3QubnRoKHR5X2RlZi5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgVHlBbGlhc0V4cC50eWFsaWFzX2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyh+dHBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVHlBbGlhc0V4cC50eWFsaWFzX2V4cHMsXG4gICAgICAgICk7XG4gICAgICB8IFRyaXYgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAudHJpdl9leHBzKVxuICAgICAgfCBCb29sKGIpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmJvb2xfZXhwcyhiKSlcbiAgICAgIHwgSW50KGkpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmludF9leHBzKGkpKVxuICAgICAgfCBGbG9hdChmKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5mbG9hdF9leHBzKGYpKVxuICAgICAgfCBTdHJpbmcocykgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuc3RyaW5nX2V4cHMocykpXG4gICAgICB8IExpc3RMaXQodGVybXMpID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHRlcm1zKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0bGl0cyxcbiAgICAgICAgKVxuICAgICAgfCBGdW4ocGF0LCBib2R5KSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgcGF0ID0gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHBhdCk7XG4gICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGUgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fZW1wdHlfaG9sZV9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19lbXB0eV9ob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2VtcHR5X2hvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZW1wdHlfaG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9tdWx0aV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX211bHRpX2hvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbXVsdGlfaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19tdWx0aV9ob2xlKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgV2lsZCA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl93aWxkX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3dpbGQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1GdW5jdGlvbkV4cC5mdW5jdGlvbl93aWxkX2V4cF9jb2xvcmluZ19pZHMofmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3dpbGQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfd2lsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludChpKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9pbnRsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfaW50KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25faW50bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChpKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19pbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBGbG9hdChmKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9mbG9hdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19mbG9hdCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlZiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgZixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQm9vbChiKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9ib29sbGl0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Jvb2wpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlYiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgYixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Jvb2wsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYm9vbCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9zdHJsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfc3RyKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fc3RybGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19zdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUcml2ID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3RyaXZfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHJpdikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3RyaXZfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIC8vIEhBTk5BSCBUT0RPIC0gdGhpbmsgY291bGQgbW92ZSB0aGlzIGZvcm1hdCB0aGluZyBsaWtlIGludG8gdGhlIGNvbG9yaW5nc1xuICAgICAgICAgICAgICAvLyBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHJpdixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190cml2KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgTGlzdExpdChlbGVtZW50cykgPT5cbiAgICAgICAgICBpZiAoTGlzdC5sZW5ndGgoZWxlbWVudHMpID09IDApIHtcbiAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9saXN0bmlsX2V4cC5pZFxuICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdG5pbCkpIHtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdG5pbCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bmlsKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9saXN0bGl0X2V4cC5pZFxuICAgICAgICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bGl0KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdGxpdF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RsaXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdGxpdCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IENvbnMoaGQsIHRsKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9jb25zX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2NvbnMpKSB7XG4gICAgICAgICAgICBsZXQgaGRfaWQgPSBMaXN0Lm50aChoZC5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IHRsX2lkID0gTGlzdC5udGgodGwuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2NvbnNfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5oZF9pZCxcbiAgICAgICAgICAgICAgICAgIH50bF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jb25zLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2NvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBWYXIodmFyKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl92YXJfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdmFyKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdmFyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgdmFyLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdmFyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3Zhcik7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgYmFzaWNfdHVwbGUgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZV9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgICAgIHwgMiA9PlxuICAgICAgICAgICAgbGV0IGRvY19pZCA9IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUyKTtcbiAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZTJfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCAzID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTMpO1xuICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlM19leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGxldCBwYXQxX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICAgIGxldCBwYXQyX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgICAgIGxldCBwYXQzX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDIpLmlkcywgMCk7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0M19pZCxcbiAgICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0MV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0Ml9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0M19pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IF8gPT5cbiAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZV9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlKSkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB8IEFwKGNvbiwgYXJnKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9hcF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19hcCkpIHtcbiAgICAgICAgICAgIGxldCBjb25faWQgPSBMaXN0Lm50aChjb24uaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2FwX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+Y29uX2lkLFxuICAgICAgICAgICAgICAgICAgfmFyZ19pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoY29uX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2FwLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2FwKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fY3RyX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2N0cikpIHtcbiAgICAgICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fY3RyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2LFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY3RyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2N0cik7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludmFsaWQoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdFxuICAgICAgICB8IFBhcmVucyhfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0P1xuICAgICAgICB8IFR5cGVBbm4oXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfTtcbiAgICAgIHwgVHVwbGUodGVybXMpID0+XG4gICAgICAgIGxldCBiYXNpYyA9IGdyb3VwX2lkID0+XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgodGVybXMpKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICApO1xuICAgICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKHRlcm1zKSkge1xuICAgICAgICB8IDIgPT5cbiAgICAgICAgICBpZiAoVHVwbGVFeHAudHVwbGVfZXhwX3NpemUyLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZUV4cC50dXBsZXMyKSkge1xuICAgICAgICAgICAgbGV0IGV4cDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBleHAyX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBUdXBsZUV4cC50dXBsZV9leHBfc2l6ZTJfY29sb3JpbmdfaWRzKH5leHAxX2lkLCB+ZXhwMl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBUdXBsZUV4cC50dXBsZXMyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoVHVwbGVFeHAudHVwbGVzMik7XG4gICAgICAgICAgfVxuICAgICAgICB8IDMgPT5cbiAgICAgICAgICBpZiAoVHVwbGVFeHAudHVwbGVfZXhwX3NpemUzLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZUV4cC50dXBsZXMzKSkge1xuICAgICAgICAgICAgbGV0IGV4cDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBleHAyX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgZXhwM19pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAyKS5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVfZXhwX3NpemUzX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5leHAxX2lkLFxuICAgICAgICAgICAgICAgICAgfmV4cDJfaWQsXG4gICAgICAgICAgICAgICAgICB+ZXhwM19pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwM19pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVzMyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKFR1cGxlRXhwLnR1cGxlczMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBfID0+IGJhc2ljKFR1cGxlRXhwLnR1cGxlcylcbiAgICAgICAgfTtcbiAgICAgIHwgVmFyKG4pID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLnZhcl9leHBzKG4pKVxuICAgICAgfCBMZXQocGF0LCBkZWYsIGJvZHkpID0+XG4gICAgICAgIGxldCBwYXQgPSBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQocGF0KTtcbiAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICBsZXQgZGVmX2lkID0gTGlzdC5udGgoZGVmLmlkcywgMCk7XG4gICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPUxldEV4cC5sZXRfYmFzZV9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfZW1wdHlfaG9sZV9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2VtcHR5aG9sZSkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfZW1wdHlob2xlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfZW1wdHlob2xlKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgTXVsdGlIb2xlKF8pID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfbXVsdGlfaG9sZV9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX211dGxpaG9sZSkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfbXV0bGlob2xlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfbXV0bGlob2xlKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgV2lsZCA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3dpbGRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c193aWxkKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9TGV0RXhwLmxldF93aWxkX2V4cF9jb2xvcmluZ19pZHMofmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3dpbGQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c193aWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgSW50KGkpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfaW50X2V4cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfaW50KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9pbnRfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChpKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfaW50LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogVE9ETyBUaGUgY29sb3JpbmcgZm9yIHRoZSBzeW50YWN0aWMgZm9ybSBpcyBzb21ldGltZXMgd3JvbmcgaGVyZSBhbmQgc29tZSBvdGhlciBwbGFjZXMgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBmb3JtcyBhbmQgc3BlY2lmaWNpdHkgbGV2ZWxzLi4uIG1heWJlIGEgU2FmYXJpIGlzc3VlLi4uICovXG4gICAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfaW50LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgRmxvYXQoZikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9mbG9hdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2Zsb2F0KSkge1xuICAgICAgICAgICAgLy8gVE9ETyBNYWtlIHN1cmUgZXZlcnl3aGVyZSBwcmludGluZyB0aGUgZmxvYXQgbGl0ZXJhbCBwcmludCBpdCBwcmV0dGllclxuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9mbG9hdF9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVmJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBmLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19mbG9hdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19mbG9hdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEJvb2woYikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9ib29sX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfYm9vbCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfYm9vbF9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyViJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBiLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19ib29sLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogVE9ETyBUaGUgY29sb3JpbmcgZm9yIHRoZSBzeW50YWN0aWMgZm9ybSBpcyBzb21ldGltZXMgd3JvbmcgaGVyZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2Jvb2wsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBTdHJpbmcocykgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9zdHJfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19zdHIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X3N0cl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19zdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlLi4uICovXG4gICAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfc3RyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVHJpdiA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3RyaXZfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190cml2KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF90cml2X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfdHJpdixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUgYW5kIG90aGVyIHBsYWNlcyB3aGVuIHN3aXRjaGluZyBzeW50YWN0aWMgc3BlY2lmaWNpdGllcy4uLiBzZWVtcyBsaWtlIG1pZ2h0IGJlIFNhZmFyaSBpc3N1ZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBMaXN0TGl0KGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfbGlzdG5pbF9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfbGlzdG5pbCkpIHtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgICB+ZGVmX2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c19saXN0bmlsLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfbGlzdG5pbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF9saXN0bGl0X2V4cC5pZFxuICAgICAgICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2xpc3RsaXQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19saXN0bGl0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfbGlzdGxpdCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IENvbnMoaGQsIHRsKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2NvbnNfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19jb25zKSkge1xuICAgICAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2NvbnNfZXhwX2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfY29ucyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2NvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBWYXIodmFyKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3Zhcl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3ZhcikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdmFyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2YXIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3ZhcixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3Zhcik7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGxldCBiYXNpY190dXBsZSA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUxldEV4cC5sZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICAgICAgfCAyID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3R1cGxlMik7XG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZTJfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgTGV0RXhwLmxldF90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+ZGVmX2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRzX3R1cGxlMixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IDMgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHVwbGUzKTtcbiAgICAgICAgICAgIC8vIFRPRE8gU3ludGFjdGljIGZvcm0gY2FuIGdvIG9mZiBwYWdlIC0gc28gY2FuIGV4YW1wbGVzIC0gYnV0IGNhbiBzY3JvbGwsIGp1c3QgY2FuJ3Qgc2VlIGJvdHRvbSBzY3JvbGwgYmFyXG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZTNfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0M19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgTGV0RXhwLmxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0M19pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRzX3R1cGxlMyxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlMyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c190dXBsZTMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IF8gPT5cbiAgICAgICAgICAgIGlmIChMZXRFeHAubGV0X3R1cGxlX2V4cC5pZFxuICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190dXBsZSkpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoTGV0RXhwLmxldHNfdHVwbGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIHwgQXAoY29uLCBhcmcpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfYXBfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19hcCkpIHtcbiAgICAgICAgICAgIGxldCBjb25faWQgPSBMaXN0Lm50aChjb24uaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyh+Y29uX2lkLCB+YXJnX2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2FwLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2N0cl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2N0cikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfY3RyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2N0cik7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludmFsaWQoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdFxuICAgICAgICB8IFBhcmVucyhfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0P1xuICAgICAgICB8IFR5cGVBbm4oXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfTtcbiAgICAgIHwgUGlwZWxpbmUoYXJnLCBmbikgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgUGlwZWxpbmVFeHAuc2luZ2xlKFxuICAgICAgICAgICAgfmFyZ19pZD1UZXJtLlVFeHAucmVwX2lkKGFyZyksXG4gICAgICAgICAgICB+Zm5faWQ9VGVybS5VRXhwLnJlcF9pZChmbiksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBBcCh4LCBhcmcpID0+XG4gICAgICAgIGxldCB4X2lkID0gTGlzdC5udGgoeC5pZHMsIDApO1xuICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgIGxldCBiYXNpYyA9IChncm91cCwgZm9ybWF0LCBjb2xvcmluZ19pZHMpID0+IHtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9Y29sb3JpbmdfaWRzKH54X2lkLCB+YXJnX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9U29tZShmb3JtYXQpLFxuICAgICAgICAgICAgZ3JvdXAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoICh4LnRlcm0pIHtcbiAgICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgQXBwRXhwLmNvbmFwcyxcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICB2LFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4X2lkKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFwcEV4cC5jb25hcHBfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICApXG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgQXBwRXhwLmZ1bmFwcyxcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgQXBwRXhwLmZ1bmFwcF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHwgSWYoY29uZCwgdGhlbl8sIGVsc2VfKSA9PlxuICAgICAgICBsZXQgY29uZF9pZCA9IExpc3QubnRoKGNvbmQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHRoZW5faWQgPSBMaXN0Lm50aCh0aGVuXy5pZHMsIDApO1xuICAgICAgICBsZXQgZWxzZV9pZCA9IExpc3QubnRoKGVsc2VfLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9SWZFeHAuaWZfZXhwX2NvbG9yaW5nX2lkcyh+Y29uZF9pZCwgfnRoZW5faWQsIH5lbHNlX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25kX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0aGVuX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbHNlX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBJZkV4cC5pZnMsXG4gICAgICAgICk7XG4gICAgICB8IFNlcShsZWZ0LCByaWdodCkgPT5cbiAgICAgICAgbGV0IGV4cDFfaWQgPSBMaXN0Lm50aChsZWZ0LmlkcywgMCk7XG4gICAgICAgIGxldCBleHAyX2lkID0gTGlzdC5udGgocmlnaHQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1TZXFFeHAuc2VxX2V4cF9jb2xvcmluZ19pZHMofmV4cDFfaWQsIH5leHAyX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMV9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgU2VxRXhwLnNlcXMsXG4gICAgICAgICk7XG4gICAgICB8IEZpbHRlcigoU3RlcCwgT25lKSwgcGF0LCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX3BhdXNlKFxuICAgICAgICAgICAgfnBfaWQ9VGVybS5VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VGVybS5VRXhwLnJlcF9pZChib2R5KSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IEZpbHRlcigoU3RlcCwgQWxsKSwgcGF0LCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX2RlYnVnKFxuICAgICAgICAgICAgfnBfaWQ9VGVybS5VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VGVybS5VRXhwLnJlcF9pZChib2R5KSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IEZpbHRlcigoRXZhbCwgQWxsKSwgcGF0LCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX2V2YWwoXG4gICAgICAgICAgICB+cF9pZD1UZXJtLlVFeHAucmVwX2lkKHBhdCksXG4gICAgICAgICAgICB+Ym9keV9pZD1UZXJtLlVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgRmlsdGVyKChFdmFsLCBPbmUpLCBwYXQsIGJvZHkpID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpbHRlckV4cC5maWx0ZXJfaGlkZShcbiAgICAgICAgICAgIH5wX2lkPVRlcm0uVUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVRlcm0uVUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBUZXN0KGJvZHkpID0+XG4gICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPVRlc3RFeHAudGVzdF9leHBfY29sb3JpbmdfaWRzKH5ib2R5X2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFRlc3RFeHAudGVzdHMsXG4gICAgICAgICk7XG4gICAgICB8IFBhcmVucyh0ZXJtKSA9PiBnZXRfbWVzc2FnZV9leHAodGVybS50ZXJtKSAvLyBObyBTcGVjaWFsIG1lc3NhZ2U/XG4gICAgICB8IENvbnMoaGQsIHRsKSA9PlxuICAgICAgICBsZXQgaGRfaWQgPSBMaXN0Lm50aChoZC5pZHMsIDApO1xuICAgICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUxpc3RFeHAuY29uc19leHBfY29sb3JpbmdfaWRzKH5oZF9pZCwgfnRsX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRsX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBMaXN0RXhwLmxpc3Rjb25zLFxuICAgICAgICApO1xuICAgICAgfCBMaXN0Q29uY2F0KHhzLCB5cykgPT5cbiAgICAgICAgbGV0IHhzX2lkID0gTGlzdC5udGgoeHMuaWRzLCAwKTtcbiAgICAgICAgbGV0IHlzX2lkID0gTGlzdC5udGgoeXMuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1MaXN0RXhwLmNvbmNhdF9leHBfY29sb3JpbmdfaWRzKH54c19pZCwgfnlzX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeHNfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHlzX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBMaXN0RXhwLmxpc3Rjb25jYXRzLFxuICAgICAgICApO1xuICAgICAgfCBVbk9wKG9wLCBleHApID0+XG4gICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgfCBCb29sKE5vdCkgPT5cbiAgICAgICAgICBsZXQgZXhwX2lkID0gTGlzdC5udGgoZXhwLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPU9wRXhwLmJvb2xfdW5hcnlfbm90X2V4cF9jb2xvcmluZ19pZHMofmV4cF9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHBfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIE9wRXhwLmJvb2xfdW5fbm90LFxuICAgICAgICAgICk7XG4gICAgICAgIHwgSW50KE1pbnVzKSA9PlxuICAgICAgICAgIGxldCBleHBfaWQgPSBMaXN0Lm50aChleHAuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9T3BFeHAuaW50X3VuYXJ5X21pbnVzX2V4cF9jb2xvcmluZ19pZHMofmV4cF9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHBfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIE9wRXhwLmludF91bl9taW51cyxcbiAgICAgICAgICApO1xuICAgICAgICB8IE1ldGEoVW5xdW90ZSkgPT5cbiAgICAgICAgICBtZXNzYWdlX3NpbmdsZShGaWx0ZXJFeHAudW5xdW90ZSh+c2VsX2lkPVRlcm0uVUV4cC5yZXBfaWQoZXhwKSkpXG4gICAgICAgIH1cbiAgICAgIHwgQmluT3Aob3AsIGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgICBvcGVuIE9wRXhwO1xuICAgICAgICBsZXQgKGdyb3VwLCBjb2xvcmluZ19pZHMpID1cbiAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgfCBJbnQoUGx1cykgPT4gKGludF9wbHVzLCBpbnRfcGx1c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KE1pbnVzKSA9PiAoaW50X21pbnVzLCBpbnRfbWludXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChUaW1lcykgPT4gKGludF90aW1lcywgaW50X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoUG93ZXIpID0+IChpbnRfcG93ZXIsIGludF9wb3dlcl9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KERpdmlkZSkgPT4gKGludF9kaXZpZGUsIGludF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChMZXNzVGhhbikgPT4gKGludF9sZXNzX3RoYW4sIGludF9sdF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KExlc3NUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBpbnRfbGVzc190aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnQoR3JlYXRlclRoYW4pID0+IChpbnRfZ3JlYXRlcl90aGFuLCBpbnRfZ3RfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChHcmVhdGVyVGhhbk9yRXF1YWwpID0+IChcbiAgICAgICAgICAgICAgaW50X2dyZWF0ZXJfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgaW50X2d0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgSW50KEVxdWFscykgPT4gKGludF9lcXVhbCwgaW50X2VxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTm90RXF1YWxzKSA9PiAoaW50X25vdF9lcXVhbCwgaW50X25lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoUGx1cykgPT4gKGZsb2F0X3BsdXMsIGZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KE1pbnVzKSA9PiAoZmxvYXRfbWludXMsIGZsb2F0X21pbnVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChUaW1lcykgPT4gKGZsb2F0X3RpbWVzLCBmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoUG93ZXIpID0+IChmbG9hdF9wb3dlciwgZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KERpdmlkZSkgPT4gKGZsb2F0X2RpdmlkZSwgZmxvYXRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChMZXNzVGhhbikgPT4gKGZsb2F0X2xlc3NfdGhhbiwgZmxvYXRfbHRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KExlc3NUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBmbG9hdF9sZXNzX3RoYW5fZXF1YWwsXG4gICAgICAgICAgICAgIGZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgRmxvYXQoR3JlYXRlclRoYW4pID0+IChcbiAgICAgICAgICAgICAgZmxvYXRfZ3JlYXRlcl90aGFuLFxuICAgICAgICAgICAgICBmbG9hdF9ndF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGZsb2F0X2dyZWF0ZXJfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgZmxvYXRfZ3RlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBGbG9hdChFcXVhbHMpID0+IChmbG9hdF9lcXVhbCwgZmxvYXRfZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KE5vdEVxdWFscykgPT4gKGZsb2F0X25vdF9lcXVhbCwgZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBCb29sKEFuZCkgPT4gKGJvb2xfYW5kLCBib29sX2FuZF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgQm9vbChPcikgPT4gKGJvb2xfb3IsIGJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IFN0cmluZyhFcXVhbHMpID0+IChzdHJpbmdfZXF1YWwsIHN0cl9lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgU3RyaW5nKENvbmNhdCkgPT4gKHN0cmluZ19jb25jYXQsIHN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB9O1xuICAgICAgICBsZXQgbGVmdF9pZCA9IExpc3QubnRoKGxlZnQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHJpZ2h0X2lkID0gTGlzdC5udGgocmlnaHQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1jb2xvcmluZ19pZHMofmxlZnRfaWQsIH5yaWdodF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGxlZnRfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHJpZ2h0X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgKTtcbiAgICAgIHwgTWF0Y2goc2NydXQsIF9ydWxlcykgPT5cbiAgICAgICAgbGV0IHNjcnV0X2lkID0gTGlzdC5udGgoc2NydXQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1DYXNlRXhwLmNhc2VfZXhwX2NvbG9yaW5nX2lkcyh+c2NydXRfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoc2NydXRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIENhc2VFeHAuY2FzZSxcbiAgICAgICAgKTtcbiAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVGVybWluYWxFeHAuY3RyKHYpLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIGdldF9tZXNzYWdlX2V4cCh0ZXJtLnRlcm0pO1xuICB8IFNvbWUoSW5mb1BhdCh7dGVybSwgX30pKSA9PlxuICAgIHN3aXRjaCAoYnlwYXNzX3BhcmVuc19wYXQodGVybSkudGVybSkge1xuICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVQYXQuZW1wdHlfaG9sZSlcbiAgICB8IE11bHRpSG9sZShfKSA9PiBnZXRfbWVzc2FnZShIb2xlUGF0Lm11bHRpX2hvbGUpXG4gICAgfCBXaWxkID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsUGF0LndpbGQpXG4gICAgfCBJbnQoaSkgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlaSVpXCIpLCBpLCBpKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5pbnRsaXQoaSksXG4gICAgICApXG4gICAgfCBGbG9hdChmKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVmJWZcIiksIGYsIGYpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmZsb2F0bGl0KGYpLFxuICAgICAgKVxuICAgIHwgQm9vbChiKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiViJWJcIiksIGIsIGIpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmJvb2xsaXQoYiksXG4gICAgICApXG4gICAgfCBTdHJpbmcocykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLCBzLCBzKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5zdHJsaXQocyksXG4gICAgICApXG4gICAgfCBUcml2ID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsUGF0LnRyaXYpXG4gICAgfCBMaXN0TGl0KGVsZW1lbnRzKSA9PlxuICAgICAgaWYgKExpc3QubGVuZ3RoKGVsZW1lbnRzKSA9PSAwKSB7XG4gICAgICAgIGdldF9tZXNzYWdlKExpc3RQYXQubGlzdG5pbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIExpc3RQYXQubGlzdGxpdCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB8IENvbnMoaGQsIHRsKSA9PlxuICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICBsZXQgYmFzaWMgPSBkb2MgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1MaXN0UGF0LmNvbnNfYmFzZV9wYXRfY29sb3JpbmdfaWRzKH5oZF9pZCwgfnRsX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRsX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkb2MsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKHRsLnRlcm0pIHtcbiAgICAgIHwgVGVybUJhc2UuVVBhdC5Db25zKGhkMiwgdGwyKSA9PlxuICAgICAgICBpZiAoTGlzdFBhdC5jb25zMl9wYXQuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExpc3RQYXQuY29uczIpKSB7XG4gICAgICAgICAgbGV0IGhkMl9pZCA9IExpc3QubnRoKGhkMi5pZHMsIDApO1xuICAgICAgICAgIGxldCB0bDJfaWQgPSBMaXN0Lm50aCh0bDIuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIExpc3RQYXQuY29uczJfcGF0X2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZnN0X2lkPWhkX2lkLFxuICAgICAgICAgICAgICAgIH5zbmRfaWQ9aGQyX2lkLFxuICAgICAgICAgICAgICAgIH50bF9pZD10bDJfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRsMl9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgTGlzdFBhdC5jb25zMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKExpc3RQYXQuY29uczIpO1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gYmFzaWMoTGlzdFBhdC5jb25zKVxuICAgICAgfTtcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC52YXIodiksXG4gICAgICApXG4gICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgIGxldCBiYXNpYyA9IGdyb3VwID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgfCAyID0+XG4gICAgICAgIGlmIChUdXBsZVBhdC50dXBsZV9wYXRfc2l6ZTIuaWRcbiAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVBhdC50dXBsZTIpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBUdXBsZVBhdC50dXBsZV9wYXRfc2l6ZTJfY29sb3JpbmdfaWRzKH5lbGVtMV9pZCwgfmVsZW0yX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlUGF0LnR1cGxlMik7XG4gICAgICAgIH1cbiAgICAgIHwgMyA9PlxuICAgICAgICBpZiAoVHVwbGVQYXQudHVwbGVfcGF0X3NpemUzLmlkXG4gICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVQYXQudHVwbGUzKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtM19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVQYXQudHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZWxlbTFfaWQsXG4gICAgICAgICAgICAgICAgfmVsZW0yX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtM19pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtM19pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVQYXQudHVwbGUzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVQYXQudHVwbGUzKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKFR1cGxlUGF0LnR1cGxlKVxuICAgICAgfTtcbiAgICB8IEFwKGNvbiwgYXJnKSA9PlxuICAgICAgbGV0IGNvbl9pZCA9IExpc3QubnRoKGNvbi5pZHMsIDApO1xuICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9QXBwUGF0LmFwX3BhdF9jb2xvcmluZ19pZHMofmNvbl9pZCwgfmFyZ19pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbl9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgQXBwUGF0LmFwLFxuICAgICAgKTtcbiAgICB8IENvbnN0cnVjdG9yKGNvbikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgY29uKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5jdHIoY29uKSxcbiAgICAgIClcbiAgICB8IFR5cGVBbm4ocGF0LCB0eXApID0+XG4gICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICBsZXQgdHlwX2lkID0gTGlzdC5udGgodHlwLmlkcywgMCk7XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmNvbG9yaW5ncz1UeXBBbm5QYXQudHlwYW5uX3BhdF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfnR5cF9pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHR5cF9pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgVHlwQW5uUGF0LnR5cGFubixcbiAgICAgICk7XG4gICAgfCBJbnZhbGlkKF8pID0+IHNpbXBsZShcIk5vdCBhIHZhbGlkIHBhdHRlcm5cIilcbiAgICB8IFBhcmVucyhfKSA9PlxuICAgICAgLy8gU2hvdWxkbid0IGJlIGhpdD9cbiAgICAgIGRlZmF1bHRcbiAgICB9XG4gIHwgU29tZShJbmZvVHlwKHt0ZXJtLCBjbHMsIF99KSkgPT5cbiAgICBzd2l0Y2ggKGJ5cGFzc19wYXJlbnNfdHlwKHRlcm0pLnRlcm0pIHtcbiAgICB8IEVtcHR5SG9sZSA9PiBnZXRfbWVzc2FnZShIb2xlVHlwLmVtcHR5X2hvbGUpXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gZ2V0X21lc3NhZ2UoSG9sZVR5cC5tdWx0aV9ob2xlKVxuICAgIHwgSW50ID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsVHlwLmludClcbiAgICB8IEZsb2F0ID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsVHlwLmZsb2F0KVxuICAgIHwgQm9vbCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5ib29sKVxuICAgIHwgU3RyaW5nID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsVHlwLnN0cilcbiAgICB8IExpc3QoZWxlbSkgPT5cbiAgICAgIGxldCBlbGVtX2lkID0gTGlzdC5udGgoZWxlbS5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9TGlzdFR5cC5saXN0X3R5cF9jb2xvcmluZ19pZHMofmVsZW1faWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbV9pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgTGlzdFR5cC5saXN0LFxuICAgICAgKTtcbiAgICB8IEFycm93KGFyZywgcmVzdWx0KSA9PlxuICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgbGV0IHJlc3VsdF9pZCA9IExpc3QubnRoKHJlc3VsdC5pZHMsIDApO1xuICAgICAgbGV0IGJhc2ljID0gZG9jID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9QXJyb3dUeXAuYXJyb3dfdHlwX2NvbG9yaW5nX2lkcyh+YXJnX2lkLCB+cmVzdWx0X2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhyZXN1bHRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAocmVzdWx0LnRlcm0pIHtcbiAgICAgIHwgVGVybUJhc2UuVVR5cC5BcnJvdyhhcmcyLCByZXN1bHQyKSA9PlxuICAgICAgICBpZiAoQXJyb3dUeXAuYXJyb3czX3R5cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoQXJyb3dUeXAuYXJyb3czKSkge1xuICAgICAgICAgIGxldCBhcmcyX2lkID0gTGlzdC5udGgoYXJnMi5pZHMsIDApO1xuICAgICAgICAgIGxldCByZXN1bHQyX2lkID0gTGlzdC5udGgocmVzdWx0Mi5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgQXJyb3dUeXAuYXJyb3czX3R5cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmFyZzFfaWQ9YXJnX2lkLFxuICAgICAgICAgICAgICAgIH5hcmcyX2lkLFxuICAgICAgICAgICAgICAgIH5yZXN1bHRfaWQ9cmVzdWx0Ml9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhyZXN1bHQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcnJvd1R5cC5hcnJvdzMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhBcnJvd1R5cC5hcnJvdzMpO1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gYmFzaWMoQXJyb3dUeXAuYXJyb3cpXG4gICAgICB9O1xuICAgIHwgVHVwbGUoZWxlbWVudHMpID0+XG4gICAgICBsZXQgYmFzaWMgPSBncm91cCA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGdyb3VwLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aChlbGVtZW50cykpIHtcbiAgICAgIHwgMCA9PlxuICAgICAgICBpZiAoVHVwbGVUeXAudHVwbGUwX3R5cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVUeXAudHVwbGUwKSkge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1bXSxcbiAgICAgICAgICAgIH5mb3JtYXQ9U29tZShtc2cgPT4gbXNnKSxcbiAgICAgICAgICAgIFR1cGxlVHlwLnR1cGxlMCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlVHlwLnR1cGxlMik7XG4gICAgICAgIH1cbiAgICAgIHwgMiA9PlxuICAgICAgICBpZiAoVHVwbGVUeXAudHVwbGUyX3R5cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVUeXAudHVwbGUyKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1UdXBsZVR5cC50dXBsZTJfdHlwX2NvbG9yaW5nX2lkcyh+ZWxlbTFfaWQsIH5lbGVtMl9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0xX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0yX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBUdXBsZVR5cC50dXBsZTIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVR5cC50dXBsZTIpO1xuICAgICAgICB9XG4gICAgICB8IDMgPT5cbiAgICAgICAgaWYgKFR1cGxlVHlwLnR1cGxlM190eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlVHlwLnR1cGxlMykpIHtcbiAgICAgICAgICBsZXQgZWxlbTFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIFR1cGxlVHlwLnR1cGxlM190eXBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgIH5lbGVtMV9pZCxcbiAgICAgICAgICAgICAgICB+ZWxlbTJfaWQsXG4gICAgICAgICAgICAgICAgfmVsZW0zX2lkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0xX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0yX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0zX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBUdXBsZVR5cC50dXBsZTMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVR5cC50dXBsZTMpO1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gYmFzaWMoVHVwbGVUeXAudHVwbGUpXG4gICAgICB9O1xuICAgIHwgQ29uc3RydWN0b3IoYykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFN1bVR5cC5zdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmcyhjKSlcbiAgICB8IFZhcihjKSB3aGVuIGNscyA9PSBUeXAoQ29uc3RydWN0b3IpID0+XG4gICAgICBnZXRfbWVzc2FnZShTdW1UeXAuc3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlZnMoYykpXG4gICAgfCBWYXIodikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgdiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxUeXAudmFyKHYpLFxuICAgICAgKVxuICAgIHwgU3VtKF8pID0+IGdldF9tZXNzYWdlKFN1bVR5cC5sYWJlbGxlZF9zdW1fdHlwcylcbiAgICB8IEFwKHt0ZXJtOiBDb25zdHJ1Y3RvcihjKSwgX30sIF8pID0+XG4gICAgICBnZXRfbWVzc2FnZShTdW1UeXAuc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzKGMpKVxuICAgIHwgSW52YWxpZChfKSA9PiBzaW1wbGUoXCJOb3QgYSB0eXBlIG9yIHR5cGUgb3BlcmF0b3JcIilcbiAgICB8IEFwKF8pXG4gICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgYmUgaGl0P1xuICAgIH1cbiAgfCBTb21lKEluZm9UUGF0KGluZm8pKSA9PlxuICAgIHN3aXRjaCAoaW5mby50ZXJtLnRlcm0pIHtcbiAgICB8IEludmFsaWQoXykgPT4gc2ltcGxlKFwiVHlwZSBuYW1lcyBtdXN0IGJlZ2luIHdpdGggYSBjYXBpdGFsIGxldHRlclwiKVxuICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVUUGF0LmVtcHR5X2hvbGVfdHBhdHMpXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gZ2V0X21lc3NhZ2UoSG9sZVRQYXQubXVsdGlfaG9sZV90cGF0cylcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBWYXJUUGF0LnZhcl90eXBfcGF0cyh2KSxcbiAgICAgIClcbiAgICB9XG4gIHwgU29tZShTZWNvbmRhcnkocykpID0+XG4gICAgc3dpdGNoIChzLmNscykge1xuICAgIHwgU2Vjb25kYXJ5KFdoaXRlc3BhY2UpID0+IHNpbXBsZShcIkEgc2VtYW50aWMgdm9pZCwgcGVydmFkaW5nIGJ1dCBpbmVydFwiKVxuICAgIHwgU2Vjb25kYXJ5KENvbW1lbnQpID0+XG4gICAgICBzaW1wbGUoXCJDb21tZW50cyBhcmUgaWdub3JlZCBieSBzeXN0ZW1zIGJ1dCB0cmVhc3VyZWQgYnkgcmVhZGVyc1wiKVxuICAgIHwgXyA9PiBmYWlsd2l0aChcIkV4cGxhaW5UaGlzOiBTZWNvbmRhcnkgSW1wb3NzaWJsZVwiKVxuICAgIH1cbiAgfCBOb25lID0+IGRlZmF1bHRcbiAgfTtcbn07XG5cbmxldCBzZWN0aW9uID0gKH5zZWN0aW9uX2Nsc3M6IHN0cmluZywgfnRpdGxlOiBzdHJpbmcsIGNvbnRlbnRzOiBsaXN0KE5vZGUudCkpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInNlY3Rpb25cIiwgc2VjdGlvbl9jbHNzXSksXG4gICAgW2Rpdih+YXR0cj1jbHNzKFtcInNlY3Rpb24tdGl0bGVcIl0pLCBbdGV4dCh0aXRsZSldKV0gQCBjb250ZW50cyxcbiAgKTtcblxubGV0IGdldF9jb2xvcl9tYXAgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIH5leHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsIGluZm8pID0+XG4gIHN3aXRjaCAoc2V0dGluZ3MuZXhwbGFpblRoaXMuaGlnaGxpZ2h0KSB7XG4gIHwgQWxsIHdoZW4gc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyA9PlxuICAgIGxldCAoXywgKF8sIChjb2xvcl9tYXAsIF8pKSwgXykgPVxuICAgICAgZ2V0X2RvYyh+ZG9jcz1leHBsYWluVGhpc01vZGVsLCBpbmZvLCBDb2xvcmluZ3MpO1xuICAgIFNvbWUoY29sb3JfbWFwKTtcbiAgfCBPbmUoaWQpIHdoZW4gc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyA9PlxuICAgIGxldCAoXywgKF8sIChjb2xvcl9tYXAsIF8pKSwgXykgPVxuICAgICAgZ2V0X2RvYyh+ZG9jcz1leHBsYWluVGhpc01vZGVsLCBpbmZvLCBDb2xvcmluZ3MpO1xuICAgIFNvbWUoSWQuTWFwLmZpbHRlcigoaWQnLCBfKSA9PiBpZCA9PSBpZCcsIGNvbG9yX21hcCkpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+ZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgICAgaW5mbzogb3B0aW9uKEluZm8udCksXG4gICAgKSA9PiB7XG4gIGxldCAoc3luX2Zvcm0sIChleHBsYW5hdGlvbiwgXyksIGV4YW1wbGUpID1cbiAgICBnZXRfZG9jKFxuICAgICAgfmRvY3M9ZXhwbGFpblRoaXNNb2RlbCxcbiAgICAgIGluZm8sXG4gICAgICBNZXNzYWdlQ29udGVudChpbmplY3QsIHVpX3N0YXRlLCBzZXR0aW5ncyksXG4gICAgKTtcbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuaWQoXCJzaWRlLWJhclwiKSxcbiAgICBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPWNsc3MoW1wiZXhwbGFpbi10aGlzXCJdKSxcbiAgICAgICAgW1xuICAgICAgICAgIGRpdihcbiAgICAgICAgICAgIH5hdHRyPWNsc3MoW1widG9wLWJhclwiXSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFdpZGdldHMudG9nZ2xlKFxuICAgICAgICAgICAgICAgIH50b29sdGlwPVwiVG9nZ2xlIGhpZ2hsaWdodGluZ1wiLFxuICAgICAgICAgICAgICAgIFwi8J+UhlwiLFxuICAgICAgICAgICAgICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLmhpZ2hsaWdodCA9PSBBbGwsXG4gICAgICAgICAgICAgICAgXyA9PlxuICAgICAgICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KEV4cGxhaW5UaGlzKFNldEhpZ2hsaWdodChUb2dnbGUpKSkpXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgICAgIGNsc3MoW1wiY2xvc2VcIl0pLFxuICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICAgICAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlNldChFeHBsYWluVGhpcyhUb2dnbGVTaG93KSkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBbdGV4dChcInhcIildLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgW1xuICAgICAgICAgIHNlY3Rpb24oXG4gICAgICAgICAgICB+c2VjdGlvbl9jbHNzPVwic3ludGFjdGljLWZvcm1cIixcbiAgICAgICAgICAgIH50aXRsZT1cbiAgICAgICAgICAgICAgc3dpdGNoIChpbmZvKSB7XG4gICAgICAgICAgICAgIHwgTm9uZSA9PiBcIldoaXRlc3BhY2Ugb3IgQ29tbWVudFwiXG4gICAgICAgICAgICAgIHwgU29tZShpbmZvKSA9PiBJbmZvLmNsc19vZihpbmZvKSB8PiBUZXJtLkNscy5zaG93XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzeW5fZm9ybSBAIGV4cGxhbmF0aW9uLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCAoXG4gICAgICAgICAgZXhhbXBsZSA9PSBbXVxuICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgOiBbc2VjdGlvbih+c2VjdGlvbl9jbHNzPVwiZXhhbXBsZXNcIiwgfnRpdGxlPVwiRXhhbXBsZXNcIiwgZXhhbXBsZSldXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgdmlldyA9IGlkID0+IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmlkKGlkKSwgW05vZGUudGV4dChcIlhcIildKTtcbiIsImxldCBpc19tYWMgPSByZWYoZmFsc2UpO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBkaXIgPVxuICB8IEtleVVwXG4gIHwgS2V5RG93bjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBrZXkgPVxuICB8IEQoc3RyaW5nKVxuICB8IFUoc3RyaW5nKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBzeXMgPVxuICB8IE1hY1xuICB8IFBDO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIGhlbGQgPVxuICB8IERvd25cbiAgfCBVcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBrZXksXG4gIHN5cyxcbiAgc2hpZnQ6IGhlbGQsXG4gIG1ldGE6IGhlbGQsXG4gIGN0cmw6IGhlbGQsXG4gIGFsdDogaGVsZCxcbn07XG5cbmxldCBrZXlfb2YgPSAoZGlyOiBkaXIsIGV2dCk6IGtleSA9PiB7XG4gIGxldCBrZXkgPSBKc1V0aWwuZ2V0X2tleShldnQpO1xuICBzd2l0Y2ggKGRpcikge1xuICB8IEtleVVwID0+IFUoa2V5KVxuICB8IEtleURvd24gPT4gRChrZXkpXG4gIH07XG59O1xuXG5sZXQgdG9faGVsZDogYm9vbCA9PiBoZWxkID0gYiA9PiBiID8gRG93biA6IFVwO1xuXG5sZXQgbWsgPSAoZGlyLCBldnQpOiB0ID0+IHtcbiAga2V5OiBrZXlfb2YoZGlyLCBldnQpLFxuICBzeXM6IE9zLmlzX21hY14gPyBNYWMgOiBQQyxcbiAgc2hpZnQ6IHRvX2hlbGQoSnNVdGlsLnNoaWZ0X2hlbGQoZXZ0KSksXG4gIG1ldGE6IHRvX2hlbGQoSnNVdGlsLm1ldGFfaGVsZChldnQpKSxcbiAgY3RybDogdG9faGVsZChKc1V0aWwuY3RybF9oZWxkKGV2dCkpLFxuICBhbHQ6IHRvX2hlbGQoSnNVdGlsLmFsdF9oZWxkKGV2dCkpLFxufTtcblxubGV0IG1vZGlmaWVyX3N0cmluZyA9IChoOiBoZWxkLCBtKTogc3RyaW5nID0+IGggPT0gRG93biA/IFwiICsgXCIgKysgbSA6IFwiXCI7XG5cbmxldCBtb2RpZmllcnNfc3RyaW5nID0gKGtleTogdCk6IHN0cmluZyA9PlxuICBtb2RpZmllcl9zdHJpbmcoa2V5LnNoaWZ0LCBcIlNISUZUXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkubWV0YSwgXCJNRVRBXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkuY3RybCwgXCJDVFJMXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkuYWx0LCBcIkFMVFwiKTtcblxubGV0IGtleV9kaXJfc3RyaW5nID0gKGtleTogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKGtleS5rZXkpIHtcbiAgfCBVKGtleSkgPT4gXCIoVVApOiBcIiArKyBrZXlcbiAgfCBEKGtleSkgPT4gXCIoRE4pOiBcIiArKyBrZXlcbiAgfTtcblxubGV0IHRvX3N0cmluZyA9IChrZXk6IHQpOiBzdHJpbmcgPT5cbiAgXCJLRVlcIiArKyBrZXlfZGlyX3N0cmluZyhrZXkpICsrIG1vZGlmaWVyc19zdHJpbmcoa2V5KTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgaXNfZGlnaXQgPSBzID0+IFJlLlN0ci4oc3RyaW5nX21hdGNoKHJlZ2V4cChcIl5bMC05XSRcIiksIHMsIDApKTtcbmxldCBpc19mX2tleSA9IHMgPT4gUmUuU3RyLihzdHJpbmdfbWF0Y2gocmVnZXhwKFwiXkZbMC05XVswLTldKiRcIiksIHMsIDApKTtcblxubGV0IGhhbmRsZV9rZXlfZXZlbnQgPSAoazogS2V5LnQpOiBvcHRpb24oVXBkYXRlLnQpID0+IHtcbiAgbGV0IG5vdyA9IChhOiBBY3Rpb24udCk6IG9wdGlvbihVcGRhdGVBY3Rpb24udCkgPT5cbiAgICBTb21lKFBlcmZvcm1BY3Rpb24oYSkpO1xuICBzd2l0Y2ggKGspIHtcbiAgfCB7a2V5OiBVKGtleSksIF99ID0+XG4gICAgLyogS2V1LVVQcEV2ZW50czpcbiAgICAgICBOT1RFOiBSZW1lbWJlciB0aGF0IHNpbmNlIHRoZXJlIGlzIGEga2V5dXAgZm9yIGV2ZXJ5XG4gICAgICAga2V5ZG93biwgbWFraW5nIGFuIHVwZGF0ZSBoZXJlIG1heSB0cmlnZ2VyIGFuIGVudGlyZVxuICAgICAgIGV4dHJhIHJlZHJhdywgY29udGluZ2VudCBvbiBtb2RlbC5jdXRvZmYgKi9cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJBbHRcIiA9PiBTb21lKFNldE1ldGEoU2hvd0JhY2twYWNrVGFyZ2V0cyhmYWxzZSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBfLCBzaGlmdDogRG93biwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IFVwfVxuICAgICAgd2hlbiBpc19mX2tleShrZXkpID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiRjdcIiA9PiBTb21lKEJlbmNobWFyayhTdGFydCkpXG4gICAgfCBfID0+IFNvbWUoRGVidWdDb25zb2xlKGtleSkpXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBfLCBzaGlmdCwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoc2hpZnQsIGtleSkge1xuICAgIHwgKFVwLCBcIkFycm93TGVmdFwiKSA9PiBub3coTW92ZShMb2NhbChMZWZ0KEJ5Q2hhcikpKSlcbiAgICB8IChVcCwgXCJBcnJvd1JpZ2h0XCIpID0+IG5vdyhNb3ZlKExvY2FsKFJpZ2h0KEJ5Q2hhcikpKSlcbiAgICB8IChVcCwgXCJBcnJvd1VwXCIpID0+IG5vdyhNb3ZlKExvY2FsKFVwKSkpXG4gICAgfCAoVXAsIFwiQXJyb3dEb3duXCIpID0+IG5vdyhNb3ZlKExvY2FsKERvd24pKSlcbiAgICB8IChVcCwgXCJIb21lXCIpID0+IG5vdyhNb3ZlKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKVxuICAgIHwgKFVwLCBcIkVuZFwiKSA9PiBub3coTW92ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCAoVXAsIFwiQmFja3NwYWNlXCIpID0+IG5vdyhEZXN0cnVjdChMZWZ0KSlcbiAgICB8IChVcCwgXCJEZWxldGVcIikgPT4gbm93KERlc3RydWN0KFJpZ2h0KSlcbiAgICB8IChVcCwgXCJFc2NhcGVcIikgPT4gbm93KFVuc2VsZWN0KE5vbmUpKVxuICAgIHwgKFVwLCBcIlRhYlwiKSA9PiBTb21lKFRBQilcbiAgICB8IChVcCwgXCJGMTJcIikgPT4gbm93KEp1bXAoQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcikpXG4gICAgfCAoRG93biwgXCJUYWJcIikgPT4gU29tZShNb3ZlVG9OZXh0SG9sZShMZWZ0KSlcbiAgICB8IChEb3duLCBcIkFycm93TGVmdFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKERvd24sIFwiQXJyb3dSaWdodFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChSaWdodChCeVRva2VuKSkpKSlcbiAgICB8IChEb3duLCBcIkFycm93VXBcIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoVXApKSkpXG4gICAgfCAoRG93biwgXCJBcnJvd0Rvd25cIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoRG93bikpKSlcbiAgICB8IChEb3duLCBcIkhvbWVcIikgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKERvd24sIFwiRW5kXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCAoXywgXCJFbnRlclwiKSA9PiBub3coSW5zZXJ0KEZvcm0ubGluZWJyZWFrKSlcbiAgICB8IF8gd2hlbiBTdHJpbmcubGVuZ3RoKGtleSkgPT0gMSA9PlxuICAgICAgLyogTm90ZTogbGVuZ3RoPT0xIHByZXZlbnQgc3BlY2lhbHMgbGlrZVxuICAgICAgICogU0hJRlQgZnJvbSBiZWluZyBjYXB0dXJlZCBoZXJlICovXG4gICAgICBub3coSW5zZXJ0KGtleSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IE1hYywgc2hpZnQ6IERvd24sIG1ldGE6IERvd24sIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIlpcIlxuICAgIHwgXCJ6XCIgPT4gU29tZShSZWRvKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1VwXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShVcCkpKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShEb3duKSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBQQywgc2hpZnQ6IERvd24sIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIlpcIlxuICAgIHwgXCJ6XCIgPT4gU29tZShSZWRvKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93VXBcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChVcCkpKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoRG93bikpKSlcbiAgICB8IFwiSG9tZVwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoVXApKSkpXG4gICAgfCBcIkVuZFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoRG93bikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogTWFjLCBzaGlmdDogVXAsIG1ldGE6IERvd24sIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcInpcIiA9PiBTb21lKFVuZG8pXG4gICAgfCBcImRcIiA9PiBub3coU2VsZWN0KFRlcm0oQ3VycmVudCkpKVxuICAgIHwgXCJwXCIgPT4gU29tZShQZXJmb3JtQWN0aW9uKFBpY2tfdXApKVxuICAgIHwgXCJhXCIgPT4gbm93KFNlbGVjdChBbGwpKVxuICAgIHwgXCJrXCIgPT4gU29tZShSZXBhcnNlQ3VycmVudEVkaXRvcilcbiAgICB8IFwiL1wiID0+IFNvbWUoQXNzaXN0YW50KFByb21wdChUeURpKSkpXG4gICAgfCBfIHdoZW4gaXNfZGlnaXQoa2V5KSA9PiBTb21lKFN3aXRjaFNjcmF0Y2hTbGlkZShpbnRfb2Zfc3RyaW5nKGtleSkpKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IFwiQXJyb3dSaWdodFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IFwiQXJyb3dVcFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoVXApKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KE1vdmUoRXh0cmVtZShEb3duKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IFBDLCBzaGlmdDogVXAsIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcInpcIiA9PiBTb21lKFVuZG8pXG4gICAgfCBcImRcIiA9PiBub3coU2VsZWN0KFRlcm0oQ3VycmVudCkpKVxuICAgIHwgXCJwXCIgPT4gU29tZShQZXJmb3JtQWN0aW9uKFBpY2tfdXApKVxuICAgIHwgXCJhXCIgPT4gbm93KFNlbGVjdChBbGwpKVxuICAgIHwgXCJrXCIgPT4gU29tZShSZXBhcnNlQ3VycmVudEVkaXRvcilcbiAgICB8IFwiL1wiID0+IFNvbWUoQXNzaXN0YW50KFByb21wdChUeURpKSkpXG4gICAgfCBfIHdoZW4gaXNfZGlnaXQoa2V5KSA9PiBTb21lKFN3aXRjaFNjcmF0Y2hTbGlkZShpbnRfb2Zfc3RyaW5nKGtleSkpKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coTW92ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coTW92ZShMb2NhbChSaWdodChCeVRva2VuKSkpKVxuICAgIHwgXCJIb21lXCIgPT4gbm93KE1vdmUoRXh0cmVtZShVcCkpKVxuICAgIHwgXCJFbmRcIiA9PiBub3coTW92ZShFeHRyZW1lKERvd24pKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogTWFjLCBzaGlmdDogVXAsIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcImFcIiA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IFwiZVwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5cywgc2hpZnQ6IFVwLCBtZXRhOiBVcCwgY3RybDogVXAsIGFsdDogRG93bn0gPT5cbiAgICBzd2l0Y2ggKHN5cywga2V5KSB7XG4gICAgfCAoXywgXCJBcnJvd0xlZnRcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KExlZnQoQnlUb2tlbikpKVxuICAgIHwgKF8sIFwiQXJyb3dSaWdodFwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoUmlnaHQoQnlUb2tlbikpKVxuICAgIHwgKF8sIFwiQWx0XCIpID0+IFNvbWUoU2V0TWV0YShTaG93QmFja3BhY2tUYXJnZXRzKHRydWUpKSlcbiAgICB8IChfLCBcIkFycm93VXBcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KFVwKSlcbiAgICB8IChfLCBcIkFycm93RG93blwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoRG93bikpXG4gICAgfCAoXywgXCJhXCIpID0+IFNvbWUoU2V0KEFjY2Vzc2liaWxpdHkoVG9nZ2xlSXNFZGl0aW5nKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIFdpZGdldHM7XG5cbmxldCBleHBvcnRfcGVyc2lzdGVudF9kYXRhID0gKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhKSA9PlxuICBidXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3Byb3V0LFxuICAgIF8gPT4gaW5qZWN0KEV4cG9ydFBlcnNpc3RlbnREYXRhKSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBBbGwgUGVyc2lzdGVudCBEYXRhXCIsXG4gICk7XG5cbmxldCByZXNldF9oYXplbCA9XG4gIGJ1dHRvbihcbiAgICBJY29ucy5ib21iLFxuICAgIF8gPT4ge1xuICAgICAgbGV0IGNvbmZpcm1lZCA9XG4gICAgICAgIEpzVXRpbC5jb25maXJtKFxuICAgICAgICAgIFwiQXJlIHlvdSBTVVJFIHlvdSB3YW50IHRvIHJlc2V0IEhhemVsIHRvIGl0cyBpbml0aWFsIHN0YXRlPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlIHRoYXQgeW91IGhhdmUgd3JpdHRlbiwgYW5kIGNvdXJzZSBzdGFmZiBoYXZlIG5vIHdheSB0byByZXN0b3JlIGl0IVwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBKc1V0aWwuY2xlYXJfbG9jYWxzdG9yZSgpO1xuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbiMjcmVsb2FkO1xuICAgICAgfTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiQ2xlYXIgTG9jYWwgU3RvcmFnZSBhbmQgUmVsb2FkIChMT1NFIEFMTCBEQVRBKVwiLFxuICApO1xuXG5sZXQgcmVwYXJzZSA9ICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSkgPT5cbiAgYnV0dG9uKFxuICAgIEljb25zLmJhY2twYWNrLFxuICAgIF8gPT4gaW5qZWN0KFJlcGFyc2VDdXJyZW50RWRpdG9yKSxcbiAgICB+dG9vbHRpcD1cIlJlcGFyc2UgQ3VycmVudCBFZGl0b3JcIixcbiAgKTtcblxubGV0IHNldHRpbmdzX21lbnUgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3MgYXNcbiAgICAgICAge1xuICAgICAgICAgIGNvcmU6IHtldmFsdWF0aW9uLCBffSBhcyBjb3JlLFxuICAgICAgICAgIGJlbmNobWFyayxcbiAgICAgICAgICBzZWNvbmRhcnlfaWNvbnMsXG4gICAgICAgICAgZXhwbGFpblRoaXMsXG4gICAgICAgICAgXyxcbiAgICAgICAgfTogU2V0dGluZ3MudCxcbiAgICApID0+IHtcbiAgbGV0IHRvZ2dsZSA9IChpY29uLCB0b29sdGlwLCBib29sLCBzZXR0aW5nKSA9PlxuICAgIHRvZ2dsZV9uYW1lZChpY29uLCB+dG9vbHRpcCwgYm9vbCwgXyA9PlxuICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5TZXQoc2V0dGluZykpXG4gICAgKTtcbiAgW1xuICAgIHRvZ2dsZShcIs+EXCIsIFwiVG9nZ2xlIFN0YXRpY3NcIiwgY29yZS5zdGF0aWNzLCBTdGF0aWNzKSxcbiAgICB0b2dnbGUoXCLih7JcIiwgXCJUb2dnbGUgQ29tcGxldGlvblwiLCBjb3JlLmFzc2lzdCwgQXNzaXN0KSxcbiAgICB0b2dnbGUoXCLihrVcIiwgXCJTaG93IFdoaXRlc3BhY2VcIiwgc2Vjb25kYXJ5X2ljb25zLCBTZWNvbmRhcnlJY29ucyksXG4gICAgdG9nZ2xlKFwi4pyTXCIsIFwiUHJpbnQgQmVuY2htYXJrc1wiLCBiZW5jaG1hcmssIEJlbmNobWFyayksXG4gICAgdG9nZ2xlKFwi8J2bv1wiLCBcIlRvZ2dsZSBEeW5hbWljc1wiLCBjb3JlLmR5bmFtaWNzLCBEeW5hbWljcyksXG4gICAgdG9nZ2xlKFwi8J2RklwiLCBcIlNob3cgRWxhYm9yYXRpb25cIiwgY29yZS5lbGFib3JhdGUsIEVsYWJvcmF0ZSksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLOu1wiLFxuICAgICAgXCJTaG93IEZ1bmN0aW9uIEJvZGllc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2ZuX2JvZGllcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZuQm9kaWVzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwifFwiLFxuICAgICAgXCJTaG93IENhc2UgQ2xhdXNlc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc2VDbGF1c2VzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwiZlwiLFxuICAgICAgXCJTaG93IGZpeHBvaW50c1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2ZpeHBvaW50cyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZpeHBvaW50cyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBVbmljb2RlLmNhc3RBcnJvd1N5bSxcbiAgICAgIFwiU2hvdyBjYXN0c1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2Nhc3RzLFxuICAgICAgRXZhbHVhdGlvbihTaG93Q2FzdHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLwn5SNXCIsXG4gICAgICBcIlNob3cgTG9va3VwIFN0ZXBzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfbG9va3VwX3N0ZXBzLFxuICAgICAgRXZhbHVhdGlvbihTaG93TG9va3VwcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIuKPr++4j1wiLFxuICAgICAgXCJTaG93IFN0ZXBwZXIgRmlsdGVyc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZpbHRlcnMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCI/XCIsXG4gICAgICBcIlNob3cgRG9jcyBTaWRlYmFyXCIsXG4gICAgICBleHBsYWluVGhpcy5zaG93LFxuICAgICAgRXhwbGFpblRoaXMoVG9nZ2xlU2hvdyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIvCfkY1cIixcbiAgICAgIFwiU2hvdyBEb2NzIEZlZWRiYWNrXCIsXG4gICAgICBleHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrLFxuICAgICAgRXhwbGFpblRoaXMoVG9nZ2xlU2hvd0ZlZWRiYWNrKSxcbiAgICApLFxuICBdO1xufTtcblxubGV0IGV4cG9ydF9tZW51ID0gKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgZWRpdG9yczogRWRpdG9ycy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKHNsaWRlX2lkeCwgc2xpZGVzKSA9PlxuICAgIGxldCBzdGF0ZSA9IExpc3QubnRoKHNsaWRlcywgc2xpZGVfaWR4KTtcbiAgICBbU2NyYXRjaE1vZGUuZXhwb3J0X2J1dHRvbihzdGF0ZSldO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIGxldCBzdGF0ZSA9IExpc3QuYXNzb2MobmFtZSwgc2xpZGVzKTtcbiAgICBbU2NyYXRjaE1vZGUuZXhwb3J0X2J1dHRvbihzdGF0ZSldO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgd2hlbiBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPT4gW1xuICAgICAgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSh+aW5qZWN0KSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5leHBvcnRfc3VibWlzc2lvbih+c2V0dGluZ3MpLFxuICAgICAgRXhlcmNpc2VNb2RlLmluc3RydWN0b3JfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX3RyYW5zaXRpb25hcnlfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX2dyYWRpbmdfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICBdXG4gIHwgRXhlcmNpc2VzKF8pID0+IFtFeGVyY2lzZU1vZGUuZXhwb3J0X3N1Ym1pc3Npb24ofnNldHRpbmdzKV1cbiAgfTtcblxubGV0IGltcG9ydF9tZW51ID0gKH5pbmplY3QsIGVkaXRvcnM6IEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gW1xuICAgICAgU2NyYXRjaE1vZGUuaW1wb3J0X2J1dHRvbihpbmplY3QpLFxuICAgICAgU2NyYXRjaE1vZGUucmVzZXRfYnV0dG9uKGluamVjdCksXG4gICAgXVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBbXG4gICAgICBFeGVyY2lzZU1vZGUuaW1wb3J0X3N1Ym1pc3Npb24ofmluamVjdCksXG4gICAgICBFeGVyY2lzZU1vZGUucmVzZXRfYnV0dG9uKGluamVjdCksXG4gICAgXVxuICB9O1xuXG5sZXQgc3VibWVudSA9ICh+dG9vbHRpcCwgfmljb24sIG1lbnUpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRvcC1tZW51LWl0ZW1cIl0pLFxuICAgIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcInN1Ym1lbnUtaWNvblwiXSksIEF0dHIudGl0bGUodG9vbHRpcCldKSxcbiAgICAgICAgW2Rpdih+YXR0cj1jbHNzKFtcImljb25cIl0pLCBbaWNvbl0pXSxcbiAgICAgICksXG4gICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzdWJtZW51XCJdKSwgbWVudSksXG4gICAgXSxcbiAgKTtcblxubGV0IHZpZXcgPVxuICAgICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSwgfnNldHRpbmdzOiBTZXR0aW5ncy50LCB+ZWRpdG9yczogRWRpdG9ycy50KSA9PiBbXG4gIGEofmF0dHI9Y2xzcyhbXCJudXQtaWNvblwiXSksIFtJY29ucy5oYXplbG51dF0pLFxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJudXQtbWVudVwiXSksXG4gICAgW1xuICAgICAgc3VibWVudShcbiAgICAgICAgfnRvb2x0aXA9XCJTZXR0aW5nc1wiLFxuICAgICAgICB+aWNvbj1JY29ucy5nZWFyLFxuICAgICAgICBzZXR0aW5nc19tZW51KH5pbmplY3QsIH5zZXR0aW5ncyksXG4gICAgICApLFxuICAgICAgc3VibWVudShcbiAgICAgICAgfnRvb2x0aXA9XCJFeHBvcnRcIixcbiAgICAgICAgfmljb249SWNvbnMuZXhwb3J0LFxuICAgICAgICBleHBvcnRfbWVudSh+aW5qZWN0LCB+c2V0dGluZ3MsIGVkaXRvcnMpLFxuICAgICAgKSxcbiAgICAgIHN1Ym1lbnUoXG4gICAgICAgIH50b29sdGlwPVwiSW1wb3J0XCIsXG4gICAgICAgIH5pY29uPUljb25zLmltcG9ydCxcbiAgICAgICAgaW1wb3J0X21lbnUofmluamVjdCwgZWRpdG9ycyksXG4gICAgICApLFxuICAgICAgcmVwYXJzZSh+aW5qZWN0KSxcbiAgICAgIHJlc2V0X2hhemVsLFxuICAgICAgbGluayhcbiAgICAgICAgSWNvbnMuZ2l0aHViLFxuICAgICAgICBcImh0dHBzOi8vZ2l0aHViLmNvbS9oYXplbGdyb3ZlL2hhemVsXCIsXG4gICAgICAgIH50b29sdGlwPVwiSGF6ZWwgb24gR2l0SHViXCIsXG4gICAgICApLFxuICAgICAgbGluayhJY29ucy5pbmZvLCBcImh0dHBzOi8vaGF6ZWwub3JnXCIsIH50b29sdGlwPVwiSGF6ZWwgSG9tZXBhZ2VcIiksXG4gICAgXSxcbiAgKSxcbl07XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmxldCBoYW5kbGVycyA9ICh+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSwgbW9kZWwpID0+IHtcbiAgbGV0IGdldF9zZWxlY3Rpb24gPSAobW9kZWw6IE1vZGVsLnQpOiBzdHJpbmcgPT5cbiAgICBtb2RlbC5lZGl0b3JzIHw+IEVkaXRvcnMuZ2V0X2VkaXRvciB8PiBQcmludGVyLnRvX3N0cmluZ19zZWxlY3Rpb247XG4gIGxldCBrZXlfaGFuZGxlciA9XG4gICAgICAofmluamVjdCwgfmRpcjogS2V5LmRpciwgZXZ0OiBKcy50KERvbV9odG1sLmtleWJvYXJkRXZlbnQpKVxuICAgICAgOiBFZmZlY3QudCh1bml0KSA9PlxuICAgIEVmZmVjdC4oXG4gICAgICBzd2l0Y2ggKEtleWJvYXJkLmhhbmRsZV9rZXlfZXZlbnQoS2V5Lm1rKGRpciwgZXZ0KSkpIHtcbiAgICAgIHwgTm9uZSA9PiBJZ25vcmVcbiAgICAgIHwgU29tZShhY3Rpb24pID0+XG4gICAgICAgIE1hbnkoW1ByZXZlbnRfZGVmYXVsdCwgU3RvcF9wcm9wYWdhdGlvbiwgaW5qZWN0KGFjdGlvbildKVxuICAgICAgfVxuICAgICk7XG4gIFtcbiAgICBBdHRyLm9uX2tleXByZXNzKF8gPT4gRWZmZWN0LlByZXZlbnRfZGVmYXVsdCksXG4gICAgQXR0ci5vbl9rZXl1cChrZXlfaGFuZGxlcih+aW5qZWN0LCB+ZGlyPUtleVVwKSksXG4gICAgQXR0ci5vbl9rZXlkb3duKGtleV9oYW5kbGVyKH5pbmplY3QsIH5kaXI9S2V5RG93bikpLFxuICAgIC8qIHNhZmV0eSBoYW5kbGVyIGluIGNhc2UgbW91c2Vkb3duIG92ZXJsYXkgZG9lc24ndCBjYXRjaCBpdCAqL1xuICAgIEF0dHIub25fbW91c2V1cChfID0+IGluamVjdChTZXRNZXRhKE1vdXNldXApKSksXG4gICAgQXR0ci5vbl9ibHVyKF8gPT4ge1xuICAgICAgSnNVdGlsLmZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gICAgICBFZmZlY3QuSWdub3JlO1xuICAgIH0pLFxuICAgIEF0dHIub25fZm9jdXMoXyA9PiB7XG4gICAgICBKc1V0aWwuZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcbiAgICAgIEVmZmVjdC5JZ25vcmU7XG4gICAgfSksXG4gICAgQXR0ci5vbl9jb3B5KF8gPT4ge1xuICAgICAgSnNVdGlsLmNvcHkoZ2V0X3NlbGVjdGlvbihtb2RlbCkpO1xuICAgICAgRWZmZWN0Lklnbm9yZTtcbiAgICB9KSxcbiAgICBBdHRyLm9uX2N1dChfID0+IHtcbiAgICAgIEpzVXRpbC5jb3B5KGdldF9zZWxlY3Rpb24obW9kZWwpKTtcbiAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihEZXN0cnVjdChMZWZ0KSkpO1xuICAgIH0pLFxuICAgIEF0dHIub25fcGFzdGUoZXZ0ID0+IHtcbiAgICAgIGxldCBwYXN0ZWRfdGV4dCA9XG4gICAgICAgIEpzLnRvX3N0cmluZyhldnQjIy5jbGlwYm9hcmREYXRhIyNnZXREYXRhKEpzLnN0cmluZyhcInRleHRcIikpKVxuICAgICAgICB8PiBTdHIuZ2xvYmFsX3JlcGxhY2UoU3RyLnJlZ2V4cChcIlxcblsgXSpcIiksIFwiXFxuXCIpO1xuICAgICAgRG9tLnByZXZlbnREZWZhdWx0KGV2dCk7XG4gICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlBhc3RlKHBhc3RlZF90ZXh0KSk7XG4gICAgfSksXG4gIF07XG59O1xuXG5sZXQgbWFpbl92aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgIHtcbiAgICAgICAgc2V0dGluZ3MsXG4gICAgICAgIGVkaXRvcnMsXG4gICAgICAgIGV4cGxhaW5UaGlzTW9kZWwsXG4gICAgICAgIGFjY2Vzc2liaWxpdHlNb2RlbCxcbiAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgc3RhdGljcyxcbiAgICAgICAgdWlfc3RhdGUsXG4gICAgICAgIF8sXG4gICAgICB9OiBNb2RlbC50LFxuICAgICkgPT4ge1xuICBsZXQgZWRpdG9yID0gRWRpdG9ycy5nZXRfZWRpdG9yKGVkaXRvcnMpO1xuICBsZXQgc3RhdGljcyA9IEVkaXRvcnMubG9va3VwX3N0YXRpY3MofnNldHRpbmdzLCB+c3RhdGljcywgZWRpdG9ycyk7XG4gIGxldCBjdXJzb3JfaW5mbyA9IEluZGljYXRlZC5jaV9vZihlZGl0b3Iuc3RhdGUuemlwcGVyLCBzdGF0aWNzLmluZm9fbWFwKTtcbiAgbGV0IHRvcF9iYXIgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuaWQoXCJ0b3AtYmFyXCIpLFxuICAgICAgTnV0TWVudS52aWV3KH5pbmplY3QsIH5zZXR0aW5ncywgfmVkaXRvcnMpXG4gICAgICBAIFtkaXYofmF0dHI9QXR0ci5pZChcInRpdGxlXCIpLCBbdGV4dChcImhhemVsXCIpXSldXG4gICAgICBAIFtFZGl0b3JNb2RlVmlldy52aWV3KH5pbmplY3QsIH5zZXR0aW5ncywgfmVkaXRvcnMpXSxcbiAgICApO1xuICBsZXQgYm90dG9tX2JhciA9IEN1cnNvckluc3BlY3Rvci52aWV3KH5pbmplY3QsIH5zZXR0aW5ncywgY3Vyc29yX2luZm8pO1xuICBsZXQgYTExeV9iYXIgPSBBY2Nlc3NpYmlsaXR5LnZpZXcofl9pbmplY3Q9aW5qZWN0LCBhY2Nlc3NpYmlsaXR5TW9kZWwpO1xuICBsZXQgc2lkZWJhciA9XG4gICAgc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyAmJiBzZXR0aW5ncy5jb3JlLnN0YXRpY3NcbiAgICAgID8gRXhwbGFpblRoaXMudmlldyhcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfmV4cGxhaW5UaGlzTW9kZWwsXG4gICAgICAgICAgY3Vyc29yX2luZm8sXG4gICAgICAgIClcbiAgICAgIDogZGl2KFtdKTtcbiAgbGV0IGhpZ2hsaWdodHMgPVxuICAgIEV4cGxhaW5UaGlzLmdldF9jb2xvcl9tYXAofnNldHRpbmdzLCB+ZXhwbGFpblRoaXNNb2RlbCwgY3Vyc29yX2luZm8pO1xuICBsZXQgZWRpdG9yc192aWV3ID1cbiAgICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgICB8IFNjcmF0Y2goaWR4LCBfKSA9PlxuICAgICAgbGV0IHJlc3VsdF9rZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChpZHgpKTtcbiAgICAgIFNjcmF0Y2hNb2RlLnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgfnJlc3VsdHMsXG4gICAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgICB+c3RhdGljcyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgKTtcbiAgICB8IERvY3VtZW50YXRpb24obmFtZSwgXykgPT5cbiAgICAgIGxldCByZXN1bHRfa2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG5hbWUpO1xuICAgICAgbGV0IGluZm8gPVxuICAgICAgICBTbGlkZUNvbnRlbnQuZ2V0X2NvbnRlbnQoZWRpdG9ycylcbiAgICAgICAgfD4gT3B0aW9uLm1hcChpID0+IGRpdih+YXR0cj1BdHRyLmlkKFwic2xpZGVcIiksIFtpXSkpXG4gICAgICAgIHw+IE9wdGlvbi50b19saXN0O1xuICAgICAgaW5mb1xuICAgICAgQCBTY3JhdGNoTW9kZS52aWV3KFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgICB+cmVzdWx0cyxcbiAgICAgICAgICB+cmVzdWx0X2tleSxcbiAgICAgICAgICB+c3RhdGljcyxcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICk7XG4gICAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgICBFeGVyY2lzZU1vZGUudmlldyhcbiAgICAgICAgfmluamVjdCxcbiAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgICB+cmVzdWx0cyxcbiAgICAgICAgfmV4ZXJjaXNlLFxuICAgICAgKVxuICAgIH07XG4gIFtcbiAgICB0b3BfYmFyLFxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuaWQoXCJtYWluXCIpLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbU2V0dGluZ3Muc2hvd19tb2RlKHNldHRpbmdzLm1vZGUpXSksXG4gICAgICAgIF0pLFxuICAgICAgZWRpdG9yc192aWV3LFxuICAgICksXG4gICAgc2lkZWJhcixcbiAgICBib3R0b21fYmFyLFxuICAgIGExMXlfYmFyLFxuICBdO1xufTtcblxubGV0IGdldF9zZWxlY3Rpb24gPSAobW9kZWw6IE1vZGVsLnQpOiBzdHJpbmcgPT5cbiAgbW9kZWwuZWRpdG9ycyB8PiBFZGl0b3JzLmdldF9lZGl0b3IgfD4gUHJpbnRlci50b19zdHJpbmdfc2VsZWN0aW9uO1xuXG5sZXQgdmlldyA9ICh+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSwgbW9kZWw6IE1vZGVsLnQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoQXR0ci5baWQoXCJwYWdlXCIpLCAuLi5oYW5kbGVycyh+aW5qZWN0LCBtb2RlbCldKSxcbiAgICBbXG4gICAgICBGb250U3BlY2ltZW4udmlldyhcImZvbnQtc3BlY2ltZW5cIiksXG4gICAgICBEZWNVdGlsLmZpbHRlcnMsXG4gICAgICBKc1V0aWwuY2xpcGJvYXJkX3NoaW0sXG4gICAgXVxuICAgIEAgbWFpbl92aWV3KH5pbmplY3QsIG1vZGVsKSxcbiAgKTtcbiIsImxldCBtZW1vaXplID0gKGY6ICdrID0+ICd2KTogKCdrID0+ICd2KSA9PiB7XG4gIGxldCB0YWJsZTogV2Vha01hcC50KCdrLCAndikgPSBXZWFrTWFwLm1rKCk7XG4gIGsgPT5cbiAgICBzd2l0Y2ggKFdlYWtNYXAuZ2V0KHRhYmxlLCBrKSkge1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHYgPSBmKGspO1xuICAgICAgbGV0IF8gPSBXZWFrTWFwLnNldCh0YWJsZSwgaywgdik7XG4gICAgICB2O1xuICAgIHwgU29tZSh2KSA9PiB2XG4gICAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG50eXBlIHQgPSAoZmxvYXQsIFVwZGF0ZUFjdGlvbi50KTtcblxubGV0IG1rID0gKHVwZGF0ZSk6IHQgPT4ge1xuICAoSnNVdGlsLnRpbWVzdGFtcCgpLCB1cGRhdGUpO1xufTtcblxubGV0IHRvX3N0cmluZyA9ICgodGltZXN0YW1wLCB1cGRhdGUpOiB0KSA9PiB7XG4gIC8qbGV0IHN0YXR1cyA9XG4gICAgc3dpdGNoIChlbnRyeS5lcnJvcikge1xuICAgIHwgTm9uZSA9PiBcIlNVQ0NFU1NcIlxuICAgIHwgU29tZShmYWlsdXJlKSA9PiBcIkZBSUxVUkUoXCIgKysgVXBkYXRlQWN0aW9uLkZhaWx1cmUuc2hvdyhmYWlsdXJlKSArKyBcIilcIlxuICAgIH07Ki9cbiAgUHJpbnRmLnNwcmludGYoXG4gICAgXCIlLjBmOiAlc1wiLFxuICAgIHRpbWVzdGFtcCxcbiAgICBVcGRhdGVBY3Rpb24uc2hvdyh1cGRhdGUpLFxuICAgIC8vc3RhdHVzLFxuICApO1xufTtcblxubGV0IHNlcmlhbGl6ZSA9IChlbnRyeTogdCk6IHN0cmluZyA9PiB7XG4gIGVudHJ5IHw+IHNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKHM6IHN0cmluZyk6IHQgPT4ge1xuICBzIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcbiIsIiMgMSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbFwiXG4gXG4gIG9wZW4gUGFyc2VyXG5cbiMgNiBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMjQ5XFwyNTVcXDI1MFxcMjU1XFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHRva2VuIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDYgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgZFxuIyAxMDkgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNiBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICggRElHSVRTKGludF9vZl9zdHJpbmcgZCkgKVxuIyAxMTMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDcgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBURVhUX09CSkVDVF9LRVkoVGVybSkgKVxuIyAxMTggXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDggXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAoIFRFWFRfT0JKRUNUX0tFWShQYXJlbnRoZXNpcykgKVxuIyAxMjMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDkgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBBQ1RJT05fS0VZKE1vdmUpIClcbiMgMTI4IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxMCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIFFVRVJZX0RFQ09SQVRJT04oRGVmaW5pdGlvbikgKVxuIyAxMzMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDExIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICggUVVFUllfS0VZKFR5cGUpIClcbiMgMTM4IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyAxMiBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIFFVRVJZX0tFWShSZWFkKSApXG4jIDE0MyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBURVhUX09CSkVDVF9JTk5FUiApXG4jIDE0OCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTQgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBURVhUX09CSkVDVF9RVUVSWSApXG4jIDE1MyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTUgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0b2tlbiBsZXhidWYgKVxuIyAxNTggXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxuIyAxNiBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEVPRiApXG4jIDE2MyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDE3IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmFpbHdpdGggKFwiVW5leHBlY3RlZCBjaGFyYWN0ZXI6IFwiIF4gTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTY4IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIntcbiAgb3BlbiBQYXJzZXJcbn1cblxucnVsZSB0b2tlbiA9IHBhcnNlXG4gIHwgWycwJy0nOSddKyBhcyBkIHsgRElHSVRTKGludF9vZl9zdHJpbmcgZCkgfVxuICB8ICd3JyAgICAgICAgICAgeyBURVhUX09CSkVDVF9LRVkoVGVybSkgfVxuICB8IFsnKCcgJyknXSAgICB7IFRFWFRfT0JKRUNUX0tFWShQYXJlbnRoZXNpcykgfVxuICB8ICdtJyAgICAgICAgICAgeyBBQ1RJT05fS0VZKE1vdmUpIH1cbiAgfCAnZCcgICAgICAgICAgIHsgUVVFUllfREVDT1JBVElPTihEZWZpbml0aW9uKSB9XG4gIHwgJ3QnICAgICAgICAgICB7IFFVRVJZX0tFWShUeXBlKSB9XG4gIHwgJ3InICAgICAgICAgICB7IFFVRVJZX0tFWShSZWFkKSB9XG4gIHwgJ2knICAgICAgICAgICB7IFRFWFRfT0JKRUNUX0lOTkVSIH1cbiAgfCAncScgICAgICAgICAgIHsgVEVYVF9PQkpFQ1RfUVVFUlkgfVxuICB8IFsnICcgJ1xcdCcgJ1xcbicgJ1xcciddICAgeyB0b2tlbiBsZXhidWYgfSAgKCogU2tpcCB3aGl0ZXNwYWNlcyAqKVxuICB8IGVvZiAgICAgICAgICAgeyBFT0YgfVxuICB8IF8gICAgICAgICAgICAgeyBmYWlsd2l0aCAoXCJVbmV4cGVjdGVkIGNoYXJhY3RlcjogXCIgXiBMZXhpbmcubGV4ZW1lIGxleGJ1ZikgfVxuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHJlYXNvbiA9XG4gIHwgVW5yZWNvZ25pemVkXG4gIHwgRmFpbHVyZShBY3Rpb24uRmFpbHVyZS50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICByZWFzb24sXG4gIHByaW9yX2F0dGVtcHRzOiBpbnQsXG59O1xuXG5sZXQgbWsgPSAofnByaW9yX2F0dGVtcHRzPTAsIHJlYXNvbikgPT4ge3JlYXNvbiwgcHJpb3JfYXR0ZW1wdHN9O1xuXG5sZXQgcmVwbGFjZV9vcl9pbmNyZW1lbnRfYXR0ZW1wdHMgPSAocmVhc29uLCBmYWlsZWRfaW5wdXQ6IHQpID0+XG4gIHJlYXNvbiA9PSBmYWlsZWRfaW5wdXQucmVhc29uXG4gICAgPyB7Li4uZmFpbGVkX2lucHV0LCBwcmlvcl9hdHRlbXB0czogZmFpbGVkX2lucHV0LnByaW9yX2F0dGVtcHRzICsgMX1cbiAgICA6IG1rKHJlYXNvbik7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWN0aW9uID1cbiAgfCBUdXJuT2ZmRHluYW1pY3NcbiAgfCBDbGVhclN0b3JlO1xuXG5sZXQgcGVyZm9ybSA9IChhY3Rpb246IGFjdGlvbik6IHVuaXQgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbikge1xuICB8IFR1cm5PZmZEeW5hbWljcyA9PlxuICAgIGxldCBzZXR0aW5ncyA9IFN0b3JlLlNldHRpbmdzLmxvYWQoKTtcbiAgICBTdG9yZS5TZXR0aW5ncy5zYXZlKHtcbiAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgY29yZToge1xuICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLFxuICAgICAgICBkeW5hbWljczogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuICB8IENsZWFyU3RvcmUgPT4gSnNVdGlsLmNsZWFyX2xvY2Fsc3RvcmUoKVxuICB9O1xuICBKc19vZl9vY2FtbC5Eb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbiMjcmVwbGFjZShcbiAgICBKc19vZl9vY2FtbC5Kcy5zdHJpbmcoXCIjXCIpLFxuICApO1xuICBKc19vZl9vY2FtbC5Eb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbiMjcmVsb2FkO1xufTtcblxubGV0IGJ0biA9IChjYXB0aW9uLCBhY3Rpb24pID0+IHtcbiAgTm9kZS4oXG4gICAgYnV0dG9uKFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IHtcbiAgICAgICAgICAgIHBlcmZvcm0oYWN0aW9uKTtcbiAgICAgICAgICAgIFVpX2VmZmVjdC5JZ25vcmU7XG4gICAgICAgICAgfSksXG4gICAgICAgIF0pLFxuICAgICAgW3RleHQoY2FwdGlvbildLFxuICAgIClcbiAgKTtcbn07XG5cbmxldCB2aWV3ID0ge1xuICBOb2RlLihcbiAgICBkaXYoW1xuICAgICAgYnRuKFwidHVybiBvZmYgZHluYW1pY3NcIiwgVHVybk9mZkR5bmFtaWNzKSxcbiAgICAgIGJ0bihcImNsZWFyIGxvY2FsIHN0b3JhZ2UgKExPU0UgQUxMIERBVEEhKVwiLCBDbGVhclN0b3JlKSxcbiAgICBdKVxuICApO1xufTtcblxubW9kdWxlIEFwcCA9IHtcbiAgbW9kdWxlIE1vZGVsID0ge1xuICAgIHR5cGUgdCA9IHVuaXQ7XG4gICAgbGV0IGN1dG9mZiA9IChfLCBfKSA9PiBmYWxzZTtcbiAgfTtcbiAgbW9kdWxlIEFjdGlvbiA9IHtcbiAgICB0eXBlIHQgPSB1bml0O1xuICAgIGxldCBzZXhwX29mX3QgPSBfID0+IFNleHBsaWIuU2V4cC51bml0O1xuICB9O1xuICBtb2R1bGUgU3RhdGUgPSB7XG4gICAgdHlwZSB0ID0gdW5pdDtcbiAgfTtcbiAgbGV0IG9uX3N0YXJ0dXAgPSAofnNjaGVkdWxlX2FjdGlvbiBhcyBfLCBfKSA9PlxuICAgIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC5yZXR1cm4oKTtcbiAgbGV0IGNyZWF0ZSA9IChfLCB+b2xkX21vZGVsIGFzIF8sIH5pbmplY3QgYXMgXykgPT5cbiAgICBJbmNyX2RvbS5JbmNyLnJldHVybigpXG4gICAgfD4gSW5jcl9kb20uSW5jci5tYXAofmY9XyA9PlxuICAgICAgICAgSW5jcl9kb20uQ29tcG9uZW50LmNyZWF0ZShcbiAgICAgICAgICAgfmFwcGx5X2FjdGlvbj0oXywgXywgfnNjaGVkdWxlX2FjdGlvbiBhcyBfKSA9PiAoKSxcbiAgICAgICAgICAgKCksXG4gICAgICAgICAgIHZpZXcsXG4gICAgICAgICApXG4gICAgICAgKTtcbn07XG5cbmxldCBnbyA9ICgpID0+XG4gIEluY3JfZG9tLlN0YXJ0X2FwcC5zdGFydChcbiAgICAobW9kdWxlIEFwcCksXG4gICAgfmRlYnVnPWZhbHNlLFxuICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZD1cImNvbnRhaW5lclwiLFxuICAgIH5pbml0aWFsX21vZGVsPSgpLFxuICApO1xuIiwib3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBEb2MgPSBQcmV0dHkuRG9jO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBEb2MudChESEFubm90LnQpO1xuXG50eXBlIGZvcm1hdHRhYmxlX2NoaWxkID0gKH5lbmZvcmNlX2lubGluZTogYm9vbCkgPT4gdDtcblxubGV0IHByZWNlZGVuY2VfY29uc3QgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9jb25zdDtcbmxldCBwcmVjZWRlbmNlX0FwID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQXA7XG5sZXQgcHJlY2VkZW5jZV9UaW1lcyA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1RpbWVzO1xubGV0IHByZWNlZGVuY2VfRGl2aWRlID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRGl2aWRlO1xubGV0IHByZWNlZGVuY2VfUGx1cyA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1BsdXM7XG5sZXQgcHJlY2VkZW5jZV9NaW51cyA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX01pbnVzO1xubGV0IHByZWNlZGVuY2VfQ29ucyA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0NvbnM7XG5sZXQgcHJlY2VkZW5jZV9FcXVhbHMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9FcXVhbHM7XG5sZXQgcHJlY2VkZW5jZV9MZXNzVGhhbiA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0xlc3NUaGFuO1xubGV0IHByZWNlZGVuY2VfR3JlYXRlclRoYW4gPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9HcmVhdGVyVGhhbjtcbmxldCBwcmVjZWRlbmNlX0FuZCA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FuZDtcbmxldCBwcmVjZWRlbmNlX09yID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfT3I7XG5sZXQgcHJlY2VkZW5jZV9Db21tYSA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0NvbW1hO1xubGV0IHByZWNlZGVuY2VfbWF4ID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfbWF4O1xuXG5sZXQgcGFkX2NoaWxkID1cbiAgICAoXG4gICAgICB+aW5saW5lX3BhZGRpbmcgYXMgKGwsIHIpPShEb2MuZW1wdHkoKSwgRG9jLmVtcHR5KCkpLFxuICAgICAgfmVuZm9yY2VfaW5saW5lOiBib29sLFxuICAgICAgY2hpbGQ6IGZvcm1hdHRhYmxlX2NoaWxkLFxuICAgIClcbiAgICA6IHQgPT4ge1xuICBsZXQgaW5saW5lX2Nob2ljZSA9IERvYy5oY2F0cyhbbCwgY2hpbGQofmVuZm9yY2VfaW5saW5lPXRydWUpLCByXSk7XG4gIGxldCBwYXJhX2Nob2ljZSA9XG4gICAgRG9jLihcbiAgICAgIGhjYXRzKFtcbiAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgIGluZGVudF9hbmRfYWxpZ24oY2hpbGQofmVuZm9yY2VfaW5saW5lPWZhbHNlKSksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgXSlcbiAgICApO1xuICBlbmZvcmNlX2lubGluZSA/IGlubGluZV9jaG9pY2UgOiBEb2MuY2hvaWNlKGlubGluZV9jaG9pY2UsIHBhcmFfY2hvaWNlKTtcbn07XG5cbm1vZHVsZSBEZWxpbSA9IHtcbiAgbGV0IG1rID0gKGRlbGltX3RleHQ6IHN0cmluZyk6IHQgPT5cbiAgICBEb2MudGV4dChkZWxpbV90ZXh0KSB8PiBEb2MuYW5ub3QoREhBbm5vdC5EZWxpbSk7XG5cbiAgbGV0IGVtcHR5X2hvbGUgPSAoKHUsIGkpOiBIb2xlSW5zdGFuY2UudCk6IHQgPT4ge1xuICAgIGxldCBsYmwgPSBTdHJpbmdVdGlsLmNhdChbSWQudG9fc3RyaW5nKHUpLCBcIjpcIiwgc3RyaW5nX29mX2ludChpICsgMSldKTtcbiAgICBEb2MudGV4dChsYmwpXG4gICAgfD4gRG9jLmFubm90KERIQW5ub3QuSG9sZUxhYmVsKVxuICAgIHw+IERvYy5hbm5vdChESEFubm90LkRlbGltKTtcbiAgfTtcblxuICBsZXQgbGlzdF9uaWwgPSBtayhcIltdXCIpO1xuICBsZXQgdHJpdiA9IG1rKFwiKClcIik7XG4gIGxldCB3aWxkID0gbWsoXCJfXCIpO1xuXG4gIGxldCBvcGVuX1BhcmVudGhlc2l6ZWQgPSBtayhcIihcIik7XG4gIGxldCBjbG9zZV9QYXJlbnRoZXNpemVkID0gbWsoXCIpXCIpO1xuXG4gIGxldCBzeW1fRnVuID0gbWsoXCJmdW5cIik7XG4gIGxldCBjb2xvbl9MYW0gPSBtayhcIjpcIik7XG4gIGxldCBvcGVuX0xhbSA9IG1rKFwiLntcIik7XG4gIGxldCBjbG9zZV9MYW0gPSBtayhcIn1cIik7XG5cbiAgbGV0IGZpeF9GaXhGID0gbWsoXCJmaXhcIik7XG4gIGxldCBjb2xvbl9GaXhGID0gbWsoXCI6XCIpO1xuICBsZXQgb3Blbl9GaXhGID0gbWsoXCIue1wiKTtcbiAgbGV0IGNsb3NlX0ZpeEYgPSBtayhcIn1cIik7XG4gIGxldCBvcGVuX0Nhc2UgPSBtayhcImNhc2VcIik7XG4gIGxldCBjbG9zZV9DYXNlID0gbWsoXCJlbmRcIik7XG5cbiAgbGV0IGJhcl9SdWxlID0gbWsoXCJ8XCIpO1xuICBsZXQgYXJyb3dfUnVsZSA9IG1rKFwiPT5cIik7XG5cbiAgbGV0IG9wZW5fQ2FzdCA9IG1rKFwiPFwiKTtcbiAgbGV0IGFycm93X0Nhc3QgPSBtayhVbmljb2RlLmNhc3RBcnJvd1N5bSk7XG4gIGxldCBjbG9zZV9DYXN0ID0gbWsoXCI+XCIpO1xuXG4gIGxldCBvcGVuX0ZhaWxlZENhc3QgPSBvcGVuX0Nhc3QgfD4gRG9jLmFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlbGltKTtcbiAgbGV0IGFycm93X0ZhaWxlZENhc3QgPVxuICAgIG1rKFVuaWNvZGUuY2FzdEFycm93U3ltKSB8PiBEb2MuYW5ub3QoREhBbm5vdC5GYWlsZWRDYXN0RGVsaW0pO1xuICBsZXQgY2xvc2VfRmFpbGVkQ2FzdCA9IGNsb3NlX0Nhc3QgfD4gRG9jLmFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlbGltKTtcbn07XG5cbmxldCBta19FbXB0eUhvbGUgPSAofnNlbGVjdGVkPWZhbHNlLCAodSwgaSkpID0+XG4gIERlbGltLmVtcHR5X2hvbGUoKHUsIGkpKVxuICB8PiBEb2MuYW5ub3QoREhBbm5vdC5FbXB0eUhvbGUoc2VsZWN0ZWQsICh1LCBpKSkpO1xuXG5sZXQgbWtfS2V5d29yZCA9ICh1LCBpLCBrKSA9PlxuICBEb2MudGV4dChFeHBhbmRpbmdLZXl3b3JkLnRvX3N0cmluZyhrKSlcbiAgfD4gRG9jLmFubm90KERIQW5ub3QuVmFySG9sZShFeHBhbmRpbmdLZXl3b3JkKGspLCAodSwgaSkpKTtcblxubGV0IG1rX0ludExpdCA9IG4gPT4gRG9jLnRleHQoc3RyaW5nX29mX2ludChuKSk7XG5cbmxldCBta19GbG9hdExpdCA9IChmOiBmbG9hdCkgPT5cbiAgc3dpdGNoIChmIDwgMC4sIEZsb2F0LmlzX2luZmluaXRlKGYpLCBGbG9hdC5pc19uYW4oZikpIHtcbiAgfCAoZmFsc2UsIHRydWUsIF8pID0+IERvYy50ZXh0KFwiSW5mXCIpXG4gIC8qIFRPRE86IE5lZ0luZiBpcyB0ZW1wb3JhcmlseSBpbnRyb2R1Y2VkIHVudGlsIHVuYXJ5IG1pbnVzIGlzIGludHJvZHVjZWQgdG8gSGF6ZWwgKi9cbiAgfCAodHJ1ZSwgdHJ1ZSwgXykgPT4gRG9jLnRleHQoXCJOZWdJbmZcIilcbiAgfCAoXywgXywgdHJ1ZSkgPT4gRG9jLnRleHQoXCJOYU5cIilcbiAgfCBfID0+IERvYy50ZXh0KHN0cmluZ19vZl9mbG9hdChmKSlcbiAgfTtcblxubGV0IG1rX0Jvb2xMaXQgPSBiID0+IERvYy50ZXh0KHN0cmluZ19vZl9ib29sKGIpKTtcblxubGV0IG1rX0NvbnMgPSAoaGQsIHRsKSA9PiBEb2MuKGhjYXRzKFtoZCwgdGV4dChcIjo6XCIpLCB0bF0pKTtcblxubGV0IG1rX1BhaXIgPSAoZG9jMSwgZG9jMikgPT4gRG9jLihoY2F0cyhbZG9jMSwgdGV4dChcIiwgXCIpLCBkb2MyXSkpO1xuXG5sZXQgbWtfQXAgPSAoZG9jMSwgZG9jMikgPT4gRG9jLmhzZXBzKFtkb2MxLCBkb2MyXSk7XG4iLCIoKiBjb3B5IHRoaXMgZmlsZSwgZmlsbGluZyBpbiB0aGUgZGV0YWlscyBiZWxvdywgdG8gY3JlYXRlIGEgYmxhbmsgZXhlcmNpc2UgdGhhdCB5b3UgY2FuIHRoZW4gZWRpdCBpbiBIYXplbFxuICAgYW5kIGV4cG9ydCwgb3ZlcndyaXRpbmcgeW91ciBjb3B5IG9mIHRoZSBiZWxvd1xuXG4gICBmb3IgcHJvbXB0cywgeW91IG5lZWQgdG8gZGVmaW5lIGEgc2VwYXJhdGUgZmlsZSB7bW9kdWxlX25hbWV9X3Byb21wdC5yZSAoc2VlIGV4YW1wbGVzKVxuKilcblxubGV0IGV4ZXJjaXNlID1cbiAgRXhlcmNpc2UuYmxhbmtfc3BlYyB+dGl0bGU6XCJSZWN1cnNpdmUgRmlib25hY2NpXCJcbiAgICB+bW9kdWxlX25hbWU6XCJFeF9SZWN1cnNpdmVGaWJvbmFjY2lcIlxuICAgICAgKCogbWFrZSBzdXJlIHlvdXIgZmlsZSBpcyBuYW1lZCA8bW9kdWxlX25hbWU+Lm1sICopXG4gICAgfnBvaW50X2Rpc3RyaWJ1dGlvbjpcbiAgICAgIHsgdGVzdF92YWxpZGF0aW9uID0gMTA7IG11dGF0aW9uX3Rlc3RpbmcgPSA0MDsgaW1wbF9ncmFkaW5nID0gNTAgfVxuICAgICAgKCogaWYgbXV0YXRpb25fdGVzdGluZyA9IDAsIHRoZW4gbm8gbXV0YXRpb24gdGVzdGluZyBib3ggd2lsbCBzaG93IHVwICopXG4gICAgfnJlcXVpcmVkX3Rlc3RzOjUgfnByb3ZpZGVkX3Rlc3RzOjAgfm51bV93cm9uZ19pbXBsczoyXG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb20uQXR0cjtcblxubGV0IGZzdHIgPSBmID0+IFByaW50Zi5zcHJpbnRmKFwiJWZcIiwgZik7XG5cbmxldCBjeCA9IGYgPT4gY3JlYXRlKFwiY3hcIiwgZnN0cihmKSk7XG5sZXQgY3kgPSBmID0+IGNyZWF0ZShcImN5XCIsIGZzdHIoZikpO1xubGV0IHJ4ID0gZiA9PiBjcmVhdGUoXCJyeFwiLCBmc3RyKGYpKTtcbmxldCByeSA9IGYgPT4gY3JlYXRlKFwicnlcIiwgZnN0cihmKSk7XG5cbmxldCB4ID0gZiA9PiBjcmVhdGUoXCJ4XCIsIGZzdHIoZikpO1xubGV0IHkgPSBmID0+IGNyZWF0ZShcInlcIiwgZnN0cihmKSk7XG5sZXQgd2lkdGggPSBmID0+IGNyZWF0ZShcIndpZHRoXCIsIGZzdHIoZikpO1xubGV0IGhlaWdodCA9IGYgPT4gY3JlYXRlKFwiaGVpZ2h0XCIsIGZzdHIoZikpO1xuXG5sZXQgc3Ryb2tlX3dpZHRoID0gZiA9PiBjcmVhdGUoXCJzdHJva2Utd2lkdGhcIiwgZnN0cihmKSk7XG5sZXQgdmVjdG9yX2VmZmVjdCA9IHMgPT4gY3JlYXRlKFwidmVjdG9yLWVmZmVjdFwiLCBzKTtcbmxldCBmaWx0ZXIgPSBzID0+IGNyZWF0ZShcImZpbHRlclwiLCBzKTtcblxubGV0IG9mZnNldCA9IGYgPT4gY3JlYXRlKFwib2Zmc2V0XCIsIFByaW50Zi5zcHJpbnRmKFwiJWYlJVwiLCAxMDAuICouIGYpKTtcbmxldCBzdG9wX2NvbG9yID0gcyA9PiBjcmVhdGUoXCJzdG9wLWNvbG9yXCIsIHMpO1xubGV0IHN0b3Bfb3BhY2l0eSA9IGYgPT4gY3JlYXRlKFwic3RvcC1vcGFjaXR5XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZcIiwgZikpO1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gSW5jcl9kb207XG5vcGVuIEhhejNsd2ViO1xuXG5sZXQgc2Nyb2xsX3RvX2NhcmV0ID0gcmVmKHRydWUpO1xubGV0IGVkaXRfYWN0aW9uX2FwcGxpZWQgPSByZWYodHJ1ZSk7XG5sZXQgbGFzdF9lZGl0X2FjdGlvbiA9IHJlZihKc1V0aWwudGltZXN0YW1wKCkpO1xuXG5sZXQgb2JzZXJ2ZV9mb250X3NwZWNpbWVuID0gKGlkLCB1cGRhdGUpID0+XG4gIFJlc2l6ZU9ic2VydmVyLm9ic2VydmUoXG4gICAgfm5vZGU9SnNVdGlsLmdldF9lbGVtX2J5X2lkKGlkKSxcbiAgICB+Zj1cbiAgICAgIChlbnRyaWVzLCBfKSA9PiB7XG4gICAgICAgIGxldCBzcGVjaW1lbiA9IEpzLnRvX2FycmF5KGVudHJpZXMpWzBdO1xuICAgICAgICBsZXQgcmVjdCA9IHNwZWNpbWVuIyMuY29udGVudFJlY3Q7XG4gICAgICAgIHVwZGF0ZShcbiAgICAgICAgICBIYXozbHdlYi5Gb250TWV0cmljcy57XG4gICAgICAgICAgICByb3dfaGVpZ2h0OiByZWN0IyMuYm90dG9tIC0uIHJlY3QjIy50b3AsXG4gICAgICAgICAgICBjb2xfd2lkdGg6IHJlY3QjIy5yaWdodCAtLiByZWN0IyMubGVmdCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAoKSxcbiAgKTtcblxubGV0IHJlc3RhcnRfY2FyZXRfYW5pbWF0aW9uID0gKCkgPT5cbiAgLy8gbmVjZXNzYXJ5IHRvIHRyaWdnZXIgcmVmbG93XG4gIC8vIDxodHRwczovL2Nzcy10cmlja3MuY29tL3Jlc3RhcnQtY3NzLWFuaW1hdGlvbi8+XG4gIHRyeSh7XG4gICAgbGV0IGNhcmV0X2VsZW0gPSBKc1V0aWwuZ2V0X2VsZW1fYnlfaWQoXCJjYXJldFwiKTtcbiAgICBjYXJldF9lbGVtIyMuY2xhc3NMaXN0IyNyZW1vdmUoSnMuc3RyaW5nKFwiYmxpbmtcIikpO1xuICAgIGxldCBfID0gY2FyZXRfZWxlbSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuICAgIGNhcmV0X2VsZW0jIy5jbGFzc0xpc3QjI2FkZChKcy5zdHJpbmcoXCJibGlua1wiKSk7XG4gIH0pIHtcbiAgfCBfID0+ICgpXG4gIH07XG5cbmxldCBhcHBseSA9IChtb2RlbCwgYWN0aW9uLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik6IE1vZGVsLnQgPT4ge1xuICByZXN0YXJ0X2NhcmV0X2FuaW1hdGlvbigpO1xuICBpZiAoVXBkYXRlQWN0aW9uLmlzX2VkaXQoYWN0aW9uKSkge1xuICAgIGxhc3RfZWRpdF9hY3Rpb24gOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICAgIGVkaXRfYWN0aW9uX2FwcGxpZWQgOj0gdHJ1ZTtcbiAgfTtcbiAgaWYgKFVwZGF0ZS5zaG91bGRfc2Nyb2xsX3RvX2NhcmV0KGFjdGlvbikpIHtcbiAgICBzY3JvbGxfdG9fY2FyZXQgOj0gdHJ1ZTtcbiAgfTtcbiAgbGFzdF9lZGl0X2FjdGlvbiA6PSBKc1V0aWwudGltZXN0YW1wKCk7XG4gIHN3aXRjaCAoXG4gICAgdHJ5KHtcbiAgICAgIGxldCBuZXdfbW9kZWwgPSBVcGRhdGUuYXBwbHkobW9kZWwsIGFjdGlvbiwgc3RhdGUsIH5zY2hlZHVsZV9hY3Rpb24pO1xuICAgICAgTG9nLnVwZGF0ZShhY3Rpb24pO1xuICAgICAgbmV3X21vZGVsO1xuICAgIH0pIHtcbiAgICB8IGV4YyA9PlxuICAgICAgUHJpbnRmLnByaW50ZihcbiAgICAgICAgXCJFUlJPUjogRXhjZXB0aW9uIGR1cmluZyBhcHBseTogJXNcXG5cIixcbiAgICAgICAgUHJpbnRleGMudG9fc3RyaW5nKGV4YyksXG4gICAgICApO1xuICAgICAgRXJyb3IoRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleGMpKSk7XG4gICAgfVxuICApIHtcbiAgfCBPayhtb2RlbCkgPT4gbW9kZWxcbiAgfCBFcnJvcihGYWlsZWRUb1BlcmZvcm0oZXJyKSkgPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IHJlaW5zdGF0ZSB0aGlzIGhpc3RvcnkgZnVuY3Rpb25hbGl0eVxuICAgIHByaW50X2VuZGxpbmUoVXBkYXRlLkZhaWx1cmUuc2hvdyhGYWlsZWRUb1BlcmZvcm0oZXJyKSkpO1xuICAgIC8vey4uLm1vZGVsLCBoaXN0b3J5OiBBY3Rpb25IaXN0b3J5LmZhaWx1cmUoZXJyLCBtb2RlbC5oaXN0b3J5KX07XG4gICAgbW9kZWw7XG4gIHwgRXJyb3IoZXJyKSA9PlxuICAgIHByaW50X2VuZGxpbmUoVXBkYXRlLkZhaWx1cmUuc2hvdyhlcnIpKTtcbiAgICBtb2RlbDtcbiAgfTtcbn07XG5cbm1vZHVsZSBBcHAgPSB7XG4gIG1vZHVsZSBNb2RlbCA9IE1vZGVsO1xuICBtb2R1bGUgQWN0aW9uID0gVXBkYXRlO1xuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZTtcblxuICBsZXQgb25fc3RhcnR1cCA9ICh+c2NoZWR1bGVfYWN0aW9uLCBtOiBNb2RlbC50KSA9PiB7XG4gICAgbGV0IF8gPVxuICAgICAgb2JzZXJ2ZV9mb250X3NwZWNpbWVuKFwiZm9udC1zcGVjaW1lblwiLCBmbSA9PlxuICAgICAgICBzY2hlZHVsZV9hY3Rpb24oSGF6M2x3ZWIuVXBkYXRlLlNldE1ldGEoRm9udE1ldHJpY3MoZm0pKSlcbiAgICAgICk7XG5cbiAgICBKc1V0aWwuZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcblxuICAgIC8qIGluaXRpYWxpemUgc3RhdGUuICovXG4gICAgbGV0IHN0YXRlID0gU3RhdGUuaW5pdCgpO1xuXG4gICAgLyogSW5pdGlhbCBldmFsdWF0aW9uIG9uIGEgd29ya2VyICovXG4gICAgVXBkYXRlLnNjaGVkdWxlX2V2YWx1YXRpb24ofnNjaGVkdWxlX2FjdGlvbiwgbSk7XG5cbiAgICBPcy5pc19tYWMgOj1cbiAgICAgIERvbV9odG1sLndpbmRvdyMjLm5hdmlnYXRvciMjLnBsYXRmb3JtIyN0b1VwcGVyQ2FzZSMjaW5kZXhPZihcbiAgICAgICAgSnMuc3RyaW5nKFwiTUFDXCIpLFxuICAgICAgKVxuICAgICAgPj0gMDtcbiAgICBBc3luY19rZXJuZWwuRGVmZXJyZWQucmV0dXJuKHN0YXRlKTtcbiAgfTtcblxuICBsZXQgY3JlYXRlID1cbiAgICAgIChcbiAgICAgICAgbW9kZWw6IEluY3IudChIYXozbHdlYi5Nb2RlbC50KSxcbiAgICAgICAgfm9sZF9tb2RlbCBhcyBfOiBJbmNyLnQoSGF6M2x3ZWIuTW9kZWwudCksXG4gICAgICAgIH5pbmplY3QsXG4gICAgICApID0+IHtcbiAgICBvcGVuIEluY3IuTGV0X3N5bnRheDtcbiAgICBsZXQlbWFwIG1vZGVsID0gbW9kZWw7XG4gICAgLyogTm90ZTogbWFwcGluZyBvdmVyIHRoZSBvbGRfbW9kZWwgaGVyZSBtYXlcbiAgICAgICB0cmlnZ2VyIGFuIGFkZGl0aW9uYWwgcmVkcmF3ICovXG4gICAgQ29tcG9uZW50LmNyZWF0ZShcbiAgICAgIH5hcHBseV9hY3Rpb249YXBwbHkobW9kZWwpLFxuICAgICAgbW9kZWwsXG4gICAgICBIYXozbHdlYi5QYWdlLnZpZXcofmluamVjdCwgbW9kZWwpLFxuICAgICAgfm9uX2Rpc3BsYXk9KF8sIH5zY2hlZHVsZV9hY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKGVkaXRfYWN0aW9uX2FwcGxpZWReXG4gICAgICAgICAgICAmJiBKc1V0aWwudGltZXN0YW1wKClcbiAgICAgICAgICAgIC0uIGxhc3RfZWRpdF9hY3Rpb25eID4gMTAwMC4wKSB7XG4gICAgICAgICAgLyogSWYgYW4gZWRpdCBhY3Rpb24gaGFzIGJlZW4gYXBwbGllZCwgYnV0IG5vIG90aGVyIGVkaXQgYWN0aW9uXG4gICAgICAgICAgICAgaGFzIGJlZW4gYXBwbGllZCBmb3IgMSBzZWNvbmQsIHNhdmUgdGhlIG1vZGVsLiAqL1xuICAgICAgICAgIGVkaXRfYWN0aW9uX2FwcGxpZWQgOj0gZmFsc2U7XG4gICAgICAgICAgcHJpbnRfZW5kbGluZShcIlNhdmluZy4uLlwiKTtcbiAgICAgICAgICBzY2hlZHVsZV9hY3Rpb24oVXBkYXRlLlNhdmUpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoc2Nyb2xsX3RvX2NhcmV0LmNvbnRlbnRzKSB7XG4gICAgICAgICAgc2Nyb2xsX3RvX2NhcmV0IDo9IGZhbHNlO1xuICAgICAgICAgIEpzVXRpbC5zY3JvbGxfY3Vyc29yX2ludG9fdmlld19pZl9uZWVkZWQoKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcbn07XG5cbnN3aXRjaCAoSnNVdGlsLkZyYWdtZW50LmdldF9jdXJyZW50KCkpIHtcbnwgU29tZShcImRlYnVnXCIpID0+IERlYnVnTW9kZS5nbygpXG58IF8gPT5cbiAgSW5jcl9kb20uU3RhcnRfYXBwLnN0YXJ0KFxuICAgIChtb2R1bGUgQXBwKSxcbiAgICB+ZGVidWc9ZmFsc2UsXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkPVwiY29udGFpbmVyXCIsXG4gICAgfmluaXRpYWxfbW9kZWw9TW9kZWwubG9hZChNb2RlbC5ibGFuayksXG4gIClcbn07XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEVuc3VyZSB0aGF0IFthdF9leGl0XSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHByb2dyYW0gKilcblxubGV0IF8gPSBkb19hdF9leGl0KClcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiR2VuZXJpY0hvb2siLCJpbml0IiwidXBkYXRlIiwiZGVzdHJveSIsImV4dHJhIiwiaG9va19zdGF0ZV9rZXkiLCJTeW1ib2wiLCJzdGF0ZSIsImZyb20iLCJ0byIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwianNvb19zeXNfZ2V0ZW52IiwicHJvY2VzcyIsImdsb2JhbFRoaXMiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJidWZmZXIiLCJjYW1sX2ludDY0X2Zvcm1hdCIsIndiYXNlIiwiY3Z0YmwiLCJwIiwiY2FtbF9leHBtMV9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJjMSIsImMyIiwidiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiZnNfbm9kZV9zdXBwb3J0ZWQiLCJtYWtlX3BhdGhfaXNfYWJzb2x1dGUiLCJwb3NpeCIsInBhdGgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwiY29tcCIsIm5jb21wIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJNbEJ5dGVzIiwiY29udGVudHMiLCJjb250ZW50IiwiY2FtbF9pc19tbF9ieXRlcyIsImNhbWxfaXNfbWxfc3RyaW5nIiwiY2FtbF9ieXRlc19vZl9hcnJheSIsIlVpbnQ4QXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfYmxpdF9ieXRlcyIsInMxIiwiaTEiLCJzMiIsImkyIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VGZCIsImZpbGUiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJzZWVuIiwibSIsImVudHJ5Iiwib2siLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJidWZfb2Zmc2V0IiwicmVhZCIsIk1sTm9kZURldmljZSIsImNvbnN0cyIsImlzQ2hhcmFjdGVyRGV2aWNlIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiY2FtbF9zeXNfcmVuYW1lIiwib19yb290Iiwibl9yb290IiwiY2FtbF9sb2cxMF9mbG9hdCIsImNhbWxfcnVudGltZV93YXJuaW5ncyIsImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MiLCJib29sIiwiY2FtbF9jbGFzc2lmeV9mbG9hdCIsImlzRmluaXRlIiwiaXNOYU4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9yZWZpbGwiLCJjaGFuIiwic3RyX2EiLCJucmVhZCIsImNhbWxfYXJyYXlfYm91bmRfZXJyb3IiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsImNoYW5pZCIsInByZXZfbWF4IiwiY2FtbF9nY19taW5vciIsInVuaXQiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImJhIiwiY2FtbF9tbF9pbnB1dF9ibG9jayIsImF2YWlsIiwiY2FtbF9tbF9pbnB1dF9iaWdhcnJheSIsImNhbWxfaW50NjRfb2ZfYnl0ZXMiLCJjYW1sX2JhX3VpbnQ4X2dldDY0IiwiaTAiLCJvZnMiLCJiMSIsImIyIiwiYjMiLCJiNCIsImI1IiwiYjYiLCJiNyIsImI4IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfaW50NjRfbWFyc2hhbCIsIndyaXRlciIsInNpemVzIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2ludF9jb21wYXJlIiwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyIsImJhMSIsImJhMV9vZmYiLCJiYTIiLCJiYTJfb2ZmIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsInBvczEiLCJieXRlczIiLCJwb3MyIiwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NyZWF0ZV9maWxlIiwianNvb19jcmVhdGVfZmlsZSIsImNhbWxfZnNfaW5pdCIsInRtcCIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwibmFyZ3MiLCJleHRyYV9hcmdzIiwiY2FtbF9jYWxsYmFjayIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3N5c19jaGRpciIsImRpciIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmciLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImJpZ3N0cmluZ19maW5kIiwiYnMiLCJjaHIiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCIsImNhbWxfYmFfc2V0XzIiLCJjYW1sX2FyZ3YiLCJtYWluIiwiYXJndiIsImFyZ3MyIiwiY2FtbF9leGVjdXRhYmxlX25hbWUiLCJjYW1sX2pzX2V2YWxfc3RyaW5nIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QiLCJ2b3V0cHV0IiwidnN0ZG91dCIsInZzdGRlcnIiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIiLCJjYW1sX2NoZWNrX2JvdW5kIiwiYXJyYXkiLCJjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyIsImJpZ3N0cmluZyIsImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJiYXNlIiwiYmFja3RyayIsImNhbWxfc3lzX2ZpbGVfZXhpc3RzIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfYXJyYXlfc3ViIiwiY2FtbF9ieXRlc19lcXVhbCIsImNhbWxfZ3Jfc2l6ZV94IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHoiLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfTUQ1SW5pdCIsIkFycmF5QnVmZmVyIiwiYjMyIiwiVWludDMyQXJyYXkiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjb21wYXJlX25hdF9yZWFsIiwiY2FtbF9nY19zZXQiLCJjYW1sX2pzX2dldCIsImpzX3BlcmZvcm1hbmNlIiwiX2UiLCJqc19wcm9mX21hcmsiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJCYXNlX2hhc2hfc3RyaW5nIiwiY2FtbF9nY19jb21wYWN0aW9uIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiY2FtbF9zeXNfZmRzIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2Nsb3NlX2NoYW5uZWwiLCJjb3JlX21kNV9mZCIsImljIiwiY2FtbF9lcGhlX2dldF9rZXkiLCJjYW1sX3VuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiIsImV4cG9uZW50Iiwib25lIiwibXVsIiwiY2FtbF9hdG9taWNfZXhjaGFuZ2UiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImlzX2RpZ2l0X3plcm8iLCJjYW1sX3VuaXhfbHN0YXQiLCJjYW1sX3VuaXhfbHN0YXRfNjQiLCJjYW1sX2pzX3NldCIsImNhbWxfYXJyYXlfZ2V0IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwidGEiLCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX3JlYWxsb2MiLCJuZXdfZGF0YSIsIm5ld19iaWdzdHJpbmciLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9tYXliZV9wcmludF9zdGF0cyIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF91bml4X2hhc19zeW1saW5rIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJCYXNlX2FtX3Rlc3RpbmciLCJjYW1sX2J5dGVzX2xlc3N0aGFuIiwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsImNhbWxfc3lzX2dldGN3ZCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3VsdCIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfaW50NjRfb3IiLCJjYW1sX2x4bV9uZXh0Iiwic2hpZnRfbCIsInNoaWZ0X3IiLCJvciIsInhvciIsInJvdGwiLCJnZXQiLCJzZXQiLCJNIiwiZGFiYSIsInEwIiwicTEiLCJzdCIsIngwIiwiY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiIsImNhbWxfbGlzdF90b19qc19hcnJheSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImJpZ3N0cmluZ19tZW1jbXBfc3R1YiIsInZfczEiLCJ2X3MxX3BvcyIsInZfczIiLCJ2X3MyX3BvcyIsInZfbGVuIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsIlVJbnQ4QXJyYXlSZWFkZXIiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwicmVhZHZscSIsIm92ZXJmbG93IiwibjciLCJoZWFkZXJfbGVuIiwiZGF0YV9sZW4iLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZGVjb21wcmVzc19pbnB1dCIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwibWFnaWMiLCJjb21wcmVzc2VkIiwidW5jb21wcmVzc2VkX2RhdGFfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwiY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJiaWdzdHJpbmdfYWxsb2MiLCJfIiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJyZV9zZWFyY2hfYmFja3dhcmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9vdXRwdXRfdGEiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwibmV3X2RpbXMiLCJjb3JlX2djX2NvbXBhY3Rpb25zIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9zdHJpbmdfaGFzaCIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJCYXNlX2ludF9tYXRoX2ludDMyX2N0eiIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCIsImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCIsImNhbWxfY3JlYXRlX3N0cmluZyIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiIsImJpZ3N0cmluZ19tZW1zZXRfc3R1YiIsInZfcG9zIiwidl9jaGFyIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyIsIkJhc2VfaW50X21hdGhfaW50NjRfY2x6IiwiY2FtbF9hcnJheV9hcHBlbmQiLCJsMSIsImwyIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF90aW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9qc19leHByIiwiY2FtbF9qc190b19zdHJpbmciLCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY29yZV9nY190b3BfaGVhcF93b3JkcyIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJsZW5ndGhfbmF0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQiLCJpbmZvIiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9tZW1wcm9mX2Rpc2NhcmQiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6IiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nIiwiYmFfb2ZmIiwic3RyX29mZiIsImNhbWxfYnVpbGRfc3ltYm9scyIsInRvYyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZ2Nfc3RhdCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImJpZ3N0cmluZ2FmX21lbWNociIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9tZXRob2RfY2FjaGUiLCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kIiwiY2FjaGVpZCIsIm1ldGhzIiwibGkiLCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX3JvdW5kX2Zsb2F0IiwianNfcHJvZl9tZWFzdXJlIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6IiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHoiLCJpc196ZXJvIiwibGFuZCIsInNtYWxsX2ludDY0IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF9kb21haW5fZGxzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MzIiLCJjYW1sX2ZyZXhwX2Zsb2F0IiwibmVnIiwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIiLCJjb3JlX3RpbWVfbnNfZm9ybWF0IiwidGltZSIsImZvcm1hdGpzIiwianN0cmluZyIsImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsIkJhc2VfaGFzaF9kb3VibGUiLCJjYW1sX2pzX25ldyIsImNhbWxfZ3JfY3VycmVudF95IiwiY2FtbF9mb3JtYXRfaW50IiwiY29yZV9nY19oZWFwX3dvcmRzIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8iLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4iLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjb3JlX2djX21pbm9yX3dvcmRzIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJtc190b19uYW5vIiwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvIiwibXMiLCJtc19pNjMiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2FycmF5X3NldCIsIm5ld3ZhbCIsImNhbWxfYWxsb2Nfc3RhY2siLCJodiIsImh4IiwiaGYiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsInNldF9kaWdpdF9uYXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY29yZV9nY19tYWpvcl93b3JkcyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJiaWdzdHJpbmdfYmxpdF9zdHViIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwibWF4X2ludCIsIm1pbl9pbnQiLCJzeW1ib2wiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsInIiLCJsZW4kMSIsIm9mcyQxIiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2xpbmUiLCJidWlsZF9yZXN1bHQiLCJidWYiLCJwb3MkMCIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9pbl9ub2VyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnQiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2Zsb2F0IiwicmVhZF9mbG9hdF9vcHQiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sJDEiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJkb19hdF9leGl0IiwiZXhpdCIsInJldGNvZGUiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwibWFwIiwidiQwIiwiZm9sZCIsImVxdWFsIiwiZTEiLCJlMiIsInYxIiwidjIiLCJ2MSQwIiwidjIkMCIsImNvbXBhcmUiLCJvY2FtbF92ZXJzaW9uIiwib2NhbWxfcmVsZWFzZSIsImV4ZWN1dGFibGVfbmFtZSIsIm9zX3R5cGUiLCJiYWNrZW5kX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJtYXhfYXJyYXlfbGVuZ3RoIiwibWF4X2Zsb2F0YXJyYXlfbGVuZ3RoIiwibWF4X3N0cmluZ19sZW5ndGgiLCJiaWdfZW5kaWFuIiwid29yZF9zaXplIiwiaW50X3NpemUiLCJnZXRlbnZfb3B0IiwiaW50ZXJhY3RpdmUiLCJzZXRfc2lnbmFsIiwic2lnX251bSIsInNpZ19iZWgiLCJzaWdhYnJ0Iiwic2lnYWxybSIsInNpZ2ZwZSIsInNpZ2h1cCIsInNpZ2lsbCIsInNpZ2ludCIsInNpZ2tpbGwiLCJzaWdwaXBlIiwic2lncXVpdCIsInNpZ3NlZ3YiLCJzaWd0ZXJtIiwic2lndXNyMSIsInNpZ3VzcjIiLCJzaWdjaGxkIiwic2lnY29udCIsInNpZ3N0b3AiLCJzaWd0c3RwIiwic2lndHRpbiIsInNpZ3R0b3UiLCJzaWd2dGFscm0iLCJzaWdwcm9mIiwic2lnYnVzIiwic2lncG9sbCIsInNpZ3N5cyIsInNpZ3RyYXAiLCJzaWd1cmciLCJzaWd4Y3B1Iiwic2lneGZzeiIsImNhdGNoX2JyZWFrIiwib24iLCJkZXZlbG9wbWVudF92ZXJzaW9uIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwiZm9yY2luZ190YWciLCJjb250X3RhZyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImN1c3RvbV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJvYmoiLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInNldCIsImluY3IiLCJkZWNyIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUkMCIsInJlc3VsdCQwIiwiY2xvc3VyZSIsInJlc3VsdCIsImUkMCIsImZvcmNlX2xhenlfYmxvY2siLCJmb3JjZV9nZW4iLCJsenYiLCJ0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJ4cyQxIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiYWNjdSQxIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmaW5kIiwiZmluZF9tYXAiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJub25lIiwic29tZSIsInZhbHVlIiwiZGVmYXVsdCQwIiwiZ2V0IiwiYmluZCIsImpvaW4iLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwicmV2X2luaXRfdGhyZXNob2xkIiwiZmxhdHRlbiIsInJldl9tYXAiLCJmb2xkX3JpZ2h0IiwiYTIiLCJhMSIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwibWFrZSIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXRfdXRmXzhfdWNoYXIiLCJsYXN0JDEiLCJsYXN0JDAiLCJsYXN0IiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJvZl9saXN0IiwiaW5wdXRfYXJyYXkiLCJlbHQiLCJvdXRwdXRfYXJyYXkiLCJlbHQkMCIsImFjYyQyIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImUkMSIsImokMCIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImkyJDAiLCJkJDAiLCJzMiQwIiwiaTEkMCIsImQkMSIsInMxJDAiLCJpc29ydHRvIiwic3Jjb2ZzIiwic29ydHRvIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInBpIiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic2l6ZSIsImR1bW15X3BvcyIsInplcm9fcG9zIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInJlYWRfZnVuIiwic3RoIiwid2l0aF9wb3NpdGlvbnMiLCJhdXhfYnVmZmVyIiwibGV4YnVmIiwicmVhZCIsIm5ld2xlbiIsIm5ld2J1ZiIsImZyb21fY2hhbm5lbCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiZXhuJDAiLCJleG4iLCJjdXJyX2NoYXIiLCJ0b2siLCJwZWVrX3ZhbCIsInN5bWJvbF9zdGFydF9wb3MiLCJzdCIsImVuIiwic3ltYm9sX2VuZF9wb3MiLCJyaHNfc3RhcnRfcG9zIiwicmhzX2VuZF9wb3MiLCJzeW1ib2xfc3RhcnQiLCJzeW1ib2xfZW5kIiwicmhzX3N0YXJ0IiwicmhzX2VuZCIsImlzX2N1cnJlbnRfbG9va2FoZWFkIiwicGFyc2VfZXJyb3IiLCJoZWlnaHQiLCJobCIsImgkMCIsImhyIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2IiwicmxsIiwiYWRkIiwic2luZ2xldG9uIiwiYWRkX21pbl9lbGVtZW50IiwiYWRkX21heF9lbGVtZW50IiwicmgiLCJsaCIsIm1pbl9lbHQiLCJtaW5fZWx0X29wdCIsIm1heF9lbHQiLCJtYXhfZWx0X29wdCIsInJlbW92ZV9taW5fZWx0IiwiciQwIiwicHJlcyIsInByZXMkMCIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwidG9fcmVhZCQxIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsInByZXZpb3VzJDAiLCJzdGFydCQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJyZWxlYXNlIiwiYWNxdWlyZSIsInRyeV9hY3F1aXJlIiwicmV0IiwiZ2V0X3ZhbHVlIiwibWFrZSQwIiwicmVsZWFzZSQwIiwiYWNxdWlyZSQwIiwidHJ5X2FjcXVpcmUkMCIsImNwdV9yZWxheCIsInVuaXF1ZV92YWx1ZSIsImNyZWF0ZV9kbHMiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJraSIsIm1heWJlX2dyb3ciLCJzeiIsIm5ld19zeiIsIm5ld19zdCIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJzcGF3biIsInBrIiwidGVybV9tdXRleCIsInRlcm1fY29uZGl0aW9uIiwidGVybV9zdGF0ZSIsImJvZHkiLCJleCQwIiwiZXgiLCJyZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5IiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwiZm10dHkkNCIsImZtdHR5JDUiLCJmbXR0eSQ2IiwiZm10dHkkNyIsImZtdHR5JDgiLCJmbXR0eSQ5Iiwic3ViX2ZtdHR5IiwiZm10dHkkMTAiLCJzdWJfZm10dHkkMCIsImZtdHR5JDExIiwiZm10dHkkMTIiLCJmbXR0eSQxMyIsImZtdHR5JDE0IiwiZm10dHkkMTUiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJjdXIiLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwic2VlbiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG8iLCJjb25zdHJ1Y3RvciIsImZpZWxkc19vcHQiLCJjb25zdHJ1Y3RvciQwIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwiZXZlbnRsb2dfcGF1c2UiLCJldmVudGxvZ19yZXN1bWUiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIiLCJpbnQ2NCIsImludCQwIiwibmF0aXZlaW50IiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiYXJyIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInJlaW5pdCIsInNlZWQiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJpbnRhdXgiLCJib3VuZCIsImZ1bGxfaW50IiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImZsb2F0JDAiLCJib29sIiwibWtfZGVmYXVsdCIsInJhbmRvbV9rZXkiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiYml0czMyJDAiLCJiaXRzNjQkMCIsIm5hdGl2ZWJpdHMkMCIsImZ1bGxfaW5pdCIsInNlbGZfaW5pdCIsInNwbGl0JDAiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmdfa2V5IiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInNlZWRlZF9oYXNoIiwiaGFzaF9wYXJhbSIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImNvdW50IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJmbHVzaCIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwic3RkYnVmX2tleSIsInN0cl9mb3JtYXR0ZXJfa2V5IiwiYnVmZmVyZWRfb3V0X3N0cmluZyIsImJ1ZmZlcmVkX291dF9mbHVzaCIsInN0ZF9idWZfa2V5IiwiZXJyX2J1Zl9rZXkiLCJzdGRfZm9ybWF0dGVyX2tleSIsImVycl9mb3JtYXR0ZXJfa2V5IiwiZ2V0X3N0ZF9mb3JtYXR0ZXIiLCJnZXRfZXJyX2Zvcm1hdHRlciIsImdldF9zdHJfZm9ybWF0dGVyIiwiZ2V0X3N0ZGJ1ZiIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIiwib3V0cHV0JDAiLCJmbHVzaCQwIiwic3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsImZzIiwiZnMkMCIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiY2xvc2VfaW4iLCJpYyQwIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJsb3dlcmNhc2UiLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZl9nZW4iLCJlZiIsImFyZ3MkMSIsImV4YyQwIiwiZXhjIiwiYXJncyQwIiwia3NjYW5mIiwia3NjYW5mX29wdCIsImJzY2FuZiIsImJzY2FuZl9vcHQiLCJrc3NjYW5mIiwic3NjYW5mIiwic3NjYW5mX29wdCIsInNjYW5mIiwic2NhbmZfb3B0IiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiZ2V0X2RhdGEiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsImluaXRfbW9kX2Jsb2NrIiwiY29tcHMkMCIsIm1vZHUiLCJzaGFwZSIsImZuJDAiLCJjb21wcyIsImluaXRfbW9kIiwidXBkYXRlX21vZF9ibG9jayIsImNsIiwidXBkYXRlX21vZCIsInBybmciLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwic2V0X2RhdGEiLCJlcGgiLCJxdWVyeSIsInNldF9rZXlfZGF0YSIsInRlc3Rfa2V5IiwidCQwIiwiZ2V0X2tleTEiLCJzZXRfa2V5MSIsImdldF9rZXkyIiwic2V0X2tleTIiLCJnZXRfZGF0YSQwIiwic2V0X2RhdGEkMCIsIm1ha2UkMSIsImtleTEiLCJrZXkyIiwicXVlcnkkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsInNlZWRlZF9oYXNoJDAiLCJtYWtlJDIiLCJhZGQkMCIsInRlc3Rfa2V5cyIsInJlbW92ZSQwIiwiZmluZCQwIiwibGVuZ3RoJDAiLCJjbGVhciQwIiwibGVuZ3RoJDEiLCJnZXRfa2V5JDAiLCJzZXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwic2V0X2RhdGEkMSIsIm1ha2UkMyIsInF1ZXJ5JDEiLCJtYWtlJDQiLCJhZGQkMSIsInRlc3Rfa2V5cyQwIiwicmVtb3ZlJDEiLCJmaW5kJDEiLCJsZW5ndGgkMiIsImNsZWFyJDEiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiZ2VuZXJpY19iYXNlbmFtZSIsImlzX2Rpcl9zZXAiLCJnZW5lcmljX2Rpcm5hbWUiLCJpc19yZWxhdGl2ZSIsImlzX2ltcGxpY2l0IiwiY2hlY2tfc3VmZml4Iiwic3VmZiIsImNob3Bfc3VmZml4X29wdCIsImxlbl9mIiwidGVtcF9kaXJfbmFtZSIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDAiLCJsb29wJDAiLCJsb29wX2JzIiwiYWRkX2JzIiwicXVvdGVfY21kX2ZpbGVuYW1lIiwicXVvdGVfY29tbWFuZCQwIiwiZHJpdmVfYW5kX3BhdGgiLCJkaXJuYW1lJDAiLCJwYXRoIiwiZHJpdmUiLCJkaXIiLCJiYXNlbmFtZSQwIiwiYmFzZW5hbWUkMSIsImRpcm5hbWUkMSIsIm51bGwkMyIsImN1cnJlbnRfZGlyX25hbWUkMiIsInBhcmVudF9kaXJfbmFtZSQyIiwiZGlyX3NlcCQyIiwiaXNfZGlyX3NlcCQxIiwiaXNfcmVsYXRpdmUkMSIsImlzX2ltcGxpY2l0JDEiLCJjaGVja19zdWZmaXgkMSIsImNob3Bfc3VmZml4X29wdCQxIiwidGVtcF9kaXJfbmFtZSQxIiwicXVvdGUkMSIsInF1b3RlX2NvbW1hbmQkMSIsImJhc2VuYW1lJDIiLCJkaXJuYW1lJDIiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJpMCIsImV4dGVuc2lvbiIsImNob3BfZXh0ZW5zaW9uIiwicmVtb3ZlX2V4dGVuc2lvbiIsInRlbXBfZmlsZV9uYW1lIiwidGVtcF9kaXIiLCJyYW5kb21fc3RhdGUiLCJybmQiLCJjdXJyZW50X3RlbXBfZGlyX25hbWUiLCJzZXRfdGVtcF9kaXJfbmFtZSIsImdldF90ZW1wX2Rpcl9uYW1lIiwidGVtcF9maWxlIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93Iiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4kMCIsIm5ld19sZW4kMSIsImlucHV0X2FsbCIsImNodW5rX3NpemUiLCJpbml0aWFsX3NpemUkMCIsImluaXRpYWxfc2l6ZSQxIiwibnJlYWQiLCJidWYkMiIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJzZXRfYmluYXJ5X21vZGUiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJtYXhfaW50IiwibWluX2ludCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJib29sX29mX3N0cmluZ19vcHQiLCJib29sX29mX3N0cmluZyIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnRfb3B0IiwicmVhZF9pbnQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfZmxvYXQiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsIm9wZW5fb3V0X2dlbiIsImZsdXNoIiwiZmx1c2hfYWxsIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0X2J5dGVzIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfdmFsdWUiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfb3V0Iiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwib3Blbl9pbl9nZW4iLCJpbnB1dF9jaGFyIiwiaW5wdXRfbGluZSIsImlucHV0IiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsImNsb3NlX2luX25vZXJyIiwic2V0X2JpbmFyeV9tb2RlX2luIiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCIsImV4aXQiLCJhdF9leGl0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiZG9fYXRfZXhpdCIsImRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IiwiYm9vbF90b19pbnQiLCJzeW1ib2wkMyIsInN5bWJvbCQ0Iiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsImFzY2VuZGluZyIsIm1heCQwIiwibWluJDAiLCJhc2NlbmRpbmckMCIsImRlc2NlbmRpbmckMCIsIm1heCQxIiwibWluJDEiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJhc2NlbmRpbmckMSIsImRlc2NlbmRpbmckMSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCQyIiwibWluJDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsIm1heCQzIiwibWluJDMiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJhc2NlbmRpbmckMyIsImRlc2NlbmRpbmckMyIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJtYXgkNCIsIm1pbiQ0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiYXNjZW5kaW5nJDQiLCJkZXNjZW5kaW5nJDQiLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwibWF4JDUiLCJtaW4kNSIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsImFzY2VuZGluZyQ1IiwiZGVzY2VuZGluZyQ1IiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQ2IiwibWluJDYiLCJpIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwic3ltYm9sJDQyIiwiYXNjZW5kaW5nJDYiLCJkZXNjZW5kaW5nJDYiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwibWF4JDciLCJtaW4kNyIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsImFzY2VuZGluZyQ3IiwiZGVzY2VuZGluZyQ3IiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsIm1heCQ4IiwibWluJDgiLCJzeW1ib2wkNDkiLCJzeW1ib2wkNTAiLCJzeW1ib2wkNTEiLCJzeW1ib2wkNTIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJhc2NlbmRpbmckOCIsImRlc2NlbmRpbmckOCIsImNvbXBhcmUkNSIsImVxdWFsJDUiLCJtYXgkOSIsIm1pbiQ5Iiwic3ltYm9sJDU1Iiwic3ltYm9sJDU2Iiwic3ltYm9sJDU3Iiwic3ltYm9sJDU4Iiwic3ltYm9sJDU5Iiwic3ltYm9sJDYwIiwiYXNjZW5kaW5nJDkiLCJkZXNjZW5kaW5nJDkiLCJjb21wYXJlJDYiLCJlcXVhbCQ2IiwibWF4JDEwIiwibWluJDEwIiwic3ltYm9sJDYxIiwic3ltYm9sJDYyIiwic3ltYm9sJDYzIiwic3ltYm9sJDY0IiwiYXNyIiwibGFuZCIsImxub3QkMCIsImxvciIsImxzbCIsImxzciIsImx4b3IiLCJtb2QiLCJhYnMkMCIsImZhaWx3aXRoJDAiLCJmc3QiLCJpbnZhbGlkX2FyZyQwIiwic25kIiwicGh5c19lcXVhbCIsImRlY3IiLCJpbmNyIiwiZmxvYXRfb2Zfc3RyaW5nIiwiYW1fdGVzdGluZyIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwidCIsImYiLCJmb2xkX3JpZ2h0IiwiaXRlciIsIml0ZXJpIiwibWFwIiwibWFwaSIsInN0YWJsZV9zb3J0Iiwic3dhcCIsImoiLCJlbHRfaSIsImVsdF9qIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInRvX2ludCIsInVuc2FmZV9vZl9pbnQiLCJ1cHBlcmNhc2UiLCJpbnRfaXNfb2siLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJvZl9pbnQiLCJvZl9pbnRfZXhuIiwidDEiLCJ0MiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJzdWNjIiwiaGRfZXhuIiwibGVuZ3RoIiwicmV2X2FwcGVuZCIsInRsX2V4biIsInVuemlwIiwiZXhpc3RzIiwiZXhpc3RzMl9vayIsImwxIiwibDIiLCJmb2xkMl9vayIsImZvcl9hbGwiLCJmb3JfYWxsMl9vayIsIml0ZXIyX29rIiwibm9udGFpbF9tYXAiLCJub250YWlsX21hcGkiLCJwYXJ0aXRpb24iLCJyZXZfbWFwIiwicmV2X21hcDJfb2siLCJzb3J0IiwibCIsInJldiIsInJlcyIsInJlc3QiLCJhIiwiYiIsImhhc2hfZm9sZF91bml0IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZm9sZF9zdHJpbmciLCJhc19pbnQiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImhhc2hfZm9sZF9vcHRpb24iLCJoYXNoX2ZvbGRfZWxlbSIsImhhc2hfZm9sZF9saXN0IiwicyQxIiwibGlzdCQxIiwicyQyIiwibGlzdCIsImxpc3QkMCIsInMkMCIsImhhc2hfZm9sZF9sYXp5X3QiLCJoYXNoX2ZvbGRfcmVmX2Zyb3plbiIsImhhc2hfZm9sZF9hcnJheV9mcm96ZW4iLCJhcnJheSIsImUiLCJpJDAiLCJoYXNoX25hdGl2ZWludCIsImhhc2hfaW50NjQiLCJoYXNoX2ludDMyIiwiaGFzaF9jaGFyIiwiaGFzaF9pbnQiLCJoYXNoX2Jvb2wiLCJoYXNoX3N0cmluZyIsImhhc2hfZmxvYXQiLCJoYXNoX3VuaXQiLCJzZWVkIiwib2ZfZm9sZCIsImhhc2hfZm9sZF90IiwicnVuIiwiZm9sZGVyIiwib3B0Iiwic3RoIiwiY29tcGFyZV9zdGF0ZSIsInN0YXRlX3RvX3N0cmluZyIsInN0YXRlIiwidCQwIiwidCQxIiwidCQyIiwidCQzIiwidCQ0IiwidCQ1IiwiY29tcGFyZV9hYnN0cmFjdCIsInR5cGVfbmFtZSIsImVxdWFsX2Fic3RyYWN0IiwiY29tcGFyZV9ib29sIiwiY29tcGFyZV9jaGFyIiwiY29tcGFyZV9mbG9hdCIsImNvbXBhcmVfaW50IiwiY29tcGFyZV9pbnQzMiIsImNvbXBhcmVfaW50NjQiLCJjb21wYXJlX25hdGl2ZWludCIsImNvbXBhcmVfc3RyaW5nIiwiY29tcGFyZV91bml0IiwiY29tcGFyZV9hcnJheSIsImNvbXBhcmVfZWx0IiwibGVuX2EiLCJsZW5fYiIsInJldCIsInIiLCJjb21wYXJlX2xpc3QiLCJhJDAiLCJiJDAiLCJ5cyIsInhzIiwiY29tcGFyZV9vcHRpb24iLCJjb21wYXJlX3JlZiIsImVxdWFsX2Jvb2wiLCJlcXVhbF9jaGFyIiwiZXF1YWxfaW50IiwiZXF1YWxfaW50MzIiLCJlcXVhbF9pbnQ2NCIsImVxdWFsX25hdGl2ZWludCIsImVxdWFsX3N0cmluZyIsImVxdWFsX3VuaXQiLCJlcXVhbF9mbG9hdCIsImVxdWFsX2FycmF5IiwiZXF1YWxfZWx0IiwiZXF1YWxfbGlzdCIsImVxdWFsX29wdGlvbiIsImVxdWFsX3JlZiIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsImhhc2giLCJoc3YiLCJhcmciLCJhMCIsImhzdiQwIiwiYTAkMCIsImhzdiQxIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJmdW5jIiwicmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UiLCJpbml0aWFsaXplX21vZHVsZSIsImNsZWFyX2JhY2t0cmFjZSIsIndpdGhfcmV0dXJuIiwiaXNfYWxpdmUiLCJyZXR1cm4kMCIsIndpdGhfcmV0dXJuX29wdGlvbiIsInByZXBlbmQiLCJwYXJhbSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwiYmluZCQwIiwicmV0dXJuJDEiLCJtYXAkMCIsInRvX21vbmFkIiwib2ZfbW9uYWQiLCJkZXJpdmVkX21hcCIsIm1hcDIiLCJ0YSIsInRiIiwibWFwMyIsInRjIiwic3ltYm9sJDAiLCJ1Iiwic3ltYm9sJDEiLCJ0ZiIsImZhYiIsImMiLCJhcHBseSIsIm1mIiwibXgiLCJ0eCIsImN1c3RvbV9tYXAiLCJhcHBseSQwIiwiYmxpdF9zdHJpbmciLCJtYWtlIiwidW5zYWZlX2JsaXQiLCJ1bnNhZmVfdG9fc3RyaW5nIiwidW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211IiwiY29tcGFyYXRvciIsImVycm9yX3NvdXJjZV8wMTEiLCJjbXBfZiIsImNtcF9zIiwiaGFzaF9mb2xkX2YiLCJoYXNoX2ZvbGRfcyIsInRfb2Zfc2V4cCIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwiZl9zZXhwX2dyYW1tYXIiLCJzX3NleHBfZ3JhbW1hciIsIm9wYXF1ZV9pZGVudGl0eSIsIm5hbWUiLCJnZXQiLCJmc2V0Iiwic2V0dGVyIiwidXBkYXRlciIsImZpZWxkIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInNlcCIsIm4iLCJuJDAiLCJuJDEiLCJoc3YkMiIsInBvc19jbnVtXzAxMCIsInBvc19ib2xfMDA4IiwicG9zX2xudW1fMDA2IiwicG9zX2ZuYW1lXzAwNCIsImFyZ18wMTEiLCJibmRzXzAwMyIsImFyZ18wMDkiLCJibmRzXzAwMyQwIiwiYXJnXzAwNyIsImJuZHNfMDAzJDEiLCJhcmdfMDA1IiwiYm5kc18wMDMkMiIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJtYWtlX2xvY2F0aW9uX3N0cmluZyIsInBvc19mbmFtZSIsInBvc19sbnVtIiwicG9zX2NudW0iLCJwb3NfYm9sIiwiaXNfZW1wdHkiLCJwYXJ0aXRpb25fbWFwIiwiZnN0JDAiLCJ5JDAiLCJzbmQkMCIsImVycm9yX3NvdXJjZV8wMDUiLCJvZl9hXzAwMSIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMyIsInJlczBfMDI0IiwiYV9zZXhwX2dyYW1tYXIiLCJiX3NleHBfZ3JhbW1hciIsImNtcF9hIiwiY21wX2IiLCJhXzAyNyIsImJfMDI4IiwiYV8wMjkiLCJiXzAzMCIsImFfMDMxIiwiYl8wMzIiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3IiwiYl8wMzgiLCJoYXNoX2ZvbGRfYSIsImhhc2hfZm9sZF9iIiwieCQwIiwiY2hlY2tfb2siLCJjaGVja19lcnJvciIsIm9rIiwiZXJyb3IiLCJmYWlsIiwiZmFpbGYiLCJtYXBfZXJyb3IiLCJiaW5kJDEiLCJtYXAkMSIsInJldHVybiQyIiwiaXNfb2siLCJpc19lcnJvciIsIm9mX29wdGlvbiIsIml0ZXJfZXJyb3IiLCJ0b19laXRoZXIiLCJvZl9laXRoZXIiLCJva19pZl90cnVlIiwiYm9vbCIsInRyeV93aXRoIiwib2tfZXhuIiwib2tfb3JfZmFpbHdpdGgiLCJjb21iaW5lIiwiZXJyIiwib2sxIiwib2syIiwiZXJyMSIsImVycjIiLCJjb21iaW5lX2Vycm9ycyIsImVycnMiLCJjb21iaW5lX2Vycm9yc191bml0IiwiY291bnQiLCJzdW0iLCJNIiwiZm9sZF9yZXN1bHQiLCJhY2MiLCJpdGVtIiwiZm9sZF91bnRpbCIsImZpbmlzaCIsIm1pbl9lbHQiLCJlbHQiLCJtYXhfZWx0IiwiZmluZF9tYXAiLCJmaW5kIiwidG9fYXJyYXkiLCJpdGVyJDAiLCJpdGVyJDEiLCJsZW5ndGgkMCIsImxlbmd0aCQxIiwiaXNfZW1wdHkkMCIsInN1bSQwIiwibSIsImNvdW50JDAiLCJleGlzdHMkMCIsImZvcl9hbGwkMCIsImZpbmRfbWFwJDAiLCJmaW5kJDAiLCJ0b19saXN0JDAiLCJ0b19hcnJheSQwIiwibWluX2VsdCQwIiwibWF4X2VsdCQwIiwiZm9sZF9yZXN1bHQkMCIsImZvbGRfdW50aWwkMCIsImZvbGQkMCIsIm1lbSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJzZXhwX29mX2EiLCJzbG93X2NoZWNrX3Bvc19sZW5fZXhuIiwicG9zIiwidG90YWxfbGVuZ3RoIiwiY2hlY2tfcG9zX2xlbl9leG4iLCJzdG9wIiwiZ2V0X3Bvc19sZW5fZXhuIiwibGVuJDAiLCJvZl9zdGF0ZSIsImFzc2lnbiIsImRzdCIsInNyYyIsImRzdCQwIiwic3JjJDAiLCJtYWtlX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJzcGxpdF9mcm9tX3BhcmVudCIsImdldF9zdGF0ZSIsInJhbmRvbV9rZXkiLCJmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMiLCJhbGxvd19pbl90ZXN0cyIsImJpdHMiLCJpbnQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJjaGFyJDAiLCJhc2NpaSIsIm1ha2Vfc2VsZl9pbml0IiwiaW50X29uXzY0Yml0cyIsImJvdW5kIiwiaW50X29uXzMyYml0cyIsImludCQxIiwiYml0cyQwIiwiZnVsbF9yYW5nZV9pbnQ2NCIsImJpdHMkMSIsImZ1bGxfcmFuZ2VfaW50MzIiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMkMCIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50IiwicmFpc2VfY3Jvc3NlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kIiwic3RyaW5nX29mX2JvdW5kIiwiaW50X2luY2wiLCJsbyIsImhpIiwiZGlmZiIsImludDMyX2luY2wiLCJuYXRpdmVpbnRfaW5jbCIsImludDY0X2luY2wiLCJmbG9hdCQwIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQyIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwic3RoJDAiLCJudW1fc3dhcHMiLCJ0aGlzX2kiLCJyYW5kb21faSIsImNvbnN0JDAiLCJub24iLCJmb3JldmVyIiwiZSQwIiwiY29tcG9zZSIsImciLCJmbGlwIiwiYXBwbHlfbl90aW1lcyIsIngkMSIsInNleHBfMDA2IiwiZXJyb3Jfc291cmNlXzAyMiIsImZvbGRfbGVmdCIsImFfMDA2IiwiYl8wMDciLCJhXzAwOCIsImJfMDA5Iiwib2ZfYV8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwic3RoJDEiLCJoZCIsInRsIiwibnRoIiwibnRoX2V4biIsInVub3JkZXJlZF9hcHBlbmQiLCJvZl9saXN0cyIsInNoYXJlZF9sZW5ndGgiLCJzaGFyZWRfbGVuZ3RoJDAiLCJjaGVja19sZW5ndGgyX2V4biIsInRhaWxfb2ZfYiIsInRhaWxfb2ZfYSIsImNoZWNrX2xlbmd0aDIiLCJvZl9saXN0cyQwIiwibDMiLCJjJDAiLCJjaGVja19sZW5ndGgzX2V4biIsInRhaWxfb2ZfYyIsIm4xIiwibjIiLCJuMyIsImNoZWNrX2xlbmd0aDMiLCJpdGVyMiIsIml0ZXIyX2V4biIsInJldl9tYXAyIiwicmV2X21hcDJfZXhuIiwiZm9sZDIiLCJmb2xkMl9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsImFjY3UiLCJmaWx0ZXIiLCJub3RfZm91bmQiLCJmaW5kX21hcF9leG4iLCJub3RfZm91bmQkMCIsImZpbmRfZXhuIiwiZmluZGkiLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsImZpbmRfbWFwaSIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsImZvcl9hbGxpIiwiZXhpc3RzaSIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDEkMCIsImwyJDAiLCJsMyQwIiwiYWMiLCJsMyQxIiwibDIkMSIsImwxJDEiLCJhYyQwIiwicmV2X21hcDMiLCJyZXZfbWFwM19leG4iLCJtYXAzX29rIiwibWFwM19leG4iLCJyZXZfbWFwX2FwcGVuZCIsImgiLCJsaXN0JDIiLCJ1bnppcDMiLCJ6IiwiemlwX2V4biIsInppcCIsInJldl9tYXBpIiwiZm9sZGluZ19tYXBpIiwiZm9sZF9tYXBpIiwiZm9sZGkiLCJmaWx0ZXJpIiwicmVkdWNlIiwicmVkdWNlX2V4biIsInJlZHVjZV9iYWxhbmNlZCIsInN0ZXBfYWNjdW0iLCJudW0iLCJudW0kMCIsImFjYyQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwic3ltYm9sJDIiLCJsYXN0X2V4biIsImxhc3QiLCJpc19wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsInByZWZpeCQxIiwiaGQkMCIsImZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIiwiYTEiLCJhMSQwIiwiYTIiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImwkMCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImNvdW50aSIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwiZmlsdGVyX21hcCIsInJldl9maWx0ZXJfbWFwaSIsImkkMSIsImZpbHRlcl9tYXBpIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJwYXJ0aXRpb25fdGYiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAxNCIsIm9mX2JfMDE1IiwieF8wMjMiLCJzZXhwXzAyMSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwic2V4cF9vZl90JDEiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsIm1lbSQwIiwicmVtb3ZlIiwiYWRkIiwiaW52ZXJzZSIsIm1hcCQyIiwiZWwiLCJzcGxpdF9uIiwidF9vcmlnIiwidGFrZSIsImRyb3AiLCJjaHVua3Nfb2YiLCJsJDEiLCJzdWJsaXN0Iiwic3BsaXRfd2hpbGUiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImRyb3BfbGFzdCIsImRyb3BfbGFzdF9leG4iLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsImxpc3QxIiwibGlzdDIiLCJjb25jYXRfbm9fb3JkZXIiLCJjb25zIiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwiYXJyIiwicmFuZG9tX2VsZW1lbnRfZXhuIiwicmFuZG9tX2VsZW1lbnQiLCJjbXAiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMV8wMTMiLCJyZXMyXzAxNCIsImFyZzFfMDE2IiwicmVzMV8wMTgiLCJhcmcyXzAyMSIsImFyZzFfMDIwIiwiYXJnMF8wMTkiLCJyZXMxXzAyMyIsInJlczJfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJ0b19zdHJpbmdzX2h1bSIsInN0cmluZyIsInNleHAkMCIsInNleHAkMSIsInRhZyIsInRhZyQwIiwic2V4cCQyIiwidGFnJDEiLCJib2R5IiwidHJ1bmNfYWZ0ZXIiLCJ0cyQwIiwidHMkMSIsImFjJDEiLCJ0b19zZXhwc19odW0iLCJoZXJlIiwiaGVyZSQwIiwidG9fc2V4cF9odW0iLCJzZXhwcyIsInRvX21lc3NhZ2UiLCJpbmZvIiwib2ZfbWVzc2FnZSIsInRvX3N0cmluZ19odW0iLCJtZXNzYWdlIiwidG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIiwib2ZfbGF6eSIsIm9mX2xhenlfc2V4cCIsIm9mX2xhenlfdCIsImxhenlfdCIsImNyZWF0ZWYiLCJvZl90aHVuayIsInN0cmljdCIsInNleHBfb2ZfeCIsInRhZ19zX2xhenkiLCJ0YWdfcyIsInRhZ19hcmciLCJ0b19leG4iLCJvZl9leG4iLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwiYmFja3RyYWNlJDIiLCJyYWlzZSIsInJhaXNlX3MiLCJ0b19pbmZvIiwib2ZfaW5mbyIsImNoZWNrX2ZpZWxkIiwiYV8wMDciLCJiXzAwOCIsIm9mX2FfMDEzIiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3IiwiaW52YXJpYW50X2EiLCJlMSIsImUyIiwidHJ5X3dpdGhfam9pbiIsIm9mX2V4bl9yZXN1bHQiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidW5pbXBsZW1lbnRlZCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImlzX3Bvc2l0aXZlIiwiaXNfbm9uX25lZ2F0aXZlIiwiaXNfbmVnYXRpdmUiLCJpc19ub25fcG9zaXRpdmUiLCJzaWduIiwiaGFzaF9wYXJhbSIsInBvbHkiLCJvZl9rZXkiLCJLZXkiLCJ0b19rZXkiLCJoYXNoX3BhcmFtJDAiLCJwb2x5JDAiLCJvZl9rZXkkMCIsInRvX2tleSQwIiwiaGFzaGFibGUiLCJnZXRfcG9zX2xlbiIsImZpbmRfZmlyc3Rfc2F0aXNmeWluZyIsInByZWQiLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsInNyY19wb3MiLCJkc3RfcG9zIiwiYmxpdG8iLCJzcmNfbGVuIiwic3VibyIsImNyZWF0ZV9saWtlIiwidW5zYWZlX2JsaXQkMCIsImlzX25vbmUiLCJpc19zb21lIiwidmFsdWVfbWFwIiwibyIsImNhbGwiLCJ2YWx1ZV9leG4iLCJlcnJvciQwIiwibSQwIiwibSQxIiwidmFsdWVfb3JfdGh1bmsiLCJzb21lIiwiZmlyc3Rfc29tZSIsInNvbWVfaWYiLCJjb25kIiwiYV9vZl9zZXhwIiwiYl9vZl9zZXhwIiwic2V4cF9vZl9iIiwiY19vZl9zZXhwIiwic2V4cF9vZl9jIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZWl0aGVyIiwib3RoZXJfbG9vcCIsInJldHVybl9sb29wIiwiY29tYmluZV9hbGwiLCJvdGhlcl9sb29wJDAiLCJyZXR1cm5fbG9vcCQwIiwiY29tYmluZV9hbGxfdW5pdCIsInRvX29wdGlvbiIsImVpdGhlciQwIiwiY29tYmluZSQwIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImVycm9yX3NvdXJjZV8wMjUiLCJvZl9zXzAwMiIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxOSIsImFfMDE3IiwiYl8wMjAiLCJiXzAxOCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIxIiwib2ZfYl8wMjIiLCJzZXhwXzAyNyIsInRhZ18wMjgiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfYXJnc18wMjkiLCJhcmcwXzAzMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsIm9mX2FfMDQ2Iiwib2ZfYl8wNDciLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsInNldCIsInN3YXAkMCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25pX3RmIiwidHJ1ZXMiLCJmYWxzZXMiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwidG9fc2VxdWVuY2UiLCJpMSIsImkyIiwidHQiLCJ3aWR0aCIsImRlcHRoIiwiZCIsInciLCJ0dCQwIiwiZ2V0JDAiLCJ6ZXJvX29iaiIsImNyZWF0ZV96ZXJvIiwidW5zYWZlX2dldCIsInVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSIsIm9iaiIsInNldF93aXRoX2NhbWxfbW9kaWZ5IiwidW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVuIiwib2xkX29iaiIsInVuc2FmZV9zZXQiLCJ1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGUiLCJ1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV8iLCJ1bnNhZmVfc2V0X2ludCIsInVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIiwidW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIiwiY3JlYXRlX29ial9hcnJheSIsIm9mX2FycmF5IiwiZ3JhbW1hciIsImNlaWwiLCJmbG9vciIsIm1vZF9mbG9hdCIsIm1vZGYiLCJtYXhfZmluaXRlX3ZhbHVlIiwiY2xhc3NpZnlfZmxvYXQiLCJhYnNfZmxvYXQiLCJpc19pbnRlZ2VyIiwiZnJleHAiLCJsZGV4cCIsImlzX25hbiIsInRvX2ludDY0X3ByZXNlcnZlX29yZGVyIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIiwib2ZfaW50NjRfcHJlc2VydmVfb3JkZXIiLCJvbmVfdWxwIiwiZGlyIiwidXBwZXJfYm91bmRfZm9yX2ludCIsImV4cCIsImlzX3hfbWludXNfb25lX2V4YWN0IiwibG93ZXJfYm91bmRfZm9yX2ludCIsIm1pbl9pbnRfYXNfZmxvYXQiLCJib3giLCJpc19sb3dlcmNhc2UiLCJpc191cHBlcmNhc2UiLCJpc19wcmludCIsImlzX3doaXRlc3BhY2UiLCJpc19kaWdpdCIsImlzX2FscGhhIiwiaXNfYWxwaGFudW0iLCJnZXRfZGlnaXRfdW5zYWZlIiwiZ2V0X2RpZ2l0X2V4biIsImdldF9kaWdpdCIsImlzX2hleF9kaWdpdCIsImlzX2hleF9kaWdpdF9sb3dlciIsImlzX2hleF9kaWdpdF91cHBlciIsImdldF9oZXhfZGlnaXRfZXhuIiwiZ2V0X2hleF9kaWdpdCIsInRfb2Zfc2V4cCQxIiwiYzEiLCJjMiIsImhhc2hfZm9sZF90JDEiLCJoYXNoJDEiLCJ0cl9jcmVhdGVfbWFwIiwidGFyZ2V0IiwicmVwbGFjZW1lbnQiLCJ0cl9tYXAiLCJpJDMiLCJpJDIiLCJpbmRleCQwIiwibGFzdF9yZXBsYWNlbWVudCIsImluZGV4IiwiZmlyc3RfdGFyZ2V0Iiwic3RhZ2UiLCJ1bnN0YWdlIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwiYV8wMDIiLCJiXzAwMyIsImttcF9hcnJheV8wMTEiLCJjYXNlX3NlbnNpdGl2ZV8wMDkiLCJwYXR0ZXJuXzAwNyIsImFyZ18wMTIiLCJibmRzXzAwNiIsImFyZ18wMTAiLCJibmRzXzAwNiQwIiwiYXJnXzAwOCIsImJuZHNfMDA2JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJsZmluZGkiLCJyZmluZGkiLCJsYXN0X25vbl9kcm9wIiwicnN0cmlwIiwiZmlyc3Rfbm9uX2Ryb3AiLCJsc3RyaXAiLCJzdHJpcCIsInRyIiwidHJfbXVsdGkiLCJjb25jYXRfYXJyYXkiLCJhciIsIm91dCIsIm91dF9wb3MiLCJvdXQkMCIsImNob3BfcHJlZml4IiwiY2hvcF9wcmVmaXhfaWZfZXhpc3RzIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3N1ZmZpeF9leG4iLCJzaG9ydGVyIiwic2hvcnRlc3QiLCJwb3NfZnJvbV9sZWZ0IiwicG9zX2Zyb21fcmlnaHQiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AiLCJnZXRfcG9zIiwibWF4X2xlbiIsImxlbl9zb19mYXIiLCJsZW5fc29fZmFyJDAiLCJsZW5fc29fZmFyJDEiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AiLCJmaXJzdCQwIiwibWF4X2xlbiQwIiwibWF4X2xlbiQxIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWMyIiwiY29tbW9uX2dlbmVyaWMiLCJjb21tb25fcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4X2xlbmd0aCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsInVuc2FmZV9ibGl0JDEiLCJtYXBpJDAiLCJvY2FtbF9sZXhfdGFibGVzIiwicGFyc2VfaGV4IiwibGV4YnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJjb252ZXJ0X2ZhaWx1cmUiLCJudW1fYml0c19pbnQiLCJudW1fYml0c19uYXRpdmVpbnQiLCJudW1fYml0c19pbnQzMiIsIm51bV9iaXRzX2ludDY0IiwibWluX2ludDMyIiwibWF4X2ludDMyIiwibWluX2ludDY0IiwibWF4X2ludDY0IiwibWluX25hdGl2ZWludCIsIm1heF9uYXRpdmVpbnQiLCJpbnQ2NF90b19zdHJpbmciLCJuYXRpdmVpbnRfdG9fc3RyaW5nIiwiaW50MzJfdG9faW50X3RydW5jIiwiaW50X3RvX2ludDMyX3RydW5jIiwiaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIiLCJpbnRfdG9faW50MzIiLCJpbnQzMl90b19pbnQiLCJpbnRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9faW50X2V4biIsImludF90b19pbnQ2NCIsImludDY0X3RvX2ludF90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IiwiaW50NjRfdG9faW50IiwiaW50NjRfdG9faW50X2V4biIsImludF90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludCIsIm5hdGl2ZWludF90b19pbnRfZXhuIiwiaW50MzJfdG9faW50NjQiLCJpbnQ2NF90b19pbnQzMl90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MyIsImludDY0X3RvX2ludDMyIiwiaW50NjRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9fbmF0aXZlaW50IiwibmF0aXZlaW50X3RvX2ludDMyX3RydW5jIiwibmF0aXZlaW50X3RvX2ludDMyIiwibmF0aXZlaW50X3RvX2ludDMyX2V4biIsImludDY0X3RvX25hdGl2ZWludF90cnVuYyIsIm5hdGl2ZWludF90b19pbnQ2NCIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aSIsImludDY0X3RvX25hdGl2ZWludCIsImludDY0X3RvX25hdGl2ZWludF9leG4iLCJpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYiLCJpbnQ2NF9maXRfb25faW50NjNfZXhuIiwiaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSIsImRlbGltaXRlciIsImNoYXJzX3Blcl9kZWxpbWl0ZXIiLCJpbnB1dF9sZW5ndGgiLCJoYXNfc2lnbiIsIm51bV9kaWdpdHMiLCJudW1fZGVsaW1pdGVycyIsIm91dHB1dF9sZW5ndGgiLCJpbnB1dF9wb3MiLCJvdXRwdXRfcG9zIiwibnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciIsImZpcnN0X2RpZ2l0X3BvcyIsImluc2VydF9kZWxpbWl0ZXIiLCJpbnNlcnRfdW5kZXJzY29yZXMiLCJzZXhwX29mX2ludF9zdHlsZSIsImRlbGltaXRlciQwIiwibWFrZV9zdWZmaXgiLCJ0b19zdHJpbmckMCIsImludmFsaWQiLCJvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIiLCJsZXgiLCJib2R5JDAiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW4iLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUiLCJpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIiwib3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIiwiaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbCIsImludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyIsIm5lZ2F0aXZlX2V4cG9uZW50Iiwib3ZlcmZsb3ciLCJpbnRfcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaW50NjRfcG93IiwiaW50NjNfcG93X29uX2ludDY0IiwicnZhbCIsIm9uZSIsInJvdW5kX2Rvd24iLCJtb2R1bHVzIiwicm91bmRfdXAiLCJyZW1haW5kZXIiLCJyb3VuZF90b3dhcmRzX3plcm8iLCJ0b19tdWx0aXBsZV9vZiIsInJvdW5kX25lYXJlc3QiLCJtb2R1bHVzX21pbnVzX3JlbWFpbmRlciIsInJvdW5kIiwiaDAxIiwibWFzayIsImludDY0X3BvcGNvdW50IiwieCQyIiwiaW50MzJfcG9wY291bnQiLCJuYXRpdmVpbnRfcG9wY291bnQiLCJtb2R1bGVfbmFtZSQwIiwib2Zfc3RyaW5nJDAiLCJmbG9hdF9sb3dlcl9ib3VuZCIsImZsb2F0X3VwcGVyX2JvdW5kIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwiZnVuYyQwIiwiemVybyIsIm1pbnVzX29uZSIsIm5lZyIsIm9mX3N0cmluZyQxIiwib2ZfaW50MzIiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMiIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0Iiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50IiwibWF4X3ZhbHVlXzMwX2JpdHMiLCJhYnMiLCJyZW0iLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwic2hpZnRfbGVmdCIsImJpdF9ub3QiLCJiaXRfb3IiLCJiaXRfYW5kIiwiYml0X3hvciIsInBvdyIsIm5vbl9wb3NpdGl2ZV9hcmd1bWVudCIsImNlaWxfcG93MiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsImZsb29yX3BvdzIiLCJpc19wb3cyIiwiZmxvb3JfbG9nMiIsImNlaWxfbG9nMiIsInBvcGNvdW50IiwibG5vdCIsInN1Y2NfZXhuIiwibXNnIiwicHJlZF9leG4iLCJvZl9zY2FsYXIiLCJvZl9zY2FsYXJfZXhuIiwidG9fc2NhbGFyIiwidG9fY2hhciIsInRvX2NoYXJfZXhuIiwidXRmOF9ieXRlX2xlbmd0aCIsInVjaGFyIiwiY29kZXBvaW50Iiwic29tZV90IiwicmVmbCIsInN5bSIsInRyYW5zIiwiY29udiIsImRldHVwbGUyIiwidHVwbGUyIiwid2l0bmVzcyIsInZfMDA1IiwidG9fc2V4cCIsInVpZCIsInNhbWVfd2l0bmVzcyIsInNhbWUiLCJzYW1lX3dpdG5lc3NfZXhuIiwibm9uZV9zdWJzdGl0dXRlIiwibm9uZSIsInZhbHVlX3Vuc2FmZSIsIm9mX3NleHBhYmxlIiwidG9fc2V4cGFibGUiLCJ4XzAwMyIsIm9mX2FfMDA0IiwieF8wMDUiLCJpbml0X3NvbWUiLCJnZXRfc29tZV9leG4iLCJpc19ub25lJDAiLCJpc19zb21lJDAiLCJzZXRfc29tZSIsInNldF9ub25lIiwidW5zYWZlX2dldF9zb21lX2V4biIsInVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIiwidW5zYWZlX2lzX3NvbWUiLCJ1bnNhZmVfc2V0X3NvbWUiLCJ1bnNhZmVfc2V0X25vbmUiLCJjbGVhciIsImVsZW0iLCJtYXBfc29tZSIsIm9mX2FycmF5X3NvbWUiLCJjYXBhY2l0eSIsImVsdHMiLCJsZW5ndGhfMDAzIiwiZWx0c18wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInJlc2l6ZSIsInNpemUiLCJzZXRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkkMCIsInB1c2giLCJwb3Bfbm9uZW1wdHkiLCJwb3BfZXJyb3IiLCJwb3AiLCJwb3BfZXhuIiwidG9wX25vbmVtcHR5IiwidG9wX2Vycm9yIiwidG9wIiwidG9wX2V4biIsInVudGlsX2VtcHR5IiwiaGFzaF9vdmVycmlkZSIsIm9mX3BvcyIsIm9mX3NpZ24iLCJ0b19zaWduX2V4biIsInRvX2ludF9leG4iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAyNyIsImludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbSIsImFsbF9vZl9hIiwiZW51bWVyYXRlXzAwMiIsImVudW1lcmF0ZV8wMDEiLCJhY2MkMiIsIm9mX2FfMDAzIiwic2V4cF8wMDgiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwidF8wMTQiLCJ0XzAxMyIsInRfMDE2IiwidF8wMTUiLCJyaWdodF8wMTgiLCJsZWZ0XzAxNyIsInJpZ2h0XzAyMiIsImxlZnRfMDIxIiwidF8wMjQiLCJ0XzAyMyIsInRfMDI2IiwidF8wMjUiLCJyaWdodF8wMjAiLCJsZWZ0XzAxOSIsInRfMDMwIiwidF8wMjkiLCJ0XzAzMiIsInRfMDMxIiwicmlnaHRfMDM0IiwibGVmdF8wMzMiLCJyaWdodF8wMzgiLCJsZWZ0XzAzNyIsInRfMDQwIiwidF8wMzkiLCJ0XzA0MiIsInRfMDQxIiwicmlnaHRfMDM2IiwibGVmdF8wMzUiLCJvZl9rXzA0MyIsIm9mX3ZfMDQ0Iiwic2V4cF8wNzEiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJhdG9tXzA0NyIsInNleHBfYXJnc18wNTAiLCJhdG9tXzA0NyQwIiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2NCIsInJlczBfMDY1IiwicmVzMV8wNzAiLCJvZl9rXzA3MiIsIm9mX3ZfMDczIiwiYXJnMV8wODIiLCJhcmcwXzA4MSIsInJlczBfMDgzIiwidl8wNzQiLCJyZXMxXzA4NCIsInZfMDc2IiwiYXJnMV8wNzgiLCJhcmcwXzA3NyIsInJlczBfMDc5IiwicmVzMV8wODAiLCJ2XzA3NSIsImtfc2V4cF9ncmFtbWFyIiwidl9zZXhwX2dyYW1tYXIiLCJjbXBfbGVmdCIsImNtcF9yaWdodCIsImFfMDg1IiwiYl8wODYiLCJyaWdodF8wOTIiLCJsZWZ0XzA5MSIsInRfMDk0IiwidF8wOTMiLCJ0XzA5NiIsInRfMDk1IiwicmlnaHRfMDg4IiwibGVmdF8wODciLCJyaWdodF8wOTAiLCJsZWZ0XzA4OSIsImFfMDk3IiwiYl8wOTgiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInRfMTA2IiwidF8xMDUiLCJ0XzEwOCIsInRfMTA3IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8xMDIiLCJsZWZ0XzEwMSIsIm9mX2xlZnRfMTA5Iiwib2ZfcmlnaHRfMTEwIiwidl8xMTMiLCJhcmcxXzExNSIsImFyZzBfMTE0IiwicmVzMF8xMTYiLCJyZXMxXzExNyIsInZfMTExIiwidl8xMTIiLCJzZXhwX29mX3QkMyIsImhlaWdodCIsImluX3JhbmdlIiwiaGwiLCJociIsImxvd2VyJDEiLCJpbnZhcmlhbnRzIiwiaCQxIiwiaCQwIiwic2wiLCJzciIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayIsImtsIiwiayQxIiwia2wkMCIsImskMiIsImtyIiwibGVmdF9sZW5ndGgiLCJyaWdodF9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwiYXJyYXlfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5IiwiaW5jcmVhc2luZyIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiQwIiwibHJsIiwibHJ2IiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2JDAiLCJybGwiLCJybHYiLCJhdXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInJlbW92ZV9pbmRleCIsImxfc2l6ZSIsInVuaW9uIiwidjEkMCIsInYyJDAiLCJyMiQwIiwicjEkMCIsInVuaW9uX2xpc3QiLCJ0b190cmVlIiwiaW50ZXIiLCJvdGhlcl9zZXQiLCJlJDEiLCJjb25zX3JpZ2h0Iiwib2Zfc2V0IiwiZW51bSQwIiwidHJlZSIsInN5bW1ldHJpY19kaWZmIiwiZWx0JDAiLCJlbnVtMSIsInRyZWUxIiwiZW51bTIiLCJ0cmVlMiIsImNvbXBhcmVfcmVzdWx0IiwibmV4dF9zdGF0ZSIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwiaW5jbHVzaXZlX2JvdW5kIiwic2lkZSIsIm1heWJlIiwidiQxIiwiaW5pdCQwIiwidiQyIiwidiQzIiwidiQ0IiwiZSQyIiwibWVyZ2VfdG9fc2VxdWVuY2UiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJ0MiQyIiwidDEkMiIsImlzX3N1YnNldCIsImFyZV9kaXNqb2ludCIsImFjY3UkMCIsImFjY3UkMSIsImZpbHQiLCJwYXJ0IiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJjaG9vc2VfZXhuIiwicG9zX3JlZiIsImdyb3VwX2J5IiwiZXF1aXYiLCJzZXQkMCIsImVxdWl2X2NsYXNzZXMiLCJub3RfZXF1aXZfeCIsImVxdWl2X3giLCJlcXVpdl9jbGFzc2VzJDAiLCJzdGFibGVfZGVkdXBfbGlzdCIsImxlZnRvdmVycyIsImFscmVhZHlfc2VlbiIsImFscmVhZHlfc2VlbiQwIiwibGVmdG92ZXJzJDAiLCJ0X29mX3NleHBfZGlyZWN0IiwiZWx0X2xzdCIsImVsX3NleHAiLCJpc19zdWJzZXQkMCIsInN1YnNldCIsInN1cGVyc2V0Iiwic2V4cF9vZl9lbHQiLCJpbnZhbGlkX2VsZW1lbnRzIiwiaW52YWxpZF9lbGVtZW50c19zZXhwIiwibGlrZSIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsImlzX3N1YnNldCQyIiwicGFydGl0aW9uX3RmJDAiLCJ0cmVlX2YiLCJ0cmVlX3QiLCJncm91cF9ieSQwIiwibnRoJDAiLCJyZW1vdmVfaW5kZXgkMCIsInRvX3NlcXVlbmNlJDAiLCJiaW5hcnlfc2VhcmNoJDAiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsImhhc2hfZm9sZF9kaXJlY3QiLCJ0X29mX3NleHBfZGlyZWN0JDAiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwiZWxlbWVudHMkMSIsIm1pbl9lbHQkMSIsIm1pbl9lbHRfZXhuJDEiLCJtYXhfZWx0JDEiLCJtYXhfZWx0X2V4biQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwiaXRlciQyIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJjb3VudCQxIiwic3VtJDEiLCJmaW5kJDEiLCJmaW5kX2V4biQxIiwiZmluZF9tYXAkMSIsImZvbGQkMSIsImZvbGRfdW50aWwkMSIsImZvbGRfcmlnaHQkMSIsImZpbHRlciQxIiwiZmlsdGVyX21hcCQwIiwicGFydGl0aW9uX3RmJDEiLCJpdGVyMiQxIiwibWVtJDEiLCJhZGQkMSIsInJlbW92ZSQxIiwidW5pb24kMSIsImludGVyJDEiLCJkaWZmJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiY29tcGFyZV9kaXJlY3QkMCIsImlzX3N1YnNldCQzIiwiYXJlX2Rpc2pvaW50JDEiLCJvZl9saXN0JDAiLCJvZl9zZXF1ZW5jZSQwIiwib2ZfYXJyYXkkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJudGgkMSIsInJlbW92ZV9pbmRleCQxIiwib2ZfdHJlZSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsImlzX3N1YnNldCQ0IiwidG9fdHJlZSQwIiwib2ZfdHJlZSQwIiwidF9vZl9zZXhwX2RpcmVjdCQxIiwiZW1wdHkkMCIsInNpbmdsZXRvbiQwIiwidW5pb25fbGlzdCQxIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQxIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX2xpc3QkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMSIsImZpbHRlcl9tYXAkMSIsImNvbXBhcmF0b3JfcyIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsInVuaW9uX2xpc3QkMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQyIiwib2Zfc29ydGVkX2FycmF5JDIiLCJvZl9saXN0JDIiLCJvZl9zZXF1ZW5jZSQyIiwib2ZfYXJyYXkkMiIsInN0YWJsZV9kZWR1cF9saXN0JDIiLCJmaWx0ZXJfbWFwJDIiLCJzZXhwX29mX21fdCIsIkVsdCIsIm1fdF9vZl9zZXhwIiwibV90X3NleHBfZ3JhbW1hciIsImNvbXBhcmVfbV90IiwiZXF1YWxfbV90IiwiaGFzaF9mb2xkX21fdCIsImhhc2hfbV90IiwiY29tcGFyYXRvciQwIiwiZW1wdHkkMiIsInNpbmdsZXRvbiQyIiwidW5pb25fbGlzdCQzIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQzIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDMiLCJvZl9zb3J0ZWRfYXJyYXkkMyIsIm9mX2xpc3QkMyIsIm9mX3NlcXVlbmNlJDMiLCJvZl9hcnJheSQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsIm1hcCQzIiwiZmlsdGVyX21hcCQzIiwib2ZfdHJlZSQxIiwidG9fdHJlZSQxIiwicmVwbGFjZSIsInNldF90ZW1wb3JhcmlseSIsInJlc3RvcmVfdG8iLCJzZXRzIiwic25hcHNob3QiLCJzZXRzX3RlbXBvcmFyaWx5IiwiYW5kX3ZhbHVlcyIsImluY19udW1fbXV0YXRpb25zIiwiZWx0c19pbmRleCIsImNoZWNrX2luZGV4X2V4biIsImVuc3VyZV9ub19tdXRhdGlvbiIsIm51bV9tdXRhdGlvbnMiLCJudW1fbXV0YXRpb25zXzAwMyIsImZyb250XzAwNSIsIm1hc2tfMDA3IiwibGVuZ3RoXzAwOSIsImVsdHNfMDExIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZnJvbnRfbm9uZW1wdHkiLCJsYXN0X25vbmVtcHR5IiwicGVlayIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwidF9yZXN1bHQiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcmlfaW5wbGFjZSIsInVucmVhY2hhYmxlX2NvZGUiLCJ6ZXJvJDAiLCJ6ZXJvJDEiLCJ0b19pbnRfdHJ1bmMiLCJ0b19pbnQzMl90cnVuYyIsIm9mX2ludDY0X3RydW5jIiwibmFtZSQwIiwib2ZfY29udGludWVfb3Jfc3RvcCIsInRvX2NvbnRpbnVlX29yX3N0b3AiLCJsZWZ0X3ZhbHVlIiwicmlnaHRfdmFsdWUiLCJ2YWx1ZXMiLCJsZWZ0X2RlZmF1bHQiLCJyaWdodF9kZWZhdWx0IiwicmlnaHQkMCIsImNvbXBhcmVfa2V5IiwidmwiLCJ2bCQwIiwidnIiLCJrMCIsImsxIiwibGQiLCJscmQiLCJscmQkMCIsInJkIiwicmxkIiwicmxkJDAiLCJyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50Iiwic2V4cF9vZl9rZXkiLCJmaW5kX2FuZF9hZGRfb3Jfc2V0IiwiZGF0YSIsImFkZF9vcl9zZXQiLCJkJDAiLCJhZGRfZXhuIiwiYWRkX2V4bl9pbnRlcm5hbCIsInNpbmdsZXRvbl90b190cmVlX2V4biIsImNvbGxhcHNlIiwiZ28iLCJhZGRfdW5jaGVja2VkIiwiZ28kMCIsInRvX3RyZWVfdW5jaGVja2VkIiwibWF4X2tleSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UiLCJidWlsZGVyIiwicHJldl9rZXkiLCJqb2luJDAiLCJsZCQwIiwibGskMCIsInJrIiwicmQkMCIsInJrJDAiLCJsayIsImNtcCQwIiwibWF5YmUkMCIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSIsImludG8iLCJib3VuZGFyeV9vcHQiLCJpbnNlcnRfaW50byIsInNwbGl0X3JhbmdlIiwibWlkX2FuZF9yaWdodCIsImxiJDEiLCJsYiQyIiwibWlkX2FuZF9yaWdodCQwIiwibGIiLCJsYiQwIiwibWlkJDAiLCJhZGRfbXVsdGkiLCJkYXRhJDAiLCJmaW5kX211bHRpIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJtaW5fdXBwZXIiLCJtYXhfbG93ZXIiLCJ1cHBlcl9wYXJ0X3dpdGhvdXRfbWluIiwiZ28kMSIsImNfbWluIiwiaW5pdCQxIiwiY19tYXgiLCJpbml0JDIiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInJhbmdlX3RvX2FsaXN0IiwiY29uY2F0X3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkMiIsImxlbmd0aCQzIiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwiZmlsdGVyX2tleXMiLCJwYXJ0aXRpb25fbWFwaSIsInBhaXIyIiwicGFpcjEiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMiIsImxlZnQkMiIsInJpZ2h0JDEiLCJrZXlzIiwib2ZfZm9sZGFibGVfZm9sZCIsImZvbGRhYmxlIiwicHJldl9kYXRhIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwibmV3X2RhdGEiLCJvZl9mb2xkYWJsZSIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2FsaXN0Iiwib2ZfYWxpc3Rfb3JfZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJvZl9mb2xkYWJsZV9tdWx0aSIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJ0b19hbGlzdCIsImtleV9vcmRlciIsIm1lcmdlX2xhcmdlX2ZpcnN0IiwibGVuZ3RoX2xhcmdlIiwidF9sYXJnZSIsInRfc21hbGwiLCJtZXJnZV9za2V3ZWQiLCJsZW5ndGgxIiwibGVuZ3RoMiIsInJlcGFja2FnZSIsIm1hcmtlciIsImNsb3Nlc3Rfa2V5IiwiZm91bmRfbWFya2VyIiwiZm91bmRfa2V5IiwiZm91bmRfdmFsdWUiLCJmb3VuZF92YWx1ZSQwIiwiZm91bmRfa2V5JDAiLCJyYW5rIiwibnVtX3RvX3NlYXJjaCIsInBhaXIiLCJwYWlyJDAiLCJiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCIsIm1heWJlX2JvdW5kIiwiaWZfZXhjbHVzaXZlIiwiaWZfaW5jbHVzaXZlIiwiZmluZF9ib3VuZCIsImJvdW5kJDAiLCJiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCQwIiwidXBwZXJfYm91bmQkMCIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwia2V5X29mX3NleHAiLCJ2YWx1ZV9vZl9zZXhwIiwiYWxpc3Rfc2V4cHMiLCJmb3VuZF9maXJzdF9rIiwiazJfc2V4cCIsInNleHBfb2ZfdmFsdWUiLCJlcnJvcl90cmVlIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJsaWtlMiIsImxpa2VfbWF5YmVfbm9fb3AiLCJvbGRfdCIsIm9sZF90cmVlIiwid2l0aF9zYW1lX2xlbmd0aCIsInNldCQxIiwiYWRkX2V4biQwIiwiYWRkX211bHRpJDAiLCJyZW1vdmVfbXVsdGkkMCIsImZpbmRfbXVsdGkkMCIsImNoYW5nZSQwIiwidXBkYXRlJDAiLCJpdGVyX2tleXMkMCIsIml0ZXJpX3VudGlsJDAiLCJmb2xkJDMiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlcmkkMCIsImZpbHRlcl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInN1YnJhbmdlIiwiaF9sIiwiaF9yIiwib3V0ZXJfam9pbmVkX2hlaWdodCIsIm1pZF9sZW5ndGgiLCJhcHBlbmQkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsInJhbmskMCIsInNleHBfb2ZfayIsInNleHBfb2ZfdiIsImhhc2hfZm9sZF9rZXkiLCJoYXNoX2ZvbGRfZGF0YSIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsInNldCQyIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJpdGVyX2tleXMkMSIsIml0ZXJpX3VudGlsJDEiLCJtYXBpJDEiLCJmb2xkJDQiLCJmb2xkMiQyIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwiY29tYmluZV9lcnJvcnMkMSIsImtleXMkMSIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzaSQxIiwiY291bnRpJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDAiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMiIsIm50aF9leG4kMCIsInJhbmskMSIsImtfb2Zfc2V4cCIsInZfb2Zfc2V4cCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UkMCIsIm1hcF9rZXlzJDAiLCJkdXAiLCJtYXBfa2V5c19leG4kMCIsImFkZF9leG4kMiIsIm9mX3RyZWUwIiwib2ZfdHJlZSQyIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2l0ZXJpJDEiLCJ0cmVlX2xlbmd0aCIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2ZfdHJlZSQzIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2FsaXN0X211bHRpJDIiLCJvZl9hbGlzdF9mb2xkJDIiLCJvZl9hbGlzdF9yZWR1Y2UkMiIsIm9mX2l0ZXJpJDIiLCJvZl9pdGVyaV9leG4kMiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMiIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDIiLCJvZl9zZXF1ZW5jZV9leG4kMiIsIm9mX3NlcXVlbmNlX211bHRpJDIiLCJvZl9zZXF1ZW5jZV9mb2xkJDIiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMiIsIm1hcF9rZXlzJDIiLCJtYXBfa2V5c19leG4kMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm1hcF9rZXlzJDMiLCJtYXBfa2V5c19leG4kMyIsInRyYW5zZmVyIiwicSIsInEkMCIsImZsb2F0X29mX2JpdHMiLCJiaXRzX29mX2Zsb2F0IiwiYnN3YXAxNiIsImJzd2FwMzIiLCJic3dhcDQ4IiwidG9fbmF0aXZlaW50X2V4biIsIndyYXBfZXhuIiwid3JhcF9tb2R1bG8iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsInNpZ25lZG5lc3MiLCJwb3Nfc3RyIiwiaW50NjMiLCJpbnQ2MyQwIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsInJlcHIiLCJvZl9pbnRfdHJ1bmMiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwidHJlZSQwIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJpbnZhcmlhbnRfa2V5IiwiaW52YXJpYW50X2RhdGEiLCJyZWFsX2xlbiIsIm5ld190IiwidDAiLCJuZXdfZGF0YSQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiZHVwZXMiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMiLCJzZXhwX29mX2RhdGEiLCJkX29mX3NleHAiLCJrX2dyYW1tYXIiLCJyb3ciLCJvbGQiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXlfZXhuIiwibWF5YmVfc2V0IiwidF9sZWZ0IiwidF9yaWdodCIsIm1lcmdlX2ludG8iLCJkc3RfZGF0YSIsImFjdGlvbiIsImRzdF9kYXRhJDAiLCJ0b19yZW1vdmUiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZmlsdGVyX21hcGlfaW5wbGFjZSIsIm1hcF9yZXN1bHRzIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwic2ltaWxhciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQwIiwiY3JlYXRlX21hcHBlZCQwIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQxIiwiY3JlYXRlX21hcHBlZCQxIiwiY3JlYXRlX3dpdGhfa2V5JDEiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMSIsImNyZWF0ZV93aXRoX2tleV9leG4kMSIsImdyb3VwJDEiLCJoYXNoYWJsZV9zIiwicG9seV9oYXNoYWJsZSIsInN0cmljdF9hZGQiLCJzdHJpY3RfYWRkX2V4biIsInN0cmljdF9yZW1vdmUiLCJzdHJpY3RfcmVtb3ZlX2V4biIsInNleHBfb2ZfZSIsImxhcmdlciIsInNtYWxsZXIiLCJvZl9oYXNodGJsX2tleXMiLCJoYXNodGJsIiwidG9faGFzaHRibCIsImVfb2Zfc2V4cCIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwicGkiLCJzcXJ0X3BpIiwic3FydF8ycGkiLCJldWxlciIsIm9mX2ludDYzIiwiaXJvdW5kX2xib3VuZCIsImlyb3VuZF91Ym91bmQiLCJpcm91bmRfdXAiLCJpcm91bmRfdXBfZXhuIiwiaXJvdW5kX2Rvd24iLCJpcm91bmRfZG93bl9leG4iLCJpcm91bmRfdG93YXJkc196ZXJvIiwiaXJvdW5kX3Rvd2FyZHNfemVyb19leG4iLCJyb3VuZF9uZWFyZXN0X2xiIiwicm91bmRfbmVhcmVzdF91YiIsIm9uZV91bHBfbGVzc190aGFuX2hhbGYiLCJhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCIsImlyb3VuZF9uZWFyZXN0XzMyIiwiaXJvdW5kX25lYXJlc3RfNjQiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzY2FsZSIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwiZXhwb25lbnRfbWFzazY0IiwiZXhwb25lbnRfbWFzayIsIm1hbnRpc3NhX21hc2siLCJtYW50aXNzYV9tYXNrNjQiLCJtYW50aXNzYV9iaXRzIiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJvcHQiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInN0aCIsInN0aCQwIiwicHJpbnRfbG9uZ2lkZW50IiwibG9uZ3ByZWZpeCIsInMkMCIsInkiLCJsb25naWRlbnRfbG9jIiwiY29uc3RhbnQiLCJpIiwibSIsImkkMCIsImkkMSIsImRlbGltIiwiaSQyIiwibSQwIiwibXV0YWJsZV9mbGFnIiwidmlydHVhbF9mbGFnIiwicmVjX2ZsYWciLCJyZiIsIm5vbnJlY19mbGFnIiwiZGlyZWN0aW9uX2ZsYWciLCJwcml2YXRlX2ZsYWciLCJjb25zdGFudF9zdHJpbmciLCJ0eXZhciIsInR5dmFyX2xvYyIsInN0cmluZ19xdW90IiwiY2xhc3NfcGFyYW1zX2RlZiIsImwiLCJ0eXBlX3BhcmFtIiwidHlwZV93aXRoX2xhYmVsIiwibGFiZWwiLCJjb3JlX3R5cGUxIiwiY29yZV90eXBlIiwiYXR0cmlidXRlcyIsImN0MiIsImN0MSIsImN0Iiwic2wiLCJjdCQwIiwiY3QkMSIsImwkMCIsImxpIiwibCQxIiwiY29yZV9maWVsZF90eXBlIiwiZmllbGRfdmFyIiwibCQyIiwibGkkMCIsImxvdyIsImNsb3NlZCIsImwkMyIsImZpcnN0X2lzX2luaGVyaXQiLCJ0eXBlX3ZhcmlhbnRfaGVscGVyIiwiY3RsIiwiY3N0cnMiLCJsaWQiLCJhdXgiLCJleHRlbnNpb24iLCJwYXR0ZXJuJDEiLCJwYXR0ZXJuIiwicCIsInAyIiwicDEiLCJvcnBhdHMiLCJwYXR0ZXJuMSIsInBhdHRlcm4xJDAiLCJwYXR0ZXJuX2xpc3RfaGVscGVyIiwicGF0MiIsInBhdDEiLCJzaW1wbGVfcGF0dGVybiIsInNpbXBsZV9wYXR0ZXJuJDAiLCJwbyIsInZsIiwiYzIiLCJjMSIsImxvbmdpZGVudF94X3BhdHRlcm4iLCJwJDAiLCJwJDEiLCJwJDIiLCJ3aXRoX3BhcmVuIiwibGFiZWxfZXhwIiwicmVzdCIsInR4dCQwIiwibyQwIiwic3VnYXJfZXhwciIsImFyZ3MiLCJpZCIsImxhYiIsInByaW50X2luZGV4b3AiLCJwYXRoX3ByZWZpeCIsImFzc2lnbiIsImxlZnQiLCJwcmludF9pbmRleCIsImluZGljZXMiLCJyZW1fYXJncyIsInByaW50X3BhdGgiLCJzaW1wbGVfZXhwciIsImUkMCIsInBhdGgiLCJmdW5jIiwib3RoZXJfYXJncyIsImEkMCIsImFzc2lnbiQwIiwicHJpbnQiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJpbmRleGVzIiwicmVzdCQzIiwiaTMiLCJpMiIsImkxIiwicmVzdCQ0IiwiaTIkMCIsImkxJDAiLCJyZXN0JDUiLCJpMSQxIiwibXVsdGlfaW5kaWNlcyIsIm4iLCJraW5kIiwicmlnaHQkMCIsImxlZnQkMCIsImwkNSIsImUkNyIsImFyZzEiLCJhcmcyIiwibGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIiwicyQxIiwicyQyIiwiZXhwcmVzc2lvbjIiLCJlbyQwIiwiZW8kMSIsImwkNiIsImUyJDEiLCJlMSQxIiwibGkkMSIsImUkOCIsInMkMyIsImwkNyIsInN0cmluZ194X2V4cHJlc3Npb24iLCJlJDkiLCJlJDEwIiwiZSQxMSIsImUkMTIiLCJjYXNlX2xpc3QiLCJlMCIsImUkMSIsImwkNCIsImUkMiIsImUkMyIsIm1lIiwibW9kdWxlX2V4cHIiLCJlJDQiLCJjZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImUkNSIsImUkNiIsImJvZHkiLCJhbmRzIiwibGV0JDAiLCJiaW5kaW5nX29wIiwiZW8iLCJlMiIsImV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSIsImUyJDAiLCJlMSQwIiwibHN0IiwiYmluZGluZ3MiLCJjcyIsImNsYXNzX3N0cnVjdHVyZSIsImV4cHJlc3Npb24yJDAiLCJzaW1wbGVfZXhwciQwIiwibG9uZ2lkZW50X3hfZXhwcmVzc2lvbiIsImUzIiwiZGYiLCJleHByZXNzaW9uIiwiY3RvMSIsInBheWxvYWQiLCJpdGVtX2F0dHJpYnV0ZXMiLCJmbG9hdGluZ19hdHRyaWJ1dGUiLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsIml0ZW1fZXh0ZW5zaW9uIiwiZXhjZXB0aW9uX2RlY2xhcmF0aW9uIiwiY2xhc3NfdHlwZV9maWVsZCIsImNsYXNzX3R5cGUiLCJ2ZiIsIm1mIiwidmYkMCIsInBmIiwiY2xhc3Nfc2lnbmF0dXJlIiwiY2wiLCJjbyIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJrd2QiLCJjbGFzc19maWVsZCIsInNvIiwiY2UiLCJvdmYiLCJjbGFzc19leHByIiwib3ZmJDAiLCJvdmYkMSIsImJpbmQiLCJiaW5kaW5nIiwiY2UkMCIsImNlJDEiLCJtb2R1bGVfdHlwZSQxIiwibW9kdWxlX3R5cGUiLCJtdDIkMCIsIm10MiIsIm10MSIsIm1vZHVsZV90eXBlMSIsIm10IiwidGQiLCJscyQwIiwidHlwZV9kZWNsYXJhdGlvbiIsImxpMiIsIm10eSIsIm10eSQwIiwibGkkMiIsInRkJDAiLCJscyQxIiwibGkkMyIsImxzJDIiLCJsaTIkMCIsImxpJDQiLCJtb2R1bGVfdHlwZTEkMCIsInNpZ25hdHVyZV9pdGVtIiwic2lnbmF0dXJlIiwidmQiLCJpbnRybyIsInR5cGVfZGVmX2xpc3QiLCJ0ZSIsInR5cGVfZXh0ZW5zaW9uIiwiZWQiLCJwbWQiLCJhbGlhcyIsInBtcyIsImRlY2xzIiwib3B0JDAiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwieDAiLCJjb3B5X3N0cnVjdHVyZSIsIngwJDAiLCJjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSIsInBkaXJfbG9jIiwiY29weV9sb2NhdGlvbiIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IiwiY29weV9sb2MiLCJwZGlyYV9sb2MiLCJwZGlyYV9kZXNjIiwiY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyIsIngxIiwieDAkMSIsImNvcHlfTG9uZ2lkZW50X3QiLCJ4MCQyIiwiY29weV9leHByZXNzaW9uIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsImNvcHlfYXR0cmlidXRlcyIsImNvcHlfbG9jYXRpb25fc3RhY2siLCJjb3B5X2V4cHJlc3Npb25fZGVzYyIsImNvcHlfY29uc3RhbnQiLCJ4MiIsImNvcHlfdmFsdWVfYmluZGluZyIsImNvcHlfcmVjX2ZsYWciLCJjb3B5X2Nhc2UiLCJ4MyIsIngyJDAiLCJ4MSQwIiwieDAkMyIsImNvcHlfcGF0dGVybiIsImNvcHlfYXJnX2xhYmVsIiwieDEkMSIsIngwJDQiLCJ4MSQyIiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDAkNyIsIngxJDQiLCJ4MCQ4IiwieDEkNSIsIngwJDkiLCJ4MSQ2IiwieDAkMTAiLCJ4MSQ3IiwieDAkMTEiLCJ4MiQxIiwieDEkOCIsIngwJDEyIiwieDAkMTMiLCJ4MiQyIiwieDEkOSIsIngwJDE0IiwieDEkMTAiLCJ4MCQxNSIsIngxJDExIiwieDAkMTYiLCJ4NCIsIngzJDAiLCJ4MiQzIiwieDEkMTIiLCJ4MCQxNyIsImNvcHlfZGlyZWN0aW9uX2ZsYWciLCJ4MSQxMyIsIngwJDE4IiwiY29weV9jb3JlX3R5cGUiLCJ4MiQ0IiwieDEkMTQiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJjb3B5X2xhYmVsIiwieDAkMjEiLCJ4MSQxNiIsIngwJDIyIiwieDAkMjMiLCJ4MiQ1IiwieDEkMTciLCJ4MCQyNCIsImNvcHlfbW9kdWxlX2V4cHIiLCJ4MSQxOCIsIngwJDI1IiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJ4MCQyNiIsIngwJDI3IiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwiY29weV9jbGFzc19zdHJ1Y3R1cmUiLCJ4MSQyMCIsIngwJDMwIiwieDAkMzEiLCJ4MSQyMSIsIngwJDMyIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwieDAkMzMiLCJjb3B5X2xldG9wIiwieDAkMzQiLCJjb3B5X2V4dGVuc2lvbiIsImNvcHlfYmluZGluZ19vcCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfY29uc3RyYWludCIsInB2Yl9leHByIiwicHZiX3BhdCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwcGF0X2xvYyIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiIsImdyb3VuZCIsImNvZXJjaW9uJDAiLCJwdHlwX2xvYyQwIiwidHlwJDMiLCJwdmJfcGF0JDMiLCJncm91bmQkMCIsInBleHBfbG9jJDAiLCJwdmJfZXhwciQzIiwicHZiX2V4cHIkMSIsInB2Yl9wYXQkMSIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsInR5cCQyIiwidHlwJDEiLCJwdHlwX2xvYyIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2Rlc2MiLCJjb3B5X3BhdHRlcm5fZGVzYyIsImNvcHlfY2xvc2VkX2ZsYWciLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJjb3B5X21vZHVsZV90eXBlIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJjb3B5X21vZHVsZV90eXBlX2Rlc2MiLCJjb3B5X3dpdGhfY29uc3RyYWludCIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsImNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyIsImNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIiwiY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIiwiY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIiwiY29weV9jbGFzc19kZXNjcmlwdGlvbiIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwiY29weV9jbGFzc190eXBlX2Rlc2MiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIiwiY29weV92aXJ0dWFsX2ZsYWciLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImNvcHlfcG9zaXRpb24iLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmciLCJ0eV9leHQiLCJydCQwIiwidmFsdWVfcGF0dGVybiIsInZhbHVlX2V4cCIsImlubmVyX2UiLCJleHRlcm5fY3QiLCJleHRlcm5fY3QkMCIsInB0X3R5dmFycyQwIiwid2l0aF9jb25zdHJhaW50IiwidHlfdmFycyIsInB2Yl9jb25zdHJhaW50JDAiLCJleHByJDAiLCJjb2VyY2UiLCJnciIsImV4cHIkMSIsInB2Yl9jb25zdHJhaW50JDEiLCJoZCIsInEiLCJpc191bml0IiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV9leHByIiwiY29weV9jYXNlcyIsImNvcHlfcGF0IiwiY29weV90eXAiLCJtYXBfb3B0aW9uIiwiY29weV9vcHRpb24iLCJjb3B5X2Jvb2wiLCJjb3B5X2xvbmdpZGVudCIsIngwX2xvYyIsIndyYXAiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwiZmllbGRzIiwiY3R5IiwibG9jJDEiLCJub2xvYyIsImZyb21fbG9jIiwicG9zIiwiaW5qZWN0X3ByZWRlZl9vcHRpb24iLCJkIiwiaWRlbnQiLCJ0eXBlX2RlY2xhcmF0aW9ucyIsInJlY2ZsYWciLCJ0eXBlcyIsImV4dHJhY3RfcHJlZGVmX29wdGlvbiIsImlzX25vbnJlYyIsImF0dHIiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImludDMyIiwib3B0Iiwic3RoIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiY2hhciQwIiwiYyIsInN0cmluZyIsInF1b3RhdGlvbl9kZWxpbWl0ZXIiLCJzIiwibG9jIiwibWsiLCJuYW1lIiwicGF5bG9hZCIsIm1rJDAiLCJkIiwic3RoJDAiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwibWF0Y2giLCJ0cnkkMCIsInR1cGxlJDEiLCJjb25zdHJ1Y3QkMCIsInZhcmlhbnQkMSIsInJlY29yZCQwIiwic2V0ZmllbGQiLCJhcnJheSQwIiwiaWZ0aGVuZWxzZSIsInNlcXVlbmNlIiwid2hpbGUkMCIsImZvciQwIiwiY29uc3RyYWludCQwIiwiY29lcmNlIiwic2VuZCIsIm5ldyQwIiwic2V0aW5zdHZhciIsIm92ZXJyaWRlIiwibGV0bW9kdWxlIiwibGV0ZXhjZXB0aW9uIiwiYXNzZXJ0IiwibGF6eSQwIiwicG9seSQwIiwib2JqZWN0JDAiLCJuZXd0eXBlIiwicGFjayIsIm9wZW4kMCIsImxldG9wIiwiYW5kcyIsImJvZHkiLCJleHRlbnNpb24kMSIsInVucmVhY2hhYmxlIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJtayQzIiwiYXR0ciQyIiwiaWRlbnQkMCIsImFsaWFzJDEiLCJzaWduYXR1cmUiLCJmdW5jdG9yIiwid2l0aCQwIiwidHlwZW9mJDAiLCJleHRlbnNpb24kMiIsIm1rJDQiLCJhdHRyJDMiLCJpZGVudCQxIiwic3RydWN0dXJlIiwiZnVuY3RvciQwIiwiYXBwbHkkMCIsIm0xIiwibTIiLCJjb25zdHJhaW50JDEiLCJtIiwibXR5IiwidW5wYWNrJDAiLCJleHRlbnNpb24kMyIsIm1rJDUiLCJ2YWx1ZSIsInR5cGUkMCIsInJlY19mbGFnIiwidHlwZV9zdWJzdCIsInR5cGVfZXh0ZW5zaW9uIiwiZXhjZXB0aW9uJDAiLCJtb2R1bGUiLCJtb2Rfc3Vic3QiLCJyZWNfbW9kdWxlIiwibW9kdHlwZSIsIm9wZW4kMSIsImluY2x1ZGUiLCJjbGFzcyQxIiwiY2xhc3NfdHlwZSIsImV4dGVuc2lvbiQ0IiwiYXR0cmlidXRlIiwibWskNiIsImV2YWwkMCIsInZhbHVlJDAiLCJwcmltaXRpdmUiLCJ0eXBlJDEiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiZXhjZXB0aW9uJDEiLCJtb2R1bGUkMCIsInJlY19tb2R1bGUkMCIsIm1vZHR5cGUkMCIsIm9wZW4kMiIsImNsYXNzJDIiLCJjbGFzc190eXBlJDAiLCJpbmNsdWRlJDAiLCJleHRlbnNpb24kNSIsImF0dHJpYnV0ZSQwIiwibWskNyIsImF0dHIkNCIsImNvbnN0ciQwIiwic3RydWN0dXJlJDAiLCJmdW4kMCIsImFwcGx5JDEiLCJsZXQkMSIsImNvbnN0cmFpbnQkMiIsImV4dGVuc2lvbiQ2Iiwib3BlbiQzIiwibWskOCIsImF0dHIkNSIsImNvbnN0ciQxIiwic2lnbmF0dXJlJDAiLCJhcnJvdyQwIiwiZXh0ZW5zaW9uJDciLCJvcGVuJDQiLCJtayQ5IiwiaW5oZXJpdCIsInZhbCIsIm1ldGhvZCIsImNvbnN0cmFpbnQkMyIsImV4dGVuc2lvbiQ4IiwiYXR0cmlidXRlJDEiLCJhdHRyJDYiLCJtayQxMCIsImluaGVyaXQkMCIsInZhbCQwIiwibWV0aG9kJDAiLCJjb25zdHJhaW50JDQiLCJpbml0aWFsaXplciIsImV4dGVuc2lvbiQ5IiwiYXR0cmlidXRlJDIiLCJ2aXJ0dWFsIiwiY3QiLCJjb25jcmV0ZSIsImF0dHIkNyIsIm1rJDExIiwic3RoJDEiLCJwcmltIiwibWskMTIiLCJtayQxMyIsInN5biIsIm1rJDE0IiwibWskMTUiLCJleHByIiwibWskMTYiLCJtayQxNyIsIm1leHByIiwibWskMTgiLCJtayQxOSIsInZpcnQiLCJzdGgkMiIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsInN0aCQzIiwia2luZCIsInN0aCQ0IiwicHJpdiIsImNvbnN0cnVjdG9yIiwicmVzIiwidmFycyIsImFyZ3MiLCJmaWVsZCQwIiwibXV0IiwibWskMjEiLCJwYXRoIiwiY29uc3RydWN0b3JzIiwibWtfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IkMCIsImRlY2wiLCJyZWJpbmQiLCJsaWQiLCJtayQyMiIsInNlbGYiLCJmaWVsZHMiLCJtayQyMyIsIm1rJDI0IiwidGFnIiwiY29uc3QkMCIsInR5cyIsImluaGVyaXQkMSIsInR5IiwibWskMjUiLCJ0YWckMCIsImluaGVyaXQkMiIsInN0cmluZ192ZXJzaW9uIiwic3RyaW5nX3ZlcnNpb24kMCIsInN0cmluZ192ZXJzaW9uJDEiLCJzdHJpbmdfdmVyc2lvbiQyIiwic3RyaW5nX3ZlcnNpb24kMyIsInN0cmluZ192ZXJzaW9uJDQiLCJzdHJpbmdfdmVyc2lvbiQ1Iiwic3RyaW5nX3ZlcnNpb24kNiIsInN0cmluZ192ZXJzaW9uJDciLCJzdHJpbmdfdmVyc2lvbiQ4Iiwic3RyaW5nX3ZlcnNpb24kOSIsInN0cmluZ192ZXJzaW9uJDEwIiwic3RyaW5nX3ZlcnNpb24kMTEiLCJzdHJpbmdfdmVyc2lvbiQxMiIsInN0cmluZ192ZXJzaW9uJDEzIiwibWlncmF0aW9uX2luZm8iLCJpZCIsIm1pZ3JhdGlvbl9pZGVudGl0eSIsImNvbXBvc2UiLCJnIiwibWlncmF0aW9uX2Z1bmN0aW9ucyIsImlzX3VuZGVmaW5lZCIsImltbWVkaWF0ZV9taWdyYXRpb24iLCJBIiwiZGlyZWN0aW9uIiwidmVyc2lvbiIsInRvIiwiZnVucyIsIkIiLCJtJDEiLCJUbyIsImFiIiwidG8yIiwiYmMiLCJtJDAiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwiY29weV9zaWduYXR1cmVfaXRlbSIsImNvcHlfbW9kdWxlX3R5cGUiLCJjb3B5X21vZHVsZV9leHByIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJjb3B5X2NsYXNzX3R5cGUiLCJjb3B5X2NsYXNzX2ZpZWxkIiwiY29weV9jbGFzc19leHByIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jYXNlIiwiY29weV9wYXR0ZXJuIiwiY29weV9leHByZXNzaW9uIiwiY29weV9jb3JlX3R5cGUiLCJjb3B5X3RvcGxldmVsX3BocmFzZSIsImNvcHlfc2lnbmF0dXJlIiwiY29weV9zdHJ1Y3R1cmUiLCJtaWdyYXRpb25faW5mbyQwIiwibWlncmF0aW9uX2luZm8kMSIsIm1pZ3JhdGlvbl9pbmZvJDIiLCJtaWdyYXRpb25faW5mbyQzIiwibWlncmF0aW9uX2luZm8kNCIsIm1pZ3JhdGlvbl9pbmZvJDUiLCJtaWdyYXRpb25faW5mbyQ2IiwibWlncmF0aW9uX2luZm8kNyIsIm1pZ3JhdGlvbl9pbmZvJDgiLCJtaWdyYXRpb25faW5mbyQ5IiwibWlncmF0aW9uX2luZm8kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwibWlncmF0aW9uX2luZm8kMTMiLCJhbGxfdmVyc2lvbnMiLCJ2ZXJzaW9uJDAiLCJ2ZXJzaW9uJDEiLCJ2ZXJzaW9uJDIiLCJ2ZXJzaW9uJDMiLCJ2ZXJzaW9uJDQiLCJ2ZXJzaW9uJDUiLCJ2ZXJzaW9uJDYiLCJ2ZXJzaW9uJDciLCJ2ZXJzaW9uJDgiLCJ2ZXJzaW9uJDkiLCJ2ZXJzaW9uJDEwIiwidmVyc2lvbiQxMSIsInZlcnNpb24kMTIiLCJ2ZXJzaW9uJDEzIiwiZnJvbV9tYWdpYyIsIm1hZ2ljIiwiYWxsX3ZlcnNpb25zX3RvcF9kb3duIiwidGFpbCIsIlZlcnNpb24iLCJvZl9vY2FtbCIsIm5vZGUiLCJ5IiwidG9fb2NhbWwiLCJvZl9vY2FtbF9tYXBwZXIiLCJpdGVtIiwiY3R4dCIsInRvX29jYW1sX21hcHBlciIsImltcGxlbWVudGF0aW9uIiwibGV4YnVmIiwiaW50ZXJmYWNlJDAiLCJ0b3BsZXZlbF9waHJhc2UiLCJ1c2VfZmlsZSIsImV4cHJlc3Npb24iLCJwYXR0ZXJuIiwiZGVmYXVsdF9wcmludF93YXJuaW5nIiwiYWJvdXRfaXRlX2JyYW5jaF9yZWYiLCJjYXJlX2Fib3V0X2l0ZV9icmFuY2giLCJhYm91dF9pdGVfYnJhbmNoIiwic2VsZl8xIiwiYSQwIiwiYSQxIiwiYSQyIiwiYiQwIiwiYSQzIiwiYSQ0IiwiYSQ1IiwiYSQ2IiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwicGRpcl9sb2MiLCJwZGlyX2FyZyIsInBkaXJfbmFtZSIsInBkaXJfbmFtZSQwIiwicGRpcl9hcmckMCIsInBkaXJfbG9jJDAiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1iX25hbWUkMCIsInBtYl9leHByJDAiLCJwbWJfYXR0cmlidXRlcyQwIiwicG1iX2xvYyQwIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2V4cHIiLCJwdmJfcGF0IiwicHZiX3BhdCQwIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJwdmJfbG9jJDAiLCJiJDEiLCJiJDIiLCJiJDMiLCJiJDQiLCJhJDciLCJhJDgiLCJhJDkiLCJhJDEwIiwiYSQxMSIsImEkMTIiLCJhJDEzIiwiYSQxNCIsImEkMTUiLCJhJDE2IiwiYSQxNyIsImEkMTgiLCJhJDE5IiwiYSQyMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImIkNSIsImEkMjciLCJhJDI4IiwiYiQ2IiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwiYiQ3IiwiYiQ4IiwiYiQ5IiwiYiQxMCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwaW5jbF9tb2QkMCIsInBpbmNsX2xvYyQwIiwicGluY2xfYXR0cmlidXRlcyQwIiwicG9wZW5fYXR0cmlidXRlcyIsInBvcGVuX2xvYyIsInBvcGVuX292ZXJyaWRlIiwicG9wZW5fZXhwciIsInBvcGVuX2V4cHIkMCIsInBvcGVuX292ZXJyaWRlJDAiLCJwb3Blbl9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJhJDI5IiwiYSQzMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsInBjZl9hdHRyaWJ1dGVzIiwicGNmX2xvYyIsInBjZl9kZXNjIiwicGNmX2Rlc2MkMCIsInBjZl9sb2MkMCIsInBjZl9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJkJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJkJDEiLCJkJDIiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsInBjc2lnX3NlbGYkMCIsInBjc2lnX2ZpZWxkcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwiYW5kcyQwIiwiYm9keSQwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImIkMTEiLCJiJDEyIiwiYiQxMyIsImIkMTQiLCJiJDE1IiwiYiQxNiIsImIkMTciLCJiJDE4IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYSQzMSIsImEkMzIiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInByZl9hdHRyaWJ1dGVzIiwicHJmX2xvYyIsInByZl9kZXNjJDAiLCJwcmZfbG9jJDAiLCJwcmZfYXR0cmlidXRlcyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJ0eHQiLCJ0eHQkMCIsImxvYyQwIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImxvY19zdGFydCQwIiwibG9jX2VuZCQwIiwibG9jX2dob3N0JDAiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJzZWxmXzIiLCJzZWxmXzMiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwiYWNjJDgiLCJhY2MkOSIsImFjYyQxMCIsImFjYyQxMSIsImFjYyQxMiIsImFjYyQxMyIsImFjYyQxNCIsImFjYyQxNSIsImFjYyQxNiIsImFjYyQxNyIsImFjYyQxOCIsImFjYyQxOSIsImFjYyQyMCIsImFjYyQyMSIsImFjYyQyMiIsImFjYyQyMyIsImFjYyQyNCIsImFjYyQyNSIsImFjYyQyNiIsImFjYyQyNyIsImFjYyQyOCIsImFjYyQyOSIsImFjYyQzMCIsImFjYyQzMSIsImFjYyQzMiIsImFjYyQzMyIsImFjYyQzNCIsImFjYyQzNSIsImFjYyQzNiIsImFjYyQzNyIsImFjYyQzOCIsImFjYyQzOSIsImFjYyQ0MCIsImFjYyQ0MSIsImFjYyQ0MiIsImFjYyQ0MyIsImFjYyQ0NCIsImFjYyQ0NSIsImFjYyQ0NiIsImFjYyQ0NyIsImFjYyQ0OCIsImFjYyQ0OSIsImFjYyQ1MCIsImFjYyQ1MSIsImFjYyQ1MiIsImFjYyQ1MyIsImFjYyQ1NCIsImFjYyQ1NSIsInNlbGZfNCIsImFjYyQ1NiIsImFjYyQ1NyIsImFjYyQ1OCIsImFjYyQ1OSIsImFjYyQ2MCIsImFjYyQ2MSIsImFjYyQ2MiIsImFjYyQ2MyIsImFjYyQ2NCIsImFjYyQ2NSIsImFjYyQ2NiIsImFjYyQ2NyIsImFjYyQ2OCIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInRvX2V4dGVuc2lvbiIsImVycm9yIiwic3ViX21zZ3MiLCJtYWluX21zZyIsImVycl9leHRlbnNpb25fbmFtZSIsIm1rX3N0cmluZ19jb25zdGFudCIsImV4dGVuc2lvbl9vZl9zdWJfbXNnIiwic3ViX21zZyIsInJlZ2lzdGVyX2Vycm9yX29mX2V4biIsIm1lc3NhZ2UiLCJzZXRfbWVzc2FnZSIsIm1ha2UiLCJzdWIiLCJzdWIkMCIsInVwZGF0ZV9sb2MiLCJnZXRfbG9jYXRpb24iLCJvZl9leG4iLCJyYWlzZSIsInByaW50IiwiZGlmZl9jb21tYW5kIiwib3B0IiwiZmlsZTEiLCJmaWxlMiIsInN0aCIsImV4dHJhX3BhdGRpZmZfYXJncyIsInN0aCQwIiwidXNlX2NvbG9yIiwiZXhlYyIsImNtZCIsImNtZCQwIiwibiIsInMiLCJhcmdzIiwiZXJyX2NvZGUiLCJhbGwiLCJyZWdpc3RlciIsIm5hbWUiLCJkZXJpdmVyIiwibG9va3VwIiwiZHJ2IiwiZGVyaXZlcnMiLCJhY2MiLCJ4Iiwic2VsZl8xIiwiZiIsIngkMCIsInNlbGZfMiIsImFjYyIsInNlbGZfMyIsImEiLCJyIiwiaSIsImxvb3AiLCJsIiwibCQwIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsInNlbGZfNCIsImxlbiIsImEkMCIsIngkMSIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInJlc19oZWFkIiwicmVzX3RhaWwiLCJyZXMiLCJmbGFncyQwIiwiZmxhZ3MiLCJjb21wYXJlIiwiZXF1YWwiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwibWluIiwibWF4IiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJtaW4kMCIsIm1heCQwIiwidG9fc3RyaW5nIiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsIm1pbiQxIiwibWF4JDEiLCJzdWJfc3RyaW5nIiwidCIsInBvcyIsImxlbiIsImJsaXRfc3RyaW5nIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwibWluJDIiLCJtYXgkMiIsInByb3RlY3R4IiwieCIsImYiLCJmaW5hbGx5JDAiLCJ5IiwiZXhuJDAiLCJleG4iLCJ0b19zdHJpbmckMSIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJtaW4kMyIsIm1heCQzIiwiaWQiLCJzZXQiLCJrZXkiLCJkYXRhIiwiYWRkIiwiYWRkX2V4biIsImZpbmRfb3B0IiwiZmluZF9vcl9hZGQiLCJkZWZhdWx0JDAiLCJkYXRhJDAiLCJhZGRfYWxpc3QiLCJhbGlzdCIsImFsaXN0JDAiLCJhbGlzdCQxIiwib2ZfYWxpc3QiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJjcmVhdGUkMCIsIm9wdCIsImZpbGUiLCJzdGgiLCJiaW5hcnkiLCJ3aXRoX2ZpbGUiLCJmaWxlbmFtZSIsImlucHV0X2FsbCIsImJ1ZiIsImNoYXIkMCIsInJlYWRfYWxsIiwibWF4X2ludCIsInRvX3N0cmluZyQyIiwiY29tcGFyZSQ1IiwiZXF1YWwkNSIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsIm1pbiQ0IiwibWF4JDQiLCJtZXJnZSIsInJlbW92ZV9hc3NvYyIsInJlbW92ZV9hc3NxIiwicmV2X21hcGkiLCJsaXN0IiwibGlzdCQwIiwiaSIsImFjYyIsInRhaWwiLCJoZWFkIiwiYWNjJDAiLCJpJDAiLCJmb2xkX3JpZ2h0MiIsImxpc3QxIiwibGlzdDIiLCJpbml0IiwibWFwJDAiLCJtYXBpJDAiLCJmb2xkX3JpZ2h0JDAiLCJhcHBlbmQiLCJjb25jYXQkMCIsInJldl9jb21iaW5lIiwiY29tYmluZSIsInNwbGl0IiwieXMiLCJ4cyIsIm1hcDIiLCJwYXJ0aXRpb25fbWFwIiwicCIsImwiLCJsZWZ0IiwicmlnaHQiLCJsJDAiLCJ2IiwidiQwIiwiaW5pdCQwIiwicG9zJDAiLCJpc19lbXB0eSIsInJldl9maWx0ZXJfb3B0Iiwib3B0aW9uIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJzb21lIiwiZmluZF9tYXBfZXhuIiwibGFzdCIsInJlc3QiLCJzcGxpdF93aGlsZSIsImZpbmRfYV9kdXAiLCJzZXQkMSIsInNldCQwIiwiYXNzb2Nfb3B0IiwiaXRlciQyIiwiaXNfc29tZSIsIml0ZXIkMyIsIm1hcCQxIiwidmFsdWUiLCJ0b19saXN0IiwiYmluZCIsImEiLCJlIiwibWFwJDIiLCJtYXBfZXJyb3IiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJoYW5kbGVfZXJyb3IiLCJzeW1ib2wkMzUiLCJxMiIsInQyIiwicTEiLCJ0MSIsImhkJDAiLCJ0b19saXN0JDAiLCJxIiwibWFwJDMiLCJjcmVhdGUkMSIsInN0aCQwIiwic3RoJDEiLCJmYWlsX2lmX2V4aXN0cyIsInN0aCQyIiwicGVybSIsImZsYWdzJDEiLCJmbGFncyQyIiwid2l0aF9maWxlJDAiLCJ3cml0ZV9hbGwiLCJpc19lbXB0eSQwIiwicHJlZml4Iiwic3VmZml4IiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImlzX3ByZWZpeCIsImlzX3N1ZmZpeCIsInN1ZmZpeF9vZmZzZXQiLCJwb3MkMSIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiaW5kZXhfb3B0JDAiLCJyaW5kZXhfb3B0JDAiLCJpbmRleF9mcm9tX29wdCQwIiwicmluZGV4X2Zyb21fb3B0JDAiLCJsc3BsaXQyIiwib24iLCJjYXBpdGFsaXplX2FzY2lpJDAiLCJsb3dlcmNhc2VfYXNjaWkkMSIsInVuY2FwaXRhbGl6ZV9hc2NpaSQwIiwic3BsaXRfb25fY2hhciQwIiwic2VwIiwiY29tcGFyZSQ3IiwiZXF1YWwkNyIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsIm1pbiQ1IiwibWF4JDUiLCJmaW5kX29wdCQxIiwic3ltYm9sJDQyIiwib3V0cHV0Iiwib2MiLCJieXRlcyIsIm91dHB1dF9zdWJzdHJpbmciLCJzdHJpbmciLCJpbl9maWxlIiwibmFtZSIsImxvYyIsInNldF9maWxlbmFtZSIsImZuIiwibG9jX3N0YXJ0IiwibG9jX2VuZCIsIm5vbmUiLCJpbml0IiwibGV4YnVmIiwiZm5hbWUiLCJyYWlzZV9lcnJvcmYiLCJmbXQiLCJyZXBvcnRfZXhjZXB0aW9uIiwib2ZfbGV4YnVmIiwicHJpbnQiLCJwcGYiLCJ0IiwiY29tcGFyZV9wb3MiLCJwMSIsInAyIiwiY29sdW1uIiwicCIsIm4iLCJtaW5fcG9zIiwibWF4X3BvcyIsImNvbXBhcmUiLCJsb2MxIiwibG9jMiIsImNyZWF0ZWYiLCJzdHIiLCJlcnJvcl9leHRlbnNpb25mIiwiZSIsImZhaWwiLCJleHBlY3RlZCIsImF0dHJpYnV0ZSIsInBheWxvYWQiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsInBjbF9jb25zdHIiLCJ4MCIsIngxIiwicGNsX3N0cnVjdHVyZSIsInBjbF9mdW4iLCJ4MiIsIngzIiwicGNsX2FwcGx5IiwicGNsX2xldCIsInBjbF9jb25zdHJhaW50IiwicGNsX2V4dGVuc2lvbiIsInBjbF9vcGVuIiwicGNmX2luaGVyaXQiLCJwY2ZfdmFsIiwicGNmX21ldGhvZCIsInBjZl9jb25zdHJhaW50IiwicGNmX2luaXRpYWxpemVyIiwicGNmX2F0dHJpYnV0ZSIsInBjZl9leHRlbnNpb24iLCJjbGFzc19pbmZvcyIsInZpcnQiLCJwYXJhbXMiLCJleHByIiwiY2xhc3Nfc2lnbmF0dXJlIiwic2VsZiIsImZpZWxkcyIsImNsYXNzX3N0cnVjdHVyZSIsInBjdHlfY29uc3RyIiwicGN0eV9zaWduYXR1cmUiLCJwY3R5X2Fycm93IiwicGN0eV9leHRlbnNpb24iLCJwY3R5X29wZW4iLCJwY3RmX2luaGVyaXQiLCJwY3RmX3ZhbCIsInBjdGZfbWV0aG9kIiwicGN0Zl9jb25zdHJhaW50IiwicGN0Zl9hdHRyaWJ1dGUiLCJwY3RmX2V4dGVuc2lvbiIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidmFycyIsImFyZ3MiLCJyZXMiLCJwdHlwX2FueSIsInB0eXBfdmFyIiwicHR5cF9hcnJvdyIsInB0eXBfdHVwbGUiLCJwdHlwX2NvbnN0ciIsInB0eXBfb2JqZWN0IiwicHR5cF9jbGFzcyIsInB0eXBfYWxpYXMiLCJwdHlwX3ZhcmlhbnQiLCJwdHlwX3BvbHkiLCJwdHlwX3BhY2thZ2UiLCJwdHlwX2V4dGVuc2lvbiIsInBkaXJfc3RyaW5nIiwicGRpcl9pbnQiLCJwZGlyX2lkZW50IiwicGRpcl9ib29sIiwicGV4cF9pZGVudCIsInBleHBfY29uc3RhbnQiLCJwZXhwX2xldCIsInBleHBfZnVuY3Rpb24iLCJwZXhwX2Z1biIsInBleHBfYXBwbHkiLCJwZXhwX21hdGNoIiwicGV4cF90cnkiLCJwZXhwX3R1cGxlIiwicGV4cF9jb25zdHJ1Y3QiLCJwZXhwX3ZhcmlhbnQiLCJwZXhwX3JlY29yZCIsInBleHBfZmllbGQiLCJwZXhwX3NldGZpZWxkIiwicGV4cF9hcnJheSIsInBleHBfaWZ0aGVuZWxzZSIsInBleHBfc2VxdWVuY2UiLCJwZXhwX3doaWxlIiwicGV4cF9mb3IiLCJ4NCIsInBleHBfY29uc3RyYWludCIsInBleHBfY29lcmNlIiwicGV4cF9zZW5kIiwicGV4cF9uZXciLCJwZXhwX3NldGluc3R2YXIiLCJwZXhwX292ZXJyaWRlIiwicGV4cF9sZXRtb2R1bGUiLCJwZXhwX2xldGV4Y2VwdGlvbiIsInBleHBfYXNzZXJ0IiwicGV4cF9sYXp5IiwicGV4cF9wb2x5IiwicGV4cF9vYmplY3QiLCJwZXhwX25ld3R5cGUiLCJwZXhwX3BhY2siLCJwZXhwX29wZW4iLCJwZXhwX2xldG9wIiwicGV4cF9leHRlbnNpb24iLCJwZXhwX3VucmVhY2hhYmxlIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwia2luZCIsImluY2x1ZGVfaW5mb3MiLCJtb2QiLCJsYWJlbF9kZWNsYXJhdGlvbiIsIm11dGFibGUiLCJ0eXBlIiwibGV0b3AiLCJsZXQkMCIsImFuZHMiLCJib2R5IiwibG9jYXRpb24iLCJzdGFydCIsImVuZCIsImdob3N0IiwibW9kdWxlX2JpbmRpbmciLCJtb2R1bGVfZGVjbGFyYXRpb24iLCJwbW9kX2lkZW50IiwicG1vZF9zdHJ1Y3R1cmUiLCJwbW9kX2Z1bmN0b3IiLCJwbW9kX2FwcGx5IiwicG1vZF9jb25zdHJhaW50IiwicG1vZF91bnBhY2siLCJwbW9kX2V4dGVuc2lvbiIsIm1vZHVsZV9zdWJzdGl0dXRpb24iLCJtYW5pZmVzdCIsInBtdHlfaWRlbnQiLCJwbXR5X3NpZ25hdHVyZSIsInBtdHlfZnVuY3RvciIsInBtdHlfd2l0aCIsInBtdHlfdHlwZW9mIiwicG10eV9leHRlbnNpb24iLCJwbXR5X2FsaWFzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb24iLCJvdGFnIiwib2luaGVyaXQiLCJvcGVuX2luZm9zIiwib3ZlcnJpZGUiLCJwcGF0X2FueSIsInBwYXRfdmFyIiwicHBhdF9hbGlhcyIsInBwYXRfY29uc3RhbnQiLCJwcGF0X2ludGVydmFsIiwicHBhdF90dXBsZSIsInBwYXRfY29uc3RydWN0IiwicHBhdF92YXJpYW50IiwicHBhdF9yZWNvcmQiLCJwcGF0X2FycmF5IiwicHBhdF9vciIsInBwYXRfY29uc3RyYWludCIsInBwYXRfdHlwZSIsInBwYXRfbGF6eSIsInBwYXRfdW5wYWNrIiwicHBhdF9leGNlcHRpb24iLCJwcGF0X2V4dGVuc2lvbiIsInBwYXRfb3BlbiIsInBvc2l0aW9uIiwibG51bSIsImJvbCIsImNudW0iLCJydGFnIiwicmluaGVyaXQiLCJwc2lnX3ZhbHVlIiwicHNpZ190eXBlIiwicHNpZ190eXBlc3Vic3QiLCJwc2lnX3R5cGV4dCIsInBzaWdfZXhjZXB0aW9uIiwicHNpZ19tb2R1bGUiLCJwc2lnX21vZHN1YnN0IiwicHNpZ19yZWNtb2R1bGUiLCJwc2lnX21vZHR5cGUiLCJwc2lnX21vZHR5cGVzdWJzdCIsInBzaWdfb3BlbiIsInBzaWdfaW5jbHVkZSIsInBzaWdfY2xhc3MiLCJwc2lnX2NsYXNzX3R5cGUiLCJwc2lnX2F0dHJpYnV0ZSIsInBzaWdfZXh0ZW5zaW9uIiwicHN0cl9ldmFsIiwicHN0cl92YWx1ZSIsInBzdHJfcHJpbWl0aXZlIiwicHN0cl90eXBlIiwicHN0cl90eXBleHQiLCJwc3RyX2V4Y2VwdGlvbiIsInBzdHJfbW9kdWxlIiwicHN0cl9yZWNtb2R1bGUiLCJwc3RyX21vZHR5cGUiLCJwc3RyX29wZW4iLCJwc3RyX2NsYXNzIiwicHN0cl9jbGFzc190eXBlIiwicHN0cl9pbmNsdWRlIiwicHN0cl9hdHRyaWJ1dGUiLCJwc3RyX2V4dGVuc2lvbiIsInRvcGxldmVsX2RpcmVjdGl2ZSIsImFyZyIsInR5cGVfZGVjbGFyYXRpb24iLCJjc3RycyIsInByaXZhdGUkMCIsInR5cGVfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IiLCJ0eXBlX2V4dGVuc2lvbiIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJ2YWx1ZV9iaW5kaW5nIiwidmFsdWVfZGVzY3JpcHRpb24iLCJwcmltIiwidHh0IiwibWFrZSIsIm1hcCIsImYiLCJpc19ub3JtYWxfaWRlbnRfY2hhciIsInNob3J0X25hbWUiLCJzdHJpbmciLCJzIiwiYiIsImEiLCJiJDAiLCJhJDAiLCJzZXhwX29mX3QiLCJmbGF0dGVuX2V4biIsImxpZCQwIiwiYWNjdSIsInMkMCIsImxpZCIsImxhc3RfZXhuIiwidW5mbGF0dGVuIiwibCIsImFjYyIsInBhcnNlIiwiaW52YWxpZCIsIm9wZW5fcGFyIiwiY2xvc2VfcGFyIiwiciIsImwkMCIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3QiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJmdW5jdG9yJDAiLCJmdW5jdG9yX3BhdGgiLCJyZXN0IiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGVuIiwicG9zIiwicG9zJDAiLCJsZXZlbnNodGVpbl9kaXN0YW5jZSIsImN1dG9mZiIsIm0iLCJkIiwiaSQwIiwiaiQwIiwibGluZV9taW4iLCJqIiwiaSIsInZhbHVlIiwiZGlzdGFuY2UiLCJzcGVsbGNoZWNrIiwibmFtZXMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJzdWdnZXN0aW9ucyIsInJldl9yZXN0IiwibGFzdCIsImZvbGRfZG90X3N1ZmZpeGVzIiwiY29sbGFwc2VfYWZ0ZXJfYXQiLCJwYXJ0cyIsInBhcnQiLCJwYXJ0cyQxIiwicGFydHMkMCIsImRvdF9zdWZmaXhlcyIsInNwbGl0X3BhdGgiLCJpJDIiLCJpJDQiLCJpJDMiLCJpJDEiLCJtYXRjaGVzIiwibWF0Y2hlZCIsInNwbGl0X291dGVyX25hbWVzcGFjZSIsImJlZm9yZV9kb3QiLCJhZnRlcl9kb3QiLCJjcmVhdGVfc2V0IiwiZnVsbHlfcXVhbGlmaWVkX25hbWVzIiwiYXR0cmlidXRlcyIsImV4dGVuc2lvbnMiLCJpc19hbGxvd2xpc3RlZCIsImdldF9hdHRyaWJ1dGVfbGlzdCIsImdldF9leHRlbnNpb25fbGlzdCIsImNyZWF0ZV9yZXNlcnZlZCIsInRibCIsInJlc2VydmUiLCJucyQwIiwibnMiLCJ0YmwkMCIsInJlc3RfbnMiLCJvdXRlcl9ucyIsInJlc3RfdGJsIiwiaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyIsImlnbm9yZV9jaGVja3MiLCJjcmVhdGUiLCJjdXJyZW50X2ZpbGUiLCJzdHJpbmdfb2ZfY29udGV4dCIsImdldF9hbGxfZm9yX2NvbnRleHQiLCJjb250ZXh0IiwiY2hlY2tfY29sbGlzaW9uc19sb2NhbCIsImNhbGxlciIsImFsbF9mb3JfY29udGV4dCIsImRlY2xhcmVkX2F0IiwiY29udGV4dCQwIiwiY2hlY2tfY29sbGlzaW9ucyIsInJlZ2lzdGVyIiwia2luZCQxIiwibGlzdCIsImtpbmQkMCIsImFsbCIsInQkMCIsIm9wdCIsInN0aCIsImFsbG93bGlzdCIsImtleSIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJvdGhlcl9jb250ZXh0cyIsInBwX3RleHQiLCJjdXJyZW50X2NvbnRleHQiLCJhX29yX2FuIiwieSIsImMiLCJyZXZfb3RoZXJzIiwib3RoZXJzIiwibXNnIiwicmFpc2VfZXJyb3JmJDAiLCJjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiIsInRkIiwiY2hvcCIsIm9yX21vcmUiLCJ0YXJnZXQiLCJjbnQiLCJnZW5fc3ltYm9sIiwicHJlZml4IiwicHJlZml4JDAiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyIsIm5hbWVfcGFyYW0iLCJ2YXJpYW5jZSIsInRwIiwicHR5cF9kZXNjIiwibyIsImVycm9ycyIsInB0eXBlX3BhcmFtcyIsInEiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkIiwiZXJyIiwiY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyIiwidGQkMCIsInJlc3VsdF90eXBlIiwic3RyaW5nX29mX2NvcmVfdHlwZSIsImN0IiwiYnVmIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMiLCJnZXRfdHlwZV9wYXJhbV9uYW1lIiwic2VsZl8xIiwiY3R5cGUiLCJpZCIsInRkcyIsInJlYWxseV9yZWN1cnNpdmUiLCJ4JDAiLCJ4JDEiLCJsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCIsImxvY19vZl9wYXlsb2FkIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwibG9jX29mX2F0dHJpYnV0ZSIsImxvY19vZl9leHRlbnNpb24iLCJjdXJyeV9hcHBsaWNhdGlvbnMiLCJvcmlnX2ZvcndhcmRfYXJncyIsImxvb3AiLCJyZXZfZnJvbnRfYXJncyIsImxhc3RfYXJnIiwiYXR0ciIsImF0dHJpYnV0ZXNfZXJyb3JzIiwic2VsZl8yIiwiY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyIsImFzc2VydF9ub19hdHRyaWJ1dGVzIiwic2VsZl8zIiwiYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4iLCJhdHRyaWJ1dGVfb2Zfd2FybmluZyIsImlzX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJzaWciLCJ0eXAkMCIsInR5cCIsIm1rX25hbWVkX3NpZyIsInNnX25hbWUiLCJoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCIsImFyaXR5IiwibXR5IiwiZm9yX3N1YnN0IiwiZXhuX3RvX2xvY19lcnJvciIsImV4biIsImVycm9yIiwicmV0dXJuJDAiLCJzeW1ib2xfYmluZCIsImVycm9yczEiLCJlcnJvcnMyIiwic3ltYm9sX21hcCIsIm9mX3Jlc3VsdCIsInJlc3VsdCIsImRlZmF1bHQkMCIsImNvbWJpbmVfZXJyb3JzIiwibm9sYWJlbCIsImsiLCJsYWJlbGxlZCIsImYwIiwiayQwIiwib3B0aW9uYWwiLCJrJDEiLCJrJDIiLCJwY2xfbG9jIiwiZjIiLCJmMSIsInBjbF9hdHRyaWJ1dGVzIiwiZjMiLCJrJDMiLCJwY2ZfbG9jIiwicGNmX2F0dHJpYnV0ZXMiLCJjZmtfdmlydHVhbCIsImNma19jb25jcmV0ZSIsImNsYXNzX2luZm9zX2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9hdHRyaWJ1dGVzIiwiY2xvc2VkIiwib3BlbiIsInBjb25zdF9pbnRlZ2VyIiwicGNvbnN0X2NoYXIiLCJwY29uc3Rfc3RyaW5nIiwicGNvbnN0X2Zsb2F0IiwicGNzdHJfdHVwbGUiLCJwY3N0cl9yZWNvcmQiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWIiLCJwdHlwX2xvYyIsInB0eXBfYXR0cmlidXRlcyIsInVwdG8iLCJkb3dudG8iLCJwZGlyYV9sb2MiLCJwZXhwX2xvYyIsInBleHBfYXR0cmlidXRlcyIsImY0IiwiayQ0IiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0IiwicGV4dF9kZWNsIiwicGV4dF9yZWJpbmQiLCJ1bml0IiwibmFtZWQiLCJpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMiLCJpbmplY3RpdmUiLCJub2luamVjdGl2aXR5IiwibGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImxkb3QiLCJsYXBwbHkiLCJtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIiwibW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfYXR0cmlidXRlcyIsIm1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9hdHRyaWJ1dGVzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmliIiwiaW1tdXRhYmxlIiwicG9mX2xvYyIsInBvZl9hdHRyaWJ1dGVzIiwib3Blbl9pbmZvc19hdHRyaWJ1dGVzIiwiZnJlc2giLCJwcGF0X2xvYyIsInBwYXRfYXR0cmlidXRlcyIsInBzdHIiLCJwc2lnIiwicHR5cCIsInBwYXQiLCJwdWJsaWMkMCIsIm5vbnJlY3Vyc2l2ZSIsInJlY3Vyc2l2ZSIsInByZl9sb2MiLCJwcmZfYXR0cmlidXRlcyIsInBzaWdfbG9jIiwicHN0cl9sb2MiLCJwdG9wX2RlZiIsInB0b3BfZGlyIiwidHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwiayQ1IiwidHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyIsInR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMiLCJwdHlwZV9hYnN0cmFjdCIsInB0eXBlX3ZhcmlhbnQiLCJwdHlwZV9yZWNvcmQiLCJwdHlwZV9vcGVuIiwidmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIiwidmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyIsImNvdmFyaWFudCIsImNvbnRyYXZhcmlhbnQiLCJub3ZhcmlhbmNlIiwidmlydHVhbCIsImNvbmNyZXRlIiwicHdpdGhfdHlwZSIsInB3aXRoX21vZHVsZSIsInB3aXRoX21vZHR5cGUiLCJwd2l0aF9tb2R0eXBlc3Vic3QiLCJwd2l0aF90eXBlc3Vic3QiLCJwd2l0aF9tb2RzdWJzdCIsInJlc3RvcmVfY29udGV4dCIsImJhY2t1cCIsImluY3JfbWF0Y2hlZCIsInBhcnNlX3JlcyIsIm9uX2Vycm9yIiwiZiQwIiwiciQwIiwicGFyc2VfcmVzJDAiLCJwYXJzZSQwIiwic3ltYm9sIiwic3ltYm9sJDAiLCJkcm9wIiwiYXMiLCJjc3QiLCJ0b19zdHJpbmciLCJlcXVhbCIsImludCQwIiwiY2hhciQwIiwiZmxvYXQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJib29sIiwiYm9vbCQwIiwiZnVuYyIsImZhbHNlJDAiLCJ0cnVlJDAiLCJuaWwiLCJzeW1ib2wkMSIsInNvbWUiLCJwYWlyIiwidHJpcGxlIiwiYWx0IiwiZTEkMCIsImUxIiwibTEiLCJlMiQwIiwiZTIiLCJtMiIsIm1hcCQwIiwibWFwX3Jlc3VsdCIsIm1hcDAiLCJtYXAxIiwibWFwMiIsIm1hcDAkMCIsIm1hcDEkMCIsIm1hcDIkMCIsIm1hcF92YWx1ZSIsIm1hcF92YWx1ZSQwIiwiYWx0X29wdGlvbiIsIm1hbnkiLCJhdXgiLCJ4cyIsInBhY2swIiwicGFjazIiLCJwYWNrMyIsInoiLCJjb25zdF9pbnQiLCJjb25zdF9pbnQzMiIsImNvbnN0X2ludDY0IiwiY29uc3RfbmF0aXZlaW50Iiwic2luZ2xlX2V4cHJfcGF5bG9hZCIsIm5vX2xhYmVsIiwiZXh0ZW5zaW9uIiwibmV4dCIsImV4cHIkMSIsIm9mX2Z1bmMiLCJ0b19mdW5jIiwicG9seV9lcXVhbCIsInBhdHRlcm4iLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjbGFzc19leHByIiwiY2xhc3NfZmllbGQiLCJtb2R1bGVfdHlwZSIsIm9wZW5fZGVzY3JpcHRpb24iLCJtb2R1bGVfZXhwciIsIm9iamVjdF90eXBlX2ZpZWxkIiwiZ2V0X3BzdHJfZXZhbCIsInN0IiwiZ2V0X3BzdHJfZXh0ZW5zaW9uIiwiZ2V0X3BzaWdfZXh0ZW5zaW9uIiwiZ2V0X2F0dHJpYnV0ZXMiLCJzZXRfYXR0cmlidXRlcyIsImF0dHJzIiwic3RydWN0dXJlX2l0ZW0iLCJzaWduYXR1cmVfaXRlbSIsImNsYXNzX2ZpZWxkJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJkZWNsYXJlIiwiZGVjbGFyZV93aXRoX25hbWVfbG9jIiwibmFtZV9sb2MiLCJkZWNsYXJlX3dpdGhfYXR0cl9sb2MiLCJhdHRyX2xvYyIsImRlY2xhcmVfZmxhZyIsInBheWxvYWRfcGF0dGVybiIsImNvbnRpbnVhdGlvbiIsIm5vcm1hbGl6ZSIsImhhc2giLCJub3Rfc2VlbiIsIm1hcmtfYXNfc2VlbiIsImV4cGxpY2l0bHlfZHJvcCIsImdldF9pbnRlcm5hbCIsImF0dHJpYnV0ZXMkMSIsImxvbmdlc3RfbWF0Y2giLCJhdHRyaWJ1dGVzJDAiLCJsZW4kMCIsImxvbmdlc3RfbWF0Y2gkMCIsImxvbmdlc3RfbWF0Y2gkMSIsImNvbnZlcnQiLCJkb19tYXJrX2FzX3NlZW4iLCJwYXR0ZXJuJDAiLCJnZXRfcmVzIiwiaGFzX2ZsYWdfcmVzIiwiaGFzX2ZsYWciLCJjb25zdW1lX3JlcyIsImF0dHIkMCIsImF0dHJzJDAiLCJjb25zdW1lIiwicmVtb3ZlX3NlZW5fcmVzIiwicGFja2VkcyIsInJlbW92ZV9zZWVuIiwicGF0dGVybl9yZXMiLCJkZWNsYXJlJDAiLCJjb252ZXJ0X3JlcyIsInRzIiwiY29udmVydCQwIiwiY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIiwiaXRlbSIsIml0ZW0kMCIsImVycm9yczIkMCIsIml0ZW0kMiIsIml0ZW0kMSIsImNsb3NlZF9mbGFnIiwiZXJyb3JzJDAiLCJmaWVsZHMkMCIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvIiwicmFpc2VfaWZfbm9uX2VtcHR5IiwiY2hlY2tfdW51c2VkIiwicmVzZXRfY2hlY2tzIiwic2VsZl80IiwiY29sbGVjdCIsImNvbGxlY3RfdW5zZWVuX2Vycm9ycyIsImNoZWNrX2FsbF9zZWVuIiwicmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiIsInRhYmxlIiwic2VsZl81IiwiY29weV9vZl9ub3Rfc2VlbiIsImNvcHkiLCJkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUiLCJkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUiLCJzZyIsInRvcF9sZXZlbCIsImZpbGVfcGF0aCIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtdGQiLCJtZCIsIm1iIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ2YiIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInZhcl9uYW1lIiwiaW5fYmluZGluZ19jdHh0IiwicGF0X2Vycm9ycyIsInB2Yl9wYXQkMCIsImV4cHJfZXJyb3JzIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJsb2NfZXJyb3JzIiwicHZiX2xvYyQwIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwid2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIndpdGhfbW9kdWxlX2RlY2xhcmF0aW9uIiwid2l0aF9tb2R1bGVfYmluZGluZyIsIm1lIiwid2l0aF9tb2R1bGVfZXhwciIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9kZXNjIiwid2l0aF92YWx1ZSIsImN0eHQkMCIsIm5hbWVfZXJyb3JzIiwid2l0aF9sZXRfbW9kdWxlIiwibW9kdWxlX2V4cHJfZXJyb3JzIiwibW9kdWxlX2V4cHIkMCIsImJvZHlfZXJyb3JzIiwiZGVzY19lcnJvcnMkMCIsInBleHBfZGVzYyQxIiwiZGVzY19lcnJvcnMiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJsb2Nfc3RhY2tfZXJyb3JzIiwicGV4cF9sb2Nfc3RhY2skMCIsInBleHBfYXR0cmlidXRlcyQwIiwidGFnIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFzdCIsImV4biQwIiwiSW5wdXRfdmVyc2lvbiIsImFzdCQwIiwiSW5wdXRfdmVyc2lvbiQwIiwiYXN0JDEiLCJhc3QkMiIsInJlYWQiLCJpbnB1dF9zb3VyY2UiLCJ3cml0ZSIsIm9jIiwiYWRkX3BweF9jb250ZXh0Iiwic2ckMCIsInN0JDAiLCJyZWFkX2JpbmFyeSIsInNpZ25hdHVyZSIsInN0cnVjdHVyZSIsImdldF9hc3QiLCJnZXRfaW5wdXRfbmFtZSIsInJ1bl9wcmVwcm9jZXNzb3IiLCJwcCIsImlucHV0Iiwib3V0cHV0IiwiY29tbWFuZCIsImVuZF9tYXJrZXJfc2lnIiwiZW5kX21hcmtlcl9zdHIiLCJleHRyYWN0X3ByZWZpeCIsInJlbW92ZV9sb2MiLCJyZW1vdmVfbG9jJDAiLCJwcmV2JDAiLCJwcmV2JDEiLCJkaWZmX2FzdHMiLCJnZW5lcmF0ZWQiLCJyb3VuZF90cmlwIiwid2l0aF90ZW1wX2ZpbGUiLCJmbjEiLCJmbjIiLCJvdXQiLCJkdW1wIiwiY21kIiwib2siLCJjbWQkMCIsInBhcnNlX3N0cmluZyIsIm1hdGNoX2xvb3AiLCJlbmRfcG9zIiwibWlzbWF0Y2hfaGFuZGxlciIsInNvdXJjZSIsImV4cGVjdGVkJDAiLCJzb3VyY2UkMCIsImxvYyQxIiwic291cmNlJDEiLCJleHBlY3RlZCQxIiwieSQwIiwiZG9fbWF0Y2giLCJnZXRfbG9jIiwiYXBwbHkiLCJ0b19zZXhwIiwiZ2V0X2xvYyQwIiwicHAkMCIsInRvX3NleHAkMCIsIm1hdGNoX3N0cnVjdHVyZV9yZXMiLCJtYXRjaF9zdHJ1Y3R1cmUiLCJtYXRjaF9zaWduYXR1cmVfcmVzIiwibWF0Y2hfc2lnbmF0dXJlIiwiZGVzYyIsImVxIiwiZ2V0X2V4dGVuc2lvbiIsInR5cGVfZGVjbCIsImUkMSIsImUkMiIsImEkMyIsImUkMyIsImEkNCIsImUkNCIsImEkNSIsImUkNSIsImEkNiIsImUkNiIsImEkNyIsImUkNyIsImEkOCIsImUkOCIsImEkOSIsImUkOSIsInZpcnR1YWxfcGF5bG9hZCIsIm1lcmdlX2F0dHJpYnV0ZXNfcmVzIiwicSQwIiwidCQxIiwicSQxIiwidCQyIiwibWVyZ2VfYXR0cmlidXRlcyIsIndpdGhfYXJnIiwiZmluZCIsImV4dCIsInNoaWZ0IiwiYXJnJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmciLCJwYXR0IiwiY29udmVydF9yZXMkMCIsImZvdW5kIiwiY29udmVydF9pbmxpbmVfcmVzIiwiY29udmVydF9pbmxpbmUiLCJjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUiLCJmaWx0ZXJfYnlfY29udGV4dCIsImV4cGFuZGVycyIsImV4cGFuZGVycyQwIiwiZXhwYW5kZXJzJDEiLCJ1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIiwiY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2VyIiwiZXJyb3JfbGlzdF90b19leGNlcHRpb24iLCJkZWNsYXJlX2lubGluZSIsImRlY2xhcmVfd2l0aF9wYXRoX2FyZyQwIiwiZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyIsImRlY2xhcmUkMSIsImRlY2xhcmVfaW5saW5lJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMSIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfcHB4X2ltcG9ydCIsImV4cGFuZCIsInNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IiwiYXR0cl9uYW1lJDAiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCQwIiwiZmlsdGVyIiwiZmllbGQiLCJmaWVsZCQwIiwic3BlY2lhbF9mdW5jdGlvbiIsImNvbnN0YW50Iiwic3VmZml4IiwiYXR0cl9zdHJfdHlwZV9kZWNsIiwiYXR0cl9zaWdfdHlwZV9kZWNsIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCIsImF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3N0cl90eXBlX2V4dCIsImF0dHJfc2lnX3R5cGVfZXh0IiwiYXR0cl9zdHJfZXhjZXB0aW9uIiwiYXR0cl9zaWdfZXhjZXB0aW9uIiwiYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCIsIm5vcCIsInJlcGxhY2UiLCJpbnNlcnRfYWZ0ZXIiLCJtYXBfbm9kZV9yZWMiLCJzdXBlcl9jYWxsIiwiYmFzZV9jdHh0IiwiZW1iZWRfZXJyb3JzIiwiY29udmVydGVkIiwibWFwX25vZGVzIiwiaG9vayIsImluX2dlbmVyYXRlZF9jb2RlIiwiZ2VuZXJhdGVkX2NvZGUiLCJjb2RlIiwiZ2V0X2dyb3VwIiwiYXR0cjIiLCJ2YWxzJDAiLCJ2YWxzIiwicmV2X2NvbmNhdCIsInNvcnRfYXR0cl9ncm91cF9pbmxpbmUiLCJzb3J0X2F0dHJfaW5saW5lIiwiY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljIiwibm9wJDAiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImZ1bmMkMCIsImxhYiIsIm9wdGlvbiIsIndpdGhfY29udGV4dCIsImV4cGFuZGVkIiwiZXhwYW5kX2NvbnN0YW50IiwidGV4dCIsImMkMCIsImV4biQxIiwiaWQkMCIsImdlbmVyYXRlZF9jb2RlJDAiLCJleG4kMiIsInN0aCQwIiwicnVsZXMiLCJzcGVjaWFsX2Z1bmN0aW9ucyIsInNwZWNpYWxfZnVuY3Rpb25zJDAiLCJjb25zdGFudHMiLCJwcHhfaW1wb3J0IiwiYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2RlY2xzIiwiYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xzIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHAiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyIsImF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2V4dHMiLCJhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRzIiwiYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25zIiwiYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3NpZ19leGNlcHRpb25zIiwibWFwX25vZGUiLCJtYXBfbm9kZXMkMCIsImhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSIsImV4cGFuZGVkX2l0ZW1zIiwiZzEiLCJnMiIsInZhbHVlcyIsImdlbmVyYXRlZF9jb2RlX2JlZ2luIiwiZ2VuZXJhdGVkX2NvZGVfZW5kIiwicGFyZW4iLCJzdG9wIiwibWFrZV90ZXh0IiwiYmxvY2siLCJwcmludGVyIiwiaWR4IiwiY291bnRfbmV3bGluZXMiLCJza2lwX2JsYW5rX2VvbCIsImNvbnRlbnRzIiwiY251bSQxIiwiY251bSQwIiwicmVjb25jaWxlIiwic3R5bGVyIiwicmVwbHMkMyIsImlucHV0X2ZpbGVuYW1lIiwicmVwbHMiLCJyZXBscyQyIiwicmVwbCQwIiwicHJldiIsInJlcGxzJDAiLCJyZXBscyQxIiwicmVwbHMkNCIsIm91dHB1dF9uYW1lIiwiY29weV9pbnB1dCIsInVwX3RvIiwibGluZSIsImxhc3RfaXNfdGV4dCIsImlzX3RleHQiLCJsaW5lJDAiLCJsaW5lJDEiLCJsb29wJDAiLCJsaW5lJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzJDAiLCJsYXN0X2lzX3RleHQkMCIsImVuZF9jb25zZWN1dGl2ZV9yZXBscyIsInBvcyQxIiwibGFzdF9pc190ZXh0JDEiLCJwb3MkMiIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJvZCIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImNlIiwibGFiZWxzIiwiZXhwcl9vIiwiY3RlIiwib3BuIiwiZV9sb2MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImN0cCIsInNpYmxpbmdzIiwiZXhlX25hbWUiLCJhZGRfYXJnIiwic3BlYyIsImRvYyIsImxvY19mbmFtZSIsInBlcmZvcm1fY2hlY2tzIiwicGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyIsInBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIiwiZGVidWdfYXR0cmlidXRlX2Ryb3AiLCJhcHBseV9saXN0IiwicHJlcHJvY2Vzc29yIiwibm9fbWVyZ2UiLCJyZXF1ZXN0X3ByaW50X3Bhc3NlcyIsInJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIiwidXNlX2NvbG9yIiwiZGlmZl9jb21tYW5kIiwicHJldHR5Iiwib3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIiwiY29ycmVjdGVkX3N1ZmZpeCIsImdldF9kZWZhdWx0X3BhdGgiLCJmbmFtZSQwIiwiZ2V0X2RlZmF1bHRfcGF0aF9zdHIiLCJnZXRfZGVmYXVsdF9wYXRoX3NpZyIsIm9mX3N0cmluZyIsImdpdmVuX3Rocm91Z2hfY2xpIiwic2V0IiwiaGFuZGxlcnMiLCJhZGRfaGFuZGxlciIsImFkZF9zaW1wbGVfaGFuZGxlciIsImFja25vd2xlZGdlX2Nvb2tpZXMiLCJwb3N0X2hhbmRsZXJzIiwiYWRkX3Bvc3RfaGFuZGxlciIsImNhbGxfcG9zdF9oYW5kbGVycyIsInRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtYXRpb24kMCIsImhhc19uYW1lIiwicHJpbnRfY2FsbGVyX2lkIiwiY2FsbGVyX2lkIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24iLCJlbmNsb3NlX2ltcGwiLCJlbmNsb3NlX2ludGYiLCJpbXBsIiwiaW50ZiIsImxpbnRfaW1wbCIsImxpbnRfaW50ZiIsInByZXByb2Nlc3NfaW1wbCIsInByZXByb2Nlc3NfaW50ZiIsImluc3RydW1lbnQiLCJzdGgkMSIsImFsaWFzZXMiLCJydWxlcyQwIiwiaW1wbCQwIiwiaW50ZiQwIiwicHJlcHJvY2Vzc19pbXBsJDAiLCJwcmVwcm9jZXNzX2ludGYkMCIsImN0JDAiLCJsb2Nfb2ZfbGlzdCIsImwkMiIsImZpcnN0IiwibWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMiLCJleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciIsImdlbl9oZWFkZXJfYW5kX2Zvb3RlciIsIndob2xlX2xvYyIsImZvb3RlciIsImhlYWRlciIsImxvY19oZWFkZXIiLCJsb2NfZm9vdGVyIiwibWFwX2ltcGwiLCJzdF93aXRoX2F0dHJzIiwibWFwX2ludGYiLCJzZ193aXRoX2F0dHJzIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfIiwiYWRkX2N0eHRfYXJnIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24kMCIsImxpbnRfaW1wbCQwIiwibGludF9pbnRmJDAiLCJlbmNsb3NlX2ltcGwkMCIsImVuY2xvc2VfaW50ZiQwIiwicmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyQwIiwiZ2V0X3dob2xlX2FzdF9wYXNzZXMiLCJjdHMiLCJhZnRfaSIsImJlZl9pIiwicmVkdWNlZF90IiwiaW5zdHIiLCJ0cmFuc2YiLCJ0cmFuc2YkMCIsInRyYW5zZm9ybXMiLCJhZnRlcl9pbnN0cnMiLCJiZWZvcmVfaW5zdHJzIiwicHJlcHJvY2VzcyIsImxpbnRlcnMiLCJnZXRfZW5jbG9zZXJzIiwiaW1wbF9lbmNsb3NlcnMiLCJpbnRmX2VuY2xvc2VycyIsIm1lcmdlX2VuY2xvc2VyIiwiZW5jbG9zZXJzIiwiZm9vdGVycyIsImhlYWRlcnMiLCJoZWFkZXJzJDAiLCJmb290ZXJzJDAiLCJhcHBseV90cmFuc2Zvcm1zIiwibGludF9maWVsZCIsImRyb3BwZWRfc29fZmFyIiwibGludF9lcnJvcnMiLCJvbGRfZHJvcHBlZCIsImxpbnRfZXJyb3JzJDAiLCJlcnJvcnMkMSIsIm1vcmVfZXJyb3JzIiwibmV3X2Ryb3BwZWQiLCJwcmludF9kaWZmIiwid2hhdCIsImRpZmYiLCJkcm9wcGVkIiwiZXJyb3JfdG9fZXh0ZW5zaW9uIiwiZXh0JDAiLCJleG5fdG9fZXh0ZW5zaW9uIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJmcCIsIm1zIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwicGFyYW0iLCJhcHBseV9hbGwiLCJlbnRyeSIsImdlbmVyYXRvcnMiLCJleHRfdG9faXRlbSIsImVtcHR5X2xhYmVsX2Vycm9yIiwiZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIiwiYWNjZXB0ZWRfYXJncyIsInNwZWxsY2hlY2tfbXNnIiwidW5hY2NlcHRlZF9hcmd1bWVudCIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImFjdHVhbF9kZXJpdmVyX25hbWUiLCJkdXBfZXJyb3IiLCJkZXAiLCJkZXBfbmFtZSIsImxfZXJyIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJ4IiwiZGVmYXVsdCQwIiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJpIiwidmFycyIsInZhciQwIiwiYmluZGluZ3MiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ0eHQiLCJ2YXJzJDAiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsInRwIiwiYm9keSQwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJvcHQiLCJzdGgiLCJpbnRlcm5hbCIsIm4iLCJhcmciLCJhcmdzJDAiLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJpbml0IiwiZmllbGRfcmVmcyIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwYXJhbSIsInByZSIsInNjcmlwdCIsInNlbGVjdCQwIiwic3R5bGUiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ1bCIsImF1ZGlvIiwidmlkZW8iLCJ1bnNhZmVDb2VyY2VFdmVudCIsIm1vdXNlRXZlbnQiLCJrZXlib2FyZEV2ZW50Iiwid2hlZWxFdmVudCIsIm1vdXNlU2Nyb2xsRXZlbnQiLCJwb3BTdGF0ZUV2ZW50IiwibWVzc2FnZUV2ZW50IiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwidG9fYXJyYXlmIiwiZiIsImEiLCJvZl9hcnJheWYiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ0b19saXN0ZiIsIm9mX2xpc3RmIiwib3B0ZGVmIiwieCIsInRvX29wdGRlZiIsIngkMCIsInVub3B0ZGVmX2YiLCJkZWYiLCJ1bm9wdGRlZiIsImNvbnZkZWYiLCJ0b19vcHQiLCJvcHQiLCJjb252b3B0IiwianNfbG9nIiwibyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsInN0aCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwib2JqZWN0X2NzIiwiYXNzaWduIiwibzEiLCJvMiIsImFzc2lnbl9saXN0IiwicmVtb3ZlX3VuZGVmaW5lZCIsImtleXMiLCJrIiwib2JqIiwiY3JlYXRlIiwiYWRkIiwidiIsImFkZF9saXN0IiwiYWRkX2xpc3RmIiwibWFrZSIsIm1ha2VmIiwicmVtb3ZlIiwiZmluZCIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwiY3MiLCJqdGhlbjAiLCJlcnJvciIsInByb20iLCJwIiwiZXhuJDAiLCJlZiIsImVycm9yJDAiLCJqdGhlbiIsImp0aGVuMF9vcHQiLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibzMiLCJsb2dfc3RyMiIsInMxIiwiczIiLCJsb2dfc3RyMyIsInMzIiwiZGVidWciLCJkZWJ1ZzIiLCJkZWJ1ZzMiLCJkZWJ1Z19zdHIiLCJkZWJ1Z19zdHIyIiwiZGVidWdfc3RyMyIsIndhcm4iLCJ3YXJuMiIsIndhcm4zIiwid2Fybl9zdHIiLCJ3YXJuX3N0cjIiLCJ3YXJuX3N0cjMiLCJlcnJvcjIiLCJlcnJvcjMiLCJlcnJvcl9zdHIiLCJlcnJvcl9zdHIyIiwiZXJyb3Jfc3RyMyIsImJpZ0ludCIsIm9mX3N0cmluZyIsIm9mX2ludCIsImkiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZSIsIm9mX2Zsb2F0IiwidG9fbG9jYWxlX3N0cmluZyIsIm9wdGlvbnMiLCJuIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsInN0aCQwIiwic3RoJDEiLCJsaXN0ZW4iLCJzdGgkMiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwidHIiLCJjcmVhdGUiLCJzdG9yZSIsImFkZCIsImtleSIsInN0IiwieCIsInB1dCIsInJhbmdlIiwib2xvd2VyIiwib3VwcGVyIiwibG93ZXIiLCJ1cHBlciIsInVwcGVyJDEiLCJsb3dlciQwIiwidXBwZXIkMCIsImNvdW50IiwiayIsImdldCIsIm9mX2pzIiwianMiLCJqcyQwIiwiZ2V0X2FsbCIsImdldF9rZXkiLCJnZXRfYWxsX2tleXMiLCJkZWxldGUkMCIsIml0ZXIiLCJkaXJlY3Rpb24iLCJjIiwidDgwIiwiZm9sZCIsInN0YXJ0IiwiYWNjIiwiY2FsbGJhY2skMCIsInQ5NSIsIml0ZXJfa2V5cyIsInQxMTAiLCJmb2xkX2tleXMiLCJ0MTI0IiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4Iiwib3B0aW9ucyQwIiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJsZW5ndGgiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMDI2IiwiZXJyb3Jfc291cmNlXzA0MiIsImVycm9yX3NvdXJjZV8yMDYiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJ0X29mX3NleHAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXZhbF9mYWlsIiwibG9jIiwiZm10IiwicyIsImN1c3RvbV9wcmludGZfMDAxIiwiZXF1YWxfb3B0aW9uIiwiZXF1YWwiLCJhIiwiYiIsInkiLCJ4IiwiY3JlYXRlIiwiZXEiLCJ4cyQxIiwiczIiLCJzMSIsInNvcnRlZCIsInhzJDAiLCJsYXN0X3ZhbHVlJDEiLCJsYXN0X2tleSQxIiwiYWNjIiwibGFzdF9rZXkiLCJsYXN0X3ZhbHVlIiwieHMiLCJsYXN0X3ZhbHVlJDAiLCJsYXN0X2tleSQwIiwic29ydGVkJDAiLCJtYXAiLCJ0IiwiZiIsInYiLCJrIiwidG9fbWQ1Iiwib2ZfbWQ1Iiwic2V4cF9vZl90JDEiLCJ0X29mX3NleHAkMCIsInV1aWQiLCJ1IiwiaW50JDAiLCJwYWlyIiwibGlzdCIsImwiLCJjb25zdHJ1Y3RvciIsInRfb2Zfc2V4cCQxIiwib2ZfYV8wMzkiLCJzZXhwXzA0NCIsInRhZ18wNDUiLCJzZXhwX2FyZ3NfMDQ2IiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDkzIiwicmVzMV8wOTQiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMV8wNTUiLCJhcmcwXzA1NCIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDg1IiwiYXJnMF8wODYiLCJvZl9hXzAxMCIsInJlczBfMDg3IiwiZmllbGRfc2V4cHNfMDEzIiwic29ydGVkXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3Iiwic2V4cF8wMTIiLCJmaWVsZF9zZXhwc18wMjAiLCJmaWVsZF9uYW1lXzAxOCIsInRhaWxfMDI5IiwieF8wMzAiLCJmaWVsZF9zZXhwXzAxOSIsInNleHBfMDI1IiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJmdmFsdWVfMDI3Iiwic29ydGVkXzAxNSIsInNleHBfYXJnc18wOTciLCJhcmcxXzA5OSIsImFyZzBfMDk4IiwicmVzMF8xMDAiLCJyZXMxXzEwMSIsInNleHBfYXJnc18wNjUiLCJhcmcwXzA3MSIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMwXzA3MiIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wODEiLCJzZXhwXzA4MCIsImFyZzFfMDc3IiwiYXJnMF8wNzYiLCJyZXMwXzA3OCIsInJlczFfMDc5IiwicmVzMF8wODIiLCJzZXhwX29mX3QkMiIsIm9mX2FfMTA4IiwiYXJnMV8xMTAiLCJhcmcwXzEwOSIsInJlczBfMTExIiwicmVzMV8xMTIiLCJhcmcxXzExNCIsImFyZzBfMTEzIiwicmVzMF8xMTUiLCJyZXMxXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzEyMyIsImFyZzFfMTIwIiwiYXJnMF8xMTkiLCJyZXMwXzEyMSIsInJlczFfMTIyIiwicmVzMF8xMjQiLCJhcmcwXzEyOSIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4IiwicmVzMF8xMzAiLCJhcmcwXzEzMSIsIm9mX2FfMDMxIiwic29ydGVkXzAzMyIsImJuZHNfMDMyIiwiYXJnMV8wMzYiLCJhcmcwXzAzNSIsInJlczBfMDM3IiwicmVzMV8wMzgiLCJhcmdfMDM0IiwiYm5kc18wMzIkMCIsInJlczBfMTMyIiwiYXJnMV8xMzQiLCJhcmcwXzEzMyIsInJlczBfMTM1IiwicmVzMV8xMzYiLCJhcmcxXzEzOCIsImFyZzBfMTM3IiwicmVzMF8xMzkiLCJyZXMxXzE0MCIsImFyZzBfMTQxIiwicmVzMF8xNDIiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJuIiwibiQwIiwidG9fZGlnZXN0IiwidG9fZGlnZXN0JDAiLCJ4JDIiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTk4IiwiYl8xOTkiLCJiXzIwMSIsImFfMjAwIiwiY21wX2EiLCJhXzIwMiIsImJfMjAzIiwiYV8xNDYiLCJiXzE0OSIsImJfMTQ3IiwiYV8xNDgiLCJhXzE1MiIsImFfMTUwIiwiYl8xNTMiLCJiXzE1MSIsImFfMTU0IiwiYl8xNTUiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsImFfMTYwIiwiYl8xNjEiLCJhXzE2MiIsImJfMTYzIiwidF8xNjUiLCJ0XzE2NCIsInRfMTY3IiwidF8xNjYiLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsInRfMTczIiwidF8xNzIiLCJ0XzE3NSIsInRfMTc0IiwiYV8xNzYiLCJiXzE3NyIsImFfMDAyIiwiYl8xNzkiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJhXzE4MiIsImJfMTgzIiwiYV8xODYiLCJhXzE4NCIsImJfMTg3IiwiYl8xODUiLCJuJDEiLCJhXzE4OCIsImJfMTg5IiwiYV8xOTIiLCJhXzE5MCIsImJfMTkzIiwiYl8xOTEiLCJuJDIiLCJhXzE5NCIsImJfMTk1IiwiYV8xOTYiLCJiXzE5NyIsInQwX29mX3NleHAiLCJzZXhwXzIwOCIsInRhZ18yMDkiLCJzZXhwX2FyZ3NfMjEwIiwiYXJnMF8yMTEiLCJyZXMwXzIxMiIsInNleHBfb2ZfdDAiLCJhcmcwXzIxMyIsInJlczBfMjE0IiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwic2V4cF9vZl90JDMiLCJvZl9zdHJpbmckMSIsInRvX3N0cmluZyQyIiwic3ltYm9sIiwiY29tcGFyZSQxIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQ0Iiwib2Zfc3RyaW5nJDIiLCJ0b19zdHJpbmckMyIsImNvbXBhcmF0b3IiLCJjb21wYXJlJDIiLCJzZXhwX29mX3QkNSIsImNyZWF0ZSQzIiwidHJpcHMiLCJnaWQiLCJ2cyIsIm1lbWJlcnMiLCJsb29rdXAiLCJnIiwic2NoZW1lIiwiY3VzdG9tX3ByaW50Zl8yODUiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwic2V4cF9vZl90JDYiLCJhcmcxXzI4NyIsImFyZzBfMjg2IiwicmVzMF8yODgiLCJyZXMxXzI4OSIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MiIsInJlczFfMjkzIiwiYXJnMF8yOTgiLCJhcmcxXzI5NSIsImFyZzBfMjk0IiwicmVzMF8yOTYiLCJyZXMxXzI5NyIsInJlczBfMjk5IiwiYXJnMF8zMDQiLCJhcmcxXzMwMSIsImFyZzBfMzAwIiwicmVzMF8zMDIiLCJyZXMxXzMwMyIsInJlczBfMzA1IiwiYXJnMF8zMDYiLCJyZXMwXzMwNyIsImFyZzBfMzEyIiwiYXJnMV8zMDkiLCJhcmcwXzMwOCIsInJlczBfMzEwIiwidl8yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInZfMjUwIiwiYXJnMV8yNTIiLCJhcmcwXzI1MSIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMxXzMxMSIsInJlczBfMzEzIiwiYXJnMF8zMTgiLCJhcmcxXzMxNSIsImFyZzBfMzE0IiwicmVzMF8zMTYiLCJyZXMxXzMxNyIsInJlczBfMzE5IiwiYXJnMV8zMjEiLCJhcmcwXzMyMCIsInJlczBfMzIyIiwicmVzMV8zMjMiLCJhcmcyXzMyNiIsImFyZzFfMzI1IiwiYXJnMF8zMjQiLCJtZW1iZXJzXzI3NSIsImxvY18yNzMiLCJnaWRfMjcxIiwiYm5kc18yNzAiLCJhcmcxXzI4MiIsImFyZzBfMjgxIiwicmVzMF8yODMiLCJhcmcxXzI3OCIsImFyZzBfMjc3IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczFfMjg0IiwiYXJnXzI3NiIsImJuZHNfMjcwJDAiLCJhcmdfMjc0IiwiYm5kc18yNzAkMSIsImFyZ18yNzIiLCJibmRzXzI3MCQyIiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5IiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImxvb2t1cCQwIiwiYV8zMzAiLCJiXzMzMSIsInRfMzMzIiwidF8zMzIiLCJ0XzMzNSIsInRfMzM0IiwiYXJnMV8zMzciLCJhcmcwXzMzNiIsInJlczBfMzM4IiwicmVzMV8zMzkiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl8zNDAiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfYXJyYXlfbG9vcCIsImFyIiwiZWxzX3Bvc19yZWYiLCJpIiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlX2hhc2h0YmwiLCJiaW5fd3JpdGVfa2V5IiwiYmluX3dyaXRlX3ZhbCIsInBsZW4iLCJjbnRfcmVmIiwiY29sbF9odGJsIiwicmVzX3BvcyIsImJpbl93cml0ZV9mbG9hdDMyX3ZlYyIsImJpbl93cml0ZV9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZV9mbG9hdDMyX21hdCIsIm0iLCJsZW4xIiwibGVuMiIsInBvcyQxIiwiYmluX3dyaXRlX2Zsb2F0NjRfbWF0IiwiYmluX3dyaXRlX2JpZ3N0cmluZyIsInMiLCJiaW5fd3JpdGVfdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVfaW50XzhiaXQiLCJiaW5fd3JpdGVfaW50XzE2Yml0IiwiYmluX3dyaXRlX2ludF8zMmJpdCIsImJpbl93cml0ZV9pbnRfNjRiaXQiLCJiaW5fd3JpdGVfaW50NjRfYml0cyIsImJpbl93cml0ZV9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IiwiYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImVsJDEiLCJtYXliZV9mbG9hdCIsImVsJDAiLCJmaXJzdCIsInJlcyIsImJpbl9yZWFkX2hhc2h0YmwiLCJiaW5fcmVhZF9rZXkiLCJiaW5fcmVhZF92YWwiLCJyZWFkX2t2X3BhaXIiLCJlbHMiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyIsInZlYyIsImJpbl9yZWFkX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQiLCJtYXQiLCJiaW5fcmVhZF9mbG9hdDY0X21hdCIsImJpbl9yZWFkX2JpZ3N0cmluZyIsImJpbl9yZWFkX3ZhcmlhbnRfaW50IiwiYmluX3JlYWRfaW50XzhiaXQiLCJiaW5fcmVhZF9pbnRfMTZiaXQiLCJiaW5fcmVhZF9pbnRfMzJiaXQiLCJiaW5fcmVhZF9pbnRfNjRiaXQiLCJiaW5fcmVhZF9pbnQ2NF9iaXRzIiwiYmluX3JlYWRfbmV0d29yazE2X2ludCIsImJpbl9yZWFkX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIiLCJiaW5fcmVhZF9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRfbmV0d29yazY0X2ludDY0IiwiYmluX3JlYWRfbWQ1IiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaGFwZV9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2hhcGVfaW50NjMiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2hhcGVfbmF0aXZlaW50IiwiYmluX3NoYXBlX25hdDAiLCJiaW5fc2hhcGVfZGlnZXN0IiwiYmluX3NoYXBlX2Zsb2F0MzJfdmVjIiwiYmluX3NoYXBlX2Zsb2F0NjRfdmVjIiwiYmluX3NoYXBlX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDMyX21hdCIsImJpbl9zaGFwZV9mbG9hdDY0X21hdCIsImJpbl9zaGFwZV9tYXQiLCJiaW5fc2hhcGVfYmlnc3RyaW5nIiwiYmluX3NoYXBlX2Zsb2F0YXJyYXkiLCJiaW5fc2hhcGVfdmFyaWFudF9pbnQiLCJiaW5fc2hhcGVfaW50XzhiaXQiLCJiaW5fc2hhcGVfaW50XzE2Yml0IiwiYmluX3NoYXBlX2ludF8zMmJpdCIsImJpbl9zaGFwZV9pbnRfNjRiaXQiLCJiaW5fc2hhcGVfaW50NjRfYml0cyIsImJpbl9zaGFwZV9uZXR3b3JrMTZfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyIiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0IiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaGFwZV9oYXNodGJsIiwieSIsImJpbl9zaGFwZV9mbG9hdF9hcnJheSIsImJpbl9zaGFwZV9sYXp5IiwiYmluX3NoYXBlX3BhaXIiLCJiaW5fc2hhcGVfdHJpcGxlIiwieiIsImJpbl9zaXplX3VuaXQiLCJiaW5fc2l6ZV9ib29sIiwiYmluX3NpemVfY2hhciIsImJpbl9zaXplX21kNSIsImJpbl9zaXplX2ludF9uYXQwIiwiYmluX3NpemVfaW50X25lZ2F0aXZlIiwiYmluX3NpemVfaW50IiwiYmluX3NpemVfaW50JDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfZmxvYXQiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl9zaXplX2ludDY0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fc2l6ZV91bml0JDAiLCJiaW5fc2l6ZV9ib29sJDAiLCJiaW5fc2l6ZV9jaGFyJDAiLCJiaW5fc2l6ZV9pbnQkMSIsImJpbl9zaXplX25hdDAkMCIsImJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyIsInNpemVfbGVuIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fc2l6ZV9tZDUkMSIsImJpbl9zaXplX2Zsb2F0JDAiLCJmIiwiYmluX3NpemVfaW50MzIkMCIsImJpbl9zaXplX2ludDY0JDAiLCJiaW5fc2l6ZV9uYXRpdmVpbnQiLCJiaW5fc2l6ZV9yZWYkMCIsImJpbl9zaXplX2VsIiwiYmluX3NpemVfbGF6eV90JDAiLCJiaW5fc2l6ZV9vcHRpb24kMCIsImJpbl9zaXplX3BhaXIkMCIsImJpbl9zaXplX2EiLCJiaW5fc2l6ZV9iIiwiYmluX3NpemVfdHJpcGxlJDAiLCJiaW5fc2l6ZV9jIiwiYmluX3NpemVfbGlzdCIsInNpemVfYWNjIiwibGVuX2FjYyIsImxlbl9hY2MkMCIsInNpemVfYWNjJDAiLCJiaW5fc2l6ZV9sZW4iLCJiaW5fc2l6ZV9mbG9hdGFycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheV9sb29wIiwidG90YWxfbGVuIiwidG90YWxfbGVuX3JlZiIsImJpbl9zaXplX2FycmF5IiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJiaW5fc2l6ZV9hcnJheV9ub19sZW5ndGgiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IiwiYmluX2Zsb2F0X2FycmF5IiwiYmluX3dyaXRlcl92YXJpYW50X2ludCIsImJpbl9yZWFkZXJfdmFyaWFudF9pbnQiLCJiaW5fdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVyX2ludF84Yml0IiwiYmluX3JlYWRlcl9pbnRfOGJpdCIsImJpbl9pbnRfOGJpdCIsImJpbl93cml0ZXJfaW50XzE2Yml0IiwiYmluX3JlYWRlcl9pbnRfMTZiaXQiLCJiaW5faW50XzE2Yml0IiwiYmluX3dyaXRlcl9pbnRfMzJiaXQiLCJiaW5fcmVhZGVyX2ludF8zMmJpdCIsImJpbl9pbnRfMzJiaXQiLCJiaW5fd3JpdGVyX2ludF82NGJpdCIsImJpbl9yZWFkZXJfaW50XzY0Yml0IiwiYmluX2ludF82NGJpdCIsImJpbl93cml0ZXJfaW50NjRfYml0cyIsImJpbl9yZWFkZXJfaW50NjRfYml0cyIsImJpbl9pbnQ2NF9iaXRzIiwiYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50IiwiYmluX25ldHdvcmsxNl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQiLCJiaW5fbmV0d29yazMyX2ludCIsImJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIiLCJiaW5fbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50IiwiYmluX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0IiwiYmluX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZXJfYXJyYXlfbm9fbGVuZ3RoIiwiY252X3dyaXRlciIsImNudiIsInRwX2NsYXNzIiwiY252X3JlYWRlciIsInZ0YWciLCJmb3Jfc2hhcGUiLCJmb3Jfd3JpdGVyIiwiZm9yX3JlYWRlciIsImJpbl93cml0ZV9zaXplX2hlYWRlciIsImJpbl9yZWFkX3NpemVfaGVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX2R1bXAiLCJvcHQiLCJ3cml0ZXIiLCJzdGgiLCJoZWFkZXIiLCJwb3NfbGVuIiwidG90X2xlbiIsInBvc19sZW4kMCIsImJ1ZiQwIiwiYnVmJDEiLCJiaW5fcmVhZF9zdHJlYW0iLCJtYXhfc2l6ZSIsInJlYWQiLCJyZWFkZXIiLCJtYXhfc2l6ZSQwIiwibXNnIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJtYXliZV9hbm5vdGF0ZV9zaGFwZSIsIm1heWJlX3V1aWQiLCJzaGFwZSIsInV1aWQiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ0IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2hhcGVfZWwiLCJiaW5fd3JpdGVyIiwiYmluX3JlYWRlciIsInR5cGVfY2xhc3MiLCJiaW5fc2hhcGVfZWwxIiwiYmluX3NoYXBlX2VsMiIsImJpbl9zaXplX2VsMSIsImJpbl9zaXplX2VsMiIsImJpbl93cml0ZV9lbDEiLCJiaW5fd3JpdGVfZWwyIiwiYmluX3JlYWRfZWwxIiwiYmluX3JlYWRfZWwyIiwiYmluX3dyaXRlcjEiLCJiaW5fd3JpdGVyMiIsImJpbl9yZWFkZXIxIiwiYmluX3JlYWRlcjIiLCJ0eXBlX2NsYXNzMSIsInR5cGVfY2xhc3MyIiwiYmluX3NoYXBlX2VsMyIsImJpbl9zaXplX2VsMyIsImJpbl93cml0ZV9lbDMiLCJiaW5fcmVhZF9lbDMiLCJiaW5fd3JpdGVyMyIsImJpbl9yZWFkZXIzIiwidHlwZV9jbGFzczMiLCJtYXliZV9jYWxsZXJfaWRlbnRpdHkiLCJ3aXRoX21vZHVsZV9uYW1lIiwibW9kdWxlX25hbWUiLCJmdW5jdGlvbl9uYW1lIiwibW9kdWxlX25hbWUkMCIsInJhaXNlX3JlYWRfdG9vX211Y2giLCJyYWlzZV9yZWFkX25vdF9lbm91Z2giLCJzaXplX3JlZiIsImlkeCIsInJlc3VsdCIsInQxIiwidDIiLCJ0MyIsImJpbl9yZWFkX3VuaXQkMCIsInZpbnQiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZF9zdHJpbmckMCIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZF9mbG9hdGFycmF5JDAiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwic2V4cF9vZl90Iiwib2ZfYV8wMDMiLCJzdGFydF9hIiwiZW5kX2EiLCJ3cml0dGVuIiwiZXhwZWN0ZWRfc2l6ZSIsIm9mX2JpbmFibGUiLCJ0b19iaW5hYmxlIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ0b19vcGFxdWUiLCJibG9iIiwib2Zfb3BhcXVlX2V4biIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQwIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsInN0cmluZ19vZl9iaWdzdHJpbmciLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJ0b19vcGFxdWUkMCIsImJpbl93cml0ZXJfdiIsIm9mX29wYXF1ZV9leG4kMCIsImJpbl9yZWFkZXJfdiIsImVycm9yIiwiY29tcGFyZSQxIiwic2V4cF9vZl90JDEiLCJiaW5fc2l6ZV90JDUiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQyIiwicHJlX3Rlc3RfaG9vayIsIm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2giLCJ0IiwiZW5hYmxlX2V2ZXJ5dGhpbmciLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIiLCJ0b19zdHJpbmciLCJjb21iaW5lIiwidDEiLCJ0MiIsImNvbWJpbmVfYWxsIiwidHMiLCJ0ZXN0X21vZHVsZXNfcmFuIiwidGVzdF9tb2R1bGVzX2ZhaWxlZCIsInRlc3RzX3JhbiIsInRlc3RzX2ZhaWxlZCIsImR5bmFtaWNfbGliIiwiYWN0aW9uIiwiZm9yY2VfZHJvcCIsImdldCIsImN1cnJlbnQiLCJmb3VuZF90ZXN0IiwiaXNfY3VycmVudCIsInAiLCJjdXJyZW50JDAiLCJjdXJyZW50X3RhZ3MiLCJ0IiwibSIsInZlcmJvc2UiLCJzdHJpY3QiLCJzaG93X2NvdW50cyIsImxpc3RfdGVzdF9uYW1lcyIsImRlbGF5ZWRfZXJyb3JzIiwic3RvcF9vbl9lcnJvciIsImxvZyIsInRpbWVfc2VjIiwidXNlX2NvbG9yIiwiaW5fcGxhY2UiLCJkaWZmX2NvbW1hbmQiLCJzb3VyY2VfdHJlZV9yb290IiwiYWxsb3dfb3V0cHV0X3BhdHRlcm5zIiwiZGlzcGxheWVkX2Rlc2NyIiwiZGVzY3IiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJzIiwic3RyIiwiZmlsZSIsImluZGV4IiwiaW5kZXgkMCIsImkiLCJmaWxlbmFtZSQwIiwiaW5kZXhfc3RyaW5nIiwiaW5kZXgkMSIsInRhZyIsImwiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiZGVzY3IkMCIsImNvbXBsZXRlX3RhZ3MiLCJ1c2VkIiwibGluZV9udW1iZXJfb3B0IiwicG9zaXRpb25fc3RhcnQiLCJlbmRfb2ZfZGVmX2ZpbGVuYW1lIiwibGluZV9udW1iZXIiLCJmb3VuZCIsInJlcSIsImRyb3BwZWQiLCJkZXNjciQxIiwic3Vic3RyaW5nIiwic2hvdWxkX3J1biIsImRlc2NyJDIiLCJjaCIsInJlc3VsdCQwIiwiY2FtbF9yYW5kb21fc3RhdGUiLCJiYXNlX3JhbmRvbV9zdGF0ZSIsInJlc3VsdCIsImJhY2t0cmFjZSQwIiwiZXhuX3N0ciIsInNlcCIsInNldF9saWJfYW5kX3BhcnRpdGlvbiIsInN0YXRpY19saWIiLCJ3aGljaF90ZXN0cyIsInJlcXVpcmVzX3BhcnRpdGlvbiIsInVuc2V0X2xpYiIsInRlc3QiLCJiIiwidGVzdF91bml0IiwidGVzdF9tb2R1bGUiLCJwYXJ0aWFsX3RhZ3MiLCJwcmV2IiwieCIsImUkMCIsImUiLCJzdW1tYXJpemUiLCJrIiwiYWNjIiwiY291bnQiLCJjb3VudF90ZXN0X21vZHVsZXMiLCJ1bnVzZWRfdGVzdHMiLCJlcnJvcnMiLCJ1c2VfY29sb3IkMCIsImluX3BsYWNlJDAiLCJkaWZmX2NvbW1hbmQkMCIsInNvdXJjZV90cmVlX3Jvb3QkMCIsImFsbG93X291dHB1dF9wYXR0ZXJucyQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJvcHQiLCJmaWxlIiwic3RoIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiYnVmZmVyIiwiY2h1bmtfc2l6ZSIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJzdGgkMCIsImFwcGVuZCIsInN0aCQxIiwiZmFpbF9pZl9leGlzdHMiLCJzdGgkMiIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxpc3QkMCIsIndpZHRoIiwibGVmdCIsImxlZnRfY29sdW1uX3dpZHRoIiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwicmVmbCIsImNvbnYiLCJ4IiwibGlmdCIsImNvbXBhcmUiLCJhIiwiYiIsImVxdWFsIiwidWlkIiwibmV4dCIsIm5hbWUiLCJjb2RlIiwiaGFzaCIsInN0YXRpYyQwIiwiY29tcGFyZSQwIiwiazEiLCJrMiIsImNtcCIsImIkMCIsImEkMCIsInlzIiwieSIsInhzIiwibiIsImVxdWFsJDAiLCJoYXNoJDAiLCJzdGF0aWMkMSIsImtleSIsInQiLCJ1aWQkMCIsIm5hbWUkMCIsImNyZWF0ZSIsIm9wdCIsInN0aCIsInNhbWUiLCJubTEiLCJubTIiLCJzYW1lX3dpdG5lc3MiLCJzYW1lX3dpdG5lc3NfZXhuIiwiaW50JDAiLCJtZW0iLCJ0YWJsZSIsInNldCIsImRhdGEiLCJmaW5kIiwiZGF0YSQwIiwiZmFpbCIsInVpZF9hIiwidWlkX2IiLCJtc2ciLCJ3aXRuZXNzIiwidHlwZW5hbWVfb2ZfdCIsImMiLCJkIiwiZSIsImxhYmVsIiwiYXJpdHkiLCJhcmdzX2xhYmVscyIsImluZGV4Iiwib2NhbWxfcmVwciIsInR5aWQiLCJ0cmF2ZXJzZSIsImludGVybmFsX3VzZV9vbmx5IiwibGVuZ3RoIiwidGFnIiwiaXNfcG9seW1vcnBoaWMiLCJ2YWx1ZSIsImZvbGQiLCJpbml0IiwiZiIsImludGVybmFsX3VzZV9vbmx5JDAiLCJsYWJlbCQwIiwiaW5kZXgkMCIsImdldCIsImlzX211dGFibGUiLCJ0eWlkJDAiLCJ0cmF2ZXJzZSQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMSIsInR5cGVuYW1lX29mX3QkMCIsImxlbmd0aCQwIiwiZmllbGQiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImNyZWF0ZSQwIiwiZm9sZCQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMiIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsIm5hbWUkNCIsIm5hbWUkNSIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwibmFtZSQxNSIsIm5hbWUkMTYiLCJuYW1lJDE3IiwibmFtZSQxOCIsIm5hbWUkMTkiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2Zfc3RyaW5nIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX2xpc3QiLCJ0eXBlbmFtZV9vZl9hcnJheSIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfdHVwbGUwIiwidHlwZW5hbWVfb2ZfdHVwbGUyIiwidHlwZW5hbWVfb2ZfdHVwbGUzIiwidHlwZW5hbWVfb2ZfdHVwbGU0IiwidHlwZW5hbWVfb2ZfdHVwbGU1IiwicmVwIiwicmVwJDAiLCJyZXAkMSIsInJlcCQyIiwicmVwJDMiLCJyZXAkNCIsIm5hbWUkMjAiLCJhcml0eSQwIiwiYyQwIiwiYiQxIiwiYSQxIiwiZCQwIiwiYyQxIiwiYiQyIiwiYSQyIiwidHlwZW5hbWVfb2ZfdCQxIiwicm5nIiwiZG9tIiwicmVwJDUiLCJyZXAkNiIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsInIxIiwicjIkMCIsInIxJDAiLCJyMiQxIiwieCQwIiwicjEkMSIsInIyJDIiLCJ4JDEiLCJyMSQyIiwicjIkMyIsIngkMiIsInIxJDMiLCJyMiQ0IiwieCQzIiwicm5nMSIsImRvbTEiLCJybmcyIiwiZG9tMiIsInQxJDEiLCJ0MiQyIiwiYjIiLCJhMiIsImIxIiwiYTEiLCJjMiIsImIyJDAiLCJhMiQwIiwiYzEiLCJiMSQwIiwiYTEkMCIsImQyIiwiYzIkMCIsImIyJDEiLCJhMiQxIiwiZDEiLCJjMSQwIiwiYjEkMSIsImExJDEiLCJlMiIsImQyJDAiLCJjMiQxIiwiYjIkMiIsImEyJDIiLCJlMSIsImQxJDAiLCJjMSQxIiwiYjEkMiIsImExJDIiLCJyMSQ0IiwicjIkNSIsInIxJDUiLCJyMiQ2IiwibmFtZTEiLCJyMiQ3IiwibmFtZTIiLCJyMSQ3IiwieCQ0IiwidDEkMyIsInQyJDMiLCJ0MiQ0IiwicjEkNiIsInQxJDIiLCJyMiIsInQyJDEiLCJwcm9vZiIsImhlYWQiLCJ0JDAiLCJ0JDEiLCJ0eXBlcmVwX29mX2ludCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX3JlZiIsInR5cGVyZXBfb2ZfZnVuY3Rpb24iLCJ0eXBlcmVwX29mX3R1cGxlMCIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlNCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidmFsdWVfdHVwbGUwIiwidHlwZW5hbWVfb2ZfaW50NjMiLCJ0eXBlcmVwX29mX2ludDYzIiwicmVwcl9vZl9wb2x5X3ZhcmlhbnQiLCJ2YXJpYW50Iiwic2l6ZSIsInJlcHIiLCJoYXNoX3ZhcmlhbnQiLCJzIiwiYWNjdSIsImkiLCJkb3VibGVfYXJyYXlfdmFsdWUiLCJkb3VibGUkMCIsInNpbXBsZSIsIm1hcF92YXJpYW50IiwibWFwIiwidHlwZW5hbWUiLCJwb2x5bW9ycGhpYyIsInRhZyQwIiwiZmN0IiwiayIsInRhZ3MiLCJhdGFnIiwiYnRhZyIsIm1hcF9yZWNvcmQiLCJyZWNvcmQiLCJmaWVsZCQwIiwiZmllbGRzIiwiZ2V0JDAiLCJhZmllbGQiLCJiZmllbGQiLCJyZXF1aXJlZCIsInRhYmxlJDAiLCJjaGVja19kZXBlbmRlbmNpZXMiLCJpbXBsZW1lbnRzJDAiLCJtZXNzYWdlIiwicmVwbGFjZSQwIiwibWVtJDAiLCJ0YWJsZTAiLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJ0YWJsZTUiLCJpc19yZWdpc3RlcmVkIiwiaWRlbnQiLCJ1bml0IiwicmVnaXN0ZXIwIiwiY29tcHV0ZSIsInJlZ2lzdGVyMSIsInJlZ2lzdGVyMiIsInJlZ2lzdGVyMyIsInJlZ2lzdGVyNCIsInJlZ2lzdGVyNSIsInJlZ2lzdGVyIiwidHlwZXJlcF9vZl9hIiwib2ZfdHlwZXJlcCIsImNvbnRleHQiLCJtZW1vX3RhYmxlIiwicmVwJDExIiwicmVwJDEyIiwicmVwJDEzIiwicmVwJDE0IiwicmVwJDE1IiwidHVwbGUiLCJyYSIsInJiIiwicmEkMCIsInJiJDAiLCJyYyIsInJhJDEiLCJyYiQxIiwicmMkMCIsInJkIiwicmEkMiIsInJiJDIiLCJyYyQxIiwicmQkMCIsInJlIiwiY29udGVudCIsIm5hbWVkIiwic2hhcmVkIiwiY3VzdG9tIiwiY3VzdG9tJDAiLCJjdXN0b20kMSIsInJlcCQ3IiwiY3VzdG9tJDIiLCJjdXN0b20kMyIsInJlcCQ4IiwiY3VzdG9tJDQiLCJjdXN0b20kNSIsInJlcCQ5IiwidHlwZW5hbWVfb2ZfdCQyIiwiY3VzdG9tJDYiLCJjdXN0b20kNyIsInJlcCQxMCIsInR5cGVuYW1lX29mX3QkMyIsImN1c3RvbSQ4IiwiY3VzdG9tJDkiLCJjb21wdXRhdGlvbiIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIiwic2hhcmUiLCJvZl9wMSIsIm9mX3AyIiwib2ZfcDMiLCJvZl9wNCIsIm9mX3A1IiwidHlwZW5hbWVfb2ZfbmFtZWQiLCJ0eXBlcmVwX29mX3QiLCJlcnJvcl9zb3VyY2VfMDI0IiwiaGFzaF9mb2xkX3QiLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsIm1pbiIsIm1heCIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJiZXR3ZWVuIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJjb21wYXJhdG9yIiwicHAiLCJoYXNoYWJsZSIsImVxdWFsIiwicmVsYXRpdmVfdG8iLCJkaXIiLCJ0IiwidiIsImV4biQwIiwiZXhuIiwiZGlyX29yX2Vycm9yIiwiaW5pdGlhbF9kaXIiLCJ0X29mX3NleHAkMCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZmlsZW5hbWVfMDA0IiwibGluZV9udW1iZXJfMDA2IiwibGluZV9zdGFydF8wMDgiLCJzdGFydF9wb3NfMDEwIiwiZW5kX3Bvc18wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI2IiwiZmllbGRfc2V4cF8wMTckNSIsImZpZWxkX3NleHBfMDE3IiwieF8wMjciLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE3JDQiLCJmdmFsdWVfMDE5IiwiZW5kX3Bvc18wMTMiLCJzdGFydF9wb3NfMDExIiwibGluZV9zdGFydF8wMDkiLCJsaW5lX251bWJlcl8wMDciLCJmaWxlbmFtZV8wMDUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDM3Iiwic3RhcnRfcG9zXzAzNSIsImxpbmVfc3RhcnRfMDMzIiwibGluZV9udW1iZXJfMDMxIiwiZmlsZW5hbWVfMDI5IiwiYXJnXzAzOCIsImJuZHNfMDI4IiwiYXJnXzAzNiIsImJuZHNfMDI4JDAiLCJhcmdfMDM0IiwiYm5kc18wMjgkMSIsImFyZ18wMzIiLCJibmRzXzAyOCQyIiwiYXJnXzAzMCIsImJuZHNfMDI4JDMiLCJjb21wYXJlJDAiLCJhXzAzOSIsImJfMDQwIiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwiZmlsZW5hbWUiLCJvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiIsInBvcyIsInNleHBfb2ZfdCQxIiwiY29tcGFyZSQyIiwidG9fc3RyaW5nJDAiLCJvZl9zdHJpbmckMCIsInMiLCJpIiwib2ZfYV8wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImNtcF9hIiwiYV8wMDciLCJiXzAwOCIsImFfMDA5IiwiYl8wMTAiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiZ2V0X2N1cnJlbnQiLCJzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXQiLCJsb2NhdGlvbiIsInBvcyIsInByZXZfcG9zIiwicHJldl9wb3MkMCIsImxlbiIsImJhc2ljX2ZsdXNoIiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dCIsImluc3RhbmNlIiwidGVzdHNfcnVuJDAiLCJzeW1ib2xfYmluZCIsInJldHVybiQwIiwiZmx1c2giLCJleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUiLCJzIiwiZ2V0X291dHB1dHNfYW5kX2NsZWFudXAiLCJsYXN0X29mcyIsIm5leHRfb2ZzIiwibG9jIiwiYWNjIiwib2ZzIiwib3V0cHV0cyIsInRyYWlsaW5nX291dHB1dCIsInNhdmVfb3V0cHV0IiwidHJhaWxpbmciLCJibG9ja3MiLCJmaW5hbF9mbHVzaCIsIm9wdCIsImsiLCJzdGgiLCJjb3VudCIsIm1heF9hdHRlbXB0cyIsInJ1biQwIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJhcHBlbmQiLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4IiwiYmluZCIsInQiLCJmIiwidG9fcnVuIiwic2FuaXRpemUiLCJzIiwicnVuIiwiZmx1c2hlZCIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsIm9wdCIsInN0aCIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyIsInRvY3MkMCIsInRvYyIsImZvcmdldF90b2NzIiwiZm9yZ2V0X3RvYyQwIiwiZm9yZ2V0X3QiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJlbXB0eSIsImdldF9tYW55Iiwic3RhY2skMCIsInN0YWNrIiwiZW1wdHkkMCIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwiY2FtbF9wYXJzZXJfZW52IiwiXzEiLCJfMiIsInl5YWN0IiwieXl0YWJsZXMiLCJzZXhwIiwibGV4ZnVuIiwibGV4YnVmIiwic2V4cF9vcHQiLCJzZXhwcyIsInJldl9zZXhwcyIsInNleHBzX2FicyIsIm9jYW1sX2xleF90YWJsZXMiLCJidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsInNjYW5fc3RyaW5nIiwibG9jcyIsImxvY3MkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJsb2NzJDEiLCJsb2NzJDIiLCJzdGFydCIsImdlbl9sb2FkX3NleHBfbG9jIiwidW5pdCIsIm9mX2ludF9zdHlsZSIsIm9mX2Zsb2F0X3N0eWxlIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX21hY2giLCJ0b19zdHJpbmdfaHVtIiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsImRlZmF1bHRfaW5kZW50IiwibWVzc2FnZSIsImNvbXBhcmUiLCJlcXVhbCIsInRfc2V4cF9ncmFtbWFyIiwid2l0aF9uZXdfYnVmZmVyIiwib2MiLCJvdXRwdXRfaHVtIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJpbmRlbnQiLCJvdXRwdXRfbWFjaCIsInBybmciLCJ0ZW1wX2ZpbGVfbmFtZSIsInByZWZpeCIsInN1ZmZpeCIsInYiLCJyYW5kX3N0YXRlIiwicmV0Iiwicm5kIiwib3Blbl90ZW1wX2ZpbGUiLCJvcHQiLCJzdGgiLCJwZXJtIiwiY291bnRlciIsIm5hbWUiLCJlJDAiLCJlIiwiY291bnRlciQwIiwic2F2ZV9vZl9vdXRwdXQiLCJvdXRwdXRfZnVuY3Rpb24iLCJmaWxlIiwidG1wX25hbWUiLCJvdXRwdXRfc2V4cF9ubCIsImRvX291dHB1dCIsInNhdmVfaHVtIiwic2F2ZV9tYWNoIiwib3V0cHV0X3NleHBzX25sIiwic2F2ZV9zZXhwc19odW0iLCJzYXZlX3NleHBzX21hY2giLCJzY2FuX3NleHAiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9zZXhwcyIsInNjYW5fcmV2X3NleHBzIiwiZ2V0X21haW5fYnVmIiwiYnVmJDAiLCJidWYkMSIsInNjYW5fZm9sZF9zZXhwcyIsImluaXQiLCJtYWluIiwiYWNjIiwiYWNjJDAiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBzX2NvbnYiLCJjb2xsIiwic2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UiLCJjb250YWluaW5nX3NleHAiLCJsb2NhdGlvbiIsImludmFsaWRfc2V4cCIsImV4biIsIngkMCIsIngkMSIsIngkMiIsImdldF9zZXhwIiwiZ2V0X3JhbmdlIiwicmFuZ2UiLCJzZXhwX29mX2NvbnYiLCJzZXhwX29mX2EiLCJhIiwiZmluZF9zZXhwIiwiYW5ub3Rfc2V4cCIsImxvb3AiLCJzdWJfc2V4cCIsImFubm90cyIsInJlcyIsImV4biQwIiwiaW52YWxpZF9zZXhwJDAiLCJjcmVhdGUiLCJ0ZXh0X2xpbmUiLCJzdGgkMCIsInRleHRfY2hhciIsInN0aCQxIiwiYnVmX3BvcyIsInN0aCQyIiwiZ2xvYmFsX29mZnNldCIsImZhaWwiLCJtc2ciLCJ3aXRoX2J1Zl9wb3MiLCJwZSIsInBwb3MiLCJhbm5vdGF0ZV9zZXhwIiwiaXRlciIsInN0YXJ0X3BvcyQwIiwiYW5ub3QiLCJlbmRfcG9zJDAiLCJyYWlzZV9mb3VuZCIsInN0YXRlIiwicmFpc2VfZm91bmQkMCIsInBvc2l0aW9ucyIsInBhcnNlX3Bvc19vZl9zdGF0ZSIsInJ1bl9mZWVkX2xvb3AiLCJzdGFjayIsImxlbiIsInN0ciIsInN0cl9sZW4iLCJwb3NfbGVuIiwibWF4X3BvcyIsInByZXZpb3VzX29mZnNldCIsInN0YWNrJDAiLCJyZXN1bHQiLCJvZmZzZXQiLCJuZXh0X3BvcyIsImVyciIsInBhcnNlX3N0YXRlIiwicGFyc2VfZXJyb3IiLCJ1c2VkX3JlZiIsInBhcnNlX2Z1biIsImNvbnRfc3RhdGUiLCJwYXJzZSIsInBhcnNlX3BvcyIsImxlbiQwIiwicmFpc2VfZm91bmQkMSIsImxlbmd0aCIsInVuc2FmZV9mZWVkX2xvb3AiLCJzdGFjayQxIiwicG9zJDEiLCJwYXJzZV9zdHIiLCJyYWlzZV9mb3VuZCQyIiwibGVuZ3RoJDAiLCJ1bnNhZmVfZmVlZF9sb29wJDAiLCJwYXJzZV9zdHJfYW5ub3QiLCJyYWlzZV9mb3VuZCQzIiwibGVuZ3RoJDEiLCJ1bnNhZmVfZmVlZF9sb29wJDEiLCJwYXJzZV9iaWdzdHJpbmciLCJyYWlzZV9mb3VuZCQ0IiwibGVuZ3RoJDIiLCJ1bnNhZmVfZmVlZF9sb29wJDIiLCJwYXJzZV9iaWdzdHJpbmdfYW5ub3QiLCJta190aGlzX3BhcnNlIiwibXlfcGFyc2UiLCJwYXJzZV9wb3MkMCIsInBhcnNlX3BvcyQxIiwiZmVlZF9lbmRfb2ZfaW5wdXQiLCJ0aGlzX3BhcnNlIiwid3NfYnVmIiwiZ2VuX2lucHV0X3NleHAiLCJpYyIsInRoaXNfcGFyc2UkMSIsInNleHAkMCIsInRoaXNfcGFyc2UkMCIsImlucHV0X3NleHAiLCJnZW5faW5wdXRfcmV2X3NleHBzIiwicmV2X3NleHBzX3JlZiIsImJ1Zl9sZW4iLCJsZW4kMiIsInRoaXNfcGFyc2UkMiIsIm5fcGFyc2VkIiwibmV3X2xlbiIsImxlbiQxIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJvZl9zdHJpbmdfYmlnc3RyaW5nIiwibG9jIiwiZ2V0X2xlbiIsImdldF9zdWIiLCJjb250X3N0YXRlX3N0ciIsIm9mX3N0cmluZyIsIm9mX3N0cmluZ19tYW55IiwiZ2V0X2JzdHJfc3ViX3N0ciIsImJzdHIiLCJpIiwiYnN0cl93c19idWYiLCJvZl9iaWdzdHJpbmciLCJnZW5fbG9hZF9yZXZfc2V4cHMiLCJleGMkMCIsImV4YyIsImxvYWRfcmV2X3NleHBzIiwibG9hZF9zZXhwcyIsImdlbl9sb2FkX3NleHAiLCJzdHJpY3QiLCJ0aGlzX3BhcnNlJDQiLCJzZXhwJDEiLCJ0aGlzX3BhcnNlJDMiLCJjb250X3N0YXRlJDAiLCJsb2FkX3NleHAiLCJnZXRfc2V4cCQwIiwiZ2V0X3JhbmdlJDAiLCJzZXhwX29mX2NvbnYkMCIsImZpbmRfc2V4cCQwIiwiaW5wdXRfcmV2X3NleHBzJDAiLCJpbnB1dF9zZXhwJDAiLCJpbnB1dF9zZXhwcyQwIiwib2Zfc3RyaW5nJDAiLCJvZl9iaWdzdHJpbmckMCIsImxvYWRfcmV2X3NleHBzJDAiLCJsb2FkX3NleHBzJDAiLCJsb2FkX3NleHAkMCIsImNvbnYiLCJiYWRfc2V4cCIsImJhZF9hbm5vdF9zZXhwIiwiZ2V0X2NvbnZfZXhuIiwibGluZSIsImxvYWRfc2V4cF9jb252IiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyQwIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIiwiYmlnc3RyaW5nX29mX3NleHAiLCJmbG9hdF92ZWNfb2Zfc2V4cCIsImVtcHR5X2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdF92ZWMiLCJjcmVhdGVfZmxvYXQzMl92ZWMiLCJjcmVhdGVfZmxvYXQ2NF92ZWMiLCJlbXB0eV9mbG9hdDMyX3ZlYyIsImVtcHR5X2Zsb2F0NjRfdmVjIiwiZmxvYXQzMl92ZWNfb2Zfc2V4cCIsImZsb2F0NjRfdmVjX29mX3NleHAiLCJ2ZWNfb2Zfc2V4cCIsImNoZWNrX3Rvb19tdWNoX2RhdGEiLCJkYXRhIiwiZmxvYXRfbWF0X29mX3NleHAiLCJjcmVhdGVfZmxvYXRfbWF0Iiwic24iLCJzbSIsImRhdGEkMCIsImRhdGEkMSIsImNvbCQwIiwiY3JlYXRlX2Zsb2F0MzJfbWF0IiwiY3JlYXRlX2Zsb2F0NjRfbWF0IiwiZmxvYXQzMl9tYXRfb2Zfc2V4cCIsImZsb2F0NjRfbWF0X29mX3NleHAiLCJtYXRfb2Zfc2V4cCIsInN0cmluZ19vZl9vZl9zZXhwX29mIiwidG9fc2V4cCIsIm9mX3N0cmluZ19vZl9vZl9zZXhwIiwib2Zfc2V4cCIsInRfb2Zfc2V4cCIsInRfb2Zfc2V4cCQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X29mX3NleHAiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYm9vbCIsImJvb2xfb2Zfc2V4cCIsImJvb2xfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2NoYXIiLCJjaGFyX29mX3NleHAiLCJjaGFyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50IiwiaW50X29mX3NleHAiLCJpbnRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfb2Zfc2V4cCIsImludDMyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9vZl9zZXhwIiwiaW50NjRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3JlZiIsInJlZl9vZl9zZXhwIiwicmVmX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fb2Zfc2V4cCIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2xpc3QiLCJsaXN0X29mX3NleHAiLCJsaXN0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwiYXJyYXlfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJleG5fc2V4cF9ncmFtbWFyIiwiY29lcmNlIiwiZG9jX2NvbW1lbnRfdGFnIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwidGFnIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwic2V4cDEiLCJyZWdpc3RlcjIiLCJzZXhwX29mX2FyZzIiLCJzZXhwMiIsInJlZ2lzdGVyMyIsInNleHBfb2ZfYXJnMyIsInNleHAzIiwicmVnaXN0ZXI0Iiwic2V4cF9vZl9hcmc0Iiwic2V4cDQiLCJyZWdpc3RlcjUiLCJzZXhwX29mX2FyZzUiLCJzZXhwNSIsInJlZ2lzdGVyNiIsInNleHBfb2ZfYXJnNiIsInNleHA2IiwicmVnaXN0ZXI3Iiwic2V4cF9vZl9hcmc3Iiwic2V4cDciLCJyZWdpc3RlcjgiLCJzZXhwX29mX2FyZzgiLCJzZXhwOCIsInJlZ2lzdGVyOSIsInNleHBfb2ZfYXJnOSIsInNleHA5IiwicmVnaXN0ZXIxMCIsInNleHBfb2ZfYXJnMTAiLCJzZXhwMTAiLCJpbnQ2NCQwIiwiZ29sZGVuX2dhbW1hIiwicG9wY291bnQiLCJvZl9pbnQiLCJzZWVkIiwiY29weSIsIm9kZF9nYW1tYSIsIm1peF9iaXRzIiwieiIsIm4iLCJtaXg2NCIsInokMCIsInokMSIsIm5leHRfc2VlZCIsInQiLCJuZXh0Iiwib2Zfc2VlZF9hbmRfZ2FtbWEiLCJnYW1tYSIsInNlZWQkMCIsInJhbmRvbV9pbnQ2NCIsInJhbmRvbV9zdGF0ZSIsImNyZWF0ZSIsInNwbGl0IiwibmV4dF9pbnQ2NCIsInBlcnR1cmIiLCJzYWx0IiwiYm9vbCIsInN0YXRlIiwieCIsImludDY0IiwibG8iLCJoaSIsInJlbWFpbmRlcl9tYXhpbXVtIiwiZHJhdyQwIiwicmVtYWluZGVyIiwiZHJhd19tYXhpbXVtIiwiZHJhdyIsImludCQwIiwibG8kMCIsImhpJDAiLCJpbnQzMiIsIm5hdGl2ZWludCIsImludDYzIiwiZG91YmxlX3VscCIsInVuaXRfZmxvYXRfZnJvbV9pbnQ2NCIsInVuaXRfZmxvYXQiLCJmbG9hdCQwIiwicmFuZ2UiLCJtaWQiLCJmIiwiYml0c190b19yZXByZXNlbnQiLCJ0JDAiLCJsb2dfdW5pZm9ybSIsIm1pbl9iaXRzIiwibWF4X2JpdHMiLCJiaXRzIiwidF9zZXhwX2dyYW1tYXIiLCJvZl9mbG9hdCIsInRvX2Zsb2F0Iiwib2ZfaW50X2V4biIsInRvX2ludF9leG4iLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcXVhbCIsImNvbXBhcmUiLCJtaW4iLCJtYXgiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiYmV0d2VlbiIsImNsYW1wX2V4biIsImNsYW1wIiwiY29tcGFyYXRvciIsInBwIiwiaGFzaGFibGUiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImludmFyaWFudCIsInRvX3N0cmluZ19odW0iLCJvbmUiLCJtaW51c19vbmUiLCJyZW0iLCJyb3VuZCIsInJvdW5kX3Rvd2FyZHNfemVybyIsInJvdW5kX2Rvd24iLCJyb3VuZF91cCIsInJvdW5kX25lYXJlc3QiLCJzdWNjIiwicHJlZCIsInBvdyIsImJpdF9hbmQiLCJiaXRfb3IiLCJiaXRfeG9yIiwiYml0X25vdCIsInBvcGNvdW50JDAiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJkZWNyIiwiaW5jciIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0X2V4biIsInRvX2ludDY0Iiwib2ZfbmF0aXZlaW50X2V4biIsInRvX25hdGl2ZWludF9leG4iLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJjZWlsX3BvdzIiLCJmbG9vcl9wb3cyIiwiY2VpbF9sb2cyIiwiZmxvb3JfbG9nMiIsImlzX3BvdzIiLCJjbHoiLCJjdHoiLCJzeW1ib2wiLCJsbm90IiwiYWJzIiwiemVybyIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInRfc2V4cF9ncmFtbWFyJDAiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsImVxdWFsJDAiLCJjb21wYXJlJDAiLCJtaW4kMCIsIm1heCQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjb21wYXJhdG9yJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwiemVybyQwIiwib25lJDAiLCJtaW51c19vbmUkMCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwibmVnIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwicmVtJDAiLCJzeW1ib2wkMTciLCJsYW5kIiwibG9yIiwibHhvciIsImxub3QkMCIsImxzbCIsImFzciIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJhYnMkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQxIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsIm51bV9iaXRzJDAiLCJtYXhfdmFsdWUkMCIsIm1pbl92YWx1ZSQwIiwibHNyIiwic2hpZnRfcmlnaHRfbG9naWNhbCQwIiwiY2VpbF9wb3cyJDAiLCJmbG9vcl9wb3cyJDAiLCJjZWlsX2xvZzIkMCIsImZsb29yX2xvZzIkMCIsImlzX3BvdzIkMCIsImNseiQwIiwiY3R6JDAiLCJ0X3NleHBfZ3JhbW1hciQyIiwib2ZfZmxvYXQkMiIsInRvX2Zsb2F0JDIiLCJvZl9pbnRfZXhuJDIiLCJ0b19pbnRfZXhuJDIiLCJoYXNoX2ZvbGRfdCQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDIiLCJlcXVhbCQyIiwiY29tcGFyZSQyIiwibWluJDIiLCJtYXgkMiIsImFzY2VuZGluZyQyIiwiZGVzY2VuZGluZyQyIiwiYmV0d2VlbiQyIiwiY2xhbXBfZXhuJDIiLCJjbGFtcCQyIiwiY29tcGFyYXRvciQyIiwicHAkMiIsImhhc2hhYmxlJDIiLCJpc19wb3NpdGl2ZSQyIiwiaXNfbm9uX25lZ2F0aXZlJDIiLCJpc19uZWdhdGl2ZSQyIiwiaXNfbm9uX3Bvc2l0aXZlJDIiLCJzaWduJDIiLCJpbnZhcmlhbnQkMiIsInRvX3N0cmluZ19odW0kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJyZW0kMiIsInJvdW5kJDIiLCJyb3VuZF90b3dhcmRzX3plcm8kMiIsInJvdW5kX2Rvd24kMiIsInJvdW5kX3VwJDIiLCJyb3VuZF9uZWFyZXN0JDIiLCJzdWNjJDIiLCJwcmVkJDIiLCJwb3ckMiIsImJpdF9hbmQkMiIsImJpdF9vciQyIiwiYml0X3hvciQyIiwiYml0X25vdCQyIiwicG9wY291bnQkMyIsInNoaWZ0X2xlZnQkMiIsInNoaWZ0X3JpZ2h0JDIiLCJkZWNyJDIiLCJpbmNyJDIiLCJvZl9pbnQzMl9leG4kMiIsInRvX2ludDMyX2V4biQyIiwib2ZfaW50NjRfZXhuJDIiLCJ0b19pbnQ2NCQyIiwib2ZfbmF0aXZlaW50X2V4biQyIiwidG9fbmF0aXZlaW50X2V4biQyIiwib2ZfZmxvYXRfdW5jaGVja2VkJDIiLCJudW1fYml0cyQyIiwibWF4X3ZhbHVlJDIiLCJtaW5fdmFsdWUkMiIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMiIsImNlaWxfcG93MiQyIiwiZmxvb3JfcG93MiQyIiwiY2VpbF9sb2cyJDIiLCJmbG9vcl9sb2cyJDIiLCJpc19wb3cyJDIiLCJjbHokMiIsImN0eiQyIiwic3ltYm9sJDMzIiwibG5vdCQyIiwiYWJzJDIiLCJ6ZXJvJDIiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJ0X3NleHBfZ3JhbW1hciQzIiwib2ZfZmxvYXQkMyIsInRvX2Zsb2F0JDMiLCJvZl9pbnRfZXhuJDMiLCJ0b19pbnRfZXhuJDMiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsIm9mX3N0cmluZyQzIiwidG9fc3RyaW5nJDMiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJlcXVhbCQzIiwiY29tcGFyZSQzIiwibWluJDMiLCJtYXgkMyIsImFzY2VuZGluZyQzIiwiZGVzY2VuZGluZyQzIiwiYmV0d2VlbiQzIiwiY2xhbXBfZXhuJDMiLCJjbGFtcCQzIiwiY29tcGFyYXRvciQzIiwicHAkMyIsImhhc2hhYmxlJDMiLCJpc19wb3NpdGl2ZSQzIiwiaXNfbm9uX25lZ2F0aXZlJDMiLCJpc19uZWdhdGl2ZSQzIiwiaXNfbm9uX3Bvc2l0aXZlJDMiLCJzaWduJDMiLCJpbnZhcmlhbnQkMyIsInRvX3N0cmluZ19odW0kMyIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJuZWckMSIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsInN5bWJvbCQ0OSIsInN5bWJvbCQ1MCIsInJlbSQzIiwic3ltYm9sJDUxIiwibGFuZCQxIiwibG9yJDEiLCJseG9yJDEiLCJsbm90JDMiLCJsc2wkMSIsImFzciQxIiwicm91bmQkMyIsInJvdW5kX3Rvd2FyZHNfemVybyQzIiwicm91bmRfZG93biQzIiwicm91bmRfdXAkMyIsInJvdW5kX25lYXJlc3QkMyIsImFicyQzIiwic3VjYyQzIiwicHJlZCQzIiwicG93JDMiLCJiaXRfYW5kJDMiLCJiaXRfb3IkMyIsImJpdF94b3IkMyIsImJpdF9ub3QkMyIsInBvcGNvdW50JDQiLCJzaGlmdF9sZWZ0JDMiLCJzaGlmdF9yaWdodCQzIiwiZGVjciQzIiwiaW5jciQzIiwib2ZfaW50MzJfZXhuJDMiLCJ0b19pbnQzMl9leG4kMyIsIm9mX2ludDY0X2V4biQzIiwidG9faW50NjQkMyIsIm9mX25hdGl2ZWludF9leG4kMyIsInRvX25hdGl2ZWludF9leG4kMyIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQzIiwibnVtX2JpdHMkMyIsIm1heF92YWx1ZSQzIiwibWluX3ZhbHVlJDMiLCJsc3IkMSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMyIsImNlaWxfcG93MiQzIiwiZmxvb3JfcG93MiQzIiwiY2VpbF9sb2cyJDMiLCJmbG9vcl9sb2cyJDMiLCJpc19wb3cyJDMiLCJjbHokMyIsImN0eiQzIiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5IiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsInN1bSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwidyIsIm4iLCJyZWNfbGlzdCIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm9wdCIsInN0aCIsIm1pbl9sZW5ndGgiLCJzdGgkMCIsIm1heF9sZW5ndGgiLCJ1cHBlcl9ib3VuZCIsIm1heF9sZW5ndGgkMCIsImxlbiIsInJlbWFpbmluZyIsIm1heF9pbmRleCIsInVuaXQiLCJib29sIiwib3B0aW9uIiwidmFsdWVfdCIsImVpdGhlciIsImZzdF90Iiwic25kX3QiLCJyZXN1bHQiLCJva190IiwiZXJyX3QiLCJvayIsImVyciIsImxpc3RfZ2VuZXJpYyIsImVsdF9nZW4iLCJsaXN0X25vbl9lbXB0eSIsImxpc3Rfd2l0aF9sZW5ndGgiLCJsZW5ndGgiLCJsaXN0X2ZpbHRlcmVkIiwiZWx0cyIsImVsdHMkMCIsImxlbmd0aF9vZl9pbnB1dCIsImxlbmd0aF9vZl9vdXRwdXQiLCJpbmRpY2VzIiwibGlzdF9wZXJtdXRhdGlvbnMiLCJyZWYiLCJjaGFyX3VuaWZvcm1faW5jbHVzaXZlIiwiY2hhcl91cHBlcmNhc2UiLCJjaGFyX2xvd2VyY2FzZSIsImNoYXJfZGlnaXQiLCJjaGFyX3ByaW50X3VuaWZvcm0iLCJjaGFyX3VuaWZvcm0iLCJjaGFyX2FscGhhIiwiY2hhcl9hbHBoYW51bSIsImNoYXJfd2hpdGVzcGFjZSIsImNoYXJfcHJpbnQiLCJjaGFyJDAiLCJzbWFsbF9pbnQiLCJhbGxvd196ZXJvIiwibG93ZXJfYm91bmQiLCJ3ZWlnaHRlZF9sb3ciLCJ3ZWlnaHRlZF9oaWdoIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsInVuaWZvcm0iLCJsb2dfdW5pZm9ybSIsImludCQwIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwidW5pZm9ybSQwIiwibG9nX3VuaWZvcm0kMCIsImludDMyIiwiaW50MzJfdW5pZm9ybSIsImludDMyX2luY2x1c2l2ZSIsImludDMyX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50MzJfbG9nX2luY2x1c2l2ZSIsImludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsInVuaWZvcm0kMSIsImxvZ191bmlmb3JtJDEiLCJpbnQ2MyIsImludDYzX3VuaWZvcm0iLCJpbnQ2M19pbmNsdXNpdmUiLCJpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSIsImludDYzX2xvZ19pbmNsdXNpdmUiLCJpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJzeW1ib2wkMzYiLCJsbm90JDIiLCJhYnMkMiIsInplcm8kMiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInVuaWZvcm0kMiIsImxvZ191bmlmb3JtJDIiLCJpbnQ2NCIsImludDY0X3VuaWZvcm0iLCJpbnQ2NF9pbmNsdXNpdmUiLCJpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2xvZ19pbmNsdXNpdmUiLCJpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJ1bmlmb3JtJDMiLCJsb2dfdW5pZm9ybSQzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X3VuaWZvcm0iLCJuYXRpdmVpbnRfaW5jbHVzaXZlIiwibmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlIiwibmF0aXZlaW50X2xvZ19pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXYiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X251bV9tYW50aXNzYV9iaXRzIiwibnVtX2JpdHMiLCJiaXRzIiwiZmxvYXRfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfZXhwb25lbnQiLCJmbG9hdF96ZXJvIiwibGV0X3N5bnRheF8wMTIiLCJsZXRfc3ludGF4XzAxMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJmbG9hdF9zdWJub3JtYWwiLCJmbG9hdF9ub3JtYWwiLCJmbG9hdF9pbmZpbml0ZSIsImxldF9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjIiLCJmbG9hdF9uYW4iLCJmbG9hdF9vZl9jbGFzcyIsImMiLCJmbG9hdF9tYXRjaGluZ19jbGFzc2VzIiwiZmxvYXRfZmluaXRlIiwiZmxvYXRfd2l0aG91dF9uYW4iLCJmbG9hdCQwIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJtYXhfdG90YWxfc2l6ZSIsImEiLCJiIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImJpZ2FycmF5Ml9kaW0iLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsInYiLCJkaW0yJDAiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImsiLCJkcm9wX2tleXMiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsIm1vZF9uYW1lIiwibW9kX25hbWUkMCIsIm1vZF9uYW1lJDEiLCJtb2RfbmFtZSQyIiwibW9kX25hbWUkMyIsIm1vZF9uYW1lJDQiLCJtb2RfbmFtZSQ1IiwibW9kX25hbWUkNiIsIm1vZF9uYW1lJDciLCJtb2RfbmFtZSQ4IiwibW9kX25hbWUkOSIsIm1heF92YWx1ZSQxMiIsIm1vZF9uYW1lJDEwIiwicmFpc2VfY2Fubm90X3JlcHIiLCJ0b19zdHJpbmciLCJ4IiwidHJ1bmNfdW5zaWduZWQiLCJjb252IiwibG9nYW5kIiwibWFzayIsImV4bl91bnNpZ25lZCIsImVxdWFsIiwieSIsInRydW5jX3NpZ25lZCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsInNoaWZ0IiwiZXhuX3NpZ25lZCIsImlkZW50aXR5X2lmX3Bvc2l0aXZlIiwiZ3JlYXRlcl9lcXVhbCIsInplcm8iLCJvZl9zZXhwX2Vycm9yIiwid2hhdCIsInNleHAiLCJ0b19pbnQzMiIsInRvX2ludDY0IiwiY29tcGFyZSIsImhhc2hfZm9sZF90IiwiZnVuYyIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJ0eXBlcmVwX29mX3QiLCJ0eXBlbmFtZV9vZl90IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwic2lnbmVkIiwibnVtX2JpdHMiLCJudW1fYnl0ZXMiLCJ0cnVuYyIsImV4biIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJsb2dhbmQ2NCIsIm1hc2s2NCIsImVxdWFsJDAiLCJlcXVhbDY0IiwidG9fc3RyaW5nJDAiLCJ0b19zdHJpbmc2NCIsInRydW5jJDAiLCJleG4kMCIsInRydW5jNjQiLCJleG42NCIsIm9mX2Jhc2VfaW50X3RydW5jJDAiLCJvZl9iYXNlX2ludF9leG4kMCIsInRvX2Jhc2VfaW50JDAiLCJvZl91aW50MTZfdHJ1bmMiLCJvZl91aW50MTZfZXhuIiwib2ZfdWludDMyX3RydW5jIiwib2ZfdWludDMyX2V4biIsIm9mX3VpbnQ2M190cnVuYyIsIm9mX3VpbnQ2M19leG4iLCJvZl91aW50NjRfdHJ1bmMiLCJvZl91aW50NjRfZXhuIiwib2ZfaW50OF93cmFwIiwib2ZfaW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiY29tcGFyZSQzIiwiaGFzaF9mb2xkX3QkMSIsImZ1bmMkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF9vZl90JDEiLCJ0eXBlcmVwX29mX3QkMSIsInR5cGVuYW1lX29mX3QkMSIsInplcm8kMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJtaW5fdmFsdWUkMSIsIm1heF92YWx1ZSQxIiwic2lnbmVkJDEiLCJudW1fYml0cyQxIiwibnVtX2J5dGVzJDEiLCJ0cnVuYyQxIiwiZXhuJDEiLCJvZl9iYXNlX2ludF90cnVuYyQxIiwib2ZfYmFzZV9pbnRfZXhuJDEiLCJ0b19iYXNlX2ludCQxIiwib2ZfaW50OCIsIm9mX2ludDMyX3RydW5jJDAiLCJvZl9pbnQzMl9leG4kMCIsIm9mX2ludDYzX3RydW5jJDAiLCJvZl9pbnQ2M19leG4kMCIsIm9mX2ludDY0X3RydW5jJDAiLCJvZl9pbnQ2NF9leG4kMCIsIm9mX3VpbnQxNl93cmFwIiwib2ZfdWludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsImNvbXBhcmUkNSIsImhhc2hfZm9sZF90JDIiLCJmdW5jJDIiLCJoYXNoJDIiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJ0eXBlbmFtZV9vZl90JDIiLCJ6ZXJvJDIiLCJtaW5fdmFsdWUkMiIsImNvbnYkMCIsIm1heF92YWx1ZSQyIiwic2lnbmVkJDIiLCJudW1fYml0cyQyIiwibnVtX2J5dGVzJDIiLCJsb2dhbmQkMCIsImxvZ2FuZDY0JDAiLCJtYXNrNjQkMCIsImVxdWFsJDIiLCJlcXVhbDY0JDAiLCJ0b19zdHJpbmckMiIsInRvX3N0cmluZzY0JDAiLCJtYXNrJDAiLCJ0cnVuYyQyIiwiZXhuJDIiLCJ0cnVuYzY0JDAiLCJleG42NCQwIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50X2V4biQyIiwidG9fYmFzZV9pbnQkMiIsIm9mX3VpbnQ4Iiwib2ZfdWludDMyX3RydW5jJDAiLCJvZl91aW50MzJfZXhuJDAiLCJvZl91aW50NjNfdHJ1bmMkMCIsIm9mX3VpbnQ2M19leG4kMCIsIm9mX3VpbnQ2NF90cnVuYyQwIiwib2ZfdWludDY0X2V4biQwIiwib2ZfaW50MTZfd3JhcCIsIm9mX2ludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMiIsInN5bWJvbCQ1MyIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImNvbXBhcmUkNyIsImhhc2hfZm9sZF90JDMiLCJmdW5jJDMiLCJoYXNoJDMiLCJ0X29mX3NleHAkMyIsInNleHBfb2ZfdCQzIiwidHlwZXJlcF9vZl90JDMiLCJ0eXBlbmFtZV9vZl90JDMiLCJ6ZXJvJDMiLCJtaW5fdmFsdWUkMyIsIm1heF92YWx1ZSQzIiwic2hpZnRfbGVmdCQxIiwic2hpZnRfcmlnaHQkMSIsInNoaWZ0JDEiLCJ0b19zdHJpbmckMyIsInNpZ25lZCQzIiwibnVtX2JpdHMkMyIsIm51bV9ieXRlcyQzIiwidHJ1bmMkMyIsImV4biQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwic2lnbmVkJDQiLCJudW1fYml0cyQ0IiwibnVtX2J5dGVzJDQiLCJsb2dhbmQkMSIsImxvZ2FuZDY0JDEiLCJtYXNrJDEiLCJtYXNrNjQkMSIsImVxdWFsJDQiLCJlcXVhbDY0JDEiLCJ0b19zdHJpbmckNCIsInRvX3N0cmluZzY0JDEiLCJ0cnVuYyQ0IiwiZXhuJDQiLCJ0cnVuYzY0JDEiLCJleG42NCQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsInRvX2Jhc2VfaW50X2V4biIsIm9mX3VpbnQ4JDAiLCJvZl91aW50MTYiLCJvZl91aW50NjNfdHJ1bmMkMSIsIm9mX3VpbnQ2M19leG4kMSIsIm9mX3VpbnQ2NF90cnVuYyQxIiwib2ZfdWludDY0X2V4biQxIiwib2ZfaW50MzJfd3JhcCIsIm9mX2ludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkNCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNCIsInN5bWJvbCQ4NSIsInN5bWJvbCQ4NiIsInN5bWJvbCQ4NyIsInN5bWJvbCQ4OCIsInN5bWJvbCQ4OSIsInN5bWJvbCQ5MCIsInN5bWJvbCQ5MSIsInN5bWJvbCQ5MiIsInN5bWJvbCQ5MyIsInN5bWJvbCQ5NCIsImNvbXBhcmUkMTEiLCJoYXNoX2ZvbGRfdCQ1IiwiZnVuYyQ1IiwiaGFzaCQ1IiwidF9vZl9zZXhwJDUiLCJzZXhwX29mX3QkNSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDUiLCJxdWlja2NoZWNrX29ic2VydmVyJDUiLCJxdWlja2NoZWNrX3Nocmlua2VyJDUiLCJ0eXBlcmVwX29mX3QkNSIsInR5cGVuYW1lX29mX3QkNSIsInplcm8kNSIsIm1pbl92YWx1ZSQ1IiwibWF4X3ZhbHVlJDUiLCJ0b19zdHJpbmckNSIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50MzJfZXhuJDAiLCJ0b19iYXNlX2ludDMyX3RydW5jJDAiLCJ0b19iYXNlX2ludDMyX2V4biQwIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQwIiwib2ZfYmFzZV9pbnQ2NF9leG4kMCIsInRvX2Jhc2VfaW50NjQkMCIsInRvX2Jhc2VfaW50X2V4biQwIiwib2ZfdWludDgkMSIsIm9mX3VpbnQxNiQwIiwib2ZfdWludDYzX3RydW5jJDIiLCJvZl91aW50NjNfZXhuJDIiLCJvZl91aW50NjRfdHJ1bmMkMiIsIm9mX3VpbnQ2NF9leG4kMiIsIm9mX2ludDMyX3dyYXAkMCIsIm9mX2ludDMyX2V4biQyIiwic2V4cF9vZl90JDYiLCJ0X29mX3NleHAkNiIsInMiLCJzeW1ib2wkMTExIiwic3ltYm9sJDExMiIsInN5bWJvbCQxMTMiLCJzeW1ib2wkMTE0Iiwic3ltYm9sJDExNSIsInN5bWJvbCQxMTYiLCJzeW1ib2wkMTE3Iiwic3ltYm9sJDExOCIsInN5bWJvbCQxMTkiLCJzeW1ib2wkMTIwIiwiaW1wbCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDciLCJxdWlja2NoZWNrX29ic2VydmVyJDciLCJxdWlja2NoZWNrX3Nocmlua2VyJDciLCJ0X29mX3NleHAkNyIsInNleHBfb2ZfdCQ3IiwidHlwZXJlcF9vZl90JDciLCJ0eXBlbmFtZV9vZl90JDciLCJzaWduZWQkNyIsIm51bV9iaXRzJDciLCJudW1fYnl0ZXMkNyIsInplcm8kNyIsIm1pbl92YWx1ZSQ3IiwibWF4X3ZhbHVlJDciLCJoYXNoX2ZvbGRfdCQ3IiwiaGFzaCQ3Iiwic3ltYm9sJDEyNyIsInN5bWJvbCQxMjgiLCJzeW1ib2wkMTI5Iiwic3ltYm9sJDEzMCIsInN5bWJvbCQxMzEiLCJzeW1ib2wkMTMyIiwiZXF1YWwkNyIsImNvbXBhcmUkMTUiLCJtaW4kNyIsIm1heCQ3Iiwib2ZfYmFzZV9pbnQzMiQxIiwidG9fYmFzZV9pbnQzMiQxIiwib2ZfaW50OCQyIiwib2ZfaW50MTYkMSIsIm9mX2ludDYzX3RydW5jJDMiLCJvZl9pbnQ2M19leG4kMyIsIm9mX2ludDY0X3RydW5jJDMiLCJvZl9pbnQ2NF9leG4kMyIsIm9mX3VpbnQzMl93cmFwJDEiLCJvZl91aW50MzJfZXhuJDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ4IiwicXVpY2tjaGVja19vYnNlcnZlciQ4IiwicXVpY2tjaGVja19zaHJpbmtlciQ4IiwidF9vZl9zZXhwJDgiLCJzZXhwX29mX3QkOCIsInR5cGVyZXBfb2ZfdCQ4IiwidHlwZW5hbWVfb2ZfdCQ4Iiwic2lnbmVkJDgiLCJudW1fYml0cyQ4IiwibnVtX2J5dGVzJDgiLCJ6ZXJvJDgiLCJtaW5fdmFsdWUkOCIsIm1heF92YWx1ZSQ4IiwiaGFzaF9mb2xkX3QkOCIsImhhc2gkOCIsInN5bWJvbCQxMzMiLCJzeW1ib2wkMTM0Iiwic3ltYm9sJDEzNSIsInN5bWJvbCQxMzYiLCJzeW1ib2wkMTM3Iiwic3ltYm9sJDEzOCIsImVxdWFsJDgiLCJjb21wYXJlJDE2IiwibWluJDgiLCJtYXgkOCIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50MzJfZXhuJDEiLCJ0b19iYXNlX2ludDMyX3RydW5jJDEiLCJ0b19iYXNlX2ludDMyX2V4biQxIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQxIiwib2ZfYmFzZV9pbnQ2NF9leG4kMSIsInRvX2Jhc2VfaW50NjQkMSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwic2lnbmVkJDkiLCJudW1fYml0cyQ5IiwibnVtX2J5dGVzJDkiLCJvZl9pbnQ4JDMiLCJvZl9pbnQxNiQyIiwib2ZfaW50MzIiLCJvZl9pbnQ2NF90cnVuYyQ0Iiwib2ZfaW50NjRfZXhuJDQiLCJvZl91aW50NjNfd3JhcCIsIm9mX3VpbnQ2M19leG4kNCIsInN5bWJvbCQxNDUiLCJzeW1ib2wkMTQ2Iiwic3ltYm9sJDE0NyIsInN5bWJvbCQxNDgiLCJzeW1ib2wkMTQ5Iiwic3ltYm9sJDE1MCIsInN5bWJvbCQxNTEiLCJzeW1ib2wkMTUyIiwic3ltYm9sJDE1MyIsInN5bWJvbCQxNTQiLCJoYXNoX2ZvbGRfdCQxMCIsImZ1bmMkOCIsImhhc2gkMTAiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEwIiwiY29tcGFyZSQxOSIsInR5cGVyZXBfb2ZfdCQxMCIsInR5cGVuYW1lX29mX3QkMTAiLCJ6ZXJvJDEwIiwibWluX3ZhbHVlJDEwIiwibWF4X3ZhbHVlJDEwIiwiZ3JlYXRlcl9lcXVhbCQyIiwidG9fc3RyaW5nJDgiLCJzaWduZWQkMTAiLCJudW1fYml0cyQxMCIsIm51bV9ieXRlcyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50NjRfZXhuJDIiLCJ0b19iYXNlX2ludDY0JDIiLCJvZl91aW50OCQzIiwib2ZfdWludDE2JDIiLCJvZl91aW50MzIiLCJvZl91aW50NjRfdHJ1bmMkNCIsIm9mX3VpbnQ2NF9leG4kNCIsIm9mX2ludDYzX3dyYXAiLCJvZl9pbnQ2M19leG4kNCIsInNleHBfb2ZfdCQxMCIsInRfb2Zfc2V4cCQxMCIsInN5bWJvbCQxNTUiLCJzeW1ib2wkMTU2Iiwic3ltYm9sJDE1NyIsInN5bWJvbCQxNTgiLCJzeW1ib2wkMTU5Iiwic3ltYm9sJDE2MCIsInN5bWJvbCQxNjEiLCJzeW1ib2wkMTYyIiwic3ltYm9sJDE2MyIsInN5bWJvbCQxNjQiLCJjb21wYXJlJDIxIiwiaGFzaF9mb2xkX3QkMTEiLCJmdW5jJDkiLCJoYXNoJDExIiwidF9vZl9zZXhwJDExIiwic2V4cF9vZl90JDExIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTEiLCJxdWlja2NoZWNrX29ic2VydmVyJDExIiwicXVpY2tjaGVja19zaHJpbmtlciQxMSIsInR5cGVyZXBfb2ZfdCQxMSIsInR5cGVuYW1lX29mX3QkMTEiLCJ6ZXJvJDExIiwibWluX3ZhbHVlJDExIiwibWF4X3ZhbHVlJDExIiwiZ3JlYXRlcl9lcXVhbCQzIiwidG9fc3RyaW5nJDkiLCJvZl9pbnQ4JDQiLCJvZl9pbnQxNiQzIiwic2lnbmVkJDExIiwibnVtX2JpdHMkMTEiLCJudW1fYnl0ZXMkMTEiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsInNpZ25lZCQxMiIsIm51bV9iaXRzJDEyIiwibnVtX2J5dGVzJDEyIiwiZXhuJDUiLCJvZl9iYXNlX2ludDY0X3RydW5jJDMiLCJvZl9iYXNlX2ludDY0X2V4biQzIiwidG9fYmFzZV9pbnQ2NF90cnVuYyIsInRvX2Jhc2VfaW50NjRfZXhuIiwib2ZfdWludDgkNCIsIm9mX3VpbnQxNiQzIiwib2ZfdWludDMyJDAiLCJvZl91aW50NjMiLCJvZl9pbnQ2NF93cmFwIiwib2ZfaW50NjRfZXhuJDUiLCJzZXhwX29mX3QkMTIiLCJ0X29mX3NleHAkMTIiLCJzeW1ib2wkMTg3Iiwic3ltYm9sJDE4OCIsInN5bWJvbCQxODkiLCJzeW1ib2wkMTkwIiwic3ltYm9sJDE5MSIsInN5bWJvbCQxOTIiLCJzeW1ib2wkMTkzIiwic3ltYm9sJDE5NCIsInN5bWJvbCQxOTUiLCJzeW1ib2wkMTk2IiwiZ2V0X2ludDgiLCJ0IiwicG9zIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwieCQwIiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfdWludDMyX2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsImdldF91aW50NjRfbGUiLCJnZXRfdWludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X2ludDgiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsIngkMSIsInNldF9pbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ2NF9sZSIsInNldF91aW50NjRfYmUiLCJnZXRfaW50OCQwIiwiZ2V0X3VpbnQ4JDAiLCJnZXRfaW50MTZfbGUkMCIsImdldF9pbnQxNl9iZSQwIiwiZ2V0X3VpbnQxNl9sZSQwIiwiZ2V0X3VpbnQxNl9iZSQwIiwiZ2V0X2ludDMyX2xlJDAiLCJnZXRfaW50MzJfYmUkMCIsImdldF91aW50MzJfbGUkMCIsImdldF91aW50MzJfYmUkMCIsImdldF9pbnQ2NF9sZSQwIiwiZ2V0X2ludDY0X2JlJDAiLCJnZXRfdWludDY0X2xlJDAiLCJnZXRfdWludDY0X2JlJDAiLCJzZXRfaW50OCQwIiwic2V0X3VpbnQ4JDAiLCJzZXRfaW50MTZfbGUkMCIsInNldF9pbnQxNl9iZSQwIiwic2V0X3VpbnQxNl9sZSQwIiwic2V0X3VpbnQxNl9iZSQwIiwic2V0X2ludDMyX2xlJDAiLCJzZXRfaW50MzJfYmUkMCIsInNldF91aW50MzJfbGUkMCIsInNldF91aW50MzJfYmUkMCIsInNldF9pbnQ2NF9sZSQwIiwic2V0X2ludDY0X2JlJDAiLCJzZXRfdWludDY0X2xlJDAiLCJzZXRfdWludDY0X2JlJDAiLCJnZXRfaW50OCQxIiwiZ2V0X3VpbnQ4JDEiLCJnZXRfaW50MTZfbGUkMSIsImdldF9pbnQxNl9iZSQxIiwiZ2V0X3VpbnQxNl9sZSQxIiwiZ2V0X3VpbnQxNl9iZSQxIiwiZ2V0X2ludDMyX2xlJDEiLCJnZXRfaW50MzJfYmUkMSIsImdldF91aW50MzJfbGUkMSIsImdldF91aW50MzJfYmUkMSIsImdldF9pbnQ2NF9sZSQxIiwiZ2V0X2ludDY0X2JlJDEiLCJnZXRfdWludDY0X2xlJDEiLCJnZXRfdWludDY0X2JlJDEiLCJnZXRfaW50OCQyIiwiZ2V0X3VpbnQ4JDIiLCJnZXRfaW50MTZfbGUkMiIsImdldF9pbnQxNl9iZSQyIiwiZ2V0X3VpbnQxNl9sZSQyIiwiZ2V0X3VpbnQxNl9iZSQyIiwiZ2V0X2ludDMyX2xlJDIiLCJnZXRfaW50MzJfYmUkMiIsImdldF91aW50MzJfbGUkMiIsImdldF91aW50MzJfYmUkMiIsImdldF9pbnQ2NF9sZSQyIiwiZ2V0X2ludDY0X2JlJDIiLCJnZXRfdWludDY0X2xlJDIiLCJnZXRfdWludDY0X2JlJDIiLCJsb2MkMCIsImxvYyIsInNwcmludGYiLCJhcmNoX3NpeHR5Zm91ciIsImFyY2hfYmlnX2VuZGlhbiIsIm5vdF9vbl8zMmJpdCIsImNyZWF0ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyIsInNpemUiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMkMCIsImxlbmd0aCIsImluaXQiLCJuIiwiZiIsInQiLCJpIiwiY2hlY2tfYXJncyIsInBvcyIsImxlbiIsImJzdHIiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwib3B0IiwiY2hyIiwic3RoIiwibGVuJDAiLCJyZXMiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsImdldF9pbnQ2NF90X2JlIiwicmVhZF9pbnQ2NF9zd2FwJDAiLCJzZXRfaW50NjRfdF9iZSIsInNldF9pbnQ2NF90X2xlIiwiaW50NjRfY29udl9lcnJvciIsInVpbnQ2NF9jb252X2Vycm9yIiwiaW50NjRfdG9faW50X2V4biIsInVpbnQ2NF90b19pbnRfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9iZV9leG4iLCJ1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biIsImdldF9pbnQ2NF9iZV9leG4iLCJnZXRfaW50NjRfbGVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfbGVfZXhuIiwiZ2V0X3VpbnQ2NF9iZV9leG4iLCJnZXRfdWludDY0X2xlX2V4biIsInNldF91aW50NjRfYmVfZXhuIiwic2V0X3VpbnQ2NF9sZV9leG4iLCJ1bnNhZmVfc2V0X3VpbnQ4IiwidW5zYWZlX3NldF9pbnQ4IiwibiQwIiwidW5zYWZlX2dldF91aW50OCIsInVuc2FmZV9nZXRfaW50OCIsInNldF91aW50OF9leG4iLCJzZXRfaW50OF9leG4iLCJnZXRfdWludDgiLCJnZXRfaW50OCIsInVpbnQzMl9vZl9pbnQzMl90IiwidW5zYWZlX3NldF91aW50MzJfbGUiLCJ1bnNhZmVfc2V0X3VpbnQzMl9iZSIsInVuc2FmZV9nZXRfdWludDMyX2xlIiwidW5zYWZlX2dldF91aW50MzJfYmUiLCJzZXRfdWludDMyX2xlX2V4biIsInNldF91aW50MzJfYmVfZXhuIiwiZ2V0X3VpbnQzMl9sZSIsImdldF91aW50MzJfYmUiLCJnZXRfdWludDgkMCIsInNldF91aW50OCIsImdldF91aW50MTZfbmUiLCJzZXRfdWludDE2X25lIiwiZ2V0X2ludDMyX25lIiwic2V0X2ludDMyX25lIiwiZ2V0X2ludDY0X25lIiwic2V0X2ludDY0X25lIiwiZ2V0X3VpbnQ4JDIiLCJzZXRfdWludDgkMSIsImdldF91aW50MTZfbmUkMCIsInNldF91aW50MTZfbmUkMCIsImdldF9pbnQzMl9uZSQwIiwic2V0X2ludDMyX25lJDAiLCJnZXRfaW50NjRfbmUkMCIsInNldF9pbnQ2NF9uZSQwIiwiZWx0MSIsImVsdDIiLCJlcXVhbCIsIm9mX2Jvb2wiLCJsZW5ndGgiLCJjcmVhdGVfYm9vbCIsImdldCIsInNldCIsIm92ZXJsYXBwaW5nX3NyY19kc3QiLCJsZW5ndGgkMCIsImdldCQwIiwic2V0JDAiLCJjcmVhdGVfYm9vbCQwIiwicGFzcyIsImZhaWxzIiwibWVzc2FnZSIsImEiLCJzZXhwX29mX2EiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJmYWlsX3MiLCJzZXhwIiwiY29tYmluZSIsInQxIiwidDIiLCJvZl9saXN0IiwibmFtZSIsInQiLCJlcnJvciIsInBhdGgiLCJuYW1lX2xpc3QiLCJuIiwibCIsImZhaWxfZm4iLCJwYXNzX2Jvb2wiLCJwYXNzX3VuaXQiLCJwcm90ZWN0IiwiZiIsInYiLCJleG4kMCIsImV4biIsInRyeV93aXRoIiwicGF0aF9zdHJpbmciLCJlcnJvcnMiLCJyZXN1bHQiLCJ4XzAwNSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwMyIsInJlczFfMDA0IiwibWF5YmVfcmFpc2UiLCJ2YWxpZF9vcl9lcnJvciIsImNoZWNrIiwieCIsImZpZWxkX2RpcmVjdCIsImZsZCIsInJlY29yZCIsImZpZWxkIiwiZmllbGRfZm9sZGVyIiwiYWNjIiwiZmllbGRfZGlyZWN0X2ZvbGRlciIsImFsbCIsImNoZWNrcyIsImNoZWNrcyQwIiwiZXJycyIsImNoZWNrcyQxIiwiZXJyIiwiZXJycyQwIiwib2ZfcmVzdWx0Iiwib2ZfZXJyb3IiLCJib29sdGVzdCIsImlmX2ZhbHNlIiwicGFpciIsImZzdCIsInNuZCIsInNuZF92YWx1ZSIsImZzdF92YWx1ZSIsImxpc3RfaW5kZXhlZCIsImxpc3QiLCJpIiwiZWwiLCJleHRyYWN0X25hbWUiLCJhbGlzdCIsImxpc3QkMCIsImtleSIsImZpcnN0X2ZhaWx1cmUiLCJvZl9lcnJvcl9vcHQiLCJib3VuZGVkIiwibG93ZXIiLCJ1cHBlciIsImNvbXBhcmUiLCJpbmNsIiwiZXhjbCIsImluY2wkMCIsImV4Y2wkMCIsInN5bWJvbCIsIm5hbWUiLCJzZXhwX29mX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9tYXQiLCJtYXRfb2Zfc2V4cCIsInNleHBfb2ZfdmVjIiwidmVjX29mX3NleHAiLCJzZXhwX29mX29wYXF1ZSIsIm9wYXF1ZV9vZl9zZXhwIiwic2V4cF9vZl9wYWlyIiwicGFpcl9vZl9zZXhwIiwib2Zfc2V4cF9lcnJvciIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZ3JvdXAiLCJiaW5fc2hhcGVfc2V4cF9vcGFxdWUiLCJhIiwiYmluX3NpemVfc2V4cF9vcGFxdWUiLCJzaXplX29mX2EiLCJiaW5fd3JpdGVfc2V4cF9vcGFxdWUiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl9zZXhwX29wYXF1ZSIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSIsIm9mX2EiLCJidWYiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3NleHBfb3BhcXVlJDAiLCJiaW5fcmVhZGVyX3NleHBfb3BhcXVlIiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl9zZXhwX29wYXF1ZSIsImJpbl9hIiwiY29tcGFyZV9zZXhwX29wYXF1ZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImhhc2hfZm9sZF9zZXhwX29wYXF1ZSIsImhhc2hfZm9sZF9hIiwiaHN2IiwiYXJnIiwidHlwZW5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlcmVwX29mX3NleHBfb3BhcXVlIiwibmFtZV9vZl9zZXhwX29wYXF1ZSIsInR5cGVuYW1lX29mX3R1cGxlNSIsInR5cGVuYW1lX29mX3R1cGxlNCIsInR5cGVuYW1lX29mX3R1cGxlMyIsInR5cGVuYW1lX29mX3R1cGxlMiIsInR5cGVuYW1lX29mX3R1cGxlMCIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfYXJyYXkiLCJ0eXBlbmFtZV9vZl9saXN0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX3N0cmluZyIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2ludDYzIiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidHlwZXJlcF9vZl90dXBsZTQiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTAiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2xhenlfdCIsInR5cGVyZXBfb2ZfYXJyYXkiLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX29wdGlvbiIsInZhbHVlX3R1cGxlMCIsInR5cGVyZXBfb2ZfdW5pdCIsInR5cGVyZXBfb2ZfYm9vbCIsInR5cGVyZXBfb2ZfYnl0ZXMiLCJ0eXBlcmVwX29mX3N0cmluZyIsInR5cGVyZXBfb2ZfZmxvYXQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2ludDYzIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9pbnQzMiIsInR5cGVyZXBfb2ZfaW50Iiwid2l0aF9yZXR1cm4iLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJvZl9zdHJpbmciLCJ4IiwidG9fc3RyaW5nIiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJjYWxsZXJfaWRlbnRpdHkiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ2MSIsInYxJDAiLCJiaW5fd3JpdGVfdCIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYXJnXzEiLCJhcmdfMSQwIiwieCQwIiwib2ZfYmlnc3RyaW5nIiwibSIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ19sZW5ndGgiLCJ0b19iaWdzdHJpbmciLCJvcHQiLCJzdGgiLCJwcmVmaXhfd2l0aF9sZW5ndGgiLCJ0X2xlbmd0aCIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludGYiLCJleGl0ZiIsImZtdCIsImNvbGxlY3RfdG9fc3RyaW5nIiwiZiIsImRvbmUiLCJvdXRwdXQiLCJlcnIkMyIsImVyciQyIiwiZXJyJDEiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDQiLCJlcnJvcl9zb3VyY2VfMDA5IiwibmFtZSQwIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjAiLCJuYW1lJDEiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzAzNSIsIm5hbWUkMiIsImVycm9yX3NvdXJjZV8wNTEiLCJlcnJvcl9zb3VyY2VfMDUzIiwibmFtZSQzIiwiZXJyb3Jfc291cmNlXzA2NCIsIm5hbWUkNCIsImVycm9yX3NvdXJjZV8wODIiLCJlcnJvcl9zb3VyY2VfMDg0IiwibmFtZSQ1IiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwieF8wMDUiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA2IiwiYl8wMDciLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwidF9vZl9zZXhwJDAiLCJ4XzAxMCIsInNleHBfb2ZfdCQwIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzAxMSIsImJfMDEyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMTYiLCJhdG9tXzAxNCIsImF0b21fMDE0JDAiLCJ0X29mX3NleHAkMiIsInNleHBfMDE5Iiwic2V4cF9vZl90JDEiLCJncm91cCQyIiwiYmluX3NoYXBlX3QkMiIsImJpbl9zaXplX3QkMiIsImFyZ3MiLCJzaXplX2FyZ3MiLCJiaW5fd3JpdGVfdCQyIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImJpbl90JDIiLCJjb21wYXJlJDIiLCJhXzAyMSIsImJfMDIyIiwicmlnaHRfMDI0IiwibGVmdF8wMjMiLCJoYXNoX2ZvbGRfdCQyIiwiaHN2JDAiLCJoYXNoJDIiLCJ0X29mX3NleHAkMyIsInNleHBfMDI4IiwiYXRvbV8wMjYiLCJzZXhwX2FyZ3NfMDI5IiwiYXRvbV8wMjYkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0X29mX3NleHAkNCIsInNleHBfMDM0Iiwic2V4cF9vZl90JDIiLCJ2XzAzNiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQzIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsImJpbl93cml0ZXJfdCQzIiwiYmluX3JlYWRfdCQ3IiwiYmluX3JlYWRfdCQ4IiwiYmluX3JlYWRlcl90JDMiLCJiaW5fdCQzIiwiY29tcGFyZSQzIiwiYV8wMzciLCJiXzAzOCIsInJpZ2h0XzA0MiIsImxlZnRfMDQxIiwiaGFzaF9mb2xkX3QkMyIsImhhc2gkMyIsInRfb2Zfc2V4cCQ1Iiwic2V4cF8wNTIiLCJhdG9tXzA0NCIsInNleHBfYXJnc18wNDciLCJhdG9tXzA0NCQwIiwiYXJnMF8wNDkiLCJyZXMwXzA1MCIsInNleHBfb2ZfdCQzIiwidl8wNTQiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfbm9ib2R5IiwiYmluX3NpemVfbm9ib2R5IiwiYmluX3dyaXRlX25vYm9keSIsImJpbl93cml0ZXJfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5JDAiLCJiaW5fcmVhZGVyX25vYm9keSIsImJpbl9ub2JvZHkiLCJjb21wYXJlX25vYm9keSIsImhhc2hfZm9sZF9ub2JvZHkiLCJmdW5jIiwiaGFzaF9ub2JvZHkiLCJub2JvZHlfb2Zfc2V4cCIsInNleHBfb2Zfbm9ib2R5IiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9tZSIsImJpbl9zaXplX21lIiwiYmluX3dyaXRlX21lIiwiYmluX3dyaXRlcl9tZSIsImJpbl9yZWFkX21lIiwiYmluX3JlYWRfbWUkMCIsImJpbl9yZWFkZXJfbWUiLCJiaW5fbWUiLCJjb21wYXJlX21lIiwiaGFzaF9mb2xkX21lIiwiZnVuYyQwIiwiaGFzaF9tZSIsIm1lX29mX3NleHAiLCJzZXhwX29mX21lIiwiZ3JvdXAkOCIsImJpbl9zaGFwZV90JDUiLCJiaW5fc2l6ZV90JDUiLCJiaW5fd3JpdGVfdCQ1IiwiYmluX3dyaXRlcl90JDUiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3QkNSIsImNvbXBhcmUkNSIsImFfMTAxIiwiYl8xMDIiLCJhXzEwMyIsImJfMTA0IiwicmlnaHRfMDcyIiwibGVmdF8wNzEiLCJoYXNoX2ZvbGRfcGVybXMiLCJwZXJtc19vZl9zZXhwIiwib2ZfYV8xMDciLCJ4XzEwOSIsInNleHBfMDc0IiwiYXRvbV8wNzUiLCJzZXhwX2FyZ3NfMDc4IiwiYXRvbV8wNzUkMCIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJzZXhwX29mX3Blcm1zIiwib2ZfYV8xMTAiLCJ4XzExMSIsInZfMDg2Iiwidl8wODciLCJncm91cCQ5IiwiYmluX3NoYXBlX3JlYWQiLCJiaW5fc2l6ZV9yZWFkIiwiYmluX3dyaXRlX3JlYWQiLCJiaW5fd3JpdGVyX3JlYWQiLCJiaW5fcmVhZF9yZWFkIiwiYmluX3JlYWRfcmVhZCQwIiwiYmluX3JlYWRlcl9yZWFkIiwiYmluX3JlYWQiLCJjb21wYXJlX3JlYWQiLCJoYXNoX2ZvbGRfcmVhZCIsImZ1bmMkMSIsImhhc2hfcmVhZCIsInJlYWRfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZCIsImNvbXBhcmVfd3JpdGUiLCJoYXNoX2ZvbGRfd3JpdGUiLCJmdW5jJDIiLCJoYXNoX3dyaXRlIiwid3JpdGVfb2Zfc2V4cCIsInNleHBfb2Zfd3JpdGUiLCJncm91cCQxMCIsImJpbl9zaGFwZV9pbW11dGFibGUiLCJiaW5fc2l6ZV9pbW11dGFibGUiLCJiaW5fd3JpdGVfaW1tdXRhYmxlIiwiYmluX3dyaXRlcl9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUkMCIsImJpbl9yZWFkZXJfaW1tdXRhYmxlIiwiYmluX2ltbXV0YWJsZSIsImNvbXBhcmVfaW1tdXRhYmxlIiwiaGFzaF9mb2xkX2ltbXV0YWJsZSIsImZ1bmMkMyIsImhhc2hfaW1tdXRhYmxlIiwiaW1tdXRhYmxlX29mX3NleHAiLCJzZXhwX29mX2ltbXV0YWJsZSIsImdyb3VwJDExIiwiYmluX3NoYXBlX3JlYWRfd3JpdGUiLCJiaW5fc2l6ZV9yZWFkX3dyaXRlIiwiYmluX3dyaXRlX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlIiwiYmluX3JlYWRfcmVhZF93cml0ZSQwIiwiYmluX3JlYWRlcl9yZWFkX3dyaXRlIiwiYmluX3JlYWRfd3JpdGUiLCJjb21wYXJlX3JlYWRfd3JpdGUiLCJoYXNoX2ZvbGRfcmVhZF93cml0ZSIsImZ1bmMkNCIsImhhc2hfcmVhZF93cml0ZSIsInJlYWRfd3JpdGVfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZF93cml0ZSIsImdyb3VwJDEyIiwiYmluX3NoYXBlX3Blcm1zIiwiYmluX3NpemVfcGVybXMiLCJiaW5fd3JpdGVfcGVybXMiLCJiaW5fd3JpdGVyX3Blcm1zIiwiYmluX3JlYWRfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyQwIiwiYmluX3JlYWRlcl9wZXJtcyIsImJpbl9wZXJtcyIsImNvbXBhcmVfcGVybXMiLCJhXzEyNCIsImJfMTI1IiwiYV8xMjYiLCJiXzEyNyIsIm1ha2UiLCJlcnJvcl9zb3VyY2VfMDExIiwidGVzdHMiLCJiIiwic2l6ZV9vZl9iIiwid3JpdGVfYiIsImJpbl93cml0ZXJfYiIsIm9mX2IiLCJiaW5fcmVhZGVyX2IiLCJiaW5fYiIsImNtcF9iIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJvZl9hXzAwNyIsIm9mX2JfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsIm9mX2FfMDI1Iiwib2ZfYl8wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsIm1hcCIsImYxIiwiZjIiLCJ4XzA0MCIsInhfMDQxIiwiZXF1YWwiLCJ4XzA0MiIsInhfMDQzIiwiYV8wMzUiLCJiXzAzNiIsInN5bWJvbCIsInkiLCJub3JtYWxpemUiLCJsZW5ndGhfZnVuIiwiaSIsInNsaWNlIiwic3ViX2Z1biIsInN0YXJ0Iiwic3RvcCIsInN0b3AkMCIsImxlbiIsInNpemVfb2ZfcyIsInYyIiwic2l6ZSIsIndyaXRlX3MiLCJwb3MkMiIsImJpbl93cml0ZXJfcyIsIm9mX3MiLCJhcmdfMiIsImJpbl9yZWFkZXJfcyIsImJpbl9zIiwidjEkMSIsInBvcyQzIiwiYXJnXzEkMSIsIm1lcmdlX2FsbCIsIkhlYXAiLCJzZXFzIiwibm90X3lldF9pbl9oZWFwIiwiaGVhcCIsImhlYXAkMCIsInNlcSQyIiwiZWx0JDAiLCJub3RfeWV0X2luX2hlYXAkMCIsInNlcSIsInNlcSQwIiwic2VxJDEiLCJlbHQiLCJ0X3NleHBfZ3JhbW1hciIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yIiwiZ2VuZXJhdG9yXzAwMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJvYnNlcnZlcl8wMDIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic2hyaW5rZXJfMDAxIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsImJpbmFyeV9zZWFyY2giLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsIm1lbSIsImlzX2VtcHR5IiwiaXRlciIsImZvbGQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNyZWF0ZSIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiaW5pdCIsIm1ha2VfbWF0cml4IiwiY29weV9tYXRyaXgiLCJhcHBlbmQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImJsaXQiLCJibGl0byIsInVuc2FmZV9ibGl0Iiwic3ViIiwic3VibyIsIm9mX2xpc3QiLCJmb2xkaW5nX21hcCIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwIiwiZm9sZF9tYXBpIiwiaXRlcmkiLCJtYXBpIiwiZm9sZGkiLCJmb2xkX3JpZ2h0Iiwic29ydCIsInN0YWJsZV9zb3J0IiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwibWVyZ2UiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJwYXJ0aXRpb25fdGYiLCJwYXJ0aXRpb25pX3RmIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJ0cmFuc3Bvc2UiLCJ0cmFuc3Bvc2VfZXhuIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJmaWx0ZXJfbWFwaSIsImZvcl9hbGxpIiwiZXhpc3RzaSIsImNvdW50aSIsIml0ZXIyX2V4biIsIm1hcDJfZXhuIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDJfZXhuIiwiZXhpc3RzMl9leG4iLCJmaWx0ZXIiLCJmaWx0ZXJpIiwic3dhcCIsInJldl9pbnBsYWNlIiwicmV2Iiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRfZXhuIiwiZmluZF9tYXBfZXhuIiwiZmluZGkiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJmaW5kX21hcGlfZXhuIiwiZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicGVybXV0ZSIsInJhbmRvbV9lbGVtZW50IiwicmFuZG9tX2VsZW1lbnRfZXhuIiwiemlwIiwiemlwX2V4biIsInVuemlwIiwic29ydGVkX2NvcHkiLCJsYXN0IiwidG9fc2VxdWVuY2UiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwibmdldCIsIm5zZXQiLCJsZW5ndGgiLCJnZXQiLCJzZXQiLCJjb21wYXJlX3QiLCJhXzAwNCIsImJfMDA1IiwieF8wMDkiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiYmluX3NoYXBlX3QkNiIsInNpemVfb2ZfZiIsIndyaXRlX2YiLCJiaW5fd3JpdGVyX2YiLCJvZl9mIiwiYmluX3JlYWRlcl9mIiwiYmluX2YiLCJjbXBfZiIsImNtcF9zIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJ2MCIsInRhZzAiLCJ0YWcxIiwidHlwZW5hbWUiLCJ0YWdzIiwicG9seW1vcnBoaWMiLCJ2YWx1ZSIsInYwJDAiLCJ4MSIsIngyIiwiYV8wMzYiLCJiXzAzNyIsImFfMDQwIiwiYl8wNDEiLCJhXzAzOCIsImJfMDM5IiwibmFtZXMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidjQiLCJ2MyIsInNpemUkMCIsInNpemUkMSIsInZfcG9zX2ZuYW1lIiwidl9wb3NfbG51bSIsInZfcG9zX2JvbCIsInZfcG9zX2NudW0iLCJuIiwibiQwIiwibiQxIiwicG9zX2NudW0iLCJyIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2NudW0kMCIsInBvc19ib2wkMCIsInBvc19sbnVtJDAiLCJwb3NfZm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsInBvc19mbmFtZV9mdW4iLCJwb3NfbG51bV9mdW4iLCJwb3NfYm9sX2Z1biIsInBvc19jbnVtX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsInBvc19mbmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwicG9zX2xudW1fZ2VuIiwiY29tcGlsZV9hY2MkMiIsInBvc19ib2xfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInBvc19jbnVtX2dlbiIsImFjYyIsIm1hcF9wb2x5IiwicmVjb3JkIiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwic2V4cF8wMDQiLCJmaWVsZF9zZXhwc18wMDUiLCJwb3NfZm5hbWVfMDA2IiwicG9zX2xudW1fMDA4IiwicG9zX2JvbF8wMTAiLCJwb3NfY251bV8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDA0JDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI1IiwiZmllbGRfc2V4cF8wMTckNCIsImZpZWxkX3NleHBfMDE3IiwieF8wMjYiLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIyIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMTkiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMCIsInBvc19jbnVtXzAxMyIsInBvc19ib2xfMDExIiwicG9zX2xudW1fMDA5IiwicG9zX2ZuYW1lXzAwNyIsInBvc19jbnVtXzAzNCIsInBvc19ib2xfMDMyIiwicG9zX2xudW1fMDMwIiwicG9zX2ZuYW1lXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImEwIiwiYTAkMCIsInYxJDIiLCJ2MSQzIiwidjIkMCIsInYxJDQiLCJ2MyQwIiwidjIkMSIsInYxJDUiLCJzaXplJDIiLCJzaXplJDMiLCJ2MiQyIiwidjEkNiIsInNpemUkNCIsInYyJDMiLCJ2MSQ3Iiwic2l6ZSQ1IiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMiIsImFyZ18xJDMiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJzZXhwX29mX3QkNiIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJiaW5fc2l6ZV90JDYiLCJiaW5fd3JpdGVfdCQ2IiwiZmFpbHdpdGhzIiwic3RyaWN0IiwiaGVyZSIsIm1lc3NhZ2UiLCJmYWlsd2l0aHAiLCJ0b19ydW4iLCJydW4iLCJzYW5pdGl6ZSIsImZsdXNoZWQiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSIsInRvX3J1biQwIiwicnVuJDAiLCJmbHVzaGVkJDAiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSQwIiwic2FuaXRpemUkMCIsIm9mX2FfMDEwIiwieF8wMTEiLCJhXzAxMiIsImJfMDEzIiwiYV8wMTYiLCJiXzAxNyIsImFfMDE0IiwiYl8wMTUiLCJvZl9hXzAxOCIsInhfMDIwIiwib2ZfYV8wMjEiLCJ4XzAyMiIsIm1hcCQxIiwiZGVmYXVsdF9zZWVkIiwiZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MiIsImdlbmVyYXRvcl8wMTIiLCJnZW5lcmF0b3JfMDEzIiwic2l6ZV8wMTYiLCJyYW5kb21fMDE3Iiwic2l6ZV8wMTQiLCJyYW5kb21fMDE1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MiIsIm9ic2VydmVyXzAwNSIsIm9ic2VydmVyXzAwNiIsInhfMDA3Iiwic2l6ZV8wMDgiLCJoYXNoXzAwOSIsImhhc2hfMDA5JDAiLCJoYXNoXzAwOSQxIiwiaGFzaF8wMDkkMiIsImhhc2hfMDA5JDMiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyIiwic2hyaW5rZXJfMDAyIiwieF8wMDQiLCJ4XzAwMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzIiwiZ2VuZXJhdG9yXzAzMyIsImdlbmVyYXRvcl8wMzQiLCJnZW5lcmF0b3JfMDM1Iiwic2l6ZV8wNDAiLCJyYW5kb21fMDQxIiwic2l6ZV8wMzgiLCJyYW5kb21fMDM5Iiwic2l6ZV8wMzYiLCJyYW5kb21fMDM3IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MyIsIm9ic2VydmVyXzAyNCIsIm9ic2VydmVyXzAyNSIsIm9ic2VydmVyXzAyNiIsInhfMDI3Iiwic2l6ZV8wMjgiLCJoYXNoXzAyOSIsInhfMDMwIiwiaGFzaF8wMjkkMCIsImhhc2hfMDI5JDEiLCJ4XzAzMSIsImhhc2hfMDI5JDIiLCJoYXNoXzAyOSQzIiwieF8wMzIiLCJoYXNoXzAyOSQ0IiwiaGFzaF8wMjkkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDMiLCJzaHJpbmtlcl8wMTgiLCJzaHJpbmtlcl8wMTkiLCJzaHJpbmtlcl8wMjAiLCJ4XzAyMSIsInhfMDIzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDQiLCJnZW5lcmF0b3JfMDYxIiwiZ2VuZXJhdG9yXzA2MiIsImdlbmVyYXRvcl8wNjMiLCJnZW5lcmF0b3JfMDY0Iiwic2l6ZV8wNzEiLCJyYW5kb21fMDcyIiwic2l6ZV8wNjkiLCJyYW5kb21fMDcwIiwic2l6ZV8wNjciLCJyYW5kb21fMDY4Iiwic2l6ZV8wNjUiLCJyYW5kb21fMDY2IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NCIsIm9ic2VydmVyXzA1MCIsIm9ic2VydmVyXzA1MSIsIm9ic2VydmVyXzA1MiIsIm9ic2VydmVyXzA1MyIsInhfMDU0Iiwic2l6ZV8wNTUiLCJoYXNoXzA1NiIsInhfMDU3IiwiaGFzaF8wNTYkMCIsImhhc2hfMDU2JDEiLCJ4XzA1OCIsImhhc2hfMDU2JDIiLCJoYXNoXzA1NiQzIiwieF8wNTkiLCJoYXNoXzA1NiQ0IiwiaGFzaF8wNTYkNSIsInhfMDYwIiwiaGFzaF8wNTYkNiIsImhhc2hfMDU2JDciLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0Iiwic2hyaW5rZXJfMDQyIiwic2hyaW5rZXJfMDQzIiwic2hyaW5rZXJfMDQ0Iiwic2hyaW5rZXJfMDQ1IiwieF8wNDYiLCJ4XzA0NyIsInhfMDQ4IiwieF8wNDkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NSIsImdlbmVyYXRvcl8wOTYiLCJnZW5lcmF0b3JfMDk3IiwiZ2VuZXJhdG9yXzA5OCIsImdlbmVyYXRvcl8wOTkiLCJnZW5lcmF0b3JfMTAwIiwic2l6ZV8xMDkiLCJyYW5kb21fMTEwIiwic2l6ZV8xMDciLCJyYW5kb21fMTA4Iiwic2l6ZV8xMDUiLCJyYW5kb21fMTA2Iiwic2l6ZV8xMDMiLCJyYW5kb21fMTA0Iiwic2l6ZV8xMDEiLCJyYW5kb21fMTAyIiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NSIsIm9ic2VydmVyXzA4MyIsIm9ic2VydmVyXzA4NCIsIm9ic2VydmVyXzA4NSIsIm9ic2VydmVyXzA4NiIsIm9ic2VydmVyXzA4NyIsInhfMDg4Iiwic2l6ZV8wODkiLCJoYXNoXzA5MCIsInhfMDkxIiwiaGFzaF8wOTAkMCIsImhhc2hfMDkwJDEiLCJ4XzA5MiIsImhhc2hfMDkwJDIiLCJoYXNoXzA5MCQzIiwiaGFzaF8wOTAkNCIsImhhc2hfMDkwJDUiLCJoYXNoXzA5MCQ2IiwiaGFzaF8wOTAkNyIsInhfMDk1IiwiaGFzaF8wOTAkOCIsImhhc2hfMDkwJDkiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1Iiwic2hyaW5rZXJfMDczIiwic2hyaW5rZXJfMDc0Iiwic2hyaW5rZXJfMDc1Iiwic2hyaW5rZXJfMDc2Iiwic2hyaW5rZXJfMDc3IiwieF8wNzgiLCJ4XzA3OSIsInhfMDgwIiwieF8wODEiLCJ4XzA4MiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2IiwiZ2VuZXJhdG9yXzEzOCIsImdlbmVyYXRvcl8xMzkiLCJnZW5lcmF0b3JfMTQwIiwiZ2VuZXJhdG9yXzE0MSIsImdlbmVyYXRvcl8xNDIiLCJnZW5lcmF0b3JfMTQzIiwic2l6ZV8xNTQiLCJyYW5kb21fMTU1Iiwic2l6ZV8xNTIiLCJyYW5kb21fMTUzIiwic2l6ZV8xNTAiLCJyYW5kb21fMTUxIiwic2l6ZV8xNDgiLCJyYW5kb21fMTQ5Iiwic2l6ZV8xNDYiLCJyYW5kb21fMTQ3Iiwic2l6ZV8xNDQiLCJyYW5kb21fMTQ1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NiIsIm9ic2VydmVyXzEyMyIsIm9ic2VydmVyXzEyNCIsIm9ic2VydmVyXzEyNSIsIm9ic2VydmVyXzEyNiIsIm9ic2VydmVyXzEyNyIsIm9ic2VydmVyXzEyOCIsInhfMTI5Iiwic2l6ZV8xMzAiLCJoYXNoXzEzMSIsInhfMTMyIiwiaGFzaF8xMzEkMCIsImhhc2hfMTMxJDEiLCJ4XzEzMyIsImhhc2hfMTMxJDIiLCJoYXNoXzEzMSQzIiwieF8xMzQiLCJoYXNoXzEzMSQ0IiwiaGFzaF8xMzEkNSIsInhfMTM1IiwiaGFzaF8xMzEkNiIsImhhc2hfMTMxJDciLCJ4XzEzNiIsImhhc2hfMTMxJDgiLCJoYXNoXzEzMSQ5IiwieF8xMzciLCJoYXNoXzEzMSQxMCIsImhhc2hfMTMxJDExIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NiIsInNocmlua2VyXzExMSIsInNocmlua2VyXzExMiIsInNocmlua2VyXzExMyIsInNocmlua2VyXzExNCIsInNocmlua2VyXzExNSIsInNocmlua2VyXzExNiIsInhfMTE3IiwieF8xMTgiLCJ4XzExOSIsInhfMTIwIiwieF8xMjEiLCJ4XzEyMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMiIsImdlbmVyYXRvcl8xNjYiLCJnZW5lcmF0b3JfMTY3Iiwic2l6ZV8xNjgiLCJyYW5kb21fMTY5IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTIiLCJvYnNlcnZlcl8xNjAiLCJvYnNlcnZlcl8xNjEiLCJzaXplXzE2NCIsImhhc2hfMTY1IiwieF8xNjMiLCJ4XzE2MiIsImhhc2hfMTY1JDAiLCJoYXNoXzE2NSQxIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTIiLCJzaHJpbmtlcl8xNTYiLCJzaHJpbmtlcl8xNTciLCJ4XzE1OSIsInhfMTU4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzIiwiZ2VuZXJhdG9yXzE4NCIsImdlbmVyYXRvcl8xODUiLCJnZW5lcmF0b3JfMTg2Iiwic2l6ZV8xODciLCJyYW5kb21fMTg4IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTMiLCJvYnNlcnZlcl8xNzYiLCJvYnNlcnZlcl8xNzciLCJvYnNlcnZlcl8xNzgiLCJzaXplXzE4MiIsImhhc2hfMTgzIiwieF8xODEiLCJ4XzE4MCIsInhfMTc5IiwiaGFzaF8xODMkMCIsImhhc2hfMTgzJDEiLCJoYXNoXzE4MyQyIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTMiLCJzaHJpbmtlcl8xNzAiLCJzaHJpbmtlcl8xNzEiLCJzaHJpbmtlcl8xNzIiLCJ4XzE3NSIsInhfMTc0IiwieF8xNzMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTQiLCJnZW5lcmF0b3JfMjA3IiwiZ2VuZXJhdG9yXzIwOCIsImdlbmVyYXRvcl8yMDkiLCJnZW5lcmF0b3JfMjEwIiwic2l6ZV8yMTEiLCJyYW5kb21fMjEyIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTQiLCJvYnNlcnZlcl8xOTciLCJvYnNlcnZlcl8xOTgiLCJvYnNlcnZlcl8xOTkiLCJvYnNlcnZlcl8yMDAiLCJzaXplXzIwNSIsImhhc2hfMjA2IiwieF8yMDQiLCJ4XzIwMyIsInhfMjAyIiwieF8yMDEiLCJoYXNoXzIwNiQwIiwiaGFzaF8yMDYkMSIsImhhc2hfMjA2JDIiLCJoYXNoXzIwNiQzIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTQiLCJzaHJpbmtlcl8xODkiLCJzaHJpbmtlcl8xOTAiLCJzaHJpbmtlcl8xOTEiLCJzaHJpbmtlcl8xOTIiLCJ4XzE5NiIsInhfMTk1IiwieF8xOTQiLCJ4XzE5MyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNSIsImdlbmVyYXRvcl8yMzUiLCJnZW5lcmF0b3JfMjM2IiwiZ2VuZXJhdG9yXzIzNyIsImdlbmVyYXRvcl8yMzgiLCJnZW5lcmF0b3JfMjM5Iiwic2l6ZV8yNDAiLCJyYW5kb21fMjQxIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTUiLCJvYnNlcnZlcl8yMjMiLCJvYnNlcnZlcl8yMjQiLCJvYnNlcnZlcl8yMjUiLCJvYnNlcnZlcl8yMjYiLCJvYnNlcnZlcl8yMjciLCJzaXplXzIzMyIsImhhc2hfMjM0IiwieF8yMzIiLCJ4XzIzMSIsInhfMjMwIiwieF8yMjkiLCJ4XzIyOCIsImhhc2hfMjM0JDAiLCJoYXNoXzIzNCQxIiwiaGFzaF8yMzQkMiIsImhhc2hfMjM0JDMiLCJoYXNoXzIzNCQ0IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTUiLCJzaHJpbmtlcl8yMTMiLCJzaHJpbmtlcl8yMTQiLCJzaHJpbmtlcl8yMTUiLCJzaHJpbmtlcl8yMTYiLCJzaHJpbmtlcl8yMTciLCJ4XzIyMiIsInhfMjIxIiwieF8yMjAiLCJ4XzIxOSIsInhfMjE4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2IiwiZ2VuZXJhdG9yXzI2OCIsImdlbmVyYXRvcl8yNjkiLCJnZW5lcmF0b3JfMjcwIiwiZ2VuZXJhdG9yXzI3MSIsImdlbmVyYXRvcl8yNzIiLCJnZW5lcmF0b3JfMjczIiwic2l6ZV8yNzQiLCJyYW5kb21fMjc1IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTYiLCJvYnNlcnZlcl8yNTQiLCJvYnNlcnZlcl8yNTUiLCJvYnNlcnZlcl8yNTYiLCJvYnNlcnZlcl8yNTciLCJvYnNlcnZlcl8yNTgiLCJvYnNlcnZlcl8yNTkiLCJzaXplXzI2NiIsImhhc2hfMjY3IiwieF8yNjUiLCJ4XzI2NCIsInhfMjYzIiwieF8yNjIiLCJ4XzI2MSIsInhfMjYwIiwiaGFzaF8yNjckMCIsImhhc2hfMjY3JDEiLCJoYXNoXzI2NyQyIiwiaGFzaF8yNjckMyIsImhhc2hfMjY3JDQiLCJoYXNoXzI2NyQ1IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTYiLCJzaHJpbmtlcl8yNDIiLCJzaHJpbmtlcl8yNDMiLCJzaHJpbmtlcl8yNDQiLCJzaHJpbmtlcl8yNDUiLCJzaHJpbmtlcl8yNDYiLCJzaHJpbmtlcl8yNDciLCJ4XzI1MyIsInhfMjUyIiwieF8yNTEiLCJ4XzI1MCIsInhfMjQ5IiwieF8yNDgiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjIiLCJvYnNlcnZlcl8yODIiLCJvYnNlcnZlcl8yODMiLCJnZW5lcmF0b3JfMjg0IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4zIiwib2JzZXJ2ZXJfMjkzIiwib2JzZXJ2ZXJfMjk0Iiwib2JzZXJ2ZXJfMjk1IiwiZ2VuZXJhdG9yXzI5NiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNCIsIm9ic2VydmVyXzMwNyIsIm9ic2VydmVyXzMwOCIsIm9ic2VydmVyXzMwOSIsIm9ic2VydmVyXzMxMCIsImdlbmVyYXRvcl8zMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjUiLCJvYnNlcnZlcl8zMjQiLCJvYnNlcnZlcl8zMjUiLCJvYnNlcnZlcl8zMjYiLCJvYnNlcnZlcl8zMjciLCJvYnNlcnZlcl8zMjgiLCJnZW5lcmF0b3JfMzI5IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm42Iiwib2JzZXJ2ZXJfMzQ0Iiwib2JzZXJ2ZXJfMzQ1Iiwib2JzZXJ2ZXJfMzQ2Iiwib2JzZXJ2ZXJfMzQ3Iiwib2JzZXJ2ZXJfMzQ4Iiwib2JzZXJ2ZXJfMzQ5IiwiZ2VuZXJhdG9yXzM1MCIsIm9mX2hhc2giLCJNIiwib2ZfcHJlZGljYXRlIiwic2luZ2xldG9uIiwiZG91YmxldG9uIiwiZW51bSQwIiwibGlzdCIsIm9mX2Z1biIsImNvbXBhcmlzb24iLCJlcSIsImx0IiwiZ3QiLCJjIiwicmV0dXJuJDAiLCJzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCIsInNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCIsInNpbmdsZXRvbiQwIiwiZG91YmxldG9uJDAiLCJyYW5kb20iLCJvZl9mdW4kMCIsIm9mX3NlcXVlbmNlIiwicCIsImsiLCJib3VuZGVkX2dlb21ldHJpYyIsIm1heGltdW0iLCJnZW9tZXRyaWMiLCJsaXN0X3dpdGhfbGVuZ3RoIiwiY29tcGFyZV9mbiIsImRvbSIsImdldF9pbmRleCIsImJfMzUyIiwiYV8zNTEiLCJlcXVhbF9mbiIsImNtcCIsImVtcHR5Iiwibm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSIsInJhbmRvbV9zdGF0ZV9vZl9zZWVkIiwic2VlZCIsInN0ciIsIm1ha2Vfc2VlZCIsInN0cmluZyIsIm1ha2Vfc2hyaW5rX2NvdW50IiwibWFrZV9jb25maWciLCJzaXplcyIsInRyaWFscyIsInNocmlua19hdHRlbXB0cyIsIm1ha2VfdGVzdF9tIiwiZ2VuIiwic2hyaW5rZXIiLCJzZXhwX29mIiwicmFuZG9tX3ZhbHVlIiwic3RoJDAiLCJyYW5kb21fc2VxdWVuY2UiLCJjb25maWciLCJzZXF1ZW5jZSIsInRlc3QiLCJleGFtcGxlcyIsInRlc3RfbSIsInRlc3Rfb3JfZXJyb3IiLCJ0ZXN0X2Rpc3RpbmN0X3ZhbHVlcyIsImRpc3RpbmN0X3ZhbHVlcyIsInNldCQwIiwiYWN0dWFsX2NvdW50Iiwic2V4cF9vZl9lbHQiLCJ4XzM1MyIsInZhbHVlcyIsIm1hdGNoIiwicmVzIiwiaCIsInRlc3RfY2FuX2dlbmVyYXRlIiwic2V4cF9vZl92YWx1ZSIsInhfMzU0IiwiZGVmYXVsdF90cmlhbF9jb3VudCIsImRlZmF1bHRfc2l6ZXMiLCJjb21wYXJlX2EiLCJjb21wYXJlX2IiLCJ0XzAwNiIsInRfMDA1IiwidF8wMDgiLCJ0XzAwNyIsImdlbl9ub25fZW1wdHkiLCJnZW5fd2l0aF9sZW5ndGgiLCJnZW5fZmlsdGVyZWQiLCJnZW5fcGVybXV0YXRpb25zIiwiZ2VuZXJhdGVfYSIsIm9ic2VydmVfYSIsInNocmlua19hIiwibW9kdWxlX25hbWUkMCIsIm1vZHVsZV9uYW1lIiwiaGFzaGFibGVfcyIsImZpbmRfbXVsdGkiLCJyZW1vdmVfbXVsdGkiLCJhZGRfbXVsdGkiLCJkZWNyIiwiaW5jciIsInRvX2FsaXN0Iiwic2ltaWxhciIsImZpbHRlcl9tYXBpX2lucGxhY2UiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJmaWx0ZXJpX2lucGxhY2UiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJkYXRhIiwia2V5cyIsIm1lcmdlX2ludG8iLCJmaW5kX2FuZF9yZW1vdmUiLCJmaW5kaV9hbmRfY2FsbDIiLCJmaW5kaV9hbmRfY2FsbDEiLCJmaW5kaV9hbmRfY2FsbCIsImZpbmRfYW5kX2NhbGwyIiwiZmluZF9hbmRfY2FsbDEiLCJmaW5kX2FuZF9jYWxsIiwiZmluZGlfb3JfYWRkIiwiZmluZF9vcl9hZGQiLCJwYXJ0aXRpb25fbWFwaSIsInBhcnRpdGlvbl9tYXAiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9leG4iLCJjaG9vc2UiLCJyZW1vdmUiLCJpdGVyX2tleXMiLCJjbGVhciIsInNleHBfb2Zfa2V5IiwiY3JlYXRlX3dpdGhfa2V5X2V4biIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV9tYXBwZWQiLCJvZl9hbGlzdF9tdWx0aSIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X29yX2Vycm9yIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIiwib2ZfYWxpc3QiLCJoYXNoX3BhcmFtIiwidmFsaWRhdGUiLCJncm93dGhfYWxsb3dlZCIsImhhc2hhYmxlIiwib2ZfYWxpc3QkMCIsImwiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMkMCIsIm9mX2FsaXN0X29yX2Vycm9yJDAiLCJvZl9hbGlzdF9leG4kMCIsIm9mX2FsaXN0X211bHRpJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwiY29tYmluZSIsImJpbl9zaGFwZV9lbCIsImJpbl9zaXplX2VsIiwiYmluX3dyaXRlX2VsIiwiYmluX3JlYWRfZWwiLCJpdGVyJDEiLCJrZXkiLCJuZXh0IiwiaW52YXJpYW50X2tleSIsInNleHBfb2ZfdiIsInZfb2Zfc2V4cCIsImVxdWFsX21fdCIsIm1fdF9zZXhwX2dyYW1tYXIiLCJtX3Rfb2Zfc2V4cCIsInNleHBfb2ZfbV90Iiwib2ZfYWxpc3Rfb3B0aW9uIiwiYWxpc3QiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9tX3QiLCJLZXkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhIiwic2l6ZV8wMDQiLCJyYW5kb21fMDA1IiwicXVpY2tjaGVja19vYnNlcnZlcl9tX3QiLCJxdWlja2NoZWNrX29ic2VydmVyX2RhdGEiLCJ4XzAwNiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfbV90IiwicXVpY2tjaGVja19zaHJpbmtlcl9kYXRhIiwiaGFzaGFibGUkMCIsIm9mX2xpc3QkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJzaXplX29mX2siLCJzaXplX29mX3YiLCJhcmdzJDAiLCJzaXplX2FyZ3MkMCIsImFyZ3MkMSIsInNpemVfYXJncyQxIiwid3JpdGVfayIsIndyaXRlX3YiLCJiaW5fd3JpdGVyX2siLCJiaW5fd3JpdGVyX3YiLCJvZl9rIiwib2ZfdiIsImJpbl9yZWFkZXJfayIsImJpbl9yZWFkZXJfdiIsImJpbl9rIiwiYmluX3YiLCJjbXBfayIsImNtcF92IiwidF8wMDQiLCJ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3IiwicmlnaHRfMDEyIiwibGVmdF8wMTEiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxMCIsImxlZnRfMDA5Iiwib2Zfa18wMTciLCJvZl92XzAxOCIsInNleHBfMDQ1IiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwiYXRvbV8wMjEiLCJzZXhwX2FyZ3NfMDI0IiwiYXRvbV8wMjEkMCIsImFyZzBfMDMyIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwicmVzMF8wMzMiLCJhcmcwXzAzNSIsInJlczBfMDM2IiwiYXJnMF8wMzgiLCJyZXMxXzA0NCIsIm9mX2tfMDQ2Iiwib2Zfdl8wNDciLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJ2XzA0OCIsInJlczFfMDU4Iiwidl8wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMF8wNTMiLCJyZXMxXzA1NCIsInZfMDQ5IiwiZGlmZiIsImskMCIsImRpZmYkMCIsInYkMCIsIm1hcF9kYXRhIiwibGVmdCIsInJpZ2h0IiwiZ2VuX3RyZWUiLCJjb21wYXJhdG9yIiwia19nZW4iLCJ2X2dlbiIsIm9ic190cmVlIiwia19vYnMiLCJ2X29icyIsInNocl90cmVlIiwia19zaHIiLCJ2X3NociIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJoYXNoX2ZvbGRfZGlyZWN0Iiwib2ZfaGFzaHRibF9leG4iLCJoYXNodGJsIiwidHJlZV9vZl9oYXNodGJsX2V4biIsImtleV9zZXQiLCJrZXlfc2V0X29mX3RyZWUiLCJvZl9rZXlfc2V0IiwidHJlZV9vZl9rZXlfc2V0IiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsInRvX3RyZWUkMCIsInJhbmsiLCJudGhfZXhuIiwibnRoIiwiY2xvc2VzdF9rZXkiLCJyYW5nZV90b19hbGlzdCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwic3VicmFuZ2UiLCJzcGxpdCIsIm1heF9lbHRfZXhuIiwibWluX2VsdF9leG4iLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwic3ltbWV0cmljX2RpZmYiLCJtZXJnZV9za2V3ZWQiLCJrZXlzJDAiLCJjb21wYXJlX2RpcmVjdCIsImNvbWJpbmVfZXJyb3JzIiwiZm9sZDIiLCJpdGVyMiIsIml0ZXJpX3VudGlsIiwiaW52YXJpYW50cyIsInZhbGlkYXRlaSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMCIsImtleV9zZXQkMCIsImtleV9zZXQkMSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVtcHR5JDAiLCJvZl9hbGlzdF9mb2xkJDAiLCJvZl9hbGlzdF9yZWR1Y2UkMCIsIm9mX2l0ZXJpJDAiLCJvZl9pdGVyaV9leG4kMCIsIm9mX3NvcnRlZF9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJmb3JfYWxsaSQwIiwiZXhpc3RzaSQwIiwiY291bnQkMCIsImNvdW50aSQwIiwic3BsaXQkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwidG9fdHJlZSIsImRhdGFfZXF1YWwiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJtaW4iLCJtYXgiLCJvcmRlciIsImtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byIsImtleXNfbGVzc19vcl9lcXVhbF90byIsImhvdyIsInNlZ21lbnRfb2YiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImluaXRfZm9yX2Jpbl9wcm90IiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2Zfc29ydGVkX2FycmF5JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX2FsaXN0JDEiLCJvZl9hbGlzdF9vcl9lcnJvciQxIiwib2ZfYWxpc3RfZXhuJDEiLCJvZl9hbGlzdF9tdWx0aSQxIiwib2ZfYWxpc3RfZm9sZCQxIiwib2ZfYWxpc3RfcmVkdWNlJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9rZXlfc2V0JDEiLCJ0b190cmVlJDIiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDEiLCJzZXQkMSIsImFkZCQxIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJmaW5kX2V4biQxIiwiZmluZCQxIiwicmVtb3ZlJDEiLCJtZW0kMSIsIml0ZXJfa2V5cyQxIiwiaXRlciQyIiwiaXRlcmkkMSIsIml0ZXJpX3VudGlsJDEiLCJpdGVyMiQxIiwibWFwJDIiLCJtYXBpJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlciQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcCQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJwYXJ0aXRpb25fdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJjb21wYXJlX2RpcmVjdCQxIiwia2V5cyQyIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsInZhbGlkYXRlJDEiLCJ2YWxpZGF0ZWkkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImZvcl9hbGwkMSIsImZvcl9hbGxpJDEiLCJleGlzdHMkMSIsImV4aXN0c2kkMSIsImNvdW50JDEiLCJjb3VudGkkMSIsInNwbGl0JDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInRfc2V4cF9ncmFtbWFyJDAiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxMCIsImVycm9yX3NvdXJjZV8wNTQiLCJzZXhwXzAxMiIsInRhZ18wMTMiLCJzZXhwX2FyZ3NfMDE0Iiwic2V4cF9hcmdzXzAxOSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJvZl9hXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjciLCJ4JDEiLCJnZW5lcmF0b3JfMDQ0Iiwic2l6ZV8wNDkiLCJyYW5kb21fMDUwIiwic2l6ZV8wNDciLCJyYW5kb21fMDQ4Iiwic2l6ZV8wNDUiLCJyYW5kb21fMDQ2Iiwib2JzZXJ2ZXJfMDM4IiwieF8wMzkiLCJoYXNoXzA0MSIsImhhc2hfMDQxJDAiLCJoYXNoXzA0MSQxIiwiaGFzaF8wNDEkMiIsImhhc2hfMDQxJDMiLCJoYXNoXzA0MSQ0Iiwic2hyaW5rZXJfMDM1IiwieF8wMzYiLCJ4XzAzNyIsIm9mX2FfMDUxIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsIm9mX2FfMDY3IiwiYXJnMF8wNjgiLCJyZXMwXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImVsdF9nZW4iLCJlbHRfb2JzIiwiZWx0X3NociIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInRvX21hcCIsIm9mX21hcF9rZXlzIiwib2ZfaGFzaF9zZXQiLCJoc2V0Iiwib2ZfaGFzaHRibF9rZXlzIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInJlbW92ZV9pbmRleCQwIiwiZ3JvdXBfYnkkMCIsImNob29zZV9leG4kMCIsImNob29zZSQwIiwiZWxlbWVudHMkMCIsImFyZV9kaXNqb2ludCQwIiwiaXNfc3Vic2V0JDAiLCJpbnRlciQwIiwidW5pb24kMCIsInRvX2FycmF5JDAiLCJmaW5kX21hcCQwIiwic3VtJDAiLCJmb2xkX3Jlc3VsdCQwIiwidG9fbWFwJDAiLCJ1bmlvbiQxIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMSIsImRpZmYkMSIsInN1bSQxIiwiZmluZF9tYXAkMSIsInJlbW92ZV9pbmRleCQxIiwiaXNfc3Vic2V0JDEiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2FycmF5JDAiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDEiLCJlbGVtZW50cyQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJncm91cF9ieSQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQxIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwib2ZfYXJyYXkiLCJzdGFibGVfZGVkdXBfbGlzdCIsInhzIiwib2YiLCJlcXVpdiIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwidCQwIiwiZWxlbWVudHMiLCJ1bmlvbiIsImludGVyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiZ3JvdXBfYnkiLCJyZW1vdmVfaW5kZXgiLCJtZXJnZV90b19zZXF1ZW5jZSIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwiaW52YXJpYW50cyQyIiwibGVuZ3RoJDIiLCJpc19lbXB0eSQyIiwiZWxlbWVudHMkMiIsIm1pbl9lbHQkMiIsIm1pbl9lbHRfZXhuJDIiLCJtYXhfZWx0JDIiLCJtYXhfZWx0X2V4biQyIiwiY2hvb3NlJDIiLCJjaG9vc2VfZXhuJDIiLCJ0b19saXN0JDIiLCJ0b19hcnJheSQyIiwiaXRlciQzIiwiaXRlcjIkMiIsImV4aXN0cyQyIiwiZm9yX2FsbCQyIiwiY291bnQkMiIsInN1bSQyIiwiZmluZCQyIiwiZmluZF9leG4kMiIsImZpbmRfbWFwJDIiLCJmb2xkJDIiLCJmb2xkX3VudGlsJDIiLCJmb2xkX3JpZ2h0JDIiLCJmb2xkX3Jlc3VsdCQyIiwibWFwJDMiLCJmaWx0ZXIkMiIsImZpbHRlcl9tYXAkMyIsInBhcnRpdGlvbl90ZiQyIiwibWVtJDIiLCJhZGQkMiIsInJlbW92ZSQyIiwidW5pb24kMiIsImludGVyJDIiLCJkaWZmJDIiLCJzeW1tZXRyaWNfZGlmZiQyIiwiY29tcGFyZV9kaXJlY3QkMiIsImVxdWFsJDIiLCJpc19zdWJzZXQkMiIsImFyZV9kaXNqb2ludCQyIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2hhc2hfc2V0JDMiLCJvZl9oYXNodGJsX2tleXMkMyIsIm9mX2FycmF5JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwidW5pb25fbGlzdCQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsImdyb3VwX2J5JDIiLCJzcGxpdCQyIiwibnRoJDIiLCJyZW1vdmVfaW5kZXgkMiIsIm9mX3RyZWUkMyIsInRvX3NlcXVlbmNlJDIiLCJiaW5hcnlfc2VhcmNoJDIiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQyIiwibWVyZ2VfdG9fc2VxdWVuY2UkMiIsIm9mX21hcF9rZXlzJDMiLCJ0b19tYXAkMiIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwic3RhYmxlX2RlZHVwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhXzAxMCIsImJfMDExIiwibm9uZSIsInNvbWUiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInIxIiwidDEkMCIsInIyIiwidDIkMCIsIm4xIiwibjIiLCJpc19jb21wcmVzc2VkIiwicGh5c19lcXVhbCIsInVuaW9uX2ZpbmRfZ2V0X2NoZWNrX25vX3BlbmRpbiIsImNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyIsImluY3JfbGVuZ3RoIiwiaW5jcl9wZW5kaW5nX2l0ZXJzIiwiZGVjcl9wZW5kaW5nX2l0ZXJzIiwid2l0aF9pdGVyYXRpb25fMiIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiaXNfZmlyc3QiLCJpc19sYXN0IiwibWVtX2VsdCIsInByZXYkMCIsImluc2VydF9hZnRlciQwIiwiaW5zZXJ0X2JlZm9yZSQwIiwibmV3X2VsdCIsImluc2VydF9lbXB0eSIsImluc2VydF9sYXN0IiwiaW5zZXJ0X2ZpcnN0IiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZmlyc3QiLCJzZWNvbmQiLCJuZXdfdCIsInZhbHVlJDAiLCJtb3ZlX2JlZm9yZSIsImFuY2hvciIsImFmdGVyX2VsdCIsIm1vdmVfdG9fZnJvbnQiLCJtb3ZlX2FmdGVyIiwibW92ZV90b19iYWNrIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJ0XzAxOCIsInRfMDE3IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdmFsdWUiLCJ2X3RleHQiLCJvZl90ZXh0IiwidmFsdWVfb2Zfc2V4cCIsInRleHQiLCJmaWxlbmFtZSIsImFubm90YXRlZCIsInRfc2V4cF9ncmFtbWFyJDEiLCJvZl92YWx1ZSIsImJpbl9zaGFwZV9ub19yYWlzZSIsImJpbl9zaXplX25vX3JhaXNlIiwiYmluX3dyaXRlX25vX3JhaXNlIiwiYmluX3dyaXRlcl9ub19yYWlzZSIsImJpbl9yZWFkX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UkMCIsImJpbl9yZWFkZXJfbm9fcmFpc2UiLCJiaW5fbm9fcmFpc2UiLCJub19yYWlzZV9vZl9zZXhwIiwib2ZfYV8wMTkiLCJzZXhwX29mX25vX3JhaXNlIiwib2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjIiwib2Zfc2V4cCIsInNleHBfb2ZfZGF0YSIsImFyZzFfMDAyIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImt2IiwicmVhZCIsImVuc3VyZV9jYW5fbW9kaWZ5IiwibG9va3VwIiwibG9va3VwX2V4biIsImVucXVldWUiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlX2JhY2siLCJlbnF1ZXVlX2Zyb250IiwiZW5xdWV1ZV9leG4iLCJlbnF1ZXVlX2JhY2tfZXhuIiwiZW5xdWV1ZV9mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFjayIsImxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQiLCJkZXF1ZXVlX3dpdGhfa2V5IiwibWF5YmVfa3YiLCJkZXF1ZXVlX3dpdGhfa2V5X2V4biIsImRlcXVldWVfYmFja193aXRoX2tleSIsImRlcXVldWVfYmFja193aXRoX2tleV9leG4iLCJkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9iYWNrIiwiZGVxdWV1ZV9mcm9udCIsImxhc3Rfd2l0aF9rZXkiLCJmaXJzdF93aXRoX2tleSIsImRlcXVldWVfZXhuIiwiZGVxdWV1ZV9iYWNrX2V4biIsImRlcXVldWVfZnJvbnRfZXhuIiwiYWMiLCJkZXF1ZXVlX2FsbCIsInJlbW92ZV9leG4iLCJsb29rdXBfYW5kX3JlbW92ZSIsInJlcGxhY2UiLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwiZXNjYXBlZCIsImNvbnRhaW5zIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsImluZGV4IiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tIiwicmluZGV4X2Zyb21fZXhuIiwic3Vic3RyX2luZGV4Iiwic3Vic3RyX2luZGV4X2V4biIsInN1YnN0cl9pbmRleF9hbGwiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCIsInN1YnN0cl9yZXBsYWNlX2FsbCIsImlzX3N1YnN0cmluZyIsImlzX3N1YnN0cmluZ19hdCIsInRvX2xpc3RfcmV2IiwiaXNfc3VmZml4IiwiaXNfcHJlZml4IiwibHNwbGl0Ml9leG4iLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJyc3BsaXQyIiwic3BsaXRfb25fY2hhcnMiLCJzcGxpdF9saW5lcyIsImxmaW5kaSIsInJmaW5kaSIsImxzdHJpcCIsInJzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNob3Bfc3VmZml4X2V4biIsImNob3BfcHJlZml4X2V4biIsImNob3Bfc3VmZml4IiwiY2hvcF9wcmVmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJzdWZmaXgiLCJwcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImRyb3BfcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4X2xlbmd0aCIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4MiIsImNvbW1vbl9zdWZmaXgyX2xlbmd0aCIsImNvbW1vbl9wcmVmaXgyX2xlbmd0aCIsImNvbmNhdF9hcnJheSIsIm9mX2NoYXIiLCJvZl9jaGFyX2xpc3QiLCJpc19zdWZmaXgkMCIsImlzX3ByZWZpeCQwIiwiaXNfc3Vic3RyaW5nJDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsInN1YnN0cl9pbmRleCQwIiwic3Vic3RyX2luZGV4X2V4biQwIiwic3Vic3RyX2luZGV4X2FsbCQwIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QkMCIsInN1YnN0cl9yZXBsYWNlX2FsbCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRhZzIiLCJ2YWxpZGF0ZV9vcmRpbmFyeSIsInJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSIsInJvYnVzdGx5X2NvbXBhcmUiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJyb2J1c3RseV9jb21wYXJlJDAiLCJyb2J1c3Rfc2lnbiIsInRvX3N0cmluZ18xMiIsImdlbl91bmlmb3JtX2V4Y2wiLCJnZW5faW5jbCIsImdlbl93aXRob3V0X25hbiIsImdlbl9maW5pdGUiLCJnZW5fcG9zaXRpdmUiLCJnZW5fbmVnYXRpdmUiLCJnZW5femVybyIsImdlbl9uYW4iLCJnZW5fc3Vibm9ybWFsIiwiZ2VuX25vcm1hbCIsImdlbl9pbmZpbml0ZSIsIm9mX2Zsb2F0IiwidG9fZmxvYXQiLCJ0b19pbnRfZXhuIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiYmluZCIsImpvaW4iLCJpZ25vcmVfbSIsImFsbF91bml0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsInV3IiwicGh5c19zYW1lIiwiYnByaW50ZiIsImNvbnN0JDAiLCJlcnJvciIsImVycm9yX3MiLCJmb3JjZSIsImlkZW50IiwiaW52YWxpZF9hcmdmIiwiaWZwcmludGYiLCJpc19ub25lIiwiaXNfc29tZSIsImtzcHJpbnRmIiwib2tfZXhuIiwicHJpbnRfcyIsImVwcmludF9zIiwicHJvdGVjdCIsInByb3RlY3R4IiwicmFpc2VfcyIsInNwcmludGYiLCJzdGFnZSIsInVuc3RhZ2UiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheSIsImJpbl93cml0ZV9hcnJheSIsImJpbl93cml0ZXJfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImJpbl9yZWFkX2FycmF5JDAiLCJiaW5fcmVhZGVyX2FycmF5IiwiYmluX2FycmF5IiwiY29tcGFyZV9hcnJheSIsImVxdWFsX2FycmF5IiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJhX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ib29sIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2l6ZV9jaGFyIiwiYmluX3dyaXRlX2NoYXIiLCJiaW5fd3JpdGVyX2NoYXIiLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRlcl9jaGFyIiwiYmluX2NoYXIiLCJjb21wYXJlX2NoYXIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfY2hhciIsImVxdWFsX2NoYXIiLCJjaGFyX29mX3NleHAiLCJzZXhwX29mX2NoYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3dyaXRlX2Zsb2F0IiwiYmluX3dyaXRlcl9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0IiwiYmluX3JlYWRfZmxvYXQkMCIsImJpbl9yZWFkZXJfZmxvYXQiLCJiaW5fZmxvYXQiLCJjb21wYXJlX2Zsb2F0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mbG9hdCIsImVxdWFsX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsInNleHBfb2ZfZmxvYXQiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Zsb2F0IiwiYmluX3NoYXBlX2ludCIsImJpbl9zaXplX2ludCIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVyX2ludCIsImJpbl9yZWFkX2ludCIsImJpbl9yZWFkX2ludCQwIiwiYmluX3JlYWRlcl9pbnQiLCJiaW5faW50IiwiY29tcGFyZV9pbnQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9pbnQiLCJlcXVhbF9pbnQiLCJpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaW50IiwiaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NpemVfaW50MzIiLCJiaW5fd3JpdGVfaW50MzIiLCJiaW5fd3JpdGVyX2ludDMyIiwiYmluX3JlYWRfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiQwIiwiYmluX3JlYWRlcl9pbnQzMiIsImJpbl9pbnQzMiIsImNvbXBhcmVfaW50MzIiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ludDMyIiwiZXF1YWxfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwic2V4cF9vZl9pbnQzMiIsImludDMyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50MzIiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2l6ZV9pbnQ2NCIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZXJfaW50NjQiLCJiaW5fcmVhZF9pbnQ2NCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZGVyX2ludDY0IiwiYmluX2ludDY0IiwiY29tcGFyZV9pbnQ2NCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfaW50NjQiLCJlcXVhbF9pbnQ2NCIsImludDY0X29mX3NleHAiLCJzZXhwX29mX2ludDY0IiwiaW50NjRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQ2NCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fd3JpdGVfbGF6eV90IiwiYmluX3dyaXRlcl9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QkMCIsImJpbl9yZWFkZXJfbGF6eV90IiwiYmluX2xhenlfdCIsImNvbXBhcmVfbGF6eV90IiwiYV8wNDYiLCJiXzA0NyIsImFfMDQ4IiwiYl8wNDkiLCJoYXNoX2ZvbGRfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJzZXhwX29mX2xhenlfdCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2xhenlfdCIsImJpbl9zaGFwZV9saXN0IiwiYmluX3NpemVfbGlzdCIsImJpbl93cml0ZV9saXN0IiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRfbGlzdCIsImJpbl9yZWFkX2xpc3QkMCIsImJpbl9yZWFkZXJfbGlzdCIsImJpbl9saXN0IiwiY29tcGFyZV9saXN0IiwiYV8wNTUiLCJiXzA1NiIsImFfMDU3IiwiYl8wNTgiLCJoYXNoX2ZvbGRfbGlzdCIsImVxdWFsX2xpc3QiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiZnVuYyQ1IiwiaGFzaF9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsInNleHBfb2ZfbmF0aXZlaW50IiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfbmF0aXZlaW50IiwiYmluX3NoYXBlX29wdGlvbiIsImJpbl9zaXplX29wdGlvbiIsImJpbl93cml0ZV9vcHRpb24iLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiQwIiwiYmluX3JlYWRlcl9vcHRpb24iLCJiaW5fb3B0aW9uIiwiY29tcGFyZV9vcHRpb24iLCJhXzA3MyIsImJfMDc0IiwiYV8wNzUiLCJiXzA3NiIsImVxdWFsX29wdGlvbiIsImFfMDc3IiwiYl8wNzgiLCJhXzA3OSIsImJfMDgwIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImhhc2hfZm9sZF9zdHJpbmciLCJmdW5jJDYiLCJoYXNoX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2l6ZV9ieXRlcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZXJfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZGVyX2J5dGVzIiwiYmluX2J5dGVzIiwiY29tcGFyZV9ieXRlcyIsImVxdWFsX2J5dGVzIiwiYnl0ZXNfb2Zfc2V4cCIsInNleHBfb2ZfYnl0ZXMiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2J5dGVzIiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaXplX3JlZiIsImJpbl93cml0ZV9yZWYiLCJiaW5fd3JpdGVyX3JlZiIsImJpbl9yZWFkX3JlZiIsImJpbl9yZWFkX3JlZiQwIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVmIiwiY29tcGFyZV9yZWYiLCJhXzA5NiIsImJfMDk3IiwiYV8wOTgiLCJiXzA5OSIsImVxdWFsX3JlZiIsImFfMTAwIiwiYl8xMDEiLCJhXzEwMiIsImJfMTAzIiwicmVmX29mX3NleHAiLCJzZXhwX29mX3JlZiIsInJlZl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3JlZiIsImdyb3VwJDEzIiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2l6ZV91bml0IiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZF91bml0IiwiYmluX3JlYWRfdW5pdCQwIiwiYmluX3JlYWRlcl91bml0IiwiYmluX3VuaXQiLCJjb21wYXJlX3VuaXQiLCJlcXVhbF91bml0IiwiaGFzaF9mb2xkX3VuaXQiLCJmdW5jJDciLCJoYXNoX3VuaXQiLCJ1bml0X29mX3NleHAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfdW5pdCIsImdyb3VwJDE0IiwiYmluX3NoYXBlX2Zsb2F0X2FycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVyX2Zsb2F0X2FycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRlcl9mbG9hdF9hcnJheSIsImJpbl9mbG9hdF9hcnJheSIsImNvbXBhcmVfZmxvYXRfYXJyYXkiLCJhXzExNCIsImJfMTE1IiwiYV8xMTYiLCJiXzExNyIsImZsb2F0X2FycmF5X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0X2FycmF5IiwiZmxvYXRfYXJyYXlfc2V4cF9ncmFtbWFyIiwidHlwZW5hbWVfb2ZfZmxvYXRfYXJyYXkiLCJuYW1lX29mX2Zsb2F0X2FycmF5IiwidHlwZXJlcF9vZl9mbG9hdF9hcnJheSIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwibWF4X21lbV93YWl0aW5nX2djIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic3ViX3NoYXJlZCIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdCIsIndyaXRlciIsImRhdGFfbGVuIiwidG90YWxfbGVuIiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4Iiwidl8wMDUiLCJyZXMwXzAxMSIsInZfMDA2IiwicmVzMV8wMTIiLCJ2XzAwNyIsInJlczJfMDEzIiwicG9zX2FmdGVyX3NpemVfaGVhZGVyIiwicG9zX2FmdGVyX2RhdGEiLCJhcmc0XzAyMyIsImFyZzNfMDIyIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5Iiwidl8wMTQiLCJyZXMwXzAyNCIsInZfMDE1IiwicmVzMV8wMjUiLCJ2XzAxNiIsInJlczJfMDI2Iiwidl8wMTciLCJyZXMzXzAyNyIsInZfMDE4IiwicmVzNF8wMjgiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsIm1pbl9wb3MiLCJkYXRhX2VuZCIsInNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmciLCJzbGVuIiwic2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmciLCJtYXhfcG9zIiwiZGF0YV9iZWdpbiIsInRvX2J5dGVzIiwib2ZfYnl0ZXMiLCJieXRlcyIsInRvX2hleCIsIm9mX2hleF9leG4iLCJvZl9iaW5hcnlfZXhuIiwiYWNjdW0iLCJ0b19iaW5hYmxlJDAiLCJkaWdlc3Rfc3RyaW5nIiwiZGlnZXN0X2J5dGVzIiwiZGlnZXN0X251bV9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDQ1IiwiZXJyb3Jfc291cmNlXzA2OCIsImVycm9yX3NvdXJjZV8xMDYiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDYiLCJpc19kc3RfMDA4IiwiYWJicnZfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIyIiwiZmllbGRfc2V4cF8wMTUkMyIsImZpZWxkX3NleHBfMDE1IiwiZmllbGRfc2V4cF8wMTUkMCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE4IiwiZmllbGRfc2V4cF8wMTUkMiIsImZ2YWx1ZV8wMTciLCJhYmJydl8wMTEiLCJpc19kc3RfMDA5IiwidXRjX29mZnNldF9pbl9zZWNvbmRzXzAwNyIsImFiYnJ2XzAyOSIsImlzX2RzdF8wMjciLCJ1dGNfb2Zmc2V0X2luX3NlY29uZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYXJnXzAyOCIsImJuZHNfMDI0JDAiLCJhcmdfMDI2IiwiYm5kc18wMjQkMSIsInZfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIiwidl9zZWNvbmRzIiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wMzMiLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMiLCJzZWNvbmRzXzAzNiIsImR1cGxpY2F0ZXNfMDM4IiwiZXh0cmFfMDM5Iiwic2V4cF8wMzIkMCIsImZpZWxkX3NleHBzXzA0MiIsImZpZWxkX25hbWVfMDQwIiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzA0MSQyIiwiZmllbGRfc2V4cF8wNDEiLCJmaWVsZF9zZXhwXzA0MSQwIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDQxJDEiLCJmdmFsdWVfMDQzIiwic2Vjb25kc18wMzciLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMkMCIsInNlY29uZHNfMDUyIiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzA1IiwiYXJnXzA1MyIsImJuZHNfMDQ5IiwiYXJnXzA1MSIsImJuZHNfMDQ5JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJzZXhwXzA1NSIsImZpZWxkX3NleHBzXzA1NiIsInN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcCIsIm5ld19yZWdpbWVfMDU5IiwiZHVwbGljYXRlc18wNjEiLCJleHRyYV8wNjIiLCJzZXhwXzA1NSQwIiwiZmllbGRfc2V4cHNfMDY1IiwiZmllbGRfbmFtZV8wNjMiLCJ0YWlsXzA3MCIsImZpZWxkX3NleHBfMDY0JDIiLCJmaWVsZF9zZXhwXzA2NCIsInhfMDcxIiwiZmllbGRfc2V4cF8wNjQkMCIsImZ2YWx1ZV8wNjciLCJmaWVsZF9zZXhwXzA2NCQxIiwiZnZhbHVlXzA2NiIsIm5ld19yZWdpbWVfMDYwIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwJDAiLCJuZXdfcmVnaW1lXzA3NSIsImFyZ18wNzYiLCJibmRzXzA3MiIsImFyZ18wNzQiLCJibmRzXzA3MiQwIiwidjUiLCJ2NyIsInY2Iiwidl9uYW1lIiwidl9vcmlnaW5hbF9maWxlbmFtZSIsInZfZGlnZXN0Iiwidl90cmFuc2l0aW9ucyIsInZfbGFzdF9yZWdpbWVfaW5kZXgiLCJ2X2RlZmF1bHRfbG9jYWxfdGltZV90eXBlIiwidl9sZWFwX3NlY29uZHMiLCJzZXhwXzA3OCIsImZpZWxkX3NleHBzXzA3OSIsIm5hbWVfMDgwIiwib3JpZ2luYWxfZmlsZW5hbWVfMDgyIiwiZGlnZXN0XzA4NCIsInRyYW5zaXRpb25zXzA4NiIsImxhc3RfcmVnaW1lX2luZGV4XzA4OCIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzA5MCIsImxlYXBfc2Vjb25kc18wOTIiLCJkdXBsaWNhdGVzXzA5NCIsImV4dHJhXzA5NSIsInNleHBfMDc4JDAiLCJmaWVsZF9zZXhwc18wOTgiLCJmaWVsZF9uYW1lXzA5NiIsInRhaWxfMTA4IiwiZmllbGRfc2V4cF8wOTckNyIsImZpZWxkX3NleHBfMDk3IiwiZmllbGRfc2V4cF8wOTckMCIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5NyQxIiwiZnZhbHVlXzEwNCIsImZpZWxkX3NleHBfMDk3JDIiLCJmdmFsdWVfMTA1IiwiZmllbGRfc2V4cF8wOTckMyIsImZ2YWx1ZV8wOTkiLCJmaWVsZF9zZXhwXzA5NyQ0IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDk3JDUiLCJmdmFsdWVfMTAzIiwiZmllbGRfc2V4cF8wOTckNiIsImZ2YWx1ZV8xMDAiLCJsZWFwX3NlY29uZHNfMDkzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDkxIiwibGFzdF9yZWdpbWVfaW5kZXhfMDg5IiwidHJhbnNpdGlvbnNfMDg3IiwiZGlnZXN0XzA4NSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzA4MyIsIm5hbWVfMDgxIiwidHJhbnNpdGlvbnNfMTE3IiwiZGlnZXN0XzExNSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzExMyIsIm5hbWVfMTExIiwibGFzdF9yZWdpbWVfaW5kZXhfMTE5IiwibGVhcF9zZWNvbmRzXzEyMyIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzEyMSIsImFyZ18xMjQiLCJibmRzXzExMCIsImFyZ18xMjIiLCJibmRzXzExMCQwIiwiYXJnXzEyMCIsImJuZHNfMTEwJDEiLCJhcmdfMTE4IiwiYm5kc18xMTAkMiIsImFyZ18xMTYiLCJibmRzXzExMCQzIiwiYXJnXzExNCIsImJuZHNfMTEwJDQiLCJhcmdfMTEyIiwiYm5kc18xMTAkNSIsIm9yaWdpbmFsX2ZpbGVuYW1lIiwiem9uZSIsImRpZ2VzdCIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kcyIsImlzX2RzdCIsImFiYnJ2X2luZGV4IiwiYWJicnYiLCJpbnB1dF90el9maWxlX2dlbiIsImlucHV0X3RyYW5zaXRpb24iLCJpbnB1dF9sZWFwX3NlY29uZCIsInV0Y19sb2NhbF9jb3VudCIsInN0ZF93YWxsX2NvdW50IiwibGVhcF9jb3VudCIsInRyYW5zaXRpb25fY291bnQiLCJ0eXBlX2NvdW50IiwiYWJicnZfY2hhcl9jb3VudCIsInRyYW5zaXRpb25fdGltZXMiLCJ0cmFuc2l0aW9uX2luZGljZXMiLCJyZWdpbWVzIiwicmF3X2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsImluZGV4ZWRfYWJicnZzIiwibGVhcF9zZWNvbmRzIiwicmVnaW1lcyQwIiwidGltZSIsInJlZ2ltZSIsInJhd190cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zIiwibHR0IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJyZXN0IiwibmV3X3JlZ2ltZSIsImlucHV0X2xlYXBfc2Vjb25kX2dlbiIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHMiLCJyZWFkX2hlYWRlciIsIm1hZ2ljIiwiYmFkX3ZlcnNpb24iLCJ2ZXJzaW9uIiwiaW5wdXRfdHpfZmlsZV92MSIsImlucHV0X3R6X2ZpbGUiLCJ6b25lbmFtZSIsInhfMTI1IiwibWFrZV96b25lIiwicmVhc29uIiwib2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIiwib2ZfdXRjX29mZnNldCIsImxpa2VseV9tYWNoaW5lX3pvbmVzIiwidXRjIiwicmVzZXRfdHJhbnNpdGlvbl9jYWNoZSIsImdldF9yZWdpbWVfZXhuIiwiZWZmZWN0aXZlX3N0YXJ0X3RpbWUiLCJtb2RlIiwiaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2VjIiwiaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2VjIiwiYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzIiwidHJhbnNpdGlvbiIsImluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2giLCJpbmRleCQwIiwiaW5kZXgkMSIsImluZGV4JDIiLCJpbmRleCQzIiwiaW5kZXgkNCIsIm9mX2ludDYzX3NlY29uZHMiLCJ0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXgiLCJvZl9zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3Bhbl9zaW5jZV9lcG9jaCIsIm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJpbmRleF9vZl9kYXRlX2FuZF9vZmRheSIsImluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IiwiaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF8iLCJhZnRlciIsImJlZm9yZSIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50XyIsImluZGV4X2FiYnJldmlhdGlvbl9leG4iLCJpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIiwicmF3IiwidmFsaWRhdGlvbl9mYWlsZWQiLCJhcmcyXzAwMyIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAwNiIsImNyZWF0ZV9leG4iLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwidHlwZV9pZDEiLCJ0eXBlX2lkMiIsIm5hbWVfb2Zfa2V5IiwidWlkX29mX2tleSIsInR5cGVfaWRfbmFtZSIsInR5cGVfaWRfdWlkIiwicGFja2VkIiwieF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm1lbV9ieV9pZCIsImlkIiwicmVtb3ZlX2J5X2lkIiwia2V5JDAiLCJjaGFuZ2VfZXhuIiwib3JpZyIsIm9mX2FfMDExIiwib2ZfYV8wMTIiLCJ4XzAxMyIsInhfMDE0Iiwib2ZfYV8wMTciLCJkZWZhdWx0JDAiLCJpZCQwIiwiaWQkMSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsInJhY2VfZnJlZV9jcmVhdGVfbG9vcCIsImNlbGwiLCJuZXdfeCIsImN1cnJlbnQiLCJpbW1lZGlhY3kiLCJhbGxvd2VkX2ludHMiLCJuZXZlcl93aXRoX25hbWUiLCJuZXZlciIsInVua25vd24iLCJvcHRpb24iLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsInJlZiIsInR1cGxlMiIsInR1cGxlMyIsInR1cGxlNCIsInR1cGxlNSIsImZ1bmN0aW9uJDAiLCJpbnQkMCIsInJlZiQwIiwiYXJyYXkkMCIsInR1cGxlMiQwIiwidHVwbGUzJDAiLCJ0dXBsZTQkMCIsInR1cGxlNSQwIiwiZnVuY3Rpb24kMSIsIm9wdGlvbiQwIiwibGlzdCQwIiwibGF6eV90IiwicG9zc2libHlfdW5ib3hlZCIsImNoaWxkX3R5cGUiLCJ0aGVfb25seV9maWVsZCIsInZhcmlhbnQiLCJ0YWciLCJtb3JlIiwibm8iLCJtb3JlX2FyZ19saXN0Iiwib25lX2FyZ19saXN0Iiwibm9fYXJnX2xpc3QiLCJub19hcmdfY291bnQiLCJoYXNoX3NldCIsInJlcXVpcmVkIiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzAzMCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwOCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczFfMDE1IiwiY3VycnkiLCJ1bmN1cnJ5IiwibWFwX2ZzdCIsIm1hcF9zbmQiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYl8wMjAiLCJvZl9jXzAyMSIsInNleHBfMDI5IiwiYXJnMl8wMjUiLCJyZXMwXzAyNiIsInJlczFfMDI3IiwicmVzMl8wMjgiLCJvZl9hXzAzMSIsIm9mX2JfMDMyIiwib2ZfY18wMzMiLCJhcmcyXzAzNiIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNyIsInJlczFfMDM4IiwicmVzMl8wMzkiLCJvZl9jIiwiY3VycnkkMCIsInVuY3VycnkkMCIsIm1hcF9mc3QkMCIsIm1hcF9zbmQkMCIsIm1hcF90cmQiLCJtYXAyJDAiLCJ6MiIsInoxIiwiZ2V0MyIsImNtcDMiLCJ6JDAiLCJjMSIsImMyIiwiZXEzIiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJhXzA1MSIsImJfMDUyIiwidF8wNTQiLCJ0XzA1MyIsInRfMDU2IiwidF8wNTUiLCJzZXhwXzA2MiIsImFyZzFfMDU5IiwiYXJnMF8wNTgiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwicmVzMF8wNjYiLCJyZXMxXzA2NyIsInMyIiwiczEiLCJzMiQwIiwiczEkMCIsIndlZWtkYXlzIiwid2Vla2VuZHMiLCJzaXplXzAxOCIsInJhbmRvbV8wMTkiLCJzaXplXzAxMiIsInJhbmRvbV8wMTMiLCJzaXplXzAxMCIsInJhbmRvbV8wMTEiLCJyYW5kb21fMDA5Iiwic2l6ZV8wMDYiLCJyYW5kb21fMDA3IiwiaGFzaF8wMDUiLCJoYXNoXzAwNSQwIiwiaGFzaF8wMDUkMSIsImhhc2hfMDA1JDIiLCJoYXNoXzAwNSQzIiwiaGFzaF8wMDUkNCIsImhhc2hfMDA1JDUiLCJoYXNoXzAwNSQ2IiwidG9fc3RyaW5nX2xvbmciLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwMyIsImN1c3RvbV9wcmludGZfMDA0IiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDIxIiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsImRheXNfaW5fbW9udGgiLCJpbnZhbGlkIiwibXNnIiwiZGF5c19pbl9tb250aCQwIiwidW5jaGVja2VkX3ZhbHVlIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJzZXhwXzAwNSQwIiwiZmllbGRfc2V4cHNfMDA2IiwieV8wMDciLCJtXzAwOSIsImRfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwNSIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjMiLCJmaWVsZF9zZXhwXzAxNiQzIiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNCIsImZpZWxkX3NleHBfMDE2JDAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZmllbGRfc2V4cF8wMTYkMiIsImRfMDEyIiwibV8wMTAiLCJ5XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInZhbHVlX2V4biIsInN5bWJvbCQ1IiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwib2ZfbXVsdCIsInRvX211bHQiLCJvZl9wZXJjZW50YWdlIiwidG9fcGVyY2VudGFnZSIsIm9mX2JwIiwidG9fYnAiLCJvZl9icF9pbnQiLCJ0b19icF9pbnQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWxfbXVsdCIsImRlY2ltYWxfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIiwicm91bmRfZGVjaW1hbF9icCIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiZXhwb25lbnQiLCJwcmVjaXNpb24iLCJleHBvbmVudF9FIiwiZGVjaW1hbCIsIm9jYW1sIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwieF9hYnMiLCJyZWFsbHlfb2Zfc3RyaW5nIiwiZmxvYXRfb2Zfc3RyaW5nIiwic3RyJDAiLCJzdHIkMSIsInN0ciQyIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImlzX3plcm8iLCJhcHBseSIsImlzX25hbiIsImlzX2luZiIsIm5lZyIsInNpZ25fZXhuIiwib2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIiwidF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIiwiZm9ybWF0JDAiLCJyYW5kb21pemUiLCJzcGFuIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJlcnJvcl9zb3VyY2VfMDMyIiwibiQyIiwibiQzIiwibiQ0Iiwic2lnbl8wMDYiLCJocl8wMDgiLCJtaW5fMDEwIiwic2VjXzAxMiIsIm1zXzAxNCIsInVzXzAxNiIsIm5zXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfc2V4cHNfMDI0IiwiZmllbGRfbmFtZV8wMjIiLCJ0YWlsXzAzNCIsImZpZWxkX3NleHBfMDIzJDciLCJmaWVsZF9zZXhwXzAyMyIsInhfMDM1IiwiZmllbGRfc2V4cF8wMjMkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAyMyQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDIzJDIiLCJmdmFsdWVfMDI4IiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZnZhbHVlXzAyNyIsImZpZWxkX3NleHBfMDIzJDUiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNiIsImZ2YWx1ZV8wMzAiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwibnNfMDQ5IiwidXNfMDQ3IiwibXNfMDQ1Iiwic2VjXzA0MyIsIm1pbl8wNDEiLCJocl8wMzkiLCJzaWduXzAzNyIsImFyZ18wNTAiLCJibmRzXzAzNiIsImFyZ18wNDgiLCJibmRzXzAzNiQwIiwiYXJnXzA0NiIsImJuZHNfMDM2JDEiLCJhcmdfMDQ0IiwiYm5kc18wMzYkMiIsImFyZ18wNDIiLCJibmRzXzAzNiQzIiwiYXJnXzA0MCIsImJuZHNfMDM2JDQiLCJhcmdfMDM4IiwiYm5kc18wMzYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50X3NlYyIsIm9mX2ludDMyX3NlY29uZHMiLCJvZl9taW4iLCJvZl9ociIsIm9mX2RheSIsImRpdmlkZV9ieV91bml0X29mX3RpbWUiLCJ1bml0X29mX3RpbWUiLCJzY2FsZV9ieV91bml0X29mX3RpbWUiLCJzdGgkMSIsInN0aCQyIiwic3RoJDMiLCJzdGgkNCIsInN0aCQ1Iiwic3RoJDYiLCJ0b19zaG9ydF9zdHJpbmciLCJ0X29mX3NleHBfdjFfdjIiLCJpc192MiIsInNleHBfb2ZfdF92MV92MiIsImFic190IiwidG9fdW5pdF9vZl90aW1lIiwib2ZfdW5pdF9vZl90aW1lIiwic3VmZml4X29mX3VuaXRfb2ZfdGltZSIsInBhcnNlX3N1ZmZpeCIsInVuaXRfb2ZfdGltZV9saXN0JDEiLCJ1bml0X29mX3RpbWVfbGlzdCIsInVuaXRfb2ZfdGltZV9saXN0JDAiLCJzdGF0ZV9pc19maW5hbCIsImludmFsaWRfc3RyaW5nJDAiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJzdGFydF9vZl9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJzJDAiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9pbnRfdXMiLCJvZl9pbnRfbXMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJvZl9pbnRfbnMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNpbmNlX3VuaXhfZXBvY2giLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJoYWxmX21pY3Jvc2Vjb25kIiwidG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwibWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwib2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3ZhbHVlX3JlcHJlc2VudGFibGUiLCJtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSIsImlzX2ludmFsaWQiLCJvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQiLCJzdWJfZXhuIiwidG9fc3RyaW5nX3dpdGhfdW5pdCIsInNpeHR5IiwidGhvdXNhbmQiLCJ1bml0JDAiLCJudW1fZGlnaXRzIiwidG9fbWljcm9zZWNvbmRfc3RyaW5nIiwiZXZlcnkiLCJzdGFydCQxIiwidG9faW50NjNfbnNfc2luY2VfZXBvY2giLCJvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCIsIm92ZXJmbG93IiwiYWRkX292ZXJmbG93ZWQiLCJzdWJfb3ZlcmZsb3dlZCIsImFkZF9zYXR1cmF0aW5nIiwic3ViX3NhdHVyYXRpbmciLCJ0b19pbnRfbnNfc2luY2VfZXBvY2giLCJvZl9pbnRfbnNfc2luY2VfZXBvY2giLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJ0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJuc19zaW5jZV9lcG9jaCIsIm5zX3Blcl9kYXkiLCJhcHByb3hfZGF5c19mcm9tX2Vwb2NoIiwibnNfc2luY2Vfc3RhcnRfb2ZfZGF5Iiwic3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJzcGFuX2luX2RheXNfc2luY2VfZXBvY2giLCJzcGFuX3NpbmNlX2Vwb2NoIiwidHdvX2RpZ2l0X29mX3N0cmluZyIsIm5zX29mXzEwMF9tcyIsIm5zX29mXzEwX21zIiwibnNfb2ZfMV9tcyIsIm5zX29mXzEwMF91cyIsIm5zX29mXzEwX3VzIiwibnNfb2ZfMV91cyIsIm5zX29mXzEwMF9ucyIsIm5zX29mXzEwX25zIiwibnNfb2ZfMV9ucyIsInNlY29uZHNfc3BhbiIsInN1Yl9zZWNvbmRfc3BhbiIsIm9mZGF5X3N0cmluZ193aXRoX3pvbmUiLCJkYXRlX3N0cmluZyIsIm9mZGF5X3N0cmluZyIsInN1ZmZpeF9sZW4iLCJzZWNvbmRzX3N0cmluZyIsInN1Yl9zZWNvbmRfc3RyaW5nIiwic19zdHJpbmciLCJtX3N0cmluZyIsImhfc3RyaW5nIiwibXVsdGlwbGllciIsImRheXNfZnJvbV9lcG9jaCQwIiwiZGF5c19mcm9tX2Vwb2NoX2luX25zIiwiYXR0ZW1wdCIsInNwYW5fb2ZfZHVyYXRpb24iLCJ0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQiLCJkdXJhdGlvbnMiLCJzcGFucyIsInN0cmluZ19ieXRlcyIsInNyY19wb3MiLCJzcmNfbGVuIiwiZHN0X3BvcyIsInNyY19wb3MkMCIsImJ5dGVzX2J5dGVzIiwic3RyaW5nX2JpZ3N0cmluZyIsImJ5dGVzX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19iaWdzdHJpbmciLCJiaWdzdHJpbmdfc3RyaW5nIiwiYmlnc3RyaW5nX2J5dGVzIiwic2l6ZV8wMDkiLCJyYW5kb21fMDEwIiwic2l6ZV8wMDciLCJoYXNoXzAwOCIsImhhc2hfMDA4JDAiLCJoYXNoXzAwOCQxIiwiaGFzaF8wMDgkMiIsImJhc2VfbGVuIiwiZ2V0X25vX2JvdW5kc19jaGVjayIsImZvbGRpJDAiLCJ3cmFwX3N1Yl9uIiwib25fZXJyb3IiLCJibGl0X3RvIiwiYmxpdF90b19zdHJpbmciLCJibGl0X3RvX2J5dGVzIiwiYmxpdF90b19iaWdzdHJpbmciLCJibGl0X2Jhc2UiLCJibGl0X2Zyb20iLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2JpZ3N0cmluZyIsIm9mX2Jhc2UiLCJjb25jYXRfZ2VuIiwiY3JlYXRlX2RzdCIsImJsaXRfZHN0IiwidHMiLCJjb25jYXRfc3RyaW5nIiwiY29uY2F0X2JpZ3N0cmluZyIsInNvcnRfYW5kX2FsaWduIiwiY2hlY2tfc3VmZml4IiwiY2hvcF9leHRlbnNpb24iLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAxIiwicDIiLCJzJDEiLCJzJDIiLCJ0b19hYnNvbHV0ZV9leG4iLCJyZWxhdGl2ZV90byIsIm1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSIsImlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCIsInNwbGl0X2V4dGVuc2lvbiIsImZuIiwiZm4kMCIsImZuJDEiLCJkaXIiLCJleHQiLCJiYXNlX2ZuIiwiZXh0JDAiLCJmbiQyIiwiZGlyJDAiLCJmbiQzIiwicGFydHMiLCJmaWxlbmFtZSQwIiwiZmlsZW5hbWUkMSIsIm9mX2Fic29sdXRlX2V4biIsImFfcGFydHMiLCJiX3BhcnRzIiwiYV9zdWZmaXgiLCJiX3N1ZmZpeCIsImgyIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJmbGFnX25hbWUiLCJlcnJvcl9zb3VyY2VfMDE3IiwiZXJyb3Jfc291cmNlXzA2MiIsImVycm9yX3NvdXJjZV8wOTkiLCJlcnJvcl9zb3VyY2VfMTM2IiwiZXJyb3Jfc291cmNlXzE3MSIsImVycm9yX3NvdXJjZV8yMTgiLCJlcnJvcl9zb3VyY2VfMjY5IiwiZXJyb3Jfc291cmNlXzMxOSIsImVycm9yX3NvdXJjZV8zNTYiLCJlcnJvcl9zb3VyY2VfMzg4IiwiZXJyb3Jfc291cmNlXzQxNSIsImVycm9yX3NvdXJjZV80NDQiLCJlcnJvcl9zb3VyY2VfNDc2IiwiZXJyb3Jfc291cmNlXzUwMSIsImVycm9yX3NvdXJjZV81MjYiLCJlcnJvcl9zb3VyY2VfNTY1IiwiZXJyb3Jfc291cmNlXzYxMCIsImVudW1lcmF0ZV82MjgiLCJlbnVtZXJhdGVfNjI5IiwibWF5YmVfbWlzc2luZ19wcmVmaXgiLCJtYXliZV9taXNzaW5nX3N1ZmZpeCIsIm1heWJlX21vcmVfc3VmZml4IiwibmFtZXMkMCIsImVycm9yX3NvdXJjZV82NjkiLCJpbmRlbnRhdGlvbiIsInNwYWNpbmdfZG90IiwibmFtZXMkMSIsImVycm9yX3NvdXJjZV83MDgiLCJuYW1lcyQyIiwiZXJyb3Jfc291cmNlXzc1NyIsIm5hbWVzJDMiLCJlcnJvcl9zb3VyY2VfODA3IiwiZXJyb3Jfc291cmNlXzgzOCIsImFfMDAxJDAiLCJiXzAwMiQwIiwidGFnXzAyMCIsInNleHBfYXJnc18wNDEiLCJhcmcwXzA0MiIsInNleHBfYXJnc18wMzYiLCJyZXMwXzAzOCIsInNleHBfYXJnc18wMjYiLCJzZXhwX2FyZ3NfMDMxIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzA0NCIsInJlczBfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwidXNhZ2UiLCJ1c2FnZSQwIiwidXNhZ2UkMSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1OCIsImJfMDU5Iiwic2V4cF8wNjQiLCJ0YWdfMDY1Iiwic2V4cF9hcmdzXzA2NiIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsImFyZzBfMDc0IiwicmVzMF8wNzUiLCJhcmcwXzA3NiIsInJlczBfMDc3Iiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJhXzA3OCIsImJfMDc5IiwiYV8wODAiLCJiXzA4MSIsInNleHBfMDgzIiwiZmllbGRfc2V4cHNfMDg0IiwibmFtZV8wODUiLCJkb2NfMDg3IiwiYWxpYXNlc18wODkiLCJkdXBsaWNhdGVzXzA5MSIsImV4dHJhXzA5MiIsInNleHBfMDgzJDAiLCJmaWVsZF9zZXhwc18wOTUiLCJmaWVsZF9uYW1lXzA5MyIsInRhaWxfMTAxIiwiZmllbGRfc2V4cF8wOTQkMyIsImZpZWxkX3NleHBfMDk0IiwieF8xMDIiLCJmaWVsZF9zZXhwXzA5NCQwIiwiZnZhbHVlXzA5OCIsImZpZWxkX3NleHBfMDk0JDEiLCJmdmFsdWVfMDk3IiwiZmllbGRfc2V4cF8wOTQkMiIsImZ2YWx1ZV8wOTYiLCJhbGlhc2VzXzA5MCIsImRvY18wODgiLCJuYW1lXzA4NiIsImFsaWFzZXNfMTA4IiwiZG9jXzEwNiIsIm5hbWVfMTA0IiwiYXJnXzEwOSIsImJuZHNfMTAzIiwiYXJnXzEwNyIsImJuZHNfMTAzJDAiLCJhcmdfMTA1IiwiYm5kc18xMDMkMSIsInZfc3VtbWFyeSIsInZfcmVhZG1lIiwidl9hbm9ucyIsInZfZmxhZ3MiLCJhXzExMCIsImJfMTExIiwiYV8xMTIiLCJiXzExMyIsInNleHBfMTE3IiwiZmllbGRfc2V4cHNfMTE4Iiwic3VtbWFyeV8xMTkiLCJyZWFkbWVfMTIxIiwiYW5vbnNfMTIzIiwiZmxhZ3NfMTI1IiwiZHVwbGljYXRlc18xMjciLCJleHRyYV8xMjgiLCJzZXhwXzExNyQwIiwiZmllbGRfc2V4cHNfMTMxIiwiZmllbGRfbmFtZV8xMjkiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMwJDQiLCJmaWVsZF9zZXhwXzEzMCIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzAkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMCQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMwJDIiLCJmdmFsdWVfMTMyIiwiZmllbGRfc2V4cF8xMzAkMyIsImZ2YWx1ZV8xMzMiLCJyZWFkbWVfMTIyIiwiZmxhZ3NfMTI2IiwiYW5vbnNfMTI0Iiwic3VtbWFyeV8xMjAiLCJmbGFnc18xNDkiLCJhbm9uc18xNDciLCJyZWFkbWVfMTQzIiwic3VtbWFyeV8xNDEiLCJhcmdfMTUwIiwiYm5kc18xNDAiLCJhcmdfMTQ4IiwiYm5kc18xNDAkMCIsInZfMTQ0IiwiYXJnXzE0NiIsImJuZF8xNDUiLCJibmRzXzE0MCQxIiwiYXJnXzE0MiIsImJuZHNfMTQwJDIiLCJiaW5fc2hhcGVfYSIsInZfc3ViY29tbWFuZHMiLCJhXzE4NiIsImJfMTg3IiwiYV8xODgiLCJiXzE4OSIsImFfMTkwIiwiYl8xOTEiLCJhXzE5MiIsImJfMTkzIiwidF8xOTUiLCJ0XzE5NCIsInRfMTk3IiwidF8xOTYiLCJvZl9hXzE5OCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwic3VtbWFyeV8yMDIiLCJyZWFkbWVfMjA0Iiwic3ViY29tbWFuZHNfMjA2IiwiZHVwbGljYXRlc18yMDgiLCJleHRyYV8yMDkiLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEyIiwiZmllbGRfbmFtZV8yMTAiLCJ0YWlsXzIyMyIsImZpZWxkX3NleHBfMjExJDMiLCJmaWVsZF9zZXhwXzIxMSIsInhfMjI0IiwiZmllbGRfc2V4cF8yMTEkMCIsImZ2YWx1ZV8yMjEiLCJmaWVsZF9zZXhwXzIxMSQxIiwic2V4cF8yMTciLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImZ2YWx1ZV8yMTkiLCJmaWVsZF9zZXhwXzIxMSQyIiwiZnZhbHVlXzIyMCIsInJlYWRtZV8yMDUiLCJzdWJjb21tYW5kc18yMDciLCJzdW1tYXJ5XzIwMyIsIm9mX2FfMjI1Iiwic3ViY29tbWFuZHNfMjMzIiwicmVhZG1lXzIyOSIsInN1bW1hcnlfMjI3IiwiYm5kc18yMjYiLCJhcmcxXzIzNiIsImFyZzBfMjM1IiwicmVzMF8yMzciLCJyZXMxXzIzOCIsImFyZ18yMzQiLCJibmRzXzIyNiQwIiwidl8yMzAiLCJhcmdfMjMyIiwiYm5kXzIzMSIsImJuZHNfMjI2JDEiLCJhcmdfMjI4IiwiYm5kc18yMjYkMiIsIm9mX2FfMjQ5Iiwic2V4cF8yNTEiLCJmaWVsZF9zZXhwc18yNTIiLCJzdW1tYXJ5XzI1MyIsInJlYWRtZV8yNTUiLCJzdWJjb21tYW5kc18yNTciLCJkdXBsaWNhdGVzXzI1OSIsImV4dHJhXzI2MCIsInNleHBfMjUxJDAiLCJmaWVsZF9zZXhwc18yNjMiLCJmaWVsZF9uYW1lXzI2MSIsInRhaWxfMjc0IiwiZmllbGRfc2V4cF8yNjIkMyIsImZpZWxkX3NleHBfMjYyIiwieF8yNzUiLCJmaWVsZF9zZXhwXzI2MiQwIiwiZnZhbHVlXzI3MiIsImZpZWxkX3NleHBfMjYyJDEiLCJzZXhwXzI2OCIsImFyZzFfMjY1IiwiYXJnMF8yNjQiLCJyZXMwXzI2NiIsInJlczFfMjY3IiwiZnZhbHVlXzI3MCIsImZpZWxkX3NleHBfMjYyJDIiLCJmdmFsdWVfMjcxIiwicmVhZG1lXzI1NiIsInN1YmNvbW1hbmRzXzI1OCIsInN1bW1hcnlfMjU0Iiwib2ZfYV8yNzYiLCJzdWJjb21tYW5kc18yODQiLCJyZWFkbWVfMjgwIiwic3VtbWFyeV8yNzgiLCJibmRzXzI3NyIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInJlczFfMjg5IiwiYXJnXzI4NSIsImJuZHNfMjc3JDAiLCJ2XzI4MSIsImFyZ18yODMiLCJibmRfMjgyIiwiYm5kc18yNzckMSIsImFyZ18yNzkiLCJibmRzXzI3NyQyIiwidG9fbGF0ZXN0Iiwic3ViY29tbWFuZHMiLCJyZWFkbWUiLCJzdW1tYXJ5Iiwib2ZfbGF0ZXN0IiwiYWJzX3BhdGgiLCJ2X3dvcmtpbmdfZGlyIiwidl9wYXRoX3RvX2V4ZSIsInZfY2hpbGRfc3ViY29tbWFuZCIsImFfMjkwIiwiYl8yOTEiLCJhXzI5MiIsImJfMjkzIiwiYV8yOTQiLCJiXzI5NSIsInNleHBfMjk3IiwiZmllbGRfc2V4cHNfMjk4Iiwic3VtbWFyeV8yOTkiLCJyZWFkbWVfMzAxIiwid29ya2luZ19kaXJfMzAzIiwicGF0aF90b19leGVfMzA1IiwiY2hpbGRfc3ViY29tbWFuZF8zMDciLCJkdXBsaWNhdGVzXzMwOSIsImV4dHJhXzMxMCIsInNleHBfMjk3JDAiLCJmaWVsZF9zZXhwc18zMTMiLCJmaWVsZF9uYW1lXzMxMSIsInRhaWxfMzIxIiwiZmllbGRfc2V4cF8zMTIkNSIsImZpZWxkX3NleHBfMzEyIiwieF8zMjIiLCJmaWVsZF9zZXhwXzMxMiQwIiwiZnZhbHVlXzMxNiIsImZpZWxkX3NleHBfMzEyJDEiLCJmdmFsdWVfMzE4IiwiZmllbGRfc2V4cF8zMTIkMiIsImZ2YWx1ZV8zMTciLCJmaWVsZF9zZXhwXzMxMiQzIiwiZnZhbHVlXzMxNSIsImZpZWxkX3NleHBfMzEyJDQiLCJmdmFsdWVfMzE0IiwicmVhZG1lXzMwMiIsImNoaWxkX3N1YmNvbW1hbmRfMzA4IiwicGF0aF90b19leGVfMzA2Iiwid29ya2luZ19kaXJfMzA0Iiwic3VtbWFyeV8zMDAiLCJjaGlsZF9zdWJjb21tYW5kXzMzNCIsInBhdGhfdG9fZXhlXzMzMiIsIndvcmtpbmdfZGlyXzMzMCIsInJlYWRtZV8zMjYiLCJzdW1tYXJ5XzMyNCIsImFyZ18zMzUiLCJibmRzXzMyMyIsImFyZ18zMzMiLCJibmRzXzMyMyQwIiwiYXJnXzMzMSIsImJuZHNfMzIzJDEiLCJ2XzMyNyIsImFyZ18zMjkiLCJibmRfMzI4IiwiYm5kc18zMjMkMiIsImFyZ18zMjUiLCJibmRzXzMyMyQzIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImJpbl9zaGFwZV90JDciLCJ0b192MyIsIm9mX3YzIiwidG9fbGF0ZXN0JDEiLCJvZl9sYXRlc3QkMSIsImJpbl9zaGFwZV90JDgiLCJ0b192MiIsIm9mX3YyIiwidG9fbGF0ZXN0JDIiLCJvZl9sYXRlc3QkMiIsImJpbl9zaGFwZV90JDkiLCJhXzQwMSIsImJfNDAyIiwiYV80MDEkMCIsImJfNDAyJDAiLCJhXzQwMyIsImJfNDA0IiwiYV80MDUiLCJiXzQwNiIsImFfNDA3IiwiYl80MDgiLCJhXzQxMSIsImFfNDA5IiwiYl80MTIiLCJiXzQxMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF80MTciLCJ0YWdfNDE4Iiwic2V4cF9hcmdzXzQyNCIsImFyZzBfNDI1IiwicmVzMF80MjYiLCJzZXhwX2FyZ3NfNDI5IiwiYXJnMV80MzEiLCJhcmcwXzQzMCIsInJlczBfNDMyIiwicmVzMV80MzMiLCJzZXhwX2FyZ3NfNDE5IiwiYXJnMF80MjAiLCJyZXMwXzQyMSIsImFyZzBfNDM0IiwicmVzMF80MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3IiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJiaW5fc2hhcGVfdCQxMCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF80NDYiLCJ0YWdfNDQ3Iiwic2V4cF9hcmdzXzQ2MyIsImFyZzBfNDY0IiwicmVzMF80NjUiLCJzZXhwX2FyZ3NfNDUzIiwiYXJnMF80NTQiLCJyZXMwXzQ1NSIsInNleHBfYXJnc180NTgiLCJhcmcwXzQ1OSIsInJlczBfNDYwIiwic2V4cF9hcmdzXzQ0OCIsImFyZzBfNDQ5IiwicmVzMF80NTAiLCJzZXhwX29mX3QkNyIsImFyZzBfNDY2IiwicmVzMF80NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJiaW5fc2hhcGVfdCQxMSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF80NzgiLCJ0YWdfNDc5Iiwic2V4cF9hcmdzXzQ4NSIsImFyZzBfNDg2IiwicmVzMF80ODciLCJzZXhwX2FyZ3NfNDkwIiwiYXJnMF80OTEiLCJyZXMwXzQ5MiIsImZpZWxkX3NleHBzXzMzOCIsInN1bW1hcnlfMzM5IiwicmVhZG1lXzM0MSIsIndvcmtpbmdfZGlyXzM0MyIsInBhdGhfdG9fZXhlXzM0NSIsImR1cGxpY2F0ZXNfMzQ3IiwiZXh0cmFfMzQ4Iiwic2V4cF8zMzciLCJmaWVsZF9zZXhwc18zNTEiLCJmaWVsZF9uYW1lXzM0OSIsInRhaWxfMzU4IiwiZmllbGRfc2V4cF8zNTAkNCIsImZpZWxkX3NleHBfMzUwIiwieF8zNTkiLCJmaWVsZF9zZXhwXzM1MCQwIiwiZnZhbHVlXzM1MyIsImZpZWxkX3NleHBfMzUwJDEiLCJmdmFsdWVfMzU1IiwiZmllbGRfc2V4cF8zNTAkMiIsImZ2YWx1ZV8zNTQiLCJmaWVsZF9zZXhwXzM1MCQzIiwiZnZhbHVlXzM1MiIsInJlYWRtZV8zNDIiLCJwYXRoX3RvX2V4ZV8zNDYiLCJ3b3JraW5nX2Rpcl8zNDQiLCJzdW1tYXJ5XzM0MCIsInNleHBfYXJnc180ODAiLCJhcmcwXzQ4MSIsInJlczBfNDgyIiwic2V4cF9vZl90JDgiLCJhcmcwXzQ5MyIsInJlczBfNDk0IiwiYXJnMF80OTUiLCJyZXMwXzQ5NiIsImFyZzBfNDk3IiwicGF0aF90b19leGVfMzY5Iiwid29ya2luZ19kaXJfMzY3IiwicmVhZG1lXzM2MyIsInN1bW1hcnlfMzYxIiwiYXJnXzM3MCIsImJuZHNfMzYwIiwiYXJnXzM2OCIsImJuZHNfMzYwJDAiLCJ2XzM2NCIsImFyZ18zNjYiLCJibmRfMzY1IiwiYm5kc18zNjAkMSIsImFyZ18zNjIiLCJibmRzXzM2MCQyIiwicmVzMF80OTgiLCJ0b19sYXRlc3QkMyIsImciLCJvZl9sYXRlc3QkMyIsInRodW5rIiwiYmluX3NoYXBlX3QkMTIiLCJ0X29mX3NleHAkMTAiLCJzZXhwXzUwMyIsInRhZ181MDQiLCJzZXhwX2FyZ3NfNTEwIiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsInNleHBfYXJnc181MTUiLCJhcmcwXzUxNiIsInJlczBfNTE3IiwiZmllbGRfc2V4cHNfMzczIiwic3VtbWFyeV8zNzQiLCJyZWFkbWVfMzc2IiwicGF0aF90b19leGVfMzc4IiwiZHVwbGljYXRlc18zODAiLCJleHRyYV8zODEiLCJzZXhwXzM3MiIsImZpZWxkX3NleHBzXzM4NCIsImZpZWxkX25hbWVfMzgyIiwidGFpbF8zOTAiLCJmaWVsZF9zZXhwXzM4MyQzIiwiZmllbGRfc2V4cF8zODMiLCJ4XzM5MSIsImZpZWxkX3NleHBfMzgzJDAiLCJmdmFsdWVfMzg3IiwiZmllbGRfc2V4cF8zODMkMSIsImZ2YWx1ZV8zODYiLCJmaWVsZF9zZXhwXzM4MyQyIiwiZnZhbHVlXzM4NSIsInJlYWRtZV8zNzciLCJwYXRoX3RvX2V4ZV8zNzkiLCJzdW1tYXJ5XzM3NSIsInNleHBfYXJnc181MDUiLCJhcmcwXzUwNiIsInJlczBfNTA3IiwiZmllbGRfc2V4cHNfMTUzIiwic3VtbWFyeV8xNTQiLCJyZWFkbWVfMTU2IiwidXNhZ2VfMTU4IiwiZmxhZ3NfMTYwIiwiZHVwbGljYXRlc18xNjIiLCJleHRyYV8xNjMiLCJzZXhwXzE1MiIsImZpZWxkX3NleHBzXzE2NiIsImZpZWxkX25hbWVfMTY0IiwidGFpbF8xNzMiLCJmaWVsZF9zZXhwXzE2NSQ0IiwiZmllbGRfc2V4cF8xNjUiLCJmaWVsZF9zZXhwXzE2NSQwIiwiZnZhbHVlXzE2OCIsImZpZWxkX3NleHBfMTY1JDEiLCJmdmFsdWVfMTcwIiwiZmllbGRfc2V4cF8xNjUkMiIsImZ2YWx1ZV8xNjkiLCJmaWVsZF9zZXhwXzE2NSQzIiwiZnZhbHVlXzE2NyIsInJlYWRtZV8xNTciLCJmbGFnc18xNjEiLCJ1c2FnZV8xNTkiLCJzdW1tYXJ5XzE1NSIsInNleHBfb2ZfdCQ5IiwiYXJnMF81MTgiLCJmbGFnc18xODQiLCJ1c2FnZV8xODIiLCJyZWFkbWVfMTc4Iiwic3VtbWFyeV8xNzYiLCJhcmdfMTg1IiwiYm5kc18xNzUiLCJhcmdfMTgzIiwiYm5kc18xNzUkMCIsInZfMTc5IiwiYXJnXzE4MSIsImJuZF8xODAiLCJibmRzXzE3NSQxIiwiYXJnXzE3NyIsImJuZHNfMTc1JDIiLCJyZXMwXzUxOSIsImFyZzBfNTIwIiwicmVzMF81MjEiLCJhcmcwXzUyMiIsInBhdGhfdG9fZXhlXzM5OSIsInJlYWRtZV8zOTUiLCJzdW1tYXJ5XzM5MyIsImFyZ180MDAiLCJibmRzXzM5MiIsInZfMzk2IiwiYXJnXzM5OCIsImJuZF8zOTciLCJibmRzXzM5MiQwIiwiYXJnXzM5NCIsImJuZHNfMzkyJDEiLCJyZXMwXzUyMyIsInRvX2xhdGVzdCQ0IiwiZmxhZ3MiLCJvZl9sYXRlc3QkNCIsImFub25zIiwiYmluX3NoYXBlX3QkMTMiLCJ0X29mX3NleHAkMTEiLCJzZXhwXzUyOCIsInRhZ181MjkiLCJzZXhwX2FyZ3NfNTQwIiwiYXJnMF81NDEiLCJyZXMwXzU0MiIsInNleHBfYXJnc181MzUiLCJhcmcwXzUzNiIsInJlczBfNTM3Iiwic2V4cF9hcmdzXzUzMCIsImFyZzBfNTMxIiwicmVzMF81MzIiLCJzZXhwX29mX3QkMTAiLCJhcmcwXzU0MyIsInJlczBfNTQ0IiwiYXJnMF81NDUiLCJyZXMwXzU0NiIsImFyZzBfNTQ3IiwicmVzMF81NDgiLCJvZl92ZXJzaW9uZWQiLCJncm91cCQxNSIsImJpbl9zaGFwZV90JDE0IiwiY29tcGFyZSQ2IiwiYV81NDkiLCJiXzU1MCIsImFfNTQ5JDAiLCJiXzU1MCQwIiwiYV81NTEiLCJiXzU1MiIsImFfNTUzIiwiYl81NTQiLCJhXzU1NSIsImJfNTU2IiwiYV81NTciLCJiXzU1OCIsImFfNTU5IiwiYl81NjAiLCJhXzU2MSIsImJfNTYyIiwidF9vZl9zZXhwJDEyIiwic2V4cF81NjciLCJ0YWdfNTY4Iiwic2V4cF9hcmdzXzU4OSIsImFyZzBfNTkwIiwicmVzMF81OTEiLCJzZXhwX2FyZ3NfNTg0IiwiYXJnMF81ODUiLCJyZXMwXzU4NiIsInNleHBfYXJnc181NzQiLCJhcmcwXzU3NSIsInJlczBfNTc2Iiwic2V4cF9hcmdzXzU3OSIsImFyZzBfNTgwIiwicmVzMF81ODEiLCJzZXhwX2FyZ3NfNTY5IiwiYXJnMF81NzAiLCJyZXMwXzU3MSIsInNleHBfb2ZfdCQxMSIsImFyZzBfNTkyIiwicmVzMF81OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1IiwiYXJnMF81OTYiLCJyZXMwXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJhcmcwXzYwMCIsInJlczBfNjAxIiwiZ3JvdXAkMTYiLCJiaW5fc2hhcGVfdCQxNSIsImNvbXBhcmUkNyIsImFfNjAyIiwiYl82MDMiLCJhXzYwNCIsImJfNjA1IiwiYV82MDYiLCJiXzYwNyIsInNleHBfb2ZfdCQxMiIsImFyZzBfNjIyIiwicmVzMF82MjMiLCJhcmcwXzYyNCIsInJlczBfNjI1IiwiY29tcGFyZSQ4IiwiYV82MjYiLCJiXzYyNyIsImVudW1lcmF0ZV82MzIiLCJlbnVtZXJhdGVfNjMzIiwiZW51bWVyYXRlXzYzMSIsImVudW1lcmF0ZV82MzQiLCJlbnVtZXJhdGVfNjMwIiwiZW51bWVyYXRlXzYzNCQwIiwiYXRfbW9zdF9vbmNlIiwiYXRfbGVhc3Rfb25jZSIsImF0X21vc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZV9mdW4iLCJhdF9tb3N0X29uY2VfZnVuIiwiYXRfbGVhc3Rfb25jZV9nZW4iLCJhdF9tb3N0X29uY2VfZ2VuIiwic2V4cF9vZl90JDEzIiwiYXRfbW9zdF9vbmNlXzYzOCIsImF0X2xlYXN0X29uY2VfNjM2IiwiYXJnXzYzOSIsImJuZHNfNjM1IiwiYXJnXzYzNyIsImJuZHNfNjM1JDAiLCJ0b19oZWxwX3N0cmluZyIsImRlc2NyaXB0aW9uIiwib2ZfaGVscF9zdHJpbmciLCJ4XzY0MCIsImZsYWdfbmFtZSQwIiwieF82NDEiLCJncm91cCQxNyIsImJpbl9zaGFwZV90JDE2IiwiYmluX3NpemVfdCQ3IiwiYmluX3dyaXRlX3QkNyIsImJpbl93cml0ZXJfdCQ2IiwiYmluX3JlYWRfdCQxNCIsImJpbl9yZWFkX3QkMTUiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl90JDYiLCJjb21wYXJlJDkiLCJhXzY0OCIsImJfNjQ5IiwiYV82NTAiLCJiXzY1MSIsImFsaWFzZXMiLCJkb2MiLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJhbGlhc2VzX2dlbiIsIm1hcF9wb2x5JDAiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxMyIsInNleHBfNjUzIiwiZmllbGRfc2V4cHNfNjU0IiwibmFtZV82NTUiLCJkb2NfNjU3IiwiYWxpYXNlc182NTkiLCJkdXBsaWNhdGVzXzY2MSIsImV4dHJhXzY2MiIsInNleHBfNjUzJDAiLCJmaWVsZF9zZXhwc182NjUiLCJmaWVsZF9uYW1lXzY2MyIsInRhaWxfNjcxIiwiZmllbGRfc2V4cF82NjQkMyIsImZpZWxkX3NleHBfNjY0IiwieF82NzIiLCJmaWVsZF9zZXhwXzY2NCQwIiwiZnZhbHVlXzY2OCIsImZpZWxkX3NleHBfNjY0JDEiLCJmdmFsdWVfNjY3IiwiZmllbGRfc2V4cF82NjQkMiIsImZ2YWx1ZV82NjYiLCJhbGlhc2VzXzY2MCIsImRvY182NTgiLCJuYW1lXzY1NiIsInNleHBfb2ZfdCQxNCIsImFsaWFzZXNfNjc4IiwiZG9jXzY3NiIsIm5hbWVfNjc0IiwiYXJnXzY3OSIsImJuZHNfNjczIiwiYXJnXzY3NyIsImJuZHNfNjczJDAiLCJhcmdfNjc1IiwiYm5kc182NzMkMSIsInBhcnNlX25hbWUiLCJudW1fb2NjdXJyZW5jZXMiLCJyZXF1aXJlc19hcmciLCJoZWxwX3NjcmVlbl9jb21wYXJlIiwid29yZF93cmFwX2FuZF9zdHJpcCIsIndpZHRoIiwiY2h1bmtzIiwid29yZCIsIndvcmRzIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4Iiwic2xhY2siLCJpbmRlbnRfYW5kX25ld2xpbmUiLCJsaHNfcGFkIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImZsYWciLCJmbGFnX25hbWVfd2l0aF9hbGlhc2VzIiwiZG9jdW1lbnRhdGlvbiIsImZsYWdfd2lkdGgiLCJmbGFnX29uX2l0c19vd25fbGluZSIsIndyYXBwZWRfZG9jdW1lbnRhdGlvbiIsImRvY193cmFwcGVkX3Jlc3RfbGluZXMiLCJkb2Nfd3JhcHBlZF9maXJzdF9saW5lIiwid3JhcHBlZF9kb2NfbGluZXMiLCJwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV8iLCJsb29rdXBfZXhwYW5kIiwia2V5X3R5cGUiLCJpc19kYXNoIiwiYWxpc3QkMCIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzY4MCIsIm1hdGNoaW5nX2tleXMiLCJjdXN0b21fcHJpbnRmXzY4MSIsImdyb3VwJDE4IiwiYmluX3NoYXBlX3QkMTciLCJiaW5fc2l6ZV90JDgiLCJiaW5fd3JpdGVfdCQ4IiwiYmluX3dyaXRlcl90JDciLCJiaW5fcmVhZF90JDE2IiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsImNvbXBhcmUkMTAiLCJhXzY4MiIsImJfNjgzIiwiYV82ODQiLCJiXzY4NSIsImFfNjg2IiwiYl82ODciLCJmbGFncyQwIiwiYW5vbnMkMCIsInJlYWRtZSQwIiwic3VtbWFyeSQwIiwibWFrZV9jcmVhdG9yJDEiLCJzdW1tYXJ5X2Z1biIsInJlYWRtZV9mdW4iLCJhbm9uc19mdW4iLCJmbGFnc19mdW4iLCJzdW1tYXJ5X2dlbiIsInJlYWRtZV9nZW4iLCJhbm9uc19nZW4iLCJmbGFnc19nZW4iLCJtYXAkNSIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDYiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJ0X29mX3NleHAkMTQiLCJzZXhwXzY4OSIsImZpZWxkX3NleHBzXzY5MCIsInN1bW1hcnlfNjkxIiwicmVhZG1lXzY5MyIsImFub25zXzY5NSIsImZsYWdzXzY5NyIsImR1cGxpY2F0ZXNfNjk5IiwiZXh0cmFfNzAwIiwic2V4cF82ODkkMCIsImZpZWxkX3NleHBzXzcwMyIsImZpZWxkX25hbWVfNzAxIiwidGFpbF83MTAiLCJmaWVsZF9zZXhwXzcwMiQ0IiwiZmllbGRfc2V4cF83MDIiLCJ4XzcxMSIsImZpZWxkX3NleHBfNzAyJDAiLCJmdmFsdWVfNzA3IiwiZmllbGRfc2V4cF83MDIkMSIsImZ2YWx1ZV83MDYiLCJmaWVsZF9zZXhwXzcwMiQyIiwiZnZhbHVlXzcwNCIsImZpZWxkX3NleHBfNzAyJDMiLCJmdmFsdWVfNzA1IiwidGFnXzYxMyIsInNleHBfYXJnc182MTQiLCJhcmcwXzYxNSIsInJlczBfNjE2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJyZWFkbWVfNjk0IiwiZmxhZ3NfNjk4IiwiYW5vbnNfNjk2Iiwic3VtbWFyeV82OTIiLCJzZXhwX29mX3QkMTUiLCJmbGFnc183MjEiLCJhbm9uc183MTkiLCJyZWFkbWVfNzE1Iiwic3VtbWFyeV83MTMiLCJhcmdfNzIyIiwiYm5kc183MTIiLCJhcmdfNzIwIiwiYm5kc183MTIkMCIsInZfNzE2IiwiYXJnXzcxOCIsImJuZF83MTciLCJibmRzXzcxMiQxIiwiYXJnXzcxNCIsImJuZHNfNzEyJDIiLCJmaW5kX2ZsYWciLCJjaG9pY2VzIiwiZmxhZ19pbmZvIiwiZ2V0X3VzYWdlIiwiZ3JvdXAkMTkiLCJiaW5fc2hhcGVfdCQxOCIsImJpbl9zaXplX3QkOSIsImJpbl93cml0ZV90JDkiLCJiaW5fd3JpdGVyX3QkOCIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZF90JDE5IiwiYmluX3JlYWRlcl90JDgiLCJiaW5fdCQ4IiwiY29tcGFyZSQxMSIsImFfNzI1IiwiYl83MjYiLCJhXzcyNyIsImJfNzI4IiwiYV83MjkiLCJiXzczMCIsImFfNzMxIiwiYl83MzIiLCJ0XzczNCIsInRfNzMzIiwidF83MzYiLCJ0XzczNSIsInJlYWRtZSQxIiwic3VtbWFyeSQxIiwic3ViY29tbWFuZHMkMCIsInJlYWRtZSQyIiwic3VtbWFyeSQyIiwibWFrZV9jcmVhdG9yJDIiLCJzdWJjb21tYW5kc19mdW4iLCJzdWJjb21tYW5kc19nZW4iLCJjcmVhdGUkMiIsIm1hcCQ3IiwiaXRlciQ1IiwiZm9sZCQ1IiwibWFwX3BvbHkkMiIsImZvcl9hbGwkNSIsImV4aXN0cyQ1IiwidG9fbGlzdCQ1IiwiaXRlciQ2IiwiZm9sZCQ2IiwiZm9yX2FsbCQ2IiwiZXhpc3RzJDYiLCJ0b19saXN0JDYiLCJtYXAkOCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMiIsInRfb2Zfc2V4cCQxNSIsIm9mX2FfNzM3Iiwic2V4cF83MzkiLCJmaWVsZF9zZXhwc183NDAiLCJzdW1tYXJ5Xzc0MSIsInJlYWRtZV83NDMiLCJzdWJjb21tYW5kc183NDUiLCJkdXBsaWNhdGVzXzc0NyIsImV4dHJhXzc0OCIsInNleHBfNzM5JDAiLCJmaWVsZF9zZXhwc183NTEiLCJmaWVsZF9uYW1lXzc0OSIsInRhaWxfNzYyIiwiZmllbGRfc2V4cF83NTAkMyIsImZpZWxkX3NleHBfNzUwIiwieF83NjMiLCJmaWVsZF9zZXhwXzc1MCQwIiwiZnZhbHVlXzc2MCIsImZpZWxkX3NleHBfNzUwJDEiLCJzZXhwXzc1NiIsImFyZzFfNzUzIiwiYXJnMF83NTIiLCJyZXMwXzc1NCIsInJlczFfNzU1IiwiZnZhbHVlXzc1OCIsImZpZWxkX3NleHBfNzUwJDIiLCJmdmFsdWVfNzU5IiwicmVhZG1lXzc0NCIsInN1YmNvbW1hbmRzXzc0NiIsInN1bW1hcnlfNzQyIiwic2V4cF9vZl90JDE2Iiwib2ZfYV83NjQiLCJzdWJjb21tYW5kc183NzIiLCJyZWFkbWVfNzY4Iiwic3VtbWFyeV83NjYiLCJibmRzXzc2NSIsImFyZzFfNzc1IiwiYXJnMF83NzQiLCJyZXMwXzc3NiIsInJlczFfNzc3IiwiYXJnXzc3MyIsImJuZHNfNzY1JDAiLCJ2Xzc2OSIsImFyZ183NzEiLCJibmRfNzcwIiwiYm5kc183NjUkMSIsImFyZ183NjciLCJibmRzXzc2NSQyIiwiZmluZF9zdWJjb21tYW5kIiwiZ3JvdXAkMjAiLCJiaW5fc2hhcGVfdCQxOSIsImJpbl9zaXplX3QkMTAiLCJiaW5fd3JpdGVfdCQxMCIsImJpbl93cml0ZXJfdCQ5IiwiYmluX3JlYWRfdCQyMCIsImJpbl9yZWFkX3QkMjEiLCJiaW5fcmVhZGVyX3QkOSIsImJpbl90JDkiLCJjb21wYXJlJDEyIiwiYV83NzgiLCJiXzc3OSIsImFfNzgwIiwiYl83ODEiLCJhXzc4MiIsImJfNzgzIiwiY2hpbGRfc3ViY29tbWFuZCIsInBhdGhfdG9fZXhlIiwid29ya2luZ19kaXIiLCJyZWFkbWUkMyIsInN1bW1hcnkkMyIsImNoaWxkX3N1YmNvbW1hbmQkMCIsInBhdGhfdG9fZXhlJDAiLCJ3b3JraW5nX2RpciQwIiwicmVhZG1lJDQiLCJzdW1tYXJ5JDQiLCJtYWtlX2NyZWF0b3IkMyIsIndvcmtpbmdfZGlyX2Z1biIsInBhdGhfdG9fZXhlX2Z1biIsImNoaWxkX3N1YmNvbW1hbmRfZnVuIiwid29ya2luZ19kaXJfZ2VuIiwicGF0aF90b19leGVfZ2VuIiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMTYiLCJzZXhwXzc4NSIsImZpZWxkX3NleHBzXzc4NiIsInN1bW1hcnlfNzg3IiwicmVhZG1lXzc4OSIsIndvcmtpbmdfZGlyXzc5MSIsInBhdGhfdG9fZXhlXzc5MyIsImNoaWxkX3N1YmNvbW1hbmRfNzk1IiwiZHVwbGljYXRlc183OTciLCJleHRyYV83OTgiLCJzZXhwXzc4NSQwIiwiZmllbGRfc2V4cHNfODAxIiwiZmllbGRfbmFtZV83OTkiLCJ0YWlsXzgwOSIsImZpZWxkX3NleHBfODAwJDUiLCJmaWVsZF9zZXhwXzgwMCIsInhfODEwIiwiZmllbGRfc2V4cF84MDAkMCIsImZ2YWx1ZV84MDQiLCJmaWVsZF9zZXhwXzgwMCQxIiwiZnZhbHVlXzgwNiIsImZpZWxkX3NleHBfODAwJDIiLCJmdmFsdWVfODA1IiwiZmllbGRfc2V4cF84MDAkMyIsImZ2YWx1ZV84MDMiLCJmaWVsZF9zZXhwXzgwMCQ0IiwiZnZhbHVlXzgwMiIsInJlYWRtZV83OTAiLCJjaGlsZF9zdWJjb21tYW5kXzc5NiIsInBhdGhfdG9fZXhlXzc5NCIsIndvcmtpbmdfZGlyXzc5MiIsInN1bW1hcnlfNzg4Iiwic2V4cF9vZl90JDE3IiwiY2hpbGRfc3ViY29tbWFuZF84MjIiLCJwYXRoX3RvX2V4ZV84MjAiLCJ3b3JraW5nX2Rpcl84MTgiLCJyZWFkbWVfODE0Iiwic3VtbWFyeV84MTIiLCJhcmdfODIzIiwiYm5kc184MTEiLCJhcmdfODIxIiwiYm5kc184MTEkMCIsImFyZ184MTkiLCJibmRzXzgxMSQxIiwidl84MTUiLCJhcmdfODE3IiwiYm5kXzgxNiIsImJuZHNfODExJDIiLCJhcmdfODEzIiwiYm5kc184MTEkMyIsImdyb3VwJDIxIiwiYmluX3NoYXBlX3QkMjAiLCJiaW5fc2l6ZV90JDExIiwiYmluX3dyaXRlX3QkMTEiLCJiaW5fd3JpdGVyX3QkMTAiLCJiaW5fcmVhZF90JDIyIiwiYmluX3JlYWRfdCQyMyIsImJpbl9yZWFkZXJfdCQxMCIsImJpbl90JDEwIiwiY29tcGFyZSQxMyIsImFfODI0IiwiYl84MjUiLCJhXzgyNCQwIiwiYl84MjUkMCIsImFfODI2IiwiYl84MjciLCJhXzgyOCIsImJfODI5IiwiYV84MzAiLCJiXzgzMSIsImFfODM0IiwiYV84MzIiLCJiXzgzNSIsImJfODMzIiwidF9vZl9zZXhwJDE3Iiwic2V4cF84NDAiLCJ0YWdfODQxIiwic2V4cF9hcmdzXzg0NyIsImFyZzBfODQ4IiwicmVzMF84NDkiLCJzZXhwX2FyZ3NfODUyIiwiYXJnMV84NTQiLCJhcmcwXzg1MyIsInJlczBfODU1IiwicmVzMV84NTYiLCJzZXhwX2FyZ3NfODQyIiwiYXJnMF84NDMiLCJyZXMwXzg0NCIsInNleHBfb2ZfdCQxOCIsImFyZzBfODU3IiwicmVzMF84NTgiLCJhcmcwXzg1OSIsInJlczBfODYwIiwiYXJnMV84NjIiLCJhcmcwXzg2MSIsInJlczBfODYzIiwicmVzMV84NjQiLCJleHBhbmRlZF9zdWJjb21tYW5kcyIsImV4cGFuZCIsInNleHBfb2ZfdCQxOSIsImFyZzBfODY1IiwicmVzMF84NjYiLCJhcmcwXzg2NyIsInJlczBfODY4IiwiYXJnMF84NjkiLCJyZXMwXzg3MCIsImFyZzBfODcxIiwicmVzMF84NzIiLCJleHRyYWN0aW9uX3ZhciIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJleHBlY3QiLCJleHBlY3QkMCIsImVycm9yX3NvdXJjZV8wMDciLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMxXzAxMSIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwibl9mcm9udCIsIm5fYmFjayIsImZyb250IiwiYmFjayIsInJldl9iYWNrIiwiZnJvbnQkMCIsInJldl9mcm9udCIsImJhY2skMCIsInJhaXNlX2Zyb250X2ludmFyaWFudCIsInJhaXNlX2JhY2tfaW52YXJpYW50IiwicGVla19mcm9udF9leG4iLCJwZWVrX2JhY2tfZXhuIiwiZHJvcF9mcm9udF9leG4iLCJkcm9wX2JhY2tfZXhuIiwib3B0aW9uYWwiLCJwZWVrX2Zyb250IiwicGVla19iYWNrIiwicGVlayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJidWlsZCIsIm9mX2Zvcm1hdCIsInRvX2Zvcm1hdCIsInNldF9hdCIsInNldF9pbnRlcm5hbCIsInNldF9pZl9ub25lIiwic2V0X2V4biIsImdldF9leG4iLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsImRpZSIsImtleV9jcmVhdGUiLCJtdWx0aV9hZGQiLCJzZXRfd2l0aF9kZWZhdWx0IiwicnVuX2FuZF9leGl0IiwiZW52IiwicGFydCIsImNvbXBsZXRpb25zIiwiZXh0cmFfZG9jIiwiY29tcGxldGUiLCJvZl9sYXp5IiwiZXh0cmFfZG9jJDAiLCJob3N0X2FuZF9wb3J0Iiwic2V4cF9jb252IiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJkdXBsaWNhdGVfa2V5cyIsIlMiLCJ1bml2X21hcCIsInZhbGlkX2FyZ3VtZW50c19leHRyYSIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImNvbW1hX3NlcGFyYXRlZCIsImFsbG93X2VtcHR5Iiwic3RyaXBfd2hpdGVzcGFjZSIsInVuaXF1ZV92YWx1ZXMiLCJjb21wbGV0ZV9lbHQiLCJoZCIsInByZWZpeGVzIiwic2Vlbl9hbHJlYWR5IiwiaXNfYWxsb3dlZCIsImNob2ljZSIsImNob2ljZXMkMCIsInN0cmluZyQwIiwicGFyc2UkMCIsImVudW1lcmF0ZV8wMTIiLCJlbnVtZXJhdGVfMDEzIiwiZW51bWVyYXRlXzAxMSIsImVudW1lcmF0ZV8wMTQiLCJlbnVtZXJhdGVfMDEwIiwiZW51bWVyYXRlXzAxNCQwIiwicGFyc2UkMSIsImFjdGlvbiIsImFyZ19kb2MiLCJkb2MkMSIsImFyZ19kb2MkMCIsIndyYXBfaWZfb3B0aW9uYWwiLCJoZWxwIiwiYWxpZ24iLCJhcmdfZmxhZyIsImFyZ190eXBlIiwid3JpdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJ3cml0ZV9vcHRpb24iLCJyZXF1aXJlZF92YWx1ZSIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsIm5vX2FyZ19nZW5lcmFsIiwia2V5X3ZhbHVlIiwiZGVwcmVjYXRlZF9ob29rIiwiYWN0aW9uJDAiLCJub19hcmciLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmdfc29tZSIsImxpc3RlZCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIiLCJxIiwib25lX29yX21vcmVfYXNfbGlzdCIsImVzY2FwZV9nZW5lcmFsIiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsInN1YmNvbW1hbmQiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJyZXBsYWNlX2ZpcnN0IiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsImNvbmNhdCQwIiwiY2RyIiwiY2FyIiwiY2RyJDAiLCJjYXIkMCIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInBhcnNlX21vcmUiLCJmb3JfY29tcGxldGlvbiIsInVwZGF0ZV9lbnYiLCJwYXJzZXIiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibW9yZSQwIiwidGVzdCQwIiwiYW5vbiIsImxvb3AiLCJjb25zdW1lIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsInQzIiwiYTMiLCJ0NCIsImE0Iiwic3RybGVuIiwic3BlY2lhbF9jaGFycyIsImhhc19zcGVjaWFsX2NoYXJzIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI3IiwiYl8wMjgiLCJhXzAzMSIsImJfMDMyIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiY3VzdG9tX3ByaW50Zl8wMzMiLCJjdXN0b21fcHJpbnRmXzAzNCIsInN1YmNvbW1hbmRfY21wX2ZzdCIsInNoYXBlIiwicGF0aF9rZXkiLCJhcmdzX2tleSIsImhlbHBfa2V5IiwiYXBwIiwicGYiLCJweCIsIm1mIiwibXgiLCJyZXR1cm4kMSIsIndyYXAiLCJtYWluIiwib2ZfcGFyYW0iLCJ0b19wYXJhbSIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiYm9vbCQwIiwicGVyY2VudCQwIiwiaG9zdF9hbmRfcG9ydCQwIiwic2V4cF9jb252JDAiLCJzcGVjIiwiZXNjYXBlX2Fub24iLCJmaW5hbF9hbm9uIiwiZnVsbF9mbGFnX3JlcXVpcmVkIiwiYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAiLCJjaGVja19hdmFpbGFibGUiLCJuYW1lX21hdGNoaW5nIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJib3RoIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0X2Jvb2wiLCJwYXNzZWQiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJmJDMiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1IiwiYXJnX25hbWVzIiwicGFyYW0iLCJmbGFnX25hbWVzIiwiYW5vbl9uYW1lcyIsIm5hbWVzX3dpdGhfY29tbWFzIiwidG9fc3RyaW5nJDEiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmUiLCJpZl9ub3RoaW5nX2Nob3NlbiIsInRzJDAiLCJjdXN0b21fcHJpbnRmXzA0MiIsImN1c3RvbV9wcmludGZfMDQzIiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInNoYXBlJDAiLCJzdWJjb21tYW5kX3RvX3NoYXBlIiwiY29tcF9jd29yZCIsInNoYXBlJDEiLCJzZXhwYWJsZV9zaGFwZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljX3NwZWMiLCJmbGFncyQxIiwiYmFzZSQwIiwic3Vic19rZXkiLCJsYXp5X2dyb3VwIiwicHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciIsImJvZHkiLCJwJDAiLCJwJDEiLCJwJDIiLCJvZl9sYXp5JDAiLCJwcm94eV9vZl9zZXhwYWJsZSIsInNleHBhYmxlIiwicGF0aF90b19zdWJjb21tYW5kIiwia2luZCIsImtpbmRfb2Zfc2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMCIsInByb3h5IiwicHJpbnRfdmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsInVudmVyc2lvbmVkIiwiYmFzZSQxIiwibm9ybWFsaXplX3ZlcnNpb25fbGluZXMiLCJkZWZhdWx0X3ZlcnNpb24iLCJkZWZhdWx0X2J1aWxkX2luZm8iLCJyZXByaW50X2J1aWxkX2luZm8iLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsInN0cmluZyQxIiwiaW50JDIiLCJjaGFyJDIiLCJmbG9hdCQyIiwiYm9vbCQxIiwicGVyY2VudCQxIiwiaG9zdF9hbmRfcG9ydCQxIiwic2V4cCQxIiwic2V4cF9jb252JDEiLCJiYXNpYyIsInBhcmFtcyIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsInNoYXBlJDIiLCJnZXRwaWQiLCJjbG9zZSIsImluX2NoYW5uZWxfb2ZfZGVzY3IiLCJ3YWl0IiwiZ2V0ZW52X2FuZF9jbGVhciIsInZhciQwIiwiaGVscF9zZXhwIiwicHJvZyIsImFyZ3YwIiwicHJvZ19zZWFyY2hfcGF0aCIsImNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0ciIsImVudl92YXIiLCJsaXN0JDEiLCJwcm9jZXNzX2luZm8iLCJzdGFydF9yZWFkaW5nIiwiZGVzY3IiLCJpbmZvIiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsInNoYXBlX29mX3Byb3h5Iiwic2hhcGVfb2ZfcHJveHlfa2luZCIsInNoYXBlX29mX2V4ZSIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwYXRoJDEiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsImVudiQxIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQiLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwid2hlbl9wYXJzaW5nX3N1Y2NlZWRzIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0IiwicGFyc2VyJDEiLCJjbWRsaW5lJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwiYWxpYXMiLCJmbGFnJDAiLCJmbGFnJDEiLCJjb21wbGV0aW5nIiwiY21kbGluZSQyIiwiZW52JDIiLCJwYXJzZV9mbGFnczIiLCJlbnYkMyIsInBhcnNlX2ZsYWdzJDAiLCJwYXJ0JDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJleG5fc3RyIiwidmVyYm9zZSIsImVycm9yX21zZyIsImRpZV9zaG93aW5nX2hlbHAiLCJwYXJzZV9ncm91cCIsIm1heWJlX25ld19jb21wX2N3b3JkJDAiLCJyZXNvbHZlIiwic3VicyQwIiwic3ViJDAiLCJib2R5JDAiLCJ0b19vdXRwdXQiLCJyZXN0X29mX3Jlc3QiLCJmaXJzdF9vZl9yZXN0IiwibmV3X3ZhbHVlJDAiLCJuZXdfdmFsdWUiLCJ0aHVuayQwIiwiYXJndiIsImJ1aWxkX2luZm8kMCIsInZlcnNpb24kMCIsInN1cHBvcnRlZF92ZXJzaW9ucyQwIiwicGF0aF90b19zdWJjb21tYW5kJDEiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMiIsImZuYW1lIiwiYXJndl8wIiwiY29tcF9jd29yZCQwIiwiZGVwcmVjYXRlZF9ydW4iLCJpc19oZWxwIiwiaXNfaGVscF9yZWMiLCJpc19oZWxwX3JlY19mbGFncyIsImlzX2V4cGFuZF9kb3RzIiwicGF0aF9zdHJpbmdzIiwiYXJncyQyIiwiYXJncyQzIiwiYXJncyQ0IiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsInR5cGVuYW1lX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJ0X3NleHBfZ3JhbW1hciQyIiwidHlwZW5hbWVfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJjaGVjayQyIiwidG9fc3RyaW5nJDIiLCJwcCQyIiwib2Zfc3RyaW5nJDIiLCJhcmdfdHlwZSQwIiwic2V4cF9hc19zdHJpbmciLCJ2XzAwMSIsInNlcmlhbGl6ZWRfc2V4cCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJ2XzAxMiIsInZfMDEzIiwicmVzMV8wMTciLCJleHBlY3RlZF9iaW5faW8iLCJiaW5hYmxlX20iLCJzZXJpYWxpemVkX2Jpbl9pbyIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJyZXMxXzAyNCIsInZfMDE5IiwicmVzMl8wMjUiLCJhcmcxXzAyOSIsImFyZzBfMDI4Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJyZXZfc2tpcHBlZCIsInN0cmluZ3MkMCIsImNvbnRpbnVlJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwidl8wNDQiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNDgiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwicGVybXV0YXRhdGlvbnMiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsImJsYW5nIiwiY21wX2EkMCIsImNtcF9hJDUiLCJjbXBfYSQxIiwiYV8wMTUiLCJiXzAxNiIsImNtcF9hJDYiLCJhXzAxNyIsImJfMDE4IiwiY21wX2EkMiIsImFfMDE5IiwiYl8wMjAiLCJjbXBfYSQ3IiwiY21wX2EkMyIsImFfMDIzIiwiYl8wMjQiLCJjbXBfYSQ4IiwiYV8wMzMiLCJiXzAzNCIsImNtcF9hJDQiLCJhXzAzNyQwIiwiYl8wMzgkMCIsImFfMDQxIiwiYV8wMzkiLCJiXzA0MiIsImJfMDQwIiwiYV8wNDMiLCJiXzA0NCIsImFfMDQ1IiwiYl8wNDYiLCJhXzA0OSIsImFfMDQ3IiwiYl8wNTAiLCJiXzA0OCIsImFfMDUzIiwiYl8wNTQiLCJhXzA2MyIsImJfMDY0IiwiYV8wNjUiLCJiXzA2NiIsImFfMDY3IiwiYl8wNjgiLCJhXzA2OSIsImJfMDcwIiwiYV8wNzEiLCJiXzA3MiIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidjAkMSIsInYwJDIiLCJ2MCQzIiwic3VidGVybXMiLCJ0MSQxIiwiY29udGFpbnNfbm9fY29uc3RhbnRzIiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5vdCIsImFuZGFsc28iLCJvdGhlciIsInQxYiIsInQxYSIsIm9yZWxzZSIsImlmJDAiLCJvZl9hXzA3MyIsImFyZzFfMDc1IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMF8wODIiLCJyZXMwXzA4MyIsImFyZzJfMDg2IiwiYXJnMV8wODUiLCJhcmcwXzA4NCIsInJlczBfMDg3IiwicmVzMV8wODgiLCJyZXMyXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJnYXRoZXJfY29uanVuY3RzIiwidHMkMSIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJraWxvYnl0ZXMiLCJtZWdhYnl0ZXMiLCJnaWdhYnl0ZXMiLCJ0ZXJhYnl0ZXMiLCJwZXRhYnl0ZXMiLCJleGFieXRlcyIsIndvcmRzX2ludF9leG4iLCJ3b3Jkc19mbG9hdCIsIm9mX2tpbG9ieXRlcyIsIm9mX21lZ2FieXRlcyIsIm9mX2dpZ2FieXRlcyIsIm9mX3RlcmFieXRlcyIsIm9mX3BldGFieXRlcyIsIm9mX2V4YWJ5dGVzIiwib2Zfd29yZHNfaW50Iiwib2Zfd29yZHNfZmxvYXRfZXhuIiwiYmFzZV9zdHIiLCJleHRfY2hhciIsImxhcmdlc3RfbWVhc3VyZSIsInRfYWJzIiwibm9fbWF0Y2giLCJ2YWxfc2V4cCIsInVuaXRfbmFtZSIsImN1c3RvbV9wcmludGZfMDA1IiwiY3VzdG9tX3ByaW50Zl8wMDYiLCJjdXN0b21fcHJpbnRmXzAwNyIsImN1c3RvbV9wcmludGZfMDA4IiwiY3VzdG9tX3ByaW50Zl8wMDkiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDExIiwidG9fc3RyaW5nX3Nob3J0IiwidG9fdW5pdHNfc3RyIiwidG9fdW5pdCIsImZfYWJzIiwiY3VzdG9tX3ByaW50Zl8wMTQiLCJjdXN0b21fcHJpbnRmXzAxNSIsImN1c3RvbV9wcmludGZfMDE2IiwiY3VzdG9tX3ByaW50Zl8wMTciLCJjdXN0b21fcHJpbnRmXzAxOCIsImN1c3RvbV9wcmludGZfMDE5IiwiY3VzdG9tX3ByaW50Zl8wMjAiLCJjdXN0b21fcHJpbnRmXzAyMSIsImN1c3RvbV9wcmludGZfMDIyIiwiY3VzdG9tX3ByaW50Zl8wMjMiLCJjdXN0b21fcHJpbnRmXzAyNCIsImN1c3RvbV9wcmludGZfMDI1IiwiY3VzdG9tX3ByaW50Zl8wMjYiLCJieXRlc19wZXJfd29yZCIsImVycm9yX3NvdXJjZV8wNjkiLCJlcnJvcl9zb3VyY2VfMTY5IiwiZXJyb3Jfc291cmNlXzI1MyIsInYxNiIsInYxNSIsInYxNCIsInYxMyIsInYxMiIsInYxMSIsInYxMCIsInY5IiwidjgiLCJzaXplJDYiLCJzaXplJDciLCJzaXplJDgiLCJzaXplJDkiLCJzaXplJDEwIiwic2l6ZSQxMSIsInNpemUkMTIiLCJzaXplJDEzIiwidl9taW5vcl93b3JkcyIsInZfcHJvbW90ZWRfd29yZHMiLCJ2X21ham9yX3dvcmRzIiwidl9taW5vcl9jb2xsZWN0aW9ucyIsInZfbWFqb3JfY29sbGVjdGlvbnMiLCJ2X2hlYXBfd29yZHMiLCJ2X2hlYXBfY2h1bmtzIiwidl9saXZlX3dvcmRzIiwidl9saXZlX2Jsb2NrcyIsInZfZnJlZV93b3JkcyIsInZfZnJlZV9ibG9ja3MiLCJ2X2xhcmdlc3RfZnJlZSIsInZfZnJhZ21lbnRzIiwidl9jb21wYWN0aW9ucyIsInZfdG9wX2hlYXBfd29yZHMiLCJ2X3N0YWNrX3NpemUiLCJuJDUiLCJuJDYiLCJuJDciLCJuJDgiLCJuJDkiLCJuJDEwIiwibiQxMSIsIm4kMTIiLCJuJDEzIiwiaHN2JDEwIiwiaHN2JDExIiwiaHN2JDEyIiwiaHN2JDEzIiwiaHN2JDE0Iiwic2V4cF8wMTQiLCJmaWVsZF9zZXhwc18wMTUiLCJtaW5vcl93b3Jkc18wMTYiLCJwcm9tb3RlZF93b3Jkc18wMTgiLCJtYWpvcl93b3Jkc18wMjAiLCJtaW5vcl9jb2xsZWN0aW9uc18wMjIiLCJtYWpvcl9jb2xsZWN0aW9uc18wMjQiLCJoZWFwX3dvcmRzXzAyNiIsImhlYXBfY2h1bmtzXzAyOCIsImxpdmVfd29yZHNfMDMwIiwibGl2ZV9ibG9ja3NfMDMyIiwiZnJlZV93b3Jkc18wMzQiLCJmcmVlX2Jsb2Nrc18wMzYiLCJsYXJnZXN0X2ZyZWVfMDM4IiwiZnJhZ21lbnRzXzA0MCIsImNvbXBhY3Rpb25zXzA0MiIsInRvcF9oZWFwX3dvcmRzXzA0NCIsInN0YWNrX3NpemVfMDQ2IiwiZHVwbGljYXRlc18wNDgiLCJleHRyYV8wNDkiLCJpdGVyXzA3MCIsInNleHBfMDE0JDAiLCJmaWVsZF9zZXhwc18wNTIiLCJmaWVsZF9uYW1lXzA1MCIsInRhaWxfMDcxIiwiZmllbGRfc2V4cF8wNTEkMTYiLCJmaWVsZF9zZXhwXzA1MSIsInhfMDcyIiwiZmllbGRfc2V4cF8wNTEkMCIsImZ2YWx1ZV8wNTQiLCJmaWVsZF9zZXhwXzA1MSQxIiwiZnZhbHVlXzA1MyIsImZpZWxkX3NleHBfMDUxJDIiLCJmaWVsZF9zZXhwXzA1MSQzIiwiZnZhbHVlXzA2OCIsImZpZWxkX3NleHBfMDUxJDQiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTEkNSIsImZpZWxkX3NleHBfMDUxJDYiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTEkNyIsImZ2YWx1ZV8wNjEiLCJmaWVsZF9zZXhwXzA1MSQ4IiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDUxJDkiLCJmdmFsdWVfMDU3IiwiZmllbGRfc2V4cF8wNTEkMTAiLCJmdmFsdWVfMDYzIiwiZmllbGRfc2V4cF8wNTEkMTEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTEkMTIiLCJmdmFsdWVfMDU5IiwiZmllbGRfc2V4cF8wNTEkMTMiLCJmdmFsdWVfMDU4IiwiZmllbGRfc2V4cF8wNTEkMTQiLCJmdmFsdWVfMDU2IiwiZmllbGRfc2V4cF8wNTEkMTUiLCJmdmFsdWVfMDU1Iiwic3RhY2tfc2l6ZV8wNDciLCJ0b3BfaGVhcF93b3Jkc18wNDUiLCJjb21wYWN0aW9uc18wNDMiLCJmcmFnbWVudHNfMDQxIiwibGFyZ2VzdF9mcmVlXzAzOSIsImZyZWVfYmxvY2tzXzAzNyIsImZyZWVfd29yZHNfMDM1IiwibGl2ZV9ibG9ja3NfMDMzIiwibGl2ZV93b3Jkc18wMzEiLCJoZWFwX2NodW5rc18wMjkiLCJoZWFwX3dvcmRzXzAyNyIsIm1ham9yX2NvbGxlY3Rpb25zXzAyNSIsIm1pbm9yX2NvbGxlY3Rpb25zXzAyMyIsIm1ham9yX3dvcmRzXzAyMSIsInByb21vdGVkX3dvcmRzXzAxOSIsIm1pbm9yX3dvcmRzXzAxNyIsInN0YWNrX3NpemVfMTA0IiwidG9wX2hlYXBfd29yZHNfMTAyIiwiY29tcGFjdGlvbnNfMTAwIiwiZnJhZ21lbnRzXzA5OCIsImxhcmdlc3RfZnJlZV8wOTYiLCJmcmVlX2Jsb2Nrc18wOTQiLCJmcmVlX3dvcmRzXzA5MiIsImxpdmVfYmxvY2tzXzA5MCIsImxpdmVfd29yZHNfMDg4IiwiaGVhcF9jaHVua3NfMDg2IiwiaGVhcF93b3Jkc18wODQiLCJtYWpvcl9jb2xsZWN0aW9uc18wODIiLCJtaW5vcl9jb2xsZWN0aW9uc18wODAiLCJtYWpvcl93b3Jkc18wNzgiLCJwcm9tb3RlZF93b3Jkc18wNzYiLCJtaW5vcl93b3Jkc18wNzQiLCJibmRzXzA3MyIsImFyZ18xMDMiLCJibmRzXzA3MyQwIiwiYXJnXzEwMSIsImJuZHNfMDczJDEiLCJhcmdfMDk5IiwiYm5kc18wNzMkMiIsImFyZ18wOTciLCJibmRzXzA3MyQzIiwiYXJnXzA5NSIsImJuZHNfMDczJDQiLCJhcmdfMDkzIiwiYm5kc18wNzMkNSIsImFyZ18wOTEiLCJibmRzXzA3MyQ2IiwiYXJnXzA4OSIsImJuZHNfMDczJDciLCJhcmdfMDg3IiwiYm5kc18wNzMkOCIsImFyZ18wODUiLCJibmRzXzA3MyQ5IiwiYXJnXzA4MyIsImJuZHNfMDczJDEwIiwiYXJnXzA4MSIsImJuZHNfMDczJDExIiwiYXJnXzA3OSIsImJuZHNfMDczJDEyIiwiYXJnXzA3NyIsImJuZHNfMDczJDEzIiwiYXJnXzA3NSIsImJuZHNfMDczJDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwiYV8xMDYiLCJiXzEwNyIsIm4kMTQiLCJhXzEwOCIsImJfMTA5IiwiaHN2JDE1Iiwic2V4cF8xMTEiLCJmaWVsZF9zZXhwc18xMTIiLCJtaW5vcl93b3Jkc18xMTMiLCJwcm9tb3RlZF93b3Jkc18xMTUiLCJtYWpvcl93b3Jkc18xMTciLCJtaW5vcl9jb2xsZWN0aW9uc18xMTkiLCJtYWpvcl9jb2xsZWN0aW9uc18xMjEiLCJoZWFwX3dvcmRzXzEyMyIsImhlYXBfY2h1bmtzXzEyNSIsImxpdmVfd29yZHNfMTI3IiwibGl2ZV9ibG9ja3NfMTI5IiwiZnJlZV93b3Jkc18xMzEiLCJmcmVlX2Jsb2Nrc18xMzMiLCJsYXJnZXN0X2ZyZWVfMTM1IiwiZnJhZ21lbnRzXzEzNyIsImNvbXBhY3Rpb25zXzEzOSIsInRvcF9oZWFwX3dvcmRzXzE0MSIsInN0YWNrX3NpemVfMTQzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzE0NSIsImR1cGxpY2F0ZXNfMTQ3IiwiZXh0cmFfMTQ4IiwiaXRlcl8xNzAiLCJzZXhwXzExMSQwIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTUwJDE3IiwiZmllbGRfc2V4cF8xNTAiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTUwJDAiLCJmdmFsdWVfMTU0IiwiZmllbGRfc2V4cF8xNTAkMSIsImZ2YWx1ZV8xNTMiLCJmaWVsZF9zZXhwXzE1MCQyIiwiZmllbGRfc2V4cF8xNTAkMyIsImZpZWxkX3NleHBfMTUwJDQiLCJmdmFsdWVfMTY1IiwiZmllbGRfc2V4cF8xNTAkNSIsImZ2YWx1ZV8xNjYiLCJmaWVsZF9zZXhwXzE1MCQ2IiwiZnZhbHVlXzE2NCIsImZpZWxkX3NleHBfMTUwJDciLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTAkOCIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1MCQ5IiwiZnZhbHVlXzE1NyIsImZpZWxkX3NleHBfMTUwJDEwIiwiZnZhbHVlXzE2MyIsImZpZWxkX3NleHBfMTUwJDExIiwiZnZhbHVlXzE2MiIsImZpZWxkX3NleHBfMTUwJDEyIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTUwJDEzIiwiZnZhbHVlXzE1OCIsImZpZWxkX3NleHBfMTUwJDE0IiwiZnZhbHVlXzE1NiIsImZpZWxkX3NleHBfMTUwJDE1IiwiZnZhbHVlXzE1MiIsImZpZWxkX3NleHBfMTUwJDE2IiwiZnZhbHVlXzE1NSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNDYiLCJzdGFja19zaXplXzE0NCIsInRvcF9oZWFwX3dvcmRzXzE0MiIsImNvbXBhY3Rpb25zXzE0MCIsImZyYWdtZW50c18xMzgiLCJsYXJnZXN0X2ZyZWVfMTM2IiwiZnJlZV9ibG9ja3NfMTM0IiwiZnJlZV93b3Jkc18xMzIiLCJsaXZlX2Jsb2Nrc18xMzAiLCJsaXZlX3dvcmRzXzEyOCIsImhlYXBfY2h1bmtzXzEyNiIsImhlYXBfd29yZHNfMTI0IiwibWFqb3JfY29sbGVjdGlvbnNfMTIyIiwibWlub3JfY29sbGVjdGlvbnNfMTIwIiwibWFqb3Jfd29yZHNfMTE4IiwicHJvbW90ZWRfd29yZHNfMTE2IiwibWlub3Jfd29yZHNfMTE0IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzIwNiIsInN0YWNrX3NpemVfMjA0IiwidG9wX2hlYXBfd29yZHNfMjAyIiwiY29tcGFjdGlvbnNfMjAwIiwiZnJhZ21lbnRzXzE5OCIsImxhcmdlc3RfZnJlZV8xOTYiLCJmcmVlX2Jsb2Nrc18xOTQiLCJmcmVlX3dvcmRzXzE5MiIsImxpdmVfYmxvY2tzXzE5MCIsImxpdmVfd29yZHNfMTg4IiwiaGVhcF9jaHVua3NfMTg2IiwiaGVhcF93b3Jkc18xODQiLCJtYWpvcl9jb2xsZWN0aW9uc18xODIiLCJtaW5vcl9jb2xsZWN0aW9uc18xODAiLCJtYWpvcl93b3Jkc18xNzgiLCJwcm9tb3RlZF93b3Jkc18xNzYiLCJtaW5vcl93b3Jkc18xNzQiLCJhcmdfMjA3IiwiYm5kc18xNzMiLCJhcmdfMjA1IiwiYm5kc18xNzMkMCIsImFyZ18yMDMiLCJibmRzXzE3MyQxIiwiYXJnXzIwMSIsImJuZHNfMTczJDIiLCJhcmdfMTk5IiwiYm5kc18xNzMkMyIsImFyZ18xOTciLCJibmRzXzE3MyQ0IiwiYXJnXzE5NSIsImJuZHNfMTczJDUiLCJhcmdfMTkzIiwiYm5kc18xNzMkNiIsImFyZ18xOTEiLCJibmRzXzE3MyQ3IiwiYXJnXzE4OSIsImJuZHNfMTczJDgiLCJhcmdfMTg3IiwiYm5kc18xNzMkOSIsImJuZHNfMTczJDEwIiwiYm5kc18xNzMkMTEiLCJibmRzXzE3MyQxMiIsImFyZ18xNzkiLCJibmRzXzE3MyQxMyIsImJuZHNfMTczJDE0IiwiYXJnXzE3NSIsImJuZHNfMTczJDE1Iiwidl9taW5vcl9oZWFwX3NpemUiLCJ2X21ham9yX2hlYXBfaW5jcmVtZW50Iiwidl9zcGFjZV9vdmVyaGVhZCIsInZfdmVyYm9zZSIsInZfbWF4X292ZXJoZWFkIiwidl9zdGFja19saW1pdCIsInZfYWxsb2NhdGlvbl9wb2xpY3kiLCJ2X3dpbmRvd19zaXplIiwidl9jdXN0b21fbWFqb3JfcmF0aW8iLCJ2X2N1c3RvbV9taW5vcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX21heF9zaXplIiwiYV8yMDgiLCJiXzIwOSIsImFfMjEwIiwiYl8yMTEiLCJzZXhwXzIxMyIsImZpZWxkX3NleHBzXzIxNCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTUiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yMTciLCJzcGFjZV9vdmVyaGVhZF8yMTkiLCJ2ZXJib3NlXzIyMSIsIm1heF9vdmVyaGVhZF8yMjMiLCJzdGFja19saW1pdF8yMjUiLCJhbGxvY2F0aW9uX3BvbGljeV8yMjciLCJ3aW5kb3dfc2l6ZV8yMjkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMjMxIiwiY3VzdG9tX21pbm9yX3JhdGlvXzIzMyIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzUiLCJkdXBsaWNhdGVzXzIzNyIsImV4dHJhXzIzOCIsIml0ZXJfMjU0Iiwic2V4cF8yMTMkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNTUiLCJmaWVsZF9zZXhwXzI0MCQxMSIsImZpZWxkX3NleHBfMjQwIiwieF8yNTYiLCJmaWVsZF9zZXhwXzI0MCQwIiwiZnZhbHVlXzI0NSIsImZpZWxkX3NleHBfMjQwJDEiLCJmdmFsdWVfMjQ5IiwiZmllbGRfc2V4cF8yNDAkMiIsImZ2YWx1ZV8yNDciLCJmaWVsZF9zZXhwXzI0MCQzIiwiZnZhbHVlXzI1MCIsImZpZWxkX3NleHBfMjQwJDQiLCJmdmFsdWVfMjUyIiwiZmllbGRfc2V4cF8yNDAkNSIsImZ2YWx1ZV8yNDgiLCJmaWVsZF9zZXhwXzI0MCQ2IiwiZnZhbHVlXzI1MSIsImZpZWxkX3NleHBfMjQwJDciLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkOCIsImZ2YWx1ZV8yNDIiLCJmaWVsZF9zZXhwXzI0MCQ5IiwiZnZhbHVlXzI0NCIsImZpZWxkX3NleHBfMjQwJDEwIiwiZnZhbHVlXzI0NiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzYiLCJjdXN0b21fbWlub3JfcmF0aW9fMjM0IiwiY3VzdG9tX21ham9yX3JhdGlvXzIzMiIsIndpbmRvd19zaXplXzIzMCIsImFsbG9jYXRpb25fcG9saWN5XzIyOCIsInN0YWNrX2xpbWl0XzIyNiIsIm1heF9vdmVyaGVhZF8yMjQiLCJ2ZXJib3NlXzIyMiIsInNwYWNlX292ZXJoZWFkXzIyMCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzIxOCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTYiLCJjdXN0b21fbWlub3JfbWF4X3NpemVfMjc4IiwiY3VzdG9tX21pbm9yX3JhdGlvXzI3NiIsImN1c3RvbV9tYWpvcl9yYXRpb18yNzQiLCJ3aW5kb3dfc2l6ZV8yNzIiLCJhbGxvY2F0aW9uX3BvbGljeV8yNzAiLCJzdGFja19saW1pdF8yNjgiLCJtYXhfb3ZlcmhlYWRfMjY2IiwidmVyYm9zZV8yNjQiLCJzcGFjZV9vdmVyaGVhZF8yNjIiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yNjAiLCJtaW5vcl9oZWFwX3NpemVfMjU4IiwiYm5kc18yNTciLCJhcmdfMjc3IiwiYm5kc18yNTckMCIsImFyZ18yNzUiLCJibmRzXzI1NyQxIiwiYXJnXzI3MyIsImJuZHNfMjU3JDIiLCJhcmdfMjcxIiwiYm5kc18yNTckMyIsImFyZ18yNjkiLCJibmRzXzI1NyQ0IiwiYXJnXzI2NyIsImJuZHNfMjU3JDUiLCJhcmdfMjY1IiwiYm5kc18yNTckNiIsImFyZ18yNjMiLCJibmRzXzI1NyQ3IiwiYXJnXzI2MSIsImJuZHNfMjU3JDgiLCJhcmdfMjU5IiwiYm5kc18yNTckOSIsImFfMjgwIiwiYl8yODEiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfMzE1Iiwic3RhY2tfc2l6ZV8zMTMiLCJ0b3BfaGVhcF93b3Jkc18zMTEiLCJjb21wYWN0aW9uc18zMDkiLCJmcmFnbWVudHNfMzA3IiwibGFyZ2VzdF9mcmVlXzMwNSIsImZyZWVfYmxvY2tzXzMwMyIsImZyZWVfd29yZHNfMzAxIiwibGl2ZV9ibG9ja3NfMjk5IiwibGl2ZV93b3Jkc18yOTciLCJoZWFwX2NodW5rc18yOTUiLCJoZWFwX3dvcmRzXzI5MyIsIm1ham9yX2NvbGxlY3Rpb25zXzI5MSIsIm1pbm9yX2NvbGxlY3Rpb25zXzI4OSIsIm1ham9yX3dvcmRzXzI4NyIsInByb21vdGVkX3dvcmRzXzI4NSIsIm1pbm9yX3dvcmRzXzI4MyIsImFyZ18zMTYiLCJibmRzXzI4MiIsImFyZ18zMTQiLCJibmRzXzI4MiQwIiwiYXJnXzMxMiIsImJuZHNfMjgyJDEiLCJhcmdfMzEwIiwiYm5kc18yODIkMiIsImFyZ18zMDgiLCJibmRzXzI4MiQzIiwiYXJnXzMwNiIsImJuZHNfMjgyJDQiLCJhcmdfMzA0IiwiYm5kc18yODIkNSIsImFyZ18zMDIiLCJibmRzXzI4MiQ2IiwiYXJnXzMwMCIsImJuZHNfMjgyJDciLCJhcmdfMjk4IiwiYm5kc18yODIkOCIsImFyZ18yOTYiLCJibmRzXzI4MiQ5IiwiYXJnXzI5NCIsImJuZHNfMjgyJDEwIiwiYXJnXzI5MiIsImJuZHNfMjgyJDExIiwiYXJnXzI5MCIsImJuZHNfMjgyJDEyIiwiYXJnXzI4OCIsImJuZHNfMjgyJDEzIiwiYXJnXzI4NiIsImJuZHNfMjgyJDE0IiwiYXJnXzI4NCIsImJuZHNfMjgyJDE1IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwic3RhY2tfc2l6ZSIsInRvcF9oZWFwX3dvcmRzIiwiY29tcGFjdGlvbnMiLCJmcmFnbWVudHMiLCJsYXJnZXN0X2ZyZWUiLCJmcmVlX2Jsb2NrcyIsImZyZWVfd29yZHMiLCJsaXZlX2Jsb2NrcyIsImxpdmVfd29yZHMiLCJoZWFwX2NodW5rcyIsImhlYXBfd29yZHMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwibWFqb3Jfd29yZHMiLCJwcm9tb3RlZF93b3JkcyIsIm1pbm9yX3dvcmRzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zJDAiLCJzdGFja19zaXplJDAiLCJ0b3BfaGVhcF93b3JkcyQwIiwiY29tcGFjdGlvbnMkMCIsImZyYWdtZW50cyQwIiwibGFyZ2VzdF9mcmVlJDAiLCJmcmVlX2Jsb2NrcyQwIiwiZnJlZV93b3JkcyQwIiwibGl2ZV9ibG9ja3MkMCIsImxpdmVfd29yZHMkMCIsImhlYXBfY2h1bmtzJDAiLCJoZWFwX3dvcmRzJDAiLCJtYWpvcl9jb2xsZWN0aW9ucyQwIiwibWlub3JfY29sbGVjdGlvbnMkMCIsIm1ham9yX3dvcmRzJDAiLCJwcm9tb3RlZF93b3JkcyQwIiwibWlub3Jfd29yZHMkMCIsIm1pbm9yX3dvcmRzX2Z1biIsInByb21vdGVkX3dvcmRzX2Z1biIsIm1ham9yX3dvcmRzX2Z1biIsIm1pbm9yX2NvbGxlY3Rpb25zX2Z1biIsIm1ham9yX2NvbGxlY3Rpb25zX2Z1biIsImhlYXBfd29yZHNfZnVuIiwiaGVhcF9jaHVua3NfZnVuIiwibGl2ZV93b3Jkc19mdW4iLCJsaXZlX2Jsb2Nrc19mdW4iLCJmcmVlX3dvcmRzX2Z1biIsImZyZWVfYmxvY2tzX2Z1biIsImxhcmdlc3RfZnJlZV9mdW4iLCJmcmFnbWVudHNfZnVuIiwiY29tcGFjdGlvbnNfZnVuIiwidG9wX2hlYXBfd29yZHNfZnVuIiwic3RhY2tfc2l6ZV9mdW4iLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZnVuIiwibWlub3Jfd29yZHNfZ2VuIiwicHJvbW90ZWRfd29yZHNfZ2VuIiwibWFqb3Jfd29yZHNfZ2VuIiwibWlub3JfY29sbGVjdGlvbnNfZ2VuIiwibWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiaGVhcF93b3Jkc19nZW4iLCJoZWFwX2NodW5rc19nZW4iLCJsaXZlX3dvcmRzX2dlbiIsImxpdmVfYmxvY2tzX2dlbiIsImZyZWVfd29yZHNfZ2VuIiwiZnJlZV9ibG9ja3NfZ2VuIiwibGFyZ2VzdF9mcmVlX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwiZnJhZ21lbnRzX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiY29tcGFjdGlvbnNfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJ0b3BfaGVhcF93b3Jkc19nZW4iLCJjb21waWxlX2FjYyQxNSIsInN0YWNrX3NpemVfZ2VuIiwiY29tcGlsZV9hY2MkMTYiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiYV8zMTciLCJiXzMxOCIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8zNDAiLCJjdXN0b21fbWlub3JfcmF0aW9fMzM4IiwiY3VzdG9tX21ham9yX3JhdGlvXzMzNiIsIndpbmRvd19zaXplXzMzNCIsImFsbG9jYXRpb25fcG9saWN5XzMzMiIsInN0YWNrX2xpbWl0XzMzMCIsIm1heF9vdmVyaGVhZF8zMjgiLCJ2ZXJib3NlXzMyNiIsInNwYWNlX292ZXJoZWFkXzMyNCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzMyMiIsIm1pbm9yX2hlYXBfc2l6ZV8zMjAiLCJhcmdfMzQxIiwiYm5kc18zMTkiLCJhcmdfMzM5IiwiYm5kc18zMTkkMCIsImFyZ18zMzciLCJibmRzXzMxOSQxIiwiYm5kc18zMTkkMiIsImJuZHNfMzE5JDMiLCJibmRzXzMxOSQ0IiwiYm5kc18zMTkkNSIsImFyZ18zMjciLCJibmRzXzMxOSQ2IiwiYm5kc18zMTkkNyIsImFyZ18zMjMiLCJibmRzXzMxOSQ4IiwiYXJnXzMyMSIsImJuZHNfMzE5JDkiLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJzcGFjZV9vdmVyaGVhZCIsIm1ham9yX2hlYXBfaW5jcmVtZW50IiwibWlub3JfaGVhcF9zaXplIiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWlub3JfaGVhcF9zaXplX2Z1biIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2Z1biIsInNwYWNlX292ZXJoZWFkX2Z1biIsInZlcmJvc2VfZnVuIiwibWF4X292ZXJoZWFkX2Z1biIsInN0YWNrX2xpbWl0X2Z1biIsImFsbG9jYXRpb25fcG9saWN5X2Z1biIsIndpbmRvd19zaXplX2Z1biIsImN1c3RvbV9tYWpvcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZnVuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2Z1biIsIm1pbm9yX2hlYXBfc2l6ZV9nZW4iLCJtYWpvcl9oZWFwX2luY3JlbWVudF9nZW4iLCJzcGFjZV9vdmVyaGVhZF9nZW4iLCJ2ZXJib3NlX2dlbiIsIm1heF9vdmVyaGVhZF9nZW4iLCJzdGFja19saW1pdF9nZW4iLCJhbGxvY2F0aW9uX3BvbGljeV9nZW4iLCJ3aW5kb3dfc2l6ZV9nZW4iLCJjdXN0b21fbWFqb3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX3JhdGlvX2dlbiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV9nZW4iLCJlcXVhbCQ1IiwidHVuZSIsImxvZ2dlciIsIm9sZF9jb250cm9sX3BhcmFtcyIsImZpZWxkIiwib2xkX3ZhbHVlIiwibmV3X2NvbnRyb2xfcGFyYW1zIiwiZGlzYWJsZV9jb21wYWN0aW9uIiwicG9saWN5Iiwia2VlcF9hbGl2ZSIsIm8iLCJwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWwiLCJtZWFzdXJlX2ludGVybmFsIiwib25fcmVzdWx0IiwibWlub3Jfd29yZHNfYmVmb3JlIiwibWFqb3Jfd29yZHNfYmVmb3JlIiwibWlub3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hZnRlciIsIm1ham9yX3dvcmRzX2FsbG9jYXRlZCIsIm1pbm9yX3dvcmRzX2FsbG9jYXRlZCIsImlzX3plcm9fYWxsb2MiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMzQ5IiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzM0NyIsImFyZ18zNTAiLCJibmRzXzM0NiIsImFyZ18zNDgiLCJibmRzXzM0NiQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzM1NiIsImlzX21ham9yXzM1NCIsInNpemVfaW5fd29yZHNfMzUyIiwiYXJnXzM1NyIsImJuZHNfMzUxIiwiYXJnXzM1NSIsImJuZHNfMzUxJDAiLCJhcmdfMzUzIiwiYm5kc18zNTEkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImJhY2t0cmFjZSIsImJhY2t0cmFjZSQwIiwiaW5mbyQwIiwidHJhY2tlciIsImFkZF9maW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmaW5hbGl6ZV9yZWxlYXNlIiwidG9fc3RhYmxlX2Zvcm1hdCIsIm9mX3N0YWJsZV9mb3JtYXQiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwiY2FuX3NlbmRfdG8iLCJvZl9zeXN0ZW1faW50Iiwic2VuZCIsInNlbmRfZXhuIiwic2VuZF9pIiwic2V4cF9vZl9waWRfc3BlYyIsInNpZ3BlbmRpbmciLCJzaWdwcm9jbWFzayIsInNpZ3N1c3BlbmQiLCJ0b19zeXN0ZW1faW50Iiwic2lnbmFsIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJwcmludCIsImNhdGNoJDAiLCJwcmludF9iYWNrdHJhY2UiLCJnZXRfYmFja3RyYWNlIiwicmVjb3JkX2JhY2t0cmFjZSIsImJhY2t0cmFjZV9zdGF0dXMiLCJjYXB0dXJlIiwiZ2VuZXJhbCIsImhhc2hhYmxlJDEiLCJjYWNoZV9zaXplX2JvdW5kIiwibWF4X2NhY2hlX3NpemUiLCJjYWNoZSQwIiwiY2FjaGUiLCJyZWFsbHlfY2FsbF9mIiwiZl9vbmVzdGVwIiwibWVtb2l6ZWQiLCJvZl9jb21wYXJhYmxlIiwidiQxIiwiaW5pdGlhbF9sZW5ndGgiLCJuZXZlcl9zaHJpbmsiLCJuZXZlcl9zaHJpbmskMCIsImluaXRpYWxfbGVuZ3RoJDAiLCJhcnJfbGVuZ3RoIiwiYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfIiwiYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lIiwiYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtIiwiYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wIiwiY2hlY2tlZCIsImFwcGFyZW50X2Zyb250X2luZGV4IiwiYXBwYXJlbnRfYmFja19pbmRleCIsImFwcGFyZW50X2Zyb250IiwiYXBwYXJlbnRfYmFjayIsImFjdHVhbF9mcm9udCIsImFjdHVhbF9iYWNrIiwiYXBwYXJlbnRfaSIsInJlYWxfaSIsInN0b3BfcG9zIiwiYXBwYXJlbnRfaSQwIiwicmVhbF9pJDAiLCJyZWFsX2kkMSIsImFwcGFyZW50X2kkMSIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiaXRlcmlfaW50ZXJuYWwiLCJuZXdfYXJyIiwib2xkX2FyciIsImJyZWFrX3BvcyIsIm1heWJlX3Nocmlua191bmRlcmx5aW5nIiwiZ3Jvd191bmRlcmx5aW5nIiwicGVla19mcm9udF9ub25lbXB0eSIsInBlZWtfYmFja19ub25lbXB0eSIsImRlcXVldWVfZnJvbnRfbm9uZW1wdHkiLCJkZXF1ZXVlX2JhY2tfbm9uZW1wdHkiLCJkcm9wX2dlbiIsImFzc2VydF9ub3RfZW1wdHkiLCJ0cnVlX2luZGV4X2V4biIsImlfZnJvbV96ZXJvIiwidHJ1ZV9pIiwiZ2V0X29wdCIsImJhY2tfaW5kZXhfZXhuIiwiZnJvbnRfaW5kZXhfZXhuIiwiZ2V0JDAiLCJ1bnRyYW5zbGF0ZWRfaSIsImVwcmludCIsImVwcmludHMiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwiYXJnMV8wMDYiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsImNvbmNhdF9xdW90ZWQiLCJzcGxpdF9jb21tYW5kIiwiYWRkX3VuaXQiLCJ1bnRpbF9lbXB0eSIsImJzdHJfMDAyIiwicG9zXzAwNCIsImxlbl8wMDYiLCJpbml0XzAwOCIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwicmVzaXplIiwibWluX2xlbiIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW50ZXJuYWwiLCJic3RyIiwiY29udGVudHNfYnl0ZXMiLCJiaWdfY29udGVudHMiLCJ2b2xhdGlsZV9jb250ZW50cyIsImFkZF9jaGFyIiwicmVzZXQiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3BvcyIsImFkZF9zdWJieXRlcyIsImFkZF9iaWdzdHJpbmciLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJ1Zl9kc3QiLCJidWZfc3JjIiwiYWRkX2Jpbl9wcm90IiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwiaSQ0IiwicHJldmlvdXMkMCIsImkkNSIsIm9wZW5pbmciLCJsaW0kMCIsImkkMiIsImkkMyIsIm5ld19zdGFydCIsImskMiIsImNsb3NpbmciLCJsaW0iLCJpJDEiLCJuZXh0X2kiLCJpJDYiLCJpJDciLCJpJDgiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwidl9pbmRleCIsInZfbWluX2luZGV4Iiwidl9tYXhfaW5kZXgiLCJhcmc1XzAwOSIsImFyZzRfMDA4IiwiYXJnM18wMDciLCJhcmcyXzAwNiIsInJlczJfMDEyIiwicmVzM18wMTMiLCJyZXM0XzAxNCIsInJlczVfMDE1IiwiYXJnNV8wMjMiLCJhcmc0XzAyMiIsImFyZzNfMDIxIiwiYXJnMl8wMjAiLCJhcmcxXzAxOSIsImFyZzBfMDE4IiwicmVzNV8wMjkiLCJsYWJlbCIsImNyZWF0ZV9hbGwiLCJtYXhfaW5kZXgiLCJtaW5faW5kZXgiLCJkb2VzX3JhaXNlIiwic3ltYm9sJDE4IiwiaGFuZGxlcnMiLCJrZXkiLCJpbnAiLCJjYWxsYmFjayIsInZhbHVlIiwiaW5qZWN0IiwidiIsImNhbGxlZCIsImNhbGxiYWNrJDAiLCJhIiwiaGFuZGxlIiwicyIsInByaW50X3MiLCJOZXZlciIsInJldHVybiQwIiwiYmluZCIsInQiLCJmIiwib2ZfZnVuIiwibGF6eSIsIm1hcCIsImV2YWwkMCIsInQkMCIsInQkMSIsImwiLCJmJDAiLCJ0JDIiLCJjYWxsYmFjayQzIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDQiLCJjYWxsYmFjayQyIiwiaGFuZGxlJDAiLCJoYW5kbGUkMSIsIm9uX3Jlc3BvbnNlIiwib2Zfc3luY19mdW4iLCJtYWtlIiwicmVxdWVzdCIsInJlc3BvbmRfdG8iLCJyZXNwb25zZSIsIm1ha2UkMCIsImV2YWx1YXRvciIsImNyZWF0ZSIsInVwb24iLCJoYW5kbGVyIiwieCIsImZpbGxfaWZfZW1wdHkiLCJwZWVrIiwiaGFuZGxlJDIiLCJvZl9zdmFyX2Z1biIsImNyZWF0ZSQwIiwicXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIiwicXVlcnkiLCJtYXliZV9yZXNwb25kIiwicmVzcCIsIm9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIiLCJxcnQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1MiIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyOCIsImVycm9yX3NvdXJjZV8xNjEiLCJlcnJvcl9zb3VyY2VfMTkzIiwiZXJyb3Jfc291cmNlXzI0MSIsImVycm9yX3NvdXJjZV8yNDMiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwic2V4cF8wMzMiLCJmaWVsZF9zZXhwc18wMzQiLCJyXzAzNSIsImdfMDM3IiwiYl8wMzkiLCJhXzA0MSIsImR1cGxpY2F0ZXNfMDQzIiwiZXh0cmFfMDQ0Iiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0NyIsImZpZWxkX25hbWVfMDQ1IiwidGFpbF8wNTQiLCJmaWVsZF9zZXhwXzA0NiQ0IiwiZmllbGRfc2V4cF8wNDYiLCJ4XzA1NSIsImZpZWxkX3NleHBfMDQ2JDAiLCJmdmFsdWVfMDUxIiwiZmllbGRfc2V4cF8wNDYkMSIsImZ2YWx1ZV8wNTAiLCJmaWVsZF9zZXhwXzA0NiQyIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDQ4IiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJzZXhwX29mX3QkMCIsImFfMDYzIiwiYl8wNjEiLCJnXzA1OSIsInJfMDU3IiwiYXJnXzA2NCIsImJuZHNfMDU2IiwiYXJnXzA2MiIsImJuZHNfMDU2JDAiLCJhcmdfMDYwIiwiYm5kc18wNTYkMSIsImFyZ18wNTgiLCJibmRzXzA1NiQyIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2NCIsInYzIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QkMCIsInBvcyQxIiwicG9zJDIiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsInZfciIsInZfZyIsInZfYiIsInZfYSIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDY1IiwiYl8wNjYiLCJuJDAiLCJuJDEiLCJhXzA2NyIsImJfMDY4IiwiZyIsImEiLCJ0X29mX3NleHAkMSIsInNleHBfMDcwIiwiZmllbGRfc2V4cHNfMDcxIiwiaF8wNzIiLCJzXzA3NCIsImxfMDc2IiwiYV8wNzgiLCJkdXBsaWNhdGVzXzA4MCIsImV4dHJhXzA4MSIsInNleHBfMDcwJDAiLCJmaWVsZF9zZXhwc18wODQiLCJmaWVsZF9uYW1lXzA4MiIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODMkNCIsImZpZWxkX3NleHBfMDgzIiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4MyQwIiwiZnZhbHVlXzA4NyIsImZpZWxkX3NleHBfMDgzJDEiLCJmdmFsdWVfMDg2IiwiZmllbGRfc2V4cF8wODMkMiIsImZ2YWx1ZV8wODgiLCJmaWVsZF9zZXhwXzA4MyQzIiwiZnZhbHVlXzA4NSIsImFfMDc5IiwibF8wNzciLCJzXzA3NSIsImhfMDczIiwic2V4cF9vZl90JDEiLCJhXzEwMCIsImxfMDk4Iiwic18wOTYiLCJoXzA5NCIsImFyZ18xMDEiLCJibmRzXzA5MyIsImFyZ18wOTkiLCJibmRzXzA5MyQwIiwiYXJnXzA5NyIsImJuZHNfMDkzJDEiLCJhcmdfMDk1IiwiYm5kc18wOTMkMiIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl93cml0ZXJfdCQxIiwiYmluX3JlYWRfdCQzIiwiYmluX3JlYWRfdCQ0Iiwidl9oIiwidl9zIiwidl9sIiwiYmluX3JlYWRlcl90JDEiLCJiaW5fdCQxIiwiY29tcGFyZSQxIiwiYV8xMDIiLCJiXzEwMyIsImFfMTA0IiwiYl8xMDUiLCJjcmVhdGUkMCIsImgiLCJsIiwidF9vZl9zZXhwJDIiLCJzZXhwXzEwOSIsImF0b21fMTA3Iiwic2V4cF9hcmdzXzExMCIsImF0b21fMTA3JDAiLCJhcmcwXzEyMiIsInJlczBfMTIzIiwiYXJnMF8xMTYiLCJyZXMwXzExNyIsImFyZzBfMTE5IiwicmVzMF8xMjAiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMjUiLCJyZXMwXzEyNiIsInRfb2Zfc2V4cCQzIiwic2V4cF8xMjciLCJzZXhwX29mX3QkMiIsInZfMTM0Iiwidl8xMzMiLCJ2XzEyOSIsInZfMTMxIiwidl8xMzAiLCJ2XzEzMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMTM1IiwiYl8xMzYiLCJyaWdodF8xNDYiLCJsZWZ0XzE0NSIsInJpZ2h0XzEzOCIsImxlZnRfMTM3IiwicmlnaHRfMTQyIiwibGVmdF8xNDEiLCJyaWdodF8xNDAiLCJsZWZ0XzEzOSIsInJpZ2h0XzE0NCIsImxlZnRfMTQzIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTU2IiwiYXRvbV8xNTQiLCJzZXhwX2FyZ3NfMTU3IiwiYXRvbV8xNTQkMCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE2NiIsInJlczBfMTY3IiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcwXzE2MyIsInJlczBfMTY0IiwiYXJnMF8xNTkiLCJyZXMwXzE2MCIsImFyZzBfMTg3IiwicmVzMF8xODgiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiYXJnMF8xNzgiLCJyZXMwXzE3OSIsImFyZzBfMTc1IiwicmVzMF8xNzYiLCJhcmcwXzE3MiIsInJlczBfMTczIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE5MiIsInNleHBfb2ZfdCQzIiwidl8yMDUiLCJ2XzIwMyIsInZfMjAxIiwidl8xOTgiLCJ2XzE5NiIsInZfMTk0Iiwidl8yMDQiLCJ2XzIwMiIsInZfMjAwIiwidl8xOTciLCJ2XzE5NSIsInZfMTk5IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzIwNiIsImJfMjA3IiwicmlnaHRfMjE3IiwibGVmdF8yMTYiLCJyaWdodF8yMTMiLCJsZWZ0XzIxMiIsInJpZ2h0XzIwOSIsImxlZnRfMjA4IiwicmlnaHRfMjI5IiwibGVmdF8yMjgiLCJyaWdodF8yMjciLCJsZWZ0XzIyNiIsInJpZ2h0XzIyMyIsImxlZnRfMjIyIiwicmlnaHRfMjI1IiwibGVmdF8yMjQiLCJyaWdodF8yMjEiLCJsZWZ0XzIyMCIsInJpZ2h0XzIxNSIsImxlZnRfMjE0IiwicmlnaHRfMjExIiwibGVmdF8yMTAiLCJyaWdodF8yMTkiLCJsZWZ0XzIxOCIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMjMyIiwiYl8yMzMiLCJ0X29mX3NleHAkNiIsInNleHBfMjM5IiwiYXRvbV8yMzciLCJhdG9tXzIzNyQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzI0MiIsInNleHBfb2ZfdCQ0Iiwidl8yNDQiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiaXNfZW1wdHkiLCJlbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsIndpZHRoIiwibWluX3dpZHRoIiwibWF4X3dpZHRoIiwiaGVpZ2h0IiwibWluX2hlaWdodCIsIm1heF9oZWlnaHQiLCJwYWRkaW5nX3RvcCIsInBhZGRpbmdfYm90dG9tIiwicGFkZGluZ19sZWZ0IiwicGFkZGluZ19yaWdodCIsInBhZGRpbmciLCJ1bmlmb3JtX3BhZGRpbmciLCJtYXJnaW5fdG9wIiwibWFyZ2luX2JvdHRvbSIsIm1hcmdpbl9sZWZ0IiwibWFyZ2luX3JpZ2h0IiwibWFyZ2luIiwidW5pZm9ybV9tYXJnaW4iLCJjb25jYXQydiIsImNvbmNhdDN2IiwiYm9yZGVyX3ZhbHVlIiwic3R5bGUkMCIsIndpZHRoJDAiLCJjb2xvciQwIiwiY3JlYXRlX2JvcmRlciIsInNpZGUiLCJib3JkZXJfdG9wIiwiYm9yZGVyX2JvdHRvbSIsImJvcmRlcl9sZWZ0IiwiYm9yZGVyX3JpZ2h0IiwiYm9yZGVyIiwib3V0bGluZSIsImJvcmRlcl9jb2xsYXBzZSIsImJvcmRlcl9zcGFjaW5nIiwiYm9yZGVyX3JhZGl1cyIsInRleHRfZGVjb3JhdGlvbiIsImxpbmUiLCJsaW5lJDAiLCJpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIiwiZmxleF9jb250YWluZXIiLCJvcHQiLCJhbGlnbl9pdGVtcyIsImp1c3RpZnlfY29udGVudCIsInN0aCIsImlubGluZSIsInN0aCQwIiwic3RoJDEiLCJ3cmFwIiwiZGlyZWN0aW9uJDAiLCJ3cmFwJDAiLCJhbGlnbl9pdGVtcyQwIiwianVzdGlmeV9jb250ZW50JDAiLCJmbGV4X2l0ZW0iLCJvcmRlciIsImdyb3ciLCJiYXNpcyIsInNocmluayIsIm9yZGVyJDAiLCJiYXNpcyQwIiwiZmxleCIsImFsaWduX3NlbGYiLCJyZXNpemUiLCJ2YWx1ZSQwIiwiYW5pbWF0aW9uIiwiZHVyYXRpb24iLCJkZWxheSIsImZpbGxfbW9kZSIsIml0ZXJfY291bnQiLCJ0aW1pbmdfZnVuY3Rpb24iLCJzcGFuX3RvX3N0cmluZyIsImQiLCJmaWxsX21vZGUkMCIsInVzZXJfc2VsZWN0IiwiY3NzIiwiczIiLCJ4IiwidHlwZV9vZiIsIngiLCJpbnN0YW5jZV9vZiIsImNvbnN0ciIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwiZ2xvYmFsIiwiYXJyYXlfbWFrZSIsIm4iLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9vZl9qc19mcm9tIiwiZiIsIm9ianMiLCJzdGFydCIsImkiLCJhcnJheV9vZl9qcyIsImFycmF5X3RvX2pzIiwiYXJyIiwiYSIsImxpc3Rfb2ZfanNfZnJvbSIsImxpc3Rfb2ZfanMiLCJsaXN0X3RvX2pzIiwibCIsIm9wdGlvbl9vZl9qcyIsIm9wdGlvbl90b19qcyIsInVuaXRfdG9fanMiLCJ1bml0X29mX2pzIiwic2VsZl8xIiwiaGFzX3Byb3BlcnR5IiwibyIsImVtcHR5X29iaiIsIml0ZXJfcHJvcGVydGllcyIsImFwcGx5X2FyciIsImNhbGxfYXJyIiwicyIsImlzX251bGwiLCJvYmpfdHlwZSIsInRfdG9fanMiLCJ0X29mX2pzIiwidF90b19qcyQwIiwidF9vZl9qcyQwIiwidF90b19qcyQxIiwidF9vZl9qcyQxIiwidF90b19qcyQyIiwidF9vZl9qcyQyIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInRvX2pzX3N0cmluZyIsInZhbHVlIiwidG9fanNfc3RyaW5nX2ZpeGVkIiwiZGlnaXRzIiwidG9fanNfc3RyaW5nX3ByZWNpc2lvbiIsInRvX2pzX3N0cmluZ19leHBvbmVudGlhbCIsInRvX3N0cmluZyIsInRvX3N0cmluZ19maXhlZCIsInRvX3N0cmluZ19wcmVjaXNpb24iLCJ0b19zdHJpbmdfZXhwb25lbnRpYWwiLCJwcmludCIsImYiLCJ2aXNpYmlsaXR5X2hhbmRsZXJzIiwic2VxdWVuY2VfYXNfc2libGluZyIsImxlZnQiLCJ1bmxlc3Nfc3RvcHBlZCIsImNvbnRhaW5zX3N0b3AiLCJlcyIsImN1cnJlbnRfZG9tX2V2ZW50IiwiaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIiwiaGFuZGxlIiwiZG9tX2V2ZW50IiwiZXZlbnQiLCJvbGQiLCJzZXhwX29mX3QiLCJ0eXBlX2lkIiwiZ2VuZXJpY19ob29rIiwicGFjayIsImlkIiwiZGVzdHJveSIsInVwZGF0ZSIsImluaXQiLCJpbnB1dF9pZCIsImlucHV0IiwiaW5pdCQwIiwidXBkYXRlJDAiLCJkZXN0cm95JDAiLCJnZW5lcmljX2hvb2skMCIsImV4dHJhIiwiY29tYmluZSIsInJpZ2h0IiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJlbGVtZW50Iiwic3RhdGUiLCJhbmltYXRpb25faWQiLCJvbGRfaW5wdXQiLCJjcmVhdGUiLCJjb21iaW5lX2lucHV0cyIsInNldCIsIng3IiwieDUiLCJ4NiIsImdldCIsIngxMSIsIngxMCIsImRlbGV0ZSQwIiwieDE2IiwieDE1IiwidF9vZl9qcyIsIngiLCJ0X3RvX2pzIiwidF9vZl9qcyQwIiwidF90b19qcyQwIiwic2V0X3Byb3BlcnR5IiwiaGFzX3Byb3BlcnR5IiwiaGFzX2F0dHJpYnV0ZSIsInQiLCJuYW1lIiwic2V0X2F0dHJpYnV0ZSIsInRfb2ZfanMkMSIsInRfdG9fanMkMSIsImlzX2VtcHR5IiwiZl9pZCIsImlkX3NleHAiLCJjcmVhdGUkMSIsImluZm8iLCJvcHQiLCJzdGgiLCJzdGgkMCIsInMiLCJlbHQiLCJkb21fbm9kZSIsInMwIiwicHJldl9zdGF0ZSIsImRvbV9ub2RlJDAiLCJlbXB0eSIsInJoYW5kbGVyIiwieF8wMDIiLCJsaGFuZGxlciIsInhfMDAxIiwiY3JlYXRlX2Zsb2F0IiwicHJvcGVydHkiLCJzdHJpbmdfcHJvcGVydHkiLCJib29sX3Byb3BlcnR5Iiwic3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MiLCJjcmVhdGVfaG9vayIsImhvb2siLCJtYW55IiwiYXR0cnMiLCJtYW55X3dpdGhvdXRfbWVyZ2UiLCJjb21iaW5lJDAiLCJ3YXJuaW5nX2NvdW50IiwiY3VycmVudCIsIndhcm5fcyIsInF1b3RhIiwid2FybmluZ19jb3VudCQwIiwicmVzZXRfd2FybmluZ19jb3VudCIsImNvbWJpbmluZ19tYXBfYWRkIiwibWFwIiwia2V5IiwiZXhpc3RpbmdfdmFsdWUiLCJlbXB0eV9tZXJnZSIsInN0eWxlIiwiY3NzIiwidmFsaWRfY2xhc3NfbmFtZSIsImludmFsaWQiLCJjbGFzcyQwIiwiY2xhc3NuYW1lIiwiY2xhc3NlcyIsImNsYXNzZXMkMCIsImNsYXNzbmFtZXMiLCJocmVmIiwiciIsInRhcmdldCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsImhpZGRlbiIsInJlYWRvbmx5IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImZvciQwIiwidHlwZSIsInZhbHVlX3Byb3AiLCJ0YWJpbmRleCIsInRpdGxlIiwic3JjIiwibWluIiwibWF4IiwiY29sc3BhbiIsInJvd3NwYW4iLCJkcmFnZ2FibGUiLCJiIiwiY3JlYXRlJDAiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwiY2xpcGJvYXJkIiwiZHJhZyIsInBvaW50ZXIiLCJhbmltYXRpb24iLCJvbiIsImhhbmRsZXIiLCJvbl9mb2N1cyIsIm9uX2JsdXIiLCJvbl9jbGljayIsIm9uX2NvbnRleHRtZW51Iiwib25fZG91YmxlX2NsaWNrIiwib25fZHJhZyIsIm9uX2RyYWdzdGFydCIsIm9uX2RyYWdlbmQiLCJvbl9kcmFnZW50ZXIiLCJvbl9kcmFnbGVhdmUiLCJvbl9kcmFnb3ZlciIsIm9uX2Ryb3AiLCJvbl9tb3VzZW1vdmUiLCJvbl9tb3VzZXVwIiwib25fbW91c2Vkb3duIiwib25fbW91c2VlbnRlciIsIm9uX21vdXNlbGVhdmUiLCJvbl9tb3VzZW92ZXIiLCJvbl9tb3VzZW91dCIsIm9uX2tleXVwIiwib25fa2V5cHJlc3MiLCJvbl9rZXlkb3duIiwib25fc2Nyb2xsIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fY29weSIsIm9uX2N1dCIsIm9uX3Bhc3RlIiwib25fcmVzZXQiLCJvbl9hbmltYXRpb25lbmQiLCJjb25zdF9pZ25vcmUiLCJydW5fY29lcmNpb24iLCJjb2VyY2lvbiIsInByZXYiLCJvbl9pbnB1dF9ldmVudCIsInRleHQiLCJvbl9jaGFuZ2UiLCJvbl9pbnB1dCIsInRvX3JhdyIsImF0dHIiLCJhdHRyc19vYmoiLCJ0YWtlX3NlY29uZF9zdHlsZXMiLCJmaXJzdCIsInNlY29uZCIsInRha2Vfc2Vjb25kX2NsYXNzZXMiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm5hbWUkMCIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwiZmlsdGVyX2J5X2tpbmQiLCJhIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJtb3VzZV91cF90eXBlX2lkIiwibW91c2VfbW92ZV90eXBlX2lkIiwicmVzMV8wMDkiLCJ0YWciLCJ3aXRoX2tleSIsIm1hcF9hdHRycyIsInJhd19hdHRycyIsImFkZF9jbGFzc2VzIiwiY2hpbGRyZW4iLCJ3Iiwia2luZCIsImNoaWxkcmVuX3JhdyIsIm90aGVyIiwiZWxlbWVudF9leHBlcnQiLCJ3aWRnZXQiLCJjcmVhdGVfY2hpbGRsZXNzIiwiY3JlYXRlX3N2ZyIsIm5vbmUiLCJ0ZXh0ZiIsImZvcm1hdCIsIndpZGdldF9vZl9tb2R1bGUiLCJtIiwiYXJnMF8wMDYiLCJzdGF0ZV8wMDQiLCJpbnB1dF8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsInJlczBfMDA4IiwicHJldl9pbnB1dCIsImVsZW1lbnQkMCIsInN0YXRlJDAiLCJpIiwidG9fZG9tIiwiaW5uZXJfaHRtbCIsImNvbnRlbnQiLCJidWlsZF9zZXhwIiwiZGVidWciLCJpbm5lcl9odG1sX3N2ZyIsImlubmVyX2h0bWwkMCIsImJvZHkiLCJidXR0b24iLCJjb2RlIiwiZGl2IiwibWFpbiIsImZpZWxkc2V0IiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZGVyIiwiaHRtbCIsInRleHRhcmVhIiwic2VsZWN0Iiwib3B0aW9uIiwibGFiZWwiLCJsaSIsInAiLCJwcmUiLCJzZWN0aW9uIiwic3BhbiIsInN0cm9uZyIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsInByZXZpb3VzIiwiYXBwbHkiLCJjcmVhdGUkMiIsImNyZWF0ZV9zdmckMCIsImhlcmUiLCJlcnJvcl9zb3VyY2VfMDA0IiwidF9vZl9zZXhwIiwic2V4cF9vZl90IiwidmFsaWRhdGUiLCJ0IiwiZXF1YWwiLCJ0MSIsInQyIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsInNleHBfb2ZfdCQxIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInQxIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInNleHBfb2ZfdCIsInZfMDA2Iiwic2xvdHNfcGVyX3R1cGxlXzAwMiIsImFyZ18wMDMiLCJibmRzXzAwMSIsInNleHBfb2ZfdCQwIiwib2ZfdHVwbGVfMDA3Iiwib2ZfdmFyaWFudF8wMDgiLCJzbG90c19wZXJfdHVwbGUiLCJuIiwic2V4cF9vZl90MSIsIm9mX2EwXzAwOSIsInNleHBfb2ZfdDIiLCJvZl9hMF8wMTAiLCJvZl9hMV8wMTEiLCJzZXhwX29mX3QzIiwib2ZfYTBfMDEyIiwib2ZfYTFfMDEzIiwib2ZfYTJfMDE0Iiwic2V4cF9vZl90NCIsIm9mX2EwXzAxNSIsIm9mX2ExXzAxNiIsIm9mX2EyXzAxNyIsIm9mX2EzXzAxOCIsInNleHBfb2ZfdDUiLCJvZl9hMF8wMTkiLCJvZl9hMV8wMjAiLCJvZl9hMl8wMjEiLCJvZl9hM18wMjIiLCJvZl9hNF8wMjMiLCJzZXhwX29mX3Q2Iiwib2ZfYTBfMDI0Iiwib2ZfYTFfMDI1Iiwib2ZfYTJfMDI2Iiwib2ZfYTNfMDI3Iiwib2ZfYTRfMDI4Iiwib2ZfYTVfMDI5Iiwic2V4cF9vZl90NyIsIm9mX2EwXzAzMCIsIm9mX2ExXzAzMSIsIm9mX2EyXzAzMiIsIm9mX2EzXzAzMyIsIm9mX2E0XzAzNCIsIm9mX2E1XzAzNSIsIm9mX2E2XzAzNiIsInNleHBfb2ZfdDgiLCJvZl9hMF8wMzciLCJvZl9hMV8wMzgiLCJvZl9hMl8wMzkiLCJvZl9hM18wNDAiLCJvZl9hNF8wNDEiLCJvZl9hNV8wNDIiLCJvZl9hNl8wNDMiLCJvZl9hN18wNDQiLCJzZXhwX29mX3Q5Iiwib2ZfYTBfMDQ1Iiwib2ZfYTFfMDQ2Iiwib2ZfYTJfMDQ3Iiwib2ZfYTNfMDQ4Iiwib2ZfYTRfMDQ5Iiwib2ZfYTVfMDUwIiwib2ZfYTZfMDUxIiwib2ZfYTdfMDUyIiwib2ZfYThfMDUzIiwic2V4cF9vZl90MTAiLCJvZl9hMF8wNTQiLCJvZl9hMV8wNTUiLCJvZl9hMl8wNTYiLCJvZl9hM18wNTciLCJvZl9hNF8wNTgiLCJvZl9hNV8wNTkiLCJvZl9hNl8wNjAiLCJvZl9hN18wNjEiLCJvZl9hOF8wNjIiLCJvZl9hOV8wNjMiLCJzZXhwX29mX3QxMSIsIm9mX2EwXzA2NCIsIm9mX2ExXzA2NSIsIm9mX2EyXzA2NiIsIm9mX2EzXzA2NyIsIm9mX2E0XzA2OCIsIm9mX2E1XzA2OSIsIm9mX2E2XzA3MCIsIm9mX2E3XzA3MSIsIm9mX2E4XzA3MiIsIm9mX2E5XzA3MyIsIm9mX2ExMF8wNzQiLCJzZXhwX29mX3QxMiIsIm9mX2EwXzA3NSIsIm9mX2ExXzA3NiIsIm9mX2EyXzA3NyIsIm9mX2EzXzA3OCIsIm9mX2E0XzA3OSIsIm9mX2E1XzA4MCIsIm9mX2E2XzA4MSIsIm9mX2E3XzA4MiIsIm9mX2E4XzA4MyIsIm9mX2E5XzA4NCIsIm9mX2ExMF8wODUiLCJvZl9hMTFfMDg2Iiwic2V4cF9vZl90MTMiLCJvZl9hMF8wODciLCJvZl9hMV8wODgiLCJvZl9hMl8wODkiLCJvZl9hM18wOTAiLCJvZl9hNF8wOTEiLCJvZl9hNV8wOTIiLCJvZl9hNl8wOTMiLCJvZl9hN18wOTQiLCJvZl9hOF8wOTUiLCJvZl9hOV8wOTYiLCJvZl9hMTBfMDk3Iiwib2ZfYTExXzA5OCIsIm9mX2ExMl8wOTkiLCJzZXhwX29mX3QxNCIsIm9mX2EwXzEwMCIsIm9mX2ExXzEwMSIsIm9mX2EyXzEwMiIsIm9mX2EzXzEwMyIsIm9mX2E0XzEwNCIsIm9mX2E1XzEwNSIsIm9mX2E2XzEwNiIsIm9mX2E3XzEwNyIsIm9mX2E4XzEwOCIsIm9mX2E5XzEwOSIsIm9mX2ExMF8xMTAiLCJvZl9hMTFfMTExIiwib2ZfYTEyXzExMiIsIm9mX2ExM18xMTMiLCJuYW1lJDEiLCJwcmVmaXgiLCJuYW1lJDAiLCJuYW1lIiwiZmFpbHdpdGhzIiwiYXJjaF9zaXh0eWZvdXIiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsInRvX3N0cmluZyIsInNwcmludGYiLCJjb25jYXQiLCJsIiwibWF4X3Nsb3QiLCJvZl9zbG90c18wMDciLCJvZl9hXzAwOCIsImVxdWFsIiwidDAiLCJhcnJheV9pbmRleF9udW1fYml0cyIsIm1hc2tlZF90dXBsZV9pZF9udW1fYml0cyIsIm1heF9hcnJheV9sZW5ndGgiLCJpbnZhcmlhbnQiLCJ0IiwiaW5pdCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInBoeXNfZXF1YWwiLCJwaHlzX2NvbXBhcmUiLCJudWxsJDAiLCJpc19udWxsIiwiY3JlYXRlIiwiaGVhZGVyX2luZGV4IiwidHVwbGVfaWQiLCJoZWFkZXJfaW5kZXhfbWFzayIsIm1hc2tlZF90dXBsZV9pZCIsImludmFyaWFudCQwIiwic2xvdF9pbmRleCIsInNsb3QiLCJmaXJzdF9zbG90X2luZGV4IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsIm51bGwkMSIsImlzX251bGwkMCIsImlzX2ZyZWUiLCJpc191c2VkIiwiaWQiLCJtZXRhZGF0YV9pbmRleCIsInN0YXJ0X29mX3R1cGxlc19pbmRleCIsIm1heF9jYXBhY2l0eSIsImR1bW15IiwiciIsImZpcnN0X2ZyZWUiLCJzZXRfZmlyc3RfZnJlZSIsInYiLCJuZXh0X2lkIiwic2V0X25leHRfaWQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiY2FwYWNpdHkiLCJkdW1teSQwIiwiZmlyc3RfZnJlZSQwIiwibmV4dF9pZCQwIiwibGVuZ3RoJDAiLCJjYXBhY2l0eSQwIiwic2xvdHNfcGVyX3R1cGxlJDAiLCJhcnJheV9pbmRpY2VzX3Blcl90dXBsZSIsImFycmF5X2xlbmd0aCIsInR1cGxlX251bV90b19oZWFkZXJfaW5kZXgiLCJ0dXBsZV9udW0iLCJ0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCIsIm1ldGFkYXRhIiwibGVuZ3RoJDEiLCJzZXhwX29mX3QkMyIsInNleHBfb2ZfdHkiLCJjYXBhY2l0eV8wMTgiLCJzbG90c19wZXJfdHVwbGVfMDE2IiwibGVuZ3RoXzAyMCIsIm5leHRfaWRfMDIyIiwiZmlyc3RfZnJlZV8wMjQiLCJkdW1teV8wMjYiLCJhcmdfMDI3IiwiYm5kc18wMTUiLCJhcmdfMDI1IiwiYm5kc18wMTUkMCIsImFyZ18wMjMiLCJibmRzXzAxNSQxIiwiYXJnXzAyMSIsImJuZHNfMDE1JDIiLCJhcmdfMDE5IiwiYm5kc18wMTUkMyIsImFyZ18wMTciLCJibmRzXzAxNSQ0IiwidW5zYWZlX2hlYWRlciIsInVuc2FmZV9zZXRfaGVhZGVyIiwiaGVhZGVyIiwiaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyIsInVuc2FmZV9wb2ludGVyX2lzX2xpdmUiLCJwb2ludGVyIiwiaGVhZGVyX2luZGV4JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMiIsInQkMCIsInNob3VsZF9lcXVhbCIsInQkMSIsInhfMDA5IiwiZXhuJDAiLCJleG4iLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImFyZzJfMDMwIiwiYXJnMV8wMjkiLCJhcmcwXzAyOCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJyZXMyXzAzMyIsImludmFyaWFudCQxIiwiaW52YXJpYW50X2EiLCJjaGVjayIsImYiLCJmaWVsZCIsImZpcnN0X3Nsb3QiLCJmcmVlIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczBfMDM2IiwicmVzMV8wMzciLCJjYXBhY2l0eSQxIiwiaXNfZnVsbCIsInVuc2FmZV9hZGRfdG9fZnJlZV9saXN0Iiwic2V0X21ldGFkYXRhIiwiY3JlYXRlX2FycmF5IiwidW5zYWZlX2luaXRfcmFuZ2UiLCJsbyIsImhpIiwidHVwbGVfbnVtJDAiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJvZl9zbG90c18wNzciLCJpc192YWxpZF8wNzkiLCJwb2ludGVyXzA4MSIsImFyZ18wODIiLCJibmRzXzA3OCIsImFyZ18wODAiLCJibmRzXzA3OCQwIiwiZmllbGQwIiwiZmllbGQxIiwidHlwZW5hbWUiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImZpZWxkcyIsImlzX3ZhbGlkIiwiZm9sbG93IiwieF8wODMiLCJpbnZhbGlkYXRlIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwidHMiLCJhcmciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ4XzA2OSIsInZfMDY4IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2IiwicG9zJDkiLCJwb3MkOCIsInBvcyQ3IiwicG9zJDYiLCJhcmdfMTA4IiwicG9zJDUiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwiZXJyb3Jfc291cmNlXzAzOSIsIm1heF90aW1lIiwibWluX3RpbWUiLCJtYXhfbnVtX2JpdHMiLCJtaW5fdmFsdWUiLCJpbnZhcmlhbnQiLCJ0Iiwib2ZfaW50IiwiaSIsInN5bWJvbCQyIiwidDEiLCJ0MiIsInN5bWJvbCQzIiwicG93MiIsInNleHBfb2ZfdCQwIiwieF8wMDciLCJudW1fYml0c19pbnRlcm5hbCIsIm51bV9iaXRzIiwiaW52YXJpYW50JDAiLCJudW1fa2V5X2JpdHMiLCJ0X29mX3NleHAkMCIsInhfMDA2IiwiY3JlYXRlX2V4biIsIm9wdCIsInhfMDA4Iiwic3RoIiwiZXh0ZW5kX3RvX21heF9udW1fYml0cyIsImJpdHMiLCJpbnRzIiwibGV2ZWxfYml0c19kZWZhdWx0IiwiY29tcGFyZSIsImVxdWFsJDAiLCJ4XzAxMiIsInhfMDEzIiwidG9fc2V4cGFibGUiLCJzZXhwX29mX3QkMSIsIm9uZV9uYW5vc2Vjb25kIiwiYWJvdXRfb25lX21pY3Jvc2Vjb25kIiwiYWJvdXRfb25lX21pbGxpc2Vjb25kIiwiYWJvdXRfb25lX3NlY29uZCIsImFib3V0X29uZV9kYXkiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJ2IiwibGV2ZWxfYml0cyQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzAxOSIsImZpZWxkX3NleHBzXzAyMCIsImFsYXJtX3ByZWNpc2lvbl8wMjEiLCJsZXZlbF9iaXRzXzAyMyIsImNhcGFjaXR5XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4Iiwic2V4cF8wMTkkMCIsImZpZWxkX3NleHBzXzAzMSIsImZpZWxkX25hbWVfMDI5IiwidGFpbF8wNDEiLCJmaWVsZF9zZXhwXzAzMCQzIiwiZmllbGRfc2V4cF8wMzAiLCJ4XzA0MiIsImZpZWxkX3NleHBfMDMwJDAiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMzAkMSIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAzMCQyIiwiZnZhbHVlXzAzNSIsImxldmVsX2JpdHNfMDI0IiwibWF0Y2giLCJhbGFybV9wcmVjaXNpb25fMDIyIiwidl8wMzgiLCJ2XzAzOCQwIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wNDgiLCJsZXZlbF9iaXRzXzA0NiIsImFsYXJtX3ByZWNpc2lvbl8wNDQiLCJibmRzXzA0MyIsInZfMDQ5IiwiYXJnXzA1MSIsImJuZF8wNTAiLCJibmRzXzA0MyQwIiwiYXJnXzA0NyIsImJuZHNfMDQzJDEiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMiIsImFsYXJtX3ByZWNpc2lvbiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJjYXBhY2l0eSIsImxvb3AiLCJyZW1haW5pbmciLCJ0JDAiLCJiIiwibWljcm9zZWNvbmRfcHJlY2lzaW9uIiwiZHVyYXRpb25zIiwibnVtX2JpdHNfYWNjdW0iLCJsZXZlbF9udW1fYml0cyIsIm51bV9iaXRzX2FjY3VtJDAiLCJkdXJhdGlvbiIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQ0IiwiY3JlYXRlJDAiLCJudW1fa2V5cyIsImNyZWF0ZSQxIiwiYml0c19wZXJfc2xvdCIsInRvX2ludDYzIiwib2ZfaW50NjMiLCJzY2FsZV9pbnQiLCJzZXhwX29mX3QkNyIsIm9mX2ludDYzJDAiLCJ0b19pbnQ2MyQwIiwiYWRkIiwiYWRkX2NsYW1wX3RvX21heCIsInN1YiIsImRpZmYiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2siLCJzZXhwX29mX3Bvb2xfc2xvdHMiLCJvZl9hXzA1NCIsInhfMDU1Iiwic2V4cF9vZl90JDgiLCJvZl9hXzA1NiIsInhfMDU3IiwibnVsbCQwIiwibnVsbCQxIiwiaXNfbnVsbCIsImZyZWUiLCJrZXkiLCJwIiwiYXQiLCJ2YWx1ZSIsImxldmVsX2luZGV4IiwicHJldiIsInNldF9wcmV2IiwieCIsIm5leHQiLCJzZXRfbmV4dCIsImlzX3ZhbGlkIiwiZ3JvdyIsImlzX2Z1bGwiLCJvZl9leHRlcm5hbF9leG4iLCJwb29sIiwibGluayIsIml0ZXIiLCJmaXJzdCIsImYiLCJjdXJyZW50IiwiY29udGludWUkMCIsIm5leHQkMCIsInNsb3RzIiwibWF4X2FsbG93ZWRfa2V5Iiwic2V0X21heF9hbGxvd2VkX2tleSIsIm1pbl9hbGxvd2VkX2tleSIsInNldF9taW5fYWxsb3dlZF9rZXkiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5Iiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDY1IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA3OSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDc3Iiwia2V5c19wZXJfc2xvdF8wNzUiLCJiaXRzX3Blcl9zbG90XzA3MyIsInNsb3RzX21hc2tfMDcxIiwiYml0c18wNjkiLCJpbmRleF8wNjciLCJsZW5ndGhfMDgxIiwibWluX2FsbG93ZWRfa2V5XzA4MyIsIm1heF9hbGxvd2VkX2tleV8wODUiLCJzbG90c18wODciLCJhcmdfMDg4IiwiYm5kc18wNjYiLCJhcmdfMDg2IiwiYm5kc18wNjYkMCIsImFyZ18wODQiLCJibmRzXzA2NiQxIiwiYXJnXzA4MiIsImJuZHNfMDY2JDIiLCJhcmdfMDgwIiwiYm5kc18wNjYkMyIsImFyZ18wNzgiLCJibmRzXzA2NiQ0IiwiYXJnXzA3NiIsImJuZHNfMDY2JDUiLCJhcmdfMDc0IiwiYm5kc18wNjYkNiIsImFyZ18wNzIiLCJibmRzXzA2NiQ3IiwiYXJnXzA3MCIsImJuZHNfMDY2JDgiLCJhcmdfMDY4IiwiYm5kc18wNjYkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCQwIiwiY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkiLCJwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSIsImxldmVscyIsImVsdF9rZXlfbG93ZXJfYm91bmQiLCJzZXRfZWx0X2tleV9sb3dlcl9ib3VuZCIsIm1pbl9lbHQiLCJzZXRfbWluX2VsdCIsInNldF9wb29sIiwibGVuZ3RoJDEiLCJzZXRfbGVuZ3RoJDAiLCJsZXZlbHMkMCIsImVsdF9rZXlfbG93ZXJfYm91bmQkMCIsIm1pbl9lbHQkMCIsInBvb2wkMCIsImxlbmd0aCQyIiwiaXNfZW1wdHkiLCJudW1fbGV2ZWxzIiwibWluX2FsbG93ZWRfa2V5JDEiLCJtYXhfYWxsb3dlZF9rZXkkMSIsImludGVybmFsX2l0ZXIiLCJsZXZlbCIsInNsb3RfaW5kZXgiLCJlbHQiLCJjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2siLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2FscmVhZHlfZm91bmQiLCJtaW5fa2V5X2FscmVhZHlfZm91bmQiLCJudW1fbGV2ZWxzJDAiLCJzbG90X21pbl9rZXkiLCJzbG90JDAiLCJjdXJyZW50X2tleSIsImFkZF9lbHQiLCJ4XzEzNSIsInRvX2FkZCIsImtleSQwIiwiZWx0c18xMTUiLCJtYXhfYWxsb3dlZF9rZXlfMTEzIiwibWluX2FsbG93ZWRfa2V5XzExMSIsImJuZHNfMTEwIiwia2V5XzEwNSIsImJuZHNfMTA0IiwiYXJnXzEwNiIsImJuZHNfMTA0JDAiLCJhcmdfMTE2IiwiYm5kc18xMTAkMCIsImFyZ18xMTQiLCJibmRzXzExMCQxIiwiYXJnXzExMiIsImJuZHNfMTEwJDIiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTY3Iiwic3RhcnRfMTY1IiwiY29uZmlnXzE2MyIsIm5vd18xNjkiLCJhbGFybSIsImFsYXJtc18xNzEiLCJibmRzXzE2MiIsInZhbHVlXzE1OSIsImF0XzE1NyIsImFyZ18xNjAiLCJibmRzXzE1NiIsImFyZ18xNTgiLCJibmRzXzE1NiQwIiwiYXJnXzE3MiIsImJuZHNfMTYyJDAiLCJhcmdfMTcwIiwiYm5kc18xNjIkMSIsImFyZ18xNjgiLCJibmRzXzE2MiQyIiwiYXJnXzE2NiIsImJuZHNfMTYyJDMiLCJhcmdfMTY0IiwiYm5kc18xNjIkNCIsImxlbmd0aCQzIiwiaXNfZW1wdHkkMCIsInBvb2wkMSIsImludGVydmFsX251bV9pbnRlcm5hbCIsInRpbWUiLCJpbnRlcnZhbF9udW1fdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtJDAiLCJpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtX3N0YXJ0IiwibmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biIsInhfMTc0IiwiY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIiwibm93X2ludGVydmFsX251bSIsIm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSIsImludGVydmFsX3N0YXJ0IiwiaW52YXJpYW50JDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwicHJpb3JpdHlfcXVldWVfZnVuIiwibGV2ZWxzX2Z1biIsInNsb3RzX2Z1biIsIm4iLCJ4XzA2MiIsIm1heF9hbGxvd2VkX2tleV9mdW4iLCJleHBlY3QiLCJlcXVhbCIsIm1lc3NhZ2UiLCJoZXJlIiwiY29tcGFyYXRvciIsImFfMTI4IiwiYl8xMjkiLCJtaW5fYWxsb3dlZF9rZXlfZnVuIiwiZ290Iiwic2V4cGlmaWVyIiwiYV8xMjYiLCJiXzEyNyIsImxlbmd0aF9mdW4iLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXlfZnVuIiwiZXRhIiwiYV8xMjQiLCJiXzEyNSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfZnVuIiwia2V5c19wZXJfc2xvdF9mdW4iLCJhXzEyMiIsImJfMTIzIiwiYml0c19wZXJfc2xvdF9mdW4iLCJleHBlY3QkMCIsInNsb3RzX21hc2tfZnVuIiwiYV8xMjAiLCJiXzEyMSIsImJpdHNfZnVuIiwiaW5kZXhfZnVuIiwieF8xMTkiLCJwcmV2X2xldmVsIiwiYV8xMzEiLCJiXzEzMiIsImdvdCQwIiwibWVzc2FnZSQwIiwiaGVyZSQwIiwiY29tcGFyYXRvciQwIiwiYV8xMzMiLCJiXzEzNCIsImVsdF9rZXlfbG93ZXJfYm91bmRfZnVuIiwibWluX2VsdF9mdW4iLCJwb29sX2Z1biIsInhfMTMwIiwib2ZfYV8wODkiLCJsZW5ndGhfMDkxIiwicG9vbF8wOTMiLCJtaW5fZWx0XzA5NSIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDk3IiwibGV2ZWxzXzA5OSIsImJuZHNfMDkwIiwiYXJnXzEwMCIsImJuZHNfMDkwJDAiLCJhcmdfMDk4IiwiYm5kc18wOTAkMSIsImFyZ18wOTYiLCJibmRzXzA5MCQyIiwiYXJnXzA5NCIsImJuZHNfMDkwJDMiLCJhcmdfMDkyIiwiYm5kc18wOTAkNCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWVfZnVuIiwiYV8xODMiLCJiXzE4NCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnRfZnVuIiwiYV8xODEiLCJiXzE4MiIsIm5vd19mdW4iLCJtYXhfaW50ZXJ2YWxfbnVtX2Z1biIsImFfMTc3IiwiYl8xNzgiLCJzZXhwaWZpZXIkMCIsImFfMTc5IiwiYl8xODAiLCJzdGFydF9mdW4iLCJjb25maWdfZnVuIiwieF8xNzYiLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTg1IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTg2IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE4NyIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMTkiLCJlcnJvcl9zb3VyY2VfMDMwIiwiZXJyb3Jfc291cmNlXzA0MyIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDUxIiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzExMiIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInNleHBfMDA2IiwiZmllbGRfc2V4cHNfMDA3IiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOCIsImhvd190b19kdW1wXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJob3dfdG9fZHVtcF8wMTEiLCJkdW1wX2lmX2RlbGF5ZWRfYnlfMDA5Iiwic2V4cF9vZl93YXRjaCIsImhvd190b19kdW1wXzAyNiIsImR1bXBfaWZfZGVsYXllZF9ieV8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF8wMzIiLCJ0YWdfMDMzIiwic2V4cF9hcmdzXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJzZXhwX29mX3QkNyIsImFyZzBfMDM3IiwicmVzMF8wMzgiLCJ0X29mX3NleHAkOCIsInNleHBfMDQ0Iiwic2V4cF9vZl90JDgiLCJlcXVhbCQwIiwieF8wNDUiLCJ4XzA0NiIsInRfb2Zfc2V4cCQ5Iiwic2V4cF8wNTIiLCJzZXhwX29mX3QkOSIsInRfb2Zfc2V4cCQxMCIsInNleHBfb2ZfdCQxMCIsInRpbWluZ193aGVlbF9jb25maWciLCJyIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciIsInJlY29yZF9iYWNrdHJhY2VzIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJtYXhfbnVtX3RocmVhZHMiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCIsImZpbGVfZGVzY3Jfd2F0Y2hlciIsImVwb2xsX21heF9yZWFkeV9ldmVudHMiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5IiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyIiwiY2hlY2tfaW52YXJpYW50cyIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyIsInYiLCJ0aW1pbmdfd2hlZWxfY29uZmlnJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMCIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMCIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsIm1heF9udW1fdGhyZWFkcyQwIiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzJDAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCQwIiwiZmlsZV9kZXNjcl93YXRjaGVyJDAiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDAiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5JDAiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIkMCIsImNoZWNrX2ludmFyaWFudHMkMCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQwIiwic2V4cF9vZl90JDExIiwidGltaW5nX3doZWVsX2NvbmZpZ18xNzQiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMTcwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8xIiwicmVjb3JkX2JhY2t0cmFjZXNfMTYyIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXzE1OCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XzE1NCIsIm1heF9udW1fdGhyZWFkc18xNDYiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNfMTQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMTM4IiwiZmlsZV9kZXNjcl93YXRjaGVyXzEzNCIsImVwb2xsX21heF9yZWFkeV9ldmVudHNfMTMwIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheV8xMjYiLCJjaGVja19pbnZhcmlhbnRzXzExOCIsImJuZHNfMTEzIiwidl8xNzUiLCJhcmdfMTc3IiwiYm5kXzE3NiIsImJuZHNfMTEzJDAiLCJ2XzE3MSIsImFyZ18xNzMiLCJibmRfMTcyIiwiYm5kc18xMTMkMSIsInZfMTY3IiwiYXJnXzE2OSIsImJuZF8xNjgiLCJibmRzXzExMyQyIiwidl8xNjMiLCJhcmdfMTY1IiwiYm5kXzE2NCIsImJuZHNfMTEzJDMiLCJ2XzE1OSIsImFyZ18xNjEiLCJibmRfMTYwIiwiYm5kc18xMTMkNCIsInZfMTU1IiwiYXJnXzE1NyIsImJuZF8xNTYiLCJibmRzXzExMyQ1Iiwidl8xNTEiLCJhcmdfMTUzIiwiYm5kXzE1MiIsImJuZHNfMTEzJDYiLCJ2XzE0NyIsImFyZ18xNDkiLCJibmRfMTQ4IiwiYm5kc18xMTMkNyIsInZfMTQzIiwiYXJnXzE0NSIsImJuZF8xNDQiLCJibmRzXzExMyQ4Iiwidl8xMzkiLCJhcmdfMTQxIiwiYm5kXzE0MCIsImJuZHNfMTEzJDkiLCJ2XzEzNSIsImFyZ18xMzciLCJibmRfMTM2IiwiYm5kc18xMTMkMTAiLCJ2XzEzMSIsImFyZ18xMzMiLCJibmRfMTMyIiwiYm5kc18xMTMkMTEiLCJ2XzEyNyIsImFyZ18xMjkiLCJibmRfMTI4IiwiYm5kc18xMTMkMTIiLCJ2XzEyMyIsImFyZ18xMjUiLCJibmRfMTI0IiwiYm5kc18xMTMkMTMiLCJ2XzExOSIsImFyZ18xMjEiLCJibmRfMTIwIiwiYm5kc18xMTMkMTQiLCJ2XzExNSIsImFyZ18xMTciLCJibmRfMTE2IiwiYm5kc18xMTMkMTUiLCJjcmVhdGUkMCIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mbyIsIndvcmRfc2l6ZSIsImxldmVsX2JpdHMkMSIsImFsYXJtX3ByZWNpc2lvbiIsImFsYXJtX3ByZWNpc2lvbiQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiZGVmYXVsdCQxIiwiZXhhbXBsZSIsInVzYWdlIiwiZmllbGQiLCJ0b19zZXhwIiwiZGVzY3JpcHRpb24iLCJhYyIsImQiLCJ4XzE3OCIsImZpZWxkcyIsIm5hbWUiLCJuYW1lMiIsIm5hbWUxIiwic3RyaW5nIiwic2V4cF8wNTQiLCJmaWVsZF9zZXhwc18wNTUiLCJjaGVja19pbnZhcmlhbnRzXzA1OCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjQiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY2IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY4IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MCIsIm1heF9udW1fdGhyZWFkc18wNzIiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzYiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc4IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XzA4NCIsInRpbWluZ193aGVlbF9jb25maWdfMDg2IiwiZHVwbGljYXRlc18wODgiLCJleHRyYV8wODkiLCJpdGVyXzEwOSIsInNleHBfMDU0JDAiLCJmaWVsZF9zZXhwc18wOTIiLCJmaWVsZF9uYW1lXzA5MCIsInRhaWxfMTEwIiwiZmllbGRfc2V4cF8wOTEkMTYiLCJmaWVsZF9zZXhwXzA5MSIsInhfMTExIiwiZmllbGRfc2V4cF8wOTEkMCIsImZ2YWx1ZV8wOTMiLCJmaWVsZF9zZXhwXzA5MSQxIiwiZnZhbHVlXzA5NCIsImZpZWxkX3NleHBfMDkxJDIiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTEkMyIsImZ2YWx1ZV8wOTYiLCJmaWVsZF9zZXhwXzA5MSQ0IiwiZnZhbHVlXzA5NyIsImZpZWxkX3NleHBfMDkxJDUiLCJmdmFsdWVfMDk4IiwiZmllbGRfc2V4cF8wOTEkNiIsImZ2YWx1ZV8xMDAiLCJmaWVsZF9zZXhwXzA5MSQ3IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDkxJDgiLCJmdmFsdWVfMDk5IiwiZmllbGRfc2V4cF8wOTEkOSIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5MSQxMCIsImZ2YWx1ZV8xMDMiLCJmaWVsZF9zZXhwXzA5MSQxMSIsImZ2YWx1ZV8xMDQiLCJmaWVsZF9zZXhwXzA5MSQxMiIsImZ2YWx1ZV8xMDUiLCJmaWVsZF9zZXhwXzA5MSQxMyIsImZ2YWx1ZV8xMDYiLCJmaWVsZF9zZXhwXzA5MSQxNCIsImZ2YWx1ZV8xMDciLCJmaWVsZF9zZXhwXzA5MSQxNSIsImZ2YWx1ZV8xMDgiLCJjaGVja19pbnZhcmlhbnRzXzA1OSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYzIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjUiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY3IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY5IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MSIsIm1heF9udW1fdGhyZWFkc18wNzMiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzciLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc5IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMDg1IiwidCIsInQkMCIsImV4biIsInQkMSIsInQkMiIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQxIiwidGFnIiwibCIsImFsbCIsImRlYnVnIiwiY2xvY2siLCJmZCIsImZpbGVfZGVzY3Jfd2F0Y2hlciQxIiwiZmluYWxpemVycyIsImludGVycnVwdG9yIiwibW9uaXRvciIsIm1vbml0b3Jfc2VuZF9leG4iLCJwYXJhbGxlbCIsInJlYWRlciIsInNjaGVkdWxlciIsInNodXRkb3duIiwidGhyZWFkX3Bvb2wiLCJ0aHJlYWRfc2FmZSIsIndyaXRlciIsInN5bWJvbCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQxIiwiY2hlY2tfaW52YXJpYW50cyQxIiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyJDEiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDEiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMSIsImZpbGVfZGVzY3Jfd2F0Y2hlciQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQkMSIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyQxIiwibWF4X251bV90aHJlYWRzJDEiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMSIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJyZWNvcmRfYmFja3RyYWNlcyQxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQxIiwidGltaW5nX3doZWVsX2NvbmZpZyQxIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheSQxIiwidCQzIiwidGFza19pZCIsIm5vbmUiLCJjcmVhdGUiLCJpc19ub25lIiwieCIsImlzX3NvbWUiLCJnZXRfc29tZV9leG4iLCJnZXQiLCJ0IiwidW5zYWZlX2dldCIsInNldF9zb21lIiwidiIsInNldF9ub25lIiwic2V0IiwidiQwIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInhfMDAyIiwiZW1wdHkiLCJpc19lbXB0eSIsImVxdWFsIiwiZHVtbXlfaWQiLCJjaGlsZCIsInQiLCJwb29sIiwic2libGluZyIsInByZXYiLCJpZCIsInNldF9jaGlsZCIsInYiLCJzZXRfc2libGluZyIsInNldF9wcmV2IiwidmFsdWVfZXhuIiwiYWxsb2NhdGUiLCJ2YWx1ZSIsImZyZWUiLCJkaXNjb25uZWN0X3NpYmxpbmciLCJzaWJsaW5nJDAiLCJkaXNjb25uZWN0X2NoaWxkIiwiY2hpbGQkMCIsImRldGFjaCIsInByZXYkMCIsInJlbGF0aW9uX3RvX3ByZXYiLCJjcmVhdGUiLCJjYXBhY2l0eSIsImludmFyaWFudCIsInRvX3Zpc2l0JDIiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJtYXliZV9wYXJlbnRfdmFsdWUiLCJleHBlY3RlZF9wcmV2Iiwibm9kZSIsInRoaXNfdmFsdWUiLCJwYXJlbnRfdmFsdWUiLCJ0b192aXNpdCQxIiwiY3JlYXRlJDAiLCJvcHQiLCJjbXAiLCJzdGgiLCJtaW5fc2l6ZSIsImNvcHkiLCJwb29sJDAiLCJzdGFydCIsIm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMiLCJjb3B5X25vZGUiLCJuZXdfbm9kZSIsIm5ld19zdGFydCIsInJlc3QiLCJub2RlX3RvX2NvcHkiLCJzbG90Iiwibm9kZV90b191cGRhdGUiLCJtZXJnZSIsInJvb3QxIiwicm9vdDIiLCJhZGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJjdXJyZW50X2NoaWxkIiwidjEiLCJ2MiIsInRvcF9leG4iLCJ0b3AiLCJhZGRfbm9kZSIsInQkMSIsInQkMCIsImFkZCIsIm1heF9zdGFja19kZXB0aCIsImxvb3AiLCJkZXB0aCIsImhlYWQkMCIsIm5leHQxJDAiLCJuZXh0MiQwIiwiYWNjIiwiaGVhZCIsIm5leHQxIiwibmV4dDIiLCJhY2MkMCIsImgiLCJ4cyIsImhlYXAiLCJyZW1vdmVfbm9uX2VtcHR5IiwibWVyZ2VkX2NoaWxkcmVuIiwibmV3X3Jvb3QiLCJyZW1vdmVfdG9wIiwiY2xlYXIiLCJub2RlJDAiLCJwb3BfZXhuIiwiciIsInBvcCIsInBvcF9pZiIsImYiLCJmb2xkIiwiaW5pdCIsIml0ZXIiLCJsZW5ndGgiLCJpdGVyJDAiLCJsZW5ndGgkMCIsImlzX2VtcHR5JDAiLCJtZW0iLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJzZXhwX29mX3QiLCJpc19ub2RlX3ZhbGlkIiwidmFsdWVfZXhuJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfYSIsInhfMDAxIiwicmVtb3ZlIiwidG9rZW4iLCJhZGRfcmVtb3ZhYmxlIiwidXBkYXRlIiwiZmluZF9lbHQiLCJub2RlcyQyIiwibm9kZXMiLCJub2RlcyQwIiwibm9kZXMkMSIsInVwZGF0ZSQwIiwiZWx0IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJ0X29mX3NleHAiLCJvZl9hXzAwMyIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsInBvcyIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhbV9ydW5uaW5nX3Rlc3QiLCJub25lIiwic29tZSIsIngiLCJ1bnNhZmVfdmFsdWUiLCJpc19ub25lIiwidCIsImlzX3NvbWUiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsImEiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsInZhbHVlXzAwMyIsIm5leHRfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJjcmVhdGUiLCJ1bnVzZWRfZWx0cyIsInIiLCJzZXRfdW51c2VkX2VsdHMiLCJ2IiwiYmFjayIsInNldF9iYWNrIiwiZnJvbnQiLCJzZXRfZnJvbnQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwidW51c2VkX2VsdHMkMCIsImJhY2skMCIsImZyb250JDAiLCJsZW5ndGgkMCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDciLCJsZW5ndGhfMDA5IiwiZnJvbnRfMDExIiwiYmFja18wMTMiLCJ1bnVzZWRfZWx0c18wMTUiLCJibmRzXzAwOCIsImFyZ18wMTYiLCJibmRzXzAwOCQwIiwiYXJnXzAxNCIsImJuZHNfMDA4JDEiLCJhcmdfMDEyIiwiYm5kc18wMDgkMiIsImFyZ18wMTAiLCJibmRzXzAwOCQzIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ0IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsInhfMDE3IiwiY3JlYXRlJDAiLCJlbnF1ZXVlIiwiYSIsIm5ld19iYWNrIiwiZGVxdWV1ZV9leG4iLCJ4XzAxOCIsImNsZWFyX2ludGVybmFsX3Bvb2wiLCJhZnRlciIsInQiLCJzcGFuIiwicmVzdWx0IiwibG9nIiwiYXJnMl8wMDMiLCJhcmczXzAwNCIsInNleHBfb2ZfYSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwNSIsInJlczFfMDA2IiwicmVzMl8wMDciLCJyZXMzXzAwOCIsImxvZ19zdHJpbmciLCJtZXNzYWdlIiwiY29uY2F0IiwiZXByaW50IiwiZXByaW50X3MiLCJlcHJpbnRzIiwicHJpbnRfcyIsInNleHAiLCJzZWMiLCJzZXhwX29mX3QiLCJ0b19yZXByIiwib2ZfcmVwciIsIm5hbWVzIiwiZGVidWciLCJmb3J3YXJkaW5nIiwiciIsInNldF9mb3J3YXJkaW5nIiwidiIsImhhc19zZWVuX2Vycm9yIiwic2V0X2hhc19zZWVuX2Vycm9yIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfdGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsInNldF9oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsIm5leHRfZXJyb3IiLCJzZXRfbmV4dF9lcnJvciIsImlkIiwiaGVyZSIsIm5hbWUiLCJmb3J3YXJkaW5nJDAiLCJoYXNfc2Vlbl9lcnJvciQwIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMkMCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzJDAiLCJuZXh0X2Vycm9yJDAiLCJpZCQwIiwiaGVyZSQwIiwibmFtZSQwIiwibWFrZV9jcmVhdG9yIiwibmFtZV9mdW4iLCJoZXJlX2Z1biIsImlkX2Z1biIsIm5leHRfZXJyb3JfZnVuIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZnVuIiwidGFpbHNfZm9yX2FsbF9lcnJvcnNfZnVuIiwiaGFzX3NlZW5fZXJyb3JfZnVuIiwiZm9yd2FyZGluZ19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJuYW1lX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJoZXJlX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJpZF9nZW4iLCJjb21waWxlX2FjYyQzIiwibmV4dF9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZ2VuIiwiY29tcGlsZV9hY2MkNSIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJoYXNfc2Vlbl9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ3IiwiZm9yd2FyZGluZ19nZW4iLCJhY2MiLCJjcmVhdGUiLCJtYXAiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJyZWNvcmQkMCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25zIiwidCQxIiwiYWMiLCJhYyQwIiwidCQwIiwieF8wMDEiLCJuZXh0X2lkIiwiY3JlYXRlX3dpdGhfcGFyZW50IiwiaW5mbyIsInBhcmVudCIsImkiLCJzIiwicyQwIiwieF8wMDIiLCJwYXJlbnQkMCIsIm1haW4iLCJiYWNrdHJhY2VfaGlzdG9yeSIsImxvY2FsX3N0b3JhZ2UiLCJwcmlvcml0eSIsIm1vbml0b3IiLCJiYWNrdHJhY2VfaGlzdG9yeSQwIiwibG9jYWxfc3RvcmFnZSQwIiwicHJpb3JpdHkkMCIsIm1vbml0b3IkMCIsIm1vbml0b3JfZnVuIiwicHJpb3JpdHlfZnVuIiwibG9jYWxfc3RvcmFnZV9mdW4iLCJiYWNrdHJhY2VfaGlzdG9yeV9mdW4iLCJtb25pdG9yX2dlbiIsInByaW9yaXR5X2dlbiIsImxvY2FsX3N0b3JhZ2VfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfMDA4IiwibG9jYWxfc3RvcmFnZV8wMDYiLCJwcmlvcml0eV8wMDQiLCJtb25pdG9yXzAwMiIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMiIsImludmFyaWFudCIsImNyZWF0ZV9saWtlIiwiZmluZF9sb2NhbCIsImtleSIsIndpdGhfbG9jYWwiLCJkYXRhIiwicmVjb3JkX2JhY2t0cmFjZSIsImR1bW15X2UiLCJkdW1teV9mIiwiZHVtbXlfYSIsInNleHBfb2Zfc2xvdHMiLCJvZl9ldmVudCIsImV2ZW50Iiwib2Zfam9iIiwiam9iIiwiaXNfZXZlbnQiLCJpc19qb2IiLCJraW5kIiwicHJvamVjdCIsImpvYl9vcl9ldmVudCIsImV2ZW50cyIsInNldF9leGVjdXRpb25fY29udGV4dCIsImV4ZWN1dGlvbl9jb250ZXh0IiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImZyb250Iiwic2V0X2Zyb250IiwibWFzayIsInNldF9tYXNrIiwiam9icyIsInNldF9qb2JzIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJudW1fam9ic19ydW4iLCJzZXRfbnVtX2pvYnNfcnVuIiwibGVuZ3RoJDAiLCJmcm9udCQwIiwibWFzayQwIiwiam9icyQwIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm51bV9qb2JzX3J1biQwIiwibnVtX2pvYnNfcnVuXzAwMiIsImpvYnNfbGVmdF90aGlzX2N5Y2xlXzAwNCIsImpvYnNfMDA2IiwibWFza18wMDgiLCJmcm9udF8wMTAiLCJsZW5ndGhfMDEyIiwiYXJnXzAxMyIsImFyZ18wMTEiLCJibmRzXzAwMSQzIiwiYm5kc18wMDEkNCIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiY2xlYXIiLCJzZXQiLCJhIiwib2Zmc2V0JDAiLCJlbnF1ZXVlIiwib2xkX2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5Iiwib2xkX2pvYnMiLCJvbGRfZnJvbnQiLCJsZW4xIiwibGVuMiIsIm5ld19qb2JzIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJuIiwiY2FuX3J1bl9hX2pvYiIsInJ1bl9qb2IiLCJzY2hlZHVsZXIiLCJydW5fZXh0ZXJuYWxfam9icyIsImV4dGVybmFsX2pvYnMiLCJydW5fam9icyIsInRoaXNfam9iIiwiZXhuJDAiLCJleG4iLCJiYWNrdHJhY2UiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsIm5hbWVzJDAiLCJpc19udWxsIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQxIiwidHJhbnNpdGlvbl9pc19hbGxvd2VkIiwiZnJvbSIsInRvIiwic2V4cF9vZl9ldmVudCIsImF0IiwiaW50ZXJ2YWwiLCJzdGF0dXMiLCJtYXRjaCIsIm5vbmUiLCJzb21lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJmaXJzdF9zb21lIiwidDEiLCJ0MiIsInVuc2FmZV92YWx1ZSIsInNleHBfb2ZfdCQyIiwicHB4X29wdGlvbmFsX2VfMCIsInZhbHVlJDAiLCJkZWZhdWx0JDAiLCJ2YWx1ZV9leG4iLCJ0b19vcHRpb24iLCJvZl9vcHRpb24iLCJzZXRfc3RhdHVzIiwicHJldl9maXJlZCIsInNldF9wcmV2X2ZpcmVkIiwibmV4dF9maXJlZCIsInNldF9uZXh0X2ZpcmVkIiwic2V0X2ludGVydmFsIiwiY2FsbGJhY2siLCJhdCQwIiwic2V0X2F0IiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJzdGF0dXMkMCIsInByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMCIsImludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQwIiwiY2FsbGJhY2skMCIsImF0JDEiLCJhbGFybSQwIiwiYWxhcm1fZnVuIiwiYXRfZnVuIiwiY2FsbGJhY2tfZnVuIiwiZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiaW50ZXJ2YWxfZnVuIiwibmV4dF9maXJlZF9mdW4iLCJwcmV2X2ZpcmVkX2Z1biIsInN0YXR1c19mdW4iLCJhbGFybV9nZW4iLCJhdF9nZW4iLCJjYWxsYmFja19nZW4iLCJleGVjdXRpb25fY29udGV4dF9nZW4iLCJpbnRlcnZhbF9nZW4iLCJuZXh0X2ZpcmVkX2dlbiIsInByZXZfZmlyZWRfZ2VuIiwic3RhdHVzX2dlbiIsImdvdCIsInNleHBpZmllciIsImV4cGVjdCIsImVxdWFsIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJwcHhfb3B0aW9uYWxfZV8wJDAiLCJhXzAxNyIsImJfMDE4IiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImV4cGVjdCQwIiwibWVzc2FnZSQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsInhfMDE2IiwiaW52YXJpYW50JDAiLCJzZXhwX29mX3QkNSIsInhfMDIxIiwiaW52YXJpYW50JDEiLCJpbnZhcmlhbnRfd2l0aF9qb2JzJDAiLCJzZXhwX29mX3QkNiIsInhfMDIyIiwiaWQkMSIsImlzX3dhbGxfY2xvY2skMSIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJyZWFkX29ubHkiLCJmaXJlIiwiY29udGludWUkMCIsIm5leHQkMCIsImNvbnRpbnVlJDEiLCJwcHhfb3B0aW9uYWxfZV8wJDEiLCJuZXh0IiwicHB4X29wdGlvbmFsX2VfMCQyIiwicHJldiIsImFsYXJtX3ByZWNpc2lvbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX3J1bnNfYXQiLCJub3ckMCIsInRpbWluZ193aGVlbF9ub3ckMCIsInNjaGVkdWxlIiwicmVtb3ZlX2Zyb21fZmlyZWQiLCJuZXdfc3RhdHVzIiwic2V4cF9vZl9ldmVudCQwIiwic3RhdHVzJDEiLCJwcmV2X2ZpcmVkJDEiLCJzZXRfcHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQxIiwic2V0X25leHRfZmlyZWQkMCIsImludGVydmFsJDEiLCJzZXRfaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDEiLCJjYWxsYmFjayQxIiwic2V0X2F0JDAiLCJhbGFybSQxIiwic2V0X2FsYXJtJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQyIiwic2V0X3N0YXR1cyQxIiwic2V0X3N0YXR1c19pZiQwIiwic2NoZWR1bGVkX2F0IiwiY3JlYXRlX2ludGVybmFsIiwiYWRkJDAiLCJjcmVhdGVfYW5kX2FkZCIsImF0JDIiLCJhZnRlciQwIiwicmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJhdF9pbnRlcnZhbHMiLCJzZXhwX29mX3QkOCIsImFib3J0IiwiYWJvcnRfaWZfcG9zc2libGUiLCJhYm9ydF9leG4iLCJyZWFzb24iLCJjcmVhdGUkMSIsInNjaGVkdWxlX2F0X2ludGVybmFsIiwic2NoZWR1bGVfYXQiLCJzY2hlZHVsZV9hZnRlciIsInNjaGVkdWxlX2F0X2ludGVydmFscyIsInJlc2NoZWR1bGVfYXQiLCJyZXNjaGVkdWxlX2FmdGVyIiwicnVuX2FmdGVyIiwicnVuX2F0IiwicnVuX2F0X2ludGVydmFscyIsInJ1bl9maXJlZF9ldmVudHMiLCJzZW5kX2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJzZW5kX2V4biQwIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF8iLCJhZHZhbmNlX2RpcmVjdGx5IiwiZHVyYXRpb25fb2YiLCJzdGFydCIsImR1cmF0aW9uIiwibWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193IiwiaGFzX2V2ZW50c190b19ydW4iLCJjcmVhdGVfd2l0aF9jZWxsIiwiY2VsbCIsImNyZWF0ZV9mdWxsIiwiZXhlYyIsImV4ZWMkMCIsImV4ZWNfZnVuIiwiZXhlY19nZW4iLCJzZXhwX29mX3QkMCIsImV4ZWN1dGlvbl9jb250ZXh0XzAwMiIsInJlY29yZF9iYWNrdHJhY2VzIiwic2V0X3JlY29yZF9iYWNrdHJhY2VzIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfIiwic2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfIiwiY2hlY2tfaW52YXJpYW50cyIsInNldF9jaGVja19pbnZhcmlhbnRzIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJzZXRfeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJ5aWVsZCQwIiwic2V0X3lpZWxkIiwiZXZlbnRfYWRkZWRfaG9vayIsInNldF9ldmVudF9hZGRlZF9ob29rIiwiam9iX3F1ZXVlZF9ob29rIiwic2V0X2pvYl9xdWV1ZWRfaG9vayIsInRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIiwic2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9oIiwidGltZV9zb3VyY2UiLCJzZXRfdGltZV9zb3VyY2UiLCJ0b3RhbF9jeWNsZV90aW1lIiwic2V0X3RvdGFsX2N5Y2xlX3RpbWUiLCJsYXN0X2N5Y2xlX251bV9qb2JzIiwic2V0X2xhc3RfY3ljbGVfbnVtX2pvYnMiLCJsYXN0X2N5Y2xlX3RpbWUiLCJzZXRfbGFzdF9jeWNsZV90aW1lIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9lbmQiLCJzZXRfcnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydCIsInNldF9ydW5fZXZlcnlfY3ljbGVfc3RhcnQiLCJpbl9jeWNsZSIsInNldF9pbl9jeWNsZSIsImN5Y2xlX3N0YXJ0Iiwic2V0X2N5Y2xlX3N0YXJ0IiwiY3ljbGVfY291bnQiLCJzZXRfY3ljbGVfY291bnQiLCJ1bmNhdWdodF9leG5fdW53cmFwcGVkIiwic2V0X3VuY2F1Z2h0X2V4biIsInNldF9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IiwibWFpbl9leGVjdXRpb25fY29udGV4dCIsInNldF9tYWluX2V4ZWN1dGlvbl9jb250ZXh0IiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyIsImxvd19wcmlvcml0eV9qb2JzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMiLCJqb2JfcG9vbCIsInNldF9qb2JfcG9vbCIsImNoZWNrX2FjY2VzcyIsInNldF9jaGVja19hY2Nlc3MiLCJyZWNvcmRfYmFja3RyYWNlcyQwIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDAiLCJjaGVja19pbnZhcmlhbnRzJDAiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiQwIiwieWllbGQkMSIsImV2ZW50X2FkZGVkX2hvb2skMCIsImpvYl9xdWV1ZWRfaG9vayQwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2skMCIsImV4dGVybmFsX2pvYnMkMCIsInRpbWVfc291cmNlJDAiLCJ0b3RhbF9jeWNsZV90aW1lJDAiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDAiLCJsYXN0X2N5Y2xlX3RpbWUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmQkMCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0JDAiLCJpbl9jeWNsZSQwIiwiY3ljbGVfc3RhcnQkMCIsImN5Y2xlX2NvdW50JDAiLCJ1bmNhdWdodF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzJDAiLCJsb3dfcHJpb3JpdHlfam9icyQwIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMkMCIsImpvYl9wb29sJDAiLCJjaGVja19hY2Nlc3MkMCIsImNoZWNrX2FjY2Vzc19mdW4iLCJqb2JfcG9vbF9mdW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19mdW4iLCJsb3dfcHJpb3JpdHlfam9ic19mdW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2Z1biIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9mdW4iLCJ1bmNhdWdodF9leG5fZnVuIiwiY3ljbGVfY291bnRfZnVuIiwiY3ljbGVfc3RhcnRfZnVuIiwiaW5fY3ljbGVfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2Z1biIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV9mdSIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9mdW4iLCJsYXN0X2N5Y2xlX3RpbWVfZnVuIiwibGFzdF9jeWNsZV9udW1fam9ic19mdW4iLCJ0b3RhbF9jeWNsZV90aW1lX2Z1biIsInRpbWVfc291cmNlX2Z1biIsImV4dGVybmFsX2pvYnNfZnVuIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfIiwiam9iX3F1ZXVlZF9ob29rX2Z1biIsImV2ZW50X2FkZGVkX2hvb2tfZnVuIiwieWllbGRfZnVuIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZnVuIiwiY2hlY2tfaW52YXJpYW50c19mdW4iLCJyZWNvcmRfYmFja3RyYWNlc19mdW4iLCJjaGVja19hY2Nlc3NfZ2VuIiwiam9iX3Bvb2xfZ2VuIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfZ2VuIiwibG93X3ByaW9yaXR5X2pvYnNfZ2VuIiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2Vyc19nZW4iLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwidW5jYXVnaHRfZXhuX2dlbiIsImN5Y2xlX2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDkiLCJjeWNsZV9zdGFydF9nZW4iLCJjb21waWxlX2FjYyQxMCIsImluX2N5Y2xlX2dlbiIsImNvbXBpbGVfYWNjJDExIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEyIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2dlIiwiY29tcGlsZV9hY2MkMTMiLCJydW5fZXZlcnlfY3ljbGVfZW5kX2dlbiIsImNvbXBpbGVfYWNjJDE0IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9nZW4iLCJjb21waWxlX2FjYyQxNSIsImxhc3RfY3ljbGVfdGltZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImxhc3RfY3ljbGVfbnVtX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJ0b3RhbF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE4IiwidGltZV9zb3VyY2VfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJleHRlcm5hbF9qb2JzX2dlbiIsImNvbXBpbGVfYWNjJDIwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfJDAiLCJjb21waWxlX2FjYyQyMSIsImpvYl9xdWV1ZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMiIsImV2ZW50X2FkZGVkX2hvb2tfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJ5aWVsZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluX2dlbiIsImNvbXBpbGVfYWNjJDI1IiwiY2hlY2tfaW52YXJpYW50c19nZW4iLCJjb21waWxlX2FjYyQyNiIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQxIiwiY29tcGlsZV9hY2MkMjciLCJyZWNvcmRfYmFja3RyYWNlc19nZW4iLCJjcmVhdGUkMiIsImNoZWNrX2FjY2Vzc18wMDciLCJqb2JfcG9vbF8wMDkiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzXzAxNSIsImxvd19wcmlvcml0eV9qb2JzXzAxMyIsIm5vcm1hbF9wcmlvcml0eV9qb2JzXzAxMSIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfMDE3IiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF8wMTkiLCJ1bmNhdWdodF9leG5fMDIxIiwiY3ljbGVfY291bnRfMDI3IiwiY3ljbGVfc3RhcnRfMDI5IiwiaW5fY3ljbGVfMDMxIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XzAzMyIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV8wMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfMDM3IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV8wMzkiLCJsYXN0X2N5Y2xlX3RpbWVfMDQxIiwibGFzdF9jeWNsZV9udW1fam9ic18wNDMiLCJ0b3RhbF9jeWNsZV90aW1lXzA0NSIsInRpbWVfc291cmNlXzA0NyIsImV4dGVybmFsX2pvYnNfMDQ5Iiwiam9iX3F1ZXVlZF9ob29rXzA1MyIsImV2ZW50X2FkZGVkX2hvb2tfMDU1IiwieWllbGRfMDU3IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fMDU5IiwiY2hlY2tfaW52YXJpYW50c18wNjEiLCJyZWNvcmRfYmFja3RyYWNlc18wNjUiLCJhcmdfMDY2IiwiYm5kc18wMDYiLCJhcmdfMDY0IiwiYm5kc18wMDYkMCIsImFyZ18wNjIiLCJibmRzXzAwNiQxIiwiYXJnXzA2MCIsImJuZHNfMDA2JDIiLCJhcmdfMDU4IiwiYm5kc18wMDYkMyIsImFyZ18wNTYiLCJibmRzXzAwNiQ0IiwiYXJnXzA1NCIsImJuZHNfMDA2JDUiLCJhcmdfMDUyIiwiYm5kc18wMDYkNiIsImFyZ18wNTAiLCJibmRzXzAwNiQ3IiwiYXJnXzA0OCIsImJuZHNfMDA2JDgiLCJhcmdfMDQ2IiwiYm5kc18wMDYkOSIsImFyZ18wNDQiLCJibmRzXzAwNiQxMCIsImFyZ18wNDIiLCJibmRzXzAwNiQxMSIsImFyZ18wNDAiLCJibmRzXzAwNiQxMiIsImFyZ18wMzgiLCJibmRzXzAwNiQxMyIsImFyZ18wMzYiLCJibmRzXzAwNiQxNCIsImFyZ18wMzQiLCJibmRzXzAwNiQxNSIsImFyZ18wMzIiLCJibmRzXzAwNiQxNiIsImFyZ18wMzAiLCJibmRzXzAwNiQxNyIsImFyZ18wMjgiLCJibmRzXzAwNiQxOCIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYXJnXzAyMiIsImJuZHNfMDA2JDE5IiwiYXJnXzAyMCIsImJuZHNfMDA2JDIwIiwiYXJnXzAxOCIsImJuZHNfMDA2JDIxIiwiYXJnXzAxNiIsImJuZHNfMDA2JDIyIiwiYXJnXzAxNCIsImJuZHNfMDA2JDIzIiwiYXJnXzAxMiIsImJuZHNfMDA2JDI0IiwiYXJnXzAxMCIsImJuZHNfMDA2JDI1IiwiYXJnXzAwOCIsImJuZHNfMDA2JDI2IiwidW5jYXVnaHRfZXhuJDAiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJyZXMxXzA3MCIsIm51bV9wZW5kaW5nX2pvYnMiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDEiLCJ1bm9yZGVyZWRfaXNfc3VibGlzdCIsInNtYWxsIiwibGFyZ2UiLCJ4IiwibCQwIiwieSIsImwiLCJjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCIsInRhYmxlIiwibGlzdCIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJ0X3JlZiIsImNoZWNrX2FjY2VzcyQxIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dCQxIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEiLCJ0bXBfY29udGV4dCIsIm9sZF9jb250ZXh0Iiwid2l0aF9leGVjdXRpb25fY29udGV4dCIsImNyZWF0ZV9qb2IiLCJnb3RfdW5jYXVnaHRfZXhuIiwiYXJnMV8wNzIiLCJhcmcwXzA3MSIsInJlczBfMDczIiwicmVzMV8wNzQiLCJzdGFydF9jeWNsZSIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkiLCJlIiwiZSQwIiwic3RhYmlsaXplIiwiY3JlYXRlX3RpbWVfc291cmNlIiwib3B0Iiwic3RoIiwidGltaW5nX3doZWVsX2NvbmZpZyIsIndhbGxfY2xvY2siLCJzZXRfcHJldiIsInBhcmFtIiwic2V0X25leHQiLCJydW4iLCJjcmVhdGUyIiwicnVuMSIsImV4ZWN1dGlvbl9jb250ZXh0MSIsInJ1bjIiLCJleGVjdXRpb25fY29udGV4dDIiLCJzY2hlZHVsZV9qb2JzIiwiYWRkIiwib2ZfbGlzdCIsImZpcnN0IiwibCQxIiwibCQyIiwicnVuJDAiLCJwcmV2JDAiLCJhY2MkMCIsImNlbGxfb2ZfaGFuZGxlciIsImluZGlyIiwic3F1YXNoIiwidCQzIiwidCQ0IiwiaW5kaXIkMSIsInQkNSIsImluZGlyJDAiLCJ0JDIiLCJhX2ludmFyaWFudCIsImhhbmRsZXIiLCJwZWVrIiwidmFsdWUiLCJpZl9lbXB0eV90aGVuX2ZhaWx3aXRoIiwiaXNfZW1wdHkiLCJpc19mdWxsIiwiZmlsbCIsInJlbW92ZV9oYW5kbGVyIiwiYWRkX2hhbmRsZXIiLCJoYW5kbGVyJDEiLCJoYW5kbGVyJDIiLCJydW4kMSIsImhhbmRsZXIkMCIsImhhc19oYW5kbGVycyIsInVwb24iLCJ1cG9uJDAiLCJjb25uZWN0IiwiYmluZF9yZXN1bHQiLCJiaW5kX3JocyIsImJpbmRfcmVzdWx0JDAiLCJpdmFyIiwiYmluZF9yaHNfY29udGVudHMiLCJpdmFyJDAiLCJsYXN0MSIsImxhc3QyIiwiaGFuZGxlcjEiLCJleGVjdXRpb25fY29udGV4dDIkMCIsInJ1bjIkMCIsImhhbmRsZXIxJDAiLCJ2JDAiLCJvZl9pdmFyIiwiaW52YXJpYW50X2EiLCJyZXR1cm4kMCIsImlzX2RldGVybWluZWQiLCJiaW5kIiwiaCIsInJlYWQiLCJmaWxsX2lmX2VtcHR5IiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJzZXhwX29mX2hvdyIsInZfMDAxIiwibmV2ZXIiLCJyZXR1cm4kMSIsInJldHVybiQyIiwicmV0dXJuJDMiLCJ1bml0IiwiYm90aCQwIiwiYTEiLCJhMiIsImRvbl90X3dhaXRfZm9yIiwiZjIiLCJmMSIsInByb2Nlc3MiLCJyZXN0IiwiY2hvaWNlIiwiZW5hYmxlZCIsImNob2ljZXMiLCJ1bnJlZ2lzdGVycyIsInJlYWR5IiwiY2hvb3NlX3Jlc3VsdCIsImNob2ljZXMkMCIsImNob2ljZXMkMSIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsImIiLCJ4cyIsInNlcW1hcCIsImJzIiwiYWxsIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJvayIsIm9mX2FfMDA1IiwieF8wMDYiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwieF8wMDciLCJjb2xsZWN0IiwiaXNfY2xvc2VkIiwiZmlsbF9leG4iLCJjbG9zZV9leG4iLCJjbG9zZV9pZl9vcGVuIiwiZXh0ZW5kIiwiZGVmZXJyZWQwIiwiZGVmZXJyZWQxIiwiaW1wb3J0MCIsImVycm9yIiwiZGV0YWNoIiwiZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyIsImhhbmRsZXJfc3RhdGVfcmVmIiwicnVuX2YiLCJiYWdfZWx0IiwiaW5uZXJfZXhuJDAiLCJpbm5lcl9leG4iLCJkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0iLCJ0YWlsIiwiZ2V0X25leHRfZXJyb3IiLCJkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIiwiZXh0cmFjdF9leG4iLCJjb2x1bW4iLCJtb25pdG9yJDEiLCJuYW1lJDEiLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwicmVzdCQwIiwicmVzdCQxIiwidDMiLCJyZXN0JDIiLCJyZXN0JDMiLCJ0cmFjZXMiLCJyZXN0JDQiLCJ0MSQwIiwicmVzdCQ1IiwidDIkMCIsInJlc3QkNiIsInQyJDEiLCJiYWNrdHJhY2UkMiIsImxpc3RfaWZfbm90X2VtcHR5IiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJleHRyYWN0X2V4biQwIiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwid2l0aGluX2NvbnRleHQiLCJjb250ZXh0Iiwid2l0aGluX2dlbiIsIndpdGhpbiIsIndpdGhpbl92Iiwid2l0aGluJDAiLCJzY2hlZHVsZV93aXRoX2RhdGEiLCJ3b3JrIiwidXBvbl93b3JrX2ZpbGxfaSIsInNjaGVkdWxlJDAiLCJwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsX2FuZF9maWxsIiwic3RyZWFtX2l0ZXIiLCJzdHJlYW0iLCJleG5zIiwiZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvIiwicmVzdWx0X2ZpbGxlciIsImhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCIsInRyeV93aXRoX2xvZ19leG4iLCJ0cnlfd2l0aCIsInN0aCQwIiwiZG9fZXh0cmFjdF9leG4iLCJzdGgkMSIsInN0aCQyIiwiaGFuZGxlX2V4biIsInJlcyIsInRyeV93aXRoX29yX2Vycm9yIiwidHJ5X3dpdGhfam9pbl9vcl9lcnJvciIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmciIsInIkMCIsImZpbmFsbHlfZXhuIiwiaGFuZGxlX2Vycm9ycyIsImNhdGNoX3N0cmVhbSIsImNhdGNoJDAiLCJjYXRjaF9lcnJvciIsImRlcHRoIiwibiQwIiwiZmlyc3RfZXhuIiwibG9vcCQwIiwibG9vcF9uZXh0IiwibG9vcF9uZXh0JDAiLCJjbG9zZWQiLCJ1bmZvbGQiLCJjb3B5X3RvX3RhaWwiLCJhcHBlbmQiLCJmaWx0ZXJfZGVwcmVjYXRlZCIsImZpbHRlcl9tYXBfZGVwcmVjYXRlZCIsImZpcnN0X24iLCJhdmFpbGFibGVfbm93Iiwic3BsaXQiLCJzdG9wIiwicmVhc29uX2Zvcl9zdG9wcGluZyIsInByZWZpeCIsImZpbmlzaCIsIm8iLCJmaW5kIiwiZm91bmQiLCJ1bmdyb3VwIiwiaW50ZXJsZWF2ZSIsIm51bV9vcGVuIiwiY2xvc2UiLCJvdXRlcl9jbG9zZWQiLCJ0YWtlX3VudGlsIiwieiIsIml0ZXJfZHVyYWJseSIsIml0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIiwiaXRlcl9kdXJhYmx5JDAiLCJvZl9mdW4iLCJzZXRfaXZhciIsImhhc19hbnlfd2FpdGVycyIsInNldF9oYXNfYW55X3dhaXRlcnMiLCJoYXNfYW55X3dhaXRlcnMkMCIsInJlcHIiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJvZl9hXzAwMSIsImhhc19hbnlfd2FpdGVyc18wMDMiLCJpdmFyXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwiYnJvYWRjYXN0Iiwid2FpdCIsImhhc19hbnlfd2FpdGVycyQxIiwieF8wMDMiLCJhZHZhbmNlX2RpcmVjdGx5X2J5IiwiYnkiLCJ3YWl0X2ZvciIsInJ1bl9xdWV1ZWRfYWxhcm1zIiwid2Fsa19hbGFybXMiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQkMCIsImFkdmFuY2VfYnlfYWxhcm1zX2J5Iiwic3Bhbl90b190aW1lIiwicnVuX2F0X2ludGVybmFsIiwidGltZSIsInJlbW92ZV9hbGFybSIsIm9mX2FfMDA4Iiwib2ZfaF8wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNldF9zY2hlZHVsZWRfYXQiLCJudW1fZmlyZXNfdG9fc2tpcCIsInNldF9udW1fZmlyZXNfdG9fc2tpcCIsImZpcmVkIiwic2NoZWR1bGVkX2F0JDAiLCJudW1fZmlyZXNfdG9fc2tpcCQwIiwiZmlyZWQkMCIsIm9mX2FfMDE2Iiwib2ZfaF8wMTciLCJhbGFybV8wMTkiLCJmaXJlZF8wMjMiLCJudW1fZmlyZXNfdG9fc2tpcF8wMjUiLCJzY2hlZHVsZWRfYXRfMDI3IiwidGltZV9zb3VyY2VfMDI5IiwiYm5kc18wMTgiLCJibmRzXzAxOCQwIiwiYXJnXzAyNiIsImJuZHNfMDE4JDEiLCJhcmdfMDI0IiwiYm5kc18wMTgkMiIsImJuZHNfMDE4JDMiLCJibmRzXzAxOCQ0Iiwic2V4cF9vZl90X3VuaXQiLCJ4XzAzMSIsImZpcmVkJDEiLCJpbnZhcmlhbnRfaCIsInNjaGVkdWxlZF9hdF9mdW4iLCJhXzAzMyIsImJfMDM0IiwibnVtX2ZpcmVzX3RvX3NraXBfZnVuIiwiZmlyZWRfZnVuIiwieF8wMzIiLCJvZl9hXzAzNSIsIm9mX2hfMDM2IiwiYXJnMF8wMzciLCJyZXMwXzAzOCIsImFyZzBfMDM5IiwicmVzMF8wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwib2ZfYV8wNDUiLCJvZl9oXzA0NiIsImFyZzBfMDQ3IiwicmVzMF8wNDgiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwieF8wNTMiLCJhJDAiLCJvZl9hXzA1NCIsIm9mX2hfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJhcmcxXzA2MyIsImFyZzBfMDYyIiwicmVzMF8wNjQiLCJyZXMxXzA2NSIsImlzX2luX3RpbWluZ193aGVlbCIsImFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZSIsInJ1bl9hdCQwIiwicnVuX2FmdGVyJDAiLCJhdF90aW1lcyIsIm5leHRfdGltZSIsImF0X3ZhcnlpbmdfaW50ZXJ2YWxzIiwiY29tcHV0ZV9zcGFuIiwic3RhcnQkMCIsImltbWVkaWF0ZWx5IiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsIm9mX2FfMDAyIiwicmVzMF8wMDQiLCJsZW5ndGhfMDA2IiwiYm5kc18wMDUiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwibWF4X2NvbmN1cnJlbnRfam9icyIsImNsZWFuZWQkMCIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQkMCIsImNhcGFjaXR5X2F2YWlsYWJsZSQwIiwibnVtX2pvYnNfcnVubmluZyQwIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0JDAiLCJqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UkMCIsIm1heF9jb25jdXJyZW50X2pvYnMkMCIsIm9mX2FfMDExIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0XzAxOSIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZV8wMTciLCJtYXhfY29uY3VycmVudF9qb2JzXzAxNSIsImNvbnRpbnVlX29uX2Vycm9yXzAxMyIsIm51bV9qb2JzX3J1bm5pbmdfMDIxIiwiY2FwYWNpdHlfYXZhaWxhYmxlXzAyMyIsImlzX2RlYWRfMDI1IiwiY2xlYW5zXzAyNyIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRfMDI5IiwiY2xlYW5lZF8wMzEiLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiYm5kc18wMTIkMiIsImJuZHNfMDEyJDMiLCJibmRzXzAxMiQ0Iiwib3V0Y29tZV8wMDkiLCJzdGFydF8wMDYiLCJibmRzXzAwNSQwIiwidl8wMDgiLCJibmRzXzAwNSQxIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2ZfYV8wMzQiLCJvZl9raW5kXzAzNSIsInhfMDM2IiwibnVtX2pvYnNfd2FpdGluZ190b19zdGFydCIsImNsZWFuX3Jlc291cmNlIiwia2lsbCIsImF0X2tpbGwiLCJjbGVhbmVkJDEiLCJzdGFydF9qb2IiLCJqb2JfcmVzb3VyY2UiLCJqb2JfcmVzb3VyY2VzIiwiY3JlYXRlX3dpdGgiLCJvdXRjb21lIiwiaW50ZXJuYWxfam9iIiwiaGFuZGxlX2VucXVldWVfcmVzdWx0IiwiZW5xdWV1ZSQwIiwiZW5xdWV1ZV9leGNsdXNpdmUiLCJkb25lIiwiZl9wbGFjZWhvbGRlciIsInNsb3QiLCJtb25hZF9zZXF1ZW5jZV9ob3ciLCJob3ciLCJtb25hZF9zZXF1ZW5jZV9ob3cyIiwicHJpb3Jfam9ic19kb25lIiwiYWxsX2R1bW15X2pvYnNfcnVubmluZyIsImR1bW15X2pvYnNfcnVubmluZyIsImNhcGFjaXR5X2F2YWlsYWJsZSQxIiwiaGFzX3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudCIsIm5leHRfdXBjb21pbmdfZXZlbnRfZXhuIiwiZXZlbnRfcHJlY2lzaW9uIiwiYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2siLCJoYW5kbGUiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2siLCJyZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2siLCJsc3QiLCJsc3QkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJxdWV1ZSIsInJ1bm5pbmciLCJ0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiIsImN5Y2xlX3N0YXJ0X25zIiwiY3ljbGVfdGltZXNfbnMiLCJjeWNsZV90aW1lcyIsImV2ZW50X3ByZWNpc2lvbl9ucyIsImJvb2wiLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayQwIiwiYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rJDAiLCJyZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va18kMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEkMCIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInZfMDA2IiwiZm9sZGkiLCJzZXFtYXBpIiwiaXRlcmkiLCJtYXBpIiwiZmlsdGVyaSIsImJvb2xzIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImZpbmRfbWFwaSIsImF1eCIsImZpbmRpIiwiZWx0IiwiZXhpc3RzaSIsImZvcl9hbGxpIiwiZmlsdGVyX21hcCIsImZpbHRlciIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInRsIiwiaGQiLCJjaGFuZ2UiLCJ1cGRhdGUiLCJpdGVyX2tleXMiLCJhbGlzdCIsImFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIiwiZm9sZF9yaWdodCIsImFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIiwic2VxdWVuY2UiLCJqb2JfbWFwIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInRodW5rIiwicmVyYWlzZSIsImdlbmVyYWwiLCJoYXNoYWJsZSIsImNvbWJpbmUiLCJlcnIiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImFwcGx5IiwiZTEiLCJlMiIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJva19leG4iLCJvZl9leG4iLCJvZl9leG5fcmVzdWx0IiwibXNnIiwic2V4cF9vZiIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ0YWciLCJ0YWdfcyIsInRhZ19zX2xhenkiLCJ0YWdfYXJnIiwidW5pbXBsZW1lbnRlZCIsImNvbWJpbmVfZXJyb3JzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCQwIiwidHJ5X3dpdGhfam9pbiIsInN0YXRlJDAiLCJmb2xkX21hcGkiLCJtYXBpX2YiLCJmb2xkX2YiLCJ0aHJvdHRsZSIsImMiLCJjJDEiLCJjJDAiLCJpJDAiLCJhY2N1bSIsIm1heWJlX3YiLCJzaG93X2RlYnVnX21lc3NhZ2VzIiwiY2hlY2tfaW52YXJpYW50IiwieF8wMDQiLCJ2YWx1ZXNfcmVhZCIsInNldF92YWx1ZXNfcmVhZCIsInZhbHVlc19yZWFkJDAiLCJwaXBlX2lkXzAwOSIsInZhbHVlc19yZWFkXzAxMSIsImJuZHNfMDA4IiwiYXJnXzAxNSIsImJuZHNfMDA4JDAiLCJ2XzAxMyIsImJuZHNfMDA4JDEiLCJibmRzXzAwOCQyIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbSIsInZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdSIsIndoZW5fc2VudF9kb3duc3RyZWFtIiwiY29uc3VtZXIiLCJ3YW50cyIsImNvbnN1bWVyJDAiLCJ3YW50cyQwIiwib2ZfYV8wMjkiLCJjb25zdW1lcl8wMzMiLCJ3YW50c18wMzEiLCJibmRzXzAzMCIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMSIsInZfMDIwIiwicmVzMF8wMjIiLCJhcmcxXzAyNSIsImFyZzBfMDI0IiwicmVzMF8wMjYiLCJ2XzAyMyIsInJlczFfMDI3IiwiYm5kc18wMzAkMCIsImZpbGxfd2l0aF9lb2YiLCJpJDEiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIiwicmVhZHlfMDM5IiwiZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF8wMzciLCJibmRzXzAzNiIsImJuZHNfMDM2JDAiLCJibmRzXzAzNiQxIiwiY29uc3VtZXJzIiwic2V0X2NvbnN1bWVycyIsImJsb2NrZWRfcmVhZHMiLCJibG9ja2VkX2ZsdXNoZXMiLCJwdXNoYmFjayIsInNldF9wdXNoYmFjayIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJzaXplX2J1ZGdldCQwIiwic2V4cF9vZl9waXBlIiwib2ZfYV8wNDEiLCJvZl9waGFudG9tXzA0MiIsImlkXzA0NCIsImluZm9fMDQ2IiwiYnVmZmVyXzA1MCIsInNpemVfYnVkZ2V0XzA1MiIsInB1c2hiYWNrXzA1NCIsIm51bV92YWx1ZXNfcmVhZF8wNTYiLCJyZWFkX2Nsb3NlZF8wNjQiLCJjbG9zZWRfMDYyIiwiYmxvY2tlZF9yZWFkc18wNjAiLCJibG9ja2VkX2ZsdXNoZXNfMDU4IiwiY29uc3VtZXJzXzA2NiIsInVwc3RyZWFtX2ZsdXNoZWRzXzA2OCIsImJuZHNfMDQzIiwiYXJnXzA2OSIsImJuZHNfMDQzJDAiLCJhcmdfMDY3IiwiYm5kc18wNDMkMSIsImFyZ18wNjUiLCJibmRzXzA0MyQyIiwiYXJnXzA2MyIsImJuZHNfMDQzJDMiLCJhcmdfMDYxIiwiYm5kc18wNDMkNCIsImFyZ18wNTkiLCJibmRzXzA0MyQ1IiwiYXJnXzA1NyIsImJuZHNfMDQzJDYiLCJhcmdfMDU1IiwiYm5kc18wNDMkNyIsImFyZ18wNTMiLCJibmRzXzA0MyQ4IiwiYXJnXzA1MSIsImJuZHNfMDQzJDkiLCJ2XzA0NyIsImFyZ18wNDkiLCJibmRfMDQ4IiwiYm5kc18wNDMkMTAiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMTEiLCJoYXNoIiwiaXNfcmVhZF9jbG9zZWQiLCJwdXNoYmFjayQxIiwieF8wNzMiLCJ4XzAzNSIsInNleHBfb2ZfcGhhbnRvbSIsIm9mX2FfMDc0IiwieF8wNzUiLCJzZXhwX29mX3BoYW50b20kMCIsIm9mX2FfMDc2IiwieF8wNzciLCJpZF9yZWYiLCJpbml0aWFsX2J1ZmZlciIsInZhbGlkYXRlX3NpemVfYnVkZ2V0IiwidXBkYXRlX3B1c2hiYWNrIiwieF8wNzgiLCJjbG9zZV9yZWFkIiwieF8wNzkiLCJmbHVzaCIsImNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4YyIsInciLCJjcmVhdGVfcmVhZGVyIiwiY2xvc2Vfb25fZXhjZXB0aW9uIiwiY3JlYXRlX3dyaXRlciIsInZhbHVlc193ZXJlX3JlYWQiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInN0YXJ0X3dyaXRlIiwieF8wODEiLCJ4XzA4MCIsImZpbmlzaF93cml0ZSIsImJsb2NrZWRfcmVhZCIsIml2YXIkMSIsInRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2siLCJ0cmFuc2Zlcl9pbiIsIndyaXRlIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlJDAiLCJ3cml0ZV93aGVuX3JlYWR5Iiwid3JpdGVfaWZfb3BlbiIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiIsImVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIiwieF8wODMiLCJzdGFydF9yZWFkIiwibGFiZWwiLCJ4XzA4NCIsImdlbl9yZWFkX25vdyIsImdldF9tYXhfcXVldWVfbGVuZ3RoIiwibWF4X3F1ZXVlX2xlbmd0aCQwIiwicmVhZF9ub3ciLCJyZWFkX25vdyQwIiwicmVhZCQwIiwicmVhZF9leG4iLCJ2YWx1ZXNfYXZhaWxhYmxlIiwicmVhZF9jaG9pY2UiLCJyZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXgiLCJyZWFkX2V4YWN0bHkiLCJudW1fdmFsdWVzIiwiYWxyZWFkeV9yZWFkIiwiZG93bnN0cmVhbV9mbHVzaGVkIiwidXBzdHJlYW1fZmx1c2hlZCIsImFkZF9jb25zdW1lciIsInBpcGVfaWQiLCJjb25zdW1lciQxIiwidXBzdHJlYW0iLCJkb3duc3RyZWFtIiwidXBzdHJlYW1fZmx1c2hlZCQwIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsImZvbGRfZ2VuIiwiZmx1c2hlZCIsImZvbGRfd2l0aG91dF9wdXNoYmFjayIsIndpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yIiwiaXRlcl93aXRob3V0X3B1c2hiYWNrIiwibWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMCIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMSIsInJlbWFpbmluZyIsInJlbWFpbmluZyQwIiwiZHJhaW4iLCJkcmFpbl9hbmRfY291bnQiLCJzdW0iLCJyZWFkX2FsbCIsImlucHV0IiwidG9fc3RyZWFtX2RlcHJlY2F0ZWQiLCJvZl9zdHJlYW1fZGVwcmVjYXRlZCIsInRyYW5zZmVyIiwibmV4dF9kZWZlcnJlZCIsImNoZWNrX2Nsb3NlZF9sb29wX25leHQiLCJ0cmFuc2Zlcl9nZW4iLCJvdXRwdXQiLCJsaW5rIiwidW5saW5rIiwib3V0cHV0X2Nsb3NlZCIsInRyYW5zZmVyJDAiLCJ0cmFuc2Zlcl9pZCIsIm1hcF9nZW4iLCJjb25jYXRfbWFwX2xpc3QiLCJmaWx0ZXJfbWFwJDAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAkMCIsIngkMCIsImZvbGRpbmdfbWFwIiwiYWNjdW0kMCIsImVtcHR5Iiwic2luZ2xldG9uIiwid3JpdGVyIiwicmVhZGVyIiwic3ltYm9sIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSQxIiwic2VxdWVuY2UkMCIsInRvX3NlcXVlbmNlIiwiaW50ZXJsZWF2ZV9waXBlIiwiaW5wdXRzIiwib3V0cHV0X3dyaXRlciIsIm51bV9waXBlc19yZW1haW5pbmciLCJkZWNyX251bV9waXBlc19yZW1haW5pbmciLCJoZWFwIiwiaGFuZGxlX3JlYWQiLCJlb2Zfb3Jfb2siLCJwb3BfaGVhcF9hbmRfbG9vcCIsImluaXRpYWxfcHVzaCIsImNvbmNhdF9waXBlIiwiZm9yayIsInB1c2hiYWNrX3VzZXMiLCJ3cml0ZXIwIiwicmVhZGVyMCIsIndyaXRlcjEiLCJyZWFkZXIxIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCIsInNvbWVfcmVhZGVyX3dhc19jbG9zZWQkMCIsInN0aWxsX29wZW4iLCJmaWx0ZXJfb3BlbiIsInN0aWxsX29wZW4kMCIsInNldF9pbmZvIiwidmFsdWVfYXZhaWxhYmxlIiwic2V0X3ZhbHVlX2F2YWlsYWJsZSIsInRha2VuIiwiY3VycmVudF92YWx1ZSIsInZhbHVlX2F2YWlsYWJsZSQwIiwidGFrZW4kMCIsImN1cnJlbnRfdmFsdWUkMCIsInZhbHVlX2F2YWlsYWJsZSQxIiwidmFsdWVfYXZhaWxhYmxlX2Z1biIsImFfMDExIiwiYl8wMTIiLCJ0YWtlbl9mdW4iLCJjdXJyZW50X3ZhbHVlX2Z1biIsInhfMDEwIiwidGFrZW5fMDA2IiwiY3VycmVudF92YWx1ZV8wMDQiLCJ2YWx1ZV9hdmFpbGFibGVfMDA4IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInBlZWtfZXhuIiwieF8wMTMiLCJvZl9hXzAxNCIsInhfMDE1IiwieF8wMTciLCJ3cml0ZV9vbmx5IiwidGFrZV9ub25lbXB0eSIsInRha2Vfbm93X2V4biIsInRha2Vfbm93IiwidGFrZSIsInVwZGF0ZV9leG4iLCJ0YWtlbiQxIiwicHV0IiwicGlwZV93aGVuX3JlYWR5IiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJvbl9ldmVudCIsImFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdCIsImN1cnJlbnRfY29ubmVjdGlvbiIsImNvbm4iLCJjbG9zZV9maW5pc2hlZCQwIiwiaXNfY2xvc2VkJDAiLCJjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QiLCJzZXhwX29mX3QkMSIsInBhcmFtIiwiY29ubl8wMjMiLCJuZXh0X2Nvbm5lY3RfcmVzdWx0XzAyNiIsImRvbl90X3JlY29ubmVjdF8wMzQiLCJjbG9zZV9maW5pc2hlZF8wMzIiLCJjbG9zZV9zdGFydGVkXzAzMCIsImV2ZW50X2hhbmRsZXJfMDI4IiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYm5kc18wMTAiLCJhcmdfMDE0IiwiYm5kc18wMTAkMCIsImFyZ18wMTIiLCJibmRzXzAxMCQxIiwiYXJnXzAyOSIsImJuZHNfMDE2JDUiLCJhcmdfMDI3IiwiYm5kc18wMTYkNiIsInZfMDI1IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwic3RoIiwic3RoJDAiLCJyYW5kb21fc3RhdGUiLCJzdGgkMSIsInRpbWVfc291cmNlIiwiZXZlbnRfaGFuZGxlciIsImRlZmF1bHRfcmV0cnlfZGVsYXkiLCJub25fcmFuZG9taXplZF9kZWxheSIsInJldHJ5X2RlbGF5X3NwYW4iLCJyYW5kb21fc3RhdGUkMCIsInNwYW4iLCJzcGFuJDAiLCJkaXN0YW5jZSIsIndhaXQiLCJyZXRyeV9kZWxheSIsInByZXZpb3VzX2FkZHJlc3MiLCJwcmV2aW91c19lcnJvciIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJlIiwic2FtZV9hc19wcmV2aW91c19lcnJvciIsImFkZHIiLCJwcmV2aW91c19hZGRyZXNzJDAiLCJzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MiLCJwb3MiLCJhbGwiLCJlcnJvcl9zb3VyY2VfMDA1IiwicmV0aXJlZF9rcmJfd29yZCIsImNvbXBhcmUiLCJ0X29mX3NleHAiLCJzZXhwXzAwNiIsInNleHBfb2ZfdCIsImdyb3VwIiwibWFnaWNfd29yZCIsIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSIsImdlbl9tYWdpY19udW1iZXIiLCJ3b3JkIiwiYWNjIiwiYyIsIm1hZ2ljX251bWJlciIsInQiLCJwIiwiYnlfbWFnaWNfbnVtYmVyIiwibWFnaWNfd29yZHMiLCJtYWdpY19udW1iZXJzIiwibiIsIm1hZ2ljX251bWJlciQwIiwic2l6ZSIsInNleHBpZmllciIsImVxdWFsIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMDciLCJiXzAwOCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJjcmVhdGVfZXhuIiwicHJvdG9jb2wiLCJzdXBwb3J0ZWRfdmVyc2lvbnMiLCJnZXRfcHJvdG9jb2wiLCJ2ZXJzaW9ucyIsInByb3RvY29scyIsIm5lZ290aWF0ZSIsImFsbG93X2xlZ2FjeV9wZWVyIiwidXMiLCJwZWVyIiwidXNfdmVyc2lvbnMiLCJ1c19wcm90b2NvbCIsInBlZXJfdmVyc2lvbnMiLCJwZWVyX3Byb3RvY29sIiwidmVyc2lvbiIsIngiLCJtYXRjaGVzX21hZ2ljX3ByZWZpeCIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImYiLCJhbnlfbWFnaWNfcHJlZml4IiwiZ3JvdXAkMCIsImJpbl9zaXplX3QkMCIsImFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZSIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkZXJfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlJDAiLCJib3VuZGVkX2xpc3RfYmluX3NpemUiLCJiaW5fc2hhcGVfdCIsImJpbl90IiwiYmluX3NpemVfdCIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZV90IiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJ1ZiIsInBvc19yZWYiLCJ2bmF0MCIsIm9mX2ludF9leG4iLCJvZl93cml0ZXIiLCJ3cml0ZSIsInNpemUiLCJ3cml0ZSQwIiwicG9zIiwiYSIsImxlbiIsInBvcyQwIiwic2l6ZSQwIiwib2ZfdHlwZV9jbGFzcyIsImJpbl9hIiwidGVzdCIsInMiLCJiaWdzdHJpbmciLCJiaWdzdHJpbmdfdmVyc2lvbiIsIndyaXRlcl93aXRoX2xlbmd0aCIsIndpdGhfbGVuZ3RoX3ZlcnNpb24iLCJwb3ciLCJ4IiwiZGVzY3JpcHRpb25zIiwiZXJyb3Jfc291cmNlXzAxNyIsImdyb3VwIiwidjIiLCJ2MSIsInZpbnQiLCJ2X25hbWUiLCJ2X3ZlcnNpb24iLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsIm4iLCJoYXNoX2ZvbGRfdCIsImhzdiIsImFyZyIsImhzdiQwIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfMDA0IiwiZmllbGRfc2V4cHNfMDA1IiwibmFtZV8wMDYiLCJ2ZXJzaW9uXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwic2V4cF8wMDQkMCIsImZpZWxkX3NleHBzXzAxNCIsImZpZWxkX25hbWVfMDEyIiwidGFpbF8wMTkiLCJmaWVsZF9zZXhwXzAxMyQyIiwiZmllbGRfc2V4cF8wMTMiLCJ4XzAyMCIsImZpZWxkX3NleHBfMDEzJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMSIsImZ2YWx1ZV8wMTYiLCJ2ZXJzaW9uXzAwOSIsIm5hbWVfMDA3Iiwic2V4cF9vZl90IiwidmVyc2lvbl8wMjQiLCJuYW1lXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImFyZ18wMjMiLCJibmRzXzAyMSQwIiwic3VtbWFyaXplIiwidHMiLCJ2ZXJzaW9uIiwibmFtZSIsInN1bW1hcnkiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDMiLCJ0IiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDg2IiwiaWRfMDg0IiwiYXJnXzA4NyIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX3QkOSIsImJpbl9yZWFkX3QkMTAiLCJiaW5fcmVhZGVyX3QkNCIsImJpbl9yZWFkX25hdDBfdCIsImJpbl9yZWFkX25hdDBfdCQwIiwiYmluX3JlYWRlcl9uYXQwX3QiLCJiaW5fc2l6ZV9uYXQwX3QiLCJiaW5fd3JpdGVfbmF0MF90IiwiYmluX3dyaXRlcl9uYXQwX3QiLCJncm91cCQ1IiwiYmluX3NoYXBlX3QkMiIsInJlc3BvbnNlIiwiZXJyb3IiLCJiaW5fc2l6ZV90JDIiLCJzaXplX29mX3Jlc3BvbnNlIiwic2l6ZV9vZl9lcnJvciIsImJpbl93cml0ZV90JDIiLCJ3cml0ZV9yZXNwb25zZSIsIndyaXRlX2Vycm9yIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlIiwiYmluX3dyaXRlcl9lcnJvciIsImJpbl9yZWFkX3QkMTEiLCJvZl9yZXNwb25zZSIsIm9mX2Vycm9yIiwiYmluX3JlYWRfdCQxMiIsInZfdW51c2VkX3F1ZXJ5X2lkIiwidl9pbml0aWFsIiwiYmluX3JlYWRlcl90JDUiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlIiwiYmluX3JlYWRlcl9lcnJvciIsImJpbl90JDIiLCJiaW5fcmVzcG9uc2UiLCJiaW5fZXJyb3IiLCJzZXhwX29mX3QkMiIsIm9mX3Jlc3BvbnNlXzA4OCIsIm9mX2Vycm9yXzA4OSIsImluaXRpYWxfMDkzIiwidW51c2VkX3F1ZXJ5X2lkXzA5MSIsImFyZ18wOTQiLCJibmRzXzA5MCIsImFyZ18wOTIiLCJibmRzXzA5MCQwIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMiIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMiIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ1IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDYiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkX3QkMTQiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkX25hdDBfdCQxIiwiYmluX3JlYWRfbmF0MF90JDIiLCJiaW5fcmVhZGVyX25hdDBfdCQwIiwiYmluX3NpemVfbmF0MF90JDAiLCJiaW5fd3JpdGVfbmF0MF90JDAiLCJiaW5fd3JpdGVyX25hdDBfdCQwIiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMyIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ3IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDgiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX25lZWRzX2xlbmd0aCQzIiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMSIsIm9mX2FfMDk1IiwiYXJnMF8wOTYiLCJyZXMwXzA5NyIsImFyZzBfMDk4IiwicmVzMF8wOTkiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDMiLCJiaW5fcmVhZF9uYXQwX3QkNCIsImJpbl9yZWFkZXJfbmF0MF90JDEiLCJiaW5fc2l6ZV9uYXQwX3QkMSIsImJpbl93cml0ZV9uYXQwX3QkMSIsImJpbl93cml0ZXJfbmF0MF90JDEiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJsZW5ndGgiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJyZWFkX2ZvcmV2ZXIiLCJvbl9tZXNzYWdlIiwib25fZW5kX29mX2JhdGNoIiwicmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCIsImJpbl9yZWFkZXIiLCJwYWNrJDAiLCJjbG9zZSQwIiwiaXNfY2xvc2VkJDAiLCJtb25pdG9yIiwiYnl0ZXNfdG9fd3JpdGUiLCJmbHVzaGVkIiwicmVhZHlfdG9fd3JpdGUiLCJzZW5kX2Jpbl9wcm90IiwiYmluX3dyaXRlciIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ubyIsInN0b3BwZWQiLCJjYW5fc2VuZCIsInRyYW5zZmVyIiwib3B0IiwicGlwZSIsImYiLCJzdGgiLCJtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCIsImNvbnN1bWVyIiwiaXZhciIsIml0ZXIiLCJxIiwiZW5kX29mX3BpcGUiLCJ3cml0ZXJfMDA2IiwicmVhZGVyXzAwNCIsImFyZ18wMDciLCJibmRzXzAwMyIsImJuZHNfMDAzJDAiLCJjbG9zZSQxIiwiY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fIiwiY2FsbGJhY2tfMDAyIiwiY2xvc2VfY29ubmVjdGlvbiIsImNvbnRpbnVlJDAiLCJoYW5kbGVfZXhuIiwiY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIiwiZXhuIiwiY2FsbGJhY2siLCJ3cml0ZXJfMDA0IiwicXVlcnlfaWRfMDAyIiwicmVzcG9uZGVkXzAwNiIsImJuZHNfMDAxJDEiLCJjcmVhdGUiLCJxdWVyeV9pZCIsIndyaXRlciIsImxpZnQiLCJpbXBsIiwiYmluX21zZyIsInN0YXRlIiwic3RyIiwiaW1wbCQwIiwicmVzdWx0X21vZGUiLCJpbXBsJDEiLCJiaW5fcXVlcnkiLCJyZXN1bHRfbW9kZSQwIiwiaW1wbCQyIiwicmVzcCIsImltcGwkMyIsImJpbl91IiwiYmluX2kiLCJiaW5fcSIsImltcGwkNCIsImltcGwkNSIsImltcGwkNiIsInciLCJvZl9jb25uZWN0aW9uX3N0YXRlXzAwOCIsIm9uX2V4Y2VwdGlvbl8wMTgiLCJzaGFwZXNfMDE2IiwiZl8wMTQiLCJ2ZXJzaW9uXzAxMiIsInRhZ18wMTAiLCJhcmdfMDE5IiwiYm5kc18wMDkiLCJhcmdfMDE3IiwiYm5kc18wMDkkMCIsImFyZ18wMTUiLCJibmRzXzAwOSQxIiwiYXJnXzAxMyIsImJuZHNfMDA5JDIiLCJhcmdfMDExIiwiYm5kc18wMDkkMyIsImRlc2NyaXB0aW9uIiwibGlmdCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiZGF0YSIsImFkZF9sZW4kMCIsImFkZF9sZW4kMSIsImUkMCIsImUiLCJhcmdfMDE4Iiwic3ltYm9sIiwiZGVmZXJfcmVzdWx0IiwiZCIsImQkMCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAzMCIsImJuZHNfMDA4IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmdfMDI0IiwiYm5kc18wMDgkMCIsImFyZ18wMjIiLCJibmRzXzAwOCQxIiwiYXJnXzAyMCIsImJuZHNfMDA4JDIiLCJibmRzXzAwOCQzIiwiYXJnXzAxNiIsImJuZHNfMDA4JDQiLCJhcmdfMDE0IiwiYm5kc18wMDgkNSIsImFyZ18wMTIiLCJibmRzXzAwOCQ2IiwiYXJnXzAxMCIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJpZCIsInJlc3VsdCIsInNleHAiLCJ4XzAzNCIsIndyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX2RhdGEiLCJiaW5fd3JpdGVfdm9pZCIsImJ1ZmZlciIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hcyIsImJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIiwic3RyX2xlbiIsIm5leHQiLCJiaW5fc2l6ZV9uYXQwX2hlYWRlciIsImhlYWRlcl9wcmVmaXgiLCJkYXRhX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuIiwic3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuIiwiYmluX3dyaXRlX25hdDBfaGVhZGVyIiwiYmluX3dyaXRlcl9uYXQwX2hlYWRlciIsImJpbl9zaXplX21lc3NhZ2UiLCJiaW5fd3JpdGVfbWVzc2FnZSIsImJpbl93cml0ZXJfbWVzc2FnZSIsImJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyIsImluc3RhbmNlIiwiY2xvc2VkIiwid3JpdGVfZW9mIiwid3JpdGVfbWVzc2FnZSQwIiwic3RyZWFtX3dyaXRlciIsImNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbiIsImdyb3VwcyIsImVsZW1lbnRfaW5fZ3JvdXAiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQwIiwiaW5zdGFuY2UkMCIsIndyaXRlJDEiLCJtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24iLCJvbl9leGNlcHRpb24iLCJhcHBseV9pbXBsZW1lbnRhdGlvbiIsImltcGxlbWVudGF0aW9uIiwicXVlcnkiLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJiaW5fcXVlcnlfcmVhZGVyIiwicXVlcnlfY29udGVudHMiLCJleG4kMCIsImYkMCIsImxlbiQwIiwiZiQxIiwiYmluX3Jlc3BvbnNlX3dyaXRlciIsImJpbl9xdWVyeV9yZWFkZXIkMCIsInF1ZXJ5X2NvbnRlbnRzJDAiLCJkYXRhJDAiLCJleG4kMSIsImJhY2t0cmFjZSIsImYkMiIsInJlc3BvbmRlciIsImlzX3VuY2F1Z2h0X2V4biIsInJlc3VsdCQwIiwiY2hlY2tfcmVzcG9uZGVkIiwiciIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciQxIiwic3RyZWFtX3F1ZXJ5IiwibGVuJDEiLCJkYXRhJDEiLCJmJDMiLCJpbXBsX3dpdGhfc3RhdGUiLCJmJDYiLCJ3cml0ZXIkMCIsInJ1bl9pbXBsIiwic3BsaXRfb2siLCJoYW5kbGVfb2siLCJvayIsImluaXRpYWwiLCJmJDQiLCJwaXBlX3IiLCJmJDUiLCJmbHVzaCIsImFjYyIsInByb2R1Y2Vyc19mbHVzaGVkIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsInRhZyIsImlfcyIsImR1cHMiLCJpIiwiaW5zdGFudGlhdGUiLCJjb25uZWN0aW9uX3N0YXRlIiwidW5wYWNrZWQiLCJjcmVhdGVfZXhuIiwibnVsbCQwIiwiYWRkX2V4biIsImRlc2MiLCJhZGQiLCJpbXBsZW1lbnRhdGlvbnMkMCIsIm9uX3Vua25vd25fcnBjJDAiLCJjYWxsIiwiZXhwZXJ0IiwiY2Fubm90X3NlbmQiLCJ4XzAzOSIsIm1hcmtfcmVzcG9uZGVkIiwic2NoZWR1bGUiLCJoZWFkZXIiLCJoYW5kbGVfc2VuZF9yZXN1bHQkMCIsIndyaXRlX2JpZ3N0cmluZyIsIndyaXRlX2Jpbl9wcm90IiwibXNnIiwiZXJyb3Jfc291cmNlXzA0NiIsIm5lZ290aWF0ZSQwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJ0X29mX3NleHAkMCIsInNleHBfMDMzIiwiZmllbGRfc2V4cHNfMDM0IiwidGltZW91dF8wMzUiLCJzZW5kX2V2ZXJ5XzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNDgiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA0OSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDQiLCJzZW5kX2V2ZXJ5XzAzOCIsInRpbWVvdXRfMDM2Iiwic2VuZF9ldmVyeV8wNTMiLCJ0aW1lb3V0XzA1MSIsImFyZ18wNTQiLCJibmRzXzA1MCIsImFyZ18wNTIiLCJibmRzXzA1MCQwIiwidl90aW1lb3V0Iiwidl9zZW5kX2V2ZXJ5Iiwic2VuZF9ldmVyeSIsInRpbWVvdXQiLCJzdGgkMCIsImhlYXJ0YmVhdF9jb25maWdfMDYzIiwiZGVzY3JpcHRpb25fMDYxIiwiaGVhcnRiZWF0X2NhbGxiYWNrc18wNjUiLCJsYXN0X3NlZW5fYWxpdmVfMDY3IiwiaGVhcnRiZWF0X2V2ZW50XzA4MyIsInRpbWVfc291cmNlXzA4MSIsImltcGxlbWVudGF0aW9uc19pbnN0YW5jZV8wNzkiLCJjbG9zZV9maW5pc2hlZF8wNzciLCJjbG9zZV9zdGFydGVkXzA3NSIsIm9wZW5fcXVlcmllc18wNzMiLCJ3cml0ZXJfMDcxIiwicmVhZGVyXzA2OSIsImFyZ18wODQiLCJibmRzXzA2MCIsImFyZ18wODIiLCJibmRzXzA2MCQwIiwiYXJnXzA4MCIsImJuZHNfMDYwJDEiLCJhcmdfMDc4IiwiYm5kc18wNjAkMiIsImFyZ18wNzYiLCJibmRzXzA2MCQzIiwiYXJnXzA3NCIsImJuZHNfMDYwJDQiLCJhcmdfMDcyIiwiYm5kc18wNjAkNSIsImFyZ18wNzAiLCJibmRzXzA2MCQ2IiwiYXJnXzA2OCIsImJuZHNfMDYwJDciLCJhcmdfMDY2IiwiYm5kc18wNjAkOCIsInRpbWVvdXRfMDU2Iiwic2VuZF9ldmVyeV8wNTgiLCJhcmdfMDU5IiwiYm5kc18wNTUiLCJhcmdfMDU3IiwiYm5kc18wNTUkMCIsImFyZ18wNjQiLCJibmRzXzA2MCQ5IiwiYXJnXzA2MiIsImJuZHNfMDYwJDEwIiwic2V4cF9vZl90X2h1bV93cml0ZXIiLCJ4XzA4NSIsImRpc3BhdGNoIiwicmVzcG9uc2VfaGFuZGxlciIsImJpbl93cml0ZXJfcXVlcnkiLCJtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyIsImRvX3NlbmQiLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImVycm9yJDAiLCJkdW1teV9idWZmZXIiLCJkdW1teV9yZWYiLCJjb250YWluc19tYWdpY19wcmVmaXgiLCJjcmVhdGUkMCIsImhhbmRzaGFrZV90aW1lb3V0IiwiaGVhcnRiZWF0X2NvbmZpZyIsInN0aCQxIiwic3RoJDIiLCJ0aW1lX3NvdXJjZSIsIndyaXRlciQxIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODgiLCJoZWFydGJlYXRfZnJvbV9ub3dfb24iLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJwZWVyIiwid2l0aF9jbG9zZSIsInRyYW5zcG9ydCIsImRpc3BhdGNoX3F1ZXJpZXMiLCJvbl9oYW5kc2hha2VfZXJyb3IiLCJoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIiwidCQwIiwic2VydmVyX3dpdGhfY2xvc2UiLCJvbl9oYW5kc2hha2VfZXJyb3IkMCIsImVycm9yX3NvdXJjZV8wMDkiLCJlcnJvcl9zb3VyY2VfMDI0Iiwic3ltYm9sJDAiLCJkaXNwYXRjaF9yYXciLCJjb25uIiwicXVlcnkkMCIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInNoYXBlcyIsImxzdCIsInNoYXBlIiwicXVlcnlfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQiLCJzaGFwZXMkMCIsImltcGxlbWVudCIsImltcGxlbWVudCQwIiwicmVzcG9uc2UkMCIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IiLCJkaXNwYXRjaCQwIiwiZGlzcGF0Y2hfZXhuIiwibWFrZV9kaXNwYXRjaCIsImRvX2Rpc3BhdGNoIiwicnBjX3RhZyIsImhhbmRsZV9yZXNwb25zZSIsImhhbmRsZV9lcnJvciIsInhfMDAyIiwiZGlzcGF0Y2gkMSIsInNjaGVkdWxlX2Rpc3BhdGNoIiwiaW1wbGVtZW50JDEiLCJpbXBsZW1lbnQkMiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uIiwiaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24kMCIsInZlcnNpb24kMCIsIm5hbWUkMCIsIm1zZ190eXBlX2lkIiwic2hhcGVzJDEiLCJkZXNjcmlwdGlvbiQwIiwiaW1wbGVtZW50JDMiLCJkaXNwYXRjaCQyIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciQwIiwiZGlzcGF0Y2gkMyIsImRpc3BhdGNoX2V4biQwIiwiaW1wbGVtZW50JDQiLCJkaXNwYXRjaCQ0Iiwic2NoZWR1bGVfZGlzcGF0Y2gkMCIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNyZWF0ZSQxIiwiY2xpZW50X3B1c2hlc19iYWNrIiwiYmluX2luaXRpYWxfcmVzcG9uc2UiLCJiaW5fdXBkYXRlX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2UiLCJhbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlIiwiY2xpZW50X3B1c2hlc19iYWNrJDAiLCJpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQiLCJ1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCIsImVycm9yX3Jlc3BvbnNlX3R5cGVfaWQiLCJtYWtlX2luaXRpYWxfbWVzc2FnZSIsImltcGxlbWVudF9nZW4iLCJpbXBsZW1lbnQkNSIsImMiLCJhYm9ydCIsInJlYWRfZXJyb3IiLCJoYW5kbGVyIiwiY29yZV9lcnIiLCJkaXNwYXRjaF9nZW4iLCJtYWtlX3VwZGF0ZV9oYW5kbGVyIiwiaW5pdGlhbF9zdGF0ZSIsImluaXRpYWxfaGFuZGxlciIsImVyciQxIiwiaW5pdGlhbF9tc2ciLCJpbml0aWFsJDAiLCJleHRyYSIsImhhbmRsZXIkMCIsImJpbl9yZWFkZXJfdXBkYXRlIiwiZXJyJDQiLCJlcnIkMyIsImVyciQyIiwiZGlzcGF0Y2gkNSIsImluaXQiLCJwaXBlX21ldGFkYXRhIiwicGlwZV93IiwiY3JlYXRlJDIiLCJiaW5fcXVlcnkkMCIsImJpbl9yZXNwb25zZSQwIiwiaW1wbGVtZW50JDYiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsImNyZWF0ZSQ0IiwiYiIsImJ1ZmZlciQwIiwib25lIiwib25lJDAiLCJ3cml0ZXJfZWxlbWVudF9pbl9ncm91cCIsImdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIiwicmVtb3ZlIiwidG9fbGlzdCIsImZsdXNoZWRfb3JfY2xvc2VkIiwiZGlyZWN0X3N0cmVhbV93cml0ZXIiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrJDEiLCJpbXBsZW1lbnRfZGlyZWN0IiwiZGlzcGF0Y2gkNiIsIm1ldGFkYXRhIiwiZGlzcGF0Y2hfZXhuJDEiLCJwaXBlX2FuZF9pZCIsImRpc3BhdGNoX2l0ZXIiLCJuYW1lJDEiLCJ2ZXJzaW9uJDEiLCJkZXNjcmlwdGlvbiQxIiwicXVlcnlfdHlwZV9pZCQwIiwiZXJyb3JfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQkMCIsImNyZWF0ZSQ1IiwiYmluX3N0YXRlIiwiYmluX3VwZGF0ZSIsImJpbl9xdWVyeSQxIiwiYmluX2Vycm9yJDAiLCJkaXNwYXRjaCQ3IiwidXBkYXRlX3IiLCJuYW1lJDIiLCJ2ZXJzaW9uJDIiLCJkZXNjcmlwdGlvbiQyIiwicXVlcnlfdHlwZV9pZCQxIiwic3RhdGVfdHlwZV9pZCIsInVwZGF0ZV90eXBlX2lkIiwiZXJyb3JfdHlwZV9pZCQwIiwiZGVzY3JpcHRpb24kMyIsInJwYyIsInJwYyQwIiwicnBjJDEiLCJycGMkMiIsInRoZV9ycGMiLCJub3RfdGhlX3JwYyIsInJwY19uYW1lJDAiLCJpbnB1dCIsImNvbnZlcnQiLCJmYWlsZWRfY29udmVyc2lvbiIsImFyZzNfMDA2IiwiYXJnMl8wMDUiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDciLCJ2XzAwMSIsInJlczFfMDA4Iiwidl8wMDIiLCJyZXMyXzAwOSIsInJlczNfMDEwIiwibXVsdGlwbGVfcmVnaXN0cmF0aW9ucyIsImFyZzFfMDE0Iiwidl8wMTEiLCJ2XzAxMiIsInJlczFfMDE2IiwiYWRhcHRlciIsImFkYXB0ZXJzIiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczFfMDI0IiwiYWRhcHRlcnMkMCIsImFkZF9ycGNfdmVyc2lvbiIsIm9sZF9ycGMiLCJ1cGdyYWRlIiwiZG93bmdyYWRlIiwiYWRhcHQiLCJmbiIsImFkYXB0ZWQiLCJvbGRfcXVlcnkiLCJhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIiwidXBncmFkZV9vcl9lcnJvciIsImRvd25ncmFkZV9vcl9lcnJvciIsInZhbHVlIiwiYWRkX3ZlcnNpb24iLCJhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJyZWdpc3RyeSIsImltcGxlbWVudF9tdWx0aSIsImxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpbyIsImxvZ192ZXJzaW9uIiwicnBjcyIsInZlcnNpb25zIiwicSQwIiwiciQwIiwiaW1wbGVtZW50X211bHRpX2dlbiIsImltcGxlbWVudF9kaXJlY3RfbXVsdGkiLCJ3cmFwcGVkX21vZGVsX29mX3F1ZXJ5Iiwid3JhcHBlZF9lcnJvcl9vZl9tb2RlbCIsImNvbnZlcnRfZWx0IiwiZHN3IiwiY29udmVydF9waXBlIiwibW9kZWxfc3RhdGUiLCJzdGF0ZSQwIiwiYmluX3NoYXBlX3F1ZXJ5IiwiYmluX3NpemVfcXVlcnkiLCJiaW5fd3JpdGVfcXVlcnkiLCJiaW5fcmVhZF9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5JDAiLCJiaW5fcmVhZGVyX3F1ZXJ5IiwiYmluX3NoYXBlX3N0YXRlIiwiYmluX3NpemVfc3RhdGUiLCJiaW5fd3JpdGVfc3RhdGUiLCJiaW5fd3JpdGVyX3N0YXRlIiwiYmluX3JlYWRfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSQwIiwiYmluX3JlYWRlcl9zdGF0ZSIsImJpbl9zaGFwZV91cGRhdGUiLCJiaW5fc2l6ZV91cGRhdGUiLCJiaW5fd3JpdGVfdXBkYXRlIiwiYmluX3dyaXRlcl91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciIsImJpbl9zaXplX2Vycm9yIiwiYmluX3dyaXRlX2Vycm9yIiwiYmluX3JlYWRfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciQwIiwibW9kZWxfb2ZfcXVlcnkiLCJzdGF0ZV9vZl9tb2RlbCIsImVycm9yX29mX21vZGVsIiwidXBkYXRlX29mX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlIiwiYmluX3NpemVfcmVzcG9uc2UiLCJiaW5fd3JpdGVfcmVzcG9uc2UiLCJiaW5fcmVhZF9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlJDAiLCJyZXNwb25zZV9vZl9tb2RlbCIsImFkZCQwIiwiaW1wbHMiLCJtZW51IiwibWVudV9pbXBscyIsInN1cHBvcnRlZF9ycGNzIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwib2ZfZW50cmllcyIsImVudHJpZXMiLCJyZXF1ZXN0IiwiY29ubmVjdGlvbiIsImNyZWF0ZV9kaXJlY3RseSIsIm1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIiwiY2FsbGVyX3ZlcnNpb25zIiwiY2FsbGVlX3ZlcnNpb25zIiwiY2FsbGVlX21lbnUiLCJ3aXRoX3NwZWNpZmljX3ZlcnNpb24iLCJkaXNwYXRjaGVyIiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwid2l0aF92ZXJzaW9uX21lbnUiLCJkaXNwYXRjaF9tdWx0aSIsImNvbm5fd2l0aF9tZW51IiwibXEiLCJxdWVyeV9vZl9tb2RlbCIsIm1vZGVsX29mX3Jlc3BvbnNlIiwiZGlzcGF0Y2hfaXRlcl9tdWx0aSIsImFib3J0X211bHRpIiwid3JhcHBlZF9xdWVyeV9vZl9tb2RlbCIsImNvbnZlcnRfcmVzdWx0IiwiY29udmVydF9vayIsIm1lc3NhZ2UiLCJ1IiwicnMiLCJtb2RlbF9vZl9zdGF0ZSIsIm1vZGVsX29mX2Vycm9yIiwibW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwiY2FsbGVlX21vZGVsX29mX3F1ZXJ5Iiwic3RhdGVfb2ZfY2FsbGVlX21vZGVsIiwiZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIiwidXBkYXRlX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9xdWVyeSQwIiwiYmluX3NpemVfcXVlcnkkMCIsImJpbl93cml0ZV9xdWVyeSQwIiwiYmluX3dyaXRlcl9xdWVyeSQwIiwiYmluX3JlYWRfcXVlcnkkMSIsImJpbl9yZWFkX3F1ZXJ5JDIiLCJiaW5fcmVhZGVyX3F1ZXJ5JDAiLCJiaW5fc2hhcGVfc3RhdGUkMCIsImJpbl9zaXplX3N0YXRlJDAiLCJiaW5fd3JpdGVfc3RhdGUkMCIsImJpbl93cml0ZXJfc3RhdGUkMCIsImJpbl9yZWFkX3N0YXRlJDEiLCJiaW5fcmVhZF9zdGF0ZSQyIiwiYmluX3JlYWRlcl9zdGF0ZSQwIiwiYmluX3N0YXRlJDAiLCJiaW5fc2hhcGVfdXBkYXRlJDAiLCJiaW5fc2l6ZV91cGRhdGUkMCIsImJpbl93cml0ZV91cGRhdGUkMCIsImJpbl93cml0ZXJfdXBkYXRlJDAiLCJiaW5fcmVhZF91cGRhdGUkMSIsImJpbl9yZWFkX3VwZGF0ZSQyIiwiYmluX3JlYWRlcl91cGRhdGUkMCIsImJpbl91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJxdWVyeV9vZl9jYWxsZXJfbW9kZWwiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwicmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlJDAiLCJiaW5fc2l6ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlX3Jlc3BvbnNlJDAiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlJDAiLCJiaW5fcmVhZF9yZXNwb25zZSQxIiwiYmluX3JlYWRfcmVzcG9uc2UkMiIsImJpbl9yZWFkZXJfcmVzcG9uc2UkMCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsInBpcGVfcmVhZCIsInhfMDA3Iiwib2ZfYV8wMDEiLCJidWZmZXJfMDA1IiwicGlwZV8wMDMiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlJDAiLCJ0b3RhbF9sZW4iLCJjb250aW51ZV9vcl93YWl0IiwibGVuZ3RoJDAiLCJzZXRfYnVmZmVyIiwicHJvY2Vzc19kYXRhIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSIsInByb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE1Iiwib2ZfYV8wMDkiLCJtb25pdG9yXzAxMyIsInBpcGVfMDExIiwiYm5kc18wMTAiLCJibmRzXzAxMCQwIiwiY2hlY2tfY2xvc2VkIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJjcmVhdGVfbWVzc2FnZSIsIm9uX21lc3NhZ2VfY291bnQiLCJnb3QiLCJzZXhwaWZpZXIiLCJlcXVhbCIsIm1lc3NhZ2UkMCIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMTYiLCJiXzAxNyIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJnb3QkMCIsInNleHBpZmllciQwIiwiZXF1YWwkMCIsImhlcmUkMCIsImNvbXBhcmF0b3IkMCIsIndyaXRlXzFfbXNnXzFfY2h1bmsiLCJ3cml0ZV8xX21zZ18zX2NodW5rIiwibXNnX2xlbiIsInNwbGl0X2F0IiwicGFydDEiLCJwYXJ0MiIsIndyaXRlXzJfbXNnXzFfY2h1bmsiLCJvbmVfbXNnIiwidHdvX21zZyIsIndyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZSIsIm51bSIsInN0b3BfYWZ0ZXJfb25fbWVzc2FnZSIsImFfMDIyIiwiYl8wMjMiLCJleHBlY3QiLCJhXzAyNiIsImJfMDI3Iiwib25lX21lc3NhZ2UiLCJ0d29fbWVzc2FnZXMiLCJvbmVfbWVzc2FnZV9wMSIsIm9uZV9tZXNzYWdlX3AyIiwicnBjX2Nvbm5lY3Rpb24iLCJjbG9zZV9maW5pc2hlZCQwIiwic3RyaW5nX2FmdGVyIiwicyIsIm4iLCJxdW90ZSIsImxlbiIsImJ1ZiIsImkiLCJjIiwib2ZfY2hhciIsImZ1bGxfc3BsaXQiLCJzdHIiLCJvbiIsInNlcCIsImxvb3AiLCJhY2MiLCJvZmZzZXQiLCJpbmRleCIsInRva2VuIiwic3BsaXQiLCJtYXgiLCJtYXgkMCIsInRva2VucyIsImxvb3AkMCIsInRyaW1fbGVmdF9zdWIiLCJsYXN0X2NoYXIiLCJjaGFycyIsImZpbmFsJDAiLCJsYXN0X2NoYXIkMCIsImkkMCIsImxhc3RfY2hhciQxIiwibmV3X2xlbiIsInNwbGl0X3RyaW1fbGVmdCIsInRyaW0iLCJ0cmltX2xlZnQiLCJub25fc3BhY2UiLCJmaW5kX2Zyb20iLCJvcHQiLCJwYXR0ZXJuIiwic3RoIiwic3RhcnQiLCJzdGFydCQwIiwicmVwbGFjZV9hbGwiLCJ3aXRoJDAiLCJwbGVuIiwic2xlbiIsImoiLCJyZXBsYWNlX2FsbF9hc3NvYyIsInRibCIsImZvdW5kIiwiZiQwIiwiZiIsInhzJDAiLCJ4JDEiLCJ4IiwiZngiLCJ4cyIsIngkMCIsImZ4JDAiLCJlIiwiaiQxIiwid2l0aCQyIiwicGF0dGVybiQxIiwiciIsIndpdGgkMSIsInBhdHRlcm4kMCIsImokMCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCIsImkkMSIsImFjYyQwIiwib2ZfYXJyYXkiLCJhIiwiYnl0ZXMiLCJ0b19hcnJheSIsImN1dCIsInNlcF9tYXgiLCJzX21heCIsImsiLCJsZWZ0X2VuZCIsInJpZ2h0X3N0YXJ0IiwicmN1dCIsInNlcF9zdGFydCIsImNob3BfcHJlZml4IiwicHJlZml4IiwicHJlZml4X2wiLCJzdHJpbmdfbCIsImRyb3AiLCJ0YWtlIiwiY3JlYXRlIiwic2l6ZSIsImVtcHR5IiwibGVuZ3RoIiwic3ViIiwiaW52YWxpZF9ib3VuZHMiLCJvcCIsImJ1ZmZlcl9sZW4iLCJvZmYiLCJsZW4iLCJtZXNzYWdlIiwiaW52YWxpZF9ib3VuZHNfYmxpdCIsInNyY19sZW4iLCJzcmNfb2ZmIiwiZHN0X2xlbiIsImRzdF9vZmYiLCJpbnZhbGlkX2JvdW5kc19tZW1jbXAiLCJidWYxX2xlbiIsImJ1ZjFfb2ZmIiwiYnVmMl9sZW4iLCJidWYyX29mZiIsImNvcHkiLCJ0IiwiZHN0Iiwic3Vic3RyaW5nIiwiYiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInMiLCJibGl0Iiwic3JjIiwiYmxpdF9mcm9tX3N0cmluZyIsImJsaXRfZnJvbV9ieXRlcyIsImJsaXRfdG9fYnl0ZXMiLCJtZW1jbXAiLCJidWYxIiwiYnVmMiIsIm1lbWNtcF9zdHJpbmciLCJtZW1jaHIiLCJidWYiLCJidWZfb2ZmIiwiY2hyIiwiYnVmX2xlbiIsImNhbWxfYmlnc3RyaW5nX3NldF8xNiIsImJzIiwiaSIsImNhbWxfYmlnc3RyaW5nX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX2dldF8xNiIsImNhbWxfYmlnc3RyaW5nX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX2dldF82NCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwieCIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQ2NF9iZSIsInNldF9pbnQ2NF9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCQwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50NjRfYmUiLCJnZXRfaW50NjRfbGUiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3NldF9pbnQxNl9sZSIsInVuc2FmZV9zZXRfaW50MzJfYmUiLCJ1bnNhZmVfc2V0X2ludDMyX2xlIiwidW5zYWZlX3NldF9pbnQ2NF9iZSIsInVuc2FmZV9zZXRfaW50NjRfbGUiLCJ1bnNhZmVfZ2V0X2ludDE2X2JlIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCQwIiwidW5zYWZlX2dldF9pbnQzMl9iZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInN0YXRlX3RvX29wdGlvbiIsIngiLCJ2IiwiZmFpbF90b19zdHJpbmciLCJtYXJrcyIsImVyciIsInN0YXRlX3RvX3Jlc3VsdCIsImNyZWF0ZSIsImJ1ZmZlciIsIm9mZiIsImxlbiIsImNvbW1pdHRlZF9ieXRlcyIsImxlbmd0aCIsInQiLCJjbGllbnRfY29tbWl0dGVkX2J5dGVzIiwicGFyc2VyX2NvbW1pdHRlZF9ieXRlcyIsImJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IiwicGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIiwiaW52YXJpYW50Iiwib2Zmc2V0X2luX2J1ZmZlciIsInBvcyIsImFwcGx5IiwiZiIsInVuc2FmZV9nZXRfY2hhciIsInVuc2FmZV9nZXRfaW50MTZfbGUiLCJ1bnNhZmVfZ2V0X2ludDMyX2xlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQ2NF9iZSIsImNvdW50X3doaWxlIiwiaSIsImxpbWl0IiwiY29tbWl0IiwiZmFpbF9rIiwiaW5wdXQiLCJtc2ciLCJzdWNjZWVkX2siLCJ0b19leHBvcnRlZF9zdGF0ZSIsImNvbnRpbnVlJDAiLCJjb21taXR0ZWQiLCJicyIsIm1vcmUiLCJ4JDAiLCJzIiwic2wiLCJpJDAiLCJwYXJzZSIsInAiLCJwYXJzZV9iaWdzdHJpbmciLCJpbnB1dCQwIiwicmV0dXJuJDAiLCJmYWlsIiwic3VjYyIsInN5bWJvbF9iaW5kIiwic3VjYyQwIiwic3ltYm9sX21hcCIsInN5bWJvbCIsIm0iLCJzeW1ib2wkMCIsInN1Y2MwIiwiaW5wdXQwIiwicG9zMCIsIm1vcmUwIiwic3VjYzEiLCJpbnB1dDEiLCJwb3MxIiwibW9yZTEiLCJsaWZ0IiwibGlmdDIiLCJtMSIsIm0yIiwic3VjYzIiLCJpbnB1dDIiLCJwb3MyIiwibW9yZTIiLCJsaWZ0MyIsIm0zIiwic3VjYzMiLCJpbnB1dDMiLCJwb3MzIiwibW9yZTMiLCJsaWZ0NCIsIm00Iiwic3VjYzQiLCJpbnB1dDQiLCJwb3M0IiwibW9yZTQiLCJzeW1ib2wkMSIsImEiLCJiIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsIm1hcmsiLCJmYWlsJDAiLCJzeW1ib2wkNCIsInEiLCJwb3MkMCIsIm1vcmUkMCIsInJldHVybiQxIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJsaWZ0MiQwIiwibGlmdDMkMCIsImxpZnQ0JDAiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwib2ZfYmlnc3RyaW5nIiwiYnVmIiwid3JpdGFibGVfc3BhY2UiLCJlbnN1cmUiLCJ0b19jb3B5Iiwib2xkX2xlbiIsIm5ld19sZW4iLCJzcGFjZSIsIm5ld19idWYiLCJ3cml0ZV9wb3MiLCJmZWVkX3N0cmluZyIsInN0ciIsImZlZWRfYmlnc3RyaW5nIiwiZmVlZF9pbnB1dCIsInNoaWZ0IiwibiIsImZvcl9yZWFkaW5nIiwidW5jb25zdW1lZCIsIm9wdCIsInN0aCIsIm9mX3VuY29uc3VtZWQiLCJmcm9tX3VuYnVmZmVyZWRfc3RhdGUiLCJidWZmZXJpbmciLCJjb25zdW1lZCIsImNvbnN1bWVkJDAiLCJ1bmNvbnN1bWVkJDAiLCJwYXJzZSQwIiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsImZlZWQiLCJzdGF0ZSIsImsiLCJidWZmZXJpbmckMCIsInN0YXRlX3RvX29wdGlvbiQwIiwic3RhdGVfdG9fcmVzdWx0JDAiLCJzdGF0ZV90b191bmNvbnN1bWVkIiwicHJvbXB0IiwiZGVtYW5kX2lucHV0IiwiZW5zdXJlX3N1c3BlbmRlZCIsImdvIiwidW5zYWZlX2FwcGx5IiwiYXRfZW5kX29mX2lucHV0IiwiZW5kX29mX2lucHV0IiwiYWR2YW5jZSIsImF2YWlsYWJsZSIsInVuc2FmZV9sb29rYWhlYWQiLCJwZWVrX2NoYXIiLCJwZWVrX2NoYXJfZmFpbCIsInNhdGlzZnkiLCJjIiwiY2hhciQwIiwibm90X2NoYXIiLCJjJDAiLCJhbnlfY2hhciIsImludDgiLCJwJDAiLCJhbnlfdWludDgiLCJwJDEiLCJhbnlfaW50OCIsInNraXAiLCJpbml0Iiwid2l0aF9idWZmZXIiLCJpbnB1dF9sZW4iLCJpbml0JDAiLCJjb3VudF93aGlsZTEiLCJzdWNjJDEiLCJmYWlsJDEiLCJzdHJpbmciLCJmJDAiLCJlIiwic3RyaW5nJDAiLCJzdHJpbmdfY2kiLCJza2lwX3doaWxlIiwidGFrZSIsIm4kMCIsInRha2VfYmlnc3RyaW5nIiwidGFrZV9iaWdzdHJpbmdfd2hpbGUiLCJ0YWtlX2JpZ3N0cmluZ193aGlsZTEiLCJ0YWtlX2JpZ3N0cmluZ190aWxsIiwicGVla19zdHJpbmciLCJ0YWtlX3doaWxlIiwidGFrZV93aGlsZTEiLCJ0YWtlX3RpbGwiLCJjaG9pY2UiLCJwcyIsImZhaWx1cmVfbXNnIiwiZml4X2RpcmVjdCIsInIiLCJmaXhfbGF6eSIsIm1heF9zdGVwcyIsInN0ZXBzIiwiZml4Iiwib3B0aW9uIiwiY29ucyIsInhzIiwibGlzdCIsInBzJDAiLCJjb3VudCIsImxvb3AiLCJtYW55IiwibWFueTEiLCJtYW55X3RpbGwiLCJzZXBfYnkxIiwic2VwX2J5Iiwic2tpcF9tYW55Iiwic2tpcF9tYW55MSIsImVuZF9vZl9saW5lIiwic2NhbiIsInN0YXRlJDAiLCJwYXJzZXIiLCJzY2FuJDAiLCJzY2FuX3N0YXRlIiwic2Nhbl9zdHJpbmciLCJjb25zdW1lX3dpdGgiLCJjb25zdW1lZF9iaWdzdHJpbmciLCJib3RoIiwibWFwIiwiYmluZCIsIm1hcDIiLCJtYXAzIiwibWFwNCIsImQiLCJpbnQxNiIsImJ5dGVzIiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJjc3QkMCIsIml0ZXJfY29uY2F0IiwiZm4iLCJzZXAiLCJidWYiLCJsYXN0IiwicmVzdCIsImNvbXBhcmVfb3B0IiwiYyIsInQkMCIsInQiLCJhIiwiYiIsImNvbXBhcmVfbGlzdCIsImYiLCJ0JDIiLCJ0JDEiLCJ4cyIsIngiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwib3B0Iiwic3RoIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwic3RoJDAiLCJ1c2VyaW5mbyIsInN0aCQxIiwiaG9zdCIsInN0aCQyIiwic3RoJDMiLCJxdWVyeV9rZXkiLCJzdGgkNCIsInF1ZXJ5X3ZhbHVlIiwic3RoJDUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfZGVjb2RlZF9vcHQiLCJjb21wYXJlX2hvc3QiLCJoMSIsImgyIiwiaXAyIiwiaXAxIiwiaXAyJDAiLCJpcDEkMCIsImgyJDAiLCJoMSQwIiwiY29tcGFyZSQwIiwiYyQzIiwiYyQxIiwiYyQ0Iiwia3ZsJDAiLCJrdmwiLCJyYXciLCJyYXckMCIsImMkMiIsInZsIiwidmwkMCIsImskMCIsImVxdWFsIiwidW5jYXN0X29wdCIsIm5vcm1hbGl6ZSIsInNjaGVtIiwiaW5pdCIsImhvc3QkMCIsImhvc3QkMSIsInRvX3N0cmluZyIsInVyaSIsImFkZF9wY3Rfc3RyaW5nIiwiZmlyc3Rfc2VnbWVudCIsInEiLCJnZXRfZGVjb2RlZF9vcHQiLCJ3aXRoX3NjaGVtZSIsImgkMCIsImhvc3Rfd2l0aF9kZWZhdWx0IiwiZGVmYXVsdCQwIiwid2l0aF91c2VyaW5mbyIsInVzZXJpbmZvJDAiLCJ1c2VyIiwicGFzc3dvcmQiLCJwYXNzIiwid2l0aF9wYXNzd29yZCIsInJlc3VsdCIsIndpdGhfcG9ydCIsIndpdGhfcGF0aCIsInBhdGgkMCIsIndpdGhfZnJhZ21lbnQiLCJmcmFnIiwicXVlcnkiLCJ2ZXJiYXRpbV9xdWVyeSIsImdldF9xdWVyeV9wYXJhbSIsImdldF9xdWVyeV9wYXJhbSQwIiwid2l0aF9xdWVyeSIsInFfcyIsIndpdGhfcXVlcnkkMCIsImFkZF9xdWVyeV9wYXJhbSIsImFkZF9xdWVyeV9wYXJhbSQwIiwiYWRkX3F1ZXJ5X3BhcmFtcyIsImFkZF9xdWVyeV9wYXJhbXMkMCIsInJlbW92ZV9xdWVyeV9wYXJhbSIsInBhdGhfYW5kX3F1ZXJ5IiwibWF0Y2giLCJzY2hlbWUkMCIsInJlc29sdmUiLCJiYXNlIiwic2NoZW1lJDEiLCJzY2hlbSQwIiwicGF0aF9zdHIiLCJyZWxwYXRoIiwiYnBhdGgiLCJiaG9zdCIsInJicGF0aCIsImNhbm9uaWNhbGl6ZSIsInVyaSQwIiwicHAiLCJwcGYiLCJwcF9odW0iLCJzdHJpbmdfb2ZfY2hhciIsInN0cmluZ19vZl9jaGFyX2xpc3QiLCJjaGFycyIsImlzX2RpZ2l0IiwiaGV4X2RpZ2l0IiwiaGV4YWRlY2ltYWwiLCJjX2RvdCIsImNfYXQiLCJjX2NvbG9uIiwibnVtIiwiZGVjX29jdGV0IiwidGhyZWUiLCJvbmUiLCJpcHY0X2FkZHJlc3MiLCJhZnRlcl9kb3VibGVfY29sb24iLCJkb3VibGVfY29sb24iLCJjb3VudCIsImZpbGxlcl9sZW5ndGgiLCJwYXJ0IiwiaGV4X3BhcnQiLCJzcGxpdF93aXRoIiwidHMiLCJ6cyIsImZvcm1hdF9hZGRyIiwic2VnbWVudHMiLCJzZWdtZW50IiwiYmVmb3JlX2RvdWJsZV9jb2xvbiIsImJlZm9yZSIsInJlcyIsImlwdjYiLCJpcHY2X2FkZHJlc3MiLCJwY3QiLCJkaWdpdHMiLCJwY3RfZW5jb2RlZCIsInN1Yl9kZWxpbXMkMCIsInVucmVzZXJ2ZWQiLCJyZWdfbmFtZSIsImRlY29kZWQiLCJwb3J0JDAiLCJhdXRob3JpdHkiLCJxdWVyeSQwIiwiZnJhZ21lbnQkMCIsInVyaV9yZWZlcmVuY2UiLCJ1cmlfcmVmZXJlbmNlJDAiLCJkZWNvZGVfaG9zdCIsInBhcnNlZCIsInBhcnNlZCQwIiwibWFrZSIsInBhdGgkMSIsIndpdGhfaG9zdCIsIndpdGhfdXJpIiwid2l0aF9wYXRoX29wdCIsIm8iLCJ3aXRoX3F1ZXJ5X29wdCIsIndpdGgkMCIsIm9mX3N0cmluZyIsImxldCQwIiwidG9fdXJpIiwib2ZfdXJpIiwidW5zdXBwb3J0ZWRfc2NoZW1lIiwib2Zfc3RyaW5nJDAiLCJlcnJvciIsInRvX3N0cmluZyQwIiwibWFrZSQwIiwiaG9zdCQyIiwiZXJyb3Jfc291cmNlXzAwNiIsImVycm9yX3NvdXJjZV8wMTgiLCJkZWZhdWx0XzA4MSIsImVycm9yX3NvdXJjZV8wNTUiLCJkZWZhdWx0XzExMSIsImNvbXBvbmVudF9vZl9zZXhwIiwiY29tcG9uZW50X29mX3NleHAkMCIsInNleHBfMDA0IiwiYXRvbV8wMDIiLCJzZXhwX2FyZ3NfMDA1IiwiYXRvbV8wMDIkMCIsImFyZzBfMDE1IiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsInJlczJfMDEzIiwicmVzMF8wMTYiLCJzZXhwXzAxNyIsInNleHBfb2ZfY29tcG9uZW50Iiwidl8wMTkiLCJhcmcyXzAyMiIsImFyZzFfMDIxIiwiYXJnMF8wMjAiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwicmVzMl8wMjUiLCJkZWZhdWx0XzA3MyIsImRlZmF1bHRfMDc1IiwiZGVmYXVsdF8wNzciLCJkZWZhdWx0XzA3OSIsImRlZmF1bHRfMDg0IiwidF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJzY2hlbWVfMDI5IiwidXNlcmluZm9fMDMxIiwiaG9zdF8wMzMiLCJwb3J0XzAzNSIsInBhdGhfMDM3IiwicXVlcnlfMDM5IiwiZnJhZ21lbnRfMDQxIiwiZHVwbGljYXRlc18wNDMiLCJleHRyYV8wNDQiLCJzZXhwXzAyNyQwIiwiZmllbGRfc2V4cHNfMDQ3IiwiZmllbGRfbmFtZV8wNDUiLCJ0YWlsXzA4NyIsImZpZWxkX3NleHBfMDQ2JDciLCJmaWVsZF9zZXhwXzA0NiIsInhfMDg4IiwiZmllbGRfc2V4cF8wNDYkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA0NiQxIiwiZnZhbHVlXzA2NiIsImZpZWxkX3NleHBfMDQ2JDIiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDYwIiwiZmllbGRfc2V4cF8wNDYkNCIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA0NiQ1IiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDQ2JDYiLCJmdmFsdWVfMDQ5Iiwic2NoZW1lXzAzMCIsInVzZXJpbmZvXzAzMiIsImhvc3RfMDM0IiwicG9ydF8wMzYiLCJwYXRoXzAzOCIsInF1ZXJ5XzA0MCIsImZyYWdtZW50XzA0MiIsInZfMDg1Iiwidl8wODUkMCIsInZfMDgzIiwidl8wODMkMCIsInZfMDgyIiwidl8wODIkMCIsInZfMDgwIiwidl8wODAkMCIsInZfMDc4Iiwidl8wNzgkMCIsInZfMDc2Iiwidl8wNzYkMCIsInZfMDc0Iiwidl8wNzQkMCIsImRlZmF1bHRfMDkxIiwiZGVmYXVsdF8wOTYiLCJkZWZhdWx0XzEwMSIsImRlZmF1bHRfMTA2IiwiZGVmYXVsdF8xMjQiLCJ0X29mX3NleHAkMCIsInNleHAiLCJ0Iiwic2V4cF9vZl90IiwiZnJhZ21lbnRfMTI1IiwicXVlcnlfMTE2IiwicGF0aF8xMTIiLCJwb3J0XzEwNyIsImhvc3RfMTAyIiwidXNlcmluZm9fMDk3Iiwic2NoZW1lXzA5MiIsImFyZ18xMjciLCJibmRzXzA4OSIsImJuZHNfMDg5JDAiLCJibmRfMTI2IiwiYm5kc18wODkkMSIsImFyZzFfMTE4IiwiYXJnMF8xMTciLCJyZXMwXzExOSIsInJlczFfMTIwIiwiYXJnXzEyMiIsImJuZF8xMjEiLCJhcmdfMTE0IiwiYm5kc18wODkkMiIsImJuZF8xMTMiLCJhcmdfMTA5IiwiYm5kc18wODkkMyIsImJuZF8xMDgiLCJhcmdfMTA0IiwiYm5kc18wODkkNCIsImJuZF8xMDMiLCJhcmdfMDk5IiwiYm5kc18wODkkNSIsImJuZF8wOTgiLCJhcmdfMDk0IiwiYm5kc18wODkkNiIsImJuZF8wOTMiLCJjb21wYXJlIiwiYSIsImIiLCJlcXVhbCIsImlzX3ZhbGlkX2ZpZWxkX25hbWUiLCJzZWVuIiwibmFtZSIsImFueV9vZl9zZXhwIiwicyIsImxpc3QkMCIsInYkMCIsIm5hbWUkMSIsInNlZW4kMiIsInJldl9hY2MiLCJsaXN0IiwicmVzdCIsInJldl9hY2MkMCIsInNlZW4kMCIsInJlc3QkMCIsInYiLCJuYW1lJDAiLCJyZXZfYWNjJDEiLCJzZWVuJDEiLCJsIiwibG9nX3MiLCJzZXhwIiwibG9nX3NfYXNfc3RyaW5nIiwic2V4cF9vZl90IiwiZmllbGQyXzA0MyIsImZpZWxkMV8wNDEiLCJhcmdfMDQ0IiwiYm5kc18wNDAiLCJzb21lX25hbWVfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2IiwiYXJnXzA0MiIsImJuZHNfMDQwJDAiLCJ0b19zdHJpbmciLCJhbnkiLCJzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMiLCJpIiwieF8wNDkiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMF8wNDciLCJyZXMxXzA0OCIsImNvbXBhcmVfY2xvc2VfZXZlbnRfY29kZSIsInNleHBfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImFsbF9vZl9jbG9zZV9ldmVudF9jb2RlIiwiY29tcGFyZSIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsImFjYyIsImwkMCIsImVudW1lcmF0ZV8wMTEiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwibCQyIiwiZW51bWVyYXRlXzAxMCIsImFjYyQyIiwiYWxsIiwibm9ybWFsX2Nsb3N1cmUiLCJvZl9pbnQiLCJjb2RlIiwidG9faW50IiwiY29kZSQwIiwieF8wMzEiLCJ4XzAzMCIsImNsaWVudCIsIm9wdCIsImhlYXJ0YmVhdF9jb25maWciLCJkZXNjcmlwdGlvbiIsImltcGxlbWVudGF0aW9ucyIsInN0aCIsInVyaSIsInNjaGVtZSIsInBvcnQiLCJwb3J0JDAiLCJob3N0IiwibWF0Y2gkMSIsInJlcyIsImgiLCJkZXNjcmlwdGlvbiQwIiwiZnJvbV9zZXJ2ZXJfdyIsImZyb21fc2VydmVyX3IiLCJ0b19zZXJ2ZXJfdyIsInRvX3NlcnZlcl9yIiwiZXJyb3IiLCJ0cmFuc3BvcnQiLCJjb25uZWN0aW9uIiwiZXhuIiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImltcGxlbWVudGF0aW9ucyQwIiwiZXhuJDEiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiYnVmZmVyIiwiZXhuJDAiLCJjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCIsImNsaWVudF9leG4iLCJjcmVhdGVfZnJvbV91cmkiLCJlcXVhbCQwIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJzZXhwX29mX3QkMSIsInhfMDA3IiwiY3JlYXRlX2Zyb21fdXJpX29wdGlvbiIsIm1ldGhvZF9zdHJpbmckMCIsInJlcXVlc3QiLCJvbl9wcm9ncmVzcyIsIm9uX3VwbG9hZF9wcm9ncmVzcyIsInVybCIsImhlYWRlcnMiLCJtZXRob2Rfd2l0aF9hcmdzIiwiYXJncyIsIm1ldGhvZF9zdHJpbmckMSIsInVybCQwIiwidmFsdWUiLCJyZXNwb25zZSIsImNvbnRlbnQiLCJnZXRfaGVhZGVyIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJib2R5IiwiYm9keSQwIiwiYiIsImQiLCJmZCIsImdldCIsImFyZ3VtZW50cyQwIiwicmVzcCIsInBvc3QiLCJyZWFkeV9zdGF0ZV9jaGFuZ2UiLCJjb21wbGV0ZSIsInNsZWVwIiwieWllbGQkMCIsImV4dHJhY3RfanNfZXJyb3IiLCJzdGF0ZSIsInRpbWVvdXRzIiwicnVuX2FmdGVyIiwiZiIsIm1zIiwibG9vcCIsInQiLCJuZXh0X3dha2V1cCIsIm5leHQiLCJub3ciLCJkX21zJDAiLCJlcnIiLCJlcnIkMCIsImRfbXMiLCJhdCIsInJ1bl90aW1lb3V0IiwicnVuIiwibG9nIiwiZXJyJDIiLCJleG4kMiIsImV4biQzIiwiZXJyJDEiLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwiY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0IiwicmlnaHQiLCJsZWZ0X2lzX25vbmUiLCJyaWdodF9pc19ub25lIiwiY3JlYXRlX2V4biIsIm9wdCIsIm51bV9sZWF2ZXMiLCJyZWR1Y2UiLCJzdGgiLCJudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwiLCJ2YWxpZGF0ZV9pbmRleCIsImxlbmd0aCIsInNldF9leG4iLCJjaGlsZF9pbmRleCIsInBhcmVudCIsImdldF9leG4iLCJ4XzAwMiIsImNvbXB1dGVfZXhuIiwic2V4cF9vZl90Iiwic3RlcHMiLCJyIiwiaW5pdCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDEiLCJzdGVwc18wMDUiLCJpbml0XzAwMyIsImJuZHNfMDAyIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJhcmdfMDA2IiwiYm5kc18wMDIkMCIsImFyZ18wMDQiLCJibmRzXzAwMiQxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ2YWx1ZSIsInQkMCIsImF0Iiwic3RlcHMkMSIsImluaXQkMSIsInN0ZXBzJDAiLCJpbml0JDAiLCJ0IiwiY29uc3RhbnQiLCJjcmVhdGVfZXhuIiwidGltZTIiLCJ0aW1lMSIsInhfMDExIiwiY3JlYXRlX2Zyb21fc2VxdWVuY2UiLCJjcmVhdGUiLCJsZW4iLCJsZW5ndGgiLCJ0Iiwic2V0Iiwic2V0X2V4biIsImkiLCJ4IiwiZ2V0IiwiaXNfc29tZSIsImlzX25vbmUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsIml0ZXIiLCJmIiwidiIsIml0ZXJpIiwiYmxpdCIsInNyYyIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY3JlYXRlIiwiaW5kZXgiLCJnZXQiLCJ0Iiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpc19ub25lIiwiaXNfc29tZSIsInNldCIsImJsb2NrIiwic2V4cF9vZl90Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsImtleXNfd2l0aF91bnVzZWRfZGF0YV8wMDYiLCJlbnRyeV9ieV9rZXlfMDA0IiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJyZXBsYWNlIiwiYWRkX2V4biIsInhfMDEwIiwiZmluZCIsImZpbmRfb3JfYWRkIiwiZGVmYXVsdCQwIiwidiIsInNleHBfb2ZfdCIsImNvbmNhdCIsImRlYnVnIiwidGFnIiwiYXJnMF8wMDEiLCJhcmcxXzAwMiIsInNleHBfb2ZfYSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJyZWFsbG9jIiwidCIsImxlbiIsImEiLCJuZXdfdCIsInJlYWxsb2MkMCIsInJlczBfMDA1IiwicmVzMF8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsImNyZWF0ZSIsImYiLCJvZl9jb21wYXJlIiwib2ZfZXF1YWwiLCJwb2x5X2VxdWFsIiwibmV2ZXIiLCJhbHdheXMiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwid2F0Y2hfZnVuIiwidCQwIiwic2V0X2F0X2Z1biIsInZhbHVlX2Z1biIsInhfMDExIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsImZvbGRfdmFsdWVfZnVuIiwiZ290IiwiZXhwZWN0Iiwic2V4cGlmaWVyIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInhfMDI4IiwidXBkYXRlJDAiLCJmX2ludmVyc2UiLCJ1cGRhdGUiLCJjb21wdXRlIiwicmVzdWx0IiwiZm9yY2VfZnVsbF9jb21wdXRlIiwiY2hpbGRfY2hhbmdlZCIsInhfMDMxIiwiY2hpbGRfaW5kZXgiLCJvbGRfdmFsdWVfb3B0IiwiY2hpbGRfYXRfaW5kZXgiLCJ4XzAwMSIsIm51bGwkMCIsImFsYXJtX3ZhbHVlIiwic2V0X2FsYXJtX3ZhbHVlIiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJhbGFybV92YWx1ZSQwIiwiYWxhcm0kMCIsIm1haW5fMDAzIiwiY2hpbGRfMDA1IiwiZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jIiwidmFsdWVfMDA5IiwidXBjb21pbmdfc3RlcHNfMDExIiwiYWxhcm1fMDE3IiwiYWxhcm1fdmFsdWVfMDE5IiwiY2xvY2tfMDIxIiwiYXJnXzAxOCIsImFyZzFfMDE0IiwicmVzMV8wMTYiLCJhcmdfMDEyIiwiYm5kc18wMDIkMyIsImJuZHNfMDAyJDQiLCJibmRzXzAwMiQ1IiwiYm5kc18wMDIkNiIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsInhfMDIzIiwiYWR2YW5jZSIsInRvIiwic3RlcHMkMCIsImExJDAiLCJhMSIsInN0ZXBzIiwic3RlcHMyIiwiYTIiLCJzdGVwX2F0Iiwib2ZfYWNjXzAwMiIsImNoaWxkcmVuXzAwOCIsImluaXRfMDA0IiwiYXJnXzAwOSIsImJuZHNfMDAzIiwiYXJnXzAwNyIsImJuZHNfMDAzJDAiLCJibmRzXzAwMyQxIiwieF8wMTAiLCJhdF8wMDQiLCJtYWluXzAwMiIsImFsYXJtXzAwNiIsImNsb2NrXzAwOCIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwiaW50ZXJ2YWwiLCJpbnRlcnZhbCQwIiwiaW50ZXJ2YWxfMDA2IiwiYmFzZV8wMDQiLCJhbGFybV8wMDgiLCJjbG9ja18wMTAiLCJhcmdfMDExIiwiYm5kc18wMDEkMyIsImludGVydmFsX2Z1biIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsInNldF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJyaHNfc2NvcGUiLCJzZXRfcmhzX3Njb3BlIiwibGhzX2NoYW5nZSIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyQwIiwicmhzX3Njb3BlJDAiLCJsaHNfY2hhbmdlJDAiLCJvZl9iXzAwMiIsIm1haW5fMDA0IiwibGhzX2NoYW5nZV8wMTAiLCJsaHNfMDA4IiwicmhzXzAxMiIsInJoc19zY29wZV8wMTQiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNfMDE2IiwiYm5kc18wMDMkMiIsImJuZHNfMDAzJDMiLCJibmRzXzAwMyQ0IiwiYm5kc18wMDMkNSIsInNhbWUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc19mdW4iLCJub2RlIiwicmhzX3Njb3BlX2Z1biIsImxoc19jaGFuZ2VfZnVuIiwieF8wMTgiLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJleHBlY3QkMCIsImVxdWFsJDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJ0b3AiLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsImN1cnJlbnRfYnJhbmNoX2Z1biIsInRlc3RfY2hhbmdlX2Z1biIsInhfMDE1IiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsImJlZm9yZV9mdW4iLCJ4XzAxMyIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiYmluZF9yaHNfY2hpbGRfaW5kZXgiLCJmcmVlemVfY2hpbGRfaW5kZXgiLCJpZl9icmFuY2hfY2hpbGRfaW5kZXgiLCJqb2luX3Joc19jaGlsZF9pbmRleCIsIml0ZXJpX2NoaWxkcmVuIiwicmhzIiwiaSQwIiwidGVzdCIsImxocyIsInJocyQwIiwibm9kZTAiLCJjaGlsZCQwIiwiY2hpbGRyZW4kMSIsImkkMSIsIm5vZGUxIiwibm9kZTAkMCIsIm5vZGUyIiwibm9kZTEkMCIsIm5vZGUwJDEiLCJub2RlMyIsIm5vZGUyJDAiLCJub2RlMSQxIiwibm9kZTAkMiIsIm5vZGU0Iiwibm9kZTMkMCIsIm5vZGUyJDEiLCJub2RlMSQyIiwibm9kZTAkMyIsIm5vZGU1Iiwibm9kZTQkMCIsIm5vZGUzJDEiLCJub2RlMiQyIiwibm9kZTEkMyIsIm5vZGUwJDQiLCJub2RlNiIsIm5vZGU1JDAiLCJub2RlNCQxIiwibm9kZTMkMiIsIm5vZGUyJDMiLCJub2RlMSQ0Iiwibm9kZTAkNSIsIm5vZGU3Iiwibm9kZTYkMCIsIm5vZGU1JDEiLCJub2RlNCQyIiwibm9kZTMkMyIsIm5vZGUyJDQiLCJub2RlMSQ1Iiwibm9kZTAkNiIsIm5vZGU4Iiwibm9kZTckMCIsIm5vZGU2JDEiLCJub2RlNSQyIiwibm9kZTQkMyIsIm5vZGUzJDQiLCJub2RlMiQ1Iiwibm9kZTEkNiIsIm5vZGUwJDciLCJub2RlOSIsIm5vZGU4JDAiLCJub2RlNyQxIiwibm9kZTYkMiIsIm5vZGU1JDMiLCJub2RlNCQ0Iiwibm9kZTMkNSIsIm5vZGUyJDYiLCJub2RlMSQ3Iiwibm9kZTAkOCIsIm5vZGUxMCIsIm5vZGU5JDAiLCJub2RlOCQxIiwibm9kZTckMiIsIm5vZGU2JDMiLCJub2RlNSQ0Iiwibm9kZTQkNSIsIm5vZGUzJDYiLCJub2RlMiQ3Iiwibm9kZTEkOCIsIm5vZGUwJDkiLCJub2RlMTEiLCJub2RlMTAkMCIsIm5vZGU5JDEiLCJub2RlOCQyIiwibm9kZTckMyIsIm5vZGU2JDQiLCJub2RlNSQ1Iiwibm9kZTQkNiIsIm5vZGUzJDciLCJub2RlMiQ4Iiwibm9kZTEkOSIsIm5vZGUwJDEwIiwibm9kZTEyIiwibm9kZTExJDAiLCJub2RlMTAkMSIsIm5vZGU5JDIiLCJub2RlOCQzIiwibm9kZTckNCIsIm5vZGU2JDUiLCJub2RlNSQ2Iiwibm9kZTQkNyIsIm5vZGUzJDgiLCJub2RlMiQ5Iiwibm9kZTEkMTAiLCJub2RlMCQxMSIsIm5vZGUxMyIsIm5vZGUxMiQwIiwibm9kZTExJDEiLCJub2RlMTAkMiIsIm5vZGU5JDMiLCJub2RlOCQ0Iiwibm9kZTckNSIsIm5vZGU2JDYiLCJub2RlNSQ3Iiwibm9kZTQkOCIsIm5vZGUzJDkiLCJub2RlMiQxMCIsIm5vZGUxJDExIiwibm9kZTAkMTIiLCJub2RlMTQiLCJub2RlMTMkMCIsIm5vZGUxMiQxIiwibm9kZTExJDIiLCJub2RlMTAkMyIsIm5vZGU5JDQiLCJub2RlOCQ1Iiwibm9kZTckNiIsIm5vZGU2JDciLCJub2RlNSQ4Iiwibm9kZTQkOSIsIm5vZGUzJDEwIiwibm9kZTIkMTEiLCJub2RlMSQxMiIsIm5vZGUwJDEzIiwic2xvd19nZXRfY2hpbGQiLCJpbmRleCIsImFyZzFfMzA2IiwiYXJnMF8zMDUiLCJyZXMwXzMwNyIsInJlczFfMzA4IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luIiwic2V0X215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luIiwic2V0X215X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hIiwib2JzZXJ2ZXJzIiwic2V0X29ic2VydmVycyIsInNldF9vbGRfdmFsdWVfb3B0IiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwic2V0X25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2giLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X25leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJwcmV2X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X3ByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X2hlaWdodCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwic2V0X25leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwiY3JlYXRlZF9pbiIsInNldF9jcmVhdGVkX2luIiwicGFyZW50MCIsInNldF9wYXJlbnQwIiwicGFyZW50MV9hbmRfYmV5b25kIiwic2V0X3BhcmVudDFfYW5kX2JleW9uZCIsIm51bV9wYXJlbnRzIiwic2V0X251bV9wYXJlbnRzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyIsInNldF9udW1fb25fdXBkYXRlX2hhbmRsZXJzIiwiY2hhbmdlZF9hdCIsInNldF9jaGFuZ2VkX2F0IiwiY3V0b2ZmIiwic2V0X2N1dG9mZiIsImtpbmQiLCJzZXRfa2luZCIsInZhbHVlX29wdCIsInNldF92YWx1ZV9vcHQiLCJyZWNvbXB1dGVkX2F0Iiwic2V0X3JlY29tcHV0ZWRfYXQiLCJpZCIsIm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbiQwIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luJDAiLCJvYnNlcnZlcnMkMCIsIm9sZF92YWx1ZV9vcHQkMCIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAkMCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAkMCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAkMCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0JDAiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZSQwIiwiY3JlYXRlZF9pbiQwIiwicGFyZW50MCQwIiwicGFyZW50MV9hbmRfYmV5b25kJDAiLCJudW1fcGFyZW50cyQwIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyQwIiwiY2hhbmdlZF9hdCQwIiwiY3V0b2ZmJDAiLCJraW5kJDAiLCJ2YWx1ZV9vcHQkMCIsInJlY29tcHV0ZWRfYXQkMCIsImlkJDAiLCJzdGF0ZV8wMDUiLCJpZF8wMDMiLCJyZWNvbXB1dGVkX2F0XzAwNyIsInZhbHVlX29wdF8wMDkiLCJraW5kXzAxMSIsImN1dG9mZl8wMTMiLCJjaGFuZ2VkX2F0XzAxNSIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfMDE3IiwibnVtX3BhcmVudHNfMDE5IiwicGFyZW50MV9hbmRfYmV5b25kXzAyMSIsInBhcmVudDBfMDIzIiwiY3JlYXRlZF9pbl8wMjUiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV8wMjciLCJoZWlnaHRfMDI5IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXzAzMSIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfMDMzIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcF8wMzUiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfMDMiLCJvbGRfdmFsdWVfb3B0XzA0MSIsIm9ic2VydmVyc18wNDMiLCJpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGkiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDQ3IiwiZm9yY2VfbmVjZXNzYXJ5XzA1MyIsInVzZXJfaW5mb18wNTUiLCJjcmVhdGlvbl9iYWNrdHJhY2VfMDU3IiwiYXJnXzA1OCIsImFyZ18wNTYiLCJhcmdfMDU0IiwiYXJnXzA1MiIsImFyZ18wNTAiLCJhcmdfMDQ4IiwiYXJnXzA0NiIsImFyZ18wNDQiLCJhcmdfMDQyIiwiYm5kc18wMDIkNyIsImFyZ18wNDAiLCJibmRzXzAwMiQ4IiwiYXJnXzAzOCIsImJuZHNfMDAyJDkiLCJhcmdfMDM2IiwiYm5kc18wMDIkMTAiLCJhcmdfMDM0IiwiYm5kc18wMDIkMTEiLCJhcmdfMDMyIiwiYm5kc18wMDIkMTIiLCJhcmdfMDMwIiwiYm5kc18wMDIkMTMiLCJhcmdfMDI4IiwiYm5kc18wMDIkMTQiLCJibmRzXzAwMiQxNSIsImJuZHNfMDAyJDE2IiwiYm5kc18wMDIkMTciLCJibmRzXzAwMiQxOCIsImJuZHNfMDAyJDE5IiwiYm5kc18wMDIkMjAiLCJibmRzXzAwMiQyMSIsImJuZHNfMDAyJDIyIiwiYm5kc18wMDIkMjMiLCJibmRzXzAwMiQyNCIsImJuZHNfMDAyJDI1IiwiYm5kc18wMDIkMjYiLCJwYWNrZWRfc2FtZSIsInVzZXJfaW5mbyIsIm90aGVyIiwic2V0X3VzZXJfaW5mbyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXoiLCJhdHRycyIsImVkZ2VfaXNfc3RhbGUiLCJwYXJlbnQiLCJpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGkiLCJpc19zdGFsZSIsImZvcmNlX3N0YWxlIiwiZm9yY2Vfc3RhbGUkMCIsIm5lZWRzX3RvX2JlX2NvbXB1dGVkIiwiaXNfaW5fcmVjb21wdXRlX2hlYXAiLCJpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwiZ2V0X3BhcmVudCIsIml0ZXJpX3BhcmVudHMiLCJoYXNfY2hpbGQiLCJoYXMiLCJoYXNfcGFyZW50IiwicGFyZW50JDAiLCJzaG91bGRfYmVfaW52YWxpZGF0ZWQiLCJsaHMkMCIsImZvbGRfb2JzZXJ2ZXJzIiwiYWMiLCJvYnNlcnZlciIsImFfMDYwIiwiYl8wNjEiLCJhXzA3MCIsImJfMDcxIiwicGFyZW50X2luZGV4IiwieCIsImFfMDY4IiwiYl8wNjkiLCJvYnNlcnZlcnNfZnVuIiwic3RhdGUiLCJvYnNlcnZpbmciLCJvbGRfdmFsdWVfb3B0X2Z1biIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF9mdSIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJwcmV2IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsImhlaWdodF9mdW4iLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV9mdW4iLCJjcmVhdGVkX2luX2Z1biIsInBhcmVudDBfZnVuIiwiYV8wNjYiLCJiXzA2NyIsInBhcmVudDFfYW5kX2JleW9uZF9mdW4iLCJhXzA2NCIsImJfMDY1IiwibnVtX3BhcmVudHNfZnVuIiwib25fdXBkYXRlX2hhbmRsZXJzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJldGEiLCJhXzA2MiIsImJfMDYzIiwiY2hhbmdlZF9hdF9mdW4iLCJjdXRvZmZfZnVuIiwia2luZF9mdW4iLCJ2YWx1ZV9vcHRfZnVuIiwicmVjb21wdXRlZF9hdF9mdW4iLCJpZF9mdW4iLCJ4XzA1OSIsInVuc2FmZV92YWx1ZSIsInZhbHVlX2V4biIsInhfMDcyIiwiZ2V0X2N1dG9mZiIsInNldF9jdXRvZmYkMCIsImlzX2NvbnN0Iiwib25fdXBkYXRlIiwib25fdXBkYXRlX2hhbmRsZXIiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzIiwicmVzdCQwIiwib25fdXBkYXRlX2hhbmRsZXIkMCIsInIkMCIsInIkMSIsInJlc3QiLCJzZXRfa2luZCQwIiwibWF4X251bV9wYXJlbnRzIiwic2V0X3BhcmVudCIsImxpbmsiLCJhZGRfcGFyZW50IiwibmV3X21heF9udW1fcGFyZW50cyIsIm1heF9udW1fY2hpbGRyZW4iLCJuZXdfbWF4X251bV9jaGlsZHJlbiIsInJlbW92ZV9wYXJlbnQiLCJsYXN0X3BhcmVudF9pbmRleCIsInN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQiLCJjaGlsZDEiLCJjaGlsZDIiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJzYW1lX2FzX3BhY2tlZCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjAiLCJ4XzAyMiIsInhfMDIxIiwib25fdXBkYXRlX2V4biIsInhfMDI0IiwicHJldiQwIiwibmV4dCQwIiwieF8wMjUiLCJ4XzAwMiIsIm5hbWVzIiwibmFtZXMkMCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfMDk1Iiwic2V4cF9vZl9zdGF0dXMiLCJhcmcxXzAwNCIsInJlczFfMDA2IiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuIiwic2V0X2V4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1IiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsInNldF9jdXJyZW50bHlfcnVubmluZ19ub2RlIiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlJDAiLCJtYWtlX2NyZWF0b3IiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQxIiwiYWNjIiwibWFwIiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlXzAwOCIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsInNleHBfb2ZfdCQxIiwibnVtX3Zhcl9zZXRzIiwic2V0X251bV92YXJfc2V0cyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQwIiwic2V0X251bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjJDAiLCJudW1fbm9kZXNfcmVjb21wdXRlZCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZCIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZCIsInNldF9udW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJudW1fbm9kZXNfY3JlYXRlZCIsInNldF9udW1fbm9kZXNfY3JlYXRlZCIsIm51bV9ub2Rlc19jaGFuZ2VkIiwic2V0X251bV9ub2Rlc19jaGFuZ2VkIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYSIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwic2V0X251bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSIsInNldF9rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYSIsIndlYWtfaGFzaHRibHMiLCJvbmx5X2luX2RlYnVnIiwic2V0X29ubHlfaW5fZGVidWciLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiIsInNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwibmV3X29ic2VydmVycyIsImZpbmFsaXplZF9vYnNlcnZlcnMiLCJhbGxfb2JzZXJ2ZXJzIiwic2V0X2FsbF9vYnNlcnZlcnMiLCJudW1fYWN0aXZlX29ic2VydmVycyIsInNldF9udW1fYWN0aXZlX29ic2VydmVycyIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5IiwiYWRqdXN0X2hlaWdodHNfaGVhcCIsImN1cnJlbnRfc2NvcGUiLCJzZXRfY3VycmVudF9zY29wZSIsInN0YWJpbGl6YXRpb25fbnVtIiwic2V0X3N0YWJpbGl6YXRpb25fbnVtIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkIiwic3RhdHVzIiwic2V0X3N0YXR1cyIsIm51bV92YXJfc2V0cyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDEiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMiIsIm51bV9ub2Rlc19yZWNvbXB1dGVkJDAiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQkMCIsIm51bV9ub2Rlc19jcmVhdGVkJDAiLCJudW1fbm9kZXNfY2hhbmdlZCQwIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSQwIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkkMCIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UkMCIsIndlYWtfaGFzaHRibHMkMCIsIm9ubHlfaW5fZGVidWckMCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMkMCIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uJDAiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzJDAiLCJuZXdfb2JzZXJ2ZXJzJDAiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzJDAiLCJhbGxfb2JzZXJ2ZXJzJDAiLCJudW1fYWN0aXZlX29ic2VydmVycyQwIiwicHJvcGFnYXRlX2ludmFsaWRpdHkkMCIsImFkanVzdF9oZWlnaHRzX2hlYXAkMCIsInJlY29tcHV0ZV9oZWFwJDAiLCJjdXJyZW50X3Njb3BlJDAiLCJzdGFiaWxpemF0aW9uX251bSQwIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDAiLCJzdGF0dXMkMCIsIm1ha2VfY3JlYXRvciQwIiwic3RhdHVzX2Z1biIsInN0YWJpbGl6YXRpb25fbnVtX2Z1biIsImN1cnJlbnRfc2NvcGVfZnVuIiwicmVjb21wdXRlX2hlYXBfZnVuIiwiYWRqdXN0X2hlaWdodHNfaGVhcF9mdW4iLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9mdW4iLCJudW1fYWN0aXZlX29ic2VydmVyc19mdW4iLCJhbGxfb2JzZXJ2ZXJzX2Z1biIsImZpbmFsaXplZF9vYnNlcnZlcnNfZnVuIiwibmV3X29ic2VydmVyc19mdW4iLCJkaXNhbGxvd2VkX29ic2VydmVyc19mdW4iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZnVuIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZnVuIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvbmx5X2luX2RlYnVnX2Z1biIsIndlYWtfaGFzaHRibHNfZnVuIiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV9mIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZnVuIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9mIiwibnVtX25vZGVzX2NoYW5nZWRfZnVuIiwibnVtX25vZGVzX2NyZWF0ZWRfZnVuIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2Z1biIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2Z1biIsIm51bV92YXJfc2V0c19mdW4iLCJzdGF0dXNfZ2VuIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDEiLCJjb21waWxlX2FjYyQyIiwic3RhYmlsaXphdGlvbl9udW1fZ2VuIiwiY29tcGlsZV9hY2MkMyIsImN1cnJlbnRfc2NvcGVfZ2VuIiwiY29tcGlsZV9hY2MkNCIsInJlY29tcHV0ZV9oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJhZGp1c3RfaGVpZ2h0c19oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9nZW4iLCJjb21waWxlX2FjYyQ3IiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOCIsImFsbF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImZpbmFsaXplZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTAiLCJuZXdfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDExIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl9nZW4iLCJjb21waWxlX2FjYyQxNCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTUiLCJvbmx5X2luX2RlYnVnX2dlbiIsImNvbXBpbGVfYWNjJDE2Iiwid2Vha19oYXNodGJsc19nZW4iLCJjb21waWxlX2FjYyQxNyIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZyIsImNvbXBpbGVfYWNjJDE4IiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5X2ciLCJjb21waWxlX2FjYyQyMCIsIm51bV9ub2Rlc19jaGFuZ2VkX2dlbiIsImNvbXBpbGVfYWNjJDIxIiwibnVtX25vZGVzX2NyZWF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjIiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQzIiwiY29tcGlsZV9hY2MkMjUiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kNCIsImNvbXBpbGVfYWNjJDI2IiwibnVtX3Zhcl9zZXRzX2dlbiIsImNyZWF0ZSQxIiwibWFwJDEiLCJpdGVyJDEiLCJmb2xkJDEiLCJtYXBfcG9seSQwIiwiZm9yX2FsbCQxIiwiZXhpc3RzJDEiLCJ0b19saXN0JDEiLCJpdGVyJDIiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInRvX2xpc3QkMiIsIm1hcCQyIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQwIiwic2V4cF9vZl90JDIiLCJzdGF0dXNfMDE1Iiwic3RhYmlsaXphdGlvbl9udW1fMDE5IiwiY3VycmVudF9zY29wZV8wMjEiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV8wMjciLCJhZGp1c3RfaGVpZ2h0c19oZWFwXzAyNSIsInJlY29tcHV0ZV9oZWFwXzAyMyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzXzAyOSIsImFsbF9vYnNlcnZlcnNfMDMxIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc18wNDMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl8wNDEiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fMDM5IiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfMDM3IiwibmV3X29ic2VydmVyc18wMzUiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzXzAzMyIsIm9ubHlfaW5fZGVidWdfMDQ1Iiwid2Vha19oYXNodGJsc18wNDciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlXzAiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeV8wNTEiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5XzAiLCJudW1fbm9kZXNfY2hhbmdlZF8wNTUiLCJudW1fbm9kZXNfY3JlYXRlZF8wNTciLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfMDU5IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfMDYxIiwibnVtX3Zhcl9zZXRzXzA2NyIsImFyZ18wNjgiLCJibmRzXzAxNCIsImFyZ18wNjYiLCJibmRzXzAxNCQwIiwiYXJnXzA2NCIsImJuZHNfMDE0JDEiLCJhcmdfMDYyIiwiYm5kc18wMTQkMiIsImFyZ18wNjAiLCJibmRzXzAxNCQzIiwiYm5kc18wMTQkNCIsImJuZHNfMDE0JDUiLCJibmRzXzAxNCQ2IiwiYm5kc18wMTQkNyIsImJuZHNfMDE0JDgiLCJibmRzXzAxNCQ5IiwiYm5kc18wMTQkMTAiLCJibmRzXzAxNCQxMSIsImJuZHNfMDE0JDEyIiwiYm5kc18wMTQkMTMiLCJibmRzXzAxNCQxNCIsImJuZHNfMDE0JDE1IiwiYm5kc18wMTQkMTYiLCJibmRzXzAxNCQxNyIsImJuZHNfMDE0JDE4IiwiYm5kc18wMTQkMTkiLCJibmRzXzAxNCQyMCIsImJuZHNfMDE0JDIxIiwiYm5kc18wMTQkMjIiLCJibmRzXzAxNCQyMyIsImJuZHNfMDE0JDI0IiwiYm5kc18wMTQkMjUiLCJmaXJlZF9hbGFybV92YWx1ZXMiLCJzZXRfZmlyZWRfYWxhcm1fdmFsdWVzIiwiaGFuZGxlX2ZpcmVkIiwidGltaW5nX3doZWVsIiwiZmlyZWRfYWxhcm1fdmFsdWVzJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm5vdyQwIiwidGltaW5nX3doZWVsJDAiLCJtYWtlX2NyZWF0b3IkMSIsInRpbWluZ193aGVlbF9mdW4iLCJub3dfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImZpcmVkX2FsYXJtX3ZhbHVlc19mdW4iLCJ0aW1pbmdfd2hlZWxfZ2VuIiwibm93X2dlbiIsImhhbmRsZV9maXJlZF9nZW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkMyIsIml0ZXIkMyIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDQiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJzZXhwX29mX3QkMyIsIm5vd18wNzIiLCJ0aW1pbmdfd2hlZWxfMDcwIiwiZmlyZWRfYWxhcm1fdmFsdWVzXzA3NiIsImFyZ18wNzciLCJibmRzXzA2OSIsImFyZ18wNzUiLCJibmRzXzA2OSQwIiwiYXJnXzA3MyIsImJuZHNfMDY5JDEiLCJhcmdfMDcxIiwiYm5kc18wNjkkMiIsImludmFyaWFudCQxIiwibm93JDEiLCJjbG9jayIsInRpbWluZ193aGVlbF9sZW5ndGgiLCJudW1fc3RhYmlsaXplcyIsIml0ZXJfb2JzZXJ2ZXJzIiwiZGlyZWN0bHlfb2JzZXJ2ZWQiLCJpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIiwidF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJtYXhfbnVtX3BhcmVudHNfMDgxIiwicGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyIiwiZHVwbGljYXRlc18wODUiLCJleHRyYV8wODYiLCJzZXhwXzA3OSQwIiwiZmllbGRfc2V4cHNfMDg5IiwiZmllbGRfbmFtZV8wODciLCJ0YWlsXzA5OSIsImZpZWxkX3NleHBfMDg4JDIiLCJmaWVsZF9zZXhwXzA4OCIsInhfMTAwIiwiZmllbGRfc2V4cF8wODgkMCIsInNleHBfMDk0IiwiYXJnMV8wOTEiLCJhcmcwXzA5MCIsInJlczBfMDkyIiwicmVzMV8wOTMiLCJmdmFsdWVfMDk2IiwiZmllbGRfc2V4cF8wODgkMSIsImZ2YWx1ZV8wOTciLCJwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXIkMCIsIm1heF9udW1fcGFyZW50c18wODIiLCJzZXhwX29mX3QkNCIsIm1heF9udW1fcGFyZW50c18xMDIiLCJibmRzXzEwMSIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnXzEwNSIsImJuZHNfMTAxJDAiLCJhcmdfMTAzIiwiYm5kc18xMDEkMSIsInN0YXRzIiwibnVtX25lY2Vzc2FyeV9ub2RlcyIsIm1heF9udW1fcGFyZW50cyQwIiwibnVtX25vZGVzX2J5X251bV9wYXJlbnRzIiwibnVtX25vZGVzIiwiYW1fc3RhYmlsaXppbmciLCJyYWlzZWRfZXhuIiwiaW52YXJpYW50JDIiLCJpbnRlcm5hbF9vYnNlcnZlciIsInhfMTEwIiwicGFja2VkIiwiZW5zdXJlX25vdF9zdGFiaWxpemluZyIsImFsbG93X2luX3VwZGF0ZV9oYW5kbGVyIiwiYmFja3RyYWNlIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImFyZzFfMTEyIiwiYXJnMF8xMTEiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQxIiwicmVtb3ZlX2NoaWxkcmVuIiwicmVtb3ZlX2NoaWxkIiwiY2hlY2tfaWZfdW5uZWNlc3NhcnkiLCJiZWNhbWVfdW5uZWNlc3NhcnkiLCJwIiwidSIsInJlbW92ZV9hbGFybSIsImludmFsaWRhdGVfbm9kZSIsImludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaCIsInJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJmaXJzdF9ub2RlX29uX3JocyIsIm5ld19zY29wZSIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDEiLCJleHBlcnQiLCJhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2giLCJ3YXNfbmVjZXNzYXJ5IiwieF8xMTUiLCJiZWNhbWVfbmVjZXNzYXJ5IiwicnVuX3dpdGhfc2NvcGUiLCJzY29wZSIsInNhdmVkIiwiZXhuJDAiLCJ3aXRoaW5fc2NvcGUiLCJjaGFuZ2VfY2hpbGQiLCJvbGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJvbGRfY2hpbGQkMCIsImFkZF9hbGFybSIsInJlY29tcHV0ZSIsIm1heWJlX2NoYW5nZV92YWx1ZSIsIm9sZF9yaHMiLCJvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiY29weV9jaGlsZCIsIm9ubHlfZnJlZXplX3doZW4iLCJlbHNlJDAiLCJ0aGVuIiwiZGVzaXJlZF9icmFuY2giLCJtYWluJDEiLCJvbGRfcmhzJDAiLCJyaHMkMSIsInJocyQyIiwibjEiLCJjbG9jayQwIiwiYXQkMCIsImNsb2NrJDEiLCJjaGlsZCQxIiwic3RlcF9mdW5jdGlvbiIsInN0ZXBfZnVuY3Rpb25fdmFsdWUiLCJhdCQxIiwibjIiLCJuMSQwIiwibjMiLCJuMiQwIiwibjEkMSIsImYkMiIsIm40IiwibjMkMCIsIm4yJDEiLCJuMSQyIiwiZiQzIiwibjUiLCJuNCQwIiwibjMkMSIsIm4yJDIiLCJuMSQzIiwiZiQ0IiwibjYiLCJuNSQwIiwibjQkMSIsIm4zJDIiLCJuMiQzIiwibjEkNCIsImYkNSIsIm43IiwibjYkMCIsIm41JDEiLCJuNCQyIiwibjMkMyIsIm4yJDQiLCJuMSQ1IiwiZiQ2IiwibjgiLCJuNyQwIiwibjYkMSIsIm41JDIiLCJuNCQzIiwibjMkNCIsIm4yJDUiLCJuMSQ2IiwiZiQ3IiwibjkiLCJuOCQwIiwibjckMSIsIm42JDIiLCJuNSQzIiwibjQkNCIsIm4zJDUiLCJuMiQ2IiwibjEkNyIsImYkOCIsIm4xMCIsIm45JDAiLCJuOCQxIiwibjckMiIsIm42JDMiLCJuNSQ0IiwibjQkNSIsIm4zJDYiLCJuMiQ3IiwibjEkOCIsImYkOSIsIm4xMSIsIm4xMCQwIiwibjkkMSIsIm44JDIiLCJuNyQzIiwibjYkNCIsIm41JDUiLCJuNCQ2IiwibjMkNyIsIm4yJDgiLCJuMSQ5IiwiZiQxMCIsIm4xMiIsIm4xMSQwIiwibjEwJDEiLCJuOSQyIiwibjgkMyIsIm43JDQiLCJuNiQ1IiwibjUkNiIsIm40JDciLCJuMyQ4IiwibjIkOSIsIm4xJDEwIiwiZiQxMSIsIm4xMyIsIm4xMiQwIiwibjExJDEiLCJuMTAkMiIsIm45JDMiLCJuOCQ0IiwibjckNSIsIm42JDYiLCJuNSQ3IiwibjQkOCIsIm4zJDkiLCJuMiQxMCIsIm4xJDExIiwiZiQxMiIsIm4xNCIsIm4xMyQwIiwibjEyJDEiLCJuMTEkMiIsIm4xMCQzIiwibjkkNCIsIm44JDUiLCJuNyQ2IiwibjYkNyIsIm41JDgiLCJuNCQ5IiwibjMkMTAiLCJuMiQxMSIsIm4xJDEyIiwiZiQxMyIsIm4xNSIsIm4xNCQwIiwibjEzJDEiLCJuMTIkMiIsIm4xMSQzIiwibjEwJDQiLCJuOSQ1IiwibjgkNiIsIm43JDciLCJuNiQ4IiwibjUkOSIsIm40JDEwIiwibjMkMTEiLCJuMiQxMiIsIm4xJDEzIiwiZiQxNCIsImNoaWxkX2luZGV4JDAiLCJ1JDAiLCJjYW5fcmVjb21wdXRlX25vdyIsImIiLCJqIiwicmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uIiwieF8xMTYiLCJ1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMiLCJkaXNhbGxvd19mdXR1cmVfdXNlIiwiZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyIsIm9ic2VydmVyX2ZpbmFsaXplciIsImNyZWF0ZV9vYnNlcnZlciIsIm9wdCIsInN0aCIsInNob3VsZF9maW5hbGl6ZSIsImFkZF9uZXdfb2JzZXJ2ZXJzIiwib2xkX2FsbF9vYnNlcnZlcnMiLCJvbGRfb2JzZXJ2ZXJzIiwib2JzZXJ2ZXJfdmFsdWVfZXhuIiwieF8xMTciLCJvYnNlcnZlcl92YWx1ZSIsIm5vZGVfb25fdXBkYXRlIiwib2JzZXJ2ZXJfb25fdXBkYXRlX2V4biIsInNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIiwic2V0X3ZhciIsInJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyIsIndlYWtfaGFzaHRibCIsInN0YWJpbGl6ZV9zdGFydCIsInN0YWJpbGl6ZV9lbmQiLCJtYXRjaCQwIiwibm9kZV91cGRhdGUkMCIsInJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIiwic3RhYmlsaXplIiwic2V4cF9vZl90JDUiLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUiLCJjcmVhdGVfbm9kZV9pbiIsImNyZWF0ZV9ub2RlIiwiY3JlYXRlX25vZGVfdG9wIiwiY3JlYXRlX3ZhciIsInVzZV9jdXJyZW50X3Njb3BlIiwiY29uc3QkMCIsIm1hcCQ1IiwibWFwMiIsImJvdGgiLCJtYXAzIiwibWFwNCIsIm1hcDUiLCJtYXA2IiwibWFwNyIsIm1hcDgiLCJtYXA5IiwibWFwMTAiLCJtYXAxMSIsIm1hcDEyIiwibWFwMTMiLCJtYXAxNCIsIm1hcDE1IiwicHJlc2VydmVfY3V0b2ZmIiwiaW5wdXQiLCJvdXRwdXQiLCJkZXBlbmRfb24iLCJuZWNlc3NhcnlfaWZfYWxpdmUiLCJiaW5kMiIsInYyIiwidjEiLCJiaW5kMyIsInYzIiwiYmluZDQiLCJ2NCIsImlmJDAiLCJsYXp5X2Zyb21fZnVuIiwiZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6IiwibWVtb2l6ZV9mdW5fYnlfa2V5IiwiaGFzaGFibGUiLCJwcm9qZWN0X2tleSIsImluaXRpYWxfc2l6ZSIsInRhYmxlIiwia2V5IiwiYiQwIiwiYWxsIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIiwibnVtX2ludmFsaWQiLCJhY2N1bSIsIngkMCIsImZfaW52ZXJzZSQwIiwiYXRfbGVhc3Rfa19vZiIsImJvb2xfdG9faW50IiwibnVtX3RydWUiLCJleGlzdHMkNSIsImZvcl9hbGwkNSIsInN1bSIsInplcm8iLCJzdWIiLCJvcHRfc3VtIiwic3VtX2ludCIsInN1bV9mbG9hdCIsInNldF9mcmVlemUiLCJ0aW1lIiwiYWZ0ZXIiLCJzcGFuIiwibmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QiLCJiYXNlIiwidmFsdWVfYXQiLCJpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIiwiYWR2YW5jZV9jbG9jayIsIm1haW4kMiIsImNyZWF0ZV9jbG9jayIsInRpbWluZ193aGVlbF9jb25maWciLCJzdGFydCIsImNyZWF0ZSQzIiwiQ29uZmlnIiwid2Vha19tZW1vaXplX2Z1bl9ieV9rZXkiLCJleHBlcnRfa2luZF9vZl9ub2RlIiwieF8xMTgiLCJjcmVhdGUkNCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIiwiY3VycmVudCIsImFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlXyIsInhfMTIwIiwieF8xMTkiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8kMCIsInhfMTIyIiwieF8xMjEiLCJtYWtlX3N0YWxlJDAiLCJlX29wdCIsImludmFsaWRhdGUiLCJhZGRfZGVwZW5kZW5jeSIsImRlcCIsInJlbW92ZV9kZXBlbmRlbmN5IiwiZWRnZSIsImVkZ2VfaW5kZXgiLCJsYXN0X2VkZ2UiLCJsYXN0X2VkZ2VfaW5kZXgiLCJvbl9jaGFuZ2UiLCJyZWR1Y2UiLCJyZWR1Y2VyIiwibGV2ZWxfYml0cyIsImNyZWF0ZV9pbnRlcm5hbCIsImRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkIiwic2V4cF9vZl9zdGF0ZV93aXRuZXNzIiwid2l0aGluIiwicGFjayIsInJldHVybiQwIiwibWFwMiQwIiwibWFwMyQwIiwibWFwNCQwIiwibWFwNSQwIiwibWFwNiQwIiwibWFwNyQwIiwibWFwOCQwIiwibWFwOSQwIiwibWFwMTAkMCIsIm1hcDExJDAiLCJtYXAxMiQwIiwibWFwMTMkMCIsIm1hcDE0JDAiLCJtYXAxNSQwIiwiYmluZDIkMCIsImJpbmQzJDAiLCJiaW5kNCQwIiwic3ltYm9sX21hcCIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCQwIiwic3ltYm9sX2JpbmQkMCIsImxhenlfZnJvbV9mdW4kMCIsIm1lbW9pemVfZnVuIiwiYXJyYXlfZm9sZCQwIiwicmVkdWNlX2JhbGFuY2VkIiwicmVwbGFjZSIsInhfMDE3IiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQwIiwiaW5jcl9zdGF0ZSQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQkMCIsImFsYXJtX3ByZWNpc2lvbiQwIiwid2F0Y2hfbm93IiwiYWR2YW5jZV9jbG9ja19ieSIsImZyZWV6ZSQwIiwid2hlbiIsImRlcGVuZF9vbiQwIiwic3RhYmlsaXplJDAiLCJhbV9zdGFiaWxpemluZyQwIiwib2ZfYV8wMTgiLCJhcmcwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJub2RlX3ZhbHVlIiwic2V4cF9vZl90JDYiLCJib3RoJDAiLCJ4MSIsIngyIiwibWFwMiQxIiwibWFwMyQxIiwibWFwNCQxIiwibWFwNSQxIiwibWFwNiQxIiwibWFwNyQxIiwibWFwOCQxIiwibWFwOSQxIiwibWFwMTAkMSIsIm1hcDExJDEiLCJtYXAxMiQxIiwibWFwMTMkMSIsIm1hcDE0JDEiLCJtYXAxNSQxIiwiYmluZDIkMSIsImJpbmQzJDEiLCJiaW5kNCQxIiwid2Vha19tZW1vaXplX2Z1biIsImRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSQwIiwicmV0dXJuJDEiLCJ3aXRoaW4kMCIsImNvbnN0JDEiLCJyZXR1cm4kMiIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwiYXJyYXlfZm9sZCQxIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic3RhYmlsaXplJDEiLCJhbV9zdGFiaWxpemluZyQxIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1Iiwid2l0aF9vbGQiLCJpIiwiZiIsIm9sZCIsImEiLCJiIiwidW5vcmRlcmVkX2ZvbGQiLCJvcHQiLCJ1cGRhdGUiLCJzcGVjaWFsaXplZF9pbml0aWFsIiwibWFwIiwiaW5pdCIsImFkZCIsInJlbW92ZSIsInN0aCIsImRhdGFfZXF1YWwiLCJzdGgkMCIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJrZXkiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwiYWNjIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJpbml0aWFsIiwib2xkX291dCIsIm9sZF9pbiIsImNoYW5nZSIsIm5ldyQwIiwib2xkJDAiLCJuZXckMSIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzIiwiaW5jcl9tYXAiLCJ1cGRhdGUkMSIsIm91dGVyX2tleSIsImlubmVyX2tleSIsImlubmVyX21hcCIsImRhdGEiLCJvbGRfaW5uZXJfbWFwIiwibmV3X2lubmVyX21hcCIsImRpZmYiLCJkYXRhX3JlbW92ZWQiLCJkYXRhX2FkZGVkIiwid2l0aF9jb21wYXJhdG9yIiwiZ2V0X2NvbXBhcmF0b3IiLCJ4Iiwid2l0aF9jb21wYXJhdG9yJDAiLCJvZl9zZXQiLCJzZXQiLCJjb21wYXJhdG9yIiwib2xkX2lucHV0Iiwib2xkX291dHB1dCIsIm5ld19pbnB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJuZXdfb3V0cHV0IiwiZ2VuZXJpY19tYXBpIiwid2l0bmVzcyIsImlucHV0IiwicmVzIiwib3V0cHV0X2RhdGEiLCJtYXBpIiwiZmlsdGVyX21hcGkiLCJmaWx0ZXJfbWFwIiwid2l0aF9vbGQyIiwiaTEiLCJpMiIsImExIiwiYTIiLCJtYXBpX2NvdW50IiwibmV3X2tleSIsIm4iLCJwcmV2X2tleSIsIm1hcF9jb3VudCIsIm1pbl9oZWxwZXIiLCJtaW4iLCJtYXhfaGVscGVyIiwibWF4IiwiYm91bmRzX2hlbHBlciIsIm1hcGlfbWluIiwibWFwaV9tYXgiLCJtYXBpX2JvdW5kcyIsIm1hcGlfbW4iLCJtYXBfbWF4IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwibWFwX2JvdW5kcyIsInZhbHVlX2JvdW5kcyIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0IiwibmV3X2xlZnRfbWFwIiwibmV3X3JpZ2h0X21hcCIsIm9sZF9yaWdodF9tYXAiLCJvbGRfbGVmdF9tYXAiLCJvbGRfbGVmdF9tYXAkMCIsImxlZnRfZGlmZiIsInJpZ2h0X2RpZmYiLCJkaWZmX2VsZW1lbnQiLCJyaWdodF9rZXkiLCJsZWZ0X2tleSIsImtleSQwIiwicmlnaHRfZGF0YV9vcHQkMCIsImxlZnRfZGF0YV9vcHQiLCJyaWdodF9kaWZmJDAiLCJsZWZ0X2RpZmYkMCIsInJpZ2h0X2RhdGFfb3B0JDIiLCJsZWZ0X2RhdGFfb3B0JDAiLCJ5Iiwib3V0cHV0X2RhdGFfb3B0IiwieSQwIiwiZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvciIsImN1dG9mZiIsImluY3JlbWVudGFsX3N0YXRlIiwiZW1wdHlfbWFwIiwicHJldl9tYXAiLCJwcmV2X25vZGVzIiwicmVzdWx0Iiwib25faW5uZXJfY2hhbmdlIiwibGhzX2NoYW5nZSIsIm5vZGVzIiwiY2hhbmdlZCIsImRlcCIsIm5vZGUiLCJub2RlcyQwIiwibm9kZSQwIiwibm9kZSQxIiwiYyIsInVzZXJfZnVuY3Rpb25fZGVwIiwibmV3X25vZGVzIiwiZmlsdGVyX21hcGkkMCIsIm1hcGkkMCIsIm1hcCQwIiwiZmlsdGVyX21hcCQwIiwibWVyZ2UkMCIsIm1hcDEiLCJtYXAyIiwidW56aXBfbWFwaSIsImxlZnRfcmVzdWx0X2VxdWFsIiwicmlnaHRfcmVzdWx0X2VxdWFsIiwicGFpciIsImRhdGFfZXF1YWwkMCIsImxlZnRfcmVzdWx0X2VxdWFsJDAiLCJzdGgkMSIsInJpZ2h0X3Jlc3VsdF9lcXVhbCQwIiwibGVmdF9hY2MiLCJsZWZ0X3Jlc3VsdCIsInJpZ2h0X2FjYyIsInJpZ2h0X3Jlc3VsdCIsImwiLCJsZWZ0JDAiLCJyIiwicmlnaHQkMCIsInJpZ2h0IiwibGVmdCIsInByZXYiLCJwcmV2X2IiLCJwcmV2X2EiLCJuZXdfYiIsIm5ld19hIiwiZWxlbWVudCIsImlucHV0X2NoYW5nZSIsInVuemlwIiwidW56aXBfbWFwaSQwIiwicmlnaHRfZGVwIiwibGVmdF9kZXAiLCJyaWdodF9pbmNyIiwibGVmdF9pbmNyIiwibGVmdF91c2VyX2Z1bmN0aW9uX2RlcCIsInJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwIiwia2V5cyIsInBhcnRpdGlvbl9tYXBpIiwiZW1wdHkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsImZsYXR0ZW4iLCJzdGF0ZSIsImluY3IiLCJqb2luIiwibWFwX2luY3IiLCJyZXN1bHRfbWFwIiwib2xkX21hcF9vZl9pbmNycyIsImN1cnJlbnRfZGVwZW5kZW5jaWVzIiwiYWRkX3N1Ym5vZGUiLCJkYXRhX25vZGUiLCJuZXdfZGVwIiwicmVtb3ZlX3N1Ym5vZGUiLCJtYXBfb2ZfaW5jcnMiLCJkYXRhX25vZGUkMCIsIm5ld19kZXBlbmRlbmN5X21hcCIsInNlcGFyYXRlIiwiaW5wdXRfbWFwIiwib3V0cHV0X21hcF9ub2RlIiwibWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfIiwiaW5wdXRfbWFwX2NoYW5nZWQiLCJkZXBlbmRlbmN5IiwicHJldl9pbnB1dF9tYXAiLCJvdXRwdXRfbWFwIiwiZXhwZXJ0X25vZGVzIiwib2xkX25vZGUiLCJzdWJyYW5nZSIsInJhbmdlIiwiY29tcGFyZSIsImVxdWFsIiwibWF5YmVfYm91bmRfZXF1YWwiLCJhXzAwMiIsImJfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJyYW5nZV9pc19lbXB0eSIsIm1pbiQwIiwibWF4JDAiLCJtYXgkMSIsIm1pbiQxIiwicmFuZ2VfaW5jbHVkZXMiLCJyYW5nZSQwIiwiZnJvbV9zY3JhdGNoIiwib2xkX3JhbmdlIiwib2xkX21pbiIsIm9sZF9tYXAiLCJvbGRfbWF4Iiwib2xkX3JlcyIsIm9sZF9tYXgkMCIsInBhcmFtIiwiYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24iLCJvdXRzaWRlIiwib3V0c2lkZSQwIiwib3V0c2lkZV9jdXRvZmYiLCJ3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2UiLCJ3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIiwibWFwX2FwcGVuZF9leG4iLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm9sZF9taW4kMCIsIm9sZF9taW4kMSIsIm9sZF9tYXgkMSIsIndpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlIiwicmVrZXkiLCJvdXRlcl9jb21wYXJhdG9yIiwiaW5kZXhfYnlpIiwiaW5kZXgiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfbWFwIiwiaW5uZXJfbWFwJDAiLCJpbmRleF9ieSIsImlzX2tub3duIiwidG9fb3B0aW9uIiwiZmluZF9rZXlfcmFuZ2VfbGluZWFyIiwiZnJvbSIsInRvIiwibGVuIiwiYmVnaW5fa2V5IiwiZW5kX2tleSIsImZpbmRfa2V5cyIsImZvbGQiLCJzdGFydF9wb3MiLCJhZHZhbmNlX3BvcyIsInBvcyIsImJlZ2luX2tleSQwIiwiZW5kX2tleSQwIiwicmFuayIsImNvbXBhcmVfa2V5Iiwic2FtZV9rZXkiLCJwcm9jZXNzIiwibmV3X21hcCIsIm9sZF9yYW5rIiwib2xkX2tleSIsIm9sZF9yYW5rJDAiLCJ1cHBlcl9ib3VuZCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQkMCIsImxvd2VyX2JvdW5kJDAiLCJzdWJyYW5nZSQwIiwiZGlmZl9rZXkiLCJvbGRfcmFuayQxIiwib2xkJDEiLCJzdWJyYW5nZV9ieV9yYW5rIiwiZmluZF9rZXlfcmFuZ2UiLCJlbmRfa2V5X29wdCQwIiwib2xkX3RvIiwib2xkX2Zyb20iLCJmaW5kX29mZnNldCIsImNoYW5nZWRfa2V5IiwicmFuZ2Vfb2Zmc2V0X2JlZ2luIiwicmFuZ2Vfb2Zmc2V0X2VuZCIsImFkanVzdF9hbmRfb2Zmc2V0IiwiYnkkMSIsImtleSQxIiwiYnkkMiIsImJ5IiwiY2xvc2VzdF9kaXIiLCJieSQwIiwib2Zmc2V0X2VuZCIsIm9mZnNldF9iZWdpbiIsIm1hcF9vZmZzZXRfZW5kIiwibWFwX29mZnNldF9iZWdpbiIsImVuZF9rZXlfb3B0JDIiLCJiZWdpbl9rZXlfb3B0IiwibWFwX29mZnNldF9iZWdpbiQwIiwiZW5kX2tleV9vcHQiLCJiZWdpbl9rZXlfb3B0JDAiLCJzeW1ib2wiLCJib3VuZCIsInJldHVybiQwIiwicGF0dGVybl9zeW50YXhfMDA4IiwicGF0dGVybl9zeW50YXhfMDA5IiwibGIiLCJwYXR0ZXJuX3N5bnRheF8wMTAiLCJ1IiwicGF0dGVybl9zeW50YXhfMDExIiwidWIiLCJsZXRfc3ludGF4XzAxNiIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxMiIsImwkMCIsInBhdHRlcm5fc3ludGF4XzAxMyIsImxiJDAiLCJsZXRfc3ludGF4XzAyMCIsInBhdHRlcm5fc3ludGF4XzAxNCIsInUkMCIsInBhdHRlcm5fc3ludGF4XzAxNSIsInViJDAiLCJsZXRfc3ludGF4XzAyMyIsInRyYW5zcG9zZSIsImsyX2NvbXBhcmF0b3IiLCJtIiwiazFfY29tcGFyYXRvciIsImsxIiwiazIiLCJ2YWx1ZSIsImFjY19pbm5lciIsImFjY19pbm5lciQwIiwiY29sbGFwc2VfYnkiLCJtZXJnZV9rZXlzIiwiY29sbGFwc2UiLCJpbm5lcl9jb21wYXJhdG9yJDAiLCJleHBhbmQiLCJjb3VudGkiLCJjb3VudCIsImV4aXN0c2kiLCJleGlzdHMiLCJzdW0iLCJHcm91cCIsInYiLCJmb3JfYWxsaSIsImZvcl9hbGwiLCJjcmVhdGUiLCJzZWxmIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsIm5ld192YWx1ZSIsInVwZGF0ZXJfbm9kZSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsInNhdmVkX3ZhbHVlIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJtYXRjaCQ0IiwidiQxIiwibWF0Y2gkNSIsInYkMiIsIm1hdGNoJDAiLCJpbmZvX3Blcl9rZXkiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJhIiwiY29udGVudHNfYmlnc3RyIiwiYmxvYiIsInVybCIsImNyZWF0ZSQwIiwib3B0IiwiZ2V0X2Rvd25sb2FkIiwiYnV0dG9uX3RleHQiLCJzdGgiLCJlbmFibGVkIiwic3RoJDAiLCJvbl9jbGljayIsInN0aCQxIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMjIiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wNDAiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwidG9wXzAwNSIsImxlZnRfMDA3IiwiYm90dG9tXzAwOSIsInJpZ2h0XzAxMSIsImR1cGxpY2F0ZXNfMDEzIiwiZXh0cmFfMDE0Iiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjQiLCJmaWVsZF9zZXhwXzAxNiQ0IiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNSIsImZpZWxkX3NleHBfMDE2JDAiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMSIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNiQyIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE2JDMiLCJmdmFsdWVfMDE5IiwicmlnaHRfMDEyIiwiYm90dG9tXzAxMCIsImxlZnRfMDA4IiwidG9wXzAwNiIsInNleHBfb2ZfdCIsIm9mX2FfMDI2IiwicmlnaHRfMDM0IiwiYm90dG9tXzAzMiIsImxlZnRfMDMwIiwidG9wXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInY0IiwidjMiLCJ2MiIsInYxIiwic2l6ZSIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwidl90b3AiLCJ2X2xlZnQiLCJ2X2JvdHRvbSIsInZfcmlnaHQiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDM2IiwiYl8wMzciLCJuIiwibiQwIiwibiQxIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwicmlnaHQkMCIsImJvdHRvbSQwIiwibGVmdCQwIiwidG9wJDAiLCJtYWtlX2NyZWF0b3IiLCJ0b3BfZnVuIiwibGVmdF9mdW4iLCJib3R0b21fZnVuIiwicmlnaHRfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwidG9wX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJsZWZ0X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJib3R0b21fZ2VuIiwiY29tcGlsZV9hY2MkMyIsInJpZ2h0X2dlbiIsImFjYyIsIm1hcCIsIml0ZXIiLCJmb2xkIiwiaW5pdCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsIm1hcCQxIiwidCIsImYiLCJpbnRfaGVpZ2h0IiwiaW50X3dpZHRoIiwiZmxvYXRfaGVpZ2h0IiwiZmxvYXRfd2lkdGgiLCJyb3VuZF9mbG9hdF9yZWN0Iiwib3B0Iiwic3RoIiwicm91bmQiLCJyb3dzX29yX2NvbHVtbnNfb2Zfc2V4cCIsInNleHBfMDQxIiwic2V4cF9vZl9yb3dzX29yX2NvbHVtbnMiLCJncm91cCQwIiwiYmluX3NoYXBlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9zaXplX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZV9yb3dzX29yX2NvbHVtbnMiLCJiaW5fd3JpdGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyQwIiwiYmluX3JlYWRlcl9yb3dzX29yX2NvbHVtbnMiLCJiaW5fcm93c19vcl9jb2x1bW5zIiwicm93cyIsImNvbHVtbnMiLCJpc19yb3dzIiwiaXNfY29sdW1ucyIsInJvd3NfdmFsIiwiY29sdW1uc192YWwiLCJyb3dzJDAiLCJjb2x1bW5zJDAiLCJmb2xkJDEiLCJyb3dzX2Z1biIsImNvbHVtbnNfZnVuIiwiaXRlciQxIiwibWFwJDIiLCJtYWtlX21hdGNoZXIiLCJyb3dzX2dlbiIsImNvbHVtbnNfZ2VuIiwidG9fcmFuayIsInRvX25hbWUiLCJjb21wYXJlX3Jvd3Nfb3JfY29sdW1ucyIsImlubmVySGVpZ2h0IiwiaW5uZXJXaWR0aCIsImVsZW1lbnRfaXNfaW5fdmlld3BvcnQiLCJlbHQiLCJzY3JvbGwiLCJpZCIsInZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCIsInZpZXdwb3J0X3JlY3QiLCJjbGllbnRfcmVjdF9vZl9lbGVtZW50IiwiYm91bmRpbmdfcmVjdCIsImNsaWVudF9yZWN0IiwiZmluZF92aXNpYmxlX3JhbmdlIiwibGVuZ3RoIiwibnRoX2VsZW1lbnRfaWQiLCJsYXlvdXQiLCJlbGVtZW50X3NlYXJjaCIsInNlYXJjaF9ieSIsIm1vZGUiLCJ4IiwibnRoX2VsZW1lbnQiLCJmaXJzdCIsImxhc3QiLCJnZXQiLCJpc19hc2NlbmRpbmciLCJsZW5ndGgkMCIsInZpZXdwb3J0X3JlY3QkMCIsInRhcmdldCIsInRhcmdldCQwIiwic2VhcmNoX2J5JDAiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIiwiZ2V0X3Njcm9sbF9jb250YWluZXIiLCJlbCIsImZpbGVuYW1lIiwicHJpbnRfZXJyb3JmIiwiZm10IiwicyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwiY2FsbGJhY2siLCJjdXJyZW50X2NvbnRleHQiLCJyZXF1ZXN0X2lkcyIsImNhbGxiYWNrJDAiLCJzZXRfdGltZW91dF9pZCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsImFuaW1hdGlvbl9jYWxsYmFjayIsInRpbWVvdXRfY2FsbGJhY2siLCJhc19mb2N1c2FibGUiLCJtYXJrX2RpcnR5IiwiaXNfZGlydHkiLCJ4XzAwMiIsInhfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJzZXRfbG9nZ2luZ19maWx0ZXIiLCJsb2dnaW5nX2ZpbHRlciIsImdsb2JhbF9pc19pbml0aWFsaXplZCIsImFwcF9zdGF0ZXMiLCJzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCIsInN0cmluZ3MiLCJzdHIiLCJtdWx0aV9saW5lX3N0cmluZ19saXN0IiwiZ2V0X3RhZ19uYW1lIiwibm9kZSIsImUiLCJzdGFydF9ib25zYWkiLCJiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCIsImluaXRpYWxfbW9kZWwiLCJkZWJ1ZyIsInN0aCQwIiwic3RvcCIsInN0aCQxIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImN1dG9mZiIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJnZXRfdmlldyIsIm5hbWVkX2xvZ2dpbmdfZmlsdGVycyQwIiwiZmlsdGVyX25hbWVzIiwid2l0aF9hcHBfaWRfb3B0IiwidXBkYXRlX3N0YXRlIiwiYXBwX2lkX29wdCIsImFwcF9pZF9vcHQkMCIsImFwcF9pZCIsInN0YXRlIiwidXBkYXRlX2xvZ2dpbmdfZmlsdGVyIiwidXBkYXRlX3Nob3VsZF9wcm9maWxlIiwic2hvdWxkX3Byb2ZpbGUiLCJ1cGRhdGVfc2hvdWxkX2RlYnVnIiwic2hvdWxkX2RlYnVnIiwiYmxhbmdfc3RyIiwiYmxhbmdfc3RyJDAiLCJhcHBfc3RhdGUiLCJibGFuZyIsImludmFsaWRfbmFtZXMiLCJuYW1lIiwiZmlsdGVyIiwiZmlsdGVyJDAiLCJhY3Rpb25fc2V4cCIsImNvbnRlbnRzIiwiYXBwX2luaXRfbWVzc2FnZSIsInNob3VsZF9kZWJ1ZyQwIiwic2hvdWxkX3Byb2ZpbGUkMCIsImh0bWwiLCJodG1sX2RvbSIsInBhcmVudCIsImNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCIsImV2ZW50X25hbWUiLCJ3aGVyZSIsInByZXZfaHRtbCIsInByZXZfZWx0IiwicmVmb2N1c19yb290X2VsZW1lbnQiLCJlbGVtZW50IiwidGltZXJfc3RhcnQiLCJwcm9maWxlIiwidGltZXJfc3RvcCIsImJlZm9yZSIsImFmdGVyIiwicmVsYXRlZF90YXJnZXQiLCJzYWZlX2ZpbHRlciIsInNob3VsZF9sb2ciLCJlcnIiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDEyIiwibmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIiwicGVyZm9ybV91cGRhdGUiLCJkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsImFkZF9uZXdfYXR0cnMiLCJhdHRycyIsImh0bWwkMCIsInBhdGNoIiwib2xkX3RhZ19uYW1lIiwibmV3X3RhZ19uYW1lIiwidGFnc190aGVfc2FtZSIsInN0YXJ0IiwiYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24iLCJvbGRfbW9kZWwiLCJpbmplY3QiLCJjb21wb25lbnQiLCJzY2hlZHVsZV9ldmVudCIsInNjaGVkdWxlX2FjdGlvbiIsImVycm9yX3NvdXJjZV8wMTQiLCJpbnZhcmlhbnQiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsInRvX3N0cmluZyIsImVxdWFsIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDUiLCJiXzAwNiIsImFfMDA5IiwiYl8wMTAiLCJ1cGRhdGVfb2Zfc2V4cCIsIm9mX2FfMDExIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTYiLCJpbnB1dF8wMTkiLCJ2YWx1ZV8wMjEiLCJkdXBsaWNhdGVzXzAyMyIsImV4dHJhXzAyNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjciLCJmaWVsZF9uYW1lXzAyNSIsInRhaWxfMDMxIiwiZmllbGRfc2V4cF8wMjYkMiIsImZpZWxkX3NleHBfMDI2IiwieF8wMzIiLCJmaWVsZF9zZXhwXzAyNiQwIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI2JDEiLCJmdmFsdWVfMDI5IiwidmFsdWVfMDIyIiwiaW5wdXRfMDIwIiwiZmllbGRfc2V4cHNfMDMzIiwiaW5wdXRfMDM2IiwibGFzdF92YWxpZF8wMzgiLCJlcnJvcl8wNDAiLCJkdXBsaWNhdGVzXzA0MiIsImV4dHJhXzA0MyIsInNleHBfMDM0IiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MSIsImZpZWxkX3NleHBfMDQ1JDMiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDUyIiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDgiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDQ3IiwiZXJyb3JfMDQxIiwibGFzdF92YWxpZF8wMzkiLCJpbnB1dF8wMzciLCJzZXhwX29mX3VwZGF0ZSIsIm9mX2FfMDU0IiwidmFsdWVfMDU4IiwiaW5wdXRfMDU2IiwiYXJnXzA1OSIsImJuZHNfMDU1IiwiYXJnXzA1NyIsImJuZHNfMDU1JDAiLCJlcnJvcl8wNjUiLCJsYXN0X3ZhbGlkXzA2MyIsImlucHV0XzA2MSIsImFyZ18wNjYiLCJibmRzXzA2MCIsImFyZ18wNjQiLCJibmRzXzA2MCQwIiwiYXJnXzA2MiIsImJuZHNfMDYwJDEiLCJncm91cCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2MiIsInYxIiwic2l6ZSIsInYzIiwidjIkMCIsInYxJDAiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCIsIndyaXRlX2EiLCJidWYiLCJwb3MiLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X2lucHV0Iiwidl92YWx1ZSIsInZfaW5wdXQkMCIsInZfbGFzdF92YWxpZCIsInZfZXJyb3IiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJhXzA2OCIsImJfMDY5IiwiYV8wNzIiLCJiXzA3MyIsIm4iLCJuJDAiLCJhXzA3NiIsImJfMDc3IiwibiQxIiwiZXF1YWxfdXBkYXRlIiwiYV8wNzgiLCJiXzA3OSIsImFfMDgwIiwiYl8wODEiLCJncm91cCQwIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJiaW5fdXBkYXRlIiwiY29tcGFyZV91cGRhdGUiLCJhXzA4NyIsImJfMDg4IiwiYV8wODkiLCJiXzA5MCIsImxpZnQiLCJNIiwiaW5wdXQkMSIsInZhbHVlIiwiaW5wdXQiLCJpbnB1dCQwIiwiZXhuJDAiLCJleG4iLCJpbml0aWFsX2VtcHR5IiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwibGFzdF92YWxpZCIsImdldF9lcnJvciIsImVycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJzdHJ1Y3R1cmFsX2xpc3QiLCJvcHQiLCJjaGlsZHJlbiIsInN0aCIsIm9yaWVudGF0aW9uIiwibGF5b3V0X3N0eWxlIiwiY2hpbGQiLCJzZXhwX29mX3QiLCJjb21iaW5lIiwibGVmdCIsInJpZ2h0IiwiaW5pdCIsImVsZW1lbnQiLCJmIiwiZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQiLCJjaGFuZ2VfaGFuZGxlciIsIm5vcm1hbGl6ZWQiLCJjaGFuZ2VfaGFuZGxlciQwIiwiZXZlbnRfaWQiLCJvbl9tb3VudCIsInN0YXRlIiwiZGVzdHJveSIsInVwZGF0ZSQwIiwib2xkX2lucHV0IiwibmV3X2lucHV0IiwiY3JlYXRlIiwiaW1wbCIsInZhbHVlcyIsInNlbGVjdGVkIiwib25fY2hhbmdlIiwiZXh0cmFfYXR0cnMiLCJzdGgkMCIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInZhbHVlcyQwIiwiYV8wOTEiLCJiXzA5MiIsImFfMDkzIiwiYl8wOTQiLCJvZl9lbnVtIiwib2ZfZW51bV9vcHQiLCJhXzA5NSIsImJfMDk2IiwiYV8wOTciLCJiXzA5OCIsImltcGwkMCIsImlzX2NoZWNrZWQiLCJsYWJlbCIsIm9uX3RvZ2dsZSIsImV2Iiwic2ltcGxlIiwiaW1wbCQxIiwiaXRlbSIsIm9mX3ZhbHVlcyQwIiwib2ZfZW51bSQwIiwiaW1wbCQyIiwicmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IiLCJzdGgkMSIsInRhcmdldCIsImkiLCJvcHRpb25zIiwic2VsZWN0ZWRfdmFsdWVzIiwiaXNfc2VsZWN0ZWQiLCJ3YXNfcmVwZWF0ZWRfY2xpY2siLCJvZl92YWx1ZXMkMSIsIm9mX2VudW0kMSIsImxpc3RlbmVyIiwibm9ybWFsaXplIiwibWF5YmVfb25fcmV0dXJuIiwib25fcmV0dXJuIiwib25fcmV0dXJuJDAiLCJpbnB1dF9ub2RlIiwicGxhY2Vob2xkZXIiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwiY2FsbF9vbl9pbnB1dF93aGVuIiwic2hvdWxkX25vcm1hbGl6ZSIsInR5cGVfYXR0cnMiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm9mX3N0cmluZ2FibGUiLCJ2YWxpZGF0ZWQiLCJWIiwidmFsdWVfYXR0ciIsInRleHQiLCJudW1iZXIiLCJzdGVwIiwicmFuZ2UiLCJ0aW1lIiwiZGF0ZSIsImRhdGV0aW1lX2xvY2FsIiwidXRjX29mZnNldCIsImhvdXJzIiwiem9uZSIsInBhcnRzIiwiaHIiLCJtaW4iLCJvZmRheSIsIlpvbmVkX3RpbWUiLCJ0ZXh0X2FyZWEiLCJzdGgkMiIsImNvbG9yX3BpY2tlciIsImV4dHJhX2F0dHIiLCJ3aXRoX3ZhbGlkYXRpb24iLCJ2YWxpZGF0aW9uIiwib25fY2xpY2siLCJyZXN1bHQiLCJyZWFzb24iLCJzaW1wbGUkMCIsImJhcmVib25lc19idXR0b25fbGlrZSIsImNoZWNrZWQiLCJoaWRlX25hdGl2ZV9pbnB1dHMiLCJpbXBsJDMiLCJuYW1lIiwic3R5bGUiLCJleHRyYV9hdHRycyQwIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJvZl92YWx1ZXMkMiIsIkUiLCJvZl92YWx1ZXNfaG9yaXpvbnRhbCIsImFjY2VwdF9hdHRycyIsImFjY2VwdHMiLCJzJDAiLCJsaXN0IiwiYWNjZXB0IiwiZmlsZXMiLCJzaW5nbGUiLCJmaWxlX2xpc3QiLCJmaWxlIiwiZW1wdHkiLCJpc19lbXB0eSIsInQiLCJ6ZXJvX2JpdCIsImsiLCJtIiwibWVtIiwiaiIsInIiLCJsIiwibCQwIiwiZmluZCIsIngiLCJmaW5kX29wdCIsImZpbmRfZmlyc3Rfb3B0IiwiZiIsInJ2IiwicmsiLCJsdiIsImxrIiwidiQwIiwiZmluZF9maXJzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX2xhc3QiLCJtYXNrIiwicCIsImpvaW4iLCJ0MSIsInAxIiwidDAiLCJwMCIsIm1hdGNoX3ByZWZpeCIsImFkZCIsImlucyIsInNpbmdsZXRvbiIsInYiLCJicmFuY2giLCJ0JDAiLCJyZW1vdmUiLCJybXYiLCJjYXJkaW5hbCIsIml0ZXIiLCJtYXAiLCJtYXBpIiwiZm9sZCIsInMiLCJhY2N1IiwicyQwIiwiYWNjdSQwIiwiYWNjdSQxIiwiZm9yX2FsbCIsImV4aXN0cyIsImZpbHRlciIsInByIiwiZmlsdGVyX21hcCIsInBhcnRpdGlvbiIsInBhcnQiLCJhY2MkMCIsImNob29zZSIsImNob29zZV9vcHQiLCJzcGxpdCIsImNvbGwiLCJiIiwibWluX2JpbmRpbmciLCJicyIsImtzIiwiYnQiLCJrdCIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwiYmluZGluZ3MiLCJhY2MiLCJjb21wYXJlIiwiY21wIiwidDIiLCJjb21wYXJlX2F1eCIsInQxJDAiLCJ0MiQwIiwieDEiLCJrMSIsIngyIiwiazIiLCJjIiwicjEiLCJsMSIsIm0xIiwicjIiLCJsMiIsIm0yIiwicDIiLCJjJDAiLCJjJDEiLCJjJDIiLCJlcXVhbCIsImVxIiwiZXF1YWxfYXV4IiwibWVyZ2UiLCJhZGQkMCIsInYxIiwidjIiLCJ1cGRhdGUiLCJ6IiwidW5zaWduZWRfbHQiLCJuIiwidCQyIiwiczEiLCJzMCIsImskMCIsInEiLCJ0JDEiLCJ1bmlvbiIsInRvX3NlcSIsInByZXBlbmRfc2VxIiwibSQwIiwicyQxIiwidG9fc2VxX2Zyb20iLCJrZXkiLCJhZGRfc2VxIiwib2Zfc2VxIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwicmVhZF9qdW5rIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsImZpZWxkcyQwIiwicmVzdCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJzeW1ib2wiLCJjbHNzIiwiZGl2X2MiLCJjbHMiLCJzcGFuX2MiLCJkaXZfZW1wdHkiLCJkaXZfaWYiLCJwIiwiYXRzIiwibnMiLCJzcGFuX2lmIiwidW5sZXNzIiwiYSIsInN3YXAiLCJiIiwibWFwMiIsImYiLCJtYXAzIiwiYyIsInByaW50X3RpbWVfcHJlZml4IiwibmFtZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsInByaW50X3RpbWUiLCJwcmludF90aW1lcyIsInRpbWVzIiwibGFzdCIsImdvIiwicHJldmlvdXNfdGltZSIsInByZXZpb3VzX3RpbWUkMCIsInRpbWVzJDAiLCJ0aW1lcyQxIiwicHJldmlvdXNfdGltZSQxIiwibWVhc3VyZV90aW1lIiwibWVhc3VyZSIsIngiLCJjYXQiLCJyZW1vdmVfbnRoIiwibiIsInQiLCJyZW1vdmVfZmlyc3QiLCJyZW1vdmVfbGFzdCIsImluc2VydF9udGgiLCJzIiwic3BsaXRfbnRoIiwidG9fbGlzdCIsImkiLCJyZXBlYXQiLCJhYmJyZXZpYXRlIiwibWF4X2xlbiIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInppcCIsInkiLCJzZXF1ZW5jZSIsIm1zIiwiYWNjIiwibXMkMCIsIm0iLCJvZl9hXzAwMSIsIm9mX2FfMDAzIiwieGYiLCJtYXRjaCIsImV4biQwIiwiZXhuIiwicyQwIiwiZ2V0IiwicHV0IiwibW9kaWZ5IiwibW9kaWZ5JDAiLCJnZXQkMCIsInB1dCQwIiwibW9kaWZ5JDEiLCJtb2RpZnkkMiIsImxldCQwIiwicmVzdWx0IiwibGV0JDEiLCJtYXBfZnN0IiwibWFwX3NuZCIsImlmX25vbmUiLCJvIiwiZ2V0X29yX2ZhaWwiLCJnZXRfb3JfcmFpc2UiLCJlIiwibzEiLCJvMiIsInYyIiwidjEiLCJzb21lX2lmIiwiY29uZCIsInVuemlwIiwibCIsInhzIiwiYW5kX3RoZW4iLCJ0cF9sb2MiLCJlcnJvcl9zb3VyY2VfMDA4IiwicHAiLCJwcF92IiwiayIsInYiLCJiaW5kaW5nX29mX3NleHAiLCJvZl92XzAwMSIsInNleHBfMDA3IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInJlczBfMDA1IiwicmVzMV8wMDYiLCJzZXhwX29mX2JpbmRpbmciLCJvZl92XzAwOSIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwic2V4cF9vZl92Iiwidl9vZl9zZXhwIiwic2V4cCIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInlvanNvbiIsInYwIiwidjAkMCIsInYxJDAiLCJ5b2pzb25fb2ZfYmluZGluZyIsInlvanNvbl9vZl90IiwieW9qc29uX29mX3YiLCJ0X29mX3lvanNvbiIsInZfb2ZfeW9qc29uIiwicmV2X2lmIiwiZGVkdXAiLCJkZWR1cGVkIiwiYXJlX2R1cGxpY2F0ZXMiLCJncm91cF9ieSIsImtleSIsImdyb3VwZWQiLCJrX2dyb3VwIiwicmFuZ2UiLCJvcHQiLCJoaSIsInN0aCIsImxvIiwibWtfZnJhbWUiLCJpbnZhbGlkX2FyZyIsInhzJDAiLCJzdWZmaXgiLCJwcmVmaXgiLCJzcGxpdCIsInBvc3QiLCJ4JDAiLCJwcmUiLCJzcGxpdF9mcmFtZSIsInhzJDEiLCJzdWJqIiwib2ZfZnJhbWUiLCJzdWJqZWN0IiwiY29tYmluZV9vcHQiLCJ5cyIsInh5cyIsImlzX2VtcHR5IiwiZmxhdF9tYXAiLCJqb2luIiwic2VwIiwiaGRfb3B0IiwiaGQiLCJudGhfb3B0IiwibiQwIiwidGwiLCJuJDEiLCJzcGxpdF9uX29wdCIsInNwbGl0X24iLCJyIiwic3BsaXRfc3VibGlzdF9vcHQiLCJqIiwicmlnaHQiLCJsZWZ0IiwibWlkIiwibGVmdCQwIiwic3BsaXRfc3VibGlzdCIsInN1Ymxpc3QiLCJzcGxpdF9udGhfb3B0IiwicHV0X250aCIsInRsJDAiLCJ0bCQxIiwibWFwX250aCIsImhkJDAiLCJzcGxpdF9sYXN0X29wdCIsImxlYWRpbmciLCJzcGxpdF9sYXN0IiwibGFzdF9vcHQiLCJsZW5ndGgiLCJzcGxpdF9maXJzdF9vcHQiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfZmlyc3QiLCJmb2xkX2xlZnRfbWFwIiwic3RhcnQiLCJuZXdfYWNjIiwiZmluYWwkMCIsInRha2Vfd2hpbGUiLCJyZXN0IiwidGFrZW4iLCJwcm9kdWN0Iiwib3JkZXJlZF9wYWlycyIsIm5laWdoYm9ycyIsIngyIiwieDEiLCJtYXBfYWx0IiwiZngiLCJmeSIsImludGVybGVhdmUiLCJwX2luZGljZXMiLCJpZHhzIiwic3BsaXRzIiwiZWxlbV9zcGxpdHMiLCJyb3RhdGUiLCJzaW5nbGVfZWxlbSIsImNvdW50X3ByZWQiLCJmb3JfYWxsMl9vcHQiLCJtYXAyX29wdCIsInJlcGxpY2F0ZSIsImMkMCIsImMkMSIsIm9wdF96aXAiLCJ5cyQwIiwiemlwX2RlZmF1bHRzIiwiZGVmYXVsdF94IiwiZGVmYXVsdF95IiwieXMkMSIsInkkMCIsInVwZGF0ZV9udGgiLCJkaXNqb2ludF9wYWlycyIsImZpbmRpX29wdCIsInBhaXIiLCJpbml0X2ZvbGQiLCJlbHQiLCJhY2MkMCIsInJldl94cyIsImFzc29jX2VyciIsImVyciIsInVwZGF0ZV9hc3NvYyIsInYkMCIsImskMCIsInNwbGl0X2F0X25vbmVzIiwiYWNjcyIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsInhzJDIiLCJhY2MkNCIsImZpcnN0X2FuZF9sYXN0IiwieHNzIiwiZXJyb3Jfc291cmNlXzAwMyIsImZtdCIsInNob3ciLCJzZXhwXzAwNCIsInRvZ2dsZSIsInNpZ24iLCJjaG9vc2UiLCJkIiwibWtfb3B0IiwibWsiLCJmaW5kX21rIiwib3JpZW50IiwicHJlZml4JDAiLCJhcHBlbmQiLCJzdWZmaXgkMCIsIm51bV9kaWdpdHMiLCJtb2R1bG8iLCJpcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaXBvd19pdGVyIiwiYiQwIiwiZSQwIiwiciQwIiwiZSQxIiwiYiQxIiwiciQxIiwiZSQyIiwiYiQyIiwic2luZ2xldG9uIiwiZGlzal91bmlvbiIsIm0kMCIsImVycm9yX3NvdXJjZV8wMDUiLCJwb2x5X2wiLCJwb2x5X3IiLCJhMCIsImEwJDAiLCJvZl9sXzAwMSIsIm9mX3JfMDAyIiwidGFnXzAwOCIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwic2V4cF9hcmdzXzAwOSIsInJlczBfMDExIiwib2ZfbF8wMTkiLCJvZl9yXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJhcmcwXzAyMyIsInJlczBfMDI0Iiwib2ZfbCIsIm9mX3IiLCJ0YWciLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsImlzX0wiLCJpc19SIiwiZ2V0X0wiLCJnZXRfUiIsImVycm9yX3NvdXJjZV8wMDkiLCJwb2x5X2EiLCJwb2x5X2IiLCJhMSIsIm9mX2JfMDAyIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm9mX2FfMDEwIiwib2ZfYl8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMF8wMTQiLCJyZXMxXzAxNSIsIm9mX2EiLCJvZl9iIiwiYXMiLCJicyIsImZpcnN0X2EiLCJsYXN0X2EiLCJyZXYiLCJyZXZfYSIsInJldl9iIiwiY29ucyIsInNub2MiLCJnZXRfYXMiLCJnZXRfYnMiLCJhYmFfdHJpcGxlcyIsImFiYSIsImEyIiwibWFwX2EiLCJmX2EiLCJtYXBfYiIsImZfYiIsIm1hcF9hYmFzIiwiZl9hYmEiLCJ0cmltIiwiYXMkMCIsImFzJDEiLCJjcyIsImZvbGRfbGVmdCIsImZfYmEiLCJtYXBwZWQiLCJmb2xkX3JpZ2h0IiwiZl9hYiIsImVxdWFsIiwieCIsInkiLCJjb21wYXJlIiwidG9faW50IiwicHAiLCJpbnRlcnNlY3QiLCJzeW1ib2wiLCJkdW1teSIsImluZXhpc3RhbnQiLCJsZXR0ZXIiLCJub3RfbGV0dGVyIiwibmV3bGluZSIsImxhc3RuZXdsaW5lIiwic2VhcmNoX2JvdW5kYXJ5IiwiZnJvbV9jaGFyIiwic2V4cCIsImZtdCIsInMiLCJwYWlyIiwicHAxIiwicHAyIiwidjIiLCJ2MSIsInRyaXBsZSIsInBwMyIsInYzIiwib3B0aW50IiwiaSIsInF1b3RlIiwicHBfb2xpc3QiLCJwcF9lbGVtIiwicHBfc3RyX2xpc3QiLCJ0b190b19zdHJpbmciLCJiIiwiY2FueSIsInVuaW9uIiwibCQwIiwibCIsImwkMiIsImwkMSIsInIiLCJjMiIsImMxIiwiciQwIiwiYzIkMCIsImMxJDAiLCJsJDMiLCJsJDQiLCJpbnRlciIsImRpZmYiLCJyJDEiLCJzaW5nbGUiLCJjIiwiYWRkIiwic2VxIiwiYyQwIiwib2Zmc2V0IiwibyIsImVtcHR5IiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwibWVyZ2VfbWFya3Nfb2Zmc2V0Iiwib2xkIiwibnciLCJtZXJnZSIsIm0iLCJhY2N1JDEiLCJhY2N1JDIiLCJhIiwiYWNjdSQwIiwiaWR4IiwibWFya3MiLCJtYXJrc19zZXRfaWR4IiwicHBfbWFya3MiLCJwcF9zZW0iLCJrIiwicHBfcmVwX2tpbmQiLCJlIiwiZSQwIiwiZSQxIiwiZSQyIiwiayQwIiwiZSQzIiwiaSQwIiwiZmlyc3QiLCJyZXMiLCJjcmVhdGVfaWRzIiwibWtfZXhwciIsImlkcyIsImRlZiIsImVtcHR5JDAiLCJjc3QiLCJhbHQiLCJraW5kIiwiaXNfZXBzIiwiZXhwciIsImVwcyIsInJlcCIsInNlbSIsIm1hcmsiLCJwbWFyayIsImVyYXNlIiwibSQwIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZW5hbWUiLCJ6IiwieSQwIiwiZyIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsInIxIiwiZTEiLCJsMSQxIiwicjIiLCJlMiIsImwyJDEiLCJyMSQwIiwiZTEkMCIsIm1hcmtzMSIsInIyJDAiLCJlMiQwIiwibWFya3MyIiwicjEkMSIsIm1hcmtzMSQwIiwicjIkMSIsIm1hcmtzMiQwIiwiaGFzaCQwIiwibWFya3MkMCIsImFjY3UkMyIsInRzZXEiLCJwcmludF9zdGF0ZV9yZWMiLCJwcmludF9zdGF0ZV9sc3QiLCJwcCQwIiwibWsiLCJjYXQiLCJkZXNjIiwiY3JlYXRlIiwiZXF1YWwkMCIsImhhc2gkMSIsImNyZWF0ZV93b3JraW5nX2FyZWEiLCJpbmRleF9jb3VudCIsInciLCJtYXJrX3VzZWRfaW5kaWNlcyIsInRibCIsImZyZWVfaW5kZXgiLCJ0YmxfcmVmIiwibGVuIiwiaWR4JDAiLCJyZW1vdmVfbWF0Y2hlcyIsInNwbGl0X2F0X21hdGNoIiwicmVtb3ZlX2R1cGxpY2F0ZXMiLCJwcmV2IiwicHJldiQwIiwicHJldiQxIiwicHJldiQyIiwiciQyIiwiciQzIiwieCQxIiwicHJldiQzIiwiciQ0Iiwic2V0X2lkeCIsImZpbHRlcl9tYXJrcyIsImRlbHRhXzEkMCIsIm5leHRfY2F0IiwicHJldl9jYXQiLCJkZWx0YV8yJDAiLCJkZWx0YV8xIiwiZGVsdGFfc2VxJDAiLCJ5JDEiLCJraW5kJDAiLCJyZXBfa2luZCIsInkkMiIsIm1hcmtzJDEiLCJ5JDMiLCJtYXJrcyQyIiwiY2F0JDAiLCJtYXJrcyQzIiwiZGVsdGFfMiIsImRlbHRhX3NlcSIsImRlbHRhXzQiLCJyZW0kMCIsImRlbHRhIiwiY2hhciQwIiwic3QiLCJleHByJDAiLCJyZWRfdHIiLCJ0cjIiLCJzdDIiLCJzMiIsInRyMSIsInN0MSIsInMxIiwicHJlcGVuZF9kZXJpdiIsInJlc3RyaWN0IiwicyQxIiwicHJlcGVuZF9tYXJrc19leHByX2xzdCIsIm0kMSIsImRlcml2XzEkMCIsImFsbF9jaGFycyIsImNhdGVnb3JpZXMiLCJyZW0kMSIsImRlcml2XzIkMCIsImRlcml2XzEiLCJkZXJpdl9zZXEiLCJ6JDAiLCJyZW0kMiIsImNhdCQxIiwiZGVyaXZfMiIsInhsIiwieiQxIiwiZGVyaXZfNCIsImRlcml2IiwiZGVyIiwiZXhwciQxIiwic3RhdHVzIiwibWEiLCJzdCQwIiwibWFrZSIsImZsYXR0ZW4iLCJjbSIsImNvbG9yX3JlcHIiLCJzcGxpdCIsImR1bW15X29mZnNldCIsIm0xIiwicDEiLCJwMiIsImdldCIsInN0YXJ0Iiwic3VicyIsInN0b3AiLCJ0ZXN0IiwiZ2V0X29wdCIsImFsbF9vZmZzZXQiLCJhbGwiLCJvZmZzZXRzIiwic3RycyIsIm1hdGNoZXMiLCJwcF9tYXRjaCIsInN0ciIsIm5iX2dyb3VwcyIsIm4iLCJuJDAiLCJ2JDAiLCJ2JDEiLCJuJDEiLCJ1bmtub3duIiwiYnJlYWskMCIsInBwX3JlIiwicmUiLCJncm91cF9jb3VudCIsImdyb3VwX25hbWVzIiwiY2F0ZWdvcnkiLCJjb2xvciIsImR1bW15X25leHQiLCJ1bmtub3duX3N0YXRlIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvbCIsImVvbCIsImJvdyIsImVvdyIsIndvcmQiLCJub3RfYm91bmRhcnkiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsZW9sIiwibG9uZ2VzdCIsInNob3J0ZXN0Iiwibm9uX2dyZWVkeSIsImdyb3VwIiwibm9fZ3JvdXAiLCJuZXN0Iiwic2V0IiwicmciLCJjb21wbCIsImFueSIsIm5vdG5sIiwibG93ZXIiLCJ1cHBlciIsImFscGhhIiwiZGlnaXQiLCJhbG51bSIsIndvcmRjIiwiYXNjaWkiLCJibGFuayIsImNudHJsIiwiZ3JhcGgiLCJwcmludCIsInB1bmN0Iiwic3BhY2UiLCJ4ZGlnaXQiLCJjYXNlJDAiLCJub19jYXNlIiwiY29tcGlsZSIsInJlZ2V4cCQwIiwicmVnZXhwIiwibG5sIiwiY29sb3JpemUiLCJyZWdleHAkMSIsInJlZ2V4cCQyIiwibmVlZF9sbmwiLCJuY29sb3IiLCJjb2xvcnMiLCJsbmwkMCIsIm5jb2xvciQwIiwiaW5pdGlhbCIsImV4ZWNfaW50ZXJuYWwiLCJzdGgiLCJzdGgkMCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwic3RoJDEiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInN0aCQyIiwicGVyaW9kIiwic3RoJDMiLCJleHBhbmRfYnJhY2VzIiwic3RoJDQiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9zbGFzaCQwIiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5IiwiZW5jbG9zZWRfc2V0JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsIm5ld19zdG9yZSIsImNvcHkiLCJtYWtlIiwicyIsInYiLCJmaW5kIiwieCIsInkiLCJ6IiwibGlua190b196IiwiaXNfcmVwcmVzZW50YXRpdmUiLCJlcSIsImdldCIsIngkMCIsInYkMSIsInYkMCIsInNldCIsInIkMSIsInIkMCIsInIiLCJ1bmlvbiIsInkkMCIsInZ4IiwicngiLCJyeSIsIm1lcmdlIiwiZiIsInZ5IiwibGluayIsIm1hdGNoIiwicm9vdHgiLCJyb290eSIsImNoZWNrIiwiY29tcGFyZSIsImN1cnJlbnQiLCJzdGFjayIsImNvbW1pdCIsInJvbGxiYWNrIiwidGVudGF0aXZlbHkiLCJiJDAiLCJlJDAiLCJlIiwiYiIsImRlZmF1bHRfaW5pdGlhbF9sZW5ndGgiLCJjb250ZW50IiwibGVuZ3RoIiwibGVuZ3RoJDAiLCJjb250ZW50JDAiLCJlcnJvcl9zb3VyY2VfMDA4IiwidHBfbG9jIiwic2V4cF9vZl90IiwidCIsInRfb2Zfc2V4cCIsInMiLCJ5b2pzb25fb2ZfdCIsInRfb2ZfeW9qc29uIiwibWsiLCJjb21wYXJlIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicHAiLCJmIiwiaWQiLCJzaG93IiwiYmluZGluZ19vZl9zZXhwIiwib2Zfdl8wMDEiLCJzZXhwXzAwNyIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNSIsInJlczFfMDA2Iiwic2V4cF9vZl9iaW5kaW5nIiwib2Zfdl8wMDkiLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInlvanNvbiIsInYxIiwidjAiLCJ2MCQwIiwidjEkMCIsInlvanNvbl9vZl9iaW5kaW5nIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3YiLCJtYXAiLCJ0X29mX3NleHAkMCIsInZfb2Zfc2V4cCIsInNleHAiLCJ5b2pzb25fb2ZfdCQwIiwieW9qc29uX29mX3YiLCJ0X29mX3lvanNvbiQwIiwidl9vZl95b2pzb24iLCJqc29uIiwicHAkMCIsInBwX3YiLCJmbXQiLCJ2IiwiayIsImludmFsaWQiLCJudWxsYXJ5X2FwX2ZsYWciLCJpc19udWxsYXJ5X2FwX2ZsYWciLCJpZHMiLCJpbml0IiwicnJlZiIsImFkZCQwIiwiYSIsInIiLCJnZXQiLCJnZXRfb3B0Iiwic2V0IiwibWVyZ2UkMCIsImlkJDAiLCJ4IiwibWF4IiwidW5xdW90ZSIsImFwIiwibmVnIiwicG93ZXIiLCJtdWx0IiwicGx1cyIsImNvbnMiLCJjb25jYXQiLCJlcXMiLCJhbmQiLCJvciIsImFubiIsImlmJDAiLCJmdW4iLCJwcm9kIiwic2VtaSIsImxldCQwIiwiZmlsdGVyIiwicnVsZV9hcnIiLCJydWxlX3ByZSIsInJ1bGVfc2VwIiwiY2FzZSQwIiwibWluIiwicDEiLCJwMiIsImFzc29jaWF0aXZpdHlfbWFwIiwiYXNzb2NpYXRpdml0eSIsInAiLCJlcnJvcl9zb3VyY2VfMDAzIiwiYWxsIiwic2V4cF8wMDQiLCJyb290IiwiY29uc2lzdGVudCIsInMkMCIsInRvX3N0cmluZ192ZXJib3NlIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwiXzAiLCJhMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5IiwicmVzMF8wMTEiLCJ0YWciLCJ5b2pzb25fYXJncyIsImNvbmNhdmUiLCJwJDAiLCJwJDEiLCJmaXRzIiwibCIsImZpdHRpbmciLCJmbGlwIiwiYWJzb2x1dGUiLCJkIiwicmVsYXRpdmUiLCJuaWIiLCJzaWRlIiwic2hvdyQwIiwiXzEiLCJfMCQwIiwic2V4cF8wMTMiLCJmaWVsZF9zZXhwc18wMTQiLCJzaGFwZV8wMTUiLCJzb3J0XzAxNyIsImR1cGxpY2F0ZXNfMDE5IiwiZXh0cmFfMDIwIiwiaXRlcl8wMjciLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZ2YWx1ZV8wMjQiLCJmaWVsZF9zZXhwXzAyMiQxIiwiZnZhbHVlXzAyNSIsInNvcnRfMDE4Iiwic2hhcGVfMDE2Iiwic29ydF8wMzMiLCJzaGFwZV8wMzEiLCJhcmdfMDM0IiwiYm5kc18wMzAiLCJhcmdfMDMyIiwiYm5kc18wMzAkMCIsImZpZWxkX3lvanNvbnMiLCJzaGFwZV9maWVsZCIsInNvcnRfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJpdGVyIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInNvcnRfdmFsdWUiLCJzaGFwZV92YWx1ZSIsInZfc29ydCIsInZfc2hhcGUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJzaGFwZSIsIm4iLCJmaXRzJDAiLCJmaXR0aW5nJDAiLCJmbGlwJDAiLCJlcnJvcl9zb3VyY2VfMDE5IiwicHBfc2hhcGUiLCJzaG93X3NoYXBlIiwic2hhcGVfb2Zfc2V4cCIsInNleHBfb2Zfc2hhcGUiLCJzaGFwZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2hhcGUiLCJzZXhwXzAwNiIsImZpZWxkX3NleHBzXzAwNyIsImlkXzAwOCIsInNoYXBlXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwiaXRlcl8wMjAiLCJzZXhwXzAwNiQwIiwiZmllbGRfc2V4cHNfMDE2IiwiZmllbGRfbmFtZV8wMTQiLCJ0YWlsXzAyMSIsImZpZWxkX3NleHBfMDE1JDIiLCJmaWVsZF9zZXhwXzAxNSIsInhfMDIyIiwiZmllbGRfc2V4cF8wMTUkMCIsImZ2YWx1ZV8wMTciLCJmaWVsZF9zZXhwXzAxNSQxIiwiZnZhbHVlXzAxOCIsInNoYXBlXzAxMSIsImlkXzAwOSIsInNoYXBlXzAyNiIsImlkXzAyNCIsImFyZ18wMjciLCJibmRzXzAyMyIsImFyZ18wMjUiLCJibmRzXzAyMyQwIiwiaWRfZmllbGQiLCJpZF92YWx1ZSIsInZfaWQiLCJnIiwic2hhcGVzIiwibWtfZml0c19zaGFwZSIsImZpdHNfc2hhcGUiLCJnJDAiLCJtZXJnZSIsImdzIiwidGwiLCJoZCIsImZ0IiwibGVuZ3RoIiwicm1fbnRoIiwicm1fbGFzdCIsInJtX2ZpcnN0Iiwic3BsaXRfbnRoIiwiaW5zZXJ0X250aCIsInNlcCIsInhfMDAyIiwieF8wMDMiLCJyZXYiLCJoZF90bCIsImxibCIsImVycm9yX3NvdXJjZV8wMDciLCJhMSIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwiYXJnMV8wMDkiLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfc2hhcGVzIiwic2hvd19zaGFwZXMiLCJfMSQwIiwib2ZfaG9sZSIsInNvcnQiLCJlcnJvcl9zb3VyY2VfMDE4IiwiXzIiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsIm91dF8wMDQiLCJpbl8wMDYiLCJuaWJzXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwiaXRlcl8wMTkiLCJzZXhwXzAwMiQwIiwiZmllbGRfbmFtZV8wMTIiLCJ0YWlsXzAyMCIsImZpZWxkX3NleHBfMDEzJDMiLCJmaWVsZF9zZXhwXzAxMyIsInhfMDIxIiwiZmllbGRfc2V4cF8wMTMkMCIsImZpZWxkX3NleHBfMDEzJDEiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMiIsImZ2YWx1ZV8wMTYiLCJuaWJzXzAwOSIsImluXzAwNyIsIm91dF8wMDUiLCJuaWJzXzAyNyIsImluXzAyNSIsIm91dF8wMjMiLCJhcmdfMDI4IiwiYm5kc18wMjIiLCJhcmdfMDI2IiwiYm5kc18wMjIkMCIsImFyZ18wMjQiLCJibmRzXzAyMiQxIiwib3V0X2ZpZWxkIiwiaW5fZmllbGQiLCJuaWJzX2ZpZWxkIiwiZnZhbHVlJDEiLCJuaWJzX3ZhbHVlIiwiaW5fdmFsdWUiLCJvdXRfdmFsdWUiLCJ2X25pYnMiLCJ2X2luIiwidl9vdXQiLCJhcmckMSIsImJuZHMkMSIsImZsaXBfbmlicyIsIm0iLCJta19vcCIsIm91dCIsImluJDAiLCJta19wcmUiLCJta19wb3N0IiwibWtfYmluIiwibCQwIiwiciQwIiwibWtfcHJlJDAiLCJzb3J0X2wiLCJzb3J0X3IiLCJta19wb3N0JDAiLCJta19iaW4kMCIsIm5pYnMiLCJpbmRleCIsIm1vbGQiLCJpIiwibmliX3NoYXBlcyIsIm5pYl9yIiwibmliX2wiLCJvZl9ncm91dCIsIm4kMCIsIm9mX3NlY29uZGFyeSIsImNvbnNpc3RlbnRfc2hhcGVzIiwibXMiLCJpc19pbmZpeF9vcCIsImNoZXZyb24iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxNCIsImVycm9yX3NvdXJjZV8wMzYiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMiIsInNzIiwiaWkiLCJpcyIsImRzIiwic3BhY2UiLCJsaW5lYnJlYWsiLCJjb21tZW50X3JlZ2V4cCIsInN0cmluZ19kZWxpbSIsImtleXdvcmRzIiwicmVzZXJ2ZWRfa2V5d29yZHMiLCJib29scyIsImJhc2VfdHlwcyIsIndpbGQiLCJsaXN0X3N0YXJ0IiwibGlzdF9lbmQiLCJ0dXBsZV9zdGFydCIsInR1cGxlX2VuZCIsImV4cGxpY2l0X2hvbGUiLCJyZWdleHAiLCJwcF9sYWJlbCIsInNob3dfbGFiZWwiLCJsYWJlbF9vZl9zZXhwIiwic2V4cF9vZl9sYWJlbCIsImxhYmVsX29mX3lvanNvbiIsInlvanNvbl9vZl9sYWJlbCIsInBwX2V4cGFuc2lvbl90aW1lIiwic2hvd19leHBhbnNpb25fdGltZSIsImV4cGFuc2lvbl90aW1lX29mX3NleHAiLCJzZXhwX29mX2V4cGFuc2lvbl90aW1lIiwiZXhwYW5zaW9uX3RpbWVfb2ZfeW9qc29uIiwieW9qc29uX29mX2V4cGFuc2lvbl90aW1lIiwicHBfZXhwYW5zaW9uIiwic2hvd19leHBhbnNpb24iLCJleHBhbnNpb25fb2Zfc2V4cCIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMxXzAxMiIsInNleHBfb2ZfZXhwYW5zaW9uIiwiYXJnMV8wMTYiLCJhcmcwXzAxNSIsInJlczBfMDE3IiwicmVzMV8wMTgiLCJleHBhbnNpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2V4cGFuc2lvbiIsIl8wJDEiLCJzZXhwXzAyMCIsImZpZWxkX3NleHBzXzAyMSIsImxhYmVsXzAyMiIsImV4cGFuc2lvbl8wMjQiLCJtb2xkXzAyNiIsImR1cGxpY2F0ZXNfMDI4IiwiZXh0cmFfMDI5IiwiaXRlcl8wMzciLCJzZXhwXzAyMCQwIiwiZmllbGRfc2V4cHNfMDMyIiwiZmllbGRfbmFtZV8wMzAiLCJ0YWlsXzAzOCIsImZpZWxkX3NleHBfMDMxJDMiLCJmaWVsZF9zZXhwXzAzMSIsInhfMDM5IiwiZmllbGRfc2V4cF8wMzEkMCIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQxIiwiZnZhbHVlXzAzNSIsImZpZWxkX3NleHBfMDMxJDIiLCJmdmFsdWVfMDM0IiwibW9sZF8wMjciLCJleHBhbnNpb25fMDI1IiwibGFiZWxfMDIzIiwibW9sZF8wNDUiLCJleHBhbnNpb25fMDQzIiwibGFiZWxfMDQxIiwiYXJnXzA0NiIsImJuZHNfMDQwIiwiYXJnXzA0NCIsImJuZHNfMDQwJDAiLCJhcmdfMDQyIiwiYm5kc18wNDAkMSIsImxhYmVsX2ZpZWxkIiwiZXhwYW5zaW9uX2ZpZWxkIiwibW9sZF9maWVsZCIsIm1vbGRfdmFsdWUiLCJleHBhbnNpb25fdmFsdWUiLCJsYWJlbF92YWx1ZSIsInZfbW9sZCIsInZfZXhwYW5zaW9uIiwidl9sYWJlbCIsInBwX2JhZF90b2tlbl9jbHMiLCJzaG93X2JhZF90b2tlbl9jbHMiLCJiYWRfdG9rZW5fY2xzX29mX3NleHAiLCJzZXhwXzA1MCIsInNleHBfb2ZfYmFkX3Rva2VuX2NscyIsImJhZF90b2tlbl9jbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2JhZF90b2tlbl9jbHMiLCJleHBhbnNpb24iLCJsYWJlbCIsIm1rX2luZml4IiwicHJlYyIsImlzX2NvbW1lbnQiLCJpc19jb21tZW50X2RlbGltIiwiaXNfc2Vjb25kYXJ5IiwiaXNfc3RyaW5nIiwiZW1wdHlfc3RyaW5nIiwiaXNfc3RyaW5nX2RlbGltIiwic3RyaXBfcXVvdGVzIiwic3RyaW5nX3F1b3RlIiwiaXNfa2V5d29yZCIsImlzX3Jlc2VydmVkX2tleXdvcmQiLCJpc19wb3RlbnRpYWxfb3BlcmFuZCIsImlzX3BvdGVudGlhbF9vcGVyYXRvciIsImlzX3BvdGVudGlhbF90b2tlbiIsImlzX2FyYml0YXJ5X2ludCIsImlzX2FyYml0YXJ5X2Zsb2F0IiwiaXNfaW50Iiwic3RyIiwiaXNfYmFkX2ludCIsImlzX2Zsb2F0IiwiaXNfYmFkX2Zsb2F0IiwiaXNfYm9vbCIsImlzX3ZhciIsImlzX2NhcGl0YWxpemVkX25hbWUiLCJpc19iYXNlX3R5cCIsImlzX3dpbGQiLCJsaXN0bGl0X2xibCIsImVtcHR5X2xpc3QiLCJpc19lbXB0eV9saXN0IiwidHVwbGVfbGJsIiwiZW1wdHlfdHVwbGUiLCJpc19lbXB0eV90dXBsZSIsImR1b3NwbGl0cyIsImR1b21lcmdlcyIsImNvbnN0X21vbm9fZGVsaW1zIiwiaXNfZXhwbGljaXRfaG9sZSIsImJhZF90b2tlbl9jbHMiLCJhdG9taWNfZm9ybXMiLCJmb3JtcyIsIm5hbWUiLCJhY2MiLCJkZWxpbXMiLCJhdG9taWNfbW9sZHMiLCJtb2xkcyIsInRlc3QiLCJpc19hdG9taWMiLCJpc19kZWxpbSIsImlzX3ZhbGlkX3Rva2VuIiwibWtfYXRvbWljIiwiZXJyb3Jfc291cmNlXzAzNyIsInBwX2NscyIsInNob3dfY2xzIiwiY2xzX29mX3NleHAiLCJzZXhwX29mX2NscyIsImNsc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2xzIiwicHBfc2Vjb25kYXJ5X2NvbnRlbnQiLCJhMCQwIiwic2hvd19zZWNvbmRhcnlfY29udGVudCIsInNlY29uZGFyeV9jb250ZW50X29mX3NleHAiLCJzZXhwXzAwOSIsInRhZ18wMTAiLCJzZXhwX2FyZ3NfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNleHBfYXJnc18wMTYiLCJhcmcwXzAxNyIsInJlczBfMDE4Iiwic2V4cF9vZl9zZWNvbmRhcnlfY29udGVudCIsImFyZzBfMDE5IiwicmVzMF8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2Vjb25kYXJ5X2NvbnRlbnRfb2ZfeW9qc29uIiwieW9qc29uX2FyZ3MkMCIsInYwJDEiLCJ2MCQyIiwieW9qc29uX29mX3NlY29uZGFyeV9jb250ZW50Iiwic2V4cF8wMjQiLCJmaWVsZF9zZXhwc18wMjUiLCJpZF8wMjYiLCJjb250ZW50XzAyOCIsImR1cGxpY2F0ZXNfMDMwIiwiZXh0cmFfMDMxIiwiaXRlcl8wMzgiLCJzZXhwXzAyNCQwIiwiZmllbGRfc2V4cHNfMDM0IiwiZmllbGRfbmFtZV8wMzIiLCJ0YWlsXzAzOSIsImZpZWxkX3NleHBfMDMzJDIiLCJmaWVsZF9zZXhwXzAzMyIsInhfMDQwIiwiZmllbGRfc2V4cF8wMzMkMCIsImZ2YWx1ZV8wMzYiLCJmaWVsZF9zZXhwXzAzMyQxIiwiY29udGVudF8wMjkiLCJpZF8wMjciLCJjb250ZW50XzA0NCIsImlkXzA0MiIsImFyZ18wNDUiLCJibmRzXzA0MSIsImFyZ18wNDMiLCJibmRzXzA0MSQwIiwiY29udGVudF9maWVsZCIsImNvbnRlbnRfdmFsdWUiLCJ2X2NvbnRlbnQiLCJjbHNfb2YiLCJta19zcGFjZSIsImNvbnN0cnVjdF9jb21tZW50IiwiY29udGVudCIsImlzX3NwYWNlIiwidyIsImlzX2xpbmVicmVhayIsImNvbnRlbnRfaXNfY29tbWVudCIsImdldF9zdHJpbmciLCJlcnJvcl9zb3VyY2VfMDA1IiwiZXJyb3Jfc291cmNlXzA0NSIsInBwX3NlZ21lbnQiLCJzaG93X3NlZ21lbnQiLCJwcF9waWVjZSIsInNob3dfcGllY2UiLCJwcF90aWxlIiwic2hvd190aWxlIiwiYTAkMSIsIl8zIiwiXzIkMCIsInNlZ21lbnRfb2Zfc2V4cCIsInBpZWNlX29mX3NleHAiLCJ0aWxlX29mX3NleHAiLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsInNleHBfYXJnc18wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwic2V4cF9hcmdzXzAxNCIsInJlczBfMDE2Iiwic2V4cF8wMjMiLCJmaWVsZF9zZXhwc18wMjQiLCJpZF8wMjUiLCJsYWJlbF8wMjciLCJtb2xkXzAyOSIsInNoYXJkc18wMzEiLCJjaGlsZHJlbl8wMzMiLCJkdXBsaWNhdGVzXzAzNSIsImV4dHJhXzAzNiIsIml0ZXJfMDQ2Iiwic2V4cF8wMjMkMCIsImZpZWxkX3NleHBzXzAzOSIsImZpZWxkX25hbWVfMDM3IiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzAzOCQ1IiwiZmllbGRfc2V4cF8wMzgiLCJ4XzA0OCIsImZpZWxkX3NleHBfMDM4JDAiLCJmdmFsdWVfMDQxIiwiZmllbGRfc2V4cF8wMzgkMSIsImZ2YWx1ZV8wNDIiLCJmaWVsZF9zZXhwXzAzOCQyIiwiZnZhbHVlXzA0MyIsImZpZWxkX3NleHBfMDM4JDMiLCJmdmFsdWVfMDQ0IiwiZmllbGRfc2V4cF8wMzgkNCIsImZ2YWx1ZV8wNDAiLCJjaGlsZHJlbl8wMzQiLCJzaGFyZHNfMDMyIiwibW9sZF8wMzAiLCJsYWJlbF8wMjgiLCJzZXhwX29mX3NlZ21lbnQiLCJ4XzA0OSIsInNleHBfb2ZfcGllY2UiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwic2V4cF9vZl90aWxlIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzBfMDU0IiwicmVzMF8wNTUiLCJjaGlsZHJlbl8wNjUiLCJzaGFyZHNfMDYzIiwibW9sZF8wNjEiLCJsYWJlbF8wNTkiLCJpZF8wNTciLCJhcmdfMDY2IiwiYm5kc18wNTYiLCJhcmdfMDY0IiwiYm5kc18wNTYkMCIsImFyZ18wNjIiLCJibmRzXzA1NiQxIiwiYXJnXzA2MCIsImJuZHNfMDU2JDIiLCJhcmdfMDU4IiwiYm5kc18wNTYkMyIsInNlZ21lbnRfb2ZfeW9qc29uIiwicGllY2Vfb2ZfeW9qc29uIiwidGlsZV9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJzaGFyZHNfZmllbGQiLCJjaGlsZHJlbl9maWVsZCIsImZ2YWx1ZSQyIiwiZnZhbHVlJDMiLCJjaGlsZHJlbl92YWx1ZSIsInNoYXJkc192YWx1ZSIsInlvanNvbl9vZl9zZWdtZW50IiwieW9qc29uX29mX3BpZWNlIiwieW9qc29uX29mX3RpbGUiLCJ2X2NoaWxkcmVuIiwidl9zaGFyZHMiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwibWtfc2Vjb25kYXJ5Iiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzX2NsZWFyIiwic190b3VjaCIsInNfdG91Y2hlZCIsInBwX2V4cGFuc2lvbnMiLCJzaG93X2V4cGFuc2lvbnMiLCJleHBhbnNpb25zX29mX3NleHAiLCJ4XzAxMyIsInNleHBfMDEyIiwic2V4cF9vZl9leHBhbnNpb25zIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJyZXMxXzAxNyIsInJlczFfMDIxIiwiZXhwYW5zaW9uc19vZl95b2pzb24iLCJ2MSQxIiwidjEkMiIsInlvanNvbl9vZl9leHBhbnNpb25zIiwib2xkX21vbGRzIiwiZm9ybXNfYXNzb2MiLCJtb2xkcyQwIiwiaGQkMCIsImRlbGF5ZWRfZXhwYW5zaW9ucyIsImluc3RhbnRfZXhwYW5zaW9ucyIsImRlbGF5ZWRfZXhwYW5zaW9uIiwiaW5zdGFudF9leHBhbnNpb24iLCJpc19kZWxheWVkIiwia3ciLCJhbGxvd19tZXJnZSIsImFsbG93X2FwcGVuZF9yaWdodCIsImNoYXIkMCIsImFsbG93X2FwcGVuZF9sZWZ0IiwiYWxsb3dfaW5zZXJ0aW9uIiwibmV3X3QiLCJpc19jb21wbGV0ZSIsImxfc2hhcmQiLCJyX3NoYXJkIiwiaGFzX2VuZCIsImhhc19lbmRzIiwidG9fcGllY2UiLCJzb3J0ZWRfY2hpbGRyZW4iLCJjaGlsZHJlbiIsInNoYXJkcyIsImNoaWxkIiwiY29udGFpbmVkX2NoaWxkcmVuIiwic3BsaXRfc2hhcmRzIiwiZGlzYXNzZW1ibGUiLCJzaGFyZHMkMCIsImRpc2ludGVncmF0ZSIsInJlYXNzZW1ibGUiLCJtYXRjaCIsInBvcF9sIiwidGlsZSIsInBvcF9yIiwic2Vjb25kYXJ5IiwiZ3JvdXQiLCJmX3ciLCJmX2ciLCJmX3QiLCJuaWJfc29ydHMiLCJpc19ncm91dCIsImlzX3RpbGUiLCJtb25vdGlsZSIsImdldF9vdXRzaWRlX3NvcnRzIiwib3B0Iiwic3RoIiwiZGVmYXVsdF9zb3J0IiwibW9sZF9vZiIsImVtcHR5IiwicHBfcm9vdCIsInNob3dfcm9vdCIsIl83IiwiXzYiLCJfNSIsIl80IiwiYTEkMCIsImEyIiwiYTEkMSIsImEwJDIiLCJyb290X29mX3NleHAiLCJhcmcxXzAxNCIsInJlczBfMDE1IiwicmVzMV8wMTYiLCJhcmcxXzAyMSIsInJlczFfMDIzIiwic2V4cF9hcmdzXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJhcmcwXzAyNyIsInJlczBfMDMwIiwicmVzMV8wMzEiLCJyZXMyXzAzMiIsInhfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfb2Zfcm9vdCIsImFyZzFfMDM4IiwiYXJnMF8wMzciLCJyZXMwXzAzOSIsInJlczFfMDQwIiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwicmVzMV8wNDQiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0OCIsInJlczFfMDQ5IiwicmVzMl8wNTAiLCJ4XzA1MSIsInJvb3Rfb2ZfeW9qc29uIiwieW9qc29uX2FyZ3MkMiIsInYyIiwidjEkMyIsInYwJDUiLCJ2MCQ2IiwidjEkNCIsInYyJDAiLCJ5b2pzb25fb2Zfcm9vdCIsInBwX2lwIiwic2hvd19pcCIsInJlbCIsInQxIiwidDIiLCJsYmwxIiwibGJsMiIsImVxIiwicjEiLCJsMiIsInNoYXBlJDAiLCJwcF9za2VsIiwic2hvd19za2VsIiwiXzAkMiIsIl8xJDEiLCJfMCQzIiwicG9wX2NoYWluIiwib3B0JDAiLCJwb3BwZWQiLCJvcHQkMSIsIm9wdCQyIiwic2hhcGVzX29mX2NoYWluIiwiY2hhaW4iLCJsYXN0IiwiZmlyc3QiLCJwdXNoX291dHB1dCIsInN0YWNrcyIsInN0YWNrcyQwIiwic2h1bnRlZCIsInByZWMkMCIsInByZWMkMSIsInNwbGl0X2tpZHMkMCIsInNwbGl0X2tpZHMiLCJvdXRwdXQiLCJraWRzIiwia2lkcyQwIiwia2lkcyQxIiwib3V0cHV0JDAiLCJvdXRwdXQkMSIsImtpZHMkMiIsImtpZHMkMyIsImwkMSIsIm91dHB1dCQyIiwia2lkcyQ0IiwiciQxIiwia2lkcyQ1Iiwib3V0cHV0JDMiLCJraWRzJDYiLCJzdGFja3MkMSIsInB1c2hfc2h1bnRlZCIsImlwIiwiZmluaXNoIiwic2VnIiwiZm9sZF9yaWdodCIsIm9mX3RpbGUiLCJ0aWxlcyIsImluY29tcGxldGVfdGlsZXMiLCJjb252ZXhfZ3JvdXQiLCJjb250YWluc19tYXRjaGluZyIsInQkMCIsInJlbW92ZV9tYXRjaGluZyIsInNub2MiLCJzaGFwZV9hZmZpeCIsImFmZml4IiwiZW1wdHlfd2d3IiwiZ28iLCJ0bCQwIiwid2d3Iiwid3NzIiwid3NzJDAiLCJ3cyIsImNvbnZleCIsInNwbGl0X2J5X2dyb3V0IiwicmVtb2xkIiwicmVtb2xkX3BhdCIsInJlbW9sZF90eXAiLCJyZW1vbGRfdHBhdCIsInJlbW9sZF9ydWwiLCJyZW1vbGRfZXhwIiwicmVtb2xkX3RpbGUiLCJyZW1vbGRlZCIsImNoaWxkJDAiLCJ0cyIsInJlbW9sZF90eXBfdW5pIiwicmVzdCQwIiwic2hhcGUkMiIsInJlbW9sZGVkJDEiLCJyZW1vbGRlZCQwIiwic2hhcGUkMSIsInJlc3QiLCJyZW1vbGRfcGF0X3VuaSIsInJlc3QkMiIsInNoYXBlJDUiLCJzaGFwZSQ0IiwicmVtb2xkZWRfdHlwIiwicmVtb2xkZWRfcGF0IiwicmVzdCQxIiwic2hhcGUkMyIsInJlbW9sZF90cGF0X3VuaSIsInJlbW9sZF9leHBfdW5pIiwicmVzdCQ2Iiwic2hhcGUkOSIsInJlbW9sZGVkX2V4cCIsInJlc3QkMyIsInJlbW9sZGVkX2V4cCQwIiwicmVzdCQ0Iiwic2hhcGUkNiIsInJlbW9sZGVkX3RwYXQiLCJyZXN0JDUiLCJzaGFwZSQ3IiwicmVtb2xkZWRfZXhwJDEiLCJzaGFwZSQ4Iiwic2tlbCIsImVtcHR5JDAiLCJyZXYkMCIsImNvbnNfdyIsImNvbnNfZyIsInJtX3VwX3RvX29uZV9zcGFjZSIsIndzJDAiLCJ3c3MkMSIsImFkZF9ncm91dCIsInJlZ3JvdXQiLCJ0cmltIiwibmV3X3NwYWNlcyIsIm1lcmdlZCIsImdzJDAiLCJ0b19zZWciLCJyZWdyb3V0JDAiLCJyZWdyb3V0X2FmZml4IiwidHJpbSQwIiwiYWZmaXgkMCIsInNwbGl0X2J5X21hdGNoaW5nIiwic2VnX3IiLCJzZWdfbCIsInRyaW1fZiIsInRyaW1fbCIsInBzIiwidHJpbV9zZWNvbmRhcnkiLCJ4cyIsInhzJDAiLCJ4cyQxIiwidHJpbV9ncm91dCIsInRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCIsInRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeSIsInhzJDIiLCJlZGdlX3NoYXBlX29mIiwidHJpbW1lZCIsImVkZ2VfZGlyZWN0aW9uX29mIiwic2VyaWFsaXplIiwic2FtZWxpbmVfc2Vjb25kYXJ5IiwiZXhwZWN0ZWRfc29ydHMiLCJuX3IiLCJraWQiLCJuX2wiLCJzX2wiLCJzX3IiLCJpbnNpZGVfc29ydHMiLCJucyIsImxfc29ydCIsInJfc29ydCIsIm91dHNpZGVfc29ydHMiLCJob2xlcyIsInNlZ21lbnQiLCJnZXRfY2hpbGRyZW5zIiwiZ2V0X2luY29tcGxldGVfaWRzIiwiaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkIiwibm9fc2libGluZ3MiLCJ1bnppcCIsInppcCIsInN1ZiIsInByZSIsInNlbCIsInByZXBlbmQiLCJzaWJzcyIsInNpYnMiLCJpc19taXNtYXRjaCIsInMxIiwicHVzaCIsIm9udG8iLCJwb3AiLCJmcm9tIiwic3VmJDAiLCJwcmUkMCIsImxlZnRfbmVpZ2hib3IiLCJyaWdodF9uZWlnaGJvciIsIm5laWdoYm9ycyIsInJfc2licyIsImxfc2licyIsImRpcmVjdGlvbl9iZXR3ZWVuIiwibW9sZF9maXR0aW5nX2JldHdlZW4iLCJlcnJvcl9zb3VyY2VfMDI1IiwicHBfc3RlcCIsInNob3dfc3RlcCIsInN0ZXBfb2Zfc2V4cCIsInNleHBfb2Zfc3RlcCIsInN0ZXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXAiLCJzZXhwXzAwMyIsImZpZWxkX3NleHBzXzAwNCIsImlkXzAwNSIsImxhYmVsXzAwNyIsIm1vbGRfMDA5Iiwic2hhcmRzXzAxMSIsImNoaWxkcmVuXzAxMyIsImR1cGxpY2F0ZXNfMDE1IiwiZXh0cmFfMDE2IiwiaXRlcl8wMzYiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDE5IiwiZmllbGRfbmFtZV8wMTciLCJ0YWlsXzAzNyIsImZpZWxkX3NleHBfMDE4JDUiLCJmaWVsZF9zZXhwXzAxOCIsInhfMDM4IiwiZmllbGRfc2V4cF8wMTgkMCIsInJlczBfMDI5IiwicmVzMV8wMzAiLCJmdmFsdWVfMDMyIiwiZmllbGRfc2V4cF8wMTgkMSIsImZpZWxkX3NleHBfMDE4JDIiLCJmaWVsZF9zZXhwXzAxOCQzIiwiZmllbGRfc2V4cF8wMTgkNCIsImZ2YWx1ZV8wMjYiLCJjaGlsZHJlbl8wMTQiLCJzaGFyZHNfMDEyIiwibW9sZF8wMTAiLCJsYWJlbF8wMDgiLCJpZF8wMDYiLCJjaGlsZHJlbl8wNTIiLCJzaGFyZHNfMDQ2IiwibW9sZF8wNDQiLCJsYWJlbF8wNDIiLCJpZF8wNDAiLCJhcmcxXzA1NSIsInJlczBfMDU2IiwicmVzMV8wNTciLCJhcmdfMDUzIiwiYm5kc18wMzkiLCJhcmcxXzA0OSIsImFyZzBfMDQ4IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsImFyZ18wNDciLCJibmRzXzAzOSQwIiwiYm5kc18wMzkkMSIsImJuZHNfMDM5JDIiLCJhcmdfMDQxIiwiYm5kc18wMzkkMyIsImoiLCJraWRzX3IiLCJraWRzX2wiLCJzaGFyZHNfciIsInNoYXJkc19sIiwiZmxhdHRlbiIsImNvbnRhaW5lcl9zaGFyZHMiLCJtYXRjaF9sIiwibWF0Y2hfciIsInRfciIsInRfbCIsInBwX2dlbmVyYXRpb24iLCJzaG93X2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3NleHAiLCJzZXhwX29mX2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9nZW5lcmF0aW9uIiwieF8wMTQiLCJwYXJlbnQiLCJ6aXBfZ2VuIiwiYW5jcyIsImEkMCIsInJlZ3JvdXRlZCIsInRyaW1fciIsInRyaW1fbCQwIiwidHJpbV9yJDAiLCJwYXJlbnRfbWF0Y2hlcyIsInRpY2siLCJ0aW1lIiwibHQiLCJtYXhfdGltZSIsInVwZGF0ZSIsImVzIiwidGQiLCJlIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJlbGxpcHNpcyIsInN0b3AiLCJkaXN0YW5jZV9hdXgiLCJzdGFydCIsImNvdW50Iiwic3RhcnQkMCIsImNvdW50JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwiY291bnQkMyIsInN0YXJ0JDMiLCJzdGFydCQ0IiwiZXJyb3Jfc291cmNlXzAxNyIsInplcm8iLCJlcnJvcl9zb3VyY2VfMDQwIiwiZXJyb3Jfc291cmNlXzA1NSIsInBwX3JvdyIsInNob3dfcm93Iiwicm93X29mX3NleHAiLCJzZXhwX29mX3JvdyIsInJvd19vZl95b2pzb24iLCJ5b2pzb25fb2Zfcm93IiwicHBfY29sIiwic2hvd19jb2wiLCJjb2xfb2Zfc2V4cCIsInNleHBfb2ZfY29sIiwiY29sX29mX3lvanNvbiIsInlvanNvbl9vZl9jb2wiLCJmaWVsZF9zZXhwc18wMDUiLCJyb3dfMDA2IiwiY29sXzAwOCIsIml0ZXJfMDE4Iiwic2V4cF8wMDQkMCIsInRhaWxfMDE5IiwieF8wMjAiLCJjb2xfMDA5Iiwicm93XzAwNyIsImNvbF8wMjQiLCJyb3dfMDIyIiwiYm5kc18wMjEiLCJhcmdfMDIzIiwiYm5kc18wMjEkMCIsInJvd19maWVsZCIsImNvbF9maWVsZCIsImNvbF92YWx1ZSIsInJvd192YWx1ZSIsInZfY29sIiwidl9yb3ciLCJlcXVhbHMiLCJxIiwiY29tcCIsImN1cnJlbnQiLCJ0YXJnZXQiLCJkY29tcCIsImRpcmVjdGlvbiIsImIiLCJwcF9tZWFzdXJlbWVudCIsInNob3dfbWVhc3VyZW1lbnQiLCJtZWFzdXJlbWVudF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJvcmlnaW5fMDI5IiwibGFzdF8wMzEiLCJkdXBsaWNhdGVzXzAzMyIsImV4dHJhXzAzNCIsIml0ZXJfMDQxIiwic2V4cF8wMjckMCIsImZpZWxkX3NleHBzXzAzNyIsImZpZWxkX25hbWVfMDM1IiwidGFpbF8wNDIiLCJmaWVsZF9zZXhwXzAzNiQyIiwiZmllbGRfc2V4cF8wMzYiLCJ4XzA0MyIsImZpZWxkX3NleHBfMDM2JDAiLCJmdmFsdWVfMDM5IiwiZmllbGRfc2V4cF8wMzYkMSIsImZ2YWx1ZV8wMzgiLCJsYXN0XzAzMiIsIm9yaWdpbl8wMzAiLCJzZXhwX29mX21lYXN1cmVtZW50IiwibGFzdF8wNDciLCJvcmlnaW5fMDQ1IiwiYXJnXzA0OCIsImJuZHNfMDQ0IiwiYm5kc18wNDQkMCIsIm1lYXN1cmVtZW50X29mX3lvanNvbiIsIm9yaWdpbl9maWVsZCIsImxhc3RfZmllbGQiLCJsYXN0X3ZhbHVlIiwib3JpZ2luX3ZhbHVlIiwieW9qc29uX29mX21lYXN1cmVtZW50Iiwidl9sYXN0Iiwidl9vcmlnaW4iLCJtYXhfY29sIiwicnMiLCJtaW5fY29sIiwicHBfc2hhcmQiLCJzaG93X3NoYXJkIiwic2hhcmRfb2Zfc2V4cCIsInNleHBfMDU0IiwiYXJnMV8wNTEiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwic2V4cF9vZl9zaGFyZCIsImFyZzFfMDU3IiwiYXJnMF8wNTYiLCJyZXMwXzA1OCIsInJlczFfMDU5Iiwic2hhcmRfb2ZfeW9qc29uIiwieW9qc29uX29mX3NoYXJkIiwicHAkMSIsInRfb2Zfc2V4cCQxIiwieF8wNjEiLCJzZXhwX29mX3QkMSIsInhfMDYyIiwidF9vZl95b2pzb24kMSIsInlvanNvbl9vZl90JDEiLCJzcGxpdF9ieV9yb3ciLCJyb3dzIiwicm93IiwiYWRkX3MiLCJhZGRfdCIsImFkZF9nIiwiYWRkX3ciLCJhZGRfcCIsImFkZF9yb3ciLCJhZGRfbGIiLCJpbmRlbnQiLCJzaW5nbGV0b25fdyIsInNpbmdsZXRvbl9nIiwic2luZ2xldG9uX3MiLCJzaGFyZCIsImZpbmRfb3B0X3NoYXJkcyIsImZpbmRfc2hhcmRzIiwiZmluZF9vcHRfbGIiLCJmaW5kX3NoYXJkcyQwIiwiZmluZF93IiwiZmluZF9nIiwiZmluZF90IiwiZmluZF9wIiwiZmluZF9ieV9pZCIsIm0kMCIsInBvc3RfdGlsZV9pbmRlbnQiLCJjb21wbGV0ZV9mdW4iLCJtaXNzaW5nX3JpZ2h0X2V4dHJlbWUiLCJjb21wbGV0ZV9mdW4kMCIsIm1pc3NpbmdfbGVmdF9leHRyZW1lIiwiaXNfaW5kZW50ZWRfbWFwIiwiaXNfaW5kZW50ZWQiLCJzdGgkMCIsImlzX2luZGVudGVkJDAiLCJtYXAkMCIsIm9mX3NlZ21lbnQiLCJvbGQiLCJ0b3VjaGVkIiwiZ29fbmVzdGVkIiwiY29udGFpbmVyX2luZGVudCIsIm9yaWdpbiIsInRpbWUkMCIsInRpbWUkMSIsImZpcnN0X3RvdWNoZWRfaW5jb21wbGV0ZSIsImdvX3NlcSIsImNvbnRhaW5lZF9pbmRlbnQiLCJtYXAkNiIsInRva2VuIiwiYWRkX3NoYXJkIiwiY2hpbGRfbWFwIiwiY2hpbGRfbGFzdCIsIm1hcCQxIiwib3JpZ2luJDAiLCJjb250YWluZWRfaW5kZW50JDAiLCJsYXN0JDAiLCJtYXAkMyIsInJvd19pbmRlbnQiLCJpbmRlbnQkMCIsInRvdWNoZWQkMCIsInRvdWNoZWQkMSIsImluZGVudCQxIiwibGFzdCQxIiwibWFwJDQiLCJ3c3BhY2VfbGVuZ3RoIiwib3JpZ2luJDEiLCJtYXAkNSIsIm1hcCQyIiwidGxfbGFzdCIsInNlZ21lbnRfb3JpZ2luIiwic2VnbWVudF9sYXN0Iiwic2VnbWVudF9oZWlnaHQiLCJzZWdtZW50X3dpZHRoIiwiZXJyb3Jfc291cmNlXzAzMyIsInBwX2J1ZmZlciIsInNob3dfYnVmZmVyIiwiYnVmZmVyX29mX3NleHAiLCJzZXhwX29mX2J1ZmZlciIsImJ1ZmZlcl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYnVmZmVyIiwicHBfbW9kZSIsInNob3dfbW9kZSIsIm1vZGVfb2Zfc2V4cCIsInNleHBfb2ZfbW9kZSIsIm1vZGVfb2ZfeW9qc29uIiwieW9qc29uX29mX21vZGUiLCJzZXhwXzAxNyIsImZpZWxkX3NleHBzXzAxOCIsImZvY3VzXzAxOSIsImNvbnRlbnRfMDIxIiwibW9kZV8wMjMiLCJkdXBsaWNhdGVzXzAyNSIsImV4dHJhXzAyNiIsIml0ZXJfMDM0Iiwic2V4cF8wMTckMCIsImZpZWxkX3NleHBzXzAyOSIsImZpZWxkX25hbWVfMDI3IiwidGFpbF8wMzUiLCJmaWVsZF9zZXhwXzAyOCQzIiwiZmllbGRfc2V4cF8wMjgiLCJ4XzAzNiIsImZpZWxkX3NleHBfMDI4JDAiLCJmdmFsdWVfMDMwIiwiZmllbGRfc2V4cF8wMjgkMSIsImZpZWxkX3NleHBfMDI4JDIiLCJmdmFsdWVfMDMxIiwibW9kZV8wMjQiLCJjb250ZW50XzAyMiIsImZvY3VzXzAyMCIsIm1vZGVfMDQyIiwiY29udGVudF8wNDAiLCJmb2N1c18wMzgiLCJibmRzXzAzNyIsImJuZHNfMDM3JDAiLCJhcmdfMDM5IiwiYm5kc18wMzckMSIsImZvY3VzX2ZpZWxkIiwibW9kZV9maWVsZCIsIm1vZGVfdmFsdWUiLCJmb2N1c192YWx1ZSIsInZfbW9kZSIsInZfZm9jdXMiLCJtb2RlIiwiZm9jdXMiLCJta19idWZmZXIiLCJidWZmZXIiLCJpc19idWZmZXIiLCJidWZmZXJfaWRzIiwidG9nZ2xlX2ZvY3VzIiwic2VsZWN0aW9uIiwiaXNfZW1wdHkiLCJjb250ZW50JDAiLCJwJDIiLCJzcGxpdF9waWVjZSIsIm9yZCIsImlfciIsImlfbCIsImd0IiwidW4iLCJkaXNvcmRlcmVkIiwibHRfb3JfdW4iLCJscyIsImFkZF90aWxlIiwidHJhbl9jbG9zZSIsImtleXMiLCJtZW0iLCJleGlzdHNfbWVtIiwibWVyZ2UkMSIsImFkZF90aWxlJDAiLCJjcyIsImMiLCJjJDAiLCJpbml0JDEiLCJhZGRfc2VsIiwiY291bnRzIiwib3JkZXIiLCJwcmV2IiwiY3VyciIsInByZXYkMCIsInNoYXJkX2luZm8iLCJicCIsImluZm8iLCJzaGFyZF9pbmZvJDAiLCJwdXNoX3MiLCJmaXJzdCQwIiwicmVzdHJpY3RlZCIsIndpbGxfYmFyZiIsInJlbW92ZV91bmlfdGlsZXNfd2l0aF9kZWVwX21hdCIsImVycm9yX3NvdXJjZV8wMTUiLCJzaWJsaW5nc18wMDQiLCJhbmNlc3RvcnNfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJpdGVyXzAxNiIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJhbmNlc3RvcnNfMDA3Iiwic2libGluZ3NfMDA1IiwiYW5jZXN0b3JzXzAyMiIsInNpYmxpbmdzXzAyMCIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJzaWJsaW5nc19maWVsZCIsImFuY2VzdG9yc19maWVsZCIsImFuY2VzdG9yc192YWx1ZSIsInNpYmxpbmdzX3ZhbHVlIiwidl9hbmNlc3RvcnMiLCJ2X3NpYmxpbmdzIiwic2libGluZ3MiLCJhbmNlc3RvcnMiLCJzaWJsaW5ncyQwIiwiYW5jZXN0b3IiLCJzaWJsaW5ncyQxIiwibG9jYWxfaW5jb21wbGV0ZV90aWxlcyIsImRlbGV0ZV9wYXJlbnQiLCJhbmNlc3RvcnMkMCIsInBfc2licyIsImdzX2wiLCJnc19yIiwiZ19sIiwiZ19yIiwidHJpbV9yJDEiLCJwcmVwZW5kX2dlbmVyYXRpb24iLCJwcmVwZW5kX3NpYmxpbmdzIiwicnNzIiwiY2F0IiwicmVhc3NlbWJsZV9wYXJlbnQiLCJmbGF0dGVuX21hdGNoIiwiaW5uZXJfbCIsIm91dGVyX2wiLCJhJDEiLCJvdXRlcl9yIiwiaW5uZXJfciIsImEkMiIsImEkMyIsInJlYXNzZW1ibGVfc2libGluZ3MiLCJycyQwIiwib3V0ZXJfciQwIiwibWF0Y2hfciQwIiwiaW5uZXJfciQwIiwiZXJyb3Jfc291cmNlXzA1MSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJkZWNyZW1lbnQiLCJvZmZzZXQiLCJzZWxlY3Rpb25fMDE5IiwiYmFja3BhY2tfMDIxIiwicmVsYXRpdmVzXzAyMyIsImNhcmV0XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4IiwiZmllbGRfc2V4cHNfMDMxIiwiZmllbGRfbmFtZV8wMjkiLCJmaWVsZF9zZXhwXzAzMCQ0IiwiZmllbGRfc2V4cF8wMzAiLCJmaWVsZF9zZXhwXzAzMCQwIiwiZmllbGRfc2V4cF8wMzAkMSIsImZpZWxkX3NleHBfMDMwJDIiLCJmaWVsZF9zZXhwXzAzMCQzIiwiY2FyZXRfMDI2IiwicmVsYXRpdmVzXzAyNCIsImJhY2twYWNrXzAyMiIsInNlbGVjdGlvbl8wMjAiLCJjYXJldF8wNDciLCJyZWxhdGl2ZXNfMDQ1IiwiYmFja3BhY2tfMDQzIiwic2VsZWN0aW9uXzA0MSIsImJuZHNfMDQwJDIiLCJzZWxlY3Rpb25fZmllbGQiLCJiYWNrcGFja19maWVsZCIsInJlbGF0aXZlc19maWVsZCIsImNhcmV0X2ZpZWxkIiwiY2FyZXRfdmFsdWUiLCJyZWxhdGl2ZXNfdmFsdWUiLCJiYWNrcGFja192YWx1ZSIsInNlbGVjdGlvbl92YWx1ZSIsInZfY2FyZXQiLCJ2X3JlbGF0aXZlcyIsInZfYmFja3BhY2siLCJ2X3NlbGVjdGlvbiIsIm5leHRfYmxhbmsiLCJwcF9jaHVua2luZXNzIiwic2hvd19jaHVua2luZXNzIiwiY2h1bmtpbmVzc19vZl9zZXhwIiwic2V4cF8wNTIiLCJzZXhwX29mX2NodW5raW5lc3MiLCJjaHVua2luZXNzX29mX3lvanNvbiIsInlvanNvbl9vZl9jaHVua2luZXNzIiwicHBfcGxhbmFyIiwic2hvd19wbGFuYXIiLCJwbGFuYXJfb2Zfc2V4cCIsInNleHBfMDU3IiwidGFnXzA1OCIsInNleHBfYXJnc18wNjQiLCJhcmcwXzA2NSIsInJlczBfMDY2Iiwic2V4cF9hcmdzXzA1OSIsImFyZzBfMDYwIiwicmVzMF8wNjEiLCJzZXhwX29mX3BsYW5hciIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJhcmcwXzA2OSIsInJlczBfMDcwIiwicGxhbmFyX29mX3lvanNvbiIsInlvanNvbl9vZl9wbGFuYXIiLCJmcm9tX3BsYW5lIiwidXBkYXRlX2NhcmV0IiwieiIsInNldF9jYXJldCIsImNhcmV0IiwidXBkYXRlX3JlbGF0aXZlcyIsInVwZGF0ZV9zaWJsaW5ncyIsInNpYnNfd2l0aF9zZWwiLCJwb3BfYmFja3BhY2siLCJsZWZ0X25laWdoYm9yX21vbm90aWxlIiwicmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUiLCJuZWlnaGJvcl9tb25vdGlsZXMiLCJyZWxhdGl2ZXMiLCJyZW1vbGRfcmVncm91dCIsImNsZWFyX3VucGFyc2VkX2J1ZmZlciIsInVuc2VsZWN0IiwiZXJhc2VfYnVmZmVyIiwieiQwIiwidW5zZWxlY3RfYW5kX3ppcCIsInVwZGF0ZV9zZWxlY3Rpb24iLCJwdXRfc2VsZWN0aW9uIiwiZ3Jvd19zZWxlY3Rpb24iLCJzaHJpbmtfc2VsZWN0aW9uIiwic2VsZWN0aW9uJDAiLCJkaXJlY3Rpb25hbF91bnNlbGVjdCIsIm1vdmUiLCJyZWxhdGl2ZXMkMCIsInNlbGVjdCIsInBpY2tfdXAiLCJzZWxlY3RlZCIsImJhY2twYWNrIiwiZGVzdHJ1Y3QiLCJkZXN0cm95X2tpZHMiLCJ0b19yZW1vdmUiLCJ0b19waWNrX3VwIiwidG9fcGlja191cCQwIiwiYmFja3BhY2skMCIsImRlbGV0ZSQwIiwicHV0X2Rvd24iLCJjb25zdHJ1Y3QiLCJsYWJlbCQwIiwibGFiZWwkMSIsInokMSIsInNlbGVjdGlvbnMkMCIsImJhY2twYWNrJDEiLCJjb250ZW50JDEiLCJpZCQxIiwic2VsZWN0aW9ucyIsImNvbnN0cnVjdF9tb25vIiwicmVwbGFjZSIsInJlcGxhY2VfbW9ubyIsInJlcHJlc2VudGF0aXZlX3BpZWNlIiwiY2FyZXRfZGlyZWN0aW9uIiwiYmFzZV9wb2ludCIsIm1lYXN1cmVkIiwiY2FyZXRfcG9pbnQiLCJjb2wiLCJkZXNlcmlhbGl6ZSIsImRhdGEiLCJjYW5fcHV0X2Rvd24iLCJzZXRfYnVmZmVyIiwiaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0IiwidHJ5X3RvX2R1bXBfYmFja3BhY2siLCJ6aXBwZXIiLCJ6aXBwZXIkMCIsIm1vdmVfdW50aWxfY2FudF9wdXRfZG93biIsInpfbGFzdCIsInpfbGFzdCQxIiwiel9sYXN0JDAiLCJ6X25ldyIsIm1vdmVfdW50aWxfY2FuX3B1dF9kb3duIiwiel9jYW4iLCJ6JDIiLCJ6X2NhbiQwIiwiel9jYW4kMSIsInokMyIsInokNCIsInNtYXJ0X3NlZyIsImR1bXBfYmFja3BhY2siLCJzZWdfZm9yX3ZpZXciLCJzZWdfZm9yX3NlbSIsInNlZ193aXRob3V0X2J1ZmZlciIsInBwX3QiLCJzaG93X3QiLCJwb2x5X2EiLCJvZl9hXzAwMSIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxNSIsImFyZzFfMDEyIiwiYXJnMF8wMTEiLCJyZXMxXzAxNCIsIm9mX2EiLCJleHRlbmQiLCJjdHgiLCJ4YSIsIm5ld19jdHgiLCJsb29rdXAiLCJjb250YWlucyIsInRvX2xpc3QiLCJmaW5kX21hcCIsImN0eCQwIiwiaXNfTGV0IiwiaXNfQ2FzZSIsImlzX0Z1biIsImlzX1Rlc3QiLCJ0ZXh0Iiwic2V4cF8wMTYiLCJ0YWdfMDE3Iiwic2V4cF9hcmdzXzAxOCIsImFyZzFfMDIwIiwicmVzMV8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImVxdWFsIiwicHBfYmluZGluZyIsInNob3dfYmluZGluZyIsIm9mX2FfMDA5Iiwib2ZfYV8wMTQiLCJ4XzAxNiIsIm9mX2FfMDE3IiwiYWRkIiwiY3RyIiwidmFsdWUiLCJoZWFkIiwidmFsdWUkMCIsImN0ciQwIiwic2luZ2xldG9uIiwiY29tcGFyZV9iaW5kaW5ncyIsImN0cjIiLCJjdHIxIiwidmFsX2VxdWFsIiwibWFwMSIsIm1hcDIiLCJlcXVhbF9iaW5kaW5ncyIsInZhbDIiLCJ2YWwxIiwibWFwMSQwIiwibWFwMiQwIiwiY2FyZGluYWwiLCJjdHJzX29mIiwic2FtZV9jb25zdHJ1Y3RvcnNfc2FtZV9vcmRlciIsImN0cnNfZXF1YWwiLCJjdHJzMSIsImN0cnMyIiwiZm9yX2FsbCIsImJpbmRpbmdzIiwiZmluZF9vcHQiLCJiaW5kaW5nIiwidmFscyIsImN0cnMiLCJ2YWxzJDAiLCJvZl9saXN0IiwiaXNfZ3JvdW5kIiwiaXNfZ3JvdW5kX3ZhbHVlIiwidmFsaWRfcmVnZXgiLCJpc192YWxpZCIsImNoZWNrX3ZhbGlkIiwicmVzdWx0IiwiaXNfdHJ1ZSIsImlzX2ZhbHNlIiwiaXNfbGV0IiwiaXNfZnVuIiwiaXNfY2FzZSIsInNwbGl0IiwicG9zIiwibGVmdF92YXIiLCJyaWdodF92YXIiLCJ5IiwiZXJyb3Jfc291cmNlXzA5MyIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTQ3IiwidHBfbG9jJDMiLCJlcnJvcl9zb3VyY2VfMTYwIiwidHBfbG9jJDQiLCJlcnJvcl9zb3VyY2VfMTg4IiwidHBfbG9jJDUiLCJwcF90eXBlX3Byb3ZlbmFuY2UiLCJzaG93X3R5cGVfcHJvdmVuYW5jZSIsInByZWNlZGVuY2VfUHJvZCIsInByZWNlZGVuY2VfQXJyb3ciLCJwcmVjZWRlbmNlX1N1bSIsInByZWNlZGVuY2VfQ29uc3QiLCJ0eXBlX3Byb3ZlbmFuY2Vfb2Zfc2V4cCIsInNleHBfb2ZfdHlwZV9wcm92ZW5hbmNlIiwidHlwZV9wcm92ZW5hbmNlX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBlX3Byb3ZlbmFuY2UiLCJwcF9zdW1fbWFwIiwic2hvd19zdW1fbWFwIiwiXzgiLCJhMCQzIiwiYTAkNCIsImEwJDUiLCJzdW1fbWFwX29mX3NleHAiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfYXJnc18wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMV8wNTQiLCJzZXhwX2FyZ3NfMDQwIiwicmVzMF8wNDIiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMF8wMjQiLCJzZXhwX2FyZ3NfMDMzIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczFfMDM3Iiwic2V4cF9hcmdzXzAyOCIsImFyZzBfMDI5IiwieF8wNTYiLCJhcmcwXzA1NyIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMV8wNjQiLCJhcmcwXzA2MyIsInJlczBfMDY1IiwicmVzMV8wNjYiLCJzZXhwX29mX3N1bV9tYXAiLCJhcmcxXzA3MiIsImFyZzBfMDcxIiwicmVzMF8wNzMiLCJyZXMxXzA3NCIsInhfMDc1Iiwic3VtX21hcF9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQzIiwidjAkNyIsInYwJDgiLCJ5b2pzb25fYXJncyQ1IiwidjAkMTEiLCJ2MCQxMiIsInlvanNvbl9hcmdzJDQiLCJ2MCQ5IiwidjAkMTAiLCJ5b2pzb25fb2Zfc3VtX21hcCIsInBwX3N1bV9lbnRyeSIsInNob3dfc3VtX2VudHJ5Iiwic3VtX2VudHJ5X29mX3NleHAiLCJ4XzA3NyIsInNleHBfb2Zfc3VtX2VudHJ5IiwieF8wNzgiLCJzdW1fZW50cnlfb2ZfeW9qc29uIiwieW9qc29uX29mX3N1bV9lbnRyeSIsInBwX3NvdXJjZSIsInNob3dfc291cmNlIiwiXzEkMiIsInNvdXJjZV9vZl9zZXhwIiwic2V4cF8wODAiLCJmaWVsZF9zZXhwc18wODEiLCJpZF8wODIiLCJ0eV8wODQiLCJkdXBsaWNhdGVzXzA4NiIsImV4dHJhXzA4NyIsIml0ZXJfMDk0Iiwic2V4cF8wODAkMCIsImZpZWxkX3NleHBzXzA5MCIsImZpZWxkX25hbWVfMDg4IiwidGFpbF8wOTUiLCJmaWVsZF9zZXhwXzA4OSQyIiwiZmllbGRfc2V4cF8wODkiLCJ4XzA5NiIsImZpZWxkX3NleHBfMDg5JDAiLCJmdmFsdWVfMDkxIiwiZmllbGRfc2V4cF8wODkkMSIsImZ2YWx1ZV8wOTIiLCJ0eV8wODUiLCJpZF8wODMiLCJzZXhwX29mX3NvdXJjZSIsInR5XzEwMCIsImlkXzA5OCIsImFyZ18xMDEiLCJibmRzXzA5NyIsImFyZ18wOTkiLCJibmRzXzA5NyQwIiwic291cmNlX29mX3lvanNvbiIsInR5X2ZpZWxkIiwidHlfdmFsdWUiLCJ5b2pzb25fb2Zfc291cmNlIiwidl90eSIsInNvdXJjZSIsIm9mX3NvdXJjZSIsImpvaW5fdHlwZV9wcm92ZW5hbmNlIiwidHYxIiwidHYyIiwicHJlY2VkZW5jZSIsInR5Iiwic3Vic3QiLCJwcm92IiwidHkkMCIsInR5MiIsInR5MSIsInNtIiwidHlzIiwieSQwIiwidHkkMSIsInR5JDIiLCJ1bnJvbGwiLCJ0eV9ib2R5IiwidDEkMCIsInQyJDAiLCJuMSIsIm4yIiwidDEkMSIsInQyJDEiLCJ0MSQyIiwidDIkMiIsInQxJDMiLCJ0MiQzIiwic20xIiwic20yIiwidHlzMSIsInR5czIiLCJ4MSIsInQyJDQiLCJ4MiIsInQxJDQiLCJ0MiQ1IiwiZnJlZV92YXJzIiwiYm91bmQiLCJ0eXAiLCJqb2luIiwiZml4IiwicmVzb2x2ZSIsImpvaW4kMCIsInR5X2pvaW4iLCJ0eTEkMCIsInR5MiQwIiwidHkyJDEiLCJ0eTEkMSIsInR5MiQyIiwidHkxJDIiLCJzb3J0ZWQyIiwic29ydGVkMSIsInNvcnRlZDIkMCIsInNvcnRlZDEkMCIsImpvaW5fc3VtX2VudHJpZXMiLCJ0eTEkMyIsInR5MiQzIiwidHlfbmFtZSIsImpvaW5fZml4Iiwiam9pbl9hbGwiLCJpc19jb25zaXN0ZW50Iiwid2Vha19oZWFkX25vcm1hbGl6ZSIsIm5vcm1hbGl6ZSIsInRzJDAiLCJtYXRjaGVkX2Fycm93IiwidHlfb3V0IiwidHlfaW4iLCJtYXRjaGVkX3Byb2QiLCJtYXRjaGVkX2xpc3QiLCJzdW1fZW50cnkiLCJnZXRfc3VtX2NvbnN0cnVjdG9ycyIsInR5X2JvZHkkMCIsInNtJDAiLCJpc191bmtub3duIiwicHBfdmFyX2VudHJ5Iiwic2hvd192YXJfZW50cnkiLCJfMSQzIiwiXzAkNCIsInZhcl9lbnRyeV9vZl9zZXhwIiwic2V4cF8xMDMiLCJmaWVsZF9zZXhwc18xMDQiLCJuYW1lXzEwNSIsImlkXzEwNyIsInR5cF8xMDkiLCJkdXBsaWNhdGVzXzExMSIsImV4dHJhXzExMiIsIml0ZXJfMTIwIiwic2V4cF8xMDMkMCIsImZpZWxkX3NleHBzXzExNSIsImZpZWxkX25hbWVfMTEzIiwidGFpbF8xMjEiLCJmaWVsZF9zZXhwXzExNCQzIiwiZmllbGRfc2V4cF8xMTQiLCJ4XzEyMiIsImZpZWxkX3NleHBfMTE0JDAiLCJmdmFsdWVfMTE2IiwiZmllbGRfc2V4cF8xMTQkMSIsImZ2YWx1ZV8xMTgiLCJmaWVsZF9zZXhwXzExNCQyIiwiZnZhbHVlXzExNyIsInR5cF8xMTAiLCJpZF8xMDgiLCJuYW1lXzEwNiIsInNleHBfb2ZfdmFyX2VudHJ5IiwidHlwXzEyOCIsImlkXzEyNiIsIm5hbWVfMTI0IiwiYXJnXzEyOSIsImJuZHNfMTIzIiwiYXJnXzEyNyIsImJuZHNfMTIzJDAiLCJhcmdfMTI1IiwiYm5kc18xMjMkMSIsInZhcl9lbnRyeV9vZl95b2pzb24iLCJuYW1lX2ZpZWxkIiwidHlwX2ZpZWxkIiwidHlwX3ZhbHVlIiwibmFtZV92YWx1ZSIsInlvanNvbl9vZl92YXJfZW50cnkiLCJ2X3R5cCIsInZfbmFtZSIsInBwX3R2YXJfZW50cnkiLCJzaG93X3R2YXJfZW50cnkiLCJfMiQxIiwiXzEkNCIsIl8wJDUiLCJ0dmFyX2VudHJ5X29mX3NleHAiLCJzZXhwXzEzMSIsImZpZWxkX3NleHBzXzEzMiIsIm5hbWVfMTMzIiwiaWRfMTM1Iiwia2luZF8xMzciLCJkdXBsaWNhdGVzXzEzOSIsImV4dHJhXzE0MCIsIml0ZXJfMTQ4Iiwic2V4cF8xMzEkMCIsImZpZWxkX3NleHBzXzE0MyIsImZpZWxkX25hbWVfMTQxIiwidGFpbF8xNDkiLCJmaWVsZF9zZXhwXzE0MiQzIiwiZmllbGRfc2V4cF8xNDIiLCJ4XzE1MCIsImZpZWxkX3NleHBfMTQyJDAiLCJmdmFsdWVfMTQ2IiwiZmllbGRfc2V4cF8xNDIkMSIsImZ2YWx1ZV8xNDQiLCJmaWVsZF9zZXhwXzE0MiQyIiwiZnZhbHVlXzE0NSIsImtpbmRfMTM4IiwiaWRfMTM2IiwibmFtZV8xMzQiLCJzZXhwX29mX3R2YXJfZW50cnkiLCJraW5kXzE1NiIsImlkXzE1NCIsIm5hbWVfMTUyIiwiYXJnXzE1NyIsImJuZHNfMTUxIiwiYXJnXzE1NSIsImJuZHNfMTUxJDAiLCJhcmdfMTUzIiwiYm5kc18xNTEkMSIsInR2YXJfZW50cnlfb2ZfeW9qc29uIiwia2luZF9maWVsZCIsImtpbmRfdmFsdWUiLCJ5b2pzb25fb2ZfdHZhcl9lbnRyeSIsInZfa2luZCIsInBwX2VudHJ5Iiwic2hvd19lbnRyeSIsIl8yJDIiLCJfMSQ1IiwiXzAkNiIsImVudHJ5X29mX3NleHAiLCJzZXhwXzE2MiIsInRhZ18xNjMiLCJzZXhwX2FyZ3NfMTY0IiwiYXJnMF8xNjUiLCJyZXMwXzE2NiIsInNleHBfYXJnc18xNzQiLCJhcmcwXzE3NSIsInJlczBfMTc2Iiwic2V4cF9hcmdzXzE2OSIsImFyZzBfMTcwIiwicmVzMF8xNzEiLCJzZXhwX29mX2VudHJ5IiwiYXJnMF8xNzciLCJyZXMwXzE3OCIsImFyZzBfMTc5IiwicmVzMF8xODAiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiZW50cnlfb2ZfeW9qc29uIiwieW9qc29uX29mX2VudHJ5IiwiXzAkNyIsInhfMTg0IiwieF8xODUiLCJlbnRyeSIsImV4dGVuZF90dmFyIiwidHZhcl9lbnRyeSIsImV4dGVuZF9hbGlhcyIsImV4dGVuZF9kdW1teV90dmFyIiwibG9va3VwX3R2YXIiLCJsb29rdXBfYWxpYXMiLCJnZXRfaWQiLCJsb29rdXBfdmFyIiwibG9va3VwX2N0ciIsImlzX2FsaWFzIiwiYWRkX2N0cnMiLCJ0eXAkMCIsInN1YnRyYWN0X3ByZWZpeCIsInByZWZpeF9jdHgiLCJwcmVmaXhfbGVuZ3RoIiwiY3R4X2xlbmd0aCIsImFkZGVkX2JpbmRpbmdzIiwiY3R4X2FmdGVyIiwiY3R4X2JlZm9yZSIsIm5ld19jb3VudCIsImZpbHRlcl9kdXBsaWNhdGVzIiwidHlwX3NldCIsInRlcm1fc2V0IiwibmFtZSQwIiwic2hhZG93c190eXAiLCJzaG93JDEiLCJfMCQ4Iiwic2V4cF8xOTAiLCJ0YWdfMTkxIiwic2V4cF9hcmdzXzE5MiIsImFyZzBfMTkzIiwicmVzMF8xOTQiLCJhcmcwXzE5NSIsInJlczBfMTk2Iiwic2luZ2xldG9uJDAiLCJ1cGRhdGUkMCIsInVuaW9uJDAiLCJjdHgxIiwiY3R4MiIsImZpbHRlciQwIiwiZm9sZCQwIiwicHBfdCQwIiwic2hvd190JDAiLCJvZl9hXzAxOSIsInNleHBfMDIxIiwiZmllbGRfc2V4cHNfMDIyIiwibWFwXzAyMyIsInJldl9vcmRlcl8wMjUiLCJpdGVyXzA0MCIsInNleHBfMDIxJDAiLCJ0YWlsXzA0MSIsInhfMDQyIiwic2V4cF8wMzYiLCJhcmcxXzAzMyIsImFyZzBfMDMyIiwicmVzMF8wMzQiLCJyZXMxXzAzNSIsInJldl9vcmRlcl8wMjYiLCJtYXBfMDI0Iiwib2ZfYV8wNDMiLCJyZXZfb3JkZXJfMDQ3IiwibWFwXzA0NSIsImFyZzFfMDUwIiwiYXJnMF8wNDkiLCJyZXMxXzA1MiIsImJuZHNfMDQ0JDEiLCJtYXBfZmllbGQiLCJyZXZfb3JkZXJfZmllbGQiLCJyZXZfb3JkZXJfdmFsdWUiLCJtYXBfdmFsdWUiLCJ2X3Jldl9vcmRlciIsInZfbWFwIiwiZmFpbHdpdGhfa2V5c2luY29uc2lzdGVudCIsImlzX2VtcHR5JDAiLCJzaW5nbGV0b24kMSIsImV4dGVuZCQwIiwicmV2X29yZGVyIiwidW5pb24kMSIsInJldl9vcmRlcjIiLCJyZXZfb3JkZXIxIiwidW5pb25fb3JkZXIiLCJvcmRlcjEiLCJvcmRlcjEkMCIsInJldl9vcmRlcjIkMCIsInJldl9vcmRlcjIkMSIsImxvb2t1cCQwIiwiY29udGFpbnMkMCIsIm1hcGsiLCJtYXBvIiwiZmlsdGVyayIsInJldl9vcmRlciQwIiwiZmlsdGVybyIsImZvbGRrIiwiZm9sZG8iLCJ0b19saXN0ayIsInRvX2xpc3RvIiwib2ZfbGlzdCQwIiwid2l0aG91dF9rZXlzIiwiYXJnMV8wMTciLCJhcmcwXzAxNiIsInJlczFfMDE5IiwiXzIwIiwiXzE5IiwiXzE4IiwiXzE3IiwiXzE2IiwiXzE1IiwiXzE0IiwiXzEzIiwiXzEyIiwiXzExIiwiXzEwIiwiXzkiLCJhMyIsImEyJDAiLCJhMiQxIiwiYTEkMiIsImEyJDIiLCJhMSQzIiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTEkNCIsImEwJDkiLCJhMSQ1IiwiYTAkMTAiLCJhMCQxMSIsImEwJDEyIiwiYTEkNiIsImEwJDEzIiwic2V4cF9hcmdzXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMl8wMzciLCJhcmcxXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJyZXMyXzA0MCIsInNleHBfYXJnc18wNzciLCJhcmcxXzA3OSIsImFyZzBfMDc4IiwicmVzMF8wODAiLCJyZXMxXzA4MSIsImFyZzNfMDE4IiwiYXJnMl8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwicmVzMl8wMjEiLCJyZXMzXzAyMiIsInNleHBfYXJnc18wNzIiLCJhcmcwXzA3MyIsInJlczBfMDc0Iiwic2V4cF9hcmdzXzA5MSIsImFyZzBfMDkyIiwicmVzMF8wOTMiLCJzZXhwX2FyZ3NfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsInNleHBfYXJnc18xMDEiLCJhcmcxXzEwMyIsImFyZzBfMTAyIiwicmVzMF8xMDQiLCJyZXMxXzEwNSIsInNleHBfYXJnc18wNDMiLCJhcmcyXzA0NiIsImFyZzFfMDQ1IiwiYXJnMF8wNDQiLCJyZXMxXzA0OCIsInJlczJfMDQ5Iiwic2V4cF9hcmdzXzA2NyIsImFyZzBfMDY4IiwicmVzMF8wNjkiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMV8wODYiLCJhcmcwXzA4NSIsInJlczBfMDg3IiwicmVzMV8wODgiLCJzZXhwX2FyZ3NfMDk2IiwiYXJnMF8wOTciLCJyZXMwXzA5OCIsInNleHBfYXJnc18wMjUiLCJhcmcyXzAyOCIsImFyZzFfMDI3IiwiYXJnMF8wMjYiLCJyZXMyXzAzMSIsInNleHBfYXJnc18wNjIiLCJyZXMwXzA2NCIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnM18xMTMiLCJhcmcyXzExMiIsImFyZzFfMTExIiwiYXJnMF8xMTAiLCJyZXMwXzExNCIsInJlczFfMTE1IiwicmVzMl8xMTYiLCJyZXMzXzExNyIsImFyZzJfMTIwIiwiYXJnMV8xMTkiLCJhcmcwXzExOCIsInJlczBfMTIxIiwicmVzMV8xMjIiLCJyZXMyXzEyMyIsImFyZzJfMTI2IiwiYXJnMV8xMjUiLCJhcmcwXzEyNCIsInJlczBfMTI3IiwicmVzMV8xMjgiLCJyZXMyXzEyOSIsImFyZzJfMTMyIiwiYXJnMV8xMzEiLCJhcmcwXzEzMCIsInJlczBfMTMzIiwicmVzMV8xMzQiLCJyZXMyXzEzNSIsImFyZzBfMTM2IiwicmVzMF8xMzciLCJhcmcwXzEzOCIsInJlczBfMTM5IiwiYXJnMF8xNDAiLCJyZXMwXzE0MSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzE0NCIsInJlczBfMTQ1IiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJhcmcxXzE1MSIsImFyZzBfMTUwIiwicmVzMF8xNTIiLCJyZXMxXzE1MyIsImFyZzBfMTU0IiwicmVzMF8xNTUiLCJhcmcwXzE1NiIsInJlczBfMTU3IiwiYXJnMV8xNTkiLCJhcmcwXzE1OCIsInJlczBfMTYwIiwicmVzMV8xNjEiLCJ2MiQxIiwidjIkMiIsInYzIiwidjMkMCIsInlvanNvbl9hcmdzJDEzIiwidjEkMTMiLCJ2MCQyNyIsInYwJDI4IiwidjEkMTQiLCJ5b2pzb25fYXJncyQxMiIsInYyJDUiLCJ2MSQxMSIsInYwJDI1IiwidjAkMjYiLCJ2MSQxMiIsInYyJDYiLCJ5b2pzb25fYXJncyQxMSIsInYwJDIzIiwidjAkMjQiLCJ5b2pzb25fYXJncyQxMCIsInYxJDkiLCJ2MCQyMSIsInYwJDIyIiwidjEkMTAiLCJ5b2pzb25fYXJncyQ5IiwidjAkMTkiLCJ2MCQyMCIsInlvanNvbl9hcmdzJDgiLCJ2MSQ3IiwidjAkMTciLCJ2MCQxOCIsInYxJDgiLCJ5b2pzb25fYXJncyQ3IiwidjIkMyIsInYxJDUiLCJ2MCQxNSIsInYwJDE2IiwidjEkNiIsInYyJDQiLCJ5b2pzb25fYXJncyQ2IiwidjAkMTMiLCJ2MCQxNCIsIm1rX3R1cGxlIiwiZHBzIiwiYmluZHNfdmFyIiwiZHAiLCJkcCQwIiwiZF9saXN0IiwibmV3X2xpc3QiLCJkcDIiLCJkcDEiLCJib3VuZF92YXJzIiwiZHBzJDAiLCJkcDEkMCIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwX29mX2FjdGlvbiIsImFjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWN0aW9uIiwicHBfY291bnQiLCJzaG93X2NvdW50IiwiY291bnRfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9jb3VudCIsImNvdW50X29mX3lvanNvbiIsInlvanNvbl9vZl9jb3VudCIsInNleHBfMDE0Iiwic3RyaW5nX29mX3QiLCJlcnJfbXNnIiwiZXJyIiwic3RydWN0dXJlX3NoYXJlX21hcCIsInN0cnVjdHVyZV9zaGFyZWRfb2Zfc2V4cCIsInNleHBfb2Zfc3RydWN0dXJlX3NoYXJlZCIsInN0cnVjdHVyZV9zaGFyZV9oZXJlIiwia2V5X2YiLCJ0aGluZyIsImtleSIsInRoaW5nX3MiLCJzdHJ1Y3R1cmVfc2hhcmVfaW4iLCJzZXhwJDAiLCJlcnJvcl9zb3VyY2VfMDU2IiwiZXJyb3Jfc291cmNlXzA2MCIsImVycm9yX3NvdXJjZV8wNjQiLCJlcnJvcl9zb3VyY2VfMDY4IiwiZXJyb3Jfc291cmNlXzA3MiIsImVycm9yX3NvdXJjZV8wNzYiLCJlcnJvcl9zb3VyY2VfMDgwIiwidHBfbG9jJDYiLCJlcnJvcl9zb3VyY2VfMDg0IiwidHBfbG9jJDciLCJlcnJvcl9zb3VyY2VfMTA5IiwidHBfbG9jJDgiLCJlcnJvcl9zb3VyY2VfMTQxIiwidHBfbG9jJDkiLCJlcnJvcl9zb3VyY2VfMTU5IiwiZXJyb3Jfc291cmNlXzM0MSIsInRwX2xvYyQxMCIsInRwX2xvYyQxMSIsImVycm9yX3NvdXJjZV80NDIiLCJlcnJvcl9zb3VyY2VfNTM0IiwidHBfbG9jJDEyIiwidHBfbG9jJDEzIiwiZXJyb3Jfc291cmNlXzU3OSIsImVycm9yX3NvdXJjZV82MzciLCJlcnJvcl9zb3VyY2VfNjY3IiwidHBfbG9jJDE0IiwidHBfbG9jJDE1IiwidHBfbG9jJDE2IiwiZXJyb3Jfc291cmNlXzcxMCIsImVycm9yX3NvdXJjZV83NDEiLCJ0cF9sb2MkMTciLCJ0cF9sb2MkMTgiLCJlcnJvcl9zb3VyY2VfNzU4IiwiZXJyb3Jfc291cmNlXzc5NiIsInRwX2xvYyQxOSIsInRwX2xvYyQyMCIsInNleHBfYXJnc18wMzciLCJhcmcwXzAzOCIsInNleHBfYXJnc18wMzIiLCJhcmcwXzAzMyIsInNleHBfYXJnc18wMjciLCJhcmcwXzAyOCIsInNleHBfYXJnc18wMjIiLCJyZXMwXzAyNCIsInNleHBfYXJnc18wMTciLCJhcmcwXzA0MCIsInJlczBfMDQxIiwiYXJnMF8wNDIiLCJyZXMwXzA0NSIsInJlczBfMDQ5IiwiaXNfZXhwIiwiaXNfcGF0IiwiaXNfdHlwIiwicHBfb3BfdW5fYm9vbCIsInNob3dfb3BfdW5fYm9vbCIsIm9wX3VuX2Jvb2xfb2Zfc2V4cCIsInNleHBfb2Zfb3BfdW5fYm9vbCIsIm9wX3VuX2Jvb2xfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX3VuX2Jvb2wiLCJwcF9vcF91bl9tZXRhIiwic2hvd19vcF91bl9tZXRhIiwib3BfdW5fbWV0YV9vZl9zZXhwIiwic2V4cF8wNjEiLCJzZXhwX29mX29wX3VuX21ldGEiLCJvcF91bl9tZXRhX29mX3lvanNvbiIsInlvanNvbl9vZl9vcF91bl9tZXRhIiwicHBfb3BfdW5faW50Iiwic2hvd19vcF91bl9pbnQiLCJvcF91bl9pbnRfb2Zfc2V4cCIsInNleHBfMDY1Iiwic2V4cF9vZl9vcF91bl9pbnQiLCJvcF91bl9pbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX3VuX2ludCIsInBwX29wX2Jpbl9ib29sIiwic2hvd19vcF9iaW5fYm9vbCIsIm9wX2Jpbl9ib29sX29mX3NleHAiLCJzZXhwXzA2OSIsInNleHBfb2Zfb3BfYmluX2Jvb2wiLCJvcF9iaW5fYm9vbF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2Jvb2wiLCJwcF9vcF9iaW5faW50Iiwic2hvd19vcF9iaW5faW50Iiwib3BfYmluX2ludF9vZl9zZXhwIiwic2V4cF8wNzMiLCJzZXhwX29mX29wX2Jpbl9pbnQiLCJvcF9iaW5faW50X29mX3lvanNvbiIsInlvanNvbl9vZl9vcF9iaW5faW50IiwicHBfb3BfYmluX2Zsb2F0Iiwic2hvd19vcF9iaW5fZmxvYXQiLCJvcF9iaW5fZmxvYXRfb2Zfc2V4cCIsInNleHBfMDc3Iiwic2V4cF9vZl9vcF9iaW5fZmxvYXQiLCJvcF9iaW5fZmxvYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9mbG9hdCIsInBwX29wX2Jpbl9zdHJpbmciLCJzaG93X29wX2Jpbl9zdHJpbmciLCJvcF9iaW5fc3RyaW5nX29mX3NleHAiLCJzZXhwXzA4MSIsInNleHBfb2Zfb3BfYmluX3N0cmluZyIsIm9wX2Jpbl9zdHJpbmdfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9zdHJpbmciLCJwcF9vcF91biIsInNob3dfb3BfdW4iLCJvcF91bl9vZl9zZXhwIiwic2V4cF8wODYiLCJ0YWdfMDg3Iiwic2V4cF9hcmdzXzA4OCIsImFyZzBfMDg5IiwicmVzMF8wOTAiLCJzZXhwX2FyZ3NfMDkzIiwiYXJnMF8wOTQiLCJyZXMwXzA5NSIsInNleHBfYXJnc18wOTgiLCJhcmcwXzA5OSIsInJlczBfMTAwIiwic2V4cF9vZl9vcF91biIsImFyZzBfMTAxIiwicmVzMF8xMDIiLCJhcmcwXzEwMyIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJvcF91bl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW4iLCJwcF9vcF9iaW4iLCJzaG93X29wX2JpbiIsIl8zJDAiLCJvcF9iaW5fb2Zfc2V4cCIsInNleHBfMTExIiwidGFnXzExMiIsInNleHBfYXJnc18xMjgiLCJhcmcwXzEyOSIsInJlczBfMTMwIiwic2V4cF9hcmdzXzExMyIsImFyZzBfMTE0IiwicmVzMF8xMTUiLCJzZXhwX2FyZ3NfMTE4IiwiYXJnMF8xMTkiLCJyZXMwXzEyMCIsInNleHBfYXJnc18xMjMiLCJyZXMwXzEyNSIsInNleHBfb2Zfb3BfYmluIiwiYXJnMF8xMzEiLCJyZXMwXzEzMiIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzNSIsInJlczBfMTM2IiwiYXJnMF8xMzciLCJyZXMwXzEzOCIsIm9wX2Jpbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluIiwic2V4cF8xNDMiLCJ0YWdfMTQ0Iiwic2V4cF9hcmdzXzE0NSIsInJlczBfMTQ3Iiwic2V4cF9hcmdzXzE1MCIsImFyZzBfMTUxIiwiYXJnMF8xNTMiLCJyZXMwXzE1NCIsImFyZzBfMTU1IiwicmVzMF8xNTYiLCJwcF90ZXJtIiwic2hvd190ZXJtIiwiXzM3IiwiXzM2IiwiXzM1IiwiXzM0IiwiXzMzIiwiXzMyIiwiXzMxIiwiXzMwIiwiXzI5IiwiXzI4IiwiXzI3IiwiXzI2IiwiXzI1IiwiXzI0IiwiXzIzIiwiXzIyIiwiXzIxIiwiXzQkMCIsIl8zJDEiLCJhMCQxNCIsImEwJDE1IiwiYTAkMTYiLCJhMCQxNyIsImEwJDE4IiwiYTEkNyIsImEwJDE5IiwiYTEkOCIsImEwJDIwIiwiYTEkOSIsImEwJDIxIiwiYTIkMyIsImExJDEwIiwiYTAkMjIiLCJhMSQxMSIsImEwJDIzIiwidGVybV9vZl9zZXhwIiwic2V4cF8xNjEiLCJ0YWdfMTYyIiwic2V4cF9hcmdzXzI5NCIsImFyZzFfMjk2IiwiYXJnMF8yOTUiLCJyZXMwXzI5NyIsInJlczFfMjk4Iiwic2V4cF9hcmdzXzE4OCIsImFyZzBfMTg5IiwicmVzMF8xOTAiLCJzZXhwX2FyZ3NfMjY4IiwiYXJnMF8yNjkiLCJyZXMwXzI3MCIsInNleHBfYXJnc18yMTAiLCJhcmcwXzIxMSIsInJlczBfMjEyIiwic2V4cF9hcmdzXzIyOSIsImFyZzJfMjMyIiwiYXJnMV8yMzEiLCJhcmcwXzIzMCIsInJlczBfMjMzIiwicmVzMV8yMzQiLCJyZXMyXzIzNSIsInNleHBfYXJnc18zMDEiLCJhcmcxXzMwMyIsImFyZzBfMzAyIiwicmVzMF8zMDQiLCJyZXMxXzMwNSIsInNleHBfYXJnc18yMTUiLCJhcmcwXzIxNiIsInJlczBfMjE3Iiwic2V4cF9hcmdzXzE5MyIsImFyZzBfMTk0IiwicmVzMF8xOTUiLCJzZXhwX2FyZ3NfMzE3IiwiYXJnMV8zMjQiLCJhcmcwXzMyMyIsInJlczBfMzI1Iiwic2V4cF8zMjIiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJzZXhwX2FyZ3NfMjgyIiwiYXJnMF8yODMiLCJyZXMwXzI4NCIsInNleHBfYXJnc18yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInNleHBfYXJnc18yNjEiLCJhcmcxXzI2MyIsImFyZzBfMjYyIiwicmVzMF8yNjQiLCJyZXMxXzI2NSIsInNleHBfYXJnc18yNzMiLCJhcmcyXzI3NiIsImFyZzFfMjc1IiwiYXJnMF8yNzQiLCJyZXMwXzI3NyIsInJlczFfMjc4IiwicmVzMl8yNzkiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18yMDMiLCJhcmcxXzIwNSIsImFyZzBfMjA0IiwicmVzMF8yMDYiLCJyZXMxXzIwNyIsInNleHBfYXJnc18yNTIiLCJhcmcyXzI1NSIsImFyZzFfMjU0IiwiYXJnMF8yNTMiLCJyZXMwXzI1NiIsInJlczFfMjU3IiwicmVzMl8yNTgiLCJzZXhwX2FyZ3NfMTc4Iiwic2V4cF9hcmdzXzE2MyIsImFyZzBfMTY0IiwicmVzMF8xNjUiLCJzZXhwX2FyZ3NfMjIwIiwiYXJnMl8yMjMiLCJhcmcxXzIyMiIsImFyZzBfMjIxIiwicmVzMF8yMjQiLCJyZXMxXzIyNSIsInJlczJfMjI2Iiwic2V4cF9hcmdzXzIzOCIsImFyZzFfMjQwIiwiYXJnMF8yMzkiLCJyZXMwXzI0MSIsInJlczFfMjQyIiwic2V4cF9hcmdzXzMwOCIsImFyZzJfMzExIiwiYXJnMV8zMTAiLCJhcmcwXzMwOSIsInJlczBfMzEyIiwicmVzMV8zMTMiLCJyZXMyXzMxNCIsInNleHBfYXJnc18xNzMiLCJhcmcwXzE3NCIsInJlczBfMTc1Iiwic2V4cF9hcmdzXzI4NyIsImFyZzFfMjg5IiwiYXJnMF8yODgiLCJyZXMwXzI5MCIsInJlczFfMjkxIiwic2V4cF9hcmdzXzE5OCIsImFyZzBfMTk5IiwicmVzMF8yMDAiLCJzZXhwXzMyOCIsImZpZWxkX3NleHBzXzMyOSIsImlkc18zMzAiLCJ0ZXJtXzMzMiIsImR1cGxpY2F0ZXNfMzM0IiwiZXh0cmFfMzM1IiwiaXRlcl8zNDIiLCJzZXhwXzMyOCQwIiwiZmllbGRfc2V4cHNfMzM4IiwiZmllbGRfbmFtZV8zMzYiLCJ0YWlsXzM0MyIsImZpZWxkX3NleHBfMzM3JDIiLCJmaWVsZF9zZXhwXzMzNyIsInhfMzQ0IiwiZmllbGRfc2V4cF8zMzckMCIsImZ2YWx1ZV8zMzkiLCJmaWVsZF9zZXhwXzMzNyQxIiwiZnZhbHVlXzM0MCIsInRlcm1fMzMzIiwiaWRzXzMzMSIsInNleHBfb2ZfdGVybSIsImFyZzBfMzQ1IiwicmVzMF8zNDYiLCJhcmcwXzM0NyIsInJlczBfMzQ4IiwiYXJnMF8zNDkiLCJyZXMwXzM1MCIsImFyZzBfMzUxIiwicmVzMF8zNTIiLCJhcmcwXzM1MyIsInJlczBfMzU0IiwiYXJnMF8zNTUiLCJyZXMwXzM1NiIsImFyZzBfMzU3IiwicmVzMF8zNTgiLCJhcmcwXzM1OSIsInJlczBfMzYwIiwiYXJnMV8zNjIiLCJhcmcwXzM2MSIsInJlczBfMzYzIiwicmVzMV8zNjQiLCJhcmcwXzM2NSIsInJlczBfMzY2IiwiYXJnMF8zNjciLCJyZXMwXzM2OCIsImFyZzJfMzcxIiwiYXJnMV8zNzAiLCJhcmcwXzM2OSIsInJlczBfMzcyIiwicmVzMV8zNzMiLCJyZXMyXzM3NCIsImFyZzJfMzc3IiwiYXJnMV8zNzYiLCJhcmcwXzM3NSIsInJlczBfMzc4IiwicmVzMV8zNzkiLCJyZXMyXzM4MCIsImFyZzFfMzgyIiwiYXJnMF8zODEiLCJyZXMwXzM4MyIsInJlczFfMzg0IiwiYXJnMV8zODYiLCJhcmcwXzM4NSIsInJlczBfMzg3IiwicmVzMV8zODgiLCJhcmcyXzM5MSIsImFyZzFfMzkwIiwiYXJnMF8zODkiLCJyZXMwXzM5MiIsInJlczFfMzkzIiwicmVzMl8zOTQiLCJhcmcxXzM5NiIsImFyZzBfMzk1IiwicmVzMF8zOTciLCJyZXMxXzM5OCIsImFyZzBfMzk5IiwicmVzMF80MDAiLCJhcmcyXzQwMyIsImFyZzFfNDAyIiwiYXJnMF80MDEiLCJyZXMwXzQwNCIsInJlczFfNDA1IiwicmVzMl80MDYiLCJhcmcwXzQwNyIsInJlczBfNDA4IiwiYXJnMV80MTAiLCJhcmcwXzQwOSIsInJlczBfNDExIiwicmVzMV80MTIiLCJhcmcxXzQxNCIsImFyZzBfNDEzIiwicmVzMF80MTUiLCJyZXMxXzQxNiIsImFyZzFfNDE4IiwiYXJnMF80MTciLCJyZXMwXzQxOSIsInJlczFfNDIwIiwiYXJnMl80MjMiLCJhcmcxXzQyMiIsImFyZzBfNDIxIiwicmVzMF80MjQiLCJyZXMxXzQyNSIsInJlczJfNDI2IiwiYXJnMV80MzIiLCJhcmcwXzQzMSIsInJlczBfNDMzIiwiYXJnMV80MjgiLCJhcmcwXzQyNyIsInJlczBfNDI5IiwicmVzMV80MzAiLCJyZXMxXzQzNCIsInRlcm1fNDM4IiwiaWRzXzQzNiIsImFyZ180MzkiLCJibmRzXzQzNSIsImFyZ180MzciLCJibmRzXzQzNSQwIiwidGVybV9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQxOCIsInYxJDE3IiwidjAkMzciLCJ2MCQzOCIsInYxJDE4IiwieW9qc29uX2FyZ3MkMTciLCJ2MCQzNSIsInYwJDM2IiwieW9qc29uX2FyZ3MkMTYiLCJ2MSQxNSIsInYwJDMzIiwidjAkMzQiLCJ2MSQxNiIsInlvanNvbl9hcmdzJDE1IiwidjAkMzEiLCJ2MCQzMiIsInlvanNvbl9hcmdzJDE0IiwidjAkMjkiLCJ2MCQzMCIsInlvanNvbl9hcmdzJDIzIiwidjEkMjMiLCJ2MCQ0NyIsInYwJDQ4IiwidjEkMjQiLCJ5b2pzb25fYXJncyQyMiIsInYyJDciLCJ2MSQyMSIsInYwJDQ1IiwidjAkNDYiLCJ2MSQyMiIsInYyJDgiLCJ5b2pzb25fYXJncyQyMSIsInYwJDQzIiwidjAkNDQiLCJ5b2pzb25fYXJncyQyMCIsInYxJDE5IiwidjAkNDEiLCJ2MCQ0MiIsInYxJDIwIiwieW9qc29uX2FyZ3MkMTkiLCJ2MCQzOSIsInYwJDQwIiwiaWRzX2ZpZWxkIiwidGVybV9maWVsZCIsInRlcm1fdmFsdWUiLCJpZHNfdmFsdWUiLCJ5b2pzb25fb2ZfdGVybSIsInZfdGVybSIsInZfaWRzIiwiYm9vbF9vcF90b19zdHJpbmciLCJvcCIsImludF9vcF90b19zdHJpbmciLCJmbG9hdF9vcF90b19zdHJpbmciLCJzdHJpbmdfb3BfdG9fc3RyaW5nIiwicHBfdGVybSQwIiwic2hvd190ZXJtJDAiLCJfMTAkMCIsIl85JDAiLCJfOCQwIiwiXzckMCIsIl82JDAiLCJfNSQwIiwiXzQkMSIsIl8zJDIiLCJfMiQzIiwiXzEkNiIsInRlcm1fb2Zfc2V4cCQwIiwic2V4cF80NDQiLCJ0YWdfNDQ1Iiwic2V4cF9hcmdzXzQ3NiIsImFyZzBfNDc3IiwicmVzMF80NzgiLCJzZXhwX2FyZ3NfNDUxIiwiYXJnMF80NTIiLCJyZXMwXzQ1MyIsInNleHBfYXJnc181MDMiLCJhcmcwXzUwNCIsInJlczBfNTA1Iiwic2V4cF9hcmdzXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJzZXhwX2FyZ3NfNDk4IiwiYXJnMF80OTkiLCJyZXMwXzUwMCIsInNleHBfYXJnc181MTUiLCJhcmcxXzUxNyIsImFyZzBfNTE2IiwicmVzMF81MTgiLCJyZXMxXzUxOSIsInNleHBfYXJnc180OTMiLCJhcmcwXzQ5NCIsInJlczBfNDk1Iiwic2V4cF9hcmdzXzUwOCIsImFyZzFfNTEwIiwiYXJnMF81MDkiLCJyZXMwXzUxMSIsInJlczFfNTEyIiwic2V4cF9hcmdzXzQ2NiIsImFyZzBfNDY3IiwicmVzMF80NjgiLCJzZXhwX2FyZ3NfNDg2IiwiYXJnMV80ODgiLCJhcmcwXzQ4NyIsInJlczBfNDg5IiwicmVzMV80OTAiLCJzZXhwX2FyZ3NfNDgxIiwiYXJnMF80ODIiLCJyZXMwXzQ4MyIsInNleHBfYXJnc180NjEiLCJhcmcwXzQ2MiIsInJlczBfNDYzIiwic2V4cF9hcmdzXzQ1NiIsImFyZzBfNDU3IiwicmVzMF80NTgiLCJzZXhwX2FyZ3NfNDQ2IiwiYXJnMF80NDciLCJyZXMwXzQ0OCIsInNleHBfNTIxIiwiZmllbGRfc2V4cHNfNTIyIiwiaWRzXzUyMyIsInRlcm1fNTI1IiwiZHVwbGljYXRlc181MjciLCJleHRyYV81MjgiLCJpdGVyXzUzNSIsInNleHBfNTIxJDAiLCJmaWVsZF9zZXhwc181MzEiLCJmaWVsZF9uYW1lXzUyOSIsInRhaWxfNTM2IiwiZmllbGRfc2V4cF81MzAkMiIsImZpZWxkX3NleHBfNTMwIiwieF81MzciLCJmaWVsZF9zZXhwXzUzMCQwIiwiZnZhbHVlXzUzMiIsImZpZWxkX3NleHBfNTMwJDEiLCJmdmFsdWVfNTMzIiwidGVybV81MjYiLCJpZHNfNTI0Iiwic2V4cF9vZl90ZXJtJDAiLCJhcmcwXzUzOCIsInJlczBfNTM5IiwiYXJnMF81NDAiLCJyZXMwXzU0MSIsImFyZzBfNTQyIiwicmVzMF81NDMiLCJhcmcwXzU0NCIsInJlczBfNTQ1IiwiYXJnMF81NDYiLCJyZXMwXzU0NyIsImFyZzBfNTQ4IiwicmVzMF81NDkiLCJhcmcwXzU1MCIsInJlczBfNTUxIiwiYXJnMF81NTIiLCJyZXMwXzU1MyIsImFyZzFfNTU1IiwiYXJnMF81NTQiLCJyZXMwXzU1NiIsInJlczFfNTU3IiwiYXJnMF81NTgiLCJyZXMwXzU1OSIsImFyZzBfNTYwIiwicmVzMF81NjEiLCJhcmcwXzU2MiIsInJlczBfNTYzIiwiYXJnMV81NjUiLCJhcmcwXzU2NCIsInJlczBfNTY2IiwicmVzMV81NjciLCJhcmcxXzU2OSIsImFyZzBfNTY4IiwicmVzMF81NzAiLCJyZXMxXzU3MSIsInRlcm1fNTc1IiwiaWRzXzU3MyIsImFyZ181NzYiLCJibmRzXzU3MiIsImFyZ181NzQiLCJibmRzXzU3MiQwIiwidGVybV9vZl95b2pzb24kMCIsInlvanNvbl9vZl90ZXJtJDAiLCJwcF90ZXJtJDEiLCJzaG93X3Rlcm0kMSIsInBwX3ZhcmlhbnQiLCJzaG93X3ZhcmlhbnQiLCJwcCQyIiwic2hvdyQyIiwiXzgkMSIsIl83JDEiLCJfNiQxIiwiXzUkMSIsIl80JDIiLCJfMyQzIiwiXzIkNCIsIl8xJDciLCJfMyQ0IiwiXzIkNSIsIl8xJDgiLCJfMSQ5IiwiXzAkOSIsInRlcm1fb2Zfc2V4cCQxIiwidmFyaWFudF9vZl9zZXhwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzU4MSIsInRhZ181ODIiLCJzZXhwX2FyZ3NfNTgzIiwiYXJnMF81ODQiLCJyZXMwXzU4NSIsInNleHBfYXJnc181OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1Iiwic2V4cF9hcmdzXzU4OCIsImFyZzBfNTg5IiwicmVzMF81OTAiLCJzZXhwX2FyZ3NfNjIwIiwiYXJnMF82MjEiLCJyZXMwXzYyMiIsInNleHBfYXJnc182MzIiLCJhcmcwXzYzMyIsInJlczBfNjM0Iiwic2V4cF9hcmdzXzYxNSIsImFyZzBfNjE2IiwicmVzMF82MTciLCJzZXhwX2FyZ3NfNTk4IiwiYXJnMF81OTkiLCJyZXMwXzYwMCIsInNleHBfYXJnc182MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsInNleHBfYXJnc182MDgiLCJhcmcxXzYxMCIsImFyZzBfNjA5IiwicmVzMF82MTEiLCJyZXMxXzYxMiIsInNleHBfYXJnc182MDMiLCJhcmcwXzYwNCIsInJlczBfNjA1Iiwic2V4cF82MzkiLCJ0YWdfNjQwIiwic2V4cF9hcmdzXzY0MSIsImFyZzJfNjQ0IiwiYXJnMV82NDMiLCJhcmcwXzY0MiIsInJlczBfNjQ1IiwicmVzMV82NDYiLCJyZXMyXzY0NyIsInNleHBfYXJnc182NTAiLCJhcmcwXzY1MSIsInJlczBfNjUyIiwic2V4cF82NTQiLCJmaWVsZF9zZXhwc182NTUiLCJpZHNfNjU2IiwidGVybV82NTgiLCJkdXBsaWNhdGVzXzY2MCIsImV4dHJhXzY2MSIsIml0ZXJfNjY4Iiwic2V4cF82NTQkMCIsImZpZWxkX3NleHBzXzY2NCIsImZpZWxkX25hbWVfNjYyIiwidGFpbF82NjkiLCJmaWVsZF9zZXhwXzY2MyQyIiwiZmllbGRfc2V4cF82NjMiLCJ4XzY3MCIsImZpZWxkX3NleHBfNjYzJDAiLCJmdmFsdWVfNjY1IiwiZmllbGRfc2V4cF82NjMkMSIsImZ2YWx1ZV82NjYiLCJ0ZXJtXzY1OSIsImlkc182NTciLCJzZXhwX29mX3Rlcm0kMSIsImFyZzBfNjcxIiwicmVzMF82NzIiLCJhcmcwXzY3MyIsInJlczBfNjc0IiwiYXJnMF82NzUiLCJyZXMwXzY3NiIsInNleHBfb2ZfdCQyIiwiYXJnMF82NzciLCJyZXMwXzY3OCIsImFyZzBfNjc5IiwicmVzMF82ODAiLCJhcmcxXzY4MiIsImFyZzBfNjgxIiwicmVzMF82ODMiLCJyZXMxXzY4NCIsImFyZzBfNjg1IiwicmVzMF82ODYiLCJhcmcwXzY4NyIsInJlczBfNjg4IiwiYXJnMV82OTAiLCJhcmcwXzY4OSIsInJlczBfNjkxIiwicmVzMV82OTIiLCJhcmcwXzY5MyIsInJlczBfNjk0Iiwic2V4cF9vZl92YXJpYW50IiwiYXJnMl82OTciLCJhcmcxXzY5NiIsImFyZzBfNjk1IiwicmVzMF82OTgiLCJyZXMxXzY5OSIsInJlczJfNzAwIiwiYXJnMF83MDEiLCJyZXMwXzcwMiIsInRlcm1fNzA2IiwiaWRzXzcwNCIsImFyZ183MDciLCJibmRzXzcwMyIsImFyZ183MDUiLCJibmRzXzcwMyQwIiwidGVybV9vZl95b2pzb24kMSIsInZhcmlhbnRfb2ZfeW9qc29uIiwidF9vZl95b2pzb24kMiIsInlvanNvbl9vZl90ZXJtJDEiLCJ5b2pzb25fb2ZfdCQyIiwieW9qc29uX29mX3ZhcmlhbnQiLCJwcF90ZXJtJDIiLCJzaG93X3Rlcm0kMiIsInBwJDMiLCJzaG93JDMiLCJfMSQxMCIsIl8wJDEwIiwiXzEkMTEiLCJfMCQxMSIsInRlcm1fb2Zfc2V4cCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwXzcxMiIsInRhZ183MTMiLCJzZXhwX2FyZ3NfNzI0IiwiYXJnMF83MjUiLCJyZXMwXzcyNiIsInNleHBfYXJnc183MTkiLCJhcmcwXzcyMCIsInJlczBfNzIxIiwic2V4cF9hcmdzXzcxNCIsImFyZzBfNzE1IiwicmVzMF83MTYiLCJzZXhwXzcyOCIsImZpZWxkX3NleHBzXzcyOSIsImlkc183MzAiLCJ0ZXJtXzczMiIsImR1cGxpY2F0ZXNfNzM0IiwiZXh0cmFfNzM1IiwiaXRlcl83NDIiLCJzZXhwXzcyOCQwIiwiZmllbGRfc2V4cHNfNzM4IiwiZmllbGRfbmFtZV83MzYiLCJ0YWlsXzc0MyIsImZpZWxkX3NleHBfNzM3JDIiLCJmaWVsZF9zZXhwXzczNyIsInhfNzQ0IiwiZmllbGRfc2V4cF83MzckMCIsImZ2YWx1ZV83MzkiLCJmaWVsZF9zZXhwXzczNyQxIiwiZnZhbHVlXzc0MCIsInRlcm1fNzMzIiwiaWRzXzczMSIsInNleHBfb2ZfdGVybSQyIiwiYXJnMF83NDUiLCJyZXMwXzc0NiIsImFyZzBfNzQ3IiwicmVzMF83NDgiLCJhcmcwXzc0OSIsInJlczBfNzUwIiwic2V4cF9vZl90JDMiLCJ0ZXJtXzc1NCIsImlkc183NTIiLCJhcmdfNzU1IiwiYm5kc183NTEiLCJhcmdfNzUzIiwiYm5kc183NTEkMCIsInRlcm1fb2ZfeW9qc29uJDIiLCJ0X29mX3lvanNvbiQzIiwieW9qc29uX29mX3Rlcm0kMiIsInlvanNvbl9vZl90JDMiLCJwcF90ZXJtJDMiLCJzaG93X3Rlcm0kMyIsInBwJDQiLCJzaG93JDQiLCJfMyQ1IiwiXzIkNiIsIl8xJDEyIiwiXzAkMTIiLCJfMSQxMyIsIl8wJDEzIiwidGVybV9vZl9zZXhwJDMiLCJ0X29mX3NleHAkNCIsInNleHBfNzYwIiwidGFnXzc2MSIsInNleHBfYXJnc183NzIiLCJhcmcxXzc3OSIsImFyZzBfNzc4IiwicmVzMF83ODAiLCJzZXhwXzc3NyIsImFyZzFfNzc0IiwiYXJnMF83NzMiLCJyZXMwXzc3NSIsInJlczFfNzc2IiwicmVzMV83ODEiLCJzZXhwX2FyZ3NfNzYyIiwiYXJnMF83NjMiLCJyZXMwXzc2NCIsInNleHBfYXJnc183NjciLCJhcmcwXzc2OCIsInJlczBfNzY5Iiwic2V4cF83ODMiLCJmaWVsZF9zZXhwc183ODQiLCJpZHNfNzg1IiwidGVybV83ODciLCJkdXBsaWNhdGVzXzc4OSIsImV4dHJhXzc5MCIsIml0ZXJfNzk3Iiwic2V4cF83ODMkMCIsImZpZWxkX3NleHBzXzc5MyIsImZpZWxkX25hbWVfNzkxIiwidGFpbF83OTgiLCJmaWVsZF9zZXhwXzc5MiQyIiwiZmllbGRfc2V4cF83OTIiLCJ4Xzc5OSIsImZpZWxkX3NleHBfNzkyJDAiLCJmdmFsdWVfNzk0IiwiZmllbGRfc2V4cF83OTIkMSIsImZ2YWx1ZV83OTUiLCJ0ZXJtXzc4OCIsImlkc183ODYiLCJzZXhwX29mX3Rlcm0kMyIsImFyZzBfODAwIiwicmVzMF84MDEiLCJhcmcwXzgwMiIsInJlczBfODAzIiwiYXJnMV84MDkiLCJhcmcwXzgwOCIsInJlczBfODEwIiwiYXJnMV84MDUiLCJhcmcwXzgwNCIsInJlczBfODA2IiwicmVzMV84MDciLCJyZXMxXzgxMSIsInNleHBfb2ZfdCQ0IiwidGVybV84MTUiLCJpZHNfODEzIiwiYXJnXzgxNiIsImJuZHNfODEyIiwiYXJnXzgxNCIsImJuZHNfODEyJDAiLCJ0ZXJtX29mX3lvanNvbiQzIiwidF9vZl95b2pzb24kNCIsInlvanNvbl9vZl90ZXJtJDMiLCJ5b2pzb25fb2ZfdCQ0IiwiZXJyb3Jfc291cmNlXzQ5MiIsImVycm9yX3NvdXJjZV8yODUiLCJlcnJvcl9zb3VyY2VfMjk4IiwiZXJyb3Jfc291cmNlXzUxMSIsImVycm9yX3NvdXJjZV81MjIiLCJwcF9pZl9jb25zaXN0ZW5jeSIsInNob3dfaWZfY29uc2lzdGVuY3kiLCJpZl9jb25zaXN0ZW5jeV9vZl9zZXhwIiwic2V4cF9vZl9pZl9jb25zaXN0ZW5jeSIsImlmX2NvbnNpc3RlbmN5X29mX3lvanNvbiIsInlvanNvbl9vZl9pZl9jb25zaXN0ZW5jeSIsInhfNDg0IiwieF80ODUiLCJzZXhwXzQ5MSIsImFyZzFfNDk0IiwiYXJnMF80OTMiLCJyZXMxXzQ5NiIsIndyYXAiLCJlaSIsImlkX29mIiwibWFwX29mIiwiZW52Iiwib2ZfZW52aXJvbm1lbnQiLCJpZF9lcXVhbCIsImVudjEiLCJlbnYyIiwibGVuZ3RoJDAiLCJ1cGRhdGVfa2VlcF9pZCIsInhyIiwiZXh0ZW5kX2tlZXBfaWQiLCJ1bmlvbl9rZWVwX2lkIiwibWFwX2tlZXBfaWQiLCJmaWx0ZXJfa2VlcF9pZCIsImZvbGQiLCJwbGFjZWhvbGRlciIsIndpdGhvdXRfa2V5cyQwIiwicHBfY2FzZSIsInNob3dfY2FzZSIsInBwX3J1bGUiLCJzaG93X3J1bGUiLCJfNzMiLCJfNzIiLCJfNzEiLCJfNzAiLCJfNjkiLCJfNjgiLCJfNjciLCJfNjYiLCJfNjUiLCJfNjQiLCJfNjMiLCJfNjIiLCJfNjEiLCJfNjAiLCJfNTkiLCJfNTgiLCJfNTciLCJfNTYiLCJfNTUiLCJfNTQiLCJfNTMiLCJfNTIiLCJfNTEiLCJfNTAiLCJfNDkiLCJfNDgiLCJfNDciLCJfNDYiLCJfNDUiLCJfNDQiLCJfNDMiLCJfNDIiLCJfNDEiLCJfNDAiLCJfMzkiLCJfMzgiLCJhMiQ0IiwiYTIkNSIsImEzJDAiLCJhMiQ2IiwiYTEkMTIiLCJhMSQxMyIsImEyJDciLCJhMSQxNCIsImEyJDgiLCJhMSQxNSIsImEyJDkiLCJhMSQxNiIsImEyJDEwIiwiYTEkMTciLCJhMyQxIiwiYTIkMTEiLCJhMSQxOCIsImEwJDI0IiwiYTEkMTkiLCJhMCQyNSIsImExJDIwIiwiYTAkMjYiLCJhMCQyNyIsImExJDIxIiwiYTAkMjgiLCJhMCQyOSIsImEwJDMwIiwiYTIkMTIiLCJhMSQyMiIsImEwJDMxIiwiYTIkMTMiLCJhMSQyMyIsImEwJDMyIiwiYTEkMjQiLCJhMCQzMyIsImEzJDIiLCJhMiQxNCIsImExJDI1IiwiYTAkMzQiLCJjYXNlX29mX3NleHAiLCJydWxlX29mX3NleHAiLCJzZXhwX2FyZ3NfMTAwIiwiYXJnMl8xMDMiLCJhcmcxXzEwMiIsInJlczJfMTA2IiwiYXJnMl8wOTQiLCJhcmcxXzA5MyIsInJlczFfMDk2IiwicmVzMl8wOTciLCJyZXMwXzIyMyIsInJlczFfMjI0Iiwic2V4cF9hcmdzXzIwMiIsImFyZzNfMjA2IiwiYXJnMl8yMDUiLCJhcmcxXzIwNCIsImFyZzBfMjAzIiwicmVzMF8yMDciLCJyZXMxXzIwOCIsInJlczJfMjA5IiwicmVzM18yMTAiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwicmVzMF8wMjMiLCJyZXMxXzAyNCIsInJlczJfMDI1IiwicmVzM18wMjYiLCJzZXhwX2FyZ3NfMjMyIiwiYXJnMV8yMzQiLCJhcmcwXzIzMyIsInJlczBfMjM1IiwicmVzMV8yMzYiLCJzZXhwX2FyZ3NfMTYxIiwiYXJnMF8xNjIiLCJyZXMwXzE2MyIsInNleHBfYXJnc18xMzkiLCJhcmcxXzE0MSIsInJlczBfMTQyIiwicmVzMV8xNDMiLCJzZXhwX2FyZ3NfMjI3IiwiYXJnMF8yMjgiLCJyZXMwXzIyOSIsInNleHBfYXJnc18xNTYiLCJhcmcwXzE1NyIsInJlczBfMTU4Iiwic2V4cF9hcmdzXzAzOCIsImFyZzJfMDQxIiwiYXJnMV8wNDAiLCJhcmcwXzAzOSIsInJlczFfMDQzIiwicmVzMl8wNDQiLCJzZXhwX2FyZ3NfMTA5Iiwic2V4cF9hcmdzXzI3NCIsImFyZzNfMjc4IiwiYXJnMl8yNzciLCJhcmcxXzI3NiIsImFyZzBfMjc1IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczJfMjgxIiwicmVzM18yODIiLCJzZXhwX2FyZ3NfMDU2IiwiYXJnMl8wNTkiLCJhcmcxXzA1OCIsInJlczFfMDYxIiwicmVzMl8wNjIiLCJzZXhwX2FyZ3NfMTUxIiwiYXJnMF8xNTIiLCJyZXMwXzE1MyIsInNleHBfYXJnc18yNjciLCJhcmcxXzI2OSIsImFyZzBfMjY4IiwicmVzMV8yNzEiLCJzZXhwX2FyZ3NfMDQ3IiwiYXJnMl8wNTAiLCJyZXMyXzA1MyIsInNleHBfYXJnc18yNDkiLCJhcmcyXzI1MiIsImFyZzFfMjUxIiwiYXJnMF8yNTAiLCJyZXMwXzI1MyIsInJlczFfMjU0IiwicmVzMl8yNTUiLCJzZXhwX2FyZ3NfMDY1IiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczFfMDY5Iiwic2V4cF9hcmdzXzIxMyIsImFyZzFfMjE1IiwiYXJnMF8yMTQiLCJyZXMwXzIxNiIsInJlczFfMjE3Iiwic2V4cF9hcmdzXzI0NCIsImFyZzBfMjQ1IiwicmVzMF8yNDYiLCJzZXhwX2FyZ3NfMjM5IiwiYXJnMF8yNDAiLCJzZXhwX2FyZ3NfMDI5IiwiYXJnMl8wMzIiLCJhcmcxXzAzMSIsImFyZzBfMDMwIiwicmVzMF8wMzMiLCJyZXMxXzAzNCIsInJlczJfMDM1Iiwic2V4cF9hcmdzXzI1OCIsImFyZzJfMjYxIiwiYXJnMV8yNjAiLCJhcmcwXzI1OSIsInJlczBfMjYyIiwicmVzMV8yNjMiLCJyZXMyXzI2NCIsImFyZzFfMDc0IiwicmVzMF8wNzUiLCJyZXMxXzA3NiIsInNleHBfYXJnc18xMjAiLCJhcmcxXzEyMiIsImFyZzBfMTIxIiwicmVzMF8xMjMiLCJyZXMxXzEyNCIsInNleHBfYXJnc18xMjciLCJhcmcxXzEyOSIsImFyZzBfMTI4IiwicmVzMV8xMzEiLCJzZXhwX2FyZ3NfMTY2IiwiYXJnMl8xNjkiLCJhcmcxXzE2OCIsImFyZzBfMTY3IiwicmVzMV8xNzEiLCJyZXMyXzE3MiIsInNleHBfYXJnc18xODQiLCJhcmcyXzE4NyIsImFyZzFfMTg2IiwiYXJnMF8xODUiLCJyZXMwXzE4OCIsInJlczFfMTg5IiwicmVzMl8xOTAiLCJzZXhwX2FyZ3NfMTc1IiwiYXJnMl8xNzgiLCJhcmcxXzE3NyIsImFyZzBfMTc2IiwicmVzMF8xNzkiLCJyZXMxXzE4MCIsInJlczJfMTgxIiwiYXJnMl8xOTYiLCJhcmcxXzE5NSIsInJlczBfMTk3IiwicmVzMV8xOTgiLCJyZXMyXzE5OSIsInNleHBfYXJnc18xNDYiLCJhcmcwXzE0NyIsInNleHBfYXJnc18wNzkiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9hcmdzXzEzNCIsInNleHBfMjg3IiwidGFnXzI4OCIsInNleHBfYXJnc18yODkiLCJhcmcyXzI5MiIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MyIsInJlczFfMjk0IiwicmVzMl8yOTUiLCJzZXhwXzMwMCIsInRhZ18zMDEiLCJzZXhwX2FyZ3NfMzAyIiwiYXJnMV8zMDQiLCJhcmcwXzMwMyIsInJlczBfMzA1IiwicmVzMV8zMDYiLCJhcmcxXzMwOCIsImFyZzBfMzA3IiwicmVzMF8zMDkiLCJyZXMxXzMxMCIsImFyZzNfMzE0IiwiYXJnMl8zMTMiLCJhcmcxXzMxMiIsImFyZzBfMzExIiwicmVzMF8zMTUiLCJyZXMxXzMxNiIsInJlczJfMzE3IiwicmVzM18zMTgiLCJhcmcyXzMyMSIsImFyZzFfMzIwIiwiYXJnMF8zMTkiLCJyZXMwXzMyMiIsInJlczFfMzIzIiwicmVzMl8zMjQiLCJhcmcyXzMyNyIsImFyZzFfMzI2IiwiYXJnMF8zMjUiLCJyZXMwXzMyOCIsInJlczFfMzI5IiwicmVzMl8zMzAiLCJhcmcyXzMzMyIsImFyZzFfMzMyIiwiYXJnMF8zMzEiLCJyZXMwXzMzNCIsInJlczFfMzM1IiwicmVzMl8zMzYiLCJhcmcyXzMzOSIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzM0MCIsInJlczFfMzQxIiwicmVzMl8zNDIiLCJzZXhwX29mX2Nhc2UiLCJhcmcxXzM0NCIsImFyZzBfMzQzIiwicmVzMF8zNDUiLCJyZXMxXzM0NiIsImFyZzFfMzQ4IiwicmVzMF8zNDkiLCJyZXMxXzM1MCIsImFyZzFfMzU0IiwicmVzMF8zNTUiLCJyZXMxXzM1NiIsImFyZzJfMzU5IiwiYXJnMV8zNTgiLCJyZXMxXzM2MSIsInJlczJfMzYyIiwiYXJnMl8zNjUiLCJhcmcxXzM2NCIsImFyZzBfMzYzIiwicmVzMV8zNjciLCJyZXMyXzM2OCIsImFyZzNfMzcyIiwicmVzMF8zNzMiLCJyZXMxXzM3NCIsInJlczJfMzc1IiwicmVzM18zNzYiLCJhcmcxXzM3OCIsImFyZzBfMzc3IiwicmVzMF8zNzkiLCJyZXMxXzM4MCIsInJlczBfMzg2IiwiYXJnMV8zODgiLCJhcmcwXzM4NyIsInJlczBfMzg5IiwicmVzMV8zOTAiLCJhcmcwXzM5MSIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJyZXMwXzM5NiIsImFyZzBfMzk3IiwicmVzMF8zOTgiLCJhcmcyXzQwMSIsImFyZzFfNDAwIiwicmVzMF80MDIiLCJyZXMxXzQwMyIsInJlczJfNDA0IiwiYXJnMl80MDciLCJhcmcxXzQwNiIsImFyZzBfNDA1IiwicmVzMV80MDkiLCJyZXMyXzQxMCIsImFyZzJfNDEzIiwiYXJnMV80MTIiLCJhcmcwXzQxMSIsInJlczBfNDE0IiwicmVzMV80MTUiLCJyZXMyXzQxNiIsImFyZzJfNDE5IiwicmVzMF80MjAiLCJyZXMxXzQyMSIsInJlczJfNDIyIiwiYXJnM180MjYiLCJhcmcyXzQyNSIsImFyZzFfNDI0IiwiYXJnMF80MjMiLCJyZXMwXzQyNyIsInJlczFfNDI4IiwicmVzMl80MjkiLCJyZXMzXzQzMCIsImFyZzFfNDM2IiwiYXJnMF80MzUiLCJyZXMwXzQzNyIsInJlczFfNDM4IiwiYXJnMF80MzkiLCJyZXMwXzQ0MCIsImFyZzFfNDQyIiwiYXJnMF80NDEiLCJyZXMwXzQ0MyIsInJlczFfNDQ0IiwiYXJnMF80NDUiLCJyZXMwXzQ0NiIsImFyZzJfNDUxIiwiYXJnMV80NTAiLCJhcmcwXzQ0OSIsInJlczBfNDUyIiwicmVzMV80NTMiLCJyZXMyXzQ1NCIsImFyZzJfNDU3IiwiYXJnMV80NTYiLCJhcmcwXzQ1NSIsInJlczFfNDU5IiwicmVzMl80NjAiLCJhcmcxXzQ2MiIsImFyZzBfNDYxIiwicmVzMV80NjQiLCJhcmczXzQ2OCIsImFyZzJfNDY3IiwiYXJnMV80NjYiLCJhcmcwXzQ2NSIsInJlczBfNDY5IiwicmVzMV80NzAiLCJyZXMyXzQ3MSIsInJlczNfNDcyIiwiYXJnMl80NzUiLCJhcmcxXzQ3NCIsImFyZzBfNDczIiwicmVzMF80NzYiLCJyZXMxXzQ3NyIsInNleHBfb2ZfcnVsZSIsInJlczJfNDc4IiwiYXJnMV80ODAiLCJhcmcwXzQ3OSIsInJlczBfNDgxIiwicmVzMV80ODIiLCJjYXNlX29mX3lvanNvbiIsInJ1bGVfb2ZfeW9qc29uIiwidjIkMTUiLCJ2MSQyNSIsInYxJDI2IiwidjIkMTYiLCJ2MyQxIiwidjMkMiIsInYyJDEzIiwidjIkMTQiLCJ2MyQ1IiwidjIkMTEiLCJ2MiQxMiIsInYzJDYiLCJ2MyQzIiwidjIkOSIsInYyJDEwIiwidjMkNCIsInlvanNvbl9hcmdzJDI1IiwidjIkMjEiLCJ2MSQzOSIsInYwJDUxIiwidjAkNTIiLCJ2MSQ0MCIsInYyJDIyIiwieW9qc29uX2FyZ3MkMjQiLCJ2MSQzNyIsInYwJDQ5IiwidjAkNTAiLCJ2MSQzOCIsInYxJDM1IiwidjEkMzYiLCJ2MSQzMyIsInYxJDM0IiwidjIkMTkiLCJ2MSQzMSIsInYxJDMyIiwidjIkMjAiLCJ2MiQxNyIsInYxJDI5IiwidjEkMzAiLCJ2MiQxOCIsInYxJDI3IiwidjEkMjgiLCJ5b2pzb25fYXJncyQzNCIsInYxJDUxIiwidjAkNjkiLCJ2MCQ3MCIsInYxJDUyIiwieW9qc29uX2FyZ3MkMzMiLCJ2MSQ0OSIsInYwJDY3IiwidjAkNjgiLCJ2MSQ1MCIsInlvanNvbl9hcmdzJDMyIiwidjIkMjkiLCJ2MSQ0NyIsInYwJDY1IiwidjAkNjYiLCJ2MSQ0OCIsInYyJDMwIiwieW9qc29uX2FyZ3MkMzEiLCJ2MiQyNyIsInYxJDQ1IiwidjAkNjMiLCJ2MCQ2NCIsInYxJDQ2IiwidjIkMjgiLCJ5b2pzb25fYXJncyQzMCIsInYyJDI1IiwidjEkNDMiLCJ2MCQ2MSIsInYwJDYyIiwidjEkNDQiLCJ2MiQyNiIsInlvanNvbl9hcmdzJDI5IiwidjIkMjMiLCJ2MSQ0MSIsInYwJDU5IiwidjAkNjAiLCJ2MSQ0MiIsInYyJDI0IiwieW9qc29uX2FyZ3MkMjgiLCJ2MCQ1NyIsInYwJDU4IiwieW9qc29uX2FyZ3MkMjciLCJ2MCQ1NSIsInYwJDU2IiwieW9qc29uX2FyZ3MkMjYiLCJ2MCQ1MyIsInYwJDU0IiwieW9qc29uX29mX2Nhc2UiLCJ5b2pzb25fb2ZfcnVsZSIsImNvbnN0cnVjdG9yX3N0cmluZyIsImNhc3QiLCJhcHBseV9jYXN0cyIsImNhc3RzIiwic3RyaXBfY2FzdHMiLCJwYXJhbSQwIiwidSIsInJ1bGVzIiwic2NydXQiLCJpJDAiLCJ1JDAiLCJzdHJpcF9jYXN0c19ydWxlIiwiZCQwIiwiYiQwIiwiYiQxIiwiYiQyIiwiZCQxIiwiYyQxIiwiYiQzIiwiYiQ0IiwiYXJncyIsImZuIiwiZm4kMCIsImMkMiIsImIkNSIsImEkNCIsImMkMyIsImIkNiIsImEkNSIsImMkNCIsImIkNyIsImEkNiIsImMkNSIsImIkOCIsImEkNyIsImMkNiIsImIkOSIsImEkOCIsImQyIiwiZDEiLCJkMiQwIiwiZDEkMCIsImRzJDAiLCJkJDIiLCJiJDEwIiwiYSQ5IiwiZCQzIiwiZCQ0IiwiZDIkMSIsImQxJDEiLCJjJDciLCJmYXN0X2VxdWFsIiwidTEiLCJpMiIsInUyIiwiaTEiLCJyZWFzb24xIiwiaTIkMCIsInUyJDAiLCJyZWFzb24yIiwiaTEkMCIsInUxJDAiLCJ1MSQxIiwia3cyIiwiaTIkMSIsInUyJDEiLCJrdzEiLCJpMSQxIiwidTEkMiIsImkyJDIiLCJ1MiQyIiwiaTEkMiIsInUxJDMiLCJ0ZXh0MiIsImkyJDMiLCJ1MiQzIiwidGV4dDEiLCJpMSQzIiwidTEkNCIsImNhc2UyIiwiaTIkNCIsInUyJDQiLCJjYXNlMSIsImkxJDQiLCJmYXN0X2VxdWFsX2Nhc2UiLCJzaWdtYTEiLCJkMiQyIiwic2lnbWEyIiwiZDEkMiIsImYxIiwiZDIkMyIsImYyIiwiZDEkMyIsImQxMSIsImQyMiIsImQxMiIsImQyMSIsImQyMiQwIiwiZDEyJDAiLCJkMjEkMCIsImQxMSQwIiwiZjEkMCIsImQyJDQiLCJmMiQwIiwiZDEkNCIsInMyIiwiZDIkNSIsImRwMiQwIiwiZDEkNSIsImQyMiQxIiwiZDEyJDEiLCJkMjEkMSIsImQxMSQxIiwiZjEkMSIsImQyJDYiLCJmMiQxIiwiZDEkNiIsImYxJDIiLCJmMiQyIiwiaWQxIiwiZDIkNyIsImlkMiIsImQxJDciLCJzMSQwIiwiczIkMCIsIm9wMSIsImQyMiQyIiwiZDEyJDIiLCJvcDIiLCJkMjEkMiIsImQxMSQyIiwib3AxJDAiLCJkMjIkMyIsImQxMiQzIiwib3AyJDAiLCJkMjEkMyIsImQxMSQzIiwib3AxJDEiLCJkMjIkNCIsImQxMiQ0Iiwib3AyJDEiLCJkMjEkNCIsImQxMSQ0Iiwib3AxJDIiLCJkMjIkNSIsImQxMiQ1Iiwib3AyJDIiLCJkMjEkNSIsImQxMSQ1IiwiZHMyIiwiZHMxIiwiZDExJDYiLCJkMjIkNiIsImQxMiQ2IiwiZDIxJDYiLCJkczEkMCIsImRzMiQwIiwiZDEkOCIsImQyJDgiLCJjYXNlMSQwIiwiY2FzZTIkMCIsInR5MjIiLCJ0eTEyIiwiZDIkOSIsInR5MjEiLCJ0eTExIiwiZDEkOSIsImQxJDEwIiwicmVhc29uMiQwIiwiZDIkMTAiLCJyZWFzb24xJDAiLCJjMSIsImQyMyIsImQyMiQ3IiwiZDIxJDciLCJjMiIsImQxMyIsImQxMiQ3IiwiZDExJDciLCJydWxlczIiLCJydWxlczEiLCJzZXhwXzQ5OCIsImZpZWxkX3NleHBzXzQ5OSIsInBhdF81MDAiLCJhY3RfNTAyIiwiZHVwbGljYXRlc181MDQiLCJleHRyYV81MDUiLCJpdGVyXzUxMiIsInNleHBfNDk4JDAiLCJmaWVsZF9zZXhwc181MDgiLCJmaWVsZF9uYW1lXzUwNiIsInRhaWxfNTEzIiwiZmllbGRfc2V4cF81MDckMiIsImZpZWxkX3NleHBfNTA3IiwieF81MTQiLCJmaWVsZF9zZXhwXzUwNyQwIiwiZnZhbHVlXzUxMCIsImZpZWxkX3NleHBfNTA3JDEiLCJmdmFsdWVfNTA5IiwiYWN0XzUwMyIsInBhdF81MDEiLCJhY3RfNTE4IiwicGF0XzUxNiIsImFyZ181MTkiLCJibmRzXzUxNSIsImFyZ181MTciLCJibmRzXzUxNSQwIiwicGF0X2ZpZWxkIiwiYWN0X2ZpZWxkIiwiYWN0X3ZhbHVlIiwicGF0X3ZhbHVlIiwidl9hY3QiLCJ2X3BhdCIsInBhdCIsImFjdCIsImZhc3RfZXF1YWwkMCIsInN0cmlwX2Nhc3RzJDAiLCJ0X29mX3NleHAkNSIsInNleHBfNTI0IiwidGFnXzUyNSIsInNleHBfYXJnc181MzEiLCJhcmcxXzUzMyIsImFyZzBfNTMyIiwicmVzMF81MzQiLCJyZXMxXzUzNSIsInNleHBfYXJnc181MjYiLCJhcmcwXzUyNyIsInJlczBfNTI4Iiwic2V4cF9vZl90JDUiLCJhcmcwXzUzNiIsInJlczBfNTM3IiwiYXJnMV81MzkiLCJyZXMwXzU0MCIsInJlczFfNTQxIiwiZmFzdF9lcXVhbCQxIiwiZmx0MSIsImZsdDIiLCJhY3QxIiwiaWR4MSIsImFjdDIiLCJpZHgyIiwic3RyaXBfY2FzdHMkMSIsImZsdCIsImlkeCIsIm1hcHBlciIsInRfb2Zfc2V4cCQ2IiwieF81NDMiLCJzZXhwX29mX3QkNiIsInhfNTQ0IiwidF9vZl95b2pzb24kNSIsInlvanNvbl9vZl90JDUiLCJleHRlbmRzJDAiLCJzZXhwX2FyZ3NfMDQyIiwiYXJnMF8wNDMiLCJyZXMwXzA0NCIsImFyZzFfMDU5IiwicmVzMF8wNzIiLCJhcmcwXzA3NSIsInJlczBfMDc2IiwiYXJnMF8wNzciLCJyZXMwXzA3OCIsImFyZzBfMDc5IiwiYXJnMF8wODEiLCJyZXMwXzA4MiIsImFyZzBfMDgzIiwicmVzMF8wODQiLCJyZXMwXzA4NiIsImFyZzFfMDg4IiwiYXJnMF8wODciLCJyZXMwXzA4OSIsInJlczFfMDkwIiwiYXJnMF8wOTEiLCJyZXMwXzA5MiIsInBwX2J1aWx0aW4iLCJzaG93X2J1aWx0aW4iLCJidWlsdGluX29mX3NleHAiLCJyZXMyXzAyMCIsInNleHBfb2ZfYnVpbHRpbiIsImFyZzFfMDIyIiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJyZXMyXzAzMCIsImJ1aWx0aW5fb2ZfeW9qc29uIiwieW9qc29uX29mX2J1aWx0aW4iLCJ4XzAzMiIsInhfMDMzIiwicHBfZm9ybXMiLCJzaG93X2Zvcm1zIiwiZm9ybXNfb2Zfc2V4cCIsInhfMDM1Iiwic2V4cF9vZl9mb3JtcyIsImZvcm1zX29mX3lvanNvbiIsInlvanNvbl9vZl9mb3JtcyIsImNvbnN0JDAiLCJidWlsdGlucyIsImltcGwiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsImVwc2lsb25fZmxvYXQiLCJwaSIsIm1heF9pbnQiLCJtaW5faW50IiwidW5hcnkiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInN0cmluZ19vZl9pbnQiLCJzdHJpbmdfb2ZfZmxvYXQiLCJzdHJpbmdfb2ZfYm9vbCIsImludF9vZl9mbG9hdCIsImZsb2F0X29mX2ludCIsImFicyIsImZsb2F0X29wIiwiYWJzX2Zsb2F0IiwiY2VpbCIsImZsb29yIiwic3FydCIsImV4cCIsImxvZyIsImxvZzEwIiwic2luIiwiY29zIiwidGFuIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiY29udmVydCIsImludF9vZl9zdHJpbmciLCJmbG9hdF9vZl9zdHJpbmciLCJib29sX29mX3N0cmluZyIsImludF9tb2QiLCJzdHJpbmdfbGVuZ3RoIiwic3RyaW5nX2NvbXBhcmUiLCJzdHJpbmdfdHJpbSIsInN0cmluZ19vZiIsInN0cmluZ19jb25jYXQiLCJzdHJpbmdfc3ViIiwibGVuIiwibWV0YV9jb25zX21hcCIsIm1ldGEiLCJjdHhfaW5pdCIsImZvcm1zX2luaXQiLCJlbnZfaW5pdCIsImVycm9yX3NvdXJjZV8wNzciLCJzaG93X2Nhc2VfY2xhdXNlc18wMDQiLCJzaG93X2ZuX2JvZGllc18wMDYiLCJzaG93X2ZpeHBvaW50c18wMDgiLCJzaG93X2Nhc3RzXzAxMCIsInNob3dfbG9va3VwX3N0ZXBzXzAxMiIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzAxNCIsInN0ZXBwZXJfaGlzdG9yeV8wMTYiLCJzaG93X3NldHRpbmdzXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfbmFtZV8wMjIiLCJmaWVsZF9zZXhwXzAyMyQ4IiwiZmllbGRfc2V4cF8wMjMiLCJmaWVsZF9zZXhwXzAyMyQwIiwiZmllbGRfc2V4cF8wMjMkMSIsImZ2YWx1ZV8wMjciLCJmaWVsZF9zZXhwXzAyMyQyIiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjgiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZmllbGRfc2V4cF8wMjMkNSIsImZpZWxkX3NleHBfMDIzJDYiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNyIsInNob3dfc2V0dGluZ3NfMDE5Iiwic3RlcHBlcl9oaXN0b3J5XzAxNyIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzAxNSIsInNob3dfbG9va3VwX3N0ZXBzXzAxMyIsInNob3dfY2FzdHNfMDExIiwic2hvd19maXhwb2ludHNfMDA5Iiwic2hvd19mbl9ib2RpZXNfMDA3Iiwic2hvd19jYXNlX2NsYXVzZXNfMDA1Iiwic2hvd19zZXR0aW5nc18wNTIiLCJzdGVwcGVyX2hpc3RvcnlfMDUwIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfMDQ4Iiwic2hvd19sb29rdXBfc3RlcHNfMDQ2Iiwic2hvd19jYXN0c18wNDQiLCJzaG93X2ZpeHBvaW50c18wNDIiLCJzaG93X2ZuX2JvZGllc18wNDAiLCJzaG93X2Nhc2VfY2xhdXNlc18wMzgiLCJhcmdfMDUxIiwiYXJnXzA0OSIsImJuZHNfMDM3JDIiLCJibmRzXzAzNyQzIiwiYm5kc18wMzckNCIsImJuZHNfMDM3JDUiLCJibmRzXzAzNyQ2Iiwic2hvd19jYXNlX2NsYXVzZXNfZmllbGQiLCJzaG93X2ZuX2JvZGllc19maWVsZCIsInNob3dfZml4cG9pbnRzX2ZpZWxkIiwic2hvd19jYXN0c19maWVsZCIsInNob3dfbG9va3VwX3N0ZXBzX2ZpZWxkIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfZmllbGQiLCJzdGVwcGVyX2hpc3RvcnlfZmllbGQiLCJzaG93X3NldHRpbmdzX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2Iiwic2hvd19zZXR0aW5nc192YWx1ZSIsInN0ZXBwZXJfaGlzdG9yeV92YWx1ZSIsInNob3dfc3RlcHBlcl9maWx0ZXJzX3ZhbHVlIiwic2hvd19sb29rdXBfc3RlcHNfdmFsdWUiLCJzaG93X2Nhc3RzX3ZhbHVlIiwic2hvd19maXhwb2ludHNfdmFsdWUiLCJzaG93X2ZuX2JvZGllc192YWx1ZSIsInNob3dfY2FzZV9jbGF1c2VzX3ZhbHVlIiwidl9zaG93X3NldHRpbmdzIiwidl9zdGVwcGVyX2hpc3RvcnkiLCJ2X3Nob3dfc3RlcHBlcl9maWx0ZXJzIiwidl9zaG93X2xvb2t1cF9zdGVwcyIsInZfc2hvd19jYXN0cyIsInZfc2hvd19maXhwb2ludHMiLCJ2X3Nob3dfZm5fYm9kaWVzIiwidl9zaG93X2Nhc2VfY2xhdXNlcyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsInNleHBfMDU1IiwiZmllbGRfc2V4cHNfMDU2Iiwic3RhdGljc18wNTciLCJlbGFib3JhdGVfMDU5IiwiYXNzaXN0XzA2MSIsImR5bmFtaWNzXzA2MyIsImV2YWx1YXRpb25fMDY1IiwiZHVwbGljYXRlc18wNjciLCJleHRyYV8wNjgiLCJpdGVyXzA3OCIsInNleHBfMDU1JDAiLCJmaWVsZF9zZXhwc18wNzEiLCJmaWVsZF9uYW1lXzA2OSIsInRhaWxfMDc5IiwiZmllbGRfc2V4cF8wNzAkNSIsImZpZWxkX3NleHBfMDcwIiwieF8wODAiLCJmaWVsZF9zZXhwXzA3MCQwIiwiZnZhbHVlXzA3NiIsImZpZWxkX3NleHBfMDcwJDEiLCJmdmFsdWVfMDcyIiwiZmllbGRfc2V4cF8wNzAkMiIsImZ2YWx1ZV8wNzUiLCJmaWVsZF9zZXhwXzA3MCQzIiwiZnZhbHVlXzA3MyIsImZpZWxkX3NleHBfMDcwJDQiLCJmdmFsdWVfMDc0IiwiZXZhbHVhdGlvbl8wNjYiLCJkeW5hbWljc18wNjQiLCJhc3Npc3RfMDYyIiwiZWxhYm9yYXRlXzA2MCIsInN0YXRpY3NfMDU4IiwiZXZhbHVhdGlvbl8wOTAiLCJkeW5hbWljc18wODgiLCJhc3Npc3RfMDg2IiwiZWxhYm9yYXRlXzA4NCIsInN0YXRpY3NfMDgyIiwiYXJnXzA5MSIsImJuZHNfMDgxIiwiYXJnXzA4OSIsImJuZHNfMDgxJDAiLCJhcmdfMDg3IiwiYm5kc18wODEkMSIsImFyZ18wODUiLCJibmRzXzA4MSQyIiwiYXJnXzA4MyIsImJuZHNfMDgxJDMiLCJzdGF0aWNzX2ZpZWxkIiwiZWxhYm9yYXRlX2ZpZWxkIiwiYXNzaXN0X2ZpZWxkIiwiZHluYW1pY3NfZmllbGQiLCJldmFsdWF0aW9uX2ZpZWxkIiwiZXZhbHVhdGlvbl92YWx1ZSIsImR5bmFtaWNzX3ZhbHVlIiwiYXNzaXN0X3ZhbHVlIiwiZWxhYm9yYXRlX3ZhbHVlIiwic3RhdGljc192YWx1ZSIsInZfZXZhbHVhdGlvbiIsInZfZHluYW1pY3MiLCJ2X2Fzc2lzdCIsInZfZWxhYm9yYXRlIiwidl9zdGF0aWNzIiwib2ZmIiwib24iLCJlcnJvcl9zb3VyY2VfMDM1IiwiZXJyb3Jfc291cmNlXzM5MyIsInJlczBfMDI2IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsIl8xMDgiLCJfMTA3IiwiXzEwNiIsIl8xMDUiLCJfMTA0IiwiXzEwMyIsIl8xMDIiLCJfMTAxIiwiXzEwMCIsIl85OSIsIl85OCIsIl85NyIsIl85NiIsIl85NSIsIl85NCIsIl85MyIsIl85MiIsIl85MSIsIl85MCIsIl84OSIsIl84OCIsIl84NyIsIl84NiIsIl84NSIsIl84NCIsIl84MyIsIl84MiIsIl84MSIsIl84MCIsIl83OSIsIl83OCIsIl83NyIsIl83NiIsIl83NSIsIl83NCIsImE0IiwiYTMkMyIsImExJDI2IiwiYTEkMjciLCJhMSQyOCIsImEzJDQiLCJhMiQxNSIsImExJDI5IiwiYTIkMTYiLCJhMSQzMCIsImEyJDE3IiwiYTEkMzEiLCJhMSQzMiIsImE0JDAiLCJhMyQ1IiwiYTIkMTgiLCJhMSQzMyIsImEyJDE5IiwiYTEkMzQiLCJhMCQzNSIsImE2IiwiYTUiLCJhNCQxIiwiYTMkNiIsImEyJDIwIiwiYTEkMzUiLCJhMCQzNiIsInNleHBfMDM3IiwidGFnXzAzOCIsImFyZzJfMDk5IiwiYXJnMV8wOTgiLCJyZXMxXzEwMSIsInJlczJfMTAyIiwiYXJnMV8yODQiLCJyZXMwXzI4NSIsInJlczFfMjg2IiwicmVzMF8yOTIiLCJyZXMxXzI5MyIsInNleHBfYXJnc18yNTAiLCJhcmc0XzI2MCIsImFyZzNfMjU5IiwiYXJnMl8yNTgiLCJhcmcxXzI1NyIsImFyZzBfMjU2IiwicmVzMF8yNjEiLCJyZXMxXzI2MiIsInJlczJfMjYzIiwicmVzM18yNjQiLCJhcmcxXzI1MiIsImFyZzBfMjUxIiwicmVzNF8yNjUiLCJzZXhwX2FyZ3NfMzAzIiwiYXJnM18zMDciLCJhcmcyXzMwNiIsImFyZzFfMzA1IiwiYXJnMF8zMDQiLCJyZXMwXzMwOCIsInJlczFfMzA5IiwicmVzMl8zMTAiLCJyZXMzXzMxMSIsInNleHBfYXJnc18yOTYiLCJhcmcxXzI5OCIsImFyZzBfMjk3IiwicmVzMF8yOTkiLCJyZXMxXzMwMCIsInNleHBfYXJnc18wNTMiLCJzZXhwX2FyZ3NfMDYwIiwiYXJnMV8wNjIiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzI0MyIsImFyZzFfMjQ1IiwiYXJnMF8yNDQiLCJyZXMxXzI0NyIsInNleHBfYXJnc18yMjQiLCJyZXMwXzIzMiIsImFyZzFfMjI2IiwiYXJnMF8yMjUiLCJyZXMwXzIyNyIsInJlczFfMjI4IiwicmVzMV8yMzMiLCJzZXhwX2FyZ3NfMDg1IiwiYXJnM18wODkiLCJhcmcyXzA4OCIsImFyZzFfMDg3IiwiYXJnMF8wODYiLCJyZXMxXzA5MSIsInJlczJfMDkyIiwicmVzM18wOTMiLCJzZXhwX2FyZ3NfMTE5IiwiYXJnM18xMjMiLCJhcmcyXzEyMiIsImFyZzFfMTIxIiwiYXJnMF8xMjAiLCJyZXMwXzEyNCIsInJlczFfMTI1IiwicmVzMl8xMjYiLCJyZXMzXzEyNyIsInNleHBfYXJnc18xMzAiLCJhcmczXzEzNCIsImFyZzJfMTMzIiwiYXJnMV8xMzIiLCJyZXMwXzEzNSIsInJlczFfMTM2IiwicmVzMl8xMzciLCJyZXMzXzEzOCIsInNleHBfYXJnc18xNDEiLCJhcmczXzE0NSIsImFyZzJfMTQ0IiwiYXJnMV8xNDMiLCJyZXMwXzE0NiIsInJlczFfMTQ3IiwicmVzMl8xNDgiLCJyZXMzXzE0OSIsInNleHBfYXJnc18zNjIiLCJzZXhwX2FyZ3NfMzcxIiwiYXJnNl8zODMiLCJhcmc1XzM4MiIsImFyZzRfMzgxIiwiYXJnM18zODAiLCJhcmcyXzM3OSIsInJlczBfMzg0IiwicmVzMV8zODUiLCJyZXMyXzM4NiIsInJlczNfMzg3IiwicmVzNF8zODgiLCJhcmcxXzM3MyIsImFyZzBfMzcyIiwicmVzMF8zNzQiLCJyZXMxXzM3NSIsInJlczVfMzg5IiwicmVzNl8zOTAiLCJzZXhwX2FyZ3NfMzMyIiwiYXJnMV8zMzQiLCJhcmcwXzMzMyIsInJlczBfMzM1IiwicmVzMV8zMzYiLCJhcmcyXzA3MCIsImFyZzFfMDY5IiwicmVzMF8wNzEiLCJyZXMxXzA3MiIsInJlczJfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzJfMDc5IiwiYXJnMV8wNzgiLCJyZXMyXzA4MiIsInNleHBfYXJnc18yMDYiLCJhcmcyXzIwOSIsImFyZzFfMjA4IiwiYXJnMF8yMDciLCJyZXMwXzIxMCIsInJlczFfMjExIiwicmVzMl8yMTIiLCJhcmcyXzIxOCIsImFyZzFfMjE3IiwicmVzMF8yMTkiLCJyZXMxXzIyMCIsInJlczJfMjIxIiwic2V4cF9hcmdzXzMxNCIsImFyZzJfMzE3IiwiYXJnMV8zMTYiLCJhcmcwXzMxNSIsInJlczBfMzE4IiwicmVzMV8zMTkiLCJyZXMyXzMyMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzFfMjcwIiwicmVzMF8yNzEiLCJyZXMxXzI3MiIsInNleHBfYXJnc18yNzUiLCJhcmcxXzI3NyIsImFyZzBfMjc2IiwicmVzMF8yNzgiLCJyZXMxXzI3OSIsInNleHBfYXJnc18zMzkiLCJhcmcwXzM0MCIsInJlczBfMzQxIiwic2V4cF9hcmdzXzM0NCIsImFyZzRfMzU0IiwiYXJnM18zNTMiLCJhcmcyXzM1MiIsImFyZzFfMzUxIiwiYXJnMF8zNTAiLCJyZXMyXzM1NyIsImFyZzFfMzQ2IiwicmVzMF8zNDciLCJyZXMxXzM0OCIsInJlczNfMzU4IiwicmVzNF8zNTkiLCJzZXhwX2FyZ3NfMzIzIiwiYXJnMl8zMjYiLCJhcmcxXzMyNSIsImFyZzBfMzI0IiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5Iiwic2V4cF9hcmdzXzA0NiIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMxXzA1MCIsInNleHBfYXJnc18xMDUiLCJzZXhwX2FyZ3NfMTEyIiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzIzNiIsImFyZzFfMjM4IiwiYXJnMF8yMzciLCJyZXMwXzIzOSIsInJlczFfMjQwIiwic2V4cF9hcmdzXzE1MiIsImFyZzJfMTU1IiwiYXJnMV8xNTQiLCJyZXMxXzE1NyIsInJlczJfMTU4IiwiYXJnMl8xNjQiLCJhcmcxXzE2MyIsInJlczFfMTY2IiwicmVzMl8xNjciLCJhcmcyXzE5MSIsImFyZzFfMTkwIiwicmVzMF8xOTIiLCJyZXMxXzE5MyIsInJlczJfMTk0Iiwic2V4cF9hcmdzXzE5NyIsImFyZzJfMjAwIiwiYXJnMV8xOTkiLCJhcmcwXzE5OCIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInNleHBfYXJnc18xNzAiLCJhcmcyXzE3MyIsImFyZzFfMTcyIiwiYXJnMF8xNzEiLCJyZXMwXzE3NCIsInJlczFfMTc1IiwicmVzMl8xNzYiLCJzZXhwX2FyZ3NfMTc5IiwiYXJnMl8xODIiLCJhcmcxXzE4MSIsImFyZzBfMTgwIiwicmVzMF8xODMiLCJyZXMxXzE4NCIsInJlczJfMTg1Iiwic2V4cF8zOTUiLCJ0YWdfMzk2Iiwic2V4cF9hcmdzXzM5NyIsImFyZzJfNDAwIiwiYXJnMV8zOTkiLCJhcmcwXzM5OCIsInJlczBfNDAxIiwicmVzMV80MDIiLCJyZXMyXzQwMyIsInJlczBfNDA3IiwicmVzMV80MDgiLCJhcmcyXzQyOSIsInJlczBfNDMwIiwicmVzMV80MzEiLCJyZXMyXzQzMiIsImFyZzNfNDM2IiwiYXJnMl80MzUiLCJhcmcxXzQzNCIsImFyZzBfNDMzIiwicmVzMl80MzkiLCJyZXMzXzQ0MCIsImFyZzJfNDQzIiwicmVzMF80NDQiLCJyZXMxXzQ0NSIsInJlczJfNDQ2IiwiYXJnMV80NDgiLCJyZXMwXzQ0OSIsInJlczFfNDUwIiwiYXJnMV80NTIiLCJhcmcwXzQ1MSIsInJlczFfNDU0IiwiYXJnM180NTgiLCJyZXMwXzQ1OSIsInJlczFfNDYwIiwicmVzMl80NjEiLCJyZXMzXzQ2MiIsImFyZzNfNDY2IiwiYXJnMl80NjUiLCJhcmcxXzQ2NCIsImFyZzBfNDYzIiwicmVzMF80NjciLCJyZXMxXzQ2OCIsInJlczJfNDY5IiwicmVzM180NzAiLCJhcmczXzQ3NCIsImFyZzJfNDczIiwiYXJnMV80NzIiLCJhcmcwXzQ3MSIsInJlczBfNDc1IiwicmVzMV80NzYiLCJyZXMyXzQ3NyIsInJlczNfNDc4IiwiYXJnMl80ODEiLCJyZXMwXzQ4MiIsInJlczFfNDgzIiwicmVzMl80ODQiLCJhcmcyXzQ4NyIsImFyZzFfNDg2IiwiYXJnMF80ODUiLCJyZXMwXzQ4OCIsInJlczFfNDg5IiwicmVzMl80OTAiLCJhcmcyXzQ5MyIsImFyZzFfNDkyIiwiYXJnMF80OTEiLCJyZXMwXzQ5NCIsInJlczFfNDk1IiwicmVzMl80OTYiLCJhcmcyXzQ5OSIsImFyZzFfNDk4IiwiYXJnMF80OTciLCJyZXMxXzUwMSIsInJlczJfNTAyIiwiYXJnMl81MDUiLCJhcmcxXzUwNCIsImFyZzBfNTAzIiwicmVzMF81MDYiLCJyZXMxXzUwNyIsInJlczJfNTA4IiwiYXJnMl81MTEiLCJyZXMwXzUxMiIsInJlczFfNTEzIiwicmVzMl81MTQiLCJhcmcyXzUxNyIsImFyZzFfNTE2IiwiYXJnMF81MTUiLCJyZXMyXzUyMCIsImFyZzJfNTIzIiwiYXJnMV81MjIiLCJhcmcwXzUyMSIsInJlczBfNTI0IiwicmVzMV81MjUiLCJyZXMyXzUyNiIsImFyZzFfNTMyIiwiYXJnMF81MzEiLCJyZXMwXzUzMyIsImFyZzFfNTI4IiwicmVzMF81MjkiLCJyZXMxXzUzMCIsInJlczFfNTM0IiwiYXJnMV81MzYiLCJhcmcwXzUzNSIsInJlczFfNTM4IiwiYXJnMV81NDAiLCJhcmcwXzUzOSIsInJlczFfNTQyIiwiYXJnNF81NTEiLCJhcmczXzU1MCIsImFyZzJfNTQ5IiwiYXJnMV81NDgiLCJhcmcwXzU0NyIsInJlczBfNTUyIiwicmVzMV81NTMiLCJyZXMyXzU1NCIsInJlczNfNTU1IiwiYXJnMV81NDQiLCJhcmcwXzU0MyIsInJlczFfNTQ2IiwicmVzNF81NTYiLCJhcmcxXzU1OCIsImFyZzBfNTU3IiwicmVzMV81NjAiLCJhcmcxXzU2MiIsImFyZzBfNTYxIiwicmVzMV81NjQiLCJhcmcxXzU2NiIsImFyZzBfNTY1IiwicmVzMF81NjciLCJyZXMxXzU2OCIsImFyZzFfNTcwIiwiYXJnMF81NjkiLCJyZXMwXzU3MSIsInJlczFfNTcyIiwiYXJnMV81NzQiLCJhcmcwXzU3MyIsInJlczBfNTc1IiwicmVzMV81NzYiLCJhcmczXzU4MCIsImFyZzJfNTc5IiwiYXJnMV81NzgiLCJhcmcwXzU3NyIsInJlczBfNTgxIiwicmVzMV81ODIiLCJyZXMyXzU4MyIsInJlczNfNTg0IiwiYXJnMl81ODciLCJhcmcxXzU4NiIsImFyZzBfNTg1IiwicmVzMF81ODgiLCJyZXMxXzU4OSIsInJlczJfNTkwIiwiYXJnMl81OTMiLCJhcmcxXzU5MiIsImFyZzBfNTkxIiwicmVzMF81OTQiLCJyZXMxXzU5NSIsInJlczJfNTk2IiwiYXJnMV81OTgiLCJhcmcwXzU5NyIsInJlczBfNTk5IiwicmVzMV82MDAiLCJhcmcwXzYwMSIsInJlczBfNjAyIiwiYXJnNF82MTEiLCJhcmczXzYxMCIsImFyZzJfNjA5IiwiYXJnMV82MDgiLCJhcmcwXzYwNyIsInJlczBfNjEyIiwicmVzMV82MTMiLCJyZXMyXzYxNCIsImFyZzFfNjA0IiwiYXJnMF82MDMiLCJyZXMxXzYwNiIsInJlczNfNjE1IiwicmVzNF82MTYiLCJhcmcyXzYxOSIsImFyZzFfNjE4IiwiYXJnMF82MTciLCJyZXMwXzYyMCIsInJlczFfNjIxIiwicmVzMl82MjIiLCJhcmc2XzYzMyIsImFyZzVfNjMyIiwiYXJnNF82MzEiLCJhcmczXzYzMCIsImFyZzJfNjI5IiwiYXJnMV82MjgiLCJhcmcwXzYyNyIsInJlczFfNjM1IiwicmVzMl82MzYiLCJyZXMzXzYzNyIsInJlczRfNjM4IiwiYXJnMV82MjQiLCJhcmcwXzYyMyIsInJlczBfNjI1IiwicmVzMV82MjYiLCJyZXM1XzYzOSIsInJlczZfNjQwIiwiYXJnMl82NDMiLCJhcmcxXzY0MiIsImFyZzBfNjQxIiwicmVzMF82NDQiLCJyZXMxXzY0NSIsInJlczJfNjQ2IiwidjQiLCJ2NCQwIiwidjMkMTEiLCJ2MyQxMiIsInYzJDkiLCJ2MyQxMCIsInYzJDciLCJ2MyQ4IiwidjYiLCJ2NSIsInY0JDEiLCJ2NCQyIiwidjUkMCIsInY2JDAiLCJ2MSQ2MSIsInYxJDYyIiwidjEkNTkiLCJ2MSQ2MCIsInYxJDU3IiwidjEkNTgiLCJ2MSQ1NSIsInYxJDU2IiwidjEkNTMiLCJ2MSQ1NCIsInY0JDMiLCJ2MyQxMyIsInYzJDE0IiwidjQkNCIsInlvanNvbl9hcmdzJDM2IiwidjEkNzkiLCJ2MCQ4MSIsInYwJDgyIiwidjEkODAiLCJ5b2pzb25fYXJncyQzNSIsInYxJDc3IiwidjAkNzkiLCJ2MCQ4MCIsInYxJDc4IiwidjEkNzUiLCJ2MCQ3NyIsInYwJDc4IiwidjEkNzYiLCJ2MiQ0MSIsInYxJDczIiwidjAkNzUiLCJ2MCQ3NiIsInYxJDc0IiwidjIkNDIiLCJ2MiQzOSIsInYxJDcxIiwidjAkNzMiLCJ2MCQ3NCIsInYxJDcyIiwidjIkNDAiLCJ2MiQzNyIsInYxJDY5IiwidjAkNzEiLCJ2MCQ3MiIsInYxJDcwIiwidjIkMzgiLCJ2MiQzNSIsInYxJDY3IiwidjEkNjgiLCJ2MiQzNiIsInYyJDMzIiwidjEkNjUiLCJ2MSQ2NiIsInYyJDM0IiwidjIkMzEiLCJ2MSQ2MyIsInYxJDY0IiwidjIkMzIiLCJmdXp6eV9tYXJrIiwidW53cmFwIiwibGQiLCJsZCQwIiwic2NydXQkMCIsImN0eCQzIiwiY3R4JDIiLCJjdHgkMSIsImNvbnN0X3Vua25vd24iLCJjYXN0X3N1bV9tYXBzIiwidHlzMSQwIiwidHlzMiQwIiwibWF0Y2hlcyQwIiwibjEkMCIsIm4yJDAiLCJiMSIsImIyIiwiZCQ1IiwiZCQ2IiwibWF0Y2hlcyIsImVudiQwIiwiZCQ3IiwibWF0Y2hlc19jYXN0X1R1cGxlIiwidHlzJDAiLCJ0eXMkMSIsImQkOCIsImNhc3RtYXAiLCJtYXRjaGVzX2Nhc3RfU3VtIiwiZCQxMCIsImQkOSIsImRwX29wdCIsImN0ciQxIiwic20xJDAiLCJzbTIkMCIsImNhc3RtYXAkMCIsIm1hdGNoZXNfY2FzdF9Db25zIiwiY2FzdG1hcHMiLCJjYXN0bWFwcyQwIiwic2lkZV9jYXN0cyIsImNhc3RtYXBzJDEiLCJlbHRfY2FzdHMiLCJlbHRfY2FzdHMkMCIsImVsdF9jYXN0cyQxIiwidHlzJDIiLCJlbHRfY2FzdHMkMiIsInR5cyQzIiwiZWx0X2Nhc3RzJDMiLCJkdGwiLCJkaGQiLCJsc3QiLCJtYXRjaDEiLCJtYXRjaDIiLCJsaXN0X2Nhc3RzIiwiZHB0bCIsImRwaGQiLCJlbnYxJDAiLCJsaXN0X2Nhc3RzJDAiLCJlbnYyJDAiLCJkcDIkMSIsImVudjEkMSIsImxpc3RfY2FzdHMkMSIsImVudjIkMSIsInBwX2luc3RhbmNlX3JlcG9ydCIsInNob3dfaW5zdGFuY2VfcmVwb3J0IiwiaW5zdGFuY2VfcmVwb3J0X29mX3NleHAiLCJzZXhwX29mX2luc3RhbmNlX3JlcG9ydCIsImluc3RhbmNlX3JlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfaW5zdGFuY2VfcmVwb3J0Iiwiam9pbnRfc3RhdHVzIiwicmVwb3J0cyIsInBwX3JlcG9ydCIsInNob3dfcmVwb3J0IiwicmVwb3J0X29mX3NleHAiLCJzZXhwX29mX3JlcG9ydCIsInJlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVwb3J0IiwieF8wMjQiLCJ4XzAyNSIsImxvb2t1cF9hbmRfam9pbiIsInRlc3RfbWFwIiwicmVwb3J0IiwiY291bnRfc3RhdHVzIiwic3RhdHVzIiwiaW5zdGFuY2VzIiwiZ3JvdW5kZWRfQXJyb3ciLCJncm91bmRlZF9MaXN0IiwicHBfc3RlcF9raW5kIiwic2hvd19zdGVwX2tpbmQiLCJzdGVwX2tpbmRfb2Zfc2V4cCIsInNleHBfb2Zfc3RlcF9raW5kIiwicmVzMF8wNDAiLCJyZXMwXzA0NiIsInN0ZXBfa2luZF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcF9raW5kIiwiZ3JvdW5kX2Nhc2VzX29mX3NleHAiLCJzZXhwXzA1MSIsInRhZ18wNTIiLCJzZXhwX29mX2dyb3VuZF9jYXNlcyIsInJlczBfMDU3IiwiZ3JvdW5kZWRfUHJvZCIsImdyb3VuZGVkX1N1bSIsImdyb3VuZF9jYXNlc19vZiIsImlzX2dyb3VuZF9hcmciLCJldmFsdWF0ZV9leHRlbmRfZW52IiwibmV3X2JpbmRpbmdzIiwidG9fZXh0ZW5kIiwibGV0X21hdGNoIiwibWF0Y2hfcmVzdWx0IiwidHJhbnNpdGlvbiIsInJlcSIsInN0YXRlIiwicmVhc29uIiwiZDMiLCJpZGVudCIsImQzJDAiLCJidWlsdGluIiwib3AkMCIsIm9wJDEiLCJkMSQxMSIsImQxJDEyIiwidHMyIiwiZDEkMTMiLCJ0Ml9ncm91bmRlZCIsInQzIiwidDFfZ3JvdW5kZWQiLCJkMSQxNCIsImQxJDE1Iiwic2hvdWxkX2hpZGVfc3RlcCIsInNldHRpbmdzIiwiY29tYmluZSIsInIyIiwiYjIkMCIsInJlcV92YWx1ZSIsInZjIiwicmVxX2FsbF92YWx1ZSIsInJlcV9maW5hbCIsInJlcV9hbGxfZmluYWwiLCJvdGhlcndpc2UiLCJydWxlIiwidXBkYXRlX3Rlc3QiLCJjaGVja192YWx1ZSIsImNoZWNrX3ZhbHVlJDAiLCJjaGVja192YWx1ZV9tb2RfY3R4IiwiY2hlY2tfdmFsdWVfbW9kX2N0eCQwIiwiaXNfZXhwYW5kZXJfdG9rIiwidHJpbV9sYXN0IiwiaXNfZXhwYW5kZXIiLCJtYXJrIiwiY29tcGxldGlvbiIsImlkXzAwNCIsImV4cGVjdGVkX3R5XzAwNiIsImV4cGVjdGVkX3R5XzAwNyIsImV4cGVjdGVkX3R5XzAyMiIsImlkXzAyMCIsImV4cGVjdGVkX3R5X2ZpZWxkIiwiZXhwZWN0ZWRfdHlfdmFsdWUiLCJ2X2V4cGVjdGVkX3R5IiwieF8wMjYiLCJjb19jdHgiLCJjb19jdHgxIiwiY29fY3R4MiIsInVuaW9uIiwiZXhwZWN0ZWRfdHkiLCJlbnRyaWVzIiwiZXhwZWN0ZWRfdHlzIiwiYW5hIiwidHlfb2YiLCJvZl9hcnJvdyIsIm9mX3Byb2QiLCJvZl9jb25zX2hkIiwib2ZfY29uc190bCIsImhkX3R5Iiwib2ZfbGlzdF9jb25jYXQiLCJvZl9saXN0X2xpdCIsImN0cl9hbmFfdHlwIiwidHlfYW5hIiwidHlfZW50cnkiLCJvZl9jdHJfaW5fYXAiLCJvZl9hcCIsIm1vZGUkMCIsImVycm9yX3NvdXJjZV8wNjUiLCJlcnJvcl9zb3VyY2VfMDgzIiwicHBfam9pbl90eXBlIiwic2hvd19qb2luX3R5cGUiLCJqb2luX3R5cGVfb2Zfc2V4cCIsInNleHBfb2Zfam9pbl90eXBlIiwiam9pbl90eXBlX29mX3lvanNvbiIsInlvanNvbl9vZl9qb2luX3R5cGUiLCJhc3luX3R5IiwiYW5hbWUiLCJuYW1lXzAzNCIsInN5bl90eV8wMzYiLCJkdXBsaWNhdGVzXzAzOCIsImV4dHJhXzAzOSIsIml0ZXJfMDQ1Iiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wNDIiLCJmaWVsZF9uYW1lXzA0MCIsInRhaWxfMDQ2IiwiZmllbGRfc2V4cF8wNDEkMiIsImZpZWxkX3NleHBfMDQxIiwieF8wNDciLCJmaWVsZF9zZXhwXzA0MSQwIiwiZmllbGRfc2V4cF8wNDEkMSIsInN5bl90eV8wMzciLCJuYW1lXzAzNSIsImFyZzFfMDE4Iiwic3luX3R5XzA2MSIsIm5hbWVfMDU5IiwiYm5kc18wNTgiLCJibmRzXzA1OCQwIiwic3luX3R5X2ZpZWxkIiwic3luX3R5X3ZhbHVlIiwidl9zeW5fdHkiLCJwcF9leHAiLCJzaG93X2V4cCIsImV4cF9vZl9zZXhwIiwic2V4cF8wNjciLCJ0YWdfMDY4Iiwic2V4cF9hcmdzXzA2OSIsImFyZzBfMDcwIiwic2V4cF9hcmdzXzA3NCIsInNleHBfb2ZfZXhwIiwiZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9leHAiLCJwcF9wYXQiLCJzaG93X3BhdCIsInBhdF9vZl9zZXhwIiwic2V4cF8wODUiLCJ0YWdfMDg2Iiwic2V4cF9hcmdzXzA4NyIsImFyZzBfMDg4Iiwic2V4cF9vZl9wYXQiLCJhcmcwXzA5MCIsInJlczBfMDkxIiwicGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9wYXQiLCJqb2luX29mIiwidHlwX29mIiwic3luX3R5IiwidHlwX29mX2V4cCIsInNlbGYiLCJ0eXBfb2ZfcGF0Iiwib2ZfZXhwX3ZhciIsInZhciQwIiwib2ZfY3RyIiwiYWRkX3NvdXJjZSIsImxpc3RsaXQiLCJsaXN0X2NvbmNhdCIsImVycm9yX3NvdXJjZV8wMTEiLCJyZXBfaWQiLCJob2xlIiwidG1zIiwiY2xzX29mX3Rlcm0iLCJpc19hcnJvdyIsInR5cCQxIiwidG9fdHlwIiwidXR5cCIsInV0eXAkMCIsInVzIiwidXR5cCQxIiwidXRzIiwidG9fY3RyX21hcCIsInRvX3ZhcmlhbnQiLCJ1dCIsInBwX2NscyQwIiwiY2xzX29mX3NleHAkMCIsInNleHBfb2ZfY2xzJDAiLCJjbHNfb2ZfeW9qc29uJDAiLCJ5b2pzb25fb2ZfY2xzJDAiLCJyZXBfaWQkMCIsImhvbGUkMCIsImNsc19vZl90ZXJtJDAiLCJzaG93X2NscyQwIiwicHBfY2xzJDEiLCJjbHNfb2Zfc2V4cCQxIiwic2V4cF9vZl9jbHMkMSIsImNsc19vZl95b2pzb24kMSIsInlvanNvbl9vZl9jbHMkMSIsInJlcF9pZCQxIiwiaG9sZSQxIiwiY2xzX29mX3Rlcm0kMSIsInNob3dfY2xzJDEiLCJwYXQkMCIsInBhdCQxIiwiaXNfZnVuX3ZhciIsInBhdCQyIiwiaXNfdHVwbGVfb2ZfYXJyb3dzIiwicGF0cyIsImdldF92YXIiLCJnZXRfZnVuX3ZhciIsImdldF9yZWN1cnNpdmVfYmluZGluZ3MiLCJmdW5fdmFycyIsImN0cl9uYW1lIiwicHBfY2xzJDIiLCJzaG93X2NscyQyIiwiY2xzX29mX3NleHAkMiIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDI0Iiwic2V4cF9vZl9jbHMkMiIsImNsc19vZl95b2pzb24kMiIsInlvanNvbl9vZl9jbHMkMiIsImhvbGUkMiIsInJlcF9pZCQyIiwiY2xzX29mX3Rlcm0kMiIsInNob3dfdW5vcCIsInNob3dfYmlub3AiLCJvcCQyIiwic2hvd19jbHMkMyIsImUkMCIsImUkMSIsImlzX3R1cGxlX29mX2Z1bmN0aW9ucyIsImN0cl9uYW1lJDAiLCJwcF9jbHMkMyIsInNob3dfY2xzJDQiLCJjbHNfb2Zfc2V4cCQzIiwic2V4cF8wMzQiLCJzZXhwX29mX2NscyQzIiwiY2xzX29mX3lvanNvbiQzIiwieW9qc29uX29mX2NscyQzIiwiYW55X2lkcyIsInRlcm0iLCJ0bSIsInJlcF9pZCQzIiwicHAkNSIsInNob3ckNSIsInNleHBfMDM5IiwidGFnXzA0MCIsInNleHBfYXJnc18wNDEiLCJzZXhwX2FyZ3NfMDYxIiwiYXJnMF8wNjIiLCJzZXhwX2FyZ3NfMDY2Iiwic2V4cF9hcmdzXzA1MSIsInNob3ckNiIsImNscyIsImNscyQwIiwiY2xzJDEiLCJjbHMkMiIsImNscyQzIiwiY2xzJDQiLCJjbHMkNSIsImlkcyQwIiwidG0kMCIsInRtJDEiLCJ0bSQyIiwidG0kMyIsInJlcF9pZCQ0IiwiZXJyb3Jfc291cmNlXzA0NiIsImVycm9yX3NvdXJjZV8wNzEiLCJlcnJvcl9zb3VyY2VfMDg5IiwiZXJyb3Jfc291cmNlXzEwNyIsImVycm9yX3NvdXJjZV8xMTgiLCJlcnJvcl9zb3VyY2VfMTcxIiwiZXJyb3Jfc291cmNlXzE5MSIsImVycm9yX3NvdXJjZV8yMDkiLCJlcnJvcl9zb3VyY2VfMjI3IiwiZXJyb3Jfc291cmNlXzI0NSIsImVycm9yX3NvdXJjZV8yNDkiLCJlcnJvcl9zb3VyY2VfMjc1IiwiZXJyb3Jfc291cmNlXzMwNyIsImVycm9yX3NvdXJjZV8zNDciLCJlcnJvcl9zb3VyY2VfMzY1IiwiZXJyb3Jfc291cmNlXzM2OSIsImVycm9yX3NvdXJjZV8zODciLCJlcnJvcl9zb3VyY2VfMzk4IiwiZXJyb3Jfc291cmNlXzQ0OSIsImVycm9yX3NvdXJjZV81MDciLCJlcnJvcl9zb3VyY2VfNTU5IiwiZXJyb3Jfc291cmNlXzYwMSIsInRwX2xvYyQyMSIsImVycm9yX3NvdXJjZV82MzYiLCJ0cF9sb2MkMjIiLCJlcnJvcl9zb3VyY2VfNjUxIiwidHBfbG9jJDIzIiwiZXJyb3Jfc291cmNlXzY5MCIsInRwX2xvYyQyNCIsInBwX2FuY2VzdG9ycyIsInNob3dfYW5jZXN0b3JzIiwiYW5jZXN0b3JzX29mX3NleHAiLCJzZXhwX29mX2FuY2VzdG9ycyIsImFuY2VzdG9yc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfYW5jZXN0b3JzIiwicHBfZXJyb3JfaW5jb25zaXN0ZW50Iiwic2hvd19lcnJvcl9pbmNvbnNpc3RlbnQiLCJhc3luIiwiYWFuYSIsImVycm9yX2luY29uc2lzdGVudF9vZl9zZXhwIiwiZmllbGRfc2V4cHNfMDA4IiwiYW5hXzAxMSIsInN5bl8wMTMiLCJpdGVyXzAyMiIsInNleHBfMDA5JDAiLCJ0YWlsXzAyMyIsImZ2YWx1ZV8wMjAiLCJmdmFsdWVfMDIxIiwic3luXzAxNCIsImFuYV8wMTIiLCJzZXhwX29mX2Vycm9yX2luY29uc2lzdGVudCIsInN5bl8wMzgiLCJhbmFfMDM2IiwiYm5kc18wMzUiLCJhcmdfMDM3IiwiYm5kc18wMzUkMCIsImVycm9yX2luY29uc2lzdGVudF9vZl95b2pzb24iLCJhbmFfZmllbGQiLCJzeW5fZmllbGQiLCJzeW5fdmFsdWUiLCJhbmFfdmFsdWUiLCJ5b2pzb25fb2ZfZXJyb3JfaW5jb25zaXN0ZW50Iiwidl9zeW4iLCJ2X2FuYSIsInBwX2Vycm9yX25vX3R5cGUiLCJzaG93X2Vycm9yX25vX3R5cGUiLCJlcnJvcl9ub190eXBlX29mX3NleHAiLCJzZXhwXzA0OCIsInRhZ18wNDkiLCJzZXhwX2FyZ3NfMDU1Iiwic2V4cF9vZl9lcnJvcl9ub190eXBlIiwiZXJyb3Jfbm9fdHlwZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3Jfbm9fdHlwZSIsInBwX2Vycm9yX2NvbW1vbiIsInNob3dfZXJyb3JfY29tbW9uIiwiZXJyb3JfY29tbW9uX29mX3NleHAiLCJ0YWdfMDc0Iiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJzZXhwX2FyZ3NfMDgwIiwic2V4cF9vZl9lcnJvcl9jb21tb24iLCJlcnJvcl9jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX2NvbW1vbiIsInBwX2Vycm9yX2V4cCIsInNob3dfZXJyb3JfZXhwIiwiZXJyb3JfZXhwX29mX3NleHAiLCJzZXhwXzA5MSIsInRhZ18wOTIiLCJzZXhwX29mX2Vycm9yX2V4cCIsImVycm9yX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfZXhwIiwicHBfZXJyb3JfcGF0Iiwic2hvd19lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2Zfc2V4cCIsInNleHBfMTA5IiwidGFnXzExMCIsInNleHBfYXJnc18xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwic2V4cF9vZl9lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX3BhdCIsInBwX29rX2FuYSIsInNob3dfb2tfYW5hIiwiYWpvaW4iLCJhbm9qb2luIiwiYWFuYSQwIiwib2tfYW5hX29mX3NleHAiLCJzZXhwXzEyMSIsImZpZWxkX3NleHBzXzE0MCIsImFuYV8xNDMiLCJub2pvaW5fMTQ1IiwiZHVwbGljYXRlc18xNDciLCJleHRyYV8xNDgiLCJpdGVyXzE1NCIsInNleHBfMTQxIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE1NSIsImZpZWxkX3NleHBfMTUwJDIiLCJmaWVsZF9zZXhwXzE1MCIsInhfMTU2IiwiZmllbGRfc2V4cF8xNTAkMCIsImZ2YWx1ZV8xNTIiLCJmaWVsZF9zZXhwXzE1MCQxIiwiZnZhbHVlXzE1MyIsIm5vam9pbl8xNDYiLCJhbmFfMTQ0IiwiZmllbGRfc2V4cHNfMTIwIiwiYW5hXzEyMyIsInN5bl8xMjUiLCJqb2luXzEyNyIsImR1cGxpY2F0ZXNfMTI5IiwiZXh0cmFfMTMwIiwiaXRlcl8xMzciLCJzZXhwXzEyMSQwIiwiZmllbGRfc2V4cHNfMTMzIiwiZmllbGRfbmFtZV8xMzEiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMyJDMiLCJmaWVsZF9zZXhwXzEzMiIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzIkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMiQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMyJDIiLCJmdmFsdWVfMTM2Iiwiam9pbl8xMjgiLCJzeW5fMTI2IiwiYW5hXzEyNCIsInNleHBfb2Zfb2tfYW5hIiwiam9pbl8xNjIiLCJzeW5fMTYwIiwiYW5hXzE1OCIsImFyZ18xNjMiLCJibmRzXzE1NyIsImFyZ18xNjEiLCJibmRzXzE1NyQwIiwiYXJnXzE1OSIsImJuZHNfMTU3JDEiLCJub2pvaW5fMTY3IiwiYW5hXzE2NSIsImFyZ18xNjgiLCJibmRzXzE2NCIsImFyZ18xNjYiLCJibmRzXzE2NCQwIiwib2tfYW5hX29mX3lvanNvbiIsIm5vam9pbl9maWVsZCIsIm5vam9pbl92YWx1ZSIsImZpZWxkX3lvanNvbnMkMCIsImFuYV9maWVsZCQwIiwiam9pbl9maWVsZCIsImR1cGxpY2F0ZXMkMCIsImV4dHJhJDAiLCJpdGVyJDAiLCJqb2luX3ZhbHVlIiwiYW5hX3ZhbHVlJDAiLCJ5b2pzb25fb2Zfb2tfYW5hIiwidl9qb2luIiwidl9ub2pvaW4iLCJ2X2FuYSQwIiwicHBfb2tfY29tbW9uIiwic2hvd19va19jb21tb24iLCJva19jb21tb25fb2Zfc2V4cCIsInNleHBfMTczIiwidGFnXzE3NCIsInJlczBfMTc3Iiwic2V4cF9hcmdzXzE4MCIsInNleHBfb2Zfb2tfY29tbW9uIiwiYXJnMF8xODMiLCJyZXMwXzE4NCIsInJlczBfMTg2Iiwib2tfY29tbW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9va19jb21tb24iLCJwcF9va19leHAiLCJzaG93X29rX2V4cCIsInBwX29rX3BhdCIsInNob3dfb2tfcGF0IiwicHBfc3RhdHVzX2NvbW1vbiIsInNob3dfc3RhdHVzX2NvbW1vbiIsInN0YXR1c19jb21tb25fb2Zfc2V4cCIsInNleHBfMTkzIiwidGFnXzE5NCIsInNleHBfYXJnc18yMDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwic2V4cF9hcmdzXzE5NSIsImFyZzBfMTk2Iiwic2V4cF9vZl9zdGF0dXNfY29tbW9uIiwicmVzMF8yMDQiLCJhcmcwXzIwNSIsInN0YXR1c19jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXR1c19jb21tb24iLCJwcF9zdGF0dXNfZXhwIiwic2hvd19zdGF0dXNfZXhwIiwic3RhdHVzX2V4cF9vZl9zZXhwIiwic2V4cF8yMTEiLCJ0YWdfMjEyIiwic2V4cF9hcmdzXzIxOCIsImFyZzBfMjE5IiwicmVzMF8yMjAiLCJyZXMwXzIxNSIsInNleHBfb2Zfc3RhdHVzX2V4cCIsInJlczBfMjIyIiwiYXJnMF8yMjMiLCJzdGF0dXNfZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfZXhwIiwicHBfc3RhdHVzX3BhdCIsInNob3dfc3RhdHVzX3BhdCIsInN0YXR1c19wYXRfb2Zfc2V4cCIsInNleHBfMjI5IiwidGFnXzIzMCIsInJlczBfMjM4Iiwic2V4cF9hcmdzXzIzMSIsImFyZzBfMjMyIiwic2V4cF9vZl9zdGF0dXNfcGF0IiwicmVzMF8yNDAiLCJhcmcwXzI0MSIsInJlczBfMjQyIiwic3RhdHVzX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3BhdCIsInBwX3N0YXR1c192YXJpYW50Iiwic2hvd19zdGF0dXNfdmFyaWFudCIsInN0YXR1c192YXJpYW50X29mX3NleHAiLCJzZXhwXzI0NiIsInNleHBfb2Zfc3RhdHVzX3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3ZhcmlhbnQiLCJwcF90eXBfZXhwZWN0cyIsInNob3dfdHlwX2V4cGVjdHMiLCJ0eXBfZXhwZWN0c19vZl9zZXhwIiwic2V4cF8yNTEiLCJ0YWdfMjUyIiwic2V4cF9hcmdzXzI2MCIsImFyZzFfMjYyIiwiYXJnMF8yNjEiLCJyZXMwXzI2MyIsInJlczFfMjY0Iiwic2V4cF9hcmdzXzI1MyIsImFyZzFfMjU1IiwiYXJnMF8yNTQiLCJzZXhwX29mX3R5cF9leHBlY3RzIiwiYXJnMV8yNjYiLCJhcmcwXzI2NSIsInJlczBfMjY3IiwicmVzMV8yNjgiLCJ0eXBfZXhwZWN0c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHlwX2V4cGVjdHMiLCJwcF9lcnJvcl90eXAiLCJzaG93X2Vycm9yX3R5cCIsImVycm9yX3R5cF9vZl9zZXhwIiwic2V4cF8yNzciLCJ0YWdfMjc4Iiwic2V4cF9hcmdzXzI3OSIsImFyZzBfMjgwIiwicmVzMF8yODEiLCJyZXMwXzI5MSIsInNleHBfYXJnc18yODQiLCJhcmcwXzI4NSIsInJlczBfMjg2IiwicmVzMF8yOTYiLCJzZXhwX29mX2Vycm9yX3R5cCIsInJlczBfMjk4IiwiYXJnMF8yOTkiLCJyZXMwXzMwMCIsImFyZzBfMzAxIiwicmVzMF8zMDIiLCJlcnJvcl90eXBfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX3R5cCIsInBwX29rX3R5cCIsInNob3dfb2tfdHlwIiwiXzAkMTQiLCJva190eXBfb2Zfc2V4cCIsInNleHBfMzA5IiwidGFnXzMxMCIsInNleHBfYXJnc18zMTgiLCJzZXhwX2FyZ3NfMzExIiwiYXJnMV8zMTMiLCJhcmcwXzMxMiIsInJlczBfMzE0IiwicmVzMV8zMTUiLCJyZXMwXzMyNiIsInJlczFfMzI3Iiwic2V4cF9hcmdzXzMzMCIsInJlczBfMzMyIiwic2V4cF9vZl9va190eXAiLCJyZXMwXzMzOCIsImFyZzFfMzQwIiwiYXJnMF8zMzkiLCJyZXMxXzM0MiIsInJlczBfMzQ0Iiwib2tfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9va190eXAiLCJwcF9zdGF0dXNfdHlwIiwic2hvd19zdGF0dXNfdHlwIiwiXzAkMTUiLCJzdGF0dXNfdHlwX29mX3NleHAiLCJzZXhwXzM0OSIsInRhZ18zNTAiLCJzZXhwX2FyZ3NfMzU2Iiwic2V4cF9hcmdzXzM1MSIsImFyZzBfMzUyIiwicmVzMF8zNTMiLCJzZXhwX29mX3N0YXR1c190eXAiLCJyZXMwXzM2MiIsInN0YXR1c190eXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXR1c190eXAiLCJwcF90eXBlX3Zhcl9lcnIiLCJzaG93X3R5cGVfdmFyX2VyciIsInR5cGVfdmFyX2Vycl9vZl9zZXhwIiwic2V4cF8zNjYiLCJzZXhwX29mX3R5cGVfdmFyX2VyciIsInR5cGVfdmFyX2Vycl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHlwZV92YXJfZXJyIiwicHBfZXJyb3JfdHBhdCIsInNob3dfZXJyb3JfdHBhdCIsIl8wJDE2IiwiZXJyb3JfdHBhdF9vZl9zZXhwIiwic2V4cF8zNzEiLCJ0YWdfMzcyIiwic2V4cF9hcmdzXzM3MyIsImFyZzBfMzc0IiwicmVzMF8zNzUiLCJzZXhwX2FyZ3NfMzc4IiwiYXJnMF8zNzkiLCJyZXMwXzM4MCIsInNleHBfb2ZfZXJyb3JfdHBhdCIsInJlczBfMzgyIiwiYXJnMF8zODMiLCJlcnJvcl90cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9lcnJvcl90cGF0IiwicHBfb2tfdHBhdCIsInNob3dfb2tfdHBhdCIsIl8wJDE3Iiwib2tfdHBhdF9vZl9zZXhwIiwic2V4cF8zODkiLCJ0YWdfMzkwIiwic2V4cF9hcmdzXzM5MSIsImFyZzBfMzkyIiwicmVzMF8zOTMiLCJzZXhwX29mX29rX3RwYXQiLCJhcmcwXzM5NCIsInJlczBfMzk1Iiwib2tfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb2tfdHBhdCIsInBwX3N0YXR1c190cGF0Iiwic2hvd19zdGF0dXNfdHBhdCIsIl8wJDE4Iiwic3RhdHVzX3RwYXRfb2Zfc2V4cCIsInNleHBfNDAwIiwidGFnXzQwMSIsInNleHBfYXJnc180MDIiLCJhcmcwXzQwMyIsInNleHBfYXJnc180MDciLCJhcmcwXzQwOCIsInJlczBfNDA5Iiwic2V4cF9vZl9zdGF0dXNfdHBhdCIsImFyZzBfNDEwIiwiYXJnMF80MTIiLCJyZXMwXzQxMyIsInN0YXR1c190cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfdHBhdCIsIl8xJDE0IiwiXzAkMTkiLCJzZXhwXzQxNSIsImZpZWxkX3NleHBzXzQxNiIsInRlcm1fNDE3IiwiYW5jZXN0b3JzXzQxOSIsImN0eF80MjEiLCJtb2RlXzQyMyIsInNlbGZfNDI1IiwiY29fY3R4XzQyNyIsImNsc180MjkiLCJzdGF0dXNfNDMxIiwidHlfNDMzIiwiZHVwbGljYXRlc180MzUiLCJleHRyYV80MzYiLCJpdGVyXzQ1MCIsInNleHBfNDE1JDAiLCJmaWVsZF9zZXhwc180MzkiLCJmaWVsZF9uYW1lXzQzNyIsInRhaWxfNDUxIiwiZmllbGRfc2V4cF80MzgkOSIsImZpZWxkX3NleHBfNDM4IiwieF80NTIiLCJmaWVsZF9zZXhwXzQzOCQwIiwiZnZhbHVlXzQ0MCIsImZpZWxkX3NleHBfNDM4JDEiLCJmdmFsdWVfNDQ4IiwiZmllbGRfc2V4cF80MzgkMiIsImZ2YWx1ZV80NDEiLCJmaWVsZF9zZXhwXzQzOCQzIiwiZnZhbHVlXzQ0NCIsImZpZWxkX3NleHBfNDM4JDQiLCJmdmFsdWVfNDQ1IiwiZmllbGRfc2V4cF80MzgkNSIsImZ2YWx1ZV80NDYiLCJmaWVsZF9zZXhwXzQzOCQ2IiwiZnZhbHVlXzQ0MyIsImZpZWxkX3NleHBfNDM4JDciLCJmdmFsdWVfNDQyIiwiZmllbGRfc2V4cF80MzgkOCIsImZ2YWx1ZV80NDciLCJ0eV80MzQiLCJzdGF0dXNfNDMyIiwiY2xzXzQzMCIsImNvX2N0eF80MjgiLCJzZWxmXzQyNiIsIm1vZGVfNDI0IiwiY3R4XzQyMiIsImFuY2VzdG9yc180MjAiLCJ0ZXJtXzQxOCIsInR5XzQ3MCIsInN0YXR1c180NjgiLCJjbHNfNDY2IiwiY29fY3R4XzQ2NCIsInNlbGZfNDYyIiwibW9kZV80NjAiLCJjdHhfNDU4IiwiYW5jZXN0b3JzXzQ1NiIsInRlcm1fNDU0IiwiYXJnXzQ3MSIsImJuZHNfNDUzIiwiYXJnXzQ2OSIsImJuZHNfNDUzJDAiLCJhcmdfNDY3IiwiYm5kc180NTMkMSIsImFyZ180NjUiLCJibmRzXzQ1MyQyIiwiYXJnXzQ2MyIsImJuZHNfNDUzJDMiLCJhcmdfNDYxIiwiYm5kc180NTMkNCIsImFyZ180NTkiLCJibmRzXzQ1MyQ1IiwiYXJnXzQ1NyIsImJuZHNfNDUzJDYiLCJhcmdfNDU1IiwiYm5kc180NTMkNyIsImN0eF9maWVsZCIsInNlbGZfZmllbGQiLCJjb19jdHhfZmllbGQiLCJjbHNfZmllbGQiLCJzdGF0dXNfZmllbGQiLCJmdmFsdWUkNyIsInN0YXR1c192YWx1ZSIsImNsc192YWx1ZSIsImNvX2N0eF92YWx1ZSIsInNlbGZfdmFsdWUiLCJjdHhfdmFsdWUiLCJ2X3N0YXR1cyIsInZfY2xzIiwidl9jb19jdHgiLCJ2X3NlbGYiLCJ2X2N0eCIsImFyZyQ3IiwiYm5kcyQ3IiwiXzEkMTUiLCJfMCQyMCIsInNleHBfNDczIiwiZmllbGRfc2V4cHNfNDc0IiwidGVybV80NzUiLCJhbmNlc3RvcnNfNDc3IiwiY3R4XzQ3OSIsImNvX2N0eF80ODEiLCJtb2RlXzQ4MyIsInNlbGZfNDg1IiwiY2xzXzQ4NyIsInN0YXR1c180ODkiLCJ0eV80OTEiLCJkdXBsaWNhdGVzXzQ5MyIsImV4dHJhXzQ5NCIsIml0ZXJfNTA4Iiwic2V4cF80NzMkMCIsImZpZWxkX3NleHBzXzQ5NyIsImZpZWxkX25hbWVfNDk1IiwidGFpbF81MDkiLCJmaWVsZF9zZXhwXzQ5NiQ5IiwiZmllbGRfc2V4cF80OTYiLCJ4XzUxMCIsImZpZWxkX3NleHBfNDk2JDAiLCJmdmFsdWVfNDk4IiwiZmllbGRfc2V4cF80OTYkMSIsImZ2YWx1ZV81MDYiLCJmaWVsZF9zZXhwXzQ5NiQyIiwiZnZhbHVlXzQ5OSIsImZpZWxkX3NleHBfNDk2JDMiLCJmdmFsdWVfNTAxIiwiZmllbGRfc2V4cF80OTYkNCIsImZ2YWx1ZV81MDIiLCJmaWVsZF9zZXhwXzQ5NiQ1IiwiZnZhbHVlXzUwNCIsImZpZWxkX3NleHBfNDk2JDYiLCJmdmFsdWVfNTAzIiwiZmllbGRfc2V4cF80OTYkNyIsImZ2YWx1ZV81MDAiLCJmaWVsZF9zZXhwXzQ5NiQ4IiwiZnZhbHVlXzUwNSIsInR5XzQ5MiIsInN0YXR1c180OTAiLCJjbHNfNDg4Iiwic2VsZl80ODYiLCJtb2RlXzQ4NCIsImNvX2N0eF80ODIiLCJjdHhfNDgwIiwiYW5jZXN0b3JzXzQ3OCIsInRlcm1fNDc2IiwidHlfNTI4Iiwic3RhdHVzXzUyNiIsImNsc181MjQiLCJzZWxmXzUyMiIsIm1vZGVfNTIwIiwiY29fY3R4XzUxOCIsImN0eF81MTYiLCJhbmNlc3RvcnNfNTE0IiwidGVybV81MTIiLCJhcmdfNTI5IiwiYm5kc181MTEiLCJhcmdfNTI3IiwiYm5kc181MTEkMCIsImFyZ181MjUiLCJibmRzXzUxMSQxIiwiYXJnXzUyMyIsImJuZHNfNTExJDIiLCJhcmdfNTIxIiwiYm5kc181MTEkMyIsImJuZHNfNTExJDQiLCJibmRzXzUxMSQ1IiwiYXJnXzUxNSIsImJuZHNfNTExJDYiLCJhcmdfNTEzIiwiYm5kc181MTEkNyIsInBwX3R5cCIsInNob3dfdHlwIiwiXzUkMiIsIl80JDMiLCJfMyQ2IiwiXzIkNyIsIl8xJDE2IiwiXzAkMjEiLCJ0eXBfb2Zfc2V4cCIsInNleHBfNTMxIiwiZmllbGRfc2V4cHNfNTMyIiwidGVybV81MzMiLCJhbmNlc3RvcnNfNTM1IiwiY3R4XzUzNyIsImV4cGVjdHNfNTM5IiwiY2xzXzU0MSIsInN0YXR1c181NDMiLCJ0eV81NDUiLCJkdXBsaWNhdGVzXzU0NyIsImV4dHJhXzU0OCIsIml0ZXJfNTYwIiwic2V4cF81MzEkMCIsImZpZWxkX3NleHBzXzU1MSIsImZpZWxkX25hbWVfNTQ5IiwidGFpbF81NjEiLCJmaWVsZF9zZXhwXzU1MCQ3IiwiZmllbGRfc2V4cF81NTAiLCJ4XzU2MiIsImZpZWxkX3NleHBfNTUwJDAiLCJmdmFsdWVfNTUyIiwiZmllbGRfc2V4cF81NTAkMSIsImZ2YWx1ZV81NTgiLCJmaWVsZF9zZXhwXzU1MCQyIiwiZnZhbHVlXzU1MyIsImZpZWxkX3NleHBfNTUwJDMiLCJmdmFsdWVfNTU1IiwiZmllbGRfc2V4cF81NTAkNCIsImZ2YWx1ZV81NTYiLCJmaWVsZF9zZXhwXzU1MCQ1IiwiZnZhbHVlXzU1NCIsImZpZWxkX3NleHBfNTUwJDYiLCJmdmFsdWVfNTU3IiwidHlfNTQ2Iiwic3RhdHVzXzU0NCIsImNsc181NDIiLCJleHBlY3RzXzU0MCIsImN0eF81MzgiLCJhbmNlc3RvcnNfNTM2IiwidGVybV81MzQiLCJzZXhwX29mX3R5cCIsInR5XzU3NiIsInN0YXR1c181NzQiLCJjbHNfNTcyIiwiZXhwZWN0c181NzAiLCJjdHhfNTY4IiwiYW5jZXN0b3JzXzU2NiIsInRlcm1fNTY0IiwiYXJnXzU3NyIsImJuZHNfNTYzIiwiYXJnXzU3NSIsImJuZHNfNTYzJDAiLCJhcmdfNTczIiwiYm5kc181NjMkMSIsImFyZ181NzEiLCJibmRzXzU2MyQyIiwiYXJnXzU2OSIsImJuZHNfNTYzJDMiLCJhcmdfNTY3IiwiYm5kc181NjMkNCIsImFyZ181NjUiLCJibmRzXzU2MyQ1IiwidHlwX29mX3lvanNvbiIsImV4cGVjdHNfZmllbGQiLCJleHBlY3RzX3ZhbHVlIiwieW9qc29uX29mX3R5cCIsInZfZXhwZWN0cyIsInBwX3RwYXQiLCJzaG93X3RwYXQiLCJfNCQ0IiwiXzMkNyIsIl8yJDgiLCJfMSQxNyIsIl8wJDIyIiwidHBhdF9vZl9zZXhwIiwic2V4cF81NzkiLCJmaWVsZF9zZXhwc181ODAiLCJ0ZXJtXzU4MSIsImFuY2VzdG9yc181ODMiLCJjdHhfNTg1IiwiY2xzXzU4NyIsInN0YXR1c181ODkiLCJkdXBsaWNhdGVzXzU5MSIsImV4dHJhXzU5MiIsIml0ZXJfNjAyIiwic2V4cF81NzkkMCIsImZpZWxkX3NleHBzXzU5NSIsImZpZWxkX25hbWVfNTkzIiwidGFpbF82MDMiLCJmaWVsZF9zZXhwXzU5NCQ1IiwiZmllbGRfc2V4cF81OTQiLCJ4XzYwNCIsImZpZWxkX3NleHBfNTk0JDAiLCJmdmFsdWVfNjAwIiwiZmllbGRfc2V4cF81OTQkMSIsImZ2YWx1ZV81OTYiLCJmaWVsZF9zZXhwXzU5NCQyIiwiZnZhbHVlXzU5OCIsImZpZWxkX3NleHBfNTk0JDMiLCJmdmFsdWVfNTk3IiwiZmllbGRfc2V4cF81OTQkNCIsImZ2YWx1ZV81OTkiLCJzdGF0dXNfNTkwIiwiY2xzXzU4OCIsImN0eF81ODYiLCJhbmNlc3RvcnNfNTg0IiwidGVybV81ODIiLCJzZXhwX29mX3RwYXQiLCJzdGF0dXNfNjE0IiwiY2xzXzYxMiIsImN0eF82MTAiLCJhbmNlc3RvcnNfNjA4IiwidGVybV82MDYiLCJhcmdfNjE1IiwiYm5kc182MDUiLCJhcmdfNjEzIiwiYm5kc182MDUkMCIsImFyZ182MTEiLCJibmRzXzYwNSQxIiwiYXJnXzYwOSIsImJuZHNfNjA1JDIiLCJhcmdfNjA3IiwiYm5kc182MDUkMyIsInRwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3RwYXQiLCJwcF9zZWNvbmRhcnkiLCJzaG93X3NlY29uZGFyeSIsIl8zJDgiLCJfMiQ5IiwiXzEkMTgiLCJfMCQyMyIsInNlY29uZGFyeV9vZl9zZXhwIiwic2V4cF82MTciLCJmaWVsZF9zZXhwc182MTgiLCJpZF82MTkiLCJjbHNfNjIxIiwic29ydF82MjMiLCJjdHhfNjI1IiwiZHVwbGljYXRlc182MjciLCJleHRyYV82MjgiLCJpdGVyXzYzNyIsInNleHBfNjE3JDAiLCJmaWVsZF9zZXhwc182MzEiLCJmaWVsZF9uYW1lXzYyOSIsInRhaWxfNjM4IiwiZmllbGRfc2V4cF82MzAkNCIsImZpZWxkX3NleHBfNjMwIiwieF82MzkiLCJmaWVsZF9zZXhwXzYzMCQwIiwiZnZhbHVlXzYzMyIsImZpZWxkX3NleHBfNjMwJDEiLCJmdmFsdWVfNjM1IiwiZmllbGRfc2V4cF82MzAkMiIsImZ2YWx1ZV82MzIiLCJmaWVsZF9zZXhwXzYzMCQzIiwiZnZhbHVlXzYzNCIsImN0eF82MjYiLCJzb3J0XzYyNCIsImNsc182MjIiLCJpZF82MjAiLCJzZXhwX29mX3NlY29uZGFyeSIsImN0eF82NDciLCJzb3J0XzY0NSIsImNsc182NDMiLCJpZF82NDEiLCJhcmdfNjQ4IiwiYm5kc182NDAiLCJhcmdfNjQ2IiwiYm5kc182NDAkMCIsImFyZ182NDQiLCJibmRzXzY0MCQxIiwiYXJnXzY0MiIsImJuZHNfNjQwJDIiLCJzZWNvbmRhcnlfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlY29uZGFyeSIsIl80JDUiLCJfMyQ5IiwiXzIkMTAiLCJfMSQxOSIsIl8wJDI0Iiwic2V4cF82NTMiLCJ0YWdfNjU0Iiwic2V4cF9hcmdzXzY1NSIsImFyZzBfNjU2IiwicmVzMF82NTciLCJzZXhwX2FyZ3NfNjYwIiwiYXJnMF82NjEiLCJyZXMwXzY2MiIsInNleHBfYXJnc182NzAiLCJzZXhwX2FyZ3NfNjY1IiwiYXJnMF82NjYiLCJyZXMwXzY2NyIsInNleHBfYXJnc182NzUiLCJhcmcwXzY3NiIsInJlczBfNjc3IiwiYXJnMF82NzgiLCJyZXMwXzY3OSIsImFyZzBfNjgwIiwicmVzMF82ODEiLCJhcmcwXzY4MiIsImFyZzBfNjg0IiwicmVzMF82ODUiLCJhcmcwXzY4NiIsInJlczBfNjg3IiwicHBfZXJyb3IiLCJzaG93X2Vycm9yIiwiXzMkMTAiLCJfMiQxMSIsIl8xJDIwIiwiXzAkMjUiLCJlcnJvcl9vZl9zZXhwIiwic2V4cF82OTIiLCJ0YWdfNjkzIiwic2V4cF9hcmdzXzcwNCIsImFyZzBfNzA1IiwicmVzMF83MDYiLCJzZXhwX2FyZ3NfNzA5IiwiYXJnMF83MTAiLCJyZXMwXzcxMSIsInNleHBfYXJnc182OTkiLCJhcmcwXzcwMCIsInJlczBfNzAxIiwic2V4cF9hcmdzXzY5NCIsInJlczBfNjk2Iiwic2V4cF9vZl9lcnJvciIsImFyZzBfNzEyIiwicmVzMF83MTMiLCJhcmcwXzcxNCIsInJlczBfNzE1IiwiYXJnMF83MTYiLCJyZXMwXzcxNyIsImFyZzBfNzE4IiwicmVzMF83MTkiLCJlcnJvcl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3IiLCJzb3J0X29mIiwiY3R4X29mIiwiYW5jZXN0b3JzX29mIiwiaSQxIiwiaSQyIiwiZXJyb3Jfb2YiLCJlcnIkMCIsImVyciQxIiwiZXJyJDIiLCJleHBfY29fY3R4IiwiZXhwX3R5IiwicGF0X2N0eCIsInBhdF90eSIsInN0YXR1c19jb21tb24iLCJzZWxmJDAiLCJzeW4iLCJhbmEkMCIsInN5biQwIiwiYW5hX3R5Iiwic2VsZiQxIiwic3luX3R5JDAiLCJzZWxmJDIiLCJzdGF0dXNfcGF0Iiwic2VsZl9wYXQiLCJlcnJfcGF0Iiwib2tfZXhwIiwic3RhdHVzX2V4cCIsInN0YXR1c190eXAiLCJleHBlY3RzIiwidHlfdmFyaWFudCIsInN0YXR1c192YXJpYW50Iiwic3VtX3R5Iiwic3RhdHVzX3RwYXQiLCJ1dHBhdCIsImlzX2Vycm9yIiwiY2kiLCJ0ZXJtJDAiLCJmaXhlZF90eXBfb2siLCJmaXhlZF90eXBfcGF0Iiwib2siLCJmaXhlZF90eXBfZXhwIiwiZGVyaXZlZF9leHAiLCJ1ZXhwIiwiZGVyaXZlZF9wYXQiLCJ1cGF0IiwiZGVyaXZlZF90eXAiLCJkZXJpdmVkX3RwYXQiLCJnZXRfYmluZGluZ19zaXRlIiwibmFtZSQxIiwiZXJyb3Jfc291cmNlXzAzMiIsImVycm9yX3NvdXJjZV8wNDMiLCJlcnJvcl9zb3VyY2VfMDYxIiwicHBfc3RyYXRlZ3lfYWxsIiwic2hvd19zdHJhdGVneV9hbGwiLCJzdHJhdGVneV9hbGxfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfYWxsIiwic3RyYXRlZ3lfYWxsX29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV9hbGwiLCJwcF9zdHJhdGVneV9jb21tb24iLCJzaG93X3N0cmF0ZWd5X2NvbW1vbiIsInN0cmF0ZWd5X2NvbW1vbl9vZl9zZXhwIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwic2V4cF9vZl9zdHJhdGVneV9jb21tb24iLCJyZXMwXzAyNyIsInN0cmF0ZWd5X2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfY29tbW9uIiwicHBfc3RyYXRlZ3lfZXhwIiwic2hvd19zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2Zfc2V4cCIsInRhZ18wMzUiLCJzZXhwX2FyZ3NfMDM2Iiwic2V4cF9vZl9zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0cmF0ZWd5X2V4cCIsInBwX3N0cmF0ZWd5X3BhdCIsInNob3dfc3RyYXRlZ3lfcGF0Iiwic3RyYXRlZ3lfcGF0X29mX3NleHAiLCJzZXhwXzA0NSIsInRhZ18wNDYiLCJzZXhwX29mX3N0cmF0ZWd5X3BhdCIsImFyZzBfMDU1Iiwic3RyYXRlZ3lfcGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV9wYXQiLCJwcF9zdHJhdGVneV90eXAiLCJzaG93X3N0cmF0ZWd5X3R5cCIsInN0cmF0ZWd5X3R5cF9vZl9zZXhwIiwic2V4cF8wNjIiLCJzZXhwX29mX3N0cmF0ZWd5X3R5cCIsInN0cmF0ZWd5X3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfdHlwIiwicHBfc3RyYXRlZ3kiLCJzaG93X3N0cmF0ZWd5Iiwic3RyYXRlZ3lfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3kiLCJyZXMwXzA4OCIsImFyZzBfMDkzIiwicmVzMF8wOTQiLCJzdHJhdGVneV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3kiLCJzZXhwXzA5NiIsImZpZWxkX3NleHBzXzA5NyIsImNvbnRlbnRfMDk4Iiwic3RyYXRlZ3lfMTAwIiwiZHVwbGljYXRlc18xMDIiLCJleHRyYV8xMDMiLCJpdGVyXzExMCIsInNleHBfMDk2JDAiLCJmaWVsZF9zZXhwc18xMDYiLCJmaWVsZF9uYW1lXzEwNCIsInRhaWxfMTExIiwiZmllbGRfc2V4cF8xMDUkMiIsImZpZWxkX3NleHBfMTA1IiwieF8xMTIiLCJmaWVsZF9zZXhwXzEwNSQwIiwiZnZhbHVlXzEwNyIsImZpZWxkX3NleHBfMTA1JDEiLCJmdmFsdWVfMTA4Iiwic3RyYXRlZ3lfMTAxIiwiY29udGVudF8wOTkiLCJzdHJhdGVneV8xMTYiLCJjb250ZW50XzExNCIsImFyZ18xMTciLCJibmRzXzExMyIsImFyZ18xMTUiLCJibmRzXzExMyQwIiwic3RyYXRlZ3lfZmllbGQiLCJzdHJhdGVneV92YWx1ZSIsInZfc3RyYXRlZ3kiLCJleHBhbmRlciIsImZyZWVfdmFyaWFibGVzIiwiam9pbnRfdXNlX3R5cCIsImJvdW5kX3ZhcmlhYmxlcyIsInR5X2V4cGVjdCIsImJvdW5kX2NvbnN0cnVjdG9ycyIsImJvdW5kX2FwcyIsInR5X2FyciIsImJvdW5kX2NvbnN0cnVjdG9yX2FwcyIsInR5cF9jb250ZXh0X2VudHJpZXMiLCJzdWdnZXN0X3ZhcmlhYmxlIiwic3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUiLCJyZXN0cmF0ZWdpemUiLCJzdWZmaXgiLCJzdHJhdGVneSIsImV4cF9yZWZzIiwiZXhwX2FwcyIsImNvbW1hcyIsInBhdF9yZWZzIiwicGF0X2FwcyIsImNvbW1hcyQwIiwidW5rIiwibGVhZGluZ19leHBhbmRlciIsIm9mX2NvbnN0X21vbm9fZGVsaW0iLCJvZl9sZWFkaW5nX2RlbGltIiwib2ZfaW5maXhfZGVsaW0iLCJleHBlY3RlZCIsImZpbHRlcl9ieSIsInNlbGZfdHlzIiwiZGVsaW0iLCJzZWxmX3R5IiwiZGVsYXllZF9sZWFkaW5nIiwiZGVsYXRlZF9sZWFkaW5nX2V4cCIsImRlbGF0ZWRfbGVhZGluZ19wYXQiLCJkZWxhdGVkX2xlYWRpbmdfdHlwIiwiZGVsYXllZF9sZWFkaW5nJDAiLCJpbmZpeCIsImluZml4X2V4cCIsImluZml4X3BhdCIsImluZml4X3R5cCIsImluZml4JDAiLCJjb25zdF9tb25vIiwiY29uc3RfbW9ub19leHAiLCJjb25zdF9tb25vX3BhdCIsImNvbnN0X21vbm9fdHlwIiwiY29uc3RfbW9ubyQwIiwic3VnZ2VzdF9mb3JtIiwidHlfbWFwIiwiZGVsaW1zX29mX3NvcnQiLCJmaWx0ZXJlZCIsInN1Z2dlc3Rfb3BlcmF0b3IiLCJzdWdnZXN0X29wZXJhbmQiLCJzdWdnZXN0X2xlYWRpbmciLCJlcnJvcl9zb3VyY2VfMDEzIiwiaG9sZV9zb3J0X29mX3NleHAiLCJzZXhwX29mX2hvbGVfc29ydCIsImFyZzJfMDA4IiwiYXJnMV8wMDciLCJhcmcwXzAwNiIsInJlczFfMDEwIiwicmVzMl8wMTEiLCJyYW5nZSIsInJhbmdlX2hhc2giLCJyb290X2wiLCJyb290X3IiLCJ1bmljaGlsZF9tYXAiLCJtYXBfbCIsImwkMiIsIm1hcF9yIiwiciQyIiwidW5pY2hpbGRfbWFwJDAiLCJyYW5nZSQwIiwiYmV0d2Vlbl9jaGlsZF9tYXAiLCJtayQwIiwicmVzIiwiZXJyb3JfaWRzIiwidGVybV9yYW5nZXMiLCJpbmZvX21hcCIsIm1hcF9tIiwiYWRkX2luZm8iLCJleHRlbmRfbGV0X2RlZl9jdHgiLCJkZWYiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdCIsInR5cF9leHBfYmlub3BfYmluX3N0cmluZyIsInR5cF9leHBfYmlub3AiLCJ0eXBfZXhwX3Vub3AiLCJhbnlfdG9faW5mb19tYXAiLCJhbnkiLCJ1ZXhwX3RvX2luZm9fbWFwIiwibSQxIiwidXBhdF90b19pbmZvX21hcCIsInV0eXBfdG9faW5mb19tYXAiLCJ0cCIsInV0cGF0X3RvX2luZm9fbWFwIiwibXVsdGkiLCJjb19jdHhzIiwiY3R4X2RlZiIsImlzX2luX2ZpbHRlciIsInVleHBfdG9faW5mb19tYXAkMCIsImlzX2luX2ZpbHRlciQwIiwic3RoJDEiLCJnbyQwIiwibWFwX21fZ28iLCJnb19wYXQiLCJhdG9taWMiLCJtb2RlcyIsImVzJDAiLCJtb2RlX2JvZHkiLCJtb2RlX3BhdCIsIm0kMiIsIm0kMyIsImVzJDEiLCJtb2RlcyQwIiwibSQ0IiwiZXMkMiIsImJvZHkiLCJwX3N5biIsImRlZl9jdHgiLCJtJDUiLCJkZWYkMCIsInBfYW5hIiwibSQ2IiwiYm9keSQwIiwibSQ3IiwicF9hbmEkMCIsImJvZHkkMSIsInR5cGF0IiwibSQ4IiwidHlfcHJlIiwidHlfcmVjIiwiY3R4X2RlZiQxIiwiY3R4X2JvZHkkMCIsImN0eF9kZWYkMCIsInR5X2RlZiQwIiwidHlfZGVmIiwiY3R4X2JvZHkiLCJjdHhfYm9keSQxIiwibSQxMSIsImNvX2N0eCQwIiwidHlfZXNjYXBlIiwibSQxMiIsIm0kOSIsIm0kMTAiLCJlMiIsImUxIiwiZTAiLCJicmFuY2hfaWRzIiwibSQxNSIsImNvbmQiLCJtJDE2IiwibSQxNyIsImFsdCIsImUyJDAiLCJlMSQwIiwibSQxOCIsImUxJDEiLCJtJDE5IiwiZTIkMSIsIm0kMjAiLCJlJDIiLCJib2R5JDIiLCJjb25kJDAiLCJtJDIxIiwiY29uZCQxIiwibSQyMiIsImJvZHkkMyIsImUkMyIsIm0kMjMiLCJlJDQiLCJtJDI0IiwibSQyNSIsImUyJDIiLCJlMSQyIiwiaWRzJDEiLCJtb2RlJDEiLCJtJDI2IiwiZTEkMyIsIm0kMjciLCJlMiQzIiwiZSQ1IiwiZSQ2IiwibSQyOCIsImUkNyIsImUkOCIsInR5X291dCQxIiwidHlfaW4kMSIsIm0kMjkiLCJlJDkiLCJlMiQ0IiwiZTEkNCIsInR5X291dCQyIiwibSQzMCIsImUxJDUiLCJtJDMxIiwiZTIkNSIsIm0kMzIiLCJlcyQzIiwiYnJhbmNoX2lkcyQwIiwicHMkMCIsInBfY3R4cyIsIm0kMzMiLCJlcyQ0IiwiZV90eXMiLCJlX2NvX2N0eHMiLCJtJDM0IiwiZm5fbW9kZSIsIm0kMTMiLCJ0eV9vdXQkMCIsInR5X2luJDAiLCJtJDE0IiwiaXNfc3luc3dpdGNoIiwidW5rbm93biIsImN0eF9mb2xkIiwiY3R4X3R5cCIsImFubiQwIiwidDFfbW9kZSIsInZhcmlhbnRzIiwidHlfc3VtIiwidmFyaWFudF90b19pbmZvX21hcCIsInV0eSIsInV0eSQwIiwicGFyYW1fdHkiLCJjb2xsZWN0X2Vycm9ycyIsInN1YnN0X3ZhciIsImQzJDEiLCJ1JDEiLCJkMyQyIiwicnVsZXMkMCIsInN1YnN0X3Zhcl9ydWxlcyIsImQzJDMiLCJzdWJzdF92YXJfZW52IiwiZDMkNCIsImRib2R5IiwiZGJvZHkkMCIsInN1YnN0X3Zhcl9maWx0ZXIiLCJkNCIsImQzJDUiLCJkMyQ2IiwiZDQkMCIsImQ0JDEiLCJkMyQ3IiwiZDMkOCIsImQ0JDIiLCJkMyQ5IiwiZDMkMTAiLCJkMyQxMSIsImQzJDEyIiwiZDQkMyIsImQzJDEzIiwiZDMkMTQiLCJkNCQ0IiwiaWRlbnQkMCIsImQzJDE1IiwiZDQkNSIsImQzJDE2IiwiZDMkMTciLCJkNCQ2IiwiZDQkNyIsImQzJDE4IiwiZDMkMTkiLCJkNCQ4IiwiZDQkOSIsImQzJDIwIiwiZDMkMjEiLCJkNCQxMCIsImQ0JDExIiwiZDMkMjIiLCJkMyQyMyIsImQ0JDEyIiwiZDQkMTMiLCJkMyQyNCIsImQzJDI1IiwiZDQkMTQiLCJkNCQxNSIsImQzJDI2IiwiZDMkMjciLCJkNCQxNiIsIm4kMSIsInJ1bGVzJDEiLCJkMyQyOCIsImQzJDI5IiwicnVsZXMkMiIsImQ2IiwiZDUiLCJkNCQxNyIsImQzJDMwIiwiZDQkMTgiLCJkNSQwIiwiZDYkMCIsIngkMCIsInhkIiwiZF9ydWxlcyIsImFyZzJfMDEwIiwicmVzMl8wMTMiLCJhcmcyXzAxNiIsInJlczJfMDE5IiwiZXhwX2Jpbm9wX29mIiwiZml4ZWRfZXhwX3R5cCIsImZpeGVkX3BhdF90eXAiLCJhbmFfdHkkMCIsImFuYV9vdXQiLCJzZWxmX2luIiwicHJvdiQyIiwicHJvdiQxIiwicHJvdiQwIiwic2VsZl90eSQwIiwiZGhleHBfb2ZfdWV4cCIsImluX2ZpbHRlciIsImRoZXhwX29mX3VleHAkMCIsImluX2ZpbHRlciQwIiwiZXJyX3N0YXR1cyIsImRocGF0X29mX3VwYXQiLCJhZGRfbmFtZSIsImRkZWYiLCJmcyIsImRkZWYkMCIsInVuaXFfaWQiLCJzZWxmX2lkIiwic2VsZl92YXIiLCJzdWJzdGl0dXRlZF9kZWYiLCJkdGVzdCIsImRjb25kIiwiZGMxIiwiZGMyIiwiZGMiLCJkX3NjcnV0IiwiZF9wIiwiZF9lIiwiY19mbiIsImNfYXJnIiwidXBhdCQwIiwibWF5YmVfcmVhc29uIiwid3JhcCQwIiwiZF9oZCIsImRfdGwiLCJ1cGF0JDEiLCJkX3AxIiwiZF9wMiIsInVleHBfZWxhYiIsInVuYm94IiwiZXJyb3Jfc291cmNlXzAxMiIsImluaXRpYWwiLCJzdGVwXzAwNCIsImR1cGxpY2F0ZXNfMDA2IiwiZXh0cmFfMDA3IiwiaXRlcl8wMTMiLCJmaWVsZF9zZXhwc18wMTAiLCJmaWVsZF9uYW1lXzAwOCIsInRhaWxfMDE0IiwiZmllbGRfc2V4cF8wMDkkMSIsImZpZWxkX3NleHBfMDA5IiwiZmllbGRfc2V4cF8wMDkkMCIsImZ2YWx1ZV8wMTEiLCJzdGVwXzAwNSIsInN0ZXBfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2Iiwic3RlcF9maWVsZCIsInN0ZXBfdmFsdWUiLCJ2X3N0ZXAiLCJ0YWtlX3N0ZXAiLCJzdGVwIiwiZ2V0X3N0ZXAiLCJwdXRfc3RlcCIsInN0YXRzXzAwNCIsInRlc3RzXzAwNiIsInRlc3RzXzAwNyIsInN0YXRzXzAwNSIsInRlc3RzXzAyMiIsInN0YXRzXzAyMCIsInN0YXRzX2ZpZWxkIiwidGVzdHNfZmllbGQiLCJ0ZXN0c192YWx1ZSIsInN0YXRzX3ZhbHVlIiwidl90ZXN0cyIsInZfc3RhdHMiLCJzdGF0cyIsImFkZF90ZXN0IiwidGVzdHMiLCJ0ZXN0cyQwIiwiZ2V0X3Rlc3RzIiwicHV0X3Rlc3RzIiwic3ltYm9sIiwieCQxIiwiYXBwbHkiLCJhcHBseSQwIiwiYXBwbHkkMSIsImV2YWx1YXRlIiwicmVzdWx0JDAiLCJwaWVjZSIsIm5vX3dzIiwiaWduIiwicGFyZW50JDAiLCJwYXJlbnQkMSIsInBpZWNlJDAiLCJzaGFyZF9pbmRleCIsInJlbGF0aW9uIiwiYmVmb3JlIiwiYmVmb3JlJDAiLCJjaV9vZiIsInByb3h5X2lkIiwic2wiLCJzciIsImFkZF9hbGwiLCJ0b2tlbnMiLCJwcF90aWxlcyIsInNob3dfdGlsZXMiLCJ0aWxlc19vZl9zZXhwIiwic2V4cF9vZl90aWxlcyIsInRpbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl90aWxlcyIsInNpbmdsZSIsInBwX3Vuc29ydGVkIiwic2hvd191bnNvcnRlZCIsInVuc29ydGVkX29mX3NleHAiLCJzZXhwXzAxOSIsInRhZ18wMjAiLCJhcmcyXzA0MyIsInJlczFfMDQ1IiwicmVzMl8wNDYiLCJzZXhwX29mX3Vuc29ydGVkIiwiYXJnMV8wNTQiLCJyZXMxXzA1NiIsInVuc29ydGVkX29mX3lvanNvbiIsInlvanNvbl9vZl91bnNvcnRlZCIsImlzX25hcnkiLCJpc19zb3J0IiwiaXNfdHVwbGVfZXhwIiwiaXNfdHVwbGVfcGF0IiwiaXNfdHVwbGVfdHlwIiwiaXNfdHlwX2JzdW0iLCJpc19ydWxlcyIsImNsYXVzZXMiLCJjbGF1c2UiLCJpZHNfb2ZfdGlsZXMiLCJraWRzX29mX3RpbGUiLCJraWRzX29mX3RpbGVzIiwia2lkc19vZl91bnNvcnRlZCIsInRpbGVzJDAiLCJ0aWxlcyQxIiwidGlsZXMkMiIsInJldHVybiQwIiwicGFyc2Vfc3VtX3Rlcm0iLCJpZHNfY3RyIiwiZ29fcyIsImV4cF90ZXJtIiwicGF0X3Rlcm0iLCJ0eXBfdGVybSIsInRwYXQiLCJ0cGF0X3Rlcm0iLCJydWwiLCJ1bnNvcnRlZCIsImlubmVyX2lkcyIsInJldCIsInQkMSIsImNvbnNlcSIsImZpbHRlciQxIiwiZmlsdGVyJDIiLCJ0JDIiLCJiZXR3ZWVuX2tpZHMiLCJ0JDMiLCJyZXQkMCIsInJldCQxIiwidDAiLCJiZXR3ZWVuX2tpZHMkMCIsInJldCQyIiwibGFzdF9jbGF1c2UiLCJsZWFkaW5nX2NsYXVzZXMiLCJ0aWxlX2tpZHMiLCJwX3IiLCJwX2wiLCJmcm9tX3ppcCIsImZyb21femlwX2Zvcl92aWV3IiwiZnJvbV96aXBfZm9yX3NlbSIsImVycm9yX3NvdXJjZV8wNDQiLCJwcF9pbm5lciIsInNob3dfaW5uZXIiLCJpbm5lcl9vZl9zZXhwIiwicmVzdWx0XzAwNCIsInN0YXRlXzAwNiIsInN0YXRlXzAwNyIsInJlc3VsdF8wMDUiLCJzZXhwX29mX2lubmVyIiwic3RhdGVfMDIyIiwicmVzdWx0XzAyMCIsImlubmVyX29mX3lvanNvbiIsInJlc3VsdF9maWVsZCIsInN0YXRlX2ZpZWxkIiwic3RhdGVfdmFsdWUiLCJyZXN1bHRfdmFsdWUiLCJ5b2pzb25fb2ZfaW5uZXIiLCJ2X3N0YXRlIiwidl9yZXN1bHQiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDM1IiwiYXJnMF8wMzYiLCJyZXMwXzAzNyIsInNleHBfYXJnc18wMzAiLCJzZXhwXzA0NiIsInRhZ18wNDciLCJzZXhwX2FyZ3NfMDU4Iiwic2V4cF9hcmdzXzA0OCIsImdldF9kaGV4cCIsImdldF9zdGF0ZSIsIm1rX21hcCIsIm1rX21hcCQwIiwiY29yZSIsIm1rX21hcF9hbmRfaW5mb19jdHgiLCJta19tYXBfY3R4IiwiZGhfZXJyIiwiZXJyb3IiLCJlbGFib3JhdGUiLCJleG4kMCIsImV4biIsImV2YWxfeiIsInN1Z2dlc3RfYmFja3BhY2siLCJzdWdnZXN0IiwidG9rZW5fdG9fbGVmdCIsInRva190b19sZWZ0IiwibWtfdW5wYXJzZWRfYnVmZmVyIiwic3VmZml4X29mIiwiY2FuZGlkYXRlIiwiY2FuZGlkYXRlX3N1ZmZpeCIsInpfdG9fY2kiLCJnZXRfYnVmZmVyIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0aW9ucyQwIiwidG9wX3N1Z2dlc3Rpb24iLCJzdWdnZXN0aW9uX3N1ZmZpeCIsImVycm9yX3NvdXJjZV8wMzAiLCJ0ZXN0X21hcF8wMDQiLCJzdGF0dXNlc18wMDYiLCJkZXNjcmlwdGlvbnNfMDA4IiwidG90YWxfMDEwIiwicGFzc2luZ18wMTIiLCJmYWlsaW5nXzAxNCIsInVuZmluaXNoZWRfMDE2IiwiZHVwbGljYXRlc18wMTgiLCJleHRyYV8wMTkiLCJpdGVyXzAzMSIsImZpZWxkX25hbWVfMDIwIiwidGFpbF8wMzIiLCJmaWVsZF9zZXhwXzAyMSQ3IiwiZmllbGRfc2V4cF8wMjEiLCJmaWVsZF9zZXhwXzAyMSQwIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDIxJDEiLCJmaWVsZF9zZXhwXzAyMSQyIiwiZmllbGRfc2V4cF8wMjEkMyIsImZpZWxkX3NleHBfMDIxJDQiLCJmaWVsZF9zZXhwXzAyMSQ1IiwiZmllbGRfc2V4cF8wMjEkNiIsInVuZmluaXNoZWRfMDE3IiwiZmFpbGluZ18wMTUiLCJwYXNzaW5nXzAxMyIsInRvdGFsXzAxMSIsImRlc2NyaXB0aW9uc18wMDkiLCJzdGF0dXNlc18wMDciLCJ0ZXN0X21hcF8wMDUiLCJ1bmZpbmlzaGVkXzA0NyIsImZhaWxpbmdfMDQ1IiwicGFzc2luZ18wNDMiLCJ0b3RhbF8wNDEiLCJkZXNjcmlwdGlvbnNfMDM5Iiwic3RhdHVzZXNfMDM3IiwidGVzdF9tYXBfMDM1IiwiYm5kc18wMzQiLCJibmRzXzAzNCQwIiwiYm5kc18wMzQkMSIsImJuZHNfMDM0JDIiLCJhcmdfMDQwIiwiYm5kc18wMzQkMyIsImFyZ18wMzgiLCJibmRzXzAzNCQ0IiwiYXJnXzAzNiIsImJuZHNfMDM0JDUiLCJ0ZXN0X21hcF9maWVsZCIsInN0YXR1c2VzX2ZpZWxkIiwiZGVzY3JpcHRpb25zX2ZpZWxkIiwidG90YWxfZmllbGQiLCJwYXNzaW5nX2ZpZWxkIiwiZmFpbGluZ19maWVsZCIsInVuZmluaXNoZWRfZmllbGQiLCJ1bmZpbmlzaGVkX3ZhbHVlIiwiZmFpbGluZ192YWx1ZSIsInBhc3NpbmdfdmFsdWUiLCJ0b3RhbF92YWx1ZSIsImRlc2NyaXB0aW9uc192YWx1ZSIsInN0YXR1c2VzX3ZhbHVlIiwidGVzdF9tYXBfdmFsdWUiLCJ2X3VuZmluaXNoZWQiLCJ2X2ZhaWxpbmciLCJ2X3Bhc3NpbmciLCJ2X3RvdGFsIiwidl9kZXNjcmlwdGlvbnMiLCJ2X3N0YXR1c2VzIiwidl90ZXN0X21hcCIsIm1rX3Jlc3VsdHMiLCJkZXNjcmlwdGlvbnMiLCJyZXN1bHRfc3VtbWFyeV9zdHIiLCJuX3N0ciIsIm5zX3N0ciIsInBfc3RyIiwicV9zdHIiLCJyX3N0ciIsIm9uZV9wIiwib25lX3EiLCJtbnlfcCIsIm1ueV9xIiwib2ZfbiIsInRlc3Rfc3VtbWFyeV9zdHIiLCJ0ZXN0X3Jlc3VsdHMiLCJlcnJvcl9zb3VyY2VfMDI0IiwiZXJyb3Jfc291cmNlXzA1OSIsImRfMDA0IiwiZF9sb2NfMDA4IiwiY3R4XzAxMCIsImtuZF8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsIml0ZXJfMDI1IiwiZmllbGRfbmFtZV8wMTYiLCJ0YWlsXzAyNiIsImZpZWxkX3NleHBfMDE3JDUiLCJmaWVsZF9zZXhwXzAxNyIsInhfMDI3IiwiZmllbGRfc2V4cF8wMTckMCIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQxIiwiZnZhbHVlXzAxOSIsImZpZWxkX3NleHBfMDE3JDIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZmllbGRfc2V4cF8wMTckNCIsImtuZF8wMTMiLCJjdHhfMDExIiwiZF9sb2NfMDA5IiwiZF8wMDUiLCJrbmRfMDM3IiwiY3R4XzAzNSIsImRfbG9jXzAzMyIsInN0YXRlXzAzMSIsImRfMDI5IiwiYm5kc18wMjgiLCJibmRzXzAyOCQwIiwiYm5kc18wMjgkMSIsImJuZHNfMDI4JDIiLCJhcmdfMDMwIiwiYm5kc18wMjgkMyIsImRfZmllbGQiLCJkX2xvY19maWVsZCIsImtuZF9maWVsZCIsImtuZF92YWx1ZSIsImRfbG9jX3ZhbHVlIiwiZF92YWx1ZSIsInZfa25kIiwidl9kX2xvYyIsInZfZCIsInVud3JhcF91bnNhZmUiLCJzZXhwXzA0MCIsImZpZWxkX3NleHBzXzA0MSIsImVudl8wNDIiLCJkX2xvY18wNDQiLCJjdHhfMDQ2Iiwia25kXzA0OCIsImR1cGxpY2F0ZXNfMDUwIiwiZXh0cmFfMDUxIiwiaXRlcl8wNjAiLCJzZXhwXzA0MCQwIiwiZmllbGRfc2V4cHNfMDU0IiwiZmllbGRfbmFtZV8wNTIiLCJ0YWlsXzA2MSIsImZpZWxkX3NleHBfMDUzJDQiLCJmaWVsZF9zZXhwXzA1MyIsImZpZWxkX3NleHBfMDUzJDAiLCJmdmFsdWVfMDU1IiwiZmllbGRfc2V4cF8wNTMkMSIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA1MyQyIiwiZnZhbHVlXzA1NyIsImZpZWxkX3NleHBfMDUzJDMiLCJmdmFsdWVfMDU2Iiwia25kXzA0OSIsImN0eF8wNDciLCJkX2xvY18wNDUiLCJlbnZfMDQzIiwia25kXzA3MCIsImN0eF8wNjgiLCJkX2xvY18wNjYiLCJlbnZfMDY0IiwiYXJnXzA3MSIsImJuZHNfMDYzIiwiYXJnXzA2OSIsImJuZHNfMDYzJDAiLCJhcmdfMDY3IiwiYm5kc18wNjMkMSIsImFyZ18wNjUiLCJibmRzXzA2MyQyIiwiZW52X2ZpZWxkIiwiZW52X3ZhbHVlIiwidl9lbnYiLCJkX2xvYyIsImtuZCIsImdldF9jdHgiLCJvYmoiLCJnZXRfa2luZCIsIm9ianMiLCJjb250Iiwid3IiLCJzczEiLCJzczIiLCJ2cyIsInJlcV9hbGxfdmFsdWUkMCIsInJlcV9hbGxfZmluYWwkMCIsInJxIiwicmwiLCJ1bmRvIiwibyIsImRlY29tcG9zZSIsInJlcV92YWx1ZSQwIiwicmVxX2FsbF92YWx1ZSQxIiwicmVxX2ZpbmFsJDAiLCJyZXFfYWxsX2ZpbmFsJDEiLCJsZXQkMSIsImFuZCQwIiwib3RoZXJ3aXNlJDAiLCJ1cGRhdGVfdGVzdCQwIiwidGFrZV9zdGVwJDAiLCJyZXZfY29uY2F0IiwibHMkMCIsInJzJDEiLCJjb21wb3NlIiwiY3R4JDQiLCJjdHgkNSIsImN0eCQ2IiwiZHAkMSIsImN0eCQ3IiwidiQwIiwiY3R4JDgiLCJjdHgkOSIsImN0eCQxMCIsImN0eCQxMSIsImN0eCQxMiIsImN0eCQxMyIsImN0eCQxNCIsImN0eCQxNSIsImN0eCQxNiIsImN0eCQxNyIsIm9wJDMiLCJjdHgkMTgiLCJvcCQ0IiwiZDIkMTEiLCJkMiQxMiIsImN0eCQxOSIsIm9wJDUiLCJjdHgkMjAiLCJvcCQ2IiwiZDIkMTMiLCJyZCIsImN0eCQyMSIsImN0eCQyMiIsImN0eCQyMyIsImxpdCIsInJkJDAiLCJjdHgkMjQiLCJkJDExIiwiZDIkMTQiLCJjdHgkMjUiLCJjdHgkMjYiLCJkMSQxNiIsImQyJDE1IiwiZDIkMTYiLCJjdHgkMjciLCJkMSQxNyIsImN0eCQyOCIsImQxJDE4IiwiZDIkMTciLCJjdHgkMjkiLCJkJDEyIiwiY3R4JDMwIiwiZCQxMyIsImN0eCQzMSIsImQkMTQiLCJjdHgkMzIiLCJkJDE1IiwiY3R4JDMzIiwiZCQxNiIsImN0eCQzNCIsImQkMTciLCJyciIsImxyIiwiY3R4JDM1Iiwic2NyIiwiZCQxOCIsIm4kMiIsInJ1bGUkMCIsImN0eCQzNiIsImQkMTkiLCJuJDMiLCJyciQwIiwibHIkMCIsImN0eCQzNyIsImhpIiwibXYiLCJzY3IkMCIsImQkMjAiLCJkZWNvbXBvc2UkMCIsImV2YWx1YXRlX3dpdGhfaGlzdG9yeSIsIm5leHQiLCJtYXRjaGVzX2V4cCIsImYkMCIsImZ4JDAiLCJmaSIsImZ1IiwiZHgkMCIsImRpIiwiZHUiLCJmcnVsZSIsImZzY3J1dCIsImRydWxlIiwiZHNjcnV0IiwiZmQiLCJmZiIsImRkIiwiZGYiLCJmeCQxIiwiZHgkMSIsImZwJDAiLCJtYXRjaGVzX3BhdCIsImZuYW1lMSIsImZ0eTEiLCJmcDEiLCJkbmFtZTEiLCJkdHkxIiwiZmFyZyIsImZuYW1lIiwiZGFyZyIsImRuYW1lIiwiZG4iLCJmdiIsImR2IiwiZnYkMCIsImR2JDAiLCJmdiQxIiwiZHYkMSIsImZ2JDIiLCJkdiQyIiwiZjIkMyIsImYxJDMiLCJmX29wX2JpbiIsImRfb3BfYmluIiwiZjIkNCIsImYxJDQiLCJmX29wX2JpbiQwIiwiZF9vcF9iaW4kMCIsImYyJDUiLCJmMSQ1IiwiZl9vcF9iaW4kMSIsImRfb3BfYmluJDEiLCJmMiQ2IiwiZjEkNiIsImZfb3BfYmluJDIiLCJkX29wX2JpbiQyIiwiZnYkMyIsImZ0JDAiLCJkdiQzIiwiZHQkMCIsImYyJDciLCJmMSQ3IiwiZnYkNCIsImR2JDQiLCJmaSQwIiwiZnYkNSIsImRpJDAiLCJkdiQ1IiwiZjMiLCJmMiQ4IiwiZjEkOCIsImZjJDAiLCJkYyQwIiwibWF0Y2hlc19ydWwiLCJyZXMkMCIsImYkMiIsImVudiQyIiwiZmMiLCJmcCIsImYkMyIsImYkNCIsImYkNSIsImVudiQxIiwiZHgiLCJkdCIsImZ4IiwiZiQxIiwiZmwiLCJkbCIsIm1hdGNoZXNfdHlwIiwiZGwkMCIsImZsJDAiLCJyZXMkMSIsImZsdF9lbnYiLCJmbHRfZW52JDAiLCJpZHgkMCIsImZsdF9lbnYkMSIsImFjdCQwIiwiaWR4JDEiLCJlcnJvcl9zb3VyY2VfMDgxIiwicHBfY3VycmVudCIsInNob3dfY3VycmVudCIsImN1cnJlbnRfb2Zfc2V4cCIsInNleHBfb2ZfY3VycmVudCIsImFyZzJfMDI3IiwiY3VycmVudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY3VycmVudCIsImZpZWxkX3NleHBzXzAzMyIsImVsYWJfMDM0IiwicHJldmlvdXNfMDM2IiwiY3VycmVudF8wMzgiLCJuZXh0XzA0MCIsImR1cGxpY2F0ZXNfMDQyIiwiZXh0cmFfMDQzIiwiaXRlcl8wNTIiLCJzZXhwXzAzMiQwIiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MyIsImZpZWxkX3NleHBfMDQ1JDQiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDU0IiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDkiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0NyIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDUwIiwiZmllbGRfc2V4cF8wNDUkMyIsImZ2YWx1ZV8wNDgiLCJuZXh0XzA0MSIsImN1cnJlbnRfMDM5IiwicHJldmlvdXNfMDM3IiwiZWxhYl8wMzUiLCJuZXh0XzA2MiIsImN1cnJlbnRfMDYwIiwicHJldmlvdXNfMDU4IiwiZWxhYl8wNTYiLCJhcmdfMDYzIiwiYm5kc18wNTUiLCJhcmdfMDYxIiwiYm5kc18wNTUkMCIsImFyZ18wNTkiLCJibmRzXzA1NSQxIiwiYXJnXzA1NyIsImJuZHNfMDU1JDIiLCJlbGFiX2ZpZWxkIiwicHJldmlvdXNfZmllbGQiLCJjdXJyZW50X2ZpZWxkIiwibmV4dF9maWVsZCIsIm5leHRfdmFsdWUiLCJjdXJyZW50X3ZhbHVlIiwicHJldmlvdXNfdmFsdWUiLCJlbGFiX3ZhbHVlIiwidl9uZXh0Iiwidl9jdXJyZW50Iiwidl9wcmV2aW91cyIsInZfZWxhYiIsInBhY3QiLCJwaWR4IiwiY29tcG9zZWQiLCJtaWR4IiwibWFjdCIsInJjdHgiLCJyaWR4IiwicmFjdCIsImZsdCQwIiwiZmx0JDEiLCJyY3R4JDAiLCJyaWR4JDAiLCJyYWN0JDAiLCJ0eSQzIiwidHkkNCIsInR5JDUiLCJkcGF0IiwiZGV4cCIsInJpIiwiaSQzIiwicmkkMCIsInJzJDIiLCJjdHgkMzgiLCJkcGF0JDAiLCJpJDQiLCJ1JDIiLCJkZXhwJDAiLCJyY3R4JDEiLCJyaWR4JDEiLCJyYWN0JDEiLCJzaG91bGRfaGlkZV9ldmFsX29iaiIsImdldF9lbGFiIiwiZWxhYiIsImdldF9uZXh0X3N0ZXBzIiwiY3VycmVudF9leHByIiwic3RlcF9wZW5kaW5nIiwicHJldmlvdXMiLCJlbyIsInVwZGF0ZV9yZXN1bHQiLCJza2lwcGVkX3N0ZXBzIiwibmV4dF9ldmFsX29ianMiLCJldmFsdWF0ZV9wZW5kaW5nIiwic3RhdGVfcmVmIiwiZW8kMCIsImV2YWx1YXRlX2Z1bGwiLCJ0aW1lb3V0IiwidW5kb19wb2ludCIsInN0ZXBfYmFja3dhcmQiLCJnZXRfanVzdGlmaWNhdGlvbiIsImdldF9oaXN0b3J5Iiwic3RlcHBlciIsInN0ZXBzIiwiaGlkZGVuIiwicHBfcGVyc2lzdGVudCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsImZpZWxkX3NleHBzXzA2NiIsImVsYWJfMDY3IiwicHJldmlvdXNfMDY5IiwiY3VycmVudF8wNzEiLCJkdXBsaWNhdGVzXzA3MyIsImV4dHJhXzA3NCIsIml0ZXJfMDgyIiwic2V4cF8wNjUkMCIsImZpZWxkX3NleHBzXzA3NyIsImZpZWxkX25hbWVfMDc1IiwidGFpbF8wODMiLCJmaWVsZF9zZXhwXzA3NiQzIiwiZmllbGRfc2V4cF8wNzYiLCJ4XzA4NCIsImZpZWxkX3NleHBfMDc2JDAiLCJmdmFsdWVfMDc5IiwiZmllbGRfc2V4cF8wNzYkMSIsImZ2YWx1ZV8wODAiLCJmaWVsZF9zZXhwXzA3NiQyIiwiZnZhbHVlXzA3OCIsImN1cnJlbnRfMDcyIiwicHJldmlvdXNfMDcwIiwiZWxhYl8wNjgiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJjdXJyZW50XzA5MCIsInByZXZpb3VzXzA4OCIsImVsYWJfMDg2IiwiYm5kc18wODUiLCJibmRzXzA4NSQwIiwiYm5kc18wODUkMSIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3NleHAkMCIsInNleHBfb2ZfcGVyc2lzdGVudCQwIiwidG9fcGVyc2lzdGVudCIsInByZXZpb3VzJDAiLCJmcm9tX3BlcnNpc3RlbnQiLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8xMDUiLCJlcnJvcl9zb3VyY2VfMTY1IiwicHBfcGllY2VfZ29hbCIsInNob3dfcGllY2VfZ29hbCIsInBpZWNlX2dvYWxfb2Zfc2V4cCIsInNleHBfb2ZfcGllY2VfZ29hbCIsInBpZWNlX2dvYWxfb2ZfeW9qc29uIiwieW9qc29uX29mX3BpZWNlX2dvYWwiLCJvZl9waWVjZV9nb2FsIiwicHBfZ29hbCIsInNob3dfZ29hbCIsImdvYWxfb2Zfc2V4cCIsInNleHBfb2ZfZ29hbCIsImdvYWxfb2ZfeW9qc29uIiwieW9qc29uX29mX2dvYWwiLCJwcF9tb3ZlIiwic2hvd19tb3ZlIiwibW92ZV9vZl9zZXhwIiwic2V4cF8wMzEiLCJ0YWdfMDMyIiwicmVzMF8wMzUiLCJzZXhwX29mX21vdmUiLCJtb3ZlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZlIiwicHBfanVtcF90YXJnZXQiLCJzaG93X2p1bXBfdGFyZ2V0IiwianVtcF90YXJnZXRfb2Zfc2V4cCIsInNleHBfMDU2IiwidGFnXzA1NyIsInNleHBfb2ZfanVtcF90YXJnZXQiLCJqdW1wX3RhcmdldF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfanVtcF90YXJnZXQiLCJwcF9yZWwiLCJzaG93X3JlbCIsInJlbF9vZl9zZXhwIiwiYXJnMV8wNzEiLCJyZXMxXzA3MyIsInNleHBfb2ZfcmVsIiwiYXJnMV8wNzUiLCJhcmcwXzA3NCIsInJlczFfMDc3IiwicmVsX29mX3lvanNvbiIsInlvanNvbl9vZl9yZWwiLCJwcF9zZWxlY3QiLCJzaG93X3NlbGVjdCIsInNlbGVjdF9vZl9zZXhwIiwic2V4cF8wODIiLCJ0YWdfMDgzIiwic2V4cF9hcmdzXzA5NCIsImFyZzBfMDk1IiwicmVzMF8wOTYiLCJzZXhwX2FyZ3NfMDg5Iiwic2V4cF9vZl9zZWxlY3QiLCJzZWxlY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdCIsInNleHBfMTA3IiwidGFnXzEwOCIsInNleHBfYXJnc18xMTQiLCJhcmcwXzExNSIsInJlczBfMTE2Iiwic2V4cF9hcmdzXzEyNCIsImFyZzBfMTI1IiwicmVzMF8xMjYiLCJzZXhwX2FyZ3NfMTI5IiwicmVzMF8xMzEiLCJyZXMwXzExMSIsInNleHBfYXJnc18xNDQiLCJhcmcwXzE0NSIsImFyZzBfMTQ5IiwicmVzMF8xNTAiLCJhcmcwXzE1OSIsImFyZzBfMTYxIiwicmVzMF8xNjIiLCJzZXhwXzE2NiIsImlzX2VkaXQiLCJ1bnNlbGVjdGVkIiwidGVybXMiLCJ2aWV3X3Rlcm0iLCJtb2R1bGVfb2ZfdCIsImNvbF90YXJnZXQiLCJlZmZlY3RzIiwibWVhc3VyZWQkMCIsImNvbF90YXJnZXQkMCIsInRlcm1zJDAiLCJ2aWV3X3Rlcm0kMCIsInppcHBlcl8wMDQiLCJtZXRhXzAwNiIsIm1ldGFfMDA3IiwiemlwcGVyXzAwNSIsIm1ldGFfMDIyIiwiemlwcGVyXzAyMCIsInppcHBlcl9maWVsZCIsIm1ldGFfZmllbGQiLCJtZXRhX3ZhbHVlIiwiemlwcGVyX3ZhbHVlIiwidl9tZXRhIiwidl96aXBwZXIiLCJpbml0JDAiLCJuZXh0JDAiLCJwcF9hZmZpeCIsInNob3dfYWZmaXgiLCJhZmZpeF9vZl9zZXhwIiwieF8wMzEiLCJzZXhwXzAyOSIsInJlczFfMDI4Iiwic2V4cF9vZl9hZmZpeCIsImFmZml4X29mX3lvanNvbiIsInlvanNvbl9vZl9hZmZpeCIsInNleHBfMDQyIiwiYXJnMV8wMzkiLCJyZXMxXzA0MSIsInJlczFfMDQ3Iiwic2V4cF8wNDkiLCJmaWVsZF9zZXhwc18wNTAiLCJzdGF0ZV8wNTEiLCJoaXN0b3J5XzA1MyIsInJlYWRfb25seV8wNTUiLCJkdXBsaWNhdGVzXzA1NyIsImV4dHJhXzA1OCIsIml0ZXJfMDY2Iiwic2V4cF8wNDkkMCIsImZpZWxkX3NleHBzXzA2MSIsImZpZWxkX25hbWVfMDU5IiwidGFpbF8wNjciLCJmaWVsZF9zZXhwXzA2MCQzIiwiZmllbGRfc2V4cF8wNjAiLCJ4XzA2OCIsImZpZWxkX3NleHBfMDYwJDAiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNjAkMSIsImZ2YWx1ZV8wNjIiLCJmaWVsZF9zZXhwXzA2MCQyIiwiZnZhbHVlXzA2MyIsInJlYWRfb25seV8wNTYiLCJoaXN0b3J5XzA1NCIsInN0YXRlXzA1MiIsInJlYWRfb25seV8wNzQiLCJoaXN0b3J5XzA3MiIsInN0YXRlXzA3MCIsImFyZ18wNzUiLCJibmRzXzA2OSIsImFyZ18wNzMiLCJibmRzXzA2OSQwIiwiYm5kc18wNjkkMSIsImhpc3RvcnlfZmllbGQiLCJyZWFkX29ubHlfZmllbGQiLCJyZWFkX29ubHlfdmFsdWUiLCJoaXN0b3J5X3ZhbHVlIiwidl9yZWFkX29ubHkiLCJ2X2hpc3RvcnkiLCJyZWFkX29ubHkiLCJ1cGRhdGVfeiIsImVkIiwicHV0X3oiLCJ1cGRhdGVfel9vcHQiLCJuZXdfc3RhdGUiLCJoaXN0b3J5IiwiYWZ0ZXIiLCJyZWRvIiwiY2FuX3VuZG8iLCJjYW5fcmVkbyIsInNldF9yZWFkX29ubHkiLCJ0cmFpbGluZ19ob2xlX2N0eCIsImluZm8kMCIsInBwX21vdmFiaWxpdHkiLCJzaG93X21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZhYmlsaXR5IiwibW92YWJpbGl0eSIsImNodW5raW5lc3MiLCJkZWxpbV9pZHgiLCJjaGFyX21heCIsIm5laWdoYm9yX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5JDAiLCJsX2tpZHMiLCJzdXBlcm5oYnJfciQwIiwic3VwZXJuaGJyX2wiLCJyX25oYnIiLCJsX25oYnIiLCJ3JDAiLCJjb250ZW50X3N0cmluZyQwIiwiY29udGVudF9zdHJpbmciLCJwb3Bfb3V0IiwicG9wX21vdmUiLCJpbm5lcl9pbmNyIiwiaW5uZXJfZGVjciIsImlubmVyX3N0YXJ0IiwiZF9pbml0IiwiaW5uZXJfZW5kIiwiY19tYXgiLCJwcmltYXJ5IiwiY19tYXgkMCIsImRsbSIsImlzX2F0X3NpZGVfb2Zfcm93IiwiY29scCIsInJvd3AiLCJkb190b3dhcmRzIiwiYW5jaG9yIiwiZ29hbCIsImN1cnIkMCIsImN1cnJfcCIsImRfY3VyciIsImRfcHJldiIsImFuY2hvciQwIiwiYW5jaG9yX2QiLCJkb192ZXJ0aWNhbCIsImN1cl9wIiwiZG9fZXh0cmVtZSIsInRvX3N0YXJ0IiwidG9fZW5kIiwidG9fZWRnZSIsImRvX3VudGlsIiwibW92ZV9maXJzdCIsInBpZWNlX3AiLCJkb191bnRpbF93cmFwIiwianVtcF90b19pZCIsInZlcnRpY2FsIiwidGFyZ2V0c193aXRoaW5fcm93IiwidG9fYmFja3BhY2tfdGFyZ2V0IiwiZG9uZV9vcl90cnlfYWdhaW4iLCJ6MSIsInoyIiwiZGlzdDEiLCJkaXN0MiIsInpzIiwiY2h1bmsiLCJjaHVuayQwIiwibGFzdF9pbm5lcl9wb3MiLCJkZWxldGVfcmlnaHQiLCJkZWxldGVfbGVmdCIsImNvbnN0cnVjdF9yaWdodCIsImNvbnN0cnVjdF9sZWZ0IiwiY19pZHgiLCJjX2lkeCQwIiwicGFyZW50X2R1b21lcmdlcyIsImJhcmYiLCJkZWxheWVkX2V4cGFuZCIsIm5ld19sYWJlbCIsImV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3IiLCJleHBhbmRfb3JfYmFyZl9yaWdodF9uZWlnaGJvciIsImdldF9kdW9fc2hhcmQiLCJuZWlnaGJvcl9jYW5fZHVvbWVyZ2UiLCJtb25vX2xibCIsInRpbGUkMCIsIm1ha2VfbmV3X3RpbGUiLCJsYmwkMCIsImV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3XyIsInJlcGxhY2VfdGlsZSIsInBwX2FwcGVuZGFiaWxpdHkiLCJzaG93X2FwcGVuZGFiaWxpdHkiLCJhcHBlbmRhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX2FwcGVuZGFiaWxpdHkiLCJhcHBlbmRhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9hcHBlbmRhYmlsaXR5Iiwic2libGluZ19hcHBlbmRhYmlsaXR5IiwiaW5zZXJ0X291dGVyIiwiaW5zZXJ0X2R1byIsImluc2VydF9tb25vcyIsIm9wdF9yZWdyb2xkIiwibW92ZV9pbnRvX2lmX3N0cmluZ2xpdF9vcl9jb21tIiwiY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudCIsImRfaWR4IiwiY2FyZXQkMCIsImlzX3dyaXRlX2FjdGlvbiIsImdvX3oiLCJtZXRhJDAiLCJzZWxlY3RfdGVybV9jdXJyZW50IiwianVtcF90YXJnZXQiLCJzdGF0aWNzIiwiYmluZGluZ19pZCIsImlkJDIiLCJ6JDUiLCJ6JDYiLCJpZCQzIiwieiQ3IiwiaWQkNCIsInokOCIsInokOSIsInRpbGVfaXNfdGVybSIsInN0YXRpY3MkMCIsInokMTAiLCJjYXJldF9zdHIiLCJjb2RlX2ZpZWxkIiwiY29kZV92YWx1ZSIsInZfY29kZSIsInNlZ19vZl96aXAiLCJvZl9waWVjZSIsIm9mX2RlbGltIiwidG9fc3RyaW5nX2Jhc2ljIiwibGluZXNfdG9fbGlzdCIsInRvX3Jvd3MiLCJpbmRlbnRfb2YiLCJta19pbmRlbnQiLCJjYXJldF9yb3ciLCJjYXJldF9yb3ckMCIsInByZXR0eV9wcmludCIsInRvX3N0cmluZ19lZGl0b3IiLCJ0b19zdHJpbmdfc2VsZWN0aW9uIiwiZWRpdG9yIiwidG9fbG9nIiwidG9fbG9nX2ZsYXQiLCJjb2RlIiwiemlwcGVyX29mX3N0cmluZyIsInppcHBlcl9pbml0IiwiaW5zZXJ0IiwicGFzdGVfaW50b196aXAiLCJiYWNrdXBfdGV4dF8wMDYiLCJiYWNrdXBfdGV4dF8wMDciLCJiYWNrdXBfdGV4dF8wMjIiLCJiYWNrdXBfdGV4dF9maWVsZCIsImJhY2t1cF90ZXh0X3ZhbHVlIiwidl9iYWNrdXBfdGV4dCIsInBlcnNpc3QiLCJ1bnBlcnNpc3QiLCJwZXJzaXN0ZWQiLCJvcmllbnQiLCJvcmllbnQkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJwcF9ldmFsX3Jlc3VsdCIsInNob3dfZXZhbF9yZXN1bHQiLCJldmFsX3Jlc3VsdF9vZl9zZXhwIiwiZWxhYl8wMDQiLCJldmFsdWF0aW9uXzAwNiIsInByZXZpb3VzXzAwOCIsInByZXZpb3VzXzAwOSIsImV2YWx1YXRpb25fMDA3IiwiZWxhYl8wMDUiLCJzZXhwX29mX2V2YWxfcmVzdWx0IiwicHJldmlvdXNfMDI3IiwiZXZhbHVhdGlvbl8wMjUiLCJlbGFiXzAyMyIsImV2YWxfcmVzdWx0X29mX3lvanNvbiIsInlvanNvbl9vZl9ldmFsX3Jlc3VsdCIsInNleHBfMDMzIiwidGFnXzAzNCIsImluaXRfZXZhbCIsInVwZGF0ZV9lbGFiIiwiZXZhbHVhdGlvbiIsImVsYWIyIiwidXBkYXRlX3N0ZXBwZXIiLCJwYXJhbSIsInN0ZXBfZm9yd2FyZCIsIm1yIiwicnVuX3BlbmRpbmciLCJ0b2dnbGVfc3RlcHBlciIsImVsYWIkMCIsInByIiwib2ZfcGVyc2lzdGVudCIsInhfMDA0IiwidXBkYXRlX2VsYWJzIiwicmVzdWx0cyIsInRpbWVvdXRfYWxsIiwiYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0Iiwic3RlcHBlcl9yZXN1bHRfb3B0IiwidG9fZXZhbHVhdGUiLCJlbGFicyIsInRvX3N0ZXAiLCJ1X29mIiwiaV9vZiIsInhfMDA4IiwicGljayIsImNsZWFyIiwiaGNwIiwiYWRkX3BhcmVudCIsIm5ld19wYXJlbnQiLCJudW1faW5zdGFuY2VzIiwiaGlpIiwiaGlzIiwiZmluZF9pbnN0YW5jZSIsInVfaW5zdGFuY2VzIiwicGFyZW50cyIsImVycm9yX3NvdXJjZV8wMDkiLCJ4XzAxMCIsImFyZzJfMDA0IiwicmVzMl8wMDciLCJ4XzAxNyIsImFyZzJfMDEzIiwicmVzMl8wMTYiLCJhZGRfaW5zdGFuY2UiLCJoaXMkMSIsImhpaSQxIiwiaGlzJDAiLCJoaWkkMCIsInRvX2hvbGVfaW5zdGFuY2VfaW5mbyIsImhpcCIsInBlIiwiZ2V0X3BlIiwicGVfYWRkIiwiaGlpX2FkZF9pbnN0YW5jZSIsInNleHBfMDE1IiwicHBfZXZhbCIsImNhc2VfaSIsInBwX3VuZXZhbCIsInBwX3VuZXZhbF9ydWxlcyIsInBwX2V2YWxfZW52IiwidSQzIiwidSQ0IiwicmVhc29uJDAiLCJ0cmFja19jaGlsZHJlbl9vZl9ob2xlIiwiaGlpJDIiLCJoaWkkMyIsInRyYWNrX2NoaWxkcmVuX29mX2hvbGVfcnVsZXMiLCJoaWkkNSIsImhpaSQ2IiwiaGlpJDciLCJoaWkkOCIsImhpaSQ0IiwidHJhY2tfY2hpbGRyZW4iLCJoYyIsInBvc3Rwcm9jZXNzIiwidV9yZXN1bHQiLCJlZGl0b3Jfb2ZfY29kZSIsImVkaXRvcnNfZm9yIiwiYWNjX3pzIiwic3oiLCJlZGl0b3JzX29mX3N0cmluZ3MiLCJhZXMiLCJvZSIsImFwcGVuZF9leHAiLCJlYm9keSIsImVkZWYiLCJlYm9keSQwIiwiZWJvZHkkMSIsInRkZWYiLCJlYm9keSQyIiwiZTEyIiwiZTExIiwiZTEyJDAiLCJlYm9keSQzIiwiZWNvbmQiLCJlYm9keSQ0IiwicHBfc3RhdGljcyIsInNob3dfc3RhdGljcyIsInN0YXRpY3Nfb2Zfc2V4cCIsInRlcm1fMDA0IiwiaW5mb19tYXBfMDA2IiwiZXJyb3JfaWRzXzAwOCIsImVycm9yX2lkc18wMDkiLCJpbmZvX21hcF8wMDciLCJ0ZXJtXzAwNSIsInNleHBfb2Zfc3RhdGljcyIsImVycm9yX2lkc18wMjciLCJpbmZvX21hcF8wMjUiLCJ0ZXJtXzAyMyIsInN0YXRpY3Nfb2ZfeW9qc29uIiwiaW5mb19tYXBfZmllbGQiLCJlcnJvcl9pZHNfZmllbGQiLCJlcnJvcl9pZHNfdmFsdWUiLCJpbmZvX21hcF92YWx1ZSIsInlvanNvbl9vZl9zdGF0aWNzIiwidl9lcnJvcl9pZHMiLCJ2X2luZm9fbWFwIiwiZW1wdHlfc3RhdGljcyIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsImVtcHR5Iiwic2luZ2xldG9uIiwicG9zIiwieCIsInVuaW9uIiwiZiIsInQxIiwidDIiLCJ4czIiLCJ4MiIsInAyIiwieHMxIiwieDEiLCJwMSIsIm1hcCIsInJlc3QiLCJtYXBpIiwibWFwayIsImZvbGRfbGVmdCIsInokMCIsImVycm9yX3NvdXJjZV8wMTUiLCJ6ZXJvIiwidF9vZl9zZXhwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfMDA0IiwiY29sXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfMDA3Iiwicm93XzAwNSIsInNleHBfb2ZfdCIsImNvbF8wMjIiLCJyb3dfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJjb21wYXJlIiwicG9zMSIsInBvczIiLCJlcnJvcl9zb3VyY2VfMDA0Iiwib2ZfYW5ub3RfMDAxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJzZXhwX2FyZ3NfMDEzIiwiYXJnMV8wMTUiLCJhcmcwXzAxNCIsInJlczBfMDE2IiwicmVzMV8wMTciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsIm9mX2Fubm90XzAzMSIsImFyZzBfMDMyIiwicmVzMF8wMzMiLCJhcmcxXzAzNSIsImFyZzBfMDM0IiwicmVzMF8wMzYiLCJyZXMxXzAzNyIsImFyZzBfMDM4IiwicmVzMF8wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsImFsaWduIiwibCIsImFubm90IiwicmVtb3ZlX2Fubm90cyIsImxheW91dCIsImxheW91dCQwIiwic3RyaW5nIiwibDIiLCJsMSIsImxheW91dCQxIiwibWtfb2ZfbGF5b3V0IiwidGV4dCIsImNvbHVtbiIsImdvIiwiaW5kZW50IiwiaW5kZW50JDAiLCJpbXAxIiwiaW1wMiIsImluZGVudCQxIiwic3RyaW5nX29mX2xheW91dCIsImltcCIsInMxIiwiczIiLCJyZWNvcmQiLCJzdHJpbmdzX29mX2xheW91dCIsInJlc3QyIiwiZmlyc3Rfc3RyaW5nXzIiLCJmaXJzdF9pbmRlbnRfMiIsInJlc3QxIiwibGFzdF9zdHJpbmdfMSIsImxhc3RfaW5kZW50XzEiLCJzcGxpdF9maXJzdCIsInhzIiwidHJhaWxpbmciLCJmaXJzdCIsInNwbGl0X2xhc3Rfb3B0IiwieXMiLCJ5Iiwic3BsaXRfbGFzdCIsInIiLCJib3giLCJlcnJvcl9zb3VyY2VfMDM5IiwiZXJyb3Jfc291cmNlXzA0NiIsImJveF9vZl9zZXhwIiwiaGVpZ2h0XzAwNCIsIndpZHRoXzAwNiIsIndpZHRoXzAwNyIsImhlaWdodF8wMDUiLCJzZXhwX29mX2JveCIsIndpZHRoXzAyMiIsImhlaWdodF8wMjAiLCJ0X29mX3NleHAkMCIsIm9mX2Fubm90XzAyNCIsInNleHBfMDI2IiwiZmllbGRfc2V4cHNfMDI3IiwibGF5b3V0XzAyOCIsIm1ldHJpY3NfMDMwIiwiZHVwbGljYXRlc18wMzIiLCJleHRyYV8wMzMiLCJzZXhwXzAyNiQwIiwiZmllbGRfc2V4cHNfMDM2IiwiZmllbGRfbmFtZV8wMzQiLCJ0YWlsXzA0MSIsImZpZWxkX3NleHBfMDM1JDIiLCJmaWVsZF9zZXhwXzAzNSIsInhfMDQyIiwiZmllbGRfc2V4cF8wMzUkMCIsImZ2YWx1ZV8wMzciLCJmaWVsZF9zZXhwXzAzNSQxIiwiZnZhbHVlXzAzOCIsIm1ldHJpY3NfMDMxIiwibGF5b3V0XzAyOSIsIm9mX2Fubm90XzA0MyIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJhcmcwXzA1NiIsInJlczBfMDU3Iiwic2V4cF9hcmdzXzA2NyIsImFyZzFfMDY5IiwiYXJnMF8wNjgiLCJyZXMwXzA3MCIsInJlczFfMDcxIiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzA1MCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJvZl9hbm5vdF8wNzMiLCJtZXRyaWNzXzA3NyIsImxheW91dF8wNzUiLCJhcmdfMDc4IiwiYm5kc18wNzQiLCJhcmdfMDc2Iiwic2V4cF9vZl90JDAiLCJibmRzXzA3NCQwIiwib2ZfYW5ub3RfMDc5IiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsImFyZzFfMDg5IiwiYXJnMF8wODgiLCJyZXMwXzA5MCIsInJlczFfMDkxIiwiaGVpZ2h0IiwibSIsIndpZHRoIiwib3B0Iiwic3RoIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJjb2wiLCJyb3ciLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsInN0aCQwIiwibWlkIiwidGFibGUiLCJtayIsIm1pZF9ib3giLCJsJDAiLCJidyIsImJoIiwiYm91bmRpbmdfYm94IiwibCQxIiwibSQyIiwib3ZlcmZsb3dfY29zdCIsImhlaWdodF9jb3N0IiwibWtfaGVpZ2h0IiwibWtfb3ZlcmZsb3ciLCJpbmYiLCJhZGQiLCJjMSIsImMyIiwiZXEiLCJsdCIsImxlcSIsImVycm9yX3NvdXJjZV8wMTYiLCJlcnJvcl9zb3VyY2VfMDIzIiwiZXJyb3Jfc291cmNlXzA5NiIsImVycm9yX3NvdXJjZV8xMDMiLCJoYXNoIiwiZXF1YWwiLCJ3MiIsIncxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJtZW1fMDA1IiwiZG9jXzAwNyIsImR1cGxpY2F0ZXNfMDA5IiwiZXh0cmFfMDEwIiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxMyIsImZpZWxkX25hbWVfMDExIiwidGFpbF8wMTgiLCJmaWVsZF9zZXhwXzAxMiQyIiwiZmllbGRfc2V4cF8wMTIiLCJ4XzAxOSIsImZpZWxkX3NleHBfMDEyJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTIkMSIsImRvY18wMDgiLCJtZW1fMDA2Iiwib2ZfYW5ub3RfMDIwIiwic2V4cF8wMjUiLCJ0YWdfMDI2Iiwic2V4cF9hcmdzXzAzOSIsInJlczBfMDQxIiwic2V4cF9hcmdzXzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4Iiwic2V4cF9hcmdzXzAzMiIsImFyZzFfMDM0IiwiYXJnMF8wMzMiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJ0X29mX3NleHAkMSIsInRfb2Zfc2V4cCQyIiwib2ZfYW5ub3RfMDgxIiwic2V4cF8wODMiLCJmaWVsZF9zZXhwc18wODQiLCJtZW1fMDg1IiwiZG9jXzA4NyIsImR1cGxpY2F0ZXNfMDg5IiwiZXh0cmFfMDkwIiwic2V4cF8wODMkMCIsImZpZWxkX3NleHBzXzA5MyIsImZpZWxkX25hbWVfMDkxIiwidGFpbF8wOTgiLCJmaWVsZF9zZXhwXzA5MiQyIiwiZmllbGRfc2V4cF8wOTIiLCJ4XzA5OSIsImZpZWxkX3NleHBfMDkyJDAiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTIkMSIsImZ2YWx1ZV8wOTQiLCJkb2NfMDg4IiwibWVtXzA4NiIsIm9mX2Fubm90XzEwMCIsInNleHBfMTA1IiwidGFnXzEwNiIsInNleHBfYXJnc18xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwic2V4cF9hcmdzXzEyNCIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4Iiwic2V4cF9hcmdzXzExMiIsImFyZzFfMTE0IiwiYXJnMF8xMTMiLCJyZXMwXzExNSIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzEzMSIsImFyZzFfMTMzIiwiYXJnMF8xMzIiLCJyZXMwXzEzNCIsInJlczFfMTM1Iiwic2V4cF9hcmdzXzEwNyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJvZl9hbm5vdF8xMzciLCJkb2NfMTQxIiwibWVtXzEzOSIsImFyZ18xNDIiLCJibmRzXzEzOCIsImFyZ18xNDAiLCJibmRzXzEzOCQwIiwib2ZfYW5ub3RfMTQzIiwiYXJnMF8xNDQiLCJyZXMwXzE0NSIsImFyZzFfMTQ3IiwiYXJnMF8xNDYiLCJyZXMwXzE0OCIsInJlczFfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzFfMTUzIiwiYXJnMF8xNTIiLCJyZXMwXzE1NCIsInJlczFfMTU1IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU4IiwicmVzMV8xNTkiLCJ0X29mX3QiLCJ0IiwiZG9jIiwiZmFpbCIsInNwYWNlIiwiaW5kZW50X2FuZF9hbGlnbiIsImhjYXQiLCJoY2F0cyIsImRvY3MiLCJoc2VwIiwiaHNlcHMiLCJ2c2VwIiwidnNlcHMiLCJjaG9pY2UiLCJjaG9pY2VzIiwibWFwX3QiLCJkIiwibWFwX2Fubm90IiwiZDIiLCJkMSIsImQkMCIsImQkMSIsImQyJDAiLCJkMSQwIiwiYWxsIiwibHMxIiwibHMyIiwibV91bmlvbiIsImNvc3RfdW5pb24iLCJjb3N0MiIsImNvc3QxIiwibGF5b3V0X29mX2RvYyIsImgiLCJwb3MkMCIsImtleSIsInZhbHVlIiwidmFsdWUkMCIsImNvc3QiLCJvdmVyZmxvdyIsInoiLCJsYXlvdXQxIiwibGF5b3V0MiIsImxheW91dHMiLCJwIiwiYyIsImwxJDAiLCJsYXlvdXRfb2ZfZG9jJDAiLCJ4X2Nvc3QiLCJ4X3BvcyIsInNleHBfYXJnc18wMTgiLCJhcmcwXzAxOSIsInJlczBfMDIwIiwicmVzMF8wMTUiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJvZl9hbm5vdF8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhbm5vdCQwIiwiYm94ZXMiLCJib3hlczEiLCJsZWFkaW5nJDAiLCJib3hlczIiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwicHBfc3ludGF4X3Jlc3VsdCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzaG93X3N5bnRheF9yZXN1bHQiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJlc3VsdHNfMDA0IiwicGVyY2VudGFnZV8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsInNleHBfb2Zfc3ludGF4X3Jlc3VsdCIsInBlcmNlbnRhZ2VfMDIyIiwicmVzdWx0c18wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInN5bnRheF9yZXN1bHRfb2ZfeW9qc29uIiwieW9qc29uIiwiZmllbGRfeW9qc29ucyIsInJlc3VsdHNfZmllbGQiLCJwZXJjZW50YWdlX2ZpZWxkIiwiZHVwbGljYXRlcyIsImV4dHJhIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInBlcmNlbnRhZ2VfdmFsdWUiLCJyZXN1bHRzX3ZhbHVlIiwieW9qc29uX29mX3N5bnRheF9yZXN1bHQiLCJ2X3BlcmNlbnRhZ2UiLCJ2X3Jlc3VsdHMiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJmaW5kX3Zhcl91cGF0IiwibmFtZSIsInVwYXQiLCJ1cGF0JDAiLCJ1cGF0JDEiLCJ1cDEiLCJ1cGF0JDIiLCJ1cGF0JDMiLCJ1cDEkMCIsInVwYXQkNCIsImwiLCJhY2MiLCJ1cCIsInZhcl9tZW50aW9uIiwidWV4cCIsInVleHAkMCIsImJvZHkiLCJhcmdzIiwiYm9keSQwIiwiZGVmIiwicCIsInVleHAkMyIsInUyIiwidTEkMCIsInVleHAkMSIsInVleHAkMiIsInUxIiwibCQwIiwiZyIsInBlIiwiZSIsInVlIiwidmFyX2FwcGxpZWQiLCJ1ZXhwJDQiLCJ1ZXhwJDUiLCJ1ZXhwJDYiLCJ1MSQxIiwiZmluZF9pbl9sZXQiLCJkZWYkMCIsInBsIiwidWwiLCJkZWYkMiIsImRlZiQxIiwiZmluZF9mbiIsImwkMSIsImwkMiIsInVsJDAiLCJsJDMiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwidTIkMCIsInUiLCJ1MiQxIiwiaXNfdGFpbF9yZWN1cnNpdmUiLCJjaGVjayIsInByZWRpY2F0ZXMiLCJwcmVkIiwicmVzdWx0cyIsImxlbmd0aCIsInJlcyIsInBhc3NpbmciLCJwcF9wcmVkaWNhdGUiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsInNob3dfcHJlZGljYXRlIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDMwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInNleHBfYXJnc18wNDUiLCJhcmcwXzA0NiIsInJlczBfMDQ3Iiwic2V4cF9hcmdzXzAzNSIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwX2FyZ3NfMDQwIiwiYXJnMF8wNDEiLCJyZXMwXzA0MiIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wNDgiLCJyZXMwXzA0OSIsImFyZzBfMDUwIiwicmVzMF8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDE2IiwiZXJyb3Jfc291cmNlXzA0MSIsImVycm9yX3NvdXJjZV8wNTgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wODQiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8xMTMiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8yMDUiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8yMTIiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8yNDQiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8yNTkiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8yOTAiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwicHBfd3JvbmdfaW1wbCIsInBvbHlfY29kZSIsInNob3dfd3JvbmdfaW1wbCIsIndyb25nX2ltcGxfb2Zfc2V4cCIsIm9mX2NvZGVfMDAxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJpbXBsXzAwNSIsImhpbnRfMDA3IiwiZHVwbGljYXRlc18wMDkiLCJleHRyYV8wMTAiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDEzIiwiZmllbGRfbmFtZV8wMTEiLCJ0YWlsXzAxOCIsImZpZWxkX3NleHBfMDEyJDIiLCJmaWVsZF9zZXhwXzAxMiIsInhfMDE5IiwiZmllbGRfc2V4cF8wMTIkMCIsImZ2YWx1ZV8wMTUiLCJmaWVsZF9zZXhwXzAxMiQxIiwiaGludF8wMDgiLCJpbXBsXzAwNiIsInNleHBfb2Zfd3JvbmdfaW1wbCIsIm9mX2NvZGVfMDIwIiwiaGludF8wMjQiLCJpbXBsXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImJuZHNfMDIxJDAiLCJ3cm9uZ19pbXBsX29mX3lvanNvbiIsIm9mX2NvZGUiLCJpbXBsX2ZpZWxkIiwiaGludF9maWVsZCIsImhpbnRfdmFsdWUiLCJpbXBsX3ZhbHVlIiwieW9qc29uX29mX3dyb25nX2ltcGwiLCJ2X2hpbnQiLCJ2X2ltcGwiLCJwcF9oaWRkZW5fdGVzdHMiLCJzaG93X2hpZGRlbl90ZXN0cyIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMjYiLCJmaWVsZF9zZXhwc18wMjkiLCJ0ZXN0c18wMzAiLCJoaW50c18wMzIiLCJkdXBsaWNhdGVzXzAzNCIsImV4dHJhXzAzNSIsInNleHBfMDI4JDAiLCJmaWVsZF9zZXhwc18wMzgiLCJmaWVsZF9uYW1lXzAzNiIsInRhaWxfMDQzIiwiZmllbGRfc2V4cF8wMzckMiIsImZpZWxkX3NleHBfMDM3IiwieF8wNDQiLCJmaWVsZF9zZXhwXzAzNyQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM3JDEiLCJmdmFsdWVfMDM5IiwiaGludHNfMDMzIiwidGVzdHNfMDMxIiwic2V4cF9vZl9oaWRkZW5fdGVzdHMiLCJvZl9jb2RlXzA0NSIsImhpbnRzXzA0OSIsInRlc3RzXzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwiaGlkZGVuX3Rlc3RzX29mX3lvanNvbiIsInRlc3RzX2ZpZWxkIiwiaGludHNfZmllbGQiLCJoaW50c192YWx1ZSIsInRlc3RzX3ZhbHVlIiwieW9qc29uX29mX2hpZGRlbl90ZXN0cyIsInZfaGludHMiLCJ2X3Rlc3RzIiwicHBfaGludCIsInNob3dfaGludCIsImhpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaGludCIsImhpbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpbnQiLCJwcF9zeW50YXhfdGVzdCIsInNob3dfc3ludGF4X3Rlc3QiLCJhMSIsInN5bnRheF90ZXN0X29mX3NleHAiLCJzZXhwXzA1NyIsImFyZzFfMDU0IiwiYXJnMF8wNTMiLCJyZXMxXzA1NiIsInNleHBfb2Zfc3ludGF4X3Rlc3QiLCJhcmcxXzA2MCIsImFyZzBfMDU5IiwicmVzMF8wNjEiLCJyZXMxXzA2MiIsInN5bnRheF90ZXN0X29mX3lvanNvbiIsInYxIiwidjEkMCIsInlvanNvbl9vZl9zeW50YXhfdGVzdCIsInBwX3N5bnRheF90ZXN0cyIsInNob3dfc3ludGF4X3Rlc3RzIiwic3ludGF4X3Rlc3RzX29mX3NleHAiLCJ4XzA2NCIsInNleHBfb2Zfc3ludGF4X3Rlc3RzIiwieF8wNjUiLCJzeW50YXhfdGVzdHNfb2ZfeW9qc29uIiwidCIsInlvanNvbl9vZl9zeW50YXhfdGVzdHMiLCJ2IiwicHBfeW91cl90ZXN0cyIsInNob3dfeW91cl90ZXN0cyIsInlvdXJfdGVzdHNfb2Zfc2V4cCIsIm9mX2NvZGVfMDY2Iiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJ0ZXN0c18wNzAiLCJyZXF1aXJlZF8wNzIiLCJwcm92aWRlZF8wNzQiLCJkdXBsaWNhdGVzXzA3NiIsImV4dHJhXzA3NyIsInNleHBfMDY4JDAiLCJmaWVsZF9zZXhwc18wODAiLCJmaWVsZF9uYW1lXzA3OCIsInRhaWxfMDg2IiwiZmllbGRfc2V4cF8wNzkkMyIsImZpZWxkX3NleHBfMDc5IiwieF8wODciLCJmaWVsZF9zZXhwXzA3OSQwIiwiZnZhbHVlXzA4MyIsImZpZWxkX3NleHBfMDc5JDEiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMiIsImZ2YWx1ZV8wODEiLCJwcm92aWRlZF8wNzUiLCJyZXF1aXJlZF8wNzMiLCJ0ZXN0c18wNzEiLCJzZXhwX29mX3lvdXJfdGVzdHMiLCJvZl9jb2RlXzA4OCIsInByb3ZpZGVkXzA5NCIsInJlcXVpcmVkXzA5MiIsInRlc3RzXzA5MCIsImFyZ18wOTUiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJ5b3VyX3Rlc3RzX29mX3lvanNvbiIsInJlcXVpcmVkX2ZpZWxkIiwicHJvdmlkZWRfZmllbGQiLCJmdmFsdWUkMSIsInByb3ZpZGVkX3ZhbHVlIiwicmVxdWlyZWRfdmFsdWUiLCJ5b2pzb25fb2ZfeW91cl90ZXN0cyIsInZfcHJvdmlkZWQiLCJ2X3JlcXVpcmVkIiwiYXJnJDEiLCJibmRzJDEiLCJwcF9wb2ludF9kaXN0cmlidXRpb24iLCJzaG93X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwic2V4cF8wOTciLCJmaWVsZF9zZXhwc18wOTgiLCJ0ZXN0X3ZhbGlkYXRpb25fMDk5IiwibXV0YXRpb25fdGVzdGluZ18xMDEiLCJpbXBsX2dyYWRpbmdfMTAzIiwiZHVwbGljYXRlc18xMDUiLCJleHRyYV8xMDYiLCJzZXhwXzA5NyQwIiwiZmllbGRfc2V4cHNfMTA5IiwiZmllbGRfbmFtZV8xMDciLCJ0YWlsXzExNSIsImZpZWxkX3NleHBfMTA4JDMiLCJmaWVsZF9zZXhwXzEwOCIsInhfMTE2IiwiZmllbGRfc2V4cF8xMDgkMCIsImZ2YWx1ZV8xMTIiLCJmaWVsZF9zZXhwXzEwOCQxIiwiZnZhbHVlXzExMSIsImZpZWxkX3NleHBfMTA4JDIiLCJmdmFsdWVfMTEwIiwiaW1wbF9ncmFkaW5nXzEwNCIsIm11dGF0aW9uX3Rlc3RpbmdfMTAyIiwidGVzdF92YWxpZGF0aW9uXzEwMCIsInNleHBfb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwiaW1wbF9ncmFkaW5nXzEyMiIsIm11dGF0aW9uX3Rlc3RpbmdfMTIwIiwidGVzdF92YWxpZGF0aW9uXzExOCIsImFyZ18xMjMiLCJibmRzXzExNyIsImFyZ18xMjEiLCJibmRzXzExNyQwIiwiYXJnXzExOSIsImJuZHNfMTE3JDEiLCJwb2ludF9kaXN0cmlidXRpb25fb2ZfeW9qc29uIiwidGVzdF92YWxpZGF0aW9uX2ZpZWxkIiwibXV0YXRpb25fdGVzdGluZ19maWVsZCIsImltcGxfZ3JhZGluZ19maWVsZCIsImltcGxfZ3JhZGluZ192YWx1ZSIsIm11dGF0aW9uX3Rlc3RpbmdfdmFsdWUiLCJ0ZXN0X3ZhbGlkYXRpb25fdmFsdWUiLCJ5b2pzb25fb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwidl9pbXBsX2dyYWRpbmciLCJ2X211dGF0aW9uX3Rlc3RpbmciLCJ2X3Rlc3RfdmFsaWRhdGlvbiIsInZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiIsImltcGxfZ3JhZGluZyIsIm11dGF0aW9uX3Rlc3RpbmciLCJ0ZXN0X3ZhbGlkYXRpb24iLCJwcF9wIiwic2hvd19wIiwicF9vZl9zZXhwIiwib2ZfY29kZV8xMjQiLCJzZXhwXzEyNiIsImZpZWxkX3NleHBzXzEyNyIsInRpdGxlXzEyOCIsInZlcnNpb25fMTMwIiwibW9kdWxlX25hbWVfMTMyIiwicHJvbXB0XzEzNCIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xMzYiLCJwcmVsdWRlXzEzOCIsImNvcnJlY3RfaW1wbF8xNDAiLCJ5b3VyX3Rlc3RzXzE0MiIsInlvdXJfaW1wbF8xNDQiLCJoaWRkZW5fYnVnc18xNDYiLCJoaWRkZW5fdGVzdHNfMTQ4Iiwic3ludGF4X3Rlc3RzXzE1MCIsImR1cGxpY2F0ZXNfMTUyIiwiZXh0cmFfMTUzIiwiaXRlcl8xNzAiLCJzZXhwXzEyNiQwIiwiZmllbGRfc2V4cHNfMTU2IiwiZmllbGRfbmFtZV8xNTQiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTU1JDEyIiwiZmllbGRfc2V4cF8xNTUiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTU1JDAiLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTUkMSIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1NSQyIiwiZnZhbHVlXzE2NyIsImZpZWxkX3NleHBfMTU1JDMiLCJmdmFsdWVfMTY4IiwiZmllbGRfc2V4cF8xNTUkNCIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NSQ1IiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU1JDYiLCJmdmFsdWVfMTYzIiwiZmllbGRfc2V4cF8xNTUkNyIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NSQ4IiwiZnZhbHVlXzE2NiIsImZpZWxkX3NleHBfMTU1JDkiLCJmdmFsdWVfMTU4IiwiZmllbGRfc2V4cF8xNTUkMTAiLCJmdmFsdWVfMTU5IiwiZmllbGRfc2V4cF8xNTUkMTEiLCJmdmFsdWVfMTYyIiwic3ludGF4X3Rlc3RzXzE1MSIsImhpZGRlbl90ZXN0c18xNDkiLCJoaWRkZW5fYnVnc18xNDciLCJ5b3VyX2ltcGxfMTQ1IiwieW91cl90ZXN0c18xNDMiLCJjb3JyZWN0X2ltcGxfMTQxIiwicHJlbHVkZV8xMzkiLCJwb2ludF9kaXN0cmlidXRpb25fMTM3IiwicHJvbXB0XzEzNSIsIm1vZHVsZV9uYW1lXzEzMyIsInZlcnNpb25fMTMxIiwidGl0bGVfMTI5Iiwic2V4cF9vZl9wIiwib2ZfY29kZV8xNzMiLCJzeW50YXhfdGVzdHNfMTk3IiwiaGlkZGVuX3Rlc3RzXzE5NSIsImhpZGRlbl9idWdzXzE5MyIsInlvdXJfaW1wbF8xOTEiLCJ5b3VyX3Rlc3RzXzE4OSIsImNvcnJlY3RfaW1wbF8xODciLCJwcmVsdWRlXzE4NSIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xODMiLCJwcm9tcHRfMTgxIiwibW9kdWxlX25hbWVfMTc5IiwidmVyc2lvbl8xNzciLCJ0aXRsZV8xNzUiLCJhcmdfMTk4IiwiYm5kc18xNzQiLCJhcmdfMTk2IiwiYm5kc18xNzQkMCIsImFyZ18xOTQiLCJibmRzXzE3NCQxIiwiYXJnXzE5MiIsImJuZHNfMTc0JDIiLCJhcmdfMTkwIiwiYm5kc18xNzQkMyIsImFyZ18xODgiLCJibmRzXzE3NCQ0IiwiYXJnXzE4NiIsImJuZHNfMTc0JDUiLCJhcmdfMTg0IiwiYm5kc18xNzQkNiIsImFyZ18xODIiLCJibmRzXzE3NCQ3IiwiYXJnXzE4MCIsImJuZHNfMTc0JDgiLCJhcmdfMTc4IiwiYm5kc18xNzQkOSIsImFyZ18xNzYiLCJibmRzXzE3NCQxMCIsInBfb2ZfeW9qc29uIiwidGl0bGVfZmllbGQiLCJ2ZXJzaW9uX2ZpZWxkIiwibW9kdWxlX25hbWVfZmllbGQiLCJwcm9tcHRfZmllbGQiLCJwb2ludF9kaXN0cmlidXRpb25fZmllbGQiLCJwcmVsdWRlX2ZpZWxkIiwiY29ycmVjdF9pbXBsX2ZpZWxkIiwieW91cl90ZXN0c19maWVsZCIsInlvdXJfaW1wbF9maWVsZCIsImhpZGRlbl9idWdzX2ZpZWxkIiwiaGlkZGVuX3Rlc3RzX2ZpZWxkIiwic3ludGF4X3Rlc3RzX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJmdmFsdWUkOSIsImZ2YWx1ZSQxMCIsInN5bnRheF90ZXN0c192YWx1ZSIsImhpZGRlbl90ZXN0c192YWx1ZSIsImhpZGRlbl9idWdzX3ZhbHVlIiwieW91cl9pbXBsX3ZhbHVlIiwieW91cl90ZXN0c192YWx1ZSIsImNvcnJlY3RfaW1wbF92YWx1ZSIsInByZWx1ZGVfdmFsdWUiLCJwb2ludF9kaXN0cmlidXRpb25fdmFsdWUiLCJwcm9tcHRfdmFsdWUiLCJtb2R1bGVfbmFtZV92YWx1ZSIsInZlcnNpb25fdmFsdWUiLCJ0aXRsZV92YWx1ZSIsInlvanNvbl9vZl9wIiwidl9zeW50YXhfdGVzdHMiLCJ2X2hpZGRlbl90ZXN0cyIsInZfaGlkZGVuX2J1Z3MiLCJ2X3lvdXJfaW1wbCIsInZfeW91cl90ZXN0cyIsInZfY29ycmVjdF9pbXBsIiwidl9wcmVsdWRlIiwidl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X3Byb21wdCIsInZfbW9kdWxlX25hbWUiLCJ2X3ZlcnNpb24iLCJ2X3RpdGxlIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiYXJnJDgiLCJibmRzJDgiLCJhcmckOSIsImJuZHMkOSIsImFyZyQxMCIsImJuZHMkMTAiLCJwcF9rZXkiLCJzaG93X2tleSIsImtleV9vZl9zZXhwIiwic2V4cF8yMDQiLCJhcmcxXzIwMSIsImFyZzBfMjAwIiwicmVzMF8yMDIiLCJyZXMxXzIwMyIsInNleHBfb2Zfa2V5IiwiYXJnMV8yMDciLCJhcmcwXzIwNiIsInJlczBfMjA4IiwicmVzMV8yMDkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBwX3BvcyIsInNob3dfcG9zIiwicG9zX29mX3NleHAiLCJzZXhwXzIxNCIsInRhZ18yMTUiLCJzZXhwX2FyZ3NfMjE2IiwiYXJnMF8yMTciLCJyZXMwXzIxOCIsInNleHBfb2ZfcG9zIiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsInBvc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9zIiwicHBfc3BlYyIsInNob3dfc3BlYyIsInNwZWNfb2Zfc2V4cCIsInhfMjIyIiwic2V4cF9vZl9zcGVjIiwieF8yMjMiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwicHBfdHJhbnNpdGlvbmFyeV9zcGVjIiwic2hvd190cmFuc2l0aW9uYXJ5X3NwZWMiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2Zfc2V4cCIsInhfMjI1Iiwic2V4cF9vZl90cmFuc2l0aW9uYXJ5X3NwZWMiLCJ4XzIyNiIsInRyYW5zaXRpb25hcnlfc3BlY19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwibWFwIiwiZiIsIndyb25nX2ltcGwiLCJwcF9lZHMiLCJzaG93X2VkcyIsImVkc19vZl9zZXhwIiwieF8yMjgiLCJzZXhwX29mX2VkcyIsInhfMjI5IiwiZWRzX29mX3lvanNvbiIsInlvanNvbl9vZl9lZHMiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF8yMzEiLCJmaWVsZF9zZXhwc18yMzIiLCJwb3NfMjMzIiwiZWRzXzIzNSIsImR1cGxpY2F0ZXNfMjM3IiwiZXh0cmFfMjM4Iiwic2V4cF8yMzEkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNDYiLCJmaWVsZF9zZXhwXzI0MCQyIiwiZmllbGRfc2V4cF8yNDAiLCJ4XzI0NyIsImZpZWxkX3NleHBfMjQwJDAiLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkMSIsImZ2YWx1ZV8yNDIiLCJlZHNfMjM2IiwicG9zXzIzNCIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMjUxIiwicG9zXzI0OSIsImFyZ18yNTIiLCJibmRzXzI0OCIsImFyZ18yNTAiLCJibmRzXzI0OCQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImVkcyIsInBwX3BlcnNpc3RlbnRfc3RhdGUiLCJzaG93X3BlcnNpc3RlbnRfc3RhdGUiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3NleHAiLCJzZXhwXzI2NCIsImFyZzFfMjYxIiwiYXJnMF8yNjAiLCJyZXMwXzI2MiIsInNleHBfMjU4IiwiYXJnMV8yNTUiLCJhcmcwXzI1NCIsInJlczBfMjU2IiwicmVzMV8yNTciLCJyZXMxXzI2MyIsInNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImFyZzFfMjcwIiwiYXJnMF8yNjkiLCJyZXMwXzI3MSIsImFyZzFfMjY2IiwiYXJnMF8yNjUiLCJyZXMwXzI2NyIsInJlczFfMjY4IiwicmVzMV8yNzIiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X3N0YXRlIiwiZWRpdG9yX29mX3N0YXRlIiwicG9zIiwiaSIsInB1dF9lZGl0b3IiLCJzdGF0ZSIsImVkaXRvciIsIm4iLCJlZGl0b3JzIiwiZWRpdG9yX3Bvc2l0aW9ucyIsInBvc2l0aW9uZWRfZWRpdG9ycyIsImlkeF9vZl9wb3MiLCJwb3Nfb2ZfaWR4IiwiaWR4Iiwic3dpdGNoX2VkaXRvciIsImluc3RydWN0b3JfbW9kZSIsImV4ZXJjaXNlIiwiemlwcGVyX29mX2NvZGUiLCJjb2RlIiwiemlwcGVyIiwidHJhbnNpdGlvbiIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInRlc3RzIiwieW91cl90ZXN0cyQwIiwieW91cl9pbXBsJDAiLCJoaW50IiwiaW1wbCIsImltcGwkMCIsImhpZGRlbl9idWdzJDAiLCJoaW50cyIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiIsImVkc19vZl9zcGVjIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwid3JhcCIsInRlcm1fb2YiLCJzdGl0Y2gzIiwiZWQxIiwiZWQyIiwiZWQzIiwic3RpdGNoX3Rlcm0iLCJpbnN0cnVjdG9yIiwieW91cl9pbXBsX3Rlcm0iLCJwcmVsdWRlX3Rlcm0iLCJ1c2VyX2ltcGxfdGVybSIsInRlc3RfdmFsaWRhdGlvbl90ZXJtIiwidXNlcl90ZXN0c190ZXJtIiwiaGlkZGVuX3Rlc3RzX3Rlcm0iLCJzdGl0Y2hfdGVybSQwIiwic3RpdGNoX3N0YXRpYyIsInNldHRpbmdzIiwibWsiLCJ0ZXJtX3JhbmdlcyIsImluZm9fbWFwIiwic3RpdGNoX3N0YXRpYyQwIiwic3RhdGljc19vZl9zdGljaGVkIiwicyIsInN0YXRpY3Nfb2YiLCJoaWRkZW5fYnVnc19rZXkiLCJrZXlfZm9yX3N0YXRpY3MiLCJzcGxpY2VkX2VsYWJzIiwidXNlcl90ZXN0cyIsInVzZXJfaW1wbCIsImVsYWIiLCJoaWRkZW5fYnVnIiwibWtfc3RhdGljcyIsInN0aXRjaGVkIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGl0Y2hfZHluYW1pYyIsInJlc3VsdF9vZiIsInJlc3VsdHMkMCIsInRlc3RfdmFsaWRhdGlvbiQwIiwidXNlcl9pbXBsJDAiLCJ1c2VyX3Rlc3RzJDAiLCJpbnN0cnVjdG9yJDAiLCJzdGF0aWNzX2l0ZW0iLCJzdGl0Y2hfZHluYW1pYyQwIiwiZWRpdG9yX3BwIiwic2VyaWFsaXphdGlvbiIsImV4cG9ydF9tb2R1bGUiLCJyZWNvcmQiLCJkYXRhIiwidHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAiLCJleHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUiLCJleHBvcnRfZ3JhZGluZ19tb2R1bGUiLCJoZWFkZXIiLCJibGFua19zcGVjIiwicmVxdWlyZWRfdGVzdHMiLCJwcm92aWRlZF90ZXN0cyIsIm51bV93cm9uZ19pbXBscyIsInBwX2V4ZXJjaXNlX2V4cG9ydCIsInNob3dfZXhlcmNpc2VfZXhwb3J0IiwiZXhlcmNpc2VfZXhwb3J0X29mX3NleHAiLCJzZXhwXzI3NCIsImZpZWxkX3NleHBzXzI3NSIsImN1cl9leGVyY2lzZV8yNzYiLCJleGVyY2lzZV9kYXRhXzI3OCIsImR1cGxpY2F0ZXNfMjgwIiwiZXh0cmFfMjgxIiwic2V4cF8yNzQkMCIsImZpZWxkX3NleHBzXzI4NCIsImZpZWxkX25hbWVfMjgyIiwidGFpbF8yOTQiLCJmaWVsZF9zZXhwXzI4MyQyIiwiZmllbGRfc2V4cF8yODMiLCJ4XzI5NSIsImZpZWxkX3NleHBfMjgzJDAiLCJzZXhwXzI4OSIsImFyZzFfMjg2IiwiYXJnMF8yODUiLCJyZXMwXzI4NyIsInJlczFfMjg4IiwiZnZhbHVlXzI5MSIsImZpZWxkX3NleHBfMjgzJDEiLCJmdmFsdWVfMjkyIiwiZXhlcmNpc2VfZGF0YV8yNzkiLCJjdXJfZXhlcmNpc2VfMjc3Iiwic2V4cF9vZl9leGVyY2lzZV9leHBvcnQiLCJleGVyY2lzZV9kYXRhXzI5OSIsImN1cl9leGVyY2lzZV8yOTciLCJibmRzXzI5NiIsImFyZzFfMzAyIiwiYXJnMF8zMDEiLCJyZXMwXzMwMyIsInJlczFfMzA0IiwiYXJnXzMwMCIsImJuZHNfMjk2JDAiLCJhcmdfMjk4IiwiYm5kc18yOTYkMSIsImV4ZXJjaXNlX2V4cG9ydF9vZl95b2pzb24iLCJjdXJfZXhlcmNpc2VfZmllbGQiLCJleGVyY2lzZV9kYXRhX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV92YWx1ZSIsImN1cl9leGVyY2lzZV92YWx1ZSIsInlvanNvbl9vZl9leGVyY2lzZV9leHBvcnQiLCJ2X2V4ZXJjaXNlX2RhdGEiLCJ2X2N1cl9leGVyY2lzZSIsInNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlIiwiZGVzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0IiwiZXJyb3Jfc291cmNlXzAwOSIsInBwX3BlcmNlbnRhZ2UiLCJzaG93X3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicHBfcG9pbnRzIiwic2hvd19wb2ludHMiLCJwb2ludHNfb2Zfc2V4cCIsInNleHBfb2ZfcG9pbnRzIiwicG9pbnRzX29mX3lvanNvbiIsInlvanNvbl9vZl9wb2ludHMiLCJwcF9zY29yZSIsInNob3dfc2NvcmUiLCJzY29yZV9vZl9zZXhwIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsInNleHBfb2Zfc2NvcmUiLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInNjb3JlX29mX3lvanNvbiIsInlvanNvbl9vZl9zY29yZSIsInNjb3JlX29mX3BlcmNlbnQiLCJwZXJjZW50IiwibWF4X3BvaW50cyIsInRlc3RfcmVzdWx0cyIsInBlcmNlbnRhZ2UiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJyZXF1aXJlZCIsInByb3ZpZGVkIiwibnVtX3Bhc3NpbmciLCJ0ZXN0X3N1bW1hcnlfc3RyIiwiaGlkZGVuX2J1Z19zdGF0dXMiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSIsImhpZGRlbl9idWdfZGF0YSIsImhpZGRlbl9idWdfZGF0YSQwIiwidGVzdF92YWxpZGF0aW9uX2RhdGEkMCIsInZhbGlkYXRpb25fdGVzdF9tYXAiLCJoaWRkZW5fYnVnX3Rlc3RfbWFwIiwiaW5zdGFuY2VfcmVwb3J0cyIsImlkIiwic3RhdHVzIiwidmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMiLCJyZXBvcnRzIiwic3RhdHVzJDAiLCJmb3VuZCIsIm1rJDAiLCJoaWRkZW5fYnVnc19zdGF0ZSIsInBlcmNlbnRhZ2UkMCIsIm51bV9wYXNzZWQiLCJzdW1tYXJ5X3N0ciIsInRvdGFsIiwibWskMSIsImgiLCJzeW50YXhfcmVzdWx0cyIsInIiLCJtayQyIiwidGVzdF9yZXN1bHRzJDAiLCJzdGF0dXNlcyIsImhpbnRlZF9yZXN1bHRzIiwicGVyY2VudGFnZSQxIiwic3ludGF4X3JlcG9ydCIsInRlc3Rfc3VtbWFyeV9zdHIkMCIsIm1rJDMiLCJzdGl0Y2hlZF9keW5hbWljcyIsIm92ZXJhbGxfc2NvcmUiLCJpbXBsX2dyYWRpbmdfcmVwb3J0IiwibXV0YXRpb25fdGVzdGluZ19yZXBvcnQiLCJ0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0IiwidHZfbWF4IiwidHZfcG9pbnRzIiwibXRfbWF4IiwibXRfcG9pbnRzIiwiaWdfbWF4IiwiaWdfcG9pbnRzIiwidG90YWxfcG9pbnRzIiwib3V0cHV0X2hlYWRlciIsIkRFQlVHIiwiT01EX0RFQlVHIiwiZGVidWciLCJ3YXJuIiwib3B0IiwibXNnIiwic3RoIiwid2UiLCJ0cmFja2ZpeCIsInJhaXNlIiwiZSIsIm9mX2xpc3QiLCJsIiwiciIsImZzcGxpdF9yZXYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwiZiIsInJldiIsImlkX29mX3N0cmluZyIsImlkcyIsInMiLCJuIiwib3V0Iiwic3RhcnRlZCIsImkiLCJjIiwiaSQyIiwiaSQwIiwiaSQxIiwicyQwIiwiaSQ0IiwibGFzdF90cmFpbGluZyIsImkkMyIsImh0bWxlbnRpdGllcyIsIm1kIiwiYiIsImokMSIsImoiLCJqJDAiLCJqJDQiLCJqJDIiLCJqJDMiLCJtaW5pbWFsaXplX2JsYW5rcyIsImYkMCIsImVhdCIsImV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIiwiaHRtbCIsImh0bWwkMCIsImN1dF9vbl9jaGFyX2Zyb20iLCJyZW1vdmVfcHJlZml4X3NwYWNlcyIsImh0bWwkMiIsInJlcyIsImFmdGVyX2VxIiwibmFtZSIsIm5hbWUkMCIsImFmdGVyX2VxJDAiLCJyZXN0IiwidmFsdWUiLCJuZXdfcyIsImEiLCJyZXMkMCIsImh0bWwkMSIsImV4dHJhY3RfaW5uZXJfaHRtbCIsInAiLCJodG1sX3ZvaWRfZWxlbWVudHMiLCJzeW1ib2wiLCJsMSIsImwyIiwic2VsZl8xIiwibG4iLCJ0aXRsZSIsInVybCIsImxvb3NlX2NvbXBhcmUiLCJ0MSIsInQyIiwidDEkMCIsInQyJDAiLCJlMSIsInRsMiQwIiwiZTIkMCIsInRsMSQwIiwiZTEkMCIsInRsMiIsImUyIiwidGwxIiwidGwyJDEiLCJlMiQxIiwidGwxJDEiLCJlMSQxIiwidGwxJDIiLCJjMSIsInRsMiQyIiwiYzIiLCJpJDUiLCJ0bDEkMyIsInRpdGxlMSIsInQxJDEiLCJocmVmMSIsInRsMiQzIiwidGl0bGUyIiwidDIkMSIsImhyZWYyIiwiaSQ2IiwiaSQ3IiwiaSQ4IiwidGwyJDQiLCJmYWxsYmFjazIiLCJ4MiIsIm5hbWUyIiwicmVmX2NvbnRhaW5lcjIiLCJ0bDEkNCIsImZhbGxiYWNrMSIsIngxIiwibmFtZTEiLCJyZWZfY29udGFpbmVyMSIsImUxJDIiLCJ0bDIkNSIsImUyJDIiLCJ0bDEkNSIsImkkMTEiLCJpJDEyIiwiaSQ5IiwiY2ZmIiwiaSQxMCIsImwxJDAiLCJsMiQwIiwidGwyJDYiLCJlMiQzIiwidGwxJDYiLCJlMSQzIiwiaSQxMyIsInNlbGZfMiIsImVtcHR5X2V4dGVuc2lvbiIsIm5vcm1hbGlzZV9tZCIsImxvb3AiLCJ2IiwidGwkMiIsInYkMCIsInRsJDMiLCJ2JDEiLCJ0bCQ0IiwidiQyIiwidGwkNSIsInYkMyIsInRsJDYiLCJ2JDQiLCJ0bCQ3IiwidiQ1IiwidGwkMTAiLCJ0bCQ5IiwidGwkOCIsInRsJDExIiwidGwkMTIiLCJ2JDYiLCJ0bCQxMyIsInYkNyIsInRsJDE0IiwidiQ4IiwidGwkMTUiLCJ2JDkiLCJ0bCQxNiIsInYkMTAiLCJ0bCQxNyIsInYkMTEiLCJ0bCQxOCIsInYkMTIiLCJocmVmIiwidGwkMTkiLCJ2JDEzIiwic2VsZl8zIiwidmlzaXQiLCJsJDEiLCJsJDIiLCJsJDMiLCJsJDQiLCJsJDUiLCJsJDYiLCJsJDciLCJsJDgiLCJsJDkiLCJsJDEwIiwibCQxMSIsImwkMTIiLCJsJDEzIiwibCQxNCIsImwkMTUiLCJsJDE2IiwibCQxNyIsImwkMTgiLCJsJDE5IiwidGwkMjAiLCJsJDIwIiwidGwkMjEiLCJsJDIxIiwidGwkMjIiLCJsJDIyIiwidGwkMjMiLCJsJDIzIiwidGwkMjQiLCJsJDI0IiwidGwkMjUiLCJsJDI1IiwidGwkMjYiLCJsJDI2IiwidGwkMjciLCJsJDI3IiwidGwkMjgiLCJsJDI4IiwiZGVmYXVsdF9sYW5ndWFnZSIsInRleHRfb2ZfbWQiLCJtZCQwIiwidCIsIm1kJDEiLCJtZCQyIiwiYyQwIiwiYm9keSIsImJvZHkkMCIsInQkMCIsInQkMSIsInEiLCJhbHQiLCJpdGVtIiwiZGVmYXVsdF9jb2RlX3N0eWxpc3QiLCJsYW5nIiwiY29kZSIsImZpbHRlcl90ZXh0X29tZF9yZXYiLCJyZW1vdmVfbGlua3MiLCJodG1sX2FuZF9oZWFkZXJzX29mX21kIiwic3RyaW5nX29mX2F0dHJzIiwiaHRtbF9vZl9tZCIsImhlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwic3RoJDAiLCJvdmVycmlkZSIsInN0aCQxIiwicGluZGVudCIsInN0aCQyIiwibmwyYnIiLCJzdGgkMyIsImNvZGVfc3R5bGUiLCJpZCIsImlkeCIsImhlYWRlcnMiLCJpbmRlbnQiLCJzJDEiLCJlJDAiLCJlJDEiLCJzJDIiLCJpaCIsIm1kJDMiLCJtZCQ0IiwiZSQyIiwibWQkNSIsImUkMyIsInMkMyIsImloJDAiLCJpZCQwIiwibWQkNiIsIm1kJDciLCJlJDQiLCJtZCQ4IiwiZSQ1IiwicyQ0IiwiaWgkMSIsImlkJDEiLCJtZCQ5IiwibWQkMTAiLCJlJDYiLCJtZCQxMSIsImUkNyIsInMkNSIsImloJDIiLCJpZCQyIiwibWQkMTIiLCJtZCQxMyIsImUkOCIsIm1kJDE0IiwiZSQ5IiwicyQ2IiwiaWgkMyIsImlkJDMiLCJtZCQxNSIsIm1kJDE2IiwiZSQxMCIsIm1kJDE3IiwiZSQxMSIsInMkNyIsImloJDQiLCJpZCQ0IiwibWQkMTgiLCJzJDgiLCJzJDkiLCJzJDEwIiwibWQkMTkiLCJzJDExIiwibWQkMjAiLCJzJDEyIiwicyQxNCIsIm5ld19jIiwibGFuZyQwIiwicyQxNSIsIm5ld19jJDAiLCJzJDE2IiwicyQxNyIsInMkMTgiLCJmYWxsYmFjayIsInRleHQiLCJyYyIsInMkMTkiLCJ0aXRsZSQwIiwiaHJlZiQwIiwiZmFsbGJhY2skMCIsInJjJDAiLCJzJDIwIiwidGl0bGUkMSIsInNyYyIsInRhZ25hbWUiLCJhdHRycyQxIiwiYXR0cnMkMiIsInMkMjIiLCJhdHRycyIsImF0dHJzJDAiLCJzJDIxIiwiYXR0cnMkMyIsInRhZ25hbWUkMCIsImF0dHJzJDQiLCJzJDIzIiwicyQyNCIsInMkMjUiLCJzJDI2IiwicyQyNyIsInMkMjgiLCJzJDI5IiwicyQzMCIsInRpdGxlJDIiLCJzcmMkMCIsImFsdCQwIiwicyQzMSIsIngiLCJzJDMyIiwicyQzMyIsInMkMTMiLCJsaSIsImNzIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJsb29wJDAiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsInN0cmluZ19vZl90YWdzdGF0dXMiLCJ0YWdzdGF0dXMiLCJsb29wJDIiLCJ0b2tlbnMiLCJib2R5JDEiLCJ0YWdzdGF0dXMkMCIsInRva2VucyQwIiwidCQ1IiwidG9rZW5zJDUiLCJib2R5JDUiLCJ0b2tlbnMkMTkiLCJib2R5JDciLCJ0YWdzdGF0dXMkMSIsInRva2VucyQyMCIsImJvZHkkNiIsInRva2VucyQyMSIsInQkMiIsImJvZHkkOCIsInRva2VucyQyMiIsInRva2VucyQyMyIsInQkNCIsInRva2VucyQyNCIsImJvZHkkOSIsInRva2VucyQyNSIsInRhZ3N0YXR1cyQyIiwidGFnbmFtZSQxIiwiYm9keSQxMCIsImJvZHkkMTEiLCJ0b2tlbnMkMjYiLCJib2R5JDEyIiwidG9rZW5zJDI3IiwidG9rZW5zJDI4IiwidG9rZW5zJDYiLCJ0b2tlbnMkNyIsInRva2VucyQ4IiwidG9rZW5zJDEwIiwidG9rZW5zJDkiLCJ0b2tlbnMkMTEiLCJhdHRyaWJ1dGVuYW1lIiwidG9rZW5zJDEyIiwiYXR0cmlidXRlbmFtZSQwIiwidG9rZW5zJDEzIiwidG9rZW5zJDE0IiwiYXRfdmFsIiwidG9rZW5zJDE1IiwidG9rZW5zJDE2IiwiYXRfdmFsJDAiLCJ0b2tlbnMkMTciLCJ0b2tlbnMkMTgiLCJhdHRycyQ1IiwidG9rZW5zJDMiLCJ0b2tlbnMkNCIsImJvZHkkNCIsImJvZHkkMyIsInRva2VucyQxIiwidG9rZW5zJDIiLCJ0YWciLCJ0YWckMCIsImJvZHkkMiIsImxleGVtZXMkMTUiLCJyJDE3IiwicHJldmlvdXMkNjQiLCJyJDE4IiwibGV4ZW1lcyQxNiIsInByZXZpb3VzJDY1IiwiciQxOSIsInByZXZpb3VzJDY2IiwiciQyMCIsImxleGVtZXMkMTciLCJ3JDMiLCJodG1sX3N0dWZmJDAiLCJ0YWduYW1ldG9wJDAiLCJsZXhlbWVzJDE5IiwicHJldmlvdXMkNjkiLCJyJDIzIiwicHJldmlvdXMkNzAiLCJyJDI0IiwiZl9hIiwibWRfb2ZfaW50ZXJtX2xpc3QkMSIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzJDAiLCJhZGRfdG9rZW5fdG9fYm9keSIsImxvb3AkMSIsInQkNiIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImhfbGV2ZWwiLCJzdWJzZWN0aW9ucyQwIiwic3Vic2VjdGlvbnMkMSIsImZpbmRfc3RhcnQiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCIsImtleV9vZl9zZXhwIiwic2V4cF9vZl9rZXkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsInZhbHVlX29mX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwidmFsdWVfb2ZfeW9qc29uIiwieW9qc29uX29mX3ZhbHVlIiwic2VyaWFsaXplIiwicHJvZ3JhbSIsImRlc2VyaWFsaXplIiwic2V4cCIsInZhbHVlX29mX3NleHAkMCIsInNleHBfb2ZfdmFsdWUkMCIsInZhbHVlX29mX3lvanNvbiQwIiwieW9qc29uX29mX3ZhbHVlJDAiLCJzZXJpYWxpemUkMCIsInIiLCJkZXNlcmlhbGl6ZSQwIiwid29yayIsInJlcyIsIm9uX3JlcXVlc3QiLCJyZXEiLCJzdGFydCIsIm5hbWUiLCJ0aW1lb3V0RHVyYXRpb24iLCJpbml0V29ya2VyIiwid29ya2VyUmVmIiwidGltZW91dElkIiwicmVzdGFydF93b3JrZXIiLCJyZXF1ZXN0IiwicmVxIiwiaGFuZGxlciIsInRpbWVvdXQiLCJzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyIiwiZXZ0IiwiaWQiLCJvblRpbWVvdXQiLCJidXR0b24iLCJvcHQiLCJpY29uIiwiYWN0aW9uIiwic3RoIiwidG9vbHRpcCIsImJ1dHRvbl9uYW1lZCIsImJ1dHRvbl9kIiwibGluayIsInVybCIsInRvZ2dsZSIsImxhYmVsIiwiYWN0aXZlIiwidG9nZ2xlX25hbWVkIiwiZmlsZV9zZWxlY3RfYnV0dG9uIiwib25faW5wdXQiLCJmaWxlX3NlbGVjdF9idXR0b25fbmFtZWQiLCJtayIsImMiLCJtayQwIiwiaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uX2ltIiwiaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uIiwieCIsIm1rJDEiLCJnZXQiLCJ0IiwiayIsIm1hcCIsInNldCIsInYiLCJta19zZWNvbmRhcnkiLCJjb250ZW50IiwibWtfdGlsZSIsImZvcm0iLCJjaGlsZHJlbiIsImkiLCJta19hbmNlc3RvciIsImwiLCJta19tb25vdGlsZSIsImludCQwIiwibiIsImV4cCIsInBhdCIsIm1rX2Z1biIsIm1rX2Z1bl9hbmNlc3RvciIsIm1rX3BhcmVuc19hbmNlc3RvciIsIm1rX2xldF9hbmNlc3RvciIsInBsdXMiLCJsX3NpYmxpbmciLCJyX3NpYmxpbmciLCJhbmNlc3RvcnMiLCJiYWNrcGFjayIsInppcHBlciIsImNvbnNfZXhwIiwibGlzdF9jb25jYXRfZXhwIiwiY29uc19wYXQiLCJzZXEiLCJleHAkMCIsInBhdCQwIiwidHlwIiwidHBhdCIsInR5cF9wYXRfdmFyIiwibWtfcGFyZW5zX2V4cCIsIm1rX3BhcmVuc19wYXQiLCJta19wYXJlbnNfdHlwIiwibWtfbGlzdF9leHAiLCJta19saXN0X3BhdCIsIm1rX2xpc3RfdHlwIiwiYXJyb3ciLCJ1bmFyeV9taW51cyIsInVuYXJ5X25vdCIsInBsdXMkMCIsIm1pbnVzIiwidGltZXMiLCJwb3dlciIsImRpdmlkZSIsImVxdWFscyIsIm5vdF9lcXVhbHMiLCJsdCIsImx0ZSIsImd0IiwiZ3RlIiwiZnBsdXMiLCJmbWludXMiLCJmdGltZXMiLCJmcG93ZXIiLCJmZGl2aWRlIiwiZmVxdWFscyIsImZub3RfZXF1YWxzIiwiZmx0IiwiZmx0ZSIsImZndCIsImZndGUiLCJzZXF1YWxzIiwic2NvbmNhdCIsImxvZ2ljYWxfYW5kIiwibG9naWNhbF9vciIsImNvbW1hX2V4cCIsImNvbW1hX3BhdCIsImNvbW1hX3R5cCIsInBpcGVsaW5lIiwibmlsIiwidHlwZWFubiIsIm1rX2Z1biQwIiwibWtfYXBfZXhwIiwibWtfYXBfcGF0IiwibWtfbGV0IiwibWtfdHlhbGlhcyIsIm1rX2lmIiwibWtfdGVzdCIsIm1rX2Nhc2UiLCJta19ydWxlIiwibWtfaGlkZSIsIm1rX2V2YWwiLCJta19wYXVzZSIsIm1rX2RlYnVnIiwibWtfdW5xdW90ZSIsImxpbmVicmVhayIsInNwYWNlIiwibWtfZXhhbXBsZSIsInN0ciIsInoiLCJhYmJyZXZpYXRlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMDciLCJ0cF9sb2MkMCIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMTUiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wMTkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNzMiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wODYiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8wOTAiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xNDUiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkOCIsImVycm9yX3NvdXJjZV8yMTMiLCJ0cF9sb2MkOSIsImVycm9yX3NvdXJjZV8yNDciLCJ0cF9sb2MkMTAiLCJwcF9saXN0X2V4YW1wbGVzIiwiZm10Iiwic2hvd19saXN0X2V4YW1wbGVzIiwibGlzdF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX2xpc3RfZXhhbXBsZXMiLCJsaXN0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbiIsInlvanNvbl9vZl9saXN0X2V4YW1wbGVzIiwicHBfZnVuX2V4YW1wbGVzIiwic2hvd19mdW5fZXhhbXBsZXMiLCJmdW5fZXhhbXBsZXNfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9mdW5fZXhhbXBsZXMiLCJmdW5fZXhhbXBsZXNfb2ZfeW9qc29uIiwieW9qc29uX29mX2Z1bl9leGFtcGxlcyIsInBwX2xldF9leGFtcGxlcyIsInNob3dfbGV0X2V4YW1wbGVzIiwibGV0X2V4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAxMiIsInNleHBfb2ZfbGV0X2V4YW1wbGVzIiwibGV0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9sZXRfZXhhbXBsZXMiLCJwcF9udW1lcmljX2Jpbl9vcF9leGFtcGxlcyIsInNob3dfbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMiLCJudW1lcmljX2Jpbl9vcF9leGFtcGxlc19vZl9zZXgiLCJzZXhwXzAxNiIsInNleHBfb2ZfbnVtZXJpY19iaW5fb3BfZXhhbXBsZSIsIm51bWVyaWNfYmluX29wX2V4YW1wbGVzX29mX3lvaiIsInlvanNvbl9vZl9udW1lcmljX2Jpbl9vcF9leGFtcCIsInBwX2V4YW1wbGVfaWQiLCJzaG93X2V4YW1wbGVfaWQiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsImEwJDMiLCJleGFtcGxlX2lkX29mX3NleHAiLCJzZXhwXzAyMSIsInRhZ18wMjIiLCJzZXhwX2FyZ3NfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInNleHBfYXJnc18wMzMiLCJhcmcwXzAzNCIsInJlczBfMDM1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJzZXhwX2FyZ3NfMDQzIiwiYXJnMF8wNDQiLCJyZXMwXzA0NSIsInNleHBfYXJnc18wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwic2V4cF9vZl9leGFtcGxlX2lkIiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzBfMDU0IiwicmVzMF8wNTUiLCJleGFtcGxlX2lkX29mX3lvanNvbiIsInRhZyIsInlvanNvbl9hcmdzJDEiLCJ2MCQzIiwidjAkNCIsInlvanNvbl9hcmdzJDAiLCJ2MCQxIiwidjAkMiIsInlvanNvbl9hcmdzIiwidjAiLCJ2MCQwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX2FyZ3MkMiIsInYwJDUiLCJ2MCQ2IiwieW9qc29uX29mX2V4YW1wbGVfaWQiLCJwcF9leGFtcGxlIiwic2hvd19leGFtcGxlIiwiZXhhbXBsZV9vZl9zZXhwIiwic2V4cF8wNTciLCJmaWVsZF9zZXhwc18wNTgiLCJzdWJfaWRfMDU5IiwidGVybV8wNjEiLCJtZXNzYWdlXzA2MyIsImR1cGxpY2F0ZXNfMDY1IiwiZXh0cmFfMDY2Iiwic2V4cF8wNTckMCIsImZpZWxkX3NleHBzXzA2OSIsImZpZWxkX25hbWVfMDY3IiwidGFpbF8wNzUiLCJmaWVsZF9zZXhwXzA2OCQzIiwiZmllbGRfc2V4cF8wNjgiLCJ4XzA3NiIsImZpZWxkX3NleHBfMDY4JDAiLCJmdmFsdWVfMDcxIiwiZmllbGRfc2V4cF8wNjgkMSIsImZ2YWx1ZV8wNzIiLCJmaWVsZF9zZXhwXzA2OCQyIiwiZnZhbHVlXzA3MCIsIm1lc3NhZ2VfMDY0IiwidGVybV8wNjIiLCJzdWJfaWRfMDYwIiwic2V4cF9vZl9leGFtcGxlIiwibWVzc2FnZV8wODIiLCJ0ZXJtXzA4MCIsInN1Yl9pZF8wNzgiLCJhcmdfMDgzIiwiYm5kc18wNzciLCJhcmdfMDgxIiwiYm5kc18wNzckMCIsImFyZ18wNzkiLCJibmRzXzA3NyQxIiwiZXhhbXBsZV9vZl95b2pzb24iLCJmaWVsZF95b2pzb25zIiwic3ViX2lkX2ZpZWxkIiwidGVybV9maWVsZCIsIm1lc3NhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwiZnZhbHVlJDEiLCJtZXNzYWdlX3ZhbHVlIiwidGVybV92YWx1ZSIsInN1Yl9pZF92YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlIiwidl9tZXNzYWdlIiwidl90ZXJtIiwidl9zdWJfaWQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsInBwX3BhdF9zdWJfZm9ybV9pZCIsInNob3dfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3NleHAiLCJzZXhwXzA4NyIsInNleHBfb2ZfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3lvanNvbiIsInlvanNvbl9vZl9wYXRfc3ViX2Zvcm1faWQiLCJwcF9mb3JtX2lkIiwic2hvd19mb3JtX2lkIiwiZm9ybV9pZF9vZl9zZXhwIiwic2V4cF8wOTIiLCJ0YWdfMDkzIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMF8wOTUiLCJyZXMwXzA5NiIsInNleHBfYXJnc18wOTkiLCJhcmcwXzEwMCIsInJlczBfMTAxIiwic2V4cF9hcmdzXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJzZXhwX29mX2Zvcm1faWQiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMTQiLCJyZXMwXzExNSIsImFyZzBfMTE2IiwicmVzMF8xMTciLCJhcmcwXzExOCIsInJlczBfMTE5IiwiZm9ybV9pZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZm9ybV9pZCIsInBwX2Zvcm0iLCJzaG93X2Zvcm0iLCJ4JDAiLCJhMSIsIngkMSIsInNlcCIsImZvcm1fb2Zfc2V4cCIsInNleHBfMTIxIiwiZmllbGRfc2V4cHNfMTIyIiwiaWRfMTIzIiwic3ludGFjdGljX2Zvcm1fMTI1IiwiZXhwYW5kYWJsZV9pZF8xMjciLCJleHBsYW5hdGlvbl8xMjkiLCJleGFtcGxlc18xMzEiLCJkdXBsaWNhdGVzXzEzMyIsImV4dHJhXzEzNCIsInNleHBfMTIxJDAiLCJmaWVsZF9zZXhwc18xMzciLCJmaWVsZF9uYW1lXzEzNSIsInRhaWxfMTUwIiwiZmllbGRfc2V4cF8xMzYkNSIsImZpZWxkX3NleHBfMTM2IiwieF8xNTEiLCJmaWVsZF9zZXhwXzEzNiQwIiwiZnZhbHVlXzE0NyIsImZpZWxkX3NleHBfMTM2JDEiLCJmdmFsdWVfMTQ4IiwiZmllbGRfc2V4cF8xMzYkMiIsImZ2YWx1ZV8xMzkiLCJmaWVsZF9zZXhwXzEzNiQzIiwic2V4cF8xNDQiLCJhcmcxXzE0MSIsImFyZzBfMTQwIiwicmVzMF8xNDIiLCJyZXMxXzE0MyIsImZ2YWx1ZV8xNDYiLCJmaWVsZF9zZXhwXzEzNiQ0IiwiZnZhbHVlXzEzOCIsImV4YW1wbGVzXzEzMiIsImV4cGxhbmF0aW9uXzEzMCIsImV4cGFuZGFibGVfaWRfMTI4Iiwic3ludGFjdGljX2Zvcm1fMTI2IiwiaWRfMTI0Iiwic2V4cF9vZl9mb3JtIiwiZXhhbXBsZXNfMTY1IiwiZXhwbGFuYXRpb25fMTYzIiwiZXhwYW5kYWJsZV9pZF8xNTciLCJzeW50YWN0aWNfZm9ybV8xNTUiLCJpZF8xNTMiLCJhcmdfMTY2IiwiYm5kc18xNTIiLCJhcmdfMTY0IiwiYm5kc18xNTIkMCIsImFyZzFfMTYwIiwiYXJnMF8xNTkiLCJyZXMwXzE2MSIsInJlczFfMTYyIiwiYXJnXzE1OCIsImJuZHNfMTUyJDEiLCJhcmdfMTU2IiwiYm5kc18xNTIkMiIsImFyZ18xNTQiLCJibmRzXzE1MiQzIiwiZm9ybV9vZl95b2pzb24iLCJpZF9maWVsZCIsInN5bnRhY3RpY19mb3JtX2ZpZWxkIiwiZXhwYW5kYWJsZV9pZF9maWVsZCIsImV4cGxhbmF0aW9uX2ZpZWxkIiwiZXhhbXBsZXNfZmllbGQiLCJ2MSIsInYxJDAiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZXhhbXBsZXNfdmFsdWUiLCJleHBsYW5hdGlvbl92YWx1ZSIsImV4cGFuZGFibGVfaWRfdmFsdWUiLCJzeW50YWN0aWNfZm9ybV92YWx1ZSIsImlkX3ZhbHVlIiwieW9qc29uX29mX2Zvcm0iLCJ2X2V4YW1wbGVzIiwidl9leHBsYW5hdGlvbiIsInZfZXhwYW5kYWJsZV9pZCIsInZfc3ludGFjdGljX2Zvcm0iLCJ2X2lkIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsInBwX2dyb3VwX2lkIiwic2hvd19ncm91cF9pZCIsImdyb3VwX2lkX29mX3NleHAiLCJzZXhwXzE3MSIsInRhZ18xNzIiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzMiLCJhcmcwXzE3NCIsInJlczBfMTc1Iiwic2V4cF9hcmdzXzE3OCIsImFyZzBfMTc5IiwicmVzMF8xODAiLCJzZXhwX2FyZ3NfMTg4IiwiYXJnMF8xODkiLCJyZXMwXzE5MCIsInNleHBfb2ZfZ3JvdXBfaWQiLCJhcmcwXzE5MSIsInJlczBfMTkyIiwiYXJnMF8xOTMiLCJyZXMwXzE5NCIsImFyZzBfMTk1IiwicmVzMF8xOTYiLCJhcmcwXzE5NyIsInJlczBfMTk4IiwiZ3JvdXBfaWRfb2ZfeW9qc29uIiwieW9qc29uX29mX2dyb3VwX2lkIiwicHBfZ3JvdXAiLCJzaG93X2dyb3VwIiwiZ3JvdXBfb2Zfc2V4cCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwiaWRfMjAyIiwiZm9ybXNfMjA0IiwiZHVwbGljYXRlc18yMDYiLCJleHRyYV8yMDciLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEwIiwiZmllbGRfbmFtZV8yMDgiLCJ0YWlsXzIxNSIsImZpZWxkX3NleHBfMjA5JDIiLCJmaWVsZF9zZXhwXzIwOSIsInhfMjE2IiwiZmllbGRfc2V4cF8yMDkkMCIsImZ2YWx1ZV8yMTIiLCJmaWVsZF9zZXhwXzIwOSQxIiwiZnZhbHVlXzIxMSIsImZvcm1zXzIwNSIsImlkXzIwMyIsInNleHBfb2ZfZ3JvdXAiLCJmb3Jtc18yMjAiLCJpZF8yMTgiLCJhcmdfMjIxIiwiYm5kc18yMTciLCJhcmdfMjE5IiwiYm5kc18yMTckMCIsImdyb3VwX29mX3lvanNvbiIsImZvcm1zX2ZpZWxkIiwiZm9ybXNfdmFsdWUiLCJ5b2pzb25fb2ZfZ3JvdXAiLCJ2X2Zvcm1zIiwicHAiLCJzaG93IiwidF9vZl9zZXhwIiwic2V4cF8yMjMiLCJmaWVsZF9zZXhwc18yMjQiLCJncm91cF9pZF8yMjUiLCJmb3JtX2lkXzIyNyIsImFic3RyYWN0XzIyOSIsImV4cGxhbmF0aW9uXzIzMSIsImV4YW1wbGVzXzIzMyIsImR1cGxpY2F0ZXNfMjM1IiwiZXh0cmFfMjM2Iiwic2V4cF8yMjMkMCIsImZpZWxkX3NleHBzXzIzOSIsImZpZWxkX25hbWVfMjM3IiwidGFpbF8yNTciLCJmaWVsZF9zZXhwXzIzOCQ1IiwiZmllbGRfc2V4cF8yMzgiLCJ4XzI1OCIsImZpZWxkX3NleHBfMjM4JDAiLCJmdmFsdWVfMjU1IiwiZmllbGRfc2V4cF8yMzgkMSIsImZ2YWx1ZV8yNTQiLCJmaWVsZF9zZXhwXzIzOCQyIiwiZnZhbHVlXzI0MSIsImZpZWxkX3NleHBfMjM4JDMiLCJmdmFsdWVfMjQwIiwiZmllbGRfc2V4cF8yMzgkNCIsImFyZzFfMjQ5IiwiYXJnMF8yNDgiLCJyZXMwXzI1MCIsInNleHBfMjQ2IiwiYXJnMV8yNDMiLCJhcmcwXzI0MiIsInJlczBfMjQ0IiwicmVzMV8yNDUiLCJyZXMxXzI1MSIsImZ2YWx1ZV8yNTMiLCJleGFtcGxlc18yMzQiLCJleHBsYW5hdGlvbl8yMzIiLCJhYnN0cmFjdF8yMzAiLCJmb3JtX2lkXzIyOCIsImdyb3VwX2lkXzIyNiIsInNleHBfb2ZfdCIsImV4YW1wbGVzXzI3NiIsImV4cGxhbmF0aW9uXzI3NCIsImFic3RyYWN0XzI2NCIsImZvcm1faWRfMjYyIiwiZ3JvdXBfaWRfMjYwIiwiYXJnXzI3NyIsImJuZHNfMjU5IiwiYXJnXzI3NSIsImJuZHNfMjU5JDAiLCJhcmcxXzI3MSIsImFyZzBfMjcwIiwicmVzMF8yNzIiLCJhcmcxXzI2NyIsImFyZzBfMjY2IiwicmVzMF8yNjgiLCJyZXMxXzI2OSIsInJlczFfMjczIiwiYXJnXzI2NSIsImJuZHNfMjU5JDEiLCJhcmdfMjYzIiwiYm5kc18yNTkkMiIsImFyZ18yNjEiLCJibmRzXzI1OSQzIiwidF9vZl95b2pzb24iLCJncm91cF9pZF9maWVsZCIsImZvcm1faWRfZmllbGQiLCJhYnN0cmFjdF9maWVsZCIsImFic3RyYWN0X3ZhbHVlIiwiZm9ybV9pZF92YWx1ZSIsImdyb3VwX2lkX3ZhbHVlIiwieW9qc29uX29mX3QiLCJ2X2Fic3RyYWN0Iiwidl9mb3JtX2lkIiwidl9ncm91cF9pZCIsInRvX2dyb3VwIiwiZXhhbXBsZXMiLCJleHBsYW5hdGlvbiIsImNvbG9yaW5ncyIsInN5bnRhY3RpY19mb3JtIiwiZm9ybV9pZCIsImdyb3VwX2lkIiwibWtfMSIsIm1rX2Zvcm0iLCJwIiwibWtfMiIsImlkXzIiLCJuMiIsImlkXzEiLCJuMSIsInAyIiwicDEiLCJta18zIiwiaWRfMyIsIm4zIiwicDMiLCJ2YXJfdHlwX3BhdCIsInZhcl90eXBfcGF0cyIsImVycm9yX3NvdXJjZV8wMjYiLCJlcnJvcl9zb3VyY2VfMDQyIiwiaW5pdCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZW5hYmxlXzAwNCIsImlzX2VkaXRpbmdfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJzZXhwXzAwMiQwIiwiZmllbGRfc2V4cHNfMDEyIiwiZmllbGRfbmFtZV8wMTAiLCJ0YWlsXzAxNyIsImZpZWxkX3NleHBfMDExJDIiLCJmaWVsZF9zZXhwXzAxMSIsInhfMDE4IiwiZmllbGRfc2V4cF8wMTEkMCIsImZ2YWx1ZV8wMTMiLCJmaWVsZF9zZXhwXzAxMSQxIiwiZnZhbHVlXzAxNCIsImlzX2VkaXRpbmdfMDA3IiwiZW5hYmxlXzAwNSIsImlzX2VkaXRpbmdfMDIyIiwiZW5hYmxlXzAyMCIsImFyZ18wMjMiLCJibmRzXzAxOSIsImFyZ18wMjEiLCJibmRzXzAxOSQwIiwiZW5hYmxlX2ZpZWxkIiwiaXNfZWRpdGluZ19maWVsZCIsImlzX2VkaXRpbmdfdmFsdWUiLCJlbmFibGVfdmFsdWUiLCJ2X2lzX2VkaXRpbmciLCJ2X2VuYWJsZSIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwXzAyNyIsInNleHBfb2ZfYWN0aW9uIiwiYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hY3Rpb24iLCJwcCQwIiwic2hvdyQwIiwidF9vZl9zZXhwJDAiLCJzZXhwXzAyOSIsImZpZWxkX3NleHBzXzAzMCIsImlucHV0XzAzMSIsInF1ZXJ5X3Jlc3VsdF8wMzMiLCJkdXBsaWNhdGVzXzAzNSIsImV4dHJhXzAzNiIsInNleHBfMDI5JDAiLCJmaWVsZF9zZXhwc18wMzkiLCJmaWVsZF9uYW1lXzAzNyIsInRhaWxfMDQ0IiwiZmllbGRfc2V4cF8wMzgkMiIsImZpZWxkX3NleHBfMDM4IiwieF8wNDUiLCJmaWVsZF9zZXhwXzAzOCQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM4JDEiLCJmdmFsdWVfMDQxIiwicXVlcnlfcmVzdWx0XzAzNCIsImlucHV0XzAzMiIsInNleHBfb2ZfdCQwIiwicXVlcnlfcmVzdWx0XzA0OSIsImlucHV0XzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwidF9vZl95b2pzb24kMCIsImlucHV0X2ZpZWxkIiwicXVlcnlfcmVzdWx0X2ZpZWxkIiwicXVlcnlfcmVzdWx0X3ZhbHVlIiwiaW5wdXRfdmFsdWUiLCJ5b2pzb25fb2ZfdCQwIiwidl9xdWVyeV9yZXN1bHQiLCJ2X2lucHV0IiwicmVtb3ZlX2xhc3RfY2hhciIsInBlcmZvcm1fYWN0aW9uIiwibW9kZWwiLCJzIiwidXBkYXRlIiwiY29kZSIsImVxdWl2IiwicHJvbXB0IiwiZGVmYXVsdCQwIiwib3V0cHV0X2hlYWRlciIsIm1vZHVsZV9uYW1lIiwiZXhlcmNpc2UiLCJmaWxlbmFtZSIsImV4ZXJjaXNlcyIsImVycm9yX3NvdXJjZV8wNDgiLCJlcnJvcl9zb3VyY2VfMDc1IiwiZXJyb3Jfc291cmNlXzEwMSIsImVycm9yX3NvdXJjZV8xMTQiLCJlcnJvcl9zb3VyY2VfMTQwIiwiZXJyb3Jfc291cmNlXzE1MyIsImVycm9yX3NvdXJjZV8xNjQiLCJpbml0JDAiLCJwcF9mZWVkYmFja19vcHRpb24iLCJzaG93X2ZlZWRiYWNrX29wdGlvbiIsImZlZWRiYWNrX29wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9mZWVkYmFja19vcHRpb24iLCJmZWVkYmFja19vcHRpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2ZlZWRiYWNrX29wdGlvbiIsInBwX2V4YW1wbGVfbW9kZWwiLCJzaG93X2V4YW1wbGVfbW9kZWwiLCJleGFtcGxlX21vZGVsX29mX3NleHAiLCJzZXhwXzAwNiIsImZpZWxkX3NleHBzXzAwNyIsInN1Yl9pZF8wMDgiLCJmZWVkYmFja18wMTAiLCJkdXBsaWNhdGVzXzAxMiIsImV4dHJhXzAxMyIsInNleHBfMDA2JDAiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIxIiwiZmllbGRfc2V4cF8wMTUkMiIsImZpZWxkX3NleHBfMDE1IiwieF8wMjIiLCJmaWVsZF9zZXhwXzAxNSQwIiwiZnZhbHVlXzAxOCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE3IiwiZmVlZGJhY2tfMDExIiwic3ViX2lkXzAwOSIsInNleHBfb2ZfZXhhbXBsZV9tb2RlbCIsImZlZWRiYWNrXzAyNiIsInN1Yl9pZF8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsImV4YW1wbGVfbW9kZWxfb2ZfeW9qc29uIiwiZmVlZGJhY2tfZmllbGQiLCJmZWVkYmFja192YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlX21vZGVsIiwidl9mZWVkYmFjayIsInBwX2Zvcm1fbW9kZWwiLCJzaG93X2Zvcm1fbW9kZWwiLCJmb3JtX21vZGVsX29mX3NleHAiLCJncm91cF8wMzEiLCJmb3JtXzAzMyIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzAzNSIsImV4YW1wbGVzXzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwiZmllbGRfc2V4cHNfMDQzIiwiZmllbGRfbmFtZV8wNDEiLCJ0YWlsXzA1MCIsImZpZWxkX3NleHBfMDQyJDQiLCJmaWVsZF9zZXhwXzA0MiIsInhfMDUxIiwiZmllbGRfc2V4cF8wNDIkMCIsImZ2YWx1ZV8wNDciLCJmaWVsZF9zZXhwXzA0MiQxIiwiZnZhbHVlXzA0NiIsImZpZWxkX3NleHBfMDQyJDIiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMyIsImZ2YWx1ZV8wNDQiLCJleGFtcGxlc18wMzgiLCJleHBsYW5hdGlvbl9mZWVkYmFja18wMzYiLCJmb3JtXzAzNCIsImdyb3VwXzAzMiIsInNleHBfb2ZfZm9ybV9tb2RlbCIsImV4YW1wbGVzXzA1OSIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzA1NyIsImZvcm1fMDU1IiwiZ3JvdXBfMDUzIiwiYXJnXzA2MCIsImJuZHNfMDUyIiwiYXJnXzA1OCIsImJuZHNfMDUyJDAiLCJhcmdfMDU2IiwiYm5kc18wNTIkMSIsImFyZ18wNTQiLCJibmRzXzA1MiQyIiwiZm9ybV9tb2RlbF9vZl95b2pzb24iLCJncm91cF9maWVsZCIsImZvcm1fZmllbGQiLCJleHBsYW5hdGlvbl9mZWVkYmFja19maWVsZCIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZhbHVlIiwiZm9ybV92YWx1ZSIsImdyb3VwX3ZhbHVlIiwieW9qc29uX29mX2Zvcm1fbW9kZWwiLCJ2X2V4cGxhbmF0aW9uX2ZlZWRiYWNrIiwidl9mb3JtIiwidl9ncm91cCIsInBwX2dyb3VwX21vZGVsIiwic2hvd19ncm91cF9tb2RlbCIsImdyb3VwX21vZGVsX29mX3NleHAiLCJzZXhwXzA2MiIsImZpZWxkX3NleHBzXzA2MyIsImdyb3VwXzA2NCIsInNlbGVjdGVkXzA2NiIsImR1cGxpY2F0ZXNfMDY4IiwiZXh0cmFfMDY5Iiwic2V4cF8wNjIkMCIsImZpZWxkX3NleHBzXzA3MiIsImZpZWxkX25hbWVfMDcwIiwidGFpbF8wNzciLCJmaWVsZF9zZXhwXzA3MSQyIiwiZmllbGRfc2V4cF8wNzEiLCJ4XzA3OCIsImZpZWxkX3NleHBfMDcxJDAiLCJmdmFsdWVfMDczIiwiZmllbGRfc2V4cF8wNzEkMSIsImZ2YWx1ZV8wNzQiLCJzZWxlY3RlZF8wNjciLCJncm91cF8wNjUiLCJzZXhwX29mX2dyb3VwX21vZGVsIiwic2VsZWN0ZWRfMDgyIiwiZ3JvdXBfMDgwIiwiYm5kc18wNzkiLCJibmRzXzA3OSQwIiwiZ3JvdXBfbW9kZWxfb2ZfeW9qc29uIiwic2VsZWN0ZWRfZmllbGQiLCJzZWxlY3RlZF92YWx1ZSIsInlvanNvbl9vZl9ncm91cF9tb2RlbCIsInZfc2VsZWN0ZWQiLCJzZXhwXzA4NSIsImZpZWxkX3NleHBzXzA4NiIsInNwZWNpZmljaXR5X29wZW5fMDg3IiwiZm9ybXNfMDg5IiwiZ3JvdXBzXzA5MSIsImR1cGxpY2F0ZXNfMDkzIiwiZXh0cmFfMDk0Iiwic2V4cF8wODUkMCIsImZpZWxkX3NleHBzXzA5NyIsImZpZWxkX25hbWVfMDk1IiwidGFpbF8xMDMiLCJmaWVsZF9zZXhwXzA5NiQzIiwiZmllbGRfc2V4cF8wOTYiLCJ4XzEwNCIsImZpZWxkX3NleHBfMDk2JDAiLCJmdmFsdWVfMTAwIiwiZmllbGRfc2V4cF8wOTYkMSIsImZ2YWx1ZV8wOTgiLCJmaWVsZF9zZXhwXzA5NiQyIiwiZnZhbHVlXzA5OSIsImdyb3Vwc18wOTIiLCJmb3Jtc18wOTAiLCJzcGVjaWZpY2l0eV9vcGVuXzA4OCIsImdyb3Vwc18xMTAiLCJmb3Jtc18xMDgiLCJzcGVjaWZpY2l0eV9vcGVuXzEwNiIsImFyZ18xMTEiLCJibmRzXzEwNSIsImFyZ18xMDkiLCJibmRzXzEwNSQwIiwiYXJnXzEwNyIsImJuZHNfMTA1JDEiLCJzcGVjaWZpY2l0eV9vcGVuX2ZpZWxkIiwiZ3JvdXBzX2ZpZWxkIiwiZ3JvdXBzX3ZhbHVlIiwic3BlY2lmaWNpdHlfb3Blbl92YWx1ZSIsInZfZ3JvdXBzIiwidl9zcGVjaWZpY2l0eV9vcGVuIiwicHBfaGlnaGxpZ2h0Iiwic2hvd19oaWdobGlnaHQiLCJoaWdobGlnaHRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwic2V4cF9vZl9oaWdobGlnaHQiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiaGlnaGxpZ2h0X29mX3lvanNvbiIsInlvanNvbl9vZl9oaWdobGlnaHQiLCJzZXhwXzEyNCIsImZpZWxkX3NleHBzXzEyNSIsInNob3dfMTI2Iiwic2hvd19mZWVkYmFja18xMjgiLCJoaWdobGlnaHRfMTMwIiwiZHVwbGljYXRlc18xMzIiLCJleHRyYV8xMzMiLCJzZXhwXzEyNCQwIiwiZmllbGRfc2V4cHNfMTM2IiwiZmllbGRfbmFtZV8xMzQiLCJ0YWlsXzE0MiIsImZpZWxkX3NleHBfMTM1JDMiLCJmaWVsZF9zZXhwXzEzNSIsInhfMTQzIiwiZmllbGRfc2V4cF8xMzUkMCIsImZpZWxkX3NleHBfMTM1JDEiLCJmaWVsZF9zZXhwXzEzNSQyIiwiZnZhbHVlXzEzNyIsImhpZ2hsaWdodF8xMzEiLCJzaG93X2ZlZWRiYWNrXzEyOSIsInNob3dfMTI3IiwiaGlnaGxpZ2h0XzE0OSIsInNob3dfZmVlZGJhY2tfMTQ3Iiwic2hvd18xNDUiLCJhcmdfMTUwIiwiYm5kc18xNDQiLCJhcmdfMTQ4IiwiYm5kc18xNDQkMCIsImFyZ18xNDYiLCJibmRzXzE0NCQxIiwic2hvd19maWVsZCIsInNob3dfZmVlZGJhY2tfZmllbGQiLCJoaWdobGlnaHRfZmllbGQiLCJoaWdobGlnaHRfdmFsdWUiLCJzaG93X2ZlZWRiYWNrX3ZhbHVlIiwic2hvd192YWx1ZSIsInZfaGlnaGxpZ2h0Iiwidl9zaG93X2ZlZWRiYWNrIiwidl9zaG93IiwicHBfaGlnaGxpZ2h0X2FjdGlvbiIsInNob3dfaGlnaGxpZ2h0X2FjdGlvbiIsImhpZ2hsaWdodF9hY3Rpb25fb2Zfc2V4cCIsInNleHBfMTU1IiwidGFnXzE1NiIsInNleHBfYXJnc18xNTciLCJhcmcwXzE1OCIsInJlczBfMTU5Iiwic2V4cF9vZl9oaWdobGlnaHRfYWN0aW9uIiwiYXJnMF8xNjAiLCJoaWdobGlnaHRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9oaWdobGlnaHRfYWN0aW9uIiwic2V4cF8xNjYiLCJ0YWdfMTY3Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE3MSIsInJlczBfMTcyIiwiZ2V0X2V4cGxhbmF0aW9uX2ZlZWRiYWNrIiwiZm9ybXMiLCJnZXRfZXhhbXBsZV9mZWVkYmFjayIsImV4YW1wbGVfaWQiLCJleGFtcGxlIiwiZ2V0X2Zvcm1faW5fZ3JvdXAiLCJncm91cCIsImdldF9zZWxlY3RlZF9vcHRpb24iLCJncm91cCQwIiwic2VsZWN0ZWQiLCJzZWxlY3RlZCQwIiwiZ2V0X29wdGlvbnMiLCJnZXRfZm9ybV9hbmRfb3B0aW9ucyIsImVycm9yX3NvdXJjZV8wNDMiLCJwcF9tb2RlIiwic2hvd19tb2RlIiwibW9kZV9vZl9zZXhwIiwic2V4cF9vZl9tb2RlIiwibW9kZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfbW9kZSIsIm1vZGVfb2Zfc3RyaW5nIiwiY2FwdGlvbnNfMDA4Iiwic2Vjb25kYXJ5X2ljb25zXzAxMCIsImNvcmVfMDEyIiwiYXN5bmNfZXZhbHVhdGlvbl8wMTQiLCJjb250ZXh0X2luc3BlY3Rvcl8wMTYiLCJpbnN0cnVjdG9yX21vZGVfMDE4IiwiYmVuY2htYXJrXzAyMCIsImV4cGxhaW5UaGlzXzAyMiIsImFjY2Vzc2liaWxpdHlfMDI0IiwibW9kZV8wMjYiLCJkdXBsaWNhdGVzXzAyOCIsImV4dHJhXzAyOSIsImZpZWxkX3NleHBzXzAzMiIsImZpZWxkX25hbWVfMDMwIiwidGFpbF8wNDUiLCJmaWVsZF9zZXhwXzAzMSQxMCIsImZpZWxkX3NleHBfMDMxIiwieF8wNDYiLCJmaWVsZF9zZXhwXzAzMSQwIiwiZmllbGRfc2V4cF8wMzEkMSIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQyIiwiZnZhbHVlXzAzNyIsImZpZWxkX3NleHBfMDMxJDMiLCJmdmFsdWVfMDM1IiwiZmllbGRfc2V4cF8wMzEkNCIsImZpZWxkX3NleHBfMDMxJDUiLCJmdmFsdWVfMDM4IiwiZmllbGRfc2V4cF8wMzEkNiIsImZ2YWx1ZV8wNDIiLCJmaWVsZF9zZXhwXzAzMSQ3IiwiZnZhbHVlXzAzNiIsImZpZWxkX3NleHBfMDMxJDgiLCJmdmFsdWVfMDM5IiwiZmllbGRfc2V4cF8wMzEkOSIsImZ2YWx1ZV8wMzQiLCJtb2RlXzAyNyIsImFjY2Vzc2liaWxpdHlfMDI1IiwiZXhwbGFpblRoaXNfMDIzIiwiYmVuY2htYXJrXzAyMSIsImluc3RydWN0b3JfbW9kZV8wMTkiLCJjb250ZXh0X2luc3BlY3Rvcl8wMTciLCJhc3luY19ldmFsdWF0aW9uXzAxNSIsImNvcmVfMDEzIiwic2Vjb25kYXJ5X2ljb25zXzAxMSIsImNhcHRpb25zXzAwOSIsIm1vZGVfMDY2IiwiYWNjZXNzaWJpbGl0eV8wNjQiLCJleHBsYWluVGhpc18wNjIiLCJiZW5jaG1hcmtfMDYwIiwiaW5zdHJ1Y3Rvcl9tb2RlXzA1OCIsImNvbnRleHRfaW5zcGVjdG9yXzA1NiIsImFzeW5jX2V2YWx1YXRpb25fMDU0IiwiY29yZV8wNTIiLCJzZWNvbmRhcnlfaWNvbnNfMDUwIiwiY2FwdGlvbnNfMDQ4IiwiYXJnXzA2NyIsImJuZHNfMDQ3IiwiYXJnXzA2NSIsImJuZHNfMDQ3JDAiLCJhcmdfMDYzIiwiYm5kc18wNDckMSIsImFyZ18wNjEiLCJibmRzXzA0NyQyIiwiYXJnXzA1OSIsImJuZHNfMDQ3JDMiLCJhcmdfMDU3IiwiYm5kc18wNDckNCIsImFyZ18wNTUiLCJibmRzXzA0NyQ1IiwiYXJnXzA1MyIsImJuZHNfMDQ3JDYiLCJhcmdfMDUxIiwiYm5kc18wNDckNyIsImFyZ18wNDkiLCJibmRzXzA0NyQ4IiwiY2FwdGlvbnNfZmllbGQiLCJzZWNvbmRhcnlfaWNvbnNfZmllbGQiLCJjb3JlX2ZpZWxkIiwiYXN5bmNfZXZhbHVhdGlvbl9maWVsZCIsImNvbnRleHRfaW5zcGVjdG9yX2ZpZWxkIiwiaW5zdHJ1Y3Rvcl9tb2RlX2ZpZWxkIiwiYmVuY2htYXJrX2ZpZWxkIiwiZXhwbGFpblRoaXNfZmllbGQiLCJhY2Nlc3NpYmlsaXR5X2ZpZWxkIiwibW9kZV9maWVsZCIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJtb2RlX3ZhbHVlIiwiYWNjZXNzaWJpbGl0eV92YWx1ZSIsImV4cGxhaW5UaGlzX3ZhbHVlIiwiYmVuY2htYXJrX3ZhbHVlIiwiaW5zdHJ1Y3Rvcl9tb2RlX3ZhbHVlIiwiY29udGV4dF9pbnNwZWN0b3JfdmFsdWUiLCJhc3luY19ldmFsdWF0aW9uX3ZhbHVlIiwiY29yZV92YWx1ZSIsInNlY29uZGFyeV9pY29uc192YWx1ZSIsImNhcHRpb25zX3ZhbHVlIiwidl9tb2RlIiwidl9hY2Nlc3NpYmlsaXR5Iiwidl9leHBsYWluVGhpcyIsInZfYmVuY2htYXJrIiwidl9pbnN0cnVjdG9yX21vZGUiLCJ2X2NvbnRleHRfaW5zcGVjdG9yIiwidl9hc3luY19ldmFsdWF0aW9uIiwidl9jb3JlIiwidl9zZWNvbmRhcnlfaWNvbnMiLCJ2X2NhcHRpb25zIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImZpeF9pbnN0cnVjdG9yX21vZGUiLCJzZXR0aW5ncyIsInBwX3N0YXRlIiwic2hvd19zdGF0ZSIsInN0YXRlX29mX3NleHAiLCJzZXhwX29mX3N0YXRlIiwic3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXRlIiwicHBfcGVyc2lzdGVudF9zdGF0ZSIsInNob3dfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cCIsInNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJzY3JhdGNoX2tleSIsInBlcnNpc3QiLCJlZGl0b3IiLCJ1bnBlcnNpc3QiLCJ6aXBwZXIkMCIsInNlcmlhbGl6ZSIsInN0YXRlIiwiZGVzZXJpYWxpemUiLCJkYXRhIiwiZGVzZXJpYWxpemVfb3B0Iiwic2V4cCIsImV4cG9ydCQwIiwiaW1wb3J0JDAiLCJleHBvcnRfaW5pdCIsIm1rX3N0YXRpY3MiLCJjdHhfaW5pdCIsInRlcm0iLCJpbmZvX21hcCIsImVycm9yX2lkcyIsImVycm9yX3NvdXJjZV8wMzEiLCJwcF9zY3JhdGNoIiwic2hvd19zY3JhdGNoIiwiYTIiLCJzY3JhdGNoX29mX3NleHAiLCJzZXhwXzAxNCIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJhcmcxXzAwMyIsImFyZzBfMDAyIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDEzIiwic2V4cF9vZl9zY3JhdGNoIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5IiwicmVzMF8wMjIiLCJyZXMxXzAyMyIsImFyZzFfMDE2IiwiYXJnMF8wMTUiLCJyZXMwXzAxNyIsInJlczFfMDE4IiwicmVzMl8wMjQiLCJzY3JhdGNoX29mX3lvanNvbiIsInYyIiwidjIkMCIsInlvanNvbl9vZl9zY3JhdGNoIiwicHBfZG9jdW1lbnRhdGlvbiIsInNob3dfZG9jdW1lbnRhdGlvbiIsImRvY3VtZW50YXRpb25fb2Zfc2V4cCIsInNleHBfMDQzIiwiYXJnMl8wMzkiLCJhcmcxXzAzOCIsImFyZzBfMDM3Iiwic2V4cF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInJlczFfMDQxIiwic2V4cF8wMzYiLCJhcmcxXzAzMyIsImFyZzBfMDMyIiwicmVzMF8wMzQiLCJyZXMxXzAzNSIsInJlczJfMDQyIiwic2V4cF9vZl9kb2N1bWVudGF0aW9uIiwiYXJnMl8wNTQiLCJhcmcxXzA1MyIsImFyZzFfMDQ1IiwicmVzMF8wNDYiLCJyZXMxXzA0NyIsInJlczFfMDU2IiwiYXJnMV8wNDkiLCJyZXMwXzA1MCIsInJlczFfMDUxIiwicmVzMl8wNTciLCJkb2N1bWVudGF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9kb2N1bWVudGF0aW9uIiwic2V4cF8wNTkiLCJmaWVsZF9zZXhwc18wNjAiLCJzZXR0aW5nc18wNjEiLCJzY3JhdGNoXzA2MyIsImRvY3VtZW50YXRpb25fMDY1IiwiZHVwbGljYXRlc18wNjciLCJleHRyYV8wNjgiLCJzZXhwXzA1OSQwIiwiZmllbGRfc2V4cHNfMDcxIiwiZmllbGRfbmFtZV8wNjkiLCJmaWVsZF9zZXhwXzA3MCQzIiwiZmllbGRfc2V4cF8wNzAiLCJmaWVsZF9zZXhwXzA3MCQwIiwiZmllbGRfc2V4cF8wNzAkMSIsImZpZWxkX3NleHBfMDcwJDIiLCJkb2N1bWVudGF0aW9uXzA2NiIsInNjcmF0Y2hfMDY0Iiwic2V0dGluZ3NfMDYyIiwiZG9jdW1lbnRhdGlvbl8wODQiLCJzY3JhdGNoXzA4MiIsInNldHRpbmdzXzA4MCIsImFyZ18wODUiLCJibmRzXzA3OSQxIiwic2V0dGluZ3NfZmllbGQiLCJzY3JhdGNoX2ZpZWxkIiwiZG9jdW1lbnRhdGlvbl9maWVsZCIsImRvY3VtZW50YXRpb25fdmFsdWUiLCJzY3JhdGNoX3ZhbHVlIiwic2V0dGluZ3NfdmFsdWUiLCJ2X2RvY3VtZW50YXRpb24iLCJ2X3NjcmF0Y2giLCJ2X3NldHRpbmdzIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wNDAiLCJlcnJvcl9zb3VyY2VfMDQ5IiwicmVzMF8wMTAiLCJyZXMxXzAxMSIsInBwX2V4YW1wbGVzIiwic2hvd19leGFtcGxlcyIsImV4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAyMyIsInJlczBfMDIxIiwic2V4cF8wMTciLCJhcmcxXzAxNCIsImFyZzBfMDEzIiwicmVzMF8wMTUiLCJyZXMxXzAxNiIsInJlczFfMDIyIiwic2V4cF9vZl9leGFtcGxlcyIsImFyZzFfMDI5IiwiYXJnMF8wMjgiLCJhcmcxXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMxXzAzMSIsImV4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9leGFtcGxlcyIsInBwX2V4ZXJjaXNlcyIsInNob3dfZXhlcmNpc2VzIiwiZXhlcmNpc2VzX29mX3NleHAiLCJzZXhwXzAzOSIsImFyZzJfMDM1IiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM2IiwicmVzMV8wMzciLCJyZXMyXzAzOCIsInNleHBfb2ZfZXhlcmNpc2VzIiwiYXJnMl8wNDMiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsInJlczJfMDQ2IiwiZXhlcmNpc2VzX29mX3lvanNvbiIsInlvanNvbl9vZl9leGVyY2lzZXMiLCJhMSQwIiwiYTEkMSIsInNleHBfMDUxIiwidGFnXzA1MiIsInNleHBfYXJnc18wNTMiLCJhcmcxXzA1NSIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDcyIiwiYXJnMl8wNzUiLCJhcmcxXzA3NCIsImFyZzBfMDczIiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsInJlczJfMDc4Iiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDY3IiwiYXJnMF8wNjYiLCJyZXMwXzA2OCIsInNleHBfMDY1IiwiYXJnMV8wNjIiLCJhcmcwXzA2MSIsInJlczBfMDYzIiwicmVzMV8wNjQiLCJyZXMxXzA2OSIsImFyZzFfMDgwIiwiYXJnMF8wNzkiLCJyZXMwXzA4MSIsInJlczFfMDgyIiwiYXJnMV8wODgiLCJhcmcwXzA4NyIsInJlczBfMDg5IiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJyZXMxXzA5MCIsImFyZzJfMDkzIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDk0IiwicmVzMV8wOTUiLCJyZXMyXzA5NiIsInYxJDMiLCJ2MSQ0IiwidjEkMSIsInYxJDIiLCJnZXRfZWRpdG9yIiwiZWRpdG9ycyIsInNsaWRlcyIsInNsaWRlcyQwIiwicHV0X2VkaXRvciIsImVkIiwiZWRzIiwic3BlY3MiLCJuJDAiLCJnZXRfemlwcGVyIiwiZ2V0X2N0eF9pbml0IiwiZ2V0X2Vudl9pbml0IiwiaWR4Iiwia2V5Iiwia2V5JDAiLCJsb29rdXBfc3RhdGljcyIsInN0YXRpY3MiLCJrZXkkMSIsImdldF9zcGxpY2VkX2VsYWJzIiwiZCIsImluZm9fbWFwJDAiLCJ0ZXJtJDAiLCJkJDAiLCJzZXRfaW5zdHJ1Y3Rvcl9tb2RlIiwiaW5zdHJ1Y3Rvcl9tb2RlIiwicmVzZXRfbnRoX3NsaWRlIiwiaW5pdF9lZGl0b3JzIiwiaW5pdF9udGgiLCJyZXNldF9uYW1lZF9zbGlkZSIsImluaXRfbmFtZSIsInJlc2V0X2N1cnJlbnQiLCJpbXBvcnRfY3VycmVudCIsImRhdGEkMCIsInN3aXRjaF9leGFtcGxlX3NsaWRlIiwiY3VyIiwicHBfdXBkYXRlIiwic2hvd191cGRhdGUiLCJhMyIsImEyJDAiLCJ1cGRhdGVfb2Zfc2V4cCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMzIiLCJyZXMxXzAzNiIsInNleHBfYXJnc18wMTIiLCJhcmcyXzAxNSIsInJlczBfMDE2IiwicmVzMV8wMTciLCJyZXMyXzAxOCIsInNleHBfYXJnc18wMjEiLCJhcmczXzAyNSIsImFyZzJfMDI0IiwiYXJnMV8wMjMiLCJhcmcwXzAyMiIsInJlczJfMDI4IiwicmVzM18wMjkiLCJzZXhwX2FyZ3NfMDA3IiwicmVzMF8wMDkiLCJzZXhwX29mX3VwZGF0ZSIsInJlczBfMDM4IiwiYXJnMl8wNDEiLCJhcmcxXzA0MCIsInJlczBfMDQyIiwicmVzMV8wNDMiLCJyZXMyXzA0NCIsImFyZzNfMDQ4IiwiYXJnMl8wNDciLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNTAiLCJyZXMyXzA1MSIsInJlczNfMDUyIiwiYXJnMV8wNTQiLCJhcmcwXzA1MyIsInVwZGF0ZV9vZl95b2pzb24iLCJ2MyIsInYyJDEiLCJ2MiQyIiwidjMkMCIsInlvanNvbl9vZl91cGRhdGUiLCJzZXRfdXBkYXRlIiwiZXhwbGFpblRoaXNNb2RlbCIsInUiLCJiIiwiZmVlZGJhY2tfb3B0aW9uIiwiZiIsInBvc3QiLCJwcmUiLCJmb3JtJDAiLCJmZWVkYmFjayIsImZvcm0kMSIsImZlZWRiYWNrX29wdGlvbiQwIiwiZm9ybV9pZCQwIiwiZ3JvdXBfaWQkMCIsInBvc3RfZm9ybSIsImZvcm0kMiIsInByZV9mb3JtIiwiZm9ybSQzIiwiZSIsInBvc3RfZXhhbXBsZSIsInByZV9leGFtcGxlIiwiZXhhbXBsZSQwIiwiZm9ybSQ0IiwiZm9ybV9pZCQxIiwiZ3JvdXBfaWQkMSIsImciLCJwb3N0X2dyb3VwIiwicHJlX2dyb3VwIiwicm93X2hlaWdodF8wMDQiLCJjb2xfd2lkdGhfMDA2IiwiY29sX3dpZHRoXzAwNyIsInJvd19oZWlnaHRfMDA1IiwiY29sX3dpZHRoXzAyMiIsInJvd19oZWlnaHRfMDIwIiwicm93X2hlaWdodF9maWVsZCIsImNvbF93aWR0aF9maWVsZCIsImNvbF93aWR0aF92YWx1ZSIsInJvd19oZWlnaHRfdmFsdWUiLCJ2X2NvbF93aWR0aCIsInZfcm93X2hlaWdodCIsImNsaXBib2FyZF9zaGltX2lkIiwiZ2V0X2VsZW1fYnlfaWQiLCJkb2MiLCJkYXRlX25vdyIsInRpbWVzdGFtcCIsImdldF9rZXkiLCJjdHJsX2hlbGQiLCJzaGlmdF9oZWxkIiwiYWx0X2hlbGQiLCJtZXRhX2hlbGQiLCJudW1fY2xpY2tzIiwiaXNfZG91YmxlX2NsaWNrIiwiZG93bmxvYWRfc3RyaW5nX2ZpbGUiLCJjb250ZW50X3R5cGUiLCJjb250ZW50cyIsImJsb2IiLCJkb3dubG9hZF9qc29uIiwicmVhZF9maWxlIiwiZmlsZSIsInJlc3VsdCIsIm9wdGlvbiIsInNldF9sb2NhbHN0b3JlIiwibG9jYWxfc3RvcmUiLCJnZXRfbG9jYWxzdG9yZSIsImNsZWFyX2xvY2Fsc3RvcmUiLCJjb25maXJtIiwibWVzc2FnZSIsImxvZyIsImZvY3VzX2NsaXBib2FyZF9zaGltIiwiY2xpcGJvYXJkX3NoaW0iLCJjb3B5Iiwic2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlIiwiY2FyZXRfZWxlbSIsIm1haW4iLCJzZXRfY3VycmVudCIsImZyYWciLCJmcmFnJDAiLCJoaXN0b3J5IiwiZ2V0X2N1cnJlbnQiLCJmcmFnbWVudF9vZl91cmwiLCJ0eV92aWV3IiwiY2xzIiwiYWxpYXNfdmlldyIsInByb3ZfdmlldyIsInZpZXdfdHkiLCJ0eSIsInByb3YiLCJ0MiIsInQxIiwidHMiLCJ0MCIsInRzJDAiLCJjdHJfdmlldyIsInRzX3ZpZXdzIiwidDAkMCIsInRzJDEiLCJ0JDAiLCJjdHIiLCJ0eXAkMCIsInZpZXciLCJraW5kIiwicHJlZml4Iiwic2F2ZV9zZXR0aW5nc19rZXkiLCJzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5Iiwic2F2ZV9zY3JhdGNoX2tleSIsInNhdmVfZG9jdW1lbnRhdGlvbl9rZXkiLCJjdXJfZXhlcmNpc2Vfa2V5IiwiZnVsbF9rZXkiLCJzYXZlIiwidmFsdWUiLCJsb2FkIiwic2F2ZSQwIiwibG9hZCQwIiwic2VyaWFsaXplJDAiLCJkZXNlcmlhbGl6ZSQwIiwic2F2ZSQxIiwibG9hZCQxIiwiZXhwb3J0JDEiLCJpbXBvcnQkMSIsInBwX3BlcnNpc3RlbnQiLCJzaG93X3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3NleHAiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsInJlc3VsdHMiLCJvZl9wZXJzaXN0ZW50Iiwic2VyaWFsaXplJDEiLCJzY3JhdGNoIiwiZGVzZXJpYWxpemUkMSIsInNhdmUkMiIsImluaXQkMSIsImxvYWQkMiIsImV4cG9ydCQyIiwiaW1wb3J0JDIiLCJwcF9wZXJzaXN0ZW50JDAiLCJzaG93X3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9wZXJzaXN0ZW50JDAiLCJwZXJzaXN0ZW50X29mX3lvanNvbiQwIiwieW9qc29uX29mX3BlcnNpc3RlbnQkMCIsInRvX3BlcnNpc3RlbnQkMCIsInN0cmluZyIsIm9mX3BlcnNpc3RlbnQkMCIsInNlcmlhbGl6ZSQyIiwiZGVzZXJpYWxpemUkMiIsInNhdmUkMyIsImluaXQkMiIsImRvY3VtZW50YXRpb24iLCJsb2FkJDMiLCJleHBvcnQkMyIsImltcG9ydCQzIiwia2V5c3RyaW5nX29mX2tleSIsImtleXN0cmluZ19vZiIsImtleV9vZl9rZXlzdHJpbmciLCJrZXlzdHJpbmciLCJzYXZlX2V4ZXJjaXNlX2tleSIsInNhdmVfZXhlcmNpc2UiLCJpbml0X2V4ZXJjaXNlIiwic3BlYyIsImxvYWRfZXhlcmNpc2UiLCJzYXZlJDQiLCJpbml0JDMiLCJsb2FkJDQiLCJmaXJzdF9zcGVjIiwiZmlyc3Rfa2V5IiwiZXhlcmNpc2UkMCIsInByZXBfZXhlcmNpc2VfZXhwb3J0Iiwic2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImV4cG9ydCQ0IiwiaW1wb3J0JDQiLCJleGVyY2lzZV9leHBvcnQiLCJwZXJzaXN0ZW50X3N0YXRlIiwic3BlYyQwIiwicHBfdGltZXN0YW1wIiwic2hvd190aW1lc3RhbXAiLCJ0aW1lc3RhbXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3RpbWVzdGFtcCIsInRpbWVzdGFtcF9vZl9zZXhwIiwic2V4cF9vZl90aW1lc3RhbXAiLCJwcF91aV9zdGF0ZSIsInNob3dfdWlfc3RhdGUiLCJ1aV9zdGF0ZV9vZl95b2pzb24iLCJmb250X21ldHJpY3NfZmllbGQiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfZmllbGQiLCJtb3VzZWRvd25fZmllbGQiLCJtb3VzZWRvd25fdmFsdWUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfdmFsdWUiLCJmb250X21ldHJpY3NfdmFsdWUiLCJ5b2pzb25fb2ZfdWlfc3RhdGUiLCJ2X21vdXNlZG93biIsInZfc2hvd19iYWNrcGFja190YXJnZXRzIiwidl9mb250X21ldHJpY3MiLCJ1aV9zdGF0ZV9vZl9zZXhwIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJmb250X21ldHJpY3NfMDA1Iiwic2hvd19iYWNrcGFja190YXJnZXRzXzAwNyIsIm1vdXNlZG93bl8wMDkiLCJkdXBsaWNhdGVzXzAxMSIsImV4dHJhXzAxMiIsInNleHBfMDAzJDAiLCJmaWVsZF9zZXhwc18wMTUiLCJmaWVsZF9uYW1lXzAxMyIsImZpZWxkX3NleHBfMDE0JDMiLCJmaWVsZF9zZXhwXzAxNCIsImZpZWxkX3NleHBfMDE0JDAiLCJmaWVsZF9zZXhwXzAxNCQxIiwiZnZhbHVlXzAxNiIsImZpZWxkX3NleHBfMDE0JDIiLCJtb3VzZWRvd25fMDEwIiwic2hvd19iYWNrcGFja190YXJnZXRzXzAwOCIsImZvbnRfbWV0cmljc18wMDYiLCJzZXhwX29mX3VpX3N0YXRlIiwibW91c2Vkb3duXzAyOCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wMjYiLCJmb250X21ldHJpY3NfMDI0IiwiYXJnXzAyOSIsImJuZHNfMDIzJDEiLCJ1aV9zdGF0ZV9pbml0IiwiY3V0b2ZmIiwiYmxhbmsiLCJsb2FkX2VkaXRvcnMiLCJtb2RlIiwicmVzdWx0cyQwIiwic2F2ZV9lZGl0b3JzIiwiaW5pdF9tb2RlbCIsImFjY2Vzc2liaWxpdHlNb2RlbCIsInVpX3N0YXRlIiwic2F2ZV9hbmRfcmV0dXJuIiwicmVzZXQiLCJuZXdfbW9kZWwiLCJ0b19zdHJpbmciLCJxdWVyeSIsImdldF9wb3NpdGlvbiIsIm1lYXN1cmVkIiwibSIsImluZm9fZXhwX3N0ciIsImluZm9fcGF0X3N0ciIsImluZm9fdHlwX3N0ciIsImluZm9fdHBhdF9zdHIiLCJpbmZvX3NlY19zdHIiLCJzZWMiLCJpbmZvX3N0ciIsImluZm8iLCJxdWVyeV9yZXBseSIsInVuc2VsZWN0ZWQiLCJpbmRleCIsInBvc2l0aW9uIiwiY29sIiwicm93IiwiaWQkMCIsImNpIiwiYWN0aW9uJDAiLCJpc19saW5lX25lZWRlZCIsInByb2dyYW0iLCJyb3dzIiwiY29sJDAiLCJyb3ckMCIsImNvbnRleHRfZW50cnkiLCJlbnRyeSIsIm5hbWUkMCIsImlkJDEiLCJjaSQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVycm9yX3NvdXJjZV8wNTAiLCJlcnJvcl9zb3VyY2VfMDU0IiwiZXJyb3Jfc291cmNlXzA2NSIsImVycm9yX3NvdXJjZV8wODMiLCJlcnJvcl9zb3VyY2VfMDg3IiwiZXJyb3Jfc291cmNlXzIzNSIsInBwX2V2YWx1YXRpb25fc2V0dGluZ3NfYWN0aW9uIiwic2hvd19ldmFsdWF0aW9uX3NldHRpbmdzX2FjdGlvIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfIiwic2V4cF9vZl9ldmFsdWF0aW9uX3NldHRpbmdzX2FjIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfJDAiLCJ5b2pzb25fb2ZfZXZhbHVhdGlvbl9zZXR0aW5nc18iLCJwcF9zZXR0aW5nc19hY3Rpb24iLCJzaG93X3NldHRpbmdzX2FjdGlvbiIsInNldHRpbmdzX2FjdGlvbl9vZl9zZXhwIiwic2V4cF8wMDkiLCJ0YWdfMDEwIiwic2V4cF9hcmdzXzAxMSIsImFyZzBfMDEyIiwicmVzMF8wMTMiLCJzZXhwX2FyZ3NfMDE2IiwiYXJnMF8wMTciLCJyZXMwXzAxOCIsInNleHBfYXJnc18wMjYiLCJhcmcwXzAyNyIsInJlczBfMDIzIiwic2V4cF9vZl9zZXR0aW5nc19hY3Rpb24iLCJhcmcwXzAzMSIsInJlczBfMDMyIiwiYXJnMF8wMzUiLCJzZXR0aW5nc19hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NldHRpbmdzX2FjdGlvbiIsInBwX3N0ZXBwZXJfYWN0aW9uIiwic2hvd19zdGVwcGVyX2FjdGlvbiIsInN0ZXBwZXJfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA0MSIsInRhZ18wNDIiLCJzZXhwX29mX3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBwZXJfYWN0aW9uIiwicHBfYWdlbnQiLCJzaG93X2FnZW50IiwiYWdlbnRfb2Zfc2V4cCIsInNleHBfb2ZfYWdlbnQiLCJhZ2VudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWdlbnQiLCJwcF9hZ2VudF9hY3Rpb24iLCJzaG93X2FnZW50X2FjdGlvbiIsImFnZW50X2FjdGlvbl9vZl9zZXhwIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX29mX2FnZW50X2FjdGlvbiIsInJlczBfMDYyIiwiYWdlbnRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudF9hY3Rpb24iLCJwcF9zZXRfbWV0YSIsInNob3dfc2V0X21ldGEiLCJzZXRfbWV0YV9vZl9zZXhwIiwic2V4cF8wNjciLCJ0YWdfMDY4Iiwic2V4cF9hcmdzXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJzZXhwX2FyZ3NfMDc0IiwiYXJnMF8wNzUiLCJzZXhwX29mX3NldF9tZXRhIiwiYXJnMF8wNzciLCJyZXMwXzA3OCIsInJlczBfMDgwIiwic2V0X21ldGFfb2ZfeW9qc29uIiwieW9qc29uX29mX3NldF9tZXRhIiwicHBfYmVuY2htYXJrX2FjdGlvbiIsInNob3dfYmVuY2htYXJrX2FjdGlvbiIsImJlbmNobWFya19hY3Rpb25fb2Zfc2V4cCIsInNleHBfMDg0Iiwic2V4cF9vZl9iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYmVuY2htYXJrX2FjdGlvbiIsImEwJDQiLCJhMCQ1IiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTAkOSIsImEwJDEwIiwiYTAkMTEiLCJhMCQxMiIsImEwJDEzIiwiYTAkMTQiLCJhMCQxNSIsImEwJDE2Iiwic2V4cF8wODkiLCJ0YWdfMDkwIiwic2V4cF9hcmdzXzEyNiIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJzZXhwX2FyZ3NfMTIxIiwiYXJnMF8xMjIiLCJyZXMwXzEyMyIsInNleHBfYXJnc18xNDEiLCJhcmcwXzE0MiIsInJlczBfMTQzIiwic2V4cF9hcmdzXzE3NiIsImFyZzBfMTc3IiwicmVzMF8xNzgiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMF8xMDIiLCJyZXMwXzEwMyIsInNleHBfYXJnc18wOTEiLCJhcmcwXzA5MiIsInJlczBfMDkzIiwic2V4cF9hcmdzXzA5NiIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJzZXhwX2FyZ3NfMTgxIiwiYXJnMV8xODMiLCJhcmcwXzE4MiIsInJlczBfMTg0IiwicmVzMV8xODUiLCJzZXhwX2FyZ3NfMTM2IiwiYXJnMF8xMzciLCJyZXMwXzEzOCIsInNleHBfYXJnc18xMTEiLCJzZXhwX2FyZ3NfMTMxIiwiYXJnMF8xMzIiLCJyZXMwXzEzMyIsInNleHBfYXJnc18xNTYiLCJhcmcwXzE1NyIsInJlczBfMTU4Iiwic2V4cF9hcmdzXzE1MSIsImFyZzBfMTUyIiwicmVzMF8xNTMiLCJzZXhwX2FyZ3NfMTQ2IiwiYXJnMF8xNDciLCJyZXMwXzE0OCIsInNleHBfYXJnc18xNzEiLCJhcmcwXzE3MiIsInJlczBfMTczIiwic2V4cF9hcmdzXzE2NiIsImFyZzBfMTY3IiwicmVzMF8xNjgiLCJzZXhwX2FyZ3NfMTYxIiwiYXJnMF8xNjIiLCJyZXMwXzE2MyIsInNleHBfYXJnc18xMDYiLCJhcmcwXzEwNyIsInJlczBfMTA4Iiwic2V4cF9hcmdzXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzE5OSIsInJlczBfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsImFyZzBfMjAzIiwicmVzMF8yMDQiLCJhcmcwXzIwNSIsInJlczBfMjA2IiwiYXJnMF8yMDciLCJyZXMwXzIwOCIsImFyZzBfMjA5IiwicmVzMF8yMTAiLCJhcmcwXzIxMSIsInJlczBfMjEyIiwiYXJnMF8yMTMiLCJyZXMwXzIxNCIsImFyZzBfMjE1IiwicmVzMF8yMTYiLCJhcmcwXzIxNyIsInJlczBfMjE4IiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsImFyZzBfMjIxIiwicmVzMF8yMjIiLCJhcmcwXzIyMyIsInJlczBfMjI0IiwiYXJnMF8yMjUiLCJyZXMwXzIyNiIsImFyZzFfMjI4IiwiYXJnMF8yMjciLCJyZXMwXzIyOSIsInJlczFfMjMwIiwiYXJnMF8yMzEiLCJyZXMwXzIzMiIsInlvanNvbl9hcmdzJDQiLCJ2MCQ5IiwidjAkMTAiLCJ5b2pzb25fYXJncyQ3IiwidjAkMTUiLCJ2MCQxNiIsInlvanNvbl9hcmdzJDYiLCJ2MCQxMyIsInYwJDE0IiwieW9qc29uX2FyZ3MkNSIsInYwJDExIiwidjAkMTIiLCJ5b2pzb25fYXJncyQxNCIsInYwJDI5IiwidjAkMzAiLCJ5b2pzb25fYXJncyQxMyIsInYwJDI3IiwidjAkMjgiLCJ5b2pzb25fYXJncyQxMiIsInYwJDI1IiwidjAkMjYiLCJ5b2pzb25fYXJncyQxMSIsInYwJDIzIiwidjAkMjQiLCJ5b2pzb25fYXJncyQxMCIsInYwJDIxIiwidjAkMjIiLCJ5b2pzb25fYXJncyQ5IiwidjAkMTkiLCJ2MCQyMCIsInlvanNvbl9hcmdzJDgiLCJ2MCQxNyIsInYwJDE4IiwieW9qc29uX2FyZ3MkMTgiLCJ2MCQzNyIsInYwJDM4IiwieW9qc29uX2FyZ3MkMTciLCJ2MCQzNSIsInYwJDM2IiwieW9qc29uX2FyZ3MkMTYiLCJ2MCQzMyIsInYwJDM0IiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwic2V4cF8yMzciLCJ0YWdfMjM4Iiwic2V4cF9hcmdzXzI0NCIsImFyZzBfMjQ1IiwicmVzMF8yNDYiLCJzZXhwX2FyZ3NfMjM5IiwiYXJnMF8yNDAiLCJyZXMwXzI0MSIsImFyZzBfMjQ3IiwicmVzMF8yNDgiLCJhcmcwXzI0OSIsImlzX2VkaXQiLCJzX2FjdGlvbiIsImEiLCJyZWV2YWx1YXRlX3Bvc3RfdXBkYXRlIiwic2hvdWxkX3Njcm9sbF90b19jYXJldCIsIm1ldGFfYWN0aW9uIiwiZWRfaW5pdCIsImVyciIsInJlc2V0X2J1ZmZlciIsInokMCIsImVkJDAiLCJhcHBseSIsInNjaGVkdWxlX2FjdGlvbiIsInRyaW0iLCJjb21wbGV0aW9uIiwic3RhcnQiLCJhY3Rpb25zJDEiLCJtb2RlbCQwIiwiYWN0aW9ucyIsImFjdGlvbnMkMCIsImhkIiwibW9kZWwkMSIsInNhbXBsZV8xIiwic3RyX3RvX2luc2VydHMiLCJjJDAiLCJhY3Rpb25zXzEiLCJ0aW1lIiwiZmluaXNoIiwiZWxhcHNlZCIsInByaW50IiwiZW52X2luaXQiLCJpbmRleCQwIiwiZGJfbmFtZSIsInRhYmxlX25hbWUiLCJpc19hY3Rpb25fbG9nZ2VkIiwia3Zfc3RvcmUiLCJkYiIsIndpdGhfZGIiLCJlcnJvciIsInVwZ3JhZGUiLCJhZGQiLCJnZXRfYWxsIiwiY2xlYXJfYW5kIiwiY2FsbGJhY2siLCJwcF9zIiwic2hvd19zIiwic19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcyIsInNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9zIiwieF8wMTQiLCJnZXRfYW5kIiwiZW50cmllcyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDY0IiwicHBfYWxsIiwic2hvd19hbGwiLCJhbGxfb2Zfc2V4cCIsInNldHRpbmdzXzAwNCIsImV4cGxhaW5UaGlzTW9kZWxfMDA2Iiwic2NyYXRjaF8wMDgiLCJleGVyY2lzZV8wMTAiLCJkb2N1bWVudGF0aW9uXzAxMiIsImxvZ18wMTQiLCJkdXBsaWNhdGVzXzAxNiIsImV4dHJhXzAxNyIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmdmFsdWVfMDI2IiwiZmllbGRfc2V4cF8wMTkkMSIsImZ2YWx1ZV8wMjQiLCJmaWVsZF9zZXhwXzAxOSQyIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE5JDMiLCJmdmFsdWVfMDI1IiwiZmllbGRfc2V4cF8wMTkkNCIsImZ2YWx1ZV8wMjMiLCJmaWVsZF9zZXhwXzAxOSQ1IiwiZnZhbHVlXzAyMiIsImxvZ18wMTUiLCJkb2N1bWVudGF0aW9uXzAxMyIsImV4ZXJjaXNlXzAxMSIsInNjcmF0Y2hfMDA5IiwiZXhwbGFpblRoaXNNb2RlbF8wMDciLCJzZXR0aW5nc18wMDUiLCJzZXhwX29mX2FsbCIsImxvZ18wNDIiLCJkb2N1bWVudGF0aW9uXzA0MCIsImV4ZXJjaXNlXzAzOCIsInNjcmF0Y2hfMDM2IiwiZXhwbGFpblRoaXNNb2RlbF8wMzQiLCJzZXR0aW5nc18wMzIiLCJhcmdfMDQzIiwiYm5kc18wMzEiLCJhcmdfMDQxIiwiYm5kc18wMzEkMCIsImFyZ18wMzkiLCJibmRzXzAzMSQxIiwiYXJnXzAzNyIsImJuZHNfMDMxJDIiLCJhcmdfMDM1IiwiYm5kc18wMzEkMyIsImFyZ18wMzMiLCJibmRzXzAzMSQ0IiwiYWxsX29mX3lvanNvbiIsImV4cGxhaW5UaGlzTW9kZWxfZmllbGQiLCJleGVyY2lzZV9maWVsZCIsImxvZ19maWVsZCIsImxvZ192YWx1ZSIsImV4ZXJjaXNlX3ZhbHVlIiwiZXhwbGFpblRoaXNNb2RlbF92YWx1ZSIsInlvanNvbl9vZl9hbGwiLCJ2X2xvZyIsInZfZXhlcmNpc2UiLCJ2X2V4cGxhaW5UaGlzTW9kZWwiLCJwcF9hbGxfZjIyIiwic2hvd19hbGxfZjIyIiwiYWxsX2YyMl9vZl9zZXhwIiwic2V4cF8wNDUiLCJmaWVsZF9zZXhwc18wNDYiLCJzZXR0aW5nc18wNDciLCJzY3JhdGNoXzA0OSIsImV4ZXJjaXNlXzA1MSIsImxvZ18wNTMiLCJkdXBsaWNhdGVzXzA1NSIsImV4dHJhXzA1NiIsInNleHBfMDQ1JDAiLCJmaWVsZF9zZXhwc18wNTkiLCJmaWVsZF9uYW1lXzA1NyIsInRhaWxfMDY2IiwiZmllbGRfc2V4cF8wNTgkNCIsImZpZWxkX3NleHBfMDU4IiwieF8wNjciLCJmaWVsZF9zZXhwXzA1OCQwIiwiZnZhbHVlXzA2MyIsImZpZWxkX3NleHBfMDU4JDEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTgkMiIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQzIiwiZnZhbHVlXzA2MSIsImxvZ18wNTQiLCJleGVyY2lzZV8wNTIiLCJzY3JhdGNoXzA1MCIsInNldHRpbmdzXzA0OCIsInNleHBfb2ZfYWxsX2YyMiIsImxvZ18wNzUiLCJleGVyY2lzZV8wNzMiLCJzY3JhdGNoXzA3MSIsInNldHRpbmdzXzA2OSIsImFyZ18wNzYiLCJibmRzXzA2OCIsImFyZ18wNzQiLCJibmRzXzA2OCQwIiwiYXJnXzA3MiIsImJuZHNfMDY4JDEiLCJhcmdfMDcwIiwiYm5kc18wNjgkMiIsImFsbF9mMjJfb2ZfeW9qc29uIiwieW9qc29uX29mX2FsbF9mMjIiLCJta19hbGwiLCJleHBvcnRfYWxsIiwiaW1wb3J0X2FsbCIsImFsbCIsImFsbF9mMjIiLCJwcF9zZWxlY3Rpb24iLCJzaG93X3NlbGVjdGlvbiIsInNlbGVjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9zZWxlY3Rpb24iLCJzZWxlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdGlvbiIsInBwX3F1ZXJ5Iiwic2hvd19xdWVyeSIsInF1ZXJ5X29mX3NleHAiLCJzZXhwX29mX3F1ZXJ5IiwicXVlcnlfb2ZfeW9qc29uIiwieW9qc29uX29mX3F1ZXJ5Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsImFyZzBfMDI1IiwiZ2V0X2lucHV0X3ZhbHVlIiwicXVlcnlfcGFyc2VyIiwidXBkYXRlX3NldHRpbmdzIiwibmV3X21vZGUiLCJldmFsdWF0aW9uIiwiZXZhbHVhdGlvbiQwIiwiZXhwbGFpblRoaXMiLCJzZXR0aW5ncyQwIiwiZXhwbGFpblRoaXMkMCIsInNldHRpbmdzJDEiLCJhJDAiLCJoaWdobGlnaHQiLCJleHBsYWluVGhpcyQxIiwic2V0dGluZ3MkMiIsImFjY2Vzc2liaWxpdHkiLCJzZXR0aW5ncyQzIiwiYWNjZXNzaWJpbGl0eSQwIiwic2V0dGluZ3MkNCIsInNjaGVkdWxlX2V2YWx1YXRpb24iLCJlbGFicyIsImV2YWxfcnMiLCJycXMiLCJycyIsInN0ZXBfcnMiLCJuZXdfcnMiLCJ1cGRhdGVfY2FjaGVkX2RhdGEiLCJ1cGRhdGVfc3RhdGljcyIsInVwZGF0ZV9keW5hbWljcyIsInVwZGF0ZV9zdGF0aWNzJDAiLCJtJDAiLCJzd2l0Y2hfc2NyYXRjaF9zbGlkZSIsInNwZWNzJDAiLCJzd2l0Y2hfZXhlcmNpc2VfZWRpdG9yIiwicG9zIiwiZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSIsInVpX3N0YXRlX3VwZGF0ZSIsImZvbnRfbWV0cmljcyIsInppcHBlcl9pbml0IiwiZWRfc3RyIiwiZWRpdG9ycyQwIiwiZWQkMSIsImVkJDIiLCJlZCQzIiwiZWQkNCIsImluc3RydWN0b3JfbW9kZSQwIiwiZWRpdG9ycyQxIiwiZWRpdG9ycyQyIiwiZmlsZSQwIiwiZGF0YSQxIiwiZWRpdG9ycyQzIiwiaW5zdHJ1Y3Rvcl9tb2RlJDEiLCJlZGl0b3JzJDQiLCJtb2RlbCQyIiwibW9kZWwkMyIsImNsaXBib2FyZCIsImVkJDUiLCJ6JDEiLCJlZCQ2IiwiZWRpdG9ycyQ1IiwiciIsInIkMCIsImxhbSIsInVwX2Fycm93IiwiZG93bl9hcnJvdyIsImxlZnRfYXJyb3ciLCJyaWdodF9hcnJvdyIsIm5ic3AiLCJ6d3NwIiwidHlwZUFycm93U3ltIiwiY2FzdEFycm93U3ltIiwiZWxsaXBzaXMiLCJsZW5ndGgiLCJzdG9wIiwiY291bnQiLCJjb3VudCQwIiwic3RhcnQkMCIsImNvdW50JDEiLCJzdGFydCQxIiwiY291bnQkMiIsInN0YXJ0JDIiLCJzdGFydCQzIiwidHlwYW5uX3BhdF9jb2xvcmluZ19pZHMiLCJwYXRfaWQiLCJ0eXBfaWQiLCJ0eXBhbm5fcGF0IiwidHlwYW5uIiwidHlwX2RlZiIsInR5YWxpYXNfYmFzZV9leHBfY29sb3JpbmdfaWRzIiwidHBhdF9pZCIsImRlZl9pZCIsInR5YWxpYXNfZXhwIiwidHlhbGlhc19leHBzIiwiZXhwbGFuYXRpb24kMCIsImV4cGxhbmF0aW9uJDEiLCJleHBsYW5hdGlvbiQyIiwiY29tbWEiLCJ0dXBsZV90eXAiLCJ0dXBsZTBfdHlwIiwidHlwX2VsZW0xIiwidHlwX2VsZW0yIiwidHVwbGUyX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtMV9pZCIsImVsZW0yX2lkIiwiY29tbWEkMCIsInR1cGxlMl90eXAiLCJ0eXBfZWxlbTEkMCIsInR5cF9lbGVtMiQwIiwidHlwX2VsZW0zIiwidHVwbGUzX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtM19pZCIsImNvbW1hJDEiLCJ0dXBsZTNfdHlwIiwidHVwbGUiLCJ0dXBsZTAiLCJ0dXBsZTIiLCJ0dXBsZTMiLCJ0dXBsZV9wYXQiLCJwYXQxIiwicGF0MiIsInR1cGxlX3BhdF9zaXplMl9jb2xvcmluZ19pZHMiLCJ0dXBsZV9wYXRfc2l6ZTIiLCJwYXQxJDAiLCJwYXQyJDAiLCJwYXQzIiwidHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyIsInR1cGxlX3BhdF9zaXplMyIsInR1cGxlX2V4YW1wbGVfMSIsInR1cGxlX2V4YW1wbGVfMiIsInR1cGxlX2V4cCIsImV4cDEiLCJleHAyIiwidHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyIsImV4cDFfaWQiLCJleHAyX2lkIiwidHVwbGVfZXhwX3NpemUyIiwiZXhwMSQwIiwiZXhwMiQwIiwiZXhwMyIsInR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMiLCJleHAzX2lkIiwidHVwbGVfZXhwX3NpemUzIiwidHVwbGVzIiwidHVwbGVzMiIsInR1cGxlczMiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInNleHBfYXJnc18wNDgiLCJhcmcwXzA0OSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJhcmcxXzA1OCIsImFyZzBfMDU3IiwicmVzMF8wNTkiLCJyZXMxXzA2MCIsImFyZzBfMDY1IiwicmVzMF8wNjYiLCJhcmcwXzA2NyIsImFyZzBfMDY5IiwicmVzMF8wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwidmFsdWVzIiwic29ydGVkX3ZhbHVlcyIsInkiLCJvcmRpbmFscyIsInZhbHVlcyQwIiwibWtfbm9kZSIsInNoYXBlIiwibWlkIiwicGVyZm9ybSIsIm9wIiwidHJlZSIsImdvIiwiaW50ZXJ2YWwiLCJub2RlIiwiYiQwIiwibm9kZSQwIiwibCQwIiwibCQxIiwiciQxIiwic3RhdHVzIiwibmV3X3Jvb3QiLCJtc2ciLCJpbnNlcnQiLCJkZWxldGUkMCIsImNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uIiwic3RhY2siLCJyZXN0IiwiYiQxIiwiYSQxIiwic3RhY2skMCIsIm9yZGluYWwyIiwib3JkaW5hbDEiLCJvMiIsIm8xIiwiY21kZnVkZ2UiLCJzdGgkMCIsInkkMCIsInkkMSIsIngkMiIsInkkMiIsImR4IiwiZHkiLCJoIiwiaCQwIiwidiQwIiwic2NhbGVfY21kIiwic2NhbGVfeCIsInNjYWxlX3kiLCJkeSQwIiwiZHgkMCIsImR4JDEiLCJkeSQxIiwic2NhbGUiLCJyZXZlcnNlIiwidHJhbnNsYXRlX2NtZCIsImNtZCIsInRyYW5zbGF0ZSIsInN0cmluZ19vZl9mbGFnIiwic3RyaW5nX29mX2NvbW1hbmQiLCJkeSQyIiwiZHgkMiIsInN3ZWVwX2ZsYWciLCJsYXJnZV9hcmNfZmxhZyIsInhfYXhpc19yb3RhdGlvbiIsInJ5IiwicngiLCJhdHRycyIsInBhdGgiLCJidWZmZXIiLCJsaW5rZWRfZWRnZV9lcSIsImUxIiwiZTIiLCJjbWRfb2ZfbGlua2VkX2VkZ2UiLCJlZGdlIiwic3JjIiwiZHN0Iiwicm91bmRfY29ybmVycyIsIm1heF9yYWRpaSIsInJ4X21pbiIsInJ5X21pbiIsImNtZDIiLCJjbWQxIiwicnkkMCIsInJ4JDAiLCJjbG9ja3dpc2UiLCJyeSQxIiwicngkMSIsImNsb2Nrd2lzZSQwIiwiaXNfbGVmdF9zaWRlIiwibWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlIiwiZWRnZXMiLCJyaWdodF9lZGdlcyIsImxlZnRfZWRnZXMiLCJ0bCIsIm1lcmdlZF9sZWZ0X2VkZ2VzIiwibWVyZ2VkX3JpZ2h0X2VkZ2VzIiwidmVydGljYWxfY29udG91cl9lZGdlcyIsInJlY3RzIiwiaGVpZ2h0Iiwid2lkdGgiLCJtaW4iLCJtYXhfeCIsIm1heF95IiwibWF4IiwibWluX21heCIsIm1heF9taW4iLCJpc19sZWZ0MSIsImlzX2xlZnQyIiwic29ydGVkX3ZlcnRpY2FsX3NpZGVzIiwic2VnbWVudF90cmVlIiwieXMiLCJta19jb250b3VyX2VkZ2UiLCJ5X2RzdCIsInlfc3JjIiwibmV3X2NvbnRvdXJfZWRnZXMiLCJ1cGRhdGVkX3RyZWUiLCJ1cGRhdGVkX3RyZWUkMCIsIm5ld19jb250b3VyX2VkZ2VzJDAiLCJjb3JuZXJfcmFkaWkiLCJ2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzJDAiLCJpc19zcmMyIiwiaXNfc3JjMSIsInB0MSIsInB0MiIsIm5leHQiLCJwcmV2IiwieF9kc3QiLCJ4X3NyYyIsInhfZHN0JDAiLCJ4X3NyYyQwIiwiYnVpbGRfcGF0aCIsImNvbnRhaW5lciIsImNvbnRhaW5lcl90eXBlIiwib3JpZ2luIiwiYnVmZmVyZWRfaGVpZ2h0IiwiYnVmZmVyZWRfd2lkdGgiLCJidWZmZXJlZF9oZWlnaHRfcHgiLCJidWZmZXJlZF93aWR0aF9weCIsImNvbnRhaW5lcl9vcmlnaW5feCIsImNvbnRhaW5lcl9vcmlnaW5feSIsImlubmVyIiwiaW5kZW50IiwidnRyaW0iLCJib3giLCJpc19sYXN0IiwiaXNfZmlyc3QiLCJ2dHJpbSQwIiwidnRyaW0kMSIsInZ0cmltJDIiLCJzdWJqZWN0Iiwib2Zmc2V0IiwidmlldyQwIiwieF8wMDIiLCJ4XzAwMyIsImxibCIsInByZWNlZGVuY2VfY29uc3QiLCJwcmVjZWRlbmNlX0FwIiwicHJlY2VkZW5jZV9Qb3dlciIsInByZWNlZGVuY2VfVGltZXMiLCJwcmVjZWRlbmNlX0RpdmlkZSIsInByZWNlZGVuY2VfUGx1cyIsInByZWNlZGVuY2VfTWludXMiLCJwcmVjZWRlbmNlX0NvbnMiLCJwcmVjZWRlbmNlX0VxdWFscyIsInByZWNlZGVuY2VfTGVzc1RoYW4iLCJwcmVjZWRlbmNlX0dyZWF0ZXJUaGFuIiwicHJlY2VkZW5jZV9BbmQiLCJwcmVjZWRlbmNlX09yIiwicHJlY2VkZW5jZV9Db21tYSIsInByZWNlZGVuY2VfbWF4IiwicGFkX2NoaWxkIiwiZW5mb3JjZV9pbmxpbmUiLCJjaGlsZCIsImlubGluZV9jaG9pY2UiLCJwYXJhX2Nob2ljZSIsImRlbGltX3RleHQiLCJlbXB0eV9ob2xlIiwibGlzdF9uaWwiLCJ0cml2Iiwid2lsZCIsIm9wZW5fUGFyZW50aGVzaXplZCIsImNsb3NlX1BhcmVudGhlc2l6ZWQiLCJzeW1fRnVuIiwiY29sb25fRnVuIiwiYXJyb3dfRnVuIiwiZml4X0ZpeEYiLCJhcnJvd19GaXhGIiwiY29sb25fRml4RiIsInByb2plY3Rpb25fZG90Iiwib3Blbl9DYXNlIiwiY2xvc2VfQ2FzZSIsImJhcl9SdWxlIiwiYXJyb3dfUnVsZSIsIm9wZW5fQ2FzdCIsImFycm93X0Nhc3QiLCJjbG9zZV9DYXN0Iiwib3Blbl9GYWlsZWRDYXN0IiwiYXJyb3dfRmFpbGVkQ2FzdCIsImNsb3NlX0ZhaWxlZENhc3QiLCJta19FbXB0eUhvbGUiLCJta19FeHBhbmRpbmdLZXl3b3JkIiwiaGMiLCJta19JbnZhbGlkVGV4dCIsIm1rX1NlcXVlbmNlIiwiZG9jMSIsImRvYzIiLCJta19JbnRMaXQiLCJta19TdHJpbmdMaXQiLCJta19UZXN0IiwibWtfRmxvYXRMaXQiLCJta19Cb29sTGl0IiwibWtfQ29uc3RydWN0b3JMaXQiLCJta19Db25zIiwibWtfTGlzdENvbmNhdCIsIm1rX2NvbW1hX3NlcSIsImxkIiwicmQiLCJta19jb21tYV9zZXFfaW5uZXIiLCJta19MaXN0TGl0IiwibWtfVHVwbGUiLCJlbHRzIiwibWtfQXAiLCJta19QcmoiLCJ0YXJnIiwicHJlY2VkZW5jZSIsImRwIiwicGFyZW50aGVzaXplIiwiZHAkMCIsImkkMCIsInUkMCIsInJlYXNvbiIsImkkMSIsInUkMSIsImkkMiIsInUkMiIsImkkMyIsInUkMyIsImRfbGlzdCIsIm9sIiwiZHAyIiwiZHAxIiwicHJlY2VkZW5jZV9vcCIsImRvYzIkMCIsImRvYzEkMCIsImRzIiwiZHAyJDAiLCJkcDEkMCIsInByZWNlZGVuY2Vfb3AkMCIsIm1rX2RlbGltIiwicGFyZW50aGVzaXplJDAiLCJ0eSQwIiwidHkyIiwidHkxIiwiZDIiLCJkMSIsInN1bV9tYXAiLCJjZW50ZXIiLCJoZWFkIiwiY2VudGVyJDAiLCJ0eSQxIiwiZG9jJDEiLCJkb2MkMCIsInByb21vdGVfYW5ub3QiLCJwcmVjZWRlbmNlX2Jpbl9ib29sX29wIiwicHJlY2VkZW5jZV9iaW5faW50X29wIiwiYmlvIiwicHJlY2VkZW5jZV9iaW5fZmxvYXRfb3AiLCJiZm8iLCJwcmVjZWRlbmNlX2Jpbl9zdHJpbmdfb3AiLCJic28iLCJzaG93X2Nhc3RzIiwicHJlY2VkZW5jZSQwIiwib3AkMCIsIm9wJDEiLCJvcCQyIiwibWtfYmluX2Jvb2xfb3AiLCJta19iaW5faW50X29wIiwibWtfYmluX2Zsb2F0X29wIiwibWtfYmluX3N0cmluZ19vcCIsInNlbGVjdGVkX2hvbGVfaW5zdGFuY2UiLCJwcmV2aW91c19zdGVwIiwiaGlkZGVuX3N0ZXBzIiwiY2hvc2VuX3N0ZXAiLCJuZXh0X3N0ZXBzIiwiZW52IiwicmVjZW50X3N1YnN0IiwicmVjdXJzaXZlX2NhbGxzIiwicHMiLCJwJDAiLCJyZWNlbnRfc3Vic3QkMCIsImdvJDAiLCJjdHgiLCJlbnYkMCIsImVuZm9yY2VfaW5saW5lJDAiLCJzdGgkMSIsInN0aCQyIiwicmVjdXJzaXZlX2NhbGxzJDAiLCJnb19jYXNlIiwiZHNjcnV0IiwiZHJzIiwiY29uc2lzdGVudCIsInNjcnV0X2RvYyIsInJ1bGVfaWR4IiwiZGNsYXVzZSIsImhpZGRlbl9jbGF1c2UiLCJjbGF1c2VfZG9jIiwiZ29fZm9ybWF0dGFibGUiLCJta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzIiwibWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMiLCJpJDQiLCJ1JDQiLCJpJDUiLCJ1JDUiLCJkJDEiLCJkJDIiLCJhY3QiLCJrZXl3b3JkIiwiZmx0X2RvYyIsImFjdCQwIiwia2V5d29yZCQwIiwiZCQzIiwiZGJvZHkiLCJkZGVmIiwiYmluZGluZ3MiLCJkZWZfZG9jIiwiZGJvZHkkMCIsImRvY19ib2R5IiwiZCQ0IiwicyQwIiwiZCQ1IiwiZW52JDEiLCJiaW5kaW5ncyQxIiwiYm9keV9kb2MkMCIsImRib2R5JDEiLCJiaW5kaW5ncyQwIiwiYm9keV9kb2MiLCJkMiQwIiwiZDEkMCIsImRvYzEkNiIsImQkNiIsImlkZW50IiwiZCQ3IiwiZiQwIiwicyQxIiwiZDIkMSIsImQxJDEiLCJkb2MyJDEiLCJkMiQyIiwiZDEkMiIsImRvYzIkMiIsImRvYzEkMSIsImQyJDMiLCJkMSQzIiwiZG9jMiQzIiwiZG9jMSQyIiwiZDIkNCIsImQxJDQiLCJkb2MyJDQiLCJkb2MxJDMiLCJkMiQ1IiwiZDEkNSIsImRvYzIkNSIsImRvYzEkNCIsImQyJDYiLCJkMSQ2IiwiZG9jMiQ2IiwiZG9jMSQ1IiwiZCQ4IiwibmFtZSQxIiwiZHJzJDAiLCJkc2NydXQkMCIsImQkOSIsInR5JDIiLCJkb2MkMiIsImRvYyQzIiwidHkzIiwidHkyJDAiLCJkJDExIiwiZF9kb2MiLCJjYXN0X2RlY29yYXRpb24iLCJkJDEyIiwiZF9kb2MkMCIsImRlY29yYXRpb24iLCJkMiQ3IiwiZDEkNyIsImNfZG9jIiwiZDFfZG9jIiwiZDJfZG9jIiwic3RlcHBhYmxlIiwic3RlcHBlZCIsInN0ZXAiLCJzdWJzdGl0dXRpb24iLCJmdWxsIiwid2l0aF9jbHMiLCJ2aWV3X29mX2xheW91dCIsImluamVjdCIsInJlc3VsdF9rZXkiLCJhbm5vdCIsInR4dCIsIm9iaiIsImRzMiIsInR4dDIiLCJkczEiLCJ0eHQxIiwiZGVjb3JhdGlvbnMiLCJ0ZXh0Iiwic3RoJDMiLCJ0ZXN0X2luc3RhbmNlX3ZpZXciLCJqdW1wX3RvX3Rlc3QiLCJlZmZlY3QxIiwiZWZmZWN0MiIsInJlc3VsdDEiLCJ0ZXN0X3JlcG9ydF92aWV3IiwiZGVzY3JpcHRpb24iLCJpbnN0YW5jZV9yZXBvcnRzIiwidGVzdF9yZXBvcnRzX3ZpZXciLCJ0ZXN0X3Jlc3VsdHMiLCJ0ZXN0X3Jlc3VsdHMkMCIsInRlc3RfYmFyX3NlZ21lbnQiLCJyZXBvcnRzIiwidGVzdF9iYXIiLCJwZXJjZW50X3ZpZXciLCJwZXJjZW50YWdlIiwidGVzdF9wZXJjZW50YWdlIiwidGVzdF90ZXh0IiwidGVzdF9zdW1tYXJ5Iiwidmlld19vZl9tYWluX3RpdGxlX2JhciIsInRpdGxlX3RleHQiLCJpbnNwZWN0b3JfdmlldyIsInRlc3RfbWFwIiwiaW5zdGFuY2VzIiwidGVzdF90cnVlX2V4IiwidGVzdF9mYWxzZV9leCIsImV4cF9ib2R5IiwidGVzdF9leHBfY29sb3JpbmdfaWRzIiwiYm9keV9pZCIsInRlc3RfZXhwIiwidGVzdHMiLCJleHBsYW5hdGlvbiQzIiwiaW50X3R5cCIsImZsb2F0X3R5cCIsImJvb2xfdHlwIiwic3RyX3R5cCIsInZhcl90eXAiLCJmbG9hdCQwIiwiYm9vbCIsInZhciQwIiwiZXhwbGFuYXRpb24kNiIsImV4cGxhbmF0aW9uJDUiLCJleHBsYW5hdGlvbiQ0Iiwid2lsZF9wYXQiLCJpbnRsaXRfcGF0IiwiZmxvYXRsaXRfcGF0IiwiYm9vbGxpdF9wYXQiLCJzdHJsaXRfcGF0IiwidHJpdl9wYXQiLCJ2YXJfcGF0IiwiY3RyX3BhdCIsImludGxpdCIsImZsb2F0bGl0IiwiYm9vbGxpdCIsInN0cmxpdCIsInRyaXZfZXhwIiwidHJpdl9leHBzIiwiYm9vbF9leHAiLCJib29sX2V4cHMiLCJpbnRfZXhwIiwiaW50X2V4cHMiLCJmbG9hdF9leHAiLCJmbG9hdF9leHBzIiwic3RyaW5nX2V4cCIsInN0cmluZ19leHBzIiwidmFyX2V4cCIsInZhcl9leHBzIiwiY3RyX2V4cCIsImRpdmlkZXIiLCJsYWJlbGxlZF9zdW1fdHlwIiwic3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWYiLCJzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGUiLCJsYWJlbGxlZF9zdW1fdHlwcyIsInN1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmcyIsInN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZSQwIiwiaWNvbl9zaXplIiwic2ltcGxlX2ljb24iLCJ0cmFuc2Zvcm0iLCJnZWFyIiwic3RhciIsImJvbWIiLCJ1bmRvIiwicmVkbyIsImNpcmNsZV9xdWVzdGlvbiIsImdpdGh1YiIsImJhY2siLCJmb3J3YXJkIiwiZXllIiwidHJhc2giLCJoYXplbG51dCIsIm1hZ25pZnkiLCJjaGVzdCIsInNwcm91dCIsInNldHRpbmdzX21vZGFsIiwic2V0dGluZyIsImN1cnJlbnQiLCJzdGVwcGVyX3ZpZXciLCJzdGVwcGVyIiwiYnV0dG9uX2JhY2siLCJwcmV2aW91cyIsImhpZGRlbiIsImhpZGVfc3RlcHBlciIsInNob3dfaGlzdG9yeSIsImV2YWxfc2V0dGluZ3MiLCJzdGVwX3dpdGhfcHJldmlvdXMiLCJub2Rlc19wcmV2aW91cyIsImltZyIsInNsaWRlIiwiaGVhZGVyIiwiZW0iLCJnZXRfY29udGVudCIsInNlcV9iYXNpY19leHBfZXgiLCJzZXFfdGVzdF9leHBfZXgiLCJzZXFfZXhwX2NvbG9yaW5nX2lkcyIsInNlcV9leHAiLCJzZXFzIiwiZW1wdHkiLCJmaWxsZWRfc2xpZGVzIiwibnVtX2VtcHR5IiwiaW5pdF9kYXRhIiwic3ZnIiwicmFpc2VkX3NoYWRvd19keCIsInJhaXNlZF9zaGFkb3dfZHkiLCJmemVybyIsInRpcF93aWR0aCIsImNvbmNhdmVfYWRqIiwiY29udmV4X2FkaiIsInNoYWRvd19hZGoiLCJjYXJldF9hZGp1c3QiLCJzaWRlIiwiY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyIsInNob3J0X3RpcF9oZWlnaHQiLCJzdHJldGNoX2R4IiwiZXh0cmFfdGFpbCIsImphZ2dlZF9lZGdlX2giLCJqYWdnZWRfZWRnZV93Iiwic2hvcnRfdGlwX3dpZHRoIiwicG9zX3N0ciIsImZ1ZGdlIiwiY29kZV9zdmdfc2l6ZWQiLCJsYXN0IiwiYmFzZV9jbHMiLCJwYXRoX2NscyIsInRvcCIsImxlZnQiLCJzdHlsZSIsImxlZnRfZnVkZ2UiLCJ0b3BfZnVkZ2UiLCJ3aWR0aF9mdWRnZSIsImhlaWdodF9mdWRnZSIsInN0aCQ0IiwiYWJzX3Bvc2l0aW9uIiwiY29kZV9zdmciLCJzdGgkNSIsInN0aCQ2Iiwic3RoJDciLCJhYnNfcG9zIiwicmFpc2VkX3NoYWRvd19maWx0ZXIiLCJzb3J0Iiwic2hhZG93X2ZpbHRlciIsImZpbHRlcnMiLCJwcF90aXBfc2hhcGUiLCJzaG93X3RpcF9zaGFwZSIsInRpcF9zaGFwZV9vZl9zZXhwIiwic2V4cF9vZl90aXBfc2hhcGUiLCJ0aXBfc2hhcGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3RpcF9zaGFwZSIsInRyX2JsIiwid2l0aF9jaGlsZF9ib3JkZXIiLCJzdHJldGNoX3giLCJzdHJldGNoX3kiLCJqdW5jdGlvbiQwIiwiZGlhZyIsImp1bmN0aW9uJDEiLCJkaWFnJDAiLCJibF90ciIsImhlbWkiLCJ0bF9iciIsImp1bmN0aW9uIiwiYnJfdGwiLCJsZWZ0X3RpcF9wYXRoIiwic194Iiwic195IiwiamFnIiwiYm90dG9tX2hhbGYiLCJ0b3BfaGFsZiIsInJpZ2h0X3RpcF9wYXRoIiwidGlwX2wiLCJ0aXBfciIsIm1vbGQiLCJtZWFzdXJlbWVudCIsImNfY2xzIiwidGlwX3IkMCIsInRpcF9sJDAiLCJpc19jb21wbGV0ZSIsImlzX2NvbnNpc3RlbnQiLCJpc19pbl9idWZmZXIiLCJwbHVyYWxpdHkiLCJsYWJlbCQwIiwib2ZfZGVsaW0iLCJvZl9kZWxpbSQwIiwib2ZfZ3JvdXQiLCJzZWNvbmRhcnlfaWNvbnMiLCJzdHIkMCIsIm9mX3NlY29uZGFyeSIsIm9mX3NlZ21lbnQiLCJidWZmZXJfaWRzIiwibm9fc29ydHMiLCJzZWciLCJleHBlY3RlZF9zb3J0cyIsIm9mX3BpZWNlIiwiZXhwZWN0ZWRfc29ydCIsIm9mX3RpbGUiLCJjaGlsZHJlbl9hbmRfc29ydHMiLCJob2xlcyIsInNpbXBsZV92aWV3IiwiaG9sZXMkMCIsIm9mX2hvbGUiLCJiYWNrcGFja19zZWxfdmlldyIsInhfb2ZmIiwieV9vZmYiLCJvcGFjaXR5IiwiaGVpZ2h0X2hlYWQiLCJjYW5fcHV0X2Rvd24iLCJzaWRlJDAiLCJjYXJldF9hZGoiLCJjYXJldF9hZGpfcHgiLCJtYXhfZGlzcCIsInZlcnRpY2FsX2Rpc3AiLCJzZWxlY3Rpb25zX3N0eWxlIiwic2NhbGVfZm4iLCJpbml0X29wYWNpdHkiLCJpbml0X2lkeCIsImR5X2ZuIiwiYmFzZV9oZWlnaHQiLCJpbml0X3lfb2Zmc2V0IiwidnMiLCJ5X29mZnNldCIsInhfb2Zmc2V0IiwibmV3X3lfb2Zmc2V0IiwibmV3X2lkeCIsIm5ld19vcGFjaXR5Iiwic2VsZWN0aW9ucyIsInNlbGVjdGlvbnNfdmlldyIsImhkJDAiLCJqb2luZXJfc3R5bGUiLCJqb2luZXIiLCJnZW5pZV92aWV3IiwiZ2VuaWVfc3R5bGUiLCJjYXJldF9iZW5kIiwiY2FyZXRfd2lkdGhfc3RyYWlnaHQiLCJjYXJldF93aWR0aF9iZW50IiwiY2FyZXRfcGF0aCIsImNhcmV0X2JlbmRfcGFyYW0iLCJjYXJldF93aWR0aF9wYXJhbSIsImxfYWRqIiwiY2FyZXRfcG9zaXRpb25fcmFkaWkiLCJyX3kiLCJyX3giLCJjaGlsZF9jb2xvcnMiLCJnZXRfY29sb3IiLCJtYXBwaW5nIiwiY29sb3IiLCJjb2xvciQwIiwibWFwcGluZyQwIiwidG9fbGlzdCIsImJhc2VfY2xzJDAiLCJydW4iLCJhZGoiLCJsX2hvb2siLCJyX2hvb2siLCJzaW1wbGVfc2hhcmRfcGF0aCIsInNpbXBsZV9zaGFyZCIsInNoYXBlcyIsInNpbXBsZV9zaGFyZF9zZWxlY3RlZCIsInNpbXBsZV9zaGFyZF9pbmRpY2F0ZWQiLCJoYXNfY2FyZXQiLCJzaW1wbGVfc2hhcmRzX2luZGljYXRlZCIsImNhcmV0Iiwic2hhcmRzIiwic2hhZG93ZnVkZ2UiLCJzaGFyZHNfb2ZfdGlsZXMiLCJ0aWxlcyIsIm0yIiwibTEiLCJiaV9saW5lcyIsInNoYXJkX3Jvd3MiLCJpbnRyYV9saW5lcyIsInJvd19zaGFyZHMiLCJyb3dfc2hhcmRzJDAiLCJvcmlnaW4kMCIsInZfZGVsdGEiLCJpbnRlcl9saW5lcyIsImNsc3MiLCJ1bmlfbGluZXMiLCJtX2ZpcnN0IiwibV9sYXN0X29mX2ZpcnN0IiwibF9saW5lIiwibWF4X2NvbCIsIm1fbGFzdCIsImhvb2siLCJyX2xpbmUiLCJtaW5fY29sIiwic2hhcmRfcm93cyQwIiwibV9mbGFzdCIsImluZGljYXRlZCIsInJhbmdlIiwidGlsZSIsInNlbF9zaGFyZF9zdmciLCJzdGFydF9zaGFwZSIsInNlbF9vZl9waWVjZSIsInNoYXJkX2RhdGEiLCJzZWxfb2ZfdGlsZSIsInciLCJzdGFydF9zaGFwZSQwIiwidGlsZV9zaGFyZHMiLCJzZWxfb2Zfc2VnbWVudCIsImNoaWxkcmVuX3NoYXJkcyIsInNlbGVjdGVkX3BpZWNlcyIsInIyIiwibDEiLCJpbmRpY2F0ZWRfcGllY2VfZGVjbyIsIm5pYiIsInBfciIsInBfbCIsInJhbmdlJDAiLCJ0YXJnZXRzIiwiY29udGFpbmVyX3NoYXJkcyIsImJwIiwic2licyIsInN1ZiIsInNpYnMkMCIsInByb2ZpbGUiLCJyb290X3RhcmdldHMiLCJ0YXJnZXRzJDAiLCJ0ZXJtX2RlY29yYXRpb24iLCJkZWNvIiwicl9lZGdlIiwibF9lZGdlIiwidGVybV9oaWdobGlnaHQiLCJjb2xvcl9oaWdobGlnaHRzIiwiZXJyX2hvbGVzIiwic2VsX3NlZyIsImdldF9nb2FsIiwidGFyZ2V0X2lkIiwiZ29hbF94IiwiZ29hbF95IiwibW91c2Vkb3duX292ZXJsYXkiLCJnb2FsIiwibW91c2Vkb3duX2hhbmRsZXIiLCJtb3VzZWRvd25fdXBkYXRlcyIsImV2ZW50cyIsImdvYWwkMCIsIm5hcnJhdGl2ZV9jZWxsIiwic2ltcGxlX2NlbGxfaXRlbSIsImNhcHRpb24iLCJib2xkZWQiLCJzaW1wbGVfY2VsbF92aWV3IiwiaXRlbXMiLCJ0ZXN0X3N0YXR1c19pY29uX3ZpZXciLCJpbnN0cyIsIm1zIiwidGVzdF9yZXN1bHRfbGF5ZXIiLCJzaG93X2JhY2twYWNrX3RhcmdldHMiLCJoaWdobGlnaHRzIiwidGVybXMiLCJzZWdtZW50IiwidGVybV9yYW5nZXMiLCJkZWNvcyIsImRlY29zJDAiLCJjb2xvck1hcCIsImVycm9yX21zZyIsImVyciQwIiwic3RhdHVzX29mIiwibGl2ZV9ldmFsIiwibG9ja2VkIiwicmVzIiwiZGhleHAiLCJyZXMkMCIsImRoY29kZV92aWV3IiwiZXhuX3ZpZXciLCJmb290ZXIiLCJyZXN1bHQkMCIsImVkaXRvcl92aWV3IiwibW91c2Vkb3duIiwib3ZlcmxheWVyIiwiY29kZV90ZXh0X3ZpZXciLCJkZWNvX3ZpZXciLCJjb2RlX3ZpZXciLCJtb3VzZWRvd24kMCIsIm1vdXNlZG93bl9vdmVybGF5JDAiLCJvbl9tb3VzZWRvd24iLCJyZXBvcnRfZm9vdGVyX3ZpZXciLCJ0ZXN0X3JlcG9ydF9mb290ZXJfdmlldyIsInBhbmVsIiwiY2xhc3NlcyIsInRpdGxlX2NlbGwiLCJ0aXRsZSIsImxvY2tlZF9ub19zdGF0aWNzIiwiZXhwYW5kZXJfZGVjbyIsImVsYWIiLCJmb290ZXIkMCIsImV4cG9ydF9idXR0b24iLCJqc29uX2RhdGEiLCJpbXBvcnRfYnV0dG9uIiwicmVzZXRfYnV0dG9uIiwiY29uZmlybWVkIiwiZXJyb3Jfc291cmNlXzAwNiIsInBwX3RleHRvYmplY3QiLCJzaG93X3RleHRvYmplY3QiLCJ0ZXh0b2JqZWN0X29mX3NleHAiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXhwX29mX3RleHRvYmplY3QiLCJ0ZXh0b2JqZWN0X29mX3lvanNvbiIsInlvanNvbl9vZl90ZXh0b2JqZWN0IiwiZmllbGRfc2V4cHNfMDMxIiwicmVzdWx0XzAzMiIsInRfb2JqZWN0XzAzNCIsImR1cGxpY2F0ZXNfMDM2IiwiZXh0cmFfMDM3Iiwic2V4cF8wMzAkMCIsImZpZWxkX3NleHBzXzA0MCIsImZpZWxkX25hbWVfMDM4IiwiZmllbGRfc2V4cF8wMzkkMiIsImZpZWxkX3NleHBfMDM5IiwiZmllbGRfc2V4cF8wMzkkMCIsImZpZWxkX3NleHBfMDM5JDEiLCJ0X29iamVjdF8wMzUiLCJyZXN1bHRfMDMzIiwidF9vYmplY3RfMDUwIiwicmVzdWx0XzA0OCIsInJlc3VsdF9maWVsZCIsInRfb2JqZWN0X2ZpZWxkIiwidF9vYmplY3RfdmFsdWUiLCJyZXN1bHRfdmFsdWUiLCJ2X3Rfb2JqZWN0Iiwidl9yZXN1bHQiLCJ0X29iamVjdCIsImV4ZWN1dGUiLCJwbGFuIiwiZXhlY3V0ZV9jb21tYW5kIiwiY29tbWFuZCIsIm9jaSIsImVycm9yX3NvdXJjZV8wMTAiLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAzNyIsImVycm9yX3NvdXJjZV8wNjYiLCJwcF9jb3VudCIsInNob3dfY291bnQiLCJjb3VudF9vZl9zZXhwIiwic2V4cF9vZl9jb3VudCIsImNvdW50X29mX3lvanNvbiIsInlvanNvbl9vZl9jb3VudCIsInBwX3RleHRfb2JqZWN0X2tleSIsInNob3dfdGV4dF9vYmplY3Rfa2V5IiwidGV4dF9vYmplY3Rfa2V5X29mX3NleHAiLCJzZXhwXzAwNyIsInNleHBfb2ZfdGV4dF9vYmplY3Rfa2V5IiwidGV4dF9vYmplY3Rfa2V5X29mX3lvanNvbiIsInlvanNvbl9vZl90ZXh0X29iamVjdF9rZXkiLCJwcF9hY3Rpb25fa2V5Iiwic2hvd19hY3Rpb25fa2V5IiwiYWN0aW9uX2tleV9vZl9zZXhwIiwic2V4cF8wMTEiLCJzZXhwX29mX2FjdGlvbl9rZXkiLCJhY3Rpb25fa2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9hY3Rpb25fa2V5IiwicHBfcXVlcnlfZGVjb3JhdGlvbiIsInNob3dfcXVlcnlfZGVjb3JhdGlvbiIsInF1ZXJ5X2RlY29yYXRpb25fb2Zfc2V4cCIsInNleHBfMDE1Iiwic2V4cF9vZl9xdWVyeV9kZWNvcmF0aW9uIiwicXVlcnlfZGVjb3JhdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcXVlcnlfZGVjb3JhdGlvbiIsInBwX3F1ZXJ5X2tleSIsInNob3dfcXVlcnlfa2V5IiwicXVlcnlfa2V5X29mX3NleHAiLCJzZXhwXzAxOSIsInNleHBfb2ZfcXVlcnlfa2V5IiwicXVlcnlfa2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9xdWVyeV9rZXkiLCJwcF9xdWVyeV9vcCIsInNob3dfcXVlcnlfb3AiLCJxdWVyeV9vcF9vZl9zZXhwIiwic2V4cF8wMjUiLCJhcmcxXzAyMiIsInJlczFfMDI0Iiwic2V4cF9vZl9xdWVyeV9vcCIsInF1ZXJ5X29wX29mX3lvanNvbiIsInlvanNvbl9vZl9xdWVyeV9vcCIsInBwX3RleHRfb2JqZWN0Iiwic2hvd190ZXh0X29iamVjdCIsInRleHRfb2JqZWN0X29mX3NleHAiLCJzZXhwXzA0MiIsInRhZ18wNDMiLCJzZXhwX2FyZ3NfMDQ5Iiwic2V4cF9hcmdzXzA0NCIsInJlczBfMDU0Iiwic2V4cF9vZl90ZXh0X29iamVjdCIsInJlczFfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwidGV4dF9vYmplY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3RleHRfb2JqZWN0IiwiYXJnMV8wNjgiLCJyZXMwXzA2OSIsInJlczFfMDcwIiwicHBfY29tbWFuZCIsInNob3dfY29tbWFuZCIsImNvbW1hbmRfb2Zfc2V4cCIsInNleHBfMDc1IiwidGFnXzA3NiIsInNleHBfYXJnc18wODIiLCJyZXMwXzA4NCIsInNleHBfYXJnc18wNzciLCJhcmcwXzA3OCIsInJlczBfMDc5Iiwic2V4cF9vZl9jb21tYW5kIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsInJlczBfMDg4IiwiY29tbWFuZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY29tbWFuZCIsInNpbmdsZSIsImFyZ19pZCIsImZuX2lkIiwiZV9hcmciLCJlX2ZuIiwiZVJSIiwibWVuaGlyX2dvdG9fdGV4dF9vYmplY3QkMCIsIm1lbmhpcl9zdGFjayIsIm1lbmhpcl9sZXhidWYiLCJtZW5oaXJfbGV4ZXIiLCJfMSIsIm1lbmhpcl9zIiwidG9rIiwibWVuaGlyX3N0YWNrJDIiLCJ2XzAkMCIsIm1lbmhpcl9ydW5fMDUiLCJ2XzEkMCIsIm1lbmhpcl9ydW5fMDYiLCJ2XzAiLCJtZW5oaXJfc3RhY2skMCIsInZfMSIsIm1lbmhpcl9zdGFjayQxIiwidl8yIiwidG9rJDAiLCJfMSQwIiwibWVuaGlyX2dvdG9fcXVlcnlfb3AiLCJfMiIsIm1lbmhpcl9zJDAiLCJtZW5oaXJfZ290b190ZXh0X29iamVjdCIsIm1lbmhpcl9ydW5fMDIiLCJtZW5oaXJfcyQxIiwiaW5wdXRGaWVsZF9pZCIsIm91dHB1dEFyZWFfaWQiLCJpbnB1dF92aWV3IiwiaW5wdXQiLCJvdXRwdXRfdmlldyIsImZ1bmFwcF9leHBfZXgiLCJjb25hcHBfZXhwX2V4IiwiZXhwX2Z1biIsImV4cF9hcmciLCJmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsInhfaWQiLCJmdW5hcHBfZXhwIiwiZXhwX2NvbiIsImV4cF9hcmckMCIsImNvbmFwcF9leHBfY29sb3JpbmdfaWRzIiwiY29uYXBwX2V4cCIsImZ1bmFwcyIsImNvbmFwcyIsInBhdF9jb24iLCJwYXRfYXJnIiwiYXBfcGF0X2NvbG9yaW5nX2lkcyIsImNvbl9pZCIsImFwX3BhdCIsImFwIiwidHlwX2FyZyIsInR5cF9vdXQiLCJhcnJvd190eXBfY29sb3JpbmdfaWRzIiwicmVzdWx0X2lkIiwiYXJyb3dfdHlwIiwidHlwX2FyZzEiLCJ0eXBfYXJnMiIsInR5cF9vdXQkMCIsImFycm93M190eXBfY29sb3JpbmdfaWRzIiwiYXJnMV9pZCIsImFyZzJfaWQiLCJhcnJvdzIiLCJhcnJvdzNfdHlwIiwiYXJyb3czIiwiY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlIiwiY2FzZV9leGFtcGxlX3dpbGRfdHVwbGUiLCJjYXNlX2V4YW1wbGVfaW50IiwiY2FzZV9leGFtcGxlX2Jvb2wiLCJleHBfc2NydXQiLCJjYXNlX2V4cF9jb2xvcmluZ19pZHMiLCJzY3J1dF9pZCIsImNhc2UkMCIsImNhc2VfZXhwIiwiY2FzZSQxIiwianVtcF90byIsImNvbnRleHRfZW50cnlfdmlldyIsImRpdl9uYW1lIiwiY3R4X3ZpZXciLCJjdHhfc29ydHNfdmlldyIsImVycmMiLCJva2MiLCJkaXZfZXJyIiwiZGl2X29rIiwiY29kZV9lcnIiLCJleHBsYWluX3RoaXNfdG9nZ2xlIiwic2hvd19leHBsYWluX3RoaXMiLCJ0b2dnbGVfZXhwbGFpbl90aGlzIiwiY2xzX3ZpZXciLCJjdHhfdG9nZ2xlIiwiY29udGV4dF9pbnNwZWN0b3IiLCJ0ZXJtX3ZpZXciLCJlbGVtZW50c19ub3VuIiwiY29tbW9uX2Vycl92aWV3Iiwic3luIiwiYW5hIiwidHlzIiwidG9rZW4iLCJjb21tb25fb2tfdmlldyIsIm9rIiwiYW5hJDIiLCJhbmEkMyIsImFuYSQxIiwic3luJDAiLCJzeW4kMSIsImFuYSQwIiwidHlwX29rX3ZpZXciLCJ0eV9sb29rdXAiLCJ0eXBfZXJyX3ZpZXciLCJleHBfdmlldyIsInBhdF92aWV3IiwidHlwX3ZpZXciLCJ0cGF0X3ZpZXciLCJzZWNvbmRhcnlfdmlldyIsInZpZXdfb2ZfaW5mbyIsIndyYXBwZXIiLCJzdGF0dXNfdmlldyIsInN0YXR1cyQwIiwiY2xzJDAiLCJzdGF0dXMkMSIsImNscyQxIiwic3RhdHVzJDIiLCJjbHMkMiIsImVycmMkMCIsImN1cnNvcl9pbmZvIiwiYmFyX3ZpZXciLCJvcHRpb25fdmlldyIsIm1vZGVfbWVudSIsInNsaWRlX3NlbGVjdCIsImN1cl9zbGlkZSIsIm51bV9zbGlkZXMiLCJuZXh0X2VkIiwicHJldl9lZCIsInNjcmF0Y2hfdmlldyIsImRvY3VtZW50YXRpb25fdmlldyIsImVkaXRvcl9uYW1lcyIsInByZXYkMCIsIm5leHQkMCIsImluc3RydWN0b3JfdG9nZ2xlIiwiZXhlcmNpc2VzX3ZpZXciLCJjdXJfc2xpZGUkMCIsInNjb3JlX3ZpZXciLCJlYXJuZWQiLCJwZXJjZW50YWdlX3ZpZXciLCJ0ZXh0dWFsX3N1bW1hcnkiLCJyZXBvcnQiLCJ0b3RhbF90ZXN0cyIsInJlcXVpcmVkIiwibnVtX3Rlc3RzX21lc3NhZ2UiLCJtYXhfcG9pbnRzIiwic3VtbWFyeV9tZXNzYWdlIiwic2NvcmUiLCJ0b3RhbCIsImZvdW5kIiwiYmFyIiwic3VtbWFyeSIsInN0YXR1c19jbGFzcyIsImluZGl2aWR1YWxfcmVwb3J0IiwiaGludCIsImluZGl2aWR1YWxfcmVwb3J0cyIsImNvdmVyYWdlX3Jlc3VsdHMiLCJpbmRpdmlkdWFsX3JlcG9ydCQwIiwicmVzdWx0X3N0cmluZyIsImluZGl2aWR1YWxfcmVwb3J0cyQwIiwiaGludGVkX3Jlc3VsdHMiLCJ2aWV3JDEiLCJzeW50YXhfcmVwb3J0IiwidGV4dHVhbF9zdW1tYXJ5JDAiLCJpbmRpdmlkdWFsX3JlcG9ydCQxIiwiaW5kaXZpZHVhbF9yZXBvcnRzJDEiLCJ2aWV3JDIiLCJ2aWV3X292ZXJhbGxfc2NvcmUiLCJjb250ZW50X3R5cGUkMSIsImNvbnRlbnRfdHlwZSQwIiwicmVuZGVyX2NlbGxzIiwidmlzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJoaWRkZW5fYnVncyIsImluc3RydWN0b3IiLCJwcmVsdWRlIiwidXNlcl90ZXN0cyIsInVzZXJfaW1wbCIsInRlc3RfdmFsaWRhdGlvbiIsImdyYWRpbmdfcmVwb3J0Iiwic3ViY2FwdGlvbiIsImRpIiwidGhpc19wb3MiLCJ0aXRsZV92aWV3IiwicHJvbXB0X3ZpZXciLCJwcmVsdWRlX3ZpZXciLCJjb3JyZWN0X2ltcGxfdmlldyIsImNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCIsInByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgiLCJwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4JDAiLCJjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgkMCIsInNwZWNpZmljX2N0eCIsInNwZWNpZmljX2N0eCQwIiwiZXhwX2N0eF92aWV3IiwiY29ycmVjdF9pbXBsX2N0eF92aWV3IiwieW91cl90ZXN0c192aWV3IiwiaW1wbCIsIndyb25nX2ltcGxfdmlld3MiLCJtdXRhdGlvbl90ZXN0aW5nX3ZpZXciLCJ5b3VyX2ltcGxfdmlldyIsInN5bnRheF9ncmFkaW5nX3ZpZXciLCJpbXBsX3ZhbGlkYXRpb25fdmlldyIsImhpZGRlbl90ZXN0c192aWV3IiwiaW1wbF9ncmFkaW5nX3ZpZXciLCJpbnN0cnVjdG9yX2V4cG9ydCIsImluc3RydWN0b3JfdHJhbnNpdGlvbmFyeV9leHBvciIsImluc3RydWN0b3JfZ3JhZGluZ19leHBvcnQiLCJkb3dubG9hZF9lZGl0b3Jfc3RhdGUiLCJleHBvcnRfc3VibWlzc2lvbiIsImltcG9ydF9zdWJtaXNzaW9uIiwiZmlsdGVyX3BhdXNlIiwicF9pZCIsImVfYm9keSIsImZpbHRlcl9ldmFsIiwiZmlsdGVyX2hpZGUiLCJmaWx0ZXJfZGVidWciLCJ1bnF1b3RlIiwic2VsX2lkIiwic2VsIiwiZXhwbGFuYXRpb24kNyIsImV4cGxhbmF0aW9uJDgiLCJleHBsYW5hdGlvbiQ5IiwiZXhwbGFuYXRpb24kMTAiLCJleHBsYW5hdGlvbiQxMSIsImV4cGxhbmF0aW9uJDEyIiwiZXhwbGFuYXRpb24kMTMiLCJleHBsYW5hdGlvbiQxNCIsImV4cGxhbmF0aW9uJDE1IiwiZXhwbGFuYXRpb24kMTYiLCJiYXNpY19mdW5fZXgiLCJ3aWxkX2Z1bl9leCIsImludGxpdF9mdW5fZXgiLCJmbG9hdGxpdF9mdW5fZXgiLCJib29sbGl0X2Z1bl9leCIsInN0cmxpdF9mdW5fZXgiLCJ0cml2X2Z1bl9leCIsImxpc3RuaWxfZnVuX2V4IiwibGlzdGxpdF9mdW5fZXgiLCJjb25zX2hkX2Z1bl9leCIsImNvbnNfc25kX2Z1bl9leCIsInZhcl9pbmNyX2Z1bl9leCIsInZhcl9hbmRfZnVuX2V4IiwidHVwbGUyX2Z1bl9leCIsInR1cGxlM19mdW5fZXgiLCJjdHJfZnVuX2V4IiwiYXBfZnVuX2V4IiwicGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nIiwic2ZfcGF0X2lkIiwic2ZfYm9keV9pZCIsImZ1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMiLCJmdW5jdGlvbl9leHAiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cCIsInBhdCQxIiwiZXhwJDEiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cCIsImV4cCQyIiwiZnVuY3Rpb25fd2lsZF9leHBfY29sb3JpbmdfaWRzIiwicGF0JDIiLCJmdW5jdGlvbl93aWxkX2V4cCIsInBhdCQzIiwiZXhwJDMiLCJmdW5jdGlvbl9pbnRsaXRfZXhwX2NvbG9yaW5nX2kiLCJmdW5jdGlvbl9pbnRsaXRfZXhwIiwicGF0JDQiLCJleHAkNCIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZyIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cCIsInBhdCQ1IiwiZXhwJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ18iLCJmb3JtJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cCIsInBhdCQ2IiwiZXhwJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2kiLCJmb3JtJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwIiwicGF0JDciLCJleHAkNyIsImZ1bmN0aW9uX3RyaXZfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kNyIsImZ1bmN0aW9uX3RyaXZfZXhwIiwicGF0JDgiLCJleHAkOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwX2NvbG9yaW5nXyIsImZvcm0kOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwIiwicGF0JDkiLCJleHAkOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nXyIsImZvcm0kOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwIiwicGF0X2hkIiwicGF0X3RsIiwiZXhwJDEwIiwiZnVuY3Rpb25fY29uc19leHBfY29sb3JpbmdfaWRzIiwiaGRfaWQiLCJ0bF9pZCIsImNvbnMiLCJmb3JtJDEwIiwiZnVuY3Rpb25fY29uc19leHAiLCJwYXQkMTAiLCJleHAkMTEiLCJmdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTEiLCJmdW5jdGlvbl92YXJfZXhwIiwiZXhwJDEyIiwiZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkIiwiZm9ybSQxMiIsImZ1bmN0aW9uX3R1cGxlX2V4cCIsImV4cCQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaSIsInBhdDFfaWQiLCJwYXQyX2lkIiwiZm9ybSQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHAiLCJleHAkMTQiLCJmdW5jdGlvbl90dXBsZTNfZXhwX2NvbG9yaW5nX2kiLCJwYXQzX2lkIiwiZm9ybSQxNCIsImZ1bmN0aW9uX3R1cGxlM19leHAiLCJwYXQkMTEiLCJleHAkMTUiLCJmdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTUiLCJmdW5jdGlvbl9jdHJfZXhwIiwiZXhwJDE2IiwiZnVuY3Rpb25fYXBfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTYiLCJmdW5jdGlvbl9hcF9leHAiLCJmdW5jdGlvbnMiLCJmdW5jdGlvbnNfZW1wdHlfaG9sZSIsImZ1bmN0aW9uc19tdWx0aV9ob2xlIiwiZnVuY3Rpb25zX3dpbGQiLCJmdW5jdGlvbnNfaW50IiwiZnVuY3Rpb25zX2Zsb2F0IiwiZnVuY3Rpb25zX2Jvb2wiLCJmdW5jdGlvbnNfc3RyIiwiZnVuY3Rpb25zX3RyaXYiLCJmdW5jdGlvbnNfbGlzdG5pbCIsImZ1bmN0aW9uc19saXN0bGl0IiwiZnVuY3Rpb25zX2NvbnMiLCJmdW5jdGlvbnNfdmFyIiwiZnVuY3Rpb25zX3R1cGxlIiwiZnVuY3Rpb25zX3R1cGxlMiIsImZ1bmN0aW9uc190dXBsZTMiLCJmdW5jdGlvbnNfY3RyIiwiZnVuY3Rpb25zX2FwIiwiZW1wdHlfaG9sZV90ZW1wbGF0ZSIsIm11bHRpX2hvbGVfdGVtcGxhdGUiLCJlbXB0eV9ob2xlX2V4cCIsImVtcHR5X2hvbGVfZXhwcyIsIm11bHRpX2hvbGVfZXhwIiwibXVsdGlfaG9sZV9leHBzIiwiZW1wdHlfaG9sZV9wYXQiLCJtdWx0aV9ob2xlX3BhdCIsIm11bHRpX2hvbGUiLCJlbXB0eV9ob2xlX3RwYXQiLCJlbXB0eV9ob2xlX3RwYXRzIiwibXVsdGlfaG9sZV90cGF0IiwibXVsdGlfaG9sZV90cGF0cyIsImVtcHR5X2hvbGVfdHlwIiwibXVsdGlfaG9sZV90eXAiLCJpZl9iYXNpYzFfZXhwX2V4IiwiaWZfYmFzaWMyX2V4cF9leCIsImV4cF9jb25kIiwiZXhwX3RoZW4iLCJleHBfZWxzZSIsImlmX2V4cF9jb2xvcmluZ19pZHMiLCJjb25kX2lkIiwidGhlbl9pZCIsImVsc2VfaWQiLCJpZl9leHAiLCJpZnMiLCJsZXRfYmFzZV9leCIsImxldF93aWxkX2V4IiwibGV0X2ludF9leCIsImxldF9mbG9hdF9leCIsImxldF9ib29sX2V4IiwibGV0X3N0cl9leCIsImxldF90cml2X2V4IiwibGV0X2xpc3RsaXRfZXgiLCJsZXRfbGlzdG5pbF9leCIsImxldF9jb25zX2hkX2V4IiwibGV0X2NvbnNfc25kX2V4IiwibGV0X3Zhcl9leCIsImxldF90dXBsZTJfZXgiLCJsZXRfdHVwbGUzX2V4IiwibGV0X2N0cl9leCIsImxldF9hcF9leCIsInBhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nXyIsInNmX2RlZl9pZCIsInBhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMiLCJleHBfZGVmIiwibGV0X2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9iYXNlX2V4cCIsImV4cF9kZWYkMCIsImxldF9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZCIsImxldF9lbXB0eV9ob2xlX2V4cCIsImV4cF9kZWYkMSIsImxldF9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZCIsImxldF9tdWx0aV9ob2xlX2V4cCIsImV4cF9kZWYkMiIsImxldF93aWxkX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfd2lsZF9leHAiLCJleHBfZGVmJDMiLCJleHBfYm9keSQwIiwibGV0X2ludF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2ludF9leHAiLCJleHBfZGVmJDQiLCJleHBfYm9keSQxIiwibGV0X2Zsb2F0X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfZmxvYXRfZXhwIiwiZXhwX2RlZiQ1IiwiZXhwX2JvZHkkMiIsImxldF9ib29sX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfYm9vbF9leHAiLCJleHBfZGVmJDYiLCJleHBfYm9keSQzIiwibGV0X3N0cl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3N0cl9leHAiLCJleHBfZGVmJDciLCJleHBfYm9keSQ0IiwibGV0X3RyaXZfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90cml2X2V4cCIsImV4cF9kZWYkOCIsImxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfbGlzdGxpdF9leHAiLCJleHBfZGVmJDkiLCJleHBfYm9keSQ1IiwibGV0X2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9saXN0bmlsX2V4cCIsImV4cF9kZWYkMTAiLCJsZXRfY29uc19leHBfY29sb3JpbmdfaWRzIiwibGV0X2NvbnNfZXhwIiwiZXhwX2RlZiQxMSIsImV4cF9ib2R5JDYiLCJsZXRfdmFyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdmFyX2V4cCIsImV4cF9kZWYkMTIiLCJsZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90dXBsZV9leHAiLCJleHBfZGVmJDEzIiwibGV0X3R1cGxlMl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3R1cGxlMl9leHAiLCJleHBfZGVmJDE0IiwibGV0X3R1cGxlM19leHBfY29sb3JpbmdfaWRzIiwibGV0X3R1cGxlM19leHAiLCJleHBfZGVmJDE1IiwiZXhwX2JvZHkkNyIsImxldF9jdHJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9jdHJfZXhwIiwiZXhwX2RlZiQxNiIsImxldF9hcF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2FwX2V4cCIsImxldHNfZW1wdHlob2xlIiwibGV0c19tdXRsaWhvbGUiLCJsZXRzX3dpbGQiLCJsZXRzX2ludCIsImxldHNfZmxvYXQiLCJsZXRzX2Jvb2wiLCJsZXRzX3N0ciIsImxldHNfdHJpdiIsImxldHNfbGlzdGxpdCIsImxldHNfbGlzdG5pbCIsImxldHNfY29ucyIsImxldHNfdmFyIiwibGV0c190dXBsZSIsImxldHNfdHVwbGUyIiwibGV0c190dXBsZTMiLCJsZXRzX2N0ciIsImxldHNfYXAiLCJpbnRfbGlzdCIsInR1cGxlX2xpc3QiLCJsaXN0X2V4cCIsImNvbnMxX2V4IiwiY29uczJfZXgiLCJleHBfaGQiLCJleHBfdGwiLCJjb25zX2V4cF9jb2xvcmluZ19pZHMiLCJleHBfeHMiLCJleHBfeXMiLCJjb25jYXRfZXhwX2NvbG9yaW5nX2lkcyIsInhzX2lkIiwieXNfaWQiLCJsaXN0bGl0cyIsImxpc3Rjb25zIiwibGlzdGNvbmNhdHMiLCJsaXN0bGl0X3BhdCIsImxpc3RuaWxfcGF0IiwiY29uc19iYXNlX3BhdF9jb2xvcmluZ19pZHMiLCJjb25zX2Jhc2VfcGF0IiwicGF0X2ZzdCIsInBhdF9zbmQiLCJwYXRfdGwkMCIsImNvbnMyX3BhdF9jb2xvcmluZ19pZHMiLCJmc3RfaWQiLCJzbmRfaWQiLCJjb25zMl9wYXQiLCJsaXN0bGl0IiwibGlzdG5pbCIsImNvbnMyIiwidHlwX2VsZW0iLCJsaXN0X3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtX2lkIiwibGlzdF90eXAiLCJsaXN0IiwiZXhwbGFuYXRpb24kMTciLCJleHBsYW5hdGlvbiQxOCIsImV4cGxhbmF0aW9uJDE5IiwiZXhwbGFuYXRpb24kMjAiLCJleHBsYW5hdGlvbiQyMSIsImV4cGxhbmF0aW9uJDIyIiwiZXhwbGFuYXRpb24kMjMiLCJleHBsYW5hdGlvbiQyNCIsImV4cGxhbmF0aW9uJDI1IiwiZXhwbGFuYXRpb24kMjYiLCJpbnRfdW5hcnlfbWludXNfZXgiLCJpbnRfcGx1c19leCIsImludF9taW51c19leCIsImludF90aW1lc19leCIsImludF9wb3dlcl9leCIsImludF9kaXZpZGVfZXgiLCJpbnRfbHQxX2V4IiwiaW50X2x0Ml9leCIsImludF9sdGUxX2V4IiwiaW50X2x0ZTJfZXgiLCJpbnRfbHRlM19leCIsImludF9ndDFfZXgiLCJpbnRfZ3QyX2V4IiwiaW50X2d0ZTFfZXgiLCJpbnRfZ3RlMl9leCIsImludF9ndGUzX2V4IiwiaW50X2VxMV9leCIsImludF9lcTJfZXgiLCJmbG9hdF9wbHVzX2V4IiwiZmxvYXRfbWludXNfZXgiLCJmbG9hdF90aW1lc19leCIsImZsb2F0X3Bvd2VyX2V4IiwiZmxvYXRfZGl2aWRlX2V4IiwiZmxvYXRfbHQxX2V4IiwiZmxvYXRfbHQyX2V4IiwiZmxvYXRfbHRlMV9leCIsImZsb2F0X2x0ZTJfZXgiLCJmbG9hdF9sdGUzX2V4IiwiZmxvYXRfZ3QxX2V4IiwiZmxvYXRfZ3QyX2V4IiwiZmxvYXRfZ3RlMV9leCIsImZsb2F0X2d0ZTJfZXgiLCJmbG9hdF9ndGUzX2V4IiwiZmxvYXRfZXExX2V4IiwiZmxvYXRfZXEyX2V4IiwiYm9vbF9hbmQxX2V4IiwiYm9vbF9hbmQyX2V4IiwiYm9vbF9vcjFfZXgiLCJib29sX29yMl9leCIsInN0cl9lcTFfZXgiLCJzdHJfZXEyX2V4IiwidW5vcF9leHBfY29sb3JpbmdfaWRzIiwic2ZfZXhwX2lkIiwiZXhwX2lkIiwiYm9vbF91bmFyeV9ub3RfZXhwX2NvbG9yaW5nX2lkIiwiYm9vbF91bmFyeV9ub3RfZXhwIiwiaW50X3VuYXJ5X21pbnVzX2V4cF9jb2xvcmluZ19pIiwiaW50X3VuYXJ5X21pbnVzX2V4cCIsImJpbm9wX2V4cF9jb2xvcmluZ19pZHMiLCJzZl9sZWZ0X2lkIiwic2ZfcmlnaHRfaWQiLCJsZWZ0X2lkIiwicmlnaHRfaWQiLCJpbnRfcGx1c19leHBfY29sb3JpbmdfaWRzIiwiaW50X3BsdXNfZXhwIiwiaW50X21pbnVzX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbWludXNfZXhwIiwiZXhwMSQxIiwiZXhwMiQxIiwiaW50X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfdGltZXNfZXhwIiwiaW50X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfcG93ZXJfZXhwIiwiZXhwMSQyIiwiZXhwMiQyIiwiaW50X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2RpdmlkZV9leHAiLCJleHAxJDMiLCJleHAyJDMiLCJpbnRfbHRfZXhwX2NvbG9yaW5nX2lkcyIsImludF9sdF9leHAiLCJleHAxJDQiLCJleHAyJDQiLCJpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbHRlX2V4cCIsImV4cDEkNSIsImV4cDIkNSIsImludF9ndF9leHBfY29sb3JpbmdfaWRzIiwiaW50X2d0X2V4cCIsImV4cDEkNiIsImV4cDIkNiIsImludF9ndGVfZXhwX2NvbG9yaW5nX2lkcyIsImludF9ndGVfZXhwIiwiZXhwMSQ3IiwiZXhwMiQ3IiwiaW50X2VxX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZXFfZXhwIiwiZXhwMSQ4IiwiZXhwMiQ4IiwiaW50X25lcV9leHBfY29sb3JpbmdfaWRzIiwiaW50X25lcV9leHAiLCJleHAxJDkiLCJleHAyJDkiLCJmbG9hdF9wbHVzX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9wbHVzX2V4cCIsImV4cDEkMTAiLCJleHAyJDEwIiwiZmxvYXRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X21pbnVzX2V4cCIsImV4cDEkMTEiLCJleHAyJDExIiwiZmxvYXRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X3RpbWVzX2V4cCIsImZsb2F0X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9wb3dlcl9leHAiLCJleHAxJDEyIiwiZXhwMiQxMiIsImZsb2F0X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZGl2aWRlX2V4cCIsImV4cDEkMTMiLCJleHAyJDEzIiwiZmxvYXRfbHRfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2x0X2V4cCIsImV4cDEkMTQiLCJleHAyJDE0IiwiZmxvYXRfbHRlX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9sdGVfZXhwIiwiZXhwMSQxNSIsImV4cDIkMTUiLCJmbG9hdF9ndF9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZ3RfZXhwIiwiZXhwMSQxNiIsImV4cDIkMTYiLCJmbG9hdF9ndGVfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2d0ZV9leHAiLCJleHAxJDE3IiwiZXhwMiQxNyIsImZsb2F0X2VxX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9lcV9leHAiLCJleHAxJDE4IiwiZXhwMiQxOCIsImZsb2F0X25lcV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbmVxX2V4cCIsImV4cDEkMTkiLCJleHAyJDE5IiwiYm9vbF9hbmRfZXhwX2NvbG9yaW5nX2lkcyIsImJvb2xfYW5kX2V4cCIsImV4cDEkMjAiLCJleHAyJDIwIiwiYm9vbF9vcl9leHBfY29sb3JpbmdfaWRzIiwiYm9vbF9vcl9leHAiLCJleHAxJDIxIiwiZXhwMiQyMSIsInN0cl9lcV9leHBfY29sb3JpbmdfaWRzIiwic3RyX2VxX2V4cCIsImV4cDEkMjIiLCJleHAyJDIyIiwic3RyX2NvbmNhdF9leHBfY29sb3JpbmdfaWRzIiwic3RyX2NvbmNhdF9leHAiLCJib29sX3VuX25vdCIsImludF91bl9taW51cyIsImludF9wbHVzIiwiaW50X21pbnVzIiwiaW50X3RpbWVzIiwiaW50X3Bvd2VyIiwiaW50X2RpdmlkZSIsImludF9sZXNzX3RoYW4iLCJpbnRfbGVzc190aGFuX2VxdWFsIiwiaW50X2dyZWF0ZXJfdGhhbiIsImludF9ncmVhdGVyX3RoYW5fZXF1YWwiLCJpbnRfZXF1YWwiLCJpbnRfbm90X2VxdWFsIiwiZmxvYXRfcGx1cyIsImZsb2F0X21pbnVzIiwiZmxvYXRfdGltZXMiLCJmbG9hdF9wb3dlciIsImZsb2F0X2RpdmlkZSIsImZsb2F0X2xlc3NfdGhhbiIsImZsb2F0X2xlc3NfdGhhbl9lcXVhbCIsImZsb2F0X2dyZWF0ZXJfdGhhbiIsImZsb2F0X2dyZWF0ZXJfdGhhbl9lcXVhbCIsImZsb2F0X2VxdWFsIiwiZmxvYXRfbm90X2VxdWFsIiwiYm9vbF9hbmQiLCJib29sX29yIiwic3RyaW5nX2VxdWFsIiwic3RyaW5nX2NvbmNhdCIsImZlZWRiYWNrX3ZpZXciLCJ1cF9hY3RpdmUiLCJ1cF9hY3Rpb24iLCJkb3duX2FjdGl2ZSIsImRvd25fYWN0aW9uIiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfdmlldyIsImV4YW1wbGVfZmVlZGJhY2tfdmlldyIsImNvZGVfbm9kZSIsImluamVjdCQwIiwiYXR0ciIsIm1rX3RyYW5zbGF0aW9uIiwib21kIiwiZWxlbSIsIm5vZGVzIiwibWFwcGluZyQxIiwiYnVsbGV0cyIsIm1hcHBpbmckMiIsIm1hcHBpbmckMyIsImlubmVyX21zZyIsIm1rX2V4cGxhbmF0aW9uIiwiY29sb3JfbWFwIiwiZG9jcyIsIm9wdGlvbnMiLCJleHBhbmRhYmxlIiwic3BlY2lmaWNpdHlfcG9zIiwic3BlY2lmaWNpdHlfc3R5bGUiLCJnZXRfY2xzcyIsInVwZGF0ZV9ncm91cF9zZWxlY3Rpb24iLCJzcGVjaWZpY2l0eV9tZW51IiwiZXhwYW5kX2Fycm93X3N0eWxlIiwiZXhwYW5kX2Fycm93IiwiZXhwYW5kYWJsZV9kZWNvIiwiZXhhbXBsZV92aWV3Iiwic3ViX2lkIiwiYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0IiwiYnlwYXNzX3BhcmVuc19wYXQiLCJieXBhc3NfcGFyZW5zX2V4cCIsImJ5cGFzc19wYXJlbnNfdHlwIiwidHlwJDEiLCJwcF9tZXNzYWdlX21vZGUiLCJzaG93X21lc3NhZ2VfbW9kZSIsIm1lc3NhZ2VfbW9kZV9vZl9zZXhwIiwic2V4cF9vZl9tZXNzYWdlX21vZGUiLCJhcmcyXzAxNiIsImFyZzFfMDE1IiwicmVzMl8wMTkiLCJtZXNzYWdlX21vZGVfb2ZfeW9qc29uIiwieW9qc29uX29mX21lc3NhZ2VfbW9kZSIsImdldF9kb2MiLCJzaW1wbGUiLCJnZXRfc3BlY2lmaWNpdHlfbGV2ZWwiLCJnZXRfbWVzc2FnZSIsImZvcm1hdCIsImV4cGxhbmF0aW9uX21zZyIsImNvbG9yX21hcCQwIiwiY29kZV9pZCIsInN5bnRhY3RpY19mb3JtX2lkIiwiZXhwYW5kZXJfZGVjbyQwIiwic3ludGFjdGljX2Zvcm1fdmlldyIsImV4YW1wbGVfdmlldyQwIiwibWVzc2FnZV9zaW5nbGUiLCJnZXRfbWVzc2FnZV9leHAiLCJib2R5IiwiYmFzaWMiLCJlbGVtZW50cyIsInBhdF9pZCQwIiwiYm9keV9pZCQwIiwiZWxlbWVudHMkMCIsInBhdF9pZCQxIiwiYm9keV9pZCQxIiwiYmFzaWNfdHVwbGUiLCJkb2NfaWQiLCJkb2NfaWQkMCIsInBhdDFfaWQkMCIsInBhdDJfaWQkMCIsImNvbiIsInRlcm1zJDAiLCJiYXNpYyQwIiwiZXhwMV9pZCQwIiwiZXhwMl9pZCQwIiwiYm9keSQwIiwiZGVmIiwicGF0X2lkJDIiLCJib2R5X2lkJDIiLCJiYXNpYyQxIiwiZiQxIiwiZWxlbWVudHMkMSIsInYkMSIsInRsJDAiLCJoZF9pZCQwIiwidGxfaWQkMCIsInZhciQxIiwiZWxlbWVudHMkMiIsImJhc2ljX3R1cGxlJDAiLCJkb2NfaWQkMSIsInBhdDFfaWQkMSIsInBhdDJfaWQkMSIsImRvY19pZCQyIiwicGF0MV9pZCQyIiwicGF0Ml9pZCQyIiwicGF0M19pZCQwIiwiY29uJDAiLCJjb25faWQkMCIsImFyZ19pZCQwIiwidHlfZGVmIiwidHlfcGF0IiwiZGVmX2lkJDAiLCJhcmdfaWQkMSIsImJhc2ljJDIiLCJjb2xvcmluZ19pZHMiLCJ2JDIiLCJmbiIsImVsc2UkMCIsInRoZW4iLCJjb25kIiwicmlnaHQiLCJleHAxX2lkJDEiLCJleHAyX2lkJDEiLCJib2R5JDEiLCJib2R5X2lkJDMiLCJib2R5JDIiLCJib2R5JDMiLCJib2R5JDQiLCJib2R5JDUiLCJ0ZXJtJDEiLCJ0ZXJtJDIiLCJ0bCQxIiwiaGQkMSIsImhkX2lkJDEiLCJ0bF9pZCQxIiwieHMiLCJleHBfaWQkMCIsInJpZ2h0JDAiLCJsZWZ0JDAiLCJjb2xvcmluZ19pZHMkMCIsInNjcnV0IiwidGwyIiwiaGQyIiwiaGQyX2lkIiwidGwyX2lkIiwiZWxlbTFfaWQkMCIsImVsZW0yX2lkJDAiLCJyZXN1bHQyIiwiYXJnMiIsInJlc3VsdDJfaWQiLCJlbGVtMV9pZCQxIiwiZWxlbTJfaWQkMSIsImVsZW0xX2lkJDIiLCJlbGVtMl9pZCQyIiwiZWxlbTNfaWQkMCIsImMkMSIsImluZm8kMCIsInNlY3Rpb24iLCJzZWN0aW9uX2Nsc3MiLCJnZXRfY29sb3JfbWFwIiwic3luX2Zvcm0iLCJpc19tYWMiLCJwcF9kaXIiLCJzaG93X2RpciIsImRpcl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZGlyIiwicHBfa2V5Iiwic2hvd19rZXkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsInBwX3N5cyIsInNob3dfc3lzIiwic3lzX29mX3lvanNvbiIsInlvanNvbl9vZl9zeXMiLCJwcF9oZWxkIiwic2hvd19oZWxkIiwiaGVsZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfaGVsZCIsImtleV9maWVsZCIsInN5c19maWVsZCIsInNoaWZ0X2ZpZWxkIiwibWV0YV9maWVsZCIsImN0cmxfZmllbGQiLCJhbHRfZmllbGQiLCJhbHRfdmFsdWUiLCJjdHJsX3ZhbHVlIiwibWV0YV92YWx1ZSIsInNoaWZ0X3ZhbHVlIiwic3lzX3ZhbHVlIiwia2V5X3ZhbHVlIiwidl9hbHQiLCJ2X2N0cmwiLCJ2X21ldGEiLCJ2X3NoaWZ0Iiwidl9zeXMiLCJ2X2tleSIsImtleV9vZiIsImRpciIsInRvX2hlbGQiLCJtb2RpZmllcl9zdHJpbmciLCJtb2RpZmllcnNfc3RyaW5nIiwia2V5X2Rpcl9zdHJpbmciLCJpc19kaWdpdCIsImlzX2Zfa2V5IiwiaGFuZGxlX2tleV9ldmVudCIsIm5vdyIsInNoaWZ0IiwicmVzZXRfaGF6ZWwiLCJyZXBhcnNlIiwic2V0dGluZ3NfbWVudSIsImJlbmNobWFyayIsImNvcmUiLCJleHBvcnRfbWVudSIsInNsaWRlX2lkeCIsInN0YXRlJDAiLCJpbXBvcnRfbWVudSIsInN1Ym1lbnUiLCJtZW51IiwiaGFuZGxlcnMiLCJnZXRfc2VsZWN0aW9uIiwia2V5X2hhbmRsZXIiLCJwYXN0ZWRfdGV4dCIsIm1haW5fdmlldyIsInN0YXRpY3MkMCIsInRvcF9iYXIiLCJib3R0b21fYmFyIiwiYTExeV9iYXIiLCJzaWRlYmFyIiwiZWRpdG9yc192aWV3IiwicmVzdWx0X2tleSQwIiwibWVtb2l6ZSIsInRhYmxlIiwib2NhbWxfbGV4X3RhYmxlcyIsInRva2VuJDAiLCJsZXhidWYiLCJvY2FtbF9sZXhfdG9rZW5fcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3Rva2VuX3JlYyIsInBwX3JlYXNvbiIsInNob3dfcmVhc29uIiwicmVhc29uX29mX3NleHAiLCJzZXhwX29mX3JlYXNvbiIsImFyZzBfMDEwIiwicmVhc29uX29mX3lvanNvbiIsInlvanNvbl9vZl9yZWFzb24iLCJmaWVsZF9zZXhwc18wMTQiLCJyZWFzb25fMDE1IiwicHJpb3JfYXR0ZW1wdHNfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZpZWxkX3NleHBfMDIyJDEiLCJwcmlvcl9hdHRlbXB0c18wMTgiLCJyZWFzb25fMDE2IiwicHJpb3JfYXR0ZW1wdHNfMDMzIiwicmVhc29uXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwicmVhc29uX2ZpZWxkIiwicHJpb3JfYXR0ZW1wdHNfZmllbGQiLCJwcmlvcl9hdHRlbXB0c192YWx1ZSIsInJlYXNvbl92YWx1ZSIsInZfcHJpb3JfYXR0ZW1wdHMiLCJ2X3JlYXNvbiIsInByaW9yX2F0dGVtcHRzIiwicmVwbGFjZV9vcl9pbmNyZW1lbnRfYXR0ZW1wdHMiLCJmYWlsZWRfaW5wdXQiLCJidG4iLCJvbl9zdGFydHVwIiwiY3JlYXRlIiwiY29sb25fTGFtIiwib3Blbl9MYW0iLCJjbG9zZV9MYW0iLCJvcGVuX0ZpeEYiLCJjbG9zZV9GaXhGIiwibWtfS2V5d29yZCIsIm1rX1BhaXIiLCJmc3RyIiwiY3giLCJjeSIsInN0cm9rZV93aWR0aCIsInZlY3Rvcl9lZmZlY3QiLCJmaWx0ZXIiLCJzdG9wX2NvbG9yIiwic3RvcF9vcGFjaXR5IiwiaWQiLCJzY3JvbGxfdG9fY2FyZXQiLCJlZGl0X2FjdGlvbl9hcHBsaWVkIiwibGFzdF9lZGl0X2FjdGlvbiIsIm9uX3N0YXJ0dXAiLCJzY2hlZHVsZV9hY3Rpb24iLCJtIiwiZW50cmllcyIsImZtIiwic3RhdGUiLCJjcmVhdGUiLCJtb2RlbCIsImluamVjdCIsImFjdGlvbiIsIm5ld19tb2RlbCIsImV4YyQwIiwiZXhjIiwibW9kZWwkMCIsImVyciIsImVyciQwIl0sInNvdXJjZXMiOlsiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyZnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbGRvbS5jb21waWxlZC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5qcyIsIi9idWlsdGluLytpbnQ2NC5qcyIsIi9idWlsdGluLyttbEJ5dGVzLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2J1aWx0aW4vK2ZzLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX2JpZ3N0cmluZy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2ludHMuanMiLCIvYnVpbHRpbi8raGFzaC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jhc2VfaW50ZXJuYWxoYXNoX3R5cGVzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb2xsZWN0b3IvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcnVudGltZS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLyt6c3RkLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29qcy9vanNfcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90aW1lX25vdy9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGRsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N5cy5tbC5pbiIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZmlsZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL291dF9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG9seTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbXBvcnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9jb21wYXJlX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9oYXNoX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS93b3JkX3NpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcmV0dHlfcHJpbnRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3dpdGhfcmV0dXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbW9uYWRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21vbmFkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXBwbGljYXRpdmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb21wYXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZWl0aGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ZpZWxkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RyaW5nMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29udGFpbmVyX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yZGVyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2luZm8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2lnbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb21wYXJhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaGFibGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2lkZW50aWZpYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2luZGV4ZWRfY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29ial9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VuaWZvcm1fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHB4X2VudW1lcmF0ZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaHRibF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXZsdHJlZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNoX3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmFja3RyYWNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmFzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL3N0ZGxpYjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9wcHJpbnRhc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9zZXhwX2NvbnYvcnVudGltZS1saWIvcHB4X3NleHBfY29udl9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2VudW1lcmF0ZS9ydW50aW1lLWxpYi9wcHhfZW51bWVyYXRlX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfYXNzZXJ0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2JlbmNoL3J1bnRpbWUtbGliL2JlbmNobWFya19hY2N1bXVsYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21kNS9tZDVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3NoYXBlL2Jpbl9zaGFwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X21vZHVsZV90aW1lci9ydW50aW1lL3BweF9tb2R1bGVfdGltZXJfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfZXF1YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3ZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvc3RkX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZXJlcF9vYmoubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWNfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfZ2VuZXJpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL21ha2VfdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2Fic3RyYWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29tbW9uL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9leHBlY3RhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9leHBlY3RfdGVzdF9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb25maWdfdHlwZXMvZXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb25maWdfdHlwZXMvZXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb2xsZWN0b3IvZXhwZWN0X3Rlc3RfY29sbGVjdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29uZmlnL2V4cGVjdF90ZXN0X2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3Bvc2l0aW9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcGFyc2VfZXJyb3JfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX2FjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL29sZF9wYXJzZXJfY29udF9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl90YWJsZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9vZl9zZXhwX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvY29udl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc3JjX3Bvcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3R5cGVfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXJzZXJfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3ByZV9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc2V4cF93aXRoX2xheW91dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zdGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zZXhwX2dyYW1tYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvZXhuX21hZ2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NwbGl0dGFibGVfcmFuZG9tL3NwbGl0dGFibGVfcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svYmlnYXJyYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svb2JzZXJ2ZXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9nZW5lcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50NjQubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9zaHJpbmtlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL2Jhc2VfcXVpY2tjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbnRfcmVwci9pbnRfcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX2JpZ3N0cmluZy9iYXNlX2JpZ3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jhc2VfZm9yX3Rlc3RzL3Rlc3RfYmxpdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jhc2VfZm9yX3Rlc3RzL3Rlc3RfYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGFibGVfdW5pdF90ZXN0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZXByZWNhdGVfcGlwZV9iYW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saXN0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1aWNrY2hlY2thYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQ2My5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RkX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZV91bml0czAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb3JlX2Jpbl9wcm90Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWQ1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmluYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3pvbmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS92YWxpZGF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bml0X29mX3RpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bmlxdWVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90eXBlX2ltbWVkaWFjeS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3R1cGxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF5X29mX3dlZWsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kaWdpdF9zdHJpbmdfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21vbnRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF0ZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcGVyY2VudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5faGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5fZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lX2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWVfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kYXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Bhbl9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29mZGF5X25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdGltZV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21ha2Vfc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYXJnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZF9lbnZfdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmlsZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21tYW5kX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3BpZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZkZXF1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oZWFwX2Jsb2NrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYWtlX3N0YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbl9vcl9uYW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29wdGlvbl9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xhenkubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbm9fcG9seW1vcnBoaWNfY29tcGFyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21lbW8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saW5rZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZXJpdmluZ19oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvcmVfc3lzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmFnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnYnVmZmVyX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZXMubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYm91bmRlZF9pbmRleC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc190b2tlbml6ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX2dlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vanMvb2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29qcy9vanNfZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2RvbV9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9lZmZlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vaG9va3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vanNfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9hdHRyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2dsb2JhbF9saXN0ZW5lcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vbm9kZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS92ZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxfZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV90eXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3R1cGxlX3Bvb2wvdHVwbGVfcG9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90aW1pbmdfd2hlZWwvdGltaW5nX3doZWVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9jb25maWcvYXN5bmNfa2VybmVsX2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9tb3B0aW9uL21vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvcGFpcmluZ19oZWFwL3BhaXJpbmdfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9zZXhwX2hpZGRlbl9pbl90ZXN0L3NleHBfaGlkZGVuX2luX3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdW9wdC91b3B0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3RocmVhZF9zYWZlX3F1ZXVlL3RocmVhZF9zYWZlX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aW1lX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9wcmlvcml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9leGVjdXRpb25fY29udGV4dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZXh0ZXJuYWxfam9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2JfcG9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2Jfb3JfZXZlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zY2hlZHVsZXIxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25hZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWQxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zdGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2l2YXJfZmlsbGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90YWlsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25pdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2J2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY3ljbGVfaG9vay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsX3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY2xvY2tfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY2xvY2tfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9saXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX21lbW8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9waXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9sYXp5X2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19jb25kaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19pbnZhcmlhbnRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19rZXJuZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3Byb3RvY29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfbWFwL2luY3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3Jfc2VsZWN0L2luY3Jfc2VsZWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL2phdmFzY3JpcHRfcHJvZmlsaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3Zkb21fZmlsZV9kb3dubG9hZC92ZG9tX2ZpbGVfZG93bmxvYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vdWlfaW5jci91aV9pbmNyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2NvbXBvbmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9hcHBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9qc19taXNjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3N0YXJ0X2FwcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9pbnB1dF93aWRnZXRzL3Zkb21faW5wdXRfd2lkZ2V0cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wdG1hcC9wdG1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi95b2pzb24vY29kZWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIveW9qc29uL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi95b2pzb24vbGV4ZXJfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udl9saWIvcHB4X3lvanNvbl9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZGVyaXZpbmcvcnVudGltZS9wcHhfZGVyaXZpbmdfcnVudGltZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9XZWIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvVHVwbGVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1RpbWVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1N0cmluZ1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTW9uYWRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1N0YXRlTW9uYWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1BhaXJVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL09wdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTWFwVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9EaXJlY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTGlzdEZyYW1lLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0ludFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvSW50TWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0VpdGhlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9BYmEucmUiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY2F0ZWdvcnkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZm10Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NzZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcG1hcmsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvYXV0b21hdGEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY29sb3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2dyb3VwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZW1hY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvc3RyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2dsb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcGVybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9wY3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3Bvc2l4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRPdmVyU3RvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1VuaW9uRmluZEJhc2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9TdG9yZU1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlVHJhbnNhY3Rpb25hbFJlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVWZWN0b3IubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9JZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvUHJlY2VkZW5jZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvU29ydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL0dyb3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvVG9rZW4ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9MYWJlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9Nb2xkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Gb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvU2Vjb25kYXJ5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vRWZmZWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Nb2xkcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1RpbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9QaWVjZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1NrZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9TZWdtZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1NpYmxpbmdzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9ycy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9UaW1lLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1RvdWNoZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9Vbmljb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvTWVhc3VyZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvU2VsZWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0JhY2twYWNrLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1JlbGF0aXZlcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9aaXBwZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9WYXJNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FeHBhbmRpbmdLZXl3b3JkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvTWV0YVZhci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckVyclN0YXR1cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvQ29uc3RydWN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvbnN0cnVjdG9yTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UeXBWYXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1Zhci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVHlwQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckN0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckJzdE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0VyclN0YXR1cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL01ldGFWYXJJbnN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvREhQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9GaWx0ZXJBY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9Ib2xlSW5zdGFuY2VJZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ludmFsaWRPcGVyYXRpb25FcnJvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0tleXdvcmRJRC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1N0cnVjdHVyZVNoYXJlU2V4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVGVybUJhc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9ESC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvckVycm9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvQnVpbHRpbnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL0NvcmVTZXR0aW5ncy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWxDdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9QYXR0ZXJuTWF0Y2gucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UZXN0U3RhdHVzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVGVzdE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1RyYW5zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9WYWx1ZUNoZWNrZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50RXhwYW5kZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvQ3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9Nb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9TZWxmLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UZXJtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9JbmZvLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L1N1Z2dlc3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50Q3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L0Fzc2lzdGFudEZvcm1zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRGVsdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UZXJtUmFuZ2VzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9TdGF0aWNzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvU3Vic3RpdHV0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRWxhYm9yYXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclN0YXRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yU3RhdGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL0luZGljYXRlZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1Rlcm1NYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UaWxlTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9NYWtlVGVybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvUHJvZ3JhbVJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvSW50ZXJmYWNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L1R5RGkucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UZXN0UmVzdWx0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclN0ZXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9GaWx0ZXJNYXRjaGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvU3RlcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vQWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0VkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vTW92ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vU2VsZWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9EZXN0cnVjdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vSW5zZXJ0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9QZXJmb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1ByaW50ZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvUGVyc2lzdGVudFppcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9PcmllbnRhdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvTW9kZWxSZXN1bHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL01vZGVsUmVzdWx0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0hvbGVJbnN0YW5jZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0luc3RhbmNlUGF0aC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0lualNpZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvSW5jb21wbGV0ZUJpZGVsaW0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9Ib2xlSW5zdGFuY2VQYXJlbnRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvSG9sZUluc3RhbmNlSW5mby5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0hvbGVJbnN0YW5jZUluZm9fLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yUG9zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL0NvZGVTdHJpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvRWRpdG9yVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvQ2FjaGVkU3RhdGljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Qb3NNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9NZWFzdXJlZFBvc2l0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGlzdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9NZWFzdXJlZExheW91dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0Nvc3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Eb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXRPZkRvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0JveC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvU3ludGF4VGVzdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvRXhlcmNpc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0dyYWRpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0dyYWRlUHJlbHVkZS5yZSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfcmVwcmVzZW50YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9iYWNrZW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9sZXhlcl9mcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Xb3JrZXJTZXJ2ZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV29ya2VyQ2xpZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1dpZGdldHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV2Vha01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhhbXBsZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhwbGFpblRoaXNGb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1ZhclRQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9BY2Nlc3NpYmlsaXR5TW9kZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X09kZGx5UmVjdXJzaXZlX3Byb21wdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhlcmNpc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9PZGRseVJlY3Vyc2l2ZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X1JlY3Vyc2l2ZUZpYm9uYWNjaV9wcm9tcHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9SZWN1cnNpdmVGaWJvbmFjY2kubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlU2V0dGluZ3NfYmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhwbGFpblRoaXNNb2RlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU2V0dGluZ3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvUGVyc2lzdGVudERhdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0VkaXRvcnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Gb250TWV0cmljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Kc1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVHlwZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9LaW5kLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TdG9yZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvTW9kZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9RdWVyeS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlQWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2Fzc2lzdGFudC9VcGRhdGVBc3Npc3RhbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0JlbmNobWFyay5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRGVidWdDb25zb2xlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Mb2cucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4cG9ydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9hMTF5L1F1ZXJ5Q29tbWFuZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9hMTF5L1F1ZXJ5UGFyc2VyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TdGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHlwQW5uUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R5QWxpYXNFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESEFubm90LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1NlZ21lbnRUcmVlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1N2Z1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL0RlY29yYXRpb25fY29tbW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19jb21tb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19QYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9IVHlwRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2NfVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2NfRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhMYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESE1lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9ESENvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVGVzdFZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVGVzdEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9TdW1UeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvSWNvbnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvU3RlcHBlclZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NsaWRlQ29udGVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9TZXFFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZXNJbml0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL05vZGVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9EZWNVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9EaWFnLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9FbXB0eUhvbGVEZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQ29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9CYWNrcGFja1ZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0NhcmV0RGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9DYXJldFBvc0RlYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvQ29sb3JTdGVwcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvUGllY2VEZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRGVjby5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9DZWxsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1NjcmF0Y2hNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvUXVlcnlFbmdpbmUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvUXVlcnlBc3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvUGlwZWxpbmVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHkiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYTExeS9BY2Nlc3NpYmlsaXR5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0FwcEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9BcHBQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQXJyb3dUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQ2FzZUV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9DdHhJbnNwZWN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQ3Vyc29ySW5zcGVjdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0VkaXRvck1vZGVWaWV3LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9HcmFkaW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0V4ZXJjaXNlTW9kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9GaWx0ZXJFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRnVuY3Rpb25FeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVRlbXBsYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlVFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0lmRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xldEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MaXN0RXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xpc3RQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvTGlzdFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9PcEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9FeHBsYWluVGhpcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9Gb250U3BlY2ltZW4ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL09zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL0tleS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvS2V5Ym9hcmQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvTnV0TWVudS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9QYWdlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL01lbW8ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0xvZ0VudHJ5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRmFpbGVkSW5wdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRGVidWdNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhEb2NfVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0JsYW5rVGVtcGxhdGUubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvQXR0clV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL01haW4ucmUiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBLEM7O0c7OztRO1M7OztHO0k7STtJO0c7RTs7OztHQVdDLENBQUM7TUFFRTtPQUFJQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkFDLHNCQUFzQkMsU0FBU0Y7T0FDL0JHLG9CQUFvQkM7T0FDcEJDO01BR0osR0FBSUYsV0FBWTtPQUNaRSxZQUFZRCxpQkFBaUJFO09BQzdCRCxxQkFBcUJFO09BQ3JCLEdBQUdDLG1CQUFtQkEsNkJBQTZCRjs7VUFHbEQ7T0FFREQ7UUFBWUcscUJBQXNCLFdBQWEsT0FBT0MsUUFBUSxJQUFHQyxjQUEvQjtPQUNsQ0wscUJBQXFCQzs7TUFJekI7T0FBSUssV0FBV1I7T0FDWFM7TUFDSixTQUFTQyxtQkFBbUJDLE1BQU1DO09BQzlCLEtBQUtILHFCQUFxQkUsTUFBTztRQUM3QjtpQkFBV0Usa0NBQWtDQTtTQUN6Q0E7MEJBQTRCRjs7O2FBQTZFQzs7UUFFN0dILHFCQUFxQkU7O01BRTdCO01BRUFULHVCQUF1Qlk7TUFDdkJaLHdCQUF3QmE7TUFDeEJiLDhCQUE4QmM7TUFHOUIsU0FBU0MsY0FBY0M7T0FDbkJBLGNBQWNwQiw4QkFBOEJBO09BQzVDb0IsY0FBY3BCLDhCQUE4QkE7T0FDNUNvQixTQUFTcEIseUJBQXlCQTtNQUN0QztNQUVBbUIsY0FBY2Q7TUFDZCxTQUFTQSxnQkFBZ0JnQixLQUFLQyxHQUFHQztPQUU3QixHQUFJRCxLQUFLQSxPQUFRLENBQ2JDLFNBQVNELEdBQ1RBLElBQUlFO09B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Z0JBQThDMHVDO1FBQzVDLEdBQUdBLGFBQ0Q1Wiw4QkFBOEI0WjtPQUZHO0dBTXpDO0dBQ0FrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztZQ3pIQUMsV0FBV0MsR0FBRUMsR0FBSSxPQUFBLGFBQUpBLEdBQUZELEdBQWlCOztJQUM1QkU7SUFDQUM7bUNBRkFKLFlBRUFJLEtBREFEOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHQzRCVTs7Ozs7Ozs7SUF2Q1ZFO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF1Q1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFHQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQUM7SUFVQUM7SUFJQUM7SUFJQ0M7SUFTREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFFQ0M7SUFTREM7SUFJQUM7SUFJQUM7SUFVQUM7SUFJQUM7SUFJQ0M7SUFVREM7SUFDQUM7SUFFQUM7SUFJQUM7SUFJQ0M7SUFRREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQ0M7SUFNREM7SUFDQUM7SUFFQ0M7SUFLQUM7SUFLREM7SUFDQUM7SUFDQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMENEaG1HO0lBWUEyYjtJQUNBRTtJQU9Bblg7SUFDQUU7SUFDQXFoRztJQUlBQzs7OztHQWdCRzs7Ozs7O09BamlCTDl1RztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7OztPQTBKRWlrRztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQU1BQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUdBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVBQztPQVVBQztPQUlBQztPQUlDQztPQVNEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUVDQztPQVNEQztPQUlBQztPQUlBQztPQVVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVFEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUNBQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQ0RobUc7T0FZQTJiO09BQ0FFO09BT0FuWDtPQUNBRTtPQUNBcWhHO09BSUFDOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SyxXO0s7O1EsUTtzQztRO087SztPOztLLE07SyxNO0ssWTtLLE07SyxNO0ssUTtLLE07OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLE87Ozs7O0k7SyxJLE87Ozs7Ozs7OztHLEk7OztJOzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLHNCO0cscUIsc0I7RyxzQixzQjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJOzt5QixPOzt5QixPOzt5QixPOzs7Ozs7SyxPOztJO0ksTztHOztJLFk7Z0I7O0k7Ozs7MkI7bUM7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQixnQjtJLE87Rzs7SSxVO0k7SztlOzs7aUI7OzttQjttQjtJO0k7SSxPO0c7O0ksVTs7SztLOztPLFc7TSxJLEksMkI7Ozs7OztZO1k7Vzs2QjtTLE87UTtTLE07Uzs7OztZOztZOztZOztRLE87OztzQyxPO007TSxJOztJO0k7Rzs7STs7OztLO0ksTzs7O0ksSSxnQjs7OzJCLE87OztJO0ssaUI7SztPOzs7OztLO0s7Ozs7O007Ozs7OztJO0c7OztLLFk7O0s7STtJLFU7SSxPLFc7Rzs7STs7SyxnRDtLOzRDOztLLE07STtJLFk7SSxJLFU7Ozs7O0s7O0k7Rzs7O0ssWTs7Ozt5Qzs7Szs7UTtLLE87STtJO0s7TSxNO00sTTs7OzsyQjs7O2M7STs7OztLO087Ozs7dUM7SSxXO0c7O0k7Z0I7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7eUIsTSw0QztJLE87Rzs2QixPLG1DOztJOzs7a0MsTztJOzs7eUMsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07O0c7O0ksUztJOztJLE07Rzs7eUIsbUQ7SSxPO0c7Rzt5QixrQixvQjtJLGE7STt5Qix3QjtJLE87Rzs7SSxTO0ksNEI7SSxXO0c7O0ksWTtJLGtDLE07STs7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7Rzs7SSxZOztJLE87OztJO0ssTTs7bUI7STs7Szs7O0k7Rzs7STtJOzs7Z0I7SyxnQyxJO0ssWTs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7STtnQixXOzs7TSxNO0s7OztNLEk7TTs7Ozs7Rzs7STtJO2UsVzs7aUI7Syw4Qjs7Rzs7STtJO21CLFc7O00sTTtLOzs7TTtNOzs7OztHOztJO0k7OztnQjtLLGtDLE87SyxXOzs7Rzs7STtJOzs7TSxHO087UTs7Ozs7OztLLFc7O0c7O0ksUSxPOztJLE87RztHOztJOztLOztJO2lCO0ssRyxxQztLLEk7O0c7O0k7STtpQjtLLEssNEI7SyxJOztHOztJO0s7OztTLFk7O1M7UTtNLFc7Szs7Ozs0Qjs7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7TSxXLGM7TTs7Ozs7Rzs0QixPLHNDOztJLEs7SyxHLDRCO0ssTTs7O0k7aUIsTTtLOzs7TSxXO0ssRyxnQzs7O0c7O0k7SztLO007TyxPO08sTTtNLEcsNkI7TSxLO087TyxPOzs7O0k7O0k7aUIsTTtLOzs7TSxvQjtLLEcsZ0M7OztHOztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7STs7Yzs7Rzs7SSxVOztLO0ssTztJO0k7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7OztHOztJO0ssSTtLLE87STtLLFE7SyxZLE87Szs7Rzs7STtJO0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOztHOztJLGM7eUIsTyx1QjtJLCtCLDZCO0k7aUMsTyxnQzs7O0c7b0Isd0M7O0k7Rzs7SSxvQjtHOztJLFk7Rzs7STs7Ozs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7OztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STtJLHFDO0c7O0k7SSxxQztHOztJOztHOztJO0kscUM7Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO1c7dUI7O0s7Ozs7NEI7OztHOztJO0k7eUM7O00sTTtLLFc7UTtNLEk7Ozs7Rzs7STtJO0ssSTs7OztNO087Uzs7Ozs7TyxPO00sTzs7SztNLFM7c0I7TTs7OztHOztJO0k7dUM7SyxXOzs7Ozs7O007Ozs7O087O1MsVztRLFc7Ozs7O1EsSTs7OztNO087TyxZOzs7OztLLEk7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7O0ssTTtLO0s7Ozs7TSxXO007TTs7Ozs7STtLO0ssTztJO0k7Rzs7STs7SztLLE87O0c7O0k7OztJLE87Rzs7STs7O0ksTztHOztJLHdCOzs7O007TTs7Ozs7O0c7O0ksd0I7Ozs7TSx5QjtNOzs7Ozs7Rzs7STs7OztNO007TTs7Ozs7O0c7O0k7O0s7YztLOzs7STtJLE87Rzs7STtJO0k7RztHOzs7Ozs7Ozs7Ozs7O0k7OztLLE87SyxXO2tCLHFDO0k7UztJO0k7Ozs7TTtNOzs7OztJOzs7O007TTs7Ozs7STs7OztNO08sTztPLE87Ozs7UTtTLE87Z0I7UztTO1M7Uzs7Ozs7UztTOztTOztvQjtTLE87Ozs7VSxXO2E7VyxXO1csRztZO2E7YTthOzs7OztzQjs7Ozs7OztRO1E7Ozs7O007Ozs7O0k7OztHOztJOzs7OzswQixPLHFDO0k7SyxRO0s7STtLO2lCO0sscUI7Ozs7O0ksTztHOztJO0ksYztrQjtJO0s7Ozs7SyxPO0ksTztHOztJO0ssTTtLO087Ozs7O0ksVztHOztJOzs7Ozs7USxXOztRLFc7Z0IsVzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O0ssa0I7SyxPOztJLG9CO0ksTztHOztJOztNO08sTztjOzs7Ozs7O0ksVztJLE87RztHO0k7STs4QixxQjswQiw0Qjs7STs7Ozs7O3VCLE07O0k7RztHOztJO0ssWTs7OztJO0s7TTs7TTs7Ozs2QixPOzs7O0k7O0s7OztTO1U7Vzs7VTs7OztpQyxPOzs7Ozs7O0k7STtJO0c7RztJO0k7Ozs7O0c7STs7TyxJLEksTzs7Ozs7O08sVztPO1E7UyxPO1MsYzs7O087O087ZTs7Rzs7STs7SztLOzs7Ozs7O0k7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TztROzs7Ozs7Ozs7O087O1EsZTs7Ozs7Ozs7Ozs7TztPO1E7Ozs7OztNOzs7O1E7OztVO1E7Ozs7Ozs7Ozs7OztLLE87O0c7O0k7STs7SztLLE8sZ0M7STtJO0ssbUI7SyxXOzs7Ozs7TztROzs7Ozs7Ozs7O0k7O0s7OEI7bUQ7SyxPOzs7Ozs7OztJO0k7SSxPOzs7STtJLE87Rzs7SSxZO2dCLE87O0k7SSxPO0c7RyxJLGlCOztJOzs7SyxJLGtCOzs7Ozs7SyxZOzs7Ozs4Qjs7O0c7O0ksZ0I7STtnQjs7O0ssZTtLOzs7O00sTztNLE87SyxXO0k7SSxPO0c7O0ksWTtJO0c7RztzQixpQjtHO0ksTTtJLE07c0IsaUI7RztJLE07SSxNO0ksWTs7STs7Ozs7O3lCOzBEOzBEOzBEOzBEOzs7Ozs7OzBEOzsyRDsyRDsyRDsyRDs7Ozs7TTs7Szs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7Ozs7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztHOztJO0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztLLHVCO0ssTzs7SSx5QjtJLE87RztHLEk7O0k7Ozs7Ozs7OztJOztPOztJLE87Rzs7STtLO007UTs7O1M7VTtVLE87UyxPO2tCO1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOztlLE07O0c7O0k7Szs7OztNO007TTtNO0ssTzs7STs7Ozs7O0s7SztJLE87Rzs7O0ksRztLO0k7Ozs7STs2QztJOztLLE87Szt5Qjs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztNLEk7SyxpQjs7OztLLE87OztLOzs7TSxNO00sVTtLLE87OztLOzs7OztNLE07Szs7OztLLE87O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxPO0s7SyxPO0k7O0ssTzs7O2U7dUM7OztlLE87Ozs7O21COzs7Ozs7Ozs7OzBCO2UsTztjOzs7STs7SyxPOzs7ZTs7NEI7ZTtjOzs7STtnQywyQjs7O007OztRLFc7Ozs7OztNO0s7SyxPO0k7O0ssSSxVLHdCOzs7NEI7OztJOztLLFU7O007TSxXO0s7SyxlO0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SztLLE87O3NDLE8sNkI7OztJOztLLFU7dUI7SyxPO0k7OzBCLE8sbUIsdUI7SyxPO0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNOzhCLE8sd0I7UyxPO1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87OzttQjtrQjs7O1E7O1MsUTs7VTtVLE87UztTO1M7UTsyQixpRDs7UyxRLG1COzRCLE8sMkI7UztTO1E7O1MsSSxVLDRCOzs7O1UsUTtVO1U7O1E7O1M7UyxjO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSwwQjtJLE87RztzQixTO0c7O0ksOEI7SSxPO0c7RztJO00sdUI7STtNO1E7O0k7VztjOztJLE87Rzt3QixTOzs0QixPLHlDO3NCLE8sa0M7MEIsc0I7Rzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLHlDOztTO1E7O1M7OztVLE07UztROztTO1E7O1M7UTs7UyxVO1M7UTtROzs7O1MsVTtTLGtCO1M7VSxTLFc7OztVLEksYTs7OztXLEksWTs7O1ksTTs7Vzs7VSxhOzs7WSxNOzs7OztXLFU7VyxJLFk7OztZLE07O1c7O2M7Ozs7O1csSSxjOzs7WSxNOztXOztVLE07UztTLGE7OztROztTLEk7Ozs7O1U7O1csTTtXLE07VTtVLE87O1M7UTs7UyxJOzs7Ozs7VTs7UztROztTO1UsYztVOzs7Ozs7MEM7VTtXLGM7Vzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7NEIsMEI7O0k7SyxNOzs7Szs7ZTs7Ozs7O0k7SSxPO0c7O3lCLE8seUI7STtJO0ssTTs7STtHOztJO0k7SyxNOztJO0c7O0k7O0s7O00sZ0I7OztLO0k7SSxZOztJO0c7O0k7SyxNOzs7Szs7O0k7STs7eUIsaUM7Szs7O0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxRO0ksYzs7Ozs7Ozs7b0IsWTt1QixZOztJLE87a0I7O0c7O0ksVzs7SyxPLGtCO21COztJO0ksTztHOztJO0s7TSxNO00sTTs7Ozs7Ozs7SSxpQjtHO0csVzs7SSxNO0c7Rzs7SSxtQjtLLE07STtJOzs7O0c7dUIsMkM7O0k7Rzs7STs7SyxTO0s7SyxVO0ssTztJO0ksTztHOztJO2M7STs7O0c7O0ksbUI7SyxNOztvQixPLHdDO0k7SyxXO2lCOzs7OztVOzs7OztHOztJLG1CO0ssTTs7O0ssUztZO007SztNLFE7TSxVOztlOztJO0k7OztHO3lCLHdCOztJLG1CO0ssTTtJO2M7O0c7O0ksTyxrQjtHO0csYTs7STs7OztjO3VCLG1COztHO0csZ0I7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJLG1CO0ssTTtJOzs7O2lCOzs7TSxJLDBCOztLOzs7OztNLE87OztHOztJLG1CO0ssTTtJOzs7O087USxNO2M7OztNLEksMEI7O0s7Ozs7O0ssZTtLLE87O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLHNCO0ksVTtJLE87Rzs7STtHO0c7STtJOztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJO0k7VTtJO1U7SSx1QjtJLHdCO0ksdUI7SSx5QjtJLDJCO0ksMkI7SSw2QjtJLHdCO0ksdUI7STtJO0k7STtJOzs7Ozs7Ozs7O0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7O00sb0I7TSxtQjtNOzs7Ozs7O0c7RyxJLHlCLG1COztJOztPOztPO2U7O0c7RztJOzs7UTs7Ozs7O087Ozs7STt1QiwwQztHO0k7OztROzs7Tzs7OztJO3lCLE8sc0M7O0k7O087O087O087ZTs7Rzs7STs7Ozs7Ozs7O0c7O0k7O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7O007TTtLOztJO0ssTSxXO0ssTSxXO0ksTyxXO0c7O0k7SSxPO0c7O0ksWSxPO0k7SSxPO0c7O0k7SyxNO0ssVTtJO0s7OztTO1U7VSxROzs7O2U7bUI7O1M7UTtNLEs7SztNOztPO08sUTs7Ozs7Vzs7Ozs7OztHO0c7O0k7eUM7O2dCO0kscUI7STtHO0c7O0k7Rzs7STtJLGtCO0k7SyxlO0s7OztHO0csSSxtQjs7STs7O0c7OztLO0s7TSxXO007TTtNLFU7TTs7Ozs7b0I7O087OztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SztLO0ksVztHO0c7MEIsUSw0Qjs7STs7Ozs7Rzs0QixPLG9DO0csSSw4Qjs7STs7O0c7O0k7SSxJLCtCOzs7O0ssSSxVOzs7O007TyxhOzs7Ozs7Szs7OztLO00sZTtNOzs7O0k7O0s7OztTO1M7VTtVOztTLE87Ozs7O1E7SSxPO0c7O0k7K0MsTyxpQjtHOztJO0ssTztJOztLO0ssTztJOztLLE87STtJO0c7a0MsdUM7RztJO0s7SyxZO0ssUTtLLGU7O0ssa0I7SSxPO0c7Rzs7SSxJLCtCOztnQztLLG9CO0ssVzs7Rzs7O0s7TTs7O3dCO007SyxPO0k7O0s7O007UTs7Ozs7TyxxQjtPLE87Ozs7Ozs7SztJO0k7Rzs7STswQix5QjtJLFE7O0s7O0k7SSxXOzs7O0s7TTtNO007OztTLG1COzs7UTtLOzs7UTs7STs7Szs7Ozs7O007Ozs7a0I7TSxROzs7TTs7SztJO0ksTztHOztJLGM7Ozs7OztJO0s7Szs7O0s7OztLLHdCLGtCLHNCOztNOzsrQjs7OzsrQjs7O007TTs7NkI7SztLLFc7STtJOzs7OzswQzs7O0ksVztJOzs7TTtNLE87OztlLDZCO0s7SztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7OztNOztPO007TyxnQztNO0s7SztLLE87O0k7Ozs7TTtLO0s7TSxNLFc7TSxROzs7cUIsUztLLEc7TSxVO007O0ssVTt1QjtLLE87O3NCO0ksTztHO3FCO0c7SSxlO0ksTTtJLGM7cUI7RztJLGM7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJLEksSSxNOzs7Ozs7STtNO1Msc0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SztLO0s7O0ksVTs7SyxNO0k7RztpQyxrQixTOztvQixPLGdDO0k7SyxRO0ssUztLLEk7O2U7Szs7VTs7Szs7STtLLFE7OztvQixPLHlDO0k7STt3QixPLG1DO0k7SSxPO0c7O29CLE8sZ0M7SSxZO29CLE8sOEI7SSxZO0k7Rzs7SSxZOztJLE87Rzs7STs7O1E7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssOEI7SyxNO0ssTTs7O0sscUI7Ozs7OEI7Ozs7Ozs7OztROzs7O0k7OztTOzs7Ozs7Ozs7Ozs7O0ksRztLLFE7SztNLFk7TSxHLDRCO087TTtPLFU7Tzs7O2dCLDJCOztJO0c7O0k7SSxxQjtJLG9COztLO0ssZTs7O0ssTTtJO0k7YTs7Rzs7O0s7Ozs7Ozs7VyxLLDZDO1c7WTtZO2M7Ozs7O1ksTTtZLFU7VyxJLFUsbUM7OztrQzs7O1U7bUIsVzs7TTs7O1U7OzthO3VCO1c7WTtjOzs7Ozs4Qix5QjtXLE87O1U7UztPO3FCLFc7TywrQjtPLE07O1M7OztNO087TyxNO08sTTtPLDhCO08sTTs7Ozs7Ozs7Ozs7OztVLE07Ozs7Uzs7O0s7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO2dDLG9DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEk7O0k7O0ssTztJO0ksTztHO0c7OEIsTyxvQzs7STs7SyxNOzs7Tyx1Qiw2QztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztJOzs7UTtROzs7STs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFMsSTs7O08sTTs7TSxTO007TSxrQixPOztNOztJO3FCO0k7Rzs7SSxJLHlCO0k7Rzs7STtLLFE7SyxTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7TSxnQyxLO007Ozs7TTtPO08sc0I7TSxPOztLOzs7O00sTzs7OztPO087Ozs7OztJOztLO00sTTs7SztLO007TTsyQztjLG9DO087UTtnQzs7OztLOztNO007O1EsTztPLFk7Ozs7Ozs7O1M7VTtVLG1COzs7Ozs7O1UsSTtVO1csTzs7O1U7Ozs7OztZLEk7WTthLE87OztZOzs7WSxJO1k7YSxPOzs7WTs7O087O0s7O00sb0M7TSxXOzs7USxJOzs7Uzt5Qjs7bUI7c0I7VTtXOzs7c0I7Ozs7OztROzs7UztRO1MsTzs7UTs7OztPO1E7USxlO087USxPOztPOztNO0s7OEI7SztLO0s7TTs7UyxPOztTLE87aUIsTzs7O0s7TSxzQixXO007O0s7Ozs7Tzs7TTs7SztNO1E7OztNO0ssMEI7Szs7TTtLO007O08sVztPLE87TTtNOztTO00sMEI7Szs7TTtPOzs7a0I7O2tCOzs7Ozs7USxPOztPO1EsWTs7TyxPOztNLE87SztLOztNLDJCLHNCLFc7TSxPO007UTs7SztJO0k7Ozs7Szs7O1k7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0csb0I7Rzs7SSxPO0c7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztRO08sVztPLE87Ozs7USxNOztRO1MsTztTLE87USxPOztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7OztpQjs7O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7MkI7O087O1EsTztPLE87OztPLE87OztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87Ozs7O1UsVztVLE87O1U7a0I7VSxPOztVOzthO1UsTzs7O087Ozs7UTtRLE87USxPO087O1UsTzs7VSxPOzs7VSxPOzs7Ozs7UTs7UyxPO1MsTztRLE87OztRLE07TztRLE87USxPO1EsTztRLE87TyxPOzs7O1E7Ozs7UztXOztTLE87UyxPO1MsTztRLE87Ozs7USxNO087O1E7VTtRLE87USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxPO1EsYTtPLE87Ozs7USxPOztPLE87OztPOzs7O08sa0I7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLFM7TztRLE07OztRO1MsUztTLE87UyxPOzRCOztRO1MsTztTLE87NEI7TyxPOzs7Ozs7O08sTzs7TyxxQixPO08sTzs7eUIsTzs7Tzs7USxPO08sTzs7O08sTzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Ozs7VSxXO1UsTzs7VTtrQjtVLE87O1UsVztVLE87OztPLGtCLE87TyxPOztHO0c7O0ksbUI7STtJLEksb0IsbUIsZTt5QixtRDtJLFk7Ozs7OztrQzs7OztnQjs7STtHOztJOzs7Ozs7Z0I7OztrQjs7Ozs7Ozs7UTs7O0k7SSxjOzs7Ozs7Ozs7Ozs7O0k7RztHOytCLHlCOztJOzs7SSxNO0c7OztLOzs7OztLO007O08sTztjOzs7O007Ozs7O00sTztLO0ssTzs7STtJO0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxPO1E7O1MsSSxNLGdEOztVO1c7a0I7WTtXOzs7O2lDOzs7UztTLE87UTs7Uzs7VTtXO2tCO1ksTTtXOzs7OztZLE87OztTO1MsTztROztTOztVO1csVTs7O1M7Uzs7O1U7VyxLO1c7O1M7UyxPO1E7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7MkI7UztVLFE7VTtVO1U7Ozs7VyxtQjtxQjtXOzs7Ozs7O1U7O1csSSxJLE07Ozs7b0I7O1c7VTtVLE87UztTO1UsZ0I7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7OztXO1c7Ozs7O1M7OztVLGE7OztXOztXO1U7VSxPO1M7UztTO1UsVztVLGE7VTs7VTtvQjtVOztVO1U7VSxPO1M7Uzs7OztXOztZOzs7Vzs7Ozs7Uzs7VSw4QjtVLGtCOztVOzs7OztVO1c7Vzs7VztXLE87VTtVO1c7VTtTO1M7Uzs7WTs7VTtXLE07OztXO1k7OzZCLCtDO1csZTs7VTtXO1c7VzthOzs7VTtTO1MsTztROztTOzJCO1MsTztROzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQzs7O0ssTTs7OztRLGtEO1EsTztPOzt3QixTO3dCLFM7O29CLGM7MEIsTyw0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLFM7MEIsUztzQixjOztJLE87Rzs7Ozt5Qjt5Qjt5Qjt5Qjs4Qjs4Qjs4Qjs4Qjs4Qjs4Qjs7Ozs4Qjs4Qjs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7O0c7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7O087Ozs7VyxRO1csTztVO1E7VTs7USxNO08sTzs7O08sTzs7MkIsTzs7RztHOztJOzs7O0ssTTs0Qjs7Ozs7UTs7OztJO0ssMEIsMEIsSTtLLE87O0c7O0k7STsyQjtLLFE7VztLLEk7O0c7O0k7eUIsTyw4QjtHOztJLFU7STtJO0c7O0ksTyx1QjtHOzZCLHdCOzs7STtjO2M7Ozs7STtjO2M7OztJLEksNkIsUTs7SyxNOytCOztJO0c7OztJO2M7Yzs7O0k7OztHOztJLFk7Z0IsTTs7STtHOztJO0k7Rzs7O0k7Ozs7Ozs7O2tCO0s7O0k7Rzs7O0s7aUM7STtJO0c7Ozs7OzBCLDRCO3lCLE8sdUM7Ozs7Ozs7a0I7Szs7STtHOzs7STs7YztjLE87YTs7Rzs7STtJO0ssVTtLLFU7SyxVO0ssVTtLLFc7Ozs7Ozs7Ozs7Ozs7O007TTtPO08sVTs7Ozs7Ozs7Ozs7TyxNOzhCOztNLEk7Ozs7Ozs7MEM7Uzs7Ozs7OztNO087TztPO087Tzt5QjtPOzs7VTtXO1c7Ozs7VztZO1k7WTtZOzs7VTtTO08sZ0I7Tzs7O1ksWTs7WTtXOzs7Tzs7Ozs7O1E7O1E7UTs7O1c7O1k7O1ksUztZO1c7VTtvQjs7O007Tzs7VTtXO1c7c0I7O1U7O087O1U7VztXO1UsTzs7TTs7OztPO087UTtRLDRCO087TztRO1EsVTtPLEc7USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0IsTztpQjs7d0I7O1k7b0I7O3NCO2lDO1c7OzhCO087Ozs7WTtZLE87VztXLE87O087Ozs7O007TTtPO08sSTs7Ozs7Ozs7OztPLFU7Ozs7Ozs7Ozs7UTtTO1M7UztTO1M7UztTO1EsRzs7O1M7VTtnQztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1U7VTs7O2E7O2M7Yzs7O2M7Yzs7Yzs7Ozs7Yzs7Ozs7YTs7Ozs7Ozs7WTtVLFc7Uzs7O1U7Vzs7Ozs7YztjOzs7Ozs7OzthO3dCOztROzs7O1UsTTtTOztVOztXO1c7Vzs7O2M7O2U7O2U7O2U7YzthOztxQjs7Ozs7O1E7Uzs7WTt3QjtZOzs7O2E7ZTs7O1ksVzs7Uzs7WTtZLE87O1E7O08sTTsyQzs7TSxNOzJDOzs7SSxNO0c7O0k7SztNLEs7NEIsYTs0QixPLDJCO00sSTs7Ozs0Qjs7O0s7O0k7Rzs7O0ksTzs7OztJLE87Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7OztJOzs7MkI7O3lCLE07OztPLEksUTs7OztRLE07OztPOztHOztJO3VCOztJO0c7O0k7Ozt5Qjs7eUIsTTtpQzs7RztzQixtQjs2QixtQjs2QixtQjt1QixjOztJOzs7MkI7O3lCLE07OztPLEksVTs7OztRLE07Ozs7OztHOztJO0k7aUI7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOzsyQix5QjtTLE87Ozs7UTs7MkIseUI7UyxPOzs7O1E7O1M7UTs7UztROztTO1E7MEIsdUI7O1M7UztTO1M7UTs7UztVO1U7UztTOzs7O1E7O1M7VTtVOztVOzs7O1csdUI7Ozs7YTs7Ozs7Ozs7O2E7Yzs7Ozs7ZTs7Ozs7OzthOzs7OztXOzs7Ozs7O1UsTTs7OztxQztVOztXLE07O1U7Ozs7Ozs7VSxJOztROzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7O1csTzs7Ozs7c0I7c0I7OEI7O3FCO3FCO29CO1U7VSxnQixjO1U7VztXO1UsZ0IsYztVO1c7Vzs7OzthLFk7OztjOzs7YTtZO1ksTztXO1csTztVO1U7VyxTO1c7Vzs7Vzs7Ozs7WSxRO1c7VTtVO1c7O2E7Ozs7Ozs7YztnQjs7O2E7Ozs7OztXO1U7VTttQjs7Uzs7VSx3Qjs7Ozs7c0I7VTtTOztVOzs7VzthOztXO2E7Ozs7O1c7O2M7Ozs7OztVOztVO1c7WTtZO1k7O1k7Ozs7YSxrQjs7Ozs7OztvQjtxQjs7Ozs7Z0M7OztlO2U7Ozs7O2E7Ozs7OztnRTtXOzs7Ozs7a0I7bUI7OztpQjtpQixPO2dCO2dCLE87ZTs7OztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7VTtXLFE7OztXO1U7Uzs7O1U7VTtTOzs7Ozs7VTtXLFE7Ozs7VTtTOzs7VTtVO1M7Ozs7Ozs7a0IsVTtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLDRCO0ksTztHOztJOzs7Ozs7O0k7SyxVO0s7dUIsTyxzQztLLE87STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07dUIsb0I7O29DOzs7c0I7O3VCLE07dUI7dUIsb0I7O29DOzs7OztzQjs7O3VCLEs7dUIsSzt1Qjt5Qjs7O3VCO3VCLG9CO2lDOzttQixXOzs7O3FCOzs7Ozs7Ozs7bUI7Ozs7O3NCLG9COzs7c0I7O3NCOzs7O3VCLEs7dUIsSzt1Qjt1QixROzs7Ozs7eUI7Ozs7Ozs7OzBCLFU7MEIsVTs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7a0I7a0IsTztpQjs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STt5QiwrQjs7STs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxHO0s7TSxPO2tDOzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TyxHO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7SyxPOzs7OztLO0k7SyxpQztJOztLLGE7SyxPO0k7STs7Ozs7Ozs7Ozs7O0k7SztLOztJO0k7SztLOztLO0s7OztLO0s7Ozs7O0k7SztLO0s7O0ksTztHOztJOzs7NkIsTyx5QztJLE87Rzs7O0s7OztNLE87TSxjO0s7STtJLE87Rzs7STtLOztrQixNO0ssSTs7OztpQjtPOzs7OztLLFc7MEIsTTtLO0s7SztLO0ssdUM7Ozs7a0I7Ozs7WSxxQixpQzs7O08sRztROzs7O1kscUIsaUM7OztPLEc7UTtPLFE7Tzs7Tzs7Ozs7SztLO0ssVztLOzs7OzRCOzs7Rzs7STtJO0s7SztLO0ssSTs7SztNLFc7TTs7Ozs7STtJOztNLFk7OztPO29COztPOzs7TTs7OztHOztJO3VCLHFCO0ksTztHOztJOzs7Szs7SztNLE87TSxjOzs7STtHOztJOzs7Ozs7Ozs7Ozs7Szs7Ozs7aUI7SztLLFc7SyxJLG9COztNOztPO007SztLLGdCOztNOzs7Ozs7O00sTzs7O0s7SztNLE87TSxPOztNO00sbUIsMkI7TTtNLE87SztLLFUsVzs7TTtNOztROztPOzs7TyxNOzt3Qjs7TTtLO0s7TSxROzs7SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7O007Ozs7Ozs7Ozs7TSxXOztNO087USxNO1E7O1csSSxlLDhCOzs7b0M7OztVO1E7O2tDO087Tzs7OztrQzs7O0s7SyxJOzs7Ozs7O1E7UztTLHFCLHVCOzs7WSxXO2lDO1ksUTtZO1k7VztTOzs7Ozs7OzJDLHFCO087UTtTOzRCLDRCOzs7WSxzQjtZLFE7WTtZO1c7Ozs7Ozs7Ozs7TTs7OzhCOztPOzs7Ozs7O08sRyxnQztRO08sRyxnQztRO087TTtNLFk7Ozs7O007SztLLFksVzs7TTs7Ozs7TSxXOzttQjtNOztPO007SztLO00sVTs7Ozs7Ozs7OztXO1c7VTtlOzs7Ozs7TTs7Ozs7TTs7Yzs7SztLLGMsVztLOzs7Ozs7OztRO1E7Ozs7O1k7O2E7YSxPO1k7cUI7YTtZO2E7OztjOztjOzthO2EsTztZOzZCOzBCO1c7UTtROzs7OztNOzs7VTs7VztVO1UsYTtVO1M7TyxPO00sVzs7O0ssTztJO0ksTzs7RztHO0ksTztHOztJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7OztJO0k7Ozs7Ozs7OztJOzs7SyxPOztLLE87OztLLE87O0ssTztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87RztHO0k7SyxPOzs7d0IsTzs7O08sTzs7O08sTzs7O08sTzs7O0csNkM7RztHLDRDLHdCO0c7O0ssVztLLE87STtJLE87RztHO0k7OztLLE87SyxPO0ksTzs7RztJOztHO0csOEMsd0I7Rzs7Ozs7Ozs7Ozs7OztLOzswQixvQixXO0s7TSxXO007TTtRO0s7SyxPO0k7SSw4QyxTO0k7Szs7ZTs7STtJOzs7Ozs7Ozs7Rzs7SSxnQzs7OztLOztJO0c7O0ksTzs7O0c7Rzs7SSxjO0ksTztHO21DLGtDOztJOztJLG9CO0ksTzs7O0k7STtJOzs7O2MsTzthO0c7O0k7STtJLHVDLE8sdUI7Rzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLE87STtJO0ssTztLLHlCOztLO0sseUI7STtJLFU7STtHOzhCLG9DO0c7RztJOztHOztJLE87RztHOztJO2dCOztJO0c7O0k7Rzs4QixvQztHO0c7STs7Rzs7SSxPO0c7O0k7Z0I7O0k7Rzs7STtHOztJO0k7STtHOztJO0c7O0k7SyxVO0s7OztROzs7STtHOztJO0s7TztLOzs7UTs7O0k7RztHO3FDLGtDOzs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7OztlLE07O21DOztLOztHO0c7Rzs7TSx1Qjs7TTtLOztJOzs7SyxNO0k7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7MEI7O1E7OztTOzs7O2dCLE87O0c7O0k7O3lCOzsyQjtlLE87O0c7O0k7SztNLE07TTtNLFU7Szs7Ozs7TTtjOzs7Ozs7OztHOztJLFE7SSwwQjt1QixpQjtJLFc7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7Ozs7O0ksVztJLFc7SSxXOztLOztRLE87O1E7b0M7O0k7SSxPO0c7aUMsK0IsVTt5QixpRDsrQixhOzhCLGE7Rzs7STs7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7STs7Ozs7O087UTtrQjs7Ozs7O0k7Rzs7O0k7OztNO00sTzs7O0k7RztHO0k7Ozs7STs7SztLO0s7STtHOzt3QixtRDtJO0ssTztLLE07SSxPO0c7O0k7STtpQjs7MEQ7OztHOztJOztpQixPOzs7Ozs7O00sSTs7O0c7O3FCLCtDO0ksTztHO0csZ0I7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0ssVTtLO0s7Ozs7MkI7OztHO0csaUI7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHFCOztJO2lCO0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0csc0I7O0k7O2M7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHVCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0ksd0I7SSx3QjtHOztJO0ssSztLLEs7STs7YTthOztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSxjO0ksc0I7Rzs7SSxjO0ksc0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksZ0I7Rzs7SSxVO0ksMkI7Rzs7SSxnQjtHOztJLHFCO0c7O0ksWTtJLDJCO0c7O0ksMEI7Rzs7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSw0QztJOzs7O0k7O2E7YTs7OztJO0k7Rzs7STs7YTthOztHOzs7STtJO0k7OztJO0k7STtHO2tDLHdCOytCLHdCO29DLDBCOztJLDJCO0c7NEIscUI7aUMsMEI7O0ksMkI7Rzs4QztHOzZDO0c7c0MsK0I7dUMsZ0M7O0k7STtJO0k7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7OztHOzs7O0k7STtxQyxrQixTOztJLE07Rzs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7O0ksTztHOytCLHNCOztJLFc7Rzs7STtJLFc7Rzs7STtJLFc7Rzs7STtJLFc7RzsrQixzQjtzQixjOztJO0k7Rzs7STtJO0c7Rzs7STtJO0k7Rzs7SSxXO0k7RzttQywyQjtpQyxnQzt1QyxzQztpQyxnQztxQyxtQztxQyxtQztzQyxtQztvQyxtQzs7STtHO21DLG1DOztJO0c7cUMsaUM7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7cUIsWTtJLGtCOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7Ozs7OzZCLCtDO1M7Ozs7Ozs7Ozs7YTthO1k7O2lDOzs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQzttQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztpQyxnQztzQyxnQzt1QyxzQzs7STtHO3NDLGdDO29DLG1DO29DLG1DO29DLG1DO21DLGdDOzBDLG1DO3dDLG9DO3VDLG9DO29DLG9DOztJO0c7bUMsaUM7NEM7Rzt1QyxvQztzQyxvQzs7STtHOzJDO0c7O0k7RzttQyxvQztpQyxpQzt5QyxvQztvQyxpQzs7STtHOzJDO0c7a0MsaUM7a0MsaUM7cUMsb0M7b0MsaUM7c0Msb0M7Z0MsaUM7cUMsb0M7O0k7Rzt1QyxpQzsyQywyQjtvQyw0QjswQyw4Qjs7STtJO0k7Rzs7SSxXO0k7RzttQyxnQzttQyxnQztxQyxnQztzQyxtQztxQyxtQztvQyxnQzt1QyxnQztHOzs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7STtJO0c7MEIseUI7cUMsbUM7K0IseUI7bUMseUI7Z0MseUI7MkIseUI7OEIseUI7K0IseUI7NEIseUI7a0MseUI7MkIsMEI7NEIsMEI7NEIsMEI7K0IsMEI7O0k7STtHOzhCLDBCOzs7SyxPLHFCO0k7SSxZOztLLFc7SyxxQjtJO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7STtHOytCLDRCOzhCLHlCO3FDLG1DO3FDLHlCO2dDLHlCOzZCLHlCO2lDLHlCOzhCLHlCOzJCLHlCOzRCLDBCO2lDLDBCOzhCLDBCOztJO0k7RztnQywwQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3NDLG1DO3VDLHNDOzJDO0c7dUMsZ0M7cUMsbUM7Rzs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3VDLGdDO3FDLG1DO0c7Ozs7STtJO0k7Ozs7SSxtQjtHO21DLG1DOztJO0c7O0k7Rzs7STtHO3VDLG1DO2dDLCtCOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHOztJLFc7STtHOztJO0k7STs7OztJLG1CO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt1QyxvQzt1QyxvQztnQyxnQzs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87Rzt3QixlOzJCLGlCOztJLFc7STtHOztJO0k7STs7OztJO0ksNEI7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHVCO0c7Rzs7STtJO0k7STtJLGdDO0c7Rzs7STtJO0k7SSx1QjtHO0c7O0k7STtJO0k7SSxVO0ksc0I7RztHOztJO0k7STtJO0k7STtJLFU7STs7Ozs7O1k7RztHOztJO0k7STtJO0k7STtJO0k7SSxVO0k7Ozs7Ozs7WTs7Rzs7STtJO0k7STtJO0k7Ozs7OztZO0c7O0k7STtJO0k7SSxnQztHO0c7O0k7STtJO0k7STtJOzs7Ozs7WTtHOztJO0k7STtJLDZCO0c7O0k7STtJO0k7SSxVO0ksNEI7Rzs7STtJO0k7STtJO0k7SSxVO0k7Ozs7WTtHOztJO0k7STtJO0ksVTtJLGdDO0c7RztnQyx5QjtHO2dDLHlCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHOztJO0k7STtHOztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0ksRztLO0ksVztJLEc7SztJLFc7SSxHO0s7SSxVLHVCOzs7Ozt5Qjs7MEI7OzJCOztTO1UsTztpQjs7Ozs7Ozs7Ozs7Ozs7O0ksUzs7Ozs7d0I7OzBCOzsyQjs7UztVLE87Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0ssTztLLGM7STtHOztJO0ssTztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPLFc7TyxXO08sVztPLE87Ozs7O0k7Rzs7STtJO0c7O0k7Rzs7STtJLE87Rzs0QiwyQjs7STs7Ozs7K0M7O2dEOzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7O2E7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHOzZCLGdDOztJOzs7YTtpQyxPO0k7Ozs7TSxNOztvQix3QixPOztLO0s7OztHOztJOztJLFE7O0k7STtJLE87Rzs7STtJO0k7ZTs7YztjO2M7YztjO0c7O0k7O3lCOztPOzs7UTtPLE87Ozs7Ozs7OztPLE87Ozs7O0ksTztHOztJOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7MkIsTzs7O3FCLE87O08sTzs7OztROztTOzs7WTtZLE87VztROzs4QixPLHVCO087OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO0c7OEIsd0I7OEIsTywwQjs7SSxRO0ksMEI7SSxJO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7OzttQzs7OztJLE87Ozs7O2tDOzs7O0k7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O1M7Ozs7VSw0QjtVO1MsTzs7Ozs7bUI7Ozs7Ozs7UyxPOzs7O3VDOzs7Ozs7O1U7O1csNEI7VSxPOzs7OztvQixPOzs7Ozs4QixROzs4QixPOzs7Ozt3Qzs7OzZCOzttQjs7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7TyxPOzs7OztpQixROztrQjs7OztnRDs7OztpQixPOzs7OytDOztnQjs7Ozs7Ozs7OztXOztZOzs7YTthLDRCO2EsNEI7WSxPOzs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOztZOzs7YTthLDRCOzs7Z0IsUTtnQiwwQjtnQixJO2dCLE87Ozs7OzBCOzs7ZTtZLE87Ozs7OztzQjs7Ozs7Ozs7O1c7VTs7O1c7Ozs7YSxPOzs7Ozt1Qjs7Ozs7VztVO08sTzs7Ozs7aUIsd0I7O2lCO2tCOzs7Ozs7OztpQixPO2dCOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7Szs7TSw0QjtNO0ssTzs7OzttQzs7Ozs7OztLLGdDO0ssTzs7OzttQzs7Ozs7O0k7Ozs7O007OztPOzs7OztLOztNO08sNEI7Tzs7TSxPOzs7OztnQjs7Ozs7SztNLE87O0s7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7O3FDOzs7Ozs7O0s7OztLO00sTzs7Szs7Ozs7Ozs7Ozs7Ozs7UztVLE87O1M7OztRLEc7UyxPO2lCLE87OztTOztVO2lDOzs7UyxPOzs7Ozs7O21COzs7Ozs7O1EsTzs7Ozs7OztrQjs7Ozs7OztTLE87Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7SztNLE87O0s7OztrQyxPOzs7OEI7O3lCLE87OztPLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxHO2MsTzs7OztXLE87Ozs7Ozt5Qzs7O087O1EsTzs7Ozs7a0I7Ozs7OztPLE87Ozs7O2lCOzs7OztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087USw0Qjs7O08sTzs7Ozs7OztpQjs7OztJOzs7O2tDOzs7Rzs7STs7O0k7OztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sRyw2QixPOzs7SyxPOzs7OzttQzs7O0ksaUI7Ozs7O0ssSztlLE87O0ssTzs7Ozs7bUM7Ozs7SyxPOzs7OzttQzs7O0ksMEI7SSxPOzs7OztrQzs7Ozs7O0ksZTs7Ozs7Ozs7Ozs4Qiw2QztNLEs7TTs7Ozs7Ozs7Ozs7OztXLFk7O1csTzs7VTs7WTs7YTtvQzs7O2E7YTs7Z0I7O1k7Ozs7bUM7Ozs7Ozs7Ozs7WTs7OztXOzs7WTtZOztlOztXOzs7O2tDOzs7Ozs7OztXOztVOzs2QjtPLFE7Ozs7Ozs7O1c7Ozs7a0M7O1c7Ozs7Ozs7Ozs7Ozs7WTs7O2EsVzthO2E7O2dCOzs7WTs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7O2dCOzs7aUI7Z0I7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OzttRDs7Ozs7Ozs7Ozs7cUI7Ozs7O3NCO3FCOzs7O21EOzs7Ozs7Ozs7O21COzs7O29CO21COzs7O2lEOzs7Ozs7O2lCOzs7a0I7aUI7Ozs7K0M7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7UztVO1csZ0I7Vzs7Ozs7WTs7OztVO1c7VyxJO1c7O2dCO2dCOzs7Ozs7O1ksTTs7Ozs7OztVO3NCO1csUzs7O3FDO3FDO1U7Ozs7Ozs7Ozs7Ozs7O007OztJOzs7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlOzs7bUI7O2UsTzs7Ozs7eUI7Ozs7Ozs7Ozs7VztZOztlOztZOzs7WTs7ZTs7VyxPOzs7O3lDOzs7Ozs7Ozs7WSxHOzs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7O1c7Ozs7YSxPOzs7OzsyQzs7OztXO1k7O2U7O1k7OztZOztlOztXLE87Ozs7eUM7Ozs7OztTO1MsTzs7Ozs7bUI7bUI7b0I7O21CLEk7bUI7b0I7O21CLE87Ozs7aUQ7Ozs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7dUM7OztTOzs7O1UsNEI7UyxPOzs7O3VDOzs7Ozs7OztTLE87O1M7OztVLDRCO1MsTzs7Ozs7OzthLDBCO2EsTzs7OztTLE87Ozs7O21COzs7Ozs7UyxPOzs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozs7VSxPOzs7O3dDOztTOztVLDRCO1MsTzs7Ozt1Qzs7Ozs7OEI7Ozs7Ozs7O1U7Ozs7d0M7Ozs7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVLE87Ozs7d0M7OztVOzs7OztXLDRCO1c7VSxPOzs7O3dDOzs7OztVOzs7Vyw0QjtVLE87Ozs7d0M7Ozs7O1U7OztXLDRCO1UsTzs7Ozt3Qzs7Ozs7VTs7OztXLDRCO1c7a0M7VSxPOzs7O21COzs7Ozs7VTs7O1csNEI7VSxPOzs7OztvQjs7Ozs7O1U7OztXLDRCO1UsTzs7VTs7O1csNEI7O1csNEI7VSxPOzs7VTs7Ozs7Vyw0QjtXLDRCO1c7O1c7O2M7O1UsTzs7Ozt3Qzs7Ozs7Ozs7O1c7Ozs7eUM7Ozs7OzthOzs7O2M7YztxQzthLE87Ozs7Ozs7Ozt1QixTO3VCLGU7dUIsTzs7OztxRDs7c0I7Ozs7Ozs7OztlOzs7Z0I7Ozs7O2M7ZSxNO2U7ZSw0QjtlOztjLE87Ozs7O3dCOzs7Ozs7O007Ozs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O08sTzs7Ozs7aUI7Ozs7TTtPLE87O007OztHOztJOzs7Ozs7UyxPOzs7O3VDOzs7OztTLGtDO1MsTzs7Ozt1Qzs7OztLO00sTzs7Szs7SSxrQixPOztJO0c7O0k7SyxrQixPOztLOzs7Ozs7MkI7OzBCOztROztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7UTtTOztrQyxPO29DLE87Ozs7O1c7O1k7WSw0QjtZOztXLE87Ozs7O3FCOzs7Ozs7Vzs7O1MsTTs7Ozs7O1MsTzs7OztROzs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1M7O1k7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7OztROztTO1MsNEI7Uzs7USxPOzs7OztrQjs7OztROzs7Uyw0QjtRLE87Ozs7c0M7Ozs7O1E7Ozs7OztTLGtDO1EsTzs7OztzQzs7Ozs7Ozs7Ozs7UTs7O1MsNEI7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7Uyw0QjtTO2dDO1EsTzs7OztzQzs7Ozs7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7NEI7O0k7OztJOzs7STs7SywwQjtLLE87O0ksTztHOztJOztLLDBCO0ssTzs7SSxPO0c7O0k7SSwwQjtJLE87Rzs7O0s7OztLLE87Ozs7O2U7OztJOztJLE87Ozs7a0M7Ozs7Rzs7O0ksMEI7SSxPOzs7O0ksMEI7SSxPOzs7STtJLDBCOztJLE87Ozs7O2M7Ozs7O0c7O0k7OztPOztRO1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1E7USw0QjtRLDRCO08sTzs7OztxQzs7Ozs7Ozt5Qjs7O087OztHOztJOzs7Tzs7O1E7USw0QjtPLE87Ozs7O2lCLFE7aUI7a0I7O2lCLEk7aUIsTzs7Ozs7MkI7OztnQjs7Ozs7OztPOzs7O1E7K0I7UTs7UTs7Vzs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7Ozs7OztPOzs7O1EsNEI7UTtPLE87Ozs7O2lCOzs7Ozs7O087OztPOzs7USw0Qjs7TyxPOzs7Rzs7O0ssOEI7SywwQjs7SywwQjtLLDBCO0ssTzs7Ozs7Ozs7Ozs7Ozs7STtJLFE7O2U7O0k7Szs7SSxJO0k7Szs7SSxPOzs7OztjOzs7OztHOztJOzs7Tzs7OztRO1EsNEI7OztXLFM7O1csTztVO1EsNEI7TyxPOzs7OztROztTO1M7Z0M7Uyw0QjtRLE87OztPOzs7UTtRLDRCO1EsNEI7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7O1M7UztnQztTLDRCO1EsTzs7Ozs7Ozs7Ozs7O087Ozs7O1c7Ozs7VTtRO1EsNEI7OztXOzs7Ozs7YTs7Yyw0QjtjLDRCO2EsTzs7O1k7OztVO08sTzs7Ozs7Ozs7Ozs7O087Ozs7UTtRLDRCO1EsNEI7TyxPOzs7O3FDOzs7Ozs7O087O1E7USw0QjtPLE87Ozs7cUM7Ozs7O3lCOzs7Tzs7O0c7OztJLDBCO0ksSTtJO0s7O0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Ozs7STs7Ozs7USxPOzs7OztrQjs7a0I7bUI7O2tCLEk7a0IsTzs7Ozs7NEI7OztpQjs7Ozs7MkI7O1E7Ozs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTOztZOztTOzs7Uzs7WTs7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTLDRCO1EsTzs7OztzQzs7Ozs7NEI7O1E7OztTLDRCOztRLE87Ozs7O0ksMEI7STtJLE87Ozs7a0M7Ozs7Rzs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7OztTLE87Ozs7dUM7OztRLGlEOztTOztVLDRCO1MsTzs7Ozs7dUM7Ozs7O1E7cUM7USxPOzs7O3NDOzs7Ozs7O1M7O1U7O2E7O2dCOzs7O2lCOztvQjs7Z0IsTzs7Ozs4Qzs7Ozs7Ozs7Z0IsTzs7OztnQixPOzs7Ozs7OEM7Ozs7Z0IsTzs7Ozs7OzhDOzs7Z0I7Ozs7aUI7O29COztnQixPOzs7OzhDOzs7Ozs7OztnQixPOzs7O1U7O1U7O2E7O1MsTzs7Ozt1Qzs7Ozs7Ozs7UTtTLE87O1E7OztHOztJOzs7OzJCLE87O1E7O1MsNEI7Uzs7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7OzBCOzs7USxPOztROzs7O3NDOzs7OztJO0ssTzs7STtHOztJOzs7STs7O0k7Ozs7a0M7OztHOztJOzs7Tzs7O1E7USw0QjtROytCO08sTzs7Ozs7Ozs7Ozs7OztPOzsyQjs7MEI7OzBCOzs7O1E7O1M7UztnQztRLE87Ozs7aUI7Ozs7OztPO1E7USw0Qjs7USw0QjtPLE87Ozs7Z0I7Ozs7OztPOztRO1EsNEI7TyxPOzs7O087O1EsVTs7UTtTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7OztTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87Ozs7Ozs7TztRLE07Tzs7USw0QjtRLDRCO08sTzs7Tzs7UTtRLDRCOztPLE87OztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7Ozs7O1csOEI7VztZOzs7VywwQjtXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7O08sVTs7b0I7Tzs7UTs7Vzs7UTs7UTs7Vzs7TyxPOzs7OztpQjs7Ozs7OzJCOzt5Qjs7O087Tzs7Rzs7STtLOztNLDRCO007SyxPOzs7O21DOzs7Ozs7OzswQixPOztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7OztROzs7O1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7TyxPOzs7O3FDOzs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7OztPLE87Ozs7cUM7O21DOztHOztJOzs7O2tDOzs7Rzs7STs7Ozs7O1M7OztVO2lDO1MsTzs7Ozt1Qzs7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7VSxPOzs7OztvQjs7Ozs7UztTLE87Ozs7dUM7Ozs7OztTLE87O0ssTzs7OzttQzs7STtJO3NCLFk7SyxPO0k7Ozs7Ozs7Ozs7UTtTLDRCO1MsNEI7USxPOzs7OztrQjs7Ozs7Ozs7Ozs7O0ssZ0M7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O1c7OztZOzs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7OztNOzs7Ozs7Ozs7TztNLEc7TyxVO08sRzs7Ozs7Ozs7Ozs7OztNOzs7O08sNEI7Tyw0QjtPOzs7O087O1U7O00sTzs7OztvQzs7Ozs7Ozs7O0s7OztNLDRCO00sNEI7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7a0I7Ozs7Ozs7USxpQzs7OztTO1UsNEI7VSw0QjtTLE87Ozs7O21COzs7Ozs7OztRO1MsNEI7Uyw0QjtRLE87Ozs7O2tCOzs7Ozs7OztJLDBCO0ksTzs7OztrQzs7Ozs7Ozs7SztLLDBCO0ssTzs7Ozs7OzttQzs7OztJO0ksUTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7OztJOzs7Ozs7Ozs7O00sRztPLE87Ozs7O0ksMEI7SSwwQjtJLE87Rzs7STs7O087OztRLDRCO08sTzs7OztxQzs7Ozs7TyxpQztPLE87Ozs7cUM7OztPOztRO1EsNEI7UTsrQjtPLE87Ozs7O1EsTTs7Tzs7MEI7OzBCOztPOzs7USw0Qjs7OztXO1c7Ozs7YTtjOzs7ZTtzQztjOzs7O2dCOzs7OztjOzs7O1k7Ozs7Yzs7c0M7YyxPOzs7OzRDOzs7Ozs7WSxPOzs7OzBDOzs7VTtPLE87Ozs7Z0I7Ozs7Ozs7Ozs7OztZOzs7YTthO29DO2E7b0M7YTtvQztZLE87Ozs7cUI7Ozs7Ozs7O1c7VztZOzs7VywwQjtXLE87Ozs7b0I7Ozs7OztPO1EsTTs7O1E7Ozs7OztZLG9CO1ksTztXOztTO2dDO1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7Ozs7Tzs7OztXLG9CO1csTztVOztRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7Ozs7Tzs7Ozs7USw0Qjs7O1csUzs7VztXLE87Ozs7eUM7O1U7TyxPOztPOztRO1EsNEI7O1EsNEI7TyxPOzs7Ozs7VyxPOzs7O3lDOztVOzs7Vyw4Qjs7Ozs7Ozs7O2E7Ozs7O2M7Ozs7OztXLEksTzs7Ozs7Ozs7O1c7VztZOztXLDBCOztXO1k7O1csMEI7VyxJO1c7WTs7VztZOztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztROztXOztPLE87Ozs7O2lCOzs7Ozs7MkI7O087O1E7USw0Qjs7TyxPOzs7O3FDOzs7Ozt5Qjs7O087Tzs7Rzs7O0ksMEI7Ozs7Ozs7OztJLE87OztJLFE7SSwwQjtJLE87Ozs7O2M7Ozs7Ozs7Szs7Ozs7SztLLDBCO0ssMEI7O0ssTzs7Ozs7OzttQzs7Ozs7Ozs7STtJLFEsTTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7Ozs7SztLLDBCOztLLDBCO0ssTzs7Ozs7Ozs7Ozs7STs7SSxPOzs7OztjOzs7Rzs7cUIsa0Isd0I7O0s7aUI7OztlOzs7OztxQzs7ZTs7OztxQzs7STs7SztLOztJOzt1Qix3Qix3QjtLOzsrQjs7Ozs7O1UsYSxPOztVLE87Ozs7O29COzs7O1M7TSxPOzs7SyxPOzs7Ozs7O2U7OztJOztLOztNO00sMEI7TSxPOzs7O29DOzs7O0s7SyxPO0k7SSxPO0c7OztLLE87Ozs7O2U7OztJO0k7SSwwQjs7STtLOzs7SSxPOzs7OztjLFE7YywwQjtjLE87Ozs7O3dCOzs7YTs7Ozs7Ozs7OztHOzs7Ozs7Ozs7O0ssUzs7SyxPOzs7OztlOzs7STtJO0s7O00sNEI7SyxPOzs7Ozs7OztlO2dCOztpQjt3QztnQixPOzs7OzswQjs7Ozs7Ozs7ZSwwQjtlLDBCO2UsSTtlLE87Ozs7O3lCOzs7OztjOzs7OztJLDBCO0ksTzs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs7O3NCO2MsMEI7YyxJO2MsTzs7Ozs7d0I7OzthOzs7Ozs7STs7O0s7O0ksbUI7SSwwQjtJLE87Rzs7O0s7Ozs7TTtLLDBCO0ssMEI7SztLLDBCO0ssTzs7OzttQzs7Ozs7OztJO0c7O0ksZ0M7Ozs7Ozs7Ozs7Ozs7SSwwQjtJOztLLE87ZTtlOzs7OztxQzs7OztJLE87YztjOzs7OztvQzs7OztJOzs7eUIsTzs7O3FCLE87O08sTzs7MEIsTzs7O08sTyx3Qjs7Rzs7STtLOztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COztHOztJO0k7Z0I7O0ssUyx1Qjs7O0c7O0ksUzs7STtHOztJLGlCO0c7O0k7Ozs7Ozs7O2dCOzs7Rzs7STs7Ozs7Ozs7Z0I7O0ksTztHOzs7SSxhOztLLFk7a0I7a0I7SyxPO0k7SSxPO0c7OztLLFk7SyxPO0k7SSxPO0c7O3lCLHFCLFk7eUIsdUIsYzt5QixzQixhO0k7SztHOzt1QyxnQztJO0s7RztHO0k7STtJO0k7O0k7Ozs7Ozs7Rzs7STs7SyxNOztLLHdCLE87SyxPOztJOzs7SyxPO0ssTztJLE87Rzs7STs7SyxNOztJO0c7O0k7STs7O2EsWTthO2E7WTtHOztJO0k7OzthO2MsUzs7O2E7YTtZO0c7O0k7OztLOzs7STtLLFc7Szs7OzsrQjs7Ozs7cUIsd0I7SSxPO0c7O0k7SyxJO0ssSTs7OztJO2dCLE87SyxJLGlCLEksOEI7Ozs7Ozs7TTtNLEk7OztLO00sc0I7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHOzs7STs7SyxJOztJO2dCLE87SyxJLGlCLEk7SzttQixNO007OztPO1EsTTs7O087Ozt1QixNO007TztTO1c7TyxPO007Ozs7OztNOzs7OztHOztJO0k7Rzs7STtLLEk7SyxPO0ssTztJO0ksYTtJO0c7O0k7OztHOzs7Ozs7Ozs7SSxTLE87STs7Szs7O0ksTzs7b0IsYyw2Qjs7SSxVLE07SSxrQjs7O0s7O08sYztPOzs7Ozs7OztHO3NCLGMsbUI7O0k7STs7O0c7c0IsWTtzQixrRDs7SSxzQjs7Szs7TTs7Ozs7Ozs7Ozs7SyxPO0k7SSxRO0k7O00sTTtLOzs7TSxJO007TTs7OztPLEksd0M7Ozs7Uzs7O1c7O1M7Ozs7O087Ozs7O0ssYzs7O0ssTTtJOzs7O0ssTTtLO0s7Ozs7O00sSSxZOzs7Ozs7OztTOzs7OztROzs7OztNLHVCO007Ozs7O0ksYztHOztJO0ssSTtrQjs7STtHOztJLGdDOzs7O1E7O1E7UyxJOzJCOztROztRO1MsTTs2Qjs7UTs7USxPOzs7Z0I7aUI7Ozs7SyxNOztnQjthOzs7YTs7O2E7Ozs7Ozs7O0k7OztHOztJO0ssTTtJLHNCOzs7OztPLE07TTs7Ozs7O0ssSTtLO2dCO007TSxHOzs7TztROzs7Ozs7O0k7SSxXOztLOztJO0k7SSxJLGUsc0I7O0s7OztNO087Ozs7Ozs7O1U7Ozs7WSxNOztXO1csSyxrQzs7Ozs7Ozs7Ozs7O087TyxJOzs7Ozs7Ozs7Ozs7OztPO087Ozs7Ozs7TTs7O0k7STtJO0c7Ozs7Szs7O007O0ssTTs7SSxNOzs7STs7O0ssVzs7OztJLHNCOztLOztLO0k7SSxJLFEsOEM7O0ssTTtJLEksWTs7SztNLGlCOztPOzs7UTs7OztPOzs7OztJO0ksVztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7SSxvQjtJOzRCOzs7O0csSSxtQjt1QixXO0c7STs7OzsyQixTOzs7Ozs7O1M7UztzQjtVO1csUzs7Ozs7UTs7UztTLE07UTtxQyx5QixTO29DLHlCLFM7O1M7UzttQjttQjtRO2dDLDJCOztTO1E7O1M7O1U7Vzs7O1UsZSxPOztVLE87OztxQixPO1MsTTtROztTO1M7UTs7UztROztTO1M7UyxNO1E7OztTO1M7UTs7Uzs7VTtVOztvQixTOzt5QyxTOztxQjtvQjs7Ozs7cUUsUzs7OzttQjs7UztTOzswQywrQjs7O1E7OztTO21COztROztTO29CO1M7O1U7UyxPO1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVOztVO1MsTzs7UTs7UyxlO1E7O1MsZTtROztTO21COztRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxvQjtTO2lDOzs7UztVLE07O1M7bUI7bUI7UTs7UztTLEcsVztVO1MsTTtROztTLEcsVztVO1MsTTtROztTO1M7UTs7UztTO1E7O1M7Ozs2Qjs7VTs7OzhCOztTO1E7bUQseUI7O1M7Ozs7O1U7Uzs7O1M7VTtVO1U7UztROztTO1MsTztROztTO1MsTztROzZCLHVDOztTO1U7VTtTLE87UTs7UztVLE07O1E7O1M7UztROztTLEksZTtTO1E7O1M7Ozs7OztTO1E7O1M7Uzt3QjtVO1csUzs7Ozs7UTs7UztTOzs7O21CLE8sYztrQjs7UTs7UztTOzs7O21COzs2QixjO2tCOztROztTLE87UTttQyx1QjsrQix1Qjs7UztVOztXOzs7O2M7YzthO1UsTzs7Ozs7Ozs7OztTOztVOztVLFE7cUI7Uzs7VTtTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7O1c7Vzs7OzsyQjs7VztXOzs7UTs7UyxvQixXO1MsTztROzs7Ozs7O1MsSSxRLHdCLFU7OztVO1U7VSxPOztTO1E7O1M7O1E7O1MsbUMsTztTO1M7UyxpQjs7OzBDLGtDO3dDLGlDOztTO1MsWTs7VTs7VyxPO1csTztVO1U7VSxXO1UsTzs7Uzs7UTs7UztTOztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLFE7O1M7O1UsTzs7Uzs7VTtXOztZLE87WSxPO1csTzs7Ozs7Ozs7OztrQjtVO1M7O1UsUTtVOzs7O1c7VztVO1M7O1UsSyx5QjtrQjs7VTtTOztVLFE7VSxJLFk7Ozs4Qjs7O1U7VyxVO1c7VTtTOztVLFE7VTtVO1M7O1U7OztVO1U7Uzs7VTs7VztZO2E7Ozs7YyxPO2E7O1k7WTs7VSxPO1M7O1U7Ozs7VTtXOzs7Yzs7O2M7Ozs7ZSxNO2M7ZTs7a0IsMkI7a0IscUI7b0M7a0I7a0I7O2U7O2tCLFE7Ozs7O2U7O2tCLEcsOEI7MkI7Ozs7bUI7O2tCLE07OztjLE87OztVLE87Uzs7VTtXLFE7Vzs7VTtTOztVO1U7Ozs7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7O29COzs7Uzs7VTtVOzs7O2U7Z0IsUztnQixlOzs7O3dDLE87OztlO2dCOzs7O1csTzs7Uzs7VTs7Ozs7O1csTTs7OztXO1k7O2U7Z0IsUztnQixhOzs7O3VDLE87OztlO2dCOzs7O1csTzs7Uzs7VTtVOzs7OzBDOztlO2dCOzs7O2U7O1csTTs7Uzs7VTtXO1csZTs7Uzs7VTs7O3FDO21CO21COztTOzZCLDJCOztVLG1COzs7O1M7O1U7O1c7WSxNO2tCOzs7VTtTOztVO1M7OztVOzs7VTs0QixTO2tDLFM7VSxPO1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7O1M7O1U7c0I7O1U7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0k7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7STs7OztJOzs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7NEIsTyxzQzs0QixPLHVDOzZCLGdDOztJLGlCLDZCO0k7Rzs7STtHO2dDLHlDOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzBCLDhCOztJO0ksTztHOztJO0c7O0ksMEM7OztJLE87Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7O0k7K0I7OztLLE07O0k7OztJLFk7O0k7OztJLFk7O0k7OztJLE07Rzs7STtLO0s7SSxNO0c7O0k7SSxNO0c7O0k7SSxNO0c7O0k7Ozt3QjtJOzs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTTs7OztJO0c7O0kscUI7Ozs7Ozs7Ozs7OztnQjs7Z0I7OztNOzs7STtHO0c7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7O0k7Ozs7OztLO0ssUTs7O0ssSztJOzs7O0ksVztJOzs7SSxJO0k7Rzs7STtJLFc7Rzs7STtJO0c7eUIsaUM7O0k7OzRCLFcsOEI7SSxPO0c7O0ksbUMsYztJLE87Rzs7STtJLE87Rzs7Z0Msc0M7SSxPO0c7O0k7OztJOzs7Ozs7ZTtHOztJO0s7OztLLE87SztJLFU7OztHOztJO0s7OztLLE87SztJLFU7O0k7Rzs7SSxxQztjOztJOzs7SSxxQztjO0k7O0s7SztJLE87OztJOzs7Ozs7SyxTO0s7STs7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0ssTztLLE87dUIsd0I7SSxPO0c7O0k7SztNLGE7TSxjO00sTztNLE87TSxPO0ssTzs7STtLLE87SyxnQjtLLE87SyxPO0ksTztHOztJO0c7O0k7Rzs7STtHOztJOzs7O2MsVztpQyx3QjtjLE87YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7OztLO3FDO0k7Ozs7O1k7Ozs7O0k7YTtJO0c7O0k7STtHOztJO0ssTTtJOztLLG1CO0sscUM7dUI7dUI7dUI7O00sTTs7TSxNOzs7TSxNOztLO0k7STs7OzJCOzs7O1EsMEM7USxrQjs7OztJO0c7cUMsNkI7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssSztLLE87SztJOzs7STs7Szs7Ozs7OztLLEs7SyxLO0s7STtHOztJOztLOzs7OztLO0s7Tzs7VTs7OztJO0c7O0k7O0s7Ozs7O0s7SztPOztVOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SyxNO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJLE07Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLE87SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLOztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0ssTztLLFE7SztLLEk7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SyxPO0ssUTtLO0ssSTtJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87SztPO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLLFE7SyxPO0s7Tzs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLE87SztLLFE7SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLLGdCO0s7SztJO0c7O0k7O0s7Ozs7O0s7OztLOzs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0k7STtLLFc7SyxPO0s7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SyxLO0k7STtLLE87SztJOzs7STs7Szs7Ozs7SyxLO0ssSztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLOzs7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssTztLLFc7SztPO0ssUTtJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLOzs7O0s7STtJO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0ssSztLLEs7SztLOzs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztLO0s7O0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztLLEs7SztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLLFc7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLLGlCOztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0s7O0s7STtHOztJOztLOzs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7OztLOztLLFE7STtHOztJOztLOzs7Ozs7Szs7SyxRO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7TztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0ssTztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0k7SyxNO0k7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87Syx5QjtJO0c7O0k7O0s7Ozs7O0ssUTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLLE87SyxXO0s7Tzs7Ozs7Ozs7OztLLFE7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7Ozs7SyxJO0ksSSx1QjtJOzs7STs7Szs7Ozs7Ozs7O0s7Szs7OztLLEk7SSxJLHVCO0k7Rzs7STs7Szs7Ozs7Ozs7SztLOzs7O0ssSTtJLEksdUI7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLOztROzs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SyxJO0k7Rzs7STs7Ozs7Ozs7O0ssTztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7Ozs7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLLE87SyxPO0ssTztLLEk7STs7O0k7O0s7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7OztJOztLOzs7Ozs7OztLLE87SyxPO0ssTztLLEk7STtHOztJOzs7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJOzs7STs7Szs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7O0s7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLLEs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SyxlO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7O0s7STtJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7OztLOztLO0s7O0k7SSxNO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0s7SztLLE87SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SyxPO0ssUTtLO0ssTztLO0k7OztJOztLOzs7Ozs7O0s7SztLLE87SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0ssTztLOztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7O0ssSTtJOzs7STs7Ozs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7STtJO0s7SyxJO0s7STtHOztJOztLOzs7Ozs7O0s7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SyxLO0k7STtLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7OztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLLE87SztPOzs7Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0ssTztLO0ssTztLO087Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxRO0ssTztLLE87SztPOzs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SyxPO0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLOzs7Szs7SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0ssTztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7Ozs7TSxNOzs7STtLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0s7Szs7Ozs7STs7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLOztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7OztLO0ssbUI7OzJCO0ssVztLO0s7Tzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SyxPO0s7SztPOzs7Ozs7OztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLOzs7SyxPO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLLE87SztLO0k7OztJOzs7Ozs7Ozs7O0ssSztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7SyxLO0s7STs7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0s7Szs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7STtLO0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxPO0s7SztPOztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssTztLO0s7Tzs7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0ssTztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0k7SyxXO0s7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7O0s7SztLOztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0s7SztPOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLLEk7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7SyxNO0s7STtHOztJOztLOzs7OztLO0ssTTtLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztLOzs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0ssSztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxLO0s7STs7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SyxLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87SztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOztLO0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztJO0c7O0k7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SyxPO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0ksZTs7SyxNO0k7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLLE87SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLEk7STtHOztJOzs7Ozs7Ozs7SyxPO0ssTztLO0ssSTtJO0c7O0k7O0s7Ozs7O0s7SyxJO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SyxLO0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7O0s7Szs7Syw0QjtJOzs7O0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7RztJOzs7UTs7Uzs7OztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO3dELE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHOztJO0c7O0k7OztLO0s7Ozs7OztJOzs7STtJOzs7MEI7SSxjOzs7STtJO0c7O0ksZ0I7O0k7SSxJLFUsNkI7STtJO0c7O0ksTTswQjtHOztJLE07Rzs7STs7OztNLFU7Ozs7Ozs7Ozs7TyxNOzs7TyxNOztNOzs7Ozs7Rzs7STs7OztTOztTOztTOzs7c0I7STtHOztJLGdCO0ksTTs4QjtHOztJOzJCLE87STs7cUM7Rzs7STsyQixPO0k7O3FDO0c7O0k7SSxPO0c7O0ksVztJO0c7O0k7STs7Ozs7OztHO0csSSx1Qjs7SSxXO0ksTzs7RztHLEksNEI7O0k7O0c7O0k7Rzs7SSx1Qjs7OztpQjs7TTtPLFU7Yzs7OztROztTLE87Z0I7OztROzs7Uzs7WSxrQjs7WSxPO1c7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7OzttQjs7UTs7UyxlO2dCOzs7OztnQjs7Ozs7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7O0k7RztHOztJLGE7STtJO0ssTzs7STtHOztJO0k7Szs7UTs7Ozs7OztVOztVOzthOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1UsbUI7VTs7OztTLFM7cUM7UztTO1UsTzs7Uzs7UyxnQzs7UztVLE87O1M7O1M7O1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7UzttQjtTO1UsVztVOzs7O2lDOzs7O1M7bUI7UztTOztTO21CO1M7O1M7bUI7UztTOztTO2dCO1M7O1M7VTtZOztVLFE7Uzs7UztrQjtTOztTO1U7WTs7VSxVO1M7O1M7O1k7Uzs7UztVOzs7Uzs7UztVO1k7O1U7OzZCOzs7Uzs7UztVO1k7O1UsVztVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTO1U7WTs7VSxhO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1MsZ0M7O1MsUTtTOztTLFU7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7UztVOzs7Uzs7UztVOzs7O3dCOzRCOztTO1U7WTs7VTs7O2UsYTtlO2M7Ozs7Uzs7O1UsVztVOztTO1U7OztTOztTOztZOztTLDJCO1UsVztVLFk7O1MseUI7O1MsWTtTOzs7O1M7O1M7UyxzQjtTO3VCOztVOztVO1c7O2M7Ozs7OztXOzs7VTtXO1c7VyxNO1c7VztXLFM7VztXLFk7OztXLEksZTs7Ozs7OztrQjs7OztXOzs7VTs7OztvQzs7OztTOztTOztTOztTOztTOztTOztTOztTOztTO2lCOzs7Szs7O0c7MEI7O0k7a0I7O0s7TTs7Uzs7O007Ozs7OzttQztROzs7OztTLE07OztTLE87Ozs7UTs7OzhCO1E7OztZOzs7Ozs7Vyx3Qjs7WSxNO1c7O1ksTztZLFE7O1c7Ozs7Ozs7UTs7O1E7O1M7UyxROzhCO1E7OztZOzs7Ozs7Vyw0Qjs7WSxNO1c7O1ksTztZLFU7O1c7Ozs7Ozs7UTtRO1E7OztROztRLGdDOztROztROztROztROztROzs7O1MsTTtROztTLE87UyxVOztROztRLGdDOztRO2dCOzs7Rzs7STtrQjs7SztNOztTOzs7TTs7Ozs7OztROztTO1MsUTtRO1Esa0I7OztRLFE7UTs7O1E7O1E7O1E7OztRO1MsTTtTLE07Uzs7Ozs7O1M7VTtVO1k7ZTtzQztRO1M7O1M7Ozs7UyxVO1M7O1E7Ozs7UyxVO1M7O1E7UTs7OzZCOztRLFU7UTs7O0c7O0k7O0s7TTs7Uzs7O007Ozs7O1EsZ0M7OzZCOztROztXOztRLEc7UTs7O1EsUTtROzs7Rzs7STtJO0s7O1E7Ozs7O1M7O1M7aUI7O0s7OztHOztJO2M7O0ksTztHOztJLGU7O0s7SztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtVO1csTTtXLE07VyxVO1U7VSxHLGtCOzs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7O1U7Ozs7Ozs7Ozs7O00sYzs7Ozs7UyxVO1M7UyxVO1M7OztTLFU7UztTOzs7Ozs7UyxVO1M7UztVLE07VSxNO1M7UztVLE07VSxNO1M7UyxVO1M7OztTLFU7UztTO1UsTTtVLE07UztTLFU7UztTLFU7UztTOzs7TTs7STtJO0c7O0k7Ozs7Yzs7SSxPO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TyxLO087TyxNOzs7Ozs7TyxVO08sRztRO08sTTs7TSxHO087TyxNOzs7OztHOztHLDZCO0c7RywwQjtHO0csOEI7RztHLHVCO0c7Ryx3QjtHO0cseUI7RztHLHNCO0c7RywwQjtHO0csMEI7RztHLHdCO0c7Ryx3QjtHO0csMkI7RztHLG1DO0c7RyxpQztHO0cseUI7O0ksOEI7Ozs7Tzs7Ozs7UTs7ZTtjOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7Ozs7OztVOzs7O2lDOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7STtLLGE7O0ksMEI7O0ksMEI7STs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7O0s7STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7OzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7O1E7Ozs7O1E7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1EsTzs7OztRO1E7OztRO1E7OztrQjtrQjtrQjtpQjs7Ozs7UTtROzs7UTtROzs7UTtROzs7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7OztROzs7OztRLE87OztROzs7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7Ozs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1EsTzs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtROzs7UTtROzs7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7OztRO1E7OztRO1E7UTtROzs7UTtROzs7OztRO1E7Ozs7Ozs7Ozs7UTtRO1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztROzs7OztRLE87OztROzs7OztRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7UTtRO1E7Ozs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7eUI7OzJCOzs7TztRLE87O087Ozs7O1E7UTs7UTtTLE87O1E7O087USxPOztPOzs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7O1E7UTtRO1MsTzs7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJOzs7STs7O0k7OztJOzs7STs7OztJO0k7OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJOztLO0s7SztJO0ksTztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTtROzs7O1E7UTtROzs7OztRO1E7OztROzs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPOztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087Ozs7OztPOzs7TztPO087OztPO087OztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7SSxZOztJOzs7STs7O087Tzs7O08sTzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7Ozs7O0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7Rzs7STtJO0k7O0c7OztJO0k7Ozs7STtJOzs7O0k7STtJOzs7STs7Szs7OztNLE87O0s7SztLOzs7STtJO0c7Z0MsdUM7bUMsdUM7O0k7OztLO0s7Ozs7Ozs7STttQjs7Ozs2QixPOzs7cUIsTzs7TyxPOzs7TyxPOztPLG9CLE87TyxPOztHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXOzs7O0ksYzs7O0ksZ0MsTztJLFc7OztJLFk7O0ksVzs7OztJLGdCOzs7SSxlO0k7Ozs7SyxRO0ksTztHOztJOzs7O0ssUTtLLFU7STtLLE87STs7O08sTzs7Tzs7OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O087OztROztXOzs7O1ksTTtZLFE7VztZOzs7YSxPOzs7OEM7VyxPOztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O08sZ0MsTztPLE87OztPOzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7Ozs7YSxPO2EsTzs7OzRDO1csTzs7USxPO08sTzs7O087OztRLE87USxzQjtRLE87TyxPOzs7Tzs7OztRLE87USxzQjtRLHNCO1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7STtLOzs7O00sTztNLE87SyxXOztJO0ssVztLLE87SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7Ozs7OztJOztLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLLE87SztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7O0k7Ozs7SyxNO0ssUTtLLE87SSxPOzs7STs7Ozs7SyxNO0ssUTs7Szs7OztNLGU7TTtNLHNCO2lCOzs7STtJLE87Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7OztRLE87USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O08sa0IsTztPLE87O087Ozs7OztRLE87UTtPLE87OztPOzs7Ozs7USxPO1E7TyxPOzs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SyxPO0ksTzs7O0ksWTtJLGlDLE87STs7O0k7Ozs7SyxRO0ssVTtJOztPLGlCO08sTzs7TyxrQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O087OztRLE87USxPO1EsTztPLE87OztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CO08sTzs7OztJOztPLGtDLE87Tzs7Tyx1QztPOztPOzs7USxPO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPLG9DO087Ozs7STs7O0ssUTtJOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPOzs7USxVO1EsTztPLE87Ozs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxRO0k7O087OztRLFU7USxPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O08sbUIsTztPLE87O087Ozs7USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLGU7UTtPLE87OztPOzs7USxlO08sTzs7O087OztRLGU7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O087Ozs7USxPO1E7USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7O1EsZTtRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087Ozs7OztRLE87USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87USxPO08sTzs7O087Ozs7USxPO1EsZTtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O08scUI7TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7USxPO1Esc0I7USxzQjtRLE87TyxPOztPOzs7O1EsTztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPOzs7USxlO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7TyxvQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7USxPO1EsTztRLE87USxPO08sTzs7O08sbUIsTztPLE87Ozs7STs7Ozs7SztLLE07SyxNO0ssTTtJLE87OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O087OztRO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1E7OzthOzs7YyxPO2Esb0I7YSxXO1k7O1E7TyxPOzs7Tzs7O1EsZTtPLE87OztPOzs7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08sbUI7TyxPOztPLG1CLE87TyxPOztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxpQixPO08sTzs7Tzs7O1EsTztRO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87Ozs7O0k7O0ssVzs7O0ksYzs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7O1EsOEI7USxPO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7OztRO1E7TyxPOzs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7OztJOzs7Ozs7SyxPO0s7SyxXO0ssVztJLE87O0c7O0k7Ozs7O0ssTztLLE87SyxXO0ssVztJLE87Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7O3lCLFc7OzJCLFc7OzJCLFc7O087OztRLGU7TyxXOztHOztJOzs7OztLO0ssVztLLFc7SSxPOztHOztJOzs7OztLLE87SyxXO0ssVztJLE87O0c7O0k7Ozs7O0s7SyxlO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0s7SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOzJCLFM7O0k7Ozs7OztLLE87SztLLFc7SyxXO0ksTzs7Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7SSxnQyxPO0k7Rzs7STs7Ozs7OztLO0ssZTtLO0ksb0I7STtLLFc7SyxXO0ssVztJLE87Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksTztHOztJOzs7O0ssTztLLGU7SSxXO0c7O0ksVztJLE87RztHOzs7O1E7UyxPO1MsTztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07O0k7SyxPO0k7O0s7O007TSxPO00sZTtLLE87Ozs7O0k7STtLLE87O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7NkIsd0I7c0IsbUM7O0ksVztJLE87Rzs7STtLO0ssTzs7STtJLE87Rzs7STtLOzs7O00sVztNLFc7TTtLLE87O0k7SSxPO0c7O0k7SyxPO0s7OztVOzs7VztVLE87OztJO0c7O0k7SztLLE87SyxlO0k7Rzs7STs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7OztLOztNO007YTs7SztNO2E7STs7Szs7Syw4Qjs7Szs7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O1E7Ozs7O0ksTztHOzs7SzswQjs7O007Ozs7Ozs7Tzs7TSxPO0s7O007Ozs7Ozs7OztROzs7Tzs7TSxPO0s7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7O1EsbUM7USxXOzs7O00sTzs7Ozs7Tzs7Ozs7Tzs7Ozs7Ozs7O087Ozs7O087Ozs7O087Ozs7O087TyxjOzs7OztPO1E7Ozs7Ozs7Ozs7OztjOzthLE87Ozs7OztXO1csTztVO29COzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7O087Ozs7O087UTs7VyxtQixNO1c7VyxPO1U7UTtPLE87OztPOzs7OztLO0k7SSxPO0c7OztLOztNO0s7STtJO0ssVztLO0ksTztHOztJLFk7Z0IsTTs7O0s7O0k7Rzs7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztNO08sVztPLE87Ozs7TTs7Tzs7O0ssSSxtQztLLFc7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJO0k7SyxLO0s7TywyQjs7SyxVOztLLFU7SztLO00sUTtNLEs7SztLO0s7SyxPO0k7SSxPOztjOzs7aUI7O2dCO0c7O0k7Ozs7OztPLGM7Tzs7OztJOzs7STs7Ozs7O08sYztPOzs7O0k7OztJO0ksVztHOztJO0ksVztHOztJLGtELGM7Rzs7STtLLGtDO0s7TTs7O1U7VztZLE07WSxNLG1CO1c7OztXOztZO21DLE0sb0M7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087TztPOzs7TTtnQjs7Szs7O0s7O00sTTtLO0ssTzs7RztHLDhDLG1COztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztpRCxPO2lELE87OztJO0ksTzs7O0ksWTs7SSxPOzs7O0ksTzs7OztJO0k7O0ssc0IsTztLLE87OztJLE87Ozs7STtJOzs7SyxPOzs7SSxPOzs7O0k7STs7Ozs7UTtRLE87O1EsbUIsTztRLE87OztRO1EsVztRLE87O1E7O1Msc0I7USxPOzs7UTtRLFc7USxPOzt5QixPOztRLGtCLHNCO1EsTzs7MkIsTzs7O1E7UTtTLE87UyxzQjtTLHNCO1EsTzs7eUIsTzs7STs7Ozs7Ozs7Ozs7STtJLFc7SSxvQjtJO0k7SyxLO0ssSztLLEs7STs7SztLO0ssTzs7STtJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJLG9CO0k7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7Szs7OztNLHNCO0s7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVztPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFc7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFc7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxXO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE87TyxPOzt5QixPOztPLGlCLE87TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGdDLE07TztPLE87OzBCLE87OztPLFM7TztPLE87OztPO087USxPO1Esc0I7TyxPOzs7TztPLE87OztPO08sTzs7TyxrQixPO08sTzs7O087TyxnQjs7eUIsZ0I7O087OztRLE87USxzQjtRLHNCO087TyxnQjs7O087Tzs7O087TztPLE87O08sb0IsTztPLE87OztPO087TyxnQjs7O087TyxPOzs7TztPLE87OztPO087TztPLE87OztPO08sTzs7O087TyxTO08sTzs7MEIsTzs7NEI7OztPO08sTzs7Tzs7USxPO1Esc0I7USxzQjtPLE87OztPO087TyxPOzs7TztPLE87OzJCLE87OzJCLE87OztPO08sZ0I7OzBCLE87OzJCLE87OzJCLE87OztPO08sTzs7Ozs7OztPO08sVztPO08sTztrQyxPOzs7Ozs7Ozs7STtJO0k7SSxPOzs7O0k7STtpQzs7O3dCOzs7TztPOztPOztPOztPLGtCLE07TyxPOzs7TztPOztpQjtpQixrQjtpQjtpQixPO2dCOzs7MEIsZ0I7O087O1EsTTtRLG9CO1Esb0I7TyxPOztPLG9CLE07TyxPOzs7TztPLE87OztPO08sTzs7MEI7OzBCLE87OzBCOzswQixPOzt3QixPOzs7TztPLE87Ozs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOztPLG1DLE07TztPLE87OztPO08sTzs7d0IsTzs7O087TyxPOzs7O0kscUMsTzs7SSxPOzs7O0k7STs7O3lCLE87OztPO087OztPO087OztPO08sTzs7d0IsTzs7d0IsTztrQyxPOzs7OztJO0ksVTtJLE87OztJOzs7Ozs7SyxNO0ksa0I7STtJO0k7STtJLE87OztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7O0ksVTtJLE87Rzs7SSxVO0ksTztHOztJOzt5QixPOzsyQixPOzsyQixPOzs7TztPLGdCOztHOztJOzs7O0k7STtJLE87Rzs7STs7OztJO0k7SSxPO0c7O0k7Ozs7O0k7SSxTO0k7SSxPO0c7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7MkIsUzs7STs7Ozs7STtJO0k7SSxPO0c7O0k7Ozs7STtJO0ksTztHOztJOzs7O0k7STtJLE87Rzs7STtJO0ksTztHOztJOzs7Ozs7O0k7SSxrQjtJO0k7SSxTO0k7SSxPO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLE87Rzs7STtJO0ksUztJLE87Rzs7SSxVO0ksTztHO0c7STs7O1E7UTs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7Ozs7Ozs7b0IsdUQ7SSxZO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O3VCOztROzs7OztJO0c7O0k7Z0I7O0k7Rzs7SSxJOzs7OztLLE87Ozs7OztnQixNOzs7Ozs7O087OztROzs7O1k7O3FCLE87b0I7Ozs7Ozs7WTs7cUIsTztvQjs7Ozs7Ozs7Ozs7Ozs7OztlOzt3QixPO3VCOzs7Ozs7Vzs7b0IsTzttQjs7O1EsTTtPLE87Ozs7Ozs7OztJLE87Rzs7STs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7O0k7Rzs7SSxHLHNDO0ksVztJLE87Rzs7STs7Ozs7eUQ7O0s7O0k7Z0I7O0k7RzsyQixPLDJDOztJLEk7O0s7O007OzBDOztNO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7SSxPO0c7O0ksSSw4Qjs7SyxjO2U7SztLLE87STtJLE87Rzs7STtJO21COzs7Ozs7Szs7Rzs7STtnQjtJOztLO0ssTTtJLE87Rzs7STtLO0s7STtLOztNO00sTTtLLE87O0k7Rzs7STs7OztNOzs7STtHOzhCLHlDOztJOzs7O007OztJO0c7K0IsMEM7O0k7O0s7SyxPO0k7SSxPO0c7O0ksTztHOztJOztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7O1M7OztROzs7Ozs7Ozs7Ozs7OztXLGMsTzs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7UyxJLFUsNEI7Ozs7OztVOzs7Ozs7Szs7Ozs7O2tFOzs7SSxXO0k7SztNLE07TTtLO0ssVTtLO0s7Ozs7SztLLE07O0c7O0k7Ozs7SztJO0c7Ryw4Qjs7STs7OztLO0k7RztHLHFCOztJOzs7O0s7STtHO0csZ0I7O0k7Ozs7SztJO0c7RyxrQjt3QixPLHdDOztJLGtCO0ksTztHOztJLGtCO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7O0k7SSxpQjs7SztJO0c7O0k7SSxpQjs7OzttRDs7Ozs7MkIsbUIsNEI7USxPOztJO0c7O0k7Ozs7Ozs7OztRLEs7UTs7Ozs7Szs7SSxrQjs7Ozs7O1E7OzJCOzs7cUI7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs0Qjs7NEI7Ozs7UTs7O3FCOzs7MkIsbUIsNEI7USxPOzs7Ozs7Ozs7O0s7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7MEI7O3NCOztJO0c7O0k7O3VCOztJO0c7RztJLE87Rzs7STtrQjs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OztvQjs7b0I7O0k7Rzs7STtJLGlCOzs7b0I7OztRLE87OztJO0c7O0k7Ozs7Ozs7Z0I7Rzs7STs7Ozs7OztnQjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsTyx1QzswQixPLHVDOzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJO0k7O0k7SSxXO0c7eUIsa0M7OztJLG9CO0ksVztJLFc7Ozs7O0s7SyxPO0k7SSxPOzs7SSxRLE07STs7O0ssUTs7O0ksSSxrQzs7OzRCOzs7Rzs7STs7dUIsTzs7Tyw4QjtPLE87ZSxNOztHO0c7O0k7Szs7Rzs7OztLO0s7OztRLEksSTs7OztvQjs7UTs7UTs7O1M7Ozs7OztROzs7Ozs7SSxJOzs7O0s7Szs7O0k7SSxPO0c7O0k7dUI7O0k7RztxQywrQjs7STs7OztLO0ksVztJLE07Rzs7STtJOzttQzs7O1E7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRLDBCO1EsTzs7Ozs7O1k7WTs7YTs7O1k7VztRLE87OztRO1EsMEI7USxPOzs7Ozs7OztZO1k7YTs7YyxzQjthLE87OztZO1c7USxPOzs7OztRO1E7Z0Msa0IsUztTLE87UyxzQjtRLE87a0M7OztHOztJLFk7O0ksTzs7O0k7SyxrQixzQjtLLE87OztxQiwwQjtJLE87OztJOztLO0s7SztJO0k7STtJOzs7Szs7TTs7Uzs7UyxvQjtTLE87O0ssTzs7O3VCLDRCO0ksTztHOztJOzs7SztLLDBCO0ssTzs7O0k7Rzs7STs7SSxvQjtJLE87Rzs7STtHO0c7O0k7STs7bUM7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRO3FDLGtCLGtCOzs7OzJCOzs7Ozs7WTtZO1k7VztRLE87O1EscUIsc0I7USxPOzs7UTs7Ozs7UTtROzsyQjs7OztROztTOzs7WTthOztXO1EsTzs7OzswQjs7UTs7O1M7Ozs7Z0I7OztHOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7Ozs4Qjs7O1E7USxJOzs7O1E7OytCLGtCLHlCO1EsTzs7O1E7UTs7O1E7UTs7UTs7UyxxQjtRLE87OztRO1E7OytCOzs7Ozs7O1k7WTtZO1c7UTtROzs7UTtROzs7UTtROzs7O1E7O1MscUI7USxPOzs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7Ozs7K0Isa0IseUI7USxPOztROzs7O1M7Uzs7OztpQjs7Ozs7Ozs7Ozs7OztRO1E7O1E7Ozs7UztTLHFCO1EsTzs7Ozs7UTtTLE87O1E7O1E7OztTOzs7OztROzs7OztTO1M7O2E7Yzs7O1MsTzs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7WTs7a0M7O21DOzttQzs7cUM7O29DOztxQzs7VztRLE87OztRO1MsTzs7UTs7MEI7b0M7OztHOztJO0k7Ozs7MEI7OzBCLHdCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1MsTzs7UTtvQzs7O0c7OEI7O0k7OztJOzs7STtLOzs7O007SztLOztJLE87Rzs7d0IsNkI7STtLLE87SztvQiw0QjtJO0k7Rzs7STs7Rzs7STtJO0ksSSxnQzs7Ozs7MEM7SztLOztHOztJOzs7eUI7OzRCOzt5QjtlLHNCOztHO2tDLCtCLFM7O0ksTzs7O0c7O0ksaUM7OzswQixxQjs7Ozs7OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtRLFE7USxNO08sVzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTs0QixpQztPO087OzBCOztPOztROzs7TztPO1EsUTtRLE07TyxXOztPOztRLG9CO087Tzs7Tzs7USxvQjtPO087O087O3lCLHFCOztPLGtCO3lDO087O0ksa0I7STtJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7Ozs7UTtRLHdCO1EsTzs7O1E7UTs7Ozs7O21DOztxQzs7dUM7OztlO2U7O2U7eUM7OztRLE87OztROzs7OzBCOztROzs7Uzs7Ozs7Rzs2QztHO2tEO0c7O0k7Szs7O0k7STtHOztJLE87Ozs7O0c7O0ksaUM7Ozt5QixpQjs7TyxtQztPOzswQixxQjs7Tzs7USxvQjtPO087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTswQixtQztPO087O08sb0I7eUM7Tzs7MEI7O087O1EscUI7TztPOztPOztRLG9CO087Tzs7Tzs7UTs7OzBCLG1CO087USxRO1EsTTtPLFc7O087bUMsdUI7Ozs7STtJO0c7c0MsOEIsUzs4QztHOztJLG1COztJOzs7STtJOzs7OztRO1Esd0I7USxPOztROzs7O1M7UyxvQjtRLE87OztRO1EsSTs7OztROzsrQixrQix5QjtRLE87O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1E7OztTOzs7OztHOztJOzs7OzsyQjs7Ozs7Ozs7Ozs7OztRO1E7OzRCOztRO29DOztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxlO0ksYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0ksYyxPOztJO0k7Rzs7STs7OEIsTzs7OEI7O087OztRLE07USxNO08sTzs7Rzs7SSx3QztJOzs7SyxNO0ssTTtJLE87Rzs4Qiw4Qjs7STs7Ozs7Ozs7Ozs7O0s7O0ksTztHOztJOzs7Ozs7Ozs7O1MsTzs7Ozs7Szs7O0c7O0k7O087OzZCOzs7RztHOztJOzs7RzswQiw0Qjs2Qiw4Qjs7STtLOzs7OztnQztRLE87O1E7Ozs7UyxtQjs7NEI7USxPOzs7USxPOzs7Ozs7NEI7USxPO007RztzQyx1QjsyQix1Qjs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7O0ssSTtJOzs7Ozs7OztJLFksTzs7OztLOzs7STtHOztJLFE7STs7Ozs7SyxJO0k7O007OztLOzs7O2tDO2E7YTs7STtpQixNOzsrQjs7Ozs7OzttQixNO0s7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7O21CLE07Szs7OztNLEk7SyxZOzs7OztJLFk7SSxrQjtJO0c7Ozs7bUI7Szs7OztNLEk7SyxZLHlCOzs7Ozs7OztNOzs7O08sUztPOzs7OztvQjs7Ozs7Ozs7O0k7STt5QixpQztHOztJLFE7SSxjO0ksTztHOztJO0k7O2M7YyxxQjthOzs7O0c7Ozs7bUI7O0s7Szs7Ozs7STtJO0sscUIsTzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7Ozs7O1UsTzs7Ozs7O1U7OztXLE07VSxVOzs7Ozs7OztVLG9DO1UsVTs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7VSxPOzs7Ozs7VSxrQztVLGlCOzs7Ozs7UyxvQztTLGM7Ozs7d0I7O0s7O0c7Ozs7OztRLHFCLE07USxPOzs7O1Esc0M7Z0I7Ozs7Z0MscUM7O0k7STs7OzZCLE87Ozs7UTs7O1M7UztRLE87O0c7MEIsUzs7STtJOzswQixPOzs7TyxHO1E7UyxNO2U7O2tCO087TyxPOztPOzs7UTtRLE07USxNO1E7TyxPOzs7O0k7OzBCLE87OztPLE87OztPLE87Ozs7STtJOzs7NkI7Ozs7USxNOztHOztJOzs7OzJCOztROzs7Uzs7OztnQjs7Rzs7STtLO0s7OzswQjs7OztTOzs7VTs7OztJO0k7Rzs7STtJOzs7NkIsTzs7NEI7OztHOztJLEc7aUI7SSxNO0c7O0k7OztPLGEsNEI7Ozs7TztROzs7STtHOztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kseUM7STtHOztJLDZDO0k7Rzs7SSw0QztJO0c7O0k7Rzs7STtHOztJOztZOzs7OztHOztJO0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksd0I7STtLO00sTTtNOzs7O1ksTTs7Ozs7SyxNO0k7STtLOzs7Szs7SSxVO0k7SztNLE07TTs7OztZLE07STs7Ozs7Ozs7O0k7Ozs7Ozs7Rzs7STs7OztNOzs7Ozs7TztNOzs7O007Ozs7K0M7OztvQix1QjtJLEcseUM7SSxNO0c7O0k7O087OztJO0ssVTtLLGE7STtJO0s7Szs7Szs7Ozs7Szs7O1M7Ozs7O0k7STtLO0ssTTtLLGE7SztJO0c7O0ksTztHO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SyxNO0ssbUI7O0c7O0k7O08sTzs7TyxPO2UsTzs7Rzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7STs7Ozs7STs7Ozs7OzRCOzs7Ozs7Z0I7O0k7Rzs7STtLLFE7SyxVOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STswQixxQjs2QixTLGdDOztJLE87SyxXO0s7O0ksVztHOztJLE87SyxXO0s7O0ksVztHOzs7SSxnRDtJO0c7O0k7O087O087O087O087O087O087ZTs7Rzs7SSx5QjtJO0c7RztJOzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4Qjs0QixXLDhCOztJLFc7Rzt3QixXLDhCOzJCLFcsOEI7O0k7OztLLE87SSxPOzs7OztLO0k7SSxvQjs7O0s7TSxXO00sTzs7Szs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7OztRO1MsTzs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7O0ksTztHOztJO0ksWTtJO0c7RyxnQzsyQiw4QjtrQyxrQzswQiwwQjtzQix3Qjs7STtrQzt1Qjs7SSxJLFcsa0M7Ozs0Qjs7O0c7NkIsNkI7O0k7OztLOztJO0c7O2tDLG9DOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxPO0s7STs7SztLLG1CO0s7STs7O0ssMEIsc0I7Syw4QixzQjs7O007O0ssd0IsdUI7cUI7O21DOzs7O1EsSSxVOzs7O1MsSSxVOzs7Z0M7OztTLE87Ozs7a0I7O1E7O1E7OztTO1E7O1E7OztTO1M7O1M7Ozs7VTtVOzs7OztVOzs7UTtROztROztTLG9CO1MsTTtROztROzs7UztpQyxrQztTOzs7UyxJLFM7OztnQzs7O1M7OztROztRLDBCLFU7c0I7O1E7Ozs7SyxrQjtLO0k7O0s7SztJOzs4QiwwQjs7O007OztLLDZCO0s7O3lCOztRLGtDO1E7O3VDOzs7USxXOzs7UTs7eUI7aUM7O0k7O0s7TTtNLG9CO00sdUI7TTtNOzs7Ozs7OztJO0k7O0c7bUMsUzs7SSxNO0c7O2dDLDRDO0c7OztLOzsyQixPOzs7UTs7USxrQztROztJO0kscUI7Rzs7SSxzQztHO29DLHNDOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksaUI7SSxPO0c7O0k7SSxPO0c7O0ksSSxtQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksd0I7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtDO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSxvQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksdUI7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qix5QjtvQixZOzBCLHlCOztJOztPOztPOztPOztPOztPOztPO2U7O0c7MEIsZTswQixlOzJCLGdDO3VCLHlCOztJO0k7ZTtHOztJO0kscUI7RztHO0k7STs7Ozs7O0k7STtHO3lCLGlDO3lCLHFCLDJCOztJLEksaUIsaUI7STtHOztJO0ksTztHO3lCLHlCOztJLHNCLGlCLGtCOztHOztJO0ksTztHO3dCLHFEOztJOztPLE87O08sTztlLE87Ozs7STtLLE87STtJLFU7SSxPO0c7O0k7SSxPO0c7O0k7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1UsTTtVOzs7O0k7Rzs7STs7Ozs7O0s7STtHOztJOzs7Ozs7OztJO0c7O0k7STttQjs7Ozs7O1M7Ozs7O1E7Ozs7Uzs7Ozs7UTs7OztHO3FDLG1CLFU7RztxQjtHLFk7O0k7Ozs7Rzs7STtJOzs7Ozs7OztLOztHOztJOztHOztpQyxjOztJO0k7Ozs7Rzs7NkIsYzs7Ozs7Ozs7OztTOzs7Ozs7Szs7Szs7Ozs7Ozs7OztRLHNDOzs7d0I7O0k7OztJOzs7OztRLHNDOzs7NEI7O0k7Rzt3QixrQjt5QixrQjt5QixrQjtzQixrQjtnRDtHOzRCLG9COztJLEs7SyxNOzs7Rzs4QixxQjs4QixxQjt1QixVOzBCLFU7O0k7Ozs7SyxJOztHOztJO0ksTztHOzBEO0c7O0k7O0ssc0I7SyxPOzs7Rzs7STtJO0s7OztLOztHOzBCLGtDOzRCLGtDOzJCLGtDOzBCLGtDOztJO0k7O0s7OztNLEcsdUM7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sSSxPOzs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7O0k7Ozs7STtHOztJLFk7O0k7Rzs7STtJO0c7O0ksVztJO29CLDBCO0ksTztHOztJLDBCLE87aUMsTztJOzs7OztLOzs7SSxPO0c7RyxhOztJOztHO2dDLHNDOztJOzsyQzs7K0M7OzhDOzs4Qzs7Ozs7Ozs7Ozs7RztHLG9COztJOztHOztJLEksbUI7c0I7STs7STs7Ozs7O0s7Ozs7O0s7Szs7STtHOztJLEk7O0c7O0ksSTs7b0M7STtHOztJLEk7O29DO0k7Rzs7STs7O0c7NEIsZ0Q7O0k7STs7O21EOzs7O0ssTzs7Rzs7STtJOztNLE87OztNO087Ozs7Ozs7Rzs7STtJOztNLE87Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztHOzRCLHdCOztJOztJO0c7O0ksNEM7OztlOztJOzs7OztPLE07TTs7Ozs7O0ssb0M7O0ssSTs7OztJLHdCO2tDOztJOzs7O3VDOztJOzs7Ozs7VTs7Ozs7NEI7OztVO1M7TSxPOzs7TSxxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0cscUI7RyxxQjtHLDJCOztJLG9CO0ksTztHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0IsMEI7dUIsMEI7NEIsMEI7O0ksb0I7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxvQjtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXOztLLGtDLE87SyxPLGtCO0k7SSxPLFc7RztHO0k7OztRLE07TztJOzs7MkIsTywyQzttQywyQjs7SSxPO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0k7Ozs7Ozt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLFE7VTtJLEksSyw0QixROzs7OzBCOztROzs7USxNOztJO0c7MEIsTyxtQzs7STtHOztJLFc7SSxXO0ksVzs7SyxrQixRO3FEO0s7STtJLE87Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTtXOztJO0c7O0ksWTs7Ozs7O1EsZ0IsbUI7Ozs0Qjs7O0k7Rzs7STtnQjtJLG1CLFU7OztLO00sWTtNLE87OztJO0c7O0ksVzs7SyxtQixROzs7O08sTzs7O3VDLE87O0s7STtJO0ssUztLLE87SyxROzs7Ozs7OztRLE07O0ksVzs7SztLLE87STtJLGM7a0I7O0k7Rzs7STtJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7Ozs7O1c7VyxPO1U7TyxPO2UsTTs7Rzs7STtJO2dDLE8saUI7Rzs7OztxQzs7O007TTs7Ozs7Ozs7STs7SyxPOzs7cUIsTyxvQjtJLE87OztJOztLLFc7Ozs7SywyQyxPO0s7STtJLFc7OztJOzs2QyxPLG9CO0ssTzs7OztLO0ssTztJO0ksTzs7O0ksVztJLE87Rzs7STs7MEIsTzs7MEIsTzs7NEIsTzs7MEIsTzs7MkIsTzs7MEIsTzttQyxPOzs7O0k7Rzs7SSxrQixPO0k7SSxrQixPO0k7O0c7O0k7SSxrQixPO0k7O0kseUI7SSxrQixPO0ksTztHOzBDO0c7O0ksbUIsTztJLE87Rzs7SSxrQixPO0k7STtJLGtCLE87STs7Rzs7SSxtQixPO0k7STs7Rzs7SSxZOztJLE87OztJOzswQixPOzs7TztPLE87aUMsTzs7OztJOzs7TztPLFc7TztPLE87OztPO087Ozs7O1c7VyxPO1U7Tzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7OztJLDJCO0c7O0ksZTtJLFk7Ozs7Ozs7UTs7UyxPOzsyQixrQixPLHNCO1EsTzs7Ozs7O0ssTzs7STtHO3VCLFM7O0k7SyxROzs7Ozs7SyxpQyxROzs7O007O08sTztjOztNOzs7O087TztPLE87YztLO0k7SSxhO0k7Ozs7OzJCOzs7STtJLE87Rzs7STtJOztLLDZCO0s7Ozs7UTs7Ozs7UyxPLHFDO1MsTztRLGM7O3lCLFc7OztRLGdCOzs7bUIsVztROzs7O1Msd0I7USxXOztROzs7OztTLE87UyxPO1EsZ0I7O1E7O1MsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7Ozs7O1k7WSxjO1c7USxpQjs7O0c7O0ksVzs7SSxPO0c7O0ksSSxnQixNOztLO0ssTztJO0k7STtHO0c7Ozs7cUM7Ozs7O00sVyw2Qjs7Ozs7OztHLFc7O0k7d0Isc0I7STs7O0c7O0k7OztHOztJLDRCOzs7O0ssTTs7O0ksRyxtQzs7STtHOztJOzs7NEI7OztHO0c7O0ksWTs7SSxnRDtJO0c7O0ksOEI7O0k7Rzs7SSw4Qjs7O0ssTzs7O0ksTztHOztJOztpQjs7SyxHO007MEM7SyxJOztHOztJO0k7Ozs7OytCOzs7Rzs7STtJOzs7UTs7UTs7O0c7O0k7STt3Qjs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksSTtrQyxvQjtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7STs7SztLLFk7STtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7SSxJO2lDLG9CO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJOztLO0ssWTtJO0ksTztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7STs7Rzs7STtJOzsyQixrQixzQjtJOzsyQixrQixzQjtJLE87Rzs7SSxPO0c7O0ksWTtzRTtJLE07Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLFcseUI7OzsyQixPOzs7Rzs7STtjO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7Rzs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7Ozs7Ozs7STtHOztJO2M7YztHOztJLGM7O3FCO0ksUztZOzs7SztNLEs7O2E7O1c7OztJO2dCLE87SyxZOzs7O007O0ssSTs7Rzs7SSxVO0k7bUI7Rzs7O0s7Ozs7Ozs7VyxPOzs7Ozs7OztVOzs7Yzs7VSxPOzs7Ozs7Ozs7Ozs7OztVLE87Ozs7Ozs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07OztROztTOztZOztRLE87OztRLE87OzBDOzs7USxtQjtRLE87OztRLE87OztRLE87OztRLE87OztRLE87O1E7O1M7O1k7O1EsTzs7MkIsTzs7UTs7UztTOzs7O3lCOzs7Ozs7NkI7YTs7O2lCOzthOzs7OztTLDRCO1EsTzs7O1E7Uzs7VSxXOzs7ZTs7UztVOztVLGM7O1csb0IsVTs7Ozs7O1U7VztZOztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksUTs7WSwrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZSxXOzs7ZTs7a0I7OztlLFc7Ozs7Yzs7Ozs7dUI7O1c7OztXOzs7O3dCO1M7Ozs7O1UsTzs7OzsyQixPOztROztTOztZOztRLE87Ozs7UyxPOzs7SywwQjtLLE87OztLO0s7Ozs7NEI7O2dDO2dCOzs7Ozs7STtJO0c7Rzs7OzttQjs7c0IsTzs7SztLOzs7O3FCLE8seUM7d0IsTyw0QztHLGdDO0c7cUIsTyx5QztHLDZCOztJOzs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7OztJOzs7STs7SztLLEc7TTtNOztLO0s7SztLO0ssTzs7STs7O0k7Szs7TTs7Uzs7SyxPOztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtRO1EsTzs7UTs7O1MsNEI7USxPOzswQjs7dUIsTzs7UTs7O1MsYztRLE87O1E7Ozs7O1M7O1k7OztjLE87O1k7Ozs7WTs7YTs7O3VCLE87c0I7Ozs7O1k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7UTtRO1M7OztZOzs7O1ksTzs7VztRO1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJOzs7a0I7O007TTs7OztJLE87Rzs7Ozs7aUI7TSx1QjtNLE87Ozs7TTs7O08sNEI7TSxPOzs7O0s7Yzs7Ozs7OztLO2U7OztpQjtpQjtJO0k7Szs7SSxPOzs7OzttQjs7c0IsTzs7SztLO0s7Ozs7O0ksVTs7SztLO0s7SztLO0ssTzs7O0k7SSxPOzs7Ozs7OztJLE87OztHLEksa0M7O0ksTztjO2M7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJLFU7dUIsTywwQztJO0s7O0ksTzs7O0k7Ozs7Ozs7VyxVOztXO1k7O1csTzs7TyxPOzs7Tzs7OztRO1U7YTs7TyxPOzs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7UTs7Vzs7TyxPOzs7OztJOzs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sTzs7OztHO0k7STs7O1EsTztPO0k7O3VCLE8sK0M7STs7O1EsTztPO0k7OztRLE87TztJOzs7USxPO087Z0Q7Rzs7STs7O007O087Ozs7O0ssYTtLLE87Ozs7Ozs7OztHOzs7SyxZLE87Szs7O00sTztLLE87Ozs7Syw0Qjs7Ozs7O08sTzs7Ozs7Ozs7OztLO00sUTs7O0s7Ozs7OztTOzs7VTs7Ozs7OztNO08sTztPO1M7O00sTzs7OztJO0c7O0ksbUM7OztPLE87Ozs7Ozs7O08sTzs7O087aUI7O2lCOzs7TyxPOzs7O0ksWTs7bUIsTzs7OztLOzs7TTs7O0s7Ozs7OztROzs7Uzs7Ozs7O007TyxPO087TSxPOzs7Ozs7Ozs7OztJLE87Ozs7Ozs7Ozs7STtLLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7WTs7Ozs7Z0IsTztlO2E7O2dCOzs7OztXLE87Ozs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1c7O1k7WSxPOzs7Ozs7OztXO1csTztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXO1c7WTs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQjttQjs7a0IsTzs7aUI7YyxPOzs7Ozs7Ozs7YyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1E7O1csWTs7Vzs7WSxPO1c7VyxPOztROzs7O1ksTztXO1csTztVO08sTzs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJOztLO00sTzs7Ozs7OztLOzs7Uzs7SyxPOzs7Ozs7Ozs7O2MsTztJO0s7O0ksTztHOzs7Szs7O00sTzs7Ozs7Ozs7d0IsTywwQztLO007OztJO0k7dUIsTywwQztJO0s7OztJLE87Ozs7Ozs7O0c7Rzs7Ozs7OztJLFk7OztLOzs7TTs7O0s7Ozs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO007OztnQjs7Ozs7O0k7O0s7Ozs7Szs7O2M7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O1EsTzs2QixPOztRLE87TyxZOztRLE87O08sTzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7STtJO1k7Ozs7O0c7K0Isb0M7O0k7STtZOzs7OztHOztJOzs7O0ssTztJO0c7aUMsc0M7O0ksOEIsTztJO0c7bUMsd0M7MEIsc0M7Z0MsNkM7O0k7Z0M7a0M7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1CO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OztHOztJOzs7Z0I7Ozs7OztLLE87STtHOztJLEksVyxzQzs7Ozs7O1M7O3VDOztTLGdDO1M7Ozs7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7O3FCLE87O0k7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7OztLLE07O0k7Rzs7SSxZOzs7MkI7OztPOztPOzs7Tzs7Rzs7SSxJLFU7Ozs0Qjs7OztHO0csYTtvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7Rzs7OztRLE07Tzs7SSxXO0k7Szs7O1E7Ozs7VztvQjs7WSxrQzs7Ozs0Qjs7O1Esa0IsMkI7Ozs7UztVLE87aUI7UTtROztJO0ssSztLLFc7NEI7Ozs7SyxJLE8sa0M7STs7OztNLFk7Ozs7UTs7OztTO1c7Ozs7YTs7Ozs7TSxNOzs7OztTOzs7VSxzQjtVLFM7OztVLEksVTs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7OztTOzs7VTtVOzs7VTs7O1c7WSxzQjtZLE87Ozs7Ozs7Ozs7UyxTOzs7Ozs7Uzs7VSxPO1UsUTs7O1U7Ozs7WTs7Ozs7Ozs7O1c7O1ksTztXOzs7WTthLE87YSxjOzs7Ozs7WTs7Ozs7Ozs7O2UsVTs2Qjs7Ozs7O1ksTTs7OztVO1U7OztXLHNCO1csUTtXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7Ozs7YTthO1k7VSxPOzs7O0s7TSxzQjtlOztJO0k7Rzs7OEIsaUM7SSxPO0c7O0k7O0s7SztLO0k7Rzs7STtLOztNLHNCO0ssVzs7O0ksb0I7SSxXOzs7STs7OztLO0s7O0s7Ozs7Ozs7Ozs7OztLOzs7TSxzQjtpQjs7Szs7O007O1M7O1U7VTs7UyxvQjtTO1UsTztVO1M7O2lCOztJLG9CO0k7WTs7Ozs7Ozs7Ozs7Ozs7Rzs7OEIsNkM7SSxPO0c7O0k7O087Ozs7UTtRLHNCO1EsUTtRO087O087Ozs7O1c7VztVO1EsTzs7OztXO1c7VTtRLE87UTtPOztPOzs7O1E7Tzs7OztJOztLO0s7Ozs7Ozs7STtLO0s7O0ksb0I7STtZOzs7Ozs7OztHOzs4Qiw4QztJLE87Rzs7STs7SztLOztLO0s7O0ksb0I7STtZOzs7Ozs7O0c7OzhCLCtDO0ksTztHOzs4QiwrQjtJLE87Rzs7STs7SztLOztJO0c7OzhCLCtDO0ksTztHOztJOztLOzs7O0ksb0I7STtLLE87Szs7SSxvQjtJLFc7STtHOzs7SztJO0ksTztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7Rzs7STtLO0s7SztJO0c7O0k7STtHOztJOzt5Qjs7MEIsVzs7OztROzs7O1M7UTs7O087bUM7O0c7O0k7OztPLEksVTs7Ozs7O1k7O3NDO29CLE87Ozs7Tzs7MEI7Ozs7O1E7Ozs7UTs7OztTLE87UztROztPOzs7UTtPO21DOzs7O0k7O3lCOzswQjs7O087Ozs7Ozs7TzttQzs7Rzs7SSxnQjtJO0c7O0k7O0s7Szs7SSxvQjtJLFc7Rzs7SSxlO0k7Rzs7SSxZOzs7SyxPOzs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLE87Rzs7STthO0c7O0k7O0ssTzs7O0k7Rzs7STs7OztLOzs7Ozs7OztXO1ksTztZLE87VyxPO1U7Ozs7OztTLFc7UyxPO1E7Ozs7Ozs7VTtXOztVLFc7UztNLE87Ozs7O1E7Ozs7O1MsTztTOzs7OztROzs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLE87Uzs7Ozs7UTs7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7Ozs7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087Ozs7Ozs7O087OztPOzs7Tzs7Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7O087OztPOzs7Tzs7Rzs7STtHOztJLG9CO3dCO0k7Ozs7Ozs7OztLOzt3Qjs7O0s7O3dCOzs7STs7O2U7O2dCOzs7O2dCLG1CO2dCO2lCLFc7aUI7Z0I7ZTtlLE87Ozs7Ozs7O0c7OztLO0k7SSxPO0c7NkIsTyx1Qzs7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7SSxTOztJOztHO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7SSxXO0ksWTtJLGE7SSxhO0ksWTtJLFk7SSxXOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7SSxpQjtJLGE7SSxhOztJLE87RztHO0ksYztJO007SSxrQjtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOztJLFU7STtHO0c7STtJO0k7STtJO0k7STs7STtLO0s7SztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzs7aUMsUztLO00sUTtNLE07OztNOzs7O1M7Ozs7Ozs7Ozs7OztLLE87STs7SztNLE07TSxNO00sVTtLLE87Ozs7STtJLDBCLHVCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Uzs7UztROzs7Ozs7OztLOzs7UztTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7b0IsVywrQjtHO0ksaUI7SSxtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsSSxPOzs7TSxPOztJO0k7STs7Rzs7SSxPO0c7O0k7Ozs7O3dCLFk7WTtJO0s7O00sNEI7TTtNLE07cUI7OztJO0c7O0k7Szs7O0kseUM7STs7Syw4QjtLLGM7SyxRO0ssTTs7O0ssTTtLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7O0c7O0k7Ozs7O0k7Szs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7OztVOzs7Ozs7O0s7O0c7O0k7O0s7OztNO007TTs7O1M7UyxPOzs7UTtLOzs7O1MsWTs7Ozs7Ozs7OztTOzs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtXOztXOzs7O1M7VSxZO1U7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O2E7Ozs7Ozs7Ozs7Uzs7Szs7STtHOztJOztLOzs7TTtNO007UTtVOzs7UyxZO1M7OztVOzs7OztVOzthOzs7Ozs7Ozs7OztTO1M7Uzs7Szs7STtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0ssTztLLFE7STtHOztJLFM7STtLO2U7SyxLO007TTtNOztLO0s7O00sTTtLOztPO1M7TSxNO0s7O1E7OztLLE07Ozs7Ozs7TTtNLE07O0s7SyxNOztHOztJO0k7STtJO0ssTTtLO0k7STtJO0c7O0k7OztPLE87OztPLE87Ozs7Ozs7OztPLE87Ozs7O0ksdUI7O0ksVztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7dUIsTSxnRDtHO0k7OztRO1M7VSxNO1UsVzs7OzsrQjs7O1EseUI7TztJOztJO0ssTTtLO0s7SSxXO0c7O0k7Ozs7OztJOzs7STs7STtHOzs7K0Isc0M7STtLO087SyxNO0ksTzs7Ozt3Qjs7Ozs7O0s7Ozs7O0ksSSxVOzs7MkI7OztjOztJOzs7STs7O0ssVzs7SztLLE87O0ksTztHO2dDLGtCOzZDLCtCOztJLFU7d0IsTyxpQjtJLFU7STtJO0c7Ozs7SyxVOztLLE87STtJLE87OztJOzs7SztLO0s7SztJLEc7Szs7O0ssOEI7Ozs7STtJOztLLEk7Ozs7OztNOzs7STtJO0c7O0k7SSxHO0ssTTtJLEksVTs7Ozs2QixNO0ssWTs7O007TTtPLEs7TztNOztLO0ssTTs7YyxNOztJO0c7O0k7STtLLE07SztLLEs7STtJO0c7Z0MsNkM7O0k7O0ssVTs7SztLLFU7Szs7OztVLEksb0MsYTs7OztZO1ksTzs7O1k7O2EsTTthO1ksTzs7OztXOzs7Ozs7O2lCOzs7Ozs7Ozs7YyxNOzs7O3VCOztXO1csTzs7UztNLE87Ozs7OztJO0c7O0k7SSxJLFc7Ozs7TSxNOzs7SSxXLE07O0k7Rzs7STs7O0ssTTtJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87OztJOzs7OztLLFE7SztJO0c7O0k7O0s7SztNLE87SztLO00sTTtNOzs7O007Szs7OztNOzs7SztLO0s7SztJO0ksOEIsTywrQjtJLE87Rzs7STtLOzs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7TTtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7SSxhOztJLE87RztzQyxxQjs7STs7Ozs7Ozs7O0c7c0Msb0I7O0k7Ozs7c0M7STtHO0c7SSxvQjtJLGM7O0ksOEI7Ozs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzt5QyxXOzsyQixZOzs7TyxZOzs7TyxZOzs7TyxZOzs7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztpQixNOzs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNOzs7VTs7Ozs7ZSxXLE87O2UsTztjOzs7VTtTO08sTztnQjs7Ozs7O0ksVzt5QixxQiwwQjtJLFc7SSxPO0c7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztvQyxNOzs7TyxPOzs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7O1M7UyxjO1E7YTtJLFc7O0s7SztJO0ksVztJLE87Rzs7STtJO0s7Ozs7VTtXLE8sYyw0Qzs7O00sUTtNO21DOztNOzs7Ozs7VztZLE87bUQseUI7OztPO1MsVzs7Ozs7Ozs7OztXO1csTyw4QjtVOzs7Ozs7OztHOztJO0k7Ozs7O1U7VyxPLHNDOzs7Szs7bUM7Ozs7Ozs7O1c7WTthLGE7YSx5QjtZLE8sYyw0Qzs7O007Ozs7Ozs7Ozs7VztXLE8sNEI7VTs7Ozs7OztHOztJO0k7Szs7c0Msb0I7TSxRO007Ozs7O1UsSSx1QixjOzs7a0M7OztTO00sTzs7OztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQztHO0k7OztRLE07TztJOzs7USxNO087STs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLOztzQyxvQjtNLFE7TTs7TTs7O1UsSTs7Ozs7Ozs7Ozs7VSxXO2MscUIsYzs7O2tDOzs7UztPLE87TyxPO087TSxPOzs7O0c7NkIsUzs0QixnQjs2QixnQjtHO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07Tzt3QixpRDs7STtLLG1CLE87SyxPOzs7SSxPOztHO2lDLHVCO2dDLGlDO3FCLE8seUM7O0ksVztJLGlCO0c7O0ksTztLO0ksaUI7Ozs7O007Tzs7USxnQzs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7O1k7O0c7O0k7O0s7SztLO0ssSztLOzs7Syw4Qjs7SztJO0k7SyxTO0ssTztLO0ssYztLLE87SyxrQjtLLFk7SyxNO0k7Szs7TSxXO2M7OztJOzs7Ozs7Ozs7OztJOzs7RyxnQztHO0ksaUI7STs7SSxPO0c7O0k7Rzs7SSxPO0c7O0ksTzs7Rzs7SSxPOztHOztJLE87Rzs7SSxPO0c7O0k7STtJO0k7STtJO0k7Rzs7STtJO0k7STtHOztJO0k7STtHOztJLFk7Ozs7SSxPOztHOztJO3VCOztJO0c7O0k7cUI7SSxJLFcsNkM7Ozs7SyxJLFEsa0M7Ozs7OztvQjs7Ozs7O0ssWTtLO0s7O0c7O0k7O1EsSTs7O0ssd0I7Ozs7SyxxQjt1QixNOztJO0c7O0k7O3lCOztPLDhCO08sTzs7Tzs7O1E7USxNO08sTzs7O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPOztHOztJO0s7SyxNO0ksTztHOztJOztPLGtCOzBCLE07O087O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs7OztLLE07SSxxQixPO3dCO0ksSSxTLHlDOzs7SztLOztJLE07OztJLFk7Ozs7TyxJLFc7OzsrQjs7O087Tzs7O08sSTs7OztTLE07OztPLEksWTs7OztTLE07OztPLFc7OztROztPLE07OztPLEk7Ozs7UyxNOzs7Tzs7O08sSTs7OztTLE07OztPOzs7UTtTO2dDLE8sZ0M7VSxTOzs7OztVLE07OztROztPLE07O0c7OEIsaUM7cUMsaUM7O0k7O3lCOztPLDhCO08sbUI7ZSxNOztHOztJOztLOzs7STtHOztJLE87Rzs7STtHOztJO0c7O0k7O08sa0IsK0I7cUIsTTs7Tzs7Tzs7O1E7Z0I7TztvQixNO1EscUM7b0M7Ozs7ZSxNOztHOztJOztPOztRLE87USxPOztPOztPOzs7UTtRLFM7USxRO087ZSxNOztHOztJO0s7O1E7MkIsTTs7UTs7UTs7USxJOzs7Uyx3QjtVLFc7VSxPOzs7OztTLFc7UyxPOzs7UyxNOztROztROztROztRO2dCOzs7SSxPO0c7O0ksWSxPOztJOztHLHVCOzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7Tzs7OztJOzs7TSxzQjs7O087USxPO1EsTztPO1E7UyxPO29COzs7Z0I7Ozs7Ozs7Szs7Ozs7O007O3FDOzs7OztNOzs7O0c7O0ksSSwrQzs7Ozs7TSxNOztLOztHOztJOztPOztPLDhCOztlLE07O0c7O0k7O087Ozs7O1EsRztTLFc7UyxLOzs7Ozs7OztlLE07O0c7O0k7STtLOzs7TSxJOzs7Ozs7Ozs7OztLOztHOztJOztPLGtCO08sTzs7Tzs7O1E7USxTO08sTzs7TyxnQztPOztHOztJO0c7O0ksSSw2Qjs7OztLLHVDOztLOztJLE07Rzs7SSxJLDZCO2dCLE07O0k7Rzs7STtnQixNOztJO0c7O0k7SSxPO0c7O0k7STs7OztRLEksbUMsYzs7O2dDOzs7OztnQjs7Rzs7SSxXO0k7SyxtQjtLOztNOzs7Ozs7SztNO08sTztPLE87Ozs7OztNO08sSztPLE87TTs7O0s7SztJO0ksSSxnQjtJO0s7Ozs7Ozs7Ozs7OztzQjtHO0c7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO3FCLE8saUI7STtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLO0ssb0MsdUI7OztPLFk7Ozs7O08sWTtPOzRCO08sd0I7MkIsaUQ7Tzs7O1E7TztPLE87TTs7O0s7O0s7OztlO2U7Z0I7aUIsVTtpQjttQjs0Qjs7Z0I7O2UsbUI7O2U7Yzs7Rzs7STs7OztHOztJOzJCLE8scUM7SSxPO0c7O0ksa0M7dUI7O0k7SztNLE87TSxJO00sMEI7Szs7Ozs0Qjs7Ozs7STs7Tzs7UTtRLCtCOzs7VztXLCtEO1c7VTtPLE87O087OztROytCLGdCO1E7eUI7USxNO08sTztlOztHOzswQixnQjs7O087O1E7eUM7OztPOzs7UTtROztXOztRLE07ZTs7Ozt3QjtJLE87Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7UztVLG9CO1U7VTs7O2E7YTthLE87WTs7O2E7YTs7Z0I7OztpQixTO2lCOzs7OzZCOzs7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1Qjs7O2dCOzs7aUIsYTtpQixPO2dCOzs7OztpQjs7a0IsTzt3QztrQixPOzs7cUI7O29CO2lCOzs7O2lCOztrQjtrQixPO3dDO2tCLFE7OztxQjtzQixZO3NCOzs7b0I7aUI7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1QjtnQjs7aUI7OztpQjs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7OztnQjs7O2lCLFE7aUI7aUIsUTtpQjtpQixPO2lCLFk7aUI7aUI7a0M7OztnQjs7OztpQixXO2lCLE87Z0I7OztrQixNOzs7OzJCOzs7O2dCO2lCLFM7aUIsTztpQixRO2lCOzs7Ozs7Ozs7O2lCO2lCO2lCLE87dUI7Ozs7O2dCOzs7aUIsVztpQjttQjtpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7OztnQjs7O2lCLFM7aUI7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztnQjs7O2lCLFM7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztZO1M7Uzs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7Ozs7O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0ssSSxlLHVCLHNCO0s7SyxXO0s7Ozs7cUI7OEI7Ozs7OztVOztVLFc7VSxPO1M7TSxPOzs7Ozs7O0c7O0k7O0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssZ0Q7Ozs7aUIsMEI7Tzs7Ozs7Ozs7OztHOztJO0ksaUI7O0s7STtJO0k7Szs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STt5RCxlO0s7O0ksSSxxQjs7Ozs7OztLOztNLFM7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO1c7aUI7VztZO1k7O2U7Ozs7Ozs7Ozs7OztXO1csVztXOzs7OzJCO29DOzs7OztnQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MkI7O2dCO2dCLE87ZTtZOzs7O1M7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCOzttQjs7Szs7TTtNLGU7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO2lCO1c7WTtZLHNCO1c7VztZLE87WSx1Qjs7Ozs7Z0I7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7UztVLFk7Ozs7Ozs7Ozs7O1U7Uzs7Ozs7Ozs7Ozs7OztRO00sUTs0QjtNLGU7OztJO0s7OztLOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7O0s7SyxPO0s7STswQzs7O0k7Szs7TSxlO007TTtZO007TztPLHNCO007Ozs7VTs7Vzs7cUI7OztVO1UsTztTO007OztJOzs7Szs7Ozs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Ozs7STs7SztJO0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7O0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Szs7O0s7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7STs7O0s7b0MsZTs7O21DLGU7Ozs7STtLLE87SztLO0s7STtHOztJO0s7SyxRO0s7OztJO0c7O0k7SSw0QjtHOztJLFk7STtHOztJO0s7SztJO0c7O0k7STtHOztJO0c7O0k7STtHOztJLG9CLE87STs7Ozs7Ozs7Ozs7OztHOztJLEksUSwrQjtJLE87Rzs7STtLLEs7SztLOzBDO0k7Rzs7STtLLEs7SyxnQztJO0c7O0k7SyxLO0s7SyxRO0s7STtHOztJLFM7STs7O0c7O0k7SyxLO0ssUTtLLDZCO0k7Rzs7STtLLEs7SztLLG9DO0k7Rzs7STtLLEs7SywrQjtJO0c7O0k7Rzs7Ozs7SyxXOzs7Ozs7O1UsZ0I7VTs7VyxRO1UsVztTOzs7O0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7Ozs7STtLLE87Szs7O0k7Rzs7STtLOzs7STtHOytFO0c7Ozs7Szs7OztJO0s7Ozs7STtLOztHO0c7STs7RztHO0k7O0c7RztJOzs7STtJO0c7O0k7SyxLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLEs7OztLOzs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJOzs7NEI7OztxQjs7dUI7OztLOzs7OzRCLE8saUIscUI7OztLO0k7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STtJO0s7O0ssNEIseUI7Szs7SywyQix3QjtLOztLLHlCLDBCO0s7O0ssd0IseUI7Szs7SywyQix5QjtLOztLLDBCLDBCO0s7O0ssMEIseUI7Szs7SywwQiwwQjtJOzs7Ozs7Ozs7Ozs7OztHOzs7SztNLE07MEI7O0ssRyw4QjtLLE07STtJLEk7Ozs0Qjs7OztLOzs7TSxHOztPLFc7OztLLE07STs7Szs7O00sRzs7TyxXOzs7SyxNO0k7STs7OztLO0s7SztLO0s7SztLO0k7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7O0ssTTtJO0c7O0k7STtJO0k7Szs7ZTtlO0ssYztLLGlCO0ssaUI7Ozs7Szs7OztVOzt1Qzs7UztNOztLO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHOzs7Ozs7Ozs7Ozs7O1U7O2lCOzs7Ozs7Ozs7Vzs7Ozs7O1E7Szs7STtHOztJO0s7Tzs7Ozs7O0ssSztLOztLLE07O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLHdCO0s7STtLLE87SyxPO0ksTzs7O0c7O0k7SyxPO0ssTztLO08sVztJLE87Rzs7O0k7STtJO0ssTztLLE87SztPOztTOzs7STtJO0c7O0k7MkIsVztHOzs7K0IsNEM7STs7RztHLGM7Rzs7OztHO0k7SSxVOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOzt5QixPLDBCO0ksTztHOztJLGtCO0ksTTtHOztJLFU7O0k7OztLO007UTs7VztNLE87TSxPO0ssTztJO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7SSxXO0ksTztHOztJLFU7SSxvQjs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJLFU7Ozs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0k7OztNLFk7OztPOzs7USxJLFc7Ozs7OztROztPOztPOzs7OztNLE07Ozs7STtHOztJLFU7SSxjO0k7OztLO00sVzs7Ozs7OztLOzs7Rzs7STtHOztJOzs7UyxJOzs7TTtPLEksVzs7Ozs7Ozs7Ozs7OztJO0ssa0I7O0s7Ozs7Szs7Szs7SSxJOzs7O007OztJO0k7Rzs7STtnQjs7Szs7TTtNLE87SztLO0k7SSxPO0c7O0k7O087O1E7OztPOztPOzs7UTs7O087O087UTs7OztRO1U7O087O0c7O0k7Szs7O0s7Ozs7TTs7Szs7O2tCOztJO0c7O0k7OztLOzs7TTs7O007Ozs7O0s7SztJO0k7SyxrQjtLOzs7OztLOzs7Ozs7Tyx1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7WTtNOzs7Ozs7Ozs7OztLO0k7OztpQixPOzs7TTs7O087Ozs7O007O0s7Ozs7TTs7Ozs7TTtROzs7Ozs7O007Ozs7O0c7O0k7O087O1E7OztRLE87Tzs7Tzs7O1E7OztRLE87Tzs7TztROzs7O1E7Tzs7Rzs7STtLOzs7SSxJLFU7Ozs7TTs7O0k7STtJO0c7O0k7OztPLEk7Ozs7Uzs7Ozs7O1E7UTs7Tyx1Qjs7OztXOztXO21COztPOzs7O1E7Tzs7Tzs7O1E7OztPLEksWTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7Ozs7Ozs7Tzs7OztPOzs7UTs7O08sSSxVOzs7Ozs7O087Tzs7OztPLE07OztJO0c7O0k7OztPLEk7Ozs7Uzs7OztPO087O087OztROzs7TyxJLFU7Ozs7Uzs7O087TztPOztPLE07O0c7O0k7Szs7O0ksaUI7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7TyxnQjtrQjs7OztXOztZO1ksTztXO1c7VTtPLE87Ozs7Ozs7O1EsSSxhOzs7Ozs7Ozs7OztjO2E7YTtZO1MsTzs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7Ozs7O2M7YTthO1k7UyxPOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJOzs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Rzs7STtJO0c7O0k7SSxpQjtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJLEk7Ozs7Ozs7Tzs7Ozs7STtHOztJOztJLHNCO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7OztVO1M7UztRO0ssTzs7STtHOztJO0ksSTs7Ozs7OztPOzs7OztJO0c7O0k7O0ksc0I7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7aUMsNEM7UztRO0ssTzs7STtHOztJO0ksSTs7OzRCOzs7Ozs7Ozs7Uzs7UztpQjs7Szs7SSxvQixlOzs7SztLOztJO0c7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7SyxXO0s7OztlO2UsTztjOzs7O0k7O0s7OztLO3lCO0ksb0IsTzs7SyxPLDRCO0k7SSxPO0c7O0k7Szs7O007MEI7Szs7TSxPOzs7UyxZOztTLE87UTtLLE87O0ksWTs0QixPLHlCOztJO0s7OzZCLHNCLHNCO00sUTtNO2dCO0s7Ozs7NEIsd0M7TTtRLFc7Ozs7Rzs7STs7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7Ozs7STs7Szs7O0s7eUI7OztLLFM7SyxPO0k7SSxPO0c7OztLLGdCOztLLE87STtzQixhO3VCLGM7STtLO0c7OzRCLE8sMkI7c0IsYTt1QixjO0k7SztHOztzQixhO3VCLGM7STtLO0c7O2tDLE8saUM7c0IsYTt1QixjO0k7SztHOztJO0s7SyxPLHVCO0k7c0IsYTt1QixjO0k7SztHOzttQyxPLGtDO3NCLGE7dUIsYztJO0s7Rzs7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7STs7O0s7Ozs7VTtVO29COzs7c0I7MkI7O3dCOztTOzs7STtLO0s7TSxHLHVDOztPOzs7USxPO08sRztRO1MsTztTLFE7Ozs7OztNOzJCLGdDOztJO0k7OztLOzs7Ozs7O0ssSSxLO0ssVztJO0ksVztJOzs7Ozs7Ozs7Ozs7O0c7O0ksTztHO0c7SSxXO0ksbUI7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPO0k7OztRLE07Tzs7O0ssVztLLE87STtJOzs4QyxxQjtPLE87Ozs7OytCLDRCO08sTztlOztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOzhDLHNCOzs7O0c7O0k7SSw2Qyx5Qjs7Rzs7STtJLHVDLHlCOztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJLEk7STs7ZTs7Z0I7ZTtjOztHOztJO0ssTzs7OztPO087a0I7cUM7TyxPOzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7Ozs7TztPLE87Ozs7Ozs7Ozs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTztTLE87UTs7TztRLE87USxPO08sTzs7Ozs7Ozs7O08sTzs7O087Ozs7SSx1QjtJOztLO0s7Tzs7VTtJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJO0s7O3dCOzs7OztTLG1COzs7O0s7O0ksTztHO3FEO0c7O0k7O3VCOzs7Ozs7O1c7OztXOzs7Ozs7OztTOzs7UTs7OztxQzs7STtHOzBCLE8seUM7O0k7SyxNO0k7Rzs7STtLLE07STtHOztJO0ssTTtJO0c7MEM7O0k7SyxNO0k7Rzs7SSxzQztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJO0c7O0ksOEI7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPLGtDO087OztHO2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7Ozs7MkIsb0IsTyxzQjtRLE87OztRLE87OzRCLE87OzRCLE87OzRCLE87OztRO1EsTzs7STtHOztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7Ozs7OztZO1ksbUI7VztRLFc7OztRLFc7O3lCLFc7O3NCLFc7O3dCLFk7O1EseUMsTTtRLFk7O0k7Rzs7STs7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7a0MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O3dCLG1CLFU7SSxPO0c7O0k7SSxPO0c7O0k7Rzs7STtJO0s7O0k7cUIscUM7STs7Rzs7STtJLE87Rzs7STtHOytCLE8scUM7O0k7Ozs7Ozs7Ozs7OztZLEk7Ozs7OztROztRLHdDO1E7Uzs7Ozs7O1U7Ozs7Ozs7O1M7Ozs7K0I7Ozs7STs7O3lCLHlCO0k7Rzs7O0k7Szs7K0IsVzs7O21CO0s7STtJO0s7STs7Szs7Ozs2Qjs7Uzs7O1U7OztVOzs7VTs7aUM7Uzs7c0M7Ozs7OztLO0k7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O3VCLHVCOztJLHFDOztJO0c7O0ksWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Ozs7Ozs7OztPLE07OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TSxJOzs7TSxJO007TztxQjtPOzs7O1E7O1EsSTs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztXLFU7VyxPO1U7Ozs7TTtNOzs7TyxVOztNO087Uzs7OztLO007Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7O0ksWSxPOztJLE87OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7Rzs7SSxPO0c7O0k7O3FCLE87O3FCLE87Ozs7USxPOztPLE87Ozt1QixPOzt1QixPOzt1QixPOzt1QixPOztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJLFc7STtJLE87Rzs7SSxRO0k7SSxXO0k7STtHOztJLFE7O0k7SSxPO0c7O0ksTztHOzhCLE8saUM7O0ksOEI7OztLLE87OztJLE87Ozs7SztJO0ksTztHOztJO0k7O0c7O0k7O0s7SztLLE87STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7WTs7YTthO2E7OztZO1k7VztRLE87OztRO1E7OztROzs7OztRO1E7UTs7O2tCO21CO2lCOzs7Ozs7Ozs7O2EsTztZO1ksTztXO1E7Ozs7O1E7UTs7O0c7OztJO0k7OztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7YTs7O2dCO2dCO2dCOzs7Z0I7Z0I7OztnQjtnQjs7WTtZOzs7TTs7O21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1E7UTs7O1E7UTtROzs7a0I7O21COztvQixPO29CLE87bUIsTztrQjtrQjttQixRO21CLE87a0I7a0I7aUI7Ozs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7OztlO2U7ZTs7O2U7ZTtlO2U7OztlO2U7ZTs7O2U7ZTs7OztNOzs7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7O1E7UTtRO1E7O1M7O1M7Uzs7VTs7O2dDOzthO2E7O1M7Uzs7UTtROzs7VTs7VTs7Ozs7WTs7OztZOzs7O1k7O1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7Vzs7Ozs7Vzs7Ozs7Vzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7OztRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzs7UTs7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7OztTOzs7Ozs7UTtROzs7Ozs7O1M7UztTO1UsTzs7Uzs7Ozs7O1E7UTtTLE87O1E7OztHOztJO0k7STs7O0s7Szs7O0k7SyxPOztJO0c7O0k7OztJOzs7STs7O0k7OztJO0k7STtJOztHOztJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7O1E7Ozs7O0c7O0k7STtJO0k7Ozs7O087Tzs7Ozs7Ozs7Tzs7Tzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7Ozs7OztTO1M7Uzs7Ozs7O1E7Ozs7O0c7OztJO0k7STs7O0k7STtJO0k7Ozs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087O3lCOztHOztJOztLO0s7OztJO0k7OztJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7O0c7O0k7STtJOztHOztJO0k7STs7Rzs7SSxZOztJOzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO2tDLG1CLFU7Tzs7OztnQjs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztPO087O3lCOztHOzs7STs7Ozs7TztPOzt1QixPOzs7TztPOzs7TztPOzs7TyxPOzs7TztPOzs7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7O0k7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxNOztPLE07ZSxNOztHOzBDLGtDO2lDLDBDO0c7Ozt5QixvQjs2QixpQzs7SSxNO0c7O0ksTTtHO0c7O0ksc0I7STs7O0ssVztJLFc7RztHO0c7STtJO0k7STs7STtJO0ksZ0I7SSxlO0ksZTtJLGM7O0k7Ozs7O0c7O0k7Ozs7O0c7cUMsd0I7O0k7OztHOztJOzs7OztHOztJOzs7O0c7O0k7Ozs7Rzs7STtLLFE7OztxQjs7OztHOztJOztHOztJOztHOztJOztJO0c7cUMsK0I7O0k7O2dDOzs7ZSxNOztrQjtHO0c7O0k7O0s7TSxPO007O3lDOzs7O0k7Rzs7STs7Rzs7SSxJLHFDLEk7STtJO0c7Rzs7STs7OztLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztJO0k7STtJO0k7O0k7Rzs7SSxPOzs7Ozs7Ozs7O0c7cUMsOEI7O0k7MkM7STtHOztJLFk7MkU7SSxNO0c7O0k7STtLLFk7O007Ozs7O087Ozs7Ozs7O1M7UyxPO1E7SyxXOztHOzs7SztLLE87STtJLE87Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Tzs7O2E7TSxJOztNOzs7O087Ozs7Rzs7STtJO0ssWTs7Ozs7Ozs7Szs7Rzs7SSxJLHVCLFE7OzRDO0k7Rzs7SSxJLHVCLFE7b0Q7STtHOztJLGM7Ozs7UTs7O1E7UyxZOzs7O2EsTzs7Ozs7UyxNOzs7SSxPO0c7O0ksWTs7OztROzsyQixPOztJLE87Rzs7STtJLE87RztHLHNCOztJOzs7TSxLO087Ozs7TSxLO087O0s7TSxRO00sUTs7Ozs7O0s7O08sVztPLFc7OztPLFc7TyxXOzs7Ozs7Ozs7OztNLEc7TztROzs7O2M7TyxJOztPLEk7OztJO0c7O0ksWTtJOzs7O0s7SyxRO2tDOztLO0s7O0k7O0c7STtJO0k7O0k7STtLLFc7SyxXO0ssSSxPOzs7Ozs7OztVO3NCO2M7Ozs7Ozs7VTs7VyxzQjtVLE87Ozs7Ozs7Uzs7OztTOztVO1U7O2Msc0I7OztTO1MsZTtvQjtTLEksTzs7O0ssYyxzQjtLLE87O0c7O0k7O0k7Ozs7STtHOztJO3dCO0ksUztJO0k7Rzs7STtnQjs7SSxNO0c7O0k7Szs7Ozs7MkMseUI7TTs7Ozs7OztVO1UsVzs7O1csTzs7OzJCLHlCO1UsTztTO007Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7O0k7STtJOzs7OztTOztTLEksNEI7Ozs7O1UsTTs7O1E7SztLO0s7SztLOzs7Ozs7SztLO0s7O0c7K0IsTyxvQzs7STtLLFE7Ozs7STtJLFk7Ozs7Szs7O0ksTztHOzZCLHVCLHNCOztJLEksUTs7UTs7OztNLFk7Ozs7UTs7O1M7Ozs7Ozs7Ozs7OztNO00sTzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtLLFk7O00sWTs7Ozs7VTtVOzs7OztVO1UsTzs7O1U7Vzs7VyxPOzs7OztVOzs7OztVOzs7NkIsbUIsNEI7VSxPOztNOztLOztHO0c7Ozs7USxNO087O0k7STtLLEksSSxPOzs7Ozs7Szs7OztzQjtLLDZCLE87SyxHLCtCO0ssSTs7Rzs7STtJO0s7TSxhO00sTztLLFc7Z0IsNkI7SyxZOzs7OztvQjtVLEksVzs7O3NDOzs7Ozs7Ozs7b0I7VTtVLEcsK0I7VTtXLE87Ozs7OztLLDBCO0ssTzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sMEI7TSxPOzs7Ozs7O0c7O0ksSSxvQzs7Ozs7Szs7Rzs7STtLLG1CO2dCO2dCLDJCO0ssWTs7Ozs7b0I7VTtXLFc7VztXO1c7Ozs7c0M7Ozs7VSxJLEksTzs7Ozs7bUMsb0I7dUI7O1U7Ozs7OztlO2dCLE87Z0Isc0I7ZTtjOzJCO1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csMEI7VyxPOzs7Ozs7OztxQjtXOzs7Ozs7OztXO3NCO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLDBCO1MsTzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SywwQjtLLE87O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJLHVCOzs7O007TyxPO08sYzs7Ozs7Ozs7SyxJOzs7O0ksaUI7SSxXO0k7STtLOztJLFk7Ozs7d0I7OztRO1E7Ozt1Qjs7O1M7VSxNOzs7Ozs7Ozs7UztVO2lDLG9COztxQjs7UTs7UyxzQjtRLEcsNkM7Ozs7O2EsTzs7dUI7Ozs7WTtZLE87VztRLHFCO1EsSSxXOzs7b0M7OztROzs7O2dDLG1CLHdCO1EsTzs7SSxvQjtJLE87Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7Ozs7O1k7WSxPO1c7UTs7Ozs7WTtZLE87VztRLE87OztROzs7OztJO0c7O0k7RzsrQiwwQjs7STtLLFE7SztLOztLLFk7Ozs7cUI7b0I7Ozs7Ozs7O0s7OztxQjtLO0s7SztLLG9CO0ssTztJOztLLEksTTs7TTtpQjtNO00sWTs7Tzs7USxPO1EsSzs7OztxQjs7Ozs7O0s7STtJO0k7TztLLGMsc0I7Szs7STs7Szs7O00sTzs7STtJLE87Rzs7STs0QjtHOztJO0ssWTtnQjs7Ozs7OztLO0s7SztNO00sc0I7SyxPOztHOztJLGU7STtJLG1CO0k7SyxZOztNOztPLE87TyxPO00sRyx5Qzs7SztNO08sUTtPLFc7O2tCO087O1Esc0I7ZTs7OztNOzs7OztNLGU7TTtNOztPLHNCO00sTzs7STs7SyxXO0s7STtJO0k7SztNLFc7TTs7Ozs7O007Rzs7STtLLFc7SyxXO0s7UTtNLE07SztLLE87STtJLEksUyxJOzs7Ozs7STtJO0c7Rzs7SSxzQjtJLFc7c0U7SSxZOzRDOzs7OztNLE07Szs7OztNLE87TTtROzs7Ozs0QixPO0ksZ0I7STs7Ozs7O1M7OztVOzs7Ozs7Ozs7OztjLEc7Ozs7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7Ozs7O3FCOzs7Ozs7Uzs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjO2dCO2M7O2lCLGtCLFE7aUU7aUI7O2MsUzthO2Usa0M7YyxXO2M7Z0I7cUI7ZTtnQixPO3dCOzs7Ozs7Ozs7OztVOztzQjs7Ozs7a0I7O0k7STs7O0k7Ozs7eUIsc0M7SSxPO0c7O0k7O0k7O0k7Rzs7O3NCLDRCO0ssTztJO0ksTztHO0c7O0k7O0c7O0k7SztNLE87Ozs7Ozs7OztLO0k7OztPO2lCO0s7SSxPO0c7O0k7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTtHOztJLFk7Ozs7TTs7TyxPO08sTztNLE87Ozs7Rzs7O0s7Ozs7OztVO1c7Vzs7VztXLFE7Ozs7VTtXO1c7VSxLO1csTTtVO1U7Uzs7Ozs7O3dCO0s7TSxRO007TTs7O0ssb0I7SyxjO0s7STtJLE87Rzs7O3NCLHFDO0s7TSxVO007SztJO0ksTztHOzs7SztLLG9CO0s7TSxVOzs7SyxvQjtLO00sUztNO0s7STtJLE87Rzs7STs7Ozs7OztTOzs7O1UsTztTO1E7SyxXOzs7O0s7Ozs7TSxPO00sTztLO0k7SSxXOzs7O0s7Ozs7Ozs7Ozs7Ozs7SyxvQjtLO00sTzs7Ozs7TTtnQzs7Ozs7SyxvQjtLO2E7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7O0k7O0k7Rzs7O0s7O1E7Ozs7OztTLHNCO1MsUTtTO1E7O1E7O1M7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7UTs7OztTO1E7Ozs7SztLLG9CO0s7TSxXO007SztJO0ksTztHOztJLGM7YSxPOztJO0c7Rzs7O0ksYzs7UztLLGdCO0s7TTtPLE87TyxROzs7TyxVOzs7TztRLFE7OztXLFc7VyxPO1U7ZTs7O00sUyxNO007Ozs7O007TyxjO08sTzs7O087UTs7O1csTTs7Ozs7Ozs7c0I7Ozs7Ozs7O1U7Vzs7Ozs7TztROztXOzs7OztZO1k7NEI7OztXOztZLE87WSxPO1c7OztvQjs7O1c7VztZO2EsTzthLGtCOzs7VztZO1ksUTs7OztXOzs7K0IsYSx5QjtZLE87WSxVOzs7ZSxXO2M7WSxPO1ksWTtZOzs7OztPLEksNkI7O007TTs7O0k7TyxvQztJLEksWSw0Qjs7Ozs7UTtRLE87OztJOzs7O0ssWTs7O007O0ssTTtJO0ksVzt3QixXLHFDO0ksWTs7STtLOztLOzs7Ozs7O0k7O0k7Rzs7STs7SztJO0ksTztHOzs7SyxZOzs7Ozs7Ozs7Ozs7TSxJOztLO0s7STtJLE87RztHOzs7O1EsTTtPOztJLFc7TztLLE07OztJOzs7SztNLGlCLFE7O087OztRO087OzswQixPLHNDOzs7TSxNOzt1QyxPOzs7STtLOzs7O0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOztJO0s7Szs7Ozs7TSxNOzs7Rzs7RywrQjs7Rzs7STtLOzs7SSxZOztLOzs7O00sUTtNLFE7TTtNLFU7O00sSSxVOzs7O08sYTtPLEc7USxNO08sTzs7O007TztROzs7Ozs7OztNO08sTztPLFU7TTtNO007Ozs7TSxJOzs7OztLLEk7Ozs7O0s7O0ksTTs7O0k7Rzs7SSxJLG1DOzs7OztLLE07O0c7O0ksVztJLEksd0IsYzs7O2dDLDZCOztLO0s7Szs7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHFDOzs7O0s7SztLLE07O0c7O0ksVztJLEksaUQ7OztnQzs7O0c7O0ksSSxzRDs7OytCOzs7Szs7Rzs7SSxJLHNEOzs7Z0M7OztHOzs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7OzJCO1MsSTs7O3FDOzs7Uzs7O1M7Ozs7O1M7OztTLE07O0s7O0c7O0k7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHlDOzs7O0s7SyxNOztHOztJLEksMEQ7Ozs7Z0M7OztHOztJO0ssSSxJOzs7O007TSxTO007TztROzs7Ozs7OztNOzs7OztJLFk7Ozs7Ozs7TyxHO1EsVztRLE87Ozs7O0k7Rzs7STtLO2E7O00sTztLOzs7OzRCOzs7Rzs7STtLLEksTyw2QjtLO1UsZ0MsSTs7Ozs7Ozs7SztNOzs7Ozs7NEI7OztHO0c7O0ksRztLLE07SSxZOzs7OztRLDhDO1E7UyxHO1UsTTtTO1UsWTtVOzthOztVLE87Uzs7Ozs7UztVO1c7VztVOzs7OztXLE07Ozs7OztROztJLDBCO0s7TSxZO007O1M7O0ssTzs7STtHO0c7d0IsdUI7O0k7Ozs7Ozs7STtJOzs7YTtPOzRCLDBCOzs7OztLO0ssTTs7Rzs7SSxJLG9COzs7d0I7OztHOztJLEksb0IsYzs7O3dCOzs7Rzs7STtLLE87SyxXOztLLFk7Ozs7O1MsRztVLE07UyxzRDtTLG9CO1M7VTs7Ozs7Ozs7O1U7Ozs7OztVLEksSSxPOzs7Ozs7Ozs7Yyw2QjtjO2E7VSxPOzs7O1MsYTs7Szs7TTtPLGdCOztPO3dCO00sTzs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1M7VTs7O2M7YyxPO2E7ZTtXO1U7Ozs7aUM7OztRO007TTs7Ozs7O1EsRyxnQzs7Ozs7O1E7USxPOzs7OztLLE07Ozs7SSxJLCtDOzs7O007OztHOztJO0k7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLLFk7Ozs7O3dCOztTO1U7VyxLO1c7OztjOzs7b0I7d0I7O2E7VyxPO1U7Ozs7Ozs7VSwwQjtVLE87OztTLGU7OztTOzs7VSxVO1M7VSxPOztTOztLLG9CO0ssTztJOztLOzs7Szs7eUIsa0M7STtLO0ssMkIsaUM7SSxPO0c7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHOztJO0ksTztHO0csa0I7O0k7OztLOzs7O21COzs7VTtVLE87UztTLE87bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTs7O2UsZTs7YztZLE87Vzs7Ozs7WSxPOzs7O1UsVztVOzs7Ozs4QixPLG9DO1UsRyx5Qzs7OztNLE87O0k7STtHOztJOztLO0ssTztJO0ksb0I7cUIsTywyQztJLEc7SztxQixPLDJDO0ksRztLO3FCLHNCO0ksVTtxQixzQjtJLFU7O3lCLE8sc0I7STtLO0ssMkIsd0M7SSxPO0c7O0k7SztLOzs7Ozs7Szs7RztHOztJLG9CO0ksYTtJLG9CO0ksYTs7SztNLFk7OztVO1E7UTtROzs7TTs7SztNLE87TTtNLE87TSxPO00sTztNLFc7SztJO0ksTztHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7O00sdUI7O0c7aUMsd0M7O0ksTztpQztHOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxvQjtJLFc7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxNOztJO0c7O0k7O0s7Z0M7OztLO007O007TSxROzs7TTtNLEk7O0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7UztVO1UsTzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STtLO00sTzs7Ozs7Ozs7Ozs7OzRCOzs7Rzs7SSxJLDZCOztHOztJO0ssSSxPOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OzRCOzs7Rzs7SSxZOzs7SztNO08sbUI7TztNOzs7Ozs7TTs7O0k7Rzs7OztLLEcsbUM7SztNLFE7TSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsRyxpQzs7Ozs7Ozs7Ozs7TTs7SyxJLG1DO0ssRyxtQztLLGU7Z0I7SztLO00sVTtNLFU7Ozs7Ozs7Ozs7OzsyQzs7Ozs7Ozs7Ozs7Ozs7Ozt1QjttQjt1QiwrQjs7OztrQjs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7OzZDLFM7NEI7O29CO3FCLE87Ozt3Qjt3Qjt1Qjs0Qjs7O29CO3FCLE07Ozs7Ozs7Ozs7Ozs7OzBCLEs7MEI7Ozs7Ozs7Ozs7Ozt5Qjs7eUI7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Ozs7NkIsTTs7Ozs7Ozs7OytCOzs7Ozs7OzsrQjs7Ozs2QixNOzs0QixXOzRCLEssa0I7NkIsTTs7Ozs7OzBCLE07Ozs7Ozs7d0I7Ozs7Ozs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07Ozs7c0I7Ozt1QixRO3VCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7Ozt1QixNOztzQjtxQjtrQixPOzs7Ozs7O2lCO2tCO2tCOzs7OzttQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksMEI7SSxPO0c7O0k7SztLOztLLE07STtLOzs7Szs7O0s7Ozs7STtLO2tCO0k7SSxrQjtJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07O0s7Ozs7O00sTztNLE87OztNOzs7Ozs7O00sTTs7SztJO0ksTztHOzs7SztLOzs7O1E7USxXOztVLGtCOzs7OztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJLE87Rzs7STtLOzs7Ozs7OztJOztLOztzQjs7SyxJOzs7Ozs7O0ksVztJO0s7SztLLE87SyxrQjtLO2E7SSxPO0c7RyxtQjs7SSxXO1c7Rzs7SSxXO0ksUztJO0s7SztJLE87RztHO0k7OztRLE07TztJOzs7USxNO087STs7O0k7Szs7MEI7OztROzs7UTtNO0c7O0k7STtLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7OztTO1UsUzs7Ozs7O1c7Ozs7Ozs7Ozs2QixNOzs7O1M7Ozs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7Rzs7STtLO0s7d0I7SSxXO3dCO0ksdUI7OztLO087VTs7SyxNOztJO0c7Rzs7SSxXO0k7Ozs7TTtNLE87Ozs7STtHOztJLEs7SyxNO0k7SSxJOzs7a0Q7OztJO0ssa0I7SyxhOzs7Ozs7Szs7STtJO0c7O0k7O0ssTTs7SSxPO0c7O0k7SSxJOzs7O007TTtNO007Ozs7OztJLE87Rzs7SSxxQjtJO0k7O0ssSSxRLDBCLFU7Ozs7Ozs7OztXOzt3RDtXO1c7Ozs7Ozs7Ozs7Z0Isa0M7Ozs7Ozs7aUI7bUI7Ozs7O2tCLFc7a0I7a0Isb0I7a0I7OztpQjttQjs7a0I7bUI7O29COztvQjs7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7STtJO0k7SztLO0ssTztLLE87SyxLO0ssTztLLE87SyxRO0k7STtJO0k7SSx5Qjs7Ozs7OztNLFk7Ozs7OztNLGM7Ozs7Ozs7Ozs7O0k7SyxJLHFDOzs7OztNLDBCOztJO0c7O0k7SyxNO0s7SyxLO0ssVzs7OztLO007O1M7Ozs7O1k7Ozs7Ozs7OztZO1ksTzs7Ozs7OztNOzs7SztLOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OztrQjtzQiwrQjs7Ozs7Z0I7Z0I7Z0I7aUIsVTtpQixVOzsrQjs7O2lCOztpQjs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7O2MsRzs7Ozs7OztxQyxxQztrQjs7Ozs7OztpQjtrQjttQjs7bUI7b0M7a0IsSzttQjtvQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7NEMsUzsyQjs7bUI7b0IsTzs7O3VCO3VCLE07O3dCLFc7d0IsSSw2Qjs7Ozs7eUI7eUI7eUI7O3VCO3VCOztzQjttQjs7OztpQjs7O2dCOzs7Ozs7OztjOzs7O2UsVzt5Qjs7OztlO2U7Ozs7YTtjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztpQixXO2lCLEk7Ozs7O2tCO2tCO2tCO2tCO21CO21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7OztpQjs7O2tCLDRCO2lCOzs7Ozs7Ozs7Ozs7Ozs7Z0I7aUI7a0IsTztrQixPO2tCO3lDO2lCOzs7Ozs7b0M7aUI7a0IsTzs7b0MsbUIsc0I7aUI7Ozs7Ozs7Ozs7VTs7OztXO1c7Vzs7Ozs7Ozs7O1E7UTtRO1E7UTs7Ozs7USxLLDhCO1M7c0I7UyxTOzs7USxHO1M7O1M7O1M7Ozs7O2lEOztxRDtNOzs7O00sWTs7OztPO087TztPLEksbUIsSTs7Ozs7O087TztrQjs7OztLOzs7Ozs7SztLOzs7O0ksVztPLDBDO0ksMEI7SSxPO0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxTO0ssZ0I7Ozs7Uzs7Ozs7O1M7Uzs7VyxXO1c7VyxvQjs7VTtVOzs7Ozs7O1U7MEI7O1E7SztLOzs7O0s7SztLLE07Ozs7SSxJLFEsMEIsVTs7O3VCLE87Ozs7VSxPOztVOzs7O0ksTTtHOztJO0ssUTs7Ozs7SyxVOzs7OztJLHVCO0k7Szs7Ozs7OztLO00sTztNLEs7OztTLGtCLE87UyxPO1E7Szs7OztTO1M7VSxXO1UsTTsrQjs7OztpQzs7O1E7Szs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJOztNOzs7TyxROzs7b0I7NkI7O0s7SyxPO0k7STs7TTttQjtLO0ssTztJO0k7SyxJLGtCOztNLEksa0I7Ozs7O1c7Ozt5QjtrQzs7VTtlOzs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTsrQjtTLGE7UTs7Ozs7OztxQjtNLFM7O0ssUzs7TTtPLE87TyxPO007O0ssSztNO08sVztPLEs7TyxPO007TSxvQjtNLE87O0ssRyxpQztLLE87ZTs7STtJO0ssTTtLLE07Szs7STtLO0s7Ozs7UztTO1U7O1U7Ozs7Ozs7VTs7UTtLO0ssRztNLFM7TSxHO087USxPO1EsTztPOzs7Szs7OztLO0s7SyxNOzs7O0k7Szs7OztTLFksTztTLG9CO1M7O007TTs7Ozs7O21CO0s7TSxRO00sVTs7c0M7O087O2dDLE8sOEI7Ozs7Ozs7OzswQzs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3FCLHNCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7OzswQjs7O1M7O2tDLE8sOEI7Ozs7OztROztpQyxPLDhCOzs7OztRLEcsK0I7USxJO1E7UyxXO1k7VSxRO1U7VTtVLGdDO1UsTzs7O1E7Ozs7Ozs7Ozs7d0I7aUM7Ozs7O1MsYzs7O1UsVzs7OztlO2dCLG9CO2dCLE8sc0M7OztrQjs7Ozs7Ozs7UTtRO1M7OzthLFc7YSxXO1k7WSxPO1c7UyxRO1MsUTs7UyxzQjtTLFU7Ozs7UyxzQjtTLFU7Ozs7O1M7OztXOztZLE87WSxzQjtXOzs7Ozs7Uzs7Ozs7O2EsVzthO2EsMkI7WTtZLE87VztRO1E7UTtTLE87UyxPO1E7USxPOzs7O1M7O2tDLE8sOEI7Ozs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3lDLDBCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7O0s7Ozs7SSxXO0ksSSwrQjs7Ozs7SztLLE07OztHOztJOzs7SyxvQjtLOzs7O3VCLDBCOztLO0s7Ozs7O0s7SyxNOztHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0s7SztNO00seUI7TSxvQjtNO007TTs7Ozs7O007TSxNOzs7Ozs7O0k7Rzs7O0k7STtHO2lDLDBDOztJO0s7SztJO0k7RztHOzs7OztLO007TTtNLEk7SztJO0ksSTs7Ozs2QztLLE07Ozs7Ozs7SSxZOzs7O1E7Uyx3Qjs7OztRO1E7Ozs7YTtTLGtDOztTLE07OztROztJLE07RztHOzs7O0k7STs7OztTO1U7VTtVLEs7UztRO0ssSTs7OztNOztPLFE7O00sTTs7Ozs7Ozs7SyxZOzs7O1M7VSxVO1U7OztTO1M7OztTLEc7VTtVOzs7OztLLE07O0c7OztLO007TSxLO007SztJO0ksSTs7OztLOztNLFE7TSxROztLLE07Ozs7Ozs7O0ksWTs7OztRO1MsVTtTLFU7Uzs7O1E7UTs7MEI7O0ksTTtHO0c7Ozs7SSxJLDZCLFE7O0ssRztNLE07YyxNO0ssSSxRLDZCO0s7Ozs7TztRLFU7UTtROzs7O1E7UyxTO1M7OztPO2U7TztPOzs7TyxHOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7Rzs7Ozs7OztTLFk7Ozs7TSxJOzs7O1EsTTs7OztNLEk7Ozs7O08sTTs7Ozs7Ozs7Szs7TTtjOztVOzs7VSxNOzs7Ozs7Ozs7O0s7SyxJOzs7OztNLE07Ozs7STtlOzs7O0c7Ozs7STs7O0ssSSxVOzs7Ozs7O0s7Ozs7TTtLOzs7O08sTTs7O00sSTs7Ozs7TyxNOzs7Ozs7SSxhOzs7RztHOzs7O0ksMkI7SSxJOzs7Ozs7Ozs7O1E7OztTLFE7UztRLE07Ozs7O0ssTTs7Ozs7SztLOztNLFM7TyxNOzs7OztLLEk7Ozs7O00sc0I7TSxNOzs7SztJO0k7OztLO0ssSTs7Ozs7TSxzQjtNLE07OztLO0k7SSxPO0c7O0k7SztLOzs7Szs7Szs7Ozs7OztLLEc7TTtLLEksVTs7OzthOztTO1UsVTtVOzs7OztTO1UsVTtVOzs7Ozs7O007O0s7Ozs7TSxROztNO08sVTtPOzs7OztLO0k7STtLLFU7Ozs7OztJO0c7O0k7Szs7O0s7WSw4QjtJO0ksTztHOztJO0s7Szs7STtLLEksNkIsUTttQzs7O1E7UyxRO1MsTztRO1E7OztRLEcsbUM7Ozs7USxNOzs7Rzs7STsrQixrQiw0QjtJOztLO0s7STtJLGdCOztLO0s7STtJOzs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCOzs7b0I7a0M7b0I7cUIsUTtxQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7MEI7MEI7Ozs7Ozs7MEI7Ozs7OztxRTs7dUI7O3NCOzs7Ozs7O3lCLE87Ozs7Ozt5QjswQjsyQjsyQjs7OytCOzhCOzRCLE87MkI7Ozs7Ozs7MkI7Ozs7dUI7OztzQjt1QixlOzs7aUM7d0IsVzt3Qjt3QixXOzJCO3lCOzBCOzs2Qjs7aUM7Ozs7Ozs2Qjs0QjtpQzs7Ozs7Ozs7O3VCOzs7Ozs7O3VCOzs7a0MsTzs7b0I7bUI7aUIsTzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0IsTztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOztJO0s7OztLOzs7Szs7OztJLCtCO0k7Ozs7O00sd0I7O0s7Ozs7OztNLFE7TSxVOzs7Ozt5Qjs7OztZLE07Ozs7Ozs7TSxNOztLLEksdUQ7Ozs7O007c0I7O0k7SSxPO0c7O0k7STtHOztJOztJLEksbUM7O0k7O0s7TTs7OEI7TTs7Ozs7OztNO00sTTs7O0k7STtLO0ssMkIsdUM7SSxPO0c7O0ksSTs7OzZCOzs7STtHOztJO0k7SyxXO0ssVztLLFk7Ozs7UztVLFc7OzswQjs7OztTOztVLFU7Ozs7VSxPO1Usa0I7O1U7VyxPO1csTztXLFM7VyxRO1csTztXLE87VTs7UywwQjtTO1MsZTtvQjtTLEksTzs7O0ssMEI7SyxPOztHOztJO0k7STs7Rzs7STs7SztLLE87Ozs7aUI7ZTtJO0ksTztHOztJLEksTywwQjtJO0ksSTs7Ozs7SztLLE07OztLLE87STs7Ozs7O0ksTTs7OzthOztHOztJLEk7OztxQzs7O0k7Rzs7STs7STs7STtHOztJOztLOzs7TSxTO00sUzswQjs4QjtLO0k7SSxPOzs7OztjO0c7O0ksRywrQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7TTtPO087TSxHOzs7TyxlOztRO1E7UyxVO1MsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtlOztzQiwrQjs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YyxLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Z0I7aUIsOEI7aUIsVTs7Ozs7O2M7ZSxPO2UsMkI7Ozs7ZSxPO2lCO2UsVztlOztxQjs7Z0I7MkI7Yzt1QjtjO3VCO3FCO2UsVztlOzs7OztpQjs7Ozs7OztnQztrQjttQixRO21CLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1Qjt3Qjt3Qjs7Ozs7Ozt3Qjs7Ozs7O21FOztxQjs7Ozs7Ozs7Ozs7Ozt5QjswQjswQixXOzZCOzJCOzRCOzsrQjs7bUM7OzJCOzs7K0I7OzJCOzs7OytCOzhCO21DOzswQjs7Ozs7OzswQjs7Ozs7Ozs7O3VDOzs7O3FCOzs7O21COztrQjs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7Ozs7Ozs7Ozs7O2M7ZTtnQixPO2dCLE87Z0I7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7c0M7Ozs7Uzs7Ozs7O1UsTztVLE87Ozs7VTs7YTs7OztVOzs7UztVO1U7Ozs7Ozs7VTswQjs7UTtLLE87Ozs7STtJLFc7O0s7STtJO0s7SywyQixPLDRCO0ksTztHOztJO0c7O0k7STtLOzs7a0I7Szs7Ozs7O0ssTTs7O0c7O0ksSTs7OzhCOzs7STtHOztJO0k7SztNLFc7TSxjOzs7OztNLEk7OztrQyxNOzs7Ozs7Szs7RztHOztJLEk7O0s7SyxJLFU7Ozs2Qjs7OztLOzJCOzttQjtzQjtLO0k7SSxJLFM7O0s7SyxHLHlDOztLO0k7STtLLFc7OztLO0ssSSxVOzs7NkI7Ozs7d0I7c0I7SztJO0k7SyxXOzs7SztLLGlCO007SztJO0ksTztHOztJOzs7Ozs7OztVOzs7Ozs7OzthOztjOzs7aUI7aUIsSSxVOzs7O21CLE07Ozs7O2lCLEk7Ozs7OztrQixNOzs7Ozs7OztpQjtnQjthOzs7OztpQjtpQixJLFU7Ozs7bUIsTTs7Ozs7aUIsSTs7Ozs7O2tCLE07Ozs7Ozs7O2lCO2dCO2E7Ozs7Ozs7Ozs7OzthLEc7YyxJOzs7Ozs7ZSxNOzs7Ozs7Yzs7Ozs7TyxNOzs7TTs7Szs7Ozs7Ozs7TSxNOzs7Ozs7O0k7STtLLFE7SyxRO0s7SSxXOzs7STs7SyxPOztJOztLLGE7SyxVO0ssVTtLO0s7SztLO0k7STs7O0ssSTs7Ozs7O007Ozs7Ozs7STs7OztJO0ssUTtLLFE7SztJLFc7STtLO007TSxhO007TTtNO007SztLO0s7TSxLO00sSzs7TSxNOzs7O1MsSSxvRDs7Ozs7O1UsTTs7Ozs7Ozs7UTtLO0s7Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7Ozs7SztNLHlCLDBCO00sYztNLE87TTs7cUI7Szs7Ozs7O0s7OztHOzRCLHlDOztJOztpQzs7Szs7STtHOztJOzZCLG1CLDBCO0ksTztHOztJO0k7ZTs7aUU7OztHOztJLE87Rzs7SSxJLFUsNkI7O0ssTTtJLG1CLFU7Ozs7O00sRyw2Qjs7O0ksTTtHOztJO0ksTztHOztJLFk7O2Msc0I7O0s7Ozs7a0I7TztRO1MsTztTLE07O1E7UTs7OzsrQjs7OztPOzs7O1EsSztPLDJCO087UTtROzs7UTs7O1E7Tzs7TyxzQixPO08sNkI7TztRO1E7O1c7O1EsVTtRO08sYTtpQztPLHFCOzs7Tzs7Ozs7UTs7Ozs7OztRO1MsYztTOzs7VTtXOzs7VTtXOzs7Ozs7O1ksTTs7O1UsYzs7Ozs7WSxHO2EsMEI7YSxHO2MsTTthO2E7YztjLGtCO2M7Yzs7O3NCOzs7Ozs7O2EsSztjLE07OztjOzs7YTthLEk7Ozs7ZSxNOzs7YTthOzs7O1UsTTs7UyxNOzs7OztTO1U7OztTOzs7TyxxQixPO08sNkI7TztPO1EsSSxPOztTO1M7VTtXO1c7Ozs7Ozs7UTs7OztZO2EsUTs7O1k7Ozs7Ozs7VztTLE87UztROztnQzs7NkI7OztROzs7OytCOzs7O08scUIsTztPO1E7Uzs7UztTOzs7UTs7Tzs7Tzs7OztROzs7UTs7O1E7Tzs7OztPLG9CLE87TyxpQztRO1M7O1M7Uyw4Qjs7O1ksOEIsUTs7Ozs7bUM7O2E7O2M7Ozs7Ozt5Qjs7O3dCOzthOztZLE07VztTLFc7Uzs4QjtTO1M7K0I7UyxPO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RyxlOztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCOzs7O3FCOztvQjtpQixPOzs7Ozs7Ozs7Ozs7Ozs7O2tCLEcsaUM7Ozs7Ozs7Ozs7Ozs7OztpQixzQjtpQixHO2tCO2tCLEc7bUI7Ozs7aUI7a0I7OztrQjs7O2tCOzs7O2lCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QjtzQzs7OztpQjs7O2tCOzttQjs7Ozs7O3VCO3NDOzs7Ozs7cUI7cUI7O29CO2lCLE87Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUIsVTs7OzttQixVOzs7O21COzs7O21CO21CO21CLFU7bUIsVzs7Ozs7Ozs7Ozs7eUIsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjt5Qjs7Ozs7Ozs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCOzs7Ozs2Qjs7NEIsTTsyQjtnQzs7Ozs7Ozs7Ozs7eUI7OzswQixROzBCLFU7dUQ7Ozs7Ozs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7Ozs0Qjs7Ozs7Ozs7MkI7O3lCLE07d0I7NkI7Ozs7bUIsTTs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7Ozs7c0Isa0M7c0I7OzhCOzs7cUI7bUIsVTs7O21CO29CLGE7OztxQjs7OzswQjswQjt5QjtzQjs7Ozs7OztxQjt1QjtzQjtpQzs7OztvQjtvQixNOzs4Qjs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7UTs7OztRO1MsSTs7Ozs7OztPO1EsSTs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPOzs7O2M7OztlLFE7OztjOzs7Ozs7ZTs7Yzs7ZSxPO2UsTztlLE87Yzs7O3VCOzs7O2E7VyxPO1U7Ozs7O1c7Ozs7TztRLEksUTs7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTLEk7Ozs7OztLOzs7O0k7O0k7STtJO0ssVzs7TTtNLEksaUQ7Ozs7USxrQzs7O0s7SyxPLHdDO0c7O0ksSSxRLDJCLE87Ozs7UTs7UTs7Ozs7UztRLE87O1E7OztRLE07O0ksTztHOztJLEksUSwyQixPOzs7O1E7OztTO1EsTzs7UTs7UyxROzs7Ozs7UyxPO1MsTztTLE87UyxXO1EsTzs7O1E7O0ksTztHOztJLFk7O0k7RztHO0k7STs7STtJO0ssRyw0QztrQjtLLFk7Ozs7UztZO1UsTTs7OztTO1U7VyxzQjtXLE87VTs7Ozs7VTs7Vzs7OztXOzs7OztZLE07Ozs7OztrQiw0Qjs7OztTOztVLHNCO1M7UyxlO29CO1MsSSxPOzs7SywwQjtLLE87O0c7O0k7STtLOztLO0s7Ozs7OztLOztHOztJO0ksb0I7SSxXO0ksUzs7STs7O1E7O1M7UyxzQjtRLE87O1EscUI7UTs7O1M7Uzs7O1U7Ozs7YztjO2E7VyxPO1U7Ozs7O2U7ZTtjO1csTzs7Ozs7UTs7USxtQztRLFM7OztHOztJLGU7ZTtpQjtJLFM7OztLLEssNkI7TSxjOzs7O1E7Ozs7UztXO3NDO1E7Ozs7TSxNOztLLFk7Ozs7O1Msa0M7Ozs7O1csa0I7WTs7WSxjOzthOzs7Ozt3Qjs7Ozs7Vzs7UyxZOztVO1c7OztXLE87VyxPO1U7Ozs7Uzs7VSxVOzs7Ozs7OzthLGdDLFE7Ozs7Ozs7O2lCOzs7O2tCOzs7O3NCO3FCO3FCLE87OztvQjtrQixRO2tCLE87b0I7a0I7bUIsTzswQjs7Ozs7Ozs7OzthO1k7VSxXOzs7YTswQjtZO1UsTzs7O2E7YSxPO1k7VSxXO1U7Z0I7Uzs7OztJLG9CO0ksTztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7STs7OztJLFk7a0U7SSxJLFcsMkM7Ozs7SyxJLE8sMkIsTztLO0ssVzs7Ozs7OztVO1csYzs7O1ksTTs7VztZOztZOzZCO1ksYzs7Ozs7OztXO1k7YSxPO2EsSTs7Ozs7YTs7Ozs7O2EsTTs7Ozs7OztVLGtDOzs7VyxHOzs7WTs7YTs4QjtpQzs7Ozs7Ozs7VSxtQixPO1U7VyxVO1c7VyxJOzs7OztXO1c7WSxXO1k7O2lCOzs7OztZOzZCO1ksUTtZLFU7Ozs7O2EsRzs2Qjs7Ozs7Ozs7Ozs7O1UsRztXO1k7WSxVOzs7WSxNOzs7Ozs7O2U7Ozt3Qjs7Ozs7TTs7TyxzQjtnQjs7SztLOztHOztJO0s7SztLOzs7Ozs7SztLLE07O0c7OztJO0s7OztNLHNCO00sUzs7O007OztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOzs7TyxzQjtPLGdCOzs7O0s7OztNLHNCO00sTztNOztNLHNCO00sVztLO0s7Ozs7Ozs7Ozs7O0s7Ozs7OztLO0ssTTs7Rzs7Ozs7OztRLEs7Uzs7O1U7O1Usc0I7UyxjOzs7OztROzs7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7OztJLG9CO0k7OztROzs7Ozs7OztJO0k7Rzs7SSxHO0ssTTtJOzs7Ozs7Szs7O0ksb0I7STs7O1E7Ozs7Ozs7STtJO0c7O0ksUztJLEcsMEM7SSxJLDhCLFE7O0s7O00sTzs7O1MsbUIsUTs7Ozs7O1k7O2Esc0I7WSxPOzs7O1M7UTtLO0ssMEI7SyxPOztJLG9CO0ksTztHOztJO0ksb0I7SSxPO0c7O0k7SztLO0ssUTtLLFU7Ozs7O0ssTzs7STtHOzs7SSxZOzs7OztRO1MsSSxZLDZCO1M7Ozs7Z0M7Ozs7O1EsRztTO1UsTzs7O2Esa0IsUTs7Ozs7OztjOzthO1k7UyxLLHlDOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixPOzs7TyxPOzs7TyxPOzs7OztzQixjO3FCLFk7NkIsd0I7Rzs7STtHOztJLFc7SSxPO0c7O0k7O087O087O087O087O087ZTs7Rzs7O0k7O087O087O087O087O087ZTs7Rzs7STtJLE87Rzs7SSx1QjtHOztJO0k7OzttQzs7bUM7O21DOzttQzs7bUM7OztLO0s7Ozs7NEI7OztHO0c7O0k7SztLLFk7SyxXOztLOztNOztPOztPOzs7Ozs7O0k7Rzs7SSxpQjs7O0c7O0ksVztJLE87Rzt5QiwrQzs7STtJO0ksVzt3QjtJLFcsVztJLE8sVztHOztJO0ssTztJO0k7SztLLFE7OztJO0s7STtLLE87STtJO0ssTztJO3FCLHVCO0k7SyxhO0ssb0I7SyxVOztLOztNO007TTtLO0s7STtJO0k7SyxZOzs7TSxPOzt5QjtLO00sTztNLE87SyxPOzs7Ozs7Ozs7OztJLE87Rzs7SSxXO0c7RztzQix5Qjs7O3lCLHNCO3FCO0ksbUI7Rzs7SSxJLGUseUM7Ozs0Qjs7O0c7NkIsTyx5QztHLFU7O0k7STtHOztJO0k7STtHO0csSSx1Qzs7STtLLFc7SyxPO0k7STs7Ozs7Uzs7SSxPO0c7O0k7OztNOztPLE87Yzs7O0s7TSxXO007TztRO1EsTTs7Ozs7TyxJLGU7O29CO087Ozs7Uzs7VTs7O1M7UzswQjtTOzs7UyxHLGlDO1M7O1U7OztVOzs7UztTO1U7OzthO2E7WTtTO1M7O3NCO1M7OztTLFM7UztVOzs7VTs7c0I7Uzs7OztJLFc7Rzs7SSxXOztPOzs7Szs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7Ozs7NEIsTSwwQzs7TTs7Ozs7Ozs7OzttQztJO0c7OztLO0s7SztJOztHOztJO0ksTztHO0csbUI7O0k7STs0QjtLLFUsZ0M7TTtLLEk7O0c7O0k7O087O1EsTztRO3FCO087O1E7VTs7Ozs7USxPO1EscUI7TyxJLFk7OzsrQjs7OztPOzs7UyxJLFU7Ozs7Ozs7OztVLHVCLE87VTs7Ozs7O1E7Ozs2Qzs7TyxzQztPOztHO21EO0c7O0k7OzZCOzs7Ozs7OztVOzs7VyxPO1U7Yyw0Qjs7Ozs7OztzQzs7Ozs7O087OztTO1U7VztXLE07Ozs7O1UsSSxlOzJCOzs7Ozs7OztZOzs7YTs7O1k7WTtZOzt5Qjs7Ozs7Ozs7UTs7OztRO1MsVztTLEs7VTs7OztPOztPLG9DO087Ozs7STtHOztJO0ksTztHOztJLE87Rzs7STtJLG9CO0k7SyxRO0ssTztJLE87Rzs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOzs7c0IsTyxnRDtLLE87STtJLE87O0c7O0k7STtxQzs7O007Ozs7Rzs7SSxZLE87O0ksTzs7O0ksOEI7eUM7O0ksTztHO0c7O0k7STtLLEksSzs7OztNLEc7TSxJOzs7SyxPOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjtHOztJO0ssTzs7OztPLE87O087Ozs7O1EsTztRO08sTzs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztRO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O1c7c0IsTzs7VyxPOztVO08sTzs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXLGEsTzs7VyxPOztVOzs7VztXLE87VTtRLDRCO08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87OztPLE87Ozs7Ozs7OztPOzs7OEI7USxPO08sTzs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7OztNLFEsTzs7TSxPO0s7SyxPOztJO3lCLE8seUM7O0ssWSxPOztLLE87STtJLE87Rzs7STs7STs7OztHOzs7SSxnRDtJO0c7O0ksYzsrQjs7O0ssVzs7SSxnQixPO0ksTztHO0c7STtJO0k7STtJOztJLFEsTTs7SSxPO0c7O0k7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1ksc0I7WSxLO1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7O0c7O0k7O087O1EsUztRLEk7OztRLEcseUM7OztPOztPLGtCO087O087OztROzs7Tzs7Rzs7STtLLFk7SyxPO0k7Yzs7Rzs7STtJOzs7Ozt3Qjs7O0s7OztTOztVOzs7OztTO1U7VyxJO1c7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztRO00sTzs7OztJO0c7O0k7STtJOztLLDJCLGdDO0ksTztHOztJLFk7SSxvQjtJLE87Rzs7STs7MEIsVzs7d0M7O08sb0M7Tzs7Rzs7SSwrQjt1QjtJO0s7Ozs7SyxRO0s7OzJDOztjLE07Ozs7O1U7O1csb0I7VyxHLGtEOztVOztXLEk7VyxPO1csTzs7O1c7Ozs7YTs7Ozs0QiwyQztjOzs7aUI7aUIsTztnQjtjLE87YTs7O2M7ZTtrQyxPLCtCO2UsTztjO2U7Z0IsTzt1Qjs7Ozs7Ozs7Ozs7O1U7O1M7TTs7STs7Ozs7Ozs7Ozs7Ozs7TTtPO1EsTzs4QjswQjs7Ozs7SyxJLEk7Ozs7OztLOztHOztJLFc7SSxPO0c7O0ksVztJLFc7STtpQzs7O0k7Rzs7SSxpQjs7SSxXOztLLGtCLFE7O00sZ0MsTztNOzt3Qjs7Ozs7O0s7STtJLE87Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87OztrQjs7O1k7OzswQjswQjtXO1EsTzs7O2lCLDRCO1EsTzs7USxvQixVOzs7UyxzQixPOztRLE87O0ksTztHO0c7STtJO0k7STtJO0k7STtJOztJO0ssTTtLO0ssVztlOzs7Ozs7Ozs7Ozs7Ozs7YSxPOzs7Ozs7UTs7STtHOztJO0k7SyxJLFc7Ozs2Qjs7Ozs7Rzs7SSxXO0k7OztLOzs7O1M7UyxPO1E7TSxPO0s7Ozs7STtHOztJOztNO08sTztPLE87TyxPO2M7O007TyxPO2M7SztLLGlDOztHOztJO0s7TSxPO00sTztLO0s7O087d0I7TTs7O0c7O0k7SSxJLFcsNEM7Ozs7SztNLFc7TTs7Ozs7Ozs7Ozs7Ozs7WSx1Qiw0Qjs7Ozs7O2lCO2lCLE87Z0I7YSxLO2EsVzsrQjs7Ozs7O2tCOztNLEc7O007OztHOztJLEksUSw4Qzs7SztLLFc7STtlOztHOztJLDBCOzs7STs7Szs7O1M7OztRO0ksTztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJOzs7RztrQywwQzs7SSxZOzs7OzBCOzs7O1E7O0k7Rzs7STtJO0s7SyxHO007SztNLE07TTtNOzs7OztTOzs7OztTLEc7VTtTLFk7Ozs7Ozt5Qjs7NkM7Ozs7O1M7UztpQzs7O0s7NkI7O0c7MkIsNkI7NkIsbUIsc0I7O0k7Ozs7O0c7O0k7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87RztHOztJO0k7TTtXO0s7TTttQztNO0s7OztLLEksTSw4Qjs7OztTO1U7VTs7OEI7O1M7Ozs7O1UsMEI7OztTLEc7VSxjOzs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7O1M7OzZCOztTOzs7VTs7O1U7O1UsNEI7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7Uzs7OztjOzJCO2E7c0I7OztTOzs7YSxrQixROzZEO2E7WTtVLFU7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDO1csaUM7Vzs7OzttQzt3QjtXOzs7Uzs7OztvQztVOzthLGdDLFE7MkM7Ozs7Ozs7ZTs7Ozs7OztlOzs7YTs7VSxXO1M7Ozs7aUM7d0I7Uzs7Uzs7O3dCOztTLGdCO1M7VSxRO1U7UztTO1Usc0I7VSxLO1U7Uzs7Uzs7Uzs7Ozs7YTs7O2M7YyxPO2EsVztZO1UsTztTOztLO0k7SSxHO0s7O00sc0I7a0I7O0k7SztLO0s7O0k7Rzs7SSxvQjtJLE87Rzs7STtLO00sVTs7Ozs7O1M7c0I7UTtNLGlCOzs7UztTLE87UTtNLGdCO007OztLOzs7Z0IsTztJOzs7O0s7SztLOzs7SSxZO0ksTTtHOztJO0s7Ozs7O007TTs7O0s7O0ksYzs7Ozs7Ozs7Ozs2Qjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7Rzs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0k7O0ssSSxPLDRCOzRCO0s7SztJO0ksTztHOztJOztLLFc7SyxPO21COztJO0ksYTtJLE87Rzs7STs7SyxPOzs7cUIsMEI7SSxPO0c7O0kscUM7O0ksZTtHOztJLFc7d0IsNEM7STtnQjs7STs7YyxJLDhCO2M7YTtHOztJLEk7SSxXO0c7O0k7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHOztJO0k7SSxJLGlDOztLOztNLE87OztTLFcsVztTO1U7VyxPO2tCOzs7UyxjO1E7Szs7STtJO0k7OztLLHVCLFU7Ozs7TyxzQixVOzs7Ozs7O1UsRztXO1ksVzttQjs7Ozs7Ozs7Ozs7O0s7Ozs7O0k7Ozs7NEMsMEI7Szs7Ozs7OztTOztRO0s7OztLLGtCOztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCLDJCO2M7OztJLEk7O0ssYTtLLHNCOzs7TSxXO007Ozs7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7OztLO00sVTs7O007O0s7STtJLFc7O0s7Ozs7OztLO0k7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7OztjOzs7Szs7Ozs7TTs7Yzs7OztJOzs7Ozs7YTs7OztHOztJO0ksTztHOztJO0ksTztHOztJLG1COztJOztjO2U7ZTtjO2E7Rzs7STtJO0ssVTtLO0k7STtJO0k7STs7Szt5RTtLO0k7STtLLGM7SyxPO0s7OztLO0k7Ozs7Ozs7STtHOztJO0ksTztHOztJO0k7STtJO0ssTztLOzs7SSxPOzs7Ozs7Rzs7STtLLE87SztLO0s7Ozs7K0I7Ozs7O0k7Rzs7STtJLE87Rzs7SSxZOzs7Szs7STtHOzs7STs7Ozs7OztROzs7UyxNO1M7UztROztVO2E7UyxXO1MsSztVLE87Ozs7O1EsdUI7USxHO1M7Ozs7OztpQyxrQix3QjtROzs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztTO1M7Ozs7O1E7O1M7Uzs7O1M7OztZO1k7VztTLFM7Uzs7OztZO1k7VztTLFc7UyxhOzs7WTtZOzs7Ozs7O1c7UyxTO1M7Ozs7WTtZO1c7UyxZO1MsYzs7O1k7Ozs7O2E7OzthO1ksYTs7WTtXO1MsUztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssTztLOzs7Ozs7STtHOztJO0s7SztPO1U7O0k7RztHLHFCOztJO0k7STtJO0ksZTtJO0k7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STtJLHlCO0ksSSxPLDhCOztLOztJO0k7SyxtQjtLOzs7Szs7STtJO0ssb0I7SztLO0ssTztLLE87SyxPO0s7STtHOztJO0ksTztHOztJOztLO0s7SztLO0ksaUI7SSxXOzs7Ozs7Ozs7O0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CO0ksb0I7STs7O2UsYztnQixXO2dCLE87O2U7YztjLE87Ozs7Rzs7SSxXO0ksTztHOztJO0k7O3lCOztPLG1CO087Ozs7OztTOztVLFE7O3FCOztTLEksc0IsVzs7Ozt1QyxTO087OztRO1E7O2dDO087bUM7Ozs7O0s7O007MEI7TSxPO0s7SyxPO0k7SSw4QixXO0c7O0k7SyxPO0ssYTs7Szs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OzhDOztjO2E7VyxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO007TTtPLFE7Tzs7TyxrQjtPOzs7O087a0Q7O087TTtNO08sTTtPOzs7O1ksTztXO00sVztLO0s7TSxNO007TTs7O1U7UztNLFE7OztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7STs7Szs7TSxvQjs7SyxPOztJO0ksTyxXO0c7O0ksTztHOztJO0ksTztHOztJO0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7O0ksTzs7Ozs7Ozs7OztJLG9CO0ksVztJLE87Rzs7O0ksRywrQjtJO0k7OztJOztLLE87OztJLE87Ozs7Ozs7Ozs7SSxZOztnQjs7SSwwQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSyxrQyw4QiwrQyxVO0k7OztJOzt5Qjs7OzRDOzs7STtHOzs7SyxPOztROztvQjs7SztJO0ksUzs7SSxnQjtHOztJOzhCO0c7Ozs7bUI7Ozs7TTs7O007Ozs7O0c7STs7NEIsTyx5QztJLGlCOztJLFk7O0s7O00sVTs7Ozs7O0ssZTtLO00sTztNLE87TSxXO00sTztLLE87O0k7Rzs7STs7O0s7STtzQztJOzsyQixPLDBDOztJLE87RztHLGlCOztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87Ozs7Szs7UTs7OztTOztTLFE7UyxVOzs7UztVOzttQixPO2tCOzs7O1M7VTs7bUIsTztrQjs7UTs7OztTLFc7Ozt5QixXOztXOzs7a0M7WSxPO1c7bUI7Ozs7Ozs7OztnRDs7Ozs7a0I7aUM7OztZOzs7ZTs7Ozs7Ozs7O1k7O2E7YSxPOztlOztXO21COzs7Vzs7OztZLE87VzttQjs7Ozs7Ozs7O1csa0IsTztXO21COzs7Ozs7Ozs7OztTLFc7OztTO2lCOzs7USxXOzs7Ozs7Uzs7O1k7Ozs7Ozs7Ozs7OztXO1c7OztjOzs7Ozs7Ozs7OztrQzs7Ozt1Qjs7Ozs7VyxXOzs7VztXO21COzs7Ozs7OztXLFc7OztXO1c7bUI7Ozs7Ozs7Ozs7USxXOzs7UTtRO1EsYzs7Ozs7WTs7cUI7cUI7cUI7cUIsTzs7Ozs7Ozs7b0I7O1EsMEI7O0k7SSxPO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSw2Qjs7OztPLE87Ozs7STtHOzs7STtJOzs7cUQsUztJOzs7O2M7O2U7ZTtjO2M7ZSxVOzs7ZTs7O2dCLE87ZSxXO2M7YyxXOzhCO2M7ZTs7O29CO29CO21COztlO2M7ZSxNOztjOztlO2dCOzs7Z0I7O2lCOztvQjs7O3FCLFE7Ozs7O3FDLG1COztvQjs7NEI7OztlO2dCLE87Z0IsTzs7Z0I7O2lCO2tDO2lCLE07O21COzs7Ozs7Ozs7O2dEO2U7Z0IsTztnQixzQjs7Ozs7Ozs7ZTtnQjtnQjt1QztlOzs7Ozs7Ozs7a0I7O2dCO2dCOztlOzs7Ozs7OztlLE07O2E7Rzs7O0k7Szs7O0k7Ozs7Szs7STtLOzs7SSxjO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7Ryw4Qzs7O0ksWTs7STs7O0k7OztJLG1CO0kscUI7SSxvQjtJLFc7Rzs7SSxxQjtJLG9CO0ksVztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7ZTs7Ozs7Ozs7O2M7O2UsTztjOzs7bUI7YyxvQjs7YztlOzs7Ozs7Ozs7YyxPOzs7Ozs7OzthOzs7STs7OztjO2M7YztlLE07O2U7O2tCOztlLE87Ozs7Ozs7Ozs7O2MsaUI7YyxPOzs7Ozs7Ozs7O2E7Rzs7Ryw4QjtHLGlDOztJO0c7O0k7OzZCLCtDO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOztPOzs7USxvQixPLHlDOzRCLE8seUM7TyxPOztPOzs7O1Esb0IsTyx5Qzs7d0IsTyw4QztPLE87O087Ozs7USxvQixPLHlDOzs7VyxPO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0ksWTs7OztNLHVCO00sTztLO0ssTztJO0ksdUI7SSxPOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOztJLEksNEIsOEI7Ozs7NEI7OztHOztJLGlCO0ksZ0I7SSxPO0c7O0ksTztHOztJOzs7Tzs7USxPO1E7TyxXOzs7Ozs7OztVLFk7VTs7Ozs7Ozs7VTtXLE87VyxVO1U7Ozs7Ozs7O0k7Rzs7OztnQjs7Ozs7UTs7OztTLHFCLE87UyxHOzs7Ozs7Ozs7OztTOztVLGtCO1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7UTs7UTs7Ozs7OztTOzt3QztTLFE7UTs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs0Qjs7Ozs7USxZO1E7Ozs7O1E7OztROzs7OztJO3FCO2tCOztJO0c7OztJOzZDO0ksTztHOztJOzs0QztJLE87Rzs7STs7Tzs7d0I7OztPO2U7O0c7O0ksUzs7O0s7Ozs7Ozs7TTs7O007Szs7Ozs7STtHOztJO0k7OztRLGtCLFE7b0I7O1EsSSxnQjs7OztVLE07Ozs7OztROztTLFE7UyxVOzs7UyxzQjtTLFk7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztRLEk7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7O1Msc0I7Uzs7O2dCOztROzs7OztlLE07UTs7OztPLGlCOzs7TyxpQjs7OztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTtJLEksZ0I7Ozs0Qjs7O2lDO0k7SyxPO0ssVTtLLE87SyxTO0ssUTtJLEk7Ozs0Qjs7O0ksZ0I7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksaUI7O0k7Szs7O1E7Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7K0I7Ozs7OztnQjs7O0ksVztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRO1MsUTs7Ozs7O1E7Ozs7RztxQyx1Qzs7Ozs7OztRO1MsWTtxQixNO1Msb0I7Uzs7Ozs7VSxNOzs7O1E7O1M7O1k7Ozs7Ozs7Ozs7O3VDOzs7O2EsTTs7WTs7USxPLFc7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7OztROzs7UztTO1MsTTtTO1MsTTtRLE87O0c7O0k7STtLLEksYyx1Qzs7Ozt1QjtNLDZCO00sRywrQjtNLEk7O0c7O0k7OztJO0s7TSxtQzs7Ozs7Ozs7SSxPO0c7O0k7SztLLFE7Ozs7Ozs7O087USxRO1E7VTs7Ozs7Ozs7Rzs7SSxTOzs7Ozs7Ozs7Ozs7Ozs7O1MsRzs7Ozs7Ozs7Ozs7O087OztZO087Ozs7O087OztpQjs7d0I7O0c7OztLLEksNkIsYTs7OzRCOzs7STs7STtHOztJO0s7TTtNO007OztTLG9CO29COztROzs7Uzs7Ozs7Ozs7O2lCLG1CO2lCOztrQjtrQixtQjs0Qjs7Z0I7YSxPOzs7MkI7Ozs7UztROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7O1M7UyxPO1E7TSxPO00sMEIsTyxrQztNLDhCLFc7O0s7Ozs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STtJLFk7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7SyxVO0s7Ozs7Ozs7Ozs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7VTtVLFM7VSxROzs7VyxNO1UsTTs7Ozs7Ozs7Ozs7OztVLEc7VztZO1ksTTtrQjs7OztTLE07O1M7OztVOzs7YTtjLE07YyxNO2EsTztZO2dCOzs7Uzs7VTtnQjs7O1M7OztVO2dCOzs7Uzs7OztVO2dCOzs7Uzs7OztVO2dCOztLO0s7O0c7O0ksTztHOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXLEk7Ozs7Ozs7Ozs7OztvQjs7TSxNOztLO0s7OztLLE07STtHOztJLFk7O0s7TSxPO00sVTs7d0M7Szs7STtHO3VDLDRCOztJO0c7O3VCLE8seUM7STtnQzs7Szs7TSxxQixPLHlDOzJCLE8seUM7SyxPOzs7cUIsTyx5QztJO0s7O1E7O1E7O1E7Z0I7O0k7Szs7TTtNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxtQixPLHlDO3VCLE8seUM7SSxPO0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7O1k7O1c7O1k7WTtZLE87VyxPOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxXO08sTzs7O08sVztPLE87OztHOztJLHdCLE8seUM7SSwrQixTOztLOztNLE87SyxPOztJO0s7TztLLE87SSxPO0c7O3FCLE8seUM7SSw0QjtJOzsyQjs7O087OztPOztRO1E7USxPO08sTzs7Tzs7UTtRO1EsTztPLE87O0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7OztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sVztPLE87OztPLFc7TyxPOzs7Rzs7cUIsTyx5QztJLFU7O0k7Szs7STtLLE87SyxPO0ksTztHOzt1QixPLHlDO0k7Ozs7UTs7UTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7TztPOzs2Qjs7OzsyQixPLHlDO087UTs7Vzs7O1k7VyxPOzs7VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTyxXOzs7Tzs7O087O1E7OztPLG9CO08sTztnQjs7Ozs7O087OztPLHNCO08sTzs7O087O1EsVTtPO2lCO2lCOztHOztJOztLOztJO0ssTTtLLE07SSxJOzs7OztLOztJO0c7O0k7Ozs7O0k7OztPOzs7OztRLE87TyxHLHFCLHNDO08sVztPOzsrRDtPO1E7UTs7Ozs7Ozs7MEI7Szs7RztHLEk7OztJLGU7O0k7OztJOztPOztPOztPOzs7O0c7bUIsbUM7O0k7Szs7Ozs7O00sUTtNLFE7SyxHOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7OzJCLG9CO0ksTztHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHLEk7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7Vzs7O2U7ZTtjO1ksTztZLFU7OztXO1k7YSxPO2EsTztZOzs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7O1Msa0I7VSxlO1UsSztXLE07VTtXLE87VyxPO1csUTs7OztXLGM7VyxjOzs7VztXLGM7Ozs7Ozs7Ozs7Ozs7Vzs7O2Usa0IsUTsrRDtlO2M7WSxVO1c7Ozs7Vzs7WTs7YTs7Ozs7O2MsVTtjLFU7Ozs7Ozs7Ozs7O2dCLFc7bUI7aUI7a0IsUTtrQixROzs7Ozs7Ozs7Ozs7Ozs7OztlOztpQjs7O2tCO2tCOzs7Ozs7Ozs7Ozs7Yzs7Z0I7OztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7WSxJOzs7Ozs7Ozs7Ozs7Ozs7eUI7O1U7Ozs7Ozs7O00sYzs7Ozs7Ozs7c0M7Ozs7O3NDOzs7Ozs7Ozs7O0k7O007O007TyxPO08sTztNOzs7Ozs7O0s7O0k7Rzs7STtJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7UTs7dUI7OztTOztVLFE7VSxVOzs7O2EscUIsTzthLEc7OzthLHNCLE87YSxHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7O087UTtTOztZLFc7WSxPO1c7O1E7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7TztRO1M7O1ksVztZLE87Vzs7UTtxQjs7Tzs7O1EsTztRLE87Ozs7O1k7YSxPO2E7ZSwwQjtZO2EsVzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7WTtXO2dCOzs7Tzs7O1E7UyxrQixtQztTOztZOzs7Ozs7YSxRO2EsUTtZLEc7Ozs7Ozs7YTs7WTs7Ozt3Qjs7WTs7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7OztJO0ssYzs7Ozs7Ozs7O0ksZ0I7STs7Ozs7O0ksb0I7STtLOzs7SyxPOzs7SztLLG1CLGdEO0s7TSxROzs7TSxVOzs7OztNLEksc0I7O00sbUI7Ozs7O2dCO0s7TSxVOzs7OztNLFU7Ozs7O007SztNO007TyxJLG9COzs7Ozs7SztJO0ksTzs7O0k7O0s7O0k7SyxNO0ssTTtLO0s7SSxJOzs7OztLOztJOzs7O0ksc0I7OzBCO0k7Rzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7O0ssTztJO0ksTzs7O0k7O0s7SyxPO0k7STs7Rzs7SSx5QixPO0ksTzs7OztJLE87OzZDLFM7OztJLE87OztJLHdCO0c7O0ksd0I7Rzs7O0k7Ozs4QixPOzs7TyxPOzs0QixPOzs7TyxPOzs2QixPOzs4QixPOzs2QixPOztPLDBCLE87TyxPOzs0QixPOzs2QixPOzs7Ozs7VztXLE87VTtPLE87Ozs7OztXO1csTztVO08sTzs7O08scUI7ZTs7O3NDLHNDOzs7SSxPOzs7STtLLGtCLE87SyxPOzs7SSxvQjtJLE87OztJOztLOztNOzs7UztTLFc7UyxPOztLLE87OztJLG9CO0ksTzs7Ozs7Ozs7O0s7SztLLE87STtJO0k7SSxXO0k7O0s7SyxPO0k7SSxPOzs7SSxxQixNO0ksTzs7Ozt3QixrQixPLDRCO0k7SSxVO0ksTzs7OztJLE87Ozs7SSxzQjs7STtJLFU7SSxPOzs7STtJO0k7O0ssMEI7Szs7dUIsTzs7UTtnQyxPOzs7STtxQzs7O087OzRCLE87O087O08scUIsTTtPLE87O087OztRLE07Tzs7OztXO1csTztVO08sTzs7TyxzQixNO08sTzs7Ozs7O1c7VyxPO1U7TyxPOztPLHVCLE07TyxPOzs4QixPOzs4QixPOzs4QixPOzs7TztPLE87O0c7Ozs7Szs7O3dCLE87O1EsOEIsTTtRO1EsTzs7USxnQixNO1EsTztnQjs7STtJO0k7cUM7OztPOztPOzs7TztPLE87O08seUIsTTtPLE87OztPOzs7O1csa0IsTTtXLE87VTtPLE87OztPO08sVTtPLE87OztPO08sVTtPLE87O08sMEIsTTtPLE87O08sd0IsTTtPLE87O08sd0IsTTtPLE87Ozs7Ozs7Vzs4Qjs7VyxPO1U7TztPLFU7TyxPOztnQyxPOzs7TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztPOztPOztnQyxPOzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O087OztPO08sTzs7Ozs7d0Isa0IsTyw0QjtJLE87Ozs7SSxPOzs7O0k7SSxVO0ksTzs7OztJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08scUI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJLHdCO0c7O0ksWTs7SSxPOzs7O0k7OztPOzs2QixPOzs7TztPLE87OztPOzs7O1c7VyxPO1U7TyxPOztnQyxPO2U7Ozs7STs7NEIsTzs7Tzs7Tzs7OEIsTzs7TztlOzs7OztJLE87Ozs7STtJLE87OztJLDhCOzs7Ozs7OztXO1csTztVO087Ozs7VztXLE87VTtPLE87OztPO08sTzs7aUMsTzs7O087TyxPOzs7OztJOzs7Tzs7NkIsTzs7O087TyxPOzs7TztPO08sTzs7Ozs7UTtRO1EsTzs7O087TyxPO3NDLE87Ozs7O0ksTzs7OztJOzs7TyxzQixNO08sTzs7K0IsTzs7O087Ozs7VztXLE87VTtPO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7Ozs7OztPOzs7O1c7VyxPO1U7TztPLE87OztPO08sVTtPLE87OztPO08sTzs7Ozs7STs7O08sMEIsTTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO2U7Ozs7O0k7c0M7OztPOzs7TztPLE87O08seUIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87OzhCLE87O08sMkIsTTtPLE87O2dDLE87d0MsTzs7Ozs7STtJLFU7SSxPOzs7O0k7Syx1QixNO0ssTzs7O0ksTzs7OztJOztLLE87OztJLE87OztJOztLLE87OztJLE87Ozs7STs7NEIsTzs7MkI7OzZCOzs7TztPLE87OzZCLE87ZTs7OztJLHFCLE07SSxPOzs7O0k7SSxVO0k7SSxPOzs7O0k7SSxPOzs0QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztrQixTOztJLGdDLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7OztJOzs7OztLLE87Ozs7Ozs7SyxPO0ksb0I7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SyxPO0ssVztJO0c7O0ksYztJO0c7MEMsUzs7STtJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0k7Ozs7O3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7OztPOztRLE87USxzQjswQjs7O087O1EsTztRLHNCOzBCOzs7Ozt3Qzs7OztJOzs7SSxlO0k7Rzs7SSxjO0k7Rzs7STtLLGtCLE87SyxXOzs7SSxvQjtJLFc7OztJOztLOztNOztTO1U7VTtVLE87VSxTO1M7O0ssVzs7O0ksb0I7SSxXOzs7STs7SyxPO0ssTztJLG9CO0k7SyxZO0ssVztLO0ssTztLLGU7SztLLE87SSxvQjtJLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7SSxpQixPO0ksb0I7STtLLGU7SztLLE87SyxxQjtJO0c7O0ksd0I7STtHOztJOztLOzs7O00sTztNLE87Ozs7STtHOztJLEksVSxnQztJO0s7Ozt3QixXOzs7UyxzQjs7Szs7SSxvQjtJLEksWSx5Qzs7Ozs7Ozs7Ozt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7Ozs7YTthLGU7WTtVLFE7VSxPOzt5Qjs7O1M7Ozs7VSxPOzhCOzs7Uzs7O1UsTztVLHNCO3lCOzs7Uzs7VSxPO3lCOzs7NEM7OztTOztVLE87cUI7Ozs2Qzs7O1M7Ozs7VSxPOzBCOzs7OztJO0c7OztLOzt3QixXOztROzs7UyxPO1MsTztRLFc7O1EsZ0IsTztRLFc7Z0I7O0k7STtJLG9CO0k7SyxZO0ssVTtLOzs7Ozs7UTs7OztTLFE7Ozs0Qzs7O1E7Ozs7O1MsTztTLFU7Ozs7UTs7O1MsTztTLE87UyxzQjtTLE87d0I7OztROzs7O1MsTztTLE87d0I7OztROzs7UyxPO1MsTzt3Qjs7O1E7O1MsTzt3Qjs7O1E7Ozs7UyxPO2lDOzs7UTs7O1MsTzsyQjs7O1E7Ozs7OztZOzs7YTs7O1ksMkI7VztTLFc7UyxPOzs7OztZOzs7Ozs7O3lCOzs7UTs7Ozs7UyxPO3lCOzs7UTs7UyxPO3lCOzs7UTs7OztTLE87UyxPO1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7UyxPO3lCOzs7UTs7Ozs7OztTLE87UyxPOzsyQjs7Ozs7O3lCOzs7Ozs7Ozs2Qzs7O1E7OztTLE87UyxzQjsrQjs7O1E7Ozs7OztTLE87d0M7OztROzs7UyxPO3lCOzs7MEM7OzswQzs7Ozs7O3lCOzs7Ozt5Qjs7O1E7Ozs7OztTLE87UyxPO1MsTzs7O1k7Ozs7Ozs7OztROzs7UyxPO3lCOzs7Ozs7O0k7Rzs7SSxpQixPO0ksb0I7SSxrQjtJO0c7O0ksaUIsTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJLEksVSxnQzs7O29DOztPOzs7USxROzs7Ozs7OztpQjs7OztxQzs7c0M7O3NDOztzQzs7Tzs7USxPO3VCOzs7c0M7O3NDOztzQzs7OztzQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OztJO0c7O0ksd0I7Rzs7SSxZOztJLGtCOzs7SSxJLFUsZ0M7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1Esc0I7USxPO3VCOzs7d0M7Ozs7STtHOztJOzt3QixXOzt1QixXOzswQixXOzt5QixXO2U7Ozs7SSxnQyxPO0k7Rzs7STs7O0ssTTs7O0ksVztHOztJLDhCOzs7Tzs7Ozs7VztXLGM7VTtRLE87OztXO1csa0I7VTtRLE87Tzs7TyxrQyxNO08sVzs7TyxnQyxNO087O087Ozs7USxNO08sVzs7OztJLEksVSxnQzs7Ozs7cUM7O087OztRLE07Ozs7Tzs7OztRLE07USxNO3VCOzs7OztROzs7UyxNO1MsVTttQjs7UTs7UyxNO21COzs7Ozs7O3VCOztJO0c7O0ksYztJO0c7O0ksSSxTLGdDOzs7Tzs7OztRLE07aUM7OzsyQzs7O087Ozs7OztRLE07USxNO1Esb0I7USxNOzZCOzs7Tzs7O1EsTTtRLE07USxvQjtRLE07c0I7OztPOzs7OztRLFU7OztRLE07USxNO1Esb0I7Ozs7O1c7Ozs7Tzs7Ozs7O1EsTTtRLE07c0I7OztPOzs7USxNO3NCOztJO0c7O0ksSSxZLGdDOzs7Tzs7OztRLE07b0M7Ozs0Qzs7O087Ozs7USxNO2dDOzs7Tzs7O1EsTTt5Qjs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOzs7cUM7Ozs7Ozs7O3lDOzs7Ozs7Ozs7OEM7OztPOzs7O1EsTTsyQjs7OztJO0c7O0ksSSxXLGdDOzs7Ozs7Uzs7OztVLE07aUM7OztTOztVLE07MEI7OztTOzs7O1UsTTtxQzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTs7K0I7Ozs7OzswQjs7O1M7Ozs7VSxNOztnQjs7Ozs7OzhCOzs7MEM7Ozs7O0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7STs7Szs7OztNLE07OEI7O3NDO0k7Rzs7STs7Ozs7MkI7O3dDO0k7Rzs7STs7SyxXOzs7SSxnQjs7O0k7Ozs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7USxNO3NCOzs7cUM7OztJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7Rzs7STtLLFM7SyxVO0k7Rzt3QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RyxJLHNCOztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLLEk7d0IsaUM7SztNLEs7Ozs7O0s7OztPOztROztXOzs7Ozs7Ozs7YyxHO2U7ZTs7Yzs7Ozs7Ozs7YztjO2M7OztjLEc7ZTtlOztjOztlO2U7ZTs7OztlO2U7ZTtlO2U7Ozs7ZTtlO2U7ZTtlOztjO2M7c0I7O1csRztZO1k7O1c7Vzs7Ozs7Yzs7Ozs7WTs7OztnQixPO2U7WTtZO1ksUTtZO1k7WTs7O087Tzs7OztNLEk7O0k7STs7Szs7O0s7OztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLG1DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixXOzsyQixXOzt5QixXOzs7TyxxQjs7MEIsVzs7MkIsVzs7MkIsVzs7MkIsVzs7RztHOzBCLE8sMkI7O0ksUzs7SztLLEc7OztNLEs7TyxNO00sWTtNO087TyxHO1EsSTs7Ozs7Ozs7SztJO0k7SztLLDBCLE8sMkI7SSxPO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7RztHLEksc0I7eUIsZ0Q7O0k7O0c7bUMsc0I7K0IsNkI7O0k7SyxNO0s7O0c7OztJOzs7OztTOzs7O2lCOzs7UztVO1k7VSxNO1UsTTtVLE07OztlOztVLE07VSxNO1UsTTs7VSxNOzs7Ozs7Ozs7d0I7Ozs7O3dCOzs7Ozt3Qjs7Ozs7d0I7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UyxPO1E7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Szs7Ozs7Ozs7Ozs7TSxVO007OztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksbUIsTyw4QjtHOztJO29CLGU7SSxPO0c7OztLO0s7TSxvQjs7O0s7STtJLE87Rzs7SSxVO0ksTztHOztJO0k7SztLLE87STs7SztLO0ssTztJOztLOzs7Ozs7Uzs7VSxZO1Usb0I7UztVO1csTztXOzs7Ozs7Ozs7Uzs7Ozs7VTs7OztVOzs7Ozs7NEI7Ozs7Uzs7O1U7VSxNO1M7Ozs7TTs7O0s7SyxPO0k7O0ssYztLO0ssTztJOztLLGtCOzs7Ozs7OztZO1c7UTtTOzJDLHFCOzs7O1E7OztROztTO1Msb0I7UTs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJO29DOzs7STtJOzs7TztPLE87O087O1Esb0I7TztPLE87ZTs7Rzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1U7Vzs7STtHOztJOzswQixXOzt1Qzs7TyxrQztPOztHOzs7SSxnQjs7O0ksWTs7Ozs7OztPOzs7UTs7O087Ozs7O0ssWTtLO0s7STtJO0k7Rzs7STs7eUIsVzs7eUI7O3VEOzt5Qjs7MkIsVzs7MkIsVzs7O08sVzs7Rzs7STtJO0c7O0ksVztJLE87Rzs7SSxtQixPO0ksTztHOztJO0ssTTtLLFE7OztHOztJO0ssTTtLLFE7SyxPO0ksTzs7Rzs7SSxJLE0sbUM7Ozs7OzttQjs7O087OztRLE87NkI7OztxQzs7Tzs7O1EsTzsrQjs7O3dDOzs7c0M7O3FDOztPOztRLE87bUI7OztzQzs7cUM7Ozs7OztXO1csTztVO29COzs7Ozs7O1c7VyxPO1U7b0I7Ozt3Qzs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7O0ksVzs7O0k7SyxNO0ssUTtLOztLLE87SyxPO0s7SyxXOzs7Szs7OztNLE87TSxPO0ssVztJO0ksSSxXO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLOztJLG9CO0ksZTtJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7OztjO2MsVzthO1csTzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2MsTzthO1k7cUI7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7Rzs7STtLLE07SyxRO0ssTztLLE87SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7OztROzs7O1MsTztTLE87OEI7Ozs7Ozs7OztXOzs7WSxPO3FDOzs7OztVOztXLE87c0I7O1UsMEM7VTtXO1ksTztZLE87VyxLO1csSTs7VTtXLE87VyxPO1c7YTtXLE87Ozs7O2M7Ozs7Ozs7UTs7Ozs7O1k7WSxXOztZLHNCO1c7UyxPO29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzRCOzs7UTs7O1M7OztZOytCOztZLG9CO1c7UyxTO1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87O3dCOzs7O1E7Ozs7bUI7OztXOztZLE87bUI7OztXOztZLE87bUI7O3dCOzs7OztROzs7UyxPOzs7O1E7OztTLE87Ozs7Ozs7O1k7OzthLE87WTtXO3FCOzs7UTs7OztTLE87NkI7OztROzs7UyxPO3FCOzs7MEM7OzsyQzs7O3VDOzs7O3FCOzs7UTs7OztTO1M7a0M7OztTLFE7UyxPO1MsUztTLFM7Ozs7UTs7UztTLE87Ozs7O3FCOzs7UTs7O1MsTztxQjs7STtLLE87O0k7Szs7OztNLFE7TSxVO0s7OzhDOzs7UTs7O1MsTztTLE87MkI7OztROztTLE87MkI7Ozs7O3FCOztLLE87O0ksTztHOztJOztLLFc7SyxXO0s7STtHOztJOztLO0ssYztJO0ksVztJO0c7O0k7SyxNO0ssUTtLOztLLE87SyxPO0ksTzs7Rzs7SSxrQixPO0ksTztHOztJLEksTSxtQzs7O29DOztPOzs7USxPOzZCOzs7Tzs7USxPO21COzs7d0M7OztzQzs7cUM7O3FDOztPOztRLE87bUI7OztzQzs7d0M7OztzQzs7d0M7OztPOztRLE87b0I7OztPOztRLE87b0I7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0ksTztHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0k7SyxNO0ssUTtLLE87Szs7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7O0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTs7SSxpQjs7O0k7SyxNO0ssUTtLOzs7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1EsTzttQjs7O3dDOzs7O0ksTztHOzs7STs7TyxvQixPO087O08sb0I7Tzs7TyxtQixRO087O08sc0IsTztPOztPLHNCO087O08scUIsUTtPOzs7O0k7SyxNO0ssUTtLOzs7SyxPOzs7Ozs7O3FDOztPOzs7USxNOzs7O087OztRLE07bUI7Ozs7O1EsTTtPOztRLE07bUI7OzhDOztJLE87Rzs7STtLLE07SyxRO0s7OztPLE07O3dDOzs7Tzs7OztRLE07NkI7OztPOzs7Ozs7VztXLFc7O1csc0I7VTtRLE07bUI7OztPOzs7O1EsTTtRLE07NkI7Ozs7Ozs7Uzs7O1UsTTtVLE07Ozs7OztTLE07UTs7UyxNO21COzs7OztPOzs7USxNO21COztJLE87Rzs7STtLLE07SyxRO0s7OztPOzs7USxNO1EsTTs7OztzQzs7Tzs7OztRLE07MEI7OztPOzs7USxNO21COztJLE87Rzs7STs7SyxNO0ssTTtJLFc7Rzs7STtLLE07SyxRO0s7OztxQzs7Tzs7Ozs7O1EsTTt1Qjs7O087Ozs7OztRLE07O2tCOzs7Tzs7OztRLE07dUI7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7Ozs7OztROzs7O1MsTTsyQjs7O1E7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7O1E7OztTLE07b0I7OztROzs7UyxNO1MsTTs7Ozs7OztvQjs7O1E7Ozs7UyxNO29COzs7UTs7OzJCLE8sa0M7UyxTOzRCOzs7d0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7O0ssa0M7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7OzBCLE8sa0M7USxNO3dCOzs7Ozs7O3FDOzs7Ozt3Qzs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUM7Ozs7O087OztRLE07dUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7OztJLE87Rzs2QixTO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7a0I7O3FCLE87O007TTs7OztJLE87Rzs7cUIsTyx5QztJLDBCO0k7O087OztROztXOztROztXOztPLE87OztPLE87O087Ozs7UTs7TyxPOzs7TyxPOztHOzs7SSxPOzs7STs7OztLLE87SSxPOzs7O0ksVztJLFM7STtLLE87SyxPO0ssTztJLE87Rzs7STs7OztRLGdCO29CLFc7Ozs7USxXOztROzs7Uzs7Ozs7USxrQjs7UyxXOzs7Rzs7eUIscUI7SSxPO0c7OztJO29CO0ksb0IsUztJO0c7Ozs7Ozs7Ozs7VTtXLE87Vzt3Qjs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7OztTOzs7OztZOzthOzs7NEI7O1k7O1k7Ozs7Ozs7O1k7OzthOzs7Ozs7YSxVOzs7Ozs7Ozs7YTtjLFc7OztjLGM7OztZOzs7Ozs7Ozs7Ozs7Ozs7O3FCO2U7Ozs7Ozs7Ozs7O29CO2M7Ozs7Ozs7O2U7O2dCOzs7Z0I7OztnQjs7OztlOzs7Ozs7YTs7WTthOzs7YTs7O2E7Ozs7WTs7Ozs7Ozs7VSxHLGdDO1UsVztVOzs7VztZLE87WSxPO1ksTzttQjtVOztTLEksVzs7Ozs7OztZOzs7OztTO3NEO1M7O1U7Ozs7Ozs7Ozs7Ozt3Qjs7Uzs7O087O1EsTztRLE87UTs7MkI7TztRO1E7Tzs7O0s7TTtNO007Szs7OztJOztNOzs7OztPLFM7Tzs7Ozs7Ozs7O1E7O1MsVTs7aUI7Ozs7aUI7OztPOztRLFE7USxVOztnQjs7O007OztzQjtJOzs7O0k7O0ssNEM7O0ksYTtJO0c7O0k7SyxPO0ssVTs7Szs7O007O0s7SztJOzttQjs7Ozs7Ozs7O0s7Ozs7UTs7O007Tzs7O08sTTs7Ozs7Ozs7Szs7O2E7TTtLO0k7STtLLFU7Ozs7Ozs7OztLOzs7TTs7Ozs7OztPLEc7Ozs7O1k7Ozs7Ozs7Ozs7O0ssSSxVOzs7Ozs7Ozs7OztLOzt3Qjs7d0I7O3dCOzs7O0s7TTs7Ozs7STtLLE87Szs7Ozs7Ozs7Ozs7Szs7Ozs7OztrQjs7O007Ozs7Ozs7Ozs7OztpQixJOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztpQyxxQjtVLE87VTs7Ozs7O1M7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTs7O1U7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTtVLE87VTtZOzs7Ozs7O1M7VTtVO1k7Ozs7Ozs7Ozs7Uzs7Ozs7O1UsTztVLGU7VSxPO1M7Ozs7Ozs7O1M7UywwQjtTOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxZO3lCOzs7O1U7O1c7YTtXOzs7Ozs7Ozs7YSxNOzs7Z0MsdUI7c0I7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7OztTOzs7O1UsTztTOzs7Ozs7OztTO1UsVTtVOzs7Ozs7Ozs7Ozs7OztVOztXOzs7O1M7Ozs7UztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsVTtVLFc7OztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsUTtVLFM7O1U7VTtZOzs7Ozs7OztLLE07OztJO0s7O007Ozs7STs7OztJO0s7Ozs7Ozs7Ozs7Ozs7SyxPO0ssTzs7O0k7WTs7Ozs7OztJO0k7OztLO007O0k7Ozs7OztPOzs7Szs7Ozs7Ozs7O0s7Ozs7MEM7O0k7Rzs7STtJOzs7Ozs7OztLLHNCO0s7O0c7RztJO0k7O0k7SztLOzs7d0I7SSxPLFc7Rzs7STt1Qjs7STtHOzs7Ozs7Ozs7OztJOzs7O0s7aUIsTTs7Szs7O007TSxNO0s7O0k7SyxRO0ssUztLO0ksTTs7Rzs7OztJOztLOzs7Uzs7Ozs7Ozt5QztJLHdCO0ksTTtHO0csSTs7SSxZOztJO0c7O0k7O087O087O087OztRO1E7OztTOzs7VSxPO1UsTztTLE87OzswQjtPO2U7O0c7O0ksOEIseUI7O0c7O0k7STtLOztNOzs7TTs7TyxPOzs7Ozs7O2tCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxZO007bUI7Tzs7USxRO087Ozs7Tzs7USxRO1EsUTtPOztNLFk7TTs7Szs7STtLLFE7SyxNO0k7Rzs7O0k7SztNOztLO0k7STs7SyxTO0ssUztLO0s7SSxPOztHLEk7O0k7O087O087O087OztRO1E7cUMsWTs7OztTOzs7VSxNO1UsTTtTLEcsd0M7O2tCOztPO2U7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO007O087OztVO1csUTtXLFE7VSxPO1M7TyxRO08sUTtNOztzQjtLOztNLFE7TSxNO007TSxNO00sTTtLOztJO0c7O0k7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Szs7STs7SyxTO0ssVztLO0s7SSxPO0c7O0k7OztLOzs7SSxNO0c7O0k7NkM7O0ksTTtHOztJOzs7NkM7O0ksTTtHOztJOzt1Qjs7O0ssTTs7SSxNOztHOzs7STs7Ozs7TTs7O0s7TSxNOzs7Z0Q7O0ksTTtHOztJOztLLE07OztJO0c7O0k7dUI7O0ksTTs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztNOzs7Tzs7OztxQjs7O1EsTTtPOzs7USxtQjs7Ozs7O0ksTTtHOztJLFksTzs7Ozs7TyxPOzs7O08sTzs7Ozs7Ozs7O08sb0M7TyxPOzs7TyxzQztPLE87Ozs7O0k7SyxPO0k7OztJOzs7O1EsZ0M7USxPOzs7USxvQztRLE87OztJLE87OztJLFk7O2dCOztJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxRO21CO0c7O0ksOEI7OztPOztRO1Esc0I7O087Ozs7OEI7OzttQixlOzs7Ozs7OztPOzs7UTtRLHNCO1E7TzsrQjs7OztlLE07O0c7Ozs7bUI7OztNOzs7TztPLHNCO087TTs4Qjs7Ozs7SyxvQjs7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7STtJLE87Rzs7STs7O0ssTztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7OztTLGUsVTt1QixNOzs7O00sTTs7Ozs7NEIsTzs7OztHOztJO0ksTzs7YztHOzs7STtJOzs7SSxXO0ksTztHOztJLE87RztpQyxtQjs7STs7Ozs7Szs7STtHOztJO2dCOztJO0c7O0kscUMsTzs7SSxPOzs7STtnQixPOztJLCtDO0k7Ozs7SztJLE87Rzs7STtnQixPOztJO0c7O0k7Z0IsTzs7O0s7OztNO00sTztLLE87Ozs7OztNLE87O0k7Rzs7STs7Szs7TTs7TTtLLE87O1ksTztJO0ksaUQ7STs7OztLO0ksTztHOztJOzs7SyxxQixPLGdDOztZLE87STtJO0c7O0k7d0M7STtHOzs7Szs7O00sTztNLE07TTtNLE87SyxPOzs7Ozs7Ozs7d0I7STtLLE87SyxTLFc7SSxPO0c7OztLOztROzs7OztLO0k7STtHOztJO0ssSSxTO0s7Ozs7O2M7Ozs7Ozs7Szs7bUI7O21COzs7SztJOztLO0s7Ozs7Ozs7OztROzs7O1M7Ozs7UTs7OztTOzs7SztJO0ksTztHOztJO0ksTztHOztJO0ssTztJLE87Rzs7SSwrQzt5QixtRDtJO0ssTzs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7Ozs7d0IsTyw0QztNLE87SzthOzs7OztpQjs7O007O087K0IseUM7TSxPOztLOztNOzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7SSxXOzBCLE8sc0I7SSxXO0ksTztHOztJOztPOztRO1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7UTs7UTtVOzs7Ozs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7USxPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Tzs7Ozs7USxLO1EsSztRO1EsTztPLE87Ozs7Ozs7Ozs7O0c7O0k7SyxROzs7O0k7Szs7SSx3QixPO0ksTzs7Rzs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7SyxPOztLLE87SSxPOzs7O0k7Rzs7STtLLE87O0ksVztHOzs7STs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7SztLO0k7SyxPOzs7O0k7O0c7OztJOztPLHFCO21COztPLFc7OztPOzs7OztROzs7TztRLE87Ozs7Tzs7O087O1EsVTtPOzs7TztRLE87Ozs7Tzs7Ozs7STs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87Ozs7Szs7O007TTtPLE87TyxPO087TSxPOzs7TSxNOztLOzs7UTs7UTs7Uzs7Ozs7Yzs7O2UsTzs7ZSxPO2MsTzs7OztTO1M7Ozs7O1ksTTtXLHNCO1c7Ozs7MEM7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7O1ksZTtXOzs7Ozs7OztXOzs7Ozs7Ozs7O1E7OztJO0ksTztHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO1Esc0I7TyxPOztHOztJOztPLHNCO08sTzs7NkI7O08sZ0M7Ozs7OztVOztXOzBCOzs7OzBDOztPO08sTzs7O2dEO087O1E7UTtRO1Esc0I7TyxPOztHOzs7STs7Szs7UTs7UyxROzs7Ozs7Ozs7Ozs7Vzs7WTtZO1k7Ozs7cUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTO29COzs7USxtQjs7UyxNOzs7b0I7O0ssYTtrQixzQjs7NEIsTyxzQjtNLE87SztLO0k7SSxPOzs7O0s7TTs7TztPLFc7TSxXOztxQzs7Ozs7Ozs7TTtPLGM7O08sTztNOzs7NkI7TTs7Ozs7O1UsaUI7VSxPOzs7O1MsdUM7Ozs7a0I7UztVO1Usc0I7VTtVLE87UyxPOzs7O007TyxlOztPO007TTtPO087TztPLE07TSxPOzs7Ozs7OztLO0ssVztJO0ksTztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztRLE07Tzs7OztLO0ssRztNLE07SyxPO0k7STtLLE07SyxPOztLOzs7TTs7O00sTztNOztTOzs7Ozs7OztLLE87Ozs7O0k7SSxnQjs7RztJO0k7STtJOztJO0k7OztHOztJO0ksVztHOzs7STs7Ozs7SSxROztJLEc7SyxJLEk7Ozs7Ozs7Ozs7SyxTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxXO0s7Ozs7O0ssZTtLLE07O0c7O0k7SyxPO0sscUI7O0c7OztLLG1COztNO007OztNLE07O0s7O08sZ0I7TyxNOztNO00sTTs7Ozs7TTs7TztNOztJO0ksTztHOztJOztJO0c7O3dCLHVDO0ksTztHOzt5QixrQixPLHlCO0ksVzs7Szs7O00sSTtNLFE7OztTO087Tzs7O0ssTTtJO0ksTyxXO0c7O0k7O0ssWTs7O00sTzs7SyxNO0k7SSxXO0k7Rzs7eUIsMEM7SSxPO0c7Ozs7SztJO0k7Ozs7OztPLE07OztLOzs7Ozs7USxnQjtRLE07O087UTtTLE87UyxPOzs7Ozs7UTtTO1UsTztVLE87Ozs7Ozs7Ozs7VTs7Ozs7O087O087Ozs7UTtRO1E7UTtVO2E7O1EsTztPOzs7TyxPO1EsTTtPO1Esc0I7USxPOzhCLGU7USxXO1EsTztPOztPOzs7USxVOzs7OztROzs7OztrQyxTO21COzs7Ozs7TztVO1EsVztRLE07OztPO1Esc0I7USxPO1EsUztROzs7OztnQjs7OztPO1EsTzs7O1c7VztZLFc7WTs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxPO1EsUztPOztPOzs7USxZOzs7VztZLFc7WSxLO2EsSTs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7Ozs7Ozs7O1k7YTs7YztjLFE7Ozs7OzthO2MsSTtjLFU7Ozs7OztrQixNOzs7OztpQixxQixVOzs7Ozs7O2tCLEc7bUIsTTs7O2tCO21CLGM7Ozs7OztvQixNOzs7bUI7Ozs7OzthLE07OztZOzs7OztnQjtzQztlO2E7ZTthO1k7OztXOztRLGdCO1E7a0MsMEI7USxXO1E7OzthOzs7VztXLE87VTtRLFE7TyxtQzs7Ozs7UTtTLFU7Ozs7Ozs7Uzs7d0IsTTtVLHVCLFU7Ozs7YTs7YyxTOzs7Ozs7Ozs7UyxHO1U7O1U7Ozs7O1EsTTs7Ozs7UTs7OzsyQzs7Ozs7OzJCOzsrQjs7UztVLFU7OztTOzs7Ozs7UztTLE07Ozs7VTtRLFc7USxNOzs7TztRLHNCO1EsUztRLFc7USxPOzs7VztXLEksVyx3Qzs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxVO1EsTztRLE87USxVOzs7OztxQzs7Ozs7Vzs7WSxPOzs7ZTs7O2dCLFE7Ozs7MkM7Ozs7O2U7YztZLFc7WTtZO2M7O21COzs7O1E7O08sTTs7O087O1M7VSxPOzs7Ozs7UztVLE87Z0I7O1E7USxJOzs7OztTLHNCLFE7UyxNOzs7Ozs7OzsyQjtROztTOztRO1EsSTs7OztTLGtCLFE7UyxNOzs7O1M7Uzs7UTtTLE07UyxLO1MsVTs7Ozs7O2E7Ozs7OzthOzs7Ozs7O087O087Ozs7UTtROztXO1k7WTtrQjtXLE87VTtRLFU7OztXLFE7VztZO2EsUTs7O1ksRzthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7O1csdUIsMEI7Ozs7YTs7YztjO2MsVTs7Ozs7Ozs7Ozs7O2E7MkI7O2E7YyxPO2MsVTs7Ozs7O2tCLE07Ozs7OztpQixHO2tCO21CLEs7OztzQjs7O3VCOzt3QixLO3lCLFk7O29EOzs7eUIsTTs7Ozs7O3NCO3FCO2tCOzs7Ozs7YSxNOzs7OztZOzs7Z0Isb0I7Z0IsTztlO2EsSzs7O2E7O2MsSztlO3FDLGM7Z0IsUTtvQjs7Ozs7eUI7OztjLE07OztrQzs7c0I7O1k7OztXO1U7USxVO1E7cUMsaUI7USxPO1EsVztPOzs7OztZLGU7O2EsTTs7WTtXO1E7O087Ozs7VyxPOztVO1E7UTtVO2E7O1E7USxPO087O087OzsyQixZO1EsUztPO08sSSx5QztvQjtPLEksd0M7O087TztPO1E7MkIsTyxnQztRLFk7USxRO1E7TztPOztPOzs7O1E7OztRO1EsUTtPO087OztXO1c7VTtRLE87USxTOzs7VztXO1U7USxvQjtRLFE7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7OztTLHdCLFE7OztVLGM7O1M7UTtNLFc7TTs7UztLO0ssTzs7SSxPO0c7O0k7SSxPO0c7O0c7STs7O0ksSSxZOztLOzs7TTtNLE87SyxJLG1DLEk7aUI7Z0I7Szs7OztvQjs7Ozs7Ozs7eUI7TTtPLE07d0M7O007OztPOzs7STtJOztJO0s7O007TSxJLFcsb0M7Ozs7O08sTTs7SztLLE8sd0M7Rzs7STs7O0ksMEI7STtJO0k7Rzs7STs7O0k7SSxJLGlDOzs7SztNLE87TTs7OzthOzs7O0k7STtJO0k7STs7O0ssWTs7O1M7TztPOzs7SztJO0ksWTtJO0k7Ozs7SyxPO0ssTztJO0c7O0k7O0k7STtJO0k7STtJO0ksZ0I7Rzs7STs7OztLO0s7eUIsWTtNLFM7TTtNO0s7SztLO0s7O0k7STtJO0k7STtHOztJO0ssTzs7O087O1E7O1csTzs7eUI7VTtRO1U7OEIsTyxrQztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOztRLG9CLE8seUM7NEIsTyx5QztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7eUIsTzs7O08sTzs7Ozs7OztXO1c7WSxNOztZLE87VyxPOzs7Ozs7Ozs7O1U7TyxPOzs7TztPLFk7Ozs7Uzs7VTs0QixXLHFDO1MsTzs7O087OztPLE87Ozs7Ozs7OztPLE87OztPO08sRztRO2U7UTs7UTtPLE87OztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOzs7Ozs7VyxZLE87O1csTztVO08sTzs7O08sTzs7OztJO0s7Ozs7TSx5QjtLLFc7O21DOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7cUIsTzs7dUIsTzs7cUIsTzs7cUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJOztLOzs7TTs7SztNLE87Szs7USxPOztRLE87O1EsTzs7Ozs7SyxPOzs7TyxvQixPO08sTzs7O08sTzs7O08sb0I7TyxPOztPOztRLDRCO08sTzs7Ozs7O1EsTzs7O087Ozs7UTs7Ozs7UyxPOzs7Ozs7Ozs7OztRO3FDO1EsTzs7OztROzRCLG1DO1MsTztTLDRCO1MsTztRLE87OztPO29DO08sTzs7O3FCLE87O08sTzs7Tzs7OzBCLCtDO1EsZTtPLG1CLE87Ozs7OztXLGU7O3FCOztVO08sTzs7Ozs7Ozs7Tzs7USw0QjtPLE87OztPLE87OztPLE87OztPLE87ZSxPOztHOztJOzs7Ozs7O087USxPOzs7O0k7Rzs7STs7Ozs7OztPO1EsTzs7Ozs7STtHOztJOzs7Ozs7Ozs7O0ssTzs7STtHOztJOzs7SyxPOzs7STtHOztJLFk7O21COztJLHVCO0ksTzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7SSxVO0ksTztHOzs7SztLO0ssTztJO0ksTztHOztJOztLO0ssTztJO0k7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7O3NCLGlEOzt3QixhO0ksTztHOztJO0ssTTs7STtHOzs7SSxXOztHO0k7STtJO0k7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtJOzs7OztPOztPLHdCOzs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7OEIsb0IsVztRLE87OEIsb0IsVztRLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxNO1csUTttRjtVLE07Uzs7Ozs7Ozs7Ozs7STtHOztJOzs7O3lCOztPOzt5QixPOzsrQjtpQzs7Rzs7c0IseUM7STs7Ozs7O1E7O1M7Ozs7Ozs7O1E7Ozs7WTtZO1c7UyxNOzs7O1E7Ozs7Uzs7Ozs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7Rzs7Ozs7O0ksTTtJLHlCOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7O1M7Z0Q7UztRO00sWTs7Ozs0Qjs7O0ksb0I7SSxPO0c7O3lCLHdCLFk7SSxPO0c7O0ksVztpQjtHOztJOzs7Szs7STtHOztJOzs7OztRLE87Ozs7OztRLGUsTztRLE8sMkI7Ozs7SSxPO0c7O0k7STs7Ozs7O1E7UztTOzs7OztRO1M7Uzs7Ozs7UTtTO1M7Ozs7Ozs7TztRO1E7Ozs7Ozs7O08sVztPLFc7O007OztPO087Ozs7OztHOzs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0IsTztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7OztrQixPO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7O0s7OztPLGtCLE87O087OzttQjtLO0k7MEI7O0s7Szs7O1E7Ozs7O1M7USxXOzs7OztzQjtNOztJO0k7OzBCLDJDO0c7Ozs7STs7STtXOztjO0c7O0k7SztLLE87SyxRO3lFO0ksTTtHOztJOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07Uzs7O1k7WTthOzs7aUI7O2dCO2MsTTs7Ozs7Ozs7WTtXO1EsTzs7STtHOztJLFksa0M7Ozs7Ozs7a0I7TSw0Qzs7Ozs7OztVOztXOzs7K0IsK0I7YyxPO2E7VyxTO1c7Ozs7OztrQjs7TTs7O0k7Rzs7SSxTO1ksTztJOzs7O0s7OztJO0c7O0k7Ozs7UTs7Uzs7O1E7O1E7Ozs7Uzs7O1E7Ozs7O1UsTTs7Ozs7UTs7UTs7O1M7Ozs7Ozs7WTtZOztzQjs7WTtXO1E7OzttQjs7Ozs7O1E7O1M7OztROztnQixPOztROztnQixPOztJO0c7MkIsNEI7eUMsNEI7OztLO0s7TTtPLE87TyxPOztPOzs7O1E7Ozs7O00sTzs7ZTs7Ozs7O0k7STtHOztJLFk7OztLLE07O0ksOEIsMEI7STtHOzs7SztLO29COzs7Ozs7OztNO087TztlOzs7Ozs7STtJO0c7OztLLFU7SztJOztLLFk7O0s7Ozs7OztNO007SztLLE87STs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtPLFk7TztTOzs7VTtVLGtCO1M7TyxVLFc7TTs7Szs7Ozs7OztNO0s7TTtPOzs7OztLO007Ozs7RztHOztJLG1CO0ksdUM7O0s7TSxNOztvQixXOztLO0k7O2dCLFc7O0k7RztHLG1COztJLFU7SSx1Qjs7Ozs7Ozt1RDs7UyxPOzs7eUI7OztTOzs7O2Esa0I7aUY7YSxNO1k7VSxTO1UsTTtTLGdCO1U7VyxPOzs7Yzs7O2UsUTs7OztlLE87O2M7YTtVLE87O1MsVztTLFc7UztVLE87OzthOzs7MkI7a0M7WTtTLE87Ozs7TTs7O00sTTs7STtHOztJOzs7Ozs7SyxPO0k7Z0I7Ozs7OztHOztJO0ssTTs7bUI7SSxtQjtJO0c7O0ksWTs7O0s7TTtPLFU7TyxVOzs7OztRO1M7O3lDOzttQjs7O007Ozs7O08sTzs7OztJLE87Rzs7STtHOzs7STs7SztLLGlCOztLLFc7STtJLGE7eUIsOEI7STtLLFE7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7OztTOzJFO1MsTztRO00sZTtNO00sUztLLGdCLE07SywwQjtLLGtCOztJO0c7O3lCLGtCLE8sdUI7SSxJLE07STtLLEs7O00sZ0I7O0ssSSxNOztHOztJO0k7Ozs7Ozs7Ozs7Ozs7VSxvQjs7Ozs7OztrQyxrQixTO1UscUI7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTs7OztXLGtDO3NCO1c7Vyx3QjtVO08sTzs7Ozs7OztPOzs7O1E7TyxTO08sSTs7Ozs7USxvQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTs7Ozs7O0c7O0ksVTthO0k7OztLLE87SyxPOztLO0ssd0M7SztNOzs7UzsyQixrQjtTLE87UTtNOzs7Ozs7Ozs7VTtVLHFCO1U7VztXOzBDO1csTTtVLG9CO1UsTztTO1MsVztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksb0I7SSxPO0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNO087O1U7Ozs7WTs7O1U7UztPOzs7O007Ozs7TztNLFM7TSxJOzs7TTtPO08sVTs7O087TyxPO087Ozs7Rzs7STtLLFc7SyxPOzs7ZTtlO0k7OztLLE87O0s7TTs7Tzs0QixxQjtNLE87O0s7O00sVztNLE87SztLLE87STtJLE8sVztHOztJO0ksd0M7STtLO0s7OztLOztrQyx1QjtNLE87TSxPO00sTzs7O1M7Ozs7O1UsdUI7VTtXO1c7NEI7VyxNO1csc0I7VSxPOztTOzs7O1c7WSxNO1csdUI7OzthLE07Ozs7O1k7YTtvQjs7Ozs7OztVLFc7O1M7Uzs7O1csdUI7Ozs7OztnQjtpQjs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7O2tCO3lDO21CO3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7O2tCOzs7c0Isa0I7Ozs0RDs7c0IsTTs7cUI7bUIsWTttQixPOzs7Ozs7Ozt5QztrQjs7Ozs7OztvQjs7cUI7O3VCLE07c0IsUztzQixLO3VCLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO3lDO21COzs7c0I7c0I7a0M7cUI7Ozs7d0I7Ozs7MEIsTzs7O3dCLE07O3VCOzs7Ozs7OztrQjtzQyxjO21COztpQyxlLDRCOzs7O3dCOzs7OzBCLE87Ozt3QixNOzt1Qjs7Ozs7Ozs7Ozs7c0MsbUI7Ozs7d0I7OzhEOzt3QixNOzt1Qjs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7ZTs7Ozs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsTzs7O21CO21CO2tCO2dCLE07Z0IsTztnQjs7O21CO21CLEcsd0M7bUIsWTtpRDs7O29COzs7bUI7a0I7Z0IsVTs7Ozs7OztvQjttQjt1Qjs7O2UsRzs7OztnQjtpQixLO2lCO2tCLFE7Ozs7Ozs7ZTs7O21CLGtCO3VGO21CLE07O2tCO2dCLGM7O2U7Z0IsSzs7OztxQzs7O2dCLEk7Ozs7Ozs7Ozs7OzZCLE87Ozs2QixzQjtTLE87UTtLLE8sVzs7STtLO0ssTzt1QixzQjtJLE87Rzs7STs7SywwQztLLE07STtJLE8sVztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VyxZO1c7OztZO1k7WTtXO1U7Ozs7TTtPOztPO087OztRO1MsTzs7Ozs7O1EseUM7OztTLDJCLE07O2M7VTtXLFE7Ozs7OztXOzs7Yzs7OztlLFE7Ozs7MEI7YzthO1csVTs7O1c7Vzs7Vzs7eUIsMEI7WSxXO1ksTztXOzs7Ozs7OztPOzs7Ozs7Ozt5QixxQjs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7Rzs7SSxPO0c7O0ksWTtJLHFDOztLLE07O0k7SztJO0k7O0c7MkIsd0M7OztLLFk7Szs7O007O00sTztLLGU7OztHOztJO0k7Ozs7TztPO2lCOzs7O00sSSxVOztPLFc7O1EsTTtPOzs7MkIsaUI7USxJOzhCLGlCO1EsTztlOzs7OzsrQixTO2U7Ozs7VSxpQzs7Ozs7Vzs7Ozs7Ozs7O1ksTTs7Vzs7O1k7WTtZO1k7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7Ozs7MEI7Ozs7Ozs7OztjLFc7O3lCOzs7WTs7Vzs7VSxNO1M7TSxPOztLOzs7TSxPO00sTzs7Ozs7VTs7VyxNO1U7O1csTztXLE87MkQ7VTtTO00sRztPO1E7USxNOzs7O087UTtROzs7Ozs7Ozs7UTtTO1M7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7aUIsTztnQixXOzs7Ozs7Ozs7Ozs7O2UsTzs7OztVOzs7Ozs7OztjOztlOzs7Yzs7Ozs7Ozs7OztjOztlLE87ZSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0c7O0k7STs7TTs7Ozs7TztNLFc7Ozs7Szs7Rzs7Ozs7b0I7Ozs7O3FCLG9CLE8sc0I7TSxHOzs7TyxJOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsSztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEcsNkI7Ozs7Ozs7Ozs7Ozs7OztnQjs7OztvQixTOzZCOzs7Ozs7Ozs7Ozs7O3FCOztxQjtvQjtvQjttQjtpQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0IscUIsTzttQjtnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0Isb0I7Z0I7Ozs7Ozs7OztROzs7Ozs7UTtTLE87O1E7O087Ozs7TztRLE87O087OztLLE07O0c7O0k7SztLO007Ozs7OztPOzs7Ozs7OztLOzs7OztLLGtCLE87O0s7O0c7c0I7O0k7Szs7Ozs7TTtLOztJO0c7O3FCLDZCO0ksZ0I7STtHOztJO0ssWTs7SztJOztLOzs7TSxROzs7TTtLO0k7STtLLFE7OztJO0k7Rzs7STtJO21COzs7O007Ozs7Rzs7STtJO21COzs7O007Ozs7Rzt3QixPLHlDO0c7O0k7O0k7SyxPO0ssTztJLE87Rzs7STtLLFU7SyxTOztLO0s7Ozs7Ozs7Vzs7Ozs7NEIsaUI7OztVLGlCOztVOzs7O1c7VztVO1UsWTs7Ozs7Ozs7OztVOztVOzs7VyxRO1U7O1U7Ozs7YyxrQztjO2M7YyxXO2E7VyxTO1U7OztVLGlCOzs4Qjs7VSxrQztVOztNOztJO0k7STtHOztJO0ssSztLLFE7Ozs7Ozs7Ozs7O21CLG1COzs7Ozs7O1MsSSxVOzs7Ozs7Ozs7O1c7Ozs7ZSxXO2M7WSxTOzs7OztVLE87bUMsYTtXLEs7O1U7VztXLHNCO2tCOzs7Ozs7OztlOztpRDs7SztNOzs7O0s7O0k7Szs7OztJO0c7O0ksWTs7SSxPOzs7STtJOzs7Ozs7Ozs7Ozs7VTs7VztXLE87VTs7O1csVztXOzs7WTthLE87YSxlOztVO1UsTzs7Ozs7Ozs7O2M7YzthO1UsTzs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7SSxXO0k7Ozs7eUIsNkI7YTtJLFc7OztpQjtLOzs7Ozs7TTtLO007TyxPO087O1c7Ozs7O29CLFc7TztPOzRCOzs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTOzs7YSwwQzthLE07WTtVLFE7VTtVOzs7O1U7OztVO2Msa0U7Ozs7Ozs7O2dCOzs7Ozs0QixPLGtDO1E7Ozs7Ozs7O00sTTs7O00sSTs7OztHOzZCLDBCOztJLGM7STtLO0s7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7O2U7O2M7VyxPOztXLG9DO1csVzs7Ozs7Vzs7OytCLGU7USxPOzs7OztNOztJO0k7Rzs7SSxJLDZCOztLOztNLHlCO007O1M7VTs7OztTLE87O00sbUIsVztNLFE7OztNLEc7TztRO1MsTTtTLE07UTtRO1M7Ozs7WTs7OzthOztZO1c7USxHO1M7USxJLE87OztPOzs7Ozs7OztLLFk7TTs7Ozs7bUI7STtLOzs0Qix1QztNLE87Ozs7OztVOztzQzthLDBCO1UsZTtVLE87UztNOzs7STtHOztJLFk7Ozs7O007Ozs7O087Ozs7VTtVO1csVzs7OzthOzs7O2M7Ozs7OzthOzs7YztnQjs7Ozs7O2E7Ozs7YztnQjs7Ozs7O1c7WTtZO2M7OztXOztTO007Ozs7OztNOzs7O08sZ0MsK0I7TTs7OztJLE07Rzs7STs7O00sVzs7Ozs7O0k7Rzs7SSxpQjs7Ozs7SztNLG1EOzs7Uzs7O1UsTTs7O1MsWSxNO1MsTTtRO0s7TSxtQjs7OztzQzs7O0ssUTs7Ozs7NEI7OytCO0s7YTs7O0ksNEIsOEI7SSxHLHNEO0k7SSxvQztJO0s7O00sZTs7O0ssVzs7STtLO0s7Ozt3QjtJO0ssYztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjs7VTs7OztZOzthLE87OztnQixTOztlO1k7OztXOzs7O1csTztVO1UsVztVLFc7Ozs7Ozs7Ozs7O2EsSztjLE07OztjLEs7d0I7Ozs7YTs7OztVLE07UztTOztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxPO1UsTztVLE07Z0I7VTtXO2lDLHNCO1c7Z0M7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7SztLLE87STtJLEksUTtJO0s7OztTO1MsZTtRO00sWTs7O1M7O1UsTztTO1MsTztRO00sVTtNLE07OztVO1c7Ozs7WSxXO1csTyx3Qzs7O00sWTtLLEc7Ozs7VTtVLE87UztNO007Ozs7Rzs7d0IsUztJLFU7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7OztJLEksVywwQzs7Ozs7O0c7OztLO0ssRyx3QztLLGE7a0I7Syw0QjtLLFk7Ozs7Uzs7O1UsSTs7O1U7O1k7aUI7bUI7O1M7Uzs7O1MsTzs7O1MsZTtTO1U7VyxPO1csb0IsTyxxQztXOzs7NkIsTyxnQztjLEksaUI7Yzs7O2U7Z0I7Z0I7Z0I7YyxXO2M7ZSxLO2UsTztlLEs7ZSxPO2UsTztlLE87ZSxPO2UsTztlLE87ZSxPO2UsSztlO2M7ZSxJLGM7OztjOzs7ZTtnQjtnQjtnQjtjLFM7YzthO1csTztVOzs7OztVOztXLHNCO1UsTzs7OzhCOzs7UztTOztTLE07O1M7O1UsTzs7O2Esa0IsUTs7O2U7Ozs7aUMsTyxrQztnQixRO2dCLEk7Z0Isc0I7ZSxPOzs7K0M7O2E7WTtTO1Msb0I7OzhCOzs7OztVOztZO2lCOzs7Ozs7YTthO1k7UyxPOztLO0k7STtHOztJO0ssTztLLE87SyxPO0ksTztHO0csZ0I7Ozs7Ozs7Szs7OztNO29CO0s7STtJO0ssYTtLO0s7O0s7Ozs7SztJO0k7Ozs7O1MsSztVO1UsSztXO1k7OztlO2U7Z0IsRyw0Qzs2QjtnQjtnQixHLG9DO2dCLFk7Ozs7b0IsTTs7O29CO3FCLFc7cUI7Ozs7Ozs7cUIsVztxQixHO3NCLE07Ozs7O2dCLE87O2M7VztZO1k7WTs7OzttQzs7Ozs7UztRO0s7OztLO007OztTO1M7UztVO1UsUTs7O1UsSztVLE87Uzs7Ozs7Ozs7O1UsTTs7Ozs7OztRO0s7SztNLE87TSxNOzs7UyxXO1MsVztRO00sUTtLO007Tzs7O1U7VSxHLDJCOzs7OztnQjtVO1M7TTtNO087OztVLEcsMEM7VSxnQjs7VTtXO1csTztXOzs7VyxPO3FCOztVO1UsUztVO1U7VyxROzs7VyxVOzs7O1c7OztVLFc7VSxLO1csTzs7Ozs7Ozs7VSxNOzs7Uzs4QixtQixtQjtNOzs7O0s7Ozs7TTtNOzs7O00sZTs7O0s7O007TSxNOzs7TTtRLHFDO00sRzs7Ozs7OzthO2M7Ozs7bUM7SyxXO0ssTztJO0ksTzs7b0Isa0I7RyxnQjs7SSxxQyxPOzs7SztLO0k7SSxPO0c7Ozs7Ozs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdDLFE7O0s7O00sTTtNLE07TTs7O1M7UztVLE07UyxpQzs7VTtXLE87VyxROzs7O1k7YSxNO2EsTTttQjs7Ozs7Ozs7O1MsUSxNO1M7UTtLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs7Ozs7Ozs7Ozs7VTs7Ozs7OztTO00sTzs7Ozs7STs7Szs7Szs7OztTO1M7UTtNLE07SztzQzs7O29CLDBCO0ksRztLO3dCLHdCO00sTTtNLE07SztzQzs7d0IsbUIsK0I7SSxXO29CLHVCO0k7SyxNO0ssUTtJO0s7O0ksYzs7SyxNO0k7OztLLE07SyxPOztLLEcsbUM7O0s7STtJLE87OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtHOztJO0ssVTtLOztlO0c7RztJLE87RztHO0k7d0Isb0I7SSxPO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7OztHO0c7Ozs7Ozs7Ozs7O0k7OztzQjtJLFU7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7O0s7Ozs7OztLOzs7STtJO0ssUTs7O0s7Tzs7Szs7Ozs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sYzs7Ozs7O087UTtRLE87Ozs7O007O0s7O0c7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsTyxpQztPLE87O00sYztvQjs7TSxPOzs7OztNLE87OztJO0c7O0csZ0MsZ0I7Ryx5QixTO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHO0k7SyxrQjtLLFE7dUI7O0ksTTtHO0c7O0ksTztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7OzRCLDhDOzsrQixXLDhCO0csSSxTOztJO0k7SyxZO21DO3dCO0s7OztNOzs7O0c7O0ksVzs7SyxZOzs7TSxpQjs7SyxNO0k7SSxPLFc7RztHOztJOztJOztJO0c7OztLLEksbUI7SyxXO0k7SSxPO0c7Ozs7Ozs7STs7O0ksSSxVLG1DOzs7Ozs7Rzs7O0s7SztNLEksNkIsVTs7Tzs7USxNO3FCOzs7TTs7Ozs7OztXO1csTztVOzs7O00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7WTthOzs7aUIsbUIsUTs7OzttQixPOzs7bUQ7O2lCOztjLE07YyxRO2MsUTtjLFU7Ozs7Ozs7Ozs7O3VDOzs7OztZLE07Ozs7Ozs7O1csTztVO08sTzs7OztJO0k7Rzs7STt3QixTO0ksTztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssb0I7SyxPOzs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7O1UsdUIsVTs7VSxNOzs7Ozs7Ozs7Ozs7dUI7a0I7OEMsUztLLE87OztLLDhCOzs7SSw4Qjs7Rzs7SSxlO0ksSSxnQzs7OzBCOzs7Rzs7STtLLE07SyxNOztHO0csa0MsZ0I7Ryx5Qix1QjtHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RyxxQyxTO0c7O0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLE8sMEM7SSxPO0c7O0k7a0I7Ozs7OztNOzs7Ozs7Ozs7Ozs7OztROztPOzs7Ozs7OztHOztJOztLLE07STs7SyxLO0ssVTs7Ozs7USxxQixJO2U7UyxNOzs7O1E7O1MsVTs7Ozs7UyxXO1E7USxHO1MsTTs7Ozs7SyxPOztJLE07Rzs7OztLLEksZSx3Qzs7OztPLE07Ozs7SSxPO0c7O0k7SyxNO0k7O0s7SyxHO00sTTtxQjs7STtJOzs7Ozs7Ozs7TTtPLFE7TyxNO00sVztLO0ssTzs7SSxhOztLLG1CLFE7Ozs7OztLLEksTyx5QixPO0s7STtJLGE7STtHOztJO0s7O00sTztNLE07TTt5QixZO0ssZTs7STs7Szs7O0k7Ozs7STtLO007OztLOztJLGdDLEk7STs7SztLO007eUIsWTtNLE87O29COzs7O0k7Szs7O0ssWTtLO0ssVTs7O0ssRzs7O087TztPO087Tzs7O1csVztXLE87VTtPO087O007TTs7O0k7SyxPO0ssWTtLLGdCO0ksTTtHOzs7STtJO0k7eUIsb0IsYztJLEksUyw0Qzs7Szs7OztNLE87SyxXO0k7STtLLFE7SyxVO0ssUTtJOztNLE07Ozs7Ozs7Szs7O1MsTTtRO007OztPOztPOzs7TTs7O1E7Ozs7OztzQjs7O1U7Ozs7Ozs7VzsyQjs7O1U7Ozs7O087Ozs7TTs7O1E7d0I7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO08sb0I7TyxVOzs7Ozs7Ozs7Ozs7OzRCLDZCO1E7O007O0s7TTs7O1M7UyxHO1UsTTs7MEI7O1E7SztLO007MEIsTyxrQztNLE87ZTtNLE07SztNOzs7VTtXLE87Vzs7Ozs7OztXOzs7Ozs7Ozs7VyxPO1csTztXO1U7UztTLE87UTtNO00sTztNLFU7Ozs7Ozs7Szs7TTs7O0s7OztNOzs7VSxpQixRO3NCO1UsbUIsVTs7O1csTzs7VTtTO08sUTtLO007TTs7Ozs7O0s7O007TSxNOzs7OztJO0ssUTs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7TTtNO0ssSSxXLHNDOzs7OztNLE07O0k7STtJO0k7SztNO08sTztPLFc7TyxVOzs7OztPLE07Ozs7Szs7STs7Ozs7Ozs7Ozs7OztJO0k7O2dCOztJLE87Rzs7STtJO0ssRyw0QztrQjtLLFk7Ozs7O1MsSSxXOzs7O1csTTs7O1M7VSxPO1UsTztTLEk7Ozs7O1UsTTs7O1M7OzthOztTLE87Ozs7O2lCOzs7O0s7O3VCO0ssTzs7Rzs7O0s7OztNLFM7Ozs7TyxNOztNLEc7Tzs7O0k7SSxPO0c7Ozs7Ozs7O00sbUIsVTs7O087UTtTLFM7UyxPOztXOzs7UyxJOzs7Ozs7O1M7VSxPO1UsTztVLE87O1k7Ozs7O1MsTTs7Ozs7OztTLE07Ozs7TSxNOzs7STs7O0k7O0ssRztNLFk7Ozs7aUM7Ozs7OztPLE07bUM7TSxNO2tDOzs7TSxXO00sRzs7O087USxPO1E7Ozs7Ozs7OztjO0ssYzs7Ozs7O1U7O1c7eUI7Ozs7Ozs7OztLLGdCO0s7O007O2dDO08sc0I7TTtNLEk7Ozs7Ozs7SyxjOzs7O00sc0I7TSxHO2lDO087OztPOztRLHNCO087O007TztRLE87USxRO1Esb0I7Tzs7Ozs7aUM7TyxPOzs7eUI7SyxPO0k7SSxXO0k7Szs7TSxzQjtNLE87Szs7Ozs4QixPOzs7Rzs7SSxJOztLO007STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SSxPO0c7O0ksa0I7STs7SztLO00sZTtpQjttQjtNLFk7Ozs7O1UsRztrQjtZLFc7WSxNOzs7O3FDOzs7OztXO1ksTztZO3lCOztZO2E7YyxVOzs7YyxVOzs7YTtjLFc7Yzs7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1U7OztjOzs7VSxPOzs7OztrQjs7OztNOzs7VTs7TSxPOztJOzs7SztNLFE7Ozs7O0ssb0I7SztLO0k7SSxPO0c7O0k7Ozs7O007TztRLE87USxPO1EsTztPLEssaUM7TztRO1EsTztRLE87TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLEc7TSxPOzs7STtHOzs7SztLO0k7SSxPO0c7O0k7SSxrQjs7Szs7TTtNLE87TSxhO007TTtLOzs7Ozs7Ozs7STtJO0ssTztLLGU7SyxROztLLEksTyx5QixPO0ssVztJO0ksZTtJO0k7O0s7Ozs7Ozs7Ozs7Vzs7WSxNOztVO087OztNO08sTztnQjs7SyxZO0ssYTtLOzs7O00sTztNLE87Ozs7NEI7Ozs7MEIsTywyQjtLOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Szs7STtLO087SztLLGM7Ozs7TTtPO08sSzs7O1U7Ozs7OztVLFc7VTtVLE87UztNO007O0s7Ozs7OztNO0s7SyxPOztJO0ssTztLO087eUIsK0I7SSxZOztJO0ssUztLLFU7O0s7Ozs7Ozs7VTtXO1ksTztZO2M7Ozs7Vzs7Ozs7WSxPOzs7O1M7TSxPOzs7O007TTtPO1EsTztRO1U7O087Ozs7O1EsTzs7O0s7SyxPO0k7STtJO0k7Ozs7Uzs7VTtVO1UsTztVO3FCO1MsbUI7OEIsTyw0QjtTLGE7UztVO1csTztXLE87VTs7Ozs7O1UsTTs7O1E7Szs7STt5QixxQiw2QjtJO2dDLG1CLHlCO0k7bUI7O0s7OztNO00sTTt1Qjs7MEIsTyw0QjtLO00sTztNLE87SztrQztJO0k7O0ssbUI7O0ssTztJOztLO0s7O2M7Ozs7STtJO0k7SyxxQjtLOzs7Yzs7Ozs7STs7SyxxQixRO2lCOztLLE07STtJO0k7Szs7TTtNOzs7TTtNO0s7Szs7Ozs7O1Esa0I7OztTOzs7USxNOztPLG9COztROztTOztZLE87VztTO1c7OztZO1k7YTtjLE87YyxROzs7OztjLE07Ozs7OzthOzs7Ozs7O21CO2tCO2U7Ozs7Ozs7O2U7Ozs7YSxNOzs7O2E7O1k7VztROzs7TyxNOzs7OzttQjtLLHFCOztNLE07O0s7O0k7STtLOzs7UztTO1E7TSxPO007UTtVO00sTyxXO007USxXOzs7Ozs7TSxNOzs7O00sTTs7Ozs7SyxNOztJO0k7O0s7O0k7O0s7Szs7Ozs7Ozs7Ozs7STtJLGtCO0k7Rzs7SSxJLEs7Ozs7TTs7TztPLFM7TyxVOzs7O087USxTO1EsTTtRLGlCOzs7O087USxROzs7TSxJOzs7OztPLE07Ozs7TztRLE87USxPOzs7VyxXLG1CO1c7WTthLE87b0I7OztXLGM7VTtPOztNO08saUI7TyxtQjtPOztVOztPOztVOzthO08sTTs7O08sTTs7O08sdUI7Ozs7Uzs7VSxVOzs7Ozs7Vzs7WSxTO1ksTztjO1ksTTtXLHNCLE87Vzs7Ozs7Ozs7O1csTTs7O1MsTTs7OztPO1E7Ozs7OztNLE07O0s7Ozs7TTs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7STs7Ozs7SztJO0ksTztHOzJCLCtCOzs7SyxZO0s7SztLOztNLFE7OztNOzs7O087UTs7Z0MsaUM7UyxNOzs7Ozs7OztPLE07OztNOzs7O1U7VyxROzs7VTtTO08sZ0I7TyxPOzs7O087USxPOzs7Vzs7Ozs7WTtZOzs7Ozs7VTtRLE07TTs7TyxNOzs7TTtPOzhCLG9CLGM7TyxjO08sTztPLE87TTtNOzs7O087O1U7OztPLGU7TTtNOzs7O1U7O1M7TTs7OztVLFk7c0I7O1UsTTs7UztNOzs7O1U7Vzs7Yzs7Ozs7O1c7Ozs7Ozs7VyxNOztTO007TTs7O1U7VSxPO1M7TyxTO087Ozs7Ozs7OztNOztLLE07STtJLE87Rzs7SSxZO0k7STtJOztJO0k7STtJLFk7OztLLE07OztJO0s7SyxTO0k7Rzs7STt5QixtQztJO0ssUTs7O0k7Rzs7STtLLFE7SyxVOzs7b0M7Ozs7O3dCOztNOzt1Qjs7O0ksTTtHOztJO0s7Ozs7Ozs7Ozs7O0s7aUIsTzs7SyxNOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7OztPLEc7Ozs7O00sRztNLEc7TSxHO00sRzs7Ozs7SyxNOzs7STtHOztJO0k7Szs7TSxVO007Ozs7Ozs7Ozs7OztXLE07OztVOzs7VztXOzs7VTs7Ozs7Ozs7Ozs7TTs7SyxNOztHOzs7SyxJLE0sMEM7O007Ozs7O007Tzs7OztPO1M7OztPO1EsTztRLHVCOzs7O08sTTs7Ozs7c0I7OztNO08sTTtNOzs7VSxXO1U7VyxZOzs7O2E7O2MsUztrQzs7Ozs7O1c7Ozs7a0M7OztTO087UztPOzs7VSxnQjtVLE87UztNO007TyxPO08sTzs7OztNLEs7TyxNO007TyxPO08sTzs7O0s7O00sdUIsZTtNLFU7OztNO0s7STtJLE87Rzs7O0k7STtJO0ksSSxnQjt5QixvQixjO0k7SyxTO0ssUTtLOztLOzs7O00sTTtNLFE7SztJO0k7SyxjO0s7OztLOztNLE07Ozs7O0k7SyxhOztJOzs7OztTO1M7VSxXO1U7Ozs7OztVLE07OztRO0s7OztLO0s7TSxXO007Ozs7OztNLE07O0k7STs7Ozs7Ozs7STs7Ozs7O2E7Ozs7Ozs7OztJO0ssTztLLE87OztLOzs7Ozs7OztROzs7Ozs7Ozs7SztJO0k7SSxjOzs7SyxNOzs7STtLO0ssVztJO0s7O1E7Ozs7Ozs7SyxNOztJOztPO0k7Szs7UTs7Ozs7OztLLE07O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOzs7Ozs7Ozs7Ozs7O0k7SyxXO0s7SyxXO0k7STtJOzs7O0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFk7O0s7O007c0M7SyxXO0k7SSxPO0c7OzRCLE8sc0M7STtJO0k7Rzs7STtLOzs7UyxXO1MsTztRO00sSztNLE07TSxXO0s7SztLOzs7OzRCOzs7Rzs7STs7Ozs7OztjO2UsTztlO2UsTztjLE87O2E7Rzs7SSxzQzs7cUIsWTtJLE87Rzs7STs7O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztRLE87Ozs7Ozs7O087O1E7VTs7TyxPOzs7Ozs7Ozs7Ozs7Tzs7O3dCLE8sMEM7O3dCLE8sMEM7TztPLE87OztPOzs7d0IsTywwQzs7d0IsTywwQztPO08sTzs7Tzs7O1E7d0IsTywwQzs7d0IsTywwQztPLE87O087Ozs7O1E7OztXLE87Ozs7Ozs7OztROztXLE87VTs7O1csTztvQjs7O1U7TztPOztRO1MsTzs7UyxPOztTLE87USxPOzs7Ozs7Ozs7Ozs7TztRLE87O1EsTzs7USxPO08sTzs7OztPOzs7OztTOzs7O2EscUIsVzthOzs7O2tDLFM7OztZO1UsUTs7Ozs7O2M7O2UsVTs7O2MsRyxpQztjOzs7a0I7a0IsTztpQjtjOzs7O2dDLGtCLFM7Ozs7O2Msb0IsTztjLEcsbUM7YztlOztrQjs7bUIsTztrQixPO2lCOzs7a0Isa0IsUTs7Ozs2RDs7b0IsTzs7O21EOztrQixPO2lCO2M7MkI7OztVOzs7Ozs7Ozs7O1ksVztZLE87VztRO3VDLFk7Ozs7Ozs7WTs7Ozs7Ozs7VztROzs7OztXO1csTztVOzs7O08sTzs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087Ozs7UTtVOzs7Ozs7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1E7d0IsTywwQzs7O1csTztVO08sTzs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Tzs7OztROztXOzs7O1k7Vzs7dUI7dUI7O3VCO3VCOzs7OztXOzs7Ozs7OztXOzs7Ozs7OztXOzs7Ozs7OztRLGdCLE87UTs7Ozs7Ozs7O3dDO08sSSxxQjtPLE87OztPLE87OztPO087UTsrQixhO087c0MsUztPLE87OztpQjtpQjs7TyxxQjtPLE87O087O1E7Ozs7TyxPOzs7Tzs7UTs7VyxZLE87O1csTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxNO00sTztNLFU7OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7TyxjO3FCOztPOztNOztLOztJO0c7O0k7SSxPO0c7O0k7OztLOztJO0c7O0k7OztLLE87O0k7Rzs7STs7Tzs7Tzs7Ozs7OztHOztJO0ksb0I7RzsrQiwwQzs7STtJLHdDO0ksWTs7Ozs7USxHLG9DO1EsRyxvQztROztVOzs7Vzs7O1k7OzthOzs7YzttQjtTO1UsVTs7O1c7OztVOzs7O2dDOzs7UTs7O1E7Ozs7O1EsTTs7STtHOztJLEksMkIsSTs7OzsrQjs7Ozs7Ozs7OztPLEc7OztXOzs7OzttQjs7OzthLG9DOztJO0c7NEIsdUM7b0MsdUM7O0k7Ozs7Ozs7TztTO1c7USxJLFUsNkM7Ozs7K0I7Ozs7OztJO0c7O0k7Ozs7Ozs7O1E7OztTO1E7Ozs7O0k7Rzs7STtJLGdCLG9DO0ksWTs7O0ssRyxvQztLLEcsb0M7SyxHLG9DO0ssRyxvQzs7STtHOztJO2dCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7O0k7Ozs7O3VCOzs7STtHO3FDLHdCOztJO0k7Ozs7Ozs7MkI7O1MsSSxXLGlDOzs7aUM7Ozs7Uzs7Ozs7O2M7O2UsbUI7ZSxPOztjO2E7Ozs7VTtZOzs7Ozs7a0YsZTs7UyxPOzs7Ozs7Uzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7O0s7O0c7Rzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHOztJLFU7O0ksSSxXLDRCOzs7NEI7OztHOzs7O0ssSSxxQjtLLE87STtJLE87Rzs7SSxPO0c7O0ksb0I7SSxPO0c7OztLO0s7STtJLE87Rzs7OzJCLE8sMEI7SSxPO0c7O0ksbUI7Rzs7SSxPO0c7O0k7O0ksTztHOzs2QixtQix3QjtJLE87Rzs7cUIsd0I7SSxpQjtHOzJCLGE7O0ksTztHOztJLE8seUI7Rzs7STtrQzs7OzJCOztPOztPOzs7O1E7UTs7Vzs7TyxzQjs7Tzs7USwwQix1Qjs7USxzQjtPLHNCOzs7Ozs7Ozs7OztRO1EsSSxVO1Esc0I7O087Ozs7O1csc0I7O1E7VTtRO2tDO1E7USxzQjtPLHNCOzs7Tzt5Qix1QjtRO1MsTztTLFE7OztTLE87UztRLHVDOztPOzs7USw0Qix1Qjs7OzZCO1E7TyxzQjs7Tzs7O1Esc0I7TyxzQjs7Tyx5Qzs7OztTOzs7VTs7MkI7Ozs7O087OztRLHNCO1E7Ozs4QjtPLHNCOztPOzs7USxzQjtPLHNCOzs7OztRO1M7Ozs7O087O1E7USxzQjtrQztROzs7WTtZOzs7O1k7VztXLE87O1E7NkI7TyxzQjs7Tyw4QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087O1EsVTs7USxzQjtPLHNCOztPOzs7Ozs7NkI7OztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRO2tDOztRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1E7UTtRLDBCO08sc0I7O08sZ0M7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1EsNEM7O1E7USxzQjtrQzs7UTtRLDBCO08sc0I7O087Ozs7UTtRO1EsNEI7TyxzQjs7TywwQztPLG1CLE87O08sOEI7TyxzQjs7TyxvQixVOzs7Ozs7TztPLHNCOztnQzs7O08sa0IsTzs7Tzs7Tzs7Ozs7UTtRLG1CO2tDOztRO1Esc0I7USwwQjtPLHNCOztPLGdDO08sc0I7O087OztRO1EsNEI7TyxzQjs7Rzs7STs7OzJCOzs7Tzs7O1M7Ozs4Qjs7O1k7O1k7O1k7O1k7O29DLG1CLFU7YSxVO2E7WTs7WSx1QixPO1k7OztZOztZOzs7O2dCO2dCO2U7YSxhO21DO2EsTzs7OztnQjtpQjs7a0I7a0I7a0I7MEM7O2lCO2tCO2tCOzBDO2dCOzthO1k7OytCOztZOzthLGlEO2EsWTs7OztnQjs7YTtZOztZOzs7O2EsZTthO1k7b0I7O1E7USxPOztPLDRCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Ozs7OztXO1csc0I7VTs7O087c0M7OztXOzs7Ozs7OztnQjtnQixzQjtlOzs7Ozs7O21COzs7Ozs7TztRLE87O087O0c7NEI7eUI7O0ksdUM7SSxzQjtHOztJO0ksc0I7Rzs7STs7O08sNkI7TyxzQjs7MkI7OzZCOztPOztPLDRCO08sc0I7ZTs7Rzs7SSxpQjtJLDBCO0ksc0I7Rzs7STs7O08sc0I7O08seUI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztHOztJOztLOztNLE07TTtNO007TSx1Qjs7OztLOztNO00seUI7OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7O1EsNkI7USxxQjs7MkI7O1E7Ozs2QjtTLE07UztTO1EsbUI7O1E7Ozs7OztZLHFCOzs7UztTLG9CO2lDOztTO1Msd0I7USxxQjs7UTs7OztTO1M7O1k7O1EscUI7Ozs7OztHOztJO3VCOztJO0c7O3FCLGE7STtLLGlCO0s7STtLOzs7Uzs7O1U7VTtVOzs7VTs7UztVLGU7VTtTOztNLE07TSxROzs7O0s7TTs7OztXOzs7c0I7VTs7OztPLFE7TSxHOzs7Ozs7OztTOzs7VTtTOzs7STtHOztJOzs7Ozs7SSxrQjtJLDRCO0k7SywwQjtLLHdDO0c7O0k7SztLLE07cUIscUI7STtLLE0sVztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7Szs7O0ksSTs7Ozs7UztTO1E7a0I7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7OztTOzs7Ozs7O0k7O0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztxQixzQyxZO3FCLHlDLFk7eUMsNEI7NkIsd0I7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOztHOztJOzs7O1EsSSxtQiw4Qjs7O21DOzs7Ozs7OztZLEksbUIsOEI7Ozt1Qzs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7OztRLEksbUIsOEI7OzttQzs7O087OzJCOzs7Tzs7O21COztPOztHOztJO3lDOztJLE07Rzs7SSxPO0c7O0k7Rzs7SSxZO0ksaUI7Rzs7STtLLFE7Szs7SztJO2lCOzs7O0c7O0k7SyxPO0ssUTs7Ozs7TSxHLHVDOzs7SSxNO0c7O0ksTywyQjtHOztJO0ksTztHOztJOzRDOzs7OztNOzs7STtHOztJOzRDOzs7O3dCOzs7O007OztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7Rzs7STs7SyxNOztJO0c7RyxzQjs7STtJOztNOztPO2M7VTs7Szs7Ozs7O00sTTs7Ozs7SyxNOzs7Rzs7STtJO0c7O0k7SztLOzs7Ozs7Ozs7O08sTTs7Ozs7O0c7O0k7Ozs7Uzt1RDtTO1E7SSxPO0c7O0k7Ozs7Uzs7VTs7OztXLE87VyxROzs7O1c7WSxJO1ksVTsyQzs7OzthLHFCO2MsVztjLE87Ozs7Ozs7YyxLO2UsVztlOztnQixNO2U7O2dCO2dCOztnQixzQjtlLE87Ozs7WSxtQjthLFc7YSxPOzs7Vzs7VSxNOztTO1E7SSxPO0c7RztJO0k7STtJOztJOzs7OztHOztJO0k7Ozs7STs7SyxzQjtLLE8sa0I7STtJLEc7SyxNOztJLFM7Ozs7O00sTTs7O0k7Rzs7O0ssK0IsTztLLE8sNEI7STtJLE87Rzs7STtLOztJOzs7Ozs7OztTOztVLHNCO1UsTTtrQjs7Ozs7Ozs7Ozs7Ozs7UztTO1Usc0I7VSxRO1UsVTs7O1UsTzs7O2E7OztjO2M7YSxzQjtZO1M7Ozs7Uzs7O1Usc0I7VSxLO1Usb0I7VSxPO1UsVztrQjs7O1M7O1UsTztVLE07O1M7VSxPOzs7YTthO1k7VSxNOzs7YTtjLFE7OzthOzs7Ozs7O2MsVztjO2UsYzs7Ozs7Ozs7Ozs7OzthO2M7ZSxNOzs7ZTtjOzs7Ozs7YTtjLFU7OzthO2E7WTtTOzs7OztTO1U7O1csVTs7OztXLE87VyxXO21COzs7UyxJLGtDO1M7Ozs7Ozs7STs7SztLOztNO00sUztNO007TTtPLE87TyxPO007TTs7SztJO0ksTztHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7Rzs7OztJLFk7c0U7SSxNO0c7OztLLDRCO0k7O0s7TSxTO007d0IsTTs7SztNOzs7VTtVLE8sa0I7UztPLE07Ozs7O007O3lCLG1CLE8sd0I7TyxjO00sTTs7Ozs7Ozs7SztLO0k7Ozs7b0IsTztNLHNDLE87TSxHOzs7TyxJOzs7O0s7MEIsb0IsMEI7SztNLFc7TTtNOzsrQjs7OytCOztNO00sTztLO0ssTztJOztLLGtCLE07OztNLG9CO007O0ssTztJOztLLEc7TTtNO087TyxZOztPOzttQjtPLE87Ozs7STs7SztNLE87TSxPO00sVztLLE87STs7SyxXO0ssVzswQixPLCtCO0s7TSxTO00sd0I7SyxPO0k7O0s7O3VEOztLLGdCO0ssTztJOztLLHdDOztLLE87STs7O0s7Szs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTs7O2E7O2M7YzthO1k7VSxNO1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzswQixjOzBCLGM7O0ksTztHOztJOzs7O0s7O0k7Rzs7Ozs7STtzQixPLGMsZ0M7O0ssTyw2QixPLDBCO0k7SSxPO0c7OztJOzs7Ozs7TyxHOzs7O1ksa0M7O2EsTTs7WSxnQjtXO3dCOzs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7VSxrQzs2Qjs7VTtTO3NCOzs7Szs7O1M7UyxPO1E7TSxNO007TTtNO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztROzs7Uzs7O1UsUTtTOztXOztZLE87WTs7WSxPO1c7VztXLFc7VyxPOzs7VyxvQjtXOzs7OztvQjtXOztVLGE7dUI7VSxlOzs7Uzs7Ozs7Ozs7Ozs7O1E7TSxhOztNOztNLFU7O087Ozs7OztXO1c7VTtRLFE7USxPO1EseUM7USxPO1Esc0I7TyxHO1EsZ0I7UTs7Ozs7O1k7WSxPO1c7UTs7Ozs7TSxXO007Ozs7O0s7O0k7SSxtQjtJO0c7OzZCLGU7NkIsZTs7SSxRO1U7SSxXOztLOzs7UzsrQzs7UTtLLE87O0k7Rzs0QixTOzs7Ozs7STtJOzs7Ozs7Ozs7Ozs7OzRCLGtCLDhCO1MsTzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7RztHO0k7STs7SSxtQixPO0ksVztHOztJO0k7OztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOztJLFk7O0k7Rzs7SSxrQjtHOztJLHdCO0c7OztLOztJO0ksTztHOzs7O0s7O0s7TTs7SSxJLGE7O0ssK0I7SztJOztLOztrQjs7O0k7SSxvQixPLHVCO3VCLE8sdUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztTO1M7Ozs7OzttQjs7O1E7SyxXOztLLHdCO0ssZTs7bUI7TSxNOzs7Ozs7O0s7O08sTTs7Ozs7SztLOzs7O087O1EsTztRO1U7YTs7Tzs7O087USxNOzs7O1c7VztXO1c7VztXOzs7VTtPOztPOztRO1E7Ozs7Ozs7Ozs7O1M7OztVO1U7O2E7YyxPO2E7YyxZO2MsTzthLE87WTs7VTtTOzs7O08sTTs7O08sTztRLE07TzsrQixPLDJCO1EsZTtRLE87USxjO087TztRLFU7OztXOzRCLFk7VyxlO1c7Ozs7OztxQjs7O1U7Tzs7aUIsZ0M7aUI7OztnQjs7OztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087Ozs7O1MsSztVLE07c0I7OztRO1MsYTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE07OztROztTLE87UyxNO1M7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7dUI7Ozs7OztXLHVCOzs7Ozs7Ozs7Ozs7OztPLEc7UTtvQjs7O1M7Ozs7VTtRLFc7USxNOzs7O1E7UyxPO1MsTztTLE87UyxPO1MsSztROztPO087USxnQjs7O1c7Ozs7O1c7O1U7UTs7UTs7OztTOztTLFU7Ozs7UztTOzs7WTthLE87YTtlOzs7O1k7VztTLE07UTtRO1MsVTs7OztRO1E7O1E7UyxNO1MsTTtRO1MsTTs7OztVLFc7VTtVO1csTztXLFU7O1UsTTs7O1M7Ozs7Uzs2QixZO1UsUTs7O2EsWTs7Ozs7ZSxHO2dCLE87OzthLE07O1k7VSxNOztVLE07OztRO1M7Ozs7Ozs7UTtTLFU7OztTOzs7Ozs7UTtPO087TztPOzs7UTs7Ozs7YTthO2E7YTtjLE87YyxjO2M7d0I7YTs7Z0I7O2E7YSxNO1k7Uzs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTs7OztZO1k7VztROztPOzs7VztXOzs7Ozs7cUI7OztVO1EsTztPOztpQixnQztpQjs7O2dCOzs7OztPLEc7OztTLE07O087O3NDO1E7dUI7UTt5QixPLDZDO1EsZTtRLGdCO08sRztROzs7O1U7O087USxXO1EsaUI7OztXOzs7Ozs7Ozs7VTs7UTs7O1MsbUIsbUI7UTs7Tzs7O087USxNO087OztTO1MsTTs7O3dCOzs7UTs7O1MsYztTOzs7Ozs7O1c7VztZLFE7OztXO1k7Ozs7O2M7Ozs7Ozs7O2MsTTs7Ozs7OztXO1c7Vzs7WSxPO1c7Vzs7OztXOztZOzthO2EsVTs7O2dCLHNCO2dCO2lCLE07OztnQjtnQjs7WTs7OzJCO1k7YTtjOztjOzs7Ozs7OztlOzs7Ozs7YztlLE87ZSxJO2M7Ozs7OztXOzs7O21COzs7VTs0QixtQztPOzs7O2tDLDBDO1E7Ozs7Ozs7Ozs7OztPOzs7OzttQjs7Ozs7Ozs7Ozs7OztPOztRLFM7USxnQjtPO2dDOzs7O1c7Vzs7Ozs7O3FCOzs7VTtPOztpQjtpQjs7O2dCOzs7OztPO1E7O1M7UztTLGE7UTtRLFU7O1E7OztZLGlCLFM7WTtXO1M7UztTO1M7OztRLEksb0I7UTs7Ozs7O1k7WTtXO1E7Ozs7WTtZO1c7UTtROztTO1M7OztZO1k7YTs7O3NDLHNCLGE7aUIsTztnQjthOzs7Ozs7Ozs7O2UsSztnQjtpQixPO2lCO21CO3NCOzs7Z0IsTTs7Ozs7OztlO2dCLFc7Z0I7Z0I7Ozs7Ozs7Z0IsTTs7O2U7Ozs7Z0M7YSxNOzs7VztTO1MsTzs7OztROzs7Ozs7a0I7Ozs7Tzs7UTtROzs7Vzs7cUI7cUI7b0I7O1U7TyxlO087OztXOzs7YSxNOzs7OztXO1k7Z0MsUzthOzs7Ozs7d0M7c0M7OztXO1U7UTtROzs7UTs7Ozs7WSxNOzs7Ozs7Ozs7OztTO1UsTTtTOzs7O1Msa0I7Uzs7Ozs7O21COzs7Ozs7Tzs7Ozs7Ozs7UztVLE07UztVLFE7Ozs7Uzs7Ozs7Vzs7UyxjOzs7VTtVO3FCO1U7VTtVOzs7Ozs7Ozs7O1MsTTs7Ozs7TztRLE07TztPO1EsVTs7OztPOztPO08sVztPO3NDOzs7O1c7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csTztVO087OztPO1EsTTtPOztRLFU7OztROytCLE8sNEI7USxRO1EsTztRLE87USxVOzs7USxHO1M7VSxPOzs7YTs7Ozs7YyxROzs7O2U7O2dCLE07ZTs7OztjLFU7Yzs7YTtZO1UsVTs7O1UsVztVOzs7YSxPO1k7VSxzQjtVLE87VTtVLHVCOzs7YTthO1k7VSxTO1M7VSxNOztTOzs7OzthO1k7VSxJO1U7UyxPOzs7Ozs7Ozs7Ozs7OztPLE07OztPOztRLEs7USxPO087Z0M7Ozs7VztXOzs7Ozs7cUI7OztVO087OztPO1EsTTtPLEksSSx5Qzs7UTs7O087O1E7UTtPOzs7Ozs7Ozs7O087Ozs7Vzt3QixPO1csTTtVO1E7Tzs7O08sTTtrQzs7O087USxNO087USxXOzs7Ozs7O1csc0IsUTs7WSxNOzs7VyxPOzs7Ozs7Ozs7VTtPOzs7OztJO0k7OztlOztLOzs7Ozs7OzBCLFM7STtJLE87O0c7OztJO0k7SztLO0s7STtLO0s7SztLO0s7Ozs7OztLO0s7O0c7O0k7OztlOzs7STtJO0s7OztJLE87Rzs7STs7O2U7O0s7Ozs7TTtPLE07OztLO0k7SSxPO0c7OztLO0ssTztJO0ksTztHOzs7Szs7Ozs7O007TSxPO007K0M7SyxPO0k7SSxPO0c7O0k7STtLLEs7SztJO0s7Szs7SSxXO3FCLE8saUI7STtJLEc7Syw0QztJLEk7O0s7Ozs7Ozs7OztLLGtCLHFDO0s7TSxLO00sTztNLFU7TTtROzs7Ozs7TTtROzs7Ozs7SztJO0k7SyxROzs7O0k7Rzs7STtLLGlCO0ssUztJO0k7SyxLO0s7SyxPO3FCLE8saUI7STs7O0k7RztHO3dDLGdDOztJO21DOztHOztJO0ssTztLLFE7SyxPOztLO0s7SyxPO0k7STtJO0k7SSxPO0c7O0k7STs7Ozs7Ozs7VTs7OytCLDhCO1csTztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7bUM7YSxPO1ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1Usc0M7VSxXOzs7O2M7Ozs7ZTtjO2U7ZTtnQjtpQjs7O3FCO29FO3FCO29COzRCOzs7Ozs7YzthO1UsTzs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7OztjO2Msd0I7OzthO1csTztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OztpQjs7O2tEOztpQjtpQjs7aUI7O2lCOztxQzt5Qjs7YTtXLE87VTtXOzs7O2U7ZTs7O2M7WSxPO1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7STs7OztROztTOzs7WTs7Ozs7b0MsOEI7ZSxPOztlOztnQjt1QyxpQztlLE87Ozs7Ozs7Ozs7bUI7bUI7a0I7ZSxPOztlOztlOzs7O3VCOztZO1c7USxPOztROzs7OztRO1MsTzs7UTtnQjs7O0c7O0ksWTs7STtLLE87O0k7Rzs7STs7O0k7OztJOzsrQiw4Qjs7SSxVOztLOztNLFc7O00sTTtLO0k7SSxPO0c7OztLLGU7O00sTTtLO0k7SSxPO0c7O0k7Ozs7O00sTzs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VSxzQjtVLFc7UyxPOztTOzs7VSxVOzs7VTtZO1UsTztTO1Usc0I7VSxNO1MsTzs7OztLLE87O0c7O0k7STs7Ozs7Ozs7O1U7OztXO1csYztVLE87Ozs7Uzs7O1U7WTsyQjtlO1U7VTtTLE87Ozs7Ozs7O1M7O1Usc0I7VSxXO1MsTzs7Ozs7O1M7OztVO1U7UyxJLHVDOzs7OztVLE07Ozs7Uzs7OztVOzs7O3NCO1M7UyxJLHlDOzs7Ozs7VSxNOzs7O0ssTzs7Rzs7STtJOztLO00sUztNLEc7TyxXO00sWTs7Tzs7O1E7USxZOzs7Ozs7TSxXO00sVzs7O0ksTztHOzs7STtJO0k7SSxVO0k7SSxZOztLOzs7VztNLFU7OztLO0s7SztLO0s7TSxVOzs7TTtnQjtLO00sYztNLFc7TSxrQjtLLE07O0ksTTtHOzs7SztLO00sTztNLEs7SztNOztTOzs7UyxHLG9DOzs7Ozs7OztPOzs7Ozs7Ozs7Ozs7O007OEIsaUM7TyxROztNLE87O0k7O0s7TSxPO00sSztLOzs7Ozs7Ozs7O21DLGlDO1csRztZOzs7Ozs7Ozs7O2tDLHNCLG9CO2UsTzs7O2U7OztrQyxzQixvQjtlLE87Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7OztLLFc7SyxXO1E7TSxNO0s7SyxPO0k7SSxJLFcsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87Ozs7aUMsa0IsZTtTLE87OzhCLE87OztTO1Msa0IsTzs7Uzs7Ozs7Ozs7OztNLGtCLE87O007O0s7STtxQjtJLEk7Ozt3Qjs7O0k7Rzs7STs7Yzs7K0M7YzthOztHOztJOztjOzREO2M7YTs7Rzs7OzttQixPO0ssc0M7Ozs7NEI7OzhCOzs7Ozs7cUIsWTtJLCtCO0c7O0k7STs7Ozs7Ozs7SztNO007Ozs7Ozs7Ozs7USxNOzs7Ozs7O0c7O0k7STs7Ozs7OztVLHdDO1UsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O0s7O0c7O0ksWTs7OztLLGdDLFU7Ozs7OztNLGM7Ozs7TyxzQyxPO087USxXO1E7UyxXO1M7VSxXO1U7VyxXO1csUyxPOzs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7O0ksa0IsTzs7SSxJLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7Rzs7STt1QztHOztJLDJCOztLOztJO0ksVTtJO0k7Rzs7STtJO0s7O0s7STtLOzs7Szs7USxXO1E7TztLO0k7STs7O0s7NkI7Ozs7Tzs7UTs7O1E7Ozs7OztZOzthLFc7eUI7YTs7YSxNOzs7Ozs7WTs7YSxXO3NCOzs7Ozs7TztPOzs7OztpQjs7Ozs7O1EsSSwwQztROztPOztRO1E7USxTO1E7O2U7O1EsVTs7Ozs7UyxHOzs7OzttQjs7O21COzs7Ozs7O087O1E7Ozs7O2tCOzs7O087TztROzBDLG1DO29DLHVCOzs7WTtZOzs7Ozs7O1k7VztTLHVCLDRCO1M7dUIsa0IsbUM7bUMsa0M7aUMsd0I7OztZO1k7Vzs7O1k7O2U7O2U7dUI7O1c7OztZOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlO3VCOztXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7YSxrQjthOztZO1k7Vzs7O1k7YTs7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Vzs7O1ksNEI7OzthOzs7WTtXOzs7WTs7Ozs7WTtXOzs7WTthOzs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7ZTs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2UsTTs7Vzs7O1c7O1M7Ozs7Ozs7USxNOzs7TztPOzs7Ozs7Ozs7O1U7O1c7Ozs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7Ozs7O1E7MEI7Tzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OztROzs7UyxXO1E7Ozs7Ozs7Ozs7TyxLO1EsTTtPOztRLE87USxPO21CO1EsTztRLE87USxPO1E7cUI7USxPO1EsTztRLGE7UTtRLE87USxPO1EsUztRLE87USxNO1E7YztRLE87USxlO1E7VTtRLFc7Tzs7Ozs7Ozs7OztPO1EsTTtPOzs7Vzs4QjtXOztZO1k7O1csUztXOztXOztZO2EsUzthLEcsc0M7YSxZOzs7YztlLFc7ZTs7Ozs7Z0IsTTs7OztjO2UsUzs7Ozs7YTs7O1c7VztVO1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7VztZOzs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7Ozs7Ozs7Ozs7TztPO1E7OztZO1ksTztXO1csTztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQixnQztnQjtlO1k7Ozs7OzRCOzs7OztXO1k7O2dCOzs7OztZLFU7OzthO2M7OztjO2E7YyxNOzs7WSxNOzs7VyxlO1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7NkIsVyx5QjtVLFM7VSxPO1UsTzs7VTtrQyx5QztXLE87VTtXOytCLHVCO1ksTztXO1k7YSxzQjthLE87YSxXO1k7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztROzs7VSx1QjtVOztZLFc7WTtZLEk7Ozs7Ozs7Ozs7VTtXO1ksTztZLFc7OztZO1c7Ozs7OztROztTLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21CO3FCOzs7Ozs7O21CLE87O21COytCOzttQixrQjtrQjtrQjttQixTO21CO21CLFk7a0I7aUI7Ozs7O2E7YTtjLFc7YyxXO2MsTztjLFc7Ozs7Ozs7Ozs7OzthLEs7YTtjLEs7Ozs7a0I7Ozs7Ozs7OzRDOztpQjs7OztjLFM7YyxXOzs7O2tCOzttQixpQjtvQjs7Ozt3Qjt3Qjs7Ozt1Qjs7Ozs7O3VCO3NCOztrQjtpQjs7Ozs7OztrQjs7O2tCOzsyQjsyQix3QjswQjtpQjs7Ozs7Ozs7ZSxNOzs7Ozs7O21CLDBCOzs7Ozs7cUI7c0I7c0IsTyx3QiwwQjs7O2dCLEs7Ozs7cUI7b0I7aUIsRzs7Ozs7Ozs7ZSxNOzs7Ozs7Ozs7YyxlOzs7Ozs7OztlLGE7Ozs4QjtlO2dCLGdCO2dCOzs7Ozs7Ozs7Z0IsZTtnQjs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPLHVCLE87TztPO08sSSxxQjs7Ozs7OztrQyx5QztVLE87Ozs7Ozs7TztPO087Tyx5QjtPO087UTs7Ozs7UTtPOzs7OztpQjs7OztPOzs7UTs7Ozs7Tzs7O08sTztRLE07TzsrQixPLDJCO1EsVztRLFc7Tzs7VTt1QztTO087OzZCLGdEO1EsTztROzJCLFk7USxXO087dUM7OztPOzs7Tzs7O1E7USxlO087UTtTLE87UyxVO1MsTztTLFU7Ozs7Ozs7O1M7Ozs7VSxPO1UsVztVLE87VSxXOzs7Ozs7Ozs7WTs7YTthOzs7WTs7OztTLE07O1EsTTs7Ozs7UTs7UyxzQjtTLFE7OEIsYztTLFc7UyxPO1Msb0I7UyxNO1M7UTs7Ozs7a0I7Ozs7OztPO1EsTTs7OzJCO1E7O1M7Uzs7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7USw2QixPO1E7UTtTLE87UyxjO1E7UTs7O087OzJCLFM7OztXLE87VTtROztROzs7OzthOzs7Ozs7Ozs7Ozs7Tzs7VSxXO1U7NkI7Uzs7Tzs7Ozs7O1UsTTs7Ozs7TztjO1E7OztZOztXO1csTztVO087UTs7UyxXOzs7WTthLFE7OztZO1ksSTs7Ozs7YTtjLFU7OzthO2E7O2dCO21DO2U7YTs7O1k7VztTLG9COzs7Ozs7UTs7OztZLEk7Ozs7O2E7cUMsb0IsYztjO2dCO2M7O2MsTTthOztpQyxZO2MsYztjOzs7O2dDOztrQixLO21CO2tCLEk7OztjO2EsTTs7OztZO1c7UyxzQjs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O29DLHVCO1E7VTtRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Tzs7VTt5QztTO087O3lCLGtEO1EsTztRO087Ozs7O2lCOzs7O087Ozs7UTtPO1E7O1M7UztRO1E7Ozs7Ozs7OztPO087O087OztRO1E7Tzs7Tzs7O1E7UTtRO087Ozs7O2lCOzs7O087Ozs7OztRO1E7OztrQzs7O1MsTTtROztTLE87UyxPO1MsVztTLHVCLGU7Ozs7Ozs7TyxJLG1EO087Ozs7O2lCOzs7OztPO08sSSxNLHlDO087TztPO1EsTztROztxQztPOzs7Ozs7Ozs7Ozs7UTtRO1MsVzs7OztTLFc7Ozs7UTtRO1E7UTtTO1UsTztVLE87VSxVO1M7UztTOzs7Ozs7UyxNOzs7UTtTO1MsTzs7Ozs7O3NDOzs7UTtTLFc7Ozs7UTtRO1E7UTtTLEs7UztTLG9CO1E7UTs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7WSxLOztZOzs7Ozs7UztpQjtvQjtVO1c7WSxPO21CO1c7WTtZO1ksSTs7Ozs7O1k7Ozs7O1U7VyxjO1c7Vzs7b0I7Ozs7Ozs7O1csTTs7OztTO1UsVzs7O1M7UyxJOzs7OztVOztXLFc7VSxNOzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OzBCO08sSTs7Ozs7Ozs7Ozs7O2MsSSxXOzs7OztlO2dCO2lELHFCO2dCO2tCO2UsTTs7O2M7ZSxROzs7Ozs7YyxJLFc7Ozs7O2U7Z0IsTztnQixROztnQjtlO2U7Ozs7YztlLFE7Ozs7Ozs7Ozs7O2EsSSxXOzs7OztjO2U7Z0QscUI7ZTtpQjtjLE07OzthO2MsUTtjLFc7NEI7Ozs7OztRLEksVTs7Ozs7O1M7VTtXLE87VyxXOzs7O1k7O3dCO2E7OztnQixhOzs7OzttQjs7Ozs7Ozs7Ozs7UyxNOztRLEk7OztRO1E7O08sZTs7Ozs7VztZLFE7WSxPO1ksTztXOzs7Ozs7WSxzQjs7OztxQjs7O3FCO3VCOzs7dUI7Ozs7O1E7O08sTTs7Tzs7USxXOzs7UTs7USxNOztPLHlCO087Ozs7O2lCOzs7O087OztRLFc7Ozs7O087USxNOztPO1E7O3NDO1EsVztvQjtRO087Ozs7O2lCOzs7Ozs7Ozs7Vzs0QixPLGdDO1csRztZLE07O1c7VTtPO087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2M7Ozs7OzJDO2E7Ozs7OzthO2M7Z0Qsc0I7YyxTO2EsTTs7OztTLFM7UTs7O08sTTs7Tzs7OztRLFE7TztPO1EsVTtRLFc7OztRO1EsTztPO087O1EsUTtRLE87USxPO1E7OztROztTO1c7Ozs7Ozs7O087Tzs7TztPO087Ozs7Ozs7OztPOzs7USxXOzs7UTtPOztPOztRO1E7Ozs7OzRGO3VCOztPOztPOztRLFE7USxhO087O1U7eUM7UztPLEksb0Q7Tzs7Ozs7aUI7Ozs7OzBCOztROztTLFE7UyxROzs7O1E7Uzs7OztRO1E7OztROztXLFc7Vzs4QjtVO087USxPO1EsVzs7Ozs7VztZOzs7WSxPO1k7Vzs7Ozs7OztZOytCO1k7YSxXOzs7O2E7YTs7WTtZO1k7O1k7OzthLE87Ozs7WTthOzs7YSxPOzs7Ozs7UTs7Ozs7Ozs7O08sTTs7Tzs7USxXOzs7Tzs7O087OztRO1U7YTthO087TztRLFM7USxVO1EsVzs7O1E7USxPOzs7VyxXO1csRywyQztXLFc7VztXLFk7Ozs7OzZCLE87OztXLE87VTtRLE07TztPO087Ozs7Ozs7OztPOztRLE87USxPO1EsVzs7OztXLE07O1cseUM7O1k7O2E7YSxPO29COzs7b0I7VztZLFc7OztZO1c7Ozs7O3FCOzs7O08sTTs7O087OztRLE87USxXOzs7UTtPO087Ozs7Ozs7MEI7Tzs7UTs7O1EsVTtRLFc7Ozs7O087O1E7OztTLFE7O1M7UztXOzs7OztTLFM7Ozs7O087USxpQjtRO1U7USxZO1EsYztRO1E7Ozs7Vzs7USxRO08sSTs7Ozs7USxNOzs7O1E7UTtRO1E7UTs7Tzs7OztXO1k7Ozs7Ozs7Ozs4QjtXO1k7OztZLFU7WSxTO1ksVTtZLFk7WTtjO1k7YztXLEk7Ozs7O1ksTTs7OztZO1k7WTtZOztXO1k7OztZO1c7WTthLE87YSxPO1k7Ozs7Ozs7WSxNOzs7VztXOztROzRCOzs7USxPO1EsUTtROzs7Ozs7Ozs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7O1c7O1ksTztZOztZLDBCO1k7Ozs7O3NCOzs7O1csTTs7Ozs7TyxNOzs7O0k7STtLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJO0c7O0k7O0ssTTtLOzs7Szs7Ozs7O3NCOzs7Uzs7VSxXO21COzs7Ozs7STtHOzs7Ozs7Ozs7SztNLFc7OztrRDtJLGE7STtLO00sTztNLFE7Ozs7OztLOzs7Ozs7Ozs7Ozs7SyxNOzs7SSxHO0ssUztLLEksNEI7Ozs7O08sTTs7Ozs7OztJO0s7SztLOztJO0s7Ozs7Ozs7Ozs7OztLLE87STtLO007OztNLHNCO00sTztNOzs7O0k7Z0I7Szs7STtLO0ssTztJOzs7OztjOzs7OztJLG1CO0k7O0s7Szs7SSx3Qjs7O007TSxNOzs7Ozs7Ozs7STtLLFM7Ozs7Szs7Ozs7Ozs7O0k7Rzs7O0k7a0Q7SSxhLDBCO0k7SyxROzs7O0k7SztLO0s7O0k7SztNLE87TSxPO0s7Ozs7OztLLE07OztJLGU7SSxhLDBCOzs7TSxNOztLLE07OztJO2lDO0s7O29DO0k7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7SztLO007TTtNO007TTtNO007OztPLE87TztNLHNCO007TTs7TTs7O08sTztPOzs7Ozs7OztRLE07O00sTTs7O0k7Ozs7O0s7TTs7O007Z0I7O0ssb0I7SyxPO0k7STs7OztTO1UsSztVLFE7Ozs7VSx3QixPO1U7O1M7UTtLLEc7TTtPLE87TztPLDJCLE8sNEI7Yzs7Ozs7OztJO0s7OztLO0s7Ozt1QjtJOztLO0s7Ozs7Ozs7Ozs7OztPO1E7UyxPO1MsVTs7Ozs7OztXLEs7Vzs7WSxzQjtZOzs7Ozs7Ozs7TztRO3NCOzs7d0I7Ozs7O0k7Ozs7OztLLE87Szs7SztLOzs7Ozs7Ozs7O2M7Ozs7STtLLFc7SyxPO0ssVTs7Ozs7Szs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7Uzs7MEI7Ozs7Ozs7UTtNOzs7O3dCLGtCLE8sNEI7TSxZO0s7YztLO007Ozs7Ozs7Ozs7O007Ozs7VTs7Ozs7O007TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7O0s7OztNO087TztPO00sTTs7Ozs7Ozs7O0k7SyxVOzs7OztLOzs7Ozs7Ozs7STs7Ozs7OztPLHVCOzs7Ozs7Ozs7OztJO087SyxXO0ssTTs7O2tEO0ksYSwwQjtJO0ssVTs7O0s7STtLO0s7Szs7O1E7UyxPOzs7UyxPO1E7O087SztLO0s7O0ksYzs7SyxNO0k7OztLOztLLHVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0ksVzs7SztLO0k7SSxXOztLOzs7Ozs7Ozs7SyxNOztJLE07OztJO0k7STtJO0ssSztLLEs7SyxPO0k7SztNLE87b0I7Ozs7SyxpQjtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7OztLLGtCO0s7O3VCLDBDO0s7O0k7STtJO0c7O0k7SztJLEksSyw2Qjs7SztLO0s7TSxVO00sTztNLE87TSxPO00sUTs7O007TSxPO0s7Szs7TSxRO007TTtROzs7O0s7SztJO0k7SyxROzs7SztLO0s7SyxPO0sscUI7O0s7SztLO0s7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7O3lCLGtCLFM7STtLLFc7SztPO0k7Szs7O1MsVztTLFc7UyxZOzs7aUI7VztZLE87OztlLGtCLFE7O2dCLE07ZTtjO1c7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7O087Ozs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O0ksa0I7SSx3QjtJO0ssTTtLO0k7STs7Szt3QjtLO0ssa0I7SztLO0s7SztNO007TSxNO00sVTtNLFE7OzBCOztNO007TTs7O08sTzs7Ozs7SztLO007TTs7O1U7dUY7VTtTO0s7Ozs7Ozs7YTtJO0ksdUI7eUIsMEIsaUI7SSxXO3lCLDhCLHFCO0k7eUI7Ozs7TTtPLGtCOztrQjs7O0s7TSw4QixXOzs7O0ksZTs7O007TTtLO0ssTztJO0k7SSxHO0s7TSxzQjtNLE87SztLOzs7cUIsTyxpQjtJOztLLFc7O0s7SyxPOzs7aUIsVztpQixPO2dCOztJO0k7STtJOztLO0ssTztJO0k7STtLO2E7SyxXO3VCOztLOzs7Ozs7Ozs7TTt3QjtNLHVCLGU7TTs7MEIsZTs7TSxxQyxPO00sc0I7SztLLGdCOzs7O3lCOzs7OztLOzs7Ozs7OztLOzs7Ozs7OztLOzs7O0k7SSxZO3VCO0k7STtLO00sTztxQjs7OztLO007O1MsWTs7Uzs7OztTOzs7OztVLFE7OztVLE07UyxtQjtTO1E7TSxPOzs7Ozs7OzthLE07Ozs7Ozs7O007OztPO087OztXOztZOzs7O2E7YSxPOzs7Z0I7OztpQixPO2lCLG9COztlOztpQjthOztlO29COzs7MkM7OzthO2M7Ozs7a0I7O2MsTztjLFE7YyxPOzs7YyxPO2E7Ozs7OztZOztXO1U7TSxPLFc7SztLO2lCLDBCO0s7SztpQjtLO0ssTztJO0k7SyxrQyx1Qjs7Szs7SztLLG9DOztJOzs7O0k7Ozs2QixlO0k7OztvQyxlO0k7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7O0s7STtJLFk7eUIsTyw0QjtJLG1CO0k7SSxJOzs7O007O0s7SyxPOztJO0ssVztLLE07SyxPOztLLHFDLE87SyxzQjtJO0k7SyxVO0s7SyxRO3dCO0k7SyxhOztJOzs7O1MsWTs7OztXOzs7OztZLE87Ozs7OztTO1E7Szs7O0s7SztnQjs7OztJO0k7O0s7Szs7OztTO1M7OztVLE87UztRO21COzs7O3FCLE8saUI7STtJO0sscUI7aUU7Szs7STs7WTs7TSxNOzs7OztTLHNCLE87UyxPOzttQjtRO2dCOzs7O0ksSSx1Qjs7O007TyxPO08sTztNOzs7TztRLE87USxPO087Ozs7Ozs7TTtLO0ssTztJO0k7O087OztNLGlDO007TztPO08sTzs7TztRLEs7USxPO1E7USxPO087Ozs7dUI7Z0M7O1E7O1c7O1c7O1ksTztXLE87VTs7UTs7Ozs7OztRLFc7UTs7OztPO08sTztNO007TTtLO0ssTztJO0k7cUI7O0s7Ozs7O0s7SyxZOzs7eUI7TTtPLFU7Ozs7TztPOztNOzs7VTs7O1M7TyxRO007OztNOzs7SztLLFU7SztJO0k7O087Ozs7SztNLFE7OztNLHVCLE8seUM7Szs7O0s7SztJO0ksVzs7Szs7TTtNO007SztLLE87STtJOztLOzs7O00sTztLO0k7SSxZO0k7O0ssb0I7SztJO0k7STs7SztLOztLLHlCO0s7O0k7STtJLFE7O0s7SztJO0ksVTtJOzs7O1Msb0I7Ozs7YTs7Z0Q7O1MsTTtRO0s7OztLO3FDOzs7TTtvRDtNO0s7SyxlOztJO0k7STs7O0k7STs7O0ssdUIsZTtLOzt5QixlOzs7Ozs7Ozs7STtHOztJO0s7OztJO0c7O0k7STtJO0k7SSx5QjtJOzs7Szs7TTthO0s7O0k7Rzs7O0ssTztJO0ksTztHOzs7STtLLGtCOztLO0k7SSxPO0c7O0ksWTtJLG1CLFE7Ozs7OzRDOzs7Ozt5Qjs7Ozs7eUI7Ozs7O3lCOzs7O0s7O1E7O1c7OzthOzs7ZTs7O00sVzs7Szs7STs7O0ksVzs7O0ssTztJO0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7O0k7O0s7Ozs7Ozs7O0k7SSxPO0c7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPOztnQjs7O087OztROzs7Ozs7Ozs7Ozs7OztPOzt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixXO2lCLE87Z0I7Ozs7TyxPOzs7Ozs7OztXLFc7VztXLFc7Vyx1QjtVO08sTzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OztPO1E7d0IsTywwQzs7d0IsTywwQztPOzs7Ozs7O2tCOzs7OztPLG9CLFU7O1EsTzs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROzs7WSxXO1ksTztXO1csTztVO08sTzs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1k7WSxHO2E7Ozs7Ozs7O2E7OztjLE87Yzs7aUI7O2E7Ozs7Ozs7Ozs7Ozs7WTtXO1csTztVO08sTzs7Tzs7Ozs7USxZO1EsUztROzs7O1ksTzs7Vzs7WSxPOzs7Ozs7OztXOztZLE87Ozs7Ozs7O1c7VyxPOztVO08sTzs7O08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7Ozs7Ozs7O1k7Z0M7O1k7VztXLE87VTtPLE87Ozs7Ozs7O1c7VztVO08sTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7Ozs7O1csTzs7VTtPLE87OztPLE87Ozs7Ozs7Ozs7WSxPO1c7O1k7YSxXO2EsTztZLE87VztXOztxQjs7Ozs7Ozs7VTtPLE87O087OztROztXOztPLE87OztPOzs7UTs7Vzs7TyxPOzs7Tzs7Ozs7UTs7VywwQjtXO1ksTzs7VyxPOzs7Ozs7O087UTs7UTtROztXOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7O08sTzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87Z0I7Ozs7TyxPOzs7Tzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1ksTzt5QjtXO1MsVTs7Ozs7UyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Vzs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O3lCLDJCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7STtHOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJLG9COztJO0ssTztLLE87SyxPO0ksVztHO3FCLHNDLFk7OztJO0ssUTs7OztLLE07Ozs7Ozs7a0I7Rzs7STtJLE87Rzs7SSxXO0k7Rzs7SSxXO0k7SyxRO0ssUTtJLHVCO0ksTTs7Rzs7STtJOzs7TTs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxPO0ksTztHO0c7OzsrQiw2QztLOzs7UTs7O1MsVTs7O1EsRztTLE07O1E7UyxVOzs7UyxPO1E7USxXO1c7UztVLE87VSxPO1MsTTs7O1E7OztZLEksTSx5QztZLEksc0M7Ozs7OzthLE07OztXO1MsTztTO1E7UTs7UTs7Ozs7UyxPO1E7UTtTLFc7UztRLEk7Ozs7VSxNOzs7O1E7OztZOztrQyw4Qjs7bUMsYSxrQjtjLE87YTthOzs7O2dCOzswQjswQjswQjswQjt5Qjs7Ozs7Ozs7Z0I7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7Ozs7O2dCOzswQjsyQixNOzJCOzs7OzJCOzs0QixjOzJCOzJCOzRCLE07NEI7NEI7OzsrQixJLE0scUM7K0IsSTs7Ozs7O2dDLE07Ozs7Ozs4Qjs7Z0M7MkI7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7OztnQjs7MEI7MkI7OzswQjt5Qjs7O2dCO2dCOzs7Z0IsTTsyQzs7OztZLE87VztTLFM7UTtRLEkscUM7UTs7UTs7OztTLE07UztTO1c7Yzs7UztTO1E7OztRLE07bUM7O1E7OztTLFU7OztTO1E7O0k7SSxPO0c7O0k7STtLO0ssTzs7Ozs7OztJOztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7Szs7Szs7OztNLE87TTtNO0s7STtJO0ssVTs7O0ksSTs7OztNLE07Ozs7STtLO0s7SztLO0s7Szs7Ozs7Ozs7Ozs7SztNOzs7Ozs7Ozs7TztPO007TyxPO007TTs7OztTOzttQjs7O21CO21CO21CO29CLGM7b0IscUI7b0Isb0I7b0I7c0I7b0I7c0I7bUI7OzsrQzs7OzJCO3FCOzt1QztxQjs7MkI7cUI7NEM7cUI7Ozs7b0I7cUIsTztxQixjO29CO3FCLE07OzttQjtvQjtzQjtvQjtzQjtvQjs7O29COzs7OztxQjtxQjtxQixLO3FCO3FCLFM7b0I7bUI7bUI7b0IsVTs7Ozs7OztvQixzQjttQjttQjs7c0I7O29COztxQjtxQjs7Ozs7Ozs7O21CO29COzs7Ozs7Ozs7b0I7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztvQixtQjtvQjtxQixNO3FCOztxQjtxQjs7b0I7Ozs7eUIsVzs7Ozs7c0I7O3VCO3VCO3VCLEs7dUIsUzs7Ozs7Ozs7Ozs7Ozs7O29CO3FCOzs7Ozs7Ozs7cUI7b0I7Ozs7Ozs7OzttQjs7O1M7O21CLEc7b0IsTTs7Ozs7OzttQixHOztxQjs7O29CLE07Ozs7Ozs7c0M7bUI7aUM7O29CO29COzttQjs7Ozt3QixXOzs7OztxQjs7c0I7c0I7c0IsSztzQixTOzs7Ozs7Ozs7Ozs7Ozs7bUI7b0I7Ozs7Ozs7Ozs7b0I7b0I7c0I7b0I7c0I7bUI7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1U7O29CO3FCLFE7cUIsTTtxQjtvQjtvQjtxQjtxQjtvQjs7Ozs7Ozs7O21COzs7Uzs7bUIsRztvQixNOzs7bUIsRzs7cUI7OztvQixNOzs7Ozs7Ozs7dUI7O21COzs7b0I7cUI7O3NCLFE7c0IsTTs7OzhCO29COzs7cUIsYzs7Ozs7eUI7MEIsTzswQixPO3lCO3lCLFc7eUI7Ozt5Qjs7O2tDOzBCLE07eUI7Ozs7OztxQixNOzs7Ozs7OztxQixNOzs7Ozs7OztvQjtxQjtxQixnQjtxQjs7Ozs7Ozs7O3FCO3FCO3VCO3FCO3VCO29COzs7Ozs7Ozs7O21CLE07O2tCOzs7Uzs7bUI7b0I7OztvQjtvQjttQjs7Ozs7Ozs7O2tCOzs7Uzs7bUI7b0I7b0IsZ0I7b0I7b0I7bUI7Ozs7Ozs7OztrQjs7O1M7UztVO1U7Uzs7Ozs7Ozs7Ozs7UyxNO29DOzs7O0ssTztJO0k7SyxNO0s7SyxTOztJO0k7OztLLFc7SyxPO0k7SSxZO3dCO0ssTTs7STs7O0s7Ozs7Ozs7O3VCLGU7dUIsZTtNO00sTztNOzs7Ozs7UztLLE87STtJO0ssWTtLOztLO0s7O1E7Ozs7Ozs7Ozs7WTtZOztXO1M7VztRO1M7Ozs7O2E7YSxPO1k7VSxRO1UsSztVO1Usb0IsZTtVO1UsTztVLGlDO3NCOzs7O1E7Uzs7OztROzs7Ozs7OztTOzs7OztTO1M7Ozs7UTs7Ozs7Ozs7O1M7Ozs7O1M7Uzs7OztROzs7Ozs7UztTOzs7Ozs7Ozs7Ozs7OztZO2EsSzthO2EsTzthLFk7WTtZOztlO1k7WTthO2E7WTtXO2lCOzs7UTs7Ozs7Uzs7Ozs7Ozs7Ozs7WTtZO2EsWTthO2E7ZTthLFk7YSxPO1k7WTtZO1c7aUI7OztROzs7O1M7Ozs7SztJO0k7ZTtLLFc7STs7Ozs7STs7OztLO0k7SSxPO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPOzt3QixPLDRDO1EsTTtRLFU7OztRLFM7USxPO087TyxXO1U7UTtTLE87UyxPO1EsTTs7Ozs7O1c7VztZLFc7WTs7Ozs7O1ksTTs7O1U7TztPO087UTtROzs7O087Ozs7Ozs7O087O1E7OztPOzs7O1E7Ozs7UztTLE87UyxPO29CO1MsTztTLE87UyxPO1Msa0I7UyxPO1MsTztTLGE7UyxPO1MsTztTLFM7UztlO1MsTztTLE87UyxPO1M7VztROzs7MEI7TztRLFU7Ozs7OztRO1E7Ozs7WSxPOztROztPOzs7Vzs7O1k7WSxLO1ksTzs7WSxXO1c7Ozs4Qjs7Ozs7O1U7USxPO1EsTztRLFE7UTtVOzs7Ozs7O087Tzs7O087TyxXO087Ozs7OztVOzs7Ozs7Ozs7Ozs7OztPLFM7Tzs7O1EsYztPOzs7Ozs7Ozs7TztRLE07MEI7Tzs7O1E7UTs7Ozs7OztROzs7UyxHOzs7VSxJOztRO1MsTztTLE87O1M7aUMseUM7VSxPO1M7VTs4Qix1QjtXLE87VTtXO1ksc0I7WSxPO1ksVztXOzs7Ozs7Ozs7Ozs7OztvQjs7Ozs7Ozs7Ozs7UTs7Ozs7UztTO1UsTztVLFc7Ozs7Yzs7ZSxpQjtnQjtpQixPO2lCLFE7aUIsTTt3Qjs7OzBCOztjO2E7Ozs7Ozs7YyxXO2E7Ozs7Ozs7VyxNOzs7Ozs7O2Usd0I7Ozs7OztpQjtrQjtrQixPLHdCLDBCOzs7WSxLOzs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7OztZO1k7VztTLFE7UyxTO1E7OztPO1EsTTs7TyxNOzs7Tzs7OztRLFU7OztRO1EsTzs7O1c7Ozs7WTtZLEs7VztXO1ksTzs7WSxXO1k7O3lCOzs7Ozs7VztXO1c7WTtZLE87WSxPO1c7O21CO1U7USxXOzs7UTs7MEI7Tzs7Ozs7Ozs7O087TztRLFU7UTtPO087TztRLFk7UTtPO087TztPLG9CLE87TztPLHNCLE87TztPLFk7O1EsTTs7TztROzs7O1EsTztRLE87TztPOzs7Ozs7Ozs7TyxNO2tDOztPOzs7UTtRO1U7Ozs7VTtROztPOzs7RztJLE07SSxhOztJO0k7Ozs7UTs7O1M7VztjO2M7UztTO1EsTzs7Ozs7Z0IsTzs7O0c7O0k7dUIsTztJOzs7SztPO1U7VTtLO0s7SSxPO0c7O0ksSSxpQjs7Ozs7c0I7TTs7Ozs7STtLLE87SyxLOztLLE87SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7O0k7STs7O0ssSSxlLHdDOzs7O08sTTs7OztJLGdCO3lCLG9CLGM7STtLLFM7SztJOztLO00sUTtNLE87Ozs7OztLLE07O0kscUMsTztJO0ksVztJO0k7STtLLFE7OztLLFM7SyxNO0ssTztJO0k7SyxXO0s7Ozs7O0s7OzZCO0ssTTs7SSxTO0ksSTs7OztLLDJCO0ssTTs7SSxXO0k7STtLLFU7OztLLE87STtLLFc7Szs7Ozs7SztNLE87TSxtQjtLLE07O0ksSTs7OztLLGU7SyxNOzs7STtLO00sTztNO0s7Ozs7OztLLE07OztJO0ssTztLLGU7Szs7O0s7OztROzs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7OztLOzs7UTs7Ozs7Ozs7O3dCO0s7O0ssVTtLOzs7SyxPO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0ssTztLLFU7OztJO0k7SyxVO0s7OztLLE87Szs7Ozs7OztROzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxPO00sTztNLE87TSxPO00sTztNLE87Szs7YTs7Ozs7STtJLFk7STtJO0k7Szs7Ozs7Ozs7O00sUTtNOzs7O007Ozs7d0I7SyxrQjs7TTtNOztLO00sZ0I7TTs7OztNOztNO3VCO007UTs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTzs7STtLLFU7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7OztNLE07OztLO0s7SztLO0s7SztLO0ssRztNLE07O0s7TSxPO00sUTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7TTs7eUIsTyx3Qzt5QixPLDJDO0ssTTs7O0k7SyxRO0ssUTtJLEksYzs7Ozs7O0ssTTs7SSxZO0k7Ozs7Ozs7Ozs7O007TyxPO2M7OztLO00sTztNLE87TSxPO00sTztNLE87SyxPOztJLFk7STs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxrQjs7Tzs7O1EsVTs7O1EsVTs7O1EsTztPO08sSTs7Ozs7USxNOzs7YztRLE07Ozs7TSxNOztLOzs7Ozs7Ozs7Ozs7OztJLFk7STtHO0c7O0k7STtLLGE7Szs7Uzs7Ozs7O0k7STtHOztJO0ssYTtLO0k7STtHOztJO0s7OztzQiw2QjtJO0ssTztLLFU7OztJO0k7Rzs7STtHOztJO0s7Ozs7Szs7Ozs7Ozs7O0k7SSxXO0c7O0k7STs7Szs7Uzs7Ozs7Ozs7STtJLFk7STtHOzs7STtLLE87SyxPO0ssTztJO0c7O0k7bUI7O0c7O0k7O087O087ZTs7Rzs7STtLLE87Ozs7Tzs7NkIsTyx5Qzs2QixPLHlDO087TyxPOztPOzs7O1EscUIsTyx5Qzs7O1csTztVO08sTzs7O08sTzs7O08sTzs7TyxPOzs7Ozs7UTtTLE87Z0I7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7TyxPOzs7TztPO1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7USxxQixPLHlDOzt3QixPLDRDO08sTzs7Tzs7OztRO1E7Ozs7USxPO1E7VTs7TyxPOzs7Ozs7Ozs7O087OztRO1E7VTs7TyxPOzs7TyxPOzs7Ozs7Ozs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7TztPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Tzs7O1E7O1c7Ozs7O1ksbUI7VztXO1c7WSxPOztZLE87VyxPOzs7Ozs7Ozs7O08sTzs7O087OztRLE87TyxPOzs7TyxPOztPOzs7Ozs7VztZLE87Vzs7WSxPO1c7VyxPO1U7USxPO08sTzs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7Ozs7O08sTzs7OztRLE87OztPLE87OztPLE87OztPLE87Ozs7eUIsMEI7SSxPO0c7O0k7Szs7OztNLDRCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3dCLHNCOztpQztlLE07O0c7O0ksWTs7OzBCOzs7TyxNO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07O08sTTs7Rzs7STtLLE87SztPOzZDO0ksUztJO0ksTTtHOztJOztLO00sUztNLE87SztLLFU7SztJO0k7O00sVztNLE87SztLLE87STtJO0ssTztLLFE7OztLOzs7TyxLO1E7Uzs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7SSxPOztHOzs7SztJO0k7SyxROzs7SztJO0c7Rzs7OztRLE07Tzs7d0I7SSxpQjs7Szs7O00sTzs7TSxXO00sTztLO0ssTztJO0ksTztHOztJO0ssVztLO0ssTTs7Szs7TSxtQjtNLFE7Ozs7O0k7SyxZO0ssUztLLE87SyxPO0ssUTtJOzs7Yzs7O0ksWTtJO0ksTzs7O0k7STs7O1E7Ozs7O1E7UTtRLE87O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7OztJO0c7O0k7SztLOzs7Ozs7O0ssaUIsTztLLHVDO0s7O007Ozs7Ozs7Ozs7Ozs7O1UsTzs7OztLOzs7STs7Ozs7Ozs7Ozs7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7Ozs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7OzRCLFM7STs7Ozs7Ozs7Ozs7Ozs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEcsa0I7UTs7TTs7Tzs7OztJOzs7O007TTtLO0s7Szs7Ozs7Ozs7Ozs7O1k7Ozs7OztnQixrQjttQjthO2MsUTtjLE87YyxPOzs7YyxPO2M7Ozs7Ozs7aUI7Ozs7Ozs7O2lCOzs7O2tCLE87a0IsTztrQixPO2lCLE87Z0I7YyxPO2M7Ozs7cUMsTywyQjtjOztpQjs7Ozs7Ozs7Ozs7Ozs7YyxPO2MsUztjO2dCO2MsWTtjO2dCOzs7Ozs7OztjO2M7Ozs7YTs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7O2M7YztnQjs7OzthOzs7Ozs7Ozs7OztTLEcsa0I7VTtXLFU7VzthOztXOztXOzs7O1csVztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlO2UsUTtlO2UsVTtjO2M7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlLGdCO2M7OztjOzs7OztTLEcsa0I7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7OztVLEcsa0I7VztZLFk7WTs7O1k7OztXO1k7YSxPO2EsTzthO1k7Ozs7O1c7Ozs7Vzs7Ozs7O0s7OztLO007O0ssWTs7TSxNOzs7SztJO0k7SztNLFE7TTs7O0s7Ozs7O087UTs7O1EsVTs7USxNO087OztROztRLE07Ozs7O1k7Ozs7dUI7c0I7c0IsVzs7O3VCOzs7Ozs7Ozs7d0I7eUIsYzt5QixVO3lCLFE7Ozs7MEI7OzJCOzZCOzs7OzJCLE07Ozs7Ozs7Ozs7Ozt3QixNOzs7OztzQjtxQjtXOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7O2tCO2lCO2MsRztlO2dCOzs7Ozs7Ozs7O2UsTTs7OztZLE87Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7UTtTLE07Ozs7Ozs7O1c7OztZLE87YztXOzs7OztnQixrQjs7Ozs7O2tCLEcsMkI7Ozs7O2dCLE07ZTtZOzs7Ozs7Ozs7Ozs7Ozs7O1MsSSxjOzs7O1csTTs7Ozs7OzthLE87WTs7O1M7VSxPOztTO1UsTTs7Ozs7YSxPO1k7O1E7UyxNO1M7VztnQjs7O1E7O1MsUTtTOzs2QixPLHlDO1MsUTtnQjs7O1E7O1MscUIsTyxvQztTLFE7UyxRO2dCOzs7O0s7O0s7Szs7Ozs7O0ssTTs7Ozs7SSxZO0k7OztLLE87SyxPO0ksVztHOztJLFk7STs7O0s7SyxPO0ssTztJLFc7Rzs7SSxZO0ksa0MsTztJLEs7SztJO0ksVztHOztJLFc7STs7O0ssTztLLE87SSxXO0c7O0k7OztPOztRLE87Tzs7MkI7Ozs7UTs7O1M7Uzs7Uzs7VSxPO1UsUTtVLFU7Ozs7Ozs7Ozs7TztPOztPOzs7UTs7O1c7OztjO2M7OztjO2M7c0I7O1U7TztPOzs7O2M7Tzs7O08sTTtrQzs7Tzs7USxTO087O0c7O0k7STtHOztJO0k7aUI7SyxzQzs7O1E7OztTLFE7UztROzs7a0I7a0I7aUI7Ozs7Ozs7O1M7VSxRO1U7O1UsTztVLFU7OztTOzs7OztROztTLFU7Z0I7OztXOzs7Ozs7UTs7UyxVOzs7WTs7YTthLFc7WTtZLE87VztTLFU7OztZO1ksTztXO1MsVztTO1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7Ozs7UTs7UztTO1MsVTtTO1MsVTs7O1M7USxPOzs7UTs7UyxVO1M7UztTOzs7Yzs7Ozs7YTs7O1EsTzs7OztHOztJO0ksb0I7SSxXO0c7O0k7SztLLE87SyxPO0ssTztLLE87SyxPO0ssTztJOzthOzs7Ozs7OztHOztJOzs7O087Ozs7Ozs7O3lCOzs7Ozt5Qjt5Qjs7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUTtnQixPOzs7SyxNOzs7STtJLEksdUI7O0s7TTs7Ozs7O0k7SSxPO0c7O0k7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJOzswQjs7NEI7OzRCOzs0Qjs7NEI7OzRCO29DOztHOztJLFc7STtLO00sTztNLE07eUI7SyxZOztNOzs7OztNO0s7SyxPOztJLE87Rzs7STs7SztLLE87STtJLG9COztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGdEOzs7O2E7TztRLG9CLGU7USxPOzRCLGU7USxRO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOzs7SyxtQjs7O1E7O1M7UTs7USxvQjtROzs7O1M7OztVOzs7VTs7VyxRO1csTztXLE87VztXLFU7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7O1M7UztTOztTO1M7Ozs7Ozs7Ozs7OztlOzs7Z0IsVTs7Ozs7OztlOzs7Z0I7Ozs7O2U7OztnQjs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Z0I7Ozs7WTthOzs7WTs7UyxVOzs7UyxVO1M7UyxPO1E7MkI7Ozs7OztROztTLFE7UyxVOzs7UTs7O1EsTTttQzs7UTs7UztTLE87UTs7STtJLE87Rzs7STtLOzs7O0ssTztJO0c7O0k7O0ssUztLLGdDLGU7OztROztTLFU7OztRO1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7Ozs7WTtZO2EsTzthLFc7O1c7UTtRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7OztZOzs7Ozs7OzthLE07O1k7YSxNO1k7O2EsTzthLFE7YTtZOztXO1E7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7OztZOztXO1E7UTtTOzs7O1M7OytCLGtDOzs7UTs7Ozs7UTs7UyxVOzs7UztRO1E7UTtTOzs7O1M7UTs7UTs7UyxRO2dDLG1DO1MsTzs7UyxPO1MsTztTOzs7Uzs7VSxXOzs7Uzs7Ozs7UTtRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7UTtTOzs7O1E7Ozs7Ozs7Ozs7UTs7Uzs7Ozs7WSxtQzt3Qjs7WTtXO1MsVTs7O1k7WTs7VztRO1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O2dDLG1CLFU7UTs7O3VCOzs7OztROztTOzs7O1E7UTtRO1M7Ozs7UztROztROztTOzs7O1M7O1MsTTtROztTO1MsUTtTOzs7O1E7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztnQyxpQztTLFM7UztTLFU7UztTLFc7Ozs7O1M7MEI7UTtRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7OzthOzs7UyxPOytCLGdCO1M7O3VCOztROztROztTLFc7Ozs7O1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7YTs7O1MsTzsrQixlO1M7OzttQjs7UTs7O1E7UTtTOzs7O1E7Ozs7OztRLE07bUM7Ozs7SSwyQjs7SztNLG1COzs7O007TTtLO0s7STtJLE87Rzs7O0s7Ozs7O00sTztLLG9CO0s7TSxPO00sTztNLE87c0IsWTtLO007O1M7Ozs7TSxRO00sUTs7O007SztJO0ksTztHOzs7O007O087TyxPO007TSxPO0s7SyxPO0k7OztNOzJCLHFDO007TyxPO087TTtLO0ssTztJO0k7O007MkIsbUIsbUI7TSxPO0s7SyxPO0k7SSxZOztLLG9CLE87SyxPO0k7SSxVOzs7TSxXO00sTztLO0ssTztJO0ksaUI7O0s7TSxPO00sUzs7OzswQiw2QjtLLGE7dUIsZSxrQztLLGU7SztJO0k7SyxPO0s7eUIsOEI7SSxJLE8sK0I7STtJLEksK0I7STs7Szs7Ozs7TTs7O3lCO0s7OztTOzs7Ozs7eUI7SyxXO0s7STtJLGE7STtHO0c7O0k7STs7OzswQjs7OztTO1M7Ozs7OztLLE07O0c7O0ksSSxzQzs7OzZCOzs7Rzs7Ozs7O1E7O1E7O1MsUTtTOztZOzs7ZSxPOztrQzt1Qjs7O1EsTzs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7O2dCOzs7O0k7Szs7USxzQixPO1E7UyxNOztROztRLHNCO1E7UyxNOztRO2dCOzs7SSxPO0c7b0IsZTtHLHVCOztJOztLLE87O0k7Rzs7SSxrQjtJLFk7Ozs7TyxNOzs7Ozs7Vzs7OztlOzs7O2dCLFc7ZSxHO2dCO2lCLFc7aUIsSztnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7O2U7O2tCO2tCO2lDOzs7Ozs7cUIsRyxxQjtzQjs7Ozs7aUI7Ozs7ZTtlOzs7Ozs7Yzs7VztVO08sVztlLE07O0c7OztLLGdDLE87SyxXO0k7STs7OzJCO0ksTztHOzs7O007bUI7SztLLFc7SztJO1EsSSx1Qjs7Ozs7cUQ7Ozs7Ozs7SyxJLFU7Ozs7OztpQzs7STtHOzs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtvQjtnQjs7STtHOztJOztLO0k7SSxPO0c7Ozs7O087O1EsTztRO1EsZ0I7USxROzs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7OztPOzs7UTs7O1M7OztTO1M7Ozs7O1k7Ozs7Uzs7OztPOzs7O1k7O1c7d0I7OztPO1E7OztRO1E7O1c7OztZLGM7Ozs7Ozs7Z0IsTTs7Ozs7cUI7O2U7Z0IsTTs7ZSxXO2U7Ozs7Ozs7Ozs7Ozs7YztlOztrQjs7Ozs7Ozs7Ozs7O2U7Z0I7a0I7Z0I7ZSxNOzs7Yzs7ZSx1QixRO2U7Ozt5Qjs7OzsyQjs7OztnQjs7aUI7bUI7Z0I7Ozs7O2dCO2lCO2tCLE87Ozs7Ozs7O2lCO2lCLE07Ozs7Ozs7O2dCO2lCOztvQjs7Ozs7OztpQjs7OztpQjs7OztjOztjLFc7Yzs7Ozs7Ozs7OztjLE07OztjO2UsTztlO2MsTTs7OztPLE87O087OztROzs7UTtROzs7OztPOzs7OzswQjtPLFU7O1E7UTs7TztRLE87USxVOzs7O1csTTs7Ozs7Ozs7ZTs0QjtjO1csRztZLE07Ozs7OztxQjs7b0I7VztZO1ksb0I7VztZLE07Vzs7OztPLE07Ozs7TyxNO2tDOzs7OztLOztNOztPOzs7TztPO007O0s7TTs7O00sUTtNO00sVTs7Ozs7Ozs7SyxvQjtLOztNOzsyQzs7O1M7OztTOzs7Uzs7O1M7OztTOzs7Uzs7SztLO00sTztNO0s7STtJLE87Rzs7STtJOzs7Szs7UTs7OzsyQixPLHVDO1MsTztROztROzs7UyxROzs7MkI7UTtTLE87Uzs7O1k7Ozs7O1k7WSxTO1k7WTs7b0I7VztTLFU7OztROztnQjs7OztROztTLFU7OztRO1E7UTtnQjtROzs7Ozs7UTs7O1MsVTs7OzZCLDBDO1E7UTs7Uzs7O2dDLG9DOzs7OztZO2EsTTtZOzs7YSxPO1ksTzs7dUI7OztXO1MsYzs7Ozs7O2E7OztjLGM7YyxTO2EsTztZO2lCOzs7UTs7UTs7UyxVOzs7Uzs7O1k7WTs7VztTO1c7O1E7OztvQyxrQzs7Ozs7O1E7O1MsVTs7O1M7UTtRO1E7O1c7O1E7Ozs7OztROzs7Ozs7UyxjO1MsVTs7O1k7Ozs7Ozs7Ozs7OztZO1c7UyxVOzs7O1MsTztTLFM7Uzs7Ozs7O1MsYTtRO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7OztZOzthLE07Ozs7Ozs7O1k7VztTLFU7OztZOzs7OztZO1c7Uzs7cUI7Ozs7O1ksbUI7WSxvQjtZLE87VztRO1E7OztZOzs7Ozs7Ozs7O2E7Ozs7c0I7OztZO1k7YSxVOzs7YTtZO1c7UyxjOzs7WTs7Ozs7OztZLGE7WSxvQjtZLE87VztTLFc7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7VTs7O2M7Ozs7Ozs7Ozs7ZSxhO2U7O2M7ZTs7a0I7Ozs7Ozs7Ozs7Ozs7O2UsTTs7O2M7OztlOzs7Ozs7O2U7Yzs7VzthOzs7Yzs7OztlO2dDLCtCO2MsTzthO1csTTs7O2M7Ozs7O2M7YyxPO2E7VyxjOztXOzs7Z0I7Z0I7ZTs7O2tDLG1CLFU7VTtzQjs7Ozs7Uzs7O2M7ZTs7Z0IsVztnQixlO2U7ZSxVO2UsbUM7OztVLFk7OztjO2U7ZSxVO2U7Ozs7Z0I7Ozs7ZSxPOzRFOzs7VSxRO1U7OzthO2EsVTs7YSxPO1k7VSxNOzs7Ozs7Ozs7UTs7Uzs7OztRO1E7UTs7UyxNO1E7O1E7O1M7Ozs7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTtZO1k7O2E7WTtZO2E7Ozs7VztTLGM7O1M7OztjOzs7Ozs7O2E7OztTLE87OEIsNkI7UTtxQjs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O2E7WTtZO2E7OztXO1MsYzs7Uzs7O2M7Ozs7O2E7OztTLE87NkIsZ0M7UTtxQjs7Ozs7UTs7Uzs7O1k7VztTLFc7OztTLFU7UztTO1c7Ozs7O1Msc0I7UTtRO1E7OztRO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7Rzs7STtJO0c7O0c7STs7O0c7STs7RyxJO0c7STs7O0ksTztHOztJOzs4QixPOzs7Tzs7OzhCOzs7bUI7OztlOztHOztJO0s7Szs7Szs7TSxVOzs7Ozs7SSxVO0k7SyxNO0k7Rzs7STs7MEI7OztPO2UsTTs7Rzs7STtJO0ssVTs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7OztPO1E7USxVOzs7UTs7O1c7O2M7O2U7O2UsTztlLFU7Yzs7Yzs7ZTs7ZSxPO2U7aUI7YztzQjs7VTtRLFE7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNO08sMkI7Ozs7SztNOzs7UztTLEk7OztpQzs7O1MsSSxXOzs7aUM7Ozt5QjtTLFE7UztRO00sTzs7Ozs7O0k7Ozs7SztLO007TyxPO08sTztNOzs7OztPLE07Ozs7STtJO0k7SyxPO0ssTzs7SztJO0s7aUI7Ozs7OztLLE07OztJOzs7STtHOztJO0c7O0k7Rzs7Ozs7O0k7Szs7Ozs7Ozs7SSxlO0ksTztHOzs7STs7SztLO3dCO0s7TTs7Ozs7O00sTztNLE87TSxVO007O007TTtPLFU7OztVLFc7VSxPOzs7Ozs7UztNO007TTs7Szs7TSxPO00sYTtLLDZCO00sVztNO007TztTOzs7Ozs7Ozs7OztNO007TTtNLGM7O087USxTO1EsTztRLE07UTtRLE87Tzs7Ozs7Ozs7O087O007Ozs7OztNO087USxPO1EsTzs7Ozs7O087TyxNOzs7Z0I7Ozs7O0s7TSxTO007UTs7Ozs7Ozs7Ozs7SztLO00sVTtNO00sTztLOzs7Ozs7Ozs7SztLOztJOzs7O1M7VSxPO1UsYTtVLE87Uzs7Ozs7Ozs7O1M7UTtJLE87Rzs7O0ksVztJLE87Ozs7Ozs7OztHO3FDLGtDOzs7SztNLE87TSxPO00sVTtNLE87TSxLO00sTztNLGtCOztNLE07O0ssVztLLG9CO0k7SSxZO0k7O0s7OztNLFE7TSxRO0s7STtJO0ssaUI7Szs7SztLLE87STtJLFk7O0s7OztNLE87TSxPO00sTztNO0s7STtJO0ssSztLLFM7SyxPO0ssVzs7O0s7O00sSztNLE87SyxPO0k7STtLLE87SyxRLFc7SyxVO0ksRztZO007TSxNOzs7ZTs7Ozs7SztNLFM7O1E7Ozs7Ozs7Ozs7TSxPO0s7Ozs7Ozs7OztLOzt3QjtJO0ssYTtLLE87O0s7SyxXO0k7SSxjOztLO00sTztNO1E7O007TSxPO0s7Ozs7Ozs7Ozs7STtHOztJOzs7USxPOztRLE87O1EsTzs7Ozs7OztRLE87O1EsTztnQixPOzs7OztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87O087OztRLFM7TyxPOzs7Tzs7OztRLFM7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O08sTzs7OztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7O08sTzs7O08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7Uyx1QjtTO1MsTztTLE87OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRLHFCO1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPLG9CLE87TyxPOztPOzs7UTtRLE87TyxPOzs7O3lCLDBCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0c7OztJOzs7SyxZOzs7Ozs7Ozs7OztNO08sTTthOzs7Ozs7O0ksYTtJLHFCLE07SSxPO0c7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzsyQixxQjs7SSxVOztLO0k7STtLLFE7SyxNO0ssTTtJLE87Rzs7SSxZOztJLEc7SyxNO0k7SyxlO0s7Ozs7OztJOzs7Ozs7Ozs7OztHOztJLFk7STs7SztLO0k7RzsrQixPLG1DOztJO0ssUTtLLFE7OztJOzs7ZTtLOzs7TSxJO0ssRyxxRDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDs7O0c7O0k7O0ssTztJO0ksTztHOztJO0k7Ozs7Uzs7UyxVO1M7OztRO0ssVTs7a0I7O0s7Szs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7Rzs2Qix5Qzs7STtPO0s7SSxNO0c7RztJO0k7Ozs7Ozs7Ozs7STtLO0s7SyxXOztLO0s7O3dCLE07Ozs7O1UsTTtTOztTOzs7OztVO1M7Ozs7Ozs7VyxHOztVOzs7OztXO1csSTtVOzs7Ozt5Qjs7Uzs7OztVO1UsUTs7Ozs7Uzs7Ozs7VTtVLE07Uzs7Ozt3Qjs7c0M7O1M7Ozs7VTs7OzthO2E7WTtVLE87Ozs7O2E7YTtZO1UsTztVO1M7O1M7Ozs7O1U7OzthO2E7WTtVLE87Uzs7d0M7O1MsMkM7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7O1Msa0M7Uzs7eUM7O1M7Ozs7O1U7VTtTOzs7Uzs7OztTLEksVyxrQzs7O2lDOzs7aUIsTTs7O0k7O0ssb0I7SyxPO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O007O087Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7Tzs7K0Isb0IsTyxtQjtPLE87Ozs7Ozs7OztVO1UsTzs7Ozs7TyxPOzs7Tzs7Ozs7VztXLE87VTtPOzs7OztXO1csTztVO087Ozs7Tzs7OzBCLG9CLE8sc0I7TztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7K0I7UyxPO1MsTztTO1EsTzs7Ozs7O1E7OzsrQjtTLE87UzsrQjtTLE87UyxPO1EsTzs7O1E7O1E7OztTOytCO1MsTzs7K0I7UyxPO1M7OztTO3NCO1EsNkI7USxPOztROzs7OytCO1MsTztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7K0I7UyxPO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7OztLO0ssTztJO0ksTztHO0c7b0Msd0M7O0k7STs7Ozs7O3lEOzs7OztLOztHOztJOzs7Ozs7OztPOzs7OztROzs7OztPOztJLE87OztJOztLLE87OztJOzs7SSxJLFc7Ozs7SztNLE87TSxPO0ssTzs7STtHOztJO0c7O0k7RztrRDtHOztJO0c7O0k7SyxPO0ssTTtLO0ksSSxVOzs7O0s7TSxPO00sTztLLE87OztJO0c7O0k7O21CLE87SSxvQixNO0k7OztJOzs7O0k7SyxxQztLLGlCO0k7STtLOztNOzs7OztPOzs7TTtLO0ssTztJOztLOzs7USxJLFc7Ozs7UyxJLFUsaUM7OztnQzs7OztROzs7USxJLFc7Ozs7UyxJLFUsbUM7OztnQzs7OztROztROztROzs7Ozs7UztROztROztTOzs7OztTO1E7O1E7Ozs7OztTOzs7UztROztROzs7OztTOzs7UztROztROzs7Uzs7O1M7Uzs7O1k7O1EsVzs7O1E7O1E7Ozs7Uzs7UyxzQjtTLE87OztTLHNCO1MsTztTO1E7O1E7Ozs7O1M7Uzs7O1k7O1MsTztROzs7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7Uzs7O1M7UTs7UTs7OztTO1M7UTs7USxrQztROztRLGtDO1E7O1E7Ozs7OztTOzs7UztTO1E7OztRLEc7UyxNO1EsSSxJLE87Ozs7OztROztROzs7Ozs7UztTO1E7O1E7OztTO1M7d0IsTyxzQzs7O1k7Ozs7d0IsSTs7O2dEOzs7d0IsTzs7OztZLE87Ozs7dUIsSTs7OytDOzs7dUIsTzs7VztTLGM7MEMsTyx3QjtTLFU7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssa0I7SyxPO0k7OztLOzs7SyxZOztLOztJO0c7OztLLFk7SyxPO0k7eUIsbUI7SSxRO0k7Rzs7STtJLHVDLFc7Rzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7Ozs7Ozs7Ozs7Tyx1Qzs7Tzs7Ozs7O1EsTTtPLHNCOztPOzs7OztRLE07TyxxQjs7Tzs7O1EsTTs7O1c7VyxjO1U7TyxXOzs7TyxjOztPOzs7O1EsTTs7OztXO1csYztVO1EsTTs7Ozs7VztXLGM7VTtRLE07UTtPLFc7O087Ozs7O1EsTTs7O1c7VyxjO1U7USxNO08sWTs7O08sZTs7Tzs7OztRLE07TyxZOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO1EsTTtPLFk7O08sa0MsTTtPLFk7O08sa0MsTTtPLFk7O087Ozs7OztRLE07USxNO08saUI7O3VDLGlCOztPOzs7Ozs7USxNO1EsTTtPLGlCOztvQyxZOzt1QyxpQjtlOzs7O29CLE8sbUM7STtHOzs7STs7SyxHLHFDOztJOzs7STtHOztJOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087ZTs7Rzs7SSw0QztnRDtJLE87RztzQyx1Qjs7STtzQjs7Ozs7Ozs7c0Isd0M7aUMsZ0I7UyxXOzs7Ozs7OzswQjs7Ozs7OztJO0c7eUIsNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7TyxPOzs7O0k7O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1EsTztnQixPOztJLG1CO0ksTzs7O0k7OztROztRO2dCOzs7STtHOztJOztrQjs7a0I7MEI7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO0ksTztHOztJOztlO2U7Ozs7aUI7aUI7O3FCLE87OztPLE87O0c7O0k7OztNOztPLHNCO00sRyxzQzs7O08sYztPOzs7O1c7VyxPO1U7TztPLE87O007TSxPOzs7STtHOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7Ozs2Qjs7Ozs7Ozs7Ozs7OzZCOzs2Qjs7NkI7OzZCOzs4Qjs7OEI7Ozs7O1c7O1c7O1c7O1c7O1c7bUI7Ozs7UTs7O1E7OztRLE87OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztROzs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROzs7UTtrQjtrQjs7Ozs7TyxPOzs7TyxPOzs7OztRLE87Ozs7TyxPOzs7Tzs7OztRO08sTzs7Tzs7OztRO087Ozs7Ozs7TyxPOztPOzs7UTtPOzs7Ozs7O08sTzs7O08sTzs7O087Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOztPLGtCLE87TyxPOzs7aUI7aUI7OztpQjtpQjs7MkI7O08sbUI7TyxPOzs7TyxPOzs7TyxPOzs2Qjs7OztRO1EsTzs7TztPLE87Ozs7UTtRLE87O087TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87OzRCOzs0Qjs7Tzs7O1E7UTtPLE87OzRCOzs0Qjs7NEI7Ozs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7UTs7Ozs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7Rzs7SSxTO2E7Ozs7O1E7O1E7O1E7OzJCOzs7Tzs7Tzs7OztPOztPOzthO3NCO0c7O0k7OztnQjtnQjs7OztJOzs7USxPOztRLE87O1EsTztnQjs7O0ksTzs7O0k7O08sTzs7TyxPO2U7Ozs7Ozs7O3lCLE87OztRLE87OzBCOztROztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthO2E7Yzs7O2lCOzs7O2tCO2lCO2lCO2dCO2E7YSxPOzs7YTthLE87Ozs7Ozs7O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7WTs7YTs7Yzs7O2EsTzs7WTtZLE87VztRLE87Ozs7Ozs7OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLEksYzs7YTs7Yzs7O2EsTztZO1k7OzthOztjOzs7YSxPO1k7WTs7d0I7OzthOzs7WSxPO1c7O1EsTzs7Ozs7Ozs7O1k7O2E7O2M7OzthLFc7YSxPO1k7WTs0Qjs7O2E7OztZLE87VztRLE87OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7YTthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7Ozs7Uzs7O2EsTztZO1ksTztXO1M7USxPOzs7Ozs7Ozs7Ozs7USxrQzs7Ozs7Ozs7Ozs7Ozs7bUI7UTs7O1MsTztROzs7Ozs7OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7SztNOztTOzs7WTs7ZTs7ZTt1Qjs7O1k7O1ksTTs7UTtNO0s7Ozs7Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7O2lCLE87O007TTs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87OztxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007MkIsb0IsVztNLFc7TSxPO0s7O007O087TztNO007TyxPO08sTztPOztPO087TzswQjs7TztPO007TTtNO0s7O0ssMEI7SztLOzs7a0M7O0k7STs7OztLO0s7STtJOztLO0k7Ozs7Ozs7OztLOzs7Szs7O0k7O0s7O00sTztLLGM7STs7Szs7OztNO1E7O00sSzs7O0s7Ozs7O007O087Ozs7Tzs7OztNLEc7TztRO1U7O1E7UTs7OztTO1M7Uzs7Ozs7O1E7Uzs7Ozs7Ozs7Ozs7OztPO087Tyx5Qjs7OztTOztVO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO087Tyx5Qjs7OztTLDJCO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO08seUI7Ozs7UywyQjtTO1M7Ozs7Ozs7O2tCOztLOzs7YTs7STtJLEksSSxzQzs7SyxJLGU7Ozs7Ozs7UTtROzs7Ozs7O08sRyx1Qjs7Ozs7TSxPOzs7Szs7TSxVO007Tzs7Ozs7TztPOztNO007SztLOztNOzs7O007TTtLLEksVyx1Qzs7Ozs7TTtPLE07TTs7TztPOzs7Ozs7UTs7UyxJLHVCLE87Uzs7Ozs7Ozs7TTs7Ozs7Tzs7UTs7Ozs7Ozs7USxHO1M7VTs7Ozs7Ozs7Ozs7O1U7O1U7UztTO1M7VTs7VTs7Ozs7OztRO1M7OztPO1E7Ozs7OztNO007O0k7O0s7OztNOzs7TTtNOzs7Ozs7O0s7SztLLHlCLHdCO0s7STs7Szs7TTtNO007TTs7OztPO1E7OztRO1E7Ozs7Ozs7TztPO08seUIsd0I7TztnQjs7OztPOzs7Ozs7O007TztPO087TztPOzs7Ozs7OztVO1c7Ozs7Ozs7Ozs7OztXOztXO1U7VTtVO1c7O1c7VTs7Ozs7VTs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7TTtPO087TztPO087Ozs7UTtTOzs7Ozs7Uzs7Ozs7OztVO1U7UztTO1M7VTs7VTtTOzs7Ozs7UTs7Ozs7Ozs7OztLLEksK0I7SztLOzs7SztNLG9CO00sTztLLE87STs7SyxXO0ssTztJOztLLFc7SyxPO0k7O0ssa0M7SztNLE07O007TSxPOzs7SztNO00sTzs7SztNOzs7Tzs7Ozs7Ozs7TztRO1M7Uzs7O1E7O087UTtROzs7Tzs7TTs7Z0MsdUM7Z0Msc0M7Ozs7USxJLHFCO1EscUI7O087OztXO1k7WTtZO1cscUI7VTtRLE87TyxPOzs7aUMsc0M7aUMsdUM7Ozs7TyxJLHVCO08sc0I7O007OztVO1c7VztXO1Usc0I7UztPLE87TSxPOztLOztNOzs7Ozs7TTtNOzs7Ozs7O1M7VTtVOztVLE87UyxPOzs7TztRO1E7O1EsTztPLE87OztLO007TztPOzs7Ozs7O0s7TTtNOzs7Ozs7OztLOzs7TTtNLE07a0I7O2dDO0s7O00sZTtNLEk7SztNO0s7SyxJOzs7O087Ozs7Ozs7Ozs7Ozs7OzJCOzs7Ozs7VztZOzs7Ozs7WTs7Ozs7Ozs7OzswQjs7Ozs7Ozs7OztVOzs7Ozs7Ozs7UztVO1c7Ozs7O1U7VTtVOztTOzs7OztPOzs7OztLOztNO007TSxJO00sTTtNO007TTtNOzs7SztNOztPO1E7Ozs7TyxjOzs7OztRO1E7Ozs7O2M7ZSwrQzs7O1E7OztPOzs7Tzs7Ozs7USxNO1EsTTtROzs7O1M7VTs7OztTO1UsSSxNOzs7Ozs7VTtVOzs7Ozs7O1c7Vzs7Ozs7Uzs7Ozs7TztRO1EsTzs7O1k7YTthO2EsUzs7O087Ozs7O1k7YSxPOzthLE87WTtZLFU7WSxPO1c7Ozs7O087O087Tzs7O087UTs7VyxNO1U7USxTOzs7VztXO1c7VTtPO087Tzs7TSxJLG1COzs7O0ssK0IsUzs7TTtPOztRLFE7OztRO21DLE8sYyxxQjtPLE87OztNO0s7SyxnQjtLO0k7O0s7TSxNO0s7TSxZO007OztLLE87STs7SztNLE07SztNLFk7TTs7O007O2dDOzhCLFc7SyxtQjtLLE87STs7Ozs7NkIsWTs7OztrQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFcsTzs7O0s7SyxXO0k7SSxROztLO0s7SztJO0k7SSxPO0c7O0k7OztnQixPOzs7Ozs7OztLO2lCOzs7Ozs7O0k7Rzs7SSxRO0ksTztHOztJO0c7OztJLFc7OztJLG9CO0ksTztHOzs7STs7Ozs7Ozs7Ozs7OztROzs7Ozs7OztROzs7UztROztROzs7O1M7UztRLE87Ozs7Z0I7O0k7RztHOztvQixPLGlDOztzQiw0QjtJLE87Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHOztJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUztLLFE7Ozt3QixPLGtDO0ksbUIsTSx3QztzQiwwQjtJLEk7O29CO3FDO2lCOzs7Ozs7Ozs7UyxhOztROzs7Ozs7NEI7O1E7Ozs7Ozs7O1E7Ozs7O1Msc0IsTztTLGE7O1E7Ozs7O1M7OztVLE87VTs7O1E7Ozs7Ozs7O1E7O0ksTztHOztJLFk7O0ksTztHOztJLFc7STtHOzs7STtLLE07O0k7Ozs7STtLLE07O0k7Ozs7SSxXLE07O0k7Ozs7SSxXLE07O0ksZTs7O3FCLGtCLGdDOzRCLHFCOztJO087SyxPO0ksVztJLE87RzswQixPLHlDOztJO0s7OztNOzs7SyxtQjs7SSxPO0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxJOzs7Ozs7O00saUI7TTs7STtJO0c7OztLO0ssWSxPOztLO00sNkI7TTs7OzsrQjs7O0k7SSxPO0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJOztLLGlDO0ssTztJO0ksTztHOzs7STtHOzs7SztLO29COzs7O087O007OztPOztVO1csTTs7VTtTO08sUTs7O1U7VTt5QjtXOzs7OztZLE07WTs7Ozs7O2M7O2U7ZSxPOzs7Ozs7Ozs7YSxJLDhCOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7VztXLEksa0I7Ozs7Ozs7VyxXO2M7WTtXLE07O1M7b0Msc0M7Tzs7Ozs7STtJO0c7O0ksMEI7SSxvQjtHOztJLFk7O0k7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOzs7SztLLGM7STtJLE87RztHOztJOzt5QixrQjs7STtJOzs7Ozs7NkM7O0s7O0c7O0k7Z0MsNEIsVztJLFU7STs7O2EsbUI7OztZO0c7O0ksWTs7c0M7STs7O0ssVzttQjs7O0ssTyxXOztJLE87Rzs7OztLOzs7OztNLFE7TSxVOzs7O3NEOzs7OztLOzs7TTtPLFc7a0IsNEI7SztJO0ksTzs7O0ksb0I7Ozs7TTs7Ozs7Ozs7Vzs7OztVOzs7Ozs7O1c7OztVOzs7O087cUM7Ozs7UTs7OztTOzJCOzs7OzttQjtROztTO1E7Ozs7O1E7UyxRLG1DO1M7O1M7UTs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHO0csYTs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7O0s7SyxXO0k7SSxXO0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7Ozs7Z0I7Z0I7ZTthOzs7O2lCOzs7O2E7OztnQixvQixPO2dCLE87ZTthLFE7YSxPOzs7Z0I7Z0IsTztlO2EsTyxXOzs7Z0I7Z0IsZTtlO2E7ZSxXO2EsUzthLFc7bUM7YTtlOzs7Z0I7Z0I7aUI7OztxQixlO29CO2tCOzs7OzttQjs7OzttQjs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCOzs7Ozs7d0I7MkMsTyxrQzs7Ozs7Ozs7MkI7OzRCOzZDO2tEOzs7Ozs7MEI7Ozs7MkI7Ozs4Qjs7Ozs7a0M7OzBCOzsyQjs0Qzs7NEM7Ozs7eUI7Ozs7OzBCOzJDOzs7Ozs7OEI7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs7OEI7Ozt1Qjt3Qjt3QixPOzJDLGM7d0I7dUM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjt3Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7O2lCOzs7O2U7YTs7O2dCO2dCO2U7YSxZLFc7YTs7YTs7O1k7b0I7OztXO1k7OztXOzs7Ozs7OztROzs7USxxQjtRLFc7Tzs7Ozs7TTtPOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7UztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WSxJOzs7VyxJOzs7Ozs7Ozs7UTs7OzthO2M7Ozs7O2UsTTtlOztlO2U7O2MsUzs7O1MsTztROzs7O2M7ZTtlLG1CLHNCOzs7aUI7OztROzs7O2M7Ozs7Ozs7Ozs7Ozs7OztPO1E7Ozs7O0k7Rzs7O0s7Ozs7Ozs7TztRLFE7USxLO087Ozs7O087OztrQztRLEk7Ozs7O007TyxJOzs7Ozs7Ozs7Ozs7TTs7USxNO08sVTtPOztNLEk7O0k7O0s7Ozs7Ozs7OztLLFM7SztNOzs7Ozs7TSxPO0s7Ozs7O0k7STtHOztJLFcsTTs7Ozs7OzBCO007Tzs7O1U7VTtXLE07VSxJOzs7UztPLFU7TywyQyxXO087Ozs7O00sWTtNOzs7VTs7Z0M7O2E7c0M7O1M7OztVOzs7VztVLHNCO1M7TyxPO087OztVO1U7UztPLFM7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJO3lCLGtCLE8sMkI7SSxZOzs7Ozs7O0ssYTs7OztJO0c7OztLOzs7OztNO00sTTtNLFc7TSxPOztLOztlOzs7Ozs7O0ksTztHOzs7Szs7Ozs7TSxNO00sa0I7O0s7Ozs7Szs7O007b0I7O2dCO0ksVztJLGlCO0c7aUMsVzswQyxXOztJOzt5RTtLO0s7SyxNOztJOzs7YyxhO2E7Ozs7O0c7O0k7eUU7SSxNO0c7O0k7OztLLE87O0ksTTtHOztJOztHOztJO2tDOztLLE07O0k7RztHLG1COztJOzthO2MsWTtjLE07YyxROztjO2UsTztlLE87YyxPOzs7YSxJLFU7Ozs7O2M7ZSxPO2UsTztlLE87ZSxPO2MsTzs7O2EsTzs7RztHO0k7O0k7O0k7Ozs7Ozs7Ozs7O0k7O0c7O0k7O007TyxVO087Tzs7TztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO00sUTtNO00sTTs7O1M7UTtNOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLEksOEI7Ozs7Ozs7O0k7Rzs7SSxXOztLO0s7SztJO0k7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7OztlO2U7Ozs7Ozs7YztjLE87YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7O0s7SyxnQjtJO0k7SyxPO0ssTztLOzs7SyxTO0k7Ozs7O0s7SztJO0ksVztJO0c7O0k7STs7Ozs7TyxTO1E7TyxJOzs7O0s7O0c7OztLO0ssTztJO0ksVTtJO0c7O0ksWTs7STs7Ozs7O0ksWSxPOzs7O0s7Ozs7OztJOzs7STtLO0s7Ozs7O0ssUTtNO087O1c7Ozs7TztPO007Ozs7OzRCOzs7OztrQjs7SztJO0ksTztHOytCLHVCOztJO0c7O0k7OztLO00sVzs7O0ksVztJLE87RzswQix3QjsrQix1Qzs4Qiw4Qzs7STtHOzZCLFc7dUMsK0I7O0ksSSxZOzs7O00saUI7O007Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLLE8sNkI7STtJLE87Rzs7STtJO0s7O00sUTtNOzJCLFEsOEIsUzs7Ozs7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7VTs7Ozs7VztVO1c7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7ZSxNOzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7ZSxpQztLO00sTTtLO007aUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7SSxPO0c7O0ksWSxPOzttQjs7Ozs7Ozs7STtHOztJLFk7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTs7UTtRO1MsTztTLE87USxPOztJO0c7Rzs7STs7aUI7Szs7Ozs7OztNOzs7O1U7Vzs7O1k7OztXLEksWTs7O3FDOzs7VyxlOztVLE87Uzs7OztNLE87TSxNO0ssSSxVOzs7O00sSTs7O0s7OztNLFE7Ozs7O087UTtRLDBCO1EsTztPO2U7Ozs7OztNO087Tzs7O2Esc0I7Ozs7TztPOzs7OztHOztJO0ssVztLOzs7OztPLG1CO087O3FCLEk7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7Ozs7Tzs7O1E7Ozs7Tzs7O21COzs7OztJO2lCLE87SSxJO2dCLE07O0k7Rzs7Ozs7OzZCLE87O1E7OztTLHNDO1MsUzs7Ozs7Ozs7OEIsOEI7USxPOzs7OzhCLDhCO1EsTzs7Szs7OztJOzs7O1E7a0I7Ozs7Ozs7OztTO1U7Ozs7VztVOzs7Ozs7Ozs7Ozs7UztVOztXO1U7Ozs7OztPOzs7O1E7UTtRO087OztRLFc7O08sTzs7SSxPO0c7O0k7Z0IsTzs7STtHOzs7STtJOztNLE87SyxJLFk7Ozs7MEIsTTs7Ozs7Ozs7Ozs7Ozs7O2tCO007Ozs7O087OztNOzs7O08sSSxVOzs7O1E7Uzs7Ozs7O087OztRO1E7Ozs7Ozs7Rzs7STs7Ozs7TSxLO087TTtPOzs7TTtpQzs7Ozs7STs7Ozs7O2M7OztHOztJLHFCOzs7SyxNO0k7Ozs7O0s7Ozs7Ozs7OztRLDBDOzs7Ozs7Ozs7OztpQjs7Ozs7O0k7OztLO0s7SSxvQjtJO0ssUTtLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjtxQixvQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7O1U7OztXOzs7Ozs7Yzs7ZTs7Yzs7ZTtnQjs7O2dCO2tCO2dCOzttQixZO21COzs7OztvQjs7O21COzs7Ozs7bUIsTTs7a0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQixNOzs7Ozs7Ozs7O2dCO2lCLE07OztvQjs7O3FCLE07b0I7Ozs7bUI7aUI7bUI7Ozs7O2U7OzttQjs7O29CLE07bUI7Ozs7a0I7Z0I7a0I7ZTs7YztlLFM7Ozs7OztlOzs7bUI7bUI7a0I7Z0I7a0I7O2dCLE07ZTs7Z0IsbUMsbUI7Z0I7O21CLE87Ozs7Ozs7OztrQjtnQixPO2dCLE87Z0IsWTtnQjtrQjtnQjtzQywrQjtpQixZOzs7O2dCO2lCOzs7aUI7Ozs7Ozs7O3NCO3VCOzt3QjswQyxPLGdDO3dCLE87dUI7dUIsTyx5Qzs7O2tCLFU7OztpQjtrQjt5QzttQjs2Qjs7Ozs7OztnQjtpQjs7O29COzs7OztxQjs7cUI7b0I7b0I7cUIsVTtxQjs7cUIsVTs7cUIsTzs7K0I7Ozs7b0I7b0I7b0I7bUI7aUIsVTs7Ozs7O2dCO2lCOzs7Ozs7Ozs7Ozs7YztlO2lCO2U7O21COzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQjs7Ozs7O3FCOzs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7aUI7OztrQixROzs7O2dDOzs7aUI7OztxQjtxQixjO29CO2tCLFM7OztxQjtxQixjO29CO2tCLFM7a0IsTztrQjs7O2tCLFM7aUI7Ozs7OztpQjs7O3FCO3FCO29CO2tCLE87OztxQjtxQjtvQjtrQjs7O3FCOzs7Ozs7OztrQjttQixJOzs7c0Isa0I7a0M7O3NCO3VCLEksTzs7Ozs7Ozs7c0IsTzs7a0I7a0I7a0I7bUI7bUI7OztzQjs7OztxQjtrQjs7bUI7Ozs7dUIsb0I7bUM7OztzQjtvQixTO29CO29CLE87O29CLE87Ozs7OzRCOzs7Ozs7Yzs7Vzs7O2U7YztjOzt3QixvQjs7Ozs7O2lDOzt3Qjs7OzswQjs7Ozs7eUI7eUI7d0I7MkM7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7Ozs7Ozs7VTs7Vzs7Yzs7O2U7OztjOztpQjs7O3FCOztzQixNOzs7cUI7b0I7a0I7b0I7Ozs7Ozs7Ozs7O2lCOzs7cUI7O3NCLE07OztxQjtvQjtrQjtvQjs7Ozs7O2lCO2tCOzs7cUI7cUI7c0IsTTs7O3FCO29CO2tCLEs7a0I7Ozs7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOztVOztvQjs7Ozs7Ozs7VTs7O29CLFk7b0I7OztzQixXO3NCLE87OztzQixNOzs7cUIsTzs7b0I7cUI7O3NCO3NCLFE7O3NCOzs7OztxQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7OztzQjtzQixPOzs7c0IsTTs7cUI7O3NCO3FCLE87O29CO3FCOztzQjtzQjs7Ozt1Qjs7d0I7OzsyQjsyQjs0Qjs0QixNOzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjswQjt1Qjs7O3FCLE07OztvQjs0Qzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Yzs7O2U7YyxHO2U7Z0IsTzs7O21CLGtCLFE7Ozs7Ozs7bUI7a0I7ZTs7Ozs7ZTtjO2M7ZTtlO2lCO2U7OztlOzs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7Ozs7Ozs7O2lCOzs7OztpQjs7Ozs7O2tCLE07aUI7Ozs7Ozs7Ozs7aUI7Ozs7aUI7Ozs7Ozs7Ozs7ZTtnQjs7Ozs7Ozs7Z0I7Ozs7OztjOzs7Vzs7OztlLFk7ZTs7Ozs7OztnQjs7Z0I7Ozs7aUI7aUI7aUIsTztnQixTLDZCO2dCLFU7Z0I7aUI7O2tCO2tCOztrQjs7cUIsb0I7cUI7O2lCOzsyQjs7Ozs7OztnQjtpQjtpQjs7Z0I7OzBCOzs7Ozs7O2UsTTs7Yzs7VTs7b0I7Ozs7Ozs7O1U7VyxPO1c7O2M7OztlOzs7ZSxTO2U7OztlO2lCOzs7Ozs7Yzs7Vzs7d0M7Yzs7d0Isb0I7O3lCOzswQjs7OzZCOzs7Ozs7OzRCO3lCOzt3QixNOzs7Ozs7Ozs7VTs7b0I7Ozs7Ozs7OztHOzs7STtLLFE7OztLOzs7STtHOztJO2tEO0k7Rzt3QixPLHlDOztJOzs7OzZCLDBDO0ssTzs7STtHOztJLE87Rzs7SSxZOzs7OztTOzs7VSxPO1M7VSxXO1U7Ozs7O1M7UTtLLEssaUQ7O0k7OztJO0s7Rzs7O0k7SztNO00sVTs7O0ssc0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJLFU7Ozs7TSxNOzs7O0ksd0I7Ozs7SztNLE87TSxPO00sUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7STtLO0s7SztPO21DLG1CO0k7Ozs7Ozs7O2M7O2E7Rzs7STs7Rzs7STs7Rzs7STs7Rzs7STs7Ozs7UTs7O1E7O3NDOzs7Ozs7UTs7Ozs7OzthO2E7WTtZLE87Vzs7UyxzQjtTLE87Uzs7UztROztROzs7OztTLHNCO1MsTzs7O1k7WTtXO1E7O2dCOzs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7a0M7O0ssbUIsSTtLOztJO0s7SyxTO0ssWTs7SztLLGU7STtJLHFCO3lCLG1CLFU7STtLLGM7Szs7OztXOzs7Ozs7Ozs7OzswQyxrQztnQixPOzs7Ozs7Ozs7Z0IsTzs7Ozs7VyxjOzZCLGUsMkI7VyxnQjtXOzs7b0I7OztVO1U7VztXLGM7VTs7VyxPOztVOztXLE87O1U7aUI7VSx1QixXLGdDO1U7OzBCOzs7Vzs7VSxPOzs7Ozs7Rzs7STtLLE87OztTOzs7O3NCLHVCO0ksSSxPOzs7Ozs7Ozs7Yzs7Ozs2Qjs7YTtHOztJO2tDLE87dUIsTTs7STtHOztJOztLO0s7STtJLEksTzs7SztpQixPOzs7b0I7Ozs7TSxXO007O007TyxNO2lCOzs7TSxNOztLO0k7SSxXO0c7O0k7O087Ozs7O1E7OztXOztRLE87Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJLGU7eUIsa0IsYztJO0ssVztLLE87SztLO0s7SztPLG1DLGlCO0s7Ozs7Ozs7Ozs7O1U7VSxvQjtVO1csZTtXOzs7VyxPOztXLG1CLE87O1c7VTtVLFU7NEIsdUI7VTtXLE87Vzs7VztXO1U7VTtXLGE7VztXOzs7Z0I7aUI7Ozs7a0I7Ozs7aUI7OzJCOzs7Ozs7OztnQjs7Ozs7Ozs7VyxPO1U7a0I7O1M7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksUzs7Ozs7Ozs7O0k7O0s7TSxJLGMsMkM7Ozs7O08sUztPO087OztJO0c7RztJO0k7STtJOztJO0k7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLGtDO2EsVTs7Ozs7Ozs7O007O0s7O0c7O0ksc0I7O0ssbUI7SztNLFE7TTtPLEksZTs7Ozs7Tzs7OztNOzs7OztNOztNOzs7STtHOztJOzs7O0c7cUIsd0I7RyxxQjs7SSxJLFE7OEIsbUM7SSxhO0k7STtHOztJO0ssTTs7SyxNOztJLFc7Ozs7Szs7TTs7Ozs7Ozs7Ozs7TTs7O0k7SztpRCwyQjs7O0k7Rzs7SSxxQjs7SyxNO0ksc0I7O0ksSSxROzs7Ozs7Ozs7Ozs7O0k7NkIseUI7RztHO0k7STtJO0k7O0k7STtHOztJOzs7O1M7OztTLEksUyxrQjs7VTs7Ozs7Ozs7O1M7UyxlO1M7UTtLLE87OzswQixPO3dCLE8saUI7SSxPO0c7O0k7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7cUI7O0s7O0k7Rzs7STs7Ozs7OztvQjs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7SztJO0c7O0k7Rzs7cUIsMkI7STtLLFE7OztJOzs7O007Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7O1EsTzs7OztLLFc7Rzs7STtLLGlDO0s7SyxPLHFEO0c7O0k7Ozs7OztLOztJO0c7O0k7Ozs7Ozs7SyxJLFE7OztnQzs7O0s7O0k7Rzs7STtLOzs7STs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztLLFE7SyxnQixPO0s7TSxNLFc7TSxNLFc7TSxNLFc7Szs7STtJO3VCOztrQjtJLHFCLFU7a0I7O0k7Rzs7SSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7OztJLFU7STs2QztJO0k7Rzs7SSxXOzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtHOztJO2U7Ozs7Ozs7STtHOztJOzs7O0ssTzs7STtHOztJOzs7O0ssTzs7STtHOztJOzJCLE87STtHOzs7Ozs7OztJLE87OztJO2tEOzs7O007Ozs7Tzs7TTs7O007TTtNOzs7STtJO0c7O0k7d0I7Ozs7c0I7TTs7O007OztJO0k7Rzs7STttQjs7OztzQjtNOzs7TTtNO007OztJO0k7Rzs7STtLOzs7SztJO0c7OztLO007OztNOzs7TTs7Ozs7Tzs7Ozs7Ozs7TTtPOzs7Ozs7Szs7Ozs7Ozs7STtJO0c7O0k7Szs7O0s7STtHOztJO0s7Ozs7TTtLO0k7STtLLFE7OztJOzs7Ozs7OztLOztNOztLOzs7Ozs7O1U7Ozs7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O00sTzs7O2lEO0ssTzs7STs7Ozs7Ozs7dUQ7O0ssTzs7K0I7OztJO0s7SztLOztLOzs7O007SztJO0ksRzs7O3NCO007O087OztVOzs7Ozs7Ozs7Ozs7OzthOzs7O3NCO007Ozs7Ozs7Ozs7TTtNO007OztNOzs7STtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7SztJO0c7O0k7SztJO0c7RyxzQjs7STtHOztJO29DLHNCO0ksTztHO0c7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssVztLOzs7Ozs7OzJCOztNLE07Szs7Rzs7STs7Ozs7O087USxTO1EsTztRLE87UTs7aUI7OztPOzs7O0s7O0k7Rzs7STs7Ozs7Ozs7Ozs7NkI7Ozs7NkI7Ozs7OEM7O0s7O0k7Rzs7SSxZOztLOzs7O00sVTs7Ozs7Ozs7O0k7SztLOzs7Ozs7O1k7Ozs7YSxPO2EsUTtrQyx5QjthLFM7WTs7O1k7Ozs7YSxVOzs7O3VCOzs7WTs7Ozs7Ozs7Ozs7O21COzs7Ozs7WTs7OzthLCtCOzs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7Ozs7WTs7Ozs7YSxVOzs7MkI7WTs7Ozs7WTs7Ozs7YSxVOzs7K0I7WTs7O1ksdUIsVTs7Ozt5Qjs7O1k7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O1UsUzs7Uzs7Vzs7O1k7cUI7VSxPOztvQjs7O3NCOzs7d0I7OzswQjs7OzRCOzs7O1M7Ozs7STtHO0c7SSxhO0ksb0I7SSxtQjtJLGdCO0k7TTtJO007SSxpQjtJO007STtNO0ksZ0I7STtNO0k7TTtJLG9CO0k7TTtJO007SSxtQjtJO007STtNO0ksZTtJO007STtNOztJOzs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7OztHOztJO0ssTTtLO0ssUTs7OztLO087O1U7O0k7O087O087O087USxXO1EsTztPLEc7UTtTLE87dUI7OztPOztPO2dCO087O087Ozs7Ozs7OztPLGlCO087O0c7RztJO007SSxVOztJLE87Rzs7SSxPO0c7O0k7Ozs7Ozs7OztTOzs7VSxPOzs7VTs7Ozs7Ozs7Ozs7VyxNOzs7O1M7Ozs7Ozs7Ozs7Ozs7OztTLE87Ozs7Ozs7Uzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsVzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O007Ozs7O3FCO1M7Ozs7USxPOzs7MEI7Ozs7Ozs7O1UsbUI7VTs7Ozs7Ozs7Ozs7O1csRzs7Ozs7O1U7Ozs7OztXLE07Ozs7Uzs7Ozs7bUI7O1MscUI7Uzs7OztJLE07dUI7Rzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7OztJO2EsTTtJO0c7O0k7Szs7UztLOztJO0ssVztLO0ssZTtJO0k7eUIsbUIsZTtJO0ssTztLO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7O0k7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzs7USxNO087STtVOzs7SyxXO0ssTztJO0k7SyxTO0s7Ozs7TTs7TyxPO2M7O2lCOzs7O2dCO0ksSSxNLDZDOzs7Ozt1Qzs7Szs7Ozs7O0ksTztHO0c7O0ksbUIsTTs7STtHOztJOzswQzs7SSxPO0c7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztJO0ksTztHOztJOzs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthO2M7Yzs7Ozs7Ozs7Ozs7Ozs7O1E7UTs7OztNO087USxRO1E7USxNO1EsTztROzs7VyxXOztRLFU7Ozs7Ozs7O1E7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7O087Ozs0Qjs7Ozs7Ozs7Ozs7Szs7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SztLLFE7Ozs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOztJLFk7WSxPO0k7OztLOzs7STtHOztJO0k7Ozs7OzRCLE87OztTOzs7O0s7O0c7O0k7Ozs7O1EsTzs7USxPOztRLE07MkI7O0ksTztHOztJO0k7SyxPOztJO0c7O0ksaUIsTztJOzs7Ozs7OztJO0s7NEI7SyxPOztJO0ssTzs7O0k7Rzs7OztLLE07Ozs7TztnQjs7Ozs7OzJCOztPOzs7O1E7Tzs7Tzs7OztRLG1DO1E7Ozs7O2E7OztjLGM7YTs7WTs7Ozs7OztRLFE7UTtVOztPLE87Ozs7Ozs7Uzs7Ozs7VTtvQjs7OzZCLDZDO1UsRztXO1k7Ozs7O2U7O2dCLE07O2U7YztZLFc7WTtZOztZLE87WTtjOzs7Ozs7Ozs7O1cscUI7VztZLFU7OztZLFU7OztZLFU7OztZO1c7Ozs7Ozs7Ozs7c0I7Ozs7Ozs7Tzs7USxVOzs7USxVOzs7USxVOzs7UTtRLE87Tzs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7OEI7VztZLFE7OztXOzthLE07WTs7YTs7WTs7OztZO1k7OztXO1ksTTtXLFU7Vzs4QixlO1ksaUI7VztXLGU7Z0MsbUIsVTtXLFU7O1k7WSxlO1c7VztZLFk7WSxPO1ksTztZLE87Vzs7WTtXO1c7WTtZO2tDLHlDO1ksTTtZO1c7Ozs7O1E7VTs7OztRLGtCO1EsWTtRLFk7OzsrQjtXO1ksTztZLEs7WSxzQjtXOzs7O29COzs7VTtROzs7Ozs7VTs7O2MsVztjLFc7YTtXLFU7a0MsbUIsZTtXLFE7VzthOzs7OztXLE07VTtXOzthOzs7Ozs7UztnQztVLE87VSxTO1UsSTtVO1k7Ozs7OztTO1UsTTtTO1U7O1k7Ozs7Ozs7Vzs7OztXO1U7TyxPOztPOzs7USxLOzJCLDZCO1EsVTtRLHNCO1EsTztRLE87Tzs7Tzs7UTs7O087UTsyQjtROzs7OztTOzs7aUI7Ozs7Tzs7O1E7Ozs7Ozs7O2lDLFc7OztZO2E7OzswQjthOzs7OztjOzs7c0I7Ozs7WTs7OzthLE87YSxRO1k7Ozs7O3NCOzsrQztRLE07OzhDO08sTTs7TyxvQyxNO08sWSxXO08sc0I7TztROztTLHNCO1E7Ozs7O1EsVztROzt3Qjs7OztPOzs7Ozs7O1E7O1E7UyxVOzs7O1ksd0I7Ozs7YTtjOzs7Yzs7aUIsTTs7O2lCO2tCLE87Ozs7YTtjLE87OztZLFc7WTs7Ozs7OztRO1MsTTtROztTO1c7UyxPO1E7Ozs7Ozs7Ozs7TztRLFU7OztXO1c7WTs7YSxlO1k7O1c7OztZLGE7OztZO2E7OzthOztnQixNOzs7O2tDOzs7Z0M7O1c7Ozs7b0I7O1U7USxLO1EsTztRLFc7Ozs7MEIsZ0Q7USxNO087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVzs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtROzs7VztXOzs7VTtRLE87Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7OztVLGE7VTtVOzthOzs7O1U7aUI7Uzs7OztROzs7O1MsUTtTO1E7Ozs7aUI7Ozs7TztRLE87O087O087OztRO1E7Tzs7Ozs7O1E7OzBCO08sSSxpQztPOztPLG9CLFc7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1E7USxlO1EsSztRLE87Tzs7Tzs7O1E7USxPO08sTzs7Ozs7Ozs7TyxPOztPOzs7Ozs7Ozs7O1csWTtXOzs7WSxVO1ksVzs7OztZOztnQjs7Ozs7WTtZOzs7OztnQjs7OztZLE07WTtXLE87Ozs7O1E7O1k7Ozs7O1E7USxjOzs7Vzs7Ozs7Ozs7VTtROzs7Ozs7O1EsUztRO1U7O087Ozs7Ozs7a0I7Ozs7O087OztRLE87TyxPOztPLG1DOztRO1MsTzs7UTs7TztRLE07USxPO1E7OztXO1c7Ozs7Ozs7O3FCOzs7VTtpQjtPOzs7O2U7Ozs7O0k7OztJOzs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLG9CO0ksTztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJOztLO0k7STtLO0ssMkIsNEM7SSxPOzs7STtJO0k7Ozs7O0s7O1E7Ozs7O1MsTztROzs7USwyQjs7Ozs7Ozs7O1M7Ozs7aUI7Ozs7O0s7STs7Ozs7aUM7TyxtQjs7OztPOzs7UTtROztXOzs7Yzs7YyxTOztjOztVOytCLG9CLFc7TyxHOzs7Ozs7OzsrQjs2QjtPO1E7OztXO1csb0I7VyxXO1U7USxNO1EsUztROzs7Ozs7O1U7Ozs7OztXLE87YTs7O2M7Ozs7Ozs7Ozs7Ozs7O1c7OztPO1E7OztXO1c7VTtPLE87O007Ozs7Tzs7Ozs7O0ssZ0MsTztLLG9CO0ssVztJO0ksMkI7Rzs7O0ksZ0I7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7USxHO1M7VSxPO1UsYztVOzs7Ozs7Ozs7Ozs7O1M7O2lCOzs7Ozs7Ozs7b0I7UTs7Ozs7Szs7O0k7Rzs7O0k7Ozs7OztPLFU7VTtRO1M7VSxPOzs7YTthLFc7WTtVLGlCO1M7VSxNO1M7Ozs4Qiw4QztVLG1COzs7YTs7YyxVO2MsTzthO2EsTztZO1UsUTs7O2EsVztZO1UsVTs4QjtVLFM7Z0MsNEM7VSxpQjs7O2E7YTtZO1UsTTtVOzs7YTtTOzs7OztVOzs7Ozs7OztJOzs7OztJO0s7OztNLE07OztTLG9CLE07UyxPO1E7YTs7O29CLDZCO0ksWTtJLGtCO0ksVTtJOztZOztHOzRDO0c7O0k7Ozs7OztJLFk7OztLO00seUI7O0k7Rzs7STtJO0s7OztTLG9COzs7O2dDOztzRTs7O1MsTTtRO00sUzs7O1M7Ozs7O1U7VSxRO1M7O007UTtLLHNCLDBCOzs7SyxZLHNCLFk7Szs7Ozs7OztNO00sUTtNO0s7TTtNLE8seUQ7STtJO0c7O0k7SSxlO0c7O0k7YztjOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7OztNOzs7OztPLE87TyxPO1U7TyxXO08sTzs7OztJLE87Rzs7O0k7OztJLE87Rzt5Qiw0Qzs0QixPLGlDOztJLGMsVzt1QixnQjtJLGtCO0ksTztHOztJOzs7O3lCO0ksZTtHOzs7Szs7O007O0s7Ozs7d0I7O0k7SSxPO0c7Ozs7SztLO0k7STs7Ozs7YTs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjs7OztZOzs7O2E7OztlOztnQjs7Ozs7OztvQyxrQjs7OztlOzs7OztnQjs7Ozs7OztlOztZO1c7UyxVOzs7Ozs7WTtZOztXO1MsYTtRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7Uzs7OztZOzs7OzthOzs7ZTs7OztnQjs7Z0I7OzttQjttQjtvQjtxQjs7O2dDO3FCOzs7OztvQzs7b0I7Ozs7MkM7OztrQjtnQjs7Ozs7OztxQjs7Ozs7Ozs7ZTs7ZTs7OztnQjtlOzs7O2dCOztpQixXO2lCO21CO2dDOzs7aUI7OzRCO2tCO21CLE87bUIsTTs7Ozs7Ozt1Qjs7Ozs7OztnQjs7O3dCOztnQjs7O3dCOzs7OztlOztnQjs7O21CO2dDO2U7Ozs7OEI7Ozs7O2U7O1k7VztTLFU7Ozs7O1M7O1M7c0MsNkI7UyxRO1MsTTtTLFE7Ozs7VTtXOztjO2M7Ozs7OzRCOzs7a0I7Ozs7Ozs7UyxJLE0sZ0M7Ozs7VTtXO2lDO1c7OytCOzs7O1M7VSxPOzs7YTthO2E7WTtVLE87O2dDO1U7Ozs7K0I7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7OztZLFc7VztTLGE7UyxnQjs7O1M7OztROzs7Ozs7Ozs7O1E7Ozs7Ozs7OztTLEs7VSxNO1M7VSxNO1UsTTs7Ozs7YTthOzs7Ozs7WTtVLFk7OzthO2E7Ozs7OztZO1UsWTtVO1U7O1UsK0I7VSxPO1M7Ozs7Ozs2Qjs7Ozs7O1k7Ozs7Ozs7Ozs7VztRLFM7UTtTOzs7O29COzs7O1E7Ozs7dUI7Ozs7Ozs7STs7Szs7OztNOzs7Szs7O2M7YyxPOzthOztJLGlCLFM7STtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLO007OztTO1U7OzthLFc7O2E7Ozs7Yzs7ZSxLO2tDLFcsK0I7YyxPOzs7O1U7O1M7O007Ozs7VSxrQjs7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7aUQ7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7Ozs7Ozs7O2UsRztnQjs7Ozs7VSxNO1M7Ozs7Szs7Ozs7Ozs7VztZO2E7OzthLE87YSxPO1ksVzs7VztZLEk7WTtvQjs7Ozs7O1UsSTtVLFc7Ozs7Ozs7OztVOzs7Vzs7Ozs7Ozs7O21CLEc7b0I7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtxQjt3QjtvQjs7Ozs7ZSxNOzs7VTs7O1EsTTs7Ozs7UyxHO1UsSTs7Ozs7Ozs7Ozs7Ozs7OzthLEs7YSxJO2E7cUI7Ozs7Ozs7WSxHO2E7Ozs7O1k7OzthOzs7WTtvQjs7Ozs7Ozs7O2E7OztjOzs7YTtxQjs7Ozs7OztLLEk7SyxXOztHOztJO0s7TSxhO00sUztNOzs7TTs7Ozs7O08sTTs7OztLO007OztNO1E7Szs7O007TyxNO08sVztPLFc7TyxRO08sUzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxHLDJDO0k7SyxXO0ssTTtLLE07SyxTO0ssVTs7O0s7Szs7O0ssb0I7SyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Tzs7NkIsbUI7a0I7Ozs7OztLO00sTztNLE87TTs7SztNOzs7Ozs7O2EsUTs7WTtTLE87Ozs7Ozs7Ozs7YTtxQjs7WTtTLE87Ozs7OzthO3FCOztZO1MsTzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLO0s7SztNLE87TSxPOztLO007UTtNLE87TSxPO29CO0ssSSxxQjs7TTtNO00sTztLO0ssTztJO0k7SSx5QyxXOztLOzs7Ozs7O1M7Ozs7VSxNO1M7OztVO1c7b0I7Uzs7bUIsTTtVO1c7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csbUI7Vzs7VSxNOzs7OztVO1csTztXO1c7YTs7Ozs7Ozs7VTs7Ozs7O0ssTTs7STtLO0ssTztLLFM7O0s7Ozs7Ozs7O0k7SSxJLFc7STs7O0s7OztNLFc7Ozs7STtLLE87SyxPO0s7SztLOzs7OztLOzs7OztLO007TSxNOztNOzs7STtLO0ssYTtLOzs7Ozs7Ozs7Ozs7O0k7SyxNO0k7SyxVO0ssTTtLLE07SyxhO0ssYTtLLGE7O0ssVztLLE8seUI7STtJO0ssYztLLE87SyxVOztLO00sUztNLE87SztNLE07O0s7STtJOztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7cUI7Ozs7OztLO007O1U7Ozs7Ozs7O00sSzswQixXLGdDO0ssRztNO087eUI7O007O087Ozs7O087Ozs7YTs7Ozs7Ozs7Ozs7O0s7OztLO007Ozs7Uzs7O0s7O0k7SyxTO0ssUzs7Ozs7Ozs7O0s7TTs7MEIsZTtzQjs7OztLO007OzBCLGU7OzJCO0ksVzs7SztLO0k7SSxnQjs7SztLOzs7O3dCOztJOztLLHFCLE87SyxPO0k7SSxnQjs7SztLO0k7SSxlOztLO0k7STtLO007TTs7OztZOzs7Ozs7O0s7TTs7OztNO21COztNOzs7Ozs7Uzs7O0s7O007Ozs7O1U7Ozs7Ozs7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7O2E7OztJOzs7SSxrQjtJLE87Rzs7STtHOzs7O0ksTzs7OztJLHVCOztJLFc7RztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QixzQjs7SSxXOztJO0c7O0ksVzs7SSxrQjtHOztJOztLO007TSxNO0s7STtJLE87Rzs7SSw4Qjs7Ozs7Ozs7O1k7OztXO1c7O1k7O1c7O3VCO1c7VTtPLE87O087OztRLFE7UTtRO1E7Ozs7Tzs7Uzs7O1UsVTtVO1U7VTs7Ozs7Ozs7O1k7O2E7YTs7Ozs7Ozs7bUI7Ozs7O2EsTzs7VztRLE87Ozs7Ozs7O08sTzs7Tzs7OztRLE07K0IsdUM7TyxPOztHOztJLEksSyw2Qjs7Szs7Ozs7O0ssSyxpQztLO00sTztNLE87TSxPO0s7Ozs7O3dDOzs7STtJO0ssUTs7O3VDO0c7O0ksMkI7Ozs7Ozs7Ozs7WTs7O2EsSzs7O2dCOzs7O2lCOzs7Z0I7ZTthLFM7YSxPOzs7Z0I7NEQ7Z0I7O2lCOzs7Z0I7ZTtZLFc7Ozs7Ozs7Ozs7WTs7O2E7WTs7Ozs7Z0M7OztNOzs7SSxPO0c7Rzs7STs7O0s7Ozs7STtHO0c7SSxXO0k7Ozs7Szs7Ozs7O1UsWTs7OzthOzthLE07OzthLE07OztTOzs7VTtVO3NCOzs7Ozs7Ozs7O2U7OztnQixPO2dCLFU7Ozs7O2dDOzs7bUIsSztnQzs7OztnQjs7ZTtlLE07Ozs7ZSxNOzs7O2M7Ozs7ZSxROzs7Ozs7YyxNOzs7OztlOzs7Z0I7O29CO2U7O2M7OztlLFE7Ozs7O2M7Ozs7ZSxROzs7OztjLHFCO2MsVzs7OztTO007TztROztRLFE7Ozs7bUI7UTs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7TTtPLFE7Tzs7O0ssVztLO0k7SSxpQjt5QixtQixVO0k7SyxPO0ssSzt5QixvQixXO0k7SyxPO0ssTTt5QixxQixZO0k7SyxPO0ssTzt5QixvQixXO0k7SyxPO0ssTTtLLEs7SztLLFM7Szs7Szs7TTs7OztVOztXLE07VSxrQjs7VyxNOztVO1M7OztNO087Ozs7OztVO1UsTTs7Ozs7OztTLEk7Ozs7TyxNOzs7aUI7Ozs7SztNO00sSSw2Qjs7OztROzs7Uzs7VTtTLEc7VTs7OztROzs7Ozs7Szs7TTtNOzs7Ozs7Ozs7Ozs7O0s7SztJO0ksSSw2Qjs7OztNOztPLE07a0I7TTs7Ozs7OztLO0s7Ozs7OztROzs7Ozs7UztROzs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7O0k7O0s7Szs7Ozs7O1E7Ozs7O087Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O3lCLG1CLGE7SSxVOztLOzs7Ozs7Szs7YTtJO0ksZ0I7Rzs7STtJO0ssc0IsTztLO0s7TSxNO007Ozs7UTs7OztpQjs7O1E7O1E7Uzs7O1k7Ozs7OztZO2E7O2E7OztjLHFCOzs7Ozs7Ozs7Ozs7OzthLFk7Ozs7Ozs7OztlO2dCLE87Ozs7OzRCO2E7O2dCOztjLE07aUM7YTs7Yzs7Ozs7OztZLE87YSxNO1k7Ozs7YTs7Ozs7O2MsVTtjO2M7YzthO1k7WTthO2U7OztZLE87Ozs7Ozs7O1c7USxPOztROzs7O1MsVTs7O1M7Uzs7Ozs7Ozs7OztTOzBCO1EsTzs7UTs7O1M7Ozs7OztRO21DOzs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87NEIsZTs7MEI7O087OztRLE87USxJO1E7O1c7OztVO1EsUTs7O1c7VztZOzs7OzthLE87WSxPOztXO1U7USxpQjs7O1c7VyxXO1U7USxnQjtRLFU7UTs7Ozs7Ozs7Ozs7Ozs7OztNOztLLHlDOzs7UTs7Uzs7OztRLGdCOztROzs7UztXO1MsTztTLGE7Uzs7Ozs7USxXOzs7UTs7Ozs7O1E7O1M7OEIsYztTLE07Uzs7OzthOzs7Ozs7O1E7Ozs7O1E7OztTO1M7Ozs7O1E7Ozs7O2lCOzs7Ozs7O1M7Ozt1Qjs7O1M7O1Usc0I7VTs7NEI7VTtZOzs7OztTO1U7Ozs7UztVOzs7OztvQjs7O1M7OztVOzs7O2M7Ozs7Uzs7a0I7Ozs7Ozs7USxJLGMsTztRO1EscUIsTztROzs7O1E7OzZCLGE7UyxPO1MsZTtTOzs7OztTOzs7O2MsUztjOztlO2U7O21CO2U7Yzs7O3VCOzs7O2E7OztROztRLG1CLE87O1E7UyxRO1MsTTs7O1k7OztZOzs7YTs7O1k7Ozs7Ozs7O3NCOzs7O1M7OztROzs7O1E7O1M7OztTOzs7O2E7Ozs7Ozs7UTs7UTs7UyxRO1M7UyxROzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1M7UTtvQjs7Ozs7Ozs7STtJO0s7Ozs7O29COzs7O0s7STtJOzs7SyxnQix3QztLLE87STtJO0ssTzs7O0ssa0I7STtJO0ssVztLLE87SyxhO0k7STtJO0c7OztJOztJO0k7SyxZO0ssUzs7SztJO0k7SyxROzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7UTs7UztTLE87USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87Ozs7Rzs7STtJO21CO0sseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSSx5QjtTLE87Ozs7Ozs7OztRLG1COzZCO1Esd0I7USxPOzs7Ozs7Ozs7O1U7O1c7VztVLE87Ozs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxJLHdCO1UsTzs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7USxtQjs7Uzs7VTtVLE87VSxPO1MsTzs7USxXO1EsTzs7UTs7UztnQyxtQixhO1MsTztRLE87Ozs7Ozs7O1U7OztXO1c7VyxPO1csTztVLE87OztRLEksd0IsTztRLE87Ozs7RztHOztJO0ssWTs7Ozs7Ozs7Ozs7OztRLG1DO1E7Ozs7O0ssTTs7Ozs7SztNLE87TSxPO0ssTzs7Rzs7STtLO0ssTTtJO0s7SztNOzs7Ozs7O1MsTzs7Uzs7OztVLE07Uzs7SztvRTtHOzs7STs7STtJO0ssWTtLO0s7STs7O29CO007OztPLFE7Tzs7Ozs7Ozs7O0s7O00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7O1c7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7OztNOzs7TztPLFU7TyxRO087Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRO1MsTzs7OzJDLFc7USxPOzs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VztnQyxjO1csUTtXO1c7O1c7OztVO2tCOzs7VTs7O1c7VyxNO1csUTtXOzs7VztVOzs7OzttQjs7Ozs7Ozs7OztlOzs7O2dCLE87ZTtlO2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7b0MsZTtnQjsyQjtlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFE7Vzs7O1c7VTs7O29CO3FCOztzQjs7OzBCOzs7b0IsTzttQjs7Ozs7O1c7O1k7O1ksUTtZO1ksUTtZLE87WTs7O2U7OztlOzs7Z0I7Z0I7ZTs7Ozs7OztZO1c7O21COztVLFc7O1U7VyxRO1csTTtXLFE7OztjOzs7Yzs7O2U7Yzs7Ozs7OztXO1c7VTs7OztrQjs7O1U7O1c7OztXO1c7OztVO2tCOzs7Ozs7Ozs7YTs7Ozs7O2MsTzthO2E7YztjO2M7O2tCO2MsUzs7O2lCOzttQjs7Ozs7b0I7b0I7O21DOztvQjttQjs7OzsyQjs7Ozs7Ozs7Ozs7aUIsTTs7Z0I7YTs7OztVO1csUTtXO1csUTtXOzs7Yzs7O2M7OztlO2U7OzhCOztjOzs7Ozs7O3VCOzs7VztXO1U7Ozs7a0I7Ozs7Ozs7TTtPO1EsUTs7O1E7UTs7Ozs7Tzs7Ozs7TztRLE87USxPO08sTzs7Szs7TSxvQjtNLE87Szs7TTtPO1EsUTs7Ozs7O1c7Ozs7Ozs7UyxNOzs7Tzs7Ozs7USxNOzs7Szs7TSwwQjtNLE87Szs7O007Ozs7OztpQjs7Ozs7O007Ozs7O08sVztPO007Ozs7O0s7TSxVOztNO0ssTztJO0ksTzs7O0k7SyxPO0ssUztJO0c7O0ksc0M7O0k7SyxlO0ssUztLOzs7O0k7O0c7SSxnQjtJO0k7OztJLDhCLE87d0I7O0c7O0ksSSxXLDhDOzs7NEIsTzs7O0c7O0k7STs7Ozs7Ozs7Ozs7RztvQyxxQzs7STtJOztJOztNOzs7Tzs7Ozs7Ozs7Ozs7OztVOztXLFM7VyxNOzthOzs7OztVOzs7O1U7O1c7Z0MsYztXLFc7VTtVO1csTzs7Ozs7VTtVO1csTzs7Ozs7Ozs7WTtZO2E7O2lCOzs7Ozs7Ozs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFc7VyxPOzs7OztnQixTOztnQjt5Qjs7OztlOzs7OztVLG1CLE87O1U7VyxNO1csTTs7O2MsWTtjOzs7ZTtjOzs7OztXOzs7O1U7O1c7OztVOzs7OztjOzs7VTs7VyxRO1c7VyxROzs7YyxZO2M7OztlO2M7Ozs7O1c7Ozs7O2tCOztNO0s7SztZO00sTTs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJLE87Rzs7SSxZOztJO0c7O0k7Z0I7OztNLE07aUM7O0k7Ozs7Ozs7O2U7O0c7O0k7Ozs7UTs7STs7OztHOztJO0ssVTtLLDhCO0ssWTtJOztLOztNOzs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07SztLOzs7VTs7Ozs7O1M7OztLO0ksVztHOztJO0ssa0IsTTtLLE87O0k7SyxPO0k7STtLLE07SyxNO0ssTTtJLE87O0c7OztJO0ssTTs7O0s7TSxNO00sTTtNLFU7SyxPO0k7STs7Tzs7Tzs7TztlOzs7O0ksWSxPO0k7O0ssVTtJLE87Ozs7SSx1Qjs7STtHO0c7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO0ssYSxXO0k7RztHOztJO0s7Ozs7SyxrQjtLO0ssWTtJOzs7OztZOztHOzs7Szs7SyxTO0s7TSxPO00sSTtLO0k7STtLLE8sVztLLFE7OztLLE87O0ssYzs7SztJO0ksTztHOzs2Qix3QjtJO0ssTTs7OztJO0c7RyxhLHVDLFM7OEIsTywrQjs7STtJOzthLGMsTzs7Ozs7dUIsVzt1QjtzQjtZOztHO3NCLHdCOztJLEk7eUIsUztJO0k7OztjO2E7Ozs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87O0ssVztLLFc7STs7STs7O2MsVztjLFc7YTs7Ozs7OztHOzs7O0ksbUMsUzs7STt5QixPLGMscUI7O0k7OztjLE8sYzthOzs7Ozs7Rzt3Qix5Qjs7SSxRLHFDLFM7O0kscUIsaUMsa0I7STtHOzs7SztLO0k7SSxPO0c7O0ksdUQ7STtHOztJLHNDO2dCO0k7O0ssUTtLLE87SyxPO0ssUztLO0s7SSxXOzs7STs7Tzs7Ozs7O1E7OztRO087O087OztROzs7Tzs7TywwQjtPLE87Ozs7STtLO0s7STtHOztJLFk7SSxvQjtJLGlCO0k7Rzs7SSxzQztnQjtJOztLLFU7O0s7O0s7O1Esb0I7Ozs7d0IsTTs7Ozs7Uzs4QixNOztTLEksa0I7Ozs7O1csVztXOztVLE07O1M7VTs7VSxVO3VCLE07Uzs7VSwwQixzQjtVO1U7OzthLDBDO2E7O1k7VTs7OztnQjs7O2lCOzs7Z0I7Ozs7Ozs7O2U7Ozs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTs7OztpQyw2QjtTOzs7UTs7Ozs7O1M7Ozs4QixxQztROztROzs7OztTOzhCLHFDO1E7O1E7OztTOzs7UyxxQiw2QjtROzs7Ozs7Ozs7Ozs7eUI7O1ksd0IsZ0M7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthOzs7Z0I7ZTtZOzs7Uzs7OztVO1Usc0I7VSxVO1UsNEIsMEI7VSwwQixZOzs7YTs7O2UsTTs7OztlO2U7Ozt1Qjs7YztlOzs7O1k7NEIsd0I7VSxvQjtTOztXO1k7YztZOzs7Ozs7Ozs7OzRCOzs7O1k7O1k7Ozs7O2E7Ozs7O2dCOzs7O2EsTTtZOzs7Ozs7Z0I7Ozs7NEI7NEI7MkI7O2U7Ozs7O3dDOzthO1k7OztzQixlOzt1QjtxQzs7d0I7Ozs7Ozs7Ozt3QixPO3VCOztzQjs7cUI7Ozs7Ozs7WTs7Ozs4Qiw2QzthOzs7OztZOzs7dUIsaUIsaUI7dUI7Ozs7MkI7dUIsTTs7O2dDOzs7c0I7Ozs7Ozs7UTtROztROzs7O1MsVTs7O1MsVTs7O1M7OztZOzs7OzthLFk7YSxZO2E7WTtXO1M7O1E7O1E7Ozs7O1MsVTs7O1M7OztZOzs7YSxRO1k7VztTO1E7O1EsMEI7UTs7UTs7OztTOztZO1k7VztTO1E7O1E7Ozs7Uzs0Qiw0QjtROztROzs7O1M7Uzs7WTtZO1c7UztROztROzs7UztTLG1CLHNCO1E7O1E7OztTLG9CLHNCO1E7O1EsNEIsb0Isb0I7UTtnQiw0Qjs7STs7SyxrQjtLLFk7STs7SyxrQjtLLFU7ZSxxQyxTOztLLDRCLGM7STs7O0ssVTtLOztJOzs7Ozs7SztLO087SztLLFM7SyxRO0s7OztLOztLO087Ozs7Ozs7O0ssUTtLO0k7OztJLGtCO0ksTztHO3VCLDRCLHdCOztJLHVCOzs7Szs7TTs7UyxPOztRO007O1MsVTtTLE87UTt3QixZO00sTSxXO00sTTsyQixlO00sTSxXO00sUyxXO0s7YTs7O0k7SyxPOztJO0k7SyxVO0ssTztJO29CLFk7STtLLE0sVztLLE07SyxXLFc7STtZOztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOzs7TyxHO1EsTTtPOztPOzs7Ozs7O1Esc0I7USxPO087O08sVztPLEc7USxNO087O087Ozs7OztRO087O087Ozs7O1E7Tzs7Tzs7O1E7OztXO1c7VTtPLFc7Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7OztPOzs7USxzQjtPLGM7O087Ozs7O1Esc0I7USxPOzs7O1c7VztVO1EsTzs7Ozs7VztXO1U7USxPO1E7Tzs7Tzs7Ozs7USxzQjtRLE87OztXO1c7VTtRLE87Tzs7Tzs7O1Esc0I7TyxlOztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7USxzQjtRLE87UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7OztLO0s7STtJLE87Rzs7STtJOzs7UTs7UTs7UTs7USxzQjs7OztVLFc7VTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7WTtZO1c7UTs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7UTtrRDs7O1E7a0Q7O1E7O1Msc0I7USxPOzs7UTs7OztZO1k7VztRO1EsMEI7USxPOzs7USxPOzs7UTs7Ozs7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztxQixnQyxrQjtJLE87Rzs7SSxvQjtJLE87Rzs7OztLOzs7Ozs7Ozs7Ozs7VzthO2U7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7O00sbUIsTztNLFMsTTtNO0s7SztLO00sTztNLE87TSxXO0s7TSxJLFcscUM7Ozs4Qjs7O0s7MEIsa0IseUI7SztNLE87TTt5QjtLO00sTztNLGU7TSxVOzs7TSxPO0s7SztNLFE7TSxTO3VCLGtCO0s7TSxPO00sWTtLOztJO0s7TTs7OztNOzs7O1U7O0s7Ozs7O007OztlOzs7O0c7OEI7RztJOzs7STtLLFE7SyxZO0ssVztLO0k7Szs7SyxXO0ssTztJOztLOzt5QixPOzs7O1M7OztVLFU7Ozs7O1U7Vzs7OztXOzs7Ozs7UyxPOzs7OztRO1EsTzs7OztTOzs7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7VTtVLGM7Ozs7WTs7YSxLOztZO1k7Ozs7VTs7Ozs7O0ssTztJOzJCLDRCOztLOztLOzs7STtJOztLOzs7Ozs7O1UsRztXO1ksSztZLE87WTs7WSxNOzs7MkI7Ozs7Ozs7UyxHOzs7Z0I7O0ssVzs7TSxrQztNO0s7SyxPO0k7SSxhO0c7O0k7OzsrQjs7Ozs7SSxJLG9CLFE7STtLLEksVyx5Qzs7OzZCOzs7STs7SyxZOzs7O2E7OztLO0ssTztJOzs7Ozs7O1M7Uzs7VSxzQjtTLE87Ozs7Ozs7Ozs7Ozs0QixrQiwyQjtTOzs7O1M7O1Usc0I7UyxPOzs7OztVOztXLFU7VyxVOztXO1c7Ozs7VyxNO1U7O1M7Ozs7NEIsa0IsMkI7Uzs7Ozs0QixrQiwyQjtTLE87OztTOzs7NEIsa0IsMkI7UztpQjs7O1U7Ozs7Ozs7O1M7UywwQjtTLE87Ozs7Ozs7VztXO1k7WSxPO1c7Ozs7Uzs7Ozs7OztTOzs7OztTO1M7Ozs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7O1M7Ozs7VTtVLHNCO1MsTzs7Ozs7aUI7O007Ozs7STtJLFk7Ozs7OztTOzs7Ozs7O1Usc0I7VSxPO1M7OztTOzs7Ozs7OztVO1MsTzs7O1M7Ozs7OztVO1M7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7O1M7Ozs7VSxzQjtVLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7OztTOztTOzs7O1U7Ozs7YTthO1k7VSxhOzs7O2E7YTtZO1UsYTs7VSxzQjtVLFc7Uzs7Ozs7Uzs7Ozs7VSxzQjtVLE87OzthO2E7WTtVLE87Uzs7OztVOzJCOzs7OztrQzs7O1M7O1Usc0I7VSxPO1M7VTtXLFU7Ozs7O2M7YyxXO2E7VyxLOzs7O2M7YyxPO2E7VyxNO1csTzs7O2M7YzthO1csTztVOzs7O2lDOzs7Ozs7OztXO1c7Ozs7O1M7OztVOzs7Uzs7O1ksTTtXO1c7Ozs7VTtVOzs7OztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7O1M7O1M7Ozs7OztVLHNCO1UsTztVO1M7OztTOzs7UztpQjs7O0k7Szs7O0ssTTtJO0ssSSxXLDBDOzs7NkI7OztJOztLO0s7SyxPO0k7O0s7TSxVOzs7Ozs7OztNO08sUTs7Ozs7Ozs4Qjs7OztJOzs7Ozs7NkI7O1M7O1M7Ozs7Ozs7OztjO2Msb0I7YyxPO2E7Ozs7Uzs7VTtXO3lCOzs7Ozs7O1M7Ozs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7Ozs7O2M7ZTtlLHNCOzs7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7aUMsa0Isd0I7Uzs7O2lDLGtCLHdCO1MsTzs7O1M7Ozs7YztlO2Usc0I7OztTO2lCOzs2Qjs7OztTOztVLHNCO1MsTzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7Ozs7Uzs7OztVO1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7STtJLGM7STtLOztNLGUsNkI7O0s7STtJO0s7O00sZSw2Qjs7SztJOzs7Ozs7O1MsSSxVLDJDOzs7Z0M7Ozs7Ozs7Ozs7O2M7Ozs7O2UsTztjO2E7Ozs7Uzs7VTtXO3VCO1c7O1k7Ozs7O1M7O1M7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7O1k7YSxNO2EsTTtnQjthLFU7YSxPOzs7Ozs7UyxPOzs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7OztTLGM7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhO1UsVztTOzs7OztTOzs7OztVLE07OzthO2E7WTtVLE07Uzs7O1MsZTs7Uzs7Ozs7O1U7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7Ozs7VSxtQjtVOzs7UztVO1U7Ozs7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzt5Qzs7Uzs7Ozs7O1UsTTtVO1M7O3dDOzs7Uyx5Qjs7O2lCOzs7STtLO0ssUTtLO0ssYTtJLFE7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7STs7O0ksdUI7OztHOztJLFU7Ozs7O0c7O0ksVTs7SztLO0ssTztJO0k7SSxVO0k7STs7O0c7Rzs7OztJLGtCO0k7STtLLGU7SztPLDJCO0ksRztLLE07STs7STs7OztNO08sTztPLE07O007Ozs7OztHO3VCLG9EOztJOztlO21COzs7O2lCLE07O0ssRztNO007Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7STsrQiwyQztJO0ssTTtlO2E7Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0ksbUI7O0ksTztHO0csSSxzQjs7SSxpQjs7Rzs7STtvQixXLHFDO3FCOztHOztJLEc7SyxPO0k7OztPO1M7Szs7UTs7SyxPOztJO0c7O0k7SyxXO0s7TTtPLGE7TztTO1k7Ozs7Ozs7OztLO2dCOzs7O08sSSxZOzs7O1E7O1MsTTtTLE07ZTs7Ozs7O08sWTs7OztROztTLE07UyxNO1MsTTtlOzs7Ozs7Ozs7OztJLE87Rzs7STs7OztHOztJOztpQjs7OztNLEcsdUM7TSxJOzs7TTs7O08sTztNOzttQztPOztNLEk7OztHO0c7O0k7O0ksaUI7O0ksTTtHOztJO0k7SztNLE07TSxLO0s7OztxQjs7Ozs7O007Ozs7Ozs7O0c7O0ksSSxROzs7MkI7OztJLE87Rzs7STs7SztxQjs7Rzs7STtLO0ssTTtLLE07SztxQjtJO0ssTTtLLE07c0IsZ0I7cUI7Ozs7Rzs7STs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STsyQixxQzs7Szs0QjtLO0k7O0s7O0s7STtJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0k7Rzs7SSxJLHlEOzs7O00sTTs2Qjs7O0c7O0k7RztHOztJO0k7Rzs7SSxJLHlEOzs7Ozs7Ozs7UTs7TSxZO2tCLE07O29CO00sdUI7TTtNOztLOztHOztJO21COztJO0c7O0k7SyxPOzs7SztLO0k7STtJO0c7O0k7SztLLEk7O0s7Ozs7TTtNO007TTs7Ozs7SSxPO0c7O0k7SSxPO0c7O0ksSSwwRDs7OztNO007TTs7Ozs7STtJO0ksb0M7Ozs7TTtNO007Ozs7O0k7STtJLG9DOzs7O007TTtNOzs7OztJLE87Rzs7STs7SyxJLEksTzs7OztlOztLO007TTs7Ozs7Ozs7STtJOztLLFM7O00sSSxRLGU7OzsrQjs7O0s7SztNO00sMkIsTywyQjtLLE87STs7OztLLE87SSxlOztLOztROztjO00sTTtLO0k7STtLO0ssMkIsTywrQjtJLE87Rzs7STtJO0k7O0c7OztLOzs7UTs7O1M7O1E7OztROzs7UTs7O1E7O0k7SSxPO0c7O0k7Ozs7OzRCOzs0Qjs7NEI7OzRCLE87OzhCOzs4QjtzQzs7O087OztRO1UsNEI7UTs7O1c7Vzs7O1U7TztPOztPOztRO1UsK0I7OztXLE8sK0I7VTtPO087bUM7O0c7O0ksSSxPLHVDOztLLHFDO0s7SztJO0k7O0k7Rzs7STtHO21DLHVCOztJO087SztJLEksTyx5Qjs7SyxxQztLO0s7STtJOzs7Rzs7STtLO007TyxXO08sc0IsTzs7d0IsTyw0QztPOzt5QixPLDRDOzs7Ozs7OztNLFM7TTtNOzZCLE8sMkI7TyxNO2tCOzt1QjtLLFk7O0s7OztNLFE7TTtROzs7SyxJLEksTTs7Ozs7O0s7SyxJLEksTTs7Ozs7O0s7Szs7Ozs7O0ssTzs7RztvQyw4Qjs7STtJLHdCO0c7O0k7SSxpQjtJO0c7O0k7O0s7d0I7O0s7STtJLE87Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCO0s7O00sVTs7O00sTTs2QjtLO0k7SSxPO0c7aUMsdUI7OEIsK0I7O0k7Szs7O0c7O0ksSSwyQjs7SztNLE07TTs7d0I7OztJO0k7STtHOztJO0c7O0k7Rzs7O0k7O3lCLE87OztPLE87OztPLE87OztPLE87Ozs7SSx1Qjs7SSxXO0c7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxVO0ssTTtLLE87YSw0QjtJO0ksTTtHOztJO2dCOztJLGtCO0ksTztHOztJLHdCO0c7aUMsdUM7O0ksSSxLLDRCO0k7STtJO0ksTztHOztJLFM7O0s7TTtNLFMsMkI7SyxLO00sTTtLLFU7O0ssTztJO0k7SztLOzs7Uzs7UTtJLE87Rzs7SSxTO0k7SSxVO0k7SztNO00sUztNLE07TSxNO00sTztpQjtLOztNO00sTTs7WTtNLE07SyxTO0s7TTtPLE07Ozs7Ozs7O0s7SyxLLDZDO0s7SyxNOztJLFc7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STtJO2U7STs7O2tCLFc7SyxRLFc7STtJO0c7O0k7OztHO0c7OztJLFM7STtLO2U7SyxHOzs7TSxVO00sRyxrQjtPLE07Ozs7Ozs7Ozs7Vzs7OztJO0c7O0ksYywrQjtHOztJO0s7Szs7O0k7O00sVTs7O08sVTtPOztNLFU7K0I7Ozs7TTtNLGE7TTs7OzZCLE8sOEI7ZTs7Ozs7SztLLE07O0k7d0Isb0Q7SSxPO0c7O0k7Ozs7MkI7O0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7O0k7STs7O007SztLLE8sVztJO0k7SztLLDBCLHNDO0ksTztHOztJO0ksa0I7STtHOztJO0ksa0I7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJLE87Rzs7STtJO0k7STtJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0ksTTtHOztJLFk7O0k7Rzs7SSxZOztJO0c7RztJO0k7STtJO0k7STtJO0k7STs7STtLLEc7TSxNO2E7TSxNO0ssZ0Q7Ozs7TyxZOzs7O1M7Ozs7Ozs7Ozs7O1E7Ozs7O08sTTs7O0s7Szs7Ozs0Qjs7O0c7O0k7ZTtJLFc7SSxPO0c7O0ksZTtJO0s7TSxNO00sTzs7Ozs7Ozs7SSxhO0k7STtHO0c7O0ksTzs7Rzs7STs7O08sTTs7Ozs7Szt5QixPLDhCO00sTztLOzs7OztLLDBCO0ssTzs7Rzs7SSxnQjs7SywwQjtLLE87O0c7O0kscUM7eUM7SSxvQjtJO0k7Rzs7STtLLFM7SyxPO0ssUTtrQyxPO0ksVztJLG9CO0k7STtHO0c7O0k7SyxPO0ssTztJLE8sVztHOzs7SywrQixTO0k7O0ssK0IsYTtJOzs7Ozs7Ozs7O1Esb0I7OztTLDBCO1MsTzs7Ozs7MEI7Ozs7VTs7VTs7VTs7VTs7Uzs7MEI7Ozs7O1U7O1M7O1E7Ozs7OztTOzs7OzthLFU7YSxvQjthO2E7WTtTOzs7O1M7Ozs7Uzs7VTs7O1UsTzs7Ozs7O1E7O3lCOztRO1MseUIsUztTO1M7b0I7USxxQjs7OztRLDBCO1EsTzs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOzs7UTs7O007TyxRO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOztTOztTLGM7dUI7Uzs7VSxPO1Usc0I7UyxPOzs7UyxPOzs7Ozs7OztTOztTOzs7O1MsYzs7Ozs7O1M7O1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7Ozs7O1M7Ozs7Ozs7Ozs7O1M7Ozs7OztVLGM7Ozs7OztVOztXLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs7USxPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7O1E7Ozs7SSxlO2U7O0ksb0I7SSxPO0c7O0k7Ozs7STs7Tzs7SSxHO0ssSSxTOztNOztPLE87TyxXO08sTztNLFc7TSxNOztLO00sTTs7OztLO007TztROztXOztXO1U7USxPOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7d0IscUQ7aUI7O0s7O007OztTLGM7Uzs7VSxhO1UsWTtTLE87O2lCOztLO0s7STtJO0k7SyxRO0ssRzs7O087OztRLFE7Ozs7Ozs7OztxQjs7O1M7VSxPO2lCOzs7OztPOzs7Ozs7VSxJLGM7Ozs7WSxNOzs7cUI7Ozs7VTtXLEk7O1c7WTs7Ozs7O1U7VyxNOzs7Ozs7O087USxNOztPO1EsTztRLE87Ozs7Ozs7O087Ozs7Ozs7Ozs7O1U7VTtTO007Ozs7Ozs7SSxXOztJLFc7OztHOztJO0k7SyxNO0ssTTtJLE87RztHOztJO0s7SyxNO0ssTTtJLE87RztHOztJOztHOztJOztLOztPO1k7TSxHO00sRzs7Ozs7O0k7RzsyQiw0QjsyQiw0Qjs7STs7O0s7OzRCLDRCO00sTTtZO007Ozs7Ozs7O1MsbUI7O1MsTztRO1k7OztJLFE7SSxVO0k7Ozs7Ozs7O007TTtNO007O08sVTs7O0s7Szs7OEI7OztRO1E7UTs7O1M7O1UsVTs7Ozs7Ozs7O1E7Ozs7Ozs7aUI7UyxNOzs7OztROztVO2U7O1c7Uzs7VztnQjtVOzs7ZTs7OztVLGM7Ozs7Vzs7VTs7YTtVLE07Ozs7Ozs7OztROztTLE07Ozs7UTs7UyxNOzs7OztJOzs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7O0k7STtLO1k7Szs7Ozs7TTs7TyxZO08sTSxXO08sTTtPLFk7TTtNLE07OztLOztNLE0sVztNLFksVztNLFc7SztLLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLCtDOztJLDhCO0c7O0k7Rzs7STtHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzt5QixTO0ksaUI7STs7OztHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7Rzs7RztJOztHO0c7STs7RztHO0k7O0c7RztJOztHO0c7STs7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7Ozs7MkIsUzs7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7MkIsNkM7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7SSxNOztHO0c7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJLDBCO0c7O0k7OztZO0c7O0k7Rzs7SSxvQztHOztJOzs7WTtHOztJO0c7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG1EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt5QixvRDs7STtHO3VCLGtEO3VCLGtEOztJO0c7dUIsa0Q7d0IsbUQ7eUIsb0Q7eUIsb0Q7O0k7Rzs7STtHO3lCLG9EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7a0IsMEQ7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOztLLHNEOztNOzs7aUMsaUM7O21DO007TztrQjs7TTtrQyxXLGM7TTs7O1MsdUIsa0IsaUI7OztTOztrQjtrQix1QjtpQjs7O1MsMkIsWSxpQjs7O1MsMkIsWSxpQjs7O1M7NkIsb0IsMEI7OztTLHVCLFksMEI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O3FCO1M7OztVO1Usc0I7VSxPO1M7OztTOzs2QixvQiwwQjs7O1M7O2tCOzJEO2tCO2lCOzs7Uzs7a0I7a0I7a0IsTztpQjtvQzs7SztLO0k7SSxPO0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csNkI7RztHLDRCO0c7Ryw0QjtHO0csMkI7RztHLGlDO0c7RyxrQztHO0csZ0M7RztHLHdCO0c7Ryx3QjtHO0csd0I7RztHLHFCO29CLGtEOztHLHlCO0c7Ryx3QjtHO0csMkI7RztHLDhCO0c7RywrQjtHO0csNkI7O0k7SyxPO0ssTztJLE8sVztHOzttQixvRDtHO0ksUTtJO0csdUI7RztHLDBCO0c7RywwQjtHO0csdUI7RztHLDBCO0c7RyxzQjtHO0csMkI7RztHLDhCO0c7RywwQjtHO0csNkI7RztJLGM7STtHLDRCO21CLGtEOztHLHNCOztJO0ssTztLLE87SSxPLFc7Rzs7RyxpQjtrQyw4QjtvQyw4Qjs7Ryx1QjtHO0csc0I7RztHLHdCO0c7RyxvQjtHO0csK0I7RztHLHdCO0c7RyxvQjtHO0csd0I7RztHLG1DO2dDLHNDOztHLHNDOztJO0k7Rzs7Ryx5QjtHO0csdUI7RztHLHVCO3lCLDZCOztHLHVCO0c7RywyQjtHO0csMkI7RztHLHVCO0c7RywyQjtHO0csb0I7RztHLHNCO0c7RyxzQjtHO0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO0c7Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLGlCO2tCLGtDOztJLGU7SSxPO0c7cUIsa0Q7d0Isa0M7OzRCLHVDOzRCLGlDOztHLDhCO3dCLG1DO3dCLGtDOztHLGlCO0c7RyxpQjtHLEk7MkIsNEI7O0cseUI7RztHLHlCO0c7Ryx1QjtrQyw2Qjs7Ryw0QjtHO0csNEI7RztHLDBCO2lCLGtDOztHLHNCO0c7RyxvQjtzQiw2QjtrQixrQzsrQiw4Qjs7SSxZO2dCO0ksdUI7Ozs7ZTs7Ozs7Rzs7SSxZO2dCOztJLE87Rzs7RyxzQjtHO0cseUI7MkIsTywwQjt3QixPLDBCO3lCLE8sMEI7O0csNEI7RztHLCtCOzBCLFc7MkIsVztvQixrQzs7RywwQjtHO0csc0I7RztHLHdCO0c7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOztHLDBCOztJLE87RzswQixtRDtxQixPLGlEO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOztHLHdCOztJLE87Rzs7Ryx5QjtHOzJCO0csSTtHLHlCO0c7RyxzQjtHO0csMEI7RztHLHdCOztJLGU7SSxPO0c7O0ksVzs7O0c7O0k7Ozs7Rzs7Ryw4Qjs7STs7OztHOztJOzs7Rzs7STs7O0c7eUIsNkI7MkIsNkI7dUIsTyxxQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7O0k7STs7SyxNO0ssTTtLLFM7SyxNO0ssVztLLE07SyxNOztLLFM7STtJLE87Rzs7STtJO0k7O0ssTTtLLE07SSxPO0c7OztJO0ssWSxrQjs7OztnQjtLOzs7OzJCOzs7OztJO0ksVTtJO0s7TSxNO1k7OztJO0k7STtHOztJLEcsbUM7SSxlO0k7STtHOztJO0ssVTtLOzs7YztjLE87YTtJOzs7Szs7TSxNLFc7SyxlO0s7TSxNO1c7Ozs7OztLO00sTTtvQjs7OztLO00sMEI7TTs7O3dCLE8sd0I7SSxPO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixnQztHOytCLGdDOztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87MkIsTyxxQztNLFE7TSxRO00sTzsyQixPLG1DO00sUzs7SztrQixNOzs7Ozs7Ozs7OztROztTO1MsRztTLEc7UyxJOzs7Ozs7Ozs7O0s7O007UTs7VztNLFc7TSxXO00sVztNOzs7UyxPLHFCO1E7TSxhO007OztTLE8scUI7UTtNLFk7Szs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O087UTs7d0I7TTs7Ozs7TyxPO2tCOztLOzs7OzRCOzs7OztJO0ssRzs7OzswQix5QjtjOzs7OztJLEs7SyxPOztJOztLLFU7TSxJOztNLEk7O0k7SztPOzs7STs7TSxPO0ssVTtNO007TSxJOzs7TSwwQjtNLEk7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0ssaUI7SztNO087Uzs7TyxPOzs7O1U7VyxTO1csTztVO1UsVTtVLE87UztPLGE7TyxJO007TTs7OztNO00sTTs7Szs7OztLOztNO007OztLLFM7SztNOztNLGE7TTtNO087O1E7UyxZOzs7Ozs7Ozs7Ozs7Ozs7OzthO2MsYzs7Yzs7Ozs7Ozs7Ozs7Ozs7YTs7YyxPOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7TTtNOzs7Szs7Rzs7Ozs7Ozs7SztLOzs7O1M7O1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiw0Qjs7UTtLO0ssTzs7O0s7TSxhOztNLDRCOztRO00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXOzs7SyxPLHFCO0k7SSxHOzs7OztLOztNOzs7O0ksMEI7STtLO087Ozs7SyxXO0s7Tzs7OztLLFc7SztPOzs7TSxXO007ZTs7Ozs7Ozs7O0k7SyxjLGUsd0IsUztLO00sTztNLE87SyxPO0k7Ozs7Ozs7OztHOztJOzs7Ozs7Rzs7STs7STs7SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOzs7Szs7O00sSTtLLEc7TTtPLE87Tyw0QjtNLE87O0ssVztLLE87STtJLE87Rzs7RztJOzs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0s7TSxPO00sTztNLFU7SyxHO007YztNOztLLFM7O007TyxPO08sNEI7OztVLFc7VSxPO1M7TTs7SztNLE87TSxPOztNOzs7OztLOzs7O0s7TTs7O1M7OztLO007OztTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7STtLOzJCOztJOztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7Ozs7OzswQixrQzs7Ozs7OzswQiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs2Qjs7Ozs7Ozs2Qjs7O3dCLGM7Ozs7OzZCOzs7eUIsbUI7Ozs7OzZCOzs7eUIsbUI7Ozs7Ozs7OEI7Ozs7Ozs7Ozs7OEI7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt5QixpQjtNLHNCO0s7SyxlO0s7Szs7TTs7TyxJO087OztVOzs7OztXLE87VyxPO1csVTtXO1c7VTs7VTtTO08sVTs7O1U7Ozs7O1U7Vzs7VTs7VztZLEc7YTtZLFc7WTs7VyxHO1k7VyxXO1c7VTtVOzs7VyxXO1csUzs7Ozs7VTtTO007TTs7Ozs7Ozs7OztXO1ksUTs7O1k7OztZO2EsTzthOztXO1c7Ozs7O3FCO3FCOztVO087OztPO2M7TyxXO087UTs7cUMsd0M7TztPOzs7O1c7VyxPO1U7USxjOzs7VztXOzs7WTs7O2E7WSxPOztXO1c7VztXLE87VTtPO087O007OztNLFc7TTs7SztLOzs7OytDO0s7Szs7Rzs7STtJLE87Rzs7STtNOztLO0s7O0k7OztlO0s7SyxjO0ssTztLO0k7STtJLE87Rzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQixPLHNDO21CLE8seUM7bUIsTyxzQztxQixPLHdDOzs7STtJLGtCO0k7STtLLE07SztPOztLLE87Ozs7Ozs7Ozs7STtJLE8sVztHOztJO0ssTTtLO08sVztJLE87YTtHOzs7SztNLE0sVztNO1E7VTtNOzs7OztVLFU7VSxPO21COzs7O1M7TTs7SztLO0s7SztJO0ksTyxXO0c7O0k7SyxTO0ssTTtLLEs7SSxPOztHOzs7SztLLEcsNkI7SyxJOztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7O0k7SyxNO0s7TztTLFc7SztPLFc7O0s7SyxPO0k7SSxPLFc7Rzs7OztNOztPLFU7TyxPO007TSxPO0s7O007TSxLO087TyxLLDZCOztNLE87SztLLE87STtJLE8sVztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7R2dHampCTTs7OztJQUFBO0lBc0hNO0lBTVo0NEg7SUFFQUM7SUE1Qk8sa0JBMEJQRCxTQUVBQztJQTRCSjtHQUVRO0dBRWUsU0FBbkJDLFcsVTtHQVBBO0lBQUE7O09BT0FBOzs7O0lBUzBCO0lBb0NYO0lBbEJBO0lBaUNOOzs7OztFOzs7Ozs7Ozs7Ozs7R0V4TUQ7Ozs7O0lBQUE7WUFtQ1JDLElBQUtDLEdBQVNDLEdBQUksT0FBSkEsS0FBVEQsSUFBQUEsSUFBU0MsRUFBMkI7WUFFekNDLElBQUtGLEdBQVNDLEdBQUksT0FBYkQsS0FBU0MsSUFBVEQsSUFBU0MsRUFBMkI7R0FuQk47SUFBQSxxQ0FpQm5DRixLQUVBRzs7Ozs7Ozs7Ozs7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Q0E3Qjs7R0FLb0U7O0lBR3BFNkI7SUFDQTdCO0lBSm9FLGVBR3BFNkIsT0FDQTdCO1lBTUE4QixRQUFNM0MsR0FBSSxPQUFKQSxFQUFxQjtZQUMzQjRDLFFBQU01QyxHQUFJLE9BQUpBLEVBQXFCO0dBSnFDLG1CQUdoRTJDLFNBQ0FDO1lBTUFDLFFBQU03QztJQUE4QixVQUFBLG1CQUFhLHdCQUEzQ0E7SUFBSTtHQUFrRDtZQUM1RDhDLFFBQU05QyxHQUFJLE9BQUEsd0JBQUpBLG9CQUErQjtHQUp3QjtJQUFBLGFBRzdENkMsU0FDQUM7OztPQWpRRm5GO09BS0FDO09BTUFDO09BQ0FDO09BRUFDO09BRUFDO09BUUFRO09BUUFFO09BS0FDO09BV0FPO09BRUFDO09BS0FHO09BSUFFOzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCLE87O1E7OztRLE87O1Esc0M7USxROzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EsTzs7NEI7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7O0c7eUI7NkI7O0k7Ozs7Ozs7OztLOztNO0ssTzs7SSxNO0c7RyxJLEk7O0ksc0M7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7Ozs7USxrQixRO3dCOzs7O2tEO3VDO1E7UyxRO1M7UztTO1M7Ozs7Ozs7Ozt1Qjs7Ozs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksSSxlLG9DOztLO0s7STtJOzs7OztJO1k7Ozs7Ozs7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7dUIsVztHLDZCOztJLFU7STs7Rzs7SSxVO0k7O0c7O0ksVTtJOzZCLE07STtHOztJLFU7STs2QixNO0k7Rzs7STtLO087OztLO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7STs7TztJLE87Rzs7STtLO007O2dCO007TSxNO0s7Ozs7MkI7OztHOztJLEksMkM7OzsyQjs7O0c7O0k7STs7UTs7O007O087O1E7USxZOztROzs7O1k7Ozs7Ozs7OztLLFU7SyxPOztHOztJO2lDO0c7O0k7aUM7Rzs7STtnQjs7Ozs7Ozs7Rzs7STtLOzs7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs4QixvQzs7SSxHLGdDOztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7O0k7Rzs7STtJOzs7Ozs7TTs7TyxvQjs7UTtTO1M7Uzs7OztpQjs7Ozs7OztPO1E7UTtROzs7Ozs7OztLLE87O0c7bUMseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7R0M1RVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR1J1RDtJQUhROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdSQTs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0VrQk47Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O1lBRUlDLGVBQWdCQyxTQUFTQyxLQUFLQyxPQUFNQyxLQUFJQztJQUMxQyxHQURrQko7S0FJQTtNQUFUSyxJQUpTTDtNQUlBLE1BQUEsMkJBSm9CRztNQUNsQ0csWUFHVSxzQkFBTEQ7O1NBSExDLFlBRGtDSDtJQU10QztLQUFBO09BTmdDRDs7Ozs7b0VBQUFBOzs7S0FTMUIsTUFBQSwrQ0FUcUJEO0tBTXZCTSxXQUNRLHNC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QUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2RUFTO09BN0VBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F0RUFUO09Bc0VBUztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUdBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEZBVTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BMERBTTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvR0FXO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVUFDO09BcEJBRjtPQVVBQztPQW9CQUU7T0E5QkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09Bd0NBSTtPQVdBQztPQW5EQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0E2REFNO09BV0FDO09BeEVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQVE7T0FuRkFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNEZBUztPQTVGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxR0FVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQkFFO09BcEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BMkJBRztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bck5BeEI7T0FxTkF3QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWxCQUY7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQUFBQTtPQStEQU87T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0VBUTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXhFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpRkFTO09BakZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTBGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bek1BdkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvT0EwQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBPQTFCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNk9BMkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E3T0EzQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpTEFvQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0FTQUM7T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtP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O0lBQUFDO0lBSVJDO0lBSUFDO0lBQ0FDO0lBTUFDO0lBTUFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBT0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBbURBQztJQUdBQztJQUdBQztJQUdBQztJQUlBQztJQUlBQztJQUlBQztJQUdBQztJQUdBQztJQUdBQztJQU1BQztJQU1BQzs7Ozs7U0F0T0E1RjtTQUlRQztTQUFBQztTQUNBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQzs7U0FJUkM7U0FJQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FJQUM7U0FDQUM7U0FzQkFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBSVFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBSVJDO1NBSUFDO1NBQ0FDO1NBTUFDO1NBTUFDO1NBRUFDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBT0FDO1NBR0FDO1NBSUFDO1NBQ0FDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBTUFDO1NBbURBQztTQUdBQztTQUdBQztTQUdBQztTQUlBQztTQUlBQztTQUlBQztTQUdBQztTQUdBQztTQUdBQztTQU1BQztTQU1BQzs7U0EzR0V2TDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FZQUU7SUF2SUZzTDtJQUlRQztJQUFBQztJQUNBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQzs7SUFJUkM7SUFLQUM7SUFDQUM7SUFvQ0FDO0lBeUJRQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQVFSQztJQUNBQztJQU1BQztJQU1BQztJQUVBQztJQUNBQztJQUNBQztJQUdBQztJQU9BQztJQUdBQztJQUlBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQU1BQztJQW1EQUM7SUFHQUM7SUFHQUM7SUFPQUM7SUFJQUM7SUFJQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFNQUM7SUFNQUM7O0lDMVJBQztJQVVBQztJQUNBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQzs7OztTRG9DQTFFO1NBSVFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDOztTQUlSQztTQ25EQTBDO1NEd0RBekM7U0FDQUM7Ozs7U0N0RUFxQzs7O1NBZUFLO1NBREFEOztTRDRGQXhDO1NDMUZBMEM7Ozs7U0FOQUw7OztTRHlIUXBDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NDeEhSaUM7U0RnSUFoQztTQUNBQztTQU1BQztTQU1BQztTQUVBQztTQUNBQztTQUNBQztTQUdBQztTQU9BQztTQUdBQztTQUlBQztTQUNBQztTQUlBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQU1BQztTQW1EQUM7U0FHQUM7U0FHQUM7O1NBT0FDO1NBSUFDO1NBSUFDO1NBR0FDO1NBR0FDO1NBR0FDO1NBTUFDO1NBTUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0EvSUV0UTtJQXZGRjhRO0lBSVFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDOztJQUlSQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUlBQztJQUNBQztJQXNCQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFJUUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFJUkM7SUFJQUM7SUFDQUM7SUFNQUM7SUFNQUM7SUFFQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFPQUM7SUFHQUM7SUFJQUM7SUFDQUM7SUFJQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFNQUM7SUFtREFDO0lBR0FDO0lBR0FDO0lBR0FDO0lBSUFDO0lBSUFDO0lBSUFDO0lBR0FDO0lBR0FDO0lBR0FDO0lBTUFDO0lBTUFDOzs7OztTQXRPQTVGO1NBSVFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFD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O1lBUUFFO1lBQ0FDO1lBQ0FDO1lBRUFwRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXRXdHO0lBQ0FDOzRCOzRCOzRCOzs0Qjs0Qjs0Qjs7c0I7OzRCOzRCOzRCOzRCOzRCOzRCOztzQjs7NEI7R0FKc0I7Ozs0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qjs0Qjs0Qjs0Qjs0Qjs0Qjs7c0I7c0I7OzRCOzRCOzRCOzRCOzRCOzRCOzRCO0dBcUVKOzs7Ozs7Ozs7Ozs7Ozs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWxFbEJEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLSUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FEQUQ7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7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QUo7WUFuREFoSTtZQUNBMEo7WUFzREFqaUM7WUFDQUU7O1lBc0JFMVo7WUFSRks7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJNbUU7Ozs7Ozs7Ozs7Ozs7S0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaEJ4Qjs7Ozs7S0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFyQmtCOzs7O0tBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSztLQUVRUTtLQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSVo7WUFOSUs7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDO1lBQUEzRTtZQUFBSztZQUVRUTtZQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNDUks7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSztLQUdRUTtLQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSVo7WUFQSUs7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDO1lBQUEzRTtZQUFBSztZQUdRUTtZQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCS0s7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUFBdkQ7VUFBQUc7VUFBQUk7VUFBQUM7VUFBQVQ7VUFBQXNEO1VBQUFDO1VBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBU1BzdEM7Ozs7Ozs7V0FUTzd3QztXQUFBRztXQUFBSTtXQUFBQztXQUFBVDtXQUFBc0Q7V0FBQUM7V0FBQUM7Ozs7O1VBU1BzdEM7Ozs7Ozs7O1lBVE83d0M7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBakJidkQ7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUE1RTtLQUFBSztLQUVRNDRDO0tBQ0FwNEM7S0FB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VUFqRkFqRztVQUFBRztVQUFBSztVQUFBRDtVQUFLUjtVQUFMc0Q7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQStSO1VBQUE5UjtVQUFBQztVQUFBOUU7VUFBQUs7OztVQXFJQW1IO1VBQUFHO1VBQUFHO1VBQUFEO1VBQUtOO1VBQUxLO1VBQUFHO1VBQUFDO1VBQUFDO1VBQUF3dkQ7VUFBQXR3RDtVQUFBK0I7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0dqRlE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEwQlZ4Z0U7SUFDQUM7SUFDQWk1TjtJQUNBdHhHO0lBQ0F1eEc7R0FPSztHQUdhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1E7Ozs7WTtZO1c7UyxPO1Esc0I7O08sZ0IsTztPLHNCOzs7OzRDOzs7bUI7O087Ozs7STtHOztJO0ksTztHOztJO0k7OztHOztJO0ksSSwyRDs7OztNLFE7OztPOzs7Ozs7Ozs7O2E7O2E7O2E7O2E7O2E7O2E7Ozs7Ozs7Ozs7OztPO087TztPO087Tzs7O007Ozs7O0k7Szs7Ozs7Ozs7O0s7Ozs7OztLLE07O0ksTztHOztJLFM7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7O0ksWTs7STtJO0ssSTtLLE87SSxPO0c7O0k7Ozs7Z0I7aUI7Rzs7STs7Ozs7TyxZOzs7Ozs7O1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJLFk7OztLLE87O21CLE87STtLLEs7O087O1U7STtJO0ksYztHOztJOzthOzs7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7d0I7O0k7STtJLGM7Rzs7SSxZOzs7ZTs7O0ksTztHOztJLFk7Ozs7Ozs7SyxPOzs7SyxPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7SSxZOzs7ZTs7Ozs7OztJLE87Rzs7O0ksYzs7STs7O2lCOztLO0s7Ozs7c0IsTyxzQzs7SSwwQjs7OzBDOzs0Qzs7TTs7eUM7O0s7Ozt5Qzs7Szs7OztLLE87OztJO0c7Ozs7SztLO0s7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STs7O0s7Szs7SSxPO0c7O0ksMEI7OzswQzs7Ozs7Ozs7VztXO1c7O087TztPLE87OztNO007TSxPOzt5Qzs7Szs7O3lDOztLOzs7O0ssTzs7O0k7Rzs7STtJO0ksTztHOztJLFE7O0k7STtJO0k7SSxPO0c7O0k7STtJLFEsNEI7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjtJO0k7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxXO0k7OztNOzs7SSxPO0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STtJO0ksb0I7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjs7SztLO0ssTztJO0ksTztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7Ozs7TyxjLE87TyxzQjs7O087Ozs7VztXO1U7USxPO1EsTTs7O1c7VyxPO1U7TyxzQjs7Ozs7O08sK0I7Ozs7O00sZ0IsTztNLHNCOzs7STtHOzs7SyxPO0k7SSxPO0c7O0k7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7STs7TSxPOzs7OztRLGtCLE87USxPOzs7TztRLFc7UTtrQjs7O1EsUztRO2tCOztPLE87Ozs7TyxPOztNLGtCO00sTzs7OztNO21CLE87MEI7Tzs7USw0QjtRLDRCO087O3FCOztNLEk7Ozs7OztrQixPOzJCO1E7Uzs7O1ksMEI7WTtZLE87O1M7Z0M7UTs7c0I7OztpQixPOzBCO08sRztROztTLDRCO1M7Z0M7UTs7O1E7O1MsNEI7UztnQztROzs7cUI7Ozs7TyxPOzs7OztPO1E7Uzs7Uyw0QjtRLE87O087UTtROzs7OztRO1EsTzs7TyxJOzs7O0c7O0k7O0ksMEI7SSxPO0c7O0k7SyxPOzs7OztNO007Ozs7O1UsUTtVO1U7UztNO007TSxPOzs7OztPO087Ozs7O1c7VyxRO1c7VztXO1c7VztXO1U7TztPO08sTzs7O007TTs7Ozs7VSxRO1U7VTtTO007TTtNLE87Ozs7TTtNO00sTzs7O0s7SztLO0s7OztNO007TTs7O007SztLLE87Ozs7O007TTtNLE87OztLO0s7SyxPOzs7O0s7SztLLE87OztJO0k7SSxPOztvQixPLDhDOztJO0k7Ozs7Tzs7Ozs7Ozs7OztTOzs7VTs7YTthLE87WTtVLE87VSxPO1M7VTs7O2M7Ozs7O3FCOzs7YTtXLFc7VTs7OztvQzs7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7YywwQjs7Ozs7OzswQjtTOzs7Ozs7TztRLGE7UTs7OztrQzs7Ozs7Ozs7UyxPOzs7O2dILE87Ozs7OztTLE87Ozs7Ozs7USxPOzs7Szs7RztzQyx1Qjs7SSwwQjtJLE87Rzs7SSxVO0ksMEI7SSxPO0c7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0ssTTtJO0ksaUI7STthOzs7RztHOzs7OztJOztJOztLO0s7SztLOzs7O3dCLE07TSxXOztNOzs7Ozs7SSxNO0c7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7O2lCLE07O0c7O0k7OztHOztJO0ksTztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UTs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTs7Z0IscUI7O1E7UTtTO1M7UztTO1M7Uzs7OztVO1U7VTtVO1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7Ozs7UTs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxjLE87USxPLGM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxRO08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O087USxJO1EsSTtRLE07USxJO1E7UTtROzs7O1E7Uzs7WTs7Uzs7Ozs7VztZLE07WSxNO1ksTTtZLE07WTtZO1k7OztZLE87Vzs7Vzs7Vzs7O08sTzs7TztlOztHOztJO0k7Szs7UTs7OztTOztVLEk7UztTO1MsTzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLG9DOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLEkseUM7Ozs7Vzs7OztTLEkseUM7Ozs7Vzs7OztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcsbUI7VTs7cUI7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxxQjtVOztxQjs7UztTO1MsSSxXLHlCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1MsTyxxQjs7UztTO1MsSSxXLHlCOzs7Ozs7Ozs7Ozs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7UyxRO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOzs7UyxPOztrQjs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7aUI7O1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7O3FCOztTO1M7Uzs7c0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxJLGM7TztRO1E7aUI7OztTO1M7UztrQjs7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztpQjtTLE07O2lCLE07UztpQjs7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O2lCO1MsTTs7aUIsTTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7USxpQjtRO1E7UTtpQjs7UztTO1M7UyxtQjtTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UztTO1M7UztTO1M7UztTO1U7VTtVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7UztTO1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7UTtTOztZOztTOzs7OztXO1c7Vzs7VztZOztlOzs7O2dCLE87O2dCOztnQjs7WTs7Ozs7VyxPOztXOztXOzs7O1E7O1E7UTs7O1EseUM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLDBCOztRO1E7OztRLHlDOztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UyxPOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLE87O1E7O1EseUM7Z0I7OztHOztJOzJCLE87STtHOztJO0ksTztHOztJO1k7STs7O0ssTTtLLEk7SztLOzs7O00sVztNO2E7TTs7Ozs7STtHOztJO0s7Rzs7O0k7STtJO0ssTTtJOztLOztNOztJO0c7O0k7SztNLFM7TSxJO007Szs7Ozs7TSxPOzs7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJLFM7STtLO0s7Szs7OztLO0ssTTs7RztHOztJOzs7K0IsTzs7SyxJLG1EOzs7aUMsb0I7TSxJOzs7TyxNOztNLE07O0k7STtHOztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs7OytCLE87STtJLHVCOztLO007TyxPO087TyxzQjtPOzs7O007Ozs7MkIsb0I7TTtNLDJDOztJO0ksc0I7Rzs7SSxTO0ksb0IsTywyQjtJO0k7Rzs7STtHOztJO0c7Rzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07NEI7RztHOztJOztLLEksVyx3Qzs7OzZCOzs7O0ksVztJLGM7OztJO0k7ZTs7OztNLEksWTs7OzhCOzs7Ozs7Szs7Rzs7STtLOztNLE07TTs7TSxPO0s7TSxPO00sTztLLE07NEI7O0k7SyxPO0ssTztJLGM7OztJOztLLHNCOztJOzs7SSxtRTtJO0c7O0ksNkM7SSxXOzs7SSxpRTtJO0c7O0k7MEI7O2dEO0k7Rzs7STs7eUM7MkM7O0k7Rzs7STswQjs7Ozt5QzsyQzs7STtHOztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJLCtEO0k7Rzs7STswQjs7OEM7STtHOztJLGlFO0k7Rzs7SSxrRTtJO0c7O0k7MEI7O2lEO0k7Rzs7STs7SyxPOztJOzs7STtJO2EsTztLLHlCLFE7O00sa0I7Ozs7Rzs7STtJO2EsTzs7O007O08sUTs7Ozs7OztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yyx3RTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztzRDswRDs7YzthOztHOztJOztjLDJFO2M7YTs7Rzs7STt5QixvQixXO0ksTyxXO0c7O0k7eUIsc0IsYTtJLE8sVztHOztJOzs7Ozs7SyxzQjs7SSxNOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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S3RCLE1BQUE7O0dBQWdCO1lBRWhCSixLQUFNQyxHQUFlQztJQUN2QixJQS9CSXdDLFVBOEJJekMsTUE3QkowQyxTQURBRDtPQThCSXpDLFNBN0JKMEM7U0FFRUMsaUJBRkZELFNBVEZGLDZCQVNFRTtRQTZCSTFDLFFBM0JGMkM7TUFNSixNQUFBO0tBQ2UsSUFBWEMsWUFBVyx1QkFQWEQsVUEyQmlCMUM7S0FuQnJCLDRCQVhFd0MsWUFVRUcsY0FURkY7S0E2QkkxQyxPQXBCRjRDOztRQXNCRnpDLElBRklIO0lBQUFBLE9BRUpHO0lBRklILFNBRUpHLEtBRm1CRjtJQUl2QixPQUZJRTtHQUdIO1lBRUNNLElBQUtULEdBQWVHLEdBZHBCMEIsTUFjSzdCLEdBQWVHLElBRXRCLE9BRk9ILFNBQWVHLEdBRU07WUFFMUJVLElBQUtiLEdBQWVHLEdBQWNGLEdBbEJsQzRCLE1Ba0JLN0IsR0FBZUcsSUFBZkgsU0FBZUcsS0FBY0YsR0FFcEMsU0FBOEI7WUFFNUJPLEdBQUtSLEdBQWVHLEdBQWNDLEdBdEJsQ3lCLE1Bc0JLN0IsR0FBZUcsSUF0QnBCMEIsTUFzQks3QixHQUE2QkksV0FBZEQsTUFBY0MsVUFHL0I7bUNBMUVIUCxXQU9BQyxNQWlEQUMsTUFPQVUsS0FJQUksS0FJQUw7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STt1Qix1QztJOzs7O0s7SyxJO0k7STtJOztLO0s7SztLOztJO0k7STtJO0k7SyxJO0s7SztLO0s7SztLO0s7SztLO0s7O0s7Ozs7OztPOztRLE07USxNO1EsTTtRLE07TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLE07OztPOztRO1M7UztTO1M7UztTO1E7OztPO1E7O1E7Ozs7OztPOzs7Ozs7Ozs7TTs7Ozs7SSxROztLO0s7SztLO0s7STtJO0k7STtJO0k7SSxPOzs7STtLLE0sbUI7SyxNO0ssSTtrQzsrQjtJLE87RztzQiwrQjtzQixpQzs7STtLLEk7ZTtnQjtJO0k7SSxPO0c7MkIsTyxvQztHLFU7RywyQjs7STtLLEs7SyxLO0ssSztLLEs7SyxLO0ssSTs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0kscUI7SSx1QixvQztHOztJLDhCOzs7Szs7O0k7RzswQixhLG9DOzt3QixTOztJO0ksVTs2QjtnQztJLFc7Rzs7STtLLFE7SyxxQjtLO0s7STtJLFE7STtJO0k7STtJLE87RztxQyxzQjs7STtnQjs7STtHOytCLFM7K0IsUzs7STtJLFU7STs7O2M7O2U7O2dCO21CO0s7TTtPLEk7TztPO087O1UsVyxNO3NCO3FCLE07c0I7cUIsTTtzQixNO1U7UztPOztVLGU7c0I7Uzs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztRLGM7UTs7TztPOzs7Ozs7OzRCOzs7STtHOztJO0k7SSx1Qiw0QztJO0ssSTtLO0s7O0s7OztJOzs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7OztvQixPO0ssVTtLOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7SUN4QkpxQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUExQ0lDLFVBQ0ZDOzRDQUFLO3FEQUFrQjs0QkFBdkJBOzRDQUEwQztZQUV4Q0M7NENBQ0Y7NkNBSU8sK0NBQUE7OzRDQUZMO0tBRGtCQzs2Q0FDbEI7K0NBQUEseUJBRGtCQTs7OENBRU8sZ0RBQUE7OzZDQUErQzs0Q0FEeEUsK0NBQUE7cURBQ0c7Ozs0Q0FDaUQ7WUFFcERDLFlBQXdDSDs2Q0FBSzs7cURBQU87NEJBQVpBOzRDQUFnQztZQUV4RUk7NENBQ0Y7OzZDQUVFO01BRE9GOzhDQUNQO2dEQUFBLHlCQURPQTs7O2lEQUdGLCtDQUFBOztpREFBaUQ7NkNBRnRELCtDQUFBO3NEQUNHOzs7OzRDQUdFLCtDQUFBOzs0Q0FBaUQ7NENBSXpCOzZDQUFBOytDQUFBOzs2Q0FBN0JHOytDQUFnQjs2Q0FFaEJDO0lBQ0FDO0lBQ0FDO1lBQ0FDLEdBQ0RDLEdBQUdDOzRDQUNGLHdDQUdFOzsrQ0FBQSxXQVBGSixjQUdFSTs0Q0FJQSwrQ0FBQTtpQ0FKSEQ7MkNBS0U7WUFDREUsS0FBT0Q7NENBQ1Qsd0NBRUU7OytDQUFBLFdBWkFKLGNBU09JOzRDQUdQLCtDQUFBOzsyQ0FDRDtZQUdIRSxnQkFBYUMsVUFBTUM7NENBQW5CLFNBQW1CQTtlQUFBQTs7OztnREFBQTtRQUFBQztRQUFBQztpREFBQUM7VUF2Q2ZqQixVQXVDZWdCO2lEQUFBRTttREFBQTtZQUFOTCxVQUFNRTtnREFBQSxXQUFBRSxVQUFBQzs7Ozs2Q0FBQSxnREFBQTswQ0FBbkJ0QixxQkFBbUJrQjs0Q0FBTztZQUExQkssZ0JBQWFDOzRDQUFiO0tBQW1CQztLQUFBQztLQUFBQyxXQTFDZnpCLFVBMENld0I7S0FBQUUsc0JBQU5KLFVBQU1DO21CQUFBRSxjQUFBQzs0Q0FBTztZQUExQkMsa0JBQUFDLE1BQW1CQzs0Q0FBbkI7YUFBbUJBLHFDQUFBQTtlQUFBQTs7Ozs7UUFBQUM7UUFBQUM7UUFBQUMsT0E5QmYzQixZQThCZTBCO1FBQUFFLGtCQUFuQkwsTUFBbUJFO2tCQUFBRSxNQUFBQzs7Ozt5REFBbkJsQyxXQUFtQjhCOzRDQUFPO1lBQTFCSyxrQkFBQU47NENBQUE7S0FBbUJFO0tBQUFDO0tBQUFDLE9BaENmNUIsWUFnQ2UyQjtLQUFBRSxrQkFBbkJMLE1BQW1CRTs4QkFBQUUsVUFBQUM7NENBQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFLcEJFLFlBQWFDLFdBQVdDOzRDQUMxQix3Q0FBQTttREFBQSxxQkFEMEJBOzZDQUNrQjtnQixPQU5oRGhCLGdCQUttQmU7OzRDQUNmLCtDQUFBO3NEQUFtQjs7OzRDQUFvRDtZQUVyRUUsWUFBYUMsV0FBV0M7NkNBRUU7Z0IsT0FWaEMxQixnQkFRbUJ5Qjs7NENBQ2Ysd0NBQUE7OytDQUFBO2lEQUNHOztTQUZ1QkM7NENBQzFCLCtDQUFBOztxREFBQTs7NENBR1M7WUFFUEMsY0FBZUMsYUFBYUw7NENBQzlCLHdDQUFBO21EQUFBLHFCQUQ4QkE7NkNBQ0k7Z0IsT0FmdENILGtCQWNxQlE7OzRDQUNqQiwrQ0FBQTtzREFBbUI7Ozs0Q0FBOEM7WUFFL0RDLGNBQWVDLGFBQWFDOzZDQUVaO2dCLE9BbkJ0QmxCLGtCQWlCcUJpQjs7NENBQ2pCLHdDQUFBOzsrQ0FBQTtpREFDRzs7U0FGMkJDOzRDQUM5QiwrQ0FBQTs7cURBQUE7OzRDQUdTO1lBRVBDLEtBQU1DLE1BQU1DLEtBQUtYOzZDQUNuQix5Q0FBQTtvREFBQSxxQkFEbUJBOzsrQ0FFTixJQUFLWSxjQUFIQzs4Q0FDVixnREFBQTtrQ0FIU0YsVUFyQ2R0QyxJQXVDZXdDLEdBRlBILE1BRVVFOzhDQUNvQzs2Q0FGdEQsZ0RBQUE7c0RBQ0c7Ozs0Q0FFQzs0Q0F6Qks7NkNBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdQZDtPQUdBRztPQU1BRztPQUdBRTtPQU1BRzs2Q0FPSjsrQ0FBQTs7NkNBREVLOytDQUNGOzs2Q0FJQTsrQ0FBQTs7NkNBREVDOytDQUNGOztZQUVFQyxtQkFBc0JDOzZDQUN4QixHQUR3QkEsU0FBQUE7U0FFckIxQyxLQUZxQjBDOytDQUVaO2lEQUFBO1NBQVQxQyxJQUxEd0M7Z0RBS21DOzs2Q0FDOUI7NENBQ047O1lBZ0JHRzs4Q0FBYSwwQ0FBOEI7cURBQUE7OENBQTlCOzZDQUE0QztZQUN6REMsS0FBUTVDLElBQUlUOzhDQUFNO3NCQUFWUyxJQUFJVDs2Q0FBMkI7WUFDdkNzRCxNQUFPN0MsSUFBSThDLEdBQUd2RDs2Q0FDaEI7Z0RBQU87aUJBREVTLElBQU9UOytDQUtIOzhDQUZIOytDQUFKd0Q7aURBQUksaUJBSE14RCxNQUFIdUQ7K0NBSUQ7aURBQUE7aUJBSkg5QyxJQUdIK0MsR0FIVXhEO0lBQUFBOzs0Q0FNZjtZQUNDeUQsSUFBT2hELElBQUlUOzhDQUFNOytDQUErQixNQVJoRHFELEtBUU81QyxJQUFJVDsrQ0FBcUI7aURBQUEsaUJBQXJCQTs4Q0FBcUIsaURBQUE7bUJBQXJCQTs2Q0FBa0Q7WUFDN0QwRCxRQUFXakQsSUFBSVQ7NkNBQ2pCLHlDQUFBOztnREFBQTtrQkFEYVMsSUFBSVQ7OytDQUM0QixPQUYzQ3lELElBQ1doRCxJQUFJVDs4Q0FDc0M7NkNBQXZELGdEQUFBO3VEQUE2Qjs7OzZDQUEyQjtZQUN0RDJELElBQU9sRCxJQUFJOEMsR0FBR3ZEOzhDQUFNOytDQUErQixNQVhuRHFELEtBV081QyxJQUFPVDsrQ0FBcUI7aURBQUEsaUJBQXJCQTs4Q0FBTSxpREFBQTttQkFBTkEsV0FBSHVEOzZDQUF3RDtZQUVuRUssUUFBU3BELEdBQUdxRCxNQUFJcEQsSUFBS1Q7NkNBQ3ZCOytDQUF3QyxNQWR0Q3FELEtBYWdCNUMsSUFBS1Q7K0NBQ0ksTUFkekJxRCxLQWFZUSxNQUFTN0Q7OENBQ2hCLDBDQUFBO1lBRGdCQSxNQUFaUTs4Q0FDSjs2Q0FBK0M7NENBckJ0RDs2Q0FBQTtVQU1FNEMsTUFFQUUsT0FPQUcsS0FDQUMsU0FFQUMsS0FFQUM7OztPQWhIRi9EO09BR0FFO09BT0FFO09BRUFDO09BV0FDO09BRUFDO09BQ0FDO09BQ0FDO09BQ0FDO09BT0FHO09BT0pDO09BQUFPO09BQUFNO09BQUFPOztPQTZCSWlCO09BSUFDO09BR0FDOzs7O2E7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7WUM5R0ozQyxHQUlBc0M7a0RBQVMscURBQUE7aUNBQVRBO2tEQUFZO1lBSlpuQyxLQUlBb0Q7a0RBQUEscURBQUE7c0NBSkF2RCxJQUlBdUQ7a0RBQVk7aURBQVo7a0RBQUEvRDtJQUFBRjtJQUFBSztJQUFBRDtJQUVJOEQ7SUFFQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7WUFFQWxGLFFBQVdtRixJQUFPQzttREFDcEI7OzJEQUFPOzZCQURNRCxJQUFPQzs7bURBQ3dCO2tEQUk1QzttREFBQTtxREFBQTs7O2FBMUJFcEI7O2NBQ0FDOztlQUZBRjs7Z0JBR0FHO29CQUNBQyxvQkFJQUksaUJBSEFIO21EQXFCQWlCO3FEQUNGOztZQVlFQyxjQUFpQkM7bURBQ25CLHNEQWJBOzhCQVltQkEsR0FiakJGO21EQWNtQzs7OztPQW5EdkNsRjtPQUFBRztPQUlBWDtPQUFBRjtPQUFBSztPQUFBRDtPQUVJOEQ7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FFQWxGO09BSUFxRjtPQWFBQzs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7Ozs7O0lDcERKRTtJQUFBaEc7SUFXSWlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQVpKdEYsR0FDQXNDOzRDQUFBOzsrQ0FBQSwrQ0FBQTttQ0FBQUE7OytDQUFBLCtDQUFBO21DQUFBQTs7K0NBQUEsK0NBQUE7bUNBQUFBOzsrQ0FBQSwrQ0FBQTttQ0FBQUE7OytDQUFBLCtDQUFBO21DQUFBQTs7K0NBQUEsK0NBQUE7bUNBQUFBOzsrQ0FBQSwrQ0FBQTttQ0FBQUE7OzJDQU9PO1lBUlBuQyxLQUNBb0Q7NENBQUEsK0NBQUE7c0NBREF2RCxJQUNBdUQ7MkNBT087MkNBUFAsU0FBQS9ELFVBQUErRjs0Q0FBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0RBQUE7O21EQUFBOztrREFBQTs7aURBQUE7O2dEQUFBOzsrQ0FBQTs7OENBQUE7O2VBQUFBOzs4Q0FBQSwrQ0FBQTs0Q0FBQUYsa0JBQUFFOzs7OENBQUEsK0NBQUE7NENBQUFGLGtCQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttREFBQSwrQ0FBQTtpREFBQUYsa0JBQUFFOztrREFBQSwrQ0FBQTtnREFBQUYsa0JBQUFFOztpREFBQSwrQ0FBQTsrQ0FBQUYsa0JBQUFFOztnREFBQSwrQ0FBQTs4Q0FBQUYsa0JBQUFFOzsrQ0FBQSwrQ0FBQTs2Q0FBQUYsa0JBQUFFOzs4Q0FBQSwrQ0FBQTs0Q0FBQUYsa0JBQUFFOzs2Q0FBQSwrQ0FBQTsyQ0FBQUYsa0JBQUFFOzs0Q0FBQSwrQ0FBQTswQ0FBQUYsa0JBQUFFOzJDQU9PO1lBUFBqRzs0Q0FBQTs7K0NBQ0k7OytDQUNBOzsrQ0FDQTs7K0NBQ0E7OytDQUNBOzsrQ0FDQTt1REFDQTs7MkNBQUc7MkNBUFAsU0FBQUssWUFBQXdCOzRDQUFBO2FBQUFBLHFDQUFBQTtlQUFBQTs7OENBQUEsK0NBQUE7a0RBQUE5QixRQUFBOEI7Ozs7Ozs7OzBEQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBEQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBEQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBEQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBEQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBEQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBEQUFBO3NEQUFBOUIsUUFBQThCOzs7OytDQUFBLCtDQUFBO21EQUFBOUIsUUFBQThCOzs7NENBQUEsK0NBQUE7Z0RBQUE5QixRQUFBOEI7MkNBT087WUFQUHpCOzRDQUFBOzsrQ0FDSTs7K0NBQ0E7OytDQUNBOzsrQ0FDQTs7K0NBQ0E7OytDQUNBO3VEQUNBOzsyQ0FBRztPQUVIOEY7WUFJQUMsV0FBY0MsS0FBR2pHOzZDQUNuQjtPQURnQmlHO2NBQUdqRyxRQUFBQSxvQkFBSGlHLFlBQUFBLFFBQUdqRzsrQ0FLTDs7OENBRkE7NENBSWI7WUFFQ0s7NkNBQ0Y7O2lEQUNTOztpREFDQTs7aURBQ0E7O2lEQUVBOztpREFEQzs7aURBRUQ7eURBQ0E7OzZDQUFLO1lBRVo2Rjs2Q0FDRjs7aURBQ1M7O2lEQUNBOztpREFDQTs7aURBRUE7O2lEQURDOztpREFFRDs7aURBQ0E7OzZDQUFZOzs7O09BekN2QjNGO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BU0k4RjtPQUVBRjtPQUVBRztPQVNBM0Y7T0FVQTZGOzs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDL0JGTjtJQUFBaEc7SUEyQ0Z1RztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUE1Q0U3RjtJQUFBRztZQUFBMkY7NENBQUE7NENBR3lCOztLQUh6QjlGO2NBQ0FzQzs4Q0FBQTsrQ0FBQSwrQ0FBQTttQ0FBQUE7VUFEQXlEOzhDQUNBLHdDQUFBOzRCQUFBekQ7OENBREEsd0NBQUE7Z0RBQUEsV0FBQXdELE9BQ0F4RCxNQURBeUQ7OENBQUEsK0NBQUE7bUNBQ0F6RDs4Q0FFeUI7O0tBSHpCbkM7Y0FDQW9EOzhDQUFBLCtDQUFBO3dDQURBdkQsSUFDQXVEOzhDQUV5QjsyQ0FGekIsU0FBQS9ELFVBQUF3Rzs0Q0FBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7OytDQUFBOzs4Q0FBQSwrQ0FBQTs0Q0FBQVgsa0JBQUFXOztlQUFBQTs7OENBQUEsK0NBQUE7NENBQUFYLGtCQUFBVzs7OzhDQUFBLCtDQUFBOzRDQUFBWCxrQkFBQVc7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7OENBQUEsK0NBQUE7NENBQUFaLGtCQUFBVzs7U0FBQUU7UUFBQUEsbUJBQUFBOzhDQUFBO09BQUFDLFdBQUFEOytDQUFBRTtpREFBQTtvQ0FBQUQ7OENBQUEsV0FBQUM7OzZDQUFBLCtDQUFBOztjQUFBZjtjQUFBWTtjQUFBRDs7NENBQUEsK0NBQUE7MENBQUFYLGtCQUFBVzs0Q0FFeUI7WUFGekIxRzs0Q0FBQTs2Q0FDSTs0Q0FDQTtLQUFBd0I7NkNBQUF1RjsrQ0FBQTtrQ0FBQXZGOzRDQUFBO3lCQUFBdUY7NENBQXFCOzJDQUZ6QixTQUFBMUcsWUFBQXdCOzRDQUFBLFVBQUFBO2VBQUFBOztnQ0FBQUE7K0NBQUEsK0NBQUE7bURBQUE5QixRQUFBOEI7OztnQkFBQUE7OytDQUFBLCtDQUFBO21EQUFBOUIsUUFBQThCOzs7OztZQUFBbUY7a0NBQUFBO2FBQUFDO1lBQUFBLGlCQUFBQTtrREFBQTtXQUFBbEYsS0FBQWtGO21EQUFBakY7cURBQUE7d0NBQUFEO2tEQUFBLFdBQUFDOztpREFBQSwrQ0FBQTtxREFBQWpDLFFBQUFpSCxLQUFBbkY7O2tDQUFBbUY7OzJEQUFBO3VEQUFBakgsUUFBQThCOzs7O2dEQUFBLCtDQUFBO29EQUFBOUIsUUFBQThCOzs7OzRDQUFBLCtDQUFBO2dEQUFBOUIsUUFBQThCOzRDQUV5QjtZQUZ6QnpCOzRDQUFBOzZDQUNJOzRDQUNBO0tBQUEyQjs2Q0FBQUM7K0NBQUE7a0NBQUFEOzRDQUFBOzt5QkFBQUM7NENBQXFCO1lBRXJCa0YsUUFBWXBCOzZDQUFZLEdBQVpBO1NBSUxxQixNQUpLckIsTUFDVnNCLE1BR0tEOztTQUhMQzs2Q0FLSixXQUxJQTs0Q0FNTDtZQUVHQyxLQUFRQyxHQUFNM0Q7NkNBQ2hCOztRQURVMkQsUUFBTTNELHFCQUFBQTsrQ0FLYzs7OENBRko7NENBR3pCO1lBRUM0RDs2Q0FDRixtQkFsQkVMOzZDQW9Cb0I7WUFFcEJNOzZDQUNGLG1CQXZCRU47NkNBeUJvQjtZQUVwQk8sU0FBWUMsR0FBcUJ2SDs2Q0FFbkMsT0FGbUNBO3dEQUluQjtrQ0FKRnVIO2NBQUFBOzRDQUtiO1lBRUNDLFNBQVlDLEtBQXVCQzs2Q0FDckMsT0FEY0QsUUFBdUJDOztjQWxDbkNYOzZDQW1DOEI7NENBekNyQjs2Q0FBQTs7T0FDYnhHO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BSUk4RztPQVNBRztPQVFBRTtPQUtBQztPQUtBQztPQU9BRTtJQUlON0U7SUFBQWdGO1lBQUFDOzZDQUFBOzRDQUlDO1lBSkRDOzZDQUFBOzRDQUlDOztLQUpEbEY7Y0FDQUUsS0FBQWlCOytDQUFBLHlDQUFBOzRCQUFBakI7K0NBQUEseUNBQUE7NEJBQUFBO2dCQUFBaUI7K0NBQUEseUNBQUE7aURBREEsV0FBQStELFNBQ0FoRjs7K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSx5Q0FBQTs0QkFBQUE7Z0JBQUFpQjsrQ0FBQSx5Q0FBQTtpREFEQSxXQUFBOEQsT0FDQS9FOytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSxnREFBQTttQ0FBQUE7OENBR0M7O0tBSkQ4RTtjQUNBN0Q7K0NBQUEsZ0RBQUE7d0NBREFuQixNQUNBbUI7OENBR0M7WUFIRDNCLFlBQUEyRjs2Q0FBQSxTQUFBQTs4Q0FBQSxnREFBQTs0Q0FBQTNCLGtCQUFBMkI7NkNBQUE7S0FBQUMsa0JBQUFEOzhDQUNFRTs4Q0FDQUM7OENBRkZDOzhDQUFBQzthQUFBQzs4Q0FBQTs4Q0FBQTs2REFBQTtVQUFBQztlQUFBQTtpQkFBQUE7Ozs7O2FBQUFDLDBCQUFBQztZQUFBRCxtQkFBQUE7O1VBQUFFO1VBQUFDO3FCQUFBSDtzQkFBQUk7dURBQUEsS0FBQUo7d0RBQUEsZ0RBQUE7c0RBQUFuQyxrQkFBQTJCO2lCQUFBUTt3REFBQSwrQ0FBQTs7a0JBQUFLLFFBQUFMO3VEQUFBLE9BQUFLO3NEQUdDO29CQUhERDs7VUFBQUEsaUJBQUFELGlCQUFBSDtpQ0FBQUM7a0NBQUFBOztZQUFBSixtQkFBQUksZ0JBQUFKOztrQkFFRUY7V0FGRkMsd0JBQUFLLGdCQUFBTDs7b0RBRUU7cURBRkZVLG1CQUFBRjtxREFFRUc7dURBQUE7bUNBRkZEO1dBRUVYLGtCQUFBWTs7aUJBREFiO1VBREZFLHdCQUFBSyxnQkFBQUw7O21EQUNFO29EQURGWSxtQkFBQUo7b0RBQ0VLO3NEQUFBO3lCQURGRDtVQUNFZCxtQkFBQWU7O3VCQURGUDs7Ozs7K0NBQUEsZ0RBQUE7NkNBQUFyQyxrQkFBQWtDOzs2Q0FHQzs2Q0FIREQsU0FBQUw7T0FBQUc7OENBQUEsZ0RBQUE7O2NBQUEvQjtjQUFBK0I7Y0FBQUo7T0FBQUs7OENBQUEsZ0RBQUE7O2NBQUFoQztjQUFBZ0M7Y0FBQUw7Y0FDRUUsc0JBQ0FDOztTQUFBZSxxQkFEQUM7OENBREYsV0FDRUEsV0FDQUQ7OzZDQUZGLGdEQUFBOzthQUFBN0M7YUFBQTJCOzt3QkFDRUU7NEJBQ0FDOzRDQUNEO1lBSERqRzs2Q0FBQTtLQUVFa0g7S0FEQUM7OENBQ0FDO2dEQUFBOzRCQUFBRjs4Q0FGRkc7NEJBRUVEOzhDQURBRTtnREFBQTttQkFBQUg7OENBREZJOzRCQUNFRCxlQURGRDs2Q0FBQSxXQUFBRTs0Q0FHQztZQUhEL0csY0FBQWQ7NkNBQUE7YUFBQUEscUNBQUFBOzhDQUNFO01BREY4SCxnQkFBQTlIOytDQUNFK0g7K0NBQ0FDOytDQUZGQzsrQ0FBQUM7TUFBQUM7O2tEQUFBO2tEQUFBO2lFQUFBOztXQUFBQzs7V0FBQUM7V0FBQUM7a0NBQUFBO21DQUFBQTtxREFBQTt1REFBQTs7YUFBQUo7O2VBQUFJO3dEQUFBO3lDQUFBSjs7O3NEQUVFO3VDQUFBRjtZQUZGQzs7Y0FBQUs7dURBRUU7d0NBRkZMOztxREFFRSx5Q0FBQTthQUFBTTt3REFBQTtvQ0FGRkY7WUFFRUwsb0JBQUFPOzs7cURBREE7c0NBQUFSO1dBREZFOzthQUFBSztzREFDRTt1Q0FERkw7O29EQUNFLHlDQUFBO1lBQUFPO3VEQUFBOzBCQURGSDtXQUNFTixxQkFBQVM7O3dCQURGSjs7aURBR0M7OENBSERELEtBQUFMOztnREFBQTtpQ0FBQUc7K0NBQUEseUNBQUE7O2tEQUFBO21DQUFBQTsrQ0FBQSxnREFBQTttREFBQXZELGVBQUExRTs7O2dEQUFBO2lDQUFBa0k7K0NBQUEseUNBQUE7O2tEQUFBO21DQUFBQTsrQ0FBQSxnREFBQTttREFBQXhELGVBQUExRTs7OENBQ0U7K0NBQUE7aURBQUE7a0NBQUErSDsrQ0FDQTtpREFBQTtrQ0FBQUM7O1VBQUFTLHlCQURBQzsrQ0FERjtjQUNFQTtjQUNBRDs7OENBRkY7K0NBQUE7Ozs7O3FEQUVFO3NDQUFBVDs7Ozs7K0NBRkY7Ozs7O3FEQUNFO3NDQUFBRDs7Ozs7OENBREYsZ0RBQUE7a0RBQUFyRCxVQUFBMUU7OzZDQUFBLGdEQUFBO2lEQUFBMEUsVUFBQTFFOzRDQUdDO1lBSERZOzZDQUFBO0tBRUUrSDtLQURBQztLQUNBQyxvQ0FBQUY7S0FBQUcsMkJBQUFEO0tBREFFLDZCQUFBSDtLQUFBSSw4QkFBQUQsUUFDQUQ7NkNBRkYsc0JBQ0VFOzRDQUVEO1lBRUdDLE1BQVFDOzhDQUFLLE9BQUxBOzZDQUFZO1lBRXBCQyxPQUFRMUQsR0FBTTNEOzZDQUNoQixVQURVMkQsU0FBTTNEO3NDQUFOMkQsTUFBTTNEOzZDQUNnQztZQUU5Q3NILFVBQVdyRDs4Q0FBYyxVQUFkQTs4Q0FBYztzREFBZ0I7d0JBQTlCQTs7NkNBQXVEO1lBRWxFc0QsT0FBUXREOzhDQUFXLFVBQVhBOzhDQUFXO3NEQUFnQjt5QkFBM0JBOzs2Q0FBaUQ7Ozs7O09BYjdEOUU7T0FBQWdGO09BQ0F4RjtPQUFBSDtPQUFBUTtPQUFBRjtPQUtJcUk7T0FFQUU7T0FHQUM7T0FFQUM7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7SUN0REpuRjtJQUFBaEc7SUFLQW9MO0lBQUE1RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQU5BNkUsU0FDQXBJOzhDQUFBO3dEQUFBO2tDQUFBQTt3REFBQTtrQ0FBQUE7OENBRVc7WUFIWHFJLFdBQ0FwSDs4Q0FBQSxpREFBQTtzQ0FEQW1ILFVBQ0FuSDs4Q0FFVzs2Q0FGWCxTQUFBcUgsY0FBQXJGOzhDQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7aURBQUE7O2dEQUFBOztlQUFBQTs7Z0RBQUEsaURBQUE7NENBQUFGLGtCQUFBRTs7O2dEQUFBLGlEQUFBOzRDQUFBRixrQkFBQUU7Ozs7Ozs7O2dEQUFBLGlEQUFBOzRDQUFBRixrQkFBQUU7OytDQUFBLGlEQUFBOzJDQUFBRixrQkFBQUU7OzhDQUFBLGlEQUFBOzBDQUFBRixrQkFBQUU7OENBRVc7WUFGWHNGOzhDQUFBOzhDQUVXOzZDQUZYLFNBQUFDLGdCQUFBM0o7OENBQUE7YUFBQUEscUNBQUFBO2VBQUFBOztnREFBQSxpREFBQTtrREFBQTlCLFFBQUE4Qjs7Ozs7Ozs7NERBQUE7c0RBQUE5QixRQUFBOEI7Ozs7NERBQUE7c0RBQUE5QixRQUFBOEI7Ozs7aURBQUEsaURBQUE7bURBQUE5QixRQUFBOEI7Ozs4Q0FBQSxpREFBQTtnREFBQTlCLFFBQUE4Qjs4Q0FFVztZQUZYNEo7OENBQUE7OENBRVc7O0lBRVgvSztJQUFBRztZQUFBa0g7OENBQUEsT0FMQXFEOzhDQVNDO1lBSkQ1RTs4Q0FBQTs4Q0FJQzs7S0FKRDlGO2NBQ0FzQyxLQUFBaUI7Z0RBQUEsMENBQUE7NEJBQUFqQjtnREFBQSwwQ0FBQTs0QkFBQUE7Z0JBQUFpQjtnREFBQSwwQ0FBQTtrREFEQSxXQUFBdUMsT0FDQXhEO2dEQUFBLDBDQUFBOzRCQUFBQTtnREFBQSwwQ0FBQTs0QkFBQUE7Z0RBQUEsMENBQUE7NEJBQUFBO2dEQURBO2FBQ0FpQjtpREFEQSxNQUFBOEQ7Z0RBQ0EsMENBQUE7Z0RBQUEvRTtnREFBQSwwQ0FBQTs0QkFBQUE7Z0RBQUEsaURBQUE7bUNBQUFBO2dEQUdDOztLQUpEbkM7Y0FDQW9EO2dEQUFBLGlEQUFBO3dDQURBdkQsSUFDQXVEO2dEQUdDO1lBSEQvRCxVQUFBd0w7OENBQUEsU0FBQUE7K0NBQUEsaURBQUE7NENBQUFQLGtCQUFBTzs4Q0FBQTtLQUFBQyxrQkFBQUQ7K0NBQ0VFOytDQUNBQzsrQ0FGRkM7K0NBQUFDO2FBQUFDOytDQUFBOytDQUFBOzhEQUFBO1VBQUFDO2VBQUFBO2lCQUFBQTs7Ozs7YUFBQUMsMEJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTt3REFBQSxLQUFBSjt5REFBQSxpREFBQTtzREFBQWYsa0JBQUFPO2lCQUFBUTt5REFBQSxnREFBQTs7a0JBQUFLLFFBQUFMO3dEQUFBLE9BQUFLO3dEQUdDO29CQUhERDs7VUFBQUEsaUJBQUFELGlCQUFBSDtpQ0FBQUM7a0NBQUFBOztZQUFBSixtQkFBQUksZ0JBQUFKOztrQkFFRUY7V0FGRkMsd0JBQUFLLGdCQUFBTDs7c0RBRUU7dURBRkZVLG1CQUFBRjt1REFFRUc7Y0FQRm5CLGNBS0FrQjtXQUVFWCxtQkFBQVk7O2lCQURBYjtVQURGRSx3QkFBQUssZ0JBQUFMOztxREFDRTtzREFERlksbUJBQUFKO3NEQUNFSzt3REFBQTtnQ0FERkQ7VUFDRWQsZ0JBQUFlOzt1QkFERlA7Ozs7O2dEQUFBLGlEQUFBOzZDQUFBakIsa0JBQUFjOzsrQ0FHQzs4Q0FIREQsU0FBQUw7T0FBQUc7K0NBQUEsaURBQUE7O2NBQUFYO2NBQUFXO2NBQUFKO09BQUFLOytDQUFBLGlEQUFBOztjQUFBWjtjQUFBWTtjQUFBTDtjQUNFRSxtQkFDQUM7O1NBQUFlLHNCQURBQzsrQ0FERixXQUNFQSxRQUNBRDs7OENBRkYsaURBQUE7O2FBQUF6QjthQUFBTzs7d0JBQ0VFOzRCQUNBQzs4Q0FDRDtZQUhEN0w7OENBQUE7S0FFRThNO0tBREFDO2dEQUNBQztPQVBGekIsY0FPRXVCO2dEQUZGRzs0QkFFRUQ7Z0RBREFFO2tEQUFBOzBCQUFBSDtnREFERkk7NEJBQ0VELGVBREZEOzhDQUFBLFdBQUFFOzhDQUdDO1lBSEQ5TSxZQUFBd0I7OENBQUE7YUFBQUEscUNBQUFBO2dEQUNFO01BREY4SCxnQkFBQTlIO2lEQUNFdUw7aURBQ0F4RDtnREFGRkU7Z0RBQUFDO01BQUFDOzttREFBQTttREFBQTtrRUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7c0RBQUE7d0RBQUE7O2FBQUFKOztlQUFBSTt5REFBQTt5Q0FBQUo7Ozt3REFFRTt1Q0FBQUg7WUFGRkU7O2NBQUFLO3lEQUVFO3dDQUZGTDs7dURBRUUsMkNBQUE7YUFBQU0sU0FQRm9CLGdCQUtBdEI7WUFFRU4scUJBQUFROzs7dURBREE7c0NBQUFnRDtXQURGdEQ7O2FBQUFLO3dEQUNFO3VDQURGTDs7c0RBQ0UsMkNBQUE7WUFBQU87eURBQUE7aUNBREZIO1dBQ0VrRCxrQkFBQS9DOzt3QkFERko7O21EQUdDOytDQUhERCxLQUFBTDs7aURBQUE7aUNBQUFHO2dEQUFBLDBDQUFBOzttREFBQTttQ0FBQUE7Z0RBQUEsaURBQUE7bURBQUF2RCxlQUFBMUU7OztpREFBQTtpQ0FBQWtJO2dEQUFBLDBDQUFBOzttREFBQTttQ0FBQUE7Z0RBQUEsaURBQUE7bURBQUF4RCxlQUFBMUU7O2dEQUNFO2lEQUFBO21EQUFBO2tDQUFBdUw7aURBQ0E7bURBQUE7a0NBQUF4RDs7VUFBQVcsMEJBREE4QztnREFERjtjQUNFQTtjQUNBOUM7OytDQUZGO2dEQUFBOzs7Ozt1REFFRTtzQ0FBQVg7Ozs7O2dEQUZGOzs7Ozt1REFDRTtzQ0FBQXdEOzs7OzsrQ0FERixpREFBQTtrREFBQTdHLFVBQUExRTs7OENBQUEsaURBQUE7aURBQUEwRSxVQUFBMUU7OENBR0M7WUFIRHpCOzhDQUFBO0tBRUVxSztLQURBNkM7S0FDQTVDLE1BUEZlLGdCQU9FaEI7S0FBQUUsNEJBQUFEO0tBREFFLG9DQUFBMEM7S0FBQXpDLDJCQUFBRCxRQUNBRDs4Q0FGRixzQkFDRUU7OENBRUQ7WUFFR2pLLEdBQUsyTTtnREFBSyxPQUFMQTsrQ0FBUztZQUVkQyxPQUFTRDsrQ0FDWCxPQURXQTs7Ozs7OENBSVY7WUFHQ0UsY0FBaUJ0TjtnREFBc0I7aURBQ3JDUzttREFBSzs7Z0RBQ0xrSyxRQUZlM0s7K0NBT25CLFdBTklTLElBQ0FrSzs4Q0FNTDtZQUlHNEMsV0FBY0gsR0FBTXBOOytDQUN0Qjs7UUFEZ0JvTixXQUFNcE4scUJBQUFBO2lEQUdLOztnREFFSjs4Q0FDdEI7WUFFQ2tILEtBQVFzRyxLQUFNSjsrQ0FDaEIsVUFEZ0JBOzs7UUFBTkk7aURBR2M7O2dEQUVEOzhDQUN0QjtZQUVDQyxNQUFTQzsrQ0FDWCxLQURXQTtpREFFSDtnREFFQztLQURDQyxLQUhDRDtLQUdSRSxLQUhRRjtpREFJRjttREFBQTs0QkFEQ0M7NERBRUUsV0FGVEM7UUFHVUM7V0FIVkQsVUFHVUMsWUFIVkQ7OENBS0Y7Ozs7T0F4REgzQztPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUlBL0s7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FLSVE7T0FFQTRNO09BT0FDO09BWUFDO09BUUFyRztPQVFBdUc7OzthOzs7Ozs7OztjOzs7OztjOzs7Ozs7Ozs7Ozs7Ozs7WUMvQ0psTixHQUNBc0M7OENBQVMsaURBQUE7aUNBQVRBOzhDQUFlO1lBRGZuQyxLQUNBb0Q7OENBQUEsaURBQUE7c0NBREF2RCxJQUNBdUQ7OENBQWU7NkNBQWY7OENBQUEvRDtJQUFBRjtJQUFBSztJQUFBRDsrQ0FFZTtZQUlYNk4sdUI7K0NBQVM7Z0RBQ1QxTjtJQUNBMk47SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7OztPQWJKNU47T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7O09BTUk2TjtPQUNBMU47T0FDQTJOO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOzs7YTs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2JKNU47SUFBQUc7WUFBQTJGOzhDQUFBOzhDQUNzQjs7S0FEdEI5RjtjQUNBc0MsS0FBU2lCO2dEQUFBLDBDQUFBOzRCQUFUakI7O21CQUFTdUwsS0FBQXRLO2lEQUFBLEdBQUFzSztrREFBQSwwQ0FBQTs4QkFBVHZMO2lEQUFTLDBDQUFBO21EQURULFdBQUF3RCxPQUNBeEQsTUFBU2lCO2lEQUFBO2lEQUFhO2dEQUFiLDBDQUFBO21DQUFBQTtnREFBQSxpREFBQTttQ0FBVGpCO2dEQUFzQjs7S0FEdEJuQztjQUNBb0Q7Z0RBQUEsaURBQUE7d0NBREF2RCxJQUNBdUQ7Z0RBQXNCOzZDQUF0QixTQUFBL0QsVUFBQXNPOzhDQUFBLGlEQUFBO2tEQUFBQTs4Q0FBc0I7WUFBdEJ4TyxVQUFBeU87OENBQUEsaURBQUE7a0RBQUFBOzhDQUFzQjs2Q0FBdEIsU0FBQXBPLFlBQUFKO2U7eUVBQUFBOztZQUFBRyxZQUFBNkM7ZTt5RUFBQUE7OzhDQUNVOytDQUFBOzsrQ0FFTmdMO0lBRUFTO1lBRUFDLE1BQVNDOytDQUNYLEtBRFdBO2lEQUVILGtEQUFBOztRQUNFZCxLQUhDYyxRQUdSYixLQUhRYTtnREFHTSxXQUFkYixJQUFPRDs4Q0FDVDs7OztPQVpIcE47T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7O09BR0k2TjtPQUVBUztPQUVBQzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7SUNWSkU7SUFBQTlPOzs7Ozs7Ozs7Ozs7OztJQURBVztJQUFBRztZQUFBa0g7NkNBQUE7NkNBQ3VCO1lBRHZCdkI7NkNBQUE7NkNBQ3VCOztLQUR2QjlGO2NBQ0FzQzsrQ0FBQTtPQURBOEw7T0FBQXJJOytDQUNTLHlDQUFBOzRCQUFUekQ7K0NBREEseUNBQUE7aURBQUEsV0FBQXdELE9BQ0F4RCxNQURBeUQ7K0NBQ1MseUNBQUE7NEJBQVR6RDsrQ0FEQSx5Q0FBQTtpREFBQSxXQUFBK0UsT0FDQS9FLE1BREE4TDsrQ0FBQSxnREFBQTttQ0FDQTlMOytDQUF1Qjs7S0FEdkJuQztjQUNBb0Q7K0NBQUEsZ0RBQUE7d0NBREF2RCxJQUNBdUQ7K0NBQXVCOzRDQUF2QixTQUFBL0QsVUFBU3dMOzZDQUFULFNBQVNBO2VBQUFBOzs7O2dEQUFBO1FBQUFxRDtRQUFBQztpREFBQUM7bURBQUE7OEJBQUFEO2lEQUFBRTttREFBQTs4QkFBQUg7Z0RBQUEsV0FBQUUsVUFBQUM7Ozs7NkNBQUEsZ0RBQUE7MENBQVRMLHFCQUFTbkQ7NkNBQWM7WUFBdkIxTDs2Q0FBQTtLQUFTbVA7S0FBQXRJO0tBQUF1SSx3Q0FBQXZJO0tBQUF3SSx3Q0FBQUY7bUJBQUFDLGNBQUFDOzZDQUFjOzRDQUF2QixTQUFBaFAsWUFBU3dCOzZDQUFUO2FBQVNBLHFDQUFBQTtlQUFBQTs7Ozs7UUFBQUM7UUFBQUM7UUFBQUMsb0NBQUFEO1FBQUFFLG9DQUFBSDtrQkFBQUUsTUFBQUM7Ozs7eURBQVRsQyxXQUFTOEI7NkNBQWM7WUFBdkJ6Qjs2Q0FBQTtLQUFTMEI7S0FBQUM7S0FBQUMsb0NBQUFEO0tBQUFFLG9DQUFBSDs4QkFBQUUsVUFBQUM7NkNBQWM7O0lBRXZCcU47SUFBQUM7WUFBQUM7NkNBQUE7NkNBQ3dDO1lBRHhDeEg7NkNBQUE7NkNBQ3dDOztLQUR4Q3NIO2NBQ0F0TTsrQ0FBQTtPQURBOEw7T0FBQXJJO2dEQUNjLDBDQUFBOzRCQUFkekQ7K0NBREEseUNBQUE7aURBQUEsV0FBQWdGLFNBQ0FoRixNQURBeUQ7Z0RBQ2MsMENBQUE7NEJBQWR6RDsrQ0FEQSx5Q0FBQTtpREFBQSxXQUFBd00sU0FDQXhNLE1BREE4TDsrQ0FBQSxnREFBQTttQ0FDQTlMOytDQUF3Qzs7S0FEeEN1TTtjQUNBdEw7K0NBQUEsZ0RBQUE7d0NBREFxTCxXQUNBckw7K0NBQXdDO1lBRXBDdUQ7OENBQU8sSUFBSzdELGNBQUgyRDs4Q0FBYSxXQUFWM0QsR0FBSDJEOzZDQUFtQjtZQUU1Qm1JLFFBQVVDOzhDQUFRO21CQUFSQTttQkFBQUE7NkNBQTBEO1lBRXBFbkk7K0NBQVU7S0FBSzVEO0tBQUgyRDtnREFBOEI7a0RBQUE7NEJBQTNCM0Q7K0NBQVU7dURBQUM7aUNBQWQyRDs7OENBQTZDOzs7O09BVjdENUc7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FFQWtQO09BQUFDO09BR0kvSDtPQUVBaUk7T0FFQWxJOzs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7SUNOSm9JO0lBQUE1UDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBREFXO0lBQUFHO1lBQUErTzs2Q0FBQTs0Q0FLQztZQUxEN0g7NkNBQUE7NENBS0M7WUFMRHZCOzZDQUFBOzRDQUtDOztLQUxEOUY7Y0FDQXNDLEtBQUFpQjsrQ0FBQSx5Q0FBQTs0QkFBQWpCOytDQUFBLHlDQUFBOzRCQUFBQTtnQkFBQWlCOytDQUFBLHlDQUFBO2lEQURBLFdBQUF1QyxPQUNBeEQ7K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSx5Q0FBQTs0QkFBQUE7Z0JBQUFpQjsrQ0FBQSxVQUVPQTtrREFBQSx5Q0FBQTsrQkFGUGpCOztzQkFFT3VMLEtBQUF0SzttREFBQSxHQUFBc0s7b0RBQUEseUNBQUE7aUNBRlB2TDttREFFTyx5Q0FBQTtxREFIUCxXQUFBK0UsT0FDQS9FO1lBRU9pQjttREFBQTttREFBWTtrREFBWix5Q0FBQTtzQ0FBQUE7a0RBQUEsZ0RBQUE7c0NBRlBqQjtrREFFbUI7OytDQUZuQix5Q0FBQTs0QkFBQUE7K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLHlDQUFBOzRCQUFBQTtnQkFBQWlCOytDQUFBLHlDQUFBO2lEQURBLFdBQUEyTCxPQUNBNU07K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLGdEQUFBO21DQUFBQTs4Q0FJQzs7S0FMRG5DO2NBQ0FvRDsrQ0FBQSxnREFBQTt3Q0FEQXZELElBQ0F1RDs4Q0FJQzs0Q0FKRCxTQUFBL0QsVUFBQTJQOzZDQUFBLFNBQUFBOzhDQUFBLGdEQUFBOzRDQUFBRixrQkFBQUU7NkNBQUE7S0FBQUMsa0JBQUFEOzhDQUNFRTs4Q0FDQUM7OENBQ0FDOzhDQUhGQzs4Q0FBQUM7YUFBQUM7OENBQUE7OENBQUE7NkRBQUE7VUFBQUM7ZUFBQUE7aUJBQUFBOzs7OzthQUFBbkksMEJBQUFvSTtZQUFBcEksbUJBQUFBOztVQUFBcUk7VUFBQUM7cUJBQUF0STtzQkFBQXVJO3VEQUFBLEtBQUF2STt3REFBQSxnREFBQTtzREFBQXlILGtCQUFBRTtpQkFBQTNIO3dEQUFBLCtDQUFBOztrQkFBQXdJLFFBQUF4STt1REFBQSxPQUFBd0k7c0RBSUM7b0JBSkREOztVQUFBQSxpQkFBQUQsaUJBQUF0STtpQ0FBQW9JO2tDQUFBQTttQ0FBQUE7O2FBQUFILG1CQUFBRyxnQkFBQUg7O21CQUNFSjtZQURGRyx3QkFBQUksZ0JBQUFKOztxREFDRTtzREFERlMsbUJBQUFGO3NEQUNFaEU7d0RBQUE7b0NBREZrRTtZQUNFWixpQkFBQXREOztrQkFFQXdEO1dBSEZDLHdCQUFBSSxnQkFBQUo7O29EQUdFO3FEQUhGVSxtQkFBQUg7cURBR0VJO3VEQUFBO21DQUhGRDtXQUdFWCxrQkFBQVk7O2lCQURBYjtVQUZGRSx3QkFBQUksZ0JBQUFKOzttREFFRTtvREFGRlksbUJBQUFMO29EQUVFTTtzREFBQTttREFGRkQ7VUFFRWQsZ0JBQUFlOzt1QkFGRlI7Ozs7OytDQUFBLGdEQUFBOzZDQUFBWixrQkFBQVU7OzZDQUlDOzZDQUpERCxTQUFBTjtPQUFBSTs4Q0FBQSxnREFBQTs7Y0FBQVA7Y0FBQU87Y0FBQUw7T0FBQU07OENBQUEsZ0RBQUE7O2NBQUFSO2NBQUFRO2NBQUFOO2NBQ0VFLGtCQUNBQyxtQkFDQUM7O1NBQUFlLHFCQURBQyxpQkFEQUM7OENBREY7YUFDRUE7YUFDQUQ7YUFDQUQ7OzZDQUhGLGdEQUFBOzthQUFBckI7YUFBQUU7O3dCQUNFRTs7eUJBQ0FDOzZCQUNBQzs0Q0FDRDtZQUpEalE7NkNBQUE7S0FHRW1SO0tBREFDO0tBREFDOzhDQUVBQztnREFBQTs0QkFBQUg7OENBSEZJOzRCQUdFRDs4Q0FEQUU7Z0RBQUE7NkNBQUFKOzhDQUZGSzs0QkFFRUQsZUFGRkQ7OENBQ0VHO2dEQUFBOzRCQUFBTDs4Q0FERk07NEJBQ0VELGVBREZEOzZDQUFBLFdBQUFFOzRDQUlDOzRDQUpELFNBQUF0UixZQUFBd0I7NkNBQUE7YUFBQUEscUNBQUFBOzhDQUNFO01BREY4SCxnQkFBQTlIOytDQUNFK1A7K0NBQ0FDOytDQUNBQzsrQ0FIRmhJOytDQUFBQztNQUFBQzs7a0RBQUE7a0RBQUE7aUVBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtzREFBQTt3REFBQTs7Y0FBQUo7O2dCQUFBSTt5REFBQTswQ0FBQUo7Ozt1REFDRTt3Q0FBQTZIO2FBREY5SDs7ZUFBQUs7d0RBQ0U7eUNBREZMOztzREFDRSx5Q0FBQTtjQUFBTTt5REFBQTtxQ0FERkY7YUFDRTBILG1CQUFBeEg7OztzREFFQTt1Q0FBQTBIO1lBSEZoSTs7Y0FBQUs7dURBR0U7d0NBSEZMOztxREFHRSx5Q0FBQTthQUFBTzt3REFBQTtvQ0FIRkg7WUFHRTRILG9CQUFBekg7OztxREFEQTtzQ0FBQXdIO1dBRkYvSDs7YUFBQUs7c0RBRUU7dUNBRkZMOzs7WUFFRWlJOzs7O2dCQUZGN0g7V0FFRTJILGtCQUFBRTs7d0JBRkY5SDs7aURBSUM7OENBSkRELEtBQUFMOztnREFBQTtpQ0FBQUc7K0NBQUEseUNBQUE7O2tEQUFBO21DQUFBQTsrQ0FBQSxnREFBQTttREFBQS9KLGFBQUE4Qjs7O2dEQUFBO2lDQUFBa0k7K0NBQUEseUNBQUE7O2tEQUFBO21DQUFBQTsrQ0FBQSxnREFBQTttREFBQWhLLGFBQUE4Qjs7OENBQ0U7K0NBQUE7aURBQUE7a0NBQUErUDsrQ0FDQTtpREFBQTtrQ0FBQUM7K0NBQ0E7aURBQUE7a0NBQUFDOzs7T0FBQUU7T0FEQUM7T0FEQUM7K0NBREY7Y0FDRUE7Y0FDQUQ7Y0FDQUQ7OzhDQUhGOytDQUFBOzs7OztxREFHRTtzQ0FBQUY7Ozs7OytDQUhGOzs7OztxREFFRTtzQ0FBQUQ7Ozs7OytDQUZGOzs7OztxREFDRTtzQ0FBQUQ7Ozs7OzhDQURGLGdEQUFBO2tEQUFBN1IsUUFBQThCOzs2Q0FBQSxnREFBQTtpREFBQTlCLFFBQUE4Qjs0Q0FJQztZQUpEekI7NkNBQUE7S0FHRStSO0tBREFDO0tBREFDO0tBRUEzSCxvQ0FBQXlIO0tBQUF4SCwyQkFBQUQ7S0FEQUU7O3NFQUFBd0g7S0FBQXZILDJCQUFBRCxRQUNBRDtLQUZBMkgsc0NBQUFEO0tBQUFFLDRCQUFBRCxRQUNBekg7NkNBRkYsc0JBQ0UwSDs0Q0FHRDtZQUVHQyxVQUFZQzsrQ0FBSywyQ0FBYTs7a0RBQUE7NEJBQWxCQTsrQ0FBSyxXQUFMQSxNQUFBQTs4Q0FBb0M7WUFFaERDLE1BQVNDLEtBQUtDOytDQUFRLDJDQUNoQjtLQUFKN0gsV0FETzRIOzhDQUVYLFdBRldBLEtBQUtDLFVBQ1o3SCxHQUFBQTs2Q0FFTDtZQUNHOEgsT0FBVS9NLEdBQUc2TSxLQUFLQzsrQ0FBUTtnREFDeEJ0TCxXQURXcUw7Z0RBRVhoUCxZQUZRbUMsSUFBRzZNOzhDQUdmLFdBSGVBLEtBQUtDLFVBQ2hCdEwsR0FDQTNEOzZDQUVMO1lBQ0dtUCxRQUFXaE4sR0FBRzZNLEtBQUtDOytDQUFRO2dEQUN6QnRMLFlBRFN4QixJQUFHNk07Z0RBRVpoUCxXQUZZZ1A7OENBR2hCLFdBSGdCQSxLQUFLQyxVQUNqQnRMLEdBQ0EzRDs2Q0FFTDtZQUNHb1AsT0FBV3pMLEdBQU0zRCxHQUFLbUMsR0FBRzZNLEtBQUtDOytDQUFRO2dEQUNwQ0k7a0RBQUk7MkJBREsxTCxHQUFjcUw7Z0RBRXZCTTtrREFBSTsyQkFGV3RQLEdBQVFnUDs4Q0FHM0IsU0FBSS9LLElBQU04SDtnREFBUSxlQUhNNUosSUFHZDRKOytDQUFxQzsrQ0FDckIsMkNBQUE7V0FEdEI5SCxJQURBcUw7OENBRUo7WUFKMkJOO1lBQUtDO2dCQUc1QmhMLElBRkFvTDs2Q0FJTDtZQUdHRSxTQUFXcE4sR0FBRzZNLEtBQUtRLFFBQVFQLE1BQUtROytDQUFXO2dEQUN6QzlMLFdBRGlCNkw7Z0RBRWpCeFAsWUFGU21DLElBQXFCc047OENBR2xDLFdBSGdCVCxLQUFhQyxVQUN6QnRMLEdBQ0EzRDs2Q0FFTDtZQUNHMFAsVUFBWXZOLEdBQUc2TSxLQUFLUSxRQUFRUCxNQUFLUTsrQ0FBVztnREFDMUM5TCxZQURVeEIsSUFBUXFOO2dEQUVsQnhQLFdBRitCeVA7OENBR25DLFdBSGlCVCxLQUFhQyxVQUMxQnRMLEdBQ0EzRDs2Q0FFTDtZQUNHMlAsU0FBV3hOLEdBQUc2TSxLQUFLUSxRQUFRUCxNQUFLUTsrQ0FBVztnREFDekM5TCxZQURTeEIsSUFBUXFOO2dEQUVqQnhQLFlBRlNtQyxJQUFxQnNOOzhDQUdsQyxXQUhnQlQsS0FBYUMsVUFDekJ0TCxHQUNBM0Q7NkNBRUw7WUFFRzRQLEtBQVNDLE9BQVNDOzhDQUNwQixLQURXRCxjQUFTQzs4Q0FJbEI7S0FES0MsSUFISUY7K0NBSVQsUUFKa0JDO0tBSVY5UDtLQUFIMkQ7K0NBQ0RzTCxPQUxjYTthQUdiQztTQUdEVixNQUZDMUw7O2dEQUc2QztpREFBQTttREFBQTswQkFGOUNzTCxNQUZDYztNQUdEVjs7b0RBQ3VCOzs7O01BSnRCVTs7a0RBTUU7eUJBSkhkO1NBR0FLLE1BSkl0UDs7Z0RBTXFDO2lEQUFBO21EQUFBOzBCQUx6Q2lQLE1BRkNjO01BS0RUOztvREFFa0I7Ozs4Q0FDdEIsV0FMSUQsS0FFQUM7NkNBSUw7WUFFQ1UsV0FBZUgsT0FBU0M7K0NBQXlCO2dEQUM5QixRQWZuQkYsS0FjZUMsT0FBU0M7S0FDZEc7S0FBUEM7OENBQ0wsV0FES0EsVUFBT0Q7NkNBRWI7OENBRVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQU1URSxTQUNEdkcsR0FBR21DOytDQUFTLEdBQVpuQztnREFRYTtpREFBSnhDOzJDQVJOMkU7Z0JBUU0zRSxHQUFBQTs7Z0RBSEk7aURBQUpnSixhQUxOckU7Z0JBS01xRSxLQUFBQTsrQ0FMRyxXQUFUckU7NkNBYUg7WUFFQ3NFLGFBQWdCMU07K0NBQWEsMENBQ3pCOzs7a0RBQUM7NkJBRFdBO1FBQUFBOytDQUFhLFdBQWJBOzZDQUluQjtZQUVHb0csV0FBY2hHLEdBQWdCdkgsR0FBZ0JzUzsrQ0FBZTtnREFDbEMsTUFsQzNCa0IsY0FpQzhDbEI7Z0RBQzVDck07a0RBQUs7NEJBRE9zQjsrQ0FFaEIsa0RBQUE7a0NBRmdDdkgsR0FDNUJpRzs4Q0FFTDtZQUVHNk4sa0JBQXFCQztpQyxPQXRDckJQOytDQXVDRjtnREFBQTtrREFBQTtvREFDRzs7U0FGb0JPO2dEQUN2QjtrREFBQTs7K0NBQUEsa0RBQUE7d0RBR0c7OzsrQ0FBb0M7WUFFckNDLFlBQWVWOytDQUNqQjtXQURpQkE7V0FBQUE7O2lEQUUyQzsrQ0FDckQ7OENBQ047WUFFQ1csUUFBVzFFLE1BQWM1SixHQUFpQjRCOytDQUM1QyxPQUQ0Q0E7Y0E3RjFDb0wsUUE2RnlCaE4sR0FBZDRKO2NBbEdYbUQsT0FrR3lCL00sR0FBZDRKOzhDQUlaOzs7O09BbkhIaFA7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FNSW9TO09BRUFFO09BSUFHO09BS0FDO09BS0FDO09BUUFHO09BS0FHO09BS0FDO09BTUFDO09BY0FJOztPQVdBRztPQWdCQUU7T0FNQXRHO09BS0F1RztPQU1BRTtPQU1BQzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7O0lDckZKQztJQUFBdFU7SUFRQXVVO0lBQUEvTjtJQUlBZ087SUFBQUM7SUFPQUM7SUFBQUM7SUFPSUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFRQUM7SUFJQUM7SUFDQUM7SUFhQUM7SUFjQUM7Ozs7Ozs7Ozs7OztJQVdBQzs7Ozs7Ozs7SUFxQ0FDOzs7O0lBY0FDOzs7O0lBR0FDOzs7SUFJQUM7SUFDQUM7SUFNQUM7SUFDQUM7SUEyQkFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUE3TEFDLE9BQVVsUyxHQUFHeEQ7NkNBQ2Y7K0NBQWdDO2lEQUFBO2dDQURwQndEOzhDQUNaO2dEQUFBO3NDQURleEQ7NkNBQ2YsZ0RBQUE7OzZDQUNpQjs7SUFHbkIyVjtJQUFBQztZQUFBdlA7NkNBQUE7NkNBQzBCOztLQUQxQnNQO2NBQ0E5UyxLQUFhaUI7Z0RBQUEsMENBQUE7NEJBQWJqQjs7b0JBQWF1TCxLQUFBdEs7aURBQUEsR0FBQXNLO2tEQUFBLDBDQUFBOzhCQUFidkw7aURBQWEsMENBQUE7a0RBRGIsV0FBQXdELE9BQ0F4RCxNQUFhaUI7aURBQUE7Z0RBQWE7Z0RBQWIsMENBQUE7cUNBQUFBO2dEQUFBLGlEQUFBO21DQUFiakI7K0NBQTBCOztLQUQxQitTO2NBQ0E5UjsrQ0FBQSxnREFBQTt3Q0FEQTZSLFVBQ0E3UjsrQ0FBMEI7NENBQTFCLFNBQUErUixjQUFBeEg7NkNBQUEsZ0RBQUE7a0RBQUFBOzZDQUEwQjtZQUExQnlILGNBQUF4SDs2Q0FBQSxnREFBQTtrREFBQUE7NkNBQTBCOzRDQUExQixTQUFBeUgsZ0JBQUFqVztlO3lFQUFBQTs7WUFBQWtXLGdCQUFBbFQ7ZTt5RUFBQUE7O1lBU0FtVCxrQkFDQXBUOzZDQUFBOztnREFBQSxnREFBQTttQ0FBQUE7O2dEQUFBLGdEQUFBO21DQUFBQTs7Z0RBQUEsZ0RBQUE7bUNBQUFBOzs2Q0FHVztZQUpYcVQsb0JBQ0FwUzs2Q0FBQSxnREFBQTtzQ0FEQW1TLG1CQUNBblM7NkNBR1c7NENBSFgsU0FBQXFTO0lBQUF0Vjs2Q0FBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7O2lEQUFBOztnREFBQTs7K0NBQUE7O2dCQUFBQTs7K0NBQUEsZ0RBQUE7NENBQUFxVCxrQkFBQXJUOzs7K0NBQUEsZ0RBQUE7NENBQUFxVCxrQkFBQXJUOzs7Ozs7Ozs7OztnREFBQSxnREFBQTs2Q0FBQXFULGtCQUFBclQ7OytDQUFBLGdEQUFBOzRDQUFBcVQsa0JBQUFyVDs7OENBQUEsZ0RBQUE7MkNBQUFxVCxrQkFBQXJUOzs2Q0FBQSxnREFBQTswQ0FBQXFULGtCQUFBclQ7NkNBR1c7WUFIWHVWOzZDQUFBOztnREFDSTs7Z0RBQ0E7d0RBQ0E7OzZDQUFPOzRDQUhYLFNBQUFDO0lBQUEzVTs2Q0FBQTthQUFBQSxxQ0FBQUE7Z0JBQUFBOzsrQ0FBQSxnREFBQTtvREFBQTlCLFFBQUE4Qjs7Ozs7Ozs7MkRBQUE7d0RBQUE5QixRQUFBOEI7Ozs7MkRBQUE7d0RBQUE5QixRQUFBOEI7Ozs7MkRBQUE7d0RBQUE5QixRQUFBOEI7Ozs7Z0RBQUEsZ0RBQUE7cURBQUE5QixRQUFBOEI7Ozs2Q0FBQSxnREFBQTtrREFBQTlCLFFBQUE4Qjs2Q0FHVztZQUhYNFU7NkNBQUE7O2dEQUNJOztnREFDQTt3REFDQTs7NkNBQU87O0lBSVhDO0lBQUFDO1lBQUE1Tzs2Q0FBQSxPQVJBcU87NkNBU2lEO1lBRGpEcE87NkNBQUEsT0FSQW9POzZDQVNpRDs7S0FEakRNO2NBQ0ExVDsrQ0FBQTtPQURBOEw7T0FBQXJJO2dEQUNpQiwwQ0FBQTs0QkFBakJ6RDsrQ0FEQSx5Q0FBQTtjQUFBZ0Y7K0NBQUEseUNBQUE7b0RBQ0FoRixjQURBeUQ7Z0RBQ2lCLDBDQUFBOzRCQUFqQnpEOytDQURBLHlDQUFBO2NBQUErRTsrQ0FBQSx5Q0FBQTtvREFDQS9FLGNBREE4TDsrQ0FBQSxnREFBQTttQ0FDQTlMOytDQUFpRDs7S0FEakQyVDtjQUNBMVM7K0NBQUEsZ0RBQUE7d0NBREF5UyxjQUNBelM7K0NBQWlEO1lBQWpEMlMsa0JBQWlCM087NkNBQWpCLFNBQWlCQTtnQkFBQUE7Ozs7aURBQUE7UUFBQTRPO1FBQUFDO2tEQUFBL1A7VUFSakJ1UCx1QkFRaUJRO2tEQUFBQztVQVJqQlQsdUJBUWlCTztpREFBQTtlQUFBOVA7ZUFBQWdROzs7OzhDQUFBLGlEQUFBOzBDQUFqQnpDLHFCQUFpQnJNOzZDQUFnQztZQUFqRCtPOzZDQUFBO0tBQWlCQztLQUFBQztLQUFBQyxXQVJqQlosdUJBUWlCVztLQUFBRSxXQVJqQmIsdUJBUWlCVTttQkFBQUUsY0FBQUM7NkNBQWdDO1lBQWpEQyxvQkFBaUJ4Vjs2Q0FBakI7YUFBaUJBLHFDQUFBQTtnQkFBQUE7Ozs7O1FBQUFDO1FBQUFDO1FBQUFDLE9BUmpCd1UseUJBUWlCelU7UUFBQUUsT0FSakJ1VSx5QkFRaUIxVTtrQkFBQUUsTUFBQUM7Ozs7O2tEQUFqQnNFLGFBQWlCMUU7NkNBQWdDO1lBQWpEeVY7NkNBQUE7S0FBaUJ4VjtLQUFBQztLQUFBQyxPQVJqQnlVLHlCQVFpQjFVO0tBQUFFLE9BUmpCd1UseUJBUWlCM1U7OEJBQUFFLFVBQUFDOzZDQUFnQzs7SUFHakR2QjtJQUFBRztZQUFBK087NkNBQUE7NENBS0M7WUFMREo7NkNBQUEsT0FKQWtIOzRDQVNDO1lBTERhOzZDQUFBLE9BdEJBekI7NENBMkJDOztLQUxEcFY7Y0FDQXNDLEtBQUFpQjsrQ0FBQSx5Q0FBQTs0QkFBQWpCOytDQUFBLHlDQUFBOzRCQUFBQTtpQkFBQWlCOytDQUFBLHlDQUFBO2lEQURBLFdBQUFzVCxTQUNBdlU7OytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSx5Q0FBQTs0QkFBQUE7K0NBQUEseUNBQUE7NEJBQUFBO2lCQUFBaUI7K0NBQUEseUNBQUE7aURBREEsV0FBQXVMLFNBQ0F4TTs7K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSx5Q0FBQTs0QkFBQUE7aUJBQUFpQjsrQ0FBQSx5Q0FBQTtpREFEQSxXQUFBMkwsT0FDQTVNOytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSxnREFBQTttQ0FBQUE7OENBSUM7O0tBTERuQztjQUNBb0Q7K0NBQUEsZ0RBQUE7d0NBREF2RCxJQUNBdUQ7OENBSUM7WUFKRC9ELFVBQUFzWDs2Q0FBQSxTQUFBQTs4Q0FBQSxnREFBQTs0Q0FBQWpELGtCQUFBaUQ7NkNBQUE7S0FBQUMsa0JBQUFEOzhDQUNFRTs4Q0FDQUM7OENBQ0FDOzhDQUhGQzs4Q0FBQUM7YUFBQUM7OENBQUE7OENBQUE7NkRBQUE7VUFBQUM7ZUFBQUE7a0JBQUFBOzs7OzthQUFBQywyQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBRTtVQUFBQztxQkFBQUg7c0JBQUFJO3VEQUFBLEtBQUFKO3dEQUFBLGdEQUFBO3NEQUFBMUQsa0JBQUFpRDtpQkFBQVM7d0RBQUEsK0NBQUE7O2tCQUFBSyxRQUFBTDt1REFBQSxPQUFBSztzREFJQztvQkFKREQ7O1VBQUFBLGlCQUFBRCxpQkFBQUg7aUNBQUFDO2tDQUFBQTttQ0FBQUE7O2FBQUFKLG1CQUFBSSxnQkFBQUo7O21CQUdFRjtZQUhGQyx3QkFBQUssZ0JBQUFMOztxREFHRTtzREFIRlUsbUJBQUFGO3NEQUdFRzt3REFBQTtvQ0FIRkQ7WUFHRVgsa0JBQUFZOztrQkFGQWQ7V0FERkcsd0JBQUFLLGdCQUFBTDs7b0RBQ0U7cURBREZZLG1CQUFBSjtxREFDRUs7Y0F2QkYxQyxjQXNCQXlDO1dBQ0VmLG1CQUFBZ0I7O2lCQUNBZjtVQUZGRSx3QkFBQUssZ0JBQUFMOzttREFFRTtvREFGRmMsbUJBQUFOO29EQUVFTzthQU5GaEMsa0JBSUErQjtVQUVFaEIsdUJBQUFpQjs7dUJBRkZUOzs7OzsrQ0FBQSxnREFBQTs2Q0FBQTVELGtCQUFBeUQ7OzZDQUlDOzZDQUpERCxTQUFBTjtPQUFBSTs4Q0FBQSxnREFBQTs7Y0FBQXREO2NBQUFzRDtjQUFBTDtPQUFBTTs4Q0FBQSxnREFBQTs7Y0FBQXZEO2NBQUF1RDtjQUFBTjtlQUNFRSxxQkFDQUMsMEJBQ0FDOztTQUFBaUIscUJBREFDLHlCQURBQzs4Q0FERjthQUNFQTthQUNBRDthQUNBRDs7NkNBSEYsZ0RBQUE7O2FBQUF0RTthQUFBaUQ7O3dCQUNFRTs7eUJBQ0FDOzZCQUNBQzs0Q0FDRDtZQUpENVg7NkNBQUE7S0FHRWdaO0tBREFDO0tBREFDOzhDQUVBQztnREFBQTs0QkFBQUg7OENBSEZJOzRCQUdFRDs4Q0FEQUU7T0FORnJDLGtCQU1FaUM7OENBRkZLOzRCQUVFRCxlQUZGRDs4Q0FDRUc7T0F2QkZ0RCxjQXVCRWlEOzhDQURGTTs0QkFDRUQsZUFERkQ7NkNBQUEsV0FBQUU7NENBSUM7WUFKRG5aLFlBQUF3Qjs2Q0FBQTthQUFBQSxxQ0FBQUE7OENBQ0U7TUFERjhILGdCQUFBOUg7K0NBQ0U0WDsrQ0FDQUM7K0NBQ0FDOytDQUhGN1A7K0NBQUFDO01BQUFDOztrREFBQTtrREFBQTtpRUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3NEQUFBO3dEQUFBOztjQUFBSjs7Z0JBQUFJO3lEQUFBOzBDQUFBSjs7O3VEQUdFO3dDQUFBNFA7YUFIRjdQOztlQUFBSzt3REFHRTt5Q0FIRkw7O3NEQUdFLHlDQUFBO2NBQUFNO3lEQUFBO3FDQUhGRjthQUdFeVAsb0JBQUF2UDs7O3NEQUZBO3VDQUFBcVA7WUFERjNQOztjQUFBSzt1REFDRTt3Q0FERkw7O3FEQUNFLHlDQUFBO2FBQUFPLFdBdkJGNkwsZ0JBc0JBaE07WUFDRXVQLHFCQUFBcFA7OztxREFDQTtzQ0FBQXFQO1dBRkY1UDs7YUFBQUs7c0RBRUU7dUNBRkZMOztvREFFRSx5Q0FBQTtZQUFBaUksV0FORnNGLG9CQUlBbk47V0FFRXdQLHlCQUFBM0g7O3dCQUZGOUg7O2lEQUlDOzhDQUpERCxLQUFBTDs7Z0RBQUE7aUNBQUFHOytDQUFBLHlDQUFBOztrREFBQTttQ0FBQUE7K0NBQUEsZ0RBQUE7cURBQUEwSyxnQkFBQTNTOzs7Z0RBQUE7aUNBQUFrSTsrQ0FBQSx5Q0FBQTs7a0RBQUE7bUNBQUFBOytDQUFBLGdEQUFBO3FEQUFBeUssZ0JBQUEzUzs7OENBQ0U7K0NBQUE7aURBQUE7a0NBQUE0WDsrQ0FDQTtpREFBQTtrQ0FBQUM7K0NBQ0E7aURBQUE7a0NBQUFDOzs7T0FBQUM7T0FEQUM7T0FEQUM7K0NBREY7Y0FDRUE7Y0FDQUQ7Y0FDQUQ7OzhDQUhGOytDQUFBOzs7OztxREFHRTtzQ0FBQUQ7Ozs7OytDQUhGOzs7OztxREFFRTtzQ0FBQUQ7Ozs7OytDQUZGOzs7OztxREFDRTtzQ0FBQUQ7Ozs7OzhDQURGLGdEQUFBO29EQUFBakYsVUFBQTNTOzs2Q0FBQSxnREFBQTttREFBQTJTLFVBQUEzUzs0Q0FJQztZQUpEekI7NkNBQUE7S0FHRTJaO0tBREFDO0tBREFDO0tBRUF2UCxvQ0FBQXFQO0tBQUFwUCwyQkFBQUQ7S0FEQUUsUUFORjBNLG9CQU1FMEM7S0FBQW5QLGtDQUFBRCxRQUNBRDtLQUZBMkgsUUF2QkY2RCxnQkF1QkU4RDtLQUFBMUgsOEJBQUFELFFBQ0F6SDs2Q0FGRixzQkFDRTBIOzRDQUdEO1lBRUQySCxpQkFDQWxYOzZDQUFBO3VEQUFBO2tDQUFBQTt1REFBQTtrQ0FBQUE7NkNBRVU7WUFIVm1YLG1CQUNBbFc7NkNBQUEsZ0RBQUE7c0NBREFpVyxrQkFDQWpXOzZDQUVVOzRDQUZWLFNBQUFtVztJQUFBQzs2Q0FBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O2dEQUFBOzsrQ0FBQTs7Z0JBQUFBOzsrQ0FBQSxnREFBQTs0Q0FBQTVGLGtCQUFBNEY7OzsrQ0FBQSxnREFBQTs0Q0FBQTVGLGtCQUFBNEY7Ozs7Ozs7OytDQUFBLGdEQUFBOzRDQUFBNUYsa0JBQUE0Rjs7OENBQUEsZ0RBQUE7MkNBQUE1RixrQkFBQTRGOzs2Q0FBQSxnREFBQTswQ0FBQTVGLGtCQUFBNEY7NkNBRVU7WUFGVkM7NkNBQUE7NkNBRVU7NENBRlYsU0FBQUM7SUFBQTFZOzZDQUFBO2FBQUFBLHFDQUFBQTtnQkFBQUE7OytDQUFBLGdEQUFBO29EQUFBNlMsVUFBQTdTOzs7Ozs7OzsyREFBQTt3REFBQTZTLFVBQUE3Uzs7OzsyREFBQTt3REFBQTZTLFVBQUE3Uzs7OztnREFBQSxnREFBQTtxREFBQTZTLFVBQUE3Uzs7OzZDQUFBLGdEQUFBO2tEQUFBNlMsVUFBQTdTOzZDQUVVO1lBRlYyWTs2Q0FBQTs2Q0FFVTtZQUVObGEsR0FBTW1hLFdBQVdDLE9BQU9qSDs4Q0FBUztZQUFoQmlIO1lBQVhEO1lBQWtCaEg7NkNBQWlDO1lBUXpEa0gsU0FBWTFhLEdBQVl5UCxNQUFja0w7NkNBQ3hDLE9BVEV0YTthQUdBcVU7aUJBS1kxVTt1REFDRjt5Q0FENEIyYSxNQUFkbEw7NkNBQ1M7WUFXakNtTCxXQUFhNWE7OENBQUs7K0NBQUE7T0EzRGxCNFYsT0EwREFaLGdCQUNhaFY7K0NBQUs7OztrREFBNkIsa0JBQWxDQTs4Q0FBa0M7NkNBQVE7WUFDdkQ2YSxpQkFBbUI3YTs4Q0FBSyxpREFBQTthQUFMQTs2Q0FBYTtZQUNoQzhhLGFBQWU5YTs2Q0FDakIseUNBQUE7O2dEQUFBOzBCQURpQkEsT0FSZjhVLFdBSUFDOzZDQUtGOztjQTlERWEsT0EwREFaLGdCQUdlaFY7NkNBQzJDO1lBTTFEK2EsVUFBWS9hOzZDQUNkLHlDQUFBO1lBckVFNFYsWUFvRVk1Vjs2Q0FDZDsrQ0FDZTtnREFBQTtrREFBQTtpQ0FGREE7O2lEQUVYOzs7Ozs7Ozs2Q0FBNkM7NkNBRS9CLDBDQUFBO0lBQWZnYjtnREFBZTtvQkFEZi9GLGNBQUFBO3VDOzZDQUVrQixTQUFsQmdHO2UsV0FGQWhHOztZQUdBaUcsYUFBZWhiOzZDQUNqQiw2QkFEaUJBOytDQUNTLE9BRFRBOzhDQUlIOztnREFESDtrREFBQTs2QkFITUE7Ozs7aURBSUg7bURBQUE7OEJBSkdBLHlCQUFBQTs7O2lDQUFBQSw0QkFBQUE7OENBSTZDLE9BSjdDQTs0Q0FRaEI7WUFDQ2liLGFBQWVqYjs4Q0FBSywwQ0FBUTs7aURBQUE7cUJBQWJBOzhDQUFhLGlEQUFBOzs2Q0FBUzs4Q0FjVDsrQ0FBQTtpREFBQTtpQ0FaNUJnVjsrQ0FZNEI7aURBQUE7OytDQUFSO2lEQUFBOzs4Q0FBUCxTQUFia0c7ZSxPQWpHQXhGOzs4Q0FtR2E7K0NBQUE7aURBQUE7aUNBSGJUOytDQUdhO2lEQUFBOzs4Q0FBUjtnREFBQTs7NkNBQVAsU0FERWtHOztlLE9BbEdBekY7OzhDQXVHdUIsU0FBdkIwRjs7ZSxPQXZHQTFGOzs4Q0E0R3dCLFNBQXhCMkY7O2UsT0E1R0EzRjs7WUE2R0E0RixtQkFBcUJ4Yjs4Q0FDdkIsMENBQUE7WUFQRXNiLHFCQU1xQnRiOzhDQUN2Qjs7OytDQUNHLDBDQUFBO2FBSER1YixzQkFDcUJ2YjsrQ0FFcEI7OztnREFDQSwwQ0FBQTtjQTVDRCthLFVBeUNxQi9hO2dEQUdwQjtpREFyRFksT0FBYjRhLFdBa0RxQjVhOzs7OzhDQUN2Qjs4Q0FHZ0I7OENBRUksU0FBbEJ5YjtlLE9BbkhBN0Y7O1lBb0hBOEYsa0JBQW9CMVg7OENBQ3RCLDBDQUFBOztpREFBQSxxQkFEc0JBOzhDQUN0QjtnREFBWSwyQ0FBQTs7bURBQUE7VUFEVUE7Z0RBQ1Y7aURBRlEsT0FuSGxCNFI7b0NBb0hvQjVSOzs7OzsrQ0FDVjs4Q0FBNkQ7WUFDdkUyWCxPQUFTQzsrQ0FBTztnREFBQSxPQUhoQkgsZ0JBR1NHO2dEQUFPOzs7O3NEQUF3Qjt5QkFBL0JBOzs7Ozs4Q0FBNkQ7WUFJdEVDLFdBQWFEOytDQUFPO2dEQUFBLE9BUHBCSCxnQkFPYUc7Z0RBQU87a0JBSnBCRCxPQUlhQzsrQ0FBZ0M7OENBQVc7WUFNeERFLFNBQVdGOzhDQUNiLDBDQUFDO2dCQWRDSCxnQkFhV0c7OytDQUVWO2dEQUFBLE9BZERGLGtCQVlXRTtnREFFVjs7OztzREFDQTswQkFIVUE7Ozs7Ozs7OENBR3NCO1lBQ2pDRyxhQUFlSDsrQ0FBTztnREFBQSxPQWhCdEJGLGtCQWdCZUU7Z0RBQU87a0JBSnRCRSxTQUllRjsrQ0FBa0M7OENBQWE7OENBRXJDOytDQUFBO2lEQUFBO2lDQUR6QnhHOytDQUN5QjtpREFBQTs7K0NBQVI7aURBQUE7OzhDQUFQLFNBQVY0RztlLE9BdElBcEc7O1lBd0lBcUcsT0FBU0w7OENBQ1gsMENBQUM7Z0JBSENJLFFBRVNKOzsrQ0FFUiwwQ0FBQTs7a0RBQUE7VUFGUUE7K0NBRVI7Z0RBMUlRLE9BQVRoRzsrQ0F3SVNnRzs7Ozs7OENBRVI7NkNBTUM7OENBQ29CLFNBQXRCTTs7ZSxPQWpKQXRHOzs4Q0FvSjZCOytDQUFBO2lEQUFBO2tDQUQ3QlA7K0NBQzZCO2lEQUFBOzsrQ0FBUjtpREFBQTs7OENBQVAsU0FBZDhHO2UsT0FwSkF2Rzs7OENBdUp3QjsrQ0FBQTtpREFBQTtvQkFEeEJOOytDQUNpQjtpREFBQTs7OENBQVAsU0FBVjhHO2UsT0F2SkF4Rzs7OENBNEpjOytDQUFkeUc7VUFGQTlHLGdCQUNBQzsrQ0FFQThHO2lEQUFhO29CQUhiL0csWUFDQUM7dUM7OENBR2dCLFNBQWhCK0c7ZSxXQURBRDs7OENBTVk7K0NBQVpFO1VBRkEvRyxpQkFDQUM7K0NBRUErRztpREFBYztvQkFIZGhILGFBQ0FDO3VDOzhDQUdpQixTQUFqQmdIO2UsV0FEQUQ7O1lBT0FFLFVBQWEzYzs4Q0FDZixPQWRFdWMsY0FhYXZjO2NBZmJxYztjQVNBSyxlQU1hMWMsS0FSYndjOzZDQWFEO1lBRUNJLFVBQWFqTzs4Q0FDZixrREFDUztjQUZNQSxLQXRCYjBOO3NCQUNBQzt5REF3Qk87Z0JBSE0zTixLQWZiNk47d0JBQ0FDOzs2Q0FtQkQ7OENBSVc7K0NBQUE7aURBQUE7O1FBdERWckg7WUFpQkFFLFVBT0FnSCxnQkFPQUcsaUJBNUZBekI7OENBa0hBNkI7Z0RBQ0Y7b0JBeENFeEg7WUEyQ0F5SCxpQkFBbUI5YzsrQ0FBSyxrREFBQTthQUFMQTs4Q0FBdUI7WUFDMUMrYyxjQUNGL2M7OENBQ0UsT0F2RUE2YixXQXNFRjdiOzZDQUlHOzhDQUs4RDs7Ozs7O1NBckQvRG1jOztxREEyRXNCOzs7Ozs7a0RBRFU7Ozs7Ozs7O1NBN0VoQ0Q7O3FEQTZFZ0I7Ozs7Ozs7OztTQTdFaEJBOztxREE0RXlCOzs7Ozs7Ozs7U0E1RXpCQTs7cURBMkV1Qjs7Ozs7O2tEQUYyQjs7Ozs7a0RBQWhCOzs7Ozs7OztTQXJEbENROztxREFxRGtCOzs7Ozs7a0RBSDRCOzs7Ozs7OztTQXpEOUNIOztxREF5RDhCOzs7Ozs7a0RBRFE7Ozs7Ozs7O1NBaEZ0Q1A7O3FEQWdGc0I7Ozs7OztrREFEa0I7Ozs7Ozs7O1NBckZ4Q0Y7O3FEQXFGd0I7Ozs7OztrREFEWTs7Ozs7Ozs7U0E5RnBDSDs7cURBOEZvQjs7Ozs7O2tEQURrQjs7Ozs7Ozs7U0EvSXRDWjs7cURBK0lzQjs7Ozs7Ozs7O1NBNUR0QnFCOztxREEyRGtCOzs7Ozs7a0RBSGlDOzs7OztrREFBaEI7Ozs7O2tEQUFoQjs7Ozs7Ozs7U0FqQm5CVTs7b0RBaUJHOzs7Ozs7a0RBTDZCOzs7K0NBRGhDRTs7Ozs7U0FqRUFmOztxREFrRWdCOzs7Ozs7OztRQW5LaEI1YjtVQU1Bd1U7O3FEQXFRcUM7Ozs7Ozs7UUEzUXJDeFU7VUFNQXdVOztxREFtUTRCOzs7Ozs7O1FBelE1QnhVO1VBTUF3VTs7cURBZ1FrQzs7Ozs7OztRQXRRbEN4VTtVQU1Bd1U7O3FEQThQdUM7Ozs7Ozs7UUFwUXZDeFU7VUFNQXdVOztxREE2UHVDOzs7Ozs7O1FBblF2Q3hVO1VBTUF3VTs7cURBNFBxQzs7Ozs7OztRQWxRckN4VTtVQU1Bd1U7O3FEQTJQcUM7Ozs7O3lCQXpQckM2Rjs7Ozs7O1FBUkFyYTtVQU1Bd1U7O3FEQXVQb0I7Ozs7Ozs7UUE3UHBCeFU7VUFNQXdVOztxREFvUDZCOzs7Ozs7O1FBMVA3QnhVO1VBTUF3VTs7cURBbVArQjs7Ozs7OztRQXpQL0J4VTtVQU1Bd1U7O3FEQWtQK0I7Ozs7Ozs7UUF4UC9CeFU7VUFJQXNVOztxREFtUDRCOzs7Ozs7O1FBdlA1QnRVO1VBSUFzVTs7cURBa1A0Qjs7Ozs7OztRQXRQNUJ0VTtVQUlBc1U7O3FEQWlQNEI7Ozs7Ozs7UUFyUDVCdFU7VUFJQXNVOztxREFnUDhCOzs7Ozs7O1FBcFA5QnRVO1VBSUFzVTs7cURBK09nQzs7Ozs7OztRQW5QaEN0VTtVQUlBc1U7O3FEQThPZ0M7Ozs7Ozs7UUFsUGhDdFU7VUFJQXNVOztxREE2T2dDOzs7Ozs7O1FBalBoQ3RVO1VBSUFzVTs7cURBMk84Qjs7Ozs7OztRQS9POUJ0VTtVQUlBc1U7O3FEQTBPa0M7Ozs7Ozs7UUE5T2xDdFU7VUFJQXNVOztxREF5T2tDOzs7OzswQkFyT2xDK0Y7Ozs7MEJBQUFBOzs7OzBCQUFBQTs7Ozs7O1FBUkFyYTtVQUdBcVU7O3FEQW9Pd0I7Ozs7Ozs7UUF2T3hCclU7VUFHQXFVOztxREFtTzRCOzs7Ozs7O1FBdE81QnJVO1VBR0FxVTs7cURBa08rQjs7Ozs7OztRQXJPL0JyVTtVQUlBc1U7O3FEQWdPb0I7Ozs7Ozs7UUFwT3BCdFU7VUFHQXFVOztxREErTndCOzs7Ozt5QkExTnhCZ0c7Ozs7eUJBQUFBOzs7OzRCQUFBQTs7OzsyQkFBQUE7Ozs7OztRQUFBQTs7Ozs0QkFBQUE7Ozt3QkFBQUE7O3dCQUFBQTs7OzRCQUFBQTs7O3VCQUFBQTs7dUJBQUFBOzs7d0JBQUFBOzs7O3dCQUFBQTs7Ozt1QkFBQUE7Ozs7dUJBQUFBOzs7eUJBQUFBOzt1QkFBQUE7O3VCQUFBQTs7OzJCQUFBQTs7O3NCQUFBQTs7c0JBQUFBOzs7OEJBQUFBOzs7OzhCQUFBQTs7Ozt1QkFBQUE7Ozs7dUJBQUFBOzs7O3VCQUFBQTs7O3lCQUFBQTs7eUJBQUFBOzt5QkFBQUE7O3dCQUFBQTtrQ0FBQUE7bUNBQUFBOytDQXVMQXVDOzt5QkF2TEF2Qzs7WUFzUUEvVyxJQUNGdVo7K0NBQVEsa0RBQUE7Z0NBQVJBLE1BaEZFRDs4Q0FnRnVEOztpQkFJdENFOytDQUFELElBQVcxQzsrQ0FBa0Isa0RBQUE7eUJBQWxCQSxPQUFWMEM7OENBQXlDOzZDQUQ1RCwwQ0FBQTs7Z0RBQUE7a0RBQ0c7O1FBcEZERjs7ZTs7NkNBbUZGLDBDQUFBO0lBREVHO2dEQUNGO2tEQUVHOzs7WUFFREMsYUFDRm5kOzhDQUNFO2tCQUNHaWQ7K0NBQUQ7O01BQWlCRztNQUFOQzt1REFBa0IsV0FBbEJBLE1BRmZyZDswREFFMkM7NEJBQXRCb2QsT0FBaEJIO2VBQUFBOytDQUF1RDs4Q0FQNUQsaURBQUE7MENBaEhFSDs2Q0EwSEM7WUFFRFEsVUFBWXhkOytDQUFLLGFBUmpCcWQsYUFRWXJkOzs7OENBQTBCO1lBRXRDeWQsU0FBV3pkOytDQUFLLGtEQUZKOzhCQUVEQSxHQWZYb2Q7OENBZW1DO1lBRW5DTSxlQUFpQjFkOytDQUFLLDJDQUFBO1lBSnRCd2QsVUFJaUJ4ZDsrQ0FBSzs7O2dEQUFnQiwyQ0FBQTthQTVRdEM4YSxhQTRRaUI5YTtnREFBcUI7aURBRjNCLE9BQVh5ZCxTQUVpQnpkOzs7K0NBQUs7OENBQThDO1lBRXBFMmQsVUFBYWxPLE1BQWN6UDsrQ0FBZSxHQU4xQ3dkLFVBTTJCeGQ7Z0RBRVosT0F0U2ZLO2NBR0FxVTtrQkFpUzJCMVU7eURBRVo7bUNBRkZ5UDs4Q0FDZixnREFBQTs7NkNBRUQ7Ozs7T0E5VUdtRztPQUtKQztPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQVNBQztPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQU9BQztPQUFBQztPQUNBQztPQUFBSTtPQUFBSztPQUFBQztPQUdBNVc7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FNQThaO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BSUlsYTtPQUdBcVU7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQTZGO09BTUE1RjtPQUlBQztPQUNBQztPQUNBNEY7T0FDQUM7T0FDQUM7T0FPQUM7T0FHQTlGO09BQ0ErRjtPQUNBQztPQUNBQztPQVNBQztPQUVBakc7T0FXQUM7T0FDQWlHO09BQ0FDO09BS0FDO09BS0FDO09BQ0FDO09BTUFDO09BQ0FDO09BRUFDO09BSUFFO09BTUFDO09BSUFDO09BQ0EzRztPQUNBNEc7T0FFQUM7T0FTQUM7T0FBQUE7T0FFQTdHO09BQ0E4RztPQUhBRDtPQUtBNUc7T0FDQThHO09BR0E3RztPQUNBQztPQUNBNkc7T0FDQUM7T0FDQUM7T0FHQTlHO09BQ0FDO09BQ0E4RztPQUNBQztPQUNBQztPQU1BQztPQU9BQztPQVFBQztPQUdBbEg7T0FDQW1IO09BQ0FDO09BVUFDO09BNkJBQztPQStFQXRaO09BR0F5WjtPQUtBQztPQVFBRztPQUVBQztPQUVBQztPQUVBQzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7OztJQ3JWSjdYO0lBQUFoRztJQUtBOE87SUFBQXRJO0lBS0FzWDtJQUFBcko7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFYQXNKLE9BQ0E5YTtrREFBQTs0REFBQTtrQ0FBQUE7NERBQUE7a0NBQUFBO2tEQUVXO1lBSFgrYSxTQUNBOVo7a0RBQUEscURBQUE7c0NBREE2WixRQUNBN1o7a0RBRVc7aURBRlgsU0FBQStaO0lBQUEvWDtrREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O3FEQUFBOztvREFBQTs7Z0JBQUFBOztvREFBQSxxREFBQTs0Q0FBQUYsa0JBQUFFOzs7b0RBQUEscURBQUE7NENBQUFGLGtCQUFBRTs7Ozs7Ozs7b0RBQUEscURBQUE7NENBQUFGLGtCQUFBRTs7bURBQUEscURBQUE7MkNBQUFGLGtCQUFBRTs7a0RBQUEscURBQUE7MENBQUFGLGtCQUFBRTtrREFFVztZQUZYZ1k7a0RBQUE7a0RBRVc7aURBRlgsU0FBQUM7SUFBQXJjO2tEQUFBO2FBQUFBLHFDQUFBQTtlQUFBQTs7b0RBQUEscURBQUE7a0RBQUE5QixRQUFBOEI7Ozs7Ozs7O2dFQUFBO3NEQUFBOUIsUUFBQThCOzs7O2dFQUFBO3NEQUFBOUIsUUFBQThCOzs7O3FEQUFBLHFEQUFBO21EQUFBOUIsUUFBQThCOzs7a0RBQUEscURBQUE7Z0RBQUE5QixRQUFBOEI7a0RBRVc7WUFGWHNjO2tEQUFBO2tEQUVXO1lBRVhDLHFCQUNBcGI7a0RBQUE7U0FEQXlEO21EQUNBLDhDQUFBOzJCQUFBekQ7bURBREEsOENBQUE7dURBRWU7NkJBRGZBO09BREF5RDttREFBQSxxREFBQTtrQ0FDQXpEOztRQURBcWI7a0RBQ0EsOENBQUE7MEJBQUFyYjtrREFEQSw4Q0FBQTtzREFHWTs0QkFGWkE7TUFEQXFiO2tEQUFBLHFEQUFBO2lDQUNBcmI7bURBRW1CO1lBSG5Cc2IsdUJBQ0FyYTtrREFBQSxxREFBQTtzQ0FEQW1hLHNCQUNBbmE7bURBRW1CO2lEQUZuQjtHQUFBc2E7SUFBQUM7a0RBQUE7O2NBQUFBO2dCQUFBQTs7Ozs7OztxREFBQSxxREFBQTs2Q0FBQTNQLGtCQUFBMlA7O29EQUFBLHFEQUFBOzRDQUFBM1Asa0JBQUEyUDs7ZUFBQUE7O29EQUFBLHFEQUFBOzRDQUFBM1Asa0JBQUEyUDs7O29EQUFBLHFEQUFBOzRDQUFBM1Asa0JBQUEyUDtTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOztVQUFBQztTQUFBQSxtQkFBQUE7cURBQUE7UUFBQUMsV0FBQUQ7c0RBQUFFO3dEQUFBOzZCQUFBRDtxREFBQSxXQUFBQzs7b0RBQUEscURBQUE7O2VBQUEvUDtlQUFBNFA7ZUFBQUQ7O1NBQUFLO1FBQUFBLG1CQUFBQTtvREFBQTtPQUFBQyxXQUFBRDtxREFBQUU7dURBQUE7NEJBQUFEO29EQUFBLFdBQUFDOzttREFBQSxxREFBQTs7Y0FBQWxRO2NBQUE0UDtjQUFBRDs7a0RBQUEscURBQUE7MENBQUEzUCxrQkFBQTJQO21EQUVtQjtZQUZuQlE7a0RBQUE7b0RBQ0k7TUFBQUM7cURBQUFDO3VEQUFBOzBCQUFBRDtvREFBQTswQkFBQUM7O21EQUNBO0tBQUFDO29EQUFBQztzREFBQTt5QkFBQUQ7bURBQUE7eUJBQUFDO21EQUFlO2lEQUZuQjtHQUFBQztJQUFBeGQ7a0RBQUE7YUFBQUE7ZUFBQUE7O2dCQUFBQTs7Ozs7cURBQUEscURBQUE7bURBQUEwRSxVQUFBMUU7OztnQkFBQUE7O3FEQUFBLHFEQUFBO21EQUFBMEUsVUFBQTFFOzs7OztZQUFBbUY7a0NBQUFBO2FBQUFzWTtZQUFBQSxtQkFBQUE7d0RBQUE7V0FBQUMsT0FBQUQ7eURBQUFFOzJEQUFBO3lEQUFBRDt3REFBQSxXQUFBQzs7dURBQUEscURBQUE7cURBQUFqWixVQUFBUyxLQUFBbkY7O2tDQUFBbUY7YUFBQUM7WUFBQUEsaUJBQUFBO3dEQUFBO1dBQUFsRixLQUFBa0Y7eURBQUFqRjsyREFBQTt5REFBQUQ7d0RBQUEsV0FBQUM7O3VEQUFBLHFEQUFBO3FEQUFBdUUsVUFBQVMsS0FBQW5GOzs7O3NEQUFBLHFEQUFBO29EQUFBMEUsVUFBQTFFOzs7O2tEQUFBLHFEQUFBO2dEQUFBMEUsVUFBQTFFO21EQUVtQjtZQUZuQjRkO2tEQUFBO29EQUNJO01BQUExZDtxREFBQUM7dURBQUE7bURBQUFEO29EQUFBOzswQkFBQUM7O21EQUNBO0tBQUF1ZDtvREFBQUM7c0RBQUE7a0RBQUFEO21EQUFBOzt5QkFBQUM7bURBQWU7O0lBRW5COWU7SUFBQUc7WUFBQWtIO21EQUFBLE9BTEFxVztrREFTQztZQUpENVg7bURBQUE7a0RBSUM7O0tBSkQ5RjtjQUNBc0MsS0FBQWlCO3FEQUFBLCtDQUFBOzRCQUFBakI7cURBQUEsK0NBQUE7NEJBQUFBO2dCQUFBaUI7cURBQUEsK0NBQUE7dURBREEsV0FBQXVDLE9BQ0F4RDs7cURBQUEsK0NBQUE7NEJBQUFBO3FEQUFBLCtDQUFBOzRCQUFBQTtxREFBQSwrQ0FBQTs0QkFBQUE7cURBREE7YUFDQWlCO3NEQURBLE1BQUE4RDtxREFDQSwrQ0FBQTtnREFBQS9FO3FEQUFBLCtDQUFBOzRCQUFBQTtxREFBQSxzREFBQTttQ0FBQUE7b0RBR0M7O0tBSkRuQztjQUNBb0Q7cURBQUEsc0RBQUE7d0NBREF2RCxJQUNBdUQ7b0RBR0M7WUFIRC9ELFVBQUF3ZjttREFBQSxTQUFBQTtvREFBQSxzREFBQTs0Q0FBQTdCLGtCQUFBNkI7bURBQUE7S0FBQUMsa0JBQUFEO29EQUNFRTtvREFDQUM7b0RBRkZDO29EQUFBQzthQUFBQztvREFBQTtvREFBQTttRUFBQTtVQUFBQztlQUFBQTtpQkFBQUE7Ozs7O2FBQUFDLDBCQUFBQztZQUFBRCxtQkFBQUE7O1VBQUFFO1VBQUFDO3FCQUFBSDtzQkFBQUk7NkRBQUE7a0JBQUFKOzhEQUFBLHNEQUFBO3NEQUFBckMsa0JBQUE2QjtpQkFBQVE7OERBQUEscURBQUE7O2tCQUFBSyxRQUFBTDs2REFBQSxPQUFBSzs0REFHQztvQkFIREQ7O1VBQUFBLGlCQUFBRCxpQkFBQUg7aUNBQUFDO2tDQUFBQTs7WUFBQUosbUJBQUFJLGdCQUFBSjs7a0JBQ0VIO1dBREZFLHdCQUFBSyxnQkFBQUw7OzBEQUNFOzJEQURGVSxtQkFBQUY7MkRBQ0VHOzZEQUFBO2lDQURGRDtXQUNFWixnQkFBQWE7O2lCQUNBWjtVQUZGQyx3QkFBQUssZ0JBQUFMOzt5REFFRTswREFGRlksbUJBQUFKOzBEQUVFNUg7YUFQRjZGLDBCQUtBbUM7VUFFRWIscUJBQUFuSDs7dUJBRkYwSDs7Ozs7cURBQUEsc0RBQUE7NkNBQUF2QyxrQkFBQW9DOzttREFHQzttREFIREQsU0FBQUw7T0FBQUc7b0RBQUEsc0RBQUE7O2NBQUFqQztjQUFBaUM7Y0FBQUo7T0FBQUs7b0RBQUEsc0RBQUE7O2NBQUFsQztjQUFBa0M7Y0FBQUw7Y0FDRUUsbUJBQ0FDOztTQUFBYyx3QkFEQUM7b0RBREY7YUFDRUE7YUFDQUQ7O21EQUZGLHNEQUFBOzthQUFBOUM7YUFBQTZCOzt3QkFDRUU7NEJBQ0FDO2tEQUNEO1lBSEQ3ZjttREFBQTtLQUVFNmdCO0tBREFDO29EQUNBQztPQVBGL0IsMEJBT0U2QjtvREFGRkc7NEJBRUVEO29EQURBRTtzREFBQTswQkFBQUg7b0RBREZJOzRCQUNFRCxlQURGRDttREFBQSxXQUFBRTtrREFHQztZQUhEN2dCLFlBQUF3QjttREFBQTthQUFBQSxxQ0FBQUE7b0RBQ0U7TUFERjhILGdCQUFBOUg7cURBQ0V1TDtxREFDQStUO3FEQUZGclg7cURBQUFDO01BQUFDOzt3REFBQTt3REFBQTt1RUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7MkRBQUE7NkRBQUE7O2FBQUFKOztlQUFBSTs4REFBQTt5Q0FBQUo7Ozs0REFDRTt1Q0FBQXFEO1lBREZ0RDs7Y0FBQUs7NkRBQ0U7d0NBREZMOzsyREFDRSwrQ0FBQTthQUFBTTs4REFBQTtrQ0FERkY7WUFDRWtELGtCQUFBaEQ7OzsyREFDQTtzQ0FBQStXO1dBRkZyWDs7YUFBQUs7NERBRUU7dUNBRkZMOzswREFFRSwrQ0FBQTtZQUFBTyxXQVBGZ1YsNEJBS0FuVjtXQUVFaVgsdUJBQUE5Vzs7d0JBRkZKOzt1REFHQztvREFIREQsS0FBQUw7O3NEQUFBO2lDQUFBRztxREFBQSwrQ0FBQTs7d0RBQUE7bUNBQUFBO3FEQUFBLHNEQUFBO21EQUFBMEssZUFBQTNTOzs7c0RBQUE7aUNBQUFrSTtxREFBQSwrQ0FBQTs7d0RBQUE7bUNBQUFBO3FEQUFBLHNEQUFBO21EQUFBeUssZUFBQTNTOztvREFDRTtxREFBQTt1REFBQTtrQ0FBQXVMO3FEQUNBO3VEQUFBO2tDQUFBK1Q7O1VBQUFDLDRCQURBL1Q7cURBREY7Y0FDRUE7Y0FDQStUOztvREFGRjtxREFBQTs7Ozs7MkRBRUU7c0NBQUFEOzs7OztxREFGRjs7Ozs7MkRBQ0U7c0NBQUEvVDs7Ozs7b0RBREYsc0RBQUE7a0RBQUFvSCxVQUFBM1M7O21EQUFBLHNEQUFBO2lEQUFBMlMsVUFBQTNTO2tEQUdDO1lBSER6QjttREFBQTtLQUVFaWhCO0tBREEvVDtLQUNBNUMsTUFQRitVLDRCQU9FNEI7S0FBQTFXLDhCQUFBRDtLQURBRSxvQ0FBQTBDO0tBQUF6QywyQkFBQUQsUUFDQUQ7bURBRkY7O1lBQ0VFO2tEQUVEO1lBRUd5VyxPQUFVbmhCO21EQUNaLGFBRFlBOzs7a0RBSVg7WUFFQ29oQixTQUFXM2dCO29EQUFNO1lBQU5BOzttREFBMkM7WUFFdEQ0Z0Isa0JBQW9CQzttREFDdEIsc0RBQUc7Z0NBRG1CQTs7a0JBQUFBO2tEQUtyQjtZQUVDQyxTQUNGQzttREFDRSxZQURGQTs7cURBR1M7UUFETXhoQjtvREFBTSx1REFBQTthQUFOQTtrREFFWjtZQUVEeWhCLGFBQ0ZEO21EQUNFLFlBREZBOztxREFHUztRQURNeGhCO29EQUFNLHVEQUFBO2FBQU5BO2tEQUVaO1lBRUQwaEIsbUJBQ0ZKO21EQUNFLGFBREZBOzs7a0RBSUc7WUFFRDVHLFdBQ0Y4RzttREFDRSxhQURGQTs7O2tEQUlHO1lBR0RHLFdBQ0ZMO21EQUNFLElBQ1V0aEIsSUFGWnNoQjtvREFHcUIsT0FEVHRoQjtrREFFVDtZQUVEUyxHQUFLK2dCO29EQUFLLE9BQUxBO21EQUFTOzs7O09BbkVsQjdEO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BSUFDO09BQUFFO09BQ0FDO09BQUFTO09BQUFLO09BQUFJO09BSUEvZTtPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQUtJa2hCO09BTUFDO09BRUFDO09BT0FFO09BT0FFO09BT0FDO09BT0FoSDtPQVFBaUg7T0FPQWxoQjs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDakVKbWhCO0lBSUFDO0lBSkFqaUI7SUFJQXdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFOQTBiO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO1lBQUE5Yjs2Q0FBQSxPQUFBMmI7NkNBaUJDOztLQWpCREY7Y0FDQWpmLEtBQWVpQjtnREFBQSwwQ0FBQTs0QkFBZmpCOztvQkFBZXVMLEtBQUF0SztpREFBQSxHQUFBc0s7a0RBQUEsMENBQUE7OEJBQWZ2TDtpREFBZSwwQ0FBQTtrREFEZixXQUFBd0QsT0FDQXhELE1BQWVpQjtpREFBQTtnREFBVztnREFBWCwwQ0FBQTtxQ0FBQUE7Z0RBQUEsaURBQUE7bUNBQWZqQjsrQ0FBMEI7O0tBRDFCa2Y7Y0FDQWplOytDQUFBLGdEQUFBO3dDQURBZ2UsWUFDQWhlOytDQUEwQjtZQUQxQjJMOzZDQUFBOzZDQWlCQztZQWpCRDdIOzZDQUFBOzZDQWlCQztZQWpCREM7NkNBQUEsT0FBQXFhOzZDQWlCQzs7S0FqQkRGO2NBRUFuZjsrQ0FBQTs7YUFGQXlEO2tEQUVBLHlDQUFBOytCQUFBekQ7a0RBRkEseUNBQUE7b0RBQUEsV0FBQWdGLFNBRUFoRjtXQUZBeUQ7a0RBQUEsZ0RBQUE7c0NBRUF6RDs7YUFGQXFiO2tEQUVBLHlDQUFBOytCQUFBcmI7a0RBRkEseUNBQUE7b0RBQUEsV0FBQStFLE9BRUEvRTtXQUZBcWI7a0RBQUEsZ0RBQUE7c0NBRUFyYjs7YUFGQXVmO2tEQUVBLHlDQUFBOytCQUFBdmY7a0RBRkEseUNBQUE7b0RBQUEsV0FBQTRNLE9BRUE1TTtXQUZBdWY7a0RBQUEsZ0RBQUE7c0NBRUF2Zjs7K0NBRzBCOztLQUwxQm9mO2NBRUFuZTsrQ0FBQSxnREFBQTt3Q0FGQWtlLFVBRUFsZTsrQ0FHMEI7WUFMMUJ1ZTs2Q0FBQSxPQUFBUDs2Q0FpQkM7WUFqQkRROzZDQUFBOzZDQWlCQztZQWpCRGpUOzZDQUFBOzZDQWlCQztZQWpCRCtIOzZDQUFBOzZDQWlCQzs7S0FqQkQ4SztjQU1BcmYsS0FBQWlCOytDQUFBLHlDQUFBOzRCQUFBakI7K0NBQUEseUNBQUE7NEJBQUFBO2lCQUFBaUI7K0NBQUEseUNBQUE7aURBTkEsV0FBQXNULFNBTUF2VTs7K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSx5Q0FBQTs0QkFBQUE7aUJBQUFpQjsrQ0FBQSx5Q0FBQTtpREFOQSxXQUFBdUwsU0FNQXhNOzsrQ0FBQSx5Q0FBQTs0QkFBQUE7K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLHlDQUFBOzRCQUFBQTtpQkFBQWlCOytDQUFBLHlDQUFBO2lEQU5BLFdBQUF3ZSxTQU1BemY7OytDQUFBLHlDQUFBOzRCQUFBQTsrQ0FBQSx5Q0FBQTs0QkFBQUE7K0NBQUEseUNBQUE7NEJBQUFBO2lCQUFBaUI7K0NBQUEsVUFTVUE7b0RBQUEsMkNBQUE7K0JBVFZqQjs7dUJBU1V1TCxLQUFBdEs7cURBQUEsR0FBQXNLO3NEQUFBLDJDQUFBO2lDQVRWdkw7cURBU1UsMkNBQUE7dURBQUs7a0NBVGZBO1lBU1VpQjtxREFBQTtvREFBUztvREFBVCwyQ0FBQTt3Q0FBQUE7b0RBQUEsa0RBQUE7c0NBVFZqQjttREFTbUI7OytDQVRuQix5Q0FBQTs0QkFBQUE7K0NBQUEseUNBQUE7NEJBQUFBOytDQUFBLHlDQUFBOzRCQUFBQTtpQkFBQWlCOytDQUFBLFVBVVlBO29EQUFBLDJDQUFBOytCQVZaakI7O3VCQVVZdUwsS0FBQXRLO3FEQUFBLEdBQUFzSztzREFBQSwyQ0FBQTtpQ0FWWnZMO3FEQVVZLDJDQUFBO3FEQWhCWixXQUFBd2YsT0FNQXhmO1lBVVlpQjtxREFBQTtvREFBYTtvREFBYiwyQ0FBQTt3Q0FBQUE7b0RBQUEsa0RBQUE7c0NBVlpqQjttREFVeUI7OytDQVZ6Qix5Q0FBQTs0QkFBQUE7K0NBQUEsZ0RBQUE7bUNBQUFBOytDQVdDOztLQWpCRHNmO2NBTUFyZTsrQ0FBQSxnREFBQTt3Q0FOQW9lLFNBTUFwZTsrQ0FXQzs7SUFoQkR5ZTtJQUNBQztJQUlBQzs7S0FMQUY7Y0FBQWxVOytDQUFBLGdEQUFBO2dDQUNBbVUsZUFEQW5VOytDQUEwQjs7S0FDMUJtVTtjQUFBM2hCOytDQUFBOztnQkFBQUE7bUJBQUFBOzs7Ozs7Ozs7O21EQUFBLGdEQUFBO2dEQUFBK2dCLGtCQUFBL2dCOztrREFBQSxnREFBQTsrQ0FBQStnQixrQkFBQS9nQjs7aURBQUEsZ0RBQUE7OENBQUErZ0Isa0JBQUEvZ0I7O2tCQUFBQTs7aURBQUEsZ0RBQUE7OENBQUErZ0Isa0JBQUEvZ0I7OztpREFBQSxnREFBQTs4Q0FBQStnQixrQkFBQS9nQjtXQUFBNmhCOzsrQkFBQUE7O2dDQUFBQTtpQ0FBQUE7b0NBQUFBO29DQUFBQTtrQ0FBQUE7O2FBQUFDO1lBQUFBLG1CQUFBQTttREFBQTtXQUFBdGhCLFdBQUFzaEI7b0RBQUEvYjtzREFBQTtlQUlBNmIsY0FKQXBoQjttREFBQSxXQUFBdUY7O2tEQUFBLGdEQUFBOztrQkFBQWdiO2tCQUFBYztrQkFBQTdoQjs7WUFBQStoQjtXQUFBQSxtQkFBQUE7a0RBQUE7VUFBQUMsV0FBQUQ7bURBQUFFO3FEQUFBO3VDQUFBRDtrREFBQSxXQUFBQzs7aURBQUEsZ0RBQUE7O2lCQUFBbEI7aUJBQUFjO2lCQUFBN2hCOztXQUFBa2lCO1VBQUFBLG1CQUFBQTtpREFBQTtTQUFBaE0sV0FBQWdNO2tEQUFBQztvREFBQTtpQ0FBQWpNO2lEQUFBLFdBQUFpTTs7Z0RBQUEsZ0RBQUE7O2dCQUFBcEI7Z0JBQUFjO2dCQUFBN2hCOzsrQ0FBQSxnREFBQTs0Q0FBQStnQixrQkFBQS9nQjsrQ0FHMEI7O0tBQzFCNGhCO2NBQUFROytDQUFBLFNBQUFBO2dEQUFBLGdEQUFBOzhDQUFBcEIsa0JBQUFvQjsrQ0FBQTtPQUFBQyxrQkFBQUQ7Z0RBTUVFO2dEQUNBQztnREFDQUM7Z0RBQ0FDO2dEQUNBQztnREFWRkM7Z0RBQUFDO2VBQUFDO2dEQUFBO2dEQUFBOytEQUFBO1lBQUFDO2lCQUFBQTtvQkFBQUE7Ozs7O2VBQUFDLDJCQUFBQztjQUFBRCxtQkFBQUE7O1lBQUFFO1lBQUFDO3VCQUFBSDt3QkFBQUk7eURBQUEsS0FBQUo7MERBQUEsZ0RBQUE7d0RBQUEvQixrQkFBQW9CO21CQUFBVzswREFBQSwrQ0FBQTs7b0JBQUFLLFFBQUFMO3lEQUFBLE9BQUFLO3lEQVdDO3NCQVhERDs7WUFBQUEsaUJBQUFELGlCQUFBSDttQ0FBQUM7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7dUNBQUFBOztpQkFBQUosbUJBQUFJLGdCQUFBSjs7dUJBU0VIO2dCQVRGRSx3QkFBQUssZ0JBQUFMOzswREFTRTsyREFURlUsbUJBQUFGOzJEQVNFRzs2REFBQTt1REFURkQ7Z0JBU0VaLG9CQUFBYTs7c0JBREFkO2VBUkZHLHdCQUFBSyxnQkFBQUw7O3lEQVFFOzBEQVJGWSxtQkFBQUo7MERBUUVLOzREQUFBO3VDQVJGRDtlQVFFZixrQkFBQWdCOztxQkFEQWpCO2NBUEZJLHdCQUFBSyxnQkFBQUw7O3dEQU9FO3lEQVBGYyxtQkFBQU47eURBT0VPOzJEQUFBO3VDQVBGRDtjQU9FbEIsbUJBQUFtQjs7b0JBREFwQjthQU5GSyx3QkFBQUssZ0JBQUFMOzt1REFNRTt3REFORmdCLG1CQUFBUjt3REFNRVM7MERBQUE7bUNBTkZEO2FBTUVyQixnQkFBQXNCOzttQkFJQWxCO1lBVkZDLHdCQUFBSyxnQkFBQUw7O3NEQVVFO3VEQVZGa0IsbUJBQUFWO3VEQVVFVzt5REFBQTtrQ0FmRnBDLGlCQUtBbUM7WUFVRW5CLHNCQUFBb0I7O3lCQVZGYjs7Ozs7aURBQUEsZ0RBQUE7K0NBQUFqQyxrQkFBQThCOztnREFXQzsrQ0FYREQsU0FBQVI7U0FBQU07Z0RBQUEsZ0RBQUE7O2dCQUFBM0I7Z0JBQUEyQjtnQkFBQVA7U0FBQVE7Z0RBQUEsZ0RBQUE7O2dCQUFBNUI7Z0JBQUE0QjtnQkFBQVI7O2NBTUVFO2NBQ0FDO2NBQ0FDO2NBQ0FDO2VBQ0FDOzs7UUFBQXFCO1FBREFDO1FBREFDO1FBREFDO1FBREF0RjtnREFORjtlQU1FQTtlQUNBc0Y7ZUFDQUQ7ZUFDQUQ7ZUFDQUQ7OytDQVZGLGdEQUFBOztlQUFBL0M7ZUFBQW9COzswQkFNRUU7OzJCQUNBQzs7NEJBQ0FDOzs2QkFDQUM7aUNBQ0FDOytDQUNEO1lBaEJEeUIsZ0JBQUFDOzZDQUFBLGdEQUFBOzhCQUNBQyxlQURBRDs2Q0FBMEI7WUFDMUJDOzZDQUFBOztnREFDSTtRQUFBQztpREFBQUM7VUFHSkMsYUFISUY7Z0RBQUE7NEJBQUFDOztnREFDQTtRQUFBRTtpREFBQUM7bURBQUE7aUNBQUFEO2dEQUFBOzRCQUFBQzs7Z0RBQ0E7UUFBQUM7aURBQUFDO21EQUFBO3FDQUFBRDtnREFBQTs0QkFBQUM7OzZDQUFzQjtZQUMxQko7NkNBQUE7S0FVRUs7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7K0NBSUFDO2lEQUFBOzBCQWZGZixpQkFlRVU7K0NBVkZNOzRCQVVFRDsrQ0FEQUU7aURBQUE7MkNBQUFOOytDQVRGTzs0QkFTRUQsZUFURkQ7K0NBUUVHO2lEQUFBOzRCQUFBUDsrQ0FSRlE7NEJBUUVELGVBUkZEOytDQU9FRztpREFBQTs2QkFBQVI7K0NBUEZTOzRCQU9FRCxlQVBGRDsrQ0FNRUc7aURBQUE7MEJBQUFUOytDQU5GVTs0QkFNRUQsZUFORkQ7NkNBQUEsV0FBQUU7NkNBV0M7O0lBaEJEQztJQUNBQztJQUlBQzs7S0FMQUY7Y0FBQTNtQjtpQjt1REFDQTRtQixpQkFEQTVtQjs7O0tBQ0E0bUI7Y0FBQWhsQjsrQ0FBQSxVQUFBQTtrQkFBQUE7O21CQUFBQTs7Ozs7Ozs7a0RBQUEsZ0RBQUE7dURBQUE5QixRQUFBOEI7OzttQkFBQUE7O2tEQUFBLGdEQUFBO3VEQUFBOUIsUUFBQThCOzs7OztjQUFBbUY7b0NBQUFBO2VBQUErZjtjQUFBQSxtQkFBQUE7cURBQUE7YUFBQUMsT0FBQUQ7c0RBQUFFO3dEQUFBO3NDQUFBRDtxREFBQSxXQUFBQzs7b0RBQUEsZ0RBQUE7eURBQUFsbkIsUUFBQWlILEtBQUFuRjs7b0NBQUFtRjtlQUFBc1k7Y0FBQUEsbUJBQUFBO3FEQUFBO2FBQUFDLE9BQUFEO3NEQUFBRTt3REFBQTswQ0FBQUQ7cURBQUEsV0FBQUM7O29EQUFBLGdEQUFBO3lEQUFBemYsUUFBQWlILEtBQUFuRjs7b0NBQUFtRjtlQUFBQztjQUFBQSxpQkFBQUE7cURBQUE7YUFBQWxGLEtBQUFrRjtzREFBQWpGO3dEQUFBO2lCQUlBOGtCLGdCQUpBL2tCO3FEQUFBLFdBQUFDOztvREFBQSxnREFBQTt5REFBQWpDLFFBQUFpSCxLQUFBbkY7Ozs7bURBQUEsZ0RBQUE7d0RBQUE5QixRQUFBOEI7Ozs7K0NBQUEsZ0RBQUE7b0RBQUE5QixRQUFBOEI7K0NBRzBCOztLQUMxQmlsQjtjQUFBamxCO2lCLFVBQUFBLHFDQUFBQTtpREFNRTtRQU5GOEgsZ0JBQUE5SDtrREFNRXVMO2tEQUNBcU07a0RBQ0FFO2tEQUNBdU47a0RBQ0FDO2lEQVZGcmQ7aURBQUFDO1FBQUFDOztvREFBQTtvREFBQTttRUFBQTs7YUFBQUM7O2FBQUFDO2FBQUFDO29DQUFBQTtxQ0FBQUE7c0NBQUFBO3VDQUFBQTt3Q0FBQUE7MERBQUE7NERBQUE7O2tCQUFBSjs7b0JBQUFJOzZEQUFBOzhDQUFBSjs7OzREQVNFOzRDQUFBbWQ7aUJBVEZwZDs7bUJBQUFLOzZEQVNFOzZDQVRGTDs7O2tCQVNFTTs7OztzQkFURkY7aUJBU0VnZCxzQkFBQTljOzs7MkRBREE7MkNBQUF1UDtnQkFSRjdQOztrQkFBQUs7NERBUUU7NENBUkZMOzswREFRRSwwQ0FBQTtpQkFBQU87NkRBQUE7d0NBUkZIO2dCQVFFeVAsb0JBQUF0UDs7OzBEQURBOzBDQUFBb1A7ZUFQRjNQOztpQkFBQUs7MkRBT0U7MkNBUEZMOzt5REFPRSwwQ0FBQTtnQkFBQWlJOzREQUFBO3dDQVBGN0g7ZUFPRXVQLHFCQUFBMUg7Ozt5REFEQTt5Q0FBQTNFO2NBTkZ0RDs7Z0JBQUFLOzBEQU1FOzBDQU5GTDs7d0RBTUUsMENBQUE7ZUFBQXNkOzJEQUFBO29DQU5GbGQ7Y0FNRWtELGtCQUFBZ2E7Ozt3REFJQTt3Q0FBQUQ7YUFWRnJkOztlQUFBSzt5REFVRTt5Q0FWRkw7OztjQVVFdWQ7OztrQkFmRlQ7a0JBS0ExYzthQVVFaWQsd0JBQUFFOzswQkFWRnBkOztvREFXQztnREFYREQsS0FBQUw7O2tEQUFBO21DQUFBRztpREFBQSx5Q0FBQTs7b0RBQUE7cUNBQUFBO2lEQUFBLGdEQUFBO3VEQUFBdkQsZUFBQTFFOzs7a0RBQUE7bUNBQUFrSTtpREFBQSx5Q0FBQTs7b0RBQUE7cUNBQUFBO2lEQUFBLGdEQUFBO3VEQUFBeEQsZUFBQTFFOztpREFNRTtrREFBQTtvREFBQTtvQ0FBQXVMO2tEQUNBO29EQUFBO29DQUFBcU07a0RBQ0E7b0RBQUE7b0NBQUFFO2tEQUNBO29EQUFBO29DQUFBdU47a0RBQ0E7b0RBQUE7b0NBQUFDOzs7U0FBQUc7U0FEQUM7U0FEQTNOO1NBREFFO1NBREF6TTtpREFORjtnQkFNRUE7Z0JBQ0F5TTtnQkFDQUY7Z0JBQ0EyTjtnQkFDQUQ7O2dEQVZGO2lEQUFBOzs7Ozt3REFVRTt3Q0FBQUg7Ozs7O2lEQVZGOzs7Ozt3REFTRTt3Q0FBQUQ7Ozs7O2lEQVRGOzs7Ozt3REFRRTt3Q0FBQXZOOzs7OztpREFSRjs7Ozs7d0RBT0U7d0NBQUFGOzs7OztpREFQRjs7Ozs7d0RBTUU7d0NBQUFyTTs7Ozs7Z0RBTkYsZ0RBQUE7c0RBQUE3RyxVQUFBMUU7OytDQUFBLGdEQUFBO3FEQUFBMEUsVUFBQTFFOztZQUxBMmxCLGtCQUFBdmtCO2U7cURBQ0F3a0IsaUJBREF4a0I7O1lBQ0F3a0I7NkNBQUE7O2dEQUNJO1FBQUExbEI7aURBQUFDLE9BR0owbEIsZUFISTNsQjtnREFBQTs7NEJBQUFDOztnREFDQTtRQUFBdWQ7aURBQUFDO21EQUFBO2lDQUFBRDtnREFBQTs7NEJBQUFDOztnREFDQTtRQUFBd0g7aURBQUFDO21EQUFBO3FDQUFBRDtnREFBQTs7NEJBQUFDOzs2Q0FBc0I7WUFDMUJTOzZDQUFBO0tBVUVDO0tBREFDO0tBREE3TjtLQURBRTtLQURBM007S0FJQTVDOzs7U0FmRjhjO1NBZUVHO0tBQUFoZCwrQkFBQUQ7S0FEQUU7Ozs7U0FBQWdkO0tBQUEvYywrQkFBQUQsUUFDQUQ7S0FGQTJILHNDQUFBeUg7S0FBQXhILDZCQUFBRCxRQUNBekg7S0FGQWdkLHVDQUFBNU47S0FBQTZOLDhCQUFBRCxRQUNBdFY7S0FGQXdWLG9DQUFBemE7S0FBQTBhLDJCQUFBRCxRQUNBRDs2Q0FQRixzQkFNRUU7NkNBS0Q7WUFHR0MsYUFBZ0JybkIsSUFBSTZnQjsrQ0FBWTtvQkFBaEI3Z0IsSUFBSTZnQjs7OENBQXNDOzs7O09BcEI5RFE7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FDQUk7T0FDQUM7T0FJQUM7T0FMQXVDO09BQ0FFO09BSUFHO09BTEFvQjtPQUNBQztPQUlBQztPQUxBVTtPQUNBQztPQUlBQztPQWNJTzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQ3JCSmxpQjtJQUFBaEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFEQVc7SUFBQUc7WUFBQWtIO3VEQUFBO3VEQUdnQjtZQUhoQnZCO3VEQUFBO3VEQUdnQjs7S0FIaEI5RjtjQUNBc0M7eURBQUE7V0FEQXlEOzBEQUNBLG1EQUFBOzZCQUFBekQ7MERBREEsbURBQUE7NERBQUE7V0FBQXdELE9BQ0F4RDtTQURBeUQ7MERBQUEsMERBQUE7b0NBQ0F6RDs7VUFEQXFiO3lEQUNBLG1EQUFBOzRCQUFBcmI7eURBREEsbURBQUE7MkRBQUE7VUFBQStFLE9BQ0EvRTtRQURBcWI7eURBQUEsMERBQUE7bUNBQ0FyYjt5REFFZ0I7O0tBSGhCbkM7Y0FDQW9EO3lEQUFBLDBEQUFBO3dDQURBdkQsSUFDQXVEO3lEQUVnQjtzREFGaEIsU0FBQS9EO0lBQUF3Rzt1REFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7OzBEQUFBLDBEQUFBOzZDQUFBWCxrQkFBQVc7O3lEQUFBLDBEQUFBOzRDQUFBWCxrQkFBQVc7O2VBQUFBOzt5REFBQSwwREFBQTs0Q0FBQVgsa0JBQUFXOzs7eURBQUEsMERBQUE7NENBQUFYLGtCQUFBVztTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOztVQUFBQztTQUFBQSxtQkFBQUE7MERBQUE7UUFBQUMsV0FBQUQ7MkRBQUFFOzZEQUFBOzZCQUFBRDswREFBQSxXQUFBQzs7eURBQUEsMERBQUE7O2VBQUFmO2VBQUFZO2VBQUFEOztTQUFBd2hCO1FBQUFBLG1CQUFBQTt5REFBQTtPQUFBQyxXQUFBRDswREFBQUU7NERBQUE7NEJBQUFEO3lEQUFBLFdBQUFDOzt3REFBQSwwREFBQTs7Y0FBQXJpQjtjQUFBWTtjQUFBRDs7dURBQUEsMERBQUE7MENBQUFYLGtCQUFBVzt1REFFZ0I7WUFGaEIxRzt1REFBQTt3REFDSTtNQUFBa1g7eURBQUFpTTsyREFBQTsyQkFBQWpNO3dEQUFBOzBCQUFBaU07O3VEQUNBO0tBQUFyRTt3REFBQUM7MERBQUE7MEJBQUFEO3VEQUFBO3lCQUFBQzt1REFBWTtzREFGaEIsU0FBQTFlO0lBQUF3Qjt1REFBQTthQUFBQTtlQUFBQTs7Z0JBQUFBOzs7OzswREFBQSwwREFBQTttREFBQTlCLFFBQUE4Qjs7O2dCQUFBQTs7MERBQUEsMERBQUE7bURBQUE5QixRQUFBOEI7Ozs7O1lBQUFtRjtrQ0FBQUE7YUFBQXNZO1lBQUFBLG1CQUFBQTs2REFBQTtXQUFBQyxPQUFBRDs4REFBQUU7Z0VBQUE7Z0NBQUFEOzZEQUFBLFdBQUFDOzs0REFBQSwwREFBQTtxREFBQXpmLFFBQUFpSCxLQUFBbkY7O2tDQUFBbUY7YUFBQUM7WUFBQUEsaUJBQUFBOzZEQUFBO1dBQUFsRixLQUFBa0Y7OERBQUFqRjtnRUFBQTtnQ0FBQUQ7NkRBQUEsV0FBQUM7OzREQUFBLDBEQUFBO3FEQUFBakMsUUFBQWlILEtBQUFuRjs7OzsyREFBQSwwREFBQTtvREFBQTlCLFFBQUE4Qjs7Ozt1REFBQSwwREFBQTtnREFBQTlCLFFBQUE4Qjt1REFFZ0I7WUFGaEJ6Qjt1REFBQTt3REFDSTtNQUFBMkI7eURBQUFDOzJEQUFBOzJCQUFBRDt3REFBQTs7MEJBQUFDOzt1REFDQTtLQUFBdWQ7d0RBQUFDOzBEQUFBOzBCQUFBRDt1REFBQTs7eUJBQUFDO3VEQUFZO3VEQUdNLG9EQUFBO0lBQWxCcmY7WUFDQWtvQjt3REFEQWxvQjs7dURBQ3VCO1lBQ3ZCbW9CLFFBQVdobEI7d0RBQ2IsVUFIRW5EO2lCQUdZUzswREFBTSxXQUFOQTt5REFBZTt3REFBeEIsb0RBQUE7OzJEQUFBOytCQURRMEM7SUFGWG5EO3lEQUdHOzs7d0RBQW1DO1lBRXRDb29CLFVBQWEzbkI7eURBQW1CLDREQUFTO2tDQUE1QkEsS0FMYlQ7d0RBS3VEOzs7O09BWDNETztPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQUtJRDtPQUNBa29CO09BQ0FDO09BR0FDOzs7YTs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDUEoxWjtJQUFBOU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBREF5b0I7SUFBQUM7WUFBQTdZOzZDQUFBOzZDQUMrRDtZQUQvRDdIOzZDQUFBOzZDQUMrRDtZQUQvRHZCOzZDQUFBOzZDQUMrRDs7S0FEL0RnaUI7Y0FDQXhsQixLQUFrQmlCO2dEQUFBLDBDQUFBOzRCQUFsQmpCOztvQkFBa0J1TCxLQUFBdEs7aURBQUEsR0FBQXNLO2tEQUFBLDBDQUFBOzhCQUFsQnZMO2lEQUFrQjtvREFBSztXQUR2QjhMO1dBQUFySTtvREFDdUIsMENBQUE7Z0NBQXZCekQ7bURBREEseUNBQUE7cURBQUEsV0FBQXdELE9BQ0F4RDtZQURBeUQ7b0RBQ3VCLDBDQUFBO2dDQUF2QnpEO21EQURBO3VEQUNpQztjQURqQzhMO2NBQUFySTt1REFDaUMsMENBQUE7bUNBQWpDekQ7c0RBREEsVUFDa0NpQjswREFBQSwwQ0FBQTtzQ0FBbENqQjs7OEJBQWtDdUwsS0FBQXRLOzJEQUFBLEdBQUFzSzs0REFBQSwwQ0FBQTt3Q0FBbEN2TDsyREFBa0MsMENBQUE7NERBRGxDO3FCQUFBK0UsT0FDQS9FO21CQUFrQ2lCOzJEQUFBOzBEQUFhOzBEQUFiLDBDQUFBOytDQUFBQTswREFBQSxpREFBQTs2Q0FBbENqQjt5REFBK0M7Z0JBRC9DeUQ7dURBQ2lDLDBDQUFBO21DQUFqQ3pEO3NEQURBLHlDQUFBO3dEQUFBLFdBQUE0TSxPQUNBNU07ZUFEQThMO3NEQUFBLGdEQUFBOzBDQUNBOUw7c0RBQTZEO2FBRDdEOEw7bURBQUEsZ0RBQUE7dUNBQ0E5TDttREFBOEQ7VUFBNUNpQjtpREFBQTtnREFBNkM7Z0RBQTdDLDBDQUFBO29DQUFBQTtnREFBQSxpREFBQTttQ0FBbEJqQjsrQ0FBK0Q7O0tBRC9EeWxCO2NBQ0F4a0I7K0NBQUEsZ0RBQUE7d0NBREF1a0IsZUFDQXZrQjsrQ0FBK0Q7NENBQS9ELFNBQUF5a0IsbUJBQUFDO2lCQUF1QkM7K0NBQUwsU0FBS0E7Z0JBQUFBOzs7O2tEQUFBO1NBQUF6WjtTQUFBdEk7bURBQUF1STtxREFBQTtpQ0FBQXZJOzs7a0JBQUFzSTtvQkFBQUE7Ozs7c0RBQVU7YUFBQUo7YUFBQUM7dURBQUFDO3lEQUFBO3NEQUFBRDt1REFBQUU7eURBQUE7b0NBQUFIO3VEQUFBO21CQUFBRSxVQUFBQzthQUFWRzs7Ozs7O1VBQUFBO3NEQUFVOzJDQUFqQ1IscUJBQXVCTTs7a0RBQUE7Z0JBQUFDO2dCQUFBQzs7OzsrQ0FBQSxpREFBQTsyQ0FBdkJSLHFCQUF1QitaOzhDQUF3Qzs2Q0FBL0QsZ0RBQUE7bUNBQUFEOzZDQUErRDtZQUEvREUsbUJBQUF0Yzs7O01BQXVCdWM7TUFBQUM7TUFBQTdKLDBDQUFBNko7TUFBVUMsV0FBVkY7TUFBVUcsV0FBVkg7TUFBVTNGLDJEQUFBOEY7TUFBQUMseUNBQUFGO01BQVZHLG1CQUFVaEcsY0FBQStGO29CQUFWaEssY0FBQWlLOzs2Q0FBdkIsZ0RBQUE7bUNBQUE1Yzs2Q0FBK0Q7NENBQS9ELFNBQUE2YyxxQkFBQW5wQjtpQkFBdUI0QjtnQixVQUFBQSxxQ0FBQUE7Z0JBQUFBOzs7OztTQUFBQztTQUFBQztTQUFBQyxzQ0FBQUQ7OzttQkFBQUQsaUNBQUFBO29CQUFBQTs7Ozs7YUFBVXVuQjthQUFBOUo7YUFBQUM7Ozs7aUJBQUFEO2FBQUErSixxQ0FBQUQ7dUJBQUE3SixNQUFBOEo7YUFBVnJuQjs7Ozs7O1VBQUFBLHFEQUF2QmxDLFdBQXVCK0I7O21CQUFBRSxNQUFBQzs7OzswREFBdkJsQyxXQUF1QjhCOztxRUFBdkI1Qjs7WUFBQXNwQixxQkFBQXRtQjs7O01BQXVCbkI7TUFBQUM7TUFBQUMsc0NBQUFEO01BQVVFLE9BQVZIO01BQVV5ZCxPQUFWemQ7TUFBVTBkOzt3RUFBQUQ7TUFBQThKLHFDQUFBcG5CO01BQVZxbkIsMEJBQVU5SixVQUFBNko7K0JBQVZybkIsVUFBQXNuQjs7cUVBQXZCcm1COzs7Z0JBSUttYTs2Q0FBRDs7S0FBa0IzSjtLQUFQaUg7Z0RBRUE7a0RBQUE7MEJBRkFBLE9BQVYwQzs7O01BR1VvTTtNQUZMak07bURBRW1CO3NCQUFkaU0sZUFITy9WOztTQUNaOEosWUFEWTlKOytDQU1VLDJDQUFBOztrREFBQTswQkFOakJpSCxPQUFWMEM7K0NBTTJCLGtEQUFBO2lDQU5qQjFDLE9BQ0w2Qzs2Q0FNTDs0Q0FSSCx5Q0FBQTtJQURFa007K0NBQ0Y7O1lBYUU3bEIsSUFBTzhXOzhDQUNULDJDQUFlOztrREFBQTswQkFETkEsT0FkUCtPO09BY08vTyxXQUFBQTtTQUtMemEsSUFMS3lhOztpREFLVTs7O29EQUFBOytCQUFmemE7a0RBQTZDLGtEQUFBO29DQUE3Q0E7aURBWU07a0RBQUE7b0RBQUE7K0JBWk5BO2tEQVlvQztvREFBQTsrQkFacENBOzs7NkRBZ0JBOzJDQWhCQUE7OzZEQW9CQzs7Ozs2REFQaUI7Ozs7OzZEQUNBOzs7OzREQVVqQjs7OztTQTNCUXlwQjtnREFBYTs7O21EQUFBOzhCQUd0QnpwQjtnREFERiwwQ0FBQTs7bURBQUE7K0JBQ0VBO2dEQURGLGlEQUFBO2dDQUZXeXBCOzs7O1NBSUZuTTtnREFBVyxPQUFYQTs7OENBNEJQLDBDQUFBOztpREFBQTtnQ0FsQ0s3Qzs4Q0FnQ1AsMENBQUE7OzhDQUlBO3NEQUFDOzs7NkNBQ0Y7OENBckNPLDJDQUFBOzs7OENBeUNOOztLQUFNRDtLQUFXQztZQUFYRDthQUFBQTtTQUFXQztXQUVTM00sS0FGVDJNO2lEQUdiOztvQkFEc0IzTSxRQUZUMk07Ozs2REFLVjt1Q0FMVUE7c0JBQUFBOzs7O2FBQUFBO1VBT0dpUCxPQVBIalA7aURBT2lCO3NCQUFkaVAsVUFQSGpQOzs7aUJBQVhELGdCQUFXQzsrQ0FTYjs7OzBEQUFPO29DQVRNQTttQkFBQUE7OytDQVVSOzZDQUNOOzZDQVpMOzhDQUFBO2dEQUFBOzs4Q0FBQTtnREFBQTs7cUM7NkNBQUE7OENBREVrUDtnREFDRjtrREFnQkc7Ozs4Q0FoQkg7OzhDQW9CRTs7S0FBTW5QO0tBQVdDO2FBQVhEO2NBQUFBO1NBQVdDO1dBRVMzTSxLQUZUMk07aURBR2I7O29CQURzQjNNLFFBRlQyTTs7OzZEQUtWO3VDQUxVQTtzQkFBQUE7Ozs7YUFBQUE7VUFPR2lQLE9BUEhqUDtpREFPaUI7c0JBQWRpUCxVQVBIalA7OztrQkFBWEQsZ0JBQVdDOytDQVNiOzs7MERBQU87b0NBVE1BO21CQUFBQTs7K0NBVVI7NkNBQ047NkNBWkw7OENBQUE7Z0RBQUE7OzhDQUFBO2dEQUFBOztxQzs2Q0FBQSwwQ0FBQTtJQURFbVA7Z0RBQ0Y7a0RBZ0JHOzs7WUFFREMsa0JBQ0YzcEI7K0NBRUUsNENBQU87O21EQUFBOzBCQUZUQSxHQXZDRXlwQjs7aURBMkNVLGVBSlp6cEI7UUFHU3NhO2dEQUFjLE9BQWRBOzhDQUVOO1lBRURzUCxrQkFDRjVwQjsrQ0FFRSw0Q0FBTzs7bURBQUE7MEJBRlRBLEdBNUJFMHBCOztpREFnQ1UsZUFKWjFwQjtRQUdTc2E7Z0RBQWMsT0FBZEE7OENBRU47WUFFRHVQLFdBQWFDO2dEQUFNLDRDQUFZO1dBaEIvQkgsa0JBZ0JhRzs7O3lEQUFNOzs7OytDQUE2QztZQUVoRUMsWUFBZTVpQixHQUFZM0Q7K0NBQzdCLDRDQUF3Qjs7bURBQUE7cUJBRFAyRCxHQUFZM0Q7Z0RBQ0wsbURBQUE7OytDQUFPO1lBRTdCd21CLG1CQUFzQmxxQixHQUFZbXFCOytDQUNwQyw0Q0FBd0I7O21EQUFBO3FCQURBbnFCLEdBQVltcUI7Z0RBQ1osbURBQUE7OytDQUFVO1lBRWhDQyxrQkFBcUJELFFBQWNucUI7K0NBQ3JDLDRDQUF3Qjs7bURBQUE7cUJBRGFBLEdBQWRtcUI7Z0RBQ0MsbURBQUE7OytDQUFVO1lBRWhDRSxnQkFBbUJGLFFBQWVucUIsR0FBYXNxQjsrQ0FDakQsa0RBQUE7aUNBRGlEQTsrQ0FDbkI7Ozs7T0ExSGhDL0I7T0FBQUM7T0FDQUM7T0FBQUc7T0FBQU87T0FBQUc7T0FFSUU7T0FjQTdsQjtPQXVDQWdtQjtPQW1CQUM7T0FtQkFDO09BUUFDO09BUUFDO09BRUFFO09BR0FDO09BR0FFO09BR0FDOzs7YTs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7OzZDQ3pITTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtWMUg7OztJQUFBNEM7OztJQUFBc0I7OztJQUFBWTs7OENBTFU7OzhDQUNBOzs4Q0FDQTs7SUFFVmhuQjtJQUFBRztZQUFBMkY7NkNBQUE7NkNBQ2E7O0tBRGI5RjtjQUNBc0M7K0NBREEsZ0RBQUE7ZUFBQXdELE9BQ0F4RDsrQ0FBYTs7S0FEYm5DO2NBQ0FvRDsrQ0FBQSxnREFBQTt3Q0FEQXZELElBQ0F1RDsrQ0FBYTtZQUVUckQsR0FBS1g7K0NBQUssT0FBTEE7OENBQVM7WUFFZHVxQixZQUFldnFCOytDQUFTLDJDQUF3Qjs7a0RBQUE7eUJBQWpDQTsrQ0FBUyxrREFBQTs4QkFBVEE7Ozs7OENBQXNEO1lBRXJFd3FCLFFBQVV4cUI7OENBQ1osMkNBQWlDOztrREFBQTs0QkFEckJBOytDQUNxQixrREFBQTs7OENBQTBCO1lBQ3pEeXFCLFFBQVV6cUI7OENBQ1osMkNBQWlDOztrREFBQTs0QkFEckJBOytDQUNxQixrREFBQTs7OENBQTRCO1lBRTNEMHFCLFFBQVdqakIsR0FBZ0J6SDs4Q0FDN0IsS0FEYXlIO2tCQUxYK2lCLFFBSzJCeHFCOytDQUdKLDJDQUFBOztrREFBQTt5QkFISUE7OzsrQ0FHbEIsT0FOVHlxQixRQUcyQnpxQjs7OzZDQUk1QjtZQUNDMnFCLFNBQVczcUI7K0NBQUssMkNBQUE7V0FMaEIwcUIsV0FLVzFxQjsrQ0FBSztjQUxoQjBxQixXQUtXMXFCOzs4Q0FBMEM7WUFFckRzVCxLQUFRdFQ7K0NBQVM7V0FBVEE7Z0RBQ29CLFVBYjVCd3FCLFFBWVF4cUI7S0FDTHFIO2tEQUFROzs7K0NBQ2IsTUFGVXJIO2dEQUVvQixVQVo1QnlxQixRQVVRenFCO0tBRUYwRDtrREFBSzs7OzhDQUNiLFdBRksyRCxHQUNHM0Q7NkNBRVQ7WUFFRzZKLE9BQVV2TjsrQ0FBUztnREFDUixRQVBYc1QsS0FNVXRUO0tBQ0owRDtLQUFIMkQ7OENBQ0wsV0FES0EsTUFBRzNEOzZDQUVUO1lBRUdrbkIsU0FBVzVxQjsrQ0FBSyxXQUFMQTs4Q0FBWTtZQUV2QjZxQjsrQ0FBa0I7S0FBZ0JDO0tBQVJDO0tBQU52WDsrQ0FDdEI7aURBQUE7c0JBRDRCdVgsUUFBUUQ7K0NBQ3BDO2lEQUFBOztnREFFWTtNQUFZcG5CO01BQVBzbkI7TUFBSDNqQjtNQUNEMEw7bURBQUs7bUNBREoxTCxJQUhRbU07O01BS1pSO21EQUFRO21DQUZNdFAsSUFIRjhQOztZQUlUVCxXQUNIQyxTQURHRDsrQ0FFUixnQkFIWWlZOzhDQUliOzhDQU5KLGlEQUFBO3VEQUVHOzs7NkNBSUU7WUFFSEMsbUJBQXNCanJCOzhDQUN4QjsrQ0FBQTtpREFBQTtzQkFEd0JBLE1BQUFBOytDQUN4QjtpREFBQTs7Z0RBRVk7TUFBWTBEO01BQVBzbkI7TUFBSDNqQjtpREFDTDBMO1lBSmUvUyxNQUFBQSxNQUFBQSxVQUdWcUg7aURBRUwyTDtZQUxlaFQsTUFBQUEsTUFBQUEsVUFHQTBEOytDQUduQixXQUZJcVAsS0FEUWlZLE9BRVJoWTs4Q0FFTDs4Q0FOSixpREFBQTt1REFFRzs7OzZDQUlFO1lBS0hrWSxhQUFnQnZxQixJQUFJOFosT0FBT2pILE1BQU11WDtpQkFDaEJ0WDtnREFBSzthQUROOVM7YUFBSThaO2FBQU9qSDtpQkFDVkM7OytDQUFpRDs4Q0FBcEUsaURBQUE7d0RBQVU7O2FBRHlCc1g7OENBQ2tDO1lBR25FSTsrQ0FBYztLQUEyQkw7S0FBUkM7S0FBTnZYO0tBQVBpSDtLQUFKOVo7Z0RBQ2R5cUI7T0FMRkYsYUFJZ0J2cUIsSUFBSThaLE9BQU9qSCxNQUFNdVg7K0NBRW5DO2lEQUFBO3NCQURJSyxVQUR1Q047aUM7aUJBRy9CNXFCO2dEQUFLLFdBOUJmMHFCLFNBOEJVMXFCOytDQUFrQjs4Q0FEOUIsMENBQUE7O2lEQUFBO21EQUNHOzs7OENBREgsaURBQUE7OzZDQUdEO1lBRUdtckI7K0NBQWU7S0FBbUJOO0tBQU52WDtLQUFQaUg7S0FBSjlaOytDQUErQyxPQVhoRXVxQjthQVdpQnZxQixJQUFJOFosT0FBT2pILE1BQU11WDs2Q0FFckM7WUFFR08sV0FBY0M7K0NBQWdDLDJDQUN4QztLQUFKdnJCO2tEQUFJO3VCQURRdXJCO2lCQU9UdnJCO2dEQUFLLFdBQUxBLE1BQUFBOytDQUEyQjtpQkFGMUJBLEdBQUdnckI7K0NBQUo7TUFBb0JGO01BQVJDO2lEQUNVO21EQUFBO3NCQURyQi9xQixVQUFHZ3JCLE9BQWdCRjtnREFDbEI7d0RBQUM7MkJBREY5cUIsTUFBVytxQjs7K0NBQzRDOzhDQUg3RDsrQ0FBQTtpREFBQTttREFDRzs7U0FKV1E7S0FFSFQ7S0FBUkM7K0NBUUcsMkNBQUE7bUJBUkhBLFFBQVFEOzhDQVNQO2dEQUFBO2tEQUFDOzBDQVRGQztRQUFBQTsrQ0FVTDthQVhJL3FCO2FBQUFBO2FBQUFBO2FBQ0MrcUI7YUFBUUQ7OENBU2IsZ0RBQUE7OzZDQVdEO1lBRUdVLE1BQVNDOytDQUNYO2dEQUFBLE1BcENFTixZQW1DU007Z0RBQ1g7a0RBQUE7OytDQUFBLGtEQUFBO3dEQUVHOzs7K0NBQWdDO1lBQ2pDQyxNQUFTRDsrQ0FDWDtnREFBQSxNQXhDRU4sWUF1Q1NNO2dEQUNYO2tEQUFBOzsrQ0FBQSxrREFBQTt3REFFRzs7OytDQUFnQzs7Ozs7Ozs7Ozs7O09BbEdyQzlJOzs7T0FBQTRDOzs7T0FBQXNCOzs7T0FBQVk7Ozs7O09BREFobkI7T0FBQUc7T0FDQStoQjtPQUFBNEM7T0FBQXNCO09BQUFZO09BRUk5bUI7T0FFQTRwQjtPQUVBQztPQUVBQztPQUdBQztPQUtBQztPQUVBclg7T0FNQS9GO09BS0FxZDtPQUVBQztPQVNBSTtPQVlBQztPQUlBQztPQU9BRTtPQUlBQztPQXdCQUU7T0FJQUU7OzthOzs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbkdKaEo7OztJQUFBMEM7OztJQUFBd0I7OztJQUFBWTs7O0lBREEvbUI7SUFBQUc7WUFBQTJGOzhDQUFBOzhDQUNjOztLQURkOUY7Y0FDQXNDO2dEQURBLGlEQUFBO2VBQUF3RCxPQUNBeEQ7Z0RBQWM7O0tBRGRuQztjQUNBb0Q7Z0RBQUEsaURBQUE7d0NBREF2RCxJQUNBdUQ7Z0RBQWM7WUFFVjJuQixVQUFZaks7K0NBQUssV0FBTEE7OENBQWlCO1lBQzdCa0ssTUFBUXRlOytDQUFLLFdBQUxBOzhDQUFhO1lBQ3JCbWUsS0FBT3pyQjsrQ0FBSyxXQUFMQTs4Q0FBWTtZQUVuQjJELElBQU9rb0IsS0FBS0MsS0FBS0MsS0FBS2xtQjsrQ0FDeEIsT0FEd0JBOztXQUlqQjdGLElBSmlCNkY7bURBSVgsbURBQUE7Z0JBSk1rbUIsS0FJWi9yQjs7V0FEQ3NOLElBSGdCekg7bURBR1YsbURBQUE7Z0JBSEFpbUIsS0FHTnhlOztXQURJb1UsSUFGWTdiO21EQUVOLG1EQUFBO2dCQUZUZ21CLEtBRUduSzs7OENBR1g7K0NBTE87Z0RBQUE7Ozs4Q0FPRCxTQUFML2dCO2UsT0FQQWdEOztnQkFhQTNEOytDQUFLLFdBQUxBLFNBQUFBOytDQUE2Qjs7K0NBRHhCOytDQUFjOzsrQ0FEZDsrQ0FBYzs4Q0FEckIsU0FERXlQO2UsT0FUQTlMOztnQkF1QkEzRDsrQ0FBSzt3REFBSztrQ0FBVkE7K0NBQXVCO2dCQUp2QnNOOytDQUFLO2lEQUNVO21EQUFBOzhCQURmQTtLQUNVNUo7S0FBSDJEOytDQUNMO29CQURLQSxXQUFHM0Q7OENBRVQ7OytDQUpJOytDQUFJOzhDQURYLFNBREU0UDtlLE9BaEJBM1A7O2dCQThCQTNEOytDQUFLO2lEQUNVO21EQUFBOzZCQURmQTtLQUNVMEQ7S0FBSDJEOytDQUNMLFdBREtBLE1BQUczRDs4Q0FFVDs7K0NBSkk7K0NBQW9COzsrQ0FEcEI7K0NBQW9COzhDQUQzQixTQURFc29CO2UsT0ExQkFyb0I7OzhDQTJCRiwyQ0FBQTs7O2dEQVNzQzsrQ0FBRTs7Z0RBQVg7K0NBQUU7K0NBQVgsU0FBbEJrbkI7ZSxPQXBDQWxuQjs7WUFxQ0FtbkIsU0FBV2psQjtnREFBSyw0Q0FBQTtXQURoQmdsQixnQkFDV2hsQjtnREFBSyxtREFBQTs7OytDQUF1QztZQVN2RDJsQixNQUFTM2xCOytDQUNYLFNBRFdBO2lEQUlPLFdBSlBBO1FBRUo3RixJQUZJNkY7Z0RBRUUsbURBQUE7aUNBQU43Rjs4Q0FHTjtZQUNDMHJCLE1BQVM3bEI7K0NBQ1gsU0FEV0E7aURBSU8sY0FKUEE7UUFFSjdGLElBRkk2RjtnREFFRSxtREFBQTtpQ0FBTjdGOzhDQUdOO1lBRUNtckIsWUFBZXRsQjsrQ0FDakIsU0FEaUJBO2lEQUdDLFdBSERBO1FBSVY3RixJQUpVNkY7Z0RBSUosbURBQUE7aUNBQU43Rjs4Q0FDTjtnQkFVMENBO2dEQUFLO3dEQUFLO2tDQUFWQTsrQ0FBeUI7Z0JBQXJEc047Z0RBQUs7d0RBQUs7bUNBQVZBOytDQUEwQjs7Z0RBQWhDOytDQUFJOzhDQUFiLFNBREVDO2UsT0F6RUE1Sjs7WUE0RUFzb0I7K0NBQ0Y7K0NBRVk7WUFFVm5SOytDQUNGOytDQUVZO1lBRVZvUjsrQ0FDRjtpREFFTztRQURBbHNCO2dEQUFNLFdBQU5BO2dEQUNJO1lBRVR5YTtnREFDRjtpREFFTztRQURDQTtpREFBYyxXQUFkQTtnREFDRztZQUVUMFI7Z0RBQ0Y7Ozs7WUFDZ0Juc0I7cURBQVcsV0FBWEE7Ozs7V0FDSjBoQjtvREFBUTtzREFBQTtvQ0FBUkE7b0RBQ1Y7NERBQUs7MkNBREtBOzs7Z0RBRUw7Z0RBQUk7K0NBSlgsNENBQUE7OztpREFNaUM7Z0RBQUk7O2lEQUFmO2dEQUFJO2dEQUFiLFNBQVhpSjtlLE9BdkdBaG5COztZQXlHQTRtQjtnREFDRjtpREFFTztRQURBdnFCO2lEQUFNLG9EQUFBO2lDQUFOQTtnREFDSTtZQUVUb3NCLGtCQUFzQkM7aURBQXVCLEdBQXZCQTtTQUFhQyxNQUFiRCxRQUFBRSxlQUFhRDs7U0FBYkM7Z0RBRXhCOztXQVFPdnNCO29EQUoyQjs7c0RBQUE7K0JBSTNCQTtvREFETDtvREFFdUI7cURBQUEsUUEvRnZCZ3NCO1FBK0ZhN1k7UUFBUkQ7Y0FEQWxUO2NBQUFBOzJCQUNBa1QsWUFBUUMsa0JBQVJEOzJCQUFRQzs7NEJBWFNvWixrQkFBQUE7NERBR047OytDQWVqQjtZQUVDQyxRQUFZSDtpREFBd0IsR0FBeEJBO1NBQU1DLE1BQU5ELFFBQUF4aEIsUUFBTXloQjs7U0FBTnpoQjtnREFFZDs7V0FDTzdLLHVEQUFNLE9BQU5BOztXQUNDc047b0RBQU0sb0RBQUE7b0NBQU5BOztvREFDNEIsb0RBQUE7d0NBTHRCekM7OytDQU1iOzs7Ozs7Ozs7OztPQTlJSDZYOzs7T0FBQTBDOzs7T0FBQXdCOzs7T0FBQVk7OztPQURBL21CO09BQUFHO09BQ0E4aEI7T0FBQTBDO09BQUF3QjtPQUFBWTtPQUVJbUU7T0FDQUM7T0FDQUg7T0FFQTluQjtPQU9BaEQ7T0FFQThPO09BT0E2RDtPQVVBMFk7T0FVQW5CO09BQ0FDO09BU0FVO09BTUFFO09BT0FQO09BY0E1ZDtPQUdBMGU7T0FLQW5SO09BS0FvUjtPQUtBelI7T0FLQTBSO09BT0F4QjtPQUVBSjtPQUtBNkI7T0FvQkFJOzs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7SUN4SUoxbUI7SUFBQWhHO0lBK0hNMnNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWhJTmhzQjtJQUFBRztJQUFBOHJCO0lBQUFDO1lBQUFDOzZDQUFBLE9BQUFuc0I7OENBTXdCO1lBTnhCb3NCOzZDQUFBLE9BQUFIOzhDQU13QjtZQU54Qkk7NkNBQUEsT0FBQXJzQjs4Q0FNd0I7WUFOeEJzc0I7NkNBQUEsT0FBQUw7OENBTXdCO1lBTnhCbks7NkNBQUEsT0FBQTloQjs4Q0FNd0I7WUFOeEJrUDs2Q0FBQSxPQUFBbFA7OENBTXdCO1lBTnhCcUg7NkNBQUEsT0FBQTRrQjs4Q0FNd0I7WUFOeEJubUI7NkNBQUEsT0FBQW1tQjs4Q0FNd0I7O0tBTnhCanNCO2NBQ0FzQzsrQ0FBQTs7YUFEQXlEO2tEQUNBLHlDQUFBOytCQUFBekQ7a0RBREEseUNBQUE7b0RBQUEsV0FBQXdELE9BQ0F4RDtXQURBeUQ7a0RBQUEsZ0RBQUE7c0NBQ0F6RDs7YUFEQThMLGVBQUF1UDtrREFDQSx5Q0FBQTsrQkFBQXJiO2tEQURBLHlDQUFBO29EQUFBLFdBQUErRSxPQUNBL0U7V0FEQXFiO2tEQUNBLHlDQUFBOytCQUFBcmI7a0RBREEseUNBQUE7b0RBQUEsV0FBQTRNLE9BQ0E1TTtXQURBOEw7a0RBQUEsZ0RBQUE7c0NBQ0E5TDs7YUFEQWlxQixpQkFBQTFLO2tEQUNBLHlDQUFBOytCQUFBdmY7a0RBREEseUNBQUE7b0RBQUEsV0FBQXdmLE9BQ0F4ZjtXQURBdWY7a0RBQ0EseUNBQUE7K0JBQUF2ZjtrREFEQSx5Q0FBQTtvREFBQSxXQUFBZ3FCLE9BQ0FocUI7V0FEQWlxQjtrREFBQSxnREFBQTtzQ0FDQWpxQjs7YUFEQWtxQixlQUFBQyxpQkFBQUM7a0RBQ0EseUNBQUE7K0JBQUFwcUI7a0RBREEseUNBQUE7b0RBQUEsV0FBQStwQixPQUNBL3BCO1dBREFvcUI7a0RBQ0EseUNBQUE7K0JBQUFwcUI7a0RBREEseUNBQUE7b0RBQUEsV0FBQThwQixPQUNBOXBCO1dBREFtcUI7a0RBQ0EseUNBQUE7K0JBQUFucUI7a0RBREEseUNBQUE7b0RBQUEsV0FBQTZwQixPQUNBN3BCO1dBREFrcUI7a0RBQUEsZ0RBQUE7c0NBQ0FscUI7OytDQUltQjs7S0FMbkJuQztjQUNBb0Q7K0NBQUEsZ0RBQUE7d0NBREF2RCxJQUNBdUQ7K0NBSW1CO1lBTG5CdUw7NkNBQUE7OENBTXdCO1lBTnhCeEg7NkNBQUEsT0FBQXRIOzhDQU13Qjs7S0FOeEJpc0I7Y0FNQTNwQjtvQkFBV0E7Z0RBTlgsZ0RBQUE7Z0JBQUFnRixTQU1XaEY7aURBQWE7b0JBQWJBO2tEQUFNLGtEQUFBO29DQUFOQTtpREFBUzsrQ0FOcEIsZ0RBQUE7ZUFBQXdNLHFCQU1BeE07Z0RBQXdCOztLQU54QjRwQjtjQU1BM29CO2dEQUFBLGlEQUFBO3dDQU5BMG9CLFNBTUExb0I7Z0RBQXdCOztJQUx4Qi9EO0lBS0FtdEI7O0tBTEFudEI7Y0FBQXdHOytDQUFBOztnQkFBQUE7bUJBQUFBOzs7Ozs7Ozs7Ozs7O29EQUFBLGdEQUFBO2lEQUFBWCxrQkFBQVc7O21EQUFBLGdEQUFBO2dEQUFBWCxrQkFBQVc7O2tEQUFBLGdEQUFBOytDQUFBWCxrQkFBQVc7O2lEQUFBLGdEQUFBOzhDQUFBWCxrQkFBQVc7O2tCQUFBQTs7aURBQUEsZ0RBQUE7OENBQUFYLGtCQUFBVzs7O2lEQUFBLGdEQUFBOzhDQUFBWCxrQkFBQVc7V0FBQUM7OytCQUFBQTs7Z0NBQUFBOztpQ0FBQUE7a0NBQUFBO3FDQUFBQTtxQ0FBQUE7cUNBQUFBO21DQUFBQTs7Y0FBQXVoQjttREFBQSxHQUFBQTtzQkFBQUE7O3FEQUFBO2FBQUFvRjthQUFBbkYsV0FBQUQ7c0RBQUFxRjt3REFBQTtpQkFLQUYsY0FMQWxGO3NEQUFBcUY7d0RBQUE7aUJBQUF0dEIsV0FBQW90QjtxREFBQTtvQkFBQUM7b0JBQUFDOzs7bURBQUEsZ0RBQUE7O21CQUFBem5CO21CQUFBWTttQkFBQUQ7O2FBQUFxYztrREFBQSxHQUFBQTtxQkFBQUE7O29EQUFBO1lBQUEwSztZQUFBekssV0FBQUQ7cURBQUEzRDt1REFBQTtnQkFBQWxmLFdBQUE4aUI7cURBQUEwSzt1REFBQTtnQkFLQUwsY0FMQUk7b0RBQUE7bUJBQUFyTzttQkFBQXNPOzs7a0RBQUEsZ0RBQUE7O2tCQUFBM25CO2tCQUFBWTtrQkFBQUQ7O1lBQUFFO1dBQUFBLG1CQUFBQTtrREFBQTtVQUFBQyxXQUFBRDttREFBQUU7cURBQUE7Y0FLQXVtQixjQUxBeG1CO2tEQUFBLFdBQUFDOztpREFBQSxnREFBQTs7aUJBQUFmO2lCQUFBWTtpQkFBQUQ7O1dBQUFpbkI7Z0RBQUEsR0FBQUE7bUJBQUFBOzs7O21EQUFBO1dBQUFDO1dBQUFDO1dBQUFDLFdBQUFIO29EQUFBSTtzREFBQTtlQUFBN3RCLFdBQUE0dEI7b0RBQUFFO3NEQUFBO2VBS0FYLGNBTEFRO29EQUFBSTtzREFBQTtlQUFBL3RCLFdBQUEwdEI7bURBQUE7a0JBQUFHO2tCQUFBQztrQkFBQUM7Ozs7Z0RBQUEsZ0RBQUE7O2dCQUFBbG9CO2dCQUFBWTtnQkFBQUQ7OytDQUFBLGdEQUFBOzRDQUFBWCxrQkFBQVc7K0NBSW1COztLQUNuQjJtQjtjQUFBYTtnREFBQSxpREFBQTs2Q0FMQWh1QixXQUtBZ3VCO2dEQUF3QjtZQUx4Qmx1Qjs2Q0FBQTs7Z0RBQ0k7UUFBQW11QjtpREFBQUM7VUFJSkMsYUFKSUY7Z0RBQUE7NEJBQUFDOztnREFDQTtRQUFBRTtRQUFBQztpREFBQUM7VUFHSkgsYUFISUU7aURBQUFFO1VBRkp6dUIsVUFFSXN1QjtnREFBQTs0QkFBQUUsY0FBQUM7O2dEQUNBO1FBQUFDO1FBQUFDO2lEQUFBQztVQUhKNXVCLFVBR0kydUI7aURBQUFFO1VBRUpSLGFBRklLO2dEQUFBOzRCQUFBRSxjQUFBQzs7Z0RBQ0E7UUFBQUM7UUFBQUM7UUFBQUM7aURBQUFDO1VBSkpqdkIsVUFJSWd2QjtpREFBQUU7VUFDSmIsYUFESVU7aURBQUFJO1VBSkpudkIsVUFJSTh1QjtnREFBQTs0QkFBQUcsY0FBQUMsY0FBQUM7OzZDQUFlO1lBQ25CZCxhQUFBZTs4Q0FBQSxpREFBQTsyQ0FMQXB2QixXQUtBb3ZCOzhDQUF3Qjs7SUFMeEIvdUI7SUFLQWd2Qjs7S0FMQWh2QjtjQUFBd0I7K0NBQUEsVUFBQUE7a0JBQUFBOzttQkFBQUE7Ozs7Ozs7Ozs7O2tEQUFBLGdEQUFBO3FEQUFBOUIsUUFBQThCOzs7bUJBQUFBOztrREFBQSxnREFBQTtxREFBQTlCLFFBQUE4Qjs7Ozs7Y0FBQW1GO29DQUFBQTtlQUFBc29CO29EQUFBLEdBQUFBO3VCQUFBQTs7Ozt1REFBQTtlQUFBQztlQUFBQztlQUFBQyxPQUFBSDt3REFBQUk7MERBQUE7bUJBQUFydkIsYUFBQW92Qjt3REFBQUU7MERBQUE7bUJBS0FOLGdCQUxBRzt3REFBQUk7MERBQUE7bUJBQUF2dkIsYUFBQWt2Qjt1REFBQTtzQkFBQUc7c0JBQUFDO3NCQUFBQzs7OztvREFBQSxnREFBQTt1REFBQTd2QixRQUFBaUgsS0FBQW5GOztvQ0FBQW1GO2VBQUErZjtjQUFBQSxtQkFBQUE7cURBQUE7YUFBQUMsT0FBQUQ7c0RBQUFFO3dEQUFBO2lCQUtBb0ksZ0JBTEFySTtxREFBQSxXQUFBQzs7b0RBQUEsZ0RBQUE7dURBQUFsbkIsUUFBQWlILEtBQUFuRjs7b0NBQUFtRjtlQUFBc1k7b0RBQUEsR0FBQUE7dUJBQUFBOztzREFBQTtjQUFBK0o7Y0FBQTlKLE9BQUFEO3VEQUFBRTt5REFBQTtrQkFBQW5mLGFBQUFrZjt1REFBQStKO3lEQUFBO2tCQUtBK0YsZ0JBTEFoRztzREFBQSxXQUFBN0osTUFBQThKOzs7b0RBQUEsZ0RBQUE7dURBQUF2cEIsUUFBQWlILEtBQUFuRjs7b0NBQUFtRjtlQUFBQztvREFBQSxHQUFBQTt1QkFBQUE7O3NEQUFBO2NBQUFuRjtjQUFBQyxLQUFBa0Y7dURBQUFqRjt5REFBQTtrQkFLQXF0QixnQkFMQXR0Qjt1REFBQUU7eURBQUE7a0JBQUE1QixhQUFBeUI7c0RBQUEsV0FBQUUsTUFBQUM7OztvREFBQSxnREFBQTt1REFBQWxDLFFBQUFpSCxLQUFBbkY7Ozs7bURBQUEsZ0RBQUE7c0RBQUE5QixRQUFBOEI7Ozs7K0NBQUEsZ0RBQUE7a0RBQUE5QixRQUFBOEI7K0NBSW1COztLQUNuQnd0QjtjQUFBcHZCO2lCOzs7ZUFMQUk7ZUFLQUo7O1lBTEFHOzZDQUFBOztnREFDSTtRQUFBMkI7aURBQUFDLE9BSUo2dEIsZUFKSTl0QjtnREFBQTs7NEJBQUFDOztnREFDQTtRQUFBRjtRQUFBeWQ7aURBQUFDLE9BR0pxUSxlQUhJdFE7aURBQUF0ZCxPQUZKN0IsWUFFSTBCO2dEQUFBOzs0QkFBQTBkLFVBQUF2ZDs7Z0RBQ0E7UUFBQW9uQjtRQUFBckM7aURBQUFDLE9BSEo3bUIsWUFHSTRtQjtpREFBQXNDLE9BRUp1RyxlQUZJeEc7Z0RBQUE7OzRCQUFBcEMsVUFBQXFDOztnREFDQTtRQUFBaUc7UUFBQUM7UUFBQUM7aURBQUFDLE9BSkp0dkIsWUFJSXF2QjtpREFBQUUsT0FDSkUsZUFESUw7aURBQUFJLE9BSkp4dkIsWUFJSW12QjtnREFBQTs7NEJBQUFHLFVBQUFDLFVBQUFDOzs2Q0FBZTtZQUNuQkMsZUFBQTVzQjtlOzs7YUFMQTdDO2FBS0E2Qzs7WUFVSWlEOzhDQUNGO0tBQ0t2QzsrQ0FHYSxPQUhiQTs4Q0FHYzs4Q0FnQ1g7K0NBQUE7OytDQUNBOztJQUVWbXNCO0lBQUFDO1lBQUF4WTs4Q0FBQTs4Q0FDd0I7O0tBRHhCdVk7Y0FDQTlzQjtnREFBQTtPQURBOEw7T0FBQXJJO2lEQUNVLDJDQUFBOzRCQUFWekQ7Z0RBREEsMENBQUE7bURBQ1c7OEJBQVhBO1FBREF5RDtpREFDVSwyQ0FBQTs0QkFBVnpEO2dEQURBLDBDQUFBO2tEQUFBLFdBQUF1VSxTQUNBdlU7UUFEQThMO2dEQUFBLGlEQUFBO21DQUNBOUw7Z0RBQXdCOztLQUR4QitzQjtjQUNBOXJCO2dEQUFBLGlEQUFBO3dDQURBNnJCLE9BQ0E3ckI7Z0RBQXdCO1lBT3BCK3JCLElBQU90cUIsSUFBYUM7OENBQ3RCOztZQURTRDs7WUFjRHVxQixLQWRDdnFCO2VBQWFDOztzREFjRztZQUFQdXFCLEtBZEl2cUI7dURBY0csT0FBakJzcUI7OzhDO3VEQUVGRTt3QztzREFDSixPQUhnQkQ7OzhDO3VEQUdaRTt3QztzREFNQSxPQVBBRDt1REFDTztxREFNUDt1REFBZTt3REFBQSxPQU5mQzt3REFNZTs7NkRBQWU7bUJBVDVCSCxPQUFVQzs7OztxREFRWjtzREFBQTtjQU5BQzs7cURBTUE7dURBQWU7d0RBQUE7ZUFMZkM7d0RBS2U7OzZEQUFlO21CQVI1QkgsT0FBVUM7Ozs7cURBT1o7c0RBQUE7Y0FMQUM7O3NEQUtBO3FCQUpBQztzREFHQTtjQUpBRDs7c0RBSUE7cUJBSEFDO3NEQUVGO3NEQUFBOztzREFERUM7d0RBQ0Y7MERBTUc7OztxREFDTCxHQVJJQTt1REFRSTs7WUFHRUM7eURBQU07cUNBZlZMOztZQWdCQ007eURBQVM7cUNBaEJBTDs7cURBaUJkLEtBRlFJO21CQUNIQztlQUtNenFCLElBTkh3cUI7Z0JBQ0hDLGdEQUdxQjtlQUVIcHBCLE1BTGxCb3BCO2NBS016cUIsSUFBWXFCLGlEQUNUO2NBRFNBLE1BQVpyQiwrQ0FHVTt1REFHViw0Q0FBQTs7MERBQUE7MENBTkFBOzs7ZUExQkZnRixRQVRTbkY7cURBVXBCLE9BRFdtRjs7Ozs7O2NBVFNuRjtVQUlaNnFCLFVBSkQ5cUI7Z0RBS1AsT0FEUThxQjs7OytDQURhOzhDQWtEdEI7O0lBR0RDO0lBQUFDO1lBQUFDOytDQUFBLE9BeEhGandCOytDQXlIZTs7S0FEYit2QjtjQUNBenRCO2lEQURBLGtEQUFBO2VBQUEydEIsU0FDQTN0QjtpREFBYTs7S0FEYjB0QjtjQUNBenNCO2lEQUFBLGtEQUFBO3dDQURBd3NCLFNBQ0F4c0I7aURBQWE7O0lBQ2JuQjtJQUFBZ0Y7WUFBQThvQjsrQ0FBQSxPQWxFRmQ7OENBc0VHO1lBSkRlOytDQUFBLE9BRkFKOzhDQU1DOztLQUpEM3RCO2NBQ0FFLEtBQUFpQjtpREFBQSwyQ0FBQTs0QkFBQWpCO2lEQUFBLDJDQUFBOzRCQUFBQTtpQkFBQWlCO2lEQUFBLFVBQ1VBO3FEQUFBLDRDQUFBOytCQURWakI7O3VCQUNVdUwsS0FBQXRLO3NEQUFBLEdBQUFzSzt1REFBQSw0Q0FBQTtpQ0FEVnZMO3NEQUNVLDRDQUFBO3VEQUZWO2NBQUE2dEIsU0FDQTd0QjtZQUNVaUI7c0RBQUE7cURBQVU7cURBQVYsNENBQUE7d0NBQUFBO3FEQUFBLG1EQUFBO3NDQURWakI7b0RBQ29COztpREFEcEIsMkNBQUE7NEJBQUFBO2lEQUFBLDJDQUFBOzRCQUFBQTtpREFBQSwyQ0FBQTs0QkFBQUE7aUJBQUFpQjtpREFBQSxVQUVXQTtxREFBQSw0Q0FBQTsrQkFGWGpCOzt1QkFFV3VMLEtBQUF0SztzREFBQSxHQUFBc0s7dURBQUEsNENBQUE7aUNBRlh2TDtzREFFVyw0Q0FBQTt1REFIWDtjQUFBNHRCLFNBQ0E1dEI7WUFFV2lCO3NEQUFBO3FEQUFRO3FEQUFSLDRDQUFBO3dDQUFBQTtxREFBQSxtREFBQTtzQ0FGWGpCO29EQUVtQjs7aURBRm5CLDJDQUFBOzRCQUFBQTtpREFBQSxrREFBQTttQ0FBQUE7Z0RBR0M7O0tBSkQ4RTtjQUNBN0Q7aURBQUEsa0RBQUE7eUNBREFuQixNQUNBbUI7Z0RBR0M7WUFJTzZzQixVQUNFeEU7Z0RBQVc7S0FBWHlFLFFBQUF6RTs7Z0RBQVc7UUFBWHlFLFdBQU94RSxNQUFQd0UsVUFBQUMsU0FBT3pFLGNBQVB5RTtnREFDUjtrREFDUTtjQUZBQTs7bUNBR0xqakI7Z0RBQ0QsR0FKTWlqQjtrREFPRztPQURObHJCLElBTkdrckI7bURBT0csUUExRVhoQixJQXNFR2ppQixPQUdFakk7O21EQUUrQjtvREFSNUJtckI7a0JBR0xsakIsSUFIS2lqQjtRQUFBRCxRQUFBRTs7OztrREFTRztjQVRIRDs7O2lEQUtvQjtrREFMcEJFLGdCQUdMbmpCO01BSEtnakIsUUFBQUc7Ozs4Q0FZUDtZQUVDMWpCLE9BQVMxSDsrQ0FDWCwyQ0FBQTs7a0RBQUE7OEJBRFdBOytDQUNYLGtEQUFBO3lEQUFtQjs7OytDQUE4QztZQUUvRHFyQixnQkFDQ0M7K0NBQ0gsNENBQWU7O21EQUFBOzRCQURaQTtPQUFBQTs7TUFFaUNDO01BQTVCQyxRQUZMRjtNQUdJOXBCLElBUExrRyxPQU1NOGpCO01BRUUzdEIsSUFSUjZKLE9BTWtDNmpCO2dEQUdsQyxlQUZLL3BCLEdBQ0czRDs7Z0RBRUg7OENBQ047WUFFSzR0QixZQUFnQjNXLE1BQThCNFc7Z0RBQWlCLElBQWpCQyxXQUFBRDtnREFBaUI7aURBQzlDO2tEQUFBO1FBN0JqQlYsYUE0QjhDVztNQUN4Q0M7TUFBUE47a0RBQ1M7UUFaWkQsZ0JBV0dDOztRQURpQnhXOzs7V0FHVStXLHFCQUF4QkMsU0FIY2hYOzs7OztzREFLaEI7c0NBRjBCK1csUUFBeEJDO29EQUlDOzs7dURBREE7dUNBSHVCRCxRQUF4QkM7O3VEQUlDO3lEQUFBO3lDQUp1QkQ7Ozs7O21EQUkwQixPQVBORjs7OztrREFRckMsT0FScUNBO2lEQVV6Qzs7TUFESTl0QjtNQUFIMkQ7dUM7a0RBQ051TjtvREFBSztpQ0FUTnVjO01BVUNTO2lCQVg4Q0w7a0JBVzlDTSxXQUFhL21CO3FEQUNmO3VEQUFJO3dEQUFBOzBEQUFBO21DQURXQSxHQVhpQ3ltQjt3REFZN0M7MERBQUE7NERBQXVDOzs7dURBQXZDOzs7dURBRWEsNENBQUE7OzBEQUFBO2dCQWxEdEIxcEIsUUFvQ3NEMHBCO3VEQWM5Qyw0Q0FBQTs7dURBQUEsbURBQUE7OztvREFFRDtnQkFMQ007O01BQUFBLGFBQUFELGFBWDhDSjtnREFpQmxELEdBUlVucUI7U0FBRzNEO21EQXNCWTtvREFBQTtVQXBCckJtdUI7d0RBb0JnQzs4QkE5QmpDVjs7O1FBOEJZVztRQUFOQztvREFDVztzREFBQTsrQkFEWEE7UUFDR0M7UUFBSGpmO29EQUNXO3NEQUFBOytCQURSaWY7UUFDR2hmO1FBQU5pZjtRQWhCTEM7OztZQWVLbmY7d0RBRUc7MkJBeEJSNkIsSUF1QktxZDtZQUFNamY7V0FGQThlOzttREFKVTtvREFBQTtVQWhCckJEO3dEQWdCZ0M7OEJBMUJqQ1Y7UUEwQllnQjtRQUFOQztvREFDVztzREFBQTsrQkFEWEE7UUFDR0M7UUFBSEM7UUFYTEo7OztZQVdLSTt3REFDSTsyQkFuQlQxZCxJQWtCUXlkO1dBREdGO2FBbEJGenVCO2tEQWNZO21EQUFBO1NBWnJCbXVCO3VEQVlnQzs2QkF0QmpDVjtPQXNCWW9CO09BQU5DO21EQUNXO3FEQUFBOzhCQURYQTtPQUNNQztPQUFOQztPQVBMUjs7O3VEQVFLOzBCQWZMdGQsSUFjSzhkO1dBQU1EO1VBREFGOztrREFIVTttREFBQTtTQVRyQlY7dURBU2dDOzZCQW5CakNWOzs7T0FtQll3QjtPQUFOQztPQUhMVjs7O3VEQUlJOzBCQVhKdGQsSUFVS2dlO1VBQU1EO2lEQWdCSztrREFwQzhCRTtZQWlCOUNYLFVBaEJNVDtNQUR3Q0QsV0FBQXFCOzs4Q0FzQ3JEO1lBRUdDLGFBQWdCQyxJQUFrQnhCO2dEQUFuQjtLQUFLMXJCLElBQUprdEI7S0FDYjFyQixJQXRESGtHLE9BcURvQjFIOytDQUV0QixHQURLd0I7U0FJT3NULE9BSlB0VCxNQUNEbXFCLFdBMUNFRixnQkE2Q00zVyxPQUx3QjRXOztTQUVoQ0MsV0FGZ0NEOytDQU9wQztZQUxJQztnQkFGY3VCLElBRWR2Qjs4Q0FNTDtZQUVHd0IsT0FBU3pCO2dEQUFVLE9BbERmRCxlQWtES0M7K0NBQTZCOytDQXpGNUIsNENBQUE7OztPQUNkZjtPQUFBQztPQUVBNXRCO09BQUFnRjtPQU1JNGtCO09BRUlvRTtPQWVKdGpCO09BR0EyakI7T0FVSUk7T0F3Q0p3QjtPQVVBRTtZQUdGM3lCLEdBQU00eUI7Z0RBQXFCOztpREFHVDttREFBQTs7Z0RBRGxCO2tEQUFBO29EQUNHOztTQUhHQTtnREFDSjFCO2tEQUNGO2dEQUdGO2tEQUFBOzRCQUpJQTsrQ0FJSixrREFBQTt5REFBa0M7Ozs4Q0FDbkM7Ozs7T0F6TkQ5d0I7T0FBQUc7T0FBQThyQjtPQUFBQztPQUNBMXNCO09BS0FtdEI7T0FMQXJ0QjtPQUtBcXVCO09BTEFodUI7T0FLQWd2QjtPQUxBanZCO09BS0F5dkI7T0FVSTNwQjs7O09Bd0NKNHBCO09BQUFDO09BUUlDOztPQW1KQTF2Qjs7O2E7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2dEQ3BOTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpREFBQTs7SUFFVkk7SUFBQUc7WUFBQTJGO2dEQUFBO2dEQUNxQjs7S0FEckI5RjtjQUNBc0M7a0RBREEsbURBQUE7ZUFBQXdELE9BQ0F4RDtrREFBcUI7O0tBRHJCbkM7Y0FDQW9EO2tEQUFBLG1EQUFBO3dDQURBdkQsSUFDQXVEO2tEQUFxQjsrQ0FBckI7Z0RBQUEvRDtJQUFBRjtJQUFBSztJQUFBRDtJQUdJcUU7SUFDQUM7SUFDQXl1QjtJQUNBemtCO0lBSkFnZTtZQU1BMEcsUUFBVW56QjtrREFBSzswREFBQztrQ0FBTkE7O2lEQUF1QjtZQUVqQ3NULEtBQU84ZjtpREFDVCw4Q0FBZTs7cURBQUE7NEJBRE5BO09BQUFBO21EQUkrQixxREFBQTs7a0RBRHpCO2dEQUVkOztpREFJQztTQUNhcHpCO21EQUFTOztxREFBQTs2QkFBVEE7b0RBQWdDLFdBQWhDQTs7a0RBQ047aURBQUk7Z0RBSGIsNkNBQUE7SUFERXF6QjttREFDRjs7O2lEQU9FO21EQUVPO1FBRE1yekI7a0RBQU0sV0FBTkE7aURBQ0Y7Z0RBSGIsNkNBQUE7SUFERW96QjttREFDRjs7O2lEQVFFO1NBQ2M5bEI7Y0FBQUE7b0RBQTZCLFdBQTdCQTs7a0RBQ1A7aURBQUk7Z0RBSGIsNkNBQUE7SUFERWdtQjttREFDRjs7WUFNRUMsa0JBQXFCdnpCOztrREFFckI7b0RBRU87U0FETXd6QjttREFBTyxxREFBQTtjQUFQQSxRQUhReHpCO2tEQUlUO2lEQUZaLG9EQUFBOztnREFHRDtZQUVDeXpCLGdCQUFtQnp6QjtrQkFJbkI2RjtrREFGQSxTQUVBQTtVQURhMnRCLE1BQ2IzdEI7b0RBRHNCO3NEQUFBLFdBQVQydEIsUUFITXh6QjtxREFHb0I7O21EQUNoQyxXQUFQNkY7a0RBQWM7aURBRmQsb0RBQUE7O2dEQUdEO1lBRUM2dEIsS0FBUU4sT0FBTzNIO2tEQUFTLHFEQUFRO3lCQUF4QjJILFdBQU8zSDtpREFBdUI7WUFJdENrSSxZQUNDbHNCLEdBQWdCbXNCLE9BQVVsd0I7a0RBQzhCLDhDQUMzQztLQUFabXdCO3FEQUFZOzthQUNSQyxHQUFNRixPQUFVbHdCO2tEQUN0QixLQURZa3dCO29EQUVKO2NBSE5DO2NBQ29CbndCOzttREFJRDtNQURabUssS0FIRytsQjtNQUdUL3RCLElBSFMrdEI7b0RBSVMsUUFKZkUsR0FHR2ptQixJQUhhbks7TUFJUHF3QjtNQUFIN3pCO01BQUw4ekI7a0RBQ0wsT0FGQ251Qjs7c0RBU2M7U0FEUjdGLElBUk42Rjt1REFTYzt5REFBQTtpQ0FEUjdGOztpQkFkUnlIOzs7OzREQWVnRTs7U0FBeERKO3lEQUFROzs7cURBQ2I7Z0JBZEZ3c0I7Z0JBYU94c0I7Z0JBUk0wc0I7O1lBTUx6bUIsSUFQUHpIO3NEQU9hOzhEQUFDO21DQUFQeUgsR0FOSDBtQjtnQkFBSzl6QjtnQkFBRzZ6Qjs7cURBR1g7U0FEVXJTLElBSFg3YjtzREFJVytILEtBSFBvbUI7U0FHRUMsTUFIRkQ7dURBSWE7eURBQUE7Z0NBRFhDO1NBQ0lDO1NBQUpDO3FEQUNMOzRCQUhVelMsR0FFTHlTLEtBQUlELFFBREN0bUI7Z0JBSEYxTjtnQkFBRzZ6Qjs7aURBV2Q7OzthQWxCQXRzQjs7Ozt3REFtQndCOztpREFBM0IsT0FoQlFxc0I7MERBZ0JMO3FCQW5CZ0JGO2FBQVVsd0I7Z0RBb0I5QjtnREFwQkcsNkNBQUE7O2lEQXFCUSxTQUFSbUg7ZSxPQXRCQThvQjs7WUF3QklTLE9BQVNuQjtrREFBTzttREFpQmxCOzt1REFBSzs7a0RBZkw1ckI7b0RBQ0Y7U0E3RUE2ckI7a0JBOEVHcnRCLEdBQVlnRjt3QkFDTjNLO3dEQUNMLE9BRkQyRjs7NERBT2dCO2VBRFI3RixJQU5SNkY7NkRBT2dCOytEQUFBO3VDQURSN0Y7ZUFDRzBEO2VBQUgyRDs2REFDTDsrREFBQTtvQ0FaRitzQixRQVVPcDBCOzZEQUVMOztrRUFBb0M7MENBRDVCMEQsR0FOTHhEOztnQ0FNRW1IOztrQkFIQ2lHLElBSlR6SDttRUFLRzs2Q0FETXlILEdBSEhwTjs7c0VBSStCO2dEQUQ1Qm9OOzs7OzREQUphLE9BQVZ6Qzs7d0RBVVQ7dURBUkYsb0RBQUE7d0NBRldBO3VEQVdaO1NBZlVvb0I7O2tEQW1CZixLQWpCSTVyQjtvREFrQk07bURBQ2tCO0tBQXJCMEwsTUFuQkgxTDtvREFtQndCO3NEQUFBOzttREFBZixzREFBQTt3Q0FBTjBMO2lEQUVSO2dCQU1HbE47a0RBRkEsU0FFQUE7b0RBQU8sV0FBUEE7UUFEY3lILElBQ2R6SDttREFEb0IsV0FBTnlIO2tEQUNIO2lEQUhiLDhDQUFBO0lBREUrbUI7b0RBQ0Y7O1lBTU1DLE9BQVdqSTttREFBMkIsR0FBM0JBO1NBQU1DLE1BQU5ELFFBQUF4aEIsUUFBTXloQjs7O01BQU56aEI7dURBQU07O21EQUE2QixnQkFBQTNLO21EQUNwRCxPQURvREE7O3VEQUFBOztzREFRN0MscURBQUE7Ozt1REFSNkMsT0FzSGxEcTBCO2lCQXRIZTFwQjs7dURBQW1DLE9BNENsRDJwQjtpQkE1Q2UzcEI7O3VEQUFtQyxPQXFLbEQ0cEI7aUJBcktlNXBCOzt1REFBbUMsT0FtT2xENnBCO2lCQW5PZTdwQjs7dURBQW1DLE9BZ1FsRDhwQjtpQkFoUWU5cEI7b0RBU2hCO2lEQUFBO1lBQ0MrcEIsWUFBZTEwQixHQUFXMkssT0FBTzdLO2tCQUU5QjYwQjttREFXTDtxREFnQm9CO3VEQUFBO3VCQTNCZkEsYUFBQUE7b0RBV0w7b0RBZ0JJO3NEQUFBOzswQkFkZ0IvSjtvREFBaEI7T0FBWXBuQjtPQUFQc25CO09BQUgzakI7Ozs7V0FBQUEsZUFBVTNEO3VEQUtnQywrQ0FBQTs7MERBQUE7NkJBcEJiMUQsU0FlN0JxSDt1REFNVzt5REFESDs0QkFsQlR3dEIsZ0JBYUN4dEI7Ozs7MERBTVc7bUNBbkJad3RCOzt1REFxQm1CO3dEQUFBOzBEQUFBOzZCQXJCbkJBLGdCQWFDeHRCO1NBQ0l5dEIsVUExQkpSLFVBeUJHdEo7OztXQUNDOEosVUFERDlKOztvREFZSDtjQVhJOEo7Y0FEVWhLO21EQWFmO21EQWRILDhDQUFBO01BREVBO3NEQUNGOzttREFrQkY7YUE5QksrSjthQUFBQTthQUFBQTthQUFBQTthQVdEL0o7bURBbUJvQjtrREE3QnRCLDhDQUFBOztxREFBQTs2QkFIaUM5cUI7a0JBSWpCd1M7b0RBQWMsT0FBZEEsU0FKRHRTO21EQUl5QjtrREFEeEMsOENBQUE7O3FEQUFBO3VEQUNHOzs7a0JBQ1NzVDtvREFBUTthQUxheFQ7YUFBQUE7YUFLckJ3VDthQUxxQnhUO2FBQUFBO21EQUtEO2tEQUZoQzttREFBQTtxREFBQTt1REFFRzs7O21EQUZIO2dCQUtFKzBCO3VEQUZDLEdBRURBLFFBQUFBO3lEQUFlLE9BQWZBO3VCQUVvQi8wQjt5REFBSywrQ0FBMEI7OzREQUFBO29DQUEvQkE7O3lEQUErQixzREFBQTt3Q0FWM0I2Szt3REFVMkM7dURBQWpFLHFEQUFBO2lFQUFNOztrQkFGUmtxQjtzREFHRDs7bURBUkQ7cURBQUE7O2tEQVVGLHFEQUFBOztpREFvQkQ7WUFDR1AsV0FBYzNwQixPQUFPb29CO2tEQUN2QixLQUR1QkE7b0RBRWY7UUFDRXBsQixLQUhhb2xCLFFBR3BCbmxCLEtBSG9CbWxCO2tEQUlyQixTQURDbmxCO29EQUdhO2FBSGJBO2FBSEQwbUIsV0FBYzNwQixPQUdOZ0Q7bURBS0M7S0FERjdOLElBSk44TjtvREFLUTtPQTFDVDhtQixlQWtDYy9wQixPQU9QN0s7O29EQUVLO2lCQUZMQTthQVBQdzBCOzhEQVN3QztzQ0FGakN4MEI7O2VBSkM2TjtRQU9DMmxCO21EQUFNO2dCQUFOQTtZQVZUZ0I7NkRBVTJDO3FDQUFsQ2hCOztjQVBEM2xCO2lEQVVUO1lBQ0NtbkIsZUFBa0JucUIsT0FBT29vQjtrREFDM0IsS0FEMkJBO29EQUVuQixjQUZZcG9CO1FBR1ZnRCxLQUhpQm9sQixRQUd4Qm5sQixLQUh3Qm1sQjtrREFJekIsU0FEQ25sQjtvREFJK0I7cURBQUE7UUFQaENrbkIsZUFBa0JucUIsT0FHVmdEO01BSWdCb25CO01BQVBDO01BQVZDO21EQUNMO2lCQUxEcm5CLElBSU1xbkI7YUFBVUQ7YUFBT0Q7O21EQUdmO0tBREZqMUIsSUFOTjhOO29EQU9RO09BMURUOG1CLGVBZ0RrQi9wQixPQVNYN0s7O29EQUVLLGNBWE02SyxPQUFPb29CO1FBWWhCTzttREFBUzs7cURBQUE7K0JBQVRBO21EQUVMO01BRFE5dkI7dURBQUs7K0JBRFI4dkI7O29EQUVMLE9BRFE5dkI7cURBQ0oweEI7UUF4RUpkLFdBdUVRNXdCLE9BVkptSztNQVlJd25CLFVBaklaMUIsZUFnSVF5QixZQURJMXhCO21EQUdSO3FCQUpLOHZCLE1BRUQ0QjthQUNJQzs7O21EQUVnQiwrQ0FBQTs7c0RBQUE7OzttREFBWDtxREFBQSxXQUxSN0I7b0RBS2tELGNBakJ6QzNvQixPQUFPb29CO21EQXdCbkI7b0RBQUE7T0F4Qk4rQjt3REF3QnlCO2dDQVpoQnhCOztTQVREM2xCO0tBb0JrQnluQjtLQUFQL0U7S0FBVnNFO2tEQUVMO29CQWJLckIsTUFXQXFCO1lBQVV0RTtZQUFPK0U7aURBSzNCO1lBQ0NDLGVBQWtCMXFCLE9BQU9vb0I7a0RBQzNCLEtBRDJCQTtvREFFbkIsY0FGWXBvQjtRQUdWZ0QsS0FIaUJvbEIsUUFHeEJubEIsS0FId0JtbEI7a0RBSXpCLFNBRENubEI7b0RBSStCO3FEQUFBO1FBUGhDeW5CLGVBQWtCMXFCLE9BR1ZnRDtNQUlnQjJuQjtNQUFQQztNQUFWTjttREFDTDtpQkFMRHJuQixJQUlNcW5CO2FBQVVNO2FBQU9EOzttREFHZjtLQURGeDFCLElBTk44TjtvREFPUTtPQXZGVDhtQixlQTZFa0IvcEIsT0FTWDdLOztvREFFSyxjQVhNNkssT0FBT29vQjtRQVloQk87bURBQVM7O3FEQUFBOytCQUFUQTttREFFTDtNQURROXZCO3VEQUFLOytCQURSOHZCOztvREFFTCxPQURROXZCO3FEQUNKMHhCO1FBckdKZCxXQW9HUTV3QixPQVZKbUs7TUFZSTZuQixVQTlKWi9CLGVBNkpReUIsWUFESTF4QjttREFHUjtxQkFKSzh2QixNQUVENEI7YUFDSU07Ozs7O3NEQUdEOzhCQU5GbEM7OztvREFRK0I7TUFEN0JqRDtxREFDNkI7UUFqRHhDeUUsZUFnRFd6RSxTQWhCSDFpQjtNQWlCd0J5bkI7TUFBUEQ7TUFBZE07cURBQzZCO1FBckJ4Q0osZUFvQnlCRixTQUFPQztNQUNBTDtNQUFQQztNQUFkVTtvREFDTDs0REFBQzttQ0FWRXBDLE1BUUVtQyxlQUNBQzthQUFjVjthQUFPRDs7bURBSXhCO29EQUFBO09BekJSTTt3REF5QjJCO2dDQWJsQi9COztTQVREM2xCO0tBcUJvQmdvQjtLQUFQQztLQUFWakI7bURBRUw7b0JBZEdyQixNQVlFcUI7WUFBVWlCO1lBQU9EO2lEQU03QjtZQUNDdEIsV0FBYzFwQixPQUFPb29CO2tEQUN2QixLQUR1QkE7b0RBRWY7UUFDRXBsQixLQUhhb2xCLFFBR3BCbmxCLEtBSG9CbWxCO2tEQUlyQixTQURDbmxCO29EQUdhO2FBSGJBO2FBSER5bUIsV0FBYzFwQixPQUdOZ0Q7bURBS0M7S0FERjdOLElBSk44TjtvREFLUTtPQXBIVDhtQixlQTRHYy9wQixPQU9QN0s7O29EQUVLO2lCQUZMQTthQVBQdTBCOzhEQVN3QztzQ0FGakN2MEI7O2VBSkM2Tjs7S0FPQzJsQjs7c0RBQ0U7OEJBREZBOzs7b0RBS0U7aUJBTEZBO2FBVlRlOzhEQWV1QztzQ0FMOUJmOztlQVBEM2xCO21EQVU0QjtLQUR6QjBpQjtvREFDeUI7T0F6RXBDeUUsZUF3RVd6RSxTQVRIMWlCO0tBVW9CeW5CO0tBQVBEO0tBQVZSO29EQUMwQjtPQWRyQ04sV0FhcUJjLFNBQU9DO21EQUNTLHNEQUFBO2lDQUo1QjlCLE1BR0VxQjtpREFNWjtZQUNDa0IsZ0JBQW1CbHJCLE9BQU9vb0I7a0RBQzVCLEtBRDRCQTtvREFFcEIsY0FGYXBvQjtRQUdYZ0QsS0FIa0JvbEIsUUFHekJubEIsS0FIeUJtbEI7a0RBSTFCLFNBRENubEI7b0RBSStCO3FEQUFBO1FBUGhDaW9CLGdCQUFtQmxyQixPQUdYZ0Q7TUFJZ0JvbkI7TUFBUEM7TUFBVkM7bURBQ0w7aUJBTERybkIsSUFJTXFuQjthQUFVRDthQUFPRDs7bURBR2Y7S0FERmoxQixJQU5OOE47b0RBT1E7T0ExSVQ4bUIsZUFnSW1CL3BCLE9BU1o3Szs7b0RBRUssY0FYTzZLLE9BQU9vb0I7UUFZakJPO21EQUFTO3FEQUFBOytCQUFUQTtvREFNRSwrQ0FBQTsyQkFORkE7b0RBU0Q7cURBQUE7UUFyQlJ1Qzt5REFxQjRCO2lDQVRuQnZDOztVQVREM2xCO01BaUJvQnluQjtNQUFQL0U7TUFBVnNFO29EQUVMO3FCQVZHckIsTUFRRXFCO2FBQVV0RTthQUFPK0U7O2tEQU54QjtLQURRNXhCO3NEQUFLOzhCQURSOHZCOzttREFFTCxPQURROXZCO29EQUNKMHhCO09BeEpKZCxXQXVKUTV3QixPQVZKbUs7S0FZSXduQixVQWpOWjFCLGVBZ05ReUIsWUFESTF4QjtrREFHUjtvQkFKSzh2QixNQUVENEI7WUFDSUM7O2lEQVdiO1lBQ0NaLFlBQWU1cEIsT0FBT29vQjtrREFDeEIsS0FEd0JBO29EQUVoQjtRQUNFcGxCLEtBSGNvbEIsUUFHckJubEIsS0FIcUJtbEI7a0RBSXRCLFNBRENubEI7b0RBR2E7YUFIYkE7YUFIRDJtQixZQUFlNXBCLE9BR1BnRDttREFLQztLQURGN04sSUFKTjhOO29EQUtRO09BbktUOG1CLGVBMkplL3BCLE9BT1I3Szs7b0RBRUs7aUJBRkxBO2FBUFB5MEI7OERBU3lDO3NDQUZsQ3owQjs7ZUFKQzZOOztLQU9DMmxCOztzREFDRTs4QkFERkE7OztvREFLRTtpQkFMRkE7YUFWVGlCOzhEQWV3QztzQ0FML0JqQjs7ZUFQRDNsQjttREFVNEI7S0FEekIwaUI7b0RBQ3lCO09BeEhwQ3lFLGVBdUhXekUsU0FUSDFpQjtLQVVvQnluQjtLQUFQRDtLQUFWUjtvREFDMEI7T0FkckNKLFlBYXFCWSxTQUFPQzttREFDUyxzREFBQTtpQ0FKNUI5QixNQUdFcUI7aURBTVo7WUFDQ21CLGVBQWtCbnJCLE9BQU9vb0I7a0RBQzNCLEtBRDJCQTtvREFFbkIsY0FGWXBvQjtRQUdWZ0QsS0FIaUJvbEIsUUFHeEJubEIsS0FId0JtbEI7a0RBSXpCLFNBRENubEI7b0RBSStCO3FEQUFBO1FBUGhDa29CLGVBQWtCbnJCLE9BR1ZnRDtNQUlnQm9vQjtNQUFQQztNQUFWZjttREFDTDtpQkFMRHJuQixJQUlNcW5CO2FBQVVlO2FBQU9EOzttREFHZjtLQURGajJCLElBTk44TjtvREFPUTtPQXpMVDhtQixlQStLa0IvcEIsT0FTWDdLOztvREFFSyxjQVhNNkssT0FBT29vQjtRQVloQk87bURBQVM7cURBQUE7K0JBQVRBOzs7dURBTUU7K0JBTkZBOztNQW1CRWpEOzs7dURBUDZCO3dEQUFBO1dBMUh4Q2dGLGVBaUlXaEYsU0E1QkgxaUI7U0FxQndCb25CO1NBQVBDO1NBQWRVO3dEQUM2QjtXQXpCeENJLGVBd0J5QmQsU0FBT0Q7U0FDQVk7U0FBUEM7U0FBZEs7dURBQ0w7K0RBQUM7c0NBZEUzQyxNQVlFb0MsZUFDQU87Z0JBQWNMO2dCQUFPRDs7dURBR1E7d0RBQUE7V0EzSnhDYixlQThKV3pFLFNBNUJIMWlCO1NBeUJ3QjJuQjtTQUFQRTtTQUFkQzt3REFDNkI7V0E3QnhDSyxlQTRCeUJOLFNBQU9GO1NBQ0FZO1NBQVBYO1NBQWRZO3VEQUNMOytEQUFDO3NDQWxCRTdDLE1BZ0JFbUMsZUFDQVU7Z0JBQWNaO2dCQUFPVzs7dURBVFM7d0RBQUE7V0FuRXpDTCxnQkE4RVd4RixTQTVCSDFpQjtTQWlCeUJ5b0I7U0FBUEM7U0FBZkM7d0RBQzZCO1dBckJ4Q1IsZUFvQjBCTyxTQUFPRDtTQUNERztTQUFQQztTQUFkQzt1REFDTDsrREFBQztzQ0FWRW5ELE1BUUVnRCxnQkFDQUc7Z0JBQWNEO2dCQUFPRDs7dURBWTFCO3dCQXJCR2pEO2dCQW1CRWpEO2dCQTVCSDFpQjs7dURBaUNBO3dEQUFBO1dBcENSbW9COzREQW9DMkI7b0NBeEJsQnhDOzthQVREM2xCO1NBZ0NvQnluQjtTQUFQRDtTQUFWUjt1REFFTDt3QkF6QkdyQixNQXVCRXFCO2dCQUFVUTtnQkFBT0M7OztrREFyQnhCO0tBRFE1eEI7c0RBQUs7OEJBRFI4dkI7O21EQUVMLE9BRFE5dkI7b0RBQ0oweEI7T0F2TUpkLFdBc01RNXdCLE9BVkptSztLQVlJK29CLFVBaFFaakQsZUErUFF5QixZQURJMXhCO2tEQUdSO29CQUpLOHZCLE1BRUQ0QjtZQUNJd0I7O2lEQTBCYjtZQUNDbEMsV0FBYzdwQixPQUFPb29CO2tEQUN2QixLQUR1QkE7b0RBRWY7UUFDRXBsQixLQUhhb2xCLFFBR3BCbmxCLEtBSG9CbWxCO2tEQUlyQixTQURDbmxCO29EQUdhO2FBSGJBO2FBSEQ0bUIsV0FBYzdwQixPQUdOZ0Q7bURBS0M7S0FERjdOLElBSk44TjtvREFLUTtPQWpPVDhtQixlQXlOYy9wQixPQU9QN0s7O29EQWMyQjtxREFBQTtRQS9EbENnMkIsZUEwQ2NuckIsV0FHYmlELElBQU9EO01Ba0JrQmdvQjtNQUFQQztNQUFWWDttREFDTCxLQURLQTtxREFFRztrQkFoQkxuMUI7Y0FQUDAwQixXQXFCbUJvQixTQWxCWGpvQjtvREFxQnNCLCtDQUFBO2FBeEI5QjZtQixXQXFCbUJvQixTQUFPRDtvREFHSSxzREFBQTswQkFIckJWOzs7S0FaQTNCOztzREFDRTs4QkFERkE7OztLQUVFakQ7O29EQUl5QjtxREFBQTtRQTNKcENnRixlQXVKV2hGLFNBUkgxaUI7TUFZb0J5bkI7TUFBUEQ7TUFBVlI7cURBRTBCO1FBakJyQ0gsV0FlcUJXLFNBQU9DO29EQUVTLHNEQUFBO2tDQVI1QjlCLE1BTUVxQjs7O29EQUdBLHNEQUFBOzttREFOeUI7b0RBQUE7T0F0RHBDbUIsZUFxRFd6RixTQVJIMWlCO0tBU29Cb25CO0tBQVBDO0tBQVZFO29EQUMwQjtPQWJyQ1YsV0FZcUJRLFNBQU9EO21EQUNTLHNEQUFBO2lDQUo1QnpCLE1BR0U0QjtpREFnQlo7WUFDQ1QsV0FBYzlwQixPQUFPb29CO2tEQUN2QixLQUR1QkE7b0RBRWY7UUFDRXBsQixLQUhhb2xCLFFBR3BCbmxCLEtBSG9CbWxCO2tEQUlyQixTQURDbmxCO29EQUdhO2FBSGJBO2FBSEQ2bUIsV0FBYzlwQixPQUdOZ0Q7bURBS0M7S0FERjdOLElBSk44TjtvREFLUTtPQTlQVDhtQixlQXNQYy9wQixPQU9QN0s7O29EQUVLO2lCQUZMQTthQVBQMjBCOzhEQVN3QztzQ0FGakMzMEI7O2VBSkM2Tjs7S0FPQzJsQjs7c0RBQ0U7OEJBREZBOztLQVdFakQ7OztzREFSeUI7dURBQUE7VUF0THBDZ0YsZUE4TFdoRixTQWxCSDFpQjtRQVVvQnluQjtRQUFQRDtRQUFWUjt1REFDMEI7VUFkckNGLFdBYXFCVSxTQUFPQztzREFDUyxzREFBQTtvQ0FKNUI5QixNQUdFcUI7O3NEQU15Qjt1REFBQTtVQXpOcENHLGVBMk5XekUsU0FsQkgxaUI7UUFnQm9Cb25CO1FBQVBDO1FBQVZFO3VEQUMwQjtVQXBCckNULFdBbUJxQk8sU0FBT0Q7c0RBQ1Msc0RBQUE7b0NBVjVCekIsTUFTRTRCOztzREFIeUI7dURBQUE7VUF0SXBDVyxnQkEySVd4RixTQWxCSDFpQjtRQWFvQmdvQjtRQUFQQztRQUFWWDt1REFDMEI7VUFqQnJDUixXQWdCcUJtQixTQUFPRDtzREFDUyxzREFBQTtvQ0FQNUJyQyxNQU1FMkI7O3NEQUtzQjttQkFYeEIzQjtlQXZDVGtCLFdBa0RXbkUsU0FsQkgxaUI7O3NEQW1CRzttQkFaRjJsQjtlQVZUbUI7Z0VBc0J1Qzt3Q0FaOUJuQjs7aUJBUEQzbEI7O2lEQXVCVDtnQkFHMENvbEI7a0JBRTNCeGYsR0FBRzVOO29EQUFNLFdBQVQ0TixHQUFHNU47bURBQVk7a0RBRDdCLDhDQUFBOztxREFBQTt1REFDRzs7U0FGc0NvdEI7O29EQUcxQixJQUFLcHRCO29EQUFROzs0REFBQTtvQ0FBUkE7bURBQTZCO2tEQUZqRCw4Q0FBQTs7cURBQUE7dURBRUc7OztrREFGSCxxREFBQTs7a0RBR1U7aURBSlo7a0RBREVneEI7b0RBQ0Y7O21EQU9FaE07cURBQWtCOztZQUNsQkMsU0FBV21JO21EQUFPLCtDQUFjOztzREFBQTtTQURoQ3BJLGlCQUNXb0k7bUM7bURBQXFCLHNEQUFBOztrREFBcUI7a0RBTTNDLCtDQUFBO0lBQVI2RDtxREFBUTs7aUM7a0RBRUYsK0NBQUE7SUFBTkM7cURBQU07O1lBRU5DLE9BQVV0VjttREFBRDtLQUF1QjlUO0tBQUxxbUI7b0RBRWI7c0RBQUE7NEJBRmFBO0tBRXBCQztLQUFKQztrREFDTCxxREFBQTtrQ0FIWXpTLEdBRVB5UyxLQUFJRCxRQUZ5QnRtQjtpREFJbkM7WUFDR3FwQixPQUFVM3BCO21EQUFEO0tBQW1CTTtLQUFMcW1CO21EQUNKLHNEQUFBO2lDQURJQSxVQUFiM21CLEdBQWtCTTtrREFDRTtZQUU5QnVtQjttREFBSztLQUFFRjtvREFBK0M7c0RBQUE7MEJBQS9DQTttREFBK0Msc0RBQUE7O2tEQUFhO1lBR25FdG1CO21EQUFRO0tBQU9DO0tBQUxxbUI7b0RBQ0w7c0RBQUE7OEJBRFVybUI7O29EQUlDO01BRFhOO3FEQUNXO3VEQUFBOzZCQUpOMm1CO01BSURDO01BQUpDO3FEQUNFOztTQURGQTs7eURBQ087NkJBREhEOztvREFDc0Isc0RBQUE7cUNBRjFCNW1COzttREFEVSwrQ0FBQTs7O3VEQUFDOzJCQUZOMm1COzttREFFRixzREFBQTs7aURBS1g7WUFVT2lELG1CQUNDakQ7a0RBQ1AsS0FET0E7b0RBRUM7UUFFTEUsS0FKSUY7T0FJSkU7U0FEZUQsUUFIWEQsUUFHR2tELE9BQ1BoRCxPQURDelMsSUFDRHlTO29EQUR5QjtzREFBQTtrQ0FBeEJ6UztxREFBaUQsc0RBQUE7K0JBQTNDeVYsTUFBUWpEOzttREFDYztLQUF0QmtELFFBSkhuRDtvREFJeUI7T0FMMUJpRCxtQkFLSUU7bURBQXNCLHNEQUFBOzZCQUE3QmpEO2lEQUNGO1lBRUNrRCxVQUFjNXZCLEdBQWdCb0Q7bURBQWxCO0tBQTRDK0M7S0FBTHFtQjtvREFDakQzbUI7c0RBQUk7OEJBRHdCekM7bURBSzVCcXBCO09BTFl6c0IsSUFBcUN3c0IsTUFSL0NpRCxtQkFRK0NqRDttREFjM0MsT0E3Q1JnRDthQWdDRTNwQixPQUlBNG1CLE9BTHNEdG1CO2lEQWUzRDtZQUdHMHBCLFFBQVc3dkIsVUFBcUM4dkI7bURBQXRDO0tBQXFCN3pCO0tBQUgyRDtrREFDM0I7b0RBQUE7NkJBRDJCQSxHQUFHM0Q7bURBTzdCO01BTFFrSyxLQUZzQzJwQjtNQUUzQ3RELE1BRjJDc0Q7O2lCQVEzQ2pxQjt3REFBZSxHQUFmQSxRQVJNN0Y7eURBZ0JpQjtpRUFBSzs2Q0FSNUI2Rjt3REFTUTt1REFFUjtvREFiRGtxQjtzREFDRjtpQ0FMUTVwQjtxREF1Q2M7dURBQUE7MkJBdkNuQnFtQjtxREF1Q0RDOzt3REFBTzt1QkFuQ1BzRDs7bURBb0NKLHFEQUFBOzJCQURJdEQ7O21EQUdvQjtvREFBcEJ1RCxTQXZGSjlwQixNQTJDZ0Q0cEI7S0E0Q3hDRyxPQUFKRDtrREFDSixPQURRQztjQUFKRDtjQTlESkosVUFrQlc1dkIsR0FBaUJKLEdBNEN4Qm93QjtpREFLTDtZQUVDRSxPQUFVSjtrQkFFMkJqcUI7b0RBQUssZUFBTEE7bURBQXFCO21EQUFoRDtvREFBQTtzREFBQTs7bURBRFo7cURBQUE7dURBQ0c7O1NBRlNpcUI7a0RBQ1oscURBQUE7O2tEQUVjO2tEQXBISiwrQ0FBQTs7O09BSVJUO09BRUFDO09BRUFDO09BS0FDO09BR0E5QztPQUdBeG1CO09BaUJJdXBCO09BUUpHO09Ba0JBQztPQW1EQUs7WUFNRUMsaUJBQW1CM0U7bURBQVQ7S0FBS3Z2QjtLQUFIMkQ7b0RBQ0U7T0FJbEJ3d0IsaUJBTHVCNUUsS0FBSnZ2QjtLQUNQbUs7S0FBSG1GO0tBQU51a0I7b0RBQ0RPO3NEQUFPO3lCQUZPendCLEdBQ1AyTCxNQUFOdWtCO21EQUVMO3FEQUFBO21CQURJTztrREFDSixxREFBQTsrQkFGY2pxQjtpREFHZjtZQUNHZ3FCLGNBQ0Nwd0IsR0FBZ0Jtc0IsT0FBVWx3QjttREFBNkM7bURBMEJ0RTs7c0RBQUM7O1FBMUJ3QkE7UUFqaEIzQitvQjs7YUFpaEJDaGxCOzs7O3lEQXlCeUI7O21EQUF4QjtxREFBQSxnQkF6QmVtc0I7bURBRWpCO3FEQUFBO1NBaGhCQVY7a0JBaWhCR3J0Qjt3REFBRDtXQUF1QmdJO1dBQUhuSztXQUFONnpCO3lEQUFpQixPQUE5QjF4Qjs7NERBTUs7Y0FGRzdGLElBSlI2Rjs7cUJBSVE3Rjs7eUJBR0E4TixJQUNLRDtnRUFETTtpRUFFNkI7bUVBQUE7O2lFQUFuQzZiO29CQWxCWmtPOztzRUFrQm9DOzs7c0JBRjdCOXBCO2dFQUdDO3lCQURJNGI7eUJBREE3YjsrREFHTDs2REFORGlkOytEQUNGOzs2REFTRTVqQjt3QkFYQ2xILE1BQUFBLE1BQUFBLE1BQUFBLE1BQ0Q4cUI7NkRBWUY7K0RBQUE7c0NBYkc5cUI7O3NCQVBWeUg7Ozs7a0VBb0J1RDs7NkRBQWhEOytEQUFBOztjQURPdUw7Y0FBSjNMOzZEQUVEeXdCOytEQUFPOzJCQXJCaEJyd0IsT0FtQmN1TCxLQWhCT3RQLElBQU42ekI7NkRBbUJPOztpQkFKYnJ3QjtnRUFJb0I7NkJBRHBCNHdCOzZEQUNhOytEQUFBO29DQW5CRWpxQjs0REFtQm5COztxQkFIS3hHOzs7NERBYm9CO2NBQW5CaUcsSUFIVHpIOzZEQUc0QjsrREFBQTsyQkFBbkJ5SCxHQUhJaXFCOzREQUdFO29FQUFNOztxQkFIRjd6QjtxQkFBR21LOztpQkFFVDZULElBRmI3Yjs0REFFbUI7b0VBQUM7Z0NBQVA2YixHQUZBNlY7cUJBQU03ekI7cUJBQUdtSzs7dURBcUJ0Qjs7O0tBdkJTa3FCO0tBQUg3M0I7S0FBTnEzQjthQURGOXZCO29EQTRCMkM7YUEzQnpDOHZCO2FBQU1yM0I7YUFBRzYzQjttREEyQmtCLCtDQUFBOztzREFBQSxXQXppQjlCdHBCLEtBOGdCWXNwQjttREEyQkY7MkRBQUM7dUJBM0JSUjtZQUFNcjNCOztpREE0Qlo7WUFVRzgzQixrQkFBcUJyM0I7aUJBSXJCa0Y7bURBRkEsU0FFQUE7VUFEYTdGLElBQ2I2RjtxREFEcUI7dURBQUEsV0FBUjdGLE1BSFFXO3NEQUdjLFdBQXRCWDs7b0RBQ04sV0FBUDZGO21EQUFXO2tEQUZYLHFEQUFBOztpREFHRDtZQUdLeWxCLFdBQWMySDtrREFDcEIsOENBQU87O3FEQUFBO1NBbGpCTEksa0JBaWpCa0JKOytEQUVaLE9BRllBO21EQUlEO0tBRGhCanpCO29EQUNnQjtzREFBQTtTQVpqQmc0QixrQkFXQ2g0QixPQUhpQml6QjtvREFJWDtzREFBQTs7aUVBQ0csT0FMUUE7bURBT1I7O0tBRFlnRjtLQUFkQztvREFDRjFFO3NEQUFJOztvREFDSjFJO3NEQUFXOzBCQVJiUSxZQU9Fa0k7b0RBRUEzdEI7c0RBQUk7aUNBRkoydEIsUUFBQUEsUUFBQUEsUUFBQUEsUUFDQTFJO29EQUVJO1dBREpqbEIsR0FURnlsQixXQU1rQjJNO21EQUlaLHNEQUFBO3lCQUpGQztpREFNVDtZQUVDQyxPQUNEQyxRQUFRM3dCLEdBQUc0d0I7bURBQU8sS0FBVjV3QjtvREFFRyxzREFBQTtjQUZYMndCLFFBQVdDO21EQUdDLCtDQUFBOztzREFBQTtTQUhaRDt3REFHWTsyQkFIREM7bURBR0Msc0RBQUE7O2lEQUVaO1lBRUNDLGVBQ0Q3d0IsR0FBRzR3QjttREFBTyxTQUVERCxPQUFTRzttREFDZixJQURlQyxPQUFBRDttREFDZjtXQURlQyxxREFFUDtlQUZPQTtzREFJQSxPQUpBQTtVQUFBQyxPQUFBRCxTQUFBQSxPQUFBQzs7a0RBS2Q7a0RBQ0gsT0FqQkFOLE9BV1FDLFFBRlQzd0IsR0FBRzR3QjtpREFTSDtZQUVDSyxXQUNEanhCLEdBQUc0d0I7bURBQU8sU0FFREQsT0FDTkc7bURBQ0UsSUFERkMsT0FBQUQ7bURBQ0U7V0FERkMscURBRVU7ZUFGVkE7c0RBSWlCLE9BSmpCQTtVQUFBQyxPQUFBRCxTQUFBQSxPQUFBQzs7a0RBS0c7a0RBQ0wsT0E5QkFOLE9BdUJRQyxRQUZUM3dCLEdBQUc0d0I7aURBVUg7WUFFQ00seUJBQ0RseEIsR0FBRzR3QjttREFBTyxTQUdERCxPQUNORzttREFDRSxJQURGQyxPQUFBRDttREFDRTtXQURGQyxxREFFVTtlQUZWQTtzREFJaUIsT0FKakJBO1VBQUFDLE9BQUFELFNBQUFBLE9BQUFDOztrREFLRztrREFDTCxPQTVDQU4sT0FxQ1FDLFFBSFQzd0IsR0FBRzR3QjtpREFXSDtZQUVDTyw0QkFDRG54QixHQUFHNHdCO21EQUFPLFNBR0RELE9BQ05HO21EQUNFLElBREZDLE9BQUFEO21EQUNFO1dBREZDLHFEQUVVO2tCQUZWQTs7O3dEQUtpQixPQUxqQkE7O2FBQUFDLE9BQUFELFNBQUFBLE9BQUFDOzthQUdzQkksT0FIdEJMLFNBR2U5Vzt3REFBYztxQkFBZEE7aUJBSlQwVyxPQUlnQlM7OztrREFHbkI7a0RBQ0wsT0EzREFWLE9BbURRQyxRQUhUM3dCLEdBQUc0d0I7aURBWUg7WUFFQ1MsY0FBaUJyeEIsR0FBZ0I0d0I7bURBQStCO29EQUM5RFU7T0F2REZULGVBc0RpQjd3QixHQUFnQjR3QjtvREFFeEI7c0RBQUE7NEJBRFBVO29EQUNpQztzREFBQTs0QkFEakNBO09BRGV0eEI7O3FEQUdNO09BQVA1QjtzREFBTzt3REFBQTtnQ0FBUEE7c0M7cURBQU8sc0RBQUE7OERBQXFCOzs7Ozs7b0RBQ3RCO01BQVZxQjtxREFBVTt1REFBQTsrQkFBVkE7cUM7b0RBQVUsc0RBQUE7NkRBQXFCOzs7O2tEQUN0QztpREFFUjtZQUVHOHhCLGtCQUFxQnZ4QixHQUFnQjR3QjtrREFDdkM7b0RBQWtDLE1BVmhDUyxjQVNxQnJ4QixHQUFnQjR3QjtvREFDNUI7c0RBQUE7K0JBRFk1d0I7bURBQ1csc0RBQUE7O2tEQUFxQjtZQUVqRHd4QixVQUFhaEc7aUJBSWRwdEI7bURBREE7Y0FDQUE7VUFHTzdGLElBSFA2RixZQUdPN0Y7O3FEQUlDO3NEQUFBO3dEQUFBOytCQUpEQSxNQUFBQSxNQUFBQSxNQUFBQTtzREFDQytxQjt3REFDRjs7c0RBSUVEO3dEQUFXOzRCQWJsQm1PLFdBT01qNUI7c0RBT0g7d0RBQUE7d0JBTkkrcUIsUUFLQUQ7c0M7O2tCQUVRNXFCO3lEQUFLLFdBQUxBO3dEQUFRO3NEQURwQjt3REFBQTswREFDRzs7O3FEQURILHNEQUFBOzs7b0RBVitELFdBQW5FMkY7bURBYUc7a0RBaEJSLHFEQUFBOzJEQUNHOzthQUZnQm90QjtpREFrQmY7O2tEQUlGO29EQUVPO1FBRFd2UjttREFBTzs7MkRBQUE7dUNBQVBBO2tEQUNOO2lEQUhkLDhDQUFBO0lBREV3WDtvREFDRjs7WUFNRUMsZUFBa0IxcEIsTUFBY3dqQjttREFBZ0MsK0NBQzFEO0tBQUpwdEI7c0RBQUk7eUJBRDBCb3RCO2tEQUVsQyxTQUFRYSxHQUFNcmtCLE1BQWNvbkI7b0RBQTRDO3FEQUNsRTV3Qjt1REFBTzs4QkFEZTR3QjtvREFHeEI7c0RBQUE7d0JBRkU1d0I7O3FEQUdpQjtPQUFZbXpCO09BQUxDO09BQUxDO3NEQUNlO3dEQUFBLFdBTnBDenpCLEdBS3FCeXpCO09BQ1JDO3dEQUFPOzs7c0RBQ2dCO3dEQUFBLFdBUHBDMXpCLEdBSytCdXpCO09BRXJCSTt3REFBVTs7O09BQ1h0NUIsSUFGSXE1QixRQUNIQyxNQURHRDtxREFHUixPQVJEekYsR0FPSzV6QixHQUhpQm01QjtvREFLdEI7bURBTko7b0RBREVJO3NEQUNGO3dEQUNHOzs7cURBT0NDO3VEQUFLO3dCQVZQenpCO3FEQVdnQzt1REFBQTtVQWJsQ0o7eURBYW9DO3lCQVhsQ0k7TUFXRzB6Qjt1REFBYTs7O3FEQUNnQjt1REFBQTtVQWRsQzl6Qjt5REFjb0M7eUJBWmxDSTtNQVlNMnpCO3VEQUFVOzs7bURBQ2xCLE9BZHdCL0M7O1lBVXRCZ0Qsd0JBQ0VILElBWE1qcUI7O3VEQWdCb0I7U0FBckIvTCxJQWhCZW16Qjt3REFnQk0sTUFoQjFCL0MsR0FhSThGLFFBR0NsMkI7U0FOUG0yQjswREFNYTtpQ0FMWEgsSUFYTWpxQjs7O3VEQWlCTTtTQUFUcEksSUFqQmlCd3ZCO3dEQWlCUixNQWpCWi9DLEdBWUM2RixRQUtFdHlCO1NBUEx3eUI7MERBT2M7c0NBTlpILElBWE1qcUI7Ozt1REFrQnVDO1NBQXJDdUQsTUFsQlk2akI7U0FrQmxCOWpCLE1BbEJrQjhqQjt3REFrQnlCLE1BbEI3Qy9DLEdBYUk4RixRQUtJNW1CO3dEQUFzQjswREFBQTtpQ0FQOUIwbUIsSUFYTWpxQjt3REFrQlEsTUFsQmRxa0IsR0FZQzZGLFFBTUM1bUI7U0FSSjhtQjswREFRZ0I7OzttREFHcEIscURBQUE7MEJBWElBLGVBUkFKO2tEQW9CTDtrREFDRCw4Q0FBQTs7T0F2QlEzRjtTQUZZcmtCO3dEQXlCWCxXQW5VUG9uQixNQTBTZ0M1RDs7b0RBMEJmO01BQU0veUI7TUFBSnc1QjtrQkFBb0I1dUI7cURBQUssV0FBTEEsR0FBaEI1SztvREFBMkI7b0RBQXBCLHNEQUFBO29DQUFYdzVCO21EQUFvQztrREFEekQscURBQUE7MkRBQ0c7OztpREFDSjtZQUVPSSxNQUFTQzs7bURBRWI7O1lBRU8vNUI7dURBQU0sc0RBQUE7a0NBSlQ4NUIsT0FJRzk1Qjs7WUFDQ3NOO3VEQUFNLFdBQU5BOytEQUZnQjs7bURBRVA7a0RBSm5CLHFEQUFBO21DQURleXNCO2lEQU9kOztrREFJQztvREFFTztRQURNLzVCO21EQUFNLE9BQU5BO2tEQUNKO2lEQUhYLDhDQUFBO0lBREVnNkI7b0RBQ0Y7O1lBTU1DLG1CQUFzQmhIOzttREFFMUI7cURBS087b0RBSE87TUFERGp6QjtxREFDTHFEO3VEQUFNOzJCQUpWNDJCLG9CQUdTajZCOzBEQUVUO21DQUZTQTtlQUNMcUQ7bUJBREtyRCxNQUNMcUQ7bURBR0M7a0RBTlgscURBQUE7bUNBRDRCNHZCO2lEQVMzQjtZQUVDaUgsK0JBQTJDakg7a0RBQzdDLDhDQUFBOztxREFBQTtTQW5CRStHLGVBa0IyQy9HO2tEQUM3QyxPQVpNZ0g7MkRBWU47O2tEQUF1RDs7Ozs7T0EvdUJ6RHg1QjtPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQUVJc3NCO09BQ0Fqb0I7T0FDQUM7T0FDQXl1QjtPQUNBemtCO09BRUEwa0I7T0FFQTdmO09BT0ErZjtPQU1BRDtPQU9BRTtPQU9BQztPQU9BRTtPQU9BQztPQUlBQztPQXNCQTlvQjtPQUVJdXBCO09BeUJKQztPQU9JQztPQVVKTTtPQWtDQUo7T0FjQVE7T0E2QkFPO09BK0JBaEI7T0FvQkF3QjtPQTJCQXRCO09Bb0JBdUI7T0EwQ0F0QjtPQTZCQUM7T0E0QkFrQztPQVFBaE07T0FDQUM7O09BeUhJOE07T0FLSkM7T0F3Q0FHO09BUUkxTTtPQWNKNk07T0FRQUc7T0FZQUk7T0FhQUM7T0FjQUM7T0FlQUU7T0FTQUU7T0FHSUM7T0FvQkpDO09BT0FDO09BNkJJVztPQVNKRTtPQU9JQztPQVdKQzs7O2E7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDNXVCSnRyQjtJQUFBOU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFEQVc7SUFBQUc7WUFBQWtIO2tEQUFBO2tEQUMrQjtZQUQvQnZCO2tEQUFBO2tEQUMrQjs7S0FEL0I5RjtjQUNBc0M7b0RBQUE7T0FEQThMO09BQUFySTtvREFDUyw4Q0FBQTs0QkFBVHpEO29EQURBLDhDQUFBO3NEQUFBLFdBQUF3RCxPQUNBeEQ7UUFEQXlEO29EQUNTLDhDQUFBOzRCQUFUekQ7b0RBREEsOENBQUE7c0RBQUEsV0FBQStFLE9BQ0EvRTtRQURBOEw7b0RBQUEscURBQUE7bUNBQ0E5TDtvREFBK0I7O0tBRC9CbkM7Y0FDQW9EO29EQUFBLHFEQUFBO3dDQURBdkQsSUFDQXVEO29EQUErQjtpREFBL0IsU0FBQS9ELFVBQVN3TDtrREFBVCxTQUFTQTtlQUFBQTs7OztxREFBQTtRQUFBcUQ7UUFBQUM7c0RBQUFDO3dEQUFBO2tDQUFBRDtzREFBQUU7d0RBQUE7a0NBQUFIO3FEQUFBO2VBQUFFO2VBQUFDOzs7O2tEQUFBLHFEQUFBOzBDQUFUTCxxQkFBU25EO2tEQUFzQjtZQUEvQjFMO2tEQUFBO0tBQVNtUDtLQUFBdEk7S0FBQXVJLDRDQUFBdkk7S0FBQXdJLDRDQUFBRjttQkFBQUMsY0FBQUM7a0RBQXNCO2lEQUEvQixTQUFBaFAsWUFBU3dCO2tEQUFUO2FBQVNBLHFDQUFBQTtlQUFBQTs7Ozs7UUFBQUM7UUFBQUM7UUFBQUMsd0NBQUFEO1FBQUFFLHdDQUFBSDtrQkFBQUUsTUFBQUM7Ozs7eURBQVRsQyxXQUFTOEI7a0RBQXNCO1lBQS9CekI7a0RBQUE7S0FBUzBCO0tBQUFDO0tBQUFDLHdDQUFBRDtLQUFBRSx3Q0FBQUg7OEJBQUFFLFVBQUFDO2tEQUFzQjtrREFFWCwrQ0FBQTtJQUFoQnlxQjtZQUVBME4sWUFBeUJqNkI7b0RBQUssdURBQUE7YUFBTEEsR0FGekJ1c0I7bURBRXdDO21EQUFmLGdEQUFBO0lBRXpCMk47WUFDQUMsSUFBUWhPO29EQUFGO0tBQTJCaU87S0FBTEM7bURBQzlCLEdBRFVsTztTQUFJQyxNQUFKRCxRQUFBbU8sTUFBSWxPOztTQUFKa087b0RBQ0ssdURBQUE7d0NBRGVELFNBQXBCQyxTQUF5QkY7bURBQ0o7WUFFN0JHLFFBQVdoekIsR0FBZ0J3ckI7b0RBQWpCO0tBQXFDdnZCO0tBQUgyRDttREFDOUMsT0FEYUk7O2NBQWlDSjs4REFHL0I7NEJBSGM0ckIsS0FBb0J2dkI7OzhEQUV0Qzs0QkFGbUMyRCxHQUFqQjRyQjtjQUFvQnZ2QjtrREFJaEQ7WUFFQ2UsT0FBVWkyQjttREFDWjtvREFBQTtzREFBQTswQkFEWUE7b0RBQ1o7c0RBQUE7d0RBRUc7OztvREFGSDtzREFBQTt3REFHRzs7O21EQUhILHNEQUFBOzREQUlHOzs7bURBQTZCO1lBUzlCcEcsT0FBVXFHLE1BQXFCejZCO29EQUF0QjtLQUFFcTZCLE1BQURJO3FEQUNHLE1BeEJiTixPQXVCVU07b0RBQ1o7c0RBQUE7d0NBRGlDejZCO21EQUNqQyxzREFBQTs2REFBZ0M7ZUF6QjlCazZCOytEQXlCb0M7aUNBRHpCRzs7bURBQzBDO1lBRXJEaHRCO29EQUFTO0tBQU8rc0I7S0FBTEM7cURBQ1RyNkI7dURBQUk7O0tBQ0FtSDt1REFBUTtvQ0FGSGt6QixLQUNUcjZCOztLQUVJd0Q7dURBQVE7b0NBSEU0MkIsS0FDZHA2Qjs7bURBR0osV0FGUW1ILEdBQ0EzRDtrREFFVDtZQUVHazNCO29EQUFjO0tBQUtsM0I7S0FBSDJEO3FEQUtmd3pCO3VEQUhLO21DQUZhbjNCO3FEQUtkNm5CO3VEQUhpQzttQ0FGdEJsa0I7T0FLZnd6QixNQUFJdFA7cURBQU8sdURBQUE7Y0FBWHNQLElBQUl0UDtvREFEUTtrREFHaEI7WUFFR2dJLGtCQUFxQnZ6QjtvREFBRDtLQUFrQnM2QjtLQUFMQztxREFDMUI7dURBQUE7Z0NBRGN2NkIsR0FBWXU2QjtvREFDMUI7O2dEQURjdjZCLEdBQWlCczZCO21EQUN3QjtZQUU5RFEsS0FBUUMsTUFBbUJsMUI7b0RBQXBCO0tBQXNDeTBCO0tBQUxDO21EQUMxQyxPQURVUTtrQkFBZ0NSLFNBQWIxMEIsR0FBa0J5MEI7OzhEQUVwQzs0QkFGK0JDLFNBQWIxMEI7Y0FBa0J5MEI7a0RBSTlDO1lBRUNVLElBQU9DO29EQUFEO0tBQTBCWDtLQUFMQzttREFDN0IsR0FEU1U7b0RBU1A7cURBQUE7dURBQUE7NkJBVGdDWDs7O3lEQVVsQjtVQUFLQTtVQUFIejBCOzBEQUNLOzREQUFBO21DQURMQTtVQUNIcTFCO1VBQUhoMEI7d0RBQ0w7aUJBREtBOztrQkFYaUJxekI7a0VBWVo7Z0NBREZXLE9BRE1aO3VEQUdmO29EQUpKLHNEQUFBOzZEQUNHOzs7O21EQVBILCtDQUFBOztzREFBQTs0QkFIMkJDOztxREFJYjtNQUFPMTBCO01BQUwwMEI7c0RBQ0s7d0RBQUE7K0JBREExMEI7TUFDTHFCO01BQU5pMEI7b0RBQ0w7YUFEV2owQjs7OERBQ047NEJBRk1xekIsS0FDTlk7Y0FMc0JiO21EQU81QjttREFKSixzREFBQTs0REFDRzs7O2tEQVVKO21EQUVvQixnREFBQTtJQUFuQmpIO3NEQUFtQjs7WUFFbkIyRSxrQkFBb0JyM0I7b0RBQU0sZ0RBQWU7O3VEQUFBO2dDQUFyQkE7b0RBQXFCLHVEQUFBOzttREFBOEI7bURBRTFELGdEQUFBO0lBQWIycUI7c0RBQWE7O1lBRWJnTTtvREFBVTtLQUFPZ0Q7S0FBTEM7cURBQ1ZyNkI7dURBQUk7O3FEQUNKZzdCO3VEQUFNO21DQUZTWixLQUNmcDZCO3FEQUVxQjt1REFBQTttQ0FIWHE2QixLQUNWcjZCO0tBRWNpN0I7S0FBTDVCO0tBQVJuQjttREFDTDtnQkFEa0IrQyxPQUFMNUIsS0FBUm5CO1lBREQ4QztrREFHTDtZQUVHRTtvREFBc0MsSUFBRS96QjtvREFBVSx1REFBQTtnQ0FBVkE7bURBQThCO1lBRXRFZzBCO29EQUF1QyxJQUFLMzNCO29EQUFPLHVEQUFBO2dDQUFQQTttREFBeUI7WUFFckU0M0IsVUFDRnh3QjttREFBSyxnREFBbUI7V0FIdEJ1d0IsZUFHRnZ3QjttREFBSztZQUxIc3dCLGNBS0Z0d0I7O21EQUEwQztZQUV4Q3d0QjtxREFBaUI7S0FBVWlEO0tBQVJDO3FEQUVyQjt1REFBQTttQ0FGNkJEO3FEQUFlOzREQUM1Qzt3Q0FEcUJDOzttREFHdEI7WUFFRzlDO3FEQUFhO0tBQVU2QztLQUFSQztxREFFakI7dURBQUE7bUNBRnlCRDtxREFBZTs0REFDeEM7d0NBRGlCQzs7bURBR2xCO1lBRUc3QztxREFBMkI7S0FBVTRDO0tBQVJDO3FEQUUvQjt1REFBQTttQ0FGdUNEO3FEQUFlOzREQUN0RDt3Q0FEK0JDOzttREFHaEM7WUFFR0M7cURBQW9CO0tBQUsvM0I7S0FBSDJEO3FEQUl4Qkk7dURBRk87bUNBRm9CL0Q7V0FJM0IrRDtjQUFBQTsrREFEVTt5Q0FIY0o7bURBS3ZCO1lBRUNxMEIscUJBQXdCanNCLE1BQWM1SixHQUFpQjgwQjtvREFDekQsZ0RBQU87YUFSTGMsa0JBT3VEZDs7c0RBRy9DLHdEQUFBO2lDQUhnQmxyQjtRQUVuQmhJO3FEQUFNLHdEQUFBO2lDQUZhZ0ksTUFBYzVKLEdBRWpDNEI7bURBRU47b0RBRW1CO3FEQUFsQm9qQjt1REFBa0I7Ozs7T0EzSHRCcHFCO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BRUlzc0I7T0FFQTBOO09BRUFDO09BQ0FDO09BR0FJO09BTUFoMkI7T0FjQTZ2QjtPQUdBL21CO09BT0FxdEI7T0FTQXJIO09BR0F1SDtPQU1BRTtPQWdCQTNIO09BRUEyRTtPQUVBMU07T0FFQWdNO09BT0E4RDtPQUVBQztPQUVBQztPQUdBaEQ7T0FLQUk7T0FLQUM7T0FLQThDO09BT0FDO09BTUE3UTs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7a0RDN0hNOzs7SUFNVjhRO0lBQUE3N0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttREFOVTs7WUFFVjg3QixRQUNBNzRCO21EQUFZLHNEQUFBO2lDQUFaQTtrREFBZTtZQURmODRCLFVBQ0E3M0I7a0RBQUEscURBQUE7c0NBREE0M0IsU0FDQTUzQjtrREFBZTtpREFBZjtrREFBQTgzQjs7SUFBQUM7SUFBQUM7SUFBQUM7SUFFQXg3QjtJQUFBRztZQUFBbXNCO2tEQUFBO2tEQU9DO1lBUER4SztrREFBQTtrREFPQztZQVBENVM7a0RBQUE7a0RBT0M7WUFQRDdIO2tEQUFBO2tEQU9DO1lBUER2QjtrREFBQTtrREFPQzs7S0FQRDlGO2NBQ0FzQyxLQUFBaUI7cURBQUEsK0NBQUE7NEJBQUFqQjtxREFBQSwrQ0FBQTs0QkFBQUE7aUJBQUFpQjtxREFBQSwrQ0FBQTtzREFEQSxXQUFBdUMsT0FDQXhEOztxREFBQSwrQ0FBQTs0QkFBQUE7cURBQUEsK0NBQUE7NEJBQUFBO3FEQUFBLCtDQUFBOzRCQUFBQTtpQkFBQWlCO3FEQUFBLCtDQUFBO3NEQURBLFdBQUE4RCxPQUNBL0U7O3FEQUFBLCtDQUFBOzRCQUFBQTtxREFBQSwrQ0FBQTs0QkFBQUE7cURBQUEsK0NBQUE7NEJBQUFBO2lCQUFBaUI7cURBQUEsK0NBQUE7c0RBREEsV0FBQTJMLE9BQ0E1TTs7cURBQUEsK0NBQUE7NEJBQUFBO3FEQUFBLCtDQUFBOzRCQUFBQTtxREFBQSwrQ0FBQTs0QkFBQUE7aUJBQUFpQjtxREFBQTt5REFJVTtVQUxWNks7VUFBQXJJO3lEQUtVLGdEQUFBOytCQUpWekQ7dURBREEsVUFLV2lCOzREQUFBLGdEQUFBO2tDQUpYakI7OzBCQUlXdUwsS0FBQXRLOzZEQUFBLEdBQUFzSzs4REFBQSxnREFBQTtvQ0FKWHZMOzZEQUlXLGdEQUFBOytEQUFLO3FDQUpoQkE7ZUFJV2lCOzZEQUFBOzREQUFTOzREQUFULGdEQUFBOzJDQUFBQTs0REFBQSx1REFBQTt5Q0FKWGpCOzJEQUlvQjtZQUxwQnlEO3lEQUtVLGdEQUFBOytCQUpWekQ7dURBREEsVUFLc0JpQjs0REFBQSxnREFBQTtrQ0FKdEJqQjs7MEJBSXNCdUwsS0FBQXRLOzZEQUFBLEdBQUFzSzs4REFBQSxnREFBQTtvQ0FKdEJ2TDs2REFJc0IsZ0RBQUE7K0RBQUs7cUNBSjNCQTtlQUlzQmlCOzZEQUFBOzREQUFTOzREQUFULGdEQUFBOzJDQUFBQTs0REFBQSx1REFBQTt5Q0FKdEJqQjsyREFJK0I7WUFML0I4TDt1REFBQSxxREFBQTtzQ0FDQTlMO3dEQUlnQzs7cURBSmhDLCtDQUFBOzRCQUFBQTtxREFBQSwrQ0FBQTs0QkFBQUE7cURBQUEsK0NBQUE7NEJBQUFBO2lCQUFBaUI7cURBQUE7eURBS1k7VUFOWjZLO1VBQUFySTt5REFNWSxnREFBQTsrQkFMWnpEO3VEQURBLFVBTWFpQjs0REFBQSxnREFBQTtrQ0FMYmpCOzswQkFLYXVMLEtBQUF0Szs2REFBQSxHQUFBc0s7OERBQUEsZ0RBQUE7b0NBTGJ2TDs2REFLYSxnREFBQTs2REFOYjtpQkFBQXdmLE9BQ0F4ZjtlQUthaUI7NkRBQUE7NERBQWU7NERBQWYsZ0RBQUE7MkNBQUFBOzREQUFBLHVEQUFBO3lDQUxiakI7MkRBSzRCO1lBTjVCeUQ7eURBTVksZ0RBQUE7K0JBTFp6RDt1REFEQSxVQU04QmlCOzREQUFBLGdEQUFBO2tDQUw5QmpCOzswQkFLOEJ1TCxLQUFBdEs7NkRBQUEsR0FBQXNLOzhEQUFBLGdEQUFBO29DQUw5QnZMOzZEQUs4QixnREFBQTs2REFOOUI7aUJBQUFncUIsT0FDQWhxQjtlQUs4QmlCOzZEQUFBOzREQUFlOzREQUFmLGdEQUFBOzJDQUFBQTs0REFBQSx1REFBQTt5Q0FMOUJqQjsyREFLNkM7WUFON0M4TDt1REFBQSxxREFBQTtzQ0FDQTlMO3dEQUs4Qzs7cURBTDlDLCtDQUFBOzRCQUFBQTtxREFBQSxzREFBQTttQ0FBQUE7b0RBTUM7O0tBUERuQztjQUNBb0Q7cURBQUEsc0RBQUE7d0NBREF2RCxJQUNBdUQ7b0RBTUM7a0RBTkQsU0FBQS9ELFVBQUFpOEI7bURBQUEsU0FBQUE7b0RBQUEsc0RBQUE7NENBQUFQLGtCQUFBTzttREFBQTtLQUFBQyxrQkFBQUQ7b0RBQ0VFO29EQUNBQztvREFDQUM7b0RBQ0FDO29EQUNBQztvREFMRkM7b0RBQUFDO2FBQUFDO29EQUFBO29EQUFBO21FQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTs2REFBQTtrQkFBQUo7OERBQUEsc0RBQUE7c0RBQUFsQixrQkFBQU87aUJBQUFXOzhEQUFBLHFEQUFBOztrQkFBQUssUUFBQUw7NkRBQUEsT0FBQUs7NERBTUM7b0JBTkREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7O2VBQUFKLG1CQUFBSSxnQkFBQUo7O3FCQUlFSDtjQUpGRSx3QkFBQUssZ0JBQUFMOzs2REFJRSwrQ0FBQTtlQUpGVSxtQkFBQUY7Ozs4REFJRTt1QkFKRkU7MkJBQUFBOzs7O2tFQUlVO21CQUFBdlA7bUJBQUFDO21FQUFBdVA7cUVBQUE7eURBQUF2UDttRUFBQXdQO3FFQUFBO3lEQUFBelA7bUVBQUE7eUJBQUF3UCxVQUFBQzttQkFBUkM7Ozs7OztnQkFBQUE7a0VBQVE7O29CQUpWM0I7O29CQUFBd0I7O2NBSUVaLG9CQUFBZTs7b0JBREFoQjthQUhGRyx3QkFBQUssZ0JBQUFMOzs0REFHRTs2REFIRmM7aUJBQUFOOzZEQUdFMWtCOytEQUFBO3FDQUhGZ2xCO2FBR0VqQixrQkFBQS9qQjs7bUJBREE4akI7WUFGRkksd0JBQUFLLGdCQUFBTDs7MkRBRUU7NERBRkZlLG1CQUFBUDs0REFFRXRrQjs4REFBQTtxQ0FGRjZrQjtZQUVFbkIsbUJBQUExakI7O2tCQURBeWpCO1dBREZLLHdCQUFBSyxnQkFBQUw7OzBEQUNFOzJEQURGZ0IsbUJBQUFSOzJEQUNFeGtCOzZEQUFBO2lDQURGZ2xCO1dBQ0VyQixnQkFBQTNqQjs7aUJBSUErakI7VUFMRkMsd0JBQUFLLGdCQUFBTDs7eURBS0UsK0NBQUE7V0FMRmlCLG1CQUFBVDs7OzBEQUtFO21CQUxGUzt1QkFBQUE7Ozs7OERBS1k7ZUFBQWxRO2VBQUF6SzsrREFBQTVEO2lFQUFBOzBEQUFBNEQ7K0RBQUEwSztpRUFBQTswREFBQUQ7K0RBQUE7cUJBQUFyTyxVQUFBc087ZUFBVmtROzs7Ozs7WUFBQUE7OERBQVU7O2dCQUxaaEM7O2dCQUFBK0I7O1VBS0VsQixzQkFBQW1COzt1QkFMRlo7Ozs7O3FEQUFBLHNEQUFBOzZDQUFBcEIsa0JBQUFpQjs7bURBTUM7bURBTkRELFNBQUFSO09BQUFNO29EQUFBLHNEQUFBOztjQUFBZDtjQUFBYztjQUFBUDtPQUFBUTtvREFBQSxzREFBQTs7Y0FBQWY7Y0FBQWU7Y0FBQVI7O1lBQ0VFO1lBQ0FDO1lBQ0FDO1lBQ0FDO2FBQ0FDOzs7TUFBQW9CO01BREFDO01BREFDO01BREFDO01BREFDO29EQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEOzttREFMRixzREFBQTs7YUFBQWpDO2FBQUFPOzt3QkFDRUU7O3lCQUNBQzs7MEJBQ0FDOzsyQkFDQUM7K0JBQ0FDO2tEQUNEO1lBTkR6OEI7bURBQUE7S0FLRWsrQjtLQURBQztLQURBQztLQURBQztLQURBQztvREFJVUMsV0FBVkw7S0FBVXZZLFdBQVZ1WTtLQUFVTSw2REFBQTdZO0tBQUE4WSw2REFBQUY7S0FBVkcsa0JBQVVGLGNBQUFDO29EQUxaRTs0QkFLRUQ7b0RBRFFFLFdBQVJUO0tBQVFVLFdBQVJWO0tBQVFXLHdEQUFBRDtLQUFBRSx3REFBQUg7S0FBUkksa0JBQVFGLGNBQUFDO29EQUpWRTs0QkFJRUQsZUFKRkw7b0RBR0U1ZDtzREFBQTs0QkFBQXFkO29EQUhGYzs0QkFHRW5lLGVBSEZrZTtvREFFRWhlO3NEQUFBOzZCQUFBb2Q7b0RBRkZjOzRCQUVFbGUsZUFGRmllO29EQUNFRTtzREFBQTswQkFBQWQ7b0RBREZlOzRCQUNFRCxlQURGRDttREFBQSxXQUFBRTtrREFNQztrREFORCxTQUFBaC9CLFlBQUF3QjtlLFVBQUFBLHFDQUFBQTtvREFDRTtNQURGOEgsZ0JBQUE5SDtxREFDRXVMO3FEQUNBcU07cURBQ0FFO3FEQUNBdU47cURBQ0FDO3FEQUxGcmQ7cURBQUFDO01BQUFDOzt3REFBQTt3REFBQTt1RUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7OERBQUE7Z0VBQUE7O2dCQUFBSjs7a0JBQUFJO2lFQUFBOzRDQUFBSjs7OytEQUlFOzBDQUFBbWQ7ZUFKRnBkOztpQkFBQUs7Z0VBSUU7MkNBSkZMOzs7Ozt5QkFBQUk7bUNBQUFBOzRCQUFBQTs7Ozs7b0JBSVVwSTtvQkFBQUM7b0JBQUFDOzs7O3dCQUFBRDtvQkFBQUU7Ozs7d0JBQUFIOytCQUFBRSxNQUFBQztvQkFBUm1JOzs7Ozs7aUJBQUFBOzs7cUJBSkZySzs7cUJBQUFtSzs7ZUFJRWdkLHNCQUFBOWM7Ozs4REFEQTt5Q0FBQXVQO2NBSEY3UDs7Z0JBQUFLOytEQUdFOzBDQUhGTDs7NkRBR0UsK0NBQUE7ZUFBQU87Z0VBQUE7c0NBSEZIO2NBR0V5UCxvQkFBQXRQOzs7NkRBREE7d0NBQUFvUDthQUZGM1A7O2VBQUFLOzhEQUVFO3lDQUZGTDs7NERBRUUsK0NBQUE7Y0FBQWlJOytEQUFBO3NDQUZGN0g7YUFFRXVQLHFCQUFBMUg7Ozs0REFEQTt1Q0FBQTNFO1lBREZ0RDs7Y0FBQUs7NkRBQ0U7d0NBREZMOzsyREFDRSwrQ0FBQTthQUFBc2Q7OERBQUE7a0NBREZsZDtZQUNFa0Qsa0JBQUFnYTs7OzJEQUlBO3NDQUFBRDtXQUxGcmQ7O2FBQUFLOzREQUtFO3VDQUxGTDs7Ozs7cUJBQUFJOytCQUFBQTt3QkFBQUE7Ozs7O2dCQUtZbWY7Z0JBQUE5SjtnQkFBQUM7Ozs7b0JBQUFEO2dCQUFBK0o7Ozs7b0JBQUFEOzJCQUFBN0osTUFBQThKO2dCQUFWakM7Ozs7OzthQUFBQTs7c0RBTEZ0bkIsV0FBQW1LOztXQUtFaWQsd0JBQUFFOzt3QkFMRnBkOzt1REFNQztvREFOREQsS0FBQUw7O3NEQUFBO2lDQUFBRztxREFBQSwrQ0FBQTs7d0RBQUE7bUNBQUFBO3FEQUFBLHNEQUFBO3FEQUFBL0osY0FBQThCOzs7c0RBQUE7aUNBQUFrSTtxREFBQSwrQ0FBQTs7d0RBQUE7bUNBQUFBO3FEQUFBLHNEQUFBO3FEQUFBaEssY0FBQThCOztvREFDRTtxREFBQTt1REFBQTtrQ0FBQXVMO3FEQUNBO3VEQUFBO2tDQUFBcU07cURBQ0E7dURBQUE7a0NBQUFFO3FEQUNBO3VEQUFBO2tDQUFBdU47cURBQ0E7dURBQUE7a0NBQUFDOzs7T0FBQUc7T0FEQUM7T0FEQTNOO09BREFFO09BREF6TTtxREFERjtjQUNFQTtjQUNBeU07Y0FDQUY7Y0FDQTJOO2NBQ0FEOztvREFMRjtxREFBQTs7Ozs7MkRBS0U7c0NBQUFIOzs7OztxREFMRjs7Ozs7MkRBSUU7c0NBQUFEOzs7OztxREFKRjs7Ozs7MkRBR0U7c0NBQUF2Tjs7Ozs7cURBSEY7Ozs7OzJEQUVFO3NDQUFBRjs7Ozs7cURBRkY7Ozs7OzJEQUNFO3NDQUFBck07Ozs7O29EQURGLHNEQUFBO29EQUFBck4sUUFBQThCOzttREFBQSxzREFBQTttREFBQTlCLFFBQUE4Qjs7WUFBQXpCO21EQUFBO0tBS0V1bkI7S0FEQUM7S0FEQTdOO0tBREFFO0tBREEzTTtLQUlVeEwsS0FBVjZsQjtLQUFVNWxCLEtBQVY0bEI7S0FBVTNsQjs7dUVBQUFEO0tBQUFFOzt1RUFBQUg7S0FBVjRJLHlCQUFVMUksVUFBQUM7S0FBVjBJLCtCQUFBRDtLQURRMmUsT0FBUnpCO0tBQVFySSxPQUFScUk7S0FBUXBJOzs7O1NBQUFEO0tBQUErSjs7OztTQUFBRDtLQUFSemUsMkJBQVE0VSxVQUFBOEo7S0FBUnplLCtCQUFBRCxRQUNBRDtLQUZBMkgsc0NBQUF5SDtLQUFBeEgsNkJBQUFELFFBQ0F6SDtLQUZBZ2QsdUNBQUE1TjtLQUFBNk4sOEJBQUFELFFBQ0F0VjtLQUZBd1Ysb0NBQUF6YTtLQUFBMGEsMkJBQUFELFFBQ0FEO21EQUZGOztZQUNFRTtrREFLRDtZQUdHeUMsUUFBVS9tQjttREFDWiwrQ0FBQTs7c0RBQUE7NEJBRFlBO21EQUNaLHNEQUFBOzZEQUFrQzs7O21EQUF1QztZQUN2RWduQixRQUFVaG5CO21EQUNaLCtDQUFBOztzREFBQTs0QkFEWUE7bURBQ1osc0RBQUE7NERBQ0c7OzttREFBdUM7WUFFeEM2UCxLQUFRN1A7b0RBQVM7WUFBVEE7cURBQ29CLFdBUDVCK21CLFFBTVEvbUI7S0FDTDREO3VEQUFROzs7b0RBQ2IsT0FGVTVEO3FEQUVvQixXQU41QmduQixRQUlRaG5CO0tBRUZDO3VEQUFLOzs7bURBQ2IsV0FGSzJELEdBQ0czRDtrREFFVDtZQUNHNkosT0FBUzlKO29EQUFLO3FEQUNILFFBTlg2UCxLQUtTN1A7S0FDSEM7S0FBSDJEO21EQUNMLFdBREtBLE1BQUczRDtrREFFVDtZQUVHMjJCLElBQU9yUDtvREFBRDtLQUE2Q0Y7S0FBUkM7S0FBTnZYO0tBQVBpSDtLQUFKOVo7cURBS2xCO3VEQUFBO3FCQUwyQ21xQixpQkFBNUNFLE9BQTRDRjtvREFBeUI7WUFBbERucUI7WUFBSThaO1lBQU9qSDs0REFJL0I7MEJBSnFDdVgsV0FBQUE7O2tEQU05QztZQUVHRixnQkFBbUJwbkI7b0RBQVM7cURBQzFCcUg7dURBQUk7eUJBRGFySDtxREFFakJ6RDtPQVZGcTZCLDBCQVFtQjUyQjtxREFHaUI7dURBQUE7NkJBRGxDekQ7cURBQ1k7dURBQUE7NEJBRlo4SztLQUVPcEg7S0FBTjJEO21EQUNMLFdBREtBLEdBQU0zRDtrREFFWjtZQVFHNHdCLE9BQVU3d0I7bURBQ1osK0NBQUE7O3NEQUFBOzZCQURZQTtrQkFDbUIrUDtxREFBUTthQUQzQi9QO2FBQUFBO2FBQ21CK1A7YUFEbkIvUDthQUFBQTtvREFDdUM7bURBQW5ELHNEQUFBOzZEQUFzQjs7O21EQUE4QjtZQU1sRGdNLEtBQVFoTTtvREFBaUI7YUFBakJBO0tBQ0E2MkI7S0FBTEM7cURBQ0c7dURBQUE7NEJBREhBO2tCQUFLRDs7TUFFUStFLElBRlIvRTtNQUVFN21CO01BQ0ZwTTt3REFBSzttQ0FESG9NLElBSEZoUTs7TUFLSEM7d0RBQVE7bUNBRkcyN0IsSUFIUjU3Qjs7WUFJQTRELFNBQ0gzRCxPQURHMkQ7O21EQUdILHFEQUFBOztrREFFUjtZQUVHOGpCO21EQUNBOztLQUE4Q21VO0tBQVJDO0tBQW5CeFU7S0FBTnZYO0tBQVBpSDtLQUFKOVo7cURBR2dCO3VEQUFBOzZCQUhoQkEsSUFBSThaLE9BQU9qSDtvREFFYjtzREFBQTt3REFDRzs7U0FIZ0J1WDtxREFJRDt1REFBQTs7b0RBRmxCO3NEQUFBO3dEQUVHOzs7S0FIVXlVO0tBQVZDO21EQUlMLFNBQUlDO0tBQVczVSxRQUFRZ0g7b0RBQ3JCLCtDQUFBOzt1REFBQTt1QkFEYWhILFFBQVFnSDtvQzttQkFDWWxzQjtzREFBSyxXQUFMQTtxREFBUTtvREFBekMsK0NBQUE7O3VEQUFBOzBEQUF3Qjs7O29EQUF4QixzREFBQTs7b0RBQWtFO29EQUN4QyxnREFBQTtZQUZ4QjY1QixRQUpXRixVQURpQ0Y7bURBT2hEO1lBRklJLFFBSkNELFVBRG1DRjs7a0RBUXpDO1lBRUdJLGlCQUFvQmw4QjtvREFBNkI7V0FBN0JBO3FEQUdGO3VEQUFBOzZCQUhFQSxNQUFBQSxNQUFBQTtvREFFcEI7c0RBQUE7d0RBQ0c7OztxREFDZTt1REFBQTs7b0RBRmxCO3NEQUFBO3dEQUVHOzs7S0FIVSs3QjtLQUFWQztvREFLSDtzREFBQTs0QkFMR0E7b0RBSURwNEI7c0RBQ0Y7eURBQStCOzs7b0RBRS9CO3NEQUFBOzRCQVBhbTRCO29EQU1YOTdCO3NEQUNGO3lEQUE2Qjs7O21EQUMvQixXQUpJMkQsR0FFQTNEO2tEQUdMO1lBRUc0bkIsV0FBY3NVLFNBQXlDQztvREFBbUI7c0RBR2xFQzt3REFBa0M7NkJBSGFEO3NEQUdwREU7d0RBQWtCOzZCQUhQSDtvREFJVjtzREFBQTtRQURERyxRQUFLRDtxREFFVjthQUZLQzthQUFBQTthQUFBQTtpQkFBQUEsUUFBS0Q7aUJBQUxDLFFBQUtEO29EQUNWLHNEQUFBOzttREFRRDs7Ozs7T0F2R0RsRTtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUVBeDdCO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BU0lxcUI7T0FFQUM7T0FJQW5YO09BS0EvRjtPQUtBOHNCO09BUUF4UDtPQWFBeUo7T0FPQTdrQjtPQVdBMGI7T0FXQXdVO09BWUFyVTs7O2E7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDNUZKMWM7SUFBQTlPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFEQWtnQztJQUFBQztZQUFBbjRCO21EQUFBOzttREFDMEM7WUFEMUN2QjttREFBQTs7bURBQzBDOztLQUQxQ3k1QjtjQUNBajlCO3FEQUFBO09BREE4TDtPQUFBckk7c0RBQ2tCLGdEQUFBOzRCQUFsQnpEO3FEQURBLCtDQUFBO3VEQUFBLFdBQUF3RCxPQUNBeEQ7UUFEQXlEO3NEQUNrQixnREFBQTs0QkFBbEJ6RDtxREFEQSwrQ0FBQTt1REFBQSxXQUFBK0UsT0FDQS9FO1FBREE4TDtxREFBQSxzREFBQTttQ0FDQTlMO3FEQUEwQzs7S0FEMUNrOUI7Y0FDQWo4QjtxREFBQSxzREFBQTt3Q0FEQWc4QixlQUNBaDhCO3FEQUEwQztrREFBMUMsU0FBQWs4QjtJQUFrQnowQjttREFBbEIsU0FBa0JBO2VBQUFBOzs7O3VEQUFBO1FBQUFxRDtRQUFBQzt3REFBQUM7MERBQUE7b0NBQUFEO3dEQUFBRTswREFBQTttQ0FBQUg7dURBQUE7ZUFBQUU7ZUFBQUM7Ozs7b0RBQUEsdURBQUE7MENBQWxCTCxxQkFBa0JuRDttREFBd0I7WUFBMUMwMEI7bURBQUE7S0FBa0JqeEI7S0FBQXRJO0tBQUF1SSw4Q0FBQXZJO0tBQUF3SSw2Q0FBQUY7bUJBQUFDLGNBQUFDO21EQUF3QjtrREFBMUM7R0FBQWd4QjtJQUFrQngrQjttREFBbEI7YUFBa0JBLHFDQUFBQTtlQUFBQTs7Ozs7UUFBQUM7UUFBQUM7UUFBQUMsMENBQUFEO1FBQUFFLHlDQUFBSDtrQkFBQUUsTUFBQUM7Ozs7eURBQWxCbEMsV0FBa0I4QjttREFBd0I7WUFBMUN5K0I7bURBQUE7S0FBa0J4K0I7S0FBQUM7S0FBQUMsMENBQUFEO0tBQUFFLHlDQUFBSDs4QkFBQUUsVUFBQUM7bURBQXdCOztJQUUxQ3ZCO0lBQUFHO1lBQUFtSDttREFBQSxPQUhBaTRCO21EQUl5Qjs7S0FEekJ2L0I7Y0FDQXNDLEtBQVNpQjtxREFBQSwrQ0FBQTs0QkFBVGpCOzttQkFBU3VMLEtBQUF0SztzREFBQSxHQUFBc0s7dURBQUEsK0NBQUE7OEJBQVR2TDtzREFBUywrQ0FBQTt3REFEVDtXQUFBZ0YsU0FDQWhGO1NBQVNpQjtzREFBQTtzREFBZ0I7cURBQWhCLCtDQUFBO21DQUFBQTtxREFBQSxzREFBQTttQ0FBVGpCO3FEQUF5Qjs7S0FEekJuQztjQUNBb0Q7cURBQUEsc0RBQUE7d0NBREF2RCxJQUNBdUQ7cURBQXlCO1lBQXpCL0QsVUFBQXlvQjttREFBQSxzREFBQTs4QkFIQXdYLG9CQUdBeFg7bURBQXlCO1lBQXpCM29CLFVBQUF1Z0M7bURBQUEsc0RBQUE7OEJBSEFILG9CQUdBRzttREFBeUI7a0RBQXpCLFNBQUFsZ0MsWUFBQUo7ZTs7YUFIQW9nQzthQUdBcGdDOztZQUFBRyxZQUFBNkM7ZTs7YUFIQXE5QjthQUdBcjlCOztPQUVJeXBCO1lBRUE4VDtvREFDRjtzREFDUTtRQUNKQTtxREFBcUIsV0FBckJBO29EQUFpQztZQUVuQzl3QjtvREFDRjtzREFDUTtRQUNKaE07cURBQWdCLHdEQUFBO3FDQUFoQkE7b0RBQWdDO1lBRWxDKzhCLFFBQVd2TjtxREFBRDs7S0FBMkJxSDtLQUFMQztLQUFKOTJCO3FEQUN4Qjs7OzBEQUFZO21DQURMd3ZCLEtBQWlCeHZCO1FBQVM2MkI7b0RBQ2pDLHVEQUFBO3lCQUQ0QkM7b0RBQ2M7WUFDOUNGLElBQU9wSCxLQUFnQndOO3FEQUFZLHdEQUFBOzhEQUFRO2dDQUYzQ0QsU0FFT3ZOO2FBQWdCd047b0RBQWdEO1lBRXZFdFYsWUFBY3NWOztzREFFSjtNQUFLOUY7TUFBSGwzQjt1REFDTzs7MERBQUM7bUNBRFJBO2FBQUdrM0I7c0RBQ0ksd0RBQUE7O3FEQUFnQztvREFGckQsZ0RBQUE7O3VEQUFBO3lEQUNHOztTQUZhOEY7b0RBQ2hCLHVEQUFBOztvREFJa0I7WUFlaEI1SjtxREFBTzs7S0FBV3lEO0tBQUxDO0tBQUo5MkI7c0RBQ1BxSDt3REFBSTt5QkFET3l2QjtzREFFWG1HOztRQURBNTFCOzswREFDbUI7eURBRlpySDtpQkFLS2dRLEdBQUc1TjtzREFBTSxXQUFUNE4sR0FBRzVOO3FEQUFZO29EQUQ3QixnREFBQTs7dURBQUE7eURBQ0c7O1NBTFUwMEI7O3NEQU1FLElBQUsxMEI7c0RBQVE7OzhEQUFBO29DQUFSQTtxREFBNkI7b0RBRmpELGdEQUFBO0tBREVzMUI7dURBQ0Y7eURBRUc7OztpQkFHVzFuQixHQUFHNU47c0RBQU07Y0FSckJpRixhQVFZMkk7YUFBRzVOO3FEQUFvQjtvREFEckMsZ0RBQUE7O3VEQUFBO3lEQUNHOztTQVRleTBCOztzREFVSCxJQUFLejBCO3NEQUFROzs4REFBQTtvQ0FBUkE7cURBQTZCO29EQUZqRDtxREFERXExQjt1REFDRjt5REFFRzs7O3NEQUNHO3dEQUFBO3FCQVJKQyxXQURBdUYsS0FLQXhGO3FEQUlJLHdEQUFBOzttREFDVDtZQWlCRzVELFFBQVdtSjt3QkFHTEU7cURBRE47TUFBS2hHO01BQUhsM0I7dURBRTJDO3lEQUFBO2tDQUZ4Q2szQjs7TUFFZ0NMO01BQUg1MkI7TUFBUms5Qjs7TUFBVnhJO01BQUgvd0I7TUFBTGt6Qjt1REFDbUM7eURBQUE7aUNBSHpDOTJCO3VEQUdlO3lEQUFBOztNQUFOdVA7TUFBSkQ7dURBQ0Q4dEI7eURBQVM7MkNBRkZ4NUIsR0FDTjBMLE1BRFNxbEI7dURBR1YwSTt5REFBUzsyQ0FGSjl0QixLQUR1QnRQLElBQVJrOUI7dURBSVI7eURBQUE7cUNBRlpDO3VEQUVBMUY7eURBQU07c0JBSkpaO3VEQUtJO3lEQUFBO3FDQUZOdUc7dURBRUE1Rjt5REFBTTsyQkFMeUJaO3FEQU1uQztpQkFSQTcyQixPQU1JMDNCLE9BQ0FEO2FBTkF5RjtvREFRTDtxREF4Q00sd0RBQUE7bUNBNkJJRixNQWpFWGhVO21EQStFRDtZQUVDc1UsZUFBa0IvZ0MsR0FBV3lnQztvREFDL0IsS0FEK0JBO3NEQUV2QjtRQUNKaDlCLElBSDJCZzlCO3FEQUdYLHdEQUFBO2FBQWhCaDlCLE1BSGdCekQ7bURBSW5COzs7O09BM0ZIZ2dDO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BRUE1L0I7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FFSXNzQjtPQUVBOFQ7T0FLQTl3QjtPQUtBK3dCO09BRUFuRztPQUVBbFA7T0FvQkEwTDtPQTZCQVM7T0FnQkF5Sjs7OzthOzs7Ozs7OzZDQ3pGSTs7Ozs7OENBQUovZ0M7WUFFQWdoQzsrQ0FBZ0IsSUFDZEMsT0FIRmpoQztJQUFBQSxPQUdFaWhDOzhDQUVKLE9BRklBOzZDQUdMO1lBRUdDLHdCOzhDQUFLOytDQUVMMTdCO0lBQ0F2QjtJQUVBazlCO3lCQWJBbmhDLEdBRUFnaEMsTUFNQUUsSUFFQTE3QixLQUNBdkIsS0FFQWs5Qjs7O2E7Ozs7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDUEFDLE9BQVVwaEMsR0FBV3FoQyxJQUFvQkM7aUJBR3JDQSxJQUFJQzttREFDSCxTQURHQTtVQUdLNWdDLEtBSEw0Z0M7cURBSUQsc0RBQUE7OERBQ0c7O2lCQUZHNWdDOztpRUFJRDtrRUFDVSxXQVhaWDtzQkFZU3d6QjtpRUFBTzt5RUFBSzsrQ0FackJ4ekIsR0FZU3d6QjtnRUFBNEI7ZUFUM0M4Tjs7U0FFVXY5QixPQUZOdzlCO29EQUVhLHNEQUFBOzZEQUFNO3dCQUFieDlCO2NBRlZ1OUI7bURBV0U7aURBYlIsb0RBQUE7MkRBQ0c7cUNBRndDQTthQUFwQkQ7aURBZ0JuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaEJGRDs7O2E7Ozs7Ozs7OztJQ1BBSTtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUVBQztJQUNBQztJQUVBQztZQUlBajBCLE9BQVU5Tjs0Q0FBbUI7S0FDM0JnaUMscUNBRFFoaUM7YUFFSmlpQyxhQUFnQkMsT0FBWUM7NENBQ2xDO01BRHNCQyxVQUFBRjtNQUFZRyxVQUFBRjs0Q0FDbEM7U0FGRUgsU0FDb0JJLFVBQVlDLHFCQURoQ0wsT0FDZ0NLO1VBSTVCejNCLG1DQU5JNUssR0FFWW9pQyxVQUFZQzs2Q0FLaEMsVUFESXozQjtpQkFBQUE7a0JBQUFBO2lEQU9HO2tEQVh5QjAzQixVQUFBRDtVQUFaRSxVQUFBSDtVQUFBQSxVQUFBRztVQUFZRixVQUFBQzs7aURBU1g7a0RBVFdFLFVBQUFIO1VBQVpJLFVBQUFMO1VBQUFBLFVBQUFLO1VBQVlKLFVBQUFHOztnREFPWDtpREFQV0UsVUFBQUw7U0FBWk0sVUFBQVA7U0FBQUEsVUFBQU87U0FBWU4sVUFBQUs7O1dBQVpFLFVBQUFSLGlCQUFBQSxVQUFBUTs7MkNBY3JCOzJDQUVILE9BaEJRWDswQ0FpQlQ7Ozs7T0FsQ0dYO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO09BSUFqMEI7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7SUNMRiswQjtJQUFBampDO0lBSUlrakM7SUE4Qk5DO0lBQUEzOEI7SUE2QkU0OEI7SUFBQTN1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBdEVGNHVCLE9BQ0FwZ0M7NENBQVcsK0NBQUE7aUNBQVhBOzJDQUFjO1lBRGRxZ0MsU0FDQXAvQjsyQ0FBQSw4Q0FBQTtzQ0FEQW0vQixRQUNBbi9COzJDQUFjOzBDQUFkOzJDQUFBcS9CO0lBQUFDO0lBQUFDO0lBQUFDO1lBQ0FDLE9BQ0ExZ0M7NENBQVcsK0NBQUE7aUNBQVhBOzJDQUFjO1lBRGQyZ0MsU0FDQTEvQjsyQ0FBQSw4Q0FBQTtzQ0FEQXkvQixRQUNBei9COzJDQUFjOzBDQUFkOzJDQUFBMi9CO0lBQUFDO0lBQUFDO0lBQUFDO0lBR0VyakM7SUFBQUc7WUFBQWtIOzRDQUFBLE9BSkYyN0I7MkNBUUc7WUFKRGw5Qjs0Q0FBQSxPQU5GNDhCOzJDQVVHOztLQUpEMWlDO2NBQ0FzQyxLQUFBaUI7OENBQUEsd0NBQUE7NEJBQUFqQjs4Q0FBQSx3Q0FBQTs0QkFBQUE7aUJBQUFpQjs4Q0FBQSx3Q0FBQTtRQURBdUMsTUFDQXhEOzhDQUFBLHdDQUFBOzRCQUFBQTs4Q0FBQSx3Q0FBQTs0QkFBQUE7OENBQUEsd0NBQUE7NEJBQUFBO2lCQUFBaUI7OENBQUEsd0NBQUE7UUFEQThELE1BQ0EvRTs4Q0FBQSx3Q0FBQTs0QkFBQUE7OENBQUEsK0NBQUE7bUNBQUFBOzZDQUdDOztLQUpEbkM7Y0FDQW9EOzhDQUFBLCtDQUFBO3dDQURBdkQsSUFDQXVEOzZDQUdDO1lBSEQvRCxVQUFBK0Y7NENBQUEsU0FBQUE7NkNBQUEsK0NBQUE7NENBQUErOEIsa0JBQUEvOEI7NENBQUE7S0FBQSs5QixrQkFBQS85Qjs2Q0FDRWcrQjs2Q0FDQUM7NkNBRkZoMEI7NkNBQUFDO2FBQUFnMEI7NkNBQUE7NkNBQUE7NERBQUE7VUFBQUM7ZUFBQUE7a0JBQUFBOzs7OzthQUFBbDhCLDJCQUFBb0k7WUFBQXBJLG1CQUFBQTs7VUFBQW04QjtVQUFBdnpCO3FCQUFBNUk7c0JBQUF1STtzREFBQSxLQUFBdkk7dURBQUEsK0NBQUE7c0RBQUE4NkIsa0JBQUEvOEI7aUJBQUFpQzt1REFBQSw4Q0FBQTs7a0JBQUFvOEIsUUFBQXA4QjtzREFBQSxPQUFBbzhCO3FEQUdDO29CQUhEN3pCOztVQUFBQSxpQkFBQUssaUJBQUE1STtpQ0FBQW9JO2tDQUFBQTs7WUFBQUgsbUJBQUFHLGdCQUFBSDs7a0JBQ0U4ekI7V0FERi96Qix3QkFBQUksZ0JBQUFKOzttREFDRTtvREFERlMsbUJBQUFGO29EQUNFTTtzREFBQTtnQkFQSnV5QixhQU1FM3lCO1dBQ0VzekIsaUJBQUFsekI7O2lCQUNBbXpCO1VBRkZoMEIsd0JBQUFJLGdCQUFBSjs7a0RBRUU7bURBRkZVLG1CQUFBSDttREFFRUk7cURBQUE7ZUFOSit5QixhQUlFaHpCO1VBRUVzekIsaUJBQUFyekI7O3VCQUZGd3pCOzs7Ozs4Q0FBQSwrQ0FBQTs2Q0FBQXJCLGtCQUFBb0I7OzRDQUdDOzRDQUhERCxTQUFBSDtPQUFBOXpCOzZDQUFBLCtDQUFBOztjQUFBOHlCO2NBQUE5eUI7Y0FBQWpLO09BQUFrSzs2Q0FBQSwrQ0FBQTs7Y0FBQTZ5QjtjQUFBN3lCO2NBQUFsSztlQUNFZytCLG9CQUNBQzs7U0FBQUssb0JBREFDOzZDQURGLFdBQ0VBLFNBQ0FEOzs0Q0FGRiwrQ0FBQTs7YUFBQXZCO2FBQUEvOEI7O3dCQUNFZytCOzRCQUNBQzsyQ0FDRDtZQUhEbGtDOzRDQUFBO0tBRUV5a0M7S0FEQUM7NkNBQ0F4M0I7K0NBQUE7U0FOSjIyQixhQU1JWTs2Q0FGRkU7NEJBRUV6M0I7NkNBREEwM0I7K0NBQUE7U0FQSnJCLGFBT0ltQjs2Q0FERkc7NEJBQ0VELGVBREZEOzRDQUFBLFdBQUFFOzJDQUdDO1lBSER4a0MsWUFBQXdCOzRDQUFBO2FBQUFBLHFDQUFBQTs2Q0FDRTtNQURGOEgsZ0JBQUE5SDs4Q0FDRWlqQzs4Q0FDQUM7OENBRkZqN0I7OENBQUFDO01BQUFDOztpREFBQTtpREFBQTtnRUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7b0RBQUE7c0RBQUE7O2FBQUFKOztlQUFBSTt1REFBQTt5Q0FBQUo7OztxREFDRTt1Q0FBQSs2QjtZQURGaDdCOztjQUFBSztzREFDRTt3Q0FERkw7O29EQUNFLHdDQUFBO2FBQUFNO3VEQUFBO2lCQVBKbzVCLGVBTUV0NUI7WUFDRTQ2QixtQkFBQTE2Qjs7O29EQUNBO3NDQUFBMjZCO1dBRkZqN0I7O2FBQUFLO3FEQUVFO3VDQUZGTDs7bURBRUUsd0NBQUE7WUFBQU87c0RBQUE7Z0JBTkp5NUIsZUFJRTU1QjtXQUVFNjZCLG1CQUFBMTZCOzt3QkFGRko7O2dEQUdDOzZDQUhERCxLQUFBTDs7K0NBQUE7aUNBQUFHOzhDQUFBLHdDQUFBOztpREFBQTttQ0FBQUE7OENBQUEsK0NBQUE7cURBQUEvSixjQUFBOEI7OzsrQ0FBQTtpQ0FBQWtJOzhDQUFBLHdDQUFBOztpREFBQTttQ0FBQUE7OENBQUEsK0NBQUE7cURBQUFoSyxjQUFBOEI7OzZDQUNFOzhDQUFBO2dEQUFBO2tDQUFBaWpDOzhDQUNBO2dEQUFBO2tDQUFBQzs7VUFBQUMsd0JBREFDOzhDQURGLFdBQ0VBLFdBQ0FEOzs2Q0FGRjs4Q0FBQTs7Ozs7b0RBRUU7c0NBQUFEOzs7Ozs4Q0FGRjs7Ozs7b0RBQ0U7c0NBQUFEOzs7Ozs2Q0FERiwrQ0FBQTtvREFBQS9rQyxRQUFBOEI7OzRDQUFBLCtDQUFBO21EQUFBOUIsUUFBQThCOzJDQUdDO1lBSER6Qjs0Q0FBQTtLQUVFOGtDO0tBREFDO0tBQ0F6NkIsaUJBTkpxNUIsZUFNSW1CO0tBQUF2NkIsMEJBQUFEO0tBREFFLG1CQVBKNjRCLGVBT0kwQjtLQUFBdDZCLDRCQUFBRCxRQUNBRDs0Q0FGRixzQkFDRUU7MkNBRUQ7WUFHR3U2QixPQUEwQnQvQixHQUFHdS9COzZDQUFNO1lBQVR2L0IsU0FBR3UvQjttQkFBSHYvQixTQUFHdS9COzs0Q0FBc0M7WUFPbkVDLEtBQVFDLFNBQVNDOzRDQUNuQixnREFDUztjQUZDRCxTQUFTQzs7dURBR1Y7Z0JBSENELFNBQVNDOzs7MkNBS2xCO1lBQ0NqbEMsUUFBV21GLElBQUlDOzRDQUNqQixPQVBFMi9CLEtBTVc1L0IsSUFBSUM7O2dEQUVOOztnREFDQTt3REFDRDs7MkNBQ1Q7WUFFQzgvQixNQUFTQyxXQUF3QmhpQyxHQUFHaWlDOzRDQUN0QyxPQURXRDtjQWJUSixLQWFpQzVoQyxHQUFHaWlDO2NBYnBDTCxLQWFvQ0ssR0FBSGppQzsyQ0FJbEM7MkNBaENVOzRDQUFBOztPQUNiaEQ7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FJSTZpQztPQUVBbUM7T0FPQUU7T0FNQS9rQztPQU9Ba2xDO0lBT05HO0lBQUFDO1lBQUFyMkI7NENBQUE7MkNBSUM7WUFKRHhIOzRDQUFBOzJDQUlDOztLQUpENDlCO2NBQ0E1aUMsS0FBQWlCOzhDQUFBLHdDQUFBOzRCQUFBakI7OENBQUEsd0NBQUE7NEJBQUFBO2lCQUFBaUI7OENBQUEsd0NBQUE7Z0RBREEsV0FBQStELFNBQ0FoRjs7OENBQUEsd0NBQUE7NEJBQUFBOzhDQUFBLHdDQUFBOzRCQUFBQTs4Q0FBQSx3Q0FBQTs0QkFBQUE7aUJBQUFpQjs4Q0FBQSx3Q0FBQTtnREFEQSxXQUFBdUwsU0FDQXhNOzs4Q0FBQSx3Q0FBQTs0QkFBQUE7OENBQUEsK0NBQUE7bUNBQUFBOzZDQUdDOztLQUpENmlDO2NBQ0E1aEM7OENBQUEsK0NBQUE7d0NBREEyaEMsZ0JBQ0EzaEM7NkNBR0M7WUFIRDZoQyxvQkFBQUM7NENBQUEsU0FBQUE7NkNBQUEsK0NBQUE7NENBQUE3QyxrQkFBQTZDOzRDQUFBO0tBQUFDLGtCQUFBRDs2Q0FDRUU7NkNBQ0FDOzZDQUZGQzs2Q0FBQUM7YUFBQUM7NkNBQUE7NkNBQUE7NERBQUE7VUFBQUM7ZUFBQUE7a0JBQUFBOzs7OzthQUFBQywyQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBRTtVQUFBQztxQkFBQUg7c0JBQUFJO3NEQUFBLEtBQUFKO3VEQUFBLCtDQUFBO3NEQUFBckQsa0JBQUE2QztpQkFBQVE7dURBQUEsOENBQUE7O2tCQUFBSyxRQUFBTDtzREFBQSxPQUFBSztxREFHQztvQkFIREQ7O1VBQUFBLGlCQUFBRCxpQkFBQUg7aUNBQUFDO2tDQUFBQTs7WUFBQUosbUJBQUFJLGdCQUFBSjs7a0JBQ0VIO1dBREZFLHdCQUFBSyxnQkFBQUw7O21EQUNFO29EQURGVSxtQkFBQUY7b0RBQ0VHO3NEQUFBOzBCQURGRDtXQUNFWixvQkFBQWE7O2lCQUNBWjtVQUZGQyx3QkFBQUssZ0JBQUFMOztrREFFRTttREFGRlksbUJBQUFKO21EQUVFSztxREFBQTt5QkFGRkQ7VUFFRWIsa0JBQUFjOzt1QkFGRlA7Ozs7OzhDQUFBLCtDQUFBOzZDQUFBdkQsa0JBQUFvRDs7NENBR0M7NENBSERELFNBQUFMO09BQUFHOzZDQUFBLCtDQUFBOztjQUFBakQ7Y0FBQWlEO2NBQUFKO09BQUFLOzZDQUFBLCtDQUFBOztjQUFBbEQ7Y0FBQWtEO2NBQUFMO2VBQ0VFLHVCQUNBQzs7U0FBQWUscUJBREFDOzZDQURGLFdBQ0VBLFlBQ0FEOzs0Q0FGRiwrQ0FBQTs7YUFBQS9EO2FBQUE2Qzs7d0JBQ0VFOzRCQUNBQzsyQ0FDRDtZQUhEaUI7NENBQUE7S0FFRUM7S0FEQUM7NkNBQ0FDOytDQUFBLHFCQUFBRjs2Q0FGRkc7NEJBRUVEOzZDQURBbnVCOytDQUFBO21CQUFBa3VCOzZDQURGRzs0QkFDRXJ1QixlQURGb3VCOzRDQUFBLFdBQUFDOzJDQUdDO1lBSERDLHNCQUFBNWxDOzRDQUFBO2FBQUFBLHFDQUFBQTs2Q0FDRTtNQURGOEgsZ0JBQUE5SDs4Q0FDRTZsQzs4Q0FDQUM7OENBRkY3OUI7OENBQUFDO01BQUFDOztpREFBQTtpREFBQTtnRUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7b0RBQUE7c0RBQUE7O2FBQUFKOztlQUFBSTt1REFBQTt5Q0FBQUo7OztxREFDRTt1Q0FBQTI5QjtZQURGNTlCOztjQUFBSztzREFDRTt3Q0FERkw7O29EQUNFLHdDQUFBO2FBQUFNO3VEQUFBOzJCQURGRjtZQUNFdzlCLHNCQUFBdDlCOzs7b0RBQ0E7c0NBQUF1OUI7V0FGRjc5Qjs7YUFBQUs7cURBRUU7dUNBRkZMOzttREFFRSx3Q0FBQTtZQUFBTztzREFBQTswQkFGRkg7V0FFRXk5QixvQkFBQXQ5Qjs7d0JBRkZKOztnREFHQzs2Q0FIREQsS0FBQUw7OytDQUFBO2lDQUFBRzs4Q0FBQSx3Q0FBQTs7aURBQUE7bUNBQUFBOzhDQUFBLCtDQUFBO3FEQUFBdkQsZ0JBQUExRTs7OytDQUFBO2lDQUFBa0k7OENBQUEsd0NBQUE7O2lEQUFBO21DQUFBQTs4Q0FBQSwrQ0FBQTtxREFBQXhELGdCQUFBMUU7OzZDQUNFOzhDQUFBO2dEQUFBO2tDQUFBNmxDOzhDQUNBO2dEQUFBO2tDQUFBQzs7VUFBQUMseUJBREFDOzhDQURGO2NBQ0VBO2NBQ0FEOzs2Q0FGRjs4Q0FBQTs7Ozs7b0RBRUU7c0NBQUFEOzs7Ozs4Q0FGRjs7Ozs7b0RBQ0U7c0NBQUFEOzs7Ozs2Q0FERiwrQ0FBQTtvREFBQW5oQyxVQUFBMUU7OzRDQUFBLCtDQUFBO21EQUFBMEUsVUFBQTFFOzJDQUdDO1lBSERpbUM7NENBQUE7S0FFRUM7S0FEQUM7S0FDQXQ5QiwyQkFBQXE5QjtLQUFBcDlCLDJCQUFBRDtLQURBRSw2QkFBQW85QjtLQUFBbjlCLCtCQUFBRCxRQUNBRDs0Q0FGRixzQkFDRUU7MkNBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWVLbzlCLFFBQVdDLElBQWU3bEM7a0JBQ2JzQjs4Q0FBSyxnREFBQTtxQkFBTEEsR0FEYXRCOzs2Q0FDWTs0Q0FBeEMsd0NBQUE7OytDQUFBO2tEQUFNOztTQURPNmxDOzRDQUNiLCtDQUFBO3NEQUE2Qzs7OzRDQUFzQjtZQUVqRUMsUUFBV0QsSUFBZTdsQztrQkFFaEJzQjs4Q0FBSyxnREFBQTtxQkFBTEEsR0FGZ0J0Qjs7NkNBRVE7NENBRHBDLHdDQUFBOzsrQ0FBQTtpREFDRzs7U0FGVTZsQzs0Q0FDYiwrQ0FBQTtxREFFRzs7OzRDQUFnQzs0Q0FkekI7NkNBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQVFSRDtPQUdBRTtJQU9KQztJQUFBQztZQUFBOXdCOzRDQUFBLE9BN0JGcXVCOzRDQThCaUM7O0tBRC9Cd0M7Y0FDQXBsQzs4Q0FBQTtPQURBOEw7T0FBQXJJOytDQUNhLHlDQUFBOzRCQUFiekQ7OENBREEsd0NBQUE7aURBQ2M7OEJBQWRBO1FBREF5RDsrQ0FDYSx5Q0FBQTs0QkFBYnpEOzhDQURBLHdDQUFBO2dEQUFBLFdBQUF1VSxTQUNBdlUsTUFEQThMOzhDQUFBLCtDQUFBO21DQUNBOUw7OENBQStCOztLQUQvQnFsQztjQUNBcGtDOzhDQUFBLCtDQUFBO3dDQURBbWtDLFVBQ0Fua0M7OENBQStCO1lBQS9CcWtDLGNBQWFDOzRDQUFiLFNBQWFBO2dCQUFBQTs7OztnREFBQTtRQUFBQztRQUFBbGpCO2lEQUFBbWpCO21EQUFBOzZCQUFBbmpCO2lEQUFBb2pCO1VBN0JmNUMsb0JBNkJlMEM7Z0RBQUEsV0FBQUMsVUFBQUM7Ozs7NkNBQUEsZ0RBQUE7MENBQWJ2RixxQkFBYW9GOzRDQUFrQjtZQUEvQkk7NENBQUE7S0FBYUM7S0FBQUM7S0FBQUMsdUNBQUFEO0tBQUFFLFdBN0JmNUIsb0JBNkJleUI7bUJBQUFFLGNBQUFDOzRDQUFrQjtZQUEvQkMsZ0JBQWFubkM7NENBQWI7YUFBYUEscUNBQUFBO2dCQUFBQTs7Ozs7UUFBQUM7UUFBQUM7UUFBQUMsMERBQUFEO1FBQUFFLE9BN0Jmd2xDLHNCQTZCZTNsQztrQkFBQUUsTUFBQUM7Ozs7O2tEQUFidVMsYUFBYTNTOzRDQUFrQjtZQUEvQm9uQzs0Q0FBQTtLQUFhbm5DO0tBQUFDO0tBQUFDLHlEQUFBRDtLQUFBRSxPQTdCZjZsQyxzQkE2QmVobUM7OEJBQUFFLFVBQUFDOzRDQUFrQjs7SUFDL0JpbkM7SUFBQXBoQztZQUFBNm9COzRDQUFBLE9BRkF5WDs0Q0FHb0I7O0tBRHBCYztjQUNBbG1DLEtBQVNpQjsrQ0FBQSx5Q0FBQTs0QkFBVGpCOztvQkFBU3VMLEtBQUF0SztnREFBQSxHQUFBc0s7aURBQUEseUNBQUE7OEJBQVR2TDtnREFBUyx5Q0FBQTtpREFEVCxXQUFBMnRCLFNBQ0EzdEIsTUFBU2lCO2dEQUFBOytDQUFXOytDQUFYLHlDQUFBO3FDQUFBQTsrQ0FBQSxnREFBQTttQ0FBVGpCOzhDQUFvQjs7S0FEcEI4RTtjQUNBN0Q7OENBQUEsK0NBQUE7d0NBREFpbEMsTUFDQWpsQzs4Q0FBb0I7WUFBcEJrbEMsWUFBQUM7NENBQUEsK0NBQUE7OEJBRkFkLGVBRUFjOzRDQUFvQjtZQUFwQkMsWUFBQUM7NENBQUEsK0NBQUE7OEJBRkFYLGVBRUFXOzRDQUFvQjsyQ0FBcEIsU0FBQUMsY0FBQXRwQztlO3FEQUZBK29DLGlCQUVBL29DOztZQUFBdXBDLGNBQUF2bUM7ZTtxREFGQWdtQyxpQkFFQWhtQzs7WUFHUXdtQzs0Q0FDTjs4Q0FDUTs2Q0FFQztLQURDMzdCO0tBQVBDOzhDQUNNLFFBSkgwN0IsYUFHSTM3Qjs7OENBRUEsZUFGUEM7UUFHVTI3QixpQkFBUkMsdUJBSEY1N0I7b0RBSUs7aUNBREg0N0I7Ozs7O3NCQUhGNTdCLElBR0U0N0IsTUFBUUQ7c0JBSFYzN0IsWUFHRTQ3QixLQUFRRDsyQ0FHVjs0Q0FoQlM7NkNBQUE7O09BQ2R0QjtPQUFBQztPQUNBQztPQUFBSztPQUFBSztPQUFBQztPQUNBQztPQUFBcGhDO09BQ0FxaEM7T0FBQUU7T0FBQUU7T0FBQUM7T0FHUUM7OENBeUJOMVM7Ozs7Ozs7WUFRQTZTLE1BQVNocEMsSUFBVThTLEdBQVFqQixHQUFHcFE7OENBQVE7WUFBUkE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7OzhDQU16QjtnREFDVSxtQkFQSXFSLEdBQVFqQjsrQ0FVbEI7TUFGR3lCO2dEQUVILGVBVlVSLEdBQVFqQixJQVFmeUI7O2dEQUdVLElBQVVvckIsYUFBUjVyQjtnREFBa0IsaURBQUE7OEJBQWxCQSxHQUFRNHJCOytDQUEyQjsrQ0FGcEQ7dURBQ0U7eURBQ0c7Ozs4Q0FDSjs4Q0FaOEI7cURBR3RDO3VEQUNHO3FDQUpNMStCOzs7Ozs7NENBY1o7WUFHR2lwQyxNQUFTNXBDLEdBQVd3UyxHQUFHcFE7OENBQVE7WUFBUkE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7OzhDQU1sQjtnREFDVTs7OzBEQUFPO3NDQVBicEM7Z0JBQVd3Uzs7U0FRUnlCOytDQUFPOzs7eURBQU87cUNBUmpCalU7ZUFBV3dTO2NBUVJ5Qjs4Q0FBMEM7OENBUnZCO3FEQUcvQjt1REFDRztxQ0FKTWpVOzs7Ozs7NENBVVo7WUFDRzZwQyxNQUFTdjhCLEdBQVlrRixHQUFHcFE7OENBQVE7WUFBUkE7WUFBQUE7WUFBQUE7WUFBQUE7OENBRW5CO2dEQUFBO21EQUFhO2dDQUZUa0wsTUFBWWtGOzs4Q0FBVztZQUFScFE7Ozs7OzRDQUczQjtZQUNHMG5DLE1BQVNwb0IsR0FBZ0JsUCxHQUFHcFE7OENBQVE7WUFBUkE7WUFBQUE7WUFBQUE7K0NBRW5CO2lEQUFBO21EQUFpQjtnQ0FGakJzZixNQUFnQmxQOzs4Q0FBVztZQUFScFE7WUFBQUE7Ozs7NENBRy9CO1lBQ0cybkMsTUFBU2xrQyxHQUFZMk0sR0FBR3BRO2tCQUtyQnBDOytDQUFLLE9BeEJSNHBDLE1Bd0JHNXBDLEdBTGtCd1MsR0FBR3BROzhDQUtBO2tCQURyQmtMOytDQUFLLE9BWlJ1OEIsTUFZR3Y4QixHQUprQmtGLEdBQUdwUTs4Q0FJQTtrQkFEckJzZjsrQ0FBSyxPQVBSb29CLE1BT0dwb0IsR0FIa0JsUCxHQUFHcFE7OENBR0E7NkNBRjFCLGdEQUFBO3NEQUNHOzthQUZReUQ7NENBTVA7WUFFRm1rQyxRQUFXTixLQUFVNytCLE9BQW1Cekk7OENBQVE7WUFBUkE7OENBRXBDO2dEQUFBO2tCQUZPc25DLEtBQVU3K0IsT0FBbUJ6STs4Q0FBUTtZQUFSQTtZQUFBQTtZQUFBQTs7OzRDQUczQztZQUVHNm5DLE9BQVV0cEMsSUFBSXVwQyxRQUFROW5DOzhDQUFRLDBDQUVwQjs7aURBQUE7OEJBRkF6QixJQUFJdXBDLFFBQVE5bkM7OENBQVE7WUFBUkE7WUFBQUE7WUFBQUE7WUFBQUE7OzRDQUd6QjtZQUVHK25DLFlBQWV6b0IsR0FBR2xQOzhDQUFNO3dCLE9BdEJ4QnMzQixNQXNCZXBvQixHQUFHbFA7O2FBOURsQnNrQjs2Q0E4RDRDO1lBQzVDc1QsWUFBZTk4QixHQUFHa0Y7OENBQU07d0IsT0EzQnhCcTNCLE1BMkJldjhCLEdBQUdrRjs7YUEvRGxCc2tCOzZDQStENEM7WUFDNUN1VCxZQUFlMXBDLElBQUkycEMsT0FBTzkzQjs4Q0FBTTt3QixPQXhEaENtM0IsTUF3RGVocEMsSUFBSTJwQyxPQUFPOTNCOzthQWhFMUJza0I7NkNBZ0U0RDtZQUc1RHlULGdCQUFtQnZxQyxHQUFXb0M7OENBQVE7bUNBQW5CcEMsTUFBV29DOzZDQUF3QztZQUN0RW9vQyxZQUFleHFDLEdBQVdvQzs4Q0FBUTttQ0FBbkJwQyxNQUFXb0M7NkNBQW9DO1lBRTlEcW9DLFlBQWU5cEMsSUFBSXlCOzhDQUFRO21DQUFaekIsSUFBSXlCOzZDQUEyQztZQUU5RHNvQyxjQUFnQi9wQyxJQUFVeUI7NkNBQzVCLHlDQUFPOztnREFBQTsrQkFEV3pCLElBQVV5QjswREFFbEI7UUFDSHNTOzhDQUFPLE9BQVBBOzRDQUNOO1lBRUNpMkIsT0FBVWpwQixHQUFnQnRmOzZDQUM1QjttQ0FEWXNmLE1BQWdCdGY7NkNBQ0k7WUFDOUJ3b0MsT0FBVXQ5QixHQUFZbEw7OENBQXFCO21DQUFqQ2tMLE1BQVlsTDs2Q0FBaUQ7WUFFdkV5b0MsT0FBVTdxQyxHQUFXb0M7OENBQXFCOytDQUN4QzJvQjtpREFBUzsrQkFERC9xQixNQUFXb0M7K0NBRVE7aURBQUE7NkJBRm5CcEM7K0NBRVJxeEI7aURBQVE7a0NBRFJ0RzsrQ0FFMEI7aURBQUE7NkJBSGxCL3FCOytDQUdSb3hCO2lEQUFPO2tDQUZQckc7NkNBR0osV0FGSXNHLFVBQ0FEOzRDQUVMO1lBR0cwWixPQUFVamxDLEdBQVl6RDtrQkFLbkJwQzsrQ0FBSyxPQWJSNnFDLE9BYUc3cUMsR0FMbUJvQzs4Q0FLQTtrQkFEbkJrTDsrQ0FBSyxPQWRSczlCLE9BY0d0OUIsR0FKbUJsTDs4Q0FJQTtrQkFEbkJzZjsrQ0FBSyxPQWZSaXBCLE9BZUdqcEIsR0FIbUJ0Zjs4Q0FHQTs2Q0FGeEIsZ0RBQUE7c0RBQ0c7O2FBRlN5RDs0Q0FNUjtZQUVGa2xDLFdBQWNwcUMsSUFBVXlCOzhDQUFnQyx5Q0FDbkQ7O2dEQUFBOytCQURTekIsSUFBVXlCOztTQUVuQm9ROytDQUFNLFdBQU5BOzs4Q0FFRSwwQ0FBQTs7aURBQUE7K0JBSk83UixJQUFVeUI7O1NBS2pCNG9DOytDQUFNLFdBQU5BOzs4Q0FFRSwwQ0FBQTs7aURBQUE7K0JBUEtycUMsSUFBVXlCOzsrQ0FVQztNQUZoQjJvQjtnREFFZ0I7a0RBQUE7MkJBRmhCQTs7Z0RBQ0RzRztrREFDRjttQ0FGR3RHO2dEQUtEO2tEQUFBOzhCQUxDQTs7Z0RBR0RxRztrREFDRjttQ0FKR3JHOzhDQVNMO2lCQVJJc0csVUFFQUQ7OzhDQVErQywwQ0FBQTs7aURBQUE7NkJBbkJ6Q3p3Qjs2Q0FtQlYseUNBQUE7OzZDQUFBOzRDQUtQO1lBRUdzcUMsaUJBQW9CanJDOzhDQUFjLHlDQU1sQzs7Z0RBQUE7NkJBTm9CQTs2Q0FNcEI7K0NBRWE7Z0RBQUE7a0RBQUE7OzsrQ0FBWDtpREFBQSxXQVJrQkE7OENBUWxCO1VBSEFrckM7O2dEQUdnRDtpREFBQTttREFBQTs7O09BSGhEQTttREFHcUMsV0FSbkJsckM7OztTQUtsQmtyQzs4Q0FLMEM7K0NBQUE7aURBQUE7eUJBVnhCbHJDOzs7K0NBVWxCbXJDO2lEQUF3Qjs4QkFWTm5yQzs7Ozs4Q0FLbEJvckM7T0FBQUYsZ0JBS0FDOzhDQUZxQyxPQUhyQ0M7NENBT0w7WUFFR0MscUJBQXdCcnJDOzhDQUFjOzt1REFBQTttQ0FBZEE7Ozs2Q0FBaUM7WUFFekRzckMsZ0JBQW1Cclk7YUFDYmEsR0FBT3pIOytDQUFzQyxHQUF0Q0E7VUFBWUMsTUFBWkQsUUFBQWtmLGNBQVlqZjs7VUFBWmlmOytDQUFzQztVQUFkQyxpQkFBSnBwQyxNQUFJb3BDOztVQUFKcHBDOzhDQXFCNUIseUNBQUE7aUJBckJRbXBDLGFBQW9CbnBDOzBCQUdQeUQ7K0NBQXJCO09BQWV6RDtPQUFibXBDO2dEQUNBLE9BRG1CMWxDOzttREFTakI7VUFESzdGLElBUlk2RjtvREFTYjRsQztZQVRORixlQXBCUE4saUJBNEJjanJDO29EQUVMLE9BRktBOztxQkFLR29DLEtBQUs0b0I7dURBQVUsT0FoQjFCOEk7K0JBZ0JXMXhCLE1BQUs0b0I7c0RBQTRDO29EQUhyRDBnQjtzREFDRjt3REFDRzt1Q0FaTXRwQzs7bURBZ0JYO2lCQVBJcXBDO2lCQUNBQzs7YUFSTWhxQixJQUZPN2I7bURBRUM7cURBQUE7c0NBQVI2YjtvREFBcUM7OzREQUU3Qzt5Q0FGUUEsTUFGWjZwQixhQUFhbnBDOzs7Z0RBT0MsV0FQZG1wQyxhQUFhbnBDOytDQWlCWjs4Q0FuQlIsZ0RBQUE7d0RBQ0c7Ozs7OENBcUJHOzZDQUNSLE9BeEJRMHhCLFNBRGFiOzRDQTBCdEI7WUFFRzBZLFdBQWV0Zjs4Q0FBc0MsR0FBdENBO1NBQU9DLE1BQVBELFFBQUF1ZixNQUFPdGY7O1NBQVBzZixNQXhLZjlVOzhDQXdLcUQ7U0FBZjBVLGdCQUFSSyxVQUFRTDs7U0FBUks7OENBQ2QsMENBQUE7S0FBZE4sY0E3QkZEO2FBZ0NNUSxVQUVHMXBDLEtBQ0FpcUI7K0NBRUQsR0FGQ0E7VUFBNkJDLE1BQTdCRCxRQUFBMGYsbUJBQTZCemY7O1VBQTdCeWY7K0NBRUQ7VUFEUVAsZ0JBQVBRLFNBQU9SOztVQUFQUTsrQ0FLQSwwQ0FBQTtNQUVQalg7a0RBRk87O1FBRVBBOytDQUNFOztrQkFDYS8wQjtvREFBYyxnREFiakM7MENBYW1CQSxNQWpCYTZyQzttREFpQmdDO2dEQUQxRDtrREFBQTtxREFDRzs7V0FGTDlXO2dEQUNFOztrQkFHTTVYLEtBQUswdUI7b0RBQ0osR0FERDF1QjtlQUVTOGpCLE9BRlQ5akI7Y0FBSzB1QjtnQkFFZ0JJLFNBRmhCSjtzREFFMkI7OERBQUs7eUNBQTVCNUssTUFBWWdMOztlQUNaQyxTQURBakw7OztnQkFGSjRLLG1EQUtHO2VBRkNLLFNBSEpMOztvREFJaUIsV0FEYks7bURBR1A7T0FiUkM7a0RBSUE7cURBRUc7Ozs7VUFOSEE7Y0FtQklDLE9BRUdocUMsS0FDQWlxQjtnREFDRCxHQURDQTtXQUE2QkMsTUFBN0JELFFBa0JGZ2dCLG1CQWxCK0IvZjs7V0FrQi9CK2Y7Z0RBaEJDLGdCQUFBcFo7Z0RBR1IsS0FIUUE7a0RBU0M7bURBQUE7ZUF0Q0Y4WSxtQkE2Q0FNOzttREFYREM7cUMsT0E3SlJ0Qyw0QkFxSlc1bkM7aURBaUJQLG1CQVRJa3FDOztXQVVJeitCLEtBZkZvbEIsUUFlTG5sQixLQWZLbWxCO2NBZUxubEI7O29EQTBDZTtXQURQOU4sSUF6Q1I4TjtxREEwQ095K0I7dURBQVE7K0JBRFB2c0M7V0FFRHdzQztzQkFBYVIsUUFBUTFCLE9BQU9sb0M7d0RBQVE7eURBSUY7MkRBQUE7NkRBQUE7cUJBTGxDbXFDLE9BQ3FCakM7eURBQ25CbFo7cUJBRFc0YSxXQUFBQTt5REFNcUI7cUJBTnJCQSxRQUNYNWE7c0JBSERweEI7eURBUUMwckM7OzhCLE9BcFFkL0IsWUE4UGlDVzs7bUJBQU9sb0M7d0RBTzlCO3NCQU5JZ3ZCO3NCQUtBc2E7dURBRUw7cURBRUM7dURBQUE7NEJBWkcxckMsTUFBQUE7OzZCQWVrQmdyQixPQUFPc2Y7d0RBQXZCO2VBQVVsb0M7ZUFBUjRwQzt5REFFRTtpQkF6R2JGO21CQXVHbUIxcEM7dUJBcEdoQjJwQyxtQkE2Q0FNO3VCQXVEUUw7bUJBQWNoaEI7ZUFDR3loQjtlQUFaQzt3REFPTCxPQXJCTEY7dUJBY1VFLFlBRGdCcEMsT0FDSm1DO3VEQVFsQjs7c0JBVkRuQzt3REFBUyxPQVpaa0M7K0JBWUdsQyxPQXpFSmxvQzt1REF5RTBDO3FEQUYzQzt1REFBQTt5REFDRzs7O1dBRk1zcEM7V0FBTnRhO1dBbkRzQnViLFFBbURoQmpCO1dBbkRRa0IsV0FtRGR4YjtXQW5ESnliLHFCQUFBUjs7O29EQXFDVTtXQURMLytCLElBckNUUTtxREFzQ09nL0I7O3FEQUNzQjt5QkFEdEJBO3FEQUNBQzt1QyxPQTlOWmxELE1BNE5jdjhCLGlCQXZESGxMO1dBbUJ3QnVxQyxRQXNDdkJJO1dBdENlSCxXQXFDZkU7V0FyQ0hELHFCQUFBUjs7O2NBOEJTM3FCLElBL0JiNVQ7b0RBR3FCO3NEQUFBO3VDQTRCUjRUO2VBM0JOc3JCLGFBaERIakIsbUJBNkNBTTtxREFLSTt1REFBQTtzQ0FORHgrQjtnQkFLQXE4Qjs7c0RBS0U7dURBQUE7eURBQUE7d0NBcUJJeG9CLE1BbEZZbXFCO3VEQStEaEI7ZUFqS2RwQixZQW9Ma0Ivb0IsTUFsRkhrcUI7OzsyQkFZWE87O2VBcUQrQ2M7ZUFBaEJDLFlBckQvQmY7ZUFxRGdCZ0I7d0RBQ0M7MERBQUE7cUNBRERBLFdBQWVELGdCQUFnQkUsV0FBQUg7Ozs7MERBR2pCO3lDQWNoQnZyQixNQWpGaEI2cEI7OztjQWdFaUQ2QixXQWIxQ2Y7O2dCQUlHbkMsU0FTdUNrRDs7cURBT3pDO3NEQURFQztxQ0FoRUh0QixtQkFpREc3QjtzREFtQlU7MEJBSlZtRDtzREFHRjt3QyxPQTFNVnZELE1Ba05rQnBvQixpQkFqRFB0ZjtzREE2Q0k7a0JBdkJINHFDOztzREFtQkY7d0MsT0E5TFZoRDs7bUJBc01rQnRvQjtzREFUTjRyQjt3QyxPQXhMWnJELGFBdUtZQzs7WUFKdUJ5QyxRQXFCdkJXO1lBckJlVixXQW1CZlM7WUFuQkhSLHFCQUlHM0M7OztxREE0QmE7c0RBQUE7d0RBQUE7eUNBRlB4b0I7c0RBQ042ckI7d0RBQ0Y7O3NEQWhDaUJDO3lDQStCZkQ7c0RBR3NCOzBCQWxDUEM7c0RBQVFDO3dDLE9BcExuQzNELE1Ba05rQnBvQixpQkFqRFB0ZjtZQW1Cd0J1cUMsUUFBQWM7WUFBUmIsV0FBQVk7WUFBbEJYLHFCQUFBUjs7aURBb0VnQjtrREFBQTtVQXpGakJELE9BcUIyQk8sV0FBMUJFLHFCQUFrQkQsVUFEZi8rQjtRQXFFTTYvQjtRQUFUQztnREFDTCxXQURLQSxTQUFTRCxnREFFZjs4Q0FBQTs4Q0FDSCxPQTVGUXRCLE9BekJDaHFDLFFBRUE0cEM7OzZDQW9IVjs2Q0FDRyxPQXpISUY7Y0E1S05oVjs7NENBc1NIO1lBRUc5b0IsT0FBVWlsQixLQUFnQjd3Qjs2Q0FDNUIsS0FEWTZ3QjsrQ0FFSjtRQUNMcHRCLElBSFNvdEI7T0FBQUE7K0NBT0U7TUFESnBsQixLQU5Fb2xCO2dEQU9ONUIsUUFyTkp5WixPQWlOQ2psQyxHQUh5QnpEO2dEQVF0Qmd2QjtRQXROSjBaO29EQXNOa0I7K0JBRlZqOUI7VUFOa0J6TDtZQVF0Qmd2QixhQURBQzs7OENBSEksMENBQUE7S0FBSjdlLElBbE5KczRCLE9BaU5DamxDLEdBSHlCekQ7V0FJdEJvUSxVQUFBQTs0Q0FNTDtZQUVDbzdCLGVBQWtCM2E7NkNBQ3BCLHlDQUVFOztnREFBQTs0QkFIa0JBO2lCQUVsQjVCOytDQUFTLE9BNU5UeVo7ZUE0TkF6WixPQTlJQXNhLGlCQTRJa0IxWTs7OENBRTRCOzZDQUM5QyxnREFBQTs7NENBQ0Q7WUFFQzRhLGFBQWdCNWE7NkNBQ2xCLHlDQUVFOztnREFBQTs0QkFIZ0JBO2lCQUVoQjdCOytDQUFRLE9BbE9SMFo7ZUFrT0ExWixNQXBKQXVhLGlCQWtKZ0IxWTs7OENBRTBCOzZDQUMxQyxnREFBQTs7NENBQ0Q7WUFFQzZhLGVBQWtCN2E7NkNBQ3BCOytDQUFRLFFBUE40YSxhQU1rQjVhOytDQUNPLFVBYnpCMmEsZUFZa0IzYTs7U0FFQTVCLG9CQUFaRDtpQkFBQUEsZUFBWUM7OzZDQUNiOzRDQUNOO1lBRUMwYyxjQUFpQjlhOzZDQUNuQjs4Q0FBQTs4Q0FFRSxNQWpLQTBZLGlCQThKaUIxWTs2QkFFYTlWOzhDQUE5QixJQUFLNnFCOytDQUFpQyxpREFBQTswQkFBakNBLFNBQXlCN3FCOzhDQUF5Qjs2Q0FEekQsZ0RBQUE7OzRDQUlDOzs7O09BL2FIZ21CO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BQ0FDO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDOztPQXFDQTZCO09BQUFDO09BQ0FDO09BQUFxQjtPQUFBTTtPQUFBSzs7O09BMkRJL1E7T0FRQTZTO09BaUJBQztPQVdBQztPQUlBQztPQUlBQztPQVFBQztPQUtBQztPQUtBRTtPQUNBQztPQUNBQztPQUdBRTtPQUNBQztPQUVBQztPQUVBQztPQU1BQztPQUVBQztPQUVBQztPQVFBQztPQVFBQztPQTBCQUU7T0FjQUk7T0FFQUM7T0E0QkFLO09BZ0lBMzlCO09BWUE0L0I7T0FNQUM7T0FNQUM7T0FNQUM7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDMWFKam9DO0lBQUFoRztJQUtBOE87SUFBQXRJO0lBS0EwbkM7SUFBQXo1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBWEEwNUIsVUFDQWxyQzttREFBQTs2REFBQTtrQ0FBQUE7NkRBQUE7a0NBQUFBO21EQUVVO1lBSFZtckMsWUFDQWxxQzttREFBQSxzREFBQTtzQ0FEQWlxQyxXQUNBanFDO21EQUVVO2tEQUZWLFNBQUFtcUM7SUFBQW5vQzttREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O3NEQUFBOztxREFBQTs7Z0JBQUFBOztxREFBQSxzREFBQTs0Q0FBQUYsa0JBQUFFOzs7cURBQUEsc0RBQUE7NENBQUFGLGtCQUFBRTs7Ozs7Ozs7cURBQUEsc0RBQUE7NENBQUFGLGtCQUFBRTs7b0RBQUEsc0RBQUE7MkNBQUFGLGtCQUFBRTs7bURBQUEsc0RBQUE7MENBQUFGLGtCQUFBRTttREFFVTtZQUZWb29DO21EQUFBO21EQUVVO2tEQUZWLFNBQUFDO0lBQUF6c0M7bURBQUE7YUFBQUEscUNBQUFBO2dCQUFBQTs7cURBQUEsc0RBQUE7a0RBQUE5QixRQUFBOEI7Ozs7Ozs7O2lFQUFBO3NEQUFBOUIsUUFBQThCOzs7O2lFQUFBO3NEQUFBOUIsUUFBQThCOzs7O3NEQUFBLHNEQUFBO21EQUFBOUIsUUFBQThCOzs7bURBQUEsc0RBQUE7Z0RBQUE5QixRQUFBOEI7bURBRVU7WUFGVjBzQzttREFBQTttREFFVTs7SUFFVkM7SUFBQUM7WUFBQWpvQzttREFBQSxPQUxBMG5DO29EQVFrQjs7S0FIbEJNO2NBQ0F4ckM7cURBQUE7c0RBQUEsc0RBQUE7bUNBQUFBO1VBREF5RDtxREFDQSwrQ0FBQTs0QkFBQXpEO3FEQURBLCtDQUFBO2NBQUF3RDtxREFBQSwrQ0FBQTtvREFDQXhELGNBREF5RDtxREFBQSxzREFBQTttQ0FDQXpEO3NEQUVrQjs7S0FIbEJ5ckM7Y0FDQXhxQztxREFBQSxzREFBQTt3Q0FEQXVxQyxTQUNBdnFDO3NEQUVrQjtZQUZsQnlxQyxhQUFBbHdCO21EQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7c0RBQUE7O3FEQUFBLHNEQUFBOzRDQUFBM1Asa0JBQUEyUDs7Z0JBQUFBOztxREFBQSxzREFBQTs0Q0FBQTNQLGtCQUFBMlA7OztxREFBQSxzREFBQTs0Q0FBQTNQLGtCQUFBMlA7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7cURBQUEsc0RBQUE7NENBQUE1UCxrQkFBQTJQOztTQUFBRTtRQUFBQSxtQkFBQUE7cURBQUE7T0FBQUMsV0FBQUQ7c0RBQUFFO1NBTEF3dkIsZUFLQXp2QjtxREFBQSxXQUFBQzs7b0RBQUEsc0RBQUE7O2NBQUEvUDtjQUFBNFA7Y0FBQUQ7O21EQUFBLHNEQUFBOzBDQUFBM1Asa0JBQUEyUDtvREFFa0I7WUFGbEJtd0I7bURBQUE7cURBQ0k7b0RBQ0E7S0FBQTFsQjtxREFBQXNFO09BUEo4Z0IsZUFPSXBsQjtvREFBQTt5QkFBQXNFO29EQUFjO1lBRmxCcWhCLGVBQUEvc0M7bURBQUE7YUFBQUE7Z0JBQUFBOztnQ0FBQUE7c0RBQUEsc0RBQUE7bURBQUEwRSxVQUFBMUU7OztpQkFBQUE7O3NEQUFBLHNEQUFBO21EQUFBMEUsVUFBQTFFOzs7OztZQUFBbUY7a0NBQUFBO2FBQUFDO1lBQUFBLGlCQUFBQTt5REFBQTtXQUFBbEYsS0FBQWtGOzBEQUFBakY7YUFMQXNzQyxpQkFLQXZzQzt5REFBQSxXQUFBQzs7d0RBQUEsc0RBQUE7cURBQUF1RSxVQUFBUyxLQUFBbkY7O2tDQUFBbUY7O2tFQUFBO3VEQUFBVCxVQUFBMUU7Ozs7dURBQUEsc0RBQUE7b0RBQUEwRSxVQUFBMUU7Ozs7bURBQUEsc0RBQUE7Z0RBQUEwRSxVQUFBMUU7b0RBRWtCO1lBRmxCZ3RDO21EQUFBO3FEQUNJO29EQUNBO0tBQUE5c0M7cURBQUFDO09BUEp1c0MsaUJBT0l4c0M7b0RBQUE7O3lCQUFBQztvREFBYzs7SUFFbEJ0QjtJQUFBRztZQUFBK087b0RBQUEsT0FMQTQrQjttREFVQztZQUxEem1DO29EQUFBOzttREFLQztZQUxEQztvREFBQTttREFLQzs7S0FMRHRIO2NBQ0FzQyxLQUFBaUI7c0RBQUEsZ0RBQUE7NEJBQUFqQjtzREFBQSxnREFBQTs0QkFBQUE7aUJBQUFpQjtzREFBQSxnREFBQTt3REFEQTtVQUFBK0QsU0FDQWhGOztzREFBQSxnREFBQTs0QkFBQUE7c0RBQUEsZ0RBQUE7NEJBQUFBO3NEQUFBLGdEQUFBOzRCQUFBQTtpQkFBQWlCO3NEQUFBLGdEQUFBO3dEQURBLFdBQUE4RCxPQUNBL0U7O3NEQUFBLGdEQUFBOzRCQUFBQTtzREFBQSxnREFBQTs0QkFBQUE7c0RBQUEsZ0RBQUE7NEJBQUFBO2lCQUFBaUI7c0RBQUEsZ0RBQUE7d0RBREEsV0FBQTJMLE9BQ0E1TTs7c0RBQUEsZ0RBQUE7NEJBQUFBO3NEQUFBLHVEQUFBO21DQUFBQTtxREFJQzs7S0FMRG5DO2NBQ0FvRDtzREFBQSx1REFBQTt3Q0FEQXZELElBQ0F1RDtxREFJQztZQUpEL0QsVUFBQTR1QztvREFBQSxTQUFBQTtxREFBQSx1REFBQTs0Q0FBQWIsa0JBQUFhO29EQUFBO0tBQUFDLGtCQUFBRDtxREFDRUU7cURBQ0FDO3FEQUNBQztxREFIRkM7cURBQUFDO2FBQUFDO3FEQUFBO3FEQUFBO29FQUFBO1VBQUFDO2VBQUFBO2lCQUFBQTs7Ozs7YUFBQUMsMEJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTs4REFBQTtrQkFBQUo7K0RBQUEsdURBQUE7c0RBQUF0QixrQkFBQWE7aUJBQUFTOytEQUFBLHNEQUFBOztrQkFBQUssUUFBQUw7OERBQUEsT0FBQUs7NkRBSUM7b0JBSkREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7bUNBQUFBOzthQUFBSixtQkFBQUksZ0JBQUFKOzttQkFHRUY7WUFIRkMsd0JBQUFLLGdCQUFBTDs7NERBR0U7NkRBSEZVO2dCQUFBRjs2REFHRUc7ZUFSRnBCLGFBS0FtQjtZQUdFWCxrQkFBQVk7O2tCQUZBZDtXQURGRyx3QkFBQUssZ0JBQUFMOzsyREFDRTs0REFERlksbUJBQUFKOzREQUNFcFM7OERBQUE7bUNBREZ3UztXQUNFZixtQkFBQXpSOztpQkFDQTBSO1VBRkZFLHdCQUFBSyxnQkFBQUw7OzBEQUVFOzJEQUZGYSxtQkFBQUw7MkRBRUVNOzZEQUFBO3FDQUZGRDtVQUVFZixxQkFBQWdCOzt1QkFGRlI7Ozs7O3NEQUFBLHVEQUFBOzZDQUFBeEIsa0JBQUFxQjs7b0RBSUM7b0RBSkRELFNBQUFOO09BQUFJO3FEQUFBLHVEQUFBOztjQUFBbEI7Y0FBQWtCO2NBQUFMO09BQUFNO3FEQUFBLHVEQUFBOztjQUFBbkI7Y0FBQW1CO2NBQUFOO2NBQ0VFLG9CQUNBQyx3QkFDQUM7O1NBQUFnQixxQkFEQUMsc0JBREFDO3FEQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEOztvREFIRix1REFBQTs7YUFBQWpDO2FBQUFhOzt3QkFDRUU7O3lCQUNBQzs2QkFDQUM7bURBQ0Q7WUFKRGx2QztvREFBQTtLQUdFcXdDO0tBREFDO0tBREFDO3FEQUVBdHZCO09BUkYwdEIsYUFRRTBCO3FEQUhGRzs0QkFHRXZ2QjtxREFEQW1lO3VEQUFBOytCQUFBa1I7cURBRkZHOzRCQUVFclIsZUFGRm9SO3FEQUNFRTt1REFBQTs0QkFBQUg7cURBREZJOzRCQUNFRCxlQURGRDtvREFBQSxXQUFBRTttREFJQztZQUpEdHdDLFlBQUF3QjtvREFBQTthQUFBQSxxQ0FBQUE7cURBQ0U7TUFERjhILGdCQUFBOUg7c0RBQ0UrdUM7c0RBQ0F6dkI7c0RBQ0EwdkI7c0RBSEYvbUM7c0RBQUFDO01BQUFDOzt5REFBQTt5REFBQTs7MkRBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTs2REFBQTsrREFBQTs7Y0FBQUo7O2dCQUFBSTtnRUFBQTswQ0FBQUo7Ozs4REFHRTt3Q0FBQThtQzthQUhGL21DOztlQUFBSzsrREFHRTt5Q0FIRkw7OzZEQUdFLGdEQUFBO2NBQUFNLFNBUkZ3a0MsZUFLQTFrQzthQUdFMm1DLG9CQUFBem1DOzs7NkRBRkE7dUNBQUF3bUM7WUFERjltQzs7Y0FBQUs7OERBQ0U7d0NBREZMOzs0REFDRSxnREFBQTthQUFBTzsrREFBQTtvQ0FERkg7WUFDRTBtQyxxQkFBQXZtQzs7OzREQUNBO3NDQUFBOFc7V0FGRnJYOzthQUFBSzs2REFFRTt1Q0FGRkw7OzJEQUVFLGdEQUFBO1lBQUFpSTs4REFBQTtzQ0FGRjdIO1dBRUVpWCx1QkFBQXBQOzt3QkFGRjlIOzt3REFJQztxREFKREQsS0FBQUw7O3VEQUFBO2lDQUFBRztzREFBQSxnREFBQTs7eURBQUE7bUNBQUFBO3NEQUFBLHVEQUFBO21EQUFBMEssZUFBQTNTOzs7dURBQUE7aUNBQUFrSTtzREFBQSxnREFBQTs7eURBQUE7bUNBQUFBO3NEQUFBLHVEQUFBO21EQUFBeUssZUFBQTNTOztxREFDRTtzREFBQTt3REFBQTtrQ0FBQSt1QztzREFDQTt3REFBQTtrQ0FBQXp2QjtzREFDQTt3REFBQTtrQ0FBQTB2Qjs7O09BQUFDO09BREExdkI7T0FEQTJ2QjtzREFERjtjQUNFQTtjQUNBM3ZCO2NBQ0EwdkI7O3FEQUhGO3NEQUFBOzs7Ozs0REFHRTtzQ0FBQUQ7Ozs7O3NEQUhGOzs7Ozs0REFFRTtzQ0FBQTF2Qjs7Ozs7c0RBRkY7Ozs7OzREQUNFO3NDQUFBeXZCOzs7OztxREFERix1REFBQTtrREFBQXA4QixVQUFBM1M7O29EQUFBLHVEQUFBO2lEQUFBMlMsVUFBQTNTO21EQUlDO1lBSkR6QjtvREFBQTtLQUdFNHdDO0tBREEzdkI7S0FEQTR2QjtLQUVBdm1DLE1BUkZta0MsZUFRRW1DO0tBQUFybUMsMkJBQUFEO0tBREFFLHlDQUFBeVc7S0FBQXhXLGdDQUFBRCxRQUNBRDtLQUZBMkgsc0NBQUEyK0I7S0FBQTErQiw4QkFBQUQsUUFDQXpIO29EQUZGOztZQUNFMEg7bURBR0Q7WUFHR2pTLEdBQU9nc0I7cURBQW9DLEdBQXBDQTtTQUFLQyxNQUFMRCxRQUFBNGtCLE9BQUsza0I7O1NBQUwya0I7cURBQW9DO1NBQWhCekYsZ0JBQU4wRixRQUFNMUY7O1NBQU4wRjtxREFBNkM7WUFBN0NBOztZQUFkRDttREFJVjtZQUVHRSxVQUFZQztxREFBVSxpREFBUzttQkFBbkJBO3FEQUFVO2dCLE9BTnRCL3dDO29EQU1xRTtZQUVyRWd4QztvREFDRjtvREFFWTtZQUVWQyxXQUFjOVc7cURBQXVCO0tBSW5DNFcsU0FURkMsVUFLYzdXLE9BQUFBO3NEQUtBO3dEQUFBO3dDQURaNFc7O3FEQUNKO3VEQUFBOztpQztvREFBQSx1REFBQTs4REFBc0Q7OzttREFDdkQ7b0RBRVcsaURBQUE7SUFBUjNrQixRQXJCQXBzQjtZQXVCQStCLElBQU8xQixHQUFHODVCO3FEQUFRO1dBQVJBO3NEQUEwQjt3REFBQSxXQUE3Qjk1QixHQUFHODVCO3FEQUFRO1lBQVJBOzs7b0RBQXlDO1lBRW5EK1csYUFBZUM7cURBQWE7V0FBYkE7V0FBQUE7cURBQWE7NERBRXZCO2lDQUZVQTs7O21EQUdsQjtZQUVHQyxTQUFZRDtxREFBaUIsd0RBQUE7YUFBakJBO29EQUFtRDtZQUUvRDFXLEtBQVFqMUI7cURBQUQ7S0FBOEJvckM7S0FBVHp2QjtLQUFQMHZCO3NEQUFnQztPQUFoQ0E7MkRBS1I7a0NBTGUxdkIsU0FBcEIzYjsyREFJSTtpQ0FKSkEsR0FBb0IyYjtxREFDMUJrd0I7dURBQ0Y7O29EQU1GO1lBUnVCUjtZQUNuQlE7WUFEbUNUO21EQVN4QztZQUVHalcsSUFBT1I7b0RBQ1Q7YUFEU0E7V0FBQUE7c0RBQ3VCO3dEQUFBOzRCQUR2QkE7Ozt1REFRUzs7T0FEVTMwQjtPQUFUMmI7d0RBQ0Q7MERBQUE7Z0NBRFUzYjtPQUNmcUI7T0FBTm91QjthQVJFa0Y7d0RBU29COzBEQUFBO3VCQUZWaFosU0FDWjhUO3NEQUNMO2tCQURXcHVCLFNBUkpzekI7O3NEQUtTO01BREZrWDtNQUFOdnFDO3VEQUNRO3lEQUFBOytCQURSQTtNQUNBOHRCO01BQUgwYztZQUxFblg7dURBTW9CO3lEQUFBO3NCQURuQnZGLFFBRE15YztxREFFZDtpQkFES0MsU0FMRW5YOztxREFHUzttREFPakI7WUFFQ29YO3FEQUF5Qyx3REFBQTs7b0RBQTRCOzs7O09BekV6RTNEO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BSUFudUM7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FPSUU7T0FNQTh3QztPQUVBRTtPQUtBQztPQVFBN2tCO09BRUFycUI7T0FFQW12QztPQUtBRTtPQUVBM1c7T0FXQUU7T0FZQTRXOzs7O2E7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNoRUk5bUM7WUFDQXhIO29EQUFhO21DQURid0g7bURBQ3NCO1lBRXRCbzJCLEdBQU03NUIsR0FBVzNELEdBQVdtdUM7b0RBQWlCO3FEQUNyQ0M7dURBQXlCOzZCQURoQnB1QztxREFDZHF1Qzt1REFBa0I7NkJBRGYxcUM7cURBRUQ7dURBQUE7NEJBRnVCd3FDLFNBQXRCeHFDLE1BQ0gwcUM7Z0VBRUs7b0RBQ29CO0tBQXZCckk7cURBQXVCO3VEQUFBOzRCQUF2QkEsU0FKWWhtQyxNQUNUb3VDO29EQUdvQix1REFBQTs7a0RBRS9CO1lBQ0dFLEdBQU0zcUMsR0FBRzNELEdBQUdtdUM7b0RBQVEsT0FQcEIzUSxHQU9TeDlCLEdBQUgyRCxHQUFNd3FDO21EQUFxQjtZQUNqQ0ksR0FBTTVxQyxHQUFHM0QsR0FBR211QztvREFBUTtxREFBQyxXQVJyQjNRLEdBUU03NUIsR0FBRzNELEdBQUdtdUM7dUJBRFpHLEdBQ00zcUMsR0FBRzNELEdBQUdtdUM7b0RBQTJCO21EQUFhO1lBRXBESyxXQUFjMWUsS0FBV3h6QjttREFDM0IsK0NBQUE7O3NEQUFBO1NBRGdCd3pCLFFBQVd4ekI7bURBQzNCO3FEQUVpQztzREFBdkIwRDt3REFBdUI7OEJBSGpCOHZCO3NEQUdUbnNCO3dEQUFjOzhCQUhMbXNCO3NEQUlMeGdCO3dEQUF5Qjs4QkFKVGhUO3NEQUlwQitTO3dEQUFnQjs4QkFKSS9TO2FBR3BCcUgsSUFDQTBMO29CQUFBQSxNQURHclA7Ozs7aUJBQ0hxUCxNQURBMUwseUJBQUFBLElBQ0kyTDs7Ozs7O2tEQUVWO1lBRUNtL0IsU0FBWUMsSUFBSW5LLElBQUk0SjtrQkFFTnhxQzttQkFFSzNEO3NEQUNYLGdEQUFDO2tCQWJUd3VDLFdBVWM3cUMsR0FFSzNEOzt1REFDVyxnREFBQTtlQXZCOUJ3OUIsR0FvQmM3NUIsR0FFSzNELEdBSkNtdUM7dURBS1U7d0RBZnpCLE9BQUxJLEdBWWM1cUMsR0FFSzNELEdBSkNtdUM7Ozs7O3NEQUtVO3FEQUErQjtxREFEdkQsdURBQUE7OERBQUE7O2NBSlU1SjtvREFNVDttREFMVCxzREFBQTs0REFDRzs7YUFGV21LO21EQU9WO1lBRUZ6dUMsSUFBTzhQLEdBQUc0ckIsR0FBRzdzQjtrQkFFVjlPO29EQUNMLHVEQUhxQjtpQ0FFaEJBLEdBRk8yN0I7b0RBR0c7b0RBRE4sZ0RBQUE7O3VEQUFBOzRCQUZNN3NCLEdBQU5pQjttREFHVCxzREFBQTs7a0RBQ0Q7WUFFRzVQLElBQU80UCxHQUFHNHJCLEdBQUc3c0I7b0RBQU0sZ0RBRVo7O3VEQUFBOzRCQUZNQSxHQUFOaUI7O1NBSUEvUCxjQUhMc1AsTUFHS3RQOzs7TUFITHNQO3dEQUVRO2dDQXZDVmxJO21EQTBDRiwrQ0FBQTswQkFMSWtJLEtBRFFxc0I7bURBTVosc0RBQUE7aUNBTmU3c0IsR0FBTmlCLEdBQ0xUO2tEQU9MO1lBRUdxL0IsU0FBWTF4QyxJQUFJZ08sS0FBS2tqQztrQkFFUnArQjtxREFBUzs7dURBQ1o7NEJBSFdvK0IsU0FBVGx4QyxJQUVDOFM7c0RBR3NCLGdEQUFBOzt5REFBQTtpQ0FuRG5DM0k7c0RBbURhLGdEQUFBOzRCQUxRK21DLFNBQVRseEMsSUFFQzhTOztrQkFBQUEsUUFaYjVQLFFBVVlsRCxJQUVDOFMsZ0JBRkQ5UyxJQUVDOFMsSUFGUW8rQjtvREFRbkI7bURBUEosc0RBQUE7NERBQ0c7O2FBRmVsakM7bURBUWI7WUFHSDJqQyxXQUFjVDtvREFBaUI7cURBQ1Y7dURBQUE7NkJBRFBBO3FEQUNaVTt1REFBTzs7a0JBRUl6bkMsR0FBRzdIO3FEQUNiLFNBRFU2SDtzREFDRTttQkFJRzJJO29CQUVLNHJCO3VEQUNSLEdBdENmMTdCLElBbUNrQjhQLEdBRUs0ckIsR0FWVHdTO3dEQVljO3VEQUVIO3dEQUFBLFFBekN6Qmx1QyxJQW1Da0I4UCxHQUxGeFEsR0FIRjR1Qzt3REFjMkI7VUF6Q3pDbHVDLElBOEJnQlYsR0FPT284QixHQVZUd1M7O3dEQVhILE9BVlhodUMsSUE2QmtCNFAsR0FFSzRyQixHQVZUd1M7dURBZ0JrQjtzREFHaEI7cURBakJsQixzREFBQTsrREFRZTs7ZUFUWFU7cURBbUJZO29EQWxCaEIsc0RBQUE7OERBTVU7O2NBUE5BO29EQXFCRTttREFwQk4sc0RBQUE7NERBQ0c7O2FBRkNBO2tEQXVCTDtrREF4RlksK0NBQUE7OztPQU9Uem5DO09BQ0F4SDtPQUVBNDlCO09BT0E4UTtPQUNBQztPQUVBQztPQVFBQztPQVNBeHVDO09BTUFFO09BVUF3dUM7T0FXQUM7WUFpQ0FuZixRQUFXbnpCO3FEQUFjO3NEQUVJO3dEQUFBO3lCQUZsQkE7c0RBRUw7d0RBQUE7OEJBRktBO3FEQUFjOzZEQUNuQjttQ0FES0EsTUFBQUE7O21EQUdkO1lBRUcyTixNQUFTcTlCLEtBQU14NEI7cURBQVU7WUFBVkE7WUFBTnc0Qjt5QkFFY2wzQixLQUFHaEo7c0RBQU8sV0FBVmdKLE1BQUdoSjtxREFBbUI7cURBQXZDO3NEQUFBO3dEQUFBOztZQUZTMEg7WUFBTnc0Qjt5QkFDY3I4QjtzREFBVyxXQUFYQTtxREFBb0I7cURBRGxCOzZEQUNuQjs7O21EQUVUO1lBRUc2akMsSUFBTzd4QyxJQUFJNlI7cURBQU07a0NBQVY3UixJQUFJNlI7b0RBQThCO1lBRXpDaWdDLFdBQWMxZCxJQUFrQnZpQjtpQkFDckJ4UztzREFBYyxPQUh6Qnd5QyxJQUdXeHlDLE1BRHFCd1M7cURBQ0s7b0RBQXZDLHVEQUFBO21DQURnQnVpQjtvREFDNEI7WUFFMUN4SyxZQUFlL1g7b0RBQ2pCLFVBRGlCQTtpQkFFRTdSLElBQUltSztzREFDbEIsaURBQWlCOzt5REFBQTtnQ0FESG5LLElBRkY2UjtZQUVNMUg7OytEQUNiOzs7O3FEQUFzQztvREFEN0MsdURBQUE7NkRBQUE7OztvREFFQzttREF6Qk87b0RBQUE7VUFNVHFvQixTQUtBeGxCLE9BS0E2a0MsS0FFQUMsWUFHQWxvQjs7Ozs7Ozs7cURBVUFtb0I7dURBQVE7O1lBQ1JDLFdBQVkzeUMsR0FBVzR5QztvREFDekIsaURBQU87O3dEQUFBO2tCQURPNXlDLE1BQVc0eUM7O3NEQVNGO01BTmhCQztZQUFBQTt1REFNZ0I7eURBQUE7MEJBVFQ3eUM7MEM7dURBU0s7aUM7dURBQVg7eURBQUE7O3VEQUZGO3lEQUFBOytCQVBRQTt1REFJUjh5QyxVQURDRDtxREFVTCx1REFBQTtxQkFiWTd5QyxNQUlSOHlDLEtBSm1CRjs7cURBRUwsaURBQUE7O3dEQUFBO21CQUZONXlDO3FEQUVKLHdEQUFBO2tCQUZJQSxXQUFXNHlDO21EQWN4QjtvREFsQlcsaURBQUE7cURBR1ZGLFNBQ0FDO1lBOEJGSTtxREFBYSxpREFBOEI7O3dEQUFBOztxREFBOUI7NkRBQVE7OztvREFBb0M7WUFFekRDLFFBQVd4WTtxREFBRDtLQUFvQnlZO0tBQVFDO3NEQUNwQ25lO3dEQUFLO2dDQURJeUY7aUJBSUN4NkI7c0RBQWMsZ0RBQ3ZCO2tCQURTQSxHQUprQml6QztrQ0FJbEJqekMsTUFBQUEsTUFKMEJrekM7b0RBT3BDO29EQUpKLGdEQUFBO3NEQUNHOztNQUhDbmU7O2lCQVdJb2UsTUFBc0JDO3NEQUFpQixHQUF2Q0Q7VUFHUUUsU0FIUkY7dURBR2lCLGlEQUFBO21CQUFURSxXQUhjRCxTQVpFSDs7c0RBaUJ2QixXQUxxQkc7cURBTXRCO29EQVJOLGdEQUFBO3NEQUNHOztNQVZEcmU7b0RBc0JKLGdEQUFBOzt1REFBQTs0QkF0QklBOztzREF1QlM7TUFBYXJ4QjtNQUFYMkQ7dURBQ0EreEI7eURBQThCOzBCQURuQjExQjt1REFDaEI0MUI7eURBQWtCOzBCQURianlCO3VEQUVBeXFDO3lEQUF5Qjs4QkFGZHB1Qzt1REFFaEJxdUM7eURBQWtCOzhCQUZiMXFDO3FEQUdWLGdEQUFBO3FCQUhVQSxNQUVMMHFDLFVBRmdCcnVDLE1BRVhvdUMsTUExQnlCb0I7UUEwQjlCbkIsU0FEQXpZLHNCQUNLd1k7c0RBSGYsdURBQUE7NkJBQzBCcHVDLE1BRVhvdUMsa0JBRkF6cUMsVUF4QnlCNnJDOztZQTBCOUJuQixTQURBelk7d0JBQ0t3WTs7K0RBSGY7O29CQUMwQnB1QyxNQUNYMDFCO29CQURBL3hCLE1BRUwwcUM7Z0JBMUI4Qm1COztvREEyQ3BDO29EQXBCSix1REFBQTs2REFDRzs7O21EQW9CSjtrREF4TWdCO21EQUFBO2dDQTBKYkgsUUFFQUM7SUErQ052eUM7SUFBQUc7WUFBQTJGO29EQUFBOztvREFDMEI7O0tBRDFCOUY7Y0FDQXNDLEtBQVNpQjtzREFBQSxnREFBQTs0QkFBVGpCOzttQkFBU3VMLEtBQUF0Szt1REFBQSxHQUFBc0s7d0RBQUEsZ0RBQUE7OEJBQVR2TDt1REFBUyxnREFBQTt5REFEVDtXQUFBd0QsT0FDQXhEO1NBQVNpQjt1REFBQTt1REFBaUI7c0RBQWpCLGdEQUFBO21DQUFBQTtzREFBQSx1REFBQTttQ0FBVGpCO3NEQUEwQjs7S0FEMUJuQztjQUNBb0Q7c0RBQUEsdURBQUE7d0NBREF2RCxJQUNBdUQ7c0RBQTBCO21EQUExQixTQUFBL0QsVUFBQXNPO29EQUFBLHVEQUFBO3VEQUFBQTtvREFBMEI7WUFBMUJ4TyxVQUFBeU87b0RBQUEsdURBQUE7dURBQUFBO29EQUEwQjttREFBMUIsU0FBQXBPLFlBQUFKO2U7OzthQUFBQTs7WUFBQUcsWUFBQTZDO2U7OzthQUFBQTs7T0FFSXlwQjtZQUVBNm1CLFdBQWNDO3FEQUFVLGlEQUVmO0tBQVBDO3dEQUFPOztpQkFDS2haO3NEQUFPLHVEQUF2Qjs0QkFBZ0JBLEtBRFpnWjtxREFDcUM7b0RBQXpDLGdEQUFBO3NEQUFNOztNQUhVRDtvREFJaEIsZ0RBQUE7d0JBRklDO29EQUVKLE9BRklBO21EQUlMO29EQUtnQixpREFBQTtJQUFiQzt1REFBYTs4QkFYYkg7WUFhQXhZLEtBQU9OO3FEQUFPLHdEQUFBO3VDQUFQQTs7OytEQUFpQzs7K0RBQVM7K0JBQTFDQTtvREFBd0Q7b0RBRXpCLGlEQUFBO0lBQXRDa1o7dURBQXNDO3lCQUZ0QzVZO1lBSUFFLFdBQzJDdVk7b0RBQTNDO0tBQU9qWjtLQUFMQzs7cURBSUo7TUFEVTFzQjtNQUFKQztzREFHTmluQjt3REFGTztpQ0FERGpuQjtVQUdOaW5CO3VEQURRO3FCQUZGam5CLElBQUlEO3NEQUtjO01BRnJCN04sSUFBSCswQjt1REFFd0I7eURBQUE7VUFmdEIwZSxjQU8yQ0Y7TUFRdENOO01BQVFDO3VEQUNUN1E7eURBQVE7MkJBSFhyaUMsTUFFSWl6Qzt1REFFRDVoQjt5REFBUTsyQkFEUmdSO3FEQUVKLEdBREloUjtVQUFBc2lCLFVBQUF0aUI7O3NEQUVBO3VEQUFBO3lEQUFBOzRCQVpGa0osS0FTRThIO3VEQUdBOzs7MkRBQWdDOzZCQVo3Qi9ILEtBU0grSDt1REFHZ0M7dURBQ2pDO3dEQUFBOzBEQUFBOzZCQWJEOUgsS0FNSnhGLElBRWVtZTt3REFFVFM7OzZEQUlEOytCQVJMNWUsSUFOU3VGLEtBUU00WTs7O1dBRVRTOztZQUFBQSxrQkFBQXRpQixPQVBBdmpCLElBQUlEO29EQWFSO3FEQWJjLGlEQUFBOzt3REFBQTs0QkFINkIwbEM7b0RBSTdDLHVEQUFBOzttREFhRDtZQUVHSyxXQUFjTDtvREFDaEIsS0FEZ0JBO3NEQUVSO3FEQUVDO0tBRE56bEMsS0FIYXlsQztzREFJUDt3REFBQTtnQ0FETnpsQztpRUFFTztxREFHSztLQUZWOU47c0RBRUd3ekM7d0RBQU87U0FsQ2JDLGNBMEJjRjtzREFTTzt3REFBQTswQkFIbEJ2ekMsTUFFR3d6QztvREFDSDs7NERBQUE7O21EQUVKO1lBRUMvZixnQkFBbUJzQixJQUFrQndlO2lCQUVwQ0EsSUFBSXZ6QztxREFDSDt1REFDMEI7eURBQUE7aUNBRnZCQTt1REFFUzt5REFBQTs7c0RBRFo7d0RBQUE7MERBQ0c7O1VBRkp1ekM7a0JBS00vWTt1REFBVyx3REFBQzt5Q0FBWkE7O29CQUFBQTtzREFBbUM7cURBSnhDLHVEQUFBOzhEQUVHOzs7cURBSUM7b0RBUlIsdURBQUE7bUNBRHVDK1ksSUFBbEJ4ZTttREFZcEI7WUFFQzhlLFVBQWE3ekMsR0FBWXV6QztvREFHM0IsS0FIMkJBO3NEQUluQjtjQUptQkE7O1NBS2IxdEM7cURBQ1osU0FEWUE7Z0JBQUFBOztXQUVLNE4sWUFBSWdIOztTQUFKaEg7OzJEQUNKOzRCQURRZ0g7d0RBRW5CLHVEQUFBO2lFQUFBO21DQUZtQkEsT0FBSmhIO2lCQVBKelQ7dURBUVgsc0RBQUE7Ozs7c0RBRUs7O29EQUVGO21EQUNOO1lBRUM4ekMsK0JBQXNDUCxJQUFPL1k7cURBQXdCLGlEQUk3RDtLQUFObjNCO3dEQUFNO2dDQUpxQ20zQjtpQkFTN0N4MkI7cURBSEEsVUFHQUE7Ozs7V0FGbUNyRDt3REFBa0I7MERBQUE7NEJBQWxCQSxJQUhqQzBDO3dEQUlBOzs7c0RBQ0ssV0FBUFc7cURBQWM7b0RBSmhCLHVEQUFBO21DQUx3Q3V2QzttREFZekM7Ozs7O09BaEdEOXlDO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BRUlzc0I7T0FhQWduQjtPQUVBM1k7T0FFQTRZO09BRUExWTtPQW9CQTRZO09BYUFuZ0I7T0FjQW9nQjtPQWVBQzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7OztJQy9SSkM7SUFBQWowQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBREFXO0lBQUFHO1lBQUFrSDttREFBQTs7a0RBSUM7WUFKRHZCO21EQUFBOztrREFJQzs7S0FKRDlGO2NBQ0FzQyxLQUFBaUI7cURBQUEsK0NBQUE7NEJBQUFqQjtxREFBQSwrQ0FBQTs0QkFBQUE7aUJBQUFpQjtxREFBQSwrQ0FBQTt1REFEQSxXQUFBdUMsT0FDQXhEOztxREFBQSwrQ0FBQTs0QkFBQUE7cURBQUEsK0NBQUE7NEJBQUFBO3FEQUFBLCtDQUFBOzRCQUFBQTtpQkFBQWlCO3FEQUFBLCtDQUFBO3VEQURBLFdBQUE4RCxPQUNBL0U7O3FEQUFBLCtDQUFBOzRCQUFBQTtxREFBQSxzREFBQTttQ0FBQUE7b0RBR0M7O0tBSkRuQztjQUNBb0Q7cURBQUEsc0RBQUE7d0NBREF2RCxJQUNBdUQ7b0RBR0M7a0RBSEQsU0FBQS9ELFVBQUEyUDttREFBQSxTQUFBQTtvREFBQSxzREFBQTs0Q0FBQW1rQyxrQkFBQW5rQzttREFBQTtLQUFBQyxrQkFBQUQ7b0RBQ0Vva0M7b0RBQ0FDO29EQUZGQztvREFBQUM7YUFBQUM7b0RBQUE7b0RBQUE7bUVBQUE7VUFBQWhrQztlQUFBQTtrQkFBQUE7Ozs7O2FBQUFpa0MsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTs2REFBQTtrQkFBQUo7OERBQUEsc0RBQUE7c0RBQUFOLGtCQUFBbmtDO2lCQUFBeWtDOzhEQUFBLHFEQUFBOztrQkFBQUssUUFBQUw7NkRBQUEsT0FBQUs7NERBR0M7b0JBSEREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7O1lBQUFILG1CQUFBRyxnQkFBQUg7O2tCQUNFSDtXQURGRSx3QkFBQUksZ0JBQUFKOzswREFDRTsyREFERlMsbUJBQUFGOzJEQUNFRzs2REFBQTt1Q0FERkQ7V0FDRVgsc0JBQUFZOztpQkFDQVg7VUFGRkMsd0JBQUFJLGdCQUFBSjs7eURBRUU7MERBRkZXLG1CQUFBSjswREFFRUs7NERBQUE7dUNBRkZEO1VBRUVaLHVCQUFBYTs7dUJBRkZQOzs7OztxREFBQSxzREFBQTs2Q0FBQVIsa0JBQUEzakM7O21EQUdDO21EQUhEZ2tDLFNBQUF2a0M7T0FBQXFrQztvREFBQSxzREFBQTs7Y0FBQUg7Y0FBQUc7Y0FBQXRrQztPQUFBdWtDO29EQUFBLHNEQUFBOztjQUFBSjtjQUFBSTtjQUFBdmtDO2VBQ0Vva0MseUJBQ0FDOztTQUFBYywwQkFEQUM7b0RBREY7YUFDRUE7YUFDQUQ7O21EQUZGLHNEQUFBOzthQUFBaEI7YUFBQW5rQzs7d0JBQ0Vva0M7NEJBQ0FDO2tEQUNEO1lBSERsMEM7bURBQUE7S0FFRWsxQztLQURBQztvREFDQXZRO3NEQUFBO2tDQUFBc1E7b0RBRkZFOzRCQUVFeFE7b0RBREF5UTtzREFBQTtnQ0FBQUY7b0RBREZHOzRCQUNFRCxlQURGRDttREFBQSxXQUFBRTtrREFHQztrREFIRCxTQUFBajFDLFlBQUF3QjttREFBQTthQUFBQSxxQ0FBQUE7b0RBQ0U7TUFERjhILGdCQUFBOUg7cURBQ0UwekM7cURBQ0FDO3FEQUZGMXJDO3FEQUFBQztNQUFBQzs7d0RBQUE7d0RBQUE7dUVBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBOzJEQUFBOzZEQUFBOzthQUFBSjs7ZUFBQUk7OERBQUE7eUNBQUFKOzs7NERBQ0U7dUNBQUF3ckM7WUFERnpyQzs7Y0FBQUs7NkRBQ0U7d0NBREZMOzsyREFDRSwrQ0FBQTthQUFBTTs4REFBQTt3Q0FERkY7WUFDRXFyQyx3QkFBQW5yQzs7OzJEQUNBO3NDQUFBb3JDO1dBRkYxckM7O2FBQUFLOzREQUVFO3VDQUZGTDs7MERBRUUsK0NBQUE7WUFBQU87NkRBQUE7eUNBRkZIO1dBRUVzckMseUJBQUFuckM7O3dCQUZGSjs7dURBR0M7b0RBSERELEtBQUFMOztzREFBQTtpQ0FBQUc7cURBQUEsK0NBQUE7O3dEQUFBO21DQUFBQTtxREFBQSxzREFBQTttREFBQS9KLGNBQUE4Qjs7O3NEQUFBO2lDQUFBa0k7cURBQUEsK0NBQUE7O3dEQUFBO21DQUFBQTtxREFBQSxzREFBQTttREFBQWhLLGNBQUE4Qjs7b0RBQ0U7cURBQUE7dURBQUE7a0NBQUEwekM7cURBQ0E7dURBQUE7a0NBQUFDOztVQUFBQyw4QkFEQUM7cURBREY7Y0FDRUE7Y0FDQUQ7O29EQUZGO3FEQUFBOzs7OzsyREFFRTtzQ0FBQUQ7Ozs7O3FEQUZGOzs7OzsyREFDRTtzQ0FBQUQ7Ozs7O29EQURGLHNEQUFBO2tEQUFBeDFDLFFBQUE4Qjs7bURBQUEsc0RBQUE7aURBQUE5QixRQUFBOEI7a0RBR0M7WUFIRHpCO21EQUFBO0tBRUV1MUM7S0FEQUM7S0FDQWxyQywwQ0FBQWlyQztLQUFBaHJDLGdDQUFBRDtLQURBRSwwQ0FBQWdyQztLQUFBL3FDLGlDQUFBRCxRQUNBRDttREFGRjs7WUFDRUU7a0RBRUQ7bURBRVcsZ0RBQUE7SUFBUjZoQjtZQUVBcU8sS0FBUXJ6QixHQUFnQjVCLEdBQVlvaUM7cURBQWEsV0FBYkE7cURBQWE7NkRBRXpDO3NDQUZBeGdDLEdBQWdCNUIsR0FBWW9pQzs7bURBR3ZDO1lBRUd4TixRQUFXaHpCLEdBQWdCd3JCLEtBQWdCZ1Y7cURBQWEsaURBQzNDO0tBQVgyTjt3REFBVztpQ0FERm51QyxHQUFnQndyQixLQUFnQmdWO29EQUU3QztZQURJMk47WUFEeUMzTjttREFHOUM7WUFFR2pOLElBQU92ekIsR0FBZ0J3Z0M7b0RBQ3pCLGdEQUFPOzt1REFBQTtpQ0FERXhnQyxHQUFnQndnQzs7NkJBRWQyTix1QkFBSC92QztzREFBaUI7aUJBQWpCQSxPQUFHK3ZDLFVBRmMzTjs7ZUFBQUE7Z0VBS2Y7cURBR1U7S0FGVTROOztLQUFkQztLQUFWQztzREFFRUM7d0RBQVk7aUNBRmREO29EQUdGO3FEQUVBO01BRlNIO01BQUgvdkM7cURBRU47YUFGTUE7aUJBQUcrdkMsVUFIaUJDO3FEQUtDO3FEQURSO3NEQUFBO3dEQUFBOzthQVZFNU4sV0FRakIrTixnQkFGUUY7c0RBSUQ7d0RBQUE7aUNBVk5ydUM7b0RBV0wsdURBQUE7O21EQUVIO1lBRUM0eUIsSUFBUWhPO3FEQUFGLEdBQUVBO1NBQUlDLE1BQUpELFFBQUFtTyxNQUFJbE87O1NBQUprTztxREFBbUI7c0RBQVdxYjtLQUFWRDtzREFDaEI7d0RBQUE7cUNBREpwYixNQUFvQm9iO29EQUM5Qix1REFBQTs0Q0FEd0NDO29EQUNjO1lBRXBESTtxREFBeUI7S0FBd0JKOztLQUFOdmI7S0FBTEM7cURBQTZCLEdBQWxCc2I7c0RBS2xDO01BRFhweUMsSUFKNkNveUM7dURBS2xDO3lEQUFBO2tDQURYcHlDO01BQ01DO01BQUgyRDtNQUpMc3pCOzthQUlLdHpCLEdBTCtCa3pCOzBEQU10Qjt1QkFOMkJELFNBS2pDNTJCOztTQUpSaTNCLFdBRG9DSixLQUFLRDtvREFRN0MsdURBQUE7cUNBUElLO21EQVFMO1lBRUc0RixPQUNFbFU7b0RBQUYsR0FBRUE7U0FBSUMsTUFBSkQsUUFBQW1PLE1BQUlsTzs7U0FBSmtPO3FEQUFtQjtzREFBNkJxYjs7S0FBVHRhO0tBQVJDO3FEQUVuQzt1REFBQTtrQ0FGb0RxYTtpQkFJdENod0M7c0RBQUs7dURBQWdDO3lEQUFBO3NCQUovQzIwQixLQUF1Q2U7dURBSUQ7eURBQUE7c0JBSlBDO3NEQUloQjs4REFBVTs2Q0FBZjMxQjtxREFBc0Q7b0RBRnBFLHVEQUFBOzZEQUVHOzs7b0RBQWtFO1lBRW5FcXdDO3FEQUFnQjtLQUFZTDtLQUFWRDtxREFBK0IsS0FBckJDO3NEQUV0QjthQUZZRDthQUFVQztRQUdYTSxjQUhXTixjQUd2Qk8sU0FIdUJQO3FEQUdHOzZEQUNuQjswQ0FKTUQsY0FHYlE7WUFBWUQ7bURBS3BCO1lBRUdockI7cURBQWM7S0FBWTBxQjtLQUFWRDtzREFDRjs7UUFERUE7OzBEQUNTO29DQURDQzs7cURBQ1osd0RBQUE7O29EQUE2QztZQUUzRHZoQjtxREFBUztLQUFZdWhCO0tBQVZEO3NEQUNUMTFDO3dEQUFJO2tDQURlMjFDO3NEQUVuQkM7d0RBQVc7aUNBRkZGLFVBQ1QxMUM7b0RBRUo7WUFESTQxQztZQUZtQkQ7bURBSXhCO1lBRUd2ZSxRQUFXN3ZCO3FEQUdHO0tBSHdCb3VDO0tBQVZEO3NEQUcxQk87d0RBQVk7a0NBSHdCTjtxREFNcEM7dURBQUE7aUNBTjBCRDs7S0FLV3RiO0tBQUxkO0tBQVJvSDs7S0FBVnhJO0tBQUxtQjtLQUFMZ0I7S0FJSzhiLE9BSktqZTtLQUlNa2UsT0FKSTFWO3NEQUtaM0k7d0RBQTBCO29DQUxkMkk7c0RBS25CMUk7d0RBQWlCO29DQUxSRTtzREFNTjt3REFBQTs0QkFGQ2llOztTQWFHRTtRQWJRRDtVQUdBRSxNQUhBRjs7d0RBSWxCOytCQVNVQyxLQVZRQzt3REFHRDt5REFBQTsyREFBQTtzQ0FWSzVWO1FBRWI2VjtRQUFSNVY7MkRBUUk7c0NBVk96STtjQUxMM3dCOztRQU9FZ3ZDOzJEQVljO3NDQWREN1Y7UUFFckJDLFdBR0UzSTs7O1FBSE11ZSxXQUdDeGU7UUFIVDRJOzJEQVdjO3NDQWJIekk7Ozt1REFrQlo7OEJBRFVtZSxLQWpCb0IvYztVQUVyQmlkLFdBR0N4ZSxPQUhUNEksV0FHRTNJOzs7T0FITXVlLFdBR0N4ZTtPQUhUNEk7MERBZ0I0QztxQ0FsQmpDekk7O1lBSU1rZTtTQWVWaHBDLElBZlVncEM7O3dEQWdCbEI7OEJBRFFocEMsR0FuQkRpc0I7VUFFRWtkLFdBR0N4ZSxPQUhUNEksV0FHRTNJOzs7T0FITXVlOzJEQWtCMkM7cUNBcEI5QjdWO09BRXJCQyxXQUdFM0k7Ozt1REFpQkg7NkJBdEJPcUIsS0FBdUJDO1NBRXJCaWQsV0FHQ3hlLE9BSFQ0SSxXQUdFM0k7WUFWSXp3Qjt1REFvQ1U7d0RBQVA4dkI7MERBQU87dUNBL0JWZ0MsS0FBS25CO01BRUhxZSxXQUdDeGU7TUFIVDRJOzBEQThCTTtxQ0FER3RKOzt1REFITzt3REFBUE87MERBQU87dUNBNUJhMEIsS0FBUm9IO01BRWI2VjswREEyQks7cUNBREozZTtNQTFCVCtJLFdBR0UzSTtzREFnQ1E7dURBQUE7eURBQUE7cUJBbkNGdWUsVUFGMEJuYztzREFEckN3Yjs7eURBc0NEO3NCQXJDS3ZiLEtBRURzRzs7cURBcUNQO1lBeENJaVY7WUFEQUs7O1lBNENGTywwQkFBdUR6TztzREFBbEM7S0FBS3ROO0tBQUhsM0I7dURBQTZDLE1BQWJ3a0M7dURBRTlDOzs7U0FGY3hrQzsyREFFVDt1Q0FGWWszQixVQUE2QnNOOztzREFBYTs7O29EQUd2RTtZQUNHME8saUJBQW9CaGMsTUFBa0JzTjtzREFBYSxVQUFiQTtzREFBYTs4REFFM0M7MENBRll0TixVQUFrQnNOOztvREFHekM7WUFFR3hqQyxPQUFVbXlDO2lCQUVUM08sSUFBTzRPO3NEQUNOO3VEQUFBO3lEQUFBOzJCQVpGSCxvQkFXQ3pPLE9BQU80TztZQUFQNU87c0RBQ0M7eUIsT0FSRjBPOzs7c0RBU2tDO29EQS9IMUIsdURBQUE7bUNBMkhFQyxLQTNIVm5xQjtvREFrSUQ7WUFFQ3FxQixrQkFBcUI3TztxREFDdkIsVUFEdUJBO2dFQUVmLE9BRmVBO3FEQUlyQjtLQURleEg7O0tBQVY5RjtLQVdBbDNCO3NEQVZMLE1BSnFCd2tDO3NEQUtuQjt3REFBQTswREFDRzttQ0FRQXhrQzs7c0RBVEg7d0RBQUE7MERBRUc7OztLQUhHQztLQUFIMkQ7cURBSUwsYUFJS3JIO3VEQUFjOzJCQUFkQSxNQUFBQTtzREFBMEM7aUJBRjFDQSxHQUFXcTVCO3NEQUFaO01BQTBCdEg7TUFBUmhIO3dEQUNVOzBEQUFBO3NCQUQzQi9xQixVQUFXcTVCLEtBQWN0SDt3REFDakI7MERBQUE7c0JBRFIveEIsTUFBaUIrcUI7dURBQ1UseURBQUE7O3NEQUE0QjtxREFGMUQsaURBQUE7S0FERWdzQjt3REFDRjs7T0FMRzF2Qzt1REFjd0I7Z0JBZHhCQTtNQWF1QjJ2QztNQUFUcFg7TUFBVHFYO3dEQUNtQjswREFBQTtVQVZ6QkYsZUFTZW5YO01BQ0FMO01BQVZFO1lBSkpoOEI7O2lCQVV1QnN1QjsyREFBUSx5REFBTzs4QkFBZkEsVUFQbEJrbEIsU0FDUzFYOzBEQU00Qzt3REFEdkQ7MERBQUE7NERBQ0c7OztZQVZOOTdCOztpQkFPc0NpUjsyREFBTTs4QkFBTkEsSUFIbEMrcUI7MERBR3FEO3dEQUFoRDswREFBQTs0REFBWTs7O3dEQUZsQmlCO1lBTEhqOUIsTUFBQUEsTUFBQUE7TUFBR3NQLE1BR29CaWtDO01BV3ZCRSxNQVRHeFc7O1NBTEFwTyxNQWRhMlYsVUFjYmwxQixNQUFBdWYsS0FjSDRrQixNQWRBenpDO09BVkdDO3VEQTRCcUI7Z0JBNUJyQkE7TUEyQm9CeXpDO01BQVR0WDtNQUFUdVg7d0RBQ21COzBEQUFBO1VBeEJ6QkwsZUF1QmVsWDtNQUNBUDtNQUFWRTtZQUpKMFg7O2lCQVV1Qm5sQjsyREFBUSx5REFBQTtrQ0FQUm9sQixTQUNUN1gsU0FNU3ZOOzBEQUFtQzt3REFEdkQ7MERBQUE7NERBQ0c7OztZQVZObWxCOztpQkFPc0N4aUM7MkRBQU0seURBQUE7OEJBSHhDOHFCLFVBR2tDOXFCOzBEQUFtQjt3REFBaEQ7MERBQUE7NERBQVk7Ozt3REFGbEIyaUM7WUFMSEgsUUFBQUEsUUFBQUE7TUFBR2xrQyxNQUdFb2tDO01BSExFLE1BS0dEOztTQUxBNWtCLE1BNUJhd1YsVUE0QmJqMUIsTUFBQXlmLEtBQUg2a0IsTUFBQUo7cURBY0w7Z0JBNUJRbmtDLEtBY0FDO29CQUFIc2tDLEtBekJBM2MsT0FBVThGO29EQXdDaEI7WUFFQzhXLG9CQUF1QnRQO3NEQUFVLFVBQVZBO3NEQUFVOzhEQUV6QjtzQ0FGZUE7O29EQUcxQjtZQUVHM2MsV0FBYzJjO3NEQUFhLFNBQ3JCblUsR0FBTW1VO3NEQUNaLGtEQUFPOzswREFBQTtpQ0FES0E7bUVBRUosT0FGSUE7c0RBSVY7TUFEQ2pvQzt1REFDRCxNQUpVaW9DO3VEQUtSO3lEQUFBOzREQUNHO29DQUhKam9DOzt3REFDTTswREFBQTs0REFHRjs7Ozs7d0RBRVUseURBQUE7Ozt3REFXSjs7T0FGaUJtM0M7T0FBVHRYO09BQVR1WDs7T0FEa0JKO09BQVRwWDtPQUFUcVg7eURBR0pPO1NBcEJGMWpCLFdBaUJNbWpCLFNBQ2tCRSxVQWxCbEJsUDt3REFxQlIsTUFESXVQO2FBQUFBO3lEQUNBM0I7Ozs2REFDRDtxQ0FMY2pXLFNBQ0FDOzs7eURBT2IrVjthQVJzQm9CLFNBQ2xCSTt1REFRUjtjQURJeEI7Y0FKQUM7O3VEQVRGOztNQUY2QjRCO01BQVRDO01BQVRDO3dEQUVYO1FBWkE3akIsV0FBTW1VLFVBVXVCd1AsWUFWdkJ4UDtNQVdtQmtPOztNQUFON2I7TUFBTEM7d0RBRVovRzswREFBSTs4QkFIY2trQjt3REFJRzs7U0FKWkM7Ozs2REFJdUI7aUNBRGhDbmtCO1dBRmlCOEc7O3dEQUdqQlk7MERBQU07O3NEQUNWO2lCQUpnQlgsS0FHWlc7YUFIdUJpYjtxREFpQjlCO3FEQUNILE9BN0JRcmlCO2FBbkROZ2pCLGtCQTZDQVMsb0JBS2N0UDtvREErQmpCOzs7O09BM05EeG5DO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BS0lzc0I7T0FFQXFPO09BS0FMO09BS0FPO09BZUFYO09BR0E0YjtPQVdBMVY7T0FPQTJWO09BVUEvcUI7T0FHQW1KO09BTUFnRDtPQStDQW9mO09BSUFDO09BS0FseUM7T0FTQXF5QztPQTZDQVM7T0FLQWpzQjs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDeExGeGxCO0lBQUFoRztJQWtCRndVO0lBQUFoTztJQXVCQXN4QztJQUFBcmpDO0lBTUEydUI7SUFBQXp1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBaERFaFUsR0FDQXNDO2dEQUFBO2lEQUFBLG1EQUFBO2lDQUFBQTtRQURBOEwsZUFBQXJJO2dEQUNBLDRDQUFBOzBCQUFBekQ7Z0RBREEsNENBQUE7bURBR1U7NEJBRlZBO01BREF5RDtnREFDQSw0Q0FBQTswQkFBQXpEO2dEQURBLDRDQUFBO21EQUdlOzRCQUZmQTtNQURBOEw7Z0RBQUEsbURBQUE7aUNBQ0E5TDtnREFFbUI7WUFIbkJuQyxLQUNBb0Q7Z0RBQUEsbURBQUE7c0NBREF2RCxJQUNBdUQ7Z0RBRW1COytDQUZuQixTQUFBL0QsVUFBQXdHO2dEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7bURBQUE7O2tEQUFBLG1EQUFBOzRDQUFBWCxrQkFBQVc7O2dCQUFBQTs7a0RBQUEsbURBQUE7NENBQUFYLGtCQUFBVzs7O2tEQUFBLG1EQUFBOzRDQUFBWCxrQkFBQVc7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7a0RBQUEsbURBQUE7NENBQUFaLGtCQUFBVzs7U0FBQUU7aURBQUEsR0FBQUE7aUJBQUFBOzttREFBQTtRQUFBdUk7UUFBQXRJLFdBQUFEO29EQUFBd0k7c0RBQUE7NkJBQUF2STtvREFBQXdJO3NEQUFBOzZCQUFBRjttREFBQTtlQUFBQztlQUFBQzs7O2lEQUFBLG1EQUFBOztjQUFBdEo7Y0FBQVk7Y0FBQUQ7O2dEQUFBLG1EQUFBOzBDQUFBWCxrQkFBQVc7Z0RBRW1CO1lBRm5CMUc7Z0RBQUE7aURBQ0k7Z0RBQ0E7S0FBQTgzQztLQUFBbjVCO2lEQUFBeUo7bURBQUE7MEJBQUF6SjtpREFBQW81QjttREFBQTswQkFBQUQ7Z0RBQUE7eUJBQUExdkIsY0FBQTJ2QjtnREFBZTsrQ0FGbkIsU0FBQTEzQyxZQUFBd0I7Z0RBQUEsVUFBQUE7Z0JBQUFBOztnQ0FBQUE7bURBQUEsbURBQUE7bURBQUE5QixRQUFBOEI7OztpQkFBQUE7O21EQUFBLG1EQUFBO21EQUFBOUIsUUFBQThCOzs7OztZQUFBbUY7a0NBQUFBO2FBQUFDO3FEQUFBLEdBQUFBO3FCQUFBQTs7dURBQUE7WUFBQW5GO1lBQUFDLEtBQUFrRjt3REFBQWpGOzBEQUFBOzBEQUFBRDt3REFBQUU7MERBQUE7MERBQUFIO3VEQUFBLFdBQUFFLE1BQUFDOzs7cURBQUEsbURBQUE7cURBQUFsQyxRQUFBaUgsS0FBQW5GOztrQ0FBQW1GOzsrREFBQTt1REFBQWpILFFBQUE4Qjs7OztvREFBQSxtREFBQTtvREFBQTlCLFFBQUE4Qjs7OztnREFBQSxtREFBQTtnREFBQTlCLFFBQUE4QjtnREFFbUI7WUFGbkJ6QjtnREFBQTtpREFDSTtnREFDQTtLQUFBMEI7S0FBQUM7aURBQUFDO21EQUFBO2tEQUFBRDtpREFBQUU7bURBQUE7a0RBQUFIO2dEQUFBOzt5QkFBQUUsVUFBQUM7Z0RBQWU7WUFFZisxQztpREFDRjtTQUdRdHdDOztVQUFHb3JDO29EQUFNLFdBQVRwckMsR0FBR29yQzs7O2tEQURNO2lEQUNlO1lBRTlCbUY7aURBQ0Y7bURBQ1c7UUFDQW5GO2tEQUFNLE9BQU5BO2lEQUFXO2dEQWZYO2lEQUFBOztPQUNicHlDO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BSUk0M0M7T0FNQUM7SUFPTm4xQztJQUFBZ0Y7WUFBQTBhO2lEQUFBO2dEQU9DO1lBUEQ1UztpREFBQTtnREFPQztZQVBEN0g7aURBQUE7Z0RBT0M7WUFQRHZCO2lEQUFBOztnREFPQzs7S0FQRDFEO2NBQ0FFLEtBQUFpQjttREFBQSw2Q0FBQTs0QkFBQWpCO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQWlCO21EQUFBLDZDQUFBO3FEQURBLFdBQUF1QyxPQUNBeEQ7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBaUI7bURBQUEsNkNBQUE7cURBREEsV0FBQThELE9BQ0EvRTs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFpQjttREFBQSw2Q0FBQTtxREFEQSxXQUFBMkwsT0FDQTVNOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQWlCO21EQUFBLDZDQUFBO3FEQURBLFdBQUF1ZSxPQUNBeGY7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSxvREFBQTttQ0FBQUE7a0RBTUM7O0tBUEQ4RTtjQUNBN0Q7bURBQUEsb0RBQUE7d0NBREFuQixNQUNBbUI7a0RBTUM7WUFORDNCLFlBQUF3c0M7aURBQUEsU0FBQUE7a0RBQUEsb0RBQUE7NENBQUF2NkIsa0JBQUF1NkI7aURBQUE7S0FBQUMsa0JBQUFEO2tEQUNFb0o7a0RBQ0FDO2tEQUNBQztrREFDQUM7a0RBSkZDO2tEQUFBQzthQUFBeGdDO2tEQUFBO2tEQUFBO2lFQUFBO1VBQUF1M0I7ZUFBQUE7a0JBQUFBOzs7OzthQUFBa0osMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQXJnQztVQUFBdWdDO3FCQUFBRjtzQkFBQUc7MkRBQUE7a0JBQUFIOzREQUFBLG9EQUFBO3NEQUFBamtDLGtCQUFBdTZCO2lCQUFBMEo7NERBQUEsbURBQUE7O2tCQUFBbGdDLFFBQUFrZ0M7MkRBQUEsT0FBQWxnQzswREFNQztvQkFORHFnQzs7VUFBQUEsaUJBQUFELGlCQUFBRjtpQ0FBQUM7a0NBQUFBO21DQUFBQTtvQ0FBQUE7O2NBQUFGLG1CQUFBRSxnQkFBQUY7O29CQUNFTDthQURGSSx3QkFBQUcsZ0JBQUFIOzswREFDRTsyREFERk0sbUJBQUFEOzJEQUNFamdDOzZEQUFBOzJDQURGa2dDO2FBQ0VWLHVCQUFBeC9COzttQkFFQTAvQjtZQUhGRSx3QkFBQUcsZ0JBQUFIOzt5REFHRTswREFIRk8sbUJBQUFGOzBEQUdFbmdDOzREQUFBO3lDQUhGcWdDO1lBR0VULHVCQUFBNS9COztrQkFDQTYvQjtXQUpGQyx3QkFBQUcsZ0JBQUFIOzt3REFJRTt5REFKRlEsbUJBQUFIO3lEQUlFcGI7MkRBQUE7MEJBSkZ1YjtXQUlFVCxtQkFBQTlhOztpQkFGQTRhO1VBRkZHLHdCQUFBRyxnQkFBQUg7O3VEQUVFO3dEQUZGUyxtQkFBQUo7d0RBRUUvL0I7MERBQUE7c0NBRkZtZ0M7VUFFRVosc0JBQUF2L0I7O3VCQUZGVDs7Ozs7bURBQUEsb0RBQUE7NkNBQUE1RCxrQkFBQSs2Qjs7aURBTUM7aURBTkR2M0IsU0FBQWczQjtPQUFBdUo7a0RBQUEsb0RBQUE7O2NBQUEvakM7Y0FBQStqQztjQUFBeEo7T0FBQXlKO2tEQUFBLG9EQUFBOztjQUFBaGtDO2NBQUFna0M7Y0FBQXpKOztZQUNFb0o7WUFDQUM7WUFDQUM7YUFDQUM7OztNQUFBVztNQURBQztNQURBQztNQURBQztrREFERjthQUNFQTthQUNBRDthQUNBRDthQUNBRDs7aURBSkYsb0RBQUE7O2FBQUF6a0M7YUFBQXU2Qjs7d0JBQ0VvSjs7eUJBQ0FDOzswQkFDQUM7OEJBQ0FDO2dEQUVEO1lBTkRsMkM7aURBQUE7S0FJRWkzQztLQURBQztLQURBQztLQURBQztrREFHQWpTO29EQUFBO21CQUFBOFI7a0RBSkZoZ0M7NEJBSUVrdUI7a0RBREFudUI7b0RBQUE7aUNBQUFrZ0M7a0RBSEYvL0I7NEJBR0VILGVBSEZDO2tEQUVFQztvREFBQTtnQ0FBQWlnQztrREFGRjkvQjs0QkFFRUgsZUFGRkM7a0RBQ0VDO29EQUFBO2tDQUFBZ2dDO2tEQURGQzs0QkFDRWpnQyxlQURGQztpREFBQSxXQUFBZ2dDO2dEQU1DO1lBTkQ3MkMsY0FBQWQ7aURBQUE7YUFBQUEscUNBQUFBO2tEQUNFO01BREY4SCxnQkFBQTlIO21EQUNFNDNDO21EQUNBQzttREFDQUM7bURBQ0FDO21EQUpGOXZDO21EQUFBQztNQUFBQzs7c0RBQUE7c0RBQUE7cUVBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7MkRBQUE7NkRBQUE7OztlQUFBSjs7aUJBQUFJOzhEQUFBOzJDQUFBSjs7OzREQUNFO3lDQUFBMHZDO2NBREYzdkM7O2dCQUFBSzs2REFDRTswQ0FERkw7OzJEQUNFLDZDQUFBO2VBQUFNOzhEQUFBOzRDQURGRjtjQUNFdXZDLHlCQUFBcnZDOzs7MkRBRUE7d0NBQUF1dkM7YUFIRjd2Qzs7ZUFBQUs7NERBR0U7eUNBSEZMOzswREFHRSw2Q0FBQTtjQUFBTzs2REFBQTswQ0FIRkg7YUFHRXl2Qyx5QkFBQXR2Qzs7OzBEQUNBO3VDQUFBdXZDO1lBSkY5dkM7O2NBQUFLOzJEQUlFO3dDQUpGTDs7eURBSUUsNkNBQUE7YUFBQWlJOzREQUFBOzJCQUpGN0g7WUFJRTB2QyxxQkFBQTduQzs7O3lEQUZBO3NDQUFBMm5DO1dBRkY1dkM7O2FBQUFLOzBEQUVFO3VDQUZGTDs7d0RBRUUsNkNBQUE7WUFBQXNkOzJEQUFBO3VDQUZGbGQ7V0FFRXd2Qyx3QkFBQXR5Qjs7d0JBRkZuZDs7cURBTUM7a0RBTkRELEtBQUFMOztvREFBQTtpQ0FBQUc7bURBQUEsNkNBQUE7O3NEQUFBO21DQUFBQTttREFBQSxvREFBQTttREFBQXZELGdCQUFBMUU7OztvREFBQTtpQ0FBQWtJO21EQUFBLDZDQUFBOztzREFBQTttQ0FBQUE7bURBQUEsb0RBQUE7bURBQUF4RCxnQkFBQTFFOztrREFDRTttREFBQTtxREFBQTtrQ0FBQTQzQzttREFDQTtxREFBQTtrQ0FBQUM7bURBQ0E7cURBQUE7a0NBQUFDO21EQUNBO3FEQUFBO2tDQUFBQzs7O09BQUFDO09BREFDO09BREFDO09BREFDO21EQURGO2NBQ0VBO2NBQ0FEO2NBQ0FEO2NBQ0FEOztrREFKRjttREFBQTs7Ozs7eURBSUU7c0NBQUFEOzs7OzttREFKRjs7Ozs7eURBR0U7c0NBQUFEOzs7OzttREFIRjs7Ozs7eURBRUU7c0NBQUFEOzs7OzttREFGRjs7Ozs7eURBQ0U7c0NBQUFEOzs7OztrREFERixvREFBQTtrREFBQWx6QyxVQUFBMUU7O2lEQUFBLG9EQUFBO2lEQUFBMEUsVUFBQTFFO2dEQU1DO1lBTkRZO2lEQUFBO0tBSUV3M0M7S0FEQUM7S0FEQUM7S0FEQUM7S0FHQTF2QywyQkFBQXV2QztLQUFBdHZDLDRCQUFBRDtLQURBRSwyQ0FBQXN2QztLQUFBcnZDLGtDQUFBRCxRQUNBRDtLQUZBMkgsMENBQUE2bkM7S0FBQTVuQyxpQ0FBQUQsUUFDQXpIO0tBRkFnZCw0Q0FBQXV5QjtLQUFBdHlCLGtDQUFBRCxRQUNBdFY7aURBRkYsc0JBQ0V1VjtnREFLRDtZQUVHdmtCO2lEQUNJLDhDQUdPOzs7Ozs7OzswREFDa0I7Ozs7O2lEQUp6QjswREFDTzs7Ozs7Z0RBUVo7WUFFQzgyQztrREFBa0IscURBQUE7O2lEQUFPO1lBRTdCQyxjQUNBdDNDO2lEQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztpREFHVztZQUpYdTNDLGdCQUNBdDJDO2lEQUFBLG9EQUFBO3NDQURBcTJDLGVBQ0FyMkM7aURBR1c7Z0RBSFgsU0FBQXUyQztJQUFBQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7O3FEQUFBOztvREFBQTs7bURBQUE7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUE1QyxrQkFBQTRDOzs7bURBQUEsb0RBQUE7NENBQUE1QyxrQkFBQTRDOzs7Ozs7Ozs7OztvREFBQSxvREFBQTs2Q0FBQTVDLGtCQUFBNEM7O21EQUFBLG9EQUFBOzRDQUFBNUMsa0JBQUE0Qzs7a0RBQUEsb0RBQUE7MkNBQUE1QyxrQkFBQTRDOztpREFBQSxvREFBQTswQ0FBQTVDLGtCQUFBNEM7aURBR1c7WUFIWEM7aURBQUE7O29EQUNJOztvREFDQTs0REFDQTs7aURBQU87Z0RBSFgsU0FBQUM7SUFBQTk0QztpREFBQTthQUFBQSxxQ0FBQUE7Z0JBQUFBOzttREFBQSxvREFBQTtrREFBQTJTLFVBQUEzUzs7Ozs7Ozs7K0RBQUE7c0RBQUEyUyxVQUFBM1M7Ozs7K0RBQUE7c0RBQUEyUyxVQUFBM1M7Ozs7K0RBQUE7c0RBQUEyUyxVQUFBM1M7Ozs7b0RBQUEsb0RBQUE7bURBQUEyUyxVQUFBM1M7OztpREFBQSxvREFBQTtnREFBQTJTLFVBQUEzUztpREFHVztZQUhYKzRDO2lEQUFBOztvREFDSTs7b0RBQ0E7NERBQ0E7O2lEQUFPOztJQUVYQztJQUFBQztZQUFBdHJDO2lEQUFBLE9BTkE4cUM7aURBV3FCO1lBTHJCdHlDO2lEQUFBLE9BTkFzeUM7aURBV3FCOztLQUxyQk87Y0FDQTczQzttREFBQTs7OzhEQUFBO3FDQUFBQTs4REFBQTtxQ0FBQUE7O1dBREF5RDtvREFDQSw2Q0FBQTs2QkFBQXpEO29EQURBLDZDQUFBO2VBQUFnRjtvREFBQSw2Q0FBQTtxREFDQWhGLGNBREF5RDtvREFBQSxvREFBQTtvQ0FDQXpEOztVQURBcWI7bURBQ0EsNkNBQUE7NEJBQUFyYjttREFEQSw2Q0FBQTtjQUFBd007bURBQUEsNkNBQUE7b0RBQ0F4TSxjQURBcWI7bURBQUEsb0RBQUE7bUNBQ0FyYjttREFJcUI7O0tBTHJCODNDO2NBQ0E3MkM7bURBQUEsb0RBQUE7d0NBREE0MkMsV0FDQTUyQzttREFJcUI7WUFKckI4MkMsZUFBQUM7aURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7Ozs7OztzREFBQTs7cURBQUEsb0RBQUE7OENBQUE3WCxrQkFBQTZYOztvREFBQSxvREFBQTs2Q0FBQTdYLGtCQUFBNlg7O21EQUFBOztnQkFBQUE7O21EQUFBLG9EQUFBOzRDQUFBN1gsa0JBQUE2WDs7O21EQUFBLG9EQUFBOzRDQUFBN1gsa0JBQUE2WDtTQUFBQzs7NkJBQUFBOzs4QkFBQUE7OytCQUFBQTtnQ0FBQUE7bUNBQUFBO21DQUFBQTttQ0FBQUE7aUNBQUFBOztxREFBQSxvREFBQTs4Q0FBQTlYLGtCQUFBNlg7O1dBQUFFO1VBQUFBLG1CQUFBQTtxREFBQTtTQUFBQyxXQUFBRDtzREFBQUU7V0FOQVosbUJBTUFXO3FEQUFBLFdBQUFDOztvREFBQSxvREFBQTs7Z0JBQUFqWTtnQkFBQThYO2dCQUFBRDs7VUFBQUs7U0FBQUEsbUJBQUFBO29EQUFBO1FBQUFDLFdBQUFEO3FEQUFBRTtVQU5BZixtQkFNQWM7b0RBQUEsV0FBQUM7O21EQUFBLG9EQUFBOztlQUFBcFk7ZUFBQThYO2VBQUFEOztrREFBQSxvREFBQTsyQ0FBQTdYLGtCQUFBNlg7O2lEQUFBLG9EQUFBOzBDQUFBN1gsa0JBQUE2WDtpREFJcUI7WUFKckJRO2lEQUFBOzs7a0RBR0k7TUFBQUM7bURBQUFDO1FBVEpoQixtQkFTSWU7a0RBQUE7MEJBQUFDOztpREFDQTtLQUFBQztrREFBQUM7T0FWSmxCLG1CQVVJaUI7aURBQUE7eUJBQUFDO2lEQUFpQjtZQUpyQkMsaUJBQUFoNkM7aURBQUE7YUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7O29EQUFBLG9EQUFBO21EQUFBNlMsVUFBQTdTOzs7aUJBQUFBOztvREFBQSxvREFBQTttREFBQTZTLFVBQUE3Uzs7Ozs7WUFBQW1GO2tDQUFBQTs7Z0VBQUE7dURBQUEwTixVQUFBN1M7O2tDQUFBbUY7YUFBQXNZO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7YUFOQW03QixxQkFNQXA3Qjt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7cURBQUE5SyxVQUFBMU4sS0FBQW5GOztrQ0FBQW1GO2FBQUFDO1lBQUFBLGlCQUFBQTt1REFBQTtXQUFBbEYsS0FBQWtGO3dEQUFBakY7YUFOQTI0QyxxQkFNQTU0Qzt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7cURBQUEwUyxVQUFBMU4sS0FBQW5GOztrQ0FBQW1GOztnRUFBQTt1REFBQTBOLFVBQUE3Uzs7OztxREFBQSxvREFBQTtvREFBQTZTLFVBQUE3Uzs7OztpREFBQSxvREFBQTtnREFBQTZTLFVBQUE3UztpREFJcUI7WUFKckJpNkM7aURBQUE7OztrREFHSTtNQUFBLzVDO21EQUFBQztRQVRKNDRDLHFCQVNJNzRDO2tEQUFBOzswQkFBQUM7O2lEQUNBO0tBQUF1ZDtrREFBQUM7T0FWSm83QixxQkFVSXI3QjtpREFBQTs7eUJBQUFDO2lEQUFpQjtZQUVqQnU4QjtpREFDRjs7OztpREFJZTtZQUViQyxhQUFnQnI3QyxHQUF1QnM3QztrREFBWSw2Q0FFOUM7eURBQUEsV0FGV3Q3QyxHQUF1QnM3QztrREFBWTtZQUFaQTtZQUFBQTtZQUFBQTs7Z0RBRzFDO1lBQ0dDLFVBQWFDOzttREFBK0MsT0FBL0NBO2tEQUFvRDtrREFBVjtnQixPQUp2REg7aURBSWtFO1lBRWxFSSxpQkFBb0J6N0MsR0FBK0JzN0M7a0RBQVk7WUFBWkE7bURBRTFDO3FEQUFBLFdBRld0N0MsR0FBK0JzN0M7a0RBQVk7WUFBWkE7WUFBQUE7OztnREFHdEQ7WUFFR0ksZ0JBQ0YxN0M7a0JBQXNCdW5DO21EQUFNLFdBQU5BO21EQUFNOzJEQUFrQjtlQUE5Q3ZuQyxHQUFzQnVuQzs7a0RBQXVDO2tEQUF2QztnQixPQU5wQmtVO2lEQU00RDtZQUU1RDViLE9BQVV5YjtpREFDWixxREFBc0I7MENBRFZBLFVBQUFBO2lEQUMyQztZQUVyRDlGLGNBQWlCOEY7a0RBQVk7WUFBWkE7bURBRVI7cURBQUE7a0NBRlFBO2tEQUFZO1lBQVpBO1lBQUFBOzs7Z0RBR3BCO1lBRUczaEIsSUFBTzJoQjtpREFDVCxxREFBbUI7MENBRFZBLFVBQUFBO2lEQUMyQztZQUVsRDVoQixNQUFTbkg7a0RBQXNCOzBEQUN0Qjs7O29CQURBQTs7aURBUVo7WUFFR29wQjtrREFDQTs7S0FHbUM5Z0I7S0FBUkM7O0tBRFhoYTtLQUFTMHZCO2tEQU0zQixPQU4yQkE7OzZEQVFmOzRCQVBpQjFWLFFBRFhoYTtjQUNtQitaOztjQUFSQzs2REFNVjs0QkFQRGhhLFNBQ21CK1o7aURBUXBDO1lBRUMrZ0IsYUFBZ0JOO2tEQUNsQjtZQURrQkE7b0RBQ0w7c0RBQUE7a0NBREtBO21EQUNMLHNEQUFBOztrREFBMEQ7WUFFckVPLHVCQUNGcjhDO2tEQUFLLDhDQUFBOztxREFBQTtpQ0FBTEE7a0RBQUsscURBQUE7NERBQStCOzs7a0RBQWdDO1lBRWxFczhDLHdCQUNGdDhDO2tEQUFLLDhDQUFBOztxREFBQTtpQ0FBTEE7a0RBQUsscURBQUE7NERBQWdDOzs7a0RBQWdDO1lBRW5FdThDLG1CQUNGdjhDO2tEQUFLLCtDQUE0QjtZQUovQnM4Qyx3QkFJRnQ4QztrREFBSztZQVBIcThDLHVCQU9GcjhDOztrREFBNEQ7WUFFMURvM0IsUUFBVzd2QixHQUFnQnUwQzttREFBWTs7b0RBQ25DO2lDQUR1QkE7bURBQzdCLG9EQUFBOzttREFDZ0IsK0NBQUE7S0FBWlU7c0RBQVk7a0NBRkhqMUMsR0FBZ0J1MEM7a0RBRzdCO1lBSDZCQTtZQUFBQTtZQUV6QlU7WUFGeUJWO2lEQUk5QjtZQUVHMW5CLE9BQVUwbkI7bURBQVk7O29EQUNsQjtpQ0FETUE7bURBQ1osb0RBQUE7O21EQUNrQjtZQUZOQTtvREFFTTtzREFBQTtrQ0FGTkE7a0RBRVo7WUFGWUE7WUFBQUE7OztpREFHYjtZQUVHVyxlQUFrQmwxQyxHQUFnQnUwQzttREFBWSwrQ0FBQTtZQUw5QzFuQixPQUtrQzBuQjttREFBWTt3QixPQVg5QzFrQixRQVdrQjd2Qjs7O2tEQUFxRDtZQUV2RW0xQyxzQkFBeUJaO2tEQUMzQixXQUQyQkE7O29EQUVMOzthQUZLQTthQUFBQTthQUFBQTtrREFHcEIsT0FIb0JBO2lEQUkxQjtZQUVDYSxTQUFheHdCO21EQUFvQixHQUFwQkE7U0FBYUMsTUFBYkQsUUFBQXl3QixlQUFheHdCOztTQUFid3dCO21EQUFnQztvREFLM0NDO09BTFdELGVBTmJGO21EQVlGLE9BRElHO21EQUVGO3FEQUFBO3VEQUNHO21DQUhEQSxXQUFBQTs7bURBQ0FMO3FEQUNGOzttREFHRWxMOztrREFDSjtZQURJQTtZQUxBdUw7WUFDQUw7WUFEQUs7aURBT0w7WUFDR0MsaUJBQXFCM3dCO21EQUFvQixHQUFwQkE7U0FBYUMsTUFBYkQsUUFBQXl3QixlQUFheHdCOztTQUFid3dCO21EQUNSLCtDQUFBO2dCQURRQTtrREFDdkIsT0F4RUV6aUI7dUMsT0EwREF3aUI7a0RBY2lDO1lBRWpDSSxpQkFBb0J6TCxXQUF3QndLO21EQUEyQjtLQUNyRXBRLE1BRDBDb1E7b0RBSzFDZTtPQXJCRkYsZ0JBZ0JvQnJMLFdBQXdCd0ssTUFBQUEsTUFBQUE7a0RBTTlDLFdBTElwUSxLQUlBbVI7aURBRUw7WUFFR0csY0FBaUIxaUIsS0FBa0J3aEI7a0RBQ3JDLE9BVkVpQjtjQVNpQnppQixLQUFrQndoQjs7a0RBQ1I7WUFFM0JtQixlQUFrQm5COzttREFFcEI7TUFEU1U7TUFBSDcyQztxREFDRjJyQzt1REFBWTttQ0FEVjNyQyxHQURjbTJDO21EQUdwQjthQURJeEs7YUFGZ0J3SzthQUNYVTthQURXVjttREFHUzttREFGUCwrQ0FBQTs7c0RBQUE7a0NBREZBLFNBQUFBO2tEQUVwQixxREFBQTs7aURBRUQ7WUFHR29CLGlCQUFvQnBCO21EQUFvQiw4Q0FDbkM7O3FEQUFBO2tDQURlQTs7bURBTXBCOztNQURTeEs7TUFBSDNyQztvREFDTixPQU5vQm0yQztvREFPbEI7c0RBQUE7d0RBQ0c7b0NBSEl4SyxjQUFIM3JDOztvREFDRjYyQztzREFDRjs7bURBR0Y7aUJBTFNsTCxXQUxXd0ssTUFNaEJVLFdBTmdCVjs7bURBR0osK0NBQUE7S0FBWnFCO3NEQUFZO2tDQUhJckI7bURBSUwsT0FYZm1CO2lCQVVJRSxhQUhnQnJCLE1BQUFBLE1BQUFBO2lEQVl2QjtZQUVHekssYUFBZ0J5SzttREFBWTtZQUFaQTtZQUFBQTtZQUFBQTttREFBWTsyREFFbkI7dUNBRk9BOzs7O2lEQUduQjtZQUVHc0IscUJBQXdCNzFDLEdBQWdCdTBDO21EQUFZO1lBQVpBOzs7b0RBQ3RDeEs7O3VEQUFvQzs2QkFEZC9wQzs7O21EQUVqQixPQXhEUG8xQztvQkF1REVyTCxXQURzQ3dLLE1BQUFBLE1BQUFBO2lEQUczQztZQUVHdUIsS0FBUTkxQyxHQUFnQnUwQztrREFDMUI7O29EQUFHO2lDQUR1QkE7bURBU25CO2FBZExzQixxQkFLUTcxQyxHQUFnQnUwQzs7bURBSXhCO01BRFNVO01BQUg3MkM7cURBR2M7dURBQUE7NkJBTlo0QjtvREFLTjtzREFBQTt3REFDRzswQ0FIQzVCO1VBQUc2MkM7b0RBQ0xjO3NEQUNGOzttREFHRjthQVJ3QnhCO2FBQUFBO2FBSXBCd0I7YUFKb0J4QjttREFRTjttREFMSSwrQ0FBQTs7c0RBQUE7a0NBSGR2MEMsR0FBZ0J1MEM7a0RBSXhCLHFEQUFBOztpREFPRDtZQUVDeUIsT0FBVWgyQyxHQUFnQnUwQztrREFDNUIsT0FEWXYwQyxNQUFnQnUwQztjQTVDMUJtQixlQTRDMEJuQjtjQXJDMUJvQixpQkFxQzBCcEI7a0RBQ29DO1lBRTlEMEIsUUFBVzFCO21EQUFZO29EQUNMO09BNURsQmlCLDBDQTJEV2pCO0tBQ0VlO0tBQVZZO21EQUNMLE9BREtBO21EQUVIO3FEQUFBO3VEQUNHOzs7bURBREg7cURBQUE7dURBRUc7OzttREFIRG5NO3FEQUNGOzttREFJRjtxREFBQTtnQ0FMSUE7a0JBTVN4eEM7b0RBQWMsT0FBZEE7bURBQWtCO2tEQUQvQiw4Q0FBQTs7cURBQUE7dURBQ0c7OztrREFESCw4Q0FBQTs7bURBR2UsK0NBQUE7S0FBWDQ5QztzREFBVztpQ0FSWHBNLFdBRFd1TDtrREFVZjtZQVZlQTtZQVNYYTtZQVRXYjtZQUFBQTtpREFXaEI7WUFFR2MsU0FBYXh4QjttREFBbUIsR0FBbkJBO1NBQWFDLE1BQWJELFFBQUF5eEIsZUFBYXh4Qjs7U0FBYnd4QjtrREFFYjttREFERUY7cURBQ0Y7O29EQUNrQjtPQTVFbEJYO0tBNEVhRjtLQUFWWTttREFFSDtxREFBQTtnQ0FGR0E7a0JBR2UzOUM7bURBQ2IsOENBQUE7O3NEQUFBO2tDQURhQSxHQUhMKzhDO21EQUlSOzttREFEYS84QyxHQUhMKzhDO21EQUs2QztrREFIMUQ7bURBQUE7cURBQUE7dURBQ0c7OztLQUZZZ0I7S0FBWkM7a0RBT0wsR0FYZUY7bURBYVQ7b0RBQUE7c0RBQUE7K0NBVERFO01BT0RDO3NEQUVFOzs7U0FGRkEsZUFQQ0Q7a0JBVW9CaCtDO29EQUFjLE9BQWRBO21EQUFrQjttREFBNUIsK0NBQUE7O3NEQUFBO2dDQUhYaStDO2tEQUdKLDhDQUFBOztrREFFRTttREFBQTtxREFBQTt1REFDRzttQ0FiWUY7U0FIYkg7bURBa0JHO3FEQUFBO3dEQUFjOztTQVJqQks7bURBUUc7O2tDO2tEQUFBO21EQUFBO3FEQUFBO3dEQUEyQzs7O21EQUo5Q0M7cURBQ0Y7dURBRUc7OztrREFHTDtZQWxCZW5CO1lBWVhtQjtZQVpXbkI7WUFBQUE7aURBbUJoQjtZQUVHb0IsU0FBVTEyQyxHQUFnQnUwQztrREFDNUIsOENBQUE7c0MsT0ExQ0V5QixPQXlDVWgyQyxXQUFnQnUwQztrQyxPQXhCMUI2QjtrREF5QkYscURBQUE7NERBQWtCOzs7a0RBQW9CO1lBRXBDTyxTQUFZMzJDLEdBQWdCdTBDO21EQUFvQiwrQ0FDMUM7S0FBSmUsTUE1QkZjLFlBMkI0QjdCOzttREFHOUI7TUFEaUI0QjtNQUFSN3NCO29EQUNUO3NEQUFBO2lDQURTQTttQkFFSS93QjtxREFBYyxPQUFkQTtvREFBa0I7bURBRC9CLDhDQUFBOztzREFBQTt3REFDRzs7O21EQURILDhDQUFBOztvREFHUTtxREFBQTtZQUxKKzhDLFFBQ2FhLFVBRGJiLFFBQUFBO3FEQUtBZjtRQTFIRmE7O29DLE9BeUJBSyxjQTZGT25zQjttREFLVCxPQVBjdHBCO2VBekRaODFDLFFBK0RFdkI7bUJBQUFBO2tEQUlGO21EQVIyQiwrQ0FBQTtZQXJKM0JNLGFBb0pFUztrREFFSixxREFBQTs7aURBUUQ7WUFFT3NCLFVBQ0VuQyxPQUFxQjBCLFVBQXVCbmpDLE9BQWdCdWhDO21EQUFZLElBQTVCc0MsVUFBQTdqQzttREFBNEI7UUFBNUI2akMsYUFBQUE7VUFnQmpEOThCLFVBaEJpRDg4QjtxREFFekM7dURBQUE7OEJBY1I5OEI7c0RBWDRCO3VEQUxxQis4Qjs7MERBS3BCOzs7UUFMb0JELFVBQUFDOzs7cURBTW5DO3VEQUFBOzhCQVVkLzhCO3NEQVJhO3VEQUFWa3dCO3lEQUFVO3FDQVFibHdCO3VEQVBHemQ7eURBQUs7O3FEQUNULDhDQUFBO2tDQURJQTtzREFFSTt1REFBSnk2QyxNQXBESlgsWUF5Q2tFN0I7dURBWW5DO3lEQUFBO2dDQUgzQmo0QyxNQURBMnRDO3VEQUlBK007OzBEQUFjOzs7dURBQ2RDO3lEQUFXO29DQURYRCxjQURBRDt1REFHTztVQTVCWEosU0FjTWxDLFdBV0ZzQyxRQUVBRSxZQUZBRixRQUFBQTtzREFHTyxzREFBQTs7O3FEQUVJO3VEQUFBOzhCQUFkaDlCO3NEQUNhO3VEQUFWbTlCO2NBREhuOUI7dURBRUdvOUI7eURBQUs7O3FEQUNULDhDQUFBO2tDQURJQTtxREFDSixPQTFOQXhDOztpRUEyTnFCO21CQUFLMTRDO21CQUFIMkQ7aUVBQVU7eUVBQUM7d0NBQVhBLGVBRm5CdTNDLE1BREFEOzBCQUdzQmo3QztnRUFBMEM7Z0JBcEJGczRDOzs7b0RBc0IxRDtxREFBSmUsTUEvREpjLFlBeUNrRTdCO3FEQXVCOUQxK0I7dURBQVE7OEJBdkJzQ2doQzttREF3QmxELFNBREloaEM7b0RBQ0osb0RBQUE7O29EQUVXO3FEQUFQOUo7dURBQU87MEJBSFA4SjtxREFJQTNjO3VEQUFLOzttREFDVCw4Q0FBQTtnQ0FESUE7b0RBR2lDOztpQkFBVzhTO3dEQUFTLE9BQVRBO3VEQUFVO3FEQUFyQjt1REFBQTtpQ0E5QmE2cUM7b0RBOEJoRDtzREFBQTs4QkFIRTM5QyxJQTNCOEMyOUMsU0EwQjlDOXFDO29EQUlGO3NEQUFBO3dEQUNHOzs7b0RBREg7O3NDO29EQUFBO3NEQUFBO3dEQUVHOzs7b0RBSERxckM7c0RBQ0Y7d0RBR0c7b0NBakNzQmpCOztxREFrQ3ZCTTt1REFBVztrQ0FMWFcsWUFQQTlCO3FEQWFPO1FBakRYcUIsU0FjTWxDLFdBc0JGYSxRQVlBbUIsWUFaQW5CLFFBQUFBO29EQWFPLHNEQUFBOzs7aURBRWQ7WUFFRytCLGVBQWtCcjNDLEdBQWdCekgsR0FBWWc4QztrREFDaEQsT0F6Q01xQzthQXdDYzUyQyxVQUFnQnpILE9BQVlnOEM7a0RBQ0w7WUFFekMrQyxRQUNFN0MsT0FBcUIwQixVQUF1QnYyQyxHQUFZMjBDO2tEQUc1RCw4Q0FBQTtzQyxPQS9ERW1DLFNBNERFakMsZUFBd0RGO21EQUczQjtnQixPQS9DM0JxQyxVQTRDRm5DLE9BQXFCMEIsVUFBdUJ2MkM7O2tEQUdoRCxxREFBQTs0REFBc0I7OztrREFBMkM7WUFFL0QyM0MsYUFBZ0J2M0MsR0FBZ0J6SCxHQUFZZzhDO2tEQUM5QyxPQVBFK0M7YUFNZ0J0M0MsVUFBZ0J6SCxPQUFZZzhDO2tEQUNMO1lBRXZDaUQscUJBQXdCakQ7bURBQXlDO29EQUV4QyxPQXBPekJLLGNBa093Qkw7bURBRW5CO3FEQUFBOzs7O1NBQ0MzMEM7b0RBQVUsZUFBVkE7OztnRUFFRDtRQURJM0Q7bURBQU8sZUFBUEE7aURBR1o7WUFFR3c3QyxnQkFBbUJsRDtrREFFckIsR0FGcUJBO29EQUdQO21EQUVlO29EQUFBLE9BaFAzQkssY0EyT21CTDtvREFLWjtzREFBQTs7Ozs7O1VBQ1V0NEMsZ0JBQVQyRDtxREFBMkM7dURBQXpCOytCQUFsQkE7O3dEQUEyQztnQ0FBbEMzRDtxREFDZjs7O21EQUNnQywrQ0FBQTtZQW5QbEMyNEMsY0EyT21CTDttREFRZSxzREFBQTs7aURBRW5DO1lBRUNtRCxXQUFjQyxVQUFzQnBEO21EQUEyQiw4Q0FDMUQ7YUF0QkxpRCxxQkFxQm9DakQ7K0RBYzVCO21EQVhFOztLQUREdjBDO0tBQUg1QjtvREFDRm90QjtzREFBTTs4QkFESnB0QjtrREFFTixHQUZTNEI7b0RBUUM7cURBQUpQO3VEQUFJOzBCQVBOK3JCO3FEQVFFemdCO3VEQUFJO2tDQURKdEwsS0FWUWs0QzttREFZWixPQURJNXNDOzttREFMSTtvREFBSnJMO3NEQUFJOzRCQUhOOHJCO29EQUlFK1g7c0RBQUk7aUNBREo3akMsS0FOUWk0QztrREFRWixPQURJcFU7aURBU1Q7WUFDR3FVLFlBQWVELFVBQVVwRDttREFBMkI7b0RBQ3RCO09BbEI5Qm1ELFdBaUJlQyxVQUFVcEQ7S0FDRnNEO0tBQUw1VjtrREFDcEI7WUFEb0JBO1lBQUs0Vjs7NERBQ1I7eUJBRlV0RDs7aURBRzVCO1lBRUcvaUIsVUFBYStpQjttREFBaUIsOENBQ2hDO1lBM1ZGOTVDLFlBMFZpQjg1QztrREFDZixxREFBQTs7aURBQ0Q7WUFFR3VELFlBQWVDO21EQUFvQixPQTlWdkNuOUM7MkRBK1ZFO2lDQURpQm05QztpREFFbEI7WUFFR0MsYUFBZXpEO2tEQUNqQixPQXhRRU0sYUF1UWVOO29CQUFBQTs7aURBSWhCO1lBRUMwRCxXQUFjMUQsR0FBTy9LLE1BQXlCenZCO21EQUEwQjtZQUExRHc2QjtZQUFBQTtZQUFBQTttREFBMEQ7MkRBRS9EO3VDQUZZL0ssTUFBeUJ6dkI7Ozs7aURBR2pEO1lBRUdtK0I7a0RBQ0EsSUFBNEJqOEM7bURBQXdCLEdBQXhCQTtpQkFBQUE7O1VBRWpCeEQ7cURBQWU7dURBQUE7bUNBQWZBO3NEQUE0Qzs7O2tEQUNsRDtpREFFUjtZQWFHMC9DLHFCQUF3QkM7bURBQWMsS0FBZEE7b0RBRWxCLE9BRmtCQTttREFJWCwrQ0FBQTtLQUFUQyxlQUpvQkQsV0FBQUEsV0FBQUE7YUFLaEJFLHlCQUE0QkMsUUFBUWhFO21EQUMxQztNQURrQ2lFLFdBQUFEO01BQVFFLFdBQUFsRTttREFDMUM7cURBQXdCO1FBcEMxQnlELGFBbUM0Q1MsZUF4QjVDUCwrQkF3QjRDTztzREFFakMsK0NBQUE7Z0JBbE5YM0MsUUFnTjRDMkM7O3VEQUc5QixPQUg4QkE7V0FBQUMsa0JBQVJGLFdBQVFDLFVBQUFBLFdBQUFDOzs7cURBTW5DLE9BTjJCRjs7a0RBUWpDO2FBQ0tHLHdCQUEyQnBFO21EQUNqQyxJQURpQ2UsTUFBQWY7bURBQ2pDO3FEQUFLLEdBN0NQeUQsYUE0Q21DMUM7c0RBTTFCLE9BTjBCQTtxREFFeEIsK0NBQUE7ZUEzTlhRLFFBeU5tQ1I7aUVBR3JCLE9BSHFCQTtVQUFBb0Qsa0JBQUFwRCxNQUFBb0Q7O2tEQVFoQzthQUNLcnNCLEdBQU1rb0I7bURBQ1osSUFEWWUsTUFBQWY7bURBQ1o7b0RBQUcsR0F0REx5RCxhQXFEYzFDO3NEQUVFO3VEQUFSc0Q7VUFwQkFOLHlCQWtCTWhELEtBQUFBO3VEQUdIO1VBNUtYcUIsWUEyS1FpQzs7dURBRU0sT0FGTkE7c0RBSU07UUFESDdCO3VEQUxHOEIsTUFoVGRocEIsV0FxVFdrbkI7UUFMR3pCLE1BQUF1RDs7O3NEQVVFO3VEQUFSQztVQW5CQUgsd0JBU01yRDt1REFXTnlEO1VBN0JBVCx5QkE0QkFRLFNBQUFBO3VEQUVHO1VBckxYbkMsWUFvTFFvQzs7dURBRU0sT0FGTkE7c0RBSU07UUFESEM7dURBZEdDLE1BaFRkcHBCLFdBOFRXbXBCO1FBZEcxRCxNQUFBMkQ7O2tEQWtCWDtrREFDSCxPQW5CUTVzQixHQW5CSmdzQjtpREF3Q1A7WUFFR2EsVUFBY0MsZUFBc0I5RCxjQUFvQmQ7bURBQVM7S0FDL0RlLE1BRGtDRCxlQTFUcENGLHNCQTBUd0RaLEtBQUFBO21EQUV0RHdDO09BRllvQyxnQkE5Q2RoQixxQkErQ0U3QyxPQUFBQTtrREFFSixPQTFTRUM7aUJBdVNvQ0YsZUFFbEMwQjtpREFFTDtrREFKZTttREFBQTs7a0RBTUcsU0FBZnFDO2UsT0FOQUY7O2tEQU1lO21EQUFBOztrREFDRCxTQUFkRztlLE9BUEFIOztrREFPYzttREFBQTs7a0RBRU8sU0FBckJJOztlLE9BVEFKOzs7Ozs7T0EvYUo5OUM7T0FBQWdGO09BQ0F4RjtPQUFBSDtPQUFBUTtPQUFBRjtPQVFJYztPQVlBODJDO09BRUpDO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BS0FDO09BQUFDO09BQ0FDO09BQUFTO09BQUFLO09BQUFDO09BTUlDO09BT0FDO09BSUFFO09BRUFFO09BS0FDO09BR0E3YjtPQUdBMlY7T0FLQTdiO09BR0FEO09BVUFpaUI7T0FjQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQW5sQjtPQU1BaEQ7T0FLQXFvQjtPQUVBQztPQU1BQztPQWFBRztPQUdBQztPQVNBQztPQUdBQztPQU9BQztPQWNBN0w7T0FLQStMO09BS0FDO09BYUFFO09BR0FDO09BY0FHO09Bd0JBTTtPQUdBQztPQWFJQztPQXdDSlM7T0FHQUM7T0FNQUM7T0FHQUM7T0FTQUM7T0FZQUM7T0FpQkFFO09BS0FwbUI7T0FJQXNtQjtPQUlBRTtPQU1BQztPQUtBQztPQW1CQUM7T0E4Q0FlO09BTUFFO09BQ0FDO09BRUFDOzs7YTs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDNWNKbGhEO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFEQWtoRDtJQUFBQztZQUFBMTZDO3lDQUFBO3lDQUNpQzs7S0FEakN5NkM7Y0FBQUUsUUFDQW4rQyxLQUFjaUI7NENBQUEsc0NBQUE7NEJBQWRqQjs7bUJBQWN1TCxLQUFBdEs7NkNBQUEsR0FBQXNLOzhDQUFBLHNDQUFBOzhCQUFkdkw7NkNBQWM7Z0RBQUs7V0FEbkI4TDtXQUFBckk7Z0RBQ21CLHNDQUFBO2dDQUFuQnpEOytDQURBLHFDQUFBO2lEQUFBLFdBQUF3RCxPQUNBeEQsTUFEQXlEO2dEQUNtQixzQ0FBQTtnQ0FBbkJ6RDsrQ0FEQSxxQ0FBQTtrREFDNkIsV0FEN0JtK0MsUUFDQW4rQyxNQURBOEw7K0NBQUEsNENBQUE7dUNBQ0E5TDsrQ0FBZ0M7VUFBbEJpQjs2Q0FBQTs0Q0FBbUI7NENBQW5CLHNDQUFBO21DQUFBQTs0Q0FBQSw2Q0FBQTttQ0FBZGpCOzJDQUFpQzs7S0FEakNrK0M7Y0FBQUMsUUFDQWw5QzsyQ0FBQSxxQ0FEQTtrREFBQSxXQUFBZzlDLE1BQUFFOzJDQUNBLDRDQUFBOzZDQUFBbDlDOzJDQUFpQzt3Q0FBakMsU0FBQS9ELFVBQVFraEQsVUFBUkM7aUJBQW1CcmdEOzJDQUFMLFNBQUtBO2dCQUFBQTs7Ozs4Q0FBQTtTQUFBQztTQUFBQzsrQ0FBQUM7aURBQUE7aUNBQUFEOytDQUFBRTtpREFBQTthQUFYZ2dELFVBQVduZ0Q7OENBQUEsV0FBQUUsVUFBQUM7Ozs7MkNBQUEsNkNBQUE7MkNBQW5CdEIscUJBQW1Ca0I7MENBQWM7eUNBQWpDLDRDQUFBO21DQUFBcWdEO3lDQUFpQztZQUFqQ3JoRCxVQUFRc2hELFVBQVJDOzs7TUFBbUJDO01BQUFDO01BQUE3aUMsMENBQUE2aUM7TUFBQUMsc0JBQVhKLFVBQVdFO29CQUFBNWlDLGNBQUE4aUM7O3lDQUFuQiw0Q0FBQTttQ0FBQUg7eUNBQWlDO3dDQUFqQyxTQUFBbGhELFlBQUFzaEQsTUFBQTFoRDtpQkFBbUI0QjtnQixVQUFBQSxxQ0FBQUE7Z0JBQUFBOzs7OztTQUFBQztTQUFBQztTQUFBQyxzQ0FBQUQ7U0FBQUUsa0JBQW5CMC9DLE1BQW1CNy9DO21CQUFBRSxNQUFBQzs7OzswREFBbkJsQyxXQUFtQjhCOztxRUFBbkI1Qjs7WUFBQUcsWUFBQXVoRCxNQUFBMStDOzs7TUFBbUJuQjtNQUFBQztNQUFBQyxzQ0FBQUQ7TUFBQUUsa0JBQW5CMC9DLE1BQW1CNy9DOytCQUFBRSxVQUFBQzs7cUVBQW5CZ0I7O09BRUl5cEI7WUFFQWdsQjt5Q0FDRjswQ0FFb0I7WUFFbEJrUSxPQUFVQyxLQUFLQzsyQ0FBTyxXQUFQQSxJQUFMRDt5Q0FFYjtZQUdHbjlDLE9BQVVtOUMsS0FBS0U7MkNBQVksOENBQUE7eUJBQVpBLFNBQUxGOzBDQUE4QjtZQUV4Q0csT0FBVUgsS0FBSzU5QzsyQ0FBTSw4Q0FBQTs4QkFBTkEsR0FBTDQ5QzswQ0FBaUM7WUFFM0NJLFNBQVlKLEtBQUs1OUM7MkNBQU0sOENBQUE7OEJBQU5BLEdBQUw0OUM7MENBQWlDO1lBRTdDeC9DLElBQU8xQixHQUFHNjNCO2lCQUFpQnNwQjs0Q0FBRCxJQUFFNzlDLElBQUQ2OUM7NENBQWlCO2FBQWhCNzlDO29EQUFvQixXQUF6Q3RELEdBQW9CbWhEOzJDQUEyQjsyQ0FBckMsOENBQUE7bUNBQVB0cEI7MENBQWlEOzBDQUFyRDsyQ0FFTnB6QjtJQUVBNkk7WUFFQWkwQyxRQUFVTDsyQ0FBTyxPQUFQQTswQ0FBVTswQ0FBVix1Q0FBQTtJQUVWTTtZQUVJOWdCLE9BQVV3Z0IsS0FBYTFrQyxNQUFjeGM7MENBQzNDLEtBRGdCa2hEOzRDQUVSO1FBQ01PLFFBSEVQLGdCQUFBQSxRQUdUNStDLGNBQUhDOzBDQUNDLDZDQUFBO2NBSndCaWEsTUFHekJqYTs7a0JBQUFBLDBDQUVLLFdBTGtDdkMsR0FHcENzQztjQUFPbS9DO3NCQUFWbC9DLEdBQUdELElBSERvK0IsT0FHUStnQixPQUhlamxDLE1BQWN4Yzt5Q0FTMUM7Ozs7T0F4Q0hzZ0Q7T0FBQUM7T0FDQWhoRDtPQUFBRjtPQUFBSztPQUFBRDtPQUVJc3NCO09BRUFnbEI7T0FLQWtRO09BS0FsOUM7T0FFQXM5QztPQUVBQztPQUVBNS9DO09BRUErQztPQUVBNkk7T0FFQWkwQztPQUVBQztPQUVJOWdCOzs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQ2hDUnQ3QjtJQUFBaEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFEQVcsR0FDQXNDOzREQUFBOzsrREFBQSwrREFBQTttQ0FBQUE7OytEQUFBLCtEQUFBO21DQUFBQTs7K0RBQUEsK0RBQUE7bUNBQUFBOzsrREFBQSwrREFBQTttQ0FBQUE7OzJEQUlRO1lBTFJuQyxLQUNBb0Q7NERBQUEsK0RBQUE7c0NBREF2RCxJQUNBdUQ7MkRBSVE7MkRBSlIsU0FBQS9EO0lBQUErRjs0REFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7Ozs7Ozs7O2lFQUFBOztnRUFBQTs7K0RBQUE7OzhEQUFBOztlQUFBQTs7OERBQUEsK0RBQUE7NENBQUFGLGtCQUFBRTs7OzhEQUFBLCtEQUFBOzRDQUFBRixrQkFBQUU7Ozs7Ozs7Ozs7Ozs7O2dFQUFBLCtEQUFBOzhDQUFBRixrQkFBQUU7OytEQUFBLCtEQUFBOzZDQUFBRixrQkFBQUU7OzhEQUFBLCtEQUFBOzRDQUFBRixrQkFBQUU7OzZEQUFBLCtEQUFBOzJDQUFBRixrQkFBQUU7OzREQUFBLCtEQUFBOzBDQUFBRixrQkFBQUU7MkRBSVE7WUFKUmpHOzREQUFBOzsrREFDSTs7K0RBQ0E7OytEQUNBOzsrREFDQTs7MkRBQUk7MkRBSlI7R0FBQUs7SUFBQXdCOzREQUFBO2FBQUFBLHFDQUFBQTtlQUFBQTs7OERBQUEsK0RBQUE7a0RBQUE5QixRQUFBOEI7Ozs7Ozs7OzBFQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBFQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBFQUFBO3NEQUFBOUIsUUFBQThCOzs7OzBFQUFBO3NEQUFBOUIsUUFBQThCOzs7OytEQUFBLCtEQUFBO21EQUFBOUIsUUFBQThCOzs7NERBQUEsK0RBQUE7Z0RBQUE5QixRQUFBOEI7MkRBSVE7WUFKUnpCOzREQUFBOzsrREFDSTs7K0RBQ0E7OytEQUNBOzsrREFDQTs7MkRBQUk7NERBRUs7NkRBQVRpaUQ7K0RBQVM7OzZEQUNUQzsrREFBVTs7OERBQ1ZDO2dFQUFTOzs4REFDVEM7Z0VBQVU7O1lBRVZsaUQsR0FBTW1pRDs2REFDUixnRUFBRztjQU5ESixRQUtNSTs7d0VBR0U7Z0JBUFJILFNBSU1HOzswRUFLRTtrQkFSUkYsUUFHTUU7OzRFQU9FO29CQVRSRCxTQUVNQzs7OzREQVdQO1lBRUNqaUQ7NkRBQ0Y7O2lFQUNTOztpRUFDQzs7aUVBQ0Q7O2lFQUNDOzs2REFBTTs7OztPQTlCbEJFO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BTUlpaUQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQWxpRDtPQWFBRTs7OzthOzs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7SUN6QkpFO0lBQUFHO1lBQUEyRjttREFBQTttREFDYTs7S0FEYjlGO2NBQ0FzQztxREFEQSxzREFBQTtlQUFBd0QsT0FDQXhEO3FEQUFhOztLQURibkM7Y0FDQW9EO3FEQUFBLHNEQUFBO3dDQURBdkQsSUFDQXVEO3FEQUFhO2tEQUFiO21EQUFBL0Q7SUFBQUY7SUFBQUs7SUFBQUQ7O1VBREFNLElBQUFHLE1BQ0FYLFdBQUFGLFdBQUFLLGFBQUFEOzs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7SUNFRTJGO0lBQUFoRztJQU9GdVU7SUFBQS9OOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVJFN0Y7SUFBQUc7WUFBQTJGO3dEQUFBOzt3REFHd0M7O0tBSHhDOUY7Y0FDQXNDOzBEQUFBOzJEQUFBLDJEQUFBO21DQUFBQTtVQURBeUQ7MERBQ0Esb0RBQUE7NEJBQUF6RDswREFEQSxvREFBQTs0REFBQTtVQUFBd0QsT0FDQXhEO1FBREF5RDswREFBQSwyREFBQTttQ0FDQXpEOzBEQUV3Qzs7S0FIeENuQztjQUNBb0Q7MERBQUEsMkRBQUE7d0NBREF2RCxJQUNBdUQ7MERBRXdDO3VEQUZ4QyxTQUFBL0Q7SUFBQXdHO3dEQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7MkRBQUE7OzBEQUFBLDJEQUFBOzRDQUFBWCxrQkFBQVc7O2VBQUFBOzswREFBQSwyREFBQTs0Q0FBQVgsa0JBQUFXOzs7MERBQUEsMkRBQUE7NENBQUFYLGtCQUFBVztTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOzswREFBQSwyREFBQTs0Q0FBQVosa0JBQUFXOztTQUFBRTtRQUFBQSxtQkFBQUE7MERBQUE7T0FBQUMsV0FBQUQ7MkRBQUFFOzZEQUFBOzBDQUFBRDswREFBQSxXQUFBQzs7eURBQUEsMkRBQUE7O2NBQUFmO2NBQUFZO2NBQUFEOzt3REFBQSwyREFBQTswQ0FBQVgsa0JBQUFXO3dEQUV3QztZQUZ4QzFHO3dEQUFBO3lEQUNJO3dEQUNBO0tBQUF3Qjt5REFBQXVGOzJEQUFBO3dDQUFBdkY7d0RBQUE7eUJBQUF1Rjt3REFBb0M7dURBRnhDLFNBQUExRztJQUFBd0I7d0RBQUE7YUFBQUE7ZUFBQUE7O2dDQUFBQTsyREFBQSwyREFBQTttREFBQTlCLFFBQUE4Qjs7O2dCQUFBQTs7MkRBQUEsMkRBQUE7bURBQUE5QixRQUFBOEI7Ozs7O1lBQUFtRjtrQ0FBQUE7YUFBQUM7WUFBQUEsaUJBQUFBOzhEQUFBO1dBQUFsRixLQUFBa0Y7K0RBQUFqRjtpRUFBQTs4Q0FBQUQ7OERBQUEsV0FBQUM7OzZEQUFBLDJEQUFBO3FEQUFBakMsUUFBQWlILEtBQUFuRjs7a0NBQUFtRjs7dUVBQUE7dURBQUFqSCxRQUFBOEI7Ozs7NERBQUEsMkRBQUE7b0RBQUE5QixRQUFBOEI7Ozs7d0RBQUEsMkRBQUE7Z0RBQUE5QixRQUFBOEI7d0RBRXdDO1lBRnhDekI7d0RBQUE7eURBQ0k7d0RBQ0E7S0FBQTJCO3lEQUFBQzsyREFBQTt3Q0FBQUQ7d0RBQUE7O3lCQUFBQzt3REFBb0M7d0RBTHRCO3lEQUFBO1VBRWxCdEIsSUFBQUcsTUFDQVgsV0FBQUYsV0FBQUssYUFBQUQ7SUFNRjBDO0lBQUFnRjtZQUFBQzt5REFBQTs7eURBR3NDO1lBSHRDQzt5REFBQTt5REFHc0M7O0tBSHRDbEY7Y0FDQUU7MkRBQUE7NERBQUEsNERBQUE7bUNBQUFBO1VBREE4TCxlQUFBckk7MkRBQ0EscURBQUE7NEJBQUF6RDsyREFEQSxxREFBQTs2REFBQTtVQUFBZ0YsU0FDQWhGO1FBREF5RDsyREFDQSxxREFBQTs0QkFBQXpEOzJEQURBLHFEQUFBOzZEQUFBO1VBQUErRSxPQUNBL0U7UUFEQThMOzJEQUFBLDREQUFBO21DQUNBOUw7MkRBRXNDOztLQUh0QzhFO2NBQ0E3RDsyREFBQSw0REFBQTt3Q0FEQW5CLE1BQ0FtQjsyREFFc0M7WUFGdEMzQixZQUFBb2dEO3lEQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7NERBQUE7OzJEQUFBLDREQUFBOzRDQUFBcHVDLGtCQUFBb3VDOztlQUFBQTs7MkRBQUEsNERBQUE7NENBQUFwdUMsa0JBQUFvdUM7OzsyREFBQSw0REFBQTs0Q0FBQXB1QyxrQkFBQW91QztTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOzsyREFBQSw0REFBQTs0Q0FBQXJ1QyxrQkFBQW91Qzs7U0FBQUU7MERBQUEsR0FBQUE7Z0JBQUFBOzs0REFBQTtRQUFBQztRQUFBNWpDLFdBQUEyakM7NkRBQUEzL0I7K0RBQUE7MkJBQUFoRTs2REFBQTZqQzsrREFBQTtrQ0FBQUQ7NERBQUE7ZUFBQTUvQjtlQUFBNi9COzs7MERBQUEsNERBQUE7O2NBQUF4dUM7Y0FBQXF1QztjQUFBRDs7eURBQUEsNERBQUE7MENBQUFwdUMsa0JBQUFvdUM7eURBRXNDO1lBRnRDdmdEO3lEQUFBOzBEQUNJO3lEQUNBO0tBQUE0Z0Q7S0FBQUM7MERBQUFDOzREQUFBO3dCQUFBRDswREFBQUU7NERBQUE7K0JBQUFIO3lEQUFBO3lCQUFBRSxjQUFBQzt5REFBa0M7WUFGdEN2Z0QsY0FBQWQ7eURBQUE7YUFBQUE7ZUFBQUE7O2dDQUFBQTs0REFBQSw0REFBQTttREFBQTBFLFVBQUExRTs7O2dCQUFBQTs7NERBQUEsNERBQUE7bURBQUEwRSxVQUFBMUU7Ozs7O1lBQUFtRjtrQ0FBQUE7YUFBQUM7OERBQUEsR0FBQUE7b0JBQUFBOztnRUFBQTtZQUFBbkY7WUFBQUMsS0FBQWtGO2lFQUFBakY7bUVBQUE7K0JBQUFEO2lFQUFBRTttRUFBQTtzQ0FBQUg7Z0VBQUE7bUJBQUFFO21CQUFBQzs7OzhEQUFBLDREQUFBO3FEQUFBc0UsVUFBQVMsS0FBQW5GOztrQ0FBQW1GOzt3RUFBQTt1REFBQVQsVUFBQTFFOzs7OzZEQUFBLDREQUFBO29EQUFBMEUsVUFBQTFFOzs7O3lEQUFBLDREQUFBO2dEQUFBMEUsVUFBQTFFO3lEQUVzQztZQUZ0Q1k7eURBQUE7MERBQ0k7eURBQ0E7S0FBQVg7S0FBQUM7MERBQUFDOzREQUFBO3dCQUFBRDswREFBQUU7NERBQUE7K0JBQUFIO3lEQUFBOzt5QkFBQUUsVUFBQUM7eURBQWtDOzs7OztPQUh0Q2E7T0FBQWdGO09BQ0F4RjtPQUFBSDtPQUFBUTtPQUFBRjs7OzthOzs7Ozs7OztjOzs7OztjOzs7Ozs7Ozs7Ozs7OztZQ1JBL0IsR0FDQXNDO3NEQUFTLHlEQUFBO2lDQUFUQTtzREFBZTtZQURmbkMsS0FDQW9EO3NEQUFBLHlEQUFBO3NDQURBdkQsSUFDQXVEO3NEQUFlO3FEQUFmO3NEQUFBL0Q7O0lBQUFGO0lBQUFLO0lBQUFEO0lBRUkraUQ7O1VBSEp6aUQsSUFBQUcsTUFDQVgsV0FBQUYsV0FBQUssYUFBQUQsYUFFSStpRDs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQ0RKcmpEO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBREFxakQ7O0lBQUFDO1lBQUE3OEM7eURBQUE7O3lEQUNzQzs7S0FEdEM0OEM7Y0FBQWpDLFFBQ0FuK0M7MkRBREE7T0FBQThMO09BQUFySTs0REFDbUIsc0RBQUE7NEJBQW5CekQ7MkRBREEscURBQUE7NkRBQUE7VUFBQXdELE9BQ0F4RDtRQURBeUQ7NERBQ21CLHNEQUFBOzRCQUFuQnpEOzJEQURBLHFEQUFBOzhEQUNtQztVQURuQ20rQyxRQUNBbitDO1FBREE4TDsyREFBQSw0REFBQTttQ0FDQTlMOzJEQUFzQzs7S0FEdENxZ0Q7Y0FBQWxDLFFBQ0FsOUM7MkRBQUEscURBREE7OzhEQUFBO1dBQUFtL0MsWUFBQWpDOzJEQUNBLDREQUFBOzhDQUFBbDlDOzJEQUFzQzt3REFBdEM7R0FBQW5EO0lBQWFzZ0QsVUFBTXBnRDt5REFBbkIsU0FBbUJBO2VBQUFBOzs7OzZEQUFBO1FBQUFDO1FBQUFDOzhEQUFBQztnRUFBQTtzQ0FBQUQ7OERBQUFFO2dFQUFBO1lBQU5nZ0QsVUFBTW5nRDs2REFBQTtlQUFBRTtlQUFBQzs7OzswREFBQSw2REFBQTswQ0FBbkJ0QixxQkFBbUJrQjt5REFBbUI7WUFBdENLLGdCQUFhaWlEO3lEQUFiO0tBQW1CL2hEO0tBQUFDO0tBQUFDLGdEQUFBRDtLQUFBRSxzQkFBTjRoRCxVQUFNL2hEO21CQUFBRSxjQUFBQzt5REFBbUI7d0RBQXRDO0dBQUFDO0lBQUFnZ0QsTUFBbUI5L0M7eURBQW5CO2FBQW1CQSxxQ0FBQUE7ZUFBQUE7Ozs7O1FBQUFDO1FBQUFDO1FBQUFDLDRDQUFBRDtRQUFBRSxrQkFBbkIwL0MsTUFBbUI3L0M7a0JBQUFFLE1BQUFDOzs7O3lEQUFuQmxDLFdBQW1COEI7eURBQW1CO1lBQXRDSyxrQkFBQXkvQzt5REFBQTtLQUFtQjcvQztLQUFBQztLQUFBQyw0Q0FBQUQ7S0FBQUUsa0JBQW5CMC9DLE1BQW1CNy9DOzhCQUFBRSxVQUFBQzt5REFBbUI7O0lBRXRDdkI7SUFBQUc7WUFBQW1IO3lEQUFBLE9BSEFvN0M7eURBSThCOztLQUQ5QjFpRDtjQUFBeWdELFFBQ0FuK0MsS0FBYWlCOzREQUFBLHNEQUFBOzRCQUFiakI7O21CQUFhdUwsS0FBQXRLOzZEQUFBLEdBQUFzSzs4REFBQSxzREFBQTs4QkFBYnZMO29CQUFrQkE7OERBQVEsNkRBQUE7aUJBRDFCbStDLFFBQ2tCbitDOzZEQUFVOzZEQUFmLHNEQUFBOzhEQURiO1dBQUFnRixjQUNBaEY7U0FBYWlCOzZEQUFBOzREQUFpQjs0REFBakIsc0RBQUE7bUNBQUFBOzREQUFBLDZEQUFBO21DQUFiakI7MkRBQThCOztLQUQ5Qm5DO2NBQUFzZ0QsUUFDQWw5QzsyREFBQSxxREFEQTs7OERBQUE7V0FBQXZELElBQUF5Z0Q7MkRBQ0EsNERBQUE7NkNBQUFsOUM7MkRBQThCO1lBQTlCL0QsVUFBT3FqRCxVQUFQQzswREFBYTtnQixPQUhiMWlELGdCQUdPeWlEOzt5REFBUCw0REFBQTttQ0FBQUM7eURBQThCO1lBQTlCeGpELFVBQU95akQsVUFBUDlPO2lDLE9BSEF0ekMsZ0JBR09vaUQ7eURBQVAsNERBQUE7bUNBQUE5Tzt5REFBOEI7d0RBQTlCLFNBQUF0MEM7SUFBQXNoRCxNQUFBMWhEO2lDLE9BSEEwQixrQkFHQWdnRDtxRUFBQTFoRDs7WUFBQUcsWUFBQXVoRCxNQUFBMStDO2lDLE9BSEFmLGtCQUdBeS9DO3FFQUFBMStDOztZQUVJMUM7ZTs7MERBQVUsdURBQUE7SUFFVm1zQjtZQUVBZ2xCOzBEQUNGOzBEQUVZO1lBRU5nUyxJQUFPQyxLQUFvQkMsT0FBV3ZoRDswREFDNUMsS0FENENBOzREQUVwQztpQkFGS3NoRCxLQUFvQkM7O1FBR0gzNUMsT0FIYzVILFFBR3pDd2hELE9BSHlDeGhELFFBR2xDeWhELFVBQVBELFNBQUNFLFFBQURGOzBEQUNFLDZEQUFBO3dDQUpRRixLQUdUSTtjQUg2QkgsVUFHdkJFLFVBSGtDemhELGNBQS9Cc2hELEtBQW9CQyxRQUdIMzVDO2tCQUEzQjQ1QyxNQUhHSCxJQUFPQyxLQUFvQkMsT0FHSDM1Qzt5REFVN0I7WUFFQys1QyxVQUFhTCxLQUFvQkM7MkRBQXFCO2dCQUF6Q0QsS0FBb0JDOzswREFBbUM7WUFFcEVLOzBEQUNBO0tBQTBCQztLQUF4QkM7MERBQ0osT0E1QkU1akQ7YUEyQkU0akQsTUFBd0JEOzBEQUNUO1lBR2pCZixNQUFTaUIsV0FBNkJDLE1BQWFDOzJEQUFzQjtJQUN2RUM7S0FFRUg7MkRBREY7TUFHU0k7TUFBTk47TUFETU87TUFBTk47NERBSUw7OERBQUE7b0NBSktBLE1BQ0FEOzJEQUdMO3NFQVJ5RTtnQkFHckVFLFdBQ09LLE1BQ0FEOzsyREFHMkM7Y0FSaEJILFNBQWFDOzsyREFXeEM7NERBQVBJOzhEQUFPOzBCQWhCWFQsa0JBS3NDSTs0REFZbENNOzhEQUFPOzBCQWpCWFYsa0JBS21ESzsyREFheEM7O2dCLE9BWlRDLGVBRE9IOzswREFhVCw2REFBQTttQ0FGSU0sUUFDQUM7eURBR1A7MERBZlcsdURBQUE7SUFpQlJDO1lBRUFDLFFBQVdweUM7aUM7MERBQ2IsNkRBQUE7bUNBRGFBOzBEQUNHO1lBRWRxeUMsNkJBQWdDVCxNQUFhQzswREFDL0M7NERBQW1COzhEQUFBO1NBTmpCTSxVQUs2Q047MkRBQy9DOzZEQUFBO1VBTkVNLFVBS2dDUDs7Ozs7MkRBQ2xDOzJEQUNtRDs0REFBQTtPQUxqRFEsUUFHNkNQOzREQUVYO09BTGxDTyxRQUdnQ1I7MkRBRWlCLDhEQUFBOzswREFBYztZQUUvRFUsV0FBY1YsTUFBYUM7MkRBQXNCOzREQUMvQ1U7T0FSRkgsUUFPY1I7NERBRVpZO09BVEZKLFFBTzJCUDtXQUN6QlUsVUFDQUM7Ozs7NERBRWlDOzZEQUFBOytEQUFBOzJCQTdEbkMxa0QsU0EyREUwa0Q7OzhEQUVEO2dFQUFBOzZCQTdERDFrRCxTQTBERXlrRDs7MERBR0Q7eURBQ0o7MERBTGdCLHVEQUFBO0lBT2JFO1lBRUFDLFNBQXVDbGhEOzJEQUFLLE9BQUxBOzBEQUFNO1lBRTdDbWhELFNBQVl6QixLQUFvQnRoRDsyREFBMkI7S0FDeERnakQ7MkRBQ0wsT0FES0E7MkRBQ1E7OzREQURnQixJQUFFbmlEOzREQUFVLDhEQUFBO3dDQUQzQnlnRCxLQUNpQnpnRDsyREFBbUM7MkRBQW5ELHVEQUFBOzs4REFBQTsrQkFEbUJiOzBEQUVsQyw2REFBQTs7eURBQ0Q7WUFFR0EsSUFBTzFCLEdBQWE4UjsyREFBb0I7NERBQ3ZCOzhEQUFBOzBCQURHQTtLQUNYNnlDO0tBQU5DOzREQUNEQzs4REFBTzswQkFGRjdrRCxHQUNFMmtEOzBEQUVYLDZEQUFBOzhCQUZLQyxNQUNEQzt5REFFTDtZQUdHOTFDLEtBQVFyTjsyREFBc0IsOERBQUE7OEJBdEQ5QjRoRCxrQkFzRFE1aEQ7eURBRVg7WUFFR29qRCxRQUFzQ3hoRDsyREFBSyxPQUFMQTswREFBTTtZQUV4Q3loRCxVQUFhQyxpQkFBNkJ0akQ7MERBQ2hELEtBRGdEQTs0REFFeEM7MkRBRU47S0FEZTRILE9BSCtCNUg7S0FHekN3aEQsT0FIeUN4aEQ7NERBSTlDOzhEQUFBO1NBSmlCc2pELGlCQUdaOUI7MkRBQ0w7OzswQixPQUpJNkIsVUFBYUM7O2VBR0YxN0M7OzBEQUVoQjs7OztPQWpHSG01QztPQUFBQztPQUNBdmlEO09BQUFPO09BQUFNO09BQUFPO09BRUF4QjtPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQUVJRztPQUVBbXNCO09BRUFnbEI7T0FLSWdTO09BZUpNO09BRUFDO09BS0FkO09BaUJBeUI7T0FFQUM7T0FHQUM7T0FJQUM7T0FPQUc7T0FFQUM7T0FFQUM7T0FLQS9pRDtPQU9BcU47T0FJQSsxQztPQUVJQzs7OzthOzs7Ozs7OztjOzs7OztjOzs7Ozs7Ozs7Ozs7OztZQzdGUmhsRCxHQUNBc0M7aURBQVMsb0RBQUE7aUNBQVRBO2lEQUFlO1lBRGZuQyxLQUNBb0Q7aURBQUEsb0RBQUE7c0NBREF2RCxJQUNBdUQ7aURBQWU7Z0RBQWY7aURBQUEvRDtJQUFBRjtJQUFBSztJQUFBRDtJQUVJaXdCOztVQUhKM3ZCLElBQUFHLE1BQ0FYLFdBQUFGLFdBQUFLLGFBQUFELGFBRUlpd0I7OzthOzs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ0hKM3ZCLEdBQ0FzQzs4Q0FBUyxpREFBQTtpQ0FBVEE7OENBQWU7WUFEZm5DLEtBQ0FvRDs4Q0FBQSxpREFBQTtzQ0FEQXZELElBQ0F1RDs4Q0FBZTs2Q0FBZjs4Q0FBQS9EO0lBQUFGO0lBQUFLO0lBQUFEO0lBRUlpd0I7WUFFQXBpQix1Qjs4Q0FHRiwyQ0FBQTtJQURFMjNDO2lEQUNGOztZQUNFQyxTQUFXMWxEO2dEQUFLLG1EQUFBO3dCQUZoQnlsRCxhQUVXemxEOytDQUEyQztZQUd0RDJsRCxZQUFlM2xELEdBQUc0bEQ7K0NBQ3BCLE9BSkVGLFNBR2UxbEQsS0FBRzRsRDs4Q0FLbkI7K0NBRVc7Z0RBQVZDO2tEQUFVLFdBaEJWMzFCO2dEQWtCQTQxQjtrREFBVyxXQWxCWDUxQjtnREFvQkE2MUI7a0RBQVMsV0FwQlQ3MUI7Z0RBc0JBODFCO2tEQUFTLFdBdEJUOTFCO2dEQXdCQSsxQjtrREFBVSxXQXhCVi8xQjtnREEwQkFoVTtrREFBVSxXQTFCVmdVO1lBNEJBaFYsV0FBYWxiOytDQUNmLGtEQUFPOzhDQURRQTs7OzhDQUlkO1lBRUNrbUQsTUFBU0MsS0FBS25wQztnREFBUztpREFDckJvcEM7bURBQVc7NEJBRENwcEMsU0FBTG1wQztpREFFUEU7bURBQVk7NEJBRkFycEMsTUFBTG1wQywyQkFBS25wQyxRQUFMbXBDOytDQUdYLFdBRklDLFVBQ0FDOzhDQUVMO1lBR0dqbUQsUUFBVzBELEdBQU13aUQ7Z0RBQVMsbURBQUE7YUFBZnhpRCxHQUFNd2lEOytDQUFzQjs7OztPQTVDM0MvbEQ7T0FBQUc7T0FDQVg7T0FBQUY7T0FBQUs7T0FBQUQ7T0FFSWl3QjtPQUVBcGlCO09BRUEyM0M7T0FFQUM7T0FHQUM7T0FPQUU7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQS9wQztPQUVBaEI7T0FNQWdyQztPQU9BOWxEOzs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7OztJQzBCRndGO0lBQUFoRztJQVFBdVU7SUFBQS9OO0lBa0JBbWdEO0lBQUFseUM7SUFrWEFteUM7SUFBQWp5QztJQU9Ba3lDO0lBQUFDO0lBT0FDO0lBQUFDO0lBdUlBQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFsaUJBQzs7SUFBQUM7SUFuRUVDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBZ0VGL2dEO21EQUFBO21EQUtZOztLQUxaMGdEO2NBQ0Fsa0Q7cURBQUE7Ozs7eURBQUEsc0RBQUE7c0NBQUFBOzt5REFBQSxzREFBQTtzQ0FBQUE7O3lEQUFBLHNEQUFBO3NDQUFBQTs7VUFEQXlEO3FEQUNBLCtDQUFBOzRCQUFBekQ7cURBREEsK0NBQUE7dURBQUEsV0FBQXdELE9BQ0F4RDtRQURBeUQ7cURBQUEsc0RBQUE7bUNBQ0F6RDtxREFJWTs7S0FMWm1rRDtjQUNBbGpEO3FEQUFBLHNEQUFBO3dDQURBaWpELG9CQUNBampEO3FEQUlZO2tEQUpaO0dBQUF1akQ7SUFBQTlnRDttREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7O3dEQUFBOzt1REFBQTs7c0RBQUE7O3FEQUFBLHNEQUFBOzRDQUFBWCxrQkFBQVc7O2dCQUFBQTs7cURBQUEsc0RBQUE7NENBQUFYLGtCQUFBVzs7O3FEQUFBLHNEQUFBOzRDQUFBWCxrQkFBQVc7U0FBQUM7OzZCQUFBQTs7OEJBQUFBOzsrQkFBQUE7Z0NBQUFBO21DQUFBQTttQ0FBQUE7bUNBQUFBO2lDQUFBQTs7dURBQUEsc0RBQUE7OENBQUFaLGtCQUFBVzs7c0RBQUEsc0RBQUE7NkNBQUFYLGtCQUFBVzs7cURBQUEsc0RBQUE7NENBQUFYLGtCQUFBVzs7U0FBQUU7UUFBQUEsbUJBQUFBO3FEQUFBO09BQUFDLFdBQUFEO3NEQUFBRTt3REFBQTtnQ0FBQUQ7cURBQUEsV0FBQUM7O29EQUFBLHNEQUFBOztjQUFBZjtjQUFBWTtjQUFBRDs7bURBQUEsc0RBQUE7MENBQUFYLGtCQUFBVzttREFJWTtZQUpaK2dEO21EQUFBOzs7O3VEQUNJOzt1REFDQTsrREFFQTs7bURBREE7S0FBQWptRDtvREFBQXVGO3NEQUFBOzhCQUFBdkY7bURBQUE7eUJBQUF1RjttREFDUTtrREFKWjtHQUFBMmdEO0lBQUE3bEQ7bURBQUE7YUFBQUE7Z0JBQUFBOztnQ0FBQUE7c0RBQUEsc0RBQUE7bURBQUE5QixRQUFBOEI7OztpQkFBQUE7O3NEQUFBLHNEQUFBO21EQUFBOUIsUUFBQThCOzs7OztZQUFBbUY7a0NBQUFBO2FBQUFDO1lBQUFBLGlCQUFBQTt5REFBQTtXQUFBbEYsS0FBQWtGOzBEQUFBakY7NERBQUE7b0NBQUFEO3lEQUFBLFdBQUFDOzt3REFBQSxzREFBQTtxREFBQWpDLFFBQUFpSCxLQUFBbkY7O2tDQUFBbUY7O2tFQUFBO3VEQUFBakgsUUFBQThCOztrQ0FBQW1GOztrRUFBQTt1REFBQWpILFFBQUE4Qjs7a0NBQUFtRjs7a0VBQUE7dURBQUFqSCxRQUFBOEI7Ozs7dURBQUEsc0RBQUE7b0RBQUE5QixRQUFBOEI7Ozs7bURBQUEsc0RBQUE7Z0RBQUE5QixRQUFBOEI7bURBSVk7WUFKWjhsRDttREFBQTs7Ozt1REFDSTs7dURBQ0E7K0RBRUE7O21EQURBO0tBQUE1bEQ7b0RBQUFDO3NEQUFBOzhCQUFBRDttREFBQTs7eUJBQUFDO21EQUNROztJQUdadEI7SUFBQUc7SUFBQSttRDtJQUFBQztZQUFBQzttREFBQSxPQUFBcG5EO21EQWF5QztZQWJ6Q21zQjttREFBQTttREFheUM7WUFiekNDO21EQUFBLE9BQUFwc0I7bURBYXlDO1lBYnpDcXNCO21EQUFBLE9BQUE2NkI7bURBYXlDO1lBYnpDNTZCO21EQUFBLE9BQUF0c0I7bURBYXlDO1lBYnpDOGhCO21EQUFBLE9BQUE5aEI7bURBYXlDO1lBYnpDa1A7bURBQUEsT0FBQWxQO21EQWF5QztZQWJ6Q3FIO21EQUFBO21EQWF5QztZQWJ6Q0M7bURBQUEsT0FSQWsvQzttREFxQnlDOztLQWJ6Q3htRDtjQUNBc0M7cURBQUE7Ozs7eURBQUEsc0RBQUE7c0NBQUFBOzt5REFBQSxzREFBQTtzQ0FBQUE7O3lEQUFBLHNEQUFBO3NDQUFBQTs7eURBQUEsc0RBQUE7c0NBQUFBOzs7O2FBREF5RDt3REFDQSwrQ0FBQTsrQkFBQXpEO3dEQURBLCtDQUFBOzBEQUFBO2FBQUFnRixTQUNBaEY7V0FEQXlEO3dEQUFBLHNEQUFBO3NDQUNBekQ7O2FBREFxYjt3REFDQSwrQ0FBQTsrQkFBQXJiO3dEQURBLCtDQUFBOzBEQUFBO2FBQUErRSxPQUNBL0U7V0FEQXFiO3dEQUFBLHNEQUFBO3NDQUNBcmI7O2FBREF1Zjt3REFDQSwrQ0FBQTsrQkFBQXZmO3dEQURBLCtDQUFBOzBEQUFBO2FBQUE0TSxPQUNBNU07V0FEQXVmO3dEQUFBLHNEQUFBO3NDQUNBdmY7O2FBREE4TCxlQUFBc2U7d0RBQ0EsK0NBQUE7K0JBQUFwcUI7d0RBREEsK0NBQUE7MERBQUE7YUFBQXdmLE9BQ0F4ZjtXQURBb3FCO3dEQUNBLCtDQUFBOytCQUFBcHFCO3dEQURBLCtDQUFBOzBEQUFBO2FBQUFncUIsT0FDQWhxQjtXQURBOEw7d0RBQUEsc0RBQUE7c0NBQ0E5TDs7YUFEQStrRDt3REFDQSwrQ0FBQTsrQkFBQS9rRDt3REFEQSwrQ0FBQTswREFBQTthQUFBK3BCLE9BQ0EvcEI7V0FEQStrRDt3REFBQSxzREFBQTtzQ0FDQS9rRDs7YUFEQWdsRDt3REFDQSwrQ0FBQTsrQkFBQWhsRDt3REFEQSxVQVdTaUI7NERBQUEsZ0RBQUE7a0NBVlRqQjs7MEJBVVN1TCxLQUFBdEs7NkRBQUEsR0FBQXNLOzhEQUFBLGdEQUFBO29DQVZUdkw7NkRBVVMsZ0RBQUE7OERBWFQ7aUJBQUE4cEIsT0FDQTlwQjtlQVVTaUI7NkRBQUE7NERBQU87NERBQVAsZ0RBQUE7MkNBQUFBOzREQUFBLHVEQUFBO3lDQVZUakI7MkRBVWdCO1lBWGhCZ2xEO3dEQUFBLHNEQUFBO3NDQUNBaGxEOzthQURBaXFCLGlCQUFBZzdCO3dEQUNBLCtDQUFBOytCQUFBamxEO3dEQURBLCtDQUFBOzBEQUFBO2FBQUE2cEIsT0FDQTdwQjtXQURBaWxEO3dEQUNBLCtDQUFBOytCQUFBamxEO3dEQURBLCtDQUFBOzBEQUFBO2FBQUE4a0QsT0FDQTlrRDtXQURBaXFCO3dEQUFBLHNEQUFBO3NDQUNBanFCOztxREFXb0I7O0tBWnBCbkM7Y0FDQW9EO3FEQUFBLHNEQUFBO3dDQURBdkQsSUFDQXVEO3FEQVdvQjtZQVpwQnVMO21EQUFBOzttREFheUM7WUFiekMrSDttREFBQSxPQUFBN1c7bURBYXlDOztLQWJ6Q2tuRDtjQWFBNWtEO29CQUFjQTt1REFBQTt3REFBaUIsdURBQUE7b0NBQWpCQTtXQUFpQmlCO3VEQUFBLGdEQUFBOzRCQUFqQmpCO3VEQUFpQixnREFBQTt3REFiL0I7V0FBQXVVLFNBYWN2VTtTQUFpQmlCO3VEQUFBLHVEQUFBO21DQUFqQmpCO3NEQUEyQjtxREFiekMsc0RBQUE7ZUFBQXdNLGVBYUF4TTtxREFBeUM7O0tBYnpDNmtEO2NBYUE1akQ7cURBQUEsc0RBQUE7d0NBYkEyakQsWUFhQTNqRDtxREFBeUM7O0lBWnpDL0Q7SUFZQWdvRDs7S0FaQWhvRDtjQUFBd2lEO3FEQUFBOztnQkFBQUE7bUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUVBQUEsc0RBQUE7d0RBQUFwdUMsa0JBQUFvdUM7O2dFQUFBLHNEQUFBO3VEQUFBcHVDLGtCQUFBb3VDOzsrREFBQTs7OERBQUEsc0RBQUE7cURBQUFwdUMsa0JBQUFvdUM7OzZEQUFBLHNEQUFBO29EQUFBcHVDLGtCQUFBb3VDOzs0REFBQSxzREFBQTttREFBQXB1QyxrQkFBQW91Qzs7MkRBQUEsc0RBQUE7a0RBQUFwdUMsa0JBQUFvdUM7OzBEQUFBOzt5REFBQTs7d0RBQUE7O3VEQUFBLHNEQUFBOzhDQUFBcHVDLGtCQUFBb3VDOztrQkFBQUE7O3VEQUFBLHNEQUFBOzhDQUFBcHVDLGtCQUFBb3VDOzs7dURBQUEsc0RBQUE7OENBQUFwdUMsa0JBQUFvdUM7V0FBQUMsOENBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpREFBQUE7Ozs2Q0FBQUE7NkNBQUFBOzZDQUFBQTsyQ0FBQUE7Ozs0Q0FBQUE7NENBQUFBOzRDQUFBQTs0Q0FBQUE7MENBQUFBOzs7aURBQUFBOzs2Q0FBQUE7NkNBQUFBOzZDQUFBQTs2Q0FBQUE7MkNBQUFBOzs7OzZDQUFBQTs2Q0FBQUE7NkNBQUFBOzZDQUFBQTsyQ0FBQUE7Ozs7cUJBQUF3RjtvQkFBQUEsbUJBQUFBO2lFQUFBO21CQUFBQyxXQUFBRDtrRUFBQUU7b0VBQUE7d0NBQUFub0QsV0FBQWtvRDtpRUFBQTswQkFBQUM7O2dFQUFBLHNEQUFBOzswQkFBQS96QzswQkFBQXF1QzswQkFBQUQ7O29CQUFBNEY7K0RBQUE7a0JBQUFBOzRCQUFBQTs7aUVBQUE7bUJBQUFDO21CQUFBQyxXQUFBRjtrRUFBQTVpQztvRUFBQTs0Q0FBQThpQztrRUFBQUM7b0VBQUE7dUJBQUF2b0QsV0FBQXFvRDtpRUFBQTswQkFBQTdpQzswQkFBQStpQzs7OytEQUFBLHNEQUFBOzt5QkFBQW4wQzt5QkFBQXF1Qzt5QkFBQUQ7OzhEQUFBLHNEQUFBO3FEQUFBcHVDLGtCQUFBb3VDOztrQkFBQWdHO2lCQUFBQSxtQkFBQUE7OERBQUE7Z0JBQUEvNUIsV0FBQSs1QjsrREFBQUM7aUVBQUE7b0JBWUFULGlCQVpBdjVCOzhEQUFBO3VCQUFBZzZCOzs2REFBQSxzREFBQTs7dUJBQUFyMEM7dUJBQUFxdUM7dUJBQUFEOztpQkFBQUU7Z0JBQUFBLG1CQUFBQTs2REFBQTtlQUFBM2pDLFdBQUEyakM7OERBQUExakM7aUJBUkFzb0Msd0JBUUF2b0M7NkRBQUE7c0JBQUFDOzs0REFBQSxzREFBQTs7c0JBQUE1SztzQkFBQXF1QztzQkFBQUQ7O2dCQUFBa0c7ZUFBQUEsbUJBQUFBOzREQUFBO2NBQUFDLFdBQUFEOzZEQUFBM0Y7K0RBQUE7dUNBQUE0Rjs0REFBQTtxQkFBQTVGOzsyREFBQSxzREFBQTs7cUJBQUEzdUM7cUJBQUFxdUM7cUJBQUFEOztlQUFBb0c7MERBQUEsR0FBQUE7dUJBQUFBOzs0REFBQTtjQUFBQztjQUFBQyxXQUFBRjs2REFBQTE2QjsrREFBQTtrQkFBQWx1QixXQUFBOG9EOzZEQUFBQzsrREFBQTtrQkFBQS9vRCxXQUFBNm9EOzREQUFBO3FCQUFBMzZCO3FCQUFBNjZCOzs7MERBQUEsc0RBQUE7O29CQUFBMzBDO29CQUFBcXVDO29CQUFBRDs7eURBQUEsc0RBQUE7Z0RBQUFwdUMsa0JBQUFvdUM7O3dEQUFBLHNEQUFBOytDQUFBcHVDLGtCQUFBb3VDOzt1REFBQSxzREFBQTs4Q0FBQXB1QyxrQkFBQW91Qzs7V0FBQXdHO1VBQUFBLG1CQUFBQTt1REFBQTtTQUFBQyxXQUFBRDt3REFBQW43QjswREFBQTthQUFBN3RCLFdBQUFpcEQ7dURBQUEsV0FBQXA3Qjs7c0RBQUEsc0RBQUE7O2dCQUFBelo7Z0JBQUFxdUM7Z0JBQUFEOztxREFBQSxzREFBQTs0Q0FBQXB1QyxrQkFBQW91QztxREFXb0I7O0tBQ3BCd0Y7Y0FBQWtCO3FEQUFBLGdEQUFjOzt5REFBQTs0QkFaZGxwRDtxREFZQSxzREFBQTtrREFBQWtwRDtxREFBeUM7WUFaekNwcEQ7bURBQUE7Ozs7dURBRUk7O3VEQUNBOzt1REFDQTsrREFDQTs7OztzREFKQTtRQUFBcXBEO3VEQUFBdmdCO1VBVEoyZSx3QkFTSTRCO3NEQUFBOzRCQUFBdmdCOztzREFLQTtRQUFBd2dCO3VEQUFBQzt5REFBQTtpQ0FBQUQ7c0RBQUE7NEJBQUFDOztzREFDQTtRQUFBQzt1REFBQUM7VUFQSnpwRCxVQU9Jd3BEO3NEQUFBOzRCQUFBQzs7c0RBQ0E7UUFBQUM7UUFBQUM7dURBQUFDO1VBUko1cEQsVUFRSTJwRDt1REFBQUU7VUFSSjdwRCxVQVFJMHBEO3NEQUFBOzRCQUFBRSxjQUFBQzs7c0RBQ0E7UUFBQXBPO3VEQUFBQztVQUdKb08sZ0JBSElyTztzREFBQTs0QkFBQUM7O3NEQUNBO1FBQUFDO3VEQUFBQzt5REFBQTs2QkFWSjU3QyxXQVVJMjdDO3NEQUFBOzRCQUFBQzs7c0RBQ0E7UUFBQW1PO1FBQUFDO3VEQUFBQzt5REFBQTtpQ0FBQUQ7dURBQUFFO1VBWEpscUQsVUFXSStwRDtzREFBQTs0QkFBQUUsY0FBQUM7O21EQUFnQjtZQUNwQkosZ0JBQUFLO21EQUFBO3dDQVpBbnFEO21EQVlBLHNEQUFBO2lEQUFBbXFEO21EQUF5Qzs7SUFaekM5cEQ7SUFZQStwRDs7S0FaQS9wRDtjQUFBd0I7cURBQUE7ZUFBQUE7a0JBQUFBOzttQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dEQUFBLHNEQUFBO3FEQUFBMEUsVUFBQTFFOzs7bUJBQUFBOzt3REFBQSxzREFBQTtxREFBQTBFLFVBQUExRTs7Ozs7Y0FBQW1GLDhDQUFBQTs7O2dCQUFBcWpEO2VBQUFBLG1CQUFBQTs7Y0FBQUMsT0FBQUQ7Y0FBQUU7OzREQUFBbHFELGFBQUFpcUQ7NERBQUEsV0FBQUM7OzJEQUFBLHNEQUFBO3dEQUFBaGtELFVBQUFTLEtBQUFuRjs7cUNBQUFtRjtnQkFBQXNvQjsyREFBQSxHQUFBQTt3QkFBQUE7OzZEQUFBO2VBQUF4dEI7ZUFBQTJ0QixPQUFBSDs4REFBQUk7Z0VBQUE7d0NBQUFEOzhEQUFBeHRCO2dFQUFBO21CQUFBNUIsYUFBQXlCOzZEQUFBO3NCQUFBNHRCO3NCQUFBenRCOzs7MkRBQUEsc0RBQUE7d0RBQUFzRSxVQUFBUyxLQUFBbkY7O3FDQUFBbUY7O3FFQUFBOzBEQUFBVCxVQUFBMUU7O3FDQUFBbUY7Z0JBQUErZjtlQUFBQSxtQkFBQUE7NERBQUE7Y0FBQUMsT0FBQUQ7NkRBQUFFOytEQUFBO2tCQVlBbWpDLG1CQVpBcGpDOzREQUFBLFdBQUFDOzsyREFBQSxzREFBQTt3REFBQTFnQixVQUFBUyxLQUFBbkY7O3FDQUFBbUY7Z0JBQUFzWTtlQUFBQSxtQkFBQUE7NERBQUE7Y0FBQUMsT0FBQUQ7NkRBQUFFO2dCQVJBa29DLDBCQVFBbm9DOzREQUFBLFdBQUFDOzsyREFBQSxzREFBQTt3REFBQWpaLFVBQUFTLEtBQUFuRjs7cUNBQUFtRjtnQkFBQUM7ZUFBQUEsaUJBQUFBOzREQUFBO2NBQUFsRixLQUFBa0Y7NkRBQUFqRjsrREFBQTt1Q0FBQUQ7NERBQUEsV0FBQUM7OzJEQUFBLHNEQUFBO3dEQUFBdUUsVUFBQVMsS0FBQW5GOzs7O3FDQUFBbUY7Z0JBQUF3akQ7MkRBQUEsR0FBQUE7d0JBQUFBOzs2REFBQTtlQUFBbmhDO2VBQUFvaEMsUUFBQUQ7OERBQUFFO2dFQUFBO21CQUFBcnFELGFBQUFvcUQ7OERBQUFuaEM7Z0VBQUE7bUJBQUFqcEIsYUFBQWdwQjs2REFBQTtzQkFBQXFoQztzQkFBQXBoQzs7OzJEQUFBLHNEQUFBO3dEQUFBL2lCLFVBQUFTLEtBQUFuRjs7cUNBQUFtRjs7cUVBQUE7MERBQUFULFVBQUExRTs7cUNBQUFtRjs7cUVBQUE7MERBQUFULFVBQUExRTs7cUNBQUFtRjs7cUVBQUE7MERBQUFULFVBQUExRTs7cUNBQUFtRjtnQkFBQTJqRDtlQUFBQSxtQkFBQUE7NERBQUE7Y0FBQUMsT0FBQUQ7NkRBQUFFOytEQUFBO2tCQUFBeHFELGFBQUF1cUQ7NERBQUEsV0FBQUM7OzJEQUFBLHNEQUFBO3dEQUFBdGtELFVBQUFTLEtBQUFuRjs7Ozs7eURBQUEsc0RBQUE7c0RBQUEwRSxVQUFBMUU7Ozs7cURBQUEsc0RBQUE7a0RBQUEwRSxVQUFBMUU7cURBV29COztLQUNwQnVvRDtjQUFBbnFEOzs7OERBWkFJOzREQVlBSjs7WUFaQUc7bURBQUE7Ozs7dURBRUk7O3VEQUNBOzt1REFDQTsrREFDQTs7OztzREFKQTtRQUFBMkI7dURBQUFDO1VBVEoybEQsMEJBU0k1bEQ7c0RBQUE7OzRCQUFBQzs7c0RBS0E7UUFBQXVkO3VEQUFBQzt5REFBQTtpQ0FBQUQ7c0RBQUE7OzZCQUFBQzs7c0RBQ0E7UUFBQXdIO3VEQUFBQztVQVBKN21CLFlBT0k0bUI7c0RBQUE7OzZCQUFBQzs7c0RBQ0E7UUFBQW5sQjtRQUFBMnRCO3VEQUFBQztVQVJKdHZCLFlBUUlxdkI7dURBQUF4dEIsT0FSSjdCLFlBUUkwQjtzREFBQTs7NkJBQUE0dEIsVUFBQXp0Qjs7c0RBQ0E7UUFBQXFvRDt1REFBQUM7VUFHSk8sa0JBSElSO3NEQUFBOzs2QkFBQUM7OztRQUNBSztRQUFBQzs7c0RBVkp6cUQsYUFVSXdxRDtzREFBQTs7NkJBQUFDOztzREFDQTtRQUFBeGhDO1FBQUFvaEM7dURBQUFDO3lEQUFBO2lDQUFBRDt1REFBQW5oQztVQVhKbHBCLFlBV0lpcEI7c0RBQUE7OzZCQUFBcWhDLFdBQUFwaEM7O21EQUFnQjtZQUNwQndoQyxrQkFBQTduRDs7aUVBWkE3QzswREFZQTZDOzs7SUFFQThuRDtJQUFBQztZQUFBcDZCO21EQUFBOzttREFDa0Q7WUFEbEREO21EQUFBLE9BZkFqd0I7bURBZ0JrRDs7S0FEbERxcUQ7Y0FDQS9uRDtvQkFBaUJBO3VEQUFBO3dEQUF1Qix1REFBQTtvQ0FBdkJBO1dBQXVCaUI7dURBQUEsZ0RBQUE7NEJBQXZCakI7dURBQXVCLGdEQUFBO3dEQUR4QztXQUFBMnRCLFNBQ2lCM3RCO1NBQXVCaUI7dURBQUEsdURBQUE7bUNBQXZCakI7c0RBQWlDO3FEQURsRCxzREFBQTtlQUFBNHRCLGVBQ0E1dEI7cURBQWtEOztLQURsRGdvRDtjQUNBL21EO3FEQUFBLHNEQUFBO3lDQURBOG1ELGNBQ0E5bUQ7cURBQWtEO1lBQWxEZ25ELGtCQUFBQzttREFBQSxnREFBaUI7O3VEQUFBOzBCQWZqQmhyRDttREFlQSxzREFBQTtnREFBQWdyRDttREFBa0Q7WUFBbERDLGtCQUFBQzttREFBQTt3Q0FmQXByRDttREFlQSxzREFBQTtnREFBQW9yRDttREFBa0Q7a0RBQWxELFNBQUFDO0lBQUFwckQ7O2lFQWZBSTt5REFlQUo7O1lBQUFxckQsb0JBQUFyb0Q7O2lFQWZBN0M7eURBZUE2Qzs7O0lBRUFzb0Q7SUFBQUM7WUFBQUM7bURBQUEsT0FsQkEvcUQ7bURBc0JDO1lBSkRtd0I7bURBQUE7bURBSUM7O0tBSkQwNkI7Y0FDQXZvRCxLQUFBaUI7cURBQUEsK0NBQUE7NEJBQUFqQjtxREFBQSwrQ0FBQTs0QkFBQUE7aUJBQUFpQjtxREFBQSwrQ0FBQTt1REFEQTtVQUFBNHNCLFNBQ0E3dEI7O3FEQUFBLCtDQUFBOzRCQUFBQTtxREFBQSwrQ0FBQTs0QkFBQUE7cURBQUEsK0NBQUE7NEJBQUFBO2lCQUFBaUI7cURBQUEsK0NBQUE7dURBREE7VUFBQXduRCxTQUNBem9EOztxREFBQSwrQ0FBQTs0QkFBQUE7cURBQUEsc0RBQUE7bUNBQUFBO3FEQUdDOztLQUpEd29EO2NBQ0F2bkQ7cURBQUEsc0RBQUE7eUNBREFzbkQsV0FDQXRuRDtxREFHQztZQUhEeW5ELGVBQUFDO21EQUFBLFNBQUFBO29EQUFBLHNEQUFBOzRDQUFBakYsa0JBQUFpRjttREFBQTtLQUFBQyxrQkFBQUQ7b0RBQ0VFO29EQUNBQztvREFGRkM7b0RBQUFDO2FBQUFDO29EQUFBO29EQUFBO21FQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTs2REFBQTtrQkFBQUo7OERBQUEsc0RBQUE7c0RBQUF6RixrQkFBQWlGO2lCQUFBUTs4REFBQSxxREFBQTs7a0JBQUFLLFFBQUFMOzZEQUFBLE9BQUFLOzZEQUdDO29CQUhERDs7VUFBQUEsaUJBQUFELGlCQUFBSDtpQ0FBQUM7a0NBQUFBOztZQUFBSixtQkFBQUksZ0JBQUFKOztrQkFFRUY7V0FGRkMsd0JBQUFLLGdCQUFBTDs7MkRBRUU7NERBRkZVLG1CQUFBRjs0REFFRUc7OERBQUE7Z0JBcEJGeHNELFdBa0JBdXNEO1dBRUVYLGdCQUFBWTs7aUJBREFiO1VBREZFLHdCQUFBSyxnQkFBQUw7OzBEQUNFOzJEQURGWSxtQkFBQUo7MkRBQ0VLOzZEQUFBO2dDQURGRDtVQUNFZCxnQkFBQWU7O3VCQURGUDs7Ozs7cURBQUEsc0RBQUE7NkNBQUEzRixrQkFBQXdGOztvREFHQzttREFIREQsU0FBQUw7T0FBQUc7b0RBQUEsc0RBQUE7O2NBQUFyRjtjQUFBcUY7Y0FBQUo7T0FBQUs7b0RBQUEsc0RBQUE7O2NBQUF0RjtjQUFBc0Y7Y0FBQUw7ZUFDRUUsbUJBQ0FDOztTQUFBZSxtQkFEQUM7b0RBREYsV0FDRUEsUUFDQUQ7O21EQUZGLHNEQUFBOzthQUFBbkc7YUFBQWlGOzt3QkFDRUU7NEJBQ0FDO21EQUNEO1lBSERpQjttREFBQTtLQUVFQztLQURBQztxREFDQUM7T0FwQkZsdEQsVUFvQkVndEQ7cURBRkZHOzZCQUVFRDtxREFEQUU7dURBQUE7MEJBQUFIO3FEQURGSTs2QkFDRUQsZUFERkQ7bURBQUEsV0FBQUU7bURBR0M7WUFIREMsaUJBQUF6ckQ7bURBQUE7YUFBQUEscUNBQUFBO3FEQUNFO01BREY4SCxnQkFBQTlIO3NEQUNFdUw7c0RBQ0FtZ0Q7cURBRkZ6akQ7cURBQUFDO01BQUFDOzt3REFBQTt3REFBQTt1RUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7MkRBQUE7NkRBQUE7O2FBQUFKOztlQUFBSTs4REFBQTt5Q0FBQUo7Ozs2REFFRTt1Q0FBQXdqRDtZQUZGempEOztjQUFBSzs4REFFRTt3Q0FGRkw7OzREQUVFLGdEQUFBO2FBQUFNOytEQUFBO2lCQXBCRi9KLGFBa0JBNko7WUFFRXFqRCxrQkFBQW5qRDs7OzREQURBO3NDQUFBZ0Q7V0FERnREOzthQUFBSzs2REFDRTt1Q0FERkw7OzJEQUNFLGdEQUFBO1lBQUFPOzhEQUFBO2lDQURGSDtXQUNFa0Qsa0JBQUEvQzs7d0JBREZKOzt3REFHQztvREFIREQsS0FBQUw7O3NEQUFBO2lDQUFBRztxREFBQSwrQ0FBQTs7d0RBQUE7bUNBQUFBO3FEQUFBLHNEQUFBO21EQUFBMEssZ0JBQUEzUzs7O3NEQUFBO2lDQUFBa0k7cURBQUEsK0NBQUE7O3dEQUFBO21DQUFBQTtxREFBQSxzREFBQTttREFBQXlLLGdCQUFBM1M7O3FEQUNFO3NEQUFBO3dEQUFBO2tDQUFBdUw7c0RBQ0E7d0RBQUE7a0NBQUFtZ0Q7O1VBQUFDLHVCQURBbmdEO3FEQURGO2NBQ0VBO2NBQ0FtZ0Q7O29EQUZGO3FEQUFBOzs7Ozs0REFFRTtzQ0FBQUQ7Ozs7O3FEQUZGOzs7Ozs0REFDRTtzQ0FBQW5nRDs7Ozs7b0RBREYsc0RBQUE7a0RBQUFvSCxVQUFBM1M7O21EQUFBLHNEQUFBO2lEQUFBMlMsVUFBQTNTO21EQUdDO1lBSEQ0ckQ7bURBQUE7S0FFRUM7S0FEQXBnRDtLQUNBNUMsTUFwQkZ0SyxZQW9CRXN0RDtLQUFBL2lELHlCQUFBRDtLQURBRSxvQ0FBQTBDO0tBQUF6QywyQkFBQUQsUUFDQUQ7bURBRkY7O1lBQ0VFO21EQUVEO2lCQUd5QjhpRDtxREFBbUIsT0FBbkJBO29EQUE0QjtvREFBdEMsaURBQUE7SUFBWkM7dURBQVk7O1lBTVpDLHFCQUNDbm9ELElBQXFCQztvREFDeEI7O2VBREdEOzs7Y0FBQUE7O29CQUFxQkM7aUJBQUFBOzs4REFTSTs7Ozs7O29CQVRKQSxrQ0FBQUE7NEJBQUFBLHlCQUFBQTs7d0RBTUc7O3VEQUZBOztTQUZuQm1vRCxNQUZMcG9EO2VBQXFCQztXQUFBQTs7VUFFTG9vRCxNQUZLcG9EO3VEQUVNO3lEQUFBOytCQUF0Qm1vRCxLQUFXQzt3REFBa0MsV0FBN0NEOzs7cURBTXFCO21EQUU1QjtZQUVDRSxXQUFjQztvREFDaEIsVUFEZ0JBO1lBQUFBOzt3REFaZCxPQXhHRjFHOztlQUZBRjs7ZUFEQUQ7O1dBRUFFO21EQWtJQztZQUVLNEcsTUFBUy90RCxHQUFNOEQsR0FBYWdxRDtxREFBVTthQUFWQTtZQUFBQTs7eURBRXpCOzt5REFDRTs7eURBQ0Q7aUVBQ0U7O1dBTHNCQTs7V0FNeEJFLE9BTndCRjt3REFNZixXQUFURTs7V0FPSjFILElBYjRCd0g7K0RBYXRCO3NDQWJTaHFELEdBYWZ3aUQ7aUJBYlN0bUQ7cUJBYVRzbUQ7O1dBREMySCxPQVoyQkg7d0RBWXBCO2VBWlJDLE1BQVMvdEQsR0FBTThELEdBWWRtcUQ7O3dEQUxzQztRQUFoQ0MsTUFQcUJKO1FBTzFCSyxNQVAwQkw7eURBT1c7VUFQdkNDLE1BQVMvdEQsR0FBTThELEdBT1JvcUQ7d0RBQVE7ZUFQZkgsTUFBUy90RCxHQUFNOEQsR0FPYnFxRDs7O3dEQUV1QztRQUF6Q0MsS0FUNEJOO3lEQVNhO29DLE9BVHpDQyxNQUFTL3RELEdBQU04RDt5REFTZTsyREFBQTs7d0RBQXZCO2dFQUFJO3FEQUFYc3FEOzt3REFEdUI7UUFBdEJDLE1BUjJCUDt5REFRTDtvQyxPQVJ2QkMsTUFBUy90RCxHQUFNOEQ7d0RBUU47Z0VBQUs7d0NBQWJ1cUQ7O1dBR0RDLE1BWDRCUixPQVV6QlMsT0FWeUJUO3dEQVVoQjswREFBQTtnQ0FWR2hxRCxHQVdmd3FEO3lEQUQrQixXQUMvQkEsS0FER0M7V0FDQUMsT0FYeUJWO3dEQVdsQjtlQUFWUTtlQVhBUCxNQUFTL3RELEdBQU04RCxHQVdaMHFEOzttREFJVjtZQUVHQyxPQUFVWDtvREFDWjthQURZQSx5QkFBQUE7U0FFSFksVUFGR1osT0FFTmhxRCxJQUZNZ3FEO3NEQUVTLE9BbkJmQztjQWlCTUQsSUFFTmhxRCxHQUFHNHFEOztxREFDRixPQUhLWjttREFJWDtZQUlLNTlCLEdBQU1KLElBQU9DO3FEQUFnQixJQUF2QjQrQixPQUFBNytCLElBQU84K0IsT0FBQTcrQjtxREFBZ0I7ZUFBdkI0K0I7YUFBQUE7O21CQUFPQyx1QkFBQUE7MkRBSUg7MERBQ0Y7O21CQUxLQSwyQkFBQUE7MkRBTUM7MERBQ0o7O21CQVBHQSwyQkFBQUE7MkRBUUQ7MERBQ0g7O21CQVRJQSwwQkFBQUE7MkRBVUc7MERBQ0w7O1lBWExEOztrQkFBT0MsMkJBQUFBOzBEQVlXO3lEQUNUOztZQVVkQyxLQXZCS0Y7a0JBQU9DLDJCQUFBQTthQXVCSEUsS0F2QkdGOzBEQXVCSyx3REFBQTtrQkFBakJDLElBQVNDOzt5REFDQzs7WUF4QkxDLE9BQUFKO2tCQUFPQywyQkFBQUE7YUFBQUksT0FBQUosU0FBUEQsT0FBQUksTUFBT0gsT0FBQUk7Ozt5REFtQkQ7O1lBTFRDLE9BZEdOO2tCQUFPQywyQkFBQUE7MERBY21CO1VBZG5CTSxPQUFBTjtVQWNLTyxPQWRMUDtVQUFQUSxPQUFBVDsyREFjMEI7WUFkaEN6K0IsR0FjRysrQixNQUFlRTswREFBYzsyREFBQTthQWQxQlIsT0FBQVMsTUFBT1IsT0FBQU07Ozt5REFlQTs7WUFLWkcsTUFwQktWO2tCQUFPQywyQkFBQUE7MERBcUJJO1VBRE5VLE1BcEJFVjsyREFxQkk7NkRBQUE7aUNBckJqQjErQjt5REFxQkosdURBQUE7c0RBREttL0IsS0FBVUM7O3lEQUVBOztZQU5UQyxPQWhCSVo7a0JBQU9DLDJCQUFBQTthQWdCQ1ksT0FoQkRaOzBEQWdCVyx3REFBQTttQ0FoQnhCMStCLElBZ0JFcS9CLE1BQVlDOzt5REFDRjs7WUFmWEMsS0FGS2Q7a0JBQU9DLDJCQUFBQTswREFFb0I7VUFBZmMsT0FGTGQ7VUFFQ2UsS0FGRGY7VUFBUGdCLE9BQUFqQjsyREFBT2tCO1lBekJiOUIsVUEyQkMwQixLQUFhRSxJQUFJRDtVQUZaZixPQUFBaUI7VUFBT2hCLE9BQUFpQjs7O3lEQUdGOzs7bURBdUJsQjtZQUVPQyxVQUFjM2pDO3FEQUFVO0tBQVZ5RSxRQUFBekU7O3FEQUFVO1FBQVZ5RSxXQUFNeEUsTUFBTndFLFVBQUFtL0IsUUFBTTNqQyxjQUFOMmpDO3FEQUNwQjs7c0RBQUE7O2FBTU1qdEQ7aUVBQU07b0NBQU5BLEdBUGNpdEQ7O3VCQU9kanREOzswREFDbUI7OzJEQVJMZ3VCLFlBQUFpL0I7VUFBQW4vQixRQUFBRTs7OzswREFTdUI7VUFBL0JmO1VBQUpEOzJEQUFtQztZQVRyQ2dnQyxjQUFjQyxRQVNSaGdDOzJEQUFPO1lBVGIrL0IsY0FBY0MsUUFTWmpnQzswREFBbUMsd0RBQUE7Ozt5REFNdkM7VUFMRXMrQjsyQzswREFLRjs0REFBQTtxQ0FMRUE7Ozs2REFFRjsrREFDVTtpQkFDSDRCOzhEQUFRLE9BZGJGOzBCQUFjQyxRQWNUQzs2REFBOEI7eURBQ3JDLHVEQUFBOzs7MERBRXdDO1VBQXJDM0I7MkRBQXFDLFdBakJ4QjBCOzJEQWlCYTtzQyxPQWpCM0JEOzBEQWlCUyx3REFBQTsyQ0FBUnpCOzswREFDMEI7O1VBQTNCdnFEOzJEQWxCY2l0QjtvQkFrQmRqdEIsR0FsQmNpc0Q7VUFBQW4vQixRQUFBRzs7OztzREFNUjs7bURBYVg7WUFPS2svQixLQUNFOWpDLEtBQWdCK2pDO3FEQUFLLEdBQXJCL2pDO1NBQVFDLE1BQVJELFFBQUFna0MsVUFBUS9qQzs7U0FBUitqQztxREFBaUMsZ0JBQUFoQyxLQUFRRDtzREFBc0IsaURBQzNEO01BQVJrQyxTQUZFSCxTQUNFRSxVQUFnQkQ7O2VBQXlCaEMsMEJBQUFBO2lCQUFBQTs7dURBR0gsR0FIdEJnQzt1REFPdEIsV0FQK0NoQzs7Ozs7Ozs7Ozs7O29CQUFSQztrQkFBQUE7O3dCQUFRRDt3QkFBQUE7aUVBd0NqQzs7O3FCQXhDaUNBOzs7O3dCQUFBQTt3QkFBQUE7aUVBMEM3Qjs7O3FCQTFDNkJBOzs7O3dCQUFBQTt3QkFBQUE7aUVBNEMvQjs7O3FCQTVDK0JBOzs7O3dCQUFBQTt3QkFBQUE7aUVBOEMzQjs7O3FCQTlDMkJBOzs7OztrQkFBUkM7O2tCQVE5QjVvRCxLQVI4QjRvRDt3QkFBUUQsMEJBQUFBO21CQVF6QjFvRCxLQVJ5QjBvRDsrREFTL0M7MkJBckhBUixxQkFvSFNub0QsSUFBYUM7O2tCQUVUeW9ELE9BVmtDQzs7O2tCQVkxQ1csS0Faa0NWO3dCQUFRRDtzQkFBQUE7Ozs7c0JBWWpDWSxLQVppQ1o7a0VBYTVDO29FQUFBO3NCQURFVyxJQUFTQztvRUFDQTsrQkFEVEQ7bUVBSVE7OzhCQUFOVjtvQ0FDQUQ7cUNBQ0FtQzt3RUFDTDtvQ0FuQklGO3VDQXZERmpnQyxHQXVFR2krQixLQUVBa0M7MENBTkZ4QixNQU1Fd0I7d0VBQzRDO3dFQURsQyxpREFBQTsrQkFqQmZELE9BZUtqQyxLQUNBRDt1RUFFTCx1REFBQTs7dUVBQWlEO3VFQUZ0QyxpREFBQTs7MEVBQUE7eUNBTENZO3NFQU1aLHVEQUFBOztzRUFDaUQ7b0VBSHRDO3NFQUFBO3FDQUpSRDtrRUFLSCx1REFBQTs7Ozs7a0JBd0RJeUIsUUF6RWlDbkM7d0JBQVFEO3NCQUFBQTs7Ozs7O2tFQTBFL0M7bUJBRGlCcUMsUUF6RThCckM7bUVBMEUvQzs4QkFBS0o7c0VBQ0w7OEJBREtBO3NFQUNJO29FQURDO3FCQXpFUnNDLE9Bd0VJRSxPQUFXQztrRUFFakIsdURBQUE7Ozs7O2tCQTNCWUMsUUFoRDJCckMsUUFnRGhDc0MsUUFoRGdDdEM7d0JBQVFEO3NCQUFBQTs7Ozs7O21FQWlEcEM7bUJBRG1Cd0MsUUFoRGlCeEM7bUJBZ0R2QnlDLFFBaER1QnpDOzs4QkFpRDFDQztvQ0FDQUQ7dUVBQ0w7K0JBRktDOytCQUNBRDt1RUFDVzt1RUFETCxpREFBQTs4QkFqRFRrQyxPQStDVUksT0FBa0JFO3NFQUc5Qix1REFBQTs7c0VBQWdCO29FQUZMO3FCQWhEVE4sT0ErQ0tLLE9BQWlCRTtrRUFFeEIsdURBQUE7Ozs7O2tCQVFLdEIsTUExRGtDbEI7d0JBQVFEO3NCQUFBQTs7Ozs7O3NCQTBEaENvQixNQTFEZ0NwQjs7b0VBNkQ3QztvREFIR21CLEtBQVVDO3VCQUNEc0IsVUFEQ3RCLEtBQ1Z1QixVQURBeEI7O29FQUs0QjtxRUFKbkJ5Qjt1RUFJbUI7c0RBTGxCeEI7cUVBQ1Z5Qjt1RUFJRTtzREFMRjFCO29CQUNTdUIsVUFBQUU7b0JBQVRELFVBQUFFO2tFQUtMO21FQUFBOzhCQUFLakQ7c0VBTUw7O3VCQUFLQTt1RUFDTDsrQkFES0E7dUVBQ0c7dUVBREUsaURBQUE7OzBFQUFBOzRDQU5MQTtzRUFPTCx1REFBQTs7c0VBQVE7b0VBTEo7O2lDLE9BYUprRDsrQkEvRU1iLFNBQWdCRDs7bUVBaUVwQjtxRUFBQTtnREFOR1csU0FBU0Q7a0VBV2QsdURBQUE7Ozs7O2tCQWpCTXJCLE9BckRpQ3BCO3dCQUFRRDtzQkFBQUE7Ozs7OztrRUFzRC9DO21CQURrQnNCLE9BckQ2QnRCO21FQXNEL0M7OEJBQUtHO3NFQUNMOzt1QkFBS0E7dUVBQ0w7K0JBREtBO3VFQUNLO3VFQURDLGlEQUFBOzswRUFBQTs0Q0FETkE7c0VBRUwsdURBQUE7O3NFQUFVO29FQUZDO3NFQUFBOzBDQXJEVCtCLFFBb0RJYixNQUFZQztrRUFFbEIsdURBQUE7Ozs7O2tCQTVCU3lCLFFBM0I4QjlDLFFBMkJsQ3NCLEtBM0JrQ3RCO3dCQUFRRDtzQkFBQUE7Ozs7OzttRUFtQ3JDO21CQVJhZ0QsUUEzQndCaEQ7bUJBMkI1QnlCLEtBM0I0QnpCO29FQW1DM0NqTTtzRUFBTTtxQ0FSTHdOO21FQVNMOzhCQUFLZjtzRUFFTDs4QkFYS2U7OEJBU0FmO3NFQUVZO29FQURnQjtxQkFySDdCWCxVQTJHQzBCLEtBQWNFLElBQUl1QjttRUFVckI7cUJBdENFakIsU0FDRUUsVUFBZ0JELEtBbUNsQmpPLE9BUktnUDtrRUFXVCx1REFBQTs7Ozs7Y0FqQlluRCxLQXJCMkJLLEtBcUJsQ254QyxPQXJCMENreEM7OztvQkFBQUE7d0RBVWxDRCxPQVYwQkU7O2tCQUFBQTtpQkFBQUE7WUFxQjNCTCxLQXJCbUNJLEtBcUIxQ2x4QyxPQXJCa0NteEM7O3dEQXVCeEI7O21CQUFWZ0Q7eUJBQ0FkOzREQUNMO3dCQXpCTUY7MkJBdkRGamdDLEdBOEVDaWhDLFNBQ0FkOzhCQUhBcnpDLFFBR0FxekM7NERBQ2tEOzREQUR4QyxpREFBQTttQkF2QmJELE9Bc0JHZSxTQUZPckQ7MkRBSVosdURBQUE7OzJEQUF1RDt5REFGeEM7MkRBQUE7MEJBRlY5d0M7dURBR0wsdURBQUE7Ozt1REFidUMsV0FEMUJpeEM7O2VBVjBCRTthQUFBQTs7OzBEQTJDekI7OzBEQUVEO2tFQUVFOzs7YUEvQ3dCQTs7MERBNEV2Qjs7MERBeEJDOzswREFvQkY7OzBEQWZDOzswREFsQkQ7O3NEQUVILHlEQXFDZjttREFBQTtZQUNHNkMsaUJBRUdiLFNBQ0FELEtBQ0R4TztvREFIRjtLQUtTd007S0FBTm5LO0tBRE1vSztLQUFObks7b0RBSUwsR0FKV21LO1FBQ0FEO1VBS1FxQyxRQUxSckMsUUFLSG9DLFFBTkduQzt1REFNbUI7eURBQUE7VUFOekJuSyxNQUNBRDt3REFNWTs7bUJBQVZzTTsyREFDTDttQkFSR3JNO3VCQU9FcU07MkRBQ2lCO3lEQURQO1VBNUZYSixTQWtGREUsVUFDQUQsS0FDRHhPLEtBT0k0TyxPQUFXQzt1REFFakIsdURBQUE7Ozs7Ozs7TUFQU3JDOzt3REFJUztTQUxmbEssTUFDQUQ7c0RBSStCLGVBTC9CQztxREFTRTttREFDTjtZQUVDb047O3FDLE9BakdJbkI7O1lBbUdKb0IsU0FBYTlrQyxPQUFVbTFCLEtBQVk3c0I7b0RBQ3JDLGdEQUVFO2dCQUhhdEk7a0JBRVp0UCxLQUFLNndDO3NEQUFPLGlEQUFpQjthQXJHMUJtQyxXQW1HbUJ2TztzREFFTzs7a0JBQXhCb007O3NEQUFPLHdEQUFBO3FDQUFaN3dDO3FEQUE0RDtvREFEL0QsdURBQUE7MENBRHFDNFg7bURBS3BDO1lBRUN5OEIsY0FBaUI1UCxLQUFZeU0sS0FBUUQ7b0RBQ3ZDO2dCQTNHTStCLFdBMEdhdk8sS0FBWXlNLEtBQVFEOzs7b0RBQ0E7WUFFakNxRCxvQkFBdUI3UCxLQUFZb007b0RBQ3pDLElBRHlDRyxPQUFBSDtvREFDekM7ZUFEeUNHLDJCQUFBQTt1REFHaEM7T0FESG5xRCxJQUZtQ21xRDt3REFHaEM7MERBQUE7b0JBSG9Cdk0sS0FFdkI1OUM7O3dEQUdNLE9BTDZCbXFEO1VBQUFNLGlCQUFBTixPQUFBTTs7O3NEQU9sQyxPQVBrQ047O21EQVF4QztZQUVLdUQsVUFBYTlQLEtBQVlvTTtxREFBYSxJQUFiRyxPQUFBSDtxREFBYTtlQUFiRzthQUFBQTs7MERBR3RCO1VBREhucUQsSUFGeUJtcUQ7MkRBR3RCOzZEQUFBO3VCQUhVdk0sS0FFYjU5Qzs7MkRBR00sT0FMbUJtcUQ7YUFBQU0saUJBQUFOLE9BQUFNOzs7YUFZeEJ6dUQsSUFad0JtdUQ7MERBWWxCO2lCQVpQdUQsVUFBYTlQLEtBWVo1aEQ7OzBEQUNzQztVQUFqQ2l3QixLQWJtQmsrQjtVQWF2Qm4rQixLQWJ1Qm0rQjsyREFhYztZQWJ2Q3VELFVBQWE5UCxLQWFQM3hCOzBEQUFPO2lCQWJieWhDLFVBQWE5UCxLQWFYNXhCOzs7MERBRXVDO1VBQXpDK0UsS0FmeUJvNUI7MkRBZWdCO3NDLE9BZnpDdUQsVUFBYTlQOzJEQWVpQjs2REFBQTs7MERBQXZCO2tFQUFJO3VEQUFYN3NCOzswREFEc0I7VUFBckI0OEIsT0Fkd0J4RDsyREFjSDtzQyxPQWR0QnVELFVBQWE5UDswREFjTDtrRUFBSzswQ0FBWitQOzthQUVLakQsT0FoQm1CUCxTQWdCekJqeEMsT0FoQnlCaXhDO3lEQW9CN0I7aUJBSklqeEM7aUJBaEJBdzBDO29FQW9CZ0I7OEJBcEJIOVAsS0FnQmIxa0M7bUJBQU13eEM7O3NEQUxBLE9BWG1CUDs7bURBc0JoQztZQUVHeUQsY0FBaUJoUSxLQUFLb007b0RBQ3hCLGlEQUFPO2FBbkNEeUQsb0JBa0NhN1AsS0FBS29NOzs7Ozs7MERBR0E7OztZQURUNkQsbUJBQVBDO3lEQUFrQjtnQkFBbEJBO2dCQUFPRDs7cURBRVI7bURBQ047WUFFQ0UsYUFBZ0JuUSxLQUFLNXpDLFFBQVFnZ0Q7b0RBQy9CLGlEQUFPO2FBMUNEeUQsb0JBeUNZN1AsS0FBYW9NOzs7Ozs7MERBR1AsaURBQUE7Ozs4REFBdUI7NkRBQWtCOzBEQUF2Qix3REFBQTttQ0FIbkJoZ0Q7Ozs7WUFFaEJ1Z0Q7OzJEQUFVOzRCQUFWQTtjQUZnQnZnRDswREFFd0IsT0FBeEN1Z0Q7OztxREFFQTtzREFBdUI7cURBQWlCO3FEQUF0Qix3REFBQTs4QkFKRnZnRDttREFLdEI7WUFFQ2drRCxhQUFnQnBRLEtBQUtvTTtvREFDdkIsaURBQU87YUFqRER5RCxvQkFnRFk3UCxLQUFLb007Ozs7OzswREFHQzs7O1lBRGpCRzt5REFBTyxPQUFQQTs7cURBRUE7bURBQ047WUFFQzhELFVBQWF2TyxLQUFvQjRCOztxREFFakM7TUFDTTRLO01BQUhsd0Q7c0RBQWEsd0RBQUE7eUNBQWJBLEdBSFUwakQ7dUJBR1YxakQsR0FBR2t3RDs7cURBQ0s7b0RBSGIsdURBQUE7b0NBRG1DNUs7bURBTWxDO1lBRUM0TSxxQkFBd0J0USxLQUFZb007cURBQTJCLGlEQUN4RDtLQUFMRyxPQWhFRXNELG9CQStEb0I3UCxLQUFZb007b0RBRXRDO2FBRElHO3FEQUNKLE9BRElBOztZQUVFRyxLQUZGSDt5REFFUyxXQUFQRzs7OzttQkFGRkgsMkJBQUFBOztXQWdCU1MsVUFoQlRUO1dBZ0JNbnFELElBaEJObXFEO1dBZ0JTZ0U7OERBQ0E7eUJBbEJhdlEsS0FpQmhCNTlDO2dCQUFHNHFEO2dCQTNQWEQsT0EyT0VSO1dBY0VNLE9BRU8wRDs7O2FBRlAxRCxPQWRGTjs7d0RBdUJGO2lCQVRJTSwyQkFBQUE7YUFVRTJELE9BVkYzRDswREFVUyxXQUFQMkQ7O3lEQUNDOztxREFFRjttREFFUjtZQUVHQyxXQUFjckU7b0RBQ2hCO2FBRGdCQSx5QkFBQUE7c0RBRUE7cURBQ1Q7bURBQ047Ozs7OztNQWxXSC9HO01BQUFDO01BQ0FNO01BQUFEO01BQUFHO01BQUFEO01BT0FobkQ7TUFBQUc7TUFBQSttRDtNQUFBQztNQUNBN25EO01BWUE4cEQ7TUFaQTVwRDtNQVlBZ29EO01BWkE5bkQ7TUFZQTBxRDtNQVpBenFEO01BWUErcEQ7TUFFQVc7TUFBQUM7TUFDQUc7TUFBQUY7TUFBQUs7TUFBQUQ7TUFFQUU7TUFBQUM7TUFDQXVCO01BQUFyQjtNQUFBK0I7TUFBQUg7TUFNSU07TUFNQUM7TUEwUEFnRTtNQU9BRztNQU9BQztNQTNQQWpFO01BZUlFO01BaUJKVTtNQVFJditCO01BNEJBNC9CO01BMEJBRztNQWlHSm1CO01BRUFDO01BT0FDO01BR0lDO01BVUFDO01BNkNKTztNQVFBQztNQWdDQUc7O0lBOENKQztJQUFBQztZQUFBL3ZDO29EQUFBO21EQUtDO1lBTERnd0M7b0RBQUE7bURBS0M7WUFMREM7b0RBQUE7bURBS0M7O0tBTERIO2NBQ0F2dkQsS0FBQWlCO3NEQUFBLGdEQUFBOzRCQUFBakI7c0RBQUEsZ0RBQUE7NEJBQUFBO2lCQUFBaUI7c0RBQUEsZ0RBQUE7d0RBREE7VUFBQXl1RCxTQUNBMXZEOztzREFBQSxnREFBQTs0QkFBQUE7c0RBQUEsZ0RBQUE7NEJBQUFBO3NEQUFBLGdEQUFBOzRCQUFBQTtpQkFBQWlCO3NEQUFBLGdEQUFBO3dEQURBO1VBQUF3dUQsU0FDQXp2RDs7c0RBQUEsZ0RBQUE7NEJBQUFBO3NEQUFBLGdEQUFBOzRCQUFBQTtzREFBQSxnREFBQTs0QkFBQUE7aUJBQUFpQjtzREFBQSxnREFBQTt3REFEQTtVQUFBd2UsU0FDQXpmOztzREFBQSxnREFBQTs0QkFBQUE7c0RBQUEsdURBQUE7bUNBQUFBO3FEQUlDOztLQUxEd3ZEO2NBQ0F2dUQ7c0RBQUEsdURBQUE7eUNBREFzdUQsY0FDQXR1RDtxREFJQztZQUpEMHVELGtCQUFBQztvREFBQSxTQUFBQTtxREFBQSx1REFBQTs0Q0FBQWpNLGtCQUFBaU07b0RBQUE7S0FBQUMsa0JBQUFEO3FEQUNFRTtxREFDQUM7cURBQ0FDO3FEQUhGQztxREFBQUM7YUFBQUM7cURBQUE7cURBQUE7b0VBQUE7VUFBQUM7ZUFBQUE7a0JBQUFBOzs7OzthQUFBQywyQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBRTtVQUFBQztxQkFBQUg7c0JBQUFJOzhEQUFBO2tCQUFBSjsrREFBQSx1REFBQTtzREFBQTFNLGtCQUFBaU07aUJBQUFTOytEQUFBLHNEQUFBOztrQkFBQUssUUFBQUw7OERBQUEsT0FBQUs7NkRBSUM7b0JBSkREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7bUNBQUFBOzthQUFBSixtQkFBQUksZ0JBQUFKOzttQkFHRUY7WUFIRkMsd0JBQUFLLGdCQUFBTDs7NERBR0U7NkRBSEZVO2dCQUFBRjs2REFHRUc7K0RBQUE7MEJBSEZEO1lBR0VYLGlCQUFBWTs7a0JBRkFkO1dBREZHLHdCQUFBSyxnQkFBQUw7OzJEQUNFOzREQURGWSxtQkFBQUo7NERBQ0VLOzhEQUFBO2tDQURGRDtXQUNFZixrQkFBQWdCOztpQkFDQWY7VUFGRkUsd0JBQUFLLGdCQUFBTDs7MERBRUU7MkRBRkZjLG1CQUFBTjsyREFFRU87NkRBQUE7Z0NBRkZEO1VBRUVoQixnQkFBQWlCOzt1QkFGRlQ7Ozs7O3NEQUFBLHVEQUFBOzZDQUFBNU0sa0JBQUF5TTs7b0RBSUM7b0RBSkRELFNBQUFOO09BQUFJO3FEQUFBLHVEQUFBOztjQUFBdE07Y0FBQXNNO2NBQUFMO09BQUFNO3FEQUFBLHVEQUFBOztjQUFBdk07Y0FBQXVNO2NBQUFOO2VBQ0VFLG9CQUNBQyxtQkFDQUM7O1NBQUFpQixvQkFEQUMsa0JBREFDO3FEQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEOztvREFIRix1REFBQTs7YUFBQXROO2FBQUFpTTs7d0JBQ0VFOzt5QkFDQUM7NkJBQ0FDO21EQUNEO1lBSkRvQjtvREFBQTtLQUdFQztLQURBQztLQURBQztxREFFQUM7dURBQUE7a0JBQUFIO3FEQUhGSTs2QkFHRUQ7cURBREFFO3VEQUFBOzBCQUFBSjtxREFGRks7NkJBRUVELGVBRkZEO3FEQUNFRzt1REFBQTsyQkFBQUw7cURBREZNOzZCQUNFRCxlQURGRDtvREFBQSxXQUFBRTttREFJQztZQUpEQyxvQkFBQWp6RDtvREFBQTthQUFBQSxxQ0FBQUE7cURBQ0U7TUFERjhILGdCQUFBOUg7c0RBQ0VrekQ7c0RBQ0EzbkQ7c0RBQ0E0bkQ7c0RBSEZsckQ7c0RBQUFDO01BQUFDOzt5REFBQTt5REFBQTs7MkRBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTs2REFBQTsrREFBQTs7Y0FBQUo7O2dCQUFBSTtnRUFBQTswQ0FBQUo7Ozs4REFHRTt3Q0FBQWlyRDthQUhGbHJEOztlQUFBSzsrREFHRTt5Q0FIRkw7OzZEQUdFLGdEQUFBO2NBQUFNO2dFQUFBOzJCQUhGRjthQUdFOHFELG1CQUFBNXFEOzs7NkRBRkE7dUNBQUEycUQ7WUFERmpyRDs7Y0FBQUs7OERBQ0U7d0NBREZMOzs0REFDRSxnREFBQTthQUFBTzsrREFBQTttQ0FERkg7WUFDRTZxRCxvQkFBQTFxRDs7OzREQUNBO3NDQUFBK0M7V0FGRnREOzthQUFBSzs2REFFRTt1Q0FGRkw7OzJEQUVFLGdEQUFBO1lBQUFpSTs4REFBQTtpQ0FGRjdIO1dBRUVrRCxrQkFBQTJFOzt3QkFGRjlIOzt3REFJQztxREFKREQsS0FBQUw7O3VEQUFBO2lDQUFBRztzREFBQSxnREFBQTs7eURBQUE7bUNBQUFBO3NEQUFBLHVEQUFBO21EQUFBNEssZ0JBQUE3Uzs7O3VEQUFBO2lDQUFBa0k7c0RBQUEsZ0RBQUE7O3lEQUFBO21DQUFBQTtzREFBQSx1REFBQTttREFBQTJLLGdCQUFBN1M7O3FEQUNFO3NEQUFBO3dEQUFBO2tDQUFBa3pEO3NEQUNBO3dEQUFBO2tDQUFBM25EO3NEQUNBO3dEQUFBO2tDQUFBNG5EOzs7T0FBQUM7T0FEQTVuRDtPQURBNm5EO3NEQURGO2NBQ0VBO2NBQ0E3bkQ7Y0FDQTRuRDs7cURBSEY7c0RBQUE7Ozs7OzREQUdFO3NDQUFBRDs7Ozs7c0RBSEY7Ozs7OzREQUVFO3NDQUFBNW5EOzs7OztzREFGRjs7Ozs7NERBQ0U7c0NBQUEybkQ7Ozs7O3FEQURGLHVEQUFBO2tEQUFBcmdELFVBQUE3Uzs7b0RBQUEsdURBQUE7aURBQUE2UyxVQUFBN1M7bURBSUM7WUFKRHN6RDtvREFBQTtLQUdFQztLQURBOW5EO0tBREErbkQ7S0FFQTNxRCwwQkFBQTBxRDtLQUFBenFELDBCQUFBRDtLQURBRSxvQ0FBQTBDO0tBQUF6QywyQkFBQUQsUUFDQUQ7S0FGQTJILHFDQUFBK2lEO0tBQUE5aUQsNkJBQUFELFFBQ0F6SDtvREFGRjs7WUFDRTBIO21EQUdEOztJQUVEK2lEO0lBQUFDO1lBQUFDO29EQUFBO21EQUtDO1lBTERDO29EQUFBO21EQUtDO1lBTERDO29EQUFBO21EQUtDOztLQUxESjtjQUNBdHlELEtBQUFpQjtzREFBQSxnREFBQTs0QkFBQWpCO3NEQUFBLGdEQUFBOzRCQUFBQTtpQkFBQWlCO3NEQUFBLGdEQUFBO3dEQURBO1VBQUF5eEQsU0FDQTF5RDs7c0RBQUEsZ0RBQUE7NEJBQUFBO3NEQUFBLGdEQUFBOzRCQUFBQTtzREFBQSxnREFBQTs0QkFBQUE7aUJBQUFpQjtzREFBQSxnREFBQTt3REFEQTtVQUFBd3hELFNBQ0F6eUQ7O3NEQUFBLGdEQUFBOzRCQUFBQTtzREFBQSxnREFBQTs0QkFBQUE7c0RBQUEsZ0RBQUE7NEJBQUFBO2lCQUFBaUI7c0RBQUEsZ0RBQUE7d0RBREE7VUFBQXV4RCxTQUNBeHlEOztzREFBQSxnREFBQTs0QkFBQUE7c0RBQUEsdURBQUE7bUNBQUFBO3FEQUlDOztLQUxEdXlEO2NBQ0F0eEQ7c0RBQUEsdURBQUE7eUNBREFxeEQsZUFDQXJ4RDtxREFJQztZQUpEMHhELG1CQUFBQztvREFBQSxTQUFBQTtxREFBQSx1REFBQTs0Q0FBQWhQLGtCQUFBZ1A7b0RBQUE7S0FBQUMsa0JBQUFEO3FEQUNFRTtxREFDQUM7cURBQ0FDO3FEQUhGQztxREFBQUM7YUFBQUM7cURBQUE7cURBQUE7b0VBQUE7VUFBQUM7ZUFBQUE7a0JBQUFBOzs7OzthQUFBQywyQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBRTtVQUFBQztxQkFBQUg7c0JBQUFJOzhEQUFBO2tCQUFBSjsrREFBQSx1REFBQTtzREFBQXpQLGtCQUFBZ1A7aUJBQUFTOytEQUFBLHNEQUFBOztrQkFBQUssUUFBQUw7OERBQUEsT0FBQUs7NkRBSUM7b0JBSkREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7bUNBQUFBOzthQUFBSixtQkFBQUksZ0JBQUFKOzttQkFDRUo7WUFERkcsd0JBQUFLLGdCQUFBTDs7NERBQ0U7NkRBREZVO2dCQUFBRjs2REFDRUc7K0RBQUE7c0NBREZEO1lBQ0ViLGtCQUFBYzs7a0JBRUFaO1dBSEZDLHdCQUFBSyxnQkFBQUw7OzJEQUdFOzREQUhGWSxtQkFBQUo7NERBR0VLOzhEQUFBO3lCQUhGRDtXQUdFYixrQkFBQWM7O2lCQURBZjtVQUZGRSx3QkFBQUssZ0JBQUFMOzswREFFRTsyREFGRmMsbUJBQUFOOzJEQUVFTzs2REFBQTtnQ0FGRkQ7VUFFRWhCLGdCQUFBaUI7O3VCQUZGVDs7Ozs7c0RBQUEsdURBQUE7NkNBQUEzUCxrQkFBQXdQOztvREFJQztvREFKREQsU0FBQU47T0FBQUk7cURBQUEsdURBQUE7O2NBQUFyUDtjQUFBcVA7Y0FBQUw7T0FBQU07cURBQUEsdURBQUE7O2NBQUF0UDtjQUFBc1A7Y0FBQU47ZUFDRUUsb0JBQ0FDLG1CQUNBQzs7U0FBQWlCLHFCQURBQyxrQkFEQUM7cURBREY7YUFDRUE7YUFDQUQ7YUFDQUQ7O29EQUhGLHVEQUFBOzthQUFBclE7YUFBQWdQOzt3QkFDRUU7O3lCQUNBQzs2QkFDQUM7bURBQ0Q7WUFKRG9CO29EQUFBO0tBR0VDO0tBREFDO0tBREFDO3FEQUVBQzt1REFBQTtrQkFBQUg7cURBSEZJOzZCQUdFRDtxREFEQUU7dURBQUE7MEJBQUFKO3FEQUZGSzs2QkFFRUQsZUFGRkQ7cURBQ0VHO3VEQUFBOzhCQUFBTDtxREFERk07NkJBQ0VELGVBREZEO29EQUFBLFdBQUFFO21EQUlDO1lBSkRDLHFCQUFBajJEO29EQUFBO2FBQUFBLHFDQUFBQTtxREFDRTtNQURGOEgsZ0JBQUE5SDtzREFDRWt6RDtzREFDQTNuRDtzREFDQTJxRDtzREFIRmp1RDtzREFBQUM7TUFBQUM7O3lEQUFBO3lEQUFBOzsyREFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7b0NBQUFBOzZEQUFBOytEQUFBOztjQUFBSjs7Z0JBQUFJO2dFQUFBOzBDQUFBSjs7OzhEQUNFO3dDQUFBZ3JEO2FBREZqckQ7O2VBQUFLOytEQUNFO3lDQURGTDs7NkRBQ0UsZ0RBQUE7Y0FBQU07Z0VBQUE7dUNBREZGO2FBQ0U2cUQsb0JBQUEzcUQ7Ozs2REFFQTt1Q0FBQTJ0RDtZQUhGanVEOztjQUFBSzs4REFHRTt3Q0FIRkw7OzREQUdFLGdEQUFBO2FBQUFPOytEQUFBOzBCQUhGSDtZQUdFNnRELG9CQUFBMXREOzs7NERBREE7c0NBQUErQztXQUZGdEQ7O2FBQUFLOzZEQUVFO3VDQUZGTDs7MkRBRUUsZ0RBQUE7WUFBQWlJOzhEQUFBO2lDQUZGN0g7V0FFRWtELGtCQUFBMkU7O3dCQUZGOUg7O3dEQUlDO3FEQUpERCxLQUFBTDs7dURBQUE7aUNBQUFHO3NEQUFBLGdEQUFBOzt5REFBQTttQ0FBQUE7c0RBQUEsdURBQUE7bURBQUErOEMsZ0JBQUFobEQ7Ozt1REFBQTtpQ0FBQWtJO3NEQUFBLGdEQUFBOzt5REFBQTttQ0FBQUE7c0RBQUEsdURBQUE7bURBQUE4OEMsZ0JBQUFobEQ7O3FEQUNFO3NEQUFBO3dEQUFBO2tDQUFBa3pEO3NEQUNBO3dEQUFBO2tDQUFBM25EO3NEQUNBO3dEQUFBO2tDQUFBMnFEOzs7T0FBQUM7T0FEQTNxRDtPQURBNm5EO3NEQURGO2NBQ0VBO2NBQ0E3bkQ7Y0FDQTJxRDs7cURBSEY7c0RBQUE7Ozs7OzREQUdFO3NDQUFBRDs7Ozs7c0RBSEY7Ozs7OzREQUVFO3NDQUFBM3FEOzs7OztzREFGRjs7Ozs7NERBQ0U7c0NBQUEybkQ7Ozs7O3FEQURGLHVEQUFBO2tEQUFBbE8sVUFBQWhsRDs7b0RBQUEsdURBQUE7aURBQUFnbEQsVUFBQWhsRDttREFJQztZQUpEbzJEO29EQUFBO0tBR0VDO0tBREE1cUQ7S0FEQStuRDtLQUVBM3FELDBCQUFBd3REO0tBQUF2dEQsMkJBQUFEO0tBREFFLG9DQUFBMEM7S0FBQXpDLDRCQUFBRCxRQUNBRDtLQUZBMkgsd0NBQUEraUQ7S0FBQTlpRCw2QkFBQUQsUUFDQXpIO29EQUZGOztZQUNFMEg7bURBR0Q7O0lBRUQ0bEQ7SUFBQUM7WUFBQUM7b0RBQUEsT0FQQS9DO29EQVd5QjtZQUp6QmdEO29EQUFBLE9BZEEvRjtvREFrQnlCO1lBSnpCZ0c7b0RBQUEsT0FkQWhHO29EQWtCeUI7O0tBSnpCNEY7Y0FDQW4xRDtzREFBQTs7YUFEQXlEO3lEQUNBLGdEQUFBOytCQUFBekQ7eURBREEsZ0RBQUE7MkRBQUE7YUFBQXUxRCxTQUNBdjFEO1dBREF5RDt5REFBQSx1REFBQTtzQ0FDQXpEOzthQURBcWI7eURBQ0EsZ0RBQUE7K0JBQUFyYjt5REFEQSxnREFBQTsyREFBQTthQUFBczFELFNBQ0F0MUQ7V0FEQXFiO3lEQUFBLHVEQUFBO3NDQUNBcmI7O2FBREF1Zjt5REFDQSxnREFBQTsrQkFBQXZmO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFxMUQsU0FDQXIxRDtXQURBdWY7eURBQUEsdURBQUE7c0NBQ0F2Zjs7c0RBR3lCOztLQUp6Qm8xRDtjQUNBbjBEO3NEQUFBLHVEQUFBO3lDQURBazBELFVBQ0FsMEQ7c0RBR3lCO1lBSHpCdTBELGNBQUFDO29EQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7d0RBQUEsdURBQUE7OENBQUEzUixrQkFBQTJSOzt1REFBQSx1REFBQTs2Q0FBQTNSLGtCQUFBMlI7O3NEQUFBLHVEQUFBOzRDQUFBM1Isa0JBQUEyUjs7Z0JBQUFBOztzREFBQSx1REFBQTs0Q0FBQTNSLGtCQUFBMlI7OztzREFBQSx1REFBQTs0Q0FBQTNSLGtCQUFBMlI7U0FBQUM7OzZCQUFBQTs7OEJBQUFBOytCQUFBQTtrQ0FBQUE7a0NBQUFBO2dDQUFBQTs7V0FBQUM7VUFBQUEsbUJBQUFBO3dEQUFBO1NBQUFDLFdBQUFEO3lEQUFBRTtXQWRBbEcsa0JBY0FpRzt3REFBQSxXQUFBQzs7dURBQUEsdURBQUE7O2dCQUFBL1I7Z0JBQUE0UjtnQkFBQUQ7O1VBQUFLO1NBQUFBLG1CQUFBQTt1REFBQTtRQUFBQyxXQUFBRDt3REFBQUU7VUFQQXJELG1CQU9Bb0Q7dURBQUEsV0FBQUM7O3NEQUFBLHVEQUFBOztlQUFBbFM7ZUFBQTRSO2VBQUFEOztTQUFBUTtRQUFBQSxtQkFBQUE7c0RBQUE7T0FBQUMsV0FBQUQ7dURBQUFFO1NBZEF4RyxrQkFjQXVHO3NEQUFBLFdBQUFDOztxREFBQSx1REFBQTs7Y0FBQXJTO2NBQUE0UjtjQUFBRDs7b0RBQUEsdURBQUE7MENBQUEzUixrQkFBQTJSO29EQUd5QjtZQUh6Qlc7b0RBQUE7O3VEQUNJO1FBQUFDO3dEQUFBQztVQWZKbEYsa0JBZUlpRjt1REFBQTs2QkFBQUM7O3VEQUNBO1FBQUFDO3dEQUFBQztVQWhCSnBGLGtCQWdCSW1GO3VEQUFBOzZCQUFBQzs7dURBQ0E7UUFBQUM7d0RBQUFDO1VBVkp0QyxtQkFVSXFDO3VEQUFBOzZCQUFBQzs7b0RBQXFCO1lBSHpCQyxnQkFBQTkzRDtvREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7dURBQUEsdURBQUE7bURBQUFrbEQsVUFBQWxsRDs7O2lCQUFBQTs7dURBQUEsdURBQUE7bURBQUFrbEQsVUFBQWxsRDs7Ozs7WUFBQW1GO2tDQUFBQTthQUFBK2Y7WUFBQUEsbUJBQUFBOzBEQUFBO1dBQUFDLE9BQUFEOzJEQUFBRTthQWRBNnRDLG9CQWNBOXRDOzBEQUFBLFdBQUFDOzt5REFBQSx1REFBQTtxREFBQTgvQixVQUFBLy9DLEtBQUFuRjs7a0NBQUFtRjthQUFBc1k7WUFBQUEsbUJBQUFBOzBEQUFBO1dBQUFDLE9BQUFEOzJEQUFBRTthQVBBczRDLHFCQU9BdjRDOzBEQUFBLFdBQUFDOzt5REFBQSx1REFBQTtxREFBQXVuQyxVQUFBLy9DLEtBQUFuRjs7a0NBQUFtRjthQUFBQztZQUFBQSxpQkFBQUE7MERBQUE7V0FBQWxGLEtBQUFrRjsyREFBQWpGO2FBZEE4eUQsb0JBY0EveUQ7MERBQUEsV0FBQUM7O3lEQUFBLHVEQUFBO3FEQUFBK2tELFVBQUEvL0MsS0FBQW5GOzs7O3dEQUFBLHVEQUFBO29EQUFBa2xELFVBQUFsbEQ7Ozs7b0RBQUEsdURBQUE7Z0RBQUFrbEQsVUFBQWxsRDtvREFHeUI7WUFIekIrM0Q7b0RBQUE7O3VEQUNJO1FBQUE3M0Q7d0RBQUFDO1VBZkptekQsb0JBZUlwekQ7dURBQUE7OzZCQUFBQzs7dURBQ0E7UUFBQXVkO3dEQUFBQztVQWhCSjIxQyxvQkFnQkk1MUM7dURBQUE7OzZCQUFBQzs7dURBQ0E7UUFBQXdIO3dEQUFBQztVQVZKZ3hDLHFCQVVJanhDO3VEQUFBOzs2QkFBQUM7O29EQUFxQjs7SUFFekJua0I7SUFBQWdGO1lBQUEreEQ7b0RBQUEsT0FOQTFCO29EQU9vQjs7S0FEcEJyMUQ7Y0FDQUUsS0FBU2lCO3VEQUFBLGlEQUFBOzRCQUFUakI7O29CQUFTdUwsS0FBQXRLO3dEQUFBLEdBQUFzSzt5REFBQSxpREFBQTs4QkFBVHZMO3dEQUFTLGlEQUFBO3lEQURUO1dBQUE2MkQsU0FDQTcyRDtTQUFTaUI7d0RBQUE7dURBQVc7dURBQVgsaURBQUE7cUNBQUFBO3VEQUFBLHdEQUFBO21DQUFUakI7c0RBQW9COztLQURwQjhFO2NBQ0E3RDtzREFBQSx1REFBQTt5Q0FEQW5CLE1BQ0FtQjtzREFBb0I7WUFBcEIzQixZQUFBdzNEO29EQUFBLHVEQUFBOzhCQU5BdEIsZUFNQXNCO29EQUFvQjtZQUFwQjMzRCxZQUFBNDNEO29EQUFBLHVEQUFBOzhCQU5BWCxlQU1BVztvREFBb0I7bURBQXBCLFNBQUFwM0QsY0FBQTFDO2U7dURBTkEwNUQsaUJBTUExNUQ7O1lBQUF3QyxjQUFBUTtlO3VEQU5BMjJELGlCQU1BMzJEOztZQUVJMitDLE9BQVVDLEtBQUttWTtxREFBVSx3REFBQTs2QkFBVkEsT0FBTG5ZO29EQUFvQztZQUU5Q29ZLFlBQWVwWSxLQUFRcVk7b0RBQ3pCLE9BSEV0WTthQUVlQyxTQUFRcVk7b0RBQ1M7WUFFaENDLGFBQWdCdFksS0FBUTFrQyxNQUFnQnZjLElBQVVxdEQ7b0RBQ3BELE9BSkVnTTthQUdnQnBZLFNBQVExa0MsTUFBZ0J2YyxRQUFVcXREO29EQUNIO1lBRS9DbU0sa0JBQXFCdlksS0FBUTFrQztvREFDL0IsT0FQRTg4QzthQU1xQnBZLFNBQVExa0M7b0RBQ3lCO1lBRXREazlDLFlBQWV4WSxLQUFRMWtDOztxREFFdkI7VUFDWWxhO3VEQUFRO3lEQUFBO1VBQVJBLE1BSFdrYTt3REFHZSxXQUExQmxhOztzREFDTDtxREFBSTtvREFIYix1REFBQTtvQ0FEaUI0K0M7bURBTWhCO1lBRUN5WSxhQUFnQnpZLEtBQVE1aEQ7b0RBQzFCLGlEQUFPO2FBVExvNkQsWUFRZ0J4WSxLQUFRNWhEOzs7O1VBRUZndUQ7dURBQVksV0FBWkE7OztxREFFZDttREFDVDtZQUVDc007b0RBQ0YsSUFDWTM1RDtxREFFWSxPQUZaQTtvREFFYztZQUV4QjQ1RCxXQUFjM1ksS0FBUTFrQzs7cURBRXRCO1VBQ1dsYTt1REFBUTt5REFBQTtVQUFSQSxNQUhXa2E7d0RBR2UsV0FBMUJsYTs7c0RBQ0o7cURBQUk7b0RBSGIsdURBQUE7b0NBRGdCNCtDO21EQU1mO1lBRUM0WSxXQUFjNVksS0FBUTFrQzs7cURBRXRCO1VBQ21CbGQ7dURBQVE7eURBQUE7VUFBUkEsTUFIR2tkO3dEQUd1QixXQUExQmxkOztzREFDWjtxREFBSTtvREFIYix1REFBQTtvQ0FEZ0I0aEQ7bURBTWY7WUFFQzZZLFNBQVk3WSxLQUFRMWtDO29EQUN0QixPQTlCRW05QztjQTZCWXpZLEtBQVExa0M7OzttREFJckI7WUFFQ3c5QyxTQUFZOVksS0FBUTFrQyxNQUFnQnZjLElBQVUya0Q7O3FEQUU5QztNQUFPNEs7TUFBTHhNO3FEQUNBLEdBREt3TTtVQU9NeUssUUFQTnpLLG1CQU9NeUssV0FUT3o5Qzs7cUJBQUFBO3FEQUdsQjtpQkFEQXdtQyxLQUZrQy9pRDtxREFXaEM7b0RBVk4sZ0RBQUE7O3VEQUFBO2dDQURnRDJrRDtvREFDaEQsdURBQUE7K0JBRGMxRDttREFjVDtZQUVIZ1osZ0JBQW1CaFosS0FBUWlaO3FEQUE2QjtzREFFdERDO3dEQUFnQjt5QkFGU0Q7c0RBR3pCRTt3REFBYTt5QkFISW5aO09BR2pCbVosYUFEQUQ7c0RBRTRCO3FEQUtvQjtzREFBQTt3REFBQTt5QkFUL0JsWjtzREFTZjt3REFBQTtnQ0FQRmtaLGVBQ0FDO3FEQUdHOzREQUVIOzttREFLTDtZQUVHQyxlQUFrQkMsV0FBY0M7cURBQXFCO3NEQUVkO3dEQUFBO3lCQUZQQTtzREFFOUJDO3dEQUFZO3lCQUZJRjs7O3NEQUdiO3dEQUFBOzRCQURIRSxXQUZnQkY7aUVBS2I7UUFEQ3JaO3FEQUFZLE9BQVpBO21EQUdUOztZQUtHd1osa0JBQXFCeFo7b0RBQ3ZCLGdEQWVLOzt5QkFiMkJtWTtxREFBM0I7TUFBaUJzQjtNQUFWQztNQUFMMVo7c0RBQW1DLFNBQVZtWTtVQU9ad0IsU0FQWXhCOzhEQVF2QjsyQkFEV3dCLFFBUEVGO29CQUFmelosS0FBSzBaLFVBQVVEOztvQkFBVXRCLE9BQXpCblk7Z0JBQUswWjtpRUFVNkI7NkJBSHJCQyxRQVBFRjs7U0FFSG4rQyxPQUZhNjhDOzZEQUl2QjswQkFGVTc4QyxNQUZQbytDO21CQUFMMVosS0FBSzBaLFVBQVVEOzttQkFBVXRCLE9BQXpCblk7Z0VBTXdCOzRCQUpaMWtDLE1BRlBvK0M7ZUFBVUQ7cURBWWhCO29EQWROLGdEQUFBOzt1REFBQTt5REFDRzs7U0FGb0J6WjtvREFDdkI7NkRBaUJHO2NBQUdBOzhEQUFlLHdEQUFBO3NDQUFmQTs2REFBNkI7O29EQUFBO1lBRWpDNFosWUFBZTVaLEtBQVExa0M7b0RBQ3pCO3FEQUFBO3VEQUFBOzZCQUR5QkE7cURBQ3pCO3NCQW5HRW05QyxhQWtHZXpZLEtBQVExa0M7b0RBQ3pCO29EQUF5RDs7Ozs7O01BN0kzRG8xQztNQUFBQztNQUNBNEI7TUFBQXpCO01BQUF3QztNQUFBTDtNQU1BUTtNQUFBQztNQUNBNkI7TUFBQXpCO01BQUFzQztNQUFBSDtNQU1BSztNQUFBQztNQUNBZ0I7TUFBQVo7TUFBQW9CO01BQUFEO01BS0E3MkQ7TUFBQWdGO01BQ0F4RjtNQUFBSDtNQUFBUTtNQUFBRjtNQUVJbS9DO01BRUFxWTtNQUdBRTtNQUdBQztNQUdBQztNQVFBQztNQU9BQztNQU1BQztNQVFBQztNQVFBQztNQU1BQztNQWdCQUU7TUFlQUk7TUFZQUk7TUFvQkFJOztJQVNKdnlCO0lBQUF3eUI7WUFBQUM7b0RBQUE7b0RBR1k7O0tBSFp6eUI7Y0FDQWxtQztzREFBQTt1REFBQSx1REFBQTttQ0FBQUE7VUFEQXlEO3NEQUNBLGdEQUFBOzRCQUFBekQ7c0RBREEsZ0RBQUE7d0RBQUE7VUFBQTI0RCxTQUNBMzREO1FBREF5RDtzREFBQSx1REFBQTttQ0FDQXpEO3NEQUVZOztLQUhaMDREO2NBQ0F6M0Q7c0RBQUEsdURBQUE7eUNBREFpbEMsTUFDQWpsQztzREFFWTtZQUZaa2xDLFlBQUF5eUI7b0RBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozt1REFBQSx1REFBQTs2Q0FBQTVVLGtCQUFBNFU7O3NEQUFBOztnQkFBQUE7O3NEQUFBLHVEQUFBOzRDQUFBNVUsa0JBQUE0VTs7O3NEQUFBLHVEQUFBOzRDQUFBNVUsa0JBQUE0VTtTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOztVQUFBQztTQUFBQSxtQkFBQUE7dURBQUE7UUFBQUMsV0FBQUQ7d0RBQUFFOzBEQUFBO3FCQUFBRDt1REFBQSxXQUFBQzs7c0RBQUEsdURBQUE7O2VBQUFoVjtlQUFBNlU7ZUFBQUQ7O3FEQUFBLHVEQUFBOzJDQUFBNVUsa0JBQUE0VTs7b0RBQUEsdURBQUE7MENBQUE1VSxrQkFBQTRVO29EQUVZO1lBRlp2eUI7b0RBQUE7cURBRUk7b0RBREE7S0FBQTR5QjtxREFBQUM7dURBQUE7a0JBQUFEO29EQUFBOzBCQUFBQztvREFDUTtZQUZaM3lCLGNBQUExbkM7b0RBQUE7YUFBQUE7Z0JBQUFBOztnQ0FBQUE7dURBQUEsdURBQUE7bURBQUFvbEQsVUFBQXBsRDs7O2lCQUFBQTs7dURBQUEsdURBQUE7bURBQUFvbEQsVUFBQXBsRDs7Ozs7WUFBQW1GO2tDQUFBQTs7bUVBQUE7dURBQUFpZ0QsVUFBQXBsRDs7a0NBQUFtRjthQUFBQztZQUFBQSxpQkFBQUE7MERBQUE7V0FBQWxGLEtBQUFrRjsyREFBQWpGOzZEQUFBO3dCQUFBRDswREFBQSxXQUFBQzs7eURBQUEsdURBQUE7cURBQUFpbEQsVUFBQWpnRCxLQUFBbkY7Ozs7d0RBQUEsdURBQUE7b0RBQUFvbEQsVUFBQXBsRDs7OztvREFBQSx1REFBQTtnREFBQW9sRCxVQUFBcGxEO29EQUVZO1lBRloybkM7b0RBQUE7cURBRUk7b0RBREE7S0FBQXpuQztxREFBQUM7dURBQUEsb0JBQUFEO29EQUFBOzswQkFBQUM7b0RBQ1E7Ozs7O1NBSFprbkMsTUFBQXd5QixRQUNBdnlCLGFBQUFFLGFBQUFFLGVBQUFDOzs7O09Bcm1CRTRkO09BQ0FDO09BQ0FDO09BQ0FDOzs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7O2M7Ozs7Ozs7OztpRENOSixTQUFBcm5ELFVBQUFzTztrREFBQSxxREFBQTtxREFBQUE7a0RBQXlCO1lBQXpCeE8sVUFBQXlPO2tEQUFBLHFEQUFBO3FEQUFBQTtrREFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FBekJ2TztPQUFBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7OztJQ09FRjtJQUFBQztJQTBEQThkO0lBQUF0WDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBakNJbW1CO0lBRUFnbEI7Ozs7Ozs7OztJQXNCQWtUOzs7Ozs7b0RBakRKLFNBQUE5akQ7SUFBYUMsVUFBTUM7cURBQW5CLFNBQW1CQTtnQkFBQUE7Ozs7eURBQUE7UUFBQUM7UUFBQUM7MERBQUFDOzREQUFBOzhCQUFBRDswREFBQUU7NERBQUE7WUFBTkwsVUFBTUU7eURBQUE7ZUFBQUU7ZUFBQUM7Ozs7c0RBQUEseURBQUE7MENBQW5CdEIscUJBQW1Ca0I7cURBQVc7WUFBOUJLLGdCQUFhQztxREFBYjtLQUFtQkM7S0FBQUM7S0FBQUMsd0NBQUFEO0tBQUFFLHNCQUFOSixVQUFNQzttQkFBQUUsY0FBQUM7cURBQVc7b0RBQTlCLFNBQUFDO0lBQUFDLE1BQW1CQztxREFBbkI7YUFBbUJBLHFDQUFBQTtnQkFBQUE7Ozs7O1FBQUFDO1FBQUFDO1FBQUFDLG9DQUFBRDtRQUFBRSxrQkFBbkJMLE1BQW1CRTtrQkFBQUUsTUFBQUM7Ozs7eURBQW5CbEMsV0FBbUI4QjtxREFBVztZQUE5Qkssa0JBQUFOO3FEQUFBO0tBQW1CRTtLQUFBQztLQUFBQyxvQ0FBQUQ7S0FBQUUsa0JBQW5CTCxNQUFtQkU7OEJBQUFFLFVBQUFDO3FEQUFXO1lBRTFCdkIsR0FBTXFDLE1BQU1wQyxHQUFHMEI7c0RBQ2pCLHlEQUFBOztzQkFBTWEsR0FBR0Q7aUVBQU0sMERBQUE7MkNBRER0QyxRQUNSdUMsR0FERUgsTUFDQ0U7Z0VBQWtEO2FBRDFDWjtzREFDZ0Q7WUFvQm5FckMsVUFsQmlCb0MsV0FBeUJDO3NEQUN4QyxrREFBQTs7eURBQUE7bUJBRHdDQTt1REFDUjtnQixPQU5sQ2hCLGdCQUtpQmU7O3NEQUNmLHlEQUFBO2dFQUFtQjs7O3NEQUF3QztZQWlCN0RsQyxVQWhCaUJxQyxXQUF5QkM7dURBQ25CO2dCLE9BUnZCMUIsZ0JBT2lCeUI7O3NEQUNmLGtEQUFBOzt5REFBQTs0REFBUTs7U0FEZ0NDO3NEQUN4Qyx5REFBQTs7K0RBQUE7O3NEQUF5RTtZQWUzRXBDLFlBWktzQyxhQUFrQ0w7c0RBQ3JDLGtEQUFBOzt5REFBQTttQkFEcUNBO3VEQUNIO2dCLE9BWnBDSCxrQkFXS1E7O3NEQUNILHlEQUFBO2dFQUFtQjs7O3NEQUE4QztZQVduRXJDLFlBVEt1QyxhQUFrQ2Y7dURBRW5CO2dCLE9BaEJwQkYsa0JBY0tpQjs7c0RBQ0gsa0RBQUE7O3lEQUFBOzJEQUNHOztTQUZrQ2Y7c0RBQ3JDLHlEQUFBOzsrREFBQTs7c0RBR1M7O0lBSVhvL0M7SUFBQUM7WUFBQTE2QztzREFBQSxPQXBCSTlGO3NEQXFCcUI7O0tBRHpCdWdEO2NBQUFFLFFBQ0FuK0M7b0JBQWNBOzBEQUFRLDBEQUFBO2dCQUR0Qm0rQyxRQUNjbitDO3lEQUFVO3dEQUR4QixrREFBQTtjQUFBd0Q7d0RBQUE7O3lCQUNBeEQ7d0RBQXlCOztLQUR6QmsrQztjQUFBQyxRQUNBbDlDO3dEQUFBLGtEQURBOzsyREFBQTtXQUFBZzlDLE1BQUFFO3dEQUNBLHlEQUFBOzhDQUFBbDlDO3dEQUF5QjtZQU1yQms0RDt1REFBWTtLQUFLejREO0tBQUhPO3VEQUFVLDBEQUFBO3dCQUFWQSxHQUFHUDtzREFBNEI7WUFFN0NrK0MsT0FBVUM7dURBQUQ7S0FBVW4rQztLQUFITzt1REFBVSwwREFBQTtrQkFBVkEsR0FBR1AsR0FBVG0rQztzREFBb0M7WUFFOUN1YSxTQUFVdmEsS0FBS2xoRCxHQUFHc0Q7dURBQU0sMERBQUE7cUJBQU5BLEdBQUh0RCxHQUFMa2hEO3NEQUFxQztZQUUvQ3dhLFFBQVNDLE1BQU1DO3NEQUNqQix5REFBQTs7c0JBQWF0NEQsR0FBSTA4QixLQUFHajlCO2lFQUFRO3NCQUFYaTlCO2dFQUFrQjthQUR4QjI3QjthQUFNQztzREFDK0I7WUFFOUN2YSxPQUFVSCxLQUFLNTlDO3VEQUFNLDBEQUFBO3VCQUFOQSxHQUFMNDlDO3NEQUFpQztZQUUzQ0ksU0FBWUosS0FBSzU5Qzt1REFBTSwwREFBQTtrQkFBTkEsR0FBTDQ5QztzREFBNEI7WUFFeEN4L0MsSUFBTTFCO3VEQUFLLDBEQUFXOztzQkFBQ3NELEdBQUdQO2lFQUFNLDBEQUFFO3VCQUE1Qi9DLE9BQWlCc0QsR0FBR1A7Z0VBQWU7c0RBQUM7WUFFMUM4NEQsU0FBUzc3RDt1REFBSywwREFBYTs7c0JBQUNzRCxHQUFHUDtpRUFBTSwwREFBRTt1QkFBOUIvQyxPQUFtQnNELEdBQUdQO2dFQUFlO3NEQUFDO1lBRS9DKzRELE9BQVE5N0QsR0FBRzRDLE1BQU1zK0M7c0RBQ25CLHlEQUFBOztzQkFBWTU5QyxHQUFHUCxHQUFHMFo7aUVBQVEsMERBQUE7dUJBRGhCemMsT0FDRXNELEdBQUdQLElBQUcwWjtnRUFBc0I7YUFEckJ5a0M7YUFBTnQrQztzREFDdUM7WUFJbEQyK0MsUUFBVUw7dURBQU8sbURBQUE7OzBEQUFBO2lCQUFQQTt1REFBTywwREFBQTs7c0RBQWtDO1lBRW5ENEQsUUFBVU47dURBQVksMERBQUE7O2dFQUFBO2dDQUFaQTtzREFBbUQ7O0lBSWpFdVg7O0lBQUFDO1lBQUE1MEQ7c0RBQUE7cURBS0M7WUFMREM7c0RBQUEsT0FuQ0FpNUM7cURBd0NDOztLQUxEeWI7Y0FBQXZiLFFBQ0FuK0MsS0FBQWlCO3dEQUFBLGtEQUFBOzRCQUFBakI7d0RBQUEsa0RBQUE7NEJBQUFBO2lCQUFBaUI7b0JBQ09qQjswREFBYywwREFBQTtnQkFGckJtK0MsUUFFT24rQzt5REFBZ0I7d0RBRHZCLGtEQUFBOzBEQURBO1VBQUFnRixlQUNBaEY7O3dEQUFBLGtEQUFBOzRCQUFBQTt3REFBQSxrREFBQTs0QkFBQUE7d0RBQUEsa0RBQUE7NEJBQUFBO2lCQUFBaUI7d0RBQUEsVUFHYUE7NERBQUEsbURBQUE7K0JBSGJqQjs7dUJBR2F1TCxLQUFBdEs7NkRBQUEsR0FBQXNLOzhEQUFBLG1EQUFBO2lDQUhidkw7NkRBR2E7Z0VBQUs7Y0FKbEI4TDtjQUFBckk7Z0VBSWtCLG1EQUFBO21DQUhsQnpEOytEQURBLGtEQUFBO2lFQUFBO2lCQUFBK0UsT0FDQS9FO2VBREF5RDtnRUFJa0IsbURBQUE7bUNBSGxCekQ7K0RBREE7O21FQUkwQiwwREFBQTs0Q0FIMUJBO2tFQUc4QjtnQkFKOUI4TDsrREFBQSx5REFBQTswQ0FDQTlMOytEQUcrQjthQUFsQmlCOzZEQUFBOzREQUFtQjs0REFBbkIsbURBQUE7d0NBQUFBOzREQUFBLDBEQUFBO3NDQUhiakI7MkRBR2dDOzt3REFIaEMsa0RBQUE7NEJBQUFBO3dEQUFBLHlEQUFBO21DQUFBQTt1REFJQzs7S0FMRDI1RDtjQUFBeGIsUUFDQWw5Qzt3REFBQSxrREFEQTs7MkRBQUE7V0FBQXk0RCxRQUFBdmI7d0RBQ0EseURBQUE7NkNBQUFsOUM7dURBSUM7WUFKRDNCLFlBQVFzNkQsVUFBUkM7c0RBQUEsU0FBQUE7dURBQUEseURBQUE7NENBQUFoL0Msa0JBQUFnL0M7c0RBQUE7S0FBQUMsa0JBQUFEO3VEQUNFRTt1REFFQUM7dURBSEYxa0I7dURBQUFDO2FBQUEwa0I7dURBQUE7dURBQUE7c0VBQUE7VUFBQUM7ZUFBQUE7aUJBQUFBOzs7OzthQUFBMWtCLDBCQUFBQztZQUFBRCxtQkFBQUE7O1VBQUEya0I7VUFBQXJrQjtxQkFBQU47c0JBQUFHO2dFQUFBO2tCQUFBSDtpRUFBQSx5REFBQTtzREFBQTM2QixrQkFBQWcvQztpQkFBQXJrQjtpRUFBQSx3REFBQTs7a0JBQUE0a0IsUUFBQTVrQjtnRUFBQSxPQUFBNGtCOytEQUlDO29CQUpEemtCOztVQUFBQSxpQkFBQUcsaUJBQUFOO2lDQUFBQztrQ0FBQUE7O1lBQUFGLG1CQUFBRSxnQkFBQUY7O2tCQUdFeWtCO1dBSEYxa0Isd0JBQUFHLGdCQUFBSDs7NkRBR0U7OERBSEZNO2VBQUFEOzt1QkFHa0Iwa0I7a0VBQUw7dUJBQUtBOzBCQUFBQTs7OztxRUFBQTttQkFBQUM7bUJBQUFDO3NFQUFBQzs7d0VBQUE7eUNBQUFEO3NFQUFBRTs7d0VBQUE7dUNBQUFIO3FFQUFBOzBCQUFBRTswQkFBQUM7Ozs7a0VBQUEsMERBQUE7cURBSGxCNS9DLHFCQUdrQncvQztpRUFBYzs4REFBOUJyMkI7Z0VBQUE7c0NBSEY0UjtXQUdFb2tCLHVCQUFBaDJCOztpQkFGQSsxQjtVQURGemtCLHdCQUFBRyxnQkFBQUg7OzREQUNFOzZEQURGTztjQUFBRjs2REFDRTdSO2FBcENGNW1DLFVBbUNRMDhELFVBQVIvakI7VUFDRWtrQixpQkFBQWoyQjs7dUJBREZxMkI7Ozs7O3dEQUFBLHlEQUFBOzZDQUFBdC9DLGtCQUFBcS9DOztzREFJQztzREFKREQ7TUFBQUg7T0FBQXhrQjt1REFBQSx5REFBQTs7Y0FBQXo2QjtjQUFBeTZCO2NBQUF1a0I7T0FBQXRrQjt1REFBQSx5REFBQTs7Y0FBQTE2QjtjQUFBMDZCO2NBQUFza0I7Y0FDRUUsb0JBRUFDOztTQUFBVSwwQkFGQUM7dURBREY7YUFDRUE7YUFFQUQ7O3NEQUhGLHlEQUFBOzthQUFBNy9DO2FBQUFnL0M7O3dCQUNFRTs0QkFFQUM7cURBQ0Q7WUFKRDc2RCxZQUFReTdEO3NEQUFSO0tBR0VDO0tBRkFDO0tBREZ2MkI7OztNQUdrQncyQjtNQUFBQztNQUFBejRDLHdDQUFBeTRDO01BQUFDLHNDQUFBRjtvQkFBQXg0QyxjQUFBMDRDOztzREFBaEI7dURBQUEzMkI7eURBQUE7K0JBQUF1MkI7dURBSEZyMkI7NEJBR0VGLGVBSEZDO3VEQUNFcHVCO09BcENGblosVUFtQ1E0OUQsVUFDTkU7dURBREZJOzRCQUNFL2tELGVBREZxdUI7c0RBQUEsV0FBQTAyQjtxREFJQztZQUpEdjdELGNBQUFnL0MsTUFBQTkvQztzREFBQTthQUFBQSxxQ0FBQUE7dURBQ0U7TUFERjhILGdCQUFBOUg7d0RBQ0VzOEQ7d0RBRUFDO3dEQUhGdDBEO3dEQUFBQztNQUFBQzs7MkRBQUE7OzJEQUFBOzs2REFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7OERBQUE7Z0VBQUE7O2FBQUFKOztlQUFBSTtpRUFBQTt5Q0FBQUo7OzsrREFHRTt1Q0FBQXEwRDtZQUhGdDBEOztjQUFBSztnRUFHRTt3Q0FIRkw7Ozs7d0JBR2tCakk7MkI7eUJBQUFBLHFDQUFBQTsyQkFBQUE7Ozs7O29CQUFBQztvQkFBQUM7b0JBQUFDLG9DQUFBRDtvQkFBQUU7MkVBQUFIOzhCQUFBRSxNQUFBQzs7Ozs7NERBSGxCc0UsYUFHa0IxRTs7YUFBaEJ1STs7Z0VBSEZGO1lBR0VrMEQseUJBQUFoMEQ7Ozs4REFGQTtzQ0FBQSt6RDtXQURGcjBEOzthQUFBSzsrREFDRTt1Q0FERkw7O2VBQ0VPLFdBcENGaEssWUFtQ0FzaEQsTUFBQXozQztXQUNFaTBELG1CQUFBOXpEOzt3QkFERko7OzBEQUlDO3VEQUpERCxLQUFBTDs7eURBQUE7aUNBQUFHO3dEQUFBLGtEQUFBOzsyREFBQTttQ0FBQUE7d0RBQUEseURBQUE7bURBQUF2RCxlQUFBMUU7Ozt5REFBQTtpQ0FBQWtJO3dEQUFBLGtEQUFBOzsyREFBQTttQ0FBQUE7d0RBQUEseURBQUE7bURBQUF4RCxlQUFBMUU7O3VEQUNFO3dEQUFBOzBEQUFBO2tDQUFBczhEO3dEQUVBOzBEQUFBO2tDQUFBQzs7VUFBQUMsOEJBRkFDO3dEQURGO2NBQ0VBO2NBRUFEOzt1REFIRjt3REFBQTs7Ozs7OERBR0U7c0NBQUFEOzs7Ozt3REFIRjs7Ozs7OERBQ0U7c0NBQUFEOzs7Ozt1REFERix5REFBQTtrREFBQTUzRCxVQUFBMUU7O3NEQUFBLHlEQUFBO2lEQUFBMEUsVUFBQTFFO3FEQUlDO1lBSkRZLGNBQUFrL0M7c0RBQUE7S0FHRTRjO0tBRkFDO0tBREY3ekQ7OztNQUdrQjdJO01BQUFDO01BQUFDLG9DQUFBRDtNQUFBRSwyREFBQUg7K0JBQUFFLFVBQUFDOzs7S0FBaEJ5STtpRUFBQTZ6RDtLQUFBMXpELGtDQUFBSCxNQUhGQztLQUNFQyxRQXBDRnhLLFlBbUNBdWhELE1BQ0U2YztLQUFBanNELDRCQUFBM0gsUUFFQUM7c0RBSEY7O1lBQ0UwSDtxREFHRDtZQUVHa3NEO3NEQUNGLHlEQUFBOztzREFBbUQ7c0RBRXpDLG1EQUFBO0lBQVIxbkMsY0ExQ0FySztZQTRDQWd5Qzt1REFBVyxJQUFFcjhEO3VEQUFZLDBEQUFBO2FBMUN6QnF2QyxVQTBDYXJ2QztzREFBb0M7WUFFakRzOEQ7dURBQVk7S0FBS2o3RDtLQUFITzt1REFBVTtZQTFDeEJrNEQsZ0JBMENjbDRELEdBQUdQO29CQUFITztxREFFakI7WUFFRzI2RDt1REFBUztLQUF1Qmw3RDtLQUFITztLQUFiNDZEO0tBQUx4OEQ7d0RBRUY7O1lBRm9CNEI7MkRBRVA7MkJBRk9BLEdBQWI0NkQ7dURBQXVCO1lBNUN2Q2pkLE9BNENXdi9DLFNBQWtCNEIsR0FBR1A7O3FEQUduQztZQUVHbzdEO3NEQUNBO0tBRXlCQztLQUFqQnphO0tBRGlCMGE7S0FBakIzYTt1REFFSCxTQUNDNGE7S0FBZUMsUUFBUUg7dURBQzdCO01BRHFCSSxXQUFBRDtNQUFRRSxlQUFBTDt1REFDN0I7V0FEcUJJOzBEQUVILE9BRldDO3lEQUlUO09BSkNKLGFBQUFHO09BR2hCbDdELElBSGdCazdEOzBEQUFRRTs7Y0FHeEJwN0Q7NkRBQzRCOzZCQUQ1QkEsR0FId0JtN0Q7T0FBUkQsV0FBQUg7T0FBUUksZUFBQUM7O3VEQU01Qjt3REFFTzt5REFBTmg5RDtPQTFERmc2RCxRQStDUWhZLE1BQ0FDO3lEQVdOdWE7T0FUSUk7NkRBU29COzJCQVpERDtTQUNBRDt1REFZM0I7WUFGSTE4RDtZQUNBdzhEO3NEQUVMO1lBRUdTLGdCQUFvQnI3RDt3REFBWCxJQUFFNUI7d0RBQWUsT0E1RDFCMi9DLE9BNERXMy9DLEtBQVM0Qjt1REFBK0I7WUFFbkRzN0Qsa0JBQXNCdDdEO3dEQUFYLElBQUU1Qjt3REFBZSxPQTVENUI0L0M7YUE0RGE1L0MsS0FBUzRCO3VEQUFpQztZQUV2RHU3RCxLQUFRNytEO3dEQUFEO0tBQVVrK0Q7S0FBTGx6Qjt5REFDVmlCOzJEQUFNO1NBN0RSdnFDLElBNERRMUIsSUFBSWdyQzt1REFFZDtZQURJaUI7WUFEZWl5QjtzREFHcEI7WUFFR1ksS0FBUTkrRDt3REFBRDtLQUFVaytEO0tBQUx4OEQ7d0RBRVo7MERBQUE7eUJBRmlCdzhEO2lCQUtYbHpCO3lEQUFEO01BQVExbkM7MERBQ0M7UUEzRWQrOUMsT0FxRVkzL0MsS0FLQzRCOzswREFLSSxPQXJEakJ3NkQ7O3lEQW1EaUI7TUFESC82RDswREFDRGk5Qjs0REFBSTtVQVJUaGdDLE9BS0tzRCxHQUVDUDt5REFFbUIsT0FyRmpDaytDO2NBaUZNalcsV0FBTzFuQyxHQUdBMDhCO3dEQUdMO3VEQVRSLG1EQUFBO0tBREVnTDswREFDRjs0REFFRztpQ0F0RkhqZjs7dURBZ0dGO1lBYklpZjtZQURla3pCO3NEQWVwQjtZQUVHYSxRQUFXLytEO3dEQUFEO0tBQVVrK0Q7S0FBTHg4RDt5REFDYnNwQzsyREFBTTtTQWpGUjZ3QixTQWdGVzc3RCxJQUFJMEI7d0RBR2Y7MERBQUE7eUJBSG9CdzhEOzt5REFLTCxJQUFFNTZEO3lEQUFVLE9BekYzQmcrQztjQXFGRXRXLE9BSWUxbkM7d0RBQXFDO3VEQUZ0RDt3REFBQTswREFBQTs0REFFRzs7O3dEQUhEMDdEOzBEQUNGOzt1REFJRjtZQU5JaDBCO1lBQ0FnMEI7c0RBTUw7WUFFR0MsUUFBV2ovRDt3REFBRDtLQUFVaytEO0tBQUx4OEQ7d0RBRWY7MERBQUE7eUJBRm9CdzhEO3lEQXFCZixVQXJCVXg4RDs7eURBS1Y7TUFBc0I0QjtNQUFkNDZEO01BQU54OEQ7MERBQ0lzOUQ7WUFERWQ7MERBRUZsekI7UUE1R1h5d0I7VUEwR08vNUQ7OytEQUtJO2dFQU1VLE9BdEZyQm84RDs7ZUFrRmtCLzZEOytEQURTLDJEQUFBO3FCQVhoQi9DLE9BS2dCc0QsR0FPVFA7c0JBTlBpOEQseUJBRGdCMTdELE9BQ2hCMDdELHFCQU1PajhEOzs4REFJOEI7VUFYckJPO3lEQWNwQjthQVpJMG5DO2FBREFnMEI7d0RBY0w7dURBbEJOO3dEQUFBOzBEQUFBOzREQUVHOzs7S0FIS0E7S0FBTGgwQjt1REF1Qkw7WUF2QktBO1lBQUtnMEI7c0RBd0JYO1lBRUdFLE1BQVNsL0QsR0FBRzRDO3dEQUFKLElBQVdsQjt1REFDckIsT0FwSEVvNkQ7NkJBb0h1QnIvQztrRUFBVDtlQUFLMVo7ZUFBSE87a0VBQWUsMkRBQUE7dUJBRHRCdEQsT0FDT3NELEdBQUdQLElBQUkwWjtpRUFBc0I7YUFEakM3WjthQUFPbEI7dURBQ3NDO1lBRXpEeTlELE1BQVNuL0QsR0FBRzRDO3dEQUFKO0tBQWdCczdEO0tBQUx4OEQ7d0RBQ3JCOzBEQUFBO3lCQUQwQnc4RDtpQkFJcEJ6aEQ7d0RBQUQ7TUFBT25aOzBEQUNFO1FBbklaKzlDLE9BOEhtQjMvQyxLQUlUNEI7OzBEQUdLLE9BM0dmdzZEOztTQTBHWS82RDt5REFBTSwyREFBQTtjQU5UL0MsT0FJQ3NELEdBRUVQLElBRlIwWjt3REFJRTt1REFQUiwwREFBQTtnRUFFRztxQ0FIVzdaOztzREFVVjtZQUVGMEs7d0RBQVM7S0FBRTR3RDt3REFBa0IsMkRBQUE7NkJBQWxCQTt1REFBd0M7WUFFbkRrQjt3REFBVyxJQUFFMTlEO3dEQUFZLE9BL0h6QjYvQyxRQStIYTcvQzt1REFBbUM7WUFFaEQyOUQ7d0RBQVc7S0FBT25CO0tBQUx4OEQ7d0RBQ2Y7MERBQUE7eUJBRG9CdzhEOzt5REFHUjtNQUFFNTZEOzBEQUNGO1FBbEpWKzlDLE9BOElhMy9DLEtBR0Q0Qjs7MERBR0MsT0ExSGJ3NkQ7O1NBeUhVLzZEO3lEQUFNLFdBRkpPLEdBRUZQO3dEQUVOO3VEQU5OLDBEQUFBO2dFQUVHOzs7c0RBS0M7WUFFRnU4RCxVQUFVOWE7d0RBQVksb0RBQ2Q7S0FBTjlpRCxNQTFJRm9qRCxRQXlJVU47O3lEQUV5QixJQUFFbGhEO3lEQUFVLFdBQVZBO3dEQUFpQjt3REFBeEM7eURBQUE7MkRBQUE7NkRBQVk7O1NBRmhCa2hEO3lEQUVSMFo7MkRBQVk7O3VEQUNoQjtZQUZJeDhEO1lBQ0F3OEQ7c0RBRUw7WUFFR3FCLGFBQWdCMXRCLE1BQU0vL0I7d0RBQU0sT0F4RTVCaXREOztrRUF5RU07ZUFBRXYvRDsyQkFBdUI4RDttRUFBSywyREFBQTt3QkFBTEEsR0FBdkI5RDtrRUFBa0M7a0VBQXZCOzswRUFBQTs4Q0FESHF5QztpRUFDaUM7YUFEM0IvL0I7c0RBRXpCOzs7O09BaExEd3VDO09BQUFDO09BQ0FsaEQ7T0FBQUU7T0FBQUU7T0FBQUM7T0FFSXFzQjtPQUVBZ2xCO09BRUF5cUI7T0FFQXZhO09BSUF5YTtPQUdBcmE7T0FFQUM7T0FFQTUvQztPQUVBbTZEO09BRUFDO09BR0E3WDtPQUVBMUM7T0FFQXVEOztRQUlKaVg7UUFBQUM7UUFDQXg2RDtRQUFBRztRQUFBRztRQUFBRTtRQVNJbzBCO1FBRUEybkM7UUFFQUM7UUFJQUM7UUFLQUU7UUFrQkFRO1FBRUFDO1FBRUFDO1FBS0FDO1FBaUJBQztRQVVBRTtRQTJCQUM7UUFHQUM7UUFZQTd4RDtRQUVBOHhEO1FBRUFDO1FBVUFDO1FBTUFDOzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDek1KbjZEO0lBQUFoRztJQVNGOE87SUFBQXRJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQVZFN0YsR0FDQXNDO3FEQUFBOytEQUFBO2tDQUFBQTsrREFBQTtrQ0FBQUE7cURBRWU7WUFIZm5DLEtBQ0FvRDtxREFBQSx3REFBQTtzQ0FEQXZELElBQ0F1RDtxREFFZTtvREFGZixTQUFBL0Q7SUFBQStGO3FEQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7d0RBQUE7O3VEQUFBOztlQUFBQTs7dURBQUEsd0RBQUE7NENBQUFGLGtCQUFBRTs7O3VEQUFBLHdEQUFBOzRDQUFBRixrQkFBQUU7Ozs7Ozs7O3VEQUFBLHdEQUFBOzRDQUFBRixrQkFBQUU7O3NEQUFBLHdEQUFBOzJDQUFBRixrQkFBQUU7O3FEQUFBLHdEQUFBOzBDQUFBRixrQkFBQUU7cURBRWU7WUFGZmpHO3FEQUFBO3FEQUVlO29EQUZmLFNBQUFLO0lBQUF3QjtxREFBQTthQUFBQSxxQ0FBQUE7ZUFBQUE7O3VEQUFBLHdEQUFBO2tEQUFBOUIsUUFBQThCOzs7Ozs7OzttRUFBQTtzREFBQTlCLFFBQUE4Qjs7OzttRUFBQTtzREFBQTlCLFFBQUE4Qjs7Ozt3REFBQSx3REFBQTttREFBQTlCLFFBQUE4Qjs7O3FEQUFBLHdEQUFBO2dEQUFBOUIsUUFBQThCO3FEQUVlO1lBRmZ6QjtxREFBQTtxREFFZTtZQUVYaXdCLEdBQU1wc0IsR0FBR3dpRDtzREFBTSx5REFBQTthQUFUeGlELEdBQUd3aUQ7cURBQVk7cURBUFA7c0RBQUE7VUFFbEIvbEQsSUFBQUcsTUFDQVgsV0FBQUYsV0FBQUssYUFBQUQsYUFJSWl3QjtJQUlOdnRCO0lBQUFnRjtZQUFBQztzREFBQTs7c0RBR21DO1lBSG5DdkI7c0RBQUE7c0RBR21DOztLQUhuQzFEO2NBQ0FFO3dEQUFBO3lEQUFBLHlEQUFBO21DQUFBQTtVQURBOEwsZUFBQXJJO3dEQUNBLGtEQUFBOzRCQUFBekQ7d0RBREEsa0RBQUE7MERBQUE7VUFBQXdELE9BQ0F4RDtRQURBeUQ7d0RBQ0Esa0RBQUE7NEJBQUF6RDt3REFEQSxrREFBQTswREFBQTtVQUFBK0UsT0FDQS9FO1FBREE4TDt3REFBQSx5REFBQTttQ0FDQTlMO3dEQUVtQzs7S0FIbkM4RTtjQUNBN0Q7d0RBQUEseURBQUE7d0NBREFuQixNQUNBbUI7d0RBRW1DO1lBRm5DM0IsWUFBQWtjO3NEQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7eURBQUE7O3dEQUFBLHlEQUFBOzRDQUFBM1Asa0JBQUEyUDs7ZUFBQUE7O3dEQUFBLHlEQUFBOzRDQUFBM1Asa0JBQUEyUDs7O3dEQUFBLHlEQUFBOzRDQUFBM1Asa0JBQUEyUDtTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOzt3REFBQSx5REFBQTs0Q0FBQTVQLGtCQUFBMlA7O1NBQUFFO3VEQUFBLEdBQUFBO2dCQUFBQTs7eURBQUE7UUFBQW81QjtRQUFBbjVCLFdBQUFEOzBEQUFBMEo7NERBQUE7MkJBQUF6SjswREFBQW81Qjs0REFBQTtrQ0FBQUQ7eURBQUE7ZUFBQTF2QjtlQUFBMnZCOzs7dURBQUEseURBQUE7O2NBQUFscEM7Y0FBQTRQO2NBQUFEOztzREFBQSx5REFBQTswQ0FBQTNQLGtCQUFBMlA7c0RBRW1DO1lBRm5DcmM7c0RBQUE7dURBQ0k7c0RBQ0E7S0FBQWcrRDtLQUFBQzt1REFBQXJoRDt5REFBQTt3QkFBQXFoRDt1REFBQUM7eURBQUE7K0JBQUFGO3NEQUFBO3lCQUFBcGhELGNBQUFzaEQ7c0RBQStCO1lBRm5DMTlELGNBQUFkO3NEQUFBO2FBQUFBO2VBQUFBOztnQ0FBQUE7eURBQUEseURBQUE7bURBQUEwRSxVQUFBMUU7OztnQkFBQUE7O3lEQUFBLHlEQUFBO21EQUFBMEUsVUFBQTFFOzs7OztZQUFBbUY7a0NBQUFBO2FBQUFDOzJEQUFBLEdBQUFBO29CQUFBQTs7NkRBQUE7WUFBQW5GO1lBQUFDLEtBQUFrRjs4REFBQWpGO2dFQUFBOytCQUFBRDs4REFBQUU7Z0VBQUE7c0NBQUFIOzZEQUFBO21CQUFBRTttQkFBQUM7OzsyREFBQSx5REFBQTtxREFBQXNFLFVBQUFTLEtBQUFuRjs7a0NBQUFtRjs7cUVBQUE7dURBQUFULFVBQUExRTs7OzswREFBQSx5REFBQTtvREFBQTBFLFVBQUExRTs7OztzREFBQSx5REFBQTtnREFBQTBFLFVBQUExRTtzREFFbUM7WUFGbkNZO3NEQUFBO3VEQUNJO3NEQUNBO0tBQUFYO0tBQUFDO3VEQUFBQzt5REFBQTt3QkFBQUQ7dURBQUFFO3lEQUFBOytCQUFBSDtzREFBQTs7eUJBQUFFLFVBQUFDO3NEQUErQjs7Ozs7T0FIbkNhO09BQUFnRjtPQUNBeEY7T0FBQUg7T0FBQVE7T0FBQUY7Ozs7YTs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7Ozs7OztZQ1ZBL0IsR0FJQXNDO3VEQUFTLDBEQUFBO2lDQUFUQTt1REFBWTtZQUpabkMsS0FJQW9EO3VEQUFBLDBEQUFBO3NDQUpBdkQsSUFJQXVEO3VEQUFZO3NEQUFaO3VEQUFBL0Q7O0lBQUFGO0lBQUFLO0lBQUFEOztVQUpBTSxJQUFBRyxNQUlBWCxXQUFBRixXQUFBSyxhQUFBRDs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDSEEyRjtJQUFBaEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBREFXO0lBQUFHO1lBQUF5L0Q7aURBQUEsT0FBQTUvRDtrREFpQlk7WUFqQlo2L0Q7aURBQUEsT0FBQTcvRDtrREFpQlk7WUFqQlo4L0Q7aURBQUEsT0FBQTkvRDtrREFpQlk7WUFqQlorL0Q7aURBQUEsT0FBQS8vRDtrREFpQlk7WUFqQlpnZ0U7aURBQUEsT0FBQWhnRTtrREFpQlk7WUFqQlppZ0U7aURBQUEsT0FBQWpnRTtrREFpQlk7WUFqQlprZ0U7aURBQUE7a0RBaUJZO1lBakJaQztpREFBQTtrREFpQlk7WUFqQlpDO2lEQUFBOztrREFpQlk7WUFqQlpDO2lEQUFBO2tEQWlCWTtZQWpCWkM7aURBQUE7O2tEQWlCWTtZQWpCWkM7aURBQUE7a0RBaUJZO1lBakJablo7aURBQUE7O2tEQWlCWTtZQWpCWmo3QjtpREFBQTs7a0RBaUJZO1lBakJaQztpREFBQTtrREFpQlk7WUFqQlpDO2lEQUFBLE9BQUFyc0I7a0RBaUJZO1lBakJac3NCO2lEQUFBOztrREFpQlk7WUFqQlp4SztpREFBQTtrREFpQlk7WUFqQlo1UztpREFBQTs7a0RBaUJZO1lBakJaN0g7aURBQUE7O2tEQWlCWTtZQWpCWnZCO2lEQUFBO2tEQWlCWTs7S0FqQlo5RjtjQUNBc0M7bURBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7O2FBREE4TCxlQUFBckk7c0RBQ0EsNkNBQUE7K0JBQUF6RDtzREFEQSw2Q0FBQTt3REFBQSxXQUFBd0QsT0FDQXhEO1dBREF5RDtzREFDQSw2Q0FBQTsrQkFBQXpEO3NEQURBLDZDQUFBO3dEQUFBLFdBQUErRSxPQUNBL0U7V0FEQThMO3NEQUFBLG9EQUFBO3NDQUNBOUw7O2FBREFrK0QsZUFBQWgwQyxlQUFBRCxpQkFBQTVPO3NEQUNBLDZDQUFBOytCQUFBcmI7c0RBREEsNkNBQUE7d0RBQUEsV0FBQTRNLE9BQ0E1TTtXQURBcWI7c0RBQ0EsNkNBQUE7K0JBQUFyYjtzREFEQSw2Q0FBQTt3REFBQSxXQUFBd2YsT0FDQXhmO1dBREFpcUI7c0RBQ0EsNkNBQUE7K0JBQUFqcUI7c0RBREEsNkNBQUE7d0RBQUEsV0FBQWdxQixPQUNBaHFCO1dBREFrcUI7c0RBQ0EsNkNBQUE7K0JBQUFscUI7c0RBREEsNkNBQUE7d0RBQUEsV0FBQStwQixPQUNBL3BCO1dBREFrK0Q7c0RBQUEsb0RBQUE7c0NBQ0FsK0Q7O2FBREFtK0QsaUJBQUFoMEMsaUJBQUE1SztzREFDQSw2Q0FBQTsrQkFBQXZmO3NEQURBLDZDQUFBO3dEQUFBLFdBQUE4cEIsT0FDQTlwQjtXQURBdWY7c0RBQ0EsNkNBQUE7K0JBQUF2ZjtzREFEQSw2Q0FBQTt3REFBQSxXQUFBNnBCLE9BQ0E3cEI7V0FEQW1xQjtzREFDQSw2Q0FBQTsrQkFBQW5xQjtzREFEQSw2Q0FBQTt3REFBQSxXQUFBOGtELE9BQ0E5a0Q7V0FEQW0rRDtzREFBQSxvREFBQTtzQ0FDQW4rRDs7YUFEQW8rRCxpQkFBQUMsaUJBQUFqMEM7c0RBQ0EsNkNBQUE7K0JBQUFwcUI7c0RBREEsNkNBQUE7d0RBQUEsV0FBQWkrRCxPQUNBaitEO1dBREFvcUI7c0RBQ0EsNkNBQUE7K0JBQUFwcUI7c0RBREEsNkNBQUE7d0RBQUE7YUFBQWcrRCxRQUNBaCtEO1dBREFxK0Q7c0RBQ0EsNkNBQUE7K0JBQUFyK0Q7c0RBREEsNkNBQUE7eURBTTBDO2lDQUwxQ0E7V0FEQW8rRDtzREFBQSxvREFBQTtzQ0FDQXArRDs7YUFEQXMrRCxpQkFBQUMsaUJBQUF4WjtzREFDQSw2Q0FBQTsrQkFBQS9rRDtzREFEQSw2Q0FBQTt3REFBQTthQUFBKzlELFFBQ0EvOUQ7V0FEQStrRDtzREFDQSw2Q0FBQTsrQkFBQS9rRDtzREFEQSw2Q0FBQTt3REFBQTthQUFBODlELFFBQ0E5OUQ7V0FEQXUrRDtzREFDQSw2Q0FBQTsrQkFBQXYrRDtzREFEQSw2Q0FBQTswREFPNkM7aUNBTjdDQTtXQURBcytEO3NEQUFBLG9EQUFBO3NDQUNBdCtEOzthQURBZ2xEO3NEQUNBLDZDQUFBOytCQUFBaGxEO3NEQURBLDZDQUFBO3dEQUFBO2FBQUE2OUQsUUFDQTc5RDtXQURBZ2xEO3NEQUFBLG9EQUFBO3NDQUNBaGxEOzthQURBaWxEO3NEQUNBLDZDQUFBOytCQUFBamxEO3NEQURBLDZDQUFBOzBEQVNXO2lDQVJYQTtXQURBaWxEO3NEQUFBLG9EQUFBO3NDQUNBamxEOzthQURBdytEO3NEQUNBLDZDQUFBOytCQUFBeCtEO3NEQURBLDZDQUFBOzBEQVVhO2lDQVRiQTtXQURBdytEO3NEQUFBLG9EQUFBO3NDQUNBeCtEOzthQURBeStEO3NEQUNBLDZDQUFBOytCQUFBeitEO3NEQURBLDZDQUFBOzBEQVdZO2lDQVZaQTtXQURBeStEO3NEQUFBLG9EQUFBO3NDQUNBeitEOzthQURBMCtEO3NEQUNBLDZDQUFBOytCQUFBMStEO3NEQURBLDZDQUFBOzBEQVljO2lDQVhkQTtXQURBMCtEO3NEQUFBLG9EQUFBO3NDQUNBMStEOzthQURBMitELGlCQUFBQztzREFDQSw2Q0FBQTsrQkFBQTUrRDtzREFEQSw2Q0FBQTt3REFBQTthQUFBNDlELFFBQ0E1OUQ7V0FEQTQrRDtzREFDQSw2Q0FBQTsrQkFBQTUrRDtzREFEQSxVQWFtQmlCOzJEQUFBLCtDQUFBO2tDQVpuQmpCOzswQkFZbUJ1TCxLQUFBdEs7NERBQUEsR0FBQXNLOzZEQUFBLCtDQUFBO29DQVpuQnZMOzREQVltQiwrQ0FBQTs0REFibkI7aUJBQUEyOUQsUUFDQTM5RDtlQVltQmlCOzREQUFBOzJEQUFPOzJEQUFQLCtDQUFBOzJDQUFBQTsyREFBQSxzREFBQTt5Q0FabkJqQjswREFZMEI7WUFiMUIyK0Q7c0RBQUEsb0RBQUE7c0NBQ0EzK0Q7O2FBREE2K0QsaUJBQUFDO3NEQUNBLDZDQUFBOytCQUFBOStEO3NEQURBLDZDQUFBO3dEQUFBO2FBQUEwOUQsUUFDQTE5RDtXQURBOCtEO3NEQUNBLDZDQUFBOytCQUFBOStEO3NEQURBLDZDQUFBO3dEQUFBO2FBQUF5OUQsUUFDQXo5RDtXQURBNitEO3NEQUFBLG9EQUFBO3NDQUNBNytEOzthQURBKytEO3NEQUNBLDZDQUFBOytCQUFBLytEO3NEQURBLFVBZVVpQjsyREFBQSwrQ0FBQTtrQ0FkVmpCOzswQkFjVXVMLEtBQUF0Szs0REFBQSxHQUFBc0s7NkRBQUEsK0NBQUE7b0NBZFZ2TDs0REFjVSwrQ0FBQTs0REFmVjtpQkFBQXc5RCxRQUNBeDlEO2VBY1VpQjs0REFBQTsyREFBTzsyREFBUCwrQ0FBQTsyQ0FBQUE7MkRBQUEsc0RBQUE7eUNBZFZqQjswREFjaUI7WUFmakIrK0Q7c0RBQUEsb0RBQUE7c0NBQ0EvK0Q7O2FBREFnL0Q7c0RBQ0EsNkNBQUE7K0JBQUFoL0Q7c0RBREEsNkNBQUE7MERBZ0JnQjtpQ0FmaEJBO1dBREFnL0Q7c0RBQUEsb0RBQUE7c0NBQ0FoL0Q7O2FBREFpL0QsaUJBQUFDO3NEQUNBLDZDQUFBOytCQUFBbC9EO3NEQURBLDZDQUFBO3dEQUFBO2FBQUF1OUQsUUFDQXY5RDtXQURBay9EO3NEQUNBLDZDQUFBOytCQUFBbC9EO3NEQURBLDZDQUFBO3dEQUFBO2FBQUFzOUQsUUFDQXQ5RDtXQURBaS9EO3NEQUFBLG9EQUFBO3NDQUNBai9EOztvREFnQlk7O0tBakJabkM7Y0FDQW9EO21EQUFBLG9EQUFBO3lDQURBdkQsSUFDQXVEO29EQWdCWTtPQWhCWi9EOztLQUFBQTtjQUFBd0c7bURBQUE7O2dCQUFBQTttQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29FQUFBLG9EQUFBOzZEQUFBWCxrQkFBQVc7O21FQUFBLG9EQUFBOzREQUFBWCxrQkFBQVc7O2tFQUFBLG9EQUFBOzJEQUFBWCxrQkFBQVc7O2lFQUFBLG9EQUFBOzBEQUFBWCxrQkFBQVc7O2dFQUFBLG9EQUFBO3lEQUFBWCxrQkFBQVc7OytEQUFBLG9EQUFBO3dEQUFBWCxrQkFBQVc7OzhEQUFBLG9EQUFBO3VEQUFBWCxrQkFBQVc7OzZEQUFBOzs0REFBQSxvREFBQTtxREFBQVgsa0JBQUFXOzsyREFBQSxvREFBQTtvREFBQVgsa0JBQUFXOzswREFBQSxvREFBQTttREFBQVgsa0JBQUFXOzt5REFBQSxvREFBQTtrREFBQVgsa0JBQUFXOzt3REFBQSxvREFBQTtpREFBQVgsa0JBQUFXOzt1REFBQSxvREFBQTtnREFBQVgsa0JBQUFXOztzREFBQSxvREFBQTsrQ0FBQVgsa0JBQUFXOztxREFBQSxvREFBQTs4Q0FBQVgsa0JBQUFXOztrQkFBQUE7O3FEQUFBLG9EQUFBOzhDQUFBWCxrQkFBQVc7OztxREFBQSxvREFBQTs4Q0FBQVgsa0JBQUFXO1dBQUFDLDhDQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NEQUFBQTs7a0RBQUFBOztrREFBQUE7a0RBQUFBO2tEQUFBQTs7a0RBQUFBO2tEQUFBQTs7Z0RBQUFBOzs7O2tEQUFBQTs7a0RBQUFBO2tEQUFBQTs7a0RBQUFBO2tEQUFBQTtrREFBQUE7Z0RBQUFBOzs7OztzREFBQUE7O2tEQUFBQTtrREFBQUE7O2tEQUFBQTtrREFBQUE7a0RBQUFBOztrREFBQUE7a0RBQUFBOztnREFBQUE7Ozs7a0RBQUFBOztrREFBQUE7a0RBQUFBOztrREFBQUE7a0RBQUFBO2tEQUFBQTtnREFBQUE7Ozs7MEJBQUF3N0Q7eUJBQUFBLG1CQUFBQTtvRUFBQTt3QkFBQUMsV0FBQUQ7cUVBQUFFO3VFQUFBOzZDQUFBRDtvRUFBQTsrQkFBQUM7O21FQUFBLG9EQUFBOzsrQkFBQXQ4RDsrQkFBQVk7K0JBQUFEOzt5QkFBQTQ3RDtrRUFBQTt1QkFBQUE7aUNBQUFBOzs7O3FFQUFBO3lCQUFBQzt5QkFBQUM7eUJBQUFyMEMsV0FBQW0wQztzRUFBQUc7d0VBQUE7bURBQUF0MEM7c0VBQUF1MEM7d0VBQUE7dURBQUFGO3NFQUFBRzt3RUFBQTs4Q0FBQUo7cUVBQUE7Z0NBQUFFO2dDQUFBQztnQ0FBQUM7Ozs7a0VBQUEsb0RBQUE7OzhCQUFBNThEOzhCQUFBWTs4QkFBQUQ7O3dCQUFBazhEO2lFQUFBO3NCQUFBQTtnQ0FBQUE7O21FQUFBO3VCQUFBQzt1QkFBQUMsV0FBQUY7b0VBQUFHO3NFQUFBOzhDQUFBRDtvRUFBQUU7c0VBQUE7NENBQUE5aUUsV0FBQTJpRTttRUFBQTs4QkFBQUU7OEJBQUFDOzs7aUVBQUEsb0RBQUE7OzZCQUFBajlEOzZCQUFBWTs2QkFBQUQ7O3VCQUFBd2M7Z0VBQUE7cUJBQUFBOytCQUFBQTs7Ozs7O29FQUFBO3dCQUFBKy9DO3dCQUFBQzt3QkFBQWpzRDt3QkFBQUMsV0FBQWdNO3FFQUFBaWdEO3VFQUFBO3VEQUFBanNEO3FFQUFBa3NEO3VFQUFBO2tEQUFBbnNEO3FFQUFBb3NEO3VFQUFBO3NEQUFBSDtxRUFBQUk7dUVBQUE7NEJBQUFwakUsV0FBQStpRTtvRUFBQTsrQkFBQUU7K0JBQUFDOytCQUFBQzsrQkFBQUM7Ozs7O2dFQUFBLG9EQUFBOzs0QkFBQXY5RDs0QkFBQVk7NEJBQUFEOztzQkFBQTY4RDtxQkFBQUEsbUJBQUFBO2dFQUFBO29CQUFBQyxXQUFBRDtpRUFBQUU7bUVBQUE7eUNBQUFEO2dFQUFBOzJCQUFBQzs7K0RBQUEsb0RBQUE7OzJCQUFBMTlEOzJCQUFBWTsyQkFBQUQ7O3FCQUFBZzlEO29CQUFBQSxtQkFBQUE7K0RBQUE7bUJBQUFDLFdBQUFEO2dFQUFBRTtrRUFBQTt3Q0FBQTFqRSxXQUFBeWpFOytEQUFBOzBCQUFBQzs7OERBQUEsb0RBQUE7OzBCQUFBNzlEOzBCQUFBWTswQkFBQUQ7O29CQUFBbTlEO21CQUFBQSxtQkFBQUE7OERBQUE7a0JBQUFDLFdBQUFEOytEQUFBRTtpRUFBQTt3Q0FBQUQ7OERBQUE7eUJBQUFDOzs2REFBQSxvREFBQTs7eUJBQUFoK0Q7eUJBQUFZO3lCQUFBRDs7NERBQUEsb0RBQUE7cURBQUFYLGtCQUFBVzs7a0JBQUFzOUQ7MkRBQUEsR0FBQUE7MEJBQUFBOzs2REFBQTtpQkFBQUM7aUJBQUFDLFdBQUFGOzhEQUFBRztnRUFBQTtxQkFBQWprRSxXQUFBZ2tFOzhEQUFBRTtnRUFBQTtxQkFBQWxrRSxXQUFBK2pFOzZEQUFBO3dCQUFBRTt3QkFBQUM7OzsyREFBQSxvREFBQTs7dUJBQUFyK0Q7dUJBQUFZO3VCQUFBRDs7aUJBQUEyOUQ7MERBQUEsR0FBQUE7eUJBQUFBOzs7OzZEQUFBO2lCQUFBQztpQkFBQUM7aUJBQUFDLFdBQUFIOzhEQUFBaGM7Z0VBQUE7MkNBQUFtYzs4REFBQUM7Z0VBQUE7K0NBQUFGOzhEQUFBRztnRUFBQTtzQ0FBQUo7NkRBQUE7d0JBQUFqYzt3QkFBQW9jO3dCQUFBQzs7OzswREFBQSxvREFBQTs7c0JBQUEzK0Q7c0JBQUFZO3NCQUFBRDs7Z0JBQUFpK0Q7ZUFBQUEsbUJBQUFBOzBEQUFBO2NBQUFDLFdBQUFEOzJEQUFBRTs2REFBQTtrQ0FBQUQ7MERBQUEsV0FBQUM7O3lEQUFBLG9EQUFBOztxQkFBQTkrRDtxQkFBQVk7cUJBQUFEOztlQUFBbytEO3dEQUFBLEdBQUFBO3VCQUFBQTs7MERBQUE7Y0FBQUM7Y0FBQUMsV0FBQUY7MkRBQUFHOzZEQUFBO2tCQUFBL2tFLFdBQUE4a0U7MkRBQUFFOzZEQUFBO2tCQUFBaGxFLFdBQUE2a0U7MERBQUE7cUJBQUFFO3FCQUFBQzs7O3dEQUFBLG9EQUFBOztvQkFBQW4vRDtvQkFBQVk7b0JBQUFEOztjQUFBeStEO2FBQUFBLG1CQUFBQTt3REFBQTtZQUFBQyxXQUFBRDt5REFBQUU7MkRBQUE7aUNBQUFEO3dEQUFBLFlBQUFDOzt1REFBQSxvREFBQTs7bUJBQUF0L0Q7bUJBQUFZO21CQUFBRDs7YUFBQUU7c0RBQUEsR0FBQUE7cUJBQUFBOzt3REFBQTtZQUFBdUk7WUFBQXRJLFdBQUFEO3lEQUFBd0k7MkRBQUE7c0NBQUF2STt5REFBQXdJOzJEQUFBOzBDQUFBRjt3REFBQTttQkFBQUM7bUJBQUFDOzs7c0RBQUEsb0RBQUE7O2tCQUFBdEo7a0JBQUFZO2tCQUFBRDs7WUFBQTQrRDtxREFBQSxHQUFBQTtvQkFBQUE7Ozs7d0RBQUE7WUFBQUM7WUFBQUM7WUFBQUMsV0FBQUg7eURBQUFqb0M7MkRBQUE7c0NBQUFvb0M7eURBQUFub0M7MkRBQUE7MENBQUFrb0M7eURBQUFFOzJEQUFBOytDQUFBSDt3REFBQTttQkFBQWxvQzttQkFBQUM7bUJBQUFvb0M7Ozs7cURBQUEsb0RBQUE7O2lCQUFBMy9EO2lCQUFBWTtpQkFBQUQ7O1dBQUFpL0Q7VUFBQUEsbUJBQUFBO3FEQUFBO1NBQUFoYyxXQUFBZ2M7c0RBQUFDO3dEQUFBOzhCQUFBamM7cURBQUEsV0FBQWljOztvREFBQSxvREFBQTs7Z0JBQUE3L0Q7Z0JBQUFZO2dCQUFBRDs7bURBQUEsb0RBQUE7NENBQUFYLGtCQUFBVztvREFnQlk7WUFoQloxRztpREFBQTtrREFHSTs7O29EQUZBO1FBQUE2bEU7UUFBQUM7cURBQUFDO3VEQUFBO2tDQUFBRDtxREFBQUU7dURBQUE7c0NBQUFIO29EQUFBOzZCQUFBRSxjQUFBQzs7b0RBQ0E7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7cURBQUFDO3VEQUFBO3VDQUFBRDtxREFBQUU7dURBQUE7a0NBQUFIO3FEQUFBSTt1REFBQTtzQ0FBQUw7cURBQUFNO1VBRkp4bUUsVUFFSWltRTtvREFBQTs7O29CQUFBSSxjQUFBQyxjQUFBQyxjQUFBQzs7b0RBRUE7UUFBQUM7UUFBQUM7UUFBQUM7cURBQUFDO3VEQUFBO2tDQUFBRDtxREFBQUU7dURBQUE7c0NBQUFIO3FEQUFBSTt1REFBQTsyQ0FBQUw7b0RBQUE7NkJBQUFHLGNBQUFDLGNBQUFDOztvREFDQTtRQUFBQztRQUFBQztRQUFBQztxREFBQUM7dURBQUE7a0NBQUFEO3FEQUFBRTt1REFBQTtzQ0FBQUg7cURBQUFJO3VEQUFBOzRCQUFBTDtvREFBQTs2QkFBQUcsY0FBQUMsY0FBQUM7O3FEQUNBO1FBQUFDO1FBQUFDO1FBQUFDO3NEQUFBQzt3REFBQTtrQ0FBQUQ7c0RBQUFFO3dEQUFBO3NDQUFBSDtzREFBQUk7d0RBQUE7NEJBQUFMO3FEQUFBOzZCQUFBRyxjQUFBQyxjQUFBQzs7cURBQ0E7UUFBQUM7c0RBQUFDO3dEQUFBOzhCQUFBRDtxREFBQTs2QkFBQUM7O3FEQUNBO1FBQUFDO3NEQUFBQzt3REFBQTs2QkFBQUQ7cURBQUE7NkJBQUFDOztxREFDQTtRQUFBQztzREFBQUM7d0RBQUE7NkJBQUFEO3FEQUFBOzZCQUFBQzs7cURBQ0E7UUFBQUM7c0RBQUFDO3dEQUFBOzRCQUFBRDtxREFBQTs2QkFBQUM7O3FEQUNBO1FBQUFDO3NEQUFBQzt3REFBQTs0QkFBQUQ7cURBQUE7NkJBQUFDOztxREFDQTtRQUFBQztRQUFBQztzREFBQUM7d0RBQUE7K0JBQUFEO3NEQUFBRTt3REFBQTs2QkFaSnhvRSxXQVlJcW9FO3FEQUFBOzZCQUFBRSxjQUFBQzs7cURBQ0E7UUFBQUM7UUFBQUM7c0RBQUFDO1VBYkozb0UsVUFhSTBvRTtzREFBQUU7VUFiSjVvRSxVQWFJeW9FO3FEQUFBOzZCQUFBRSxjQUFBQzs7cURBQ0E7UUFBQUM7c0RBQUFDO3dEQUFBOzZCQWRKOW9FLFdBY0k2b0U7cURBQUE7NkJBQUFDOztxREFDQTtRQUFBQztzREFBQUM7d0RBQUE7NEJBQUFEO3FEQUFBOzZCQUFBQzs7cURBQ0E7UUFBQUM7UUFBQUM7c0RBQUFDO1VBaEJKbnBFLFVBZ0JJa3BFO3NEQUFBRTtVQWhCSnBwRSxVQWdCSWlwRTtxREFBQTs2QkFBQUUsY0FBQUM7O2tEQUFRO09BaEJaL29FOztLQUFBQTtjQUFBd0I7bURBQUE7ZUFBQUE7a0JBQUFBOzs7Z0JBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dURBQUEsb0RBQUE7c0RBQUE5QixRQUFBOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzREFBQSxvREFBQTtxREFBQTlCLFFBQUE4Qjs7O21CQUFBQTs7c0RBQUEsb0RBQUE7cURBQUE5QixRQUFBOEI7Ozs7O2NBQUFtRiw4Q0FBQUE7OztnQkFBQXdqRDtlQUFBQSxtQkFBQUE7MERBQUE7Y0FBQUMsUUFBQUQ7MkRBQUFFOzZEQUFBOzREQUFBRDswREFBQSxXQUFBQzs7eURBQUEsb0RBQUE7d0RBQUEzcUQsUUFBQWlILEtBQUFuRjs7cUNBQUFtRjtnQkFBQTJqRDt5REFBQSxHQUFBQTt3QkFBQUE7Ozs7NERBQUE7Z0JBQUEwZTtnQkFBQTc1QztnQkFBQW83QixPQUFBRDs2REFBQUU7K0RBQUE7MENBQUFEOzZEQUFBajdCOytEQUFBOzhDQUFBSDs2REFBQTg1QzsrREFBQTs4REFBQUQ7NERBQUE7dUJBQUF4ZTt1QkFBQWw3Qjt1QkFBQTI1Qzs7Ozt5REFBQSxvREFBQTt3REFBQXZwRSxRQUFBaUgsS0FBQW5GOztxQ0FBQW1GO2dCQUFBcWpEO3lEQUFBLEdBQUFBO3dCQUFBQTs7MkRBQUE7ZUFBQWhoQztlQUFBaWhDLE9BQUFEOzREQUFBRTs4REFBQTtzQ0FBQUQ7ZUFBQWhoQzs7O21CQUFBanBCO21CQUFBZ3BCOzJEQUFBO3NCQUFBa2hDO3NCQUFBamhDOzs7eURBQUEsb0RBQUE7d0RBQUF2cEIsUUFBQWlILEtBQUFuRjs7cUNBQUFtRjtnQkFBQXNvQjt5REFBQSxHQUFBQTt3QkFBQUE7Ozs7Ozs2REFBQTtpQkFBQWk2QztpQkFBQWg2QztpQkFBQXp0QjtpQkFBQTJ0QixPQUFBSDs4REFBQUk7Z0VBQUE7Z0RBQUFEOzhEQUFBeHRCO2dFQUFBOzJDQUFBSDs4REFBQTh0QjtnRUFBQTsrQ0FBQUw7OERBQUFpNkM7Z0VBQUE7cUJBQUFucEUsYUFBQWtwRTs2REFBQTt3QkFBQTc1Qzt3QkFBQXp0Qjt3QkFBQTJ0Qjt3QkFBQTQ1Qzs7Ozs7eURBQUEsb0RBQUE7d0RBQUF6cEUsUUFBQWlILEtBQUFuRjs7cUNBQUFtRjtnQkFBQStmO2VBQUFBLG1CQUFBQTswREFBQTtjQUFBQyxPQUFBRDsyREFBQUU7NkRBQUE7NERBQUFEOzBEQUFBLFdBQUFDOzt5REFBQSxvREFBQTt3REFBQWxuQixRQUFBaUgsS0FBQW5GOztxQ0FBQW1GO2dCQUFBc1k7ZUFBQUEsbUJBQUFBOztjQUFBQyxPQUFBRDtjQUFBRTs7NERBQUFuZixhQUFBa2Y7MERBQUEsWUFBQUM7O3lEQUFBLG9EQUFBO3dEQUFBemYsUUFBQWlILEtBQUFuRjs7cUNBQUFtRjtnQkFBQUM7ZUFBQUEsaUJBQUFBOzBEQUFBO2NBQUFsRixLQUFBa0Y7MkRBQUFqRjs2REFBQTtvQ0FBQUQ7MERBQUEsV0FBQUM7O3lEQUFBLG9EQUFBO3dEQUFBakMsUUFBQWlILEtBQUFuRjs7cUNBQUFtRjs7bUVBQUE7MERBQUFqSCxRQUFBOEI7Ozs7cUNBQUFtRjtnQkFBQXlpRTt5REFBQSxHQUFBQTt3QkFBQUE7OzJEQUFBO2VBQUFDO2VBQUFDLFFBQUFGOzREQUFBRzs4REFBQTttQkFBQXZwRSxhQUFBc3BFOzREQUFBRTs4REFBQTttQkFBQXhwRSxhQUFBcXBFOzJEQUFBO3NCQUFBRTtzQkFBQUM7Ozt5REFBQSxvREFBQTt3REFBQTlwRSxRQUFBaUgsS0FBQW5GOztxQ0FBQW1GO2dCQUFBOGlFO3lEQUFBLEdBQUFBO3dCQUFBQTs7Ozs0REFBQTtnQkFBQUM7Z0JBQUFDO2dCQUFBQyxRQUFBSDs2REFBQUk7K0RBQUE7MENBQUFEOzZEQUFBRTsrREFBQTs4Q0FBQUg7NkRBQUFJOytEQUFBOzhEQUFBTDs0REFBQTt1QkFBQUc7dUJBQUFDO3VCQUFBQzs7Ozt5REFBQSxvREFBQTt3REFBQXJxRSxRQUFBaUgsS0FBQW5GOztxQ0FBQW1GO2dCQUFBcWpFO2VBQUFBLG9CQUFBQTswREFBQTtjQUFBQyxRQUFBRDsyREFBQUU7NkRBQUE7NERBQUFEOzBEQUFBLFdBQUFDOzt5REFBQSxvREFBQTt3REFBQXhxRSxRQUFBaUgsS0FBQW5GOztxQ0FBQW1GO2dCQUFBd2pFO3lEQUFBLEdBQUFBO3dCQUFBQTs7MkRBQUE7ZUFBQUM7ZUFBQUMsUUFBQUY7NERBQUFHOzhEQUFBO21CQUFBdHFFLGFBQUFxcUU7NERBQUFFOzhEQUFBO21CQUFBdnFFLGFBQUFvcUU7MkRBQUE7c0JBQUFFO3NCQUFBQzs7O3lEQUFBLG9EQUFBO3dEQUFBN3FFLFFBQUFpSCxLQUFBbkY7O3FDQUFBbUY7Z0JBQUE2akU7ZUFBQUEsbUJBQUFBOzBEQUFBO2NBQUFDLFFBQUFEOzJEQUFBRTs2REFBQTs0REFBQUQ7MERBQUEsWUFBQUM7O3lEQUFBLG9EQUFBO3dEQUFBaHJFLFFBQUFpSCxLQUFBbkY7O3FDQUFBbUY7Z0JBQUFna0U7eURBQUEsR0FBQUE7d0JBQUFBOzsyREFBQTtlQUFBQztlQUFBQyxRQUFBRjs0REFBQUc7OERBQUE7eUNBQUFEOzREQUFBRTs4REFBQTs2Q0FBQUg7MkRBQUE7c0JBQUFFO3NCQUFBQzs7O3lEQUFBLG9EQUFBO3dEQUFBcnJFLFFBQUFpSCxLQUFBbkY7O3FDQUFBbUY7Z0JBQUFxa0U7eURBQUEsR0FBQUE7d0JBQUFBOzs7OzREQUFBO2dCQUFBQztnQkFBQUM7Z0JBQUFDLFFBQUFIOzZEQUFBSTsrREFBQTswQ0FBQUQ7NkRBQUFFOytEQUFBOzhDQUFBSDs2REFBQUk7K0RBQUE7bURBQUFMOzREQUFBO3VCQUFBRzt1QkFBQUM7dUJBQUFDOzs7O3lEQUFBLG9EQUFBO3dEQUFBNXJFLFFBQUFpSCxLQUFBbkY7O3FDQUFBbUY7Z0JBQUE0a0U7ZUFBQUEsbUJBQUFBOzBEQUFBO2NBQUFDLFFBQUFEOzJEQUFBRTs2REFBQTs0REFBQUQ7MERBQUEsV0FBQUM7O3lEQUFBLG9EQUFBO3dEQUFBL3JFLFFBQUFpSCxLQUFBbkY7Ozs7O3VEQUFBLG9EQUFBO3NEQUFBOUIsUUFBQThCOzs7O21EQUFBLG9EQUFBO2tEQUFBOUIsUUFBQThCO29EQWdCWTtZQWhCWnpCO2lEQUFBO2tEQUdJOzs7b0RBRkE7UUFBQTBCO1FBQUFDO3FEQUFBQzt1REFBQTtrQ0FBQUQ7cURBQUFFO3VEQUFBO3NDQUFBSDtvREFBQTs7NkJBQUFFLFVBQUFDOztvREFDQTtRQUFBc25FO1FBQUFoNkM7UUFBQWxHO1FBQUE5SjtxREFBQUM7dURBQUE7dUNBQUFEO3FEQUFBK0o7dURBQUE7a0NBQUFEO3FEQUFBdUc7dURBQUE7c0NBQUFMO3FEQUFBaTZDLE9BRkpwcEUsWUFFSW1wRTtvREFBQTs7NkJBQUEvcEQsVUFBQThKLFVBQUFzRyxVQUFBNDVDOztvREFFQTtRQUFBSDtRQUFBNzVDO1FBQUF4STtxREFBQUM7dURBQUE7a0NBQUFEO3FEQUFBMkk7dURBQUE7c0NBQUFIO3FEQUFBODVDO3VEQUFBOzJDQUFBRDtvREFBQTs7NkJBQUFwaUQsVUFBQTBJLFVBQUEyNUM7O29EQUNBO1FBQUFnQztRQUFBQztRQUFBOTdDO3FEQUFBQzt1REFBQTtrQ0FBQUQ7cURBQUFpOEM7dURBQUE7c0NBQUFIO3FEQUFBSTt1REFBQTtxREFBQUw7b0RBQUE7OzZCQUFBNTdDLFVBQUFnOEMsVUFBQUM7O3FEQUNBO1FBQUE1QjtRQUFBa0I7UUFBQTNnQjtzREFBQUM7d0RBQUE7a0NBQUFEO3NEQUFBOGdCO3dEQUFBO3NDQUFBSDtzREFBQWI7d0RBQUE7cURBQUFMO3FEQUFBOzs2QkFBQXhmLFVBQUE2Z0IsVUFBQWhCOztxREFDQTtRQUFBeGY7c0RBQUFDO3dEQUFBOzhCQUFBRDtxREFBQTs7NkJBQUFDOztxREFDQTtRQUFBSjtzREFBQUM7d0RBQUE7cURBQUFEO3FEQUFBOzs2QkFBQUM7O3FEQUNBO1FBQUFtaEI7c0RBQUFDO3dEQUFBO3FEQUFBRDtxREFBQTs7NkJBQUFDOztxREFDQTtRQUFBTjtzREFBQUM7d0RBQUE7cURBQUFEO3FEQUFBOzs2QkFBQUM7O3FEQUNBO1FBQUFQO3NEQUFBQzt3REFBQTtxREFBQUQ7cURBQUE7OzZCQUFBQzs7cURBQ0E7UUFBQVY7UUFBQUs7c0RBQUFDO3dEQUFBOytCQUFBRDtRQUFBRjs7c0RBWkp4cUUsYUFZSXFxRTtxREFBQTs7NkJBQUFNLFdBQUFIOztxREFDQTtRQUFBWjtRQUFBVTtzREFBQUM7VUFiSnZxRSxZQWFJc3FFO3NEQUFBUDtVQWJKL3BFLFlBYUk0cEU7cURBQUE7OzZCQUFBVyxXQUFBUjs7O1FBQ0FHO1FBQUFDOztzREFkSm5xRSxhQWNJa3FFO3FEQUFBOzs2QkFBQUM7O3FEQUNBO1FBQUFOO3NEQUFBQzt3REFBQTtxREFBQUQ7cURBQUE7OzZCQUFBQzs7cURBQ0E7UUFBQVI7UUFBQUM7c0RBQUFDO1VBaEJKeHBFLFlBZ0JJdXBFO3NEQUFBRTtVQWhCSnpwRSxZQWdCSXNwRTtxREFBQTs7NkJBQUFFLFdBQUFDOztrREFBUTtZQUVSa0MsU0FJRkM7a0RBSEEsR0FHQUEsT0FBQUE7b0RBQVMsWUFBVEE7bURBRFMsc0RBQUE7O2tEQUNVO1lBS2JDLFVBQWFob0UsR0FBVWlvRTtrREFDN0IsSUFENkJDLE9BQUFEO2tEQUM3QjtlQUQ2QkM7YUFBQUE7O2FBYXZCMWxCLElBYnVCMGxCO3dEQWFqQixzREFBQTtvQ0FiT2xvRSxHQWFid2lEOzt3REFJb0I7VUFEYjJsQixTQWhCZ0JEO3lEQWlCSDtzQyxPQWpCcEJGLFVBQWFob0U7eURBaUJib29FOzJEQUFXO3FDQURKRDt3REFFWDs7dURBQUEscURBQUE7K0NBRElDOzt3REFGYztVQWZTQyxNQUFBSDtVQWV0QkksTUFmc0JKO3lEQWVUO1lBZmRGLFVBQWFob0UsR0FlWnNvRTt3REFBYTt5REFBQTthQWZTSixPQUFBRzs7O3dEQWNNO1VBQTNCTixNQWRxQkc7eURBY007c0MsT0FkN0JGLFVBQWFob0U7d0RBY0gsc0RBQUE7aUVBQU87O2tCQUFmK25FOzt3REFLTTs7b0RBUGlCOztpREFROUI7WUFFS1EsV0FBY047a0RBQ3BCLElBRG9CQyxPQUFBRDtrREFDcEI7ZUFEb0JDO2FBQUFBOzthQWFkMWxCLElBYmMwbEI7d0RBYVIsV0FBTjFsQjs7d0RBRzRCO1VBQXJCdWxCLE1BaEJPRzt5REFnQmM7MkRBQUE7K0JBaEI1QkssWUFnQk9SO3dEQUFxQixzREFBQTs7O3dEQURJO1VBQTFCTSxNQWZRSDtVQWViSSxNQWZhSjt5REFla0I7WUFmaENLLFdBZU1GO3lEQUFRO1lBZmRFLFdBZUNEO3dEQUErQixzREFBQTs7O3dEQURUO1VBQXJCRSxRQWRZTjt5REFjUzsyREFBQTsrQkFkdkJLLFlBY0VDO3dEQUFxQixzREFBQTs7O2FBZFRDLFFBQUFQLFNBQUFBLE9BQUFPOztvREFZVzs7aURBTTlCOzs7O09BcEVIaHNFO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09Ba0JJMnJFO09BU0lFO09Bc0JBTzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDbkRSem1FO0lBQUFoRztJQUtBOE87SUFBQXRJO0lBS0F5dEM7SUFBQXgvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBWEFtNEQsVUFDQTNwRTt3REFBQTtrRUFBQTtrQ0FBQUE7a0VBQUE7a0NBQUFBO3VEQUVRO1lBSFI0cEUsWUFDQTNvRTt3REFBQSwyREFBQTtzQ0FEQTBvRSxXQUNBMW9FO3VEQUVRO3VEQUZSLFNBQUE0b0U7SUFBQTVtRTt3REFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7OzJEQUFBOzswREFBQTs7ZUFBQUE7OzBEQUFBLDJEQUFBOzRDQUFBRixrQkFBQUU7OzswREFBQSwyREFBQTs0Q0FBQUYsa0JBQUFFOzs7Ozs7OzswREFBQSwyREFBQTs0Q0FBQUYsa0JBQUFFOzt5REFBQSwyREFBQTsyQ0FBQUYsa0JBQUFFOzt3REFBQSwyREFBQTswQ0FBQUYsa0JBQUFFO3VEQUVRO1lBRlI2bUU7d0RBQUE7Ozt1REFFUTt1REFGUjtHQUFBQztJQUFBbHJFO3dEQUFBO2FBQUFBLHFDQUFBQTtlQUFBQTs7MERBQUEsMkRBQUE7a0RBQUE5QixRQUFBOEI7Ozs7Ozs7O3NFQUFBO3NEQUFBOUIsUUFBQThCOzs7O3NFQUFBO3NEQUFBOUIsUUFBQThCOzs7OzJEQUFBLDJEQUFBO21EQUFBOUIsUUFBQThCOzs7d0RBQUEsMkRBQUE7Z0RBQUE5QixRQUFBOEI7dURBRVE7WUFGUm1yRTt3REFBQTs7O3VEQUVRO1lBRVJDLFNBQ0FqcUU7d0RBQUE7a0VBQUE7a0NBQUFBO2tFQUFBO2tDQUFBQTt1REFFTztZQUhQa3FFLFdBQ0FqcEU7d0RBQUEsMkRBQUE7c0NBREFncEUsVUFDQWhwRTt1REFFTzt1REFGUCxTQUFBa3BFO0lBQUFDO3dEQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7MkRBQUE7OzBEQUFBOztlQUFBQTs7MERBQUEsMkRBQUE7NENBQUF2K0Qsa0JBQUF1K0Q7OzswREFBQSwyREFBQTs0Q0FBQXYrRCxrQkFBQXUrRDs7Ozs7Ozs7MERBQUEsMkRBQUE7NENBQUF2K0Qsa0JBQUF1K0Q7O3lEQUFBLDJEQUFBOzJDQUFBditELGtCQUFBdStEOzt3REFBQSwyREFBQTswQ0FBQXYrRCxrQkFBQXUrRDt1REFFTztZQUZQQzt3REFBQTs7O3VEQUVPO3VEQUZQO0dBQUFDO0lBQUF6ckU7d0RBQUE7YUFBQUEscUNBQUFBO2VBQUFBOzswREFBQSwyREFBQTtrREFBQTBFLFVBQUExRTs7Ozs7Ozs7c0VBQUE7c0RBQUEwRSxVQUFBMUU7Ozs7c0VBQUE7c0RBQUEwRSxVQUFBMUU7Ozs7MkRBQUEsMkRBQUE7bURBQUEwRSxVQUFBMUU7Ozt3REFBQSwyREFBQTtnREFBQTBFLFVBQUExRTt1REFFTztZQUZQMHJFO3dEQUFBOzs7dURBRU87O0lBRVA3c0U7SUFBQUc7WUFBQWtIO3lEQUFBLE9BTEFrbEU7eURBTXdCO1lBRHhCem1FO3lEQUFBLE9BVkFtbUU7eURBV3dCOztLQUR4QmpzRTtjQUNBc0M7MkRBQUE7T0FEQThMO09BQUFySTsyREFDUyxxREFBQTs0QkFBVHpEOzJEQURBLHFEQUFBO2FBQUF3RDsyREFBQSxxREFBQTtnREFDQXhELGFBREF5RDsyREFDUyxxREFBQTs0QkFBVHpEOzJEQURBLHFEQUFBO2FBQUErRTsyREFBQSxxREFBQTtnREFDQS9FLGFBREE4TDsyREFBQSw0REFBQTttQ0FDQTlMOzJEQUF3Qjs7S0FEeEJuQztjQUNBb0Q7MkRBQUEsNERBQUE7d0NBREF2RCxJQUNBdUQ7MkRBQXdCO1lBQXhCL0QsVUFBU3N0RTt5REFBVCxTQUFTQTtlQUFBQTs7Ozs0REFBQTtRQUFBanNFO1FBQUFDOzZEQUFBQztVQVZUb3JFLGVBVVNyckU7NkRBQUFFO1VBTFR5ckUsY0FLUzVyRTs0REFBQTtlQUFBRTtlQUFBQzs7Ozt5REFBQSw0REFBQTswQ0FBVHN5QyxxQkFBU3c1Qjt5REFBZTtZQUF4Qnh0RTt5REFBQTtLQUFTbWdFO0tBQUFDO0tBQUFyaEQsV0FWVCt0RCxlQVVTMU07S0FBQUMsV0FMVGdOLGNBS1NsTjttQkFBQXBoRCxjQUFBc2hEO3lEQUFlO1lBQXhCaGdFLFlBQVN3Qjt5REFBVDthQUFTQSxxQ0FBQUE7ZUFBQUE7Ozs7O1FBQUFDO1FBQUFDO1FBQUFDLE9BVlQrcUUsaUJBVVNockU7UUFBQUUsT0FMVHFyRSxnQkFLU3hyRTtrQkFBQUUsTUFBQUM7Ozs7eURBQVR1UyxhQUFTM1M7eURBQWU7WUFBeEJ6Qjt5REFBQTtLQUFTMEI7S0FBQUM7S0FBQUMsT0FWVGdyRSxpQkFVU2pyRTtLQUFBRSxPQUxUc3JFLGdCQUtTenJFOzhCQUFBRSxVQUFBQzt5REFBZTtZQUVwQndyRSxZQUFjeHFFOzBEQUFLLE9BQUxBO2NBQUFBO2NBQUFBO3dEQU9qQjs7OztPQXBCRDBwRTtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUlBQztPQUFBQztPQUNBQztPQUFBRTtPQUFBQztPQUFBQztPQUlBN3NFO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BRUlxdEU7Ozs7YTs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7Ozs7OztZQ1hKL3NFLEdBQ0FzQzswREFBUyw2REFBQTtpQ0FBVEE7MERBQVk7WUFEWm5DLEtBQ0FvRDswREFBQSw2REFBQTtzQ0FEQXZELElBQ0F1RDswREFBWTt5REFBWjswREFBQS9EOztJQUFBRjtJQUFBSztJQUFBRDs7VUFEQU0sSUFBQUcsTUFDQVgsV0FBQUYsV0FBQUssYUFBQUQ7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQ0ZBMkY7SUFBQWhHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFEQVcsR0FDQXNDO2lFQUFBOztvRUFBQSxvRUFBQTttQ0FBQUE7O29FQUFBLG9FQUFBO21DQUFBQTs7b0VBQUEsb0VBQUE7bUNBQUFBOztvRUFBQSxvRUFBQTttQ0FBQUE7O29FQUFBLG9FQUFBO21DQUFBQTs7aUVBS2E7WUFOYm5DLEtBQ0FvRDtpRUFBQSxvRUFBQTtzQ0FEQXZELElBQ0F1RDtpRUFLYTtnRUFMYjtHQUFBL0Q7SUFBQStGO2lFQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUVBQUE7O3NFQUFBOztxRUFBQTs7b0VBQUE7O21FQUFBOztlQUFBQTs7bUVBQUEsb0VBQUE7NENBQUFGLGtCQUFBRTs7O21FQUFBLG9FQUFBOzRDQUFBRixrQkFBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NFQUFBLG9FQUFBOytDQUFBRixrQkFBQUU7O3FFQUFBLG9FQUFBOzhDQUFBRixrQkFBQUU7O29FQUFBLG9FQUFBOzZDQUFBRixrQkFBQUU7O21FQUFBLG9FQUFBOzRDQUFBRixrQkFBQUU7O2tFQUFBLG9FQUFBOzJDQUFBRixrQkFBQUU7O2lFQUFBLG9FQUFBOzBDQUFBRixrQkFBQUU7aUVBS2E7WUFMYmpHO2lFQUFBOztvRUFDSTs7b0VBQ0E7O29FQUNBOztvRUFDQTs7b0VBQ0E7O2lFQUFTO2dFQUxiO0dBQUFLO0lBQUF3QjtpRUFBQTthQUFBQSxxQ0FBQUE7ZUFBQUE7O21FQUFBLG9FQUFBO2tEQUFBOUIsUUFBQThCOzs7Ozs7OzsrRUFBQTtzREFBQTlCLFFBQUE4Qjs7OzsrRUFBQTtzREFBQTlCLFFBQUE4Qjs7OzsrRUFBQTtzREFBQTlCLFFBQUE4Qjs7OzsrRUFBQTtzREFBQTlCLFFBQUE4Qjs7OzsrRUFBQTtzREFBQTlCLFFBQUE4Qjs7OztvRUFBQSxvRUFBQTttREFBQTlCLFFBQUE4Qjs7O2lFQUFBLG9FQUFBO2dEQUFBOUIsUUFBQThCO2lFQUthO1lBTGJ6QjtpRUFBQTs7b0VBQ0k7O29FQUNBOztvRUFDQTs7b0VBQ0E7O29FQUNBOztpRUFBUztZQUVUc3RFLFFBQVdDO2tFQUNiLE9BRGFBOztzRUFFUTs7c0VBQ0M7O3NFQUNKOztzRUFDSTs7c0VBQ1A7O2lFQUNkOzs7VUFmSGp0RSxJQUFBRyxNQUNBWCxXQUFBRixXQUFBSyxhQUFBRCxhQU9Jc3RFOzs7O2E7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7OztJQ1JKaHRFO0lBQUFHO1lBQUEyRjtxREFBQTtxREFDYTs7S0FEYjlGO2NBQ0FzQzt1REFEQSx3REFBQTtlQUFBd0QsT0FDQXhEO3VEQUFhOztLQURibkM7Y0FDQW9EO3VEQUFBLHdEQUFBO3dDQURBdkQsSUFDQXVEO3VEQUFhO29EQUFiO3FEQUFBL0Q7O0lBQUFGO0lBQUFLO0lBQUFEOztVQURBTSxJQUFBRyxNQUNBWCxXQUFBRixXQUFBSyxhQUFBRDs7OzthOzs7Ozs7OztjOzs7OztjOzs7OztjOzs7OztxRENLaUU7O0lBR2pFeU87Ozs7Ozs7O3NEQUhJKytEO3FEQUdKO0dBQUFDO0lBQXdCbmlFO3NEQUF4QixTQUF3QkE7ZUFBQUE7Ozs7MERBQUE7UUFBQXFEO1FBQUFDOzJEQUFBQzs2REFBQTs4QkFBQUQ7MkRBQUFFOzZEQUFBO29EQUFBSDswREFBQTtlQUFBRTtlQUFBQzs7Ozt1REFBQSwwREFBQTswQ0FBeEJMLHFCQUF3Qm5EO3NEQUEwQztZQUFsRW9pRTtzREFBQTtLQUF3QjMrRDtLQUFBdEk7S0FBQXVJLHdDQUFBdkk7S0FBQXdJLDhEQUFBRjttQkFBQUMsY0FBQUM7c0RBQTBDO1lBRzlEMCtELHFCQUVFQyxPQUNBaHVFLFdBQ0FFO2FBR0FpQyxZQUFjOHJFO3dEQUE4QjtjQWI5Q0w7O3lEQW9CVSwwREFBQTtlQVhSNXRFLFdBSWNpdUU7d0RBR0g7TUFETng3RDt5REFDRGpROzJEQUFPO1VBUFh4QyxXQUljaXVFO3lEQUlWQzsyREFBTTtVQVRWRixPQUtjQzs7eURBS3NDLFdBRmhEenJFO3dEQUUwRDtLQWxCaEVvckU7OzBEQWtCOEI7OEJBRHhCTSxVQUZDejdEO3VEQUlMLHlEQUFBOytCQUZJeTdEO3NEQUtQO2FBQ0c1ckUsWUFBYUU7d0RBQVE7Y0F2QnZCb3JFOzt5REFpQ1UsMERBQUE7ZUF2QlIxdEUsV0FhYXNDO3dEQUdKO01BREppUTt5REFDRDdSOzJEQUFLOzJCQUhJNEI7eURBS0o7MkRBQUE7Z0NBRkw1QixJQURDNlI7O1VBSUl4UyxnQkFGTGt1RSxVQUVLbHVFOzs7T0FGTGt1RTs0REFHUTs7dURBRVoseURBQUE7Y0F0QkFqdUUsV0FpQklpdUU7c0RBUVA7c0RBQ0Q7WUF2Qkloc0U7WUFVQUc7cURBY0w7WUFHRzhyRSxtQkFBc0JwdUUsV0FBV0U7YUFDL0JpQyxZQUFjOHJFO3dEQUE4QjtPQXpDOUNMO3lEQW9EYSwwREFBQTtlQVpTNXRFLFdBQ05pdUU7S0F6Q2hCTDt3REE2Q2E7eURBQVBwckU7MkRBQU87VUFMU3hDLFdBQ05pdUU7eURBS1Zsb0I7O1NBREF2akQ7MkRBR0Y7NkJBaERKb3JFO0tBQUFBO3VEQW1ERSxPQWhETkU7Y0EyQ1UvbkI7c0RBUVA7YUFHR3pqRCxZQUFjRTt3REFBNkI7T0F6RDdDb3JFO3lEQWlFYSwwREFBQTtlQXpCb0IxdEUsV0FpQmpCc0M7d0RBR0k7eURBQUE7UUF6RHhCcXJFLHlCQXNEb0JyckU7TUFHSEg7TUFBTmdzRTtLQTVEUFQsNkJBNERhdnJFO3dEQUVDLG1EQUFBO01BQVI0ckU7MkRBQVE7VUF0Qm1CL3RFLFdBb0IxQm11RTtLQTVEUFQ7dURBZ0VFLE9BRklLO3NEQUtQO3NEQUNEO1lBM0JJOXJFO1lBZ0JBRztxREFZTDs7O1VBL0RHeXJFLHNCQWtDQUs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQzVCRnJvRTtJQUFBaEc7SUEySkF1dUU7SUFBQS9uRTtJQUlBZ29FO0lBQUEvNUQ7SUFJQWc2RDtJQUFBOTVEO0lBSUErNUQ7SUFBQTVuQjtJQUtBNm5CO0lBQUEzbkI7SUFjQTRuQjtJQUFBMW5CO0lBY0EybkI7SUFBQUM7SUFLQUM7SUFBQUM7SUFNQUM7SUFBQUM7SUFPQUM7SUFBQUM7SUE0QkFDO0lBNEJBQztJQTVCQUM7SUE0QkFDO0lBOEVBQztJQWtCQUM7SUFsQkFDO0lBa0JBQztJQWdDQUM7SUFnQkFDO0lBR0FDO0lBbkJBQztJQWdCQUM7SUFHQUM7SUFrQkFDO0lBS0FDO0lBTEFDO0lBS0FDO0lBaUJBQztJQUlBQztJQUpBQztJQUlBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDekNKbi9IO0lBQUFoRztJQThDQW9sSTtJQTREQUM7SUE1REE3K0g7SUE0REFpTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBM0dBc0osT0FDQTlhO21EQUFBOzs7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzt1REFBQSxzREFBQTtvQ0FBQUE7O3VEQUFBLHNEQUFBO29DQUFBQTs7dURBQUEsc0RBQUE7b0NBQUFBOzs7O1dBREF5RDtzREFDQSwrQ0FBQTs2QkFBQXpEO3NEQURBLCtDQUFBOzBEQXlCVTsrQkF4QlZBO1NBREF5RDtzREFBQSxzREFBQTtvQ0FDQXpEOztXQURBcWI7c0RBQ0EsK0NBQUE7NkJBQUFyYjtzREFEQSwrQ0FBQTswREEwQlk7K0JBekJaQTtTQURBcWI7c0RBQUEsc0RBQUE7b0NBQ0FyYjs7V0FEQXVmO3NEQUNBLCtDQUFBOzZCQUFBdmY7c0RBREEsK0NBQUE7MERBdUN1QjsrQkF0Q3ZCQTtTQURBdWY7c0RBQUEsc0RBQUE7b0NBQ0F2Zjs7V0FEQW9xQjtzREFDQSwrQ0FBQTs2QkFBQXBxQjtzREFEQSwrQ0FBQTswREF5QzZCOytCQXhDN0JBO1NBREFvcUI7c0RBQUEsc0RBQUE7b0NBQ0FwcUI7O29EQTJDWTtZQTVDWithLFNBQ0E5WjttREFBQSxzREFBQTtzQ0FEQTZaLFFBQ0E3WjtvREEyQ1k7a0RBM0NaLFNBQUErWjtJQUFBdFg7bURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEZBQUE7OzZGQUFBOzs0RkFBQTs7MkZBQUEsc0RBQUE7a0ZBQUFYLGtCQUFBVzs7MEZBQUE7O3lGQUFBOzt3RkFBQTs7dUZBQUE7O3NGQUFBOztxRkFBQTs7b0ZBQUEsc0RBQUE7MkVBQUFYLGtCQUFBVzs7bUZBQUE7O2tGQUFBLHNEQUFBO3lFQUFBWCxrQkFBQVc7O2lGQUFBOztnRkFBQTs7K0VBQUE7OzhFQUFBOzs2RUFBQTs7NEVBQUE7OzJFQUFBOzswRUFBQTs7eUVBQUE7O3dFQUFBOzt1RUFBQSxzREFBQTs4REFBQVgsa0JBQUFXOztzRUFBQTs7cUVBQUE7O29FQUFBOzttRUFBQTs7a0VBQUE7O2lFQUFBOztnRUFBQTs7K0RBQUE7OzhEQUFBOzs2REFBQTs7NERBQUE7OzJEQUFBOzswREFBQTs7eURBQUE7O3dEQUFBOzt1REFBQTs7c0RBQUE7O3FEQUFBOztnQkFBQUE7O3FEQUFBLHNEQUFBOzRDQUFBWCxrQkFBQVc7OztxREFBQSxzREFBQTs0Q0FBQVgsa0JBQUFXO1NBQUFDLDhDQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4RUFBQUE7OytFQUFBQTs7OzJFQUFBQTsyRUFBQUE7MkVBQUFBOzJFQUFBQTsyRUFBQUE7OzJFQUFBQTs7MkVBQUFBOzJFQUFBQTs7eUVBQUFBOzs7K0VBQUFBOzs7MkVBQUFBOzJFQUFBQTsyRUFBQUE7O3lFQUFBQTs7OzBFQUFBQTswRUFBQUE7MEVBQUFBOzBFQUFBQTt3RUFBQUE7Ozs7K0VBQUFBOzs7MkVBQUFBOzsyRUFBQUE7MkVBQUFBOzJFQUFBQTs7MkVBQUFBOzJFQUFBQTsyRUFBQUE7MkVBQUFBO3lFQUFBQTs7Ozs7dUVBQUFBOzs7Ozt3RUFBQUE7OzJFQUFBQTs7MkVBQUFBO3lFQUFBQTs7OzBFQUFBQTswRUFBQUE7MEVBQUFBOzswRUFBQUE7O3dFQUFBQTs7Ozs7OzJFQUFBQTs7K0VBQUFBOzs7OzZFQUFBQTs7OzRFQUFBQTs7NEVBQUFBOzs0RUFBQUE7OzBFQUFBQTs7OzJFQUFBQTsyRUFBQUE7MkVBQUFBOzJFQUFBQTt5RUFBQUE7OzsrRUFBQUE7OzsyRUFBQUE7OzJFQUFBQTs7MkVBQUFBOzt5RUFBQUE7Ozs7MEVBQUFBOzBFQUFBQTswRUFBQUE7OzBFQUFBQTs7d0VBQUFBOzs7OytFQUFBQTs7OzJFQUFBQTs7MkVBQUFBOzJFQUFBQTsyRUFBQUE7OzJFQUFBQTsyRUFBQUE7OzJFQUFBQTs7MkVBQUFBO3lFQUFBQTs7Ozs7dUVBQUFBOzs7Ozt3RUFBQUE7OzJFQUFBQTs7MkVBQUFBO3lFQUFBQTs7OzBFQUFBQTswRUFBQUE7MEVBQUFBOzswRUFBQUE7O3dFQUFBQTs7Ozs7NkZBQUEsc0RBQUE7b0ZBQUFaLGtCQUFBVzs7NEZBQUEsc0RBQUE7bUZBQUFYLGtCQUFBVzs7MkZBQUEsc0RBQUE7a0ZBQUFYLGtCQUFBVzs7K0NBQUF3aEI7OENBQUFBLG1CQUFBQTsyRkFBQTs2Q0FBQUMsV0FBQUQ7NEZBQUFFOzhGQUFBO2tFQUFBRDsyRkFBQTtvREFBQUM7OzBGQUFBLHNEQUFBOztvREFBQXJpQjtvREFBQVk7b0RBQUFEOzt5RkFBQSxzREFBQTtnRkFBQVgsa0JBQUFXOzt3RkFBQSxzREFBQTsrRUFBQVgsa0JBQUFXOzt1RkFBQSxzREFBQTs4RUFBQVgsa0JBQUFXOztzRkFBQSxzREFBQTs2RUFBQVgsa0JBQUFXOztxRkFBQSxzREFBQTs0RUFBQVgsa0JBQUFXOztvRkFBQSxzREFBQTsyRUFBQVgsa0JBQUFXOzt3Q0FBQUU7dUNBQUFBLG1CQUFBQTtvRkFBQTtzQ0FBQUMsV0FBQUQ7cUZBQUFFO3VGQUFBOzJEQUFBRDtvRkFBQTs2Q0FBQUM7O21GQUFBLHNEQUFBOzs2Q0FBQWY7NkNBQUFZOzZDQUFBRDs7a0ZBQUEsc0RBQUE7eUVBQUFYLGtCQUFBVzs7c0NBQUFzcUU7cUNBQUFBLG1CQUFBQTtrRkFBQTtvQ0FBQWh1QixXQUFBZ3VCO21GQUFBQztxRkFBQTt5REFBQWp1QjtrRkFBQTsyQ0FBQWl1Qjs7aUZBQUEsc0RBQUE7OzJDQUFBbHJFOzJDQUFBWTsyQ0FBQUQ7O2dGQUFBLHNEQUFBO3VFQUFBWCxrQkFBQVc7OytFQUFBLHNEQUFBO3NFQUFBWCxrQkFBQVc7OzhFQUFBLHNEQUFBO3FFQUFBWCxrQkFBQVc7OzZFQUFBLHNEQUFBO29FQUFBWCxrQkFBQVc7OzRFQUFBLHNEQUFBO21FQUFBWCxrQkFBQVc7OzJFQUFBLHNEQUFBO2tFQUFBWCxrQkFBQVc7OzBFQUFBLHNEQUFBO2lFQUFBWCxrQkFBQVc7O3lFQUFBLHNEQUFBO2dFQUFBWCxrQkFBQVc7O3dFQUFBLHNEQUFBOytEQUFBWCxrQkFBQVc7O3VFQUFBLHNEQUFBOzhEQUFBWCxrQkFBQVc7OzJCQUFBd3FFOzBCQUFBQSxtQkFBQUE7dUVBQUE7eUJBQUFub0QsV0FBQW1vRDt3RUFBQS9OOzBFQUFBOzhDQUFBcDZDO3VFQUFBO2dDQUFBbzZDOztzRUFBQSxzREFBQTs7Z0NBQUFwOUQ7Z0NBQUFZO2dDQUFBRDs7cUVBQUEsc0RBQUE7NERBQUFYLGtCQUFBVzs7b0VBQUEsc0RBQUE7MkRBQUFYLGtCQUFBVzs7bUVBQUEsc0RBQUE7MERBQUFYLGtCQUFBVzs7a0VBQUEsc0RBQUE7eURBQUFYLGtCQUFBVzs7aUVBQUEsc0RBQUE7d0RBQUFYLGtCQUFBVzs7Z0VBQUEsc0RBQUE7dURBQUFYLGtCQUFBVzs7K0RBQUEsc0RBQUE7c0RBQUFYLGtCQUFBVzs7OERBQUEsc0RBQUE7cURBQUFYLGtCQUFBVzs7NkRBQUEsc0RBQUE7b0RBQUFYLGtCQUFBVzs7NERBQUEsc0RBQUE7bURBQUFYLGtCQUFBVzs7MkRBQUEsc0RBQUE7a0RBQUFYLGtCQUFBVzs7MERBQUEsc0RBQUE7aURBQUFYLGtCQUFBVzs7eURBQUEsc0RBQUE7Z0RBQUFYLGtCQUFBVzs7d0RBQUEsc0RBQUE7K0NBQUFYLGtCQUFBVzs7dURBQUEsc0RBQUE7OENBQUFYLGtCQUFBVzs7c0RBQUEsc0RBQUE7NkNBQUFYLGtCQUFBVzs7cURBQUEsc0RBQUE7NENBQUFYLGtCQUFBVzs7b0RBQUEsc0RBQUE7MkNBQUFYLGtCQUFBVzs7bURBQUEsc0RBQUE7MENBQUFYLGtCQUFBVztvREEyQ1k7WUEzQ1p1WDttREFBQTs7Ozt1REFDSTs7dURBQ0E7O3VEQUNBOzt1REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUdBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUVBOzt3REFFQTtnRUFFQTs7Ozt1REFuQkE7UUFBQSs1Rzt3REFBQXFOOzBEQUFBOzZCQUFBck47dURBQUE7NEJBQUFxTjs7dURBQ0E7UUFBQXYzRzt3REFBQW1xRzswREFBQTs2QkFBQW5xRzt1REFBQTs0QkFBQW1xRzs7dURBYUE7UUFBQTl1RTt3REFBQXA3QjswREFBQTs2QkFBQW83Qjt1REFBQTs0QkFBQXA3Qjs7dURBRUE7UUFBQXUzRzt3REFBQUM7MERBQUE7NkJBQUFEO3VEQUFBOzZCQUFBQzs7b0RBR1E7a0RBM0NaLFNBQUFybkg7SUFBQXJjO21EQUFBO2FBQUFBO2dCQUFBQTs7aUJBQUFBOzs7Ozs7Ozs7OztzREFBQSxzREFBQTttREFBQTlCLFFBQUE4Qjs7O2lCQUFBQTs7c0RBQUEsc0RBQUE7bURBQUE5QixRQUFBOEI7Ozs7OztTQUFBbUY7d0NBQUFBOzs7O21FQUFBO3dEQUFBakgsUUFBQThCOzs0Q0FBQW1GOzs7O29FQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOztvRUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjtlQUFBc1k7Y0FBQUEsbUJBQUFBOzJEQUFBO2FBQUFDLE9BQUFEOzREQUFBRTs4REFBQTsyREFBQUQ7MkRBQUEsV0FBQUM7OzBEQUFBLHNEQUFBO3VEQUFBemYsUUFBQWlILEtBQUFuRjs7b0NBQUFtRjs7b0VBQUE7eURBQUFqSCxRQUFBOEI7O29DQUFBbUY7O29FQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOztvRUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjs7b0VBQUE7eURBQUFqSCxRQUFBOEI7O29DQUFBbUY7O29FQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOztvRUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjtlQUFBQztjQUFBQSxpQkFBQUE7MkRBQUE7YUFBQWxGLEtBQUFrRjs0REFBQWpGOzhEQUFBOzJEQUFBRDsyREFBQSxXQUFBQzs7MERBQUEsc0RBQUE7dURBQUFqQyxRQUFBaUgsS0FBQW5GOzs7OzZDQUFBbUY7Ozs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7Z0JBQUErZjtlQUFBQSxtQkFBQUE7NERBQUE7Y0FBQUMsT0FBQUQ7NkRBQUFFOytEQUFBOzREQUFBRDs0REFBQSxXQUFBQzs7MkRBQUEsc0RBQUE7d0RBQUFsbkIsUUFBQWlILEtBQUFuRjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7OztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7Ozs7Ozs0Q0FBQW1GOzs7O29FQUFBO3lEQUFBakgsUUFBQThCOzs2Q0FBQW1GOzs7O3FFQUFBOzBEQUFBakgsUUFBQThCOztxQ0FBQW1GO2dCQUFBc29CO2VBQUFBLG1CQUFBQTs0REFBQTtjQUFBRyxPQUFBSDs2REFBQUk7K0RBQUE7NERBQUFEOzREQUFBLFdBQUFDOzsyREFBQSxzREFBQTt3REFBQTN2QixRQUFBaUgsS0FBQW5GOztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOzs7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7Ozs7NkNBQUFtRjs7OztxRUFBQTswREFBQWpILFFBQUE4Qjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7Ozs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOztxQ0FBQW1GOztxRUFBQTswREFBQWpILFFBQUE4Qjs7cUNBQUFtRjs7cUVBQUE7MERBQUFqSCxRQUFBOEI7O3FDQUFBbUY7O3FFQUFBOzBEQUFBakgsUUFBQThCOzs7Ozs7O3VEQUFBLHNEQUFBO29EQUFBOUIsUUFBQThCOzs7O21EQUFBLHNEQUFBO2dEQUFBOUIsUUFBQThCO29EQTJDWTtZQTNDWnNjO21EQUFBOzs7O3VEQUNJOzt1REFDQTs7dURBQ0E7O3VEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBR0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBQ0E7O3dEQUNBOzt3REFDQTs7d0RBRUE7O3dEQUVBO2dFQUVBOzs7O3VEQW5CQTtRQUFBcGM7d0RBQUFDOzBEQUFBO3FEQUFBRDt1REFBQTs7NkJBQUFDOzt1REFDQTtRQUFBdWQ7d0RBQUFDOzBEQUFBO3FEQUFBRDt1REFBQTs7NkJBQUFDOzt1REFhQTtRQUFBd0g7d0RBQUFDOzBEQUFBO3FEQUFBRDt1REFBQTs7NkJBQUFDOzt1REFFQTtRQUFBd0k7d0RBQUFDOzBEQUFBO3FEQUFBRDt1REFBQTs7NkJBQUFDOztvREFHUTs7SUFFWmh2QjtJQUFBRztJQUFBZ25HO0lBQUFDO0lBQUFDO0lBQUFDO1lBQUF3OUI7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBaGxJO3FEQStEcUI7WUEvRHJCaWxJO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTs7cURBK0RxQjtZQS9EckJDO29EQUFBOztxREErRHFCO1lBL0RyQkM7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUFsK0I7cURBK0RxQjtZQS9EckJtK0I7b0RBQUE7O3FEQStEcUI7WUEvRHJCQztvREFBQTs7cURBK0RxQjtZQS9EckJDO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQTFsSTtxREErRHFCO1lBL0RyQjJsSTtvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUExK0I7cURBK0RxQjtZQS9EckIyK0I7b0RBQUE7O3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBL2xJO3FEQStEcUI7WUEvRHJCZ21JO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQWxtSTtxREErRHFCO1lBL0RyQm1tSTtvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUFybUk7cURBK0RxQjtZQS9EckJzbUk7b0RBQUEsT0FBQXRtSTtxREErRHFCO1lBL0RyQnVtSTtvREFBQTs7cURBK0RxQjtZQS9EckJDO29EQUFBOztxREErRHFCO1lBL0RyQkM7b0RBQUE7OztxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQTFtSTtxREErRHFCO1lBL0RyQjJtSTtvREFBQSxPQUFBM21JO3FEQStEcUI7WUEvRHJCNG1JO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQTltSTtxREErRHFCO1lBL0RyQittSTtvREFBQSxPQUFBL21JO3FEQStEcUI7WUEvRHJCZ25JO29EQUFBO3FEQStEcUI7WUEvRHJCei9CO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBeG5HO3FEQStEcUI7WUEvRHJCeW5HO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQTNuRztxREErRHFCO1lBL0RyQjRuRztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUE7O3FEQStEcUI7WUEvRHJCQztvREFBQTs7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUEvbkc7cURBK0RxQjtZQS9EckJnb0c7b0RBQUE7O3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBam9HO3FEQStEcUI7WUEvRHJCa29HO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQXBvRztxREErRHFCO1lBL0RyQnFvRztvREFBQSxPQUFBcm9HO3FEQStEcUI7WUEvRHJCc29HO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTs7O3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQXpvRztxREErRHFCO1lBL0RyQjBvRztvREFBQTs7O3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBM29HO3FEQStEcUI7WUEvRHJCNG9HO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTs7O3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQS9vRztxREErRHFCO1lBL0RyQmdwRztvREFBQTs7O3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBanBHO3FEQStEcUI7WUEvRHJCa3BHO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTs7O3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUEsT0FBQXJwRztxREErRHFCO1lBL0RyQnNwRztvREFBQTs7O3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBdnBHO3FEQStEcUI7WUEvRHJCd3BHO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTs7O3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQjN4QjtvREFBQSxPQUFBLzNFO3FEQStEcUI7WUEvRHJCZzRFO29EQUFBOzs7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUFqNEU7cURBK0RxQjtZQS9EckJrNEU7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUF0NEU7cURBK0RxQjtZQS9EckJ1NEU7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUEzNEU7cURBK0RxQjtZQS9EckI0NEU7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUE3NEU7cURBK0RxQjtZQS9EckI4NEU7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBO3FEQStEcUI7WUEvRHJCblo7b0RBQUEsT0FBQTUvRDtxREErRHFCO1lBL0RyQjYvRDtvREFBQSxPQUFBNy9EO3FEQStEcUI7WUEvRHJCOC9EO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBLE9BQUFqZ0U7cURBK0RxQjtZQS9EckJrZ0U7b0RBQUE7cURBK0RxQjtZQS9EckJDO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBcGdFO3FEQStEcUI7WUEvRHJCcWdFO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQkM7b0RBQUE7cURBK0RxQjtZQS9EckJuWjtvREFBQSxPQUFBcG5EO3FEQStEcUI7WUEvRHJCbXNCO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQSxPQUFBcHNCO3FEQStEcUI7WUEvRHJCcXNCO29EQUFBO3FEQStEcUI7WUEvRHJCQztvREFBQTtxREErRHFCO1lBL0RyQnhLO29EQUFBLE9BQUE5aEI7cURBK0RxQjtZQS9EckJrUDtvREFBQSxPQUFBbFA7cURBK0RxQjtZQS9EckJxSDtvREFBQTtxREErRHFCO1lBL0RyQnZCO29EQUFBLE9BQUE5RjtxREErRHFCOztLQS9EckJBO2NBQ0FzQztzREFBQTs7dURBQUEsdURBQUE7bUNBQUFBOzs7YUFEQThMLGVBQUFySTt5REFDQSxnREFBQTsrQkFBQXpEO3lEQURBOzZEQUdZLHdEQUFBO3dDQUZaQTs0REFFK0M7WUFIL0N5RDt5REFDQSxnREFBQTsrQkFBQXpEO3lEQURBLGdEQUFBOzJEQUFBO2FBQUF3RCxPQUNBeEQ7V0FEQThMO3lEQUFBLHVEQUFBO3NDQUNBOUw7O2FBREFpcUIsaUJBQUE1Tzt5REFDQSxnREFBQTsrQkFBQXJiO3lEQURBLGdEQUFBOzJEQUFBO2FBQUErRSxPQUNBL0U7V0FEQXFiO3lEQUNBLGdEQUFBOytCQUFBcmI7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTRNLE9BQ0E1TTtXQURBaXFCO3lEQUFBLHVEQUFBO3NDQUNBanFCOzthQURBbXFCLGlCQUFBNUs7eURBQ0EsZ0RBQUE7K0JBQUF2Zjt5REFEQSxnREFBQTsyREFBQTthQUFBd2YsT0FDQXhmO1dBREF1Zjt5REFDQSxnREFBQTsrQkFBQXZmO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFncUIsT0FDQWhxQjtXQURBbXFCO3lEQUFBLHVEQUFBO3NDQUNBbnFCOzthQURBcStELGlCQUFBajBDO3lEQUNBLGdEQUFBOytCQUFBcHFCO3lEQURBLGdEQUFBOzJEQUFBO2FBQUErcEIsT0FDQS9wQjtXQURBb3FCO3lEQUNBLGdEQUFBOytCQUFBcHFCO3lEQURBLGdEQUFBOzJEQUFBO2FBQUE4cEIsT0FDQTlwQjtXQURBcStEO3lEQUFBLHVEQUFBO3NDQUNBcitEOzthQURBa3FCLGVBQUFxMEMsaUJBQUF4Wjt5REFDQSxnREFBQTsrQkFBQS9rRDt5REFEQSxnREFBQTsyREFBQTthQUFBNnBCLE9BQ0E3cEI7V0FEQStrRDt5REFDQSxnREFBQTsrQkFBQS9rRDt5REFEQSxnREFBQTsyREFBQTthQUFBOGtELE9BQ0E5a0Q7V0FEQXUrRDt5REFDQSxnREFBQTsrQkFBQXYrRDt5REFEQSxnREFBQTsyREFBQTthQUFBaStELE9BQ0FqK0Q7V0FEQWtxQjt5REFBQSx1REFBQTtzQ0FDQWxxQjs7YUFEQW0rRCxpQkFBQVEsaUJBQUEzWjt5REFDQSxnREFBQTsrQkFBQWhsRDt5REFEQSxnREFBQTsyREFBQTthQUFBZytELFFBQ0FoK0Q7V0FEQWdsRDt5REFDQSxnREFBQTsrQkFBQWhsRDt5REFEQSxnREFBQTsyREFBQTthQUFBKzlELFFBQ0EvOUQ7V0FEQTIrRDt5REFDQSxnREFBQTsrQkFBQTMrRDt5REFEQSxnREFBQTsyREFBQTthQUFBODlELFFBQ0E5OUQ7V0FEQW0rRDt5REFBQSx1REFBQTtzQ0FDQW4rRDs7YUFEQWsrRCxlQUFBRSxpQkFBQVMsaUJBQUE1Wjt5REFDQSxnREFBQTsrQkFBQWpsRDt5REFEQSxnREFBQTsyREFBQTthQUFBNjlELFFBQ0E3OUQ7V0FEQWlsRDt5REFDQSxnREFBQTsrQkFBQWpsRDt5REFEQSxnREFBQTsyREFBQTthQUFBNDlELFFBQ0E1OUQ7V0FEQTYrRDt5REFDQSxnREFBQTsrQkFBQTcrRDt5REFEQSxnREFBQTsyREFBQTthQUFBMjlELFFBQ0EzOUQ7V0FEQW8rRDt5REFDQSxnREFBQTsrQkFBQXArRDt5REFEQTs2REFTMkI7OERBQUEsd0RBQUE7eUNBUjNCQTtnQkFRMkJpQjs2REFBQSxpREFBQTtpQ0FSM0JqQjs2REFRMkIsaURBQUE7OERBVDNCO2dCQUFBMDlELFFBQ0ExOUQ7Y0FRMkJpQjs2REFBQSx3REFBQTt3Q0FSM0JqQjs0REFRd0M7WUFUeENrK0Q7eURBQUEsdURBQUE7c0NBQ0FsK0Q7O2FBREFzK0QsaUJBQUFXLGlCQUFBVDt5REFDQSxnREFBQTsrQkFBQXgrRDt5REFEQSxnREFBQTsyREFBQTthQUFBeTlELFFBQ0F6OUQ7V0FEQXcrRDt5REFDQSxnREFBQTsrQkFBQXgrRDt5REFEQSxnREFBQTsyREFBQTthQUFBdzlELFFBQ0F4OUQ7V0FEQWkvRDt5REFDQSxnREFBQTsrQkFBQWovRDt5REFEQSxnREFBQTsyREFBQTthQUFBdTlELFFBQ0F2OUQ7V0FEQXMrRDt5REFBQSx1REFBQTtzQ0FDQXQrRDs7YUFEQWkzRSxpQkFBQXhZO3lEQUNBLGdEQUFBOytCQUFBeitEO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFzOUQsUUFDQXQ5RDtXQURBeStEO3lEQUNBLGdEQUFBOytCQUFBeitEO3lEQURBLGdEQUFBOzJEQUFBO2FBQUF5MkUsUUFDQXoyRTtXQURBaTNFO3lEQUFBLHVEQUFBO3NDQUNBajNFOzthQURBbTNFLGlCQUFBelk7eURBQ0EsZ0RBQUE7K0JBQUExK0Q7eURBREEsZ0RBQUE7MkRBQUE7YUFBQXcyRSxRQUNBeDJFO1dBREEwK0Q7eURBQ0EsZ0RBQUE7K0JBQUExK0Q7eURBREEsZ0RBQUE7MkRBQUE7YUFBQXUyRSxRQUNBdjJFO1dBREFtM0U7eURBQUEsdURBQUE7c0NBQ0FuM0U7OztVQURBdW5HO1VBQUFod0I7VUFBQUY7VUFBQXpZO3lEQUNBLGdEQUFBOytCQUFBNStEO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFzMkUsUUFDQXQyRTtXQURBNCtEO3lEQUNBLGdEQUFBOytCQUFBNStEO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFxMkUsUUFDQXIyRTtXQURBcTNFO3lEQUNBLGdEQUFBOytCQUFBcjNFO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFvMkUsUUFDQXAyRTtXQURBdTNFO3lEQUNBLGdEQUFBOytCQUFBdjNFO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFtMkUsUUFDQW4yRTtXQURBdW5HO3lEQUFBLHVEQUFBO3NDQUNBdm5HOzs7VUFEQW1vRztVQUFBZDtVQUFBN3ZCO1VBQUExWTt5REFDQSxnREFBQTsrQkFBQTkrRDt5REFEQSxnREFBQTsyREFBQTthQUFBazJFLFFBQ0FsMkU7V0FEQTgrRDt5REFDQSxnREFBQTsrQkFBQTkrRDt5REFEQSxnREFBQTsyREFBQTthQUFBaTJFLFFBQ0FqMkU7V0FEQXczRTt5REFDQSxnREFBQTsrQkFBQXgzRTt5REFEQSxnREFBQTsyREFBQTthQUFBZzJFLFFBQ0FoMkU7V0FEQXFuRzt5REFDQSxnREFBQTsrQkFBQXJuRzt5REFEQSxnREFBQTsyREFBQTthQUFBKzFFLFFBQ0EvMUU7V0FEQW1vRzt5REFBQSx1REFBQTtzQ0FDQW5vRzs7O1VBREF3cEc7VUFBQWxDO1VBQUE1dkI7VUFBQTNZO3lEQUNBLGdEQUFBOytCQUFBLytEO3lEQURBLGdEQUFBOzJEQUFBO2FBQUE4MUUsUUFDQTkxRTtXQURBKytEO3lEQUNBLGdEQUFBOytCQUFBLytEO3lEQURBLGdEQUFBOzJEQUFBO2FBQUE2MUUsUUFDQTcxRTtXQURBMDNFO3lEQUNBLGdEQUFBOytCQUFBMTNFO3lEQURBLGdEQUFBOzJEQUFBO2FBQUE0MUUsUUFDQTUxRTtXQURBc25HO3lEQUNBLGdEQUFBOytCQUFBdG5HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUEyMUUsUUFDQTMxRTtXQURBd3BHO3lEQUFBLHVEQUFBO3NDQUNBeHBHOzthQURBd25HLGlCQUFBQyxrQkFBQXpvQzt5REFDQSxnREFBQTsrQkFBQWgvRDt5REFEQSxnREFBQTsyREFBQTthQUFBMDFFLFFBQ0ExMUU7V0FEQWcvRDt5REFDQSxnREFBQTsrQkFBQWgvRDt5REFEQSxnREFBQTsyREFBQTthQUFBeTFFLFFBQ0F6MUU7V0FEQXluRzt5REFDQSxnREFBQTsrQkFBQXpuRzt5REFEQSxnREFBQTsyREFBQTthQUFBb25HLFFBQ0Fwbkc7V0FEQXduRzt5REFBQSx1REFBQTtzQ0FDQXhuRzs7YUFEQTJuRyxpQkFBQUQsa0JBQUF4b0M7eURBQ0EsZ0RBQUE7K0JBQUFsL0Q7eURBREEsZ0RBQUE7MkRBQUE7YUFBQW1uRyxRQUNBbm5HO1dBREFrL0Q7eURBQ0EsZ0RBQUE7K0JBQUFsL0Q7eURBREEsZ0RBQUE7MkRBQUE7YUFBQWtuRyxRQUNBbG5HO1dBREEwbkc7eURBQ0EsZ0RBQUE7K0JBQUExbkc7eURBREEsZ0RBQUE7MkRBQUE7YUFBQWluRyxRQUNBam5HO1dBREEybkc7eURBQUEsdURBQUE7c0NBQ0Ezbkc7O2FBREE2bkcsaUJBQUFELGtCQUFBaHhCO3lEQUNBLGdEQUFBOytCQUFBNTJFO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFnbkcsUUFDQWhuRztXQURBNDJFO3lEQUNBLGdEQUFBOytCQUFBNTJFO3lEQURBLGdEQUFBOzJEQUFBO2FBQUErbUcsUUFDQS9tRztXQURBNG5HO3lEQUNBLGdEQUFBOytCQUFBNW5HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUE4bUcsUUFDQTltRztXQURBNm5HO3lEQUFBLHVEQUFBO3NDQUNBN25HOzthQURBK25HLGlCQUFBRCxrQkFBQWp4Qjt5REFDQSxnREFBQTsrQkFBQTcyRTt5REFEQSxnREFBQTsyREFBQTthQUFBNm1HLFFBQ0E3bUc7V0FEQTYyRTt5REFDQSxnREFBQTsrQkFBQTcyRTt5REFEQSxnREFBQTsyREFBQTthQUFBNG1HLFFBQ0E1bUc7V0FEQThuRzt5REFDQSxnREFBQTsrQkFBQTluRzt5REFEQSxnREFBQTsyREFBQTthQUFBMm1HLFFBQ0EzbUc7V0FEQStuRzt5REFBQSx1REFBQTtzQ0FDQS9uRzs7YUFEQWlvRyxrQkFBQUQsa0JBQUFseEI7eURBQ0EsZ0RBQUE7K0JBQUE5MkU7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTBtRyxRQUNBMW1HO1dBREE4MkU7eURBQ0EsZ0RBQUE7K0JBQUE5MkU7eURBREEsZ0RBQUE7MkRBQUE7YUFBQXltRyxRQUNBem1HO1dBREFnb0c7eURBQ0EsZ0RBQUE7K0JBQUFob0c7eURBREEsZ0RBQUE7MkRBQUE7YUFBQXdtRyxRQUNBeG1HO1dBREFpb0c7eURBQUEsdURBQUE7c0NBQ0Fqb0c7O2FBREFvb0csa0JBQUFGLGtCQUFBbnhCO3lEQUNBLGdEQUFBOytCQUFBLzJFO3lEQURBLGdEQUFBOzJEQUFBO2FBQUF1bUcsUUFDQXZtRztXQURBKzJFO3lEQUNBLGdEQUFBOytCQUFBLzJFO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFzbUcsUUFDQXRtRztXQURBa29HO3lEQUNBLGdEQUFBOytCQUFBbG9HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFxbUcsUUFDQXJtRztXQURBb29HO3lEQUFBLHVEQUFBO3NDQUNBcG9HOzthQURBZ3BHLGtCQUFBWCxrQkFBQXJ4Qjt5REFDQSxnREFBQTsrQkFBQWgzRTt5REFEQSxnREFBQTsyREFBQTthQUFBb21HLFFBQ0FwbUc7V0FEQWczRTt5REFDQSxnREFBQTsrQkFBQWgzRTt5REFEQSxnREFBQTsyREFBQTthQUFBbW1HLFFBQ0FubUc7V0FEQXFvRzt5REFDQSxnREFBQTsrQkFBQXJvRzt5REFEQSxnREFBQTsyREFBQTthQUFBa21HLFFBQ0FsbUc7V0FEQWdwRzt5REFBQSx1REFBQTtzQ0FDQWhwRzs7YUFEQW1wRyxrQkFBQVosa0JBQUFyeEI7eURBQ0EsZ0RBQUE7K0JBQUFsM0U7eURBREEsZ0RBQUE7MkRBQUE7YUFBQWltRyxRQUNBam1HO1dBREFrM0U7eURBQ0EsZ0RBQUE7K0JBQUFsM0U7eURBREEsZ0RBQUE7MkRBQUE7YUFBQWdtRyxRQUNBaG1HO1dBREF1b0c7eURBQ0EsZ0RBQUE7K0JBQUF2b0c7eURBREEsZ0RBQUE7MkRBQUE7YUFBQStsRyxRQUNBL2xHO1dBREFtcEc7eURBQUEsdURBQUE7c0NBQ0FucEc7O2FBREF5b0csa0JBQUFyeEI7eURBQ0EsZ0RBQUE7K0JBQUFwM0U7eURBREEsZ0RBQUE7MkRBQUE7YUFBQThsRyxRQUNBOWxHO1dBREFvM0U7eURBQ0EsZ0RBQUE7K0JBQUFwM0U7eURBREE7NkRBd0JhO2FBeEJiOEw7YUFBQXJJOzZEQXdCYSxpREFBQTtrQ0F2QmJ6RDs0REFEQSxVQXdCY2lCO2dFQUFBLGlEQUFBO3FDQXZCZGpCOzs2QkF1QmN1TCxLQUFBdEs7aUVBQUEsR0FBQXNLO2tFQUFBLGlEQUFBO3VDQXZCZHZMO2lFQXVCYyxpREFBQTtrRUF4QmQ7b0JBQUE2bEcsUUFDQTdsRztrQkF1QmNpQjtpRUFBQTtnRUFBYTtnRUFBYixpREFBQTs4Q0FBQUE7Z0VBQUEsd0RBQUE7NENBdkJkakI7K0RBdUIyQjtlQXhCM0J5RDs2REF3QmEsaURBQUE7a0NBdkJiekQ7NERBREEsVUF3QjZCaUI7Z0VBQUEsaURBQUE7cUNBdkI3QmpCOzs2QkF1QjZCdUwsS0FBQXRLO2lFQUFBLEdBQUFzSztrRUFBQSxpREFBQTt1Q0F2QjdCdkw7aUVBdUI2QixpREFBQTtrRUF4QjdCO29CQUFBNGxHLFFBQ0E1bEc7a0JBdUI2QmlCO2lFQUFBO2dFQUFhO2dFQUFiLGlEQUFBOzhDQUFBQTtnRUFBQSx3REFBQTs0Q0F2QjdCakI7K0RBdUIwQztlQXhCMUM4TDs0REFBQSx1REFBQTt5Q0FDQTlMOzREQXVCMkM7WUF4QjNDeW9HO3lEQUFBLHVEQUFBO3NDQUNBem9HOzthQURBNG9HLGtCQUFBdHhCO3lEQUNBLGdEQUFBOytCQUFBdDNFO3lEQURBLGdEQUFBOzREQXlCYztpQ0F4QmRBO1dBREFzM0U7eURBQ0EsZ0RBQUE7K0JBQUF0M0U7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTJsRyxRQUNBM2xHO1dBREE0b0c7eURBQUEsdURBQUE7c0NBQ0E1b0c7O2FBREFpcEcsa0JBQUF4eEI7eURBQ0EsZ0RBQUE7K0JBQUF6M0U7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTBsRyxRQUNBMWxHO1dBREF5M0U7eURBQ0EsZ0RBQUE7K0JBQUF6M0U7eURBREEsZ0RBQUE7MkRBQUE7YUFBQXlsRyxRQUNBemxHO1dBREFpcEc7eURBQUEsdURBQUE7c0NBQ0FqcEc7OztVQURBMmtJO1VBQUFDO1VBQUFuN0I7VUFBQUw7VUFBQXp4Qjt5REFDQSxnREFBQTsrQkFBQTMzRTt5REFEQSxnREFBQTsyREFBQTthQUFBd2xHLFFBQ0F4bEc7V0FEQTIzRTt5REFDQSxnREFBQTsrQkFBQTMzRTt5REFEQSxnREFBQTsyREFBQTthQUFBdWxHLFFBQ0F2bEc7V0FEQW9wRzt5REFDQSxnREFBQTsrQkFBQXBwRzt5REFEQSxnREFBQTsyREFBQTthQUFBc2xHLFFBQ0F0bEc7V0FEQXlwRzt5REFDQSxnREFBQTsrQkFBQXpwRzt5REFEQSxnREFBQTsyREFBQTthQUFBcWxHLFFBQ0FybEc7V0FEQTRrSTt5REFDQSxnREFBQTsrQkFBQTVrSTt5REFEQTs0REFnQ007YUFoQ044TDthQUFBckk7NERBZ0NNLGdEQUFBO2tDQS9CTnpEOzREQURBLFVBZ0NPaUI7K0RBQUEsZ0RBQUE7cUNBL0JQakI7OzZCQStCT3VMLEtBQUF0SztnRUFBQSxHQUFBc0s7aUVBQUEsZ0RBQUE7dUNBL0JQdkw7Z0VBK0JPLGdEQUFBO2tFQWhDUDtvQkFBQW9sRyxRQUNBcGxHO2tCQStCT2lCO2dFQUFBO2dFQUFhOytEQUFiLGdEQUFBOzhDQUFBQTsrREFBQSx1REFBQTs0Q0EvQlBqQjsrREErQm9CO2VBaENwQnlEOzREQWdDTSxnREFBQTtrQ0EvQk56RDs0REFEQSxVQWdDc0JpQjtnRUFBQSxpREFBQTtxQ0EvQnRCakI7OzZCQStCc0J1TCxLQUFBdEs7aUVBQUEsR0FBQXNLO2tFQUFBLGlEQUFBO3VDQS9CdEJ2TDtpRUErQnNCLGlEQUFBO2tFQWhDdEI7b0JBQUFtbEcsUUFDQW5sRztrQkErQnNCaUI7aUVBQUE7Z0VBQWE7Z0VBQWIsaURBQUE7OENBQUFBO2dFQUFBLHdEQUFBOzRDQS9CdEJqQjsrREErQm1DO2VBaENuQzhMOzREQUFBLHVEQUFBO3lDQUNBOUw7NERBK0JvQztZQWhDcEMya0k7eURBQUEsdURBQUE7c0NBQ0Eza0k7O2FBREFzcEcsa0JBQUFoQjt5REFDQSxnREFBQTsrQkFBQXRvRzt5REFEQSxnREFBQTsyREFBQTthQUFBa2xHLFFBQ0FsbEc7V0FEQXNvRzt5REFDQSxnREFBQTsrQkFBQXRvRzt5REFEQSxnREFBQTsyREFBQTthQUFBaWxHLFFBQ0FqbEc7V0FEQXNwRzt5REFBQSx1REFBQTtzQ0FDQXRwRzs7YUFEQTBwRyxrQkFBQWxCO3lEQUNBLGdEQUFBOytCQUFBeG9HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUEwa0ksUUFDQTFrSTtXQURBd29HO3lEQUNBLGdEQUFBOytCQUFBeG9HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUF5a0ksUUFDQXprSTtXQURBMHBHO3lEQUFBLHVEQUFBO3NDQUNBMXBHOzthQURBNmtJLGtCQUFBbjhCO3lEQUNBLGdEQUFBOytCQUFBMW9HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUF3a0ksUUFDQXhrSTtXQURBMG9HO3lEQUNBLGdEQUFBOytCQUFBMW9HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUF1a0ksUUFDQXZrSTtXQURBNmtJO3lEQUFBLHVEQUFBO3NDQUNBN2tJOzthQURBOGtJLGtCQUFBbjhCO3lEQUNBLGdEQUFBOytCQUFBM29HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFza0ksUUFDQXRrSTtXQURBMm9HO3lEQUNBLGdEQUFBOytCQUFBM29HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFxa0ksUUFDQXJrSTtXQURBOGtJO3lEQUFBLHVEQUFBO3NDQUNBOWtJOzthQURBK2tJLGtCQUFBbDhCO3lEQUNBLGdEQUFBOytCQUFBN29HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUFva0ksUUFDQXBrSTtXQURBNm9HO3lEQUNBLGdEQUFBOytCQUFBN29HO3lEQURBLGdEQUFBOzREQXNDVztpQ0FyQ1hBO1dBREEra0k7eURBQUEsdURBQUE7c0NBQ0Eva0k7OztVQURBZ2xJO1VBQUFDO1VBQUFDO1VBQUFwOEI7eURBQ0EsZ0RBQUE7K0JBQUE5b0c7eURBREEsZ0RBQUE7MkRBQUE7YUFBQW1rSSxRQUNBbmtJO1dBREE4b0c7eURBQ0EsZ0RBQUE7K0JBQUE5b0c7eURBREEsZ0RBQUE7MkRBQUE7YUFBQWtrSSxRQUNBbGtJO1dBREFrbEk7eURBQ0EsZ0RBQUE7K0JBQUFsbEk7eURBREEsZ0RBQUE7MkRBQUE7YUFBQWlrSSxRQUNBamtJO1dBREFpbEk7eURBQ0EsZ0RBQUE7K0JBQUFqbEk7eURBREEsZ0RBQUE7MkRBQUE7YUFBQWdrSSxRQUNBaGtJO1dBREFnbEk7eURBQUEsdURBQUE7c0NBQ0FobEk7O2FBREFtbEksa0JBQUFDLGtCQUFBcjhCO3lEQUNBLGdEQUFBOytCQUFBL29HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUErakksUUFDQS9qSTtXQURBK29HO3lEQUNBLGdEQUFBOytCQUFBL29HO3lEQURBLGdEQUFBOzJEQUFBO2FBQUE4akksUUFDQTlqSTtXQURBb2xJO3lEQUNBLGdEQUFBOytCQUFBcGxJO3lEQURBLGdEQUFBOzJEQUFBO2FBQUE2akksUUFDQTdqSTtXQURBbWxJO3lEQUFBLHVEQUFBO3NDQUNBbmxJOzthQURBcWxJLGtCQUFBQyxrQkFBQXA4Qjt5REFDQSxnREFBQTsrQkFBQWxwRzt5REFEQSxnREFBQTsyREFBQTthQUFBNGpJLFFBQ0E1akk7V0FEQWtwRzt5REFDQSxnREFBQTsrQkFBQWxwRzt5REFEQSxnREFBQTsyREFBQTthQUFBMmpJLFFBQ0Ezakk7V0FEQXNsSTt5REFDQSxnREFBQTsrQkFBQXRsSTt5REFEQSxnREFBQTsyREFBQTthQUFBMGpJLFFBQ0Exakk7V0FEQXFsSTt5REFBQSx1REFBQTtzQ0FDQXJsSTs7YUFEQXVsSSxrQkFBQWw4Qjt5REFDQSxnREFBQTsrQkFBQXJwRzt5REFEQSxnREFBQTsyREFBQTthQUFBeWpJLFFBQ0F6akk7V0FEQXFwRzt5REFDQSxnREFBQTsrQkFBQXJwRzt5REFEQSxnREFBQTsyREFBQTthQUFBd2pJLFFBQ0F4akk7V0FEQXVsSTt5REFBQSx1REFBQTtzQ0FDQXZsSTs7YUFEQXVwRzt5REFDQSxnREFBQTsrQkFBQXZwRzt5REFEQSxnREFBQTsyREFBQTthQUFBdWpJLFFBQ0F2akk7V0FEQXVwRzt5REFBQSx1REFBQTtzQ0FDQXZwRzs7O1VBREF3bEk7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQWg4Qjt5REFDQSxnREFBQTsrQkFBQTNwRzt5REFEQSxnREFBQTsyREFBQTthQUFBc2pJLFFBQ0F0akk7V0FEQTJwRzt5REFDQSxnREFBQTsrQkFBQTNwRzt5REFEQSxnREFBQTsyREFBQTthQUFBcWpJLFFBQ0Fyakk7V0FEQTJsSTt5REFDQSxnREFBQTsrQkFBQTNsSTt5REFEQSxnREFBQTsyREFBQTthQUFBb2pJLFFBQ0Fwakk7V0FEQTBsSTt5REFDQSxnREFBQTsrQkFBQTFsSTt5REFEQTs0REFnRE07YUFoRE44TDthQUFBckk7NERBZ0RNLGdEQUFBO2tDQS9DTnpEOzREQURBLFVBZ0RPaUI7K0RBQUEsZ0RBQUE7cUNBL0NQakI7OzZCQStDT3VMLEtBQUF0SztnRUFBQSxHQUFBc0s7aUVBQUEsZ0RBQUE7dUNBL0NQdkw7Z0VBK0NPLGdEQUFBO2tFQWhEUDtvQkFBQW1qSSxRQUNBbmpJO2tCQStDT2lCO2dFQUFBO2dFQUFnQjsrREFBaEIsZ0RBQUE7OENBQUFBOytEQUFBLHVEQUFBOzRDQS9DUGpCOytEQStDdUI7ZUFoRHZCeUQ7NERBZ0RNLGdEQUFBO2tDQS9DTnpEOzREQURBLFVBZ0R5QmlCO2dFQUFBLGlEQUFBO3FDQS9DekJqQjs7NkJBK0N5QnVMLEtBQUF0SztpRUFBQSxHQUFBc0s7a0VBQUEsaURBQUE7dUNBL0N6QnZMO2lFQStDeUIsaURBQUE7a0VBaER6QjtvQkFBQWtqSSxRQUNBbGpJO2tCQStDeUJpQjtpRUFBQTtnRUFBZ0I7Z0VBQWhCLGlEQUFBOzhDQUFBQTtnRUFBQSx3REFBQTs0Q0EvQ3pCakI7K0RBK0N5QztlQWhEekM4TDs0REFBQSx1REFBQTt5Q0FDQTlMOzREQStDMEM7WUFoRDFDeWxJO3lEQUNBLGdEQUFBOytCQUFBemxJO3lEQURBLGdEQUFBOzJEQWlETTtpQ0FoRE5BO1dBREF3bEk7eURBQUEsdURBQUE7c0NBQ0F4bEk7O2FBREE0bEksa0JBQUFDLGtCQUFBQzt5REFDQSxnREFBQTsrQkFBQTlsSTt5REFEQSxnREFBQTsyREFBQTthQUFBaWpJLFFBQ0Fqakk7V0FEQThsSTt5REFDQSxnREFBQTsrQkFBQTlsSTt5REFEQSxnREFBQTsyREFBQTthQUFBZ2pJLFNBQ0Foakk7V0FEQTZsSTt5REFDQSxnREFBQTsrQkFBQTdsSTt5REFEQSxnREFBQTsyREFBQTthQUFBK2lJLFNBQ0EvaUk7V0FEQTRsSTt5REFBQSx1REFBQTtzQ0FDQTVsSTs7O1VBREErbEk7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQUM7eURBQ0EsZ0RBQUE7K0JBQUFybUk7eURBREEsZ0RBQUE7MkRBQUE7YUFBQThpSSxTQUNBOWlJO1dBREFxbUk7eURBQ0EsZ0RBQUE7K0JBQUFybUk7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTZpSSxTQUNBN2lJO1dBREFvbUk7eURBQ0EsZ0RBQUE7K0JBQUFwbUk7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTRpSSxTQUNBNWlJO1dBREFtbUk7eURBQ0EsZ0RBQUE7K0JBQUFubUk7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTJpSSxTQUNBM2lJO1dBREFrbUk7eURBQ0EsZ0RBQUE7K0JBQUFsbUk7eURBREEsZ0RBQUE7MkRBQUE7YUFBQTBpSSxTQUNBMWlJO1dBREFpbUk7eURBQ0EsZ0RBQUE7K0JBQUFqbUk7eURBREE7NkRBMERNO2FBMUROOEw7YUFBQXJJOzZEQTBETSxpREFBQTtrQ0F6RE56RDs0REFEQSxVQTBET2lCO2dFQUFBLGlEQUFBO3FDQXpEUGpCOzs2QkF5RE91TCxLQUFBdEs7aUVBQUEsR0FBQXNLO2tFQUFBLGlEQUFBO3VDQXpEUHZMO2lFQXlETyxpREFBQTtrRUExRFA7b0JBQUF5aUksU0FDQXppSTtrQkF5RE9pQjtpRUFBQTtpRUFBZ0I7Z0VBQWhCLGlEQUFBOzhDQUFBQTtnRUFBQSx3REFBQTs0Q0F6RFBqQjtnRUF5RHVCO2VBMUR2QnlEOzZEQTBETSxpREFBQTtrQ0F6RE56RDs0REFEQSxVQTBEeUJpQjtpRUFBQSxrREFBQTtxQ0F6RHpCakI7OzZCQXlEeUJ1TCxLQUFBdEs7a0VBQUEsR0FBQXNLO21FQUFBLGtEQUFBO3VDQXpEekJ2TDtrRUF5RHlCLGtEQUFBO2tFQTFEekI7b0JBQUF3aUksU0FDQXhpSTtrQkF5RHlCaUI7a0VBQUE7aUVBQWdCO2lFQUFoQixrREFBQTs4Q0FBQUE7aUVBQUEseURBQUE7NENBekR6QmpCO2dFQXlEeUM7ZUExRHpDOEw7NERBQUEsdURBQUE7eUNBQ0E5TDs2REF5RDBDO1lBMUQxQ2dtSTt5REFDQSxnREFBQTsrQkFBQWhtSTt5REFEQSxnREFBQTs0REEyRE07aUNBMUROQTtXQURBK2xJO3lEQUFBLHVEQUFBO3NDQUNBL2xJOztzREEyREs7O0tBNURMbkM7Y0FDQW9EO3NEQUFBLHVEQUFBO3lDQURBdkQsSUFDQXVEO3NEQTJESztZQTVETHVMO29EQUFBLE9BQUF1NEY7cURBK0RxQjtZQS9EckIvL0Y7b0RBQUEsT0FBQXRIO3FEQStEcUI7O0tBL0RyQm1uRztjQTZEQTdrRzt1REFBQTtPQTdEQWtxQjtPQUFBcGU7T0FBQXJJO3VEQTZEQSxpREFBQTs0QkFBQXpEO3NEQTdEQSxnREFBQTt3REFBQTtVQUFBZ0YsU0E2REFoRjtRQTdEQXlEO3VEQTZEQSxpREFBQTs0QkFBQXpEO3NEQTdEQSxVQThEWWlCOzJEQUFBLGtEQUFBOytCQURaakI7O3VCQUNZdUwsS0FBQXRLOzREQUFBLEdBQUFzSzs2REFBQSxrREFBQTtpQ0FEWnZMOzREQUNZLGtEQUFBOzREQTlEWjtjQUFBd00sU0E2REF4TTtZQUNZaUI7NERBQUE7MkRBQVU7MkRBQVYsa0RBQUE7d0NBQUFBOzJEQUFBLHlEQUFBO3NDQURaakI7MERBQ3NCO1NBOUR0QjhMO3VEQTZEQSxpREFBQTs0QkFBQTlMO3NEQTdEQSxnREFBQTswREE4RHdCOzhCQUR4QkE7UUE3REFrcUI7c0RBQUEsdURBQUE7bUNBNkRBbHFCO3VEQUM0Qjs7S0E5RDVCOGtHO2NBNkRBN2pHO3VEQUFBLHdEQUFBO3lDQTdEQTRqRyxTQTZEQTVqRzt1REFDNEI7WUE5RDVCc1Q7b0RBQUE7cURBK0RxQjs7S0EvRHJCd3dGO2NBK0RBL2tHO3NEQS9EQSx1REFBQTtlQUFBdVUsU0ErREF2VTt1REFBcUI7O0tBL0RyQmdsRztjQStEQS9qRzt1REFBQSx3REFBQTt5Q0EvREE4akcsU0ErREE5akc7dURBQXFCOztJQTlEckIvRDtJQTREQTBzRztJQUVBQzs7S0E5REEzc0c7Y0FBQW9wSTtpQjs7Z0JBQUFBO21CQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4RkFBQSx1REFBQTtvRkFBQW5FLGtCQUFBbUU7OzZGQUFBLHVEQUFBO21GQUFBbkUsa0JBQUFtRTs7NEZBQUEsdURBQUE7a0ZBQUFuRSxrQkFBQW1FOzsyRkFBQSx1REFBQTtpRkFBQW5FLGtCQUFBbUU7OzBGQUFBOzt5RkFBQSx1REFBQTsrRUFBQW5FLGtCQUFBbUU7O3dGQUFBLHVEQUFBOzhFQUFBbkUsa0JBQUFtRTs7dUZBQUEsdURBQUE7NkVBQUFuRSxrQkFBQW1FOztzRkFBQSx1REFBQTs0RUFBQW5FLGtCQUFBbUU7O3FGQUFBLHVEQUFBOzJFQUFBbkUsa0JBQUFtRTs7b0ZBQUEsdURBQUE7MEVBQUFuRSxrQkFBQW1FOzttRkFBQSx1REFBQTt5RUFBQW5FLGtCQUFBbUU7O2tGQUFBLHVEQUFBO3dFQUFBbkUsa0JBQUFtRTs7aUZBQUEsdURBQUE7dUVBQUFuRSxrQkFBQW1FOztnRkFBQSx1REFBQTtzRUFBQW5FLGtCQUFBbUU7OytFQUFBLHVEQUFBO3FFQUFBbkUsa0JBQUFtRTs7OEVBQUEsdURBQUE7b0VBQUFuRSxrQkFBQW1FOzs2RUFBQSx1REFBQTttRUFBQW5FLGtCQUFBbUU7OzRFQUFBLHVEQUFBO2tFQUFBbkUsa0JBQUFtRTs7MkVBQUEsdURBQUE7aUVBQUFuRSxrQkFBQW1FOzswRUFBQSx1REFBQTtnRUFBQW5FLGtCQUFBbUU7O3lFQUFBLHVEQUFBOytEQUFBbkUsa0JBQUFtRTs7d0VBQUEsdURBQUE7OERBQUFuRSxrQkFBQW1FOzt1RUFBQSx1REFBQTs2REFBQW5FLGtCQUFBbUU7O3NFQUFBLHVEQUFBOzREQUFBbkUsa0JBQUFtRTs7cUVBQUEsdURBQUE7MkRBQUFuRSxrQkFBQW1FOztvRUFBQSx1REFBQTswREFBQW5FLGtCQUFBbUU7O21FQUFBLHVEQUFBO3lEQUFBbkUsa0JBQUFtRTs7a0VBQUEsdURBQUE7d0RBQUFuRSxrQkFBQW1FOztpRUFBQSx1REFBQTt1REFBQW5FLGtCQUFBbUU7O2dFQUFBLHVEQUFBO3NEQUFBbkUsa0JBQUFtRTs7K0RBQUEsdURBQUE7cURBQUFuRSxrQkFBQW1FOzs4REFBQSx1REFBQTtvREFBQW5FLGtCQUFBbUU7OzZEQUFBLHVEQUFBO21EQUFBbkUsa0JBQUFtRTs7NERBQUEsdURBQUE7a0RBQUFuRSxrQkFBQW1FOzsyREFBQSx1REFBQTtpREFBQW5FLGtCQUFBbUU7OzBEQUFBLHVEQUFBO2dEQUFBbkUsa0JBQUFtRTs7eURBQUEsdURBQUE7K0NBQUFuRSxrQkFBQW1FOzt3REFBQSx1REFBQTs4Q0FBQW5FLGtCQUFBbUU7O2tCQUFBQTs7d0RBQUEsdURBQUE7OENBQUFuRSxrQkFBQW1FOzs7d0RBQUEsdURBQUE7OENBQUFuRSxrQkFBQW1FO1dBQUFDLDhDQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2RUFBQUE7Ozs4RUFBQUE7OzswRUFBQUE7MEVBQUFBOzBFQUFBQTs7MEVBQUFBOzBFQUFBQTswRUFBQUE7MEVBQUFBO3dFQUFBQTs7O3lFQUFBQTs7eUVBQUFBOzt5RUFBQUE7Ozt3RUFBQUE7Ozs7c0VBQUFBOzt5RUFBQUE7O3lFQUFBQTt5RUFBQUE7dUVBQUFBOzs7NkVBQUFBOzt5RUFBQUE7eUVBQUFBO3lFQUFBQTt5RUFBQUE7eUVBQUFBOzt5RUFBQUE7O3lFQUFBQTt5RUFBQUE7dUVBQUFBOzs7O3dFQUFBQTt3RUFBQUE7d0VBQUFBO3dFQUFBQTt3RUFBQUE7O3dFQUFBQTs7d0VBQUFBO3dFQUFBQTtzRUFBQUE7Ozs2RUFBQUE7OzhFQUFBQTs7OzBFQUFBQTs7MEVBQUFBOzBFQUFBQTswRUFBQUE7MEVBQUFBOzBFQUFBQTs7MEVBQUFBOzswRUFBQUE7O3dFQUFBQTs7O3lFQUFBQTt5RUFBQUE7eUVBQUFBOzt5RUFBQUE7O3lFQUFBQTs7eUVBQUFBOzt5RUFBQUE7O3lFQUFBQTs7dUVBQUFBOzs7OzhFQUFBQTs7OzBFQUFBQTs7MEVBQUFBOzBFQUFBQTswRUFBQUE7OzBFQUFBQTswRUFBQUE7OzBFQUFBQTs7MEVBQUFBO3dFQUFBQTs7O3lFQUFBQTt5RUFBQUE7O3lFQUFBQTs7eUVBQUFBOzs7O3NFQUFBQTs7OztzRUFBQUE7O3lFQUFBQTs7eUVBQUFBO3VFQUFBQTs7OztpREFBQXBrRTs2RkFBQTsrQ0FBQUE7eURBQUFBOzs7O2dHQUFBO2lEQUFBcWtFO2lEQUFBQztpREFBQXJrRSxXQUFBRDtpR0FBQXFRO21HQUFBO3VFQUFBcFE7aUdBQUFza0U7bUdBQUE7d0VBQUFEO2lHQUFBRTttR0FBQTtxREFBQXpwSSxXQUFBc3BJO2dHQUFBO3dEQUFBaDBEO3dEQUFBazBEO3dEQUFBQzs7Ozs2RkFBQSx1REFBQTs7c0RBQUF4RTtzREFBQW9FO3NEQUFBRDs7Z0RBQUExckQ7NEZBQUE7OENBQUFBO3dEQUFBQTs7OEZBQUE7K0NBQUFnc0Q7K0NBQUEvckQsV0FBQUQ7K0ZBQUFpc0Q7aUdBQUE7bURBQUEzcEksV0FBQTI5RTsrRkFBQWlzRDtpR0FBQTt3RUFBQUY7OEZBQUE7c0RBQUFDO3NEQUFBQzs7OzRGQUFBLHVEQUFBOztxREFBQTNFO3FEQUFBb0U7cURBQUFEOzsrQ0FBQTl5QjsyRkFBQTs2Q0FBQUE7dURBQUFBOzs2RkFBQTs4Q0FBQUU7OENBQUFDLFdBQUFIOzhGQUFBdXpCO2dHQUFBO3VFQUFBcHpCOzhGQUFBcXpCO2dHQUFBO2tEQUFBOXBJLFdBQUF3Mkc7NkZBQUE7cURBQUFxekI7cURBQUFDOzs7MkZBQUEsdURBQUE7O29EQUFBN0U7b0RBQUFvRTtvREFBQUQ7OzhDQUFBVzswRkFBQTs0Q0FBQUE7c0RBQUFBOzs7Ozs7OzsrRkFBQTtnREFBQUM7Z0RBQUFDO2dEQUFBQztnREFBQUM7Z0RBQUFDLFdBQUFMO2dHQUFBTTtrR0FBQTswRUFBQUQ7Z0dBQUFFO2tHQUFBOzhFQUFBSDtnR0FBQUk7a0dBQUE7dUVBQUFMO2dHQUFBTTtrR0FBQTtvREFBQXhxSSxXQUFBaXFJOzs7eURBQUFEOzREQUFBQTs7OzttR0ErQk07b0RBQUFTO29EQUFBQztvR0FBQWg1QjtzR0FBQTs4RkFBQWc1QjtvR0FBQS80QjtzR0FBQTs4RkFBQTg0QjtvR0FBQTswREFBQS80QixVQUFBQztvREEvQk5nNUI7Ozs7OztpREFBQUE7bUdBK0JNO2tGQS9CTjFGLHFCQUFBK0U7OytGQUFBO3VEQUFBSzt1REFBQUM7dURBQUFDO3VEQUFBQzt1REFBQUc7Ozs7OzswRkFBQSx1REFBQTs7bURBQUExRjttREFBQW9FO21EQUFBRDs7eUZBQUEsdURBQUE7K0VBQUFuRSxrQkFBQW1FOzs0Q0FBQXdCO3dGQUFBOzBDQUFBQTtvREFBQUE7Ozs7Ozs0RkFBQTs2Q0FBQUM7NkNBQUFDOzZDQUFBQzs2Q0FBQUMsV0FBQUo7NkZBQUFLOytGQUFBOzRFQUFBRDs2RkFBQUU7K0ZBQUE7dUVBQUFIOzZGQUFBSTsrRkFBQTs4RUFBQUw7NkZBQUFNOytGQUFBO2lEQUFBcHJJLFdBQUE2cUk7NEZBQUE7b0RBQUFJO29EQUFBQztvREFBQUM7b0RBQUFDOzs7Ozt3RkFBQSx1REFBQTs7aURBQUFuRztpREFBQW9FO2lEQUFBRDs7MkNBQUFpQzt1RkFBQTt5Q0FBQUE7bURBQUFBOzt5RkFBQTswQ0FBQUM7MENBQUFDLFdBQUFGOzBGQUFBRzs0RkFBQTs4Q0FBQXhySSxXQUFBdXJJOzBGQUFBRTs0RkFBQTsrREFBQUg7eUZBQUE7aURBQUFFO2lEQUFBQzs7O3VGQUFBLHVEQUFBOztnREFBQXhHO2dEQUFBb0U7Z0RBQUFEOzswQ0FBQXNDO3NGQUFBO3dDQUFBQTtrREFBQUE7O3dGQUFBO3lDQUFBcnRHO3lDQUFBNVksV0FBQWltSDt5RkFBQXB0RzsyRkFBQTs2Q0FBQXQrQixXQUFBeWxCO3lGQUFBOFk7MkZBQUE7a0VBQUFGO3dGQUFBO2dEQUFBQztnREFBQUM7OztzRkFBQSx1REFBQTs7K0NBQUEwbUc7K0NBQUFvRTsrQ0FBQUQ7O3lDQUFBdUM7cUZBQUE7dUNBQUFBO2lEQUFBQTs7dUZBQUE7d0NBQUFDO3dDQUFBdGlGLFdBQUFxaUY7d0ZBQUFFOzBGQUFBO2lFQUFBdmlGO3dGQUFBd2lGOzBGQUFBOzRDQUFBOXJJLFdBQUE0ckk7dUZBQUE7K0NBQUFDOytDQUFBQzs7O3FGQUFBLHVEQUFBOzs4Q0FBQTdHOzhDQUFBb0U7OENBQUFEOzt3Q0FBQTJDO29GQUFBO3NDQUFBQTtnREFBQUE7O3NGQUFBO3VDQUFBQzt1Q0FBQUMsV0FBQUY7dUZBQUF2NUI7eUZBQUE7bUVBQUF5NUI7dUZBQUFDO3lGQUFBOzJDQUFBbHNJLFdBQUFnc0k7c0ZBQUE7OENBQUF4NUI7OENBQUEwNUI7OztvRkFBQSx1REFBQTs7NkNBQUFqSDs2Q0FBQW9FOzZDQUFBRDs7dUNBQUErQzttRkFBQTtxQ0FBQUE7K0NBQUFBOztxRkFBQTtzQ0FBQXR3RDtzQ0FBQUMsV0FBQXF3RDtzRkFBQUM7d0ZBQUE7MENBQUFwc0ksV0FBQTg3RTs7OytDQUFBRDtrREFBQUE7Ozs7MEZBdUJhOzBDQUFBd3dEOzBDQUFBQzsyRkFBQUM7NkZBQUE7b0ZBQUFEOzJGQUFBRTs2RkFBQTtvRkFBQUg7MkZBQUE7Z0RBQUFFLFVBQUFDOzBDQXZCYkM7Ozs7Ozt1Q0FBQUE7MEZBdUJhO3dFQXZCYnhILHFCQUFBcHBEOztxRkFBQTs2Q0FBQXV3RDs2Q0FBQUs7OzttRkFBQSx1REFBQTs7NENBQUF4SDs0Q0FBQW9FOzRDQUFBRDs7c0NBQUFzRDtrRkFBQTtvQ0FBQUE7OENBQUFBOzs7Ozs7c0ZBQUE7dUNBQUFDO3VDQUFBQzt1Q0FBQUM7dUNBQUFDLFdBQUFKO3VGQUFBMTNEO3lGQUFBOytEQUFBODNEO3VGQUFBQzt5RkFBQTs4REFBQUY7dUZBQUFHO3lGQUFBOzJDQUFBaHRJLFdBQUE0c0k7dUZBQUFLO3lGQUFBOzhFQUFBTjtzRkFBQTs4Q0FBQTMzRDs4Q0FBQSszRDs4Q0FBQUM7OENBQUFDOzs7OztrRkFBQSx1REFBQTs7MkNBQUFoSTsyQ0FBQW9FOzJDQUFBRDs7cUNBQUE4RDtpRkFBQTttQ0FBQUE7NkNBQUFBOzs7Ozs7cUZBQUE7c0NBQUFDO3NDQUFBQztzQ0FBQUM7c0NBQUFDLFdBQUFKO3NGQUFBSzt3RkFBQTsyREFBQUQ7c0ZBQUFFO3dGQUFBOzBDQUFBeHRJLFdBQUFxdEk7c0ZBQUFJO3dGQUFBOytEQUFBTDtzRkFBQU07d0ZBQUE7K0RBQUFQO3FGQUFBOzZDQUFBSTs2Q0FBQUM7NkNBQUFDOzZDQUFBQzs7Ozs7aUZBQUEsdURBQUE7OzBDQUFBekk7MENBQUFvRTswQ0FBQUQ7O29DQUFBdUU7Z0ZBQUE7a0NBQUFBOzRDQUFBQTs7Ozs7O29GQUFBO3FDQUFBQztxQ0FBQUM7cUNBQUFDO3FDQUFBNzJELFdBQUEwMkQ7cUZBQUFJO3VGQUFBOzBEQUFBOTJEO3FGQUFBKzJEO3VGQUFBOzhEQUFBRjtxRkFBQUc7dUZBQUE7eUNBQUFqdUksV0FBQTZ0STtxRkFBQUs7dUZBQUE7OERBQUFOO29GQUFBOzRDQUFBRzs0Q0FBQUM7NENBQUFDOzRDQUFBQzs7Ozs7Z0ZBQUEsdURBQUE7O3lDQUFBako7eUNBQUFvRTt5Q0FBQUQ7O21DQUFBK0U7K0VBQUE7aUNBQUFBOzJDQUFBQTs7Ozs7O21GQUFBO29DQUFBQztvQ0FBQUM7b0NBQUFDO29DQUFBdm1FLFdBQUFvbUU7b0ZBQUFJO3NGQUFBO3lEQUFBeG1FO29GQUFBeW1FO3NGQUFBOzZEQUFBRjtvRkFBQUc7c0ZBQUE7NkRBQUFKO29GQUFBSztzRkFBQTt3Q0FBQTF1SSxXQUFBb3VJO21GQUFBOzJDQUFBRzsyQ0FBQUM7MkNBQUFDOzJDQUFBQzs7Ozs7K0VBQUEsdURBQUE7O3dDQUFBeko7d0NBQUFvRTt3Q0FBQUQ7O2tDQUFBdUY7OEVBQUE7Z0NBQUFBOzBDQUFBQTs7OztpRkFBQTtrQ0FBQXAwQjtrQ0FBQUM7a0NBQUFDLFdBQUFrMEI7a0ZBQUFscUQ7b0ZBQUE7NERBQUFnMkI7a0ZBQUFDO29GQUFBO21FQUFBRjtrRkFBQUc7b0ZBQUE7c0NBNERBak8sY0E1REE2TjtpRkFBQTt5Q0FBQTkxQjt5Q0FBQWkyQjt5Q0FBQUM7Ozs7OEVBQUEsdURBQUE7O3VDQUFBc3FCO3VDQUFBb0U7dUNBQUFEOztpQ0FBQXdGOzZFQUFBOytCQUFBQTt5Q0FBQUE7Ozs7Ozs7Ozs7OztvRkFBQTtxQ0FBQUM7cUNBQUFDO3FDQUFBQztxQ0FBQUM7cUNBQUFDO3FDQUFBaDBCO3FDQUFBQyxXQUFBMHpCO3FGQUFBTTt1RkFBQTs4REFBQWgwQjtxRkFBQWkwQjt1RkFBQTsrREFBQWwwQjtxRkFBQW0wQjt1RkFBQTtzRUFBQUg7cUZBQUFJO3VGQUFBOzZEQUFBTDtxRkFBQU07dUZBQUE7eUNBQUF0dkksV0FBQSt1STs7OzhDQUFBRDtpREFBQUE7Ozs7eUZBeURNO3lDQUFBUzt5Q0FBQUM7MEZBQUFDOzRGQUFBO21GQUFBRDswRkFBQUU7NEZBQUE7bUZBQUFIOzBGQUFBOytDQUFBRSxVQUFBQzt5Q0F6RE5DOzs7Ozs7c0NBQUFBO3lGQXlETTt1RUF6RE4xSyxxQkFBQTZKOztvRkFBQSxnREFBQTtxQ0FBQWM7dUZBQUE7MERBQUFmO29GQUFBOzRDQUFBSzs0Q0FBQUM7NENBQUFDOzRDQUFBQzs0Q0FBQUM7NENBQUFLOzRDQUFBQzs7Ozs7Ozs7NkVBQUEsdURBQUE7O3NDQUFBM0s7c0NBQUFvRTtzQ0FBQUQ7O2dDQUFBeUc7NEVBQUE7OEJBQUFBO3dDQUFBQTs7OEVBQUE7K0JBQUFDOytCQUFBQyxXQUFBRjsrRUFBQUc7aUZBQUE7bUNBQUFod0ksV0FBQSt2STsrRUFBQUU7aUZBQUE7c0VBQUFIOzhFQUFBO3NDQUFBRTtzQ0FBQUM7Ozs0RUFBQSx1REFBQTs7cUNBQUFoTDtxQ0FBQW9FO3FDQUFBRDs7K0JBQUEza0U7MkVBQUE7NkJBQUFBO3VDQUFBQTs7Ozs4RUFBQTsrQkFBQXlyRTsrQkFBQUM7K0JBQUF6ckUsV0FBQUQ7K0VBQUEyckU7aUZBQUE7dURBQUExckU7K0VBQUEyckU7aUZBQUE7bUNBQUFyd0ksV0FBQW13STsrRUFBQUc7aUZBQUE7d0RBQUFKOzhFQUFBO3NDQUFBRTtzQ0FBQUM7c0NBQUFDOzs7OzJFQUFBLHVEQUFBOztvQ0FBQXJMO29DQUFBb0U7b0NBQUFEOzs4QkFBQW1IOzBFQUFBOzRCQUFBQTtzQ0FBQUE7Ozs7NkVBQUE7OEJBQUFDOzhCQUFBQzs4QkFBQWhhLFdBQUE4Wjs4RUFBQTF0RTtnRkFBQTtzREFBQTR6RDs4RUFBQTN6RDtnRkFBQTt1REFBQTJ0RTs4RUFBQUM7Z0ZBQUE7a0NBQUExd0ksV0FBQXd3STs2RUFBQTtxQ0FBQTN0RTtxQ0FBQUM7cUNBQUE0dEU7Ozs7MEVBQUEsdURBQUE7O21DQUFBekw7bUNBQUFvRTttQ0FBQUQ7OzZCQUFBdUg7eUVBQUE7MkJBQUFBO3FDQUFBQTs7Ozs0RUFBQTs2QkFBQUM7NkJBQUFDOzZCQUFBQyxXQUFBSDs2RUFBQUk7K0VBQUE7NERBQUFEOzZFQUFBRTsrRUFBQTtpQ0FBQWh4SSxXQUFBNndJOzZFQUFBSTsrRUFBQTtzREFBQUw7NEVBQUE7b0NBQUFHO29DQUFBQztvQ0FBQUM7Ozs7eUVBQUEsdURBQUE7O2tDQUFBaE07a0NBQUFvRTtrQ0FBQUQ7OzRCQUFBN3NEO3dFQUFBOzBCQUFBQTtvQ0FBQUE7Ozs7MkVBQUE7NEJBQUEyMEQ7NEJBQUFDOzRCQUFBMzBELFdBQUFEOzRFQUFBNjBEOzhFQUFBOzJEQUFBNTBEOzRFQUFBNjBEOzhFQUFBO3FEQUFBRjs0RUFBQUc7OEVBQUE7Z0NBQUF0eEksV0FBQWt4STsyRUFBQTttQ0FBQUU7bUNBQUFDO21DQUFBQzs7Ozt3RUFBQSx1REFBQTs7aUNBQUFyTTtpQ0FBQW9FO2lDQUFBRDs7MkJBQUFtSTt1RUFBQTt5QkFBQUE7bUNBQUFBOzs7OzBFQUFBOzJCQUFBQzsyQkFBQUM7MkJBQUFDLFdBQUFIOzJFQUFBSTs2RUFBQTsrQkFBQTN4SSxXQUFBMHhJOzJFQUFBRTs2RUFBQTtrREFBQUg7MkVBQUFJOzZFQUFBO2tEQUFBTDswRUFBQTtrQ0FBQUc7a0NBQUFDO2tDQUFBQzs7Ozt1RUFBQSx1REFBQTs7Z0NBQUE1TTtnQ0FBQW9FO2dDQUFBRDs7MEJBQUEwSTtzRUFBQTt3QkFBQUE7a0NBQUFBOzt3RUFBQTt5QkFBQUM7eUJBQUE5Z0UsV0FBQTZnRTt5RUFBQXJwRjsyRUFBQTtpREFBQXdvQjt5RUFBQTArQjsyRUFBQTs2QkFBQTN2RyxXQUFBK3hJO3dFQUFBO2dDQUFBdHBGO2dDQUFBa25EOzs7c0VBQUEsdURBQUE7OytCQUFBczFCOytCQUFBb0U7K0JBQUFEOzt5QkFBQS90RDtxRUFBQTt1QkFBQUE7aUNBQUFBOzt1RUFBQTt3QkFBQTIyRDt3QkFBQTEyRCxXQUFBRDt3RUFBQTQyRDswRUFBQTs0QkFBQWp5SSxXQUFBczdFO3dFQUFBNDJEOzBFQUFBO2lEQUFBRjt1RUFBQTsrQkFBQUM7K0JBQUFDOzs7cUVBQUEsdURBQUE7OzhCQUFBak47OEJBQUFvRTs4QkFBQUQ7O3dCQUFBK0k7b0VBQUE7c0JBQUFBO2dDQUFBQTs7c0VBQUE7dUJBQUFDO3VCQUFBQyxXQUFBRjt1RUFBQUc7eUVBQUE7Z0RBQUFEO3VFQUFBRTt5RUFBQTsyQkFBQXZ5SSxXQUFBb3lJO3NFQUFBOzhCQUFBRTs4QkFBQUM7OztvRUFBQSx1REFBQTs7NkJBQUF0Tjs2QkFBQW9FOzZCQUFBRDs7dUJBQUFvSjtzQkFBQUEsbUJBQUFBO29FQUFBO3FCQUFBQyxXQUFBRDtxRUFBQUU7dUVBQUE7eUJBNERBaG1DLGNBNURBK2xDO29FQUFBOzRCQUFBQzs7bUVBQUEsdURBQUE7OzRCQUFBek47NEJBQUFvRTs0QkFBQUQ7O3NCQUFBdUo7a0VBQUE7b0JBQUFBOzhCQUFBQTs7Ozs7Ozs7dUVBQUE7d0JBQUFDO3dCQUFBQzt3QkFBQUM7d0JBQUFDO3dCQUFBQyxXQUFBTDt3RUFBQTE0QjswRUFBQTtpREFBQSs0Qjt3RUFBQTk0QjswRUFBQTtnREFBQTY0Qjt3RUFBQUU7MEVBQUE7NEJBQUFqekksV0FBQTh5STs7O2lDQUFBRDtvQ0FBQUE7Ozs7MkVBK0NNOzRCQUFBSzs0QkFBQTl2RDs0RUFBQSt2RDs4RUFBQTtzRUFBQS92RDs0RUFBQWd3RDs4RUFBQTtzRUFBQUY7NEVBQUE7a0NBQUFDLFVBQUFDOzRCQS9DTkM7Ozs7Ozt5QkFBQUE7MkVBK0NNOzBEQS9DTnBPLHFCQUFBNE47O3VFQUFBLGdEQUFBO3dCQUFBUzswRUFBQTs2Q0FBQVY7dUVBQUE7K0JBQUEzNEI7K0JBQUFDOytCQUFBKzRCOytCQUFBSTsrQkFBQUM7Ozs7OztrRUFBQSx1REFBQTs7MkJBQUFyTzsyQkFBQW9FOzJCQUFBRDs7cUJBQUFtSztpRUFBQTttQkFBQUE7NkJBQUFBOzs7O29FQUFBO3FCQUFBQztxQkFBQUM7cUJBQUFDLFdBQUFIO3FFQUFBSTt1RUFBQTt5QkFBQTN6SSxXQUFBMHpJO3FFQUFBRTt1RUFBQTs0Q0FBQUg7cUVBQUFJO3VFQUFBOzRDQUFBTDtvRUFBQTs0QkFBQUc7NEJBQUFDOzRCQUFBQzs7OztpRUFBQSx1REFBQTs7MEJBQUE1TzswQkFBQW9FOzBCQUFBRDs7b0JBQUEwSztnRUFBQTtrQkFBQUE7NEJBQUFBOztrRUFBQTttQkFBQUM7bUJBQUFDLFdBQUFGO21FQUFBemlFO3FFQUFBOzRDQUFBMmlFO21FQUFBQztxRUFBQTt1QkFBQWowSSxXQUFBK3pJO2tFQUFBOzBCQUFBMWlFOzBCQUFBNGlFOzs7Z0VBQUEsdURBQUE7O3lCQUFBaFA7eUJBQUFvRTt5QkFBQUQ7O21CQUFBOEs7K0RBQUE7aUJBQUFBOzJCQUFBQTs7aUVBQUE7a0JBQUF2dUU7a0JBQUFDLFdBQUFzdUU7a0VBQUFydUU7b0VBQUE7c0JBQUE3bEUsV0FBQTRsRTtrRUFBQUU7b0VBQUE7MkNBQUFIO2lFQUFBO3lCQUFBRTt5QkFBQUM7OzsrREFBQSx1REFBQTs7d0JBQUFtL0Q7d0JBQUFvRTt3QkFBQUQ7O2tCQUFBK0s7OERBQUE7Z0JBQUFBOzBCQUFBQTs7Z0VBQUE7aUJBQUFDO2lCQUFBQyxXQUFBRjtpRUFBQXo5RDttRUFBQTswQ0FBQTI5RDtpRUFBQUM7bUVBQUE7cUJBQUF0MEksV0FBQW8wSTtnRUFBQTt3QkFBQTE5RDt3QkFBQTQ5RDs7OzhEQUFBLHVEQUFBOzt1QkFBQXJQO3VCQUFBb0U7dUJBQUFEOztpQkFBQW1MOzZEQUFBLEdBQUFBO3lCQUFBQTs7K0RBQUE7Z0JBQUFDO2dCQUFBQyxXQUFBRjtnRUFBQUc7a0VBQUE7cUNBQUFEO2dFQUFBRTtrRUFBQTtvQkFBQTMwSSxXQUFBdzBJOytEQUFBO3VCQUFBRTt1QkFBQUM7Ozs2REFBQSx1REFBQTs7c0JBQUExUDtzQkFBQW9FO3NCQUFBRDs7Z0JBQUF3TDs0REFBQSxHQUFBQTt3QkFBQUE7Ozs7K0RBQUE7Z0JBQUFDO2dCQUFBQztnQkFBQTc4RCxXQUFBMjhEO2dFQUFBeDhEO2tFQUFBOytDQUFBSDtnRUFBQTg4RDtrRUFBQTtvQkFBQS8wSSxXQUFBODBJO2dFQUFBRTtrRUFBQTt5Q0FBQUg7K0RBQUE7dUJBQUF6OEQ7dUJBQUEyOEQ7dUJBQUFDOzs7OzREQUFBLHVEQUFBOztxQkFBQS9QO3FCQUFBb0U7cUJBQUFEOztlQUFBMTZCOzJEQUFBLEdBQUFBO3VCQUFBQTs7Ozs4REFBQTtlQUFBdW1DO2VBQUFDO2VBQUF2bUMsV0FBQUQ7K0RBQUExdUI7aUVBQUE7OENBQUEydUI7K0RBQUF3bUM7aUVBQUE7d0NBQUFEOytEQUFBRTtpRUFBQTttQkFBQXAxSSxXQUFBaTFJOzhEQUFBO3NCQUFBajFEO3NCQUFBbTFEO3NCQUFBQzs7OzsyREFBQSx1REFBQTs7b0JBQUFuUTtvQkFBQW9FO29CQUFBRDs7Y0FBQWx1RDswREFBQSxHQUFBQTtzQkFBQUE7Ozs7NkRBQUE7Y0FBQW02RDtjQUFBQztjQUFBbjZELFdBQUFEOzhEQUFBcTZEO2dFQUFBOzZDQUFBcDZEOzhEQUFBcTZEO2dFQUFBO2tCQUFBeDFJLFdBQUFzMUk7OERBQUFHO2dFQUFBO3VDQUFBSjs2REFBQTtxQkFBQUU7cUJBQUFDO3FCQUFBQzs7OzswREFBQSx1REFBQTs7bUJBQUF4UTttQkFBQW9FO21CQUFBRDs7YUFBQXNNO3lEQUFBLEdBQUFBO3FCQUFBQTs7Ozs0REFBQTthQUFBQzthQUFBQzthQUFBQyxXQUFBSDs2REFBQUk7K0RBQUE7NENBQUFEOzZEQUFBRTsrREFBQTtzQ0FBQUg7NkRBQUFJOytEQUFBO2lCQUFBaDJJLFdBQUEyMUk7NERBQUE7b0JBQUFHO29CQUFBQztvQkFBQUM7Ozs7eURBQUEsdURBQUE7O2tCQUFBL1E7a0JBQUFvRTtrQkFBQUQ7O1lBQUE2TTt3REFBQSxHQUFBQTtvQkFBQUE7Ozs7MkRBQUE7WUFBQUM7WUFBQUM7WUFBQUMsV0FBQUg7NERBQUFJOzhEQUFBOzJDQUFBRDs0REFBQUU7OERBQUE7Z0JBQUF0MkksV0FBQW0ySTs0REFBQUk7OERBQUE7cUNBQUFMOzJEQUFBO21CQUFBRzttQkFBQUM7bUJBQUFDOzs7O3dEQUFBLHVEQUFBOztpQkFBQXRSO2lCQUFBb0U7aUJBQUFEOztXQUFBb047dURBQUEsR0FBQUE7bUJBQUFBOzs7OzBEQUFBO1dBQUFDO1dBQUFDO1dBQUFDLFdBQUFIOzJEQUFBSTs2REFBQTswQ0FBQUQ7MkRBQUFFOzZEQUFBO29DQUFBSDsyREFBQUk7NkRBQUE7ZUFBQTkySSxXQUFBeTJJOzBEQUFBO2tCQUFBRztrQkFBQUM7a0JBQUFDOzs7O3VEQUFBLHVEQUFBOztnQkFBQTdSO2dCQUFBb0U7Z0JBQUFEOztzREFBQSx1REFBQTs0Q0FBQW5FLGtCQUFBbUU7OztLQTREQTE4QjtjQUFBcXFDO3VEQUFBOztnQkFBQUE7bUJBQUFBOzs7Ozt5REFBQSx3REFBQTs4Q0FBQTdSLGtCQUFBNlI7O2tCQUFBQTs7eURBQUEsd0RBQUE7OENBQUE3UixrQkFBQTZSOzs7eURBQUEsd0RBQUE7OENBQUE3UixrQkFBQTZSO1dBQUFDOzs4QkFBQUE7aUNBQUFBOztXQUFBQzt3REFBQSxHQUFBQTttQkFBQUE7Ozs7MkRBQUE7V0FBQUM7V0FBQUM7V0FBQUMsV0FBQUg7NERBQUFJOzhEQUFBO2VBNURBcjNJLFdBNERBbzNJOzREQUFBRTs4REFBQTtnQ0FFQTNxQyxjQUZBd3FDOzREQUFBSTs4REFBQTtnQ0FBQUw7MkRBQUE7a0JBQUFHO2tCQUFBQztrQkFBQUM7Ozs7d0RBQUEsd0RBQUE7O2dCQUFBclM7Z0JBQUE4UjtnQkFBQUQ7O3VEQUFBLHdEQUFBOzRDQUFBN1Isa0JBQUE2Ujt1REFDNEI7O0lBN0Q1QmozSTtJQTREQTA1RztJQUVBMkc7O0tBOURBcmdIOztzREFBQTs7dURBQ0k7Ozt5REFDQTtVQUFBdzhHO1VBQUFDOzBEQUFBaTdCOzREQUFBO2tDQUFBajdCOzBEQUFBazdCOzREQUFBO2NBRkozM0ksV0FFSXc4Rzt5REFBQTsrQkFBQWs3QixjQUFBQzs7eURBQ0E7VUFBQXJ3RDtVQUFBQzswREFBQUM7NERBQUE7bUNBQUFEOzBEQUFBRTs0REFBQTtjQUhKem5GLFdBR0lzbkY7eURBQUE7K0JBQUFFLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQzswREFBQUM7NERBQUE7Y0FKSjVuRixXQUlJMm5GOzBEQUFBRTs0REFBQTtrQ0FBQUg7eURBQUE7K0JBQUFFLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQzswREFBQUM7NERBQUE7a0NBQUFEOzBEQUFBRTs0REFBQTtjQUxKam9GLFdBS0k4bkY7eURBQUE7K0JBQUFFLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQztVQUFBQzswREFBQUM7NERBQUE7a0NBQUFEOzBEQUFBRTs0REFBQTtjQU5KdG9GLFdBTUltb0Y7MERBQUFJOzREQUFBO2tDQUFBTDt5REFBQTsrQkFBQUcsY0FBQUMsY0FBQUM7O3lEQUNBO1VBQUFxdkQ7VUFBQWp2RDtVQUFBQzswREFBQWl2RDs0REFBQTtrQ0FBQWp2RDswREFBQWt2RDs0REFBQTtrQ0FBQW52RDswREFBQW92RDs0REFBQTtjQVBKLzNJLFdBT0k0M0k7eURBQUE7K0JBQUFDLGNBQUFDLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQztVQUFBQztVQUFBQzswREFBQW42Qjs0REFBQTtrQ0FBQW02QjswREFBQWw2Qjs0REFBQTtpQ0FBQWk2QjswREFBQUU7NERBQUE7Y0FSSnA0SSxXQVFJaTRJOzBEQUFBSTs0REFBQTtpREFBQUw7eURBQUE7Ozs7bUJBQUFoNkI7dUJBQUFDLGNBQUFtNkIsY0FBQUM7O3lEQUNBO1VBQUFDO1VBQUFsNkI7VUFBQUM7MERBQUFrNkI7NERBQUE7Z0NBQUFsNkI7MERBQUFtNkI7NERBQUE7aUNBQUFwNkI7MERBQUFxNkI7NERBQUE7Y0FUSno0SSxXQVNJczRJO3lEQUFBOytCQUFBQyxjQUFBQyxjQUFBQzs7eURBQ0E7VUFBQUM7VUFBQWhvRDswREFBQWlvRDs0REFBQTtjQVZKMzRJLFdBVUkwd0Y7MERBQUFrb0Q7NERBQUE7a0NBQUFGO3lEQUFBOytCQUFBQyxjQUFBQzs7eURBQ0E7VUFBQUM7VUFBQUM7MERBQUE3cUQ7NERBQUE7a0NBQUE2cUQ7MERBQUFDOzREQUFBO2NBWEovNEksV0FXSTY0STt5REFBQTsrQkFBQTVxRCxjQUFBOHFEOzt5REFDQTtVQUFBQztVQUFBaDZCO1VBQUFDO1VBQUFDOzBEQUFBKzVCOzREQUFBOytCQUFBLzVCOzBEQUFBZzZCOzREQUFBO2NBWkpsNUksV0FZSWkvRzswREFBQWs2Qjs0REFBQTtrQ0FBQW42QjswREFBQW82Qjs0REFBQTtrQ0FBQUo7eURBQUE7Ozs7bUJBQUFDO3VCQUFBQyxjQUFBQyxjQUFBQzs7eURBQ0E7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQUM7MERBQUFDOzREQUFBOytCQUFBRDswREFBQUU7NERBQUE7a0NBQUFIOzBEQUFBSTs0REFBQTtjQWJKMzVJLFdBYUlzNUk7MERBQUFNOzREQUFBO2tDQUFBUDt5REFBQTs7OzttQkFBQUk7dUJBQUFDLGNBQUFDLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQztVQUFBQztVQUFBQzswREFBQUM7NERBQUE7K0JBQUFEOzBEQUFBRTs0REFBQTtrQ0FBQUg7MERBQUFJOzREQUFBO2tDQUFBTDswREFBQU07NERBQUE7Y0FkSnA2SSxXQWNJNjVJO3lEQUFBOzs7O21CQUFBSTt1QkFBQUMsY0FBQUMsY0FBQUM7O3lEQUNBO1VBQUFDO1VBQUE5NUI7VUFBQUM7MERBQUE4NUI7NERBQUE7eUNBQUE5NUI7MERBQUErNUI7NERBQUE7Y0FmSnY2SSxXQWVJdWdIOzBEQUFBaTZCOzREQUFBO2tDQUFBSDt5REFBQTsrQkFBQUMsY0FBQUMsY0FBQUM7O3lEQUNBO1VBQUFDO1VBQUFDO1VBQUFDOzBEQUFBQzs0REFBQTt5Q0FBQUQ7MERBQUFFOzREQUFBO2tDQUFBSDswREFBQUk7NERBQUE7Y0FoQko5NkksV0FnQkl5Nkk7eURBQUE7K0JBQUFHLGNBQUFDLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQztVQUFBQzswREFBQUM7NERBQUE7eUNBQUFEOzBEQUFBRTs0REFBQTtjQWpCSm43SSxXQWlCSWc3STswREFBQUk7NERBQUE7a0NBQUFMO3lEQUFBOytCQUFBRyxjQUFBQyxjQUFBQzs7eURBQ0E7VUFBQUM7VUFBQUM7VUFBQUM7MERBQUE3c0Q7NERBQUE7eUNBQUE2c0Q7MERBQUFDOzREQUFBO2tDQUFBRjswREFBQUc7NERBQUE7Y0FsQkp6N0ksV0FrQklxN0k7eURBQUE7K0JBQUEzc0QsY0FBQThzRCxjQUFBQzs7eURBQ0E7VUFBQUM7VUFBQUM7VUFBQUM7MERBQUFDOzREQUFBO3lDQUFBRDswREFBQUU7NERBQUE7Y0FuQko5N0ksV0FtQkkyN0k7MERBQUFJOzREQUFBO2tDQUFBTDt5REFBQTsrQkFBQUcsY0FBQUMsY0FBQUM7O3lEQUNBO1VBQUFDO1VBQUE1c0Q7VUFBQUM7MERBQUE0c0Q7NERBQUE7eUNBQUE1c0Q7MERBQUE2c0Q7NERBQUE7a0NBQUE5c0Q7MERBQUErc0Q7NERBQUE7Y0FwQkpuOEksV0FvQklnOEk7eURBQUE7K0JBQUFDLGNBQUFDLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQztVQUFBQzswREFBQXh0RDs0REFBQTt5Q0FBQXd0RDswREFBQXZ0RDs0REFBQTtjQXJCSi91RixXQXFCSXE4STswREFBQUU7NERBQUE7a0NBQUFIO3lEQUFBOytCQUFBdHRELGNBQUFDLGNBQUF3dEQ7O3lEQUNBO1VBQUFDO1VBQUFDO1VBQUFDOzBEQUFBQzs0REFBQTt5Q0FBQUQ7MERBQUFFOzREQUFBO2tDQUFBSDswREFBQUk7NERBQUE7Y0F0Qko3OEksV0FzQkl3OEk7eURBQUE7K0JBQUFHLGNBQUFDLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQzswREFBQUM7NERBQUE7Y0F2QkpoOUksV0F1QkkrOEk7VUFBU0UsV0FBVEg7VUFBU3BvQixXQUFUb29CO1VBQVNJLDJEQUFBeG9CO1VBQUF5b0IsMkRBQUFGO1VBQVRHLG1CQUFTRixjQUFBQzt5REFBVDsrQkFBQUgsY0FBQUk7O3lEQUNBO1VBQUFDO1VBQUFDOzBEQUFBeG9COzREQUFBOzhCQUFBd29COzBEQUFBQzs0REFBQTtjQXhCSnY5SSxXQXdCSXE5STt5REFBQTsrQkFBQXZvQixjQUFBeW9COzt5REFDQTtVQUFBQztVQUFBQzswREFBQXJyRDs0REFBQTtzQ0FBQXFyRDswREFBQUM7NERBQUE7Y0F6QkoxOUksV0F5Qkl3OUk7eURBQUE7K0JBQUFwckQsY0FBQXNyRDs7eURBQ0E7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQUM7MERBQUFDOzREQUFBO29DQUFBRDswREFBQUU7NERBQUE7d0NBQUFIOzBEQUFBSTs0REFBQTtpQ0FBQUw7MERBQUFNOzREQUFBO2NBMUJKbitJLFdBMEJJNDlJO1VBS0VRLFdBTEZUO1VBS0VVLFdBTEZWO1VBS0VuckQsMkRBQUE2ckQ7VUFBQUMsMkRBQUFGO1VBTEZHLG1CQUtFL3JELGNBQUE4ckQ7eURBTEY7Ozs7bUJBQUFOOztvQkFBQUM7d0JBQUFDLGNBQUFDLGNBQUFJOzt5REFPQTtVQUFBQztVQUFBQzswREFBQW5yRDs0REFBQTtjQWpDSnR6RixXQWlDSXkrSTswREFBQUM7NERBQUE7a0NBQUFGO3lEQUFBOytCQUFBbHJELGNBQUFvckQ7O3lEQUNBO1VBQUFDO1VBQUFDOzBEQUFBbHJEOzREQUFBO2tDQUFBa3JEOzBEQUFBQzs0REFBQTtjQWxDSjcrSSxXQWtDSTIrSTt5REFBQTsrQkFBQWpyRCxjQUFBbXJEOzt5REFDQTtVQUFBQztVQUFBQzswREFBQUM7NERBQUE7Y0FuQ0poL0ksV0FtQ0krK0k7MERBQUFFOzREQUFBO2tDQUFBSDt5REFBQTsrQkFBQUUsY0FBQUM7O3lEQUNBO1VBQUFDO1VBQUFDOzBEQUFBQzs0REFBQTtrQ0FBQUQ7MERBQUFFOzREQUFBO2NBcENKci9JLFdBb0NJay9JO3lEQUFBOytCQUFBRSxjQUFBQzs7eURBQ0E7VUFBQUM7VUFBQUM7MERBQUFDOzREQUFBO2NBckNKeC9JLFdBcUNJdS9JOzBEQUFBRTs0REFBQTsrQkFBQUg7eURBQUE7K0JBQUFFLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQztVQUFBQztVQUFBQzswREFBQUM7NERBQUE7eUNBQUFEOzBEQUFBRTs0REFBQTtvQ0FBQUg7MERBQUFJOzREQUFBOzJDQUFBTDswREFBQU07NERBQUE7Y0F0Q0pqZ0osV0FzQ0kwL0k7eURBQUE7Ozs7bUJBQUFJO3VCQUFBQyxjQUFBQyxjQUFBQzs7eURBQ0E7VUFBQUM7VUFBQUM7VUFBQUM7MERBQUFDOzREQUFBO2NBdkNKcmdKLFdBdUNJb2dKOzBEQUFBRTs0REFBQTtpQ0FBQUg7MERBQUFJOzREQUFBO2lDQUFBTDt5REFBQTsrQkFBQUcsY0FBQUMsY0FBQUM7O3lEQUNBO1VBQUFDO1VBQUFDO1VBQUFDOzBEQUFBQzs0REFBQTtjQXhDSjNnSixXQXdDSTBnSjswREFBQUU7NERBQUE7aUNBQUFIOzBEQUFBSTs0REFBQTtpQ0FBQUw7eURBQUE7K0JBQUFHLGNBQUFDLGNBQUFDOzt5REFDQTtVQUFBQztVQUFBQzswREFBQUM7NERBQUE7Y0F6Q0poaEosV0F5Q0krZ0o7MERBQUFFOzREQUFBO2lEQUFBSDt5REFBQTsrQkFBQUUsY0FBQUM7O3lEQUNBO1VBQUFDOzBEQUFBQzs0REFBQTtjQWtCSnpuQyxjQWxCSXduQzt5REFBQTsrQkFBQUM7O3lEQUNBO1VBQUFDO1VBQUFDO1VBQUFDO1VBQUFDO1VBQUFDOzBEQUFBQzs0REFBQTtrQ0FBQUQ7MERBQUFFOzREQUFBO2tDQUFBSDswREFBQUk7NERBQUE7Y0EzQ0ozaEosV0EyQ0lzaEo7VUFJRU0sV0FKRlA7VUFJRVEsV0FKRlI7VUFJRWpwRCwyREFBQXlwRDtVQUFBQywyREFBQUY7VUFKRkcsbUJBSUUzcEQsY0FBQTBwRDswREFKRkU7NERBQUE7K0JBQUFaO3lEQUFBOzs7O21CQUFBSzs7b0JBQUFDO3dCQUFBQyxjQUFBSSxjQUFBQzs7MERBT0E7VUFBQUM7VUFBQUM7VUFBQUM7MkRBQUFDOzZEQUFBO29DQUFBRDsyREFBQUU7NkRBQUE7MkNBQUFIOzJEQUFBSTs2REFBQTtjQVVKNW9DLGNBVkl1b0M7MERBQUE7K0JBQUFHLGNBQUFDLGNBQUFDOzswREFDQTtVQUFBQztVQUFBQztVQUFBQztVQUFBQztVQUFBQztVQUFBQztVQUFBQzsyREFBQTVyRDs2REFBQTtrQ0FBQTRyRDsyREFBQUM7NkRBQUE7b0NBQUFGOzJEQUFBRzs2REFBQTsyQ0FBQUo7MkRBQUFLOzZEQUFBO2tDQUFBTjsyREFBQU87NkRBQUE7Y0FuREpqakosV0FtREl5aUo7VUFNRVMsV0FORlY7VUFNRVcsV0FORlg7VUFNRVksMkRBQUFEO1VBQUFFLDJEQUFBSDtVQU5GSSxtQkFNRUYsY0FBQUM7MkRBTkZFOzZEQUFBOytCQUFBaEI7MERBQUE7Ozs7bUJBQUF0ckQ7O29CQUFBNnJEOztxQkFBQUM7O3NCQUFBQzswQkFBQUMsY0FBQUssY0FBQUM7O3NEQVFDOztLQUNMN3BDOzt1REFBQTtPQUNJOHBDO09BQUFDO09BQUFDO3dEQUFBQzswREFBQTtXQTdESjNqSixXQTZESTBqSjt3REFBQUU7MERBQUE7NEJBQ0p2akMsY0FESW9qQzt3REFBQUk7MERBQUE7NEJBQUFMO3VEQUFBOzRCQUFBRyxjQUFBQyxjQUFBQzt1REFBd0I7O0lBN0Q1QnhqSjtJQTREQXNnSDtJQUVBQzs7S0E5REF2Z0g7Y0FBQXdCO2lCLFVBQUFBO2tCQUFBQTs7O2dCQUFBQTs7OzswREFBQSx1REFBQTtzREFBQTBFLFVBQUExRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJEQUFBLHVEQUFBO3VEQUFBMEUsVUFBQTFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MERBQUEsdURBQUE7c0RBQUEwRSxVQUFBMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJEQUFBLHVEQUFBO3VEQUFBMEUsVUFBQTFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MERBQUEsdURBQUE7c0RBQUEwRSxVQUFBMUU7Ozs7bUJBQUFBOzt5REFBQSx1REFBQTtxREFBQTBFLFVBQUExRTs7Ozs7Y0FBQW1GLDhDQUFBQTs7O2dCQUFBNGlGOzREQUFBLEdBQUFBO3dCQUFBQTs7OzsrREFBQTtnQkFBQWk1QjtnQkFBQTJDO2dCQUFBNzVCLFFBQUEvQjtnRUFBQWdDO2tFQUFBO3NDQUFBRDtnRUFBQWc2QjtrRUFBQTt1Q0FBQUg7Z0VBQUF4QztrRUFBQTtvQkFBQTNpSCxhQUFBd2lIOytEQUFBO3VCQUFBajNCO3VCQUFBKzVCO3VCQUFBM0M7Ozs7NERBQUEsdURBQUE7d0RBQUF6OEcsVUFBQVMsS0FBQW5GOzs4Q0FBQW1GOzs7aUJBQUFxa0U7NkRBQUEsR0FBQUE7eUJBQUFBOzsrREFBQTtnQkFBQXFnQjtnQkFBQTVnQixRQUFBTztnRUFBQU47a0VBQUE7b0JBQUExcUUsYUFBQXlxRTtnRUFBQStnQjtrRUFBQTt5Q0FBQUg7K0RBQUE7dUJBQUEzZ0I7dUJBQUE4Z0I7Ozs2REFBQSx1REFBQTt5REFBQXRsRixVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUE0a0U7NkRBQUEsR0FBQUE7eUJBQUFBOzsrREFBQTtnQkFBQTRkO2dCQUFBdGUsUUFBQVU7Z0VBQUFUO2tFQUFBO3lDQUFBRDtnRUFBQXllO2tFQUFBO29CQUFBdHBGLGFBQUFtcEY7K0RBQUE7dUJBQUFyZTt1QkFBQXdlOzs7NkRBQUEsdURBQUE7eURBQUFwakYsVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBd2pEOzZEQUFBLEdBQUFBO3lCQUFBQTs7Ozs7Ozs7a0VBQUE7bUJBQUFzNUY7bUJBQUE3aUM7bUJBQUE1M0M7bUJBQUFLO21CQUFBbUMsUUFBQXJoQjttRUFBQXNoQjtxRUFBQTs2Q0FBQUQ7bUVBQUFoQztxRUFBQTtpREFBQUg7bUVBQUFKO3FFQUFBOzBDQUFBRDttRUFBQTYzQztxRUFBQTt1QkFBQTdnSCxhQUFBNGdIOzs7NkJBQUE2aUMsaUNBQUFBOytCQUFBQTs7Ozs7dUJBK0JNOTVEO3VCQUFBeGU7dUJBQUFDOzs7OzJCQUFBRDt1QkFBQTJlOzs7OzJCQUFBSDtrQ0FBQXZlLE9BQUEwZTt1QkEvQk40NUQ7Ozs7OztvQkFBQUE7OzJEQUFBeDlJLGFBQUF1OUk7O2tFQUFBOzBCQUFBaDRFOzBCQUFBakM7MEJBQUFQOzBCQUFBNDNDOzBCQUFBNmlDOzs7Ozs7NkRBQUEsdURBQUE7eURBQUF4OUksVUFBQVMsS0FBQW5GOztzQ0FBQW1GOzt1RUFBQTsyREFBQVQsVUFBQTFFOztzQ0FBQW1GO2lCQUFBMmpEOzZEQUFBLEdBQUFBO3lCQUFBQTs7Ozs7O2lFQUFBO2tCQUFBNGU7a0JBQUFoNkM7a0JBQUF5NkM7a0JBQUF2ZixRQUFBRTtrRUFBQUQ7b0VBQUE7aURBQUFEO2tFQUFBMGY7b0VBQUE7NENBQUFIO2tFQUFBcDZDO29FQUFBO21EQUFBTDtrRUFBQWk2QztvRUFBQTtzQkFBQW5wRSxhQUFBa3BFO2lFQUFBO3lCQUFBN2U7eUJBQUF5Zjt5QkFBQXY2Qzt5QkFBQTQ1Qzs7Ozs7NkRBQUEsdURBQUE7eURBQUFqakUsVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBcWpEOzZEQUFBLEdBQUFBO3lCQUFBQTs7K0RBQUE7Z0JBQUFvZ0I7Z0JBQUE3ZixPQUFBUDtnRUFBQVE7a0VBQUE7b0JBQUF4cUQsYUFBQXVxRDtnRUFBQWdnQjtrRUFBQTs4REFBQUg7K0RBQUE7dUJBQUE1Zjt1QkFBQStmOzs7NkRBQUEsdURBQUE7eURBQUFya0UsVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBc29COzZEQUFBLEdBQUFBO3lCQUFBQTs7K0RBQUE7Z0JBQUEyN0M7Z0JBQUEzZ0IsT0FBQWg3QjtnRUFBQWk3QjtrRUFBQTtvQkFBQWxxRCxhQUFBaXFEO2dFQUFBOGdCO2tFQUFBO3lDQUFBSDsrREFBQTt1QkFBQTFnQjt1QkFBQTZnQjs7OzZEQUFBLHVEQUFBO3lEQUFBN2tFLFVBQUFTLEtBQUFuRjs7c0NBQUFtRjtpQkFBQStmOzZEQUFBLEdBQUFBO3lCQUFBQTs7K0RBQUE7Z0JBQUF3a0Q7Z0JBQUE5N0MsT0FBQTFJO2dFQUFBMkk7a0VBQUE7eUNBQUFEO2dFQUFBaThDO2tFQUFBO29CQUFBcnJFLGFBQUFrckU7K0RBQUE7dUJBQUE3N0M7dUJBQUFnOEM7Ozs2REFBQSx1REFBQTt5REFBQW5sRSxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUFzWTs2REFBQSxHQUFBQTt5QkFBQUE7OytEQUFBO2dCQUFBa1E7Z0JBQUF4SSxPQUFBMUg7Z0VBQUEySDtrRUFBQTs0Q0FBQUQ7Z0VBQUEySTtrRUFBQTtvQkFBQXR2QixhQUFBbXZCOytEQUFBO3VCQUFBdkk7dUJBQUEwSTs7OzZEQUFBLHVEQUFBO3lEQUFBcHBCLFVBQUFTLEtBQUFuRjs7c0NBQUFtRjtpQkFBQUM7NkRBQUEsR0FBQUE7eUJBQUFBOzsrREFBQTtnQkFBQW5GO2dCQUFBQyxLQUFBa0Y7Z0VBQUFqRjtrRUFBQTtvQkFBQTNCLGFBQUEwQjs7OzBCQUFBRCxpQ0FBQUE7NEJBQUFBOzs7OztvQkF1QmF1bkI7b0JBQUE5SjtvQkFBQUM7Ozs7d0JBQUFEO29CQUFBK0o7Ozs7d0JBQUFEOytCQUFBN0osTUFBQThKO29CQXZCYnJuQjs7Ozs7O2lCQUFBQTs7d0RBQUFzRSxhQUFBekU7OytEQUFBO3VCQUFBRTt1QkFBQUM7Ozs2REFBQSx1REFBQTt5REFBQXNFLFVBQUFTLEtBQUFuRjs7OztzQ0FBQW1GO2lCQUFBK2lGOzZEQUFBO2VBQUFBO3lCQUFBQTs7Ozs7O2lFQUFBO2tCQUFBaTZEO2tCQUFBL2dDO2tCQUFBbEI7a0JBQUFoMkIsUUFBQWhDO2tFQUFBaUM7b0VBQUE7MENBQUFEO2tFQUFBbTJCO29FQUFBO3lDQUFBSDtrRUFBQXFCO29FQUFBO3NCQUFBL2lILGFBQUE0aUg7a0JBQUFnaEM7Ozs7c0JBQUFEO2lFQUFBO3lCQUFBaDREO3lCQUFBazJCO3lCQUFBa0I7eUJBQUE2Z0M7Ozs7OzZEQUFBLHVEQUFBO3lEQUFBMTlJLFVBQUFTLEtBQUFuRjs7c0NBQUFtRjtpQkFBQW9qRjs2REFBQTtlQUFBQTt5QkFBQUE7Ozs7OztpRUFBQTtrQkFBQTg1RDtrQkFBQXJqQztrQkFBQXdCO2tCQUFBNTRCLFFBQUFXO2tFQUFBVjtvRUFBQTt1Q0FBQUQ7a0VBQUErNEI7b0VBQUE7c0JBQUFuaUgsYUFBQWdpSDtrRUFBQXJCO29FQUFBOzJDQUFBSDtrRUFBQXNqQztvRUFBQTsyQ0FBQUQ7aUVBQUE7eUJBQUF4NkQ7eUJBQUE4NEI7eUJBQUF4Qjt5QkFBQW1qQzs7Ozs7NkRBQUEsdURBQUE7eURBQUE1OUksVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBdWpGOzZEQUFBO2VBQUFBO3lCQUFBQTs7Ozs7O2lFQUFBO2tCQUFBNjVEO2tCQUFBampDO2tCQUFBc0I7a0JBQUE1NEIsUUFBQVU7a0VBQUFUO29FQUFBO3VDQUFBRDtrRUFBQTY0QjtvRUFBQTsyQ0FBQUQ7a0VBQUFyQjtvRUFBQTtzQkFBQS9nSCxhQUFBOGdIO2tFQUFBa2pDO29FQUFBOzJDQUFBRDtpRUFBQTt5QkFBQXQ2RDt5QkFBQTQ0Qjt5QkFBQXRCO3lCQUFBaWpDOzs7Ozs2REFBQSx1REFBQTt5REFBQTk5SSxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUF5aUU7NkRBQUE7ZUFBQUE7eUJBQUFBOzs7Ozs7aUVBQUE7a0JBQUE0M0M7a0JBQUFDO2tCQUFBcUI7a0JBQUExNEIsUUFBQXhnQjtrRUFBQXlnQjtvRUFBQTt1Q0FBQUQ7a0VBQUEyNEI7b0VBQUE7MkNBQUFEO2tFQUFBcEI7b0VBQUE7MkNBQUFEO2tFQUFBRTtvRUFBQTtzQkFBQW5oSCxhQUFBZ2hIO2lFQUFBO3lCQUFBbjNCO3lCQUFBMDRCO3lCQUFBckI7eUJBQUFDOzs7Ozs2REFBQSx1REFBQTt5REFBQWo3RyxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUE4aUU7NkRBQUE7ZUFBQUE7eUJBQUFBOzs7O2dFQUFBO2lCQUFBNDNDO2lCQUFBb0I7aUJBQUF6NEIsUUFBQXZnQjtpRUFBQXdnQjttRUFBQTsyQ0FBQUQ7aUVBQUEwNEI7bUVBQUE7a0RBQUFEO2lFQUFBbkI7bUVBQUE7cUJBNERBaEIsZ0JBNURBZTtnRUFBQTt3QkFBQXAzQjt3QkFBQXk0Qjt3QkFBQXBCOzs7OzZEQUFBLHVEQUFBO3lEQUFBcDdHLFVBQUFTLEtBQUFuRjs7c0NBQUFtRjtpQkFBQXFqRTs2REFBQTtlQUFBQTt5QkFBQUE7Ozs7Ozs7Ozs7OztvRUFBQTtxQkFBQWk2RTtxQkFBQUM7cUJBQUFDO3FCQUFBL2lDO3FCQUFBejJCO3FCQUFBcTRCO3FCQUFBMTVDLFFBQUFVO3FFQUFBVDt1RUFBQTs4Q0FBQUQ7cUVBQUEyNUM7dUVBQUE7K0NBQUFEO3FFQUFBaDRCO3VFQUFBO3NEQUFBTDtxRUFBQTQyQjt1RUFBQTs2Q0FBQUg7cUVBQUFnakM7dUVBQUE7eUJBQUFwa0osYUFBQW1rSjs7OytCQUFBRCxpQ0FBQUE7aUNBQUFBOzs7Ozt5QkF5RE1yaEM7eUJBQUExNEI7eUJBQUFDOzs7OzZCQUFBRDt5QkFBQTI0Qjs7Ozs2QkFBQUQ7b0NBQUF6NEIsT0FBQTA0Qjt5QkF6RE51aEM7Ozs7OztzQkFBQUE7OzZEQUFBbitJLGFBQUFnK0k7O29FQUFBLGdEQUFBO3FCQUFBSTt1RUFBQTttRUFBQUw7b0VBQUE7NEJBQUExNkU7NEJBQUEwNUM7NEJBQUFqNEI7NEJBQUF1MkI7NEJBQUE2aUM7NEJBQUFDOzRCQUFBQzs7Ozs7Ozs7NkRBQUEsdURBQUE7eURBQUFwK0ksVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBd2pFOzZEQUFBO2VBQUFBO3lCQUFBQTs7K0RBQUE7Z0JBQUFzMkM7Z0JBQUE3MkMsUUFBQU87Z0VBQUFOO2tFQUFBO29CQUFBN3BFLGFBQUE0cEU7Z0VBQUE4MkM7a0VBQUE7dURBQUFEOytEQUFBO3VCQUFBNTJDO3VCQUFBNjJDOzs7NkRBQUEsdURBQUE7eURBQUF4NkcsVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBNmpFOzZEQUFBLEdBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQWQ7aUJBQUE0Z0I7aUJBQUFyZ0IsUUFBQU87aUVBQUFOO21FQUFBO3lDQUFBRDtpRUFBQXdnQjttRUFBQTtxQkFBQXpxRixhQUFBc3FGO2lFQUFBdmdCO21FQUFBOzBDQUFBTDtnRUFBQTt3QkFBQVE7d0JBQUF1Z0I7d0JBQUExZ0I7Ozs7NkRBQUEsdURBQUE7eURBQUE3akUsVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBZ2tFOzZEQUFBLEdBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQU07aUJBQUEyZjtpQkFBQXZnQixRQUFBTTtpRUFBQUw7bUVBQUE7eUNBQUFEO2lFQUFBMGdCO21FQUFBOzBDQUFBSDtpRUFBQXRmO21FQUFBO3FCQUFBdHJFLGFBQUFpckU7Z0VBQUE7d0JBQUFYO3dCQUFBeWdCO3dCQUFBemY7Ozs7NkRBQUEsdURBQUE7eURBQUFwbEUsVUFBQVMsS0FBQW5GOzs7Ozs4Q0FBQW1GOzs7aUJBQUFnL0c7NkRBQUE7ZUFBQUE7eUJBQUFBOzs7O2dFQUFBO2lCQUFBOUI7aUJBQUEwZ0M7aUJBQUFqZ0MsUUFBQXFCO2lFQUFBcEI7bUVBQUE7Z0RBQUFEO2lFQUFBa2dDO21FQUFBO3FCQUFBeGtKLGFBQUF1a0o7aUVBQUFyZ0M7bUVBQUE7MENBQUFMO2dFQUFBO3dCQUFBVTt3QkFBQWlnQzt3QkFBQXRnQzs7Ozs2REFBQSx1REFBQTt5REFBQWgrRyxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUFtL0c7NkRBQUE7ZUFBQUE7eUJBQUFBOzs7O2dFQUFBO2lCQUFBMUI7aUJBQUFxZ0M7aUJBQUE1L0IsUUFBQWlCO2lFQUFBaEI7bUVBQUE7Z0RBQUFEO2lFQUFBNi9CO21FQUFBOzBDQUFBRDtpRUFBQWhnQzttRUFBQTtxQkFBQXprSCxhQUFBb2tIO2dFQUFBO3dCQUFBVTt3QkFBQTQvQjt3QkFBQWpnQzs7Ozs2REFBQSx1REFBQTt5REFBQXYrRyxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUE2Nkc7NkRBQUE7ZUFBQUE7eUJBQUFBOzs7O2dFQUFBO2lCQUFBbUQ7aUJBQUFnZ0M7aUJBQUF2L0IsUUFBQTVEO2lFQUFBNkQ7bUVBQUE7cUJBQUFybEgsYUFBQW9sSDtpRUFBQXcvQjttRUFBQTt3Q0FBQUQ7aUVBQUEzL0I7bUVBQUE7d0NBQUFMO2dFQUFBO3dCQUFBVTt3QkFBQXUvQjt3QkFBQTUvQjs7Ozs2REFBQSx1REFBQTt5REFBQTkrRyxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUFvN0c7NkRBQUE7ZUFBQUE7eUJBQUFBOzsrREFBQTtnQkFBQThpQztnQkFBQXAvQixRQUFBMUQ7Z0VBQUEyRDtrRUFBQTt3Q0FBQUQ7Z0VBQUFxL0I7a0VBQUE7b0JBQUE5a0osYUFBQTZrSjsrREFBQTt1QkFBQW4vQjt1QkFBQW8vQjs7OzZEQUFBLHVEQUFBO3lEQUFBNStJLFVBQUFTLEtBQUFuRjs7c0NBQUFtRjtpQkFBQTBqRjs2REFBQTtlQUFBQTt5QkFBQUE7OytEQUFBO2dCQUFBMDZEO2dCQUFBbi9CLFFBQUF2N0I7Z0VBQUF3N0I7a0VBQUE7b0JBQUE3bEgsYUFBQTRsSDtnRUFBQW8vQjtrRUFBQTt5Q0FBQUQ7K0RBQUE7dUJBQUFsL0I7dUJBQUFtL0I7Ozs2REFBQSx1REFBQTt5REFBQTkrSSxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUErakY7NkRBQUE7ZUFBQUE7eUJBQUFBOzsrREFBQTtnQkFBQXk0QjtnQkFBQTRDLFFBQUFyN0I7Z0VBQUFzN0I7a0VBQUE7eUNBQUFEO2dFQUFBekM7a0VBQUE7b0JBQUF0akgsYUFBQW1qSDsrREFBQTt1QkFBQTZDO3VCQUFBMUM7Ozs2REFBQSx1REFBQTt5REFBQXA5RyxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUFza0Y7Z0JBQUFBLG9CQUFBQTs4REFBQTtlQUFBMDJCLFFBQUExMkI7K0RBQUEyMkI7aUVBQUE7bUJBNERBdEIsZ0JBNURBcUI7OERBQUE7c0JBQUFDOzs2REFBQSx1REFBQTt5REFBQTE3RyxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUF5a0Y7NkRBQUE7ZUFBQUE7eUJBQUFBOzs7Ozs7OztrRUFBQTttQkFBQTY1RDttQkFBQUM7bUJBQUFoZ0M7bUJBQUFwQjttQkFBQXY1QixRQUFBYTttRUFBQVo7cUVBQUE7NENBQUFEO21FQUFBMDVCO3FFQUFBOzJDQUFBSDttRUFBQXlCO3FFQUFBO3VCQUFBdmxILGFBQUFrbEg7Ozs2QkFBQWdnQyxvQ0FBQUE7K0JBQUFBOzs7Ozt1QkErQ00xaEM7dUJBQUF2Qjt1QkFBQUM7Ozs7MkJBQUFEO3VCQUFBMEI7Ozs7MkJBQUFIO2tDQUFBdEIsT0FBQXlCO3VCQS9DTndoQzs7Ozs7O29CQUFBQTs7MkRBQUFqL0ksYUFBQWcvSTs7a0VBQUEsZ0RBQUE7bUJBQUFFO3FFQUFBO2lFQUFBSDtrRUFBQTswQkFBQXo2RDswQkFBQXk1QjswQkFBQXNCOzBCQUFBNC9COzBCQUFBQzs7Ozs7OzZEQUFBLHVEQUFBO3lEQUFBbC9JLFVBQUFTLEtBQUFuRjs7c0NBQUFtRjtpQkFBQThrRjs2REFBQTtlQUFBQTt5QkFBQUE7Ozs7Z0VBQUE7aUJBQUFnMkI7aUJBQUE0QztpQkFBQXg1QixRQUFBWTtpRUFBQVg7bUVBQUE7cUJBQUE5cUYsYUFBQTZxRjtpRUFBQTI1QjttRUFBQTt3Q0FBQUg7aUVBQUF2QzttRUFBQTt3Q0FBQUw7Z0VBQUE7d0JBQUEzMkI7d0JBQUEwNUI7d0JBQUExQzs7Ozs2REFBQSx1REFBQTt5REFBQTU3RyxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUF1aUY7NkRBQUE7ZUFBQUE7eUJBQUFBOzsrREFBQTtnQkFBQTA3QjtnQkFBQTE1QixRQUFBaEM7Z0VBQUFpQztrRUFBQTt5Q0FBQUQ7Z0VBQUE2NUI7a0VBQUE7b0JBQUEva0gsYUFBQTRrSDsrREFBQTt1QkFBQXo1Qjt1QkFBQTQ1Qjs7OzZEQUFBLHVEQUFBO3lEQUFBNytHLFVBQUFTLEtBQUFuRjs7OztzQ0FBQW1GO2lCQUFBMCtJOzZEQUFBO2VBQUFBO3lCQUFBQTs7K0RBQUE7Z0JBQUFDO2dCQUFBQyxRQUFBRjtnRUFBQUc7a0VBQUE7b0JBQUF4bEosYUFBQXVsSjtnRUFBQUU7a0VBQUE7eUNBQUFIOytEQUFBO3VCQUFBRTt1QkFBQUM7Ozs2REFBQSx1REFBQTt5REFBQXYvSSxVQUFBUyxLQUFBbkY7O3NDQUFBbUY7aUJBQUErK0k7NkRBQUE7ZUFBQUE7eUJBQUFBOzsrREFBQTtnQkFBQUM7Z0JBQUFDLFFBQUFGO2dFQUFBRztrRUFBQTt5Q0FBQUQ7Z0VBQUFFO2tFQUFBO29CQUFBOWxKLGFBQUEybEo7K0RBQUE7dUJBQUFFO3VCQUFBQzs7OzZEQUFBLHVEQUFBO3lEQUFBNS9JLFVBQUFTLEtBQUFuRjs7c0NBQUFtRjtpQkFBQXU4Rzs2REFBQTtlQUFBQTt5QkFBQUE7OytEQUFBO2dCQUFBNmlDO2dCQUFBQyxRQUFBOWlDO2dFQUFBK2lDO2tFQUFBOzhEQUFBRDtnRUFBQUU7a0VBQUE7b0JBQUFsbUosYUFBQStsSjsrREFBQTt1QkFBQUU7dUJBQUFDOzs7NkRBQUEsdURBQUE7eURBQUFoZ0osVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBNDhHOzZEQUFBO2VBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQTRpQztpQkFBQUM7aUJBQUFDLFFBQUE5aUM7aUVBQUEraUM7bUVBQUE7Z0RBQUFEO2lFQUFBRTttRUFBQTtxQkFBQXZtSixhQUFBb21KO2lFQUFBSTttRUFBQTswQ0FBQUw7Z0VBQUE7d0JBQUFHO3dCQUFBQzt3QkFBQUM7Ozs7NkRBQUEsdURBQUE7eURBQUF0Z0osVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBaTlHOzZEQUFBO2VBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQTZpQztpQkFBQUM7aUJBQUFDLFFBQUEvaUM7aUVBQUFnakM7bUVBQUE7Z0RBQUFEO2lFQUFBRTttRUFBQTswQ0FBQUg7aUVBQUFJO21FQUFBO3FCQUFBOW1KLGFBQUF5bUo7Z0VBQUE7d0JBQUFHO3dCQUFBQzt3QkFBQUM7Ozs7NkRBQUEsdURBQUE7eURBQUE1Z0osVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBdzlHOzZEQUFBO2VBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQTRpQztpQkFBQUM7aUJBQUFDLFFBQUE5aUM7aUVBQUEraUM7bUVBQUE7Z0RBQUFEO2lFQUFBRTttRUFBQTtxQkFBQW5uSixhQUFBZ25KO2lFQUFBSTttRUFBQTswQ0FBQUw7Z0VBQUE7d0JBQUFHO3dCQUFBQzt3QkFBQUM7Ozs7NkRBQUEsdURBQUE7eURBQUFsaEosVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBKzlHOzZEQUFBO2VBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQTJpQztpQkFBQUM7aUJBQUFsa0MsUUFBQXNCO2lFQUFBckI7bUVBQUE7Z0RBQUFEO2lFQUFBbWtDO21FQUFBOzBDQUFBRDtpRUFBQUU7bUVBQUE7cUJBQUF4bkosYUFBQXFuSjtnRUFBQTt3QkFBQWhrQzt3QkFBQWtrQzt3QkFBQUM7Ozs7NkRBQUEsdURBQUE7eURBQUF0aEosVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBcytHOzZEQUFBO2VBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQXdpQztpQkFBQUM7aUJBQUFqa0MsUUFBQXdCO2lFQUFBdkI7bUVBQUE7Z0RBQUFEO2lFQUFBa2tDO21FQUFBO3FCQUFBM25KLGFBQUEwbko7aUVBQUFFO21FQUFBOzBDQUFBSDtnRUFBQTt3QkFBQS9qQzt3QkFBQWlrQzt3QkFBQUM7Ozs7NkRBQUEsdURBQUE7eURBQUExaEosVUFBQVMsS0FBQW5GOztzQ0FBQW1GO2lCQUFBNitHOzZEQUFBO2VBQUFBO3lCQUFBQTs7OztnRUFBQTtpQkFBQXFpQztpQkFBQUM7aUJBQUEvakMsUUFBQXlCO2lFQUFBeEI7bUVBQUE7Z0RBQUFEO2lFQUFBZ2tDO21FQUFBOzBDQUFBRDtpRUFBQUU7bUVBQUE7cUJBQUFob0osYUFBQTZuSjtnRUFBQTt3QkFBQTdqQzt3QkFBQStqQzt3QkFBQUM7Ozs7NkRBQUEsdURBQUE7eURBQUE5aEosVUFBQVMsS0FBQW5GOzs7Ozs7MERBQUEsdURBQUE7c0RBQUEwRSxVQUFBMUU7Ozs7c0RBQUEsdURBQUE7a0RBQUEwRSxVQUFBMUU7OztLQTREQTgrRztjQUFBOStHO3VEQUFBO2VBQUFBO2tCQUFBQTs7a0NBQUFBOzBEQUFBLHdEQUFBO3FEQUFBMlMsVUFBQTNTOzs7bUJBQUFBOzswREFBQSx3REFBQTtxREFBQTJTLFVBQUEzUzs7Ozs7Y0FBQW1GO29DQUFBQTtlQUFBQzs0REFBQSxHQUFBQTt1QkFBQUE7Ozs7K0RBQUE7ZUFBQXNvQjtlQUFBenRCO2VBQUFDLEtBQUFrRjtnRUFBQWpGO2tFQUFBO21CQTVEQTNCLGFBNERBMEI7ZUFBQUU7OzttQkFFQTIrRzttQkFGQTkrRztnRUFBQTh0QjtrRUFBQTs2REFBQUw7K0RBQUE7c0JBQUF2dEI7c0JBQUFDO3NCQUFBMnRCOzs7OzREQUFBLHdEQUFBO3VEQUFBcGIsVUFBQXhOLEtBQUFuRjs7OzsyREFBQSx3REFBQTtzREFBQTJTLFVBQUEzUzs7Ozt1REFBQSx3REFBQTtrREFBQTJTLFVBQUEzUzt1REFDNEI7O0tBQzVCKytHO2NBQUEzZ0g7dURBQUEsd0RBQUE7b0NBQUFBO3VEQUFxQjtZQTlEckJHO29EQUFBOztxREFDSTs7O3VEQUNBO1FBQUEwQjtRQUFBQzt3REFBQUM7MERBQUE7Z0NBQUFEO3dEQUFBRSxPQUZKN0IsWUFFSTBCO3VEQUFBOzs2QkFBQUUsVUFBQUM7O3VEQUNBO1FBQUFvbkI7UUFBQTlKO3dEQUFBQzswREFBQTtpQ0FBQUQ7d0RBQUErSjtVQUhKbHBCLFlBR0lpcEI7dURBQUE7OzZCQUFBN0osVUFBQThKOzt1REFDQTtRQUFBa0c7UUFBQXhJO3dEQUFBQztVQUpKN21CLFlBSUk0bUI7d0RBQUEySTswREFBQTtpQ0FBQUg7dURBQUE7OzZCQUFBdkksVUFBQTBJOzt1REFDQTtRQUFBNDdDO1FBQUE5N0M7d0RBQUFDOzBEQUFBO2lDQUFBRDt3REFBQWk4QztVQUxKdHJFLFlBS0ltckU7dURBQUE7OzZCQUFBNzdDLFVBQUFnOEM7O3VEQUNBO1FBQUFuOEM7UUFBQTA3QztRQUFBM2dCO3dEQUFBQzswREFBQTtnQ0FBQUQ7d0RBQUE4Z0I7VUFOSmhyRSxZQU1JNnFFO3dEQUFBcjdDOzBEQUFBO2lDQUFBTDt1REFBQTs7NkJBQUFnN0IsVUFBQTZnQixVQUFBeDdDOzt1REFDQTtRQUFBeTVDO1FBQUFvQjtRQUFBN2Y7d0RBQUFDOzBEQUFBO2dDQUFBRDt3REFBQWdnQjswREFBQTtpQ0FBQUg7d0RBQUFuQjtVQVBKbHBFLFlBT0lpcEU7dURBQUE7OzZCQUFBeGUsV0FBQStmLFdBQUF0Qjs7dURBQ0E7UUFBQUM7UUFBQStCO1FBQUF0QjtRQUFBdmY7d0RBQUFDOzBEQUFBO2dDQUFBRDt3REFBQTBmOzBEQUFBOytCQUFBSDt3REFBQTJCO1VBUkp2ckUsWUFRSWtyRTtRQUFBOUI7O3dFQUFBRDt1REFBQTs7NkJBQUE3ZSxXQUFBeWYsV0FBQXdCLFVBQUFuQzs7dURBQ0E7UUFBQU87UUFBQUw7UUFBQW1DO3dEQUFBQzswREFBQTs4QkFBQUQ7d0RBQUFoQzswREFBQTsrQkFBQUg7d0RBQUFVO1VBVEpocUUsWUFTSTJwRTt1REFBQTs7NkJBQUErQixXQUFBakMsV0FBQU87O3VEQUNBO1FBQUE0ZjtRQUFBeGU7d0RBQUFDO1VBVkpyckUsWUFVSW9yRTt3REFBQTJlOzBEQUFBO2lDQUFBSDt1REFBQTs7NkJBQUF2ZSxXQUFBMGU7O3VEQUNBO1FBQUFYO1FBQUF0ZTt3REFBQUM7MERBQUE7aUNBQUFEO3dEQUFBeWU7VUFYSnZwRixZQVdJb3BGO3VEQUFBOzs2QkFBQXJlLFdBQUF3ZTs7dURBQ0E7UUFBQXMzQjtRQUFBajJCO1FBQUFVO1FBQUE1Z0I7d0RBQUFDOzBEQUFBOzZCQUFBRDt3REFBQStnQjtVQVpKenJGLFlBWUlzckY7d0RBQUFMOzBEQUFBO2lDQUFBTDt3REFBQWsyQjswREFBQTtpQ0FBQUQ7dURBQUE7OzZCQUFBbDJDLFdBQUE4Z0IsV0FBQVIsVUFBQTYxQjs7dURBQ0E7UUFBQU87UUFBQUM7UUFBQXoyQjtRQUFBdmdCO3dEQUFBQzswREFBQTs2QkFBQUQ7d0RBQUEwZ0I7MERBQUE7aUNBQUFIO3dEQUFBMDJCO1VBYkp2aEgsWUFhSXNoSDt3REFBQUU7MERBQUE7aUNBQUFIO3VEQUFBOzs2QkFBQTkyQyxXQUFBeWdCLFdBQUF1MkIsV0FBQUM7O3VEQUNBO1FBQUFQO1FBQUFDO1FBQUEzMkI7UUFBQXJnQjt3REFBQUM7MERBQUE7NkJBQUFEO3dEQUFBd2dCOzBEQUFBO2lDQUFBSDt3REFBQTQyQjswREFBQTtpQ0FBQUQ7d0RBQUFFO1VBZEpwaEgsWUFjSWloSDt1REFBQTs7NkJBQUE5MkMsV0FBQXVnQixXQUFBeTJCLFdBQUFDOzt1REFDQTtRQUFBTDtRQUFBTDtRQUFBNzJDO3dEQUFBQzswREFBQTt1Q0FBQUQ7d0RBQUE4MkM7VUFmSjNnSCxZQWVJMGdIO3dEQUFBTTswREFBQTtpQ0FBQUQ7dURBQUE7OzZCQUFBajNDLFdBQUE2MkMsV0FBQUs7O3VEQUNBO1FBQUFQO1FBQUF3QztRQUFBMTVDO3dEQUFBQzswREFBQTt1Q0FBQUQ7d0RBQUEyNUM7MERBQUE7aUNBQUFEO3dEQUFBckM7VUFoQko1Z0gsWUFnQkl5Z0g7dURBQUE7OzZCQUFBajNDLFdBQUEwNUMsV0FBQXRDOzt1REFDQTtRQUFBaUM7UUFBQUM7UUFBQTE0Qjt3REFBQUM7MERBQUE7dUNBQUFEO3dEQUFBMjRCO1VBakJKL2lILFlBaUJJOGlIO3dEQUFBRTswREFBQTtpQ0FBQUg7dURBQUE7OzZCQUFBeDRCLFdBQUEwNEIsV0FBQUM7O3VEQUNBO1FBQUFQO1FBQUFDO1FBQUF6NEI7d0RBQUFDOzBEQUFBO3VDQUFBRDt3REFBQTA0QjswREFBQTtpQ0FBQUQ7d0RBQUFFO1VBbEJKNWlILFlBa0JJeWlIO3VEQUFBOzs2QkFBQXY0QixXQUFBeTRCLFdBQUFDOzt1REFDQTtRQUFBbEI7UUFBQWE7UUFBQTE0Qjt3REFBQUM7MERBQUE7dUNBQUFEO3dEQUFBMjRCO1VBbkJKeGlILFlBbUJJdWlIO3dEQUFBUjswREFBQTtpQ0FBQUw7dURBQUE7OzZCQUFBNTNCLFdBQUEwNEIsV0FBQVQ7O3VEQUNBO1FBQUFvRDtRQUFBOUM7UUFBQTU0Qjt3REFBQUM7MERBQUE7dUNBQUFEO3dEQUFBNjRCOzBEQUFBO2lDQUFBRDt3REFBQW1EO1VBcEJKeGxILFlBb0JJbWxIO3VEQUFBOzs2QkFBQXo3QixXQUFBNDRCLFdBQUFrRDs7dURBQ0E7UUFBQVo7UUFBQTNDO1FBQUE1NEI7d0RBQUFDOzBEQUFBO3VDQUFBRDt3REFBQSs0QjtVQXJCSnBpSCxZQXFCSWlpSDt3REFBQWdEOzBEQUFBO2lDQUFBTDt1REFBQTs7NkJBQUF0N0IsV0FBQTg0QixXQUFBNkM7O3VEQUNBO1FBQUFaO1FBQUExQztRQUFBaDJCO3dEQUFBQzswREFBQTt1Q0FBQUQ7d0RBQUFtMkI7MERBQUE7aUNBQUFIO3dEQUFBK0M7VUF0Qkoxa0gsWUFzQklxa0g7dURBQUE7OzZCQUFBejRCLFdBQUFrMkIsV0FBQTRDOzt1REFDQTtRQUFBVTtRQUFBNzVCO3dEQUFBQztVQXZCSnhyRixZQXVCSXVyRjtRQUFTZzZCLFFBQVRIO1FBQVNqNkIsUUFBVGk2QjtRQUFTaDZCOzs7O1lBQUFEO1FBQUEwNUI7Ozs7WUFBQVU7UUFBVFAsMkJBQVM1NUIsV0FBQXk1Qjt1REFBVDs7NkJBQUFyNUIsV0FBQXc1Qjs7dURBQ0E7UUFBQVY7UUFBQXg1Qjt3REFBQUM7MERBQUE7cURBQUFEO3dEQUFBMjVCO1VBeEJKemtILFlBd0JJc2tIO3VEQUFBOzs2QkFBQXY1QixXQUFBMDVCOzt1REFDQTtRQUFBVjtRQUFBdjVCO3dEQUFBQzswREFBQTtvQ0FBQUQ7d0RBQUEwNUI7VUF6Qkpsa0gsWUF5Qkkrakg7dURBQUE7OzZCQUFBdDVCLFdBQUF5NUI7O3VEQUNBO1FBQUF3L0I7UUFBQU07UUFBQWxnQztRQUFBTDtRQUFBdkI7d0RBQUFDOzBEQUFBO2tDQUFBRDt3REFBQTBCOzBEQUFBO3NDQUFBSDt3REFBQVU7MERBQUE7K0JBQUFMO3dEQUFBbWdDO1VBMUJKamtKLFlBMEJJZ2tKO1FBS0U1Z0MsUUFMRnNnQztRQUtFOWhDLFFBTEY4aEM7UUFLRTdoQzs7OztZQUFBRDtRQUFBMkI7Ozs7WUFBQUg7UUFMRnVnQywwQkFLRTloQyxXQUFBMEI7dURBTEY7Ozs7b0JBQUFwQixXQUFBeUIsV0FBQU8sV0FBQTgvQixVQUFBTjs7dURBT0E7UUFBQXFCO1FBQUFoL0I7d0RBQUFDO1VBakNKam1ILFlBaUNJZ21IO3dEQUFBaS9COzBEQUFBO2lDQUFBRDt1REFBQTs7NkJBQUEvK0IsV0FBQWcvQjs7dURBQ0E7UUFBQUg7UUFBQWovQjt3REFBQUM7MERBQUE7aUNBQUFEO3dEQUFBay9CO1VBbENKL2tKLFlBa0NJOGtKO3VEQUFBOzs2QkFBQWgvQixXQUFBaS9COzt1REFDQTtRQUFBSDtRQUFBbC9CO3dEQUFBQztVQW5DSjNsSCxZQW1DSTBsSDt3REFBQW0vQjswREFBQTtpQ0FBQUQ7dURBQUE7OzZCQUFBai9CLFdBQUFrL0I7O3VEQUNBO1FBQUFIO1FBQUFyL0I7d0RBQUFDOzBEQUFBO2lDQUFBRDt3REFBQXMvQjtVQXBDSjNrSixZQW9DSTBrSjt1REFBQTs7NkJBQUFwL0IsV0FBQXEvQjs7dURBQ0E7UUFBQUg7UUFBQTEvQjt3REFBQUM7VUFyQ0ova0gsWUFxQ0k4a0g7d0RBQUEyL0I7MERBQUE7cURBQUFEO3VEQUFBOzs2QkFBQXovQixXQUFBMC9COzt1REFDQTtRQUFBWDtRQUFBZ0U7UUFBQUM7UUFBQXhqQzt3REFBQUM7MERBQUE7dUNBQUFEO3dEQUFBeWpDOzBEQUFBO2tDQUFBRDt3REFBQUU7MERBQUE7eUNBQUFIO3dEQUFBL0Q7VUF0Q0ovakosWUFzQ0k4ako7dURBQUE7OzZCQUFBdC9CLFdBQUF3akMsV0FBQUMsV0FBQWxFOzt1REFDQTtRQUFBMkQ7UUFBQUM7UUFBQTNqQzt3REFBQUM7VUF2Q0pqa0gsWUF1Q0lna0g7d0RBQUE0akM7MERBQUE7K0JBQUFEO3dEQUFBRTswREFBQTsrQkFBQUg7dURBQUE7OzZCQUFBempDLFdBQUEyakMsV0FBQUM7O3VEQUNBO1FBQUFQO1FBQUFDO1FBQUE3akM7d0RBQUFDO1VBeENKM2pILFlBd0NJMGpIO3dEQUFBOGpDOzBEQUFBOytCQUFBRDt3REFBQUU7MERBQUE7K0JBQUFIO3VEQUFBOzs2QkFBQTNqQyxXQUFBNmpDLFdBQUFDOzt1REFDQTtRQUFBUjtRQUFBNWpDO3dEQUFBQztVQXpDSnRqSCxZQXlDSXFqSDt3REFBQStqQzswREFBQTsrQ0FBQUg7dURBQUE7OzZCQUFBM2pDLFdBQUE4akM7O3VEQUNBO1FBQUFGO3dEQUFBQztVQWtCSmpoQyxlQWxCSWdoQzt1REFBQTs7NkJBQUFDOzt1REFDQTtRQUFBL0M7UUFBQVI7UUFBQW9EO1FBQUFMO1FBQUFDO3dEQUFBQzswREFBQTtpQ0FBQUQ7d0RBQUFFOzBEQUFBO2dDQUFBSDt3REFBQVU7VUEzQ0pybkosWUEyQ0lnbko7UUFJRVgsUUFKRnpDO1FBSUUwQyxRQUpGMUM7UUFJRTJDOzs7O1lBQUFEO1FBQUFFOzs7O1lBQUFIO1FBSkZ4QywyQkFJRTBDLFdBQUFDO3dEQUpGbkM7MERBQUE7cURBQUFEO3VEQUFBOzs7O29CQUFBeUMsV0FBQUMsV0FBQU8sV0FBQXhELFdBQUFROzt3REFPQTtRQUFBcUM7UUFBQVY7UUFBQUM7eURBQUFDOzJEQUFBO2tDQUFBRDt5REFBQUU7MkRBQUE7eUNBQUFIO3lEQUFBZTtVQVVKN2dDLGVBVkl3Z0M7d0RBQUE7OzZCQUFBUixXQUFBQyxXQUFBWTs7d0RBQ0E7UUFBQTdDO1FBQUFDO1FBQUFlO1FBQUFDO1FBQUFpQjtRQUFBUjtRQUFBQzt5REFBQUM7MkRBQUE7aUNBQUFEO3lEQUFBRTsyREFBQTtrQ0FBQUg7eURBQUFhOzJEQUFBO3lDQUFBTDt5REFBQWhCOzJEQUFBO2dDQUFBRDt5REFBQUU7VUFuREpybEosWUFtRElrbEo7UUFNRUssUUFORnBCO1FBTUVxQixRQU5GckI7UUFNRXNCOzs7O1lBQUFEO1FBQUFFOzs7O1lBQUFIO1FBTkZqQiwwQkFNRW1CLFdBQUFDO3lEQU5GbkI7MkRBQUE7cURBQUFMO3dEQUFBOzs7OztpQkFBQTRCOztrQkFBQUM7c0JBQUFVLFdBQUFyQixXQUFBQyxVQUFBZixVQUFBQzs7b0RBUUM7WUFDTHIrQjtxREFBQTtLQUNJLzJGO0tBQUF6dEI7S0FBQUM7c0RBQUFDLE9BN0RKNUIsWUE2REkyQjtLQUFBRTs7bURBQ0pza0gsZ0JBREl6a0g7c0RBQUE4dEI7d0RBQUE7a0RBQUFMO3FEQUFBOzswQkFBQXZ0QixVQUFBQyxVQUFBMnRCO3FEQUF3QjtZQUM1QjIyRixlQUFBdGpIO3FEQUFBLHdEQUFBO2tDQUFBQTtxREFBcUI7WUFFYnFsSjtxREFDTjtxREFBQTs7d0RBQ1U7Ozs7WUFDR3JrSjs7OztZQUFBQTtrRUFxQ29COzttQkFyQ3BCQTs7cURBcUN5QjtZQUVoQ3NrSixPQUFVMW1HLEtBQVFwbkI7c0RBQXdCLElBQWhDMm5CLFFBQUFQO3NEQUFnQzs7Ozs7aUJBQXhCcG5COzs7Z0JBQUFBOztzQkFBUjJuQjtzQkFBQUE7Z0JBcUNvQm9tRyxLQXJDcEJwbUcsYUFxQ2dCcWxFLE1BckNoQnJsRSxVQXFDTHIzQyxJQXJDYTB2Qjs7O3NCQUFSMm5CO3NCQUFBQTtnQkFxQ29Cb21HLEtBckNwQnBtRyxhQXFDZ0JxbEUsTUFyQ2hCcmxFLFVBcUNMcjNDLElBckNhMHZCOzs7c0JBQVIybkI7c0JBQUFBO2dCQTRDdUNxbUcsT0E1Q3ZDcm1HLGFBNENtQzJsRSxNQTVDbkMzbEUsVUE0Q01ydUMsTUE1Q0UwbUI7OztzQkFBUjJuQjtzQkFBQUE7Z0JBNEN1Q3FtRyxPQTVDdkNybUcsYUE0Q21DMmxFLE1BNUNuQzNsRSxVQTRDTXJ1QyxNQTVDRTBtQjs7aUVBaURsQjttQ0FMaURndUg7cUJBQWpDMTBJO3VCQUE2QmcwRzs7O2dFQUw3QztrQ0FGOEJ5Z0M7b0JBQXpCejlJO3NCQUFxQjA4Rzs7Ozs7OztnQkFyQ1JodEY7OzhEQUtVOytEQUFBO2lFQUFBO2lCQS9HcEN6NkIsV0EwR2tCb2lEOzhEQUtUO2dFQUFBOzs4REFESDtnRUFBQTs7NkRBREYsaURBQUE7OzZEQUlBLHVEQUFBOzs7c0JBUGNBO3FCQUFBQTtnQkFRSHRQLElBUkdzUDs7OzhEQW9GUTs7c0JBcEZSQSw0QkFBQUEsY0FRSHRQLElBUkdzUDs4REFxRkM7b0JBckZEQTs7c0JBQUFBO21CQUFBQTs7bUJBUUh0UCxJQVJHc1A7Ozs7OztzQkFBQUE7bUJBQUFBOzs7O21CQVFIdFAsSUFSR3NQOzs7O3NCQUFBQTttQkFBQUE7O21CQVFIdFAsSUFSR3NQOzs7Ozs7c0JBQUFBO21CQUFBQTs7OzttQkFRSHRQLElBUkdzUDs7OztzQkFBQUE7bUJBQUFBOzttQkFRSHRQLElBUkdzUDs7Ozs7O3NCQUFBQTttQkFBQUE7Ozs7bUJBUUh0UCxJQVJHc1A7Ozs7c0JBQUFBO3FCQUFBQTtnQkFRSHRQLElBUkdzUDs7O3NCQUFBQTtxQkFBQUE7Z0JBUUh0UCxJQVJHc1A7OztzQkFBQUE7bUJBQUFBOzttQkFRSHRQLElBUkdzUDs7Ozs7O3NCQUFBQTttQkFBQUE7Ozs7bUJBUUh0UCxJQVJHc1A7Ozs7c0JBQUFBO21CQUFBQTs7bUJBUUh0UCxJQVJHc1A7Ozs7OztzQkFBQUE7bUJBQUFBOzs7O21CQVFIdFAsSUFSR3NQOzs7O3NCQUFBQTttQkFBQUE7O21CQVFIdFAsSUFSR3NQOzs7Ozs7c0JBQUFBO21CQUFBQTs7OzttQkFRSHRQLElBUkdzUDs7OztzQkFBQUE7bUJBQUFBOzttQkFRSHRQLElBUkdzUDs7Ozs7O3NCQUFBQTttQkFBQUE7Ozs7bUJBUUh0UCxJQVJHc1A7Ozs7c0JBQUFBO21CQUFBQTs7bUJBUUh0UCxJQVJHc1A7Ozs7Ozs7c0JBQUFBO21CQUFBQTs7bUJBUUh0UCxJQVJHc1A7Ozs7Ozs7c0JBQUFBO21CQUFBQTs7bUJBUUh0UCxJQVJHc1A7Ozs7Ozs7c0JBQUFBO3NCQUFBQTtnQkFRSHRQLElBUkdzUDs7O3NCQUFBQTttQkFBQUE7O21CQVFIdFAsSUFSR3NQOzs7Ozs7c0JBQUFBO21CQUFBQTs7OzttQkFRSHRQLElBUkdzUDs7OztzQkFBQUE7bUJBQUFBOzttQkFRSHRQLElBUkdzUDs7Ozs7O3NCQUFBQTttQkFBQUE7Ozs7bUJBUUh0UCxJQVJHc1A7Ozs7c0JBQUFBO3NCQUFBQTtnQkFRSHRQLElBUkdzUDs7O3NCQUFBQTtzQkFBQUE7Z0JBUUh0UCxJQVJHc1A7OztzQkFBQUE7c0JBQUFBO2dCQXlERnJQLE1BekRFcVA7OztzQkFBQUE7c0JBQUFBO2dCQXlERnJQLE1BekRFcVA7OztzQkFBQUE7c0JBQUFBO2dCQXdEdUI0a0UsUUF4RHZCNWtFOzhEQXdEeUM7b0JBQWxCNGtFOztzQkF4RHZCNWtFO3NCQUFBQTtnQkFzRHlDc21HLFVBdER6Q3RtRzs2REF1RGQ7b0JBRHVEc21HOztzQkF0RHpDdG1HO3NCQUFBQTt1QkFBQUE7K0RBeURGclA7OztnQkFqRERELElBUkdzUDs7OzJEQTJEdUIsV0FGekJyUDs7MERBMEJxQjs7eURBL0NiLFdBNUJURDs7Z0JBUkdzUCw0QkFBQUEsY0FBQXVtRyxRQUFBdm1HLFVBQUFBLFFBQUF1bUc7O2dCQUFRbHVILDBCQUFBQTt5REF1Rk4sV0F2RkYybkI7Z0JBQUFBLDRCQUFBQSxjQUFBd21HLFFBQUF4bUcsVUFBQUEsUUFBQXdtRzs7Z0JBQVFudUgsMkJBQUFBO3lEQXlGVCxXQXpGQzJuQjtnQkFBQUE7eURBMkZEO2dCQTNGQ0EsY0FBQXltRyxRQUFBem1HLFVBQUFBLFFBQUF5bUc7O3NEQWtHZDs7b0RBR0g7Ozs7T0E5UEQvcUk7T0FBQUM7T0FDQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0E2Q0F6ZDtPQUFBRztPQUFBZ25HO09BQUFDO09BQUFDO09BQUFDO09BQ0E5bkc7T0E0REEwc0c7T0FFQUM7T0E5REE3c0c7T0E0REEwNUc7T0FFQTJHO09BOURBaGdIO09BNERBc2dIO09BRUFDO09BOURBeGdIO09BNERBa21IO09BRUFDO09BRVEraEM7T0EwQ0FDOzs7YTs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3JKSk87eURBQWtDO3dEQUFpQjtZQUVuREMsY0FDQ3Y1RixLQUFrQkM7MERBQzJCOzJEQUM1Qjs2REFBQTt1Q0FGakJEOzJEQUVpQjs2REFBQTs7S0FBUkU7S0FBUDFLOzJEQUNlOzZEQUFBO3VDQUhDeUs7MkRBR0Q7NkRBQUE7O0tBQVJFO0tBQVAxSzt5REFDRjs7MkRBQUE7UUFGRUQsT0FDQUM7MERBWUU7MERBVk07MkRBQUE7NkRBQUE7K0RBQVE7O1NBSFR5SzsyREFHTnM1Rjs2REFBTzsrREFBdUM7OzsyREFDdkM7NkRBQUE7K0RBQVE7O1NBSFRyNUY7MkRBR05zNUY7NkRBQU87K0RBQXVDOzs7MkRBQ3pCOzZEQUFBO3lCQURyQkE7OzJEQUNBO3dCQUZBRDs7MkRBT0c7MERBSEc7MkRBQUE7NkRBQUE7MEJBSk5BLFFBQ0FDOzJEQUdLOzZEQUFBOytEQUF3Qjs0QkFQOUJqa0c7OzBEQUt5QztpRUFFeEM7O3dEQVNQO1lBRU9ra0csbUJBQVdoOUUsSUFBYXhrRTt5REFDOUIsSUFEOEIwL0csTUFBQTEvRzt5REFDOUI7Y0FEOEIwL0c7NERBRVI7ZUFGTGw3Qzs0REFLRjs7Ozs7O2NBTEVBOztnRUFNYTs7Z0VBQ0w7O2dFQUNHOztnRUFFaEI7V0FETGpvRSxJQVRVaW9FO2lFQVVYNDZCO21FQUFNOzs7bUJBREw3aUcsR0FUdUJtakg7K0RBVzVCLFdBREl0Z0I7O2NBNkJJOTNDLEtBdkNPa2Q7aUJBQWFrN0M7O2lCQXVDUm40RCxLQXZDUW00RDtvQkF1Q3BCcDRELE9BQVlDOzt1QkF2Q1FtNEQsUUFBQWtDLE1BQUFsQzs7O3lCQUFBQTsrREFBQUEsTUFBQWtDOzs7Ozt3QkFBQWxDOzs7a0JBQUFBLE1BQUFrQzs7Ozs7OztjQWdEbEI2L0IsT0FoREtqOUU7aUJBQWFrN0M7O2lCQWdESmdpQyxPQWhESWhpQztvQkFnRGxCK2hDLFFBQWNDOzt1QkFoREloaUMsUUFBQW1DLE1BQUFuQzs7O3lCQUFBQTsrREFBQUEsTUFBQW1DOzs7Ozt3QkFBQW5DOzs7a0JBQUFBLE1BQUFtQzs7Ozs7OztjQThCbkI4L0IsS0E5Qk1uOUU7aUJBQWFrN0M7O2lCQThCTmtpQyxLQTlCTWxpQztvQkE4Qm5CaWlDLE9BQWFDOzt1QkE5Qk1saUMsUUFBQW1pQyxNQUFBbmlDOzs7eUJBQUFBOytEQUFBQSxNQUFBbWlDOzs7Ozt3QkFBQW5pQzs7O2tCQUFBQSxNQUFBbWlDOzs7Ozs7O2NBeURqQnp1SCxLQXpESW94QztpQkFBYWs3Qzs7aUJBeURGNkYsS0F6REU3RjtrRUEwRHpCLDREQUFBO3VCQURRdHNGLElBQWVteUY7Ozs7dUJBekRFN0YsUUFBQW9pQyxNQUFBcGlDOzs7eUJBQUFBOytEQUFBQSxNQUFBb2lDOzs7Ozt5QkFBQXBpQzs7O2tCQUFBQSxNQUFBb2lDOzs7Ozs7O2lCQUFBcGlDOztpQkFBQUE7O2NBc0lyQnA3QyxNQXRJUUU7aUJBQWFrN0M7O29FQWtISjtjQURMdHlHLEtBakhTc3lHO3FFQWtISjt1RUFBQTtrQ0FETHR5Rzs7cUVBQ2Y7aUNBb0JHazNEOztxRUFwQmtDO21FQWVyQztvRUFBQTs7O3lCQVhDam1CLFFBQVFtbUIsSUFBSXhrRTt3RUFDWDswQkFERHErQzt5QkFBQUE7d0VBS1U7a0JBREMrZ0QsTUFKWC9nRDt5RUFLVTtxQkEzSFgwakcsUUFzSFN2OUUsSUFBSXhrRTs7cUJBUUNnaUo7d0VBQVM7Z0ZBQVE7c0RBSm5CNWlELEtBSUU0aUQ7dUVBRVg7b0VBWkEsOERBQUE7bURBa0JBMTlFLEtBckJZbDNEOztpQkFxQkQ2MEksTUF0SVV2aUMsZUFBQUE7Ozs7OytCQUFBQTs7eUVBNEpEO21CQU5XNTREOzBFQU1YOzs0RUFBQTt1Q0FOV0E7MEVBTXJCOzs0RUFBQTs4Q0FuTGpCczZGO3lFQW1MSTsyRUFBQTs4Q0FOa0N0NkY7OzhCQUtsQzFvRDs2RUFBSzs4QkFBTEE7OzRFQUFRO3dFQURWLE9BMEZGOGpKOzJCQTlHTzU5RTsyQkFBVzI5RTtpRkFvQmhCOzs7OzsrQkExSjBCdmlDLFFBc0lGeWlDOzs7OzRFQWFNOzZFQUFBOzsrRUFBQTswQ0FiTkE7NkVBYUo7OytFQUFBO2lEQTFLdEJmOzRFQTBLSTs4RUFBQTsyQ0Fic0JlOztpQ0FZdEIvako7Z0ZBQUs7aUNBQUxBOzsrRUFBUTsyRUFEVixPQW1HRjhqSjs4QkE5R081OUU7OEJBQVcyOUU7b0ZBV2hCOzs7NEVBVnlCO3NCQURVRzs2RUFDVjs7K0VBQUE7MENBRFVBOzs4RUFDOUI7eUNBRG1CRDs7NEVBQzFCLDREQUFBOzs0RUFJcUI7NkVBQUE7OytFQUFBOzJDQUxLQSxPQUFXQzs7aUNBSzFCaGtKO2dGQUFLO2lDQUFMQTs7K0VBQVE7MkVBQWpCLE9BeUdGOGpKOzhCQTlHTzU5RTs4QkFBVzI5RTtvRkFLaEI7Ozs7O29FQW9CcUI7Ozs7Y0EzRFRobUcsTUFwR0N1b0I7aUJBQWFrN0M7O2lCQWlHR3JqRSxRQWpHSHFqRTswRUFrRzVCO3VCQUVjempFLEtBSGlCSTs7Ozt3QkFqR0hxakUsUUFxR3JCMmlDLE1BckdxQjNpQzs7Ozs7NEJBQUFBOzs7Ozs7Ozs7OztzQkFBQUEsTUFxR3JCMmlDOzs7OztxQkFBT3Y2Rjs7O21FQUFBQTs7Ozt5QkFyR2M0M0Q7Ozs7O3NCQUFBQSxNQXFHckIyaUM7O3NCQUFvQ3Q2Rjs7O29FQUFBQTs7OztzRUFFcEMsdURBQUE7MEJBNUhQczVGLGNBMEhjdjVGLEtBQTZCQzs7dUVBSWpDO3NFQUR3QztnQkFBM0N1NkY7dUVBQTJDO3NCQUEzQ0E7O3NFQUEyQzs7dUVBQUEsOERBQUE7eUJBcUVsREMsc0JBekVjdG1HLFdBQ1BvbUc7O3NFQUcyQyxPQXFFbERFO21DQXpFY3RtRyxXQUNQb21HOzs7Ozs7OztjQWxDSHg5RSxNQW5FV0wsT0FtRU5JLE1BbkVNSjs7aUJBQWFrN0M7O21FQW9FckI7Y0FEZTBCLEtBbkVNMUI7Y0FtRVYyQixLQW5FVTNCO29FQW9FckI7Z0JBcEVIcWlDLFFBbUVBbDlFLEtBQWN3OEM7OztzRUFFQTtxRUFFVCx1REFBQTt5QkF2RUwwZ0MsUUFtRUtuOUUsS0FBYXc4QztxRUFJYjs7c0VBQ1c7cUVBRUY7O29FQUdUO2NBREM3aEI7cUVBQ0Q7Z0JBN0VMd2lELFFBbUVLbjlFLEtBQWF3OEM7O2lCQWFWNWhCO29FQUFTOzRFQUFRO2tEQUpuQkQsTUFJRUM7O3dCQWhGZ0JrZ0IsUUFBQThpQyxPQUFBOWlDOzs7Ozs7OzZCQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUFBQTs7Ozs7a0JBQUFBLE1BQUE4aUM7Ozs7O29CQW1FeEIzOUUsMkJBQUFBO3FCQW5Fd0I2NkM7c0JBQUFBLFFBcUZyQitpQyxNQXJGcUIvaUMsUUFvRkxnakMsU0FwRlJsK0UsT0FvRkVtK0UsUUFqQmI5OUU7Ozs7O21CQWtCVSs5RTs7O2lFQUFBQTs7Ozt1QkFyRmNsakM7Ozs7O29CQXFGZW1qQzs7O2tFQUFBQTs7OztvRUFFcEMsdURBQUE7d0JBNUdQeEIsY0EwR2N1QixPQUE2QkM7O3FFQUlqQztvRUFEZ0Q7Y0FBbkRDO3FFQUFtRDtvQkFBbkRBO3FFQUFrQztvQkFKbEJKO29FQUltQzs7cUVBQUEsOERBQUE7dUJBcUYxREgsc0JBekZpQkksYUFDVkY7O29FQUdtRCxPQXFGMURGO2lDQXpGaUJJLGFBQ1ZGOzs7Ozs7OztnRUFqRmlCOzs4REFzS0ksT0FzSzVCTTtnQkFoVmV2K0UsSUFBYWs3Qzs7YUFBQUE7OytEQVlQOzsrREFDRzs7K0RBR0w7OytEQUNJOzsrREFDUjs7K0RBQ0M7OytEQUNEOzsrREFDTTs7K0RBQ0Q7OytEQUNFOzsrREFDVTs7K0RBVlY7OytEQUNNOzs7YUFmQStCLE1BQUEvQixRQUFBQSxNQUFBK0I7OztlQUFiajlDO2FBQUFBOzsrREF3REs7OytEQWxCRDs7K0RBMkJFOztnRUErRko7O2dFQWpETTs7Z0VBaEJOOzs7O21CQS9GV2s3QztvQkFBQUEsUUFpS0FJLE1BaktBSjs7OzswQkFBQUE7O21CQW1Lb0IvNEQ7c0VBQ3ZCLE9BNEt6Qm84Rjt3QkFoVmV2K0UsSUFpS2FzN0Msa0JBRW9CbjVEOzs7OzRCQW5LcEIrNEQsUUFpS1E5NEQ7Ozs7eUVBS1gsT0EwS3pCbThGOzJCQWhWZXYrRSxJQWlLYXM3QyxhQUFRbDVEOztzQkFBV29DO3lFQUN0QixPQThLekIrNUY7MkJBaFZlditFLElBaUthczdDLGFBQVFsNUQsS0FBV29DOzs7OztnRUFVbEI7OzJEQTVIWDs7eURBNkhuQjtZQUNDdTVGLDBCQUVFdG1HLEtBQ0F1b0IsSUFDQXhrRSxHQUNBZ2pKOzBEQUdKO0tBSkl0akMsTUFBQTEvRztLQUNBaWpKLGFBQUFEOzBEQUdKOzs7YUFKSXRqQzs7cUJBQUFBOztnRUFpQnFCO1VBSERJLE1BZHBCSjtVQWNhcmpFO2lFQUdRO21FQUFBOzRDQUhSQTtnRUFHYjtrRUFBQTtxRUFBWTs7Y0FoQlo0bUc7Z0VBZ0JBO2tFQUFBOztZQWxCQXorRTtpRUFxQlk7V0FESTArRTtXQUFWeitFLE9BcEJORDtrRUFxQlk7b0VBQUE7b0NBTlFzN0MsS0FLSm9qQztpRUFDSjs7a0VBQUEsOERBQUE7b0JBck1WMUIsZUFvTUkvOEU7O2lFQUNNLE9Bck1WKzhFOzhCQW9NSS84RTs7Z0VBRUQ7O2dFQWJnQjtVQUhYaytFLFFBTFZqakM7aUVBUXFCO21FQUFBOzRDQUhYaWpDO2dFQUdWO2tFQUFBO3FFQUFZOztjQVBaTTtnRUFPQTtrRUFBQTs7Y0FUQXorRTt1RUFZQTtvQkFiQXZvQixLQU9VMG1HOzs7Z0VBT0w7O2FBWkxsaEMsTUFBQS9CLGNBQUFBOzs7Ozs7Ozt3QkFBQUE7Ozs7Ozs7Ozs7Ozs7OztrQkF1Qlc1M0Q7Ozs4REFBQUE7Ozs7cUJBdkJYNDNEOzs7Ozs7O21CQXVCd0MzM0Q7OzsrREFBQUE7Ozs7bUVBQ25DLHVEQUFBO3VCQTlOUHM1RixjQTZOYXY1RixLQUE2QkM7O29FQUdoQzttRUFEdUM7YUFBMUN1NkY7b0VBeEJMYTtvQkF3QktiLFNBeEJMVzthQURBdmpDLE1BQUErQjthQUNBd2hDLGFBQUFFOzs7OztjQURBempDLE1BQUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkRBaUVlOzs0REFmQTs7eURBZ0JsQjtZQW5QS3NnQyxRQUFXdjlFLElBQWF4a0U7ZSx1QkFBeEJ3aEosYUFBV2g5RSxJQUFheGtFOztZQW9QNUJraUosbUJBRUU1OUUsS0FDQXRrRSxHQUNBb2pKOzBEQUdKO0tBSkkxakMsTUFBQTEvRztLQUNBcWpKLGNBQUFEOzBEQUdKOztZQUpJMWpDOzsrREFtRmM7OytEQUNHOzsrREE1Qkk7OytEQUZUOzsrREFDSTs7c0JBdkRoQkE7OytEQThEYzs7K0RBVEQ7OytEQUlDOzsrREFDQzs7K0RBQ0U7OytEQUlQOzsrREFDTzs7K0RBTU47OytEQUlFOzsrREFDQzs7K0RBQ0Y7OytEQUNBOzsrREFDRzs7K0RBeEVPO1NBRGxCdHlHLEtBTEpzeUc7Z0VBTXNCO2tFQUFBOzZCQURsQnR5Rzs7Z0VBQ0Y7NEJBUEZrM0Q7O2dFQU91QzsrREFHTTtnRUFBQTtrRUFBQTs2QkFSN0MrK0U7Z0VBUW1CO2tFQUFBOzhCQVZuQi8rRSxLQU1JbDNEOztpRUFJRzs7OytEQUFQLDREQUFBOzs4REFlRTsrREFBQTs7Z0VBRGE7a0VBQUE7OEJBeEJmazNELEtBTUlsM0Q7K0RBa0JGO2lFQUFBO21DQXRCRmkySTs7MkJBVXFCaGxHO2tFQUFuQjthQUFXNGdFOzthQUFKai9HO2FBQUp3a0U7c0JBQWdCbm1CO29FQUdELE9BSENBO21FQUtSO2FBREMrZ0QsTUFKTy9nRDtvRUFLUjtlQXZRWDBqRztpQkFrUUd2OUU7d0VBS3FCO3dDQUxqQnhrRSxHQUFJaS9HOztnQkFRRytpQzttRUFBUzsyRUFBUTtpREFKbkI1aUQsS0FJRTRpRDtpRUFHYjs4REFFRCw2REFBQTs7OytEQXVETTs7K0RBQ1E7O1lBaEZoQmxpQyxNQUFBSixjQUFBQTs7Ozs7d0JBQUFBOztvRUE4Q2tCO2NBRE01NEQ7cUVBQ047dUVBQUE7a0NBRE1BO3FFQUN0QnE3Rjt1RUFBTTt3Q0E1VFZmO3FFQWdVdUI7dUVBQUE7bUNBSm5CZSxPQURzQnI3RjtvRUE1Q3hCdzhGOztzRUFpREE7d0RBakRBRDtjQURBM2pDLE1BQUFJO2NBQ0F1akMsY0FBQUM7Ozs7OzBCQURBNWpDLFFBMkJZMGlDOzs7O3VFQVlPO3dFQUFBOzBFQUFBO3FDQVpQQTt3RUFZVm1COzswRUFBTzsyQ0FyVFhuQzt3RUF5VHVCOzBFQUFBO3NDQWhCVGdCLE9BWVZtQjt1RUF0Q0ZDOzt5RUEwQ0E7MkRBMUNBSDtpQkFEQTNqQyxNQUFBSTtpQkFDQXVqQyxjQUFBRzs7O3VFQTJCc0I7aUJBRENDO3dFQUNEOzBFQUFBO3FDQURWckI7O3dFQUNWO29DQTdCRjk5RTs7d0VBNkJ3Qzt1RUFHYix1REFBQTs7MEVBQUE7cUNBSkptL0U7O3lFQUloQjtvQ0FKS3JCOzt1RUFJWiw0REFBQTs7dUVBSXVCO3dFQUFBOzBFQUFBO3NDQVJYQSxPQUFXcUI7dUVBMUJ2QkM7O3lFQWtDRTsyREFsQ0ZMO2lCQURBM2pDLE1BQUFJO2lCQUNBdWpDLGNBQUFLOzs7OzsrREFtRGU7OytEQWlDTTs7K0RBQ0E7OytEQUNOOzs7K0RBTFU7Ozs7K0RBVGhCOzsrREFKRzs7eURBbUJmO1lBQ0NYLGtCQUNDditFLElBQWF4a0UsR0FBWW9qSjswREFDNUI7S0FEZ0IxakMsTUFBQTEvRztLQUFZcWpKLGNBQUFEOzBEQUM1Qjs7WUFEZ0IxakM7OytEQW1JRTs7K0RBQ0c7OytEQTFCSTs7K0RBRlQ7OytEQUNJOztZQXpHSkksTUFBQUosUUFBQUEsTUFBQUk7O1lBQUEyQixNQUFBL0IsUUFBQUEsTUFBQStCOzsrREF1R0M7OytEQUlDOzsrREFDQzs7K0RBQ0U7OytEQUdQOzsrREFDTzs7K0RBT0w7OytEQUNEOzsrREFHRTs7K0RBQ0M7O1lBdEhFcjBHLEtBUEpzeUcsUUFPQW41RCxLQVBBbTVELFFBT0gxekcsSUFQRzB6RyxRQU9OTixJQVBNTTthQU9JdHlHO21CQVBqQm8zRCwwQkFBQUEsV0FBQUE7aUVBSW1COztnRUFDYjs7WUFFb0JtL0UsTUFBVHYySSxPQUFDdzJJLE1BQUR4Mkk7OERBQ2xCO2lCQVJDbzNEOytEQVFELE9BUkNBOzttRUE4QlE7YUFESUYsTUE3QlpFO29FQThCUTtzRUFBQTtvQ0FESUYsS0F0QktsM0Q7O29FQXdCTjtrRUFFUjthQURLeTJJOzs7dUVBRU87aUJBQU03ako7aUJBQUp3a0U7dUVBQ0csT0FwWGpCdTlFO3lCQW1YY3Y5RTtnRkFDRztnREFEQ3hrRSxHQWxDSXFqSjtzRUFtQzJCO21FQUZqRDtxRUFBQTt3RUFDRzs7aUJBRkVRO29FQWVBOzs7d0JBVENDLFFBQVFDO3VFQUNQOzsyQkFEREQsMEJBQUFBO2dDQUFRQztzQkFNbUJ2a0QsT0FObkJ1a0QsV0FNSXhrRCxPQU5adWtEO3lFQU9HO2lGQUFRO3VEQURDdmtELE1BQWVDOzsyQkFObkJ1a0QseUJBQUFBO3dFQUtjOzt1RUFGRTtzRUFLdEI7a0VBYlIsNkRBQUE7NEVBSUc7Ozs7bUVBM0JFO2FBREduL0UsTUFUWEo7YUFTTUssTUFUTkw7b0VBVVE7ZUEzVkx1OUU7aUJBMFZHbDlFO3dFQUNnQjt3Q0FISisrRSxLQVBPUDs7bUVBZXBCO2FBRk05akQ7O3dCQUdIbjBEO3VFQUFzQjtpQkFDWHViLE1BRFh2YjtpQkFDTXdiLE1BRE54Yjt1RUFFQzs0QkFES3diOzRCQUFLRDtzRUFFWDtvRUFMRHE5Rjs7c0VBQ0Y7dUNBZm9CWDtvRUFzQmxCamlDO29CQWZBaEMsR0FBR3B6RyxHQUFHdTZDLElBQWFvOUY7b0VBZ0JoQjtlQXhXUDVCO2lCQTBWUW45RTt3RUFjYTt3Q0FEakJ3OEMsSUFSQTRpQzs7Z0JBWU14a0Q7bUVBQVM7MkVBQVE7aURBYm5CRCxNQWFFQzs7K0RBd0JQLDhEQUFBOzs7WUFFRThoQixPQXBESzVCLFFBb0RUMkIsS0FwRFMzQjs4REFxRGQ7aUJBckRDbDdDOytEQXFERCxPQXJEQ0E7OzBCQUFBQSxPQTBFUzlkLE9BMUVUOGQ7O29FQXlFbUI7bUVBRVg7YUFEZXkvRTthQUFUQztvRUFDTjtlQTVaTG5DO2lCQTJaV21DO3dFQUNTO3dDQXZCbkI3aUMsSUFwRHFCZ2lDOzttRUFnRnBCO2FBRk1jOzt3QkFHSC80Rzt1RUFBc0I7aUJBQ1h1YixNQURYdmI7aUJBQ013YixNQUROeGI7dUVBRUM7NEJBREt3Yjs0QkFBS0Q7c0VBRVg7b0VBTER5OUY7O3NFQUNGO3VDQWhGb0JmO29FQXVGbEI1OUI7b0JBYkUvK0QsTUFBY3U5RjtvRUFjYjtlQXphUGxDO2lCQXdhSXQ4Qjt3RUFDaUI7d0NBcENoQm5FLE1BMkJEOGlDOztnQkFZTUM7bUVBQVM7MkVBQVE7aURBYm5CRixRQWFFRTs7bUVBcENMO2FBREdDLFFBdERYOS9FO2FBc0RNUSxRQXRETlI7b0VBdURRO2VBeFlMdTlFO2lCQXVZRy84RTt3RUFDZ0I7d0NBSGxCcThDLElBcERxQmdpQzs7bUVBNERwQjthQUZNa0I7O3dCQUdIbjVHO3VFQUFzQjtpQkFDWHViLE1BRFh2YjtpQkFDTXdiLE1BRE54Yjt1RUFFQzs0QkFES3diOzRCQUFLRDtzRUFFWDtvRUFMRDY5Rjs7c0VBQ0Y7dUNBNURvQm5CO29FQW1FZjtlQXBaUHRCO2lCQXVZUXVDO3dFQWFhO3dDQWZoQmhqQyxNQU9Ea2pDOztnQkFXTUM7bUVBQVM7MkVBQVE7aURBWm5CRixRQVlFRTs7K0RBd0JQLDhEQUFBOzs7K0RBZ0NLOzsrREFDRjs7K0RBQ1E7O1lBaElKN2lDLE1BQUFsQyxjQUFBQTs7Ozs7MEJBQUFBOztvRUFxR1k7Y0FEQS80RDtxRUFwR0EyOEY7OEJBb0dBMzhGLE1BcEdBMDhGO2NBQVozakMsTUFBQWtDO2NBQVl5aEMsY0FBQUM7Ozs7OzBCQUFaNWpDLFFBZ0dBOTREOzs7O3VFQUdZO3dFQW5HQTQ4Rjs0QkFnR1o1OEYsV0FoR1l5OEY7aUJBQVozakMsTUFBQWtDO2lCQUFZeWhDLGNBQUFHOzs7dUVBaUdBO2lCQUREeDZGO3dFQWhHQzA2Rjs0QkFnR1o5OEYsS0FBV29DLFFBaEdDcTZGO2lCQUFaM2pDLE1BQUFrQztpQkFBWXloQyxjQUFBSzs7Ozs7K0RBc0dUOzsrREErQk07OytEQUNBOzsrREFDTjs7OytEQVpOOzs7K0RBT2dCOzsrREFYVjs7eURBaUJsQjtvQ0F6ZEszQjs7OzthOzs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7Ozs7O0lDN0JSMWpKO0lBQUFoRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQURBVyxHQUNBc0M7c0RBQUE7O3lEQUFBLHlEQUFBO21DQUFBQTs7eURBQUEseURBQUE7bUNBQUFBOzt5REFBQSx5REFBQTttQ0FBQUE7O3FEQUdTO1lBSlRuQyxLQUNBb0Q7c0RBQUEseURBQUE7c0NBREF2RCxJQUNBdUQ7cURBR1M7cURBSFQsU0FBQS9EO0lBQUErRjtzREFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7Ozs7OzBEQUFBOzt5REFBQTs7d0RBQUE7O2VBQUFBOzt3REFBQSx5REFBQTs0Q0FBQUYsa0JBQUFFOzs7d0RBQUEseURBQUE7NENBQUFGLGtCQUFBRTs7Ozs7Ozs7Ozs7eURBQUEseURBQUE7NkNBQUFGLGtCQUFBRTs7d0RBQUEseURBQUE7NENBQUFGLGtCQUFBRTs7dURBQUEseURBQUE7MkNBQUFGLGtCQUFBRTs7c0RBQUEseURBQUE7MENBQUFGLGtCQUFBRTtxREFHUztZQUhUakc7c0RBQUE7O3lEQUNJOzt5REFDQTtpRUFDQTs7cURBQUs7cURBSFQsU0FBQUs7SUFBQXdCO3NEQUFBO2FBQUFBLHFDQUFBQTtlQUFBQTs7d0RBQUEseURBQUE7a0RBQUE5QixRQUFBOEI7Ozs7Ozs7O29FQUFBO3NEQUFBOUIsUUFBQThCOzs7O29FQUFBO3NEQUFBOUIsUUFBQThCOzs7O29FQUFBO3NEQUFBOUIsUUFBQThCOzs7O3lEQUFBLHlEQUFBO21EQUFBOUIsUUFBQThCOzs7c0RBQUEseURBQUE7Z0RBQUE5QixRQUFBOEI7cURBR1M7WUFIVHpCO3NEQUFBOzt5REFDSTs7eURBQ0E7aUVBQ0E7O3FEQUFLO1lBRUxJO3NEQUNGOzswREFDVTs7MkRBQ0E7OzJEQUNDOzt1REFBTztZQUVoQjR2RCxLQUNEMXNELEdBQUdpaUM7dURBQ0YsT0FERGppQzs7MkRBS2dCLE9BTGJpaUM7OzJEQUVhOzRCQUZiQTs7c0RBTUQ7dURBRXdCO3dEQUF6QjZyQjswREFBeUI7eUJBVHpCcEI7OztPQVpKMXZEO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BS0lJO09BTUE0dkQ7T0FTQW9COzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQ2pCSjNpRDtJQUFBOU87SUFNQTRQO0lBQUFwSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVBBNmxKO0lBQUFDO1lBQUF0a0o7bURBQUE7O21EQUM4QztZQUQ5Q3ZCO21EQUFBO21EQUM4Qzs7S0FEOUM0bEo7Y0FDQXBwSjtxREFBQTtPQURBOEw7T0FBQXJJO3NEQUN1QixnREFBQTs0QkFBdkJ6RDtxREFEQSwrQ0FBQTt1REFBQSxXQUFBd0QsT0FDQXhEO1FBREF5RDtzREFDdUIsZ0RBQUE7NEJBQXZCekQ7cURBREEsK0NBQUE7dURBQUEsV0FBQStFLE9BQ0EvRTtRQURBOEw7cURBQUEsc0RBQUE7bUNBQ0E5TDtxREFBOEM7O0tBRDlDcXBKO2NBQ0Fwb0o7cURBQUEsc0RBQUE7d0NBREFtb0osb0JBQ0Fub0o7cURBQThDO2tEQUE5QztHQUFBcW9KO0lBQXVCNWdKO21EQUF2QixTQUF1QkE7ZUFBQUE7Ozs7dURBQUE7UUFBQXFEO1FBQUFDO3dEQUFBQzswREFBQTtpQ0FBQUQ7d0RBQUFFOzBEQUFBO3FDQUFBSDt1REFBQTtlQUFBRTtlQUFBQzs7OztvREFBQSx1REFBQTswQ0FBdkJMLHFCQUF1Qm5EO21EQUF1QjtZQUE5QzZnSjttREFBQTtLQUF1QnA5STtLQUFBdEk7S0FBQXVJLDBDQUFBdkk7S0FBQXdJLCtDQUFBRjttQkFBQUMsY0FBQUM7bURBQXVCO2tEQUE5QztHQUFBbTlJO0lBQXVCM3FKO21EQUF2QjthQUF1QkEscUNBQUFBO2VBQUFBOzs7OztRQUFBQztRQUFBQztRQUFBQyx1Q0FBQUQ7UUFBQUUsMkNBQUFIO2tCQUFBRSxNQUFBQzs7Ozt5REFBdkJsQyxXQUF1QjhCO21EQUF1QjtZQUE5QzRxSjttREFBQTtLQUF1QjNxSjtLQUFBQztLQUFBQyx1Q0FBQUQ7S0FBQUUsMkNBQUFIOzhCQUFBRSxVQUFBQzttREFBdUI7WUFFMUN5cUosYUFDRkM7aUM7b0RBQStCLGdEQUFBOzt1REFBQTsrQkFBL0JBO29EQUErQix1REFBQTs7bURBQXVCOztJQUV4REM7SUFBQUM7WUFBQXI5STtvREFBQSxPQU5BNDhJO29EQU9rRDtZQURsRHBrSjtvREFBQTs7b0RBQ2tEOztLQURsRDRrSjtjQUNBNXBKO3NEQUFBO09BREE4TDtPQUFBckk7dURBQ2MsaURBQUE7NEJBQWR6RDtzREFEQSxnREFBQTt3REFBQTtVQUFBZ0YsU0FDQWhGO1FBREF5RDt1REFDYyxpREFBQTs0QkFBZHpEO3NEQURBLFVBQzRCaUI7MERBQUEsaURBQUE7K0JBQTVCakI7O3NCQUE0QnVMLEtBQUF0SzsyREFBQSxHQUFBc0s7NERBQUEsaURBQUE7aUNBQTVCdkw7MkRBQTRCLGlEQUFBOzREQUQ1QjtjQUFBd00sU0FDQXhNO1lBQTRCaUI7MkRBQUE7MERBQXFCOzBEQUFyQixpREFBQTtzQ0FBQUE7MERBQUEsd0RBQUE7c0NBQTVCakI7eURBQWlEO1NBRGpEOEw7c0RBQUEsdURBQUE7bUNBQ0E5TDtzREFBa0Q7O0tBRGxENnBKO2NBQ0E1b0o7c0RBQUEsdURBQUE7d0NBREEyb0osV0FDQTNvSjtzREFBa0Q7WUFBbEQ2b0osZUFBY2grRztvREFBZCxTQUFjQTtlQUFBQTs7Ozt3REFBQTtRQUFBeGhCO1FBQUFuRjt5REFBQW9GOzJEQUFBO29DQUFBcEY7eURBQUFxRjsyREFBQTs2QkFOZDgrSCx5QkFNY2gvSDt3REFBQTtlQUFBQztlQUFBQzs7OztxREFBQSx3REFBQTswQ0FBZDdkLHFCQUFjbS9CO29EQUFvQztZQUFsRGkrRztvREFBQTtLQUFjbHFHO0tBQUE1akM7S0FBQWdFLDhDQUFBaEU7S0FBQTZqQyx1Q0FOZHlwRyx5QkFNYzFwRzttQkFBQTUvQixjQUFBNi9CO29EQUFvQztZQUFsRGtxRyxpQkFBY25ySjtvREFBZDthQUFjQSxxQ0FBQUE7ZUFBQUE7Ozs7O1FBQUFDO1FBQUFDO1FBQUFDLDBDQUFBRDtRQUFBRTs7O1lBTmR1cUo7WUFNYzFxSjtrQkFBQUUsTUFBQUM7Ozs7eURBQWRzRSxhQUFjMUU7b0RBQW9DO1lBQWxEb3JKO29EQUFBO0tBQWNucko7S0FBQUM7S0FBQUMsMENBQUFEO0tBQUFFOzs7U0FOZHdxSjtTQU1jM3FKOzhCQUFBRSxVQUFBQztvREFBb0M7O0lBRWxEdkI7SUFBQUc7WUFBQTBXO29EQUFBLE9BSEFxMUk7b0RBSXFCOztLQURyQmxzSjtjQUNBc0MsS0FBU2lCO3NEQUFBLGdEQUFBOzRCQUFUakI7O21CQUFTdUwsS0FBQXRLO3VEQUFBLEdBQUFzSzt3REFBQSxnREFBQTs4QkFBVHZMO3VEQUFTLGdEQUFBO3lEQURUO1dBQUF1VSxTQUNBdlU7U0FBU2lCO3VEQUFBO3VEQUFZO3NEQUFaLGdEQUFBO21DQUFBQTtzREFBQSx1REFBQTttQ0FBVGpCO3NEQUFxQjs7S0FEckJuQztjQUNBb0Q7c0RBQUEsdURBQUE7d0NBREF2RCxJQUNBdUQ7c0RBQXFCO1lBQXJCL0QsVUFBQWd0SjtvREFBQSx1REFBQTs4QkFIQUosZ0JBR0FJO29EQUFxQjtZQUFyQmx0SixVQUFBbXRKO29EQUFBLHVEQUFBOzhCQUhBSixnQkFHQUk7b0RBQXFCO21EQUFyQixTQUFBOXNKLFlBQUFKO2U7dURBSEErc0osa0JBR0Evc0o7O1lBQUFHLFlBQUE2QztlO3VEQUhBZ3FKLGtCQUdBaHFKOztPQUdJKytDLDBCQUZBdDFCO1lBSUEwZ0ksZ0JBQW1CcmlKLEdBQUdzaUo7b0RBQ3hCLGdEQUFPOzt1REFBQTtTQUhMcnJHLFFBRW1CajNDLEdBQUdzaUo7aUVBRWQ7UUFDSFY7cURBQVksT0FmakJEO2FBZUtDO21EQUNOO1lBRUMvcUcsY0FBd0J5ckc7cURBQWY7S0FBTUM7S0FBSjFzSjtxREFDTjt1REFBQTswQkFETUEsSUFBYXlzSjs7c0RBR0wsd0RBQUE7MEJBSEtBLGtCQUFienNKLFFBQUkwc0o7cURBRThCO0tBQXhDNXBKO3NEQUF3Qzs7O1NBRmxDOUM7MERBRXdDO3VCQUE5QzhDLE9BRlU0cEo7O3NEQUVKO3dEQUFBOzBCQUZBMXNKLElBQWF5c0o7cURBRXFCLHdEQUFBOzttREFHaEQ7b0RBTFksaURBQUE7SUFPVC9xSDtZQUVBaXJILGFBQWdCQyxRQUFRSDs7cURBRXhCLElBQUtJO1lBRldELFdBM0JoQmQsYUE2QktlO3FEQUFnRDtvREFEdkQsZ0RBQUE7O3VEQUFBOytCQUQwQko7b0RBQzFCLHVEQUFBOztvREFJYzs7OztPQW5DaEJqQjtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUVJQztPQUdKRTtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUVBdnNKO09BQUFHO09BQ0FYO09BQUFGO09BQUFLO09BQUFEO09BQ0lzc0I7T0FFQXMxQjtPQUVBb3JHO09BTUF4ckc7T0FPQXRmO09BRUFpckg7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDY0p4bko7SUFBQWhHO0lBNkJFMFU7O0lBT0lpNUk7SUFVQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEvQ05DO0lBQUFDO1lBQUFyckk7dURBQUE7OztzREEwQlE7WUExQlI1Uzt1REFBQTs7O3NEQTBCUTtZQTFCUjdIO3VEQUFBOzs7c0RBMEJRO1lBMUJSdkI7dURBQUE7OztzREEwQlE7O0tBMUJSb25KO2NBQ0E1cUo7eURBQUE7Ozs7NkRBQUEsMERBQUE7c0NBQUFBOzs2REFBQSwwREFBQTtzQ0FBQUE7OzZEQUFBLDBEQUFBO3NDQUFBQTs7NkRBQUEsMERBQUE7c0NBQUFBOzs2REFBQSwwREFBQTtzQ0FBQUE7OzZEQUFBLDBEQUFBO3NDQUFBQTs7NkRBQUEsMERBQUE7c0NBQUFBOzs2REFBQSwwREFBQTtzQ0FBQUE7OzZEQUFBLDBEQUFBO3NDQUFBQTs7NkRBQUEsMERBQUE7c0NBQUFBOzs2REFBQSwwREFBQTtzQ0FBQUE7OzZEQUFBLDBEQUFBO3NDQUFBQTs7NkRBQUEsMERBQUE7c0NBQUFBOzs2REFBQSwwREFBQTtzQ0FBQUE7OzZEQUFBLDBEQUFBO3NDQUFBQTs7NkRBQUEsMERBQUE7c0NBQUFBOzs2REFBQSwwREFBQTtzQ0FBQUE7OzZEQUFBLDBEQUFBO3NDQUFBQTs7NkRBQUEsMERBQUE7c0NBQUFBOzs7O2FBREF5RDs0REFDQSxtREFBQTsrQkFBQXpEOzREQURBLG1EQUFBOytEQVljO2lDQVhkQTtXQURBeUQ7NERBQUEsMERBQUE7c0NBQ0F6RDs7YUFEQXFiOzREQUNBLG1EQUFBOytCQUFBcmI7NERBREEsbURBQUE7OERBQUE7YUFBQXdELE9BQ0F4RDtXQURBcWI7NERBQUEsMERBQUE7c0NBQ0FyYjs7YUFEQXVmOzREQUNBLG1EQUFBOytCQUFBdmY7NERBREEsbURBQUE7OERBQUE7YUFBQStFLE9BQ0EvRTtXQURBdWY7NERBQUEsMERBQUE7c0NBQ0F2Zjs7YUFEQW9xQjs0REFDQSxtREFBQTsrQkFBQXBxQjs0REFEQSxtREFBQTs4REFBQTthQUFBNE0sT0FDQTVNO1dBREFvcUI7NERBQUEsMERBQUE7c0NBQ0FwcUI7O2FBREEra0Q7NERBQ0EsbURBQUE7K0JBQUEva0Q7NERBREEsbURBQUE7OERBQUE7YUFBQXdmLE9BQ0F4ZjtXQURBK2tEOzREQUFBLDBEQUFBO3NDQUNBL2tEOzthQURBZ2xEOzREQUNBLG1EQUFBOytCQUFBaGxEOzREQURBLG1EQUFBOytEQWlCZ0I7aUNBaEJoQkE7V0FEQWdsRDs0REFBQSwwREFBQTtzQ0FDQWhsRDs7d0RBeUJROztLQTFCUjZxSjtjQUNBNXBKO3lEQUFBLDBEQUFBO3dDQURBMnBKLGNBQ0EzcEo7d0RBeUJRO3NEQXpCUjtHQUFBNnBKO0lBQUFwbko7dURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpRkFBQSwwREFBQTtvRUFBQVgsa0JBQUFXOztnRkFBQTs7K0VBQUE7OzhFQUFBOzs2RUFBQTs7NEVBQUE7OzJFQUFBOzswRUFBQTs7eUVBQUE7O3dFQUFBOzt1RUFBQTs7c0VBQUE7O3FFQUFBOztvRUFBQTs7bUVBQUE7O2tFQUFBOztpRUFBQTs7Z0VBQUE7OytEQUFBOzs4REFBQSwwREFBQTtpREFBQVgsa0JBQUFXOzs2REFBQSwwREFBQTtnREFBQVgsa0JBQUFXOzs0REFBQSwwREFBQTsrQ0FBQVgsa0JBQUFXOzsyREFBQSwwREFBQTs4Q0FBQVgsa0JBQUFXOzswREFBQSwwREFBQTs2Q0FBQVgsa0JBQUFXOzt5REFBQTs7Z0JBQUFBOzt5REFBQSwwREFBQTs0Q0FBQVgsa0JBQUFXOzs7eURBQUEsMERBQUE7NENBQUFYLGtCQUFBVzs7TUFBQUM7aUNBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkRBQUFBOzs7OERBQUFBOzs7MERBQUFBOzBEQUFBQTswREFBQUE7MERBQUFBO3dEQUFBQTs7O3lEQUFBQTt5REFBQUE7eURBQUFBOzt5REFBQUE7dURBQUFBOzs7NkRBQUFBOzt5REFBQUE7eURBQUFBO3lEQUFBQTs7eURBQUFBO3lEQUFBQTs7dURBQUFBOzs7O3dEQUFBQTt3REFBQUE7d0RBQUFBOzt3REFBQUE7O3NEQUFBQTs7OzZEQUFBQTs7OERBQUFBOzs7MERBQUFBOzBEQUFBQTswREFBQUE7MERBQUFBOzt3REFBQUE7Ozs7eURBQUFBO3lEQUFBQTt5REFBQUE7eURBQUFBOzt5REFBQUE7dURBQUFBOzs7Ozs4REFBQUE7OzswREFBQUE7OzBEQUFBQTswREFBQUE7MERBQUFBOzt3REFBQUE7Ozt5REFBQUE7O3lEQUFBQTt5REFBQUE7O3lEQUFBQTs7eURBQUFBO3VEQUFBQTs7OztpQ0FBQWlxRTtnQ0FBQUEsbUJBQUFBO2lGQUFBOytCQUFBQyxXQUFBRDtrRkFBQXBUOztvRkFBQTttREFBQXFUO2lGQUFBO3NDQUFBclQ7O2dGQUFBLDBEQUFBOztzQ0FBQXozRDtzQ0FBQVk7c0NBQUFEOzsrRUFBQSwwREFBQTtrRUFBQVgsa0JBQUFXOzs4RUFBQSwwREFBQTtpRUFBQVgsa0JBQUFXOzs2RUFBQSwwREFBQTtnRUFBQVgsa0JBQUFXOzs0RUFBQSwwREFBQTsrREFBQVgsa0JBQUFXOzsyRUFBQSwwREFBQTs4REFBQVgsa0JBQUFXOzswRUFBQSwwREFBQTs2REFBQVgsa0JBQUFXOzt5RUFBQSwwREFBQTs0REFBQVgsa0JBQUFXOzt3RUFBQSwwREFBQTsyREFBQVgsa0JBQUFXOzt1RUFBQSwwREFBQTswREFBQVgsa0JBQUFXOztzRUFBQSwwREFBQTt5REFBQVgsa0JBQUFXOztxRUFBQSwwREFBQTt3REFBQVgsa0JBQUFXOztvRUFBQSwwREFBQTt1REFBQVgsa0JBQUFXOzttRUFBQSwwREFBQTtzREFBQVgsa0JBQUFXOztrRUFBQSwwREFBQTtxREFBQVgsa0JBQUFXOztpRUFBQSwwREFBQTtvREFBQVgsa0JBQUFXOztnRUFBQSwwREFBQTttREFBQVgsa0JBQUFXOzsrREFBQSwwREFBQTtrREFBQVgsa0JBQUFXOzs4REFBQSwwREFBQTtpREFBQVgsa0JBQUFXOztjQUFBd2hCO2FBQUFBLG1CQUFBQTs4REFBQTtZQUFBQyxXQUFBRDsrREFBQUU7aUVBQUE7MkNBQUFEOzhEQUFBO21CQUFBQzs7NkRBQUEsMERBQUE7O21CQUFBcmlCO21CQUFBWTttQkFBQUQ7O2FBQUFzcUU7WUFBQUEsbUJBQUFBOzZEQUFBO1dBQUFodUIsV0FBQWd1Qjs4REFBQUM7Z0VBQUE7MENBQUFqdUI7NkRBQUE7a0JBQUFpdUI7OzREQUFBLDBEQUFBOztrQkFBQWxyRTtrQkFBQVk7a0JBQUFEOztZQUFBd3FFO1dBQUFBLG1CQUFBQTs0REFBQTtVQUFBbm9ELFdBQUFtb0Q7NkRBQUEvTjsrREFBQTt5Q0FBQXA2Qzs0REFBQTtpQkFBQW82Qzs7MkRBQUEsMERBQUE7O2lCQUFBcDlEO2lCQUFBWTtpQkFBQUQ7O1dBQUFvcUU7VUFBQUEsbUJBQUFBOzJEQUFBO1NBQUFDLFdBQUFEOzREQUFBenpDOzhEQUFBO3dDQUFBMHpDOzJEQUFBO2dCQUFBMXpDOzswREFBQSwwREFBQTs7Z0JBQUF0M0I7Z0JBQUFZO2dCQUFBRDs7VUFBQUU7U0FBQUEsbUJBQUFBOzBEQUFBO1FBQUFDLFdBQUFEOzJEQUFBRTs2REFBQTs2QkFBQUQ7MERBQUEsV0FBQUM7O3lEQUFBLDBEQUFBOztlQUFBZjtlQUFBWTtlQUFBRDs7d0RBQUEsMERBQUE7MkNBQUFYLGtCQUFBVzs7dURBQUEsMERBQUE7MENBQUFYLGtCQUFBVztzREF5QlE7WUF6QlJxbko7dURBQUE7Ozs7MkRBQ0k7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQU9BOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTttRUFDQTs7OzswREFkQTtRQUFBNS9IOzJEQUFBQzs2REFBQTs0QkFBQUQ7MERBQUE7NEJBQUFDOzswREFDQTtRQUFBRzsyREFBQWswQzs2REFBQTt1Q0FBQWwwQzswREFBQTs0QkFBQWswQzs7MERBQ0E7UUFBQW10QzsyREFBQW8rQzs2REFBQTt1Q0FBQXArQzswREFBQTs0QkFBQW8rQzs7MERBQ0E7UUFBQXIvSDsyREFBQWc2Qjs2REFBQTt1Q0FBQWg2QjswREFBQTs0QkFBQWc2Qjs7MERBQ0E7UUFBQTB0RTsyREFBQUM7NkRBQUE7dUNBQUFEOzBEQUFBOzRCQUFBQzs7MERBQ0E7UUFBQXRuRzsyREFBQWkvSDs2REFBQTs0QkFBQWovSDswREFBQTs0QkFBQWkvSDs7c0RBU0k7c0RBekJSO0dBQUFDO0lBQUFyc0o7dURBQUE7YUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OzBEQUFBLDBEQUFBO21EQUFBOUIsUUFBQThCOzs7aUJBQUFBOzswREFBQSwwREFBQTttREFBQTlCLFFBQUE4Qjs7Ozs7O1NBQUFtRjt3Q0FBQUE7OztjQUFBQzthQUFBQSxpQkFBQUE7OERBQUE7WUFBQWxGLEtBQUFrRjsrREFBQWpGO2lFQUFBOzBEQUFBRDs4REFBQSxXQUFBQzs7NkRBQUEsMERBQUE7c0RBQUFqQyxRQUFBaUgsS0FBQW5GOzs0Q0FBQW1GOzs7O3dFQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOzt3RUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjs7d0VBQUE7eURBQUFqSCxRQUFBOEI7O29DQUFBbUY7O3dFQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOzt3RUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjs7d0VBQUE7eURBQUFqSCxRQUFBOEI7Ozs7b0NBQUFtRjs7d0VBQUE7eURBQUFqSCxRQUFBOEI7O29DQUFBbUY7O3dFQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOzt3RUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjs7d0VBQUE7eURBQUFqSCxRQUFBOEI7O29DQUFBbUY7O3dFQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOzt3RUFBQTt5REFBQWpILFFBQUE4Qjs7Ozs7NENBQUFtRjs7Ozt3RUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjs7d0VBQUE7eURBQUFqSCxRQUFBOEI7O29DQUFBbUY7O3dFQUFBO3lEQUFBakgsUUFBQThCOztvQ0FBQW1GOzt3RUFBQTt5REFBQWpILFFBQUE4Qjs7b0NBQUFtRjs7d0VBQUE7eURBQUFqSCxRQUFBOEI7O29DQUFBbUY7O3dFQUFBO3lEQUFBakgsUUFBQThCOzs7O29DQUFBbUY7ZUFBQTJqRDtjQUFBQSxtQkFBQUE7K0RBQUE7YUFBQUMsT0FBQUQ7Z0VBQUFFO2tFQUFBOzRDQUFBRDsrREFBQTtvQkFBQUM7OzhEQUFBLDBEQUFBO3VEQUFBOXFELFFBQUFpSCxLQUFBbkY7O29DQUFBbUY7ZUFBQXFqRDtjQUFBQSxtQkFBQUE7K0RBQUE7YUFBQUMsT0FBQUQ7Z0VBQUFFO2tFQUFBOzRDQUFBRDsrREFBQTtvQkFBQUM7OzhEQUFBLDBEQUFBO3VEQUFBeHFELFFBQUFpSCxLQUFBbkY7O29DQUFBbUY7ZUFBQXNvQjtjQUFBQSxtQkFBQUE7K0RBQUE7YUFBQUcsT0FBQUg7Z0VBQUFJO2tFQUFBOzRDQUFBRDsrREFBQTtvQkFBQUM7OzhEQUFBLDBEQUFBO3VEQUFBM3ZCLFFBQUFpSCxLQUFBbkY7O29DQUFBbUY7ZUFBQStmO2NBQUFBLG1CQUFBQTsrREFBQTthQUFBQyxPQUFBRDtnRUFBQUU7a0VBQUE7NENBQUFEOytEQUFBO29CQUFBQzs7OERBQUEsMERBQUE7dURBQUFsbkIsUUFBQWlILEtBQUFuRjs7b0NBQUFtRjtlQUFBc1k7Y0FBQUEsbUJBQUFBOytEQUFBO2FBQUFDLE9BQUFEO2dFQUFBRTtrRUFBQTsyREFBQUQ7K0RBQUE7b0JBQUFDOzs4REFBQSwwREFBQTt1REFBQXpmLFFBQUFpSCxLQUFBbkY7O29DQUFBbUY7O3dFQUFBO3lEQUFBakgsUUFBQThCOzs7Ozs7MkRBQUEsMERBQUE7b0RBQUE5QixRQUFBOEI7Ozs7dURBQUEsMERBQUE7Z0RBQUE5QixRQUFBOEI7c0RBeUJRO1lBekJSc3NKO3VEQUFBOzs7OzJEQUNJOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFPQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzsyREFDQTs7MkRBQ0E7OzJEQUNBOzs7OzBEQWRBO1FBQUFwc0o7MkRBQUFDOzZEQUFBO3FEQUFBRDswREFBQTs7NkJBQUFDOzswREFDQTtRQUFBdWQ7MkRBQUFDOzZEQUFBO3VDQUFBRDswREFBQTs7NkJBQUFDOzswREFDQTtRQUFBd0g7MkRBQUFDOzZEQUFBO3VDQUFBRDswREFBQTs7NkJBQUFDOzswREFDQTtRQUFBd0k7MkRBQUFDOzZEQUFBO3VDQUFBRDswREFBQTs7NkJBQUFDOzswREFDQTtRQUFBNDZCOzJEQUFBQzs2REFBQTt1Q0FBQUQ7MERBQUE7OzZCQUFBQzs7MERBQ0E7UUFBQUs7MkRBQUFDOzZEQUFBO3FEQUFBRDswREFBQTs7NkJBQUFDOztzREFTSTtzREFJTjtHQUFBdWpHO0lBQUFDO3VEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7MkRBQUEsMERBQUE7OENBQUE1NUksa0JBQUE0NUk7OzBEQUFBOzt5REFBQTs7Z0JBQUFBOzt5REFBQSwwREFBQTs0Q0FBQTU1SSxrQkFBQTQ1STs7O3lEQUFBLDBEQUFBOzRDQUFBNTVJLGtCQUFBNDVJO1NBQUFDOzs2QkFBQUE7OzhCQUFBQTsrQkFBQUE7a0NBQUFBO2tDQUFBQTtnQ0FBQUE7O1dBQUExaUI7VUFBQUEsbUJBQUFBOzJEQUFBO1NBQUFqbUgsV0FBQWltSDs0REFBQWhtSDs4REFBQTtnQ0FBQUQ7MkRBQUE7Z0JBQUFDOzswREFBQSwwREFBQTs7Z0JBQUFuUjtnQkFBQTY1STtnQkFBQUQ7O3lEQUFBLDBEQUFBOzRDQUFBNTVJLGtCQUFBNDVJOzt3REFBQSwwREFBQTsyQ0FBQTU1SSxrQkFBQTQ1STs7dURBQUEsMERBQUE7MENBQUE1NUksa0JBQUE0NUk7dURBRzBCO1lBSDFCRTt1REFBQTs7O3VEQUdJO0tBQUExbEg7d0RBQUEybEg7MERBQUE7NEJBQUEzbEg7dURBQUE7MEJBQUEybEg7dURBQXNCO1lBRXRCMUY7d0RBQWtDO3VEQUFpQjtZQUluRDJGLGNBQWdCeGdKO3VEQUNsQjs7aUVBQ087a0NBRldBO3NEQUdqQjtZQUNDeWdKLGFBQWdCbmdHO3dEQUFrQzt5REFDakI7MkRBQUE7MkJBVGpDdTZGO3lEQVNFejJGOzJEQUFNOzZEQUFNOztTQURFOUQ7dURBRWxCLGVBREk4RDtzREFFTDtZQUdPczhGLGdCQUFtQjFnRzthQUNyQjJnRzt3REFDRjs7VUFHTzNnRztnQkFBQUEseUJBQUFBO21CQUxIMGdHLGdCQUtHMWdHOzswREFEbUI7eURBQ2lCO3dEQUM3QzthQU55QkE7eURBTXpCLE9BTnlCQTs7NkRBT1Q7O21CQVBTQTs7NERBTlIsT0FJZjAvRjs7bUJBRXVCMS9GOztvQkFBQUE7Ozs0REFkTSxPQUU3QnkvRjs7WUF1Q0luL0YsS0EzQm1CTjttRUE0QnZCO3VFQUFNO2tEQTNCSjJnRztrQkEwQkVyZ0c7O2tCQWpDSm1nRyxhQWlDSW5nRzs7O1NBWENDLE1BaEJrQlA7OztpRUFrQmpCOztrRUFDb0I7aUVBQ2I7Z0VBQUs7NERBSGYsMkRBQUE7eUNBREVPOztrQkExQkxpZ0c7dUVBbUNFO3FDQVRHamdHOzt5REFEZTt1REFrQnZCO3VEQXREa0Isb0RBQUE7OztPQUVuQjQvRjtPQUFBRztPQUtJekY7T0FFQTRFO09BRUFlO09BSUFDO09BSUFmO09BRUlnQjtZQW9DTkUsb0JBQ0NDLGNBQTZCQzt5REFDSjt5REFDNUI7MkRBQUE7NkJBRmdDQTt5REFFaEM7MkRBQUE7NkRBRUc7Z0NBSkFEOzt3REFFSCwyREFBQTs7dURBSUQ7O2FBa0RLRSxpQkFBb0Nycko7MERBQXRCO01BQU9zcko7TUFBTG5vRDtlQUFLbW9EOzJEQUdMO1NBQ1J2RixRQUphdUY7MERBSUYsNERBQUE7Y0FKaUJ0ckosR0F6RHRDa3JKLG9CQTZEVW5GLE9BSlE1aUQ7d0RBS2pCO2FBRUNvb0QsV0FBY0MsS0FBS0MsT0FBT3RvRCxLQUFLcC9GO3lEQUNqQyxPQURpQ0E7OzREQWlYL0I7U0FEMkJxaEgsS0FoWElyaEg7U0FnWFBnTSxJQWhYT2hNO1NBZ1hWby9HLElBaFhVcC9HO1NBZ1hsQjJuSixTQWhYa0Izbko7NkRBaVgvQjs7Z0VBT0E7Z0VBQU07O29CQVBrQnFoSDtpRUFBTTtvQkFEakJzbUM7b0JBQVF2b0M7b0JBQUdwekc7b0JBQ0FxMUc7Z0VBQW9DOzhEQUFuRDtnRUFBQTtvQkFqWGlCamlCOztvQkFxWHRCaWlCO2lFQUFNO29CQUxHc21DO29CQUFRdm9DO29CQUFHcHpHO29CQUtwQnExRztnRUFBb0M7OERBRHBDO2dFQUFBO2FBcFhVb21DLEtBQUtDLE9BQU90b0Q7NkRBbVh4QjsrREFBQTtnQ0FIeUJpaUI7OzREQVEzQiwyREFBQTs7OzREQWRBOzZEQUFBOztnRUFDQTtnRUFBTTs4REFERztnRUFBQTtvQkExV2lCamlCLEtBQUtwL0Y7NERBMlcvQiwyREFBQTs7OzREQUVBO1NBRGMwL0csTUE1V2lCMS9HO1NBNFd2QmdpSixRQTVXdUJoaUo7NkRBNlcvQjs7Z0VBRUE7YUFES0E7O2lFQUNMO2lFQUFLOzswRUFBYyxPQURkQTt5RUFDZ0I7OztnRUFBdUM7O29CQUZwQ0E7aUVBQUs7b0JBRHJCZ2lKO29CQUNnQmhpSjtnRUFBcUI7OERBQXBDO2dFQUFBO29CQTdXaUJvL0Y7O29CQThXWWlpQjtpRUFBTTtvQkFGcEMyZ0M7b0JBRThCM2dDO2dFQUF1Qjs4REFBekM7Z0VBQUE7YUE5V05vbUMsS0FBS0MsT0E0V1gxRjs4REFFRTtnRUFBQTtnQ0FGSXRpQzs7NERBR2QsMkRBQUE7Ozs0REE4RUE7U0FEVzZCLE9BNWJvQnZoSDtTQTRieEJ1a0gsS0E1YndCdmtIOzZEQTZiL0I7O2dFQUVBO2FBREtxaEg7O2lFQUNMO2lFQUFLOzswRUFBYyxPQURkQTt5RUFDZ0I7OztnRUFBc0M7O29CQUZuQ0E7aUVBQU07b0JBRHZCa0Q7b0JBQ2lCbEQ7Z0VBQW9COzhEQUFuQztnRUFBQTtvQkE3YmlCamlCOztvQkE4YldpaUI7aUVBQU07b0JBRnBDa0Q7b0JBRThCbEQ7Z0VBQW9COzhEQUFyQztnRUFBQTthQTliTm9tQyxLQUFLQyxPQUFPdG9EOzhEQThiaEI7Z0VBQUE7Z0NBRkNtaUI7OzREQUdYLDJEQUFBOzs7NkRBNWJTO1NBREFobEgsSUFGc0J5RDs7O2dFQUkvQixvREFDRTs7bUVBQUE7c0NBTHdCby9GLEtBRWpCN2lHOztrRUFJYywyREFBQTswREFKZEE7aUVBTUg7Z0VBSEo7aUVBREV5RDttRUFDRjtzRUFDRzs7O2lFQURIO2lFQUlGO2lFQUFLOzswRUFBYyxPQUxmQTt5RUFLZ0I7OztnRUFBa0M7OERBTjdDO2dFQUFBO29CQUhpQm8vRixTQUVqQjdpRzs0REFFVCwyREFBQTs7OzREQU9BO1NBRGE2a0gsS0FWa0JwaEg7U0FVdEIraEgsT0FWc0IvaEg7NkRBVy9COztnRUFFQTtpRUFBQTs7aUVBQUs7OzBFQUFjLE9BSE5vaEg7eUVBR1E7OztnRUFBaUM7O29CQUY5QkM7aUVBQU07b0JBQU5BO29CQURYRDtnRUFDaUM7OERBQXJDO2dFQUFBO29CQVhpQmhpQjs7b0JBWVVpaUI7aUVBQU07b0JBQU5BO29CQUZ2QkQ7Z0VBRThDOzhEQUF4QztnRUFBQTthQVpMcW1DLEtBQUtDLE9BQU90b0Q7OERBWWpCO2dFQUFBO2dDQUZBMmlCOzs0REFHVCwyREFBQTs7OzZEQUVTO1NBREdULE9BZG1CdGhIO1NBY3ZCc2tILE9BZHVCdGtIO1NBYzNCd2tFLEtBZDJCeGtFOzs7Z0VBaUIvQjthQURLcWhIO2dFQUNMO2FBQVVqaUI7aUVBQ1Y7a0VBQUE7O2tFQUFLOzsyRUFBYzs4QkFEVEE7OEJBSEVraUI7MEVBSXdCOzs7aUVBQWdDO2dFQUFwRSxPQXpCQWdtQzs7c0JBTzBCbG9EOzJFQWlCSDttREFIbkI1NkIsSUFFQzY4Qzs7Z0VBRStEOztvQkFINUNBO2lFQUFNO29CQUQxQjc4QztvQkFDb0I2OEM7b0JBRFpDO2dFQUNpQzs4REFBcEM7Z0VBQUE7b0JBZmlCbGlCOztvQkFnQllpaUI7aUVBQU07b0JBRnhDNzhDO29CQUVrQzY4QztvQkFGMUJDO2dFQUVnRDs4REFBdkM7Z0VBQUE7YUFoQlBtbUMsS0FBS0MsT0FBT3RvRDs4REFnQmY7Z0VBQUE7Z0NBRkhrbEI7OzREQUdSLDJEQUFBOzs7NkRBYVM7U0FERUksT0E3Qm9CMWtIO1NBNkJ2QnpILElBN0J1QnlIO1NBNkIxQi9HLElBN0IwQitHOzs7Z0VBK0IvQjtpRUFBQTs7aUVBQUs7OzBFQUVEOzZCQWpHTm1uSjtvRkFrRzRCO3lEQUxyQmx1SixHQUFNeXJIOytCQTdCZXRsQjs2QkE2QmZzbEI7eUVBT047OzsrREFHRjs4REFUTTtnRUFBQTtvQkE5QmlCdGxCLFVBNkJyQm5tRyxHQUFHVixHQUFHbXNIOzREQUVYLDJEQUFBOzs7WUFUSXRtSCxJQXRCMkI0QjtpQkFBQUE7NkRBb0IvQjs4REFBQTs7aUVBQ0E7aUVBQVk7K0RBREg7aUVBQUE7cUJBcEJpQm8vRixLQUFLcC9GOzZEQXFCL0IsMkRBQUE7Ozs2REFFUztTQURJekUsSUF0QmtCeUU7U0FzQnJCOC9HLE1BdEJxQjkvRztTQXNCeEIrckIsTUF0QndCL3JCOzs7Z0VBd0IvQjtpRUFBQTs7aUVBQUs7OzBFQUNVOzZCQUhYNUI7NkJBQUcydEI7aUNBdEJtQnF6RSxLQXNCaEIwZ0I7NkJBQUd2a0g7eUVBRytCOzs7K0RBR3pDOzhEQUxNO2dFQUFBO29CQXZCaUI2akcsVUFzQnRCaGhHLEdBQUcydEIsS0FBRyt6RixLQUFHdmtIOzREQUViLDJEQUFBOzs7NERBcUNBO1NBRE91bUgsT0E1RHdCOWhIO1NBNEQ1QnNsSCxPQTVENEJ0bEg7NkRBNkQvQjs7Z0VBR0E7YUFES29oSDthQURBQztnRUFFTCxPQUZLQTs7MkJBQUFBOztvRUFLSDtpQkFEeUJ1bUM7aUJBQU54b0Q7aUJBQWY1NkIsS0FKRDY4QztxRUFLSDs0QkFBVWppQjt3RUFDVjt5RUFBQTs7eUVBQUs7O2tGQUFjO3FDQURUQTtxQ0FEZXdvRDtpRkFFWTs7O3dFQUE4QjtvRUFBbkUsT0EzRUZOOzswQkF5RXFCbG9EOytFQUNNO3VEQURyQjU2QixJQUhENDhDOzs7OzttRUFhSDtnQkFEV3ltQyxRQWJSeG1DOztvRUFjSDtvRUFBSzs7NkVBQ1U7Z0NBRkp3bUM7Z0NBWlJ6bUM7NEVBb0JBOzs7O29FQWxCZTs7MEJBSGZDOzs4QkFBQUE7O3FFQVFIO2tCQUR1QzE2RDtrQkFBTkM7a0JBQVpvQztrQkFBTEQ7a0JBQVgrK0YsT0FQRnptQzs7c0VBUUg7c0VBQUs7OytFQUNVO3VDQUZWeW1DLFdBTkYxbUMsSUFNOEJ4NkQsS0FBakJtQztrQ0FBS0M7a0NBQWtCckM7OEVBRXNCOzs7Ozs7OztnRUFpQjdEO2lFQUFBOztpRUFBSzs7MEVBQ1UsMkRBQUE7a0VBM0JaMDZEO3lFQTZCQTs7OytEQUlIOztvQkFsQ3VCQSxJQUFJRDtpRUFBTztvQkFBWEM7b0JBQUlEO2dFQUFpQjs4REFBckM7Z0VBQUE7b0JBN0RpQmhpQjs7b0JBOERZaWlCO2lFQUFNO29CQUFOQTtvQkFGL0JTO2dFQUVnRDs4REFBbEM7Z0VBQUE7YUE5RFAybEMsS0FBS0MsT0FBT3RvRDs4REE4RGY7Z0VBQUE7Z0NBRlJrbUI7OztvQkFHbUNsRTtpRUFBTTtvQkFIekNrRTtvQkFHbUNsRTtnRUFBaUI7OERBQWxDO2dFQUFBO2FBL0RQcW1DLEtBQUtDLE9BQU90b0Q7OERBK0RmO2dFQUFBO2dDQUhKMGlCOzs0REFJUCwyREFBQTs7OzREQWlDQTtTQURpQjkrRyxNQWhHY2hEO1NBZ0dyQjZuSixRQWhHcUI3bko7NkRBaUcvQjs7Z0VBR0E7YUFGS2dEOztrRUFXRzttQkFiRTZrSjtpRUFJTDs7MEVBQ1UscURBRVQ7OzZFQUFBO3dFQVBJQTs7MkVBUWlCLDJEQUFBO21FQVJqQkE7MEVBVUE7MEVBSEoscURBQUE7c0JBREVFOzZFQUNGOytFQUNHOzs7MEVBR0wsNERBQUE7OEJBTElBLFNBSkgva0o7d0VBVUY7OzsrREFHQTs7b0JBZHFCQTtpRUFBTztvQkFEckI2a0o7b0JBQ2M3a0o7Z0VBQTRCOzhEQUEzQztnRUFBQTtvQkFqR2lCbzhGOztvQkFtR0dwOEY7aUVBQU87b0JBSDFCNmtKO29CQUdtQjdrSjtnRUFBNEI7OERBQTdDO2dFQUFBO2FBbkdFeWtKLEtBQUtDLE9BQU90b0Q7NkRBbUd4QjsrREFBQTtnQ0FIZXA4Rjs7NERBSWpCLDJEQUFBOzs7NkRBM0RTO1NBREF5K0csTUF4Q3NCemhIO1NBd0MxQjlHLEtBeEMwQjhHOzs7Z0VBMkMvQjthQURLQTs7aUVBQ0w7aUVBQUs7OzBFQUVEO2lDQUhDQTsrQkFBQUE7O3VGQUtDOzBDQS9DYTBuSixPQXdDZHh1SixRQUVBOEc7O3VGQVFDOzBDQWxEYTBuSixPQXdDZHh1SixRQUVBOEc7O3FGQVlDO3dDQXREYTBuSixPQXdDZHh1SixRQUVBOEc7O3lFQWNBOzs7K0RBR0Y7O29CQWxCcUJBO2lFQUFLO29CQUR4QjlHO29CQUNtQjhHO2dFQUFnQjs4REFBL0I7Z0VBQUE7b0JBekNpQm8vRjs7b0JBMENXcC9GO2lFQUFLO29CQUZyQzlHO29CQUVnQzhHO2dFQUFnQjs4REFBakM7Z0VBQUE7YUExQ055bkosS0FBS0MsT0FBT3RvRDs4REEwQ2hCO2dFQUFBO2dDQUZEcWlCOzs0REFHVCwyREFBQTs7O1dBM0MrQnpoSDs2REFxSy9CO1VBRGtCb2tILE9BcEthcGtIO1VBb0tqQjBsSCxPQXBLaUIxbEg7OERBcUsvQjs7aUVBR0E7Y0FGS3FoSDs7a0VBRUE7OzJFQUVEOytCQUpDQTs4QkFBQUEsZUFGYStDOzJFQVNQLDJEQUFBO21FQVRPQTswRUFVYjs7O2dFQUdGOztxQkFacUIvQztrRUFBTTs7cUJBQU5BO3FCQUROK0M7aUVBQ2lDOytEQUExQztpRUFBQTtxQkFyS2lCaGxCOztxQkF1S0dpaUI7a0VBQU07O3FCQUFOQTtxQkFIWCtDO2lFQUd1QzsrREFBN0M7aUVBQUE7Y0F2S0VxakMsS0FBS0MsT0FBT3RvRDs4REF1S3hCO2dFQUFBO2lDQUhZc21COzs2REFJZCwyREFBQTs7OzREQWpCQTtTQURtQmxCLE9BdEpZeGtIO1NBc0poQmttSCxPQXRKZ0JsbUg7NkRBdUovQjs7Z0VBR0E7YUFGS3FoSDs7aUVBRUE7OzBFQUVEOzhCQUpDQTs2QkFBQUEsUUFGY21EOzBFQVNSLDJEQUFBO2tFQVBObkQ7eUVBUUE7OzsrREFHRjs7b0JBWnFCQTtpRUFBTTs7b0JBQU5BO29CQURMbUQ7Z0VBQ2lDOzhEQUEzQztnRUFBQTtvQkF2SmlCcGxCOztvQkF5SkdpaUI7aUVBQU07O29CQUFOQTtvQkFIVm1EO2dFQUd1Qzs4REFBOUM7Z0VBQUE7YUF6SkVpakMsS0FBS0MsT0FBT3RvRDs2REF5SnhCOytEQUFBO2dDQUhhOG1COzs0REFJZiwyREFBQTs7OzREQXlCQTtTQURpQmQsT0FsTGNwbEg7U0FrTGxCd21ILE9BbExrQnhtSDtTQWtMdEIra0YsS0FsTHNCL2tGOzZEQW1ML0I7O2dFQUlBO2FBRktvaEg7YUFEQUM7O2tFQWtDRzttQkFwQ0N0OEI7aUVBS0o7OzBFQUVEOzhCQUxDczhCOzJFQWdDTSwyREFBQTttRUFoQ05BO3lCQU1TLzVELEtBTlQrNUQ7K0JBQ0FEOzJFQThCQywyREFBQTttRUE5QkRBO3lCQUtxQjc1RCxLQUxyQjY1RDswRUFNQzt1QkFUR3I4Qjs7NkVBVU87Z0NBRkZ6OUIsS0FBWUM7OzZFQUdUO2dDQUhIRCxLQUFZQzs7NkVBVVQ7aURBVkhELElBQVlDOztvQ0FBQUE7O3VGQVNGO3FEQVRWRCxJQUFZQzs0Q0FSakJ3OUIsU0FRS3o5QixVQUFZQzs7cUNBQUFBOzRDQVJqQnc5QixTQVFLejlCLFVBQVlDO3dEQUFaRCxJQUFZQzs7NkVBaUJOO2dDQWpCTkQsS0FBWUM7OzZFQWtCQztnQ0FsQmJELE1BQVlDOzs2RUFtQkg7Z0NBbkJHQSxLQUFaRDs7NkVBb0JnQjtnQ0FwQkpDLE1BQVpEOzs2RUFxQkk7Z0NBckJKQSxPQUFZQzs7NkVBc0JMO2dDQXRCUEQsT0FBWUM7O3lFQTJCckI7OzsrREFJRjs7b0JBdENzQjg1RCxJQUFJRDtpRUFBTztvQkFEM0JyOEI7b0JBQ2dCczhCO29CQUFJRDtnRUFBMkI7OERBQS9DO2dFQUFBO29CQW5MaUJoaUI7O29CQW9MWWlpQjtpRUFBTTtvQkFGbkN0OEI7b0JBRTZCczhCO29CQUZyQitEO2dFQUVnRDs4REFBNUM7Z0VBQUE7YUFwTFBxaUMsS0FBS0MsT0FBT3RvRDs4REFvTGY7Z0VBQUE7Z0NBRkVvbkI7OztvQkFJZ0JwRjtpRUFBTTtvQkFKMUJyOEI7b0JBQUl5aEM7b0JBSWdCcEY7Z0VBQTJCOzhEQUE1QztnRUFBQTthQXRMRXFtQyxLQUFLQyxPQUFPdG9EOzZEQXNMeEI7K0RBQUE7Z0NBSmVnbUI7OzREQUtqQiwyREFBQTs7OzREQW9DQTtTQURtQkksT0ExTll4bEg7U0EwTmhCMm9ILE9BMU5nQjNvSDtTQTBOcEJnb0osT0ExTm9CaG9KOzZEQTJOL0I7O2dFQUtBO2FBRktvaEg7YUFGQUM7O2tFQXlCRzttQkEzQkcybUM7aUVBTU47OzBFQUVEOzhCQU5DM21DOzJFQXVCTSwyREFBQTttRUF2Qk5BO3lCQU9XLzVELEtBUFgrNUQ7K0JBRUFEOzJFQW9CQywyREFBQTttRUFwQkRBO3lCQUt5Qjc1RCxLQUx6QjY1RDswRUFNQzt1QkFWSzRtQzs7NkVBV0s7Z0NBRkExZ0csS0FBY0M7OzZFQUdiO2dDQUhERCxLQUFjQzs7NkVBS2I7Z0NBTERELEtBQWNDOzs2RUFJYjtxRkFBUztrQ0FKVkQsSUFBY0M7OzZFQU1aO2dDQU5GRCxLQUFjQzs7NkVBT1Y7Z0NBUEpELEtBQWNDOzs2RUFRSDtnQ0FSWEQsTUFBY0M7OzZFQVNQO2dDQVRPQSxLQUFkRDs7NkVBVWM7Z0NBVkFDLE1BQWREOzs2RUFXRTtnQ0FYRkEsTUFBY0M7OzZFQVlUO2dDQVpMRCxNQUFjQzs7eUVBaUJ6Qjs7OytEQUdGOztvQkE1QnNCODVELElBQUlEO2lFQUFPO29CQUR6QjRtQztvQkFDYzNtQztvQkFBSUQ7Z0VBQTZCOzhEQUFqRDtnRUFBQTtvQkEzTmlCaGlCOztvQkE2TkdpaUI7aUVBQU07b0JBSHhCMm1DO29CQUdrQjNtQztvQkFIVm1FO2dFQUd1Qzs4REFBOUM7Z0VBQUE7YUE3TkVpaUMsS0FBS0MsT0FBT3RvRDs2REE2TnhCOytEQUFBO2dDQUhhdXBCOzs7b0JBS2N2SDtpRUFBTTtvQkFMeEI0bUM7b0JBQUlyL0I7b0JBS2N2SDtnRUFBNkI7OERBQTlDO2dFQUFBO2FBL05FcW1DLEtBQUtDLE9BQU90b0Q7NkRBK054QjsrREFBQTtnQ0FMaUJvbUI7OzREQU1uQiwyREFBQTs7OzREQXlCQTtTQURvQlEsT0F4UFdobUg7U0F3UGZvcEgsT0F4UGVwcEg7U0F3UG5CaW9KLE9BeFBtQmpvSjs2REF5UC9COztnRUFLQTthQUZLb2hIO2FBRkFDOztrRUFnQkc7bUJBbEJJNG1DO2lFQU1QOzswRUFFRDs4QkFOQzVtQzsyRUFjTSwyREFBQTttRUFkTkE7eUJBT1lqdUYsS0FQWml1RjsrQkFFQUQ7MkVBV0MsMkRBQUE7bUVBWERBO3lCQUsyQm1FLEtBTDNCbkU7MEVBTUMsT0FWTTZtQzs7b0ZBWWM7aUNBSFQ3MEgsSUFBZW15Rjs7b0ZBRUo7NkNBRlhueUYsSUFBZW15Rjt5RUFRM0I7OzsrREFHRjs7b0JBbkJzQmxFLElBQUlEO2lFQUFPO29CQUR4QjZtQztvQkFDYTVtQztvQkFBSUQ7Z0VBQThCOzhEQUFsRDtnRUFBQTtvQkF6UGlCaGlCOztvQkEyUEdpaUI7aUVBQU07b0JBSHZCNG1DO29CQUdpQjVtQztvQkFIVDJFO2dFQUd1Qzs4REFBL0M7Z0VBQUE7YUEzUEV5aEMsS0FBS0MsT0FBT3RvRDs2REEyUHhCOytEQUFBO2dDQUhjZ3FCOzs7b0JBS2FoSTtpRUFBTTtvQkFMdkI2bUM7b0JBQUk3K0I7b0JBS2FoSTtnRUFBOEI7OERBQS9DO2dFQUFBO2FBN1BFcW1DLEtBQUtDLE9BQU90b0Q7NkRBNlB4QjsrREFBQTtnQ0FMa0I0bUI7OzREQU1wQiwyREFBQTs7OzREQXVFQTtTQURrQjU0RyxLQXBVYXBOO1NBb1VqQnVtRCxLQXBVaUJ2bUQ7U0FvVXBCdS9HLE1BcFVvQnYvRztTQW9VdkJ3L0csTUFwVXVCeC9HOzZEQXFVL0I7O2dFQU9BO2dFQUFZOztvQkFQWW9OO2lFQUFNO29CQUR0Qm95RztvQkFBR0Q7b0JBQUdoNUQ7b0JBQ1VuNUM7Z0VBQTJCOzhEQUExQztnRUFBQTtvQkFyVWlCZ3lGOztvQkF5VXJCaWlCLElBQUlqMEc7aUVBQU87b0JBTFJveUc7b0JBQUdEO29CQUFHaDVEO29CQUtUODZEO29CQUFJajBHO2dFQUFnQzs4REFEckM7Z0VBQUE7YUF4VVVxNkksS0FBS0MsT0FBT3RvRDs2REF1VXhCOytEQUFBO2dDQUhnQmh5Rjs7NERBUWxCLDJEQUFBOzs7NERBdENBO1NBRFNrNUcsT0FyU3NCdG1IO1NBcVMxQnFwSCxRQXJTMEJycEg7NkRBc1MvQjs7Z0VBR0E7YUFES29oSDthQURBQzs7aUVBRUw7aUVBQUs7OzBFQUVEOzhCQUhDRDsyRUFLTSwyREFBQTttRUFMTkE7eUJBSW1CaDBHLEtBSm5CZzBHLE9BSWU3NkQsS0FKZjY2RCxPQUlZcDFHLElBSlpvMUcsT0FJU2hDLElBSlRnQzswRUFJMEI7NkJBQWpCaEM7NkJBQUdwekc7NkJBQUd1NkM7aUNBTGY4NkQsSUFLbUJqMEc7eUVBRW5COzs7K0RBR0Y7O29CQVhzQmkwRyxJQUFJRDtpRUFBTztvQkFBWEM7b0JBQUlEO2dFQUFtQjs4REFBdkM7Z0VBQUE7b0JBdFNpQmhpQjs7b0JBdVNZaWlCO2lFQUFNO29CQUFOQTtvQkFGN0JpRjtnRUFFZ0Q7OERBQXBDO2dFQUFBO2FBdlNQbWhDLEtBQUtDLE9BQU90b0Q7OERBdVNmO2dFQUFBO2dDQUZOaXFCOzs7b0JBR2lDakk7aUVBQU07b0JBSHZDaUk7b0JBR2lDakk7Z0VBQW1COzhEQUFwQztnRUFBQTthQXhTUHFtQyxLQUFLQyxPQUFPdG9EOzhEQXdTZjtnRUFBQTtnQ0FIRmtuQjs7NERBSVQsMkRBQUE7Ozs0REFXQTtTQUZlc0MsT0FsVGdCNW9IO1NBa1RwQmtvSixRQWxUb0Jsb0o7NkRBb1QvQjs7Z0VBR0E7YUFES29oSDthQURBQzs7aUVBRUw7aUVBQUs7OzBFQUVEOzhCQUpDQTsyRUFVQywyREFBQTttRUFWREE7eUJBS1VhLEtBTFZiOytCQUNBRDsyRUFPQywyREFBQTttRUFQREE7eUJBSTZDK0csTUFKN0MvRyxPQUlzQmdILE1BTHRCL0csT0FLa0I5NEYsS0FMbEI4NEYsT0FLY2dCLEtBTGRoQjswRUFNQzs2QkFEU2E7NkJBQUlHOzZCQUFJOTVGO2tGQUNHOzJDQURDNi9GLEtBQXVCRDt5RUFNN0M7OzsrREFHRjs7b0JBZnNCOUcsSUFBSUQ7aUVBQU87b0JBQVhDO29CQUFJRDtnRUFBeUI7OERBQTdDO2dFQUFBO29CQXBUaUJoaUI7O29CQXFUWWlpQjtpRUFBTTtvQkFBTkE7b0JBSHZCdUg7Z0VBR2dEOzhEQUExQztnRUFBQTthQXJUUDYrQixLQUFLQyxPQUFPdG9EOzhEQXFUZjtnRUFBQTtnQ0FIQThvRDs7O29CQUkyQjltQztpRUFBTTtvQkFKakM4bUM7b0JBSTJCOW1DO2dFQUF5Qjs4REFBMUM7Z0VBQUE7YUF0VFBxbUMsS0FBS0MsT0FBT3RvRDs4REFzVGY7Z0VBQUE7Z0NBSkl3cEI7OzREQUtmLDJEQUFBOzs7NERBekNBO1NBRE1wSCxPQTdReUJ4aEg7NkRBOFEvQjs7Z0VBR0E7Z0VBQVk7O29CQUhZb047aUVBQU07b0JBQU5BO2dFQUFlOzhEQUE5QjtnRUFBQTtvQkE5UWlCZ3lGOztvQkFnUlFpaUIsSUFBSWowRztpRUFBTztvQkFBWGkwRztvQkFBSWowRztnRUFBb0I7OERBQTFDO2dFQUFBO2FBaFJGcTZJLEtBQUtDLE9BQU90b0Q7NkRBZ1J4QjsrREFBQTtnQ0FISW9pQjs7NERBSU4sMkRBQUE7Ozs0REFFQTtTQURRbitHLElBbFJ1QnJEO1NBa1IzQm1vSixRQWxSMkJub0o7NkRBbVIvQjs7Z0VBRUE7YUFES3FoSDs7aUVBQ0w7aUVBQUs7OzBFQUVEO3VCQUhDQTs7NEJBTU9qMEcsS0FOUGkwRzs7K0JBRkdoK0c7O2dGQU1zQjs2Q0FFbEIrSjs2QkFSSi9KOzhFQVFXLDREQUFBO2tEQUFQK0osSUFSSi9KOzZFQU9GLDJEQUFBO3NFQVBFQTs7bUNBRUhnK0c7O3FDQUFBQTs7OEJBUzBCK21DLGdCQUFYOTZILGNBQVQ4ekYsS0FUTkM7O2lDQUZHaCtHOztrRkFTdUM7K0NBRTNCaXFCOytCQVhaanFCO2dGQVlpQyxxREFBQTs7bUZBQUE7Z0RBRFYra0osS0FYdkIva0o7Z0ZBWUY7d0NBREsrOUcsSUFYSC85Rzt3RkFZZTtxREFESGlxQixJQVhaanFCOzs7K0VBVUYsMkRBQUE7d0VBVkVBOzs7Ozs7MEVBYUcsMkRBQUE7bUVBYkhBO3lFQWNIOzs7K0RBR0Y7O29CQWhCcUJnK0c7aUVBQU07b0JBQU5BO29CQURoQmgrRztnRUFDZ0M7OERBQS9CO2dFQUFBO29CQW5SaUIrN0Y7O29CQW9SWWlpQjtpRUFBTTtvQkFBTkE7b0JBRjlCaCtHO2dFQUU4Qzs4REFBakM7Z0VBQUE7YUFwUlBva0osS0FBS0MsT0FBT3RvRDs4REFvUmY7Z0VBQUE7Z0NBRlArb0Q7OzREQUdKLDJEQUFBOzs7NkRBMERTO2lCQS9Vc0Jub0o7U0E4VUFxTTtTQUFQZ3pHO1NBQUpncEM7OztnRUFRcEI7YUFOS2huQztrRUFNRTtvRUFBQTtpQ0FSaUJoQyxPQUFPaHpHOztrRUFTckI7aUVBRUQ7O2FBRE8rMEc7YUFBSjU4QztrRUFDSDtvRUFBQTs0Q0FER0EsSUFSUDY4Qzs7a0VBV0Q7Y0FEUTJnQzs7bUVBQ1I7a0VBQUs7OzJFQUNVOzhCQTVackJtRixvQkEwWmNuRixPQTFWYzVpRDs4QkF3VlZnaUI7MEVBSThDOzs7OztrRUFVNUM7aUVBTGQ7a0VBQUE7O2lFQUFLOzswRUFDVTtpQ0FsQmRDLElBRm1CaEMsT0FBT2h6Rzt5RUFvQjJCOzs7K0RBTXhEOztvQkF6QnNCZzFHO2lFQUFNO3dCQUFOQSxJQURBaEMsT0FBT2h6RztnRUFDaUM7OERBQXZEO2dFQUFBO29CQS9VaUIreUY7O29CQW1WdEJpaUI7aUVBQU07d0JBQU5BLElBTG9CaEMsT0FBT2h6RztnRUFLYTs4REFEeEM7Z0VBQUE7YUFsVlVvN0ksS0FBS0MsT0FBT3RvRDs2REFpVnhCOytEQUFBO2dDQUhrQmlwRDs7NERBUXBCLDJEQUFBOzs7NkRBNkNTO1NBSEc3L0gsS0FoWW1CeG9CO1NBZ1l2QnVvQixLQWhZdUJ2b0I7U0FnWTFCNGhILE1BaFkwQjVoSDs7O2dFQXFZL0I7YUFES0E7a0VBQ0c7b0VBQUE7aUNBTEF1b0I7a0VBS3FCO29FQUFBO2lDQUxqQkM7Ozs7OztvRUFLaUI7O29FQU8zQjs7OztvRUFrQkE7aUJBRnVCOC9IOztxRUFFdkI7cUVBQUs7OzhFQUVEO3NDQTVCRHRvSixHQUpHdW9CLElBNEJpQisvSDtpQ0FBQUE7aUNBNUJiOS9IOzZFQWdDZ0Q7Ozs7OzBCQTVCdkR4b0I7NEJBQUFBOztzQkFXUXVvSixLQVhSdm9KLE1BV0lvaEgsS0FYSnBoSDt1RUFhRTt5RUFBQTt5Q0FGTXVvSixJQWZELy9IO3dFQWlCWTt5RUFBQTs7d0VBQ2I7O2lGQUFjLE9BSGhCNDRGO2dGQUdrQjs7Ozt1RUFDaEI7d0VBQUE7O3VFQUNBOztnRkFDVTttQ0FqQmhCcGhIO21DQUpHdW9CO21DQUFJQzsrRUFxQitCOzs7OztxRUFLbEM7OztrRUFqQlA7bUVBQUE7O21FQUFLOzs0RUFBYyxPQUxoQnhvQjsyRUFLa0I7Ozs7aUJBMkJKd29KOzttRUFjZDs7cUVBQUE7cUNBbERHamdJLElBQUlDO29FQW9ESDttRUFGYTtvRUFBQTs7bUVBQ2I7OzRFQUFjLE9BL0NsQnhvQjsyRUErQ29COzs7OztrRUFidkI7bUVBQUE7O21FQUFLOzs0RUFFRDtvQ0FwQ0RBLEdBSkd1b0IsSUFvQ1dpZ0k7K0JBQUFBOytCQXBDUGhnSTsyRUF3Q2dEOzs7OztnRUFPMUQ7K0RBUUE7O29CQXBEc0J4b0I7aUVBQUs7b0JBQUxBO29CQUhoQnVvQjtvQkFBSUM7Z0VBR2dDOzhEQUFuQztnRUFBQTtvQkFuWWlCNDJFOztvQkFvWVdwL0Y7aUVBQUs7b0JBQUxBO29CQUo3QnVvQjtvQkFBSUM7Z0VBSTZDOzhEQUFyQztnRUFBQTthQXBZTmkvSCxLQUFLQyxPQUFPdG9EOzhEQW9ZaEI7Z0VBQUE7Z0NBSkx3aUI7OzREQUtMLDJEQUFBOzs7NERBb0RBO1NBRG1CdjZELE9BeGJZcm5EO1NBd2JoQm9uRCxPQXhiZ0JwbkQ7U0F3YnBCeW9KLFFBeGJvQnpvSjs2REF5Yi9COztnRUFFQTtnRUFBTTs7b0JBRmtCcWhIO2lFQUFNO29CQUFOQTtvQkFEVGo2RDtvQkFBSUM7Z0VBQ2lDOzhEQUEzQztnRUFBQTtvQkF6YmlCKzNDOztvQkEwYlVpaUI7aUVBQU07b0JBQU5BO29CQUZyQmo2RDtvQkFBSUM7Z0VBRTZDOzhEQUE3QztnRUFBQTthQTFiTG9nRyxLQUFLQyxPQUFPdG9EOzhEQTBiakI7Z0VBQUE7Z0NBRkVxcEQ7OzREQUdYLDJEQUFBOzs7NkRBbFVTO1NBRHFCeC9CLE9BeEhDanBIO1NBd0hMMG9KLFFBeEhLMW9KO1NBd0hSb3JDLElBeEhRcHJDO1NBd0hwQnZCLGFBeEhvQnVCOzs7Z0VBZ0kvQjthQU5Lb3JDO2dFQU1MLEdBUlczc0M7a0VBNEJjO3NCQTFCcEIyc0M7a0VBYUs7Y0FOZW5OLElBUHBCbU47O21FQWFLO29CQU5lbk47a0VBQ2xCOzsyRUFDVSxPQUZRQTtnQ0FUQ3lxSDtnQ0FBSXovQjswRUFhekI7Ozs7Z0VBT0g7aUVBQUE7O2lFQUFLOzswRUFDVSwyREFBQTtrRUFuQlo3OUU7eUVBcUJBOzs7K0RBTUg7O29CQTVCc0JBO2lFQUFLO29CQURsQjNzQztvQkFDYTJzQztvQkFERXM5RztvQkFBSXovQjtnRUFDZ0M7OERBQXJEO2dFQUFBO29CQXpIaUI3cEI7O29CQTZIdEJoMEQ7aUVBQUs7b0JBTEUzc0M7b0JBS1Ayc0M7b0JBTHNCczlHO29CQUFJei9CO2dFQUthOzhEQUR2QztnRUFBQTthQTVIVXcrQixLQUFLQyxPQUFPdG9EOzZEQTJIeEI7K0RBQUE7Z0NBSHFCaDBEOzs0REFRdkIsMkRBQUE7Ozs7Ozs7NERBOFBBOzZEQUFBOztnRUFDQTtnRUFBTTs4REFERztnRUFBQTtvQkE5WGlCZzBELEtBQUtwL0Y7NERBK1gvQiwyREFBQTs7OzREQXpRQTs2REFBQTs7Z0VBQ0E7Z0VBQVk7OERBREg7Z0VBQUE7b0JBdEhpQm8vRixLQUFLcC9GOzREQXVIL0IsMkRBQUE7Ozt3REF5VUQ7eURBMWNnQztZQUcvQnNuSjtZQU9BRTs7WUFtY0ZtQixpQkFBcUJDO3lEQUFGOzs7O21CQUFFQTs7O21CQUFBQTs7Ozs7Ozs2REEwQlA7O3lEQVRDO3dEQVNHOzs7O09BbG5CdEIxQztPQUFBQztPQUNBQztPQUFBQztPQUFBRztPQUFBQzs7T0FvRklVOztPQW1nQkF3Qjs7OzthOzs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDcG5CRUU7MERBQVU7S0FBZ0JqSDtLQUFKa0g7S0FBTm5IO0tBQUovNEg7MkRBQWNtZ0ksT0FBVnBILEtBQVVDLEtBQVZEOzs7WUFBSi80SDs7ZUFBVWtnSTs7Ozs7O29CQUFBQTs7MERBQVk7O1lBQVJDO3dEQVM3QjtZQUVHQyxVQUFhQyxXQUFPanBKOzBEQUFNOzREQUVyQixXQUZRaXBKLElBQU9qcEo7Ozs7Ozs7MERBQU0sV0FBTkE7d0RBT3ZCO1lBQ0drcEosY0FBaUJELFdBQU83N0k7aUJBR0Q3UTsyREFBSyxPQUFMQTswREFBTTswREFBcEI7Z0IsT0FYVHlzSixVQVFpQkM7O3lEQUdqQixxREFBQTs7NERBQUE7K0JBSHdCNzdJOzswREFFeEI7TUFBZ0IwN0k7TUFBSmpoSTtNQUFOZTtNQUFKeHVCOzJEQUFzQjtpQkFBdEJBLElBQVV5dEI7YUFyQlpnaEksUUFxQk1qZ0ksSUFBVWtnSTswREFBc0M7eURBRHhELDREQUFBOzt3REFJQztZQUNDSyxVQUFhRixXQUFPanBKOzBEQUFNOzREQUVyQixXQUZRaXBKLElBQU9qcEo7Ozs7Ozs7MERBQU0sV0FBTkE7d0RBT3ZCO1lBQ0dvcEosY0FBaUJILFdBQU83N0k7aUJBR0Q3UTsyREFBSyxPQUFMQTswREFBTTswREFBcEI7Z0IsT0FYVDRzSixVQVFpQkY7O3lEQUdqQixxREFBQTs7NERBQUE7K0JBSHdCNzdJOzswREFFeEI7TUFBZ0IwN0k7TUFBSmpoSTtNQUFOZTtNQUFKeHVCOzJEQUFzQjtpQkFBdEJBLElBQVV5dEI7YUFuQ1pnaEksUUFtQ01qZ0ksSUFBVWtnSTswREFBc0M7eURBRHhELDREQUFBOzt3REFJQztZQUVDTzswREFBc0I7eURBQW1CO1lBRXpDNXJKLGFBQXVCNnJKOzBEQUFkOztLQUFTcnJIO0tBQUhoaUM7S0FBSlY7MkRBQ0M7NkRBQUE7U0FEVyt0SixNQUFaL3RKOzs2QkFBSVUsWUFBQUE7Y0FBR2dpQyxRQUFIaGlDO3dEQU9oQjtZQUVDaUI7MERBQVM7S0FBZ0I0cko7S0FBSmpoSTtLQUFOZTtLQUFKeHVCOzBEQUFzQjtnQkFBdEJBLElBQVV5dEI7WUFuRHJCZ2hJLFFBbURlamdJLElBQVVrZ0k7d0RBRTVCO1lBRUdTOzBEQUE0Qjt5REFBRTt3REE5RGhDO3lEQUFBOztPQWtCRVA7T0FRQUU7T0FNQUM7T0FRQUM7T0FTQTNySjtPQVNBUDtPQVhBbXNKO09BZUFFOztZQUtFQyxtQkFBbUJwcUQsS0FBS3AvRjswREFBTSw2REFBQTtvQkFBOUJ3cEosZ0JBQW1CcHFELEtBQUtwL0Y7eURBQTRDOzt5REFFMUQ7R0FBZHlwSjs7ZSxPQUZJRDs7WUFJQUUsMkJBQTJCdHFEOzBEQUFMLElBWTVCc2dCOzBEQVo0QjtjQVk1QkE7MkRBQU8sNERBQUE7c0JBWkRncUMsd0JBQTJCdHFELEtBWWpDc2dCOzBEQU5JO01BSk9uakgsSUFVWG1qSDsyREFOSTs2REFBQTs0Q0FONkJ0Z0IsS0FFdEI3aUc7O2lCQUFBQTtxQjtpRUFLYyxzREFDRjs7b0VBQUE7Z0RBTlpBO2lFQU1GLHNEQUFBOztpRUFDQSw0REFBQTt3REFQRUEsOERBUUg7O1VBUkdBOzJEQUlQOzZEQUFBOytEQUNHOzs7TUFLUG1qSDs7eURBQXFEOzt5REFFN0I7R0FBdEJpcUM7O2UsT0FkSUQ7Ozs7a0NBRkpELGVBZ0JBRTs7OzthOzs7Ozs7Ozs7OztjOzs7OztjOzs7Ozs7OztJQzFGQXYrRzs7OztZQUVBdytHLGdCQUFtQnJ4SjsrREFDckIsa0VBQUE7d0VBQUE7a0NBRHFCQSx5QkFBQUE7OytEQUNzQjtZQUV6Q3N4SixVQUFhdHhKO2dFQUFlO2dDQUFmQSw0QkFBQUE7K0RBQXFEO1lBRWxFdXhKLFlBQWU5Mkk7K0RBQ2pCO01BRGlCQSxXQUFBQTtTQUVkemEsSUFGY3lhO2lFQUVSLE9BUFA0Mkk7Y0FPQ3J4Sjs7K0RBQ0k7OERBQ047WUFFQ3d4SixLQUFRLzJJOytEQUNWO1FBUEU4MkksWUFNUTkySTtpRUFDeUQsT0FEekRBO2lCQUNvQnphO2lFQUFLLDREQUFBO1lBVGpDc3hKLFVBUzRCdHhKO2lFQUFLLG1FQUFBOztnRUFBcUI7Z0VBQW5DLG1FQUFBO21DQURYeWE7K0RBQzhEO1lBRXRFOGMsS0FBUWs2SDsrREFDVixPQWZFSjtjQWNRSTtjQVhSSCxVQVdRRztjQUFBQTsrREFDc0Q7OztVQWpCOUQ1K0csR0FFQXcrRyxpQkFHQUMsV0FFQUMsYUFNQUMsTUFHQWo2SDs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7OztJQ1FKd2M7SUFBQWowQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBREFvNEQ7SUFBQUM7WUFBQXJ3RDtpREFBQTtnREFJQztZQUpEdkI7aURBQUE7Z0RBSUM7O0tBSkQyeEQ7Y0FDQW4xRCxLQUFBaUI7bURBQUEsNkNBQUE7NEJBQUFqQjttREFBQSw2Q0FBQTs0QkFBQUE7Z0JBQUFpQjttREFBQSw2Q0FBQTtxREFEQSxXQUFBdUMsT0FDQXhEOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtnQkFBQWlCO21EQUFBLDZDQUFBO3FEQURBLFdBQUE4RCxPQUNBL0U7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSxvREFBQTttQ0FBQUE7a0RBR0M7O0tBSkRvMUQ7Y0FDQW4wRDttREFBQSxvREFBQTt3Q0FEQWswRCxVQUNBbDBEO2tEQUdDO2dEQUhELFNBQUF1MEQ7SUFBQTNvRDtpREFBQSxTQUFBQTtrREFBQSxvREFBQTs0Q0FBQW1rQyxrQkFBQW5rQztpREFBQTtLQUFBQyxrQkFBQUQ7a0RBQ0U4aEo7a0RBQ0FDO2tEQUZGejlHO2tEQUFBQzthQUFBQztrREFBQTtrREFBQTtpRUFBQTtVQUFBaGtDO2VBQUFBO2lCQUFBQTs7Ozs7YUFBQWlrQywwQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBRTtVQUFBQztxQkFBQUg7c0JBQUFJOzJEQUFBO2tCQUFBSjs0REFBQSxvREFBQTtzREFBQU4sa0JBQUFua0M7aUJBQUF5a0M7NERBQUEsbURBQUE7O2tCQUFBSyxRQUFBTDsyREFBQSxPQUFBSzswREFHQztvQkFIREQ7O1VBQUFBLGlCQUFBRCxpQkFBQUg7aUNBQUFDO2tDQUFBQTs7WUFBQUgsbUJBQUFHLGdCQUFBSDs7a0JBQ0V1OUc7V0FERng5Ryx3QkFBQUksZ0JBQUFKOzt3REFDRTt5REFERlMsbUJBQUFGO3lEQUNFRzsyREFBQTtpQ0FERkQ7V0FDRSs4RyxnQkFBQTk4Rzs7aUJBQ0ErOEc7VUFGRno5Ryx3QkFBQUksZ0JBQUFKOzt1REFFRTt3REFGRlcsbUJBQUFKO3dEQUVFSzswREFBQTtrQ0FGRkQ7VUFFRTg4Ryx5QkFBQTc4Rzs7dUJBRkZQOzs7OzttREFBQSxvREFBQTs2Q0FBQVIsa0JBQUEzakM7O2lEQUdDO2lEQUhEZ2tDLFNBQUF2a0M7T0FBQXFrQztrREFBQSxvREFBQTs7Y0FBQUg7Y0FBQUc7Y0FBQXRrQztPQUFBdWtDO2tEQUFBLG9EQUFBOztjQUFBSjtjQUFBSTtjQUFBdmtDO2NBQ0U4aEosbUJBQ0FDOztTQUFBQyw0QkFEQXgxSDtrREFERjthQUNFQTthQUNBdzFIOztpREFGRixvREFBQTs7YUFBQTc5RzthQUFBbmtDOzt3QkFDRThoSjs0QkFDQUM7Z0RBQ0Q7WUFIRHg0RjtpREFBQTtLQUVFMDRGO0tBREFDO2tEQUNBbnRIO29EQUFBOzRCQUFBa3RIO2tEQUZGMThHOzRCQUVFeFE7a0RBREF5UTtvREFBQTswQkFBQTA4RztrREFERno4Rzs0QkFDRUQsZUFERkQ7aURBQUEsV0FBQUU7Z0RBR0M7Z0RBSEQsU0FBQXFrQjtJQUFBOTNEO2lEQUFBO2FBQUFBLHFDQUFBQTtrREFDRTtNQURGOEgsZ0JBQUE5SDttREFDRXVMO21EQUNBNGtKO21EQUZGbG9KO21EQUFBQztNQUFBQzs7c0RBQUE7c0RBQUE7cUVBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBO3lEQUFBOzJEQUFBOzthQUFBSjs7ZUFBQUk7NERBQUE7eUNBQUFKOzs7MERBQ0U7dUNBQUFxRDtZQURGdEQ7O2NBQUFLOzJEQUNFO3dDQURGTDs7eURBQ0UsNkNBQUE7YUFBQU07NERBQUE7a0NBREZGO1lBQ0VrRCxrQkFBQWhEOzs7eURBQ0E7c0NBQUE0bko7V0FGRmxvSjs7YUFBQUs7MERBRUU7dUNBRkZMOzt3REFFRSw2Q0FBQTtZQUFBTzsyREFBQTttQ0FGRkg7V0FFRThuSiwyQkFBQTNuSjs7d0JBRkZKOztxREFHQztrREFIREQsS0FBQUw7O29EQUFBO2lDQUFBRzttREFBQSw2Q0FBQTs7c0RBQUE7bUNBQUFBO21EQUFBLG9EQUFBO21EQUFBL0osYUFBQThCOzs7b0RBQUE7aUNBQUFrSTttREFBQSw2Q0FBQTs7c0RBQUE7bUNBQUFBO21EQUFBLG9EQUFBO21EQUFBaEssYUFBQThCOztrREFDRTttREFBQTtxREFBQTtrQ0FBQXVMO21EQUNBO3FEQUFBO2tDQUFBNGtKOztVQUFBQyxnQ0FEQTVrSjttREFERjtjQUNFQTtjQUNBNGtKOztrREFGRjttREFBQTs7Ozs7eURBRUU7c0NBQUFEOzs7OzttREFGRjs7Ozs7eURBQ0U7c0NBQUE1a0o7Ozs7O2tEQURGLG9EQUFBO2tEQUFBck4sUUFBQThCOztpREFBQSxvREFBQTtpREFBQTlCLFFBQUE4QjtnREFHQztZQUhEKzNEO2lEQUFBO0tBRUVzNEY7S0FEQTVrSjtLQUNBNUMsb0NBQUF3bko7S0FBQXZuSixrQ0FBQUQ7S0FEQUUsb0NBQUEwQztLQUFBekMsMkJBQUFELFFBQ0FEO2lEQUZGLHNCQUNFRTtnREFFRDs7SUFJRG5LO0lBQUFHO1lBQUEyTztpREFBQTtpREFDK0I7WUFEL0J4SDtpREFBQSxPQVJBbXdEO2lEQVMrQjs7S0FEL0J6M0Q7Y0FDQXNDO21CQUFTQSxLQUFVaUI7cURBQUEsOENBQUE7NkJBQVZqQjs7b0JBQVV1TCxLQUFBdEs7c0RBQUEsR0FBQXNLO3VEQUFBLDhDQUFBOytCQUFWdkw7c0RBQVUsOENBQUE7dURBRG5CO1lBQUFnRixTQUNTaEY7VUFBVWlCO3NEQUFBO3FEQUFXO3FEQUFYLDhDQUFBO29DQUFBQTtxREFBQSxxREFBQTtvQ0FBVmpCO29EQUFxQjttREFEOUIsb0RBQUE7ZUFBQXdNLGNBQ0F4TTttREFBK0I7O0tBRC9CbkM7Y0FDQW9EO21EQUFBLG9EQUFBO3dDQURBdkQsSUFDQXVEO21EQUErQjtZQUEvQi9ELFVBQUFpdEo7aURBQUEsNkNBQVM7O29EQUFBOzBCQVJUMzBGO2lEQVFBLG9EQUFBO3VDQUFBMjBGO2lEQUErQjtZQUEvQm50SixVQUFBbXlKO2lEQUFBO3VDQVJBLzRGO2lEQVFBLG9EQUFBO3VDQUFBKzRGO2lEQUErQjtnREFBL0IsU0FBQTl4SixZQUFBSjs7OzREQVJBMDVEO2dEQVFBMTVEOztZQUFBRyxZQUFBNkM7Ozs0REFSQTIyRDtnREFRQTMyRDs7T0FFSXlwQjtZQUVBcHNCLEdBQU02NkQsWUFBbUJELFdBQVdrM0Y7a0RBQWlCLDhDQUNsQztLQUFqQm4zRjtxREFBaUI7NEJBRE1DLFdBQW5CQzs7a0RBR04sSUFBRWgrQzswREFDTztrQ0FIUDg5QyxnQkFFQTk5Qzs7O2lEQUlDO2lEQUxMLG9EQUFBO3dDQUZzQ2kxSTtnREFVdkM7Z0RBVlEsNkNBQUE7O2dCQWNTQyxTQUFTQztrREFBWSxxREFBQTt5QkFBckJELFNBQVNDO2lEQUE2QjtnREFBdEQsNkNBQUE7SUFERUM7bURBQ0Y7O1lBRUV2dUcsVUFBYTdtQyxNQUFNdmMsSUFBSTR4SjtrREFBbUI7Z0JBQTdCcjFJLGNBQU12YyxJQUFJNHhKOztnREFFMUI7WUFFR3BpRyxLQUNEdk8sS0FBSzR3RztpQkFDd0J6NEY7bURBQVMsT0FBVEE7a0RBQTBCO2tEQUFuQzttREFBZjA0RjtxREFBZTsrQkFEZkQ7bURBRUc7cURBQUE7aUNBRlI1d0csS0FDSzZ3Rzs4REFFTTtRQUNIemtHO2tEQUFPLE9BQVBBO2dEQUVSOzs7O09BeENIa0s7T0FBQUM7T0FDQUk7T0FBQVk7T0FBQU87T0FBQUM7T0FPQWw1RDtPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQUVJc3NCO09BRUFwc0I7T0FhQWl5SjtPQUdBdnVHO09BSUFvTTs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQzFDSnJxRDtJQUFBaEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBREFXO0lBQUFHO1lBQUEyRjtnREFBQTtnREFJYzs7S0FKZDlGO2NBQ0FzQztrREFBQTs7OzZEQUFBO3FDQUFBQTs2REFBQTtxQ0FBQUE7VUFEQXlEO2tEQUNBLDRDQUFBOzRCQUFBekQ7a0RBREEsNENBQUE7b0RBQUEsV0FBQXdELE9BQ0F4RDtRQURBeUQ7a0RBQUEsbURBQUE7bUNBQ0F6RDtrREFHYzs7S0FKZG5DO2NBQ0FvRDtrREFBQSxtREFBQTt3Q0FEQXZELElBQ0F1RDtrREFHYzsrQ0FIZCxTQUFBL0QsVUFBQXdHO2dEQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7Ozs7b0RBQUE7O21EQUFBOztrREFBQSxtREFBQTs0Q0FBQVgsa0JBQUFXOztlQUFBQTs7a0RBQUEsbURBQUE7NENBQUFYLGtCQUFBVzs7O2tEQUFBLG1EQUFBOzRDQUFBWCxrQkFBQVc7U0FBQUM7OzZCQUFBQTs7OEJBQUFBOytCQUFBQTtrQ0FBQUE7a0NBQUFBO2dDQUFBQTs7bURBQUEsbURBQUE7NkNBQUFaLGtCQUFBVzs7a0RBQUEsbURBQUE7NENBQUFYLGtCQUFBVzs7U0FBQUU7UUFBQUEsbUJBQUFBO2tEQUFBO09BQUFDLFdBQUFEO21EQUFBRTtxREFBQTs4QkFBQUQ7a0RBQUEsV0FBQUM7O2lEQUFBLG1EQUFBOztjQUFBZjtjQUFBWTtjQUFBRDs7Z0RBQUEsbURBQUE7MENBQUFYLGtCQUFBVztnREFHYztZQUhkMUc7Z0RBQUE7O2dEQUdJO0tBQUF3QjtpREFBQXVGO21EQUFBOzRCQUFBdkY7Z0RBQUE7eUJBQUF1RjtnREFBVTsrQ0FIZCxTQUFBMUcsWUFBQXdCO2dEQUFBLFVBQUFBO2VBQUFBOztnQ0FBQUE7bURBQUEsbURBQUE7bURBQUE5QixRQUFBOEI7OztnQkFBQUE7O21EQUFBLG1EQUFBO21EQUFBOUIsUUFBQThCOzs7OztZQUFBbUY7a0NBQUFBO2FBQUFDO1lBQUFBLGlCQUFBQTtzREFBQTtXQUFBbEYsS0FBQWtGO3VEQUFBakY7eURBQUE7a0NBQUFEO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTtxREFBQWpDLFFBQUFpSCxLQUFBbkY7O2tDQUFBbUY7OytEQUFBO3VEQUFBakgsUUFBQThCOztrQ0FBQW1GOzsrREFBQTt1REFBQWpILFFBQUE4Qjs7OztvREFBQSxtREFBQTtvREFBQTlCLFFBQUE4Qjs7OztnREFBQSxtREFBQTtnREFBQTlCLFFBQUE4QjtnREFHYztZQUhkekI7Z0RBQUE7O2dEQUdJO0tBQUEyQjtpREFBQUM7bURBQUE7NEJBQUFEO2dEQUFBOzt5QkFBQUM7Z0RBQVU7WUFFVjJ3SixJQUFrQjFrRztpREFBTSxXQUFOQTtnREFBYTtZQUcvQjJrRztnREFDRjs7UUFDTTNrRztpREFBTyxPQUFQQTtnREFFbUQ7WUFFdkQ0a0csU0FBWWh4RyxLQUFZM1E7Z0RBQzFCLFVBRDBCQTtrREFHZDtpREFDQztLQUFQK2MsS0FKb0IvYztrREFJYjtvREFBQTtzREFBTTs4QkFKTDJRO1NBSVJvTTtpREFBTyxvREFBQTswREFBZ0M7a0NBYjNDMGtHOzsrQ0FjRDtZQUVDRyxRQUFXanhHLEtBQVkzUSxNQUFTampDO2dEQUNsQyxVQUR5QmlqQztrREFHYiw2Q0FBQTs7O3NEQUF1QjtxREFBRztrREFBUixvREFBQTsrQkFISWpqQzs7aURBSXJCO0tBQVBnZ0QsS0FKbUIvYztrREFJWjtvREFBQTtzREFBTTs4QkFKTjJRLEtBQXFCNXpDO1NBSTVCZ2dEO2lEQUFPLG9EQUFBOzBEQUF1QztnQ0FwQmxEMGtHOzsrQ0FxQkQ7WUFFQ0ksV0FBY2x4RyxLQUFZM1E7Z0RBQzVCLFVBRDRCQTtrREFHaEI7UUFDTitjLEtBSnNCL2M7aURBSWY7eURBQUk7aUNBSkQyUSxLQUlWb007K0NBQ0w7WUFFQytrRyxXQUFjbnhHLEtBQVkzUSxNQUFTK2hIO2dEQUNyQyxVQUQ0Qi9oSDtrREFHaEIsZUFIeUIraEg7UUFJL0JobEcsS0FKc0IvYztpREFJZjs7MERBQVM7a0NBSk4yUSxLQUlWb007K0NBQ0w7WUFFQ3hJLFFBQVc1RCxLQUFZM1E7Z0RBQ3pCLFVBRHlCQTtrREFHYjtRQUNOK2MsS0FKbUIvYztpREFJWjt5REFBSTtpQ0FKSjJRLEtBSVBvTTsrQ0FDTDtZQUVDaWxHLGVBQWtCcnhHLEtBQVkzUTtnREFDaEMsVUFEZ0NBO2tEQUdwQjtRQUNOK2MsS0FKMEIvYztpREFJbkI7OzBEQUFTO2tDQUpGMlEsS0FJZG9NOytDQUNMO1lBRUNrbEcsWUFBZXR4RyxLQUFZNXpDLFFBQVFpakM7O2tEQUNkLE9BZnJCdVUsUUFjZTVELEtBQW9CM1E7aURBQ0k7aURBQXZCLG9EQUFBOzhCQURXampDO2dEQUNhO1lBRXhDbWxKLFlBQWV2eEcsS0FBWTNRLE1BQVN5UztpREFBc0MsVUFBL0N6UztpREFhdEI7Y0Fic0JBOzs7cURBS2RtaUg7U0FBQUE7O2lCQUVSOXRHOztrREFFTCxJQURTK3RHO2tEQUNULEtBRFNBO21EQURULE9BRmFEO1VBTU50aEcsUUFIRXVoRzttREFHUSxXQUFWdmhHLE9BTk1zaEc7aURBT1g7a0RBSm1CLDZDQUFBOztxREFBQTs2QkFSZTF2RyxLQU8vQjRCO2lEQUVMLG1EQUFBOztnREFHRTtpREFMVSw2Q0FBQTs7b0RBQUE7NEJBUEcxRCxLQUtGd3hHO2dEQUdiLG1EQUFBOzsrQ0FPSDtZQUVHRSxhQUFnQjF4RyxLQUFZM1EsTUFBU3lTO2dEQUN2Qyw0Q0FBTzthQWxCTHl2RyxZQWlCZ0J2eEcsS0FBWTNRLE1BQVN5Uzs4REFVN0I7UUFSSDB2RztjQUFBQSw2QkFBQUE7a0RBQXVCLGVBQXZCQTtpREFPTDt5QkFQS0E7Z0RBU047WUFFQ0csTUFBUzN4RyxLQUFLM1EsTUFBTXlTO2lEQUt0QixLQUxzQkE7bURBV1o7a0RBSkQ7S0FERnhtQyxPQU5ld21DO21EQU9iO09BcEJQNHZHLGFBYVMxeEcsS0FBSzNRLE1BTVQvekI7OERBR0U7UUFEQXMySTtrREFBUyxPQUFUQTtnREFJUjs7OztPQXRHSC95SjtPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQUtJdXlKO09BR0FDO09BTUFDO09BT0FDO09BT0FDO09BT0FDO09BT0F2dEc7T0FPQXl0RztPQU9BQztPQUdBQztPQWlCQUc7T0FhQUM7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7Ozs7SUN0Rkp6dEo7SUFBQWhHO0lBS0E4TztJQUFBdEk7SUFhQW10SjtJQUFBbC9JO0lBS0FtL0k7SUFBQWovSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBeEJBay9JLGFBQ0E1d0o7Z0RBQUE7MERBQUE7a0NBQUFBOzBEQUFBO2tDQUFBQTsrQ0FFUTtZQUhSNndKLGVBQ0E1dko7Z0RBQUEsbURBQUE7c0NBREEydkosY0FDQTN2SjsrQ0FFUTsrQ0FGUixTQUFBNnZKO0lBQUE3dEo7Z0RBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OzttREFBQTs7a0RBQUE7O2dCQUFBQTs7a0RBQUEsbURBQUE7NENBQUFGLGtCQUFBRTs7O2tEQUFBLG1EQUFBOzRDQUFBRixrQkFBQUU7Ozs7Ozs7O2tEQUFBLG1EQUFBOzRDQUFBRixrQkFBQUU7O2lEQUFBLG1EQUFBOzJDQUFBRixrQkFBQUU7O2dEQUFBLG1EQUFBOzBDQUFBRixrQkFBQUU7K0NBRVE7WUFGUjh0SjtnREFBQTsrQ0FFUTsrQ0FGUixTQUFBQztJQUFBbnlKO2dEQUFBO2FBQUFBLHFDQUFBQTtnQkFBQUE7O2tEQUFBLG1EQUFBO2tEQUFBOUIsUUFBQThCOzs7Ozs7Ozs4REFBQTtzREFBQTlCLFFBQUE4Qjs7Ozs4REFBQTtzREFBQTlCLFFBQUE4Qjs7OzttREFBQSxtREFBQTttREFBQTlCLFFBQUE4Qjs7O2dEQUFBLG1EQUFBO2dEQUFBOUIsUUFBQThCOytDQUVRO1lBRlJveUo7Z0RBQUE7K0NBRVE7O0lBRVJ2eko7SUFBQUc7WUFBQWlzQjtnREFBQTsrQ0FVTTtZQVZOQztnREFBQTs7K0NBVU07WUFWTkM7Z0RBQUE7K0NBVU07WUFWTnhLO2dEQUFBOytDQVVNO1lBVk41UztnREFBQTsrQ0FVTTtZQVZON0g7Z0RBQUEsT0FMQTZySjsrQ0FlTTtZQVZOcHRKO2dEQUFBOytDQVVNOztLQVZOOUY7Y0FDQXNDO2tEQUFBOzttREFBQSxtREFBQTttQ0FBQUE7OzthQURBeUQ7cURBQ0EsNENBQUE7K0JBQUF6RDtxREFEQSw0Q0FBQTt1REFBQSxXQUFBd0QsT0FDQXhEO1dBREF5RDtxREFBQSxtREFBQTtzQ0FDQXpEOzthQURBOEwsZUFBQXVQO3FEQUNBLDRDQUFBOytCQUFBcmI7cURBREEsNENBQUE7aUJBQUErRTtxREFBQSw0Q0FBQTt1REFDQS9FLGNBREFxYjtxREFDQSw0Q0FBQTsrQkFBQXJiO3FEQURBLFVBR3NCaUI7eURBQUEsNkNBQUE7a0NBRnRCakI7OzBCQUVzQnVMLEtBQUF0SzswREFBQSxHQUFBc0s7MkRBQUEsNkNBQUE7b0NBRnRCdkw7MERBRXNCLDZDQUFBOzJEQUh0QjtpQkFBQTRNLE9BQ0E1TTtlQUVzQmlCOzBEQUFBO3lEQUFnQjt5REFBaEIsNkNBQUE7MkNBQUFBO3lEQUFBLG9EQUFBO3lDQUZ0QmpCO3dEQUVzQztZQUh0QzhMO3FEQUFBLG1EQUFBO3NDQUNBOUw7O2FBREF1ZjtxREFDQSw0Q0FBQTsrQkFBQXZmO3FEQURBLDRDQUFBO3VEQUFBLFdBQUF3ZixPQUNBeGY7V0FEQXVmO3FEQUFBLG1EQUFBO3NDQUNBdmY7O2FBREFvcUI7cURBQ0EsNENBQUE7K0JBQUFwcUI7cURBREEsNENBQUE7dURBQUEsV0FBQWdxQixPQUNBaHFCO1dBREFvcUI7cURBQUEsbURBQUE7c0NBQ0FwcUI7O2FBREFreEosb0JBQUFDO3FEQUNBLDRDQUFBOytCQUFBbnhKO3FEQUFBLDRDQUFBOytCQUFBQTtxREFBQSw0Q0FBQTt1REFEQSxXQUFBK3BCLE9BQ0EvcEI7V0FEQW14SjtxREFDQSw0Q0FBQTsrQkFBQW54SjtxREFBQSw0Q0FBQTsrQkFBQUE7cURBQUEsNENBQUE7K0JBQUFBO3FEQUFBO3lEQVFjOzBEQUFBLG9EQUFBO3lDQVJkQTtnQkFRY2lCO3lEQUFBLDZDQUFBO2lDQVJkakI7eURBUWMsNkNBQUE7MERBVGQ7Z0JBQUE4cEIsT0FDQTlwQjtjQVFjaUI7eURBQUEsb0RBQUE7d0NBUmRqQjt3REFRMkI7WUFUM0JreEo7cURBQ0EsNENBQUE7K0JBQUFseEo7cURBQUEsbURBQUE7c0NBQUFBOztpREFTTTs7S0FWTm5DO2NBQ0FvRDtrREFBQSxtREFBQTt3Q0FEQXZELElBQ0F1RDtpREFTTTtZQVROL0QsVUFBQXNlO2dEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VEQUFBLG1EQUFBO2lEQUFBM1Asa0JBQUEyUDs7c0RBQUEsbURBQUE7Z0RBQUEzUCxrQkFBQTJQOztxREFBQSxtREFBQTsrQ0FBQTNQLGtCQUFBMlA7O29EQUFBOzttREFBQSxtREFBQTs2Q0FBQTNQLGtCQUFBMlA7O2tEQUFBLG1EQUFBOzRDQUFBM1Asa0JBQUEyUDs7Z0JBQUFBOztrREFBQSxtREFBQTs0Q0FBQTNQLGtCQUFBMlA7OztrREFBQSxtREFBQTs0Q0FBQTNQLGtCQUFBMlA7U0FBQUMsOENBQUFBOzs7Ozs7Ozs7Ozs7O3NDQUFBQTtzQ0FBQUE7c0NBQUFBO3NDQUFBQTtvQ0FBQUE7Ozs7dUNBQUFBO3FDQUFBQTtxQ0FBQUE7cUNBQUFBO3FDQUFBQTttQ0FBQUE7OztjQUFBbXFDO2FBQUFBLG1CQUFBQTt1REFBQTtZQUFBQyxXQUFBRDt3REFBQTNGOzBEQUFBO29DQUFBNEY7dURBQUEsV0FBQTVGOztzREFBQSxtREFBQTs7bUJBQUFwMEM7bUJBQUE0UDttQkFBQUQ7O2FBQUEwcUM7WUFBQUEsbUJBQUFBO3NEQUFBO1dBQUFDLFdBQUFEO3VEQUFBbjdCO3lEQUFBO2tDQUFBbzdCO3NEQUFBLFdBQUFwN0I7O3FEQUFBLG1EQUFBOztrQkFBQWxmO2tCQUFBNFA7a0JBQUFEOztvREFBQTtTQUFBZzZCO3FEQU9NNDdHO3FEQUNBQztxREFSTkM7cURBQUFDO1NBQUFDOzt3REFBQTt3REFBQTt1RUFBQTtpQkFBQUM7c0JBQUFBO3lCQUFBQTs7Ozs7b0JBQUFDLDJCQUFBQzttQkFBQUQsbUJBQUFBOztpQkFBQUU7aUJBQUFDOzRCQUFBSDs2QkFBQUk7aUVBQUE7eUJBQUFKO2tFQUFBLG1EQUFBOzZEQUFBN2xKLGtCQUFBMlA7d0JBQUFrMkk7a0VBQUEsa0RBQUE7O3lCQUFBSyxRQUFBTDtpRUFBQSxPQUFBSztnRUFTTTsyQkFUTkQ7O2lCQUFBQSxpQkFBQUQsaUJBQUFIO3dDQUFBQzt5Q0FBQUE7O21CQUFBSixtQkFBQUksZ0JBQUFKOzt5QkFRTUY7a0JBUk5DLHdCQUFBSyxnQkFBQUw7OzhEQVFNOytEQVJOVTtzQkFBQUY7K0RBUU1wd0k7aUVBQUE7MkRBUk5zd0k7a0JBUU1YLG9CQUFBM3ZJOzt3QkFEQTB2STtpQkFQTkUsd0JBQUFLLGdCQUFBTDs7NkRBT007OERBUE5XO3FCQUFBSDs4REFPTWx3STtnRUFBQTtnREFQTnF3STtpQkFPTWIsa0JBQUF4dkk7OzhCQVBOZ3dJOzs7Ozt5REFBQSxtREFBQTtvREFBQS9sSixrQkFBQTRsSjs7dURBU007b0RBVE5ELFNBQUFoOEc7V0FBQTg3RztxREFBQSxtREFBQTs7a0JBQUF6bEo7a0JBQUF5bEo7a0JBQUE5MUk7V0FBQSsxSTtxREFBQSxtREFBQTs7a0JBQUExbEo7a0JBQUEwbEo7a0JBQUEvMUk7bUJBT000MUkscUJBQ0FDOzthQUFBYSx1QkFEQUM7cURBUE47aUJBT01BO2lCQUNBRDs7b0RBUk4sbURBQUE7O2lCQUFBcm1KO2lCQUFBMlA7OzRCQU9NNDFJO2dDQUNBQzs7bURBUk4sbURBQUE7NkNBQUF4bEosa0JBQUEyUDs7VUFBQUU7U0FBQUEsbUJBQUFBO21EQUFBO1FBQUFDLFdBQUFEO29EQUFBRTtzREFBQTsrQkFBQUQ7bURBQUEsV0FBQUM7O2tEQUFBLG1EQUFBOztlQUFBL1A7ZUFBQTRQO2VBQUFEOztTQUFBSztpREFBQSxHQUFBQTtpQkFBQUE7O21EQUFBO1FBQUF1Mkk7UUFBQXQySSxXQUFBRDtvREFBQXNrRDtVQUxBMndGLGtCQUtBaDFJO29EQUFBc2tEO3NEQUFBO2dEQUFBZ3lGO21EQUFBO2VBQUFqeUY7ZUFBQUM7OztpREFBQSxtREFBQTs7Y0FBQXYwRDtjQUFBNFA7Y0FBQUQ7O2dEQUFBLG1EQUFBOzBDQUFBM1Asa0JBQUEyUDsrQ0FTTTtZQVROeGU7Z0RBQUE7aURBS0k7OzttREFKQTtRQUFBNitCO29EQUFBMHlDO3NEQUFBOytCQUFBMXlDO21EQUFBOzRCQUFBMHlDOzttREFDQTtRQUFBL29DO1FBQUFsakI7b0RBQUFtakI7VUFQSnNySCxrQkFPSXp1STtvREFBQW9qQjtzREFBQTtnREFBQUY7bURBQUE7NEJBQUFDLGNBQUFDOzttREFDQTtRQUFBL2lCO29EQUFBQztzREFBQTtnQ0FBQUQ7bURBQUE7NEJBQUFDOzttREFDQTtRQUFBaWpCO29EQUFBMmxIO3NEQUFBOytCQUFBM2xIO21EQUFBOzRCQUFBMmxIOzttREFJRTtRQUFBNkc7UUFEQUM7b0RBQ0Fodkk7c0RBQUE7Z0RBQUErdUk7b0RBRkZFOytCQUVFanZJO29EQURBRTtzREFBQTtzQ0FBQTh1STtvREFERkU7K0JBQ0VodkksZUFERit1STttREFBQTt3QkFBQUM7OytDQUdFO1lBVE5uMUosWUFBQXdCO2dEQUFBLFVBQUFBO2dCQUFBQTs7aUJBQUFBOzs7Ozs7Ozs7Ozs7OzttREFBQSxtREFBQTttREFBQTBFLFVBQUExRTs7O2lCQUFBQTs7bURBQUEsbURBQUE7bURBQUEwRSxVQUFBMUU7Ozs7O1lBQUFtRjtrQ0FBQUE7YUFBQXNvQjtZQUFBQSxtQkFBQUE7c0RBQUE7V0FBQUcsT0FBQUg7dURBQUFJO3lEQUFBO21DQUFBRDtzREFBQSxXQUFBQzs7cURBQUEsbURBQUE7cURBQUFucEIsVUFBQVMsS0FBQW5GOztrQ0FBQW1GO2FBQUErZjtZQUFBQSxtQkFBQUE7c0RBQUE7V0FBQUMsT0FBQUQ7dURBQUFFO3lEQUFBO2tDQUFBRDtzREFBQSxXQUFBQzs7cURBQUEsbURBQUE7cURBQUExZ0IsVUFBQVMsS0FBQW5GOztnQ0FBQW1GO21DQUFBQTs7Z0VBQUE7d0RBQUFULFVBQUExRTs7bUNBQUFtRjtjQUFBc1k7YUFBQUEsbUJBQUFBO3VEQUFBO1lBQUFDLE9BQUFEO3dEQUFBRTswREFBQTttQ0FBQUQ7dURBQUEsV0FBQUM7O3NEQUFBLG1EQUFBO3NEQUFBalosVUFBQVMsS0FBQW5GOzttQ0FBQW1GO2NBQUFDO3NEQUFBLEdBQUFBO3NCQUFBQTs7d0RBQUE7YUFBQW5GO2FBQUFDLEtBQUFrRjt5REFBQWpGO2VBTEFneUosb0JBS0FqeUo7YUFBQUU7Ozs7aUJBQUFIO3dEQUFBLFdBQUFFLE1BQUFDOzs7c0RBQUEsbURBQUE7c0RBQUFzRSxVQUFBUyxLQUFBbkY7Ozs7Ozs7O3VEQU9NO1lBUE44SDt3REFPTW9yRDt3REFDQTBnRzt3REFSTjNySjt3REFBQUM7WUFBQUM7OzJEQUFBOzsyREFBQTs7NkRBQUE7O2lCQUFBQzs7aUJBQUFDO2lCQUFBQzt3Q0FBQUE7eUNBQUFBOzhEQUFBO2dFQUFBOzs7bUJBQUFKOztxQkFBQUk7aUVBQUE7K0NBQUFKOzs7K0RBUU07NkNBQUEwcko7a0JBUk4zcko7O29CQUFBSztnRUFRTTs4Q0FSTkw7OzttQkFRTU07Ozs7dUJBUk5GO2tCQVFNdXJKLHNCQUFBcnJKOzs7OERBREE7NENBQUEycUQ7aUJBUE5qckQ7O21CQUFBSzsrREFPTTs2Q0FQTkw7OzZEQU9NLDRDQUFBO2tCQUFBTztnRUFBQTtnREFQTkg7aUJBT002cUQsb0JBQUExcUQ7OzhCQVBOSjs7MERBU007dURBVE5ELEtBQUFMOzt5REFBQTt1Q0FBQUc7d0RBQUEsNENBQUE7OzJEQUFBO3lDQUFBQTt3REFBQSxtREFBQTt5REFBQXZELGdCQUFBMUU7Ozt5REFBQTt1Q0FBQWtJO3dEQUFBLDRDQUFBOzsyREFBQTt5Q0FBQUE7d0RBQUEsbURBQUE7eURBQUF4RCxnQkFBQTFFOzt1REFPTTt3REFBQTswREFBQTt3Q0FBQWt6RDt3REFDQTswREFBQTt3Q0FBQTBnRzs7Z0JBQUFDLDJCQURBeGdHO3dEQVBOO29CQU9NQTtvQkFDQXdnRzs7dURBUk47d0RBQUE7Ozs7OzhEQVFNOzRDQUFBRDs7Ozs7d0RBUk47Ozs7OzhEQU9NOzRDQUFBMWdHOzs7Ozt1REFQTixtREFBQTt3REFBQXh1RCxVQUFBMUU7Ozs7OztvREFBQSxtREFBQTtvREFBQTBFLFVBQUExRTs7OztnREFBQSxtREFBQTtnREFBQTBFLFVBQUExRTsrQ0FTTTtZQVROekI7Z0RBQUE7aURBS0k7OzttREFKQTtRQUFBMkI7b0RBQUFDO3NEQUFBOytCQUFBRDttREFBQTs7NEJBQUFDOzttREFDQTtRQUFBRjtRQUFBeWQ7b0RBQUFDO1VBUEp5MEksb0JBT0kxMEk7UUFBQXRkOzt5RUFBQUg7bURBQUE7OzRCQUFBMGQsVUFBQXZkOzttREFDQTtRQUFBK2tCO29EQUFBQztzREFBQTtnQ0FBQUQ7bURBQUE7OzRCQUFBQzs7bURBQ0E7UUFBQXdJO29EQUFBQztzREFBQTsrQkFBQUQ7bURBQUE7OzRCQUFBQzs7O1FBSUVpbUk7UUFEQXRnRztRQUNBM3FEOzs7O1lBQUFpcko7UUFBQWhySiw2QkFBQUQ7UUFEQUUsNkNBQUF5cUQ7UUFBQXhxRCw2QkFBQUQsUUFDQUQ7bURBRkY7OzJDQUNFRTs7K0NBRUE7O0lBR04rcUo7SUFBQUM7WUFBQXJtSjtnREFBQSxPQWJBOU87Z0RBZ0JhO1lBSGJzSDtnREFBQTtnREFHYTs7S0FIYjR0SjtjQUNBNXlKO2tEQUFBO1dBREF5RDttREFDQSw0Q0FBQTs2QkFBQXpEO21EQURBLDRDQUFBO3FEQUFBLFdBQUFnRixTQUNBaEY7U0FEQXlEO21EQUFBLG1EQUFBO29DQUNBekQ7O1VBREFxYjtrREFDQSw0Q0FBQTs0QkFBQXJiO2tEQURBLDRDQUFBO29EQUFBLFdBQUF3TSxTQUNBeE07UUFEQXFiO2tEQUFBLG1EQUFBO21DQUNBcmI7a0RBRWE7O0tBSGI2eUo7Y0FDQTV4SjtrREFBQSxtREFBQTt3Q0FEQTJ4SixRQUNBM3hKO2tEQUVhO1lBRmI2eEosWUFBQUM7Z0RBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OzttREFBQSxtREFBQTs2Q0FBQXJDLGtCQUFBcUM7O2tEQUFBLG1EQUFBOzRDQUFBckMsa0JBQUFxQzs7Z0JBQUFBOztrREFBQSxtREFBQTs0Q0FBQXJDLGtCQUFBcUM7OztrREFBQSxtREFBQTs0Q0FBQXJDLGtCQUFBcUM7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQUM7U0FBQUEsbUJBQUFBO21EQUFBO1FBQUFDLFdBQUFEO29EQUFBM2xCO3NEQUFBOzhCQUFBNGxCO21EQUFBLFdBQUE1bEI7O2tEQUFBLG1EQUFBOztlQUFBb2pCO2VBQUFzQztlQUFBRDs7U0FBQUk7UUFBQUEsbUJBQUFBO2tEQUFBO09BQUExL0IsV0FBQTAvQjttREFBQXovQjtTQWJBeDJILFVBYUF1Mkg7a0RBQUEsV0FBQUM7O2lEQUFBLG1EQUFBOztjQUFBZzlCO2NBQUFzQztjQUFBRDs7Z0RBQUEsbURBQUE7MENBQUFyQyxrQkFBQXFDO2dEQUVhO1lBRmJLO2dEQUFBO2lEQUNJO01BQUF6L0I7a0RBQUFDO29EQUFBOzRCQUFBRDtpREFBQTswQkFBQUM7O2dEQUNBO0tBQUFDO2lEQUFBOXpEO09BZkovaUUsVUFlSTYySDtnREFBQTt5QkFBQTl6RDtnREFBUztZQUZic3pGLGNBQUF4MEo7Z0RBQUEsVUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7O21EQUFBLG1EQUFBO21EQUFBMlMsVUFBQTNTOzs7aUJBQUFBOzttREFBQSxtREFBQTttREFBQTJTLFVBQUEzUzs7Ozs7WUFBQW1GO2tDQUFBQTthQUFBc1k7WUFBQUEsbUJBQUFBO3NEQUFBO1dBQUFDLE9BQUFEO3VEQUFBRTthQWJBbmYsWUFhQWtmO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTtxREFBQWhMLFVBQUF4TixLQUFBbkY7O2tDQUFBbUY7YUFBQUM7WUFBQUEsaUJBQUFBO3NEQUFBO1dBQUFsRixLQUFBa0Y7dURBQUFqRjt5REFBQTtpQ0FBQUQ7c0RBQUEsV0FBQUM7O3FEQUFBLG1EQUFBO3FEQUFBd1MsVUFBQXhOLEtBQUFuRjs7OztvREFBQSxtREFBQTtvREFBQTJTLFVBQUEzUzs7OztnREFBQSxtREFBQTtnREFBQTJTLFVBQUEzUztnREFFYTtZQUZieTBKO2dEQUFBO2lEQUNJO01BQUF2MEo7a0RBQUFDO29EQUFBOzRCQUFBRDtpREFBQTs7MEJBQUFDOztnREFDQTtLQUFBdWQ7aURBQUFDLE9BZkpwZixZQWVJbWY7Z0RBQUE7O3lCQUFBQztnREFBUzs7SUFFYisySTtJQUFBQztZQUFBai9JO2dEQUFBLE9BbEJBN1c7Z0RBb0JhOztLQUZiNjFKO2NBQ0F2eko7a0RBQUEsSUFEQXlEO2tEQUNBLDRDQUFBOzRCQUFBekQ7a0RBREEsNENBQUE7b0RBQUEsV0FBQXVVLFNBQ0F2VTtRQURBeUQ7a0RBQUEsbURBQUE7bUNBQ0F6RDtrREFDYTs7S0FGYnd6SjtjQUNBdnlKO2tEQUFBLG1EQUFBO3dDQURBc3lKLFFBQ0F0eUo7a0RBQ2E7WUFEYnd5SixZQUFBQztnREFBQTs7Y0FBQUE7aUJBQUFBOzs7OztrREFBQSxtREFBQTs0Q0FBQS9DLGtCQUFBK0M7O2dCQUFBQTs7a0RBQUEsbURBQUE7NENBQUEvQyxrQkFBQStDOzs7a0RBQUEsbURBQUE7NENBQUEvQyxrQkFBQStDO1NBQUFDOzs0QkFBQUE7K0JBQUFBOztTQUFBQztRQUFBQSxtQkFBQUE7a0RBQUE7T0FBQUMsV0FBQUQ7bURBQUF2L0I7U0FsQkFuM0gsVUFrQkEyMko7a0RBQUEsV0FBQXgvQjs7aURBQUEsbURBQUE7O2NBQUFzOEI7Y0FBQWdEO2NBQUFEOztnREFBQSxtREFBQTswQ0FBQS9DLGtCQUFBK0M7Z0RBQ2E7WUFEYkk7Z0RBQUE7S0FDSUM7aURBQUFDO09BbkJKaDNKLFVBbUJJKzJKO2dEQUFBO3lCQUFBQztnREFBUztZQURiQyxjQUFBcDFKO2dEQUFBLFVBQUFBO2dCQUFBQTs7Z0NBQUFBO21EQUFBLG1EQUFBO21EQUFBNlMsVUFBQTdTOzs7aUJBQUFBOzttREFBQSxtREFBQTttREFBQTZTLFVBQUE3Uzs7Ozs7WUFBQW1GO2tDQUFBQTthQUFBQztZQUFBQSxpQkFBQUE7c0RBQUE7V0FBQWxGLEtBQUFrRjt1REFBQWpGLE9BbEJBM0IsWUFrQkEwQjtzREFBQSxXQUFBQzs7cURBQUEsbURBQUE7cURBQUEwUyxVQUFBMU4sS0FBQW5GOzs7O29EQUFBLG1EQUFBO29EQUFBNlMsVUFBQTdTOzs7O2dEQUFBLG1EQUFBO2dEQUFBNlMsVUFBQTdTO2dEQUNhO1lBRGJxMUo7Z0RBQUE7S0FDSW4xSjtpREFBQUMsT0FuQko1QixZQW1CSTJCO2dEQUFBOzt5QkFBQUM7Z0RBQVM7WUFFVG0xSixRQUFXNzNILEdBQWMydUI7Z0RBQzNCLE9BRGEzdUIsUUFBYzJ1QixNQUFBQTsrQ0FJMUI7WUFLQ21wRztnREFDRjs7O1lBRVNqbkc7cURBQVEsV0FBUkE7O1lBQ1Vrbkc7cURBQWUsT0FBZkE7O2lEQUlGO2dEQUFJO1lBRW5CQyxXQUNGejFHO2dEQUFBO2tEQUVlO1FBQ0owMUc7aURBQVMsT0FkbEJILE9BV0Z2MUcsS0FHVzAxRztnREFBMEI7WUFFbkNDLFdBQ0YzMUc7Z0RBQUEsSUFFVzAxRztpREFBUyxPQW5CbEJILE9BaUJGdjFHLEtBRVcwMUc7Z0RBQTBCO1lBSW5DRSxXQUFjNTFHLEtBQVkxa0M7Z0RBQzVCLDRDQUFPOzttREFBQTs0QkFEUzBrQyxLQUFZMWtDOzZEQUVsQixXQUZrQkE7UUFHckJ1Nkk7aURBQVEsZUFBUkE7K0NBQ047WUFLQ0MsT0FBVTkxRyxLQUFZMWtDO2dEQUN4Qiw2Q0FHVzs7b0RBQUE7NEJBSkMwa0MsS0FBWTFrQztrQkFNWmd6Qyw4QkFBQUE7aURBTEUsV0FEVWh6QzsrQ0FRdEI7aUJBRXdCdmMsSUFBSXF0RDtrREFBTyxXQUFYcnRELElBQUlxdEQ7aURBQW1CO2lEQUFsQyw4Q0FBQTtJQUFiMnBHO29EQUFhOztZQUVicHNJLE1BQVNxMkIsS0FBWTJNLEtBQWtCbHJEO2lEQUN6Qyw2Q0FBTzs7b0RBQUE7a0NBREl1K0MsS0FBWTJNOzttREFFYjs7MkRBQVc7ZUFKbkJvcEcsWUFFdUN0MEosS0FBbEJrckQ7UUFHaEJQO2tEQUFPLFdBQVBBO2dEQUNOO1lBRUM0cEcsUUFBWW5ySSxPQUFPbTFCLEtBQVkyTSxLQUFrQmxyRDtpREFDbkQsNkNBQU87O29EQUFBOzRCQURPb3BCLE9BQU9tMUIsS0FBWTJNOzttREFFdkI7OzJEQUFhO2VBVnJCb3BHLFlBUWlEdDBKLEtBQWxCa3JEO1FBRzFCUDtrREFBTyxlQUFQQTtnREFDTjtZQUVDNnBHLFlBQWVqMkcsS0FBWTJNLEtBQWtCbHJEO2lEQUMvQyw2Q0FBTzs7b0RBQUE7a0NBRFV1K0MsS0FBWTJNOzttREFFbkI7OzJEQUFhO2VBaEJyQm9wRyxZQWM2Q3QwSixLQUFsQmtyRDtRQUd0QlA7a0RBQU8sV0FBUEE7Z0RBQ047Ozs7T0FoR0gybEc7T0FBQUM7T0FDQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FJQXZ6SjtPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQVlBdzFKO09BQUFDO09BQ0FDO09BQUFNO09BQUFDO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFLO09BQUFHO09BQUFDO09BR0lDO09BU0FDO09BVUFFO09BTUFFO09BT0FDO09BU0FFO09BVUFDO09BRUFwc0k7T0FNQXFzSTtPQU1BQzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7SUMzRkYveEo7SUFBQWhHO0lBa0lBOE87SUFBQXRJO0lBb0NBd3hKO0lBQUF2ako7SUF3T0F3L0I7SUFBQXQvQjtJQW1QQXU1QjtJQUFBNFk7SUEwQkFocEM7SUFBQWtwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBNXBCQWpwQyxPQUNBOWE7Z0RBQUE7O21EQUFBLG1EQUFBO21DQUFBQTs7bURBQUEsbURBQUE7bUNBQUFBOzttREFBQSxtREFBQTttQ0FBQUE7O21EQUFBLG1EQUFBO21DQUFBQTs7bURBQUEsbURBQUE7bUNBQUFBOzttREFBQSxtREFBQTttQ0FBQUE7O21EQUFBLG1EQUFBO21DQUFBQTs7bURBQUEsbURBQUE7bUNBQUFBOzttREFBQSxtREFBQTttQ0FBQUE7O21EQUFBLG1EQUFBO21DQUFBQTs7bURBQUEsbURBQUE7bUNBQUFBOzttREFBQSxtREFBQTttQ0FBQUE7O21EQUFBLG1EQUFBO21DQUFBQTs7bURBQUEsbURBQUE7bUNBQUFBOzttREFBQSxtREFBQTttQ0FBQUE7OytDQWVNOytDQWZOLFNBQUFnYixZQUFBL1g7Z0RBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnRUFBQTs7K0RBQUE7OzhEQUFBOzs2REFBQTs7NERBQUE7OzJEQUFBOzswREFBQTs7eURBQUE7O3dEQUFBOzt1REFBQTs7c0RBQUE7O3FEQUFBOztvREFBQTs7bURBQUE7O2tEQUFBOztnQkFBQUE7O2tEQUFBLG1EQUFBOzRDQUFBRixrQkFBQUU7OztrREFBQSxtREFBQTs0Q0FBQUYsa0JBQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrREFBQSxtREFBQTt5REFBQUYsa0JBQUFFOzs4REFBQSxtREFBQTt3REFBQUYsa0JBQUFFOzs2REFBQSxtREFBQTt1REFBQUYsa0JBQUFFOzs0REFBQSxtREFBQTtzREFBQUYsa0JBQUFFOzsyREFBQSxtREFBQTtxREFBQUYsa0JBQUFFOzswREFBQSxtREFBQTtvREFBQUYsa0JBQUFFOzt5REFBQSxtREFBQTttREFBQUYsa0JBQUFFOzt3REFBQSxtREFBQTtrREFBQUYsa0JBQUFFOzt1REFBQSxtREFBQTtpREFBQUYsa0JBQUFFOztzREFBQSxtREFBQTtnREFBQUYsa0JBQUFFOztxREFBQSxtREFBQTsrQ0FBQUYsa0JBQUFFOztvREFBQSxtREFBQTs4Q0FBQUYsa0JBQUFFOzttREFBQSxtREFBQTs2Q0FBQUYsa0JBQUFFOztrREFBQSxtREFBQTs0Q0FBQUYsa0JBQUFFOztpREFBQSxtREFBQTsyQ0FBQUYsa0JBQUFFOztnREFBQSxtREFBQTswQ0FBQUYsa0JBQUFFOytDQWVNO1lBZk5nWTtnREFBQTs7bURBQ0k7O21EQUNBOzttREFDQTs7bURBQ0E7O21EQUNBOzttREFDQTs7bURBQ0E7O21EQUNBOzttREFDQTs7bURBQ0E7O21EQUNBOzttREFDQTs7bURBQ0E7O21EQUNBOzJEQUNBOzsrQ0FBRTsrQ0FmTixTQUFBQyxjQUFBcmM7Z0RBQUE7YUFBQUEscUNBQUFBO2dCQUFBQTs7a0RBQUEsbURBQUE7a0RBQUE5QixRQUFBOEI7Ozs7Ozs7Ozs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7OytEQUFBO3VEQUFBOUIsUUFBQThCOzs7Ozs7K0RBQUE7dURBQUE5QixRQUFBOEI7Ozs7K0RBQUE7dURBQUE5QixRQUFBOEI7Ozs7K0RBQUE7dURBQUE5QixRQUFBOEI7Ozs7K0RBQUE7dURBQUE5QixRQUFBOEI7Ozs7K0RBQUE7dURBQUE5QixRQUFBOEI7Ozs7K0RBQUE7dURBQUE5QixRQUFBOEI7Ozs7K0RBQUE7dURBQUE5QixRQUFBOEI7Ozs7O21EQUFBLG1EQUFBO21EQUFBOUIsUUFBQThCOzs7Z0RBQUEsbURBQUE7Z0RBQUE5QixRQUFBOEI7K0NBZU07WUFmTnNjO2dEQUFBOzttREFDSTs7bURBQ0E7O21EQUNBOzttREFDQTs7bURBQ0E7O21EQUNBOzttREFDQTs7bURBQ0E7O21EQUNBOzttREFDQTs7bURBQ0E7O21EQUNBOzttREFDQTs7bURBQ0E7MkRBQ0E7OytDQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFJRjY1STtpREFBUyxJQUFFMTBKO2lEQUFlLFNBQWZBO2lEQUNiLGtEQUFBOztnREFDQSxtREFBQTs2QkFGYUE7K0NBR2Q7WUFFRzIwSixLQUFRQztnREFDVixPQURVQSxVQUFBQTsrQ0FJVDtZQUVDQztnREFDRjs7O3FEQUVlOztxREFFTjs7cURBQ0U7O3FEQUNEOzZEQUNFOzs7O29EQU5JOztvREFFRTs7b0RBS0w7O29EQUVEOztvREFDUTs7b0RBRk47O29EQUdBOztvREFDQzs7b0RBQ0o7NERBQ0M7O2dEQUFHO1lBRWJwNkk7Z0RBQ0Y7O29EQUNhOztvREFFRTs7b0RBREE7O29EQVNKOztvREFDQTs7b0RBQ0Y7O29EQUhDOztvREFGRDs7b0RBQ1E7O29EQUtMOztvREFDSjs7b0RBUkU7O2dEQVF1QjtZQUUzQnE2SSxTQUFZam9HO2lEQUFXLElBQVh5SyxRQUFBeks7aURBQVc7aUJBQVh5Szs7OztzREFHSjs7YUFISXk5RixrQkFBQXo5RixRQUFBeTlGOzttREFnQk47O2dEQUViO1lBR09DLE9BQ0x6MkcsS0FBSzAyRztpREFDSixJQURJQyxTQUFBRDtpREFDSjtpQkFESUM7Ozs7dURBSVc7O3VEQUVOOzt1REFDRTs7dURBRkQ7K0RBR0U7Ozs7WUFTTDF4QztzREFBTTtnQkFsQlR3eEMsT0FDTHoyRyxLQWlCUWlsRTs7WUFSRDNwRzs2REFDRztxQ0FWVjBrQyxLQVNPMWtDO3NCQUFBQTswQkFBQUE7O3NEQUtvQztTQUE5QjJzRztTQUFKRjt1REFBa0MsT0FmdEMwdUMsT0FDTHoyRyxLQWNhaW9FO3NEQUFPO2dCQWZmd3VDLE9BQ0x6MkcsS0FjUytuRTs7O3NEQUNxQjtTQUFyQjZ1Qzt1REFBcUI7cUMsT0FoQnpCSCxPQUNMejJHO3NEQWVnQjs4REFBSzt5Q0FBWjQyRzs7WUFmSkMsbUJBQUFGLFNBQUFFOztZQWdCRUM7c0RBQVE7Z0JBYWRDLFdBN0JELzJHLEtBZ0JPODJHOzs7c0RBYlk7OERBa0JQOzs7Z0RBQ1Y7WUFDREUsV0FFRmgzRztpREFBQTttREFHbUI7UUFEQ2lsRSxjQUFSbmpFO2tEQUFvQztnQixPQTVCMUMyMEcsT0EwQk56Mkc7O2tEQUUwQjs7YUFBZDhCOzJEQUF5Qjt1Q0FBakJtakU7aURBQ0c7WUFDckI4eEMsV0FBYy8yRyxLQUFZODJHO2tEQU1WO2dCLE9BWmhCRSxXQU1jaDNHOztpREFNZDtrREFBQTtvREFBQTtnQ0FOMEI4Mkc7a0RBTTFCO2tCQUpDdjdJLEtBQUswN0k7O29EQUNVLElBQUVuMUc7b0RBQVkscURBQUE7ZUFBWkEsS0FEWm0xRzttREFDc0M7OzsyREFBMUM7dUNBREQxN0k7NkRBRVc7NEJBRlhBLFNBQUswN0k7ZUFBTDE3STtrREFFcUI7aURBRXRCLG9EQUFBOztnREFFSDtnREEvSFcsNkNBQUE7OztPQUNaVTtPQUNBRTtPQUFBQztPQUFBQztPQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CSTY1STtPQUtBQztPQU1BRTtPQWtCQXA2STtPQWtCSXE2STtPQXFCQUU7T0F3QkpPO09BTUFEO1lBWUpHLFNBQ0EvMUo7aURBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7Z0RBSU87Z0RBSlAsU0FBQWcySjtJQUFBNXJGO2lEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7c0RBQUE7O3FEQUFBOztvREFBQTs7bURBQUE7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUF2K0Qsa0JBQUF1K0Q7OzttREFBQSxvREFBQTs0Q0FBQXYrRCxrQkFBQXUrRDs7Ozs7Ozs7Ozs7Ozs7cURBQUEsb0RBQUE7OENBQUF2K0Qsa0JBQUF1K0Q7O29EQUFBLG9EQUFBOzZDQUFBditELGtCQUFBdStEOzttREFBQSxvREFBQTs0Q0FBQXYrRCxrQkFBQXUrRDs7a0RBQUEsb0RBQUE7MkNBQUF2K0Qsa0JBQUF1K0Q7O2lEQUFBLG9EQUFBOzBDQUFBditELGtCQUFBdStEO2dEQUlPO1lBSlA2ckY7aURBQUE7O29EQUNJOztvREFDQTs7b0RBQ0E7NERBQ0E7O2dEQUFHO2dEQUpQLFNBQUFDO0lBQUFyM0o7aURBQUE7YUFBQUEscUNBQUFBO2dCQUFBQTs7bURBQUEsb0RBQUE7a0RBQUEwRSxVQUFBMUU7Ozs7Ozs7OytEQUFBO3NEQUFBMEUsVUFBQTFFOzs7OytEQUFBO3NEQUFBMEUsVUFBQTFFOzs7OytEQUFBO3NEQUFBMEUsVUFBQTFFOzs7OytEQUFBO3NEQUFBMEUsVUFBQTFFOzs7O29EQUFBLG9EQUFBO21EQUFBMEUsVUFBQTFFOzs7aURBQUEsb0RBQUE7Z0RBQUEwRSxVQUFBMUU7Z0RBSU87WUFKUHMzSjtpREFBQTs7b0RBQ0k7O29EQUNBOztvREFDQTs0REFDQTs7Z0RBQUc7Ozs7Ozs7Ozs7Ozs7OztZQUlIQztrREFBUyxJQUFFOTFKO2tEQUFZLFNBQVpBO2tEQUNiLG1EQUFBOztpREFDQSxvREFBQTs2QkFGYUE7Z0RBR2Q7WUFFRysxSixPQUFRbkI7aURBQ1YsT0FEVUEsVUFBQUE7Z0RBSVQ7WUFFQ29CO2lEQUNGO21EQUVlOzs7cURBREM7O3FEQUVFOzZEQUNOOztpREFBRztZQUViQztpREFDRjs7cURBQ2E7O3FEQUVFOztxREFEQTs7cURBRU47O2lEQUFZO2lEQWpDViw4Q0FBQTs7O09BQ2JSO09BQ0FDO09BQUFDO09BQUFDO09BQUFDOzs7Ozs7Ozs7Ozs7O09BUUlDO09BS0FDO09BTUFDO09BT0FDO1lBU0pDLFNBQ0F4Mko7aURBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztpREFpQlc7Z0RBakJYLFNBQUF5Mko7SUFBQTd3STtpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBQUE7O2tFQUFBOztpRUFBQTs7Z0VBQUE7OytEQUFBOzs4REFBQTs7NkRBQUE7OzREQUFBOzsyREFBQTs7MERBQUE7O3lEQUFBOzt3REFBQTs7dURBQUE7O3NEQUFBOztxREFBQTs7b0RBQUE7O21EQUFBOztnQkFBQUE7O21EQUFBLG9EQUFBOzRDQUFBbXZJLGtCQUFBbnZJOzs7bURBQUEsb0RBQUE7NENBQUFtdkksa0JBQUFudkk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0VBQUEsb0RBQUE7MkRBQUFtdkksa0JBQUFudkk7O2lFQUFBLG9EQUFBOzBEQUFBbXZJLGtCQUFBbnZJOztnRUFBQSxvREFBQTt5REFBQW12SSxrQkFBQW52STs7K0RBQUEsb0RBQUE7d0RBQUFtdkksa0JBQUFudkk7OzhEQUFBLG9EQUFBO3VEQUFBbXZJLGtCQUFBbnZJOzs2REFBQSxvREFBQTtzREFBQW12SSxrQkFBQW52STs7NERBQUEsb0RBQUE7cURBQUFtdkksa0JBQUFudkk7OzJEQUFBLG9EQUFBO29EQUFBbXZJLGtCQUFBbnZJOzswREFBQSxvREFBQTttREFBQW12SSxrQkFBQW52STs7eURBQUEsb0RBQUE7a0RBQUFtdkksa0JBQUFudkk7O3dEQUFBLG9EQUFBO2lEQUFBbXZJLGtCQUFBbnZJOzt1REFBQSxvREFBQTtnREFBQW12SSxrQkFBQW52STs7c0RBQUEsb0RBQUE7K0NBQUFtdkksa0JBQUFudkk7O3FEQUFBLG9EQUFBOzhDQUFBbXZJLGtCQUFBbnZJOztvREFBQSxvREFBQTs2Q0FBQW12SSxrQkFBQW52STs7bURBQUEsb0RBQUE7NENBQUFtdkksa0JBQUFudkk7O2tEQUFBLG9EQUFBOzJDQUFBbXZJLGtCQUFBbnZJOztpREFBQSxvREFBQTswQ0FBQW12SSxrQkFBQW52STtpREFpQlc7WUFqQlg4d0k7aURBQUE7O29EQUNJOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOzREQUNBOztpREFBTztnREFqQlgsU0FBQUM7SUFBQTkzSjtpREFBQTthQUFBQSxxQ0FBQUE7Z0JBQUFBOzttREFBQSxvREFBQTtrREFBQTJTLFVBQUEzUzs7Ozs7Ozs7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7Z0VBQUE7dURBQUEyUyxVQUFBM1M7Ozs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7OztnRUFBQTt1REFBQTJTLFVBQUEzUzs7Ozs7b0RBQUEsb0RBQUE7bURBQUEyUyxVQUFBM1M7OztpREFBQSxvREFBQTtnREFBQTJTLFVBQUEzUztpREFpQlc7WUFqQlgrM0o7aURBQUE7O29EQUNJOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOztvREFDQTs7b0RBQ0E7O29EQUNBOzREQUNBOztpREFBTzs7Ozs7Ozs7Ozs7Ozs7O1lBSVBDO2tEQUFTLElBQUV2Mko7a0RBQWUsU0FBZkE7a0RBQ2IsbURBQUE7O2lEQUNBLG9EQUFBOzZCQUZhQTtnREFHZDtZQUVHdzJKLE9BQVE1QjtpREFDVixPQURVQSxVQUFBQTtnREFJVDtZQUVDNkI7aURBQ0Y7OztzREFFZTs7c0RBRUw7OERBS0E7Ozs7cURBUk07O3FEQUVFOztxREFFTjs7cURBQ0U7O3FEQUNEOztxREFDRTs7cURBRUM7O3FEQUNJOztxREFDUDs7cURBQ0Q7O3FEQUNFOztxREFDQzs7cURBQ0o7NkRBQ0s7O2lEQUFPO1lBRXJCQztpREFDRjs7cURBQ2E7O3FEQUVFOztxREFEQTs7cURBRUw7O3FEQUNEOztxREFDRTs7cURBQ0Q7O3FEQUNFOztxREFDRjs7cURBQ0c7O3FEQUNJOztxREFDUDs7cURBQ0Q7O3FEQUNFOztxREFDQzs7cURBQ0o7O3FEQUNLOztpREFBWTtZQUVuQjk5SSxPQUFVMjNHO2tEQUFXLElBQVhvbUMsUUFBQXBtQztrREFBVztpQkFBWG9tQzs7Ozt1REFHSjs7YUFISUMsa0JBQUFELFFBQUFDOzttREFrQkw7O2dEQUVaO1lBRU9DLFdBQWN0bUM7a0RBQVcsSUFBWG9tQyxRQUFBcG1DO2tEQUFXO2lCQUFYb21DOzs7O2FBQUFDLGtCQUFBRCxRQUFBQzs7dURBR0c7VUFBUi9wRztVQUFMaXFHO3dEQUFhLE9BekJqQmwrSSxPQXlCSWsrSTt1REFBYTt3Q0FBUmpxRzs7O21EQWVKOztnREFFWjtZQUVPa3FHLG1CQUFzQnhtQztpREFDNUIsSUFENEJvbUMsUUFBQXBtQztpREFDNUI7a0RBQUEsNkNBQUE7YUF2Qk1zbUMsV0FzQnNCRjtrREFDNUI7OztrQkFENEJBOzs7O2NBS2xCSzt3REFBUyxxREFBQTtpRUFBUTtzQ0EzQnJCSDttQkEyQklHOztjQUxrQkosa0JBQUFELFFBQUFDOzs7O2tEQUM1Qjs7Z0RBcUJDO1lBRUtLLFFBQVcxbUM7a0RBQVcsSUFBWG9tQyxRQUFBcG1DO2tEQUFXO2lCQUFYb21DOzs7O2FBR1hoMko7dURBQU0sV0FBTkE7O2FBSFdpMkosa0JBQUFELFFBQUFDOzttREFrQk47O2dEQUVaO1lBRU9NLFlBQWUzbUM7a0RBQVcsSUFBWG9tQyxRQUFBcG1DO2tEQUFXO2lCQUFYb21DOzs7O2FBQUFDLGtCQUFBRCxRQUFBQzs7YUFHTi9wRyxnQkFBTGlxRztzREFDTDs7d0RBQUE7dUJBRFVqcUc7d0RBR047c0RBREw7dURBQUEsT0EzQkVvcUcsUUF5QklIOztxQkFFcUIxQzsyREFBTyxPQUFQQTswREFBVTtzREFBckMsb0RBQUE7Z0VBQWdCOzs7O21EQWtCVDs7Z0RBRVo7WUFFTytDLHVCQUEwQjVtQztrREFBVyxJQUFYb21DLFFBQUFwbUM7a0RBQVc7bURBQ3BDLDhDQUFBO2NBNUJEMm1DLFlBMkIwQlA7O1VBRXpCaDJKO29EQUFNLGVBQU5BOzttQkFGeUJnMko7Ozs7dURBT2I7VUFEVEs7d0RBQ0ZJOzBEQUFXOzREQUFRO2lDQWxDckJGO2NBaUNJRjt1REFFSCxxREFBQTt1REFEQ0k7OztpRUFJRzt3REFKSEE7O2FBUHdCUixvQkFBQUQsUUFBQUM7O21EQTJCbkI7O2dEQUdkO1lBRUdTLFNBQVk3MEo7aURBQ2QsWUFEY0E7O1NBRUFxWDttREFBUyxXQUFUQTs7a0RBQ1A7Z0RBQ047aURBbk9TO2tEQUFBOztPQUNacThJO09BQ0FDO09BQUFDO09BQUFDO09BQUFDOzs7Ozs7Ozs7Ozs7O09BcUJJQztPQUtBQztPQU1BQztPQW9CQUM7T0FvQkk5OUk7T0FzQkFpK0k7T0FzQkFFO09Bd0JBRTtPQXNCQUM7T0EyQkFDO09BZ0NKRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFVSkM7SUFBQUM7WUFBQTl5SjtpREFBQTtpREE2QmM7WUE3QmR2QjtpREFBQTtpREE2QmM7O0tBN0JkbzBKO2NBQ0E1M0o7bURBQUE7Ozs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7O3VEQUFBLG9EQUFBO3NDQUFBQTs7dURBQUEsb0RBQUE7c0NBQUFBOzt1REFBQSxvREFBQTtzQ0FBQUE7OztXQURBeUQ7b0RBQ0EsNkNBQUE7NkJBQUF6RDtvREFEQSw2Q0FBQTtzREFBQSxXQUFBd0QsT0FDQXhEO1NBREF5RDtvREFBQSxvREFBQTtvQ0FDQXpEOztVQURBcWI7bURBQ0EsNkNBQUE7NEJBQUFyYjttREFEQSw2Q0FBQTtxREFBQSxXQUFBK0UsT0FDQS9FO1FBREFxYjttREFBQSxvREFBQTttQ0FDQXJiO21EQTRCYzs7S0E3QmQ2M0o7Y0FDQTUySjttREFBQSxvREFBQTt5Q0FEQTIySixVQUNBMzJKO21EQTRCYztZQTVCZDYySixjQUFBaHNIO2lEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhFQUFBOzs2RUFBQTs7NEVBQUE7OzJFQUFBOzswRUFBQTs7eUVBQUE7O3dFQUFBLG9EQUFBO2lFQUFBa0Ysa0JBQUFsRjs7dUVBQUE7O3NFQUFBOztxRUFBQTs7b0VBQUE7O21FQUFBOztrRUFBQTs7aUVBQUE7O2dFQUFBOzsrREFBQTs7OERBQUE7OzZEQUFBOzs0REFBQTs7MkRBQUE7OzBEQUFBOzt5REFBQTs7d0RBQUEsb0RBQUE7aURBQUFrRixrQkFBQWxGOzt1REFBQTs7c0RBQUE7O3FEQUFBOztvREFBQTs7bURBQUE7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUFrRixrQkFBQWxGOzs7bURBQUEsb0RBQUE7NENBQUFrRixrQkFBQWxGO1NBQUFpc0gsOENBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0VBQUFBOztpRUFBQUE7Ozs2REFBQUE7NkRBQUFBOzZEQUFBQTs2REFBQUE7NkRBQUFBOzJEQUFBQTs7OzREQUFBQTs0REFBQUE7NERBQUFBOzREQUFBQTs7NERBQUFBOzBEQUFBQTs7OztpRUFBQUE7Ozs2REFBQUE7NkRBQUFBOzZEQUFBQTs2REFBQUE7NkRBQUFBOzJEQUFBQTs7OzREQUFBQTs0REFBQUE7NERBQUFBOzREQUFBQTs0REFBQUE7MERBQUFBOzs7OztnRUFBQUE7O2lFQUFBQTs7OzZEQUFBQTs2REFBQUE7NkRBQUFBOzZEQUFBQTs2REFBQUE7MkRBQUFBOzs7NERBQUFBOzREQUFBQTs0REFBQUE7NERBQUFBOzREQUFBQTs7NERBQUFBOzswREFBQUE7Ozs7aUVBQUFBOzs7NkRBQUFBOzZEQUFBQTs2REFBQUE7NkRBQUFBOzZEQUFBQTsyREFBQUE7Ozs0REFBQUE7NERBQUFBOzREQUFBQTs7NERBQUFBOzREQUFBQTswREFBQUE7Ozs7NkVBQUEsb0RBQUE7c0VBQUEvbUgsa0JBQUFsRjs7NEVBQUEsb0RBQUE7cUVBQUFrRixrQkFBQWxGOzsyRUFBQSxvREFBQTtvRUFBQWtGLGtCQUFBbEY7OzBFQUFBLG9EQUFBO21FQUFBa0Ysa0JBQUFsRjs7eUVBQUEsb0RBQUE7a0VBQUFrRixrQkFBQWxGOzt3RUFBQSxvREFBQTtpRUFBQWtGLGtCQUFBbEY7OzhCQUFBL3JCOzZCQUFBQSxtQkFBQUE7d0VBQUE7NEJBQUFDLFdBQUFEO3lFQUFBRTsyRUFBQTsrQ0FBQUQ7d0VBQUE7bUNBQUFDOzt1RUFBQSxvREFBQTs7bUNBQUErd0I7bUNBQUErbUg7bUNBQUFqc0g7O3NFQUFBLG9EQUFBOytEQUFBa0Ysa0JBQUFsRjs7cUVBQUEsb0RBQUE7OERBQUFrRixrQkFBQWxGOztvRUFBQSxvREFBQTs2REFBQWtGLGtCQUFBbEY7O21FQUFBLG9EQUFBOzREQUFBa0Ysa0JBQUFsRjs7a0VBQUEsb0RBQUE7MkRBQUFrRixrQkFBQWxGOztpRUFBQSxvREFBQTswREFBQWtGLGtCQUFBbEY7O2dFQUFBLG9EQUFBO3lEQUFBa0Ysa0JBQUFsRjs7K0RBQUEsb0RBQUE7d0RBQUFrRixrQkFBQWxGOzs4REFBQSxvREFBQTt1REFBQWtGLGtCQUFBbEY7OzZEQUFBLG9EQUFBO3NEQUFBa0Ysa0JBQUFsRjs7NERBQUEsb0RBQUE7cURBQUFrRixrQkFBQWxGOzsyREFBQSxvREFBQTtvREFBQWtGLGtCQUFBbEY7OzBEQUFBLG9EQUFBO21EQUFBa0Ysa0JBQUFsRjs7eURBQUEsb0RBQUE7a0RBQUFrRixrQkFBQWxGOzt3REFBQSxvREFBQTtpREFBQWtGLGtCQUFBbEY7O2NBQUFrc0g7YUFBQUEsbUJBQUFBO3dEQUFBO1lBQUFoakMsV0FBQWdqQzt5REFBQTMxQjsyREFBQTtnQ0FBQXJOO3dEQUFBLFdBQUFxTjs7dURBQUEsb0RBQUE7O21CQUFBcnhGO21CQUFBK21IO21CQUFBanNIOztzREFBQSxvREFBQTsrQ0FBQWtGLGtCQUFBbEY7O3FEQUFBLG9EQUFBOzhDQUFBa0Ysa0JBQUFsRjs7b0RBQUEsb0RBQUE7NkNBQUFrRixrQkFBQWxGOzttREFBQSxvREFBQTs0Q0FBQWtGLGtCQUFBbEY7O2tEQUFBLG9EQUFBOzJDQUFBa0Ysa0JBQUFsRjs7aURBQUEsb0RBQUE7MENBQUFrRixrQkFBQWxGO2lEQTRCYztZQTVCZG1zSDtpREFBQTs7O3FEQUNJOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUdBOzZEQUNBOzs7a0RBSEE7TUFBQW50STttREFBQW1xRztxREFBQTt5QkFBQW5xRztrREFBQTsyQkFBQW1xRzs7aURBQ0E7S0FBQTl1RTtrREFBQXA3QjtvREFBQTt5QkFBQW83QjtpREFBQTswQkFBQXA3QjtpREFFVTtZQTVCZG10SSxnQkFBQXI1SjtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7b0RBQUEsb0RBQUE7bURBQUE2UyxVQUFBN1M7OztpQkFBQUE7O29EQUFBLG9EQUFBO21EQUFBNlMsVUFBQTdTOzs7OztZQUFBbUYsOENBQUFBOzs7O2lFQUFBO3dEQUFBME4sVUFBQTdTOzs0Q0FBQW1GOzs7O2tFQUFBO3lEQUFBME4sVUFBQTdTOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjs7a0VBQUE7eURBQUEwTixVQUFBN1M7O29DQUFBbUY7O2tFQUFBO3lEQUFBME4sVUFBQTdTOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjtlQUFBQztjQUFBQSxpQkFBQUE7eURBQUE7YUFBQWxGLEtBQUFrRjswREFBQWpGOzREQUFBO2tDQUFBRDt5REFBQSxXQUFBQzs7d0RBQUEsb0RBQUE7dURBQUEwUyxVQUFBMU4sS0FBQW5GOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7OztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjs7a0VBQUE7eURBQUEwTixVQUFBN1M7O29DQUFBbUY7O2tFQUFBO3lEQUFBME4sVUFBQTdTOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjs7a0VBQUE7eURBQUEwTixVQUFBN1M7O29DQUFBbUY7O2tFQUFBO3lEQUFBME4sVUFBQTdTOzs7Ozs0Q0FBQW1GOzs7O2tFQUFBO3lEQUFBME4sVUFBQTdTOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjs7a0VBQUE7eURBQUEwTixVQUFBN1M7O29DQUFBbUY7O2tFQUFBO3lEQUFBME4sVUFBQTdTOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjs7a0VBQUE7eURBQUEwTixVQUFBN1M7O29DQUFBbUY7O2tFQUFBO3lEQUFBME4sVUFBQTdTOzs7O29DQUFBbUY7O2tFQUFBO3lEQUFBME4sVUFBQTdTOztvQ0FBQW1GO2VBQUFzWTtjQUFBQSxtQkFBQUE7eURBQUE7YUFBQUMsT0FBQUQ7MERBQUFFOzREQUFBO21DQUFBRDt5REFBQSxXQUFBQzs7d0RBQUEsb0RBQUE7dURBQUE5SyxVQUFBMU4sS0FBQW5GOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjs7a0VBQUE7eURBQUEwTixVQUFBN1M7O29DQUFBbUY7O2tFQUFBO3lEQUFBME4sVUFBQTdTOztvQ0FBQW1GOztrRUFBQTt5REFBQTBOLFVBQUE3Uzs7b0NBQUFtRjs7a0VBQUE7eURBQUEwTixVQUFBN1M7Ozs7OztxREFBQSxvREFBQTtvREFBQTZTLFVBQUE3Uzs7OztpREFBQSxvREFBQTtnREFBQTZTLFVBQUE3UztpREE0QmM7WUE1QmRzNUo7aURBQUE7OztxREFDSTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFDQTs7cURBQ0E7O3FEQUNBOztxREFHQTs2REFDQTs7O2tEQUhBO01BQUFwNUo7bURBQUFDO3FEQUFBOzJCQUFBRDtrREFBQTs7MkJBQUFDOztpREFDQTtLQUFBdWQ7a0RBQUFDO29EQUFBOzJCQUFBRDtpREFBQTs7MEJBQUFDO2lEQUVVO1lBRVY0N0ksT0FBUWxEO2lEQUNWLE9BRFVBLFVBQUFBO2dEQUlUO1lBRUNtRDtrREFBUyxJQUFFLzNKO2tEQUFZLFNBQVpBO2tEQUNiLG1EQUFBOztpREFDQSxvREFBQTs2QkFGYUE7Z0RBR2Q7WUFFR2c0SjtpREFDRjs7OztxREFDZ0I7O3FEQUVFOztxREFFTDs7cURBQ0Q7O3FEQUNFOztxREFDQzs7cURBQ0M7O3FEQUNJOztxREFDUjs7cURBQ0U7O3FEQUNGOztxREFDQTs7cURBQ0k7O3FEQUNMOztxREFDTTs7cURBQ047O3FEQUNDOztxREFDQzs7cURBQ0U7O3FEQUNBOztxREFDRjs7cURBQ007O1dBQ1o3dUU7cURBQVUsV0FBVkE7O1dBQ0NpakU7cURBQWEsV0FBYkE7NkRBQ007O2lEQUFLO1lBRWpCeDlFO2tEQUVXO2lEQUFjO1lBRXpCTjtrREFFTztpREFBa0I7WUFFekJhO2tEQUVTO2lEQUFrQjtZQUUzQjhvRjtpREFDRjs7V0FDTzl1RTtxREFBTyxPQWRadmE7Z0JBY0t1YTs7V0FFRGlqRTtxREFBTyxPQVJYajlFO2dCQVFJaTlFOztXQURDQztxREFBTyxPQVhaLzlFO2dCQVdLKzlFOztpREFDd0I7WUFFN0IzOEU7aURBQ0Y7OztpREFFNkI7WUFFM0JPO2lEQUNGOztxREFDVTs7cURBQ0M7O3FEQUNBOztxREFDQTs7cURBQ0M7O3FEQUNFOztxREFDTzs7cURBQ0o7O3FEQUNPOztxREFDWjs7cURBQ0c7O2lEQUFvQjtZQUVqQ087aURBQ0Y7O3FEQUNVOztxREFDQzs7cURBQ0E7O3FEQUNBOztxREFDQzs7cURBQ0U7O3FEQUNPOztxREFDSjs7cURBQ087O3FEQUNaOztxREFDRzs7aURBQWtCO1lBRS9CTztpREFDRjs7O2lEQUU2QjtZQUUzQm1uRjtpREFDRjs7V0FDTS91RTtxREFBTyxPQW5DWGxaO2dCQW1DSWtaOztXQUNFaWpFO3FEQUFPLE9BdEJiNTdFO2dCQXNCTTQ3RTs7V0FDREM7cURBQU8sT0ExQ1ozOEU7Z0JBMENLMjhFOztXQUNFOEw7cURBQU8sT0FWZHBuRjtnQkFVT29uRjs7aURBQTZCO1lBRXBDQztpREFDRjs7O3NEQUNhOztzREFFRTs7c0RBREE7O3NEQUVMOztzREFDQTs7c0RBQ0Q7O3NEQUNFOztzREFDQzs7c0RBQ0M7O3NEQUNJOztzREFDUjs7c0RBQ0U7O3NEQUNGOztzREFDSTs7c0RBQ0o7O3NEQUNJOztzREFDTDs7c0RBQ007O3NEQUNOOztzREFDQzs7c0RBQ0M7O3NEQUNFOztzREFDQTs7c0RBQ0Y7O3NEQUlDOztzREFISzs7O1NBRVRqdkU7bURBQU8sT0EvRVo4dUUsVUErRUs5dUU7O1FBRENpakU7a0RBQU8sT0FsQ2I4TCxXQWtDTTlMO2lEQUVvQjtZQUV0QnZwRyxPQUFVM2tCO2tEQUFTLElBQVRtNkgsTUFBQW42SDtrREFBUztpQkFBVG02SDs7Ozt1REFHSjs7YUFISUMsZ0JBQUFELE1BQUFDOzttREE0Qkk7O2dEQUVyQjtZQUVPQyxzQkFBeUJyNkg7aURBQy9CLElBRCtCbTZILE1BQUFuNkg7aURBQy9CO2tEQUFBLDZDQUFBO2FBakNNMmtCLE9BZ0N5QncxRztrREFDL0I7OztrQkFEK0JBOzs7O2NBS3JCcjZIO3dEQUFPLHFEQUFBO2lFQUFNO3NDQXJDakI2a0I7bUJBcUNJN2tCOztjQUxxQnM2SCxnQkFBQUQsTUFBQUM7Ozs7a0RBQy9COztnREErQkM7WUFFQ0UsV0FBWXQ2SDtpREFDZCxZQURjQTs7U0FFQXJrQjttREFBUyxXQUFUQTs7a0RBQ1A7Z0RBQ047aURBL09TO2tEQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdaeTlJO09BQ0FFO09BQUFHO09BQUFDO09BQUFDO09BOEJJQztPQU1BQztPQUtBQztPQThCQXBwRjtPQUlBTjtPQUlBYTtPQUlBOG9GO09BTUF2b0Y7T0FLQU87T0FjQU87T0FjQU87T0FLQW1uRjtPQU9BRTtPQStCSXYxRztPQWdDQTAxRztPQWtDSkM7Ozs7Ozs7Ozs7Ozs7O1lBV0pDLFNBQ0EvNEo7aURBQUEsb0RBQUE7Z0NBQUFBO2lEQUNRO1lBRlJnNUosV0FDQS8zSjtpREFBQSxvREFBQTt1Q0FEQTgzSixVQUNBOTNKO2lEQUNRO2dEQURSLFNBQUFnNEo7SUFBQUM7aURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7bURBQUE7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUFqdUgsa0JBQUFpdUg7OzttREFBQSxvREFBQTs0Q0FBQWp1SCxrQkFBQWl1SDs7Ozs7O2tEQUFBLG9EQUFBOzJDQUFBanVILGtCQUFBaXVIOztpREFBQSxvREFBQTswQ0FBQWp1SCxrQkFBQWl1SDtpREFDUTtZQURSQztpREFDSTtpREFBSTtnREFEUixTQUFBQztJQUFBdjZKO2lEQUFBO2FBQUFBLHFDQUFBQTtnQkFBQUE7O21EQUFBLG9EQUFBO2tEQUFBZ2xELFVBQUFobEQ7Ozs7Ozs7K0RBQUE7c0RBQUFnbEQsVUFBQWhsRDs7OztvREFBQSxvREFBQTttREFBQWdsRCxVQUFBaGxEOzs7aURBQUEsb0RBQUE7Z0RBQUFnbEQsVUFBQWhsRDtpREFDUTtZQURSdzZKO2lEQUNJO2lEQUFJO1lBS0ovNEosSUFBUWc1SjtrREFBRjtLQUFpQkM7S0FBTGo1SjtpREFDcEIsR0FEb0JBO21EQUVMLE9BRktBO1dBQUtpNUo7O21CQUFBQTs7WUFLZkM7c0RBQWMscURBQUE7aUJBTGRGLFNBS0FFOzs7O1lBTGVEO1lBTWZ2MUMsUUFOZXUxQztzREFNRCxPQUFkdjFDOzs7O2tEQUNEO2dEQUVSO1lBRUN5MUMsU0FBV0gsU0FBU0U7aURBQ3RCLDhDQUFPO2FBWkxsNUosSUFXV2c1SixTQUFTRTs7bURBRWQsb0RBQUE7O1FBQ0w1N0o7a0RBQWEsT0FBYkE7Z0RBQ0Y7aURBekJTO2tEQUFBOzs7Ozs7Ozs7Ozs7OztPQUdabTdKO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BTUkvNEo7T0FXQW01SjtJQVFKQztJQUFBQztZQUFBNXZJO2lEQUFBO2lEQU80QjtZQVA1QkM7aURBQUE7aURBTzRCO1lBUDVCeEs7aURBQUE7aURBTzRCO1lBUDVCNVM7aURBQUE7aURBTzRCO1lBUDVCSjtpREFBQTtpREFPNEI7WUFQNUJ4SDtpREFBQTtpREFPNEI7O0tBUDVCMDBKO2NBQ0ExNUo7bURBQUE7O2FBREF5RDtzREFDQSw2Q0FBQTsrQkFBQXpEO3NEQURBLDZDQUFBO3dEQUFBO2FBQUFnRixTQUNBaEY7V0FEQXlEO3NEQUFBLG9EQUFBO3NDQUNBekQ7O2FBREFxYjtzREFDQSw2Q0FBQTsrQkFBQXJiO3NEQURBLDZDQUFBO3dEQUFBO2FBQUF3TSxTQUNBeE07V0FEQXFiO3NEQUFBLG9EQUFBO3NDQUNBcmI7O2FBREF1ZjtzREFDQSw2Q0FBQTsrQkFBQXZmO3NEQURBLDZDQUFBO3dEQUFBLFdBQUE0TSxPQUNBNU07V0FEQXVmO3NEQUFBLG9EQUFBO3NDQUNBdmY7O2FBREFvcUI7c0RBQ0EsNkNBQUE7K0JBQUFwcUI7c0RBREEsNkNBQUE7d0RBQUEsV0FBQXdmLE9BQ0F4ZjtXQURBb3FCO3NEQUFBLG9EQUFBO3NDQUNBcHFCOzthQURBK2tEO3NEQUNBLDZDQUFBOytCQUFBL2tEO3NEQURBLDZDQUFBO3dEQUFBLFdBQUFncUIsT0FDQWhxQjtXQURBK2tEO3NEQUFBLG9EQUFBO3NDQUNBL2tEOzthQURBZ2xEO3NEQUNBLDZDQUFBOytCQUFBaGxEO3NEQURBLDZDQUFBO3dEQUFBLFdBQUErcEIsT0FDQS9wQjtXQURBZ2xEO3NEQUFBLG9EQUFBO3NDQUNBaGxEOzttREFNNEI7O0tBUDVCMjVKO2NBQ0ExNEo7bURBQUEsb0RBQUE7eUNBREF5NEosTUFDQXo0SjttREFNNEI7WUFONUJnd0gsWUFBQTJvQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3REFBQSxvREFBQTtpREFBQS8rSSxrQkFBQSsrSTs7dURBQUEsb0RBQUE7Z0RBQUEvK0ksa0JBQUErK0k7O3NEQUFBLG9EQUFBOytDQUFBLytJLGtCQUFBKytJOztxREFBQSxvREFBQTs4Q0FBQS8rSSxrQkFBQSsrSTs7b0RBQUEsb0RBQUE7NkNBQUEvK0ksa0JBQUErK0k7O21EQUFBLG9EQUFBOzRDQUFBLytJLGtCQUFBKytJOztnQkFBQUE7O21EQUFBLG9EQUFBOzRDQUFBLytJLGtCQUFBKytJOzs7bURBQUEsb0RBQUE7NENBQUEvK0ksa0JBQUErK0k7U0FBQUMsOENBQUFBOzs7Ozs7Ozs7Ozs7O3NDQUFBQTtzQ0FBQUE7c0NBQUFBO3NDQUFBQTtvQ0FBQUE7Ozs7dUNBQUFBO3FDQUFBQTtxQ0FBQUE7cUNBQUFBO3FDQUFBQTttQ0FBQUE7OztjQUFBQzthQUFBQSxtQkFBQUE7d0RBQUE7WUFBQXpyRixXQUFBeXJGO3lEQUFBbHVJOzJEQUFBOzBCQUFBeWlEO3dEQUFBLFdBQUF6aUQ7O3VEQUFBLG9EQUFBOzttQkFBQS9RO21CQUFBZy9JO21CQUFBRDs7YUFBQTVvQjtZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUUsV0FBQUY7d0RBQUEva0g7MERBQUE7d0JBQUFpbEg7dURBQUEsV0FBQWpsSDs7c0RBQUEsb0RBQUE7O2tCQUFBcFI7a0JBQUFnL0k7a0JBQUFEOztZQUFBRztXQUFBQSxtQkFBQUE7c0RBQUE7VUFBQUMsV0FBQUQ7dURBQUFoeEI7eURBQUE7d0JBQUFpeEI7c0RBQUEsV0FBQWp4Qjs7cURBQUEsb0RBQUE7O2lCQUFBbHVIO2lCQUFBZy9JO2lCQUFBRDs7V0FBQUs7VUFBQUEsbUJBQUFBO3FEQUFBO1NBQUF4aEgsV0FBQXdoSDtzREFBQXZoSDt3REFBQTtxQ0FBQUQ7cURBQUEsV0FBQUM7O29EQUFBLG9EQUFBOztnQkFBQTc5QjtnQkFBQWcvSTtnQkFBQUQ7O1VBQUFuc0Q7U0FBQUEsbUJBQUFBO29EQUFBO1FBQUFwbkQsV0FBQW9uRDtxREFBQTNuRTt1REFBQTtzQkFBQXVnQjtvREFBQSxXQUFBdmdCOzttREFBQSxvREFBQTs7ZUFBQWpyQjtlQUFBZy9JO2VBQUFEOztTQUFBTTtRQUFBQSxtQkFBQUE7bURBQUE7T0FBQXozSSxXQUFBeTNJO29EQUFBeDNJO3NEQUFBO29CQUFBRDttREFBQSxXQUFBQzs7a0RBQUEsb0RBQUE7O2NBQUE3SDtjQUFBZy9JO2NBQUFEOztpREFBQSxvREFBQTswQ0FBQS8rSSxrQkFBQSsrSTtpREFNNEI7WUFONUJob0M7aURBQUE7O29EQUNJO1FBQUFqNUU7cURBQUFDO3VEQUFBO3NCQUFBRDtvREFBQTs2QkFBQUM7O29EQUNBO1FBQUFvTztxREFBQXdzRTt1REFBQTtxQkFBQXhzRTtvREFBQTs2QkFBQXdzRTs7b0RBQ0E7UUFBQWh6RDtxREFBQUM7dURBQUE7cUJBQUFEO29EQUFBOzZCQUFBQzs7b0RBQ0E7UUFBQWd6RDtxREFBQUM7dURBQUE7c0JBQUFEO29EQUFBOzZCQUFBQzs7b0RBQ0E7UUFBQUM7cURBQUFDO3VEQUFBO3NCQUFBRDtvREFBQTs2QkFBQUM7O29EQUNBO1FBQUFDO3FEQUFBOXpEO3VEQUFBO29DQUFBOHpEO29EQUFBOzZCQUFBOXpEOztpREFBd0I7WUFONUJrekQsY0FBQXAwSDtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7b0RBQUEsb0RBQUE7bURBQUFrbEQsVUFBQWxsRDs7O2lCQUFBQTs7b0RBQUEsb0RBQUE7bURBQUFrbEQsVUFBQWxsRDs7Ozs7WUFBQW1GO2tDQUFBQTthQUFBMmpEO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7MERBQUE7eUJBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTtxREFBQTlELFVBQUEvL0MsS0FBQW5GOztrQ0FBQW1GO2FBQUFxakQ7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTswREFBQTt3QkFBQUQ7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3FEQUFBeEQsVUFBQS8vQyxLQUFBbkY7O2tDQUFBbUY7YUFBQXNvQjtZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUcsT0FBQUg7d0RBQUFJOzBEQUFBO3lCQUFBRDt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7cURBQUFxM0IsVUFBQS8vQyxLQUFBbkY7O2tDQUFBbUY7YUFBQStmO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7MERBQUE7dUNBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTtxREFBQTgvQixVQUFBLy9DLEtBQUFuRjs7a0NBQUFtRjthQUFBc1k7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTswREFBQTt5QkFBQUQ7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3FEQUFBdW5DLFVBQUEvL0MsS0FBQW5GOztrQ0FBQW1GO2FBQUFDO1lBQUFBLGlCQUFBQTt1REFBQTtXQUFBbEYsS0FBQWtGO3dEQUFBakY7MERBQUE7d0JBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTtxREFBQStrRCxVQUFBLy9DLEtBQUFuRjs7OztxREFBQSxvREFBQTtvREFBQWtsRCxVQUFBbGxEOzs7O2lEQUFBLG9EQUFBO2dEQUFBa2xELFVBQUFsbEQ7aURBTTRCO1lBTjVCcTBIO2lEQUFBOztvREFDSTtRQUFBbjBIO3FEQUFBQzt1REFBQTtzQkFBQUQ7b0RBQUE7OzZCQUFBQzs7b0RBQ0E7UUFBQXVkO3FEQUFBQzt1REFBQTtxQkFBQUQ7b0RBQUE7OzZCQUFBQzs7b0RBQ0E7UUFBQXdIO3FEQUFBQzt1REFBQTtxQkFBQUQ7b0RBQUE7OzZCQUFBQzs7b0RBQ0E7UUFBQXdJO3FEQUFBQzt1REFBQTtzQkFBQUQ7b0RBQUE7OzZCQUFBQzs7b0RBQ0E7UUFBQTQ2QjtxREFBQUM7dURBQUE7c0JBQUFEO29EQUFBOzs2QkFBQUM7O29EQUNBO1FBQUFLO3FEQUFBQzt1REFBQTtvQ0FBQUQ7b0RBQUE7OzZCQUFBQzs7aURBQXdCO1lBRXhCc3lHLE9BQVFDO2lEQUNWLE9BRFVBOztXQUVKQyxRQUZJRDtxREFFSSxxREFBQTswQkFBUkM7O1dBQ0FDLFFBSElGO3FEQUdJLHFEQUFBOzBCQUFSRTs7V0FDQUMsUUFKSUg7cURBSUkscURBQUE7MEJBQVJHOztXQUNDQyxRQUxHSjtxREFLSyxxREFBQTsyQkFBUkk7O1dBQ0RDLFFBTklMO3FEQU1JLHFEQUFBOzBCQUFSSzs7V0FDTUMsUUFQRk47cURBT1UscURBQUE7d0NBQVJNOztnREFDWDtpREFsQlEsOENBQUE7OztPQUNYaEI7T0FDQXpvQztPQUFBVztPQUFBcUI7T0FBQUM7T0FRSWluQztZQVdFUTtpREFDTjs7V0FDTW5CO3FEQUFPLE9BQVBBOztXQUNBb0I7cURBQU8sT0FBUEE7O1dBQ0FDO3FEQUFPLE9BQVBBOztXQUNDQztxREFBTyxPQUFQQTs7V0FDREM7cURBQU8scURBQUE7MEJBTlBKLE9BTUFJOzZEQUVNOztpREFBRTtZQWFaQztpREFDRjs7V0FDTXhCO3FEQUFPLHFEQUFBOzBCQUFQQTs7V0FDQW9CO3FEQUFPLHFEQUFBOzBCQUFQQTs7V0FDQUM7cURBQU8scURBQUE7MEJBQVBBOztXQUNDQztxREFBTyxxREFBQTsyQkFBUEE7O1dBQ0RDO3FEQUFPLHFEQUFBOzBCQTNCUEosT0EyQkFJOztxREFFTSxvREFBQTs7O2lEQUFzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTdCNUNKO09BcUJKSzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7SUNyckJKM3BKO0lBQUF0VTtJQVlBaytKO0lBQUExM0o7SUFVQTIzSjtJQUFBMXBKO0lBT0EycEo7SUFBQXpwSjtJQUtBMHBKO0lBQUF2M0c7SUFLQXczRztJQUFBdDNHO0lBa0JBdTNHO0lBQUFyM0c7SUFXQXMzRztJQUFBMXZGO0lBS0EydkY7SUFBQXp2RjtJQUtBMHZGO0lBQUF4dkY7SUFLQXl2RjtJQUFBdnZGO0lBUUF3dkY7SUFBQXJ2RjtJQVVBc3ZGO0lBQUFydkY7SUFVQXN2RjtJQUFBbnZGO0lBT0FvdkY7SUFBQW52RjtJQUtBb3ZGO0lBQUFodkY7SUFNQWl2RjtJQUFBaHZGO0lBTUFpdkY7SUFBQWh2RjtJQUtBaXZGO0lBQUE5dUY7SUFLQSt1RjtJQUFBOXVGO0lBYUErdUY7SUFBQTV1RjtJQWFBNnVGO0lBQUE1dUY7SUFXQTZ1RjtJQUFBQztJQVNBQztJQUFBQztJQVNBQztJQUFBQztJQVFBQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FRQUc7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDcElKQztJQUFBQztJQU9BQztJQUFBQztJQW9CQUM7SUFBQUM7SUFtQkFDO0lBQUFDO0lBb0JBQztJQUFBQztJQW1DQUM7SUFBQUM7SUFPQUM7SUFBQUM7SUFxQkFDO0lBQUFDO0lBMEVBQztJQUFBQztJQVdBQztJQUFBQztJQTBFQUM7SUFBQUM7SUFPRUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUF4U0ZDLGlCQUNB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QUFBLG1DQUNBQSxNQURBaUM7VUFBQSxPQUFBLCtCQUNBakM7O2NBREFrQztVQUNBLCtCQUFBbEM7VUFEQSxXQUFBLG1DQUNBQSxNQURBa0M7VUFBQSxPQUFBLCtCQUNBbEM7Ozs7OztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOzs7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NB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Ozt3R0FBQUE7d0dBQUFBOzs7O2tGQUFBQTs7OztxR0FBQUE7O3dHQUFBQTt3R0FBQUE7d0dBQUFBO3NHQUFBQTs7O3VHQUFBQTt1R0FBQUE7dUdBQUFBOzt1R0FBQUE7O3VHQUFBQTs7dUdBQUFBOzt1R0FBQUE7O3FHQUFBQTs7OzJHQUFBQTs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3NHQUFBQTs7O3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTtxR0FBQUE7Ozs7MkdBQUFBOzt1R0FBQUE7dUdBQUFBO3VHQUFBQTs7dUdBQUFBOzt1R0FBQUE7dUdBQUFBO3VHQUFBQTtxR0FBQUE7Ozs7c0dBQUFBO3NHQUFBQTtzR0FBQUE7c0dBQUFBO3NHQUFBQTs7c0dBQUFBO3NHQUFBQTs7b0dBQUFBOzs7MkdBQUFBOzs0R0FBQUE7Ozs2R0FBQUE7Ozt5R0FBQUE7O3lHQUFBQTt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7O3lHQUFBQTt1R0FBQUE7Ozs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTt3R0FBQUE7c0dBQUFBOzs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7O3dHQUFBQTs7c0dBQUFBOzs7O3VHQUFBQTt1R0FBQUE7O3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7cUdBQUFBOzs7OzRHQUFBQTs7OzZHQUFBQTs7O3lHQUFBQTs7eUdBQUFBOzt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7eUdBQUFBO3VHQUFBQTs7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7c0dBQUFBOzs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTt3R0FBQUE7Ozs7O2tGQUFBQTs7Ozs7a0ZBQUFBOzt3R0FBQUE7d0dBQUFBO3NHQUFBQTs7O3VHQUFB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Q0FBQXRSLGtCQUFBc1I7U0FBQUMsOENBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyR0FBQUE7Ozs0R0FBQUE7Ozs2R0FBQUE7Ozt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7eUdBQUFBO3lHQUFBQTt1R0FBQUE7Ozt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7c0dBQUFBOzs7NEdBQUFBOzs7d0dBQUFBO3dHQUFBQTs7OztrRkFBQUE7Ozs7cUdBQUFBOzt3R0FBQUE7d0dBQUFBO3dHQUFBQTtzR0FBQUE7Ozt1R0FBQUE7dUdBQUFBO3VHQUFBQTs7dUdBQUFBOzt1R0FBQUE7O3VHQUFBQTs7dUdBQUFBOztxR0FBQUE7OzsyR0FBQUE7OzRHQUFBQTs7O3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOztzR0FBQUE7Ozt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7dUdBQUFBO3VHQUFBQTt1R0FBQUE7cUdBQUFBOzs7OzJHQUFBQTs7dUdBQUFBO3VHQUFBQTt1R0FBQUE7O3VHQUFBQTs7dUdBQUFBO3VHQUFBQTt1R0FBQUE7cUdBQUFBOzs7O3NHQUFBQTtzR0FBQUE7c0dBQUFBO3NHQUFBQTtzR0FBQUE7O3NHQUFBQTtzR0FBQUE7O29HQUFBQTs7OzJHQUFBQTs7NEdBQUFBOzs7NkdBQUFBOzs7eUdBQUFBOzt5R0FBQUE7eUdBQUFBO3lHQUFBQTt5R0FBQUE7eUdBQUFBOzt5R0FBQUE7dUdBQUFBOzs7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7O3dHQUFBQTs7d0dBQUFBOzt3R0FBQUE7d0dBQUFBO3NHQUFBQTs7OzRHQUFBQTs7O3dHQUFBQTt3R0FBQUE7d0dBQUFBO3dHQUFBQTt3R0FB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QkFBQU87ZUFBQUEsaUJBQUFBO2FBQUE7Y0FBQUMsS0FBQUQ7Y0FBQUUsT0FBQSxtQ0FBQUQ7YUFBQSxXQUFBQzs7WUFBQSxPQUFBO3dEQUFBakYsVUFBQXdFLEtBQUE1RDs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7OztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOztxQ0FBQTREOztzQkFBQTswREFBQXhFLFVBQUFZOzs7Ozs2Q0FBQTREOzs7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7O3FDQUFBNEQ7O3NCQUFBOzBEQUFBeEUsVUFBQVk7Ozs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JBQUE7MERBQUF4RSxVQUFBWTs7cUNBQUE0RDs7c0JB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R2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7SUExQm5DOzs7Ozs7Ozs7O2FBV3lCOzs7Ozs7Ozs7O0lBcEJULG1CQUFlO3VCQUZJO3VC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OEQsNkJBMVJBMUQ7SUErUkEyRCxnQ0EzUUF2RDtJQWdSQXdELHNDQTVQQXBEO0lBaVFBcUQsbUNBN09BakQ7SUFrUEFrRCx5Q0E5TkE5QztJQW1PQStDLDRCQS9NQTNDO0lBb05BNEMsZ0NBaE1BeEM7SUFxTUF5Qyx5QkFqTEFyQztJQW1MQXNDLHdCQTlKQWxDO0lBZ0tBbUMsNkJBNUlBL0I7SUFpSkFnQyw4QkE3SEE1Qjs7O09BM3VCQXBKO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FHO09BRUFDO09BVUFubEg7T0FDQW9sSDtPQUVBQztPQVVBQztPQU9BSztPQVFBQztPQVlBQztPQVFBQztPQVlBRztPQVFBQztPQVVBQztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVVBQztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVFBQztPQVlBRztPQVNBQztPQVlBRztPQVFBQztPQVVBQztPQUNBQztPQUNBQztPQVFBQztPQVdBQztPQUtBQztPQUtBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUVBQztPQUtBQztPQUtBQztPQUtBQztP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TDtZQUVHQyxPQUVFQyxjQUVDQztpQkFHR0Q7S0FHUjtNQUdFLE1BQUEsNkJBVEdDLFFBR0dEO01BT007O3lCQUFLTjtVQUFvQixVQTdHdkNIOzs7a0JBQ0FDOzBCQThHVzs7OztXQS9HWEQ7V0FvSE07V0FDQSxXQVJhRzs7b0JBOUduQko7O3FCQUFBQTs7O29CQTBITTs7U0FFSDtNQWRXO01BSEU7O2tCQTFFQVksUUFBUUosT0FBUUo7VUFUbEM7V0FDbUIsaUJBQUE7V0FDakI7V0FDUTtXQUNSOzs7VUFPQyxHQUFBLHNDQUZlUTtXQS9CaEJWLHNCQWtDb0I7V0FuQ3BCRDs7VUFzQ0MsR0FBQSxnQ0FOZVcsU0FqQ2hCWjtVQUVBRSxzQkF3Q2tCO1VBQ3BCO1dBRW9CO1lBQVpXO2NBQVk7cUNBMERWSCxPQXRFUUUsUUFBUUosT0FBUUo7V0FhOUIsNEJBYmNRO3VCQVlWQzs7Z0JBSU5DO1dBR0k7WUFISkMsMEJBQUFEO1lBR0ksTUFBQSwrQkFISkM7V0FDRTsrQkFJZ0IsK0JBTGxCQTs7aUNBUUdDLG9CQUFVLE9BQVZBO2NBTUdDO29CQUFBQSwwQkFBQUE7V0FIUTtZQUZRQyxRQUtoQkQ7WUFIUSxNQUFBLHVDQUZRQztXQUV0QjtXQUFBLE9BMkNRUjs7VUF2Q00sVUFBQSxtQ0FEUk87VUFDTjtVQUFBLE9BdUNRUDs7S0FNTixPQUFBLGlEQU5NQTtJQXNCTjsrQ0EzQkVBO0dBNEJMO0dBR0ksWUFBQTs7O21FQUNZO0lBR1A7S0FBQTs7Ozs7UUEzRE5QO1FBc0JBTTtLQXdDYSxNQUFBO0lBSmpCOzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0dDdkhNO0dBQUE7OztFIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIHN0cmZ0aW1lXG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL3N0cmZ0aW1lXG4vLyBAX3Nqc1xuLy9cbi8vIENvcHlyaWdodCAyMDEwIC0gMjAxNSBTYW1pIFNhbWh1cmkgPHNhbWlAc2FtaHVyaS5uZXQ+XG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vIGh0dHA6Ly9zanMubWl0LWxpY2Vuc2Uub3JnXG4vL1xuXG47KGZ1bmN0aW9uKCkge1xuXG4gICAgdmFyIERlZmF1bHRMb2NhbGUgPSB7XG4gICAgICAgICAgICBkYXlzOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J10sXG4gICAgICAgICAgICBzaG9ydERheXM6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gICAgICAgICAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgICAgICAgICAgc2hvcnRNb250aHM6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgICAgIEFNOiAnQU0nLFxuICAgICAgICAgICAgUE06ICdQTScsXG4gICAgICAgICAgICBhbTogJ2FtJyxcbiAgICAgICAgICAgIHBtOiAncG0nLFxuICAgICAgICAgICAgZm9ybWF0czoge1xuICAgICAgICAgICAgICAgIEQ6ICclbS8lZC8leScsXG4gICAgICAgICAgICAgICAgRjogJyVZLSVtLSVkJyxcbiAgICAgICAgICAgICAgICBSOiAnJUg6JU0nLFxuICAgICAgICAgICAgICAgIFQ6ICclSDolTTolUycsXG4gICAgICAgICAgICAgICAgWDogJyVUJyxcbiAgICAgICAgICAgICAgICBjOiAnJWEgJWIgJWQgJVggJVknLFxuICAgICAgICAgICAgICAgIHI6ICclSTolTTolUyAlcCcsXG4gICAgICAgICAgICAgICAgdjogJyVlLSViLSVZJyxcbiAgICAgICAgICAgICAgICB4OiAnJUQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRTdHJmdGltZSA9IG5ldyBTdHJmdGltZShEZWZhdWx0TG9jYWxlLCAwLCBmYWxzZSksXG4gICAgICAgIGlzQ29tbW9uSlMgPSB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgbmFtZXNwYWNlO1xuXG4gICAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICAgIGlmIChpc0NvbW1vbkpTKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IG1vZHVsZS5leHBvcnRzID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgICAgICBuYW1lc3BhY2Uuc3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWU7XG4gICAgICAgIGlmKGpvb19nbG9iYWxfb2JqZWN0KSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG4gICAgLy8gQnJvd3NlcnMgYW5kIG90aGVyIGVudmlyb25tZW50c1xuICAgIGVsc2Uge1xuICAgICAgICAvLyBHZXQgdGhlIGdsb2JhbCBvYmplY3QuIFdvcmtzIGluIEVTMywgRVM1LCBhbmQgRVM1IHN0cmljdCBtb2RlLlxuICAgICAgICBuYW1lc3BhY2UgPSBqb29fZ2xvYmFsX29iamVjdCB8fCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIHx8ICgxLGV2YWwpKCd0aGlzJyk7IH0oKSk7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG5cbiAgICAvLyBEZXByZWNhdGVkIEFQSSwgdG8gYmUgcmVtb3ZlZCBpbiB2MS4wXG4gICAgdmFyIF9yZXF1aXJlID0gaXNDb21tb25KUyA/IFwicmVxdWlyZSgnc3RyZnRpbWUnKVwiIDogXCJzdHJmdGltZVwiO1xuICAgIHZhciBfZGVwcmVjYXRpb25XYXJuaW5ncyA9IHt9O1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0aW9uV2FybmluZyhuYW1lLCBpbnN0ZWFkKSB7XG4gICAgICAgIGlmICghX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0pIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIFwiICsgbmFtZSArIFwiIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEuMC4gSW5zdGVhZCwgdXNlIGBcIiArIGluc3RlYWQgKyBcImAuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmFtZXNwYWNlLnN0cmZ0aW1lVFogPSBkZXByZWNhdGVkU3RyZnRpbWVUWjtcbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVVVEMgPSBkZXByZWNhdGVkU3RyZnRpbWVVVEM7XG4gICAgbmFtZXNwYWNlLmxvY2FsaXplZFN0cmZ0aW1lID0gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkO1xuXG4gICAgLy8gQWRhcHQgdGhlIG9sZCBBUEkgd2hpbGUgcHJlc2VydmluZyB0aGUgbmV3IEFQSS5cbiAgICBmdW5jdGlvbiBhZGFwdEZvcndhcmRzKGZuKSB7XG4gICAgICAgIGZuLmxvY2FsaXplID0gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICAgICAgZm4udGltZXpvbmUgPSBkZWZhdWx0U3RyZnRpbWUudGltZXpvbmUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi51dGMgPSBkZWZhdWx0U3RyZnRpbWUudXRjLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGFkYXB0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gYWRhcHRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIGQgYW5kIGxvY2FsZSBhcmUgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgbG9jYWxlKVxuICAgICAgICBpZiAoZCAmJiBkLmRheXMpIHtcbiAgICAgICAgICAgIGxvY2FsZSA9IGQ7XG4gICAgICAgICAgICBkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgYWRhcHRGb3J3YXJkcyhkZXByZWNhdGVkU3RyZnRpbWUpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZShmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdLCBbbG9jYWxlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdKWBcIiwgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVRaKGZtdCwgZCwgbG9jYWxlLCB0aW1lem9uZSkge1xuICAgICAgICAvLyBsb2NhbGUgaXMgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgZGF0ZSwgdGltZXpvbmUpXG4gICAgICAgIGlmICgodHlwZW9mIGxvY2FsZSA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbG9jYWxlID09ICdzdHJpbmcnKSAmJiB0aW1lem9uZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lem9uZSA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudGltZXpvbmUodHopOyBzKGZvcm1hdCwgW2RhdGVdKWAgb3IgYHZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIHR6KWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KShmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyZnRpbWUgPSAobG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWUpLnRpbWV6b25lKHRpbWV6b25lKTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgdmFyIHV0Y1N0cmZ0aW1lID0gZGVmYXVsdFN0cmZ0aW1lLnV0YygpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVVUQyhmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVVRDKGZvcm1hdCwgZGF0ZSwgbG9jYWxlKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBbZGF0ZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyB1dGNTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogdXRjU3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZUxvY2FsaXplZChsb2NhbGUpIHtcbiAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZWRTdHJmdGltZShsb2NhbGUpYFwiLCBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSlcIik7XG4gICAgICAgIHJldHVybiBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKTtcbiAgICB9XG4gICAgLy8gRW5kIG9mIGRlcHJlY2F0ZWQgQVBJXG5cbiAgICAvLyBQb2x5ZmlsbCBEYXRlLm5vdyBmb3Igb2xkIGJyb3dzZXJzLlxuICAgIGlmICh0eXBlb2YgRGF0ZS5ub3cgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgRGF0ZS5ub3cgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gK25ldyBEYXRlKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gU3RyZnRpbWUobG9jYWxlLCBjdXN0b21UaW1lem9uZU9mZnNldCwgdXNlVXRjVGltZXpvbmUpIHtcbiAgICAgICAgdmFyIF9sb2NhbGUgPSBsb2NhbGUgfHwgRGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIF9jdXN0b21UaW1lem9uZU9mZnNldCA9IGN1c3RvbVRpbWV6b25lT2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBfdXNlVXRjQmFzZWREYXRlID0gdXNlVXRjVGltZXpvbmUgfHwgZmFsc2UsXG5cbiAgICAgICAgICAgIC8vIHdlIHN0b3JlIHVuaXggdGltZXN0YW1wIHZhbHVlIGhlcmUgdG8gbm90IGNyZWF0ZSBuZXcgRGF0ZSgpIGVhY2ggaXRlcmF0aW9uIChlYWNoIG1pbGxpc2Vjb25kKVxuICAgICAgICAgICAgLy8gRGF0ZS5ub3coKSBpcyAyIHRpbWVzIGZhc3RlciB0aGFuIG5ldyBEYXRlKClcbiAgICAgICAgICAgIC8vIHdoaWxlIG1pbGxpc2Vjb25kIHByZWNpc2UgaXMgZW5vdWdoIGhlcmVcbiAgICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgdmVyeSBoZWxwZnVsIHdoZW4gc3RyZnRpbWUgdHJpZ2dlcmVkIGEgbG90IG9mIHRpbWVzIG9uZSBieSBvbmVcbiAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gMCxcbiAgICAgICAgICAgIF9jYWNoZWREYXRlO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9zdHJmdGltZShmb3JtYXQsIGRhdGUpIHtcbiAgICAgICAgICAgIHZhciB0aW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWVzdGFtcCA+IF9jYWNoZWREYXRlVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gY3VycmVudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGUgPSBuZXcgRGF0ZShfY2FjaGVkRGF0ZVRpbWVzdGFtcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gX2NhY2hlZERhdGVUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvdyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiBkYXRlIGluc3RhbnRpYXRpb24gZm9yIHV0YyBoZXJlP1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgdGllZCB0byBnZXRUaW1lem9uZU9mZnNldCBvZiB0aGUgY3VycmVudCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoX2NhY2hlZERhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRlID0gX2NhY2hlZERhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKGRhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIF9sb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGwsXG4gICAgICAgICAgICAgICAgaXNJblNjb3BlID0gZmFsc2UsXG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gZm9ybWF0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBleHRlbmRlZFRaID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhckNvZGUgPSBmb3JtYXQuY2hhckNvZGVBdChpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc0luU2NvcGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJy0nXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnXydcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA5NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzonXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNTgpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kZWRUWikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIGRldGVjdGVkIHVzZSBvZiB1bnN1cHBvcnRlZCAlOjogb3IgJTo6OiBtb2RpZmllcnMgdG8gc3RyZnRpbWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50Q2hhckNvZGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhhbXBsZXMgZm9yIG5ldyBEYXRlKDApIGluIEdNVFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1cnNkYXknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5kYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFudWFyeSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLm1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gMTAwKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMS8wMS83MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MC0wMS0wMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0SG91cnMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoTWF0aC5mbG9vcih0aW1lc3RhbXAgJSAxMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNaW51dGVzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnYW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdQJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gbG9jYWxlLmFtIDogbG9jYWxlLnBtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdSJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldFNlY29uZHMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuVCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdVJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ3N1bmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMih3ZWVrTnVtYmVyKGRhdGUsICdtb25kYXknKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxNjowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuWCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnR01UJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gXCJHTVRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpeG1lIG9wdGltaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0elN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5tYXRjaCgvXFwoKFtcXHdcXHNdKylcXCkvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHR6U3RyaW5nICYmIHR6U3RyaW5nWzFdIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1RodSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0RGF5c1tkYXRlLmdldERheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0TW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdjJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLmMsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXREYXRlKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VGltZSgpIC0geS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoZGF5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNb250aCgpICsgMSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXG4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICduJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzFzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ28nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZyhkYXRlLmdldERhdGUoKSkgKyBvcmRpbmFsKGRhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0FNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuQU0gOiBsb2NhbGUuUE07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMjowMDowMCBBTSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLnIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBNYXRoLmZsb29yKHRpbWVzdGFtcCAvIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnXFx0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gJ1xcdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF5ID09PSAwID8gNyA6IGRheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMSAtIDcsIE1vbmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAxLUphbi0xOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMudiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDAgLSA2LCBTdW5kYXkgaXMgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMi8zMS82OSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLngsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gKCcnICsgZGF0ZS5nZXRGdWxsWWVhcigpKS5zbGljZSgyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyswMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSAmJiBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGV4dGVuZGVkVFogPyBcIiswMDowMFwiIDogXCIrMDAwMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9mZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jdXN0b21UaW1lem9uZU9mZnNldCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gX2N1c3RvbVRpbWV6b25lT2Zmc2V0IC8gKDYwICogMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gb2ZmIDwgMCA/ICctJyA6ICcrJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcCA9IGV4dGVuZGVkVFogPyAnOicgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihNYXRoLmFicyhvZmYgLyA2MCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWlucyA9IE1hdGguYWJzKG9mZiAlIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHNpZ24gKyBwYWRUaWxsMihob3VycykgKyBzZXAgKyBwYWRUaWxsMihtaW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gJyUnXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gMzcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJblNjb3BlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IF9zdHJmdGltZTtcblxuICAgICAgICBzdHJmdGltZS5sb2NhbGl6ZSA9IGZ1bmN0aW9uKGxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShsb2NhbGUgfHwgX2xvY2FsZSwgX2N1c3RvbVRpbWV6b25lT2Zmc2V0LCBfdXNlVXRjQmFzZWREYXRlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHJmdGltZS50aW1lem9uZSA9IGZ1bmN0aW9uKHRpbWV6b25lKSB7XG4gICAgICAgICAgICB2YXIgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQ7XG4gICAgICAgICAgICB2YXIgdXNlVXRjQmFzZWREYXRlID0gX3VzZVV0Y0Jhc2VkRGF0ZTtcblxuICAgICAgICAgICAgdmFyIHRpbWV6b25lVHlwZSA9IHR5cGVvZiB0aW1lem9uZTtcbiAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInIHx8IHRpbWV6b25lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB1c2VVdGNCYXNlZERhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gSVNPIDg2MDEgZm9ybWF0IHRpbWV6b25lIHN0cmluZywgWy0rXUhITU1cbiAgICAgICAgICAgICAgICBpZiAodGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IHRpbWV6b25lWzBdID09PSAnLScgPyAtMSA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VycyA9IHBhcnNlSW50KHRpbWV6b25lLnNsaWNlKDEsIDMpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMywgNSksIDEwKTtcblxuICAgICAgICAgICAgICAgICAgICBjdXN0b21UaW1lem9uZU9mZnNldCA9IHNpZ24gKiAoKDYwICogaG91cnMpICsgbWludXRlcykgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluIG1pbnV0ZXM6IDQyMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gdGltZXpvbmUgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnV0YyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIHRydWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzdHJmdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMihudW1iZXJUb1BhZCwgcGFkZGluZ0NoYXIpIHtcbiAgICAgICAgaWYgKHBhZGRpbmdDaGFyID09PSAnJyB8fCBudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcGFkZGluZ0NoYXIgPSAnMCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhZGRpbmdDaGFyICsgbnVtYmVyVG9QYWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFkVGlsbDMobnVtYmVyVG9QYWQpIHtcbiAgICAgICAgaWYgKG51bWJlclRvUGFkID4gOTkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gJzAnICsgbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcwMCcgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBob3VyczEyKGhvdXIpIHtcbiAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAxMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIC0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgLy8gZmlyc3RXZWVrZGF5OiAnc3VuZGF5JyBvciAnbW9uZGF5JywgZGVmYXVsdCBpcyAnc3VuZGF5J1xuICAgIC8vXG4gICAgLy8gUGlsZmVyZWQgJiBwb3J0ZWQgZnJvbSBSdWJ5J3Mgc3RyZnRpbWUgaW1wbGVtZW50YXRpb24uXG4gICAgZnVuY3Rpb24gd2Vla051bWJlcihkYXRlLCBmaXJzdFdlZWtkYXkpIHtcbiAgICAgICAgZmlyc3RXZWVrZGF5ID0gZmlyc3RXZWVrZGF5IHx8ICdzdW5kYXknO1xuXG4gICAgICAgIC8vIFRoaXMgd29ya3MgYnkgc2hpZnRpbmcgdGhlIHdlZWtkYXkgYmFjayBieSBvbmUgZGF5IGlmIHdlXG4gICAgICAgIC8vIGFyZSB0cmVhdGluZyBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgdmFyIHdlZWtkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICBpZiAoZmlyc3RXZWVrZGF5ID09PSAnbW9uZGF5Jykge1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPT09IDApIC8vIFN1bmRheVxuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHdlZWtkYXktLTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXJzdERheU9mWWVhclV0YyA9IERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSksXG4gICAgICAgICAgICBkYXRlVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSxcbiAgICAgICAgICAgIHlkYXkgPSBNYXRoLmZsb29yKChkYXRlVXRjIC0gZmlyc3REYXlPZlllYXJVdGMpIC8gODY0MDAwMDApLFxuICAgICAgICAgICAgd2Vla051bSA9ICh5ZGF5ICsgNyAtIHdlZWtkYXkpIC8gNztcblxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih3ZWVrTnVtKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIG9yZGluYWwgc3VmZml4IGZvciBhIG51bWJlcjogc3QsIG5kLCByZCwgb3IgdGhcbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICB2YXIgaSA9IG51bWJlciAlIDEwO1xuICAgICAgICB2YXIgaWkgPSBudW1iZXIgJSAxMDA7XG5cbiAgICAgICAgaWYgKChpaSA+PSAxMSAmJiBpaSA8PSAxMykgfHwgaSA9PT0gMCB8fCBpID49IDQpIHtcbiAgICAgICAgICAgIHJldHVybiAndGgnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gJ3N0JztcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICduZCc7XG4gICAgICAgICAgICBjYXNlIDM6IHJldHVybiAncmQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkge1xuICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSB8fCAwKSAqIDYwMDAwO1xuICAgIH1cblxufSgpKTtcbiIsIihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGUhPT1cInVuZGVmaW5lZFwiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09XCJ1bmRlZmluZWRcIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PVwidW5kZWZpbmVkXCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlZpcnR1YWxEb20gPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoXCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbn0se1wiLi92ZG9tL2NyZWF0ZS1lbGVtZW50LmpzXCI6MjR9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkaWZmID0gcmVxdWlyZShcIi4vdnRyZWUvZGlmZi5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcblxufSx7XCIuL3Z0cmVlL2RpZmYuanNcIjo0N31dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLyohXG4gKiBDcm9zcy1Ccm93c2VyIFNwbGl0IDEuMS4xXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDEyIFN0ZXZlbiBMZXZpdGhhbiA8c3RldmVubGV2aXRoYW4uY29tPlxuICogQXZhaWxhYmxlIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogRUNNQVNjcmlwdCBjb21wbGlhbnQsIHVuaWZvcm0gY3Jvc3MtYnJvd3NlciBzcGxpdCBtZXRob2RcbiAqL1xuXG4vKipcbiAqIFNwbGl0cyBhIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3MgdXNpbmcgYSByZWdleCBvciBzdHJpbmcgc2VwYXJhdG9yLiBNYXRjaGVzIG9mIHRoZVxuICogc2VwYXJhdG9yIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBhcnJheS4gSG93ZXZlciwgaWYgYHNlcGFyYXRvcmAgaXMgYSByZWdleCB0aGF0IGNvbnRhaW5zXG4gKiBjYXB0dXJpbmcgZ3JvdXBzLCBiYWNrcmVmZXJlbmNlcyBhcmUgc3BsaWNlZCBpbnRvIHRoZSByZXN1bHQgZWFjaCB0aW1lIGBzZXBhcmF0b3JgIGlzIG1hdGNoZWQuXG4gKiBGaXhlcyBicm93c2VyIGJ1Z3MgY29tcGFyZWQgdG8gdGhlIG5hdGl2ZSBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgYW5kIGNhbiBiZSB1c2VkIHJlbGlhYmx5XG4gKiBjcm9zcy1icm93c2VyLlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBTdHJpbmcgdG8gc3BsaXQuXG4gKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd9IHNlcGFyYXRvciBSZWdleCBvciBzdHJpbmcgdG8gdXNlIGZvciBzZXBhcmF0aW5nIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge051bWJlcn0gW2xpbWl0XSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlIGluIHRoZSByZXN1bHQgYXJyYXkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEFycmF5IG9mIHN1YnN0cmluZ3MuXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEJhc2ljIHVzZVxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcpO1xuICogLy8gLT4gWydhJywgJ2InLCAnYycsICdkJ11cbiAqXG4gKiAvLyBXaXRoIGxpbWl0XG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJywgMik7XG4gKiAvLyAtPiBbJ2EnLCAnYiddXG4gKlxuICogLy8gQmFja3JlZmVyZW5jZXMgaW4gcmVzdWx0IGFycmF5XG4gKiBzcGxpdCgnLi53b3JkMSB3b3JkMi4uJywgLyhbYS16XSspKFxcZCspL2kpO1xuICogLy8gLT4gWycuLicsICd3b3JkJywgJzEnLCAnICcsICd3b3JkJywgJzInLCAnLi4nXVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbiBzcGxpdCh1bmRlZikge1xuXG4gIHZhciBuYXRpdmVTcGxpdCA9IFN0cmluZy5wcm90b3R5cGUuc3BsaXQsXG4gICAgY29tcGxpYW50RXhlY05wY2cgPSAvKCk/Py8uZXhlYyhcIlwiKVsxXSA9PT0gdW5kZWYsXG4gICAgLy8gTlBDRzogbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICBzZWxmO1xuXG4gIHNlbGYgPSBmdW5jdGlvbihzdHIsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAvLyBJZiBgc2VwYXJhdG9yYCBpcyBub3QgYSByZWdleCwgdXNlIGBuYXRpdmVTcGxpdGBcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHNlcGFyYXRvcikgIT09IFwiW29iamVjdCBSZWdFeHBdXCIpIHtcbiAgICAgIHJldHVybiBuYXRpdmVTcGxpdC5jYWxsKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuICAgIHZhciBvdXRwdXQgPSBbXSxcbiAgICAgIGZsYWdzID0gKHNlcGFyYXRvci5pZ25vcmVDYXNlID8gXCJpXCIgOiBcIlwiKSArIChzZXBhcmF0b3IubXVsdGlsaW5lID8gXCJtXCIgOiBcIlwiKSArIChzZXBhcmF0b3IuZXh0ZW5kZWQgPyBcInhcIiA6IFwiXCIpICsgLy8gUHJvcG9zZWQgZm9yIEVTNlxuICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyBcInlcIiA6IFwiXCIpLFxuICAgICAgLy8gRmlyZWZveCAzK1xuICAgICAgbGFzdExhc3RJbmRleCA9IDAsXG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgc2VwYXJhdG9yID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArIFwiZ1wiKSxcbiAgICAgIHNlcGFyYXRvcjIsIG1hdGNoLCBsYXN0SW5kZXgsIGxhc3RMZW5ndGg7XG4gICAgc3RyICs9IFwiXCI7IC8vIFR5cGUtY29udmVydFxuICAgIGlmICghY29tcGxpYW50RXhlY05wY2cpIHtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgc2VwYXJhdG9yMiA9IG5ldyBSZWdFeHAoXCJeXCIgKyBzZXBhcmF0b3Iuc291cmNlICsgXCIkKD8hXFxcXHMpXCIsIGZsYWdzKTtcbiAgICB9XG4gICAgLyogVmFsdWVzIGZvciBgbGltaXRgLCBwZXIgdGhlIHNwZWM6XG4gICAgICogSWYgdW5kZWZpbmVkOiA0Mjk0OTY3Mjk1IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICAgKiBJZiAwLCBJbmZpbml0eSwgb3IgTmFOOiAwXG4gICAgICogSWYgcG9zaXRpdmUgbnVtYmVyOiBsaW1pdCA9IE1hdGguZmxvb3IobGltaXQpOyBpZiAobGltaXQgPiA0Mjk0OTY3Mjk1KSBsaW1pdCAtPSA0Mjk0OTY3Mjk2O1xuICAgICAqIElmIG5lZ2F0aXZlIG51bWJlcjogNDI5NDk2NzI5NiAtIE1hdGguZmxvb3IoTWF0aC5hYnMobGltaXQpKVxuICAgICAqIElmIG90aGVyOiBUeXBlLWNvbnZlcnQsIHRoZW4gdXNlIHRoZSBhYm92ZSBydWxlc1xuICAgICAqL1xuICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmID8gLTEgPj4+IDAgOiAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgbGltaXQgPj4+IDA7IC8vIFRvVWludDMyKGxpbWl0KVxuICAgIHdoaWxlIChtYXRjaCA9IHNlcGFyYXRvci5leGVjKHN0cikpIHtcbiAgICAgIC8vIGBzZXBhcmF0b3IubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yXG4gICAgICAgIC8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3Vwc1xuICAgICAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hbaV0gPSB1bmRlZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgIGlmIChvdXRwdXQubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZXBhcmF0b3IubGFzdEluZGV4ID09PSBtYXRjaC5pbmRleCkge1xuICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxhc3RMYXN0SW5kZXggPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3IudGVzdChcIlwiKSkge1xuICAgICAgICBvdXRwdXQucHVzaChcIlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5sZW5ndGggPiBsaW1pdCA/IG91dHB1dC5zbGljZSgwLCBsaW1pdCkgOiBvdXRwdXQ7XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59KSgpO1xuXG59LHt9XSw0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIE9uZVZlcnNpb25Db25zdHJhaW50ID0gcmVxdWlyZSgnaW5kaXZpZHVhbC9vbmUtdmVyc2lvbicpO1xuXG52YXIgTVlfVkVSU0lPTiA9ICc3Jztcbk9uZVZlcnNpb25Db25zdHJhaW50KCdldi1zdG9yZScsIE1ZX1ZFUlNJT04pO1xuXG52YXIgaGFzaEtleSA9ICdfX0VWX1NUT1JFX0tFWUAnICsgTVlfVkVSU0lPTjtcblxubW9kdWxlLmV4cG9ydHMgPSBFdlN0b3JlO1xuXG5mdW5jdGlvbiBFdlN0b3JlKGVsZW0pIHtcbiAgICB2YXIgaGFzaCA9IGVsZW1baGFzaEtleV07XG5cbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgICAgaGFzaCA9IGVsZW1baGFzaEtleV0gPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbn1cblxufSx7XCJpbmRpdmlkdWFsL29uZS12ZXJzaW9uXCI6Nn1dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xuJ3VzZSBzdHJpY3QnO1xuXG4vKmdsb2JhbCB3aW5kb3csIGdsb2JhbCovXG5cbnZhciByb290ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID9cbiAgICBnbG9iYWwgOiB7fTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbmRpdmlkdWFsO1xuXG5mdW5jdGlvbiBJbmRpdmlkdWFsKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIHJvb3QpIHtcbiAgICAgICAgcmV0dXJuIHJvb3Rba2V5XTtcbiAgICB9XG5cbiAgICByb290W2tleV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHt9XSw2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIEluZGl2aWR1YWwgPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT25lVmVyc2lvbjtcblxuZnVuY3Rpb24gT25lVmVyc2lvbihtb2R1bGVOYW1lLCB2ZXJzaW9uLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIga2V5ID0gJ19fSU5ESVZJRFVBTF9PTkVfVkVSU0lPTl8nICsgbW9kdWxlTmFtZTtcbiAgICB2YXIgZW5mb3JjZUtleSA9IGtleSArICdfRU5GT1JDRV9TSU5HTEVUT04nO1xuXG4gICAgdmFyIHZlcnNpb25WYWx1ZSA9IEluZGl2aWR1YWwoZW5mb3JjZUtleSwgdmVyc2lvbik7XG5cbiAgICBpZiAodmVyc2lvblZhbHVlICE9PSB2ZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgaGF2ZSBvbmUgY29weSBvZiAnICtcbiAgICAgICAgICAgIG1vZHVsZU5hbWUgKyAnLlxcbicgK1xuICAgICAgICAgICAgJ1lvdSBhbHJlYWR5IGhhdmUgdmVyc2lvbiAnICsgdmVyc2lvblZhbHVlICtcbiAgICAgICAgICAgICcgaW5zdGFsbGVkLlxcbicgK1xuICAgICAgICAgICAgJ1RoaXMgbWVhbnMgeW91IGNhbm5vdCBpbnN0YWxsIHZlcnNpb24gJyArIHZlcnNpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBJbmRpdmlkdWFsKGtleSwgZGVmYXVsdFZhbHVlKTtcbn1cblxufSx7XCIuL2luZGV4LmpzXCI6NX1dLDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHRvcExldmVsID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge31cbnZhciBtaW5Eb2MgPSByZXF1aXJlKCdtaW4tZG9jdW1lbnQnKTtcblxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50O1xufSBlbHNlIHtcbiAgICB2YXIgZG9jY3kgPSB0b3BMZXZlbFsnX19HTE9CQUxfRE9DVU1FTlRfQ0FDSEVANCddO1xuXG4gICAgaWYgKCFkb2NjeSkge1xuICAgICAgICBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J10gPSBtaW5Eb2M7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBkb2NjeTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHtcIm1pbi1kb2N1bWVudFwiOjE3fV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9tV2FsayA9IHJlcXVpcmUoXCJkb20td2Fsa1wiKVxuXG52YXIgQ29tbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1jb21tZW50LmpzXCIpXG52YXIgRE9NVGV4dCA9IHJlcXVpcmUoXCIuL2RvbS10ZXh0LmpzXCIpXG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG52YXIgRG9jdW1lbnRGcmFnbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1mcmFnbWVudC5qc1wiKVxudmFyIEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQuanNcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50O1xuXG5mdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJoZWFkXCIpXG4gICAgdGhpcy5ib2R5ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiYm9keVwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiaHRtbFwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGVhZClcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJvZHkpXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW3RoaXMuZG9jdW1lbnRFbGVtZW50XVxuICAgIHRoaXMubm9kZVR5cGUgPSA5XG59XG5cbnZhciBwcm90byA9IERvY3VtZW50LnByb3RvdHlwZTtcbnByb3RvLmNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUodmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IERPTVRleHQodmFsdWUsIHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnROUyA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgICB2YXIgbnMgPSBuYW1lc3BhY2UgPT09IG51bGwgPyBudWxsIDogU3RyaW5nKG5hbWVzcGFjZSlcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcywgbnMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUpIHtcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUV2ZW50ID0gZnVuY3Rpb24gY3JlYXRlRXZlbnQoZmFtaWx5KSB7XG4gICAgcmV0dXJuIG5ldyBFdmVudChmYW1pbHkpXG59XG5cbnByb3RvLmNyZWF0ZUNvbW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVDb21tZW50KGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgdGhpcylcbn1cblxucHJvdG8uZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIGlkID0gU3RyaW5nKGlkKVxuXG4gICAgdmFyIHJlc3VsdCA9IGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAoU3RyaW5nKG5vZGUuaWQpID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0IHx8IG51bGxcbn1cblxucHJvdG8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IERPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWVcbnByb3RvLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVcbnByb3RvLmNvbnRhaW5zID0gRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnNcblxucHJvdG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbnByb3RvLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5wcm90by5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG59LHtcIi4vZG9tLWNvbW1lbnQuanNcIjo5LFwiLi9kb20tZWxlbWVudC5qc1wiOjEwLFwiLi9kb20tZnJhZ21lbnQuanNcIjoxMSxcIi4vZG9tLXRleHQuanNcIjoxMixcIi4vZXZlbnQuanNcIjoxMyxcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiZG9tLXdhbGtcIjoxOH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBDb21tZW50XG5cbmZ1bmN0aW9uIENvbW1lbnQoZGF0YSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tZW50KGRhdGEsIG93bmVyKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLm5vZGVWYWx1ZSA9IGRhdGFcbiAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Db21tZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDhcbkNvbW1lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjY29tbWVudFwiXG5cbkNvbW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0NvbW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBDb21tZW50XVwiXG59XG5cbn0se31dLDEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG52YXIgZGlzcGF0Y2hFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCIpXG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciBzZXJpYWxpemVOb2RlID0gcmVxdWlyZShcIi4vc2VyaWFsaXplLmpzXCIpXG5cbnZhciBodG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUVsZW1lbnRcblxuZnVuY3Rpb24gRE9NRWxlbWVudCh0YWdOYW1lLCBvd25lciwgbmFtZXNwYWNlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lKVxuICAgIH1cblxuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gaHRtbG5zIDogKG5hbWVzcGFjZSB8fCBudWxsKVxuXG4gICAgdGhpcy50YWdOYW1lID0gbnMgPT09IGh0bWxucyA/IFN0cmluZyh0YWdOYW1lKS50b1VwcGVyQ2FzZSgpIDogdGFnTmFtZVxuICAgIHRoaXMubm9kZU5hbWUgPSB0aGlzLnRhZ05hbWVcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCJcbiAgICB0aGlzLmRhdGFzZXQgPSB7fVxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbFxuICAgIHRoaXMuc3R5bGUgPSB7fVxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbiAgICB0aGlzLm5hbWVzcGFjZVVSSSA9IG5zXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IHt9XG5cbiAgICBpZiAodGhpcy50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICB0aGlzLnR5cGUgPSAndGV4dCdcbiAgICB9XG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRPTUVsZW1lbnRcIlxuRE9NRWxlbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxXG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfYXBwZW5kQ2hpbGQoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSkge1xuICAgICAgICBjaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkKVxuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKVxuICAgIGNoaWxkLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICByZXR1cm4gY2hpbGRcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZXBsYWNlQ2hpbGQoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgbmVlZGxlLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKG5lZWRsZSlcblxuICAgICAgICBuZWVkbGUucGFyZW50Tm9kZSA9IG51bGxcbiAgICAgICAgdGhpcy5jaGlsZE5vZGVzW2luZGV4XSA9IGVsZW1cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuXG4gICAgICAgIHJldHVybiBuZWVkbGVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQ2hpbGQoZWxlbSkge1xuICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgZWxlbS5wYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihlbGVtKVxuICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICBlbGVtLnBhcmVudE5vZGUgPSBudWxsXG4gICAgcmV0dXJuIGVsZW1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9pbnNlcnRCZWZvcmUoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgcmVmZXJlbmNlRWxlbWVudCBpcyBhIGRvbSBub2RlXG4gICAgICAgIC8vIGFuZCBwYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW5kZXggPSBuZWVkbGUgPT09IG51bGwgfHwgbmVlZGxlID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAwLCBlbGVtKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZSA9IHRoaXNcbiAgICAgICAgcmV0dXJuIGVsZW1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBwcmVmaXggPSBudWxsXG4gICAgICAgIHZhciBsb2NhbE5hbWUgPSBuYW1lXG4gICAgICAgIHZhciBjb2xvblBvc2l0aW9uID0gbmFtZS5pbmRleE9mKFwiOlwiKVxuICAgICAgICBpZiAoY29sb25Qb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cigwLCBjb2xvblBvc2l0aW9uKVxuICAgICAgICAgICAgbG9jYWxOYW1lID0gbmFtZS5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV0gfHwgKHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSA9IHt9KVxuICAgICAgICBhdHRyaWJ1dGVzW2xvY2FsTmFtZV0gPSB7dmFsdWU6IHZhbHVlLCBwcmVmaXg6IHByZWZpeH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlc1tuYW1lXSAmJiBhdHRyaWJ1dGVzW25hbWVdLnZhbHVlXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBkZWxldGUgYXR0cmlidXRlc1tuYW1lXVxuICAgICAgICB9XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfaGFzQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdXG4gICAgICAgIHJldHVybiAhIWF0dHJpYnV0ZXMgJiYgbmFtZSBpbiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSwgdmFsdWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lclxuRE9NRWxlbWVudC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnRcblxuLy8gVW4taW1wbGVtZW50ZWRcbkRPTUVsZW1lbnQucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gX0VsZW1lbnRfZm9jdXMoKSB7XG4gICAgcmV0dXJuIHZvaWQgMFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9FbGVtZW50X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBzZXJpYWxpemVOb2RlKHRoaXMpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZXMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IGNsYXNzTmFtZXMuc3BsaXQoXCIgXCIpO1xuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICB2YXIgbm9kZUNsYXNzTmFtZSA9IG5vZGUuY2xhc3NOYW1lIHx8IFwiXCJcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NlcyA9IG5vZGVDbGFzc05hbWUuc3BsaXQoXCIgXCIpXG5cbiAgICAgICAgICAgIGlmIChjbGFzc2VzLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVDbGFzc2VzLmluZGV4T2YoaXRlbSkgIT09IC0xXG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSB7XG4gICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMuY2hpbGROb2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRhZ05hbWUgPT09ICcqJyB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZSkpIHtcbiAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBfRWxlbWVudF9jb250YWlucyhlbGVtZW50KSB7XG4gICAgcmV0dXJuIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IG5vZGVcbiAgICB9KSB8fCBmYWxzZVxufVxuXG59LHtcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiLi9zZXJpYWxpemUuanNcIjoxOSxcImRvbS13YWxrXCI6MTh9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnRGcmFnbWVudFxuXG5mdW5jdGlvbiBEb2N1bWVudEZyYWdtZW50KG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnRGcmFnbWVudCgpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50eXBlID0gXCJEb2N1bWVudEZyYWdtZW50XCJcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gMTFcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjZG9jdW1lbnQtZnJhZ21lbnRcIlxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZFxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZFxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50b1N0cmluZyA9XG4gICAgZnVuY3Rpb24gX0RvY3VtZW50RnJhZ21lbnRfdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKG5vZGUpXG4gICAgICAgIH0pLmpvaW4oXCJcIilcbiAgICB9XG5cbn0se1wiLi9kb20tZWxlbWVudC5qc1wiOjEwfV0sMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBET01UZXh0XG5cbmZ1bmN0aW9uIERPTVRleHQodmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTVRleHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSlcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSB2YWx1ZSB8fCBcIlwiXG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5ET01UZXh0LnByb3RvdHlwZS50eXBlID0gXCJET01UZXh0Tm9kZVwiXG5ET01UZXh0LnByb3RvdHlwZS5ub2RlVHlwZSA9IDNcbkRPTVRleHQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjdGV4dFwiXG5cbkRPTVRleHQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX1RleHRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVxufVxuXG5ET01UZXh0LnByb3RvdHlwZS5yZXBsYWNlRGF0YSA9IGZ1bmN0aW9uIHJlcGxhY2VEYXRhKGluZGV4LCBsZW5ndGgsIHZhbHVlKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmRhdGFcbiAgICB2YXIgbGVmdCA9IGN1cnJlbnQuc3Vic3RyaW5nKDAsIGluZGV4KVxuICAgIHZhciByaWdodCA9IGN1cnJlbnQuc3Vic3RyaW5nKGluZGV4ICsgbGVuZ3RoLCBjdXJyZW50Lmxlbmd0aClcbiAgICB0aGlzLmRhdGEgPSBsZWZ0ICsgdmFsdWUgKyByaWdodFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aFxufVxuXG59LHt9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50XG5cbmZ1bmN0aW9uIEV2ZW50KGZhbWlseSkge31cblxuRXZlbnQucHJvdG90eXBlLmluaXRFdmVudCA9IGZ1bmN0aW9uIF9FdmVudF9pbml0RXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgICB0aGlzLmJ1YmJsZXMgPSBidWJibGVzXG4gICAgdGhpcy5jYW5jZWxhYmxlID0gY2FuY2VsYWJsZVxufVxuXG5FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiBfRXZlbnRfcHJldmVudERlZmF1bHQoKSB7XG4gICAgXG59XG5cbn0se31dLDE0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gYWRkRXZlbnRMaXN0ZW5lclxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzID0ge31cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdID0gW11cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5saXN0ZW5lcnNbdHlwZV0uaW5kZXhPZihsaXN0ZW5lcikgPT09IC0xKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpXG4gICAgfVxufVxuXG59LHt9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGRpc3BhdGNoRXZlbnRcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuICAgIHZhciB0eXBlID0gZXYudHlwZVxuXG4gICAgaWYgKCFldi50YXJnZXQpIHtcbiAgICAgICAgZXYudGFyZ2V0ID0gZWxlbVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBlbGVtLmxpc3RlbmVyc1t0eXBlXVxuXG4gICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICByZXR1cm4gbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBldi5jdXJyZW50VGFyZ2V0ID0gZWxlbVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKGV2KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lci5oYW5kbGVFdmVudChldilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZS5kaXNwYXRjaEV2ZW50KGV2KVxuICAgIH1cbn1cblxufSx7fV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgbGlzdCA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG4gICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKGxpc3RlbmVyKVxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxufVxuXG59LHt9XSwxNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRG9jdW1lbnQgPSByZXF1aXJlKCcuL2RvY3VtZW50LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IERvY3VtZW50KCk7XG5cbn0se1wiLi9kb2N1bWVudC5qc1wiOjh9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRpdmVseVdhbGtcblxuZnVuY3Rpb24gaXRlcmF0aXZlbHlXYWxrKG5vZGVzLCBjYikge1xuICAgIGlmICghKCdsZW5ndGgnIGluIG5vZGVzKSkge1xuICAgICAgICBub2RlcyA9IFtub2Rlc11cbiAgICB9XG4gICAgXG4gICAgbm9kZXMgPSBzbGljZS5jYWxsKG5vZGVzKVxuXG4gICAgd2hpbGUobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXMuc2hpZnQoKSxcbiAgICAgICAgICAgIHJldCA9IGNiKG5vZGUpXG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGROb2RlcyAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZS5jaGlsZE5vZGVzKS5jb25jYXQobm9kZXMpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbn0se31dLDE5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gc2VyaWFsaXplTm9kZVxuXG52YXIgdm9pZEVsZW1lbnRzID0gL2FyZWF8YmFzZXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGtleWdlbnxsaW5rfG1lbnVpdGVtfG1ldGF8cGFyYW18c291cmNlfHRyYWNrfHdici9pO1xuXG5mdW5jdGlvbiBzZXJpYWxpemVOb2RlKG5vZGUpIHtcbiAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVRleHQobm9kZS5kYXRhKVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gXCI8IS0tXCIgKyBub2RlLmRhdGEgKyBcIi0tPlwiXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRWxlbWVudChub2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplRWxlbWVudChlbGVtKSB7XG4gICAgdmFyIHN0cmluZ3MgPSBbXVxuXG4gICAgdmFyIHRhZ25hbWUgPSBlbGVtLnRhZ05hbWVcblxuICAgIGlmIChlbGVtLm5hbWVzcGFjZVVSSSA9PT0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpIHtcbiAgICAgICAgdGFnbmFtZSA9IHRhZ25hbWUudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHN0cmluZ3MucHVzaChcIjxcIiArIHRhZ25hbWUgKyBwcm9wZXJ0aWVzKGVsZW0pICsgZGF0YXNldGlmeShlbGVtKSlcblxuICAgIGlmICh2b2lkRWxlbWVudHMudGVzdCh0YWduYW1lKSkge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCIgLz5cIilcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCI+XCIpXG5cbiAgICAgICAgaWYgKGVsZW0uY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaC5hcHBseShzdHJpbmdzLCBlbGVtLmNoaWxkTm9kZXMubWFwKHNlcmlhbGl6ZU5vZGUpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlc2NhcGVUZXh0KGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2goZWxlbS5pbm5lckhUTUwpXG4gICAgICAgIH1cblxuICAgICAgICBzdHJpbmdzLnB1c2goXCI8L1wiICsgdGFnbmFtZSArIFwiPlwiKVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdzLmpvaW4oXCJcIilcbn1cblxuZnVuY3Rpb24gaXNQcm9wZXJ0eShlbGVtLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBlbGVtW2tleV1cblxuICAgIGlmIChrZXkgPT09IFwic3R5bGVcIiAmJiBPYmplY3Qua2V5cyhlbGVtLnN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgKHR5cGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgfHwgdHlwZSA9PT0gXCJudW1iZXJcIikgJiZcbiAgICAgICAga2V5ICE9PSBcIm5vZGVOYW1lXCIgJiYga2V5ICE9PSBcImNsYXNzTmFtZVwiICYmIGtleSAhPT0gXCJ0YWdOYW1lXCIgJiZcbiAgICAgICAga2V5ICE9PSBcInRleHRDb250ZW50XCIgJiYga2V5ICE9PSBcImlubmVyVGV4dFwiICYmIGtleSAhPT0gXCJuYW1lc3BhY2VVUklcIiAmJiAga2V5ICE9PSBcImlubmVySFRNTFwiXG59XG5cbmZ1bmN0aW9uIHN0eWxpZnkoc3R5bGVzKSB7XG4gICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09ICdzdHJpbmcnKSByZXR1cm4gc3R5bGVzXG4gICAgdmFyIGF0dHIgPSBcIlwiXG4gICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVzW2tleV1cbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoL1tBLVpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi1cIiArIGMudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSlcbiAgICAgICAgYXR0ciArPSBrZXkgKyBcIjpcIiArIHZhbHVlICsgXCI7XCJcbiAgICB9KVxuICAgIHJldHVybiBhdHRyXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRpZnkoZWxlbSkge1xuICAgIHZhciBkcyA9IGVsZW0uZGF0YXNldFxuICAgIHZhciBwcm9wcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZHMpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiZGF0YS1cIiArIGtleSwgdmFsdWU6IGRzW2tleV0gfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubGVuZ3RoID8gc3RyaW5naWZ5KHByb3BzKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGxpc3QpIHtcbiAgICB2YXIgYXR0cmlidXRlcyA9IFtdXG4gICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh0dXBsZSkge1xuICAgICAgICB2YXIgbmFtZSA9IHR1cGxlLm5hbWVcbiAgICAgICAgdmFyIHZhbHVlID0gdHVwbGUudmFsdWVcblxuICAgICAgICBpZiAobmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN0eWxpZnkodmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmFtZSArIFwiPVwiICsgXCJcXFwiXCIgKyBlc2NhcGVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSkgKyBcIlxcXCJcIilcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMubGVuZ3RoID8gXCIgXCIgKyBhdHRyaWJ1dGVzLmpvaW4oXCIgXCIpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0aWVzKGVsZW0pIHtcbiAgICB2YXIgcHJvcHMgPSBbXVxuICAgIGZvciAodmFyIGtleSBpbiBlbGVtKSB7XG4gICAgICAgIGlmIChpc1Byb3BlcnR5KGVsZW0sIGtleSkpIHtcbiAgICAgICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBrZXksIHZhbHVlOiBlbGVtW2tleV0gfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIG5zIGluIGVsZW0uX2F0dHJpYnV0ZXMpIHtcbiAgICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiBlbGVtLl9hdHRyaWJ1dGVzW25zXSkge1xuICAgICAgICB2YXIgcHJvcCA9IGVsZW0uX2F0dHJpYnV0ZXNbbnNdW2F0dHJpYnV0ZV1cbiAgICAgICAgdmFyIG5hbWUgPSAocHJvcC5wcmVmaXggPyBwcm9wLnByZWZpeCArIFwiOlwiIDogXCJcIikgKyBhdHRyaWJ1dGVcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiBwcm9wLnZhbHVlIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVsZW0uY2xhc3NOYW1lKSB7XG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBcImNsYXNzXCIsIHZhbHVlOiBlbGVtLmNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBlc2NhcGVUZXh0KHMpIHtcbiAgICB2YXIgc3RyID0gJyc7XG5cbiAgICBpZiAodHlwZW9mKHMpID09PSAnc3RyaW5nJykgeyBcbiAgICAgICAgc3RyID0gczsgXG4gICAgfSBlbHNlIGlmIChzKSB7XG4gICAgICAgIHN0ciA9IHMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcbiAgICAgICAgLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKVxufVxuXG5mdW5jdGlvbiBlc2NhcGVBdHRyaWJ1dGVWYWx1ZShzdHIpIHtcbiAgICByZXR1cm4gZXNjYXBlVGV4dChzdHIpLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpXG59XG5cbn0se31dLDIwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzT2JqZWN0KHgpIHtcblx0cmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGw7XG59O1xuXG59LHt9XSwyMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXlcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJc0FycmF5IHx8IGlzQXJyYXlcblxuZnVuY3Rpb24gaXNBcnJheShvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSBcIltvYmplY3QgQXJyYXldXCJcbn1cblxufSx7fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHBhdGNoID0gcmVxdWlyZShcIi4vdmRvbS9wYXRjaC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbn0se1wiLi92ZG9tL3BhdGNoLmpzXCI6Mjd9XSwyMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHlQcm9wZXJ0aWVzXG5cbmZ1bmN0aW9uIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcywgcHJldmlvdXMpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wcykge1xuICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNIb29rKHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKVxuICAgICAgICAgICAgaWYgKHByb3BWYWx1ZS5ob29rKSB7XG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlLmhvb2sobm9kZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cykge1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzW3Byb3BOYW1lXVxuXG4gICAgICAgIGlmICghaXNIb29rKHByZXZpb3VzVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zdHlsZVtpXSA9IFwiXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcmV2aW91c1ZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBcIlwiXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzVmFsdWUudW5ob29rKSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLnVuaG9vayhub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkXG5cbiAgICAvLyBTZXQgYXR0cmlidXRlc1xuICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgYXR0clZhbHVlID0gcHJvcFZhbHVlW2F0dHJOYW1lXVxuXG4gICAgICAgICAgICBpZiAoYXR0clZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmKHByZXZpb3VzVmFsdWUgJiYgaXNPYmplY3QocHJldmlvdXNWYWx1ZSkgJiZcbiAgICAgICAgZ2V0UHJvdG90eXBlKHByZXZpb3VzVmFsdWUpICE9PSBnZXRQcm90b3R5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzT2JqZWN0KG5vZGVbcHJvcE5hbWVdKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHt9XG4gICAgfVxuXG4gICAgdmFyIHJlcGxhY2VyID0gcHJvcE5hbWUgPT09IFwic3R5bGVcIiA/IFwiXCIgOiB1bmRlZmluZWRcblxuICAgIGZvciAodmFyIGsgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BWYWx1ZVtrXVxuICAgICAgICBub2RlW3Byb3BOYW1lXVtrXSA9ICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHJlcGxhY2VyIDogdmFsdWVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgICAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rLmpzXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcblxudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdm5vZGUuanNcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZ0ZXh0LmpzXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRWxlbWVudFxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHZub2RlLCBvcHRzKSB7XG4gICAgdmFyIGRvYyA9IG9wdHMgPyBvcHRzLmRvY3VtZW50IHx8IGRvY3VtZW50IDogZG9jdW1lbnRcbiAgICB2YXIgd2FybiA9IG9wdHMgPyBvcHRzLndhcm4gOiBudWxsXG5cbiAgICB2bm9kZSA9IGhhbmRsZVRodW5rKHZub2RlKS5hXG5cbiAgICBpZiAoaXNXaWRnZXQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiB2bm9kZS5pbml0KClcbiAgICB9IGVsc2UgaWYgKGlzVlRleHQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBkb2MuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dClcbiAgICB9IGVsc2UgaWYgKCFpc1ZOb2RlKHZub2RlKSkge1xuICAgICAgICBpZiAod2Fybikge1xuICAgICAgICAgICAgd2FybihcIkl0ZW0gaXMgbm90IGEgdmFsaWQgdmlydHVhbCBkb20gbm9kZVwiLCB2bm9kZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHZhciBub2RlID0gKHZub2RlLm5hbWVzcGFjZSA9PT0gbnVsbCkgP1xuICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCh2bm9kZS50YWdOYW1lKSA6XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50TlModm5vZGUubmFtZXNwYWNlLCB2bm9kZS50YWdOYW1lKVxuXG4gICAgdmFyIHByb3BzID0gdm5vZGUucHJvcGVydGllc1xuICAgIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcylcblxuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBjcmVhdGVFbGVtZW50KGNoaWxkcmVuW2ldLCBvcHRzKVxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKGNoaWxkTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlXG59XG5cbn0se1wiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCI6MzYsXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxLFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCJnbG9iYWwvZG9jdW1lbnRcIjo3fV0sMjU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLy8gTWFwcyBhIHZpcnR1YWwgRE9NIHRyZWUgb250byBhIHJlYWwgRE9NIHRyZWUgaW4gYW4gZWZmaWNpZW50IG1hbm5lci5cbi8vIFdlIGRvbid0IHdhbnQgdG8gcmVhZCBhbGwgb2YgdGhlIERPTSBub2RlcyBpbiB0aGUgdHJlZSBzbyB3ZSB1c2Vcbi8vIHRoZSBpbi1vcmRlciB0cmVlIGluZGV4aW5nIHRvIGVsaW1pbmF0ZSByZWN1cnNpb24gZG93biBjZXJ0YWluIGJyYW5jaGVzLlxuLy8gV2Ugb25seSByZWN1cnNlIGludG8gYSBET00gbm9kZSBpZiB3ZSBrbm93IHRoYXQgaXQgY29udGFpbnMgYSBjaGlsZCBvZlxuLy8gaW50ZXJlc3QuXG5cbnZhciBub0NoaWxkID0ge31cblxubW9kdWxlLmV4cG9ydHMgPSBkb21JbmRleFxuXG5mdW5jdGlvbiBkb21JbmRleChyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMpIHtcbiAgICBpZiAoIWluZGljZXMgfHwgaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5kaWNlcy5zb3J0KGFzY2VuZGluZylcbiAgICAgICAgcmV0dXJuIHJlY3Vyc2Uocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzLCAwKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleCkge1xuICAgIG5vZGVzID0gbm9kZXMgfHwge31cblxuXG4gICAgaWYgKHJvb3ROb2RlKSB7XG4gICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCByb290SW5kZXgpKSB7XG4gICAgICAgICAgICBub2Rlc1tyb290SW5kZXhdID0gcm9vdE5vZGVcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2Q2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuXG5cbiAgICAgICAgaWYgKHZDaGlsZHJlbikge1xuXG4gICAgICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHJvb3ROb2RlLmNoaWxkTm9kZXNcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcm9vdEluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHZhciB2Q2hpbGQgPSB2Q2hpbGRyZW5baV0gfHwgbm9DaGlsZFxuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSByb290SW5kZXggKyAodkNoaWxkLmNvdW50IHx8IDApXG5cbiAgICAgICAgICAgICAgICAvLyBza2lwIHJlY3Vyc2lvbiBkb3duIHRoZSB0cmVlIGlmIHRoZXJlIGFyZSBubyBub2RlcyBkb3duIGhlcmVcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhJblJhbmdlKGluZGljZXMsIHJvb3RJbmRleCwgbmV4dEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICByZWN1cnNlKGNoaWxkTm9kZXNbaV0sIHZDaGlsZCwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb290SW5kZXggPSBuZXh0SW5kZXhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2Rlc1xufVxuXG4vLyBCaW5hcnkgc2VhcmNoIGZvciBhbiBpbmRleCBpbiB0aGUgaW50ZXJ2YWwgW2xlZnQsIHJpZ2h0XVxuZnVuY3Rpb24gaW5kZXhJblJhbmdlKGluZGljZXMsIGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHZhciBtaW5JbmRleCA9IDBcbiAgICB2YXIgbWF4SW5kZXggPSBpbmRpY2VzLmxlbmd0aCAtIDFcbiAgICB2YXIgY3VycmVudEluZGV4XG4gICAgdmFyIGN1cnJlbnRJdGVtXG5cbiAgICB3aGlsZSAobWluSW5kZXggPD0gbWF4SW5kZXgpIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gKChtYXhJbmRleCArIG1pbkluZGV4KSAvIDIpID4+IDBcbiAgICAgICAgY3VycmVudEl0ZW0gPSBpbmRpY2VzW2N1cnJlbnRJbmRleF1cblxuICAgICAgICBpZiAobWluSW5kZXggPT09IG1heEluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEl0ZW0gPj0gbGVmdCAmJiBjdXJyZW50SXRlbSA8PSByaWdodFxuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRJdGVtIDwgbGVmdCkge1xuICAgICAgICAgICAgbWluSW5kZXggPSBjdXJyZW50SW5kZXggKyAxXG4gICAgICAgIH0gZWxzZSAgaWYgKGN1cnJlbnRJdGVtID4gcmlnaHQpIHtcbiAgICAgICAgICAgIG1heEluZGV4ID0gY3VycmVudEluZGV4IC0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogLTFcbn1cblxufSx7fV0sMjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2guanNcIilcblxudmFyIHVwZGF0ZVdpZGdldCA9IHJlcXVpcmUoXCIuL3VwZGF0ZS13aWRnZXRcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVBhdGNoXG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2godnBhdGNoLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHR5cGUgPSB2cGF0Y2gudHlwZVxuICAgIHZhciB2Tm9kZSA9IHZwYXRjaC52Tm9kZVxuICAgIHZhciBwYXRjaCA9IHZwYXRjaC5wYXRjaFxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVlBhdGNoLlJFTU9WRTpcbiAgICAgICAgICAgIHJldHVybiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKVxuICAgICAgICBjYXNlIFZQYXRjaC5JTlNFUlQ6XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZShkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guVlRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5XSURHRVQ6XG4gICAgICAgICAgICByZXR1cm4gd2lkZ2V0UGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WTk9ERTpcbiAgICAgICAgICAgIHJldHVybiB2Tm9kZVBhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guT1JERVI6XG4gICAgICAgICAgICByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgcGF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgICAgICBjYXNlIFZQYXRjaC5QUk9QUzpcbiAgICAgICAgICAgIGFwcGx5UHJvcGVydGllcyhkb21Ob2RlLCBwYXRjaCwgdk5vZGUucHJvcGVydGllcylcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlRIVU5LOlxuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VSb290KGRvbU5vZGUsXG4gICAgICAgICAgICAgICAgcmVuZGVyT3B0aW9ucy5wYXRjaChkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucykpXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlTm9kZShkb21Ob2RlLCB2Tm9kZSkge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvbU5vZGUpXG4gICAgfVxuXG4gICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCB2Tm9kZSk7XG5cbiAgICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBpbnNlcnROb2RlKHBhcmVudE5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobmV3Tm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBzdHJpbmdQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZUZXh0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmIChkb21Ob2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGRvbU5vZGUucmVwbGFjZURhdGEoMCwgZG9tTm9kZS5sZW5ndGgsIHZUZXh0LnRleHQpXG4gICAgICAgIG5ld05vZGUgPSBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZUZXh0LCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiB3aWRnZXRQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHdpZGdldCwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciB1cGRhdGluZyA9IHVwZGF0ZVdpZGdldChsZWZ0Vk5vZGUsIHdpZGdldClcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKHVwZGF0aW5nKSB7XG4gICAgICAgIG5ld05vZGUgPSB3aWRnZXQudXBkYXRlKGxlZnRWTm9kZSwgZG9tTm9kZSkgfHwgZG9tTm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih3aWRnZXQsIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0aW5nKSB7XG4gICAgICAgIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgbGVmdFZOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHZOb2RlUGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB2Tm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHcpIHtcbiAgICBpZiAodHlwZW9mIHcuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiICYmIGlzV2lkZ2V0KHcpKSB7XG4gICAgICAgIHcuZGVzdHJveShkb21Ob2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVvcmRlckNoaWxkcmVuKGRvbU5vZGUsIG1vdmVzKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBkb21Ob2RlLmNoaWxkTm9kZXNcbiAgICB2YXIga2V5TWFwID0ge31cbiAgICB2YXIgbm9kZVxuICAgIHZhciByZW1vdmVcbiAgICB2YXIgaW5zZXJ0XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdmVzLnJlbW92ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVtb3ZlID0gbW92ZXMucmVtb3Zlc1tpXVxuICAgICAgICBub2RlID0gY2hpbGROb2Rlc1tyZW1vdmUuZnJvbV1cbiAgICAgICAgaWYgKHJlbW92ZS5rZXkpIHtcbiAgICAgICAgICAgIGtleU1hcFtyZW1vdmUua2V5XSA9IG5vZGVcbiAgICAgICAgfVxuICAgICAgICBkb21Ob2RlLnJlbW92ZUNoaWxkKG5vZGUpXG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb3Zlcy5pbnNlcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGluc2VydCA9IG1vdmVzLmluc2VydHNbal1cbiAgICAgICAgbm9kZSA9IGtleU1hcFtpbnNlcnQua2V5XVxuICAgICAgICAvLyB0aGlzIGlzIHRoZSB3ZWlyZGVzdCBidWcgaSd2ZSBldmVyIHNlZW4gaW4gd2Via2l0XG4gICAgICAgIGRvbU5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIGluc2VydC50byA+PSBsZW5ndGgrKyA/IG51bGwgOiBjaGlsZE5vZGVzW2luc2VydC50b10pXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlUm9vdChvbGRSb290LCBuZXdSb290KSB7XG4gICAgaWYgKG9sZFJvb3QgJiYgbmV3Um9vdCAmJiBvbGRSb290ICE9PSBuZXdSb290ICYmIG9sZFJvb3QucGFyZW50Tm9kZSkge1xuICAgICAgICBvbGRSb290LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld1Jvb3QsIG9sZFJvb3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1Jvb3Q7XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuLi92bm9kZS92cGF0Y2guanNcIjo0NCxcIi4vYXBwbHktcHJvcGVydGllc1wiOjIzLFwiLi91cGRhdGUtd2lkZ2V0XCI6Mjh9XSwyNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKFwiZ2xvYmFsL2RvY3VtZW50XCIpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciByZW5kZXIgPSByZXF1aXJlKFwiLi9jcmVhdGUtZWxlbWVudFwiKVxudmFyIGRvbUluZGV4ID0gcmVxdWlyZShcIi4vZG9tLWluZGV4XCIpXG52YXIgcGF0Y2hPcCA9IHJlcXVpcmUoXCIuL3BhdGNoLW9wXCIpXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbmZ1bmN0aW9uIHBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKSB7XG4gICAgcmVuZGVyT3B0aW9ucyA9IHJlbmRlck9wdGlvbnMgfHwge31cbiAgICByZW5kZXJPcHRpb25zLnBhdGNoID0gcmVuZGVyT3B0aW9ucy5wYXRjaCAmJiByZW5kZXJPcHRpb25zLnBhdGNoICE9PSBwYXRjaFxuICAgICAgICA/IHJlbmRlck9wdGlvbnMucGF0Y2hcbiAgICAgICAgOiBwYXRjaFJlY3Vyc2l2ZVxuICAgIHJlbmRlck9wdGlvbnMucmVuZGVyID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIgfHwgcmVuZGVyXG5cbiAgICByZXR1cm4gcmVuZGVyT3B0aW9ucy5wYXRjaChyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucylcbn1cblxuZnVuY3Rpb24gcGF0Y2hSZWN1cnNpdmUocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IHBhdGNoSW5kaWNlcyhwYXRjaGVzKVxuXG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGRvbUluZGV4KHJvb3ROb2RlLCBwYXRjaGVzLmEsIGluZGljZXMpXG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSByb290Tm9kZS5vd25lckRvY3VtZW50XG5cbiAgICBpZiAoIXJlbmRlck9wdGlvbnMuZG9jdW1lbnQgJiYgb3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQpIHtcbiAgICAgICAgcmVuZGVyT3B0aW9ucy5kb2N1bWVudCA9IG93bmVyRG9jdW1lbnRcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGVJbmRleCA9IGluZGljZXNbaV1cbiAgICAgICAgcm9vdE5vZGUgPSBhcHBseVBhdGNoKHJvb3ROb2RlLFxuICAgICAgICAgICAgaW5kZXhbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHBhdGNoZXNbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2gocm9vdE5vZGUsIGRvbU5vZGUsIHBhdGNoTGlzdCwgcmVuZGVyT3B0aW9ucykge1xuICAgIGlmICghZG9tTm9kZSkge1xuICAgICAgICByZXR1cm4gcm9vdE5vZGVcbiAgICB9XG5cbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGlzQXJyYXkocGF0Y2hMaXN0KSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGNoTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0W2ldLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgICAgICByb290Tm9kZSA9IG5ld05vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSBwYXRjaE9wKHBhdGNoTGlzdCwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIHBhdGNoSW5kaWNlcyhwYXRjaGVzKSB7XG4gICAgdmFyIGluZGljZXMgPSBbXVxuXG4gICAgZm9yICh2YXIga2V5IGluIHBhdGNoZXMpIHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJhXCIpIHtcbiAgICAgICAgICAgIGluZGljZXMucHVzaChOdW1iZXIoa2V5KSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmRpY2VzXG59XG5cbn0se1wiLi9jcmVhdGUtZWxlbWVudFwiOjI0LFwiLi9kb20taW5kZXhcIjoyNSxcIi4vcGF0Y2gtb3BcIjoyNixcImdsb2JhbC9kb2N1bWVudFwiOjcsXCJ4LWlzLWFycmF5XCI6MjF9XSwyODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gdXBkYXRlV2lkZ2V0XG5cbmZ1bmN0aW9uIHVwZGF0ZVdpZGdldChhLCBiKSB7XG4gICAgaWYgKGlzV2lkZ2V0KGEpICYmIGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmIChcIm5hbWVcIiBpbiBhICYmIFwibmFtZVwiIGluIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmlkID09PSBiLmlkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbml0ID09PSBiLmluaXRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxfV0sMjk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF0dHJpYnV0ZUhvb2s7XG5cbmZ1bmN0aW9uIEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBBdHRyaWJ1dGVIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3AsIHByZXYpIHtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdBdHRyaWJ1dGVIb29rJyAmJlxuICAgICAgICBwcmV2LnZhbHVlID09PSB0aGlzLnZhbHVlICYmXG4gICAgICAgIHByZXYubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyh0aGlzLm5hbWVzcGFjZSwgcHJvcCwgdGhpcy52YWx1ZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgbmV4dCkge1xuICAgIGlmIChuZXh0ICYmIG5leHQudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIG5leHQubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbG9uUG9zaXRpb24gPSBwcm9wLmluZGV4T2YoJzonKTtcbiAgICB2YXIgbG9jYWxOYW1lID0gY29sb25Qb3NpdGlvbiA+IC0xID8gcHJvcC5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpIDogcHJvcDtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBsb2NhbE5hbWUpO1xufTtcblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUudHlwZSA9ICdBdHRyaWJ1dGVIb29rJztcblxufSx7fV0sMzA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZTdG9yZSA9IHJlcXVpcmUoJ2V2LXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRXZIb29rO1xuXG5mdW5jdGlvbiBFdkhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRXZIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEV2SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5Fdkhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdGhpcy52YWx1ZTtcbn07XG5cbkV2SG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24obm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdW5kZWZpbmVkO1xufTtcblxufSx7XCJldi1zdG9yZVwiOjR9XSwzMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gU29mdFNldEhvb2s7XG5cbmZ1bmN0aW9uIFNvZnRTZXRIb29rKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cblNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG59LHt9XSwzMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG52YXIgVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS92bm9kZS5qcycpO1xudmFyIFZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvdnRleHQuanMnKTtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdm5vZGUnKTtcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdnRleHQnKTtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXdpZGdldCcpO1xudmFyIGlzSG9vayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZob29rJyk7XG52YXIgaXNWVGh1bmsgPSByZXF1aXJlKCcuLi92bm9kZS9pcy10aHVuaycpO1xuXG52YXIgcGFyc2VUYWcgPSByZXF1aXJlKCcuL3BhcnNlLXRhZy5qcycpO1xudmFyIHNvZnRTZXRIb29rID0gcmVxdWlyZSgnLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzJyk7XG52YXIgZXZIb29rID0gcmVxdWlyZSgnLi9ob29rcy9ldi1ob29rLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaDtcblxuZnVuY3Rpb24gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbikge1xuICAgIHZhciBjaGlsZE5vZGVzID0gW107XG4gICAgdmFyIHRhZywgcHJvcHMsIGtleSwgbmFtZXNwYWNlO1xuXG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcHMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9wcyA9IHByb3BzIHx8IHByb3BlcnRpZXMgfHwge307XG4gICAgdGFnID0gcGFyc2VUYWcodGFnTmFtZSwgcHJvcHMpO1xuXG4gICAgLy8gc3VwcG9ydCBrZXlzXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCdrZXknKSkge1xuICAgICAgICBrZXkgPSBwcm9wcy5rZXk7XG4gICAgICAgIHByb3BzLmtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0IG5hbWVzcGFjZVxuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnbmFtZXNwYWNlJykpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgICAgICBwcm9wcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gZml4IGN1cnNvciBidWdcbiAgICBpZiAodGFnID09PSAnSU5QVVQnICYmXG4gICAgICAgICFuYW1lc3BhY2UgJiZcbiAgICAgICAgcHJvcHMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiZcbiAgICAgICAgcHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNIb29rKHByb3BzLnZhbHVlKVxuICAgICkge1xuICAgICAgICBwcm9wcy52YWx1ZSA9IHNvZnRTZXRIb29rKHByb3BzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKTtcblxuICAgIGlmIChjaGlsZHJlbiAhPT0gdW5kZWZpbmVkICYmIGNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICAgIGFkZENoaWxkKGNoaWxkcmVuLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICB9XG5cblxuICAgIHJldHVybiBuZXcgVk5vZGUodGFnLCBwcm9wcywgY2hpbGROb2Rlcywga2V5LCBuYW1lc3BhY2UpO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChjLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKSB7XG4gICAgaWYgKHR5cGVvZiBjID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KGMpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjID09PSAnbnVtYmVyJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KFN0cmluZyhjKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNDaGlsZChjKSkge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2goYyk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGMpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRkQ2hpbGQoY1tpXSwgY2hpbGROb2RlcywgdGFnLCBwcm9wcyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgfHwgYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoe1xuICAgICAgICAgICAgZm9yZWlnbk9iamVjdDogYyxcbiAgICAgICAgICAgIHBhcmVudFZub2RlOiB7XG4gICAgICAgICAgICAgICAgdGFnTmFtZTogdGFnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUHJvcGVydGllcyhwcm9wcykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblxuICAgICAgICAgICAgaWYgKGlzSG9vayh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BOYW1lLnN1YnN0cigwLCAzKSA9PT0gJ2V2LScpIHtcbiAgICAgICAgICAgICAgICAvLyBhZGQgZXYtZm9vIHN1cHBvcnRcbiAgICAgICAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBldkhvb2sodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NoaWxkKHgpIHtcbiAgICByZXR1cm4gaXNWTm9kZSh4KSB8fCBpc1ZUZXh0KHgpIHx8IGlzV2lkZ2V0KHgpIHx8IGlzVlRodW5rKHgpO1xufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IGlzQXJyYXkoeCkgfHwgaXNDaGlsZCh4KTtcbn1cblxuZnVuY3Rpb24gVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50KGRhdGEpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG5cbiAgICBlcnIudHlwZSA9ICd2aXJ0dWFsLWh5cGVyc2NyaXB0LnVuZXhwZWN0ZWQudmlydHVhbC1lbGVtZW50JztcbiAgICBlcnIubWVzc2FnZSA9ICdVbmV4cGVjdGVkIHZpcnR1YWwgY2hpbGQgcGFzc2VkIHRvIGgoKS5cXG4nICtcbiAgICAgICAgJ0V4cGVjdGVkIGEgVk5vZGUgLyBWdGh1bmsgLyBWV2lkZ2V0IC8gc3RyaW5nIGJ1dDpcXG4nICtcbiAgICAgICAgJ2dvdDpcXG4nICtcbiAgICAgICAgZXJyb3JTdHJpbmcoZGF0YS5mb3JlaWduT2JqZWN0KSArXG4gICAgICAgICcuXFxuJyArXG4gICAgICAgICdUaGUgcGFyZW50IHZub2RlIGlzOlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLnBhcmVudFZub2RlKVxuICAgICAgICAnXFxuJyArXG4gICAgICAgICdTdWdnZXN0ZWQgZml4OiBjaGFuZ2UgeW91ciBgaCguLi4sIFsgLi4uIF0pYCBjYWxsc2l0ZS4nO1xuICAgIGVyci5mb3JlaWduT2JqZWN0ID0gZGF0YS5mb3JlaWduT2JqZWN0O1xuICAgIGVyci5wYXJlbnRWbm9kZSA9IGRhdGEucGFyZW50Vm5vZGU7XG5cbiAgICByZXR1cm4gZXJyO1xufVxuXG5mdW5jdGlvbiBlcnJvclN0cmluZyhvYmopIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAnICAgICcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhvYmopO1xuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy10aHVua1wiOjM3LFwiLi4vdm5vZGUvaXMtdmhvb2tcIjozOCxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92bm9kZS5qc1wiOjQzLFwiLi4vdm5vZGUvdnRleHQuanNcIjo0NSxcIi4vaG9va3MvZXYtaG9vay5qc1wiOjMwLFwiLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzXCI6MzEsXCIuL3BhcnNlLXRhZy5qc1wiOjMzLFwieC1pcy1hcnJheVwiOjIxfV0sMzM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3BsaXQgPSByZXF1aXJlKCdicm93c2VyLXNwbGl0Jyk7XG5cbnZhciBjbGFzc0lkU3BsaXQgPSAvKFtcXC4jXT9bYS16QS1aMC05XFx1MDA3Ri1cXHVGRkZGXzotXSspLztcbnZhciBub3RDbGFzc0lkID0gL15cXC58Iy87XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VUYWc7XG5cbmZ1bmN0aW9uIHBhcnNlVGFnKHRhZywgcHJvcHMpIHtcbiAgICBpZiAoIXRhZykge1xuICAgICAgICByZXR1cm4gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIG5vSWQgPSAhKHByb3BzLmhhc093blByb3BlcnR5KCdpZCcpKTtcblxuICAgIHZhciB0YWdQYXJ0cyA9IHNwbGl0KHRhZywgY2xhc3NJZFNwbGl0KTtcbiAgICB2YXIgdGFnTmFtZSA9IG51bGw7XG5cbiAgICBpZiAobm90Q2xhc3NJZC50ZXN0KHRhZ1BhcnRzWzFdKSkge1xuICAgICAgICB0YWdOYW1lID0gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIGNsYXNzZXMsIHBhcnQsIHR5cGUsIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgdGFnUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydCA9IHRhZ1BhcnRzW2ldO1xuXG4gICAgICAgIGlmICghcGFydCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlID0gcGFydC5jaGFyQXQoMCk7XG5cbiAgICAgICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgICAgICB0YWdOYW1lID0gcGFydDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnLicpIHtcbiAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJyMnICYmIG5vSWQpIHtcbiAgICAgICAgICAgIHByb3BzLmlkID0gcGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgICAgaWYgKHByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHByb3BzLmNsYXNzTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubmFtZXNwYWNlID8gdGFnTmFtZSA6IHRhZ05hbWUudG9VcHBlckNhc2UoKTtcbn1cblxufSx7XCJicm93c2VyLXNwbGl0XCI6M31dLDM0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIERFRkFVTFRfTkFNRVNQQUNFID0gbnVsbDtcbnZhciBFVl9OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzJztcbnZhciBYTElOS19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG52YXIgWE1MX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnO1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkdUaW55MTIvYXR0cmlidXRlVGFibGUuaHRtbFxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2F0dGluZGV4Lmh0bWxcbnZhciBTVkdfUFJPUEVSVElFUyA9IHtcbiAgICAnYWJvdXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWNjZW50LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2N1bXVsYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FkZGl0aXZlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FsaWdubWVudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbHBoYWJldGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FtcGxpdHVkZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhcmFiaWMtZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhc2NlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXR0cmlidXRlTmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F6aW11dGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFuZHdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VGcmVxdWVuY3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZVByb2ZpbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZWxpbmUtc2hpZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmJveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiZWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiaWFzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhbGNNb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhcC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xhc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXBhdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcC1ydWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXBQYXRoVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItaW50ZXJwb2xhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItcHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U2NyaXB0VHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U3R5bGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N1cnNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RhdGF0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RlZmF1bHRBY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaWZmdXNlQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlyZWN0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rpc3BsYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGl2aXNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkb21pbmFudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRnZU1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRpdGFibGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWxldmF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuYWJsZS1iYWNrZ3JvdW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdldjpldmVudCc6IEVWX05BTUVTUEFDRSxcbiAgICAnZXZlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclJlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzSGlnaGxpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzYWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LWZhbWlseSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zaXplLWFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0cmV0Y2gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zdHlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXZhcmlhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC13ZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9ybWF0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zyb20nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZngnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoUmVmJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGFuZGxlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1hZHYteCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbWFnZS1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luaXRpYWxWaXNpYmlsaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ludGVyY2VwdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2sxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2syJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2szJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2s0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbE1hdHJpeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuZWxVbml0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5pbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5UG9pbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVNwbGluZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5VGltZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGFuZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZW5ndGhBZGp1c3QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGlnaHRpbmctY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGltaXRpbmdDb25lQW5nbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbG9jYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLWVuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItbWlkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1zdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJIZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyV2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFzayc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrQ29udGVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWF4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhQ2hhcmFjdGVyRW5jb2RpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDb250ZW50RW5jb2RpbmdzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhU2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYVRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24tbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbmV4dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcHJldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdudW1PY3RhdmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29ic2VydmVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wZXJhdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmllbnRhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmlnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmZsb3cnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGFub3NlLTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoTGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Db250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVyblRyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGhhc2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGxheWJhY2tPcmRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludGVyLWV2ZW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFonOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJlc2VydmVBbHBoYSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByaW1pdGl2ZVVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BhZ2F0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcm9wZXJ0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JhZGl1cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWZYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlbmRlcmluZy1pbnRlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0Q291bnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0RHVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRXh0ZW5zaW9ucyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZlYXR1cmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRm9udHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb3JtYXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc291cmNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc3RhcnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyb2xlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvdGF0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzZWVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NoYXBlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbG9wZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbmFwc2hvdFRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGVjdWxhckNvbnN0YW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyRXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3ByZWFkTWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0YXJ0T2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZERldmlhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtdic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGl0Y2hUaWxlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdG9wLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3Atb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaG9mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWNhcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWpvaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW1pdGVybGltaXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLXdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N1cmZhY2VTY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY0JlaGF2aW9yRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jTWFzdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNUb2xlcmFuY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZURlZmF1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3lzdGVtTGFuZ3VhZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFibGVWYWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWFuY2hvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWRlY29yYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0aW1lbGluZUJlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpdGxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0cmFuc2Zvcm1CZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGVvZic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5kZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtYmlkaSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlLXJhbmdlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaXRzLXBlci1lbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWFscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1oYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtaWRlb2dyYXBoaWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1tYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmFsdWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnNpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1hZHYteSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlld0JveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3VGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Zpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGhzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dvcmQtc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3cml0aW5nLW1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFjdHVhdGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFyY3JvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmhyZWYnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnJvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnNob3cnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnRpdGxlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazp0eXBlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bWw6YmFzZSc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDppZCc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDpsYW5nJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOnNwYWNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3onOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnem9vbUFuZFBhbic6IERFRkFVTFRfTkFNRVNQQUNFXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZTtcblxuZnVuY3Rpb24gU1ZHQXR0cmlidXRlTmFtZXNwYWNlKHZhbHVlKSB7XG4gIGlmIChTVkdfUFJPUEVSVElFUy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU1ZHX1BST1BFUlRJRVNbdmFsdWVdO1xuICB9XG59XG5cbn0se31dLDM1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBoID0gcmVxdWlyZSgnLi9pbmRleC5qcycpO1xuXG5cbnZhciBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UgPSByZXF1aXJlKCcuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlJyk7XG52YXIgYXR0cmlidXRlSG9vayA9IHJlcXVpcmUoJy4vaG9va3MvYXR0cmlidXRlLWhvb2snKTtcblxudmFyIFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2ZztcblxuZnVuY3Rpb24gc3ZnKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcGVydGllcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgLy8gc2V0IG5hbWVzcGFjZSBmb3Igc3ZnXG4gICAgcHJvcGVydGllcy5uYW1lc3BhY2UgPSBTVkdfTkFNRVNQQUNFO1xuXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBwcm9wZXJ0aWVzLmF0dHJpYnV0ZXMgfHwgKHByb3BlcnRpZXMuYXR0cmlidXRlcyA9IHt9KTtcblxuICAgIGZvciAodmFyIGtleSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmICghcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBTVkdBdHRyaWJ1dGVOYW1lc3BhY2Uoa2V5KTtcblxuICAgICAgICBpZiAobmFtZXNwYWNlID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGEgc3ZnIGF0dHJpYnV0ZVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmFtZXNwYWNlICE9PSBudWxsKSB7IC8vIG5hbWVzcGFjZWQgYXR0cmlidXRlXG4gICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSBhdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSB2YWx1ZVxuICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbik7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KTtcbn1cblxufSx7XCIuL2hvb2tzL2F0dHJpYnV0ZS1ob29rXCI6MjksXCIuL2luZGV4LmpzXCI6MzIsXCIuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlXCI6MzQsXCJ4LWlzLWFycmF5XCI6MjF9XSwzNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuL2lzLXZ0ZXh0XCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcblxubW9kdWxlLmV4cG9ydHMgPSBoYW5kbGVUaHVua1xuXG5mdW5jdGlvbiBoYW5kbGVUaHVuayhhLCBiKSB7XG4gICAgdmFyIHJlbmRlcmVkQSA9IGFcbiAgICB2YXIgcmVuZGVyZWRCID0gYlxuXG4gICAgaWYgKGlzVGh1bmsoYikpIHtcbiAgICAgICAgcmVuZGVyZWRCID0gcmVuZGVyVGh1bmsoYiwgYSlcbiAgICB9XG5cbiAgICBpZiAoaXNUaHVuayhhKSkge1xuICAgICAgICByZW5kZXJlZEEgPSByZW5kZXJUaHVuayhhLCBudWxsKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGE6IHJlbmRlcmVkQSxcbiAgICAgICAgYjogcmVuZGVyZWRCXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJUaHVuayh0aHVuaywgcHJldmlvdXMpIHtcbiAgICB2YXIgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlXG5cbiAgICBpZiAoIXJlbmRlcmVkVGh1bmspIHtcbiAgICAgICAgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlID0gdGh1bmsucmVuZGVyKHByZXZpb3VzKVxuICAgIH1cblxuICAgIGlmICghKGlzVk5vZGUocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzVlRleHQocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzV2lkZ2V0KHJlbmRlcmVkVGh1bmspKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aHVuayBkaWQgbm90IHJldHVybiBhIHZhbGlkIG5vZGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlcmVkVGh1bmtcbn1cblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXZ0ZXh0XCI6NDAsXCIuL2lzLXdpZGdldFwiOjQxfV0sMzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1RodW5rXHJcblxyXG5mdW5jdGlvbiBpc1RodW5rKHQpIHtcclxuICAgIHJldHVybiB0ICYmIHQudHlwZSA9PT0gXCJUaHVua1wiXHJcbn1cclxuXG59LHt9XSwzODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzSG9va1xuXG5mdW5jdGlvbiBpc0hvb2soaG9vaykge1xuICAgIHJldHVybiBob29rICYmXG4gICAgICAodHlwZW9mIGhvb2suaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwiaG9va1wiKSB8fFxuICAgICAgIHR5cGVvZiBob29rLnVuaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwidW5ob29rXCIpKVxufVxuXG59LHt9XSwzOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxOb2RlXG5cbmZ1bmN0aW9uIGlzVmlydHVhbE5vZGUoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsTm9kZVwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaXNWaXJ0dWFsVGV4dFxuXG5mdW5jdGlvbiBpc1ZpcnR1YWxUZXh0KHgpIHtcbiAgICByZXR1cm4geCAmJiB4LnR5cGUgPT09IFwiVmlydHVhbFRleHRcIiAmJiB4LnZlcnNpb24gPT09IHZlcnNpb25cbn1cblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNXaWRnZXRcblxuZnVuY3Rpb24gaXNXaWRnZXQodykge1xuICAgIHJldHVybiB3ICYmIHcudHlwZSA9PT0gXCJXaWRnZXRcIlxufVxuXG59LHt9XSw0MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IFwiMlwiXG5cbn0se31dLDQzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi9pcy12bm9kZVwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4vaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuL2lzLXRodW5rXCIpXG52YXIgaXNWSG9vayA9IHJlcXVpcmUoXCIuL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbE5vZGVcblxudmFyIG5vUHJvcGVydGllcyA9IHt9XG52YXIgbm9DaGlsZHJlbiA9IFtdXG5cbmZ1bmN0aW9uIFZpcnR1YWxOb2RlKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuLCBrZXksIG5hbWVzcGFjZSkge1xuICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWVcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IG5vUHJvcGVydGllc1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBub0NoaWxkcmVuXG4gICAgdGhpcy5rZXkgPSBrZXkgIT0gbnVsbCA/IFN0cmluZyhrZXkpIDogdW5kZWZpbmVkXG4gICAgdGhpcy5uYW1lc3BhY2UgPSAodHlwZW9mIG5hbWVzcGFjZSA9PT0gXCJzdHJpbmdcIikgPyBuYW1lc3BhY2UgOiBudWxsXG5cbiAgICB2YXIgY291bnQgPSAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB8fCAwXG4gICAgdmFyIGRlc2NlbmRhbnRzID0gMFxuICAgIHZhciBoYXNXaWRnZXRzID0gZmFsc2VcbiAgICB2YXIgaGFzVGh1bmtzID0gZmFsc2VcbiAgICB2YXIgZGVzY2VuZGFudEhvb2tzID0gZmFsc2VcbiAgICB2YXIgaG9va3NcblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3Byb3BOYW1lXVxuICAgICAgICAgICAgaWYgKGlzVkhvb2socHJvcGVydHkpICYmIHByb3BlcnR5LnVuaG9vaykge1xuICAgICAgICAgICAgICAgIGlmICghaG9va3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MgPSB7fVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGhvb2tzW3Byb3BOYW1lXSA9IHByb3BlcnR5XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpKSB7XG4gICAgICAgICAgICBkZXNjZW5kYW50cyArPSBjaGlsZC5jb3VudCB8fCAwXG5cbiAgICAgICAgICAgIGlmICghaGFzV2lkZ2V0cyAmJiBjaGlsZC5oYXNXaWRnZXRzKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNUaHVua3MgJiYgY2hpbGQuaGFzVGh1bmtzKSB7XG4gICAgICAgICAgICAgICAgaGFzVGh1bmtzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWRlc2NlbmRhbnRIb29rcyAmJiAoY2hpbGQuaG9va3MgfHwgY2hpbGQuZGVzY2VuZGFudEhvb2tzKSkge1xuICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRIb29rcyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzV2lkZ2V0cyAmJiBpc1dpZGdldChjaGlsZCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzVGh1bmtzICYmIGlzVGh1bmsoY2hpbGQpKSB7XG4gICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudCA9IGNvdW50ICsgZGVzY2VuZGFudHNcbiAgICB0aGlzLmhhc1dpZGdldHMgPSBoYXNXaWRnZXRzXG4gICAgdGhpcy5oYXNUaHVua3MgPSBoYXNUaHVua3NcbiAgICB0aGlzLmhvb2tzID0gaG9va3NcbiAgICB0aGlzLmRlc2NlbmRhbnRIb29rcyA9IGRlc2NlbmRhbnRIb29rc1xufVxuXG5WaXJ0dWFsTm9kZS5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxOb2RlLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsTm9kZVwiXG5cbn0se1wiLi9pcy10aHVua1wiOjM3LFwiLi9pcy12aG9va1wiOjM4LFwiLi9pcy12bm9kZVwiOjM5LFwiLi9pcy13aWRnZXRcIjo0MSxcIi4vdmVyc2lvblwiOjQyfV0sNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cblZpcnR1YWxQYXRjaC5OT05FID0gMFxuVmlydHVhbFBhdGNoLlZURVhUID0gMVxuVmlydHVhbFBhdGNoLlZOT0RFID0gMlxuVmlydHVhbFBhdGNoLldJREdFVCA9IDNcblZpcnR1YWxQYXRjaC5QUk9QUyA9IDRcblZpcnR1YWxQYXRjaC5PUkRFUiA9IDVcblZpcnR1YWxQYXRjaC5JTlNFUlQgPSA2XG5WaXJ0dWFsUGF0Y2guUkVNT1ZFID0gN1xuVmlydHVhbFBhdGNoLlRIVU5LID0gOFxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxQYXRjaFxuXG5mdW5jdGlvbiBWaXJ0dWFsUGF0Y2godHlwZSwgdk5vZGUsIHBhdGNoKSB7XG4gICAgdGhpcy50eXBlID0gTnVtYmVyKHR5cGUpXG4gICAgdGhpcy52Tm9kZSA9IHZOb2RlXG4gICAgdGhpcy5wYXRjaCA9IHBhdGNoXG59XG5cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFBhdGNoXCJcblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIFZpcnR1YWxUZXh0KHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSBTdHJpbmcodGV4dClcbn1cblxuVmlydHVhbFRleHQucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFRleHRcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZShcImlzLW9iamVjdFwiKVxudmFyIGlzSG9vayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12aG9va1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZQcm9wc1xuXG5mdW5jdGlvbiBkaWZmUHJvcHMoYSwgYikge1xuICAgIHZhciBkaWZmXG5cbiAgICBmb3IgKHZhciBhS2V5IGluIGEpIHtcbiAgICAgICAgaWYgKCEoYUtleSBpbiBiKSkge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhVmFsdWUgPSBhW2FLZXldXG4gICAgICAgIHZhciBiVmFsdWUgPSBiW2FLZXldXG5cbiAgICAgICAgaWYgKGFWYWx1ZSA9PT0gYlZhbHVlKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGFWYWx1ZSkgJiYgaXNPYmplY3QoYlZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZShiVmFsdWUpICE9PSBnZXRQcm90b3R5cGUoYVZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hvb2soYlZhbHVlKSkge1xuICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBvYmplY3REaWZmID0gZGlmZlByb3BzKGFWYWx1ZSwgYlZhbHVlKVxuICAgICAgICAgICAgICAgIGlmIChvYmplY3REaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBvYmplY3REaWZmXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGJLZXkgaW4gYikge1xuICAgICAgICBpZiAoIShiS2V5IGluIGEpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZltiS2V5XSA9IGJbYktleV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaWZmXG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgfSBlbHNlIGlmICh2YWx1ZS5fX3Byb3RvX18pIHtcbiAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gIH0gZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiaXMtb2JqZWN0XCI6MjB9XSw0NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciBWUGF0Y2ggPSByZXF1aXJlKFwiLi4vdm5vZGUvdnBhdGNoXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZVwiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXRodW5rXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rXCIpXG5cbnZhciBkaWZmUHJvcHMgPSByZXF1aXJlKFwiLi9kaWZmLXByb3BzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG5mdW5jdGlvbiBkaWZmKGEsIGIpIHtcbiAgICB2YXIgcGF0Y2ggPSB7IGE6IGEgfVxuICAgIHdhbGsoYSwgYiwgcGF0Y2gsIDApXG4gICAgcmV0dXJuIHBhdGNoXG59XG5cbmZ1bmN0aW9uIHdhbGsoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgdmFyIGFwcGx5Q2xlYXIgPSBmYWxzZVxuXG4gICAgaWYgKGlzVGh1bmsoYSkgfHwgaXNUaHVuayhiKSkge1xuICAgICAgICB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KVxuICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG5cbiAgICAgICAgLy8gSWYgYSBpcyBhIHdpZGdldCB3ZSB3aWxsIGFkZCBhIHJlbW92ZSBwYXRjaCBmb3IgaXRcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFueSBjaGlsZCB3aWRnZXRzL2hvb2tzIG11c3QgYmUgZGVzdHJveWVkLlxuICAgICAgICAvLyBUaGlzIHByZXZlbnRzIGFkZGluZyB0d28gcmVtb3ZlIHBhdGNoZXMgZm9yIGEgd2lkZ2V0LlxuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICAgICAgICAgIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIGEsIGIpKVxuICAgIH0gZWxzZSBpZiAoaXNWTm9kZShiKSkge1xuICAgICAgICBpZiAoaXNWTm9kZShhKSkge1xuICAgICAgICAgICAgaWYgKGEudGFnTmFtZSA9PT0gYi50YWdOYW1lICYmXG4gICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgPT09IGIubmFtZXNwYWNlICYmXG4gICAgICAgICAgICAgICAgYS5rZXkgPT09IGIua2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzUGF0Y2ggPSBkaWZmUHJvcHMoYS5wcm9wZXJ0aWVzLCBiLnByb3BlcnRpZXMpXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzUGF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlBST1BTLCBhLCBwcm9wc1BhdGNoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBkaWZmQ2hpbGRyZW4oYSwgYiwgcGF0Y2gsIGFwcGx5LCBpbmRleClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVk5PREUsIGEsIGIpKVxuICAgICAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZUZXh0KGIpKSB7XG4gICAgICAgIGlmICghaXNWVGV4dChhKSkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChhLnRleHQgIT09IGIudGV4dCkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpZGdldChiKSkge1xuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guV0lER0VULCBhLCBiKSlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwbHlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHlDbGVhcikge1xuICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KSB7XG4gICAgdmFyIGFDaGlsZHJlbiA9IGEuY2hpbGRyZW5cbiAgICB2YXIgb3JkZXJlZFNldCA9IHJlb3JkZXIoYUNoaWxkcmVuLCBiLmNoaWxkcmVuKVxuICAgIHZhciBiQ2hpbGRyZW4gPSBvcmRlcmVkU2V0LmNoaWxkcmVuXG5cbiAgICB2YXIgYUxlbiA9IGFDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgYkxlbiA9IGJDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgbGVuID0gYUxlbiA+IGJMZW4gPyBhTGVuIDogYkxlblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgbGVmdE5vZGUgPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIHJpZ2h0Tm9kZSA9IGJDaGlsZHJlbltpXVxuICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgaWYgKCFsZWZ0Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHJpZ2h0Tm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIEV4Y2VzcyBub2RlcyBpbiBiIG5lZWQgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5JTlNFUlQsIG51bGwsIHJpZ2h0Tm9kZSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3YWxrKGxlZnROb2RlLCByaWdodE5vZGUsIHBhdGNoLCBpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1ZOb2RlKGxlZnROb2RlKSAmJiBsZWZ0Tm9kZS5jb3VudCkge1xuICAgICAgICAgICAgaW5kZXggKz0gbGVmdE5vZGUuY291bnRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcmRlcmVkU2V0Lm1vdmVzKSB7XG4gICAgICAgIC8vIFJlb3JkZXIgbm9kZXMgbGFzdFxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFxuICAgICAgICAgICAgVlBhdGNoLk9SREVSLFxuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIG9yZGVyZWRTZXQubW92ZXNcbiAgICAgICAgKSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlcbn1cblxuZnVuY3Rpb24gY2xlYXJTdGF0ZSh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIGEgc2luZ2xlIHdhbGssIG5vdCB0d29cbiAgICB1bmhvb2sodk5vZGUsIHBhdGNoLCBpbmRleClcbiAgICBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxufVxuXG4vLyBQYXRjaCByZWNvcmRzIGZvciBhbGwgZGVzdHJveWVkIHdpZGdldHMgbXVzdCBiZSBhZGRlZCBiZWNhdXNlIHdlIG5lZWRcbi8vIGEgRE9NIG5vZGUgcmVmZXJlbmNlIGZvciB0aGUgZGVzdHJveSBmdW5jdGlvblxuZnVuY3Rpb24gZGVzdHJveVdpZGdldHModk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChpc1dpZGdldCh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2Tm9kZS5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGVuZFBhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGNoW2luZGV4XSxcbiAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIHZOb2RlLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKHZOb2RlKSAmJiAodk5vZGUuaGFzV2lkZ2V0cyB8fCB2Tm9kZS5oYXNUaHVua3MpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgZGVzdHJveVdpZGdldHMoY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgaW5kZXggKz0gY2hpbGQuY291bnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG4vLyBDcmVhdGUgYSBzdWItcGF0Y2ggZm9yIHRodW5rc1xuZnVuY3Rpb24gdGh1bmtzKGEsIGIsIHBhdGNoLCBpbmRleCkge1xuICAgIHZhciBub2RlcyA9IGhhbmRsZVRodW5rKGEsIGIpXG4gICAgdmFyIHRodW5rUGF0Y2ggPSBkaWZmKG5vZGVzLmEsIG5vZGVzLmIpXG4gICAgaWYgKGhhc1BhdGNoZXModGh1bmtQYXRjaCkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gbmV3IFZQYXRjaChWUGF0Y2guVEhVTkssIG51bGwsIHRodW5rUGF0Y2gpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBoYXNQYXRjaGVzKHBhdGNoKSB7XG4gICAgZm9yICh2YXIgaW5kZXggaW4gcGF0Y2gpIHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBcImFcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG4vLyBFeGVjdXRlIGhvb2tzIHdoZW4gdHdvIG5vZGVzIGFyZSBpZGVudGljYWxcbmZ1bmN0aW9uIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzVk5vZGUodk5vZGUpKSB7XG4gICAgICAgIGlmICh2Tm9kZS5ob29rcykge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICAgICAgICAgIFZQYXRjaC5QUk9QUyxcbiAgICAgICAgICAgICAgICAgICAgdk5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZEtleXModk5vZGUuaG9va3MpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZOb2RlLmRlc2NlbmRhbnRIb29rcyB8fCB2Tm9kZS5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgICAgICAgICB1bmhvb2soY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSAmJiBjaGlsZC5jb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiB1bmRlZmluZWRLZXlzKG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fVxuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICByZXN1bHRba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cblxuLy8gTGlzdCBkaWZmLCBuYWl2ZSBsZWZ0IHRvIHJpZ2h0IHJlb3JkZXJpbmdcbmZ1bmN0aW9uIHJlb3JkZXIoYUNoaWxkcmVuLCBiQ2hpbGRyZW4pIHtcbiAgICAvLyBPKE0pIHRpbWUsIE8oTSkgbWVtb3J5XG4gICAgdmFyIGJDaGlsZEluZGV4ID0ga2V5SW5kZXgoYkNoaWxkcmVuKVxuICAgIHZhciBiS2V5cyA9IGJDaGlsZEluZGV4LmtleXNcbiAgICB2YXIgYkZyZWUgPSBiQ2hpbGRJbmRleC5mcmVlXG5cbiAgICBpZiAoYkZyZWUubGVuZ3RoID09PSBiQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogYkNoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE8oTikgdGltZSwgTyhOKSBtZW1vcnlcbiAgICB2YXIgYUNoaWxkSW5kZXggPSBrZXlJbmRleChhQ2hpbGRyZW4pXG4gICAgdmFyIGFLZXlzID0gYUNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBhRnJlZSA9IGFDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChhRnJlZS5sZW5ndGggPT09IGFDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhNQVgoTiwgTSkpIG1lbW9yeVxuICAgIHZhciBuZXdDaGlsZHJlbiA9IFtdXG5cbiAgICB2YXIgZnJlZUluZGV4ID0gMFxuICAgIHZhciBmcmVlQ291bnQgPSBiRnJlZS5sZW5ndGhcbiAgICB2YXIgZGVsZXRlZEl0ZW1zID0gMFxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGEgYW5kIG1hdGNoIGEgbm9kZSBpbiBiXG4gICAgLy8gTyhOKSB0aW1lLFxuICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IGFDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYUl0ZW0gPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIGl0ZW1JbmRleFxuXG4gICAgICAgIGlmIChhSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmIChiS2V5cy5oYXNPd25Qcm9wZXJ0eShhSXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gTWF0Y2ggdXAgdGhlIG9sZCBrZXlzXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYktleXNbYUl0ZW0ua2V5XVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9sZCBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGkgLSBkZWxldGVkSXRlbXMrK1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE1hdGNoIHRoZSBpdGVtIGluIGEgd2l0aCB0aGUgbmV4dCBmcmVlIGl0ZW0gaW4gYlxuICAgICAgICAgICAgaWYgKGZyZWVJbmRleCA8IGZyZWVDb3VudCkge1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGJGcmVlW2ZyZWVJbmRleCsrXVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBmcmVlIGl0ZW1zIGluIGIgdG8gbWF0Y2ggd2l0aFxuICAgICAgICAgICAgICAgIC8vIHRoZSBmcmVlIGl0ZW1zIGluIGEsIHNvIHRoZSBleHRyYSBmcmVlIG5vZGVzXG4gICAgICAgICAgICAgICAgLy8gYXJlIGRlbGV0ZWQuXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhc3RGcmVlSW5kZXggPSBmcmVlSW5kZXggPj0gYkZyZWUubGVuZ3RoID9cbiAgICAgICAgYkNoaWxkcmVuLmxlbmd0aCA6XG4gICAgICAgIGJGcmVlW2ZyZWVJbmRleF1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBiIGFuZCBhcHBlbmQgYW55IG5ldyBrZXlzXG4gICAgLy8gTyhNKSB0aW1lXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBiQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5ld0l0ZW0gPSBiQ2hpbGRyZW5bal1cblxuICAgICAgICBpZiAobmV3SXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmICghYUtleXMuaGFzT3duUHJvcGVydHkobmV3SXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gQWRkIGFueSBuZXcga2V5ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYWRkaW5nIG5ldyBpdGVtcyB0byB0aGUgZW5kIGFuZCB0aGVuIHNvcnRpbmcgdGhlbVxuICAgICAgICAgICAgICAgIC8vIGluIHBsYWNlLiBJbiBmdXR1cmUgd2Ugc2hvdWxkIGluc2VydCBuZXcgaXRlbXMgaW4gcGxhY2UuXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGogPj0gbGFzdEZyZWVJbmRleCkge1xuICAgICAgICAgICAgLy8gQWRkIGFueSBsZWZ0b3ZlciBub24ta2V5ZWQgaXRlbXNcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobmV3SXRlbSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaW11bGF0ZSA9IG5ld0NoaWxkcmVuLnNsaWNlKClcbiAgICB2YXIgc2ltdWxhdGVJbmRleCA9IDBcbiAgICB2YXIgcmVtb3ZlcyA9IFtdXG4gICAgdmFyIGluc2VydHMgPSBbXVxuICAgIHZhciBzaW11bGF0ZUl0ZW1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYkNoaWxkcmVuLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHdhbnRlZEl0ZW0gPSBiQ2hpbGRyZW5ba11cbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cblxuICAgICAgICAvLyByZW1vdmUgaXRlbXNcbiAgICAgICAgd2hpbGUgKHNpbXVsYXRlSXRlbSA9PT0gbnVsbCAmJiBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIG51bGwpKVxuICAgICAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAvLyBpZiB3ZSBuZWVkIGEga2V5IGluIHRoaXMgcG9zaXRpb24uLi5cbiAgICAgICAgICAgIGlmICh3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIGlmIChzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbiBpbnNlcnQgZG9lc24ndCBwdXQgdGhpcyBrZXkgaW4gcGxhY2UsIGl0IG5lZWRzIHRvIG1vdmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJLZXlzW3NpbXVsYXRlSXRlbS5rZXldICE9PSBrICsgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJlbW92ZSBkaWRuJ3QgcHV0IHRoZSB3YW50ZWQgaXRlbSBpbiBwbGFjZSwgd2UgbmVlZCB0byBpbnNlcnQgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVtcyBhcmUgbWF0Y2hpbmcsIHNvIHNraXAgYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBrKytcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGEga2V5IGluIHNpbXVsYXRlIGhhcyBubyBtYXRjaGluZyB3YW50ZWQga2V5LCByZW1vdmUgaXRcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaW11bGF0ZUluZGV4KytcbiAgICAgICAgICAgIGsrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGFsbCB0aGUgcmVtYWluaW5nIG5vZGVzIGZyb20gc2ltdWxhdGVcbiAgICB3aGlsZShzaW11bGF0ZUluZGV4IDwgc2ltdWxhdGUubGVuZ3RoKSB7XG4gICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBtb3ZlcyB3ZSBoYXZlIGFyZSBkZWxldGVzIHRoZW4gd2UgY2FuIGp1c3RcbiAgICAvLyBsZXQgdGhlIGRlbGV0ZSBwYXRjaCByZW1vdmUgdGhlc2UgaXRlbXMuXG4gICAgaWYgKHJlbW92ZXMubGVuZ3RoID09PSBkZWxldGVkSXRlbXMgJiYgIWluc2VydHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW46IG5ld0NoaWxkcmVuLFxuICAgICAgICBtb3Zlczoge1xuICAgICAgICAgICAgcmVtb3ZlczogcmVtb3ZlcyxcbiAgICAgICAgICAgIGluc2VydHM6IGluc2VydHNcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlKGFyciwgaW5kZXgsIGtleSkge1xuICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBpbmRleCxcbiAgICAgICAga2V5OiBrZXlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGtleUluZGV4KGNoaWxkcmVuKSB7XG4gICAgdmFyIGtleXMgPSB7fVxuICAgIHZhciBmcmVlID0gW11cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG5cbiAgICAgICAgaWYgKGNoaWxkLmtleSkge1xuICAgICAgICAgICAga2V5c1tjaGlsZC5rZXldID0gaVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJlZS5wdXNoKGkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXlzOiBrZXlzLCAgICAgLy8gQSBoYXNoIG9mIGtleSBuYW1lIHRvIGluZGV4XG4gICAgICAgIGZyZWU6IGZyZWUgICAgICAvLyBBbiBhcnJheSBvZiB1bmtleWVkIGl0ZW0gaW5kaWNlc1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYXBwZW5kUGF0Y2goYXBwbHksIHBhdGNoKSB7XG4gICAgaWYgKGFwcGx5KSB7XG4gICAgICAgIGlmIChpc0FycmF5KGFwcGx5KSkge1xuICAgICAgICAgICAgYXBwbHkucHVzaChwYXRjaClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gW2FwcGx5LCBwYXRjaF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcHBseVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRjaFxuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIjozNixcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12bm9kZVwiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHRcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldFwiOjQxLFwiLi4vdm5vZGUvdnBhdGNoXCI6NDQsXCIuL2RpZmYtcHJvcHNcIjo0NixcIngtaXMtYXJyYXlcIjoyMX1dLDQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbnZhciB2ZG9tID0ge1xuICBWTm9kZTogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdm5vZGUnKSxcbiAgVlRleHQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0JyksXG4gIGRpZmY6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2RpZmYnKSxcbiAgcGF0Y2g6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3BhdGNoJyksXG4gIGNyZWF0ZUVsZW1lbnQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2NyZWF0ZS1lbGVtZW50JyksXG4gIHN2ZzogcmVxdWlyZShcInZpcnR1YWwtZG9tL3ZpcnR1YWwtaHlwZXJzY3JpcHQvc3ZnXCIpLFxufTtcblxuZ2xvYmFsLlZpcnR1YWxEb20gPSB2ZG9tO1xubW9kdWxlLmV4cG9ydHMgPSB2ZG9tO1xuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1widmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnRcIjoxLFwidmlydHVhbC1kb20vZGlmZlwiOjIsXCJ2aXJ0dWFsLWRvbS9wYXRjaFwiOjIyLFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIjozNSxcInZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlXCI6NDMsXCJ2aXJ0dWFsLWRvbS92bm9kZS92dGV4dFwiOjQ1fV19LHt9LFs0OF0pKDQ4KVxufSk7XG4iLCIvLyBVc2VkIGJ5IHdvcmthcm91bmQgZm9yIGlucHV0IGVsZW1lbnQgdmFsdWUgZmllbGRcbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaG9va3Mvc29mdC1zZXQtaG9vay5qc1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vayA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICBpZiAobm9kZVtwcm9wZXJ0eU5hbWVdICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGVbcHJvcGVydHlOYW1lXSA9IHRoaXMudmFsdWU7XG4gICAgfVxufTtcblxuXG52YXIgR2VuZXJpY0hvb2sgPSBmdW5jdGlvbiAoaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR2VuZXJpY0hvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0hvb2soaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdCA9IGluaXQ7XG4gICAgdGhpcy51cGRhdGUgPSB1cGRhdGU7XG4gICAgdGhpcy5kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5leHRyYSA9IGV4dHJhO1xufTtcblxudmFyIGhvb2tfc3RhdGVfa2V5ID0gXCJ2ZG9tX2hvb2tfc3RhdGVfa2V5XCI7XG5cbmlmICh0aGlzLlN5bWJvbCkge1xuICAgIGhvb2tfc3RhdGVfa2V5ID0gU3ltYm9sKGhvb2tfc3RhdGVfa2V5KTtcbn1cblxuR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHN0YXRlKSB7XG4gICAgaWYgKCFub2RlW2hvb2tfc3RhdGVfa2V5XSkge1xuICAgICAgICBub2RlW2hvb2tfc3RhdGVfa2V5XSA9IHt9O1xuICAgIH1cbiAgICBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV0gPSBzdGF0ZTtcbn1cblxuR2VuZXJpY0hvb2sucmVhZF9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIHJldHVybiBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIGRlbGV0ZSBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24gPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICByZXR1cm4gZnJvbSBpbnN0YW5jZW9mIHRoaXMgJiYgdG8gaW5zdGFuY2VvZiB0aGlzICYmIGZyb20uaWQgPT09IHRvLmlkICYmIHRvLnVwZGF0ZTtcbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBwcmV2KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24ocHJldiwgdGhpcykpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHN0YXRlID0gdGhpcy51cGRhdGUoc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuaW5pdChub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUobm9kZSwgcHJvcE5hbWUsIHN0YXRlKTtcbiAgICB9XG59O1xuXG5HZW5lcmljSG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBuZXh0KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24odGhpcywgbmV4dCkpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZywgdGhlIGltcGVuZGluZyBbaG9va10gd2lsbCBoYW5kbGUgdGhlIGNhbGwgdG8gdXBkYXRlLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IEdlbmVyaWNIb29rLnJlYWRfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3koc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay5yZW1vdmVfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgIH1cbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LkdlbmVyaWNIb29rID0gR2VuZXJpY0hvb2s7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICB2YXIgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgaWYobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCeXRlcy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsMCxhLmxlbmd0aCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5IChhKSB7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIGEgPSBuZXcgVWludDhBcnJheShhKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL0FsaWFzOiBjYW1sX2ZpbGxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7XG4gIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGlmICgoaTIgPT0gMCkgJiZcbiAgICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbGVuID49IHMyLmMubGVuZ3RoKSkpIHtcbiAgICBzMi5jID0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgaTIgPT0gczIuYy5sZW5ndGgpIHtcbiAgICBzMi5jICs9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzMik7XG4gICAgdmFyIGMxID0gczEuYywgYzIgPSBzMi5jO1xuICAgIGlmIChzMS50ID09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbCA9IE1hdGgubWluIChsZW4sIGMxLmxlbmd0aCAtIGkxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYmxpdF9zdHJpbmcoYSxiLGMsZCxlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSxiLGMsZCxlKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19sZW5ndGggY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpIHsgcmV0dXJuIHMubCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHgpIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWcsIGFyZ10pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZ10uY29uY2F0KGFyZ3MpKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciBnID0gZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSk7XG4gICAgaWYodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGc7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZyxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKSB7XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbiAtIDFdO1xuICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIG4pO1xuICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gayhnKTtcbiAgICAgIHZhciBhcmdzID0gcmVzdC5zbGljZSgpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdID0gaztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3MpOyB9O1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NMZW4tLTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSwgeil7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDJdID0gejtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIGV4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrIClcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQgKyAxO1xuICAgIHJldHVybiBrKGcpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnVpbGRfc3ltYm9scyh0b2MpIHtcbiAgdmFyIHN5bWI7XG4gIHdoaWxlKHRvYykge1xuICAgIGlmKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHRvY1sxXVsxXSkgPT0gXCJTWUpTXCIpIHtcbiAgICAgIHN5bWIgPSB0b2NbMV1bMl07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZWxzZSB0b2MgPSB0b2NbMl1cbiAgfVxuICB2YXIgciA9IHt9O1xuICBpZihzeW1iKSB7XG4gICAgZm9yKHZhciBpID0gMTsgaSA8IHN5bWIubGVuZ3RoOyBpKyspe1xuICAgICAgcltjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzeW1iW2ldWzFdKV0gPSBzeW1iW2ldWzJdXG4gICAgfVxuICB9XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9jYWxsYmFjaywgY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZihnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MpIHtcbiAgICAgIG4gPSBjYW1sX2NhbGxiYWNrKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYywgW25hbWVdKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2FtbF9nbG9iYWxfZGF0YS50b2MpIHtcbiAgICAgIGlmKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpIHtcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEudG9jKVxuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9sc1tuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICBpZihnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KVxuICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uLCBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGNhbWxfY2FsbGJhY2soaGFuZGxlciwgW2VycixmYWxzZV0pO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9IGVsc2UgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XG4gICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2ludDMyIGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfdG9fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX3RvX2ludDMyKHgpIHsgcmV0dXJuIHh8MDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc3RyaWN0X2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IGYudXBwZXJjYXNlP1wiMFhcIjpcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvKlxuVG8gZGVhbCB3aXRoIGVmZmVjdHMsIHRoZSBleGVjdXRpb24gY29udGV4dCBpcyBpbnR1aXRpdmVseSBjb21wb3NlZCBvZlxuYSBzdGFjayBvZiBmaWJlcnMuIEVhY2ggZmliZXIgaGFzIGEgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4ob25lLWFyZ3VtZW50IEphdmFTY3JpcHQgZnVuY3Rpb24pLCBhIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmRcbmEgdHJpcGxlIG9mIGhhbmRsZXJzLCB3aGljaCBhcmUgaW52b2tlZCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzXG4oZWl0aGVyIHdpdGggYSB2YWx1ZSBvciBhbiBleGNlcHRpb24pIG9yIHdoZW4gYW4gZWZmZWN0IGlzIHBlcmZvcm1lZC5cblRoZSBsb3ctbGV2ZWwgY29udGludWF0aW9uIG9mIHRoZSB0b3Btb3N0IGZpYmVyICh3aGljaCBpcyBjdXJyZW50bHlcbmV4ZWN1dGluZykgaXMgcGFzc2VkIGZyb20gZnVuY3Rpb24gdG8gZnVuY3Rpb24gYXMgYW4gYWRkaXRpb25hbFxuYXJndW1lbnQuIEl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgaXMgc3RvcmVkIGluXG5bY2FtbF9leG5fc3RhY2tdLiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlIHB1c2hlZCBpbnRvIHRoaXMgc3RhY2sgd2hlblxuZW50ZXJpbmcgYSBbdHJ5IC4uLiB3aXRoIC4uLl0gYW5kIHBvcHBlZCBvbiBleGl0LiBUaGVuLCBoYW5kbGVycyBhbmRcbnRoZSByZW1haW5pbmcgZmliZXJzIGFyZSBzdG9yZWQgaW4gW2NhbWxfZmliZXJfc3RhY2tdLiBUbyBpbnN0YWxsIGFuXG5lZmZlY3QgaGFuZGxlciwgd2UgcHVzaCBhIG5ldyBmaWJlciBpbnRvIHRoZSBleGVjdXRpb24gY29udGV4dC5cblxuV2UgaGF2ZSBiYXNpY2FsbHkgdGhlIGZvbGxvd2luZyB0eXBlIGZvciByZWlmaWVkIGNvbnRpbnVhdGlvbnMgKHR5cGVcbltjb250aW51YXRpb25dIGluIG1vZHVsZSBbRWZmZWN0XSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSk6XG5cbiAgdHlwZSAoJ2EsICdiKSBjb250aW51YXRpb24gPSAoJ2EsICdiKSBzdGFjayByZWZcblxuICBhbmQgKF8sIF8pIHN0YWNrID1cbiAgICAgIENvbnMgOiAoJ2IgLT4gdW5pdCkgKiAgICAgICAgICAgICAoKiBsb3ctbGV2ZWwgY29udGludWF0aW9uICopXG4gICAgICAgICAgICAgKGV4biAtPiB1bml0KSBsaXN0ICogICAgICAgKCogZXhjZXB0aW9uIGhhbmRsZXJzICopXG4gICAgICAgICAgICAgKCdiLCAnYykgaGFuZGxlciAqXG4gICAgICAgICAgICAgKCdhLCAnYikgc3RhY2tcbiAgICAgICAgICAgICAtPiAoJ2EsICdjKSBzdGFja1xuICAgIHwgRW1wdHkgOiAoJ2EsICdhKSBzdGFja1xuXG4gIGFuZCAoJ2EsJ2IpIGhhbmRsZXIgPSAgICgqIEFzIGluIG1vZHVsZSBFZmZlY3QgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyBFZmZlY3QudCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbkNvbnRpbnVhdGlvbnMgYXJlIG9uZS1zaG90LiBBIGNvbnRpbnVhdGlvbiBbcmVmIEVtcHR5XSBoYXMgYWxyZWFkeVxuYmVlbiByZXN1bWVkLlxuXG5BIGNvbnRpbnVhdGlvbiBpcyBiYXNpY2FsbHkgY29tcG9zZWQgb2YgYSBsaXN0IG9mIGZpYmVycywgd2hpY2ggZWFjaFxuaGFzIGl0cyBsb3ctbGV2ZWwgY29udGludWF0aW9uLCBpdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZCBhXG50cmlwbGUgb2YgaGFuZGxlcnMgdG8gZGVhbCB3aXRoIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXMgb3IgYW5cbmVmZmVjdCBpcyBwZXJmb3JtZWQuIFdoZW4gcmVzdW1pbmcgYSBjb250aW51YXRpb24sIHRoZSBpbm5lcm1vc3QgZmliZXJcbmlzIHJlc3VtZWQgZmlyc3QuXG5cblRoZSBoYW5kbGVycyBhcmUgQ1BTLXRyYW5zZm9ybWVkIGZ1bmN0aW9uczogdGhleSBhY3R1YWxseSB0YWtlIGFuXG5hZGRpdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyB0aGUgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uLlxuKi9cblxuLy9Qcm92aWRlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaXMgYW4gT0NhbWwgbGlzdCBvZiBleGNlcHRpb24gaGFuZGxlcnNcbnZhciBjYW1sX2V4bl9zdGFjayA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVzaF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2V4bl9zdGFjaz1bMCxoYW5kbGVyLGNhbWxfZXhuX3N0YWNrXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX3RyYXAoKSB7XG4gIGlmICghY2FtbF9leG5fc3RhY2spIHJldHVybiBmdW5jdGlvbih4KXt0aHJvdyB4O31cbiAgdmFyIGggPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgY2FtbF9leG5fc3RhY2s9Y2FtbF9leG5fc3RhY2tbMl07XG4gIHJldHVybiBoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aCwgcjp7aywgeCwgZX19IHdoZXJlIGggaXMgYSB0cmlwbGUgb2YgaGFuZGxlcnNcbi8vIChzZWUgZWZmZWN0LmpzKSBhbmQgaywgeCBhbmQgZSBhcmUgdGhlIHNhdmVkIGNvbnRpbnVhdGlvbixcbi8vIGV4Y2VwdGlvbiBzdGFjayBhbmQgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2ZpYmVyX3N0YWNrO1xuXG4vL1Byb3ZpZGVzOmNhbWxfcmVzdW1lX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9yZXN1bWVfc3RhY2soc3RhY2ssIGspIHtcbiAgaWYgKCFzdGFjaykgY2FtbF9yYWlzZV9jb25zdGFudFxuICAgICAgICAgICAgICAgICAoY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCIpKTtcbiAgLy8gVXBkYXRlIHRoZSBleGVjdXRpb24gY29udGV4dCB3aXRoIHRoZSBzdGFjayBvZiBmaWJlcnMgaW4gW3N0YWNrXSBpblxuICAvLyBvcmRlciB0byByZXN1bWUgdGhlIGNvbnRpbnVhdGlvblxuICBkbyB7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpzdGFja1szXSwgcjp7azprLCB4OmNhbWxfZXhuX3N0YWNrLCBlOmNhbWxfZmliZXJfc3RhY2t9fTtcbiAgICBrID0gc3RhY2tbMV07XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzdGFja1syXTtcbiAgICBzdGFjayA9IHN0YWNrWzRdO1xuICB9IHdoaWxlIChzdGFjaylcbiAgcmV0dXJuIGs7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfZmliZXIoKSB7XG4gIC8vIE1vdmUgdG8gdGhlIHBhcmVudCBmaWJlciwgcmV0dXJuaW5nIHRoZSBwYXJlbnQncyBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4gIHZhciByZW0gPSBjYW1sX2ZpYmVyX3N0YWNrLnI7XG4gIGNhbWxfZXhuX3N0YWNrID0gcmVtLng7XG4gIGNhbWxfZmliZXJfc3RhY2sgPSByZW0uZTtcbiAgcmV0dXJuIHJlbS5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BlcmZvcm1fZWZmZWN0XG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVybiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcGVyZm9ybV9lZmZlY3QoZWZmLCBjb250LCBrMCkge1xuICAvLyBBbGxvY2F0ZSBhIGNvbnRpbnVhdGlvbiBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgb25lXG4gIGlmICghY29udCkgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgMF07XG4gIC8vIEdldCBjdXJyZW50IGVmZmVjdCBoYW5kbGVyXG4gIHZhciBoYW5kbGVyID0gY2FtbF9maWJlcl9zdGFjay5oWzNdO1xuICAvLyBDb25zIHRoZSBjdXJyZW50IGZpYmVyIG9udG8gdGhlIGNvbnRpbnVhdGlvbjpcbiAgLy8gICBjb250IDo9IENvbnMgKGssIGV4bl9zdGFjaywgaGFuZGxlcnMsICFjb250KVxuICBjb250WzFdID0gWzAsazAsY2FtbF9leG5fc3RhY2ssY2FtbF9maWJlcl9zdGFjay5oLGNvbnRbMV1dO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9oYW5kbGVyKGVmZixjb250LGsxLGsxKVxuICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oaGFuZGxlcixbZWZmLGNvbnQsazEsazFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICBmdW5jdGlvbiBjYWxsKGksIHgpIHtcbiAgICB2YXIgZj1jYW1sX2ZpYmVyX3N0YWNrLmhbaV07XG4gICAgdmFyIGFyZ3MgPSBbeCwgY2FtbF9wb3BfZmliZXIoKV07XG4gICAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9jYW1sX2NhbGxfZ2VuKGYsYXJncylcbiAgICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKTtcbiAgfVxuICBmdW5jdGlvbiBodmFsKHgpIHtcbiAgICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDEsIHgpO1xuICB9XG4gIGZ1bmN0aW9uIGhleG4oZSkge1xuICAgIC8vIENhbGwgW2h4XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMiwgZSk7XG4gIH1cbiAgcmV0dXJuIFswLCBodmFsLCBbMCwgaGV4biwgMF0sIFswLCBodiwgaHgsIGhmXSwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpIHtcbiAgdmFyIHN0YWNrPWNvbnRbMV07XG4gIGNvbnRbMV09MDtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoY29udCwgaHZhbCwgaGV4biwgaGVmZikge1xuICB2YXIgc3RhY2sgPSBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCk7XG4gIHN0YWNrWzNdID0gWzAsIGh2YWwsIGhleG4sIGhlZmZdO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbmZ1bmN0aW9uIGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX25ld1xuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fbmV3KHVuaXQpe1xuICAgIHJldHVybiB7Y29uZGl0aW9uOjF9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl93YWl0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KHQsbXV0ZXh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsKHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyFJZjogZWZmZWN0c1xuZnVuY3Rpb24ganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X2xzdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xzdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X2xzdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9sc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X21rZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcm1kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9yZWFkbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91bmxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHd1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaGFzX3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfb3BlbmRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfb3BlbmRpclxuZnVuY3Rpb24gY2FtbF91bml4X29wZW5kaXIocGF0aCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHBhdGgpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm9wZW5kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X29wZW5kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICB2YXIgZGlyX2hhbmRsZSA9IHJvb3QuZGV2aWNlLm9wZW5kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xuICByZXR1cm4geyBwb2ludGVyIDogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9yZWFkZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKSB7XG4gIHZhciBlbnRyeTtcbiAgdHJ5IHtcbiAgICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcInJlYWRkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X2Nsb3NlZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSkge1xuICB0cnkge1xuICAgICAgZGlyX2hhbmRsZS5wb2ludGVyLmNsb3NlU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFxcXC9dKVxcKlxcLlxcKiQvLCBcIlwiKTtcbiAgcGF0aCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGhfanMpO1xuICAvLyAqLiogaXMgbm93IHN0cmlwcGVkXG4gIHZhciBkaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIocGF0aCk7XG4gIHZhciBmaXJzdF9lbnRyeSA9IGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xuICAvLyBUaGUgV2luZG93cyBiaW5kaW5ncyB0eXBlIGRpcl9oYW5kbGUgYXMgYW4gYGludGAgYnV0IGl0J3Mgbm90IGluIEpTXG4gIHJldHVybiBbMCwgZmlyc3RfZW50cnksIGRpcl9oYW5kbGVdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZG5leHRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZG5leHRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kbmV4dChkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRjbG9zZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL0FsaWFzOiB3aW5fZmluZGNsb3NlXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGNsb3NlKGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyBjb25zdFxuLy9BbGlhczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgTWxGYWtlRmQsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2FycmF5LCBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3NcbmZ1bmN0aW9uIE1sRmFrZURldmljZSAocm9vdCwgZikge1xuICB0aGlzLmNvbnRlbnQ9e307XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG4gIHRoaXMubG9va3VwRnVuID0gZjtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNyZWF0ZV9kaXJfaWZfbmVlZGVkID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY29tcCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNvbXAubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICByZXMgKz0gY29tcFtpXSArIFwiL1wiO1xuICAgIGlmKHRoaXMuY29udGVudFtyZXNdKSBjb250aW51ZTtcbiAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5zbGFzaCA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gL1xcLyQvLnRlc3QobmFtZSk/bmFtZToobmFtZSArIFwiL1wiKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24obmFtZSkge1xuICBpZighdGhpcy5jb250ZW50W25hbWVdICYmIHRoaXMubG9va3VwRnVuKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMubG9va3VwRnVuKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5yb290KSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKSk7XG4gICAgaWYocmVzICE9PSAwKSB7XG4gICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgdGhpcy5jb250ZW50W25hbWVdPW5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHJlc1sxXSkpO1xuICAgIH1cbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gIGlmKG5hbWUgPT0gXCJcIikgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSkgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpICYmICF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsbW9kZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVFWElTVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IEZpbGUgZXhpc3RzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcGFyZW50ID0gL14oLiopXFwvW14vXSsvLmV4ZWMobmFtZSk7XG4gIHBhcmVudCA9IChwYXJlbnQgJiYgcGFyZW50WzFdKSB8fCAnJztcbiAgaWYoIXRoaXMuZXhpc3RzKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0aGlzLnNsYXNoKG5hbWUpKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgaWYobi5tYXRjaChyKSkge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVEVNUFRZXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiOiBEaXJlY3Rvcnkgbm90IGVtcHR5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVfc2xhc2hdO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gIH1cbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgdmFyIHNlZW4gPSB7fVxuICB2YXIgYSA9IFtdO1xuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgdmFyIG0gPSBuLm1hdGNoKHIpO1xuICAgIGlmKG0gJiYgIXNlZW5bbVsxXV0pIHtzZWVuW21bMV1dID0gdHJ1ZTsgYS5wdXNoKG1bMV0pfVxuICB9XG4gIHJldHVybiBhO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG5cbiAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gIHZhciBjID0gZmFsc2U7XG4gIHZhciBpID0gMDtcbiAgcmV0dXJuIHsgcmVhZFN5bmMgOiAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaSA9PSBhLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICBpKys7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkgfVxuICB9KVxuICAgICwgY2xvc2VTeW5jOiAoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGMpIHtcbiAgICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYyA9IHRydWU7XG4gICAgICBhID0gW107XG4gICAgfSlcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKG5hbWUgPT0gXCJcIikgIHJldHVybiB0cnVlO1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBvayA9IHRoaXMuY29udGVudFtuYW1lXT90cnVlOmZhbHNlO1xuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICByZXR1cm4gb2s7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVnaXN0ZXI9IGZ1bmN0aW9uIChuYW1lLGNvbnRlbnQpe1xuICB2YXIgZmlsZTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVdKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICBpZihjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjb250ZW50KTtcbiAgaWYoY2FtbF9pc19tbF9zdHJpbmcoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50IGluc3RhbmNlb2YgQXJyYXkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICBlbHNlIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQudG9TdHJpbmcpIHtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2J5dGVzX29mX3N0cmluZyhjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjb250ZW50LnRvU3RyaW5nKCkpKTtcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoYnl0ZXMpO1xuICB9XG4gIGlmKGZpbGUpe1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gZmlsZTtcbiAgfVxuICBlbHNlIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBNbEZha2VGaWxlKGNvbnRlbnQpe1xuICB0aGlzLmRhdGEgPSBjb250ZW50O1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxGYWtlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VGaWxlXG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCB0aGlzLmRhdGEsIG9mZnNldCwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgbGVuID0gY2xlbiAtIG9mZnNldDtcbiAgfVxuICBpZihsZW4pIHtcbiAgICB2YXIgZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGRhdGEsIDAsIGxlbik7XG4gICAgYnVmLnNldChjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGRhdGEpLCBwb3MpO1xuICB9XG4gIHJldHVybiBsZW5cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZF9vdXQoZmQsZmxhZ3MpIHtcbiAgTWxGYWtlRmlsZS5jYWxsKHRoaXMsIGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgdGhpcy5sb2cgPSAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIDAgfSk7XG4gIGlmKGZkID09IDEgJiYgdHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICBlbHNlIGlmKGZkID09IDIgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5lcnJvcjtcbiAgZWxzZSBpZih0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2dcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgfVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5sb2cpIHtcbiAgICBpZihsZW4gPiAwXG4gICAgICAgJiYgcG9zID49IDBcbiAgICAgICAmJiBwb3MrbGVuIDw9IGJ1Zi5sZW5ndGhcbiAgICAgICAmJiBidWZbcG9zK2xlbi0xXSA9PSAxMClcbiAgICAgIGxlbiAtLTtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICB2YXIgc3JjID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHNyYywgMCwgbGVuKTtcbiAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBpcyB3cml0ZSBvbmx5XCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZChuYW1lLCBmaWxlLGZsYWdzKSB7XG4gIHRoaXMuZmlsZSA9IGZpbGU7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cblxuTWxGYWtlRmQucHJvdG90eXBlLmVycl9jbG9zZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubmFtZSAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUubGVuZ3RoICgpXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LGJ1Zixwb3MsbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUucmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHNbXCJfbmF0XCJdID1cbiAgICB7IGRlc2VyaWFsaXplIDogZGVzZXJpYWxpemVfbmF0LFxuICAgICAgc2VyaWFsaXplIDogc2VyaWFsaXplX25hdCxcbiAgICAgIGhhc2ggOiBjYW1sX2hhc2hfbmF0XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuZnVuY3Rpb24gTWxOYXQoeCl7XG4gIHRoaXMuZGF0YSA9IG5ldyBJbnQzMkFycmF5KHgpO1xuICAvLyBGb3IgbnVtIDwgMS41XG4gIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgLy8gd29yayBvdXQgcmlnaHQuXG4gIC8vIFdlIGFkZCArMiB0byB0aGUgYXJyYXkgbGVuZ3RoOlxuICAvLyAtICsxIGZvciB0aGUgdGFnXG4gIC8vIC0gKzEgZm9yIHRoZSBjdXN0b21fb3BzIHNsb3RcbiAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoICsgMlxufVxuXG5NbE5hdC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9uYXRcIjtcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX25hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbmF0KHgpIHtcbiAgdmFyIGxlbiA9IG51bV9kaWdpdHNfbmF0KHgsIDAsIHguZGF0YS5sZW5ndGgpO1xuICB2YXIgaCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgeC5kYXRhW2ldKTtcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogbGVuZ3RoX25hdFxuZnVuY3Rpb24gbGVuZ3RoX25hdCh4KSB7XG4gIHJldHVybiB4LmRhdGEubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBuYXRfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBuYXRfb2ZfYXJyYXkobCl7XG4gIHJldHVybiBuZXcgTWxOYXQobCk7XG59XG5cbi8vUHJvdmlkZXM6IGNyZWF0ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBjcmVhdGVfbmF0KHNpemUpIHtcbiAgdmFyIGFyciA9IG5ldyBNbE5hdChzaXplKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gbmF0Mi5kYXRhW29mczIraV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXQobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXQobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gbnVtX2RpZ2l0c19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmKG5hdC5kYXRhW29mcytpXSAhPSAwKSByZXR1cm4gaSsxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZihhICYgMHhGRkZGMDAwMCkgeyBiICs9MTY7IGEgPj4+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+IDApKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0X3JlYWxcbi8vUmVxdWlyZXM6IGNvbXBhcmVfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdF9yZWFsKG5hdDEsbmF0Mil7XG4gIHJldHVybiBjb21wYXJlX25hdChuYXQxLDAsbmF0MS5kYXRhLmxlbmd0aCxuYXQyLDAsbmF0Mi5kYXRhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IHNlcmlhbGl6ZV9uYXRcbmZ1bmN0aW9uIHNlcmlhbGl6ZV9uYXQod3JpdGVyLCBuYXQsIHN6KXtcbiAgdmFyIGxlbiA9IG5hdC5kYXRhLmxlbmd0aDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIHdyaXRlci53cml0ZSgzMiwgbmF0LmRhdGFbaV0pO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgc3pbMV0gPSBsZW4gKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBkZXNlcmlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZV9uYXQocmVhZGVyLCBzeil7XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIgbmF0ID0gbmV3IE1sTmF0KGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgbmF0LmRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgcmV0dXJuIG5hdDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCxjYW1sX25hbWVkX3ZhbHVlKFwiR3JhcGhpY3MuR3JhcGhpY19mYWlsdXJlXCIpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpXSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSl7XG4gICAgdmFyIHJlcyA9IGluZm8ubWF0Y2goXCIoXnwsKSAqXCIrbmFtZStcIiAqPSAqKFthLXpBLVowLTlfXSspICooLHwkKVwiKTtcbiAgICBpZihyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmKCEoaW5mbz09XCJcIikpIHNwZWNzLnB1c2goaW5mbyk7XG4gIHZhciB0YXJnZXQgPSBnZXQoXCJ0YXJnZXRcIik7XG4gIGlmKCF0YXJnZXQpIHRhcmdldD1cIlwiO1xuICB2YXIgc3RhdHVzID0gZ2V0KFwic3RhdHVzXCIpO1xuICBpZighc3RhdHVzKSBzcGVjcy5wdXNoKFwic3RhdHVzPTFcIilcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdz9wYXJzZUludCh3KToyMDA7XG4gIHNwZWNzLnB1c2goXCJ3aWR0aD1cIit3KTtcblxuICB2YXIgaCA9IGdldChcImhlaWdodFwiKTtcbiAgaCA9IGg/cGFyc2VJbnQoaCk6MjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiK2gpO1xuXG4gIHZhciB3aW4gPSBnbG9iYWxUaGlzLm9wZW4oXCJhYm91dDpibGFua1wiLHRhcmdldCxzcGVjcy5qb2luKFwiLFwiKSk7XG4gIGlmKCF3aW4pIHtjYW1sX2ZhaWx3aXRoKFwiR3JhcGhpY3Mub3Blbl9ncmFwaDogY2Fubm90IG9wZW4gdGhlIHdpbmRvd1wiKX1cbiAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgdmFyIGNhbnZhcyA9IGRvYy5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3O1xuICBjYW52YXMuaGVpZ2h0ID0gaDtcbiAgdmFyIGN0eCA9IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCl7XG4gIGNhbWxfZ3JfbW92ZXRvKGNhbWxfZ3Jfc3RhdGUueCxjYW1sX2dyX3N0YXRlLnkpO1xuICBjYW1sX2dyX3Jlc2l6ZV93aW5kb3coY2FtbF9ncl9zdGF0ZS53aWR0aCxjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKXtcbiAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgY2FudmFzIDogY2FudmFzLFxuICAgIHggOiAwLFxuICAgIHkgOiAwLFxuICAgIHdpZHRoIDogdyxcbiAgICBoZWlnaHQgOiBoLFxuICAgIGxpbmVfd2lkdGggOiAxLFxuICAgIGZvbnQgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiZml4ZWRcIiksXG4gICAgdGV4dF9zaXplIDogMjYsXG4gICAgY29sb3IgOiAweDAwMDAwMCxcbiAgICB0aXRsZSA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIilcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kb2Nfb2Zfc3RhdGVcbmZ1bmN0aW9uIGNhbWxfZ3JfZG9jX29mX3N0YXRlKHN0YXRlKSB7XG4gIGlmKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KVxuICAgIHJldHVybiBzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2VfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IDA7XG4gIHMuY2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKG5hbWUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKHMuc2V0X3RpdGxlKSBzLnNldF90aXRsZShqc25hbWUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9yZXNpemVfd2luZG93KHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKVxuICBzLndpZHRoID0gdztcbiAgcy5oZWlnaHQgPSBoO1xuICBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gIC8vICBzLmNvbnRleHQuc3Ryb2tlUmVjdCAoMC4sIDAuLCBzLndpZHRoLCBzLmhlaWdodCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMud2lkdGg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfY29sb3IoY29sb3Ipe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGZ1bmN0aW9uIGNvbnZlcnQobnVtYmVyKSB7XG4gICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IDIpIHN0ciA9ICcwJyArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhclxuICByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gIGcgPSAoY29sb3IgPj4gOCkgICYgMHhmZixcbiAgYiA9IChjb2xvciA+PiAwKSAgJiAweGZmO1xuICBzLmNvbG9yPWNvbG9yO1xuICB2YXIgY19zdHIgPSAnIycgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSAgIGNfc3RyO1xuICBzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjX3N0cjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Bsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Bsb3QoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIGRbMV0gPSAoY29sb3IgPj4gOCkgICYgMHhmZiwgLy9nXG4gIGRbMl0gPSAoY29sb3IgPj4gMCkgICYgMHhmZjsgLy9iXG4gIGRbM10gPSAweEZGOyAvL2FcbiAgcy54PXg7XG4gIHMueT15O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLHgscy5oZWlnaHQgLSB5KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcG9pbnRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3BvaW50X2NvbG9yKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIHksMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy54XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9saW5ldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2xpbmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLmNvbnRleHQubGluZVRvKHgscy5oZWlnaHQgLSB5KTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuc3Ryb2tlUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9hcmNfYXV4KGN0eCxjeCxjeSxyeSxyeCxhMSxhMil7XG4gIHdoaWxlKGExPmEyKSBhMis9MzYwO1xuICBhMSAvPSAxODA7XG4gIGEyIC89IDE4MDtcbiAgdmFyIHJvdCA9IDAseFBvcyx5UG9zLHhQb3NfcHJldix5UG9zX3ByZXY7XG4gIHZhciBzcGFjZSA9IDI7XG4gIHZhciBudW0gPSAoKChhMiAtIGExKSAqIE1hdGguUEkgKiAoKHJ4K3J5KS8yKSkgLyBzcGFjZSkgfCAwO1xuICB2YXIgZGVsdGEgPSAoYTIgLSBhMSkgKiBNYXRoLlBJIC8gbnVtO1xuICB2YXIgaSA9IGExICogTWF0aC5QSTtcbiAgZm9yICh2YXIgaj0wO2o8PW51bTtqKyspe1xuICAgIHhQb3MgPSBjeCAtIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeFBvcyA9IHhQb3MudG9GaXhlZCgyKTtcbiAgICB5UG9zID0gY3kgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGo9PTApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYhPXhQb3MgfHwgeVBvc19wcmV2IT15UG9zKXtcbiAgICAgIGN0eC5saW5lVG8oeFBvcywgeVBvcyk7XG4gICAgfVxuICAgIHhQb3NfcHJldj14UG9zO1xuICAgIHlQb3NfcHJldj15UG9zO1xuICAgIGktPSBkZWx0YTsvL2Njd1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfbGluZV93aWR0aCh3KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gd1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuZmlsbFJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3BvbHlcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcG9seShhcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBmb3IodmFyIGkgPSAyOyBpIDwgYXIubGVuZ3RoOyBpKyspXG4gICAgcy5jb250ZXh0LmxpbmVUbyhhcltpXVsxXSxzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHIoc3RyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgbSA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChzdHIpO1xuICB2YXIgZHggPSBtLndpZHRoO1xuICBzLmNvbnRleHQuZmlsbFRleHQoc3RyLHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMueCArPSBkeCB8IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfY2hhclxuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2NoYXIoYyl7XG4gIGNhbWxfZ3JfZHJhd19zdHIoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cmluZyhzdHIpe1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuZm9udCA9IGY7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF90ZXh0X3NpemUoc2l6ZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50ZXh0X3NpemUgPSBzaXplO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3RleHRfc2l6ZSh0eHQpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsdyxzLnRleHRfc2l6ZV07XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGggPSBhcnIubGVuZ3RoIC0gMSA7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodyxoKTtcbiAgZm9yKHZhciBpPTA7aTxoO2krKyl7XG4gICAgZm9yKHZhciBqPTA7ajx3O2orKyl7XG4gICAgICB2YXIgYyA9IGFycltpKzFdW2orMV07XG4gICAgICB2YXIgbyA9IGkqKHcqNCkgKyAoaiAqIDQpO1xuICAgICAgaWYoYyA9PSAtMSkge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IGMgPj4gMTYgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IGMgPj4gIDggJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IGMgPj4gIDAgJiAwWGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKXtcbiAgdmFyIGRhdGEgPSBbMF1cbiAgZm9yKHZhciBpPTA7IGk8aW0uaGVpZ2h0O2krKyl7XG4gICAgZGF0YVtpKzFdID0gWzBdXG4gICAgZm9yKHZhciBqPTA7IGo8aW0ud2lkdGg7aisrKXtcbiAgICAgIHZhciBvID0gaSooaW0ud2lkdGgqNCkgKyAoaiAqIDQpLFxuICAgICAgICAgIHIgPSBpbS5kYXRhW28rMF0sXG4gICAgICAgICAgZyA9IGltLmRhdGFbbysxXSxcbiAgICAgICAgICBiID0gaW0uZGF0YVtvKzJdO1xuICAgICAgZGF0YVtpKzFdW2orMV0gPSAociA8PCAxNikgKyAoZyA8PCA4KSArIGJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmKCFpbS5pbWFnZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGltLDAsMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgICAgIGltLmltYWdlID0gaW1hZ2U7XG4gICAgfVxuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NyZWF0ZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3JlYXRlX2ltYWdlKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoeCx5KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYmxpdF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfYmxpdF9pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbTIgPSBzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5LGltLndpZHRoLGltLmhlaWdodCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW0yLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICBpbS5kYXRhW2ldID0gaW0yLmRhdGFbaV07XG4gICAgaW0uZGF0YVtpKzFdID0gaW0yLmRhdGFbaSsxXTtcbiAgICBpbS5kYXRhW2krMl0gPSBpbTIuZGF0YVtpKzJdO1xuICAgIGltLmRhdGFbaSszXSA9IGltMi5kYXRhW2krM107XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXJcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9faGFuZGxlcigpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dhaXRfZXZlbnRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2FpdF9ldmVudChfZXZsKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfc3luY2hyb25pemUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9yZW1lbWJlcl9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3JlbWVtYmVyX21vZGUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZGlzcGxheV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Rpc3BsYXlfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfZGlzcGxheV9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl93aW5kb3dfaWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2luZG93X2lkKGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2luZG93X2lkIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX3N1YndpbmRvdyhhLGIsYyxkKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbnZhciBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlclxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUoZXZlbnQsIGV2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IodGFyZ2V0KSB7XG4gIHJldHVybiB7fTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvcihjdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbChjdXJzb3IsIGNhbGxiYWNrcywgbnVtKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBVSW50OEFycmF5UmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IHM7IHRoaXMuaSA9IGk7IH1cblVJbnQ4QXJyYXlSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK10gPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCA4KSB8IHNbaSArIDFdXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAgICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM107XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbFN0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gTWxTdHJpbmdSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTsgdGhpcy5pID0gaTsgfVxuTWxTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMykpID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zdWJzdHJpbmcoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHZhciBzID0gdGhpcy5zO1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIG9mZnNldCA9IHRoaXMub2Zmc2V0KGkpO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5kYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgfVxufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzIChhKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKGNhbWxfaW50NjRfb2ZfYnl0ZXMgKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChzLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICBzaXplWzBdID0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMgKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyAodik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB3cml0ZXIud3JpdGUgKDgsIGJbaV0pO1xuICBzaXplc1swXSA9IDg7IHNpemVzWzFdID0gODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl91bm1hcnNoYWxcbmZ1bmN0aW9uIGNhbWxfaW50MzJfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHNpemVbMF0gPSA0O1xuICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHN3aXRjaCAocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6XG4gICAgc2l6ZVswXSA9IDQ7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICBjYXNlIDI6XG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPVxuICAgIHtcIl9qXCI6IHtcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQ2NF91bm1hcnNoYWwsXG4gICAgICBzZXJpYWxpemUgIDogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgICAgZml4ZWRfbGVuZ3RoIDogOCxcbiAgICAgIGNvbXBhcmUgOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgICBoYXNoIDogY2FtbF9pbnQ2NF9oYXNoXG4gICAgfSxcbiAgICAgXCJfaVwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9uXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9iaWdhcnJheVwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyYXlcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyMDJcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycjAyXCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH1cbiAgICB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9mbG9hdF9vZl9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG4gIHZhciBtYWdpYyA9IHJlYWRlci5yZWFkMzJ1ICgpXG4gIHN3aXRjaChtYWdpYyl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAwO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSBkYXRhX2xlbjtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gcmVhZGVyLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDE7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIpO1xuICAgIGJyZWFrXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWs7XG4gIH1cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZihjb21wcmVzc2VkKSB7XG4gICAgaWYoY2FtbF9kZWNvbXByZXNzX2lucHV0KSB7XG4gICAgICB2YXIgZGF0YSA9IHJlYWRlci5yZWFkdWludDhhcnJheShkYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkodW5jb21wcmVzc2VkX2RhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBjYW1sX2RlY29tcHJlc3NfaW5wdXQoZGF0YSwgcmVzKTtcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgVUludDhBcnJheVJlYWRlcihyZXMsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNvbXByZXNzZWQgb2JqZWN0LCBjYW5ub3QgZGVjb21wcmVzc1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHJlcyA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB9XG4gIGlmICh0eXBlb2Ygb2ZzIT1cIm51bWJlclwiKSBvZnNbMF0gPSByZWFkZXIuaTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAyMFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNlxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIHZhciByID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKSwgb2ZzKTtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICBzd2l0Y2goci5yZWFkMzJ1KCkpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgIGJyZWFrO1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWtcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5NYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiBwb2x5ZmlsbCAodXNpbmcgbGluZWFyIHNlYXJjaCkgKi9cbiAgICBmdW5jdGlvbiBOYWl2ZUxvb2t1cChvYmpzKSB7IHRoaXMub2JqcyA9IG9ianM7IH1cbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24odikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9ianMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMub2Jqc1tpXSA9PT0gdikgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBEbyBub3RoaW5nIGhlcmUuIFtNbE9iamVjdFRhYmxlLnN0b3JlXSB3aWxsIHB1c2ggdG8gW3RoaXMub2Jqc10gZGlyZWN0bHkuXG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IE5haXZlTG9va3VwKHRoaXMub2Jqcyk7XG4gICAgfTtcbiAgfSgpO1xufVxuZWxzZSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBnbG9iYWxUaGlzLk1hcCgpO1xuICB9O1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5zdG9yZSA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5sb29rdXAuc2V0KHYsIHRoaXMub2Jqcy5sZW5ndGgpO1xuICB0aGlzLm9ianMucHVzaCh2KTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUucmVjYWxsID0gZnVuY3Rpb24odikge1xuICB2YXIgaSA9IHRoaXMubG9va3VwLmdldCh2KTtcbiAgcmV0dXJuIChpID09PSB1bmRlZmluZWQpXG4gICAgPyB1bmRlZmluZWQgOiB0aGlzLm9ianMubGVuZ3RoIC0gaTsgICAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbnZhciBjYW1sX291dHB1dF92YWwgPSBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gV3JpdGVyICgpIHsgdGhpcy5jaHVuayA9IFtdOyB9XG4gIFdyaXRlci5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtfaWR4OjIwLCBibG9ja19sZW46MCwgb2JqX2NvdW50ZXI6MCwgc2l6ZV8zMjowLCBzaXplXzY0OjAsXG4gICAgd3JpdGU6ZnVuY3Rpb24gKHNpemUsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9hdDpmdW5jdGlvbiAocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3BvcysrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9jb2RlOmZ1bmN0aW9uIChzaXplLCBjb2RlLCB2YWx1ZSkge1xuICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9IGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9zaGFyZWQ6ZnVuY3Rpb24gKG9mZnNldCkge1xuICAgICAgaWYgKG9mZnNldCA8ICgxIDw8IDgpKSB0aGlzLndyaXRlX2NvZGUoOCwgMHgwNCAvKmNzdC5DT0RFX1NIQVJFRDgqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgaWYgKG9mZnNldCA8ICgxIDw8IDE2KSkgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9LFxuICAgIHBvczpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNodW5rX2lkeCB9LFxuICAgIGZpbmFsaXplOmZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuYmxvY2tfbGVuID0gdGhpcy5jaHVua19pZHggLSAyMDtcbiAgICAgIHRoaXMuY2h1bmtfaWR4ID0gMDtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCAweDg0OTVBNkJFKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLmJsb2NrX2xlbik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5vYmpfY291bnRlcik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfNjQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2h1bms7XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbiAodiwgZmxhZ3MpIHtcbiAgICBmbGFncyA9IGNhbWxfbGlzdF90b19qc19hcnJheShmbGFncyk7XG5cbiAgICB2YXIgbm9fc2hhcmluZyA9IChmbGFncy5pbmRleE9mKDAgLypNYXJzaGFsLk5vX3NoYXJpbmcqLykgIT09IC0xKSxcbiAgICAgICAgY2xvc3VyZXMgPSAgKGZsYWdzLmluZGV4T2YoMSAvKk1hcnNoYWwuQ2xvc3VyZXMqLykgIT09IC0xKTtcbiAgICAvKiBNYXJzaGFsLkNvbXBhdF8zMiBpcyByZWR1bmRhbnQgc2luY2UgaW50ZWdlcnMgYXJlIDMyLWJpdCBhbnl3YXkgKi9cblxuICAgIGlmIChjbG9zdXJlcylcbiAgICAgIGNvbnNvbGUud2FybihcImluIGNhbWxfb3V0cHV0X3ZhbDogZmxhZyBNYXJzaGFsLkNsb3N1cmVzIGlzIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXG4gICAgdmFyIHdyaXRlciA9IG5ldyBXcml0ZXIgKCk7XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGludGVybl9vYmpfdGFibGUgPSBub19zaGFyaW5nID8gbnVsbCA6IG5ldyBNbE9iamVjdFRhYmxlKCk7XG5cbiAgICBmdW5jdGlvbiBtZW1vKHYpIHtcbiAgICAgIGlmIChub19zaGFyaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgICB2YXIgZXhpc3Rpbmdfb2Zmc2V0ID0gaW50ZXJuX29ial90YWJsZS5yZWNhbGwodik7XG4gICAgICBpZiAoZXhpc3Rpbmdfb2Zmc2V0KSB7IHdyaXRlci53cml0ZV9zaGFyZWQoZXhpc3Rpbmdfb2Zmc2V0KTsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGVsc2UgeyBpbnRlcm5fb2JqX3RhYmxlLnN0b3JlKHYpOyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlcm5fcmVjICh2KSB7XG4gICAgICBpZiAodi5jYW1sX2N1c3RvbSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbmFtZSA9IHYuY2FtbF9jdXN0b207XG4gICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbbmFtZV07XG4gICAgICAgIHZhciBzel8zMl82NCA9IFswLDBdO1xuICAgICAgICBpZighb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZihvcHMuZml4ZWRfbGVuZ3RoID09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE4IC8qY3N0LkNPREVfQ1VTVE9NX0xFTiovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBoZWFkZXJfcG9zID0gd3JpdGVyLnBvcyAoKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zLCAzMiwgc3pfMzJfNjRbMF0pO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgNCwgMzIsIDApOyAvLyB6ZXJvXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA4LCAzMiwgc3pfMzJfNjRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBvbGRfcG9zID0gd3JpdGVyLnBvcygpO1xuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgaWYgKG9wcy5maXhlZF9sZW5ndGggIT0gd3JpdGVyLnBvcygpIC0gb2xkX3BvcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGluY29ycmVjdCBmaXhlZCBzaXplcyBzcGVjaWZpZWQgYnkgXCIgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAyICsgKChzel8zMl82NFswXSArIDMpID4+IDIpO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyICsgKChzel8zMl82NFsxXSArIDcpID4+IDMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICAgIGlmICh2WzBdID09IDI1MSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChBYnN0cmFjdClcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSAmJiBtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIGlmICh2WzBdIDwgMTYgJiYgdi5sZW5ndGggLSAxIDwgOClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8gKyB2WzBdICsgKCh2Lmxlbmd0aCAtIDEpPDw0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwOCAvKmNzdC5DT0RFX0JMT0NLMzIqLywgKCh2Lmxlbmd0aC0xKSA8PCAxMCkgfCB2WzBdKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gdi5sZW5ndGg7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IHYubGVuZ3RoO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxKSBzdGFjay5wdXNoICh2LCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgICBpZighKGNhbWxfaXNfbWxfYnl0ZXMoY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKSkpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogW0J5dGVzLnRdIGNhbm5vdCBzYWZlbHkgYmUgbWFyc2hhbGVkIHdpdGggWy0tZW5hYmxlIHVzZS1qcy1zdHJpbmddXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT0gKHZ8MCkpe1xuICAgICAgICAgIHZhciB0eXBlX29mX3YgPSB0eXBlb2YgdjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIElmIGEgZmxvYXQgaGFwcGVucyB0byBiZSBhbiBpbnRlZ2VyIGl0IGlzIHNlcmlhbGl6ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgIC8vIChKc19vZl9vY2FtbCBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSB0eXBlIG9mIGFuIGludGVnZXIgbnVtYmVyIGlzXG4gICAgICAgICAgLy8gZmxvYXQgb3IgaW50ZWdlci4pIFRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNyYXNoZXMgd2hlblxuICAgICAgICAgIC8vIHVubWFyc2hhbGxpbmcgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bnRpbWUuIEl0IHNlZW1zIGJldHRlciB0b1xuICAgICAgICAgIC8vIHN5c3RlbWF0aWNhbGx5IGZhaWwgb24gbWFyc2hhbGxpbmcuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgICAgICAgICBpZih0eXBlX29mX3YgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyAgICAgICAgICB2YXIgdCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHYpKTtcbiAgICAgICAgICAvLyAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MEIgLypjc3QuQ09ERV9ET1VCTEVfQklHKi8pO1xuICAgICAgICAgIC8vICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGk8ODsgaSsrKXt3cml0ZXIud3JpdGUoOCx0W2ldKX1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ID49IDAgJiYgdiA8IDB4NDApIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDBYNDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAoMSA8PCA3KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDAgLypjc3QuQ09ERV9JTlQ4Ki8sIHYpO1xuICAgICAgICAgIGVsc2UgaWYgKHYgPj0gLSgxIDw8IDE1KSAmJiB2IDwgKDEgPDwgMTUpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMTYsIDB4MDEgLypjc3QuQ09ERV9JTlQxNiovLCB2KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwMiAvKmNzdC5DT0RFX0lOVDMyKi8sIHYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGV4dGVybl9yZWMgKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIHZhciB2ID0gc3RhY2sucG9wICgpO1xuICAgICAgaWYgKGkgKyAxIDwgdi5sZW5ndGgpIHN0YWNrLnB1c2ggKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWMgKHZbaV0pO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgd3JpdGVyLm9ial9jb3VudGVyID0gaW50ZXJuX29ial90YWJsZS5vYmpzLmxlbmd0aDtcbiAgICB3cml0ZXIuZmluYWxpemUoKTtcbiAgICByZXR1cm4gd3JpdGVyLmNodW5rO1xuICB9XG59ICgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfYmxpdF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIChzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKTtcbiAgaWYgKHQubGVuZ3RoID4gbGVuKSBjYW1sX2ZhaWx3aXRoIChcIk1hcnNoYWwudG9fYnVmZmVyOiBidWZmZXIgb3ZlcmZsb3dcIik7XG4gIGNhbWxfYmxpdF9ieXRlcyh0LCAwLCBzLCBvZnMsIHQubGVuZ3RoKTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIElvXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Zkc1xudmFyIGNhbWxfc3lzX2ZkcyA9IG5ldyBBcnJheSgzKTtcblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlKSBmaWxlLmNsb3NlKCk7XG4gIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLGlkeCkge1xuICBpZihpZHggPT0gdW5kZWZpbmVkKXtcbiAgICBpZHggPSBjYW1sX3N5c19mZHMubGVuZ3RoO1xuICB9XG4gIGNhbWxfc3lzX2Zkc1tpZHhdID0gZmlsZTtcbiAgcmV0dXJuIGlkeCB8IDA7XG59XG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuIChuYW1lLCBmbGFncywgX3Blcm1zKSB7XG4gIHZhciBmID0ge307XG4gIHdoaWxlKGZsYWdzKXtcbiAgICBzd2l0Y2goZmxhZ3NbMV0pe1xuICAgIGNhc2UgMDogZi5yZG9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMTogZi53cm9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMjogZi5hcHBlbmQgPSAxO2JyZWFrO1xuICAgIGNhc2UgMzogZi5jcmVhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNDogZi50cnVuY2F0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA1OiBmLmV4Y2wgPSAxOyBicmVhaztcbiAgICBjYXNlIDY6IGYuYmluYXJ5ID0gMTticmVhaztcbiAgICBjYXNlIDc6IGYudGV4dCA9IDE7YnJlYWs7XG4gICAgY2FzZSA4OiBmLm5vbmJsb2NrID0gMTticmVhaztcbiAgICB9XG4gICAgZmxhZ3M9ZmxhZ3NbMl07XG4gIH1cbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LGYpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCAoZmlsZSwgdW5kZWZpbmVkKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGZpbGUoZmQsIGZsYWdzKSB7XG4gICAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIG5ldyBNbEZha2VGZF9vdXQoZmQsIGZsYWdzKVxuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgwLHtyZG9ubHk6MSxhbHRuYW1lOlwiL2Rldi9zdGRpblwiLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMCk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgxLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMSk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgyLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMik7XG59KSgpXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xudmFyIGNhbWxfbWxfY2hhbm5lbHMgPSBuZXcgQXJyYXkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBidWZmZXJlZCA9IChmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQpID8gZmlsZS5mbGFncy5idWZmZXJlZCA6IDE7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICBidWZmZXJlZDpidWZmZXJlZFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXJfbWF4OjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbi8vQWxpYXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5maWxlLmZsYWdzLnRleHQgPSAhbW9kZVxuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9JbnB1dCBmcm9tIGluX2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9jbG9zZV9jaGFubmVsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jbG9zZVxuZnVuY3Rpb24gY2FtbF9tbF9jbG9zZV9jaGFubmVsIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5maWxlLmxlbmd0aCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGggKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQoY2hhbmlkLGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub3V0cHV0ID0gKGZ1bmN0aW9uIChzKSB7ZihzKX0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCxmKSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5yZWZpbGwgPSBmO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVmaWxsIChjaGFuKSB7XG4gIGlmKGNoYW4ucmVmaWxsICE9IG51bGwpe1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjaGFuLnJlZmlsbCA9IG51bGxcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlci5sZW5ndGggPCBjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpe1xuICAgICAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCk7XG4gICAgICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICAgICAgY2hhbi5idWZmZXIgPSBiO1xuICAgICAgfVxuICAgICAgY2hhbi5idWZmZXIuc2V0KHN0cl9hLGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgbnJlYWQgPSBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIGNoYW4uYnVmZmVyX21heCwgY2hhbi5idWZmZXIubGVuZ3RoIC0gY2hhbi5idWZmZXJfbWF4KTtcbiAgICBjaGFuLm9mZnNldCArPSBucmVhZDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gbnJlYWQ7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dCAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmlnYXJyYXkgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9ibG9jayAoY2hhbmlkLCBiYSwgaSwgbCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIG4gPSBsO1xuICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBpZihsIDw9IGF2YWlsKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH1cbiAgZWxzZSBpZihhdmFpbCA+IDApIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgYXZhaWwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGF2YWlsO1xuICAgIG4gPSBhdmFpbDtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgaWYobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIG4pLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IG47XG4gIH1cbiAgcmV0dXJuIG4gfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZShyIDwgbil7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgICAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICAgICAgYnJlYWs7XG4gICAgICBidWZmZXJbb2Zmc2V0K3JdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZihyID09IDApXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoaGVhZGVyKSwgMCk7XG4gIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4gKyBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBidWYuc2V0KGhlYWRlciwwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKVxuICBpZihyIDwgbGVuKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgb2Zmc2V0ID0gWzBdO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgb2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQgPSBjaGFuLm9mZnNldCArIG9mZnNldFswXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXBcbi8vUmVxdWlyZXM6IGNhbWxfaW5wdXRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhciAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgfVxuICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB2YXIgcmVzID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfY2hhciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA0OyBpKyspe1xuICAgIHJlcyA9IChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcykge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBpZihwb3MgPj0gY2hhbi5vZmZzZXQgLSBjaGFuLmJ1ZmZlcl9tYXhcbiAgICAgJiYgcG9zIDw9IGNoYW4ub2Zmc2V0XG4gICAgICYmIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkpIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gY2hhbi5idWZmZXJfbWF4IC0gKGNoYW4ub2Zmc2V0IC0gcG9zKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCxwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfcG9zX2luKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0IC0gKGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbihjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX2luKGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW5fNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX2luKGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X3NjYW5fbGluZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZihwID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+IDApIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIpLDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmKGNoYW4uYnVmZmVyX21heCA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgICB2YXIgcHJldl9tYXggPSBjaGFuLmJ1ZmZlcl9tYXg7XG4gICAgICBjYW1sX3JlZmlsbCAoY2hhbik7XG4gICAgICBpZihwcmV2X21heCA9PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChjaGFuLmJ1ZmZlcltwKytdICE9IDEwKTtcbiAgcmV0dXJuIChwIC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2ZsdXNoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IGZsdXNoIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGlmKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09IDApIHJldHVybiAwO1xuICBpZihjaGFuLm91dHB1dCkge1xuICAgIGNoYW4ub3V0cHV0KGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3VycikpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCA+IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGgpO1xuICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICBjaGFuLmJ1ZmZlciA9IGJcbiAgfVxuICBzd2l0Y2goY2hhbi5idWZmZXJlZCl7XG4gIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrXG4gIGNhc2UgMTogLy8gQnVmZmVyZWQgKHRoZSBkZWZhdWx0KVxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMjogLy8gQnVmZmVyZWQgKG9ubHkgZm9yIHN0ZG91dCBhbmQgc3RkZXJyKVxuICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMClcbiAgICBpZihpZCA8IDApIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gaWQgKyAxO1xuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGggLSBpZCAtIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF9iYV90b190eXBlZF9hcnJheShidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9wb3Nfb3V0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0ICsgY2hhbi5idWZmZXJfY3VyclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3Nfb3V0KGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0IChjYW1sX3Bvc19vdXQoY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPyAxIDogMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLHYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLmJ1ZmZlcmVkID0gdjtcbiAgaWYoIXYpIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIDBcbn1cbiIsIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKHRydWUpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY29tcGFjdGlvblxuZnVuY3Rpb24gY2FtbF9nY19jb21wYWN0aW9uKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19jb3VudGVyc1xuZnVuY3Rpb24gY2FtbF9nY19jb3VudGVycygpIHsgcmV0dXJuIFsyNTQsMCwwLDBdIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCgpIHtcbiAgLy8gQSBmaWVsZCB3YXMgYWRkZWQgaW4gT0NhbWwgNC4xMi4gSXQgaXMgdW5saWtlbHkgdG8gYmUgYW4gaXNzdWUgdG9cbiAgLy8gcmV0dXJuIHRvbyBtYW55IGZpZWxkcyBpbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbC5cbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vLy8vLy8vLyBDT1JFXG5cbi8vUHJvdmlkZXM6IGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG52YXIgY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjb3JlX3RpbWVfbnNfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjb3JlX3RpbWVfbnNfZm9ybWF0KHRpbWUsZm9ybWF0KXtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0aW1lICogMTAwMCk7XG4gIHZhciBmb3JtYXRqcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm9ybWF0KTtcbiAgdmFyIGpzdHJpbmcgPSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZShmb3JtYXRqcywgZCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzdHJpbmcpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2djX2NvbXBhY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX2NvbXBhY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX2NodW5rc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX2NodW5rcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19wcm9tb3RlZF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19wcm9tb3RlZF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfdG9wX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrc1xuZnVuY3Rpb24gY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3MgKCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXG5mdW5jdGlvbiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayh4KXtcbiAgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTtcbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZmRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luLCBjYW1sX21kNV9jaGFuLCBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbmZ1bmN0aW9uIGNvcmVfbWQ1X2ZkKGZkKXtcbiAgICB2YXIgaWMgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNhbWxfbWQ1X2NoYW4oaWMsIC0xKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBjYW1sX21sX2Nsb3NlX2NoYW5uZWwoaWMpO1xuICAgIH1cbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX2JsaXRfc3RyaW5nLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nKGJ1Ziwgb2ZzLCBsZW4sIHJlcyl7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihidWYsIG9mcywgYnl0ZXMsIDAsIGxlbik7XG4gICAgdmFyIHJlczIgPSBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpLCAwLCBsZW4pO1xuICAgIGNhbWxfYmxpdF9zdHJpbmcocmVzMiwgMCwgcmVzLCAwLCAxNik7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vQmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1Yih2X2JzdHIpIHtcbiAgaWYgKHZfYnN0ci5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX2Rlc3Ryb3k6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICB9XG4gIC8vIE11dGF0ZSB0aGUgb3JpZ2luYWwgYmlnc3RyaW5nIGluLXBsYWNlLCB0byBzaW11bGF0ZSB3aGF0IHRoZSBDIHZlcnNpb24gZG9lc1xuICB2X2JzdHIuX19pc19kZWFsbG9jYXRlZCA9IHRydWU7XG4gIHZfYnN0ci5kYXRhID0gbmV3IHZfYnN0ci5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcigwKTtcbiAgdl9ic3RyLmRpbXMgPSBbIDAgXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19yZWFsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX3JlYWxsb2MoYmlnc3RyaW5nLCBzaXplKSB7XG4gICAgaWYgKGJpZ3N0cmluZy5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19yZWFsbG9jOiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3X2RhdGEgPSBuZXcgYmlnc3RyaW5nLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKHNpemUpO1xuICAgIG5ld19kYXRhLnNldChiaWdzdHJpbmcuZGF0YS5zbGljZSgwLCBzaXplKSk7XG4gICAgdmFyIG5ld19iaWdzdHJpbmcgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmlnc3RyaW5nLmtpbmQsIGJpZ3N0cmluZy5sYXlvdXQsIFtzaXplXSwgbmV3X2RhdGEpO1xuICAgIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIoYmlnc3RyaW5nKTtcblxuICAgIHJldHVybiBuZXdfYmlnc3RyaW5nO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX29mZixkc3QsZHN0X29mZixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmcoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2ludF9jb21wYXJlXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nKGJhMSwgYmExX29mZiwgYmEyLCBiYTJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhMSwgYmExX29mZiArIGkpLCBjYW1sX2JhX2dldF8xKGJhMiwgYmEyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nKGJhLCBiYV9vZmYsIHN0ciwgc3RyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYSwgYmFfb2ZmICsgaSksIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQoc3RyLCBzdHJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNoclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY2hyKGJhLCBiYV9vZmYsIGNociwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoY2FtbF9iYV9nZXRfMShiYSwgYmFfb2ZmICsgaSkgPT0gY2hyKSB7XG4gICAgICByZXR1cm4gKGJhX29mZiArIGkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlXG5mdW5jdGlvbiBiaWdzdHJpbmdfYWxsb2MoXyxzaXplKXtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlKDEyLCAwLCBbMCxzaXplXSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIoeCl7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHViKHMxLCBpMSwgczIsIGkyLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzMSxpMSxzMixpMixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbXNldF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtc2V0X3N0dWIoYmlnc3RyaW5nLCB2X3Bvcywgdl9sZW4sIHZfY2hhcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICBjYW1sX2JhX3NldF8xKGJpZ3N0cmluZywgdl9wb3MgKyBpLCB2X2NoYXIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1jbXBfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSx2X3MxX3BvcyArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMSh2X3MyLHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2J5dGVzX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHZfczEsIHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2J5dGVzX2dldCh2X3MyLCB2X3MyX3BvcyArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xudmFyIGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyA9IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19maW5kXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfZmluZChicywgY2hyLCBwb3MsIGxlbil7XG4gIHdoaWxlKGxlbiA+IDApe1xuICAgIGlmKGNhbWxfYmFfZ2V0XzEoYnMscG9zKSA9PSBjaHIpIHJldHVybiBwb3M7XG4gICAgcG9zKys7XG4gICAgbGVuLS07XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQ2NFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQgPSBjYW1sX2hhc2hfbWl4X2ludDY0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQgPSBjYW1sX2hhc2hfbWl4X2ludDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0ID0gY2FtbF9oYXNoX21peF9mbG9hdDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nID0gY2FtbF9oYXNoX21peF9zdHJpbmc7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbFxuZnVuY3Rpb24gQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUoc2VlZCkge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoc2VlZCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG52YXIgY2FtbF9wYXJzZXJfdHJhY2UgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXksIGNhbWxfcGFyc2VyX3RyYWNlLGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgdmFyIHRibF9uYW1lc19jb25zdCA9IDE1O1xuICB2YXIgdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoMiwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcilcbiAge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PSAnXFx4MDAnKVxuICAgICAgcmV0dXJuIFwiPHVua25vd24gdG9rZW4+XCI7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnXFx4MDAnKVtudW1iZXJdO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRfdG9rZW4oc3RhdGUsIHRvaylcbiAge1xuICAgIHZhciB0b2tlbiwga2luZDtcbiAgICBpZiAodG9rIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2Jsb2NrXSwgdG9rWzBdKTtcbiAgICAgIGlmICh0eXBlb2YgdG9rWzFdID09IFwibnVtYmVyXCIpXG4gICAgICAgIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PSBcInN0cmluZ1wiKVxuICAgICAgICBraW5kID0gdG9rWzFdXG4gICAgICBlbHNlIGlmICh0b2tbMV0gaW5zdGFuY2VvZiBNbEJ5dGVzKVxuICAgICAgICBraW5kID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0b2tbMV0pXG4gICAgICBlbHNlXG4gICAgICAgIGtpbmQgPSBcIl9cIlxuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4gKyBcIihcIiArIGtpbmQgKyBcIilcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2NvbnN0XSwgdG9rKTtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgbmV4dDpzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4gKHN0YXRlLCBhcmcpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhayBuZXh0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgICAgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKVxuICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjsgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIGxhc3QgdG9rZW4gcmVhZFwiKTtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiBzaGlmdCB0byBzdGF0ZSBcIiArIHRhYmxlcy50YWJsZVtuMl0pO1xuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWR1Y2UgYnkgcnVsZSBcIiArIG4pO1xuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoYm9vbCkge1xuICB2YXIgb2xkZmxhZyA9IGNhbWxfcGFyc2VyX3RyYWNlO1xuICBjYW1sX3BhcnNlcl90cmFjZSA9IGJvb2w7XG4gIHJldHVybiBvbGRmbGFnO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmICh4KSB7IHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LGksb2xkLG4pe1xuICBpZih4W2krMV0gPT0gb2xkKSB7XG4gICAgeFtpKzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19zaGFyZWRcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZCh4KXtcbiAgcmV0dXJuIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX29ial91cGRhdGVfdGFnKGIsbyxuKSB7XG4gICAgaWYoYlswXT09bykgeyBiWzBdID0gbjsgcmV0dXJuIDEgfVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgaWYgKChvIGluc3RhbmNlb2YgQXJyYXkpICYmIG9bMF0gPT0gKG9bMF0gPj4+IDApICYmXG4gICAgICBjYW1sX29ial91cGRhdGVfdGFnKG8sIDI0NiwgMjQ0KSkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuICBmdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI1MCk7XG4gIHJldHVybiAwOyAvLyB1bml0XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNDYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3JlYWRfcmVzdWx0XG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiAoY2FtbF9vYmpfdGFnKG8pID09IDI1MCk/b1sxXTpvO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA8IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuICh0ID09IDI0NSkgPyAxIDogMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIChnbG9iYWxUaGlzLm5hdmlnYXRvciYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCBcbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0ICh2b3V0cHV0LCB2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl07XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdO1xuICB2YXIgb3V0cHV0ID0gY2FtbF9tbF9jaGFubmVsc1t2b3V0cHV0XTtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IG91dHB1dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IG91dHB1dDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdCAodnN0ZG91dCwgdnN0ZGVycil7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVycjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkKGNoYW4pe1xuICB2YXIgaW5mbyA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbl07XG4gIHJldHVybiBpbmZvLm9mZnNldFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvLy8vLy8vLy8gQklOX1BST1RcblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGJpZ3N0cmluZywgaSl7XG4gIGlmIChpID4+PiAwID49IGJpZ3N0cmluZy5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zKTsgLy8gZmlyc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MrbGVuLTEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MpOyAgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgdmFyIHZpZXcgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KGxlbik7XG4gIHZhciBidWZmZXIgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheSh2aWV3LmJ1ZmZlcik7XG4gIGJ1ZmZlci5zZXQoc3JjLmRhdGEuc3ViYXJyYXkoc3JjX3Bvcywgc3JjX3BvcyArIChsZW4gKiA4KSkpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMCBcbiAgICBkc3RbZHN0X3BvcytpKzFdID0gdmlld1tpXTtcbiAgfVxuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YihzcmNfcG9zLHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDAgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3Bvcyk7IC8vIGZpcnN0IHBvcyBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zICsgbGVuIC0gMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3Bvcyk7IC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMFxuICBzcmNfcG9zID0gc3JjX3BvcyArIDFcbiAgdmFyIGZsb2F0NjQgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KHNyYy5zbGljZShzcmNfcG9zLHNyY19wb3MgKyBsZW4pKTtcbiAgdmFyIGZsb2F0NjRfdWludDggPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheShmbG9hdDY0LmJ1ZmZlcik7XG4gIHZhciB2aWV3ID0gZHN0LmRhdGEuc3ViYXJyYXkoZHN0X3BvcywgZHN0X3BvcyArIChsZW4gKiA4KSk7XG4gIHZpZXcuc2V0KGZsb2F0NjRfdWludDgpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEsIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIC8vIFtiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXSBpcyB1c2VkIHdpdGggbWl4ZWQgYmlnYXJyYXkga2luZHMuXG4gIC8vIENvbnZlcnRlciBldmVyeXRoaW5nIHRvIGJpZ2FycmF5IG9mIGNoYXIgYmVmb3JlIHRoZSBibGl0LlxuICBpZihzcmMua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIHNyYyA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShzcmMuZGF0YSk7XG4gIGlmKGRzdC5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgZHN0ID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGRzdC5kYXRhKTtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJfaW5pdGlhbGl6ZVxuZnVuY3Rpb24gY2FtbF9zdHJfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCh2KSB7XG4gIHYgPSB2IC0gKCh2ID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICB2ID0gKHYgJiAweDMzMzMzMzMzKSArICgodiA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgcmV0dXJuICgodiArICh2ID4+PiA0KSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+PiAyNDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MgY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4bih4KSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NseiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCkge1xuICB2YXIgbiA9IDMyO1xuICB2YXIgeTtcbiAgeSA9IHggPj4xNjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDg7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0geCA+PiA0OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDE7IGlmICh5ICE9IDApIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSB4O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY2x6KHgpIHtcbiAgdmFyIG4gPSA2NDtcbiAgdmFyIHk7XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTMyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMSk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0gY2FtbF9pbnQ2NF90b19pbnQzMih4KTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpIHtcbiAgaWYgKHggPT09IDApIHsgcmV0dXJuIDMyOyB9XG4gIHZhciBuID0gMTtcbiAgaWYgKCAoeCAmIDB4MDAwMEZGRkYpID09PSAwKSB7IG4gPSBuICsgMTY7IHggPSB4ID4+IDE2OyB9XG4gIGlmICggKHggJiAweDAwMDAwMEZGKSA9PT0gMCkgeyBuID0gbiArICA4OyB4ID0geCA+PiAgODsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwRikgPT09IDApIHsgbiA9IG4gKyAgNDsgeCA9IHggPj4gIDQ7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMDMpID09PSAwKSB7IG4gPSBuICsgIDI7IHggPSB4ID4+ICAyOyB9XG4gIHJldHVybiBuIC0gKHggJiAxKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FuZCwgY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY3R6KHgpIHtcbiAgaWYgKGNhbWxfaW50NjRfaXNfemVybyh4KSkgeyByZXR1cm4gNjQ7IH1cbiAgdmFyIG4gPSAxO1xuICBmdW5jdGlvbiBpc196ZXJvICh4KSAgICB7IHJldHVybiBjYW1sX2ludDY0X2lzX3plcm8oeCk7IH1cbiAgZnVuY3Rpb24gbGFuZCAoeCx5KSAgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9hbmQoeCwgeSk7IH1cbiAgZnVuY3Rpb24gc21hbGxfaW50NjQoeCkgeyByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoeCwwLDApOyB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMHhGRkZGRkYsIDB4MDAwMEZGLCAweDAwMDApKSkpIHtcbiAgICBuID0gbiArIDMyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwRkZGRikpKSkge1xuICAgIG4gPSBuICsgMTY7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMEZGKSkpKSB7XG4gICAgbiA9IG4gKyAgODsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwRikpKSkge1xuICAgIG4gPSBuICsgIDQ7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDMpKSkpIHtcbiAgICBuID0gbiArICAyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgfVxuICByZXR1cm4gbiAtIChjYW1sX2ludDY0X3RvX2ludDMyKGNhbWxfaW50NjRfYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAxKSkpKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSAxO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWV4cG9uZW50PT0wKSB7XG4gICAgbXVsWzFdID0gKG11bFsxXSAqIG11bFszXSkgfCAwO1xuICAgIG11bFsyXSA9IChtdWxbMV0gKiBtdWxbMV0pIHwgMDtcbiAgICBtdWxbM10gPSAobXVsWzJdICogbXVsWzFdKSB8IDA7XG4gICAgcmVzID0gKHJlcyAqIG11bFtleHBvbmVudCAmIDNdKSB8IDA7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCA+PiAyO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDEsMCk7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKGV4cG9uZW50KSkge1xuICAgIG11bFsxXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzNdKTtcbiAgICBtdWxbMl0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFsxXSk7XG4gICAgbXVsWzNdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzJdLCBtdWxbMV0pO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfbXVsKHJlcywgbXVsW2NhbWxfaW50NjRfbG8zMihleHBvbmVudCkgJiAzXSk7XG4gICAgZXhwb25lbnQgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKGV4cG9uZW50LCAyKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAscylcbn1cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9kb3VibGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX2RvdWJsZShkKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAsZCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfYW1fdGVzdGluZyBjb25zdFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBCYXNlX2FtX3Rlc3RpbmcoeCkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2dldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2Rscztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19sb2FkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19sb2FkKHJlZil7XG4gIHJldHVybiByZWZbMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuZnVuY3Rpb24gY2FtbF9hdG9taWNfY2FzKHJlZixvLG4pIHtcbiAgaWYocmVmWzFdID09PSBvKXtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2ZldGNoX2FkZChyZWYsIGkpIHtcbiAgdmFyIG9sZCA9IHJlZlsxXTtcbiAgcmVmWzFdICs9IGk7XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG5mdW5jdGlvbiBjYW1sX2F0b21pY19leGNoYW5nZShyZWYsIHYpIHtcbiAgdmFyIHIgPSByZWZbMV07XG4gIHJlZlsxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQoYSkge1xuICByZXR1cm4gWzAsIGFdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlblxudmFyIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8gPSBbMF1cbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbih1bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fc2V0X25hbWVcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3NldF9uYW1lKF9uYW1lKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuZnVuY3Rpb24gY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQodW5pdCkgeyByZXR1cm4gMSB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbnZhciBjYW1sX2RvbWFpbl9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsdGVybV9zeW5jKXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gICAgLy9UT0RPOiBmaXggZXhuIGNhc2VcbiAgICB0ZXJtX3N5bmNbMV0gPSBbMCwgWzAsIHJlc11dO1xuICAgIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLG11dGV4KXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKG11dGV4KTtcbiAgICByZXR1cm4gaWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9pZCh1bml0KXtcbiAgICByZXR1cm4gY2FtbF9kb21haW5faWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgodW5pdCl7XG4gICAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIE1sTXV0ZXgoKSB7XG4gIHRoaXMubG9ja2VkID0gZmFsc2Vcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9uZXdcbi8vUmVxdWlyZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbmV3KHVuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYodC5sb2NrZWQpXG4gICAgY2FtbF9mYWlsd2l0aChcIk11dGV4LmxvY2s6IG11dGV4IGFscmVhZHkgbG9ja2VkLiBDYW5ub3Qgd2FpdC5cIik7XG4gIGVsc2UgdC5sb2NrZWQgPSB0cnVlO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF90cnlfbG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF90cnlfbG9jayh0KSB7XG4gIGlmKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUElcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZiAodiBpbnN0YW5jZW9mIE9iamVjdCAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdLnJlZ2lzdGVyKSB4WzFdLnJlZ2lzdGVyKHYsIHVuZGVmaW5lZCwgdik7XG4gICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgfVxuICBlbHNlIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbMV0udW5yZWdpc3Rlcikge1xuICAgIHZhciBvbGQgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0uZGVyZWYoKTtcbiAgICBpZihvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvdW50ID0gMFxuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZil7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKClcbiAgICAgICAgICBpZihrZXkgPT09IG9sZCkgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoY291bnQgPT0gMSkgeFsxXS51bnJlZ2lzdGVyKG9sZCk7XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDBcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlLCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jcmVhdGUgKG4pIHtcbiAgdmFyIHggPSBjYW1sX3dlYWtfY3JlYXRlKG4pO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2tleSwgY2FtbF9lcGhlX3Vuc2V0X2tleVxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKHYgPT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2tleSh4LGkpXG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCxpLHZbMV0pXG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9rZXlcIik7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIHJldHVybiAod2Vhaz09PXVuZGVmaW5lZCk/MDpbMCwgd2Vha107XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2tleSxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRfY29weVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXlfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmICh6IGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHopXTtcbiAgcmV0dXJuIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19jaGVja1xuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2tleSh4LCBpKSB7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgaWYod2Vhaz09PXVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19ibGl0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9rZXkoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9zZXRfZGF0YSwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICB2YXIgbiA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICBpZihuID09PSB1bmRlZmluZWQpIGNhbWxfZXBoZV91bnNldF9kYXRhKGRzdCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKGRzdCwgbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwXG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0pXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKCEgKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KSkge1xuICAgICAgeFsxXSA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICgpIHsgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCkgfSk7XG4gICAgICAvL3JlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnJlZ2lzdGVyKGtleSwgdW5kZWZpbmVkLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpe1xuICAgICAgLy91bnJlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnVucmVnaXN0ZXIoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cbiIsIi8vUHJvdmlkZXM6IGpzX3BlcmZvcm1hbmNlXG52YXIganNfcGVyZm9ybWFuY2UgPSB7bWFyazogKGZ1bmN0aW9uICgpIHt9KSwgbWVhc3VyZTogKGZ1bmN0aW9uICgpIHt9KSB9O1xuaWYgKHR5cGVvZiBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlO1xufSBlbHNlIHtcbiAgdHJ5IHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IHJlcXVpcmUoJ3BlcmZfaG9va3MnKS5wZXJmb3JtYW5jZTtcbiAgfSBjYXRjaCAoX2UpIHtcbiAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oXCJjb3VsZG4ndCBsb2FkIHBlcmZvcm1hbmNlIGhvb2tzXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWFya1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tYXJrKG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tYXJrKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tZWFzdXJlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21lYXN1cmUobmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1lYXN1cmUoXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoc3RhcnQpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoZW5kKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21hcmtzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21hcmtzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWFya3MoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiLy9Qcm92aWRlczogY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpKGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vanNfaXRlcmF0ZV9wcm9wZXJ0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzX3RvX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vanNfaXRlcmF0ZV9wcm9wZXJ0aWVzKG8sIGYpIHtcbiAgdmFyIG5hbWU7XG4gIGZvcihuYW1lIGluIG8pIHtcbiAgICBpZihvLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBmKG5hbWUpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vIFRJTUVfTk9XXG5cbi8vUHJvdmlkZXM6IHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbnZhciBtc190b19uYW5vID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxMDAwKjEwMDApO1xuZnVuY3Rpb24gdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvKCl7XG4gICAgdmFyIG1zID0gRGF0ZS5ub3coKTtcbiAgICAvLyBtdWx0aXBsZSBieSB0d28gLSBpbnQ2MyBpbnRlZ2VycyBhcmUgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgIHZhciBtc19pNjMgPSBjYW1sX2ludDY0X29mX2Zsb2F0KG1zKjIpO1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChtc19pNjMsbXNfdG9fbmFubyk7XG59XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+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+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG4oKiBmb3IgYXRfZXhpdCAqKVxudHlwZSAnYSBhdG9taWNfdFxuZXh0ZXJuYWwgYXRvbWljX21ha2UgOiAnYSAtPiAnYSBhdG9taWNfdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsIGF0b21pY19nZXQgOiAnYSBhdG9taWNfdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGF0b21pY19jb21wYXJlX2FuZF9zZXQgOiAnYSBhdG9taWNfdCAtPiAnYSAtPiAnYSAtPiBib29sXG4gID0gXCIlYXRvbWljX2Nhc1wiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gYXRvbWljX21ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBhdG9taWNfbWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIGF0b21pY19jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IGF0b21pY19jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICAoIWRvX2RvbWFpbl9sb2NhbF9hdF9leGl0KSAoKTtcbiAgKGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgICAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICAgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgICAgPSBDb21wbGV4XG5tb2R1bGUgQ29uZGl0aW9uICAgICAgPSBDb25kaXRpb25cbm1vZHVsZSBEaWdlc3QgICAgICAgICA9IERpZ2VzdFxubW9kdWxlIERvbWFpbiAgICAgICAgID0gRG9tYWluXG5tb2R1bGUgRWZmZWN0ICAgICAgICAgPSBFZmZlY3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgICAgPSBHY1xubW9kdWxlIEhhc2h0YmwgICAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuXG5leHRlcm5hbCBmaWxlX2V4aXN0czogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2ZpbGVfZXhpc3RzXCJcbmV4dGVybmFsIGlzX2RpcmVjdG9yeSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19kaXJlY3RvcnlcIlxuZXh0ZXJuYWwgcmVtb3ZlOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVtb3ZlXCJcbmV4dGVybmFsIHJlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVuYW1lXCJcbmV4dGVybmFsIGdldGVudjogc3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0ZW52XCJcblxubGV0IGdldGVudl9vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKGdldGVudiBzKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5sZXQgaW50ZXJhY3RpdmUgPSByZWYgZmFsc2VcblxudHlwZSBzaWduYWxfYmVoYXZpb3IgPVxuICAgIFNpZ25hbF9kZWZhdWx0XG4gIHwgU2lnbmFsX2lnbm9yZVxuICB8IFNpZ25hbF9oYW5kbGUgb2YgKGludCAtPiB1bml0KVxuXG5leHRlcm5hbCBzaWduYWwgOiBpbnQgLT4gc2lnbmFsX2JlaGF2aW9yIC0+IHNpZ25hbF9iZWhhdmlvclxuICAgICAgICAgICAgICAgID0gXCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXJcIlxuXG5sZXQgc2V0X3NpZ25hbCBzaWdfbnVtIHNpZ19iZWggPSBpZ25vcmUoc2lnbmFsIHNpZ19udW0gc2lnX2JlaClcblxubGV0IHNpZ2FicnQgPSAtMVxubGV0IHNpZ2Fscm0gPSAtMlxubGV0IHNpZ2ZwZSA9IC0zXG5sZXQgc2lnaHVwID0gLTRcbmxldCBzaWdpbGwgPSAtNVxubGV0IHNpZ2ludCA9IC02XG5sZXQgc2lna2lsbCA9IC03XG5sZXQgc2lncGlwZSA9IC04XG5sZXQgc2lncXVpdCA9IC05XG5sZXQgc2lnc2VndiA9IC0xMFxubGV0IHNpZ3Rlcm0gPSAtMTFcbmxldCBzaWd1c3IxID0gLTEyXG5sZXQgc2lndXNyMiA9IC0xM1xubGV0IHNpZ2NobGQgPSAtMTRcbmxldCBzaWdjb250ID0gLTE1XG5sZXQgc2lnc3RvcCA9IC0xNlxubGV0IHNpZ3RzdHAgPSAtMTdcbmxldCBzaWd0dGluID0gLTE4XG5sZXQgc2lndHRvdSA9IC0xOVxubGV0IHNpZ3Z0YWxybSA9IC0yMFxubGV0IHNpZ3Byb2YgPSAtMjFcbmxldCBzaWdidXMgPSAtMjJcbmxldCBzaWdwb2xsID0gLTIzXG5sZXQgc2lnc3lzID0gLTI0XG5sZXQgc2lndHJhcCA9IC0yNVxubGV0IHNpZ3VyZyA9IC0yNlxubGV0IHNpZ3hjcHUgPSAtMjdcbmxldCBzaWd4ZnN6ID0gLTI4XG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3N3YXBfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHQgLT4gYm9vbFxuICA9IFwiY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFwiXG5leHRlcm5hbCBpc19zaGFyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfb2JqX2lzX3NoYXJlZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDNcblxubGV0IGZvcmNpbmdfdGFnID0gMjQ0XG5sZXQgY29udF90YWcgPSAyNDVcbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgQ2xvc3VyZSA9IHN0cnVjdFxuICB0eXBlIGluZm8gPSB7XG4gICAgYXJpdHk6IGludDtcbiAgICBzdGFydF9lbnY6IGludDtcbiAgfVxuXG4gIGxldCBpbmZvX29mX3JhdyAoaW5mbyA6IG5hdGl2ZWludCkgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludCBpblxuICAgIGxldCBhcml0eSA9XG4gICAgICAoKiBzaWduZWQ6IG5lZ2F0aXZlIGZvciB0dXBsZWQgZnVuY3Rpb25zICopXG4gICAgICBpZiBTeXMud29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gNTYpXG4gICAgICBlbHNlXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyAyNClcbiAgICBpblxuICAgIGxldCBzdGFydF9lbnYgPVxuICAgICAgKCogc3RhcnRfZW52IGlzIHVuc2lnbmVkLCBidXQgd2Uga25vdyBpdCBjYW4gYWx3YXlzIGZpdCBhbiBPQ2FtbFxuICAgICAgICAgaW50ZWdlciBzbyB3ZSB1c2UgW3RvX2ludF0gaW5zdGVhZCBvZiBbdW5zaWduZWRfdG9faW50XS4gKilcbiAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHRfbG9naWNhbCAoc2hpZnRfbGVmdCBpbmZvIDgpIDkpIGluXG4gICAgeyBhcml0eTsgc3RhcnRfZW52IH1cblxuICAoKiBub3RlOiB3ZSBleHBlY3QgYSBjbG9zdXJlLCBub3QgYW4gaW5maXggcG9pbnRlciAqKVxuICBsZXQgaW5mbyAob2JqIDogdCkgPVxuICAgIGFzc2VydCAodGFnIG9iaiA9IGNsb3N1cmVfdGFnKTtcbiAgICBpbmZvX29mX3JhdyAocmF3X2ZpZWxkIG9iaiAxKVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFN0ZXBoZW4gRG9sYW4sIFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNy0yMDE4IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlLiAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIG1ha2UgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGV4Y2hhbmdlIDogJ2EgdCAtPiAnYSAtPiAnYSA9IFwiJWF0b21pY19leGNoYW5nZVwiXG5leHRlcm5hbCBjb21wYXJlX2FuZF9zZXQgOiAnYSB0IC0+ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVhdG9taWNfY2FzXCJcbmV4dGVybmFsIGZldGNoX2FuZF9hZGQgOiBpbnQgdCAtPiBpbnQgLT4gaW50ID0gXCIlYXRvbWljX2ZldGNoX2FkZFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0IHNldCByIHggPSBpZ25vcmUgKGV4Y2hhbmdlIHIgeClcbmxldCBpbmNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAxKVxubGV0IGRlY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByICgtMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG4oKiBbdXBkYXRlX3RvX2ZvcmNpbmcgYmxrXSB0cmllcyB0byB1cGRhdGUgYSBbYmxrXSB3aXRoIFtsYXp5X3RhZ10gdG9cbiAgIFtmb3JjaW5nX3RhZ10gdXNpbmcgY29tcGFyZS1hbmQtc3dhcCAoQ0FTKSwgdGFraW5nIGNhcmUgdG8gaGFuZGxlIGNvbmN1cnJlbnRcbiAgIG1hcmtpbmcgb2YgdGhlIGhlYWRlciB3b3JkIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuIFJldHVybnMgWzBdIGlmIHRoZVxuICAgQ0FTIGlzIHN1Y2Nlc3NmdWwuIElmIHRoZSBDQVMgZmFpbHMsIHRoZW4gdGhlIHRhZyB3YXMgb2JzZXJ2ZWQgdG8gYmVcbiAgIHNvbWV0aGluZyBvdGhlciB0aGFuIFtsYXp5X3RhZ10gZHVlIHRvIGEgY29uY3VycmVudCBtdXRhdG9yLiBJbiB0aGlzIGNhc2UsXG4gICB0aGUgZnVuY3Rpb24gcmV0dXJucyBbMV0uICopXG5leHRlcm5hbCB1cGRhdGVfdG9fZm9yY2luZyA6IE9iai50IC0+IGludCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXCIgW0BAbm9hbGxvY11cblxuKCogW3Jlc2V0X3RvX2xhenkgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aCBbT2JqLmZvcmNpbmdfdGFnXVxuICAgYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmxhenlfdGFnXSwgdGFraW5nIGNhcmUgdG8gaGFuZGxlIGNvbmN1cnJlbnRcbiAgIG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gKilcbmV4dGVybmFsIHJlc2V0X3RvX2xhenkgOiBPYmoudCAtPiB1bml0ID0gXCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVwiIFtAQG5vYWxsb2NdXG5cbigqIFt1cGRhdGVfdG9fZm9yd2FyZCBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoXG4gICBbT2JqLmZvcmNpbmdfdGFnXSBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmouZm9yd2FyZF90YWddLCB0YWtpbmcgY2FyZSB0b1xuICAgaGFuZGxlIGNvbmN1cnJlbnQgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLlxuICopXG5leHRlcm5hbCB1cGRhdGVfdG9fZm9yd2FyZCA6IE9iai50IC0+IHVuaXQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFwiIFtAQG5vYWxsb2NdXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfYmxvY2sgYmxrID1cbiAgbGV0IGIgPSBPYmoucmVwciBibGsgaW5cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIGIgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoKSk7ICgqIFJlbGVhc2UgdGhlIGNsb3N1cmUgKilcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmVzZXRfdG9fbGF6eSBiO1xuICAgIHJhaXNlIGVcblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV92YWxfYmxvY2sgYmxrID1cbiAgbGV0IGIgPSBPYmoucmVwciBibGsgaW5cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIGIgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoKSk7ICgqIFJlbGVhc2UgdGhlIGNsb3N1cmUgKilcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gIHJlc3VsdFxuXG4oKiBDYWxsZWQgYnkgW2ZvcmNlX2dlbl0gKilcbmxldCBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWwgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFdlIGV4cGVjdCB0aGUgdGFnIHRvIGJlIFtsYXp5X3RhZ10sIGJ1dCBtYXkgYmUgb3RoZXIgdGFncyBkdWUgdG9cbiAgICAgY29uY3VycmVudCBmb3JjaW5nIG9mIGxhenkgdmFsdWVzLiAqKVxuICBtYXRjaCB1cGRhdGVfdG9fZm9yY2luZyAoT2JqLnJlcHIgYmxrKSB3aXRoXG4gIHwgMCB3aGVuIG9ubHlfdmFsIC0+IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGtcbiAgfCAwIC0+IGRvX2ZvcmNlX2Jsb2NrIGJsa1xuICB8IF8gLT4gcmFpc2UgVW5kZWZpbmVkXG5cbigqIHVzZWQgaW4gdGhlICVsYXp5X2ZvcmNlIHByaW1pdGl2ZSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgYmxrID0gZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsOmZhbHNlIGJsa1xuXG4oKiBbZm9yY2VfZ2VuIH5vbmx5X3ZhbDpmYWxzZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpc1xuICAgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmUgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzXG4gICBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5sZXQgZm9yY2VfZ2VuIH5vbmx5X3ZhbCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXQgY291bGQgaGF2ZSBiZWVuXG4gICAgICAgc2hvcnRjdXQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSkuIFRoaXMgaXMgbm90IGFuIGlzc3VlIGhlcmUgYXQgdGhlIG1vbWVudCBzaW5jZVxuICAgICAgIFtPYmoudGFnXSBpcyBub3Qgc2ltcGxpZmllZCBieSB0aGUgY29tcGlsZXIsIGFuZCBHUFIjNzEzIGFsc29cbiAgICAgICBlbnN1cmVzIHRoYXQgbm8gdmFsdWUgd2lsbCBiZSBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgKCogU1RBUlQgbm8gc2FmZSBwb2ludHMuIElmIGEgR0Mgb2NjdXJzIGhlcmUsIHRoZW4gdGhlIG9iamVjdCBbeF0gbWF5IGJlXG4gICAgIHNob3J0LWNpcmN1aXRlZCwgYW5kIGdldHRpbmcgdGhlIGZpcnN0IGZpZWxkIG9mIFt4XSB3b3VsZCBnZXQgdXMgdGhlIHdyb25nXG4gICAgIHZhbHVlLiBMdWNraWx5LCB0aGUgY29tcGlsZXIgZG9lcyBub3QgaW5zZXJ0IEdDIHNhZmUgcG9pbnRzIGF0IHRoaXMgcGxhY2UsXG4gICAgIHNvIGl0IGlzIG9rLiAqKVxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW5cbiAgICAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKVxuICAoKiBFTkQgbm8gc2FmZSBwb2ludHMgKilcbiAgZWxzZSBpZiB0ID0gT2JqLmZvcmNpbmdfdGFnIHRoZW4gcmFpc2UgVW5kZWZpbmVkXG4gIGVsc2UgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWwgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcbmV4dGVybmFsIGZvcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5sZXQgZm9yY2VfdmFsIGwgPSBDYW1saW50ZXJuYWxMYXp5LmZvcmNlX2dlbiB+b25seV92YWw6dHJ1ZSBsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8XG4gICAgIHQgPSBPYmouZm9yY2luZ190YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+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+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+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+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4MDA3RiAtPiAxXG58IHUgd2hlbiB1IDw9IDB4MDdGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAzXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHV0Zl8xNl9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldCByZWMgaW5pdF90YWlscmVjX2F1eCBhY2MgaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBhY2NcbiAgZWxzZSBpbml0X3RhaWxyZWNfYXV4IChmIGkgOjogYWNjKSAoaSsxKSBuIGZcblxubGV0IHJlYyBpbml0X2F1eCBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgciA9IGYgaSBpblxuICAgIHIgOjogaW5pdF9hdXggKGkrMSkgbiBmXG5cbmxldCByZXZfaW5pdF90aHJlc2hvbGQgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDEwXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzXG4gICAgIHNtYWxsLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpZiBsZW4gPiByZXZfaW5pdF90aHJlc2hvbGQgdGhlbiByZXYgKGluaXRfdGFpbHJlY19hdXggW10gMCBsZW4gZilcbiAgZWxzZSBpbml0X2F1eCAwIGxlbiBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBhIGluIHIgOjogbWFwIGYgbFxuXG5sZXQgcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGkgYSBpbiByIDo6IG1hcGkgKGkgKyAxKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXQgcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gbGV0IHIgPSBmIGExIGEyIGluIHIgOjogbWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9hbGwgcCA9XG4gIGxldCByZWMgZmluZCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjdVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBmaW5kICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIGFjY3UgbCBpblxuICBmaW5kIFtdXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXQgZmlsdGVyaSBwIGwgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY1xuICB8IHg6OmwgLT4gYXV4IChpICsgMSkgKGlmIHAgaSB4IHRoZW4geDo6YWNjIGVsc2UgYWNjKSBsXG4gIGluXG4gIGF1eCAwIFtdIGxcblxubGV0IGZpbHRlcl9tYXAgZiA9XG4gIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGFjY3UgbFxuICAgICAgICB8IFNvbWUgdiAtPiBhdXggKHYgOjogYWNjdSkgbFxuICBpblxuICBhdXggW11cblxubGV0IGNvbmNhdF9tYXAgZiBsID1cbiAgbGV0IHJlYyBhdXggZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgbGV0IHhzID0gZiB4IGluXG4gICAgICAgYXV4IGYgKHJldl9hcHBlbmQgeHMgYWNjKSBsXG4gIGluIGF1eCBmIFtdIGxcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSBsaXN0IG9mIGxlbmd0aCBiZXR3ZWVuIGFib3V0IDEwMDAwMCAoZGVwZW5kaW5nIG9uIHRoZSBtaW5vclxuICAgaGVhcCBzaXplIGFuZCB0aGUgdHlwZSBvZiB0aGUgbGlzdCkgYW5kIFN5cy5tYXhfYXJyYXlfc2l6ZSwgaXQgaXNcbiAgIGFjdHVhbGx5IGZhc3RlciB0byB1c2UgdGhlIGZvbGxvd2luZywgYnV0IGl0IG1pZ2h0IGFsc28gdXNlIG1vcmUgbWVtb3J5XG4gICBiZWNhdXNlIHRoZSBhcmd1bWVudCBsaXN0IGNhbm5vdCBiZSBkZWFsbG9jYXRlZCBpbmNyZW1lbnRhbGx5LlxuXG4gICBBbHNvLCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBpbiB0aGlzIGNvZGUgb3IgaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBvYmpfdHJ1bmNhdGUuXG5cbmV4dGVybmFsIG9ial90cnVuY2F0ZSA6ICdhIGFycmF5IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5cbmxldCBhcnJheV90b19saXN0X2luX3BsYWNlIGEgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBhY2N1IG4gcCA9XG4gICAgaWYgcCA8PSAwIHRoZW4gYWNjdSBlbHNlIGJlZ2luXG4gICAgICBpZiBwID0gbiB0aGVuIGJlZ2luXG4gICAgICAgIG9ial90cnVuY2F0ZSBhIHA7XG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgKG4tMTAwMCkgKHAtMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgbiAocC0xKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgW10gKGwtMTAwMCkgbFxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gIEFycmF5LnN0YWJsZV9zb3J0IGNtcCBhO1xuICBhcnJheV90b19saXN0X2luX3BsYWNlIGFcblxuKilcblxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aF93aXRoIGwgbiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgaWYgbiA9IDAgdGhlbiAwIGVsc2VcbiAgICAgIGlmIG4gPiAwIHRoZW4gLTEgZWxzZSAxXG4gIHwgXyA6OiBsIC0+XG4gICAgaWYgbiA8PSAwIHRoZW4gMSBlbHNlXG4gICAgICBjb21wYXJlX2xlbmd0aF93aXRoIGwgKG4tMSlcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCB1bnNhZmVfZXNjYXBlIHMgPVxuICAoKiBXZSBwZXJmb3JtIHR3byBwYXNzZXMgb24gdGhlIGlucHV0IHNlcXVlbmNlLCBvbmUgdG8gY29tcHV0ZSB0aGVcbiAgICAgcmVzdWx0IHNpemUgYW5kIG9uZSB0byB3cml0ZSB0aGUgcmVzdWx0LlxuXG4gICAgICMxMTUwOCwgIzExNTA5OiBUaGlzIGxvZ2ljIHdvdWxkIGJlIGluY29ycmVjdCBpbiBwcmVzZW5jZSBvZlxuICAgICBjb25jdXJyZW50IG1vZGlmaWNhdGlvbiB0byB0aGUgaW5wdXQsIG1ha2luZyB0aGUgdXNlIG9mXG4gICAgIFt1bnNhZmVfc2V0XSBiZWxvdyBtZW1vcnktdW5zYWZlLlxuXG4gICAgIFByZWNvbmRpdGlvbjogVGhpcyBmdW5jdGlvbiBtYXkgYmUgc2FmZWx5IGNhbGxlZCBvbjpcbiAgICAgLSBhbiBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZVxuICAgICAtIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSAodGhlIGZ1bmN0aW9uIHRha2VzIG93bmVyc2hpcClcblxuICAgICBJbiBlaXRoZXIgY2FzZSB3ZSByZXR1cm4gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlLlxuICAqKVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIHNcbiAgZWxzZSBiZWdpblxuICAgIGxldCBzJyA9IGNyZWF0ZSAhbiBpblxuICAgIG4gOj0gMDtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICBiZWdpbiBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgfCAoJyAnIC4uICd+JykgYXMgYyAtPiB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIGxldCBhID0gY2hhcl9jb2RlIGMgaW5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSAvIDEwMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyAoYSAvIDEwKSBtb2QgMTApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSBtb2QgMTApKTtcbiAgICAgIGVuZDtcbiAgICAgIGluY3IgblxuICAgIGRvbmU7XG4gICAgcydcbiAgZW5kXG5cbmxldCBlc2NhcGVkIGIgPVxuICBsZXQgYiA9IGNvcHkgYiBpblxuICAoKiBXZSBjb3B5IG91ciBpbnB1dCB0byBvYnRhaW4gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlIFtiXVxuICAgICB0byBzYXRpc2Z5IFt1bnNhZmVfZXNjYXBlXSdzIHByZWNvbmRpdGlvbiAqKVxuICB1bnNhZmVfZXNjYXBlIGJcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGJ1ZiA9IHJlZiAobWFrZSAyNTYgJ1xcMDAwJykgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgKCogcmVzaXplICopXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWluICgyICogbGVuZ3RoICFidWYpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgIGlmIGxlbmd0aCAhYnVmID0gbmV3X2xlbiB0aGVuIGZhaWx3aXRoIFwiQnl0ZXMub2Zfc2VxOiBjYW5ub3QgZ3JvdyBieXRlc1wiO1xuICAgIGxldCBuZXdfYnVmID0gbWFrZSBuZXdfbGVuICdcXDAwMCcgaW5cbiAgICBibGl0ICFidWYgMCBuZXdfYnVmIDAgIW47XG4gICAgYnVmIDo9IG5ld19idWZcbiAgaW5cbiAgU2VxLml0ZXJcbiAgICAoZnVuIGMgLT5cbiAgICAgICBpZiAhbiA9IGxlbmd0aCAhYnVmIHRoZW4gcmVzaXplKCk7XG4gICAgICAgc2V0ICFidWYgIW4gYztcbiAgICAgICBpbmNyIG4pXG4gICAgaTtcbiAgc3ViICFidWYgMCAhblxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiBUaGUgZ2V0XyBmdW5jdGlvbnMgYXJlIGFsbCBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2J5dGVzX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjRcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG4gIGVsc2Ugc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHggZWxzZVxuICB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuXG5sZXQgc2V0X2ludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQxNl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X3VpbnQ4ID0gc2V0X2ludDhcbmxldCBzZXRfdWludDE2X25lID0gc2V0X2ludDE2X25lXG5sZXQgc2V0X3VpbnQxNl9iZSA9IHNldF9pbnQxNl9iZVxubGV0IHNldF91aW50MTZfbGUgPSBzZXRfaW50MTZfbGVcblxuKCogVVRGIGNvZGVjcyBhbmQgdmFsaWRhdGlvbnMgKilcblxubGV0IGRlY19pbnZhbGlkID0gVWNoYXIudXRmX2RlY29kZV9pbnZhbGlkXG5sZXRbQGlubGluZV0gZGVjX3JldCBuIHUgPSBVY2hhci51dGZfZGVjb2RlIG4gKFVjaGFyLnVuc2FmZV9vZl9pbnQgdSlcblxuKCogSW4gY2FzZSBvZiBkZWNvZGluZyBlcnJvciwgaWYgd2UgZXJyb3Igb24gdGhlIGZpcnN0IGJ5dGUsIHdlXG4gICBjb25zdW1lIHRoZSBieXRlLCBvdGhlcndpc2Ugd2UgY29uc3VtZSB0aGUgW25dIGJ5dGVzIHByZWNlZGluZ1xuICAgdGhlIGVycm9yaW5nIGJ5dGUuXG5cbiAgIFRoaXMgbWVhbnMgdGhhdCBpZiBhIGNsaWVudCB1c2VzIGRlY29kZXMgd2l0aG91dCBjYXJpbmcgYWJvdXRcbiAgIHZhbGlkaXR5IGl0IG5hdHVyYWxseSByZXBsYWNlIGJvZ3VzIGRhdGEgd2l0aCBVY2hhci5yZXAgYWNjb3JkaW5nXG4gICB0byB0aGUgV0hBVFdHIEVuY29kaW5nIHN0YW5kYXJkLiBPdGhlciBzY2hlbWVzIGFyZSBwb3NzaWJsZSBieVxuICAgY29uc3VsdGluZyB0aGUgbnVtYmVyIG9mIHVzZWQgYnl0ZXMgb24gaW52YWxpZCBkZWNvZGVzLiBGb3IgbW9yZVxuICAgZGV0YWlscyBzZWUgaHR0cHM6Ly9oc2l2b25lbi5maS9icm9rZW4tdXRmLTgvXG5cbiAgIEZvciB0aGlzIHJlYXNvbiBpbiBbZ2V0X3V0Zl84X3VjaGFyXSB3ZSBncmFkdWFsbHkgY2hlY2sgdGhlIG5leHRcbiAgIGJ5dGUgaXMgYXZhaWxhYmxlIHJhdGhlciB0aGFuIGRvaW5nIGl0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxuICAgZmlyc3QgYnl0ZS4gQ29udHJhc3Qgd2l0aCBbaXNfdmFsaWRfdXRmXzhdLiAqKVxuXG4oKiBVVEYtOCAqKVxuXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194QkYgYiA9IGIgbHNyIDYgPD4gMGIxMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94QTBfdG9feEJGIGIgPSBiIGxzciA1IDw+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+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpbiBidHMgQEBcbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChCLmNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0ID0gKCBeIClcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXIgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlcmkgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbmxldCBtYXAgZiBzID1cbiAgQi5tYXAgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IG1hcGkgZiBzID1cbiAgQi5tYXBpIGYgKGJvcyBzKSB8PiBidHNcbmxldCBmb2xkX3JpZ2h0IGYgeCBhID1cbiAgQi5mb2xkX3JpZ2h0IGYgKGJvcyB4KSBhXG5sZXQgZm9sZF9sZWZ0IGYgYSB4ID1cbiAgQi5mb2xkX2xlZnQgZiBhIChib3MgeClcbmxldCBleGlzdHMgZiBzID1cbiAgQi5leGlzdHMgZiAoYm9zIHMpXG5sZXQgZm9yX2FsbCBmIHMgPVxuICBCLmZvcl9hbGwgZiAoYm9zIHMpXG5cbigqIEJld2FyZTogd2UgY2Fubm90IHVzZSBCLnRyaW0gb3IgQi5lc2NhcGUgYmVjYXVzZSB0aGV5IGFsd2F5cyBtYWtlIGFcbiAgIGNvcHksIGJ1dCBTdHJpbmcubWxpIHNwZWxscyBvdXQgc29tZSBjYXNlcyB3aGVyZSB3ZSBhcmUgbm90IGFsbG93ZWRcbiAgIHRvIG1ha2UgYSBjb3B5LiAqKVxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGlmIHMgPSBcIlwiIHRoZW4gc1xuICBlbHNlIGlmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgMCkgfHwgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAobGVuZ3RoIHMgLSAxKSlcbiAgICB0aGVuIGJ0cyAoQi50cmltIChib3MgcykpXG4gIGVsc2Ugc1xuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IGIgPSBib3MgcyBpblxuICAoKiBXZSBzYXRpc2Z5IFt1bnNhZmVfZXNjYXBlXSdzIHByZWNvbmRpdGlvbiBieSBwYXNzaW5nIGFuXG4gICAgIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlIFtiXS4gKilcbiAgYnRzIChCLnVuc2FmZV9lc2NhcGUgYilcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaCA6IGludCAtPiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N0cmluZ19oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaCAwIHhcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAyMFxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+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+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgbWFwOiAoZWx0IC0+IGVsdCkgLT4gdCAtPiB0XG4gICAgdmFsIGZvbGQ6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICAgIHZhbCBmaW5kOiBlbHQgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9vcHQ6IGVsdCAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06ICBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBjb3B5ID1cbiAgbGV0IHJlYyBjb3B5IHFfcmVzIHByZXYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gcV9yZXMubGFzdCA8LSBwcmV2OyBxX3Jlc1xuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IHJlcyA9IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gaW5cbiAgICAgIGJlZ2luIG1hdGNoIHByZXYgd2l0aFxuICAgICAgfCBOaWwgLT4gcV9yZXMuZmlyc3QgPC0gcmVzXG4gICAgICB8IENvbnMgcCAtPiBwLm5leHQgPC0gcmVzXG4gICAgICBlbmQ7XG4gICAgICBjb3B5IHFfcmVzIHJlcyBuZXh0XG4gIGluXG4gIGZ1biBxIC0+IGNvcHkgeyBsZW5ndGggPSBxLmxlbmd0aDsgZmlyc3QgPSBOaWw7IGxhc3QgPSBOaWwgfSBOaWwgcS5maXJzdFxuXG5sZXQgaXNfZW1wdHkgcSA9XG4gIHEubGVuZ3RoID0gMFxuXG5sZXQgbGVuZ3RoIHEgPVxuICBxLmxlbmd0aFxuXG5sZXQgaXRlciA9XG4gIGxldCByZWMgaXRlciBmIGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBmIGNvbnRlbnQ7XG4gICAgICBpdGVyIGYgbmV4dFxuICBpblxuICBmdW4gZiBxIC0+IGl0ZXIgZiBxLmZpcnN0XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBmb2xkIGYgYWNjdSBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBhY2N1XG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBjb250ZW50IGluXG4gICAgICBmb2xkIGYgYWNjdSBuZXh0XG4gIGluXG4gIGZ1biBmIGFjY3UgcSAtPiBmb2xkIGYgYWNjdSBxLmZpcnN0XG5cbmxldCB0cmFuc2ZlciBxMSBxMiA9XG4gIGlmIHExLmxlbmd0aCA+IDAgdGhlblxuICAgIG1hdGNoIHEyLmxhc3Qgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTEubGVuZ3RoO1xuICAgICAgcTIuZmlyc3QgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuICAgIHwgQ29ucyBsYXN0IC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTIubGVuZ3RoICsgcTEubGVuZ3RoO1xuICAgICAgbGFzdC5uZXh0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBxID1cbiAgbGV0IHJlYyBhdXggYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgIHwgTmlsIC0+IFNlcS5OaWxcbiAgICB8IENvbnMgeyBjb250ZW50PXg7IG5leHQ7IH0gLT4gU2VxLkNvbnMgKHgsIGF1eCBuZXh0KVxuICBpblxuICBhdXggcS5maXJzdFxuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHEgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHEgZztcbiAgcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxuKCogVGhlIFtpbm5lcl9idWZmZXJdIHR5cGUgZW5zdXJlcyB0aGF0IHRoZSBbbGVuZ3RoXSBhbmQgW2J1ZmZlcl0gZmllbGRzIGFyZVxuICAgYWx3YXlzIHN5bmNocm9uaXplZCwgW2xlbmd0aCA9IEJ5dGVzLmxlbmd0aCBidWZmZXJdLCBldmVuIGluIHByZXNlbmNlXG4gICBvZiBkYXRhIHJhY2VzLlxuKilcbnR5cGUgaW5uZXJfYnVmZmVyID0ge1xuICBidWZmZXI6IGJ5dGVzO1xuICBsZW5ndGg6IGludDtcbn1cblxudHlwZSB0ID1cbiB7bXV0YWJsZSBpbm5lciA6IGlubmVyX2J1ZmZlcjtcbiAgbXV0YWJsZSBwb3NpdGlvbiA6IGludDtcbiAgaW5pdGlhbF9idWZmZXIgOiBieXRlc31cbigqIEludmFyaWFudHM6IGFsbCBwYXJ0cyBvZiB0aGUgY29kZSBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyB0aGF0OlxuICAgLSBbaW5uZXIubGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGlubmVyLmJ1ZmZlcl1cbiAgIEluIGFic2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgYWxzbyBoYXZlXG4gICAtIFswIDw9IGIucG9zaXRpb24gPD0gYi5pbm5lci5sZW5ndGhdXG5cbiAgIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IFtiLnBvc2l0aW9uID0gYi5pbm5lci5sZW5ndGhdIGlzIGxlZ2FsLFxuICAgaXQgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZFxuICAgYmVmb3JlIGFueSBmdXJ0aGVyIGFkZGl0aW9uLiAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuIGxldCBuID0gaWYgbiA8IDEgdGhlbiAxIGVsc2UgbiBpblxuIGxldCBuID0gaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBlbHNlIG4gaW5cbiBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4geyBpbm5lciA9IHsgYnVmZmVyID0gczsgbGVuZ3RoID0gbn07IHBvc2l0aW9uID0gMDsgaW5pdGlhbF9idWZmZXIgPSBzfVxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5sZXQgdG9fYnl0ZXMgYiA9IEJ5dGVzLnN1YiBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciBvZnMgbGVuXG5cblxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQnl0ZXMuYmxpdCBzcmMuaW5uZXIuYnVmZmVyIHNyY29mZiBkc3QgZHN0b2ZmIGxlblxuXG5cbmxldCBudGggYiBvZnMgPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IHBvc2l0aW9uIHx8IHBvc2l0aW9uID4gbGVuZ3RoIHRoZW5cbiAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2UgQnl0ZXMudW5zYWZlX2dldCBidWZmZXIgb2ZzXG5cblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxuXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgbGV0IGlubmVyID1cbiAgICB7IGJ1ZmZlciA9IGIuaW5pdGlhbF9idWZmZXI7IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBiLmluaXRpYWxfYnVmZmVyIH1cbiAgaW5cbiAgYi5pbm5lciA8LSBpbm5lclxuXG4oKiBbcmVzaXplIGIgbW9yZV0gZW5zdXJlcyB0aGF0IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmlubmVyLmxlbmd0aF0gaG9sZHNcbiAgIGJ5IGR5bmFtaWNhbGx5IGV4dGVuZGluZyBbYi5pbm5lcl0gaWYgbmVjZXNzYXJ5IC0tIGFuZCB0aHVzXG4gICBpbmNyZWFzaW5nIFtiLmlubmVyLmxlbmd0aF0uXG4qKVxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgb2xkX3BvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IG9sZF9sZW4gPSBiLmlubmVyLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIHdoaWxlIG9sZF9wb3MgKyBtb3JlID4gIW5ld19sZW4gZG8gbmV3X2xlbiA6PSAyICogIW5ld19sZW4gZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBiZWdpblxuICAgIGlmIG9sZF9wb3MgKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIHRoZW4gbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCJcbiAgZW5kO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJ5dGVzLmJsaXQgYi5pbm5lci5idWZmZXIgMCBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbjtcbiAgYi5pbm5lciA8LSB7IGJ1ZmZlciA9IG5ld19idWZmZXI7IGxlbmd0aCA9ICFuZXdfbGVuIH1cblxuKCogTm90ZTpcbiAgICBTb21lIG9mIHRoZSBmdW5jdGlvbnMgYmVsb3cgaGF2ZSBhIGZhc3QgcGF0aCB3aGVuIHRoZSBpbm5lclxuICBidWZmZXIgZG9lc24ndCBuZWVkIHRvIGJlIGV4dGVuZGVkLlxuICAgIEluIHRoaXMgY2FzZSwgaXQgaXMgcG9zc2libGUgdG8gdXNlIHVuc2FmZSBhY2Nlc3NlcyBvbiB0aGVcbiAgY29udGVudHMgb2YgdGhlIFtpbm5lcl0gZmllbGQgc2luY2UgaXRzIGZpZWxkcyBhcmUgaW1tdXRhYmxlLlxuICBJbiBwcmVzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBtYXkgYWNjZXNzIHRoZSB3cm9uZyBpbm5lciBidWZmZXIsIGJ1dCB3ZVxuICB3aWxsIHVzZSB0aGlzIGJ1ZmZlciBzYWZlbHkuXG4gIEFzIHNvb24gYXMgd2UgbmVlZCB0byByZXNpemUgdGhlIGJ1ZmZlciwgd2UgZmFsbCBiYWNrIHRvIHNhZmUgYWNjZXNzZXMuXG4qKVxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgcG9zID49IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIEJ5dGVzLnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGNcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX3NldCBidWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG5sZXQgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4ID0gNFxubGV0IHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXggPSA0XG5cbmxldCByZWMgYWRkX3V0Zl84X3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzhfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzhfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmJlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZiZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2bGVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgb2Zmc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyOyBsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgMCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgQ29sbMOoZ2UgZGUgRnJhbmNlIGFuZCBJTlJJQSBQYXJpcyAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBTZW1hcGhvcmVzICopXG5cbnR5cGUgc2VtID0ge1xuICBtdXQ6IE11dGV4LnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICgqIHByb3RlY3RzIFt2XSAqKVxuICBtdXRhYmxlIHY6IGludDsgICAgICAgICAgICAgICAgICAgICAgICgqIHRoZSBjdXJyZW50IHZhbHVlICopXG4gIG5vbnplcm86IENvbmRpdGlvbi50ICAgICAgICAgICAgICAgICAgKCogc2lnbmFsZWQgd2hlbiBbdiA+IDBdICopXG59XG5cbm1vZHVsZSBDb3VudGluZyA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgdiA9XG4gIGlmIHYgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZW1hcGhvcmUuQ291bnRpbmcuaW5pdDogd3JvbmcgaW5pdGlhbCB2YWx1ZVwiO1xuICB7IG11dCA9IE11dGV4LmNyZWF0ZSgpOyB2OyBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGlmIHMudiA8IG1heF9pbnQgdGhlbiBiZWdpblxuICAgIHMudiA8LSBzLnYgKyAxO1xuICAgIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICAgIE11dGV4LnVubG9jayBzLm11dFxuICBlbmQgZWxzZSBiZWdpblxuICAgIE11dGV4LnVubG9jayBzLm11dDtcbiAgICByYWlzZSAoU3lzX2Vycm9yIFwiU2VtYXBob3JlLkNvdW50aW5nLnJlbGVhc2U6IG92ZXJmbG93XCIpXG4gIGVuZFxuXG5sZXQgYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgd2hpbGUgcy52ID0gMCBkbyBDb25kaXRpb24ud2FpdCBzLm5vbnplcm8gcy5tdXQgZG9uZTtcbiAgcy52IDwtIHMudiAtIDE7XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgdHJ5X2FjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGxldCByZXQgPSBpZiBzLnYgPSAwIHRoZW4gZmFsc2UgZWxzZSAocy52IDwtIHMudiAtIDE7IHRydWUpIGluXG4gIE11dGV4LnVubG9jayBzLm11dDtcbiAgcmV0XG5cbmxldCBnZXRfdmFsdWUgcyA9IHMudlxuXG5lbmRcblxubW9kdWxlIEJpbmFyeSA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgYiA9XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7XG4gICAgdiA9IGlmIGIgdGhlbiAxIGVsc2UgMDtcbiAgICBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHMudiA8LSAxO1xuICBDb25kaXRpb24uc2lnbmFsIHMubm9uemVybztcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gMDtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gMDsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBUb20gS2VsbHksIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgTHRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgKCogTG93LWxldmVsIHByaW1pdGl2ZXMgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgKilcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcbiAgZXh0ZXJuYWwgc3Bhd24gOiAodW5pdCAtPiB1bml0KSAtPiBNdXRleC50IC0+IHRcbiAgICA9IFwiY2FtbF9kb21haW5fc3Bhd25cIlxuICBleHRlcm5hbCBzZWxmIDogdW5pdCAtPiB0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2lkXCJcbiAgZXh0ZXJuYWwgY3B1X3JlbGF4IDogdW5pdCAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFwiXG4gIGV4dGVybmFsIGdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQ6IHVuaXQgLT4gaW50XG4gICAgPSBcImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XCIgW0BAbm9hbGxvY11cbmVuZFxuXG5sZXQgY3B1X3JlbGF4ICgpID0gUmF3LmNwdV9yZWxheCAoKVxuXG50eXBlIGlkID0gUmF3LnRcblxudHlwZSAnYSBzdGF0ZSA9XG58IFJ1bm5pbmdcbnwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX211dGV4OiBNdXRleC50O1xuICB0ZXJtX2NvbmRpdGlvbjogQ29uZGl0aW9uLnQ7XG4gIHRlcm1fc3RhdGU6ICdhIHN0YXRlIHJlZiAoKiBwcm90ZWN0ZWQgYnkgW3Rlcm1fbXV0ZXhdICopXG59XG5cbm1vZHVsZSBETFMgPSBzdHJ1Y3RcblxuICB0eXBlIGRsc19zdGF0ZSA9IE9iai50IGFycmF5XG5cbiAgbGV0IHVuaXF1ZV92YWx1ZSA9IE9iai5yZXByIChyZWYgMClcblxuICBleHRlcm5hbCBnZXRfZGxzX3N0YXRlIDogdW5pdCAtPiBkbHNfc3RhdGUgPSBcIiVkbHNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXRfZGxzX3N0YXRlIDogZGxzX3N0YXRlIC0+IHVuaXQgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCB1bmlxdWVfdmFsdWUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IG1heWJlX2dyb3cgaWR4ID1cbiAgICBsZXQgc3QgPSBnZXRfZGxzX3N0YXRlICgpIGluXG4gICAgbGV0IHN6ID0gQXJyYXkubGVuZ3RoIHN0IGluXG4gICAgaWYgaWR4IDwgc3ogdGhlbiBzdFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgY29tcHV0ZV9uZXdfc2l6ZSBzID1cbiAgICAgICAgaWYgaWR4IDwgcyB0aGVuIHMgZWxzZSBjb21wdXRlX25ld19zaXplICgyICogcylcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N6ID0gY29tcHV0ZV9uZXdfc2l6ZSBzeiBpblxuICAgICAgbGV0IG5ld19zdCA9IEFycmF5Lm1ha2UgbmV3X3N6IHVuaXF1ZV92YWx1ZSBpblxuICAgICAgQXJyYXkuYmxpdCBzdCAwIG5ld19zdCAwIHN6O1xuICAgICAgc2V0X2Rsc19zdGF0ZSBuZXdfc3Q7XG4gICAgICBuZXdfc3RcbiAgICBlbmRcblxuICBsZXQgc2V0IChpZHgsIF9pbml0KSB4ID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgICgqIFtTeXMub3BhcXVlX2lkZW50aXR5XSBlbnN1cmVzIHRoYXQgZmxhbWJkYSBkb2VzIG5vdCBsb29rIGF0IHRoZSB0eXBlIG9mXG4gICAgICogW3hdLCB3aGljaCBtYXkgYmUgYSBbZmxvYXRdIGFuZCBjb25jbHVkZSB0aGF0IHRoZSBbc3RdIGlzIGEgZmxvYXQgYXJyYXkuXG4gICAgICogV2UgZG8gbm90IHdhbnQgT0NhbWwncyBmbG9hdCBhcnJheSBvcHRpbWlzYXRpb24ga2lja2luZyBpbiBoZXJlLiAqKVxuICAgIHN0LihpZHgpIDwtIE9iai5yZXByIChTeXMub3BhcXVlX2lkZW50aXR5IHgpXG5cbiAgbGV0IGdldCAoaWR4LCBpbml0KSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICBsZXQgdiA9IHN0LihpZHgpIGluXG4gICAgaWYgdiA9PSB1bmlxdWVfdmFsdWUgdGhlblxuICAgICAgbGV0IHYnID0gT2JqLnJlcHIgKGluaXQgKCkpIGluXG4gICAgICBzdC4oaWR4KSA8LSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2Jyk7XG4gICAgICBPYmoubWFnaWMgdidcbiAgICBlbHNlIE9iai5tYWdpYyB2XG5cbiAgbGV0IGdldF9pbml0aWFsX2tleXMgKCkgOiAoaW50ICogT2JqLnQpIGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChLSSAoKGlkeCwgXykgYXMgaywgc3BsaXQpKSAtPlxuICAgICAgICAgICAoaWR4LCBPYmoucmVwciAoc3BsaXQgKGdldCBrKSkpKVxuICAgICAgKEF0b21pYy5nZXQgcGFyZW50X2tleXMpXG5cbiAgbGV0IHNldF9pbml0aWFsX2tleXMgKGw6IChpbnQgKiBPYmoudCkgbGlzdCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaWR4LCB2KSAtPlxuICAgICAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpbiBzdC4oaWR4KSA8LSB2KVxuICAgICAgbFxuXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbigqKioqKioqKiBDYWxsYmFja3MgKioqKioqKioqKilcblxuKCogZmlyc3Qgc3Bhd24sIGRvbWFpbiBzdGFydHVwIGFuZCBhdCBleGl0IGZ1bmN0aW9uYWxpdHkgKilcbmxldCBmaXJzdF9kb21haW5fc3Bhd25lZCA9IEF0b21pYy5tYWtlIGZhbHNlXG5cbmxldCBmaXJzdF9zcGF3bl9mdW5jdGlvbiA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgYmVmb3JlX2ZpcnN0X3NwYXduIGYgPVxuICBpZiBBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpcnN0IGRvbWFpbiBhbHJlYWR5IHNwYXduZWRcIilcbiAgZWxzZSBiZWdpblxuICAgIGxldCBvbGRfZiA9ICFmaXJzdF9zcGF3bl9mdW5jdGlvbiBpblxuICAgIGxldCBuZXdfZiAoKSA9IG9sZF9mICgpOyBmICgpIGluXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gbmV3X2ZcbiAgZW5kXG5cbmxldCBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCkgPVxuICBpZiBub3QgKEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQpIHRoZW4gYmVnaW5cbiAgICBBdG9taWMuc2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRydWU7XG4gICAgIWZpcnN0X3NwYXduX2Z1bmN0aW9uKCk7XG4gICAgKCogUmVsZWFzZSB0aGUgb2xkIGZ1bmN0aW9uICopXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gKGZ1biAoKSAtPiAoKSlcbiAgZW5kXG5cbmxldCBhdF9leGl0X2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBhdF9leGl0IGYgPVxuICBsZXQgb2xkX2V4aXQgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgKCogVGhlIGRvbWFpbiB0ZXJtaW5hdGlvbiBjYWxsYmFja3MgKFthdF9leGl0XSkgYXJlIHJ1biBpblxuICAgICAgIGxhc3QtaW4tZmlyc3Qtb3V0IChMSUZPKSBvcmRlciBpbiBvcmRlciB0byBiZSBzeW1tZXRyaWMgd2l0aCB0aGUgZG9tYWluXG4gICAgICAgY3JlYXRpb24gY2FsbGJhY2tzIChbYXRfZWFjaF9zcGF3bl0pIHdoaWNoIHJ1biBpbiBmaXJzdC1pbi1maXNydC1vdXRcbiAgICAgICAoRklGTykgb3JkZXIuICopXG4gICAgZiAoKTsgb2xkX2V4aXQgKClcbiAgaW5cbiAgRExTLnNldCBhdF9leGl0X2tleSBuZXdfZXhpdFxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gIGxldCBmIDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBmICgpXG5cbmxldCBfID0gU3RkbGliLmRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IDo9IGRvX2F0X2V4aXRcblxuKCoqKioqKiogQ3JlYXRpb24gYW5kIFRlcm1pbmF0aW9uICoqKioqKioqKVxuXG5sZXQgc3Bhd24gZiA9XG4gIGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKTtcbiAgbGV0IHBrID0gRExTLmdldF9pbml0aWFsX2tleXMgKCkgaW5cblxuICAoKiBUaGUgW3Rlcm1fbXV0ZXhdIGFuZCBbdGVybV9jb25kaXRpb25dIGFyZSB1c2VkIHRvXG4gICAgIHN5bmNocm9uaXplIHdpdGggdGhlIGpvaW5pbmcgZG9tYWlucyAqKVxuICBsZXQgdGVybV9tdXRleCA9IE11dGV4LmNyZWF0ZSAoKSBpblxuICBsZXQgdGVybV9jb25kaXRpb24gPSBDb25kaXRpb24uY3JlYXRlICgpIGluXG4gIGxldCB0ZXJtX3N0YXRlID0gcmVmIFJ1bm5pbmcgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaFxuICAgICAgICBETFMuY3JlYXRlX2RscyAoKTtcbiAgICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICAgIGxldCByZXMgPSBmICgpIGluXG4gICAgICAgIHJlc1xuICAgICAgd2l0aFxuICAgICAgfCB4IC0+IE9rIHhcbiAgICAgIHwgZXhjZXB0aW9uIGV4IC0+IEVycm9yIGV4XG4gICAgaW5cblxuICAgIGxldCByZXN1bHQnID1cbiAgICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgICB0ZXJtaW5hdGVzIG5vcm1hbGx5IG9yIGV4Y2VwdGlvbmFsbHkuICopXG4gICAgICBtYXRjaCBkb19hdF9leGl0ICgpIHdpdGhcbiAgICAgIHwgKCkgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBleCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayBfIC0+XG4gICAgICAgICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgIEVycm9yIGV4XG4gICAgICAgICAgfCBFcnJvciBfIC0+XG4gICAgICAgICAgICAgICgqIElmIGJvdGggdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBhbmQgdGhlIFthdF9leGl0XSBjYWxsYmFja3NcbiAgICAgICAgICAgICAgICAgcmFpc2VkIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgIGVuZFxuICAgIGluXG5cbiAgICAoKiBTeW5jaHJvbml6ZSB3aXRoIGpvaW5pbmcgZG9tYWlucyAqKVxuICAgIE11dGV4LmxvY2sgdGVybV9tdXRleDtcbiAgICBtYXRjaCAhdGVybV9zdGF0ZSB3aXRoXG4gICAgfCBSdW5uaW5nIC0+XG4gICAgICAgIHRlcm1fc3RhdGUgOj0gRmluaXNoZWQgcmVzdWx0JztcbiAgICAgICAgQ29uZGl0aW9uLmJyb2FkY2FzdCB0ZXJtX2NvbmRpdGlvbjtcbiAgICB8IEZpbmlzaGVkIF8gLT5cbiAgICAgICAgZmFpbHdpdGggXCJpbnRlcm5hbCBlcnJvcjogQW0gSSBhbHJlYWR5IGZpbmlzaGVkP1wiXG4gICAgKCogW3Rlcm1fbXV0ZXhdIGlzIHVubG9ja2VkIGluIHRoZSBydW50aW1lIGFmdGVyIHRoZSBjbGVhbnVwIGZ1bmN0aW9ucyBvblxuICAgICAgIHRoZSBDIHNpZGUgYXJlIGZpbmlzaGVkLiAqKVxuICBpblxuICB7IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fbXV0ZXg7XG4gICAgdGVybV9tdXRleDtcbiAgICB0ZXJtX2NvbmRpdGlvbjtcbiAgICB0ZXJtX3N0YXRlIH1cblxubGV0IGpvaW4geyB0ZXJtX211dGV4OyB0ZXJtX2NvbmRpdGlvbjsgdGVybV9zdGF0ZTsgXyB9ID1cbiAgTXV0ZXgubG9jayB0ZXJtX211dGV4O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hdGNoICF0ZXJtX3N0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9jb25kaXRpb24gdGVybV9tdXRleDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIE11dGV4LnVubG9jayB0ZXJtX211dGV4O1xuICAgICAgICByZXNcbiAgaW5cbiAgbWF0Y2ggbG9vcCAoKSB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+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+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHggPVxuICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgKChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKSwgTm9uZSlcbiAgZWxzZVxuICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgIChjb25zdHJ1Y3RvciwgU29tZSAoZmllbGRzIHgpKVxuXG5sZXQgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB0ID1cbiAgbGV0IGNvbnN0cnVjdG9yLCBmaWVsZHNfb3B0ID0gZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHQgaW5cbiAgbWF0Y2ggZmllbGRzX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBjb25zdHJ1Y3RvclxuICB8IFNvbWUgZiAtPiBjb25zdHJ1Y3RvciBeIGZcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIHN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgKE9iai5yZXByIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG50eXBlIGJhY2t0cmFjZV9zbG90ID1cbiAgfCBLbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSAgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgICA6IHN0cmluZztcbiAgICAgIGxpbmVfbnVtYmVyIDogaW50O1xuICAgICAgc3RhcnRfY2hhciAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgICA6IGludDtcbiAgICAgIGlzX2lubGluZSAgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuKCogdG8gYXZvaWQgd2FybmluZyAqKVxubGV0IF8gPSBbS25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlOyBmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gMDsgc3RhcnRfY2hhciA9IDA7IGVuZF9jaGFyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5saW5lID0gZmFsc2U7IGRlZm5hbWUgPSBcIlwiIH07XG4gICAgICAgICBVbmtub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZSB9XVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbC5saW5lX251bWJlciBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbn1cblxubGV0IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICBTb21lIHtcbiAgICAgIGZpbGVuYW1lICAgID0gbC5maWxlbmFtZTtcbiAgICAgIGxpbmVfbnVtYmVyID0gbC5saW5lX251bWJlcjtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIEphY3F1ZXMtSGVucmkgSm91cmRhbiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFBhcmlzICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2LTIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgICopXG4oKiAgICAgZXQgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdCA9IHtcbiAgbWlub3Jfd29yZHMgOiBmbG9hdDtcbiAgcHJvbW90ZWRfd29yZHMgOiBmbG9hdDtcbiAgbWFqb3Jfd29yZHMgOiBmbG9hdDtcbiAgbWlub3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIG1ham9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBoZWFwX3dvcmRzIDogaW50O1xuICBoZWFwX2NodW5rcyA6IGludDtcbiAgbGl2ZV93b3JkcyA6IGludDtcbiAgbGl2ZV9ibG9ja3MgOiBpbnQ7XG4gIGZyZWVfd29yZHMgOiBpbnQ7XG4gIGZyZWVfYmxvY2tzIDogaW50O1xuICBsYXJnZXN0X2ZyZWUgOiBpbnQ7XG4gIGZyYWdtZW50cyA6IGludDtcbiAgY29tcGFjdGlvbnMgOiBpbnQ7XG4gIHRvcF9oZWFwX3dvcmRzIDogaW50O1xuICBzdGFja19zaXplIDogaW50O1xuICBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6IGludDtcbn1cblxudHlwZSBjb250cm9sID0ge1xuICBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBzcGFjZV9vdmVyaGVhZCA6IGludDtcbiAgdmVyYm9zZSA6IGludDtcbiAgbWF4X292ZXJoZWFkIDogaW50O1xuICBzdGFja19saW1pdCA6IGludDtcbiAgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuXG5sZXQgZXZlbnRsb2dfcGF1c2UgKCkgPSAoKVxubGV0IGV2ZW50bG9nX3Jlc3VtZSAoKSA9ICgpXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCBBdG9taWMudFxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgQXRvbWljLmdldCBhcmVjLmFjdGl2ZSB0aGVuIGJlZ2luXG4gICAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICAgIGFyZWMuZiAoKTtcbiAgZW5kXG5cblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IEF0b21pYy5tYWtlIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IEF0b21pYy5zZXQgYSBmYWxzZVxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHVuaXRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNZXNzYWdlIGRpZ2VzdCAoTUQ1KSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG5leHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxubGV0IHN0cmluZyBzdHIgPVxuICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxubGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxubGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG5sZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxubGV0IGZpbGUgZmlsZW5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlbmFtZSBpblxuICBtYXRjaCBjaGFubmVsIGljICgtMSkgd2l0aFxuICAgIHwgZCAtPiBjbG9zZV9pbiBpYzsgZFxuICAgIHwgZXhjZXB0aW9uIGUgLT4gY2xvc2VfaW4gaWM7IHJhaXNlIGVcblxubGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9XG4gIG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxubGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxubGV0IGNoYXJfaGV4IG4gPVxuICBDaGFyLnVuc2FmZV9jaHIgKG4gKyBpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnIGVsc2UgKENoYXIuY29kZSAnYScgLSAxMCkpXG5cbmxldCB0b19oZXggZCA9XG4gIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDMyIGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBmcm9tX2hleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEaWdlc3QuZnJvbV9oZXhcIilcbiAgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIEJ5dGVzLnNldCByZXN1bHQgaSAoQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIE1hbnVlbCBTZXJyYW5vIGV0IFhhdmllciBMZXJveSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0JpZ2FycmF5XTogbGFyZ2UsIG11bHRpLWRpbWVuc2lvbmFsLCBudW1lcmljYWwgYXJyYXlzICopXG5cbigqIFRoZXNlIHR5cGVzIGluIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHRhYmxlcyBpblxuICAgLi4vdHlwaW5nL3R5cGVvcHQubWwgKilcblxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxudHlwZSAoJ2EsICdiKSBraW5kID1cbiAgICBGbG9hdDMyIDogKGZsb2F0LCBmbG9hdDMyX2VsdCkga2luZFxuICB8IEZsb2F0NjQgOiAoZmxvYXQsIGZsb2F0NjRfZWx0KSBraW5kXG4gIHwgSW50OF9zaWduZWQgOiAoaW50LCBpbnQ4X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3Vuc2lnbmVkIDogKGludCwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl9zaWduZWQgOiAoaW50LCBpbnQxNl9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfdW5zaWduZWQgOiAoaW50LCBpbnQxNl91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQzMiA6IChpbnQzMiwgaW50MzJfZWx0KSBraW5kXG4gIHwgSW50NjQgOiAoaW50NjQsIGludDY0X2VsdCkga2luZFxuICB8IEludCA6IChpbnQsIGludF9lbHQpIGtpbmRcbiAgfCBOYXRpdmVpbnQgOiAobmF0aXZlaW50LCBuYXRpdmVpbnRfZWx0KSBraW5kXG4gIHwgQ29tcGxleDMyIDogKENvbXBsZXgudCwgY29tcGxleDMyX2VsdCkga2luZFxuICB8IENvbXBsZXg2NCA6IChDb21wbGV4LnQsIGNvbXBsZXg2NF9lbHQpIGtpbmRcbiAgfCBDaGFyIDogKGNoYXIsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2tpbmQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ2FtYml1bSwgQ29sbGVnZSBkZSBGcmFuY2UgYW5kIElucmlhICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIG9wZW4gQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgZXh0ZXJuYWwgbmV4dDogdCAtPiAoaW50NjRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbHhtX25leHRcIiBcImNhbWxfbHhtX25leHRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPVxuICAgIEFycmF5MS5jcmVhdGUgSW50NjQgQ19sYXlvdXQgNFxuXG4gIGxldCBzZXQgcyBpMSBpMiBpMyBpNCA9XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAwIChJbnQ2NC5sb2dvciBpMSAxTCk7ICgqIG11c3QgYmUgb2RkICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAxIGkyO1xuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMiAoaWYgaTMgPD4gMEwgdGhlbiBpMyBlbHNlIDFMKTsgKCogbXVzdCBub3QgYmUgMCAqKVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMyAoaWYgaTQgPD4gMEwgdGhlbiBpNCBlbHNlIDJMKSAoKiBtdXN0IG5vdCBiZSAwICopXG5cbiAgbGV0IG1rIGkxIGkyIGkzIGk0ID1cbiAgICBsZXQgcyA9IGNyZWF0ZSAoKSBpblxuICAgIHNldCBzIGkxIGkyIGkzIGk0OyBzXG5cbiAgbGV0IGFzc2lnbiAoZHN0OiB0KSAoc3JjOiB0KSA9XG4gICAgQXJyYXkxLmJsaXQgc3JjIGRzdFxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCBzJyA9IGNyZWF0ZSgpIGluIGFzc2lnbiBzJyBzOyBzJ1xuXG4gICgqIFRoZSBzZWVkIGlzIGFuIGFycmF5IG9mIGludGVnZXJzLiAgSXQgY2FuIGJlIGp1c3Qgb25lIGludGVnZXIsXG4gICAgIGJ1dCBpdCBjYW4gYWxzbyBiZSAxMiBvciBtb3JlIGJ5dGVzLiAgVG8gaGlkZSB0aGUgZGlmZmVyZW5jZSxcbiAgICAgd2Ugc2VyaWFsaXplIHRoZSBhcnJheSBhcyBhIHNlcXVlbmNlIG9mIGJ5dGVzLCB0aGVuIGhhc2ggdGhlXG4gICAgIHNlcXVlbmNlIHdpdGggTUQ1IChEaWdlc3QuYnl0ZXMpLiAgTUQ1IGdpdmVzIG9ubHkgMTI4IGJpdHMgd2hpbGVcbiAgICAgd2UgbmVlZCAyNTYgYml0cywgc28gd2UgaGFzaCB0d2ljZSB3aXRoIGRpZmZlcmVudCBzdWZmaXhlcy4gKilcbiAgbGV0IHJlaW5pdCBzIHNlZWQgPVxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSAobiAqIDggKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG9cbiAgICAgIEJ5dGVzLnNldF9pbnQ2NF9sZSBiIChpICogOCkgKEludDY0Lm9mX2ludCBzZWVkLihpKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnNldCBiIChuICogOCkgJ1xceDAxJztcbiAgICBsZXQgZDEgPSBEaWdlc3QuYnl0ZXMgYiBpblxuICAgIEJ5dGVzLnNldCBiIChuICogOCkgJ1xceDAyJztcbiAgICBsZXQgZDIgPSBEaWdlc3QuYnl0ZXMgYiBpblxuICAgIHNldCBzIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgOClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDgpXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHMgPSBjcmVhdGUoKSBpbiByZWluaXQgcyBzZWVkOyBzXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID1cbiAgICBtYWtlIChyYW5kb21fc2VlZCAoKSlcblxuICAoKiBSZXR1cm4gMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIDB4M0ZGRl9GRkZGXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKSAqKVxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IHJlYyBpbnQ2M2F1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludCBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gbWF4X2ludCAtIG4gKyAxIHRoZW4gaW50NjNhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBmdWxsX2ludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmZ1bGxfaW50XCJcbiAgICBlbHNlIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB0aGVuXG4gICAgICBpbnQ2M2F1eCBzIGJvdW5kXG4gICAgZWxzZVxuICAgICAgaW50YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gNjQgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDY0XSAqKVxuICBsZXQgYml0czY0IHMgPVxuICAgIG5leHQgc1xuXG4gICgqIFJldHVybiBhbiBbaW50NjRdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgciA9IEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJpdHM2NCBzKSAxIGluXG4gICAgbGV0IHYgPSBJbnQ2NC5yZW0gciBuIGluXG4gICAgaWYgSW50NjQuKHN1YiByIHYgPiBhZGQgKHN1YiBtYXhfaW50IG4pIDFMKVxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIDMyIG9yIDY0IHJhbmRvbSBiaXRzIGFzIGEgW25hdGl2ZWludF0gKilcbiAgbGV0IG5hdGl2ZWJpdHMgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoYml0czMyIHMpXG4gICAgZWxzZSBmdW4gcyAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGJpdHM2NCBzKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzY2FsZVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHMzMiAoKSA9IFN0YXRlLmJpdHMzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzNjQgKCkgPSBTdGF0ZS5iaXRzNjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgbmF0aXZlYml0cyAoKSA9IFN0YXRlLm5hdGl2ZWJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLnJlaW5pdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBTcGxpdHRpbmcgKilcblxubGV0IHNwbGl0ICgpID0gU3RhdGUuc3BsaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5cbigqIE1hbmlwdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gKilcblxubGV0IGdldF9zdGF0ZSAoKSA9IFN0YXRlLmNvcHkgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiB0aGUgbG9hZCBmYWN0b3IgYmVjb21lcyB0b28gaGlnaC4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gQXRvbWljLm1ha2UgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSBBdG9taWMuc2V0IHJhbmRvbWl6ZWQgdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWRcblxubGV0IHBybmdfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpIGVsc2UgMFxuICBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCBtZW0gaCBrZXkgPVxuICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSlcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXJcbiAqICAgIC0gTGlua1xuICogICAgLSBEYXRhICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyICgqIENBTUxfRVBIRV9GSVJTVF9LRVkgaW4gd2Vhay5oICopXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cblxuICBsZXQgZmluZF9vciB0IGQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgbWVyZ2UgdCBkID1cbiAgICBmaW5kX29yIHQgZCAoZnVuIGggaW5kZXggLT4gYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGluZGV4OyBkKVxuXG5cbiAgbGV0IGZpbmQgdCBkID0gZmluZF9vciB0IGQgKGZ1biBfaCBfaW5kZXggLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCBmaW5kX29wdCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGZpbmRfc2hhZG93IHQgZCBpZmZvdW5kIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGlmZm91bmQgYnVja2V0IGlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCByZW1vdmUgdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gdyBpIC0+IHNldCB3IGkgTm9uZSkgKClcblxuXG4gIGxldCBtZW0gdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gX3cgX2kgLT4gdHJ1ZSkgZmFsc2VcblxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGIgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGIgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIHRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuKCogSW5pdGlhbGlzZSBkb21haW4gbG9jYWwgc3RhdGUgKilcbm1vZHVsZSBETFMgPSBEb21haW4uRExTXG5cbmxldCBzdGRidWZfa2V5ID0gRExTLm5ld19rZXkgcHBfbWFrZV9idWZmZXJcbmxldCBfID0gRExTLnNldCBzdGRidWZfa2V5IHN0ZGJ1ZlxuXG5sZXQgc3RyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGZvcm1hdHRlcl9vZl9idWZmZXIgKERMUy5nZXQgc3RkYnVmX2tleSkpXG5sZXQgXyA9IERMUy5zZXQgc3RyX2Zvcm1hdHRlcl9rZXkgc3RyX2Zvcm1hdHRlclxuXG5sZXQgYnVmZmVyZWRfb3V0X3N0cmluZyBrZXkgc3RyIG9mcyBsZW4gPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyAoRG9tYWluLkRMUy5nZXQga2V5KSBzdHIgb2ZzIGxlblxuXG5sZXQgYnVmZmVyZWRfb3V0X2ZsdXNoIG9jIGtleSAoKSA9XG4gIGxldCBidWYgPSBEb21haW4uRExTLmdldCBrZXkgaW5cbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyIDAgbGVuIDtcbiAgU3RkbGliLmZsdXNoIG9jO1xuICBCdWZmZXIuY2xlYXIgYnVmXG5cbmxldCBzdGRfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5sZXQgZXJyX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxuXG5sZXQgc3RkX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgc3RkX2Zvcm1hdHRlcl9rZXkgc3RkX2Zvcm1hdHRlclxuXG5sZXQgZXJyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgZXJyX2Zvcm1hdHRlcl9rZXkgZXJyX2Zvcm1hdHRlclxuXG5sZXQgZ2V0X3N0ZF9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X2Vycl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0cl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0ZGJ1ZiAoKSA9IERMUy5nZXQgc3RkYnVmX2tleVxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9XG4gIGxldCBzdGRidWYgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXkgaW5cbiAgbGV0IHN0cl9mb3JtYXR0ZXIgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5IGluXG4gIGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxubGV0IG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgb3V0cHV0JyA9IEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBpblxuICAgIGxldCBmbHVzaCcgKCkgPVxuICAgICAgb3V0cHV0IChCdWZmZXIuY29udGVudHMgYnVmKSAwIChCdWZmZXIubGVuZ3RoIGJ1Zik7XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgZmx1c2ggKClcbiAgICBpblxuICAgIG1ha2VfZm9ybWF0dGVyIG91dHB1dCcgZmx1c2gnKVxuXG5sZXQgc3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94IHYgPSBwcF9vcGVuX2hib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3Zib3ggdiA9IHBwX29wZW5fdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faHZib3ggdiA9IHBwX29wZW5faHZib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2hvdmJveCB2ID0gcHBfb3Blbl9ob3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2JveCB2ID0gcHBfb3Blbl9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9ib3ggdiA9IHBwX2Nsb3NlX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fc3RhZyB2ID0gcHBfb3Blbl9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2Vfc3RhZyB2ID0gcHBfY2xvc2Vfc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2FzIHYgdyA9IHBwX3ByaW50X2FzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9zdHJpbmcgdiA9IHBwX3ByaW50X3N0cmluZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2J5dGVzIHYgPSBwcF9wcmludF9ieXRlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ludCB2ID0gcHBfcHJpbnRfaW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfZmxvYXQgdiA9IHBwX3ByaW50X2Zsb2F0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfY2hhciB2ID0gcHBfcHJpbnRfY2hhciAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Jvb2wgdiA9IHBwX3ByaW50X2Jvb2wgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9icmVhayB2IHcgPSBwcF9wcmludF9icmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfY3V0IHYgPSBwcF9wcmludF9jdXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9zcGFjZSB2ID0gcHBfcHJpbnRfc3BhY2UgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBmb3JjZV9uZXdsaW5lIHYgPSBwcF9mb3JjZV9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfZmx1c2ggdiA9IHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfbmV3bGluZSB2ID0gcHBfcHJpbnRfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2lmX25ld2xpbmUgdiA9IHBwX3ByaW50X2lmX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIG9wZW5fdGJveCB2ID0gcHBfb3Blbl90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfdGJveCB2ID0gcHBfY2xvc2VfdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3RicmVhayB2IHcgPSBwcF9wcmludF90YnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuXG5hbmQgc2V0X3RhYiB2ID0gcHBfc2V0X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3RhYiB2ID0gcHBfcHJpbnRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWFyZ2luIHYgPSBwcF9zZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmdpbiB2ID0gcHBfZ2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9pbmRlbnQgdiA9IHBwX3NldF9tYXhfaW5kZW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9pbmRlbnQgdiA9IHBwX2dldF9tYXhfaW5kZW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgfm1heF9pbmRlbnQgfm1hcmdpblxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zYWZlX3NldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgfm1heF9pbmRlbnQgfm1hcmdpblxuYW5kIGdldF9nZW9tZXRyeSB2ID0gcHBfZ2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgdXBkYXRlX2dlb21ldHJ5IHYgPSBwcF91cGRhdGVfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfYm94ZXMgdiA9IHBwX3NldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2JveGVzIHYgPSBwcF9nZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Zlcl9tYXhfYm94ZXMgdiA9IHBwX292ZXJfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCB2ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCB2ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyB2IHcgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF9wcmludF90YWdzIHYgPVxuICBwcF9zZXRfcHJpbnRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9wcmludF90YWdzIHYgPVxuICBwcF9nZXRfcHJpbnRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX3NldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFya190YWdzIHYgPVxuICBwcF9nZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3RhZ3MgdiA9XG4gIHBwX3NldF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCByZWMgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgW3ZdIC0+IHBwX3YgcHBmIHZcbiAgfCB2IDo6IHZzIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcF92IHBwZiB2c1xuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHJlYyBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2Vfc3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5cbmxldCBwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZXByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG5sZXQgKCkgPSBEb21haW4uYmVmb3JlX2ZpcnN0X3NwYXduIChmdW4gKCkgLT5cbiAgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKTtcbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleX07XG5cbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleX07XG4pXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGluXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lcl9vcHQgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2Qgb3B0aW9uLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbmxldCBrc2NhbmZfZ2VuIGliIGVmIGFmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlIGFzIGV4YykgLT5cbiAgICAgICAgZWYgaWIgZXhjXG4gICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB8IGFyZ3MgLT5cbiAgICAgICAgYWYgKGFwcGx5IGYgYXJncylcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG5sZXQga3NjYW5mIGliIGVmIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgZWYgKGZ1biB4IC0+IHgpIGZtdFxuXG5sZXQga3NjYW5mX29wdCBpYiBmbXQgPVxuICBrc2NhbmZfZ2VuIGliIChmdW4gXyBfIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBic2NhbmZfb3B0IGliIGZtdCA9IGtzY2FuZl9vcHQgaWIgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IHNzY2FuZl9vcHQgcyBmbXQgPSBrc2NhbmZfb3B0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpbiBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc2NhbmZfb3B0IGZtdCA9IGtzY2FuZl9vcHQgU2Nhbm5pbmcuc3RkaW4gZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBPYmpcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAobWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+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+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiA/cmFuZG9tICgqdGh3YXJ0IHRvb2xzL3N5bmNfc3RkbGliX2RvY3MqKSA6IGJvb2wgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleSBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleSBlcGgga2V5O1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5ID1cbiAgICBtYXRjaCBnZXRfa2V5IGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5IC0+IGdldF9kYXRhIGVwaFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCA9IEguc2VlZGVkX2hhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMV9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0gazFfbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleSBrIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleSBlIHdpdGhcbiAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleSBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXkgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5MSBrZXkyIGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5MSBlcGgga2V5MTtcbiAgICBzZXRfa2V5MiBlcGgga2V5MjtcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkga2V5MSk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkxIGtleTIgPVxuICAgIG1hdGNoIGdldF9rZXkxIGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBnZXRfa2V5MiBlcGggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MiAtPiBnZXRfZGF0YSBlcGhcbiAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLnNlZWRlZF9oYXNoIHNlZWQgazEgKyBIMi5zZWVkZWRfaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnazEsICdrMiwgJ2QpIHQgPSAoJ2sxLCAnazIsICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsyX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgazEgazIgZCA9IGIgOj0gazJfbWFrZSBrMSBrMiBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsxIGsyIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleTEgZSwgZ2V0X2tleTIgZSB3aXRoXG4gICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgd2hlbiB4MSA9PSBrMSAmJiB4MiA9PSBrMiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrMSBrMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrMSBrMiBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrMSBrMiA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgazEgazIpICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5cyBkYXRhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBrZXlzIGluXG4gICAgbGV0IGVwaCA9IGNyZWF0ZSBsIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHNldF9rZXkgZXBoIGkga2V5cy4oaSkgZG9uZTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleXMgPVxuICAgIGxldCBsID0gbGVuZ3RoIGVwaCBpblxuICAgIHRyeVxuICAgICAgaWYgbCA8PiBBcnJheS5sZW5ndGgga2V5cyB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBlcGggaSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSBFeGl0XG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXlzLihpKSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgZ2V0X2RhdGEgZXBoXG4gICAgd2l0aCBFeGl0IC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguc2VlZGVkX2hhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQga25fbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGtuX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsgZSA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgbGVuZ3RoIGUgPD4gQXJyYXkubGVuZ3RoIGsgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGsgLSAxIGRvXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBlIGkgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrLihpKSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggRXhpdCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJ1xcXCInIHx8IFN0cmluZy5jb250YWlucyBmICclJyB0aGVuXG4gICAgICBmYWlsd2l0aCAoXCJGaWxlbmFtZS5xdW90ZV9jb21tYW5kOiBiYWQgZmlsZSBuYW1lIFwiIF4gZilcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBmICcgJyB0aGVuXG4gICAgICBcIlxcXCJcIiBeIGYgXiBcIlxcXCJcIlxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBpZiBjaGVja19zdWZmaXggbmFtZSBzdWZmXG4gIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCJcblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmFuZG9tX3N0YXRlID0gRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkgaW5cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyByYW5kb21fc3RhdGUpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPVxuICBEb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50OkZ1bi5pZCAoZnVuICgpIC0+IHRlbXBfZGlyX25hbWUpXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gRG9tYWluLkRMUy5zZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lIHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDb21wbGV4IG51bWJlcnMgKilcblxudHlwZSB0ID0geyByZTogZmxvYXQ7IGltOiBmbG9hdCB9XG5cbmxldCB6ZXJvID0geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxubGV0IG9uZSA9IHsgcmUgPSAxLjA7IGltID0gMC4wIH1cbmxldCBpID0geyByZSA9IDAuMDsgaW0gPSAxLjAgfVxuXG5sZXQgYWRkIHggeSA9IHsgcmUgPSB4LnJlICsuIHkucmU7IGltID0geC5pbSArLiB5LmltIH1cblxubGV0IHN1YiB4IHkgPSB7IHJlID0geC5yZSAtLiB5LnJlOyBpbSA9IHguaW0gLS4geS5pbSB9XG5cbmxldCBuZWcgeCA9IHsgcmUgPSAtLiB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgY29uaiB4ID0geyByZSA9IHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBtdWwgeCB5ID0geyByZSA9IHgucmUgKi4geS5yZSAtLiB4LmltICouIHkuaW07XG4gICAgICAgICAgICAgICAgaW0gPSB4LnJlICouIHkuaW0gKy4geC5pbSAqLiB5LnJlIH1cblxubGV0IGRpdiB4IHkgPVxuICBpZiBhYnNfZmxvYXQgeS5yZSA+PSBhYnNfZmxvYXQgeS5pbSB0aGVuXG4gICAgbGV0IHIgPSB5LmltIC8uIHkucmUgaW5cbiAgICBsZXQgZCA9IHkucmUgKy4gciAqLiB5LmltIGluXG4gICAgeyByZSA9ICh4LnJlICsuIHIgKi4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHguaW0gLS4gciAqLiB4LnJlKSAvLiBkIH1cbiAgZWxzZVxuICAgIGxldCByID0geS5yZSAvLiB5LmltIGluXG4gICAgbGV0IGQgPSB5LmltICsuIHIgKi4geS5yZSBpblxuICAgIHsgcmUgPSAociAqLiB4LnJlICsuIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9IChyICouIHguaW0gLS4geC5yZSkgLy4gZCB9XG5cbmxldCBpbnYgeCA9IGRpdiBvbmUgeFxuXG5sZXQgbm9ybTIgeCA9IHgucmUgKi4geC5yZSArLiB4LmltICouIHguaW1cblxubGV0IG5vcm0geCA9IEZsb2F0Lmh5cG90IHgucmUgeC5pbVxuXG5sZXQgYXJnIHggPSBhdGFuMiB4LmltIHgucmVcblxubGV0IHBvbGFyIG4gYSA9IHsgcmUgPSBjb3MgYSAqLiBuOyBpbSA9IHNpbiBhICouIG4gfVxuXG5sZXQgc3FydCB4ID1cbiAgaWYgeC5yZSA9IDAuMCAmJiB4LmltID0gMC4wIHRoZW4geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gICAgbGV0IHcgPVxuICAgICAgaWYgciA+PSBpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHEgPSBpIC8uIHIgaW5cbiAgICAgICAgc3FydChyKSAqLiBzcXJ0KDAuNSAqLiAoMS4wICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHEgPSByIC8uIGkgaW5cbiAgICAgICAgc3FydChpKSAqLiBzcXJ0KDAuNSAqLiAocSArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBpblxuICAgIGlmIHgucmUgPj0gMC4wXG4gICAgdGhlbiB7IHJlID0gdzsgIGltID0gMC41ICouIHguaW0gLy4gdyB9XG4gICAgZWxzZSB7IHJlID0gMC41ICouIGkgLy4gdzsgIGltID0gaWYgeC5pbSA+PSAwLjAgdGhlbiB3IGVsc2UgLS4gdyB9XG4gIGVuZFxuXG5sZXQgZXhwIHggPVxuICBsZXQgZSA9IGV4cCB4LnJlIGluIHsgcmUgPSBlICouIGNvcyB4LmltOyBpbSA9IGUgKi4gc2luIHguaW0gfVxuXG5sZXQgbG9nIHggPSB7IHJlID0gbG9nIChub3JtIHgpOyBpbSA9IGF0YW4yIHguaW0geC5yZSB9XG5cbmxldCBwb3cgeCB5ID0gZXhwIChtdWwgeSAobG9nIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbl9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9pbl9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9pblxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5faW5fZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgaWMgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2VfaW5fbm9lcnIgaWMpXG4gICAgKGZ1biAoKSAtPiBmIGljKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW5fYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luIHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX2luXG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2VfaW5fbm9lcnJcblxubGV0IGlucHV0X2NoYXIgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gIHwgYyAtPiBTb21lIGNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfYnl0ZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9ieXRlIGljIHdpdGhcbiAgfCBuIC0+IFNvbWUgblxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9saW5lIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2xpbmUgaWMgd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0ID0gU3RkbGliLmlucHV0XG5cbmxldCByZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuIHdpdGhcbiAgfCAoKSAtPiBTb21lICgpXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbigqIFJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgaW50byBbYnVmXSwgc3RhcnRpbmcgYXQgW29mc10uIFJldHVybiB0b3RhbCBieXRlc1xuICAgcmVhZC4gKilcbmxldCByZWFkX3VwdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3Agb2ZzIGxlbiA9XG4gICAgaWYgbGVuID0gMCB0aGVuIG9mc1xuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gU3RkbGliLmlucHV0IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgICBpZiByID0gMCB0aGVuXG4gICAgICAgIG9mc1xuICAgICAgZWxzZVxuICAgICAgICBsb29wIChvZnMgKyByKSAobGVuIC0gcilcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBvZnMgbGVuIC0gb2ZzXG5cbigqIEJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmV0dXJuIGEgYnVmZmVyIHdpdGggPj0gKG9mcyArIG4pIGJ5dGVzIG9mIHN0b3JhZ2UsXG4gICBhbmQgc3VjaCB0aGF0IGl0IGNvaW5jaWRlcyB3aXRoIFtidWZdIGF0IGluZGljZXMgPCBbb2ZzXS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBlcXVhbCB0byBbYnVmXSBpdHNlbGYgaWYgaXQgYWxyZWFkeSBoYXMgc3VmZmljaWVudFxuICAgZnJlZSBzcGFjZS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtYXkgaGF2ZSAqZmV3ZXIqIHRoYW4gW29mcyArIG5dIGJ5dGVzIG9mIHN0b3JhZ2UgaWYgdGhpc1xuICAgbnVtYmVyIGlzID4gW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0uIEhvd2V2ZXIgdGhlIHJldHVybmVkIGJ1ZmZlciB3aWxsXG4gICAqYWx3YXlzKiBoYXZlID4gW29mc10gYnl0ZXMgb2Ygc3RvcmFnZS4gSW4gdGhlIGxpbWl0aW5nIGNhc2Ugd2hlbiBbb2ZzID0gbGVuXG4gICA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKHNvIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGUgYnVmZmVyIGF0XG4gICBhbGwpLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxuXG5sZXQgZW5zdXJlIGJ1ZiBvZnMgbiA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA+PSBvZnMgKyBuIHRoZW4gYnVmXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgICB3aGlsZSAhbmV3X2xlbiA8IG9mcyArIG4gZG9cbiAgICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuICsgMVxuICAgIGRvbmU7XG4gICAgbGV0IG5ld19sZW4gPSAhbmV3X2xlbiBpblxuICAgIGxldCBuZXdfbGVuID1cbiAgICAgIGlmIG5ld19sZW4gPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgbmV3X2xlblxuICAgICAgZWxzZSBpZiBvZnMgPCBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgZmFpbHdpdGggXCJJbl9jaGFubmVsLmlucHV0X2FsbDogY2hhbm5lbCBjb250ZW50IFxcXG4gICAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHN0cmluZyBsZW5ndGhcIlxuICAgIGluXG4gICAgbGV0IG5ld19idWYgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmIDAgbmV3X2J1ZiAwIG9mcztcbiAgICBuZXdfYnVmXG4gIGVuZFxuXG5sZXQgaW5wdXRfYWxsIGljID1cbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpbiAoKiBJT19CVUZGRVJfU0laRSAqKVxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBvdXRfY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5fb3V0X2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX291dFxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5fb3V0X2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IG9jID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX291dF9ub2VyciBvYylcbiAgICAoZnVuICgpIC0+IGYgb2MpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXRfYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dCBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBTdGRsaWIuZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBTdGRsaWIub3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICBLQyBTaXZhcmFtYWtyaXNobmFuLCBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAuLlxuZXh0ZXJuYWwgcGVyZm9ybSA6ICdhIHQgLT4gJ2EgPSBcIiVwZXJmb3JtXCJcblxudHlwZSBleG4gKz0gVW5oYW5kbGVkOiAnYSB0IC0+IGV4blxuZXhjZXB0aW9uIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxubGV0ICgpID1cbiAgbGV0IHByaW50ZXIgPSBmdW5jdGlvblxuICAgIHwgVW5oYW5kbGVkIHggLT5cbiAgICAgICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiU3RkbGliLkVmZmVjdC5VbmhhbmRsZWQoJXMpXCJcbiAgICAgICAgICAgIChQcmludGV4Yy5zdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEBAIE9iai5yZXByIHgpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgbXNnXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBwcmludGVyXG5cbigqIFJlZ2lzdGVyIHRoZSBleGNlcHRpb25zIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIGFjY2VzcyBpdCAqKVxudHlwZSBfIHQgKz0gU2hvdWxkX25vdF9zZWVfdGhpc19fIDogdW5pdCB0XG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5VbmhhbmRsZWRcIlxuICAgICAgICAgIChVbmhhbmRsZWQgU2hvdWxkX25vdF9zZWVfdGhpc19fKVxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiXG4gICAgICAgICAgQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG50eXBlICgnYSwgJ2IpIHN0YWNrXG5cbmV4dGVybmFsIHJlc3VtZSA6ICgnYSwgJ2IpIHN0YWNrIC0+ICgnYyAtPiAnYSkgLT4gJ2MgLT4gJ2IgPSBcIiVyZXN1bWVcIlxuZXh0ZXJuYWwgcnVuc3RhY2sgOiAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+ICdiID0gXCIlcnVuc3RhY2tcIlxuXG5tb2R1bGUgRGVlcCA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cbiAgdHlwZSBsYXN0X2ZpYmVyXG5cbiAgZXh0ZXJuYWwgdGFrZV9jb250X25vZXhjIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+ICgnYSwgJ2IpIHN0YWNrID1cbiAgICBcImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1wiIFtAQG5vYWxsb2NdXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cbiAgbGV0IGNvbnRpbnVlIGsgdiA9IHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4geCAtPiB4KSB2XG5cbiAgbGV0IGRpc2NvbnRpbnVlIGsgZSA9IHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiByYWlzZSBlKSBlXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgZSBidCA9IHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPlxuICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYnQpIGVcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHJlcGVyZm9ybSA6XG4gICAgJ2EgdCAtPiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYiA9IFwiJXJlcGVyZm9ybVwiXG5cbiAgbGV0IG1hdGNoX3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICB0eXBlICdhIGVmZmVjdF9oYW5kbGVyID1cbiAgICB7IGVmZmM6ICdiLiAnYiB0IC0+ICgoJ2IsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYSkgb3B0aW9uIH1cblxuICBsZXQgdHJ5X3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMnIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPiBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayAoZnVuIHggLT4geCkgKGZ1biBlIC0+IHJhaXNlIGUpIGVmZmMnIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG5cbm1vZHVsZSBTaGFsbG93ID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuICB0eXBlIGxhc3RfZmliZXJcblxuICBleHRlcm5hbCBhbGxvY19zdGFjayA6XG4gICAgKCdhIC0+ICdiKSAtPlxuICAgIChleG4gLT4gJ2IpIC0+XG4gICAgKCdjIHQgLT4gKCdjLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgc3RhY2sgPSBcImNhbWxfYWxsb2Nfc3RhY2tcIlxuXG5cbiAgbGV0IGZpYmVyIDogdHlwZSBhIGIuIChhIC0+IGIpIC0+IChhLCBiKSBjb250aW51YXRpb24gPSBmdW4gZiAtPlxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdCB0eXBlIF8gdCArPSBJbml0aWFsX3NldHVwX18gOiBhIHQgZW5kIGluXG4gICAgbGV0IGV4Y2VwdGlvbiBFIG9mIChhLGIpIGNvbnRpbnVhdGlvbiBpblxuICAgIGxldCBmJyAoKSA9IGYgKHBlcmZvcm0gTS5Jbml0aWFsX3NldHVwX18pIGluXG4gICAgbGV0IGVycm9yIF8gPSBmYWlsd2l0aCBcImltcG9zc2libGVcIiBpblxuICAgIGxldCBlZmZjIGVmZiBrIF9sYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGVmZiB3aXRoXG4gICAgICB8IE0uSW5pdGlhbF9zZXR1cF9fIC0+IHJhaXNlX25vdHJhY2UgKEUgaylcbiAgICAgIHwgXyAtPiBlcnJvciAoKVxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBlcnJvciBlcnJvciBlZmZjIGluXG4gICAgbWF0Y2ggcnVuc3RhY2sgcyBmJyAoKSB3aXRoXG4gICAgfCBleGNlcHRpb24gRSBrIC0+IGtcbiAgICB8IF8gLT4gZXJyb3IgKClcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYSkgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHVwZGF0ZV9oYW5kbGVyIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPlxuICAgICgnYiAtPiAnYykgLT5cbiAgICAoZXhuIC0+ICdjKSAtPlxuICAgICgnZCB0IC0+ICgnZCwnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MpIC0+XG4gICAgKCdhLCdjKSBzdGFjayA9IFwiY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1wiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdjID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgY29udGludWVfZ2VuIGsgcmVzdW1lX2Z1biB2IGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPiBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHN0YWNrID0gdXBkYXRlX2hhbmRsZXIgayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICByZXN1bWUgc3RhY2sgcmVzdW1lX2Z1biB2XG5cbiAgbGV0IGNvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4geCAtPiB4KSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biBlIC0+IHJhaXNlIGUpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIHYgYnQgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biBlIC0+IFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYnQpIHYgaGFuZGxlclxuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG4iLCJbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqIGJsaXRfc3RyaW5nIGRvZXNuJ3QgZXhpc3QgaW4gW1N0ZExhYmVscy5CeXRlc10uLi4gICopXG5sZXQgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBCeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbjs7XG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIEZvcm1hdFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcblxubGV0IHNleHBfb2ZfdCB0ID0gdFxubGV0IHRfb2Zfc2V4cCB0ID0gdFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICBsZXQgcmVzID0gY29tcGFyZSB4IHkgaW5cbiAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCB4cyB5c1xuXG5hbmQgY29tcGFyZSBhIGIgPVxuICBpZiBhID09IGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgQXRvbSBhLCBBdG9tIGIgLT4gU3RyaW5nLmNvbXBhcmUgYSBiXG4gICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgfCBMaXN0IGEsIExpc3QgYiAtPiBjb21wYXJlX2xpc3QgYSBiKVxuOztcblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5leGNlcHRpb24gTm90X2ZvdW5kX3Mgb2YgdFxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgZXhuICogdFxuXG5tb2R1bGUgUHJpbnRpbmcgPSBzdHJ1Y3RcbiAgKCogRGVmYXVsdCBpbmRlbnRhdGlvbiBsZXZlbCBmb3IgaHVtYW4tcmVhZGFibGUgY29udmVyc2lvbnMgKilcblxuICBsZXQgZGVmYXVsdF9pbmRlbnQgPSByZWYgMVxuXG4gICgqIEVzY2FwaW5nIG9mIHN0cmluZ3MgdXNlZCBhcyBhdG9tcyBpbiBTLWV4cHJlc3Npb25zICopXG5cbiAgbGV0IG11c3RfZXNjYXBlIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGVuID0gMFxuICAgIHx8XG4gICAgbGV0IHJlYyBsb29wIHN0ciBpeCA9XG4gICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICB8ICdcIicgfCAnKCcgfCAnKScgfCAnOycgfCAnXFxcXCcgLT4gdHJ1ZVxuICAgICAgfCAnfCcgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnIycgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnIycgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnfCcgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnXFwwMDAnIC4uICdcXDAzMicgfCAnXFwxMjcnIC4uICdcXDI1NScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGl4ID4gMCAmJiBsb29wIHN0ciAoaXggLSAxKVxuICAgIGluXG4gICAgbG9vcCBzdHIgKGxlbiAtIDEpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZWQgcyA9XG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBuXG4gICAgICA6PSAhblxuICAgICAgICAgK1xuICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICAgIHwgXyAtPiA0XG4gICAgZG9uZTtcbiAgICBpZiAhbiA9IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHMnID0gQnl0ZXMuY3JlYXRlICFuIGluXG4gICAgICBuIDo9IDA7XG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgICAgIHwgJyAnIC4uICd+JyBhcyBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgIGxldCBhID0gQ2hhci5jb2RlIGMgaW5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMDApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMCBtb2QgMTApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgbW9kIDEwKSkpKTtcbiAgICAgICAgaW5jciBuXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzJylcbiAgOztcblxuICBsZXQgZXNjX3N0ciBzdHIgPVxuICAgIGxldCBlc3RyID0gZXNjYXBlZCBzdHIgaW5cbiAgICBsZXQgZWxlbiA9IFN0cmluZy5sZW5ndGggZXN0ciBpblxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKGVsZW4gKyAyKSBpblxuICAgIGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmM6ZXN0ciB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjEgfmxlbjplbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIDAgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAoZWxlbiArIDEpICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgOztcblxuICBsZXQgaW5kZXhfb2ZfbmV3bGluZSBzdHIgc3RhcnQgPVxuICAgIHRyeSBTb21lIChTdHJpbmcuaW5kZXhfZnJvbSBzdHIgc3RhcnQgJ1xcbicpIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IGVuZF9wb3Nfb3B0ID1cbiAgICBsZXQgZW5kX3BvcyA9XG4gICAgICBtYXRjaCBlbmRfcG9zX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgIHwgU29tZSBlbmRfcG9zIC0+IGVuZF9wb3NcbiAgICBpblxuICAgIFN0cmluZy5zdWIgc3RyIH5wb3M6aW5kZXggfmxlbjooZW5kX3BvcyAtIGluZGV4KVxuICA7O1xuXG4gIGxldCBpc19vbmVfbGluZSBzdHIgPVxuICAgIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGluZGV4IC0+IGluZGV4ICsgMSA9IFN0cmluZy5sZW5ndGggc3RyXG4gIDs7XG5cbiAgbGV0IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHIgPVxuICAgIGlmIG5vdCAobXVzdF9lc2NhcGUgc3RyKVxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHJcbiAgICBlbHNlIGlmIGlzX29uZV9saW5lIHN0clxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjX3N0ciBzdHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgaW5kZXggPVxuICAgICAgICBsZXQgbmV4dF9uZXdsaW5lID0gaW5kZXhfb2ZfbmV3bGluZSBzdHIgaW5kZXggaW5cbiAgICAgICAgbGV0IG5leHRfbGluZSA9IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IG5leHRfbmV3bGluZSBpblxuICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIChlc2NhcGVkIG5leHRfbGluZSk7XG4gICAgICAgIG1hdGNoIG5leHRfbmV3bGluZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbmV3bGluZV9pbmRleCAtPlxuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcXCI7XG4gICAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxuXCI7XG4gICAgICAgICAgbG9vcCAobmV3bGluZV9pbmRleCArIDEpXG4gICAgICBpblxuICAgICAgcHBfb3Blbl9ib3ggcHBmIDA7XG4gICAgICAoKiB0aGUgbGVhZGluZyBzcGFjZSBpcyB0byBsaW5lIHVwIHRoZSBsaW5lcyAqKVxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcXFwiXCI7XG4gICAgICBsb29wIDA7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcIlwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKSlcbiAgOztcblxuICBsZXQgbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciA9IGlmIG11c3RfZXNjYXBlIHN0ciB0aGVuIGVzY19zdHIgc3RyIGVsc2Ugc3RyXG5cbiAgKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gZm9ybWF0dGVycyAqKVxuXG4gIGxldCByZWMgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHJcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX29wZW5fYm94IHBwZiBpbmRlbnQ7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IExpc3QgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCJcblxuICBhbmQgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIHBwX3ByaW50X3NwYWNlIHBwZiAoKTtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgOztcblxuICBsZXQgcmVjIHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+XG4gICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcIjtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyJztcbiAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdDtcbiAgICAgIGZhbHNlXG4gICAgfCBMaXN0IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIjtcbiAgICAgIGZhbHNlXG5cbiAgYW5kIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHRcbiAgICB8IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCJcbiAgOztcblxuICBsZXQgcHBfaHVtIHBwZiBzZXhwID0gcHBfaHVtX2luZGVudCAhZGVmYXVsdF9pbmRlbnQgcHBmIHNleHBcbiAgbGV0IHBwX21hY2ggcHBmIHNleHAgPSBpZ25vcmUgKHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIHNleHApXG4gIGxldCBwcCA9IHBwX21hY2hcblxuICAoKiBTZXhwIHNpemUgKilcblxuICBsZXQgcmVjIHNpemVfbG9vcCAoKHYsIGMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gdiArIDEsIGMgKyBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHwgTGlzdCBsc3QgLT4gTGlzdC5mb2xkX2xlZnQgbHN0IH5pbml0OmFjYyB+ZjpzaXplX2xvb3BcbiAgOztcblxuICBsZXQgc2l6ZSBzZXhwID0gc2l6ZV9sb29wICgwLCAwKSBzZXhwXG5cbiAgKCogQnVmZmVyIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX2J1ZmZlcl9odW0gfmJ1ZiA/KGluZGVudCA9ICFkZWZhdWx0X2luZGVudCkgc2V4cCA9XG4gICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVhQD9cIiAocHBfaHVtX2luZGVudCBpbmRlbnQpIHNleHBcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyX21hY2ggfmJ1ZiBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyID0gdG9fYnVmZmVyX21hY2hcblxuICBsZXQgdG9fYnVmZmVyX2dlbiB+YnVmIH5hZGRfY2hhciB+YWRkX3N0cmluZyBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIGFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgKCogVGhlIG1heGltdW0gc2l6ZSBvZiBhIHRoaW5nIG9uIHRoZSBtaW5vciBoZWFwIGlzIDI1NiB3b3Jkcy5cbiAgICAgUHJldmlvdXNseSwgdGhpcyBzaXplIG9mIHRoZSByZXR1cm5lZCBidWZmZXIgaGVyZSB3YXMgNDA5NiBieXRlcywgd2hpY2hcbiAgICAgY2F1c2VkIHRoZSBCdWZmZXIgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSAqbWFqb3IqIGhlYXAgZXZlcnkgdGltZS5cblxuICAgICBBY2NvcmRpbmcgdG8gYSBzaW1wbGUgYmVuY2htYXJrIGJ5IFJvbiwgd2UgY2FuIGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yXG4gICAgIHNtYWxsIHMtZXhwcmVzc2lvbnMgYnkgYSBmYWN0b3Igb2YgfjQgaWYgd2Ugb25seSBhbGxvY2F0ZSAxMDI0IGJ5dGVzXG4gICAgICgxMjggd29yZHMgKyBzb21lIHNtYWxsIG92ZXJoZWFkKSB3b3J0aCBvZiBidWZmZXIgaW5pdGlhbGx5LiAgQW5kIG9uZVxuICAgICBjYW4gYXJndWUgdGhhdCBpZiBpdCdzIGZyZWUgdG8gYWxsb2NhdGUgc3RyaW5ncyBzbWFsbGVyIHRoYW4gMjU2IHdvcmRzLFxuICAgICBsYXJnZSBzLWV4cHJlc3Npb25zIHJlcXVpcmluZyBsYXJnZXIgZXhwZW5zaXZlIGJ1ZmZlcnMgd29uJ3Qgbm90aWNlXG4gICAgIHRoZSBleHRyYSB0d28gZG91YmxpbmdzIGZyb20gMTAyNCBieXRlcyB0byAyMDQ4IGFuZCA0MDk2LiBBbmQgZXNwZWNpYWxseVxuICAgICBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXBwbGljYXRpb25zIHRvIGFsd2F5cyBwYXNzIGluIGEgbGFyZ2VyIGJ1ZmZlciB0b1xuICAgICB1c2UuICopXG4gIGxldCBidWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIDEwMjRcblxuICAoKiBTdHJpbmcgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/aW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyXG4gICAgICB3aGVuIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgXyAtPiBmYWxzZSAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfaHVtID9pbmRlbnQgc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfbWFjaCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfbWFjaCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19tYWNoXG5lbmRcblxuaW5jbHVkZSBQcmludGluZ1xuXG5sZXQgb2ZfZmxvYXRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcbmxldCBvZl9pbnRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmludGluZ1xuZW5kXG5cbmxldCBtZXNzYWdlIG5hbWUgZmllbGRzID1cbiAgbGV0IHJlYyBjb252X2ZpZWxkcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKGZuYW1lLCBmc2V4cCkgOjogcmVzdCAtPlxuICAgICAgKG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICB8IFwiXCIgLT4gZnNleHAgOjogY29udl9maWVsZHMgcmVzdFxuICAgICAgIHwgXyAtPiBMaXN0IFsgQXRvbSBmbmFtZTsgZnNleHAgXSA6OiBjb252X2ZpZWxkcyByZXN0KVxuICBpblxuICBMaXN0IChBdG9tIG5hbWUgOjogY29udl9maWVsZHMgZmllbGRzKVxuOztcbiIsIigqKiBSZXByZXNlbnRhdGlvbiBvZiBTLWV4cHJlc3Npb24gZ3JhbW1hcnMgKilcblxuKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSByZXByZXNlbnRhdGlvbiBmb3Igcy1leHByZXNzaW9uIGdyYW1tYXJzLiBVc2luZyBwcHhfc2V4cF9jb252XG4gICAgYW5kIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSBwcm9kdWNlcyBhIGdyYW1tYXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGRlcml2ZWRcbiAgICBbb2Zfc2V4cF0gZm9yIGEgZ2l2ZW4gdHlwZS5cblxuICAgIEFzIHdpdGggb3RoZXIgZGVyaXZlZCBkZWZpbml0aW9ucywgcG9seW1vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhXG4gICAgZ3JhbW1hciBmb3IgZWFjaCB0eXBlIGFyZ3VtZW50IGFuZCBwcm9kdWNlcyBhIGdyYW1tYXIgZm9yIHRoZSBtb25vbW9ycGhpemVkIHR5cGUuXG5cbiAgICBNb25vbW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBncmFtbWFyIGRpcmVjdGx5LiBUbyBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLFxuICAgIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSB3cmFwcyBncmFtbWFycyBpbiB0aGUgW0xhenldIGNvbnN0cnVjdG9yIGFzIG5lZWRlZC5cblxuICAgIFRoaXMgdHlwZSBtYXkgY2hhbmdlIG92ZXIgdGltZSBhcyBvdXIgbmVlZHMgZm9yIGV4cHJlc3NpdmUgZ3JhbW1hcnMgY2hhbmdlLiBXZSB3aWxsXG4gICAgYXR0ZW1wdCB0byBtYWtlIGNoYW5nZXMgYmFja3dhcmQtY29tcGF0aWJsZSwgb3IgYXQgbGVhc3QgcHJvdmlkZSBhIHJlYXNvbmFibGUgdXBncmFkZVxuICAgIHBhdGguICopXG5cbltAQEB3YXJuaW5nIFwiLTMwXCJdICgqIGFsbG93IGR1cGxpY2F0ZSBmaWVsZCBuYW1lcyAqKVxuXG4oKiogR3JhbW1hciBvZiBhIHNleHAuICopXG50eXBlIGdyYW1tYXIgPVxuICB8IEFueSBvZiBzdHJpbmcgKCoqIGFjY2VwdHMgYW55IHNleHA7IHN0cmluZyBpcyBhIHR5cGUgbmFtZSBmb3IgaHVtYW4gcmVhZGFiaWxpdHkgKilcbiAgfCBCb29sICgqKiBhY2NlcHRzIHRoZSBhdG9tcyBcInRydWVcIiBvciBcImZhbHNlXCIsIG1vZHVsbyBjYXBpdGFsaXphdGlvbiAqKVxuICB8IENoYXIgKCoqIGFjY2VwdHMgYW55IHNpbmdsZS1jaGFyYWN0ZXIgYXRvbSAqKVxuICB8IEludGVnZXIgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgaW50ZWdlciBzeW50YXgsIHJlZ2FyZGxlc3Mgb2YgYml0IHdpZHRoICopXG4gIHwgRmxvYXQgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgZmxvYXQgc3ludGF4ICopXG4gIHwgU3RyaW5nICgqKiBhY2NlcHRzIGFueSBhdG9tICopXG4gIHwgT3B0aW9uIG9mIGdyYW1tYXIgKCoqIGFjY2VwdHMgYW4gb3B0aW9uLCBib3RoIFtOb25lXSB2cyBbU29tZSBfXSBhbmQgWygpXSB2cyBbKF8pXS4gKilcbiAgfCBMaXN0IG9mIGxpc3RfZ3JhbW1hciAoKiogYWNjZXB0cyBhIGxpc3QgKilcbiAgfCBWYXJpYW50IG9mIHZhcmlhbnQgKCoqIGFjY2VwdHMgY2xhdXNlcyBrZXllZCBieSBhIGxlYWRpbmcgb3Igc29sZSBhdG9tICopXG4gIHwgVW5pb24gb2YgZ3JhbW1hciBsaXN0ICgqKiBhY2NlcHRzIGEgc2V4cCBpZiBhbnkgb2YgdGhlIGxpc3RlZCBncmFtbWFycyBhY2NlcHRzIGl0ICopXG4gIHwgVGFnZ2VkIG9mIGdyYW1tYXIgd2l0aF90YWdcbiAgKCoqIGFubm90YXRlcyBhIGdyYW1tYXIgd2l0aCBhIGNsaWVudC1zcGVjaWZpYyBrZXkvdmFsdWUgcGFpciAqKVxuICB8IFR5dmFyIG9mIHN0cmluZ1xuICAoKiogTmFtZSBvZiBhIHR5cGUgdmFyaWFibGUsIGUuZy4gW1R5dmFyIFwiYVwiXSBmb3IgWydhXS4gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlIGJvZHkgb2ZcbiAgICAgIHRoZSBpbm5lcm1vc3QgZW5jbG9zaW5nIFtkZWZuXSBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIHZhcmlhYmxlLiAqKVxuICB8IFR5Y29uIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cy4gRm9yIGV4YW1wbGUsIFtUeWNvbiAoXCJsaXN0XCIsIFsgSW50ZWdlciBdKV1cbiAgICAgIHJlcHJlc2VudHMgW2ludCBsaXN0XS4gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW1JlY3Vyc2l2ZV1cbiAgICAgIGdyYW1tYXIgZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWN1cnNpdmUgb2YgZ3JhbW1hciAqIGRlZm4gbGlzdFxuICAoKiogW1JlY3Vyc2l2ZSAoZ3JhbW1hciwgZGVmaW5pdGlvbnMpXSBhbGxvd3MgW2dyYW1tYXJdIHRvIHJlZmVyIHRvIHR5cGUgY29uc3RydWN0b3JzXG4gICAgICBmcm9tIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgW2RlZmluaXRpb25zXS4gVGhlIGRlZmluaXRpb25zIG1heSBhbHNvIHJlZmVyIHRvIGVhY2hcbiAgICAgIG90aGVycycgdHlwZSBjb25zdHJ1Y3RvcnMuXG5cbiAgICAgIE9yZGluYXJpbHksIFtncmFtbWFyXSBpdHNlbGYgaXMganVzdCBhIFtUeWNvbl0gYXJndW1lbnQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGl0IGNhblxuICAgICAgYmUgYW55IGdyYW1tYXIuXG5cbiAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGRlZmluZSBhIGJpbmFyeSB0cmVlIHBhcmFtZXRlcml6ZWQgYnkgYSB0eXBlXG4gICAgICBzdG9yZWQgYXQgaXRzIGxlYXZlcy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IGRlZm5zID1cbiAgICAgICAgICBbIHsgdHljb24gPSBcInRyZWVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIlRyZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibm9kZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IExpc3QgKE1hbnkgKFR5Y29uIFwidHJlZVwiLCBbVHl2YXIgXCJhXCJdKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcImxlYWZcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBbVHl2YXIgXCJhXCJdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA7O1xuICAgICAgXX1cblxuICAgICAgTm9ybWFsbHksIHRoZSB0eXBlIG9mIGEgdHJlZSBzdG9yaW5nIGludGVnZXJzIHdvdWxkIGJlIHdyaXR0ZW4gbGlrZSB0aGlzOlxuXG4gICAgICB7W1xuICAgICAgICBSZWN1cnNpdmUgKFR5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0pLCBkZWZucylcbiAgICAgIF19XG5cbiAgICAgIEl0IGlzIGVxdWl2YWxlbnQsIHRob3VnaCBuZWVkbGVzc2x5IHZlcmJvc2UsIHRvIHJlcGxhY2UgdGhlIFtUeWNvbl0gcmVmZXJlbmNlIHdpdGhcbiAgICAgIHRoZSBncmFtbWFyIG9mIFtcInRyZWVcIl0sIHN1YnN0aXR1dGluZyBbSW50ZWdlcl0gZm9yIFtUeXZhciBcImFcIl06XG5cbiAgICAgIHtbXG4gICAgICAgIFJlY3Vyc2l2ZVxuICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAsIGRlZm5zIClcbiAgICAgIF19XG4gICopXG4gIHwgTGF6eSBvZiBncmFtbWFyIGxhenlfdFxuICAoKiogTGF6aWx5IGNvbXB1dGVkIGdyYW1tYXIuIFVzZSBbTGF6eV0gdG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cy4gVG8gZGVmaW5lXG4gICAgICByZWN1cnNpdmUgZ3JhbW1hcnMsIHVzZSBbUmVjdXJzaXZlXSBpbnN0ZWFkLiAqKVxuXG4oKiogR3JhbW1hciBvZiBhIGxpc3Qgb2Ygc2V4cHMuICopXG5hbmQgbGlzdF9ncmFtbWFyID1cbiAgfCBFbXB0eSAoKiogYWNjZXB0cyBhbiBlbXB0eSBsaXN0IG9mIHNleHBzICopXG4gIHwgQ29ucyBvZiBncmFtbWFyICogbGlzdF9ncmFtbWFyXG4gICgqKiBhY2NlcHRzIGEgbm9uLWVtcHR5IGxpc3Qgd2l0aCBoZWFkIGFuZCB0YWlsIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFycyAqKVxuICB8IE1hbnkgb2YgZ3JhbW1hciAoKiogYWNjZXB0cyB6ZXJvIG9yIG1vcmUgc2V4cHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXIgKilcbiAgfCBGaWVsZHMgb2YgcmVjb3JkICgqKiBhY2NlcHRzIHNleHBzIHJlcHJlc2VudGluZyBmaWVsZHMgb2YgYSByZWNvcmQgKilcblxuKCoqIENhc2Ugc2Vuc2l0aXZpdHkgb3B0aW9ucyBmb3IgbmFtZXMgb2YgdmFyaWFudCBjb25zdHJ1Y3RvcnMuICopXG5hbmQgY2FzZV9zZW5zaXRpdml0eSA9XG4gIHwgQ2FzZV9pbnNlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc2VkIGZvciBjdXN0b20gcGFyc2Vycy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS4gVXNlZCBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlIGZvciB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjYXNlIHNlbnNpdGl2ZSBhZnRlcndhcmQuXG4gICAgICBVc2VkIGZvciByZWd1bGFyIHZhcmlhbnRzLiAqKVxuXG4oKiogR3JhbW1hciBvZiB2YXJpYW50cy4gQWNjZXB0cyBhbnkgc2V4cCBtYXRjaGluZyBvbmUgb2YgdGhlIGNsYXVzZXMuICopXG5hbmQgdmFyaWFudCA9XG4gIHsgY2FzZV9zZW5zaXRpdml0eSA6IGNhc2Vfc2Vuc2l0aXZpdHlcbiAgOyBjbGF1c2VzIDogY2xhdXNlIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlLiBBY2NlcHRzIHNleHBzIGJhc2VkIG9uIHRoZSBbY2xhdXNlX2tpbmRdLiAqKVxuYW5kIGNsYXVzZSA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IGNsYXVzZV9raW5kIDogY2xhdXNlX2tpbmRcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZSdzIGNvbnRlbnRzLiBbQXRvbV9jbGF1c2VdIGFjY2VwdHMgYW4gYXRvbSBtYXRjaGluZ1xuICAgIHRoZSBjbGF1c2UncyBuYW1lLiBbTGlzdF9jbGF1c2VdIGFjY2VwdHMgYSBsaXN0IHdob3NlIGhlYWQgaXMgYW4gYXRvbSBtYXRjaGluZyB0aGVcbiAgICBjbGF1c2UncyBuYW1lIGFuZCB3aG9zZSB0YWlsIG1hdGNoZXMgW2FyZ3NdLiBUaGUgY2xhdXNlJ3MgbmFtZSBpcyBtYXRjaGVkIG1vZHVsbyB0aGVcbiAgICB2YXJpYW50J3MgW25hbWVfa2luZF0uICopXG5hbmQgY2xhdXNlX2tpbmQgPVxuICB8IEF0b21fY2xhdXNlXG4gIHwgTGlzdF9jbGF1c2Ugb2YgeyBhcmdzIDogbGlzdF9ncmFtbWFyIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQuIEFjY2VwdHMgYW55IGxpc3Qgb2Ygc2V4cHMgc3BlY2lmeWluZyBlYWNoIG9mIHRoZSBmaWVsZHMsXG4gICAgcmVnYXJkbGVzcyBvZiBvcmRlci4gSWYgW2FsbG93X2V4dHJhX2ZpZWxkc10gaXMgc3BlY2lmaWVkLCBpZ25vcmVzIHNleHBzIHdpdGggbmFtZXNcbiAgICBub3QgZm91bmQgaW4gW2ZpZWxkc10uICopXG5hbmQgcmVjb3JkID1cbiAgeyBhbGxvd19leHRyYV9maWVsZHMgOiBib29sXG4gIDsgZmllbGRzIDogZmllbGQgd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQgZmllbGQuIEEgZmllbGQgbXVzdCBzaG93IHVwIGV4YWN0bHkgb25jZSBpbiBhIHJlY29yZCBpZlxuICAgIFtyZXF1aXJlZF0sIG9yIGF0IG1vc3Qgb25jZSBvdGhlcndpc2UuIEFjY2VwdHMgYSBsaXN0IGhlYWRlZCBieSBbbmFtZV0gYXMgYW4gYXRvbSxcbiAgICBmb2xsb3dlZCBieSBzZXhwcyBtYXRjaGluZyBbYXJnc10uICopXG5hbmQgZmllbGQgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyByZXF1aXJlZCA6IGJvb2xcbiAgOyBhcmdzIDogbGlzdF9ncmFtbWFyXG4gIH1cblxuKCoqIEdyYW1tYXIgdGFnZ2VkIHdpdGggY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyLiAqKVxuYW5kICdhIHdpdGhfdGFnID1cbiAgeyBrZXkgOiBzdHJpbmdcbiAgOyB2YWx1ZSA6IFNleHAudFxuICA7IGdyYW1tYXIgOiAnYVxuICB9XG5cbmFuZCAnYSB3aXRoX3RhZ19saXN0ID1cbiAgfCBUYWcgb2YgJ2Egd2l0aF90YWdfbGlzdCB3aXRoX3RhZ1xuICB8IE5vX3RhZyBvZiAnYVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY3Vyc2l2ZSB0eXBlIGRlZmluaXRpb24uIE5hbWVzIHRoZSBbdHljb25dIGJlaW5nIGRlZmluZWQsIGFuZCB0aGVcbiAgICBbdHl2YXJzXSBpdCB0YWtlcyBhcyBwYXJhbWV0ZXJzLiBTcGVjaWZpZXMgdGhlIFtncmFtbWFyXSBvZiB0aGUgW3R5Y29uXS4gVGhlIGdyYW1tYXJcbiAgICBtYXkgcmVmZXIgdG8gYW55IG9mIHRoZSBbdHl2YXJzXSwgYW5kIHRvIGFueSBvZiB0aGUgW3R5Y29uXXMgZnJvbSB0aGUgc2FtZSBzZXQgb2ZcbiAgICBbUmVjdXJzaXZlXSBkZWZpbml0aW9ucy4gKilcbmFuZCBkZWZuID1cbiAgeyB0eWNvbiA6IHN0cmluZ1xuICA7IHR5dmFycyA6IHN0cmluZyBsaXN0XG4gIDsgZ3JhbW1hciA6IGdyYW1tYXJcbiAgfVxuXG4oKiogVG9wLWxldmVsIGdyYW1tYXIgdHlwZS4gSGFzIGEgcGhhbnRvbSB0eXBlIHBhcmFtZXRlciB0byBhc3NvY2lhdGUgZWFjaCBncmFtbWFyIHdpdGhcbiAgICB0aGUgdHlwZSBpdHMgc2V4cHMgcmVwcmVzZW50LiBUaGlzIG1ha2VzIGl0IGhhcmRlciB0byBhcHBseSBncmFtbWFycyB0byB0aGUgd3JvbmdcbiAgICB0eXBlLCB3aGlsZSBncmFtbWFycyBjYW4gc3RpbGwgYmUgZWFzaWx5IGNvZXJjZWQgdG8gYSBuZXcgdHlwZSBpZiBuZWVkZWQuICopXG50eXBlIF8gdCA9IHsgdW50eXBlZCA6IGdyYW1tYXIgfSBbQEB1bmJveGVkXVxuXG5sZXQgY29lcmNlICh0eXBlIGEgYikgKHsgdW50eXBlZCA9IF8gfSBhcyB0IDogYSB0KSA6IGIgdCA9IHRcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGlzIHVzZWQgZm9yIGFsbCB0YWdzIGdlbmVyYXRlZCBmcm9tIGRvYyBjb21tZW50cy4gKilcbmxldCBkb2NfY29tbWVudF90YWcgPSBcInNleHBfZ3JhbW1hci5kb2NfY29tbWVudFwiXG4iLCJsZXQgdW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCBFbXB0eSB9XG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQm9vbCB9XG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IENoYXIgfVxubGV0IGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEZsb2F0IH1cbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IHNleHBfdF9zZXhwX2dyYW1tYXIgOiBTZXhwLnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJTZXhwLnRcIiB9XG5sZXQgcmVmX3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5cbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBvcHRpb24gU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBPcHRpb24gdW50eXBlZCB9XG47O1xuXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGxpc3QgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGFycmF5IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgZW1wdHlfc2V4cF9ncmFtbWFyIDogXyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbmxldCBvcGFxdWVfc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG5sZXQgZnVuX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxuIiwiKCogVXRpbGl0eSBNb2R1bGUgZm9yIFMtZXhwcmVzc2lvbiBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwXG5cbigqIENvbnZlcnNpb24gb2YgT0NhbWwtdmFsdWVzIHRvIFMtZXhwcmVzc2lvbnMgKilcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogJyUuMTdnJyBpcyBndWFyYW50ZWVkIHRvIGJlIHJvdW5kLXRyaXBwYWJsZS5cblxuICAgJyUuMTVnJyB3aWxsIGJlIHJvdW5kLXRyaXBwYWJsZSBhbmQgbm90IGhhdmUgbm9pc2UgYXQgdGhlIGxhc3QgZGlnaXQgb3IgdHdvIGZvciBhIGZsb2F0XG4gICB3aGljaCB3YXMgY29udmVydGVkIGZyb20gYSBkZWNpbWFsIChzdHJpbmcpIHdpdGggPD0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzLiAgU28gaXQnc1xuICAgd29ydGggdHJ5aW5nIGZpcnN0IHRvIGF2b2lkIHRoaW5ncyBsaWtlIFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIuXG5cbiAgIFNlZSBjb21tZW50IGFib3ZlIFt0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlXSBpbiB7IUNvcmUuRmxvYXR9IGZvclxuICAgZGV0YWlsZWQgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzLiAqKVxubGV0IGRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0ID1cbiAgcmVmIChmdW4geCAtPlxuICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeClcbjs7XG5cbmxldCByZWFkX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCB3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgbGlzdF9tYXAgZiBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBsIH5mKVxubGV0IHNleHBfb2ZfdW5pdCAoKSA9IExpc3QgW11cbmxldCBzZXhwX29mX2Jvb2wgYiA9IEF0b20gKHN0cmluZ19vZl9ib29sIGIpXG5sZXQgc2V4cF9vZl9zdHJpbmcgc3RyID0gQXRvbSBzdHJcbmxldCBzZXhwX29mX2J5dGVzIGJ5dGVzID0gQXRvbSAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHNleHBfb2ZfY2hhciBjID0gQXRvbSAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHNleHBfb2ZfaW50IG4gPSBBdG9tIChzdHJpbmdfb2ZfaW50IG4pXG5sZXQgc2V4cF9vZl9mbG9hdCBuID0gQXRvbSAoIWRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IG4pXG5sZXQgc2V4cF9vZl9pbnQzMiBuID0gQXRvbSAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9pbnQ2NCBuID0gQXRvbSAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgbiA9IEF0b20gKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX3JlZiBzZXhwX29mX19hIHJmID0gc2V4cF9vZl9fYSAhcmZcbmxldCBzZXhwX29mX2xhenlfdCBzZXhwX29mX19hIGx2ID0gc2V4cF9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFsgc2V4cF9vZl9fYSB4IF1cbiAgfCBTb21lIHggLT4gTGlzdCBbIEF0b20gXCJzb21lXCI7IHNleHBfb2ZfX2EgeCBdXG4gIHwgTm9uZSB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFtdXG4gIHwgTm9uZSAtPiBBdG9tIFwibm9uZVwiXG47O1xuXG5sZXQgc2V4cF9vZl9wYWlyIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiAoYSwgYikgPSBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGIgXVxuXG5sZXQgc2V4cF9vZl90cmlwbGUgc2V4cF9vZl9fYSBzZXhwX29mX19iIHNleHBfb2ZfX2MgKGEsIGIsIGMpID1cbiAgTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiOyBzZXhwX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHNleHBfb2ZfbGlzdCBzZXhwX29mX19hIGxzdCA9IExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgbHN0IH5mOnNleHBfb2ZfX2EpKVxuXG5sZXQgc2V4cF9vZl9hcnJheSBzZXhwX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9oYXNodGJsIHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBMaXN0IFsgc2V4cF9vZl9rZXkgazsgc2V4cF9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHNleHBfb2Zfb3BhcXVlIF8gPSBBdG9tIFwiPG9wYXF1ZT5cIlxubGV0IHNleHBfb2ZfZnVuIF8gPSBBdG9tIFwiPGZ1bj5cIlxuXG4oKiBFeGNlcHRpb24gY29udmVydGVyIHJlZ2lzdHJhdGlvbiBhbmQgbG9va3VwICopXG5cbm1vZHVsZSBFeG5fY29udmVydGVyID0gc3RydWN0XG4gICgqIFRoZXNlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IGNvbnRleHQtc3dpdGNoZXNcbiAgICAgY2Fubm90IGhhcHBlbiB1bmxlc3MgdGhlcmUgaXMgYW4gYWxsb2NhdGlvbi4gIEl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0XG4gICAgIHRoYXQgdGhpcyB3aWxsIHJlbWFpbiB0cnVlIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLiAgVGhhdCB3YXkgd2VcbiAgICAgYXZvaWQgdXNpbmcgbXV0ZXhlcyBhbmQgdGh1cyBhIGRlcGVuZGVuY3kgb24gdGhlIHRocmVhZHMgbGlicmFyeS4gKilcblxuICAoKiBGYXN0IGFuZCBhdXRvbWF0aWMgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiAqKVxuXG4gIG1vZHVsZSBSZWdpc3RyYXRpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzZXhwX29mX2V4biA6IGV4biAtPiBTZXhwLnRcbiAgICAgIDsgKCogSWYgW3ByaW50ZXhjID0gdHJ1ZV0gdGhlbiB0aGlzIHNleHAgY29udmVydGVyIGlzIHVzZWQgZm9yIFByaW50ZXhjLnRvX3N0cmluZyAqKVxuICAgICAgICBwcmludGV4YyA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEV4bl90YWJsZSA9IEVwaGVtZXJvbi5LMS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuXG4gICAgICBsZXQgZXF1YWwgPSAoID09IClcbiAgICAgIGxldCBoYXNoID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgIGVuZClcblxuICBsZXQgdGhlX2V4bl90YWJsZSA6IFJlZ2lzdHJhdGlvbi50IEV4bl90YWJsZS50ID0gRXhuX3RhYmxlLmNyZWF0ZSAxN1xuXG4gICgqIEVwaGVtZXJvbnMgYXJlIHVzZWQgc28gdGhhdCBbc2V4cF9vZl9leG5dIGNsb3N1cmUgZG9uJ3Qga2VlcCB0aGVcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpdmUuICopXG4gIGxldCBhZGQgPyhwcmludGV4YyA9IHRydWUpID9maW5hbGlzZTpfIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBzZXhwX29mX2V4biA9XG4gICAgRXhuX3RhYmxlLmFkZCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9XG4gIDs7XG5cbiAgbGV0IGZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjIGV4biA9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4biBpblxuICAgIG1hdGNoIEV4bl90YWJsZS5maW5kX29wdCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfSAtPlxuICAgICAgKG1hdGNoIGZvcl9wcmludGV4YywgcHJpbnRleGMgd2l0aFxuICAgICAgIHwgZmFsc2UsIF8gfCBfLCB0cnVlIC0+IFNvbWUgKHNleHBfb2ZfZXhuIGV4bilcbiAgICAgICB8IHRydWUsIGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl91bml0X3Rlc3RzX29ubHkgPSBzdHJ1Y3RcbiAgICBsZXQgc2l6ZSAoKSA9IChFeG5fdGFibGUuc3RhdHNfYWxpdmUgdGhlX2V4bl90YWJsZSkubnVtX2JpbmRpbmdzXG4gIGVuZFxuZW5kXG5cbmxldCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6dHJ1ZSBleG5cbmxldCBzZXhwX29mX2V4bl9vcHQgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4YzpmYWxzZSBleG5cblxubGV0IHNleHBfb2ZfZXhuIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gTGlzdCBbIEF0b20gKFByaW50ZXhjLnRvX3N0cmluZyBleG4pIF1cbiAgfCBTb21lIHNleHAgLT4gc2V4cFxuOztcblxubGV0IGV4bl90b19zdHJpbmcgZSA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSlcblxuKCoge1tleGNlcHRpb24gQmxhaCBbQEBkZXJpdmluZyBzZXhwXV19IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uXG4gICBbRXhuX2NvbnZlcnRlci5hZGRdIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAgU28gd2UgYXJlIGd1YXJhbnRlZCB0aGF0IGFzIHNvb24gYXMgd2VcbiAgIG1hcmsgYW4gZXhjZXB0aW9uIGFzIHNleHBhYmxlLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxpbmtlZCBpbiBhbmQgdGhpcyBwcmludGVyIHdpbGwgYmVcbiAgIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4gKilcbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBleG4gLT5cbiAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgc2V4cCAtPiBTb21lIChTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHApKVxuOztcblxubGV0IHByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gUHJpbnRleGMudG9fc3RyaW5nIGV4blxuICB8IFNvbWUgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHBcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgUy1leHByZXNzaW9ucyB0byBPQ2FtbC12YWx1ZXMgKilcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBTZXhwLk9mX3NleHBfZXJyb3JcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4YyBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkpXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcblxubGV0IHVuaXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiAoKVxuICB8IEF0b20gXyB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwidW5pdF9vZl9zZXhwOiBlbXB0eSBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBib29sX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gKFwidHJ1ZVwiIHwgXCJUcnVlXCIpIC0+IHRydWVcbiAgfCBBdG9tIChcImZhbHNlXCIgfCBcIkZhbHNlXCIpIC0+IGZhbHNlXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IHVua25vd24gc3RyaW5nXCIgc2V4cFxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYnl0ZXNfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYnl0ZXNfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY2hhcl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiBzZXhwO1xuICAgIHN0ci5bMF1cbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBpbnRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGZsb2F0X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImZsb2F0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQzMl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50MzIub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50MzJfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDMyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDY0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQ2NC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQ2NF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50NjRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwibmF0aXZlaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJuYXRpdmVpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgcmVmX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gcmVmIChhX19vZl9zZXhwIHNleHApXG5sZXQgbGF6eV90X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2Zfc2V4cCBzZXhwKVxuXG5sZXQgb3B0aW9uX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgaWYgIXJlYWRfb2xkX29wdGlvbl9mb3JtYXRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFtdIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIGVsIF0gfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCByZXByZXNlbnQgb3B0aW9uYWwgdmFsdWVcIiBzZXhwXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwKVxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cFxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IGJlIChzb21lIGVsKVwiIHNleHApXG47O1xuXG5sZXQgcGFpcl9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGEsIGJcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHR3byBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCB0cmlwbGVfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgY19fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwOyBjX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgbGV0IGMgPSBjX19vZl9zZXhwIGNfc2V4cCBpblxuICAgIGEsIGIsIGNcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBsaXN0X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2Zfc2V4cCBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImxpc3Rfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYXJyYXlfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IFt8fF1cbiAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl9zZXhwIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImFycmF5X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGhhc2h0Ymxfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWxfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgTGlzdCBbIGtfc2V4cDsgdl9zZXhwIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2Zfc2V4cCBrX3NleHApIH5kYXRhOih2YWxfb2Zfc2V4cCB2X3NleHApXG4gICAgICB8IExpc3QgXyB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHNleHBcbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgb3BhcXVlX29mX3NleHAgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgXCJvcGFxdWVfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHNleHBcbjs7XG5cbmxldCBmdW5fb2Zfc2V4cCBzZXhwID0gb2Zfc2V4cF9lcnJvciBcImZ1bl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiBzZXhwXG5cbigqIFNleHAgR3JhbW1hcnMgKilcblxuaW5jbHVkZSBTZXhwX2NvbnZfZ3JhbW1hclxuXG4oKiBSZWdpc3RlcmluZyBkZWZhdWx0IGV4Y2VwdGlvbiBwcmludGVycyAqKVxuXG5sZXQgZ2V0X2ZsY19lcnJvciBuYW1lIChmaWxlLCBsaW5lLCBjaHIpID0gQXRvbSAoc3ByaW50ZiBcIiVzICVzOiVkOiVkXCIgbmFtZSBmaWxlIGxpbmUgY2hyKVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6ZmFsc2UgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBc3NlcnRfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBc3NlcnRfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIkFzc2VydF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeGl0XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEV4aXQgLT4gQXRvbSBcIkV4aXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRW5kX29mX2ZpbGVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRW5kX29mX2ZpbGUgLT4gQXRvbSBcIkVuZF9vZl9maWxlXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJGYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmQgLT4gQXRvbSBcIk5vdF9mb3VuZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBJbnZhbGlkX2FyZ3VtZW50XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYXJnIC0+IExpc3QgWyBBdG9tIFwiSW52YWxpZF9hcmd1bWVudFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXRjaF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE1hdGNoX2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJNYXRjaF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRfc11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmRfcyBhcmcgLT4gTGlzdCBbIEF0b20gXCJOb3RfZm91bmRfc1wiOyBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5c19lcnJvciBhcmcgLT4gTGlzdCBbIEF0b20gXCJTeXNfZXJyb3JcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkhlbHBdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkhlbHAgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkhlbHBcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkJhZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuQmFkIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5CYWRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTGF6eS5VbmRlZmluZWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTGF6eS5VbmRlZmluZWQgLT4gQXRvbSBcIkxhenkuVW5kZWZpbmVkXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNpbmcuUGFyc2VfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBBdG9tIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBRdWV1ZS5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBRdWV1ZS5FbXB0eSAtPiBBdG9tIFwiUXVldWUuRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2NhbmYuU2Nhbl9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFNjYW5mLlNjYW5fZmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJTY2FuZi5TY2FuX2ZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3RhY2suRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3RhY2suRW1wdHkgLT4gQXRvbSBcIlN0YWNrLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5cy5CcmVha11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXMuQnJlYWsgLT4gQXRvbSBcIlN5cy5CcmVha1wiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4Yzp0cnVlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHNleHApIC0+XG4gICAgICAgICAgTGlzdCBbIEF0b20gXCJTZXhwbGliLkNvbnYuT2Zfc2V4cF9lcnJvclwiOyBzZXhwX29mX2V4biBleGM7IHNleHAgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBTLWV4cHJlc3Npb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwX2NvbnZcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHNleHAgPVxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZyBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2MgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogYSBbc2V4cC5ib29sXSBmaWVsZCB3YXMgZ2l2ZW4gYSBwYXlsb2FkLlwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IG9ubHkgcGFpcnMgZXhwZWN0ZWQsIHRoZWlyIGZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBcXFxuICAgICAgIGF0b21cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyBzZXhwIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3NleHA6IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSBzZXhwXG47O1xuIiwiKCoqIFByaW1pdGl2ZXMgZm9yIHBvbHltb3JwaGljIGNvbXBhcmUuICopXG5cbigqXyBQb2x5bW9ycGhpYyBjb21waWxlciBwcmltaXRpdmVzIGNhbid0IGJlIGFsaWFzZXMgYXMgdGhpcyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gIGlubGluaW5nLiAoSWYgYWxpYXNlZCB3aXRob3V0IGEgdHlwZSBhbm5vdGF0aW9uLCB0aGUgY29tcGlsZXIgd291bGQgaW1wbGVtZW50IHRoZW1cbiAgdXNpbmcgdGhlIGdlbmVyaWMgY29kZSBkb2luZyBhIEMgY2FsbCwgYW5kIGl0J3MgdGhpcyBjb2RlIHRoYXQgd291bGQgYmUgaW5saW5lZC4pIEFzIGFcbiAgcmVzdWx0IHdlIGhhdmUgdG8gY29weSB0aGUgW2V4dGVybmFsIC4uLl0gZGVjbGFyYXRpb24gaGVyZS4gKilcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgYXNjZW5kaW5nIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG5sZXQgbWF4ID0gQ2FtbC5tYXhcbmxldCBtaW4gPSBDYW1sLm1pblxuIiwiKCogVGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gW0ltcG9ydF0uICBJdCBpcyBhaW1lZCBhdCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBzdGFuZGFyZFxuICAgY29tYmluYXRvcnMgZm9yIFtzZXhwX29mXSwgW29mX3NleHBdLCBbY29tcGFyZV0gYW5kIFtoYXNoXSBhbmQgYXJlIGluY2x1ZGVkIGluXG4gICBbSW1wb3J0XS4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgKCogVGhlc2UgbW9kdWxlcyBhcmUgcmVkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxudHlwZSAnYSByZWYgPSAnYSBDYW1sLnJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuKCogUmVzaHVmZmxlIFtDYW1sXSBzbyB0aGF0IHdlIGNob29zZSB0aGUgbW9kdWxlcyB1c2luZyBsYWJlbHMgd2hlbiBhdmFpbGFibGUuICopXG5tb2R1bGUgQ2FtbCA9IHN0cnVjdFxuXG4gIGluY2x1ZGUgQ2FtbFxuXG4gIG1vZHVsZSBBcmcgPSBDYW1sLkFyZyAoKiogQGNhbm9uaWNhbCBDYW1sLkFyZyAqKVxuXG4gIG1vZHVsZSBBcnJheSA9IENhbWwuU3RkTGFiZWxzLkFycmF5ICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLkFycmF5ICopXG5cbiAgbW9kdWxlIEJvb2wgPSBDYW1sLkJvb2wgKCoqIEBjYW5vbmljYWwgQ2FtbC5Cb29sICopXG5cbiAgbW9kdWxlIEJ1ZmZlciA9IENhbWwuQnVmZmVyICgqKiBAY2Fub25pY2FsIENhbWwuQnVmZmVyICopXG5cbiAgbW9kdWxlIEJ5dGVzID0gQ2FtbC5TdGRMYWJlbHMuQnl0ZXMgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuQnl0ZXMgKilcblxuICBtb2R1bGUgQ2hhciA9IENhbWwuQ2hhciAoKiogQGNhbm9uaWNhbCBDYW1sLkNoYXIgKilcblxuICBtb2R1bGUgRXBoZW1lcm9uID0gQ2FtbC5FcGhlbWVyb24gKCoqIEBjYW5vbmljYWwgQ2FtbC5FcGhlbWVyb24gKilcblxuICBtb2R1bGUgRmxvYXQgPSBDYW1sLkZsb2F0ICgqKiBAY2Fub25pY2FsIENhbWwuRmxvYXQgKilcblxuICBtb2R1bGUgRm9ybWF0ID0gQ2FtbC5Gb3JtYXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Gb3JtYXQgKilcblxuICBtb2R1bGUgRnVuID0gQ2FtbC5GdW4gKCoqIEBjYW5vbmljYWwgQ2FtbC5GdW4gKilcblxuICBtb2R1bGUgR2MgPSBDYW1sLkdjICgqKiBAY2Fub25pY2FsIENhbWwuR2MgKilcblxuICBtb2R1bGUgSGFzaHRibCA9IENhbWwuTW9yZUxhYmVscy5IYXNodGJsICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5IYXNodGJsICopXG5cbiAgbW9kdWxlIEludDMyID0gQ2FtbC5JbnQzMiAoKiogQGNhbm9uaWNhbCBDYW1sLkludDMyICopXG5cbiAgbW9kdWxlIEludCA9IENhbWwuSW50ICgqKiBAY2Fub25pY2FsIENhbWwuSW50ICopXG5cbiAgbW9kdWxlIEludDY0ID0gQ2FtbC5JbnQ2NCAoKiogQGNhbm9uaWNhbCBDYW1sLkludDY0ICopXG5cbiAgbW9kdWxlIExhenkgPSBDYW1sLkxhenkgKCoqIEBjYW5vbmljYWwgQ2FtbC5MYXp5ICopXG5cbiAgbW9kdWxlIExleGluZyA9IENhbWwuTGV4aW5nICgqKiBAY2Fub25pY2FsIENhbWwuTGV4aW5nICopXG5cbiAgbW9kdWxlIExpc3QgPSBDYW1sLlN0ZExhYmVscy5MaXN0ICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLkxpc3QgKilcblxuICBtb2R1bGUgTWFwID0gQ2FtbC5Nb3JlTGFiZWxzLk1hcCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuTWFwICopXG5cbiAgbW9kdWxlIE5hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50ICgqKiBAY2Fub25pY2FsIENhbWwuTmF0aXZlaW50ICopXG5cbiAgbW9kdWxlIE9iaiA9IENhbWwuT2JqICgqKiBAY2Fub25pY2FsIENhbWwuT2JqICopXG5cbiAgbW9kdWxlIE9wdGlvbiA9IENhbWwuT3B0aW9uICgqKiBAY2Fub25pY2FsIENhbWwuT3B0aW9uICopXG5cbiAgbW9kdWxlIFBhcnNpbmcgPSBDYW1sLlBhcnNpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5QYXJzaW5nICopXG5cbiAgbW9kdWxlIFByaW50ZXhjID0gQ2FtbC5QcmludGV4YyAoKiogQGNhbm9uaWNhbCBDYW1sLlByaW50ZXhjICopXG5cbiAgbW9kdWxlIFByaW50ZiA9IENhbWwuUHJpbnRmICgqKiBAY2Fub25pY2FsIENhbWwuUHJpbnRmICopXG5cbiAgbW9kdWxlIFF1ZXVlID0gQ2FtbC5RdWV1ZSAoKiogQGNhbm9uaWNhbCBDYW1sLlF1ZXVlICopXG5cbiAgbW9kdWxlIFJhbmRvbSA9IENhbWwuUmFuZG9tICgqKiBAY2Fub25pY2FsIENhbWwuUmFuZG9tICopXG5cbiAgbW9kdWxlIFJlc3VsdCA9IENhbWwuUmVzdWx0ICgqKiBAY2Fub25pY2FsIENhbWwuUmVzdWx0ICopXG5cbiAgbW9kdWxlIFNjYW5mID0gQ2FtbC5TY2FuZiAoKiogQGNhbm9uaWNhbCBDYW1sLlNjYW5mICopXG5cbiAgbW9kdWxlIFNlcSA9IENhbWwuU2VxICgqKiBAY2Fub25pY2FsIENhbWwuU2VxICopXG5cbiAgbW9kdWxlIFNldCA9IENhbWwuTW9yZUxhYmVscy5TZXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLlNldCAqKVxuXG4gIG1vZHVsZSBTdGFjayA9IENhbWwuU3RhY2sgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGFjayAqKVxuXG4gIG1vZHVsZSBTdHJpbmcgPSBDYW1sLlN0ZExhYmVscy5TdHJpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuU3RyaW5nICopXG5cbiAgbW9kdWxlIFN5cyA9IENhbWwuU3lzICgqKiBAY2Fub25pY2FsIENhbWwuU3lzICopXG5cbiAgbW9kdWxlIFVjaGFyID0gQ2FtbC5VY2hhciAoKiogQGNhbm9uaWNhbCBDYW1sLlVjaGFyICopXG5cbiAgbW9kdWxlIFVuaXQgPSBDYW1sLlVuaXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Vbml0ICopXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZCA9IENhbWwuTm90X2ZvdW5kXG5lbmRcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuKCogV2UgdXNlIFtPYmoubWFnaWNdIGhlcmUgYXMgb3RoZXIgaW1wbGVtZW50YXRpb25zIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwganVtcCBhbmQgdGhlXG4gICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGlzIG5vdGljZWFibGUuICopXG5sZXQgYm9vbF90b19pbnQgKHggOiBib29sKSA6IGludCA9IENhbWwuT2JqLm1hZ2ljIHhcblxuKCogVGhpcyBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseSAqKVxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0ICggIT0gKSA9IENhbWwuKCAhPSApXG5sZXQgKCAqICkgPSBDYW1sLiggKiApXG5sZXQgKCAqKiApID0gQ2FtbC4oICoqIClcbmxldCAoICouICkgPSBDYW1sLiggKi4gKVxubGV0ICggKyApID0gQ2FtbC4oICsgKVxubGV0ICggKy4gKSA9IENhbWwuKCArLiApXG5sZXQgKCAtICkgPSBDYW1sLiggLSApXG5sZXQgKCAtLiApID0gQ2FtbC4oIC0uIClcbmxldCAoIC8gKSA9IENhbWwuKCAvIClcbmxldCAoIC8uICkgPSBDYW1sLiggLy4gKVxuXG5tb2R1bGUgUG9seSA9IFBvbHkwICgqKiBAY2Fub25pY2FsIEJhc2UuUG9seSAqKVxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuSW50MzIudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuICBleHRlcm5hbCBjb21wYXJlIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuSW50NjQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuSW50NjQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IG1heCAoeCA6IENhbWwuSW50NjQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLkludDY0LnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBib29sKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBib29sKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBib29sKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBib29sKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJvb2wpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogYm9vbCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBjaGFyKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGNoYXIpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogY2hhcikgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgaSB4ID0gQ2FtbC5VY2hhci50b19pbnQgeFxuICBsZXQgKCA8ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIChpIHgpIChpIHkpXG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPSApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPiApIChpIHgpIChpIHkpXG4gIGxldCAoID49ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSAoaSB4KSAoaSB5KVxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuYXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZGVzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBjb21wYXJlICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIChpIHgpIChpIHkpXG4gIGxldCBlcXVhbCAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgKGkgeCkgKGkgeSlcbiAgbGV0IG1heCAoeCA6IENhbWwuVWNoYXIudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogZmxvYXQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGZsb2F0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGZsb2F0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGZsb2F0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHN0cmluZykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHN0cmluZykgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBzdHJpbmcpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYnl0ZXMpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJ5dGVzKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJ5dGVzKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGJ5dGVzKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG4oKiBUaGlzIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIHNwZWNpYWxpemUgaXQgYXMgYVxuICAgZGlyZWN0IHNldCBvciBjYW1sX21vZGlmeSAqKVxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgb3RoZXJ3aXNlIHRoZSBjb21waWxlciB3b24ndCB1bmJveFxuICAgcmVmZXJlbmNlcyAqKVxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuXG5sZXQgKCBAICkgPSBDYW1sLiggQCApXG5sZXQgKCBeICkgPSBDYW1sLiggXiApXG5sZXQgKCB+LSApID0gQ2FtbC4oIH4tIClcbmxldCAoIH4tLiApID0gQ2FtbC4oIH4tLiApXG5sZXQgKCBhc3IgKSA9IENhbWwuKCBhc3IgKVxubGV0ICggbGFuZCApID0gQ2FtbC4oIGxhbmQgKVxubGV0IGxub3QgPSBDYW1sLmxub3RcbmxldCAoIGxvciApID0gQ2FtbC4oIGxvciApXG5sZXQgKCBsc2wgKSA9IENhbWwuKCBsc2wgKVxubGV0ICggbHNyICkgPSBDYW1sLiggbHNyIClcbmxldCAoIGx4b3IgKSA9IENhbWwuKCBseG9yIClcbmxldCAoIG1vZCApID0gQ2FtbC4oIG1vZCApXG5sZXQgYWJzID0gQ2FtbC5hYnNcbmxldCBmYWlsd2l0aCA9IENhbWwuZmFpbHdpdGhcbmxldCBmc3QgPSBDYW1sLmZzdFxubGV0IGludmFsaWRfYXJnID0gQ2FtbC5pbnZhbGlkX2FyZ1xubGV0IHNuZCA9IENhbWwuc25kXG5cbigqIFtyYWlzZV0gbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBhcyB0aGUgY29tcGlsZXIgYXV0b21hdGljYWxseSByZXBsYWNlc1xuICAgJyVyYWlzZScgYnkgJyVyZXJhaXNlJyB3aGVuIGFwcHJvcHJpYXRlLiAqKVxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxubGV0IHBoeXNfZXF1YWwgPSBDYW1sLiggPT0gKVxubGV0IGRlY3IgPSBDYW1sLmRlY3JcbmxldCBpbmNyID0gQ2FtbC5pbmNyXG5cbigqIHVzZWQgYnkgc2V4cF9jb252LCB3aGljaCBmbG9hdDAgZGVwZW5kcyBvbiB0aHJvdWdoIG9wdGlvbiAqKVxubGV0IGZsb2F0X29mX3N0cmluZyA9IENhbWwuZmxvYXRfb2Zfc3RyaW5nXG5cbigqIFthbV90ZXN0aW5nXSBpcyB1c2VkIGluIGEgZmV3IHBsYWNlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiBpbiB0ZXN0aW5nIG1vZGUsIHN1Y2hcbiAgIGFzIGluIFtyYW5kb20ubWxdLiAgW2FtX3Rlc3RpbmddIGlzIGltcGxlbWVudGVkIHVzaW5nIFtCYXNlX2FtX3Rlc3RpbmddLCBhIHdlYWsgQy9qc1xuICAgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbZmFsc2VdLCBidXQgd2hlbiBsaW5raW5nIGFuIGlubGluZS10ZXN0LXJ1bm5lciBleGVjdXRhYmxlLCBpc1xuICAgb3ZlcnJpZGRlbiBieSBhbm90aGVyIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW3RydWVdLiAqKVxuZXh0ZXJuYWwgYW1fdGVzdGluZyA6IHVuaXQgLT4gYm9vbCA9IFwiQmFzZV9hbV90ZXN0aW5nXCJcblxubGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nICgpXG4iLCJvcGVuISBJbXBvcnQwXG5pbmNsdWRlIENhbWwuUHJpbnRmXG5cbigqKiBmYWlsd2l0aCwgaW52YWxpZF9hcmcsIGFuZCBleGl0IGFjY2VwdGluZyBwcmludGYncyBmb3JtYXQuICopXG5cbmxldCBmYWlsd2l0aGYgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGZhaWx3aXRoIHMpIGZtdFxubGV0IGludmFsaWRfYXJnZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gaW52YWxpZF9hcmcgcykgZm10XG4iLCIoKiBbU3lzMF0gZGVmaW5lcyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtDYW1sLlN5c10uICBbU3lzMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbQ2FtbC5TeXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3lzLm1sXG4gICBzaG91bGQgdXNlIFtDYW1sLlN5c10uIFtTeXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZVxuICAgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSB0aGVzZVxuICAgZnVuY3Rpb25zIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TeXNdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBTeXMgPSBTeXMwXS4gIERlZmluaW5nIFttb2R1bGUgU3lzID0gU3lzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZVxuICAgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TeXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbnR5cGUgYmFja2VuZF90eXBlID0gQ2FtbC5TeXMuYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuXG5sZXQgYmFja2VuZF90eXBlID0gQ2FtbC5TeXMuYmFja2VuZF90eXBlXG5sZXQgaW50ZXJhY3RpdmUgPSBDYW1sLlN5cy5pbnRlcmFjdGl2ZVxubGV0IG9zX3R5cGUgPSBDYW1sLlN5cy5vc190eXBlXG5sZXQgdW5peCA9IENhbWwuU3lzLnVuaXhcbmxldCB3aW4zMiA9IENhbWwuU3lzLndpbjMyXG5sZXQgY3lnd2luID0gQ2FtbC5TeXMuY3lnd2luXG5sZXQgd29yZF9zaXplX2luX2JpdHMgPSBDYW1sLlN5cy53b3JkX3NpemVcbmxldCBpbnRfc2l6ZV9pbl9iaXRzID0gQ2FtbC5TeXMuaW50X3NpemVcbmxldCBiaWdfZW5kaWFuID0gQ2FtbC5TeXMuYmlnX2VuZGlhblxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gQ2FtbC5TeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gQ2FtbC5TeXMubWF4X2FycmF5X2xlbmd0aFxubGV0IHJ1bnRpbWVfdmFyaWFudCA9IENhbWwuU3lzLnJ1bnRpbWVfdmFyaWFudFxubGV0IHJ1bnRpbWVfcGFyYW1ldGVycyA9IENhbWwuU3lzLnJ1bnRpbWVfcGFyYW1ldGVyc1xubGV0IGFyZ3YgPSBDYW1sLlN5cy5hcmd2XG5sZXQgZ2V0X2FyZ3YgKCkgPSBDYW1sLlN5cy5hcmd2XG5sZXQgb2NhbWxfdmVyc2lvbiA9IENhbWwuU3lzLm9jYW1sX3ZlcnNpb25cbmxldCBlbmFibGVfcnVudGltZV93YXJuaW5ncyA9IENhbWwuU3lzLmVuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG5sZXQgcnVudGltZV93YXJuaW5nc19lbmFibGVkID0gQ2FtbC5TeXMucnVudGltZV93YXJuaW5nc19lbmFibGVkXG5cbmxldCBnZXRlbnZfZXhuIHZhciA9XG4gIHRyeSBDYW1sLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCBDYW1sLk5vdF9mb3VuZCAtPlxuICAgIFByaW50Zi5mYWlsd2l0aGYgXCJTeXMuZ2V0ZW52X2V4bjogZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgaXMgbm90IHNldFwiIHZhciAoKVxuOztcblxubGV0IGdldGVudiB2YXIgPVxuICBtYXRjaCBDYW1sLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbmV4Y2VwdGlvbiBCcmVhayA9IENhbWwuU3lzLkJyZWFrXG4iLCIoKiBbQXJyYXkwXSBkZWZpbmVzIGFycmF5IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtc1xuICAgb2YgW0NhbWwuQXJyYXldLiAgW0FycmF5MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkFycmF5XVxuICAgdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBhcnJheTAubWwgc2hvdWxkIHVzZSBbQ2FtbC5BcnJheV0uXG4gICBbQXJyYXkwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBhcnJheXMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkFycmF5XSBpbiBidWlsZCBvcmRlciBzaG91bGRcbiAgIGRvIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdLiAgVGhpcyBpbmNsdWRlcyB1c2VzIG9mIHN1YnNjcmlwdCBzeW50YXggKFt4LihpKV0sIFt4LihpKSA8LVxuICAgZV0pLCB3aGljaCB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG8gW0FycmF5LmdldF0gYW5kIFtBcnJheS5zZXRdLlxuICAgRGVmaW5pbmcgW21vZHVsZSBBcnJheSA9IEFycmF5MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tXG4gICBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5BcnJheV0uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbiAgZXh0ZXJuYWwgZ2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBzZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgIDogIHNyYzonYSBhcnJheVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OidhIGFycmF5XG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZW5kXG5cbmluY2x1ZGUgQXJyYXlcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gIHRyeSBjcmVhdGUgbGVuIHggd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGUgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuID1cbiAgdHJ5IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIGxlbiB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBhcHBlbmQgPSBDYW1sLkFycmF5LmFwcGVuZFxubGV0IGJsaXQgPSBDYW1sLkFycmF5LmJsaXRcbmxldCBjb25jYXQgPSBDYW1sLkFycmF5LmNvbmNhdFxubGV0IGNvcHkgPSBDYW1sLkFycmF5LmNvcHlcbmxldCBmaWxsID0gQ2FtbC5BcnJheS5maWxsXG5sZXQgaW5pdCA9IENhbWwuQXJyYXkuaW5pdFxubGV0IG1ha2VfbWF0cml4ID0gQ2FtbC5BcnJheS5tYWtlX21hdHJpeFxubGV0IG9mX2xpc3QgPSBDYW1sLkFycmF5Lm9mX2xpc3RcbmxldCBzdWIgPSBDYW1sLkFycmF5LnN1YlxubGV0IHRvX2xpc3QgPSBDYW1sLkFycmF5LnRvX2xpc3RcblxuKCogVGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gQ2FtbC5BcnJheS5mb2xkX2xlZnQgdCB+aW5pdCB+ZlxubGV0IGZvbGRfcmlnaHQgdCB+ZiB+aW5pdCA9IENhbWwuQXJyYXkuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5sZXQgaXRlciB0IH5mID0gQ2FtbC5BcnJheS5pdGVyIHQgfmZcbmxldCBpdGVyaSB0IH5mID0gQ2FtbC5BcnJheS5pdGVyaSB0IH5mXG5sZXQgbWFwIHQgfmYgPSBDYW1sLkFycmF5Lm1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gQ2FtbC5BcnJheS5tYXBpIHQgfmZcbmxldCBzdGFibGVfc29ydCB0IH5jb21wYXJlID0gQ2FtbC5BcnJheS5zdGFibGVfc29ydCB0IH5jbXA6Y29tcGFyZVxuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBlbHRfaSA9IHQuKGkpIGluXG4gIGxldCBlbHRfaiA9IHQuKGopIGluXG4gIHVuc2FmZV9zZXQgdCBpIGVsdF9qO1xuICB1bnNhZmVfc2V0IHQgaiBlbHRfaVxuOztcbiIsIigqIFtDaGFyMF0gZGVmaW5lcyBjaGFyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW0NhbWwuQ2hhcl0uICBbQ2hhcjBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbQ2FtbC5DaGFyXSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBjaGFyMC5tbCBzaG91bGQgdXNlIFtDYW1sLkNoYXJdLlxuICAgW0NoYXIwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBjaGFycyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQ2hhcl0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIENoYXIgPSBDaGFyMF0uICBEZWZpbmluZyBbbW9kdWxlIENoYXIgPSBDaGFyMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5DaGFyXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxubGV0IGVzY2FwZWQgPSBDYW1sLkNoYXIuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IENhbWwuQ2hhci5sb3dlcmNhc2VfYXNjaWlcbmxldCB0b19pbnQgPSBDYW1sLkNoYXIuY29kZVxubGV0IHVuc2FmZV9vZl9pbnQgPSBDYW1sLkNoYXIudW5zYWZlX2NoclxubGV0IHVwcGVyY2FzZSA9IENhbWwuQ2hhci51cHBlcmNhc2VfYXNjaWlcblxuKCogV2UgdXNlIG91ciBvd24gcmFuZ2UgdGVzdCB3aGVuIGNvbnZlcnRpbmcgaW50ZWdlcnMgdG8gY2hhcnMgcmF0aGVyIHRoYW5cbiAgIGNhbGxpbmcgW0NhbWwuQ2hhci5jaHJdIGJlY2F1c2UgaXQncyBzaW1wbGUgYW5kIGl0IHNhdmVzIHVzIGEgZnVuY3Rpb24gY2FsbFxuICAgYW5kIHRoZSB0cnktd2l0aCAoZXhjZXB0aW9ucyBjb3N0LCBlc3BlY2lhbGx5IGluIHRoZSB3b3JsZCB3aXRoIGJhY2t0cmFjZXMpLiAqKVxubGV0IGludF9pc19vayBpID0gMCA8PSBpICYmIGkgPD0gMjU1XG5sZXQgbWluX3ZhbHVlID0gdW5zYWZlX29mX2ludCAwXG5sZXQgbWF4X3ZhbHVlID0gdW5zYWZlX29mX2ludCAyNTVcbmxldCBvZl9pbnQgaSA9IGlmIGludF9pc19vayBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX2ludF9leG4gaSA9XG4gIGlmIGludF9pc19vayBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5vZl9pbnRfZXhuIGdvdCBpbnRlZ2VyIG91dCBvZiByYW5nZTogJWRcIiBpICgpXG47O1xuXG5sZXQgZXF1YWwgKHQxIDogY2hhcikgdDIgPSBQb2x5LmVxdWFsIHQxIHQyXG4iLCIoKiBbSW50MF0gZGVmaW5lcyBpbnRlZ2VyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW0NhbWxdLiBbSW50MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZVxuICAgcGFydCBvZiBbQ2FtbF0gdGhhdCBbQmFzZV0gdXNlcyBmb3IgaW50ZWdlcnMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGludDAubWwgc2hvdWxkIHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgdGhyb3VnaCBbQ2FtbF0uIFtJbnQwXSBoYXNcbiAgIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGludHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkludF0gaW4gYnVpbGRcbiAgIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEludCAgPSBJbnQwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEludCA9IEludDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXBcbiAgIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuSW50XS4gKilcblxubGV0IHRvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2ludFxubGV0IG9mX3N0cmluZyA9IENhbWwuaW50X29mX3N0cmluZ1xubGV0IHRvX2Zsb2F0ID0gQ2FtbC5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdCA9IENhbWwuaW50X29mX2Zsb2F0XG5sZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gQ2FtbC5taW5faW50XG5sZXQgc3VjYyA9IENhbWwuc3VjY1xuIiwiKCogW0xpc3QwXSBkZWZpbmVzIGxpc3QgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbQ2FtbC5MaXN0XS4gIFtMaXN0MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkxpc3RdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGxpc3QwLm1sIHNob3VsZCB1c2UgW0NhbWwuTGlzdF0uXG4gICBbTGlzdDBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGxpc3RzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5MaXN0XSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgTGlzdCA9IExpc3QwXS4gIERlZmluaW5nIFttb2R1bGUgTGlzdCA9IExpc3QwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkxpc3RdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBoZF9leG4gPSBDYW1sLkxpc3QuaGRcbmxldCBsZW5ndGggPSBDYW1sLkxpc3QubGVuZ3RoXG5sZXQgcmV2X2FwcGVuZCA9IENhbWwuTGlzdC5yZXZfYXBwZW5kXG5sZXQgdGxfZXhuID0gQ2FtbC5MaXN0LnRsXG5sZXQgdW56aXAgPSBDYW1sLkxpc3Quc3BsaXRcblxuKCogVGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5sZXQgZXhpc3RzIHQgfmYgPSBDYW1sLkxpc3QuZXhpc3RzIHQgfmZcbmxldCBleGlzdHMyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LmV4aXN0czIgbDEgbDIgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLkxpc3QuZm9sZF9sZWZ0IHQgfmYgfmluaXRcbmxldCBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZiA9IENhbWwuTGlzdC5mb2xkX2xlZnQyIGwxIGwyIH5pbml0IH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gQ2FtbC5MaXN0LmZvcl9hbGwgdCB+ZlxubGV0IGZvcl9hbGwyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LmZvcl9hbGwyIGwxIGwyIH5mXG5sZXQgaXRlciB0IH5mID0gQ2FtbC5MaXN0Lml0ZXIgdCB+ZlxubGV0IGl0ZXIyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0Lml0ZXIyIGwxIGwyIH5mXG5sZXQgbm9udGFpbF9tYXAgdCB+ZiA9IENhbWwuTGlzdC5tYXAgdCB+ZlxubGV0IG5vbnRhaWxfbWFwaSB0IH5mID0gQ2FtbC5MaXN0Lm1hcGkgdCB+ZlxubGV0IHBhcnRpdGlvbiB0IH5mID0gQ2FtbC5MaXN0LnBhcnRpdGlvbiB0IH5mXG5sZXQgcmV2X21hcCB0IH5mID0gQ2FtbC5MaXN0LnJldl9tYXAgdCB+ZlxubGV0IHJldl9tYXAyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LnJldl9tYXAyIGwxIGwyIH5mXG5sZXQgc29ydCBsIH5jb21wYXJlID0gQ2FtbC5MaXN0LnNvcnQgbCB+Y21wOmNvbXBhcmVcbmxldCBzdGFibGVfc29ydCBsIH5jb21wYXJlID0gQ2FtbC5MaXN0LnN0YWJsZV9zb3J0IGwgfmNtcDpjb21wYXJlXG5cbmxldCByZXYgPSBmdW5jdGlvblxuICB8IChbXSB8IFsgXyBdKSBhcyByZXMgLT4gcmVzXG4gIHwgeCA6OiB5IDo6IHJlc3QgLT4gcmV2X2FwcGVuZCByZXN0IFsgeTsgeCBdXG47O1xuXG5sZXQgZm9sZF9yaWdodCBsIH5mIH5pbml0ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gaW5pdCAoKiBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBbfmZdIGJlbG93ICopXG4gIHwgXyAtPiBmb2xkIH5mOihmdW4gYSBiIC0+IGYgYiBhKSB+aW5pdCAocmV2IGwpXG47O1xuIiwiKCpcbiAgIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBbcHB4X2hhc2hdLlxuXG4gICBUaGUgW3BweF9oYXNoXSBzeW50YXggZXh0ZW5zaW9uIHN1cHBvcnRzOiBbQEBkZXJpdmluZyBoYXNoXSBhbmQgWyVoYXNoX2ZvbGQ6IFRZUEVdIGFuZFxuICAgWyVoYXNoOiBUWVBFXVxuXG4gICBGb3IgdHlwZSBbdF0gYSBmdW5jdGlvbiBbaGFzaF9mb2xkX3RdIG9mIHR5cGUgW0hhc2guc3RhdGUgLT4gdCAtPiBIYXNoLnN0YXRlXSBpc1xuICAgZ2VuZXJhdGVkLlxuXG4gICBUaGUgZ2VuZXJhdGVkIFtoYXNoX2ZvbGRfPFQ+XSBmdW5jdGlvbiBpcyBjb21wb3NpdGlvbmFsLCBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGVcbiAgIHR5cGU7IGFsbG93aW5nIHVzZXIgb3ZlcnJpZGVzIGF0IGV2ZXJ5IGxldmVsLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIG9jYW1sJ3MgYnVpbHRpblxuICAgcG9seW1vcnBoaWMgaGFzaGluZyBbSGFzaHRibC5oYXNoXSB3aGljaCBpZ25vcmVzIHVzZXIgb3ZlcnJpZGVzLlxuXG4gICBUaGUgZ2VuZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBkaXJlY3QgaGFzaC1mdW5jdGlvbiBbaGFzaF0gKG5hbWVkIFtoYXNoXzxUPl0gd2hlbiA8VD4gIT1cbiAgIFwidFwiKSBvZiB0eXBlOiBbdCAtPiBIYXNoLmhhc2hfdmFsdWVdLlxuXG4gICBUaGUgZm9sZGluZyBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2hfZm9sZDogVFlQRV1cbiAgIFRoZSBkaXJlY3QgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoOiBUWVBFXVxuKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBIYXNoX2ludGZcblxuKCoqIEJ1aWx0aW4gZm9sZGluZy1zdHlsZSBoYXNoIGZ1bmN0aW9ucywgYWJzdHJhY3RlZCBvdmVyIFtIYXNoX2ludGYuU10gKilcbm1vZHVsZSBGb2xkaW5nIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkJ1aWx0aW5faW50ZlxuICB3aXRoIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGhhc2hfZm9sZF91bml0IHMgKCkgPSBzXG4gIGxldCBoYXNoX2ZvbGRfaW50ID0gSGFzaC5mb2xkX2ludFxuICBsZXQgaGFzaF9mb2xkX2ludDY0ID0gSGFzaC5mb2xkX2ludDY0XG4gIGxldCBoYXNoX2ZvbGRfZmxvYXQgPSBIYXNoLmZvbGRfZmxvYXRcbiAgbGV0IGhhc2hfZm9sZF9zdHJpbmcgPSBIYXNoLmZvbGRfc3RyaW5nXG4gIGxldCBhc19pbnQgZiBzIHggPSBoYXNoX2ZvbGRfaW50IHMgKGYgeClcblxuICAoKiBUaGlzIGlnbm9yZXMgdGhlIHNpZ24gYml0IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyB1bmxpa2VseSB0byBsZWFkIHRvXG4gICAgIGZyZXF1ZW50IGNvbGxpc2lvbnMgKG1pbl92YWx1ZSBjb2xsaWRpbmcgd2l0aCAwIGlzIHRoZSBtb3N0IGxpa2VseSBvbmUpLiAgKilcbiAgbGV0IGhhc2hfZm9sZF9pbnQzMiA9IGFzX2ludCBDYW1sLkludDMyLnRvX2ludFxuICBsZXQgaGFzaF9mb2xkX2NoYXIgPSBhc19pbnQgQ2hhci50b19pbnRcblxuICBsZXQgaGFzaF9mb2xkX2Jvb2wgPVxuICAgIGFzX2ludCAoZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiAxXG4gICAgICB8IGZhbHNlIC0+IDApXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9uYXRpdmVpbnQgcyB4ID0gaGFzaF9mb2xkX2ludDY0IHMgKENhbWwuSW50NjQub2ZfbmF0aXZlaW50IHgpXG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gaGFzaF9mb2xkX2VsZW0gcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGhhc2hfZm9sZF9pbnQgcyAwXG4gICAgfCBTb21lIHggLT4gaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9pbnQgcyAxKSB4XG4gIDs7XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCB4IDo6IHhzIC0+IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgeCkgeHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICAoKiBUaGUgW2xlbmd0aF0gb2YgdGhlIGxpc3QgbXVzdCBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaGFzaC1zdGF0ZSBzbyB2YWx1ZXMgb2ZcbiAgICAgICB0eXBlcyBzdWNoIGFzIFt1bml0IGxpc3RdIC0gKFtdLCBbKCldLCBbKCk7KCldLC4uKSBhcmUgaGFzaGVkIGRpZmZlcmVudGx5LiAqKVxuICAgICgqIFRoZSBbbGVuZ3RoXSBtdXN0IGNvbWUgYmVmb3JlIHRoZSBlbGVtZW50cyB0byBhdm9pZCBhIHZpb2xhdGlvbiBvZiB0aGUgcnVsZVxuICAgICAgIGVuZm9yY2VkIGJ5IFBlcmZlY3RfaGFzaC4gKilcbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9pbnQgcyAoTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0IGluXG4gICAgc1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGF6eV90IGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgKENhbWwuTGF6eS5mb3JjZSB4KVxuICBsZXQgaGFzaF9mb2xkX3JlZl9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAheFxuXG4gIGxldCByZWMgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBhcnJheVxuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IGUgPSBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkgaW5cbiAgICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyBlKSBhcnJheSAoaSArIDEpKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgPVxuICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faVxuICAgICAgKCogW2xlbmd0aF0gbXVzdCBiZSBpbmNvcnBvcmF0ZWQgZm9yIGFycmF5cywgYXMgaXQgaXMgZm9yIGxpc3RzLiBTZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgaGFzaF9mb2xkX2VsZW1cbiAgICAgIChoYXNoX2ZvbGRfaW50IHMgKEFycmF5Lmxlbmd0aCBhcnJheSkpXG4gICAgICBhcnJheVxuICAgICAgMFxuICA7O1xuXG4gICgqIHRoZSBkdXBsaWNhdGlvbiBoZXJlIGlzIGJlY2F1c2Ugd2UgdGhpbmtcbiAgICAgb2NhbWwgY2FuJ3QgZWxpbWluYXRlIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIG90aGVyd2lzZS4gKilcbiAgbGV0IGhhc2hfbmF0aXZlaW50IHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9uYXRpdmVpbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2ludDY0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50NjQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQzMiB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDMyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfY2hhciB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2NoYXIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9ib29sIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfYm9vbCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5cbiAgbGV0IGhhc2hfc3RyaW5nIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9zdHJpbmcgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2Zsb2F0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfZmxvYXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF91bml0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdW5pdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5lbmRcblxubW9kdWxlIEYgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuRnVsbFxuICB3aXRoIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICAgYW5kIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBzZWVkID0gSGFzaC5zZWVkID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBGb2xkaW5nIChIYXNoKVxuXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAoSGFzaC5yZXNldCA/c2VlZCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsaGFzaCA6IHNpZ1xuICBpbmNsdWRlXG4gICAgSGFzaF9pbnRmLlNcbiAgICB3aXRoIHR5cGUgc3RhdGUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zdGF0ZVxuICAgICAoKiBXZSBnaXZlIGEgY29uY3JldGUgdHlwZSBmb3IgW3N0YXRlXSwgYWxiZWl0IG9ubHkgcGFydGlhbGx5IGV4cG9zZWQgKHNlZVxuICAgICAgICBCYXNlX2ludGVybmFsaGFzaF90eXBlcyksIHNvIHRoYXQgaXQgdW5pZmllcyB3aXRoIHRoZSBzYW1lIHR5cGUgaW4gW0Jhc2VfYm9vdF0sXG4gICAgICAgIGFuZCB0byBhbGxvdyBvcHRpbWl6YXRpb25zIGZvciB0aGUgaW1tZWRpYXRlIHR5cGUuICopXG4gICAgIGFuZCB0eXBlIHNlZWQgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zZWVkXG4gICAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5oYXNoX3ZhbHVlXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQ2NCA6IHN0YXRlIC0+IGludDY0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2ludCA6IHN0YXRlIC0+IGludCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfZmxvYXQgOiBzdGF0ZSAtPiBmbG9hdCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9zdHJpbmcgOiBzdGF0ZSAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBnZXRfaGFzaF92YWx1ZSA6IHN0YXRlIC0+IGhhc2hfdmFsdWUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXCJcbiAgW0BAbm9hbGxvY11cbmVuZCA9IHN0cnVjdFxuICBsZXQgZGVzY3JpcHRpb24gPSBcImludGVybmFsaGFzaFwiXG5cbiAgaW5jbHVkZSBCYXNlX2ludGVybmFsaGFzaF90eXBlc1xuXG4gIGxldCBhbGxvYyAoKSA9IGNyZWF0ZV9zZWVkZWQgMFxuICBsZXQgcmVzZXQgPyhzZWVkID0gMCkgX3QgPSBjcmVhdGVfc2VlZGVkIHNlZWRcblxuICBtb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gICAgbGV0IGNvbXBhcmVfc3RhdGUgKGEgOiBzdGF0ZSkgKGIgOiBzdGF0ZSkgPSBjb21wYXJlIChhIDo+IGludCkgKGIgOj4gaW50KVxuICAgIGxldCBzdGF0ZV90b19zdHJpbmcgKHN0YXRlIDogc3RhdGUpID0gSW50LnRvX3N0cmluZyAoc3RhdGUgOj4gaW50KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEludGVybmFsaGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID0gZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAocmVzZXQgP3NlZWQgKGFsbG9jICgpKSkgeClcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gICAgbW9kdWxlIEZvbGRpbmcgPSBGb2xkaW5nIChJbnRlcm5hbGhhc2gpXG4gICAgaW5jbHVkZSBGb2xkaW5nXG5cbiAgICAoKiBbRm9sZGluZ10gcHJvdmlkZXMgc29tZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIFtoYXNoXypdIGZ1bmN0aW9ucyBiZWxvdyxcbiAgICAgICBidXQgdGhleSBhcmUgaW5lZmZpY2llbnQgZm9yIHNvbWUgdXNlLWNhc2VzIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgW2hhc2hfZm9sZF1cbiAgICAgICBmdW5jdGlvbnMuIEF0IHRoaXMgcG9pbnQsIHRoZSBbaGFzaF92YWx1ZV0gdHlwZSBoYXMgYmVlbiBmaXhlZCB0byBbaW50XSwgc28gdGhpc1xuICAgICAgIG1vZHVsZSBjYW4gcHJvdmlkZSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMuICopXG5cbiAgICBsZXQgaGFzaF9jaGFyID0gQ2hhcjAudG9faW50XG5cbiAgICAoKiBUaGlzIGhhc2ggd2FzIGNob3NlbiBmcm9tIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2JhZGJveS82MjY3NzQzXG5cbiAgICAgICBJdCBhdHRlbXB0cyB0byBmdWxmaWxsIHRoZSBwcmltYXJ5IGdvYWxzIG9mIGEgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbjpcblxuICAgICAgIC0gYSBiaXQgY2hhbmdlIGluIHRoZSBpbnB1dCBzaG91bGQgY2hhbmdlIH4xLzIgb2YgdGhlIG91dHB1dCBiaXRzXG4gICAgICAgLSB0aGUgb3V0cHV0IHNob3VsZCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBvdXRwdXQgcmFuZ2VcbiAgICAgICAtIGlucHV0cyB0aGF0IGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIHNob3VsZG4ndCBsZWFkIHRvIG91dHB1dHMgdGhhdCBhcmUgY2xvc2UgdG9cbiAgICAgICAgIGVhY2ggb3RoZXIuXG4gICAgICAgLSBhbGwgYml0cyBvZiB0aGUgaW5wdXQgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyB0aGUgb3V0cHV0XG5cbiAgICAgICBJbiBvdXIgY2FzZSB3ZSBhbHNvIHdhbnQgaXQgdG8gYmUgZmFzdCwgbm9uLWFsbG9jYXRpbmcsIGFuZCBpbmxpbmFibGUuICAqKVxuICAgIGxldFtAaW5saW5lIGFsd2F5c10gaGFzaF9pbnQgKHQgOiBpbnQpID1cbiAgICAgIGxldCB0ID0gbG5vdCB0ICsgKHQgbHNsIDIxKSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDMpICsgKHQgbHNsIDgpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMTQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMikgKyAodCBsc2wgNCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyOCkgaW5cbiAgICAgIHQgKyAodCBsc2wgMzEpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2Jvb2wgeCA9IGlmIHggdGhlbiAxIGVsc2UgMFxuXG4gICAgZXh0ZXJuYWwgaGFzaF9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiQmFzZV9oYXNoX2RvdWJsZVwiIFtAQG5vYWxsb2NdXG5cbiAgICBsZXQgaGFzaF91bml0ICgpID0gMFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcbiIsIm9wZW4gSW1wb3J0MFxuXG5sZXQgcGh5c19lcXVhbCA9IHBoeXNfZXF1YWxcblxuZXh0ZXJuYWwgcG9seW1vcnBoaWNfY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgcG9seW1vcnBoaWNfZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcblxubGV0IGNvbXBhcmVfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiQ29tcGFyZSBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG5sZXQgZXF1YWxfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiRXF1YWwgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxudHlwZSAnYSBjb21wYXJlID0gJ2EgLT4gJ2EgLT4gaW50XG50eXBlICdhIGVxdWFsID0gJ2EgLT4gJ2EgLT4gYm9vbFxuXG5tb2R1bGUgQ29tcGFyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY29tcGFyZSA6IHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdhIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gKCdhLCAnYikgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gJ2MgY29tcGFyZSAtPiAoJ2EsICdiLCAnYykgdCBjb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFcXVhbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAoJ2EsICdiKSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gJ2MgZXF1YWwgLT4gKCdhLCAnYiwgJ2MpIHQgZXF1YWxcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmVfYm9vbCA6IGJvb2wgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9jaGFyIDogY2hhciBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2Zsb2F0IDogZmxvYXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQgOiBpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQzMiA6IGludDMyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50NjQgOiBpbnQ2NCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA6IG5hdGl2ZWludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3N0cmluZyA6IHN0cmluZyBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3VuaXQgOiB1bml0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgY29tcGFyZV9hcnJheSBjb21wYXJlX2VsdCBhIGIgPVxuICAgIGlmIHBoeXNfZXF1YWwgYSBiXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICAgIGlmIHJldCA8PiAwXG4gICAgICB0aGVuIHJldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgMCkpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBbXSwgXyAtPiAtMVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IHggeSBpblxuICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgY29tcGFyZV9vcHRpb24gY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMFxuICAgIHwgTm9uZSwgU29tZSBfIC0+IC0xXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gMVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gY29tcGFyZV9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfcmVmIGNvbXBhcmVfZWx0IGEgYiA9IGNvbXBhcmVfZWx0ICFhICFiXG4gIGxldCBlcXVhbF9ib29sIDogYm9vbCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2NoYXIgOiBjaGFyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50IDogaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50MzIgOiBpbnQzMiBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDY0IDogaW50NjQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9zdHJpbmcgOiBzdHJpbmcgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF91bml0IDogdW5pdCBlcXVhbCA9IFBvbHkuZXF1YWxcblxuICAoKiBbUG9seS5lcXVhbF0gaXMgSUVFRSBjb21wbGlhbnQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQgaGVyZS4gKilcbiAgbGV0IGVxdWFsX2Zsb2F0IHggeSA9IGVxdWFsX2ludCAoY29tcGFyZV9mbG9hdCB4IHkpIDBcblxuICBsZXQgZXF1YWxfYXJyYXkgZXF1YWxfZWx0IGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fFxuICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgIGVxdWFsIGxlbl9hIGxlbl9iXG4gICAgJiZcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpID0gbGVuX2FcbiAgICAgIHx8XG4gICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgIGVxdWFsX2VsdCBsIHIgJiYgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgcmVjIGVxdWFsX2xpc3QgZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiBlcXVhbF9lbHQgeCB5ICYmIGVxdWFsX2xpc3QgZXF1YWxfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBlcXVhbF9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGVxdWFsX3JlZiBlcXVhbF9lbHQgYSBiID0gZXF1YWxfZWx0ICFhICFiXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyBmb3IgdXNlIGJ5IHBweF9oYXNoLCBhbmQgaXMgdGh1cyBub3QgaW4gdGhlIGludGVyZmFjZSBvZiBCYXNlLiAqKVxubW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgSGFzaCA9IEhhc2ggKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoICopXG5lbmRcblxudHlwZSAnYSBoYXNoX2ZvbGQgPSBTdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBTdGQuSGFzaC5zdGF0ZVxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogdCBoYXNoX2ZvbGRcbiAgICB2YWwgaGFzaCA6IHQgLT4gU3RkLkhhc2guaGFzaF92YWx1ZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdhIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2IgaGFzaF9mb2xkIC0+ICgnYSwgJ2IpIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90XG4gICAgICA6ICAnYSBoYXNoX2ZvbGRcbiAgICAgIC0+ICdiIGhhc2hfZm9sZFxuICAgICAgLT4gJ2MgaGFzaF9mb2xkXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBoYXNoX2ZvbGRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gSGFzaC5CdWlsdGluXG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIFNleHBsaWIwLlNleHBcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID0gU2V4cGxpYjAuU2V4cC50ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxubGV0IHJlYyBjb21wYXJlID1cbiAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAxXyBiX18wMDJfXG4gICAgIHRoZW4gMFxuICAgICBlbHNlIChcbiAgICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgICB8IEF0b20gX2FfXzAwM18sIEF0b20gX2JfXzAwNF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwM18gX2JfXzAwNF9cbiAgICAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICAgICB8IExpc3QgX2FfXzAwNV8sIExpc3QgX2JfXzAwNl8gLT4gY29tcGFyZV9saXN0IGNvbXBhcmUgX2FfXzAwNV8gX2JfXzAwNl8pXG4gICAgICAgOiB0IC0+IHQgLT4gaW50KVxuOztcblxubGV0IHJlYyAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQXRvbSBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IF9hMFxuICAgICB8IExpc3QgX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfdCBoc3YgX2EwXG4gICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG5cbmFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9jb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmxldCBvZl9zdHJpbmcgPSAoKVxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID1cbiAgfCBXMzJcbiAgfCBXNjRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBXMzIgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzMyXCJcbiAgICB8IFc2NCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXNjRcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbnVtX2JpdHMgPSBmdW5jdGlvblxuICB8IFczMiAtPiAzMlxuICB8IFc2NCAtPiA2NFxuOztcblxubGV0IHdvcmRfc2l6ZSA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemVfaW5fYml0cyB3aXRoXG4gIHwgMzIgLT4gVzMyXG4gIHwgNjQgLT4gVzY0XG4gIHwgXyAtPiBmYWlsd2l0aCBcInVua25vd24gd29yZCBzaXplXCJcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHIgPSByZWYgWyBcIkJhc2UuU2V4cC5wcF9odW1cIiBdXG5sZXQgYWxsICgpID0gIXJcbmxldCByZWdpc3RlciBwID0gciA6PSBwIDo6ICFyXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHBwIDogRm9ybWF0dGVyLnQgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyX3BwIChNIDogc2lnXG4gICAgaW5jbHVkZSBTXG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgbGV0ICgpID0gcmVnaXN0ZXIgKE0ubW9kdWxlX25hbWUgXiBcIi5wcFwiKVxuZW5kXG5cbm1vZHVsZSBSZWdpc3RlciAoTSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuICBSZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBsZXQgcHAgZm9ybWF0dGVyIHQgPSBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm9ybWF0dGVyIChNLnRvX3N0cmluZyB0KVxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZXhuIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbltAQEBlbmRdXG5cbmxldCBleGl0ID0gQ2FtbC5leGl0XG5cbmV4Y2VwdGlvbiBGaW5hbGx5IG9mIHQgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmluYWxseV0gKGZ1bmN0aW9uXG4gICAgfCBGaW5hbGx5IChhcmcwX18wMDFfLCBhcmcxX18wMDJfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3QgYXJnMF9fMDAxX1xuICAgICAgYW5kIHJlczFfXzAwNF8gPSBzZXhwX29mX3QgYXJnMV9fMDAyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLkZpbmFsbHlcIjsgcmVzMF9fMDAzXzsgcmVzMV9fMDA0XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBSZXJhaXNlZCBvZiBzdHJpbmcgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUmVyYWlzZWRdIChmdW5jdGlvblxuICAgIHwgUmVyYWlzZWQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDA3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwNV9cbiAgICAgIGFuZCByZXMxX18wMDhfID0gc2V4cF9vZl90IGFyZzFfXzAwNl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5SZXJhaXNlZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50XG5cbigqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2U6XG5cbiAgIHtbXG4gICAgIGV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cbiAgICAgKCogLi4uICopXG4gICAgIFtAQEBlbmRdXG4gICBdfVxuXG4gICB0byBlbGltaW5hdGUgdGhlIGV4dHJhIHdyYXBwaW5nIG9mIFsoU2V4cCAuLi4pXS4gKilcbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXhwXSAoZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gU2V4cCBzZXhwXG5cbmxldCByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSB0IGJhY2t0cmFjZSA9XG4gIENhbWwuUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgdCBiYWNrdHJhY2Vcbjs7XG5cbmV4dGVybmFsIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgOiB0IC0+IGJvb2wgPSBcIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuXCJcblxubGV0IHJlcmFpc2UgZXhuIHN0ciA9XG4gIGxldCBleG4nID0gUmVyYWlzZWQgKHN0ciwgZXhuKSBpblxuICBpZiBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4blxuICB0aGVuIChcbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuJyBidClcbiAgZWxzZSByYWlzZSBleG4nXG47O1xuXG5sZXQgcmVyYWlzZWYgZXhjIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0ciAoKSAtPiByZXJhaXNlIGV4YyBzdHIpIGZvcm1hdFxubGV0IHRvX3N0cmluZyBleGMgPSBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIChzZXhwX29mX2V4biBleGMpXG5sZXQgdG9fc3RyaW5nX21hY2ggZXhjID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfZXhuXG5cbmxldCBwcm90ZWN0eCB+ZiB4IH4oZmluYWxseSA6IF8gLT4gdW5pdCkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHJlcyAtPlxuICAgIGZpbmFsbHkgeDtcbiAgICByZXNcbiAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgbGV0IGJ0ID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIChtYXRjaCBmaW5hbGx5IHggd2l0aFxuICAgICB8ICgpIC0+IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBidFxuICAgICB8IGV4Y2VwdGlvbiBmaW5hbF9leG4gLT5cbiAgICAgICAoKiBVbmZvcnR1bmF0ZWx5LCB0aGUgYmFja3RyYWNlIG9mIHRoZSBbZmluYWxfZXhuXSBpcyBkaXNjYXJkZWQgaGVyZS4gKilcbiAgICAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRmluYWxseSAoZXhuLCBmaW5hbF9leG4pKSBidClcbjs7XG5cbmxldCBwcm90ZWN0IH5mIH5maW5hbGx5ID0gcHJvdGVjdHggfmYgKCkgfmZpbmFsbHlcblxubGV0IGRvZXNfcmFpc2UgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgdHJ5XG4gICAgaWdub3JlIChmICgpIDogYSk7XG4gICAgZmFsc2VcbiAgd2l0aFxuICB8IF8gLT4gdHJ1ZVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSB0ID0gZXhuXG5cbiAgICBsZXQgcHAgcHBmIHQgPVxuICAgICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IHQgd2l0aFxuICAgICAgfCBTb21lIHNleHAgLT4gU2V4cC5wcF9odW0gcHBmIHNleHBcbiAgICAgIHwgTm9uZSAtPiBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChDYW1sLlByaW50ZXhjLnRvX3N0cmluZyB0KVxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXhuXCJcbiAgZW5kKVxuXG5sZXQgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2UgPVxuICBDYW1sLkZvcm1hdC5lcHJpbnRmIFwiQFs8Mj5VbmNhdWdodCBleGNlcHRpb246QFxcbkBcXG5AWyVhQF1AXUBcXG5ALlwiIHBwIGV4YztcbiAgaWYgQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzICgpXG4gIHRoZW4gQ2FtbC5QcmludGV4Yy5wcmludF9yYXdfYmFja3RyYWNlIENhbWwuc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIENhbWwuZmx1c2ggQ2FtbC5zdGRlcnJcbjs7XG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKCkgPVxuICBDYW1sLlByaW50ZXhjLnNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBwcmludF93aXRoX2JhY2t0cmFjZVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hdXggfmRvX2F0X2V4aXQgfmV4aXQgZiA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleGMgLT5cbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAoKiBPbmUgcmVhc29uIHRvIHJ1biBbZG9fYXRfZXhpdF0gaGFuZGxlcnMgYmVmb3JlIHByaW50aW5nIG91dCB0aGUgZXJyb3IgbWVzc2FnZSBpc1xuICAgICAgIHRoYXQgaXQgaGVscHMgY3Vyc2VzIGFwcGxpY2F0aW9ucyBicmluZyB0aGUgdGVybWluYWwgaW4gYSBnb29kIHN0YXRlLCBvdGhlcndpc2UgdGhlXG4gICAgICAgZXJyb3IgbWVzc2FnZSBtaWdodCBnZXQgY29ycnVwdGVkLiAgQWxzbywgdGhlIE9DYW1sIHRvcC1sZXZlbCB1bmNhdWdodCBleGNlcHRpb25cbiAgICAgICBoYW5kbGVyIGRvZXMgdGhlIHNhbWUuICopXG4gICAgaWYgZG9fYXRfZXhpdFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IENhbWwuZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICh0cnkgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgQ2FtbC5QcmludGYuZXByaW50ZiBcIkV4bi5oYW5kbGVfdW5jYXVnaHQgY291bGQgbm90IHByaW50OyBleGl0aW5nIGFueXdheVxcbiUhXCJcbiAgICAgICAgd2l0aFxuICAgICAgICB8IF8gLT4gKCkpKTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9IGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdCB+ZG9fYXRfZXhpdDp0cnVlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHQgfmV4aXQ6bXVzdF9leGl0IGYgPVxuICBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQ6KGlmIG11c3RfZXhpdCB0aGVuIGV4aXQgZWxzZSBpZ25vcmUpIH5kb19hdF9leGl0Om11c3RfZXhpdFxuOztcblxubGV0IHJlcmFpc2VfdW5jYXVnaHQgc3RyIGZ1bmMgPVxuICB0cnkgZnVuYyAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgbGV0IGJ0ID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChSZXJhaXNlZCAoc3RyLCBleG4pKSBidFxuOztcblxuZXh0ZXJuYWwgY2xlYXJfYmFja3RyYWNlIDogdW5pdCAtPiB1bml0ID0gXCJCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvc1wiIFtAQG5vYWxsb2NdXG5cbmxldCByYWlzZV93aXRob3V0X2JhY2t0cmFjZSBlID1cbiAgKCogV2UgY2xlYXIgdGhlIGJhY2t0cmFjZSB0byByZWR1Y2UgY29uZnVzaW9uLCBzbyB0aGF0IHBlb3BsZSBkb24ndCB0aGluayB3aGF0ZXZlclxuICAgICBpcyBzdG9yZWQgY29ycmVzcG9uZHMgdG8gdGhpcyByYWlzZS4gKilcbiAgY2xlYXJfYmFja3RyYWNlICgpO1xuICBDYW1sLnJhaXNlX25vdHJhY2UgZVxuOztcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBjbGVhcl9iYWNrdHJhY2UgPSBjbGVhcl9iYWNrdHJhY2VcbmVuZFxuIiwiKCogYmVsb25ncyBpbiBDb21tb24sIGJ1dCBtb3ZlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSByZXR1cm4gPSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmxldCB3aXRoX3JldHVybiAodHlwZSBhKSBmID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgKCogUmFpc2VkIHRvIGluZGljYXRlIH5yZXR1cm4gd2FzIGNhbGxlZC4gIExvY2FsIHNvIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB0aWVkIHRvIGFcbiAgICAgICBwYXJ0aWN1bGFyIGNhbGwgb2YgW3dpdGhfcmV0dXJuXS4gKilcbiAgICBleGNlcHRpb24gUmV0dXJuIG9mIGFcbiAgZW5kXG4gIGluXG4gIGxldCBpc19hbGl2ZSA9IHJlZiB0cnVlIGluXG4gIGxldCByZXR1cm4gYSA9XG4gICAgaWYgbm90ICFpc19hbGl2ZVxuICAgIHRoZW4gZmFpbHdpdGggXCJ1c2Ugb2YgW3JldHVybl0gZnJvbSBhIFt3aXRoX3JldHVybl0gdGhhdCBhbHJlYWR5IHJldHVybmVkXCI7XG4gICAgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIChNLlJldHVybiBhKVxuICBpblxuICB0cnlcbiAgICBsZXQgYSA9IGYgeyByZXR1cm4gfSBpblxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIGFcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIChtYXRjaCBleG4gd2l0aFxuICAgICB8IE0uUmV0dXJuIGEgLT4gYVxuICAgICB8IF8gLT4gcmFpc2UgZXhuKVxuOztcblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiBmID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICBmIHsgcmV0dXJuID0gKGZ1biBhIC0+IHJldHVybi5yZXR1cm4gKFNvbWUgYSkpIH07XG4gICAgTm9uZSlcbjs7XG5cbmxldCBwcmVwZW5kIHsgcmV0dXJuIH0gfmYgPSB7IHJldHVybiA9IChmdW4geCAtPiByZXR1cm4gKGYgeCkpIH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBCYXNpYyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBUaGUgZm9sbG93aW5nIGlkZW50aXRpZXMgb3VnaHQgdG8gaG9sZCAoZm9yIHNvbWUgdmFsdWUgb2YgPSk6XG5cbiAgICAgIC0gW3JldHVybiB4ID4+PSBmID0gZiB4XVxuICAgICAgLSBbdCA+Pj0gZnVuIHggLT4gcmV0dXJuIHggPSB0XVxuICAgICAgLSBbKHQgPj49IGYpID4+PSBnID0gdCA+Pj0gZnVuIHggLT4gKGYgeCA+Pj0gZyldXG5cbiAgICAgIE5vdGU6IFs+Pj1dIGlzIHRoZSBpbmZpeCBub3RhdGlvbiBmb3IgW2JpbmRdKSAqKVxuXG4gICgqKiBUaGUgW21hcF0gYXJndW1lbnQgdG8gW01vbmFkLk1ha2VdIHNheXMgaG93IHRvIGltcGxlbWVudCB0aGUgbW9uYWQncyBbbWFwXSBmdW5jdGlvbi5cbiAgICAgIFtgRGVmaW5lX3VzaW5nX2JpbmRdIG1lYW5zIHRvIGRlZmluZSBbbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSldLlxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuXG5cbiAgICAgIFNvbWUgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtNb25hZC5NYWtlXSBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbbWFwXSwgc29cbiAgICAgIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbWFwXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4ID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBbdCA+Pj0gZl0gcmV0dXJucyBhIGNvbXB1dGF0aW9uIHRoYXQgc2VxdWVuY2VzIHRoZSBjb21wdXRhdGlvbnMgcmVwcmVzZW50ZWQgYnkgdHdvXG4gICAgICBtb25hZCBlbGVtZW50cy4gIFRoZSByZXN1bHRpbmcgY29tcHV0YXRpb24gZmlyc3QgZG9lcyBbdF0gdG8geWllbGQgYSB2YWx1ZSBbdl0sIGFuZFxuICAgICAgdGhlbiBydW5zIHRoZSBjb21wdXRhdGlvbiByZXR1cm5lZCBieSBbZiB2XS4gKilcbiAgdmFsICggPj49ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCoqIFt0ID4+fCBmXSBpcyBbdCA+Pj0gKGZ1biBhIC0+IHJldHVybiAoZiBhKSldLiAqKVxuICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4ID0gc2lnXG4gICgqKiBPcGVuaW5nIGEgbW9kdWxlIG9mIHRoaXMgdHlwZSBhbGxvd3Mgb25lIHRvIHVzZSB0aGUgWyViaW5kXSBhbmQgWyVtYXBdIHN5bnRheFxuICAgICAgZXh0ZW5zaW9ucyBkZWZpbmVkIGJ5IHBweF9sZXQsIGFuZCBicmluZ3MgW3JldHVybl0gaW50byBzY29wZS4gKilcblxuICB0eXBlICdhIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICgqKiBUaGVzZSBhcmUgY29udmVuaWVudCB0byBoYXZlIGluIHNjb3BlIHdoZW4gcHJvZ3JhbW1pbmcgd2l0aCBhIG1vbmFkOiAqKVxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIGluY2x1ZGUgSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgIHZhbCBib3RoIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICgqKiBbYmluZCB0IH5mXSA9IFt0ID4+PSBmXSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICgqKiBbcmV0dXJuIHZdIHJldHVybnMgdGhlICh0cml2aWFsKSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgdi4gKilcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogW21hcCB0IH5mXSBpcyB0ID4+fCBmLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuXG4gICgqKiBbam9pbiB0XSBpcyBbdCA+Pj0gKGZ1biB0JyAtPiB0JyldLiAqKVxuICB2YWwgam9pbiA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFtpZ25vcmVfbSB0XSBpcyBbbWFwIHQgfmY6KGZ1biBfIC0+ICgpKV0uICBbaWdub3JlX21dIHVzZWQgdG8gYmUgY2FsbGVkIFtpZ25vcmVdLFxuICAgICAgYnV0IHdlIGRlY2lkZWQgdGhhdCB3YXMgYSBiYWQgbmFtZSwgYmVjYXVzZSBpdCBzaGFkb3dlZCB0aGUgd2lkZWx5IHVzZWRcbiAgICAgIFtDYW1sLmlnbm9yZV0uICBTb21lIG1vbmFkcyBzdGlsbCBkbyBbbGV0IGlnbm9yZSA9IGlnbm9yZV9tXSBmb3IgaGlzdG9yaWNhbFxuICAgICAgcmVhc29ucy4gKilcbiAgdmFsIGlnbm9yZV9tIDogJ2EgdCAtPiB1bml0IHRcblxuICB2YWwgYWxsIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gICgqKiBMaWtlIFthbGxdLCBidXQgZW5zdXJlcyB0aGF0IGV2ZXJ5IG1vbmFkaWMgdmFsdWUgaW4gdGhlIGxpc3QgcHJvZHVjZXMgYSB1bml0IHZhbHVlLFxuICAgICAgYWxsIG9mIHdoaWNoIGFyZSBkaXNjYXJkZWQgcmF0aGVyIHRoYW4gYmVpbmcgY29sbGVjdGVkIGludG8gYSBsaXN0LiAqKVxuICB2YWwgYWxsX3VuaXQgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzIgPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2V0cyB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlIGNvbXB1dGF0aW9uLlxuICAgICAgVGhpcyBpcyB1c2VkIHRvIGVuY29kZSBtb25hZHMgd29ya2luZyBvbiBhIG11bHRpIHBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBsaWtlXG4gICAgICAoWygnYSwnYikgcmVzdWx0XSkuICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIG1hcCA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0IF1cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MiA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDIgPSBzaWdcbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2UpIHQgLT4gKCdiLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2UpIHQsICdlKSB0IC0+ICgnYSwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdlKSB0IC0+ICh1bml0LCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzMgPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBnZXQgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZVxuICAgICAgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MyA9IHNpZ1xuICAoKiogU2FtZSBhcyBJbmZpeCwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIGFyZVxuICAgICAgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXgzID0gc2lnXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYiwgJ2QsICdlKSB0IC0+ICgnYSAqICdiLCAnZCwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZFxuICAgICAgYW5kIHRoaXJkIGFyZSBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIGluY2x1ZGUgU3ludGF4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdkLCAnZSkgdCwgJ2QsICdlKSB0IC0+ICgnYSwgJ2QsICdlKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnZCwgJ2UpIHQgLT4gKHVuaXQsICdkLCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZCwgJ2UpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IHNpZ1xuICAoKiogSW5kZXhlZCBtb25hZCwgaW4gdGhlIHN0eWxlIG9mIEF0a2V5LiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGFyZSBjb21wb3NlZFxuICAgICAgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gVG8gc2VlIHRoaXMgbW9yZSBjbGVhcmx5LCB5b3UgY2FuIGxvb2sgYXQgdGhlIHR5cGUgb2YgYmluZDpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIF19XG5cbiAgICAgIGFuZCBpc29sYXRlIHNvbWUgb2YgdGhlIHR5cGUgdmFyaWFibGVzIHRvIHNlZSB0aGVpciBpbmRpdmlkdWFsIGJlaGF2aW9yczpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAnYSAgICAgICAgICAgICAtPiBmOignYSAtPiAgJ2IgICAgICAgICAgICkgLT4gICdiXG4gICAgICAgIHZhbCBiaW5kIDogICAgICAnaSwgJ2ogICAgLT4gICAgICAgICAgICAgICAnaiwgJ2sgICAgIC0+ICAgICAnaSwgJ2tcbiAgICAgIF19XG5cbiAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEF0a2V5LXN0eWxlIGluZGV4ZWQgbW9uYWRzLCBzZWU6XG5cbiAgICAgIHt2XG4gICAgICAgIFBhcmFtZXRlcmlzZWQgTm90aW9ucyBvZiBDb21wdXRhdGlvblxuICAgICAgICBSb2JlcnQgQXRrZXlcbiAgICAgICAgaHR0cDovL2JlbnRuaWIub3JnL3BhcmFtbm90aW9ucy1qZnAucGRmXG4gICAgICB2fSAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBzaWdcbiAgKCoqIFNhbWUgYXMgeyFJbmZpeH0sIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcblxuICAgIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYiwgJ2osICdrKSB0IC0+ICgnYSAqICdiLCAnaSwgJ2spIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2luZGV4ZWQgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBpbmNsdWRlIFN5bnRheF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2osICdrKSB0LCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2spIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdpLCAnaikgdCAtPiAodW5pdCwgJ2ksICdqKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdpLCAnaSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnaSwgJ2kpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdpLCAnaSkgdCBsaXN0IC0+ICh1bml0LCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgU190b19TX2luZGV4ZWQgKFggOiBTKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChYIDogUzIpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFNfaW5kZXhlZF90b19TMiAoWCA6IFNfaW5kZXhlZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnQgPVxuc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNb25hZCA9IHNpZ1xuICAoKiogQSBtb25hZCBpcyBhbiBhYnN0cmFjdGlvbiBvZiB0aGUgY29uY2VwdCBvZiBzZXF1ZW5jaW5nIG9mIGNvbXB1dGF0aW9ucy4gIEEgdmFsdWUgb2ZcbiAgICAgIHR5cGUgWydhIG1vbmFkXSByZXByZXNlbnRzIGEgY29tcHV0YXRpb24gdGhhdCByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSBbJ2FdLiAqKVxuXG4gIG1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNcbiAgbW9kdWxlIHR5cGUgQmFzaWMyID0gQmFzaWMyXG4gIG1vZHVsZSB0eXBlIEJhc2ljMyA9IEJhc2ljM1xuICBtb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gQmFzaWNfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4XG4gIG1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4MlxuICBtb2R1bGUgdHlwZSBJbmZpeDMgPSBJbmZpeDNcbiAgbW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IEluZml4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU3ludGF4ID0gU3ludGF4XG4gIG1vZHVsZSB0eXBlIFN5bnRheDIgPSBTeW50YXgyXG4gIG1vZHVsZSB0eXBlIFN5bnRheDMgPSBTeW50YXgzXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gU3ludGF4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IFNfd2l0aG91dF9zeW50YXhcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICBtb2R1bGUgdHlwZSBTMyA9IFMzXG4gIG1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IFNfaW5kZXhlZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnRcbiAgbW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudFxuICBtb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9pbmRleGVkIChYIDogQmFzaWNfaW5kZXhlZCkgOlxuICAgIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gICgqKiBEZWZpbmUgYSBtb25hZCB0aHJvdWdoIGFuIGlzb21vcnBoaXNtIHdpdGggYW4gZXhpc3RpbmcgbW9uYWQuIEZvciBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlICdhIHQgPSB7IHZhbHVlIDogJ2EgfVxuXG4gICAgICAgIGluY2x1ZGUgTW9uYWQuT2ZfbW9uYWQgKE1vbmFkLklkZW50KSAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgICAgICBsZXQgdG9fbW9uYWQgeyB2YWx1ZSB9ID0gdmFsdWVcbiAgICAgICAgICAgIGxldCBvZl9tb25hZCB2YWx1ZSA9IHsgdmFsdWUgfVxuICAgICAgICAgIGVuZClcbiAgICAgIF19ICopXG4gIG1vZHVsZSBPZl9tb25hZFxuICAgICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDJcbiAgICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQzXG4gICAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udFxuXG4gIG1vZHVsZSBJZGVudCA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgTW9uYWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBCYXNpY19nZW5lcmFsID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kXG4gICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuZXJhbCAoTSA6IEJhc2ljX2dlbmVyYWwpID0gc3RydWN0XG4gIGxldCBiaW5kID0gTS5iaW5kXG4gIGxldCByZXR1cm4gPSBNLnJldHVyblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSlcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIGEgYiA9IGEgPj49IGZ1biBhIC0+IGIgPj58IGZ1biBiIC0+IGEsIGJcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgam9pbiB0ID0gdCA+Pj0gZnVuIHQnIC0+IHQnXG4gIGxldCBpZ25vcmVfbSB0ID0gbWFwIHQgfmY6KGZ1biBfIC0+ICgpKVxuXG4gIGxldCBhbGwgPVxuICAgIGxldCByZWMgbG9vcCB2cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgdnMpXG4gICAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuIHYgLT4gbG9vcCAodiA6OiB2cykgdHNcbiAgICBpblxuICAgIGZ1biB0cyAtPiBsb29wIFtdIHRzXG4gIDs7XG5cbiAgbGV0IHJlYyBhbGxfdW5pdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuICgpIC0+IGFsbF91bml0IHRzXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaW5kZXhlZCAoTSA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTMgKE0gOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBNLnQgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMiAoTSA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA6PSAoJ2EsICdkKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKE0gOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfZ2VuZXJhbCAoTW9uYWQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBiaW5kXG4gICAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2osICdkLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuIGEgPSBNLm9mX21vbmFkIChNb25hZC5yZXR1cm4gYSlcbiAgICBsZXQgYmluZCB0IH5mID0gTS5vZl9tb25hZCAoTW9uYWQuYmluZCAoTS50b19tb25hZCB0KSB+ZjooZnVuIGEgLT4gTS50b19tb25hZCAoZiBhKSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gKGZ1biB0IH5mIC0+IE0ub2ZfbW9uYWQgKE1vbmFkLm1hcCAoTS50b19tb25hZCB0KSB+ZikpXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkM1xuICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkMlxuICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRcbiAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgYmluZCBhIH5mID0gZiBhXG4gICAgICBsZXQgcmV0dXJuIGEgPSBhXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIGEgfmYgLT4gZiBhKVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFwcGxpY2F0aXZlX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxuKCoqIFRoaXMgbW9kdWxlIHNlcnZlcyBtb3N0bHkgYXMgYSBwYXJ0aWFsIGNoZWNrIHRoYXQgW1MyXSBhbmQgW1NdIGFyZSBpbiBzeW5jLCBidXRcbiAgICBhY3R1YWxseSBjYWxsaW5nIGl0IGlzIG9jY2FzaW9uYWxseSB1c2VmdWwuICopXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2FwcGx5IC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBtYXAyIHRhIHRiIH5mID0gbWFwIH5mIHRhIDwqPiB0YlxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGIgPCo+IHRjXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0ICggKj4gKSB1IHYgPSByZXR1cm4gKGZ1biAoKSB5IC0+IHkpIDwqPiB1IDwqPiB2XG4gIGxldCAoIDwqICkgdSB2ID0gcmV0dXJuIChmdW4geCAoKSAtPiB4KSA8Kj4gdSA8Kj4gdlxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MykgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFhcbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEltcGxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MikgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsICdkLCBfKSB0ID0gKCdhLCAnZCkgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4XG4gICAgKFggOiBGb3JfbGV0X3N5bnRheCkgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgyXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG4oKiogVGhpcyBmdW5jdG9yIGNsb3NlbHkgcmVzZW1ibGVzIFtNYWtlM10sIGFuZCBpbmRlZWQgaXQgY291bGQgYmUgaW1wbGVtZW50ZWRcbiAgICBtdWNoIHNob3J0ZXIgaW4gdGVybXMgb2YgW01ha2UzXS4gSG93ZXZlciwgd2UgaW1wbGVtZW50IGl0IGJ5IGhhbmQgc28gdGhhdFxuICAgIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGVmZmljaWVudCwgZS5nLiB1c2luZyBbbWFwMl0gZGlyZWN0bHkgaW5zdGVhZCBvZlxuICAgIGRlZmluaW5nIFthcHBseV0gaW4gdGVybXMgb2YgaXQgYW5kIHRoZW4gW21hcDJdIGluIHRlcm1zIG9mIHRoYXQuIEZvciBtb3N0XG4gICAgYXBwbGljYXRpdmVzIHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgZm9yIHNvbWUgKHN1Y2ggYXMgQm9uc2FpLlZhbHVlLnQpLCBpdCBoYXMgYVxuICAgIGxhcmdlciBpbXBhY3QuICopXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMiAoWCA6IEJhc2ljM191c2luZ19tYXAyKSA6XG4gIFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwMiAobWFwMiB0YSB0YiB+ZikgdGMgfmY6KGZ1biBmYWIgYyAtPiBmYWIgYylcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMiAoWCA6IEJhc2ljMl91c2luZ19tYXAyKSA6XG4gIFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDIgKFggOiBCYXNpY191c2luZ19tYXAyKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID1cbiAgTWFrZTJfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyIChNIDogTW9uYWQuUzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgTS50ID0gTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gICAgbGV0IGFwcGx5IG1mIG14ID0gTS5iaW5kIG1mIH5mOihmdW4gZiAtPiBNLm1hcCBteCB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBNLm1hcFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZCAoTSA6IE1vbmFkLlMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBPZl9tb25hZDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgQ29tcG9zZSAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50IEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEcucmV0dXJuIChGLnJldHVybiBhKVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRy5hcHBseSAoRy5tYXAgfmY6Ri5hcHBseSB0ZikgdHhcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBHLm1hcCB+ZjooRi5tYXAgfmYpIHRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFBhaXIgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRi5yZXR1cm4gYSwgRy5yZXR1cm4gYVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRi5hcHBseSAoZnN0IHRmKSAoZnN0IHR4KSwgRy5hcHBseSAoc25kIHRmKSAoc25kIHR4KVxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEYubWFwIH5mIChmc3QgdCksIEcubWFwIH5mIChzbmQgdClcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcbiIsIigqIFtCeXRlczBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW0NhbWwuQnl0ZXNdLiBbQnl0ZXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3NcbiAgIHRoZSBwYXJ0IG9mIFtDYW1sLkJ5dGVzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBieXRlczAubWwgc2hvdWxkIHVzZSBbQ2FtbC5CeXRlc10uIFtCeXRlczBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmRcbiAgIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQnl0ZXNdIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBCeXRlcyAgPSBCeXRlczBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgQnl0ZXMgPSBCeXRlczBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQnl0ZXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCAgICAgICAgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuXG4gICgqIFt1bnNhZmVfYmxpdF9zdHJpbmddIGlzIG5vdCBleHBvcnRlZCBpbiB0aGUgW3N0ZGxpYl0gc28gd2UgZXhwb3J0IGl0IGhlcmUgKilcbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgOiAgc3JjOnN0cmluZ1xuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OmJ5dGVzXG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5lbmRcblxuaW5jbHVkZSBQcmltaXRpdmVzXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgYmxpdCA9IENhbWwuQnl0ZXMuYmxpdFxubGV0IGJsaXRfc3RyaW5nID0gQ2FtbC5CeXRlcy5ibGl0X3N0cmluZ1xubGV0IGNvbXBhcmUgPSBDYW1sLkJ5dGVzLmNvbXBhcmVcbmxldCBjb3B5ID0gQ2FtbC5CeXRlcy5jb3B5XG5sZXQgY3JlYXRlID0gQ2FtbC5CeXRlcy5jcmVhdGVcbmxldCBmaWxsID0gQ2FtbC5CeXRlcy5maWxsXG5sZXQgbWFrZSA9IENhbWwuQnl0ZXMubWFrZVxubGV0IG1hcCA9IENhbWwuQnl0ZXMubWFwXG5sZXQgbWFwaSA9IENhbWwuQnl0ZXMubWFwaVxubGV0IHN1YiA9IENhbWwuQnl0ZXMuc3ViXG5sZXQgdW5zYWZlX2JsaXQgPSBDYW1sLkJ5dGVzLnVuc2FmZV9ibGl0XG5sZXQgdG9fc3RyaW5nID0gQ2FtbC5CeXRlcy50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBDYW1sLkJ5dGVzLm9mX3N0cmluZ1xubGV0IHVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cyA9IENhbWwuQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5sZXQgdW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211dGF0aW9uID0gQ2FtbC5CeXRlcy51bnNhZmVfb2Zfc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID1cbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gIH1cblxudHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhIHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfZmMgPSBzaWdcbiAgdHlwZSBjb21wYXJhYmxlX3RcblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gY29tcGFyYWJsZV90XG5lbmRcblxubW9kdWxlIE1vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYilcbmVuZFxuXG5sZXQgbWFrZSAodHlwZSB0KSB+Y29tcGFyZSB+c2V4cF9vZl90ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIGNvbXBhcmFibGVfdCA9IHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZCA6IFNfZmNcbiAgICB3aXRoIHR5cGUgY29tcGFyYWJsZV90ID0gdClcbjs7XG5cbm1vZHVsZSBTX3RvX1MxIChTIDogUykgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gUy50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gUy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBvcGVuIFNcblxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAnYSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBpbmNsdWRlIE1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCJfXCJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSBjb21wYXJhdG9yIC0+ICgnYSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZDIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYikgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDIgKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdhLCAnYikgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZF9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXApIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCBfKSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2EsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcF9hIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdmLCAncykgdCA9XG4gIHwgRmlyc3Qgb2YgJ2ZcbiAgfCBTZWNvbmQgb2YgJ3NcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDpcbiAgJ2YgJ3MuICgnZiAtPiAnZiAtPiBpbnQpIC0+ICgncyAtPiAncyAtPiBpbnQpIC0+ICgnZiwgJ3MpIHQgLT4gKCdmLCAncykgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fZiBfY21wX19zIGFfXzAwMV8gYl9fMDAyXyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgIHwgRmlyc3QgX2FfXzAwM18sIEZpcnN0IF9iX18wMDRfIC0+IF9jbXBfX2YgX2FfXzAwM18gX2JfXzAwNF9cbiAgICB8IEZpcnN0IF8sIF8gLT4gLTFcbiAgICB8IF8sIEZpcnN0IF8gLT4gMVxuICAgIHwgU2Vjb25kIF9hX18wMDVfLCBTZWNvbmQgX2JfXzAwNl8gLT4gX2NtcF9fcyBfYV9fMDA1XyBfYl9fMDA2Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgZiBzLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoZiwgcykgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2YgX2hhc2hfZm9sZF9zIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBGaXJzdCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfZiBoc3YgX2EwXG4gIHwgU2Vjb25kIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9zIGhzdiBfYTBcbjs7XG5cbmxldCB0X29mX3NleHAgOlxuICAnZiAncy5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnZikgLT4gKFNleHBsaWIwLlNleHAudCAtPiAncykgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnZiwgJ3MpIHRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDIzXyBzX18wMjRfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gZl9fMDIzXykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBzX18wMjRfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoZl9fMDIzXywgc19fMDI0XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMTFfID0gXCJlaXRoZXIwLm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfZl9fMDA3XyBfb2Zfc19fMDA4XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9mX18wMDdfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgICAgRmlyc3QgcmVzMF9fMDE3X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgX3RhZ19fMDE5XykgOjogc2V4cF9hcmdzX18wMjBfKSBhc1xuICAgICAgICBfc2V4cF9fMDE4XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjBfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMjFfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2Zfc19fMDA4XyBhcmcwX18wMjFfIGluXG4gICAgICAgICAgIFNlY29uZCByZXMwX18wMjJfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxOV9cbiAgICAgICAgICAgICBfc2V4cF9fMDE4XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnZiAncy5cbiAgKCdmIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdmLCAncykgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDMxXyBzX18wMzJfKVxuICAgICAgOiAgKChmX18wMzFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAzMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChmX18wMzFfLCBzX18wMzJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2ZfXzAyNV8gX29mX3NfXzAyNl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgYXJnMF9fMDI3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9mX18wMjVfIGFyZzBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmlyc3RcIjsgcmVzMF9fMDI4XyBdXG4gICAgICB8IFNlY29uZCBhcmcwX18wMjlfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzBfID0gX29mX3NfXzAyNl8gYXJnMF9fMDI5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZWNvbmRcIjsgcmVzMF9fMDMwXyBdXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAnZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAncyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAoJ2YsICdzKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA9XG4gIGZ1biBfJ2Zfc2V4cF9ncmFtbWFyIF8nc19zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkZpcnN0XCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydmX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJTZWNvbmRcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ3Nfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG4iLCIoKiBUaGUgdHlwZSBbdF0gc2hvdWxkIGJlIGFic3RyYWN0IHRvIG1ha2UgdGhlIGZzZXQgYW5kIHNldCBmdW5jdGlvbnMgdW5hdmFpbGFibGVcbiAgIGZvciBwcml2YXRlIHR5cGVzIGF0IHRoZSBsZXZlbCBvZiB0eXBlcyAoYW5kIG5vdCBieSBwdXR0aW5nIE5vbmUgaW4gdGhlIGZpZWxkKS5cbiAgIFVuZm9ydHVuYXRlbHksIG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCBtZWFucyB0aGF0IHdoZW4gY3JlYXRpbmcgZmllbGRzICh0aHJvdWdoXG4gICBhIFtjcmVhdGVdIGZ1bmN0aW9uKSB2YWx1ZSByZXN0cmljdGlvbiBraWNrcyBpbi4gVGhpcyBpcyB3b3JrZWQgYXJvdW5kIGJ5IGluc3RlYWRcbiAgIG5vdCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QsIGJ1dCBmb3JjaW5nIGFueW9uZSBicmVha2luZyB0aGUgYWJzdHJhY3Rpb24gdG8gdXNlXG4gICB0aGUgW0Zvcl9nZW5lcmF0ZWRfY29kZV0gbW9kdWxlLCBtYWtpbmcgaXQgb2J2aW91cyB0byBhbnkgcmVhZGVyIHRoYXQgc29tZXRoaW5nIHVnbHlcbiAgIGlzIGdvaW5nIG9uLlxuICAgdF93aXRoX3Blcm0gKGFuZCBkZXJpdmF0aXZlcykgaXMgdGhlIHR5cGUgdGhhdCB1c2VycyByZWFsbHkgdXNlLiBJdCBpcyBhIGNvbnN0cnVjdG9yXG4gICBiZWNhdXNlOlxuICAgMS4gaXQgbWFrZXMgdHlwZSBlcnJvcnMgbW9yZSByZWFkYWJsZSAobGVzcyBhbGlhc2luZylcbiAgIDIuIHRoZSB0eXBlciBpbiBvY2FtbCA0LjAxIGFsbG93cyB0aGlzOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgICAgIHR5cGUgdCA9IHthIDogaW50fVxuICAgICBlbmRcbiAgICAgdHlwZSB0ID0gQS50XG4gICAgIGxldCBmICh4IDogdCkgPSB4LmFcbiAgIF19XG5cbiAgIChhbHRob3VnaCB3aXRoIFdhcm5pbmcgNDA6IGEgaXMgdXNlZCBvdXQgb2Ygc2NvcGUpXG4gICB3aGljaCBtZWFucyB0aGF0IGlmIFt0X3dpdGhfcGVybV0gd2FzIHJlYWxseSBhbiBhbGlhcyBvbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdLFxuICAgcGVvcGxlIGNvdWxkIHNheSBbdC5zZXR0ZXJdIGFuZCBicmVhayB0aGUgYWJzdHJhY3Rpb24gd2l0aCBubyBpbmRpY2F0aW9uIHRoYXRcbiAgIHNvbWV0aGluZyB1Z2x5IGlzIGdvaW5nIG9uIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgIFRoZSB3YXJuaW5nIGlzIChJIHRoaW5rKSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIG1ha2UgdGhlaXIgY29kZSBjb21wYXRpYmxlIHdpdGhcbiAgIHByZXZpb3VzIHZlcnNpb25zIG9mIG9jYW1sLCBzbyB3ZSBtYXkgdmVyeSB3ZWxsIHR1cm4gaXQgb2ZmLlxuXG4gICBUaGUgdHlwZSB0X3dpdGhfcGVybSBjb3VsZCBhbHNvIGhhdmUgYmVlbiBhIFt1bml0IC0+IEZvcl9nZW5lcmF0ZWRfY29kZS50XSB0byB3b3JrXG4gICBhcm91bmQgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHRoZW4gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSB3b3VsZCBoYXZlIGJlZW4gYSBwcm9wZXJcbiAgIGFic3RyYWN0IHR5cGUsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSAoZm9yIGV4YW1wbGUsIGEgZm9sZCBvbiBhXG4gICByZWNvcmQgdHlwZSB3aXRoIDQwIGZpZWxkcyB3b3VsZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgNDAgW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSdzIGF0XG4gICBldmVyeSBzaW5nbGUgZm9sZC4pICopXG5cbm1vZHVsZSBGb3JfZ2VuZXJhdGVkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgeyBmb3JjZV92YXJpYW5jZSA6ICdwZXJtIC0+IHVuaXRcbiAgICA7ICgqIGZvcmNlIFt0XSB0byBiZSBjb250cmF2YXJpYW50IGluIFsncGVybV0sIGJlY2F1c2UgcGhhbnRvbSB0eXBlIHZhcmlhYmxlcyBvblxuICAgICAgICAgY29uY3JldGUgdHlwZXMgZG9uJ3Qgd29yayB0aGF0IHdlbGwgb3RoZXJ3aXNlICh1c2luZyA6PiBjYW4gcmVtb3ZlIHRoZW0gZWFzaWx5KSAqKVxuICAgICAgbmFtZSA6IHN0cmluZ1xuICAgIDsgc2V0dGVyIDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvblxuICAgIDsgZ2V0dGVyIDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICA7IGZzZXQgOiAncmVjb3JkIC0+ICdmaWVsZCAtPiAncmVjb3JkXG4gICAgfVxuXG4gIGxldCBvcGFxdWVfaWRlbnRpdHkgPSBTeXMwLm9wYXF1ZV9pZGVudGl0eVxuZW5kXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtID1cbiAgfCBGaWVsZCBvZiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgRm9yX2dlbmVyYXRlZF9jb2RlLnRcbltAQHVuYm94ZWRdXG5cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9IChbIGBSZWFkIHwgYFNldF9hbmRfY3JlYXRlIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgcmVhZG9ubHlfdCA9IChbIGBSZWFkIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cblxubGV0IG5hbWUgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLm5hbWVcbmxldCBnZXQgKEZpZWxkIGZpZWxkKSByID0gZmllbGQuZ2V0dGVyIHJcbmxldCBmc2V0IChGaWVsZCBmaWVsZCkgciB2ID0gZmllbGQuZnNldCByIHZcbmxldCBzZXR0ZXIgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLnNldHRlclxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ3Jlc3VsdCkgdXNlciA9XG4gIHsgZiA6ICdmaWVsZC4gKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtIC0+ICdyZXN1bHQgfVxuXG5sZXQgbWFwIChGaWVsZCBmaWVsZCkgciB+ZiA9IGZpZWxkLmZzZXQgciAoZiAoZmllbGQuZ2V0dGVyIHIpKVxuXG5sZXQgdXBkYXRlciAoRmllbGQgZmllbGQpID1cbiAgbWF0Y2ggZmllbGQuc2V0dGVyIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHNldHRlciAtPiBTb21lIChmdW4gciB+ZiAtPiBzZXR0ZXIgciAoZiAoZmllbGQuZ2V0dGVyIHIpKSlcbjs7XG4iLCIoKiBbU3RyaW5nMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbQ2FtbC5TdHJpbmddLiBbU3RyaW5nMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbQ2FtbC5TdHJpbmddIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3RyaW5nMC5tbCBzaG91bGRcbiAgIHVzZSBbQ2FtbC5TdHJpbmddLiAgW1N0cmluZzBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2Unc1xuICAgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncywgaW5jbHVkaW5nIHRoZSBzdWJzY3JpcHQgc3ludGF4XG4gICBbeC4oaSldIG9yIFt4LihpKSA8LSBlXSB3aGljaCB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG9cbiAgIFtTdHJpbmddLCBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuU3RyaW5nXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cblxuICAge1tcbiAgICAgbW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgU3RyaW5nID0gU3RyaW5nMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TdHJpbmddLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgICAgICAgIDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmVuZFxuXG5pbmNsdWRlIFN0cmluZ1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0ICggXiApID0gKCBeIClcbmxldCBjYXBpdGFsaXplID0gQ2FtbC5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IGNvbXBhcmUgPSBDYW1sLlN0cmluZy5jb21wYXJlXG5cbmxldCBjb3B5IHggPVxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6XG4gICAgICAoQnl0ZXMub2Zfc3RyaW5nIHgpXG47O1xuXG5sZXQgZXNjYXBlZCA9IENhbWwuU3RyaW5nLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBDYW1sLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbmxldCBtYWtlID0gQ2FtbC5TdHJpbmcubWFrZVxubGV0IHN1YiA9IENhbWwuU3RyaW5nLnN1YlxubGV0IHVuY2FwaXRhbGl6ZSA9IENhbWwuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IHVuc2FmZV9ibGl0ID0gQ2FtbC5TdHJpbmcudW5zYWZlX2JsaXRcbmxldCB1cHBlcmNhc2UgPSBDYW1sLlN0cmluZy51cHBlcmNhc2VfYXNjaWlcblxubGV0IGNvbmNhdCA/KHNlcCA9IFwiXCIpIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIlwiXG4gICgqIFRoZSBzdGRsaWIgZG9lcyBub3Qgc3BlY2lhbGl6ZSB0aGlzIGNhc2UgYmVjYXVzZSBpdCBjb3VsZCBicmVhayBleGlzdGluZyBwcm9qZWN0cy4gKilcbiAgfCBbIHggXSAtPiB4XG4gIHwgbCAtPiBDYW1sLlN0cmluZy5jb25jYXQgfnNlcCBsXG47O1xuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBpdGVyIHQgfmYgPSBDYW1sLlN0cmluZy5pdGVyIHQgfmZcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbWwuTGV4aW5nLnBvc2l0aW9uID1cbiAgICB7IHBvc19mbmFtZSA6IHN0cmluZ1xuICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICA7IHBvc19ib2wgOiBpbnRcbiAgICA7IHBvc19jbnVtIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICAgICB0aGVuIDBcbiAgICAgICBlbHNlIChcbiAgICAgICAgIG1hdGNoIGNvbXBhcmVfc3RyaW5nIGFfXzAwMV8ucG9zX2ZuYW1lIGJfXzAwMl8ucG9zX2ZuYW1lIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfbG51bSBiX18wMDJfLnBvc19sbnVtIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfYm9sIGJfXzAwMl8ucG9zX2JvbCB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfY251bSBiX18wMDJfLnBvc19jbnVtXG4gICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGZ1biBoc3YgYXJnIC0+XG4gICAgICBsZXQgaHN2ID1cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBhcmcucG9zX2ZuYW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2xudW1cbiAgICAgICAgaW5cbiAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19ib2xcbiAgICAgIGluXG4gICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2NudW1cbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuIHsgcG9zX2ZuYW1lID0gcG9zX2ZuYW1lX18wMDRfXG4gICAgICAgICA7IHBvc19sbnVtID0gcG9zX2xudW1fXzAwNl9cbiAgICAgICAgIDsgcG9zX2JvbCA9IHBvc19ib2xfXzAwOF9cbiAgICAgICAgIDsgcG9zX2NudW0gPSBwb3NfY251bV9fMDEwX1xuICAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwM18gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9pbnQgcG9zX2NudW1fXzAxMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2NudW1cIjsgYXJnX18wMTFfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2ZfaW50IHBvc19ib2xfXzAwOF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2JvbFwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgcG9zX2xudW1fXzAwNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2xudW1cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIHBvc19mbmFtZV9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfZm5hbWVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDNfXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyBQcHhfaGVyZS5saWZ0X3Bvc2l0aW9uX2FzX3N0cmluZy4gKilcbmxldCBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2wgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgWyBwb3NfZm5hbWU7IFwiOlwiOyBJbnQudG9fc3RyaW5nIHBvc19sbnVtOyBcIjpcIjsgSW50LnRvX3N0cmluZyAocG9zX2NudW0gLSBwb3NfYm9sKSBdXG47O1xuXG5sZXQgdG9fc3RyaW5nIHsgQ2FtbC5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2wgfSA9XG4gIG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbFxuOztcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaXN0MFxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCAoZiB4IDogXyBFaXRoZXIwLnQpIHdpdGhcbiAgICAgICB8IEZpcnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kXG4gICAgICAgfCBTZWNvbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQ2FtbC5yZXN1bHQgPVxuICB8IE9rIG9mICdhXG4gIHwgRXJyb3Igb2YgJ2JcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2EgJ2IuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2EsICdiKSB0XG4gID1cbiAgZnVuICh0eXBlIGFfXzAxN18gYl9fMDE4XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxN18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGFfXzAxN18sIGJfXzAxOF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwicmVzdWx0Lm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJva1wiIHwgXCJPa1wiKSBhcyBfdGFnX18wMDhfKSA6OiBzZXhwX2FyZ3NfXzAwOV8pIGFzXG4gICAgICAgIF9zZXhwX18wMDdfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAwOV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxMF8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDExXyA9IF9vZl9hX18wMDFfIGFyZzBfXzAxMF8gaW5cbiAgICAgICAgICAgT2sgcmVzMF9fMDExX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMDhfXG4gICAgICAgICAgICAgX3NleHBfXzAwN18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIF90YWdfXzAxM18pIDo6IHNleHBfYXJnc19fMDE0XykgYXNcbiAgICAgICAgX3NleHBfXzAxMl8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE0XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE1XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2JfXzAwMl8gYXJnMF9fMDE1XyBpblxuICAgICAgICAgICBFcnJvciByZXMwX18wMTZfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAxM19cbiAgICAgICAgICAgICBfc2V4cF9fMDEyXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm9rXCIgfCBcIk9rXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAyNV8gYl9fMDI2XylcbiAgICAgIDogICgoYV9fMDI1XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMjZfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDI1XywgYl9fMDI2XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTlfIF9vZl9iX18wMjBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAyMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAyMl8gXVxuICAgICAgfCBFcnJvciBhcmcwX18wMjNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjRfID0gX29mX2JfXzAyMF8gYXJnMF9fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFcnJvclwiOyByZXMwX18wMjRfIF1cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiT2tcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkVycm9yXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDI3XyBiX18wMjhfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMjdfLCBiX18wMjhfIHdpdGhcbiAgICB8IE9rIF9hX18wMjlfLCBPayBfYl9fMDMwXyAtPiBfY21wX19hIF9hX18wMjlfIF9iX18wMzBfXG4gICAgfCBPayBfLCBfIC0+IC0xXG4gICAgfCBfLCBPayBfIC0+IDFcbiAgICB8IEVycm9yIF9hX18wMzFfLCBFcnJvciBfYl9fMDMyXyAtPiBfY21wX19iIF9hX18wMzFfIF9iX18wMzJfKVxuOztcblxubGV0IGVxdWFsIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAzM18gYl9fMDM0XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMzNfIGJfXzAzNF9cbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAzM18sIGJfXzAzNF8gd2l0aFxuICAgIHwgT2sgX2FfXzAzNV8sIE9rIF9iX18wMzZfIC0+IF9jbXBfX2EgX2FfXzAzNV8gX2JfXzAzNl9cbiAgICB8IE9rIF8sIF8gLT4gZmFsc2VcbiAgICB8IF8sIE9rIF8gLT4gZmFsc2VcbiAgICB8IEVycm9yIF9hX18wMzdfLCBFcnJvciBfYl9fMDM4XyAtPiBfY21wX19iIF9hX18wMzdfIF9iX18wMzhfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBhIGIuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChhLCBiKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBfaGFzaF9mb2xkX2IgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IE9rIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgfCBFcnJvciBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG47O1xuXG5bQEBAZW5kXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBmIHhcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IE9rIChmIHgpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCByZXR1cm4geCA9IE9rIHhcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGNoZWNrX29rIGNoZWNrX2Vycm9yIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBvayAtPiBjaGVja19vayBva1xuICB8IEVycm9yIGVycm9yIC0+IGNoZWNrX2Vycm9yIGVycm9yXG47O1xuXG5sZXQgZmFpbCB4ID0gRXJyb3IgeFxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxuXG5sZXQgbWFwX2Vycm9yIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBfIGFzIHggLT4geFxuICB8IEVycm9yIHggLT4gRXJyb3IgKGYgeClcbjs7XG5cbm1vZHVsZSBFcnJvciA9IE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT2sgXyBhcyBvayAtPiBva1xuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBfZXJyb3JcbiAgICBsZXQgcmV0dXJuIGUgPSBFcnJvciBlXG4gIGVuZClcblxubGV0IGlzX29rID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gZmFsc2VcbiAgfCBFcnJvciBfIC0+IHRydWVcbjs7XG5cbmxldCBvayA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBTb21lIHhcbiAgfCBFcnJvciBfIC0+IE5vbmVcbjs7XG5cbmxldCBlcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBOb25lXG4gIHwgRXJyb3IgeCAtPiBTb21lIHhcbjs7XG5cbmxldCBvZl9vcHRpb24gb3B0IH5lcnJvciA9XG4gIG1hdGNoIG9wdCB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+IEVycm9yIGVycm9yXG47O1xuXG5sZXQgaXRlciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgeCAtPiBmIHhcbiAgfCBFcnJvciBfIC0+ICgpXG47O1xuXG5sZXQgaXRlcl9lcnJvciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgXyAtPiAoKVxuICB8IEVycm9yIHggLT4gZiB4XG47O1xuXG5sZXQgdG9fZWl0aGVyIDogXyB0IC0+IF8gRWl0aGVyLnQgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gRmlyc3QgeFxuICB8IEVycm9yIHggLT4gU2Vjb25kIHhcbjs7XG5cbmxldCBvZl9laXRoZXIgOiBfIEVpdGhlci50IC0+IF8gdCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBPayB4XG4gIHwgU2Vjb25kIHggLT4gRXJyb3IgeFxuOztcblxubGV0IG9rX2lmX3RydWUgYm9vbCB+ZXJyb3IgPSBpZiBib29sIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvclxuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbmxldCBva19vcl9mYWlsd2l0aCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3Igc3RyIC0+IGZhaWx3aXRoIHN0clxuOztcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnb2ssICdlcnIpIF9yZXN1bHQgPSAoJ29rLCAnZXJyKSB0ID1cbiAgICB8IE9rIG9mICdva1xuICAgIHwgRXJyb3Igb2YgJ2VyclxuXG4gIGxldCBpc19lcnJvciA9IGlzX2Vycm9yXG4gIGxldCBpc19vayA9IGlzX29rXG5lbmRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IE9rIF8sIEVycm9yIGUgfCBFcnJvciBlLCBPayBfIC0+IEVycm9yIGVcbiAgfCBPayBvazEsIE9rIG9rMiAtPiBPayAob2sgb2sxIG9rMilcbiAgfCBFcnJvciBlcnIxLCBFcnJvciBlcnIyIC0+IEVycm9yIChlcnIgZXJyMSBlcnIyKVxuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPVxuICBsZXQgb2ssIGVycnMgPSBMaXN0MS5wYXJ0aXRpb25fbWFwIGwgfmY6dG9fZWl0aGVyIGluXG4gIG1hdGNoIGVycnMgd2l0aFxuICB8IFtdIC0+IE9rIG9rXG4gIHwgXyA6OiBfIC0+IEVycm9yIGVycnNcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBtYXAgKGNvbWJpbmVfZXJyb3JzIGwpIH5mOihmdW4gKF8gOiB1bml0IGxpc3QpIC0+ICgpKVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmcgZm9yIGV4cG9ydCBvbmx5ICopXG5sZXQgb2tfZnN0ID0gdG9fZWl0aGVyXG4iLCIoKiogUHJvdmlkZXMgZ2VuZXJpYyBzaWduYXR1cmVzIGZvciBjb250YWluZXIgZGF0YSBzdHJ1Y3R1cmVzLlxuXG4gICAgVGhlc2Ugc2lnbmF0dXJlcyBpbmNsdWRlIGZ1bmN0aW9ucyAoW2l0ZXJdLCBbZm9sZF0sIFtleGlzdHNdLCBbZm9yX2FsbF0sIC4uLikgdGhhdFxuICAgIHlvdSB3b3VsZCBleHBlY3QgdG8gZmluZCBpbiBhbnkgY29udGFpbmVyLiBVc2VkIGJ5IGluY2x1ZGluZyBbQ29udGFpbmVyLlMwXSBvclxuICAgIFtDb250YWluZXIuUzFdIGluIHRoZSBzaWduYXR1cmUgZm9yIGV2ZXJ5IGNvbnRhaW5lci1saWtlIGRhdGEgc3RydWN0dXJlIChbQXJyYXldLFxuICAgIFtMaXN0XSwgW1N0cmluZ10sIC4uLikgdG8gZW5zdXJlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqKiBbQ29udGludWVfb3Jfc3RvcC50XSBpcyB1c2VkIGJ5IHRoZSBbZl0gYXJndW1lbnQgdG8gW2ZvbGRfdW50aWxdIGluIG9yZGVyIHRvXG4gICAgICBpbmRpY2F0ZSB3aGV0aGVyIGZvbGRpbmcgc2hvdWxkIGNvbnRpbnVlLCBvciBzdG9wIGVhcmx5LlxuXG4gICAgICBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3BcbiAgKilcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgfCBDb250aW51ZSBvZiAnYVxuICAgICAgfCBTdG9wIG9mICdiXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLlN1bW1hYmxlICopXG5tb2R1bGUgdHlwZSBTdW1tYWJsZSA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiogVGhlIHJlc3VsdCBvZiBzdW1taW5nIG5vIHZhbHVlcy4gKilcbiAgdmFsIHplcm8gOiB0XG5cbiAgKCoqIEFuIG9wZXJhdGlvbiB0aGF0IGNvbWJpbmVzIHR3byBbdF0ncyBhbmQgaGFuZGxlcyBbemVybyArIHhdIGJ5IGp1c3QgcmV0dXJuaW5nIFt4XSxcbiAgICAgIGFzIHdlbGwgYXMgaW4gdGhlIHN5bW1ldHJpYyBjYXNlLiAqKVxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lciAtIGEgY29udGFpbmVyIGZvciBhIHNwZWNpZmljIGVsZW1lbnQgdHlwZSwgZS5nLixcbiAgICBzdHJpbmcsIHdoaWNoIGlzIGEgY29udGFpbmVyIG9mIGNoYXJhY3RlcnMgKFt0eXBlIGVsdCA9IGNoYXJdKSBhbmQgbmV2ZXIgb2YgYW55dGhpbmdcbiAgICBlbHNlLiAqKVxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgZWx0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gICgqKiBbaXRlcl0gbXVzdCBhbGxvdyBleGNlcHRpb25zIHJhaXNlZCBpbiBbZl0gdG8gZXNjYXBlLCB0ZXJtaW5hdGluZyB0aGUgaXRlcmF0aW9uXG4gICAgICBjbGVhbmx5LiAgVGhlIHNhbWUgaG9sZHMgZm9yIGFsbCBmdW5jdGlvbnMgYmVsb3cgdGFraW5nIGFuIFtmXS4gKilcbiAgdmFsIGl0ZXIgOiB0IC0+IGY6KGVsdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiB0IC0+IGY6KGVsdCAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogdCAtPiBmOihlbHQgLT4gJ2Egb3B0aW9uKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcC4gbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lXG4gICAgICBjb21wbGV4aXR5IGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6IHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF9waGFudG9tID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogXyB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiBfIHQgLT4gZjooZWx0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogXyB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBfIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IF8gdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuIFRoZSBvcmRlciBpbiB3aGljaCB0aGVcbiAgICAgIGVsZW1lbnRzIHdpbGwgYmUgc3VtbWVkIGlzIHVuc3BlY2lmaWVkLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IF8gdCAtPiBmOihlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogXyB0IC0+IGY6KGVsdCAtPiAnYSBvcHRpb24pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogXyB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IF8gdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAgSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgIGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuICopXG4gIHZhbCBtaW5fZWx0IDogXyB0IC0+IGNvbXBhcmU6KGVsdCAtPiBlbHQgLT4gaW50KSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiBfIHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBwb2x5bW9ycGhpYyBjb250YWluZXIsIGUuZy4sIFsnYSBsaXN0XSBvciBbJ2EgYXJyYXldLiAqKVxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0gICopXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gJ2EgdCAtPiBmOignYSAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW5pbXVtIChyZXNwIG1heGltdW0pIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWRcbiAgICAgIFtjb21wYXJlXSBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3RcbiAgICAgIGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uXG4gICAgICB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eSBhcyBbZm9sZF0uICopXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b21faW52YXJpYW50ID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+ICgnYSwgXykgdCAtPiBmOignYSAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eVxuICAgICAgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMV9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCArJ3BoYW50b20pIHRcblxuICBpbmNsdWRlIFMxX3BoYW50b21faW52YXJpYW50IHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IF8gdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+ICdhIHQgLT4gZjooJ2EgZWx0IC0+ICdzdW0pIC0+ICdzdW1cbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGVsdCBhcnJheVxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpY19waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSBlbHQgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFRoZSBbaXRlcl0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtpdGVyXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZSBbaXRlcl1cbiAgICAgIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgaXRlciB0IH5mID0gQ29udGFpbmVyLml0ZXIgfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbaXRlcl0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbaXRlcl0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3lcbiAgICAgIGFzIHdlbGwuICopXG4gIHZhbCBpdGVyIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gZjooJ2EgZWx0IC0+IHVuaXQpIC0+IHVuaXQgXVxuXG4gICgqKiBUaGUgW2xlbmd0aF0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtsZW5ndGhdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lXG4gICAgICBbbGVuZ3RoXSB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGxlbmd0aCB0IH5mID0gQ29udGFpbmVyLmxlbmd0aCB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtsZW5ndGhdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2xlbmd0aF0gd2lsbCBpbXByb3ZlIHRoZWlyXG4gICAgICBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBsZW5ndGggOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBpbnQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgTW9uYWQuSWRlbnQudFxuXG5tb2R1bGUgdHlwZSBNYWtlMF9hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICdhIHQgOj0gdCBhbmQgdHlwZSAnYSBlbHQgOj0gRWx0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb250YWluZXIgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cG9ydFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IFMwXG4gIG1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBTMF9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgPSBTMV9waGFudG9tX2ludmFyaWFudFxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tID0gUzFfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBHZW5lcmljID0gR2VuZXJpY1xuICBtb2R1bGUgdHlwZSBHZW5lcmljX3BoYW50b20gPSBHZW5lcmljX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgU3VtbWFibGUgPSBTdW1tYWJsZVxuXG4gICgqKiBHZW5lcmljIGRlZmluaXRpb25zIG9mIGNvbnRhaW5lciBvcGVyYXRpb25zIGluIHRlcm1zIG9mIFtmb2xkXS5cblxuICAgICAgRS5nLjogW2l0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKV0uICopXG5cbiAgdHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPSAndCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cbiAgdHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB0eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG4gIHZhbCBpdGVyIDogZm9sZDooJ3QsICdhLCB1bml0KSBmb2xkIC0+ICgndCwgJ2EpIGl0ZXJcbiAgdmFsIGNvdW50IDogZm9sZDooJ3QsICdhLCBpbnQpIGZvbGQgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIG1pbl9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbGVuZ3RoIDogZm9sZDooJ3QsIF8sIGludCkgZm9sZCAtPiAndCAtPiBpbnRcbiAgdmFsIHRvX2xpc3QgOiBmb2xkOigndCwgJ2EsICdhIGxpc3QpIGZvbGQgLT4gJ3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBzdW1cbiAgICA6ICBmb2xkOigndCwgJ2EsICdzdW0pIGZvbGRcbiAgICAtPiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAndFxuICAgIC0+IGY6KCdhIC0+ICdzdW0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2IpIGZvbGRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gJ3RcbiAgICAtPiAoJ2IsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYikgZm9sZFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICd0XG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2l0ZXJdIGFuZCBbbGVuZ3RoXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGJvb2xcblxuICB2YWwgZXhpc3RzIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmluZCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19hcnJheSA6IGxlbmd0aDondCBsZW5ndGggLT4gaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFRoZSBpZGlvbSBmb3IgdXNpbmcgW0NvbnRhaW5lci5NYWtlXSBpcyB0byBiaW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGFuZCB0b1xuICAgICAgZXhwbGljaXRseSBpbXBvcnQgZWFjaCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgb25lIHdhbnRzOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgICAgbGV0IGNvdW50ICAgID0gQy5jb3VudFxuICAgICAgICBsZXQgZXhpc3RzICAgPSBDLmV4aXN0c1xuICAgICAgICBsZXQgZmluZCAgICAgPSBDLmZpbmRcbiAgICAgICAgKCogLi4uICopXG4gICAgICBdfVxuXG4gICAgICBUaGlzIGlzIHByZWZlcmFibGUgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIGluY2x1ZGUgQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgXX1cblxuICAgICAgYmVjYXVzZSB0aGUgW2luY2x1ZGVdIG1ha2VzIGl0IHRvbyBlYXN5IHRvIHNoYWRvdyBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgIGNvbnRhaW5lciBmdW5jdGlvbnMgKFtsZW5ndGhdIGJlaW5nIGEgY29tbW9uIG9uZSkuXG5cbiAgICAgIFtDb250YWluZXIuTWFrZTBdIGlzIGxpa2UgW0NvbnRhaW5lci5NYWtlXSwgYnV0IGZvciBtb25vbW9ycGhpYyBjb250YWluZXJzIGxpa2VcbiAgICAgIFtzdHJpbmddLiAqKVxuICBtb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgOiBTMCB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgICBHZW5lcmljIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgQ29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPSAndCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cbnR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbnR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbmxldCBpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSlcbmxldCBjb3VudCB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIGEgLT4gaWYgZiBhIHRoZW4gbiArIDEgZWxzZSBuKVxuXG5sZXQgc3VtICh0eXBlIGEpIH5mb2xkIChtb2R1bGUgTSA6IFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDpNLnplcm8gfmY6KGZ1biBuIGEgLT4gTS4oICsgKSBuIChmIGEpKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBSZXN1bHQuT2tcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IFJlc3VsdC5PayB4IC0+IHhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IHJldHVybiBlKSkpXG47O1xuXG5sZXQgZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBmaW5pc2hcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IENvbnRpbnVlX29yX3N0b3AuQ29udGludWUgeCAtPiB4XG4gICAgICAgICB8IFN0b3AgeCAtPiByZXR1cm4geCkpKVxuOztcblxubGV0IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1pbiAtPiBpZiBjb21wYXJlIG1pbiBlbHQgPiAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpXG47O1xuXG5sZXQgbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWF4IC0+IGlmIGNvbXBhcmUgbWF4IGVsdCA8IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYylcbjs7XG5cbmxldCBsZW5ndGggfmZvbGQgYyA9IGZvbGQgYyB+aW5pdDowIH5mOihmdW4gYWNjIF8gLT4gYWNjICsgMSlcblxubGV0IGlzX2VtcHR5IH5pdGVyIGMgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biBfIC0+IHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGV4aXN0cyB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBmb3JfYWxsIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIG5vdCAoZiB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGZpbmRfbWFwIH5pdGVyIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmQgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gKFNvbWUgeCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgdG9fbGlzdCB+Zm9sZCBjID0gTGlzdC5yZXYgKGZvbGQgYyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IC0+IHggOjogYWNjKSlcblxubGV0IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgYyA9XG4gIGxldCBhcnJheSA9IHJlZiBbfHxdIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgaXRlciBjIH5mOihmdW4geCAtPlxuICAgIGlmICFpID0gMCB0aGVuIGFycmF5IDo9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggYykgeDtcbiAgICAhYXJyYXkuKCFpKSA8LSB4O1xuICAgIGluY3IgaSk7XG4gICFhcnJheVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6IHNpZ1xuICBpbmNsdWRlIEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZm9sZCA9IFQuZm9sZFxuXG4gIGxldCBpdGVyID1cbiAgICBtYXRjaCBULml0ZXIgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyIC0+IGl0ZXJcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgbGVuZ3RoID1cbiAgICBtYXRjaCBULmxlbmd0aCB3aXRoXG4gICAgfCBgQ3VzdG9tIGxlbmd0aCAtPiBsZW5ndGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCAtPiBsZW5ndGggfmZvbGQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gaXNfZW1wdHkgfml0ZXIgdFxuICBsZXQgc3VtIG0gdCA9IHN1bSB+Zm9sZCBtIHRcbiAgbGV0IGNvdW50IHQgfmYgPSBjb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0cyB+aXRlciB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcCB+aXRlciB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kIH5pdGVyIHQgfmZcbiAgbGV0IHRvX2xpc3QgdCA9IHRvX2xpc3QgfmZvbGQgdFxuICBsZXQgdG9fYXJyYXkgdCA9IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgdFxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBmb2xkX3Jlc3VsdCB0IH5mb2xkIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IGZvbGRfdW50aWwgdCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSlcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCBlbHQgPSBleGlzdHMgdCB+ZjooVC5FbHQuZXF1YWwgZWx0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ2FtbC5MYXp5XG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGF6eV90X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xhenlfdFxuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsYXp5X3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9IGxhenkgKGYgKGZvcmNlIHQpKVxuXG5sZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gMCBlbHNlIGNvbXBhcmVfYSAoZm9yY2UgdDEpIChmb3JjZSB0Milcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID0gaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIHRydWUgZWxzZSBlcXVhbF9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxubGV0IGhhc2hfZm9sZF90ID0gSGFzaC5CdWlsdGluLmhhc2hfZm9sZF9sYXp5X3RcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiB4ID0gZnJvbV92YWwgeFxuICAgIGxldCBiaW5kIHQgfmYgPSBsYXp5IChmb3JjZSAoZiAoZm9yY2UgdCkpKVxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgVF91bmZvcmNpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBpc192YWwgdCB0aGVuIHNleHBfb2ZfYSAoZm9yY2UgdCkgZWxzZSBzZXhwX29mX3N0cmluZyBcIjx1bmZvcmNlZCBsYXp5PlwiXG4gIDs7XG5lbmRcbiIsIigqIFNwbGl0IG9mZiB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5IHdpdGggW09yX2Vycm9yXS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbmxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIHBvc2l0aW9uOiAlZFwiIHBvcyAoKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIGxlbmd0aDogJWRcIiBsZW4gKCk7XG4gICgqIFdlIHVzZSBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gdG90YWxfbGVuZ3RoXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA+IHRvdGFsX2xlbmd0aCAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnZiBcInBvcyArIGxlbiBwYXN0IGVuZDogJWQgKyAlZCA+ICVkXCIgcG9zIGxlbiB0b3RhbF9sZW5ndGggKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICAoKiBUaGlzIGlzIGJldHRlciB0aGFuIFtzbG93X2NoZWNrX3Bvc19sZW5fZXhuXSBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgICAgLSBtdWNoIGxlc3MgaW5saW5lZCBjb2RlXG4gICAgIC0gb25seSBvbmUgY29uZGl0aW9uYWwganVtcFxuXG4gICAgIFRoZSByZWFzb24gaXQgd29ya3MgaXMgdGhhdCBjaGVja2luZyBbPCAwXSBpcyB0ZXN0aW5nIHRoZSBoaWdoZXN0IG9yZGVyIGJpdCwgc29cbiAgICAgW2EgPCAwIHx8IGIgPCAwXSBpcyB0aGUgc2FtZSBhcyBbYSBsb3IgYiA8IDBdLlxuXG4gICAgIFtwb3MgKyBsZW5dIGNhbiBvdmVyZmxvdywgc28gW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gaXMgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAgW3RvdGFsX2xlbmd0aCAtIGxlbiAtIHBvcyA8IDBdLCB3ZSBuZWVkIHRvIHRlc3QgZm9yIFtwb3MgKyBsZW5dIG92ZXJmbG93IGFzXG4gICAgIHdlbGwuICopXG4gIGxldCBzdG9wID0gcG9zICsgbGVuIGluXG4gIGlmIHBvcyBsb3IgbGVuIGxvciBzdG9wIGxvciAodG90YWxfbGVuZ3RoIC0gc3RvcCkgPCAwXG4gIHRoZW4gc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aFxuOztcblxubGV0IGdldF9wb3NfbGVuX2V4biA/KHBvcyA9IDApID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGkgLT4gaVxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIHBvcywgbGVuXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biA9IHNsb3dfY2hlY2tfcG9zX2xlbl9leG5cbmVuZFxuIiwiXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICBvcGVuIENhbWwuQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgbGV0IG9mX3N0YXRlIDogQ2FtbC5SYW5kb20uU3RhdGUudCAtPiB0ID0gQ2FtbC5PYmoubWFnaWNcbmVuZFxuXG5sZXQgYXNzaWduIGRzdCBzcmMgPVxuICBsZXQgZHN0ID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBkc3QpIGluXG4gIGxldCBzcmMgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIHNyYykgaW5cbiAgQ2FtbC5CaWdhcnJheS5BcnJheTEuYmxpdCBzcmMgZHN0XG5cbmxldCBtYWtlX2RlZmF1bHQgZGVmYXVsdCA9XG4gIGxldCBzcGxpdF9mcm9tX3BhcmVudCB2ID1cbiAgICBDYW1sLkxhenkubWFwX3ZhbCBDYW1sLlJhbmRvbS5TdGF0ZS5zcGxpdCB2XG4gIGluXG4gIENhbWwuRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudCAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBnZXRfc3RhdGUgcmFuZG9tX2tleSA9IENhbWwuRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIENoYXIgPSBDaGFyMFxuXG4oKiBVbmZvcnR1bmF0ZWx5LCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXMgbm90IGV4cG9zZVxuICAgW0NhbWwuUmFuZG9tLlN0YXRlLmRlZmF1bHRdLCB3ZSBoYXZlIHRvIGNvbnN0cnVjdCBvdXIgb3duLiAgV2UgdGhlbiBidWlsZCB0aGVcbiAgIFtDYW1sLlJhbmRvbS5pbnRdLCBbQ2FtbC5SYW5kb20uYm9vbF0gZnVuY3Rpb25zIGFuZCBmcmllbmRzIHVzaW5nIHRoYXQgZGVmYXVsdCBzdGF0ZSBpblxuICAgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkuXG5cbiAgIE9uZSBvdGhlciB0cmlja2luZXNzIGlzIHRoYXQgd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIHVuZXhwb3NlZCBbQ2FtbC5SYW5kb20uU3RhdGUuYXNzaWduXVxuICAgZnVuY3Rpb24sIHdoaWNoIGFjY2Vzc2VzIHRoZSB1bmV4cG9zZWQgc3RhdGUgcmVwcmVzZW50YXRpb24uICBTbywgd2UgY29weSB0aGVcbiAgIFtTdGF0ZS5yZXByXSB0eXBlIGRlZmluaXRpb24gYW5kIFthc3NpZ25dIGZ1bmN0aW9uIHRvIGhlcmUgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSxcbiAgIGFuZCB1c2UgW09iai5tYWdpY10gdG8gZ2V0IGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbi4gKilcblxuKCogUmVncmVzc2lvbiB0ZXN0cyBvdWdodCB0byBiZSBkZXRlcm1pbmlzdGljIGJlY2F1c2UgdGhhdCB3YXkgYW55b25lIHdobyBicmVha3MgdGhlIHRlc3RcbiAgIGtub3dzIHRoYXQgaXQncyB0aGVpciBjb2RlIHRoYXQgYnJva2UgdGhlIHRlc3QuICBJZiB0ZXN0cyBhcmUgbm9uZGV0ZXJtaW5pc3RpYywgYSB0ZXN0XG4gICBmYWlsdXJlIG1heSBpbnN0ZWFkIGhhcHBlbiBiZWNhdXNlIHRoZSB0ZXN0IHJ1bm5lciBnb3QgdW5sdWNreSBhbmQgdW5jb3ZlcmVkIGFuXG4gICBleGlzdGluZyBidWcgaW4gdGhlIGNvZGUgc3VwcG9zZWRseSBiZWluZyBcInByb3RlY3RlZFwiIGJ5IHRoZSB0ZXN0IGluIHF1ZXN0aW9uLiAqKVxubGV0IGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHMgPVxuICBpZiBhbV90ZXN0aW5nXG4gIHRoZW4gKFxuICAgIG1hdGNoIGFsbG93X2luX3Rlc3RzIHdpdGhcbiAgICB8IFNvbWUgdHJ1ZSAtPiAoKVxuICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIFwiaW5pdGlhbGl6aW5nIFJhbmRvbSB3aXRoIGEgbm9uZGV0ZXJtaW5pc3RpYyBzZWVkIGlzIGZvcmJpZGRlbiBpbiBpbmxpbmUgdGVzdHNcIilcbjs7XG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkIDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubGV0IHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gIHJhbmRvbV9zZWVkICgpXG47O1xuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogV2UgYWxsb3cgbGF6aW5lc3Mgb25seSBmb3IgdGhlIGRlZmluaXRpb24gb2YgW2RlZmF1bHRdLCBiZWxvdywgd2hpY2ggbWF5IGxhemlseSBjYWxsXG4gICAgIFttYWtlX3NlbGZfaW5pdF0uIEZvciBhbGwgb3RoZXIgcHVycG9zZXMsIHdlIGNyZWF0ZSBhbmQgdXNlIFt0XSBlYWdlcmx5LiAqKVxuICB0eXBlIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS50IExhenkudFxuXG4gIGxldCBiaXRzIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHQpXG4gIGxldCBib29sIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS5ib29sIChMYXp5LmZvcmNlIHQpXG4gIGxldCBpbnQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDMyIHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludDMyIChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDY0IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludDY0IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG5hdGl2ZWludCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5uYXRpdmVpbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbWFrZSBzZWVkID0gTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUubWFrZSBzZWVkKVxuICBsZXQgY29weSB0ID0gTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUuY29weSAoTGF6eS5mb3JjZSB0KSlcbiAgbGV0IGNoYXIgdCA9IGludCB0IDI1NiB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcbiAgbGV0IGFzY2lpIHQgPSBpbnQgdCAxMjggfD4gQ2hhci51bnNhZmVfb2ZfaW50XG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gICAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgICBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcbiAgOztcblxuICBsZXQgYXNzaWduID0gUmFuZG9tX3JlcHIuYXNzaWduXG5cbiAgbGV0IGZ1bGxfaW5pdCB0IHNlZWQgPSBhc3NpZ24gdCAobWFrZSBzZWVkKVxuXG4gIGxldCBkZWZhdWx0ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBkZWZpbmUgQmFzZSdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlIGFzIGEgY29weSBvZiBPQ2FtbCdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlLlxuICAgICAgICAgVGhpcyBtZWFucyB0aGF0IHByb2dyYW1zIHRoYXQgdXNlIEJhc2UuUmFuZG9tIHdpbGwgc2VlIHRoZSBzYW1lIHNlcXVlbmNlIG9mXG4gICAgICAgICByYW5kb20gYml0cyBhcyBpZiB0aGV5IGhhZCB1c2VkIENhbWwuUmFuZG9tLiBIb3dldmVyLCBiZWNhdXNlIFtnZXRfc3RhdGVdIHJldHVybnNcbiAgICAgICAgIGEgY29weSwgQmFzZS5SYW5kb20gYW5kIE9DYW1sLlJhbmRvbSBhcmUgbm90IHVzaW5nIHRoZSBzYW1lIHN0YXRlLiBJZiBhIHByb2dyYW1cbiAgICAgICAgIHVzZWQgYm90aCwgZWFjaCBvZiB0aGVtIHdvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUgc2VxdWVuY2Ugb2YgcmFuZG9tIGJpdHMuIFRvXG4gICAgICAgICBhdm9pZCB0aGF0LCB3ZSByZXNldCBPQ2FtbCdzIHJhbmRvbSBzdGF0ZSB0byBhIGRpZmZlcmVudCBzZWVkLCBnaXZpbmcgaXQgYVxuICAgICAgICAgZGlmZmVyZW50IHNlcXVlbmNlLiAqKVxuICAgICAgbGV0IHQgPSBDYW1sLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgICAgIENhbWwuUmFuZG9tLmluaXQgMTM3O1xuICAgICAgTGF6eS5mcm9tX3ZhbCB0KVxuICAgIGVsc2VcbiAgICAgIGxhenlcbiAgICAgICAgKCogT3V0c2lkZSBvZiB0ZXN0cywgd2UgaW5pdGlhbGl6ZSByYW5kb20gc3RhdGUgbm9uZGV0ZXJtaW5pc3RpY2FsbHkgYW5kIGxhemlseS5cbiAgICAgICAgICAgV2UgZm9yY2UgdGhlIHJhbmRvbSBpbml0aWFsaXphdGlvbiB0byBiZSBsYXp5IHNvIHRoYXQgd2UgZG8gbm90IHBheSBhbnkgY29zdFxuICAgICAgICAgICBmb3IgaXQgaW4gcHJvZ3JhbXMgdGhhdCBkbyBub3QgdXNlIHJhbmRvbW5lc3MuICopXG4gICAgICAgIChMYXp5LmZvcmNlIChtYWtlX3NlbGZfaW5pdCAoKSkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl82NGJpdHMgdCBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMHgzRkZGRkZGRiAoKiAoMSBsc2wgMzApIC0gMSAqKVxuICAgIHRoZW4gaW50IHQgYm91bmRcbiAgICBlbHNlIENhbWwuSW50NjQudG9faW50IChpbnQ2NCB0IChDYW1sLkludDY0Lm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl8zMmJpdHMgdCBib3VuZCA9XG4gICAgKCogTm90IGFsd2F5cyB0cnVlIHdpdGggdGhlIEphdmFTY3JpcHQgYmFja2VuZC4gKilcbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgQ2FtbC5JbnQzMi50b19pbnQgKGludDMyIHQgKENhbWwuSW50MzIub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDY0ID1cbiAgICBsZXQgb3BlbiBDYW1sLkludDY0IGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+XG4gICAgICBsb2d4b3JcbiAgICAgICAgKGJpdHMgc3RhdGUpXG4gICAgICAgIChsb2d4b3IgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgNjApKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDMyID1cbiAgICBsZXQgb3BlbiBDYW1sLkludDMyIGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+IGxvZ3hvciAoYml0cyBzdGF0ZSkgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMgc3RhdGUgPSBDYW1sLkludDY0LnRvX2ludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyBzdGF0ZSA9IENhbWwuSW50MzIudG9faW50IChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuXG4gIGxldCBmdWxsX3JhbmdlX2ludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyBzdGF0ZSA9XG4gICAgQ2FtbC5JbnQ2NC50b19uYXRpdmVpbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyBzdGF0ZSA9XG4gICAgQ2FtbC5OYXRpdmVpbnQub2ZfaW50MzIgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgcmFpc2VfY3Jvc3NlZF9ib3VuZHMgbmFtZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCBzdHJpbmdfb2ZfYm91bmQgPVxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiUmFuZG9tLiVzOiBjcm9zc2VkIGJvdW5kcyBbJXMgPiAlc11cIlxuICAgICAgbmFtZVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCBsb3dlcl9ib3VuZClcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgdXBwZXJfYm91bmQpXG4gICAgICAoKVxuICBbQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuICA7O1xuXG4gIGxldCBpbnRfaW5jbCA9XG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnRcIiBsbyBoaSBJbnQudG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgICBpZiBkaWZmID0gSW50Lm1heF92YWx1ZVxuICAgICAgdGhlbiBsbyArIChmdWxsX3JhbmdlX2ludCBzdGF0ZSBsYW5kIEludC5tYXhfdmFsdWUpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMFxuICAgICAgdGhlbiBsbyArIGludCBzdGF0ZSAoSW50LnN1Y2MgZGlmZilcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50MzJfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBDYW1sLkludDMyIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQzMlwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwbFxuICAgICAgdGhlbiBhZGQgbG8gKGludDMyIHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfaW5jbCA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuTmF0aXZlaW50IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJuYXRpdmVpbnRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBuXG4gICAgICB0aGVuIGFkZCBsbyAobmF0aXZlaW50IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQ2NF9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDY0IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDY0XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgICB0aGVuIGFkZCBsbyAoaW50NjQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgdW5pZm9ybWx5IHJhbmRvbSBmbG9hdCBpbiBbMCwgMSkuICopXG4gIGxldCByZWMgcmF3ZmxvYXQgc3RhdGUgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBzY2FsZSA9IDB4MXAtMzAgaW5cbiAgICAoKiAyXi0zMCAqKVxuICAgIGxldCByMSA9IENhbWwuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByMiA9IENhbWwuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByZXN1bHQgPSAoKHIxICouIHNjYWxlKSArLiByMikgKi4gc2NhbGUgaW5cbiAgICAoKiBXaXRoIHZlcnkgc21hbGwgcHJvYmFiaWxpdHksIHJlc3VsdCBjYW4gcm91bmQgdXAgdG8gMS4wLCBzbyBpbiB0aGF0IGNhc2UsIHdlIGp1c3RcbiAgICAgICB0cnkgYWdhaW4uICopXG4gICAgaWYgcmVzdWx0IDwgMS4wIHRoZW4gcmVzdWx0IGVsc2UgcmF3ZmxvYXQgc3RhdGVcbiAgOztcblxuICBsZXQgZmxvYXQgc3RhdGUgaGkgPSByYXdmbG9hdCBzdGF0ZSAqLiBoaVxuXG4gIGxldCBmbG9hdF9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiZmxvYXRcIiBsbyBoaSBDYW1sLnN0cmluZ19vZl9mbG9hdDtcbiAgICBsbyArLiBmbG9hdCBzdGF0ZSAoaGkgLS4gbG8pXG4gIDs7XG5lbmRcblxubGV0IGRlZmF1bHQgPSBSYW5kb21fcmVwci5tYWtlX2RlZmF1bHQgU3RhdGUuZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGludCB4ID0gU3RhdGUuaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDMyIHggPSBTdGF0ZS5pbnQzMiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBuYXRpdmVpbnQgeCA9IFN0YXRlLm5hdGl2ZWludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQ2NCB4ID0gU3RhdGUuaW50NjQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgZmxvYXQgeCA9IFN0YXRlLmZsb2F0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludF9pbmNsIHggeSA9IFN0YXRlLmludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50MzJfaW5jbCB4IHkgPSBTdGF0ZS5pbnQzMl9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgbmF0aXZlaW50X2luY2wgeCB5ID0gU3RhdGUubmF0aXZlaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQ2NF9pbmNsIHggeSA9IFN0YXRlLmludDY0X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBmbG9hdF9yYW5nZSB4IHkgPSBTdGF0ZS5mbG9hdF9yYW5nZSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBjaGFyICgpID0gU3RhdGUuY2hhciAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgYXNjaWkgKCkgPSBTdGF0ZS5hc2NpaSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkpXG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzXG4iLCIoKiogQW4gaW50ZXJuYWwtb25seSBtb2R1bGUgZmFjdG9yZWQgb3V0IGR1ZSB0byBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb3JlX2FycmF5XG4gICAgYW5kIGNvcmVfbGlzdC4gIENvbnRhaW5zIGNvZGUgZm9yIHBlcm11dGluZyBhbiBhcnJheS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSA/KHBvcyA9IDApID9sZW4gdCA9XG4gICgqIENvcGllZCBmcm9tIFtPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMF0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlIHdoZW4gY29tcGlsaW5nXG4gICAgIHdpdGhvdXQgZmxhbWJkYS4gKilcbiAgbGV0IHRvdGFsX2xlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGwgLT4gbFxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAuY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGxldCBudW1fc3dhcHMgPSBsZW4gLSAxIGluXG4gIGZvciBpID0gbnVtX3N3YXBzIGRvd250byAxIGRvXG4gICAgbGV0IHRoaXNfaSA9IHBvcyArIGkgaW5cbiAgICAoKiBbcmFuZG9tX2ldIGlzIGRyYXduIGZyb20gW3Bvcyx0aGlzX2ldICopXG4gICAgbGV0IHJhbmRvbV9pID0gcG9zICsgUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGkgKyAxKSBpblxuICAgIHN3YXAgdCB0aGlzX2kgcmFuZG9tX2lcbiAgZG9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiB0aGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBbQ2FtbC5pZ25vcmVdICopXG5cbmxldCBub24gZiB4ID0gbm90IChmIHgpXG5cbmxldCBmb3JldmVyIGYgPVxuICBsZXQgcmVjIGZvcmV2ZXIgKCkgPVxuICAgIGYgKCk7XG4gICAgZm9yZXZlciAoKVxuICBpblxuICB0cnkgZm9yZXZlciAoKSB3aXRoXG4gIHwgZSAtPiBlXG47O1xuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwYXNzIGluIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFuZCBnZXRcbiAgIGZ1bmN0aW9ucyBhcyBhIHJlc3VsdC4gKilcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IHJlYyBhcHBseV9uX3RpbWVzIH5uIGYgeCA9IGlmIG4gPD0gMCB0aGVuIHggZWxzZSBhcHBseV9uX3RpbWVzIH5uOihuIC0gMSkgZiAoZiB4KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTGVzcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBFcXVhbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBHcmVhdGVyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBMZXNzOyBFcXVhbDsgR3JlYXRlciBdIDogdCBsaXN0KVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcIm9yZGVyaW5nLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSAtPiBMZXNzXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSAtPiBFcXVhbFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIC0+IEdyZWF0ZXJcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBMZXNzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkxlc3NcIlxuICAgIHwgRXF1YWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXF1YWxcIlxuICAgIHwgR3JlYXRlciAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJHcmVhdGVyXCJcbiAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTGVzc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiRXF1YWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkdyZWF0ZXJcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgX29yZGVyaW5nID0gdCA9XG4gICAgfCBMZXNzXG4gICAgfCBFcXVhbFxuICAgIHwgR3JlYXRlclxuZW5kXG5cbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTGVzcyBlbHNlIGlmIG4gPSAwIHRoZW4gRXF1YWwgZWxzZSBHcmVhdGVyXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IExlc3MgLT4gLTFcbiAgfCBFcXVhbCAtPiAwXG4gIHwgR3JlYXRlciAtPiAxXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cblxuaW5jbHVkZSBMaXN0MVxuXG4oKiBUaGlzIGl0c2VsZiBpbmNsdWRlcyBbTGlzdDBdLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxpc3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9saXN0XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsaXN0X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgT3JfdW5lcXVhbF9sZW5ndGhzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgVW5lcXVhbF9sZW5ndGhzXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNl8gYl9fMDA3XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwNl8gYl9fMDA3X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA2XywgYl9fMDA3XyB3aXRoXG4gICAgICB8IE9rIF9hX18wMDhfLCBPayBfYl9fMDA5XyAtPiBfY21wX19hIF9hX18wMDhfIF9iX18wMDlfXG4gICAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICAgIHwgXywgT2sgXyAtPiAxXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocywgVW5lcXVhbF9sZW5ndGhzIC0+IDApXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAxM18pIDogKChhX18wMTNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDEzXyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDExXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMTBfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDEyXyBdXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsX2xlbmd0aHNcIlxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5sZXQgb2ZfbGlzdCB0ID0gdFxuXG5sZXQgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGUgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgbGV0IG5leHRfaSA9IHN0cmlkZSBzdGFydF9pIGluXG4gIGxldCBvcmRlciB4IHkgPSBPcmRlcmluZy5vZl9pbnQgKGNvbXBhcmUgeCB5KSBpblxuICBsZXQgcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKSA9XG4gICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWVcIlxuICBpblxuICBsZXQgaW5pdGlhbF9zdHJpZGVfb3JkZXIgPVxuICAgIG1hdGNoIG9yZGVyIHN0YXJ0X2kgbmV4dF9pIHdpdGhcbiAgICB8IEVxdWFsIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICB8IExlc3MgLT4gYExlc3NcbiAgICB8IEdyZWF0ZXIgLT4gYEdyZWF0ZXJcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGxldCBpX3RvX3N0b3Bfb3JkZXIgPSBvcmRlciBpIHN0b3BfaSBpblxuICAgIG1hdGNoIGlfdG9fc3RvcF9vcmRlciwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPlxuICAgICAgKCogaGF2ZW4ndCB5ZXQgcmVhY2hlZCBbc3RvcF9pXS4gQ29udGludWUuICopXG4gICAgICBsZXQgbmV4dF9pID0gc3RyaWRlIGkgaW5cbiAgICAgIChtYXRjaCBvcmRlciBpIG5leHRfaSwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgICAgIHwgRXF1YWwsIF8gLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCBjaGFuZ2UgZGlyZWN0aW9uXCJcbiAgICAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT4gbG9vcCBuZXh0X2kgKGkgOjogYWNjdW0pKVxuICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgKCogc3RlcHBlZCBwYXN0IFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICBhY2N1bVxuICAgIHwgRXF1YWwsIF8gLT5cbiAgICAgICgqIHJlYWNoZWQgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIChtYXRjaCBzdG9wIHdpdGhcbiAgICAgICB8IGBpbmNsdXNpdmUgLT4gaSA6OiBhY2N1bVxuICAgICAgIHwgYGV4Y2x1c2l2ZSAtPiBhY2N1bSlcbiAgaW5cbiAgbGV0IHN0YXJ0X2kgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfaVxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBuZXh0X2lcbiAgaW5cbiAgcmV2IChsb29wIHN0YXJ0X2kgW10pXG47O1xuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBpZiBzdHJpZGUgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlOiBzdHJpZGUgbXVzdCBiZSBub24temVyb1wiO1xuICByYW5nZScgfmNvbXBhcmUgfnN0cmlkZTooZnVuIHggLT4geCArIHN0cmlkZSkgfnN0YXJ0IH5zdG9wIHN0YXJ0X2kgc3RvcF9pXG47O1xuXG5sZXQgaGQgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IF8gLT4gU29tZSB4XG47O1xuXG5sZXQgdGwgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IHQnIC0+IFNvbWUgdCdcbjs7XG5cbmxldCBudGggdCBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbnRoX2F1eCB0IG4gPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYSA6OiB0IC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCB0IChuIC0gMSlcbiAgICBpblxuICAgIG50aF9hdXggdCBuKVxuOztcblxubGV0IG50aF9leG4gdCBuID1cbiAgbWF0Y2ggbnRoIHQgbiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJMaXN0Lm50aF9leG4gJWQgY2FsbGVkIG9uIGxpc3Qgb2YgbGVuZ3RoICVkXCIgbiAobGVuZ3RoIHQpICgpXG4gIHwgU29tZSBhIC0+IGFcbjs7XG5cbmxldCB1bm9yZGVyZWRfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbCB8IGwsIFtdIC0+IGxcbiAgfCBfIC0+IHJldl9hcHBlbmQgbDEgbDJcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiAtPiBsb29wIGEgYiAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfIHwgXywgW10gLT4gVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYiB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSBsMSBsMiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYiB9IC0+XG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWRcIlxuICAgICAgbmFtZVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hKVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iKVxuICAgICAgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgyIGwxIGwyIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9jIDogJ2MgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiBsMyA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBjIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiwgYyB3aXRoXG4gICAgICB8IFtdLCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiwgXyA6OiBjIC0+IGxvb3AgYSBiIGMgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXywgXyB8IF8sIFtdLCBfIHwgXywgXywgW10gLT5cbiAgICAgICAgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYjsgdGFpbF9vZl9jID0gYyB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIGwzIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoM19leG4gbmFtZSBsMSBsMiBsMyA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYjsgdGFpbF9vZl9jIH0gLT5cbiAgICBsZXQgbjEgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSBpblxuICAgIGxldCBuMiA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iIGluXG4gICAgbGV0IG4zID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2MgaW5cbiAgICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkIHx8ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiBuMiBuMyAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMiBsMylcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbmxldCBpdGVyMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGl0ZXIyX29rIH5mKVxuXG5sZXQgaXRlcjJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJpdGVyMl9leG5cIiBsMSBsMjtcbiAgaXRlcjJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KHJldl9tYXAyX29rIH5mKVxuXG5sZXQgcmV2X21hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJyZXZfbWFwMl9leG5cIiBsMSBsMjtcbiAgcmV2X21hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBmb2xkMiBsMSBsMiB+aW5pdCB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvbGQyX29rIH5pbml0IH5mKVxuXG5sZXQgZm9sZDJfZXhuIGwxIGwyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb2xkMl9leG5cIiBsMSBsMjtcbiAgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmZcbjs7XG5cbmxldCBmb3JfYWxsMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvcl9hbGwyX29rIH5mKVxuXG5sZXQgZm9yX2FsbDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb3JfYWxsMl9leG5cIiBsMSBsMjtcbiAgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBleGlzdHMyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZXhpc3RzMl9vayB+ZilcblxubGV0IGV4aXN0czJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJleGlzdHMyX2V4blwiIGwxIGwyO1xuICBleGlzdHMyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgZXF1YWwgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgYiA6OiBicyAtPiBlcXVhbCBhIGIgfHwgbG9vcCBlcXVhbCBhIGJzXG4gIGluXG4gIGxvb3AgZXF1YWwgYSB0XG47O1xuXG4oKiBUaGlzIGlzIGEgY29weSBvZiB0aGUgY29kZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIGFuIGV4dHJhIGV0YS1leHBhbnNpb24gdG9cbiAgIGF2b2lkIGNyZWF0aW5nIHBhcnRpYWwgY2xvc3VyZXMgKHNob3dlZCB1cCBmb3IgW2ZpbHRlcl0pIGluIHByb2ZpbGluZykuICopXG5sZXQgcmV2X2ZpbHRlciB0IH5mID1cbiAgbGV0IHJlYyBmaW5kIH5mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIGZpbmQgfmYgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgfmYgYWNjdSBsXG4gIGluXG4gIGZpbmQgfmYgW10gdFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gcmV2IChyZXZfZmlsdGVyIHQgfmYpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgbFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBsb29wIGxcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJlYyBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgeCA6OiB0IC0+IGlmIGYgeCB0aGVuIHggZWxzZSBmaW5kX2V4biB0IH5mXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiBpIHggdGhlbiBTb21lIChpLCB4KSBlbHNlIGxvb3AgKGkgKyAxKSBsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG5sZXQgZmluZGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGZpbmRpX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgbClcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCAmJiBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgfHwgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG4oKiogRm9yIHRoZSBjb250YWluZXIgaW50ZXJmYWNlLiAqKVxubGV0IGZvbGRfbGVmdCA9IGZvbGRcblxubGV0IHRvX2FycmF5ID0gQXJyYXkub2ZfbGlzdFxubGV0IHRvX2xpc3QgdCA9IHRcblxubGV0IG1heF9ub25fdGFpbGNhbGwgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDFfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3Mgc21hbGwuIFRoaXNcbiAgICAgbnVtYmVyIHdhcyB0YWtlbiBmcm9tIG9jYW1sI3N0ZGxpYi9saXN0Lm1sIHdoaWNoIGlzIGFsc28gZXF1YWwgdG8gdGhlIGRlZmF1bHQgbGltaXRcbiAgICAgb2YgcmVjdXJzaXZlIGNhbGwgaW4gdGhlIGpzX29mX29jYW1sIGNvbXBpbGVyIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdHJhbXBvbGluZS4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuOztcblxuKCoqIFRhaWwgcmVjdXJzaXZlIHZlcnNpb25zIG9mIHN0YW5kYXJkIFtMaXN0XSBtb2R1bGUgKilcblxubGV0IHRhaWxfYXBwZW5kIGwxIGwyID0gcmV2X2FwcGVuZCAocmV2IGwxKSBsMlxuXG4oKiBUaGVyZSBhcmUgYSBmZXcgb3B0aW1pemVkIGxpc3Qgb3BlcmF0aW9ucyBoZXJlLCBpbmNsdWRpbmcgYXBwZW5kIGFuZCBtYXAuICBUaGVyZSBhcmVcbiAgIGJhc2ljYWxseSB0d28gb3B0aW1pemF0aW9ucyBpbiBwbGF5OiBsb29wIHVucm9sbGluZywgYW5kIGR5bmFtaWMgc3dpdGNoaW5nIGJldHdlZW5cbiAgIHN0YWNrIGFuZCBoZWFwIGFsbG9jYXRpb24uXG5cbiAgIFRoZSBsb29wLXVucm9sbGluZyBpcyBzdHJhaWdodGZvcndhcmQsIHdlIGp1c3QgdW5yb2xsIDUgbGV2ZWxzIG9mIHRoZSBsb29wLiAgVGhpcyBtYWtlc1xuICAgZWFjaCBpdGVyYXRpb24gZmFzdGVyLCBhbmQgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIGNvbnN1bWVkIHBlciBsaXN0XG4gICBlbGVtZW50LlxuXG4gICBUaGUgZHluYW1pYyBzd2l0Y2hpbmcgaXMgZG9uZSBieSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcywgYW5kIHRoZW5cbiAgIHN3aXRjaGluZyB0byB0aGUgXCJzbG93XCIgaW1wbGVtZW50YXRpb24gd2hlbiB3ZSBleGNlZWQgYSBnaXZlbiBsaW1pdC4gIFRoaXMgbWVhbnMgdGhhdFxuICAgc2hvcnQgbGlzdHMgdXNlIHRoZSBmYXN0IHN0YWNrLWFsbG9jYXRpb24gbWV0aG9kLCBhbmQgbG9uZyBsaXN0cyB1c2UgYSBzbG93ZXIgb25lIHRoYXRcbiAgIGRvZXNuJ3QgcmVxdWlyZSBzdGFjayBzcGFjZS4gKilcbmxldCByZWMgY291bnRfYXBwZW5kIGwxIGwyIGNvdW50ID1cbiAgbWF0Y2ggbDIgd2l0aFxuICB8IFtdIC0+IGwxXG4gIHwgXyAtPlxuICAgIChtYXRjaCBsMSB3aXRoXG4gICAgIHwgW10gLT4gbDJcbiAgICAgfCBbIHgxIF0gLT4geDEgOjogbDJcbiAgICAgfCBbIHgxOyB4MiBdIC0+IHgxIDo6IHgyIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzIF0gLT4geDEgOjogeDIgOjogeDMgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT4geDEgOjogeDIgOjogeDMgOjogeDQgOjogbDJcbiAgICAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgICAgIHgxXG4gICAgICAgOjogeDJcbiAgICAgICA6OiB4M1xuICAgICAgIDo6IHg0XG4gICAgICAgOjogeDVcbiAgICAgICA6OlxuICAgICAgIChpZiBjb3VudCA+IG1heF9ub25fdGFpbGNhbGxcbiAgICAgICAgdGhlbiB0YWlsX2FwcGVuZCB0bCBsMlxuICAgICAgICBlbHNlIGNvdW50X2FwcGVuZCB0bCBsMiAoY291bnQgKyAxKSkpXG47O1xuXG5sZXQgYXBwZW5kIGwxIGwyID0gY291bnRfYXBwZW5kIGwxIGwyIDBcblxuKCogQW4gb3JkaW5hcnkgdGFpbCByZWN1cnNpdmUgbWFwIGJ1aWxkcyB1cCBhbiBpbnRlcm1lZGlhdGUgKHJldmVyc2VkKSByZXByZXNlbnRhdGlvbixcbiAgIHdpdGggb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCBwZXIgZWxlbWVudC4gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIGNodW5rc1xuICAgOSBvYmplY3RzIGludG8gb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCwgcmVkdWNpbmcgYWxsb2NhdGlvbiBhbmQgcGVyZm9ybWFuY2UgY29zdHNcbiAgIGFjY29yZGluZ2x5LiBOb3RlIHRoYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0IGlzIGRvbmUgYnkgdGhlIHN0ZGxpYidzIG1hcFxuICAgZnVuY3Rpb24uICopXG5sZXQgdGFpbF9tYXAgeHMgfmYgPVxuICBsZXQgcmVjIHJpc2UgeXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4geXNcbiAgICB8ICh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicyAtPlxuICAgICAgcmlzZSAoeTAgOjogeTEgOjogeTIgOjogeTMgOjogeTQgOjogeTUgOjogeTYgOjogeTcgOjogeTggOjogeXMpIGJzXG4gIGluXG4gIGxldCByZWMgZGl2ZSBicyA9IGZ1bmN0aW9uXG4gICAgfCB4MCA6OiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB4NiA6OiB4NyA6OiB4OCA6OiB4cyAtPlxuICAgICAgbGV0IHkwID0gZiB4MCBpblxuICAgICAgbGV0IHkxID0gZiB4MSBpblxuICAgICAgbGV0IHkyID0gZiB4MiBpblxuICAgICAgbGV0IHkzID0gZiB4MyBpblxuICAgICAgbGV0IHk0ID0gZiB4NCBpblxuICAgICAgbGV0IHk1ID0gZiB4NSBpblxuICAgICAgbGV0IHk2ID0gZiB4NiBpblxuICAgICAgbGV0IHk3ID0gZiB4NyBpblxuICAgICAgbGV0IHk4ID0gZiB4OCBpblxuICAgICAgZGl2ZSAoKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzKSB4c1xuICAgIHwgeHMgLT4gcmlzZSAobm9udGFpbF9tYXAgfmYgeHMpIGJzXG4gIGluXG4gIGRpdmUgW10geHNcbjs7XG5cbmxldCByZWMgY291bnRfbWFwIH5mIGwgY3RyID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIHgxIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgWyBmMSBdXG4gIHwgWyB4MTsgeDIgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgWyBmMTsgZjIgXVxuICB8IFsgeDE7IHgyOyB4MyBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgWyBmMTsgZjI7IGYzIF1cbiAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgWyBmMTsgZjI7IGYzOyBmNCBdXG4gIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgbGV0IGY1ID0gZiB4NSBpblxuICAgIGYxXG4gICAgOjogZjJcbiAgICA6OiBmM1xuICAgIDo6IGY0XG4gICAgOjogZjVcbiAgICA6OiAoaWYgY3RyID4gbWF4X25vbl90YWlsY2FsbCB0aGVuIHRhaWxfbWFwIH5mIHRsIGVsc2UgY291bnRfbWFwIH5mIHRsIChjdHIgKyAxKSlcbjs7XG5cbmxldCBtYXAgbCB+ZiA9IGNvdW50X21hcCB+ZiBsIDBcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgKCA+PnwgKSBsIGYgPSBtYXAgbCB+ZlxubGV0IG1hcDJfb2sgbDEgbDIgfmYgPSByZXYgKHJldl9tYXAyX29rIGwxIGwyIH5mKVxubGV0IG1hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihtYXAyX29rIH5mKVxuXG5sZXQgbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIm1hcDJfZXhuXCIgbDEgbDI7XG4gIG1hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwM19vayBsMSBsMiBsMyB+ZiA9XG4gIGxldCByZWMgbG9vcCBsMSBsMiBsMyBhYyA9XG4gICAgbWF0Y2ggbDEsIGwyLCBsMyB3aXRoXG4gICAgfCBbXSwgW10sIFtdIC0+IGFjXG4gICAgfCB4MSA6OiBsMSwgeDIgOjogbDIsIHgzIDo6IGwzIC0+IGxvb3AgbDEgbDIgbDMgKGYgeDEgeDIgeDMgOjogYWMpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsb29wIGwxIGwyIGwzIFtdXG47O1xuXG5sZXQgcmV2X21hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihyZXZfbWFwM19vayB+ZilcblxubGV0IHJldl9tYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwicmV2X21hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIHJldl9tYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgbWFwM19vayBsMSBsMiBsMyB+ZiA9IHJldiAocmV2X21hcDNfb2sgbDEgbDIgbDMgfmYpXG5sZXQgbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KG1hcDNfb2sgfmYpXG5cbmxldCBtYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwibWFwM19leG5cIiBsMSBsMiBsMztcbiAgbWFwM19vayBsMSBsMiBsMyB+ZlxuOztcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZCBsMSBsMiB+ZiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCB+ZiB0IChmIGggOjogbDIpXG47O1xuXG5sZXQgdW56aXAgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMlxuICAgIHwgKHgsIHkpIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW11cbjs7XG5cbmxldCB1bnppcDMgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyIGwzID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMiwgbDNcbiAgICB8ICh4LCB5LCB6KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMikgKHogOjogbDMpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXSBbXVxuOztcblxubGV0IHppcF9leG4gbDEgbDIgPVxuICB0cnkgbWFwMl9vayB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMiB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gemlwX2V4bjogJWQgPD4gJWRcIiAobGVuZ3RoIGwxKSAobGVuZ3RoIGwyKSAoKVxuOztcblxubGV0IHppcCBsMSBsMiA9IG1hcDIgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDJcblxuKCoqIEFkZGl0aW9uYWwgbGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZXZfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaCA6OiB0IC0+IGxvb3AgKGkgKyAxKSAoZiBpIGggOjogYWNjKSB0XG4gIGluXG4gIGxvb3AgMCBbXSBsXG47O1xuXG5sZXQgbWFwaSBsIH5mID0gcmV2IChyZXZfbWFwaSBsIH5mKVxuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBpdGVyaSBsIH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgbCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBzbmQgKGZvbGQgdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB2IC0+IGkgKyAxLCBmIGkgYWNjIHYpKVxuOztcblxubGV0IGZpbHRlcmkgbCB+ZiA9XG4gIHJldiAoZm9sZGkgbCB+ZjooZnVuIHBvcyBhY2MgeCAtPiBpZiBmIHBvcyB4IHRoZW4geCA6OiBhY2MgZWxzZSBhY2MpIH5pbml0OltdKVxuOztcblxubGV0IHJlZHVjZSBsIH5mID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGhkIDo6IHRsIC0+IFNvbWUgKGZvbGQgfmluaXQ6aGQgfmYgdGwpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkIGwgfmYgPVxuICAoKiBDYWxsIHRoZSBcInNpemVcIiBvZiBhIHZhbHVlIHRoZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBjb21iaW5lZCBpbnRvXG4gICAgIGl0IHZpYSBjYWxscyB0byBbZl0uICBXZSBwcm9jZWVkIGJ5IHVzaW5nIFtmXSB0byBjb21iaW5lIGVsZW1lbnRzIGluIHRoZSBhY2N1bXVsYXRvclxuICAgICBvZiB0aGUgc2FtZSBzaXplIHVudGlsIHdlIGNhbid0IGNvbWJpbmUgYW55IG1vcmUsIHRoZW4gZ2V0dGluZyBhIG5ldyBlbGVtZW50IGZyb20gdGhlXG4gICAgIGlucHV0IGxpc3QgYW5kIHJlcGVhdGluZy5cblxuICAgICBXaXRoIHRoaXMgc3RyYXRlZ3ksIGluIHRoZSBhY2N1bXVsYXRvcjpcbiAgICAgLSB3ZSBvbmx5IGV2ZXIgaGF2ZSBlbGVtZW50cyBvZiBzaXplcyBhIHBvd2VyIG9mIHR3b1xuICAgICAtIHdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9mIGVhY2ggc2l6ZVxuICAgICAtIHRoZSBzdW0gb2YgYWxsIHRoZSBlbGVtZW50IHNpemVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWRcblxuICAgICBUaGVzZSBjb25kaXRpb25zIGVuZm9yY2UgdGhhdCBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggc2l6ZSBpcyBwcmVjaXNlbHkgdGhlIGJpbmFyeVxuICAgICBleHBhbnNpb24gb2YgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZDogaWYgeW91J3ZlIGNvbnN1bWVkIDEzID0gMGIxMTAxXG4gICAgIGVsZW1lbnRzLCB5b3UgaGF2ZSBvbmUgZWxlbWVudCBvZiBzaXplIDgsIG9uZSBvZiBzaXplIDQsIGFuZCBvbmUgb2Ygc2l6ZSAxLiAgSGVuY2VcbiAgICAgd2hlbiBhIG5ldyBlbGVtZW50IGNvbWVzIGFsb25nLCB0aGUgbnVtYmVyIG9mIGNvbWJpbmluZ3MgeW91IG5lZWQgdG8gZG8gaXMgdGhlIG51bWJlclxuICAgICBvZiB0cmFpbGluZyAxcyBpbiB0aGUgYmluYXJ5IGV4cGFuc2lvbiBvZiBbbnVtXSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGhhdmVcbiAgICAgYWxyZWFkeSBnb25lIGludG8gdGhlIGFjY3VtdWxhdG9yLiAgVGhlIGFjY3VtdWxhdG9yIGlzIGluIGFzY2VuZGluZyBvcmRlciBvZiBzaXplLCBzb1xuICAgICB0aGUgbmV4dCBlbGVtZW50IHRvIGNvbWJpbmUgd2l0aCBpcyBhbHdheXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QuICopXG4gIGxldCByZWMgc3RlcF9hY2N1bSBudW0gYWNjIHggPVxuICAgIGlmIG51bSBsYW5kIDEgPSAwXG4gICAgdGhlbiB4IDo6IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBOZXcgZWxlbWVudHMgZnJvbSBsYXRlciBpbiB0aGUgaW5wdXQgbGlzdCBnbyBvbiB0aGUgZnJvbnQgb2YgdGhlIGFjY3VtdWxhdG9yLCBzb1xuICAgICAgICAgdGhlIGFjY3VtdWxhdG9yIGlzIGluIHJldmVyc2Ugb3JkZXIgd3J0IHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyLCBoZW5jZSBbZiB5IHhdXG4gICAgICAgICBpbnN0ZWFkIG9mIFtmIHggeV0uICopXG4gICAgICB8IHkgOjogeXMgLT4gc3RlcF9hY2N1bSAobnVtIGFzciAxKSB5cyAoZiB5IHgpKVxuICBpblxuICAoKiBFeHBlcmltZW50YWxseSwgaW5saW5pbmcgW2ZvbGRpXSBhbmQgdW5yb2xsaW5nIHRoaXMgbG9vcCBhIGZldyB0aW1lcyBjYW4gcmVkdWNlXG4gICAgIHJ1bnRpbWUgZG93biB0byBhIHRoaXJkIGFuZCBhbGxvY2F0aW9uIHRvIDEvMTZ0aCBvciBzbyBpbiB0aGUgbWljcm9iZW5jaG1hcmtzIGJlbG93LlxuICAgICBIb3dldmVyLCBpbiBtb3N0IHVzZSBjYXNlcyBbZl0gaXMgbGlrZWx5IHRvIGJlIGV4cGVuc2l2ZSAob3RoZXJ3aXNlIHdoeSBkbyB5b3UgY2FyZVxuICAgICBhYm91dCB0aGUgb3JkZXIgb2YgcmVkdWN0aW9uPykgc28gdGhlIG92ZXJoZWFkIG9mIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGRvZXNuJ3QgcmVhbGx5XG4gICAgIG1hdHRlci4gSWYgeW91IGNvbWUgdXAgd2l0aCBhIHVzZS1jYXNlIHdoZXJlIGl0IGRvZXMsIHRoZW4gdGhhdCdzIHNvbWV0aGluZyB5b3UgbWlnaHRcbiAgICAgd2FudCB0byB0cnk6IHNlZSBoZyBsb2cgLXByIDQ5ZWYwNjVmNDI5ZC4gKilcbiAgbWF0Y2ggZm9sZGkgbCB+aW5pdDpbXSB+ZjpzdGVwX2FjY3VtIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBTb21lIChmb2xkIHhzIH5pbml0OnggfmY6KGZ1biB4IHkgLT4gZiB5IHgpKVxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZF9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZV9iYWxhbmNlZCBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfYmFsYW5jZWRfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IGdyb3VwaSBsIH5icmVhayA9XG4gIGxldCBncm91cHMgPVxuICAgIGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyB4IC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbIFsgeCBdIF1cbiAgICAgIHwgY3VycmVudF9ncm91cCA6OiB0bCAtPlxuICAgICAgICBpZiBicmVhayBpIChoZF9leG4gY3VycmVudF9ncm91cCkgeFxuICAgICAgICB0aGVuIFsgeCBdIDo6IGN1cnJlbnRfZ3JvdXAgOjogdGwgKCogc3RhcnQgbmV3IGdyb3VwICopXG4gICAgICAgIGVsc2UgKHggOjogY3VycmVudF9ncm91cCkgOjogdGwpXG4gICAgKCogZXh0ZW5kIGN1cnJlbnQgZ3JvdXAgKilcbiAgaW5cbiAgbWF0Y2ggZ3JvdXBzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGwgLT4gcmV2X21hcCBsIH5mOnJldlxuOztcblxubGV0IGdyb3VwIGwgfmJyZWFrID0gZ3JvdXBpIGwgfmJyZWFrOihmdW4gXyB4IHkgLT4gYnJlYWsgeCB5KVxuXG5sZXQgc29ydF9hbmRfZ3JvdXAgbCB+Y29tcGFyZSA9XG4gIGwgfD4gc3RhYmxlX3NvcnQgfmNvbXBhcmUgfD4gZ3JvdXAgfmJyZWFrOihmdW4geCB5IC0+IGNvbXBhcmUgeCB5IDw+IDApXG47O1xuXG5sZXQgY29uY2F0X21hcCBsIH5mID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAocmV2X2FwcGVuZCAoZiBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggW10gbFxuOztcblxubGV0IGNvbmNhdF9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGF1eCBjb250IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBhdXggKGNvbnQgKyAxKSAocmV2X2FwcGVuZCAoZiBjb250IGhkKSBhY2MpIHRsXG4gIGluXG4gIGF1eCAwIFtdIGxcbjs7XG5cbmxldCBtZXJnZSBsMSBsMiB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBhY2MgbDJcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGFjYyBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjb21wYXJlIGgxIGgyIDw9IDAgdGhlbiBsb29wIChoMSA6OiBhY2MpIHQxIGwyIGVsc2UgbG9vcCAoaDIgOjogYWNjKSBsMSB0MlxuICBpblxuICBsb29wIFtdIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2FydGVzaWFuX3Byb2R1Y3QgPSBzdHJ1Y3RcbiAgKCogV2UgYXJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2UgZXhwb3J0IGZyb20gZnVuY3RvcnMgc28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHlcbiAgICAgcmViaW5kIG1vcmUgZWZmaWNpZW50IGxpc3Qtc3BlY2lmaWMgZnVuY3Rpb25zLiAqKVxuXG4gIGxldCBiaW5kID0gY29uY2F0X21hcFxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXAyIGEgYiB+ZiA9IGNvbmNhdF9tYXAgYSB+ZjooZnVuIHggLT4gbWFwIGIgfmY6KGZ1biB5IC0+IGYgeCB5KSlcbiAgbGV0IHJldHVybiB4ID0gWyB4IF1cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuXG4gIG9wZW4gc3RydWN0XG4gICAgbW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZV91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBtYXAyID0gbWFwMlxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIE1vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbGV0IGFsbCA9IE1vbmFkLmFsbFxuICBsZXQgYWxsX3VuaXQgPSBNb25hZC5hbGxfdW5pdFxuICBsZXQgaWdub3JlX20gPSBNb25hZC5pZ25vcmVfbVxuICBsZXQgam9pbiA9IE1vbmFkLmpvaW5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcbiAgZW5kXG5cbiAgbGV0IGFwcGx5ID0gQXBwbGljYXRpdmUuYXBwbHlcbiAgbGV0IGJvdGggPSBBcHBsaWNhdGl2ZS5ib3RoXG4gIGxldCBtYXAzID0gQXBwbGljYXRpdmUubWFwM1xuICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gICAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICAgIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChDYXJ0ZXNpYW5fcHJvZHVjdCA6IE1vbmFkLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuKCoqIHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3RfZXhuIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0X2V4biB0bFxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiTGlzdC5sYXN0XCJcbjs7XG5cbigqKiBvcHRpb25hbGx5IHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3QgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IFNvbWUgeFxuICB8IF8gOjogdGwgLT4gbGFzdCB0bFxuICB8IFtdIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgaXNfcHJlZml4IGxpc3QgfnByZWZpeCB+ZXF1YWwgPVxuICBtYXRjaCBwcmVmaXggd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBoZCA6OiB0bCAtPlxuICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgfCBbXSAtPiBmYWxzZVxuICAgICB8IGhkJyA6OiB0bCcgLT4gZXF1YWwgaGQgaGQnICYmIGlzX3ByZWZpeCB0bCcgfnByZWZpeDp0bCB+ZXF1YWwpXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgYTEgOjogdCAtPlxuICAgIGxldCByZWMgbG9vcCBhMSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEyIDo6IHQgLT4gaWYgZXF1YWwgYTEgYTIgdGhlbiBTb21lIChhMSwgYTIpIGVsc2UgbG9vcCBhMiB0XG4gICAgaW5cbiAgICBsb29wIGExIHRcbjs7XG5cbigqIHJldHVybnMgbGlzdCB3aXRob3V0IGFkamFjZW50IGR1cGxpY2F0ZXMgKilcbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyA/KHdoaWNoX3RvX2tlZXAgPSBgTGFzdCkgbGlzdCB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgdG9fa2VlcCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0b19rZWVwIDo6IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgZXF1YWwgaGQgdG9fa2VlcFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0b19rZWVwID1cbiAgICAgICAgICBtYXRjaCB3aGljaF90b19rZWVwIHdpdGhcbiAgICAgICAgICB8IGBGaXJzdCAtPiB0b19rZWVwXG4gICAgICAgICAgfCBgTGFzdCAtPiBoZFxuICAgICAgICBpblxuICAgICAgICBsb29wIHRvX2tlZXAgYWNjdW0gdGwpXG4gICAgICBlbHNlIGxvb3AgaGQgKHRvX2tlZXAgOjogYWNjdW0pIHRsXG4gIGluXG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gcmV2IChsb29wIGhkIFtdIHRsKVxuOztcblxuKCoqIHJldHVybnMgc29ydGVkIHZlcnNpb24gb2YgbGlzdCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZCAqKVxubGV0IGRlZHVwX2FuZF9zb3J0IGxpc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3QgKCogcGVyZm9ybWFuY2UgaGFjayAqKVxuICB8IF8gLT5cbiAgICBsZXQgZXF1YWwgeCB4JyA9IGNvbXBhcmUgeCB4JyA9IDAgaW5cbiAgICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsaXN0IGluXG4gICAgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgfmVxdWFsIHNvcnRlZFxuOztcblxubGV0IGZpbmRfYV9kdXAgbCB+Y29tcGFyZSA9XG4gIGxldCBzb3J0ZWQgPSBzb3J0IGwgfmNvbXBhcmUgaW5cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiBOb25lXG4gICAgfCBoZDEgOjogKGhkMiA6OiBfIGFzIHRsKSAtPiBpZiBjb21wYXJlIGhkMSBoZDIgPSAwIHRoZW4gU29tZSBoZDEgZWxzZSBsb29wIHRsXG4gIGluXG4gIGxvb3Agc29ydGVkXG47O1xuXG5sZXQgY29udGFpbnNfZHVwIGxzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgbHN0IH5jb21wYXJlIHdpdGhcbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaW5kX2FsbF9kdXBzIGwgfmNvbXBhcmUgPVxuICAoKiBXZSBhZGQgdGhpcyByZXZlcnNhbCwgc28gd2UgY2FuIHNraXAgYSBbcmV2XSBhdCB0aGUgZW5kLiBXZSBjb3VsZCBza2lwXG4gICAgIFtyZXZdIGFueXdheSBzaW5jZSB3ZSBkb24gbm90IGdpdmUgYW55IG9yZGVyaW5nIGd1YXJhbnRlZXMsIGJ1dCBpdCBpc1xuICAgICBuaWNlIHRvIGdldCByZXN1bHRzIGluIG5hdHVyYWwgb3JkZXIuICopXG4gIGxldCBjb21wYXJlIGEgYiA9IC0xICogY29tcGFyZSBhIGIgaW5cbiAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbCBpblxuICAoKiBXYWxrIHRoZSBsaXN0IGFuZCByZWNvcmQgdGhlIGZpcnN0IG9mIGVhY2ggY29uc2VjdXRpdmUgcnVuIG9mIGlkZW50aWNhbCBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGxvb3Agc29ydGVkIHByZXYgfmFscmVhZHlfcmVjb3JkZWQgYWNjID1cbiAgICBtYXRjaCBzb3J0ZWQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgY29tcGFyZSBwcmV2IGhkIDw+IDBcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBhY2NcbiAgICAgIGVsc2UgaWYgYWxyZWFkeV9yZWNvcmRlZFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgYWNjXG4gICAgICBlbHNlIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSAoaGQgOjogYWNjKVxuICBpblxuICBtYXRjaCBzb3J0ZWQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBbXVxuOztcblxubGV0IHJlYyBhbGxfZXF1YWxfdG8gdCB2IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCB4IDo6IHhzIC0+IGVxdWFsIHggdiAmJiBhbGxfZXF1YWxfdG8geHMgdiB+ZXF1YWxcbjs7XG5cbmxldCBhbGxfZXF1YWwgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBpZiBhbGxfZXF1YWxfdG8geHMgeCB+ZXF1YWwgdGhlbiBTb21lIHggZWxzZSBOb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuOztcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID0gMCB0aGVuIGFjY3VtIGVsc2UgbG9vcCAoaSAtIDEpIChmIChpIC0gMSkgOjogYWNjdW0pXG4gIGluXG4gIGxvb3AgbiBbXVxuOztcblxubGV0IHJldl9maWx0ZXJfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIHRsIGFjY3VtKVxuICBpblxuICBsb29wIGwgW11cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwIGwgfmYpXG5cbmxldCByZXZfZmlsdGVyX21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGwgYWNjdW0gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2ggZiBpIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIChpICsgMSkgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSB0bCBhY2N1bSlcbiAgaW5cbiAgbG9vcCAwIGwgW11cbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcGkgbCB+ZilcbmxldCBmaWx0ZXJfb3B0IGwgPSBmaWx0ZXJfbWFwIGwgfmY6Rm4uaWRcblxubGV0IHBhcnRpdGlvbjNfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kIHRyZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kLCByZXYgdHJkXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgYEZzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZCB0cmRcbiAgICAgICB8IGBTbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkgdHJkXG4gICAgICAgfCBgVHJkIHkgLT4gbG9vcCB0IGZzdCBzbmQgKHkgOjogdHJkKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtdXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgZiB4IDogXyBFaXRoZXIudCA9IGlmIGYgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCBpblxuICBwYXJ0aXRpb25fbWFwIHQgfmZcbjs7XG5cbmxldCBwYXJ0aXRpb25fcmVzdWx0IHQgPSBwYXJ0aXRpb25fbWFwIHQgfmY6UmVzdWx0LnRvX2VpdGhlclxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMjJfID0gXCJsaXN0Lm1sLkFzc29jLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDE0XyBfb2ZfYl9fMDE1XyB4X18wMjNfIC0+XG4gICAgICBsaXN0X29mX3NleHBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wMTdfOyBhcmcxX18wMThfIF0gLT5cbiAgICAgICAgICAgIGxldCByZXMwX18wMTlfID0gX29mX2FfXzAxNF8gYXJnMF9fMDE3X1xuICAgICAgICAgICAgYW5kIHJlczFfXzAyMF8gPSBfb2ZfYl9fMDE1XyBhcmcxX18wMThfIGluXG4gICAgICAgICAgICByZXMwX18wMTlfLCByZXMxX18wMjBfXG4gICAgICAgICAgfCBzZXhwX18wMjFfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDIyX1xuICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIHNleHBfXzAyMV8pXG4gICAgICAgIHhfXzAyM19cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2FfXzAyNF8gX29mX2JfXzAyNV8geF9fMDMwXyAtPlxuICAgICAgc2V4cF9vZl9saXN0XG4gICAgICAgIChmdW4gKGFyZzBfXzAyNl8sIGFyZzFfXzAyN18pIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2FfXzAyNF8gYXJnMF9fMDI2X1xuICAgICAgICAgICBhbmQgcmVzMV9fMDI5XyA9IF9vZl9iX18wMjVfIGFyZzFfXzAyN18gaW5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDI4XzsgcmVzMV9fMDI5XyBdKVxuICAgICAgICB4X18wMzBfXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgbGlzdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgIExpc3QgKENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkpKVxuICAgICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcGFpcl9vZl9ncm91cCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChrLCBfKSA6OiBfIGFzIGxpc3QgLT4gaywgbWFwIGxpc3QgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdyb3VwIGFsaXN0IH5lcXVhbCA9XG4gICAgZ3JvdXAgYWxpc3QgfmJyZWFrOihmdW4gKHgsIF8pICh5LCBfKSAtPiBub3QgKGVxdWFsIHggeSkpIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlID1cbiAgICBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZTooZnVuICh4LCBfKSAoeSwgXykgLT4gY29tcGFyZSB4IHkpXG4gICAgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgZmluZCB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBlcXVhbCBrZXkga2V5Jykgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSAoc25kIHgpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LkFzc29jLmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgICBsZXQgZmluZF9leG4gdCB+ZXF1YWwga2V5ID1cbiAgICAgIG1hdGNoIGZpbmQgdCBrZXkgfmVxdWFsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZXF1YWwga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgXyAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IH5lcXVhbCBrZXkgPSBmaWx0ZXIgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBub3QgKGVxdWFsIGtleSBrZXknKSlcblxuICBsZXQgYWRkIHQgfmVxdWFsIGtleSB2YWx1ZSA9XG4gICAgKCogdGhlIHJlbW92ZSBkb2Vzbid0IGNoYW5nZSB0aGUgbWFwIHNlbWFudGljcywgYnV0IGtlZXBzIHRoZSBsaXN0IHNtYWxsICopXG4gICAgKGtleSwgdmFsdWUpIDo6IHJlbW92ZSB0IH5lcXVhbCBrZXlcbiAgOztcblxuICBsZXQgaW52ZXJzZSB0ID0gbWFwIHQgfmY6KGZ1biAoeCwgeSkgLT4geSwgeClcbiAgbGV0IG1hcCB0IH5mID0gbWFwIHQgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgLT4ga2V5LCBmIHZhbHVlKVxuZW5kXG5cbmxldCBzdWIgbCB+cG9zIH5sZW4gPVxuICAoKiBXZSB1c2UgW3BvcyA+IGxlbmd0aCBsIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gbGVuZ3RoIGxdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IGxlbmd0aCBsIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnN1YlwiO1xuICByZXZcbiAgICAoZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGVsIC0+XG4gICAgICAgaWYgaSA+PSBwb3MgJiYgaSA8IHBvcyArIGxlbiB0aGVuIGVsIDo6IGFjYyBlbHNlIGFjYykpXG47O1xuXG5sZXQgc3BsaXRfbiB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdLCB0X29yaWdcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW0sIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWcsIFtdICgqIGluIHRoaXMgY2FzZSwgdF9vcmlnID0gcmV2IGFjY3VtICopXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X25dIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2UgdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZ1xuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbmxldCByZWMgZHJvcCB0IG4gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBfIDo6IHRsIHdoZW4gbiA+IDAgLT4gZHJvcCB0bCAobiAtIDEpXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY2h1bmtzX29mIGwgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8PSAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5jaHVua3Nfb2Y6IEV4cGVjdGVkIGxlbmd0aCA+IDAsIGdvdCAlZFwiIGxlbmd0aCAoKTtcbiAgbGV0IHJlYyBhdXggb2ZfbGVuZ3RoIGFjYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IHN1Ymxpc3QsIGwgPSBzcGxpdF9uIGwgbGVuZ3RoIGluXG4gICAgICBhdXggb2ZfbGVuZ3RoIChzdWJsaXN0IDo6IGFjYykgbFxuICBpblxuICBhdXggbGVuZ3RoIFtdIGxcbjs7XG5cbmxldCBzcGxpdF93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IHQgLT4gcmV2IGFjYywgdFxuICBpblxuICBsb29wIFtdIHhzXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfd2hpbGVdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2Vfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCBfIC0+IHJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSB4c1xuOztcblxubGV0IHJlYyBkcm9wX3doaWxlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gZHJvcF93aGlsZSB0bCB+ZlxuICB8IHQgLT4gdFxuOztcblxubGV0IGRyb3BfbGFzdCB0ID1cbiAgbWF0Y2ggcmV2IHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IGxzdCAtPiBTb21lIChyZXYgbHN0KVxuOztcblxubGV0IGRyb3BfbGFzdF9leG4gdCA9XG4gIG1hdGNoIGRyb3BfbGFzdCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTGlzdC5kcm9wX2xhc3RfZXhuOiBlbXB0eSBsaXN0XCJcbiAgfCBTb21lIGxzdCAtPiBsc3Rcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBsaXN0MSBsaXN0MiA9XG4gIGlmIGlzX2VtcHR5IGxpc3QyXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGwxIGwyIGFjY3VtID1cbiAgICAgIG1hdGNoIGwxIHdpdGhcbiAgICAgIHwgW10gLT4gYWNjdW1cbiAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBsMiAocmV2X2FwcGVuZCAobWFwIH5mOihmdW4geCAtPiBoZCwgeCkgbDIpIGFjY3VtKVxuICAgIGluXG4gICAgcmV2IChsb29wIGxpc3QxIGxpc3QyIFtdKSlcbjs7XG5cbmxldCBjb25jYXQgbCA9IGZvbGRfcmlnaHQgbCB+aW5pdDpbXSB+ZjphcHBlbmRcbmxldCBjb25jYXRfbm9fb3JkZXIgbCA9IGZvbGQgbCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBsIC0+IHJldl9hcHBlbmQgbCBhY2MpXG5sZXQgY29ucyB4IGwgPSB4IDo6IGxcblxubGV0IGlzX3NvcnRlZCBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDw9IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDwgMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICAoKiBzcGVjaWFsIGNhc2VzIHRvIHNwZWVkIHRoaW5ncyB1cCBpbiB0cml2aWFsIGNhc2VzICopXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0XG4gIHwgWyB4OyB5IF0gLT4gaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlIHRoZW4gWyB5OyB4IF0gZWxzZSBsaXN0XG4gIHwgXyAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBBcnJheV9wZXJtdXRlLnBlcm11dGUgYXJyIH5yYW5kb21fc3RhdGU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIGlmIGlzX2VtcHR5IGxpc3RcbiAgdGhlbiBmYWlsd2l0aCBcIkxpc3QucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBsaXN0XCJcbiAgZWxzZSBudGhfZXhuIGxpc3QgKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggbGlzdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSBsaXN0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCBuID0gY21wIHggeSBpblxuICAgIGlmIG4gPSAwIHRoZW4gY29tcGFyZSBjbXAgeHMgeXMgZWxzZSBuXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfbGlzdFxuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPVxuICBsZXQgcmVjIGxvb3AgfmVxdWFsIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IHgxIDo6IHQxLCB4MiA6OiB0MiAtPiBlcXVhbCB4MSB4MiAmJiBsb29wIH5lcXVhbCB0MSB0MlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIH5lcXVhbCB0MSB0MlxuOztcblxubGV0IHRyYW5zcG9zZSA9XG4gIGxldCByZWMgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0IGNvbHVtbl9hY2MgdHJpbW1lZCBmb3VuZF9lbXB0eSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW5fYWNjLCB0cmltbWVkLCBmb3VuZF9lbXB0eVxuICAgIHwgW10gOjogdGwgLT4gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCBjb2x1bW5fYWNjIHRyaW1tZWQgdHJ1ZVxuICAgIHwgKHggOjogeHMpIDo6IHRsIC0+XG4gICAgICBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsICh4IDo6IGNvbHVtbl9hY2MpICh4cyA6OiB0cmltbWVkKSBmb3VuZF9lbXB0eVxuICBpblxuICBsZXQgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzID0gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIFtdIFtdIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCByb3dzIGNvbHVtbnMgZG9fcmV2ID1cbiAgICBtYXRjaCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3Mgd2l0aFxuICAgIHwgW10sIFtdLCBfIC0+IFNvbWUgKHJldiBjb2x1bW5zKVxuICAgIHwgY29sdW1uLCB0cmltbWVkX3Jvd3MsIGZvdW5kX2VtcHR5IC0+XG4gICAgICBpZiBmb3VuZF9lbXB0eVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGlmIGRvX3JldiB0aGVuIHJldiBjb2x1bW4gZWxzZSBjb2x1bW4gaW5cbiAgICAgICAgbG9vcCB0cmltbWVkX3Jvd3MgKGNvbHVtbiA6OiBjb2x1bW5zKSAobm90IGRvX3JldikpXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXSB0cnVlXG47O1xuXG5leGNlcHRpb24gVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBvZiBpbnQgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc11cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBhcmcwX18wMzFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfaW50IGFyZzBfXzAzMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaXN0Lm1sLlRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNcIlxuICAgICAgICAgIDsgcmVzMF9fMDMyX1xuICAgICAgICAgIF1cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdHJhbnNwb3NlX2V4biBsID1cbiAgbWF0Y2ggdHJhbnNwb3NlIGwgd2l0aFxuICB8IFNvbWUgbCAtPiBsXG4gIHwgTm9uZSAtPiByYWlzZSAoVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyAobWFwIGwgfmY6bGVuZ3RoKSlcbjs7XG5cbmxldCBpbnRlcnNwZXJzZSB0IH5zZXAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT4geCA6OiBmb2xkX3JpZ2h0IHhzIH5pbml0OltdIH5mOihmdW4geSBhY2MgLT4gc2VwIDo6IHkgOjogYWNjKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcblxubGV0IGlzX3N1ZmZpeCBsaXN0IH5zdWZmaXggfmVxdWFsOmVxdWFsX2VsdCA9XG4gIGxldCBsaXN0X2xlbiA9IGxlbmd0aCBsaXN0IGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsaXN0X2xlbiA+PSBzdWZmaXhfbGVuICYmIGVxdWFsIGVxdWFsX2VsdCAoZHJvcCBsaXN0IChsaXN0X2xlbiAtIHN1ZmZpeF9sZW4pKSBzdWZmaXhcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBhcyBtYW55IHBsYWNlcyBhcyBwb3NzaWJsZS4gUGxlYXNlIGF2b2lkXG4gICBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9faW50ZlxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBFeG4gb2YgZXhuXG4gICAgfCBTZXhwIG9mIFNleHAudFxuICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24wLnQgb3B0aW9uXG4gICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHJlYyBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IGFyZzBfXzAwMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwMl8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvdWxkX25vdF9jb25zdHJ1Y3RcIjsgcmVzMF9fMDAyXyBdXG4gICAgICB8IFN0cmluZyBhcmcwX18wMDNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDRfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTdHJpbmdcIjsgcmVzMF9fMDA0XyBdXG4gICAgICB8IEV4biBhcmcwX18wMDVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDZfID0gc2V4cF9vZl9leG4gYXJnMF9fMDA1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeG5cIjsgcmVzMF9fMDA2XyBdXG4gICAgICB8IFNleHAgYXJnMF9fMDA3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA4XyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMDhfIF1cbiAgICAgIHwgVGFnX3NleHAgKGFyZzBfXzAwOV8sIGFyZzFfXzAxMF8sIGFyZzJfXzAxMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA5X1xuICAgICAgICBhbmQgcmVzMV9fMDEzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAxMF9cbiAgICAgICAgYW5kIHJlczJfXzAxNF8gPSBzZXhwX29mX29wdGlvbiBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGFyZzJfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfc2V4cFwiOyByZXMwX18wMTJfOyByZXMxX18wMTNfOyByZXMyX18wMTRfIF1cbiAgICAgIHwgVGFnX3QgKGFyZzBfXzAxNV8sIGFyZzFfXzAxNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE1X1xuICAgICAgICBhbmQgcmVzMV9fMDE4XyA9IHNleHBfb2ZfdCBhcmcxX18wMTZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ190XCI7IHJlczBfXzAxN187IHJlczFfXzAxOF8gXVxuICAgICAgfCBUYWdfYXJnIChhcmcwX18wMTlfLCBhcmcxX18wMjBfLCBhcmcyX18wMjFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxOV9cbiAgICAgICAgYW5kIHJlczFfXzAyM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMjBfXG4gICAgICAgIGFuZCByZXMyX18wMjRfID0gc2V4cF9vZl90IGFyZzJfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfYXJnXCI7IHJlczBfXzAyMl87IHJlczFfXzAyM187IHJlczJfXzAyNF8gXVxuICAgICAgfCBPZl9saXN0IChhcmcwX18wMjVfLCBhcmcxX18wMjZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfaW50IGFyZzBfXzAyNV9cbiAgICAgICAgYW5kIHJlczFfXzAyOF8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90IGFyZzFfXzAyNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2ZfbGlzdFwiOyByZXMwX18wMjdfOyByZXMxX18wMjhfIF1cbiAgICAgIHwgV2l0aF9iYWNrdHJhY2UgKGFyZzBfXzAyOV8sIGFyZzFfXzAzMF8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMzFfID0gc2V4cF9vZl90IGFyZzBfXzAyOV9cbiAgICAgICAgYW5kIHJlczFfXzAzMl8gPSBzZXhwX29mX3N0cmluZyBhcmcxX18wMzBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIldpdGhfYmFja3RyYWNlXCI7IHJlczBfXzAzMV87IHJlczFfXzAzMl8gXVxuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHJlYyB0b19zdHJpbmdzX2h1bSB0IGFjID1cbiAgICAoKiBXZSB1c2UgW1NleHAudG9fc3RyaW5nX21hY2hdLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGltcGxlbWVudGluZ1xuICAgICAgIFt0b19zdHJpbmdzX2h1bV0sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgaW5mbyB0byBmaXQgb24gYSBzaW5nbGUgbGluZSwgYW5kIG9uY2Ugd2UndmVcbiAgICAgICBoYWQgdG8gcmVzb3J0IHRvIHNleHBzLCB0aGUgbWVzc2FnZSBpcyBnb2luZyB0byBzdGFydCBub3QgbG9va2luZyBzbyBwcmV0dHlcbiAgICAgICBhbnl3YXkuICopXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IHNleHAgLT5cbiAgICAgIFwiY291bGQgbm90IGNvbnN0cnVjdCBpbmZvOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IFNleHAudG9fc3RyaW5nX21hY2ggKEV4bi5zZXhwX29mX3QgZXhuKSA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgXykgLT4gdGFnIDo6IFwiOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IHRhZyA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWMgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIGJvZHkgZWxzZSB0YWcgOjogXCI6IFwiIDo6IGJvZHlcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICB0b19zdHJpbmdzX2h1bSB0IChcIlxcbkJhY2t0cmFjZTpcXG5cIiA6OiBiYWNrdHJhY2UgOjogYWMpXG4gICAgfCBPZl9saXN0ICh0cnVuY19hZnRlciwgdHMpIC0+XG4gICAgICBsZXQgdHMgPVxuICAgICAgICBtYXRjaCB0cnVuY19hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0c1xuICAgICAgICB8IFNvbWUgbWF4IC0+XG4gICAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCB0cyBpblxuICAgICAgICAgIGlmIG4gPD0gbWF4XG4gICAgICAgICAgdGhlbiB0c1xuICAgICAgICAgIGVsc2UgTGlzdC50YWtlIHRzIG1heCBAIFsgU3RyaW5nIChQcmludGYuc3ByaW50ZiBcImFuZCAlZCBtb3JlIGluZm9cIiAobiAtIG1heCkpIF1cbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT5cbiAgICAgICAgdG9fc3RyaW5nc19odW0gdCAoaWYgTGlzdC5pc19lbXB0eSBhYyB0aGVuIGFjIGVsc2UgXCI7IFwiIDo6IGFjKSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBTdHJpbmcuY29uY2F0ICh0b19zdHJpbmdzX2h1bSB0IFtdKVxuXG4gIGxldCByZWMgdG9fc2V4cHNfaHVtIHQgYWMgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBfIGFzIHQgLT4gc2V4cF9vZl90IHQgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gQXRvbSBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gRXhuLnNleHBfb2ZfdCBleG4gOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBoZXJlKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoQXRvbSB0YWdcbiAgICAgICAgIDo6IHNleHBcbiAgICAgICAgIDo6XG4gICAgICAgICAobWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGhlcmUgLT4gWyBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmUgXSkpXG4gICAgICA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gTGlzdCAoQXRvbSB0YWcgOjogdG9fc2V4cHNfaHVtIHQgW10pIDo6IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IHNleHAgOjogdG9fc2V4cHNfaHVtIHQgW10gaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIExpc3QgYm9keSA6OiBhYyBlbHNlIExpc3QgKEF0b20gdGFnIDo6IGJvZHkpIDo6IGFjXG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgU2V4cC5MaXN0IFsgdG9fc2V4cF9odW0gdDsgU2V4cC5BdG9tIGJhY2t0cmFjZSBdIDo6IGFjXG4gICAgfCBPZl9saXN0IChfLCB0cykgLT5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPiB0b19zZXhwc19odW0gdCBhYylcblxuICBhbmQgdG9fc2V4cF9odW0gdCA9XG4gICAgbWF0Y2ggdG9fc2V4cHNfaHVtIHQgW10gd2l0aFxuICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgIHwgc2V4cHMgLT4gU2V4cC5MaXN0IHNleHBzXG4gIDs7XG5cbiAgKCogV2UgdXNlIFtwcm90ZWN0XSB0byBndWFyZCBhZ2FpbnN0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHVzZXItc3VwcGxpZWQgZnVuY3Rpb25zLCBzb1xuICAgICB0aGF0IGZhaWx1cmUgdG8gcHJvZHVjZSBvbmUgcGFydCBvZiBhbiBpbmZvIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgcGFydHMuICopXG4gIGxldCBwcm90ZWN0IGYgPVxuICAgIHRyeSBmICgpIHdpdGhcbiAgICB8IGV4biAtPiBDb3VsZF9ub3RfY29uc3RydWN0IChFeG4uc2V4cF9vZl90IGV4bilcbiAgOztcblxuICBsZXQgb2ZfaW5mbyBpbmZvID0gcHJvdGVjdCAoZnVuICgpIC0+IExhenkuZm9yY2UgaW5mbylcbiAgbGV0IHRvX2luZm8gdCA9IGxhenkgdFxuZW5kXG5cbm9wZW4gTWVzc2FnZVxuXG50eXBlIHQgPSBNZXNzYWdlLnQgTGF6eS50XG5cbmxldCBpbnZhcmlhbnQgXyA9ICgpXG5sZXQgdG9fbWVzc2FnZSA9IE1lc3NhZ2Uub2ZfaW5mb1xubGV0IG9mX21lc3NhZ2UgPSBNZXNzYWdlLnRvX2luZm9cblxuKCogSXQgaXMgT0sgdG8gdXNlIFtNZXNzYWdlLnRvX3NleHBfaHVtXSwgd2hpY2ggaXMgbm90IHN0YWJsZSwgYmVjYXVzZSBbdF9vZl9zZXhwXSBiZWxvd1xuICAgY2FuIGhhbmRsZSBhbnkgc2V4cC4gKilcbmxldCBzZXhwX29mX3QgdCA9IE1lc3NhZ2UudG9fc2V4cF9odW0gKHRvX21lc3NhZ2UgdClcbmxldCB0X29mX3NleHAgc2V4cCA9IGxhenkgKE1lc3NhZ2UuU2V4cCBzZXhwKVxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gQW55IFwiSW5mby50XCIgfVxubGV0IGNvbXBhcmUgdDEgdDIgPSBTZXhwLmNvbXBhcmUgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBlcXVhbCB0MSB0MiA9IFNleHAuZXF1YWwgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gU2V4cC5oYXNoX2ZvbGRfdCBzdGF0ZSAoc2V4cF9vZl90IHQpXG5sZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuXG5sZXQgdG9fc3RyaW5nX2h1bSB0ID1cbiAgbWF0Y2ggdG9fbWVzc2FnZSB0IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBzXG4gIHwgbWVzc2FnZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gKE1lc3NhZ2UudG9fc2V4cF9odW0gbWVzc2FnZSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IE1lc3NhZ2UudG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkICh0b19tZXNzYWdlIHQpXG5sZXQgdG9fc3RyaW5nX21hY2ggdCA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfdCB0KVxubGV0IG9mX2xhenkgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfc2V4cCBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFNleHAgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfdCBsYXp5X3QgPSBMYXp5LmpvaW4gbGF6eV90XG5sZXQgb2Zfc3RyaW5nIG1lc3NhZ2UgPSBMYXp5LmZyb21fdmFsIChTdHJpbmcgbWVzc2FnZSlcbmxldCBjcmVhdGVmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBvZl9zdHJpbmcgZm9ybWF0XG5sZXQgb2ZfdGh1bmsgZiA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKGYgKCkpKSlcblxubGV0IGNyZWF0ZSA/aGVyZSA/c3RyaWN0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIG1hdGNoIHN0cmljdCB3aXRoXG4gIHwgTm9uZSAtPiBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKSlcbiAgfCBTb21lICgpIC0+IG9mX21lc3NhZ2UgKFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoU2V4cCBzZXhwKVxubGV0IHRhZyB0IH50YWcgPSBsYXp5IChUYWdfdCAodGFnLCB0b19tZXNzYWdlIHQpKVxuXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAoXCJcIiwgTGF6eS5mb3JjZSB0YWcsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IHRhZ19zIHQgfnRhZyA9IHRhZ19zX2xhenkgdCB+dGFnOihMYXp5LmZyb21fdmFsIHRhZylcblxubGV0IHRhZ19hcmcgdCB0YWcgeCBzZXhwX29mX3ggPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAodGFnLCBzZXhwX29mX3ggeCwgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgb2ZfbGlzdCA/dHJ1bmNfYWZ0ZXIgdHMgPSBsYXp5IChPZl9saXN0ICh0cnVuY19hZnRlciwgTGlzdC5tYXAgdHMgfmY6dG9fbWVzc2FnZSkpXG5cbmV4Y2VwdGlvbiBFeG4gb2YgdFxuXG5sZXQgKCkgPVxuICAoKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlXG4gICAgIFtleGNlcHRpb24gRXhuIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdIC4uLiBbQEBAZW5kXV0gdG8gZWxpbWluYXRlIHRoZSBleHRyYVxuICAgICB3cmFwcGluZyBvZiBcIihFeG4gLi4uKVwiLiAqKVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhuXSAoZnVuY3Rpb25cbiAgICB8IEV4biB0IC0+IHNleHBfb2ZfdCB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB0b19leG4gdCA9XG4gIGlmIG5vdCAoTGF6eS5pc192YWwgdClcbiAgdGhlbiBFeG4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBMYXp5LmZvcmNlIHQgd2l0aFxuICAgIHwgTWVzc2FnZS5FeG4gZXhuIC0+IGV4blxuICAgIHwgXyAtPiBFeG4gdClcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPVxuICBsZXQgYmFja3RyYWNlID1cbiAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGBHZXQgLT4gU29tZSAoQ2FtbC5QcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICAgIHwgU29tZSAoYFRoaXMgcykgLT4gU29tZSBzXG4gIGluXG4gIG1hdGNoIGV4biwgYmFja3RyYWNlIHdpdGhcbiAgfCBFeG4gdCwgTm9uZSAtPiB0XG4gIHwgRXhuIHQsIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlICh0b19tZXNzYWdlIHQsIGJhY2t0cmFjZSkpXG4gIHwgXywgTm9uZSAtPiBMYXp5LmZyb21fdmFsIChNZXNzYWdlLkV4biBleG4pXG4gIHwgXywgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKFNleHAgKEV4bi5zZXhwX29mX3QgZXhuKSwgYmFja3RyYWNlKSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW5mb1wiXG4gICAgbGV0IHBwIHBwZiB0ID0gQ2FtbC5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nX2h1bSB0KVxuICBlbmQpXG5cbm1vZHVsZSBJbnRlcm5hbF9yZXByID0gTWVzc2FnZVxuXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtFcnJvcl0gYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcy4gIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3XG4gICBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvXG5cbmxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJFcnJvci50XCIgfVxubGV0IHJhaXNlIHQgPSByYWlzZSAodG9fZXhuIHQpXG5sZXQgcmFpc2VfcyBzZXhwID0gcmFpc2UgKGNyZWF0ZV9zIHNleHApXG5sZXQgdG9faW5mbyB0ID0gdFxubGV0IG9mX2luZm8gdCA9IHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FcnJvclwiXG4gICAgbGV0IHBwID0gcHBcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludmFyaWFudF9pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5sZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA6IHVuaXQgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJcIiwgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlXG4gICAgICAgICA7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4blxuICAgICAgICAgOyBcIlwiLCBzZXhwX29mX3QgdFxuICAgICAgICAgXSlcbjs7XG5cbmxldCBjaGVja19maWVsZCB0IGYgZmllbGQgPVxuICB0cnkgZiAoRmllbGQuZ2V0IGZpZWxkIHQpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcInByb2JsZW0gd2l0aCBmaWVsZFwiXG4gICAgICAgICBbIFwiZmllbGRcIiwgc2V4cF9vZl9zdHJpbmcgKEZpZWxkLm5hbWUgZmllbGQpOyBcImV4blwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIFJlc3VsdCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBSZXN1bHRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIEVycm9yIDo9IFJlc3VsdC5FcnJvcilcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT4gUmVzdWx0LmNvbXBhcmUgX2NtcF9fYSBFcnJvci5jb21wYXJlIGFfXzAwMV8gYl9fMDAyX1xuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPiBSZXN1bHQuZXF1YWwgX2NtcF9fYSBFcnJvci5lcXVhbCBhX18wMDdfIGJfXzAwOF9cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA6XG4gICdhLlxuICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gIC0+ICdhIHRcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBoc3YgYXJnIC0+IFJlc3VsdC5oYXNoX2ZvbGRfdCBfaGFzaF9mb2xkX2EgRXJyb3IuaGFzaF9mb2xkX3QgaHN2IGFyZ1xuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDEzXyB4X18wMTVfIC0+IFJlc3VsdC50X29mX3NleHAgX29mX2FfXzAxM18gRXJyb3IudF9vZl9zZXhwIHhfXzAxNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxNl8geF9fMDE3XyAtPiBSZXN1bHQuc2V4cF9vZl90IF9vZl9hX18wMTZfIEVycm9yLnNleHBfb2ZfdCB4X18wMTdfXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZXN1bHQudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hciBFcnJvci50X3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IuaW52YXJpYW50IGVycm9yXG47O1xuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIFJlc3VsdC5jb21iaW5lIGYgeCB+b2s6KGZ1biBmIHggLT4gZiB4KSB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxubGV0IG9rID0gUmVzdWx0Lm9rXG5sZXQgaXNfb2sgPSBSZXN1bHQuaXNfb2tcbmxldCBpc19lcnJvciA9IFJlc3VsdC5pc19lcnJvclxuXG5sZXQgdHJ5X3dpdGggPyhiYWNrdHJhY2UgPSBmYWxzZSkgZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4biA/YmFja3RyYWNlOihpZiBiYWNrdHJhY2UgdGhlbiBTb21lIGBHZXQgZWxzZSBOb25lKSlcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9iYWNrdHJhY2UgZiA9IGpvaW4gKHRyeV93aXRoID9iYWNrdHJhY2UgZilcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXJyIC0+IEVycm9yLnJhaXNlIGVyclxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IEVycm9yIChFcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5cbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgPSBmdW5jdGlvblxuICB8IE9rIF8gYXMgeiAtPiB6XG4gIHwgRXJyb3IgZXhuIC0+IG9mX2V4biA/YmFja3RyYWNlIGV4blxuOztcblxubGV0IGVycm9yID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIEVycm9yIChFcnJvci5jcmVhdGUgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGVycm9yX3Mgc2V4cCA9IEVycm9yIChFcnJvci5jcmVhdGVfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtZXNzYWdlID0gRXJyb3IgKEVycm9yLm9mX3N0cmluZyBtZXNzYWdlKVxubGV0IGVycm9yZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KGZ1biBlIC0+IEVycm9yLnRhZ19hcmcgZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgcyA9IGVycm9yIFwidW5pbXBsZW1lbnRlZFwiIHMgc2V4cF9vZl9zdHJpbmdcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gUmVzdWx0Lm1hcF9lcnJvciAoUmVzdWx0LmNvbWJpbmVfZXJyb3JzIGwpIH5mOkVycm9yLm9mX2xpc3RcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBSZXN1bHQubWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QucGFydGl0aW9uX21hcCBsIH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgbWF0Y2ggb2sgd2l0aFxuICB8IFtdIC0+IEVycm9yIChFcnJvci5vZl9saXN0IGVycnMpXG4gIHwgXyAtPiBPayBva1xuOztcblxubGV0IGZpbmRfb2sgbCA9XG4gIG1hdGNoIExpc3QuZmluZF9tYXAgbCB+ZjpSZXN1bHQub2sgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE9rIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSlcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICAgICAgfCBPayBfIGFzIHggLT4gcmV0dXJuIHhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKSlcbjs7XG5cbmxldCBtYXAgPSBSZXN1bHQubWFwXG5sZXQgaXRlciA9IFJlc3VsdC5pdGVyXG5sZXQgaXRlcl9lcnJvciA9IFJlc3VsdC5pdGVyX2Vycm9yXG4iLCIoKiBUaGlzIGlzIGJyb2tlbiBvZmYgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIFNpZ24gYW5kIENvbXBhcmFibGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5lZ1xuICB8IFplcm9cbiAgfCBQb3NcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxubGV0IHRfb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMDNfID0gXCJzaWduMC5tbC50XCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIC0+IE5lZ1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBzZXhwX18wMDJfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuOztcblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG5sZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IE5lZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvcyBdIDogdCBsaXN0KVxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxubGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTFcbiAgfCBaZXJvIC0+IDBcbiAgfCBQb3MgLT4gMVxuOztcblxubGV0IF8gPSBoYXNoXG5cbigqIElnbm9yZSB0aGUgaGFzaCBmdW5jdGlvbiBwcm9kdWNlZCBieSBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaF0gKilcbmxldCBoYXNoID0gdG9faW50XG5sZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuU2lnblwiXG5sZXQgb2ZfaW50IG4gPSBpZiBuIDwgMCB0aGVuIE5lZyBlbHNlIGlmIG4gPSAwIHRoZW4gWmVybyBlbHNlIFBvc1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUXG5cbiAgbGV0IGlzX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+IDBcbiAgbGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPj0gMFxuICBsZXQgaXNfbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDwgMFxuICBsZXQgaXNfbm9uX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8PSAwXG4gIGxldCBzaWduIHQgPSBTaWduMC5vZl9pbnQgKGNvbXBhcmUgdCB6ZXJvKVxuZW5kXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgUG9seVxuICBlbmRcblxuICBpbmNsdWRlIFBvbHlcblxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcblxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuZW5kXG5cbmxldCBndCBjbXAgYSBiID0gY21wIGEgYiA+IDBcbmxldCBsdCBjbXAgYSBiID0gY21wIGEgYiA8IDBcbmxldCBnZXEgY21wIGEgYiA9IGNtcCBhIGIgPj0gMFxubGV0IGxlcSBjbXAgYSBiID0gY21wIGEgYiA8PSAwXG5sZXQgZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPSAwXG5sZXQgbm90X2VxdWFsIGNtcCBhIGIgPSBjbXAgYSBiIDw+IDBcbmxldCBtaW4gY21wIHQgdCcgPSBpZiBsZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcbmxldCBtYXggY21wIHQgdCcgPSBpZiBnZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcblxubW9kdWxlIEluZml4IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBJbmZpeCB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbGV0ICggPiApIGEgYiA9IGd0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPCApIGEgYiA9IGx0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPj0gKSBhIGIgPSBnZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PSApIGEgYiA9IGxlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoID0gKSBhIGIgPSBlcXVhbCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw+ICkgYSBiID0gbm90X2VxdWFsIFQuY29tcGFyZSBhIGJcbmVuZFxuXG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeCAoVClcblxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgbWluIHQgdCcgPSBtaW4gY29tcGFyZSB0IHQnXG4gIGxldCBtYXggdCB0JyA9IG1heCBjb21wYXJlIHQgdCdcbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyYXRvci5jb21wYXJlXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gUG9seW1vcnBoaWNfY29tcGFyZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB0IHQnID0gY29tcGFyZSB0JyB0XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICAgICAgW0BAQGVuZF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG4oKiBjb21wYXJlIFt4XSBhbmQgW3ldIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGZ1bmN0aW9ucyBpbiB0aGUgbGlzdCBbY21wc10gKilcbmxldCBsZXhpY29ncmFwaGljIGNtcHMgeCB5ID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IGNtcCA6OiBjbXBzIC0+XG4gICAgICBsZXQgcmVzID0gY21wIHggeSBpblxuICAgICAgaWYgcmVzID0gMCB0aGVuIGxvb3AgY21wcyBlbHNlIHJlc1xuICAgIHwgW10gLT4gMFxuICBpblxuICBsb29wIGNtcHNcbjs7XG5cbmxldCBsaWZ0IGNtcCB+ZiB4IHkgPSBjbXAgKGYgeCkgKGYgeSlcbmxldCByZXZlcnNlIGNtcCB4IHkgPSBjbXAgeSB4XG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoYWJsZS5LZXkgKilcbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuXG4gICgqKiBWYWx1ZXMgcmV0dXJuZWQgYnkgW2hhc2hdIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGluIHRoZVxuICAgICAgY2FzZSB0aGF0IFtoYXNoXSByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICopXG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICAoKiogVGhpcyBmdW5jdGlvbiBpcyBzb3VuZCBidXQgbm90IGNvbXBsZXRlLCBtZWFuaW5nIHRoYXQgaWYgaXQgcmV0dXJucyBbdHJ1ZV0gdGhlbiBpdCdzXG4gICAgICBzYWZlIHRvIHVzZSB0aGUgdHdvIGludGVyY2hhbmdlYWJseS4gIElmIGl0J3MgW2ZhbHNlXSwgeW91IGhhdmUgbm8gZ3VhcmFudGVlcy4gIEZvclxuICAgICAgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgPiB1dG9wXG4gICAgICAgIG9wZW4gQ29yZTs7XG4gICAgICAgIGxldCBlcXVhbCAoYSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KSBiID1cbiAgICAgICAgICBwaHlzX2VxdWFsIGEgYlxuICAgICAgICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gICAgICAgIDs7XG4gICAgICAgIGxldCBhID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgbGV0IGIgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBlcXVhbCBhIGI7OyAgKCogZmFsc2U/ISAqKVxuICAgICAgXX1cbiAgKilcbiAgbGV0IGVxdWFsIGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBoYXNoX3BhcmFtID0gQ2FtbC5IYXNodGJsLmhhc2hfcGFyYW1cbiAgbGV0IGhhc2ggPSBDYW1sLkhhc2h0YmwuaGFzaFxuICBsZXQgcG9seSA9IHsgaGFzaDsgY29tcGFyZSA9IFBvbHkuY29tcGFyZTsgc2V4cF9vZl90ID0gKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgfVxuXG4gIGxldCBvZl9rZXkgKHR5cGUgYSkgKG1vZHVsZSBLZXkgOiBLZXkgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgeyBoYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gIDs7XG5cbiAgbGV0IHRvX2tleSAodHlwZSBhKSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZCA6IEtleVxuICAgICAgd2l0aCB0eXBlIHQgPSBhKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgSGFzaGFibGVcblxubW9kdWxlIHR5cGUgSGFzaGFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSGFzaGFibGUudCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHBvbHkgOiAnYSB0XG4gIHZhbCBvZl9rZXkgOiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKSAtPiAnYSB0XG4gIHZhbCB0b19rZXkgOiAnYSB0IC0+IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpXG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUIDogQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBBcmdfd2l0aF9jb21wYXJhdG9yKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgYWxsID0gKFsgKCkgXSA6IHQgbGlzdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3VuaXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3VuaXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHVuaXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdW5pdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB1bml0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGNvbXBhcmUgXyBfID0gMFxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCIoKVwiIC0+ICgpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQmFzZS5Vbml0Lm9mX3N0cmluZzogKCkgZXhwZWN0ZWRcIlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVuaXRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxubGV0IGludmFyaWFudCAoKSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBcblxubGV0IGdldF9wb3NfbGVuID9wb3MgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgdHJ5IFJlc3VsdC5PayAoZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgYSBzZWFyY2ggZm9yIHRoZSBmaXJzdCAocmVzcC4gbGFzdCkgZWxlbWVudFxuICAgc2F0aXNmeWluZyBhIHByZWRpY2F0ZSwgYXNzdW1pbmcgdGhhdCB0aGUgcHJlZGljYXRlIGlzIGluY3JlYXNpbmcgb25cbiAgIHRoZSBjb250YWluZXIsIG1lYW5pbmcgdGhhdCwgaWYgdGhlIGNvbnRhaW5lciBpcyBbdTEuLi51bl0sIHRoZXJlIGV4aXN0cyBhXG4gICBrIHN1Y2ggdGhhdCBwKHUxKT0uLi4uPXAodWspID0gZmFsc2UgYW5kIHAodWsrMSk9Li4uLj1wKHVuKT0gdHJ1ZS5cbiAgIElmIHRoaXMgayA9IDEgKHJlc3AgbiksIGZpbmRfbGFzdF9ub3Rfc2F0aXNmeWluZyAocmVzcCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcpXG4gICB3aWxsIHJldHVybiBOb25lLiAqKVxuXG5sZXQgcmVjIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gIGlmIGxvID4gaGlcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgcHJlZCAoZ2V0IHQgbG8pXG4gIHRoZW4gU29tZSBsb1xuICBlbHNlIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihsbyArIDEpIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYSBjb250YWluZXIgW3RdLCBhIHByZWRpY2F0ZSBbcHJlZF0gYW5kIHR3byBpbmRpY2VzIFtsbyA8IGhpXSwgc3VjaCB0aGF0XG4gICBbcHJlZF0gaXMgaW5jcmVhc2luZyBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLlxuXG4gICByZXR1cm4gYSByYW5nZSAobG8sIGhpKSB3aGVyZTpcbiAgIC0gbG8gYW5kIGhpIGFyZSBjbG9zZSBlbm91Z2ggdG9nZXRoZXIgZm9yIGEgbGluZWFyIHNlYXJjaFxuICAgLSBJZiBbcHJlZF0gaXMgbm90IGNvbnN0YW50bHkgW2ZhbHNlXSBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICBvbiB3aGljaCBbcHJlZF0gaXMgW3RydWVdIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXS4gKilcbigqIEludmFyaWFudDogdGhlIGZpcnN0IGVsZW1lbnQgc2F0aXNmeWluZyBbcHJlZF0sIGlmIGl0IGV4aXN0cyBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0gKilcbmxldCByZWMgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICAoKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHRlcm1pbmF0ZSBpZiB0aGUgY29uc3RhbnQgKGN1cnJlbnRseSA4KSBpc1xuICAgICBzZXQgPD0gMSAqKVxuICBpZiBoaSAtIGxvIDw9IDhcbiAgdGhlbiBsbywgaGlcbiAgZWxzZSAoXG4gICAgbGV0IG1pZCA9IGxvICsgKChoaSAtIGxvKSAvIDIpIGluXG4gICAgaWYgcHJlZCAoZ2V0IHQgbWlkKVxuICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCBpcyBiZXR3ZWVuIFtsb10gYW5kIFttaWRdICopXG4gICAgdGhlblxuICAgICAgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGk6bWlkIH5wcmVkXG4gICAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQsIGlmIGl0IGV4aXN0cyxcbiAgICAgICAgIGlzIGJldHdlZW4gW21pZCsxXSBhbmQgW2hpXSAqKVxuICAgIGVsc2UgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobWlkICsgMSkgfmhpIH5wcmVkKVxuOztcblxubGV0IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxvID0gcG9zIGluXG4gIGxldCBoaSA9IHBvcyArIGxlbiAtIDEgaW5cbiAgbGV0IGxvLCBoaSA9IGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkIGluXG4gIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYW4gYXJyYXkgd2l0aCBzaGFwZSBbdHJ1ZSwuLi50cnVlLGZhbHNlLC4uLmZhbHNlXSAoaS5lLiwgdGhlIF9yZXZlcnNlXyBvZiB3aGF0XG4gICBpcyBkZXNjcmliZWQgYWJvdmUpIGFuZCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cnVlIG9yIE5vbmUgaWYgdGhlcmUgYXJlIG5vXG4gICB0cnVlKilcbmxldCBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+cHJlZCB+Z2V0IH5sZW5ndGggPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgKCogVGhlIGxhc3Qgc2F0aXNmeWluZyBpcyB0aGUgb25lIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBub3Qgc2F0aXNmeWluZyAqKVxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB+cG9zIH5sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KEZuLm5vbiBwcmVkKSB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgKCogVGhpcyBtZWFucyB0aGF0IGFsbCBlbGVtZW50cyBzYXRpc2Z5IHByZWQuXG4gICAgICAgVGhlcmUgaXMgYXQgbGVhc3QgYW4gZWxlbWVudCBhcyAobGVuID4gMCkgKilcbiAgICB8IFNvbWUgaSB3aGVuIGkgPSBwb3MgLT4gTm9uZSAoKiBubyBlbGVtZW50IHNhdGlzZmllcyBwcmVkICopXG4gICAgfCBTb21lIGkgLT4gU29tZSAoaSAtIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5jb21wYXJlIGhvdyB2ID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMClcbiAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgaXNfbGVmdCB4ID1cbiAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gIGluXG4gIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfbGVmdFxuICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX3JpZ2h0XG47O1xuIiwiKCoqIE1vZHVsZSB0eXBlcyBmb3IgYSBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb24gZm9yIGEgc2VxdWVuY2UsIGFuZCBmdW5jdG9ycyBmb3IgYnVpbGRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIEFuIFtJbmRleGFibGVdIHR5cGUgaXMgYSBmaW5pdGUgc2VxdWVuY2Ugb2YgZWxlbWVudHMgaW5kZXhlZCBieSBjb25zZWN1dGl2ZSBpbnRlZ2Vyc1xuICAgIFswXSAuLi4gW2xlbmd0aCB0IC0gMV0uICBbZ2V0XSBhbmQgW2xlbmd0aF0gbXVzdCBiZSBPKDEpIGZvciB0aGUgcmVzdWx0aW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIHRvIGJlIGxnKG4pLiAqKVxubW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBlbHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID1cbiAgICAoWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgOyBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgTGFzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgIF1cbiAgICAgOiB0IGxpc3QpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X29uX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID0gKFsgYExhc3Rfb25fbGVmdDsgYEZpcnN0X29uX3JpZ2h0IF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG50eXBlICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IGNvbXBhcmU6KCdlbHQgLT4gJ2tleSAtPiBpbnQpXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9rZXkudFxuICAtPiAna2V5XG4gIC0+IGludCBvcHRpb25cblxudHlwZSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gc2VnbWVudF9vZjooJ2VsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgLT4gaW50IG9wdGlvblxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICh0LCBlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICh0LCBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhKSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJpbmFyeV9zZWFyY2hhYmxlID0gc2lnXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gSW5kZXhhYmxlXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBJbmRleGFibGUxXG5cbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBXaGljaF90YXJnZXRfYnlfa2V5XG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50XG5cbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID0gKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgd2l0aCB0eXBlIGVsdCA6PSBULmVsdFxuICBtb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIGVsdFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgbGV0IGdldCA9IFQuZ2V0XG4gIGxldCBsZW5ndGggPSBULmxlbmd0aFxuXG4gIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5jb21wYXJlIGhvdyB2XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgdHlwZSAnYSBlbHQgPSBULmVsdFxuICAgIHR5cGUgJ2EgdCA9IFQudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBnZXQgPSBULmdldFxuICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNlcXVlbmNlX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlblxuICAgIChTcmMgOiBTZXF1ZW5jZV9nZW4pIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSBTcmMudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIFNyYy50LCAnYSB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCB1bnNhZmVfYmxpdCA9IERzdC51bnNhZmVfYmxpdFxuXG4gIGxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOnNyY19wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOmRzdF9wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KERzdC5sZW5ndGggZHN0KTtcbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgOztcblxuICBsZXQgYmxpdG9cbiAgICAgICAgfnNyY1xuICAgICAgICA/KHNyY19wb3MgPSAwKVxuICAgICAgICA/KHNyY19sZW4gPSBTcmMubGVuZ3RoIHNyYyAtIHNyY19wb3MpXG4gICAgICAgIH5kc3RcbiAgICAgICAgPyhkc3RfcG9zID0gMClcbiAgICAgICAgKClcbiAgICA9XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW46c3JjX2xlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgKCogW3N1Yl0gYW5kIFtzdWJvXSBlbnN1cmUgdGhhdCBldmVyeSBwb3NpdGlvbiBvZiB0aGUgY3JlYXRlZCBzZXF1ZW5jZSBpcyBwb3B1bGF0ZWQgYnlcbiAgICAgYW4gZWxlbWVudCBvZiB0aGUgc291cmNlIGFycmF5LiAgVGh1cyBldmVyeSBlbGVtZW50IG9mIFtkc3RdIGJlbG93IGlzIHdlbGxcbiAgICAgZGVmaW5lZC4gKilcbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgbGV0IGRzdCA9IERzdC5jcmVhdGVfbGlrZSB+bGVuIHNyYyBpblxuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgICBzdWJcbiAgICAgIHNyY1xuICAgICAgfnBvc1xuICAgICAgfmxlbjpcbiAgICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICB8IE5vbmUgLT4gU3JjLmxlbmd0aCBzcmMgLSBwb3MpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBibGl0XG4gIGVuZCkgPVxuICBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlIDogU2VxdWVuY2UxKSA9IE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFNlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gU2VxdWVuY2UudFxuXG4gICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RcbiAgICAoU3JjIDogU2VxdWVuY2UpIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKFNyYy50LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gU3JjLnRcblxuICAgICAgb3BlbiBTcmNcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBEc3QudFxuXG4gICAgICBvcGVuIERzdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gICAgZW5kKVxuXG5tb2R1bGUgTWFrZV90b19zdHJpbmcgKFQgOiBzaWdcbiAgICB0eXBlIHRcbiAgZW5kKVxuICAgIChUb19ieXRlcyA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBULnQgd2l0aCB0eXBlIGRzdCA6PSBieXRlcykgPVxuc3RydWN0XG4gIG9wZW4gVG9fYnl0ZXNcblxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWIgc3JjIH5wb3MgfmxlbilcbiAgOztcblxuICBsZXQgc3VibyA/cG9zID9sZW4gc3JjID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3VibyA/cG9zID9sZW4gc3JjKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfb3B0aW9uXG5cbiAgbGV0IGhhc2hfZm9sZF90IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGhhc2hfZm9sZF9vcHRpb25cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgICBvcHRpb25fb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIHNleHBfb2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBvcHRpb25fc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgfCBOb25lXG4gIHwgU29tZSBvZiAnYVxuXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NvbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHZhbHVlX21hcCBvIH5kZWZhdWx0IH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuOztcblxubGV0IGl0ZXIgbyB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxuXG5sZXQgY2FsbCB4IH5mID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmIHhcbjs7XG5cbmxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCB2YWx1ZV9leG4gP2hlcmUgP2Vycm9yID9tZXNzYWdlIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggaGVyZSwgZXJyb3IsIG1lc3NhZ2Ugd2l0aFxuICAgICAgfCBOb25lLCBOb25lLCBOb25lIC0+IEVycm9yLm9mX3N0cmluZyBcIk9wdGlvbi52YWx1ZV9leG4gTm9uZVwiXG4gICAgICB8IE5vbmUsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5vZl9zdHJpbmcgbVxuICAgICAgfCBOb25lLCBTb21lIGUsIE5vbmUgLT4gZVxuICAgICAgfCBOb25lLCBTb21lIGUsIFNvbWUgbSAtPiBFcnJvci50YWcgZSB+dGFnOm1cbiAgICAgIHwgU29tZSBwLCBOb25lLCBOb25lIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSBcIk9wdGlvbi52YWx1ZV9leG5cIiBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBOb25lLCBTb21lIG0gLT4gRXJyb3IuY3JlYXRlIG0gcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgU29tZSBlLCBfIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICh2YWx1ZSBtZXNzYWdlIH5kZWZhdWx0OlwiXCIpXG4gICAgICAgICAgKGUsIHApXG4gICAgICAgICAgKHNleHBfb2ZfcGFpciBFcnJvci5zZXhwX29mX3QgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdClcbiAgICBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgdmFsdWVfb3JfdGh1bmsgbyB+ZGVmYXVsdCA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0ICgpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgeCAtPiBbfCB4IHxdXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgeCAtPiBbIHggXVxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZTpfID0gdFxubGV0IG1heF9lbHQgdCB+Y29tcGFyZTpfID0gdFxuXG5sZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICB2YWx1ZV9tYXAgdCB+ZGVmYXVsdDpNLnplcm8gfmZcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYScgLT4gZXF1YWwgYSBhJ1xuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBfIC0+IDFcbjs7XG5cbmxldCBpc19lbXB0eSA9IGlzX25vbmVcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgeCAtPiBmIGluaXQgeFxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGEgLT4gaWYgZiBhIHRoZW4gMSBlbHNlIDBcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gaWYgZiB4IHRoZW4gdCBlbHNlIE5vbmVcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGVxdWFsIGYgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeCcgLT4gZiB4IHgnXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNvbWUgeCA9IFNvbWUgeFxuXG5sZXQgZmlyc3Rfc29tZSB4IHkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIF8gLT4geFxuICB8IE5vbmUgLT4geVxuOztcblxubGV0IHNvbWVfaWYgY29uZCB4ID0gaWYgY29uZCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcblxubGV0IG1lcmdlIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChmIGEgYilcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgdiBhcyBvIHdoZW4gZiB2IC0+IG9cbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbjs7XG5cbmxldCBhcHBseSBmIHggPVxuICBtYXRjaCBmIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGYgLT4gbWFwIH5mIHhcbjs7XG5cbm1vZHVsZSBNb25hZF9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBhcHBseSA9IGFwcGx5XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBiaW5kIG8gfmYgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChNb25hZF9hcmcpXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKE1vbmFkX2FyZylcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZVxuXG5tb2R1bGUgT2Zfc2V4cGFibGVcbiAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTFcbiAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUyXG4gICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlM1xuICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3N0cmluZ2FibGUgKE0gOiBTdHJpbmdhYmxlLlMpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBFaXRoZXJfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBFaXRoZXIwXG5cbmxldCBzd2FwID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IFNlY29uZCB4XG4gIHwgU2Vjb25kIHggLT4gRmlyc3QgeFxuOztcblxubGV0IGlzX2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IHRydWVcbiAgfCBTZWNvbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NlY29uZCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiBmYWxzZVxuICB8IFNlY29uZCBfIC0+IHRydWVcbjs7XG5cbmxldCB2YWx1ZSAoRmlyc3QgeCB8IFNlY29uZCB4KSA9IHhcblxubGV0IHZhbHVlX21hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBmaXJzdCB4XG4gIHwgU2Vjb25kIHggLT4gc2Vjb25kIHhcbjs7XG5cbmxldCBpdGVyID0gdmFsdWVfbWFwXG5cbmxldCBtYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gRmlyc3QgKGZpcnN0IHgpXG4gIHwgU2Vjb25kIHggLT4gU2Vjb25kIChzZWNvbmQgeClcbjs7XG5cbmxldCBmaXJzdCB4ID0gRmlyc3QgeFxubGV0IHNlY29uZCB4ID0gU2Vjb25kIHhcblxubGV0IGVxdWFsIGVxMSBlcTIgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gZXExIHggeVxuICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBlcTIgeCB5XG4gIHwgRmlyc3QgXywgU2Vjb25kIF8gfCBTZWNvbmQgXywgRmlyc3QgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCBmIHMgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gZiB4XG4gIHwgU2Vjb25kIHkgLT4gcyB5XG47O1xuXG5tb2R1bGUgTWFrZV9mb2N1c2VkIChNIDogc2lnXG4gICAgdHlwZSAoKydhLCArJ2IpIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICB2YWwgb3RoZXIgOiAnYiAtPiAoXywgJ2IpIHRcbiAgICB2YWwgZWl0aGVyIDogKCdhLCAnYikgdCAtPiByZXR1cm46KCdhIC0+ICdjKSAtPiBvdGhlcjooJ2IgLT4gJ2MpIC0+ICdjXG5cbiAgICB2YWwgY29tYmluZVxuICAgICAgOiAgKCdhLCAnZCkgdFxuICAgICAgLT4gKCdiLCAnZCkgdFxuICAgICAgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgICAtPiBvdGhlcjooJ2QgLT4gJ2QgLT4gJ2QpXG4gICAgICAtPiAoJ2MsICdkKSB0XG5cbiAgICB2YWwgYmluZCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2EgLT4gKCdjLCAnYikgdCkgLT4gKCdjLCAnYikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cbiAgb3BlbiBXaXRoX3JldHVyblxuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKVxuXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFwcCA9IEFwcGxpY2F0aXZlLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBhcHBseSB0MSB0MiA9IGJpbmQgdDEgfmY6KGZ1biBmIC0+IGJpbmQgdDIgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSkpXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBcHBcblxuICBsZXQgY29tYmluZV9hbGwgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4gXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuIHggLT4gcmV0dXJuX2xvb3AgZiAoeCA6OiBhY2MpIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiBbXSB0c1xuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbF91bml0ID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuICgpIC0+IG90aGVyX2xvb3AgZiBhY2MgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8pIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyIHQgfnJldHVybjooZnVuICgpIC0+IHJldHVybl9sb29wIGYgdHMpIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiB0c1xuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9IGVpdGhlciB0IH5yZXR1cm46T3B0aW9uLnNvbWUgfm90aGVyOihmdW4gXyAtPiBOb25lKVxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGVpdGhlciB0IH5yZXR1cm46Rm4uaWQgfm90aGVyOihmdW4gXyAtPiBkZWZhdWx0KVxuXG4gIGxldCB3aXRoX3JldHVybiBmID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHJldCAtPiBvdGhlciAoZiAoV2l0aF9yZXR1cm4ucHJlcGVuZCByZXQgfmY6cmV0dXJuKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpcnN0ID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IHJldHVybiA9IGZpcnN0XG4gICAgbGV0IG90aGVyID0gc2Vjb25kXG5cbiAgICBsZXQgZWl0aGVyIHQgfnJldHVybiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gcmV0dXJuIHhcbiAgICAgIHwgU2Vjb25kIHkgLT4gb3RoZXIgeVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAoZiB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKG90aGVyIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIF8gfCBfLCBTZWNvbmQgeCAtPiBTZWNvbmQgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24uICopXG4gICAgICB8IFNlY29uZCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFNlY29uZCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCByZXR1cm4gPSBzZWNvbmRcbiAgICBsZXQgb3RoZXIgPSBmaXJzdFxuXG4gICAgbGV0IGVpdGhlciB0IH5yZXR1cm4gfm90aGVyID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeSAtPiByZXR1cm4geVxuICAgICAgfCBGaXJzdCB4IC0+IG90aGVyIHhcbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKGYgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChvdGhlciB4IHkpXG4gICAgICB8IEZpcnN0IHgsIF8gfCBfLCBGaXJzdCB4IC0+IEZpcnN0IHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU2Vjb25kIHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbiwgbGlrZSBbRmlyc3QuYmluZF0gYWJvdmUuICopXG4gICAgICB8IEZpcnN0IF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdmLCAncykgX2VpdGhlciA9ICgnZiwgJ3MpIHQgPVxuICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICB8IFNlY29uZCBvZiAnc1xuZW5kXG4iLCJpbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGl0ZXJpIH5mb2xkIHQgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIHYgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgdiBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYylcbjs7XG5cbmxldCBjb3VudGkgfmZvbGRpIHQgfmYgPSBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIG4gYSAtPiBpZiBmIGkgYSB0aGVuIG4gKyAxIGVsc2UgbilcblxubGV0IGV4aXN0c2kgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpXG47O1xuXG5sZXQgZm9yX2FsbGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIG5vdCAoZiBpIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZmluZF9tYXBpIH5pdGVyaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmRpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIChTb21lIChpLCB4KSkpO1xuICAgIE5vbmUpXG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBzaWdcbiAgICBpbmNsdWRlIENvbnRhaW5lcl9pbnRmLk1ha2VfZ2VuX2FyZ1xuXG4gICAgdmFsIGl0ZXJpIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICgnYSB0LCAnYSBlbHQpIGl0ZXJpIF1cbiAgICB2YWwgZm9sZGkgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhIHQsICdhIGVsdCwgXykgZm9sZGkgXVxuICBlbmQpIDogR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9IHN0cnVjdFxuICBpbmNsdWRlIENvbnRhaW5lci5NYWtlX2dlbiAoVClcblxuICBsZXQgaXRlcmkgPVxuICAgIG1hdGNoIFQuaXRlcmkgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyaSAtPiBpdGVyaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXJpIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgZm9sZGkgPVxuICAgIG1hdGNoIFQuZm9sZGkgd2l0aFxuICAgIHwgYEN1c3RvbSBmb2xkaSAtPiBmb2xkaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5pbml0IH5mIC0+IGZvbGRpIH5mb2xkIHQgfmluaXQgfmZcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPSBjb3VudGkgfmZvbGRpIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IGV4aXN0c2kgfml0ZXJpIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBmb3JfYWxsaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZF9tYXBpIHQgfmYgPSBmaW5kX21hcGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRpIHQgfmYgPSBmaW5kaSB+aXRlcmkgdCB+ZlxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKFQpXG5cbiAgKCogTm90IHBhcnQgb2YgW0NvbnRhaW5lci5HZW5lcmljXS4gKilcbiAgbGV0IG1lbSA9IEMubWVtXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZTAgKFQpXG5cbiAgKCogTm90IHBhcnQgb2YgW0NvbnRhaW5lci5HZW5lcmljXS4gKilcbiAgbGV0IG1lbSA9IEMubWVtXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb250YWluZXJfaW50Zi5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICAoKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2ZcbiAgICAgdGhlIHNlcXVlbmNlICopXG4gIHR5cGUgKCdhLCAncykgdCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mICdzXG4gICAgfCBZaWVsZCBvZiAnYSAqICdzXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdzLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdzKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfIHNfXzAxMF8pXG4gICAgICAgIDogICgoYV9fMDA5XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMTBfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wMDlfLCBzX18wMTBfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2Zfc19fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgICB8IERvbmUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRG9uZVwiXG4gICAgICAgIHwgU2tpcCBhcmcwX18wMDNfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzAwNF8gPSBfb2Zfc19fMDAyXyBhcmcwX18wMDNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2tpcFwiOyByZXMwX18wMDRfIF1cbiAgICAgICAgfCBZaWVsZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDA3XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNV9cbiAgICAgICAgICBhbmQgcmVzMV9fMDA4XyA9IF9vZl9zX18wMDJfIGFyZzFfXzAwNl8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJZaWVsZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm9wZW4gU3RlcFxuXG4oKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBzZXF1ZW5jZSAqKVxudHlwZSArXyB0ID0gU2VxdWVuY2UgOiAncyAqICgncyAtPiAoJ2EsICdzKSBTdGVwLnQpIC0+ICdhIHRcbnR5cGUgJ2Egc2VxdWVuY2UgPSAnYSB0XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IG5leHRfc3RlcCAoU2VxdWVuY2UgKHMsIGYpKSA9XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBmKSlcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgU2VxdWVuY2UgKHMsIGYpKVxuICA7O1xuXG4gIGxldCBkZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgbG9vcCBzIG5leHQgZmluaXNoIGYgYWNjID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgICAgfCBTa2lwIHMgLT4gZiBhY2MgTm9uZSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBmIGFjYyAoU29tZSBhKSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dCBmaW5pc2ggZiBpbml0XG4gIDs7XG5lbmRcblxubGV0IHVuZm9sZF9zdGVwIH5pbml0IH5mID0gU2VxdWVuY2UgKGluaXQsIGYpXG5cbmxldCB1bmZvbGQgfmluaXQgfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjooZnVuIHMgLT5cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGVwLkRvbmVcbiAgICB8IFNvbWUgKGEsIHMpIC0+IFN0ZXAuWWllbGQgKGEsIHMpKVxuOztcblxubGV0IHVuZm9sZF93aXRoIHMgfmluaXQgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoaW5pdCwgcylcbiAgICAgICwgZnVuIChzZWVkLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChzZWVkLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgICAgIChtYXRjaCBmIHNlZWQgYSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzZWVkIC0+IFNraXAgKHNlZWQsIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHNlZWQpIC0+IFlpZWxkIChhLCAoc2VlZCwgcykpKSApXG47O1xuXG5sZXQgdW5mb2xkX3dpdGhfYW5kX2ZpbmlzaCBzIH5pbml0IH5ydW5uaW5nX3N0ZXAgfmlubmVyX2ZpbmlzaGVkIH5maW5pc2hpbmdfc3RlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBJbm5lcl9ydW5uaW5nIChpbml0LCBzKVxuICAgICAgLCBmdW4gc3RhdGUgLT5cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgaW5uZXJfc3RhdGUgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gU2tpcCAoYElubmVyX2ZpbmlzaGVkIChpbm5lcl9maW5pc2hlZCBzdGF0ZSkpXG4gICAgICAgICAgIHwgU2tpcCBpbm5lcl9zdGF0ZSAtPiBTa2lwIChgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSlcbiAgICAgICAgICAgfCBZaWVsZCAoeCwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHJ1bm5pbmdfc3RlcCBzdGF0ZSB4IHdpdGhcbiAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgfCBTa2lwIHN0YXRlIC0+IFNraXAgKGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKVxuICAgICAgICAgICAgICB8IFlpZWxkICh5LCBzdGF0ZSkgLT4gWWllbGQgKHksIGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKSkpXG4gICAgICAgIHwgYElubmVyX2ZpbmlzaGVkIHN0YXRlIC0+XG4gICAgICAgICAgKG1hdGNoIGZpbmlzaGluZ19zdGVwIHN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHN0YXRlIC0+IFNraXAgKGBJbm5lcl9maW5pc2hlZCBzdGF0ZSlcbiAgICAgICAgICAgfCBZaWVsZCAoeSwgc3RhdGUpIC0+IFlpZWxkICh5LCBgSW5uZXJfZmluaXNoZWQgc3RhdGUpKSApXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6bCB+ZjooZnVuY3Rpb25cbiAgICB8IFtdIC0+IERvbmVcbiAgICB8IHggOjogbCAtPiBZaWVsZCAoeCwgbCkpXG47O1xuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCB2IG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gdlxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyB2IG5leHQgZlxuICAgIHwgWWllbGQgKGEsIHMpIC0+IGxvb3AgcyAoZiB2IGEpIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIGluaXQgbmV4dCBmXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpXG5cblxubGV0IHRvX2xpc3QgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICBsZXQgc2FmZV90b19saXN0IHQgPSBMaXN0LnJldiAodG9fbGlzdF9yZXYgdCkgaW5cbiAgbGV0IHJlYyB0b19saXN0IHMgbmV4dCBpID1cbiAgICBpZiBpID0gMFxuICAgIHRoZW4gc2FmZV90b19saXN0IChTZXF1ZW5jZSAocywgbmV4dCkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IFtdXG4gICAgICB8IFNraXAgcyAtPiB0b19saXN0IHMgbmV4dCBpXG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBhIDo6IHRvX2xpc3QgcyBuZXh0IChpIC0gMSkpXG4gIGluXG4gIHRvX2xpc3QgcyBuZXh0IDUwMFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X3Ygc3RvcF92ID1cbiAgbGV0IHN0ZXAgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgYGluY2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID4gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGluY2x1c2l2ZSAtPiBmdW4gaSAtPiBpZiBpIDwgc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGV4Y2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID49IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgICB8IGBleGNsdXNpdmUgLT4gZnVuIGkgLT4gaWYgaSA8PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X3ZcbiAgICB8IGBleGNsdXNpdmUgLT4gc3RhcnRfdiArIHN0cmlkZVxuICBpblxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjpzdGVwXG47O1xuXG5sZXQgb2ZfbGF6eSB0X2xhenkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDp0X2xhenkgfmY6KGZ1biB0X2xhenkgLT5cbiAgICBsZXQgKFNlcXVlbmNlIChzLCBuZXh0KSkgPSBMYXp5LmZvcmNlIHRfbGF6eSBpblxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPlxuICAgICAgU2tpcFxuICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSAocywgbmV4dCkgaW5cbiAgICAgICAgIGxhenkgdilcbiAgICB8IFlpZWxkICh4LCBzKSAtPlxuICAgICAgWWllbGRcbiAgICAgICAgKCB4XG4gICAgICAgICwgbGV0IHYgPSBTZXF1ZW5jZSAocywgbmV4dCkgaW5cbiAgICAgICAgICBsYXp5IHYgKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNlZWRcbiAgICAgICwgZnVuIHNlZWQgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChmIGEsIHMpIClcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoZiBpIGEsIChpICsgMSwgcykpIClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgYWNjIHggaW5cbiAgICBZaWVsZCAoeCwgYWNjKSlcbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGkgYWNjIHggaW5cbiAgICBZaWVsZCAoeCwgKGkgKyAxLCBhY2MpKSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNlZWRcbiAgICAgICwgZnVuIHNlZWQgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFlpZWxkIChhLCBzKVxuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIHMgKVxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIG1hcCB+ZjpzbmQgKGZpbHRlciAobWFwaSB0IH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGlcbiAgICB8IFNraXAgcyAtPiBsb29wIGkgcyBuZXh0XG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCAoaSArIDEpIHMgbmV4dFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6KFtdLCAwKSB+ZjooZnVuIChsLCBpKSB4IC0+IHggOjogbCwgaSArIDEpXG5cbmxldCB0b19hcnJheSB0ID1cbiAgbGV0IGwsIGxlbiA9IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IHggOjogbCAtPlxuICAgIGxldCBhID0gQXJyYXkuY3JlYXRlIH5sZW4geCBpblxuICAgIGxldCByZWMgbG9vcCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgYS4oaSkgPC0geDtcbiAgICAgICAgbG9vcCAoaSAtIDEpIGxcbiAgICBpblxuICAgIGxvb3AgKGxlbiAtIDIpIGw7XG4gICAgYVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBhIC0+IFNvbWUgYVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGYgaSBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBub3QgKGYgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBub3QgKGYgaSBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgaSBhIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gKClcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIGYgYTtcbiAgICAgIGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCBfIC0+IGZhbHNlXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBhID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGIsIF8pIHdoZW4gZXF1YWwgYSBiIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBhXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBhXG47O1xuXG5sZXQgZW1wdHkgPSBTZXF1ZW5jZSAoKCksIGZ1biAoKSAtPiBEb25lKVxuXG5sZXQgYmluZCB0IH5mID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpLCByZXN0IC0+XG4gICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgfCBEb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGVtcHR5LCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gICAgICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBTa2lwIChmIGEsIFNlcXVlbmNlIChzLCBuZXh0KSkpKVxuICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIG5leHQpLCByZXN0KVxuICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIChTZXF1ZW5jZSAocywgbmV4dCksIHJlc3QpKSkpXG4gICAgfmluaXQ6KGVtcHR5LCB0KVxuOztcblxubGV0IHJldHVybiB4ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6KFNvbWUgeCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IERvbmVcbiAgICB8IFNvbWUgeCAtPiBZaWVsZCAoeCwgTm9uZSkpXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZClcblxubGV0IG50aCBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTm9uZVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBpIHMgbmV4dFxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gaWYgcGh5c19lcXVhbCBpIDAgdGhlbiBTb21lIGEgZWxzZSBsb29wIChpIC0gMSkgcyBuZXh0XG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIG4gcyBuZXh0KVxuOztcblxubGV0IG50aF9leG4gcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLm50aFwiXG4gIGVsc2UgKFxuICAgIG1hdGNoIG50aCBzIG4gd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLm50aFwiXG4gICAgfCBTb21lIHggLT4geClcbjs7XG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAxMV8gYl9fMDEyXyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAxMV8gYl9fMDEyX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDExXywgYl9fMDEyXyB3aXRoXG4gICAgICB8IExlZnQgX2FfXzAxM18sIExlZnQgX2JfXzAxNF8gLT4gX2NtcF9fYSBfYV9fMDEzXyBfYl9fMDE0X1xuICAgICAgfCBMZWZ0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgTGVmdCBfIC0+IDFcbiAgICAgIHwgUmlnaHQgX2FfXzAxNV8sIFJpZ2h0IF9iX18wMTZfIC0+IF9jbXBfX2IgX2FfXzAxNV8gX2JfXzAxNl9cbiAgICAgIHwgUmlnaHQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBSaWdodCBfIC0+IDFcbiAgICAgIHwgQm90aCAoX2FfXzAxN18sIF9hX18wMTlfKSwgQm90aCAoX2JfXzAxOF8sIF9iX18wMjBfKSAtPlxuICAgICAgICAobWF0Y2ggX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fYiBfYV9fMDE5XyBfYl9fMDIwX1xuICAgICAgICAgfCBuIC0+IG4pKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdFxuICAgIDogdHlwZSBhIGIuXG4gICAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgICAgLT4gKGEsIGIpIHRcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgfCBMZWZ0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgIHwgUmlnaHQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuICAgICAgfCBCb3RoIChfYTAsIF9hMSkgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMiBpblxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgICAgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTFcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDQ0XyBiX18wNDVfKVxuICAgICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wNDRfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzA0NV8pXG4gICAgICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKGFfXzA0NF8sIGJfXzA0NV8pIHQpIC0+XG4gICAgICBsZXQgZXJyb3Jfc291cmNlX18wMjVfID0gXCJzZXF1ZW5jZS5tbC5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50XCIgaW5cbiAgICAgIGZ1biBfb2ZfYV9fMDIxXyBfb2ZfYl9fMDIyXyAtPiBmdW5jdGlvblxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIF90YWdfXzAyOF8pIDo6IHNleHBfYXJnc19fMDI5XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDI3XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyOV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDMwXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzMV8gPSBfb2ZfYV9fMDIxXyBhcmcwX18wMzBfIGluXG4gICAgICAgICAgICAgTGVmdCByZXMwX18wMzFfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDI4X1xuICAgICAgICAgICAgICAgX3NleHBfXzAyN18pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBfdGFnX18wMzNfKSA6OiBzZXhwX2FyZ3NfXzAzNF8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzMl8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzRfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzNV8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzZfID0gX29mX2JfXzAyMl8gYXJnMF9fMDM1XyBpblxuICAgICAgICAgICAgIFJpZ2h0IHJlczBfXzAzNl9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMzNfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDMyXylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBfdGFnX18wMzhfKSA6OiBzZXhwX2FyZ3NfXzAzOV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzN18gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzlfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzA0MF87IGFyZzFfXzA0MV8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wNDJfID0gX29mX2FfXzAyMV8gYXJnMF9fMDQwX1xuICAgICAgICAgICAgIGFuZCByZXMxX18wNDNfID0gX29mX2JfXzAyMl8gYXJnMV9fMDQxXyBpblxuICAgICAgICAgICAgIEJvdGggKHJlczBfXzA0Ml8sIHJlczFfXzA0M18pXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDM4X1xuICAgICAgICAgICAgICAgX3NleHBfXzAzN18pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjRfXG4gICAgICAgIHwgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDU2XyBiX18wNTdfKVxuICAgICAgICA6ICAoKGFfXzA1Nl8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDU3XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDU2XywgYl9fMDU3XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzA0Nl8gX29mX2JfXzA0N18gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBMZWZ0IGFyZzBfXzA0OF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDQ5XyA9IF9vZl9hX18wNDZfIGFyZzBfXzA0OF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IHJlczBfXzA0OV8gXVxuICAgICAgICB8IFJpZ2h0IGFyZzBfXzA1MF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUxXyA9IF9vZl9iX18wNDdfIGFyZzBfXzA1MF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyByZXMwX18wNTFfIF1cbiAgICAgICAgfCBCb3RoIChhcmcwX18wNTJfLCBhcmcxX18wNTNfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX2FfXzA0Nl8gYXJnMF9fMDUyX1xuICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX2JfXzA0N18gYXJnMV9fMDUzXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIjsgcmVzMF9fMDU0XzsgcmVzMV9fMDU1XyBdXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJCb3RoXCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1lcmdlX3dpdGhfZHVwbGljYXRlcyAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgfmNvbXBhcmUgPVxuICBsZXQgdW5zaGFkb3dlZF9jb21wYXJlID0gY29tcGFyZSBpblxuICBsZXQgb3BlbiBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCBpblxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCAoWWllbGQgKGEsIHMxJykgYXMgczEpLCAoWWllbGQgKGIsIHMyJykgYXMgczIpIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IHVuc2hhZG93ZWRfY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPCAwXG4gICAgICB0aGVuIFlpZWxkIChMZWZ0IGEsIChTa2lwIHMxJywgczIpKVxuICAgICAgZWxzZSBpZiBjb21wYXJpc29uID0gMFxuICAgICAgdGhlbiBZaWVsZCAoQm90aCAoYSwgYiksIChTa2lwIHMxJywgU2tpcCBzMicpKVxuICAgICAgZWxzZSBZaWVsZCAoUmlnaHQgYiwgKHMxLCBTa2lwIHMyJykpXG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKExlZnQgYSwgKFNraXAgczEsIERvbmUpKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoUmlnaHQgYiwgKERvbmUsIFNraXAgczIpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZCBzMSBzMiB+Y29tcGFyZSA9XG4gIG1hcCAobWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIHMxIHMyIH5jb21wYXJlKSB+ZjooZnVuY3Rpb25cbiAgICB8IExlZnQgeCB8IFJpZ2h0IHggfCBCb3RoICh4LCBfKSAtPiB4KVxuOztcblxubGV0IChtZXJnZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDIxLTA3XSBGb3IgaWRlbnRpY2FsIGJlaGF2aW9yLCB1c2UgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZF0sIGJ1dCBjb25zaWRlciB1c2luZyBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2Vfc29ydGVkXSBpbnN0ZWFkLlwiXSlcbiAgPVxuICBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRcbjs7XG5cbmxldCBtZXJnZV9zb3J0ZWQgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpIH5jb21wYXJlID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgKFlpZWxkIChhLCBzMScpIGFzIHMxKSwgKFlpZWxkIChiLCBzMicpIGFzIHMyKSAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSBjb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8PSAwIHRoZW4gWWllbGQgKGEsIChTa2lwIHMxJywgczIpKSBlbHNlIFlpZWxkIChiLCAoczEsIFNraXAgczInKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoYSwgKFNraXAgczEsIERvbmUpKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYiwgKERvbmUsIFNraXAgczIpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IGhkIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChhLCBfKSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgaGRfZXhuIHMgPVxuICBtYXRjaCBoZCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiaGRfZXhuXCJcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHRsIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChfLCBhKSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgKG1hdGNoIGxvb3AgcyBuZXh0IHdpdGhcbiAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfCBTb21lIHMgLT4gU29tZSAoU2VxdWVuY2UgKHMsIG5leHQpKSlcbjs7XG5cbmxldCB0bF9lYWdlcmx5X2V4biBzID1cbiAgbWF0Y2ggdGwgcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRsX2V4blwiXG4gIHwgU29tZSBzIC0+IHNcbjs7XG5cbmxldCBsaWZ0X2lkZW50aXR5IG5leHQgcyA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgRG9uZSAtPiBEb25lXG4gIHwgU2tpcCBzIC0+IFNraXAgKGBJZGVudGl0eSBzKVxuICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYElkZW50aXR5IHMpXG47O1xuXG5sZXQgbmV4dCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCAoYSwgcykgLT4gU29tZSAoYSwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBmaWx0ZXJfb3B0IHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzXG4gICAgICAsIGZ1biBzIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChOb25lLCBzKSAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoU29tZSBhLCBzKSAtPiBZaWVsZCAoYSwgcykgKVxuOztcblxubGV0IGZpbHRlcl9tYXAgcyB+ZiA9IGZpbHRlcl9vcHQgKG1hcCBzIH5mKVxubGV0IGZpbHRlcl9tYXBpIHMgfmYgPSBmaWx0ZXJfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgc3BsaXRfbiBzIG4gPVxuICBsZXQgcmVjIGxvb3AgcyBpIGFjY3VtIG5leHQgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gTGlzdC5yZXYgYWNjdW0sIFNlcXVlbmNlIChzLCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBMaXN0LnJldiBhY2N1bSwgZW1wdHlcbiAgICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBpIGFjY3VtIG5leHRcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGxvb3AgcyAoaSAtIDEpIChhIDo6IGFjY3VtKSBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG4gW10gbmV4dFxuOztcblxubGV0IGNodW5rc19leG4gdCBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jaHVua3NfZXhuXCJcbiAgZWxzZVxuICAgIHVuZm9sZF9zdGVwIH5pbml0OnQgfmY6KGZ1biB0IC0+XG4gICAgICBtYXRjaCBzcGxpdF9uIHQgbiB3aXRoXG4gICAgICB8IFtdLCBfZW1wdHkgLT4gRG9uZVxuICAgICAgfCAoXyA6OiBfIGFzIHhzKSwgdCAtPiBZaWVsZCAoeHMsIHQpKVxuOztcblxubGV0IGZpbmRpIHMgfmYgPSBmaW5kIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgZmluZF9leG4gcyB+ZiA9XG4gIG1hdGNoIGZpbmQgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLmZpbmRfZXhuXCJcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIG1hdGNoIHMxLCBzMiB3aXRoXG4gIHwgU2VxdWVuY2UgKHMxLCBuZXh0MSksIFNlcXVlbmNlIChzMiwgbmV4dDIpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYEZpcnN0X2xpc3QgczFcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgRmlyc3RfbGlzdCBzMSAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0MSBzMSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIChgU2Vjb25kX2xpc3QgczIpXG4gICAgICAgICAgIHwgU2tpcCBzMSAtPiBTa2lwIChgRmlyc3RfbGlzdCBzMSlcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgczEpIC0+IFlpZWxkIChhLCBgRmlyc3RfbGlzdCBzMSkpXG4gICAgICAgIHwgYFNlY29uZF9saXN0IHMyIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQyIHMyIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMyIC0+IFNraXAgKGBTZWNvbmRfbGlzdCBzMilcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgczIpIC0+IFlpZWxkIChhLCBgU2Vjb25kX2xpc3QgczIpKSApXG47O1xuXG5sZXQgY29uY2F0X21hcCBzIH5mID0gYmluZCBzIH5mXG5sZXQgY29uY2F0IHMgPSBjb25jYXRfbWFwIHMgfmY6Rm4uaWRcbmxldCBjb25jYXRfbWFwaSBzIH5mID0gY29uY2F0X21hcCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IHppcCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCAoYSwgczEpLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkICgoYSwgYiksIChTa2lwIHMxLCBTa2lwIHMyKSlcbiAgICB8IERvbmUsIF8gfCBfLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCB6aXBfZnVsbCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCAoYSwgczEpLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChgQm90aCAoYSwgYiksIChTa2lwIHMxLCBTa2lwIHMyKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYFJpZ2h0IGIsIChEb25lLCBuZXh0MiBzMikpXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChgTGVmdCBhLCAobmV4dDEgczEsIERvbmUpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IGJvdW5kZWRfbGVuZ3RoIChTZXF1ZW5jZSAoc2VlZCwgbmV4dCkpIH5hdF9tb3N0ID1cbiAgbGV0IHJlYyBsb29wIGkgc2VlZCBuZXh0ID1cbiAgICBpZiBpID4gYXRfbW9zdFxuICAgIHRoZW4gYEdyZWF0ZXJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICB8IERvbmUgLT4gYElzIGlcbiAgICAgIHwgU2tpcCBzZWVkIC0+IGxvb3AgaSBzZWVkIG5leHRcbiAgICAgIHwgWWllbGQgKF8sIHNlZWQpIC0+IGxvb3AgKGkgKyAxKSBzZWVkIG5leHQpXG4gIGluXG4gIGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCBsZW5ndGhfaXNfYm91bmRlZF9ieSA/KG1pbiA9IC0xKSA/bWF4IHQgPVxuICBsZXQgbGVuZ3RoX2lzX2F0X2xlYXN0IChTZXF1ZW5jZSAocywgbmV4dCkpID1cbiAgICBsZXQgcmVjIGxvb3AgcyBhY2MgPVxuICAgICAgaWYgYWNjID49IG1pblxuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBhY2NcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIChhY2MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgcyAwXG4gIGluXG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBsZW5ndGhfaXNfYXRfbGVhc3QgdFxuICB8IFNvbWUgbWF4IC0+XG4gICAgKG1hdGNoIGJvdW5kZWRfbGVuZ3RoIHQgfmF0X21vc3Q6bWF4IHdpdGhcbiAgICAgfCBgSXMgbGVuIHdoZW4gbGVuID49IG1pbiAtPiB0cnVlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCBpdGVyaSBzIH5mID0gaXRlciAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IGZvbGRpIHMgfmluaXQgfmYgPVxuICBmb2xkIH5pbml0IChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gYWNjIChpLCBzKSAtPiBmIGkgYWNjIHMpXG47O1xuXG5sZXQgcmVkdWNlIHMgfmYgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGEsIHMpIC0+IFNvbWUgKGZvbGQgcyB+aW5pdDphIH5mKVxuOztcblxubGV0IHJlZHVjZV9leG4gcyB+ZiA9XG4gIG1hdGNoIHJlZHVjZSBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UucmVkdWNlX2V4blwiXG4gIHwgU29tZSByZXMgLT4gcmVzXG47O1xuXG5sZXQgZ3JvdXAgKFNlcXVlbmNlIChzLCBuZXh0KSkgfmJyZWFrID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDooU29tZSAoW10sIHMpKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgIHwgU29tZSAoYWNjLCBzKSAtPlxuICAgICAgICAobWF0Y2ggYWNjLCBuZXh0IHMgd2l0aFxuICAgICAgICAgfCBfLCBTa2lwIHMgLT4gU2tpcCAoU29tZSAoYWNjLCBzKSlcbiAgICAgICAgIHwgW10sIERvbmUgLT4gRG9uZVxuICAgICAgICAgfCBhY2MsIERvbmUgLT4gWWllbGQgKExpc3QucmV2IGFjYywgTm9uZSlcbiAgICAgICAgIHwgW10sIFlpZWxkIChjdXIsIHMpIC0+IFNraXAgKFNvbWUgKFsgY3VyIF0sIHMpKVxuICAgICAgICAgfCAocHJldiA6OiBfIGFzIGFjYyksIFlpZWxkIChjdXIsIHMpIC0+XG4gICAgICAgICAgIGlmIGJyZWFrIHByZXYgY3VyXG4gICAgICAgICAgIHRoZW4gWWllbGQgKExpc3QucmV2IGFjYywgU29tZSAoWyBjdXIgXSwgcykpXG4gICAgICAgICAgIGVsc2UgU2tpcCAoU29tZSAoY3VyIDo6IGFjYywgcykpKSlcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSAoU2VxdWVuY2UgKHMsIG5leHQpKSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgbGFzdF9lbHQgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgbGFzdF9lbHQgc1xuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggbGFzdF9lbHQgd2l0aFxuICAgICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNvbWUgKGIsIGEpXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IGxvb3AgKFNvbWUgYSkgcylcbiAgaW5cbiAgbG9vcCBOb25lIHNcbjs7XG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyBzIH5lcXVhbCA9XG4gIHVuZm9sZF93aXRoIHMgfmluaXQ6Tm9uZSB+ZjooZnVuIHByZXYgYSAtPlxuICAgIG1hdGNoIHByZXYgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNraXAgKFNvbWUgYSlcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gWWllbGQgKGEsIFNvbWUgYSkpXG47O1xuXG5sZXQgY291bnQgcyB+ZiA9IGxlbmd0aCAoZmlsdGVyIHMgfmYpXG5sZXQgY291bnRpIHQgfmYgPSBsZW5ndGggKGZpbHRlcmkgdCB+ZilcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT4gaWYgaSA+PSBuIHRoZW4gRG9uZSBlbHNlIFlpZWxkIChmIGksIGkgKyAxKSlcbjs7XG5cbmxldCBzdWIgcyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnN1YlwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBpZiBpIC0gcG9zID49IGxlblxuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBpID49IHBvcyAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSlcbiAgICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIChpICsgMSwgcykpIClcbjs7XG5cbmxldCB0YWtlIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UudGFrZVwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBpZiBpID49IGxlblxuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIChpICsgMSwgcykpKSApXG47O1xuXG5sZXQgZHJvcCBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLmRyb3BcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBpID49IGxlbiAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSlcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gU2tpcCAoaSArIDEsIHMpIClcbjs7XG5cbmxldCB0YWtlX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzXG4gICAgICAsIGZ1biBzIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBZaWVsZCAoYSwgcylcbiAgICAgICAgfCBZaWVsZCAoXywgXykgLT4gRG9uZSApXG47O1xuXG5sZXQgZHJvcF93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYERyb3BwaW5nIHNcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgRHJvcHBpbmcgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgRHJvcHBpbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gU2tpcCAoYERyb3BwaW5nIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgSWRlbnRpdHkgcykpXG4gICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMgKVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0IHMgeCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBDb25zaW5nIChzZWVkLCB4KVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBDb25zaW5nIChzZWVkLCB4KSAtPiBZaWVsZCAoeCwgYElkZW50aXR5IHNlZWQpXG4gICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMgKVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0X3dpdGhfbGlzdCBzIGwgPSBhcHBlbmQgKG9mX2xpc3QgbCkgc1xubGV0IHNoaWZ0X2xlZnQgPSBkcm9wXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgaW50ZXJzcGVyc2UgcyB+c2VwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYEluaXQgc1xuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBJbml0IHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYEluaXQgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBSdW5uaW5nIHMpKVxuICAgICAgICB8IGBSdW5uaW5nIHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYFJ1bm5pbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKHNlcCwgYFB1dHRpbmcgKGEsIHMpKSlcbiAgICAgICAgfCBgUHV0dGluZyAoYSwgcykgLT4gWWllbGQgKGEsIGBSdW5uaW5nIHMpIClcbjs7XG5cbmxldCByZXBlYXQgeCA9IHVuZm9sZF9zdGVwIH5pbml0OnggfmY6KGZ1biB4IC0+IFlpZWxkICh4LCB4KSlcblxubGV0IGN5Y2xlX2xpc3RfZXhuIHhzID1cbiAgaWYgTGlzdC5pc19lbXB0eSB4cyB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY3ljbGVfbGlzdF9leG5cIjtcbiAgbGV0IHMgPSBvZl9saXN0IHhzIGluXG4gIGNvbmNhdF9tYXAgfmY6KGZ1biAoKSAtPiBzKSAocmVwZWF0ICgpKVxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHNhIHNiID0gY29uY2F0X21hcCBzYSB+ZjooZnVuIGEgLT4gemlwIChyZXBlYXQgYSkgc2IpXG5sZXQgc2luZ2xldG9uIHggPSByZXR1cm4geFxuXG5sZXQgZGVsYXllZF9mb2xkIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5maW5pc2ggfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gayBhY2NcbiAgICB8IFNvbWUgYSAtPiBmIGFjYyBhIH5rKVxuOztcblxubGV0IGZvbGRfbSB+YmluZCB+cmV0dXJuIHQgfmluaXQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuIGFjYykgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhY2MgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGl0ZXJfbSB+YmluZCB+cmV0dXJuIHQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXQ6KClcbiAgICB+ZjooZnVuICgpIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gKCkpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGZvbGRfdW50aWwgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6ICgnYSwgJ2IpIENvbnRpbnVlX29yX3N0b3AudCkgd2l0aFxuICAgICAgIHwgU3RvcCB4IC0+IHhcbiAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHMgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBSZXN1bHQucmV0dXJuIGFjY1xuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6IChfLCBfKSBSZXN1bHQudCkgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICB8IE9rIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvcmNlX2VhZ2VybHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcblxubGV0IG1lbW9pemUgKHR5cGUgYSkgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIG9mIChhLCB0KSBTdGVwLnQgTGF6eS50XG4gIGVuZFxuICBpblxuICBsZXQgcmVjIG1lbW9pemUgcyA9IE0uVCAobGF6eSAoZmluZF9zdGVwIHMpKVxuICBhbmQgZmluZF9zdGVwIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPiBmaW5kX3N0ZXAgc1xuICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBtZW1vaXplIHMpXG4gIGluXG4gIFNlcXVlbmNlIChtZW1vaXplIHMsIGZ1biAoTS5UIGwpIC0+IExhenkuZm9yY2UgbClcbjs7XG5cbmxldCBkcm9wX2VhZ2VybHkgcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaSB+bGVuIHMgbmV4dCA9XG4gICAgaWYgaSA+PSBsZW5cbiAgICB0aGVuIFNlcXVlbmNlIChzLCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBlbXB0eVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBpIH5sZW4gcyBuZXh0XG4gICAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIChpICsgMSkgfmxlbiBzIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIDAgfmxlbiBzIG5leHRcbjs7XG5cbmxldCBkcm9wX3doaWxlX29wdGlvbiAoU2VxdWVuY2UgKHMsIG5leHQpKSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzXG4gICAgfCBZaWVsZCAoeCwgcykgLT4gaWYgZiB4IHRoZW4gbG9vcCBzIGVsc2UgU29tZSAoeCwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICBpblxuICBsb29wIHNcbjs7XG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgXyAtPiByLnJldHVybiAxXG4gICAgICB8IGBSaWdodCBfIC0+IHIucmV0dXJuICgtMSlcbiAgICAgIHwgYEJvdGggKHYxLCB2MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2EgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA8PiAwIHRoZW4gci5yZXR1cm4gYyk7XG4gICAgMClcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID1cbiAgZm9yX2FsbCAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgIHwgYEJvdGggKGExLCBhMikgLT4gZXF1YWxfYSBhMSBhMlxuICAgIHwgYExlZnQgXyB8IGBSaWdodCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHJvdW5kX3JvYmluIGxpc3QgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIGYpIDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmIHMgd2l0aFxuICAgICAgIHwgWWllbGQgKHgsIHMpIC0+IFlpZWxkICh4LCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMsIGYpIDo6IGRvbmVfc3RhY2spKVxuICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBmKSA6OiB0b2RvX3N0YWNrLCBkb25lX3N0YWNrKVxuICAgICAgIHwgRG9uZSAtPiBTa2lwICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSlcbiAgICB8IFtdIC0+IGlmIExpc3QuaXNfZW1wdHkgZG9uZV9zdGFjayB0aGVuIERvbmUgZWxzZSBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSlcbiAgaW5cbiAgbGV0IHN0YXRlID0gbGlzdCwgW10gaW5cbiAgU2VxdWVuY2UgKHN0YXRlLCBuZXh0KVxuOztcblxubGV0IGludGVybGVhdmUgKFNlcXVlbmNlIChzMSwgZjEpKSA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMyLCBmMikgOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYyIHMyIHdpdGhcbiAgICAgICB8IFlpZWxkICh4LCBzMikgLT4gWWllbGQgKHgsICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAoczIsIGYyKSA6OiBkb25lX3N0YWNrLCBzMSkpXG4gICAgICAgfCBTa2lwIHMyIC0+IFNraXAgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzMiwgZjIpIDo6IGRvbmVfc3RhY2ssIHMxKVxuICAgICAgIHwgRG9uZSAtPiBTa2lwICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIGYxIHMxLCBkb25lX3N0YWNrIHdpdGhcbiAgICAgICB8IFlpZWxkICh0LCBzMSksIF8gLT4gU2tpcCAoTGlzdC5yZXYgKHQgOjogZG9uZV9zdGFjayksIFtdLCBzMSlcbiAgICAgICB8IFNraXAgczEsIF8gLT4gU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxKVxuICAgICAgIHwgRG9uZSwgXyA6OiBfIC0+IFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSlcbiAgICAgICB8IERvbmUsIFtdIC0+IERvbmUpXG4gIGluXG4gIGxldCBzdGF0ZSA9IFtdLCBbXSwgczEgaW5cbiAgU2VxdWVuY2UgKHN0YXRlLCBuZXh0KVxuOztcblxubGV0IGludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0IHMxIHMyID1cbiAgbWFwIHMxIH5mOihmdW4geDEgLT4gbWFwIHMyIH5mOihmdW4geDIgLT4geDEsIHgyKSkgfD4gaW50ZXJsZWF2ZVxuOztcblxubGV0IG9mX3NlcSAoc2VxIDogXyBDYW1sLlNlcS50KSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnNlcSB+ZjooZnVuIHNlcSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gRG9uZVxuICAgIHwgQ29ucyAoaGQsIHRsKSAtPiBZaWVsZCAoaGQsIHRsKSlcbjs7XG5cbmxldCB0b19zZXEgKFNlcXVlbmNlIChzdGF0ZSwgbmV4dCkpID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBuZXh0IHN0YXRlIHdpdGhcbiAgICB8IERvbmUgLT4gQ2FtbC5TZXEuTmlsXG4gICAgfCBTa2lwIHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICB8IFlpZWxkIChoZCwgc3RhdGUpIC0+IENhbWwuU2VxLkNvbnMgKGhkLCBmdW4gKCkgLT4gbG9vcCBzdGF0ZSlcbiAgaW5cbiAgZnVuICgpIC0+IGxvb3Agc3RhdGVcbjs7XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnZWx0IHN0ZXBzID0gV3JhcCBvZiAoJ2VsdCwgdW5pdCAtPiAnZWx0IHN0ZXBzKSBTdGVwLnRcblxuICBsZXQgdW53cmFwIChXcmFwIHN0ZXApID0gc3RlcFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlbHQpIHQgPSAoJ2EgLT4gJ2VsdCBzdGVwcykgLT4gJ2VsdCBzdGVwc1xuXG4gICAgbGV0IHJldHVybiB4IGsgPSBrIHhcblxuICAgIGxldCBiaW5kIG0gfmYgayA9XG4gICAgICBtIChmdW4gYSAtPlxuICAgICAgICBsZXQgbScgPSBmIGEgaW5cbiAgICAgICAgbScgaylcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBtIH5mIGsgPSBtIChmdW4gYSAtPiBrIChmIGEpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoVClcblxuICBsZXQgeWllbGQgZSBrID0gV3JhcCAoWWllbGQgKGUsIGspKVxuICBsZXQgdG9fc3RlcHMgdCA9IHQgKGZ1biAoKSAtPiBXcmFwIERvbmUpXG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBkZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIGYgLT4gV3JhcCAoWWllbGQgKHgsIGZ1biAoKSAtPiBrICgpIGYpKSlcbiAgICAgIH5maW5pc2g6cmV0dXJuXG4gIDs7XG5cbiAgbGV0IHJ1biB0ID1cbiAgICBsZXQgaW5pdCAoKSA9IHRvX3N0ZXBzIHQgaW5cbiAgICBsZXQgZiB0aHVuayA9IHVud3JhcCAodGh1bmsgKCkpIGluXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQgfmZcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9hcnJheVxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGFycmF5X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2FycmF5XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGFycmF5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbmV3IGluLXBsYWNlLCBjb25zdGFudCBoZWFwIHNvcnRpbmcgYWxnb3JpdGhtIHRvIHJlcGxhY2UgdGhlXG4gICBvbmUgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyaWVzLiAgSXRzIG9ubHkgcHVycG9zZSBpcyB0byBiZSBmYXN0ZXIgKGhvcGVmdWxseVxuICAgc3RyaWN0bHkgZmFzdGVyKSB0aGFuIHRoZSBiYXNlIHNvcnQgYW5kIHN0YWJsZV9zb3J0LlxuXG4gICBBdCBhIGhpZ2ggbGV2ZWwgdGhlIGFsZ29yaXRobSBpczpcbiAgIC0gcGljayB0d28gcGl2b3QgcG9pbnRzIGJ5OlxuICAgLSBwaWNrIDUgYXJiaXRyYXJ5IGVsZW1lbnRzIGZyb20gdGhlIGFycmF5XG4gICAtIHNvcnQgdGhlbSB3aXRoaW4gdGhlIGFycmF5XG4gICAtIHRha2UgdGhlIGVsZW1lbnRzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBtaWRkbGUgZWxlbWVudCBvZiB0aGUgc29ydCBhcyB0aGUgcGl2b3RzXG4gICAtIHNvcnQgdGhlIGFycmF5IHdpdGg6XG4gICAtIGFsbCBlbGVtZW50cyBsZXNzIHRoYW4gcGl2b3QxIHRvIHRoZSBsZWZ0IChyYW5nZSAxKVxuICAgLSBhbGwgZWxlbWVudHMgPj0gcGl2b3QxIGFuZCA8PSBwaXZvdDIgaW4gdGhlIG1pZGRsZSAocmFuZ2UgMilcbiAgIC0gYWxsIGVsZW1lbnRzID4gcGl2b3QyIHRvIHRoZSByaWdodCAocmFuZ2UgMylcbiAgIC0gaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIGVxdWFsLCB0aGVuIHRoZSBtaWRkbGUgcmFuZ2UgaXMgc29ydGVkLCBzbyBpZ25vcmUgaXRcbiAgIC0gcmVjdXJzZSBpbnRvIHJhbmdlIDEsIDIgKGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSB1bmVxdWFsKSwgYW5kIDNcbiAgIC0gZHVyaW5nIHJlY3Vyc2lvbiB0aGVyZSBhcmUgdHdvIGluZmxlY3Rpb24gcG9pbnRzOlxuICAgLSBpZiB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCByYW5nZSBpcyBzbWFsbCwgdXNlIGluc2VydGlvbiBzb3J0IHRvIHNvcnQgaXRcbiAgIC0gaWYgdGhlIHN0YWNrIGRlcHRoIGlzIGxhcmdlLCBzb3J0IHRoZSByYW5nZSB3aXRoIGhlYXAtc29ydCB0byBhdm9pZCBuXjIgd29yc3QtY2FzZVxuICAgICBiZWhhdmlvclxuXG4gICBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAgIC0gXCJEdWFsLVBpdm90IFF1aWNrc29ydFwiIGJ5IFZsYWRpbWlyIFlhcm9zbGF2c2tpeS5cbiAgICAgQXZhaWxhYmxlIGF0XG4gICAgIGh0dHA6Ly93d3cua3JpY2hlLmNvbS5hci9yb290L3Byb2dyYW1taW5nL3NwYWNlVGltZUNvbXBsZXhpdHkvRHVhbFBpdm90UXVpY2tzb3J0LnBkZlxuICAgLSBcIlF1aWNrc29ydCBpcyBPcHRpbWFsXCIgYnkgU2VkZ2V3aWNrIGFuZCBCZW50bGV5LlxuICAgICBTbGlkZXMgYXQgaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L35ycy90YWxrcy9RdWlja3NvcnRJc09wdGltYWwucGRmXG4gICAtIGh0dHA6Ly93d3cuc29ydGluZy1hbGdvcml0aG1zLmNvbS9xdWljay1zb3J0LTMtd2F5ICopXG5cbm1vZHVsZSBTb3J0ID0gc3RydWN0XG4gICgqIEZvciB0aGUgc2FrZSBvZiBzcGVlZCB3ZSBjb3VsZCB1c2UgdW5zYWZlIGdldC9zZXQgdGhyb3VnaG91dCwgYnV0IHNwZWVkIHRlc3RzIGRvbid0XG4gICAgIHNob3cgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudC4gKilcbiAgbGV0IGdldCA9IGdldFxuICBsZXQgc2V0ID0gc2V0XG5cbiAgbGV0IHN3YXAgYXJyIGkgaiA9XG4gICAgbGV0IHRtcCA9IGdldCBhcnIgaSBpblxuICAgIHNldCBhcnIgaSAoZ2V0IGFyciBqKTtcbiAgICBzZXQgYXJyIGogdG1wXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgU29ydCA9IHNpZ1xuICAgIHZhbCBzb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgICAtPiBsZWZ0OmludCAoKiBsZWZ0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gcmlnaHQ6aW50ICgqIHJpZ2h0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gdW5pdFxuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luc2VydGlvbl9zb3J0ICopXG4gIG1vZHVsZSBJbnNlcnRpb25fc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgICAgW2Fycl0gaXMgc29ydGVkIGZyb20gW2xlZnRdIHRvIFtwb3MgLSAxXSwgaW5jbHVzaXZlICopXG4gICAgICBmb3IgcG9zID0gbGVmdCArIDEgdG8gcmlnaHQgZG9cbiAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uIGktMV0gaXMgc29ydGVkXG4gICAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLiBwb3NdIGlzIHNvcnRlZCBhbmQgY29udGFpbnMgb25seSBlbGVtZW50cyA+IHZcbiAgICAgICAgICAgMy4gIGFycltpXSBtYXkgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIHZcblxuICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhbGxvY2F0ZSBhIGNsb3N1cmUsIGJ1dCBpcyBsZWZ0IGluIHRoZSBmb3JcbiAgICAgICAgICAgbG9vcCBmb3IgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBkb2N1bWVudGF0aW9uLiAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGkgdiA9XG4gICAgICAgICAgbGV0IGlfbmV4dCA9IGkgLSAxIGluXG4gICAgICAgICAgaWYgaV9uZXh0ID49IGxlZnQgJiYgY29tcGFyZSAoZ2V0IGFyciBpX25leHQpIHYgPiAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBzZXQgYXJyIGkgKGdldCBhcnIgaV9uZXh0KTtcbiAgICAgICAgICAgIGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGlfbmV4dCB2KVxuICAgICAgICAgIGVsc2UgaVxuICAgICAgICBpblxuICAgICAgICBsZXQgdiA9IGdldCBhcnIgcG9zIGluXG4gICAgICAgIGxldCBmaW5hbF9wb3MgPSBsb29wIGFyciB+bGVmdCB+Y29tcGFyZSBwb3MgdiBpblxuICAgICAgICBzZXQgYXJyIGZpbmFsX3BvcyB2XG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFwc29ydCAqKVxuICBtb2R1bGUgSGVhcF9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgIHJvb3QncyBjaGlsZHJlbiBhcmUgYm90aCBlaXRoZXIgcm9vdHMgb2YgbWF4LWhlYXBzIG9yID4gcmlnaHQgKilcbiAgICBsZXQgcmVjIGhlYXBpZnkgYXJyIH5jb21wYXJlIHJvb3QgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCByZWxhdGl2ZV9yb290ID0gcm9vdCAtIGxlZnQgaW5cbiAgICAgIGxldCBsZWZ0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAxIGluXG4gICAgICBsZXQgcmlnaHRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDIgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgbGVmdF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIGxlZnRfY2hpbGQpIChnZXQgYXJyIHJvb3QpID4gMFxuICAgICAgICB0aGVuIGxlZnRfY2hpbGRcbiAgICAgICAgZWxzZSByb290XG4gICAgICBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiByaWdodF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIHJpZ2h0X2NoaWxkKSAoZ2V0IGFyciBsYXJnZXN0KSA+IDBcbiAgICAgICAgdGhlbiByaWdodF9jaGlsZFxuICAgICAgICBlbHNlIGxhcmdlc3RcbiAgICAgIGluXG4gICAgICBpZiBsYXJnZXN0IDw+IHJvb3RcbiAgICAgIHRoZW4gKFxuICAgICAgICBzd2FwIGFyciByb290IGxhcmdlc3Q7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxhcmdlc3QgfmxlZnQgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIEVsZW1lbnRzIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYXJyYXkgYXJlIGFscmVhZHkgaGVhcHMgb2Ygc2l6ZSAxLiAgV2UgbW92ZVxuICAgICAgICAgdGhyb3VnaCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgYXJyYXkgZnJvbSBiYWNrIHRvIGZyb250IGV4YW1pbmluZyB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgaGFuZCwgYW5kIHRoZSBsZWZ0IGFuZCByaWdodCBjaGlsZHJlbiwgZml4aW5nIHRoZSBoZWFwIHByb3BlcnR5IGFzIHdlIGdvLiAqKVxuICAgICAgZm9yIGkgPSAobGVmdCArIHJpZ2h0KSAvIDIgZG93bnRvIGxlZnQgZG9cbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgaSB+bGVmdCB+cmlnaHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ7XG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uLiBpXSBpcyBhIG1heC1oZWFwIEhcbiAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLi4gcmlnaHRdIGlzIHNvcnRlZCAoY2FsbCBpdCBTKVxuICAgICAgICAgMy4gIGV2ZXJ5IGVsZW1lbnQgb2YgSCBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBvZiBTICopXG4gICAgICBmb3IgaSA9IHJpZ2h0IGRvd250byBsZWZ0ICsgMSBkb1xuICAgICAgICBzd2FwIGFyciBsZWZ0IGk7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxlZnQgfmxlZnQgfnJpZ2h0OihpIC0gMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc29ydCAqKVxuICBtb2R1bGUgSW50cm9fc29ydCA6IHNpZ1xuICAgIGluY2x1ZGUgU29ydFxuXG4gICAgdmFsIGZpdmVfZWxlbWVudF9zb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlIG0xIG0yIG0zIG00IG01ID1cbiAgICAgIGxldCBjb21wYXJlX2FuZF9zd2FwIGkgaiA9XG4gICAgICAgIGlmIGNvbXBhcmUgKGdldCBhcnIgaSkgKGdldCBhcnIgaikgPiAwIHRoZW4gc3dhcCBhcnIgaSBqXG4gICAgICBpblxuICAgICAgKCogT3B0aW1hbCA1LWVsZW1lbnQgc29ydGluZyBuZXR3b3JrOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgMS0tby0tLS0tby0tLS0tby0tLS0tLS0tLS0tLS0tMVxuICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfFxuICAgICAgICAgICAgMi0tby0tLS0tfC0tby0tfC0tLS0tby0tby0tLS0tMlxuICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgICAgfCAgfFxuICAgICAgICAgICAgMy0tLS0tLS0tby0tby0tfC0tby0tfC0tby0tLS0tM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfFxuICAgICAgICAgICAgNC0tLS0tby0tLS0tLS0tby0tby0tfC0tLS0tby0tNFxuICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfFxuICAgICAgICAgICAgNS0tLS0tby0tLS0tLS0tLS0tLS0tby0tLS0tby0tNVxuICAgICAgICAgIHZ9ICopXG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0yO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTMgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTVcbiAgICA7O1xuXG4gICAgKCogY2hvb3NlIHBpdm90cyBmb3IgdGhlIGFycmF5IGJ5IHNvcnRpbmcgNSBlbGVtZW50cyBhbmQgZXhhbWluaW5nIHRoZSBjZW50ZXIgdGhyZWVcbiAgICAgICBlbGVtZW50cy4gIFRoZSBnb2FsIGlzIHRvIGNob29zZSB0d28gcGl2b3RzIHRoYXQgd2lsbCBlaXRoZXI6XG4gICAgICAgLSBicmVhayB0aGUgcmFuZ2UgdXAgaW50byAzIGV2ZW4gcGFydGl0aW9uc1xuICAgICAgICAgb3JcbiAgICAgICAtIGVsaW1pbmF0ZSBhIGNvbW1vbmx5IGFwcGVhcmluZyBlbGVtZW50IGJ5IHNvcnRpbmcgaXQgaW50byB0aGUgY2VudGVyIHBhcnRpdGlvblxuICAgICAgICAgYnkgaXRzZWxmXG4gICAgICAgICBUbyB0aGlzIGVuZCB3ZSBsb29rIGF0IHRoZSBjZW50ZXIgMyBlbGVtZW50cyBvZiB0aGUgNSBhbmQgcmV0dXJuIHBhaXJzIG9mIGVxdWFsXG4gICAgICAgICBlbGVtZW50cyBvciB0aGUgd2lkZXN0IHJhbmdlICopXG4gICAgbGV0IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgc2l4dGggPSAocmlnaHQgLSBsZWZ0KSAvIDYgaW5cbiAgICAgIGxldCBtMSA9IGxlZnQgKyBzaXh0aCBpblxuICAgICAgbGV0IG0yID0gbTEgKyBzaXh0aCBpblxuICAgICAgbGV0IG0zID0gbTIgKyBzaXh0aCBpblxuICAgICAgbGV0IG00ID0gbTMgKyBzaXh0aCBpblxuICAgICAgbGV0IG01ID0gbTQgKyBzaXh0aCBpblxuICAgICAgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlIG0xIG0yIG0zIG00IG01O1xuICAgICAgbGV0IG0yX3ZhbCA9IGdldCBhcnIgbTIgaW5cbiAgICAgIGxldCBtM192YWwgPSBnZXQgYXJyIG0zIGluXG4gICAgICBsZXQgbTRfdmFsID0gZ2V0IGFyciBtNCBpblxuICAgICAgaWYgY29tcGFyZSBtMl92YWwgbTNfdmFsID0gMFxuICAgICAgdGhlbiBtMl92YWwsIG0zX3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBpZiBjb21wYXJlIG0zX3ZhbCBtNF92YWwgPSAwXG4gICAgICB0aGVuIG0zX3ZhbCwgbTRfdmFsLCB0cnVlXG4gICAgICBlbHNlIG0yX3ZhbCwgbTRfdmFsLCBmYWxzZVxuICAgIDs7XG5cbiAgICBsZXQgZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcGl2b3QxLCBwaXZvdDIsIHBpdm90c19lcXVhbCA9IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIGxlZnQgPD0gbCA8IHIgPD0gcmlnaHRcbiAgICAgICAgIDIuICBsIDw9IHAgPD0gclxuICAgICAgICAgMy4gIGwgPD0geCA8IHAgICAgIGltcGxpZXMgYXJyW3hdID49IHBpdm90MVxuICAgICAgICAgYW5kIGFyclt4XSA8PSBwaXZvdDJcbiAgICAgICAgIDQuICBsZWZ0IDw9IHggPCBsICBpbXBsaWVzIGFyclt4XSA8IHBpdm90MVxuICAgICAgICAgNS4gIHIgPCB4IDw9IHJpZ2h0IGltcGxpZXMgYXJyW3hdID4gcGl2b3QyICopXG4gICAgICBsZXQgcmVjIGxvb3AgbCBwIHIgPVxuICAgICAgICBsZXQgcHYgPSBnZXQgYXJyIHAgaW5cbiAgICAgICAgaWYgY29tcGFyZSBwdiBwaXZvdDEgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHN3YXAgYXJyIHAgbDtcbiAgICAgICAgICBjb250IChsICsgMSkgKHAgKyAxKSByKVxuICAgICAgICBlbHNlIGlmIGNvbXBhcmUgcHYgcGl2b3QyID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBsb29wIGludmFyaWFudHM6ICBzYW1lIGFzIHRob3NlIG9mIHRoZSBvdXRlciBsb29wICopXG4gICAgICAgICAgbGV0IHJlYyBzY2FuX2JhY2t3YXJkcyByID1cbiAgICAgICAgICAgIGlmIHIgPiBwICYmIGNvbXBhcmUgKGdldCBhcnIgcikgcGl2b3QyID4gMCB0aGVuIHNjYW5fYmFja3dhcmRzIChyIC0gMSkgZWxzZSByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgciA9IHNjYW5fYmFja3dhcmRzIHIgaW5cbiAgICAgICAgICBzd2FwIGFyciByIHA7XG4gICAgICAgICAgY29udCBsIHAgKHIgLSAxKSlcbiAgICAgICAgZWxzZSBjb250IGwgKHAgKyAxKSByXG4gICAgICBhbmQgY29udCBsIHAgciA9IGlmIHAgPiByIHRoZW4gbCwgciBlbHNlIGxvb3AgbCBwIHIgaW5cbiAgICAgIGxldCBsLCByID0gY29udCBsZWZ0IGxlZnQgcmlnaHQgaW5cbiAgICAgIGwsIHIsIHBpdm90c19lcXVhbFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBsZW4gPSByaWdodCAtIGxlZnQgKyAxIGluXG4gICAgICAoKiBUaGlzIHRha2VzIGNhcmUgb2Ygc29tZSBlZGdlIGNhc2VzLCBzdWNoIGFzIGxlZnQgPiByaWdodCBvciB2ZXJ5IHNob3J0IGFycmF5cyxcbiAgICAgICAgIHNpbmNlIEluc2VydGlvbl9zb3J0LnNvcnQgaGFuZGxlcyB0aGVzZSBjYXNlcyBwcm9wZXJseS4gIFRodXMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgbWFrZSBzdXJlIHRoYXQgbGVmdCBhbmQgcmlnaHQgYXJlIHZhbGlkIGluIHJlY3Vyc2l2ZSBjYWxscy4gKilcbiAgICAgIGlmIGxlbiA8PSAzMlxuICAgICAgdGhlbiBJbnNlcnRpb25fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgaWYgbWF4X2RlcHRoIDwgMFxuICAgICAgdGhlbiBIZWFwX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG1heF9kZXB0aCA9IG1heF9kZXB0aCAtIDEgaW5cbiAgICAgICAgbGV0IGwsIHIsIG1pZGRsZV9zb3J0ZWQgPSBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0OihsIC0gMSk7XG4gICAgICAgIGlmIG5vdCBtaWRkbGVfc29ydGVkIHRoZW4gaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDpsIH5yaWdodDpyO1xuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OihyICsgMSkgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBoZWFwX3NvcnRfc3dpdGNoX2RlcHRoID1cbiAgICAgICAgKCogV2UgYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0IGEgcmVjdXJzaW9uIGRlcHRoIG9mIDMyLiBHTlUgaW50cm9zb3J0IHVzZXMgMmxnKG4pLlxuICAgICAgICAgICBUaGUgZXhwZWN0ZWQgcmVjdXJzaW9uIGRlcHRoIGZvciBwZXJmZWN0IDMtd2F5IHNwbGl0cyBpcyBsb2dfMyhuKS5cblxuICAgICAgICAgICBVc2luZyAzMiBtZWFucyBhIGJhbGFuY2VkIDMtd2F5IHNwbGl0IHdvdWxkIHdvcmsgdXAgdG8gM14zMiBlbGVtZW50cyAocm91Z2hseVxuICAgICAgICAgICAyXjUwIG9yIDEwXjE1KS4gR05VIHJlYWNoZXMgYSBkZXB0aCBvZiAzMiBhdCA2NTUzNiBlbGVtZW50cy5cblxuICAgICAgICAgICBGb3Igc21hbGwgYXJyYXlzLCB0aGlzIG1ha2VzIHVzIGxlc3MgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCwgYnV0IHRoZVxuICAgICAgICAgICAzMipOIGNvc3QgYmVmb3JlIHdlIGRvIGlzIG5vdCB0aGF0IG11Y2guXG5cbiAgICAgICAgICAgRm9yIGxhcmdlIGFycmF5cywgdGhpcyBtZWFucyB3ZSBhcmUgbW9yZSBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0XG4gICAgICAgICAgIHNvbWUgcG9pbnQgaWYgd2UgZ2V0IHNvbWUgYmFkIHNwbGl0cyBvciBpZiB0aGUgYXJyYXkgaXMgaHVnZS4gQnV0IHRoYXQncyBvbmx5IGFcbiAgICAgICAgICAgY29uc3RhbnQgZmFjdG9yIGNvc3QgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiByZWN1cnNpb24uXG5cbiAgICAgICAgICAgQWxsIGluIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBhIHNtYWxsIHRyYWRlb2ZmIGFuZCBhdm9pZHMgcGF5aW5nIGEgY29zdCB0b1xuICAgICAgICAgICBjb21wdXRlIGEgbG9nYXJpdGhtIGF0IHRoZSBzdGFydC4gKilcbiAgICAgICAgMzJcbiAgICAgIGluXG4gICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoOmhlYXBfc29ydF9zd2l0Y2hfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHNvcnQgP3BvcyA/bGVuIGFyciB+Y29tcGFyZSA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBhcnIpXG4gIGluXG4gIFNvcnQuSW50cm9fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdDpwb3MgfnJpZ2h0Oihwb3MgKyBsZW4gLSAxKVxuOztcblxubGV0IHRvX2FycmF5IHQgPSB0XG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgaXNfc29ydGVkIHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID49IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZXJnZSBhMSBhMiB+Y29tcGFyZSA9XG4gIGxldCBsMSA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBsZXQgbDIgPSBBcnJheS5sZW5ndGggYTIgaW5cbiAgaWYgbDEgPSAwXG4gIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGwyID0gMFxuICB0aGVuIGNvcHkgYTFcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEyIDApICh1bnNhZmVfZ2V0IGExIChsMSAtIDEpKSA+PSAwXG4gIHRoZW4gYXBwZW5kIGExIGEyXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMSAwKSAodW5zYWZlX2dldCBhMiAobDIgLSAxKSkgPiAwXG4gIHRoZW4gYXBwZW5kIGEyIGExXG4gIGVsc2UgKFxuICAgIGxldCBsZW4gPSBsMSArIGwyIGluXG4gICAgbGV0IG1lcmdlZCA9IGNyZWF0ZSB+bGVuICh1bnNhZmVfZ2V0IGExIDApIGluXG4gICAgbGV0IGExX2luZGV4ID0gcmVmIDAgaW5cbiAgICBsZXQgYTJfaW5kZXggPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgdXNlX2ExID1cbiAgICAgICAgaWYgbDEgPSAhYTFfaW5kZXhcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGlmIGwyID0gIWEyX2luZGV4XG4gICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICBlbHNlIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpIDw9IDBcbiAgICAgIGluXG4gICAgICBpZiB1c2VfYTFcbiAgICAgIHRoZW4gKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCk7XG4gICAgICAgIGExX2luZGV4IDo9ICFhMV9pbmRleCArIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpO1xuICAgICAgICBhMl9pbmRleCA6PSAhYTJfaW5kZXggKyAxKVxuICAgIGRvbmU7XG4gICAgbWVyZ2VkKVxuOztcblxubGV0IGNvcHlfbWF0cml4ID0gbWFwIH5mOmNvcHlcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbjs7XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcCB+ZiB0KSlcbmxldCBjb25jYXRfbWFwaSB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXBpIH5mIHQpKVxuXG5sZXQgcmV2X2lucGxhY2UgdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgd2hpbGUgIWkgPCAhaiBkb1xuICAgIHN3YXAgdCAhaSAhajtcbiAgICBpbmNyIGk7XG4gICAgZGVjciBqXG4gIGRvbmVcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCB0ID0gY29weSB0IGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3JldiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGEgOjogbCAtPlxuICAgIGxldCBsZW4gPSAxICsgTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICAoKiBXZSBzdGFydCBhdCBbbGVuIC0gMl0gYmVjYXVzZSB3ZSBhbHJlYWR5IHB1dCBbYV0gYXQgW3QuKGxlbiAtIDEpXS4gKilcbiAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICB0LihpKSA8LSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHRcbjs7XG5cbigqIFtvZl9saXN0X21hcF0gYW5kIFtvZl9saXN0X3Jldl9tYXBdIGFyZSBiYXNlZCBvbiBmdW5jdGlvbnMgZnJvbSB0aGUgT0NhbWxcbiAgIGRpc3RyaWJ1dGlvbi4gKilcblxubGV0IG9mX2xpc3RfbWFwIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGhkKTtcbiAgICAgICAgZmlsbCAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIDEgdGxcbjs7XG5cbmxldCBvZl9saXN0X21hcGkgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiAwIGhkKSBpblxuICAgIGxldCByZWMgZmlsbCBhIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgaGQpO1xuICAgICAgICBmaWxsIGEgKGkgKyAxKSB0bFxuICAgIGluXG4gICAgZmlsbCBhIDEgdGxcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXAgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXBpIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcGkgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgciA9IHJlZiBbfHxdIGluXG4gIGxldCBrID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCB0IGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgaWYgIWsgPSAwIHRoZW4gciA6PSBjcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGE7XG4gICAgICB1bnNhZmVfc2V0ICFyICFrIGE7XG4gICAgICBpbmNyIGtcbiAgZG9uZTtcbiAgaWYgIWsgPSBsZW5ndGggdCB0aGVuICFyIGVsc2UgaWYgIWsgPiAwIHRoZW4gc3ViIH5wb3M6MCB+bGVuOiFrICFyIGVsc2UgW3x8XVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfaSBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfb3B0IHQgPSBmaWx0ZXJfbWFwIHQgfmY6Rm4uaWRcblxubGV0IHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yID1cbiAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSB0MSB0MiA9XG4gIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMlxuOztcblxubGV0IGl0ZXIyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuaXRlcjJfZXhuXCIgdDEgdDI7XG4gIGl0ZXJpIHQxIH5mOihmdW4gaSB4MSAtPiBmIHgxICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5tYXAyX2V4blwiIHQxIHQyO1xuICBpbml0IChsZW5ndGggdDEpIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IGZvbGQyX2V4biB0MSB0MiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9sZDJfZXhuXCIgdDEgdDI7XG4gIGZvbGRpIHQxIH5pbml0IH5mOihmdW4gaSBhYyB4IC0+IGYgYWMgeCAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbmxldCBmaWx0ZXJpIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcblxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSlcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIChsZW5ndGggLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICFpICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmV4aXN0czJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb3JfYWxsMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID0gbGVuZ3RoIHQxID0gbGVuZ3RoIHQyICYmIGZvcl9hbGwyX2V4biB0MSB0MiB+ZjplcXVhbFxuXG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluZGlfaW50ZXJuYWwgdCB+ZiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gaWZfbm90X2ZvdW5kICgpXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlIChub3QgIWZvdW5kKSAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBmICFpIHZhbHVlXG4gICAgICB0aGVuIChcbiAgICAgICAgdmFsdWVfZm91bmQgOj0gdmFsdWU7XG4gICAgICAgIGZvdW5kIDo9IHRydWUpXG4gICAgICBlbHNlIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgIWZvdW5kIHRoZW4gaWZfZm91bmQgfmk6IWkgfnZhbHVlOiF2YWx1ZV9mb3VuZCBlbHNlIGlmX25vdF9mb3VuZCAoKSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gU29tZSAoaSwgdmFsdWUpKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiBOb25lKVxuOztcblxubGV0IGZpbmRpX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gaSwgdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmY6KGZ1biBfaSB4IC0+IGYgeClcbiAgICB+aWZfZm91bmQ6KGZ1biB+aTpfIH52YWx1ZSAtPiB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9leG46IG5vdCBmb3VuZFwiKSkpXG47O1xuXG5sZXQgZmluZCB0IH5mID0gT3B0aW9uLm1hcCAoZmluZGkgdCB+ZjooZnVuIF9pIHggLT4gZiB4KSkgfmY6KGZ1biAoX2ksIHgpIC0+IHgpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmICFpIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPD0gMVxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlc3VsdCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGkgPSByZWYgMSBpblxuICAgIGxldCBwcmV2ID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjdXIgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGVxdWFsIGN1ciAhcHJldlxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlc3VsdCA6PSBTb21lICghcHJldiwgY3VyKTtcbiAgICAgICAgaSA6PSBuKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHByZXYgOj0gY3VyO1xuICAgICAgICBpbmNyIGkpXG4gICAgZG9uZTtcbiAgICAhcmVzdWx0KVxuOztcblxubGV0IHJlZHVjZSB0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgciA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgICBkb25lO1xuICAgIFNvbWUgIXIpXG47O1xuXG5sZXQgcmVkdWNlX2V4biB0IH5mID1cbiAgbWF0Y2ggcmVkdWNlIHQgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IHBlcm11dGUgPSBBcnJheV9wZXJtdXRlLnBlcm11dGVcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBhcnJheVwiXG4gIGVsc2UgdC4oUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCB0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB6aXAgdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyIHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKSlcbjs7XG5cbmxldCB6aXBfZXhuIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MlxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkuemlwX2V4blwiXG4gIGVsc2UgbWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG47O1xuXG5sZXQgdW56aXAgdCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB4LCB5ID0gdC4oMCkgaW5cbiAgICBsZXQgcmVzMSA9IGNyZWF0ZSB+bGVuOm4geCBpblxuICAgIGxldCByZXMyID0gY3JlYXRlIH5sZW46biB5IGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgeCwgeSA9IHQuKGkpIGluXG4gICAgICByZXMxLihpKSA8LSB4O1xuICAgICAgcmVzMi4oaSkgPC0geVxuICAgIGRvbmU7XG4gICAgcmVzMSwgcmVzMilcbjs7XG5cbmxldCBzb3J0ZWRfY29weSB0IH5jb21wYXJlID1cbiAgbGV0IHQxID0gY29weSB0IGluXG4gIHNvcnQgdDEgfmNvbXBhcmU7XG4gIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IGJvdGggPSBtYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBFaXRoZXIuRmlyc3QgeCBlbHNlIEVpdGhlci5TZWNvbmQgeCkgaW5cbiAgbGV0IHRydWVzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IHggLT4gU29tZSB4XG4gICAgICB8IFNlY29uZCBfIC0+IE5vbmUpXG4gIGluXG4gIGxldCBmYWxzZXMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgXyAtPiBOb25lXG4gICAgICB8IFNlY29uZCB4IC0+IFNvbWUgeClcbiAgaW5cbiAgdHJ1ZXMsIGZhbHNlc1xuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gX2kgeCAtPiBmIHgpXG5sZXQgbGFzdCB0ID0gdC4obGVuZ3RoIHQgLSAxKVxuXG4oKiBDb252ZXJ0IHRvIGEgc2VxdWVuY2UgYnV0IGRvZXMgbm90IGF0dGVtcHQgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvblxuICAgaW4gdGhlIGFycmF5LiAqKVxubGV0IHRvX3NlcXVlbmNlX211dGFibGUgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggdCB0aGVuIFNlcXVlbmNlLlN0ZXAuRG9uZSBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKHQuKGkpLCBpICsgMSkpXG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX3NlcXVlbmNlX211dGFibGUgKGNvcHkgdClcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHQxIHQyID1cbiAgaWYgaXNfZW1wdHkgdDEgfHwgaXNfZW1wdHkgdDJcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW46KG4xICogbjIpICh0MS4oMCksIHQyLigwKSkgaW5cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgZm9yIGkxID0gMCB0byBuMSAtIDEgZG9cbiAgICAgIGZvciBpMiA9IDAgdG8gbjIgLSAxIGRvXG4gICAgICAgIHQuKCFyKSA8LSB0MS4oaTEpLCB0Mi4oaTIpO1xuICAgICAgICBpbmNyIHJcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgdHJhbnNwb3NlIHR0ID1cbiAgaWYgbGVuZ3RoIHR0ID0gMFxuICB0aGVuIFNvbWUgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgd2lkdGggPSBsZW5ndGggdHQgaW5cbiAgICBsZXQgZGVwdGggPSBsZW5ndGggdHQuKDApIGluXG4gICAgaWYgZXhpc3RzIHR0IH5mOihmdW4gdCAtPiBsZW5ndGggdCA8PiBkZXB0aClcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKGluaXQgZGVwdGggfmY6KGZ1biBkIC0+IGluaXQgd2lkdGggfmY6KGZ1biB3IC0+IHR0Lih3KS4oZCkpKSkpXG47O1xuXG5sZXQgdHJhbnNwb3NlX2V4biB0dCA9XG4gIG1hdGNoIHRyYW5zcG9zZSB0dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnRyYW5zcG9zZV9leG5cIlxuICB8IFNvbWUgdHQnIC0+IHR0J1xuOztcblxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIFt8fF1cbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIHQuKDApKVxuICAgIDs7XG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRfYVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgU29ydCA9IFNvcnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdCBhbGwgdmFsdWVzIG9mIHR5cGUgW3RdIGRvIG5vdCBoYXZlIHRoZSB0YWdcbiAgIFtkb3VibGVfYXJyYXlfdGFnXS4gIFNvbWUgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGlzIGluIG9yZGVyIHRvIGF2b2lkIHRlc3RpbmcgdGhlXG4gICB0YWcsIGFuZCB3aWxsIHNlZ2ZhdWx0IGlmIHRoaXMgcHJvcGVydHkgZG9lc24ndCBob2xkLiAqKVxudHlwZSB0ID0gQ2FtbC5PYmoudCBhcnJheVxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKENhbWwuT2JqLnRhZyAoQ2FtbC5PYmoucmVwciB0KSA8PiBDYW1sLk9iai5kb3VibGVfYXJyYXlfdGFnKVxubGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCAoKiB3b3VsZCBjaGVjayBmb3IgZmxvYXQgYXJyYXlzIGluIDMyIGJpdCwgYnV0IHdoYXRldmVyICopXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIFNleHAuQXRvbVxuICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIFwiPE9ial9hcnJheS50IG9mIGxlbmd0aCBcIjsgSW50LnRvX3N0cmluZyAobGVuZ3RoIHQpOyBcIj5cIiBdKVxuOztcblxubGV0IHplcm9fb2JqID0gQ2FtbC5PYmoucmVwciAoMCA6IGludClcblxuKCogV2UgY2FsbCBbQXJyYXkuY3JlYXRlXSB3aXRoIGEgdmFsdWUgdGhhdCBpcyBub3QgYSBmbG9hdCBzbyB0aGF0IHRoZSBhcnJheSBkb2Vzbid0IGdldFxuICAgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxubGV0IGNyZWF0ZV96ZXJvIH5sZW4gPSBBcnJheS5jcmVhdGUgfmxlbiB6ZXJvX29ialxubGV0IGVtcHR5ID0gW3x8XVxuXG50eXBlIG5vdF9hX2Zsb2F0ID1cbiAgfCBOb3RfYV9mbG9hdF8wXG4gIHwgTm90X2FfZmxvYXRfMSBvZiBpbnRcblxubGV0IF9ub3RfYV9mbG9hdF8wID0gTm90X2FfZmxvYXRfMFxubGV0IF9ub3RfYV9mbG9hdF8xID0gTm90X2FfZmxvYXRfMSA0MlxuXG5sZXQgZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAgSXQgaXMgTk9UIG9rIHRvIHVzZSBbaW50IGFycmF5XSBzaW5jZSAoaWZcbiAgICAgdGhpcyBmdW5jdGlvbiBpcyBpbmxpbmVkIGFuZCB0aGUgYXJyYXkgY29udGFpbnMgaW4taGVhcCBib3hlZCB2YWx1ZXMpIHdyb25nIHJlZ2lzdGVyXG4gICAgIHR5cGluZyBtYXkgcmVzdWx0LCBsZWFkaW5nIHRvIGEgZmFpbHVyZSB0byByZWdpc3RlciBuZWNlc3NhcnkgR0Mgcm9vdHMuICopXG4gIENhbWwuT2JqLnJlcHIgKChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpLihpKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxuICBDYW1sLk9iai5yZXByXG4gICAgKEFycmF5LnVuc2FmZV9nZXQgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkgaSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIFNhbWUgY29tbWVudCBhcyBbdW5zYWZlX2dldF0uIFN5cy5vcGFxdWVfaWRlbnRpdHkgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb21cbiAgICAgcG90ZW50aWFsbHkgd3JvbmdseSBndWVzc2luZyB0aGUgdHlwZSBvZiB0aGUgYXJyYXkgYmFzZWQgb24gdGhlIHR5cGUgb2YgZWxlbWVudCwgdGhhdFxuICAgICBpcyBwcmV2ZW50IHRoZSBpbXBsaWNhdGlvbjogKE9iai50YWcgb2JqID0gT2JqLmRvdWJsZV90YWcpID0+IChPYmoudGFnIHQgPVxuICAgICBPYmouZG91YmxlX2FycmF5X3RhZykgd2hpY2ggZmxhbWJkYSBoYXMgdHJpZWQgaW4gdGhlIHBhc3QgKGF0IGxlYXN0IHRoYXQncyBhc3N1bWluZ1xuICAgICB0aGUgY29tcGlsZXIgcmVzcGVjdHMgU3lzLm9wYXF1ZV9pZGVudGl0eSwgd2hpY2ggaXMgbm90IGFsd2F5cyB0aGUgY2FzZSkuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KVxuICAgIGlcbiAgICAoQ2FtbC5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIHNhbWUgYXMgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IGJ1dCBzYWZlICopXG4gIChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpLihpKVxuICA8LSAoQ2FtbC5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50ID1cbiAgKCogVGhpcyBza2lwcyBbY2FtbF9tb2RpZnldLCB3aGljaCBpcyBPSyBpZiBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIGludGVnZXJzLiAqKVxuICBBcnJheS51bnNhZmVfc2V0IChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogaW50IGFycmF5KSBpIChTeXMub3BhcXVlX2lkZW50aXR5IGludClcbjs7XG5cbigqIEZvciBbc2V0XSBhbmQgW3Vuc2FmZV9zZXRdLCBpZiBhIHBvaW50ZXIgaXMgaW52b2x2ZWQsIHdlIGZpcnN0IGRvIGEgcGh5c2ljYWwtZXF1YWxpdHlcbiAgIHRlc3QgdG8gc2VlIGlmIHRoZSBwb2ludGVyIGlzIGNoYW5naW5nLiAgSWYgbm90LCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoZSBbc2V0XSwgd2hpY2hcbiAgIHNhdmVzIGEgY2FsbCB0byBbY2FtbF9tb2RpZnldLiAgV2UgdGhpbmsgdGhpcyBwaHlzaWNhbC1lcXVhbGl0eSB0ZXN0IGlzIHdvcnRoIGl0XG4gICBiZWNhdXNlIGl0IGlzIHZlcnkgY2hlYXAgKGJvdGggdmFsdWVzIGFyZSBhbHJlYWR5IGF2YWlsYWJsZSBmcm9tIHRoZSBbaXNfaW50XSB0ZXN0KVxuICAgYW5kIGJlY2F1c2UgW2NhbWxfbW9kaWZ5XSBpcyBleHBlbnNpdmUuICopXG5cbmxldCBzZXQgdCBpIG9iaiA9XG4gICgqIFdlIHVzZSBbZ2V0XSBmaXJzdCBidXQgdGhlbiB3ZSB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIHNpbmNlIHdlIGtub3cgdGhhdCBbaV0gaXNcbiAgICAgdmFsaWQuICopXG4gIGxldCBvbGRfb2JqID0gZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXQgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmogJiYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGEgPSBnZXQgdCBpIGluXG4gIGxldCBiID0gZ2V0IHQgaiBpblxuICB1bnNhZmVfc2V0IHQgaSBiO1xuICB1bnNhZmVfc2V0IHQgaiBhXG47O1xuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gICgqIElmIHdlIGNhbiwgdXNlIFtBcnJheS5jcmVhdGVdIGRpcmVjdGx5LiAqKVxuICBpZiBDYW1sLk9iai50YWcgeCA8PiBDYW1sLk9iai5kb3VibGVfdGFnXG4gIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4geFxuICBlbHNlIChcbiAgICAoKiBPdGhlcndpc2UgdXNlIFtjcmVhdGVfemVyb10gYW5kIHNldCB0aGUgY29udGVudHMgKilcbiAgICBsZXQgdCA9IGNyZWF0ZV96ZXJvIH5sZW4gaW5cbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHhcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIG9iaiA9IGNyZWF0ZSB+bGVuOjEgb2JqXG5cbigqIFByZS1jb25kaXRpb246IHQuKGkpIGlzIGFuIGludGVnZXIuICopXG5sZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBvYmogPVxuICBpZiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2VcbiAgICAoKiBbdC4oaSldIGlzIGFuIGludGVnZXIgYW5kIFtvYmpdIGlzIG5vdCwgc28gd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmVcbiAgICAgICBlcXVhbC4gKilcbiAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50IHQgaSBpbnQgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50XG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciBpbnQpXG47O1xuXG5sZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCBpID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBub3QgKENhbWwuT2JqLmlzX2ludCBvbGRfb2JqKSB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgMClcbjs7XG5cbigqKiBbdW5zYWZlX2JsaXRdIGlzIGxpa2UgW0FycmF5LmJsaXRdLCBleGNlcHQgaXQgdXNlcyBvdXIgb3duIGZvci1sb29wIHRvIGF2b2lkXG4gICAgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZS4gIEl0cyBwZXJmb3JtYW5jZSBpcyBzdGlsbCBub3QgY29tcGFyYWJsZSB0byBhIG1lbWNweS4gKilcbmxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICgqIFdoZW4gW3BoeXNfZXF1YWwgc3JjIGRzdF0sIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciBbZHN0X3BvcyA8IHNyY19wb3NdIGFuZCBoYXZlIHRoZVxuICAgICBmb3IgbG9vcCBnbyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3Qgb3ZlcndyaXRlIGRhdGEgdGhhdCB3ZSBzdGlsbCBuZWVkXG4gICAgIHRvIHJlYWQuICBXaGVuIFtub3QgKHBoeXNfZXF1YWwgc3JjIGRzdCldLCBkb2luZyB0aGlzIGlzIGhhcm1sZXNzLiAgRnJvbSBhXG4gICAgIG1lbW9yeS1wZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBvbmUgbG9vcHMgdXAgb3IgZG93bi5cbiAgICAgQ29uc3RhbnQtc3RyaWRlIGFjY2VzcywgZm9yd2FyZCBvciBiYWNrd2FyZCwgc2hvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIChhdCBsZWFzdCBvblxuICAgICBhbiBpbnRlbCBpNykuICBTbywgd2UgZG9uJ3QgZG8gYSBjaGVjayBmb3IgW3BoeXNfZXF1YWwgc3JjIGRzdF0gYW5kIGFsd2F5cyBsb29wIHVwIGluXG4gICAgIHRoYXQgY2FzZS4gKilcbiAgaWYgZHN0X3BvcyA8IHNyY19wb3NcbiAgdGhlblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG47O1xuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVfemVyb1xuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGVfemVybyB+bGVuOihsZW5ndGggc3JjKSBpblxuICBibGl0byB+c3JjIH5kc3QgKCk7XG4gIGRzdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBXQVJOSU5HOlxuICAgV2UgdXNlIG5vbi1tZW1vcnktc2FmZSB0aGluZ3MgdGhyb3VnaG91dCB0aGUgW1RydXN0ZWRdIG1vZHVsZS5cbiAgIE1vc3Qgb2YgaXQgaXMgb25seSBzYWZlIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgc2lnbmF0dXJlIChlLmcuIGV4cG9zaW5nXG4gICBbdmFsIGNvcHkgOiAnYSB0IC0+ICdiIHRdIHdvdWxkIGJlIGEgYmlnIG1pc3Rha2UpLiAqKVxubW9kdWxlIFRydXN0ZWQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfb2JqX2FycmF5IDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzd2FwIDogXyB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCB1bnNhZmVfc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIEJsaXQuYmxpdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgOiBfIHQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBPYmpfYXJyYXkudFxuXG4gIGxldCBlbXB0eSA9IE9ial9hcnJheS5lbXB0eVxuICBsZXQgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlX29ial9hcnJheSB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZSB+bGVuIHggPSBPYmpfYXJyYXkuY3JlYXRlIH5sZW4gKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHNpbmdsZXRvbiB4ID0gT2JqX2FycmF5LnNpbmdsZXRvbiAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgc3dhcCB0IGkgaiA9IE9ial9hcnJheS5zd2FwIHQgaSBqXG4gIGxldCBnZXQgYXJyIGkgPSBDYW1sLk9iai5vYmogKE9ial9hcnJheS5nZXQgYXJyIGkpXG4gIGxldCBzZXQgYXJyIGkgeCA9IE9ial9hcnJheS5zZXQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9nZXQgYXJyIGkgPSBDYW1sLk9iai5vYmogKE9ial9hcnJheS51bnNhZmVfZ2V0IGFyciBpKVxuICBsZXQgdW5zYWZlX3NldCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9zZXRfaW50IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnQgYXJyIGkgeFxuXG4gIGxldCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHhcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gT2JqX2FycmF5Lmxlbmd0aFxuICBsZXQgdW5zYWZlX2JsaXQgPSBPYmpfYXJyYXkudW5zYWZlX2JsaXRcbiAgbGV0IGNvcHkgPSBPYmpfYXJyYXkuY29weVxuXG4gIGxldCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID0gT2JqX2FycmF5LnNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgPSBPYmpfYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXJcbmVuZFxuXG5pbmNsdWRlIFRydXN0ZWRcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChDYW1sLk9iai50YWcgKENhbWwuT2JqLnJlcHIgdCkgPD4gQ2FtbC5PYmouZG91YmxlX2FycmF5X3RhZylcblxubGV0IGluaXQgbCB+ZiA9XG4gIGlmIGwgPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJVbmlmb3JtX2FycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46bCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG9mX2FycmF5IGFyciA9IGluaXQgfmY6KEFycmF5LnVuc2FmZV9nZXQgYXJyKSAoQXJyYXkubGVuZ3RoIGFycilcbmxldCBtYXAgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKVxubGV0IG1hcGkgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgaSAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpXG5cbmxldCBpdGVyIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBmb2xkaSBhIH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IH5mOihnZXQgdCkgKGxlbmd0aCB0KVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgeCAtPiBzZXQgcmVzIGkgeCk7XG4gIHJlc1xuOztcblxuKCogSXQgaXMgbm90IHNhZmUgZm9yIFt0b19hcnJheV0gdG8gYmUgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBjb2RlIHRoYXRcbiAgIHJlbGllcyBvbiBbZmxvYXQgYXJyYXldcyBiZWluZyB1bmJveGVkLCBmb3IgZXhhbXBsZSBpbiBbYmluX3dyaXRlX2FycmF5XS4gKilcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiBmYWxzZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgfmYgKGkgLSAxKVxuICBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID0gaWYgaSA8IDAgdGhlbiB0cnVlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpICYmIGxvb3AgdCB+ZiAoaSAtIDEpIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0MSBpblxuICBpZiBsZW5ndGggdDIgPD4gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyX2V4blwiO1xuICBpbml0IGxlbiB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChncmFtbWFyIDogZWx0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGVsdCB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmluY2x1ZGVcbiAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgKEFycmF5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIGVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiAoZ2V0IHQgMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcHB4X2NvbXBhcmUgW2NvbXBhcmVfYXJyYXldIGJ1dCB1c2VzIG91ciBbdW5zYWZlX2dldF0gYW5kIFtsZW5ndGhdLiAqKVxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgYSBiID1cbiAgaWYgcGh5c19lcXVhbCBhIGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgIGlmIHJldCA8PiAwXG4gICAgdGhlbiByZXRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbCA9IHVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgYW5kIHIgPSB1bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIDApKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGNlaWwgPSBDYW1sLmNlaWxcbmxldCBmbG9vciA9IENhbWwuZmxvb3JcbmxldCBtb2RfZmxvYXQgPSBDYW1sLm1vZF9mbG9hdFxubGV0IG1vZGYgPSBDYW1sLm1vZGZcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBDYW1sLmZsb2F0X29mX3N0cmluZ1xubGV0IG5hbiA9IENhbWwubmFuXG5sZXQgaW5maW5pdHkgPSBDYW1sLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gQ2FtbC5uZWdfaW5maW5pdHlcbmxldCBtYXhfZmluaXRlX3ZhbHVlID0gQ2FtbC5tYXhfZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gQ2FtbC5lcHNpbG9uX2Zsb2F0XG5sZXQgY2xhc3NpZnlfZmxvYXQgPSBDYW1sLmNsYXNzaWZ5X2Zsb2F0XG5sZXQgYWJzX2Zsb2F0ID0gQ2FtbC5hYnNfZmxvYXRcbmxldCBpc19pbnRlZ2VyID0gQ2FtbC5GbG9hdC5pc19pbnRlZ2VyXG5sZXQgKCAqKiApID0gQ2FtbC4oICoqIClcblxubGV0ICggJS4gKSBhIGIgPVxuICAoKiBSYWlzZSBpbiBjYXNlIG9mIGEgbmVnYXRpdmUgbW9kdWx1cywgYXMgZG9lcyBJbnQuKCAlICkuICopXG4gIGlmIGIgPCAwLlxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCIlZiAlJSAlZiBpbiBmbG9hdDAubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCIgYSBiICgpO1xuICBsZXQgbSA9IENhbWwubW9kX2Zsb2F0IGEgYiBpblxuICAoKiBQcm9kdWNlIGEgbm9uLW5lZ2F0aXZlIHJlc3VsdCBpbiBhbmFsb2d5IHdpdGggSW50LiggJSApLiAqKVxuICBpZiBtIDwgMC4gdGhlbiBtICsuIGIgZWxzZSBtXG47O1xuXG4oKiBUaGUgYml0cyBvZiBJTlJJQSdzIFtQZXJ2YXNpdmVzXSB0aGF0IHdlIGp1c3Qgd2FudCB0byBleHBvc2UgaW4gW0Zsb2F0XS4gTW9zdCBhcmVcbiAgIGFscmVhZHkgZGVwcmVjYXRlZCBpbiBbUGVydmFzaXZlc10sIGFuZCBldmVudHVhbGx5IGFsbCBvZiB0aGVtIHNob3VsZCBiZS4gKilcbmluY2x1ZGUgKFxuICBDYW1sIDpcbiAgc2lnXG4gICAgZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5cbiAgICBleHRlcm5hbCBsZGV4cFxuICAgICAgOiAgKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICAgIC0+IChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCJcbiAgICBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgZW5kKVxuXG4oKiBXZSBuZWVkIHRoaXMgaW5kaXJlY3Rpb24gYmVjYXVzZSB0aGVzZSBhcmUgZXhwb3NlZCBhcyBcInZhbFwiIGluc3RlYWQgb2YgXCJleHRlcm5hbFwiICopXG5sZXQgZnJleHAgPSBmcmV4cFxubGV0IGxkZXhwID0gbGRleHBcbmxldCBpc19uYW4geCA9ICh4IDogZmxvYXQpIDw+IHhcblxuKCogQW4gb3JkZXItcHJlc2VydmluZyBiaWplY3Rpb24gYmV0d2VlbiBhbGwgZmxvYXRzIGV4Y2VwdCBmb3IgTmFOcywgYW5kIDk5Ljk1JSBvZlxuICAgaW50NjRzLlxuXG4gICBOb3RlIHdlIGRvbid0IGRpc3Rpbmd1aXNoIDAuIGFuZCAtMC4gYXMgc2VwYXJhdGUgdmFsdWVzIGhlcmUsIHRoZXkgYm90aCBtYXAgdG8gMEwsIHdoaWNoXG4gICBtYXBzIGJhY2sgdG8gMC5cblxuICAgVGhpcyBzaG91bGQgd29yayBib3RoIG9uIGxpdHRsZS1lbmRpYW4gYW5kIGhpZ2gtZW5kaWFuIENQVXMuICBXaWtpcGVkaWEgc2F5czogXCJvblxuICAgbW9kZXJuIHN0YW5kYXJkIGNvbXB1dGVycyAoaS5lLiwgaW1wbGVtZW50aW5nIElFRUUgNzU0KSwgb25lIG1heSBpbiBwcmFjdGljZSBzYWZlbHlcbiAgIGFzc3VtZSB0aGF0IHRoZSBlbmRpYW5uZXNzIGlzIHRoZSBzYW1lIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFzIGZvciBpbnRlZ2Vyc1wiXG4gICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbmRpYW5uZXNzI0Zsb2F0aW5nLXBvaW50X2FuZF9lbmRpYW5uZXNzKS5cbiopXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCA9XG4gIGlmIGlzX25hbiB0XG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuICgqIGFsc28gaW5jbHVkZXMgLTAuICopXG4gICAgU29tZSAwTFxuICBlbHNlIGlmIHQgPiAwLlxuICB0aGVuIFNvbWUgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0KVxuICBlbHNlIFNvbWUgKENhbWwuSW50NjQubmVnIChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgKC0udCkpKVxuOztcblxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyX2V4biB4ID0gT3B0aW9uLnZhbHVlX2V4biAodG9faW50NjRfcHJlc2VydmVfb3JkZXIgeClcblxubGV0IG9mX2ludDY0X3ByZXNlcnZlX29yZGVyIHggPVxuICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIHggMExcbiAgdGhlbiBDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgeFxuICBlbHNlIH4tLihDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgKENhbWwuSW50NjQubmVnIHgpKVxuOztcblxubGV0IG9uZV91bHAgZGlyIHQgPVxuICBtYXRjaCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0IHdpdGhcbiAgfCBOb25lIC0+IENhbWwubmFuXG4gIHwgU29tZSB4IC0+XG4gICAgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXJcbiAgICAgIChDYW1sLkludDY0LmFkZFxuICAgICAgICAgeFxuICAgICAgICAgKG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgfCBgVXAgLT4gMUxcbiAgICAgICAgICB8IGBEb3duIC0+IC0xTCkpXG47O1xuXG4oKiBbdXBwZXJfYm91bmRfZm9yX2ludF0gYW5kIFtsb3dlcl9ib3VuZF9mb3JfaW50XSBhcmUgZm9yIGNhbGN1bGF0aW5nIHRoZSBtYXgvbWluIGZsb2F0XG4gICB0aGF0IGZpdHMgaW4gYSBnaXZlbi1zaXplIGludGVnZXIgd2hlbiByb3VuZGVkIHRvd2FyZHMgMCAodXNpbmcgW2ludF9vZl9mbG9hdF0pLlxuXG4gICBtYXhfaW50L21pbl9pbnQgZGVwZW5kIG9uIFtudW1fYml0c10sIGUuZy4gKy8tIDJeMzAsICsvLSAyXjYyIGlmIDMxLWJpdCwgNjMtYml0XG4gICAocmVzcGVjdGl2ZWx5KSB3aGlsZSBmbG9hdCBpcyBJRUVFIHN0YW5kYXJkIGZvciBkb3VibGUgKDUyIHNpZ25pZmljYW50IGJpdHMpLlxuXG4gICBJbiBhbGwgY2FzZXMsIHdlIHdhbnQgdG8gZ3VhcmFudGVlIHRoYXRcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IDw9IHggPD0gdXBwZXJfYm91bmRfZm9yX2ludF1cbiAgIGlmZiBbaW50X29mX2Zsb2F0IHhdIGZpdHMgaW4gYW4gaW50IHdpdGggW251bV9iaXRzXSBiaXRzLlxuXG4gICBbMiAqKiAobnVtX2JpdHMgLSAxKV0gaXMgdGhlIGZpcnN0IGZsb2F0IGdyZWF0ZXIgdGhhdCBtYXhfaW50LCB3ZSB1c2UgdGhlIHByZWNlZGluZ1xuICAgZmxvYXQgYXMgdXBwZXIgYm91bmQuXG5cbiAgIFstICgyICoqIChudW1fYml0cyAtIDEpKV0gaXMgZXF1YWwgdG8gbWluX2ludC5cbiAgIEZvciBsb3dlciBib3VuZCB3ZSBsb29rIGZvciB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0gc28gdGhhdFxuICAgW2ZdIHJvdW5kcyB0b3dhcmQgemVybyB0byBbbWluX2ludF1cblxuICAgU28gaW4gcGFydGljdWxhciB3ZSB3aWxsIGhhdmU6XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCB4IDw9IC0gKDIgKiogKDEteCkpXVxuICAgW3VwcGVyX2JvdW5kX2Zvcl9pbnQgeCAgPCAgICAyICoqICgxLXgpIF1cbiopXG5sZXQgdXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBDYW1sLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBvbmVfdWxwIGBEb3duICgyLiAqKiBleHApXG47O1xuXG5sZXQgaXNfeF9taW51c19vbmVfZXhhY3QgeCA9XG4gICgqIFt4ID0geCAtLiAxLl0gZG9lcyBub3Qgd29yayB3aXRoIHg4NyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGJhY2tlbmQgKHdoaWNoIGlzIHVzZWRcbiAgICAgb24gMzItYml0IG9jYW1sKSBiZWNhdXNlIG9mIDgwLWJpdCByZWdpc3RlciBwcmVjaXNpb24gb2YgaW50ZXJtZWRpYXRlIGNvbXB1dGF0aW9ucy5cblxuICAgICBBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgY29tcHV0aW5nIHRoaXM6IFt4IC0uIG9uZV91bHAgYERvd24geCA8PSAxLl0gaXMgYWxzbyBwcm9uZSB0b1xuICAgICB0aGUgc2FtZSBwcmVjaXNpb24gaXNzdWVzOiB5b3UgbmVlZCB0byBtYWtlIHN1cmUgW3hdIGlzIDY0LWJpdC5cbiAgKilcbiAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIG5vdCAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHggPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgKHggLS4gMS4pKVxuOztcblxubGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gQ2FtbC5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgbGV0IG1pbl9pbnRfYXNfZmxvYXQgPSB+LS4oMi4gKiogZXhwKSBpblxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG51bV9iaXRzIC0gMSA8IDUzICgqIDUzID0gI2JpdHMgaW4gdGhlIGZsb2F0J3MgbWFudGlzc2Egd2l0aCBzaWduIGluY2x1ZGVkICopXG4gIHRoZW4gKFxuICAgICgqIFRoZSBzbWFsbGVzdCBmbG9hdCB0aGF0IHJvdW5kcyB0b3dhcmRzIHplcm8gdG8gW21pbl9pbnRdIGlzXG4gICAgICAgW21pbl9pbnQgLSAxICsgZXBzaWxvbl0gKilcbiAgICBhc3NlcnQgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpO1xuICAgIG9uZV91bHAgYFVwIChtaW5faW50X2FzX2Zsb2F0IC0uIDEuKSlcbiAgZWxzZSAoXG4gICAgKCogW21pbl9pbnRfYXNfZmxvYXRdIGlzIGFscmVhZHkgdGhlIHNtYWxsZXN0IGZsb2F0IFtmXSBzYXRpc2Z5aW5nIFtmID4gbWluX2ludCAtIDFdLiAqKVxuICAgIGFzc2VydCAobm90IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KSk7XG4gICAgbWluX2ludF9hc19mbG9hdClcbjs7XG5cbigqIEZsb2F0IGNsYW1waW5nIGlzIHN0cnVjdHVyZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBjbGFtcGluZyBmb3Igb3RoZXIgdHlwZXMsIHNvXG4gICB0aGF0IHdlIGdldCB0aGUgYmVoYXZpb3Igb2YgW2NsYW1wX3VuY2hlY2tlZCBuYW4gfm1pbiB+bWF4ID0gbmFuXSAoZm9yIGFueSBbbWluXSBhbmRcbiAgIFttYXhdKSBmb3IgZnJlZS5cbiopXG5sZXQgY2xhbXBfdW5jaGVja2VkICh0IDogZmxvYXQpIH5taW4gfm1heCA9XG4gIGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiBtYXggPCB0IHRoZW4gbWF4IGVsc2UgdFxuOztcblxubGV0IGJveCA9XG4gICgqIFByZXZlbnQgcG90ZW50aWFsIGNvbnN0YW50IGZvbGRpbmcgb2YgWysuIDAuXSBpbiB0aGUgbmVhciBvY2FtbG9wdCBmdXR1cmUuICopXG4gIGxldCB4ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHkgMC4gaW5cbiAgZnVuIGYgLT4gZiArLiB4XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbmluY2x1ZGUgQ2hhcjBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfY2hhciA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9jaGFyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9jaGFyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5tYWtlIDEgdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBzIHdpdGhcbiAgICB8IDEgLT4gcy5bMF1cbiAgICB8IF8gLT4gZmFpbHdpdGhmIFwiQ2hhci5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5DaGFyXCJcbiAgZW5kKVxuXG5sZXQgcHAgZm10IGMgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVDXCIgY1xuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGFsbCA9IEFycmF5LmluaXQgMjU2IH5mOnVuc2FmZV9vZl9pbnQgfD4gQXJyYXkudG9fbGlzdFxuXG5sZXQgaXNfbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfcHJpbnQgPSBmdW5jdGlvblxuICB8ICcgJyAuLiAnficgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnXFx0JyB8ICdcXG4nIHwgJ1xcMDExJyAoKiB2ZXJ0aWNhbCB0YWIgKikgfCAnXFwwMTInICgqIGZvcm0gZmVlZCAqKSB8ICdcXHInIHwgJyAnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19hbHBoYSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbigqIFdyaXRpbmcgdGhlc2Ugb3V0LCBpbnN0ZWFkIG9mIGNhbGxpbmcgW2lzX2FscGhhXSBhbmQgW2lzX2RpZ2l0XSwgcmVkdWNlc1xuICAgcnVudGltZSBieSBhcHByb3guIDMwJSAqKVxubGV0IGlzX2FscGhhbnVtID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfZGlnaXRfdW5zYWZlIHQgPSB0b19pbnQgdCAtIHRvX2ludCAnMCdcblxubGV0IGdldF9kaWdpdF9leG4gdCA9XG4gIGlmIGlzX2RpZ2l0IHRcbiAgdGhlbiBnZXRfZGlnaXRfdW5zYWZlIHRcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLmdldF9kaWdpdF9leG4gJUM6IG5vdCBhIGRpZ2l0XCIgdCAoKVxuOztcblxubGV0IGdldF9kaWdpdCB0ID0gaWYgaXNfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9kaWdpdF91bnNhZmUgdCkgZWxzZSBOb25lXG5cbmxldCBpc19oZXhfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF9sb3dlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfdXBwZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdF9leG4gPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnMCdcbiAgfCAnYScgLi4gJ2YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ2EnICsgMTBcbiAgfCAnQScgLi4gJ0YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ0EnICsgMTBcbiAgfCB0IC0+XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJDaGFyLmdldF9oZXhfZGlnaXRfZXhuOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiXG4gICAgICAgICBbIFwiY2hhclwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IGdldF9oZXhfZGlnaXQgdCA9IGlmIGlzX2hleF9kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2hleF9kaWdpdF9leG4gdCkgZWxzZSBOb25lXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgYzEgYzIgPSBjb21wYXJlIChsb3dlcmNhc2UgYzEpIChsb3dlcmNhc2UgYzIpXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfY2hhciBzdGF0ZSAobG93ZXJjYXNlIHQpXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0MC5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbigqIENvbnN0cnVjdCBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyNTYsIG1hcHBpbmcgZXZlcnkgaW5wdXQgY2hhcmFjdGVyIGNvZGUgdG9cbiAgIGl0cyBjb3JyZXNwb25kaW5nIG91dHB1dCBjaGFyYWN0ZXIuXG5cbiAgIEJlbmNobWFya3MgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIHRoZSBsYW1iZGEgKGluY2x1ZGluZyBjb3N0IG9mXG4gICB0aGlzIGZ1bmN0aW9uKSwgZXZlbiBpZiB0YXJnZXQvcmVwbGFjZW1lbnQgYXJlIGp1c3QgMiBjaGFyYWN0ZXJzIGVhY2guXG5cbiAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFuc2xhdGlvbiBtYXAgaXMgZXF1aXZhbGVudCB0byBqdXN0IHRoZSBpZGVudGl0eS4gKilcbmxldCB0cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgbGV0IHRyX21hcCA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGkgKENoYXIub2ZfaW50X2V4biBpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIC0gMSBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCAoU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgaSlcbiAgZG9uZTtcbiAgbGV0IGxhc3RfcmVwbGFjZW1lbnQgPSBTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCAtIDEpIGluXG4gIGZvclxuICAgIGkgPSBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgdG8gU3RyaW5nLmxlbmd0aCB0YXJnZXQgLSAxXG4gIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IGxhc3RfcmVwbGFjZW1lbnRcbiAgZG9uZTtcbiAgbGV0IHJlYyBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIGkgPVxuICAgIGlmIGkgPSAyNTZcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIGkpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgKGkgKyAxKVxuICBpblxuICAoKiBxdWljayBjaGVjayBvbiB0aGUgZmlyc3QgdGFyZ2V0IGNoYXJhY3RlciB3aGljaCB3aWxsIDk5JSBiZSB0cnVlICopXG4gIGxldCBmaXJzdF90YXJnZXQgPSB0YXJnZXQuWzBdIGluXG4gIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGZpcnN0X3RhcmdldCkpIGZpcnN0X3RhcmdldFxuICB8fCBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIDBcbiAgdGhlbiBTb21lIChCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0cl9tYXApXG4gIGVsc2UgTm9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYVxuXG5sZXQgc3RhZ2UgPSBGbi5pZFxubGV0IHVuc3RhZ2UgPSBGbi5pZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbmluY2x1ZGUgU3RyaW5nMFxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG4oKiBUaGlzIGFsaWFzIGlzIG5lY2Vzc2FyeSBkZXNwaXRlIFtTdHJpbmcwXSBkZWZpbmluZyBbQnl0ZXMgPSBCeXRlczBdLCBpbiBvcmRlciB0b1xuICAgY29udmluY2Ugb2NhbWxkZXAgdGhhdCB0aGlzIGZpbGUgZG9lc24ndCBkZXBlbmQgb24gYnl0ZXMubWwuICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3N0cmluZ1xuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfc3RyaW5nIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxudHlwZSBlbHQgPSBjaGFyXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbigqIFRoaXMgaXMgY29waWVkL2FkYXB0ZWQgZnJvbSAnYmxpdC5tbCcuXG4gICBbc3ViXSwgW3N1Ym9dIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtCbGl0Lk1ha2UoQnl0ZXMpXSBwbHVzIHVuc2FmZSBjYXN0cyB0by9mcm9tXG4gICBzdHJpbmcgYnV0IHdlcmUgaW5saW5lZCBoZXJlIHRvIGF2b2lkIHVzaW5nIFtCeXRlcy51bnNhZmVfb2Zfc3RyaW5nXSBhcyBtdWNoIGFzIHBvc3NpYmxlLlxuKilcbmxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA9IDAgJiYgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmNcbiAgdGhlbiBzcmNcbiAgZWxzZSAoXG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHNyYyk7XG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gXCJcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KSlcbjs7XG5cbmxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICBzdWJcbiAgICBzcmNcbiAgICB+cG9zXG4gICAgfmxlbjpcbiAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICB8IE5vbmUgLT4gbGVuZ3RoIHNyYyAtIHBvcylcbjs7XG5cbmxldCByZWMgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXyBjaGFyID1cbiAgcG9zIDwgZW5kX1xuICAmJiAoQ2hhci5lcXVhbCAodW5zYWZlX2dldCB0IHBvcykgY2hhciB8fCBjb250YWluc191bnNhZmUgdCB+cG9zOihwb3MgKyAxKSB+ZW5kXyBjaGFyKVxuOztcblxubGV0IGNvbnRhaW5zID8ocG9zID0gMCkgP2xlbiB0IGNoYXIgPVxuICBsZXQgdG90YWxfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gIGxldCBsZW4gPSBPcHRpb24udmFsdWUgbGVuIH5kZWZhdWx0Oih0b3RhbF9sZW5ndGggLSBwb3MpIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF86KHBvcyArIGxlbikgY2hhclxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IHJlYyBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA+PSBsZW5cbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zICsgMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCkgfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9leG4gdCBjaGFyID0gaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZXhuXG47O1xuXG5sZXQgaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgcmVjIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA8IDBcbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOihsZW4gLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZXhuIHQgY2hhciA9IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZXhuXG47O1xuXG5sZXQgcmluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgLTEgfHwgcG9zID49IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCBpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgPSBfIH0gOiBTZXhwLnQgPVxuICAgIExpc3RcbiAgICAgIFsgTGlzdCBbIEF0b20gXCJwYXR0ZXJuXCI7IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm4gXVxuICAgICAgOyBMaXN0IFsgQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZSBdXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHBhdHRlcm4gdCA9IHQucGF0dGVyblxuICBsZXQgY2FzZV9zZW5zaXRpdmUgdCA9IHQuY2FzZV9zZW5zaXRpdmVcblxuICAoKiBGaW5kIG1heCBudW1iZXIgb2YgbWF0Y2hlZCBjaGFyYWN0ZXJzIGF0IFtuZXh0X3RleHRfY2hhcl0sIGdpdmVuIHRoZSBjdXJyZW50XG4gICAgIFttYXRjaGVkX2NoYXJzXS4gVHJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCBtYXRjaCwgaWYgY2hhcnMgZG9uJ3QgbWF0Y2gsIHRyeSB0byBtYXRjaFxuICAgICBmZXdlciBjaGFycy4gSWYgY2hhcnMgbWF0Y2ggdGhlbiBleHRlbmQgdGhlIG1hdGNoLiAqKVxuICBsZXQga21wX2ludGVybmFsX2xvb3Agfm1hdGNoZWRfY2hhcnMgfm5leHRfdGV4dF9jaGFyIH5wYXR0ZXJuIH5rbXBfYXJyYXkgfmNoYXJfZXF1YWwgPVxuICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIG1hdGNoZWRfY2hhcnMgaW5cbiAgICB3aGlsZVxuICAgICAgIW1hdGNoZWRfY2hhcnMgPiAwXG4gICAgICAmJiBub3QgKGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycykpXG4gICAgZG9cbiAgICAgIG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKCFtYXRjaGVkX2NoYXJzIC0gMSlcbiAgICBkb25lO1xuICAgIGlmIGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycylcbiAgICB0aGVuIG1hdGNoZWRfY2hhcnMgOj0gIW1hdGNoZWRfY2hhcnMgKyAxO1xuICAgICFtYXRjaGVkX2NoYXJzXG4gIDs7XG5cbiAgbGV0IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbWF0Y2ggY2FzZV9zZW5zaXRpdmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiBDaGFyLmVxdWFsXG4gICAgfCBmYWxzZSAtPiBDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVAgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIHBhdHRlcm46IGJ1aWxkIHRoZSBpbnQgYXJyYXksIHdoaWNoLCBmb3IgZWFjaCBpLFxuICAgICBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IG5vbi10cml2aWFsIHByZWZpeCBvZiBzIHdoaWNoIGlzIGVxdWFsIHRvIGEgc3VmZml4XG4gICAgIGVuZGluZyBhdCBzLltpXSAqKVxuICBsZXQgY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBsZXQgbiA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgbGV0IGttcF9hcnJheSA9IEFycmF5LmNyZWF0ZSB+bGVuOm4gKC0xKSBpblxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgMCAwO1xuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhcjoodW5zYWZlX2dldCBwYXR0ZXJuIGkpXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IGkgIW1hdGNoZWRfY2hhcnNcbiAgICAgIGRvbmUpO1xuICAgIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9XG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVA6IHVzZSB0aGUgcHJlLXByb2Nlc3NlZCBwYXR0ZXJuIHRvIG9wdGltaXplIGxvb2stYmVoaW5kcyBvbiBub24tbWF0Y2hlcy5cbiAgICAgV2UgcmV0dXJuIGludCB0byBhdm9pZCBhbGxvY2F0aW9uIGluIFtpbmRleF9leG5dLiAtMSBtZWFucyBubyBtYXRjaC4gKilcbiAgbGV0IGluZGV4X2ludGVybmFsID8ocG9zID0gMCkgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfmluXzp0ZXh0ID1cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlbmd0aCB0ZXh0IC0gbGVuZ3RoIHBhdHRlcm5cbiAgICB0aGVuIC0xXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IGogPSByZWYgcG9zIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICB3aGlsZSAhaiA8IG4gJiYgIW1hdGNoZWRfY2hhcnMgPCBrIGRvXG4gICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCAhaiBpblxuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgaiA6PSAhaiArIDFcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGsgdGhlbiAhaiAtIGsgZWxzZSAtMSlcbiAgOztcblxuICBsZXQgbWF0Y2hlcyB0IHN0ciA9IGluZGV4X2ludGVybmFsIHQgfmluXzpzdHIgPj0gMFxuXG4gIGxldCBpbmRleCA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuICA7O1xuXG4gIGxldCBpbmRleF9leG4gP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwID49IDBcbiAgICB0aGVuIHBcbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJTdWJzdHJpbmcgbm90IGZvdW5kXCIgWyBcInN1YnN0cmluZ1wiLCBzZXhwX29mX3N0cmluZyB0LnBhdHRlcm4gXSlcbiAgOztcblxuICBsZXQgaW5kZXhfYWxsIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5tYXlfb3ZlcmxhcCB+aW5fOnRleHQgPVxuICAgIGlmIGxlbmd0aCBwYXR0ZXJuID0gMFxuICAgIHRoZW4gTGlzdC5pbml0ICgxICsgbGVuZ3RoIHRleHQpIH5mOkZuLmlkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgbGV0IGZvdW5kID0gcmVmIFtdIGluXG4gICAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGtcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgZm91bmQgOj0gKGogLSBrKSA6OiAhZm91bmQ7XG4gICAgICAgICAgKCogd2UganVzdCBmb3VuZCBhIG1hdGNoIGluIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gKilcbiAgICAgICAgICBtYXRjaCBtYXlfb3ZlcmxhcCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+IG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKGsgLSAxKVxuICAgICAgICAgIHwgZmFsc2UgLT4gbWF0Y2hlZF9jaGFycyA6PSAwKTtcbiAgICAgICAgaWYgaiA8IG5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0IGogaW5cbiAgICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgICB+Y2hhcl9lcXVhbClcbiAgICAgIGRvbmU7XG4gICAgICBMaXN0LnJldiAhZm91bmQpXG4gIDs7XG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgP3BvcyB0IH5pbl86cyB+d2l0aF8gPVxuICAgIG1hdGNoIGluZGV4ID9wb3MgdCB+aW5fOnMgd2l0aFxuICAgIHwgTm9uZSAtPiBzXG4gICAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgbGVuX3dpdGggLSBsZW5fdCkgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOndpdGhfIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczppIH5sZW46bGVuX3dpdGg7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6KGkgKyBsZW5fdClcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczooaSArIGxlbl93aXRoKVxuICAgICAgICB+bGVuOihsZW5fcyAtIGkgLSBsZW5fdCk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG5cbiAgbGV0IHJlcGxhY2VfYWxsIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBudW1fbWF0Y2hlcyA9IExpc3QubGVuZ3RoIG1hdGNoZXMgaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgKChsZW5fd2l0aCAtIGxlbl90KSAqIG51bV9tYXRjaGVzKSkgaW5cbiAgICAgIGxldCBuZXh0X2RzdF9wb3MgPSByZWYgMCBpblxuICAgICAgbGV0IG5leHRfc3JjX3BvcyA9IHJlZiAwIGluXG4gICAgICBMaXN0Lml0ZXIgbWF0Y2hlcyB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGxlbiA9IGkgLSAhbmV4dF9zcmNfcG9zIGluXG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczohbmV4dF9zcmNfcG9zIH5kc3QgfmRzdF9wb3M6IW5leHRfZHN0X3BvcyB+bGVuO1xuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICAgIH5zcmM6d2l0aF9cbiAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgfmRzdFxuICAgICAgICAgIH5kc3RfcG9zOighbmV4dF9kc3RfcG9zICsgbGVuKVxuICAgICAgICAgIH5sZW46bGVuX3dpdGg7XG4gICAgICAgIG5leHRfZHN0X3BvcyA6PSAhbmV4dF9kc3RfcG9zICsgbGVuICsgbGVuX3dpdGg7XG4gICAgICAgIG5leHRfc3JjX3BvcyA6PSAhbmV4dF9zcmNfcG9zICsgbGVuICsgbGVuX3QpO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOiFuZXh0X3NyY19wb3NcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczohbmV4dF9kc3RfcG9zXG4gICAgICAgIH5sZW46KGxlbl9zIC0gIW5leHRfc3JjX3Bvcyk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG4gIGxldCBzcGxpdF9vbiB0IHMgPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgTGlzdC5tYXAyX2V4blxuICAgICAgKC1wYXR0ZXJuX2xlbiA6OiBtYXRjaGVzKVxuICAgICAgKG1hdGNoZXMgQCBbIFN0cmluZy5sZW5ndGggcyBdKVxuICAgICAgfmY6KGZ1biBpIGogLT4gc3ViIHMgfnBvczooaSArIHBhdHRlcm5fbGVuKSB+bGVuOihqIC0gaSAtIHBhdHRlcm5fbGVuKSlcbiAgOztcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgcHVibGljID0gdFxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgPVxuICAgICAgKGZ1biBhX18wMDJfIGJfXzAwM18gLT5cbiAgICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMl8gYl9fMDAzX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgICAoZXF1YWxfc3RyaW5nIGFfXzAwMl8ucGF0dGVybiBiX18wMDNfLnBhdHRlcm4pXG4gICAgICAgICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgICAgICAoZXF1YWxfYm9vbCBhX18wMDJfLmNhc2Vfc2Vuc2l0aXZlIGJfXzAwM18uY2FzZV9zZW5zaXRpdmUpXG4gICAgICAgICAgICAgICAgKGVxdWFsX2FycmF5IGVxdWFsX2ludCBhX18wMDJfLmttcF9hcnJheSBiX18wMDNfLmttcF9hcnJheSkpXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGJvb2wpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IHBhdHRlcm4gPSBwYXR0ZXJuX18wMDdfXG4gICAgICAgICAgIDsgY2FzZV9zZW5zaXRpdmUgPSBjYXNlX3NlbnNpdGl2ZV9fMDA5X1xuICAgICAgICAgICA7IGttcF9hcnJheSA9IGttcF9hcnJheV9fMDExX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDZfID0gW10gaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfaW50IGttcF9hcnJheV9fMDExXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImttcF9hcnJheVwiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlX18wMDlfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgYXJnX18wMTBfIF1cbiAgICAgICAgICA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9zdHJpbmcgcGF0dGVybl9fMDA3XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhdHRlcm5cIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA2X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHJlcHJlc2VudGF0aW9uID0gRm4uaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuX2hlbHBlciA9IHN0cnVjdFxuICBtb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBTZWFyY2hfcGF0dGVybjBcbmVuZFxuXG5vcGVuIFNlYXJjaF9wYXR0ZXJuX2hlbHBlclxuXG5sZXQgc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXggP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfZXhuID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfm1heV9vdmVybGFwIH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfYWxsXG4gICAgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybilcbiAgICB+bWF5X292ZXJsYXBcbiAgICB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfZmlyc3QgP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9hbGwgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+c3Vic3RyaW5nID1cbiAgT3B0aW9uLmlzX3NvbWUgKHN1YnN0cl9pbmRleF9nZW4gdCB+cGF0dGVybjpzdWJzdHJpbmcgfmNhc2Vfc2Vuc2l0aXZlKVxuOztcblxubGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5cbmxldCBpc19zdWJzdHJpbmdfYXRfZ2VuID1cbiAgbGV0IHJlYyBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvcyB+c3ViX2xlbiB+Y2hhcl9lcXVhbCA9XG4gICAgaWYgc3ViX3BvcyA9IHN1Yl9sZW5cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGlmIGNoYXJfZXF1YWwgKHVuc2FmZV9nZXQgc3RyIHN0cl9wb3MpICh1bnNhZmVfZ2V0IHN1YiBzdWJfcG9zKVxuICAgIHRoZW4gbG9vcCB+c3RyIH5zdHJfcG9zOihzdHJfcG9zICsgMSkgfnN1YiB+c3ViX3Bvczooc3ViX3BvcyArIDEpIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG4gICAgZWxzZSBmYWxzZVxuICBpblxuICBmdW4gc3RyIH5wb3M6c3RyX3BvcyB+c3Vic3RyaW5nOnN1YiB+Y2hhcl9lcXVhbCAtPlxuICAgIGxldCBzdHJfbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCBzdWJfbGVuID0gbGVuZ3RoIHN1YiBpblxuICAgIGlmIHN0cl9wb3MgPCAwIHx8IHN0cl9wb3MgPiBzdHJfbGVuXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiU3RyaW5nLmlzX3N1YnN0cmluZ19hdDogaW52YWxpZCBpbmRleCAlZCBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICAgIHN0cl9wb3NcbiAgICAgICAgc3RyX2xlblxuICAgICAgICAoKTtcbiAgICBzdHJfcG9zICsgc3ViX2xlbiA8PSBzdHJfbGVuXG4gICAgJiYgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3M6MCB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3N1ZmZpeF9nZW4gc3RyaW5nIH5zdWZmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIHN0cmluZ19sZW4gPj0gc3VmZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuXG4gICAgICAgc3RyaW5nXG4gICAgICAgfnBvczooc3RyaW5nX2xlbiAtIHN1ZmZpeF9sZW4pXG4gICAgICAgfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3ByZWZpeF9nZW4gc3RyaW5nIH5wcmVmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHByZWZpeF9sZW4gPSBsZW5ndGggcHJlZml4IGluXG4gIHN0cmluZ19sZW4gPj0gcHJlZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuIHN0cmluZyB+cG9zOjAgfnN1YnN0cmluZzpwcmVmaXggfmNoYXJfZXF1YWxcbjs7XG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJfY29tcGFyZV9jYXNlbGVzcyBjMSBjMiA9IENoYXIuY29tcGFyZSAoQ2hhci5sb3dlcmNhc2UgYzEpIChDaGFyLmxvd2VyY2FzZSBjMilcblxuICAgIGxldCByZWMgY29tcGFyZV9sb29wIH5wb3MgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjIgPVxuICAgICAgaWYgcG9zID0gbGVuMVxuICAgICAgdGhlbiBpZiBwb3MgPSBsZW4yIHRoZW4gMCBlbHNlIC0xXG4gICAgICBlbHNlIGlmIHBvcyA9IGxlbjJcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjID0gY2hhcl9jb21wYXJlX2Nhc2VsZXNzICh1bnNhZmVfZ2V0IHN0cmluZzEgcG9zKSAodW5zYWZlX2dldCBzdHJpbmcyIHBvcykgaW5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xvb3AgfnBvczoocG9zICsgMSkgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjJcbiAgICAgICAgfCBfIC0+IGMpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIHN0cmluZzEgc3RyaW5nMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHN0cmluZzEgc3RyaW5nMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXBhcmVfbG9vcFxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5zdHJpbmcxXG4gICAgICAgICAgfmxlbjE6KFN0cmluZy5sZW5ndGggc3RyaW5nMSlcbiAgICAgICAgICB+c3RyaW5nMlxuICAgICAgICAgIH5sZW4yOihTdHJpbmcubGVuZ3RoIHN0cmluZzIpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID1cbiAgICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgICAgbGV0IHN0YXRlID0gcmVmIChoYXNoX2ZvbGRfaW50IHN0YXRlIGxlbikgaW5cbiAgICAgIGZvciBwb3MgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgc3RhdGUgOj0gaGFzaF9mb2xkX2NoYXIgIXN0YXRlIChDaGFyLmxvd2VyY2FzZSAodW5zYWZlX2dldCB0IHBvcykpXG4gICAgICBkb25lO1xuICAgICAgIXN0YXRlXG4gICAgOztcblxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gICAgbGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nX2F0ID0gaXNfc3Vic3RyaW5nX2F0X2dlbiB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRm4uaWRcbmxldCB0b19zdHJpbmcgPSBGbi5pZFxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpIDwgMCB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgLSAxKSBpblxuICBsb29wIFtdIChsZW5ndGggcyAtIDEpXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpID0gbGVuIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSArIDEpIGluXG4gIGxvb3AgW10gMFxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCByZXMgaSAodW5zYWZlX2dldCB0IChsZW4gLSAxIC0gaSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzXG47O1xuXG4oKiogRWZmaWNpZW50IHN0cmluZyBzcGxpdHRpbmcgKilcblxubGV0IGxzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmxzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGxzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGxzcGxpdDJfZXhuXG47O1xuXG5sZXQgcnNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucnNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcnNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSByaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJzcGxpdDJfZXhuXG47O1xuXG5sZXQgbHNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChsc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcnNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChyc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNoYXJfbGlzdF9tZW0gbCAoYyA6IGNoYXIpID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBoZCA6OiB0bCAtPiBDaGFyLmVxdWFsIGhkIGMgfHwgY2hhcl9saXN0X21lbSB0bCBjXG47O1xuXG5sZXQgc3BsaXRfZ2VuIHN0ciB+b24gPVxuICBsZXQgaXNfZGVsaW0gPVxuICAgIG1hdGNoIG9uIHdpdGhcbiAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gIGxldCByZWMgbG9vcCBhY2MgbGFzdF9wb3MgcG9zID1cbiAgICBpZiBwb3MgPSAtMVxuICAgIHRoZW4gc3ViIHN0ciB+cG9zOjAgfmxlbjpsYXN0X3BvcyA6OiBhY2NcbiAgICBlbHNlIGlmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvczEgPSBwb3MgKyAxIGluXG4gICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpwb3MxIH5sZW46KGxhc3RfcG9zIC0gcG9zMSkgaW5cbiAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBwb3MgKHBvcyAtIDEpKVxuICAgIGVsc2UgbG9vcCBhY2MgbGFzdF9wb3MgKHBvcyAtIDEpXG4gIGluXG4gIGxvb3AgW10gbGVuIChsZW4gLSAxKVxuOztcblxubGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG5sZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG5sZXQgc3BsaXRfbGluZXMgPVxuICBsZXQgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbCA9XG4gICAgcG9zIDo9ICFwb3MgLSBpZiAhcG9zID4gMCAmJiBDaGFyLmVxdWFsIHQuWyFwb3MgLSAxXSAnXFxyJyB0aGVuIDIgZWxzZSAxO1xuICAgIGVvbCA6PSAhcG9zICsgMVxuICBpblxuICBmdW4gdCAtPlxuICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgICgqIEludmFyaWFudDogWy0xIDw9IHBvcyA8IGVvbF0uICopXG4gICAgICBsZXQgcG9zID0gcmVmIChuIC0gMSkgaW5cbiAgICAgIGxldCBlb2wgPSByZWYgbiBpblxuICAgICAgbGV0IGFjID0gcmVmIFtdIGluXG4gICAgICAoKiBXZSB0cmVhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3BlY2lhbGx5LCBiZWNhdXNlIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFcbiAgICAgICAgIG5ld2xpbmUsIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgZW1wdHkgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dC4gKilcbiAgICAgIGlmIENoYXIuZXF1YWwgdC5bIXBvc10gJ1xcbicgdGhlbiBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sO1xuICAgICAgd2hpbGUgIXBvcyA+PSAwIGRvXG4gICAgICAgIGlmIENoYXIuKCA8PiApIHQuWyFwb3NdICdcXG4nXG4gICAgICAgIHRoZW4gZGVjciBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogQmVjYXVzZSBbcG9zIDwgZW9sXSwgd2Uga25vdyB0aGF0IFtzdGFydCA8PSBlb2xdLiAqKVxuICAgICAgICAgIGxldCBzdGFydCA9ICFwb3MgKyAxIGluXG4gICAgICAgICAgYWMgOj0gc3ViIHQgfnBvczpzdGFydCB+bGVuOighZW9sIC0gc3RhcnQpIDo6ICFhYztcbiAgICAgICAgICBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sKVxuICAgICAgZG9uZTtcbiAgICAgIHN1YiB0IH5wb3M6MCB+bGVuOiFlb2wgOjogIWFjKVxuOztcblxubGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5sZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcblxubGV0IGlzX3N1YnN0cmluZ19hdCBzIH5wb3MgfnN1YnN0cmluZyA9XG4gIGlzX3N1YnN0cmluZ19hdF9nZW4gcyB+cG9zIH5zdWJzdHJpbmcgfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuOztcblxubGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gIGVsc2UgKFxuICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgIHwgXyAtPiBvbl9lcnJvcilcbjs7XG5cbmxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9wcmVmaXhcIiB0IG4gfnBvczpuIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9zdWZmaXhcIiB0IG4gfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG5sZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxubGV0IGxmaW5kaSA/KHBvcyA9IDApIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA9IG4gdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gIGxvb3AgcG9zXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+IFNvbWUgdC5baV1cbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG5cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGYgdC5baV0gd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG5sZXQgcmZpbmRpID9wb3MgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA8IDAgdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSAtIDEpIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgICB8IE5vbmUgLT4gbGVuZ3RoIHQgLSAxXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG5sZXQgbGFzdF9ub25fZHJvcCB+ZHJvcCB0ID0gcmZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKVxuXG5sZXQgcnN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuOztcblxubGV0IGZpcnN0X25vbl9kcm9wIH5kcm9wIHQgPSBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpXG5cbmxldCBsc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSAwIC0+IHRcbiAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG47O1xuXG4oKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG5sZXQgc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIGkgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChsZW5ndGggcykgfmY6KGZ1biBpIC0+IHMuW2ldKVxuXG5sZXQgZXhpc3RzID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA8IGxlbiAmJiAoZiBzLltpXSB8fCBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb3JfYWxsID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA9IGxlbiB8fCAoZiBzLltpXSAmJiBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBpIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0ID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdFxubGV0IG1heF9lbHQgdCA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHRcbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZmluZF9tYXBpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kX21hcGkgfml0ZXJpIHQgfmZcbmxldCBmaW5kaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZGkgfml0ZXJpIHQgfmZcbmxldCBjb3VudGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmNvdW50aSB+Zm9sZGkgdCB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5mb3JfYWxsaSB+aXRlcmkgdCB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmV4aXN0c2kgfml0ZXJpIHQgfmZcblxubGV0IG1lbSA9XG4gIGxldCByZWMgbG9vcCB0IGMgfnBvczppIH5sZW4gPVxuICAgIGkgPCBsZW4gJiYgKENoYXIuZXF1YWwgYyAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCBjIH5wb3M6KGkgKyAxKSB+bGVuKVxuICBpblxuICBmdW4gdCBjIC0+IGxvb3AgdCBjIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgaWYgQ2hhci5lcXVhbCB0YXJnZXQgcmVwbGFjZW1lbnRcbiAgdGhlbiBzXG4gIGVsc2UgaWYgbWVtIHMgdGFyZ2V0XG4gIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IGlmIENoYXIuZXF1YWwgYyB0YXJnZXQgdGhlbiByZXBsYWNlbWVudCBlbHNlIGMpXG4gIGVsc2Ugc1xuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgaXNfZW1wdHkgdGFyZ2V0XG4gIHRoZW4gc3RhZ2UgRm4uaWRcbiAgZWxzZSBpZiBpc19lbXB0eSByZXBsYWNlbWVudFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGkgcmVwbGFjZW1lbnQgaXMgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIEZuLmlkXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGlmIGV4aXN0cyBzIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICh1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpKVxuICAgICAgICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiB1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpXG4gICAgICAgIGVsc2UgcykpXG47O1xuXG4oKiBmYXN0IHZlcnNpb24sIGlmIHdlIGV2ZXIgbmVlZCBpdDpcbiAgIHtbXG4gICAgIGxldCBjb25jYXRfYXJyYXkgfnNlcCBhciA9XG4gICAgICAgbGV0IGFyX2xlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgICAgIGlmIGFyX2xlbiA9IDAgdGhlbiBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgbGV0IHNlcF9sZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICBsZXQgcmVzX2xlbl9yZWYgPSByZWYgKHNlcF9sZW4gKiAoYXJfbGVuIC0gMSkpIGluXG4gICAgICAgICBmb3IgaSA9IDAgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICByZXNfbGVuX3JlZiA6PSAhcmVzX2xlbl9yZWYgKyBsZW5ndGggYXIuKGkpXG4gICAgICAgICBkb25lO1xuICAgICAgICAgbGV0IHJlcyA9IGNyZWF0ZSAhcmVzX2xlbl9yZWYgaW5cbiAgICAgICAgIGxldCBzdHJfMCA9IGFyLigwKSBpblxuICAgICAgICAgbGV0IGxlbl8wID0gbGVuZ3RoIHN0cl8wIGluXG4gICAgICAgICBibGl0IH5zcmM6c3RyXzAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczowIH5sZW46bGVuXzA7XG4gICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBsZW5fMCBpblxuICAgICAgICAgZm9yIGkgPSAxIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzZXAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3Bvczpwb3MgfmxlbjpzZXBfbGVuO1xuICAgICAgICAgICBsZXQgbmV3X3BvcyA9IHBvcyArIHNlcF9sZW4gaW5cbiAgICAgICAgICAgbGV0IHN0cl9pID0gYXIuKGkpIGluXG4gICAgICAgICAgIGxldCBsZW5faSA9IGxlbmd0aCBzdHJfaSBpblxuICAgICAgICAgICBibGl0IH5zcmM6c3RyX2kgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczpuZXdfcG9zIH5sZW46bGVuX2k7XG4gICAgICAgICAgIHBvc19yZWYgOj0gbmV3X3BvcyArIGxlbl9pXG4gICAgICAgICBkb25lO1xuICAgICAgICAgcmVzXG4gICBdfSAqKVxuXG5sZXQgY29uY2F0X2FycmF5ID9zZXAgYXIgPSBjb25jYXQgP3NlcCAoQXJyYXkudG9fbGlzdCBhcilcbmxldCBjb25jYXRfbWFwID9zZXAgcyB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXAgKHRvX2FycmF5IHMpIH5mKVxuXG4oKiBbZmlsdGVyIHQgZl0gaXMgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0uXG5cbiAgIExldCBbbiA9IGxlbmd0aCB0XS5cblxuICAgMS4gRmluZCB0aGUgbG93ZXN0IFtpXSBzdWNoIHRoYXQgW25vdCAoZiB0LltpXSldLlxuXG4gICAyLiBJZiB0aGVyZSBpcyBubyBzdWNoIFtpXSwgdGhlbiByZXR1cm4gW3RdLlxuXG4gICAzLiBJZiB0aGVyZSBpcyBzdWNoIGFuIFtpXSwgYWxsb2NhdGUgYSBzdHJpbmcsIFtvdXRdLCB0byBob2xkIHRoZSByZXN1bHQuICBbb3V0XSBoYXNcbiAgIGxlbmd0aCBbbiAtIDFdLCB3aGljaCBpcyB0aGUgbWF4aW11bSBwb3NzaWJsZSBvdXRwdXQgc2l6ZSBnaXZlbiB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0XG4gICBvbmUgY2hhcmFjdGVyIG5vdCBzYXRpc2Z5aW5nIFtmXS5cblxuICAgNC4gQ29weSBjaGFyYWN0ZXJzIGF0IGluZGljZXMgMCAuLi4gW2kgLSAxXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNS4gV2FsayB0aHJvdWdoIGNoYXJhY3RlcnMgYXQgaW5kaWNlcyBbaSsxXSAuLi4gW24tMV0gb2YgW3RdLCBjb3B5aW5nIHRob3NlIHRoYXRcbiAgIHNhdGlzZnkgW2ZdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA2LiBJZiB3ZSBjb21wbGV0ZWx5IGZpbGxlZCBbb3V0XSwgdGhlbiByZXR1cm4gaXQuICBJZiBub3QsIHJldHVybiB0aGUgcHJlZml4IG9mIFtvdXRdXG4gICB0aGF0IHdlIGRpZCBmaWxsIGluLlxuXG4gICBUaGlzIGFsZ29yaXRobSBoYXMgdGhlIHByb3BlcnR5IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSBhIG5ldyBzdHJpbmcgaWYgdGhlcmUnc1xuICAgbm90aGluZyB0byBmaWx0ZXIsIHdoaWNoIGlzIGEgY29tbW9uIGNhc2UuICopXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiAhaSB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiAhaSBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gU29tZSAoZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3BfcHJlZml4X2lmX2V4aXN0cyBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfZXhuIHMgfnByZWZpeCA9XG4gIG1hdGNoIGNob3BfcHJlZml4IHMgfnByZWZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9wcmVmaXhfZXhuICVTICVTXCIgcyBwcmVmaXggKClcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gU29tZSAoZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3Bfc3VmZml4X2lmX2V4aXN0cyBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfZXhuIHMgfnN1ZmZpeCA9XG4gIG1hdGNoIGNob3Bfc3VmZml4IHMgfnN1ZmZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9zdWZmaXhfZXhuICVTICVTXCIgcyBzdWZmaXggKClcbjs7XG5cbm1vZHVsZSBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4ID0gc3RydWN0XG4gICgqIFdoZW4gdGFraW5nIGEgc3RyaW5nIHByZWZpeCBvciBzdWZmaXgsIHdlIGV4dHJhY3QgZnJvbSB0aGUgc2hvcnRlc3QgaW5wdXQgYXZhaWxhYmxlXG4gICAgIGluIGNhc2Ugd2UgY2FuIGp1c3QgcmV0dXJuIG9uZSBvZiBvdXIgaW5wdXRzIHdpdGhvdXQgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcuICopXG5cbiAgbGV0IHNob3J0ZXIgYSBiID0gaWYgbGVuZ3RoIGEgPD0gbGVuZ3RoIGIgdGhlbiBhIGVsc2UgYlxuXG4gIGxldCBzaG9ydGVzdCBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6Zmlyc3QgfmY6c2hvcnRlclxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyBmb3IgY29tbW9uIHByZWZpeC9zdWZmaXggYWJzdHJhY3Qgb3ZlciBbZ2V0X3Bvc10sIHdoaWNoIGlzXG4gICAgIGVpdGhlciBbcG9zX2Zyb21fbGVmdF0gb3IgW3Bvc19mcm9tX3JpZ2h0XS4gKilcblxuICBsZXQgcG9zX2Zyb21fbGVmdCAoXyA6IHQpIChpIDogaW50KSA9IGlcbiAgbGV0IHBvc19mcm9tX3JpZ2h0IHQgaSA9IGxlbmd0aCB0IC0gaSAtIDFcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXIgPVxuICAgIGlmIGxlbl9zb19mYXIgPj0gbWF4X2xlblxuICAgIHRoZW4gbWF4X2xlblxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbFxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBhIChnZXRfcG9zIGEgbGVuX3NvX2ZhcikpXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGIgKGdldF9wb3MgYiBsZW5fc29fZmFyKSlcbiAgICB0aGVuIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6KGxlbl9zb19mYXIgKyAxKVxuICAgIGVsc2UgbGVuX3NvX2ZhclxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyA9XG4gICAgbGV0IG1heF9sZW4gPSBtaW4gKGxlbmd0aCBhKSAobGVuZ3RoIGIpIGluXG4gICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCBsaXN0IH5nZXRfcG9zIH5tYXhfbGVuID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IG1heF9sZW5cbiAgICB8IHNlY29uZCA6OiByZXN0IC0+XG4gICAgICBsZXQgbWF4X2xlbiA9XG4gICAgICAgICgqIFdlIGNhbGwgW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW4gW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhdIHNvXG4gICAgICAgICAgIHRoYXQgW21heF9sZW5dIGxpbWl0cyBvdXIgdHJhdmVyc2FsIG9mIFtmaXJzdF0gYW5kIFtzZWNvbmRdLiAqKVxuICAgICAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgZmlyc3Qgc2Vjb25kIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgICAgIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBzZWNvbmQgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3BvcyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiAwXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBQcmVjb21wdXRpbmcgW21heF9sZW5dIGJhc2VkIG9uIFtzaG9ydGVzdCBsaXN0XSBzYXZlcyB1cyB3b3JrIGluIGxvbmdlciBzdHJpbmdzLFxuICAgICAgICAgYXQgdGhlIGNvc3Qgb2YgYW4gZXh0cmEgcGFzcyBvdmVyIHRoZSBzcGluZSBvZiBbbGlzdF0uXG5cbiAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UncmUgbG9va2luZyBmb3IgdGhlIGxvbmdlc3QgcHJlZml4IG9mIHRoZSBzdHJpbmdzOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgbGV0IGxvbmdfYSA9IExpc3QuaW5pdCAxMDAwIH5mOihGbi5jb25zdCAnYScpXG4gICAgICAgICAgICBbIGxvbmdfYTsgbG9uZ19hOyAnYWEnIF1cbiAgICAgICAgIHZ9XG5cbiAgICAgICAgIHRoZSBhcHByb2FjaCBiZWxvdyB3aWxsIGp1c3QgY2hlY2sgdGhlIGZpcnN0IHR3byBjaGFyYWN0ZXJzIG9mIGFsbCB0aGUgc3RyaW5ncy5cbiAgICAgICopXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCAoc2hvcnRlc3QgbGlzdCkgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgdGhhdCBwcm9kdWNlIGEgc3RyaW5nIGFic3RyYWN0IG92ZXIgW3Rha2VdLCB3aGljaCBpcyBlaXRoZXJcbiAgICAgW3ByZWZpeF0gb3IgW3N1ZmZpeF0uICopXG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMiBhIGIgfmdldF9wb3MgfnRha2UgPVxuICAgIGxldCBsZW4gPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyBpblxuICAgICgqIFVzZSB0aGUgc2hvcnRlciBvZiB0aGUgdHdvIHN0cmluZ3MsIHNvIHRoYXQgaWYgdGhlIHNob3J0ZXIgb25lIGlzIHRoZSBzaGFyZWRcbiAgICAgICBwcmVmaXgsIFt0YWtlXSB3b24ndCBhbGxvY2F0ZSBhbm90aGVyIHN0cmluZy4gKilcbiAgICB0YWtlIChzaG9ydGVyIGEgYikgbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljIGxpc3QgfmdldF9wb3MgfnRha2UgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogQXMgd2l0aCBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSwgd2UgYmFzZSBbbWF4X2xlbl0gb24gW3Nob3J0ZXN0IGxpc3RdLiBXZSBhbHNvXG4gICAgICAgICB1c2UgdGhpcyByZXN1bHQgZm9yIFt0YWtlXSwgYmVsb3csIHRvIHBvdGVudGlhbGx5IGF2b2lkIGFsbG9jYXRpbmcgYSBzdHJpbmcuICopXG4gICAgICBsZXQgcyA9IHNob3J0ZXN0IGxpc3QgaW5cbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIHMgaW5cbiAgICAgIGlmIG1heF9sZW4gPSAwXG4gICAgICB0aGVuIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAoKiBXZSBjYWxsIGRpcmVjdGx5IGludG8gW2NvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhblxuICAgICAgICAgICAgIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdIHRvIGF2b2lkIHJlY29tcHV0aW5nIFtzaG9ydGVzdCBsaXN0XS4gKilcbiAgICAgICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gICAgICAgIGluXG4gICAgICAgIHRha2UgcyBsZW4pXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4XG5cbiAgbGV0IGNvbW1vbl9wcmVmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuZW5kXG5cbigqIFRoZXJlIHVzZWQgdG8gYmUgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gdGhhdCB3YXMgZmFzdGVyIGZvciB2ZXJ5IHNob3J0IHN0cmluZ3NcbiAgIChwZWFraW5nIGF0IDQwJSBmYXN0ZXIgZm9yIDQtNiBjaGFyIGxvbmcgc3RyaW5ncykuXG4gICBUaGlzIG5ldyBmdW5jdGlvbiBpcyBhcm91bmQgMjAlIGZhc3RlciB0aGFuIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24sIGJ1dCBzbG93ZXJcbiAgIHRoYW4gdGhlIHByZXZpb3VzIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgdGhlIG5ldyBPQ2FtbCBmdW5jdGlvbiBpcyB3ZWxsXG4gICBiZWhhdmVkLCBhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBsZXNzIGxpa2VseSB0byBkaXZlcmdlIGZyb20gdGhlIGRlZmF1bHQgT0NhbWxcbiAgIGltcGxlbWVudGF0aW9uIGRvZXMsIHdoaWNoIGlzIGEgZGVzaXJhYmxlIHByb3BlcnR5LiAoVGhlIG9ubHkgd2F5IHRvIGF2b2lkIHRoZVxuICAgZGl2ZXJnZW5jZSBpcyB0byBleHBvc2UgdGhlIG1hY3JvIHJlZGVmaW5lZCBpbiBoYXNoX3N0dWJzLmMgaW4gdGhlIGhhc2guaCBoZWFkZXIgb2ZcbiAgIHRoZSBPQ2FtbCBjb21waWxlci4pICopXG5tb2R1bGUgSGFzaCA9IHN0cnVjdFxuICBleHRlcm5hbCBoYXNoIDogc3RyaW5nIC0+IGludCA9IFwiQmFzZV9oYXNoX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5lbmRcblxuKCogW2luY2x1ZGUgSGFzaF0gdG8gbWFrZSB0aGUgW2V4dGVybmFsXSB2ZXJzaW9uIG92ZXJyaWRlIHRoZSBbaGFzaF0gZnJvbVxuICAgW0hhc2hhYmxlLk1ha2VfYmluYWJsZV0sIHNvIHRoYXQgd2UgZ2V0IGEgbGl0dGxlIGJpdCBvZiBhIHNwZWVkdXAgYnkgZXhwb3NpbmcgaXQgYXNcbiAgIGV4dGVybmFsIGluIHRoZSBtbGkuICopXG5sZXQgXyA9IGhhc2hcblxuaW5jbHVkZSBIYXNoXG5cbigqIGZvciBpbnRlcmFjdGl2ZSB0b3AtbGV2ZWxzIC0tIG1vZHVsZXMgZGVyaXZpbmcgZnJvbSBTdHJpbmcgc2hvdWxkIGhhdmUgU3RyaW5nJ3MgcHJldHR5XG4gICBwcmludGVyLiAqKVxubGV0IHBwIHBwZiBzdHJpbmcgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiVTXCIgc3RyaW5nXG5sZXQgb2ZfY2hhciBjID0gbWFrZSAxIGNcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBCeXRlcy5zZXQgdCBpIGMpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbm1vZHVsZSBFc2NhcGluZyA9IHN0cnVjdFxuICAoKiBJZiB0aGlzIGlzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0byB1cGRhdGUgW2VzY2FwZV0sIHdoaWNoIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgdGhlXG4gICAgIGludmFyaWFudHMgY2hlY2tlZCBoZXJlLiAgKilcbiAgbGV0IGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgZnVuYyA9XG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgaWYgTGlzdC5Bc3NvYy5tZW0gZXNjYXBld29ydGh5X21hcCB+ZXF1YWw6Q2hhci5lcXVhbCBlc2NhcGVfY2hhclxuICAgICAgdGhlbiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICBlbHNlIChlc2NhcGVfY2hhciwgZXNjYXBlX2NoYXIpIDo6IGVzY2FwZXdvcnRoeV9tYXBcbiAgICBpblxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgKC0xKSBpblxuICAgIGxldCB2YWxzID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2IGZhbHNlIGluXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gT2sgYXJyXG4gICAgICB8IChjX2Zyb20sIGNfdG8pIDo6IGwgLT5cbiAgICAgICAgbGV0IGssIHYgPVxuICAgICAgICAgIG1hdGNoIGZ1bmMgd2l0aFxuICAgICAgICAgIHwgYEVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX2Zyb20sIGNfdG9cbiAgICAgICAgICB8IGBVbmVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX3RvLCBjX2Zyb21cbiAgICAgICAgaW5cbiAgICAgICAgaWYgYXJyLihrKSA8PiAtMSB8fCB2YWxzLihDaGFyLnRvX2ludCB2KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgICAgXCJlc2NhcGV3b3J0aHlfbWFwIG5vdCBvbmUtdG8tb25lXCJcbiAgICAgICAgICAgICAgIFsgXCJjX2Zyb21cIiwgc2V4cF9vZl9jaGFyIGNfZnJvbVxuICAgICAgICAgICAgICAgOyBcImNfdG9cIiwgc2V4cF9vZl9jaGFyIGNfdG9cbiAgICAgICAgICAgICAgIDsgKCBcImVzY2FwZXdvcnRoeV9tYXBcIlxuICAgICAgICAgICAgICAgICAsIHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2ZfY2hhciBzZXhwX29mX2NoYXIpIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYXJyLihrKSA8LSBDaGFyLnRvX2ludCB2O1xuICAgICAgICAgIHZhbHMuKENoYXIudG9faW50IHYpIDwtIHRydWU7XG4gICAgICAgICAgbG9vcCBsKVxuICAgIGluXG4gICAgbG9vcCBlc2NhcGV3b3J0aHlfbWFwXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBFc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogY2FsY3VsYXRlIGEgbGlzdCBvZiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpIGZpcnN0LCB0aGUgb3JkZXJcbiAgICAgICAgICAgICAgaXMgZnJvbSB0YWlsIHRvIGhlYWQgKilcbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZV9sZW4gPSByZWYgMCBpblxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlID1cbiAgICAgICAgICAgICBmb2xkaSBzcmMgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBjIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IGMpIHdpdGhcbiAgICAgICAgICAgICAgIHwgLTEgLT4gYWNjXG4gICAgICAgICAgICAgICB8IG4gLT5cbiAgICAgICAgICAgICAgICAgKCogKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSAqKVxuICAgICAgICAgICAgICAgICBpbmNyIHRvX2VzY2FwZV9sZW47XG4gICAgICAgICAgICAgICAgIChpLCBDaGFyLnVuc2FmZV9vZl9pbnQgbikgOjogYWNjKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b19lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAoKiBbdG9fZXNjYXBlXSBkaXZpZGUgW3NyY10gdG8gW0xpc3QubGVuZ3RoIHRvX2VzY2FwZSArIDFdIHBpZWNlcyBzZXBhcmF0ZWQgYnlcbiAgICAgICAgICAgICAgICB0aGUgY2hhcnMgdG8gZXNjYXBlLlxuXG4gICAgICAgICAgICAgICAgTGV0cyB0YWtlXG4gICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgIGVzY2FwZV9nZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGV3b3J0aHlfbWFwOlsoJ2EnLCAnQScpOyAoJ2InLCAnQicpOyAoJ2MnLCAnQycpXVxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBlX2NoYXI6J18nXG4gICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgYW5kIGFzc3VtZSB0aGUgc3RyaW5nIHRvIGVzY2FwZSBpc1xuXG4gICAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgICAgdGhlbiBbdG9fZXNjYXBlXSBpcyBbKDExLCAnQycpOyAoNywgJ0InKTsgKDMsICdBJyldLlxuXG4gICAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBbZHN0XSBvZiBsZW5ndGggW2xlbmd0aCBzcmMgKyAzXSB0byBzdG9yZSB0aGVcbiAgICAgICAgICAgICAgICByZXN1bHQsIGNvcHkgcGllY2UgXCIzMzNcIiB0byBbZHN0XSBkaXJlY3RseSwgdGhlbiBjb3B5ICdfJyBhbmQgJ0MnIHRvIFtkc3RdO1xuICAgICAgICAgICAgICAgIHRoZW4gbW92ZSBvbiB0byBuZXh0OyBhZnRlciAzIGl0ZXJhdGlvbnMsIGNvcHkgcGllY2UgXCIwMDBcIiBhbmQgd2UgYXJlIGRvbmUuXG5cbiAgICAgICAgICAgICAgICBGaW5hbGx5IHRoZSByZXN1bHQgd2lsbCBiZVxuXG4gICAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIiAqKVxuICAgICAgICAgICAgIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgICAgICAgICAgIGxldCBkc3RfbGVuID0gc3JjX2xlbiArICF0b19lc2NhcGVfbGVuIGluXG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBkc3RfbGVuIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCAoaWR4LCBlc2NhcGVkX2NoYXIpIDo6IHRvX2VzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKltpZHhdID0gdGhlIGNoYXIgdG8gZXNjYXBlKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSBmaXJzdCBpdGVyYXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICAgICAgICAgICAgICAgKCogY2FsY3VsYXRlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAxIGJlY2F1c2Ugd2UgZG9uJ3QgY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMSBpblxuICAgICAgICAgICAgICAgICAoKiBzZXQgdGhlIGRzdF9wb3MgdG8gY29weSB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIsIHNldCBbc3JjX3Bvc10gdG8gW2lkeCArIDFdIHRvIHNraXAgJ2MnICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDEpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMiB0byBjb3B5ICdfJyBhbmQgJ0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDIgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCBkc3RfcG9zIGVzY2FwZV9jaGFyO1xuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IChkc3RfcG9zICsgMSkgZXNjYXBlZF9jaGFyO1xuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX2VzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gZmlyc3QgKilcbiAgICAgICAgICAgICBsb29wIHNyY19sZW4gZHN0X2xlbiB0b19lc2NhcGU7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuIChlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgZXNjYXBlIH5lc2NhcGV3b3J0aHkgfmVzY2FwZV9jaGFyID1cbiAgICAoKiBGb3IgW2VzY2FwZV9nZW5fZXhuXSwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZml4IGludmFsaWQgZXNjYXBld29ydGh5X21hcCBzbyB3ZSBoYXZlXG4gICAgICAgdG8gcmFpc2UgZXhjZXB0aW9uOyBidXQgaW4gdGhpcyBjYXNlLCB3ZSBrbm93IGhvdyB0byBmaXggZHVwbGljYXRlZCBlbGVtZW50cyBpblxuICAgICAgIGVzY2FwZXdvcnRoeSBsaXN0LCBzbyB3ZSBqdXN0IGZpeCBpdCBpbnN0ZWFkIG9mIHJhaXNpbmcgZXhjZXB0aW9uIHRvIG1ha2UgdGhpc1xuICAgICAgIGZ1bmN0aW9uIGVhc2llciB0byB1c2UuICAqKVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGVzY2FwZXdvcnRoeVxuICAgICAgfD4gTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpDaGFyLmNvbXBhcmVcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gYyAtPiBjLCBjKVxuICAgIGluXG4gICAgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBVbmVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBDb250aW51ZSB0aGUgZXhhbXBsZSBpbiBbZXNjYXBlX2dlbl9leG5dLCBub3cgd2UgdW5lc2NhcGVcblxuICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiXG5cbiAgICAgICAgICAgICAgYmFjayB0b1xuXG4gICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICBUaGVuIFt0b191bmVzY2FwZV0gaXMgWzE0OyA5OyA0XSwgd2hpY2ggaXMgaW5kZXhlcyBvZiAnXydzLlxuXG4gICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgc3RyaW5nIFtkc3RdIHRvIHN0b3JlIHRoZSByZXN1bHQsIGNvcHkgXCIzMzNcIiB0byBpdCwgdGhlbiBjb3B5XG4gICAgICAgICAgICAgICdjJywgdGhlbiBtb3ZlIG9uIHRvIG5leHQgaXRlcmF0aW9uLiBBZnRlciAzIGl0ZXJhdGlvbnMgY29weSBcIjAwMFwiIGFuZCB3ZSBhcmVcbiAgICAgICAgICAgICAgZG9uZS4gICopXG4gICAgICAgICAgICgqIGluZGV4ZXMgb2YgZXNjYXBlIGNoYXJzICopXG4gICAgICAgICAgIGxldCB0b191bmVzY2FwZSA9XG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzIGFjYyA9XG4gICAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCBzcmNcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHNyYyB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMgaW5cbiAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBpbmcgLT4gaSA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGFjYykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsb29wIDAgYExpdGVyYWwgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fdW5lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZScgLT5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5ndGggc3JjIC0gTGlzdC5sZW5ndGggdG9fdW5lc2NhcGUpIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCogW2lkeF0gPSBpbmRleCBvZiBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgMXN0IGl0ZXJhdGlvbiBhcyBleGFtcGxlLCBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAyIHRvXG4gICAgICAgICAgICAgICAgICAgIHNraXAgJ19DJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAyIGluXG4gICAgICAgICAgICAgICAgICgqIHBvaW50IFtkc3RfcG9zXSB0byB0aGUgcG9zaXRpb24gdG8gY29weSBcIjMzM1wiIHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAyKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDEgdG8gY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMSBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXRcbiAgICAgICAgICAgICAgICAgICBkc3RcbiAgICAgICAgICAgICAgICAgICBkc3RfcG9zXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgc3JjLltpZHggKyAxXSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IC0xIC0+IHNyYy5baWR4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IENoYXIudW5zYWZlX29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICAgKCogdXBkYXRlIFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdICopXG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIGlkeCA8IGxlbmd0aCBzcmMgLSAxXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICgqIGZvciBlc2NhcGVkIHN0cmluZyBlbmRpbmcgd2l0aCBhbiBlc2NhcGluZyBjaGFyIGxpa2UgXCIwMDBfXCIsIGp1c3QgaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGUgbGFzdCBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjIC0gMSkgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlJztcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAodW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgdW5lc2NhcGUgfmVzY2FwZV9jaGFyID0gdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcDpbXSB+ZXNjYXBlX2NoYXJcblxuICBsZXQgcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IHJlYyBsb29wIHAgY250ID1cbiAgICAgIGlmIHAgPCAwIHx8IENoYXIuKCA8PiApIHN0ci5bcF0gZXNjYXBlX2NoYXIgdGhlbiBjbnQgZWxzZSBsb29wIChwIC0gMSkgKGNudCArIDEpXG4gICAgaW5cbiAgICBsb29wIChwb3MgLSAxKSAwXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgb2RkID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBtb2QgMiA9IDEgaW5cbiAgICBtYXRjaCBvZGQsIENoYXIuZXF1YWwgc3RyLltwb3NdIGVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IHRydWUsICh0cnVlIHwgZmFsc2UpIC0+IGBFc2NhcGVkXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBgRXNjYXBpbmdcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBjaGVja19ib3VuZCBzdHIgcG9zIGZ1bmN0aW9uX25hbWUgPVxuICAgIGlmIHBvcyA+PSBsZW5ndGggc3RyIHx8IHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCIlczogb3V0IG9mIGJvdW5kc1wiIGZ1bmN0aW9uX25hbWUgKClcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGluZyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBpbmdcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGluZyAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBlZCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBlZFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwZWQgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwaW5nIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9saXRlcmFsIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9saXRlcmFsXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpbmRleF9mcm9tXCI7XG4gICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzID1cbiAgICAgIGlmIGkgPj0gcG9zXG4gICAgICAmJiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgJiYgQ2hhci5lcXVhbCBzdHIuW2ldIGNoYXJcbiAgICAgIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGkgPSBpICsgMSBpblxuICAgICAgICBpZiBpID49IGxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgbG9vcCBpICh1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgc3RhdHVzKSlcbiAgICBpblxuICAgIGxvb3AgcG9zIChlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zKVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuICBsZXQgaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG5cbiAgbGV0IHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJyaW5kZXhfZnJvbVwiO1xuICAgICgqIGlmIHRoZSB0YXJnZXQgY2hhciBpcyB0aGUgc2FtZSBhcyBbZXNjYXBlX2NoYXJdLCB3ZSBoYXZlIG5vIHdheSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICBlc2NhcGVfY2hhciBpcyBsaXRlcmFsLCBzbyBqdXN0IHJldHVybiBOb25lICopXG4gICAgaWYgQ2hhci5lcXVhbCBjaGFyIGVzY2FwZV9jaGFyXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMFxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVzY2FwZV9jaGFycyA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgaW5cbiAgICAgICAgICBpZiBlc2NhcGVfY2hhcnMgbW9kIDIgPSAwICYmIENoYXIuZXF1YWwgc3RyLltwb3NdIGNoYXJcbiAgICAgICAgICB0aGVuIFNvbWUgcG9zXG4gICAgICAgICAgZWxzZSBsb29wIChwb3MgLSBlc2NhcGVfY2hhcnMgLSAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIHBvcylcbiAgOztcblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwicmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIGlmIGlzX2VtcHR5IHN0ciB0aGVuIE5vbmUgZWxzZSByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gIGxldCByaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgKCogW3NwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbl0gd29ya3Mgc2ltaWxhcmx5IHRvIFtTdHJpbmcuc3BsaXRfZ2VuXSwgd2l0aCBhblxuICAgICBhZGRpdGlvbmFsIHJlcXVpcmVtZW50OiBvbmx5IHNwbGl0IG9uIGxpdGVyYWwgY2hhcnMsIG5vdCBlc2NhcGluZyBvciBlc2NhcGVkICopXG4gIGxldCBzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b24gPVxuICAgIGxldCBpc19kZWxpbSA9XG4gICAgICBtYXRjaCBvbiB3aXRoXG4gICAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgICBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgcG9zID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBMaXN0LnJldiAoc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KGxlbiAtIGxhc3RfcG9zKSA6OiBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHN0YXR1cyBpblxuICAgICAgICBpZiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgICAmJiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoocG9zIC0gbGFzdF9wb3MpIGluXG4gICAgICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHN0YXR1cyAocG9zICsgMSkgKHBvcyArIDEpKVxuICAgICAgICBlbHNlIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyAocG9zICsgMSkpXG4gICAgaW5cbiAgICBsb29wIFtdIGBMaXRlcmFsIDAgMFxuICA7O1xuXG4gIGxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxuICBsZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG4gIGxldCBzcGxpdF9hdCBzdHIgcG9zID1cbiAgICBzdWIgc3RyIH5wb3M6MCB+bGVuOnBvcywgc3ViIHN0ciB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggc3RyIC0gcG9zIC0gMSlcbiAgOztcblxuICBsZXQgbHNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAoaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCByc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChyaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCBsc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAoaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG4gIGxldCByc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAocmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuXG4gICgqIFtsYXN0X25vbl9kcm9wX2xpdGVyYWxdIGFuZCBbZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYXJlIGVpdGhlciBib3RoIFtOb25lXSBvciBib3RoXG4gICAgIFtTb21lXS4gSWYgW1NvbWVdLCB0aGVuIHRoZSBmb3JtZXIgaXMgPj0gdGhlIGxhdHRlci4gKilcbiAgbGV0IGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgcmZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKVxuICA7O1xuXG4gIGxldCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICBsZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpXG4gIDs7XG5cbiAgbGV0IHJzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbiAgOztcblxuICBsZXQgbHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgMCAtPiB0XG4gICAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG4gIDs7XG5cbiAgKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbiAgbGV0IHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gICAgKCogcGVyZm9ybWFuY2UgaGFjazogYXZvaWQgY29weWluZyBbdF0gaW4gY29tbW9uIGNhc2VzICopXG4gICAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuICA7O1xuZW5kXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuKCogT3ZlcnJpZGUgW1NlYXJjaF9wYXR0ZXJuXSB3aXRoIGRlZmF1bHQgY2FzZS1zZW5zaXRpdml0eSBhcmd1bWVudCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgZmlsZSwgc28gdGhhdCBjYWxsIHNpdGVzIGFib3ZlIGFyZSBmb3JjZWQgdG8gc3VwcGx5IGNhc2Utc2Vuc2l0aXZpdHkgZXhwbGljaXRseS4gKilcbm1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IHN0cnVjdFxuICBpbmNsdWRlIFNlYXJjaF9wYXR0ZXJuMFxuXG4gIGxldCBjcmVhdGUgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpIHBhdHRlcm4gPSBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmVcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChieXRlc19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ieXRlcyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBieXRlc19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQnl0ZXMwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJ5dGVzXCJcbiAgbGV0IHBwIGZtdCB0ID0gQ2FtbC5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiICh0b19zdHJpbmcgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFRvX2J5dGVzID0gQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFQpIChUb19ieXRlcylcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIGVuZClcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgbiAwXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIkJ5dGVzLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gc2V0IHQgaSBjKTtcbiAgdFxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgKGkgLSAxKSAodW5zYWZlX2dldCB0IGkgOjogYWNjKVxuICBpblxuICBsb29wIHQgKGxlbmd0aCB0IC0gMSkgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcbmxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gbWFwaSB0IH5mXG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBwb3MgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzIGkpIHRhcmdldCB0aGVuIHVuc2FmZV9zZXQgcyBpIHJlcGxhY2VtZW50XG4gIGRvbmVcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAwXG4gIHRoZW4gc3RhZ2UgaWdub3JlXG4gIGVsc2UgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgMFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGk6IHJlcGxhY2VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgaWdub3JlXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHMgaSAoU3RyaW5nLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCAodW5zYWZlX2dldCBzIGkpKSlcbiAgICAgICAgZG9uZSkpXG47O1xuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgY29udGFpbnMgP3BvcyA/bGVuIHQgY2hhciA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbGFzdCA9IHBvcyArIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIGxhc3RcbiAgICAmJiAoQ2hhci5lcXVhbCAoZ2V0IHQgaSkgY2hhciB8fCBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIjIDEgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gXG50eXBlIHJlc3VsdCA9XG58IE5lZyBvZiBzdHJpbmdcbnwgUG9zIG9mIHN0cmluZ1xuXG4jIDggXCJzcmMvaGV4X2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDgyXFwwMDBcXDEwNVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBwYXJzZV9oZXggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxMzUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOZWcgYm9keSApXG4jIDEzOSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDE0NSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIFBvcyBib2R5IClcbiMgMTQ5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBjb252ZXJ0X2ZhaWx1cmUgeCBhIGIgdG9fc3RyaW5nID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIGZhaWxlZDogJXMgaXMgb3V0IG9mIHJhbmdlXCJcbiAgICBhXG4gICAgYlxuICAgICh0b19zdHJpbmcgeClcbiAgICAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBudW1fYml0c19pbnQgPSBTeXMuaW50X3NpemVfaW5fYml0c1xubGV0IG51bV9iaXRzX2ludDMyID0gMzJcbmxldCBudW1fYml0c19pbnQ2NCA9IDY0XG5sZXQgbnVtX2JpdHNfbmF0aXZlaW50ID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50ID0gNjMgfHwgbnVtX2JpdHNfaW50ID0gMzEgfHwgbnVtX2JpdHNfaW50ID0gMzIpXG5sZXQgbWluX2ludDMyID0gQ2FtbC5JbnQzMi5taW5faW50XG5sZXQgbWF4X2ludDMyID0gQ2FtbC5JbnQzMi5tYXhfaW50XG5sZXQgbWluX2ludDY0ID0gQ2FtbC5JbnQ2NC5taW5faW50XG5sZXQgbWF4X2ludDY0ID0gQ2FtbC5JbnQ2NC5tYXhfaW50XG5sZXQgbWluX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm1pbl9pbnRcbmxldCBtYXhfbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQubWF4X2ludFxubGV0IGludF90b19zdHJpbmcgPSBDYW1sLnN0cmluZ19vZl9pbnRcbmxldCBpbnQzMl90b19zdHJpbmcgPSBDYW1sLkludDMyLnRvX3N0cmluZ1xubGV0IGludDY0X3RvX3N0cmluZyA9IENhbWwuSW50NjQudG9fc3RyaW5nXG5sZXQgbmF0aXZlaW50X3RvX3N0cmluZyA9IENhbWwuTmF0aXZlaW50LnRvX3N0cmluZ1xuXG4oKiBpbnQgPC0+IGludDMyICopXG5cbmxldCBpbnRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnRcIiBcImludDMyXCIgaW50X3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDMyXCIgXCJpbnRcIiBpbnQzMl90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfdHJ1bmMgPSBDYW1sLkludDMyLnRvX2ludFxubGV0IGludF90b19pbnQzMl90cnVuYyA9IENhbWwuSW50MzIub2ZfaW50XG5cbmxldCBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX2ludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX2ludF90cnVuYyBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9faW50X3RydW5jIG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQzMiBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50MzIgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnRfdG9faW50MzIgeCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50MzJfdG9faW50IHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50MzJfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBpbnRfdG9faW50MzJfdHJ1bmMgeCBlbHNlIGludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbmxldCBpbnQzMl90b19pbnRfZXhuIHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50MzJfdG9faW50X3RydW5jIHggZWxzZSBpbnQzMl90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludF90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfaW50XG5sZXQgaW50NjRfdG9faW50X3RydW5jID0gQ2FtbC5JbnQ2NC50b19pbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgbGV0IG1pbiA9IGludF90b19pbnQ2NCBJbnQubWluX3ZhbHVlIGluXG4gIGxldCBtYXggPSBpbnRfdG9faW50NjQgSW50Lm1heF92YWx1ZSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50IHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludF9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQ2NF90b19pbnRfdHJ1bmMgeCBlbHNlIGludDY0X3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnRcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50X3RvX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm9mX2ludFxubGV0IG5hdGl2ZWludF90b19pbnRfdHJ1bmMgPSBDYW1sLk5hdGl2ZWludC50b19pbnRcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9fbmF0aXZlaW50IEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX25hdGl2ZWludCBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50X3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQzMlwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludDMyX3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9pbnQzMlxubGV0IGludDY0X3RvX2ludDMyX3RydW5jID0gQ2FtbC5JbnQ2NC50b19pbnQzMlxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGxldCBtaW4gPSBpbnQzMl90b19pbnQ2NCBtaW5faW50MzIgaW5cbiAgbGV0IG1heCA9IGludDMyX3RvX2ludDY0IG1heF9pbnQzMiBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzIgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gaW50NjRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9XG4gIGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnQzMlwiIG5hdGl2ZWludF90b19zdHJpbmdcbjs7XG5cbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDMyX3RvX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm9mX2ludDMyXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX3RydW5jID0gQ2FtbC5OYXRpdmVpbnQudG9faW50MzJcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9fbmF0aXZlaW50IG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19uYXRpdmVpbnQgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMiB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIFNvbWUgKG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gbmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwibmF0aXZlaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDY0ID49IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgPSBDYW1sLkludDY0LnRvX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfbmF0aXZlaW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCA9XG4gIGlmIG51bV9iaXRzX2ludDY0IDw9IG51bV9iaXRzX25hdGl2ZWludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IG5hdGl2ZWludF90b19pbnQ2NCBtaW5fbmF0aXZlaW50IGluXG4gICAgbGV0IG1heCA9IG5hdGl2ZWludF90b19pbnQ2NCBtYXhfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBTb21lIChpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IGludDYzICopXG5cbmxldCBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQ2M1wiIGludDY0X3RvX3N0cmluZ1xuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyA9XG4gIGxldCBtaW4gPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IG1pbl9pbnQ2NCAxIGluXG4gIGxldCBtYXggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IG1heF9pbnQ2NCAxIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF9maXRfb25faW50NjNfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiAoKSBlbHNlIGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeFxuOztcblxuKCogc3RyaW5nIGNvbnZlcnNpb25zICopXG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgPVxuICBsZXQgaW5wdXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBpZiBpbnB1dF9sZW5ndGggPD0gY2hhcnNfcGVyX2RlbGltaXRlclxuICB0aGVuIGlucHV0XG4gIGVsc2UgKFxuICAgIGxldCBoYXNfc2lnbiA9XG4gICAgICBtYXRjaCBpbnB1dC5bMF0gd2l0aFxuICAgICAgfCAnKycgfCAnLScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgbnVtX2RpZ2l0cyA9IGlmIGhhc19zaWduIHRoZW4gaW5wdXRfbGVuZ3RoIC0gMSBlbHNlIGlucHV0X2xlbmd0aCBpblxuICAgIGxldCBudW1fZGVsaW1pdGVycyA9IChudW1fZGlnaXRzIC0gMSkgLyBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IG91dHB1dF9sZW5ndGggPSBpbnB1dF9sZW5ndGggKyBudW1fZGVsaW1pdGVycyBpblxuICAgIGxldCBvdXRwdXQgPSBCeXRlcy5jcmVhdGUgb3V0cHV0X2xlbmd0aCBpblxuICAgIGxldCBpbnB1dF9wb3MgPSByZWYgKGlucHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG91dHB1dF9wb3MgPSByZWYgKG91dHB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gcmVmIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgZmlyc3RfZGlnaXRfcG9zID0gaWYgaGFzX3NpZ24gdGhlbiAxIGVsc2UgMCBpblxuICAgIHdoaWxlICFpbnB1dF9wb3MgPj0gZmlyc3RfZGlnaXRfcG9zIGRvXG4gICAgICBpZiAhbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGRlbGltaXRlcjtcbiAgICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgICBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIDo9IGNoYXJzX3Blcl9kZWxpbWl0ZXIpO1xuICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBpbnB1dC5bIWlucHV0X3Bvc107XG4gICAgICBkZWNyIGlucHV0X3BvcztcbiAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgIGRlY3IgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlclxuICAgIGRvbmU7XG4gICAgaWYgaGFzX3NpZ24gdGhlbiBCeXRlcy5zZXQgb3V0cHV0IDAgaW5wdXQuWzBdO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0cHV0KVxuOztcblxubGV0IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlciA9XG4gIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlcjozXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzIGlucHV0ID0gaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyOidfJ1xubGV0IHNleHBfb2ZfaW50X3N0eWxlID0gU2V4cC5vZl9pbnRfc3R5bGVcblxubW9kdWxlIE1ha2UgKEkgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIElcblxuICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDNcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9XG4gICAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAodG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHQgaW5cbiAgICBTZXhwLkF0b21cbiAgICAgIChtYXRjaCAhc2V4cF9vZl9pbnRfc3R5bGUgd2l0aFxuICAgICAgIHwgYFVuZGVyc2NvcmVzIC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgcyB+Y2hhcnNfcGVyX2RlbGltaXRlciB+ZGVsaW1pdGVyOidfJ1xuICAgICAgIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaGV4IChJIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRfaGV4ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoSS5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIEkuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gSS5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gNFxuXG4gICAgbGV0IHRvX3N0cmluZycgP2RlbGltaXRlciB0ID1cbiAgICAgIGxldCBtYWtlX3N1ZmZpeCA9XG4gICAgICAgIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJLnRvX3N0cmluZ1xuICAgICAgICB8IFNvbWUgZGVsaW1pdGVyIC0+XG4gICAgICAgICAgZnVuIHQgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAoSS50b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICAgICAgaW5cbiAgICAgIGlmIEkuKCA8ICkgdCBJLnplcm8gdGhlbiBcIi0weFwiIF4gbWFrZV9zdWZmaXggKEkubmVnIHQpIGVsc2UgXCIweFwiIF4gbWFrZV9zdWZmaXggdFxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmcnIHQgP2RlbGltaXRlcjpOb25lXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPSB0b19zdHJpbmcnIHQgfmRlbGltaXRlclxuXG4gICAgbGV0IGludmFsaWQgc3RyID1cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCIlcy5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiBJLm1vZHVsZV9uYW1lIHN0ciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIHN0ciA9XG4gICAgICBJLm9mX3N0cmluZyAoU3RyaW5nLmZpbHRlciBzdHIgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgJ18nKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgbGV0IG1vZHVsZSBMID0gSGV4X2xleGVyIGluXG4gICAgICBsZXQgbGV4ID0gQ2FtbC5MZXhpbmcuZnJvbV9zdHJpbmcgc3RyIGluXG4gICAgICBsZXQgcmVzdWx0ID0gT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTC5wYXJzZV9oZXggbGV4KSBpblxuICAgICAgaWYgbGV4LmxleF9jdXJyX3BvcyA9IGxleC5sZXhfYnVmZmVyX2xlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkIHN0clxuICAgICAgICB8IFNvbWUgKE5lZyBib2R5KSAtPiBJLm5lZyAob2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICAgIHwgU29tZSAoUG9zIGJvZHkpIC0+IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgZWxzZSBpbnZhbGlkIHN0clxuICAgIDs7XG5cbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGV4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBUX2hleFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVF9oZXgpXG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgd2FzIGF1dG9nZW5lcmF0ZWQgYnkgLi4vZ2VuZXJhdGUvZ2VuZXJhdGVfcG93X292ZXJmbG93X2JvdW5kcy5leGUgKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBoYXZlIHRvIHVzZSBJbnQ2NC50b19pbnRfZXhuIGluc3RlYWQgb2YgaW50IGNvbnN0YW50cyB0byBtYWtlXG4gICBzdXJlIHRoYXQgZmlsZSBjYW4gYmUgcHJlcHJvY2Vzc2VkIG9uIDMyLWJpdCBtYWNoaW5lcy4gKilcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQzMl92YWx1ZSA6IGludDMyID1cbiAgMjE0NzQ4MzY0N2xcblxubGV0IGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDMyIGFycmF5ID1cbiAgW3wgMjE0NzQ4MzY0N2xcbiAgOyAgMjE0NzQ4MzY0N2xcbiAgOyAgNDYzNDBsXG4gIDsgIDEyOTBsXG4gIDsgIDIxNWxcbiAgOyAgNzNsXG4gIDsgIDM1bFxuICA7ICAyMWxcbiAgOyAgMTRsXG4gIDsgIDEwbFxuICA7ICA4bFxuICA7ICA3bFxuICA7ICA1bFxuICA7ICA1bFxuICA7ICA0bFxuICA7ICA0bFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludF92YWx1ZSA6IGludCA9XG4gICgtMSkgbHNyIDFcblxubGV0IGludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQgYXJyYXkgPVxuICBtYXRjaCBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50IHdpdGhcbiAgfCAzMiAtPiBBcnJheS5tYXAgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIH5mOkNhbWwuSW50MzIudG9faW50XG4gIHwgNjMgLT5cbiAgICBbfCBDYW1sLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIENhbWwuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgQ2FtbC5JbnQ2NC50b19pbnQgMjE0NzQ4MzY0N0xcbiAgICA7ICAxNjY0NTEwXG4gICAgOyAgNDYzNDBcbiAgICA7ICA1NDA0XG4gICAgOyAgMTI5MFxuICAgIDsgIDQ2M1xuICAgIDsgIDIxNVxuICAgIDsgIDExOFxuICAgIDsgIDczXG4gICAgOyAgNDlcbiAgICA7ICAzNVxuICAgIDsgIDI3XG4gICAgOyAgMjFcbiAgICA7ICAxN1xuICAgIDsgIDE0XG4gICAgOyAgMTJcbiAgICA7ICAxMFxuICAgIDsgIDlcbiAgICA7ICA4XG4gICAgOyAgN1xuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgMzEgLT5cbiAgICBbfCAxMDczNzQxODIzXG4gICAgOyAgMTA3Mzc0MTgyM1xuICAgIDsgIDMyNzY3XG4gICAgOyAgMTAyM1xuICAgIDsgIDE4MVxuICAgIDsgIDYzXG4gICAgOyAgMzFcbiAgICA7ICAxOVxuICAgIDsgIDEzXG4gICAgOyAgMTBcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDQ2MTE2ODYwMTg0MjczODc5MDNMXG5cbmxldCBpbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDIxNDc0ODM2NDdMXG4gIDsgIDE2NjQ1MTBMXG4gIDsgIDQ2MzQwTFxuICA7ICA1NDA0TFxuICA7ICAxMjkwTFxuICA7ICA0NjNMXG4gIDsgIDIxNUxcbiAgOyAgMTE4TFxuICA7ICA3M0xcbiAgOyAgNDlMXG4gIDsgIDM1TFxuICA7ICAyN0xcbiAgOyAgMjFMXG4gIDsgIDE3TFxuICA7ICAxNExcbiAgOyAgMTJMXG4gIDsgIDEwTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuXG5sZXQgaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAzMDM3MDAwNDk5TFxuICA7ICAyMDk3MTUxTFxuICA7ICA1NTEwOExcbiAgOyAgNjIwOExcbiAgOyAgMTQ0OExcbiAgOyAgNTExTFxuICA7ICAyMzRMXG4gIDsgIDEyN0xcbiAgOyAgNzhMXG4gIDsgIDUyTFxuICA7ICAzOExcbiAgOyAgMjhMXG4gIDsgIDIyTFxuICA7ICAxOExcbiAgOyAgMTVMXG4gIDsgIDEzTFxuICA7ICAxMUxcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgfF1cblxubGV0IGludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtMzAzNzAwMDQ5OUxcbiAgOyAgLTIwOTcxNTFMXG4gIDsgIC01NTEwOExcbiAgOyAgLTYyMDhMXG4gIDsgIC0xNDQ4TFxuICA7ICAtNTExTFxuICA7ICAtMjM0TFxuICA7ICAtMTI3TFxuICA7ICAtNzhMXG4gIDsgIC01MkxcbiAgOyAgLTM4TFxuICA7ICAtMjhMXG4gIDsgIC0yMkxcbiAgOyAgLTE4TFxuICA7ICAtMTVMXG4gIDsgIC0xM0xcbiAgOyAgLTExTFxuICA7ICAtOUxcbiAgOyAgLThMXG4gIDsgIC03TFxuICA7ICAtN0xcbiAgOyAgLTZMXG4gIDsgIC02TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0xTFxuICB8XVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgbmVnYXRpdmVfZXhwb25lbnQgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiZXhwb25lbnQgY2FuIG5vdCBiZSBuZWdhdGl2ZVwiICgpXG5sZXQgb3ZlcmZsb3cgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiaW50ZWdlciBvdmVyZmxvdyBpbiBwb3dcIiAoKVxuXG4oKiBUbyBpbXBsZW1lbnQgW2ludDY0X3Bvd10sIHdlIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gT0NhbWwgdG8gZWxpbWluYXRlIGFsbG9jYXRpb24uICopXG5leHRlcm5hbCBpbnRfbWF0aF9pbnRfcG93IDogaW50IC0+IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGludF9tYXRoX2ludDY0X3BvdyA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViXCJcblxubGV0IGludF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGlmIGV4cG9uZW50IDwgMCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFcbiAgJiYgKGV4cG9uZW50ID4gNjNcbiAgICAgIHx8IGFicyBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLihleHBvbmVudCkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIEludDY0X3dpdGhfY29tcGFyaXNvbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW1sLkludDY0XG5cbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPj0gKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZW5kXG5cbigqIHdlIGRvbid0IGRvIFthYnNdIGluIGludDY0IGNhc2UgdG8gYXZvaWQgYWxsb2NhdGlvbiAqKVxubGV0IGludDY0X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIChiYXNlID4gMUwgfHwgYmFzZSA8IC0xTClcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCAoYmFzZSA+PSAwTFxuICAgICAgICAgICYmIGJhc2UgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICAgICAgKVxuICAgICAgfHwgKGJhc2UgPCAwTFxuICAgICAgICAgICYmIGJhc2UgPCBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICAgICAgKSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbmxldCBpbnQ2M19wb3dfb25faW50NjQgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFMXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgYWJzIGJhc2VcbiAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBGbG9hdGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCB+LSApIDogdCAtPiB0XG5cbiAgaW5jbHVkZSBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChYIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG9wZW4gWFxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IFgucmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0IG9uZSA9IG9mX2ludF9leG4gMVxuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICAoKiogZmxvYXQgZGl2aXNpb24gb2YgaW50ZWdlcnMgKilcbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBsZXQgcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID0gaSAtIChpICUgbW9kdWx1cylcblxuICBsZXQgcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgaWYgcmVtYWluZGVyID0gemVybyB0aGVuIGkgZWxzZSBpICsgbW9kdWx1cyAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIGlmIGkgPSB6ZXJvXG4gICAgdGhlbiB6ZXJvXG4gICAgZWxzZSBpZiBpID4gemVyb1xuICAgIHRoZW4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIGVsc2Ugcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcblxuICBsZXQgcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBsZXQgbW9kdWx1c19taW51c19yZW1haW5kZXIgPSBtb2R1bHVzIC0gcmVtYWluZGVyIGluXG4gICAgaWYgbW9kdWx1c19taW51c19yZW1haW5kZXIgPD0gcmVtYWluZGVyXG4gICAgdGhlbiBpICsgbW9kdWx1c19taW51c19yZW1haW5kZXJcbiAgICBlbHNlIGkgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgRG93biAtPiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgVXAgLT4gcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpbnRfcG93ID0gaW50X3Bvd1xuICBsZXQgaW50NjRfcG93ID0gaW50NjRfcG93XG4gIGxldCBpbnQ2M19wb3dfb25faW50NjQgPSBpbnQ2M19wb3dfb25faW50NjRcblxuICBtb2R1bGUgUG93X292ZXJmbG93X2JvdW5kcyA9IFBvd19vdmVyZmxvd19ib3VuZHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIEMgc3R1YiBmb3IgaW50IHBvcGNvdW50IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG5leHRlcm5hbCBpbnRfcG9wY291bnQgOiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudFwiIFtAQG5vYWxsb2NdXG5cbigqIFRvIG1haW50YWluIGphdmFzY3JpcHQgY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIHVuYm94aW5nLCB3ZSBpbXBsZW1lbnQgcG9wY291bnQgaW5cbiAgIE9DYW1sIHJhdGhlciB0aGFuIHVzZSBDIHN0dWJzLiBJbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZyb206XG4gICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYW1taW5nX3dlaWdodCNFZmZpY2llbnRfaW1wbGVtZW50YXRpb24gKilcbmxldCBpbnQ2NF9wb3Bjb3VudCA9XG4gIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgbGV0ICggKyApID0gYWRkIGluXG4gIGxldCAoIC0gKSA9IHN1YiBpblxuICBsZXQgKCAqICkgPSBtdWwgaW5cbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsIGluXG4gIGxldCAoIGxhbmQgKSA9IGxvZ2FuZCBpblxuICBsZXQgbTEgPSAweDU1NTU1NTU1NTU1NTU1NTVMIGluXG4gICgqIDBiMDEwMTAxMDEuLi4gKilcbiAgbGV0IG0yID0gMHgzMzMzMzMzMzMzMzMzMzMzTCBpblxuICAoKiAwYjAwMTEwMDExLi4uICopXG4gIGxldCBtNCA9IDB4MGYwZjBmMGYwZjBmMGYwZkwgaW5cbiAgKCogMGIwMDAwMTExMS4uLiAqKVxuICBsZXQgaDAxID0gMHgwMTAxMDEwMTAxMDEwMTAxTCBpblxuICAoKiAxIGJpdCBzZXQgcGVyIGJ5dGUgKilcbiAgZnVuIFtAaW5saW5lXSB4IC0+XG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IHBhaXIgb2YgYml0cyAqKVxuICAgIGxldCB4ID0geCAtICgoeCBsc3IgMSkgbGFuZCBtMSkgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgNCBiaXRzICopXG4gICAgbGV0IHggPSAoeCBsYW5kIG0yKSArICgoeCBsc3IgMikgbGFuZCBtMikgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgYnl0ZSAqKVxuICAgIGxldCB4ID0gKHggKyAoeCBsc3IgNCkpIGxhbmQgbTQgaW5cbiAgICAoKiBzdW0gdGhlIGJpdCBjb3VudHMgaW4gdGhlIHRvcCBieXRlIGFuZCBzaGlmdCBpdCBkb3duICopXG4gICAgdG9faW50ICgoeCAqIGgwMSkgbHNyIDU2KVxuOztcblxubGV0IGludDMyX3BvcGNvdW50ID1cbiAgKCogT24gNjQtYml0IHN5c3RlbXMsIHRoaXMgaXMgZmFzdGVyIHRoYW4gaW1wbGVtZW50aW5nIHVzaW5nIFtpbnQzMl0gYXJpdGhtZXRpYy4gKilcbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZkwgaW5cbiAgZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChDYW1sLkludDY0LmxvZ2FuZCAoQ2FtbC5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrKVxuOztcblxubGV0IG5hdGl2ZWludF9wb3Bjb3VudCA9XG4gIG1hdGNoIENhbWwuTmF0aXZlaW50LnNpemUgd2l0aFxuICB8IDMyIC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQzMl9wb3Bjb3VudCAoQ2FtbC5OYXRpdmVpbnQudG9faW50MzIgeClcbiAgfCA2NCAtPiBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKENhbWwuSW50NjQub2ZfbmF0aXZlaW50IHgpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2lnbjBcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFNpZ24wKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTEuXG4gIHwgWmVybyAtPiAwLlxuICB8IFBvcyAtPiAxLlxuOztcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9IG9mX2ludCAodG9faW50IHQgKiB0b19pbnQgdCcpXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGF0IHRoZSBlbmQsIGFmdGVyIGFueVxuICAgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc29cbiAgIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpc1xuICAgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRfaW50ZlxuaW5jbHVkZSBJbnQwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSB4IHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgeCB5XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgIHwgXyAtPiBQcmludGYuZmFpbHdpdGhmIFwiSW50Lm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuZW5kXG5cbmxldCBudW1fYml0cyA9IEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHRvX2Zsb2F0ID0gQ2FtbC5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBDYW1sLmludF9vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBDYW1sLmludF9vZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiV4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIleFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIG9mX2ludDMyX3RydW5jIDogaW50MzIgLT4gdCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcblxubGV0IHByZWQgaSA9IGkgLSAxXG5sZXQgc3VjYyBpID0gaSArIDFcbmxldCB0b19pbnQgaSA9IGlcbmxldCB0b19pbnRfZXhuID0gdG9faW50XG5sZXQgb2ZfaW50IGkgPSBpXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IG1heF92YWx1ZSA9IENhbWwubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IENhbWwubWluX2ludFxubGV0IG1heF92YWx1ZV8zMF9iaXRzID0gMHgzRkZGX0ZGRkZcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgb2ZfaW50MzJfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50MzIgPSBDb252LmludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCB0b19pbnQ2NCA9IENvbnYuaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgYWJzIHggPSBhYnMgeFxuXG4oKiBub3RlIHRoYXQgcmVtIGlzIG5vdCBzYW1lIGFzICUgKilcbmxldCByZW0gYSBiID0gYSBtb2QgYlxubGV0IGluY3IgPSBDYW1sLmluY3JcbmxldCBkZWNyID0gQ2FtbC5kZWNyXG5sZXQgc2hpZnRfcmlnaHQgYSBiID0gYSBhc3IgYlxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYSBiID0gYSBsc3IgYlxubGV0IHNoaWZ0X2xlZnQgYSBiID0gYSBsc2wgYlxubGV0IGJpdF9ub3QgYSA9IGxub3QgYVxubGV0IGJpdF9vciBhIGIgPSBhIGxvciBiXG5sZXQgYml0X2FuZCBhIGIgPSBhIGxhbmQgYlxubGV0IGJpdF94b3IgYSBiID0gYSBseG9yIGJcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludF9wb3dcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCAtIDEgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggKyAxXG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4IC0gKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCAoeCAtIDEpID0gMFxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoKiBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgdGFnZ2VkIGludCBoZXJlLiBTZWUgaW50X21hdGhfc3R1YnMuYyBmb3IgZGV0YWlscyBvbiB3aHlcbiAgICAgICAgICB0aGlzIGlzIGNvcnJlY3QuICopXG4gICAgaW50XG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2Nsel91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludFtAdW50YWdnZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jdHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBpZiBpID0gMSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoaSAtIDEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBzaWduID0gU2lnbi5vZl9pbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludF9wb3Bjb3VudFxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG4gIGV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuICBleHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbiAgZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG4gIGV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogdCAtPiB0ID0gXCIlbmVnaW50XCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIG1vZHVsZSBGID0gSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBGXG5cbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcblxuICAoKiBUaGVzZSBpbmxpbmVkIHZlcnNpb25zIG9mICglKSwgKC8lKSwgYW5kICgvLykgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBmdW5jdG9yaXplZFxuICAgICBjb3VudGVycGFydHMgaW4gW0ZdIChzZWUgYmVuY2htYXJrcyBiZWxvdykuXG5cbiAgICAgVGhlIHJlYXNvbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZWQgaW4gW0ludF0gYnV0IG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIGludGVnZXJcbiAgICAgbW9kdWxlcyBpcyB0aGF0IHRoZXkgZXhpc3RlZCBpbiBbSW50XSBhbmQgW0ludF0gYWxvbmUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZlxuICAgICB0aGUgW0ludF9tYXRoLk1ha2VdIGZ1bmN0b3IsIGFuZCB3ZSBkaWRuJ3Qgd2FudCB0byBkZWdyYWRlIHRoZWlyIHBlcmZvcm1hbmNlLlxuXG4gICAgIFdlIHdvbid0IHByZS1lbXB0aXZlbHkgZG8gdGhlIHNhbWUgZm9yIG5ldyBmdW5jdGlvbnMsIHVubGVzcyBzb21lb25lIGNhcmVzLCBvbiBhIGNhc2VcbiAgICAgYnkgY2FzZSBmYXNoaW9uLiAgKilcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gcmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuICBleHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG4gIGV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG4gIGxldCBsbm90ID0gbG5vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG4gIGV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG4gIGV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnRdIGFuZCBbSW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9fRiA9IE8uRlxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBpbmNsdWRpbmcgZnVuY3RvclxuICAgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFVjaGFyMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5VY2hhclwiXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gSGFzaC5mb2xkX2ludCBzdGF0ZSAodG9faW50IHQpXG4gIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGxldCB0b19zdHJpbmcgdCA9IFByaW50Zi5zcHJpbnRmIFwiVSslMDRYXCIgKHRvX2ludCB0KVxuXG4gICgqIERvIG5vdCBhY3R1YWxseSBleHBvcnQgdGhpcy4gU2VlIGRpc2N1c3Npb24gaW4gdGhlIC5tbGkgKilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IENhbWwuU2NhbmYuc3NjYW5mIHMgXCJVKyVYXCIgKGZ1biBpIC0+IFVjaGFyMC5vZl9pbnQgaSkgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG9mIHRoZSBmb3JtIFUrWFhYWCBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGludF9pc19zY2FsYXIgPSBpc192YWxpZFxuXG5sZXQgc3VjY19leG4gYyA9XG4gIHRyeSBVY2hhcjAuc3VjYyBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5zdWNjX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBzdWNjIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnN1Y2MgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgcHJlZF9leG4gYyA9XG4gIHRyeSBVY2hhcjAucHJlZCBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5wcmVkX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBwcmVkIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnByZWQgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgb2Zfc2NhbGFyIGkgPSBpZiBpbnRfaXNfc2NhbGFyIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2Zfc2NhbGFyX2V4biBpID1cbiAgaWYgaW50X2lzX3NjYWxhciBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIub2ZfaW50X2V4biBnb3QgYSBpbnZhbGlkIFVuaWNvZGUgc2NhbGFyIHZhbHVlOiAlMDRYXCIgaSAoKVxuOztcblxubGV0IHRvX3NjYWxhciB0ID0gVWNoYXIwLnRvX2ludCB0XG5sZXQgdG9fY2hhciBjID0gaWYgaXNfY2hhciBjIHRoZW4gU29tZSAodW5zYWZlX3RvX2NoYXIgYykgZWxzZSBOb25lXG5cbmxldCB0b19jaGFyX2V4biBjID1cbiAgaWYgaXNfY2hhciBjXG4gIHRoZW4gdW5zYWZlX3RvX2NoYXIgY1xuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLnRvX2NoYXJfZXhuIGdvdCBhIG5vbiBsYXRpbi0xIGNoYXJhY3RlcjogVSslMDRYXCIgKHRvX2ludCBjKSAoKVxuOztcblxubGV0IHV0ZjhfYnl0ZV9sZW5ndGggdWNoYXIgPVxuICBsZXQgY29kZXBvaW50ID0gdG9fc2NhbGFyIHVjaGFyIGluXG4gIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODAwXG4gIHRoZW4gMlxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHgxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSA0XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2EpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDAzXyBiX18wMDRfKVxuICAgICAgOiAgKChhX18wMDNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMDNfLCBiX18wMDRfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gVCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJUXCJcbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IHN5bSAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGIsIGEpIHQgPSBUXG5sZXQgdHJhbnMgKHR5cGUgYSBiIGMpIChUIDogKGEsIGIpIHQpIChUIDogKGIsIGMpIHQpIDogKGEsIGMpIHQgPSBUXG5sZXQgY29udiAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIChhIDogYSkgOiBiID0gYVxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuXG5tb2R1bGUgTGlmdDIgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpXG4gICAgOiAoKGExLCBhMikgWC50LCAoYjEsIGIyKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbm1vZHVsZSBMaWZ0MyAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIgYTMgYjMpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSAoVCA6IChhMywgYjMpIHQpXG4gICAgOiAoKGExLCBhMiwgYTMpIFgudCwgKGIxLCBiMiwgYjMpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubGV0IGRldHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSAqIGEyLCBiMSAqIGIyKSB0KSA6IChhMSwgYjEpIHQgKiAoYTIsIGIyKSB0ID1cbiAgVCwgVFxuOztcblxubGV0IHR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIDogKGExICogYTIsIGIxICogYjIpIHQgPSBUXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgc3RyaXAgOiAoJ2EgdCwgJ2IgdCkgZXF1YWwgLT4gKCdhLCAnYikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0XG5cbiAgdmFsIHN0cmlwIDogKCgnYTEsICdhMikgdCwgKCdiMSwgJ2IyKSB0KSBlcXVhbCAtPiAoJ2ExLCAnYjEpIGVxdWFsICogKCdhMiwgJ2IyKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSBDb21wb3NpdGlvbl9wcmVzZXJ2ZXNfaW5qZWN0aXZpdHkgKE0xIDogSW5qZWN0aXZlKSAoTTIgOiBJbmplY3RpdmUpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE0xLnQgTTIudFxuXG4gIGxldCBzdHJpcCBlID0gTTEuc3RyaXAgKE0yLnN0cmlwIGUpXG5lbmRcblxubW9kdWxlIElkID0gc3RydWN0XG4gIG1vZHVsZSBVaWQgPSBJbnRcblxuICBtb2R1bGUgV2l0bmVzcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gLi5cbiAgICAgIHR5cGUgdHlwZV93aXRuZXNzX2ludCA9IFsgYHR5cGVfd2l0bmVzcyBvZiBpbnQgXSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgbGV0IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludCA9XG4gICAgICAgIChmdW4gKGB0eXBlX3dpdG5lc3Mgdl9fMDA1XykgLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidHlwZV93aXRuZXNzXCI7IHNleHBfb2ZfaW50IHZfXzAwNV8gXVxuICAgICAgICAgICA6IHR5cGVfd2l0bmVzc19pbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgOztcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCBfc2V4cF9vZl9hIHQgPVxuICAgICAgICBgdHlwZV93aXRuZXNzXG4gICAgICAgICAgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KSlcbiAgICAgICAgfD4gc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgc2V4cF9vZl90ICh0eXBlIGEpIHNleHBfb2ZfYSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgTS5LZXkgfD4gS2V5LnNleHBfb2ZfdCBzZXhwX29mX2FcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSB0KSAoKSA9XG4gICAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdWlkICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgTS5LZXkpXG4gICAgOztcblxuICAgICgqIFdlIHdhbnQgYSBjb25zdGFudCBhbGxvY2F0ZWQgb25jZSB0aGF0IFtzYW1lXSBjYW4gcmV0dXJuIHdoZW5ldmVyIGl0IGdldHMgdGhlIHNhbWVcbiAgICAgICB3aXRuZXNzZXMuICBJZiB3ZSB3cml0ZSB0aGUgY29uc3RhbnQgaW5zaWRlIHRoZSBib2R5IG9mIFtzYW1lXSwgdGhlIG5hdGl2ZS1jb2RlXG4gICAgICAgY29tcGlsZXIgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGxpZnQgaXQgb3V0LiAgQnV0IGZvciBjbGFyaXR5IGFuZCByb2J1c3RuZXNzLFxuICAgICAgIHdlIGRvIGl0IG91cnNlbHZlcy4gKilcbiAgICBsZXQgc29tZV90ID0gU29tZSBUXG5cbiAgICBsZXQgc2FtZSAodHlwZSBhIGIpIChhIDogYSB0KSAoYiA6IGIgdCkgOiAoYSwgYikgZXF1YWwgb3B0aW9uID1cbiAgICAgIGxldCBtb2R1bGUgQSA9ICh2YWwgYSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBCID0gKHZhbCBiIDogUyB3aXRoIHR5cGUgdCA9IGIpIGluXG4gICAgICBtYXRjaCBBLktleSB3aXRoXG4gICAgICB8IEIuS2V5IC0+IHNvbWVfdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuICBlbmRcblxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3aXRuZXNzIDogJ2EgV2l0bmVzcy50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyB0b19zZXhwIDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgXyB7IHdpdG5lc3M7IG5hbWU7IHRvX3NleHAgfSA6IFNleHAudCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gQXRvbSBuYW1lXG4gICAgZWxzZVxuICAgICAgTGlzdFxuICAgICAgICBbIExpc3QgWyBBdG9tIFwibmFtZVwiOyBBdG9tIG5hbWUgXVxuICAgICAgICA7IExpc3QgWyBBdG9tIFwid2l0bmVzc1wiOyB3aXRuZXNzIHw+IFdpdG5lc3Muc2V4cF9vZl90IHRvX3NleHAgXVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3NleHAgdCA9IHQudG9fc2V4cFxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBjcmVhdGUgfm5hbWUgdG9fc2V4cCA9IHsgd2l0bmVzcyA9IFdpdG5lc3MuY3JlYXRlICgpOyBuYW1lOyB0b19zZXhwIH1cbiAgbGV0IHVpZCB0ID0gV2l0bmVzcy51aWQgdC53aXRuZXNzXG4gIGxldCBoYXNoIHQgPSB1aWQgdFxuICBsZXQgaGFzaF9mb2xkX3QgcyB0ID0gaGFzaF9mb2xkX2ludCBzICh1aWQgdClcbiAgbGV0IHNhbWVfd2l0bmVzcyB0MSB0MiA9IFdpdG5lc3Muc2FtZSB0MS53aXRuZXNzIHQyLndpdG5lc3NcbiAgbGV0IHNhbWUgdDEgdDIgPSBPcHRpb24uaXNfc29tZSAoc2FtZV93aXRuZXNzIHQxIHQyKVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIHQxIHQyID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgdDEgdDIgd2l0aFxuICAgIHwgU29tZSB3IC0+IHdcbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIlR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBnb3QgZGlmZmVyZW50IGlkc1wiXG4gICAgICAgICAgIFsgKCBcIlwiXG4gICAgICAgICAgICAgLCBzZXhwX29mX3BhaXIgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHQxLCB0MilcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIF0pXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogWydhIENoZWFwX29wdGlvbi50XSBpcyBsaWtlIFsnYSBvcHRpb25dLCBidXQgaXQgZG9lc24ndCBib3ggW3NvbWUgX10gdmFsdWVzLlxuXG4gICAgVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRoYXQgYXJlIHVuc2FmZSBhYm91dCBpdDpcblxuICAgIC0gW2Zsb2F0IHQgYXJyYXldIChvciBhbnkgYXJyYXktYmFja2VkIGNvbnRhaW5lcikgaXMgbm90IG1lbW9yeS1zYWZlXG4gICAgICBiZWNhdXNlIGZsb2F0IGFycmF5IG9wdGltaXphdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB1bmJveGVkIG9wdGlvblxuICAgICAgb3B0aW1pemF0aW9uLiBZb3UgaGF2ZSB0byB1c2UgW1VuaWZvcm1fYXJyYXkudF0gaW5zdGVhZCBvZiBbYXJyYXldLlxuXG4gICAgLSBOZXN0ZWQgb3B0aW9ucyAoWydhIHQgdF0pIGRvbid0IHdvcmsuIFRoZXkgYXJlIGJlbGlldmVkIHRvIGJlXG4gICAgICBtZW1vcnktc2FmZSwgYnV0IG5vdCBwYXJhbWV0cmljLlxuXG4gICAgLSBBIHJlY29yZCB3aXRoIFtmbG9hdCB0XXMgaW4gaXQgc2hvdWxkIGJlIHNhZmUsIGJ1dCBpdCdzIG9ubHkgW3RdIGJlaW5nXG4gICAgICBhYnN0cmFjdCB0aGF0IGdpdmVzIHlvdSBzYWZldHkuIElmIHRoZSBjb21waWxlciB3YXMgc21hcnQgZW5vdWdoIHRvIHBlZWtcbiAgICAgIHRocm91Z2ggdGhlIG1vZHVsZSBzaWduYXR1cmUgdGhlbiBpdCBjb3VsZCBkZWNpZGUgdG8gY29uc3RydWN0IGEgZmxvYXRcbiAgICAgIGFycmF5IGluc3RlYWQuICopXG5tb2R1bGUgQ2hlYXBfb3B0aW9uID0gc3RydWN0XG4gICgqIFRoaXMgaXMgdGFrZW4gZnJvbSBjb3JlLiBSYXRoZXIgdGhhbiBleHBvc2UgaXQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYmFzZSwganVzdFxuICAgICBrZWVwIGEgY29weSBhcm91bmQgaGVyZS4gKilcbiAgbGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoQ2FtbC5PYmoubWFnaWMgYiA6IGEpXG5cbiAgbW9kdWxlIFQwIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbm9uZSA6IF8gdFxuICAgIHZhbCBzb21lIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBpc19ub25lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfc29tZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgdmFsdWVfdW5zYWZlIDogJ2EgdCAtPiAnYVxuICAgIHZhbCBpdGVyX3NvbWUgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdFxuXG4gICAgKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgICAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICAgICAgSXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhpcyB2YWx1ZSBhcyBbbm9uZV0sIGJ1dCB3ZSB1c2UgYW4gaW1tZWRpYXRlIGluc3RlYWRcbiAgICAgICBiZWNhdXNlIGl0IGxldHMgdXMgYXZvaWQgY2FtbF9tb2RpZnkgd2hlbiBzZXR0aW5nIHRvIFtub25lXSwgbWFraW5nIGNlcnRhaW5cbiAgICAgICBiZW5jaG1hcmtzIHNpZ25pZmljYW50bHkgZmFzdGVyIChlLmcuIC4uL2JlbmNoL2FycmF5X3F1ZXVlLmV4ZSkuXG5cbiAgICAgICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBNb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlciBwbGFjZSB3aGVyZSB3ZSB3YW50XG4gICAgICAgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbiAgICBsZXQgbm9uZV9zdWJzdGl0dXRlIDogXyB0ID0gQ2FtbC5PYmoub2JqIChDYW1sLk9iai5uZXdfYmxvY2sgQ2FtbC5PYmouYWJzdHJhY3RfdGFnIDEpXG5cbiAgICBsZXQgbm9uZSA6IF8gdCA9XG4gICAgICAoKiBUaGUgbnVtYmVyIHdhcyBwcm9kdWNlZCBieVxuICAgICAgICAgWzwgL2Rldi91cmFuZG9tIHRyIC1jIC1kICcxMjM0NTY3ODkwYWJjZGVmJyB8IGhlYWQgLWMgMTZdLlxuXG4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGEgcmFuZG9tIG51bWJlciB3aWxsIGhhdmUgbG93ZXIgcHJvYmFiaWxpdHkgdG8gY29sbGlkZSB3aXRoXG4gICAgICAgICBhbnl0aGluZyB0aGFuIGFueSBudW1iZXIgd2UgY2FuIGNob29zZSBvdXJzZWx2ZXMuXG5cbiAgICAgICAgIFdlIGFyZSB1c2luZyBhIHBvbHltb3JwaGljIHZhcmlhbnQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgIGlzIGEgY29tcGlsZXIgYnVnIHdoZXJlIGl0IHdyb25nbHkgYXNzdW1lcyB0aGF0IHRoZSByZXN1bHQgb2YgW2lmIF8gdGhlbiBjIGVsc2VcbiAgICAgICAgIHldIGlzIG5vdCBhIHBvaW50ZXIgaWYgW2NdIGlzIGFuIGludGVnZXIgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgVGhpcyBpcyBiZWluZ1xuICAgICAgICAgZml4ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL3B1bGwvNTU1LiAgVGhlIFwibWVtb3J5IGNvcnJ1cHRpb25cIiB0ZXN0XG4gICAgICAgICBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGlzc3VlLiAgKilcbiAgICAgIENhbWwuT2JqLm1hZ2ljIGB4NmU4ZWUzNDc4ZTFkNzQ0OVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCB4IG5vbmVcbiAgICBsZXQgaXNfc29tZSB4ID0gbm90IChwaHlzX2VxdWFsIHggbm9uZSlcblxuICAgIGxldCBzb21lICh0eXBlIGEpICh4IDogYSkgOiBhIHQgPVxuICAgICAgaWYgcGh5c19zYW1lIHggbm9uZSB0aGVuIG5vbmVfc3Vic3RpdHV0ZSBlbHNlIENhbWwuT2JqLm1hZ2ljIHhcbiAgICA7O1xuXG4gICAgbGV0IHZhbHVlX3Vuc2FmZSAodHlwZSBhKSAoeCA6IGEgdCkgOiBhID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgeCBub25lX3N1YnN0aXR1dGUgdGhlbiBDYW1sLk9iai5tYWdpYyBub25lIGVsc2UgQ2FtbC5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfZXhuIHggPVxuICAgICAgaWYgaXNfc29tZSB4XG4gICAgICB0aGVuIHZhbHVlX3Vuc2FmZSB4XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bjogdGhlIGVsZW1lbnQgaXMgW05vbmVdXCJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJfc29tZSB0IH5mID0gaWYgaXNfc29tZSB0IHRoZW4gZiAodmFsdWVfdW5zYWZlIHQpXG4gIGVuZFxuXG4gIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcblxuICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgIHwgU29tZSB4IC0+IHNvbWUgeFxuICAgIDs7XG5cbiAgICBsZXRbQGlubGluZV0gdG9fb3B0aW9uIHggPSBpZiBpc19zb21lIHggdGhlbiBTb21lICh2YWx1ZV91bnNhZmUgeCkgZWxzZSBOb25lXG4gICAgbGV0IHRvX3NleHBhYmxlID0gdG9fb3B0aW9uXG4gICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfb3B0aW9uXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKE9wdGlvbi50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVDFcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEgKE9wdGlvbikgKFQxKVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIENoZWFwX29wdGlvbi50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMDFfIHhfXzAwM18gLT5cbiAgVW5pZm9ybV9hcnJheS50X29mX3NleHAgKENoZWFwX29wdGlvbi50X29mX3NleHAgX29mX2FfXzAwMV8pIHhfXzAwM19cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwNF8geF9fMDA1XyAtPlxuICBVbmlmb3JtX2FycmF5LnNleHBfb2ZfdCAoQ2hlYXBfb3B0aW9uLnNleHBfb2ZfdCBfb2ZfYV9fMDA0XykgeF9fMDA1X1xuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgVW5pZm9ybV9hcnJheS50X3NleHBfZ3JhbW1hciAoQ2hlYXBfb3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZW1wdHkgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG5sZXQgY3JlYXRlIH5sZW4gPSBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuIENoZWFwX29wdGlvbi5ub25lXG5sZXQgaW5pdCBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5vZl9vcHRpb24gKGYgaSkpXG5sZXQgaW5pdF9zb21lIG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLnNvbWUgKGYgaSkpXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcbmxldFtAaW5saW5lXSBnZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGdldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfbm9uZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBzZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCBzZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCBzZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBzd2FwIHQgaSBqID0gVW5pZm9ybV9hcnJheS5zd2FwIHQgaSBqXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9nZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcblxubGV0IHVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQgaSA9XG4gIENoZWFwX29wdGlvbi52YWx1ZV91bnNhZmUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG47O1xuXG5sZXQgdW5zYWZlX2lzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCB1bnNhZmVfc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHVuc2FmZV9zZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5cbmxldCBjbGVhciB0ID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXRfbm9uZSB0IGlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGlucHV0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBpbnB1dCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgaW5wdXQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXIgaW5wdXQgfmYgPSBpdGVyaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSB4IC0+IGYgeClcblxubGV0IGZvbGRpIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IGFjYyA6PSBmIGkgIWFjYyBlbGVtKTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGQgaW5wdXQgfmluaXQgfmYgPSBmb2xkaSBpbnB1dCB+aW5pdCB+ZjooZnVuIChfIDogaW50KSBhY2MgeCAtPiBmIGFjYyB4KVxuXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLk1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2Egb3B0aW9uXG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1hcGkgaW5wdXQgfmYgPVxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW46KGxlbmd0aCBpbnB1dCkgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gdW5zYWZlX3NldCBvdXRwdXQgaSAoZiBpIGVsZW0pKTtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSBlbGVtIC0+IGYgZWxlbSlcblxubGV0IG1hcF9zb21lIGlucHV0IH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW4gaW5cbiAgbGV0ICgpID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IG9wdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBpbnB1dCBpIGluXG4gICAgICBDaGVhcF9vcHRpb24uaXRlcl9zb21lIG9wdCB+ZjooZnVuIHggLT4gdW5zYWZlX3NldF9zb21lIG91dHB1dCBpIChmIHgpKVxuICAgIGRvbmVcbiAgaW5cbiAgb3V0cHV0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPSBpbml0IChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG5cbmxldCBvZl9hcnJheV9zb21lIGFycmF5ID1cbiAgaW5pdF9zb21lIChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMV9nZW5lcmljIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSA9IFVuaWZvcm1fYXJyYXkuY29weVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZV9jaGVhcF9vcHRpb24gPSBDaGVhcF9vcHRpb25cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWNrX2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byBbRGVxdWVdIGluIHRoYXQgaXQgdXNlcyBhbiBhcnJheSBvZiBbJ2FdIGFuZFxuICAgYSBtdXRhYmxlIFtpbnRdIHRvIGluZGljYXRlIHdoYXQgaW4gdGhlIGFycmF5IGlzIHVzZWQuICBXZSBjaG9vc2UgdG8gaW1wbGVtZW50IFtTdGFja11cbiAgIGRpcmVjdGx5IHJhdGhlciB0aGFuIG9uIHRvcCBvZiBbRGVxdWVdIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgRS5nLiBhIHNpbXBsZVxuICAgbWljcm9iZW5jaG1hcmsgc2hvd3MgdGhhdCBwdXNoL3BvcCBpcyBhYm91dCAyMCUgZmFzdGVyLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfIHsgbGVuZ3RoID0gbGVuZ3RoX18wMDNfOyBlbHRzID0gZWx0c19fMDA1XyB9IC0+XG4gIGxldCBibmRzX18wMDJfID0gW10gaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNl8gPSBPcHRpb25fYXJyYXkuc2V4cF9vZl90IF9vZl9hX18wMDFfIGVsdHNfXzAwNV8gaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwM18gaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICBpblxuICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IHNleHBfb2ZfdCA9IGBSZWJvdW5kX2xhdGVyXG5sZXQgXyA9IHNleHBfb2ZfdFxubGV0IGNhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hICh7IGxlbmd0aDsgZWx0cyB9IGFzIHQpIDogdW5pdCA9XG4gIHRyeVxuICAgIGFzc2VydCAoMCA8PSBsZW5ndGggJiYgbGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICAgIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgaSlcbiAgICBkb25lO1xuICAgICgqIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB1bnVzZWQgZWxlbWVudHMgYXJlIHVuc2V0IHRvIGF2b2lkIGEgc3BhY2VcbiAgICAgICBsZWFrLiAqKVxuICAgIGZvciBpID0gbGVuZ3RoIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyAtIDEgZG9cbiAgICAgIGFzc2VydCAobm90IChPcHRpb25fYXJyYXkuaXNfc29tZSBlbHRzIGkpKVxuICAgIGRvbmVcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiU3RhY2suaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiZXhuXCIsIGV4biB8PiBFeG4uc2V4cF9vZl90OyBcInN0YWNrXCIsIHQgfD4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2Zfb3BhcXVlIF0pXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0geyBsZW5ndGggPSAwOyBlbHRzID0gT3B0aW9uX2FycmF5LmVtcHR5IH1cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBUaGUgb3JkZXIgaW4gd2hpY2ggZWxlbWVudHMgYXJlIHZpc2l0ZWQgaGFzIGJlZW4gY2hvc2VuIHNvIGFzIHRvIGJlIGJhY2t3YXJkc1xuICAgY29tcGF0aWJsZSB3aXRoIFtDYW1sLlN0YWNrXSAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgIXIgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBmIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9saXN0ICh0eXBlIGEpIChsIDogYSBsaXN0KSA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbFxuICB0aGVuIGNyZWF0ZSAoKVxuICBlbHNlIChcbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOigyICogbGVuZ3RoKSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZWx0cyBpIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgeyBsZW5ndGg7IGVsdHMgfSlcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgcmVzaXplIHQgc2l6ZSA9XG4gIGxldCBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+c3JjOnQuZWx0cyB+ZHN0OmFyciB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjp0Lmxlbmd0aDtcbiAgdC5lbHRzIDwtIGFyclxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IG5ld19jYXBhY2l0eSA9XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggbmV3X2NhcGFjaXR5IChsZW5ndGggdCkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHQgdGhlbiByZXNpemUgdCBuZXdfY2FwYWNpdHlcbjs7XG5cbmxldCBwdXNoIHQgYSA9XG4gIGlmIHQubGVuZ3RoID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgdGhlbiByZXNpemUgdCAoMiAqICh0Lmxlbmd0aCArIDEpKTtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuZWx0cyB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3Bfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gdC5sZW5ndGggLSAxIGluXG4gIGxldCByZXN1bHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaTtcbiAgdC5sZW5ndGggPC0gaTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgcG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sucG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCBwb3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX25vbmVtcHR5IHQpXG5sZXQgcG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHBvcF9lcnJvciBlbHNlIHBvcF9ub25lbXB0eSB0XG5sZXQgdG9wX25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyAodC5sZW5ndGggLSAxKVxubGV0IHRvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnRvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgdG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9ub25lbXB0eSB0KVxubGV0IHRvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSB0b3BfZXJyb3IgZWxzZSB0b3Bfbm9uZW1wdHkgdFxubGV0IGNvcHkgeyBsZW5ndGg7IGVsdHMgfSA9IHsgbGVuZ3RoOyBlbHRzID0gT3B0aW9uX2FycmF5LmNvcHkgZWx0cyB9XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMClcbjs7XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgZiAocG9wX25vbmVtcHR5IHQpO1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgcHVzaCB0IHg7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhpcyBpcyBsaWZ0ZWQgb3V0IG9mIFtNXSBiZWNhdXNlIFtTb3VyY2VfY29kZV9wb3NpdGlvbjBdIGV4cG9ydHMgW1N0cmluZzBdXG4gICBhcyBbU3RyaW5nXSwgd2hpY2ggZG9lcyBub3QgZXhwb3J0IGEgaGFzaCBmdW5jdGlvbi4gKilcbmxldCBoYXNoX292ZXJyaWRlIHsgQ2FtbC5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSA9XG4gIFN0cmluZy5oYXNoIHBvc19mbmFtZVxuICBseG9yIEludC5oYXNoIHBvc19sbnVtXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2JvbFxuICBseG9yIEludC5oYXNoIHBvc19jbnVtXG47O1xuXG5tb2R1bGUgTSA9IHN0cnVjdFxuICBpbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuXG4gIGxldCBoYXNoID0gaGFzaF9vdmVycmlkZVxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoTSlcblxubGV0IG9mX3BvcyAocG9zX2ZuYW1lLCBwb3NfbG51bSwgcG9zX2NudW0sIF8pID1cbiAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCA9IDAgfVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnXG4gICAgfCBaZXJvXG4gICAgfCBQb3NcbiAgICB8IE5hblxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ25fb3JfbmFuLm1sLlQudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICB8IE5hbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDNcbiAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3M7IE5hbiBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduX29yX25hblwiXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogVC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogVC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogVC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogVC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBULnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBvZl9zaWduID0gZnVuY3Rpb25cbiAgfCBTaWduLk5lZyAtPiBOZWdcbiAgfCBTaWduLlplcm8gLT4gWmVyb1xuICB8IFNpZ24uUG9zIC0+IFBvc1xuOztcblxubGV0IHRvX3NpZ25fZXhuID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gU2lnbi5OZWdcbiAgfCBaZXJvIC0+IFNpZ24uWmVyb1xuICB8IFBvcyAtPiBTaWduLlBvc1xuICB8IE5hbiAtPiBpbnZhbGlkX2FyZyBcIkJhc2UuU2lnbl9vcl9uYW4udG9fc2lnbl9leG46IE5hblwiXG47O1xuXG5sZXQgb2ZfaW50IG4gPSBvZl9zaWduIChTaWduLm9mX2ludCBuKVxubGV0IHRvX2ludF9leG4gdCA9IFNpZ24udG9faW50ICh0b19zaWduX2V4biB0KVxuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbiAgfCBOYW4gLT4gTmFuXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOYW4sIF8gfCBfLCBOYW4gLT4gTmFuXG4gIHwgXyAtPiBvZl9zaWduIChTaWduLiggKiApICh0b19zaWduX2V4biB0KSAodG9fc2lnbl9leG4gdCcpKVxuOztcblxuKCogSW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBhbnkgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdFxuICAgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBhbGwgOiAnYS4gJ2EgbGlzdCAtPiAnYSB0IGxpc3QgPVxuICBmdW4gX2FsbF9vZl9hIC0+XG4gIFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgIHwgZW51bWVyYXRlX18wMDFfIDo6IGwgLT4gbWFwIGwgKEluY2wgZW51bWVyYXRlX18wMDFfIDo6IGFjYylcbiAgICAgaW5cbiAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAoUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgICAgfCBlbnVtZXJhdGVfXzAwMl8gOjogbCAtPiBtYXAgbCAoRXhjbCBlbnVtZXJhdGVfXzAwMl8gOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgICAgIFsgVW5ib3VuZGVkIF0pXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuICh0eXBlIGFfXzAxOF8pIDogKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8gdCkgLT5cbiAgbGV0IGVycm9yX3NvdXJjZV9fMDA2XyA9IFwibWF5YmVfYm91bmQubWwudFwiIGluXG4gIGZ1biBfb2ZfYV9fMDAzXyAtPiBmdW5jdGlvblxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBfdGFnX18wMDlfKSA6OiBzZXhwX2FyZ3NfXzAxMF8pIGFzXG4gICAgICBfc2V4cF9fMDA4XyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDEwXyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxMV8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTFfIGluXG4gICAgICAgICBJbmNsIHJlczBfXzAxMl9cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAwOV9cbiAgICAgICAgICAgX3NleHBfXzAwOF8pXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgIEV4Y2wgcmVzMF9fMDE3X1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIC0+IFVuYm91bmRlZFxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgOjogXykgYXNcbiAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biAodHlwZSBhX18wMjRfKSA6ICgoYV9fMDI0XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAyNF8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gIGZ1biBfb2ZfYV9fMDE5XyAtPiBmdW5jdGlvblxuICAgIHwgSW5jbCBhcmcwX18wMjBfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIxXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkluY2xcIjsgcmVzMF9fMDIxXyBdXG4gICAgfCBFeGNsIGFyZzBfXzAyMl8gLT5cbiAgICAgIGxldCByZXMwX18wMjNfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhjbFwiOyByZXMwX18wMjNfIF1cbiAgICB8IFVuYm91bmRlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmJvdW5kZWRcIlxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkluY2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkV4Y2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJVbmJvdW5kZWRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxudHlwZSBpbnRlcnZhbF9jb21wYXJpc29uID1cbiAgfCBCZWxvd19sb3dlcl9ib3VuZFxuICB8IEluX3JhbmdlXG4gIHwgQWJvdmVfdXBwZXJfYm91bmRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2hdXG5cbmxldCBpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDI3XyA9IFwibWF5YmVfYm91bmQubWwuaW50ZXJ2YWxfY29tcGFyaXNvblwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgLT4gQmVsb3dfbG93ZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIC0+IEluX3JhbmdlXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSAtPiBBYm92ZV91cHBlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBzZXhwX18wMjZfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiBpbnRlcnZhbF9jb21wYXJpc29uKVxuOztcblxubGV0IHNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChmdW5jdGlvblxuICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQmVsb3dfbG93ZXJfYm91bmRcIlxuICAgIHwgSW5fcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5fcmFuZ2VcIlxuICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQWJvdmVfdXBwZXJfYm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAoaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tYXIgOiBpbnRlcnZhbF9jb21wYXJpc29uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiQmVsb3dfbG93ZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkluX3JhbmdlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJBYm92ZV91cHBlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlXG4gICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnQpXG47O1xuXG5sZXQgKGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIDpcbiAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgSW5fcmFuZ2UgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IEluY2wgKGYgaW5jbClcbiAgfCBFeGNsIGV4Y2wgLT4gRXhjbCAoZiBleGNsKVxuICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbjs7XG5cbmxldCBpc19sb3dlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGluY2wgYSA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgZXhjbCBhIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfdXBwZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBhIGluY2wgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGEgZXhjbCA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBtYXRjaCBsb3dlciB3aXRoXG4gIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gIHwgSW5jbCBsb3dlciB8IEV4Y2wgbG93ZXIgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICAgICB8IEluY2wgdXBwZXIgfCBFeGNsIHVwcGVyIC0+IGNvbXBhcmUgbG93ZXIgdXBwZXIgPiAwKVxuOztcblxubGV0IGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgaWYgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZVxuICB0aGVuIGZhaWx3aXRoIFwiTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG46IGxvd2VyIGJvdW5kID4gdXBwZXIgYm91bmRcIlxuOztcblxubGV0IGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlO1xuICBpZiBub3QgKGlzX2xvd2VyX2JvdW5kIGxvd2VyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBCZWxvd19sb3dlcl9ib3VuZFxuICBlbHNlIGlmIG5vdCAoaXNfdXBwZXJfYm91bmQgdXBwZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEFib3ZlX3VwcGVyX2JvdW5kXG4gIGVsc2UgSW5fcmFuZ2Vcbjs7XG5cbmxldCBpbnRlcnZhbF9jb250YWluc19leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgbWF0Y2ggY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlIHdpdGhcbiAgfCBJbl9yYW5nZSAtPiB0cnVlXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVFxuXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBEdXBsaWNhdGVcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgfCBgT2sgX2xlZnRfXzAwM18sIGBPayBfcmlnaHRfXzAwNF8gLT4gX2NtcF9fYSBfbGVmdF9fMDAzXyBfcmlnaHRfXzAwNF9cbiAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiAwXG4gICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNV8gYl9fMDA2XyAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA1XyBiX18wMDZfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wMDVfLCBiX18wMDZfIHdpdGhcbiAgICAgICAgfCBgT2sgX2xlZnRfXzAwN18sIGBPayBfcmlnaHRfXzAwOF8gLT4gX2NtcF9fYSBfbGVmdF9fMDA3XyBfcmlnaHRfXzAwOF9cbiAgICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IHRydWVcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMDlfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBPayB2X18wMTBfIC0+IFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IF9vZl9hX18wMDlfIHZfXzAxMF8gXVxuICAgICAgfCBgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkR1cGxpY2F0ZVwiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gY29tcGFyYXRvcjooJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gKCdrZXksICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdrICd2LiAoJ2sgLT4gJ2sgLT4gaW50KSAtPiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgbGV0IHRfXzAxM18sIHRfXzAxNF8gPSBhX18wMTFfIGluXG4gICAgbGV0IHRfXzAxNV8sIHRfXzAxNl8gPSBiX18wMTJfIGluXG4gICAgbWF0Y2ggX2NtcF9fayB0X18wMTNfIHRfXzAxNV8gd2l0aFxuICAgIHwgMCAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgdF9fMDE0XyB0X18wMTZfXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0X18wMTRfLCB0X18wMTZfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDE3XywgYExlZnQgX3JpZ2h0X18wMThfIC0+IF9jbXBfX3YgX2xlZnRfXzAxN18gX3JpZ2h0X18wMThfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMTlfLCBgUmlnaHQgX3JpZ2h0X18wMjBfIC0+IF9jbXBfX3YgX2xlZnRfXzAxOV8gX3JpZ2h0X18wMjBfXG4gICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAyMV8sIGBVbmVxdWFsIF9yaWdodF9fMDIyXyAtPlxuICAgICAgICAgIGxldCB0X18wMjNfLCB0X18wMjRfID0gX2xlZnRfXzAyMV8gaW5cbiAgICAgICAgICBsZXQgdF9fMDI1XywgdF9fMDI2XyA9IF9yaWdodF9fMDIyXyBpblxuICAgICAgICAgIChtYXRjaCBfY21wX192IHRfXzAyM18gdF9fMDI1XyB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBfY21wX192IHRfXzAyNF8gdF9fMDI2X1xuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIHggeSlcbiAgICB8IG4gLT4gblxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+ICdrIC0+IGJvb2wpIC0+ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fayBfY21wX192IGFfXzAyN18gYl9fMDI4XyAtPlxuICAgICAgbGV0IHRfXzAyOV8sIHRfXzAzMF8gPSBhX18wMjdfIGluXG4gICAgICBsZXQgdF9fMDMxXywgdF9fMDMyXyA9IGJfXzAyOF8gaW5cbiAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgKF9jbXBfX2sgdF9fMDI5XyB0X18wMzFfKVxuICAgICAgICAoaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgdF9fMDMwXyB0X18wMzJfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCB0X18wMzBfLCB0X18wMzJfIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDMzXywgYExlZnQgX3JpZ2h0X18wMzRfIC0+IF9jbXBfX3YgX2xlZnRfXzAzM18gX3JpZ2h0X18wMzRfXG4gICAgICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMzVfLCBgUmlnaHQgX3JpZ2h0X18wMzZfIC0+IF9jbXBfX3YgX2xlZnRfXzAzNV8gX3JpZ2h0X18wMzZfXG4gICAgICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAzN18sIGBVbmVxdWFsIF9yaWdodF9fMDM4XyAtPlxuICAgICAgICAgICAgIGxldCB0X18wMzlfLCB0X18wNDBfID0gX2xlZnRfXzAzN18gaW5cbiAgICAgICAgICAgICBsZXQgdF9fMDQxXywgdF9fMDQyXyA9IF9yaWdodF9fMDM4XyBpblxuICAgICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmICkgKF9jbXBfX3YgdF9fMDM5XyB0X18wNDFfKSAoX2NtcF9fdiB0X18wNDBfIHRfXzA0Ml8pXG4gICAgICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnayAndi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdrKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wNTdfID0gXCJtYXBfaW50Zi5tbC5TeW1tZXRyaWNfZGlmZl9lbGVtZW50LnRcIiBpblxuICAgIGZ1biBfb2Zfa19fMDQzXyBfb2Zfdl9fMDQ0XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNjdfOyBhcmcxX18wNjhfIF0gLT5cbiAgICAgICAgbGV0IHJlczBfXzA2OV8gPSBfb2Zfa19fMDQzXyBhcmcwX18wNjdfXG4gICAgICAgIGFuZCByZXMxX18wNzBfID1cbiAgICAgICAgICBsZXQgc2V4cF9fMDY2XyA9IGFyZzFfXzA2OF8gaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNleHBfXzA2Nl8gd2l0aFxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyBhcyBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIDo6IHNleHBfYXJnc19fMDUwXykgYXNcbiAgICAgICAgICAgICAgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiBhcyBfdGFnX18wNjNfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2NF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDY1XyA9IF9vZl92X18wNDRfIGFyZzBfXzA2NF8gaW5cbiAgICAgICAgICAgICAgICAgICAgYExlZnQgcmVzMF9fMDY1X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjNfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiBhcyBfdGFnX18wNjBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2MV8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDYyXyA9IF9vZl92X18wNDRfIGFyZzBfXzA2MV8gaW5cbiAgICAgICAgICAgICAgICAgICAgYFJpZ2h0IHJlczBfXzA2Ml9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYwX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiBhcyBfdGFnX18wNTFfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA1OF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU5XyA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYXJnMF9fMDU4XyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNTJfOyBhcmcxX18wNTNfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDUyX1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2Zfdl9fMDQ0XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMwX18wNTRfLCByZXMxX18wNTVfXG4gICAgICAgICAgICAgICAgICAgICAgfCBzZXhwX18wNTZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleHBfXzA1Nl9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYFVuZXF1YWwgcmVzMF9fMDU5X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNTFfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgIHNleHBfXzA2Nl9cbiAgICAgICAgaW5cbiAgICAgICAgcmVzMF9fMDY5XywgcmVzMV9fMDcwX1xuICAgICAgfCBzZXhwX18wNzFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgZXJyb3Jfc291cmNlX18wNTdfIDIgc2V4cF9fMDcxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdrICd2LlxuICAgICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2Zfa19fMDcyXyBfb2Zfdl9fMDczXyAoYXJnMF9fMDgxXywgYXJnMV9fMDgyXykgLT5cbiAgICAgIGxldCByZXMwX18wODNfID0gX29mX2tfXzA3Ml8gYXJnMF9fMDgxX1xuICAgICAgYW5kIHJlczFfXzA4NF8gPVxuICAgICAgICBtYXRjaCBhcmcxX18wODJfIHdpdGhcbiAgICAgICAgfCBgTGVmdCB2X18wNzRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2Zfdl9fMDczXyB2X18wNzRfIF1cbiAgICAgICAgfCBgUmlnaHQgdl9fMDc1XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl92X18wNzNfIHZfXzA3NV8gXVxuICAgICAgICB8IGBVbmVxdWFsIHZfXzA3Nl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbFwiXG4gICAgICAgICAgICA7IChsZXQgYXJnMF9fMDc3XywgYXJnMV9fMDc4XyA9IHZfXzA3Nl8gaW5cbiAgICAgICAgICAgICAgIGxldCByZXMwX18wNzlfID0gX29mX3ZfXzA3M18gYXJnMF9fMDc3X1xuICAgICAgICAgICAgICAgYW5kIHJlczFfXzA4MF8gPSBfb2Zfdl9fMDczXyBhcmcxX18wNzhfIGluXG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wNzlfOyByZXMxX18wODBfIF0pXG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDgzXzsgcmVzMV9fMDg0XyBdXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8na19zZXhwX2dyYW1tYXIgXyd2X3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgKCBfJ2tfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiVW5lcXVhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDg1XyBiX18wODZfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDg1XyBiX18wODZfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wODVfLCBiX18wODZfIHdpdGhcbiAgICAgIHwgYExlZnQgX2xlZnRfXzA4N18sIGBMZWZ0IF9yaWdodF9fMDg4XyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wODdfIF9yaWdodF9fMDg4X1xuICAgICAgfCBgUmlnaHQgX2xlZnRfXzA4OV8sIGBSaWdodCBfcmlnaHRfXzA5MF8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzA4OV8gX3JpZ2h0X18wOTBfXG4gICAgICB8IGBCb3RoIF9sZWZ0X18wOTFfLCBgQm90aCBfcmlnaHRfXzA5Ml8gLT5cbiAgICAgICAgbGV0IHRfXzA5M18sIHRfXzA5NF8gPSBfbGVmdF9fMDkxXyBpblxuICAgICAgICBsZXQgdF9fMDk1XywgdF9fMDk2XyA9IF9yaWdodF9fMDkyXyBpblxuICAgICAgICAobWF0Y2ggX2NtcF9fbGVmdCB0X18wOTNfIHRfXzA5NV8gd2l0aFxuICAgICAgICAgfCAwIC0+IF9jbXBfX3JpZ2h0IHRfXzA5NF8gdF9fMDk2X1xuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDk3XyBiX18wOThfIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wOTdfIGJfXzA5OF9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzA5N18sIGJfXzA5OF8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wOTlfLCBgTGVmdCBfcmlnaHRfXzEwMF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDk5XyBfcmlnaHRfXzEwMF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzEwMV8sIGBSaWdodCBfcmlnaHRfXzEwMl8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzEwMV8gX3JpZ2h0X18xMDJfXG4gICAgICAgIHwgYEJvdGggX2xlZnRfXzEwM18sIGBCb3RoIF9yaWdodF9fMTA0XyAtPlxuICAgICAgICAgIGxldCB0X18xMDVfLCB0X18xMDZfID0gX2xlZnRfXzEwM18gaW5cbiAgICAgICAgICBsZXQgdF9fMTA3XywgdF9fMTA4XyA9IF9yaWdodF9fMTA0XyBpblxuICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmICkgKF9jbXBfX2xlZnQgdF9fMTA1XyB0X18xMDdfKSAoX2NtcF9fcmlnaHQgdF9fMTA2XyB0X18xMDhfKVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2xlZnRfXzEwOV8gX29mX3JpZ2h0X18xMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IHZfXzExMV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2ZfbGVmdF9fMTA5XyB2X18xMTFfIF1cbiAgICAgIHwgYFJpZ2h0IHZfXzExMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3JpZ2h0X18xMTBfIHZfXzExMl8gXVxuICAgICAgfCBgQm90aCB2X18xMTNfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiXG4gICAgICAgICAgOyAobGV0IGFyZzBfXzExNF8sIGFyZzFfXzExNV8gPSB2X18xMTNfIGluXG4gICAgICAgICAgICAgbGV0IHJlczBfXzExNl8gPSBfb2ZfbGVmdF9fMTA5XyBhcmcwX18xMTRfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzExN18gPSBfb2ZfcmlnaHRfXzExMF8gYXJnMV9fMTE1XyBpblxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzExNl87IHJlczFfXzExN18gXSlcbiAgICAgICAgICBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wICopXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29udGludWVcbiAgICB8IFN0b3BcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgQ29udGludWU7IFN0b3AgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb250aW51ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJDb250aW51ZVwiXG4gICAgICB8IFN0b3AgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RvcFwiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWQgKilcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGaW5pc2hlZFxuICAgIHwgVW5maW5pc2hlZFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBGaW5pc2hlZDsgVW5maW5pc2hlZCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkZpbmlzaGVkXCJcbiAgICAgIHwgVW5maW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmZpbmlzaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdjbXAgY21wXG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzZXRcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YgbGlzdCkgb3B0aW9uc1xuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiBmOigndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCB1cGRhdGVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiBmOigndiBvcHRpb24gLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbmQgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IG9wdGlvbikgb3B0aW9uc1xuICB2YWwgZmluZF9leG4gOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2KSBvcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG1lbSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooJ2sga2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gIHZhbCBmb2xkIDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgZm9sZDJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYSAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfa2V5c1xuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCdrIGtleSAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICgnaywgJ2NtcCwgKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCkgb3B0aW9uc1xuXG4gIHZhbCBlcXVhbFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBrZXkgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sga2V5ICogJ3YpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21iaW5lOihrZXk6J2sga2V5IC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KCdhIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sga2V5ICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGFwcGVuZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBsb3dlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbWluOidrIGtleVxuICAgICAgLT4gbWF4OidrIGtleVxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sga2V5IC0+IG1heDonayBrZXkgLT4gKCdrIGtleSAqICd2KSBsaXN0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG50aCA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIHJhbmsgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gaW50IG9wdGlvbikgb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrIGtleSwgJ3YsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGtleVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0XG4gIHZhbCBzZXQgOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIGxpc3QgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogJ2EgbGlzdCB0IC0+IGtleSAtPiAnYSBsaXN0IHRcbiAgdmFsIGZpbmRfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICdhIHQgLT4ga2V5IC0+IGY6KCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHRcbiAgdmFsIHVwZGF0ZSA6ICdhIHQgLT4ga2V5IC0+IGY6KCdhIG9wdGlvbiAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgdFxuICB2YWwgbWVtIDogXyB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiBfIHQgLT4gZjooa2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMiA6ICdhIHQgLT4gJ2IgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6KCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2MgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZDJcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2IgdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6KCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogJ2EgdCAtPiBmOihrZXkgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX21hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAoJ2IsICdjKSBFaXRoZXIudCkgLT4gJ2IgdCAqICdjIHRcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2MpIEVpdGhlci50KSAtPiAnYiB0ICogJ2MgdFxuICB2YWwgcGFydGl0aW9uaV90ZiA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICdhIE9yX2Vycm9yLnQgdCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiBfIHQgLT4ga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FsaXN0IDogP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdiIHQgLT4gZjooa2V5OmtleSAtPiAoJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Mgb3B0aW9uKSAtPiAnYyB0XG4gIHZhbCBtZXJnZV9za2V3ZWQgOiAndiB0IC0+ICd2IHQgLT4gY29tYmluZTooa2V5OmtleSAtPiAndiAtPiAndiAtPiAndikgLT4gJ3YgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoa2V5LCAnYSkgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKGtleSwgJ2EpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAnYSB0IC0+IGtleSAqICdhXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAnYSB0IC0+IGtleSAqICdhXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3BsaXQgOiAnYSB0IC0+IGtleSAtPiAnYSB0ICogKGtleSAqICdhKSBvcHRpb24gKiAnYSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6J2EgdFxuICAgIC0+IHVwcGVyX3BhcnQ6J2EgdFxuICAgIC0+IFsgYE9rIG9mICdhIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGxvd2VyX2JvdW5kOmtleSBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6a2V5IE1heWJlX2JvdW5kLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgJ2EgdFxuICAgIC0+IG1pbjprZXlcbiAgICAtPiBtYXg6a2V5XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYilcbiAgICAtPiAnYlxuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICdhIHQgLT4gbWluOmtleSAtPiBtYXg6a2V5IC0+IChrZXkgKiAnYSkgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICdhIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4ga2V5XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgbnRoIDogJ2EgdCAtPiBpbnQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAnYSB0IC0+IGludCAtPiBrZXkgKiAnYVxuICB2YWwgcmFuayA6IF8gdCAtPiBrZXkgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICdhIHQgLT4gJ2EgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzprZXlcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOmtleVxuICAgIC0+ICdhIHRcbiAgICAtPiAoa2V5ICogJ2EpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgJ2EgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTprZXkgLT4gZGF0YTonYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdFxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSAtPiAnYiBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaW5kIDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYlxuICB2YWwgcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBtZW0gOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYykgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYikgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICB2YWwgcGFydGl0aW9uX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnYSwgJ2IgT3JfZXJyb3IudCkgdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG4gIHZhbCB0b19hbGlzdCA6ID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gLT4gKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2KSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IpIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gKCdhLCAnYikgdCAqICgnYSAqICdiKSBvcHRpb24gKiAoJ2EsICdiKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdhLCAnYikgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdhLCAnYikgdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+IG1pbjonYSAtPiBtYXg6J2EgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYikgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6ICgnYSwgXykgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIHNldCA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaW5kIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYlxuICB2YWwgcmVtb3ZlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBtZW0gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXywgJ2NtcCkgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2EsICdiIE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBrZXlzIDogKCdhLCBfLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IsIF8pIHQgLT4gJ2IgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiAoJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Qgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIG1heF9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiLCBfKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2EsICdiLCBfKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdhLCAnYiwgXykgdCAtPiBtaW46J2EgLT4gbWF4OidhIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdhLCAnYiwgXykgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAnYVxuICAgIC0+ICgnYSAqICdiKSBvcHRpb25cblxuICB2YWwgbnRoIDogKCdhLCAnYiwgXykgdCAtPiBpbnQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnYSwgJ2IsIF8pIHQgLT4gaW50IC0+ICdhICogJ2JcbiAgdmFsIHJhbmsgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludFxuXG4gIHZhbCBhZGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHNldFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgYWRkX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIGZpbmRfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAnYiBsaXN0XG5cbiAgdmFsIGNoYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgdXBkYXRlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+IGY6KCdiIG9wdGlvbiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbmQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYlxuXG4gIHZhbCByZW1vdmVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBtZW0gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfLCAnY21wKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2RcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2QgLT4gJ2QpXG4gICAgLT4gJ2RcblxuICB2YWwgZmlsdGVyX2tleXNcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIE9yX2Vycm9yLnQsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdiIC0+ICdiIC0+IGludClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwga2V5cyA6ICgnYSwgXywgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiLCBfKSB0IC0+ICdiIGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdhLCAnYiwgXykgdFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EgKiAnYikgb3B0aW9uICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbG93ZXJfcGFydDooJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzIChNIDogQWNjZXNzb3JzMykgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuICB0eXBlICgnaywgJ3YsICdjbXApIHRyZWVcbiAgdHlwZSAnayBrZXlcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdrLCAnY21wLCAnayBrZXkgLT4gJ3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgICAtPiBmOignazEga2V5IC0+ICdrMiBrZXkpXG4gICAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0IC0+IGY6KCdrMSBrZXkgLT4gJ2syIGtleSkgLT4gKCdrMiwgJ3YsICdjbXAyKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgbGVuOmludCAtPiBmOihpbnQgLT4gJ2sga2V5ICogJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBsaXN0IC0+IGluaXQ6J3YyIC0+IGY6KCd2MiAtPiAndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiBmOigndiAtPiAndiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdXG4gICAgICApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIFNlcXVlbmNlLnRcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigndjIgLT4gJ3YxIC0+ICd2MilcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gZjooJ3YgLT4gJ3YgLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3RyZWUgOiAoJ2ssICdjbXAsICgnayBrZXksICd2LCAnY21wKSB0cmVlIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGtleVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IF8gdFxuICB2YWwgc2luZ2xldG9uIDoga2V5IC0+ICdhIC0+ICdhIHRcbiAgdmFsIG1hcF9rZXlzIDogJ3YgdCAtPiBmOihrZXkgLT4ga2V5KSAtPiBbIGBPayBvZiAndiB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG1hcF9rZXlzX2V4biA6ICd2IHQgLT4gZjooa2V5IC0+IGtleSkgLT4gJ3YgdFxuICB2YWwgb2ZfYWxpc3QgOiAoa2V5ICogJ2EpIGxpc3QgLT4gWyBgT2sgb2YgJ2EgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvciA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX2FsaXN0X2V4biA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSBsaXN0IHRcbiAgdmFsIG9mX2FsaXN0X2ZvbGQgOiAoa2V5ICogJ2EpIGxpc3QgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlIDogKGtleSAqICdhKSBsaXN0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoa2V5ICogJ2EpIGFycmF5IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6IChrZXkgKiAnYSkgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiBrZXkgKiAnYSkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICdhIHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGkgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2EgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGl0ZXJpOihmOihrZXk6a2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAndiB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuIDogaXRlcmk6KGY6KGtleTprZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KSAtPiAndiB0XG4gIHZhbCBvZl90cmVlIDogJ2EgdHJlZSAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiAoXywgXykgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2IgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogICgnazEsICd2KSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgdmFsIG1hcF9rZXlzX2V4biA6ICgnazEsICd2KSB0IC0+IGY6KCdrMSAtPiAnazIpIC0+ICgnazIsICd2KSB0XG4gIHZhbCBvZl9hbGlzdCA6ICgnYSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvciA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiIGxpc3QpIHRcbiAgdmFsIG9mX2FsaXN0X2ZvbGQgOiAoJ2EgKiAnYikgbGlzdCAtPiBpbml0OidjIC0+IGY6KCdjIC0+ICdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2UgOiAoJ2EgKiAnYikgbGlzdCAtPiBmOignYiAtPiAnYiAtPiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKCdhICogJ2IpIGFycmF5IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSAqICdiKSBhcnJheSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhICogJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiBmOignYiAtPiAnYiAtPiAnYikgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4biA6IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl90cmVlIDogKCdhLCAnYikgdHJlZSAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsIF8sICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EgKiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3RyZWVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczFcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGtleSA6PSBrZXlcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMyXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190XG4gICAgOiAgKG1vZHVsZSBDb21wYXJlX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGludClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoSGFzaC5zdGF0ZSAtPiAndiAtPiBIYXNoLnN0YXRlKVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICAoKiogW01hcF0gaXMgYSBmdW5jdGlvbmFsIGRhdGEgc3RydWN0dXJlIChiYWxhbmNlZCBiaW5hcnkgdHJlZSkgaW1wbGVtZW50aW5nIGZpbml0ZSBtYXBzXG4gICAgICBvdmVyIGEgdG90YWxseS1vcmRlcmVkIGRvbWFpbiwgY2FsbGVkIGEgXCJrZXlcIi4gKilcblxuICB0eXBlICgna2V5LCArJ3ZhbHVlLCAnY21wKSB0XG5cbiAgbW9kdWxlIE9yX2R1cGxpY2F0ZSA9IE9yX2R1cGxpY2F0ZVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxuICBtb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IFVuZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfZW51bWVyYXRlX2xpYi5FbnVtZXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIE1hcHMgW0NvbnRpbnVlXSB0byBbRmluaXNoZWRdIGFuZCBbU3RvcF0gdG8gW1VuZmluaXNoZWRdLiAqKVxuICAgIHZhbCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHRcblxuICAgICgqKiBNYXBzIFtGaW5pc2hlZF0gdG8gW0NvbnRpbnVlXSBhbmQgW1VuZmluaXNoZWRdIHRvIFtTdG9wXS4gKilcbiAgICB2YWwgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50XG4gIGVuZFxuXG4gIG1vZHVsZSBNZXJnZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgICB8IGBSaWdodCBvZiAncmlnaHRcbiAgICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICB2YWwgY29tcGFyZVxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGludClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gYm9vbFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCBsZWZ0IDogKCdsZWZ0LCBfKSB0IC0+ICdsZWZ0IG9wdGlvblxuICAgIHZhbCByaWdodCA6IChfLCAncmlnaHQpIHQgLT4gJ3JpZ2h0IG9wdGlvblxuICAgIHZhbCBsZWZ0X3ZhbHVlIDogKCdsZWZ0LCBfKSB0IC0+IGRlZmF1bHQ6J2xlZnQgLT4gJ2xlZnRcbiAgICB2YWwgcmlnaHRfdmFsdWUgOiAoXywgJ3JpZ2h0KSB0IC0+IGRlZmF1bHQ6J3JpZ2h0IC0+ICdyaWdodFxuXG4gICAgdmFsIHZhbHVlc1xuICAgICAgOiAgKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGxlZnRfZGVmYXVsdDonbGVmdFxuICAgICAgLT4gcmlnaHRfZGVmYXVsdDoncmlnaHRcbiAgICAgIC0+ICdsZWZ0ICogJ3JpZ2h0XG4gIGVuZFxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3QgaWYgdGhlIGludmFyaWFudHMgb2YgdGhlIGludGVybmFsIEFWTCBzZWFyY2ggdHJlZSBob2xkLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjLlxuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBUaGUgZW1wdHkgbWFwLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBBIG1hcCB3aXRoIG9uZSAoa2V5LCBkYXRhKSBwYWlyLiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICdiIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHBvc3NpYmx5IHJlcGVhdGVkIGtleXMuIFRoZSB2YWx1ZXMgaW5cbiAgICAgIHRoZSBtYXAgZm9yIGEgZ2l2ZW4ga2V5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGRpZCBpbiB0aGUgYXNzb2NpYXRpb25cbiAgICAgIGxpc3QuICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgZm9sZGluZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuIFRoZSBhY2N1bXVsYXRvciBpcyBwZXIta2V5LlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICAjIGxldCBtYXAgPSBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGRcbiAgICAgICAgICAgICAgICAgICAgICBbIFwiYVwiLCAxOyBcImFcIiwgMTA7IFwiYlwiLCAyOyBcImJcIiwgMjA7IFwiYlwiLCAyMDAgXVxuICAgICAgICAgICAgICAgICAgICAgIH5pbml0OkludC5TZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICB+ZjpTZXQuYWRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9zIFslc2V4cCAobWFwIDogSW50LlNldC50IFN0cmluZy5NYXAudCldOztcbiAgICAgICAgKChhICgxIDEwKSkgKGIgKDIgMjAgMjAwKSkpXG4gICAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIF19XG4gICopXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaXRlcmkgfml0ZXJpXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0XSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiB0YWtpbmcgYSBjb25jcmV0ZVxuICAgICAgZGF0YSBzdHJ1Y3R1cmUsIGl0IHRha2VzIGFuIGl0ZXJhdGlvbiBmdW5jdGlvbi4gIEZvciBpbnN0YW5jZSwgdG8gY29udmVydCBhIHN0cmluZyB0YWJsZVxuICAgICAgaW50byBhIG1hcDogW29mX2l0ZXJpIChtb2R1bGUgU3RyaW5nKSB+ZjooSGFzaHRibC5pdGVyaSB0YWJsZSldLiAgSXQgaXMgZmFzdGVyIHRoYW5cbiAgICAgIGFkZGluZyB0aGUgZWxlbWVudHMgb25lIGJ5IG9uZS4gKilcbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogTGlrZSBbb2ZfaXRlcmldIGV4Y2VwdCB0aGF0IGl0IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhIHNvcnRlZCBhcnJheSBvZiBrZXktZGF0YSBwYWlycy4gVGhlIGlucHV0IGFycmF5IG11c3QgYmUgc29ydGVkXG4gICAgICAoZWl0aGVyIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyKSwgYXMgZ2l2ZW4gYnkgdGhlIHJlbGV2YW50IGNvbXBhcmF0b3IsIGFuZFxuICAgICAgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGUga2V5cy4gSWYgZWl0aGVyIG9mIHRoZXNlIGNvbmRpdGlvbnMgZG9lcyBub3QgaG9sZCxcbiAgICAgIGFuIGVycm9yIGlzIHJldHVybmVkLiAgKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBMaWtlIFtvZl9zb3J0ZWRfYXJyYXldIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgYSBtYXAgd2l0aCBicm9rZW4gaW52YXJpYW50cyB3aGVuIGFuXG4gICAgICBbRXJyb3JdIHdvdWxkIGhhdmUgYmVlbiByZXR1cm5lZC4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhICogJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXkgYyAoU2VxdWVuY2UudG9fYXJyYXlcbiAgICAgIHNlcSldLCBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBhcnJheS5cblxuICAgICAgVGhlIHNlcXVlbmNlIHdpbGwgYmUgZm9sZGVkIG92ZXIgb25jZSwgYW5kIHRoZSBhZGRpdGlvbmFsIHRpbWUgY29tcGxleGl0eSBpcyB7ZSBPKG4pfS5cbiAgKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0IGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG5cbiAgICAgIElmIHlvdXIgc2VxdWVuY2UgaXMgaW5jcmVhc2luZywgdXNlIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXS5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX29yX2Vycm9yIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X29yX2Vycm9yIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9leG4gYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC5cblxuICAgICAgW29mX3NlcXVlbmNlX211bHRpIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX2ZvbGQgYyBzZXEgfmluaXQgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZm9sZCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmluaXQgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfcmVkdWNlIGMgc2VxIH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X3JlZHVjZSBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBUZXN0cyB3aGV0aGVyIGEgbWFwIGlzIGVtcHR5LiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFtsZW5ndGggbWFwXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW21hcF0uICBPKDEpLCBidXQgW1RyZWUubGVuZ3RoXSBpc1xuICAgICAgTyhuKS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIHRoZSBzcGVjaWZpZWQgbmV3IGJpbmRpbmc7IGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgYm91bmQsIGl0c1xuICAgICAgcHJldmlvdXMgYmluZGluZyBkaXNhcHBlYXJzLiAqKVxuICB2YWwgc2V0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthZGQgdCB+a2V5IH5kYXRhXSBhZGRzIGEgbmV3IGVudHJ5IHRvIFt0XSBtYXBwaW5nIFtrZXldIHRvIFtkYXRhXSBhbmQgcmV0dXJucyBbYE9rXVxuICAgICAgd2l0aCB0aGUgbmV3IG1hcCwgb3IgaWYgW2tleV0gaXMgYWxyZWFkeSBwcmVzZW50IGluIFt0XSwgcmV0dXJucyBbYER1cGxpY2F0ZV0uICopXG4gIHZhbCBhZGQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBJZiBba2V5XSBpcyBub3QgcHJlc2VudCB0aGVuIGFkZCBhIHNpbmdsZXRvbiBsaXN0LCBvdGhlcndpc2UsIGNvbnMgZGF0YSBvbnRvIHRoZVxuICAgICAgaGVhZCBvZiB0aGUgZXhpc3RpbmcgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogSWYgdGhlIGtleSBpcyBwcmVzZW50LCB0aGVuIHJlbW92ZSBpdHMgaGVhZCBlbGVtZW50OyBpZiB0aGUgcmVzdWx0IGlzIGVtcHR5LCByZW1vdmVcbiAgICAgIHRoZSBrZXkuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIHRoZSBlbXB0eSBsaXN0IGlmIHRoZXJlIGlzIG5vbmUuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICd2IGxpc3RcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gcmV0dXJucyBhIG5ldyBtYXAgW21dIHRoYXQgaXMgdGhlIHNhbWUgYXMgW3RdIG9uIGFsbCBrZXlzIGV4Y2VwdFxuICAgICAgZm9yIFtrZXldLCBhbmQgd2hvc2UgdmFsdWUgZm9yIFtrZXldIGlzIGRlZmluZWQgYnkgW2ZdLCBpLmUuLCBbZmluZCBtIGtleSA9IGYgKGZpbmRcbiAgICAgIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGY6KCd2IG9wdGlvbiAtPiAndiBvcHRpb24pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigndiBvcHRpb24gLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuXG4gICgqKiBSZXR1cm5zIFtTb21lIHZhbHVlXSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCBvciBbTm9uZV0gaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndiBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgcmFpc2luZyBbQ2FtbC5Ob3RfZm91bmRdIG9yIFtOb3RfZm91bmRfc11cbiAgICAgIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYW55IGJpbmRpbmcgZm9yIHRoZSBrZXkgaW4gcXVlc3Rpb24gcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbbWVtIG1hcCBrZXldIHRlc3RzIHdoZXRoZXIgW21hcF0gY29udGFpbnMgYSBiaW5kaW5nIGZvciBba2V5XS4gKilcbiAgdmFsIG1lbSA6ICgnaywgXywgJ2NtcCkgdCAtPiAnayAtPiBib29sXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOignayAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCd2IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIHVudGlsIHRoZSBmaXJzdCB0aW1lIFtmXSByZXR1cm5zIFtTdG9wXS4gSWYgW2ZdIHJldHVybnMgW1N0b3BdLCB0aGUgZmluYWxcbiAgICAgIHJlc3VsdCBpcyBbVW5maW5pc2hlZF0uIE90aGVyd2lzZSwgdGhlIGZpbmFsIHJlc3VsdCBpcyBbRmluaXNoZWRdLiAqKVxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gICgqKiBJdGVyYXRlcyB0d28gbWFwcyBzaWRlIGJ5IHNpZGUuIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgTyhNICsgTikuICBJZiB0d29cbiAgICAgIGlucHV0cyBhcmUgW1soMCwgYSk7ICgxLCBhKV1dIGFuZCBbWygxLCBiKTsgKDIsIGIpXV0sIFtmXSB3aWxsIGJlIGNhbGxlZCB3aXRoIFtbKDAsXG4gICAgICBgTGVmdCBhKTsgKDEsIGBCb3RoIChhLCBiKSk7ICgyLCBgUmlnaHQgYildXS4gKilcbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyByZXBsYWNlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiopXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaSA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIENvbnZlcnQgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHRvIGEgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHVzaW5nIFtmXS4gKilcbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgKCoqIExpa2UgW21hcF9rZXlzXSwgYnV0IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgdFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XSwgdW50aWwgdGhlIGZpcnN0XG4gICAgICB0aW1lIHRoYXQgW2ZdIHJldHVybnMgW1N0b3AgX10uIElmIFtmXSByZXR1cm5zIFtTdG9wIGZpbmFsXSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gICAgICBpbW1lZGlhdGVseSB3aXRoIHRoZSB2YWx1ZSBbZmluYWxdLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgYW5kIHRoZSBmaW5hbFxuICAgICAgY2FsbCB0byBbZl0gcmV0dXJucyBbQ29udGludWUgbGFzdF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBbZmluaXNoIGxhc3RdLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgKCoqIEZvbGRzIG92ZXIgdHdvIG1hcHMgc2lkZSBieSBzaWRlLCBsaWtlIFtpdGVyMl0uICopXG4gIHZhbCBmb2xkMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2EgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl9tYXBpXSBydW4gaW4gTyhuICogbGdcbiAgICAgIG4pIHRpbWU7IHRoZXkgc2ltcGx5IGFjY3VtdWxhdGUgZWFjaCBrZXkgJiBkYXRhIHBhaXIgcmV0YWluZWQgYnkgW2ZdIGludG8gYSBuZXcgbWFwXG4gICAgICB1c2luZyBbYWRkXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOignayAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyaSA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyBmaWx0ZXJlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzXG4gICAgICBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXBpIHQgfmZdIHJldHVybnMgdHdvIG5ldyBbdF1zLCB3aXRoIGVhY2gga2V5IGluIFt0XSBhcHBlYXJpbmcgaW5cbiAgICAgIGV4YWN0bHkgb25lIG9mIHRoZSByZXN1bHRpbmcgbWFwcyBkZXBlbmRpbmcgb24gaXRzIG1hcHBpbmcgaW4gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKipcbiAgICAge1tcbiAgICAgICBwYXJ0aXRpb25pX3RmIHQgfmZcbiAgICAgICA9XG4gICAgICAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIGlmIGYgfmtleSB+ZGF0YVxuICAgICAgICAgdGhlbiBGaXJzdCBkYXRhXG4gICAgICAgICBlbHNlIFNlY29uZCBkYXRhKVxuICAgICBdfSAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUHJvZHVjZXMgW09rXSBvZiBhIG1hcCBpbmNsdWRpbmcgYWxsIGtleXMgaWYgYWxsIGRhdGEgaXMgW09rXSwgb3IgYW4gW0Vycm9yXVxuICAgICAgaW5jbHVkaW5nIGFsbCBlcnJvcnMgb3RoZXJ3aXNlLiAqKVxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFJldHVybnMgYSB0b3RhbCBvcmRlcmluZyBiZXR3ZWVuIG1hcHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHRvdGFsIG9yZGVyaW5nIHVzZWRcbiAgICAgIHRvIGNvbXBhcmUgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXF1YWwga2V5cyBpbiB0aGUgdHdvIG1hcHMuICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIG1hcHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgbSkuY29tcGFyZV0gb2YgdGhlIG1hcCBbbV0gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnayBIYXNoLmZvbGRlciAtPiAndiBIYXNoLmZvbGRlciAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCBjbXAgbTEgbTJdIHRlc3RzIHdoZXRoZXIgdGhlIG1hcHMgW20xXSBhbmQgW20yXSBhcmUgZXF1YWwsIHRoYXQgaXMsIGNvbnRhaW5cbiAgICAgIHRoZSBzYW1lIGtleXMgYW5kIGFzc29jaWF0ZSBlYWNoIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlLiAgW2NtcF0gaXMgdGhlIGVxdWFsaXR5XG4gICAgICBwcmVkaWNhdGUgdXNlZCB0byBjb21wYXJlIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sgbGlzdFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZGF0YSBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgKCoqIENyZWF0ZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBmcm9tIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gKCoqIGRlZmF1bHQgaXMgW2BJbmNyZWFzaW5nXSAqKVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiB7MiBBZGRpdGlvbmFsIG9wZXJhdGlvbnMgb24gbWFwc30gKilcblxuICAoKiogTWVyZ2VzIHR3byBtYXBzLiBUaGUgcnVudGltZSBpcyBPKGxlbmd0aCh0MSkgKyBsZW5ndGgodDIpKS4gWW91IHNob3VsZG4ndCB1c2UgdGhpc1xuICAgICAgZnVuY3Rpb24gdG8gbWVyZ2UgYSBsaXN0IG9mIG1hcHM7IGNvbnNpZGVyIHVzaW5nIFttZXJnZV9za2V3ZWRdIGluc3RlYWQuICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBBIHNwZWNpYWwgY2FzZSBvZiBbbWVyZ2VdLCBbbWVyZ2Vfc2tld2VkIHQxIHQyXSBpcyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGVcbiAgICAgIGJpbmRpbmdzIG9mIFt0MV0gYW5kIFt0Ml0uIEJpbmRpbmdzIHRoYXQgYXBwZWFyIGluIGJvdGggW3QxXSBhbmQgW3QyXSBhcmVcbiAgICAgIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgdmFsdWUgdXNpbmcgdGhlIFtjb21iaW5lXSBmdW5jdGlvbi4gSW4gYSBjYWxsXG4gICAgICBbY29tYmluZSB+a2V5IHYxIHYyXSwgdGhlIHZhbHVlIFt2MV0gY29tZXMgZnJvbSBbdDFdIGFuZCBbdjJdIGZyb20gW3QyXS5cblxuICAgICAgVGhlIHJ1bnRpbWUgb2YgW21lcmdlX3NrZXdlZF0gaXMgW08obWluKGwxLCBsMikgKiBsb2cobWF4KGwxLCBsMikpKV0sIHdoZXJlIFtsMV0gaXNcbiAgICAgIHRoZSBsZW5ndGggb2YgW3QxXSBhbmQgW2wyXSB0aGUgbGVuZ3RoIG9mIFt0Ml0uIFRoaXMgaXMgbGlrZWx5IHRvIGJlIGZhc3RlciB0aGFuXG4gICAgICBbbWVyZ2VdIHdoZW4gb25lIG9mIHRoZSBtYXBzIGlzIGEgbG90IHNtYWxsZXIsIG9yIHdoZW4geW91IG1lcmdlIGEgbGlzdCBvZiBtYXBzLiAqKVxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICAgIDogICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gcmV0dXJucyBhIGxpc3Qgb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uXG4gICAgICBJdCBpcyBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudFxuICAgICAgb2Ygc3RydWN0dXJlLiBUaGUga2V5cyBpbiB0aGUgb3V0cHV0IHNlcXVlbmNlIHdpbGwgYmUgaW4gc29ydGVkIG9yZGVyLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2RhdGFfZXF1YWxdIGlzIGF0IGxlYXN0IGFzIGVxdWF0aW5nIGFzIHBoeXNpY2FsIGVxdWFsaXR5OiB0aGF0XG4gICAgICBbcGh5c19lcXVhbCB4IHldIGltcGxpZXMgW2RhdGFfZXF1YWwgeCB5XS4gT3RoZXJ3aXNlLCBbc3ltbWV0cmljX2RpZmZdIG1heSBiZWhhdmUgaW5cbiAgICAgIHVuZXhwZWN0ZWQgd2F5cy4gRm9yIGV4YW1wbGUsIHdpdGggW35kYXRhX2VxdWFsOihmdW4gXyBfIC0+IGZhbHNlKV0gaXQgaXMgTk9UXG4gICAgICBuZWNlc3NhcmlseSB0aGUgY2FzZSB0aGUgcmVzdWx0aW5nIGNoYW5nZSBzZXF1ZW5jZSB3aWxsIGNvbnRhaW4gYW4gZWxlbWVudFxuICAgICAgWyhrLCBgVW5lcXVhbCBfKV0gZm9yIGV2ZXJ5IGtleSBba10gc2hhcmVkIGJ5IGJvdGggbWFwcy5cblxuICAgICAgV2FybmluZzogRmxvYXQgZXF1YWxpdHkgdmlvbGF0ZXMgdGhpcyBwcm9wZXJ0eSEgW3BoeXNfZXF1YWwgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXNcbiAgICAgIHRydWUsIGJ1dCBbRmxvYXQuKD0pIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzIGZhbHNlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW2ZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIGZvbGRzIGFjcm9zcyBhbiBpbXBsaWNpdCBzZXF1ZW5jZSBvZiBjaGFuZ2VzXG4gICAgICBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0sIGluIHNvcnRlZCBvcmRlciBieSBrZXlzLiBFcXVpdmFsZW50IHRvXG4gICAgICBbU2VxdWVuY2UuZm9sZCAoc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwpXSwgYW5kIG1vcmUgZWZmaWNpZW50LiAqKVxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooJ2EgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFttaW5fZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW5pbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogW21heF9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1heGltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIFttYXBdIGlzIGVtcHR5LiAqKVxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc2ltaWxhciBmdW5jdGlvbnMgaW4gW0xpc3RdLiAqKVxuXG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGludFxuXG5cbiAgKCoqIFtzcGxpdCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba2V5XSwgdGhlIG1hcHBpbmcgb2YgW2tleV0gaWZcbiAgICAgIGFueSwgYW5kIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnRdIHJldHVybnMgW2BPayBtYXBdIHdoZXJlIFttYXBdIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIFsoa2V5LCB2YWx1ZSldIHBhaXJzIGZyb20gdGhlIHR3byBpbnB1dCBtYXBzIGlmIGFsbCB0aGUga2V5cyBmcm9tIFtsb3dlcl9wYXJ0XSBhcmVcbiAgICAgIGxlc3MgdGhhbiBhbGwgdGhlIGtleXMgZnJvbSBbdXBwZXJfcGFydF0uICBPdGhlcndpc2UgaXQgcmV0dXJuc1xuICAgICAgW2BPdmVybGFwcGluZ19rZXlfcmFuZ2VzXS5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBuKSB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBsYXJnZXIgaW5wdXQgbWFwLiAgVGhpcyBjYW4gYmVcbiAgICAgIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gW01hcC5tZXJnZV0gb3IgcmVwZWF0ZWQgW01hcC5hZGRdLlxuXG4gICAgICB7W1xuICAgICAgICBhc3NlcnQgKG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgIHwgYE9rIHdob2xlX21hcCAtPlxuICAgICAgICAgICAgTWFwLnRvX2FsaXN0IHdob2xlX21hcFxuICAgICAgICAgICAgPSBMaXN0LmFwcGVuZCAodG9fYWxpc3QgbG93ZXJfcGFydCkgKHRvX2FsaXN0IHVwcGVyX3BhcnQpXG4gICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiB0cnVlKTtcbiAgICAgIF19ICopXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gICgqKiBbc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXSByZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBlbnRyaWVzIGZyb21cbiAgICAgIFt0XSB3aG9zZSBrZXlzIGxpZSBpbnNpZGUgdGhlIGludGVydmFsIGluZGljYXRlZCBieSBbfmxvd2VyX2JvdW5kXSBhbmRcbiAgICAgIFt+dXBwZXJfYm91bmRdLiAgSWYgdGhpcyBpbnRlcnZhbCBpcyBlbXB0eSwgYW4gZW1wdHkgbWFwIGlzIHJldHVybmVkLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgb3V0cHV0IG1hcC4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgb3V0cHV0IG1hcC4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmZdIGZvbGRzIFtmXSAod2l0aCBpbml0aWFsIHZhbHVlIFt+aW5pdF0pXG4gICAgICBvdmVyIGFsbCBrZXlzIChhbmQgdGhlaXIgYXNzb2NpYXRlZCB2YWx1ZXMpIHRoYXQgYXJlIGluIHRoZSByYW5nZSBbW21pbiwgbWF4XV1cbiAgICAgIChpbmNsdXNpdmUpLiAgKilcbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IG1pbjona1xuICAgIC0+IG1heDona1xuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXhdIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgbGlzdCBvZiB0aGUgZWxlbWVudHMgd2hvc2Uga2V5c1xuICAgICAgbGllIGluIFtbbWluLCBtYXhdXSAoaW5jbHVzaXZlKSwgd2l0aCB0aGUgc21hbGxlc3Qga2V5IGJlaW5nIGF0IHRoZSBoZWFkIG9mIHRoZVxuICAgICAgbGlzdC4gKilcbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sgLT4gbWF4OidrIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIFtjbG9zZXN0X2tleSB0IGRpciBrXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XSB3aXRoIFtrZXldIGNsb3Nlc3QgdG9cbiAgICAgIFtrXSB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4gaW5lcXVhbGl0eSBib3VuZC5cblxuICAgICAgRm9yIGV4YW1wbGUsIFtjbG9zZXN0X2tleSB0IGBMZXNzX3RoYW4ga10gd291bGQgYmUgdGhlIHBhaXIgd2l0aCB0aGUgY2xvc2VzdCBrZXkgdG9cbiAgICAgIFtrXSB3aGVyZSBba2V5IDwga10uXG5cbiAgICAgIFt0b19zZXF1ZW5jZV0gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgW2Nsb3Nlc3Rfa2V5XS4gIEl0IGlzIGxlc3NcbiAgICAgIGVmZmljaWVudCBmb3IgaW5kaXZpZHVhbCBsb29rdXBzIGJ1dCBtb3JlIGVmZmljaWVudCBmb3IgZmluZGluZyBtYW55IGVsZW1lbnRzIHN0YXJ0aW5nXG4gICAgICBhdCBzb21lIHZhbHVlLiAqKVxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdrXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbbnRoIHQgbl0gZmluZHMgdGhlIChrZXksIHZhbHVlKSBwYWlyIG9mIHJhbmsgbiAoaS5lLiwgc3VjaCB0aGF0IHRoZXJlIGFyZSBleGFjdGx5IG5cbiAgICAgIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBmb3VuZCBrZXkpLCBpZiBvbmUgZXhpc3RzLiAgTyhsb2cobGVuZ3RoIHQpICsgbikgdGltZS4gKilcbiAgdmFsIG50aCA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICdrICogJ3ZcblxuICAoKiogW3JhbmsgdCBrXSBJZiBba10gaXMgaW4gW3RdLCByZXR1cm5zIHRoZSBudW1iZXIgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tdIGluXG4gICAgICBbdF0sIGFuZCBbTm9uZV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgcmFuayA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gaW50IG9wdGlvblxuXG5cblxuICAoKiogW3RvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdF1cbiAgICAgIGdpdmVzIGEgc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGJldHdlZW4gW2tleXNfbGVzc19vcl9lcXVhbF90b10gYW5kXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUsIHByZXNlbnRlZCBpbiBbb3JkZXJdLiAgSWZcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dLCB0aGUgc2VxdWVuY2UgaXNcbiAgICAgIGVtcHR5LlxuXG4gICAgICBXaGVuIG5laXRoZXIgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gbm9yIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFyZVxuICAgICAgcHJvdmlkZWQsIHRoZSBjb3N0IGlzIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSB0byBwcm9kdWNlXG4gICAgICBlYWNoIGVsZW1lbnQuIElmIGVpdGhlciBpcyBwcm92aWRlZCAoYW5kIGlzIHVzZWQgYnkgdGhlIG9yZGVyIHBhcmFtZXRlclxuICAgICAgcHJvdmlkZWQpLCB0aGVuIHRoZSB0aGUgY29zdCBpcyBPKG4pIHVwIGZyb250LCBhbmQgYW1vcnRpemVkIE8oMSkgdG9cbiAgICAgIHByb2R1Y2UgZWFjaCBlbGVtZW50LiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2tcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XVxuICAgICAgc3BlY2lmaWVkIGJ5IFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIG9uIHRoZSBib3VuZGFyeSBvZiB0aGVcbiAgICAgIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlXG4gICAgICBsZWZ0IHNlZ21lbnQsIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC5cbiAgICAgIEl0IHJldHVybnMgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc3VicmFuZ2VdIHRha2VzIGEgW2NvbXBhcmVdIGZ1bmN0aW9uIHRoYXQgZGl2aWRlcyBbdF0gaW50byB0aHJlZVxuICAgICAgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50cyB3aXRoIHJlc3BlY3QgdG8gW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXTpcblxuICAgICAge3ZcbiAgICAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEluX3JhbmdlIHwgQWJvdmVfdXBwZXJfYm91bmQgfFxuICAgICAgdn1cblxuICAgICAgYW5kIHJldHVybnMgYSBtYXAgb2YgdGhlIFtJbl9yYW5nZV0gc2VnbWVudC5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBtICsgbikgd2hlcmUgW21dIGlzIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1hcCBhbmQgW25dIGlzIHRoZVxuICAgICAgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuIFRoZSBsaW5lYXIgdGVybSBpbiBbbl0gaXMgdG8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiBbY29tcGFyZV0gZG9lcyBub3Qgc2VnbWVudCBbdF0gYXMgc2hvd24gYWJvdmUsIG9yIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBpdHMgaW5wdXRzLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IGludCBNYXAuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSAoU3RyaW5nLnQsIGludCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgTWFwLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFtTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3NdXG4gICAgICAtLSBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLlxuXG4gICAgICBJbiBhZGRpdGlvbiwgd2hlbiB1c2luZyBbQEBkZXJpdmluZ10sIHRoZSByZXF1aXJlbWVudHMgb24gdGhlIGtleSBtb2R1bGUgYXJlIG9ubHlcbiAgICAgIHRob3NlIG5lZWRlZCB0byBzYXRpc2Z5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZGVyaXZlIG9uIHRoZSBtYXAgaXRzZWxmLiBTYXkgeW91XG4gICAgICB3cml0ZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSB0ID0gaW50IE1hcC5NKFgpLnQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIF19XG5cbiAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHdlbGwgdHlwZWQgZXhhY3RseSBpZiBbWF0gY29udGFpbnMgYXQgbGVhc3Q6XG4gICAgICAtIGEgdHlwZSBbdF0gd2l0aCBubyBwYXJhbWV0ZXJzXG4gICAgICAtIGEgY29tcGFyYXRvciB3aXRuZXNzXG4gICAgICAtIGEgW2hhc2hfZm9sZF90XSBmdW5jdGlvbiB3aXRoIHRoZSByaWdodCB0eXBlICopXG4gIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgna2V5LCAndmFsdWUsICdjbXApIHQgOj0gKCdrZXksICd2YWx1ZSwgJ2NtcCkgdFxuXG4gICgqKiBbVXNpbmdfY29tcGFyYXRvcl0gaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW01hcF0sIGV4Y2VwdCB0aGVcbiAgICAgIGZ1bmN0aW9ucyB0YWtlIGEgW35jb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XSwgd2hlcmVhcyB0aGUgZnVuY3Rpb25zIGF0IHRoZVxuICAgICAgdG9wbGV2ZWwgb2YgW01hcF0gdGFrZSBhIFsoJ2ssICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnaywgKyd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoKydrLCArJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXywgXykgdFxuXG4gICAgICAoKiogW0J1aWxkX2luY3JlYXNpbmddIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIG1hcCBpbmNyZW1lbnRhbGx5IGZyb20gYVxuICAgICAgICAgIHNlcXVlbmNlIHRoYXQgaXMga25vd24gdG8gYmUgaW5jcmVhc2luZy5cblxuICAgICAgICAgIFRoZSB0b3RhbCB0aW1lIGNvbXBsZXhpdHkgb2YgY29uc3RydWN0aW5nIGEgbWFwIHRoaXMgd2F5IGlzIE8obiksIHdoaWNoIGlzIG1vcmVcbiAgICAgICAgICBlZmZpY2llbnQgdGhhbiB1c2luZyBbTWFwLmFkZF0gYnkgYSBsb2dhcml0aG1pYyBmYWN0b3IuXG5cbiAgICAgICAgICBUaGlzIGludGVyZmFjZSBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIGR1YWwgb2YgW3RvX3NlcXVlbmNlXSwgYnV0IHdlIGRvbid0IGhhdmVcbiAgICAgICAgICBhbiBlcXVhbGx5IG5lYXQgaWRpb20gZm9yIHRoZSBkdWFscyBvZiBzZXF1ZW5jZXMgKFtvZl9zZXF1ZW5jZV0gaXMgbXVjaCBsZXNzXG4gICAgICAgICAgZ2VuZXJhbCBiZWNhdXNlIGl0IGRvZXMgbm90IGFsbG93IHRoZSBzZXF1ZW5jZSB0byBiZSBwcm9kdWNlZCBhc3luY2hyb25vdXNseSkuICopXG4gICAgICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA6IHNpZ1xuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHR5cGUgKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICB2YWwgZW1wdHkgOiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgb2YgW2FkZF9leG5dIGlzIGFtb3J0aXplZCBjb25zdGFudC10aW1lIChpZiBbdF0gaXMgdXNlZFxuICAgICAgICAgICAgbGluZWFybHkpLCB3aXRoIGEgd29yc3QtY2FzZSBPKGxvZyhuKSkgdGltZS4gKilcbiAgICAgICAgdmFsIGFkZF9leG5cbiAgICAgICAgICA6ICAoJ2ssICd2LCAndykgdFxuICAgICAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAndykgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4ga2V5OidrXG4gICAgICAgICAgLT4gZGF0YTondlxuICAgICAgICAgIC0+ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBpcyBPKGxvZyhuKSkuICopXG4gICAgICAgIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ3cpIHQgLT4gKCdrLCAndiwgJ3cpIHRyZWVcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzM1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0XG4gICAgICA6ICAnayBIYXNoLmZvbGRlclxuICAgICAgLT4gJ3YgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgICgqKiBUbyBnZXQgYXJvdW5kIHRoZSB2YWx1ZSByZXN0cmljdGlvbiwgYXBwbHkgdGhlIGZ1bmN0b3IgYW5kIGluY2x1ZGUgaXQuIFlvdVxuICAgICAgICBjYW4gc2VlIGFuIGV4YW1wbGUgb2YgdGhpcyBpbiB0aGUgW1BvbHldIHN1Ym1vZHVsZSBiZWxvdy4gKilcbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgTWFwLiAqKVxuICBtb2R1bGUgUG9seSA6XG4gICAgU19wb2x5XG4gICAgd2l0aCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0ID0gKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgICBhbmQgdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdHJlZSA9XG4gICAgICAgICAgICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAoKiogQ3JlYXRlIGEgbWFwIGZyb20gYSB0cmVlIHVzaW5nIHRoZSBnaXZlbiBjb21wYXJhdG9yLiAqKVxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBFeHRyYWN0IGEgdHJlZSBmcm9tIGEgbWFwLiAqKVxuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbTWFwXX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IEFjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IEFjY2Vzc29yczJcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMyA9IEFjY2Vzc29yczNcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IENyZWF0b3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBDcmVhdG9yczJcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID1cbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLkdlbmVyaWNfcGhhbnRvbVxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgKCoqIFRoZSBbb3B0aW9uc10gdHlwZSBpcyB1c2VkIHRvIG1ha2UgW0FjY2Vzc29yc19nZW5lcmljXSBmbGV4aWJsZSBhcyB0byB3aGV0aGVyIGFcbiAgICAgIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgcGFzc2VkIHRvIGNlcnRhaW4gZnVuY3Rpb25zLiAqKVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcblxuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG5cbiAgKCoqIG92ZXJyaWRlIFtDb250YWluZXJdJ3MgW21lbV0gKilcbiAgdmFsIG1lbSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiBib29sKSBvcHRpb25zXG5cbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2EgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnQpIG9wdGlvbnNcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0XG4gICAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSBuYW1lZCAtPiBvZl86KCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgbmFtZWQgLT4gKCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnQpIG9wdGlvbnNcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgZWx0IC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgZWx0IC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiBmOihbIGBMZWZ0IG9mICdhIGVsdCB8IGBSaWdodCBvZiAnYSBlbHQgfCBgQm90aCBvZiAnYSBlbHQgKiAnYSBlbHQgXSAtPiB1bml0KVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAnYSBlbHQgb3B0aW9uICogKCdhLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBncm91cF9ieVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgZWx0IC0+ICdhIGVsdCAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdFxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSBlbHQsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICdhIGVsdCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2tleSAtPiBpbnQpXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOignYSBlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhIGVsdCwgJ2EgZWx0KSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMwXG5cbiAgdHlwZSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcbiAgdmFsIGFkZCA6IHQgLT4gZWx0IC0+IHRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZWx0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcbiAgdmFsIGludGVyIDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiB0IC0+IHQgLT4gKGVsdCwgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6IHQgLT4gb2ZfOnQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogdCAtPiB0IC0+IGJvb2xcblxuICB0eXBlIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6IG5hbWVkIC0+IG9mXzpuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiBuYW1lZCAtPiBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+IGVsdCAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6IHQgLT4gaW5pdDonYiAtPiBmOihlbHQgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgdFxuICAgIC0+IHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mIGVsdCB8IGBSaWdodCBvZiBlbHQgfCBgQm90aCBvZiBlbHQgKiBlbHQgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gdFxuICB2YWwgcGFydGl0aW9uX3RmIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gdCAqIHRcbiAgdmFsIGVsZW1lbnRzIDogdCAtPiBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiB0IC0+IGVsdFxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiB0IC0+IGVsdFxuICB2YWwgY2hvb3NlIDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogdCAtPiBlbHRcbiAgdmFsIHNwbGl0IDogdCAtPiBlbHQgLT4gdCAqIGVsdCBvcHRpb24gKiB0XG4gIHZhbCBncm91cF9ieSA6IHQgLT4gZXF1aXY6KGVsdCAtPiBlbHQgLT4gYm9vbCkgLT4gdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdFxuICB2YWwgbnRoIDogdCAtPiBpbnQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdG9fdHJlZSA6IHQgLT4gdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+IHRcbiAgICAtPiBlbHQgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgdFxuICAgIC0+IGNvbXBhcmU6KGVsdCAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIHRcbiAgICAtPiBzZWdtZW50X29mOihlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gdFxuICAgIC0+IHRcbiAgICAtPiAoZWx0LCBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMVxuXG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogXyB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHVuaW9uIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGludGVyIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGRpZmYgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAnYSB0IC0+ICdhIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiAnYSB0IC0+IG9mXzonYSB0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgdHlwZSAnYSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiAnYSBuYW1lZCAtPiBvZl86J2EgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGVxdWFsIDogJ2EgbmFtZWQgLT4gJ2EgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgZWxlbWVudHMgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogJ2EgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBzcGxpdCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgdmFsIGdyb3VwX2J5IDogJ2EgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgdG9fdHJlZSA6ICdhIHQgLT4gJ2EgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAnYSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzFfcGhhbnRvbV9pbnZhcmlhbnRcblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIGludGVyIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSBuYW1lZCAtPiBvZl86KCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIG5hbWVkIC0+ICgnYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIHNwbGl0IDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuICB2YWwgZ3JvdXBfYnkgOiAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMV9waGFudG9tX2ludmFyaWFudFxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBtZW0gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHJlbW92ZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCB1bmlvblxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgaW50ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIGRpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaXNfc3Vic2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IG9mXzooJ2EsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGFyZV9kaXNqb2ludFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdHlwZSAoJ2EsICdjbXApIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gb2ZfOignYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhIC0+ICdhY2N1bSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gIHZhbCBpdGVyMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gIHZhbCByZW1vdmVfaW5kZXhcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gaW50XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChOYW1lZCA6IFQyKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMwIChNIDogQWNjZXNzb3JzMCkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wLCAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXAsICdhIGVsdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXAsICdhIGVsdCBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2EsICdjbXAsIGxlbjppbnQgLT4gZjooaW50IC0+ICdhIGVsdCkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfLCAnYSBlbHQgbGlzdCAtPiAnYSBlbHQgbGlzdCkgb3B0aW9uc1xuXG4gICgqKiBUaGUgdHlwZXMgb2YgW21hcF0gYW5kIFtmaWx0ZXJfbWFwXSBhcmUgc3VidGxlLiAgVGhlIGlucHV0IHNldCwgWygnYSwgXykgc2V0XSxcbiAgICAgIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgdGhlc2UgZnVuY3Rpb25zIHRha2UgYSBzZXQgb2YgKmFueSogdHlwZSwgd2l0aCBhbnlcbiAgICAgIGNvbXBhcmF0b3IsIHdoaWxlIHRoZSBvdXRwdXQgc2V0LCBbKCdiLCAnY21wKSB0XSwgcmVmbGVjdHMgdGhhdCB0aGUgb3V0cHV0IHNldCBoYXNcbiAgICAgIHRoZSBwYXJ0aWN1bGFyIFsnY21wXSBvZiB0aGUgY3JlYXRpb24gZnVuY3Rpb24uICBUaGUgY29tcGFyYXRvciBjYW4gY29tZSBpbiBvbmUgb2ZcbiAgICAgIHRocmVlIHdheXMsIGRlcGVuZGluZyBvbiB3aGljaCBzZXQgbW9kdWxlIGlzIHVzZWRcblxuICAgICAgLSBbU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBjb21lcyBhcyBhbiBhcmd1bWVudFxuICAgICAgLSBbU2V0LlBvbHkubWFwXSAtLSBjb21wYXJhdG9yIGlzIHBvbHltb3JwaGljIGNvbXBhcmlzb25cbiAgICAgIC0gW0Zvby5TZXQubWFwXSAtLSBjb21wYXJhdG9yIGlzIFtGb28uY29tcGFyYXRvcl0gKilcbiAgdmFsIG1hcCA6ICgnYiwgJ2NtcCwgKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IgZWx0KSAtPiAoJ2IsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBlbHQgb3B0aW9uKSAtPiAoJ2IsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczAgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlIHRcbiAgdHlwZSB0cmVlXG4gIHR5cGUgZWx0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIHVuaW9uX2xpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogZWx0IFNlcXVlbmNlLnQgLT4gdFxuICB2YWwgb2ZfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogZWx0IGFycmF5IC0+IHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6IGVsdCBhcnJheSAtPiB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+IGVsdCkgLT4gdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiBlbHQgbGlzdCAtPiBlbHQgbGlzdFxuICB2YWwgbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gZWx0KSAtPiB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gZWx0IG9wdGlvbikgLT4gdFxuICB2YWwgb2ZfdHJlZSA6IHRyZWUgLT4gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYSB0XG4gIHZhbCB1bmlvbl9saXN0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogJ2EgU2VxdWVuY2UudCAtPiAnYSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICdhIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogJ2EgbGlzdCAtPiAnYSBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgb2ZfdHJlZSA6ICdhIHRyZWUgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhKSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogJ2EgbGlzdCAtPiAnYSBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAoJ2IsICdjbXApIHRcbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB1bmlvbl9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgdmFsIG1hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdiLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIHNldFxuICAgIC0+IGY6KCdhIC0+ICdiKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2IsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgXykgc2V0XG4gICAgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl90cmVlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczAgKE0gOiBDcmVhdG9yczApID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMwXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHdpdGggdHlwZSB0cmVlIDo9IHRyZWVcbiAgICB3aXRoIHR5cGUgZWx0IDo9IGVsdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMxXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3QgOiAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCAnY21wKSB0IC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+ICgnZWx0LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdCA6IChtb2R1bGUgQ29tcGFyZV9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsX21fX3QgOiAobW9kdWxlIEVxdWFsX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdlbHQsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5cbiAgdmFsIGhhc2hfbV9fdCA6IChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgXykgdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgKCoqIFNldHMgYmFzZWQgb24geyFDb21wYXJhdG9yLlN9LlxuXG4gICAgICBDcmVhdG9ycyByZXF1aXJlIGEgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBwYXNzZWQgaW4sIHdoZXJlYXMgYWNjZXNzb3JzIHVzZSB0aGVcbiAgICAgIGNvbXBhcmF0b3IgcHJvdmlkZWQgYnkgdGhlIGlucHV0IHNldC4gKilcblxuICAoKiogVGhlIHR5cGUgb2YgYSBzZXQuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCwgYW5kXG4gICAgICB0aGUgc2Vjb25kIGlkZW50aWZpZXMgdGhlIGNvbXBhcmF0b3IsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdFxuICAgICAgaXMgdXNlZCBmb3Igb3JkZXJpbmcgZWxlbWVudHMgaW4gdGhpcyBzZXQuICBNYW55IG9wZXJhdGlvbnMgKGUuZy4sIHshdW5pb259KSxcbiAgICAgIHJlcXVpcmUgdGhhdCB0aGV5IGJlIHBhc3NlZCBzZXRzIHdpdGggdGhlIHNhbWUgZWxlbWVudCB0eXBlIGFuZCB0aGUgc2FtZSBjb21wYXJhdG9yXG4gICAgICB0eXBlLiAqKVxuICB0eXBlICgnZWx0LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnZWx0LCAnY21wKSB0IDo9ICgnZWx0LCAnY21wKSB0XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0cyBpbnRlcm5hbCBpbnZhcmlhbnRzIG9mIHRoZSBzZXQgZGF0YSBzdHJ1Y3R1cmUuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Y1xuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBDcmVhdGVzIGFuIGVtcHR5IHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvci4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yIHRoYXQgY29udGFpbnMgb25seSB0aGUgcHJvdmlkZWRcbiAgICAgIGVsZW1lbnQuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSBzZXQuIFtPKDEpXS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuXG4gICgqKiBbaXNfZW1wdHkgdF0gaXMgW3RydWVdIGlmZiBbdF0gaXMgZW1wdHkuICBbTygxKV0uICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW21lbSB0IGFdIHJldHVybnMgW3RydWVdIGlmZiBbYV0gaXMgaW4gW3RdLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBib29sXG5cbiAgKCoqIFthZGQgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSBhZGRlZCB0byBbdF0sIG9yIHJldHVybnMgW3RdIGlmIFttZW0gdCBhXS5cbiAgICAgIFtPKGxvZyBuKV0uICopXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtyZW1vdmUgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSByZW1vdmVkIGZyb20gW3RdIGlmIFttZW0gdCBhXSwgb3IgcmV0dXJucyBbdF1cbiAgICAgIG90aGVyd2lzZS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiB0MSB0Ml0gcmV0dXJucyB0aGUgdW5pb24gb2YgdGhlIHR3byBzZXRzLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiBjIGxpc3RdIHJldHVybnMgdGhlIHVuaW9uIG9mIGFsbCB0aGUgc2V0cyBpbiBbbGlzdF0uICBUaGVcbiAgICAgIFtjb21wYXJhdG9yXSBhcmd1bWVudCBpcyByZXF1aXJlZCBmb3IgdGhlIGNhc2Ugd2hlcmUgW2xpc3RdIGlzIGVtcHR5LlxuICAgICAgW08obWF4KExpc3QubGVuZ3RoIGxpc3QsIG4gbG9nIG4pKV0sIHdoZXJlIFtuXSBpcyB0aGUgc3VtIG9mIHNpemVzIG9mIHRoZSBpbnB1dCBzZXRzLiAqKVxuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ludGVyIHQxIHQyXSBjb21wdXRlcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHNldHMgW3QxXSBhbmQgW3QyXS4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGludGVyIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2RpZmYgdDEgdDJdIGNvbXB1dGVzIHRoZSBzZXQgZGlmZmVyZW5jZSBbdDEgLSB0Ml0sIGkuZS4sIHRoZSBzZXQgY29udGFpbmluZyBhbGxcbiAgICAgIGVsZW1lbnRzIGluIFt0MV0gdGhhdCBhcmUgbm90IGluIFt0Ml0uICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3ltbWV0cmljX2RpZmYgdDEgdDJdIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS4gSXQgaXNcbiAgICAgIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50IG9mXG4gICAgICBzdHJ1Y3R1cmUuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuXG4gICgqKiBbY29tcGFyZV9kaXJlY3QgdDEgdDJdIGNvbXBhcmVzIHRoZSBzZXRzIFt0MV0gYW5kIFt0Ml0uICBJdCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdFxuICAgICAgYXMgW2NvbXBhcmVdLCBidXQgdW5saWtlIGNvbXBhcmUsIGRvZXNuJ3QgcmVxdWlyZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIGZvciB0aGVcbiAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgc2V0LiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBzZXRzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIHMpLmNvbXBhcmVdIG9mIHRoZSBzZXQgW3NdIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2EgSGFzaC5mb2xkZXIgLT4gKCdhLCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZSB0d28gc2V0cyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildICopXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbZXhpc3RzIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiB0aGVyZSBleGlzdHMgYW4gW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYV0uICBbTyhuKV0sXG4gICAgICBidXQgcmV0dXJucyBhcyBzb29uIGFzIGl0IGZpbmRzIGFuIFthXSBmb3Igd2hpY2ggW2YgYV0uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBbZm9yX2FsbCB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgZm9yIGFsbCBbYV0gaW4gW3RdLCBbZiBhXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXNcbiAgICAgIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbbm90IChmIGEpXS4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBbY291bnQgdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW3RydWVdLlxuICAgICAgW08obildLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFtzdW0gdF0gcmV0dXJucyB0aGUgc3VtIG9mIFtmIHRdIGZvciBlYWNoIFt0XSBpbiB0aGUgc2V0LlxuICAgICAgW08obildLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIC0+ICdzdW0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBbZmluZCB0IGZdIHJldHVybnMgYW4gZWxlbWVudCBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIHRydWUsIHdpdGggbm8gZ3VhcmFudGVlIGFzXG4gICAgICB0byB3aGljaCBlbGVtZW50IGlzIHJldHVybmVkLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGUgZWxlbWVudCBpc1xuICAgICAgZm91bmQuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbZmluZF9tYXAgdCBmXSByZXR1cm5zIFtiXSBmb3Igc29tZSBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhID0gU29tZSBiXS4gIElmIG5vIHN1Y2hcbiAgICAgIFthXSBleGlzdHMsIHRoZW4gW2ZpbmRdIHJldHVybnMgW05vbmVdLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGVcbiAgICAgIGVsZW1lbnQgaXMgZm91bmQuICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gICgqKiBMaWtlIFtmaW5kXSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG5cbiAgKCoqIFtudGggdCBpXSByZXR1cm5zIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IG9mIFt0XSwgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlXG4gICAgICBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbTm9uZV0gaWYgW2kgPCAwXSBvciBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gICgqKiBbcmVtb3ZlX2luZGV4IHQgaV0gcmV0dXJucyBhIHZlcnNpb24gb2YgW3RdIHdpdGggdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgcmVtb3ZlZCxcbiAgICAgIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZSBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbdF0gaWYgW2kgPCAwXSBvclxuICAgICAgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIHRydWUgaWZmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXS4gKilcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2FyZV9kaXNqb2ludCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIFtpc19lbXB0eSAoaW50ZXIgdDEgdDIpXSwgYnV0IGlzIG1vcmVcbiAgICAgIGVmZmljaWVudC4gKilcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbTmFtZWRdIGFsbG93cyB0aGUgdmFsaWRhdGlvbiBvZiBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBzZXRzLiAgQVxuICAgICAgW05hbWVkLnRdIGlzIGEgcmVjb3JkIG9mIGEgc2V0IGFuZCBhIG5hbWUsIHdoZXJlIHRoZSBuYW1lIGlzIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMsXG4gICAgICBhbmQgW05hbWVkLmlzX3N1YnNldF0gYW5kIFtOYW1lZC5lcXVhbF0gdmFsaWRhdGUgc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzXG4gICAgICByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGZvciwgZS5nLixcbiAgICAgIHtbXG4gICAgICAgIE5hbWVkLmlzX3N1YnNldCB7IHNldCA9IHNldDE7IG5hbWUgPSBcInNldDFcIiB9IH5vZl86e3NldCA9IHNldDI7IG5hbWUgPSBcInNldDJcIiB9XG4gICAgICBdfVxuXG4gICAgICBsb29rcyBsaWtlXG4gICAgICB7dlxuICAgICAgICAoXCJzZXQxIGlzIG5vdCBhIHN1YnNldCBvZiBzZXQyXCIgKGludmFsaWRfZWxlbWVudHMgKC4uLmVsZW1lbnRzIG9mIHNldDEgLSBzZXQyLi4uKSkpXG4gICAgIHZ9XG5cbiAgICAgIHNvIFtuYW1lXSBzaG91bGQgYmUgYSBub3VuIHBocmFzZSB0aGF0IGRvZXNuJ3Qgc291bmQgYXdrd2FyZCBpbiB0aGUgYWJvdmUgZXJyb3JcbiAgICAgIG1lc3NhZ2UuICBFdmVuIHRob3VnaCBpdCBhZGRzIHZlcmJvc2l0eSwgY2hvb3NpbmcgW25hbWVdcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHBocmFzZVxuICAgICAgXCJ0aGUgc2V0IG9mXCIgb2Z0ZW4gbWFrZXMgdGhlIGVycm9yIG1lc3NhZ2Ugc291bmQgbW9yZSBuYXR1cmFsLlxuICAqKVxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyBzZXQgOiAoJ2EsICdjbXApIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXSBhbmQgYVxuICAgICAgICBodW1hbi1yZWFkYWJsZSBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW09rICgpXSBpZiBbdDFdIGlzIGVxdWFsIHRvIFt0Ml0gYW5kIGEgaHVtYW4tcmVhZGFibGVcbiAgICAgICAgZXJyb3Igb3RoZXJ3aXNlLiAgKilcbiAgICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICAoKiogVGhlIGxpc3Qgb3IgYXJyYXkgZ2l2ZW4gdG8gW29mX2xpc3RdIGFuZCBbb2ZfYXJyYXldIG5lZWQgbm90IGJlIHNvcnRlZC4gKilcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdG9fbGlzdF0gYW5kIFt0b19hcnJheV0gcHJvZHVjZSBzZXF1ZW5jZXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICBjb21wYXJhdG9yLiAqKVxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIENyZWF0ZSBzZXQgZnJvbSBzb3J0ZWQgYXJyYXkuICBUaGUgaW5wdXQgbXVzdCBiZSBzb3J0ZWQgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3JcbiAgICAgIGRlc2NlbmRpbmcgb3JkZXIgYXMgZ2l2ZW4gYnkgdGhlIGNvbXBhcmF0b3IpIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZXMsIG90aGVyd2lzZSB0aGVcbiAgICAgIHJlc3VsdCBpcyBhbiBlcnJvci4gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgW08obildLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBTaW1pbGFyIHRvIFtvZl9zb3J0ZWRfYXJyYXldLCBidXQgd2l0aG91dCBjaGVja2luZyB0aGUgaW5wdXQgYXJyYXkuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzdGFibGVfZGVkdXBfbGlzdF0gaXMgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgW0xpc3RdIG1vZHVsZSBiZWNhdXNlIHRoZVxuICAgICAgaW1wbGVtZW50YXRpb24gcmVsaWVzIGNydWNpYWxseSBvbiBzZXRzLCBhbmQgYmVjYXVzZSBkb2luZyBzbyBhbGxvd3Mgb25lIHRvIGF2b2lkIHVzZXNcbiAgICAgIG9mIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYnkgaW5zdGFudGlhdGluZyB0aGUgZnVuY3RvciBhdCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvblxuICAgICAgb2YgW0NvbXBhcmF0b3JdIGFuZCB1c2luZyB0aGUgcmVzdWx0aW5nIFtzdGFibGVfZGVkdXBfbGlzdF0uICopXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXykgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAoKiogW21hcCBjIHQgfmZdIHJldHVybnMgYSBuZXcgc2V0IGNyZWF0ZWQgYnkgYXBwbHlpbmcgW2ZdIHRvIGV2ZXJ5IGVsZW1lbnQgaW5cbiAgICAgIFt0XS4gIFRoZSByZXR1cm5lZCBzZXQgaXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIFtjb21wYXJhdG9yXS4gIFtPKG4gbG9nIG4pXS4gKilcbiAgdmFsIG1hcCA6ICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIHshbWFwfSwgZXhjZXB0IGVsZW1lbnRzIGZvciB3aGljaCBbZl0gcmV0dXJucyBbTm9uZV0gd2lsbCBiZSBkcm9wcGVkLiAgKilcbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyB0aGUgc3Vic2V0IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAgW08obiBsb2dcbiAgICAgIG4pXS4gKilcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvIGxhcmdlc3QuICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdCwgc2hvcnQgY2lyY3VpdGluZyB0aGUgZm9sZCBpZiBbZiBhY2N1bSB4XSBpcyBhbiBbRXJyb3IgX10gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG5cbiAgKCoqIExpa2UgeyFmb2xkfSwgZXhjZXB0IHRoYXQgaXQgZ29lcyBmcm9tIHRoZSBsYXJnZXN0IHRvIHRoZSBzbWFsbGVzdCBlbGVtZW50LiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYSAtPiAnYWNjdW0gLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2l0ZXIgdCB+Zl0gY2FsbHMgW2ZdIG9uIGV2ZXJ5IGVsZW1lbnQgb2YgW3RdLCBnb2luZyBpbiBvcmRlciBmcm9tIHRoZSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdC4gICopXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZSB0d28gc2V0cyBzaWRlIGJ5IHNpZGUuICBDb21wbGV4aXR5IGlzIFtPKG0rbildIHdoZXJlIFttXSBhbmQgW25dIGFyZSB0aGUgc2l6ZXNcbiAgICAgIG9mIHRoZSB0d28gaW5wdXQgc2V0cy4gIEFzIGFuIGV4YW1wbGUsIHdpdGggdGhlIGlucHV0cyBbMDsgMV0gYW5kIFsxOyAyXSwgW2ZdIHdpbGwgYmVcbiAgICAgIGNhbGxlZCB3aXRoIFtgTGVmdCAwXTsgW2BCb3RoICgxLCAxKV07IGFuZCBbYFJpZ2h0IDJdLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBpZiBbYSwgYiA9IHBhcnRpdGlvbl90ZiBzZXQgfmZdIHRoZW4gW2FdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZWQgW3RydWVdLFxuICAgICAgYW5kIFtiXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VzIFtmYWxzZV0uICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFNhbWUgYXMgeyF0b19saXN0fS4gKilcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtaW5fZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBSZXR1cm5zIHRoZSBsYXJnZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICAqKVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1heF9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIHJldHVybnMgYW4gYXJiaXRyYXJ5IGVsZW1lbnQsIG9yIFtOb25lXSBpZiB0aGUgc2V0IGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshY2hvb3NlfSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBbc3BsaXQgdCB4XSBwcm9kdWNlcyBhIHRyaXBsZSBbKHQxLCBtYXliZV94LCB0MildIHdoZXJlIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50c1xuICAgICAgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSwgW21heWJlX3hdIGlzIHRoZSBtZW1iZXIgKGlmIGFueSkgb2YgW3RdIHdoaWNoIGNvbXBhcmVzIGVxdWFsXG4gICAgICB0byBbeF0sIGFuZCBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGFyZ2VyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIGlmIFtlcXVpdl0gaXMgYW4gZXF1aXZhbGVuY2UgcHJlZGljYXRlLCB0aGVuIFtncm91cF9ieSBzZXQgfmVxdWl2XSBwcm9kdWNlcyBhIGxpc3RcbiAgICAgIG9mIGVxdWl2YWxlbmNlIGNsYXNzZXMgKGkuZS4sIGEgc2V0LXRoZW9yZXRpYyBxdW90aWVudCkuICBFLmcuLFxuXG4gICAgICB7W1xuICAgICAgICBsZXQgY2hhcnMgPSBTZXQub2ZfbGlzdCBbJ0EnOyAnYSc7ICdiJzsgJ2MnXSBpblxuICAgICAgICBsZXQgZXF1aXYgYyBjJyA9IENoYXIuZXF1YWwgKENoYXIudXBwZXJjYXNlIGMpIChDaGFyLnVwcGVyY2FzZSBjJykgaW5cbiAgICAgICAgZ3JvdXBfYnkgY2hhcnMgfmVxdWl2XG4gICAgICBdfVxuXG4gICAgICBwcm9kdWNlczpcblxuICAgICAge1tcbiAgICAgICAgW1NldC5vZl9saXN0IFsnQSc7J2EnXTsgU2V0LnNpbmdsZXRvbiAnYic7IFNldC5zaW5nbGV0b24gJ2MnXVxuICAgICAgXX1cblxuICAgICAgW2dyb3VwX2J5XSBydW5zIGluIE8obl4yKSB0aW1lLCBzbyBpZiB5b3UgaGF2ZSBhIGNvbXBhcmlzb24gZnVuY3Rpb24sIGl0J3MgdXN1YWxseVxuICAgICAgbXVjaCBmYXN0ZXIgdG8gdXNlIFtTZXQub2ZfbGlzdF0uICopXG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICAoKiogW3RvX3NlcXVlbmNlIHRdIGNvbnZlcnRzIHRoZSBzZXQgW3RdIHRvIGEgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIGJldHdlZW5cbiAgICAgIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmQgW2xlc3Nfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSBpbiB0aGUgb3JkZXIgaW5kaWNhdGVkIGJ5XG4gICAgICBbb3JkZXJdLiAgSWYgW2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBsZXNzX29yX2VxdWFsX3RvXSB0aGUgc2VxdWVuY2UgaXMgZW1wdHkuICBDb3N0IGlzXG4gICAgICBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgZm9yIGVhY2ggZWxlbWVudCBwcm9kdWNlZC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gW3RdIHNwZWNpZmllZCBieVxuICAgICAgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiB0aGUgc2VnbWVudHMgYXNcbiAgICAgIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGxlZnQgc2VnbWVudCxcbiAgICAgIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC4gIEl0IHJldHVybnNcbiAgICAgIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBQcm9kdWNlcyB0aGUgZWxlbWVudHMgb2YgdGhlIHR3byBzZXRzIGJldHdlZW4gW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2xlc3Nfb3JfZXF1YWxfdG9dIGluIFtvcmRlcl0sIG5vdGluZyB3aGV0aGVyIGVhY2ggZWxlbWVudCBhcHBlYXJzIGluIHRoZSBsZWZ0IHNldCxcbiAgICAgIHRoZSByaWdodCBzZXQsIG9yIGJvdGguICBJbiB0aGUgYm90aCBjYXNlLCBib3RoIGVsZW1lbnRzIGFyZSByZXR1cm5lZCwgaW4gY2FzZSB0aGVcbiAgICAgIGNhbGxlciBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0byB0aGUgc2V0cycgY29tcGFyYXRvci4gIFJ1bnNcbiAgICAgIGluIE8obGVuZ3RoIHQgKyBsZW5ndGggdCcpLiAqKVxuICBtb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgICAgfCBMZWZ0IG9mICdhXG4gICAgICB8IFJpZ2h0IG9mICdiXG4gICAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSBTZXQuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IChTdHJpbmcudCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtTZXQuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzLFxuICAgICAgaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS4gKilcbiAgbW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBTZXQuICopXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICgqKiBVc2luZyBjb21wYXJhdG9yIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtTZXRdLCBleGNlcHQgdGhlIGZ1bmN0aW9uc1xuICAgICAgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XSB3aGVyZSB0aGUgZnVuY3Rpb25zIGF0IHRoZSB0b3BsZXZlbCBvZlxuICAgICAgW1NldF0gdGFrZXMgYSBbKCdlbHQsICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2VsdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgICgqKiBBIFtUcmVlLnRdIGNvbnRhaW5zIGp1c3QgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBhIHNldCBpcyBiYXNlZCBvbiwgd2l0aG91dFxuICAgICAgICAgIGluY2x1ZGluZyB0aGUgY29tcGFyYXRvci4gIEFjY29yZGluZ2x5LCBhbnkgb3BlcmF0aW9uIG9uIGEgW1RyZWUudF0gbXVzdCBhbHNvIHRha2VcbiAgICAgICAgICBhcyBhbiBhcmd1bWVudCB0aGUgY29ycmVzcG9uZGluZyBjb21wYXJhdG9yLiAqKVxuICAgICAgdHlwZSAoJ2EsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICAgICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgICAgICB7IHRyZWUgOiAoJ2EsICdjbXApIHRcbiAgICAgICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgICB9XG5cbiAgICAgICAgdmFsIGlzX3N1YnNldFxuICAgICAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiBvZl86KCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgICAgdmFsIGVxdWFsXG4gICAgICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcbiAgICAgICAgd2l0aCBtb2R1bGUgTmFtZWQgOj0gTmFtZWRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXykgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzMlxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnZWx0IEhhc2guZm9sZGVyIC0+ICgnZWx0LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW1NldF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBBY2Nlc3NvcnMwXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBBY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBBY2Nlc3NvcnMyXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yczAgPSBDcmVhdG9yczBcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gQ3JlYXRvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IENyZWF0b3JzMlxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMlxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9XG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNldF9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFbXB0eVxuICAgICgqIChMZWFmIHgpIGlzIHRoZSBzYW1lIGFzIChOb2RlIChFbXB0eSwgeCwgRW1wdHksIDEsIDEpKSBidXQgdXNlcyBsZXNzIHNwYWNlLiAqKVxuICAgIHwgTGVhZiBvZiAnYVxuICAgICgqIGZpcnN0IGludCBpcyBoZWlnaHQsIHNlY29uZCBpcyBzdWItdHJlZSBzaXplICopXG4gICAgfCBOb2RlIG9mICdhIHQgKiAnYSAqICdhIHQgKiBpbnQgKiBpbnRcblxuICB0eXBlICdhIHRyZWUgPSAnYSB0XG5cbiAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGUgY2hpbGRyZW4gZGlmZmVyIGJ5XG4gICAgIGF0IG1vc3QgMi4gKilcbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHYgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2VsdCBsb3dlciB2IDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfZWx0IHYgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIHYgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBoLCBuKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgbiA9IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSB2KSBjb21wYXJlX2VsdCBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgdikgdXBwZXIgY29tcGFyZV9lbHQgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfZWx0IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfZWx0IHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgIGlmIGggPSAxXG4gICAgdGhlbiBMZWFmIHZcbiAgICBlbHNlIChcbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLlNldCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgayA9IGYgaSBpblxuICAgICAgICBMZWFmIGtcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIEVtcHR5XG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgKExlYWYga3IpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICAoKiBXZSBkb24ndCBjaGVjayBpZiB0aGUgYXJyYXkgaXMgc29ydGVkIG9yIGtleXMgYXJlIGR1cGxpY2F0ZWQsIGJlY2F1c2UgdGhhdFxuICAgICAgICAgY2hlY2tpbmcgaXMgc2xvd2VyIHRoYW4gdGhlIHdob2xlIFtvZl9zb3J0ZWRfYXJyYXldIGZ1bmN0aW9uICopXG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyIHx8IGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKGkpIGFycmF5LihpICsgMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCkpXG4gIDs7XG5cbiAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gIGxldCBiYWwgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgobCk+aChyKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIGxydiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBsbCk7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBFbXB0eSkgbHJ2IChjcmVhdGUgRW1wdHkgdiByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChyKT5oKGwpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgcmx2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IHJyKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBFbXB0eSkgcmx2IChjcmVhdGUgRW1wdHkgcnYgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgaWYgaCA9IDEgdGhlbiBMZWFmIHYgZWxzZSBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgZXhjZXB0aW9uIFNhbWVcblxuICBsZXQgYWRkIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIHJhaXNlIFNhbWVcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGNyZWF0ZSAoTGVhZiB4KSB2IEVtcHR5XG4gICAgICAgIGVsc2UgY3JlYXRlIEVtcHR5IHYgKExlYWYgeClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByYWlzZSBTYW1lIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmRcbiAgICAgci4gKilcbiAgbGV0IHJlYyBqb2luIGwgdiByIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBhZGQgciB2IH5jb21wYXJlX2VsdFxuICAgIHwgXywgRW1wdHkgLT4gYWRkIGwgdiB+Y29tcGFyZV9lbHRcbiAgICB8IExlYWYgbHYsIF8gLT4gYWRkIChhZGQgciB2IH5jb21wYXJlX2VsdCkgbHYgfmNvbXBhcmVfZWx0XG4gICAgfCBfLCBMZWFmIHJ2IC0+IGFkZCAoYWRkIGwgdiB+Y29tcGFyZV9lbHQpIHJ2IH5jb21wYXJlX2VsdFxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgbGgsIF8pLCBOb2RlIChybCwgcnYsIHJyLCByaCwgXykgLT5cbiAgICAgIGlmIGxoID4gcmggKyAyXG4gICAgICB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIgfmNvbXBhcmVfZWx0KVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgMlxuICAgICAgdGhlbiBiYWwgKGpvaW4gbCB2IHJsIH5jb21wYXJlX2VsdCkgcnYgcnJcbiAgICAgIGVsc2UgY3JlYXRlIGwgdiByXG4gIDs7XG5cbiAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKEVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGFjYyA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AuQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgdmFsdWUgLT4gZiBhY2MgdmFsdWVcbiAgICAgIHwgTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgbGVmdCBhY2Mgd2l0aFxuICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgYWNjIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgICAgIHwgQ29udGludWUgYSAtPiBmb2xkX3VudGlsX2hlbHBlciB+ZiByaWdodCBhKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgaW5pdCB3aXRoXG4gICAgfCBDb250aW51ZSB4IC0+IGZpbmlzaCB4XG4gICAgfCBTdG9wIHggLT4geFxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChfLCB2LCBFbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCBfLCByLCBfLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgciwgXywgXykgLT4gclxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gYmFsIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG4gIGxldCBjb25jYXQgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGpvaW4gdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpIH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzcGxpdCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHNwbGl0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgU29tZSB2LCBFbXB0eVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gRW1wdHksIE5vbmUsIExlYWYgdlxuICAgICAgICBlbHNlIExlYWYgdiwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBsLCBTb21lIHYsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbGwsIG1heWJlX2VsdCwgcmwgPSBzcGxpdCBsIGluXG4gICAgICAgICAgbGwsIG1heWJlX2VsdCwgam9pbiBybCB2IHIgfmNvbXBhcmVfZWx0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbHIsIG1heWJlX2VsdCwgcnIgPSBzcGxpdCByIGluXG4gICAgICAgICAgam9pbiBsIHYgbHIgfmNvbXBhcmVfZWx0LCBtYXliZV9lbHQsIHJyKVxuICAgIGluXG4gICAgc3BsaXQgdFxuICA7O1xuXG4gICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IHJlYyBtZW0gdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDBcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDAgfHwgbWVtIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24geCA9IExlYWYgeFxuXG4gIGxldCByZW1vdmUgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgU2FtZVxuICAgICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID0gMCB0aGVuIEVtcHR5IGVsc2UgcmFpc2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgciBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0Ol8gPVxuICAgIGxldCByZWMgYXV4IHQgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgU2FtZVxuICAgICAgfCBMZWFmIF8gLT4gaWYgaSA9IDAgdGhlbiBFbXB0eSBlbHNlIHJhaXNlIFNhbWVcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsIGkpIHYgclxuICAgICAgICBlbHNlIGJhbCBsIHYgKGF1eCByIChpIC0gbF9zaXplIC0gMSkpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgaSB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgdW5pb24gczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCB0IHwgdCwgRW1wdHkgLT4gdFxuICAgICAgICB8IExlYWYgdjEsIF8gLT4gdW5pb24gKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSBzMlxuICAgICAgICB8IF8sIExlYWYgdjIgLT4gdW5pb24gczEgKE5vZGUgKEVtcHR5LCB2MiwgRW1wdHksIDEsIDEpKVxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIGgxLCBfKSwgTm9kZSAobDIsIHYyLCByMiwgaDIsIF8pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDJcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDFcbiAgICAgICAgICAgIHRoZW4gYWRkIHMxIHYyIH5jb21wYXJlX2VsdFxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBsMiwgXywgcjIgPSBzcGxpdCBzMiB2MSB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMikgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgIGVsc2UgaWYgaDEgPSAxXG4gICAgICAgICAgdGhlbiBhZGQgczIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbDEsIF8sIHIxID0gc3BsaXQgczEgdjIgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgdW5pb24gczEgczJcbiAgOztcblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSB4cyA9XG4gICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBMaXN0LmZvbGQgeHMgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhYyB4IC0+IHVuaW9uIGFjICh0b190cmVlIHgpIH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgaW50ZXIgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSAtPlxuICAgICAgICAgIGlmIG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdCB0aGVuIHNpbmdsZXRvbiBlbHNlIEVtcHR5XG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMikgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgIHwgbDIsIFNvbWUgdjEsIHIyIC0+IGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICBpbnRlciBzMSBzMlxuICA7O1xuXG4gIGxldCBkaWZmIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gRW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIC0+IEVtcHR5XG4gICAgICAgIHwgdDEsIEVtcHR5IC0+IHQxXG4gICAgICAgIHwgTGVhZiB2MSwgdDIgLT4gZGlmZiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHQyXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgfCBsMiwgU29tZSBfLCByMiAtPiBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgZGlmZiBzMSBzMlxuICA7O1xuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnYSwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdhICogJ2EgdHJlZSAqICgnYSwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHMgKGUgOiAoXywgaW5jcmVhc2luZykgdCkgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCBzIChlIDogKF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V0IHMgOiAoXywgaW5jcmVhc2luZykgdCA9IGNvbnMgcyBFbmRcbiAgICBsZXQgb2Zfc2V0X3JpZ2h0IHMgOiAoXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgcyBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgciwgXywgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgZTEgZTIgPVxuICAgICAgbGV0IHJlYyBsb29wIGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gICAgICAgICAgdGhlbiBsb29wIGUxIGUyXG4gICAgICAgICAgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMilcbiAgICAgIGluXG4gICAgICBsb29wIGUxIGUyXG4gICAgOztcblxuICAgIGxldCByZWMgaXRlciB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiAoKVxuICAgICAgfCBNb3JlIChhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBmIGE7XG4gICAgICAgIGl0ZXIgKGNvbnMgdHJlZSBlbnVtKSB+ZlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcjIgY29tcGFyZV9lbHQgdDEgdDIgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAoKVxuICAgICAgICB8IEVuZCwgXyAtPiBpdGVyIHQyIH5mOihmdW4gYSAtPiBmIChgUmlnaHQgYSkpXG4gICAgICAgIHwgXywgRW5kIC0+IGl0ZXIgdDEgfmY6KGZ1biBhIC0+IGYgKGBMZWZ0IGEpKVxuICAgICAgICB8IE1vcmUgKGExLCB0cmVlMSwgZW51bTEpLCBNb3JlIChhMiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgQm90aCAoYTEsIGEyKSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBMZWZ0IGExKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgZiAoYFJpZ2h0IGEyKTtcbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA6ICgoXywgXykgRWl0aGVyLnQsIF8pIFNlcXVlbmNlLlN0ZXAudCA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBEb25lXG4gICAgICAgIHwgRW5kLCBNb3JlIChlbHQsIHRyZWUsIGVudW0pIC0+IFlpZWxkIChTZWNvbmQgZWx0LCAoRW5kLCBjb25zIHRyZWUgZW51bSkpXG4gICAgICAgIHwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSwgRW5kIC0+IFlpZWxkIChGaXJzdCBlbHQsIChjb25zIHRyZWUgZW51bSwgRW5kKSlcbiAgICAgICAgfCAoTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChhMiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCBhMSBhMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICAgIHRoZW4gZW51bTEsIGVudW0yXG4gICAgICAgICAgICAgIGVsc2UgY29ucyB0cmVlMSBlbnVtMSwgY29ucyB0cmVlMiBlbnVtMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNraXAgbmV4dF9zdGF0ZSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gWWllbGQgKEZpcnN0IGExLCAoY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQpKVxuICAgICAgICAgIGVsc2UgWWllbGQgKFNlY29uZCBhMiwgKGxlZnQsIGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl9zZXQgdDEsIG9mX3NldCB0MikgfmY6c3RlcFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKGssIEVudW0uY29ucyB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIChrLCBFbnVtLmNvbnNfcmlnaHQgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0X3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2VsdCBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlbHQgLT4gYWRkIHQgZWx0IH5jb21wYXJlX2VsdFxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGdyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMClcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB4ID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgICAgIHQnXG4gICAgPVxuICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQpXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCcpXG4gICAgICB+Y29tcGFyZTpcbiAgICAgICAgKG1hdGNoIG9yZGVyIHdpdGhcbiAgICAgICAgIHwgYEluY3JlYXNpbmcgLT4gY29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB8IGBEZWNyZWFzaW5nIC0+IEZuLmZsaXAgY29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHMxIHMyIH5jb21wYXJlX2VsdCA9IEVudW0uaXRlcjIgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIGxldCBlcXVhbCBzMSBzMiB+Y29tcGFyZV9lbHQgPSBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID0gMFxuXG4gIGxldCBpc19zdWJzZXQgczEgfm9mXzpzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaXNfc3Vic2V0IHMxIH5vZl86czIgPVxuICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgIHwgRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBMZWFmIHYxLCB0MiAtPiBtZW0gdDIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCBMZWFmIHYyIC0+XG4gICAgICAgIChtYXRjaCBsMSwgcjEgd2l0aFxuICAgICAgICAgfCBFbXB0eSwgRW1wdHkgLT5cbiAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZG4ndCBvY2N1ciBpbiBwcmFjdGljZSBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGNvbnN0cnVjdGVkXG4gICAgICAgICAgICAgIGEgTGVhZiByYXRoZXIgdGhhbiBhIE5vZGUgd2l0aCB0d28gRW1wdHkgc3VidHJlZXMgKilcbiAgICAgICAgICAgY29tcGFyZV9lbHQgdjEgdjIgPSAwXG4gICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCAoTm9kZSAobDIsIHYyLCByMiwgXywgXykgYXMgdDIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIHBoeXNfZXF1YWwgczEgczIgfHwgKGlzX3N1YnNldCBsMSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnIyKVxuICAgICAgICAgICgqIE5vdGUgdGhhdCBoZWlnaHQgYW5kIHNpemUgZG9uJ3QgbWF0dGVyIGhlcmUuICopXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBpc19zdWJzZXQgKE5vZGUgKGwxLCB2MSwgRW1wdHksIDAsIDApKSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnQyXG4gICAgICAgIGVsc2UgaXNfc3Vic2V0IChOb2RlIChFbXB0eSwgdjEsIHIxLCAwLCAwKSkgfm9mXzpyMiAmJiBpc19zdWJzZXQgbDEgfm9mXzp0MlxuICAgIGluXG4gICAgaXNfc3Vic2V0IHMxIH5vZl86czJcbiAgOztcblxuICBsZXQgcmVjIGFyZV9kaXNqb2ludCBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgZWx0LCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIExlYWYgZWx0IC0+IG5vdCAobWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0KVxuICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIGZhbHNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT5cbiAgICAgICAgICBhcmVfZGlzam9pbnQgbDEgbDIgfmNvbXBhcmVfZWx0ICYmIGFyZV9kaXNqb2ludCByMSByMiB+Y29tcGFyZV9lbHRcbiAgICAgICAgfCBfLCBTb21lIF8sIF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBpdGVyIGw7XG4gICAgICAgIGYgdjtcbiAgICAgICAgaXRlciByXG4gICAgaW5cbiAgICBpdGVyIHRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IHJlYyBmb2xkIHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiBhY2N1IHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpIHYpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfZWxlbSBzdGF0ZSB0ID1cbiAgICBmb2xkIHQgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSkgfmY6aGFzaF9mb2xkX2VsZW1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIHYgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIHYgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgcmVjIGZvcl9hbGwgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiAmJiBmb3JfYWxsIH5mOnAgbCAmJiBmb3JfYWxsIH5mOnAgclxuICA7O1xuXG4gIGxldCByZWMgZXhpc3RzIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2IHx8IGV4aXN0cyB+ZjpwIGwgfHwgZXhpc3RzIH5mOnAgclxuICA7O1xuXG4gIGxldCBmaWx0ZXIgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPiBpZiBwIHYgdGhlbiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdCBlbHNlIGFjY3VcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdCAoZmlsdCAoaWYgcCB2IHRoZW4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQgZWxzZSBhY2N1KSBsKSByXG4gICAgaW5cbiAgICBmaWx0IEVtcHR5IHNcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGZpbHQgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBmaWx0XG4gICAgICAgICAgKGZpbHRcbiAgICAgICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICByXG4gICAgaW5cbiAgICBmaWx0IEVtcHR5IHNcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgcGFydCAoKHQsIGYpIGFzIGFjY3UpID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT4gaWYgcCB2IHRoZW4gYWRkIHQgdiB+Y29tcGFyZV9lbHQsIGYgZWxzZSB0LCBhZGQgZiB2IH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBwYXJ0IChwYXJ0IChpZiBwIHYgdGhlbiBhZGQgdCB2IH5jb21wYXJlX2VsdCwgZiBlbHNlIHQsIGFkZCBmIHYgfmNvbXBhcmVfZWx0KSBsKSByXG4gICAgaW5cbiAgICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcbiAgOztcblxuICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiB2IDo6IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG4gIDs7XG5cbiAgbGV0IGVsZW1lbnRzIHMgPSBlbGVtZW50c19hdXggW10gc1xuXG4gIGxldCBjaG9vc2UgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgY2hvb3NlX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU2V0LmNob29zZV9leG46IGVtcHR5IHNldFwiKSBpblxuICAgIGxldCBjaG9vc2VfZXhuIHQgPVxuICAgICAgbWF0Y2ggY2hvb3NlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGNob29zZV9leG5cbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsc3QgfmNvbXBhcmVfZWx0ID1cbiAgICBMaXN0LmZvbGQgbHN0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSB+Y29tcGFyZV9lbHQgPVxuICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgcyA9IGVsZW1lbnRzIHNcblxuICBsZXQgb2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQgPVxuICAgIEFycmF5LmZvbGQgYSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICAoKiBmYXN0ZXIgYnV0IGVxdWl2YWxlbnQgdG8gW0FycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdCldICopXG4gIGxldCB0b19hcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBbfHxdXG4gICAgfCBMZWFmIHYgLT4gW3wgdiB8XVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGxldCByZXMgPSBBcnJheS5jcmVhdGUgfmxlbjpzIHYgaW5cbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgICgqIEludmFyaWFudDogb24gZW50cnkgYW5kIG9uIGV4aXQgdG8gW2xvb3BdLCAhcG9zX3JlZiBpcyB0aGUgbmV4dFxuICAgICAgICAgICBhdmFpbGFibGUgY2VsbCBpbiB0aGUgYXJyYXkuICopXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZlxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgICAgbG9vcCBsO1xuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgICAgIGxvb3AgclxuICAgICAgaW5cbiAgICAgIGxvb3AgbDtcbiAgICAgICgqIHJlcy4oIXBvc19yZWYpIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgKGJ5IEFycmF5LmNyZWF0ZSB+bGVuOmFib3ZlKS4gKilcbiAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgIGxvb3AgcjtcbiAgICAgIHJlc1xuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiB+Y29tcGFyZV9lbHQgPSBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgKGYgeCkgfmNvbXBhcmVfZWx0KVxuXG4gIGxldCBncm91cF9ieSBzZXQgfmVxdWl2IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBsb29wIHNldCBlcXVpdl9jbGFzc2VzID1cbiAgICAgIGlmIGlzX2VtcHR5IHNldFxuICAgICAgdGhlbiBlcXVpdl9jbGFzc2VzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHggPSBjaG9vc2VfZXhuIHNldCBpblxuICAgICAgICBsZXQgZXF1aXZfeCwgbm90X2VxdWl2X3ggPVxuICAgICAgICAgIHBhcnRpdGlvbl90ZiBzZXQgfmY6KGZ1biBlbHQgLT4gcGh5c19lcXVhbCB4IGVsdCB8fCBlcXVpdiB4IGVsdCkgfmNvbXBhcmVfZWx0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Agbm90X2VxdWl2X3ggKGVxdWl2X3ggOjogZXF1aXZfY2xhc3NlcykpXG4gICAgaW5cbiAgICBsb29wIHNldCBbXVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIFNvbWUgdlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGZpbmQgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaW5kIHIgfmZcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICA7O1xuXG4gIGxldCByZWMgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgKG1hdGNoIGYgdiB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggZmluZF9tYXAgbCB+ZiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIHIgfmZcbiAgICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNldC5maW5kX2V4biBmYWlsZWQgdG8gZmluZCBhIG1hdGNoaW5nIGVsZW1lbnRcIlxuICAgIHwgU29tZSBlIC0+IGVcbiAgOztcblxuICBsZXQgcmVjIG50aCB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGkgPSAwIHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGlmIGkgPj0gc1xuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gbnRoIGwgaSBlbHNlIGlmIGMgPSAwIHRoZW4gU29tZSB2IGVsc2UgbnRoIHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgbGVmdG92ZXJzIGFscmVhZHlfc2VlbiA9XG4gICAgICBtYXRjaCB4cyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGxlZnRvdmVyc1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBtZW0gYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdFxuICAgICAgICB0aGVuIGxvb3AgdGwgbGVmdG92ZXJzIGFscmVhZHlfc2VlblxuICAgICAgICBlbHNlIGxvb3AgdGwgKGhkIDo6IGxlZnRvdmVycykgKGFkZCBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0KVxuICAgIGluXG4gICAgbG9vcCB4cyBbXSBlbXB0eVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgbHN0IC0+XG4gICAgICBsZXQgZWx0X2xzdCA9IExpc3QubWFwIGxzdCB+ZjphX29mX3NleHAgaW5cbiAgICAgIGxldCBzZXQgPSBvZl9saXN0IGVsdF9sc3QgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBsZW5ndGggc2V0ID0gTGlzdC5sZW5ndGggbHN0XG4gICAgICB0aGVuIHNldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZXQgPSByZWYgZW1wdHkgaW5cbiAgICAgICAgTGlzdC5pdGVyMl9leG4gbHN0IGVsdF9sc3QgfmY6KGZ1biBlbF9zZXhwIGVsIC0+XG4gICAgICAgICAgaWYgbWVtICFzZXQgZWwgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCIgZWxfc2V4cFxuICAgICAgICAgIGVsc2Ugc2V0IDo9IGFkZCAhc2V0IGVsIH5jb21wYXJlX2VsdCk7XG4gICAgICAgIGFzc2VydCBmYWxzZSlcbiAgICB8IHNleHAgLT4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gZWwgYWNjIC0+IHNleHBfb2ZfYSBlbCA6OiBhY2MpKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHRyZWUgOiAnYSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgIGxldCBpc19zdWJzZXQgKHN1YnNldCA6IF8gdCkgfm9mXzooc3VwZXJzZXQgOiBfIHQpIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IGludmFsaWRfZWxlbWVudHMgPSBkaWZmIHN1YnNldC50cmVlIHN1cGVyc2V0LnRyZWUgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBpc19lbXB0eSBpbnZhbGlkX2VsZW1lbnRzXG4gICAgICB0aGVuIE9rICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGludmFsaWRfZWxlbWVudHNfc2V4cCA9IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBpbnZhbGlkX2VsZW1lbnRzIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgKHN1YnNldC5uYW1lIF4gXCIgaXMgbm90IGEgc3Vic2V0IG9mIFwiIF4gc3VwZXJzZXQubmFtZSlcbiAgICAgICAgICAgICBbIFwiaW52YWxpZF9lbGVtZW50c1wiLCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgXSkpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBzMSBzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgICAgWyBpc19zdWJzZXQgczEgfm9mXzpzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIDsgaXNfc3Vic2V0IHMyIH5vZl86czEgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2EsICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogJ2EgVHJlZTAudFxuICB9XG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdHJlZSA9ICdhIFRyZWUwLnRcblxubGV0IGxpa2UgeyB0cmVlID0gXzsgY29tcGFyYXRvciB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxubGV0IGNvbXBhcmVfZWx0IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuICBsZXQgaW52YXJpYW50cyB0ID0gVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdC50cmVlXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdC50cmVlXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHQudHJlZVxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0LnRyZWVcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdC50cmVlXG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdC50cmVlXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhLnRyZWUgYi50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0LnRyZWUgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdC50cmVlIH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdC50cmVlIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdC50cmVlIH5mXG4gIGxldCBtZW0gdCBhID0gVHJlZTAubWVtIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBhZGQgdCBhID0gbGlrZSB0IChUcmVlMC5hZGQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHJlbW92ZSB0IGEgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgdW5pb24gdDEgdDIgPSBsaWtlIHQxIChUcmVlMC51bmlvbiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBpbnRlciB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmludGVyIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfZWx0IHQxKSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQudHJlZSB+b2ZfOm9mXy50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcblxuICBsZXQgYXJlX2Rpc2pvaW50IHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgc2V0IDogKCdhLCAnY21wKSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgIGxldCB0b19uYW1lZF90cmVlIHsgc2V0OyBuYW1lIH0gPSB7IFRyZWUwLk5hbWVkLnRyZWUgPSBzZXQudHJlZTsgbmFtZSB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IChzdWJzZXQgOiAoXywgXykgdCkgfm9mXzooc3VwZXJzZXQgOiAoXywgXykgdCkgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgICh0b19uYW1lZF90cmVlIHN1YnNldClcbiAgICAgICAgfm9mXzoodG9fbmFtZWRfdHJlZSBzdXBlcnNldClcbiAgICAgICAgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBzdWJzZXQuc2V0KVxuICAgICAgICB+c2V4cF9vZl9lbHQ6c3Vic2V0LnNldC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgdDEgdDIgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdCBbIGlzX3N1YnNldCB0MSB+b2ZfOnQyOyBpc19zdWJzZXQgdDIgfm9mXzp0MSBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsZXQgdHJlZV90LCB0cmVlX2YgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZV90LCBsaWtlIHQgdHJlZV9mXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgYSA9XG4gICAgbGV0IHRyZWUxLCBiLCB0cmVlMiA9IFRyZWUwLnNwbGl0IHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGIsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9XG4gICAgTGlzdC5tYXAgKFRyZWUwLmdyb3VwX2J5IHQudHJlZSB+ZXF1aXYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSkgfmY6KGxpa2UgdClcbiAgOztcblxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0LnRyZWUgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlX2luZGV4IHQudHJlZSBpIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSB0LmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICAgICAgdCcudHJlZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgc3RhdGUgdC50cmVlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID0gKCdhLCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBjZSBjb21wYXJhdG9yID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpIGFfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGUgPSBUcmVlMC5zaW5nbGV0b24gZVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID0gVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+aW5pdCB+ZlxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBmaWx0ZXIgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlciB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBwYXJ0aXRpb25fdGYgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEgYiB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAubWVtIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuYWRkIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAucmVtb3ZlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLnVuaW9uIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGludGVyIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuaW50ZXIgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmRpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNlIGNvbXBhcmF0b3IpIHQxIHQyXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgYXJlX2Rpc2pvaW50IH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGEgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl8gfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLnVuaW9uX2xpc3QgbCB+dG9fdHJlZTpGbi5pZCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBncm91cF9ieSB+Y29tcGFyYXRvciB0IH5lcXVpdiA9IFRyZWUwLmdyb3VwX2J5IHQgfmVxdWl2IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0IHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IH5jb21wYXJhdG9yIHQgaSA9IFRyZWUwLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWUwLk5hbWVkXG5cbiAgICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQxIH5vZl86dDIgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgIHQxXG4gICAgICAgIH5vZl86dDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgICAgVHJlZTAuTmFtZWQuZXF1YWxcbiAgICAgICAgdDFcbiAgICAgICAgdDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5jb21wYXJlIGFfb2Zfc2V4cCBzZXhwKVxuICA7O1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cbiAgZW5kXG5cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGUgfVxuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgbClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgbGV0IHRyZWUgPVxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IuTW9uYWRfaW5maXguKFxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgPj58IGZ1biB0cmVlIC0+IHsgY29tcGFyYXRvcjsgdHJlZSB9KVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAubWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvclxuICAgIDsgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIH1cbiAgOztcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG50eXBlICgnZWx0LCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGVsdCBjbXApICgobW9kdWxlIE0pIDogKGVsdCwgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCB1bmlvbl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB+bGVuIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2Zfc2VxdWVuY2UgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBzdGFibGVfZGVkdXBfbGlzdCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBtYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IGZpbHRlcl9tYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcblxubW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBlbHQgY21wKVxuICAgICAgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvciBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpXG4gIDogKGVsdCwgXykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBlbHQpIHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGVcbjs7XG5cbmxldCBoYXNoX21fX3QgZm9sZGVyIHQgPVxuICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfbV9fdCBmb2xkZXIgKEhhc2guY3JlYXRlICgpKSB0IGluXG4gIEhhc2guZ2V0X2hhc2hfdmFsdWUgc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgc2V0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdHJlZSA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgdHlwZSBub25yZWMgJ2VsdCBuYW1lZCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IHVuaW9uX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvciBhXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX3NlcXVlbmNlIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG1hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9yZWZcbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9IGVxdWFsX3JlZlxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gcmVmX29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfcmVmXG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiByZWZfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbigqIEluIHRoZSBkZWZpbml0aW9uIG9mIFt0XSwgd2UgZG8gbm90IGhhdmUgW1tAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXSBiZWNhdXNlXG4gICBpbiBnZW5lcmFsLCBzeW50YXggZXh0ZW5zaW9ucyB0ZW5kIHRvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBhdmFpbGFibGUgcmF0aGVyIHRoYW5cbiAgIHVzaW5nIHRoZSBhbGlhcy4gIEhlcmUgdGhhdCB3b3VsZCBsZWFkIHRvIHVzZSB0aGUgcmVjb3JkIHJlcHJlc2VudGF0aW9uIFsgeyBtdXRhYmxlXG4gICBjb250ZW50cyA6ICdhIH0gXSB3aGljaCB3b3VsZCByZXN1bHQgaW4gZGlmZmVyZW50IChhbmQgdW53YW50ZWQpIGJlaGF2aW9yLiAgKilcbnR5cGUgJ2EgdCA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuZXh0ZXJuYWwgY3JlYXRlIDogJ2EgLT4gJ2EgdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSB0IC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG5sZXQgc3dhcCB0MSB0MiA9XG4gIGxldCB0bXAgPSAhdDEgaW5cbiAgdDEgOj0gIXQyO1xuICB0MiA6PSB0bXBcbjs7XG5cbmxldCByZXBsYWNlIHQgZiA9IHQgOj0gZiAhdFxuXG5sZXQgc2V0X3RlbXBvcmFyaWx5IHQgYSB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gIXQgaW5cbiAgdCA6PSBhO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQgOj0gcmVzdG9yZV90bylcbjs7XG5cbm1vZHVsZSBBbmRfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVCA6ICdhIHJlZiAqICdhIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V0IChUIChyLCBhKSkgPSByIDo9IGFcbiAgbGV0IHNldHMgdHMgPSBMaXN0Lml0ZXIgdHMgfmY6c2V0XG4gIGxldCBzbmFwc2hvdCAoVCAociwgXykpID0gVCAociwgIXIpXG4gIGxldCBzbmFwc2hvdHMgdHMgPSBMaXN0Lm1hcCB0cyB+ZjpzbmFwc2hvdFxuZW5kXG5cbmxldCBzZXRzX3RlbXBvcmFyaWx5IGFuZF92YWx1ZXMgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9IEFuZF92YWx1ZS5zbmFwc2hvdHMgYW5kX3ZhbHVlcyBpblxuICBBbmRfdmFsdWUuc2V0cyBhbmRfdmFsdWVzO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IEFuZF92YWx1ZS5zZXRzIHJlc3RvcmVfdG8pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cblxuKCogW3RdIHN0b3JlcyB0aGUgW3QubGVuZ3RoXSBxdWV1ZSBlbGVtZW50cyBhdCBjb25zZWN1dGl2ZSBpbmNyZWFzaW5nIGluZGljZXMgb2YgW3QuZWx0c10sXG4gICBtb2QgdGhlIGNhcGFjaXR5IG9mIFt0XSwgd2hpY2ggaXMgW09wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gIFRoZSBjYXBhY2l0eSBpc1xuICAgcmVxdWlyZWQgdG8gYmUgYSBwb3dlciBvZiB0d28gKHVzZXItcmVxdWVzdGVkIGNhcGFjaXRpZXMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgIHBvd2VyKSwgc28gdGhhdCBtb2QgY2FuIHF1aWNrbHkgYmUgY29tcHV0ZWQgdXNpbmcgW2xhbmQgdC5tYXNrXSwgd2hlcmUgW3QubWFzayA9XG4gICBjYXBhY2l0eSB0IC0gMV0uICBTbywgcXVldWUgZWxlbWVudCBbaV0gaXMgYXQgW3QuZWx0cy4oICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKV0uXG5cbiAgIFtudW1fbXV0YXRpb25zXSBpcyB1c2VkIHRvIGRldGVjdCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBudW1fbXV0YXRpb25zIDogaW50XG4gIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbWFzayA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV9cbiAgICB7IG51bV9tdXRhdGlvbnMgPSBudW1fbXV0YXRpb25zX18wMDNfXG4gICAgOyBmcm9udCA9IGZyb250X18wMDVfXG4gICAgOyBtYXNrID0gbWFza19fMDA3X1xuICAgIDsgbGVuZ3RoID0gbGVuZ3RoX18wMDlfXG4gICAgOyBlbHRzID0gZWx0c19fMDExX1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDAyXyA9IFtdIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEyXyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDExXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDlfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA4XyA9IHNleHBfb2ZfaW50IG1hc2tfXzAwN18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hc2tcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA2XyA9IHNleHBfb2ZfaW50IGZyb250X18wMDVfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmcm9udFwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbnVtX211dGF0aW9uc19fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibnVtX211dGF0aW9uc1wiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubW9kdWxlIHR5cGUgUyA9IFF1ZXVlX2ludGYuU1xuXG5sZXQgaW5jX251bV9tdXRhdGlvbnMgdCA9IHQubnVtX211dGF0aW9ucyA8LSB0Lm51bV9tdXRhdGlvbnMgKyAxXG5sZXQgY2FwYWNpdHkgdCA9IHQubWFzayArIDFcbmxldCBlbHRzX2luZGV4IHQgaSA9ICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2tcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX2lzX3NldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2lzX3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSBhID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKSBhXG5sZXQgdW5zYWZlX3Vuc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcblxubGV0IGNoZWNrX2luZGV4X2V4biB0IGkgPVxuICBpZiBpIDwgMCB8fCBpID49IHQubGVuZ3RoXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIlF1ZXVlIGluZGV4IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgWyBcImluZGV4XCIsIGkgfD4gSW50LnNleHBfb2ZfdDsgXCJsZW5ndGhcIiwgdC5sZW5ndGggfD4gSW50LnNleHBfb2ZfdCBdKVxuOztcblxubGV0IGdldCB0IGkgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICB1bnNhZmVfZ2V0IHQgaVxuOztcblxubGV0IHNldCB0IGkgYSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIHVuc2FmZV9zZXQgdCBpIGFcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5sZXQgbGVuZ3RoIHsgbGVuZ3RoOyBfIH0gPSBsZW5ndGhcblxubGV0IGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMgPVxuICBpZiB0Lm51bV9tdXRhdGlvbnMgPD4gbnVtX211dGF0aW9uc1xuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJtdXRhdGlvbiBvZiBxdWV1ZSBkdXJpbmcgaXRlcmF0aW9uXCJcbiAgICAgICAgIFsgXCJcIiwgdCB8PiBzZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgXSlcbjs7XG5cbmxldCBjb21wYXJlID1cbiAgbGV0IHJlYyB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IHBvcyB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyID1cbiAgICBtYXRjaCBwb3MgPSBsZW4xLCBwb3MgPSBsZW4yIHdpdGhcbiAgICB8IHRydWUsIHRydWUgLT4gMFxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgbGV0IHggPSBjb21wYXJlX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgfCAwIC0+IHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgKHBvcyArIDEpIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDJcbiAgICAgICB8IG4gLT4gbilcbiAgaW5cbiAgZnVuIGNvbXBhcmVfZWx0IHQxIHQyIC0+XG4gICAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICAgIHRoZW4gMFxuICAgIGVsc2VcbiAgICAgIHVuc2FmZV9jb21wYXJlX2Zyb21cbiAgICAgICAgY29tcGFyZV9lbHRcbiAgICAgICAgMFxuICAgICAgICB+dDFcbiAgICAgICAgfnQyXG4gICAgICAgIH5sZW4xOnQxLmxlbmd0aFxuICAgICAgICB+bGVuMjp0Mi5sZW5ndGhcbiAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgZXF1YWwgPVxuICBsZXQgcmVjIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCBwb3MgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuID1cbiAgICBwb3MgPSBsZW5cbiAgICB8fFxuICAgIGxldCBiID0gZXF1YWxfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgIGIgJiYgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW5cbiAgaW5cbiAgZnVuIGVxdWFsX2VsdCB0MSB0MiAtPlxuICAgIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB8fFxuICAgIGxldCBsZW4xID0gdDEubGVuZ3RoIGluXG4gICAgbGV0IGxlbjIgPSB0Mi5sZW5ndGggaW5cbiAgICBsZW4xID0gbGVuMlxuICAgICYmIHVuc2FmZV9lcXVhbF9mcm9tXG4gICAgICAgICBlcXVhbF9lbHRcbiAgICAgICAgIDBcbiAgICAgICAgIH50MVxuICAgICAgICAgfnQyXG4gICAgICAgICB+bGVuOmxlbjFcbiAgICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIGxldCB7IG51bV9tdXRhdGlvbnM7IG1hc2sgPSBfOyBlbHRzOyBmcm9udDsgbGVuZ3RoIH0gPSB0IGluXG4gIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gIGFzc2VydCAoZnJvbnQgPCBjYXBhY2l0eSB0KTtcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBhc3NlcnQgKGNhcGFjaXR5ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgYXNzZXJ0IChjYXBhY2l0eSA+PSAxKTtcbiAgYXNzZXJ0IChJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gIGFzc2VydCAobGVuZ3RoID49IDApO1xuICBhc3NlcnQgKGxlbmd0aCA8PSBjYXBhY2l0eSk7XG4gIGZvciBpID0gMCB0byBjYXBhY2l0eSAtIDEgZG9cbiAgICBpZiBpIDwgdC5sZW5ndGhcbiAgICB0aGVuIChcbiAgICAgIGludmFyaWFudF9hICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zKVxuICAgIGVsc2UgYXNzZXJ0IChub3QgKHVuc2FmZV9pc19zZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSA/Y2FwYWNpdHkgKCkgOiBhIHQgPVxuICBsZXQgY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gMVxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJjYW5ub3QgaGF2ZSBxdWV1ZSB3aXRoIG5lZ2F0aXZlIGNhcGFjaXR5XCJcbiAgICAgICAgICAgICBbIFwiY2FwYWNpdHlcIiwgY2FwYWNpdHkgfD4gSW50LnNleHBfb2ZfdCBdKVxuICAgICAgZWxzZSBpZiBjYXBhY2l0eSA9IDBcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSBJbnQuY2VpbF9wb3cyIGNhcGFjaXR5XG4gIGluXG4gIHsgbnVtX211dGF0aW9ucyA9IDBcbiAgOyBmcm9udCA9IDBcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgbGVuZ3RoID0gMFxuICA7IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46Y2FwYWNpdHlcbiAgfVxuOztcblxubGV0IGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QgPVxuICBhc3NlcnQgKHNyYy5sZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBkc3QpO1xuICBsZXQgZnJvbnRfbGVuID0gSW50Lm1pbiBzcmMubGVuZ3RoIChjYXBhY2l0eSBzcmMgLSBzcmMuZnJvbnQpIGluXG4gIGxldCByZXN0X2xlbiA9IHNyYy5sZW5ndGggLSBmcm9udF9sZW4gaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpmcm9udF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczpzcmMuZnJvbnQgfmRzdCB+ZHN0X3BvczowO1xuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOnJlc3RfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmZyb250X2xlblxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IGRlc2lyZWRfY2FwYWNpdHkgPVxuICAoKiBXZSBhbGxvdyBhcmd1bWVudHMgbGVzcyB0aGFuIDEgdG8gW3NldF9jYXBhY2l0eV0sIGJ1dCB0cmFuc2xhdGUgdGhlbSB0byAxIHRvIHNpbXBsaWZ5XG4gICAgIHRoZSBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZSBhcnJheSBsZW5ndGggYmVpbmcgYSBwb3dlciBvZiAyLiAqKVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgbmV3X2NhcGFjaXR5ID0gSW50LmNlaWxfcG93MiAobWF4IDEgKG1heCBkZXNpcmVkX2NhcGFjaXR5IHQubGVuZ3RoKSkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHRcbiAgdGhlbiAoXG4gICAgbGV0IGRzdCA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgICBibGl0X3RvX2FycmF5IH5zcmM6dCBkc3Q7XG4gICAgdC5mcm9udCA8LSAwO1xuICAgIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICAgIHQuZWx0cyA8LSBkc3QpXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGEgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHkgdCAoMiAqIHQubGVuZ3RoKTtcbiAgdW5zYWZlX3NldCB0IHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGRlcXVldWVfbm9uZW1wdHkgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBlbHRzID0gdC5lbHRzIGluXG4gIGxldCBmcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBmcm9udCBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgZWx0cyBmcm9udDtcbiAgdC5mcm9udCA8LSBlbHRzX2luZGV4IHQgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBkZXF1ZXVlX25vbmVtcHR5IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfbm9uZW1wdHkgdClcbmxldCBmcm9udF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIHQuZnJvbnRcbmxldCBsYXN0X25vbmVtcHR5IHQgPSB1bnNhZmVfZ2V0IHQgKHQubGVuZ3RoIC0gMSlcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGZyb250X25vbmVtcHR5IHQpXG5sZXQgcGVla19leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgZnJvbnRfbm9uZW1wdHkgdFxubGV0IGxhc3QgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAobGFzdF9ub25lbXB0eSB0KVxubGV0IGxhc3RfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGxhc3Rfbm9uZW1wdHkgdFxuXG5sZXQgY2xlYXIgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICB1bnNhZmVfdW5zZXQgdCBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwO1xuICAgIHQuZnJvbnQgPC0gMClcbjs7XG5cbmxldCBibGl0X3RyYW5zZmVyIH5zcmMgfmRzdCA/bGVuICgpID1cbiAgaW5jX251bV9tdXRhdGlvbnMgc3JjO1xuICBpbmNfbnVtX211dGF0aW9ucyBkc3Q7XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IHNyYy5sZW5ndGhcbiAgICB8IFNvbWUgbGVuIC0+XG4gICAgICBpZiBsZW4gPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJRdWV1ZS5ibGl0X3RyYW5zZmVyOiBuZWdhdGl2ZSBsZW5ndGhcIlxuICAgICAgICAgICAgIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gICAgICBtaW4gbGVuIHNyYy5sZW5ndGhcbiAgaW5cbiAgaWYgbGVuID4gMFxuICB0aGVuIChcbiAgICBzZXRfY2FwYWNpdHkgZHN0IChtYXggKGNhcGFjaXR5IGRzdCkgKGRzdC5sZW5ndGggKyBsZW4pKTtcbiAgICBsZXQgZHN0X3N0YXJ0ID0gZHN0LmZyb250ICsgZHN0Lmxlbmd0aCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAoKiBUaGlzIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gc2ltcGx5IFtlbnF1ZXVlIGRzdCAoZGVxdWV1ZV9ub25lbXB0eSBzcmMpXSAqKVxuICAgICAgbGV0IHNyY19pID0gKHNyYy5mcm9udCArIGkpIGxhbmQgc3JjLm1hc2sgaW5cbiAgICAgIGxldCBkc3RfaSA9IChkc3Rfc3RhcnQgKyBpKSBsYW5kIGRzdC5tYXNrIGluXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lXG4gICAgICAgIGRzdC5lbHRzXG4gICAgICAgIGRzdF9pXG4gICAgICAgIChPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biBzcmMuZWx0cyBzcmNfaSk7XG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHNyYy5lbHRzIHNyY19pXG4gICAgZG9uZTtcbiAgICBkc3QubGVuZ3RoIDwtIGRzdC5sZW5ndGggKyBsZW47XG4gICAgc3JjLmZyb250IDwtIChzcmMuZnJvbnQgKyBsZW4pIGxhbmQgc3JjLm1hc2s7XG4gICAgc3JjLmxlbmd0aCA8LSBzcmMubGVuZ3RoIC0gbGVuKVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBzZXRfY2FwYWNpdHkgdCAoSW50Lm1heCAoY2FwYWNpdHkgdCkgKHQubGVuZ3RoICsgTGlzdC5sZW5ndGggbCkpO1xuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgICBkb25lO1xuICAgICFyKVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBhIC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpXG47O1xuXG5cbigqIFtpdGVyXSBpcyBpbXBsZW1lbnRlZCBkaXJlY3RseSBiZWNhdXNlIGltcGxlbWVudGluZyBpdCBpbiB0ZXJtcyBvZiBbZm9sZF0gaXNcbiAgIHNsb3dlci4gKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHJlc3VsdCA6PSB1bnNhZmVfZ2V0IHQgaSA6OiAhcmVzdWx0XG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuXG5cbigqIEZvciBbY29uY2F0X21hcF0sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJdLCB3ZSBkb24ndCBjcmVhdGUgW3RfcmVzdWx0XSB3aXRoIFt0XSdzXG4gICBjYXBhY2l0eSBiZWNhdXNlIHdlIGhhdmUgbm8gaWRlYSBob3cgbWFueSBlbGVtZW50cyBbdF9yZXN1bHRdIHdpbGwgdWx0aW1hdGVseSBob2xkLiAqKVxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXIgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXJpIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6c3JjLmxlbmd0aCAoKSBpblxuICBibGl0X3RvX2FycmF5IH5zcmMgZHN0LmVsdHM7XG4gIGRzdC5sZW5ndGggPC0gc3JjLmxlbmd0aDtcbiAgZHN0XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTooTGlzdC5sZW5ndGggbCkgKCkgaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxuKCogVGhlIHF1ZXVlIFt0XSByZXR1cm5lZCBieSBbY3JlYXRlXSB3aWxsIGhhdmUgW3QubGVuZ3RoID0gMF0sIFt0LmZyb250ID0gMF0sIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBJbnQuY2VpbF9wb3cyIGxlbl0uICBTbywgd2Ugb25seSBoYXZlIHRvIHNldCBbdC5sZW5ndGhdIHRvIFtsZW5dIGFmdGVyXG4gICB0aGUgYmxpdCB0byBtYWludGFpbiBhbGwgdGhlIGludmFyaWFudHM6IFt0Lmxlbmd0aF0gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgaW4gdGhlIHF1ZXVlLCBbdC5mcm9udF0gaXMgdGhlIGFycmF5IGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gKilcbmxldCBpbml0IGxlbiB+ZiA9XG4gIGlmIGxlbiA8IDBcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJRdWV1ZS5pbml0OiBuZWdhdGl2ZSBsZW5ndGhcIiBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6bGVuICgpIGluXG4gIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgPj0gbGVuKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyBpIChmIGkpXG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIGxlbjtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LnVuc2FmZV9nZXQgYSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCB0Lmxlbmd0aCB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBtYXAgdGEgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHRhLm51bV9tdXRhdGlvbnMgaW5cbiAgbGV0IHRiID0gY3JlYXRlIH5jYXBhY2l0eTp0YS5sZW5ndGggKCkgaW5cbiAgdGIubGVuZ3RoIDwtIHRhLmxlbmd0aDtcbiAgZm9yIGkgPSAwIHRvIHRhLmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgYiA9IGYgKHVuc2FmZV9nZXQgdGEgaSkgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdGEgbnVtX211dGF0aW9ucztcbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHRiLmVsdHMgaSBiXG4gIGRvbmU7XG4gIHRiXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBtYXAgdCB+ZjooZnVuIGEgLT5cbiAgICBsZXQgcmVzdWx0ID0gZiAhaSBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgcmVzdWx0KVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IHg7XG4gIHRcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0b19saXN0IHQgfD4gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgfD4gb2ZfbGlzdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gfFxuXG4gIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gZnVuY3Rpb25cbiAgICB8IChfIDogdCkgLT4gLlxuICA7O1xuXG4gIGxldCBhbGwgPSBbXVxuICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X3R5cGUgXCJCYXNlLk5vdGhpbmcudFwiIHNleHBcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxuICBsZXQgdG9fc3RyaW5nID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgb2Zfc3RyaW5nIChfIDogc3RyaW5nKSA9IGZhaWx3aXRoIFwiQmFzZS5Ob3RoaW5nLm9mX3N0cmluZzogbm90IHN1cHBvcnRlZFwiXG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5vdGhpbmdcIlxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuTmF0aXZlaW50XG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9uYXRpdmVpbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAobmF0aXZlaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX25hdGl2ZWludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9uYXRpdmVpbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVueFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJW54XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVtX2JpdHMgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiTmF0aXZlaW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5OYXRpdmVpbnQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLk5hdGl2ZWludC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuTmF0aXZlaW50LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiAoeCA6IG5hdGl2ZWludCkgPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLk5hdGl2ZWludC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuTmF0aXZlaW50LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuTmF0aXZlaW50LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuTmF0aXZlaW50LnByZWQgeCA9IDBuXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgbmF0aXZlaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAgWyBcIlwiLCBzZXhwX29mX25hdGl2ZWludCBpIF0pO1xuICAgIGlmIENhbWwuTmF0aXZlaW50LmVxdWFsIGkgQ2FtbC5OYXRpdmVpbnQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5OYXRpdmVpbnQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX25hdGl2ZWludCB0ID0gdFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgdCA9IHRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5uYXRpdmVpbnRfcG9wY291bnRcbmxldCBvZl9pbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgdG9faW50MzJfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW05hdGl2ZWludF0gYW5kIFtOYXRpdmVpbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5leHRlcm5hbCBic3dhcCA6IHQgLT4gdCA9IFwiJWJzd2FwX25hdGl2ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNYXBfaW50ZlxuXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxuICAoKiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0ZXN0ZWQgaW4gW3Rlc3RfbWFwLm1sXSB0byBtYWtlIHN1cmUgb3VyIHVzZSBvZlxuICAgICBbQ2FtbC5PYmoubWFnaWNdIGlzIGNvcnJlY3QgYW5kIHNhZmUuICopXG4gIGxldCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHQgPSBDYW1sLk9iai5tYWdpY1xuICBsZXQgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50ID0gQ2FtbC5PYmoubWFnaWNcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLk1lcmdlX2VsZW1lbnRcblxuICBsZXQgbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IFNvbWUgbGVmdFxuICA7O1xuXG4gIGxldCByaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gU29tZSByaWdodFxuICA7O1xuXG4gIGxldCBsZWZ0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYFJpZ2h0IF8gLT4gZGVmYXVsdFxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgXyAtPiBkZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IHJpZ2h0XG4gIDs7XG5cbiAgbGV0IHZhbHVlcyB0IH5sZWZ0X2RlZmF1bHQgfnJpZ2h0X2RlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgbGVmdCAtPiBsZWZ0LCByaWdodF9kZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgLT4gbGVmdF9kZWZhdWx0LCByaWdodFxuICAgIHwgYEJvdGggKGxlZnQsIHJpZ2h0KSAtPiBsZWZ0LCByaWdodFxuICA7O1xuZW5kXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGUgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBEdXBsaWNhdGVdIChmdW5jdGlvblxuICAgIHwgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5EdXBsaWNhdGVcIlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBMZWFmIG9mICdrICogJ3ZcbiAgICB8IE5vZGUgb2YgKCdrLCAndikgdCAqICdrICogJ3YgKiAoJ2ssICd2KSB0ICogaW50XG5cbiAgdHlwZSAoJ2ssICd2KSB0cmVlID0gKCdrLCAndikgdFxuXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIGgpIC0+IGhcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGsgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2tleSBsb3dlciBrIDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfa2V5IGsgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIChrLCBfKSAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICB8IE5vZGUgKGwsIGssIF8sIHIsIGgpIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgaykgY29tcGFyZV9rZXkgbFxuICAgICAgICAmJiBsb29wIChTb21lIGspIHVwcGVyIGNvbXBhcmVfa2V5IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2tleSAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2tleSB0XG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAyICopXG4gIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID0gMCAmJiBociA9IDBcbiAgICB0aGVuIExlYWYgKHgsIGQpXG4gICAgZWxzZSBOb2RlIChsLCB4LCBkLCByLCBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSlcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID0gTGVhZiAoa2V5LCBkYXRhKVxuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLk1hcCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgOiAoXywgXykgdCA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrLCB2ID0gZiBpIGluXG4gICAgICAgIExlYWYgKGssIHYpXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBFbXB0eSwgMilcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciwgdnIgPSBmIChpICsgMikgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgTGVhZiAoa3IsIHZyKSwgMilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayB2IHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMlxuICAgICAgICAgfHxcbiAgICAgICAgIGxldCBrMCwgXyA9IGFycmF5LigwKSBpblxuICAgICAgICAgbGV0IGsxLCBfID0gYXJyYXkuKDEpIGluXG4gICAgICAgICBjb21wYXJlX2tleSBrMCBrMSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHQsIGFycmF5X2xlbmd0aFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LigwKSkgKGZzdCBhcnJheS4oMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKGkpKSAoZnN0IGFycmF5LihpICsgMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkpKVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMyAqKVxuICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsIGluXG4gICAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBociArIDIgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsZCwgbHIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKGxydiwgbHJkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBFbXB0eSkgbHJ2IGxyZCAoY3JlYXRlIEVtcHR5IHggZCByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyZCwgbHJyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBobCArIDIgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByZCwgcnIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKHJsdiwgcmxkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBFbXB0eSkgcmx2IHJsZCAoY3JlYXRlIEVtcHR5IHJ2IHJkIHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsZCwgcmxyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKSkpXG4gICAgZWxzZSBjcmVhdGUgbCB4IGQgclxuICA7O1xuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5IH5zZXhwX29mX2tleSA9XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIltNYXAuYWRkX2V4bl0gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIG1vZHVsZSBBZGRfb3Jfc2V0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbFxuICAgICAgfCBBZGRfZXhuXG4gICAgICB8IFNldFxuICBlbmRcblxuXG4gIGxldCByZWMgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgICAgfmtleTp4XG4gICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgICAgIH4oYWRkX29yX3NldCA6IEFkZF9vcl9zZXQudClcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmICh4LCBkYXRhKSwgbGVuZ3RoICsgMVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZVxuICAgICAgICB8IEFkZF9leG4gLT4gcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5XG4gICAgICAgIHwgU2V0IC0+IExlYWYgKHgsIGRhdGEpLCBsZW5ndGgpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIE5vZGUgKExlYWYgKHgsIGRhdGEpLCB2LCBkLCBFbXB0eSwgMiksIGxlbmd0aCArIDFcbiAgICAgIGVsc2UgTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKHgsIGRhdGEpLCAyKSwgbGVuZ3RoICsgMVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZVxuICAgICAgICB8IEFkZF9leG4gLT4gcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5XG4gICAgICAgIHwgU2V0IC0+IE5vZGUgKGwsIHgsIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGwsIGxlbmd0aCA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSBsIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgciwgbGVuZ3RoID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIHIgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldDpBZGRfZXhuXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgdFxuICAgICAgfmxlbmd0aFxuICAgICAgfmtleVxuICAgICAgfmRhdGFcbiAgICAgIH5jb21wYXJlX2tleVxuICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICB+YWRkX29yX3NldDpBZGRfZXhuX2ludGVybmFsXG4gIDs7XG5cbiAgbGV0IHNldCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgIHRcbiAgICAgIH5sZW5ndGhcbiAgICAgIH5rZXlcbiAgICAgIH5kYXRhXG4gICAgICB+Y29tcGFyZV9rZXlcbiAgICAgIH5zZXhwX29mX2tleTooZnVuIF8gLT4gTGlzdCBbXSlcbiAgICAgIH5hZGRfb3Jfc2V0OlNldFxuICA7O1xuXG4gIGxldCBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5ID0gZnN0IChzZXQgdCB+bGVuZ3RoOjAgfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkpXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPVxuICAgICAgICB7IGxlZnRfc3VidHJlZSA6ICgnaywgJ3YpIHRcbiAgICAgICAgOyBrZXkgOiAna1xuICAgICAgICA7IGRhdGEgOiAndlxuICAgICAgICB9XG5cbiAgICAgIGxldCBzaW5nbGV0b25fdG9fdHJlZV9leG4gPSBmdW5jdGlvblxuICAgICAgICB8IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9IC0+IHNpbmdsZXRvbiBrZXkgZGF0YVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNYXAuc2luZ2xldG9uX3RvX3RyZWVfZXhuOiBub3QgYSBzaW5nbGV0b25cIlxuICAgICAgOztcblxuICAgICAgbGV0IHNpbmdsZXRvbiB+a2V5IH5kYXRhID0geyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH1cblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGNvbGxhcHNlIGwgciA9IGNyZWF0ZSBsLmxlZnRfc3VidHJlZSBsLmtleSBsLmRhdGEgclxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIubGVmdF9zdWJ0cmVlKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGpvaW4gbCByID0geyByIHdpdGggbGVmdF9zdWJ0cmVlID0gY29sbGFwc2UgbCByLmxlZnRfc3VidHJlZSB9XG4gICAgICBsZXQgbWF4X2tleSB0ID0gdC5rZXlcbiAgICBlbmRcblxuICAgICgqKiBCdWlsZCB0cmVlcyBmcm9tIHNpbmdsZXRvbnMgaW4gYSBiYWxhbmNlZCB3YXkgYnkgdXNpbmcgc2tldyBiaW5hcnkgZW5jb2RpbmcuXG4gICAgICAgIEVhY2ggbGV2ZWwgY29udGFpbnMgdHJlZXMgb2YgdGhlIHNhbWUgaGVpZ2h0LCBjb25zZWN1dGl2ZSBsZXZlbHMgaGF2ZSBjb25zZWN1dGl2ZVxuICAgICAgICBoZWlnaHRzLiBUaGVyZSBhcmUgbm8gZ2Fwcy4gVGhlIGZpcnN0IGxldmVsIGFyZSBzaW5nbGUga2V5cy5cbiAgICAqKVxuICAgIHR5cGUgKCdrLCAndikgdCA9XG4gICAgICB8IFplcm8gb2YgdW5pdFxuICAgICAgKCogW3VuaXRdIHRvIG1ha2UgcGF0dGVybiBtYXRjaGluZyBmYXN0ZXIgKilcbiAgICAgIHwgT25lIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG4gICAgICB8IFR3byBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudCAqICgnaywgJ3YpIEZyYWdtZW50LnRcblxuICAgIGxldCBlbXB0eSA9IFplcm8gKClcblxuICAgIGxldCBhZGRfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCB4ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiBPbmUgKHQsIHgpXG4gICAgICAgIHwgT25lICh0LCB5KSAtPiBUd28gKHQsIHksIHgpXG4gICAgICAgIHwgVHdvICh0LCB6LCB5KSAtPiBPbmUgKGdvIHQgKEZyYWdtZW50LmpvaW4geiB5KSwgeClcbiAgICAgIGluXG4gICAgICBmdW4gdCB+a2V5IH5kYXRhIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbiB+a2V5IH5kYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZV91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IHJcbiAgICAgICAgfCBPbmUgKHQsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIGwgcilcbiAgICAgICAgfCBUd28gKHQsIGxsLCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSAoRnJhZ21lbnQuam9pbiBsbCBsKSByKVxuICAgICAgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gRW1wdHlcbiAgICAgIHwgT25lICh0LCByKSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICAgIHwgVHdvICh0LCBsLCByKSAtPiBnbyAoT25lICh0LCBsKSkgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gTm9uZVxuICAgICAgfCBPbmUgKF8sIHIpIHwgVHdvIChfLCBfLCByKSAtPiBTb21lIChGcmFnbWVudC5tYXhfa2V5IHIpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleSA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBsZXQgYnVpbGRlciwgbGVuZ3RoID1cbiAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgIHNlcVxuICAgICAgICAgIH5pbml0OihCdWlsZF9pbmNyZWFzaW5nLmVtcHR5LCAwKVxuICAgICAgICAgIH5mOihmdW4gKGJ1aWxkZXIsIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSBidWlsZGVyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmVfa2V5IHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgICAgICAgIHwgXyAtPiBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgYnVpbGRlciB+a2V5IH5kYXRhLCBsZW5ndGggKyAxKVxuICAgICAgaW5cbiAgICAgIE9rIChCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIGJ1aWxkZXIsIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogTGlrZSBbYmFsXSBidXQgYWxsb3dzIGFueSBkaWZmZXJlbmNlIGluIGhlaWdodCBiZXR3ZWVuIFtsXSBhbmQgW3JdLlxuXG4gICAgIE8ofGhlaWdodCBsIC0gaGVpZ2h0IHJ8KSAqKVxuICBsZXQgcmVjIGpvaW4gbCBrIGQgciB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gc2V0JyByIGsgZCB+Y29tcGFyZV9rZXlcbiAgICB8IF8sIEVtcHR5IC0+IHNldCcgbCBrIGQgfmNvbXBhcmVfa2V5XG4gICAgfCBMZWFmIChsaywgbGQpLCBfIC0+IHNldCcgKHNldCcgciBrIGQgfmNvbXBhcmVfa2V5KSBsayBsZCB+Y29tcGFyZV9rZXlcbiAgICB8IF8sIExlYWYgKHJrLCByZCkgLT4gc2V0JyAoc2V0JyBsIGsgZCB+Y29tcGFyZV9rZXkpIHJrIHJkIH5jb21wYXJlX2tleVxuICAgIHwgTm9kZSAobGwsIGxrLCBsZCwgbHIsIGxoKSwgTm9kZSAocmwsIHJrLCByZCwgcnIsIHJoKSAtPlxuICAgICAgKCogW2JhbF0gcmVxdWlyZXMgaGVpZ2h0IGRpZmZlcmVuY2UgPD0gMy4gKilcbiAgICAgIGlmIGxoID4gcmggKyAzXG4gICAgICAoKiBbaGVpZ2h0IGxyID49IGhlaWdodCByXSxcbiAgICAgICAgIHRoZXJlZm9yZSBbaGVpZ2h0IChqb2luIGxyIGsgZCByIC4uLildIGlzIFtoZWlnaHQgcmwgKyAxXSBvciBbaGVpZ2h0IHJsXVxuICAgICAgICAgdGhlcmVmb3JlIHRoZSBoZWlnaHQgZGlmZmVyZW5jZSB3aXRoIFtsbF0gd2lsbCBiZSA8PSAzICopXG4gICAgICB0aGVuIGJhbCBsbCBsayBsZCAoam9pbiBsciBrIGQgciB+Y29tcGFyZV9rZXkpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAzXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIGsgZCBybCB+Y29tcGFyZV9rZXkpIHJrIHJkIHJyXG4gICAgICBlbHNlIGJhbCBsIGsgZCByXG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2tleSB4IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gRW1wdHksIFNvbWUgKGssIGQpLCBFbXB0eVxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIEVtcHR5LCBOb25lLCB0XG4gICAgICBlbHNlIHQsIE5vbmUsIEVtcHR5XG4gICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IHggayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBsLCBTb21lIChrLCBkKSwgclxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBtYXliZSwgbHIgPSBzcGxpdCBsIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGxsLCBtYXliZSwgam9pbiBsciBrIGQgciB+Y29tcGFyZV9rZXkpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJsLCBtYXliZSwgcnIgPSBzcGxpdCByIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGpvaW4gbCBrIGQgcmwgfmNvbXBhcmVfa2V5LCBtYXliZSwgcnIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvIHggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgbGVmdCwgYm91bmRhcnlfb3B0LCByaWdodCA9IHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICBtYXRjaCBib3VuZGFyeV9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsZWZ0LCByaWdodFxuICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPlxuICAgICAgbGV0IGluc2VydF9pbnRvIHRyZWUgPSBmc3QgKHNldCB0cmVlIH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleSkgaW5cbiAgICAgIChtYXRjaCBpbnRvIHdpdGhcbiAgICAgICB8IGBMZWZ0IC0+IGluc2VydF9pbnRvIGxlZnQsIHJpZ2h0XG4gICAgICAgfCBgUmlnaHQgLT4gbGVmdCwgaW5zZXJ0X2ludG8gcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfihsb3dlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH4odXBwZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICA9XG4gICAgaWYgTWF5YmVfYm91bmQuYm91bmRzX2Nyb3NzZWRcbiAgICAgICAgIH5jb21wYXJlOmNvbXBhcmVfa2V5XG4gICAgICAgICB+bG93ZXI6bG93ZXJfYm91bmRcbiAgICAgICAgIH51cHBlcjp1cHBlcl9ib3VuZFxuICAgIHRoZW4gZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxlZnQsIG1pZF9hbmRfcmlnaHQgPVxuICAgICAgICBtYXRjaCBsb3dlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IGVtcHR5LCB0XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZXQgbWlkLCByaWdodCA9XG4gICAgICAgIG1hdGNoIHVwcGVyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gbWlkX2FuZF9yaWdodCwgZW1wdHlcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT5cbiAgICAgICAgICBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGVmdCwgbWlkLCByaWdodClcbiAgOztcblxuICBsZXQgcmVjIGZpbmQgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gU29tZSBkIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZCBlbHNlIGZpbmQgKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBkYXRhID0gZGF0YSA6OiBPcHRpb24udmFsdWUgKGZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5KSB+ZGVmYXVsdDpbXSBpblxuICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBbXVxuICAgIHwgU29tZSBsIC0+IGxcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBpZl9ub3RfZm91bmQga2V5IH5zZXhwX29mX2tleSA9XG4gICAgICByYWlzZSAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiTWFwLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgc2V4cF9vZl9rZXkga2V5IF0pKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaW5kX2V4biB0IHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBkIGVsc2UgaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gZCBlbHNlIGZpbmRfZXhuIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXlcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBmaW5kX2V4blxuICA7O1xuXG4gIGxldCBtZW0gdCB4IH5jb21wYXJlX2tleSA9IE9wdGlvbi5pc19zb21lIChmaW5kIHQgeCB+Y29tcGFyZV9rZXkpXG5cbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChFbXB0eSwgaywgZCwgXywgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgaywgZCwgRW1wdHksIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBfLCBfLCByLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgXywgciwgXykgLT4gclxuICAgIHwgTm9kZSAobCwgeCwgZCwgciwgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB4IGQgclxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBtYXhfZWx0IGxvd2VyX3BhcnQsIG1pbl9lbHQgdXBwZXJfcGFydCB3aXRoXG4gICAgfCBOb25lLCBfIC0+IGBPayB1cHBlcl9wYXJ0XG4gICAgfCBfLCBOb25lIC0+IGBPayBsb3dlcl9wYXJ0XG4gICAgfCBTb21lIChtYXhfbG93ZXIsIF8pLCBTb21lIChtaW5fdXBwZXIsIHYpIHdoZW4gY29tcGFyZV9rZXkgbWF4X2xvd2VyIG1pbl91cHBlciA8IDAgLT5cbiAgICAgIGxldCB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluID0gcmVtb3ZlX21pbl9lbHQgdXBwZXJfcGFydCBpblxuICAgICAgYE9rIChqb2luIH5jb21wYXJlX2tleSBsb3dlcl9wYXJ0IG1pbl91cHBlciB2IHVwcGVyX3BhcnRfd2l0aG91dF9taW4pXG4gICAgfCBfIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlID1cbiAgICAoKiBUaGlzIGFzc3VtZXMgdGhhdCBtaW4gPD0gbWF4LCB3aGljaCBpcyBjaGVja2VkIGJ5IHRoZSBvdXRlciBmdW5jdGlvbi4gKilcbiAgICBsZXQgcmVjIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW5pdFxuICAgICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIG1pbiA8IDAgfHwgY29tcGFyZV9rZXkgayBtYXggPiAwXG4gICAgICAgIHRoZW4gKCogayA8IG1pbiB8fCBrID4gbWF4ICopXG4gICAgICAgICAgaW5pdFxuICAgICAgICBlbHNlIGYgfmtleTprIH5kYXRhOmQgaW5pdFxuICAgICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgY19taW4gPSBjb21wYXJlX2tleSBrIG1pbiBpblxuICAgICAgICBpZiBjX21pbiA8IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPCBtaW4sIHRoZW4gdGhpcyBub2RlIGFuZCBpdHMgbGVmdCBicmFuY2ggYXJlIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgaWYgY19taW4gPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrID0gbWluLCB0aGVuIHRoaXMgbm9kZSdzIGxlZnQgYnJhbmNoIGlzIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQ6KGYgfmtleTprIH5kYXRhOmQgaW5pdCkgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGsgPiBtaW4gKilcbiAgICAgICAgICBsZXQgeiA9IGdvIGwgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGxldCBjX21heCA9IGNvbXBhcmVfa2V5IGsgbWF4IGluXG4gICAgICAgICAgKCogaWYgayA+IG1heCwgd2UncmUgZG9uZSAqKVxuICAgICAgICAgIGlmIGNfbWF4ID4gMFxuICAgICAgICAgIHRoZW4gelxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHogPSBmIH5rZXk6ayB+ZGF0YTpkIHogaW5cbiAgICAgICAgICAgICgqIGlmIGsgPSBtYXgsIHRoZW4gd2UgZm9sZCBpbiB0aGlzIG9uZSBsYXN0IHZhbHVlIGFuZCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgICBpZiBjX21heCA9IDAgdGhlbiB6IGVsc2UgZ28gciB+bWluIH5tYXggfmluaXQ6eiB+ZiB+Y29tcGFyZV9rZXkpKVxuICAgIGluXG4gICAgZnVuIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgY29tcGFyZV9rZXkgbWluIG1heCA8PSAwIHRoZW4gZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGVsc2UgaW5pdFxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXkgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgICAgIHRcbiAgICAgICAgIH5taW5cbiAgICAgICAgIH5tYXhcbiAgICAgICAgIH5pbml0OltdXG4gICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgbCAtPiAoa2V5LCBkYXRhKSA6OiBsKVxuICAgICAgICAgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBjb25jYXRfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFJlbW92ZV9ub19vcFxuXG4gIGxldCByZW1vdmUgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcFxuICAgICAgfCBMZWFmICh2LCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSB4IHYgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIGxlbmd0aCAtIDFcbiAgICAgICAgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gY29uY2F0X3VuY2hlY2tlZCBsIHIsIGxlbmd0aCAtIDFcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gcmVtb3ZlX2xvb3AgbCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IHJlbW92ZV9sb29wIHIgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB0cnkgcmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IFJlbW92ZV9ub19vcCAtPiB0LCBsZW5ndGhcbiAgOztcblxuICAoKiBVc2UgZXhjZXB0aW9uIHRvIGF2b2lkIHRyZWUtcmVidWlsZCBpbiBuby1vcCBjYXNlICopXG4gIGV4Y2VwdGlvbiBDaGFuZ2Vfbm9fb3BcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIGNoYW5nZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IHJhaXNlIENoYW5nZV9ub19vcCAoKiBlcXVpdmFsZW50IHRvIHJldHVybmluZzogRW1wdHkgKilcbiAgICAgICAgIHwgU29tZSBkYXRhIC0+IExlYWYgKGtleSwgZGF0YSksIGxlbmd0aCArIDEpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5LCBsZW5ndGggLSAxXG4gICAgICAgICAgfCBTb21lIGQnIC0+IExlYWYgKHYsIGQnKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCBFbXB0eSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgRW1wdHkgdiBkIHIsIGxlbmd0aClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0X3VuY2hlY2tlZCBsIHIsIGxlbmd0aCAtIDFcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB0cnkgY2hhbmdlX2NvcmUgdCBrZXkgZiB3aXRoXG4gICAgfCBDaGFuZ2Vfbm9fb3AgLT4gdCwgbGVuZ3RoXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyB1cGRhdGVfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGYgTm9uZSBpblxuICAgICAgICBMZWFmIChrZXksIGRhdGEpLCBsZW5ndGggKyAxXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGQnID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgIExlYWYgKHYsIGQnKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCBFbXB0eSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgRW1wdHkgdiBkIHIsIGxlbmd0aClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZGF0YSA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICBOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB1cGRhdGVfY29yZSB0IGtleSBmXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgY2hhbmdlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIHwgU29tZSAoW10gfCBbIF8gXSkgLT4gTm9uZVxuICAgICAgfCBTb21lIChfIDo6IChfIDo6IF8gYXMgbm9uX2VtcHR5X3RhaWwpKSAtPiBTb21lIG5vbl9lbXB0eV90YWlsKVxuICA7O1xuXG4gIGxldCByZWMgaXRlcl9rZXlzIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIF8pIC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgXywgciwgXykgLT5cbiAgICAgIGl0ZXJfa2V5cyB+ZiBsO1xuICAgICAgZiB2O1xuICAgICAgaXRlcl9rZXlzIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAoXywgZCkgLT4gZiBkXG4gICAgfCBOb2RlIChsLCBfLCBkLCByLCBfKSAtPlxuICAgICAgaXRlciB+ZiBsO1xuICAgICAgZiBkO1xuICAgICAgaXRlciB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgaXRlcmkgfmYgbDtcbiAgICAgIGYgfmtleTp2IH5kYXRhOmQ7XG4gICAgICBpdGVyaSB+ZiByXG4gIDs7XG5cbiAgbGV0IGl0ZXJpX3VudGlsID1cbiAgICBsZXQgcmVjIGl0ZXJpX3VudGlsX2xvb3AgdCB+ZiA6IENvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggaXRlcmlfdW50aWxfbG9vcCB+ZiBsIHdpdGhcbiAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICB8IENvbnRpbnVlIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICAgICB8IENvbnRpbnVlIC0+IGl0ZXJpX3VudGlsX2xvb3AgfmYgcikpXG4gICAgaW5cbiAgICBmdW4gdCB+ZiAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLm9mX2NvbnRpbnVlX29yX3N0b3AgKGl0ZXJpX3VudGlsX2xvb3AgdCB+ZilcbiAgOztcblxuICBsZXQgcmVjIG1hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIGQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgbGV0IHInID0gbWFwIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgfmtleTp2IH5kYXRhOmQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwaSB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBtYXBpIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkIHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2xvb3AgdCB+YWNjIH5mIDogKF8sIF8pIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY1xuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9sb29wIGwgfmFjYyB+ZiB3aXRoXG4gICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgYWNjIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBmb2xkX3VudGlsX2xvb3AgciB+YWNjIH5mKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfbG9vcCB0IH5hY2M6aW5pdCB+ZiB3aXRoXG4gICAgfCBDb250aW51ZSBhY2MgLT4gZmluaXNoIGFjY1xuICAgIHwgU3RvcCBzdG9wIC0+IHN0b3BcbiAgOztcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIGtleSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cblxuICBsZXQgZmlsdGVyIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYgZGF0YSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiB+a2V5IH5kYXRhIHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBtYXRjaCBmIGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY3UsIGxlbmd0aFxuICAgICAgfCBTb21lIGIgLT4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YTpiIGFjY3UgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY3UsIGxlbmd0aFxuICAgICAgfCBTb21lIGIgLT4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YTpiIGFjY3UgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZFxuICAgICAgdFxuICAgICAgfmluaXQ6KChFbXB0eSwgMCksIChFbXB0eSwgMCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKHBhaXIxLCBwYWlyMikgLT5cbiAgICAgICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCB4IC0+XG4gICAgICAgICAgbGV0IHQsIGxlbmd0aCA9IHBhaXIxIGluXG4gICAgICAgICAgc2V0IHQgfmtleSB+ZGF0YTp4IH5jb21wYXJlX2tleSB+bGVuZ3RoLCBwYWlyMlxuICAgICAgICB8IFNlY29uZCB5IC0+XG4gICAgICAgICAgbGV0IHQsIGxlbmd0aCA9IHBhaXIyIGluXG4gICAgICAgICAgcGFpcjEsIHNldCB0IH5rZXkgfmRhdGE6eSB+Y29tcGFyZV9rZXkgfmxlbmd0aClcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgcGFydGl0aW9uX21hcGkgdCB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgaWYgZiBkYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuICA7O1xuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnaywgJ3YsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnayAqICd2ICogKCdrLCAndikgdHJlZSAqICgnaywgJ3YsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyB0IChlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCB0IChlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl90cmVlIHRyZWUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9IGNvbnMgdHJlZSBFbmRcbiAgICBsZXQgb2ZfdHJlZV9yaWdodCB0cmVlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHRyZWUgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgXywgciwgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBjID0gY29tcGFyZV9kYXRhIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgICAgZWxzZSBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gICAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGRhdGFfZXF1YWwgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiB0cnVlXG4gICAgICAgIHwgRW5kLCBfIHwgXywgRW5kIC0+IGZhbHNlXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBjb21wYXJlX2tleSB2MSB2MiA9IDBcbiAgICAgICAgICAmJiBkYXRhX2VxdWFsIGQxIGQyXG4gICAgICAgICAgJiYgaWYgcGh5c19lcXVhbCByMSByMiB0aGVuIGxvb3AgZTEgZTIgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMilcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCByZWMgZm9sZCB+aW5pdCB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiBpbml0XG4gICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgbGV0IG5leHQgPSBmIH5rZXkgfmRhdGEgaW5pdCBpblxuICAgICAgICBmb2xkIChjb25zIHRyZWUgZW51bSkgfmluaXQ6bmV4dCB+ZlxuICAgIDs7XG5cbiAgICBsZXQgZm9sZDIgY29tcGFyZV9rZXkgdDEgdDIgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyIGN1cnIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IGN1cnJcbiAgICAgICAgfCBFbmQsIF8gLT5cbiAgICAgICAgICBmb2xkIHQyIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBSaWdodCBkYXRhKSBhY2MpXG4gICAgICAgIHwgXywgRW5kIC0+XG4gICAgICAgICAgZm9sZCB0MSB+aW5pdDpjdXJyIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gZiB+a2V5IH5kYXRhOihgTGVmdCBkYXRhKSBhY2MpXG4gICAgICAgIHwgTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpLCBNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBCb3RoICh2MSwgdjIpKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBMZWZ0IHYxKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MiBuZXh0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azIgfmRhdGE6KGBSaWdodCB2MikgY3VyciBpblxuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIGluaXRcbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkICgoa2V5LCBgUmlnaHQgZGF0YSksIChFbmQsIGNvbnMgdHJlZSBlbnVtKSlcbiAgICAgICAgfCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pLCBFbmQgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkICgoa2V5LCBgTGVmdCBkYXRhKSwgKGNvbnMgdHJlZSBlbnVtLCBFbmQpKVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBkYXRhX2VxdWFsIHYxIHYyXG4gICAgICAgICAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuU2tpcCBuZXh0X3N0YXRlXG4gICAgICAgICAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMSwgYFVuZXF1YWwgKHYxLCB2MikpLCBuZXh0X3N0YXRlKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsxLCBgTGVmdCB2MSksIChjb25zIHRyZWUxIGVudW0xLCByaWdodCkpXG4gICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazIsIGBSaWdodCB2MiksIChsZWZ0LCBjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2ZfdHJlZSB0MSwgb2ZfdHJlZSB0MikgfmY6c3RlcFxuICAgIDs7XG5cbiAgICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGVmdCByaWdodCBhY2MgPVxuICAgICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICAgIHwgRW5kLCBlbnVtIC0+IGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IGVudW0sIEVuZCAtPiBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaWYgZGF0YV9lcXVhbCB2MSB2MiB0aGVuIGFjYyBlbHNlIGYgYWNjIChrMSwgYFVuZXF1YWwgKHYxLCB2MikpIGluXG4gICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICB0aGVuIGxvb3AgZW51bTEgZW51bTIgYWNjXG4gICAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsxIHYxIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSByaWdodCBhY2MpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrMiB2MiBpblxuICAgICAgICAgICAgbG9vcCBsZWZ0IChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAob2ZfdHJlZSB0MSkgKG9mX3RyZWUgdDIpIGluaXRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoaywgdiksIEVudW0uY29ucyB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlIHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGssIHYpLCBFbnVtLmNvbnNfcmlnaHQgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZV9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZ19rZXkpXG4gICAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2tleSBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPiBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19sZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgRW51bS5lcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MilcbiAgOztcblxuICBsZXQgaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyXG4gICAgICBjb21wYXJlX2tleVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MSlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDIpXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICgpIC0+IGYgfmtleSB+ZGF0YSlcbiAgOztcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyIGNvbXBhcmVfa2V5IChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpIH5mIH5pbml0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgKCogW0VudW0uZm9sZF9kaWZmc10gaXMgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBpcyBjb25zaWRlcmFibHlcbiAgICAgICBzbG93ZXIsIGFzIHdlIGhhdmUgdG8gYWxsb2NhdGUgcXVpdGUgYSBsb3Qgb2Ygc3RhdGUgdG8gdHJhY2sgZW51bWVyYXRpb24gb2YgYSB0cmVlLlxuICAgICAgIEF2b2lkIGlmIHdlIGNhbi5cbiAgICAqKVxuICAgIGxldCBzbG93IHggeSB+aW5pdCA9IEVudW0uZm9sZF9zeW1tZXRyaWNfZGlmZiB4IHkgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5mIH5pbml0IGluXG4gICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgIGxldCBkZWx0YSBhY2MgayB2IHYnID0gaWYgZGF0YV9lcXVhbCB2IHYnIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGssIGBVbmVxdWFsICh2LCB2JykpIGluXG4gICAgKCogSWYgdHdvIHRyZWVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGF0IHRoZSByb290IChhbmQgdGhlIHNhbWUga2V5LCBpZiB0aGV5J3JlXG4gICAgICAgW05vZGVdcykgd2UgY2FuIHRyaXZpYWxseSBkaWZmIGVhY2ggc3VicGFydCBpbiBvYnZpb3VzIHdheXMuICopXG4gICAgbGV0IHJlYyBsb29wIHQgdCcgYWNjID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCB0J1xuICAgICAgdGhlbiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0LCB0JyB3aXRoXG4gICAgICAgIHwgRW1wdHksIG5ld192YWxzIC0+XG4gICAgICAgICAgZm9sZCBuZXdfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IG9sZF92YWxzLCBFbXB0eSAtPlxuICAgICAgICAgIGZvbGQgb2xkX3ZhbHMgfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCBMZWFmIChrLCB2KSwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSBrIGsnIHdpdGhcbiAgICAgICAgICAgfCB4IHdoZW4geCA9IDAgLT4gZGVsdGEgYWNjIGsgdiB2J1xuICAgICAgICAgICB8IHggd2hlbiB4IDwgMCAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsgdiBpblxuICAgICAgICAgICAgIGFkZCBhY2MgaycgdidcbiAgICAgICAgICAgfCBfICgqIHdoZW4geCA+IDAgKikgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrJyB2JyBpblxuICAgICAgICAgICAgIHJlbW92ZSBhY2MgayB2KVxuICAgICAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pLCBOb2RlIChsJywgaycsIHYnLCByJywgXykgd2hlbiBjb21wYXJlX2tleSBrIGsnID0gMCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBsb29wIGwgbCcgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IGRlbHRhIGFjYyBrIHYgdicgaW5cbiAgICAgICAgICBsb29wIHIgcicgYWNjXG4gICAgICAgICgqIE91ciByb290cyBhcmVuJ3QgdGhlIHNhbWUga2V5LiBGYWxsYmFjayB0byB0aGUgc2xvdyBtb2RlLiBUcmVlcyB3aXRoIHNtYWxsXG4gICAgICAgICAgIGRpZmZzIHdpbGwgb25seSBkbyB0aGlzIG9uIHZlcnkgc21hbGwgcGFydHMgb2YgdGhlIHRyZWUgKGhvcGVmdWxseSAtIGlmIHRoZVxuICAgICAgICAgICBvdmVyYWxsIHJvb3QgaXMgcmViYWxhbmNlZCwgd2UnbGwgZWF0IHRoZSB3aG9sZSBjb3N0LCB1bmZvcnR1bmF0ZWx5LikgKilcbiAgICAgICAgfCBOb2RlIF8sIE5vZGUgXyB8IE5vZGUgXywgTGVhZiBfIHwgTGVhZiBfLCBOb2RlIF8gLT4gc2xvdyB0IHQnIH5pbml0OmFjYylcbiAgICBpblxuICAgIGxvb3AgdDEgdDIgaW5pdFxuICA7O1xuXG4gIGxldCByZWMgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChsLCBfLCBfLCByLCBfKSAtPiBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHN0YXRlIC0+IGhhc2hfZm9sZF9kYXRhIChoYXNoX2ZvbGRfa2V5IHN0YXRlIGtleSkgZGF0YSlcbiAgOztcblxuICBsZXQga2V5cyB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6XyBsaXN0IC0+IGtleSA6OiBsaXN0KSB0IH5pbml0OltdXG4gIGxldCBkYXRhIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB0IH5pbml0OltdXG5cbiAgbW9kdWxlIHR5cGUgRm9sZGFibGUgPSBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2JcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2ZvbGRhYmxlIChNIDogRm9sZGFibGUpID0gc3RydWN0XG4gICAgbGV0IG9mX2ZvbGRhYmxlX2ZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKGFjY3VtLCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgIGxldCBwcmV2X2RhdGEgPVxuICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluaXRcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkYXRhID0gZiBwcmV2X2RhdGEgZGF0YSBpblxuICAgICAgICBzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX3JlZHVjZSBmb2xkYWJsZSB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAoYWNjdW0sIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IG5ld19kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gZiBwcmV2IGRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YTpuZXdfZGF0YSB+Y29tcGFyZV9rZXkpXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKHQsIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIGxldCAoKF8sIGxlbmd0aCcpIGFzIGFjYykgPSBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICBpZiBsZW5ndGggPSBsZW5ndGgnIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkgZWxzZSBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIGBPayBtYXApXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9vcl9lcnJvciBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9vcl9lcnJvcjogZHVwbGljYXRlIGtleVwiKVxuICAgICAgICAgIGtleVxuICAgICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9leG4gZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4geFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX2V4bjogZHVwbGljYXRlIGtleVwiKSBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgT2ZfYWxpc3QgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiYWxpc3RcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBmb2xkID0gTGlzdC5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9hbGlzdF9mb2xkID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9hbGlzdCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9hbGlzdF9leG4gPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9leG5cblxuICAoKiBSZXZlcnNlIHRoZSBpbnB1dCwgdGhlbiBmb2xkIGZyb20gbGVmdCB0byByaWdodC4gVGhlIHJlc3VsdGluZyBtYXAgdXNlcyB0aGUgZmlyc3RcbiAgICAgaW5zdGFuY2Ugb2YgZWFjaCBrZXkgZnJvbSB0aGUgaW5wdXQgbGlzdC4gVGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGVsZW1lbnRzIGluIGVhY2hcbiAgICAgb3V0cHV0IGxpc3QgaXMgdGhlIHNhbWUgYXMgaW4gdGhlIGlucHV0IGxpc3QuICopXG4gIGxldCBvZl9mb2xkYWJsZV9tdWx0aSBmb2xkYWJsZSB+Zm9sZCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhbGlzdCA9IGZvbGQgZm9sZGFibGUgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSBpblxuICAgIG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5ID1cbiAgICBvZl9mb2xkYWJsZV9tdWx0aSBhbGlzdCB+Zm9sZDpMaXN0LmZvbGQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIE9mX3NlcXVlbmNlID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcInNlcXVlbmNlXCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgICBsZXQgZm9sZCA9IFNlcXVlbmNlLmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX3NlcXVlbmNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2V4blxuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXF1ZW5jZSB+Y29tcGFyZV9rZXkgPVxuICAgIG9mX2ZvbGRhYmxlX211bHRpIHNlcXVlbmNlIH5mb2xkOlNlcXVlbmNlLmZvbGQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIG5vdCAoZiBkYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgbm90IChmIH5rZXkgfmRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBmIGRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgICBmYWxzZSlcbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gIDs7XG5cbiAgbGV0IHRvX2FsaXN0ID8oa2V5X29yZGVyID0gYEluY3JlYXNpbmcpIHQgPVxuICAgIG1hdGNoIGtleV9vcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPiBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgICB8IGBEZWNyZWFzaW5nIC0+IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBlbHRzID0gVW5pZm9ybV9hcnJheS51bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjoobGVuZ3RoIHQxICsgbGVuZ3RoIHQyKSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyMiB0MSB0MiB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5IH5kYXRhOnZhbHVlcyAtPlxuICAgICAgbWF0Y2ggZiB+a2V5IHZhbHVlcyB3aXRoXG4gICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgVW5pZm9ybV9hcnJheS5zZXQgZWx0cyAhaSAoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGluY3IgaVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICBsZXQgbGVuID0gIWkgaW5cbiAgICBsZXQgZ2V0IGkgPSBVbmlmb3JtX2FycmF5LmdldCBlbHRzIGkgaW5cbiAgICBsZXQgdHJlZSA9IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmY6Z2V0IGluXG4gICAgdHJlZSwgbGVuXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCA9XG4gICAgbGV0IG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aF9sYXJnZSB0X2xhcmdlIHRfc21hbGwgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGZvbGQgdF9zbWFsbCB+aW5pdDoodF9sYXJnZSwgbGVuZ3RoX2xhcmdlKSB+ZjooZnVuIH5rZXkgfmRhdGE6ZGF0YScgKHQsIGxlbmd0aCkgLT5cbiAgICAgICAgdXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhJ1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IGNhbGwgY29tYmluZSB+a2V5IGRhdGEgZGF0YScpKVxuICAgIGluXG4gICAgbGV0IGNhbGwgZiB+a2V5IHggeSA9IGYgfmtleSB4IHkgaW5cbiAgICBsZXQgc3dhcCBmIH5rZXkgeCB5ID0gZiB+a2V5IHkgeCBpblxuICAgIGZ1biB0MSB0MiB+bGVuZ3RoMSB+bGVuZ3RoMiB+Y29tYmluZSB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGxlbmd0aDIgPD0gbGVuZ3RoMVxuICAgICAgdGhlbiBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgxIHQxIHQyIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgyIHQyIHQxIH5jYWxsOnN3YXAgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIENsb3Nlc3Rfa2V5X2ltcGwgPSBzdHJ1Y3RcbiAgICAoKiBbbWFya2VyXSBhbmQgW3JlcGFja2FnZV0gYWxsb3cgdXMgdG8gY3JlYXRlIFwibG9naWNhbFwiIG9wdGlvbnMgd2l0aG91dCBhY3R1YWxseVxuICAgICAgIGFsbG9jYXRpbmcgYW55IG9wdGlvbnMuIFBhc3NpbmcgW0ZvdW5kIGtleSB2YWx1ZV0gdG8gYSBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgcGFzc2luZyBbU29tZSAoa2V5LCB2YWx1ZSldOyBwYXNzaW5nIFtNaXNzaW5nICgpICgpXSBpcyBlcXVpdmFsZW50IHRvIHBhc3NpbmdcbiAgICAgICBbTm9uZV0uICopXG4gICAgdHlwZSAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyID1cbiAgICAgIHwgTWlzc2luZyA6ICgnaywgJ3YsIHVuaXQsIHVuaXQpIG1hcmtlclxuICAgICAgfCBGb3VuZCA6ICgnaywgJ3YsICdrLCAndikgbWFya2VyXG5cbiAgICBsZXQgcmVwYWNrYWdlXG4gICAgICAgICAgKHR5cGUgayB2IGtfb3B0IHZfb3B0KVxuICAgICAgICAgIChtYXJrZXIgOiAoaywgdiwga19vcHQsIHZfb3B0KSBtYXJrZXIpXG4gICAgICAgICAgKGsgOiBrX29wdClcbiAgICAgICAgICAodiA6IHZfb3B0KVxuICAgICAgOiAoayAqIHYpIG9wdGlvblxuICAgICAgPVxuICAgICAgbWF0Y2ggbWFya2VyIHdpdGhcbiAgICAgIHwgTWlzc2luZyAtPiBOb25lXG4gICAgICB8IEZvdW5kIC0+IFNvbWUgKGssIHYpXG4gICAgOztcblxuICAgICgqIFRoZSB0eXBlIHNpZ25hdHVyZSBpcyBleHBsaWNpdCBoZXJlIHRvIGFsbG93IHBvbHltb3JwaGljIHJlY3Vyc2lvbi4gKilcbiAgICBsZXQgcmVjIGxvb3AgOlxuICAgICAgJ2sgJ3YgJ2tfb3B0ICd2X29wdC5cbiAgICAgICgnaywgJ3YpIHRyZWVcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrXG4gICAgICAtPiBjb21wYXJlX2tleTooJ2sgLT4gJ2sgLT4gaW50KVxuICAgICAgLT4gKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlclxuICAgICAgLT4gJ2tfb3B0XG4gICAgICAtPiAndl9vcHRcbiAgICAgIC0+ICgnayAqICd2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIGZ1biB0IGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIC0+IGMgPj0gMFxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+IGMgPiAwXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IGMgPD0gMFxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+IGMgPCAwXG4gICAgICAgICAgdGhlbiBTb21lIChrJywgdicpXG4gICAgICAgICAgZWxzZSByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IE5vZGUgKGwsIGsnLCB2JywgciwgXykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBjID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJhc2UgY2FzZSAobm8gcmVjdXJzaXZlIGNhbGwpLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgTGVzc19vcl9lcXVhbF90byAtPiBTb21lIChrJywgdicpXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgciB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWluX2VsdCByXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgbCB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWF4X2VsdCBsKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogV2UgYXJlIGd1YXJhbnRlZWQgaGVyZSB0aGF0IGsnIDw+IGsuICopXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHRoZSBvbmx5IHJlY3Vyc2l2ZSBjYXNlLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIgayB+Y29tcGFyZV9rZXkgPSBsb29wIHQgZGlyIGsgfmNvbXBhcmVfa2V5IE1pc3NpbmcgKCkgKClcbiAgZW5kXG5cbiAgbGV0IGNsb3Nlc3Rfa2V5ID0gQ2xvc2VzdF9rZXlfaW1wbC5jbG9zZXN0X2tleVxuXG4gIGxldCByZWMgcmFuayB0IGsgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGsnLCBfKSAtPiBpZiBjb21wYXJlX2tleSBrJyBrID0gMCB0aGVuIFNvbWUgMCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGsnLCBfLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBTb21lIChsZW5ndGggbClcbiAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgIHRoZW4gcmFuayBsIGsgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIE9wdGlvbi5tYXAgKHJhbmsgciBrIH5jb21wYXJlX2tleSkgfmY6KGZ1biByYW5rIC0+IHJhbmsgKyAxICsgbGVuZ3RoIGwpXG4gIDs7XG5cbiAgKCogdGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbU2VxdWVuY2VdIGludGVyZmFjZSBidXQgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvblxuICAgICBhbGxvY2F0ZXMgb25seSAyIHdvcmRzIGFuZCBkb2Vzbid0IHJlcXVpcmUgd3JpdGUtYmFycmllciAqKVxuICBsZXQgcmVjIG50aCcgbnVtX3RvX3NlYXJjaCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPlxuICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICBOb25lKVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIChtYXRjaCBudGgnIG51bV90b19zZWFyY2ggbCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiBzb21lXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgICAgIG50aCcgbnVtX3RvX3NlYXJjaCByKSlcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IG50aCcgKHJlZiBuKSB0XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPCAwKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMClcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+IDApXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgfmtleSB+ZGF0YSA9IG5vdCAoaXNfbGVmdCB+a2V5IH5kYXRhKSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0XG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXSBmaW5kcyB0aGUga2V5IGluIFt0XSB3aGljaCBzYXRpc2ZpZXMgW21heWJlX2JvdW5kXVxuICAgICBhbmQgdGhlIHJlbGV2YW50IG9uZSBvZiBbaWZfZXhjbHVzaXZlXSBvciBbaWZfaW5jbHVzaXZlXSwgYXMganVkZ2VkIGJ5IFtjb21wYXJlXS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgfmlmX2V4Y2x1c2l2ZSB+aWZfaW5jbHVzaXZlID1cbiAgICBsZXQgZmluZF9ib3VuZCB0IGhvdyBib3VuZCB+Y29tcGFyZSA6IF8gTWF5YmVfYm91bmQudCBvcHRpb24gPVxuICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCB0IGhvdyBib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICB8IFNvbWUgKGJvdW5kLCBfKSAtPiBTb21lIChJbmNsIGJvdW5kKVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIChtYXliZV9ib3VuZCA6IF8gTWF5YmVfYm91bmQudCkgd2l0aFxuICAgIHwgRXhjbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfZXhjbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBJbmNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9pbmNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IFVuYm91bmRlZCAtPiBTb21lIFVuYm91bmRlZFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHNdIGZpbmRzIHRoZSAobm90IG5lY2Vzc2FyaWx5IGRpc3RpbmN0KSBrZXlzIGluIFt0XVxuICAgICB3aGljaCBtb3N0IGNsb3NlbHkgYXBwcm9hY2ggKGJ1dCBkbyBub3QgY3Jvc3MpIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF0sIGFzXG4gICAgIGp1ZGdlZCBieSBbY29tcGFyZV0uIEl0IHJldHVybnMgW05vbmVdIGlmIG5vIGtleXMgaW4gW3RdIGFyZSB3aXRoaW4gdGhhdCByYW5nZS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBmaW5kX2xvd2VyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBsZXQgZmluZF91cHBlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIG1hdGNoIGZpbmRfbG93ZXJfYm91bmQgdCBsb3dlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbG93ZXJfYm91bmQgLT5cbiAgICAgIChtYXRjaCBmaW5kX3VwcGVyX2JvdW5kIHQgdXBwZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIHVwcGVyX2JvdW5kIC0+IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkpXG4gIDs7XG5cbiAgdHlwZSAoJ2ssICd2KSBhY2MgPVxuICAgIHsgbXV0YWJsZSBiYWRfa2V5IDogJ2sgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG1hcF9sZW5ndGggOiAoJ2ssICd2KSB0ICogaW50XG4gICAgfVxuXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYWNjID0geyBiYWRfa2V5ID0gTm9uZTsgbWFwX2xlbmd0aCA9IGVtcHR5LCAwIH0gaW5cbiAgICBpdGVyaSB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCBtYXAsIGxlbmd0aCA9IGFjYy5tYXBfbGVuZ3RoIGluXG4gICAgICBsZXQgKChfLCBsZW5ndGgnKSBhcyBwYWlyKSA9IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgbWFwIH5jb21wYXJlX2tleSBpblxuICAgICAgaWYgbGVuZ3RoID0gbGVuZ3RoJyAmJiBPcHRpb24uaXNfbm9uZSBhY2MuYmFkX2tleVxuICAgICAgdGhlbiBhY2MuYmFkX2tleSA8LSBTb21lIGtleVxuICAgICAgZWxzZSBhY2MubWFwX2xlbmd0aCA8LSBwYWlyKTtcbiAgICBtYXRjaCBhY2MuYmFkX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IGBPayBhY2MubWFwX2xlbmd0aFxuICAgIHwgU29tZSBrZXkgLT4gYER1cGxpY2F0ZV9rZXkga2V5XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9pdGVyaV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3Qga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCBzZXhwIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCkgc2V4cCBpblxuICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIG1hdGNoIG9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgICAgTGlzdC5pdGVyMl9vayBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgazIgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIk1hcC50X29mX3NleHBfZGlyZWN0OiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICBsZXQgZiB+a2V5IH5kYXRhIGFjYyA9IFNleHAuTGlzdCBbIHNleHBfb2Zfa2V5IGtleTsgc2V4cF9vZl92YWx1ZSBkYXRhIF0gOjogYWNjIGluXG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IH5mIHQgfmluaXQ6W10pXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgbGV0IG9rcywgKGVycm9yX3RyZWUsIF8pID0gcGFydGl0aW9uX21hcCB0IH5jb21wYXJlX2tleSB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gICAgaWYgaXNfZW1wdHkgZXJyb3JfdHJlZVxuICAgIHRoZW4gT2sgb2tzXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvcl9zIChzZXhwX29mX3Qgc2V4cF9vZl9rZXkgRXJyb3Iuc2V4cF9vZl90IGVycm9yX3RyZWUpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzXG4gICAgICAgIHQxXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yOih7IGNvbXBhcmUgPSBjb21wYXJlX2tleTsgc2V4cF9vZl90ID0gc2V4cF9vZl9rZXkgfSA6IF8gQ29tcGFyYXRvci50KVxuICAgID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGBPa1xuICAgICAgICAoZm9sZCB0MSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gfmtleSB+ZGF0YSAodDIsIGxlbmd0aCkgLT5cbiAgICAgICAgICAgbGV0IGtleSA9IGYga2V5IGluXG4gICAgICAgICAgIHRyeSBhZGRfZXhuX2ludGVybmFsIHQyIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IHdpdGhcbiAgICAgICAgICAgfCBEdXBsaWNhdGUgLT4gcmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayByZXN1bHQgLT4gcmVzdWx0XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIGxldCBzZXhwX29mX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIk1hcC5tYXBfa2V5c19leG46IGR1cGxpY2F0ZSBrZXlcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuZW5kXG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnaywgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAoJ2ssICd2KSBUcmVlMC50XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcblxubGV0IGNvbXBhcmVfa2V5IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cblxubGV0IGxpa2UgeyB0cmVlID0gXzsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9ICh0cmVlLCBsZW5ndGgpID1cbiAgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IGxpa2UyIHggKHksIHopID0gbGlrZSB4IHksIGxpa2UgeCB6XG5cbmxldCBsaWtlX21heWJlX25vX29wICh7IHRyZWUgPSBvbGRfdHJlZTsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9IGFzIG9sZF90KSAodHJlZSwgbGVuZ3RoKVxuICA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IHdpdGhfc2FtZV9sZW5ndGggeyB0cmVlID0gXzsgY29tcGFyYXRvcjsgbGVuZ3RoIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cbmxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuKCogRXhwb3NpbmcgdGhpcyBmdW5jdGlvbiB3b3VsZCBtYWtlIGl0IHZlcnkgZWFzeSBmb3IgdGhlIGludmFyaWFudHNcbiAgIG9mIHRoaXMgbW9kdWxlIHRvIGJlIGJyb2tlbi4gKilcbmxldCBvZl90cmVlX3Vuc2FmZSB+Y29tcGFyYXRvciB+bGVuZ3RoIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG5cbiAgbGV0IGludmFyaWFudHMgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSAmJiBUcmVlMC5sZW5ndGggdC50cmVlID0gdC5sZW5ndGhcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHQudHJlZVxuICBsZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlIHQgKFRyZWUwLnNldCB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IHJlc3VsdCAtPiBgT2sgcmVzdWx0XG4gICAgfCBleGNlcHRpb24gRHVwbGljYXRlIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gICAgbGlrZSB0IChUcmVlMC5yZW1vdmVfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGgga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCBrZXkgPSBUcmVlMC5maW5kX211bHRpIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgPVxuICAgIGxpa2UgdCAoVHJlZTAuY2hhbmdlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPVxuICAgIGxpa2UgdCAoVHJlZTAudXBkYXRlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHQudHJlZVxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIHQga2V5ID0gVHJlZTAuZmluZCB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgcmVtb3ZlIHQga2V5ID1cbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlIHQudHJlZSBrZXkgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBtZW0gdCBrZXkgPSBUcmVlMC5tZW0gdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdC50cmVlIH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdC50cmVlIH5mXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiA9IFRyZWUwLml0ZXIyIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICBsZXQgbWFwIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcCB0LnRyZWUgfmYpXG4gIGxldCBtYXBpIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcGkgdC50cmVlIH5mKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5mIH5pbml0XG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEudHJlZSB0Mi50cmVlIH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcmkgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9tYXBpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbmlfdGYgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGxpa2UgdClcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9yc1xuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2RhdGEgdDEgdDIgPSBUcmVlMC5lcXVhbCAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdC50cmVlXG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHQudHJlZVxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0LnRyZWVcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MS50cmVlXG4gICAgICB0Mi50cmVlXG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiA9XG4gICAgbGlrZSB0MSAoVHJlZTAubWVyZ2UgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIFRoaXMgaXMgb25seSBhIG5vLW9wIGluIHRoZSBjYXNlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgbWFwcyBpcyBlbXB0eS4gKilcbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICAoaWYgdDIubGVuZ3RoIDw9IHQxLmxlbmd0aCB0aGVuIHQxIGVsc2UgdDIpXG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MS50cmVlXG4gICAgICAgICB0Mi50cmVlXG4gICAgICAgICB+bGVuZ3RoMTp0MS5sZW5ndGhcbiAgICAgICAgIH5sZW5ndGgyOnQyLmxlbmd0aFxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdC50cmVlIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0LnRyZWUgfmZcblxuICBsZXQgc3BsaXQgdCBrID1cbiAgICBsZXQgbCwgbWF5YmUsIHIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgayB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IGJvdGhfbGVuID0gaWYgT3B0aW9uLmlzX3NvbWUgbWF5YmUgdGhlbiB0Lmxlbmd0aCAtIDEgZWxzZSB0Lmxlbmd0aCBpblxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBtYXliZSwgb2ZfdHJlZV91bnNhZmUgciB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCBsKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gb2ZfdHJlZSByIH5jb21wYXJhdG9yIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBsIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIHIpLCBtYXliZSwgcilcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgbGVmdCwgbWlkLCByaWdodCA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZSB0LnRyZWUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IG91dGVyX2pvaW5lZF9oZWlnaHQgPVxuICAgICAgbGV0IGhfbCA9IFRyZWUwLmhlaWdodCBsZWZ0XG4gICAgICBhbmQgaF9yID0gVHJlZTAuaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoX2wgPSBoX3IgdGhlbiBoX2wgKyAxIGVsc2UgbWF4IGhfbCBoX3JcbiAgICBpblxuICAgIGlmIG91dGVyX2pvaW5lZF9oZWlnaHQgPCBUcmVlMC5oZWlnaHQgbWlkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWlkX2xlbmd0aCA9IHQubGVuZ3RoIC0gKFRyZWUwLmxlbmd0aCBsZWZ0ICsgVHJlZTAubGVuZ3RoIHJpZ2h0KSBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpIH5sZW5ndGg6bWlkX2xlbmd0aClcbiAgICBlbHNlIG9mX3RyZWUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmFwcGVuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IGxvd2VyX3BhcnQpXG4gICAgICAgIH5sb3dlcl9wYXJ0Omxvd2VyX3BhcnQudHJlZVxuICAgICAgICB+dXBwZXJfcGFydDp1cHBlcl9wYXJ0LnRyZWVcbiAgICB3aXRoXG4gICAgfCBgT2sgdHJlZSAtPlxuICAgICAgYE9rXG4gICAgICAgIChvZl90cmVlX3Vuc2FmZVxuICAgICAgICAgICB0cmVlXG4gICAgICAgICAgIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIGxvd2VyX3BhcnQpXG4gICAgICAgICAgIH5sZW5ndGg6KGxvd2VyX3BhcnQubGVuZ3RoICsgdXBwZXJfcGFydC5sZW5ndGgpKVxuICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQudHJlZSB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdC50cmVlIH5taW4gfm1heCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdC50cmVlIGRpciBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQudHJlZSBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIHQga2V5ID0gVHJlZTAucmFuayB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdC50cmVlIH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBsaWtlX21heWJlX25vX29wIHQgKEVtcHR5LCAwKVxuICA7O1xuZW5kXG5cbigqIFswXSBpcyB1c2VkIGFzIHRoZSBbbGVuZ3RoXSBhcmd1bWVudCBldmVyeXdoZXJlIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0cmVlcyBkbyBub3RcbiAgIGhhdmUgdGhlaXIgbGVuZ3RocyBzdG9yZWQgYXQgdGhlIHJvb3QsIHVubGlrZSBtYXBzLiBUaGUgdmFsdWVzIGFyZSBkaXNjYXJkZWQgYWx3YXlzLiAqKVxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9ICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gayB2ID0gVHJlZTAuc2luZ2xldG9uIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBmc3QgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvciB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9IGZzdCAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIGZzdCAoVHJlZTAub2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPSBmc3QgKFRyZWUwLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl9yZXF1aXJlZF9ieV9pbnRmIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6ZnN0XG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9IGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fdHJlZSB0ID0gdFxuXG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcblxuICBsZXQgc2V0IH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgZnN0IChUcmVlMC5zZXQgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBmc3RcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0XG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmxlbmd0aDowXG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgdHJ5IGBPayAoYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEpIHdpdGhcbiAgICB8IF8gLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBUcmVlMC5hZGRfbXVsdGkgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBmc3RcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5yZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB8PiBmc3RcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9tdWx0aSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBmc3QgKFRyZWUwLmNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0XG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLmZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgZnN0IChUcmVlMC5yZW1vdmUgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAubWVtIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdCB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQgfmZcblxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIFRyZWUwLml0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mXG4gIGxldCBtYXBpIHQgfmYgPSBUcmVlMC5tYXBpIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmYgfmluaXQgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIH5jb21wYXJhdG9yIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfa2V5cyB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fbWFwaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fbWFwIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbmlfdGYgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgfmNvbXBhcmF0b3IgdCA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjpmc3RcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9yc1xuICAgICAgICAgdFxuICAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmVxdWFsIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHRcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdFxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDFcbiAgICAgIHQyXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIGZzdCAoVHJlZTAubWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgfmNvbXBhcmF0b3IgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIExlbmd0aCBjb21wdXRhdGlvbiBtYWtlcyB0aGlzIHNpZ25pZmljYW50bHkgc2xvd2VyIHRoYW4gW21lcmdlX3NrZXdlZF0gb24gYSBtYXBcbiAgICAgICB3aXRoIGEgW2xlbmd0aF0gZmllbGQsIGJ1dCBkb2VzIHByZXNlcnZlIGFtb3VudCBvZiBhbGxvY2F0aW9uLiAqKVxuICAgIGZzdFxuICAgICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgICAgdDFcbiAgICAgICAgIHQyXG4gICAgICAgICB+bGVuZ3RoMToobGVuZ3RoIHQxKVxuICAgICAgICAgfmxlbmd0aDI6KGxlbmd0aCB0MilcbiAgICAgICAgIH5jb21iaW5lXG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IFRyZWUwLmZvcl9hbGxpIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQgfmZcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgayA9IFRyZWUwLnNwbGl0IHQgayB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgYXBwZW5kIH5jb21wYXJhdG9yIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBUcmVlMC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IF8sIHJldCwgXyA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH5sb3dlcl9ib3VuZFxuICAgICAgICB+dXBwZXJfYm91bmRcbiAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICByZXRcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICB0XG4gICAgICB+bWluXG4gICAgICB+bWF4XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB+Y29tcGFyYXRvciB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IH5jb21wYXJhdG9yIHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdCBkaXIga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLnJhbmsgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBmc3QgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3Qga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaCBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IEVtcHR5XG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgd2l0aFxuICAgIHwgYE9rICh0LCBfKSAtPiBgT2sgdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID0gZnN0IChUcmVlMC5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZilcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ3cpIHQgPSAoJ2ssICd2KSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRcblxuICAgIGxldCBlbXB0eSA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcblxuICAgIGxldCBhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgdCB3aXRoXG4gICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICBFcnJvci5yYWlzZV9zIChTZXhwLkF0b20gXCJNYXAuQnVpbGRfaW5jcmVhc2luZy5hZGQ6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgfCBfIC0+IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0IH5rZXkgfmRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWUgdCA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdiA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBrIHY7IGxlbmd0aCA9IDEgfVxuICBsZXQgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHRyZWUsIGxlbmd0aCkgPSB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSBvZl90cmVlMCB+Y29tcGFyYXRvciAodHJlZSwgVHJlZTAubGVuZ3RoIHRyZWUpXG4gIGxldCB0b190cmVlID0gdG9fdHJlZVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgICAgfmY6KGZ1biB0cmVlIC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBsZW5ndGgpIC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+aXRlcmkgd2l0aFxuICAgIHwgYE9rIHRyZWVfbGVuZ3RoIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZV9sZW5ndGgpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSlcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYsIGxlbilcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KG9mX3RyZWUwIH5jb21wYXJhdG9yKVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayAodHJlZSwgbGVuZ3RoKSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcGFpciAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHBhaXIpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5tYXBfa2V5c19leG4gdC50cmVlIH5mIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvciA9IEsuY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGVuZFxuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfdHJlZSAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSB0cmVlID1cbiAgb2ZfdHJlZSB+Y29tcGFyYXRvcjpNLmNvbXBhcmF0b3IgdHJlZVxuOztcblxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2FsaXN0X2V4biBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3RfbXVsdGkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9mb2xkIG0gYSB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5pbml0IH5mXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVkdWNlIG0gYSB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9pdGVyaSBtIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5cbmxldCBvZl9pdGVyaV9leG4gbSB+aXRlcmkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIG0gc2VxID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNlcVxuOztcblxubGV0IG9mX3NlcXVlbmNlIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZXhuIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX211bHRpIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2ZvbGQgbSBzIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgbSBzIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+ZlxuOztcblxubGV0IG1hcF9rZXlzIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IG1hcF9rZXlzX2V4biBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5cbm1vZHVsZSBNIChLIDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGsgY21wKVxuICAgICAgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICB2X29mX3NleHBcbiAgICAgIHNleHBcbiAgPVxuICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3I6Sy5jb21wYXJhdG9yIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGspXG4gICAgICAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspXG4gICAgICAodl9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIExpc3RcbiAgICAgICAgKE1hbnkgKExpc3QgKENvbnMgKEsudF9zZXhwX2dyYW1tYXIudW50eXBlZCwgQ29ucyAodl9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSkpKSlcbiAgfVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIGNvbXBhcmVfdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfdiB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gaykgaGFzaF9mb2xkX3Ygc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEsuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX3Ygc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhIH5pbml0IH5mXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGEgfmZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3IgcyB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG5lbmRcbiIsIm9wZW4hIEltcG9ydDBcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbC5RdWV1ZS50XG5cbmxldCBjcmVhdGUgPSBDYW1sLlF1ZXVlLmNyZWF0ZVxubGV0IGNsZWFyID0gQ2FtbC5RdWV1ZS5jbGVhclxubGV0IGNvcHkgPSBDYW1sLlF1ZXVlLmNvcHlcbmxldCBpc19lbXB0eSA9IENhbWwuUXVldWUuaXNfZW1wdHlcbmxldCBsZW5ndGggPSBDYW1sLlF1ZXVlLmxlbmd0aFxubGV0IHBlZWsgPSBDYW1sLlF1ZXVlLnBlZWtcbmxldCBwb3AgPSBDYW1sLlF1ZXVlLnBvcFxubGV0IHB1c2ggPSBDYW1sLlF1ZXVlLnB1c2hcbmxldCB0cmFuc2ZlciA9IENhbWwuUXVldWUudHJhbnNmZXJcbmxldCBpdGVyIHQgfmYgPSBDYW1sLlF1ZXVlLml0ZXIgZiB0XG5sZXQgZm9sZCB0IH5pbml0IH5mID0gQ2FtbC5RdWV1ZS5mb2xkIGYgaW5pdCB0XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlua2VkX3F1ZXVlMFxuXG5sZXQgZW5xdWV1ZSB0IHggPSBMaW5rZWRfcXVldWUwLnB1c2ggeCB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBvcCB0KVxubGV0IGRlcXVldWVfZXhuID0gTGlua2VkX3F1ZXVlMC5wb3BcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucGVlayB0KVxubGV0IHBlZWtfZXhuID0gTGlua2VkX3F1ZXVlMC5wZWVrXG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYERlZmluZV91c2luZ19mb2xkXG4gICAgbGV0IGl0ZXJpID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9sZGkgPSBDLmZvbGRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5sZXQgaXRlcmkgPSBDLml0ZXJpXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID0gTGlua2VkX3F1ZXVlMC50cmFuc2ZlciBzcmMgZHN0XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBlbnF1ZXVlIHJlcyAoZiBhKSk7XG4gIHJlc1xuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBlbnF1ZXVlIHJlcyAoZiBpIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlciBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXJpIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGxpc3QgPSBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBBcnJheS5pdGVyIGFycmF5IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBpbml0IGxlbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgZW5xdWV1ZSB0IChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggbGVuZ3RoIHQgd2l0aFxuICB8IDAgLT4gW3x8XVxuICB8IGxlbiAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbiAocGVla19leG4gdCkgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gdiAtPlxuICAgICAgYXJyLighaSkgPC0gdjtcbiAgICAgIGluY3IgaSk7XG4gICAgYXJyXG47O1xuXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAobGlzdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgc2luZ2xldG9uIGEgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBlbnF1ZXVlIHQgYTtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5JbnQ2NFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50NjRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgY29tcGFyZSA9IEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDY0XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50NjRfcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gQ2FtbC5JbnQ2NC5vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBDYW1sLkludDY0Lm9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDY0IDogdCAtPiB0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMTYgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSA0OFxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMzIgeCA9XG4gICgqIFRoaXMgaXMgc3RyaWN0bHkgYmV0dGVyIHRoYW4gY29lcmNpbmcgdG8gYW4gaW50MzIgdG8gcGVyZm9ybSBieXRlc3dhcC4gQ29lcmNpbmdcbiAgICAgZnJvbSBhbiBpbnQzMiB3aWxsIGFkZCB1bm5lY2Vzc2FyeSBzaGlmdCBvcGVyYXRpb25zIHRvIHNpZ24gZXh0ZW5kIHRoZSBudW1iZXJcbiAgICAgYXBwcm9wcmlhdGVseS5cbiAgKilcbiAgQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDMyXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwNDggeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAxNlxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgaW5jciByID0gciA6PSBhZGQgIXIgb25lXG5sZXQgZGVjciByID0gciA6PSBzdWIgIXIgb25lXG5cbmV4dGVybmFsIG9mX2ludDY0IDogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRcbmxldCB0b19pbnQ2NCB0ID0gdFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50NjRfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxuZXh0ZXJuYWwgdG9faW50X3RydW5jIDogdCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIHRvX25hdGl2ZWludF90cnVuYyA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcblxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252LmludDY0X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuSW50NjQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5JbnQ2NC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLkludDY0LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5JbnQ2NC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5JbnQ2NC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5JbnQ2NC5wcmVkIHggPSBDYW1sLkludDY0Lnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgaWYgQ2FtbC5JbnQ2NC5lcXVhbCBpIENhbWwuSW50NjQub25lIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLkludDY0LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVMeFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NFwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9hZGRcIlxuICBleHRlcm5hbCAoIC0gKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfc3ViXCJcbiAgZXh0ZXJuYWwgKCAqICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X211bFwiXG4gIGV4dGVybmFsICggLyApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9kaXZcIlxuICBleHRlcm5hbCAoIH4tICkgOiB0IC0+IHQgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiB0IC0+IHQgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfYW5kXCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfb3JcIlxuICBleHRlcm5hbCAoIGx4b3IgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfeG9yXCJcblxuICBsZXQgbG5vdCA9IGJpdF9ub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2xzbFwiXG4gIGV4dGVybmFsICggYXNyICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfYXNyXCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9sc3JcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjRdIGFuZCBbSW50NjQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBBIDYzYml0IGludGVnZXIgaXMgYSA2NGJpdCBpbnRlZ2VyIHdpdGggaXRzIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgYW5kIGl0cyBsb3dlc3QgYml0IHNldCB0byAwLlxuICAgVGhpcyBpcyB0aGUgc2FtZSBraW5kIG9mIGVuY29kaW5nIGFzIE9DYW1sIGludCBvbiA2NGJpdCBhcmNoaXRlY3R1cmUuXG4gICBUaGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoZSBsb3dlc3QgYml0IChpbW1lZGlhdGUgYml0KSBzZXQgdG8gMS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5cbm1vZHVsZSBUMCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubW9kdWxlIFcgOiBzaWdcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcbiAgZW5kXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICB2YWwgd3JhcF9leG4gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgd3JhcF9tb2R1bG8gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgdW53cmFwIDogdCAtPiBDYW1sLkludDY0LnRcblxuICAoKiogUmV0dXJucyBhIG5vbi1uZWdhdGl2ZSBpbnQ2NCB0aGF0IGlzIGVxdWFsIHRvIHRoZSBpbnB1dCBpbnQ2MyBtb2R1bG8gMl42My4gKilcbiAgdmFsIHVud3JhcF91bnNpZ25lZCA6IHQgLT4gQ2FtbC5JbnQ2NC50XG5cbiAgdmFsIGludmFyaWFudCA6IHQgLT4gdW5pdFxuICB2YWwgYWRkIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN1YiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgc3VjYyA6IHQgLT4gdFxuICB2YWwgcHJlZCA6IHQgLT4gdFxuICB2YWwgbXVsIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdyA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXYgOiB0IC0+IHQgLT4gdFxuICB2YWwgcmVtIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvcGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIGJpdF9ub3QgOiB0IC0+IHRcbiAgdmFsIGJpdF94b3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X29yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9hbmQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc2hpZnRfbGVmdCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIG1pbl92YWx1ZSA6IHRcbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludDY0IDogdCAtPiBDYW1sLkludDY0LnRcbiAgdmFsIG9mX2ludDY0IDogQ2FtbC5JbnQ2NC50IC0+IHQgb3B0aW9uXG4gIHZhbCBvZl9pbnQ2NF9leG4gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGNlaWxfcG93MiA6IHQgLT4gdFxuICB2YWwgZmxvb3JfcG93MiA6IHQgLT4gdFxuICB2YWwgY2VpbF9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGZsb29yX2xvZzIgOiB0IC0+IGludFxuICB2YWwgaXNfcG93MiA6IHQgLT4gYm9vbFxuICB2YWwgY2x6IDogdCAtPiBpbnRcbiAgdmFsIGN0eiA6IHQgLT4gaW50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUMFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgbGV0IHdyYXBfZXhuIHggPVxuICAgICgqIFJhaXNlcyBpZiB0aGUgaW50NjQgdmFsdWUgZG9lcyBub3QgZml0IG9uIGludDYzLiAqKVxuICAgIENvbnYuaW50NjRfZml0X29uX2ludDYzX2V4biB4O1xuICAgIENhbWwuSW50NjQubXVsIHggMkxcbiAgOztcblxuICBsZXQgd3JhcCB4ID1cbiAgICBpZiBDb252LmludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuIFNvbWUgKENhbWwuSW50NjQubXVsIHggMkwpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB3cmFwX21vZHVsbyB4ID0gQ2FtbC5JbnQ2NC5tdWwgeCAyTFxuICBsZXQgdW53cmFwIHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IHggMVxuICBsZXQgdW53cmFwX3Vuc2lnbmVkIHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAxXG5cbiAgKCogVGhpcyBkb2VzIG5vdCB1c2Ugd3JhcCBvciB1bndyYXAgdG8gYXZvaWQgZ2VuZXJhdGluZyBleGNlcHRpb25zIGluIHRoZSBjYXNlIG9mXG4gICAgIG92ZXJmbG93cy4gVGhpcyBpcyB0byBwcmVzZXJ2ZSB0aGUgc2VtYW50aWNzIG9mIGludCB0eXBlIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmUuICopXG4gIGxldCBmMiBmIGEgYiA9XG4gICAgQ2FtbC5JbnQ2NC5tdWwgKGYgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYSAxKSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpKSAyTFxuICA7O1xuXG4gIGxldCBtYXNrID0gMHhmZmZmX2ZmZmZfZmZmZl9mZmZlTFxuICBsZXQgbSB4ID0gQ2FtbC5JbnQ2NC5sb2dhbmQgeCBtYXNrXG4gIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAobSB0ID0gdClcbiAgbGV0IGFkZCB4IHkgPSBDYW1sLkludDY0LmFkZCB4IHlcbiAgbGV0IHN1YiB4IHkgPSBDYW1sLkludDY0LnN1YiB4IHlcbiAgbGV0IG5lZyB4ID0gQ2FtbC5JbnQ2NC5uZWcgeFxuICBsZXQgYWJzIHggPSBDYW1sLkludDY0LmFicyB4XG4gIGxldCBvbmUgPSB3cmFwX2V4biAxTFxuICBsZXQgc3VjYyBhID0gYWRkIGEgb25lXG4gIGxldCBwcmVkIGEgPSBzdWIgYSBvbmVcbiAgbGV0IG1pbl92YWx1ZSA9IG0gQ2FtbC5JbnQ2NC5taW5faW50XG4gIGxldCBtYXhfdmFsdWUgPSBtIENhbWwuSW50NjQubWF4X2ludFxuICBsZXQgYml0X25vdCB4ID0gbSAoQ2FtbC5JbnQ2NC5sb2dub3QgeClcbiAgbGV0IGJpdF9hbmQgPSBDYW1sLkludDY0LmxvZ2FuZFxuICBsZXQgYml0X3hvciA9IENhbWwuSW50NjQubG9neG9yXG4gIGxldCBiaXRfb3IgPSBDYW1sLkludDY0LmxvZ29yXG4gIGxldCBzaGlmdF9sZWZ0IHggaSA9IENhbWwuSW50NjQuc2hpZnRfbGVmdCB4IGlcbiAgbGV0IHNoaWZ0X3JpZ2h0IHggaSA9IG0gKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgeCBpKVxuICBsZXQgc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkgPSBtIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpKVxuICBsZXQgcG93ID0gZjIgSW50X21hdGguUHJpdmF0ZS5pbnQ2M19wb3dfb25faW50NjRcbiAgbGV0IG11bCBhIGIgPSBDYW1sLkludDY0Lm11bCBhIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSlcbiAgbGV0IGRpdiBhIGIgPSB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5kaXYgYSBiKVxuICBsZXQgcmVtIGEgYiA9IENhbWwuSW50NjQucmVtIGEgYlxuICBsZXQgcG9wY291bnQgeCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50IHhcbiAgbGV0IHRvX2ludDY0IHQgPSB1bndyYXAgdFxuICBsZXQgb2ZfaW50NjQgdCA9IHdyYXAgdFxuICBsZXQgb2ZfaW50NjRfZXhuIHQgPSB3cmFwX2V4biB0XG4gIGxldCBvZl9pbnQ2NF90cnVuYyB0ID0gd3JhcF9tb2R1bG8gdFxuICBsZXQgdF9vZl9zZXhwIHggPSB3cmFwX2V4biAoaW50NjRfb2Zfc2V4cCB4KVxuICBsZXQgc2V4cF9vZl90IHggPSBzZXhwX29mX2ludDY0ICh1bndyYXAgeClcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGlzX3BvdzIgeCA9IEludDY0LmlzX3BvdzIgKHVud3JhcCB4KVxuXG4gIGxldCBjbHogeCA9XG4gICAgKCogV2UgcnVuIEludDY0LmNseiBkaXJlY3RseSBvbiB0aGUgd3JhcHBlZCBpbnQ2MyB2YWx1ZS4gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2UgdGhlXG4gICAgICAgYml0cyBvZiB0aGUgaW50NjNfZW11bCBhcmUgbGVmdC1hbGlnbmVkIGluIHRoZSBJbnQ2NC4gKilcbiAgICBJbnQ2NC5jbHogeFxuICA7O1xuXG4gIGxldCBjdHogeCA9IEludDY0LmN0eiAodW53cmFwIHgpXG4gIGxldCBmbG9vcl9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGNlaWxfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBmbG9vcl9sb2cyIHggPSBJbnQ2NC5mbG9vcl9sb2cyICh1bndyYXAgeClcbiAgbGV0IGNlaWxfbG9nMiB4ID0gSW50NjQuY2VpbF9sb2cyICh1bndyYXAgeClcbmVuZFxuXG5vcGVuIFdcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVy50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIFcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBXLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKFcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoVy5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBXLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVy5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVy5jb21wYXJlXG4gIGxldCBpbnZhcmlhbnQgPSBXLmludmFyaWFudFxuXG4gICgqIFdlIGRvbid0IGV4cGVjdCBbaGFzaF0gdG8gZm9sbG93IHRoZSBiZWhhdmlvciBvZiBpbnQgaW4gNjRiaXQgYXJjaGl0ZWN0dXJlICopXG4gIGxldCBfID0gaGFzaFxuICBsZXQgaGFzaCAoeCA6IHQpID0gQ2FtbC5IYXNodGJsLmhhc2ggeFxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBpbnZhbGlkX3N0ciB4ID0gUHJpbnRmLmZhaWx3aXRoZiBcIkludDYzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIHggKClcblxuICAoKlxuICAgICBcInNpZ25cIiByZWZlcnMgdG8gd2hldGhlciB0aGUgbnVtYmVyIHN0YXJ0cyB3aXRoIGEgJy0nXG4gICAgIFwic2lnbmVkbmVzcyA9IGZhbHNlXCIgbWVhbnMgdGhlIHJlc3Qgb2YgdGhlIG51bWJlciBpcyBwYXJzZWQgYXMgdW5zaWduZWQgYW5kIHRoZW4gY2FzdFxuICAgICB0byBzaWduZWQgd2l0aCB3cmFwLWFyb3VuZCBtb2R1bG8gMl5pXG4gICAgIFwic2lnbmVkbmVzcyA9IHRydWVcIiBtZWFucyBubyBzdWNoIGNyYXppbmVzcyBoYXBwZW5zXG5cbiAgICAgVGhlIHRlcm1pbm9sb2d5IGFuZCB0aGUgbG9naWMgaXMgZHVlIHRvIHRoZSBjb2RlIGluIGJ5dGVydW4vaW50cy5jIGluIG9jYW1sIDQuMDNcbiAgICAgKFtwYXJzZV9zaWduX2FuZF9iYXNlXSBmdW5jdGlvbikuXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgdHJ1ZSBmb3IgcGxhaW4gZGVjaW1hbCBudW1iZXIgKGUuZy4gMTIzNSwgLTY3ODkpXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgZmFsc2UgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgLSBbMHhmZmZmXSwgWy0weGZmZmZdIChoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMGIwMTAxXSwgWy0wYjAxMDFdIChiaW5hcnkgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBvMTIzN10sIFstMG8xMjM3XSAob2N0YWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzB1OTgxMl0sIFstMHU5ODEyXSAodW5zaWduZWQgZGVjaW1hbCByZXByZXNlbnRhdGlvbiAtIGF2YWlsYWJsZSBmcm9tIE9DYW1sIDQuMDMpICopXG4gIGxldCBzaWduX2FuZF9zaWduZWRuZXNzIHggPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHBvcywgc2lnbiA9XG4gICAgICBpZiAwIDwgbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggeC5bMF0gd2l0aFxuICAgICAgICB8ICctJyAtPiAxLCBgTmVnXG4gICAgICAgIHwgJysnIC0+IDEsIGBQb3NcbiAgICAgICAgfCBfIC0+IDAsIGBQb3MpXG4gICAgICBlbHNlIDAsIGBQb3NcbiAgICBpblxuICAgIGlmIHBvcyArIDIgPCBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBjMSA9IHguW3Bvc10gaW5cbiAgICAgIGxldCBjMiA9IHguW3BvcyArIDFdIGluXG4gICAgICBtYXRjaCBjMSwgYzIgd2l0aFxuICAgICAgfCAnMCcsICcwJyAuLiAnOScgLT4gc2lnbiwgdHJ1ZVxuICAgICAgfCAnMCcsIF8gLT4gc2lnbiwgZmFsc2VcbiAgICAgIHwgXyAtPiBzaWduLCB0cnVlKVxuICAgIGVsc2Ugc2lnbiwgdHJ1ZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9IENhbWwuSW50NjQudG9fc3RyaW5nICh1bndyYXAgeClcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgdHJ5XG4gICAgICBsZXQgc2lnbiwgc2lnbmVkbmVzcyA9IHNpZ25fYW5kX3NpZ25lZG5lc3Mgc3RyIGluXG4gICAgICBpZiBzaWduZWRuZXNzXG4gICAgICB0aGVuIG9mX2ludDY0X2V4biAoQ2FtbC5JbnQ2NC5vZl9zdHJpbmcgc3RyKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwb3Nfc3RyID1cbiAgICAgICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgICAgICB8IGBOZWcgLT4gU3RyaW5nLnN1YiBzdHIgfnBvczoxIH5sZW46KFN0cmluZy5sZW5ndGggc3RyIC0gMSlcbiAgICAgICAgICB8IGBQb3MgLT4gc3RyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnQ2NCA9IENhbWwuSW50NjQub2Zfc3RyaW5nIHBvc19zdHIgaW5cbiAgICAgICAgKCogdW5zaWduZWQgNjMtYml0IGludCBtdXN0IHBhcnNlIGFzIGEgcG9zaXRpdmUgc2lnbmVkIDY0LWJpdCBpbnQgKilcbiAgICAgICAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGludDY0IDBMIHRoZW4gaW52YWxpZF9zdHIgc3RyO1xuICAgICAgICBsZXQgaW50NjMgPSB3cmFwX21vZHVsbyBpbnQ2NCBpblxuICAgICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgICAgfCBgTmVnIC0+IG5lZyBpbnQ2M1xuICAgICAgICB8IGBQb3MgLT4gaW50NjMpXG4gICAgd2l0aFxuICAgIHwgXyAtPiBpbnZhbGlkX3N0ciBzdHJcbiAgOztcblxuICBsZXQgYnN3YXAxNiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMTYgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwMzIgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDMyICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDQ4IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXA0OCAodW53cmFwIHQpKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgbnVtX2JpdHMgPSA2M1xubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gYml0X25vdFxubGV0IGJpdF94b3IgPSBiaXRfeG9yXG5sZXQgYml0X29yID0gYml0X29yXG5sZXQgYml0X2FuZCA9IGJpdF9hbmRcbmxldCBwb3Bjb3VudCA9IHBvcGNvdW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IHBvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZVxubGV0IG1pbnVzX29uZSA9IHdyYXBfZXhuIENhbWwuSW50NjQubWludXNfb25lXG5sZXQgb25lID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC5vbmVcbmxldCB6ZXJvID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC56ZXJvXG5sZXQgaXNfcG93MiA9IGlzX3BvdzJcbmxldCBmbG9vcl9wb3cyID0gZmxvb3JfcG93MlxubGV0IGNlaWxfcG93MiA9IGNlaWxfcG93MlxubGV0IGZsb29yX2xvZzIgPSBmbG9vcl9sb2cyXG5sZXQgY2VpbF9sb2cyID0gY2VpbF9sb2cyXG5sZXQgY2x6ID0gY2x6XG5sZXQgY3R6ID0gY3R6XG5sZXQgdG9fZmxvYXQgeCA9IENhbWwuSW50NjQudG9fZmxvYXQgKHVud3JhcCB4KVxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCB4ID0gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQub2ZfZmxvYXQgeClcblxubGV0IG9mX2Zsb2F0IHQgPVxuICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgdCA+PSBmbG9hdF9sb3dlcl9ib3VuZCAmJiB0IDw9IGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQub2ZfZmxvYXQgdClcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjMub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBvZl9pbnQ2NCA9IG9mX2ludDY0XG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBvZl9pbnQ2NF90cnVuY1xubGV0IHRvX2ludDY0ID0gdG9faW50NjRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5cbigqIFdlIGNhbiByZXVzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGZyb20vdG8gaW50NjQgaGVyZS4gKilcbmxldCBvZl9pbnQgeCA9IHdyYXBfZXhuIChDb252LmludF90b19pbnQ2NCB4KVxubGV0IG9mX2ludF9leG4geCA9IG9mX2ludCB4XG5sZXQgdG9faW50IHggPSBDb252LmludDY0X3RvX2ludCAodW53cmFwIHgpXG5sZXQgdG9faW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50X3RydW5jICh1bndyYXAgeClcbmxldCBvZl9pbnQzMiB4ID0gd3JhcF9leG4gKENvbnYuaW50MzJfdG9faW50NjQgeClcbmxldCBvZl9pbnQzMl9leG4geCA9IG9mX2ludDMyIHhcbmxldCB0b19pbnQzMiB4ID0gQ29udi5pbnQ2NF90b19pbnQzMiAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfZXhuIHggPSBDb252LmludDY0X3RvX2ludDMyX2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX25hdGl2ZWludCB4ID0gb2ZfaW50NjQgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X2V4biB4ID0gd3JhcF9leG4gKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jIHggPSBvZl9pbnQ2NF90cnVuYyAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCB0b19uYXRpdmVpbnQgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50ICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfZXhuIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgKHVud3JhcCB4KVxuXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChULmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgVC5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBULmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG5cbiAgICBsZXQgdG9fc3RyaW5nIGkgPVxuICAgICAgKCogdGhlIHVzZSBvZiBbdW53cmFwX3Vuc2lnbmVkXSBoZXJlIGlzIGltcG9ydGFudCBmb3IgdGhlIGNhc2Ugb2YgW21pbl92YWx1ZV0gKilcbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgKHVud3JhcF91bnNpZ25lZCBpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBvZl9zdHJpbmcgKFwiMHhcIiBeIHMpXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZyB4XG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzXCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2M10gYW5kIFtJbnQ2My5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIHR5cGUgZW11bGF0ZWQgPSB0XG5cbiAgdHlwZSAoJ3VuZGVybHlpbmdfdHlwZSwgJ2ludGVybWVkaWF0ZV90eXBlKSB0ID1cbiAgICB8IEludCA6IChpbnQsIGludCkgdFxuICAgIHwgSW50NjQgOiAoaW50NjQsIGVtdWxhdGVkKSB0XG5lbmRcblxubGV0IHJlcHIgPSBSZXByLkludDY0XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2Jvb2wgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgZmFsc2U7IHRydWUgXSA6IHQgbGlzdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Jvb2xcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Jvb2wgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGJvb2xfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYm9vbCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBib29sX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gICAgfCBzIC0+IGludmFsaWRfYXJnZiBcIkJvb2wub2Zfc3RyaW5nOiBleHBlY3RlZCB0cnVlIG9yIGZhbHNlIGJ1dCBnb3QgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2Jvb2xcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Cb29sXCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IHRvX2ludCB4ID0gYm9vbF90b19pbnQgeFxuXG5tb2R1bGUgTm9uX3Nob3J0X2NpcmN1aXRpbmcgPSBzdHJ1Y3RcbiAgKCogV2UgZG9uJ3QgZXhwb3NlIHRoaXMsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGludmFyaWFudCBtZW50aW9uZWQgYmVsb3cgb2ZcbiAgICAgKHRvX2ludCB0cnVlID0gMSkgYW5kICh0b19pbnQgZmFsc2UgPSAwKS4gKilcbiAgbGV0IHVuc2FmZV9vZl9pbnQgKHggOiBpbnQpIDogYm9vbCA9IENhbWwuT2JqLm1hZ2ljIHhcbiAgbGV0ICggfHwgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsb3IgdG9faW50IGIpXG4gIGxldCAoICYmICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbGFuZCB0b19pbnQgYilcbmVuZFxuXG4oKiBXZSBkbyB0aGlzIGFzIGEgZGlyZWN0IGFzc2VydCBvbiB0aGUgdGhlb3J5IHRoYXQgaXQncyBhIGNoZWFwIHRoaW5nIHRvIHRlc3QgYW5kIGFcbiAgIHJlYWxseSBjb3JlIGludmFyaWFudCB0aGF0IHdlIG5ldmVyIGV4cGVjdCB0byBicmVhaywgYW5kIHdlIHNob3VsZCBiZSBoYXBweSBmb3IgYVxuICAgcHJvZ3JhbSB0byBmYWlsIGltbWVkaWF0ZWx5IGlmIHRoaXMgaXMgdmlvbGF0ZWQuICopXG5sZXQgKCkgPSBhc3NlcnQgKFBvbHkuKCA9ICkgKHRvX2ludCB0cnVlKSAxICYmIFBvbHkuKCA9ICkgKHRvX2ludCBmYWxzZSkgMClcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuSW50MzJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50MzJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50MzIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50MzJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDMyXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQzMi5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgSW5maXhfY29tcGFyZSA9IHN0cnVjdFxuICBvcGVuIFBvbHlcblxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IHggPj0geVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IHggPD0geVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IHggPiB5XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSB4IDwgeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IHggPD4geVxuZW5kXG5cbm1vZHVsZSBDb21wYXJlID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXhfY29tcGFyZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfaW50MzIgdCA9IHRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyIHQgPSB0XG5sZXQgdG9faW50MzJfZXhuID0gdG9faW50MzJcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDMyX3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmxldCBvZl9pbnQgPSBDb252LmludF90b19pbnQzMlxubGV0IG9mX2ludF9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnRfdHJ1bmMgPSBDb252LmludF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludCA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYuaW50MzJfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYuaW50MzJfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXAzMiA6IHQgLT4gdCA9IFwiJWJzd2FwX2ludDMyXCJcblxubGV0IGJzd2FwMTYgeCA9IENhbWwuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXAzMiB4KSAxNlxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLkludDMyLmxvZ29yXG4gIGxldCAoIGxzciApID0gQ2FtbC5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuSW50MzIubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gQ2FtbC5JbnQzMi5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIENhbWwuSW50MzIuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIENhbWwuSW50MzIuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuSW50MzIucHJlZCB4ID0gQ2FtbC5JbnQzMi56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50MzIgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQzMi5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgKCogVGhlIFtpID0gMV0gY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgY2x6KDApIGlzIHVuZGVmaW5lZCAqKVxuICAgIGlmIENhbWwuSW50MzIuZXF1YWwgaSBDYW1sLkludDMyLm9uZSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5JbnQzMi5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50MzIgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVseFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzJcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChDb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQzMl0gYW5kIFtJbnQzMi5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBSZXByID0gSW50NjNfZW11bC5SZXByXG5cbigqIEluIGEgd29ybGQgd2hlcmUgdGhlIGNvbXBpbGVyIHdvdWxkIHVuZGVyc3RhbmQgW0BAaW1tZWRpYXRlNjRdIGF0dHJpYnV0ZXMgb24gdHlwZVxuICAgZGVjbGFyYXRpb25zLCB0aGlzIG1vZHVsZSBpcyBob3cgb25lIHdvdWxkIHByb2R1Y2UgYSBbdHlwZSB0XSB3aXRoIHRoaXMgYXR0cmlidXRlLiAqKVxubW9kdWxlIEltbWVkaWF0ZTY0IDogc2lnXG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICB2YWwgcmVwciA6IHQgcmVwclxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgbGV0IHJlcHIgPVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAoQ2FtbC5PYmoubWFnaWMgSW1tZWRpYXRlIDogdCByZXByKVxuICAgICAgfCBXMzIgLT4gKENhbWwuT2JqLm1hZ2ljIE5vbl9pbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBJbW1lZGlhdGU2NC5NYWtlIChJbnQpIChJbnQ2M19lbXVsKVxuXG5tb2R1bGUgQmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIEludF9pbnRmLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50IG9wdGlvblxuICAgIHZhbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludFxuICAgIHZhbCBvZl9pbnQzMiA6IGludDMyIC0+IHRcbiAgICB2YWwgdG9faW50MzIgOiB0IC0+IEludDMyLnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBJbnQzMi50XG4gICAgdmFsIG9mX2ludDY0IDogSW50NjQudCAtPiB0IG9wdGlvblxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IEludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCBvcHRpb25cbiAgICB2YWwgdG9fbmF0aXZlaW50IDogdCAtPiBuYXRpdmVpbnQgb3B0aW9uXG4gICAgdmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0XG4gICAgdmFsIHRvX25hdGl2ZWludF90cnVuYyA6IHQgLT4gbmF0aXZlaW50XG4gICAgdmFsIG9mX2Zsb2F0X3VuY2hlY2tlZCA6IGZsb2F0IC0+IHRcbiAgICB2YWwgcmVwciA6ICh0LCB0KSBJbnQ2M19lbXVsLlJlcHIudFxuICAgIHZhbCBic3dhcDE2IDogdCAtPiB0XG4gICAgdmFsIGJzd2FwMzIgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXA0OCA6IHQgLT4gdFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBOYXRpdmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHRvX2ludCB4ID0gU29tZSB4XG4gICAgbGV0IHRvX2ludF90cnVuYyB4ID0geFxuXG4gICAgKCogW29mX2ludDMyX2V4bl0gaXMgYSBzYWZlIG9wZXJhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aCA2NC1iaXQgd29yZCBzaXplcy4gKilcbiAgICBsZXQgb2ZfaW50MzIgPSBvZl9pbnQzMl9leG5cbiAgICBsZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSB0b19uYXRpdmVpbnQgeFxuICAgIGxldCB0b19uYXRpdmVpbnQgeCA9IFNvbWUgKHRvX25hdGl2ZWludCB4KVxuICAgIGxldCByZXByID0gSW50NjNfZW11bC5SZXByLkludFxuICAgIGxldCBic3dhcDMyIHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwMzIgKEludDY0Lm9mX2ludCB0KSlcbiAgICBsZXQgYnN3YXA0OCB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDQ4IChJbnQ2NC5vZl9pbnQgdCkpXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBTKSA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBOYXRpdmUgOiBTKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIEludDYzX2VtdWwgOiBTKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgKHZhbCBCYWNrZW5kLmltcGwgOiBCYWNrZW5kLlMpXG5cbm1vZHVsZSBPdmVyZmxvd19leG4gPSBzdHJ1Y3RcbiAgbGV0ICggKyApIHQgdSA9XG4gICAgbGV0IHN1bSA9IHQgKyB1IGluXG4gICAgaWYgYml0X29yIChiaXRfeG9yIHQgdSkgKGJpdF94b3IgdCAoYml0X25vdCBzdW0pKSA8IHplcm9cbiAgICB0aGVuIHN1bVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJzdW1cIiwgc2V4cF9vZl90IHN1bSBdKVxuICA7O1xuXG4gIGxldCAoIC0gKSB0IHUgPVxuICAgIGxldCBkaWZmID0gdCAtIHUgaW5cbiAgICBsZXQgcG9zX2RpZmYgPSB0ID4gdSBpblxuICAgIGlmIHQgPD4gdSAmJiBCb29sLiggPD4gKSBwb3NfZGlmZiAoaXNfcG9zaXRpdmUgZGlmZilcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC0gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwiZGlmZlwiLCBzZXhwX29mX3QgZGlmZiBdKVxuICAgIGVsc2UgZGlmZlxuICA7O1xuXG4gIGxldCBuZWdhdGl2ZV9vbmUgPSBvZl9pbnQgKC0xKVxuICBsZXQgZGl2X3dvdWxkX292ZXJmbG93IHQgdSA9IHQgPSBtaW5fdmFsdWUgJiYgdSA9IG5lZ2F0aXZlX29uZVxuXG4gIGxldCAoICogKSB0IHUgPVxuICAgIGxldCBwcm9kdWN0ID0gdCAqIHUgaW5cbiAgICBpZiB1IDw+IHplcm8gJiYgKGRpdl93b3VsZF9vdmVyZmxvdyBwcm9kdWN0IHUgfHwgcHJvZHVjdCAvIHUgPD4gdClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICogKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgcHJvZHVjdCBdKVxuICAgIGVsc2UgcHJvZHVjdFxuICA7O1xuXG4gIGxldCAoIC8gKSB0IHUgPVxuICAgIGlmIGRpdl93b3VsZF9vdmVyZmxvdyB0IHVcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC8gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgKHQgLyB1KSBdKVxuICAgIGVsc2UgdCAvIHVcbiAgOztcblxuICBsZXQgYWJzIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJhYnMgb3ZlcmZsb3dcIiBlbHNlIGFicyB0XG4gIGxldCBuZWcgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcIm5lZyBvdmVyZmxvd1wiIGVsc2UgbmVnIHRcbmVuZFxuXG5sZXQgKCkgPSBhc3NlcnQgKEludC4oID0gKSBudW1fYml0cyA2MylcblxubGV0IHJhbmRvbV9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludCBzdGF0ZSAodG9faW50X2V4biBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NCBzdGF0ZSAodG9faW50NjQgYm91bmQpKVxuOztcblxubGV0IHJhbmRvbSA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21fb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9vZl9pbnQ2NFxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50X2luY2wgc3RhdGUgKHRvX2ludF9leG4gbG8pICh0b19pbnRfZXhuIGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjRfaW5jbCBzdGF0ZSAodG9faW50NjQgbG8pICh0b19pbnQ2NCBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2wgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX2luY2xfb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9pbmNsX29mX2ludDY0XG47O1xuXG5sZXQgZmxvb3JfbG9nMiB0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHQgfD4gdG9faW50X2V4biB8PiBJbnQuZmxvb3JfbG9nMlxuICB8IFczMiAtPlxuICAgIGlmIHQgPD0gemVyb1xuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSk7XG4gICAgbGV0IGZsb29yX2xvZzIgPSByZWYgKEludC4oIC0gKSBudW1fYml0cyAyKSBpblxuICAgIHdoaWxlIGVxdWFsIHplcm8gKGJpdF9hbmQgdCAoc2hpZnRfbGVmdCBvbmUgIWZsb29yX2xvZzIpKSBkb1xuICAgICAgZmxvb3JfbG9nMiA6PSBJbnQuKCAtICkgIWZsb29yX2xvZzIgMVxuICAgIGRvbmU7XG4gICAgIWZsb29yX2xvZzJcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZXByID0gUmVwclxuXG4gIGxldCByZXByID0gcmVwclxuXG4gIG1vZHVsZSBFbXVsID0gSW50NjNfZW11bFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLktleSAqKVxubW9kdWxlIEtleSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBUd28gW3RdcyB0aGF0IFtjb21wYXJlXSBlcXVhbCBtdXN0IGhhdmUgZXF1YWwgaGFzaGVzIGZvciB0aGUgaGFzaHRhYmxlXG4gICAgICAgIHRvIGJlaGF2ZSBwcm9wZXJseS4gKilcbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5NZXJnZV9pbnRvX2FjdGlvbiAqKVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSZW1vdmVcbiAgICB8IFNldF90byBvZiAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IHNpZ1xuICAoKiogezIgQWNjZXNzb3JzfSAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gIHZhbCBzZXhwX29mX2tleSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gU2V4cC50XG4gIHZhbCBjbGVhciA6IChfLCBfKSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQXR0ZW1wdGluZyB0byBtb2RpZnkgKFtzZXRdLCBbcmVtb3ZlXSwgZXRjLikgdGhlIGhhc2h0YWJsZSBkdXJpbmcgaXRlcmF0aW9uIChbZm9sZF0sXG4gICAgICBbaXRlcl0sIFtpdGVyX2tleXNdLCBbaXRlcmldKSB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooJ2Ega2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyBvdmVyIGJvdGgga2V5cyBhbmQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5pdGVyaSBoIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBwcmludF9lbmRsaW5lIChQcmludGYuc3ByaW50ZiBcIiVkLSVkXCIga2V5IGRhdGEpKTs7XG4gICAgICAxLTRcbiAgICAgIDUtNlxuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn0gKilcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50IDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gYm9vbFxuICB2YWwgcmVtb3ZlIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiB1bml0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgKiAnYlxuXG4gICgqKiBTZXRzIHRoZSBnaXZlbiBba2V5XSB0byBbZGF0YV0uICopXG4gIHZhbCBzZXQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFthZGRdIGFuZCBbYWRkX2V4bl0gbGVhdmUgdGhlIHRhYmxlIHVuY2hhbmdlZCBpZiB0aGUga2V5IHdhcyBhbHJlYWR5IHByZXNlbnQuICopXG4gIHZhbCBhZGQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBbIGBPayB8IGBEdXBsaWNhdGUgXVxuXG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSBjaGFuZ2VzIFt0XSdzIHZhbHVlIGZvciBba2V5XSB0byBiZSBbZiAoZmluZCB0IGtleSldLiAqKVxuICB2YWwgY2hhbmdlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZV9hbmRfcmV0dXJuIHQga2V5IH5mXSBpcyBbdXBkYXRlXSwgYnV0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBbZiBvXS4gKilcbiAgdmFsIHVwZGF0ZV9hbmRfcmV0dXJuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAnYlxuXG4gICgqKiBbbWFwIHQgZl0gcmV0dXJucyBhIG5ldyB0YWJsZSB3aXRoIHZhbHVlcyByZXBsYWNlZCBieSB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIFtmXVxuICAgICAgdG8gdGhlIGN1cnJlbnQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgbGV0IGgnID0gSGFzaHRibC5tYXAgaCB+ZjooZnVuIHggLT4geCAqIDIpIGluXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGgnOztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCAxMik7ICgxLCA4KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IHRhYmxlIGJ5IGZpbHRlcmluZyB0aGUgZ2l2ZW4gdGFibGUncyB2YWx1ZXMgYnkgW2ZdOiB0aGUga2V5cyBmb3Igd2hpY2hcbiAgICAgIFtmXSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50IHZhbHVlIHJldHVybnMgW1NvbWVdIGFyZSBrZXB0LCBhbmQgdGhvc2UgZm9yIHdoaWNoIGl0XG4gICAgICByZXR1cm5zIFtOb25lXSBhcmUgZGlzY2FyZGVkLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5maWx0ZXJfbWFwIGggfmY6KGZ1biB4IC0+IGlmIHggPiA1IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDYpXVxuICAgICAgdn0gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCdhIGtleSAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIFJldHVybnMgbmV3IHRhYmxlcyB3aXRoIGJvdW5kIHZhbHVlcyBwYXJ0aXRpb25lZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmRcbiAgICAgIHZhbHVlcy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KSAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIFJldHVybnMgYSBwYWlyIG9mIHRhYmxlcyBbKHQxLCB0MildLCB3aGVyZSBbdDFdIGNvbnRhaW5zIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlXG4gICAgICBpbml0aWFsIHRhYmxlIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0sIGFuZCBbdDJdIGNvbnRhaW5zIHRoZSByZXN0LiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fdGZdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIFtmaW5kX29yX2FkZCB0IGsgfmRlZmF1bHRdIHJldHVybnMgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGtleSBba10gaWYgaXQgaXMgaW4gdGhlXG4gICAgICB0YWJsZSBbdF0sIGFuZCBvdGhlcndpc2UgYXNzaWducyBba10gdGhlIHZhbHVlIHJldHVybmVkIGJ5IFtkZWZhdWx0ICgpXS4gKilcbiAgdmFsIGZpbmRfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDoodW5pdCAtPiAnYikgLT4gJ2JcblxuICAoKiogTGlrZSBbZmluZF9vcl9hZGRdIGJ1dCBbZGVmYXVsdF0gdGFrZXMgdGhlIGtleSBhcyBhbiBhcmd1bWVudC4gKilcbiAgdmFsIGZpbmRpX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCdhIGtleSAtPiAnYikgLT4gJ2JcblxuICAoKiogW2ZpbmQgdCBrXSByZXR1cm5zIFtTb21lXSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgW2tdIGluIFt0XSwgb3IgW05vbmVdIGlmIG5vIHN1Y2hcbiAgICAgIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBbZmluZF9leG4gdCBrXSByZXR1cm5zIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgW2tdIGluIFt0XSwgb3IgcmFpc2VzIFtDYW1sLk5vdF9mb3VuZF1cbiAgICAgIG9yIFtOb3RfZm91bmRfc10gaWYgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2JcblxuICAoKiogW2ZpbmRfYW5kX2NhbGwgdCBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXVxuXG4gICAgICBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICBbbWF0Y2ggZmluZCB0IGsgd2l0aCBTb21lIHYgLT4gaWZfZm91bmQgdiB8IE5vbmUgLT4gaWZfbm90X2ZvdW5kIGtdXG5cbiAgICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgdGhlIG9wdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgKCoqIEp1c3QgbGlrZSBbZmluZF9hbmRfY2FsbF0sIGJ1dCB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCB3aGljaCBpcyBwYXNzZWQgdG8gW2lmX2ZvdW5kXVxuICAgICAgYW5kIFtpZl9ub3RfZm91bmRdLCBzbyB0aGF0IHRoZSBjbGllbnQgY29kZSBjYW4gYXZvaWQgYWxsb2NhdGluZyBjbG9zdXJlcyBvciB1c2luZ1xuICAgICAgcmVmcyB0byBwYXNzIHRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgaW4gY29kZVxuICAgICAgd2hpY2ggdHJpZXMgdG8gbWluaW1pemUgaGVhcCBhbGxvY2F0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnZCAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgKCoqIFtmaW5kX2FuZF9yZW1vdmUgdCBrXSByZXR1cm5zIFNvbWUgKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIGsgaW4gdCBhbmQgcmVtb3ZlcyBpdCxcbiAgICAgIG9yIE5vbmUgaXMgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfYW5kX3JlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBNZXJnZXMgdHdvIGhhc2h0YWJsZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgW21lcmdlIGYgaDEgaDJdIGhhcyBhcyBrZXlzIHRoZSBzZXQgb2YgYWxsIFtrXSBpbiB0aGUgdW5pb24gb2YgdGhlXG4gICAgICBzZXRzIG9mIGtleXMgb2YgW2gxXSBhbmQgW2gyXSBmb3Igd2hpY2ggW2QoayldIGlzIG5vdCBOb25lLCB3aGVyZTpcblxuICAgICAgZChrKSA9XG4gICAgICAtIFtmIH5rZXk6ayAoYExlZnQgZDEpXVxuICAgICAgICBpZiBba10gaW4gW2gxXSBtYXBzIHRvIGQxLCBhbmQgW2gyXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBSaWdodCBkMildXG4gICAgICAgIGlmIFtrXSBpbiBbaDJdIG1hcHMgdG8gZDIsIGFuZCBbaDFdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYEJvdGggKGQxLCBkMikpXVxuICAgICAgICBvdGhlcndpc2UsIHdoZXJlIFtrXSBpbiBbaDFdIG1hcHMgdG8gW2QxXSBhbmQgW2tdIGluIFtoMl0gbWFwcyB0byBbZDJdLlxuXG4gICAgICBFYWNoIGtleSBba10gaXMgbWFwcGVkIHRvIGEgc2luZ2xlIHBpZWNlIG9mIGRhdGEgW3hdLCB3aGVyZSBbZChrKSA9IFNvbWUgeF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fSAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICdhKSB0XG4gICAgLT4gKCdrLCAnYikgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYiB8IGBCb3RoIG9mICdhICogJ2IgXSAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdrLCAnYykgdFxuXG5cbiAgKCoqIEV2ZXJ5IFtrZXldIGluIFtzcmNdIHdpbGwgYmUgcmVtb3ZlZCBvciBzZXQgaW4gW2RzdF0gYWNjb3JkaW5nIHRvIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIG9mIFtmXS4gKilcbiAgdmFsIG1lcmdlX2ludG9cbiAgICA6ICBzcmM6KCdrLCAnYSkgdFxuICAgIC0+IGRzdDooJ2ssICdiKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiAnYSAtPiAnYiBvcHRpb24gLT4gJ2IgTWVyZ2VfaW50b19hY3Rpb24udClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGtleXMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGF0YSBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG5cbiAgKCoqIFtmaWx0ZXJfaW5wbGFjZSB0IH5mXSByZW1vdmVzIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBbdF0gdGhhdCBkb24ndCBzYXRpc2Z5IFtmXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzX2lucGxhY2UgOiAoJ2EsIF8pIHQgLT4gZjooJ2Ega2V5IC0+IGJvb2wpIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gdW5pdFxuICB2YWwgZmlsdGVyaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gdW5pdFxuXG4gICgqKiBbbWFwX2lucGxhY2UgdCB+Zl0gYXBwbGllcyBbZl0gdG8gYWxsIGVsZW1lbnRzIGluIFt0XSwgdHJhbnNmb3JtaW5nIHRoZW0gaW5cbiAgICAgIHBsYWNlLiAqKVxuICB2YWwgbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gJ2IpIC0+IHVuaXRcblxuICB2YWwgbWFwaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2IpIC0+IHVuaXRcblxuICAoKiogW2ZpbHRlcl9tYXBfaW5wbGFjZV0gY29tYmluZXMgdGhlIGVmZmVjdHMgb2YgW21hcF9pbnBsYWNlXSBhbmQgW2ZpbHRlcl9pbnBsYWNlXS4gKilcbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiAnYiBvcHRpb24pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX21hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gICgqKiBbZXF1YWwgZiB0MSB0Ml0gYW5kIFtzaW1pbGFyIGYgdDEgdDJdIGJvdGggcmV0dXJuIHRydWUgaWZmIFt0MV0gYW5kIFt0Ml0gaGF2ZSB0aGVcbiAgICAgIHNhbWUga2V5cyBhbmQgZm9yIGFsbCBrZXlzIFtrXSwgW2YgKGZpbmRfZXhuIHQxIGspIChmaW5kX2V4biB0MiBrKV0uICBbZXF1YWxdIGFuZFxuICAgICAgW3NpbWlsYXJdIG9ubHkgZGlmZmVyIGluIHRoZWlyIHR5cGVzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcblxuICB2YWwgc2ltaWxhciA6ICgnYjEgLT4gJ2IyIC0+IGJvb2wpIC0+ICgnYSwgJ2IxKSB0IC0+ICgnYSwgJ2IyKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgKGtleSwgZGF0YSkgcGFpcnMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIHRvX2FsaXN0IDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIGxpc3RcblxuXG4gICgqKiBbcmVtb3ZlX2lmX3plcm9dJ3MgZGVmYXVsdCBpcyBbZmFsc2VdLiAqKVxuICB2YWwgaW5jciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICB2YWwgZGVjciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNdWx0aSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICAoKiogW2FkZF9tdWx0aSB0IH5rZXkgfmRhdGFdIGlmIFtrZXldIGlzIHByZXNlbnQgaW4gdGhlIHRhYmxlIHRoZW4gY29uc1xuICAgICAgW2RhdGFdIG9uIHRoZSBsaXN0LCBvdGhlcndpc2UgYWRkIFtrZXldIHdpdGggYSBzaW5nbGUgZWxlbWVudCBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtyZW1vdmVfbXVsdGkgdCBrZXldIHVwZGF0ZXMgdGhlIHRhYmxlLCByZW1vdmluZyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBib3VuZCB0b1xuICAgICAgW2tleV0uIElmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50IChvciBpcyBlbXB0eSkgdGhlbiB0aGUgYmluZGluZyBpc1xuICAgICAgcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgXyBsaXN0KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIFtmaW5kX211bHRpIHQga2V5XSByZXR1cm5zIHRoZSBlbXB0eSBsaXN0IGlmIFtrZXldIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0YWJsZSxcbiAgICAgIHJldHVybnMgW3RdJ3MgdmFsdWVzIGZvciBba2V5XSBvdGhlcndpc2UuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIGtleSAtPiAnYiBsaXN0XG5lbmRcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICdrZXkgS2V5LnRcbiAgLT4gJ3pcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICd6XG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlIDogKCdhIGtleSwgJ2IsIHVuaXQgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogKCdhIGtleSwgJ2IgbGlzdCwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KVxuICAgICAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfd2l0aF9rZXkgfmdldF9rZXkgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIHgxOyAuLi47IGdldF9rZXkgeG4sIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX3dpdGhfa2V5XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogKCdhIGtleSwgJ3IsIGdldF9rZXk6KCdyIC0+ICdhIGtleSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIGdyb3VwXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAgICAgLT4gY29tYmluZTooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gKCdhLCAnYikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgKCoqIHsyIENyZWF0b3JzfSAqKVxuXG4gICgqKiBUaGUgbW9kdWxlIHlvdSBwYXNzIHRvIFtjcmVhdGVdIG11c3QgaGF2ZSBhIHR5cGUgdGhhdCBpcyBoYXNoYWJsZSwgc2V4cGFibGUsIGFuZFxuICAgICAgY29tcGFyYWJsZS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpOztcbiAgICAgICAgLSA6IChpbnQsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPjs7XG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygzLCBcInNvbWV0aGluZ1wiKTsgKDIsIFwid2hhdGV2ZXJcIildXG4gICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIFdoZXJlYXMgW29mX2FsaXN0XSB3aWxsIHJlcG9ydCBbRHVwbGljYXRlX2tleV0gbm8gbWF0dGVyIGhvdyBtYW55IGR1cHMgdGhlcmUgYXJlIGluXG4gICAgICB5b3VyIGxpc3QsIFtvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNdIHdpbGwgcmVwb3J0IGVhY2ggYW5kIGV2ZXJ5IGR1cGxpY2F0ZSBlbnRyeS5cblxuICAgICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleSAxXG5cbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleXMgWzE7IDJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBDcmVhdGVzIGEge3shTXVsdGl9IFwibXVsdGlcIn0gaGFzaHRhYmxlLCBpLmUuLCBhIGhhc2h0YWJsZSB3aGVyZSBlYWNoIGtleSBwb2ludHMgdG8gYVxuICAgICAgbGlzdCBwb3RlbnRpYWxseSBjb250YWluaW5nIG11bHRpcGxlIHZhbHVlcy4gU28gaW5zdGVhZCBvZiBzaG9ydC1jaXJjdWl0aW5nIHdpdGggYVxuICAgICAgW2BEdXBsaWNhdGVfa2V5XSB2YXJpYW50IG9uIGR1cGxpY2F0ZXMsIGFzIGluIFtvZl9hbGlzdF0sIFtvZl9hbGlzdF9tdWx0aV0gZm9sZHNcbiAgICAgIHRob3NlIHZhbHVlcyBpbnRvIGEgbGlzdCBmb3IgdGhlIGdpdmVuIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIEludCkgWygxLCBcImFcIik7ICgxLCBcImJcIik7ICgyLCBcImNcIik7ICgyLCBcImRcIildOztcbiAgICAgIHZhbCBoIDogKGludCwgc3RyaW5nIGxpc3QpIEhhc2h0YmwudCA9IDxhYnN0cj5cblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgLSA6IHN0cmluZyBsaXN0ID0gW1wiYlwiOyBcImFcIl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0KSB0XG5cbiAgKCoqIEFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnciBsaXN0XSB0byBjcmVhdGUgdGhlXG4gICAgICBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUuXG5cbiAgICAgIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dXG4gICAgICBdfVxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgSGFzaHRibC5jcmVhdGVfbWFwcGVkIChtb2R1bGUgSW50KVxuICAgICAgICAgICAgfmdldF9rZXk6KGZ1biB4IC0+IHgpXG4gICAgICAgICAgICB+Z2V0X2RhdGE6KGZ1biB4IC0+IHggKyAxKVxuICAgICAgICAgICBbMTsgMjsgM107O1xuICAgICAgICB2YWwgaCA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIGludCkgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuXG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBtYXRjaCBoIHdpdGhcbiAgICAgICAgICB8IGBPayB4IC0+IHhcbiAgICAgICAgICB8IGBEdXBsaWNhdGVfa2V5cyBfIC0+IGZhaWx3aXRoIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgICAtIDogaW50ID0gMlxuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHRcblxuICAoKiogTGlrZSBbY3JlYXRlX21hcHBlZF0sIGFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnclxuICAgICAgbGlzdF0gdG8gY3JlYXRlIHRoZSBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUgLS1cbiAgICAgIGFuZCB0aGVuLCBsaWtlIFthZGRfbXVsdGldLCBmb2xkcyB0b2dldGhlciB2YWx1ZXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGtleXMuIEhlcmUsXG4gICAgICB0aG91Z2gsIHRoZSBmdW5jdGlvbiB1c2VkIGZvciB0aGUgZm9sZGluZyBpcyBnaXZlbiBieSBbY29tYmluZV0gKGluc3RlYWQgb2YganVzdFxuICAgICAgYmVpbmcgYSBbY29uc10pLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5ncm91cCAobW9kdWxlIEludClcbiAgICAgICAgICAgfmdldF9rZXk6KGZ1biB4IC0+IHggLyAyKVxuICAgICAgICAgICB+Z2V0X2RhdGE6KGZ1biB4IC0+IHgpXG4gICAgICAgICAgIH5jb21iaW5lOihmdW4geCB5IC0+IHggKiB5KVxuICAgICAgICAgICAgWyAxOyAyOyAzOyA0XVxuICAgICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoMiwgNCk7ICgxLCA2KTsgKDAsIDEpXVxuICAgICAgIHZ9ICopXG4gIHZhbCBncm91cFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAtPiBjb21iaW5lOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gc2lnXG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcblxuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogV2UgcHJvdmlkZSBhIFtzZXhwX29mX3RdIGJ1dCBub3QgYSBbdF9vZl9zZXhwXSBmb3IgdGhpcyB0eXBlIGJlY2F1c2Ugb25lIG5lZWRzIHRvIGJlXG4gICAgICBleHBsaWNpdCBhYm91dCB0aGUgaGFzaCBhbmQgY29tcGFyaXNvbiBmdW5jdGlvbnMgdXNlZCB3aGVuIGNyZWF0aW5nIGEgaGFzaHRhYmxlLlxuICAgICAgTm90ZSB0aGF0IFtIYXNodGJsLlBvbHkudF0gZG9lcyBoYXZlIFtbQEBkZXJpdmluZyBzZXhwXV0sIGFuZCB1c2VzIE9DYW1sJ3MgYnVpbHQtaW5cbiAgICAgIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYW5kIGFuZCBwb2x5bW9ycGhpYyBoYXNoaW5nLiAqKVxuICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwLnRcblxuICBpbmNsdWRlIENyZWF0b3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgKCoqIEBpbmxpbmUgKilcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAoKiogQGlubGluZSAqKVxuXG5cbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICgqKiBAaW5saW5lICopXG5cbiAgdmFsIGhhc2hhYmxlX3MgOiAoJ2tleSwgXykgdCAtPiAna2V5IEtleS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIGhhc2hhYmxlIDogJ2EgSGFzaGFibGUudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2ssICd2KSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2h0YmwgPSBzaWdcbiAgKCoqIEEgaGFzaCB0YWJsZSBpcyBhIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgaW1wbGVtZW50aW5nIGEgbWFwIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzLlxuICAgICAgSXQgc3VwcG9ydHMgY29uc3RhbnQtdGltZSBsb29rdXAgYW5kIGluLXBsYWNlIG1vZGlmaWNhdGlvbi5cblxuICAgICAgezEgVXNhZ2V9XG5cbiAgICAgIEFzIGEgc2ltcGxlIGV4YW1wbGUsIHdlJ2xsIGNyZWF0ZSBhIGhhc2ggdGFibGUgd2l0aCBzdHJpbmcga2V5cyB1c2luZyB0aGVcbiAgICAgIHt7IWNyZWF0ZX1bY3JlYXRlXX0gY29uc3RydWN0b3IsIHdoaWNoIGV4cGVjdHMgYSBtb2R1bGUgZGVmaW5pbmcgdGhlIGtleSdzIHR5cGU6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBoID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBTdHJpbmcpOztcbiAgICAgICAgdmFsIGggOiAoc3RyaW5nLCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj5cbiAgICAgIF19XG5cbiAgICAgIFdlIGNhbiBzZXQgdGhlIHZhbHVlcyBvZiBpbmRpdmlkdWFsIGtleXMgd2l0aCB7eyFzZXR9W3NldF19LiBJZiB0aGUga2V5IGFscmVhZHkgaGFzXG4gICAgICBhIHZhbHVlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6NTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJiYXJcIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9XG5cbiAgICAgIFdlIGNhbiBhY2Nlc3MgdmFsdWVzIGJ5IGtleSwgb3IgZHVtcCBhbGwgb2YgdGhlIGhhc2ggdGFibGUncyBkYXRhOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5maW5kIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50IG9wdGlvbiA9IFNvbWUgNlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50ID0gNlxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDYpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG4gICAgICB7eyFjaGFuZ2V9W2NoYW5nZV19IGxldHMgdXMgY2hhbmdlIGEga2V5J3MgdmFsdWUgYnkgYXBwbHlpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5jaGFuZ2UgaCBcImZvb1wiIChmdW4geCAtPlxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IFNvbWUgKHggKiAyKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICApOztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCAxMik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cblxuICAgICAgV2UgY2FuIHVzZSB7eyFtZXJnZX1bbWVyZ2VdfSB0byBtZXJnZSB0d28gaGFzaHRhYmxlcyB3aXRoIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXJcbiAgICAgIGhvdyB3ZSBjaG9vc2UgdmFsdWVzIHdoZW4gYSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZmlyc3QgKFwibGVmdFwiKSBoYXNodGFibGUsIHRoZVxuICAgICAgc2Vjb25kIChcInJpZ2h0XCIpLCBvciBib3RoLiBIZXJlLCB3ZSdsbCBjb25zIHRoZSB2YWx1ZXMgd2hlbiBib3RoIGhhc2h0YWJsZXMgaGF2ZSBhXG4gICAgICBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fVxuXG4gICAgICB7MSBJbnRlcmZhY2V9ICopXG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3VibW9kdWxlcyAoKiogQGlubGluZSAqKVxuXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IEFjY2Vzc29yc1xuICBtb2R1bGUgdHlwZSBDcmVhdG9ycyA9IENyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIE11bHRpID0gTXVsdGlcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gU193aXRob3V0X3N1Ym1vZHVsZXNcbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBNZXJnZV9pbnRvX2FjdGlvblxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID0gKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICBtb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuICBlbmRcblxuICBtb2R1bGUgUG9seSA6IFNfcG9seSB3aXRoIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSBpbnQgSGFzaHRibC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gKFN0cmluZy50LCBpbnQpIEhhc2h0YmwudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBIYXNodGJsLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kXG4gICAgICBzeW50YXggZG9lc24ndCAoYmVjYXVzZSBbdF9vZl9zZXhwXSBkb2Vzbid0IGtub3cgd2hhdCBjb21wYXJpc29uL2hhc2ggZnVuY3Rpb24gdG9cbiAgICAgIHVzZSkuICopXG4gIG1vZHVsZSBNIChLIDogVC5UKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBTZWUgdGhlIEphbmUgU3RyZWV0IFN0eWxlIEd1aWRlIGZvciBhbiBleHBsYW5hdGlvbiBvZiBbUHJpdmF0ZV0gc3VibW9kdWxlczpcblxuICAgIGh0dHBzOi8vb3BlbnNvdXJjZS5qYW5lc3RyZWV0LmNvbS9zdGFuZGFyZHMvI3ByaXZhdGUtc3VibW9kdWxlcyAqKVxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG5cbiAgICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogKCdrZXksIF8pIHQgLT4gJ2tleSBIYXNoYWJsZS50XG4gIGVuZFxuZW5kXG4iLCIoKiBBIGZldyBzbWFsbCB0aGluZ3MgY29waWVkIGZyb20gb3RoZXIgcGFydHMgb2YgQmFzZSBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHVzLCBzbyB3ZVxuICAgY2FuJ3QgdXNlIHRoZW0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG4oKiBJdHMgaW1wb3J0YW50IHRoYXQgRW1wdHkgaGF2ZSBubyBhcmdzLiBJdCdzIHRlbXB0aW5nIHRvIG1ha2UgdGhpcyB0eXBlIGEgcmVjb3JkXG4gICAoZS5nLiB0byBob2xkIHRoZSBjb21wYXJlIGZ1bmN0aW9uKSwgYnV0IGEgbG90IG9mIG1lbW9yeSBpcyBzYXZlZCBieSBFbXB0eSBiZWluZyBhblxuICAgaW1tZWRpYXRlLCBzaW5jZSBhbGwgdW51c2VkIGJ1Y2tldHMgaW4gdGhlIGhhc2h0YmwgZG9uJ3QgdXNlIGFueSBtZW1vcnkgKGJlc2lkZXMgdGhlXG4gICBhcnJheSBjZWxsKSAqKVxudHlwZSAoJ2ssICd2KSB0ID1cbiAgfCBFbXB0eVxuICB8IE5vZGUgb2ZcbiAgICAgIHsgbXV0YWJsZSBsZWZ0IDogKCdrLCAndikgdFxuICAgICAgOyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSByaWdodCA6ICgnaywgJ3YpIHRcbiAgICAgIH1cbiAgfCBMZWFmIG9mXG4gICAgICB7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgfVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBoZWlnaHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQ7IHJpZ2h0ID0gXyB9IC0+IGhlaWdodFxuOztcblxubGV0IGludmFyaWFudCBjb21wYXJlID1cbiAgbGV0IGxlZ2FsX2xlZnRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIGxlZnRfa2V5IGtleSA8IDApXG4gIGluXG4gIGxldCBsZWdhbF9yaWdodF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSByaWdodF9rZXkga2V5ID4gMClcbiAgaW5cbiAgbGV0IHJlYyBpbnYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gKClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrOyB2YWx1ZSA9IF87IGhlaWdodCA9IGg7IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBobCwgaHIgPSBoZWlnaHQgbGVmdCwgaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpbnYgbGVmdDtcbiAgICAgIGludiByaWdodDtcbiAgICAgIGxlZ2FsX2xlZnRfa2V5IGsgbGVmdDtcbiAgICAgIGxlZ2FsX3JpZ2h0X2tleSBrIHJpZ2h0O1xuICAgICAgYXNzZXJ0IChoID0gSW50Lm1heCBobCBociArIDEpO1xuICAgICAgYXNzZXJ0IChhYnMgKGhsIC0gaHIpIDw9IDIpXG4gIGluXG4gIGludlxuOztcblxubGV0IGludmFyaWFudCB0IH5jb21wYXJlID0gaW52YXJpYW50IGNvbXBhcmUgdFxuXG4oKiBJbiB0aGUgZm9sbG93aW5nIGNvbW1lbnRzLFxuICAgJ3QgaXMgYmFsYW5jZWQnIG1lYW5zIHRoYXQgJ2ludmFyaWFudCB0JyBkb2VzIG5vdFxuICAgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhpcyBpbXBsaWVzIG9mIGNvdXJzZSB0aGF0IGVhY2ggbm9kZSdzIGhlaWdodCBmaWVsZCBpc1xuICAgY29ycmVjdC5cbiAgICd0IGlzIGJhbGFuY2VhYmxlJyBtZWFucyB0aGF0IGhlaWdodCBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgb2YgdFxuICAgZGlmZmVyIGJ5IGF0IG1vc3QgMy4gKilcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgaGF2ZSBjb3JyZWN0IGhlaWdodHNcbiAgIEBwb3N0OiBvdXRwdXQgaGFzIHRoZSBjb3JyZWN0IGhlaWdodCAqKVxubGV0IHVwZGF0ZV9oZWlnaHQgPSBmdW5jdGlvblxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBvbGRfaGVpZ2h0OyByaWdodCB9IGFzIHgpIC0+XG4gICAgbGV0IG5ld19oZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgbGVmdCkgKGhlaWdodCByaWdodCkgKyAxIGluXG4gICAgaWYgbmV3X2hlaWdodCA8PiBvbGRfaGVpZ2h0IHRoZW4geC5oZWlnaHQgPC0gbmV3X2hlaWdodFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgYXJlIGJhbGFuY2VkXG4gICBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcG9zdDogb3V0cHV0IGlzIGJhbGFuY2VkIChpbiBwYXJ0aWN1bGFyLCBoZWlnaHQgaXMgY29ycmVjdCkgKilcbmxldCBiYWxhbmNlIHRyZWUgPVxuICBtYXRjaCB0cmVlIHdpdGhcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiB0cmVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcm9vdF9ub2RlKSAtPlxuICAgIGxldCBobCA9IGhlaWdodCBsZWZ0XG4gICAgYW5kIGhyID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgKCogKyAyIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50LCBsb3dlcmluZyBpdCB0byAxIHdpbGwgYnJlYWsgdGhlIExlYWZcbiAgICAgICBhc3N1bXB0aW9ucyBpbiB0aGUgY29kZSBiZWxvdywgYW5kIHdpbGwgZm9yY2UgdXMgdG8gcHJvbW90ZSBsZWFmIG5vZGVzIGluXG4gICAgICAgdGhlIGJhbGFuY2Ugcm91dGluZS4gSXQncyBhbHNvIGZhc3Rlciwgc2luY2UgaXQgd2lsbCBiYWxhbmNlIGxlc3Mgb2Z0ZW4uXG4gICAgICAgTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSBpcyBkZWxpY2F0ZS4gIFRoZSB1cGRhdGVfaGVpZ2h0IGNhbGxzIG11c3RcbiAgICAgICBvY2N1ciBpbiB0aGUgY29ycmVjdCBvcmRlciwgc2luY2UgdXBkYXRlX2hlaWdodCBhc3N1bWVzIGl0cyBjaGlsZHJlbiBoYXZlXG4gICAgICAgdGhlIGNvcnJlY3QgaGVpZ2h0cy4gICopXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgKCogSXQgY2Fubm90IGJlIGEgbGVhZiwgYmVjYXVzZSBldmVuIGlmIHJpZ2h0IGlzIGVtcHR5LCBhIGxlYWZcbiAgICAgICAgIGlzIG9ubHkgaGVpZ2h0IDEgKilcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gbGVmdF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgbGVmdF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGVmdF9ub2RlX2xlZnQgPj0gaGVpZ2h0IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUubGVmdCA8LSBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICBsZWZ0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBpZiByaWdodCBpcyBhIGxlYWYsIHRoZW4gbGVmdCBtdXN0IGJlIGVtcHR5LiBUaGF0IG1lYW5zXG4gICAgICAgICAgICAgaGVpZ2h0IGlzIDIuIEV2ZW4gaWYgaHIgaXMgZW1wdHkgd2Ugc3RpbGwgY2FuJ3QgZ2V0IGhlcmUuICopXG4gICAgICAgICAgbWF0Y2ggbGVmdF9ub2RlX3JpZ2h0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gbHJfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IGxyX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIGxyX25vZGUpIC0+XG4gICAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gbHJfbGVmdDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxyX3JpZ2h0O1xuICAgICAgICAgICAgbHJfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgICAgbHJfbm9kZS5sZWZ0IDwtIGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICAgIGxlZnRfbm9kZV9yaWdodCkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgcmlnaHQgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gcmlnaHRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIHJpZ2h0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCByaWdodF9ub2RlX3JpZ2h0ID49IGhlaWdodCByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICByaWdodClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICAgICAgbWF0Y2ggcmlnaHRfbm9kZV9sZWZ0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gcmxfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHJsX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIHJsX25vZGUpIC0+XG4gICAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gcmxfcmlnaHQ7XG4gICAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmxfbGVmdDtcbiAgICAgICAgICAgIHJsX25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgICAgcmxfbm9kZS5yaWdodCA8LSByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICAgIHJpZ2h0X25vZGVfbGVmdCkpXG4gICAgZWxzZSAoXG4gICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICB0cmVlKVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9sZWZ0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgbGVmdCB0cmVlIHRoZW4gKCkgZWxzZSByLmxlZnQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKGxlZnQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfcmlnaHQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCByaWdodCB0cmVlIHRoZW4gKCkgZWxzZSByLnJpZ2h0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHQgaXMgYmFsYW5jZWQuXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VkLCB3aXRoIG5ldyBub2RlIGluc2VydGVkXG4gICBAcG9zdDogIWFkZGVkID0gdHJ1ZSBpZmYgdGhlIHNoYXBlIG9mIHRoZSBpbnB1dCB0cmVlIGNoYW5nZWQuICAqKVxubGV0IGFkZCA9XG4gIGxldCByZWMgYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTGVhZiAoeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrJyBrIGluXG4gICAgICAoKiBUaGlzIGNvbXBhcmUgaXMgcmV2ZXJzZWQgb24gcHVycG9zZSwgd2UgYXJlIHByZXRlbmRpbmdcbiAgICAgICAgIHRoYXQgdGhlIGxlYWYgd2FzIGp1c3QgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0aGUgb3RoZXIgd2F5XG4gICAgICAgICByb3VuZCwgdGhhdCB3YXkgd2Ugb25seSBhbGxvY2F0ZSBvbmUgbm9kZS4gKilcbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHY7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBOb2RlIHsgbGVmdCA9IHQ7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSBFbXB0eSB9XG4gICAgICAgIGVsc2UgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IHQgfSlcbiAgICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHYpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIHNldF9sZWZ0IHQgKGFkZCBsZWZ0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpXG4gICAgICBlbHNlIHNldF9yaWdodCB0IChhZGQgcmlnaHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdik7XG4gICAgICB0XG4gIGluXG4gIGZ1biB0IH5yZXBsYWNlIH5jb21wYXJlIH5hZGRlZCB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IHQgPSBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUga2V5IGRhdGEgaW5cbiAgICBpZiAhYWRkZWQgdGhlbiBiYWxhbmNlIHQgZWxzZSB0XG47O1xuXG5sZXQgcmVjIGZpcnN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gbDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBmaXJzdCBsXG47O1xuXG5sZXQgcmVjIGxhc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gciB9IC0+IGxhc3QgclxuOztcblxuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYyBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfbm90X2ZvdW5kXG4gID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZSBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZVxuICAgICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAoaWYgYyA8IDAgdGhlbiBsZWZ0IGVsc2UgcmlnaHQpXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIGtcbiAgICAgICAgYXJnMVxuICAgICAgICBhcmcyXG4gICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhICgpICgpID0gaWZfZm91bmQgZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhICgpICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnICgpID0gaWZfZm91bmQgZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSA9XG4gIGxldCBpZl9mb3VuZCBfID0gdHJ1ZSBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBmYWxzZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgcmVtb3ZlID1cbiAgbGV0IHJlYyBtaW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgXyAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IG1pbl9lbHQgbGVmdFxuICBpblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBMZWFmIF8gLT4gRW1wdHkgKCogVGhpcyBtdXN0IGJlIHRoZSByb290ICopXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT4gcmlnaHRcbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPlxuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIEVtcHR5O1xuICAgICAgdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSAocmVtb3ZlX21pbl9lbHQgbGVmdCk7XG4gICAgICB0cmVlXG4gIGluXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB0cmVlID0gbWluX2VsdCB0MiBpblxuICAgICAgKG1hdGNoIHRyZWUgd2l0aFxuICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICAgICAgIGxldCB0MiA9IGJhbGFuY2UgKHJlbW92ZV9taW5fZWx0IHQyKSBpblxuICAgICAgICAgTm9kZVxuICAgICAgICAgICB7IGxlZnQgPSB0MVxuICAgICAgICAgICA7IGtleSA9IGtcbiAgICAgICAgICAgOyB2YWx1ZSA9IHZcbiAgICAgICAgICAgOyBoZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgdDEpIChoZWlnaHQgdDIpICsgMVxuICAgICAgICAgICA7IHJpZ2h0ID0gdDJcbiAgICAgICAgICAgfVxuICAgICAgIHwgTm9kZSBfIGFzIG5vZGUgLT5cbiAgICAgICAgIHNldF9yaWdodCBub2RlIChyZW1vdmVfbWluX2VsdCB0Mik7XG4gICAgICAgICBzZXRfbGVmdCBub2RlIHQxO1xuICAgICAgICAgbm9kZSlcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgayA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgIEVtcHR5XG4gICAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gXyB9IC0+XG4gICAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBFbXB0eSlcbiAgICAgIGVsc2UgKFxuICAgICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgICB0KVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgbWVyZ2UgbGVmdCByaWdodClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzZXRfbGVmdCB0IChyZW1vdmUgbGVmdCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgc2V0X3JpZ2h0IHQgKHJlbW92ZSByaWdodCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gIGluXG4gIGZ1biB0IH5yZW1vdmVkIH5jb21wYXJlIGsgLT4gYmFsYW5jZSAocmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGspXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGluaXRcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGEgaW5pdFxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IEVtcHR5XG4gICAgICB9IC0+IGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBFbXB0eVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH0gfVxuICAgIC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfTsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH1cbiAgICAtPiBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKSB+ZlxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSkgfmZcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBpdGVyIGxlZnQgfmY7XG4gICAgZiB+a2V5IH5kYXRhO1xuICAgIGl0ZXIgcmlnaHQgfmZcbjs7XG5cbmxldCByZWMgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKHsga2V5OyB2YWx1ZSB9IGFzIHQpIC0+IHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXk7IHZhbHVlOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHQpIC0+XG4gICAgbWFwaV9pbnBsYWNlIH5mIGxlZnQ7XG4gICAgdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWU7XG4gICAgbWFwaV9pbnBsYWNlIH5mIHJpZ2h0XG47O1xuXG5sZXQgY2hvb3NlX2V4biA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0F2bHRyZWUuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlOyBfIH0gfCBOb2RlIHsga2V5OyB2YWx1ZTsgXyB9IC0+IGtleSwgdmFsdWVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaHRibF9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleS5TXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgaGFzaF9wYXJhbSA9IEhhc2hhYmxlLmhhc2hfcGFyYW1cbmxldCBoYXNoID0gSGFzaGFibGUuaGFzaFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbnR5cGUgKCdrLCAndikgdCA9XG4gIHsgbXV0YWJsZSB0YWJsZSA6ICgnaywgJ3YpIEF2bHRyZWUudCBhcnJheVxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtyZWNlbnRseV9hZGRlZF0gaXMgdGhlIHJlZmVyZW5jZSBwYXNzZWQgdG8gW0F2bHRyZWUuYWRkXS4gV2UgcHV0IGl0IGluIHRoZSBoYXNoXG4gICAgIHRhYmxlIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgYXQgZXZlcnkgW3NldF0uICopXG4gIDsgcmVjZW50bHlfYWRkZWQgOiBib29sIHJlZlxuICA7IGdyb3d0aF9hbGxvd2VkIDogYm9vbFxuICA7IGhhc2hhYmxlIDogJ2sgSGFzaGFibGUudFxuICA7IG11dGFibGUgbXV0YXRpb25fYWxsb3dlZCA6IGJvb2wgKCogU2V0IGR1cmluZyBhbGwgaXRlcmF0aW9uIG9wZXJhdGlvbnMgKilcbiAgfVxuXG50eXBlICdhIGtleSA9ICdhXG5cbmxldCBzZXhwX29mX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3RcbmxldCBjb21wYXJlX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlXG5cbmxldCBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0ID1cbiAgaWYgbm90IHQubXV0YXRpb25fYWxsb3dlZCB0aGVuIGZhaWx3aXRoIFwiSGFzaHRibDogbXV0YXRpb24gbm90IGFsbG93ZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG47O1xuXG5sZXQgd2l0aG91dF9tdXRhdGluZyB0IGYgPVxuICBpZiB0Lm11dGF0aW9uX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICB4XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHJhaXNlIGV4bilcbiAgZWxzZSBmICgpXG47O1xuXG4oKiogSW50ZXJuYWxseSB1c2UgYSBtYXhpbXVtIHNpemUgdGhhdCBpcyBhIHBvd2VyIG9mIDIuIFJldmVyc2VzIHRoZSBhYm92ZSB0byBmaW5kIHRoZVxuICAgIGZsb29yIHBvd2VyIG9mIDIgYmVsb3cgdGhlIHN5c3RlbSBtYXggYXJyYXkgbGVuZ3RoICopXG5sZXQgbWF4X3RhYmxlX2xlbmd0aCA9IEludC5mbG9vcl9wb3cyIEFycmF5Lm1heF9sZW5ndGhcblxuKCogVGhlIGRlZmF1bHQgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgMCAoYXMgb3Bwb3NlZCB0byAxMjggYXMgaXQgd2FzIGJlZm9yZSkgYmVjYXVzZTpcbiAgIC0gMTI4IGNhbiBjcmVhdGUgc3Vic3RhbnRpYWwgbWVtb3J5IG92ZXJoZWFkICh4MTApIHdoZW4gY3JlYXRpbmcgbWFueSB0YWJsZXMsIG1vc3RcbiAgICAgb2Ygd2hpY2ggYXJlIG5vdCBiaWcgKHNheSwgaWYgeW91IGhhdmUgYSBoYXNodGJsIG9mIGhhc2h0YmwpLiBBbmQgbWVtb3J5IG92ZXJoZWFkIGlzXG4gICAgIG5vdCB0aGF0IGVhc3kgdG8gcHJvZmlsZS5cbiAgIC0gaWYgYSBoYXNodGJsIGlzIGdvaW5nIHRvIGdyb3csIGl0J3Mgbm90IGNsZWFyIHdoeSAxMjggaXMgbWFya2VkbHkgYmV0dGVyIHRoYW4gb3RoZXJcbiAgICAgc2l6ZXMgKGlmIHlvdSBnb2luZyB0byBzdGljayAxMDAwIGVsZW1lbnRzLCB5b3UncmUgZ29pbmcgdG8gZ3JvdyB0aGUgaGFzaHRhYmxlIG9uY2VcbiAgICAgb3IgdHdpY2UgYW55d2F5KVxuICAgLSBpbiBvdGhlciBsYW5ndWFnZXMgKGxpa2UgcnVzdCwgcHl0aG9uLCBhbmQgYXBwYXJlbnRseSBnbyksIHRoZSBkZWZhdWx0IGlzIGFsc28gYVxuICAgICBzbWFsbCBzaXplLiAqKVxubGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMCkgfmhhc2hhYmxlICgpID1cbiAgbGV0IHNpemUgPSBJbnQubWluIChJbnQubWF4IDEgc2l6ZSkgbWF4X3RhYmxlX2xlbmd0aCBpblxuICBsZXQgc2l6ZSA9IEludC5jZWlsX3BvdzIgc2l6ZSBpblxuICB7IHRhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBBdmx0cmVlLmVtcHR5XG4gIDsgbGVuZ3RoID0gMFxuICA7IGdyb3d0aF9hbGxvd2VkXG4gIDsgcmVjZW50bHlfYWRkZWQgPSByZWYgZmFsc2VcbiAgOyBoYXNoYWJsZVxuICA7IG11dGF0aW9uX2FsbG93ZWQgPSB0cnVlXG4gIH1cbjs7XG5cbigqKiBTdXBwbGVtZW50YWwgaGFzaC4gVGhpcyBtYXkgbm90IGJlIG5lY2Vzc2FyeSwgaXQgaXMgaW50ZW5kZWQgYXMgYSBkZWZlbnNlIGFnYWluc3QgcG9vclxuICAgIGhhc2ggZnVuY3Rpb25zLCBmb3Igd2hpY2ggdGhlIHBvd2VyIG9mIDIgc2l6ZWQgdGFibGUgd2lsbCBiZSBlc3BlY2lhbGx5IHNlbnNpdGl2ZS5cbiAgICBXaXRoIHNvbWUgdGVzdGluZyB3ZSBtYXkgY2hvb3NlIHRvIGFkZCBpdCwgYnV0IHRoaXMgdGFibGUgaXMgZGVzaWduZWQgdG8gYmUgcm9idXN0IHRvXG4gICAgY29sbGlzaW9ucywgYW5kIGluIG1vc3Qgb2YgbXkgdGVzdGluZyB0aGlzIGRlZ3JhZGVzIHBlcmZvcm1hbmNlLiAqKVxubGV0IF9zdXBwbGVtZW50YWxfaGFzaCBoID1cbiAgbGV0IGggPSBoIGx4b3IgKChoIGxzciAyMCkgbHhvciAoaCBsc3IgMTIpKSBpblxuICBoIGx4b3IgKGggbHNyIDcpIGx4b3IgKGggbHNyIDQpXG47O1xuXG5sZXQgc2xvdCB0IGtleSA9XG4gIGxldCBoYXNoID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5oYXNoIGtleSBpblxuICAoKiB0aGlzIGlzIGFsd2F5cyBub24tbmVnYXRpdmUgYmVjYXVzZSB3ZSBkbyBbbGFuZF0gd2l0aCBub24tbmVnYXRpdmUgbnVtYmVyICopXG4gIGhhc2ggbGFuZCAoQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxKVxuOztcblxubGV0IGFkZF93b3JrZXIgdCB+cmVwbGFjZSB+a2V5IH5kYXRhID1cbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkID0gdC5yZWNlbnRseV9hZGRlZCBpblxuICBhZGRlZCA6PSBmYWxzZTtcbiAgbGV0IG5ld19yb290ID1cbiAgICAoKiBUaGUgYXZsIHRyZWUgbWlnaHQgcmVwbGFjZSB0aGUgdmFsdWUgW3JlcGxhY2U9dHJ1ZV0gb3IgZG8gbm90aGluZyBbcmVwbGFjZT1mYWxzZV1cbiAgICAgICB0byB0aGUgZW50cnksIGluIHRoYXQgY2FzZSB0aGUgdGFibGUgZGlkIG5vdCBnZXQgYmlnZ2VyLCBzbyB3ZSBzaG91bGQgbm90XG4gICAgICAgaW5jcmVtZW50IGxlbmd0aCwgd2UgcGFzcyBpbiB0aGUgYm9vbCByZWYgdC5hZGRlZCBzbyB0aGF0IGl0IGNhbiB0ZWxsIHVzIHdoZXRoZXJcbiAgICAgICBpdCBhZGRlZCBvciByZXBsYWNlZC4gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbi4gU2luY2UgdGhlIGJvb2xcbiAgICAgICBpcyBhbiBpbW1lZGlhdGUgaXQgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgd3JpdGUgYmFycmllci4gKilcbiAgICBBdmx0cmVlLmFkZCB+cmVwbGFjZSByb290IH5jb21wYXJlOihjb21wYXJlX2tleSB0KSB+YWRkZWQgfmtleSB+ZGF0YVxuICBpblxuICBpZiAhYWRkZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICgqIFRoaXMgbGl0dGxlIG9wdGltaXphdGlvbiBzYXZlcyBhIGNhbWxfbW9kaWZ5IHdoZW4gdGhlIHRyZWVcbiAgICAgaGFzbid0IGJlZW4gcmViYWxhbmNlZC4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIG5ld19yb290IHJvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Rcbjs7XG5cbmxldCBtYXliZV9yZXNpemVfdGFibGUgdCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICBsZXQgc2hvdWxkX2dyb3cgPSB0Lmxlbmd0aCA+IGxlbiBpblxuICBpZiBzaG91bGRfZ3JvdyAmJiB0Lmdyb3d0aF9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyYXlfbGVuZ3RoID0gSW50Lm1pbiAobGVuICogMikgbWF4X3RhYmxlX2xlbmd0aCBpblxuICAgIGlmIG5ld19hcnJheV9sZW5ndGggPiBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpuZXdfYXJyYXlfbGVuZ3RoIEF2bHRyZWUuZW1wdHkgaW5cbiAgICAgIGxldCBvbGRfdGFibGUgPSB0LnRhYmxlIGluXG4gICAgICB0LnRhYmxlIDwtIG5ld190YWJsZTtcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgZiB+a2V5IH5kYXRhID0gYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvbGRfdGFibGUgLSAxIGRvXG4gICAgICAgIEF2bHRyZWUuaXRlciBvbGRfdGFibGUuKGkpIH5mXG4gICAgICBkb25lKSlcbjs7XG5cbmxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YTtcbiAgbWF5YmVfcmVzaXplX3RhYmxlIHRcbjs7XG5cbmxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgYWRkX3dvcmtlciB+cmVwbGFjZTpmYWxzZSB0IH5rZXkgfmRhdGE7XG4gIGlmICEodC5yZWNlbnRseV9hZGRlZClcbiAgdGhlbiAoXG4gICAgbWF5YmVfcmVzaXplX3RhYmxlIHQ7XG4gICAgYE9rKVxuICBlbHNlIGBEdXBsaWNhdGVcbjs7XG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICB8IGBPayAtPiAoKVxuICB8IGBEdXBsaWNhdGUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleSB0IGluXG4gICAgbGV0IGVycm9yID0gRXJyb3IuY3JlYXRlIFwiSGFzaHRibC5hZGRfZXhuIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIga2V5IHNleHBfb2Zfa2V5IGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIHQudGFibGUuKGkpIDwtIEF2bHRyZWUuZW1wdHlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gMFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDIgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMlxuICAgICAgdHJlZVxuICAgICAgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gICAgICBrZXlcbiAgICAgIH5hXG4gICAgICB+YlxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQga2V5IC0+IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBmYWxzZVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gXyB9IC0+IGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwXG4gIHwgdHJlZSAtPiBBdmx0cmVlLm1lbSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWRfb3JfcmVtb3ZlZCA9IHQucmVjZW50bHlfYWRkZWQgaW5cbiAgYWRkZWRfb3JfcmVtb3ZlZCA6PSBmYWxzZTtcbiAgbGV0IG5ld19yb290ID1cbiAgICBBdmx0cmVlLnJlbW92ZSByb290IH5yZW1vdmVkOmFkZGVkX29yX3JlbW92ZWQgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuICBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgcm9vdCBuZXdfcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgaWYgIWFkZGVkX29yX3JlbW92ZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBhY2MgOj0gZiB+a2V5IH5kYXRhICFhY2NcbiAgICAgICAgfCBidWNrZXQgLT4gYWNjIDo9IEF2bHRyZWUuZm9sZCBidWNrZXQgfmluaXQ6IWFjYyB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgICFhY2NcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgICAgICAgfCBidWNrZXQgLT4gQXZsdHJlZS5pdGVyIGJ1Y2tldCB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+IHQubXV0YXRpb25fYWxsb3dlZCA8LSBtXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBpdGVyX2tleXMgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpXG5cbmxldCByZWMgY2hvb3NlX25vbmVtcHR5IHRhYmxlIGkgPVxuICBsZXQgYXZsdHJlZSA9IHRhYmxlLihpKSBpblxuICBpZiBBdmx0cmVlLmlzX2VtcHR5IGF2bHRyZWVcbiAgdGhlbiBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgKGkgKyAxKVxuICBlbHNlIEF2bHRyZWUuY2hvb3NlX2V4biBhdmx0cmVlXG47O1xuXG5sZXQgY2hvb3NlX2V4biB0ID1cbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMFxuOztcblxubGV0IGNob29zZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgaW52YXJpYW50X2RhdGEgdCA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICBBdmx0cmVlLmludmFyaWFudCB0LnRhYmxlLihpKSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgZG9uZTtcbiAgbGV0IHJlYWxfbGVuID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgaSAtPlxuICAgICAgaW52YXJpYW50X2tleSBrZXk7XG4gICAgICBpbnZhcmlhbnRfZGF0YSBkYXRhO1xuICAgICAgaSArIDEpXG4gIGluXG4gIGFzc2VydCAocmVhbF9sZW4gPSB0Lmxlbmd0aClcbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBpZl9mb3VuZCB2IF8gPSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgayB0ID1cbiAgICByYWlzZVxuICAgICAgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIkhhc2h0YmwuZmluZF9leG46IG5vdCBmb3VuZFwiOyB0Lmhhc2hhYmxlLnNleHBfb2ZfdCBrIF0pKVxuICBpblxuICBsZXQgZmluZF9leG4gdCBrZXkgPSBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YTp0IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxubGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IG5vdCAoZiBkYXRhKSkpXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6KGYgfmtleSB+ZGF0YSkpO1xuICBuZXdfdFxuOztcblxubGV0IG1hcCB0IH5mID0gbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBjb3B5IHQgPSBtYXAgdCB+ZjpGbi5pZFxuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IFNvbWUgbmV3X2RhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IE5vbmUgLT4gKCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDAgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBsZXQgdDEgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBuZXdfZGF0YSAtPiBzZXQgdDAgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgU2Vjb25kIG5ld19kYXRhIC0+IHNldCB0MSB+a2V5IH5kYXRhOm5ld19kYXRhKTtcbiAgdDAsIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmluZF9vcl9hZGQgdCBpZCB+ZGVmYXVsdCA9XG4gIGZpbmRfYW5kX2NhbGwyXG4gICAgdFxuICAgIGlkXG4gICAgfmE6dFxuICAgIH5iOmRlZmF1bHRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIF8gXyAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgdCBkZWZhdWx0IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQgKCkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpXG47O1xuXG5sZXQgZmluZGlfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsMlxuICAgIHRcbiAgICBpZFxuICAgIH5hOnRcbiAgICB+YjpkZWZhdWx0XG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSBfIF8gLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IHQgZGVmYXVsdCAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0IGtleSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdClcbjs7XG5cbigqIFNvbWUgaGFzaHRibCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0d29cbiAgIHNlcGFyYXRlIGxvb2t1cHMgKilcbmxldCBmaW5kX2FuZF9yZW1vdmUgdCBpZCA9XG4gIGxldCByZXN1bHQgPSBmaW5kIHQgaWQgaW5cbiAgaWYgT3B0aW9uLmlzX3NvbWUgcmVzdWx0IHRoZW4gcmVtb3ZlIHQgaWQ7XG4gIHJlc3VsdFxuOztcblxuXG5sZXQgY2hhbmdlIHQgaWQgfmYgPVxuICBtYXRjaCBmIChmaW5kIHQgaWQpIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB0IGlkXG4gIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXk6aWQgfmRhdGFcbjs7XG5cbmxldCB1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mID1cbiAgbGV0IGRhdGEgPSBmIChmaW5kIHQgaWQpIGluXG4gIHNldCB0IH5rZXk6aWQgfmRhdGE7XG4gIGRhdGFcbjs7XG5cbmxldCB1cGRhdGUgdCBpZCB+ZiA9IGlnbm9yZSAodXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA6IF8pXG5cbmxldCBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieSA9XG4gIGlmIHJlbW92ZV9pZl96ZXJvXG4gIHRoZW5cbiAgICBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvcHQgLT5cbiAgICAgIG1hdGNoIGJ5ICsgT3B0aW9uLnZhbHVlIG9wdCB+ZGVmYXVsdDowIHdpdGhcbiAgICAgIHwgMCAtPiBOb25lXG4gICAgICB8IG4gLT4gU29tZSBuKVxuICBlbHNlXG4gICAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGJ5XG4gICAgICB8IFNvbWUgaSAtPiBieSArIGkpXG47O1xuXG5sZXQgaW5jciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5XG5sZXQgZGVjciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5ICgtYnkpXG5cbmxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbIGRhdGEgXVxuICAgIHwgU29tZSBsIC0+IGRhdGEgOjogbClcbjs7XG5cbmxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBbXSB8IFNvbWUgWyBfIF0gLT4gcmVtb3ZlIHQga2V5XG4gIHwgU29tZSAoXyA6OiB0bCkgLT4gc2V0IHQgfmtleSB+ZGF0YTp0bFxuOztcblxubGV0IGZpbmRfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBsIC0+IGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSB+c2l6ZSAoKSBpblxuICBsZXQgZHVwZXMgPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGlmIG1lbSByZXMga2V5IHRoZW4gZHVwZXMgOj0ga2V5IDo6ICFkdXBlcyBlbHNlIHNldCByZXMgfmtleSB+ZGF0YSk7XG4gIG1hdGNoICFkdXBlcyB3aXRoXG4gIHwgW10gLT4gYE9rIHJlc1xuICB8IGtleXMgLT4gYER1cGxpY2F0ZV9rZXlzIChMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmUga2V5cylcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIH5oYXNoYWJsZSAoKSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgYWRkX211bHRpIHJlcyB+a2V5IH5kYXRhKTtcbiAgcmVzXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0IHdpdGhcbiAgfCBgT2sgdCAtPiBgT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrIC0+IGBEdXBsaWNhdGVfa2V5IChMaXN0LmhkX2V4biBrKVxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBgT2sgdiAtPiBSZXN1bHQuT2sgdlxuICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yIFwiSGFzaHRibC5vZl9hbGlzdF9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgc2V4cF9vZl9rZXlcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgUmVzdWx0Lk9rIHYgLT4gdlxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEVycm9yLnJhaXNlIGVcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCB0b19hbGlzdCB0ID0gZm9sZCB+ZjooZnVuIH5rZXkgfmRhdGEgbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICB0XG4gIHw+IHRvX2FsaXN0XG4gIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChrMSwgXykgKGsyLCBfKSAtPiB0Lmhhc2hhYmxlLmNvbXBhcmUgazEgazIpXG4gIHw+IHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSlcbjs7XG5cbmxldCB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9XG4gIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHApIHNleHAgaW5cbiAgbWF0Y2ggb2ZfYWxpc3Qgfmhhc2hhYmxlIGFsaXN0IH5zaXplOihMaXN0Lmxlbmd0aCBhbGlzdCkgd2l0aFxuICB8IGBPayB2IC0+IHZcbiAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICBMaXN0Lml0ZXIyX2V4biBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICBpZiBoYXNoYWJsZS5jb21wYXJlIGsgazIgPSAwXG4gICAgICB0aGVuXG4gICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIkhhc2h0YmwudF9vZl9zZXhwOiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGsgdilcbiAgICAgIChrX2dyYW1tYXIgOiBrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgKHZfZ3JhbW1hciA6IHYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogKGssIHYpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG47O1xuXG5sZXQga2V5cyB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YTpfIGFjYyAtPiBrZXkgOjogYWNjKVxubGV0IGRhdGEgdCA9IGZvbGQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IGFkZF90b19ncm91cHMgZ3JvdXBzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cyA9XG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gcm93IC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgcm93IGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByb3cgaW5cbiAgICBsZXQgZGF0YSA9XG4gICAgICBtYXRjaCBmaW5kIGdyb3VwcyBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgIHwgU29tZSBvbGQgLT4gY29tYmluZSBvbGQgZGF0YVxuICAgIGluXG4gICAgc2V0IGdyb3VwcyB+a2V5IH5kYXRhKVxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIHJvd3MgPVxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgYWRkX3RvX2dyb3VwcyByZXMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzO1xuICByZXNcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YTpGbi5pZCByb3dzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIG1hdGNoIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3Mgd2l0aFxuICB8IGBPayB0IC0+IFJlc3VsdC5PayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGtleXMgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkhhc2h0YmwuY3JlYXRlX3dpdGhfa2V5OiBkdXBsaWNhdGUga2V5c1wiXG4gICAgICAgICBbIFwia2V5c1wiLCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9rZXkga2V5cyBdKVxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgT3JfZXJyb3Iub2tfZXhuIChjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzKVxuOztcblxubGV0IG1lcmdlID1cbiAgbGV0IG1heWJlX3NldCB0IH5rZXkgfmYgZCA9XG4gICAgbWF0Y2ggZiB+a2V5IGQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IHNldCB0IH5rZXkgfmRhdGE6dlxuICBpblxuICBmdW4gdF9sZWZ0IHRfcmlnaHQgfmYgLT5cbiAgICBpZiBub3QgKEhhc2hhYmxlLmVxdWFsIHRfbGVmdC5oYXNoYWJsZSB0X3JpZ2h0Lmhhc2hhYmxlKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJIYXNodGJsLm1lcmdlOiBkaWZmZXJlbnQgJ2hhc2hhYmxlJyB2YWx1ZXNcIjtcbiAgICBsZXQgbmV3X3QgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5ncm93dGhfYWxsb3dlZDp0X2xlZnQuZ3Jvd3RoX2FsbG93ZWRcbiAgICAgICAgfmhhc2hhYmxlOnRfbGVmdC5oYXNoYWJsZVxuICAgICAgICB+c2l6ZTp0X2xlZnQubGVuZ3RoXG4gICAgICAgICgpXG4gICAgaW5cbiAgICB3aXRob3V0X211dGF0aW5nIHRfbGVmdCAoZnVuICgpIC0+XG4gICAgICB3aXRob3V0X211dGF0aW5nIHRfcmlnaHQgKGZ1biAoKSAtPlxuICAgICAgICBpdGVyaSB0X2xlZnQgfmY6KGZ1biB+a2V5IH5kYXRhOmxlZnQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfcmlnaHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBMZWZ0IGxlZnQpXG4gICAgICAgICAgfCBTb21lIHJpZ2h0IC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgQm90aCAobGVmdCwgcmlnaHQpKSk7XG4gICAgICAgIGl0ZXJpIHRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOnJpZ2h0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X2xlZnQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBSaWdodCByaWdodClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgICgqIGFscmVhZHkgZG9uZSBhYm92ZSAqKSkpKTtcbiAgICBuZXdfdFxuOztcblxubGV0IG1lcmdlX2ludG8gfnNyYyB+ZHN0IH5mID1cbiAgaXRlcmkgc3JjIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCBkc3RfZGF0YSA9IGZpbmQgZHN0IGtleSBpblxuICAgIGxldCBhY3Rpb24gPSB3aXRob3V0X211dGF0aW5nIGRzdCAoZnVuICgpIC0+IGYgfmtleSBkYXRhIGRzdF9kYXRhKSBpblxuICAgIG1hdGNoIChhY3Rpb24gOiBfIE1lcmdlX2ludG9fYWN0aW9uLnQpIHdpdGhcbiAgICB8IFJlbW92ZSAtPiByZW1vdmUgZHN0IGtleVxuICAgIHwgU2V0X3RvIGRhdGEgLT5cbiAgICAgIChtYXRjaCBkc3RfZGF0YSB3aXRoXG4gICAgICAgfCBOb25lIC0+IHNldCBkc3QgfmtleSB+ZGF0YVxuICAgICAgIHwgU29tZSBkc3RfZGF0YSAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZHN0X2RhdGEgZGF0YSkgdGhlbiBzZXQgZHN0IH5rZXkgfmRhdGEpKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhYyBlbHNlIGtleSA6OiBhYylcbiAgaW5cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGtleSAtPiByZW1vdmUgdCBrZXkpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmaWx0ZXJfa2V5c19pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCBtYXBfcmVzdWx0cyA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gKGtleSwgZiB+a2V5IH5kYXRhKSA6OiBhYykgaW5cbiAgTGlzdC5pdGVyIG1hcF9yZXN1bHRzIH5mOihmdW4gKGtleSwgcmVzdWx0KSAtPlxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbW92ZSB0IGtleVxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGEpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICB3aXRob3V0X211dGF0aW5nIHQgKGZ1biAoKSAtPiBBcnJheS5pdGVyIHQudGFibGUgfmY6KEF2bHRyZWUubWFwaV9pbnBsYWNlIH5mKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZXF1YWwgZXF1YWwgdCB0JyA9XG4gIGxlbmd0aCB0ID0gbGVuZ3RoIHQnXG4gICYmIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdCcgKGZ1biAoKSAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbWF0Y2ggZmluZCB0JyBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gci5yZXR1cm4gZmFsc2VcbiAgICAgICAgfCBTb21lIGRhdGEnIC0+IGlmIG5vdCAoZXF1YWwgZGF0YSBkYXRhJykgdGhlbiByLnJldHVybiBmYWxzZSkpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgc2ltaWxhciA9IGVxdWFsXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgY2hvb3NlID0gY2hvb3NlXG4gIGxldCBjaG9vc2VfZXhuID0gY2hvb3NlX2V4blxuICBsZXQgY2xlYXIgPSBjbGVhclxuICBsZXQgY29weSA9IGNvcHlcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZVxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGFkZF9leG4gPSBhZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbiAgbGV0IHVwZGF0ZSA9IHVwZGF0ZVxuICBsZXQgdXBkYXRlX2FuZF9yZXR1cm4gPSB1cGRhdGVfYW5kX3JldHVyblxuICBsZXQgYWRkX211bHRpID0gYWRkX211bHRpXG4gIGxldCByZW1vdmVfbXVsdGkgPSByZW1vdmVfbXVsdGlcbiAgbGV0IGZpbmRfbXVsdGkgPSBmaW5kX211bHRpXG4gIGxldCBtZW0gPSBtZW1cbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZpbHRlcl9tYXAgPSBmaWx0ZXJfbWFwXG4gIGxldCBmaWx0ZXJfbWFwaSA9IGZpbHRlcl9tYXBpXG4gIGxldCBmaWx0ZXJfa2V5cyA9IGZpbHRlcl9rZXlzXG4gIGxldCBmaWx0ZXIgPSBmaWx0ZXJcbiAgbGV0IGZpbHRlcmkgPSBmaWx0ZXJpXG4gIGxldCBwYXJ0aXRpb25fbWFwID0gcGFydGl0aW9uX21hcFxuICBsZXQgcGFydGl0aW9uX21hcGkgPSBwYXJ0aXRpb25fbWFwaVxuICBsZXQgcGFydGl0aW9uX3RmID0gcGFydGl0aW9uX3RmXG4gIGxldCBwYXJ0aXRpb25pX3RmID0gcGFydGl0aW9uaV90ZlxuICBsZXQgZmluZF9vcl9hZGQgPSBmaW5kX29yX2FkZFxuICBsZXQgZmluZGlfb3JfYWRkID0gZmluZGlfb3JfYWRkXG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgZmluZF9leG4gPSBmaW5kX2V4blxuICBsZXQgZmluZF9hbmRfY2FsbCA9IGZpbmRfYW5kX2NhbGxcbiAgbGV0IGZpbmRfYW5kX2NhbGwxID0gZmluZF9hbmRfY2FsbDFcbiAgbGV0IGZpbmRfYW5kX2NhbGwyID0gZmluZF9hbmRfY2FsbDJcbiAgbGV0IGZpbmRpX2FuZF9jYWxsID0gZmluZGlfYW5kX2NhbGxcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMSA9IGZpbmRpX2FuZF9jYWxsMVxuICBsZXQgZmluZGlfYW5kX2NhbGwyID0gZmluZGlfYW5kX2NhbGwyXG4gIGxldCBmaW5kX2FuZF9yZW1vdmUgPSBmaW5kX2FuZF9yZW1vdmVcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IG1lcmdlID0gbWVyZ2VcbiAgbGV0IG1lcmdlX2ludG8gPSBtZXJnZV9pbnRvXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgPSBmaWx0ZXJfa2V5c19pbnBsYWNlXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSA9IGZpbHRlcl9pbnBsYWNlXG4gIGxldCBmaWx0ZXJpX2lucGxhY2UgPSBmaWx0ZXJpX2lucGxhY2VcbiAgbGV0IG1hcF9pbnBsYWNlID0gbWFwX2lucGxhY2VcbiAgbGV0IG1hcGlfaW5wbGFjZSA9IG1hcGlfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlID0gZmlsdGVyX21hcGlfaW5wbGFjZVxuICBsZXQgZXF1YWwgPSBlcXVhbFxuICBsZXQgc2ltaWxhciA9IHNpbWlsYXJcbiAgbGV0IGluY3IgPSBpbmNyXG4gIGxldCBkZWNyID0gZGVjclxuICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleVxuZW5kXG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBLZXkuaGFzaGFibGVcblxuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKClcbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID0gb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHBcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG4gIDs7XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXkgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IEhhc2hhYmxlLnBvbHlcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEhhc2hhYmxlID0gSGFzaGFibGUuSGFzaGFibGVcblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBsZXQgaGFzaGFibGUgdCA9IHQuaGFzaGFibGVcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgY3JlYXRlIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfbXVsdGkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgY3JlYXRlX21hcHBlZCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgZ3JvdXAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG47O1xuXG5sZXQgaGFzaGFibGVfcyB0ID0gSGFzaGFibGUudG9fa2V5IHQuaGFzaGFibGVcblxubW9kdWxlIE0gKEsgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBrKSAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrKSB2X29mX3NleHAgc2V4cCA9XG4gIHRfb2Zfc2V4cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEspKSBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGspIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaykgdl9ncmFtbWFyID1cbiAgdF9zZXhwX2dyYW1tYXIgSy50X3NleHBfZ3JhbW1hciB2X2dyYW1tYXJcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuXG5sZXQgaGFzaGFibGVfcyA9IEhhc2h0YmwuaGFzaGFibGVfc1xubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5sZXQgcG9seV9oYXNoYWJsZSA9IEhhc2h0YmwuUG9seS5oYXNoYWJsZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAnYSB0ID0gKCdhLCB1bml0KSBIYXNodGJsLnRcbnR5cGUgJ2EgaGFzaF9zZXQgPSAnYSB0XG50eXBlICdhIGVsdCA9ICdhXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuICBsZXQgbGVuZ3RoID0gSGFzaHRibC5sZW5ndGhcbiAgbGV0IG1lbSA9IEhhc2h0YmwubWVtXG4gIGxldCBpc19lbXB0eSB0ID0gSGFzaHRibC5pc19lbXB0eSB0XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgSGFzaHRibC5pdGVyX2tleXMgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyBhcyBvIC0+IHIucmV0dXJuIG8pO1xuICAgICAgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID0gZmluZF9tYXAgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gU29tZSBhIGVsc2UgTm9uZSlcbiAgbGV0IGFkZCB0IGsgPSBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKVxuXG4gIGxldCBzdHJpY3RfYWRkIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiZWxlbWVudCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgZWxzZSAoXG4gICAgICBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKTtcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgOztcblxuICBsZXQgc3RyaWN0X2FkZF9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfYWRkIHQgaylcbiAgbGV0IHJlbW92ZSA9IEhhc2h0YmwucmVtb3ZlXG5cbiAgbGV0IHN0cmljdF9yZW1vdmUgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmUgdCBrO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICAgIGVsc2UgT3JfZXJyb3IuZXJyb3IgXCJlbGVtZW50IG5vdCBpbiBzZXRcIiBrIChIYXNodGJsLnNleHBfb2Zfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9yZW1vdmVfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X3JlbW92ZSB0IGspXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBIYXNodGJsLmZvbGQgdCB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgYWNjIC0+IGYgYWNjIGtleSlcbiAgbGV0IGl0ZXIgdCB+ZiA9IEhhc2h0YmwuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IHRvX2xpc3QgPSBIYXNodGJsLmtleXNcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZSB0ID1cbiAgICBzZXhwX29mX2xpc3Qgc2V4cF9vZl9lICh0b19saXN0IHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihoYXNoYWJsZSB0KS5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgaW5kZXggPSByZWYgKGxlbiAtIDEpIGluXG4gICAgZm9sZCB0IH5pbml0Olt8fF0gfmY6KGZ1biBhY2Mga2V5IC0+XG4gICAgICBpZiBBcnJheS5sZW5ndGggYWNjID0gMFxuICAgICAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiBrZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBpbmRleCA6PSAhaW5kZXggLSAxO1xuICAgICAgICBhY2MuKCFpbmRleCkgPC0ga2V5O1xuICAgICAgICBhY2MpKVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9IEhhc2h0YmwuZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IG5vdCAoZiBrZXkpKSlcbiAgbGV0IGVxdWFsIHQxIHQyID0gSGFzaHRibC5lcXVhbCAoZnVuICgpICgpIC0+IHRydWUpIHQxIHQyXG4gIGxldCBjb3B5IHQgPSBIYXNodGJsLmNvcHkgdFxuICBsZXQgZmlsdGVyIHQgfmYgPSBIYXNodGJsLmZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IEhhc2h0YmwubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gXyAtPiBTb21lICgpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGZpbHRlciB0MSB+ZjooZnVuIGtleSAtPiBub3QgKEhhc2h0YmwubWVtIHQyIGtleSkpXG5cbiAgbGV0IGludGVyIHQxIHQyID1cbiAgICBsZXQgc21hbGxlciwgbGFyZ2VyID0gaWYgbGVuZ3RoIHQxID4gbGVuZ3RoIHQyIHRoZW4gdDIsIHQxIGVsc2UgdDEsIHQyIGluXG4gICAgSGFzaHRibC5maWx0ZXJpIHNtYWxsZXIgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IEhhc2h0YmwubWVtIGxhcmdlciBrZXkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICAgIGxldCB0b19yZW1vdmUgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyB4IC0+IGlmIGYgeCB0aGVuIGFjIGVsc2UgeCA6OiBhYykgaW5cbiAgICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4geCAtPiByZW1vdmUgdCB4KVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaGFzaHRibCA9IEhhc2h0YmwubWFwIGhhc2h0YmwgfmY6aWdub3JlXG4gIGxldCB0b19oYXNodGJsIHQgfmYgPSBIYXNodGJsLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBsXG4gIGluXG4gIGxldCB0ID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIG0gaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biBrIC0+IGFkZCB0IGspO1xuICB0XG47O1xuXG5sZXQgdF9vZl9zZXhwIG0gZV9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBTZXhwLkF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIHJlcXVpcmVzIGEgbGlzdFwiIHNleHBcbiAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgIGxldCB0ID0gY3JlYXRlIG0gfnNpemU6KExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biBzZXhwIC0+XG4gICAgICBsZXQgZSA9IGVfb2Zfc2V4cCBzZXhwIGluXG4gICAgICBtYXRjaCBzdHJpY3RfYWRkIHQgZSB3aXRoXG4gICAgICB8IE9rICgpIC0+ICgpXG4gICAgICB8IEVycm9yIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCBnb3QgYSBkdXBsaWNhdGUgZWxlbWVudFwiIHNleHApO1xuICAgIHRcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBFbHQudCkgLT4gU2V4cC50IC0+ICdhIEVsdC50IHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIEVsdC50IHRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgd2l0aCB0eXBlICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGVfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBlX29mX3NleHAgc2V4cFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGhhc2hfc2V0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBwb2x5X2hhc2hhYmxlXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG5lbmRcblxubW9kdWxlIE0gKEVsdCA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IEVsdC50IHRcbmVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQpIHNleHAgPVxuICB0X29mX3NleHAgKG1vZHVsZSBFbHQpIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdCkgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFByaW50ZlxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5pbmNsdWRlIEZsb2F0MFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Zsb2F0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9mbG9hdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoZmxvYXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZmxvYXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gZmxvYXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IHRvX2Zsb2F0IHggPSB4XG5sZXQgb2ZfZmxvYXQgeCA9IHhcblxubGV0IG9mX3N0cmluZyBzID1cbiAgdHJ5IGZsb2F0X29mX3N0cmluZyBzIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcIkZsb2F0Lm9mX3N0cmluZyAlc1wiIHMgKClcbjs7XG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0uICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBpIGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxuKCogTGV0IFt5XSBiZSBhIHBvd2VyIG9mIDIuICBUaGVuIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgZmxvYXQgaXM6XG4gICBbeiA9IHkgKiAoMSArIDIgKiogLTUyKV1cbiAgIGFuZCB0aGUgcHJldmlvdXMgb25lIGlzXG4gICBbeCA9IHkgKiAoMSAtIDIgKiogLTUzKV1cblxuICAgSW4gZ2VuZXJhbCwgZXZlcnkgdHdvIGFkamFjZW50IGZsb2F0cyBhcmUgd2l0aGluIGEgZmFjdG9yIG9mIGJldHdlZW4gWzEgKyAyKiotNTNdXG4gICBhbmQgWzEgKyAyKiotNTJdIGZyb20gZWFjaCBvdGhlciwgdGhhdCBpcyB3aXRoaW4gWzEgKyAxLjFlLTE2XSBhbmQgWzEgKyAyLjNlLTE2XS5cblxuICAgU28gaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdCBzdGFydHMgd2l0aCBcIjFcIiwgdGhlbiBpdHMgYWRqYWNlbnQgZmxvYXRzXG4gICB3aWxsIHVzdWFsbHkgZGlmZmVyIGZyb20gaXQgYnkgMSwgYW5kIHNvbWV0aW1lcyBieSAyLCBhdCB0aGUgMTd0aCBzaWduaWZpY2FudCBkaWdpdFxuICAgKGNvdW50aW5nIGZyb20gMSkuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBzdGFydHMgd2l0aCBcIjlcIiwgdGhlbiB0aGUgYWRqYWNlbnRcbiAgIGZsb2F0cyB3aWxsIGJlIG9mZiBieSBubyBtb3JlIHRoYW4gMjMgYXQgdGhlIDE2dGggYW5kIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRzLlxuXG4gICBFLmcuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5OVwiXG4gICB2fVxuICAgUHJpbnRpbmcgYSBjb3VwbGUgb2YgZXh0cmEgZGlnaXRzIHJldmVhbHMgdGhhdCB0aGUgZGlmZmVyZW5jZSBpbmRlZWQgaXMgcm91Z2hseSAxMSBhdFxuICAgZGlnaXRzIDE3dGggYW5kIDE4dGggKHRoYXQgaXMsIDEzdGggYW5kIDE0dGggYWZ0ZXIgXCIuXCIpOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTg4NlwiXG4gICB2fVxuXG4gICBUaGUgdWxwICh0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkamFjZW50IGZsb2F0cykgaXMgdHdpY2UgYXMgYmlnIG9uIHRoZSBvdGhlciBzaWRlIG9mXG4gICAxMDI0LjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuICsuIDIuKiogKC01Mi4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyNC4wMDAwMDAwMDAwMDAyMjdcIlxuICAgdn1cblxuICAgTm93IHRha2UgYSBwb3dlciBvZiAyIHdoaWNoIHN0YXJ0cyB3aXRoIDk5OlxuXG4gICB7dlxuICAgICAjIDIuKio5My4gOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAxIDIzNDU2Nzg5MDEyMzQ1Njc4XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQyMmUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuICsuIDIuKiogKC01Mi4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQ0NGUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuIC0uIDIuKiogKC01My4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQxMWUrMjdcbiAgIHZ9XG5cbiAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMioqOTMgYW5kIGl0cyB0d28gbmVpZ2hib3JzIGlzIHNsaWdodGx5IG1vcmUgdGhhbiwgcmVzcGVjdGl2ZWx5LFxuICAgMSBhbmQgMiBhdCBzaWduaWZpY2FudCBkaWdpdCAxNi5cblxuICAgVGhvc2UgZXhhbXBsZXMgc2hvdyB0aGF0OlxuICAgLSAxNyBzaWduaWZpY2FudCBkaWdpdHMgaXMgYWx3YXlzIHN1ZmZpY2llbnQgdG8gcmVwcmVzZW50IGEgZmxvYXQgd2l0aG91dCBhbWJpZ3VpdHlcbiAgIC0gMTV0aCBzaWduaWZpY2FudCBkaWdpdCBjYW4gYWx3YXlzIGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHlcbiAgIC0gY29udmVydGluZyBhIGRlY2ltYWwgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIGl0cyBuZWFyZXN0IGZsb2F0IGFuZCBiYWNrXG4gICAgIGNhbiBjaGFuZ2UgdGhlIGxhc3QgZGVjaW1hbCBkaWdpdCBieSBubyBtb3JlIHRoYW4gMVxuXG4gICBUbyBtYWtlIHN1cmUgdGhhdCBmbG9hdHMgb2J0YWluZWQgYnkgY29udmVyc2lvbiBmcm9tIGRlY2ltYWwgZnJhY3Rpb25zIChlLmcuIFwiMy4xNFwiKVxuICAgYXJlIHByaW50ZWQgd2l0aG91dCB0cmFpbGluZyBub24temVybyBkaWdpdHMsIG9uZSBzaG91bGQgY2hvb3NlIHRoZSBmaXJzdCBhbW9uZyB0aGVcbiAgICclLjE1ZycsICclLjE2ZycsIGFuZCAnJS4xN2cnIHJlcHJlc2VudGF0aW9ucyB3aGljaCBkb2VzIHJvdW5kLXRyaXA6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIiAgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lICopXG5cbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjhcIiAgICAgICAgICAgICAgICAgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1kb2VzIG5vdCByb3VuZC10cmlwICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMlwiICAgICAgICAoKiBwcmVmZXIgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAxOFwiICAgICAgICgqIHRoaXMgb25lIGhhcyBvbmUgZGlnaXQgb2YganVuayBhdCB0aGUgZW5kICopXG4gICB2fVxuXG4gICBTa2lwcGluZyB0aGUgJyUuMTZnJyBpbiB0aGUgYWJvdmUgcHJvY2VkdXJlIHNhdmVzIHVzIHNvbWUgdGltZSwgYnV0IGl0IG1lYW5zIHRoYXQsIGFzXG4gICBzZWVuIGluIHRoZSBzZWNvbmQgZXhhbXBsZSBhYm92ZSwgb2NjYXNpb25hbGx5IG51bWJlcnMgd2l0aCBleGFjdGx5IDE2IHNpZ25pZmljYW50XG4gICBkaWdpdHMgd2lsbCBoYXZlIGFuIGVycm9yIGludHJvZHVjZWQgYXQgdGhlIDE3dGggZGlnaXQuICBUaGF0IGlzIHByb2JhYmx5IE9LIGZvclxuICAgdHlwaWNhbCB1c2UsIGJlY2F1c2UgYSBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaXMgXCJ1Z2x5XCIgYWxyZWFkeS4gIEFkZGluZyBvbmVcbiAgIG1vcmUgZG9lc24ndCBtYWtlIGl0IG11Y2ggd29yc2UgZm9yIGEgaHVtYW4gcmVhZGVyLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgY2Fubm90IHNraXAgJyUuMTVnJyBhbmQgb25seSBsb29rIGF0ICclLjE2ZycgYW5kICclLjE3ZycsIHNpbmNlXG4gICB0aGUgaW5hY2N1cmFjeSBhdCB0aGUgMTZ0aCBkaWdpdCBtaWdodCBpbnRyb2R1Y2UgdGhlIG5vaXNlIHdlIHdhbnQgdG8gYXZvaWQ6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MlwiICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMVwiICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tanVuayBhdCB0aGUgZW5kICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMDlcIlxuICAgdn1cbiopXG5sZXQgdG9fc3RyaW5nIHggPVxuICB2YWxpZF9mbG9hdF9sZXhlbVxuICAgIChsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVnXCIgeCBpblxuICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN2dcIiB4KVxuOztcblxubGV0IG1heF92YWx1ZSA9IGluZmluaXR5XG5sZXQgbWluX3ZhbHVlID0gbmVnX2luZmluaXR5XG5sZXQgbWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDc0LlxubGV0IG1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTAyMi5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IHBpID0gMHgzLjI0M0Y2QTg4ODVBMzA4RDMxMzE5OEEyRTAzNzA3M1xubGV0IHNxcnRfcGkgPSAweDEuQzVCRjg5MUI0RUY2QUE3OUMzQjA1MjBENURCOTM4XG5sZXQgc3FydF8ycGkgPSAweDIuODFCMjYzRkVDNEUwQjJDQUY5NDgzRjVDRTQ1OURDXG5sZXQgZXVsZXIgPSAweDAuOTNDNDY3RTM3REIwQzdBNEQxQkUzRjgxMDE1MkNCXG5sZXQgb2ZfaW50ID0gSW50LnRvX2Zsb2F0XG5sZXQgdG9faW50ID0gSW50Lm9mX2Zsb2F0XG5sZXQgb2ZfaW50NjMgaSA9IEludDYzLnRvX2Zsb2F0IGlcbmxldCBvZl9pbnQ2NCBpID0gQ2FtbC5JbnQ2NC50b19mbG9hdCBpXG5sZXQgdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2Zsb2F0XG5sZXQgaXJvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5sZXQgaXJvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5cbigqIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgXCJleG5cIiByb3VuZGluZyBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBzbyB0aGV5IGFyZSB3cml0dGVuXG4gICBvdXQgc2VwYXJhdGVseSwgYW5kIHR1bmVkIGluZGl2aWR1YWxseS4gIChXZSBjb3VsZCBoYXZlIHRoZSBvcHRpb24gdmVyc2lvbnMgY2FsbFxuICAgdGhlIFwiZXhuXCIgdmVyc2lvbnMsIGJ1dCB0aGF0IGltcG9zZXMgYXJndWFibHkgZ3JhdHVpdG91cyBvdmVyaGVhZC0tLWVzcGVjaWFsbHlcbiAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBjYXB0dXJlIG9mIGJhY2t0cmFjZXMgaXMgZW5hYmxlZCB1cG9uIFwid2l0aFwiLS0tYW5kIHRoYXQgc2VlbXNcbiAgIG5vdCB3b3J0aCBpdCB3aGVuIGNvbXBhcmVkIHRvIHRoZSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uLikgKilcblxuKCogRXJyb3IgcmVwb3J0aW5nIGJlbG93IGlzIHZlcnkgY2FyZWZ1bGx5IGFycmFuZ2VkIHNvIHRoYXQsIGUuZy4sIFtpcm91bmRfbmVhcmVzdF9leG5dXG4gICBpdHNlbGYgY2FuIGJlIGlubGluZWQgaW50byBjYWxsZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgYSBib3ggZm9yIHRoZVxuICAgW2Zsb2F0XSBhcmd1bWVudC4gIFRoaXMgaXMgZG9uZSB3aXRoIGEgYm94IFtib3hdIGZ1bmN0aW9uIGNhcmVmdWxseSBjaG9zZW4gdG8gYWxsb3cgdGhlXG4gICBjb21waWxlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBib3ggZm9yIHRoZSBmbG9hdCBvbmx5IGluIGVycm9yIGNhc2VzLiAgU2VlLCBlLmcuLFxuICAgWy4uLy4uL3plcm8vdGVzdC9wcmljZV90ZXN0Lm1sXSBmb3IgYSBtZWNoYW5pY2FsIHRlc3Qgb2YgdGhpcyBwcm9wZXJ0eSB3aGVuIGJ1aWxkaW5nXG4gICB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9dHJ1ZV0uICopXG5cbmxldCBpcm91bmRfdXAgdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX2Rvd24gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW4gaWYgdCA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KSBlbHNlIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldCBpcm91bmRfdG93YXJkc196ZXJvIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pcm91bmRfdG93YXJkc196ZXJvX2V4bjogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChib3ggdClcbiAgICAgICgpXG47O1xuXG4oKiBPdXRzaWRlIG9mIHRoZSByYW5nZSAocm91bmRfbmVhcmVzdF9sYi4ucm91bmRfbmVhcmVzdF91YiksIGFsbCByZXByZXNlbnRhYmxlIGRvdWJsZXNcbiAgIGFyZSBpbnRlZ2VycyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlLCBhbmQgW3JvdW5kX25lYXJlc3RdIHNob3VsZCBiZSBpZGVudGl0eS5cblxuICAgSG93ZXZlciwgZm9yIG9kZCBudW1iZXJzIHdpdGggdGhlIGFic29sdXRlIHZhbHVlIGJldHdlZW4gMioqNTIgYW5kIDIqKjUzLCB0aGUgZm9ybXVsYVxuICAgW3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsgMC41KV0gZG9lcyBub3QgaG9sZDpcblxuICAge3ZcbiAgICAgIyBsZXQgbmFpdmVfcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKy4gMC41KTs7XG4gICAgICMgbGV0IHggPSAyLiAqKiA1Mi4gKy4gMS47O1xuICAgICB2YWwgeCA6IGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5Ny5cbiAgICAgIyBuYWl2ZV9yb3VuZF9uZWFyZXN0IHg7O1xuICAgICAtIDogICAgIGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5OC5cbiAgIHZ9XG4qKVxuXG5sZXQgcm91bmRfbmVhcmVzdF9sYiA9IC0uKDIuICoqIDUyLilcbmxldCByb3VuZF9uZWFyZXN0X3ViID0gMi4gKiogNTIuXG5cbigqIEZvciBbeCA9IG9uZV91bHAgYERvd24gMC41XSwgdGhlIGZvcm11bGEgW2Zsb29yICh4ICsuIDAuNSldIGZvciByb3VuZGluZyB0byBuZWFyZXN0XG4gICBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlIHRoZSBleGFjdCByZXN1bHQgaXMgaGFsZndheSBiZXR3ZWVuIFtvbmVfdWxwIGBEb3duIDEuXSBhbmQgWzEuXSxcbiAgIGFuZCBpdCBnZXRzIHJvdW5kZWQgdXAgdG8gWzEuXSBkdWUgdG8gdGhlIHJvdW5kLXRpZXMtdG8tZXZlbiBydWxlLiAqKVxubGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwIGBEb3duIDAuNVxuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgPVxuICB0XG4gICsuXG4gIGlmIHQgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIHRoZW4gb25lX3VscF9sZXNzX3RoYW5faGFsZiAoKiBzaW5jZSB0IDwgMC41LCBtYWtlIHN1cmUgdGhlIHJlc3VsdCBpcyA8IDEuMCAqKVxuICBlbHNlIDAuNVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpKVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gICAgZWxzZSBOb25lXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0XzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0XzMyXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuXzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGxcIiAoYm94IHQpICgpKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfbmVhcmVzdF9leG5fNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF9leG5fMzJcbjs7XG5cbigqIFRoZSBmb2xsb3dpbmcgW2lyb3VuZF9leG5dIGFuZCBbaXJvdW5kXSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIHRoZSBvbmVzIGFib3ZlLlxuICAgVGhlaXIgZXF1aXZhbGVuY2UgdG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRlc3RlZCBpbiB0aGUgdW5pdCB0ZXN0cyBiZWxvdy4gKilcblxubGV0W0BpbmxpbmVdIGlyb3VuZF9leG4gPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYFplcm8gLT4gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdFxuICB8IGBOZWFyZXN0IC0+IGlyb3VuZF9uZWFyZXN0X2V4biB0XG4gIHwgYFVwIC0+IGlyb3VuZF91cF9leG4gdFxuICB8IGBEb3duIC0+IGlyb3VuZF9kb3duX2V4biB0XG47O1xuXG5sZXQgaXJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICB0cnkgU29tZSAoaXJvdW5kX2V4biB+ZGlyIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc19pbmYgdCA9IDEuIC8uIHQgPSAwLlxubGV0IGlzX2Zpbml0ZSB0ID0gdCAtLiB0ID0gMC5cblxubGV0IG1pbl9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBtYXhfaW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgYWRkID0gKCArLiApXG5sZXQgc3ViID0gKCAtLiApXG5sZXQgbmVnID0gKCB+LS4gKVxubGV0IGFicyA9IGFic19mbG9hdFxubGV0IHNjYWxlID0gKCAqLiApXG5sZXQgc3F1YXJlIHggPSB4ICouIHhcblxubW9kdWxlIFBhcnRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBmcmFjdGlvbmFsIDogdCAtPiBmbG9hdFxuICB2YWwgaW50ZWdyYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBtb2RmIDogZmxvYXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0ICogZmxvYXRcblxuICBsZXQgZnJhY3Rpb25hbCB0ID0gZnN0IHRcbiAgbGV0IGludGVncmFsIHQgPSBzbmQgdFxuICBsZXQgbW9kZiA9IG1vZGZcbmVuZFxuXG5sZXQgbW9kZiA9IFBhcnRzLm1vZGZcbmxldCByb3VuZF9kb3duID0gZmxvb3JcbmxldCByb3VuZF91cCA9IGNlaWxcbmxldCByb3VuZF90b3dhcmRzX3plcm8gdCA9IGlmIHQgPj0gMC4gdGhlbiByb3VuZF9kb3duIHQgZWxzZSByb3VuZF91cCB0XG5cbigqIHNlZSB0aGUgY29tbWVudCBhYm92ZSBbcm91bmRfbmVhcmVzdF9sYl0gYW5kIFtyb3VuZF9uZWFyZXN0X3ViXSBmb3IgYW4gZXhwbGFuYXRpb24gKilcbmxldFtAb2NhbWwuaW5saW5lXSByb3VuZF9uZWFyZXN0X2lubGluZSB0ID1cbiAgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGIgJiYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiBmbG9vciAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgZWxzZSB0ICsuIDAuXG47O1xuXG5sZXQgcm91bmRfbmVhcmVzdCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0XG5cbmxldCByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiB0ID1cbiAgaWYgdCA8PSByb3VuZF9uZWFyZXN0X2xiIHx8IHQgPj0gcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIHQgKy4gMC5cbiAgZWxzZSAoXG4gICAgbGV0IGZsb29yID0gZmxvb3IgdCBpblxuICAgICgqIFtjZWlsX29yX3N1Y2MgPSBpZiB0IGlzIGFuIGludGVnZXIgdGhlbiB0ICsuIDEuIGVsc2UgY2VpbCB0XS4gIEZhc3RlciB0aGFuIFtjZWlsXS4gKilcbiAgICBsZXQgY2VpbF9vcl9zdWNjID0gZmxvb3IgKy4gMS4gaW5cbiAgICBsZXQgZGlmZl9mbG9vciA9IHQgLS4gZmxvb3IgaW5cbiAgICBsZXQgZGlmZl9jZWlsID0gY2VpbF9vcl9zdWNjIC0uIHQgaW5cbiAgICBpZiBkaWZmX2Zsb29yIDwgZGlmZl9jZWlsXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgaWYgZGlmZl9mbG9vciA+IGRpZmZfY2VpbFxuICAgIHRoZW4gY2VpbF9vcl9zdWNjXG4gICAgZWxzZSBpZiAoKiBleGFjdCB0aWUsIHBpY2sgdGhlIGV2ZW4gKilcbiAgICAgIG1vZF9mbG9hdCBmbG9vciAyLiA9IDAuXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgY2VpbF9vcl9zdWNjKVxuOztcblxubGV0IGludDYzX3JvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcbmxldCBpbnQ2M19yb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5cbmxldCBpbnQ2M19yb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGludDYzX3JvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuIHQwID1cbiAgbGV0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHQwIGluXG4gIGlmIHQgPiAwLlxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKGJveCB0MClcbiAgICAgICAgKClcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoYm94IHQwKVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biBmID0gSW50NjMub2ZfaW50IChpcm91bmRfbmVhcmVzdF9leG4gZilcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIHwgVzMyIC0+IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG47O1xuXG5sZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCB0XG4gIHwgYERvd24gLT4gcm91bmRfZG93biB0XG4gIHwgYFVwIC0+IHJvdW5kX3VwIHRcbiAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gdFxuOztcblxubW9kdWxlIENsYXNzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbmZpbml0ZVxuICAgIHwgTmFuXG4gICAgfCBOb3JtYWxcbiAgICB8IFN1Ym5vcm1hbFxuICAgIHwgWmVyb1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgSW5maW5pdGU7IE5hbjsgTm9ybWFsOyBTdWJub3JtYWw7IFplcm8gXSA6IHQgbGlzdClcblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDA2XyA9IFwiZmxvYXQubWwuQ2xhc3MudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIC0+IEluZmluaXRlXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgLT4gTm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgLT4gU3Vibm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgIHwgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbmZpbml0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmZpbml0ZVwiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgfCBOb3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTm9ybWFsXCJcbiAgICAgIHwgU3Vibm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN1Ym5vcm1hbFwiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJJbmZpbml0ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlN1Ym5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuZW5kXG5cbmxldCBjbGFzc2lmeSB0ID1cbiAgbGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gIHwgRlBfbm9ybWFsIC0+IEMuTm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsIC0+IEMuU3Vibm9ybWFsXG4gIHwgRlBfemVybyAtPiBDLlplcm9cbiAgfCBGUF9pbmZpbml0ZSAtPiBDLkluZmluaXRlXG4gIHwgRlBfbmFuIC0+IEMuTmFuXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzID8oZGVsaW1pdGVyID0gJ18nKSA/KHN0cmlwX3plcm8gPSBmYWxzZSkgc3RyaW5nID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyaW5nIH5vbjonLicgd2l0aFxuICB8IE5vbmUgLT4gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgc3RyaW5nIH5kZWxpbWl0ZXJcbiAgfCBTb21lIChsZWZ0LCByaWdodCkgLT5cbiAgICBsZXQgbGVmdCA9IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIGxlZnQgfmRlbGltaXRlciBpblxuICAgIGxldCByaWdodCA9XG4gICAgICBpZiBzdHJpcF96ZXJvIHRoZW4gU3RyaW5nLnJzdHJpcCByaWdodCB+ZHJvcDooZnVuIGMgLT4gQ2hhci4oID0gKSBjICcwJykgZWxzZSByaWdodFxuICAgIGluXG4gICAgKG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgfCBcIlwiIC0+IGxlZnRcbiAgICAgfCBfIC0+IGxlZnQgXiBcIi5cIiBeIHJpZ2h0KVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gP2RlbGltaXRlciA/KGRlY2ltYWxzID0gMykgP3N0cmlwX3plcm8gPyhleHBsaWNpdF9wbHVzID0gZmFsc2UpIGYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGRlY2ltYWxzIDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJ0b19zdHJpbmdfaHVtOiBpbnZhbGlkIGFyZ3VtZW50IH5kZWNpbWFscz0lZFwiIGRlY2ltYWxzICgpO1xuICBtYXRjaCBjbGFzc2lmeSBmIHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiBmID4gMC4gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW5cIlxuICB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgcyA9XG4gICAgICBpZiBleHBsaWNpdF9wbHVzIHRoZW4gc3ByaW50ZiBcIiUrLipmXCIgZGVjaW1hbHMgZiBlbHNlIHNwcmludGYgXCIlLipmXCIgZGVjaW1hbHMgZlxuICAgIGluXG4gICAgaW5zZXJ0X3VuZGVyc2NvcmVzIHMgP2RlbGltaXRlciA/c3RyaXBfemVyb1xuOztcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgbGV0IHNleHAgPSBzZXhwX29mX3QgdCBpblxuICBtYXRjaCAhU2V4cC5vZl9mbG9hdF9zdHlsZSB3aXRoXG4gIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHNleHBcbiAgfCBgVW5kZXJzY29yZXMgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgTGlzdCBfIC0+XG4gICAgICAgcmFpc2Vfc1xuICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgXCJbc2V4cF9vZl9mbG9hdF0gcHJvZHVjZWQgc3RyYW5nZSBzZXhwXCJcbiAgICAgICAgICAgIFsgXCJzZXhwXCIsIFNleHAuc2V4cF9vZl90IHNleHAgXSlcbiAgICAgfCBBdG9tIHN0cmluZyAtPlxuICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzdHJpbmcgJ0UnIHRoZW4gc2V4cCBlbHNlIEF0b20gKGluc2VydF91bmRlcnNjb3JlcyBzdHJpbmcpKVxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCA/KHByZWZpeCA9IFwiXCIpIH5raWxvIH5tZWdhIH5naWdhIH50ZXJhID9wZXRhICgpID1cbiAgKCogUm91bmQgYSByYXRpbyB0b3dhcmQgdGhlIG5lYXJlc3QgaW50ZWdlciwgcmVzb2x2aW5nIHRpZXMgdG93YXJkIHRoZSBuZWFyZXN0IGV2ZW5cbiAgICAgbnVtYmVyLiAgRm9yIHNhbmUgaW5wdXRzIChpbiBwYXJ0aWN1bGFyLCB3aGVuIFtkZW5vbWluYXRvcl0gaXMgYW4gaW50ZWdlciBhbmRcbiAgICAgW2FicyBudW1lcmF0b3IgPCAyZTUyXSkgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgbWlnaHQgYmUgYVxuICAgICBsaXR0bGUgYml0IG9mZiwgYnV0IHdlIGRvbid0IHJlYWxseSB1c2UgdGhhdCBjYXNlLiAqKVxuICBsZXQgaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IGsgPSBmbG9vciAobnVtZXJhdG9yIC8uIGRlbm9taW5hdG9yKSBpblxuICAgICgqIGlmIFthYnMgayA8IDJlNTNdLCB0aGVuIGJvdGggW2tdIGFuZCBbayArLiAxLl0gYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGFuZCBpblxuICAgICAgIHBhcnRpY3VsYXIgW2sgKy4gMS4gPiBrXS4gIElmIFtkZW5vbWluYXRvcl0gaXMgYWxzbyBhbiBpbnRlZ2VyLCBhbmRcbiAgICAgICBbYWJzIChkZW5vbWluYXRvciAqLiAoayArLiAxKSkgPCAyZTUzXSAoYW5kIGluIHNvbWUgb3RoZXIgY2FzZXMsIHRvbyksIHRoZW4gW2xvd2VyXVxuICAgICAgIGFuZCBbaGlnaGVyXSBhcmUgYWN0dWFsbHkgYm90aCBhY2N1cmF0ZS4gIFNpbmNlIChyb3VnaGx5KVxuICAgICAgIFtudW1lcmF0b3IgPSBkZW5vbWluYXRvciAqLiBrXSB0aGVuIGZvciBbYWJzIG51bWVyYXRvciA8IDJlNTJdIHdlIHNob3VsZCBiZVxuICAgICAgIGZpbmUuICopXG4gICAgbGV0IGxvd2VyID0gZGVub21pbmF0b3IgKi4gayBpblxuICAgIGxldCBoaWdoZXIgPSBkZW5vbWluYXRvciAqLiAoayArLiAxLikgaW5cbiAgICAoKiBTdWJ0cmFjdGluZyBudW1iZXJzIHdpdGhpbiBhIGZhY3RvciBvZiB0d28gZnJvbSBlYWNoIG90aGVyIGlzIGFjY3VyYXRlLlxuICAgICAgIFNvIGVpdGhlciB0aGUgdHdvIHN1YnRyYWN0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGUsIG9yIGsgPSAwLCBvciBrID0gLTEuXG4gICAgICAgSW4gY2FzZSBvZiBhIHRpZSwgcm91bmQgdG8gZXZlbi4gKilcbiAgICBsZXQgZGlmZl9yaWdodCA9IGhpZ2hlciAtLiBudW1lcmF0b3IgaW5cbiAgICBsZXQgZGlmZl9sZWZ0ID0gbnVtZXJhdG9yIC0uIGxvd2VyIGluXG4gICAgbGV0IGsgPSBpcm91bmRfbmVhcmVzdF9leG4gayBpblxuICAgIGlmIGRpZmZfcmlnaHQgPCBkaWZmX2xlZnRcbiAgICB0aGVuIGsgKyAxXG4gICAgZWxzZSBpZiBkaWZmX3JpZ2h0ID4gZGlmZl9sZWZ0XG4gICAgdGhlbiBrXG4gICAgZWxzZSBpZiAoKiBhIHRpZSAqKVxuICAgICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoayBtb2QgMikgMFxuICAgIHRoZW4ga1xuICAgIGVsc2UgayArIDFcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgdCA8IDAuMCB0aGVuIFwiLWluZiAgXCIgZWxzZSBcImluZiAgXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW4gIFwiXG4gIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBnbyB0ID1cbiAgICAgIGxldCBjb252X29uZSB0ID1cbiAgICAgICAgYXNzZXJ0ICgwLiA8PSB0ICYmIHQgPCA5OTkuOTUpO1xuICAgICAgICBsZXQgeCA9IHByZWZpeCBeIGZvcm1hdF9mbG9hdCBcIiUuMWZcIiB0IGluXG4gICAgICAgICgqIEZpeCB0aGUgXCIuMFwiIHN1ZmZpeCAqKVxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHggfnN1ZmZpeDpcIi4wXCJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHggPSBCeXRlcy5vZl9zdHJpbmcgeCBpblxuICAgICAgICAgIGxldCBuID0gQnl0ZXMubGVuZ3RoIHggaW5cbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDEpICcgJztcbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDIpICcgJztcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOngpXG4gICAgICAgIGVsc2UgeFxuICAgICAgaW5cbiAgICAgIGxldCBjb252IG1hZyB0IGRlbm9taW5hdG9yID1cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAoZGVub21pbmF0b3IgPSAxMDAuICYmIHQgPj0gOTk5Ljk1KVxuICAgICAgICAgIHx8IChkZW5vbWluYXRvciA+PSAxMDBfMDAwLiAmJiB0ID49IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDkuOTk5XzUpKSk7XG4gICAgICAgIGFzc2VydCAodCA8IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDlfOTk5LjUpKTtcbiAgICAgICAgbGV0IGksIGQgPVxuICAgICAgICAgIGxldCBrID0gaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yOnQgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICAgKCogW21vZF0gaXMgb2theSBoZXJlIGJlY2F1c2Ugd2Uga25vdyBpID49IDAuICopXG4gICAgICAgICAgayAvIDEwLCBrIG1vZCAxMFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgICAgIGFzc2VydCAoMCA8PSBpICYmIGkgPCAxMDAwKTtcbiAgICAgICAgYXNzZXJ0ICgwIDw9IGQgJiYgZCA8IDEwKTtcbiAgICAgICAgaWYgZCA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiJXMlZCVzIFwiIHByZWZpeCBpIG1hZ1xuICAgICAgICBlbHNlIHNwcmludGYgXCIlcyVkJXMlZFwiIHByZWZpeCBpIG1hZyBkXG4gICAgICBpblxuICAgICAgKCogV2hpbGUgdGhlIHN0YW5kYXJkIG1ldHJpYyBwcmVmaXhlcyAoZS5nLiBjYXBpdGFsIFwiTVwiIHJhdGhlciB0aGFuIFwibVwiLCBbMV0pIGFyZVxuICAgICAgICAgbm9taW5hbGx5IG1vcmUgY29ycmVjdCwgdGhpcyBoaW5kZXJzIHJlYWRhYmlsaXR5IGluIG91ciBjYXNlLiAgRS5nLiwgMTBHNiBhbmRcbiAgICAgICAgIDEwNjYgbG9vayB0b28gc2ltaWxhci4gIFRoYXQncyBhbiBleHRyZW1lIGV4YW1wbGUsIGJ1dCBpbiBnZW5lcmFsIGssbSxnLHQscFxuICAgICAgICAgcHJvYmFibHkgc3RhbmQgb3V0IGJldHRlciB0aGFuIEssTSxHLFQsUCB3aGVuIGludGVyc3BlcnNlZCB3aXRoIGRpZ2l0cy5cblxuICAgICAgICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0cmljX3ByZWZpeCAqKVxuICAgICAgKCogVGhlIHRyaWNrIGhlcmUgaXMgdGhhdDpcbiAgICAgICAgIC0gdGhlIGZpcnN0IGJvdW5kYXJ5ICg5OTkuOTUpIGFzIGEgZmxvYXQgaXMgc2xpZ2h0bHkgb3Zlci1yZXByZXNlbnRlZCAoc28gaXQgaXNcbiAgICAgICAgICAgYmV0dGVyIGFwcHJveGltYXRlZCBhcyBcIjFrXCIgdGhhbiBhcyBcIjk5OS45XCIpLFxuICAgICAgICAgLSB0aGUgb3RoZXIgYm91bmRhcmllcyBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGFyZSBpbnRlZ2Vycy5cbiAgICAgICAgICAgVGhhdCdzIHdoeSB0aGUgc3RyaWN0IGVxdWFsaXRpZXMgYmVsb3cgZG8gZXhhY3RseSB3aGF0IHdlIHdhbnQuICopXG4gICAgICBpZiB0IDwgOTk5Ljk1RTBcbiAgICAgIHRoZW4gY29udl9vbmUgdFxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTNcbiAgICAgIHRoZW4gY29udiBraWxvIHQgMTAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTZcbiAgICAgIHRoZW4gY29udiBtZWdhIHQgMTAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU5XG4gICAgICB0aGVuIGNvbnYgZ2lnYSB0IDEwMF8wMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTEyXG4gICAgICB0aGVuIGNvbnYgdGVyYSB0IDEwMF8wMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwZXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdFxuICAgICAgICB8IFNvbWUgcGV0YSAtPlxuICAgICAgICAgIGlmIHQgPCA5OTkuOTVFMTVcbiAgICAgICAgICB0aGVuIGNvbnYgcGV0YSB0IDEwMF8wMDBfMDAwXzAwMF8wMDAuXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHQpXG4gICAgaW5cbiAgICBpZiB0ID49IDAuIHRoZW4gZ28gdCBlbHNlIFwiLVwiIF4gZ28gfi0udFxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyB0ID1cbiAgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0IH5raWxvOlwia1wiIH5tZWdhOlwibVwiIH5naWdhOlwiZ1wiIH50ZXJhOlwidFwiIH5wZXRhOlwicFwiICgpXG47O1xuXG4oKiBQZXJmb3JtYW5jZSBub3RlOiBJbml0aWFsaXppbmcgdGhlIGFjY3VtdWxhdG9yIHRvIDEgcmVzdWx0cyBpbiBvbmUgZXh0cmFcbiAgIG11bHRpcGx5OyBlLmcuLCB0byBjb21wdXRlIHggKiogNCwgd2UgaW4gcHJpbmNpcGxlIG9ubHkgbmVlZCAyIG11bHRpcGxpZXMsXG4gICBidXQgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgMyBtdWx0aXBsaWVzLiAgSG93ZXZlciwgYXR0ZW1wdHMgdG8gYXZvaWQgdGhpc1xuICAgKGxpa2UgZGVjcmVtZW50aW5nIG4gYW5kIGluaXRpYWxpemluZyBhY2N1bSB0byBiZSB4LCBvciBoYW5kbGluZyBzbWFsbFxuICAgZXhwb25lbnRzIGFzIGEgc3BlY2lhbCBjYXNlKSBoYXZlIG5vdCB5aWVsZGVkIGFueXRoaW5nIHRoYXQgaXMgYSBuZXRcbiAgIGltcHJvdmVtZW50LlxuKilcbmxldCBpbnRfcG93IHggbiA9XG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAxLlxuICBlbHNlIChcbiAgICAoKiBVc2luZyBbeCArLiAoLTAuKV0gb24gdGhlIGZvbGxvd2luZyBsaW5lIGNvbnZpbmNlcyB0aGUgY29tcGlsZXIgdG8gYXZvaWQgYSBjZXJ0YWluXG4gICAgICAgYm94aW5nICh0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbGxvY2F0aW9uIGluIGVhY2ggaXRlcmF0aW9uKS4gIFNvb24sIHRoZSBjb21waWxlclxuICAgICAgIHNob3VsZG4ndCBuZWVkIHRoaXMgXCJoaW50XCIgdG8gYXZvaWQgdGhlIGJveGluZy4gIFRoZSByZWFzb24gd2UgYWRkIC0wIHJhdGhlciB0aGFuIDBcbiAgICAgICBpcyB0aGF0IFt4ICsuICgtMC4pXSBpcyBhcHBhcmVudGx5IGFsd2F5cyB0aGUgc2FtZSBhcyBbeF0sIHdoZXJlYXMgW3ggKy4gMC5dIGlzXG4gICAgICAgbm90LCBpbiB0aGF0IGl0IHNlbmRzIFstMC5dIHRvIFswLl0uICBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBiZWNhdXNlIHdlIHdhbnRcbiAgICAgICBbaW50X3BvdyAoLTAuKSAoLTEpXSB0byByZXR1cm4gbmVnX2luZmluaXR5IGp1c3QgbGlrZSBbLTAuICoqIC0xLl0gd291bGQuICAqKVxuICAgIGxldCB4ID0gcmVmICh4ICsuIC0wLikgaW5cbiAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgbGV0IGFjY3VtID0gcmVmIDEuIGluXG4gICAgaWYgIW4gPCAwXG4gICAgdGhlbiAoXG4gICAgICAoKiB4ICoqIG4gPSAoMS94KSAqKiAtbiAqKVxuICAgICAgeCA6PSAxLiAvLiAheDtcbiAgICAgIG4gOj0gfi0gKCFuKTtcbiAgICAgIGlmICFuIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIG4gbXVzdCBoYXZlIGJlZW4gbWluX2ludCwgc28gaXQgaXMgbm93IHNvIGJpZyB0aGF0IGl0IGhhcyB3cmFwcGVkIGFyb3VuZC5cbiAgICAgICAgICAgV2UgZGVjcmVtZW50IGl0IHNvIHRoYXQgaXQgbG9va3MgcG9zaXRpdmUgYWdhaW4sIGJ1dCBhY2NvcmRpbmdseSBoYXZlXG4gICAgICAgICAgIHRvIHB1dCBhbiBleHRyYSBmYWN0b3Igb2YgeCBpbiB0aGUgYWNjdW11bGF0b3IuXG4gICAgICAgICopXG4gICAgICAgIGFjY3VtIDo9ICF4O1xuICAgICAgICBkZWNyIG4pKTtcbiAgICAoKiBMZXR0aW5nIFthXSBkZW5vdGUgKHRoZSBvcmlnaW5hbCB2YWx1ZSBvZikgW3ggKiogbl0sIHdlIG1haW50YWluXG4gICAgICAgdGhlIGludmFyaWFudCB0aGF0IFsoeCAqKiBuKSAqLiBhY2N1bSA9IGFdLiAqKVxuICAgIHdoaWxlICFuID4gMSBkb1xuICAgICAgaWYgIW4gbGFuZCAxIDw+IDAgdGhlbiBhY2N1bSA6PSAheCAqLiAhYWNjdW07XG4gICAgICB4IDo9ICF4ICouICF4O1xuICAgICAgbiA6PSAhbiBsc3IgMVxuICAgIGRvbmU7XG4gICAgKCogbiBpcyBuZWNlc3NhcmlseSAxIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsXG4gICAgICAgbXVsdGlwbGljYXRpb24gYnkgeC4gKilcbiAgICAheCAqLiAhYWNjdW0pXG47O1xuXG5sZXQgcm91bmRfZ2VuIHggfmhvdyA9XG4gIGlmIHggPSAwLlxuICB0aGVuIDAuXG4gIGVsc2UgaWYgbm90IChpc19maW5pdGUgeClcbiAgdGhlbiB4XG4gIGVsc2UgKFxuICAgICgqIFNpZ25pZmljYW50IGRpZ2l0cyBhbmQgZGVjaW1hbCBkaWdpdHMuICopXG4gICAgbGV0IHNkLCBkZCA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgc2lnbmlmaWNhbnRfZGlnaXRzIHNkIC0+XG4gICAgICAgIGxldCBkZCA9IHNkIC0gdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgICAgfCBgZGVjaW1hbF9kaWdpdHMgZGQgLT5cbiAgICAgICAgbGV0IHNkID0gZGQgKyB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgc2QgPCAwXG4gICAgdGhlbiAwLlxuICAgIGVsc2UgaWYgc2QgPj0gMTdcbiAgICB0aGVuIHhcbiAgICBlbHNlIChcbiAgICAgICgqIENob29zZSB0aGUgb3JkZXIgdGhhdCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdC4gU21hbGwgcG9zaXRpdmVcbiAgICAgICAgIGludGVnZXJzIGFyZSwgYnV0IHRoZWlyIGludmVyc2VzIGluIG1vc3QgY2FzZXMgYXJlIG5vdC4gKilcbiAgICAgIGxldCBhYnNfZGQgPSBJbnQuYWJzIGRkIGluXG4gICAgICBpZiBhYnNfZGQgPiAyMiB8fCBzZCA+PSAxNlxuICAgICAgKCogMTAqKjIyIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBidXQgMTAqKjIzIGlzIG5vdCwgc28gdXNlIHRoZSBzbG93XG4gICAgICAgICBwYXRoLiAgU2ltaWxhcmx5LCBpZiB3ZSBuZWVkIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpbiB0aGUgcmVzdWx0LCB0aGVuIHRoZSBpbnRlZ2VyXG4gICAgICAgICBbcm91bmRfbmVhcmVzdCAoeCA8b3A+IG9yZGVyKV0gbWlnaHQgbm90IGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBzaW5jZVxuICAgICAgICAgZm9yIHNvbWUgcmFuZ2VzIHdlIG9ubHkgaGF2ZSAxNSBkaWdpdHMgb2YgcHJlY2lzaW9uIGd1YXJhbnRlZWQuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgd2UgYXJlIHN0aWxsIHJvdW5kaW5nIHR3aWNlIGhlcmU6XG5cbiAgICAgICAgIDEpIGZpcnN0IHRpbWUgd2hlbiByb3VuZGluZyBbeCAqLiBvcmRlcl0gb3IgW3ggLy4gb3JkZXJdIHRvIHRoZSBuZWFyZXN0IGZsb2F0XG4gICAgICAgICAoanVzdCB0aGUgbm9ybWFsIHdheSBmbG9hdGluZy1wb2ludCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiB3b3JrcyksXG5cbiAgICAgICAgIDIpIHNlY29uZCB0aW1lIHdoZW4gYXBwbHlpbmcgW3JvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuXSB0byB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgYWJvdmUgb3BlcmF0aW9uXG5cbiAgICAgICAgIFNvIGZvciBhcmd1bWVudHMgd2l0aGluIGFuIHVscCBmcm9tIGEgdGllIHdlIG1pZ2h0IHN0aWxsIHByb2R1Y2UgYW4gb2ZmLWJ5LW9uZVxuICAgICAgICAgcmVzdWx0LiAqKVxuICAgICAgdGhlbiBvZl9zdHJpbmcgKHNwcmludGYgXCIlLipnXCIgc2QgeClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3JkZXIgPSBpbnRfcG93IDEwLiBhYnNfZGQgaW5cbiAgICAgICAgaWYgZGQgPj0gMFxuICAgICAgICB0aGVuIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4ICouIG9yZGVyKSAvLiBvcmRlclxuICAgICAgICBlbHNlIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4IC8uIG9yZGVyKSAqLiBvcmRlcikpKVxuOztcblxubGV0IHJvdW5kX3NpZ25pZmljYW50IHggfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIHNpZ25pZmljYW50X2RpZ2l0cyAwXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQucm91bmRfc2lnbmlmaWNhbnQ6IGludmFsaWQgYXJndW1lbnQgc2lnbmlmaWNhbnRfZGlnaXRzOiVkXCJcbiAgICAgIHNpZ25pZmljYW50X2RpZ2l0c1xuICAgICAgKClcbiAgZWxzZSByb3VuZF9nZW4geCB+aG93Oihgc2lnbmlmaWNhbnRfZGlnaXRzIHNpZ25pZmljYW50X2RpZ2l0cylcbjs7XG5cbmxldCByb3VuZF9kZWNpbWFsIHggfmRlY2ltYWxfZGlnaXRzID0gcm91bmRfZ2VuIHggfmhvdzooYGRlY2ltYWxfZGlnaXRzIGRlY2ltYWxfZGlnaXRzKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAoKiBjbGFtcF91bmNoZWNrZWQgaXMgaW4gZmxvYXQwLm1sICopXG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgaWYgbWluIDw9IG1heFxuICB0aGVuIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG47O1xuXG5sZXQgKCArICkgPSAoICsuIClcbmxldCAoIC0gKSA9ICggLS4gKVxubGV0ICggKiApID0gKCAqLiApXG5sZXQgKCAqKiApID0gKCAqKiApXG5sZXQgKCAvICkgPSAoIC8uIClcbmxldCAoICUgKSA9ICggJS4gKVxubGV0ICggfi0gKSA9ICggfi0uIClcblxubGV0IHNpZ25fZXhuIHQgOiBTaWduLnQgPVxuICBpZiB0ID4gMC5cbiAgdGhlbiBQb3NcbiAgZWxzZSBpZiB0IDwgMC5cbiAgdGhlbiBOZWdcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiBaZXJvXG4gIGVsc2UgRXJyb3IucmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiRmxvYXQuc2lnbl9leG4gb2YgTkFOXCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IHNpZ25fb3JfbmFuIHQgOiBTaWduX29yX25hbi50ID1cbiAgaWYgdCA+IDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8IDAuIHRoZW4gTmVnIGVsc2UgaWYgdCA9IDAuIHRoZW4gWmVybyBlbHNlIE5hblxuOztcblxubGV0IGllZWVfbmVnYXRpdmUgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgUG9seS4oYml0cyA8IENhbWwuSW50NjQuemVybylcbjs7XG5cbmxldCBleHBvbmVudF9iaXRzID0gMTFcbmxldCBtYW50aXNzYV9iaXRzID0gNTJcbmxldCBleHBvbmVudF9tYXNrNjQgPSBJbnQ2NC4oc2hpZnRfbGVmdCBvbmUgZXhwb25lbnRfYml0cyAtIG9uZSlcbmxldCBleHBvbmVudF9tYXNrID0gSW50NjQudG9faW50X2V4biBleHBvbmVudF9tYXNrNjRcbmxldCBtYW50aXNzYV9tYXNrID0gSW50NjMuKHNoaWZ0X2xlZnQgb25lIG1hbnRpc3NhX2JpdHMgLSBvbmUpXG5sZXQgbWFudGlzc2FfbWFzazY0ID0gSW50NjMudG9faW50NjQgbWFudGlzc2FfbWFza1xuXG5sZXQgaWVlZV9leHBvbmVudCB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2NC4oYml0X2FuZCAoc2hpZnRfcmlnaHRfbG9naWNhbCBiaXRzIG1hbnRpc3NhX2JpdHMpIGV4cG9uZW50X21hc2s2NClcbiAgfD4gQ2FtbC5JbnQ2NC50b19pbnRcbjs7XG5cbmxldCBpZWVlX21hbnRpc3NhIHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIEludDYzLm9mX2ludDY0X2V4biBDYW1sLkludDY0Lihsb2dhbmQgYml0cyBtYW50aXNzYV9tYXNrNjQpXG47O1xuXG5sZXQgY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgaWYgSW50LihiaXRfYW5kIGV4cG9uZW50IGV4cG9uZW50X21hc2sgPD4gZXhwb25lbnQpXG4gIHRoZW4gZmFpbHdpdGhmIFwiZXhwb25lbnQgJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBleHBvbmVudCBleHBvbmVudF9tYXNrICgpXG4gIGVsc2UgaWYgSW50NjMuKGJpdF9hbmQgbWFudGlzc2EgbWFudGlzc2FfbWFzayA8PiBtYW50aXNzYSlcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJtYW50aXNzYSAlcyBvdXQgb2YgcmFuZ2UgWzAsICVzXVwiXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhKVxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYV9tYXNrKVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHNpZ25fYml0cyA9IGlmIG5lZ2F0aXZlIHRoZW4gQ2FtbC5JbnQ2NC5taW5faW50IGVsc2UgQ2FtbC5JbnQ2NC56ZXJvIGluXG4gICAgbGV0IGV4cHRfYml0cyA9IENhbWwuSW50NjQuc2hpZnRfbGVmdCAoQ2FtbC5JbnQ2NC5vZl9pbnQgZXhwb25lbnQpIG1hbnRpc3NhX2JpdHMgaW5cbiAgICBsZXQgbWFudF9iaXRzID0gSW50NjMudG9faW50NjQgbWFudGlzc2EgaW5cbiAgICBsZXQgYml0cyA9IENhbWwuSW50NjQuKGxvZ29yIHNpZ25fYml0cyAobG9nb3IgZXhwdF9iaXRzIG1hbnRfYml0cykpIGluXG4gICAgQ2FtbC5JbnQ2NC5mbG9hdF9vZl9iaXRzIGJpdHMpXG47O1xuXG5sZXQgY3JlYXRlX2llZWUgfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSlcbjs7XG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRvX3N0cmluZyB4ID0gUHJpbnRmLnNwcmludGYgXCIlLjhHXCIgeFxuICBsZXQgc2V4cF9vZl90IHggPSBTZXhwLkF0b20gKHRvX3N0cmluZyB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9zdHJpbmcgeFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogVGhlc2UgYXJlIHBhcnRseSBoZXJlIGFzIGEgcGVyZm9ybWFuY2UgaGFjayB0byBhdm9pZCBzb21lIGJveGluZyB3ZSdyZSBnZXR0aW5nIHdpdGhcbiAgIHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXS4gIFRoZXkgYWxzbyBtYWtlIFtGbG9hdC5pc19uZWdhdGl2ZSBuYW5dIGFuZFxuICAgW0Zsb2F0LmlzX25vbl9wb3NpdGl2ZSBuYW5dIHJldHVybiBbZmFsc2VdOyB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10gcmV0dXJuXG4gICBbdHJ1ZV0uICopXG5sZXQgaXNfcG9zaXRpdmUgdCA9IHQgPiAwLlxubGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gdCA+PSAwLlxubGV0IGlzX25lZ2F0aXZlIHQgPSB0IDwgMC5cbmxldCBpc19ub25fcG9zaXRpdmUgdCA9IHQgPD0gMC5cblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRmxvYXRcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCAlICkgPSAoICUgKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludCA9IG9mX2ludFxuICBsZXQgb2ZfZmxvYXQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgT19kb3QgPSBzdHJ1Y3RcbiAgbGV0ICggKi4gKSA9ICggKiApXG4gIGxldCAoICsuICkgPSAoICsgKVxuICBsZXQgKCAtLiApID0gKCAtIClcbiAgbGV0ICggLy4gKSA9ICggLyApXG4gIGxldCAoICUuICkgPSAoICUgKVxuICBsZXQgKCB+LS4gKSA9ICggfi0gKVxuICBsZXQgKCAqKi4gKSA9ICggKiogKVxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBib3ggPSBib3hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCA9IGNsYW1wX3VuY2hlY2tlZFxuICBsZXQgbG93ZXJfYm91bmRfZm9yX2ludCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgPSB1cHBlcl9ib3VuZF9mb3JfaW50XG4gIGxldCBzcGVjaWFsaXplZF9oYXNoID0gaGFzaF9mbG9hdFxuICBsZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgbGV0IGlyb3VuZF9uZWFyZXN0X2V4bl82NCA9IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogVGhlc2UgZnVuY3Rpb25zIHNwZWNpZmljYWxseSByZXBsYWNlIGRlZmF1bHRzIGluIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5cblxuICAgVGhlIGRlc2lyZWQgYmVoYXZpb3IgaGVyZSBpcyB0byBwcm9wYWdhdGUgYSBuYW4gaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbi4gQmVjYXVzZSB0aGVcbiAgIGZpcnN0IGNvbXBhcmlzb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4sIGl0IHN1ZmZpY2VzIHRvXG4gICBjaGVjayBpZiB4IGlzIG5hbi4gVGhlbiwgd2hlbiB4IGlzIG5hbiBvciBib3RoIHggYW5kIHkgYXJlIG5hbiwgd2UgcmV0dXJuIHggPSBuYW47IGFuZFxuICAgd2hlbiB5IGlzIG5hbiBidXQgbm90IHgsIHdlIHJldHVybiB5ID0gbmFuLlxuXG4gICBUaGVyZSBhcmUgdmFyaW91cyB3YXlzIHRvIGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMuICBUaGUgYmVuY2htYXJrIGJlbG93IHNob3dzIGEgZmV3XG4gICBkaWZmZXJlbnQgdmVyc2lvbnMuICBUaGlzIGJlbmNobWFyayB3YXMgcnVuIG92ZXIgYW4gYXJyYXkgb2YgcmFuZG9tIGZsb2F0cyAobm9uZSBvZlxuICAgd2hpY2ggYXJlIG5hbikuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjQydXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAyLjAydXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjg4dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcblxuICAgVGhlIGJlbmNobWFyayBiZWxvdyB3YXMgcnVuIHdoZW4geCA+IHkgaXMgYWx3YXlzIHRydWUgKGFnYWluLCBubyBuYW4gdmFsdWVzKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuODN1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuOTd1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuNTZ1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuKilcbmxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxubGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQnVmZmVyX2ludGZcbmluY2x1ZGUgQ2FtbC5CdWZmZXJcblxubGV0IGNvbnRlbnRzX2J5dGVzID0gdG9fYnl0ZXNcbmxldCBhZGRfc3Vic3RyaW5nIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3Vic3RyaW5nIHQgcyBwb3MgbGVuXG5sZXQgYWRkX3N1YmJ5dGVzIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3ViYnl0ZXMgdCBzIHBvcyBsZW5cbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2Zfc3RyaW5nIChjb250ZW50cyB0KVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJ5dGVzLnRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBDYW1sLkJ1ZmZlci5ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChDYW1sLkJ1ZmZlcikgKFRvX2J5dGVzKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VcblxubGV0IGVsaWRlID0gcmVmIGZhbHNlXG5sZXQgZWxpZGVkX21lc3NhZ2UgPSBcIjxiYWNrdHJhY2UgZWxpZGVkIGluIHRlc3Q+XCJcblxubGV0IGdldCA/KGF0X21vc3RfbnVtX2ZyYW1lcyA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgQ2FtbC5QcmludGV4Yy5nZXRfY2FsbHN0YWNrIGF0X21vc3RfbnVtX2ZyYW1lc1xuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgaWYgIWVsaWRlIHRoZW4gZWxpZGVkX21lc3NhZ2UgZWxzZSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHRcbjs7XG5cbmxldCB0b19zdHJpbmdfbGlzdCB0ID0gU3RyaW5nLnNwbGl0X2xpbmVzICh0b19zdHJpbmcgdClcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuTGlzdCAoTGlzdC5tYXAgKHRvX3N0cmluZ19saXN0IHQpIH5mOihmdW4geCAtPiBTZXhwLkF0b20geCkpXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHNldF9yZWNvcmRpbmcgPSBDYW1sLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbiAgbGV0IGFtX3JlY29yZGluZyA9IENhbWwuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuICBsZXQgbW9zdF9yZWNlbnQgKCkgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpXG5cbiAgbGV0IG1vc3RfcmVjZW50X2Zvcl9leG4gZXhuID1cbiAgICBpZiBFeG4uaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG4gdGhlbiBTb21lIChtb3N0X3JlY2VudCAoKSkgZWxzZSBOb25lXG4gIDs7XG5cbiAgKCogV2UgdHVybiBvbiBiYWNrdHJhY2VzIGJ5IGRlZmF1bHQgaWYgT0NBTUxSVU5QQVJBTSBkb2Vzbid0IGV4cGxpY2l0bHkgbWVudGlvbiB0aGVtLiAqKVxuICBsZXQgbWF5YmVfc2V0X3JlY29yZGluZyAoKSA9XG4gICAgbGV0IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyA9XG4gICAgICBtYXRjaCBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHggLT4gTGlzdC5leGlzdHMgKFN0cmluZy5zcGxpdCB4IH5vbjonLCcpIH5mOihTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCJiXCIpXG4gICAgaW5cbiAgICBpZiBub3Qgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzIHRoZW4gc2V0X3JlY29yZGluZyB0cnVlXG4gIDs7XG5cbiAgKCogdGhlIGNhbGxlciBzZXQgc29tZXRoaW5nLCB0aGV5IGFyZSByZXNwb25zaWJsZSAqKVxuXG4gIGxldCB3aXRoX3JlY29yZGluZyBiIH5mID1cbiAgICBsZXQgc2F2ZWQgPSBhbV9yZWNvcmRpbmcgKCkgaW5cbiAgICBzZXRfcmVjb3JkaW5nIGI7XG4gICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBzZXRfcmVjb3JkaW5nIHNhdmVkKVxuICA7O1xuZW5kXG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IEV4bi5tYXliZV9zZXRfcmVjb3JkaW5nICgpXG4iLCIoKiogVGhpcyBtb2R1bGUgaXMgdGhlIHRvcGxldmVsIG9mIHRoZSBCYXNlIGxpYnJhcnk7IGl0J3Mgd2hhdCB5b3UgZ2V0IHdoZW4geW91IHdyaXRlXG4gICAgW29wZW4gQmFzZV0uXG5cbiAgICBUaGUgZ29hbCBvZiBCYXNlIGlzIGJvdGggdG8gYmUgYSBtb3JlIGNvbXBsZXRlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggcmljaGVyIEFQSXMsXG4gICAgYW5kIHRvIGJlIG1vcmUgY29uc2lzdGVudCBpbiBpdHMgZGVzaWduLiBGb3IgaW5zdGFuY2UsIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5XG4gICAgc29tZSB0aGluZ3MgaGF2ZSBtb2R1bGVzIGFuZCBvdGhlcnMgZG9uJ3Q7IGluIEJhc2UsIGV2ZXJ5dGhpbmcgaXMgYSBtb2R1bGUuXG5cbiAgICBCYXNlIGV4dGVuZHMgc29tZSBtb2R1bGVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgbGlrZSBbQXJyYXldLFxuICAgIFtCdWZmZXJdLCBbQnl0ZXNdLCBbQ2hhcl0sIFtIYXNodGJsXSwgW0ludDMyXSwgW0ludDY0XSwgW0xhenldLCBbTGlzdF0sIFtNYXBdLFxuICAgIFtOYXRpdmVpbnRdLCBbUHJpbnRmXSwgW1JhbmRvbV0sIFtTZXRdLCBbU3RyaW5nXSwgW1N5c10sIGFuZCBbVWNoYXJdLiBPbmUga2V5XG4gICAgZGlmZmVyZW5jZSBpcyB0aGF0IEJhc2UgZG9lc24ndCB1c2UgZXhjZXB0aW9ucyBhcyBtdWNoIGFzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGFuZFxuICAgIGluc3RlYWQgbWFrZXMgaGVhdnkgdXNlIG9mIHRoZSBbUmVzdWx0XSB0eXBlLCBhcyBpbjpcblxuICAgIHtbIHR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiIF19XG5cbiAgICBCYXNlIGFsc28gYWRkcyBlbnRpcmVseSBuZXcgbW9kdWxlcywgbW9zdCBub3RhYmx5OlxuXG4gICAgLSBbQ29tcGFyYWJsZV0sIFtDb21wYXJhdG9yXSwgYW5kIFtDb21wYXJpc29uc10gaW4gbGlldSBvZiBwb2x5bW9ycGhpYyBjb21wYXJlLlxuICAgIC0gW0NvbnRhaW5lcl0sIHdoaWNoIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgYWNyb3NzIGNvbnRhaW5lci1saWtlIGRhdGFcbiAgICAgIHN0cnVjdHVyZXMgKGFycmF5cywgbGlzdHMsIHN0cmluZ3MpLlxuICAgIC0gW1Jlc3VsdF0sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdLCBzdXBwb3J0aW5nIHRoZSBvci1lcnJvciBwYXR0ZXJuLlxuKilcblxuKCpfIFdlIGhpZGUgdGhpcyBmcm9tIHRoZSB3ZWIgZG9jcyBiZWNhdXNlIHRoZSBsaW5lIHdyYXBwaW5nIGlzIGJhZCwgbWFraW5nIGl0XG4gIHByZXR0eSBtdWNoIGluc2NydXRhYmxlLiAqKVxuKCoqLyoqKVxuXG4oKiBUaGUgaW50ZW50IGlzIHRvIHNoYWRvdyBhbGwgb2YgSU5SSUEncyBzdGFuZGFyZCBsaWJyYXJ5LiAgTW9kdWxlcyBiZWxvdyB3b3VsZCBjYXVzZVxuICAgY29tcGlsYXRpb24gZXJyb3JzIHdpdGhvdXQgYmVpbmcgcmVtb3ZlZCBmcm9tIFtTaGFkb3dfc3RkbGliXSBiZWZvcmUgaW5jbHVzaW9uLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICAoKiBNb2R1bGVzIGRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbl9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuSW5fY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIE91dF9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuT3V0X2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgUHJpbnRmIDo9IFNoYWRvd19zdGRsaWIuUHJpbnRmXG4gIHdpdGggbW9kdWxlIFF1ZXVlIDo9IFNoYWRvd19zdGRsaWIuUXVldWVcbiAgd2l0aCBtb2R1bGUgUmFuZG9tIDo9IFNoYWRvd19zdGRsaWIuUmFuZG9tXG4gIHdpdGggbW9kdWxlIFJlc3VsdCA6PSBTaGFkb3dfc3RkbGliLlJlc3VsdFxuICB3aXRoIG1vZHVsZSBTZXQgOj0gU2hhZG93X3N0ZGxpYi5TZXRcbiAgd2l0aCBtb2R1bGUgU3RhY2sgOj0gU2hhZG93X3N0ZGxpYi5TdGFja1xuICB3aXRoIG1vZHVsZSBTdHJpbmcgOj0gU2hhZG93X3N0ZGxpYi5TdHJpbmdcbiAgd2l0aCBtb2R1bGUgU3lzIDo9IFNoYWRvd19zdGRsaWIuU3lzXG4gIHdpdGggbW9kdWxlIFVjaGFyIDo9IFNoYWRvd19zdGRsaWIuVWNoYXJcbiAgd2l0aCBtb2R1bGUgVW5pdCA6PSBTaGFkb3dfc3RkbGliLlVuaXRcbiAgKCogU3VwcG9ydCBmb3IgZ2VuZXJhdGVkIGxleGVycyAqKVxuICB3aXRoIG1vZHVsZSBMZXhpbmcgOj0gU2hhZG93X3N0ZGxpYi5MZXhpbmdcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWYpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqKi8qKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2hhciA9IENoYXJcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIEVpdGhlciA9IEVpdGhlclxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gRXhuXG5tb2R1bGUgRmllbGQgPSBGaWVsZFxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2hlciA9IEhhc2hlclxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmRcbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmdcbm1vZHVsZSBPcHRpb24gPSBPcHRpb25cbm1vZHVsZSBPcHRpb25fYXJyYXkgPSBPcHRpb25fYXJyYXlcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgUG9seSA9IFBvbHlcbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlID0gUG9seSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTFdIHVzZSBbUG9seV0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgUG9wY291bnQgPSBQb3Bjb3VudFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gdGhlIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tID0gUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IFN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gU3lzXG5tb2R1bGUgVCA9IFRcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbigqIEF2b2lkIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZm9yIHVzZXMgb2YgdGhlIHNpZ25hdHVyZXMgZGVmaW5lZCBpbiBbVF0uICopXG5pbmNsdWRlIFRcblxuKCogVGhpcyBpcyBhIGhhY2sgc28gdGhhdCBvZG9jIGNyZWF0ZXMgYmV0dGVyIGRvY3VtZW50YXRpb24uICopXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBfd2l0aF9jb21wYXJhYmxlICgqKiBAaW5saW5lICopXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpZWxkc2xpYiA9IEZpZWxkc2xpYlxuICBtb2R1bGUgUHB4X2hhc2hfbGliID0gUHB4X2hhc2hfbGliXG4gIG1vZHVsZSBWYXJpYW50c2xpYiA9IFZhcmlhbnRzbGliXG4gIG1vZHVsZSBQcHhfY29tcGFyZV9saWIgPSBQcHhfY29tcGFyZV9saWJcbiAgbW9kdWxlIFBweF9lbnVtZXJhdGVfbGliID0gUHB4X2VudW1lcmF0ZV9saWJcblxuICBsZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmdcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0gYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZSBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBpbnQgPSBBcnJheS5jb21wYXJlXG4gIGxldCBlcXVhbF9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gYm9vbCA9IEFycmF5LmVxdWFsXG5cbiAgbGV0IGFycmF5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGFycmF5ID1cbiAgICBBcnJheS50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9hcnJheSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIEFycmF5LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAoYXJyYXlfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGFycmF5IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBBcnJheS50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYm9vbCA9IChCb29sLmNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50KVxuICBsZXQgZXF1YWxfYm9vbCA9IChCb29sLmVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfYm9vbCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEJvb2wuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfYm9vbCA6IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEJvb2wuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBib29sX29mX3NleHAgPSAoQm9vbC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYm9vbClcbiAgbGV0IHNleHBfb2ZfYm9vbCA9IChCb29sLnNleHBfb2ZfdCA6IGJvb2wgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCb29sLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfY2hhciA9IChDaGFyLmNvbXBhcmUgOiBjaGFyIC0+IGNoYXIgLT4gaW50KVxuICBsZXQgZXF1YWxfY2hhciA9IChDaGFyLmVxdWFsIDogY2hhciAtPiBjaGFyIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfY2hhciA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIENoYXIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfY2hhciA6IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IENoYXIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBjaGFyX29mX3NleHAgPSAoQ2hhci50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gY2hhcilcbiAgbGV0IHNleHBfb2ZfY2hhciA9IChDaGFyLnNleHBfb2ZfdCA6IGNoYXIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBDaGFyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGV4biA9IEV4bi50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX2V4biA9IChFeG4uc2V4cF9vZl90IDogZXhuIC0+IFNleHBsaWIwLlNleHAudClcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Zsb2F0ID0gKEZsb2F0LmNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG4gIGxldCBlcXVhbF9mbG9hdCA9IChGbG9hdC5lcXVhbCA6IGZsb2F0IC0+IGZsb2F0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfZmxvYXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgRmxvYXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gRmxvYXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBmbG9hdF9vZl9zZXhwID0gKEZsb2F0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBmbG9hdClcbiAgbGV0IHNleHBfb2ZfZmxvYXQgPSAoRmxvYXQuc2V4cF9vZl90IDogZmxvYXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludCA9IEludC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludCA9IChJbnQuY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50ID0gKEludC5lcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIEludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQgOiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludF9vZl9zZXhwID0gKEludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50KVxuICBsZXQgc2V4cF9vZl9pbnQgPSAoSW50LnNleHBfb2ZfdCA6IGludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDMyID0gKEludDMyLmNvbXBhcmUgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQzMiA9IChJbnQzMi5lcXVhbCA6IGludDMyIC0+IGludDMyIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50MzIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50MzIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50MzIgOiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50MzIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQzMl9vZl9zZXhwID0gKEludDMyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQzMilcbiAgbGV0IHNleHBfb2ZfaW50MzIgPSAoSW50MzIuc2V4cF9vZl90IDogaW50MzIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDMyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQ2NCA9IChJbnQ2NC5jb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50NjQgPSAoSW50NjQuZXF1YWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludDY0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDY0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDY0IDogaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDY0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50NjRfb2Zfc2V4cCA9IChJbnQ2NC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50NjQpXG4gIGxldCBzZXhwX29mX2ludDY0ID0gKEludDY0LnNleHBfb2ZfdCA6IGludDY0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQ2NC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGludCA9IExpc3QuY29tcGFyZVxuICBsZXQgZXF1YWxfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGJvb2wgPSBMaXN0LmVxdWFsXG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBsaXN0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIExpc3QuaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgbGlzdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBsaXN0ID1cbiAgICBMaXN0LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2xpc3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgbGlzdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIExpc3Quc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChsaXN0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGxpc3QgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBMaXN0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5jb21wYXJlIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmVxdWFsIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX25hdGl2ZWludCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gTmF0aXZlaW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X29mX3NleHAgPSAoTmF0aXZlaW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBuYXRpdmVpbnQpXG4gIGxldCBzZXhwX29mX25hdGl2ZWludCA9IChOYXRpdmVpbnQuc2V4cF9vZl90IDogbmF0aXZlaW50IC0+IFNleHBsaWIwLlNleHAudClcblxuICBsZXQgKG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBOYXRpdmVpbnQudF9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gaW50ID1cbiAgICBPcHRpb24uY29tcGFyZVxuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gYm9vbCA9XG4gICAgT3B0aW9uLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIG9wdGlvblxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBPcHRpb24uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIG9wdGlvbiA9XG4gICAgT3B0aW9uLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX29wdGlvbiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBvcHRpb24gLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBPcHRpb24uc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChvcHRpb25fc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIG9wdGlvbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gT3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gaW50ID0gUmVmLmNvbXBhcmVcbiAgbGV0IGVxdWFsX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBib29sID0gUmVmLmVxdWFsXG5cbiAgbGV0IHJlZl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSByZWYgPVxuICAgIFJlZi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9yZWYgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgcmVmIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgUmVmLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAocmVmX3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHJlZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlZi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3N0cmluZyA9IChTdHJpbmcuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICBsZXQgZXF1YWxfc3RyaW5nID0gKFN0cmluZy5lcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9zdHJpbmcgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFN0cmluZy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9zdHJpbmcgOiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFN0cmluZy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHN0cmluZ19vZl9zZXhwID0gKFN0cmluZy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gc3RyaW5nKVxuICBsZXQgc2V4cF9vZl9zdHJpbmcgPSAoU3RyaW5nLnNleHBfb2ZfdCA6IHN0cmluZyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2J5dGVzID0gKEJ5dGVzLmNvbXBhcmUgOiBieXRlcyAtPiBieXRlcyAtPiBpbnQpXG4gIGxldCBlcXVhbF9ieXRlcyA9IChCeXRlcy5lcXVhbCA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGJvb2wpXG4gIGxldCBieXRlc19vZl9zZXhwID0gKEJ5dGVzLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBieXRlcylcbiAgbGV0IHNleHBfb2ZfYnl0ZXMgPSAoQnl0ZXMuc2V4cF9vZl90IDogYnl0ZXMgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJ5dGVzLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfdW5pdCA9IChVbml0LmNvbXBhcmUgOiB1bml0IC0+IHVuaXQgLT4gaW50KVxuICBsZXQgZXF1YWxfdW5pdCA9IChVbml0LmVxdWFsIDogdW5pdCAtPiB1bml0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdW5pdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFVuaXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfdW5pdCA6IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFVuaXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB1bml0X29mX3NleHAgPSAoVW5pdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdW5pdClcbiAgbGV0IHNleHBfb2ZfdW5pdCA9IChVbml0LnNleHBfb2ZfdCA6IHVuaXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBVbml0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICAoKiogRm9ybWF0IHN0dWZmICopXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcblxuICAoKiogTGlzdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIExpc3QuSW5maXhcblxuICAoKiogSW50IG9wZXJhdG9ycyBhbmQgY29tcGFyaXNvbnMgKilcblxuICBpbmNsdWRlIEludC5PXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICgqKiBGbG9hdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIEZsb2F0Lk9fZG90XG5cbiAgKCogVGhpcyBpcyBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBiZSBvcHRpbWl6ZWQgYXdheSBpbiBtb3JlIGNvbnRleHRzLiAqKVxuXG4gICgqKiBSZXZlcnNlIGFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbeCB8PiBnIHw+IGZdIGlzIGVxdWl2YWxlbnQgdG8gW2YgKGcgKHgpKV0uICopXG4gIGV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbiAgKCoqIEFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbZyBAQCBmIEBAIHhdIGlzIGVxdWl2YWxlbnQgdG8gW2cgKGYgKHgpKV0uICopXG4gIGV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbiAgKCoqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG4gICgqIFRoZXNlIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gZ2V0IHRoZSBsYXp5IGJlaGF2aW9yICopXG4gIGV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIGV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbiAgKCogVGhpcyBtdXN0IGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseS4gKilcbiAgZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuICAoKiogQ29tbW9uIHN0cmluZyBvcGVyYXRpb25zICopXG4gIGxldCAoIF4gKSA9IFN0cmluZy4oIF4gKVxuXG4gICgqKiBSZWZlcmVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZSBhbmRcbiAgICAgdG8ga2VlcCByZWZlcmVuY2UgdW5ib3hpbmcgd29ya2luZyAqKVxuICBleHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbiAgZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4gICgqKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuICBsZXQgZnN0ID0gZnN0XG4gIGxldCBzbmQgPSBzbmRcblxuICAoKiogRXhjZXB0aW9ucyBzdHVmZiAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHNvIHRoYXQgdGhlIGNvbXBpbGVyIG1heSByZXdyaXRlICclcmFpc2UnIGFzICclcmVyYWlzZScuICopXG4gIGV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbiAgbGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbiAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgKCoqIE1pc2MgKilcblxuICBsZXQgcGh5c19lcXVhbCA9IHBoeXNfZXF1YWxcblxuICBleHRlcm5hbCBmb3JjZSA6ICdhIExhenkudCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbmluY2x1ZGUgQ29udGFpbmVyX2ludGYuRXhwb3J0ICgqKiBAaW5saW5lICopXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IE5vdF9mb3VuZF9zXG5cbigqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgIFtCYXNlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQmFzZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIFtCYXNlXTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgW0Jhc2UuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEJhY2t0cmFjZS5pbml0aWFsaXplX21vZHVsZSAoKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9jYXRpb25cblxubGV0IHNldF9pbnB1dF9uYW1lIG5hbWUgPSBpbnB1dF9uYW1lIDo9IG5hbWVcblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTM3XCJdXG5cbiAgdHlwZSBvbGRfdCAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24uZXJyb3IgKikgPSB7XG4gICAgbG9jOiB0O1xuICAgIG1zZzogc3RyaW5nO1xuICAgIHN1Yjogb2xkX3QgbGlzdDtcbiAgICBpZl9oaWdobGlnaHQ6IHN0cmluZztcbiAgfVxuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0X2tpbmQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0X2tpbmQgKikgPVxuICB8IFJlcG9ydF9lcnJvclxuICB8IFJlcG9ydF93YXJuaW5nIG9mIHN0cmluZ1xuICB8IFJlcG9ydF93YXJuaW5nX2FzX2Vycm9yIG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydCBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnRfYXNfZXJyb3Igb2Ygc3RyaW5nXG5cbiAgdHlwZSBsb2NhdGlvbl9tc2cgPSAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSBsb2NcblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnQgKikgPSB7XG4gICAga2luZCA6IGxvY2F0aW9uX3JlcG9ydF9raW5kO1xuICAgIG1haW4gOiBsb2NhdGlvbl9tc2c7XG4gICAgc3ViIDogbG9jYXRpb25fbXNnIGxpc3Q7XG4gIH1cblxuICB0eXBlIHQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24uZXJyb3IgKikgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gb2xkX3QgKilcbiAgKCoqIE9uIG9jYW1sID49IDQuMDg6IFt0XSBpcyBhIFtsb2NhdGlvbl9yZXBvcnRdIGZvciB3aGljaCBbbG9jYXRpb25fcmVwb3J0X2tpbmRdIG11c3QgYmUgW1JlcG9ydF9lcnJvcl0uICopXG5cbiAgdHlwZSB2ZXJzaW9uX3NwZWNpZmljX3QgPSBbYE5ld19lcnJvciBvZiBsb2NhdGlvbl9yZXBvcnQgfCBgT2xkX2Vycm9yIG9mIG9sZF90XVxuXG4gIGxldCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCA6IHQgLT4gdmVyc2lvbl9zcGVjaWZpY190ID0gZnVuIHggLT5cbiAgICAoKklGX0FUX0xFQVNUIDQwOCBgTmV3X2Vycm9yIHggKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggYE9sZF9lcnJvciB4ICopXG5cbiAgbGV0IGlzX3dlbGxfZm9ybWVkIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsga2luZCA9IFJlcG9ydF9lcnJvcjsgXyB9IC0+IHRydWVcbiAgICB8IGBOZXdfZXJyb3IgXyAtPiBmYWxzZVxuICAgIHwgYE9sZF9lcnJvciBfIC0+IHRydWVcblxuICBsZXQgc3RyaW5nX29mX2xvY2F0aW9uX21zZyAobXNnIDogbG9jYXRpb25fbXNnKSA9IEZvcm1hdC5hc3ByaW50ZiBcIiV0XCIgbXNnLnR4dFxuXG4gIGxldCBtYWluX21zZyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IG1haW47IF8gfSAtPlxuICAgICAgICB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgbWFpbjsgbG9jID0gbWFpbi5sb2MgfVxuICAgIHwgYE9sZF9lcnJvciB7IG1zZzsgbG9jOyBfIH0gLT4geyB0eHQgPSBtc2c7IGxvYyB9XG5cbiAgbGV0IHN1Yl9tc2dzIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGVyciAtPiB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgZXJyOyBsb2MgPSBlcnIubG9jIH0pXG4gICAgICAgICAgc3ViXG4gICAgfCBgT2xkX2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgbGV0IHJlYyBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICB8IHsgbG9jOyBtc2c7IHN1YjsgXyB9IDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyAoeyB0eHQgPSBtc2c7IGxvYyB9IDo6IGFjYykgKHN1YiBAIHRhaWwpXG4gICAgICAgIGluXG4gICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgW10gc3ViXG5cbiAgbGV0IG9mX2V4biBleG4gPVxuICAgICgqSUZfQVRfTEVBU1QgNDA2IG1hdGNoIGVycm9yX29mX2V4biBleG4gd2l0aCB8IFNvbWUgKGBPayBlKSAtPiBTb21lIGUgfCBOb25lIHwgU29tZSBgQWxyZWFkeV9kaXNwbGF5ZWQgLT4gTm9uZSAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwNiBlcnJvcl9vZl9leG4gZXhuKilcblxuICBsZXQgX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnID0geyBlcnJvciB3aXRoIG1zZyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyA9XG4gICAgbGV0IHR4dCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBtc2cgaW5cbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIHR4dCB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBzZXRfbWFpbl9tc2cgZXJyb3IgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cqKVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX29sZCB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgbGV0IHN1YiA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHsgbG9jOyB0eHQgfSAtPiB7IGxvYzsgbXNnID0gdHh0OyBzdWIgPSBbXTsgaWZfaGlnaGxpZ2h0ID0gdHh0IH0pXG4gICAgICAgIHN1YlxuICAgIGluXG4gICAgeyBsb2M7IG1zZyA9IHR4dDsgc3ViOyBpZl9oaWdobGlnaHQgPSB0eHQgfVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgbGV0IG1rX3R4dCB4IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIHggaW5cbiAgICBsZXQgbWsgbG9jIHggPSB7IGxvYzsgdHh0ID0gbWtfdHh0IHggfSBpblxuICAgIHtcbiAgICAgIGtpbmQgPSBSZXBvcnRfZXJyb3I7XG4gICAgICBtYWluID0gbWsgbG9jIHR4dDtcbiAgICAgIHN1YiA9IExpc3QubWFwIChmdW4geyBsb2M7IHR4dCB9IC0+IG1rIGxvYyB0eHQpIHN1YjtcbiAgICB9XG5cbiAgbGV0IG1ha2UgfnN1YiBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX29sZCB+c3ViIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiBtc2cqKVxuXG4gIGxldCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MgPSB7IGVycm9yIHdpdGggbG9jIH1cblxuICBsZXQgX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jID1cbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIGxvYyB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBzZXRfbWFpbl9sb2MgZXJyb3IgbG9jID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MqKVxuZW5kXG5cbmxldCByYWlzZV9lcnJvcmYgP2xvYyBtc2cgPSByYWlzZV9lcnJvcmYgP2xvYyBtc2dcbiIsImluY2x1ZGUgT2NhbWxfY29tbW9uLkxvbmdpZGVudFxuXG5sZXQgcGFyc2UgcyA9XG4gICgqSUZfTk9UX0FUX0xFQVNUIDQxMSBwYXJzZSBzICopXG4gICgqSUZfQVRfTEVBU1QgNDExIE9jYW1sX2NvbW1vbi5QYXJzZS5sb25naWRlbnQgQEAgTGV4aW5nLmZyb21fc3RyaW5nIEBAIHMgKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgIFRob21hcyBHYXphZ25haXJlLCBPQ2FtbFBybyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEZhYnJpY2UgTGUgRmVzc2FudCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgSG9uZ2JvIFpoYW5nLCBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3JpZ2luYWwgQ29kZSBmcm9tIEJlci1tZXRhb2NhbWwsIG1vZGlmaWVkIGZvciAzLjEyLjAgYW5kIGZpeGVkICopXG4oKiBQcmludGluZyBjb2RlIGV4cHJlc3Npb25zICopXG4oKiBBdXRob3JzOiAgRWQgUGl6emksIEZhYnJpY2UgTGUgRmVzc2FudCAqKVxuKCogRXh0ZW5zaXZlIFJld3JpdGU6IEhvbmdibyBaaGFuZzogVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgKilcbigqIFRPRE8gbW9yZSBmaW5lLWdyYWluZWQgcHJlY2VkZW5jZSBwcmV0dHktcHJpbnRpbmcgKilcblxub3BlbiBBc3RfNDE0XG5vcGVuIEFzdHR5cGVzXG5vcGVuIEZvcm1hdFxub3BlbiBMb2NhdGlvblxub3BlbiBMb25naWRlbnRcbm9wZW4gUGFyc2V0cmVlXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbmVuZFxuXG5sZXQgdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidmFyaWFibGUgaW4gc2NvcGUgc3ludGF4IGVycm9yOiAlc1wiIHZcbiAgaW5cbiAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBsZXQgZGVzYyA9XG4gICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgIFB0eXBfdmFyIHhcbiAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSkgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lc1xuICAgICAgICAtPlxuICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT4gUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIHYgLT4gY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgdi50eHQpXG4gICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgIGluXG4gICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgbGV0IHByZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICB8IE90YWcgKGxhYmVsLCB0KSAtPiBPdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICBpblxuICBsb29wIHRcblxubGV0IHByZWZpeF9zeW1ib2xzID0gWyAnISc7ICc/JzsgJ34nIF1cblxubGV0IGluZml4X3N5bWJvbHMgPVxuICBbICc9JzsgJzwnOyAnPic7ICdAJzsgJ14nOyAnfCc7ICcmJzsgJysnOyAnLSc7ICcqJzsgJy8nOyAnJCc7ICclJzsgJyMnIF1cblxuKCogdHlwZSBmaXhpdHkgPSBJbmZpeHwgUHJlZml4ICAqKVxubGV0IHNwZWNpYWxfaW5maXhfc3RyaW5ncyA9XG4gIFsgXCJhc3JcIjsgXCJsYW5kXCI7IFwibG9yXCI7IFwibHNsXCI7IFwibHNyXCI7IFwibHhvclwiOyBcIm1vZFwiOyBcIm9yXCI7IFwiOj1cIjsgXCIhPVwiOyBcIjo6XCIgXVxuXG5sZXQgbGV0b3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnbCdcbiAgJiYgcy5bMV0gPSAnZSdcbiAgJiYgcy5bMl0gPSAndCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG5sZXQgYW5kb3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnYSdcbiAgJiYgcy5bMV0gPSAnbidcbiAgJiYgcy5bMl0gPSAnZCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG4oKiBkZXRlcm1pbmVzIGlmIHRoZSBzdHJpbmcgaXMgYW4gaW5maXggc3RyaW5nLlxuICAgY2hlY2tzIGJhY2t3YXJkcywgZmlyc3QgYWxsb3dpbmcgYSByZW5hbWluZyBwb3N0Zml4IChcIl8xMDJcIikgd2hpY2hcbiAgIG1heSBoYXZlIHJlc3VsdGVkIGZyb20gUGV4cCAtPiBUZXhwIC0+IFBleHAgdHJhbnNsYXRpb24sIHRoZW4gY2hlY2tpbmdcbiAgIGlmIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJlIHZhbGlkIGluZml4XG4gICBjaGFyYWN0ZXJzLiAqKVxubGV0IGZpeGl0eV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gYE5vcm1hbFxuICB8IHMgd2hlbiBMaXN0Lm1lbSBzIHNwZWNpYWxfaW5maXhfc3RyaW5ncyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBpbmZpeF9zeW1ib2xzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIHByZWZpeF9zeW1ib2xzIC0+IGBQcmVmaXggc1xuICB8IHMgd2hlbiBzLlswXSA9ICcuJyAtPiBgTWl4Zml4IHNcbiAgfCBzIHdoZW4gbGV0b3AgcyAtPiBgTGV0b3Agc1xuICB8IHMgd2hlbiBhbmRvcCBzIC0+IGBBbmRvcCBzXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCB2aWV3X2ZpeGl0eV9vZl9leHAgPSBmdW5jdGlvblxuICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgIGZpeGl0eV9vZl9zdHJpbmcgbFxuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgaXNfaW5maXggPSBmdW5jdGlvbiBgSW5maXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX21peGZpeCA9IGZ1bmN0aW9uIGBNaXhmaXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX2t3ZG9wID0gZnVuY3Rpb24gYExldG9wIF8gfCBgQW5kb3AgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGZpcnN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLlswXSA9IGNcbmxldCBsYXN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLltTdHJpbmcubGVuZ3RoIHN0ciAtIDFdID0gY1xubGV0IGZpcnN0X2lzX2luIGNzIHN0ciA9IHN0ciA8PiBcIlwiICYmIExpc3QubWVtIHN0ci5bMF0gY3NcblxuKCogd2hpY2ggaWRlbnRpZmllcnMgYXJlIGluIGZhY3Qgb3BlcmF0b3JzIG5lZWRpbmcgcGFyZW50aGVzZXMgKilcbmxldCBuZWVkc19wYXJlbnMgdHh0ID1cbiAgbGV0IGZpeCA9IGZpeGl0eV9vZl9zdHJpbmcgdHh0IGluXG4gIGlzX2luZml4IGZpeCB8fCBpc19taXhmaXggZml4IHx8IGlzX2t3ZG9wIGZpeFxuICB8fCBmaXJzdF9pc19pbiBwcmVmaXhfc3ltYm9scyB0eHRcblxuKCogc29tZSBpbmZpeGVzIG5lZWQgc3BhY2VzIGFyb3VuZCBwYXJlbnMgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIGNvbW1lbnRcbiAgIHN5bnRheCAqKVxubGV0IG5lZWRzX3NwYWNlcyB0eHQgPSBmaXJzdF9pcyAnKicgdHh0IHx8IGxhc3RfaXMgJyonIHR4dFxubGV0IHN0cmluZ19sb2MgcHBmIHggPSBmcHJpbnRmIHBwZiBcIiVzXCIgeC50eHRcblxuKCogYWRkIHBhcmVudGhlc2VzIHRvIGJpbmRlcnMgd2hlbiB0aGV5IGFyZSBpbiBmYWN0IGluZml4IG9yIHByZWZpeCBvcGVyYXRvcnMgKilcbmxldCBwcm90ZWN0X2lkZW50IHBwZiB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiKEA7JXNAOylcIlxuICAgIGVsc2UgXCIoJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHR4dFxuXG5sZXQgcHJvdGVjdF9sb25naWRlbnQgcHBmIHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlYS4lc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIlYS4oQDslc0A7KVwiXG4gICAgZWxzZSBcIiVhLiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0XG5cbnR5cGUgc3BhY2VfZm9ybWF0dGVyID0gKHVuaXQsIEZvcm1hdC5mb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdFxuXG5sZXQgb3ZlcnJpZGUgPSBmdW5jdGlvbiBPdmVycmlkZSAtPiBcIiFcIiB8IEZyZXNoIC0+IFwiXCJcblxuKCogdmFyaWFuY2UgZW5jb2Rpbmc6IG5lZWQgdG8gc3luYyB1cCB3aXRoIHRoZSBbcGFyc2VyLm1seV0gKilcbmxldCB0eXBlX3ZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBOb1ZhcmlhbmNlIC0+IFwiXCJcbiAgfCBDb3ZhcmlhbnQgLT4gXCIrXCJcbiAgfCBDb250cmF2YXJpYW50IC0+IFwiLVwiXG5cbmxldCB0eXBlX2luamVjdGl2aXR5ID0gZnVuY3Rpb24gTm9JbmplY3Rpdml0eSAtPiBcIlwiIHwgSW5qZWN0aXZlIC0+IFwiIVwiXG5cbnR5cGUgY29uc3RydWN0ID1cbiAgWyBgY29ucyBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbGlzdCBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbmlsXG4gIHwgYG5vcm1hbFxuICB8IGBzaW1wbGUgb2YgTG9uZ2lkZW50LnRcbiAgfCBgdHVwbGUgXVxuXG5sZXQgdmlld19leHByIHggPVxuICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiKClcIjsgXyB9LCBfKSAtPiBgdHVwbGVcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGBuaWxcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgXykgLT5cbiAgICAgIGxldCByZWMgbG9vcCBleHAgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwIHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICAgU29tZSB7IHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBlMTsgZTIgXTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgICAgICk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgbG9vcCBlMiAoZTEgOjogYWNjKVxuICAgICAgICB8IGUgLT4gKExpc3QucmV2IChlIDo6IGFjYyksIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBscywgYiA9IGxvb3AgeCBbXSBpblxuICAgICAgaWYgYiB0aGVuIGBsaXN0IGxzIGVsc2UgYGNvbnMgbHNcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeCwgTm9uZSkgLT4gYHNpbXBsZSB4LnR4dFxuICB8IF8gLT4gYG5vcm1hbFxuXG5sZXQgaXNfc2ltcGxlX2NvbnN0cnVjdCA6IGNvbnN0cnVjdCAtPiBib29sID0gZnVuY3Rpb25cbiAgfCBgbmlsIHwgYHR1cGxlIHwgYGxpc3QgXyB8IGBzaW1wbGUgXyAtPiB0cnVlXG4gIHwgYGNvbnMgXyB8IGBub3JtYWwgLT4gZmFsc2VcblxubGV0IHBwID0gZnByaW50ZlxuXG50eXBlIGN0eHQgPSB7IHBpcGUgOiBib29sOyBzZW1pIDogYm9vbDsgaWZ0aGVuZWxzZSA6IGJvb2wgfVxuXG5sZXQgcmVzZXRfY3R4dCA9IHsgcGlwZSA9IGZhbHNlOyBzZW1pID0gZmFsc2U7IGlmdGhlbmVsc2UgPSBmYWxzZSB9XG5sZXQgdW5kZXJfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZSA9IHRydWUgfVxubGV0IHVuZGVyX3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWkgPSB0cnVlIH1cbmxldCB1bmRlcl9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlID0gdHJ1ZSB9XG4oKlxubGV0IHJlc2V0X3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWk9ZmFsc2UgfVxubGV0IHJlc2V0X2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2U9ZmFsc2UgfVxubGV0IHJlc2V0X3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGU9ZmFsc2UgfVxuKilcblxubGV0IGxpc3QgOlxuICAgICAgJ2EuXG4gICAgICA/c2VwOnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgbGlzdCAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9zZXAgP2ZpcnN0ID9sYXN0IGZ1IGYgeHMgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIHNlcCA9IG1hdGNoIHNlcCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJAIFwiIDogXyBmb3JtYXQ2KSBpblxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgIHwgeHMgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgICAgIGZ1IGYgeDtcbiAgICAgICAgICAgICAgcHAgZiBzZXA7XG4gICAgICAgICAgICAgIGxvb3AgZiB4c1xuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBmaXJzdDtcbiAgICAgICAgbG9vcCBmIHhzO1xuICAgICAgICBwcCBmIGxhc3RcbiAgaW5cbiAgYXV4IGYgeHNcblxubGV0IG9wdGlvbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIG9wdGlvbiAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9maXJzdCA/bGFzdCBmdSBmIGEgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NikgaW5cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgcHAgZiBmaXJzdDtcbiAgICAgIGZ1IGYgeDtcbiAgICAgIHBwIGYgbGFzdFxuXG5sZXQgcGFyZW4gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIGJvb2wgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSAtPlxuICAgICAgdW5pdCA9XG4gZnVuID8oZmlyc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpID8obGFzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgYiBmdSBmIHggLT5cbiAgaWYgYiB0aGVuIChcbiAgICBwcCBmIFwiKFwiO1xuICAgIHBwIGYgZmlyc3Q7XG4gICAgZnUgZiB4O1xuICAgIHBwIGYgbGFzdDtcbiAgICBwcCBmIFwiKVwiKVxuICBlbHNlIGZ1IGYgeFxuXG5sZXQgcmVjIGxvbmdpZGVudCBmID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBwcm90ZWN0X2lkZW50IGYgc1xuICB8IExkb3QgKHksIHMpIC0+IHByb3RlY3RfbG9uZ2lkZW50IGYgbG9uZ2lkZW50IHkgc1xuICB8IExhcHBseSAoeSwgcykgLT4gcHAgZiBcIiVhKCVhKVwiIGxvbmdpZGVudCB5IGxvbmdpZGVudCBzXG5cbmxldCBsb25naWRlbnRfbG9jIGYgeCA9IHBwIGYgXCIlYVwiIGxvbmdpZGVudCB4LnR4dFxuXG5sZXQgY29uc3RhbnQgZiA9IGZ1bmN0aW9uXG4gIHwgUGNvbnN0X2NoYXIgaSAtPiBwcCBmIFwiJUNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgTm9uZSkgLT4gcHAgZiBcIiVTXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIFNvbWUgZGVsaW0pIC0+IHBwIGYgXCJ7JXN8JXN8JXN9XCIgZGVsaW0gaSBkZWxpbVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcbiAgfCBQY29uc3RfZmxvYXQgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfZmxvYXQgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcblxuKCogdHJhaWxpbmcgc3BhY2UqKVxubGV0IG11dGFibGVfZmxhZyBmID0gZnVuY3Rpb24gSW1tdXRhYmxlIC0+ICgpIHwgTXV0YWJsZSAtPiBwcCBmIFwibXV0YWJsZUA7XCJcbmxldCB2aXJ0dWFsX2ZsYWcgZiA9IGZ1bmN0aW9uIENvbmNyZXRlIC0+ICgpIHwgVmlydHVhbCAtPiBwcCBmIFwidmlydHVhbEA7XCJcblxuKCogdHJhaWxpbmcgc3BhY2UgYWRkZWQgKilcbmxldCByZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gKCkgfCBSZWN1cnNpdmUgLT4gcHAgZiBcInJlYyBcIlxuXG5sZXQgbm9ucmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+IHBwIGYgXCJub25yZWMgXCIgfCBSZWN1cnNpdmUgLT4gKClcblxubGV0IGRpcmVjdGlvbl9mbGFnIGYgPSBmdW5jdGlvblxuICB8IFVwdG8gLT4gcHAgZiBcInRvQCBcIlxuICB8IERvd250byAtPiBwcCBmIFwiZG93bnRvQCBcIlxuXG5sZXQgcHJpdmF0ZV9mbGFnIGYgPSBmdW5jdGlvbiBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJwcml2YXRlQCBcIlxubGV0IGl0ZXJfbG9jIGYgY3R4dCB7IHR4dDsgbG9jID0gXyB9ID0gZiBjdHh0IHR4dFxubGV0IGNvbnN0YW50X3N0cmluZyBmIHMgPSBwcCBmIFwiJVNcIiBzXG5cbmxldCB0eXZhciBwcGYgcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIHMuWzFdID0gJ1xcJycgdGhlblxuICAgICgqIHdpdGhvdXQgdGhlIHNwYWNlLCB0aGlzIHdvdWxkIGJlIHBhcnNlZCBhc1xuICAgICAgIGEgY2hhcmFjdGVyIGxpdGVyYWwgKilcbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCInICVzXCIgc1xuICBlbHNlIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiclc1wiIHNcblxubGV0IHR5dmFyX2xvYyBmIHN0ciA9IHR5dmFyIGYgc3RyLnR4dFxubGV0IHN0cmluZ19xdW90IGYgeCA9IHBwIGYgXCJgJXNcIiB4XG5cbigqIGMgWydhLCdiXSAqKVxubGV0IHJlYyBjbGFzc19wYXJhbXNfZGVmIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCJbJWFdIFwiICgqIHNwYWNlICopIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5zZXA6XCIsXCIpIGxcblxuYW5kIHR5cGVfd2l0aF9sYWJlbCBjdHh0IGYgKGxhYmVsLCBjKSA9XG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGNvcmVfdHlwZTEgY3R4dCBmIGMgKCogb3RoZXJ3aXNlIHBhcmVudGhlc2l6ZSAqKVxuICB8IExhYmVsbGVkIHMgLT4gcHAgZiBcIiVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG4gIHwgT3B0aW9uYWwgcyAtPiBwcCBmIFwiPyVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG5cbmFuZCBjb3JlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYXJyb3cgKGwsIGN0MSwgY3QyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY3QxKSAoY29yZV90eXBlIGN0eHQpIGN0MlxuICAgIHwgUHR5cF9hbGlhcyAoY3QsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIGN0IHR5dmFyIHNcbiAgICB8IFB0eXBfcG9seSAoW10sIGN0KSAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgfCBQdHlwX3BvbHkgKHNsLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWElYUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhXCJcbiAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSBsKVxuICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHNsIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIHhcblxuYW5kIGNvcmVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGNvcmVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHR5cF92YXIgcyAtPiB0eXZhciBmIHNcbiAgICB8IFB0eXBfdHVwbGUgbCAtPiBwcCBmIFwiKCVhKVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgfCBQdHlwX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgKCogXCIlYSVhQDtcIiAqKSBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgWyB4IF0gLT4gcHAgZiBcIiVhQDtcIiAoY29yZV90eXBlMSBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT4gbGlzdCB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpQDtcIiAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsQDtcIiBmIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3ZhcmlhbnQgKGwsIGNsb3NlZCwgbG93KSAtPlxuICAgICAgICBsZXQgZmlyc3RfaXNfaW5oZXJpdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCB7IFBhcnNldHJlZS5wcmZfZGVzYyA9IFJpbmhlcml0IF8gfSA6OiBfIC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cGVfdmFyaWFudF9oZWxwZXIgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IFJ0YWcgKGwsIF8sIGN0bCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWElYUA7JWFAXVwiIChpdGVyX2xvYyBzdHJpbmdfcXVvdCkgbFxuICAgICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCImXCIpIGN0bClcbiAgICAgICAgICAgICAgICBjdGwgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcmZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgUmluaGVyaXQgY3QgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj5bJWElYV1AXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIChsLCBjbG9zZWQpIHdpdGhcbiAgICAgICAgICAgIHwgW10sIENsb3NlZCAtPiAoKVxuICAgICAgICAgICAgfCBbXSwgT3BlbiAtPiBwcCBmIFwiPlwiICgqIENmICM3MjAwOiBwcmludCBbPl0gY29ycmVjdGx5ICopXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJXNAOyVhXCJcbiAgICAgICAgICAgICAgICAgIChtYXRjaCAoY2xvc2VkLCBsb3cpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBOb25lIC0+IGlmIGZpcnN0X2lzX2luaGVyaXQgdGhlbiBcIiB8XCIgZWxzZSBcIlwiXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgU29tZSBfIC0+IFwiPFwiICgqIEZJWE1FIGRlc3VnYXIgdGhlIHN5bnRheCBzdWdhciopXG4gICAgICAgICAgICAgICAgICB8IE9wZW4sIF8gLT4gXCI+XCIpXG4gICAgICAgICAgICAgICAgICAobGlzdCB0eXBlX3ZhcmlhbnRfaGVscGVyIH5zZXA6XCJAOzwxIC0yPnwgXCIpXG4gICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIGxcbiAgICAgICAgICAoZnVuIGYgbG93IC0+XG4gICAgICAgICAgICBtYXRjaCBsb3cgd2l0aFxuICAgICAgICAgICAgfCBTb21lIFtdIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHhzIC0+IHBwIGYgXCI+QCAlYVwiIChsaXN0IHN0cmluZ19xdW90KSB4cylcbiAgICAgICAgICBsb3dcbiAgICB8IFB0eXBfb2JqZWN0IChsLCBvKSAtPlxuICAgICAgICBsZXQgY29yZV9maWVsZF90eXBlIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBPdGFnIChsLCBjdCkgLT5cbiAgICAgICAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXM6ICVhQCAlYUAgQF1cIiBsLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wb2ZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgT2luaGVyaXQgY3QgLT4gcHAgZiBcIkBbPGhvdjI+JWFAIEBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZmllbGRfdmFyIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgQXN0dHlwZXMuQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgfCBBc3R0eXBlcy5PcGVuIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IHBwIGYgXCIuLlwiIHwgXyAtPiBwcCBmIFwiIDsuLlwiKVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj48QCAlYSVhQCA+IEBdXCJcbiAgICAgICAgICAobGlzdCBjb3JlX2ZpZWxkX3R5cGUgfnNlcDpcIjtcIilcbiAgICAgICAgICBsIGZpZWxkX3ZhciBvXG4gICAgICAgICgqIENmICM3MjAwICopXG4gICAgfCBQdHlwX2NsYXNzIChsaSwgbCkgLT5cbiAgICAgICAgKCpGSVhNRSopXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhIyVhQF1cIlxuICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3BhY2thZ2UgKGxpZCwgY3N0cnMpIC0+IChcbiAgICAgICAgbGV0IGF1eCBmIChzLCBjdCkgPVxuICAgICAgICAgIHBwIGYgXCJ0eXBlICVhQCA9QCAlYVwiIGxvbmdpZGVudF9sb2MgcyAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNzdHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWFAIHdpdGhAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAgICAgKGxpc3QgYXV4IH5zZXA6XCJAIGFuZEAgXCIpIGNzdHJzKVxuICAgIHwgUHR5cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoY29yZV90eXBlIGN0eHQpIGYgeFxuXG4oKioqKioqKioqKioqKioqKioqKipwYXR0ZXJuKioqKioqKioqKioqKioqKioqKiopXG4oKiBiZSBjYXV0aW91cyB3aGVuIHVzZSBbcGF0dGVybl0sIFtwYXR0ZXJuMV0gaXMgcHJlZmVycmVkICopXG5hbmQgcGF0dGVybiBjdHh0IGYgeCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAocGF0dGVybiBjdHh0KVxuICAgICAgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcGF0X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfYWxpYXMgKHAsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHAgcHJvdGVjdF9pZGVudCBzLnR4dFxuICAgIHwgXyAtPiBwYXR0ZXJuX29yIGN0eHQgZiB4XG5cbmFuZCBwYXR0ZXJuX29yIGN0eHQgZiB4ID1cbiAgbGV0IHJlYyBsZWZ0X2Fzc29jaWF0aXZlIHggYWNjID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9vciAocDEsIHAyKTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBsZWZ0X2Fzc29jaWF0aXZlIHAxIChwMiA6OiBhY2MpXG4gICAgfCB4IC0+IHggOjogYWNjXG4gIGluXG4gIG1hdGNoIGxlZnRfYXNzb2NpYXRpdmUgeCBbXSB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gcGF0dGVybjEgY3R4dCBmIHhcbiAgfCBvcnBhdHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IH5zZXA6XCJAIHwgXCIgKHBhdHRlcm4xIGN0eHQpKSBvcnBhdHNcblxuYW5kIHBhdHRlcm4xIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGxldCByZWMgcGF0dGVybl9saXN0X2hlbHBlciBmID0gZnVuY3Rpb25cbiAgICB8IHtcbiAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICBQcGF0X2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgU29tZSAoW10sIHsgcHBhdF9kZXNjID0gUHBhdF90dXBsZSBbIHBhdDE7IHBhdDIgXTsgXyB9KSApO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhOjolYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQxIHBhdHRlcm5fbGlzdF9oZWxwZXIgcGF0MiAoKlJBKilcbiAgICB8IHAgLT4gcGF0dGVybjEgY3R4dCBmIHBcbiAgaW5cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIFNvbWUgcCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIF8pIC0+XG4gICAgICAgIHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoKHsgdHh0OyBfIH0gYXMgbGkpLCBwbykgLT4gKFxuICAgICAgICBpZiAoKiBGSVhNRSBUaGUgdGhpcmQgZmllbGQgYWx3YXlzIGZhbHNlICopXG4gICAgICAgICAgIHR4dCA9IExpZGVudCBcIjo6XCIgdGhlbiBwcCBmIFwiJWFcIiBwYXR0ZXJuX2xpc3RfaGVscGVyIHhcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHBvIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKFtdLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgU29tZSAodmwsIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUAgKHR5cGUgJWEpQDslYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAgICAgICAobGlzdCB+c2VwOlwiQCBcIiBzdHJpbmdfbG9jKVxuICAgICAgICAgICAgICAgIHZsIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGkpXG4gICAgfCBfIC0+IHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfcGF0dGVybiBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoKFwiKClcIiB8IFwiW11cIikgYXMgeCk7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgcHAgZiBcIiVzXCIgeFxuICAgIHwgUHBhdF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiBwcm90ZWN0X2lkZW50IGYgdHh0XG4gICAgfCBQcGF0X2FycmF5IGwgLT4gcHAgZiBcIkBbPDI+W3wlYXxdQF1cIiAobGlzdCAocGF0dGVybjEgY3R4dCkgfnNlcDpcIjtcIikgbFxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBOb25lIH0gLT4gcHAgZiBcIihtb2R1bGVAIF8pQCBcIlxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBTb21lIHMgfSAtPiBwcCBmIFwiKG1vZHVsZUAgJXMpQCBcIiBzXG4gICAgfCBQcGF0X3R5cGUgbGkgLT4gcHAgZiBcIiMlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBwYXRfcmVjb3JkIChsLCBjbG9zZWQpIC0+IChcbiAgICAgICAgbGV0IGxvbmdpZGVudF94X3BhdHRlcm4gZiAobGksIHApID1cbiAgICAgICAgICBtYXRjaCAobGksIHApIHdpdGhcbiAgICAgICAgICB8ICggeyB0eHQgPSBMaWRlbnQgczsgXyB9LFxuICAgICAgICAgICAgICB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0gKVxuICAgICAgICAgICAgd2hlbiBzID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAocGF0dGVybjEgY3R4dCkgcFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjbG9zZWQgd2l0aFxuICAgICAgICB8IENsb3NlZCAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPDI+e0A7JWFAO31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsXG4gICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj57QDslYTtffUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGwpXG4gICAgfCBQcGF0X3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDE+KCVhKUBdXCIgKGxpc3QgfnNlcDpcIixAO1wiIChwYXR0ZXJuMSBjdHh0KSkgbCAoKiBsZXZlbDEqKVxuICAgIHwgUHBhdF9jb25zdGFudCBjIC0+IHBwIGYgXCIlYVwiIGNvbnN0YW50IGNcbiAgICB8IFBwYXRfaW50ZXJ2YWwgKGMxLCBjMikgLT4gcHAgZiBcIiVhLi4lYVwiIGNvbnN0YW50IGMxIGNvbnN0YW50IGMyXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4oJWFAOzpAOyVhKUBdXCIgKHBhdHRlcm4xIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUHBhdF9sYXp5IHAgLT4gcHAgZiBcIkBbPDI+KGxhenlAOyVhKUBdXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfZXhjZXB0aW9uIHAgLT4gcHAgZiBcIkBbPDI+ZXhjZXB0aW9uQDslYUBdXCIgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQcGF0X29wZW4gKGxpZCwgcCkgLT5cbiAgICAgICAgbGV0IHdpdGhfcGFyZW4gPVxuICAgICAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBwYXRfYXJyYXkgXyB8IFBwYXRfcmVjb3JkIF9cbiAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBOb25lKSAtPlxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhIEBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAocGFyZW4gd2l0aF9wYXJlbiBAQCBwYXR0ZXJuMSBjdHh0KVxuICAgICAgICAgIHBcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAocGF0dGVybiBjdHh0KSBmIHhcblxuYW5kIGxhYmVsX2V4cCBjdHh0IGYgKGwsIG9wdCwgcCkgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+XG4gICAgICAoKiBzaW5nbGUgY2FzZSBwYXR0ZXJuIHBhcmVucyBuZWVkZWQgaGVyZSAqKVxuICAgICAgcHAgZiBcIiVhQCBcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICB8IE9wdGlvbmFsIHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICB3aGVuIHR4dCA9IHJlc3QgLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT4gcHAgZiBcIj8oJXM9QDslYSlAO1wiIHJlc3QgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzQCBcIiByZXN0KVxuICAgICAgfCBfIC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCI/JXM6KCVhPUA7JWEpQDtcIiByZXN0IChwYXR0ZXJuMSBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lczolYUA7XCIgcmVzdCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCkpXG4gIHwgTGFiZWxsZWQgbCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IHdoZW4gdHh0ID0gbFxuICAgICAgICAtPlxuICAgICAgICAgIHBwIGYgXCJ+JXNAO1wiIGxcbiAgICAgIHwgXyAtPiBwcCBmIFwifiVzOiVhQDtcIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKVxuXG5hbmQgc3VnYXJfZXhwciBjdHh0IGYgZSA9XG4gIGlmIGUucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZmFsc2VcbiAgZWxzZVxuICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfYXBwbHlcbiAgICAgICAgKCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBpZDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAgICAgIGFyZ3MgKVxuICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biAobGFiLCBfKSAtPiBsYWIgPSBOb2xhYmVsKSBhcmdzIC0+IChcbiAgICAgICAgbGV0IHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBzZXAgcmlnaHQgcHJpbnRfaW5kZXhcbiAgICAgICAgICAgIGluZGljZXMgcmVtX2FyZ3MgPVxuICAgICAgICAgIGxldCBwcmludF9wYXRoIHBwZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBtIC0+IHBwIHBwZiBcIi4lYVwiIGxvbmdpZGVudCBtXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCAoYXNzaWduLCByZW1fYXJncykgd2l0aFxuICAgICAgICAgIHwgZmFsc2UsIFtdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGggcGF0aF9wcmVmaXhcbiAgICAgICAgICAgICAgICBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHQ7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IHRydWUsIFsgdiBdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAIDwtQDs8MSAyPiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoXG4gICAgICAgICAgICAgICAgcGF0aF9wcmVmaXggbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0XG4gICAgICAgICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIHY7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGlkLCBMaXN0Lm1hcCBzbmQgYXJncykgd2l0aFxuICAgICAgICB8IExpZGVudCBcIiFcIiwgWyBlIF0gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3Y+ISVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTtcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgfCBMZG90IChwYXRoLCAoKFwiZ2V0XCIgfCBcInNldFwiKSBhcyBmdW5jKSksIGEgOjogb3RoZXJfYXJncyAtPiAoXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gZnVuYyA9IFwic2V0XCIgaW5cbiAgICAgICAgICAgIGxldCBwcmludCA9IHByaW50X2luZGV4b3AgYSBOb25lIGFzc2lnbiBpblxuICAgICAgICAgICAgbWF0Y2ggKHBhdGgsIG90aGVyX2FyZ3MpIHdpdGhcbiAgICAgICAgICAgIHwgTGlkZW50IFwiQXJyYXlcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuKFwiIFwiXCIgXCIpXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJTdHJpbmdcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuW1wiIFwiXCIgXCJdXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MVwiKSwgaTEgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTJcIiksIGkxIDo6IGkyIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5M1wiKSwgaTEgOjogaTIgOjogaTMgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTI7IGkzIF0gcmVzdFxuICAgICAgICAgICAgfCAoIExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiR2VuYXJyYXlcIiksXG4gICAgICAgICAgICAgICAgeyBwZXhwX2Rlc2MgPSBQZXhwX2FycmF5IGluZGV4ZXM7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gOjogcmVzdFxuICAgICAgICAgICAgICApIC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBpbmRleGVzIHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfCAoTGlkZW50IHMgfCBMZG90IChfLCBzKSksIGEgOjogaSA6OiByZXN0IHdoZW4gZmlyc3RfaXMgJy4nIHMgLT5cbiAgICAgICAgICAgICgqIGV4dHJhY3Qgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICBhc3NpZ25tZW50IG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldCBeIFwiPC1cIl0sXG4gICAgICAgICAgICAgICBhY2Nlc3Mgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0XSBkaXJlY3RseVxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIGxldCBtdWx0aV9pbmRpY2VzID0gU3RyaW5nLmNvbnRhaW5zIHMgJzsnIGluXG4gICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgIG1hdGNoIGkucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IGwgd2hlbiBtdWx0aV9pbmRpY2VzIC0+IGxcbiAgICAgICAgICAgICAgfCBfIC0+IFsgaSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGxhc3RfaXMgJy0nIHMgaW5cbiAgICAgICAgICAgIGxldCBraW5kID1cbiAgICAgICAgICAgICAgKCogZXh0cmFjdCB0aGUgcmlnaHQgZW5kIGJyYWNrZXQgKilcbiAgICAgICAgICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgaWYgYXNzaWduIHRoZW4gcy5bbiAtIDNdIGVsc2Ugcy5bbiAtIDFdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgIHwgJyknIC0+ICgnKCcsIFwiKVwiKVxuICAgICAgICAgICAgICB8ICddJyAtPiAoJ1snLCBcIl1cIilcbiAgICAgICAgICAgICAgfCAnfScgLT4gKCd7JywgXCJ9XCIpXG4gICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcGF0aF9wcmVmaXggPVxuICAgICAgICAgICAgICBtYXRjaCBpZCB3aXRoIExkb3QgKG0sIF8pIC0+IFNvbWUgbSB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0ID0gU3RyaW5nLnN1YiBzIDAgKDEgKyBTdHJpbmcuaW5kZXggcyBsZWZ0KSBpblxuICAgICAgICAgICAgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IFwiO1wiIHJpZ2h0XG4gICAgICAgICAgICAgIChpZiBtdWx0aV9pbmRpY2VzIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGVsc2Ugc2ltcGxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgaSByZXN0XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxuYW5kIGV4cHJlc3Npb24gY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpQCwlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KVxuICAgICAgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wZXhwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZnVuY3Rpb24gXyB8IFBleHBfZnVuIF8gfCBQZXhwX21hdGNoIF8gfCBQZXhwX3RyeSBfIHwgUGV4cF9zZXF1ZW5jZSBfXG4gICAgfCBQZXhwX25ld3R5cGUgX1xuICAgICAgd2hlbiBjdHh0LnBpcGUgfHwgY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCAoUGV4cF9pZnRoZW5lbHNlIF8gfCBQZXhwX3NlcXVlbmNlIF8pIHdoZW4gY3R4dC5pZnRoZW5lbHNlIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2xldCBfIHwgUGV4cF9sZXRtb2R1bGUgXyB8IFBleHBfb3BlbiBfIHwgUGV4cF9sZXRleGNlcHRpb24gX1xuICAgIHwgUGV4cF9sZXRvcCBfXG4gICAgICB3aGVuIGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9mdW4gKGwsIGUwLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyVhLT5AOyVhQF1cIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlMCwgcClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX25ld3R5cGUgKGxpZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDsodHlwZUA7JXMpQDstPkA7JWFAXVwiIGxpZC50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9mdW5jdGlvbiBsIC0+IHBwIGYgXCJAWzxodj5mdW5jdGlvbiVhQF1cIiAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbWF0Y2ggKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYwPkBbPDI+bWF0Y2ggJWFAXUAgd2l0aEBdJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfdHJ5IChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzxodjI+dHJ5QCAlYUBdQCBAWzwwPndpdGglYUBdQF1cIlxuICAgICAgICAgICgqIFwidHJ5QDtAWzwyPiVhQF1AXFxud2l0aEBcXG4lYVwiKilcbiAgICAgICAgICAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX2xldCAocmYsIGwsIGUpIC0+XG4gICAgICAgICgqIHBwIGYgXCJAWzwyPmxldCAlYSVhIGluQDs8MSAtMj4lYUBdXCJcbiAgICAgICAgICAgKCpubyBpbmRlbnRhdGlvbiBoZXJlLCBhIG5ldyBsaW5lKikgKilcbiAgICAgICAgKCogICByZWNfZmxhZyByZiAqKVxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5ncyByZXNldF9jdHh0KSAocmYsIGwpXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hcHBseSAoZSwgbCkgLT4gKFxuICAgICAgICBpZiBub3QgKHN1Z2FyX2V4cHIgY3R4dCBmIHgpIHRoZW5cbiAgICAgICAgICBtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgZSB3aXRoXG4gICAgICAgICAgfCBgSW5maXggcyAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKChOb2xhYmVsLCBfKSBhcyBhcmcxKTsgKChOb2xhYmVsLCBfKSBhcyBhcmcyKSBdIC0+XG4gICAgICAgICAgICAgICAgICAoKiBGSVhNRSBhc3NvY2lhdGl2aXR5IGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSAqKVxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAOyVzQDslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcxIHNcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBgUHJlZml4IHMgLT4gKFxuICAgICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExpc3QubWVtIHMgWyBcIn4rXCI7IFwifi1cIjsgXCJ+Ky5cIjsgXCJ+LS5cIiBdXG4gICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAoKiBTZWUgIzcyMDA6IGF2b2lkIHR1cm5pbmcgKH4tIDEpIGludG8gKC0gMSkgd2hpY2ggaXNcbiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCBhcyBhbiBpbnQgbGl0ZXJhbCAqKVxuICAgICAgICAgICAgICAgICAgfCBbIChfLCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RhbnQgXyB9KSBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgICAgICAgICAgICAgZWxzZSBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKE5vbGFiZWwsIHgpIF0gLT4gcHAgZiBcIkBbPDI+JXNAOyVhQF1cIiBzIChzaW1wbGVfZXhwciBjdHh0KSB4XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIlxuICAgICAgICAgICAgICAgIChmdW4gZiAoZSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoZXhwcmVzc2lvbjIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAoKiByZXNldCBoZXJlIG9ubHkgYmVjYXVzZSBbZnVuY3Rpb24sbWF0Y2gsdHJ5LHNlcXVlbmNlXVxuICAgICAgICAgICAgICAgICAgICAgYXJlIGxvd2VyIHByaW9yaXR5ICopKVxuICAgICAgICAgICAgICAgIChlLCBsKSlcbiAgICB8IFBleHBfY29uc3RydWN0IChsaSwgU29tZSBlbykgd2hlbiBub3QgKGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSlcbiAgICAgIC0+IChcbiAgICAgICAgKCogTm90IGVmZmljaWVudCBGSVhNRSopXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgY29ucyBscyAtPiBsaXN0IChzaW1wbGVfZXhwciBjdHh0KSBmIGxzIH5zZXA6XCJAOzo6QDtcIlxuICAgICAgICB8IGBub3JtYWwgLT4gcHAgZiBcIkBbPDI+JWFAOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9zZXRmaWVsZCAoZTEsIGxpLCBlMikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWFAIDwtQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUxIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgZTJcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSAoZTEsIGUyLCBlbykgLT5cbiAgICAgICAgKCogQDtAWzwyPmVsc2VAICVhQF1AXSAqKVxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8Mj5pZkAgJWFAXUA7QFs8Mj50aGVuQCAlYUBdJWFAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgPSBleHByZXNzaW9uICh1bmRlcl9pZnRoZW5lbHNlIGN0eHQpIGluXG4gICAgICAgIHBwIGYgZm10IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMSBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTJcbiAgICAgICAgICAoZnVuIGYgZW8gLT5cbiAgICAgICAgICAgIG1hdGNoIGVvIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIkA7QFs8Mj5lbHNlQDslYUBdXCIgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgKCogcHAgZiBcIigpXCIgKikpXG4gICAgICAgICAgZW9cbiAgICB8IFBleHBfc2VxdWVuY2UgXyAtPlxuICAgICAgICBsZXQgcmVjIHNlcXVlbmNlX2hlbHBlciBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3NlcXVlbmNlIChlMSwgZTIpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIHNlcXVlbmNlX2hlbHBlciAoZTEgOjogYWNjKSBlMlxuICAgICAgICAgIHwgdiAtPiBMaXN0LnJldiAodiA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsc3QgPSBzZXF1ZW5jZV9oZWxwZXIgW10geCBpblxuICAgICAgICBwcCBmIFwiQFs8aHY+JWFAXVwiIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpIGxzdFxuICAgIHwgUGV4cF9uZXcgbGkgLT4gcHAgZiBcIkBbPGhvdjI+bmV3QCAlYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIChzLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPC1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX292ZXJyaWRlIGwgLT5cbiAgICAgICAgKCogRklYTUUgKilcbiAgICAgICAgbGV0IHN0cmluZ194X2V4cHJlc3Npb24gZiAocywgZSkgPVxuICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA9QCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj57PCVhPn1AXVwiIChsaXN0IHN0cmluZ194X2V4cHJlc3Npb24gfnNlcDpcIjtcIikgbFxuICAgIHwgUGV4cF9sZXRtb2R1bGUgKHMsIG1lLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIG1vZHVsZUAgJXNAID1AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX2V4cHIgcmVzZXRfY3R4dCkgbWUgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGNkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIGV4Y2VwdGlvbkAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgICAgICAgY2QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hc3NlcnQgZSAtPiBwcCBmIFwiQFs8aG92Mj5hc3NlcnRAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9sYXp5IGUgLT4gcHAgZiBcIkBbPGhvdjI+bGF6eUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgKCogUGV4cF9wb2x5OiBpbXBvc3NpYmxlIGJ1dCB3ZSBzaG91bGQgcHJpbnQgaXQgYW55d2F5LCByYXRoZXIgdGhhblxuICAgICAgIGFzc2VydCBmYWxzZSAqKVxuICAgIHwgUGV4cF9wb2x5IChlLCBOb25lKSAtPiBwcCBmIFwiQFs8aG92Mj4hcG9seSFAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oIXBvbHkhQCAlYUAgOiAlYSlAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgby5wb3Blbl9leHByIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfdmFyaWFudCAobCwgU29tZSBlbykgLT4gcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICB8IFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+QFs8dj4lYUAsJWFAXSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5nX29wIGN0eHQpIGxldF9cbiAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZ19vcCBjdHh0KSlcbiAgICAgICAgICBhbmRzIChleHByZXNzaW9uIGN0eHQpIGJvZHlcbiAgICB8IFBleHBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IHBwIGYgXCIuXCJcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjEgY3R4dCBmIHhcblxuYW5kIGV4cHJlc3Npb24xIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX29iamVjdCBjcyAtPiBwcCBmIFwiJWFcIiAoY2xhc3Nfc3RydWN0dXJlIGN0eHQpIGNzXG4gICAgfCBfIC0+IGV4cHJlc3Npb24yIGN0eHQgZiB4XG4oKiB1c2VkIGluIFtQZXhwX2FwcGx5XSAqKVxuXG5hbmQgZXhwcmVzc2lvbjIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZmllbGQgKGUsIGxpKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYS4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZW5kIChlLCBzKSAtPiBwcCBmIFwiQFs8aG92Mj4lYSMlc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgcy50eHRcbiAgICB8IF8gLT4gc2ltcGxlX2V4cHIgY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBfIHdoZW4gaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpIC0+IChcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBuaWwgLT4gcHAgZiBcIltdXCJcbiAgICAgICAgfCBgdHVwbGUgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgfCBgbGlzdCB4cyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGh2MD5bJWFdQF1cIlxuICAgICAgICAgICAgICAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKVxuICAgICAgICAgICAgICB4c1xuICAgICAgICB8IGBzaW1wbGUgeCAtPiBsb25naWRlbnQgZiB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX2lkZW50IGxpIC0+IGxvbmdpZGVudF9sb2MgZiBsaVxuICAgICgqIChtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgeCB3aXRoICopXG4gICAgKCogfGBOb3JtYWwgLT4gbG9uZ2lkZW50X2xvYyBmIGxpICopXG4gICAgKCogfCBgUHJlZml4IF8gfCBgSW5maXggXyAtPiBwcCBmIFwiKCAlYSApXCIgbG9uZ2lkZW50X2xvYyBsaSkgKilcbiAgICB8IFBleHBfY29uc3RhbnQgYyAtPiBjb25zdGFudCBmIGNcbiAgICB8IFBleHBfcGFjayBtZSAtPiBwcCBmIFwiKG1vZHVsZUA7JWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQZXhwX3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhKUBdXCIgKGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIH5zZXA6XCIsQDtcIikgbFxuICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSA6ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9jb2VyY2UgKGUsIGN0bzEsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhJWEgOj4gJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIChvcHRpb24gKGNvcmVfdHlwZSBjdHh0KSB+Zmlyc3Q6XCIgOiBcIiB+bGFzdDpcIiBcIilcbiAgICAgICAgICBjdG8xXG4gICAgICAgICAgKCogbm8gc2VwIGhpbnQqKSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgY3RcbiAgICB8IFBleHBfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBleHBfcmVjb3JkIChsLCBlbykgLT5cbiAgICAgICAgbGV0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gZiAobGksIGUpID1cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9XG4gICAgICAgICAgICB3aGVuIGxpLnR4dCA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+e0A7JWElYUBdQDt9QF1cIiAoKiBcIkBbPGhvdjI+eyVhJWF9QF1cIiAqKVxuICAgICAgICAgIChvcHRpb24gfmxhc3Q6XCIgd2l0aEA7XCIgKHNpbXBsZV9leHByIGN0eHQpKVxuICAgICAgICAgIGVvXG4gICAgICAgICAgKGxpc3QgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF9hcnJheSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPDI+W3wlYXxdQF1AXVwiXG4gICAgICAgICAgKGxpc3QgKHNpbXBsZV9leHByICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfd2hpbGUgKGUxLCBlMikgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPSBcIkBbPDI+d2hpbGVAOyVhQDtkb0A7JWFAO2RvbmVAXVwiIGluXG4gICAgICAgIHBwIGYgZm10IChleHByZXNzaW9uIGN0eHQpIGUxIChleHByZXNzaW9uIGN0eHQpIGUyXG4gICAgfCBQZXhwX2ZvciAocywgZTEsIGUyLCBkZiwgZTMpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzxodjI+QFs8Mj5mb3IgJWEgPUA7JWFAOyVhJWFAO2RvQF1AOyVhQF1AO2RvbmVAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uID0gZXhwcmVzc2lvbiBjdHh0IGluXG4gICAgICAgIHBwIGYgZm10IChwYXR0ZXJuIGN0eHQpIHMgZXhwcmVzc2lvbiBlMSBkaXJlY3Rpb25fZmxhZyBkZiBleHByZXNzaW9uIGUyXG4gICAgICAgICAgZXhwcmVzc2lvbiBlM1xuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChleHByZXNzaW9uIGN0eHQpIGYgeFxuXG5hbmQgYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoYXR0cmlidXRlIGN0eHQgZikgbFxuYW5kIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoaXRlbV9hdHRyaWJ1dGUgY3R4dCBmKSBsXG5cbmFuZCBhdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGl0ZW1fYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgZiB4ID1cbiAgKCogbm90ZTogdmFsdWVfZGVzY3JpcHRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgICAgICAgYnV0IHRoZXkncmUgYWxyZWFkeSBwcmludGVkIGJ5IHRoZSBjYWxsZXJzIHRoaXMgbWV0aG9kICopXG4gIHBwIGYgXCJAWzxob3YyPiVhJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgeC5wdmFsX3R5cGVcbiAgICAoZnVuIGYgeCAtPlxuICAgICAgaWYgeC5wdmFsX3ByaW0gPD4gW10gdGhlblxuICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChsaXN0IGNvbnN0YW50X3N0cmluZykgeC5wdmFsX3ByaW0pXG4gICAgeFxuXG5hbmQgZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPSBwcCBmIFwiQFs8Mj5bJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID1cbiAgcHAgZiBcIkBbPDI+WyUlJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICBwcCBmIFwiQFs8aG92Mj5leGNlcHRpb25AICVhQF0lYVwiXG4gICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgIHgucHR5ZXhuX2NvbnN0cnVjdG9yIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleG5fYXR0cmlidXRlc1xuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0Zl9kZXNjIHdpdGhcbiAgfCBQY3RmX2luaGVyaXQgY3QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVhQF0lYVwiIChjbGFzc190eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX3ZhbCAocywgbWYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCBAICVhJWElc0AgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX21ldGhvZCAocywgcGYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCAlYSAlYSVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnRAICVhQCA9QCAlYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY3RmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY3RmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgeyBwY3NpZ19zZWxmID0gY3Q7IHBjc2lnX2ZpZWxkcyA9IGw7IF8gfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdEBbPDE+JWFAXUAgJWFAXUAgZW5kQF1cIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYW55OyBwdHlwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+ICgpXG4gICAgICB8IGN0IC0+IHBwIGYgXCIgKCVhKVwiIChjb3JlX3R5cGUgY3R4dCkgY3QpXG4gICAgY3RcbiAgICAobGlzdCAoY2xhc3NfdHlwZV9maWVsZCBjdHh0KSB+c2VwOlwiQDtcIilcbiAgICBsXG5cbigqIGNhbGwgW2NsYXNzX3NpZ25hdHVyZV0gY2FsbGVkIGJ5IFtjbGFzc19zaWduYXR1cmVdICopXG5hbmQgY2xhc3NfdHlwZSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0eV9kZXNjIHdpdGhcbiAgfCBQY3R5X3NpZ25hdHVyZSBjcyAtPlxuICAgICAgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiBjcztcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgcHAgZiBcIiVhJWElYVwiXG4gICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2Fycm93IChsLCBjbywgY2wpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGNvKSAoY2xhc3NfdHlwZSBjdHh0KSBjbFxuICB8IFBjdHlfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGV4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9vcGVuIChvLCBlKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfdHlwZSBjdHh0KSBlXG5cbigqIFtjbGFzcyB0eXBlIGEgPSBvYmplY3QgZW5kXSAqKVxuYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbCA9XG4gIGxldCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGt3ZCBmIHggPVxuICAgIGxldCB7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gPSB4IGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQCA9QCAlYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIpXG4gICAgICAgIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgIHhzXG5cbmFuZCBjbGFzc19maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGNmX2Rlc2Mgd2l0aFxuICB8IFBjZl9pbmhlcml0IChvdmYsIGNlLCBzbykgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVzQCAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgICAgIChmdW4gZiBzbyAtPlxuICAgICAgICAgIG1hdGNoIHNvIHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgcyAtPiBwcCBmIFwiQCBhcyAlc1wiIHMudHh0KVxuICAgICAgICBzbyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsJXMgJWElcyA9QDslYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgdmlydHVhbCAlYSAlcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgdmlydHVhbCAlYSVzIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBsZXQgYmluZCBlID1cbiAgICAgICAgYmluZGluZyBjdHh0IGZcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfcGF0ID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIHM7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBwdmJfZXhwciA9IGU7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCVzICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgcHJpdmF0ZV9mbGFnIHBmXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlcyA6QDslYT1AOyVhXCIgcy50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgTm9uZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgYmluZCBlXG4gICAgICAgICAgfCBfIC0+IGJpbmQgZSlcbiAgICAgICAgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50ICVhID1AOyVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9pbml0aWFsaXplciBlIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbml0aWFsaXplckAgJWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGNmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY2ZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiB7IHBjc3RyX3NlbGYgPSBwOyBwY3N0cl9maWVsZHMgPSBsIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3QlYUA7JWFAXUA7ZW5kQF1cIlxuICAgIChmdW4gZiBwIC0+XG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICB8IFBwYXRfY29uc3RyYWludCBfIC0+IHBwIGYgXCIgJWFcIiAocGF0dGVybiBjdHh0KSBwXG4gICAgICB8IF8gLT4gcHAgZiBcIiAoJWEpXCIgKHBhdHRlcm4gY3R4dCkgcClcbiAgICBwXG4gICAgKGxpc3QgKGNsYXNzX2ZpZWxkIGN0eHQpKVxuICAgIGxcblxuYW5kIGNsYXNzX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBjbF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBjbF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBjbF9kZXNjIHdpdGhcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgY3MgLT4gY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiBjc1xuICAgIHwgUGNsX2Z1biAobCwgZW8sIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5AICVhQCAtPkAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlbywgcCkgKGNsYXNzX2V4cHIgY3R4dCkgZVxuICAgIHwgUGNsX2xldCAocmYsIGwsIGNlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAIGluQCAlYVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgfCBQY2xfYXBwbHkgKGNlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiKCglYSlAICVhKVwiXG4gICAgICAgICAgKCogQ2Y6ICM3MjAwICopIChjbGFzc19leHByIGN0eHQpXG4gICAgICAgICAgY2VcbiAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgIGxcbiAgICB8IFBjbF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIGlmIGwgPD4gW10gdGhlbiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgKGNlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYUAgOkAgJWEpXCIgKGNsYXNzX2V4cHIgY3R4dCkgY2UgKGNsYXNzX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBjbF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBjbF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfZXhwciBjdHh0KSBlXG5cbmFuZCBtb2R1bGVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG10eV9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIG10MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvciAoKSAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKHMsIG10MSksIG10MikgLT4gKFxuICAgICAgICBtYXRjaCBzLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdDFcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvckAgKCVzQCA6QCAlYSlAIC0+QCAlYUBdXCIgbmFtZVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQxIChtb2R1bGVfdHlwZSBjdHh0KSBtdDIpXG4gICAgfCBQbXR5X3dpdGggKG10LCBbXSkgLT4gbW9kdWxlX3R5cGUgY3R4dCBmIG10XG4gICAgfCBQbXR5X3dpdGggKG10LCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgd2l0aEAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXRcbiAgICAgICAgICAobGlzdCAod2l0aF9jb25zdHJhaW50IGN0eHQpIH5zZXA6XCJAIGFuZEAgXCIpXG4gICAgICAgICAgbFxuICAgIHwgXyAtPiBtb2R1bGVfdHlwZTEgY3R4dCBmIHhcblxuYW5kIHdpdGhfY29uc3RyYWludCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFB3aXRoX3R5cGUgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhID1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHVsZSAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZSAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuICB8IFB3aXRoX3R5cGVzdWJzdCAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgOj1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHN1YnN0IChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuXG5hbmQgbW9kdWxlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBtb2R1bGVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X2FsaWFzIGxpIC0+IHBwIGYgXCIobW9kdWxlICVhKVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfc2lnbmF0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+c2lnQCAlYUBdQCBlbmRAXVwiICgqIFwiQFs8aG92PnNpZ0AgJWFAIGVuZEBdXCIgKilcbiAgICAgICAgICAobGlzdCAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkpXG4gICAgICAgICAgc1xuICAgICAgICAoKiBGSVhNRSB3cm9uZyBpbmRlbnRhdGlvbiopXG4gICAgfCBQbXR5X3R5cGVvZiBtZSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAIG9mQCAlYUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChtb2R1bGVfdHlwZSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmVfaXRlbSBjdHh0IGYgeCA6IHVuaXQgPVxuICBtYXRjaCB4LnBzaWdfZGVzYyB3aXRoXG4gIHwgUHNpZ190eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzaWdfdHlwZXN1YnN0IGwgLT5cbiAgICAgICgqIFBzaWdfdHlwZXN1YnN0IGlzIG5ldmVyIHJlY3Vyc2l2ZSwgYnV0IHdlIHNwZWNpZnkgW1JlY3Vyc2l2ZV0gaGVyZSB0b1xuICAgICAgICAgYXZvaWQgcHJpbnRpbmcgYSBbbm9ucmVjXSBmbGFnLCB3aGljaCB3b3VsZCBiZSByZWplY3RlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgKilcbiAgICAgIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChSZWN1cnNpdmUsIGZhbHNlLCBsKVxuICB8IFBzaWdfdmFsdWUgdmQgLT5cbiAgICAgIGxldCBpbnRybyA9IGlmIHZkLnB2YWxfcHJpbSA9IFtdIHRoZW4gXCJ2YWxcIiBlbHNlIFwiZXh0ZXJuYWxcIiBpblxuICAgICAgcHAgZiBcIkBbPDI+JXNAICVhQCA6QCAlYUBdJWFcIiBpbnRybyBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ190eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHNpZ19leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzaWdfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgY2xhc3NfZGVzY3JpcHRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQDs6QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHNpZ19tb2R1bGVcbiAgICAgICh7XG4gICAgICAgICBwbWRfdHlwZSA9IHsgcG10eV9kZXNjID0gUG10eV9hbGlhcyBhbGlhczsgcG10eV9hdHRyaWJ1dGVzID0gW107IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwbWQpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBhbGlhcyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdWxlIHBtZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHN1YnN0IHBtcyAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6PUAgJWFAXSVhXCIgcG1zLnBtc19uYW1lLnR4dCBsb25naWRlbnRfbG9jXG4gICAgICAgIHBtcy5wbXNfbWFuaWZlc3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbXMucG1zX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm9wZW4lc0AgJWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfbW9kdHlwZXN1YnN0IHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICAtPlxuICAgICAgbGV0IG1kID1cbiAgICAgICAgbWF0Y2ggbWQgd2l0aCBOb25lIC0+IGFzc2VydCBmYWxzZSAoKiBhc3QgaW52YXJpYW50ICopIHwgU29tZSBtdCAtPiBtdFxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXNAIDo9QCAlYUBdJWFcIiBzLnR4dCAobW9kdWxlX3R5cGUgY3R4dCkgbWRcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzaWdfcmVjbW9kdWxlIGRlY2xzIC0+XG4gICAgICBsZXQgcmVjIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiA/KGZpcnN0ID0gdHJ1ZSkgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgcG1kIDo6IHRsIC0+XG4gICAgICAgICAgICBpZiBub3QgZmlyc3QgdGhlblxuICAgICAgICAgICAgICBwcCBmIFwiQCBAWzxob3YyPmFuZEAgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgcmVjQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgfmZpcnN0OmZhbHNlIHRsXG4gICAgICBpblxuICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIGRlY2xzXG4gIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCBtb2R1bGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucG1vZF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG1vZF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjI+c3RydWN0QDtAWzwwPiVhQF1AOzwxIC0yPmVuZEBdXCJcbiAgICAgICAgICAobGlzdCAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgfnNlcDpcIkBcXG5cIilcbiAgICAgICAgICBzXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgKG1lLCBtdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhQCA6QCAlYSlAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSAobW9kdWxlX3R5cGUgY3R4dCkgbXRcbiAgICB8IFBtb2RfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBtZSkgLT4gcHAgZiBcImZ1bmN0b3IgKClAOy0+QDslYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAocywgbXQpLCBtZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bmN0b3JAICglc0AgOkAgJWEpQDstPkA7JWFcIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9hcHBseSAobWUxLCBtZTIpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEpKCVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZTEgKG1vZHVsZV9leHByIGN0eHQpIG1lMlxuICAgICAgICAoKiBDZjogIzcyMDAgKilcbiAgICB8IFBtb2RfdW5wYWNrIGUgLT4gcHAgZiBcIih2YWxAICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG5cbmFuZCBzdHJ1Y3R1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgcGF5bG9hZCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFBTdHIgWyB7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZSwgYXR0cnMpIH0gXSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUFN0ciB4IC0+IHN0cnVjdHVyZSBjdHh0IGYgeFxuICB8IFBUeXAgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgY29yZV90eXBlIGN0eHQgZiB4XG4gIHwgUFNpZyB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBzaWduYXR1cmUgY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBOb25lKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHg7XG4gICAgICBwcCBmIFwiIHdoZW4gXCI7XG4gICAgICBleHByZXNzaW9uIGN0eHQgZiBlXG5cbigqIHRyYW5zZm9ybSBbZiA9IGZ1biBnIGggLT4gLi5dIHRvIFtmIGcgaCA9IC4uLiBdIGNvdWxkIGJlIGltcHJvdmVkICopXG5hbmQgYmluZGluZyBjdHh0IGYgeyBwdmJfcGF0ID0gcDsgcHZiX2V4cHIgPSB4OyBfIH0gPVxuICAoKiAucHZiX2F0dHJpYnV0ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyLCAjYmluZGluZ3MgKilcbiAgbGV0IHJlYyBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGYgeCA9XG4gICAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2Z1biAobGFiZWwsIGVvLCBwLCBlKSAtPlxuICAgICAgICAgIGlmIGxhYmVsID0gTm9sYWJlbCB0aGVuXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGxhYmVsLCBlbywgcCkgcHBfcHJpbnRfcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICBlXG4gICAgICB8IFBleHBfbmV3dHlwZSAoc3RyLCBlKSAtPlxuICAgICAgICAgIHBwIGYgXCIodHlwZUAgJXMpQCAlYVwiIHN0ci50eHQgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICB8IF8gLT4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBpblxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHR5dmFycyBpblxuICBsZXQgaXNfZGVzdWdhcmVkX2dhZHQgcCBlID1cbiAgICBsZXQgZ2FkdF9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBTb21lIChwYXQsIGFyZ3NfdHl2YXJzLCBydClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhZHRfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgZ2FkdF9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgZ2FkdF9leHAgPSBnYWR0X2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKGdhZHRfcGF0dGVybiwgZ2FkdF9leHApIHdpdGhcbiAgICB8IFNvbWUgKHAsIHB0X3R5dmFycywgcHRfY3QpLCBTb21lIChlX3R5dmFycywgZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuIFNvbWUgKHAsIHB0X3R5dmFycywgZV9jdCwgZSkgZWxzZSBOb25lXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwge1xuICAgICBwcGF0X2Rlc2MgPVxuICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXApICk7XG4gICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICBfO1xuICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQgKGNvcmVfdHlwZSBjdHh0KSB0eXBcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHhcbiAgZWxzZVxuICAgIG1hdGNoIGlzX2Rlc3VnYXJlZF9nYWR0IHAgeCB3aXRoXG4gICAgfCBTb21lIChwLCBbXSwgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgU29tZSAocCwgdHl2YXJzLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6IHR5cGVAOyVhLkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAobGlzdCBwcF9wcmludF9zdHJpbmcgfnNlcDpcIkA7XCIpXG4gICAgICAgICAgKHR5dmFyc19zdHIgdHl2YXJzKSAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocCwgdHkpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+IChcbiAgICAgICAgICAgICgqIHNwZWNpYWwgY2FzZSBmb3IgdGhlIGZpcnN0KilcbiAgICAgICAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgICAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgcHR5cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlYUA7OkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgICAgICAgICAgdHkgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglYUA7OkA7JWEpQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIHR5IChleHByZXNzaW9uIGN0eHQpIHgpXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiB4XG4gICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuXG4oKiBbaW5dIGlzIG5vdCBwcmludGVkICopXG5hbmQgYmluZGluZ3MgY3R4dCBmIChyZiwgbCkgPVxuICBsZXQgYmluZGluZyBrd2QgcmYgZiB4ID1cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhQF0lYVwiIGt3ZCByZWNfZmxhZyByZiAoYmluZGluZyBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHZiX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBiaW5kaW5nIFwibGV0XCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAoYmluZGluZyBcImxldFwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nIFwiYW5kXCIgTm9ucmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIGJpbmRpbmdfb3AgY3R4dCBmIHggPVxuICBtYXRjaCAoeC5wYm9wX3BhdCwgeC5wYm9wX2V4cCkgd2l0aFxuICB8ICggeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IHB2YXI7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgIHtcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBldmFyOyBfIH07XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBfO1xuICAgICAgfSApXG4gICAgd2hlbiBwdmFyID0gZXZhciAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJXNAXVwiIHgucGJvcF9vcC50eHQgZXZhclxuICB8IHBhdCwgZXhwIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlYUA7PUA7JWFAXVwiIHgucGJvcF9vcC50eHQgKHBhdHRlcm4gY3R4dCkgcGF0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGV4cFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gY3R4dCBmIHggPVxuICBtYXRjaCB4LnBzdHJfZGVzYyB3aXRoXG4gIHwgUHN0cl9ldmFsIChlLCBhdHRycykgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPjs7JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl90eXBlIChfLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgUHN0cl90eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzdHJfdmFsdWUgKHJmLCBsKSAtPlxuICAgICAgKCogcHAgZiBcIkBbPGhvdjI+bGV0ICVhJWFAXVwiICByZWNfZmxhZyByZiBiaW5kaW5ncyBsICopXG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbClcbiAgfCBQc3RyX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc3RyX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHN0cl9tb2R1bGUgeCAtPlxuICAgICAgbGV0IHJlYyBtb2R1bGVfaGVscGVyID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoYXJnX29wdCwgbWUnKTsgcG1vZF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgKG1hdGNoIGFyZ19vcHQgd2l0aFxuICAgICAgICAgICAgfCBVbml0IC0+IHBwIGYgXCIoKVwiXG4gICAgICAgICAgICB8IE5hbWVkIChzLCBtdCkgLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVzOiVhKVwiXG4gICAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10KTtcbiAgICAgICAgICAgIG1vZHVsZV9oZWxwZXIgbWUnXG4gICAgICAgIHwgbWUgLT4gbWVcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGUgJXMlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHgucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAoZnVuIGYgbWUgLT5cbiAgICAgICAgICBsZXQgbWUgPSBtb2R1bGVfaGVscGVyIG1lIGluXG4gICAgICAgICAgbWF0Y2ggbWUgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwbW9kX2Rlc2MgPVxuICAgICAgICAgICAgIFBtb2RfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKG1lJywgKHsgcG10eV9kZXNjID0gUG10eV9pZGVudCBfIHwgUG10eV9zaWduYXR1cmUgXzsgXyB9IGFzIG10KSk7XG4gICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiA6QDslYUA7PUA7JWFAO1wiIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgICBtZSdcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIiA9QCAlYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSlcbiAgICAgICAgeC5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucG1iX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm9wZW4lc0A7JWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGV4dHJhY3RfY2xhc3NfYXJncyBjbCA9XG4gICAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9mdW4gKGwsIGVvLCBwLCBjbCcpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgbG9vcCAoKGwsIGVvLCBwKSA6OiBhY2MpIGNsJ1xuICAgICAgICAgIHwgY2wgLT4gKExpc3QucmV2IGFjYywgY2wpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhcmdzLCBjbCA9IGxvb3AgW10gY2wgaW5cbiAgICAgICAgbGV0IGNvbnN0ciwgY2wgPVxuICAgICAgICAgIG1hdGNoIGNsIHdpdGhcbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfY29uc3RyYWludCAoY2wnLCBjdCk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAoU29tZSBjdCwgY2wnKVxuICAgICAgICAgIHwgXyAtPiAoTm9uZSwgY2wpXG4gICAgICAgIGluXG4gICAgICAgIChhcmdzLCBjb25zdHIsIGNsKVxuICAgICAgaW5cbiAgICAgIGxldCBjbGFzc19jb25zdHJhaW50IGYgY3QgPSBwcCBmIFwiOiBAWyVhQF0gXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgaW5cbiAgICAgIGxldCBjbGFzc19kZWNsYXJhdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBsZXQgYXJncywgY29uc3RyLCBjbCA9IGV4dHJhY3RfY2xhc3NfYXJncyB4LnBjaV9leHByIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyAlYSVhPUA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0XG4gICAgICAgICAgKGxpc3QgKGxhYmVsX2V4cCBjdHh0KSlcbiAgICAgICAgICBhcmdzIChvcHRpb24gY2xhc3NfY29uc3RyYWludCkgY29uc3RyIChjbGFzc19leHByIGN0eHQpIGNsXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc3RyX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc3RyX3ByaW1pdGl2ZSB2ZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+ZXh0ZXJuYWxAICVhQCA6QCAlYUBdJWFcIiBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfZXhwciBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzdHJfcmVjbW9kdWxlIGRlY2xzIC0+IChcbiAgICAgICgqIDMuMDcgKilcbiAgICAgIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlczolYUAgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgIHwgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGRlY2xzIHdpdGhcbiAgICAgIHwgKHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iKVxuICAgICAgICA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlczolYUAgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBwbWIgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXNAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCB0eXBlX3BhcmFtIGN0eHQgZiAoY3QsIChhLCBiKSkgPVxuICBwcCBmIFwiJXMlcyVhXCIgKHR5cGVfdmFyaWFuY2UgYSkgKHR5cGVfaW5qZWN0aXZpdHkgYikgKGNvcmVfdHlwZSBjdHh0KSBjdFxuXG5hbmQgdHlwZV9wYXJhbXMgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIiVhIFwiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLEA7XCIpIGxcblxuYW5kIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgZXhwb3J0ZWQsIGwpID1cbiAgbGV0IHR5cGVfZGVjbCBrd2QgcmYgZiB4ID1cbiAgICBsZXQgZXEgPVxuICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgJiYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiBcIlwiXG4gICAgICBlbHNlIGlmIGV4cG9ydGVkIHRoZW4gXCIgPVwiXG4gICAgICBlbHNlIFwiIDo9XCJcbiAgICBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyVzJWFAXSVhXCIga3dkIG5vbnJlY19mbGFnIHJmICh0eXBlX3BhcmFtcyBjdHh0KVxuICAgICAgeC5wdHlwZV9wYXJhbXMgeC5wdHlwZV9uYW1lLnR4dCBlcSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5cGVfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiB0eXBlX2RlY2wgXCJ0eXBlXCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAodHlwZV9kZWNsIFwidHlwZVwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiICh0eXBlX2RlY2wgXCJhbmRcIiBSZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgcmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQgZiBsYmxzID1cbiAgbGV0IHR5cGVfcmVjb3JkX2ZpZWxkIGYgcGxkID1cbiAgICBwcCBmIFwiQFs8Mj4lYSVzOkA7JWFAOyVhQF1cIiBtdXRhYmxlX2ZsYWcgcGxkLnBsZF9tdXRhYmxlIHBsZC5wbGRfbmFtZS50eHRcbiAgICAgIChjb3JlX3R5cGUgY3R4dCkgcGxkLnBsZF90eXBlIChhdHRyaWJ1dGVzIGN0eHQpIHBsZC5wbGRfYXR0cmlidXRlc1xuICBpblxuICBwcCBmIFwie0BcXG4lYX1cIiAobGlzdCB0eXBlX3JlY29yZF9maWVsZCB+c2VwOlwiO0BcXG5cIikgbGJsc1xuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gICgqIHR5cGVfZGVjbGFyYXRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgYnV0IGl0J3MgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgKilcbiAgbGV0IHByaXYgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9wcml2YXRlIHdpdGggUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwiQDtwcml2YXRlXCJcbiAgaW5cbiAgbGV0IG1hbmlmZXN0IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5IC0+XG4gICAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0IHRoZW5cbiAgICAgICAgICBwcCBmIFwiJXRAOyVhXCIgcHJpdiAoY29yZV90eXBlIGN0eHQpIHlcbiAgICAgICAgZWxzZSBwcCBmIFwiQDslYVwiIChjb3JlX3R5cGUgY3R4dCkgeVxuICBpblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gZiBwY2QgPVxuICAgIHBwIGYgXCJ8QDtcIjtcbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICggcGNkLnBjZF9uYW1lLnR4dCxcbiAgICAgICAgcGNkLnBjZF92YXJzLFxuICAgICAgICBwY2QucGNkX2FyZ3MsXG4gICAgICAgIHBjZC5wY2RfcmVzLFxuICAgICAgICBwY2QucGNkX2F0dHJpYnV0ZXMgKVxuICBpblxuICBsZXQgcmVwciBmID1cbiAgICBsZXQgaW50cm8gZiA9IGlmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gKCkgZWxzZSBwcCBmIFwiQDs9XCIgaW5cbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCB4cyAtPlxuICAgICAgICBsZXQgdmFyaWFudHMgZm10IHhzID1cbiAgICAgICAgICBpZiB4cyA9IFtdIHRoZW4gcHAgZm10IFwiIHxcIlxuICAgICAgICAgIGVsc2UgcHAgZm10IFwiQFxcbiVhXCIgKGxpc3QgfnNlcDpcIkBcXG5cIiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgeHNcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIiV0JXQlYVwiIGludHJvIHByaXYgdmFyaWFudHMgeHNcbiAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgfCBQdHlwZV9yZWNvcmQgbCAtPiBwcCBmIFwiJXQldEA7JWFcIiBpbnRybyBwcml2IChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbFxuICAgIHwgUHR5cGVfb3BlbiAtPiBwcCBmIFwiJXQldEA7Li5cIiBpbnRybyBwcml2XG4gIGluXG4gIGxldCBjb25zdHJhaW50cyBmID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKGN0MSwgY3QyLCBfKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGNvbnN0cmFpbnRAICVhQCA9QCAlYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MilcbiAgICAgIHgucHR5cGVfY3N0cnNcbiAgaW5cbiAgcHAgZiBcIiV0JXQldFwiIG1hbmlmZXN0IHJlcHIgY29uc3RyYWludHNcblxuYW5kIHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB4ID1cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBmIHggPVxuICAgIHBwIGYgXCJAXFxufEA7JWFcIiAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpIHhcbiAgaW5cbiAgcHAgZiBcIkBbPDI+dHlwZSAlYSVhICs9ICVhQCAlYUBdJWFcIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgcHAgZiBcIiVhQDtcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixcIikgbClcbiAgICB4LnB0eWV4dF9wYXJhbXMgbG9uZ2lkZW50X2xvYyB4LnB0eWV4dF9wYXRoIHByaXZhdGVfZmxhZ1xuICAgIHgucHR5ZXh0X3ByaXZhdGUgKCogQ2Y6ICM3MjAwICopXG4gICAgKGxpc3QgfnNlcDpcIlwiIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGYgKG5hbWUsIHZhcnMsIGFyZ3MsIHJlcywgYXR0cnMpID1cbiAgbGV0IG5hbWUgPSBtYXRjaCBuYW1lIHdpdGggXCI6OlwiIC0+IFwiKDo6KVwiIHwgcyAtPiBzIGluXG4gIGxldCBwcF92YXJzIGYgdnMgPVxuICAgIG1hdGNoIHZzIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCB2cyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgdnNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBwcCBmIFwiJXMlYUA7JWFcIiBuYW1lXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gKClcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+IHBwIGYgXCJAO29mQDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbClcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFNvbWUgciAtPlxuICAgICAgcHAgZiBcIiVzOkA7JWElYUA7JWFcIiBuYW1lIHBwX3ZhcnMgdmFyc1xuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+IGNvcmVfdHlwZTEgY3R4dCBmIHJcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIlxuICAgICAgICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKVxuICAgICAgICAgICAgICAgIGwgKGNvcmVfdHlwZTEgY3R4dCkgclxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwgKGNvcmVfdHlwZTEgY3R4dCkgcilcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQgZiB4ID1cbiAgKCogQ2Y6ICM3MjAwICopXG4gIG1hdGNoIHgucGV4dF9raW5kIHdpdGhcbiAgfCBQZXh0X2RlY2wgKHYsIGwsIHIpIC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICAgKHgucGV4dF9uYW1lLnR4dCwgdiwgbCwgciwgeC5wZXh0X2F0dHJpYnV0ZXMpXG4gIHwgUGV4dF9yZWJpbmQgbGkgLT5cbiAgICAgIHBwIGYgXCIlc0A7PUA7JWElYVwiIHgucGV4dF9uYW1lLnR4dCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjYXNlX2xpc3QgY3R4dCBmIGwgOiB1bml0ID1cbiAgbGV0IGF1eCBmIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gPVxuICAgIHBwIGYgXCJAO3wgQFs8Mj4lYSVhQDstPkA7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHBjX2xoc1xuICAgICAgKG9wdGlvbiAoZXhwcmVzc2lvbiBjdHh0KSB+Zmlyc3Q6XCJAO3doZW5AO1wiKVxuICAgICAgcGNfZ3VhcmRcbiAgICAgIChleHByZXNzaW9uICh1bmRlcl9waXBlIGN0eHQpKVxuICAgICAgcGNfcmhzXG4gIGluXG4gIGxpc3QgYXV4IGYgbCB+c2VwOlwiXCJcblxuYW5kIGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0IGYgKGwsIGUpID1cbiAgbGV0IHNpbXBsZV9uYW1lID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgU29tZSBsXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBleHByZXNzaW9uMiBjdHh0IGYgZSAoKiBsZXZlbCAyKilcbiAgfCBPcHRpb25hbCBzdHIgLT5cbiAgICAgIGlmIFNvbWUgc3RyID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwiPyVzXCIgc3RyXG4gICAgICBlbHNlIHBwIGYgXCI/JXM6JWFcIiBzdHIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgfCBMYWJlbGxlZCBsYmwgLT5cbiAgICAgIGlmIFNvbWUgbGJsID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwifiVzXCIgbGJsXG4gICAgICBlbHNlIHBwIGYgXCJ+JXM6JWFcIiBsYmwgKHNpbXBsZV9leHByIGN0eHQpIGVcblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCBmIHggPVxuICBtYXRjaCB4LnBkaXJhX2Rlc2Mgd2l0aFxuICB8IFBkaXJfc3RyaW5nIHMgLT4gcHAgZiBcIkAgJVNcIiBzXG4gIHwgUGRpcl9pbnQgKG4sIE5vbmUpIC0+IHBwIGYgXCJAICVzXCIgblxuICB8IFBkaXJfaW50IChuLCBTb21lIG0pIC0+IHBwIGYgXCJAICVzJWNcIiBuIG1cbiAgfCBQZGlyX2lkZW50IGxpIC0+IHBwIGYgXCJAICVhXCIgbG9uZ2lkZW50IGxpXG4gIHwgUGRpcl9ib29sIGIgLT4gcHAgZiBcIkAgJXNcIiAoc3RyaW5nX29mX2Jvb2wgYilcblxubGV0IHRvcGxldmVsX3BocmFzZSBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBQdG9wX2RlZiBzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCAoc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dCkpIHNcbiAgKCogcHBfb3Blbl9odmJveCBmIDA7ICopXG4gICgqIHBwX3ByaW50X2xpc3Qgc3RydWN0dXJlX2l0ZW0gZiBzIDsgKilcbiAgKCogcHBfY2xvc2VfYm94IGYgKCk7ICopXG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gTm9uZTsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAXVwiIHBkaXJfbmFtZS50eHRcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBTb21lIHBkaXJfYXJnOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0AgJWFAXVwiIHBkaXJfbmFtZS50eHQgZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnXG5cbmxldCBleHByZXNzaW9uIGYgeCA9IHBwIGYgXCJAWyVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSB4XG5cbmxldCBzdHJpbmdfb2ZfZXhwcmVzc2lvbiB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIGV4cHJlc3Npb24gZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCBzdHJpbmdfb2Zfc3RydWN0dXJlIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgc3RydWN0dXJlIHJlc2V0X2N0eHQgZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCB0b3BfcGhyYXNlIGYgeCA9XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKTtcbiAgdG9wbGV2ZWxfcGhyYXNlIGYgeDtcbiAgcHAgZiBcIjs7XCI7XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKVxuXG5sZXQgY29yZV90eXBlID0gY29yZV90eXBlIHJlc2V0X2N0eHRcbmxldCBwYXR0ZXJuID0gcGF0dGVybiByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlID0gc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2V4cHIgPSBjbGFzc19leHByIHJlc2V0X2N0eHRcbmxldCBjbGFzc19maWVsZCA9IGNsYXNzX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlID0gY2xhc3NfdHlwZSByZXNldF9jdHh0XG5sZXQgY2xhc3Nfc2lnbmF0dXJlID0gY2xhc3Nfc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlX2ZpZWxkID0gY2xhc3NfdHlwZV9maWVsZCByZXNldF9jdHh0XG5sZXQgbW9kdWxlX2V4cHIgPSBtb2R1bGVfZXhwciByZXNldF9jdHh0XG5sZXQgbW9kdWxlX3R5cGUgPSBtb2R1bGVfdHlwZSByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlX2l0ZW0gPSBzaWduYXR1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlX2l0ZW0gPSBzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgdHlwZV9kZWNsYXJhdGlvbiA9IHR5cGVfZGVjbGFyYXRpb24gcmVzZXRfY3R4dFxuIiwiKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIDQuMTQgYW5kIDUuMCBmcm9tIGEgUGFyc2V0cmVlIHBvaW50IG9mIHZpZXcgYXJlIHRoZSBtYWdpYyBudW1iZXJzICopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuQXN0dHlwZXNcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5QYXJzZXRyZWVcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMlwiXG5lbmRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzM1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICBsZXQgbWVyZ2VfbG9jIGxlZnQgcmlnaHQgPVxuICAgIExvY2F0aW9uLlxuICAgICAgeyBsb2Nfc3RhcnQgPSBsZWZ0LmxvY19zdGFydDsgbG9jX2VuZCA9IHJpZ2h0LmxvY19lbmQ7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgaW5cbiAgbGV0IGdob3N0X2xvYyBsb2MgPSB7IGxvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwID1cbiAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgZ2hvc3RfbG9jXG4gICAgICAgIChtZXJnZV9sb2MgcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICBpblxuICAgIHtcbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHBhdCwgdHlwKTtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgfVxuICBpblxuICBsZXQgcHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0IGFuZCBwdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICBsZXQgY29uc3RyYWluX3BhdCBwYXQgdHlwIGV4cHIgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCBpblxuICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByID1cbiAgICBtYXRjaCAocHZiX2NvbnN0cmFpbnQsIHB2Yl9wYXQpIHdpdGhcbiAgICB8ICggU29tZVxuICAgICAgICAgIChQdmNfY29uc3RyYWludFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTtcbiAgICAgICAgICAgICAgdHlwID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiB0aGUgc3VnYXJpbmcgb2YgW2xldCB4OiB1bml2YXJzIC4gdHlwID0gZXhwIF0gd2FzIGRlc3VnYXJlZCB0b1xuICAgICAgICAgICBbbGV0ICh4OnVuaXZhcnMgLiB0eXApID0gZXhwXSBpbiA1LjAgd2hpY2ggZG9lc24ndCBmaXQgdGhlIGNhc2UgYmVsb3cgKilcbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgKCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICAgICAgICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgICAgICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgICAgICAgbGV0IGRlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgICAgICAgICggTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICBsYmxfbHN0X29wdGlvbiApXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPVxuICAgICAgICAgIG1hdGNoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBnaG9zdF9sb2MgdHlwLnB0eXBfbG9jXG4gICAgICAgICAgfCBfIDo6IF8gLT4gZ2hvc3RfbG9jIHBleHBfbG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBfcG9seSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwIHdpdGhcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgICAgICAgICAoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyxcbiAgICAgICAgICAgICAgICAgIHZhcmlmeV9jb25zdHJ1Y3RvcnMgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHR5cCApO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgICAgIGdob3N0X2xvY1xuICAgICAgICAgICAgKG1lcmdlX2xvYyBwdmJfcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jXG4gICAgICAgICAgICAgICB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0geyAoZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cF9wb2x5KSB3aXRoIHBwYXRfbG9jIH1cbiAgICAgICAgYW5kIHB2Yl9leHByID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBleHByIHZhciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodmFyLCBleHByKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAocHZiX2V4cHIsIHR5cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoTGlzdC5yZXYgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzKVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdOyB0eXAgfSksIF8gLT5cbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgU29tZSAoUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KSwgXyAtPlxuICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbiBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBnaG9zdF9sb2MgY29lcmNpb24ucHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHR5cCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29lcmNpb24gd2l0aFxuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoW10sIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cCBpblxuICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHB2Yl9leHByLCBncm91bmQsIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IF8gLT4gKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBsb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxID0gY29weV9tb2R1bGVfZXhwciB4MSBpblxuICAgICAgbGV0IHgxID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IGxvYyA9IHsgeDEucG1vZF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID1cbiAgICAgICAgICAgICAgICAgIHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IGxvYyB9O1xuICAgICAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgW107XG4gICAgICAgICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogeDEucG1vZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9XG4gICAgICAgIHwgXyAtPiB4MVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgbGV0IGVtcHR5X3N0cnVjdCA9XG4gICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgZW1wdHlfc3RydWN0KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAwLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+IFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuICBpblxuICAoKiBNYXRjaCB0aGUgZm9ybSBvZiB0aGUgZXhwciBhbmQgcGF0dGVybiB0byBkZWNpZGUgdGhlIHZhbHVlIG9mXG4gICAgIFtwdmJfY29uc3RyYWludF0uIEFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgUFByaW50ZXIuICopXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdHl2YXJzIGluXG4gIGxldCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHAgZSA9XG4gICAgbGV0IHZhbHVlX3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gYXMgdHlfZXh0KSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGFzc2VydCAobWF0Y2ggcnQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpO1xuICAgICAgICAgIGxldCB0eSA9IG1hdGNoIGFyZ3NfdHl2YXJzIHdpdGggW10gLT4gcnQgfCBfIC0+IHR5X2V4dCBpblxuICAgICAgICAgIGBWYXIgKHBhdCwgYXJnc190eXZhcnMsIHJ0LCB0eSlcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocGF0LCBydCk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYE5vblZhciAocGF0LCBydClcbiAgICAgIHwgXyAtPiBgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyB2YWx1ZV9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICB2YWx1ZV9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgdmFsdWVfZXhwID0gdmFsdWVfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAodmFsdWVfcGF0dGVybiwgdmFsdWVfZXhwKSB3aXRoXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBTb21lIChlX3R5dmFycywgaW5uZXJfZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlblxuICAgICAgICAgIGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgcHRfdHl2YXJzLCBlX2N0LCBpbm5lcl9lKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogdGhlIGV4cHJlc3Npb24gY29uc3RyYWludCBhbmQgdGhlIHBhdHRlcm4gY29uc3RyYWludCxcbiAgICAgICAgICAgICBkb24ndCBtYXRjaCwgYnV0IHdlIHN0aWxsIGhhdmUgYSBQdHlwX3BvbHkgcGF0dGVybiBjb25zdHJhaW50IHRoYXRcbiAgICAgICAgICAgICBzaG91bGQgYmUgcmVzdWdhcmVkIHRvIGEgdmFsdWUgYmluZGluZyAqKVxuICAgICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIF8gLT5cbiAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYE5vblZhciAocGF0LCBjdCksIF8gLT4gYE5vblZhciAocGF0LCBjdCwgZSlcbiAgICB8IF8gLT4gYE5vbmVcbiAgaW5cbiAgbGV0IHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cCA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIFNvbWVcbiAgICAgIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICAgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSB0eV92YXJzOyB0eXAgfSlcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByLCBwdmJfY29uc3RyYWludCA9XG4gICAgbWF0Y2ggcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwdmJfcGF0IHB2Yl9leHByIHdpdGhcbiAgICB8IGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgdHlfdmFycywgdHlwLCBlKSAtPlxuICAgICAgICAocCwgZSwgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgW10sIGN0LCBleHByKSAtPiAoXG4gICAgICAgICgqIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgW2xldCB4IDogdHk/IDo+IGNvZXIgPSBleHByIF0gY2FzZSAqKVxuICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29lcmNlIChleHByLCBnciwgY29lcmNlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBnciBpblxuICAgICAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNlIGluXG4gICAgICAgICAgICBsZXQgcHZiX2NvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICBTb21lIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKHBhdCwgZXhwciwgcHZiX2NvbnN0cmFpbnQpXG4gICAgICAgIHwgXyAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgXywgY3QsIGV4cHIpIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdClcbiAgICB8IGBOb25WYXIgKHAsIHR5cCwgZSkgLT4gKHAsIGUsIHdpdGhfY29uc3RyYWludCBbXSB0eXApXG4gICAgfCBgTm9uZSAtPiAocHZiX3BhdCwgcHZiX2V4cHIsIE5vbmUpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxLCBpc191bml0ID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHIgYWNjIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBfID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IF8gfTtcbiAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IHEgLT5cbiAgICAgICAgICAgICAgICAgIChMaXN0LnJldl9hcHBlbmQgYWNjIHEsIGZhbHNlKVxuICAgICAgICAgICAgICB8IGhkIDo6IHRsIC0+IGV4dHJhY3RfYXR0ciAoaGQgOjogYWNjKSB0bFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGIgPSBleHRyYWN0X2F0dHIgW10geDEucG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICAgICAoeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9LCBiKVxuICAgICAgICB8IF8gLT4gKHgxLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBpZiBpc191bml0IHRoZW4gQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICAgICAgZWxzZVxuICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDAuQXN0dHlwZXMudHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJtb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNTAwLlBhcnNldHJlZS4lcyAtPiBBc3RfNDE0LlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF80MTQuUGFyc2V0cmVlLiVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgKFtdLCBQKVxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICBDICh0eXBlIGEgYikgUCAgIFNvbWUgKFthOyBiXSwgUClcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgOj0gIC4uLiAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZCAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxNC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+IChcbiAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgICAgIHwgaGQgOjogXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJ0eXBlIHBhcmFtZXRlcnMgaW4gZXh0ZW5zaW9uIGNvbnN0cnVjdG9yc1wiKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcGNkX3ZhcnMgd2l0aFxuICB8IFtdIC0+XG4gICAgICB7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgICAgIH1cbiAgfCBoZCA6OiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJwY2RfdmFycyBpbiBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbnNcIlxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTQuQXN0dHlwZXMudHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTQuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKFtdLCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycyA9IFtdO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjlcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChtYXRjaCB4MCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgfCB0eSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgdHkuQXN0XzQxMy5Bc3R0eXBlcy5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJleGlzdGVudGlhbHMgaW4gcGF0dGVybi1tYXRjaGluZ1wiKTtcbiAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHgxKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgXCJtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvY1xuICAgICAgICBcImRlc3RydWN0aXZlIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jXG4gICAgICAgIFwibG9jYWwgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gKFtdLCBjb3B5X3BhdHRlcm4geCkpIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyN1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyN1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBfLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgTG9jYXRpb24ubm9uZSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI2XCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTBcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2NcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFub255bW91cyBsZXQgbW9kdWxlXCJcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvY1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFueW55bW91cyB1bnBhY2tcIiB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBMb2NhdGlvbi50IGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtYl9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgYmluZGluZ1wiKVxuICAgICAgICBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+XG4gICAgc3RyaW5nIEFzdF80MDkuQXN0dHlwZXMubG9jICogQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgb3B0aW9uID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+ICh7IGxvYyA9IExvY2F0aW9uLm5vbmU7IHR4dCA9IFwiKlwiIH0sIE5vbmUpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICggY29weV9sb2MgKGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIHggLT4geCkgeDAsXG4gICAgICAgIFNvbWUgKGNvcHlfbW9kdWxlX3R5cGUgeDEpIClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1kX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gVGh1IE1hciAyMSAwOTo1MDo0MiBHTVQgMjAxOVxuICAgT0NhbWwgd2FzOlxuICAgY29tbWl0IDU1YzliYTQ2NjM2MmYzMDNlYjRkNWVkNTExZjZmZGExNDI4NzkxMzcgKEhFQUQgLT4gNC4wOCwgb3JpZ2luLzQuMDgpXG4gICAgIEF1dGhvcjogTmljb2zDoXMgT2plZGEgQsOkciA8bi5vamUuYmFyQGdtYWlsLmNvbT5cbiAgICAgRGF0ZTogICBUdWUgTWFyIDE5IDA4OjExOjAyIDIwMTkgKzAxMDBcblxuICAgICAgICAgTWVyZ2UgcHVsbCByZXF1ZXN0ICM4NTIxIGZyb20gbm9qYi9maXhfdW5peF90ZXN0c180MDhcblxuICAgICAgICAgQWN0dWFsbHkgcnVuIGFsbCBsaWItdW5peCB0ZXN0cyBbNC4wOF1cbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA5LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA5LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA4LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDguUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA4LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOC5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDguQXN0dHlwZXMudHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gV2VkIEFwciAxOCAxMDozMzoyOSBCU1QgMjAxOFxuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgYzBiZDZhMjdlMTM4OTExNTYwZjQzZGM3NWQ1ZmRlMmFkZTRkNmNmZSAoSEVBRCwgdGFnOiA0LjA3LjArYmV0YTIpXG4gICAgIEF1dGhvcjogRGFtaWVuIERvbGlnZXogPGRhbWllbi5kb2xpZ2V6QGlucmlhLmZyPlxuICAgICBEYXRlOiAgIFR1ZSBBcHIgMTAgMTQ6NTA6NDggMjAxOCArMDIwMFxuXG4gICAgICAgICBjaGFuZ2UgVkVSU0lPTiBmb3IgNC4wNy4wK2JldGEyXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIzXCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDhcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9sb2MgPSBfO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgICggcGRpcl9uYW1lLkxvY2F0aW9uLnR4dCxcbiAgICAgICAgICBtYXRjaCBwZGlyX2FyZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IGFyZyApXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IF9wZGlyYV9sb2MgfSAtPlxuICBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2NcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZCxcbiAgICAgICAgICAgICAgY29weV9leHByZXNzaW9uIHgxIClcbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB7IGxldF87IGFuZHMgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbGV0Xy5wYm9wX29wLmxvYyBcImxldCBvcGVyYXRvcnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcHJmX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MSxcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwb2ZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX2xvYyA9IF87XG4gICAgIH0gLT5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWUsIGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPVxuICAgICAgICAgICAgICAgIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24geDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBsZXQgeDBfbG9jID1cbiAgICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgICB8IFtdIC0+IExvY2F0aW9uLm5vbmVcbiAgICAgICAgfCB7IEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYzsgXyB9IDo6IF8gLT4gcHR5cGVfbG9jXG4gICAgICBpblxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwX2xvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAucG1zX2xvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiBoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG4oKiBhbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICBGcm9tLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuICAgZnVuXG4gICAgIHsgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBwdHlleG5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuICAgICAgLT5cbiAgICAge1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSAoY29weV9sb2NhdGlvbiBwdHlleG5fbG9jKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgKGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcylcbiAgICAgfSopXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX25hbWUgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi50eHQgPSB4MDsgTG9jYXRpb24ubG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2FyZyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb25cbiAgICA9XG4gIGxldCB3cmFwIHBkaXJhX2Rlc2MgPVxuICAgIFNvbWUgeyBUby5QYXJzZXRyZWUucGRpcmFfZGVzYzsgVG8uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IExvY2F0aW9uLm5vbmUgfVxuICBpblxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBOb25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MCkgfD4gd3JhcFxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9ib29sIHgyLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4Myk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID0gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4Mik7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID0gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDA7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCB4MTtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQpO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBwb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc3RyX2ZpZWxkc1xuICBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZClcbiAgICAgICAgICAgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzaWdfZmllbGRzXG4gIGluXG5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiBfIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IHB0eWV4dF9wYXRoLkxvY2F0aW9uLmxvYztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIE1vbiBPY3QgIDIgMTE6MjU6NTcgQ0VTVCAyMDE3XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCA2NTk0MGEyYzZiZTQzYzQyZjc1YzZjNmIyNTU5NzRmN2U2ZGUwM2NhIChIRUFEIC0+IDQuMDYsIG9yaWdpbi80LjA2KVxuICAgICBBdXRob3I6IENocmlzdG9waGUgUmFmZmFsbGkgPGNocmlzdG9waGVAcmFmZmFsbGkuZXU+XG4gICAgIERhdGU6ICAgU3VuIE9jdCAxIDE4OjI3OjA3IDIwMTcgKzAyMDBcblxuICAgICAgICAgZml4ZWQgcG9zaXRpb24gb2YgbGFzdCBvcHRpb25hbCBsYXN0IHNlbWljb2x1bW4gaW4gc2VxdWVuY2UgKCMxMzg3KVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyMlwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgTG9jYXRpb24ubm9uZSBcImluaGVyaXRhbmNlIGluIG9iamVjdCB0eXBlXCIpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAudHh0LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIGV4cHJlc3Npb25cIlxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBfOyBfIH0sIHgwKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgeDA7IGxvYyB9LCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSB4MDsgbG9jIH0sIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyBsb2M7IF8gfSwgX3gwKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgbG9jOyBfIH0sIF94MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgdHlwZVwiXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIHsgdHh0ID0gY29weV9sYWJlbCB4MDsgbG9jID0gTG9jYXRpb24ubm9uZSB9LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lLFxuICAgICAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MS5Gcm9tLkFzdHR5cGVzLnR4dClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbm9sb2MgeCA9IHsgTG9jYXRpb24udHh0ID0geDsgbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBub2xvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKG5vbG9jIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAobm9sb2MgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiBub2xvYyB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gbm9sb2MgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDRcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJsb2NhbCBleGNlcHRpb25zXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBsYWIgbXVzdCBzdGFydCB3aXRoICc/Jy5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcblxuICAgIE5vdGU6IHdoZW4gdXNlZCB1bmRlciBQc3RyX3ByaW1pdGl2ZSwgcHJpbSBjYW5ub3QgYmUgZW1wdHlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb3JlX3R5cGUgbGlzdDtcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUpXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChhcmdzID0gW10sIHJlcyA9IFNvbWUgVDApXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29yZV90eXBlIGxpc3QgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIGludFxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxNVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDJcblxubGV0IGluamVjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIGQgPVxuICBsZXQgb3BlbiBUbyBpblxuICBsZXQgb3BlbiBQYXJzZXRyZWUgaW5cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgXyAtPlxuICAgICAgbGV0IGxvYyA9IHsgZC5wdHlwX2xvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHR4dCA9IExvbmdpZGVudC5MZG90IChMb25naWRlbnQuTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIikgaW5cbiAgICAgIGxldCBpZGVudCA9IHsgTG9jYXRpb24udHh0OyBsb2MgfSBpblxuICAgICAge1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWRlbnQsIFsgZCBdKTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuICB8IF8gLT4gZFxuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ1bnJlYWNoYWJsZSBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgbG9jIHgwLCBjb3B5X2NvbnN0YW50IGxvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIGxvYyA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJzaWduYXR1cmVzIGluIGF0dHJpYnV0ZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoZnJvbV9sb2MgcGV4dF9uYW1lKSBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKGZyb21fbG9jIHBjZF9uYW1lKSBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlIGxpc3QgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+IExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiaW5saW5lIHJlY29yZHNcIlxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gXCJcIlxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4geDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFwiP1wiIF4geDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IGxvYyA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLkFzdHR5cGVzLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdsJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQzMiAoSW50MzIub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdMJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQ2NCAoSW50NjQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICduJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgKE5hdGl2ZWludC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGludGVnZXIgbGl0ZXJhbHNcIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPiBUby5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGZsb2F0IGxpdGVyYWxzXCIpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHJlY2ZsYWcgdHlwZXMgPVxuICBtYXRjaCAocmVjZmxhZywgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzKSB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzIC0+IHR5cGVzXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIFtdIC0+IFtdXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHggOjogeHMgLT5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiX25vbmVfXCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gLTE7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICAoeyBUby5Bc3R0eXBlcy50eHQgPSBcIm5vbnJlY1wiOyBsb2MgfSwgVG8uUGFyc2V0cmVlLlBTdHIgW10pXG4gICAgICAgIDo6IHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIF94MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDJcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB0eXAgPVxuICBsZXQgb3BlbiBGcm9tIGluXG4gIGxldCBvcGVuIExvbmdpZGVudCBpblxuICBtYXRjaCAobGFiZWwsIHR5cC5QYXJzZXRyZWUucHR5cF9kZXNjKSB3aXRoXG4gIHwgKCBUby5Bc3R0eXBlcy5PcHRpb25hbCBfLFxuICAgICAgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKHsgTG9jYXRpb24udHh0ID0gTGRvdCAoTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIik7IF8gfSwgWyBkIF0pICkgLT5cbiAgICAgIGRcbiAgfCBfIC0+IHR5cFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHBjZF9hcmdzKTtcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuIGZ1biB4IC0+XG4gIGlmIHggPD4gXCJcIiB0aGVuXG4gICAgaWYgeC5bMF0gPSAnPycgdGhlblxuICAgICAgVG8uQXN0dHlwZXMuT3B0aW9uYWwgKFN0cmluZy5zdWIgeCAxIChTdHJpbmcubGVuZ3RoIHggLSAxKSlcbiAgICBlbHNlIFRvLkFzdHR5cGVzLkxhYmVsbGVkIHhcbiAgZWxzZSBUby5Bc3R0eXBlcy5Ob2xhYmVsXG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5Bc3R0eXBlcy5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50MzIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHgwLCBTb21lICdsJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDY0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB4MCwgU29tZSAnTCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB4MCwgU29tZSAnbicpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHR5cGVzID1cbiAgbGV0IGlzX25vbnJlYyAoYXR0ciwgXykgPSBhdHRyLkxvY2F0aW9uLnR4dCA9IFwibm9ucmVjXCIgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzIHdpdGhcbiAgfCB4IDo6IHhzIHdoZW4gTGlzdC5leGlzdHMgaXNfbm9ucmVjIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgLT5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoaXNfbm9ucmVjIHgpKSB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4cylcbiAgfCB0eXBlcyAtPiAoVG8uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcylcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2ludCAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsImxldCBpc19rZXl3b3JkID0gZnVuY3Rpb25cbiAgfCBcImFuZFwiIC0+IHRydWVcbiAgfCBcImFzXCIgLT4gdHJ1ZVxuICB8IFwiYXNzZXJ0XCIgLT4gdHJ1ZVxuICB8IFwiYmVnaW5cIiAtPiB0cnVlXG4gIHwgXCJjbGFzc1wiIC0+IHRydWVcbiAgfCBcImNvbnN0cmFpbnRcIiAtPiB0cnVlXG4gIHwgXCJkb1wiIC0+IHRydWVcbiAgfCBcImRvbmVcIiAtPiB0cnVlXG4gIHwgXCJkb3dudG9cIiAtPiB0cnVlXG4gIHwgXCJlbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZW5kXCIgLT4gdHJ1ZVxuICB8IFwiZXhjZXB0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZXh0ZXJuYWxcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IHRydWVcbiAgfCBcImZvclwiIC0+IHRydWVcbiAgfCBcImZ1blwiIC0+IHRydWVcbiAgfCBcImZ1bmN0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3RvclwiIC0+IHRydWVcbiAgfCBcImlmXCIgLT4gdHJ1ZVxuICB8IFwiaW5cIiAtPiB0cnVlXG4gIHwgXCJpbmNsdWRlXCIgLT4gdHJ1ZVxuICB8IFwiaW5oZXJpdFwiIC0+IHRydWVcbiAgfCBcImluaXRpYWxpemVyXCIgLT4gdHJ1ZVxuICB8IFwibGF6eVwiIC0+IHRydWVcbiAgfCBcImxldFwiIC0+IHRydWVcbiAgfCBcIm1hdGNoXCIgLT4gdHJ1ZVxuICB8IFwibWV0aG9kXCIgLT4gdHJ1ZVxuICB8IFwibW9kdWxlXCIgLT4gdHJ1ZVxuICB8IFwibXV0YWJsZVwiIC0+IHRydWVcbiAgfCBcIm5ld1wiIC0+IHRydWVcbiAgfCBcIm5vbnJlY1wiIC0+IHRydWVcbiAgfCBcIm9iamVjdFwiIC0+IHRydWVcbiAgfCBcIm9mXCIgLT4gdHJ1ZVxuICB8IFwib3BlblwiIC0+IHRydWVcbiAgfCBcIm9yXCIgLT4gdHJ1ZVxuICAoKiB8IFwicGFyc2VyXCIgLT4gdHJ1ZSAqKVxuICB8IFwicHJpdmF0ZVwiIC0+IHRydWVcbiAgfCBcInJlY1wiIC0+IHRydWVcbiAgfCBcInNpZ1wiIC0+IHRydWVcbiAgfCBcInN0cnVjdFwiIC0+IHRydWVcbiAgfCBcInRoZW5cIiAtPiB0cnVlXG4gIHwgXCJ0b1wiIC0+IHRydWVcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJ0cnlcIiAtPiB0cnVlXG4gIHwgXCJ0eXBlXCIgLT4gdHJ1ZVxuICB8IFwidmFsXCIgLT4gdHJ1ZVxuICB8IFwidmlydHVhbFwiIC0+IHRydWVcbiAgfCBcIndoZW5cIiAtPiB0cnVlXG4gIHwgXCJ3aGlsZVwiIC0+IHRydWVcbiAgfCBcIndpdGhcIiAtPiB0cnVlXG4gIHwgXCJsb3JcIiAtPiB0cnVlXG4gIHwgXCJseG9yXCIgLT4gdHJ1ZVxuICB8IFwibW9kXCIgLT4gdHJ1ZVxuICB8IFwibGFuZFwiIC0+IHRydWVcbiAgfCBcImxzbFwiIC0+IHRydWVcbiAgfCBcImxzclwiIC0+IHRydWVcbiAgfCBcImFzclwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnNcbiAgICBvcGVuIFByaW50ZiAkKilcblxuKCogQ29weSBvZiBPQ2FtbCBwYXJzZXRyZWVzICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uIChmdW4gc3VmZml4IF8gLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBBc3RfJXMgPSBBc3RfJXNcXG5cIiBzdWZmaXggc3VmZml4KVxuKilcbm1vZHVsZSBBc3RfNDAyID0gQXN0XzQwMlxubW9kdWxlIEFzdF80MDMgPSBBc3RfNDAzXG5tb2R1bGUgQXN0XzQwNCA9IEFzdF80MDRcbm1vZHVsZSBBc3RfNDA1ID0gQXN0XzQwNVxubW9kdWxlIEFzdF80MDYgPSBBc3RfNDA2XG5tb2R1bGUgQXN0XzQwNyA9IEFzdF80MDdcbm1vZHVsZSBBc3RfNDA4ID0gQXN0XzQwOFxubW9kdWxlIEFzdF80MDkgPSBBc3RfNDA5XG5tb2R1bGUgQXN0XzQxMCA9IEFzdF80MTBcbm1vZHVsZSBBc3RfNDExID0gQXN0XzQxMVxubW9kdWxlIEFzdF80MTIgPSBBc3RfNDEyXG5tb2R1bGUgQXN0XzQxMyA9IEFzdF80MTNcbm1vZHVsZSBBc3RfNDE0ID0gQXN0XzQxNFxubW9kdWxlIEFzdF81MDAgPSBBc3RfNTAwXG5tb2R1bGUgQXN0XzUwMSA9IEFzdF81MDFcbigqJCopXG5cbigqIE1hbnVhbCBtaWdyYXRpb24gYmV0d2VlbiB2ZXJzaW9ucyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4geCB5IC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB4IHkgeCB5O1xuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeSB4IHkgeClcbiopXG5tb2R1bGUgTWlncmF0ZV80MDJfNDAzID0gTWlncmF0ZV80MDJfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDNfNDAyID0gTWlncmF0ZV80MDNfNDAyXG5tb2R1bGUgTWlncmF0ZV80MDNfNDA0ID0gTWlncmF0ZV80MDNfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDRfNDAzID0gTWlncmF0ZV80MDRfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDRfNDA1ID0gTWlncmF0ZV80MDRfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA0ID0gTWlncmF0ZV80MDVfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA2ID0gTWlncmF0ZV80MDVfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA1ID0gTWlncmF0ZV80MDZfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA3ID0gTWlncmF0ZV80MDZfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA2ID0gTWlncmF0ZV80MDdfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA4ID0gTWlncmF0ZV80MDdfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA3ID0gTWlncmF0ZV80MDhfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA5ID0gTWlncmF0ZV80MDhfNDA5XG5tb2R1bGUgTWlncmF0ZV80MDlfNDA4ID0gTWlncmF0ZV80MDlfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDlfNDEwID0gTWlncmF0ZV80MDlfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTBfNDA5ID0gTWlncmF0ZV80MTBfNDA5XG5tb2R1bGUgTWlncmF0ZV80MTBfNDExID0gTWlncmF0ZV80MTBfNDExXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEwID0gTWlncmF0ZV80MTFfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEyID0gTWlncmF0ZV80MTFfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTJfNDExID0gTWlncmF0ZV80MTJfNDExXG5tb2R1bGUgTWlncmF0ZV80MTJfNDEzID0gTWlncmF0ZV80MTJfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTNfNDEyID0gTWlncmF0ZV80MTNfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTNfNDE0ID0gTWlncmF0ZV80MTNfNDE0XG5tb2R1bGUgTWlncmF0ZV80MTRfNDEzID0gTWlncmF0ZV80MTRfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTRfNTAwID0gTWlncmF0ZV80MTRfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDBfNDE0ID0gTWlncmF0ZV81MDBfNDE0XG5tb2R1bGUgTWlncmF0ZV81MDBfNTAxID0gTWlncmF0ZV81MDBfNTAxXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAwID0gTWlncmF0ZV81MDFfNTAwXG4oKiQqKVxuXG4oKiBDb21waWxlciBtb2R1bGVzICopXG5tb2R1bGUgQXN0X21ldGFkYXRhID0gQXN0X21ldGFkYXRhXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgUGFyc2UgPSBQYXJzZVxubW9kdWxlIFBwcmludGFzdCA9IFBwcmludGFzdFxuXG5sZXQgaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCkgPVxuICAoKklGX0FUX0xFQVNUIDQwOCBPY2FtbF9jb21tb24uQ29tcG1pc2MucmVhZF9jbGZsYWdzX2Zyb21fZW52ICgpICopXG4gICgqSUZfTk9UX0FUX0xFQVNUIDQwOCAoKSAqKVxuKCoqIEFkanVzdCB0aGUgcmVwb3J0aW5nIHN0eWxlIG9mIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgT0NBTUxfQ09MT1IgYW5kIE9DQU1MX0VSUk9SX1NUWUxFLiAqKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUT0RPOiByZW1vdmUgdGhpcyBvcGVuICopXG5vcGVuIFN0ZGxpYjBcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcbm9wZW4gQXN0bGliLkFzdF81MDBcblxuW0BAQHdhcm5pbmcgXCItOVwiXVxuXG5vcGVuIEFzdHR5cGVzXG5vcGVuIFBhcnNldHJlZVxuXG50eXBlICdhIHdpdGhfbG9jID0gJ2EgTG9jYXRpb24ubG9jXG50eXBlIGxvYyA9IExvY2F0aW9uLnRcbnR5cGUgbGlkID0gTG9uZ2lkZW50LnQgd2l0aF9sb2NcbnR5cGUgc3RyID0gc3RyaW5nIHdpdGhfbG9jXG50eXBlIHN0cl9vcHQgPSBzdHJpbmcgb3B0aW9uIHdpdGhfbG9jXG50eXBlIGF0dHJzID0gYXR0cmlidXRlIGxpc3RcblxubGV0IGRlZmF1bHRfbG9jID0gcmVmIExvY2F0aW9uLm5vbmVcblxudHlwZSByZWZfYW5kX3ZhbHVlID0gUiA6ICdhIHJlZiAqICdhIC0+IHJlZl9hbmRfdmFsdWVcblxubGV0IHByb3RlY3RfcmVmID1cbiAgbGV0IHNldF9yZWYgKFIgKHIsIHYpKSA9IHIgOj0gdiBpblxuICBmdW4gcmVmIGYgLT5cbiAgICBsZXQgKFIgKHIsIF8pKSA9IHJlZiBpblxuICAgIGxldCBiYWNrdXAgPSBSIChyLCAhcikgaW5cbiAgICBzZXRfcmVmIHJlZjtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICByYWlzZSBlXG5cbmxldCB3aXRoX2RlZmF1bHRfbG9jIGwgZiA9IHByb3RlY3RfcmVmIChSIChkZWZhdWx0X2xvYywgbCkpIGZcblxubW9kdWxlIENvbnN0ID0gc3RydWN0XG4gIGxldCBpbnRlZ2VyID9zdWZmaXggaSA9IFBjb25zdF9pbnRlZ2VyIChpLCBzdWZmaXgpXG4gIGxldCBpbnQgP3N1ZmZpeCBpID0gaW50ZWdlciA/c3VmZml4IChJbnQudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQzMiA/KHN1ZmZpeCA9ICdsJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50MzIudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQ2NCA/KHN1ZmZpeCA9ICdMJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50NjQudG9fc3RyaW5nIGkpXG4gIGxldCBuYXRpdmVpbnQgPyhzdWZmaXggPSAnbicpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbiAgbGV0IGZsb2F0ID9zdWZmaXggZiA9IFBjb25zdF9mbG9hdCAoZiwgc3VmZml4KVxuICBsZXQgY2hhciBjID0gUGNvbnN0X2NoYXIgY1xuXG4gIGxldCBzdHJpbmcgP3F1b3RhdGlvbl9kZWxpbWl0ZXIgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIHMgPVxuICAgIFBjb25zdF9zdHJpbmcgKHMsIGxvYywgcXVvdGF0aW9uX2RlbGltaXRlcilcbmVuZFxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIG5hbWUgcGF5bG9hZCA9XG4gICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIFR5cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjID0gZDtcbiAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBkLnB0eXBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFB0eXBfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhciBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jb25zdHIgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9vYmplY3QgKGEsIGIpKVxuICBsZXQgY2xhc3NfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NsYXNzIChhLCBiKSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2FsaWFzIChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXJpYW50IChhLCBiLCBjKSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcG9seSAoYSwgYikpXG4gIGxldCBwYWNrYWdlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BhY2thZ2UgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF9leHRlbnNpb24gYSlcblxuICBsZXQgZm9yY2VfcG9seSB0ID1cbiAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IHQgfCBfIC0+IHBvbHkgfmxvYzp0LnB0eXBfbG9jIFtdIHRcbiAgKCogLT4gZ2hvc3Q/ICopXG5cbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICAgIGluXG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbmVuZFxuXG5tb2R1bGUgUGF0ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2MgPSBkO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGQucHBhdF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHBhdF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyIGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hbGlhcyAoYSwgYikpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RhbnQgYSlcbiAgbGV0IGludGVydmFsID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2ludGVydmFsIChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90dXBsZSBhKVxuXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID1cbiAgICBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJ1Y3QgKGEsIE9wdGlvbi5tYXAgKGZ1biBiIC0+IChbXSwgYikpIGIpKVxuXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3JlY29yZCAoYSwgYikpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYXJyYXkgYSlcbiAgbGV0IG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vciAoYSwgYikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IHR5cGVfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90eXBlIGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfbGF6eSBhKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF91bnBhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29wZW4gKGEsIGIpKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXhjZXB0aW9uIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYyA9IGQ7XG4gICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZC5wZXhwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWRlbnQgYSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdGFudCBhKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldCAoYSwgYiwgYykpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgZnVuY3Rpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW5jdGlvbiBhKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXBwbHkgKGEsIGIpKVxuICBsZXQgbWF0Y2hfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX21hdGNoIChhLCBiKSlcbiAgbGV0IHRyeV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHJ5IChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF90dXBsZSBhKVxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cnVjdCAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3JlY29yZCAoYSwgYikpXG4gIGxldCBmaWVsZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9maWVsZCAoYSwgYikpXG4gIGxldCBzZXRmaWVsZCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcnJheSBhKVxuICBsZXQgaWZ0aGVuZWxzZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpKVxuICBsZXQgc2VxdWVuY2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VxdWVuY2UgKGEsIGIpKVxuICBsZXQgd2hpbGVfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3doaWxlIChhLCBiKSlcbiAgbGV0IGZvcl8gP2xvYyA/YXR0cnMgYSBiIGMgZCBlID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgY29lcmNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29lcmNlIChhLCBiLCBjKSlcbiAgbGV0IHNlbmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VuZCAoYSwgYikpXG4gIGxldCBuZXdfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXcgYSlcbiAgbGV0IHNldGluc3R2YXIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0aW5zdHZhciAoYSwgYikpXG4gIGxldCBvdmVycmlkZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3ZlcnJpZGUgYSlcbiAgbGV0IGxldG1vZHVsZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykpXG4gIGxldCBsZXRleGNlcHRpb24gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSlcbiAgbGV0IGFzc2VydF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Fzc2VydCBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xhenkgYSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcG9seSAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vYmplY3QgYSlcbiAgbGV0IG5ld3R5cGUgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3dHlwZSAoYSwgYikpXG4gIGxldCBwYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vcGVuIChhLCBiKSlcblxuICBsZXQgbGV0b3AgP2xvYyA/YXR0cnMgbGV0XyBhbmRzIGJvZHkgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9KVxuXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2V4dGVuc2lvbiBhKVxuICBsZXQgdW5yZWFjaGFibGUgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQZXhwX3VucmVhY2hhYmxlXG4gIGxldCBjYXNlIGxocyA/Z3VhcmQgcmhzID0geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG5cbiAgbGV0IGJpbmRpbmdfb3Agb3AgcGF0IGV4cCBsb2MgPVxuICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXR5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtdHlfZGVzYyA9IGQ7IHBtdHlfbG9jID0gbG9jOyBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG10eV9hdHRyaWJ1dGVzID0gZC5wbXR5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfaWRlbnQgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9hbGlhcyBhKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9zaWduYXR1cmUgYSlcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2Z1bmN0b3IgKGEsIGIpKVxuICBsZXQgd2l0aF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfd2l0aCAoYSwgYikpXG4gIGxldCB0eXBlb2ZfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV90eXBlb2YgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIE1vZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbW9kX2Rlc2MgPSBkOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGQucG1vZF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2lkZW50IHgpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3N0cnVjdHVyZSB4KVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYXJnIGJvZHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9mdW5jdG9yIChhcmcsIGJvZHkpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgbTEgbTIgPSBtayA/bG9jID9hdHRycyAoUG1vZF9hcHBseSAobTEsIG0yKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIG0gbXR5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfY29uc3RyYWludCAobSwgbXR5KSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBlID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfdW5wYWNrIGUpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBTaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc2lnX2Rlc2MgPSBkOyBwc2lnX2xvYyA9IGxvYyB9XG4gIGxldCB2YWx1ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3ZhbHVlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc2lnX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBlc3Vic3QgYSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdWxlIGEpXG4gIGxldCBtb2Rfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2RzdWJzdCBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfb3BlbiBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19pbmNsdWRlIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzaWdfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgU3RyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHN0cl9kZXNjID0gZDsgcHN0cl9sb2MgPSBsb2MgfVxuICBsZXQgZXZhbCA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXZhbCAoYSwgYXR0cnMpKVxuICBsZXQgdmFsdWUgP2xvYyBhIGIgPSBtayA/bG9jIChQc3RyX3ZhbHVlIChhLCBiKSlcbiAgbGV0IHByaW1pdGl2ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3ByaW1pdGl2ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHN0cl90eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHVsZSBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfb3BlbiBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzc190eXBlIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2luY2x1ZGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgQ2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNsX2Rlc2MgPSBkOyBwY2xfbG9jID0gbG9jOyBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2xfYXR0cmlidXRlcyA9IGQucGNsX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHIgKGEsIGIpKVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX3N0cnVjdHVyZSBhKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9hcHBseSAoYSwgYikpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3R5X2Rlc2MgPSBkOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGQucGN0eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2NvbnN0ciAoYSwgYikpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X3NpZ25hdHVyZSBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGN0eV9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0ZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3RmX2Rlc2MgPSBkOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfaW5oZXJpdCBhKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfdmFsIChhLCBiLCBjLCBkKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX21ldGhvZCAoYSwgYiwgYywgZCkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGN0Zl9hdHRyaWJ1dGUgYSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gZC5wY3RmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIENmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjZl9kZXNjID0gZDsgcGNmX2xvYyA9IGxvYzsgcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbmhlcml0IChhLCBiLCBjKSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX3ZhbCAoYSwgYiwgYykpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9tZXRob2QgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGluaXRpYWxpemVyXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbml0aWFsaXplciBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjZl9hdHRyaWJ1dGUgYSlcbiAgbGV0IHZpcnR1YWxfIGN0ID0gQ2ZrX3ZpcnR1YWwgY3RcbiAgbGV0IGNvbmNyZXRlIG8gZSA9IENma19jb25jcmV0ZSAobywgZSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBkLnBjZl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBWYWwgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocHJpbSA9IFtdKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgIHB2YWxfdHlwZSA9IHR5cDtcbiAgICAgIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHZhbF9sb2MgPSBsb2M7XG4gICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgdHlwID1cbiAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXA7IHBtZF9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtZF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNcyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBzeW4gPVxuICAgIHtcbiAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgIHBtc19tYW5pZmVzdCA9IHN5bjtcbiAgICAgIHBtc19hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXNfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTXRkID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/dHlwIG5hbWUgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbXRkX3R5cGUgPSB0eXA7XG4gICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtdGRfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgZXhwciA9XG4gICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1iX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE9wbiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhvdmVycmlkZSA9IEZyZXNoKSBleHByID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBJbmNsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBtZXhwciA9XG4gICAgeyBwaW5jbF9tb2QgPSBtZXhwcjsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuZW5kXG5cbm1vZHVsZSBWYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgcGF0IGV4cHIgPVxuICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IGF0dHJzOyBwdmJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgQ2kgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmlydCA9IENvbmNyZXRlKSA/KHBhcmFtcyA9IFtdKVxuICAgICAgbmFtZSBleHByID1cbiAgICB7XG4gICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUeXBlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KGNzdHJzID0gW10pXG4gICAgICA/KGtpbmQgPSBQdHlwZV9hYnN0cmFjdCkgPyhwcml2ID0gUHVibGljKSA/bWFuaWZlc3QgbmFtZSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdHlwZV9sb2MgPSBsb2M7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGZpZWxkID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8obXV0ID0gSW1tdXRhYmxlKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgcGxkX211dGFibGUgPSBtdXQ7XG4gICAgICBwbGRfdHlwZSA9IHR5cDtcbiAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICBwbGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG4oKiogVHlwZSBleHRlbnNpb25zICopXG5tb2R1bGUgVGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8ocHJpdiA9IFB1YmxpYylcbiAgICAgIHBhdGggY29uc3RydWN0b3JzID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgbWtfZXhjZXB0aW9uID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGNvbnN0cnVjdG9yID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBraW5kID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBkZWNsID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfZGVjbCAodmFycywgYXJncywgcmVzKTtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCByZWJpbmQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBsaWQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X3JlYmluZCBsaWQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgQ3NpZyA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbm1vZHVsZSBDc3RyID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxuKCoqIFJvdyBmaWVsZHMgKilcbm1vZHVsZSBSZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwcmZfZGVzYyA9IGRlc2M7IHByZl9sb2MgPSBsb2M7IHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgY29uc3QgdHlzID1cbiAgICBtayA/bG9jID9hdHRycyAoUnRhZyAobGFiZWwsIGNvbnN0LCB0eXMpKVxuXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoUmluaGVyaXQgdHkpXG5lbmRcblxuKCoqIE9iamVjdCBmaWVsZHMgKilcbm1vZHVsZSBPZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwb2ZfZGVzYyA9IGRlc2M7IHBvZl9sb2MgPSBsb2M7IHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgdHkgPSBtayA/bG9jID9hdHRycyAoT3RhZyAobGFiZWwsIHR5KSlcbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChPaW5oZXJpdCB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQkVHSU4gb2YgQkxBQ0sgTUFHSUMgKilcbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxudHlwZSBfIHdpdG5lc3NlcyA9IC4uXG5cbnR5cGUgXyBtaWdyYXRpb24gPSAuLlxudHlwZSBfIG1pZ3JhdGlvbiArPSBVbmRlZmluZWQgOiBfIG1pZ3JhdGlvblxuXG50eXBlICdhIG1pZ3JhdGlvbl9pbmZvID0ge1xuICBtdXRhYmxlIG5leHRfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbiAgbXV0YWJsZSBwcmV2aW91c192ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xufVxuXG4oKiogQWJzdHJhY3QgdmlldyBvZiBhIHZlcnNpb24gb2YgYW4gT0NhbWwgQXN0ICopXG5tb2R1bGUgdHlwZSBBc3QgPSBzaWdcbiAgKCokIGZvcmVhY2hfbW9kdWxlIChmdW4gbSB0eXBlcyAtPlxuICAgICAgcHJpbnRmIFwiICBtb2R1bGUgJXMgOiBzaWdcXG5cIiBtO1xuICAgICAgTGlzdC5pdGVyIHR5cGVzIH5mOihwcmludGYgXCIgICAgdHlwZSAlc1xcblwiKTtcbiAgICAgIHByaW50ZiBcIiAgZW5kXFxuXCJcbiAgICApXG4gICopXG4gIG1vZHVsZSBQYXJzZXRyZWUgOiBzaWdcbiAgICB0eXBlIHN0cnVjdHVyZVxuICAgIHR5cGUgc2lnbmF0dXJlXG4gICAgdHlwZSB0b3BsZXZlbF9waHJhc2VcbiAgICB0eXBlIGNvcmVfdHlwZVxuICAgIHR5cGUgZXhwcmVzc2lvblxuICAgIHR5cGUgcGF0dGVyblxuICAgIHR5cGUgY2FzZVxuICAgIHR5cGUgdHlwZV9kZWNsYXJhdGlvblxuICAgIHR5cGUgdHlwZV9leHRlbnNpb25cbiAgICB0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgIHR5cGUgY2xhc3NfZXhwclxuICAgIHR5cGUgY2xhc3NfZmllbGRcbiAgICB0eXBlIGNsYXNzX3R5cGVcbiAgICB0eXBlIGNsYXNzX3NpZ25hdHVyZVxuICAgIHR5cGUgY2xhc3NfdHlwZV9maWVsZFxuICAgIHR5cGUgbW9kdWxlX2V4cHJcbiAgICB0eXBlIG1vZHVsZV90eXBlXG4gICAgdHlwZSBzaWduYXR1cmVfaXRlbVxuICAgIHR5cGUgc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG4oKiQqKVxuICBtb2R1bGUgQ29uZmlnIDogc2lnXG4gICAgdmFsIGFzdF9pbXBsX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICAgIHZhbCBhc3RfaW50Zl9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgZW5kXG5lbmRcblxuKCogU2hvcnRjdXRzIGZvciB0YWxraW5nIGFib3V0IGFzdCB0eXBlcyBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxudHlwZSAnYSBfdHlwZXMgPSAnYSBjb25zdHJhaW50ICdhXG4gID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogXztcXG5cIiBzKSAqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogXztcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBfO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IF87XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogXztcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBfO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IF87XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogXztcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBfO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IF87XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IF87XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogXztcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBfO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IF87XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBfO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IF87XG4oKiQqKVxuICA+XG47O1xuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgcHJpbnRmIFwidHlwZSAnYSBnZXRfJXMgPVxcblwiIHM7XG4gICAgcHJpbnRmIFwiICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgJXMgOiAneDsgLi4gPlxcblwiIHNcbiAgKSAqKVxudHlwZSAnYSBnZXRfc3RydWN0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3RvcGxldmVsX3BocmFzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0b3BsZXZlbF9waHJhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY29yZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNvcmVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHByZXNzaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4cHJlc3Npb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfcGF0dGVybiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBwYXR0ZXJuIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2Nhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2FzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2RlY2xhcmF0aW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZGVjbGFyYXRpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9leHRlbnNpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9leHRlbnNpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19zaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZV9maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV9leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV9leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZV9pdGVtIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZV9pdGVtIDogJ3g7IC4uID5cbigqJCopXG5cbm1vZHVsZSB0eXBlIE9DYW1sX3ZlcnNpb24gPSBzaWdcbiAgbW9kdWxlIEFzdCA6IEFzdFxuICB2YWwgdmVyc2lvbiA6IGludFxuICB2YWwgc3RyaW5nX3ZlcnNpb24gOiBzdHJpbmdcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICB2YWwgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mb1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdG5lc3MoQXN0IDogQXN0KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICBsZXQgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mbyA9XG4gICAgeyBuZXh0X3ZlcnNpb24gPSBVbmRlZmluZWQ7IHByZXZpb3VzX3ZlcnNpb24gPSBVbmRlZmluZWQgfVxuZW5kXG5cbnR5cGUgJ3R5cGVzIG9jYW1sX3ZlcnNpb24gPVxuICAobW9kdWxlIE9DYW1sX3ZlcnNpb25cbiAgICAoKiQgbGV0IHNlcCA9IHdpdGhfdGhlbl9hbmQgKCkgaW5cbiAgICAgIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgICAgIHByaW50ZiBcIiAgICAldCB0eXBlIEFzdC4lcy4lcyA9ICd0eXBlcyBnZXRfJXNcXG5cIiBzZXAgbSBzIHMpICopXG4gICAgd2l0aCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgPSAndHlwZXMgZ2V0X3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9ICd0eXBlcyBnZXRfdG9wbGV2ZWxfcGhyYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY29yZV90eXBlID0gJ3R5cGVzIGdldF9jb3JlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHByZXNzaW9uID0gJ3R5cGVzIGdldF9leHByZXNzaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUucGF0dGVybiA9ICd0eXBlcyBnZXRfcGF0dGVyblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNhc2UgPSAndHlwZXMgZ2V0X2Nhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0gJ3R5cGVzIGdldF90eXBlX2RlY2xhcmF0aW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSAndHlwZXMgZ2V0X3R5cGVfZXh0ZW5zaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gJ3R5cGVzIGdldF9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19leHByID0gJ3R5cGVzIGdldF9jbGFzc19leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9ICd0eXBlcyBnZXRfY2xhc3Nfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZV9maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByID0gJ3R5cGVzIGdldF9tb2R1bGVfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlID0gJ3R5cGVzIGdldF9tb2R1bGVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zaWduYXR1cmVfaXRlbVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgKVxuXG50eXBlICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyVzOiAnZnJvbSBnZXRfJXMgLT4gJ3RvXyBnZXRfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlOiAnZnJvbSBnZXRfc3RydWN0dXJlIC0+ICd0b18gZ2V0X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmU6ICdmcm9tIGdldF9zaWduYXR1cmUgLT4gJ3RvXyBnZXRfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZTogJ2Zyb20gZ2V0X3RvcGxldmVsX3BocmFzZSAtPiAndG9fIGdldF90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlOiAnZnJvbSBnZXRfY29yZV90eXBlIC0+ICd0b18gZ2V0X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uOiAnZnJvbSBnZXRfZXhwcmVzc2lvbiAtPiAndG9fIGdldF9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm46ICdmcm9tIGdldF9wYXR0ZXJuIC0+ICd0b18gZ2V0X3BhdHRlcm47XG4gIGNvcHlfY2FzZTogJ2Zyb20gZ2V0X2Nhc2UgLT4gJ3RvXyBnZXRfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uOiAnZnJvbSBnZXRfdHlwZV9kZWNsYXJhdGlvbiAtPiAndG9fIGdldF90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uOiAnZnJvbSBnZXRfdHlwZV9leHRlbnNpb24gLT4gJ3RvXyBnZXRfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiAnZnJvbSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICd0b18gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByOiAnZnJvbSBnZXRfY2xhc3NfZXhwciAtPiAndG9fIGdldF9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZTogJ2Zyb20gZ2V0X2NsYXNzX3R5cGUgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmU6ICdmcm9tIGdldF9jbGFzc19zaWduYXR1cmUgLT4gJ3RvXyBnZXRfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ6ICdmcm9tIGdldF9jbGFzc190eXBlX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHI6ICdmcm9tIGdldF9tb2R1bGVfZXhwciAtPiAndG9fIGdldF9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZTogJ2Zyb20gZ2V0X21vZHVsZV90eXBlIC0+ICd0b18gZ2V0X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtOiAnZnJvbSBnZXRfc2lnbmF0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW06ICdmcm9tIGdldF9zdHJ1Y3R1cmVfaXRlbSAtPiAndG9fIGdldF9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbmxldCBpZCB4ID0geFxubGV0IG1pZ3JhdGlvbl9pZGVudGl0eSA6ICgnYSwgJ2EpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICBjb3B5XyVzID0gaWQ7XFxuXCIgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgPSBpZDtcbiAgY29weV9zaWduYXR1cmUgPSBpZDtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgPSBpZDtcbiAgY29weV9jb3JlX3R5cGUgPSBpZDtcbiAgY29weV9leHByZXNzaW9uID0gaWQ7XG4gIGNvcHlfcGF0dGVybiA9IGlkO1xuICBjb3B5X2Nhc2UgPSBpZDtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uID0gaWQ7XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gPSBpZDtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBpZDtcbiAgY29weV9jbGFzc19leHByID0gaWQ7XG4gIGNvcHlfY2xhc3NfZmllbGQgPSBpZDtcbiAgY29weV9jbGFzc190eXBlID0gaWQ7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA9IGlkO1xuICBjb3B5X21vZHVsZV9leHByID0gaWQ7XG4gIGNvcHlfbW9kdWxlX3R5cGUgPSBpZDtcbiAgY29weV9zaWduYXR1cmVfaXRlbSA9IGlkO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtID0gaWQ7XG4oKiQqKVxufVxuXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBtaWdyYXRpb25fY29tcG9zZSAoYWIgOiAoJ2EsICdiKSBtaWdyYXRpb25fZnVuY3Rpb25zKSAoYmMgOiAoJ2IsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zKSA6ICgnYSwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lLTIxcyA9IGNvbXBvc2UgYmMuY29weV8lLTIxcyBhYi5jb3B5XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgIGFiLmNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgYWIuY29weV9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2V4cHJlc3Npb24gICAgICAgICAgICBhYi5jb3B5X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3BhdHRlcm4gICAgICAgICAgICAgICBhYi5jb3B5X3BhdHRlcm47XG4gIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2Nhc2UgICAgICAgICAgICAgICAgICBhYi5jb3B5X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICBhYi5jb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICBhYi5jb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGNvbXBvc2UgYmMuY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgYWIuY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlICAgICAgICAgICAgYWIuY29weV9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgYWIuY29weV9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICBhYi5jb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV9leHByICAgICAgICAgICBhYi5jb3B5X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgYWIuY29weV9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxudHlwZSBfIG1pZ3JhdGlvbiArPSBNaWdyYXRpb24gOiAnZnJvbSBvY2FtbF92ZXJzaW9uICogKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uIC0+ICdmcm9tIG1pZ3JhdGlvblxuXG5tb2R1bGUgdHlwZSBNaWdyYXRlX21vZHVsZSA9IHNpZ1xuICBtb2R1bGUgRnJvbSA6IEFzdFxuICBtb2R1bGUgVG8gOiBBc3RcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgcHJpbnRmIFwiICB2YWwgY29weV8lLTIxczogRnJvbS4lcy4lcyAtPiBUby4lcy4lc1xcblwiIHMgbSBzIG0gcykgKilcbiAgdmFsIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZVxuICB2YWwgY29weV9zaWduYXR1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gIHZhbCBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgIDogRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgdmFsIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZVxuICB2YWwgY29weV9leHByZXNzaW9uICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgdmFsIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuXG4gIHZhbCBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZVxuICB2YWwgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgdmFsIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgdmFsIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICB2YWwgY29weV9jbGFzc19leHByICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgdmFsIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlXG4gIHZhbCBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gIHZhbCBjb3B5X21vZHVsZV9leHByICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gIHZhbCBjb3B5X21vZHVsZV90eXBlICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gIHZhbCBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4oKiQqKVxuZW5kXG5cbm1vZHVsZSBNaWdyYXRpb25fZnVuY3Rpb25zXG4gICAgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0IG1pZ3JhdGlvbl9mdW5jdGlvbnMgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbGV0IG9wZW4gQV90b19CIGluXG4gICAge1xuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICAgIGNvcHlfcGF0dGVybjtcbiAgICAgIGNvcHlfY2FzZTtcbiAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfbWlncmF0aW9uIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuICAgIChCX3RvX0EgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQi5Bc3QgYW5kIG1vZHVsZSBUbyA9IEEuQXN0KVxuPVxuc3RydWN0XG4gIGxldCAoKSA9IChcbiAgICBsZXQgaXNfdW5kZWZpbmVkIDogdHlwZSBhLiBhIG1pZ3JhdGlvbiAtPiBib29sID0gZnVuY3Rpb25cbiAgICAgIHwgVW5kZWZpbmVkIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgYXNzZXJ0IChBLnZlcnNpb24gPCBCLnZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24pO1xuICAgIGxldCBtb2R1bGUgQV90b19CX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQSkoQikoQV90b19CKSBpblxuICAgIGxldCBtb2R1bGUgQl90b19BX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQikoQSkoQl90b19BKSBpblxuICAgIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQSksIEFfdG9fQl9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBCKSk7XG4gICAgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQiksIEJfdG9fQV9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBBKSk7XG4gIClcbmVuZFxuXG50eXBlICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb24gPVxuICB8IE5vX21pZ3JhdGlvbiA6ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cbiAgfCBJbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgOiAgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uXG4gICAgICAtPiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG5cbmxldCBpbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMpXFxuXCIgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUpXG4gICAgKHR5cGUgc2lnbmF0dXJlKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZSlcbiAgICAodHlwZSBjb3JlX3R5cGUpXG4gICAgKHR5cGUgZXhwcmVzc2lvbilcbiAgICAodHlwZSBwYXR0ZXJuKVxuICAgICh0eXBlIGNhc2UpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgKHR5cGUgY2xhc3NfZXhwcilcbiAgICAodHlwZSBjbGFzc19maWVsZClcbiAgICAodHlwZSBjbGFzc190eXBlKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZSlcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkKVxuICAgICh0eXBlIG1vZHVsZV9leHByKVxuICAgICh0eXBlIG1vZHVsZV90eXBlKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgIFwiICAgICAlLTIxcyA6ICVzO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmU7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGU7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICBkaXJlY3Rpb25cbiAgPVxuICBsZXQgdmVyc2lvbiA9IG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgTmV4dCAtPiBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvblxuICAgIHwgYFByZXZpb3VzIC0+IEEubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvblxuICBpblxuICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgfCBVbmRlZmluZWQgLT4gTm9fbWlncmF0aW9uXG4gIHwgTWlncmF0aW9uIChfLCBmdW5zLCB0b18pIC0+IEltbWVkaWF0ZV9taWdyYXRpb24gKGZ1bnMsIHRvXylcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbWlncmF0ZVxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzMSkgKHR5cGUgJXMyKVxcblwiIHMgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUxKSAodHlwZSBzdHJ1Y3R1cmUyKVxuICAgICh0eXBlIHNpZ25hdHVyZTEpICh0eXBlIHNpZ25hdHVyZTIpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMSkgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMilcbiAgICAodHlwZSBjb3JlX3R5cGUxKSAodHlwZSBjb3JlX3R5cGUyKVxuICAgICh0eXBlIGV4cHJlc3Npb24xKSAodHlwZSBleHByZXNzaW9uMilcbiAgICAodHlwZSBwYXR0ZXJuMSkgKHR5cGUgcGF0dGVybjIpXG4gICAgKHR5cGUgY2FzZTEpICh0eXBlIGNhc2UyKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24xKSAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbjEpICh0eXBlIHR5cGVfZXh0ZW5zaW9uMilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IxKSAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IyKVxuICAgICh0eXBlIGNsYXNzX2V4cHIxKSAodHlwZSBjbGFzc19leHByMilcbiAgICAodHlwZSBjbGFzc19maWVsZDEpICh0eXBlIGNsYXNzX2ZpZWxkMilcbiAgICAodHlwZSBjbGFzc190eXBlMSkgKHR5cGUgY2xhc3NfdHlwZTIpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMSkgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMilcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkMSkgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDIpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIxKSAodHlwZSBtb2R1bGVfZXhwcjIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUxKSAodHlwZSBtb2R1bGVfdHlwZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0xKSAodHlwZSBzaWduYXR1cmVfaXRlbTIpXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0xKSAodHlwZSBzdHJ1Y3R1cmVfaXRlbTIpXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczE7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUxO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUxO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UxO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUxO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMTtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjE7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UxO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMTtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24xO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IxO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMTtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQxO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDE7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMTtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUxO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTE7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICAoKG1vZHVsZSBCKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMyO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMjtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMjtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMjtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMjtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjI7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4yO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMjtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjI7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMjtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTI7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTI7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQyO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMjtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0yO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTI7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgPVxuICBtYXRjaCBBLlZlcnNpb24gd2l0aFxuICB8IEIuVmVyc2lvbiAtPiBtaWdyYXRpb25faWRlbnRpdHlcbiAgfCBfIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9IGlmIEEudmVyc2lvbiA8IEIudmVyc2lvbiB0aGVuIGBOZXh0IGVsc2UgYFByZXZpb3VzIGluXG4gICAgbGV0IHJlYyBtaWdyYXRlIChtIDogQS50eXBlcyBpbW1lZGlhdGVfbWlncmF0aW9uKSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGYsIChtb2R1bGUgVG8pKSAtPlxuICAgICAgICBtYXRjaCBUby5WZXJzaW9uIHdpdGhcbiAgICAgICAgfCBCLlZlcnNpb24gLT4gZlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYXRjaCBpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgVG8pIGRpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChnLCB0bzIpIC0+XG4gICAgICAgICAgICBtaWdyYXRlIChJbW1lZGlhdGVfbWlncmF0aW9uIChtaWdyYXRpb25fY29tcG9zZSBmIGcsIHRvMikpXG4gICAgaW5cbiAgICBtaWdyYXRlIChpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgQSkgZGlyZWN0aW9uKVxuXG5tb2R1bGUgQ29udmVydCAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgbGV0IHtcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgY29weV9zaWduYXR1cmU7XG4gICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgY29weV9jb3JlX3R5cGU7XG4gICAgY29weV9leHByZXNzaW9uO1xuICAgIGNvcHlfcGF0dGVybjtcbiAgICBjb3B5X2Nhc2U7XG4gICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY29weV9jbGFzc19leHByO1xuICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgY29weV9jbGFzc190eXBlO1xuICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICBjb3B5X21vZHVsZV9leHByO1xuICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgfSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBtaWdyYXRlIChtb2R1bGUgQSkgKG1vZHVsZSBCKVxuZW5kXG5cbigqJCBmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIHZlcnNpb24gLT5cbiAgICBwcmludGYgXCJtb2R1bGUgT0NhbWxfJWQgPSBzdHJ1Y3RcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF8lZClcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHZlcnNpb24gPSAlZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgc3RyaW5nX3ZlcnNpb24gPSAlU1xcblwiIHZlcnNpb247XG4gICAgcHJpbnRmIFwiZW5kXFxuXCI7XG4gICAgcHJpbnRmIFwibGV0IG9jYW1sXyVkIDogT0NhbWxfJWQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfJWQpXFxuXCJcbiAgICAgIG4gbiBuO1xuICApXG4qKVxubW9kdWxlIE9DYW1sXzQwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDIpXG4gIGxldCB2ZXJzaW9uID0gNDAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wMlwiXG5lbmRcbmxldCBvY2FtbF80MDIgOiBPQ2FtbF80MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAyKVxubW9kdWxlIE9DYW1sXzQwMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDMpXG4gIGxldCB2ZXJzaW9uID0gNDAzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wM1wiXG5lbmRcbmxldCBvY2FtbF80MDMgOiBPQ2FtbF80MDMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAzKVxubW9kdWxlIE9DYW1sXzQwNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDQpXG4gIGxldCB2ZXJzaW9uID0gNDA0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNFwiXG5lbmRcbmxldCBvY2FtbF80MDQgOiBPQ2FtbF80MDQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA0KVxubW9kdWxlIE9DYW1sXzQwNSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDVcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDUpXG4gIGxldCB2ZXJzaW9uID0gNDA1XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNVwiXG5lbmRcbmxldCBvY2FtbF80MDUgOiBPQ2FtbF80MDUudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA1KVxubW9kdWxlIE9DYW1sXzQwNiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDZcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDYpXG4gIGxldCB2ZXJzaW9uID0gNDA2XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNlwiXG5lbmRcbmxldCBvY2FtbF80MDYgOiBPQ2FtbF80MDYudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA2KVxubW9kdWxlIE9DYW1sXzQwNyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDdcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDcpXG4gIGxldCB2ZXJzaW9uID0gNDA3XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wN1wiXG5lbmRcbmxldCBvY2FtbF80MDcgOiBPQ2FtbF80MDcudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA3KVxubW9kdWxlIE9DYW1sXzQwOCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDhcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDgpXG4gIGxldCB2ZXJzaW9uID0gNDA4XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOFwiXG5lbmRcbmxldCBvY2FtbF80MDggOiBPQ2FtbF80MDgudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA4KVxubW9kdWxlIE9DYW1sXzQwOSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDlcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDkpXG4gIGxldCB2ZXJzaW9uID0gNDA5XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOVwiXG5lbmRcbmxldCBvY2FtbF80MDkgOiBPQ2FtbF80MDkudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA5KVxubW9kdWxlIE9DYW1sXzQxMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTApXG4gIGxldCB2ZXJzaW9uID0gNDEwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMFwiXG5lbmRcbmxldCBvY2FtbF80MTAgOiBPQ2FtbF80MTAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEwKVxubW9kdWxlIE9DYW1sXzQxMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTEpXG4gIGxldCB2ZXJzaW9uID0gNDExXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMVwiXG5lbmRcbmxldCBvY2FtbF80MTEgOiBPQ2FtbF80MTEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDExKVxubW9kdWxlIE9DYW1sXzQxMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTIpXG4gIGxldCB2ZXJzaW9uID0gNDEyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMlwiXG5lbmRcbmxldCBvY2FtbF80MTIgOiBPQ2FtbF80MTIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEyKVxubW9kdWxlIE9DYW1sXzQxMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTMpXG4gIGxldCB2ZXJzaW9uID0gNDEzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xM1wiXG5lbmRcbmxldCBvY2FtbF80MTMgOiBPQ2FtbF80MTMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEzKVxubW9kdWxlIE9DYW1sXzQxNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTQpXG4gIGxldCB2ZXJzaW9uID0gNDE0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xNFwiXG5lbmRcbmxldCBvY2FtbF80MTQgOiBPQ2FtbF80MTQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDE0KVxubW9kdWxlIE9DYW1sXzUwMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDApXG4gIGxldCB2ZXJzaW9uID0gNTAwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4wXCJcbmVuZFxubGV0IG9jYW1sXzUwMCA6IE9DYW1sXzUwMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDApXG5tb2R1bGUgT0NhbWxfNTAxID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMSlcbiAgbGV0IHZlcnNpb24gPSA1MDFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjFcIlxuZW5kXG5sZXQgb2NhbWxfNTAxIDogT0NhbWxfNTAxLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMSlcbigqJCopXG5cbmxldCBhbGxfdmVyc2lvbnMgOiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIGxpc3QgPSBbXG4gICgqJGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gXyAtPlxuICAgICAgcHJpbnRmIFwiKG1vZHVsZSBPQ2FtbF8lZCA6IE9DYW1sX3ZlcnNpb24pO1xcblwiIG4pKilcbihtb2R1bGUgT0NhbWxfNDAyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA1IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDcgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA4IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDExIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDE0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDEgOiBPQ2FtbF92ZXJzaW9uKTtcbigqJCopXG5dXG5cbigqJGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4gYSBiIC0+XG4gICAgcHJpbnRmIFwiaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfJWQpKE9DYW1sXyVkKVxcblwiIGEgYjtcbiAgICBwcmludGYgXCIgICAgKEFzdGxpYi5NaWdyYXRlXyVkXyVkKShBc3RsaWIuTWlncmF0ZV8lZF8lZClcXG5cIiBhIGIgYiBhXG4gIClcbiopXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDIpKE9DYW1sXzQwMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAyXzQwMykoQXN0bGliLk1pZ3JhdGVfNDAzXzQwMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMykoT0NhbWxfNDA0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDNfNDA0KShBc3RsaWIuTWlncmF0ZV80MDRfNDAzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA0KShPQ2FtbF80MDUpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNF80MDUpKEFzdGxpYi5NaWdyYXRlXzQwNV80MDQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDUpKE9DYW1sXzQwNilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNikoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNikoT0NhbWxfNDA3KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDZfNDA3KShBc3RsaWIuTWlncmF0ZV80MDdfNDA2KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA3KShPQ2FtbF80MDgpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwN180MDgpKEFzdGxpYi5NaWdyYXRlXzQwOF80MDcpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDgpKE9DYW1sXzQwOSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA4XzQwOSkoQXN0bGliLk1pZ3JhdGVfNDA5XzQwOClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOSkoT0NhbWxfNDEwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDlfNDEwKShBc3RsaWIuTWlncmF0ZV80MTBfNDA5KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEwKShPQ2FtbF80MTEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMF80MTEpKEFzdGxpYi5NaWdyYXRlXzQxMV80MTApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTEpKE9DYW1sXzQxMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDExXzQxMikoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMikoT0NhbWxfNDEzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTJfNDEzKShBc3RsaWIuTWlncmF0ZV80MTNfNDEyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEzKShPQ2FtbF80MTQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxM180MTQpKEFzdGxpYi5NaWdyYXRlXzQxNF80MTMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTQpKE9DYW1sXzUwMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDE0XzUwMCkoQXN0bGliLk1pZ3JhdGVfNTAwXzQxNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMCkoT0NhbWxfNTAxKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDBfNTAxKShBc3RsaWIuTWlncmF0ZV81MDFfNTAwKVxuKCokKilcblxubW9kdWxlIE9DYW1sX2N1cnJlbnQgPSBPQ2FtbF9PQ0FNTF9WRVJTSU9OXG5cbm1vZHVsZSBGaW5kX3ZlcnNpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW1wbCBvZiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIHwgSW50ZiBvZiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIHwgVW5rbm93blxuXG4gIGxldCBmcm9tX21hZ2ljIG1hZ2ljID1cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBVbmtub3duXG4gICAgICB8IChtb2R1bGUgVmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBWZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gbWFnaWMgdGhlblxuICAgICAgICAgICAgSW1wbCAobW9kdWxlIFZlcnNpb24pXG4gICAgICAgICAgZWxzZSBpZiBWZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gbWFnaWMgdGhlblxuICAgICAgICAgICAgSW50ZiAobW9kdWxlIFZlcnNpb24pXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9vcCB0YWlsXG4gICAgaW5cbiAgICAoKiBUcmF2ZXJzZSB0aGUgdmVyc2lvbnMgZnJvbSBsYXN0IHRvIGZpcnN0OlxuICAgICAgIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZW4ndCB1bmlxdWUgYW1vbmcgdmVyc2lvbnMsXG4gICAgICAgd2Ugd2FudCB0aGUgbGF0ZXN0IHZlcnNpb24gd2l0aCBhIG1hZ2ljIG51bWJlciBtYXRjaC5cbiAgICAgICBUaGUgc2l0dWF0aW9uIGluIG1pbmQgaXMgdHJ1bmsgc3VwcG9ydC4gKilcbiAgICAgIGxldCBhbGxfdmVyc2lvbnNfdG9wX2Rvd24gPSBMaXN0LnJldiBhbGxfdmVyc2lvbnMgaW5cbiAgICAgIGxvb3AgYWxsX3ZlcnNpb25zX3RvcF9kb3duXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGNvbnRyb2wgd2hhdCB3ZSB1c2UgZnJvbSB0aGUgY3VycmVudCBjb21waWxlciBhbmQgd2hhdCBpcyBlbWJlZCBpblxuICAgdGhpcyBsaWJyYXJ5LlxuXG4gICBJdCBtdXN0IGJlIG9wZW5lZCBpbiBhbGwgbW9kdWxlcywgZXNwZWNpYWxseSB0aGUgb25lcyBjb21pbmcgZnJvbSB0aGUgY29tcGlsZXIuXG4qKVxuXG4oKiQgb3BlbiBBc3RfY2luYXBzX2hlbHBlcnMgJCopXG5cbm1vZHVsZSBKcyA9IFZlcnNpb25zLk9DYW1sXzUwMFxubW9kdWxlIE9jYW1sID0gVmVyc2lvbnMuT0NhbWxfY3VycmVudFxuXG5tb2R1bGUgU2VsZWN0X2FzdCAoT2NhbWwgOiBWZXJzaW9ucy5PQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBpbmNsdWRlIEpzXG5cbiAgbW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnanMsICdvY2FtbCkgdCA9XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuJXMsXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuJXMgKVxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgdFxcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHMgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENvcmVfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHByZXNzaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgUGF0dGVyblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUucGF0dGVybiApXG4gICAgICAgICAgICB0XG4gICAgICB8IENhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jYXNlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9leHRlbnNpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19leHByXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19zaWduYXR1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV9leHByXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFN0cnVjdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuKCokKilcbiAgICAgIHwgTGlzdCA6ICgnYSwgJ2IpIHQgLT4gKCdhIGxpc3QsICdiIGxpc3QpIHRcbiAgICAgIHwgUGFpciA6ICgnYSwgJ2IpIHQgKiAoJ2MsICdkKSB0IC0+ICgnYSAqICdjLCAnYiAqICdkKSB0XG4gIGVuZFxuXG4gIG9wZW4gVHlwZVxuICBtb2R1bGUgT2Zfb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChPY2FtbCkgKEpzKVxuICBtb2R1bGUgVG9fb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChKcykgKE9jYW1sKVxuXG4gIGxldCByZWMgb2Zfb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4gb2NhbWwgLT4ganMgPVxuICAgIGxldCBvcGVuIE9mX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKG9mX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSBvZl9vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSBvZl9vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IHJlYyB0b19vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBqcyAtPiBvY2FtbCA9XG4gICAgbGV0IG9wZW4gVG9fb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAodG9fb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IHRvX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IHRvX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgb2Zfb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSB0b19vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IG9mX29jYW1sIGl0ZW1cbiAgbGV0IHRvX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gb2Zfb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiB0b19vY2FtbCBpdGVtXG5lbmRcblxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFNlbGVjdF9hc3QgKE9jYW1sKVxubW9kdWxlIEFzdF9oZWxwZXIgPSBBc3RfaGVscGVyX2xpdGVcblxuKCogTW9kdWxlcyBmcm9tIEFzdF88bj4gb2YgQXN0bGliLCB3aGVyZSA8bj4gaXMgdGhlIGNvbXBpbGVyIHZlcnNpb24gdGhlIHBweGxpYiBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aCAqKVxubW9kdWxlIFBhcnNldHJlZSA9IFNlbGVjdGVkX2FzdC5Bc3QuUGFyc2V0cmVlXG5tb2R1bGUgQXN0dHlwZXMgPSBTZWxlY3RlZF9hc3QuQXN0LkFzdHR5cGVzXG5cbigqIE90aGVyIEFzdGxpYiBtb2R1bGVzICopXG5tb2R1bGUgTG9jYXRpb24gPSBBc3RsaWIuTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBBc3RsaWIuTG9uZ2lkZW50XG5cbm1vZHVsZSBQYXJzZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdGxpYi5QYXJzZVxuICBtb2R1bGUgT2Zfb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChPY2FtbCkgKEpzKVxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbiBsZXhidWYgPSBpbXBsZW1lbnRhdGlvbiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zdHJ1Y3R1cmVcbiAgbGV0IGludGVyZmFjZSBsZXhidWYgPSBpbnRlcmZhY2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc2lnbmF0dXJlXG5cbiAgbGV0IHRvcGxldmVsX3BocmFzZSBsZXhidWYgPVxuICAgIHRvcGxldmVsX3BocmFzZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV90b3BsZXZlbF9waHJhc2VcblxuICBsZXQgdXNlX2ZpbGUgbGV4YnVmID1cbiAgICB1c2VfZmlsZSBsZXhidWYgfD4gTGlzdC5tYXAgT2Zfb2NhbWwuY29weV90b3BsZXZlbF9waHJhc2VcblxuICBsZXQgY29yZV90eXBlIGxleGJ1ZiA9IGNvcmVfdHlwZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9jb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gbGV4YnVmID0gZXhwcmVzc2lvbiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9leHByZXNzaW9uXG4gIGxldCBwYXR0ZXJuIGxleGJ1ZiA9IHBhdHRlcm4gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfcGF0dGVyblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGRlZmF1bHRfcHJpbnRfd2FybmluZyBfbG9jID0gKClcbmxldCBhYm91dF9pdGVfYnJhbmNoX3JlZiA9IHJlZiBkZWZhdWx0X3ByaW50X3dhcm5pbmdcbmxldCBjYXJlX2Fib3V0X2l0ZV9icmFuY2ggPSByZWYgZmFsc2VcbmxldCBhYm91dF9pdGVfYnJhbmNoIGxvYyA9ICFhYm91dF9pdGVfYnJhbmNoX3JlZiBsb2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIERlZmluaXRpb24gb2YgdGhlIE9DYW1sIEFTVCAqKVxuXG5vcGVuIEltcG9ydFxuXG4oKiBUaGlzIGZpbGUgaXMgb2J0YWluZWQgYnk6XG5cbiAgIC0gY29weWluZyBhIHN1YnNldCBvZiB0aGUgY29ycmVzcG9uZGluZyBhc3RfeHh4Lm1sIGZpbGUgZnJvbSBBc3RsaWJcbiAgIChzdWItbW9kdWxlcyBBc3R0eXBlcyBhbmQgUGFyc2V0cmVlKVxuICAgLSBhZGRpbmcgdGhlIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHBvc2l0aW9uLCBsb2NhdGlvbiwgbG9jIGFuZCBsb25naWRlbnRcbiAgIC0gZmxhdHRlbmluZyBhbGwgdGhlIG1vZHVsZXNcbiAgIC0gcmVtb3ZpbmcgQXN0dHlwZXMuY29uc3RhbnQgKHVudXNlZCBhbmQgY29uZmxpY3RzIHdpdGggUGFyc2V0cmVlLmNvbnN0YW50KVxuICAgLSByZW5hbWluZyBhIGZldyB0eXBlczpcbiAgIC0gLSBMb2NhdGlvbi50IC0+IGxvY2F0aW9uXG4gICAtIC0gTG9uZ2lkZW50LnQgLT4gbG9uZ2lkZW50XG4gICAtIGFkZGluZyBhIHR5cGUgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2MgYW5kIHJlcGxhY2luZyBhbGwgdGhlIG9jY3VycmVuY2VzIG9mIHRoZVxuICAgbGF0dGVyIGJ5IHRoZSBmb3JtZXIuIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gb3ZlcnJpZGUgaXRlcmF0aW9uIGFuIHRoZSBsZXZlbCBvZiBhXG4gICBsb25naWRlbnQgbG9jXG4gICAtIGFkZGluZyBhIHR5cGUgY2FzZXMgPSBjYXNlIGxpc3RcbiAgIC0gcmVwbGFjaW5nIGFsbCBvY2N1cmVuY2VzIG9mIFwiY2FzZSBsaXN0XCIgYnkgXCJjYXNlc1wiXG4gICAtIHJlcGxhY2luZyBhbGwgdGhlICgqSUZfQ1VSUkVOVCA9IEZvby5iYXIqKSBieTogPSBGb28uYmFyXG4gICAtIHJlbW92aW5nIHRoZSBleHRyYSB2YWx1ZXMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZVxuICAgLSByZXBsYWNpbmcgYXBwIFt0eXBlIC4uLl0gYnkgW2FuZCAuLi5dIHRvIG1ha2UgZXZlcnl0aGluZyBvbmUgcmVjdXJzaXZlIGJsb2NrXG4gICAtIGFkZGluZyBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdW0BAQGVuZF0gYXQgdGhlIGVuZFxuXG4gICBUbyB1cGRhdGUgaXQgdG8gYSBuZXdlciBPQ2FtbCB2ZXJzaW9uLCBjcmVhdGUgYSBuZXcgbW9kdWxlIHdpdGggdGhlIGFib3ZlIGZyb20gdGhlXG4gICBsYXRlc3QgY29tcGlsZXIgYW5kIGFkZCB0aGUgZm9sbG93aW5nIG1vZHVsZSBkZWZpbml0aW9ucyBhbmQgb3BlbnMgdG8gZ2V0IGl0IHRvXG4gICBjb21waWxlOlxuICAgW3tcbiAgICBtb2R1bGUgQXN0ID0gVmVyc2lvbnMuT0NhbWxfNHh4XG4gICAgb3BlbiBBc3QuQXN0XG4gICAgbW9kdWxlIExvY2F0aW9uICAgPSBPY2FtbF9jb21tb24uTG9jYXRpb25cbiAgICBtb2R1bGUgTG9uZ2lkZW50ID0gT2NhbWxfY29tbW9uLkxvbmdpZGVudFxuICAgfV1cblxuICAgT25jZSB5b3UgaGF2ZSBnZW5lcmF0ZWQgdGhlIGlubGluZWQgZGVyaXZlZCB0cmF2ZXJzYWwgY2xhc3NlcyBieSBydW5uaW5nXG4gICBbeyBkdW5lIGJ1aWxkIEBsaW50IH1dIHlvdSBjYW4gcmVwbGFjZSB0aGUgYWJvdmUgbWVudGlvbmVkIG1vZHVsZSBkZWZpbml0aW9ucyBieSBhXG4gICBbb3BlbiBJbXBvcnRdIGFuZCB1cGRhdGUgW0ltcG9ydF0gc28gdGhhdCB0aGUgW0pzXSBtb2R1bGUgcG9pbnRzIHRvXG4gICBbVmVyc2lvbnMuT0NhbWxfNHh4XS5cbiopXG5cbigqIFNvdXJjZSBjb2RlIGxvY2F0aW9ucyAocmFuZ2VzIG9mIHBvc2l0aW9ucyksIHVzZWQgaW4gcGFyc2V0cmVlLiAqKVxuXG50eXBlIHBvc2l0aW9uID0gTGV4aW5nLnBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxuYW5kIGxvY2F0aW9uID0gTG9jYXRpb24udCA9IHtcbiAgbG9jX3N0YXJ0IDogcG9zaXRpb247XG4gIGxvY19lbmQgOiBwb3NpdGlvbjtcbiAgbG9jX2dob3N0IDogYm9vbDtcbn1cblxuYW5kIGxvY2F0aW9uX3N0YWNrID0gbG9jYXRpb24gbGlzdFxuXG4oKiBOb3RlIG9uIHRoZSB1c2Ugb2YgTGV4aW5nLnBvc2l0aW9uIGluIHRoaXMgbW9kdWxlLlxuICAgSWYgW3Bvc19mbmFtZSA9IFwiXCJdLCB0aGVuIHVzZSBbIWlucHV0X25hbWVdIGluc3RlYWQuXG4gICBJZiBbcG9zX2xudW0gPSAtMV0sIHRoZW4gW3Bvc19ib2wgPSAwXS4gVXNlIFtwb3NfY251bV0gYW5kXG4gICByZS1wYXJzZSB0aGUgZmlsZSB0byBnZXQgdGhlIGxpbmUgYW5kIGNoYXJhY3RlciBudW1iZXJzLlxuICAgRWxzZSBhbGwgZmllbGRzIGFyZSBjb3JyZWN0LlxuKilcbmFuZCAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiBsb2NhdGlvbiB9XG5cbigqIExvbmcgaWRlbnRpZmllcnMsIHVzZWQgaW4gcGFyc2V0cmVlLiAqKVxuYW5kIGxvbmdpZGVudCA9IExvbmdpZGVudC50ID1cbiAgfCBMaWRlbnQgb2Ygc3RyaW5nXG4gIHwgTGRvdCBvZiBsb25naWRlbnQgKiBzdHJpbmdcbiAgfCBMYXBwbHkgb2YgbG9uZ2lkZW50ICogbG9uZ2lkZW50XG5cbmFuZCBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvY1xuXG4oKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG5hbmQgcmVjX2ZsYWcgPSBBc3R0eXBlcy5yZWNfZmxhZyA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG5hbmQgZGlyZWN0aW9uX2ZsYWcgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IFVwdG8gfCBEb3dudG9cblxuKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG5hbmQgcHJpdmF0ZV9mbGFnID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gUHJpdmF0ZSB8IFB1YmxpY1xuYW5kIG11dGFibGVfZmxhZyA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyA9IEltbXV0YWJsZSB8IE11dGFibGVcbmFuZCB2aXJ0dWFsX2ZsYWcgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBWaXJ0dWFsIHwgQ29uY3JldGVcbmFuZCBvdmVycmlkZV9mbGFnID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IE92ZXJyaWRlIHwgRnJlc2hcbmFuZCBjbG9zZWRfZmxhZyA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnID0gQ2xvc2VkIHwgT3BlblxuYW5kIGxhYmVsID0gc3RyaW5nXG5cbmFuZCBhcmdfbGFiZWwgPSBBc3R0eXBlcy5hcmdfbGFiZWwgPVxuICB8IE5vbGFiZWxcbiAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuYW5kIHZhcmlhbmNlID0gQXN0dHlwZXMudmFyaWFuY2UgPSBDb3ZhcmlhbnQgfCBDb250cmF2YXJpYW50IHwgTm9WYXJpYW5jZVxuYW5kIGluamVjdGl2aXR5ID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBJbmplY3RpdmUgfCBOb0luamVjdGl2aXR5XG5cbigqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbmFuZCBjb25zdGFudCA9IFBhcnNldHJlZS5jb25zdGFudCA9XG4gIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci4gU3VmZml4ZXMgZXhjZXB0XG4gICAgICAgICAgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyICopXG4gIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogbG9jYXRpb24gKiBzdHJpbmcgb3B0aW9uXG4gICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLiAqKVxuICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci4gU3VmZml4ZXMgYXJlIHJlamVjdGVkXG4gICAgICAgICAgYnkgdGhlIHR5cGVjaGVja2VyLiAqKVxuXG4oKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuYW5kIGF0dHJpYnV0ZSA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgPSB7XG4gIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gIGF0dHJfbG9jIDogbG9jYXRpb247XG59XG4oKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbQGlkIEFSR11dIGFuZCBbW0BAaWQgQVJHXV0uXG5cbiAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuIFRoZSBjb21waWxlciBpZ25vcmVzXG4gICAgdW5rbm93biBhdHRyaWJ1dGVzLiAqKVxuXG5hbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbigqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLiAqKVxuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBwYXlsb2FkID0gUGFyc2V0cmVlLnBheWxvYWQgPVxuICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFs/IFBdIG9yIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4oKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgY29yZV90eXBlID0gUGFyc2V0cmVlLmNvcmVfdHlwZSA9IHtcbiAgcHR5cF9kZXNjIDogY29yZV90eXBlX2Rlc2M7XG4gIHB0eXBfbG9jIDogbG9jYXRpb247XG4gIHB0eXBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHB0eXBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29yZV90eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkXX0sXG4gICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsXX0uICopXG4gIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGVcbiAgICAgICAgICBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLiAqKVxuICB8IFB0eXBfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCB0Y29uc3RyXSB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfSBbQ2xvc2VkXX0sXG4gICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0uICopXG4gIHwgUHR5cF9jbGFzcyBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyN0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUICN0Y29uc3RyXSB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtbIGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtbPiBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LFxuICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS4gKilcbiAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9XG4gICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nIHRvIGEgY29uc3RyYWludCBvbiBhXG4gICAgICAgICAgICBsZXQtYmluZGluZzpcblxuICAgICAgICAgIHtbXG4gICAgICAgICAgICBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5cbiAgICAgICAgICBdfVxuICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1cbiAgICAgICAgICAgIFtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fSBbUGV4cF9wb2x5XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX0gW3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9IFtQdHlwX29iamVjdF19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfSBbcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uICopXG4gIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG5hbmQgcGFja2FnZV90eXBlID0gbG9uZ2lkZW50X2xvYyAqIChsb25naWRlbnRfbG9jICogY29yZV90eXBlKSBsaXN0XG4oKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcblxuICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXSByZXByZXNlbnRzXG4gICAgICBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS4gKilcblxuYW5kIHJvd19maWVsZCA9IFBhcnNldHJlZS5yb3dfZmllbGQgPSB7XG4gIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gIHByZl9sb2MgOiBsb2NhdGlvbjtcbiAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgcm93X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVF0gd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhIGNvbnN0YW50IChlbXB0eSlcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yLlxuICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yIChzZWVcbiAgICAgICAgICAgIDQuMiBpbiB0aGUgbWFudWFsKSAqKVxuICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG5hbmQgb2JqZWN0X2ZpZWxkID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9IHtcbiAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgcG9mX2xvYyA6IGxvY2F0aW9uO1xuICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCBvYmplY3RfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG5hbmQgcGF0dGVybiA9IFBhcnNldHJlZS5wYXR0ZXJuID0ge1xuICBwcGF0X2Rlc2MgOiBwYXR0ZXJuX2Rlc2M7XG4gIHBwYXRfbG9jIDogbG9jYXRpb247XG4gIHBwYXRfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBwYXRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgcGF0dGVybl9kZXNjID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9XG4gIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyIGJ1dCByZWplY3RlZCBieVxuICAgICAgICAgIHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdICopXG4gIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgbG9uZ2lkZW50X2xvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtDXSB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldICopXG4gIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF0gKilcbiAgfCBQcGF0X3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfSBbQ2xvc2VkXX1cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICB8IFBwYXRfdHlwZSBvZiBsb25naWRlbnRfbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gIHwgUHBhdF9vcGVuIG9mIGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuYW5kIGV4cHJlc3Npb24gPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiA9IHtcbiAgcGV4cF9kZXNjIDogZXhwcmVzc2lvbl9kZXNjO1xuICBwZXhwX2xvYyA6IGxvY2F0aW9uO1xuICBwZXhwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwZXhwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGV4cHJlc3Npb25fZGVzYyA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICB8IFBleHBfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XSAqKVxuICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLFxuICAgICAgICAgIFsxbl0gKilcbiAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlcyAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXVxuXG4gICAgICAgICAgTm90ZXM6XG5cbiAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHkge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufSBbUGV4cF9mdW5dfS5cbiAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmcge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVxuICAgICAgICAgICAgW1BleHBfZnVuXX0uICopXG4gIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV0gcmVwcmVzZW50c1xuICAgICAgICAgIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgIFtsaV0gY2FuIGJlIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19IChub24gbGFiZWxlZFxuICAgICAgICAgIGFyZ3VtZW50KSwge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfSBbTGFiZWxsZWRdfSAobGFiZWxsZWRcbiAgICAgICAgICBhcmd1bWVudHMpIG9yIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsXX0gKG9wdGlvbmFsXG4gICAgICAgICAgYXJndW1lbnQpLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdICopXG4gIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtDXSB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXSAqKVxuICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSAqKVxuICB8IFBleHBfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIGxvbmdpZGVudF9sb2MgICgqKiBbRS5sXSAqKVxuICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uXG4gICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b30gW1VwdG9dfVxuICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b30gW0Rvd250b119ICopXG4gIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbKEUgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uICopXG4gIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gIHwgUGV4cF9uZXcgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX0gW0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICB2YWx1ZXMpLiAqKVxuICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbmFuZCBjYXNlID0gUGFyc2V0cmVlLmNhc2UgPSB7XG4gIHBjX2xocyA6IHBhdHRlcm47XG4gIHBjX2d1YXJkIDogZXhwcmVzc2lvbiBvcHRpb247XG4gIHBjX3JocyA6IGV4cHJlc3Npb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbmFuZCBsZXRvcCA9IFBhcnNldHJlZS5sZXRvcCA9IHtcbiAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gIGJvZHkgOiBleHByZXNzaW9uO1xufVxuXG5hbmQgYmluZGluZ19vcCA9IFBhcnNldHJlZS5iaW5kaW5nX29wID0ge1xuICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gIHBib3BfbG9jIDogbG9jYXRpb247XG59XG5cbigqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9IHtcbiAgcHZhbF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHZhbF90eXBlIDogY29yZV90eXBlO1xuICBwdmFsX3ByaW0gOiBzdHJpbmcgbGlzdDtcbiAgcHZhbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcHZhbF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuXG4gICAgLSBbdmFsIHg6IFRdLCB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX0gW3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVxuICAgICAgW3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dICopXG5cbigqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcHR5cGVfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB0eXBlX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICBwdHlwZV9jc3RycyA6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBsb2NhdGlvbikgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gIHB0eXBlX2tpbmQgOiB0eXBlX2tpbmQ7XG4gIHB0eXBlX3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICBwdHlwZV9tYW5pZmVzdCA6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICBwdHlwZV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcHR5cGVfbG9jIDogbG9jYXRpb247XG59XG4oKiogSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLCBmb3IgdmFyaW91c1xuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH0gW3B0eXBlX2tpbmRdfSBhbmRcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fSBbcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG5cbiAgICAtIFt0eXBlIHRdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1cbiAgICAgIFtQdHlwZV92YXJpYW50XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9IFtQdHlwZV92YXJpYW50XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVxuICAgICAgW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9IFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IC4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufSBbUHR5cGVfb3Blbl19LFxuICAgICAgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLiAqKVxuXG5hbmQgdHlwZV9raW5kID0gUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIHwgUHR5cGVfYWJzdHJhY3RcbiAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgfCBQdHlwZV9vcGVuXG5cbmFuZCBsYWJlbF9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9IHtcbiAgcGxkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbGRfbXV0YWJsZSA6IG11dGFibGVfZmxhZztcbiAgcGxkX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHBsZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGxkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbQGlkMV0gW0BpZDJdXSAqKVxufVxuKCoqIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV0gd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX0gW3BsZF9tdXRhYmxlXX1cbiAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9IFtJbW11dGFibGVdfSxcbiAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV0gd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1cbiAgICAgIFtwbGRfbXV0YWJsZV19IGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19LlxuXG4gICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSB7XG4gIHBjZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNkX3ZhcnMgOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIHBjZF9hcmdzIDogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICBwY2RfcmVzIDogY29yZV90eXBlIG9wdGlvbjtcbiAgcGNkX2xvYyA6IGxvY2F0aW9uO1xuICBwY2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn0gcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3JcbiAgICAgICAgICBhcmd1bWVudHMgb2Y6XG5cbiAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW4gW3JlcyA9IE5vbmVdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgIC0gW0M6IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgIC0gW0Mgb2Ygey4uLn1dIHdoZW4gW3JlcyA9IE5vbmVdLCBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgICAgICAgIC0gW0M6IHsuLi59IC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uICopXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9IHtcbiAgcHR5ZXh0X3BhdGggOiBsb25naWRlbnRfbG9jO1xuICBwdHlleHRfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICBwdHlleHRfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZztcbiAgcHR5ZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleHRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgIChbdHlwZSB0ICs9IC4uLl0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IHtcbiAgcGV4dF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gIHBleHRfbG9jIDogbG9jYXRpb247XG4gIHBleHRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCB0eXBlX2V4Y2VwdGlvbiA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9IHtcbiAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBwdHlleG5fbG9jIDogbG9jYXRpb247XG4gIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb25cbiAgICAgICAgICBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuXG4gICAgICAgICAge3VsXG4gICAgICAgICAgIHstIFtDIG9mIFQxICogLi4uICogVG5dXG4gICAgICAgICAgICAgIHdoZW46XG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtOb25lXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgfSAqKVxuICB8IFBleHRfcmViaW5kIG9mIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4oKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG5hbmQgY2xhc3NfdHlwZSA9IFBhcnNldHJlZS5jbGFzc190eXBlID0ge1xuICBwY3R5X2Rlc2MgOiBjbGFzc190eXBlX2Rlc2M7XG4gIHBjdHlfbG9jIDogbG9jYXRpb247XG4gIHBjdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIHwgUGN0eV9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogLSBbY11cbiAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAtIFs/bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0uICopXG4gIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuYW5kIGNsYXNzX3NpZ25hdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPSB7XG4gIHBjc2lnX3NlbGYgOiBjb3JlX3R5cGU7XG4gIHBjc2lnX2ZpZWxkcyA6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfSBbcGNzaWdfc2VsZl19IGlzXG4gICAgICB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX0gW1B0eXBfYW55XX0gKilcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9IHtcbiAgcGN0Zl9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICBwY3RmX2xvYyA6IGxvY2F0aW9uO1xuICBwY3RmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcbiAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCAnYSBjbGFzc19pbmZvcyA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyA9IHtcbiAgcGNpX3ZpcnQgOiB2aXJ0dWFsX2ZsYWc7XG4gIHBjaV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwY2lfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjaV9leHByIDogJ2E7XG4gIHBjaV9sb2MgOiBsb2NhdGlvbjtcbiAgcGNpX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi4gKilcblxuYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG5hbmQgY2xhc3NfZXhwciA9IFBhcnNldHJlZS5jbGFzc19leHByID0ge1xuICBwY2xfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYztcbiAgcGNsX2xvYyA6IGxvY2F0aW9uO1xuICBwY2xfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZXhwcl9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIHwgUGNsX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdLiAqKVxuICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV0gcmVwcmVzZW50c1xuICAgICAgICAgIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3JcbiAgICAgICAgICBzdGFydCB3aXRoIFs/XSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID0ge1xuICBwY3N0cl9zZWxmIDogcGF0dGVybjtcbiAgcGNzdHJfZmllbGRzIDogY2xhc3NfZmllbGQgbGlzdDtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfSBbcGNzdHJfc2VsZl19IGlzXG4gICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9IFtQcGF0X2FueV19ICopXG5cbmFuZCBjbGFzc19maWVsZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCA9IHtcbiAgcGNmX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjO1xuICBwY2ZfbG9jIDogbG9jYXRpb247XG4gIHBjZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtpbmhlcml0IENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVxuICAgICAgICAgICAgW0ZyZXNoXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVxuICAgICAgICAgICAgW0ZyZXNoXX0gYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1cbiAgICAgICAgICAgIFtPdmVycmlkZV19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtTb21lIHhdICopXG4gIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbdmFsIHggPSBFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVxuICAgICAgICAgICAgW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9IFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzXG4gICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1cbiAgICAgICAgICAgIFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfSBhbmQgW2tpbmRdIGlzXG4gICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWwoVCldfSAqKVxuICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogLSBbbWV0aG9kIHggPSBFXSAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9XG4gICAgICAgICAgICBbUGV4cF9wb2x5XX0pXG4gICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF0gKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9XG4gICAgICAgICAgICBbUHR5cF9wb2x5XX0pICopXG4gIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCBjbGFzc19maWVsZF9raW5kID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG5hbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbigqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV90eXBlID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlID0ge1xuICBwbXR5X2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjO1xuICBwbXR5X2xvYyA6IGxvY2F0aW9uO1xuICBwbXR5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV90eXBlX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIHwgUG10eV9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQbXR5X2FsaWFzIG9mIGxvbmdpZGVudF9sb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuYW5kIGZ1bmN0b3JfcGFyYW1ldGVyID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgfCBVbml0ICAoKiogWygpXSAqKVxuICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuYW5kIHNpZ25hdHVyZV9pdGVtID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0ge1xuICBwc2lnX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICBwc2lnX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSAqKVxuICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gKilcbiAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCBtb2R1bGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID0ge1xuICBwbWRfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWRfdHlwZSA6IG1vZHVsZV90eXBlO1xuICBwbWRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbmFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPSB7XG4gIHBtc19uYW1lIDogc3RyaW5nIGxvYztcbiAgcG1zX21hbmlmZXN0IDogbG9uZ2lkZW50X2xvYztcbiAgcG1zX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXNfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwbXRkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXRkX3R5cGUgOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gIHBtdGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtdGRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbUyA9IE1UXSxcbiAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHdoZW5cbiAgICAgIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX0gW3BtdGRfdHlwZV19IGlzIFtOb25lXS4gKilcblxuYW5kICdhIG9wZW5faW5mb3MgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyA9IHtcbiAgcG9wZW5fZXhwciA6ICdhO1xuICBwb3Blbl9vdmVycmlkZSA6IG92ZXJyaWRlX2ZsYWc7XG4gIHBvcGVuX2xvYyA6IGxvY2F0aW9uO1xuICBwb3Blbl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IChzaWxlbmNlcyB0aGUgXCJ1c2VkXG4gICAgICBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH0gW0ZyZXNoXX0gKilcblxuYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBsb25naWRlbnRfbG9jIG9wZW5faW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4gTS5OXVxuICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG5hbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4gTS5OXVxuICAgIC0gW29wZW4gTShOKS5PXVxuICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbmFuZCAnYSBpbmNsdWRlX2luZm9zID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPSB7XG4gIHBpbmNsX21vZCA6ICdhO1xuICBwaW5jbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGluY2xfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG5hbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuYW5kIHdpdGhfY29uc3RyYWludCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICB8IFB3aXRoX3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2ggdGhlIG5hbWUgb2YgdGhlXG4gICAgICAgICAgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgfCBQd2l0aF9tb2R1bGUgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2MgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlIG9mIGxvbmdpZGVudF9sb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICB8IFB3aXRoX21vZHN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfZXhwciA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciA9IHtcbiAgcG1vZF9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYztcbiAgcG1vZF9sb2MgOiBsb2NhdGlvbjtcbiAgcG1vZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfZXhwcl9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICB8IFBtb2RfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtYXSAqKVxuICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuYW5kIHN0cnVjdHVyZV9pdGVtID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0ge1xuICBwc3RyX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICBwc3RyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCB2YWx1ZV9iaW5kaW5nID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPSB7XG4gIHB2Yl9wYXQgOiBwYXR0ZXJuO1xuICBwdmJfZXhwciA6IGV4cHJlc3Npb247XG4gIHB2Yl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgcHZiX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgbW9kdWxlX2JpbmRpbmcgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPSB7XG4gIHBtYl9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtYl9leHByIDogbW9kdWxlX2V4cHI7XG4gIHBtYl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgcG1iX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuKCoqIHsxIFRvcGxldmVsfSAqKVxuKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbmFuZCB0b3BsZXZlbF9waHJhc2UgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbmFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlID0ge1xuICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gIHBkaXJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID0ge1xuICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gIHBkaXJhX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gIHwgUGRpcl9pZGVudCBvZiBsb25naWRlbnRcbiAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5hbmQgY2FzZXMgPSBjYXNlIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVxuXG5jbGFzcyB2aXJ0dWFsIG1hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gY2hhclxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHBvc2l0aW9uID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGlkZW50IGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIE9wdGlvbmFsIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ID0gZnVuIHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGIgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUFR5cCBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHR5cF9vYmplY3QgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiByb3dfZmllbGQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IFBwYXRfYW55XG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHBhdF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBQcGF0X2ludGVydmFsIChhLCBiKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBQcGF0X3VucGFjayBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXhwX2lkZW50IGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGQgaW5cbiAgICAgICAgICAgIFBleHBfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF90cnkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUGV4cF9maWVsZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VxdWVuY2UgKGEsIGIpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4cF9jb2VyY2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXhwX25ldyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfb3ZlcnJpZGUgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hc3NlcnQgYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9uZXd0eXBlIChhLCBiKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX29wZW4gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgaW5cbiAgICAgICAgeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3JlY29yZCBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBQdHlwZV9vcGVuXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3R1cGxlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY3R5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYSBjbGFzc19pbmZvcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGQgaW5cbiAgICAgICAgICAgIFBjbF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBQY2ZfaW5oZXJpdCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfaW5pdGlhbGl6ZXIgYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIENma192aXJ0dWFsIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUG10eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBtdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIE5hbWVkIChhLCBiKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdmFsdWUgYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2luY2x1ZGUgYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgaW5cbiAgICAgICAgeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhIG9wZW5faW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2RzdWJzdCAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBtb2RfdW5wYWNrIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9XG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R0eXBlIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBQZGlyX2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIGl0ZXIgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxpc3QgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2Egb3B0aW9uIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdW5pdFxuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIHNlbGYjc3RyaW5nIHBvc19mbmFtZTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2xudW07XG4gICAgICAgIHNlbGYjaW50IHBvc19ib2w7XG4gICAgICAgIHNlbGYjaW50IHBvc19jbnVtXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX2VuZDtcbiAgICAgICAgc2VsZiNib29sIGxvY19naG9zdFxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsb2MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIF9hIHR4dDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBsb2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGJcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiB1bml0ID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gdW5pdCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPiBzZWxmI2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZTtcbiAgICAgICAgc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBhdHRyX2xvY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgc2VsZiNwYXlsb2FkIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBTaWcgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY1xuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgYlxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHJmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2Jvb2wgYjtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29uc3RhbnQgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RhbnQgYlxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPiBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBjO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGRcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGM7XG4gICAgICAgICAgICBzZWxmI2RpcmVjdGlvbl9mbGFnIGQ7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBiXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVjbGFyYXRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKClcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwY19saHM7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBjX3Joc1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgc2VsZiNiaW5kaW5nX29wIGxldF87XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcztcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIGJvZHlcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wO1xuICAgICAgICBzZWxmI3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwYm9wX2xvY1xuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW07XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHZhbF9sb2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGMpXG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgIHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKClcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZTtcbiAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHBsZF90eXBlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lO1xuICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycztcbiAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWU7XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3R5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBjXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPiBzZWxmI2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgYztcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgZClcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgYztcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgZClcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGNsYXNzX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHBjaV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lO1xuICAgICAgICBfYSBwY2lfZXhwcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2lfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2xfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBjO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGRcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGNcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYlxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjY2xhc3NfZmllbGRfa2luZCBjKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjY2xhc3NfZmllbGRfa2luZCBjKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYlxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKClcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHNpZ19sb2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1kX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZTtcbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtc19sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2Egb3Blbl9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBfYSBwb3Blbl9leHByO1xuICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBfYSBwaW5jbF9tb2Q7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGluY2xfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc3RyX2xvY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGJcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcHZiX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHB2Yl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHZiX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtYl9sb2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGRpcl9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbGlzdCAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcHRpb24gLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19jbnVtIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IGFjY1xuICAgICAgICB8IExhYmVsbGVkIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPiBzZWxmI2NoYXIgYSBhY2NcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBTaWcgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gYWNjXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gYWNjXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYSBhY2NcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhIGFjY1xuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IGFjY1xuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gYWNjXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IGFjY1xuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPiBzZWxmI2NsYXNzX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBhY2NcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhIGFjY1xuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhIGFjY1xuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZF9tYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ2FjYyAtPiBib29sICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gY2hhciAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiBpbnQgKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbGlzdCAtPiAnYWNjIC0+ICdhIGxpc3QgKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBvcHRpb24gLT4gJ2FjYyAtPiAnYSBvcHRpb24gKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ2FjYyAtPiBzdHJpbmcgKiAnYWNjXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAnYWNjIC0+IHBvc2l0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lLCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBwb3NfbG51bSwgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBwb3NfYm9sLCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2NudW0sIGFjYyA9IHNlbGYjaW50IHBvc19jbnVtIGFjYyBpblxuICAgICAgICAoeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+IGxvY2F0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IGFjYyAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0LCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGxvY19lbmQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCwgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgKHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiBsb2NhdGlvbl9zdGFjayAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsb2MgLT4gJ2FjYyAtPiAnYSBsb2MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCB0eHQsIGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGxvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgICh7IHR4dDsgbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiBsb25naWRlbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGlkZW50IGEsIGFjYylcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChMZG90IChhLCBiKSwgYWNjKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGIgYWNjIGluXG4gICAgICAgICAgICAoTGFwcGx5IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gbG9uZ2lkZW50X2xvYyAqICdhY2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdhY2MgLT4gcmVjX2ZsYWcgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAnYWNjIC0+IGRpcmVjdGlvbl9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiBwcml2YXRlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAnYWNjIC0+IG11dGFibGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gdmlydHVhbF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+IG92ZXJyaWRlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiBjbG9zZWRfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+IGxhYmVsICogJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gYXJnX2xhYmVsICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoTm9sYWJlbCwgYWNjKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExhYmVsbGVkIGEsIGFjYylcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChPcHRpb25hbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAnYWNjIC0+IHZhcmlhbmNlICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ2FjYyAtPiBpbmplY3Rpdml0eSAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+IGNvbnN0YW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfaW50ZWdlciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjaGFyIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2NoYXIgYSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9mbG9hdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiBhdHRyaWJ1dGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQsIGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhdHRyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiBleHRlbnNpb24gKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAnYWNjIC0+IGF0dHJpYnV0ZXMgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gcGF5bG9hZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFN0ciBhLCBhY2MpXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU2lnIGEsIGFjYylcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBUeXAgYSwgYWNjKVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUFBhdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ2FjYyAtPiBjb3JlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYywgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gY29yZV90eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIGFjYylcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3ZhciBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfY2xhc3MgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BvbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcGFja2FnZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+IHBhY2thZ2VfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+IHJvd19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcmZfZGVzYywgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+IHJvd19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUnRhZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChSaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gb2JqZWN0X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjLCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG9mX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzY1xuICAgICAgICA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE90YWcgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoT2luaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gcGF0dGVybiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjLCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiBwYXR0ZXJuX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoUHBhdF9hbnksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhciBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2ludGVydmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RydWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXJpYW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9vciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9sYXp5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdW5wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gZXhwcmVzc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ2FjYyAtPiBleHByZXNzaW9uX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Nhc2VzIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW5jdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1biAoYSwgYiwgYywgZCksIGFjYylcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9tYXRjaCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90cnkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RydWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF92YXJpYW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZmllbGQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXF1ZW5jZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfd2hpbGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGFjYyBpblxuICAgICAgICAgICAgbGV0IGUsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlbmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbmV3IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0aW5zdHZhciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfb3ZlcnJpZGUgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hc3NlcnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sYXp5IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3BvbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vYmplY3QgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbmV3dHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3BhY2sgYSwgYWNjKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29wZW4gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsZXRvcCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0b3AgYSwgYWNjKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IChQZXhwX3VucmVhY2hhYmxlLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiBjYXNlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjX2xocywgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgYWNjIGluXG4gICAgICAgIGxldCBwY19yaHMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgICh7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+IGxldG9wICogJ2FjYyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gYWNjIC0+XG4gICAgICAgIGxldCBsZXRfLCBhY2MgPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBhY2MgaW5cbiAgICAgICAgbGV0IGFuZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBhY2MgaW5cbiAgICAgICAgbGV0IGJvZHksIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGFjYyBpblxuICAgICAgICAoeyBsZXRfOyBhbmRzOyBib2R5IH0sIGFjYylcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAnYWNjIC0+IGJpbmRpbmdfb3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBib3Bfb3AsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9leHAsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICAoeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0sIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gYWNjIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbG9jYXRpb24gYyBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCwgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCwgYWNjID1cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdhY2MgLT4gdHlwZV9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBhY2MpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV92YXJpYW50IGEsIGFjYylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfcmVjb3JkIGEsIGFjYylcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBhY2MpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGxkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGFjYyBpblxuICAgICAgICBsZXQgcGxkX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcGxkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzLCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfcmVjb3JkIGEsIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gdHlwZV9leHRlbnNpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCwgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ2FjYyAtPiB0eXBlX2V4Y2VwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yLCBhY2MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvciBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9kZWNsIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X3JlYmluZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ2FjYyAtPiBjbGFzc190eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYywgYWNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gY2xhc3Nfc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYsIGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgYWNjXG4gICAgICAgIGluXG4gICAgICAgICh7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYywgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2luaGVyaXQgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgZCksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl92YWwgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgZCksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX2NvbnN0cmFpbnQgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGFjYyBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9leHByLCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICggeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+IGNsYXNzX2V4cHIgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2Z1biAoYSwgYiwgYywgZCksIGFjYylcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNsX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdhY2MgLT4gY2xhc3Nfc3RydWN0dXJlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYsIGFjYyA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgICh7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5oZXJpdCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgYSwgYWNjKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX2NvbnN0cmFpbnQgYSwgYWNjKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaXRpYWxpemVyIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZFxuICAgICAgICA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX3ZpcnR1YWwgYSwgYWNjKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfY29uY3JldGUgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUG10eV93aXRoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV90eXBlb2YgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2FsaWFzIGEsIGFjYylcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdhY2MgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBhY2MpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChOYW1lZCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiBzaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MsIGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdmFsdWUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2RzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfcmVjbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19vcGVuIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfZXh0ZW5zaW9uIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1kX25hbWUsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbWRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtc19uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgYWNjIGluXG4gICAgICAgICh7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByLCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBvcGVuX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvblxuICAgICAgICA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBvcGVuX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kLCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAnYWNjIC0+IHdpdGhfY29uc3RyYWludCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2RzdWJzdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHIgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzY1xuICAgICAgICA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfdW5wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gc3RydWN0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjLCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdmFsdWUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ByaW1pdGl2ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl90eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcmVjbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHR5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9vcGVuIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXh0ZW5zaW9uIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gdmFsdWVfYmluZGluZyAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmJfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiBtb2R1bGVfYmluZGluZyAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1iX25hbWUsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbWJfZXhwciwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbWJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAnYWNjIC0+IHRvcGxldmVsX3BocmFzZSAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGVmIGEsIGFjYylcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RpciBhLCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZGlyX2FyZywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgYWNjIGluXG4gICAgICAgIGxldCBwZGlyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjLCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfc3RyaW5nIGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Jvb2wgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2Jvb2wgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ2FjYyAtPiBjYXNlcyAqICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4XSBtYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAnY3R4IC0+IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhclxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvblxuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogJ2N0eCAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgTGlkZW50IGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiAnY3R4IC0+IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiAnY3R4IC0+IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID1cbiAgICAgIGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogJ2N0eCAtPiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6ICdjdHggLT4gb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID1cbiAgICAgIGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIE9wdGlvbmFsIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6ICdjdHggLT4gdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBjdHggYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiAnY3R4IC0+IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUFR5cCBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiAnY3R4IC0+IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogJ2N0eCAtPiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9vYmplY3QgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6ICdjdHggLT4gcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIGN0eCBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogJ2N0eCAtPiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiAnY3R4IC0+IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IFBwYXRfYW55XG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2ludGVydmFsIChhLCBiKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3VucGFjayBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uID1cbiAgICAgIGZ1biBjdHggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eCBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2lkZW50IGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGQgaW5cbiAgICAgICAgICAgIFBleHBfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF90cnkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9maWVsZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VxdWVuY2UgKGEsIGIpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9jb2VyY2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX25ldyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfb3ZlcnJpZGUgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9hc3NlcnQgYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9uZXd0eXBlIChhLCBiKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX29wZW4gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gY3R4IGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3JlY29yZCBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBQdHlwZV9vcGVuXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3R1cGxlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4gY3R4IHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBjdHggcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gPVxuICAgICAgZnVuIGN0eCB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogJ2N0eCAtPiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogJ2N0eCAtPiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogJ2N0eCAtPiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYSBjbGFzc19pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4XG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6ICdjdHggLT4gY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIGN0eCB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIGN0eCBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgIFBjbF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6ICdjdHggLT4gY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6ICdjdHggLT4gY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICBQY2ZfaW5oZXJpdCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfaW5pdGlhbGl6ZXIgYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIENma192aXJ0dWFsIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgY3R4IHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE5hbWVkIChhLCBiKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgY3R4IHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdmFsdWUgYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2luY2x1ZGUgYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtZF9sb2MgaW5cbiAgICAgICAgeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcGVuX2luZm9zIC0+ICdhIG9wZW5faW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIGN0eCBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6ICdjdHggLT4gb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiAnY3R4IC0+IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2RzdWJzdCAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIGN0eCB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgY3R4IHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfdW5wYWNrIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9XG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R0eXBlIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1iX2xvYyBpblxuICAgICAgICB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgY3R4IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIGN0eCBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogJ2N0eCAtPiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydyZXNdIGxpZnQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBvcHRpb24gLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgcG9zX2NudW0gaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgIChcInBvc19sbnVtXCIsIHBvc19sbnVtKTtcbiAgICAgICAgICAgIChcInBvc19ib2xcIiwgcG9zX2JvbCk7XG4gICAgICAgICAgICAoXCJwb3NfY251bVwiLCBwb3NfY251bSk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGxvY19naG9zdCBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBsb2Nfc3RhcnQpO1xuICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBsb2NfZW5kKTtcbiAgICAgICAgICAgIChcImxvY19naG9zdFwiLCBsb2NfZ2hvc3QpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgbG9jIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInR4dFwiLCB0eHQpOyAoXCJsb2NcIiwgbG9jKSBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMZG90XCIgWyBhOyBiIF1cbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYXBwbHlcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdyZXMgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25yZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJOb25yZWN1cnNpdmVcIiBbXVxuICAgICAgICB8IFJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIlJlY3Vyc2l2ZVwiIFtdXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVwdG8gLT4gc2VsZiNjb25zdHIgXCJVcHRvXCIgW11cbiAgICAgICAgfCBEb3dudG8gLT4gc2VsZiNjb25zdHIgXCJEb3dudG9cIiBbXVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFByaXZhdGUgLT4gc2VsZiNjb25zdHIgXCJQcml2YXRlXCIgW11cbiAgICAgICAgfCBQdWJsaWMgLT4gc2VsZiNjb25zdHIgXCJQdWJsaWNcIiBbXVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEltbXV0YWJsZSAtPiBzZWxmI2NvbnN0ciBcIkltbXV0YWJsZVwiIFtdXG4gICAgICAgIHwgTXV0YWJsZSAtPiBzZWxmI2NvbnN0ciBcIk11dGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFZpcnR1YWwgLT4gc2VsZiNjb25zdHIgXCJWaXJ0dWFsXCIgW11cbiAgICAgICAgfCBDb25jcmV0ZSAtPiBzZWxmI2NvbnN0ciBcIkNvbmNyZXRlXCIgW11cblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE92ZXJyaWRlIC0+IHNlbGYjY29uc3RyIFwiT3ZlcnJpZGVcIiBbXVxuICAgICAgICB8IEZyZXNoIC0+IHNlbGYjY29uc3RyIFwiRnJlc2hcIiBbXVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT4gc2VsZiNjb25zdHIgXCJDbG9zZWRcIiBbXVxuICAgICAgICB8IE9wZW4gLT4gc2VsZiNjb25zdHIgXCJPcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gc2VsZiNjb25zdHIgXCJOb2xhYmVsXCIgW11cbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFiZWxsZWRcIiBbIGEgXVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPcHRpb25hbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENvdmFyaWFudCAtPiBzZWxmI2NvbnN0ciBcIkNvdmFyaWFudFwiIFtdXG4gICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiBzZWxmI2NvbnN0ciBcIkNvbnRyYXZhcmlhbnRcIiBbXVxuICAgICAgICB8IE5vVmFyaWFuY2UgLT4gc2VsZiNjb25zdHIgXCJOb1ZhcmlhbmNlXCIgW11cblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW5qZWN0aXZlIC0+IHNlbGYjY29uc3RyIFwiSW5qZWN0aXZlXCIgW11cbiAgICAgICAgfCBOb0luamVjdGl2aXR5IC0+IHNlbGYjY29uc3RyIFwiTm9JbmplY3Rpdml0eVwiIFtdXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9pbnRlZ2VyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9jaGFyXCIgWyBhIF1cbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9zdHJpbmdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfZmxvYXRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBhdHRyX25hbWUpO1xuICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAoXCJhdHRyX2xvY1wiLCBhdHRyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGIgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBTdHJcIiBbIGEgXVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBTaWdcIiBbIGEgXVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBUeXBcIiBbIGEgXVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBQYXRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIHB0eXBfZGVzYyk7XG4gICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlwX2xvY19zdGFja1wiLCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgcHR5cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IHNlbGYjY29uc3RyIFwiUHR5cF9hbnlcIiBbXVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hcnJvd1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX29iamVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jbGFzc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYWxpYXNcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3ZhcmlhbnRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BhY2thZ2VcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBiXG4gICAgICAgIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInByZl9kZXNjXCIsIHByZl9kZXNjKTtcbiAgICAgICAgICAgIChcInByZl9sb2NcIiwgcHJmX2xvYyk7XG4gICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUnRhZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJpbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIHBvZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBvZl9sb2NcIiwgcG9mX2xvYyk7XG4gICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBwb2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPdGFnXCIgWyBhOyBiIF1cbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT2luaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcGF0X2xvY1wiLCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBwcGF0X2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQcGF0X2FueVwiIFtdXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYWxpYXNcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdGFudFwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2ludGVydmFsXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3JlY29yZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FycmF5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X29yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBwZXhwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdGFudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mdW5jdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGQgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbWF0Y2hcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF90cnlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3JlY29yZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9maWVsZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRmaWVsZFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FycmF5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfaWZ0aGVuZWxzZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXF1ZW5jZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF93aGlsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gZSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZvclwiIFsgYTsgYjsgYzsgZDsgZSBdXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvZXJjZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZW5kXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbmV3XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGluc3R2YXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vdmVycmlkZVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRtb2R1bGVcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0ZXhjZXB0aW9uXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXNzZXJ0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX29iamVjdFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbmV3dHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcGFja1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX29wZW5cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRvcFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IHNlbGYjY29uc3RyIFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjX2xoc1wiLCBwY19saHMpOyAoXCJwY19ndWFyZFwiLCBwY19ndWFyZCk7IChcInBjX3Joc1wiLCBwY19yaHMpIF1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcImxldF9cIiwgbGV0Xyk7IChcImFuZHNcIiwgYW5kcyk7IChcImJvZHlcIiwgYm9keSkgXVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwYm9wX29wXCIsIHBib3Bfb3ApO1xuICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgcGJvcF9wYXQpO1xuICAgICAgICAgICAgKFwicGJvcF9leHBcIiwgcGJvcF9leHApO1xuICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgcGJvcF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3R5cGVcIiwgcHZhbF90eXBlKTtcbiAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBwdmFsX3ByaW0pO1xuICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdmFsX2xvY1wiLCBwdmFsX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgIChcInB0eXBlX3BhcmFtc1wiLCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgcHR5cGVfY3N0cnMpO1xuICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgIChcInB0eXBlX3ByaXZhdGVcIiwgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBwdHlwZV9tYW5pZmVzdCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHR5cGVfbG9jXCIsIHB0eXBlX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IHNlbGYjY29uc3RyIFwiUHR5cGVfYWJzdHJhY3RcIiBbXVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3ZhcmlhbnRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfcmVjb3JkXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IHNlbGYjY29uc3RyIFwiUHR5cGVfb3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgcGxkX25hbWUpO1xuICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgKFwicGxkX3R5cGVcIiwgcGxkX3R5cGUpO1xuICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBwbGRfbG9jKTtcbiAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIHBjZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBjZF92YXJzXCIsIHBjZF92YXJzKTtcbiAgICAgICAgICAgIChcInBjZF9hcmdzXCIsIHBjZF9hcmdzKTtcbiAgICAgICAgICAgIChcInBjZF9yZXNcIiwgcGNkX3Jlcyk7XG4gICAgICAgICAgICAoXCJwY2RfbG9jXCIsIHBjZF9sb2MpO1xuICAgICAgICAgICAgKFwicGNkX2F0dHJpYnV0ZXNcIiwgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjc3RyX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjc3RyX3JlY29yZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3BhcmFtc1wiLCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgcHR5ZXh0X2NvbnN0cnVjdG9ycyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAoXCJwdHlleHRfbG9jXCIsIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgcHR5ZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXh0X25hbWVcIiwgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBwZXh0X2tpbmQpO1xuICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgcGV4dF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4dF9hdHRyaWJ1dGVzXCIsIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4bl9jb25zdHJ1Y3RvclwiLCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBwdHlleG5fbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9kZWNsXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfcmViaW5kXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdHlfZGVzY1wiLCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgcGN0eV9sb2MpO1xuICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfc2lnbmF0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9hcnJvd1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzaWdfc2VsZlwiLCBwY3NpZ19zZWxmKTsgKFwicGNzaWdfZmllbGRzXCIsIHBjc2lnX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0Zl9kZXNjXCIsIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBwY3RmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9pbmhlcml0XCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYzsgZCBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYzsgZCBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfbWV0aG9kXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgKFwicGNpX3BhcmFtc1wiLCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIHBjaV9uYW1lKTtcbiAgICAgICAgICAgIChcInBjaV9leHByXCIsIHBjaV9leHByKTtcbiAgICAgICAgICAgIChcInBjaV9sb2NcIiwgcGNpX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBwY2lfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIHBjbF9kZXNjKTtcbiAgICAgICAgICAgIChcInBjbF9sb2NcIiwgcGNsX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBwY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGQgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3N0cl9zZWxmXCIsIHBjc3RyX3NlbGYpOyAoXCJwY3N0cl9maWVsZHNcIiwgcGNzdHJfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2ZfbG9jXCIsIHBjZl9sb2MpO1xuICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgcGNmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2luaGVyaXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfbWV0aG9kXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2luaXRpYWxpemVyXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJDZmtfdmlydHVhbFwiIFsgYSBdXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJDZmtfY29uY3JldGVcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIHBtdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAoXCJwbXR5X2F0dHJpYnV0ZXNcIiwgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfc2lnbmF0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3dpdGhcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfdHlwZW9mXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2FsaWFzXCIgWyBhIF1cblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBzZWxmI2NvbnN0ciBcIlVuaXRcIiBbXVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk5hbWVkXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHNpZ19kZXNjXCIsIHBzaWdfZGVzYyk7IChcInBzaWdfbG9jXCIsIHBzaWdfbG9jKSBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdmFsdWVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGV4dFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19yZWNtb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZXN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc1wiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbWRfdHlwZVwiLCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBwbWRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbWRfbG9jXCIsIHBtZF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgcG1zX25hbWUpO1xuICAgICAgICAgICAgKFwicG1zX21hbmlmZXN0XCIsIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBwbXNfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXNfbG9jXCIsIHBtc19sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG10ZF9uYW1lXCIsIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgcG10ZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG10ZF9sb2NcIiwgcG10ZF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIHBvcGVuX2V4cHIpO1xuICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgKFwicG9wZW5fbG9jXCIsIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIHBvcGVuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgKFwicGluY2xfbG9jXCIsIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIHBpbmNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHN1YnN0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtb2RfZGVzY1wiLCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgcG1vZF9sb2MpO1xuICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc3RyX2Rlc2NcIiwgcHN0cl9kZXNjKTsgKFwicHN0cl9sb2NcIiwgcHN0cl9sb2MpIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9ldmFsXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdmFsdWVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcHJpbWl0aXZlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGV4dFwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9yZWNtb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHR5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc1wiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgcHZiX3BhdCk7XG4gICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBwdmJfZXhwcik7XG4gICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBwdmJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdmJfbG9jXCIsIHB2Yl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBwbWJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBwbWJfZXhwcik7XG4gICAgICAgICAgICAoXCJwbWJfYXR0cmlidXRlc1wiLCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbWJfbG9jXCIsIHBtYl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kZWZcIiBbIGEgXVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RpclwiIFsgYSBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgcGRpcl9uYW1lKTtcbiAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIHBkaXJfYXJnKTtcbiAgICAgICAgICAgIChcInBkaXJfbG9jXCIsIHBkaXJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicGRpcmFfZGVzY1wiLCBwZGlyYV9kZXNjKTsgKFwicGRpcmFfbG9jXCIsIHBkaXJhX2xvYykgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9zdHJpbmdcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2Jvb2xcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAnY3R4IC0+IGJvb2wgLT4gYm9vbCAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXIgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50ICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbGlzdCAtPiAnYSBsaXN0ICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogJ2N0eCAtPiBzdHJpbmcgLT4gc3RyaW5nICogJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9zX2ZuYW1lID0gU3RkbGliLmZzdCBwb3NfZm5hbWU7XG4gICAgICAgICAgICBwb3NfbG51bSA9IFN0ZGxpYi5mc3QgcG9zX2xudW07XG4gICAgICAgICAgICBwb3NfYm9sID0gU3RkbGliLmZzdCBwb3NfYm9sO1xuICAgICAgICAgICAgcG9zX2NudW0gPSBTdGRsaWIuZnN0IHBvc19jbnVtO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBTdGRsaWIuc25kIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAgIChcInBvc19sbnVtXCIsIFN0ZGxpYi5zbmQgcG9zX2xudW0pO1xuICAgICAgICAgICAgICAoXCJwb3NfYm9sXCIsIFN0ZGxpYi5zbmQgcG9zX2JvbCk7XG4gICAgICAgICAgICAgIChcInBvc19jbnVtXCIsIFN0ZGxpYi5zbmQgcG9zX2NudW0pO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBsb2Nfc3RhcnQgPSBTdGRsaWIuZnN0IGxvY19zdGFydDtcbiAgICAgICAgICAgIGxvY19lbmQgPSBTdGRsaWIuZnN0IGxvY19lbmQ7XG4gICAgICAgICAgICBsb2NfZ2hvc3QgPSBTdGRsaWIuZnN0IGxvY19naG9zdDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgU3RkbGliLnNuZCBsb2Nfc3RhcnQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZW5kXCIsIFN0ZGxpYi5zbmQgbG9jX2VuZCk7XG4gICAgICAgICAgICAgIChcImxvY19naG9zdFwiLCBTdGRsaWIuc25kIGxvY19naG9zdCk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsb2MgLT4gJ2EgbG9jICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgICggeyB0eHQgPSBTdGRsaWIuZnN0IHR4dDsgbG9jID0gU3RkbGliLmZzdCBsb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHggWyAoXCJ0eHRcIiwgU3RkbGliLnNuZCB0eHQpOyAoXCJsb2NcIiwgU3RkbGliLnNuZCBsb2MpIF1cbiAgICAgICAgKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoTGlkZW50IChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJMaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIExkb3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGRvdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgKCBMYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgKiAncmVzID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiAnY3R4IC0+IHJlY19mbGFnIC0+IHJlY19mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiAnY3R4IC0+IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogJ2N0eCAtPiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6ICdjdHggLT4gb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsICogJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoTm9sYWJlbCwgc2VsZiNjb25zdHIgY3R4IFwiTm9sYWJlbFwiIFtdKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggTGFiZWxsZWQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhYmVsbGVkXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBPcHRpb25hbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT3B0aW9uYWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6ICdjdHggLT4gdmFyaWFuY2UgLT4gdmFyaWFuY2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9pbnRlZ2VyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9pbnRlZ2VyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBjdHggYSBpblxuICAgICAgICAgICAgKCBQY29uc3RfY2hhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2NoYXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjb25zdF9zdHJpbmcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3Rfc3RyaW5nXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2Zsb2F0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9mbG9hdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgYXR0cl9uYW1lID0gU3RkbGliLmZzdCBhdHRyX25hbWU7XG4gICAgICAgICAgICBhdHRyX3BheWxvYWQgPSBTdGRsaWIuZnN0IGF0dHJfcGF5bG9hZDtcbiAgICAgICAgICAgIGF0dHJfbG9jID0gU3RkbGliLmZzdCBhdHRyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgU3RkbGliLnNuZCBhdHRyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgU3RkbGliLnNuZCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgICAoXCJhdHRyX2xvY1wiLCBTdGRsaWIuc25kIGF0dHJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiAnY3R4IC0+IHBheWxvYWQgLT4gcGF5bG9hZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKFBTdHIgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBTdHJcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKFBTaWcgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBTaWdcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKFBUeXAgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBUeXBcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUFBhdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQUGF0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiAnY3R4IC0+IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSBTdGRsaWIuZnN0IHB0eXBfZGVzYztcbiAgICAgICAgICAgIHB0eXBfbG9jID0gU3RkbGliLmZzdCBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwdHlwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBTdGRsaWIuc25kIHB0eXBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogJ2N0eCAtPiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hbnlcIiBbXSlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFB0eXBfYXJyb3cgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2Fycm93XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX29iamVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NsYXNzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFB0eXBfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyaWFudFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9wb2x5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcG9seVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9wYWNrYWdlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BhY2thZ2VcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6ICdjdHggLT4gcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcmZfZGVzYyA9IFN0ZGxpYi5mc3QgcHJmX2Rlc2M7XG4gICAgICAgICAgICBwcmZfbG9jID0gU3RkbGliLmZzdCBwcmZfbG9jO1xuICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInByZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfbG9jXCIsIFN0ZGxpYi5zbmQgcHJmX2xvYyk7XG4gICAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFJ0YWcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSdGFnXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBSaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUmluaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIGN0eCBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvZl9kZXNjID0gU3RkbGliLmZzdCBwb2ZfZGVzYztcbiAgICAgICAgICAgIHBvZl9sb2MgPSBTdGRsaWIuZnN0IHBvZl9sb2M7XG4gICAgICAgICAgICBwb2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgU3RkbGliLnNuZCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBvZl9sb2NcIiwgU3RkbGliLnNuZCBwb2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIE90YWcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT3RhZ1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBPaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT2luaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogJ2N0eCAtPiBwYXR0ZXJuIC0+IHBhdHRlcm4gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gU3RkbGliLmZzdCBwcGF0X2Rlc2M7XG4gICAgICAgICAgICBwcGF0X2xvYyA9IFN0ZGxpYi5mc3QgcHBhdF9sb2M7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgU3RkbGliLnNuZCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwcGF0X2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiAnY3R4IC0+IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoUHBhdF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYW55XCIgW10pXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0YW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0YW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfaW50ZXJ2YWwgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9pbnRlcnZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9vclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eCBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gU3RkbGliLmZzdCBwZXhwX2Rlc2M7XG4gICAgICAgICAgICBwZXhwX2xvYyA9IFN0ZGxpYi5mc3QgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgU3RkbGliLnNuZCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBTdGRsaWIuc25kIHBleHBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwZXhwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0YW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0YW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuY3Rpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZnVuY3Rpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGQgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZnVuXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdIClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGV4cF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX21hdGNoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbWF0Y2hcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3RyeSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3RyeVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9maWVsZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRmaWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0ZmllbGRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2lmdGhlbmVsc2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lmdGhlbmVsc2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VxdWVuY2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXF1ZW5jZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3doaWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfd2hpbGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgKCBQZXhwX2ZvclxuICAgICAgICAgICAgICAgICggU3RkbGliLmZzdCBhLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBiLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBjLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBkLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBlICksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZm9yXCJcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGE7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGI7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGM7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGQ7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGU7XG4gICAgICAgICAgICAgICAgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9jb2VyY2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvZXJjZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZW5kIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VuZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGluc3R2YXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGV4cF9vdmVycmlkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vdmVycmlkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0bW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0ZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0ZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hc3NlcnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXNzZXJ0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9wb2x5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcG9seVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX29iamVjdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX25ld3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXd0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfcGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0b3AgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0b3BcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgICAgICAgIChQZXhwX3VucmVhY2hhYmxlLCBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3VucmVhY2hhYmxlXCIgW10pXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNfbGhzID0gU3RkbGliLmZzdCBwY19saHM7XG4gICAgICAgICAgICBwY19ndWFyZCA9IFN0ZGxpYi5mc3QgcGNfZ3VhcmQ7XG4gICAgICAgICAgICBwY19yaHMgPSBTdGRsaWIuZnN0IHBjX3JocztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY19saHNcIiwgU3RkbGliLnNuZCBwY19saHMpO1xuICAgICAgICAgICAgICAoXCJwY19ndWFyZFwiLCBTdGRsaWIuc25kIHBjX2d1YXJkKTtcbiAgICAgICAgICAgICAgKFwicGNfcmhzXCIsIFN0ZGxpYi5zbmQgcGNfcmhzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBsZXRfID0gU3RkbGliLmZzdCBsZXRfO1xuICAgICAgICAgICAgYW5kcyA9IFN0ZGxpYi5mc3QgYW5kcztcbiAgICAgICAgICAgIGJvZHkgPSBTdGRsaWIuZnN0IGJvZHk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibGV0X1wiLCBTdGRsaWIuc25kIGxldF8pO1xuICAgICAgICAgICAgICAoXCJhbmRzXCIsIFN0ZGxpYi5zbmQgYW5kcyk7XG4gICAgICAgICAgICAgIChcImJvZHlcIiwgU3RkbGliLnNuZCBib2R5KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBib3Bfb3AgPSBTdGRsaWIuZnN0IHBib3Bfb3A7XG4gICAgICAgICAgICBwYm9wX3BhdCA9IFN0ZGxpYi5mc3QgcGJvcF9wYXQ7XG4gICAgICAgICAgICBwYm9wX2V4cCA9IFN0ZGxpYi5mc3QgcGJvcF9leHA7XG4gICAgICAgICAgICBwYm9wX2xvYyA9IFN0ZGxpYi5mc3QgcGJvcF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBTdGRsaWIuc25kIHBib3Bfb3ApO1xuICAgICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBTdGRsaWIuc25kIHBib3BfcGF0KTtcbiAgICAgICAgICAgICAgKFwicGJvcF9leHBcIiwgU3RkbGliLnNuZCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAgIChcInBib3BfbG9jXCIsIFN0ZGxpYi5zbmQgcGJvcF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmFsX25hbWUgPSBTdGRsaWIuZnN0IHB2YWxfbmFtZTtcbiAgICAgICAgICAgIHB2YWxfdHlwZSA9IFN0ZGxpYi5mc3QgcHZhbF90eXBlO1xuICAgICAgICAgICAgcHZhbF9wcmltID0gU3RkbGliLmZzdCBwdmFsX3ByaW07XG4gICAgICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB2YWxfbG9jID0gU3RkbGliLmZzdCBwdmFsX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgU3RkbGliLnNuZCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdmFsX3R5cGVcIiwgU3RkbGliLnNuZCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgU3RkbGliLnNuZCBwdmFsX3ByaW0pO1xuICAgICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmFsX2xvY1wiLCBTdGRsaWIuc25kIHB2YWxfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gY3R4IGMgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lID0gU3RkbGliLmZzdCBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycyA9IFN0ZGxpYi5mc3QgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kID0gU3RkbGliLmZzdCBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2MgPSBTdGRsaWIuZnN0IHB0eXBlX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIFN0ZGxpYi5zbmQgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX3BhcmFtc1wiLCBTdGRsaWIuc25kIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfY3N0cnMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIFN0ZGxpYi5zbmQgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAgIChcInB0eXBlX3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwdHlwZV9tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5cGVfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfYWJzdHJhY3RcIiBbXSlcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfdmFyaWFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3Blbiwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfb3BlblwiIFtdKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbGRfbmFtZSA9IFN0ZGxpYi5mc3QgcGxkX25hbWU7XG4gICAgICAgICAgICBwbGRfbXV0YWJsZSA9IFN0ZGxpYi5mc3QgcGxkX211dGFibGU7XG4gICAgICAgICAgICBwbGRfdHlwZSA9IFN0ZGxpYi5mc3QgcGxkX3R5cGU7XG4gICAgICAgICAgICBwbGRfbG9jID0gU3RkbGliLmZzdCBwbGRfbG9jO1xuICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGxkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBTdGRsaWIuc25kIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgICAgKFwicGxkX3R5cGVcIiwgU3RkbGliLnNuZCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBsZF9sb2NcIiwgU3RkbGliLnNuZCBwbGRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2RfbmFtZSA9IFN0ZGxpYi5mc3QgcGNkX25hbWU7XG4gICAgICAgICAgICBwY2RfdmFycyA9IFN0ZGxpYi5mc3QgcGNkX3ZhcnM7XG4gICAgICAgICAgICBwY2RfYXJncyA9IFN0ZGxpYi5mc3QgcGNkX2FyZ3M7XG4gICAgICAgICAgICBwY2RfcmVzID0gU3RkbGliLmZzdCBwY2RfcmVzO1xuICAgICAgICAgICAgcGNkX2xvYyA9IFN0ZGxpYi5mc3QgcGNkX2xvYztcbiAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBTdGRsaWIuc25kIHBjZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgU3RkbGliLnNuZCBwY2RfdmFycyk7XG4gICAgICAgICAgICAgIChcInBjZF9hcmdzXCIsIFN0ZGxpYi5zbmQgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgICAoXCJwY2RfcmVzXCIsIFN0ZGxpYi5zbmQgcGNkX3Jlcyk7XG4gICAgICAgICAgICAgIChcInBjZF9sb2NcIiwgU3RkbGliLnNuZCBwY2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3N0cl90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3N0cl9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoID0gU3RkbGliLmZzdCBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gU3RkbGliLmZzdCBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBTdGRsaWIuc25kIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhcmFtc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2NvbnN0cnVjdG9ycyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBjdHggcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHRfbmFtZSA9IFN0ZGxpYi5mc3QgcGV4dF9uYW1lO1xuICAgICAgICAgICAgcGV4dF9raW5kID0gU3RkbGliLmZzdCBwZXh0X2tpbmQ7XG4gICAgICAgICAgICBwZXh0X2xvYyA9IFN0ZGxpYi5mc3QgcGV4dF9sb2M7XG4gICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZXh0X25hbWVcIiwgU3RkbGliLnNuZCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgU3RkbGliLnNuZCBwZXh0X2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBTdGRsaWIuc25kIHBleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gU3RkbGliLmZzdCBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgICAgICBwdHlleG5fbG9jID0gU3RkbGliLmZzdCBwdHlleG5fbG9jO1xuICAgICAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4bl9jb25zdHJ1Y3RvclwiLCBTdGRsaWIuc25kIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgU3RkbGliLnNuZCBwdHlleG5fbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXh0X2RlY2wgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X2RlY2xcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXh0X3JlYmluZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9yZWJpbmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogJ2N0eCAtPiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSBTdGRsaWIuZnN0IHBjdHlfZGVzYztcbiAgICAgICAgICAgIHBjdHlfbG9jID0gU3RkbGliLmZzdCBwY3R5X2xvYztcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdHlfZGVzY1wiLCBTdGRsaWIuc25kIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0eV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogJ2N0eCAtPiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGN0eV9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjdHlfYXJyb3cgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2Fycm93XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGN0eV9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogJ2N0eCAtPiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNzaWdfc2VsZiA9IFN0ZGxpYi5mc3QgcGNzaWdfc2VsZjtcbiAgICAgICAgICAgIHBjc2lnX2ZpZWxkcyA9IFN0ZGxpYi5mc3QgcGNzaWdfZmllbGRzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjc2lnX3NlbGZcIiwgU3RkbGliLnNuZCBwY3NpZ19zZWxmKTtcbiAgICAgICAgICAgICAgKFwicGNzaWdfZmllbGRzXCIsIFN0ZGxpYi5zbmQgcGNzaWdfZmllbGRzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0Zl9kZXNjO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBTdGRsaWIuZnN0IHBjdGZfbG9jO1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0Zl9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgU3RkbGliLnNuZCBwY3RmX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2luaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl92YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfdmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfbWV0aG9kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfY29uc3RyYWludCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4XG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2lfdmlydCA9IFN0ZGxpYi5mc3QgcGNpX3ZpcnQ7XG4gICAgICAgICAgICBwY2lfcGFyYW1zID0gU3RkbGliLmZzdCBwY2lfcGFyYW1zO1xuICAgICAgICAgICAgcGNpX25hbWUgPSBTdGRsaWIuZnN0IHBjaV9uYW1lO1xuICAgICAgICAgICAgcGNpX2V4cHIgPSBTdGRsaWIuZnN0IHBjaV9leHByO1xuICAgICAgICAgICAgcGNpX2xvYyA9IFN0ZGxpYi5mc3QgcGNpX2xvYztcbiAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2lfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBTdGRsaWIuc25kIHBjaV92aXJ0KTtcbiAgICAgICAgICAgICAgKFwicGNpX3BhcmFtc1wiLCBTdGRsaWIuc25kIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBTdGRsaWIuc25kIHBjaV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgU3RkbGliLnNuZCBwY2lfZXhwcik7XG4gICAgICAgICAgICAgIChcInBjaV9sb2NcIiwgU3RkbGliLnNuZCBwY2lfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2lfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIGN0eCBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjbF9kZXNjID0gU3RkbGliLmZzdCBwY2xfZGVzYztcbiAgICAgICAgICAgIHBjbF9sb2MgPSBTdGRsaWIuZnN0IHBjbF9sb2M7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjbF9sb2NcIiwgU3RkbGliLnNuZCBwY2xfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9zdHJ1Y3R1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgKCBQY2xfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfZnVuXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdIClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2xfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjbF9sZXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6ICdjdHggLT4gY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNzdHJfc2VsZiA9IFN0ZGxpYi5mc3QgcGNzdHJfc2VsZjtcbiAgICAgICAgICAgIHBjc3RyX2ZpZWxkcyA9IFN0ZGxpYi5mc3QgcGNzdHJfZmllbGRzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjc3RyX3NlbGZcIiwgU3RkbGliLnNuZCBwY3N0cl9zZWxmKTtcbiAgICAgICAgICAgICAgKFwicGNzdHJfZmllbGRzXCIsIFN0ZGxpYi5zbmQgcGNzdHJfZmllbGRzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcGNmX2Rlc2M7XG4gICAgICAgICAgICBwY2ZfbG9jID0gU3RkbGliLmZzdCBwY2ZfbG9jO1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcGNmX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2ZfaW5oZXJpdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbmhlcml0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfdmFsXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2ZfbWV0aG9kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2ZfY29uc3RyYWludCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2luaXRpYWxpemVyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBDZmtfdmlydHVhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX3ZpcnR1YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggQ2ZrX2NvbmNyZXRlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma19jb25jcmV0ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgY3R4IHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSBTdGRsaWIuZnN0IHBtdHlfZGVzYztcbiAgICAgICAgICAgIHBtdHlfbG9jID0gU3RkbGliLmZzdCBwbXR5X2xvYztcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBTdGRsaWIuc25kIHBtdHlfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIFN0ZGxpYi5zbmQgcG10eV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X2Z1bmN0b3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9mdW5jdG9yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfd2l0aCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3dpdGhcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X3R5cGVvZiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV90eXBlb2ZcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9hbGlhcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9hbGlhc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIHNlbGYjY29uc3RyIGN0eCBcIlVuaXRcIiBbXSlcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIE5hbWVkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk5hbWVkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgY3R4IHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc2lnX2xvYyBpblxuICAgICAgICAoIHsgcHNpZ19kZXNjID0gU3RkbGliLmZzdCBwc2lnX2Rlc2M7IHBzaWdfbG9jID0gU3RkbGliLmZzdCBwc2lnX2xvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwc2lnX2Rlc2NcIiwgU3RkbGliLnNuZCBwc2lnX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwc2lnX2xvY1wiLCBTdGRsaWIuc25kIHBzaWdfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdmFsdWUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXh0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGV4dFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2RzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R0eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfb3BlbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19vcGVuXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfaW5jbHVkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19pbmNsdWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfY2xhc3MgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfY2xhc3NfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc190eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtZF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWRfbmFtZSA9IFN0ZGxpYi5mc3QgcG1kX25hbWU7XG4gICAgICAgICAgICBwbWRfdHlwZSA9IFN0ZGxpYi5mc3QgcG1kX3R5cGU7XG4gICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWRfbG9jID0gU3RkbGliLmZzdCBwbWRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1kX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWRfdHlwZVwiLCBTdGRsaWIuc25kIHBtZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtZF9sb2NcIiwgU3RkbGliLnNuZCBwbWRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1zX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtc19uYW1lID0gU3RkbGliLmZzdCBwbXNfbmFtZTtcbiAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcG1zX21hbmlmZXN0O1xuICAgICAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1zX2xvYyA9IFN0ZGxpYi5mc3QgcG1zX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBTdGRsaWIuc25kIHBtc19uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1zX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXNfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtc19sb2NcIiwgU3RkbGliLnNuZCBwbXNfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10ZF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXRkX25hbWUgPSBTdGRsaWIuZnN0IHBtdGRfbmFtZTtcbiAgICAgICAgICAgIHBtdGRfdHlwZSA9IFN0ZGxpYi5mc3QgcG10ZF90eXBlO1xuICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXRkX2xvYyA9IFN0ZGxpYi5mc3QgcG10ZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10ZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG10ZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG10ZF9sb2NcIiwgU3RkbGliLnNuZCBwbXRkX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIGN0eCBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvcGVuX2V4cHIgPSBTdGRsaWIuZnN0IHBvcGVuX2V4cHI7XG4gICAgICAgICAgICBwb3Blbl9vdmVycmlkZSA9IFN0ZGxpYi5mc3QgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgICBwb3Blbl9sb2MgPSBTdGRsaWIuZnN0IHBvcGVuX2xvYztcbiAgICAgICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBTdGRsaWIuc25kIHBvcGVuX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBTdGRsaWIuc25kIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fbG9jXCIsIFN0ZGxpYi5zbmQgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvcGVuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGluY2xfbW9kID0gU3RkbGliLmZzdCBwaW5jbF9tb2Q7XG4gICAgICAgICAgICBwaW5jbF9sb2MgPSBTdGRsaWIuZnN0IHBpbmNsX2xvYztcbiAgICAgICAgICAgIHBpbmNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIFN0ZGxpYi5zbmQgcGluY2xfbW9kKTtcbiAgICAgICAgICAgICAgKFwicGluY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGluY2xfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBpbmNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiAnY3R4IC0+IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdHlwZXN1YnN0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgY3R4IHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSBTdGRsaWIuZnN0IHBtb2RfZGVzYztcbiAgICAgICAgICAgIHBtb2RfbG9jID0gU3RkbGliLmZzdCBwbW9kX2xvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtb2RfZGVzY1wiLCBTdGRsaWIuc25kIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIFN0ZGxpYi5zbmQgcG1vZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzY1xuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2Z1bmN0b3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9mdW5jdG9yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICAoIHsgcHN0cl9kZXNjID0gU3RkbGliLmZzdCBwc3RyX2Rlc2M7IHBzdHJfbG9jID0gU3RkbGliLmZzdCBwc3RyX2xvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwc3RyX2Rlc2NcIiwgU3RkbGliLnNuZCBwc3RyX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwc3RyX2xvY1wiLCBTdGRsaWIuc25kIHBzdHJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V2YWwgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9ldmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl92YWx1ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9wcmltaXRpdmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcHJpbWl0aXZlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZXh0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGV4dFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfb3BlbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9vcGVuXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfY2xhc3MgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfY2xhc3NfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc190eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfaW5jbHVkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9pbmNsdWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZiX3BhdCA9IFN0ZGxpYi5mc3QgcHZiX3BhdDtcbiAgICAgICAgICAgIHB2Yl9leHByID0gU3RkbGliLmZzdCBwdmJfZXhwcjtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBTdGRsaWIuZnN0IHB2Yl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBTdGRsaWIuc25kIHB2Yl9wYXQpO1xuICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBTdGRsaWIuc25kIHB2Yl9leHByKTtcbiAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdmJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgU3RkbGliLnNuZCBwdmJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1iX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtYl9uYW1lID0gU3RkbGliLmZzdCBwbWJfbmFtZTtcbiAgICAgICAgICAgIHBtYl9leHByID0gU3RkbGliLmZzdCBwbWJfZXhwcjtcbiAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtYl9sb2MgPSBTdGRsaWIuZnN0IHBtYl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgU3RkbGliLnNuZCBwbWJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtYl9leHByXCIsIFN0ZGxpYi5zbmQgcG1iX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwbWJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBTdGRsaWIuc25kIHBtYl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RlZiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kZWZcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGlyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RpclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgY3R4IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcl9uYW1lID0gU3RkbGliLmZzdCBwZGlyX25hbWU7XG4gICAgICAgICAgICBwZGlyX2FyZyA9IFN0ZGxpYi5mc3QgcGRpcl9hcmc7XG4gICAgICAgICAgICBwZGlyX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIFN0ZGxpYi5zbmQgcGRpcl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgU3RkbGliLnNuZCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAgIChcInBkaXJfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIGN0eCBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyYV9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyYV9kZXNjID0gU3RkbGliLmZzdCBwZGlyYV9kZXNjO1xuICAgICAgICAgICAgcGRpcmFfbG9jID0gU3RkbGliLmZzdCBwZGlyYV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGRpcmFfZGVzY1wiLCBTdGRsaWIuc25kIHBkaXJhX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwZGlyYV9sb2NcIiwgU3RkbGliLnNuZCBwZGlyYV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX3N0cmluZyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9zdHJpbmdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBkaXJfaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2Jvb2wgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfYm9vbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNhc2VzIDogJ2N0eCAtPiBjYXNlcyAtPiBjYXNlcyAqICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5bQEBAZW5kXVxuW0BAQGVuZF1cbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50XG5cbmxldCB0b19leHRlbnNpb24gKGVycm9yIDogQXN0bGliLkxvY2F0aW9uLkVycm9yLnQpID1cbiAgbGV0IG9wZW4gQXN0bGliLkxvY2F0aW9uLkVycm9yIGluXG4gIGxldCBvcGVuIEFzdF9oZWxwZXIgaW5cbiAgaWYgbm90IChpc193ZWxsX2Zvcm1lZCBlcnJvcikgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwidG9fZXh0ZW5zaW9uOiBleHBlY3RlZCBraW5kIFJlcG9ydF9lcnJvclwiKTtcbiAgbGV0IHN1Yl9tc2dzID0gc3ViX21zZ3MgZXJyb3IgaW5cbiAgbGV0IG1haW5fbXNnID0gbWFpbl9tc2cgZXJyb3IgaW5cbiAgbGV0IGVycl9leHRlbnNpb25fbmFtZSBsb2MgPSB7IExvY2F0aW9uLmxvYzsgdHh0ID0gXCJvY2FtbC5lcnJvclwiIH0gaW5cbiAgbGV0IG1rX3N0cmluZ19jb25zdGFudCB4ID0gU3RyLmV2YWwgKEV4cC5jb25zdGFudCAoQ29uc3Quc3RyaW5nIHgpKSBpblxuICBsZXQgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgKHN1Yl9tc2cgOiBzdHJpbmcgTG9jYXRpb24ubG9jKSA9XG4gICAgU3RyLmV4dGVuc2lvblxuICAgICAgKGVycl9leHRlbnNpb25fbmFtZSBzdWJfbXNnLmxvYywgUFN0ciBbIG1rX3N0cmluZ19jb25zdGFudCBzdWJfbXNnLnR4dCBdKVxuICBpblxuICAoIGVycl9leHRlbnNpb25fbmFtZSBtYWluX21zZy5sb2MsXG4gICAgUGFyc2V0cmVlLlBTdHJcbiAgICAgIChta19zdHJpbmdfY29uc3RhbnQgbWFpbl9tc2cudHh0IDo6IExpc3QubWFwIGV4dGVuc2lvbl9vZl9zdWJfbXNnIHN1Yl9tc2dzKVxuICApXG5cbmxldCByZWdpc3Rlcl9lcnJvcl9vZl9leG4gPSBBc3RsaWIuTG9jYXRpb24ucmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuXG5cbmxldCBtZXNzYWdlIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLnR4dDsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIHR4dFxuXG5sZXQgc2V0X21lc3NhZ2UgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbXNnXG5cbmxldCBtYWtlIH5sb2MgdHh0IH5zdWIgPVxuICBsZXQgc3ViID0gTGlzdC5tYXAgKGZ1biAobG9jLCB0eHQpIC0+IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgdHh0IH0pIHN1YiBpblxuICBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFrZSB+c3ViIHsgbG9jOyB0eHQgfVxuXG5sZXQgdXBkYXRlX2xvYyA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9sb2NcblxubGV0IGdldF9sb2NhdGlvbiBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICBsb2NcblxubGV0IG9mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5vZl9leG5cbmxldCByYWlzZSBlcnJvciA9IHJhaXNlIChBc3RsaWIuTG9jYXRpb24uRXJyb3IgZXJyb3IpXG4iLCJtb2R1bGUgRG9fbm90X3VzZV9kaXJlY3RseSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBBZmxfaW5zdHJ1bWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BZmxfaW5zdHJ1bWVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxpYXNfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxpYXNfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEFsbG9jYXRlZF9jb25zdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGxvY2F0ZWRfY29uc3QgaW5zdGVhZFwiXVxubW9kdWxlIEFubm90ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBcmNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFyY2ggaW5zdGVhZFwiXVxubW9kdWxlIEFyZ19oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BcmdfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc21nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBBc21saWJyYXJpYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBBc21saW5rID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEFzbXBhY2thZ2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2l0ZXJhdG9yID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X21hcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0dHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEF0dHJfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXR0cl9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIEJhY2tlbmRfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQmFja2VuZF92YXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQmFja2VuZF92YXIgaW5zdGVhZFwiXVxubW9kdWxlIEJpbnV0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQmludXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJyYW5jaF9yZWxheGF0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJyYW5jaF9yZWxheGF0aW9uX2ludGYgaW5zdGVhZFwiXVxubW9kdWxlIEJ0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnR5cGUgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX2V4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJ1aWxkX2V4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9wYXRoX3ByZWZpeF9tYXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsZF9wYXRoX3ByZWZpeF9tYXAgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWx0aW5fYXR0cmlidXRlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWx0aW5fYXR0cmlidXRlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaW5rIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVwYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXNlY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnl0ZXNlY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBDU0UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFIGluc3RlYWRcIl1cbm1vZHVsZSBDU0VnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDYW1saW50ZXJuYWxNZW5oaXJMaWIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DYW1saW50ZXJuYWxNZW5oaXJMaWIgaW5zdGVhZFwiXVxubW9kdWxlIENjb21wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2NvbXAgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xmbGFncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNsZmxhZ3MgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb25fYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2VsZW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9lbGVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfaWQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfbWlkZGxlX2VuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX21pZGRsZV9lbmQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb2Zmc2V0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29mZnNldHMgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBDbWlfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ21pX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2hlbHBlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2hlbHBlcnMgaW5zdGVhZFwiXVxubW9kdWxlIENtbV9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW5fc3RhdGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuX3N0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBDbW9fZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXQyYW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXQyYW5ub3QgaW5zdGVhZFwiXVxubW9kdWxlIENtdF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXRfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbXhfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXhzX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29sb3JpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29sb3JpbmcgaW5zdGVhZFwiXVxubW9kdWxlIENvbWJhbGxvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21iYWxsb2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxhdGlvbl91bml0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGF0aW9uX3VuaXQgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGlsZV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBtaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcG1pc2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbmZpZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbmZpZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnX2Jvb3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbmZpZ19tYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb25zaXN0YmwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25zaXN0YmwgaW5zdGVhZFwiXVxubW9kdWxlIENvbnZlcnRfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db252ZXJ0X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEN0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ3R5cGUgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFmbG93ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRhdGFmbG93IGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhcmVwciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRhdGFyZXByIGluc3RlYWRcIl1cbm1vZHVsZSBEZWFkY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EZWFkY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVidWdpbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVidWdpbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBEZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBEaWZmaW5nX3dpdGhfa2V5cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmdfd2l0aF9rZXlzIGluc3RlYWRcIl1cbm1vZHVsZSBEbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EbGwgaW5zdGVhZFwiXVxubW9kdWxlIERvY3N0cmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb2NzdHJpbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBEb21haW5zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvbWFpbnN0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBFZmZlY3RfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRWZmZWN0X2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXQgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdGF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVtaXRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnYgaW5zdGVhZFwiXVxubW9kdWxlIEVudmF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudmF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ydHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FcnJvcnRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2lkIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm9fZm9yX3BhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm9fZm9yX3BhY2sgaW5zdGVhZFwiXVxubW9kdWxlIEV4cHVuZ2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEV4dHJhY3RfcHJvamVjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXh0cmFjdF9wcm9qZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2l0ZXJhdG9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2l0ZXJhdG9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV90b19jbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdG9fY2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV91dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3V0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBGcmVzaGVuaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZyZXNoZW5pbmcgaW5zdGVhZFwiXVxubW9kdWxlIEdlbnByaW50dmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5HZW5wcmludHZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSWRfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50aWZpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50aWZpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW1wb3J0X2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbXBvcnRfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kX2Vycm9ycHJpbnRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2RfZXJyb3JwcmludGVyIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNvbnN0YW50X2lkZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmNvbnN0YW50X2lkZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Jbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnkgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnlfYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnlfYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19jb3N0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2Nvc3QgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2RlY2lzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHNfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHNfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3RyYW5zZm9ybXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfdHJhbnNmb3JtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5zdHJ1Y3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkluc3RydWN0IGluc3RlYWRcIl1cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVyZiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgaW5zdGVhZFwiXVxubW9kdWxlIEludGVydmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVydmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJbnZhcmlhbnRfcGFyYW1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludmFyaWFudF9wYXJhbXMgaW5zdGVhZFwiXVxubW9kdWxlIExhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGF6eV9iYWNrdHJhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYXp5X2JhY2t0cmFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgTGV4ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MZXhlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcl9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcml6ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJpemUgaW5zdGVhZFwiXVxubW9kdWxlIExpbmthZ2VfbmFtZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5rYWdlX25hbWUgaW5zdGVhZFwiXVxubW9kdWxlIExpbnNjYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluc2NhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTGl2ZW5lc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGl2ZW5lc3MgaW5zdGVhZFwiXVxubW9kdWxlIExvYWRfcGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvYWRfcGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYWxfc3RvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhbF9zdG9yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9uZ2lkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBNYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIE1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE1haW5fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1haW5fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuTWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFrZWRlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ha2VkZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIE1hdGNoaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWF0Y2hpbmcgaW5zdGVhZFwiXVxubW9kdWxlIE1ldGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NZXRhIGluc3RlYWRcIl1cbm1vZHVsZSBNaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgTXR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTXV0YWJsZV92YXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NdXRhYmxlX3ZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBOdW1iZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTnVtYmVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3Bjb2RlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wY29kZXMgaW5zdGVhZFwiXVxubW9kdWxlIE9wcmludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wcmludCBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0Y29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRjb21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRlcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0ZXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBPcHRtYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdG1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE91dGNvbWV0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXJhbWV0ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFyYW1ldGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFzc193cmFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhc3Nfd3JhcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdGggaW5zdGVhZFwiXVxubW9kdWxlIFBhdHRlcm5zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0dGVybnMgaW5zdGVhZFwiXVxubW9kdWxlIFBlcnNpc3RlbnRfZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGVyc2lzdGVudF9lbnYgaW5zdGVhZFwiXVxubW9kdWxlIFBvbGxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUG9sbGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQcHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbWl0aXZlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbWl0aXZlIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbW0gaW5zdGVhZFwiXVxubW9kdWxlIFByaW50aW5zdHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLlByaW50aW5zdHIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludG1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRtYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHBhdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50cGF0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXBlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9jIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9maWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJvZmlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvamVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9qZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBSZWNfY2hlY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5SZWNfY2hlY2sgaW5zdGVhZFwiXVxubW9kdWxlIFJlZl90b192YXJpYWJsZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVmX3RvX3ZhcmlhYmxlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUnVudGltZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJ1bnRpbWVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZHVsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkdWxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3RnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFNlbWFudGljc19vZl9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbWFudGljc19vZl9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2hhcGUgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXJlX2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaGFyZV9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpZ25hdHVyZV9ncm91cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpZ25hdHVyZV9ncm91cCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxlX3ZhbHVlX2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGVfdmFsdWVfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2ltcGxpZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BpbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BpbGwgaW5zdGVhZFwiXVxubW9kdWxlIFNwbGl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwbGl0IGluc3RlYWRcIl1cbm1vZHVsZSBTdGF0aWNfZXhjZXB0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YXRpY19leGNlcHRpb24gaW5zdGVhZFwiXVxubW9kdWxlIFN0cm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0cm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFN1YnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Vic3QgaW5zdGVhZFwiXVxubW9kdWxlIFN3aXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN3aXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltdGFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW10YWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ludGF4ZXJyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ludGF4ZXJyIGluc3RlYWRcIl1cbm1vZHVsZSBUYWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGFnIGluc3RlYWRcIl1cbm1vZHVsZSBUYXJnZXRpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXJnZXRpbnQgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBUZXJtaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRlcm1pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBUbWMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UbWMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGNvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BkaXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BkaXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BldmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BldmFsIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bob29rcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVG9wbG9vcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbG9vcCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbWFpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wc3RhcnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFRyYWNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5UcmFjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsYXR0cmlidXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsYXR0cmlidXRlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xvYmogPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xvYmogaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbHByaW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xwcmltIGluc3RlYWRcIl1cbm1vZHVsZSBUcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3Byb3BlcnRpZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9wcm9wZXJ0aWVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9zZXBhcmFiaWxpdHkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9zZXBhcmFiaWxpdHkgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3VuYm94ZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF91bmJveGVkIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF92YXJpYW5jZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3ZhcmlhbmNlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZHRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZHRyZWUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlb3B0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW9wdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXRleHAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBldGV4cCBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5fYW5mID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuX2FuZiBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW50eXBlYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW50eXBlYXN0IGluc3RlYWRcIl1cbm1vZHVsZSBWYXJfd2l0aGluX2Nsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyX3dpdGhpbl9jbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBWYXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgV2FybmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5XYXJuaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2FzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgWDg2X2RzbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZHNsIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfZ2FzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9nYXMgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9tYXNtID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9tYXNtIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfcHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfcHJvYyBpbnN0ZWFkXCJdXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgcGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzID1cbiAgbGV0IGFyZ3MgPVxuICAgIExpc3QuY29uY2F0XG4gICAgICBbXG4gICAgICAgIFsgXCIta2VlcC13aGl0ZXNwYWNlXCIgXTtcbiAgICAgICAgWyBcIi1sb2NhdGlvbi1zdHlsZSBvbWFrZVwiIF07XG4gICAgICAgIChpZiB1c2VfY29sb3IgdGhlbiBbXSBlbHNlIFsgXCItYXNjaWlcIiBdKTtcbiAgICAgICAgZXh0cmFfcGF0ZGlmZl9hcmdzO1xuICAgICAgXVxuICBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKFwicGF0ZGlmZlwiIDo6IGFyZ3MpXG5cbmxldCBwcmludCA/ZGlmZl9jb21tYW5kID8oZXh0cmFfcGF0ZGlmZl9hcmdzID0gW10pID8odXNlX2NvbG9yID0gZmFsc2UpIH5maWxlMVxuICAgIH5maWxlMiAoKSA9XG4gIGxldCBleGVjIGNtZCA9XG4gICAgbGV0IGNtZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIDE+JjJcIiBjbWQgKEZpbGVuYW1lLnF1b3RlIGZpbGUxKVxuICAgICAgICAoRmlsZW5hbWUucXVvdGUgZmlsZTIpXG4gICAgaW5cbiAgICBtYXRjaCBTeXMuY29tbWFuZCBjbWQgd2l0aFxuICAgIHwgMCAtPiBgU2FtZVxuICAgIHwgMSAtPiBgRGlmZmVyZW50XG4gICAgfCBuIC0+IGBFcnJvciAobiwgY21kKVxuICBpblxuICBtYXRjaCBkaWZmX2NvbW1hbmQgd2l0aFxuICB8IFNvbWUgcyAtPiBpZ25vcmUgKGV4ZWMgcyA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIGV4ZWMgKHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncykgd2l0aFxuICAgICAgfCBgU2FtZSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgcHJvZHVjZWQgbm8gb3V0cHV0LCBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICAgICAgfCBgRGlmZmVyZW50IC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBzdWNjZXNzZnVsbHkgZm91bmQgYSBkaWZmZXJlbmNlICopXG4gICAgICAgICAgKClcbiAgICAgIHwgYEVycm9yIChlcnJfY29kZSwgY21kKSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgdGhyZXcgYW4gZXJyb3IuLi4gcGVyaGFwcyBpdCB3YXNuJ3QgaW5zdGFsbGVkPyBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRXJyb3I6XFxuXFxcbiAgICAgICAgICAgICA+ICVTIGV4aXRlZCB3aXRoIGNvZGUgJWRcXG5cXFxuICAgICAgICAgICAgID4gUGVyaGFwcyBwYXRkaWZmIGlzIG5vdCBpbnN0YWxsZWQ/IEhpbnQsIHRyeTogb3BhbSBpbnN0YWxsIHBhdGRpZmZcXG5cXFxuICAgICAgICAgICAgID4gRmFsbGluZyBiYWNrIHRvIGRpZmYgLXVcXG5cXG5cIlxuICAgICAgICAgICAgY21kIGVycl9jb2RlO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSkpXG4iLCJ0eXBlIGRlcml2ZXIgPSAuLlxuXG5sZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgNDJcblxubGV0IHJlZ2lzdGVyIG5hbWUgZGVyaXZlciA9XG4gIGlmIEhhc2h0YmwubWVtIGFsbCBuYW1lIHRoZW5cbiAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgIFwiUHB4X2Rlcml2aWVycy5yZWdpc3RlcjogJVMgaXMgYWxyZWFkeSByZWdpc3RlcmVkXCIgbmFtZTtcbiAgSGFzaHRibC5hZGQgYWxsIG5hbWUgZGVyaXZlclxuXG5sZXQgbG9va3VwIG5hbWUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgYWxsIG5hbWUgd2l0aFxuICB8IGRydiAtPiBTb21lIGRydlxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZGVyaXZlcnMgKCkgPVxuICBIYXNodGJsLmZvbGQgKGZ1biBuYW1lIGRydiBhY2MgLT4gKG5hbWUsIGRydikgOjogYWNjKSBhbGwgW11cbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgbWFwID0gJ2EgLT4gJ2FcbiAgdHlwZSAnYSBpdGVyID0gJ2EgLT4gdW5pdFxuICB0eXBlICgnYSwgJ2FjYykgZm9sZCA9ICdhIC0+ICdhY2MgLT4gJ2FjY1xuICB0eXBlICgnYSwgJ2FjYykgZm9sZF9tYXAgPSAnYSAtPiAnYWNjIC0+ICdhICogJ2FjY1xuICB0eXBlICgnY3R4LCAnYSkgbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2FcbiAgdHlwZSAoJ2EsICdyZXMpIGxpZnQgPSAnYSAtPiAncmVzXG4gIHR5cGUgKCdjdHgsICdhLCAncmVzKSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhICogJ3Jlc1xuZW5kXG5cbmNsYXNzIG1hcCA9XG4gIGxldCBhbnkgeCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5tYXAgLT4gJ2Egb3B0aW9uIFQubWFwID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULm1hcCAtPiAnYSBsaXN0IFQubWFwID0gTGlzdC5tYXBcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgYXJyYXkgVC5tYXAgPSBBcnJheS5tYXBcbiAgZW5kXG5cbmNsYXNzIGl0ZXIgPVxuICBsZXQgYW55ID0gaWdub3JlIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQuaXRlciA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULml0ZXIgLT4gJ2Egb3B0aW9uIFQuaXRlciA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGxpc3QgVC5pdGVyID0gTGlzdC5pdGVyXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQuaXRlciAtPiAnYSBhcnJheSBULml0ZXIgPSBBcnJheS5pdGVyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZCA9XG4gIGxldCBhbnkgXyBhY2MgPSBhY2MgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIHggYWNjIC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IGFjYyB8IFNvbWUgeCAtPiBmIHggYWNjXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGFjYyB8IHggOjogbCAtPiBsb29wIGYgbCAoZiB4IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICByIDo9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhclxuICAgICAgICBkb25lO1xuICAgICAgICAhclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGRfbWFwID1cbiAgbGV0IGFueSB4IGFjYyA9ICh4LCBhY2MpIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBhY2MpXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgKFNvbWUgeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBhY2MpXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgbGV0IGwsIGFjYyA9IGxvb3AgZiBsIGFjYyBpblxuICAgICAgICAgICAgKHggOjogbCwgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gKGEsIGFjYylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkgYWNjIGluXG4gICAgICAgICAgbGV0IGEnID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyIGluXG4gICAgICAgICAgICBBcnJheS51bnNhZmVfc2V0IGEnIGkgeDtcbiAgICAgICAgICAgIHIgOj0gYWNjXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAoYScsICFyKVxuICBlbmRcblxuY2xhc3MgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBsZXQgYW55IF8geCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2Egb3B0aW9uKSBULm1hcF93aXRoX2NvbnRleHRcbiAgICAgICAgPVxuICAgICAgZnVuIGYgY3R4IHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgbGlzdCkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+IExpc3QubWFwIChmIGN0eCkgbFxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGFycmF5KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGEgLT4gQXJyYXkubWFwIChmIGN0eCkgYVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZWxmI2NvbnN0ciBcIk5vbmVcIiBbXVxuICAgICAgICB8IFNvbWUgeCAtPiBzZWxmI2NvbnN0ciBcIlNvbWVcIiBbIGYgeCBdXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2VsZiNjb25zdHIgXCJbXVwiIFtdXG4gICAgICAgIHwgeCA6OiBsIC0+IHNlbGYjY29uc3RyIFwiOjpcIiBbIGYgeDsgc2VsZiNsaXN0IGYgbCBdXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBzZWxmI2NvbnN0ciBjdHggXCJOb25lXCIgW10pXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzID0gZiBjdHggeCBpblxuICAgICAgICAgICAgKFNvbWUgeCwgc2VsZiNjb25zdHIgY3R4IFwiU29tZVwiIFsgcmVzIF0pXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBzZWxmI2NvbnN0ciBjdHggXCJbXVwiIFtdKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlc19oZWFkID0gZiBjdHggeCBpblxuICAgICAgICAgICAgbGV0IGwsIHJlc190YWlsID0gc2VsZiNsaXN0IGYgY3R4IGwgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIHNlbGYjY29uc3RyIGN0eCBcIjo6XCIgWyByZXNfaGVhZDsgcmVzX3RhaWwgXSlcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydyZXNdIHN0ZF9saWZ0ZXJzID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdFxuICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0XG5lbmRcblxuY2xhc3MgdHlwZSBbJ2N0eCwgJ3Jlc10gc3RkX2xpZnRfbWFwcGVyc193aXRoX2NvbnRleHQgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICBtZXRob2QgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGFycmF5IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIG9wdGlvbiA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGxpc3QgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbmVuZFxuIiwibW9kdWxlIENhbWwgPSBTdGRsaWIgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTA2XSB1c2UgU3RkbGliIGluc3RlYWRcIl1cbm9wZW4gU3RkbGliXG5vcGVuIFN0ZExhYmVsc1xubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIHR5cGUgQ29tcGFyaXNvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPj0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBtaW4gOiB0IC0+IHQgLT4gdFxuICB2YWwgbWF4IDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0IG1pbiA9IG1pblxuICBsZXQgbWF4ID0gbWF4XG5lbmRcblxuaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5cbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBib29sKVxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEJ5dGVzXG5cbiAgbGV0IHN1Yl9zdHJpbmcgdCB+cG9zIH5sZW4gPSBTdGRsaWIuQnl0ZXMuc3ViX3N0cmluZyB0IHBvcyBsZW5cblxuICBsZXQgYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGNoYXIpXG5lbmRcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IHkgLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICB5XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgcmFpc2UgZXhuXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfZmxvYXRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gZmxvYXQpXG5lbmRcblxubW9kdWxlIEZuID0gc3RydWN0XG4gIGxldCBpZCB4ID0geFxuZW5kXG5cbm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICB3aGlsZSBtZW0gdCBrZXkgZG9cbiAgICAgIHJlbW92ZSB0IGtleVxuICAgIGRvbmU7XG4gICAgYWRkIHQga2V5IGRhdGFcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgaWYgbWVtIHQga2V5IHRoZW4gRXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLmFkZF9leG5cIilcbiAgICBlbHNlIChcbiAgICAgIGFkZCB0IGtleSBkYXRhO1xuICAgICAgT2sgKCkpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGggT2sgKCkgLT4gKCkgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG5cbiAgbGV0IGZpbmRfb3B0IHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGggZGF0YSAtPiBTb21lIGRhdGEgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZpbmRfb3B0IHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgICAgICBhZGRfZXhuIHQgfmtleSB+ZGF0YTtcbiAgICAgICAgZGF0YVxuXG4gIGxldCByZWMgYWRkX2FsaXN0IHQgYWxpc3QgPVxuICAgIG1hdGNoIGFsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE9rICgpXG4gICAgfCAoa2V5LCBkYXRhKSA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gYWRkX2FsaXN0IHQgdGFpbFxuICAgICAgICB8IEVycm9yIChfIDogZXhuKSAtPiBFcnJvciBrZXkpXG5cbiAgbGV0IG9mX2FsaXN0ID9zaXplIGFsaXN0ID1cbiAgICBsZXQgc2l6ZSA9XG4gICAgICBtYXRjaCBzaXplIHdpdGggU29tZSBzaXplIC0+IHNpemUgfCBOb25lIC0+IExpc3QubGVuZ3RoIGFsaXN0XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSBzaXplIGluXG4gICAgbWF0Y2ggYWRkX2FsaXN0IHQgYWxpc3Qgd2l0aCBPayAoKSAtPiBPayB0IHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuXG4gIGxldCBvZl9hbGlzdF9leG4gP3NpemUgYWxpc3QgPVxuICAgIG1hdGNoIG9mX2FsaXN0ID9zaXplIGFsaXN0IHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuXCIpXG5lbmRcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICAgIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGVuYW1lIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5IGZpbGVuYW1lIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2VfaW5cblxuICBsZXQgaW5wdXRfYWxsIHQgPVxuICAgIGxldCByZWMgcmVhZF9hbGxfaW50byB0IGJ1ZiA9XG4gICAgICBtYXRjaCBpbnB1dF9jaGFyIHQgd2l0aFxuICAgICAgfCBjaGFyIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgICAgICAgIHJlYWRfYWxsX2ludG8gdCBidWZcbiAgICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHJlYWRfYWxsX2ludG8gdCBidWY7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCByZWFkX2FsbCBmaWxlbmFtZSA9IHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjppbnB1dF9hbGxcbmVuZFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBtYXhfaW50ID0gbWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5lbmRcblxubW9kdWxlIEVpdGhlciA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcbmVuZFxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgICgqIHNoYWRvdyBub24tdGFpbC1yZWN1cnNpdmUgZnVuY3Rpb25zICopXG4gICAgbGV0IG1lcmdlID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzb2MgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NxID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuXG4gICAgbGV0IHJldl9tYXBpIGxpc3QgfmYgPVxuICAgICAgbGV0IHJlYyByZXZfbWFwaV9hdCBsaXN0IGkgfmYgfmFjYyA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPiByZXZfbWFwaV9hdCB0YWlsIChpICsgMSkgfmYgfmFjYzooZiBpIGhlYWQgOjogYWNjKVxuICAgICAgaW5cbiAgICAgIHJldl9tYXBpX2F0IGxpc3QgMCB+ZiB+YWNjOltdXG5cbiAgICBsZXQgZm9sZF9yaWdodDIgbGlzdDEgbGlzdDIgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0MiAocmV2IGxpc3QxKSAocmV2IGxpc3QyKSB+aW5pdCB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgYWNjKVxuXG4gICAgbGV0IG1hcCBsaXN0IH5mID0gcmV2IChyZXZfbWFwIGxpc3QgfmYpXG4gICAgbGV0IG1hcGkgbGlzdCB+ZiA9IHJldiAocmV2X21hcGkgbGlzdCB+ZilcblxuICAgIGxldCBmb2xkX3JpZ2h0IGxpc3QgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0IChMaXN0LnJldiBsaXN0KSB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+IGYgeCBhY2MpXG5cbiAgICBsZXQgYXBwZW5kIHggeSA9IHJldl9hcHBlbmQgKHJldiB4KSB5XG4gICAgbGV0IGNvbmNhdCBsaXN0ID0gZm9sZF9yaWdodCBsaXN0IH5pbml0OltdIH5mOmFwcGVuZFxuXG4gICAgbGV0IHJldl9jb21iaW5lIGxpc3QxIGxpc3QyID1cbiAgICAgIGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+ICh4LCB5KSA6OiBhY2MpXG5cbiAgICBsZXQgY29tYmluZSBsaXN0MSBsaXN0MiA9IHJldiAocmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIpXG5cbiAgICBsZXQgc3BsaXQgbGlzdCA9XG4gICAgICBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6KFtdLCBbXSkgfmY6KGZ1biAoeCwgeSkgKHhzLCB5cykgLT5cbiAgICAgICAgICAoeCA6OiB4cywgeSA6OiB5cykpXG5cbiAgICBsZXQgbWFwMiBsaXN0MSBsaXN0MiB+ZiA9XG4gICAgICByZXYgKGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IDo6IGFjYykpXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gICAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBwIHggd2l0aFxuICAgICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbClcbiAgICBpblxuICAgIHBhcnQgW10gW10gbFxuXG4gIGxldCBpbml0IH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCB+bGVuIH5wb3MgfmYgfmFjYyA9XG4gICAgICBpZiBwb3MgPj0gbGVuIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICBlbHNlIGxvb3AgfmxlbiB+cG9zOihwb3MgKyAxKSB+ZiB+YWNjOihmIHBvcyA6OiBhY2MpXG4gICAgaW5cbiAgICBsb29wIH5sZW4gfnBvczowIH5mIH5hY2M6W11cblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBbXSAtPiB0cnVlIHwgXyA6OiBfIC0+IGZhbHNlXG5cbiAgbGV0IHJldl9maWx0ZXJfb3B0IGxpc3QgPVxuICAgIGZvbGRfbGVmdCBsaXN0IH5pbml0OltdIH5mOihmdW4gdGFpbCBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGggTm9uZSAtPiB0YWlsIHwgU29tZSBoZWFkIC0+IGhlYWQgOjogdGFpbClcblxuICBsZXQgZmlsdGVyX29wdCBsaXN0ID0gcmV2IChyZXZfZmlsdGVyX29wdCBsaXN0KVxuICBsZXQgZmlsdGVyX21hcCBsaXN0IH5mID0gcmV2X2ZpbHRlcl9vcHQgKHJldl9tYXAgbGlzdCB+ZilcbiAgbGV0IGNvbmNhdF9tYXAgbGlzdCB+ZiA9IGNvbmNhdCAobWFwIGxpc3QgfmYpXG5cbiAgbGV0IHJlYyBmaW5kX21hcCBsaXN0IH5mID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGhlYWQgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGYgaGVhZCB3aXRoIFNvbWUgXyBhcyBzb21lIC0+IHNvbWUgfCBOb25lIC0+IGZpbmRfbWFwIHRhaWwgfmYpXG5cbiAgbGV0IGZpbmRfbWFwX2V4biBsaXN0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCBsaXN0IH5mIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG4gIGxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbIHggXSAtPiBTb21lIHhcbiAgICB8IF8gOjogKF8gOjogXyBhcyByZXN0KSAtPiBsYXN0IHJlc3RcblxuICBsZXQgc3BsaXRfd2hpbGUgbGlzdCB+ZiA9XG4gICAgbGV0IHJlYyBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYyA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gZiBoZWFkIC0+IHNwbGl0X3doaWxlX2ludG8gdGFpbCB+ZiB+YWNjOihoZWFkIDo6IGFjYylcbiAgICAgIHwgXyA6OiBfIHwgW10gLT4gKExpc3QucmV2IGFjYywgbGlzdClcbiAgICBpblxuICAgIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjOltdXG5cbiAgbGV0IGZpbmRfYV9kdXAgKHR5cGUgZWx0KSBsaXN0IH5jb21wYXJlID1cbiAgICBsZXQgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZWx0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZCBpblxuICAgIGxldCBtb2R1bGUgRWx0X3NldCA9IFNldC5NYWtlIChFbHQpIGluXG4gICAgbGV0IHJlYyBmaW5kX2FfZHVwX2luIGxpc3QgfnNldCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBFbHRfc2V0Lm1lbSBoZWFkIHNldCB0aGVuIFNvbWUgaGVhZFxuICAgICAgICAgIGVsc2UgZmluZF9hX2R1cF9pbiB0YWlsIH5zZXQ6KEVsdF9zZXQuYWRkIGhlYWQgc2V0KVxuICAgIGluXG4gICAgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQ6RWx0X3NldC5lbXB0eVxuXG4gIGxldCBhc3NvY19vcHQga2V5IGFsaXN0ID1cbiAgICBtYXRjaCBhc3NvYyBrZXkgYWxpc3Qgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gICgqIHJlb3JkZXJzIGFyZ3VtZW50cyB0byBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlICopXG4gIGxldCBpdGVyIGxpc3QgfmYgPSBpdGVyIGxpc3QgfmZcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG4gIGxldCBpdGVyIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG4gIGxldCB0b19saXN0IHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBbXSB8IFNvbWUgeCAtPiBbIHggXVxuZW5kXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGYgYSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGhhbmRsZV9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gYSB8IEVycm9yIGUgLT4gZiBlXG5lbmRcblxubW9kdWxlIE5vbkVtcHR5TGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqICdhIGxpc3RcblxuICBsZXQgKCBAICkgKHQxLCBxMSkgKHQyLCBxMikgPSAodDEsIHExIEAgKHQyIDo6IHEyKSlcbiAgbGV0IGhkID0gZnN0XG4gIGxldCB0b19saXN0ICh0LCBxKSA9IHQgOjogcVxuICBsZXQgbWFwIH5mICh0LCBxKSA9IChmIHQsIExpc3QubWFwIH5mIHEpXG5lbmRcblxubW9kdWxlIE91dF9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSA/KGFwcGVuZCA9IGZhbHNlKSA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NikgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2Vfb3V0XG5cbiAgbGV0IHdyaXRlX2FsbCBmaWxlbmFtZSB+ZGF0YSA9XG4gICAgd2l0aF9maWxlIGZpbGVuYW1lIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGlzX2VtcHR5ICh0IDogdCkgPSBsZW5ndGggdCA9IDBcbiAgbGV0IHByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuXG4gIGxldCBzdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOihsZW5ndGggdCAtIGxlbikgfmxlblxuICBsZXQgZHJvcF9wcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOmxlbiB+bGVuOihsZW5ndGggdCAtIGxlbilcbiAgbGV0IGRyb3Bfc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuXG4gIGxldCBpc19wcmVmaXggdCB+cHJlZml4ID1cbiAgICBsZXQgcmVjIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlblxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgcG9zKSAoZ2V0IHByZWZpeCBwb3MpXG4gICAgICAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczoocG9zICsgMSkgfmxlblxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHByZWZpeFxuICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOjAgfmxlbjoobGVuZ3RoIHByZWZpeClcblxuICBsZXQgaXNfc3VmZml4IHQgfnN1ZmZpeCA9XG4gICAgbGV0IHJlYyBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3MgfnN1ZmZpeF9vZmZzZXQgPVxuICAgICAgcG9zIDwgMFxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgKHN1ZmZpeF9vZmZzZXQgKyBwb3MpKSAoZ2V0IHN1ZmZpeCBwb3MpXG4gICAgICAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3M6KHBvcyAtIDEpIH5zdWZmaXhfb2Zmc2V0XG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggc3VmZml4XG4gICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeFxuICAgICAgICAgfnBvczoobGVuZ3RoIHN1ZmZpeCAtIDEpXG4gICAgICAgICB+c3VmZml4X29mZnNldDoobGVuZ3RoIHQgLSBsZW5ndGggc3VmZml4KVxuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgbGV0IHJlYyBleGlzdHNfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zIDwgbGVuICYmIChmIChnZXQgdCBwb3MpIHx8IGV4aXN0c19hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBleGlzdHNfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgbGV0IHJlYyBmb3JfYWxsX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW4gfHwgKGYgKGdldCB0IHBvcykgJiYgZm9yX2FsbF9hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBmb3JfYWxsX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCBpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGhcbiAgICB8IGkgLT4gU29tZSBpXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgbHNwbGl0MiB0IH5vbiA9XG4gICAgbWF0Y2ggaW5kZXhfb3B0IHQgb24gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICAgU29tZSAoc3ViIHQgfnBvczowIH5sZW46aSwgc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpKVxuXG4gIGxldCBjYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBsb3dlcmNhc2VfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdW5jYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IHNwbGl0X29uX2NoYXIgdCB+c2VwID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyIHNlcCB0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHN0cmluZylcblxuICBtb2R1bGUgTWFwID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgbGV0IGZpbmRfb3B0IGtleSB0ID1cbiAgICAgIG1hdGNoIGZpbmQga2V5IHQgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICBlbmRcblxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFN0cmluZylcbmVuZFxuXG5sZXQgKCBAICkgPSBMaXN0LmFwcGVuZFxubGV0IG91dHB1dCBvYyBieXRlcyB+cG9zIH5sZW4gPSBvdXRwdXQgb2MgYnl0ZXMgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIH5wb3MgfmxlbiA9IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIHBvcyBsZW5cbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTCA9IEFzdGxpYi5Mb2NhdGlvblxuXG50eXBlIHQgPSBsb2NhdGlvbiA9IHtcbiAgbG9jX3N0YXJ0IDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZW5kIDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5sZXQgaW5fZmlsZSBuYW1lID1cbiAgbGV0IGxvYyA9IHsgcG9zX2ZuYW1lID0gbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAtMSB9IGluXG4gIHsgbG9jX3N0YXJ0ID0gbG9jOyBsb2NfZW5kID0gbG9jOyBsb2NfZ2hvc3QgPSB0cnVlIH1cblxubGV0IHNldF9maWxlbmFtZSBsb2MgZm4gPVxuICBsZXQgbG9jX3N0YXJ0ID0geyBsb2MubG9jX3N0YXJ0IHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICBsZXQgbG9jX2VuZCA9IHsgbG9jLmxvY19lbmQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIHsgbG9jIHdpdGggbG9jX3N0YXJ0OyBsb2NfZW5kIH1cblxubGV0IG5vbmUgPSBpbl9maWxlIFwiX25vbmVfXCJcblxubGV0IGluaXQgbGV4YnVmIGZuYW1lID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH1cblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIGZtdCA9IEwucmFpc2VfZXJyb3JmID9sb2MgZm10XG5sZXQgcmVwb3J0X2V4Y2VwdGlvbiA9IEwucmVwb3J0X2V4Y2VwdGlvblxuXG5sZXQgb2ZfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIHtcbiAgICBsb2Nfc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgbG9jX2VuZCA9IGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICB9XG5cbmxldCBwcmludCBwcGYgdCA9XG4gIFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XCJcbiAgICB0LmxvY19zdGFydC5wb3NfZm5hbWUgdC5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAodC5sb2Nfc3RhcnQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuICAgICh0LmxvY19lbmQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuXG50eXBlIG5vbnJlYyAnYSBsb2MgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiB0IH1cblxubGV0IGNvbXBhcmVfcG9zIHAxIHAyID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxldCBjb2x1bW4gcCA9XG4gICAgKCogTWFudWFsIGV4dHJhY3Q6XG4gICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3NfY251bSBhbmQgcG9zX2JvbCBpcyB0aGUgY2hhcmFjdGVyIG9mZnNldFxuICAgICAgIHdpdGhpbiB0aGUgbGluZSAoaS5lLiB0aGUgY29sdW1uIG51bWJlciwgYXNzdW1pbmcgZWFjaCBjaGFyYWN0ZXIgaXNcbiAgICAgICBvbmUgY29sdW1uIHdpZGUpLiAqKVxuICAgIHAucG9zX2NudW0gLSBwLnBvc19ib2xcbiAgaW5cbiAgbWF0Y2ggSW50LmNvbXBhcmUgcDEucG9zX2xudW0gcDIucG9zX2xudW0gd2l0aFxuICB8IDAgLT4gSW50LmNvbXBhcmUgKGNvbHVtbiBwMSkgKGNvbHVtbiBwMilcbiAgfCBuIC0+IG5cblxubGV0IG1pbl9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA8PSAwIHRoZW4gcDEgZWxzZSBwMlxubGV0IG1heF9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA+PSAwIHRoZW4gcDEgZWxzZSBwMlxuXG5sZXQgY29tcGFyZSBsb2MxIGxvYzIgPVxuICBtYXRjaCBjb21wYXJlX3BvcyBsb2MxLmxvY19zdGFydCBsb2MyLmxvY19zdGFydCB3aXRoXG4gIHwgMCAtPiBjb21wYXJlX3BvcyBsb2MxLmxvY19lbmQgbG9jMi5sb2NfZW5kXG4gIHwgbiAtPiBuXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBpbmNsdWRlIFBweGxpYl9hc3QuTG9jYXRpb25fZXJyb3JcblxuICBsZXQgY3JlYXRlZiB+bG9jIGZtdCA9IEZvcm1hdC5rYXNwcmludGYgKGZ1biBzdHIgLT4gbWFrZSB+bG9jIH5zdWI6W10gc3RyKSBmbXRcbmVuZFxuXG5sZXQgZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIGZtdCA9XG4gIEZvcm1hdC5rYXNwcmludGZcbiAgICAoZnVuIHN0ciAtPiBFcnJvci50b19leHRlbnNpb24gQEAgRXJyb3IubWFrZSB+bG9jIH5zdWI6W10gc3RyKVxuICAgIGZtdFxuXG5leGNlcHRpb24gRXJyb3IgPSBMLkVycm9yXG5cbmxldCAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgIHwgRXJyb3IgZSAtPiBTb21lIChFcnJvci5tZXNzYWdlIGUpXG4gICAgfCBfIC0+IE5vbmUpXG4iLCJvcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEV4cGVjdGVkIG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IGZhaWwgbG9jIGV4cGVjdGVkID0gcmFpc2UgKEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSlcblxudHlwZSBjb250ZXh0ID0ge1xuICAoKiBbbWF0Y2hlZF0gY291bnRzIGhvdyBtYW55IGNvbnN0cnVjdG9ycyBoYXZlIGJlZW4gbWF0Y2hlZC4gVGhpcyBpcyB1c2VkIHRvIGZpbmQgd2hhdFxuICAgICBwYXR0ZXJuIG1hdGNoZXMgdGhlIG1vc3Qgc29tZSBwaWVjZSBvZiBhc3QgaW4gW0FzdF9wYXR0ZXJuLmFsdF0uIEluIHRoZSBjYXNlIHdoZXJlXG4gICAgIGFsbCBicmFuY2hlcyBmYWlsIHRvIG1hdGNoLCB3ZSByZXBvcnQgdGhlIGVycm9yIGZyb20gdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlXG4gICAgIG1vc3QuXG5cbiAgICAgVGhpcyBpcyBvbmx5IGluY3JlbWVudGVkIGJ5IGNvbWJpbmF0b3JzIHRoYXQgY2FuIGZhaWwuICopXG4gIG11dGFibGUgbWF0Y2hlZCA6IGludDtcbn1cblxudHlwZSAoJ21hdGNoZWRfdmFsdWUsICdrLCAna19yZXN1bHQpIHQgPVxuICB8IFQgb2YgKGNvbnRleHQgLT4gTG9jYXRpb24udCAtPiAnbWF0Y2hlZF92YWx1ZSAtPiAnayAtPiAna19yZXN1bHQpXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIE0gPVxuICBzdHJ1Y3RcbiAgICBsZXQgYXR0cmlidXRlIH5sb2MgIH5uYW1lICB+cGF5bG9hZCAgPVxuICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG4gICAgbGV0IGJpbmRpbmdfb3AgfmxvYyAgfm9wICB+cGF0ICB+ZXhwICA9XG4gICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG4gICAgbGV0IGNhc2UgfmxocyAgfmd1YXJkICB+cmhzICA9XG4gICAgICB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cbiAgICBsZXQgcGNsX2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKSB9XG4gICAgbGV0IHBjbF9mdW4gfmxvYyAgeDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBjbF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2xfbGV0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjbF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNmX2luaGVyaXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjZl92YWwgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9XG4gICAgbGV0IHBjZl9tZXRob2QgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjZl9jb25zdHJhaW50IH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApIH1cbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKSB9XG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBjZl9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IGNsYXNzX2luZm9zIH5sb2MgIH52aXJ0ICB+cGFyYW1zICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHtcbiAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgcGN0eV9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9hcnJvdyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdGZfaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnZhcnMgIH5hcmdzICB+cmVzICA9XG4gICAgICB7XG4gICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF90dXBsZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfb2JqZWN0IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY2xhc3MgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FsaWFzIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXJpYW50IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wb2x5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BhY2thZ2UgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBkaXJfc3RyaW5nIH5sb2MgIHgwID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBkaXJfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgfmxvYyAgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIH5sb2MgIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbWF0Y2ggfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3RyeSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF92YXJpYW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3JlY29yZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZpZWxkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FycmF5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfd2hpbGUgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZvciB+bG9jICB4MCB4MSB4MiB4MyB4NCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29lcmNlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlbmQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vdmVycmlkZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Fzc2VydCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vYmplY3QgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BhY2sgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRvcCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5sb2MgIH5uYW1lICB+a2luZCAgPVxuICAgICAge1xuICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgaW5jbHVkZV9pbmZvcyB+bG9jICBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfm11dGFibGVfICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGxldG9wIH5sZXRfICB+YW5kcyAgfmJvZHkgID0geyBsZXRfOyBhbmRzOyBib2R5IH1cbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICB+ZW5kXyAgfmdob3N0ICA9XG4gICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bG9jICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gW107IHBtYl9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cGVfOyBwbWRfYXR0cmlidXRlcyA9IFtdOyBwbWRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtb2RfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF91bnBhY2sgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5sb2MgIH5uYW1lICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbXR5X2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfd2l0aCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV90eXBlb2YgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgb3RhZyB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH1cbiAgICBsZXQgb2luaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5sb2MgIH5leHByICB+b3ZlcnJpZGUgID1cbiAgICAgIHtcbiAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdGFudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXJpYW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3JlY29yZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FycmF5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90eXBlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICB+bG51bSAgfmJvbCAgfmNudW0gID1cbiAgICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gbG51bTsgcG9zX2JvbCA9IGJvbDsgcG9zX2NudW0gPSBjbnVtIH1cbiAgICBsZXQgcnRhZyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKSB9XG4gICAgbGV0IHJpbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB+bG9jICB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3MgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzaWdfZXh0ZW5zaW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX2V2YWwgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ZhbHVlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfcHJpbWl0aXZlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ByaW1pdGl2ZSB4MCkgfVxuICAgIGxldCBwc3RyX3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3R5cGV4dCB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9tb2R0eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIH5sb2MgIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIH5sb2MgIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfmxvYyAgfm5hbWUgIH5hcmcgID1cbiAgICAgIHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH1cbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnBhcmFtcyAgfmNzdHJzICB+a2luZCAgfnByaXZhdGVfIFxuICAgICAgfm1hbmlmZXN0ICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIH5sb2MgIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfmxvYyAgfnBhdGggIH5wYXJhbXMgIH5jb25zdHJ1Y3RvcnMgIH5wcml2YXRlXyAgPVxuICAgICAge1xuICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdmFsdWVfYmluZGluZyB+bG9jICB+cGF0ICB+ZXhwciAgPVxuICAgICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gW107IHB2Yl9sb2MgPSBsb2MgfVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bG9jICB+bmFtZSAgfnR5cGVfICB+cHJpbSAgPVxuICAgICAge1xuICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICB9XG4gIGVuZFxubW9kdWxlIE1ha2UoTG9jOnNpZyB2YWwgbG9jIDogTG9jYXRpb24udCBlbmQpID1cbiAgc3RydWN0XG4gICAgbGV0IGxvYyA9IExvYy5sb2NcbiAgICBsZXQgYXR0cmlidXRlIH5uYW1lICB+cGF5bG9hZCAgPVxuICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG4gICAgbGV0IGJpbmRpbmdfb3Agfm9wICB+cGF0ICB+ZXhwICA9XG4gICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG4gICAgbGV0IGNhc2UgfmxocyAgfmd1YXJkICB+cmhzICA9XG4gICAgICB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cbiAgICBsZXQgcGNsX2NvbnN0ciB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKSB9XG4gICAgbGV0IHBjbF9mdW4geDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBjbF9hcHBseSB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2xfbGV0IHgwIHgxIHgyID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjbF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNmX2luaGVyaXQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjZl92YWwgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9XG4gICAgbGV0IHBjZl9tZXRob2QgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjZl9jb25zdHJhaW50IHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApIH1cbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKSB9XG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBjZl9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IGNsYXNzX2luZm9zIH52aXJ0ICB+cGFyYW1zICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHtcbiAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgcGN0eV9jb25zdHIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9hcnJvdyB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdGZfaW5oZXJpdCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSAgfnZhcnMgIH5hcmdzICB+cmVzICA9XG4gICAgICB7XG4gICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbnkgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfb2JqZWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY2xhc3MgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FsaWFzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXJpYW50IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wb2x5IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BhY2thZ2UgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBkaXJfc3RyaW5nIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgeDAgeDEgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGRpcl9pZGVudCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuY3Rpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1biB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXBwbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX21hdGNoIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90cnkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3RyeSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RydWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdmFyaWFudCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9yZWNvcmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9maWVsZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0ZmllbGQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VxdWVuY2UgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3doaWxlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mb3IgeDAgeDEgeDIgeDMgeDQgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvZXJjZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZW5kIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ldyB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRleGNlcHRpb24geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hc3NlcnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BvbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb2JqZWN0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3dHlwZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3dHlwZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0b3AgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZSAgfmtpbmQgID1cbiAgICAgIHtcbiAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgbW9kXyA9XG4gICAgICB7IHBpbmNsX21vZCA9IG1vZF87IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWUgIH5tdXRhYmxlXyAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBsZXRvcCB+bGV0XyAgfmFuZHMgIH5ib2R5ICA9IHsgbGV0XzsgYW5kczsgYm9keSB9XG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgfmVuZF8gIH5naG9zdCAgPVxuICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH1cbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWUgIH5leHByICA9XG4gICAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IFtdOyBwbWJfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXBlXzsgcG1kX2F0dHJpYnV0ZXMgPSBbXTsgcG1kX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbW9kX2lkZW50IHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfYXBwbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfdW5wYWNrIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZSAgfm1hbmlmZXN0ICA9XG4gICAgICB7XG4gICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG10eV9pZGVudCB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3dpdGggeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfdHlwZW9mIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApIH1cbiAgICBsZXQgcG10eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9hbGlhcyB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfYWxpYXMgeDApIH1cbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG90YWcgeDAgeDEgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9XG4gICAgbGV0IG9pbmhlcml0IHgwID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH1cbiAgICBsZXQgb3Blbl9pbmZvcyB+ZXhwciAgfm92ZXJyaWRlICA9XG4gICAgICB7XG4gICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FueSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbGlhcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2ludGVydmFsIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RydWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyaWFudCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9yZWNvcmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHlwZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3VucGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgfmxudW0gIH5ib2wgIH5jbnVtICA9XG4gICAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IGxudW07IHBvc19ib2wgPSBib2w7IHBvc19jbnVtID0gY251bSB9XG4gICAgbGV0IHJ0YWcgeDAgeDEgeDIgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSkgfVxuICAgIGxldCByaW5oZXJpdCB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ190eXBleHQgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24geDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24geDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfZXZhbCB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdmFsdWUgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdHlwZXh0IHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzdHJfZXhjZXB0aW9uIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc3RyX21vZHVsZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9tb2R0eXBlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4geDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzdHJfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lICB+YXJnICA9XG4gICAgICB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9XG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWUgIH5wYXJhbXMgIH5jc3RycyAgfmtpbmQgIH5wcml2YXRlXyAgfm1hbmlmZXN0IFxuICAgICAgPVxuICAgICAge1xuICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiBjb25zdHJ1Y3RvciA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoICB+cGFyYW1zICB+Y29uc3RydWN0b3JzICB+cHJpdmF0ZV8gID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfnBhdCAgfmV4cHIgID1cbiAgICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IFtdOyBwdmJfbG9jID0gbG9jIH1cbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWUgIH50eXBlXyAgfnByaW0gID1cbiAgICAgIHtcbiAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgfVxuICBlbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiBMb2NhdGlvbi50IH1cblxubGV0IHR4dCB0ID0gdC50eHRcbmxldCBsb2MgdCA9IHQubG9jXG5sZXQgbWFrZSB+bG9jIHR4dCA9IHsgbG9jOyB0eHQgfVxubGV0IG1hcCB0IH5mID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbG9uZ2lkZW50ID0gTGlkZW50IG9mIHN0cmluZyB8IExkb3Qgb2YgdCAqIHN0cmluZyB8IExhcHBseSBvZiB0ICogdFxuXG4gIGxldCBjb21wYXJlIDogdCAtPiB0IC0+IGludCA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnRfY2hhciA9IGZ1bmN0aW9uXG4gICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnXycgfCAnXFwnJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBcImFzclwiIHwgXCJsYW5kXCIgfCBcImxvclwiIHwgXCJsc2xcIiB8IFwibHNyXCIgfCBcImx4b3JcIiB8IFwibW9kXCIgfCBcIm9yXCIgLT4gZmFsc2VcbiAgICB8IHN0cmluZyAtPiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6aXNfbm9ybWFsX2lkZW50X2NoYXJcblxuICBsZXQgc2hvcnRfbmFtZSBzdHJpbmcgPVxuICAgIGlmIGlzX25vcm1hbF9pZGVudCBzdHJpbmcgdGhlbiBzdHJpbmcgZWxzZSBcIiggXCIgXiBzdHJpbmcgXiBcIiApXCJcblxuICBsZXQgcmVjIG5hbWUgPSBmdW5jdGlvblxuICAgIHwgTGlkZW50IHMgLT4gc2hvcnRfbmFtZSBzXG4gICAgfCBMZG90IChhLCBiKSAtPiBuYW1lIGEgXiBcIi5cIiBeIHNob3J0X25hbWUgYlxuICAgIHwgTGFwcGx5IChhLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcIiVzKCVzKVwiIChuYW1lIGEpIChuYW1lIGIpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChuYW1lIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCByZWMgZmxhdCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzIDo6IGFjY3VcbiAgfCBMZG90IChsaWQsIHMpIC0+IGZsYXQgKHMgOjogYWNjdSkgbGlkXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCBmbGF0dGVuX2V4biBsaWQgPSBmbGF0IFtdIGxpZFxuXG5sZXQgbGFzdF9leG4gPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHNcbiAgfCBMZG90IChfLCBzKSAtPiBzXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCB1bmZsYXR0ZW4gfmluaXQgbCA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6KGZ1biBhY2MgcyAtPiBMZG90IChhY2MsIHMpKVxuXG4oKiBmb3IgY2FzZXMgd2l0aG91dCBkb3R0ZWQgb3BlcmF0b3JzIChlLmcuIFtwYXJzZSBcIkEuQi5DXCJdKSAqKVxubGV0IHBhcnNlX3NpbXBsZSBzID1cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicuJyB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgcyA6OiBsIC0+IHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGxcblxuKCogaGFuZGxlIFtcIkEuQi4oKy4rKVwiXSBvciBbXCJWZWMuKC4lLigpPC0pXCJdICopXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpbnZhbGlkICgpID1cbiAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJQcHhsaWIuTG9uZ2lkZW50LnBhcnNlOiAlU1wiIHMpXG4gIGluXG4gIGlmIFN0cmluZy5sZW5ndGggcyA8IDEgdGhlbiBpbnZhbGlkICgpO1xuICBsZXQgb3Blbl9wYXIgPSBTdHJpbmcuaW5kZXhfb3B0IHMgJygnIGluXG4gIGxldCBjbG9zZV9wYXIgPSBTdHJpbmcuaW5kZXhfb3B0IHMgJyknIGluXG4gIG1hdGNoIChzLlswXSwgb3Blbl9wYXIsIGNsb3NlX3Bhcikgd2l0aFxuICB8ICgnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICdfJyksIE5vbmUsIE5vbmUgLT4gcGFyc2Vfc2ltcGxlIHNcbiAgfCBfLCBOb25lLCBOb25lIC0+IExpZGVudCBzICgqIFRoaXMgaXMgYSByYXcgb3BlcmF0b3IsIG5vIG1vZHVsZSBwYXRoICopXG4gIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gaW52YWxpZCAoKVxuICB8IF8sIFNvbWUgbCwgU29tZSByIC0+IChcbiAgICAgIGlmIEludC4ociA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxKSB0aGVuIGludmFsaWQgKCk7XG4gICAgICBsZXQgZ3JvdXAgPVxuICAgICAgICBpZiBJbnQuKHIgPSBsICsgMSkgdGhlbiBcIigpXCJcbiAgICAgICAgZWxzZSBTdHJpbmcudHJpbSAoU3RyaW5nLnN1YiBzIH5wb3M6KGwgKyAxKSB+bGVuOihyIC0gbCAtIDEpKVxuICAgICAgaW5cbiAgICAgIGlmIEludC4obCA9IDApIHRoZW4gTGlkZW50IGdyb3VwXG4gICAgICBlbHNlIGlmIENoYXIuKHMuW2wgLSAxXSA8PiAnLicpIHRoZW4gaW52YWxpZCAoKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihsIC0gMSkgaW5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgYmVmb3JlIH5zZXA6Jy4nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBzIDo6IGwgLT4gTGRvdCAodW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbCwgZ3JvdXApKVxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2UgKFQpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFQpXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIERlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBMb2MudFxuXG4gICAgbGV0IGxvYyAoeCA6IF8gdCkgPSB4LmxvY1xuICAgIGxldCBtayB+bG9jIHggPSB7IGxvYzsgdHh0ID0geCB9XG4gICAgbGV0IG1hcCBmIHQgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiAgICBsZXQgbWFwX2xpZGVudCB4ID0gbWFwIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHhcbiAgICBsZXQgbGlkZW50IH5sb2MgeCA9IG1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB4KVxuICBlbmRcblxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gLS0tLS0qKVxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHZicyAtPiBbIHBzdHJfdmFsdWUgfmxvYyByZWNfZmxhZyB2YnMgXVxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jOl8gfm5hbWU6XyB+cGFyYW1zOl8gfmNzdHJzOl8gfmtpbmQ6X1xuICAgICAgfnByaXZhdGVfOl8gfm1hbmlmZXN0Ol8gPVxuICAgIGZhaWx3aXRoXG4gICAgICBcIlBweGxpYi5Bc3RfYnVpbGRlci5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbjogZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb25cIlxuXG4gIGxldCBlaW50IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBlY2hhciB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBlc3RyaW5nIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IGVmbG9hdCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IGVpbnQzMiB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IGVpbnQ2NCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IGVuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgcGludCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgcGNoYXIgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgcHN0cmluZyB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBwZmxvYXQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBwaW50MzIgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBwaW50NjQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBwbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IGVib29sIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgcGJvb2wgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBldmFyIH5sb2MgdiA9IHBleHBfaWRlbnQgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQucGFyc2UgdikpXG4gIGxldCBwdmFyIH5sb2MgdiA9IHBwYXRfdmFyIH5sb2MgKExvY2F0ZWQubWsgfmxvYyB2KVxuICBsZXQgZXVuaXQgfmxvYyA9IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwdW5pdCB+bG9jID0gcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHBleHBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHR5cF90dXBsZSB+bG9jIGxcblxuICBsZXQgcGV4cF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwZXhwX3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHBhdF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwcGF0X3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHR5cF9wb2x5IH5sb2MgdmFycyB0eSA9XG4gICAgbWF0Y2ggdmFycyB3aXRoIFtdIC0+IHR5IHwgXyAtPiBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG5cbiAgbGV0IHBleHBfYXBwbHkgfmxvYyBlIGVsID1cbiAgICBtYXRjaCAoZSwgZWwpIHdpdGhcbiAgICB8IF8sIFtdIC0+IGVcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sIF8gLT5cbiAgICAgICAgeyBlIHdpdGggcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyBAIGVsKSB9XG4gICAgfCBfIC0+IHBleHBfYXBwbHkgfmxvYyBlIGVsXG5cbiAgbGV0IGVhcHBseSB+bG9jIGUgZWwgPVxuICAgIHBleHBfYXBwbHkgfmxvYyBlIChMaXN0Lm1hcCBlbCB+ZjooZnVuIGUgLT4gKEFzdHR5cGVzLk5vbGFiZWwsIGUpKSlcblxuICBsZXQgZWFic3RyYWN0IH5sb2MgcHMgZSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IHBzIH5pbml0OmUgfmY6KGZ1biBwIGUgLT5cbiAgICAgICAgcGV4cF9mdW4gfmxvYyBBc3R0eXBlcy5Ob2xhYmVsIE5vbmUgcCBlKVxuXG4gIGxldCBlc2VxdWVuY2UgfmxvYyBlbCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgZWwgd2l0aFxuICAgIHwgW10gLT4gZXVuaXQgfmxvY1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgdGwgfmluaXQ6aGQgfmY6KGZ1biBhY2MgZSAtPiBwZXhwX3NlcXVlbmNlIH5sb2MgZSBhY2MpXG5cbiAgbGV0IHBjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IGVjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IHJlYyBlbGlzdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwZXhwX3R1cGxlIH5sb2MgWyB4OyBlbGlzdCB+bG9jIGwgXSkpXG5cbiAgbGV0IHJlYyBwbGlzdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwcGF0X3R1cGxlIH5sb2MgWyB4OyBwbGlzdCB+bG9jIGwgXSkpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgfmxvYyAoaWRlbnQgOiBMb25naWRlbnQudCkgfmYgPVxuICAgIG1hdGNoIGlkZW50IHdpdGhcbiAgICB8IExpZGVudCBuIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExpZGVudCAoZiBuKTsgbG9jIH1cbiAgICB8IExkb3QgKHBhdGgsIG4pIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExkb3QgKHBhdGgsIGYgbik7IGxvYyB9XG4gICAgfCBMYXBwbHkgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuZXhwZWN0ZWQgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlXCJcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiB+bG9jOmFwcGx5X2xvYyB7IExvYy5sb2M7IHR4dCA9IGxvbmdpZGVudCB9IH5mIGFyZ3MgPVxuICAgIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIChsb25naWRlbnQgOiBMb25naWRlbnQudCkgd2l0aFxuICAgIHwgTGlkZW50IF8gfCBMZG90ICgoTGlkZW50IF8gfCBMZG90IF8pLCBfKSB8IExhcHBseSBfIC0+IChcbiAgICAgICAgbGV0IGlkZW50ID1cbiAgICAgICAgICB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGxvbmdpZGVudCB+bG9jIH5mXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGlkZW50XG4gICAgICAgIHwgXyA6OiBfIC0+IGVhcHBseSB+bG9jOmFwcGx5X2xvYyBpZGVudCBhcmdzKVxuICAgIHwgTGRvdCAoKExhcHBseSBfIGFzIG1vZHVsZV9wYXRoKSwgbikgLT5cbiAgICAgICAgbGV0IHN1ZmZpeF9uIGZ1bmN0b3JfID0gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBmdW5jdG9yXyBeIFwiX19cIiBeIG4gaW5cbiAgICAgICAgbGV0IHJlYyBnYXRoZXJfbGFwcGx5IGZ1bmN0b3JfYXJncyA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ICogXyA9XG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IExhcHBseSAocmVzdCwgYXJnKSAtPiBnYXRoZXJfbGFwcGx5IChhcmcgOjogZnVuY3Rvcl9hcmdzKSByZXN0XG4gICAgICAgICAgfCBMaWRlbnQgZnVuY3Rvcl8gLT4gKExpZGVudCAoc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgICAgfCBMZG90IChmdW5jdG9yX3BhdGgsIGZ1bmN0b3JfKSAtPlxuICAgICAgICAgICAgICAoTGRvdCAoZnVuY3Rvcl9wYXRoLCBzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlkZW50LCBmdW5jdG9yX2FyZ3MgPSBnYXRoZXJfbGFwcGx5IFtdIG1vZHVsZV9wYXRoIGluXG4gICAgICAgIGVhcHBseSB+bG9jOmFwcGx5X2xvY1xuICAgICAgICAgICh1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGlkZW50IH5sb2MgfmYpXG4gICAgICAgICAgKExpc3QubWFwIGZ1bmN0b3JfYXJncyB+ZjooZnVuIHBhdGggLT5cbiAgICAgICAgICAgICAgIHBleHBfcGFjayB+bG9jIChwbW9kX2lkZW50IH5sb2MgeyB0eHQgPSBwYXRoOyBsb2MgfSkpXG4gICAgICAgICAgQCBhcmdzKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiB+bG9jIGxvbmdpZGVudCB+ZiA9XG4gICAgdHlwZV9jb25zdHJfY29udiBsb25naWRlbnQgfmxvYyB+ZiBbXVxuXG4gIGxldCBldGFfcmVkdWNlID1cbiAgICBsZXQgcmVjIGdhdGhlcl9wYXJhbXMgYWNjIGV4cHIgPVxuICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgUGV4cF9mdW4gKGxhYmVsLCBOb25lICgqIG5vIGRlZmF1bHQgZXhwcmVzc2lvbiAqKSwgc3VicGF0LCBib2R5KTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgfSAtPiAoXG4gICAgICAgICAgbWF0Y2ggc3VicGF0IHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBOb25lKSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgdHkgKTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgKCogV2UgcmVkdWNlIFtmdW4gKHggOiB0eSkgLT4gZiB4XSBieSByZXdyaXRpbmcgaXQgWyhmIDogdHkgLT4gXyldLiAqKVxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIFNvbWUgdHkpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKSlcbiAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKVxuICAgIGluXG4gICAgbGV0IGFubm90YXRlIH5sb2MgZXhwciBwYXJhbXMgPVxuICAgICAgaWYgTGlzdC5leGlzdHMgcGFyYW1zIH5mOihmdW4gKF8sIF8sIHR5KSAtPiBPcHRpb24uaXNfc29tZSB0eSkgdGhlblxuICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBwYXJhbXMgfmluaXQ6KHB0eXBfYW55IH5sb2MpXG4gICAgICAgICAgICB+ZjooZnVuIChwYXJhbV9sYWJlbCwgcGFyYW0sIHR5X29wdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBsb2MgPSBwYXJhbS5sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0eV9vcHQgd2l0aCBOb25lIC0+IHB0eXBfYW55IH5sb2MgfCBTb21lIHR5IC0+IHR5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHB0eXBfYXJyb3cgfmxvYyBwYXJhbV9sYWJlbCB0eSBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIHBleHBfY29uc3RyYWludCB+bG9jIGV4cHIgdHlcbiAgICAgIGVsc2UgZXhwclxuICAgIGluXG4gICAgbGV0IHJlYyBnYXRoZXJfYXJncyBuIHggPVxuICAgICAgaWYgbiA9IDAgdGhlbiBTb21lICh4LCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoYm9keSwgYXJncyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggYXJncyA8PSBuIHRoZW5cbiAgICAgICAgICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKG4gLSBMaXN0Lmxlbmd0aCBhcmdzKSBib2R5IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChib2R5LCBhcmdzJykgLT4gU29tZSAoYm9keSwgYXJncycgQCBhcmdzKVxuICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBmdW4gZXhwciAtPlxuICAgICAgbGV0IHBhcmFtcywgYm9keSA9IGdhdGhlcl9wYXJhbXMgW10gZXhwciBpblxuICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKExpc3QubGVuZ3RoIHBhcmFtcykgYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSBhcyBmX2lkZW50KSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGwyIGFyZ3MgcGFyYW1zXG4gICAgICAgICAgICAgIH5mOihmdW4gKGFyZ19sYWJlbCwgYXJnKSAocGFyYW1fbGFiZWwsIHBhcmFtLCBfKSAtPlxuICAgICAgICAgICAgICAgIFBvbHkuKCA9ICkgKGFyZ19sYWJlbCA6IGFyZ19sYWJlbCkgcGFyYW1fbGFiZWxcbiAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbmFtZSc7IF8gfTtcbiAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nLiggPSApIG5hbWUnIHBhcmFtLnR4dFxuICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+IFNvbWUgKGFubm90YXRlIH5sb2M6ZXhwci5wZXhwX2xvYyBmX2lkZW50IHBhcmFtcykpXG4gICAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHIgPSBPcHRpb24udmFsdWUgKGV0YV9yZWR1Y2UgZXhwcikgfmRlZmF1bHQ6ZXhwclxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgZXhwciB+cmVjX2ZsYWcgPVxuICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICB8IFJlY3Vyc2l2ZSAtPiBleHByXG4gICAgfCBOb25yZWN1cnNpdmUgLT4gZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByXG5lbmRcblxubW9kdWxlIHR5cGUgTG9jID0gQXN0X2J1aWxkZXJfaW50Zi5Mb2NcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEFzdF9idWlsZGVyX2ludGYuU1xuXG4gIG1vZHVsZSBMYXRlc3QgOiBzaWdcbiAgICB2YWwgcHBhdF9jb25zdHJ1Y3QgOlxuICAgICAgbG9uZ2lkZW50IGxvYyAtPiAobGFiZWwgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb24gLT4gcGF0dGVyblxuXG4gICAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgICB2YXJzOmxhYmVsIGxvYyBsaXN0IC0+XG4gICAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGVuZFxuXG4gIHZhbCBwcGF0X2NvbnN0cnVjdCA6IGxvbmdpZGVudCBsb2MgLT4gcGF0dGVybiBvcHRpb24gLT4gcGF0dGVyblxuXG4gIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbmVuZFxuXG5tb2R1bGUgTWFrZSAoTG9jIDogc2lnXG4gIHZhbCBsb2MgOiBMb2NhdGlvbi50XG5lbmQpIDogUyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpIC0tLS0tKilcblxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCA9IERlZmF1bHQucHN0cl92YWx1ZV9saXN0XG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlXyB+bWFuaWZlc3QgPVxuICAgIERlZmF1bHQubm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV9cbiAgICAgIH5tYW5pZmVzdFxuXG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZWZhdWx0LkxvY2F0ZWRcblxuICAgIGxldCBsb2MgXyA9IExvYy5sb2NcbiAgICBsZXQgbWsgeCA9IG1rIH5sb2M6TG9jLmxvYyB4XG4gICAgbGV0IGxpZGVudCB4ID0gbGlkZW50IH5sb2M6TG9jLmxvYyB4XG4gIGVuZFxuXG4gIGxldCBwZXhwX3R1cGxlIGwgPSBEZWZhdWx0LnBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIGwgPSBEZWZhdWx0LnBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIGwgPSBEZWZhdWx0LnB0eXBfdHVwbGUgfmxvYyBsXG4gIGxldCBwZXhwX3R1cGxlX29wdCBsID0gRGVmYXVsdC5wZXhwX3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBwYXRfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHR5cF9wb2x5IHZhcnMgdHkgPSBEZWZhdWx0LnB0eXBfcG9seSB+bG9jIHZhcnMgdHlcbiAgbGV0IHBleHBfYXBwbHkgZSBlbCA9IERlZmF1bHQucGV4cF9hcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVpbnQgdCA9IERlZmF1bHQuZWludCB+bG9jIHRcbiAgbGV0IGVjaGFyIHQgPSBEZWZhdWx0LmVjaGFyIH5sb2MgdFxuICBsZXQgZXN0cmluZyB0ID0gRGVmYXVsdC5lc3RyaW5nIH5sb2MgdFxuICBsZXQgZWZsb2F0IHQgPSBEZWZhdWx0LmVmbG9hdCB+bG9jIHRcbiAgbGV0IGVpbnQzMiB0ID0gRGVmYXVsdC5laW50MzIgfmxvYyB0XG4gIGxldCBlaW50NjQgdCA9IERlZmF1bHQuZWludDY0IH5sb2MgdFxuICBsZXQgZW5hdGl2ZWludCB0ID0gRGVmYXVsdC5lbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgZWJvb2wgdCA9IERlZmF1bHQuZWJvb2wgfmxvYyB0XG4gIGxldCBldmFyIHQgPSBEZWZhdWx0LmV2YXIgfmxvYyB0XG4gIGxldCBwaW50IHQgPSBEZWZhdWx0LnBpbnQgfmxvYyB0XG4gIGxldCBwY2hhciB0ID0gRGVmYXVsdC5wY2hhciB+bG9jIHRcbiAgbGV0IHBzdHJpbmcgdCA9IERlZmF1bHQucHN0cmluZyB+bG9jIHRcbiAgbGV0IHBmbG9hdCB0ID0gRGVmYXVsdC5wZmxvYXQgfmxvYyB0XG4gIGxldCBwaW50MzIgdCA9IERlZmF1bHQucGludDMyIH5sb2MgdFxuICBsZXQgcGludDY0IHQgPSBEZWZhdWx0LnBpbnQ2NCB+bG9jIHRcbiAgbGV0IHBuYXRpdmVpbnQgdCA9IERlZmF1bHQucG5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IHBib29sIHQgPSBEZWZhdWx0LnBib29sIH5sb2MgdFxuICBsZXQgcHZhciB0ID0gRGVmYXVsdC5wdmFyIH5sb2MgdFxuICBsZXQgZXVuaXQgPSBEZWZhdWx0LmV1bml0IH5sb2NcbiAgbGV0IHB1bml0ID0gRGVmYXVsdC5wdW5pdCB+bG9jXG4gIGxldCBlY29uc3RydWN0ID0gRGVmYXVsdC5lY29uc3RydWN0XG4gIGxldCBwY29uc3RydWN0ID0gRGVmYXVsdC5wY29uc3RydWN0XG4gIGxldCBlYXBwbHkgZSBlbCA9IERlZmF1bHQuZWFwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWFic3RyYWN0IHBzIGUgPSBEZWZhdWx0LmVhYnN0cmFjdCB+bG9jIHBzIGVcbiAgbGV0IGVzZXF1ZW5jZSBlbCA9IERlZmF1bHQuZXNlcXVlbmNlIH5sb2MgZWxcbiAgbGV0IGVsaXN0IGwgPSBEZWZhdWx0LmVsaXN0IH5sb2MgbFxuICBsZXQgcGxpc3QgbCA9IERlZmF1bHQucGxpc3QgfmxvYyBsXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgYXJncyA9XG4gICAgRGVmYXVsdC50eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmYgYXJnc1xuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiA9XG4gICAgRGVmYXVsdC51bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPSBEZWZhdWx0LmV0YV9yZWR1Y2VcbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgPSBEZWZhdWx0LmV0YV9yZWR1Y2VfaWZfcG9zc2libGVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjID1cbiAgICBEZWZhdWx0LmV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuZW5kXG5cbmxldCBtYWtlIGxvYyA9XG4gIChtb2R1bGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGxvYyA9IGxvY1xuICBlbmQpIDogUylcbiIsIigqKiBTbWFsbCBoZWxwZXIgdG8gZmluZCBvdXQgd2hvIGlzIHRoZSBjYWxsZXIgb2YgYSBmdW5jdGlvbiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBQcmludGV4YyA9IFN0ZGxpYi5QcmludGV4Y1xuXG50eXBlIHQgPSBQcmludGV4Yy5sb2NhdGlvbiBvcHRpb25cblxubGV0IGdldCB+c2tpcCA9XG4gIGxldCBza2lwID0gX19GSUxFX18gOjogc2tpcCBpblxuICBsZXQgc3RhY2sgPSBQcmludGV4Yy5nZXRfY2FsbHN0YWNrIDE2IGluXG4gIGxldCBsZW4gPSBQcmludGV4Yy5yYXdfYmFja3RyYWNlX2xlbmd0aCBzdGFjayBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPSBsZW4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2hcbiAgICAgICAgUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCBzdGFjayBwb3NcbiAgICAgICAgfD4gUHJpbnRleGMuY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QgfD4gUHJpbnRleGMuU2xvdC5sb2NhdGlvblxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBsb2MgLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSB+c2V0OnNraXAgbG9jLmZpbGVuYW1lIHRoZW4gbG9vcCAocG9zICsgMSkgZWxzZSBTb21lIGxvY1xuICBpblxuICBsb29wIDBcbiIsIigqKiBIZWxwZXJzIHRvIHByb3ZpZGUgaGludHMgdG8gUFBYIHVzZXJzIGZvciB0eXBvcyBvciBzcGVsbGNoZWNrcy4gKilcblxub3BlbiEgSW1wb3J0XG5cbmV4Y2VwdGlvbiBDdXRvZmZfbWV0XG5cbigqIEFzIGZvdW5kIGhlcmUgaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0xldmVuc2h0ZWluX2Rpc3RhbmNlI09DYW1sICopXG5sZXQgbGV2ZW5zaHRlaW5fZGlzdGFuY2UgcyB0IGN1dG9mZiA9XG4gIGxldCBtID0gU3RyaW5nLmxlbmd0aCBzIGFuZCBuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gIGlmIGN1dG9mZiA9IDAgfHwgYWJzIChtIC0gbikgPj0gY3V0b2ZmIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgKCogZm9yIGFsbCBpIGFuZCBqLCBkLihpKS4oaikgd2lsbCBob2xkIHRoZSBMZXZlbnNodGVpbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZVxuICAgICAgIGZpcnN0IGkgY2hhcmFjdGVycyBvZiBzIGFuZCB0aGUgZmlyc3QgaiBjaGFyYWN0ZXJzIG9mIHQgKilcbiAgICBsZXQgZCA9IEFycmF5Lm1ha2VfbWF0cml4IH5kaW14OihtICsgMSkgfmRpbXk6KG4gKyAxKSAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG0gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgZmlyc3Qgc3RyaW5nIHRvIGFuIGVtcHR5IHNlY29uZCBzdHJpbmcgKilcbiAgICAgIGQuKGkpLigwKSA8LSBpXG4gICAgZG9uZTtcbiAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBzZWNvbmQgc3RyaW5nIHRvIGFuIGVtcHR5IGZpcnN0IHN0cmluZyAqKVxuICAgICAgZC4oMCkuKGopIDwtIGpcbiAgICBkb25lO1xuICAgICgqIHRoZSBtaW5pbXVtIG9mIGVhY2ggbGluZSB0b2dldGhlciB3aXRoIHRoZSBjb2x1bW4gaW5kZXggd2lsbCBiZSB1c2VkXG4gICAgICAgdG8gbm90aWNlIGN1dG9mZiBleGNlZWRpbmcgYW5kIHJldHVybiBlYXJseSBpbiB0aGF0IGNhc2UgKilcbiAgICBsZXQgbGluZV9taW4gPSByZWYgMCBpblxuICAgIGxldCBkaXN0YW5jZSA9XG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAxIHRvIG4gZG9cbiAgICAgICAgICBpZiAhbGluZV9taW4gPj0gY3V0b2ZmIC0gMSAmJiBqID49IGN1dG9mZiAtIDEgdGhlbiByYWlzZSBDdXRvZmZfbWV0O1xuICAgICAgICAgIGxpbmVfbWluIDo9IG1heCBtIG47XG4gICAgICAgICAgZm9yIGkgPSAxIHRvIG0gZG9cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgcy5baSAtIDFdIHQuW2ogLSAxXSB0aGVuIGQuKGkgLSAxKS4oaiAtIDEpXG4gICAgICAgICAgICAgICAgKCogbm8gb3BlcmF0aW9uIHJlcXVpcmVkICopXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtaW5cbiAgICAgICAgICAgICAgICAgIChkLihpIC0gMSkuKGopICsgMSkgKCogYSBkZWxldGlvbiAqKVxuICAgICAgICAgICAgICAgICAgKG1pblxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkpLihqIC0gMSkgKyAxKSAoKiBhbiBpbnNlcnRpb24gKilcbiAgICAgICAgICAgICAgICAgICAgIChkLihpIC0gMSkuKGogLSAxKSArIDEpICgqIGEgc3Vic3RpdHV0aW9uICopKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGQuKGkpLihqKSA8LSB2YWx1ZTtcbiAgICAgICAgICAgIGxpbmVfbWluIDo9IG1pbiAhbGluZV9taW4gdmFsdWVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmIGQuKG0pLihuKSA8IGN1dG9mZiB0aGVuIFNvbWUgZC4obSkuKG4pIGVsc2UgTm9uZVxuICAgICAgd2l0aCBDdXRvZmZfbWV0IC0+IE5vbmVcbiAgICBpblxuICAgIGRpc3RhbmNlXG5cbmxldCBzcGVsbGNoZWNrIG5hbWVzIG5hbWUgPVxuICBsZXQgY3V0b2ZmID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIG5hbWUgd2l0aFxuICAgIHwgMSB8IDIgLT4gMFxuICAgIHwgMyB8IDQgLT4gMVxuICAgIHwgNSB8IDYgLT4gMlxuICAgIHwgXyAtPiAzXG4gIGluXG4gIGxldCBfLCBzdWdnZXN0aW9ucyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgbmFtZXMgfmluaXQ6KEludC5tYXhfaW50LCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoKGJlc3RfZGlzdGFuY2UsIG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpIGFzIGFjYykgcmVnaXN0ZXJlZF9uYW1lIC0+XG4gICAgICAgIG1hdGNoIGxldmVuc2h0ZWluX2Rpc3RhbmNlIG5hbWUgcmVnaXN0ZXJlZF9uYW1lIGN1dG9mZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIGRpc3QgLT5cbiAgICAgICAgICAgIGlmIGRpc3QgPCBiZXN0X2Rpc3RhbmNlIHRoZW4gKGRpc3QsIFsgcmVnaXN0ZXJlZF9uYW1lIF0pXG4gICAgICAgICAgICBlbHNlIGlmIGRpc3QgPiBiZXN0X2Rpc3RhbmNlIHRoZW4gYWNjXG4gICAgICAgICAgICBlbHNlIChkaXN0LCByZWdpc3RlcmVkX25hbWUgOjogbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkpXG4gIGluXG4gIG1hdGNoIExpc3QucmV2IHN1Z2dlc3Rpb25zIHw+IExpc3QuZmlsdGVyIH5mOihTdHJpbmcuKCA8PiApIG5hbWUpIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgbGFzdCA6OiByZXZfcmVzdCAtPlxuICAgICAgU29tZVxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJIaW50OiBEaWQgeW91IG1lYW4gJXMlcyVzP1wiXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0LnJldiByZXZfcmVzdCkpXG4gICAgICAgICAgIChpZiBMaXN0LmlzX2VtcHR5IHJldl9yZXN0IHRoZW4gXCJcIiBlbHNlIFwiIG9yIFwiKVxuICAgICAgICAgICBsYXN0KVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphY2MgfmYgPVxuICBsZXQgcmVjIGNvbGxhcHNlX2FmdGVyX2F0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSBwYXJ0KSkgJiYgQ2hhci5lcXVhbCBwYXJ0LlswXSAnQCcgdGhlblxuICAgICAgICAgIFsgU3RyaW5nLmNvbmNhdCAoU3RyaW5nLmRyb3BfcHJlZml4IHBhcnQgMSA6OiBwYXJ0cykgfnNlcDpcIi5cIiBdXG4gICAgICAgIGVsc2UgcGFydCA6OiBjb2xsYXBzZV9hZnRlcl9hdCBwYXJ0c1xuICBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHBhcnRzID1cbiAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgbG9vcCAoZiAoU3RyaW5nLmNvbmNhdCAocGFydCA6OiBwYXJ0cykgfnNlcDpcIi5cIikgYWNjKSBwYXJ0c1xuICBpblxuICBTdHJpbmcuc3BsaXRfb25fY2hhciBuYW1lIH5zZXA6Jy4nIHw+IGNvbGxhcHNlX2FmdGVyX2F0IHw+IGxvb3AgYWNjXG5cbmxldCBkb3Rfc3VmZml4ZXMgbmFtZSA9XG4gIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6W10gfmY6KGZ1biB4IGFjYyAtPiB4IDo6IGFjYylcblxubGV0IHNwbGl0X3BhdGggPVxuICBsZXQgcmVjIGxvb3AgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBhbmQgYWZ0ZXJfZG90IHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ0EnIC4uICdaJyAtPiAoU3RyaW5nLnByZWZpeCBzIChpIC0gMSksIFNvbWUgKFN0cmluZy5kcm9wX3ByZWZpeCBzIGkpKVxuICAgICAgfCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKVxuICAgICAgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGluXG4gIGZ1biBzIC0+IGxvb3AgcyAwXG5cbm1vZHVsZSBQYXR0ZXJuID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgbmFtZSA6IHN0cmluZzsgZG90X3N1ZmZpeGVzIDogU3RyaW5nLlNldC50IH1cblxuICBsZXQgbWFrZSBuYW1lID1cbiAgICB7IG5hbWU7IGRvdF9zdWZmaXhlcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoZG90X3N1ZmZpeGVzIG5hbWUpIH1cblxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBtYXRjaGVzIHQgbWF0Y2hlZCA9IFN0cmluZy5TZXQubWVtIG1hdGNoZWQgdC5kb3Rfc3VmZml4ZXNcbmVuZFxuXG4oKiBPbiB0aGUgbmFtZXNwYWNlIFwiYS5OQU1FU1BBQ0VcIiwgcmV0dXJuIHRoZSBwYWlyIChcImFcIiwgTkFNRVNQQUNFKSAqKVxubGV0IHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lID1cbiAgbWF0Y2ggU3RyaW5nLmluZGV4X29wdCBuYW1lICcuJyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggbmFtZSBpblxuICAgICAgbGV0IGJlZm9yZV9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczowIH5sZW46aSBpblxuICAgICAgbGV0IGFmdGVyX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOihpICsgMSkgfmxlbjoobiAtIGkgLSAxKSBpblxuICAgICAgU29tZSAoYmVmb3JlX2RvdCwgYWZ0ZXJfZG90KVxuXG5tb2R1bGUgQWxsb3dsaXN0ZWQgPSBzdHJ1Y3RcbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGFzIHdlbGwgYXMgYWxsIHRoZWlyIGRvdCBzdWZmaXhlcy5cblxuICAgICBTaW5jZSB0aGVzZSBhdHRyaWJ1dGVzIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG5cbiAgICAgU2FkbHksIHRoZSBjb21waWxlciBzaWxlbnRseSBpZ25vcmVzIHRoZW0gaWYgdGhleSBhcmUgbWlzcGxhY2VkLi4uXG4gICopXG4gIGxldCBjcmVhdGVfc2V0IGZ1bGx5X3F1YWxpZmllZF9uYW1lcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIH5mOihmdW4gYWNjIG5hbWUgLT5cbiAgICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphY2MgfmY6KGZ1biB4IGFjYyAtPiBTdHJpbmcuU2V0LmFkZCB4IGFjYykpXG4gICAgICB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IGZ1bGx5X3F1YWxpZmllZF9uYW1lc1xuXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBjcmVhdGVfc2V0XG4gICAgICBbXG4gICAgICAgIFwib2NhbWwuYWxlcnRcIjtcbiAgICAgICAgXCJvY2FtbC5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkX211dGFibGVcIjtcbiAgICAgICAgXCJvY2FtbC5kb2NcIjtcbiAgICAgICAgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIjtcbiAgICAgICAgXCJvY2FtbC5pbW1lZGlhdGVcIjtcbiAgICAgICAgXCJvY2FtbC5pbW1lZGlhdGU2NFwiO1xuICAgICAgICBcIm9jYW1sLmlubGluZVwiO1xuICAgICAgICBcIm9jYW1sLmlubGluZWRcIjtcbiAgICAgICAgXCJvY2FtbC5sb2NhbFwiO1xuICAgICAgICBcIm9jYW1sLm5vYWxsb2NcIjtcbiAgICAgICAgXCJvY2FtbC5wcHdhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC5yZW1vdmVfYWxpYXNlc1wiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlZFwiO1xuICAgICAgICBcIm9jYW1sLnRhaWxjYWxsXCI7XG4gICAgICAgIFwib2NhbWwudGV4dFwiO1xuICAgICAgICBcIm9jYW1sLnVuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnJvbGxcIjtcbiAgICAgICAgXCJvY2FtbC51bnJvbGxlZFwiO1xuICAgICAgICBcIm9jYW1sLnVudGFnZ2VkXCI7XG4gICAgICAgIFwib2NhbWwud2Fybl9vbl9saXRlcmFsX3BhdHRlcm5cIjtcbiAgICAgICAgXCJvY2FtbC53YXJuZXJyb3JcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwudG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgICAgXCJ0b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgXVxuXG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBleHRlbnNpb25zLlxuXG4gICAgIFNpbmNlIHRoZXNlIGV4dGVuc2lvbnMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cbiAgKilcbiAgbGV0IGV4dGVuc2lvbnMgPSBjcmVhdGVfc2V0IFsgXCJvY2FtbC5lcnJvclwiOyBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiIF1cblxuICBsZXQgaXNfYWxsb3dsaXN0ZWQgfmtpbmQgbmFtZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQXR0cmlidXRlIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgYXR0cmlidXRlc1xuICAgIHwgYEV4dGVuc2lvbiAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGV4dGVuc2lvbnNcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBhdHRyaWJ1dGVzXG4gIGxldCBnZXRfZXh0ZW5zaW9uX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGV4dGVuc2lvbnNcbmVuZFxuXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IHN0cnVjdFxuICB0eXBlIHJlc2VydmVkID0gKHN0cmluZywgc3ViX25hbWVzcGFjZXMpIEhhc2h0YmwudFxuICBhbmQgc3ViX25hbWVzcGFjZXMgPSBBbGwgfCBTdWJfbmFtZXNwYWNlcyBvZiByZXNlcnZlZFxuXG4gICgqIElmIFt0YmxdIGNvbnRhaW5zIGEgbWFwcGluZyBmcm9tIFwieFwiIHRvIFtBbGxdLCB0aGVuIFwieFwiIGFuZCBhbGwgcGF0aHMgdGhhdFxuICAgKiBzdGFydCB3aXRoIFwieC5cIiBhcmUgcmVzZXJ2ZWQgd2l0aCByZXNwZWN0IHRvIFt0YmxdXG4gICAqXG4gICAqIElmIFt0YmxdIGNvbnRhaW5zIGEgbWFwcGluZyBmcm9tIFwieFwiIHRvIFtTdWJfbmFtZXNwYWNlcyB0YmwnXSwgYW5kIFAgaXNcbiAgICogcmVzZXJ2ZWQgd2l0aCByZXNwZWN0IHRvIFt0YmwnXSwgdGhlbiBhbGwgcGF0aHMgXCJ4LlBcIiBhcmUgcmVzZXJ2ZWQgd2l0aFxuICAgKiByZXNwZWN0IHRvIFt0YmxdLlxuICAgKilcbiAgbGV0IGNyZWF0ZV9yZXNlcnZlZCAoKSA6IHJlc2VydmVkID0gSGFzaHRibC5jcmVhdGUgMTZcblxuICBsZXQgcmVjIHJlc2VydmUgbnMgdGJsID1cbiAgICBtYXRjaCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBIYXNodGJsLmFkZF9leG4gdGJsIH5rZXk6bnMgfmRhdGE6QWxsXG4gICAgfCBTb21lIChvdXRlcl9ucywgcmVzdF9ucykgLT4gKFxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdGJsIG91dGVyX25zIH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgU3ViX25hbWVzcGFjZXMgKGNyZWF0ZV9yZXNlcnZlZCAoKSkpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTdWJfbmFtZXNwYWNlcyByZXN0X3RibCAtPiByZXNlcnZlIHJlc3RfbnMgcmVzdF90YmxcbiAgICAgICAgfCBBbGwgLT4gKCkpXG5cbiAgbGV0IHJlYyBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsID1cbiAgICBtYXRjaCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSB3aXRoXG4gICAgfCBTb21lIChucywgcmVzdCkgLT4gKFxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHRibCBucyB3aXRoXG4gICAgICAgIHwgU29tZSAoU3ViX25hbWVzcGFjZXMgcmVzdF90YmwpIC0+XG4gICAgICAgICAgICBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIHJlc3QgcmVzdF90YmxcbiAgICAgICAgfCBTb21lIEFsbCAtPiB0cnVlXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZSlcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHRibCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIEFsbCAtPiB0cnVlXG4gICAgICAgIHwgU29tZSAoU3ViX25hbWVzcGFjZXMgXykgfCBOb25lIC0+IGZhbHNlKVxuXG4gIGxldCB0YmwgPSBjcmVhdGVfcmVzZXJ2ZWQgKClcbiAgbGV0IHJlc2VydmUgbnMgPSByZXNlcnZlIG5zIHRibFxuICBsZXQgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lID0gaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibFxuICBsZXQgKCkgPSByZXNlcnZlIFwibWVybGluXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlYXNvblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWZtdFwiICgqIHJlYXNvbiAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibnNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVzXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1ldGFvY2FtbFwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJvY2FtbGZvcm1hdFwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJwcHhsaWIubWlncmF0aW9uXCJcblxuICBsZXQgY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWUgPVxuICAgIGxldCBraW5kLCBsaXN0ID1cbiAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgfCBgQXR0cmlidXRlIC0+IChcImF0dHJpYnV0ZVwiLCBBbGxvd2xpc3RlZC5hdHRyaWJ1dGVzKVxuICAgICAgfCBgRXh0ZW5zaW9uIC0+IChcImV4dGVuc2lvblwiLCBBbGxvd2xpc3RlZC5leHRlbnNpb25zKVxuICAgIGluXG4gICAgaWYgU3RyaW5nLlNldC5tZW0gbmFtZSBsaXN0IHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICBcIkNhbm5vdCByZWdpc3RlciAlcyB3aXRoIG5hbWUgJyVzJyBhcyBpdCBtYXRjaGVzIGFuICVzIHJlc2VydmVkIGJ5IHRoZSBcXFxuICAgICAgICAgY29tcGlsZXJcIlxuICAgICAgICBraW5kIG5hbWUga2luZFxuICAgIGVsc2UgaWYgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICBcIkNhbm5vdCByZWdpc3RlciAlcyB3aXRoIG5hbWUgJyVzJyBhcyBpdHMgbmFtZXNwYWNlIGlzIG1hcmtlZCBhcyBcXFxuICAgICAgICAgcmVzZXJ2ZWRcIlxuICAgICAgICBraW5kIG5hbWVcbmVuZFxuXG5sZXQgaWdub3JlX2NoZWNrcyBuYW1lID1cbiAgUmVzZXJ2ZWRfbmFtZXNwYWNlcy5pc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWVcbiAgfHwgU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6XCJfXCJcblxubW9kdWxlIFJlZ2lzdHJhciA9IHN0cnVjdFxuICB0eXBlIGVsZW1lbnQgPSB7IGZ1bGx5X3F1YWxpZmllZF9uYW1lIDogc3RyaW5nOyBkZWNsYXJlZF9hdCA6IENhbGxlcl9pZC50IH1cbiAgdHlwZSBhbGxfZm9yX2NvbnRleHQgPSB7IG11dGFibGUgYWxsIDogZWxlbWVudCBTdHJpbmcuTWFwLnQgfVxuXG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBhbGxfYnlfY29udGV4dCA6ICgnYSwgYWxsX2Zvcl9jb250ZXh0KSBIYXNodGJsLnQ7XG4gICAgc2tpcCA6IHN0cmluZyBsaXN0O1xuICAgIGtpbmQgOiBzdHJpbmc7XG4gICAgc3RyaW5nX29mX2NvbnRleHQgOiAnYSAtPiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+a2luZCB+Y3VycmVudF9maWxlIH5zdHJpbmdfb2ZfY29udGV4dCA9XG4gICAge1xuICAgICAgYWxsX2J5X2NvbnRleHQgPSBIYXNodGJsLmNyZWF0ZSAxNjtcbiAgICAgIHNraXAgPSBbIGN1cnJlbnRfZmlsZTsgX19GSUxFX18gXTtcbiAgICAgIGtpbmQ7XG4gICAgICBzdHJpbmdfb2ZfY29udGV4dDtcbiAgICB9XG5cbiAgbGV0IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0ID1cbiAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuYWxsX2J5X2NvbnRleHQgY29udGV4dCB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgIHsgYWxsID0gU3RyaW5nLk1hcC5lbXB0eSB9KVxuXG4gIGxldCBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgbmFtZSA9XG4gICAgbWF0Y2ggU3RyaW5nLk1hcC5maW5kX29wdCBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlIC0+XG4gICAgICAgIGxldCBkZWNsYXJlZF9hdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgKGxvYyA6IFN0ZGxpYi5QcmludGV4Yy5sb2NhdGlvbikgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCIgZGVjbGFyZWQgYXQgJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb250ZXh0ID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIHMgLT4gXCIgb24gXCIgXiBzIF4gXCJzXCJcbiAgICAgICAgaW5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgICAgXCJTb21lIHBweC1lcyB0cmllZCB0byByZWdpc3RlciBjb25mbGljdGluZyB0cmFuc2Zvcm1hdGlvbnM6ICVzIFxcXG4gICAgICAgICAgICclcyclcyVzIG1hdGNoZXMgJXMgJyVzJyVzXCJcbiAgICAgICAgICAoU3RyaW5nLmNhcGl0YWxpemVfYXNjaWkgdC5raW5kKVxuICAgICAgICAgIG5hbWUgY29udGV4dCAoZGVjbGFyZWRfYXQgY2FsbGVyKSB0LmtpbmQgZS5mdWxseV9xdWFsaWZpZWRfbmFtZVxuICAgICAgICAgIChkZWNsYXJlZF9hdCBlLmRlY2xhcmVkX2F0KVxuXG4gIGxldCBjaGVja19jb2xsaXNpb25zIHQgY29udGV4dCBuYW1lID1cbiAgICBsZXQgY2FsbGVyID0gQ2FsbGVyX2lkLmdldCB+c2tpcDp0LnNraXAgaW5cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgbmFtZVxuXG4gIGxldCByZWdpc3RlciB+a2luZCB0IGNvbnRleHQgbmFtZSA9XG4gICAgUmVzZXJ2ZWRfbmFtZXNwYWNlcy5jaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZTtcbiAgICBsZXQgY2FsbGVyID0gQ2FsbGVyX2lkLmdldCB+c2tpcDp0LnNraXAgaW5cbiAgICBsZXQgYWxsID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dDphbGwgdCBjb250ZXh0IG5hbWU7XG4gICAgbGV0IHQgPSB7IGZ1bGx5X3F1YWxpZmllZF9uYW1lID0gbmFtZTsgZGVjbGFyZWRfYXQgPSBjYWxsZXIgfSBpblxuICAgIGFsbC5hbGwgPC1cbiAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWxsLmFsbCB+ZjooZnVuIG5hbWUgYWNjIC0+XG4gICAgICAgICAgU3RyaW5nLk1hcC5hZGQgbmFtZSB0IGFjYylcblxuICBsZXQgc3BlbGxjaGVjayB0IGNvbnRleHQgPyhhbGxvd2xpc3QgPSBbXSkgbmFtZSA9XG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgbGV0IGFsbCA9XG4gICAgICBTdHJpbmcuTWFwLmZvbGQgKGZ1biBrZXkgXyBhY2MgLT4ga2V5IDo6IGFjYykgYWxsX2Zvcl9jb250ZXh0LmFsbCBbXVxuICAgIGluXG4gICAgbWF0Y2ggU3BlbGxjaGVjay5zcGVsbGNoZWNrIChhbGwgQCBhbGxvd2xpc3QpIG5hbWUgd2l0aFxuICAgIHwgU29tZSBfIGFzIHggLT4geFxuICAgIHwgTm9uZSB3aGVuIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCAtPiBOb25lXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbGV0IG90aGVyX2NvbnRleHRzID1cbiAgICAgICAgICBIYXNodGJsLmZvbGRcbiAgICAgICAgICAgIChmdW4gY3R4IGFsbF9mcm9tX2NvbnRleHQgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgUG9seS4oIDw+ICkgY29udGV4dCBjdHhcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mcm9tX2NvbnRleHQuYWxsXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGN0eCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+IChzIF4gXCJzXCIpIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlIGFjYylcbiAgICAgICAgICAgIHQuYWxsX2J5X2NvbnRleHQgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBwX3RleHQgPSBGb3JtYXQucHBfcHJpbnRfdGV4dCBpblxuICAgICAgICBsZXQgY3VycmVudF9jb250ZXh0IHBwZiA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICBsZXQgYV9vcl9hbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcy5bMF0gd2l0aFxuICAgICAgICAgICAgICAgIHwgJ2EnIHwgJ2UnIHwgJ2knIHwgJ28nIHwgJ3UnIHwgJ3knIC0+IFwiYW5cIlxuICAgICAgICAgICAgICAgIHwgXyAtPiBcImFcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgICAgICAgICBcIkAgYnV0QCBpc0AgdXNlZEAgaGVyZUAgaW5AIHRoZUAgY29udGV4dEAgb2ZAICVzQCAlYVwiIGFfb3JfYW5cbiAgICAgICAgICAgICAgICBwcF90ZXh0IHNcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LnNvcnQgfmNtcDooZnVuIHggeSAtPiAtU3RyaW5nLmNvbXBhcmUgeCB5KSBvdGhlcl9jb250ZXh0c1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICB8IFsgYyBdIC0+XG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lIHBwX3RleHQgY1xuICAgICAgICAgICAgICAgICBjdXJyZW50X2NvbnRleHQpXG4gICAgICAgIHwgbGFzdCA6OiByZXZfb3RoZXJzIC0+XG4gICAgICAgICAgICBsZXQgb3RoZXJzID0gTGlzdC5yZXYgcmV2X290aGVycyBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYUAgYW5kQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZVxuICAgICAgICAgICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgcHBfdGV4dCB+cHBfc2VwOihmdW4gcHBmICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiLEAgXCIpKVxuICAgICAgICAgICAgICAgICBvdGhlcnMgcHBfdGV4dCBsYXN0IGN1cnJlbnRfY29udGV4dCkpXG5cbiAgbW9kdWxlIEVycm9yID0gc3RydWN0XG4gICAgKCogVE9ETzogaGludCBzcGVsbGluZyBlcnJvcnMgcmVnYXJkaW5nIHJlc2VydmVkIG5hbWVzcGFjZXMgbmFtZXMgYW5kIGFsbG93bGlzdGVkXG4gICAgICAgbmFtZXMgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3B0aW9uYWwgW2FsbG93bGlzdF0gcGFyYW1ldGVyLiAqKVxuICAgIGxldCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgIChmdW4gbXNnIC0+XG4gICAgICAgICAgbWF0Y2ggc3BlbGxjaGVjayB0IGNvbnRleHQgbmFtZS50eHQgP2FsbG93bGlzdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzXCIgbXNnXG4gICAgICAgICAgfCBTb21lIHMgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXMuXFxuJXNcIiBtc2cgcylcbiAgICAgICAgZm10IG5hbWUudHh0XG5cbiAgICBsZXQgcmFpc2VfZXJyb3JmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IucmFpc2UgQEAgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgbmFtZVxuXG4gICAgbGV0IGVycm9yX2V4dGVuc2lvbmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gQEAgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgbmFtZVxuICBlbmRcblxuICBsZXQgcmFpc2VfZXJyb3JmID0gRXJyb3IucmFpc2VfZXJyb3JmXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5tb2R1bGUgQnVmZmVyID0gU3RkbGliLkJ1ZmZlclxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGxpZGVudCB4ID0gTG9uZ2lkZW50LkxpZGVudCB4XG5cbmxldCBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCA9XG4gIGxldCBsb2MgPSB0ZC5wdHlwZV9uYW1lLmxvYyBpblxuICBwdHlwX2NvbnN0ciB+bG9jXG4gICAgKExvY2F0ZWQubWFwIGxpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgIChMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6ZnN0KVxuXG5sZXQgc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggPVxuICBsZXQgY2hvcCBuIH5vcl9tb3JlIHN0cmluZyBwb3MgZiA9XG4gICAgbGV0IHRhcmdldCA9ICFwb3MgLSBuIGluXG4gICAgd2hpbGUgIXBvcyA+IDAgJiYgKG9yX21vcmUgfHwgIXBvcyA+IHRhcmdldCkgJiYgZiBzdHJpbmcuWyFwb3MgLSAxXSBkb1xuICAgICAgcG9zIDo9ICFwb3MgLSAxXG4gICAgZG9uZTtcbiAgICAhcG9zIDw9IHRhcmdldFxuICBpblxuICBmdW4gc3RyaW5nIC0+XG4gICAgbGV0IHBvcyA9IHJlZiAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgaWZcbiAgICAgIGNob3AgMSB+b3JfbW9yZTpmYWxzZSBzdHJpbmcgcG9zIChDaGFyLmVxdWFsICdfJylcbiAgICAgICYmIGNob3AgMyB+b3JfbW9yZTp0cnVlIHN0cmluZyBwb3MgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIGNob3AgMiB+b3JfbW9yZTpmYWxzZSBzdHJpbmcgcG9zIChDaGFyLmVxdWFsICdfJylcbiAgICB0aGVuIFN0cmluZy5wcmVmaXggc3RyaW5nICFwb3NcbiAgICBlbHNlIHN0cmluZ1xuXG5sZXQgZ2VuX3N5bWJvbCA9XG4gIGxldCBjbnQgPSByZWYgMCBpblxuICBmdW4gPyhwcmVmaXggPSBcIl94XCIpICgpIC0+XG4gICAgY250IDo9ICFjbnQgKyAxO1xuICAgIGxldCBwcmVmaXggPSBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCBwcmVmaXggaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzX18lMDNpX1wiIHByZWZpeCAhY250XG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6XG4gICAgKHR5cGVfZGVjbGFyYXRpb24sIF8pIHJlc3VsdCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgcHJlZml4X3N0cmluZyBpID1cbiAgICAoKiBhLCBiLCAuLi4sIHksIHosIGFhLCBiYiwgLi4uICopXG4gICAgU3RyaW5nLm1ha2UgKChpIC8gMjYpICsgMSkgKENoYXIuY2hyIChDaGFyLmNvZGUgJ2EnICsgKGkgbW9kIDI2KSkpXG4gIGluXG4gIGxldCBuYW1lX3BhcmFtIGkgKHRwLCB2YXJpYW5jZSkgPVxuICAgIChtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hbnkgLT4gT2sgKFB0eXBfdmFyIChnZW5fc3ltYm9sIH5wcmVmaXg6KHByZWZpeF9zdHJpbmcgaSkgKCkpKVxuICAgIHwgUHR5cF92YXIgXyBhcyB2IC0+IE9rIHZcbiAgICB8IF8gLT5cbiAgICAgICAgRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzp0cC5wdHlwX2xvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIpKVxuICAgID4+fCBmdW4gcHR5cF9kZXNjIC0+ICh7IHRwIHdpdGggcHR5cF9kZXNjIH0sIHZhcmlhbmNlKVxuICBpblxuICBsZXQgcHR5cGVfcGFyYW1zLCBlcnJvcnMgPVxuICAgIHRkLnB0eXBlX3BhcmFtcyB8PiBMaXN0Lm1hcGkgfmY6bmFtZV9wYXJhbVxuICAgIHw+IExpc3QucGFydGl0aW9uX21hcCAoZnVuY3Rpb25cbiAgICAgICAgIHwgT2sgbyAtPiBFaXRoZXIuTGVmdCBvXG4gICAgICAgICB8IEVycm9yIGUgLT4gRWl0aGVyLlJpZ2h0IGUpXG4gIGluXG4gIG1hdGNoIGVycm9ycyB3aXRoIFtdIC0+IE9rIHsgdGQgd2l0aCBwdHlwZV9wYXJhbXMgfSB8IHQgOjogcSAtPiBFcnJvciAodCwgcSlcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgbWF0Y2ggbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgdGQgd2l0aFxuICB8IE9rIHJlcyAtPiByZXNcbiAgfCBFcnJvciAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mID1cbiAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICBsZXQgcmVzdWx0X3R5cGUgPVxuICAgIGYgfmxvYzp0ZC5wdHlwZV9uYW1lLmxvYyAoY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQpXG4gIGluXG4gIExpc3QuZm9sZF9yaWdodCB0ZC5wdHlwZV9wYXJhbXMgfmluaXQ6cmVzdWx0X3R5cGVcbiAgICB+ZjooZnVuICh0cCwgX3ZhcmlhbmNlKSBhY2MgLT5cbiAgICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgICAgcHR5cF9hcnJvdyB+bG9jIE5vbGFiZWwgKGYgfmxvYyB0cCkgYWNjKVxuXG5sZXQgc3RyaW5nX29mX2NvcmVfdHlwZSBjdCA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIFBwcmludGFzdC5jb3JlX3R5cGUgcHBmIGN0O1xuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBnZXRfdHlwZV9wYXJhbV9uYW1lX3JlcyAodHksIF8pID1cbiAgbGV0IGxvYyA9IHR5LnB0eXBfbG9jIGluXG4gIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gIHwgUHR5cF92YXIgbmFtZSAtPiBPayAoTG9jYXRlZC5tayB+bG9jIG5hbWUpXG4gIHwgXyAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIiwgW10pXG5cbmxldCBnZXRfdHlwZV9wYXJhbV9uYW1lIHQgPVxuICBtYXRjaCBnZXRfdHlwZV9wYXJhbV9uYW1lX3JlcyB0IHdpdGhcbiAgfCBPayBlIC0+IGVcbiAgfCBFcnJvciAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxuZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlXG5cbmNsYXNzIHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuICAgIHZhbCB0eXBlX25hbWVzIDogc3RyaW5nIGxpc3QgPSBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dClcbiAgICBtZXRob2QgcmV0dXJuX3RydWUgKCkgPSByYWlzZV9ub3RyYWNlIFR5cGVfaXNfcmVjdXJzaXZlXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBjdHlwZSA9XG4gICAgICBtYXRjaCBjdHlwZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2Fycm93IF8gLT4gKClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBpZDsgXyB9LCBfKVxuICAgICAgICB3aGVuIExpc3QubWVtIH5zZXQ6dHlwZV9uYW1lcyBpZCAtPlxuICAgICAgICAgIHNlbGYjcmV0dXJuX3RydWUgKClcbiAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgY3R5cGVcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgPVxuICAgICAgKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGNkLnBjZF9yZXMgKilcbiAgICAgIG1hdGNoIGNkLnBjZF9hcmdzIHdpdGhcbiAgICAgIHwgUGNzdHJfdHVwbGUgYXJncyAtPiBMaXN0Lml0ZXIgYXJncyB+ZjpzZWxmI2NvcmVfdHlwZVxuICAgICAgfCBQY3N0cl9yZWNvcmQgZmllbGRzIC0+IExpc3QuaXRlciBmaWVsZHMgfmY6c2VsZiNsYWJlbF9kZWNsYXJhdGlvblxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGVzIF8gPSAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggYXR0cmlidXRlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKClcblxuICAgIG1ldGhvZCBnbyAoKSA9XG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0Lml0ZXIgdGRzIH5mOnNlbGYjdHlwZV9kZWNsYXJhdGlvbiB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmUgLT4gUmVjdXJzaXZlXG4gICAgICAgICAgfCAoKSAtPiBOb25yZWN1cnNpdmUpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPSAobmV3IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcykjZ28gKClcbmxldCByZWMgbGFzdCB4IGwgPSBtYXRjaCBsIHdpdGggW10gLT4geCB8IHggOjogbCAtPiBsYXN0IHggbFxuXG5sZXQgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkID1cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0ciBbXSAtPiBuYW1lLmxvY1xuICB8IFBTdHIgKHggOjogbCkgLT4geyB4LnBzdHJfbG9jIHdpdGggbG9jX2VuZCA9IChsYXN0IHggbCkucHN0cl9sb2MubG9jX2VuZCB9XG4gIHwgUFNpZyBbXSAtPiBuYW1lLmxvY1xuICB8IFBTaWcgKHggOjogbCkgLT4geyB4LnBzaWdfbG9jIHdpdGggbG9jX2VuZCA9IChsYXN0IHggbCkucHNpZ19sb2MubG9jX2VuZCB9XG4gIHwgUFR5cCB0IC0+IHQucHR5cF9sb2NcbiAgfCBQUGF0ICh4LCBOb25lKSAtPiB4LnBwYXRfbG9jXG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPiB7IHgucHBhdF9sb2Mgd2l0aCBsb2NfZW5kID0gZS5wZXhwX2xvYy5sb2NfZW5kIH1cblxubGV0IGxvY19vZl9wYXlsb2FkIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZFxuXG5sZXQgbG9jX29mX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gICgqIFRPRE86IGZpeCB0aGlzIGluIHRoZSBjb21waWxlciwgYW5kIG1vdmUgdGhlIGxvZ2ljIHRvIG9tcCB3aGVuIGNvbnZlcnRpbmdcbiAgICAgZnJvbSBvbGRlciBhc3RzLiAqKVxuICAoKiBcIm9jYW1sLmRvY1wiIGF0dHJpYnV0ZXMgYXJlIGdlbmVyYXRlZCB3aXRoIFtMb2NhdGlvbi5ub25lXSwgd2hpY2ggaXMgbm90IGhlbHBmdWwgZm9yXG4gICAgIGVycm9yIG1lc3NhZ2VzLiAqKVxuICBpZiBQb2x5LiggPSApIGF0dHJfbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuXG4gICAgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZFxuICBlbHNlXG4gICAge1xuICAgICAgYXR0cl9uYW1lLmxvYyB3aXRoXG4gICAgICBsb2NfZW5kID0gKGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWQpLmxvY19lbmQ7XG4gICAgfVxuXG5sZXQgbG9jX29mX2V4dGVuc2lvbiAobmFtZSwgcGF5bG9hZCkgPVxuICBpZiBQb2x5LiggPSApIG5hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlbiBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWRcbiAgZWxzZVxuICAgIHsgbmFtZS5sb2Mgd2l0aCBsb2NfZW5kID0gKGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCkubG9jX2VuZCB9XG5cbmxldCBjdXJyeV9hcHBsaWNhdGlvbnMgZXhwciA9XG4gIGxldCBvcGVuIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2FwcGx5IChmLCBvcmlnX2ZvcndhcmRfYXJncykgLT5cbiAgICAgIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGZcbiAgICAgICAgfCBsYXN0X2FyZyA6OiByZXZfZnJvbnRfYXJncyAtPlxuICAgICAgICAgICAgcGV4cF9hcHBseSB+bG9jIChsb29wIHJldl9mcm9udF9hcmdzKSBbIGxhc3RfYXJnIF1cbiAgICAgIGluXG4gICAgICBsb29wIChMaXN0LnJldiBvcmlnX2ZvcndhcmRfYXJncylcbiAgfCBfIC0+IGV4cHJcblxubGV0IGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgTGlzdC5maWx0ZXJfbWFwIH5mOihmdW5jdGlvblxuICAgIHwgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX2xvYyA9IF87IGF0dHJfcGF5bG9hZCA9IF8gfVxuICAgICAgd2hlbiBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS5Mb2NhdGlvbi50eHQgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgYXR0ciAtPlxuICAgICAgICBsZXQgbG9jID0gbG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICAgIFNvbWUgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZXMgbm90IGFsbG93ZWQgaGVyZVwiKSlcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZFxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgYWNjID0gYXR0cmlidXRlc19lcnJvcnMgWyBhIF0gQCBhY2NcbiAgZW5kXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlcyBsID1cbiAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzX2luID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhID0gYXNzZXJ0X25vX2F0dHJpYnV0ZXMgWyBhIF1cbiAgZW5kXG5cbmxldCBhdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyA9XG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IGxvYzsgdHh0ID0gXCJvY2FtbC5wcHdhcm5pbmdcIiB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIHMpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgPVxuICBsZXQgcmVjIGNoZWNrID0gZnVuY3Rpb25cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IF87IF8gfSAtPiBgRGVmaW5pdGVseVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzICh0eXAsIF8pOyBfIH0gLT4gY2hlY2sgdHlwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIF87IF8gfSAtPiBgTWF5YmVcbiAgICB8IF8gLT4gYFN1cmVseV9ub3RcbiAgICAoKiBUeXBlIHZhcnMgZ28gaGVyZSBldmVuIHRob3VnaCB0aGV5IGNvdWxkIGJlIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMsIGhvd2V2ZXIgd2UgZG9uJ3QgaGFuZGxlIGl0IGlmIHRoZXkgZ2V0IHN1YnN0aXR1dGVkXG4gICAgICAgYnkgYSBwb2x5bW9ycGhpYyB2YXJpYW50IHRoYXQgaXMgdGhlbiBpbmNsdWRlZC4gKilcbiAgaW5cbiAgZnVuIHRkIH5zaWdfIC0+XG4gICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9yZWNvcmQgXyB8IFB0eXBlX29wZW4gLT4gYFN1cmVseV9ub3RcbiAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChcbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaWYgc2lnXyB0aGVuIGBNYXliZSBlbHNlIGBTdXJlbHlfbm90XG4gICAgICAgIHwgU29tZSB0eXAgLT4gY2hlY2sgdHlwKVxuXG5sZXQgbWtfbmFtZWRfc2lnIH5sb2MgfnNnX25hbWUgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50ID0gZnVuY3Rpb25cbiAgfCBbIHRkIF1cbiAgICB3aGVuIFN0cmluZy5lcXVhbCB0ZC5wdHlwZV9uYW1lLnR4dCBcInRcIiAmJiBMaXN0LmlzX2VtcHR5IHRkLnB0eXBlX2NzdHJzIC0+XG4gICAgICBpZlxuICAgICAgICAobm90IGhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50KVxuICAgICAgICAmJiBQb2x5LiggPSApIChpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOnRydWUpIGBEZWZpbml0ZWx5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGFyaXR5ID0gTGlzdC5sZW5ndGggdGQucHR5cGVfcGFyYW1zIGluXG4gICAgICAgIGlmIGFyaXR5ID49IDQgdGhlbiBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbXR5ID1cbiAgICAgICAgICAgIGlmIGFyaXR5ID0gMCB0aGVuIHNnX25hbWUgZWxzZSBQcmludGYuc3ByaW50ZiBcIiVzJWRcIiBzZ19uYW1lIGFyaXR5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgICAgICAgbGV0IGZvcl9zdWJzdCA9XG4gICAgICAgICAgICBBc3RfaGVscGVyLlR5cGUubWsgfmxvYyB0ZC5wdHlwZV9uYW1lIH5wYXJhbXM6dGQucHR5cGVfcGFyYW1zXG4gICAgICAgICAgICAgIH5tYW5pZmVzdDpcbiAgICAgICAgICAgICAgICAocHR5cF9jb25zdHIgfmxvY1xuICAgICAgICAgICAgICAgICAgIChMb2NhdGVkLm1hcF9saWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6ZnN0IHRkLnB0eXBlX3BhcmFtcykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoaW5jbHVkZV9pbmZvcyB+bG9jXG4gICAgICAgICAgICAgICAocG10eV93aXRoIH5sb2NcbiAgICAgICAgICAgICAgICAgIChwbXR5X2lkZW50IH5sb2MgKExvY2F0ZWQubGlkZW50IG10eSB+bG9jKSlcbiAgICAgICAgICAgICAgICAgIFsgUHdpdGhfdHlwZXN1YnN0IChMb2NhdGVkLmxpZGVudCB+bG9jIFwidFwiLCBmb3Jfc3Vic3QpIF0pKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZXhuX3RvX2xvY19lcnJvciBleG4gPVxuICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGggU29tZSBlcnJvciAtPiBlcnJvciB8IE5vbmUgLT4gcmFpc2UgZXhuXG5cbm1vZHVsZSBXaXRoX2Vycm9ycyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdFxuXG4gIGxldCByZXR1cm4gZSA9IChlLCBbXSlcblxuICBsZXQgKCA+Pj0gKSAoeCwgZXJyb3JzMSkgZiA9XG4gICAgbGV0IHksIGVycm9yczIgPSBmIHggaW5cbiAgICAoeSwgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgbGV0ICggPj58ICkgKHgsIGVycm9ycykgZiA9IChmIHgsIGVycm9ycylcblxuICBsZXQgb2ZfcmVzdWx0IHJlc3VsdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE9rIHggLT4gKHgsIFtdKVxuICAgIHwgRXJyb3IgZXJyb3JzIC0+IChkZWZhdWx0LCBOb25FbXB0eUxpc3QudG9fbGlzdCBlcnJvcnMpXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIGxpc3QgPSAoTGlzdC5tYXAgbGlzdCB+Zjpmc3QsIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOnNuZClcbmVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X3BhdHRlcm4wXG5sZXQgbm9sYWJlbCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb2xhYmVsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb2xhYmVsXCIpXG5sZXQgbGFiZWxsZWQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExhYmVsbGVkIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMYWJlbGxlZFwiKVxubGV0IG9wdGlvbmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPcHRpb25hbCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3B0aW9uYWxcIilcbmxldCBhdHRyaWJ1dGUgfm5hbWU6KFQgbmFtZSkgIH5wYXlsb2FkOihUIHBheWxvYWQpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5hdHRyX25hbWUpLmxvYyAoeC5hdHRyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBwYXlsb2FkIGN0eCBsb2MgeC5hdHRyX3BheWxvYWQgayBpbiBrKVxubGV0IGJpbmRpbmdfb3Agfm9wOihUIG9wKSAgfnBhdDooVCBwYXQpICB+ZXhwOihUIGV4cCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG9wIGN0eCAoeC5wYm9wX29wKS5sb2MgKHgucGJvcF9vcCkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHBhdCBjdHggbG9jIHgucGJvcF9wYXQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZXhwIGN0eCBsb2MgeC5wYm9wX2V4cCBrIGluIGspXG5sZXQgY2FzZSB+bGhzOihUIGxocykgIH5ndWFyZDooVCBndWFyZCkgIH5yaHM6KFQgcmhzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbGhzIGN0eCBsb2MgeC5wY19saHMgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZ3VhcmQgY3R4IGxvYyB4LnBjX2d1YXJkIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHJocyBjdHggbG9jIHgucGNfcmhzIGsgaW4gaylcbmxldCBwY2xfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfY29uc3RyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwY2xfc3RydWN0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG5sZXQgcGNsX2Z1biAoVCBmMCkgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG5sZXQgcGNsX2FwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwY2xfbGV0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG5sZXQgcGNsX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY2xfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcGNsX29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwY2ZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2ZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2ZfaW5oZXJpdCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG5sZXQgcGNmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxubGV0IHBjZl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbmxldCBwY2ZfY29uc3RyYWludCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGNmX2luaXRpYWxpemVyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaXRpYWxpemVyXCIpKVxubGV0IHBjZl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbmxldCBwY2ZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgY2ZrX3ZpcnR1YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENma192aXJ0dWFsIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2aXJ0dWFsXCIpXG5sZXQgY2ZrX2NvbmNyZXRlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25jcmV0ZVwiKVxubGV0IGNsYXNzX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjaV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2lfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY2xhc3NfaW5mb3MgfnZpcnQ6KFQgdmlydCkgIH5wYXJhbXM6KFQgcGFyYW1zKSAgfm5hbWU6KFQgbmFtZSkgIH5leHByOihUXG4gIGV4cHIpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gdmlydCBjdHggbG9jIHgucGNpX3ZpcnQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucGNpX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHgucGNpX25hbWUpLmxvYyAoeC5wY2lfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wY2lfZXhwciBrIGluIGspKVxubGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZjooVCBzZWxmKSAgfmZpZWxkczooVCBmaWVsZHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3NpZ19zZWxmIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzaWdfZmllbGRzIGsgaW4gaylcbmxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGY6KFQgc2VsZikgIH5maWVsZHM6KFQgZmllbGRzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc2VsZiBjdHggbG9jIHgucGNzdHJfc2VsZiBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc3RyX2ZpZWxkcyBrIGluIGspXG5sZXQgcGN0eV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0eV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwY3R5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbmxldCBwY3R5X2Fycm93IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbmxldCBwY3R5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwY3R5X29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcGN0Zl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG5sZXQgcGN0Zl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG5sZXQgcGN0Zl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG5sZXQgcGN0Zl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGN0Zl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIikpXG5sZXQgcGN0Zl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgY2xvc2VkID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENsb3NlZCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ2xvc2VkXCIpXG5sZXQgb3Blbl8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgT3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3BlblwiKVxubGV0IHBjb25zdF9pbnRlZ2VyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVnZXJcIilcbmxldCBwY29uc3RfY2hhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2NoYXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNoYXJcIilcbmxldCBwY29uc3Rfc3RyaW5nIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxubGV0IHBjb25zdF9mbG9hdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmxvYXRcIilcbmxldCBwY3N0cl90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpXG5sZXQgcGNzdHJfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH52YXJzOihUIHZhcnMpICB+YXJnczooVCBhcmdzKSBcbiAgfnJlczooVCByZXMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGNkX25hbWUpLmxvYyAoeC5wY2RfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB2YXJzIGN0eCBsb2MgeC5wY2RfdmFycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gYXJncyBjdHggbG9jIHgucGNkX2FyZ3MgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHJlcyBjdHggbG9jIHgucGNkX3JlcyBrIGluIGspKVxubGV0IHB0eXBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxubGV0IHB0eXBfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxubGV0IHB0eXBfYXJyb3cgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxubGV0IHB0eXBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxubGV0IHB0eXBfY29uc3RyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG5sZXQgcHR5cF9vYmplY3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxubGV0IHB0eXBfY2xhc3MgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIikpXG5sZXQgcHR5cF9hbGlhcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxubGV0IHB0eXBfdmFyaWFudCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxubGV0IHB0eXBfcG9seSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbmxldCBwdHlwX3BhY2thZ2UgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja2FnZVwiKSlcbmxldCBwdHlwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCB1cHRvID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFVwdG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVwdG9cIilcbmxldCBkb3dudG9fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IERvd250byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRG93bnRvXCIpXG5sZXQgcGRpcmFfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBkaXJfc3RyaW5nIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX3N0cmluZyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG5sZXQgcGRpcl9pbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50XCIpXG5sZXQgcGRpcl9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIilcbmxldCBwZGlyX2Jvb2wgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfYm9vbCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYm9vbFwiKVxubGV0IHBleHBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwZXhwX2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbmxldCBwZXhwX2xldCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbmxldCBwZXhwX2Z1bmN0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdGlvblwiKSlcbmxldCBwZXhwX2Z1biAoVCBmMCkgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxubGV0IHBleHBfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwZXhwX21hdGNoIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWF0Y2hcIikpXG5sZXQgcGV4cF90cnkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ5XCIpKVxubGV0IHBleHBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxubGV0IHBleHBfY29uc3RydWN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG5sZXQgcGV4cF92YXJpYW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxubGV0IHBleHBfcmVjb3JkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbmxldCBwZXhwX2ZpZWxkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZpZWxkXCIpKVxubGV0IHBleHBfc2V0ZmllbGQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRmaWVsZFwiKSlcbmxldCBwZXhwX2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbmxldCBwZXhwX2lmdGhlbmVsc2UgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWZ0aGVuZWxzZVwiKSlcbmxldCBwZXhwX3NlcXVlbmNlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VxdWVuY2VcIikpXG5sZXQgcGV4cF93aGlsZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndoaWxlXCIpKVxubGV0IHBleHBfZm9yIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSAoVCBmNCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gbGV0IGsgPSBmNCBjdHggbG9jIHg0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZvclwiKSlcbmxldCBwZXhwX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGV4cF9jb2VyY2UgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb2VyY2VcIikpXG5sZXQgcGV4cF9zZW5kIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VuZFwiKSlcbmxldCBwZXhwX25ldyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9uZXcgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXdcIikpXG5sZXQgcGV4cF9zZXRpbnN0dmFyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0aW5zdHZhclwiKSlcbmxldCBwZXhwX292ZXJyaWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvdmVycmlkZVwiKSlcbmxldCBwZXhwX2xldG1vZHVsZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRtb2R1bGVcIikpXG5sZXQgcGV4cF9sZXRleGNlcHRpb24gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0ZXhjZXB0aW9uXCIpKVxubGV0IHBleHBfYXNzZXJ0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXNzZXJ0XCIpKVxubGV0IHBleHBfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxubGV0IHBleHBfcG9seSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbmxldCBwZXhwX29iamVjdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbmxldCBwZXhwX25ld3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXd0eXBlXCIpKVxubGV0IHBleHBfcGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrXCIpKVxubGV0IHBleHBfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwZXhwX2xldG9wIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldG9wIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRvcFwiKSlcbmxldCBwZXhwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwZXhwX3VucmVhY2hhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnJlYWNoYWJsZVwiKSlcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3JfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWU6KFQgbmFtZSkgIH5raW5kOihUIGtpbmQpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBleHRfbmFtZSkubG9jICh4LnBleHRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wZXh0X2tpbmQgayBpbiBrKSlcbmxldCBwZXh0X2RlY2wgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWNsXCIpXG5sZXQgcGV4dF9yZWJpbmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBleHRfcmViaW5kIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmViaW5kXCIpXG5sZXQgdW5pdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBVbml0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVbml0XCIpXG5sZXQgbmFtZWQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTmFtZWRcIilcbmxldCBpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBpbmNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgaW5jbHVkZV9pbmZvcyB+bW9kXzooVCBtb2RfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbW9kXyBjdHggbG9jIHgucGluY2xfbW9kIGsgaW4gaykpXG5sZXQgaW5qZWN0aXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEluamVjdGl2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW5qZWN0aXZlXCIpXG5sZXQgbm9pbmplY3Rpdml0eSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb0luamVjdGl2aXR5IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb0luamVjdGl2aXR5XCIpXG5sZXQgbGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGxkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBsZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfm11dGFibGVfOihUIG11dGFibGVfKSAgfnR5cGVfOihUXG4gIHR5cGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBsZF9uYW1lKS5sb2MgKHgucGxkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gbXV0YWJsZV8gY3R4IGxvYyB4LnBsZF9tdXRhYmxlIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucGxkX3R5cGUgayBpbiBrKSlcbmxldCBsZXRvcCB+bGV0XzooVCBsZXRfKSAgfmFuZHM6KFQgYW5kcykgIH5ib2R5OihUIGJvZHkpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBsZXRfIGN0eCBsb2MgeC5sZXRfIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGFuZHMgY3R4IGxvYyB4LmFuZHMgayBpblxuICAgICAgICAgICAgIGxldCBrID0gYm9keSBjdHggbG9jIHguYm9keSBrIGluIGspXG5sZXQgbG9jYXRpb24gfnN0YXJ0OihUIHN0YXJ0KSAgfmVuZF86KFQgZW5kXykgIH5naG9zdDooVCBnaG9zdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHN0YXJ0IGN0eCBsb2MgeC5sb2Nfc3RhcnQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZW5kXyBjdHggbG9jIHgubG9jX2VuZCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBnaG9zdCBjdHggbG9jIHgubG9jX2dob3N0IGsgaW4gaylcbmxldCBsaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExpZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGlkZW50XCIpXG5sZXQgbGRvdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExkb3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxkb3RcIilcbmxldCBsYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhcHBseVwiKVxubGV0IG1vZHVsZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtYl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWU6KFQgbmFtZSkgIH5leHByOihUIGV4cHIpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1iX25hbWUpLmxvYyAoeC5wbWJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wbWJfZXhwciBrIGluIGspKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnR5cGVfOihUIHR5cGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtZF9uYW1lKS5sb2MgKHgucG1kX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtZF90eXBlIGsgaW4gaykpXG5sZXQgcG1vZF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1vZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBtb2Rfc3RydWN0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxubGV0IHBtb2RfZnVuY3RvciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbmxldCBwbW9kX2FwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG5sZXQgcG1vZF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBtb2RfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxubGV0IHBtb2RfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1zX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtc19hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lOihUIG5hbWUpICB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtc19uYW1lKS5sb2MgKHgucG1zX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICBtYW5pZmVzdCBjdHggKHgucG1zX21hbmlmZXN0KS5sb2MgKHgucG1zX21hbmlmZXN0KS50eHQgayBpblxuICAgICAgICAgICAgICBrKSlcbmxldCBwbXR5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXR5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcG10eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG5sZXQgcG10eV9mdW5jdG9yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxubGV0IHBtdHlfd2l0aCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2l0aFwiKSlcbmxldCBwbXR5X3R5cGVvZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV90eXBlb2YgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVvZlwiKSlcbmxldCBwbXR5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwbXR5X2FsaWFzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2FsaWFzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10ZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXRkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnR5cGVfOihUIHR5cGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXRkX25hbWUpLmxvYyAoeC5wbXRkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtdGRfdHlwZSBrIGluIGspKVxubGV0IGltbXV0YWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBJbW11dGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkltbXV0YWJsZVwiKVxubGV0IG11dGFibGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE11dGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk11dGFibGVcIilcbmxldCBwb2ZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwb2ZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvdGFnIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk90YWdcIikpXG5sZXQgb2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IE9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPaW5oZXJpdFwiKSlcbmxldCBvcGVuX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvcGVuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3Blbl9pbmZvcyB+ZXhwcjooVCBleHByKSAgfm92ZXJyaWRlOihUIG92ZXJyaWRlKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gZXhwciBjdHggbG9jIHgucG9wZW5fZXhwciBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gb3ZlcnJpZGUgY3R4IGxvYyB4LnBvcGVuX292ZXJyaWRlIGsgaW4gaykpXG5sZXQgb3ZlcnJpZGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgT3ZlcnJpZGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk92ZXJyaWRlXCIpXG5sZXQgZnJlc2ggPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgRnJlc2ggLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkZyZXNoXCIpXG5sZXQgcHBhdF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHBhdF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG5sZXQgcHBhdF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxubGV0IHBwYXRfYWxpYXMgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgcHBhdF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG5sZXQgcHBhdF9pbnRlcnZhbCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVydmFsXCIpKVxubGV0IHBwYXRfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxubGV0IHBwYXRfY29uc3RydWN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG5sZXQgcHBhdF92YXJpYW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxubGV0IHBwYXRfcmVjb3JkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbmxldCBwcGF0X2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbmxldCBwcGF0X29yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3JcIikpXG5sZXQgcHBhdF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBwYXRfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF90eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKSlcbmxldCBwcGF0X2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbmxldCBwcGF0X3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG5sZXQgcHBhdF9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIikpXG5sZXQgcHBhdF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcHBhdF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwc3RyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQU3RyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU3RyXCIpXG5sZXQgcHNpZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFNpZyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFNpZ1wiKVxubGV0IHB0eXAgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBUeXAgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBUeXBcIilcbmxldCBwcGF0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFBhdFwiKVxubGV0IHBvc2l0aW9uIH5mbmFtZTooVCBmbmFtZSkgIH5sbnVtOihUIGxudW0pICB+Ym9sOihUIGJvbCkgIH5jbnVtOihUIGNudW0pIFxuICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBmbmFtZSBjdHggbG9jIHgucG9zX2ZuYW1lIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGxudW0gY3R4IGxvYyB4LnBvc19sbnVtIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGJvbCBjdHggbG9jIHgucG9zX2JvbCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBjbnVtIGN0eCBsb2MgeC5wb3NfY251bSBrIGluIGspXG5sZXQgcHJpdmF0ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHJpdmF0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHJpdmF0ZVwiKVxubGV0IHB1YmxpYyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdWJsaWMgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlB1YmxpY1wiKVxubGV0IG5vbnJlY3Vyc2l2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb25yZWN1cnNpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbnJlY3Vyc2l2ZVwiKVxubGV0IHJlY3Vyc2l2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBSZWN1cnNpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJlY3Vyc2l2ZVwiKVxubGV0IHByZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHByZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHJmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHJ0YWcgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSdGFnXCIpKVxubGV0IHJpbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmluaGVyaXRcIikpXG5sZXQgcHNpZ19sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc2lnX3ZhbHVlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbmxldCBwc2lnX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHNpZ190eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG5sZXQgcHNpZ190eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG5sZXQgcHNpZ19leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG5sZXQgcHNpZ19tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHNpZ19tb2RzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG5sZXQgcHNpZ19yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG5sZXQgcHNpZ19tb2R0eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG5sZXQgcHNpZ19tb2R0eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG5sZXQgcHNpZ19vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgcHNpZ19pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG5sZXQgcHNpZ19jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG5sZXQgcHNpZ19jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG5sZXQgcHNpZ19hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG5sZXQgcHNpZ19leHRlbnNpb24gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxubGV0IHBzdHJfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHN0cl9ldmFsIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXZhbFwiKVxubGV0IHBzdHJfdmFsdWUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbmxldCBwc3RyX3ByaW1pdGl2ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwcmltaXRpdmVcIilcbmxldCBwc3RyX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHN0cl90eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG5sZXQgcHN0cl9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG5sZXQgcHN0cl9tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHN0cl9yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG5sZXQgcHN0cl9tb2R0eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG5sZXQgcHN0cl9vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgcHN0cl9jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG5sZXQgcHN0cl9jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG5sZXQgcHN0cl9pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG5sZXQgcHN0cl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG5sZXQgcHN0cl9leHRlbnNpb24gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxubGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bmFtZTooVCBuYW1lKSAgfmFyZzooVCBhcmcpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wZGlyX25hbWUpLmxvYyAoeC5wZGlyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBhcmcgY3R4IGxvYyB4LnBkaXJfYXJnIGsgaW4gaylcbmxldCBwdG9wX2RlZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHRvcF9kZWYgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlZlwiKVxubGV0IHB0b3BfZGlyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdG9wX2RpciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGlyXCIpXG5sZXQgdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwZV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlwZV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH5wYXJhbXM6KFQgcGFyYW1zKSAgfmNzdHJzOihUIGNzdHJzKSBcbiAgfmtpbmQ6KFQga2luZCkgIH5wcml2YXRlXzooVCBwcml2YXRlXykgIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnB0eXBlX25hbWUpLmxvYyAoeC5wdHlwZV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5cGVfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBjc3RycyBjdHggbG9jIHgucHR5cGVfY3N0cnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnB0eXBlX2tpbmQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaXZhdGVfIGN0eCBsb2MgeC5wdHlwZV9wcml2YXRlIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBtYW5pZmVzdCBjdHggbG9jIHgucHR5cGVfbWFuaWZlc3QgayBpbiBrKSlcbmxldCB0eXBlX2V4Y2VwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleG5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXhjZXB0aW9uIH5jb25zdHJ1Y3RvcjooVCBjb25zdHJ1Y3RvcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBjb25zdHJ1Y3RvciBjdHggbG9jIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGsgaW4gaykpXG5sZXQgdHlwZV9leHRlbnNpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4dGVuc2lvbiB+cGF0aDooVCBwYXRoKSAgfnBhcmFtczooVCBwYXJhbXMpICB+Y29uc3RydWN0b3JzOihUXG4gIGNvbnN0cnVjdG9ycykgIH5wcml2YXRlXzooVCBwcml2YXRlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBwYXRoIGN0eCAoeC5wdHlleHRfcGF0aCkubG9jICh4LnB0eWV4dF9wYXRoKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5ZXh0X3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gY29uc3RydWN0b3JzIGN0eCBsb2MgeC5wdHlleHRfY29uc3RydWN0b3JzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5ZXh0X3ByaXZhdGUgayBpbiBrKSlcbmxldCBwdHlwZV9hYnN0cmFjdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWJzdHJhY3RcIilcbmxldCBwdHlwZV92YXJpYW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpXG5sZXQgcHR5cGVfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxubGV0IHB0eXBlX29wZW4gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxubGV0IHZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHZiX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2Yl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB2YWx1ZV9iaW5kaW5nIH5wYXQ6KFQgcGF0KSAgfmV4cHI6KFQgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBwYXQgY3R4IGxvYyB4LnB2Yl9wYXQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnB2Yl9leHByIGsgaW4gaykpXG5sZXQgdmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHZhbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmFsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZTooVCBuYW1lKSAgfnR5cGVfOihUIHR5cGVfKSAgfnByaW06KFQgcHJpbSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucHZhbF9uYW1lKS5sb2MgKHgucHZhbF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wdmFsX3R5cGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaW0gY3R4IGxvYyB4LnB2YWxfcHJpbSBrIGluIGspKVxubGV0IGNvdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb3ZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvdmFyaWFudFwiKVxubGV0IGNvbnRyYXZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29udHJhdmFyaWFudFwiKVxubGV0IG5vdmFyaWFuY2UgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9WYXJpYW5jZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9WYXJpYW5jZVwiKVxubGV0IHZpcnR1YWxfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFZpcnR1YWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlZpcnR1YWxcIilcbmxldCBjb25jcmV0ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb25jcmV0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29uY3JldGVcIilcbmxldCBwd2l0aF90eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxubGV0IHB3aXRoX21vZHVsZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxubGV0IHB3aXRoX21vZHR5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG5sZXQgcHdpdGhfbW9kdHlwZXN1YnN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbmxldCBwd2l0aF90eXBlc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxubGV0IHB3aXRoX21vZHN1YnN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFzdF9wYXR0ZXJuMFxuXG5sZXQgc2F2ZV9jb250ZXh0IGN0eCA9IGN0eC5tYXRjaGVkXG5sZXQgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXAgPSBjdHgubWF0Y2hlZCA8LSBiYWNrdXBcbmxldCBpbmNyX21hdGNoZWQgYyA9IGMubWF0Y2hlZCA8LSBjLm1hdGNoZWQgKyAxXG5cbmxldCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICB0cnkgT2sgKGYgeyBtYXRjaGVkID0gMCB9IGxvYyB4IGspXG4gIHdpdGggRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpIC0+IChcbiAgICBtYXRjaCBvbl9lcnJvciB3aXRoXG4gICAgfCBOb25lIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCIlcyBleHBlY3RlZFwiIGV4cGVjdGVkLCBbXSlcbiAgICB8IFNvbWUgZiAtPiBPayAoZiAoKSkpXG5cbmxldCBwYXJzZSAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIG1hdGNoIHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayB3aXRoXG4gIHwgT2sgciAtPiByXG4gIHwgRXJyb3IgKHIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIHJcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuMC50ICogJ2IgLT4gKCdhLCAnYykgdFxuXG4gIGxldCBjcmVhdGUgdCBmID0gVCAodCwgZilcbiAgbGV0IHBhcnNlX3JlcyAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2VfcmVzIHQgbG9jIHggZlxuICBsZXQgcGFyc2UgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlIHQgbG9jIHggZlxuZW5kXG5cbmxldCBfXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeClcblxubGV0IF9fJyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB7IGxvYzsgdHh0ID0geCB9KVxuXG5sZXQgZHJvcCA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIF8gayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGspXG5cbmxldCBhc19fIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeCAoayB4KSBpblxuICAgICAgaylcblxubGV0IGNzdCB+dG9fc3RyaW5nID8oZXF1YWwgPSBQb2x5LmVxdWFsKSB2ID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGlmIGVxdWFsIHggdiB0aGVuIChcbiAgICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgICAgaylcbiAgICAgIGVsc2UgZmFpbCBsb2MgKHRvX3N0cmluZyB2KSlcblxubGV0IGludCB2ID0gY3N0IH50b19zdHJpbmc6SW50LnRvX3N0cmluZyB2XG5sZXQgY2hhciB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJUNcIikgdlxubGV0IHN0cmluZyB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJVNcIikgdlxubGV0IGZsb2F0IHYgPSBjc3QgfnRvX3N0cmluZzpGbG9hdC50b19zdHJpbmcgdlxubGV0IGludDMyIHYgPSBjc3QgfnRvX3N0cmluZzpJbnQzMi50b19zdHJpbmcgdlxubGV0IGludDY0IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQ2NC50b19zdHJpbmcgdlxubGV0IG5hdGl2ZWludCB2ID0gY3N0IH50b19zdHJpbmc6TmF0aXZlaW50LnRvX3N0cmluZyB2XG5sZXQgYm9vbCB2ID0gY3N0IH50b19zdHJpbmc6Qm9vbC50b19zdHJpbmcgdlxuXG5sZXQgYm9vbCcgKFQgZnVuYykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFwidHJ1ZVwiIC0+IGZ1bmMgY3R4IGxvYyB0cnVlIGtcbiAgICAgIHwgXCJmYWxzZVwiIC0+IGZ1bmMgY3R4IGxvYyBmYWxzZSBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJCb29sXCIpXG5cbmxldCBmYWxzZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZhbHNlXCIpXG5cbmxldCB0cnVlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnVlXCIpXG5cbmxldCBuaWwgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIltdXCIpXG5cbmxldCAoIF46OiApIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHgwIDo6IHgxIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCI6OlwiKVxuXG5sZXQgbm9uZSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25lXCIpXG5cbmxldCBzb21lIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSB4MCAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlNvbWVcIilcblxubGV0IHBhaXIgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MikgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBrKVxuXG5sZXQgKCAqKiApID0gcGFpclxuXG5sZXQgdHJpcGxlIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyLCB4MykgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpblxuICAgICAgaylcblxubGV0IGFsdCAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBiYWNrdXAgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICB0cnkgZjEgY3R4IGxvYyB4IGtcbiAgICAgIHdpdGggZTEgLT4gKFxuICAgICAgICBsZXQgbTEgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwO1xuICAgICAgICB0cnkgZjIgY3R4IGxvYyB4IGtcbiAgICAgICAgd2l0aCBlMiAtPlxuICAgICAgICAgIGxldCBtMiA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgICBpZiBtMSA+PSBtMiB0aGVuIChcbiAgICAgICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggbTE7XG4gICAgICAgICAgICByYWlzZSBlMSlcbiAgICAgICAgICBlbHNlIHJhaXNlIGUyKSlcblxubGV0ICggfHx8ICkgPSBhbHRcbmxldCBtYXAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgaykpXG5sZXQgbWFwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBsb2MgaykpXG5sZXQgbWFwX3Jlc3VsdCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIChmdW5jIGN0eCBsb2MgeCBrKSlcbmxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG5sZXQgbWFwMCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayBmKSlcbmxldCBtYXAxIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGEpKSlcblxubGV0IG1hcDIgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBhIGIpKSlcblxubGV0IG1hcDAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIChmIGxvYykpKVxuXG5sZXQgbWFwMScgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgbG9jIGEpKSlcblxubGV0IG1hcDInIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgbG9jIGEgYikpKVxuXG5sZXQgbWFwX3ZhbHVlIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiB4KSBrKVxubGV0IG1hcF92YWx1ZScgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIGxvYyB4KSBrKVxuXG5sZXQgYWx0X29wdGlvbiBzb21lIG5vbmUgPVxuICBhbHQgKG1hcDEgc29tZSB+ZjooZnVuIHggLT4gU29tZSB4KSkgKG1hcDAgbm9uZSB+ZjpOb25lKVxuXG5sZXQgbWFueSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgbCBrIC0+XG4gICAgICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBrIChMaXN0LnJldiBhY2N1KVxuICAgICAgICB8IHggOjogeHMgLT4gZiBjdHggbG9jIHggKGZ1biB4IC0+IGF1eCAoeCA6OiBhY2N1KSB4cylcbiAgICAgIGluXG4gICAgICBhdXggW10gbClcblxubGV0IGxvYyAoVCBmKSA9IFQgKGZ1biBjdHggX2xvYyAoeCA6IF8gTG9jLnQpIGsgLT4gZiBjdHggeC5sb2MgeC50eHQgaylcbmxldCBwYWNrMCB0ID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgKCkpXG5sZXQgcGFjazIgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgLT4gZiAoeCwgeSkpXG5sZXQgcGFjazMgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgeiAtPiBmICh4LCB5LCB6KSlcblxuaW5jbHVkZSBBc3RfcGF0dGVybl9nZW5lcmF0ZWRcblxubGV0IGVjaGFyIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IGVzdHJpbmcgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgZWZsb2F0IHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IHBjaGFyIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IHBzdHJpbmcgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgcGZsb2F0IHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IGludCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChpbnRfb2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50MzInIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50MzIub2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50NjQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50NjQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBuYXRpdmVpbnQnIChUIGYpID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoTmF0aXZlaW50Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgY29uc3RfaW50IHQgPSBwY29uc3RfaW50ZWdlciAoaW50JyB0KSBub25lXG5sZXQgY29uc3RfaW50MzIgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQzMicgdCkgKHNvbWUgKGNoYXIgJ2wnKSlcbmxldCBjb25zdF9pbnQ2NCB0ID0gcGNvbnN0X2ludGVnZXIgKGludDY0JyB0KSAoc29tZSAoY2hhciAnTCcpKVxubGV0IGNvbnN0X25hdGl2ZWludCB0ID0gcGNvbnN0X2ludGVnZXIgKG5hdGl2ZWludCcgdCkgKHNvbWUgKGNoYXIgJ24nKSlcbmxldCBlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBlaW50MzIgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgZWludDY0IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IGVuYXRpdmVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHBpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IHBpbnQzMiB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBwaW50NjQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgcG5hdGl2ZWludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgc2luZ2xlX2V4cHJfcGF5bG9hZCB0ID0gcHN0ciAocHN0cl9ldmFsIHQgbmlsIF46OiBuaWwpXG5sZXQgbm9fbGFiZWwgdCA9IGNzdCBBc3R0eXBlcy5Ob2xhYmVsIH50b19zdHJpbmc6KGZ1biBfIC0+IFwiTm9sYWJlbFwiKSAqKiB0XG5sZXQgZWJvb2wgdCA9IHBleHBfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5sZXQgcGJvb2wgdCA9IHBwYXRfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5cbmxldCBleHRlbnNpb24gKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKChuYW1lIDogXyBMb2MudCksIHBheWxvYWQpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IG5hbWUubG9jIG5hbWUudHh0IGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyBwYXlsb2FkIGsgaW5cbiAgICAgIGspXG5cbmxldCByZWMgcGFyc2VfZWxpc3QgKGUgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbikgYWNjID1cbiAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzO1xuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBOb25lKSAtPiBMaXN0LnJldiBhY2NcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgYXJnKSAtPiAoXG4gICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXJnLnBleHBfYXR0cmlidXRlcztcbiAgICAgIG1hdGNoIGFyZy5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX3R1cGxlIFsgaGQ7IHRsIF0gLT4gcGFyc2VfZWxpc3QgdGwgKGhkIDo6IGFjYylcbiAgICAgIHwgXyAtPiBmYWlsIGFyZy5wZXhwX2xvYyBcImxpc3RcIilcbiAgfCBfIC0+IGZhaWwgZS5wZXhwX2xvYyBcImxpc3RcIlxuXG5sZXQgZWxpc3QgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCBsID0gcGFyc2VfZWxpc3QgZSBbXSBpblxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgKExpc3QubWFwIGwgfmY6KGZ1biB4IC0+IGYgY3R4IHguUGFyc2V0cmVlLnBleHBfbG9jIHggKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBlc2VxdWVuY2UgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCByZWMgcGFyc2Vfc2VxIGV4cHIgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGV4cHIsIG5leHQpIC0+IHBhcnNlX3NlcSBuZXh0IChleHByIDo6IGFjYylcbiAgICAgICAgfCBfIC0+IGV4cHIgOjogYWNjXG4gICAgICBpblxuICAgICAga1xuICAgICAgICAoTGlzdC5yZXZfbWFwIChwYXJzZV9zZXEgZSBbXSkgfmY6KGZ1biBleHByIC0+XG4gICAgICAgICAgICAgZiBjdHggZXhwci5wZXhwX2xvYyBleHByIChmdW4geCAtPiB4KSkpKVxuXG5sZXQgb2ZfZnVuYyBmID0gVCBmXG5sZXQgdG9fZnVuYyAoVCBmKSA9IGZcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcG9seV9lcXVhbCBhIGIgPVxuICBsZXQgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIDogXyAtPiB0XG4gIGVuZCBpblxuICBTdGRwcHguUG9seS5lcXVhbCAoUG9seS5UIGEpIChQb2x5LlQgYilcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gdFxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIHRcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gdFxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENsYXNzX2luZm9zIDogXyBjbGFzc19pbmZvcyB0XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gdFxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gdFxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gdFxuICAgIHwgSW5jbHVkZV9pbmZvcyA6IF8gaW5jbHVkZV9pbmZvcyB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IFZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIHRcbiAgICB8IE1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgdFxuICAgIHwgUHN0cl9ldmFsIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHN0cl9leHRlbnNpb24gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc2lnX2V4dGVuc2lvbiA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFJ0YWcgOiByb3dfZmllbGQgdFxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgOiBvYmplY3RfZmllbGQgdFxuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbiA9IExhYmVsX2RlY2xhcmF0aW9uXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2RlY2xhcmF0aW9uID0gVHlwZV9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9leHRlbnNpb24gPSBUeXBlX2V4dGVuc2lvblxuICBsZXQgdHlwZV9leGNlcHRpb24gPSBUeXBlX2V4Y2VwdGlvblxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gPSBWYWx1ZV9kZXNjcmlwdGlvblxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjbGFzc19pbmZvcyA9IENsYXNzX2luZm9zXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uID0gTW9kdWxlX2RlY2xhcmF0aW9uXG4gIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gIGxldCBvcGVuX2Rlc2NyaXB0aW9uID0gT3Blbl9kZXNjcmlwdGlvblxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IEluY2x1ZGVfaW5mb3NcbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IHZhbHVlX2JpbmRpbmcgPSBWYWx1ZV9iaW5kaW5nXG4gIGxldCBtb2R1bGVfYmluZGluZyA9IE1vZHVsZV9iaW5kaW5nXG4gIGxldCBwc3RyX2V2YWwgPSBQc3RyX2V2YWxcbiAgbGV0IHBzdHJfZXh0ZW5zaW9uID0gUHN0cl9leHRlbnNpb25cbiAgbGV0IHBzaWdfZXh0ZW5zaW9uID0gUHNpZ19leHRlbnNpb25cbiAgbGV0IHJ0YWcgPSBSdGFnXG4gIGxldCBvYmplY3RfdHlwZV9maWVsZCA9IE9iamVjdF90eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9wc3RyX2V2YWwgc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V2YWwgKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V2YWxcIlxuXG4gIGxldCBnZXRfcHN0cl9leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X3BzaWdfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc2lnX2Rlc2Mgd2l0aFxuICAgIHwgUHNpZ19leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc2lnX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHgucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHgucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geC5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB4LnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB4LnB0eWV4bl9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geC5wZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFBhdHRlcm4gLT4geC5wcGF0X2F0dHJpYnV0ZXNcbiAgICB8IENvcmVfdHlwZSAtPiB4LnB0eXBfYXR0cmlidXRlc1xuICAgIHwgRXhwcmVzc2lvbiAtPiB4LnBleHBfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geC5wdmFsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGUgLT4geC5wY3R5X2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geC5wY3RmX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2luZm9zIC0+IHgucGNpX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2V4cHIgLT4geC5wY2xfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZmllbGQgLT4geC5wY2ZfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGUgLT4geC5wbXR5X2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB4LnBtZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB4LnBtdGRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB4LnBtc19hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geC5waW5jbF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZXhwciAtPiB4LnBtb2RfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfYmluZGluZyAtPiB4LnB2Yl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB4LnBtYl9hdHRyaWJ1dGVzXG4gICAgfCBQc3RyX2V2YWwgLT4gc25kIChnZXRfcHN0cl9ldmFsIHgpXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc3RyX2V4dGVuc2lvbiB4KVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gc25kIChnZXRfcHNpZ19leHRlbnNpb24geClcbiAgICB8IFJ0YWcgLT4geC5wcmZfYXR0cmlidXRlc1xuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geC5wb2ZfYXR0cmlidXRlc1xuXG4gIGxldCBzZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2luZm9zIC0+IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZXhwciAtPiB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBzdHJfZXZhbCAtPlxuICAgICAgICB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGdldF9wc3RyX2V2YWwgeCB8PiBmc3QsIGF0dHJzKSB9XG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGdldF9wc3RyX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGdldF9wc2lnX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBSdGFnIC0+IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4gXCJsYWJlbCBkZWNsYXJhdGlvblwiXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IFwidHlwZSBleHRlbnNpb25cIlxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4gXCJ0eXBlIGV4Y2VwdGlvblwiXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gXCJleHRlbnNpb24gY29uc3RydWN0b3JcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IFwidmFsdWVcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ2xhc3NfaW5mb3MgLT4gXCJjbGFzcyBkZWNsYXJhdGlvblwiXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBcIm1vZHVsZSBzdWJzdGl0dXRpb25cIlxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiBcImluY2x1ZGVcIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IFwidmFsdWUgYmluZGluZ1wiXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiBcIm1vZHVsZSBiaW5kaW5nXCJcbiAgICB8IFBzdHJfZXZhbCAtPiBcInRvcGxldmVsIGV4cHJlc3Npb25cIlxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBleHRlbnNpb25cIlxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBzaWduYXR1cmUgZXh0ZW5zaW9uXCJcbiAgICB8IFJ0YWcgLT4gXCJwb2x5bW9ycGhpYyB2YXJpYW50IHRhZ1wiXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiBcIm9iamVjdCB0eXBlIGZpZWxkXCJcblxuICAoKlxuICBsZXQgcGF0dGVybiA6IHR5cGUgYSBiIGMgZC4gYSB0XG4gICAgLT4gKGF0dHJpYnV0ZXMsIGIsIGMpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYywgZCkgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBiLCBkKSBBc3RfcGF0dGVybi50ID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uICAgICAgIC0+IEFzdF9wYXR0ZXJuLnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBBc3RfcGF0dGVybi5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gICAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAgIC0+IEFzdF9wYXR0ZXJuLnBleHRfYXR0cmlidXRlc1xuKilcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxubW9kdWxlIEZsb2F0aW5nX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcblxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGUgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgdCB4ID1cbiAgICBtYXRjaCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgdCB4IHdpdGhcbiAgICB8IFNvbWUgYSAtPiBhXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZVwiXG5cbiAgbGV0IHJlcGxhY2VfYnlfZHVtbXkgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGEgPVxuICAgIGxldCBkdW1teV9leHQgPSAoeyB0eHQgPSBcIlwiOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sIFBTdHIgW10pIGluXG4gICAgZnVuIHQgeCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG50eXBlIHBhY2tlZF9jb250ZXh0ID1cbiAgfCBPbl9pdGVtIDogXyBDb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcbiAgfCBGbG9hdGluZyA6IF8gRmxvYXRpbmdfY29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG5cbnR5cGUgXyBwYXlsb2FkX3BhcnNlciA9XG4gIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgKHBheWxvYWQsICdhLCAnYikgQXN0X3BhdHRlcm4udFxuICAgICAgKiAoYXR0cl9sb2M6TG9jYXRpb24udCAtPiBuYW1lX2xvYzpMb2NhdGlvbi50IC0+ICdhKVxuICAgICAgLT4gJ2IgcGF5bG9hZF9wYXJzZXJcblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbn1cblxudHlwZSBwYWNrZWQgPSBUIDogKF8sIF8pIHQgLT4gcGFja2VkXG5cbmxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcbmxldCBjb250ZXh0IHQgPSB0LmNvbnRleHRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImF0dHJpYnV0ZVwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1bmN0aW9uXG4gICAgfCBPbl9pdGVtIHQgLT4gU29tZSAoQ29udGV4dC5kZXNjIHQpXG4gICAgfCBGbG9hdGluZyB0IC0+IFNvbWUgKEZsb2F0aW5nX2NvbnRleHQuZGVzYyB0IF4gXCIgKGZsb2F0aW5nKVwiKSlcblxubGV0IGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAge1xuICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgIGNvbnRleHQ7XG4gICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgfVxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gaylcblxubGV0IGRlY2xhcmVfd2l0aF9uYW1lX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jIC0+XG4gICAgICBrIH5uYW1lX2xvYylcblxubGV0IGRlY2xhcmVfd2l0aF9hdHRyX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jIH5uYW1lX2xvYzpfIC0+XG4gICAgICBrIH5hdHRyX2xvYylcblxudHlwZSAnYSBmbGFnID0gKCdhLCB1bml0KSB0XG5cbmxldCBkZWNsYXJlX2ZsYWcgbmFtZSBjb250ZXh0ID1cbiAgbGV0IHBheWxvYWRfcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgaW5cbiAgbGV0IGNvbnRpbnVhdGlvbiB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyA9ICgpIGluXG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF5bG9hZF9wYXR0ZXJuIGNvbnRpbnVhdGlvblxuXG5tb2R1bGUgQXR0cmlidXRlX3RhYmxlID0gU3RkbGliLkhhc2h0YmwuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsb2NcblxuICBsZXQgbm9ybWFsaXplIHQgPSB7IHQgd2l0aCBsb2MgPSB7IHQubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IH1cbiAgbGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCAobm9ybWFsaXplIHQpXG4gIGxldCBlcXVhbCB4IHkgPSBQb2x5LmVxdWFsIChub3JtYWxpemUgeCkgKG5vcm1hbGl6ZSB5KVxuZW5kKVxuXG5sZXQgbm90X3NlZW4gPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIDEyOFxubGV0IG1hcmtfYXNfc2VlbiB7IGF0dHJfbmFtZTsgXyB9ID0gQXR0cmlidXRlX3RhYmxlLnJlbW92ZSBub3Rfc2VlbiBhdHRyX25hbWVcbmxldCBtYXJrX2FzX2hhbmRsZWRfbWFudWFsbHkgPSBtYXJrX2FzX3NlZW5cblxubGV0IGV4cGxpY2l0bHlfZHJvcCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgPSBtYXJrX2FzX3NlZW5cbiAgZW5kXG5cbmxldCBnZXRfaW50ZXJuYWwgPVxuICBsZXQgcmVjIGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgbG9uZ2VzdF9tYXRjaCA9XG4gICAgbWF0Y2ggYXR0cmlidXRlcyB3aXRoXG4gICAgfCBbXSAtPiBPayBsb25nZXN0X21hdGNoXG4gICAgfCAoeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gYXMgYXR0cikgOjogcmVzdCAtPlxuICAgICAgICBpZiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQgdGhlblxuICAgICAgICAgIG1hdGNoIGxvbmdlc3RfbWF0Y2ggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgfCBTb21lIHsgYXR0cl9uYW1lID0gbmFtZSc7IF8gfSAtPlxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBuYW1lLnR4dCBpblxuICAgICAgICAgICAgICBsZXQgbGVuJyA9IFN0cmluZy5sZW5ndGggbmFtZScudHh0IGluXG4gICAgICAgICAgICAgIGlmIGxlbiA+IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgICAgIGVsc2UgaWYgbGVuIDwgbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiRHVwbGljYXRlZCBhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICBpblxuICBmdW4gdCBhdHRyaWJ1dGVzIC0+IGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgTm9uZVxuXG5sZXQgY29udmVydCA/KGRvX21hcmtfYXNfc2VlbiA9IHRydWUpIHBhdHRlcm4gYXR0ciA9XG4gIGlmIGRvX21hcmtfYXNfc2VlbiB0aGVuIG1hcmtfYXNfc2VlbiBhdHRyO1xuICBsZXQgKFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKSkgPSBwYXR0ZXJuIGluXG4gIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuXG4gICAgKENvbW1vbi5sb2Nfb2ZfcGF5bG9hZCBhdHRyKVxuICAgIGF0dHIuYXR0cl9wYXlsb2FkXG4gICAgKGsgfmF0dHJfbG9jOmF0dHIuYXR0cl9sb2Mgfm5hbWVfbG9jOmF0dHIuYXR0cl9uYW1lLmxvYylcblxubGV0IGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgP2RvX21hcmtfYXNfc2VlbiA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcblxubGV0IGdldCB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgbWF0Y2ggZ2V0X3JlcyA/bWFya19hc19zZWVuIHQgeCB3aXRoXG4gIHwgT2sgKFNvbWUgKCkpIC0+IE9rIHRydWVcbiAgfCBPayBOb25lIC0+IE9rIGZhbHNlXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcblxubGV0IGhhc19mbGFnIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBjb25zdW1lX3JlcyB0IHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgbGV0IGF0dHJzID0gTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKGF0dHIgPT0gYXR0cicpKSBpblxuICAgICAgbGV0IHggPSBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGF0dHJzIGluXG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSAoeCwgdmFsdWUpXG5cbmxldCBjb25zdW1lIHQgeCA9XG4gIGNvbnN1bWVfcmVzIHQgeFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcmVtb3ZlX3NlZW5fcmVzICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE9rIGFjY1xuICAgIHwgVCB0IDo6IHJlc3QgLT5cbiAgICAgICAgaWYgQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCB0aGVuXG4gICAgICAgICAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgICAgICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgfCBTb21lIGF0dHIgLT5cbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICAgICAgICBpZiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWUgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgbG9vcCAoYXR0ciA6OiBhY2MpIHJlc3RcbiAgICAgICAgZWxzZSBsb29wIGFjYyByZXN0XG4gIGluXG4gIGxvb3AgW10gcGFja2VkcyA+PnwgZnVuIG1hdGNoZWQgLT5cbiAgbGV0IGF0dHJzID1cbiAgICBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoTGlzdC5tZW1xIH5zZXQ6bWF0Y2hlZCBhdHRyJykpXG4gIGluXG4gIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzXG5cbmxldCByZW1vdmVfc2VlbiAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICByZW1vdmVfc2Vlbl9yZXMgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBwYXR0ZXJuX3JlcyB0IHAgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGYgPSBBc3RfcGF0dGVybi50b19mdW5jIHAgaW5cbiAgQXN0X3BhdHRlcm4ub2ZfZnVuYyAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBjb25zdW1lX3JlcyB0IHggPj58IGZ1biByZXMgLT5cbiAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZiBjdHggbG9jIHggKGsgTm9uZSlcbiAgICAgIHwgU29tZSAoeCwgdikgLT4gZiBjdHggbG9jIHggKGsgKFNvbWUgdikpKVxuXG5sZXQgcGF0dGVybiB0IHAgPVxuICBwYXR0ZXJuX3JlcyB0IHAgfD4gQXN0X3BhdHRlcm4udG9fZnVuY1xuICB8PiAoZnVuIGYgYSBiIGMgZCAtPlxuICAgICAgIGYgYSBiIGMgZFxuICAgICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpKVxuICB8PiBBc3RfcGF0dGVybi5vZl9mdW5jXG5cbm1vZHVsZSBGbG9hdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IEZsb2F0aW5nX2NvbnRleHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xuICB9XG5cbiAgbGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspO1xuICAgIH1cblxuICBsZXQgY29udmVydF9yZXMgdHMgeCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgbWF0Y2ggdHMgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgeyBjb250ZXh0OyBfIH0gOjogXyAtPiAoXG4gICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIHRzIH5mOihmdW4gdCAtPiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0KSk7XG4gICAgICAgIGxldCBhdHRyID0gQ29udGV4dC5nZXRfYXR0cmlidXRlIGNvbnRleHQgeCBpblxuICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dClcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICAgICAgfCBbIHQgXSAtPiBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICBcIk11bHRpcGxlIG1hdGNoIGZvciBmbG9hdGluZyBhdHRyaWJ1dGVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgICAgICBbXSApKVxuXG4gIGxldCBjb252ZXJ0IHRzIHggPVxuICAgIGNvbnZlcnRfcmVzIHRzIHhcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIGlmXG4gICAgKG5vdFxuICAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBBdHRyaWJ1dGUgbmFtZS50eHRcbiAgICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpKVxuICAgICYmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZVxuICB0aGVuXG4gICAgbGV0IGFsbG93bGlzdCA9IE5hbWUuQWxsb3dsaXN0ZWQuZ2V0X2F0dHJpYnV0ZV9saXN0ICgpIGluXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgY29udGV4dCB+YWxsb3dsaXN0XG4gICAgICAgIFwiQXR0cmlidXRlIGAlcycgd2FzIG5vdCB1c2VkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBfID1cbiAgICAgIFtcbiAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICBdXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLlxuICAgICAgICBhIENvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBhdHRyc1xuICAgICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0ZWRfZXJyb3JzKVxuICAgICAgICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXSwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfZmxvYXRpbmcgOiB0eXBlIGEuXG4gICAgICAgIGEgRmxvYXRpbmcuQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgY29udGV4dCBub2RlXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBTb21lICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgIChGbG9hdGluZy5Db250ZXh0LnJlcGxhY2VfYnlfZHVtbXkgY29udGV4dCBub2RlLCBjb2xsZWN0ZWRfZXJyb3JzKVxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTGFiZWxfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leHRlbnNpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4Y2VwdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4Y2VwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHRlbnNpb25fY29uc3RydWN0b3IgeCBpblxuICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBQYXR0ZXJuIHggaW5cbiAgICAgIHN1cGVyI3BhdHRlcm4gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29yZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXhwcmVzc2lvbiB4IGluXG4gICAgICBzdXBlciNleHByZXNzaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZXhwciB4IGluXG4gICAgICBzdXBlciNjbGFzc19leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9leHByIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGggUnRhZyBfIC0+IHNlbGYjY2hlY2tfbm9kZSBSdGFnIHggfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNyb3dfZmllbGQgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpIC0+XG4gICAgICAgICAgICBsZXQgZmllbGRzLCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KHNlbGYjY2hlY2tfbm9kZSBPYmplY3RfdHlwZV9maWVsZClcbiAgICAgICAgICAgICAgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZyksIExpc3QuY29uY2F0IGVycm9ycylcbiAgICAgICAgfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFN0cnVjdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V2YWwgaXRlbVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTaWduYXR1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc2lnX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcbiAgZW5kXG5cbmxldCBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIG1hdGNoIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmFpc2VfaWZfbm9uX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLiBhIENvbnRleHQudCAtPiBhIC0+IGEgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gbm9kZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIExpc3QuaXRlciBhdHRyc1xuICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgICAgICAgICAgICBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyKTtcbiAgICAgICAgICAgIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2xhYmVsX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4dGVuc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXhjZXB0aW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3BhdHRlcm4geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHByZXNzaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZV9maWVsZCB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcm93X2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcbiAgZW5kXG5cbmxldCByZXNldF9jaGVja3MgKCkgPSBBdHRyaWJ1dGVfdGFibGUuY2xlYXIgbm90X3NlZW5cblxubGV0IGNvbGxlY3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpXG4gICAgICAgID1cbiAgICAgIGxldCBsb2MgPSBDb21tb24ubG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUuYWRkIG5vdF9zZWVuIG5hbWUgbG9jXG4gIGVuZFxuXG5sZXQgY29sbGVjdF91bnNlZW5fZXJyb3JzICgpID1cbiAgbGV0IGZhaWwgbmFtZSBsb2MgYWNjID1cbiAgICBsZXQgdHh0ID0gbmFtZS50eHQgaW5cbiAgICBpZiBub3QgKE5hbWUuaWdub3JlX2NoZWNrcyB0eHQpIHRoZW5cbiAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBzaWxlbnRseSBkcm9wcGVkXCIgdHh0XG4gICAgICA6OiBhY2NcbiAgICBlbHNlIGFjY1xuICBpblxuICBBdHRyaWJ1dGVfdGFibGUuZm9sZCBmYWlsIG5vdF9zZWVuIFtdXG5cbmxldCBjaGVja19hbGxfc2VlbiAoKSA9XG4gIG1hdGNoIGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gPVxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLnJlbW92ZSB0YWJsZSBuYW1lXG4gIGVuZFxuXG5sZXQgY29weV9vZl9ub3Rfc2VlbiAoKSA9XG4gIGxldCBjb3B5ID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAoQXR0cmlidXRlX3RhYmxlLmxlbmd0aCBub3Rfc2VlbikgaW5cbiAgQXR0cmlidXRlX3RhYmxlLml0ZXIgKEF0dHJpYnV0ZV90YWJsZS5hZGQgY29weSkgbm90X3NlZW47XG4gIGNvcHlcblxubGV0IGRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSBzdCA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3N0cnVjdHVyZSBzdDtcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cblxubGV0IGRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSBzZyA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3NpZ25hdHVyZSBzZztcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIGZpbGVfcGF0aCA6IHN0cmluZztcbiAgbWFpbl9tb2R1bGVfbmFtZSA6IHN0cmluZztcbiAgc3VibW9kdWxlX3BhdGggOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIGVuY2xvc2luZ19tb2R1bGUgOiBzdHJpbmc7XG4gIGVuY2xvc2luZ192YWx1ZSA6IHN0cmluZyBvcHRpb247XG4gIHZhbHVlIDogc3RyaW5nIGxvYyBvcHRpb247XG4gIGluX2V4cHIgOiBib29sO1xufVxuXG5sZXQgdG9wX2xldmVsIH5maWxlX3BhdGggPVxuICBsZXQgbWFpbl9tb2R1bGVfbmFtZSA9XG4gICAgZmlsZV9wYXRoIHw+IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSB8PiBTdGRsaWIuRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvblxuICAgIHw+IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGluXG4gIHtcbiAgICBmaWxlX3BhdGg7XG4gICAgbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBzdWJtb2R1bGVfcGF0aCA9IFtdO1xuICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtYWluX21vZHVsZV9uYW1lO1xuICAgIGVuY2xvc2luZ192YWx1ZSA9IE5vbmU7XG4gICAgdmFsdWUgPSBOb25lO1xuICAgIGluX2V4cHIgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZmlsZV9wYXRoIHQgPSB0LmZpbGVfcGF0aFxubGV0IG1haW5fbW9kdWxlX25hbWUgdCA9IHQubWFpbl9tb2R1bGVfbmFtZVxubGV0IGVuY2xvc2luZ19tb2R1bGUgdCA9IHQuZW5jbG9zaW5nX21vZHVsZVxubGV0IGVuY2xvc2luZ192YWx1ZSB0ID0gdC5lbmNsb3NpbmdfdmFsdWVcblxubGV0IHN1Ym1vZHVsZV9wYXRoIHQgPVxuICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG5cbmxldCB2YWx1ZSB0ID0gT3B0aW9uLm1hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQudmFsdWVcblxubGV0IGZ1bGx5X3F1YWxpZmllZF9wYXRoIHQgPVxuICBsZXQgdmFsdWUgPSB2YWx1ZSB0IGluXG4gIGxldCBzdWJtb2R1bGVfcGF0aCA9XG4gICAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBTb21lIGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG4gIGluXG4gIGxldCBuYW1lcyA9IChTb21lIHQubWFpbl9tb2R1bGVfbmFtZSA6OiBzdWJtb2R1bGVfcGF0aCkgQCBbIHZhbHVlIF0gaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIEBAIExpc3QuZmlsdGVyX29wdCBuYW1lc1xuXG5sZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggaW5fZXhwciA9IHRydWUgfVxuXG5sZXQgZW50ZXJfbW9kdWxlIH5sb2MgbW9kdWxlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHN1Ym1vZHVsZV9wYXRoID0geyB0eHQgPSBtb2R1bGVfbmFtZTsgbG9jIH0gOjogdC5zdWJtb2R1bGVfcGF0aDtcbiAgICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZTtcbiAgICB9XG5cbmxldCBlbnRlcl92YWx1ZSB+bG9jIHZhbHVlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHZhbHVlID0gU29tZSB7IHR4dCA9IHZhbHVlX25hbWU7IGxvYyB9O1xuICAgICAgZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lO1xuICAgIH1cblxubGV0IHRvX3N0cmluZ19wYXRoIHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgKHQuZmlsZV9wYXRoIDo6IHN1Ym1vZHVsZV9wYXRoIHQpXG5sZXQgd2l0aF9zdHJpbmdfcGF0aCBmIH5sb2MgfnBhdGggPSBmIH5sb2MgfnBhdGg6KHRvX3N0cmluZ19wYXRoIHBhdGgpOztcblxubGV0IG1vZHVsZSBNID0gc3RydWN0XG4gIGxldCBhID0gXCJsb2xcIlxuZW5kIGluXG5NLmFcbiIsIm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgdG9vbF9uYW1lIDogc3RyaW5nOyBjb2RlX3BhdGggOiBDb2RlX3BhdGgudDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgbGV0IHRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWUgPVxuICAgIGxldCBjb2RlX3BhdGggPSBDb2RlX3BhdGgudG9wX2xldmVsIH5maWxlX3BhdGggaW5cbiAgICB7IHRvb2xfbmFtZTsgY29kZV9wYXRoOyBpbnB1dF9uYW1lIH1cblxuICBsZXQgY29kZV9wYXRoIHQgPSB0LmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQudG9vbF9uYW1lXG4gIGxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfZXhwciB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX21vZHVsZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX21vZHVsZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl92YWx1ZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2MgOiBMb2NhdGlvbi50OyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYyB+YmFzZSAoKSA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYzsgYmFzZSB9XG4gIGxldCBleHRlbnNpb25fcG9pbnRfbG9jIHQgPSB0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBkZXJpdmVkX2l0ZW1fbG9jIDogTG9jYXRpb24udDsgaW5saW5lIDogYm9vbDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmRlcml2ZWRfaXRlbV9sb2MgfmlubGluZSB+YmFzZSAoKSA9XG4gICAgeyBkZXJpdmVkX2l0ZW1fbG9jOyBiYXNlOyBpbmxpbmUgfVxuXG4gIGxldCBkZXJpdmVkX2l0ZW1fbG9jIHQgPSB0LmRlcml2ZWRfaXRlbV9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuICBsZXQgaW5saW5lIHQgPSB0LmlubGluZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5kZXJpdmVkX2l0ZW1fbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb24uV2l0aF9lcnJvcnNcbmluY2x1ZGUgQXN0X3RyYXZlcnNlMFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBQcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gQXN0LmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBlbmRcblxubGV0IG1vZHVsZV9uYW1lID0gZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgbmFtZSAtPiBuYW1lXG5sZXQgZW50ZXIgbmFtZSBwYXRoID0gaWYgU3RyaW5nLmlzX2VtcHR5IHBhdGggdGhlbiBuYW1lIGVsc2UgcGF0aCBeIFwiLlwiIF4gbmFtZVxubGV0IGVudGVyX29wdCBuYW1lX29wdCBwYXRoID0gZW50ZXIgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBwYXRoXG5cbmNsYXNzIG1hcF93aXRoX3BhdGggPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmddIG1hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgICgqIFdBUzpcbiAgICAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4ID1cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFBzdHJfbW9kdWxlIG1iIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgKGVudGVyIG1iLnBtYl9uYW1lLnR4dCBwYXRoKSB4XG4gICAgICAgfCBfIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4XG5cbiAgICAgICBPdmVycmlkaW5nIFttb2R1bGVfYmluZGluZ10gc2VlbXMgdG8gYmUgT0sgYmVjYXVzZSBpdCBkb2VzIG5vdCBjYXRjaFxuICAgICAgIGxvY2FsIG1vZHVsZSBiaW5kaW5ncyBiZWNhdXNlIGF0IHRoZSBtb21lbnQgdGhlIHBhcnNldHJlZSBkb2Vzbid0IG1ha2VcbiAgICAgICB1c2Ugb2YgW21vZHVsZV9iaW5kaW5nXSBmb3IgbG9jYWwgbW9kdWxlcywgYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGluIHRoZVxuICAgICAgIGZ1dHVyZSwgc28gdGhpcyBtaWdodCBiZSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG4gICAgICAgVGhlIGZvbGxvd2luZzpcblxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG5cbiAgICAgICBpcyBkaXNhbGxvd2VkLCBidXRcblxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuXG4gICAgICAgaXNuJ3QsIGFuZCB0aGUgXCJwYXRoXCIgY29uc3RydWN0ZWQgaGVyZSB3b3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBwYXRoIG1iID1cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIChlbnRlcl9vcHQgbWIucG1iX25hbWUudHh0IHBhdGgpIG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBwYXRoIG1kID1cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiAoZW50ZXJfb3B0IG1kLnBtZF9uYW1lLnR4dCBwYXRoKSBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBwYXRoIG10ZCA9XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoZW50ZXIgbXRkLnBtdGRfbmFtZS50eHQgcGF0aCkgbXRkXG4gIGVuZFxuXG5sZXQgdmFyX25hbWVzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIGZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwIGFjYyA9XG4gICAgICBsZXQgYWNjID0gc3VwZXIjcGF0dGVybiBwIGFjYyBpblxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHR4dCA6OiBhY2MgfCBfIC0+IGFjY1xuICBlbmRcblxubGV0IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYyBuYW1lX29wdCBjdHh0ID1cbiAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyAobW9kdWxlX25hbWUgbmFtZV9vcHQpIGN0eHRcblxubGV0IGVudGVyX3ZhbHVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfdmFsdWVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKSlcbiAgICBGbi5pZFxuXG5sZXQgZW50ZXJfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2V4cHJcbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9jb25zdHJ1Y3QgKGxpZGVudCBfXycpIG5vbmUpKVxuICAgIEZuLmlkXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxuY2xhc3MgbWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyA9XG4gIGxldCByZXR1cm4gX2N0eCB4ID0gKHgsIFtdKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdFxuICAgICAgW0V4cGFuc2lvbl9jb250ZXh0LkJhc2UudCwgTG9jYXRpb24uRXJyb3IudCBsaXN0XSBsaWZ0X21hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBpbnQgPSByZXR1cm5cbiAgICBtZXRob2Qgc3RyaW5nID0gcmV0dXJuXG4gICAgbWV0aG9kIGJvb2wgPSByZXR1cm5cbiAgICBtZXRob2QgY2hhciA9IHJldHVyblxuICAgIG1ldGhvZCBmbG9hdCA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQzMiA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQ2NCA9IHJldHVyblxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSByZXR1cm5cbiAgICBtZXRob2QgdW5pdCA9IHJldHVyblxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCkgLT5cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgICAgICAnYSBhcnJheSAtPlxuICAgICAgICAgICdhIGFycmF5ICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+XG4gICAgICAgIGxldCBsaXN0LCBlcnJvcnMgPSBzZWxmI2xpc3QgZiBjdHggKEFycmF5LnRvX2xpc3QgYSkgaW5cbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgbGlzdCwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIG90aGVyIDogJ2EuIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIF8gXyAtPiBbXVxuXG4gICAgbWV0aG9kIHJlY29yZCBfY3R4IGZpZWxkcyA9IExpc3QuY29uY2F0X21hcCBmaWVsZHMgfmY6c25kXG4gICAgbWV0aG9kIGNvbnN0ciBfY3R4IF90YWcgYXJncyA9IExpc3QuY29uY2F0IGFyZ3NcbiAgICBtZXRob2QgdHVwbGUgX2N0eCBsID0gTGlzdC5jb25jYXQgbFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGN0eHRcbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFzIGV4cHIpID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfdmFsdWUgZXhwciB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlID4+PSBmdW4gY3R4dCAtPlxuICAgICAgbGV0IGN0eHQgPSBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX2V4cHIgY3R4dCBpblxuICAgICAgbGV0IHBleHBfZGVzYywgZGVzY19lcnJvcnMgPVxuICAgICAgICBtYXRjaCBwZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSkgLT5cbiAgICAgICAgICAgIGxldCBuYW1lLCBuYW1lX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4dCBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZV9leHByLCBtb2R1bGVfZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgICBsZXQgd2l0aF9sZXRfbW9kdWxlID1cbiAgICAgICAgICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSBleHByXG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bW9kdWxlX2V4cHIucG1vZF9sb2MgbmFtZS50eHQgY3R4dFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB3aXRoX2xldF9tb2R1bGUgPj49IGZ1biBjdHh0IC0+IHNlbGYjbW9kdWxlX2V4cHIgY3R4dCBtb2R1bGVfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBib2R5LCBib2R5X2Vycm9ycyA9IHNlbGYjZXhwcmVzc2lvbiBjdHh0IGJvZHkgaW5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHh0IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgbmFtZV9lcnJvcnM7IG1vZHVsZV9leHByX2Vycm9yczsgYm9keV9lcnJvcnMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpLCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHh0IHBleHBfZGVzY1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvYyBpblxuICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBsb2Nfc3RhY2tfZXJyb3JzID1cbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvY19zdGFja1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGN0eHQgcGV4cF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBkZXNjX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIGxvY19zdGFja19lcnJvcnMpO1xuICAgICAgICAgICAgKFwiYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgXSApXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGN0eHQgbWUgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2V4cHIgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl9tb2R1bGUgbWUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2V4cHIgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9leHByIGN0eHQgbWVcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgY3R4dCBtYiA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfYmluZGluZyA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyBtYlxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptYi5wbWJfbG9jIG1iLnBtYl9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfYmluZGluZyA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgY3R4dCBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uIG1kXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1kLnBtZF9sb2MgbWQucG1kX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gbXRkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2M6bXRkLnBtdGRfbG9jXG4gICAgICAgICAgICAgIG10ZC5wbXRkX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPlxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGRcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZCA9XG4gICAgICBsZXQgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiB2ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6dmQucHZhbF9sb2MgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAgICAgICBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIGN0eHRcbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYXMgdmIpID1cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIHZiIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSAoKSAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIGN0eHQgdmJcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpbl9iaW5kaW5nX2N0eHQgPVxuICAgICAgICAgICAgbWF0Y2ggdmFyX25hbWVzX29mI3BhdHRlcm4gcHZiX3BhdCBbXSB3aXRoXG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT4gY3R4dFxuICAgICAgICAgICAgfCBbIHZhcl9uYW1lIF0gLT5cbiAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6cHZiX2xvYyB2YXJfbmFtZSBjdHh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX3BhdCwgcGF0X2Vycm9ycyA9IHNlbGYjcGF0dGVybiBjdHh0IHB2Yl9wYXQgaW5cbiAgICAgICAgICBsZXQgcHZiX2V4cHIsIGV4cHJfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBpbl9iaW5kaW5nX2N0eHQgcHZiX2V4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGluX2JpbmRpbmdfY3R4dCBwdmJfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcHZiX2xvYyBpblxuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwYXRfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBleHByX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBlcnJvcnMpXG4gIGVuZFxuXG5jbGFzcyBzZXhwX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbU2V4cC50XSBBc3QubGlmdFxuICAgIG1ldGhvZCBpbnQgPSBzZXhwX29mX2ludFxuICAgIG1ldGhvZCBzdHJpbmcgPSBzZXhwX29mX3N0cmluZ1xuICAgIG1ldGhvZCBib29sID0gc2V4cF9vZl9ib29sXG4gICAgbWV0aG9kIGNoYXIgPSBzZXhwX29mX2NoYXJcbiAgICBtZXRob2QgZmxvYXQgPSBzZXhwX29mX2Zsb2F0XG4gICAgbWV0aG9kIGludDMyID0gc2V4cF9vZl9pbnQzMlxuICAgIG1ldGhvZCBpbnQ2NCA9IHNleHBfb2ZfaW50NjRcbiAgICBtZXRob2QgbmF0aXZlaW50ID0gc2V4cF9vZl9uYXRpdmVpbnRcbiAgICBtZXRob2QgdW5pdCA9IHNleHBfb2ZfdW5pdFxuICAgIG1ldGhvZCBvcHRpb24gPSBzZXhwX29mX29wdGlvblxuICAgIG1ldGhvZCBsaXN0ID0gc2V4cF9vZl9saXN0XG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSAtPiBTZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHAudCA9IHNleHBfb2ZfYXJyYXlcbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2EgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiXG5cbiAgICBtZXRob2QgcmVjb3JkIGZpZWxkcyA9XG4gICAgICBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAobGFiZWwsIHNleHApIC0+XG4gICAgICAgICAgICAgU2V4cC5MaXN0IFsgQXRvbSBsYWJlbDsgc2V4cCBdKSlcblxuICAgIG1ldGhvZCBjb25zdHIgdGFnIGFyZ3MgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoIFtdIC0+IEF0b20gdGFnIHwgXyAtPiBMaXN0IChBdG9tIHRhZyA6OiBhcmdzKVxuXG4gICAgbWV0aG9kIHR1cGxlIGwgPSBMaXN0IGxcbiAgZW5kXG5cbmxldCBzZXhwX29mID0gbmV3IHNleHBfb2ZcbiIsIiMgMSBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuIFxub3BlbiBMZXhpbmdcblxubGV0IHVwZGF0ZV9sb2MgbGV4YnVmIGxpbmVzX3RvX3NraXAgPVxuICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBwb3Mgd2l0aFxuICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgbGluZXNfdG9fc2tpcDtcbiAgICBwb3NfYm9sID0gcG9zLnBvc19jbnVtO1xuICB9XG5cbiMgMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgc2tpcF9oYXNoX2JhbmcgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE0IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDMgKVxuIyAxMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMSAtPlxuIyAxNiBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAxIClcbiMgMTE4IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDIgLT5cbiMgMTcgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICAoICgpIClcbiMgMTIzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuIEltcG9ydFxuXG5sZXQgd2l0aF9vdXRwdXQgZm4gfmJpbmFyeSB+ZiA9XG4gIG1hdGNoIGZuIHdpdGhcbiAgfCBOb25lIHwgU29tZSBcIi1cIiAtPlxuICAgICAgKCogRmxpcHBpbmcgYmFjayBhbmQgZm9ydGggZnJvbSBiaW5hcnkgdG8gdGV4dCBpcyBub3RcbiAgICAgICAgIGEgZ29vZCBpZGVhLCBzbyB3ZSdsbCBtYWtlIHR3byBzaW1wbGlmeWluZyBhc3N1bXB0aW9uczpcbiAgICAgICAgIDEuIEFzc3VtZSB0aGF0IG5vdGhpbmcgaXMgYnVmZmVyZWQgb24gc3Rkb3V0IGJlZm9yZVxuICAgICAgICAgICAgZW50ZXJpbmcgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICBmbHVzaCB0aGUgc3Rkb3V0IG9uIGVudHJ5LlxuICAgICAgICAgMi4gQXNzdW1lIHRoYXQgbm90aGluZyBlbHNlIGlzIHNlbnQgdG8gc3Rkb3V0IGFmdGVyXG4gICAgICAgICAgICBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIGl0IGlzIHNhZmUgdG8gbGVhdmUgc3Rkb3V0XG4gICAgICAgICAgICBjaGFubmVsIGluIGJpbmFyeSBtb2RlIChvciB0ZXh0IG1vZGUgaWYgW2JpbmFyeT10cnVlXSlcbiAgICAgICAgICAgIGFmdGVyIHRoZSBmdW5jdGlvbiBpcyBkb25lLiAqKVxuICAgICAgc2V0X2JpbmFyeV9tb2RlX291dCBzdGRvdXQgYmluYXJ5O1xuICAgICAgZiBzdGRvdXRcbiAgfCBTb21lIGZuIC0+IE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+YmluYXJ5IH5mXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgfCBJbXBsXG5cbiAgbGV0IG9mX2ZpbGVuYW1lIGZuIDogdCBvcHRpb24gPVxuICAgIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxcIiB0aGVuIFNvbWUgSW1wbFxuICAgIGVsc2UgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbGlcIiB0aGVuIFNvbWUgSW50ZlxuICAgIGVsc2UgTm9uZVxuXG4gIGxldCBkZXNjcmliZSA9IGZ1bmN0aW9uIEltcGwgLT4gXCJpbXBsZW1lbnRhdGlvblwiIHwgSW50ZiAtPiBcImludGVyZmFjZVwiXG4gIGxldCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gUG9seS5lcXVhbFxuZW5kXG5cbm1vZHVsZSBJbnRmX29yX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuXG4gIGxldCBtYXAgdCAobWFwIDogQXN0X3RyYXZlcnNlLm1hcCkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIHgpXG5cbiAgbGV0IG1hcF93aXRoX2NvbnRleHQgdCAobWFwIDogXyBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dCkgY3R4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIGN0eCB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgY3R4IHgpXG5cbiAgbGV0IGtpbmQgOiBfIC0+IEtpbmQudCA9IGZ1bmN0aW9uIEludGYgXyAtPiBJbnRmIHwgSW1wbCBfIC0+IEltcGxcbmVuZFxuXG5tb2R1bGUgQXN0X2lvID0gc3RydWN0XG4gIHR5cGUgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfdmVyc2lvbilcblxuICBsZXQgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKVxuICAoKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgaW5wdXQgdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkIGR1ZSB0b1xuICAgICAgbG9hZGluZyBvciBwcmVwcm9jZXNzaW5nIGVycm9ycyAqKVxuXG4gIHR5cGUgdCA9IHtcbiAgICBpbnB1dF9uYW1lIDogc3RyaW5nO1xuICAgIGlucHV0X3ZlcnNpb24gOiBpbnB1dF92ZXJzaW9uO1xuICAgIGFzdCA6IEludGZfb3JfaW1wbC50O1xuICB9XG5cbiAgdHlwZSByZWFkX2Vycm9yID1cbiAgICB8IE5vdF9hX2JpbmFyeV9hc3RcbiAgICB8IFVua25vd25fdmVyc2lvbiBvZiBzdHJpbmcgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFN5c3RlbV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuXG4gIHR5cGUgaW5wdXRfc291cmNlID0gU3RkaW4gfCBGaWxlIG9mIHN0cmluZ1xuICB0eXBlIGlucHV0X2tpbmQgPSBQb3NzaWJseV9zb3VyY2Ugb2YgS2luZC50ICogc3RyaW5nIHwgTmVjZXNzYXJpbHlfYmluYXJ5XG5cbiAgbGV0IHJlYWRfZXJyb3JfdG9fc3RyaW5nIChlcnJvciA6IHJlYWRfZXJyb3IpID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0IC0+IFwiRXJyb3I6IE5vdCBhIGJpbmFyeSBhc3RcIlxuICAgIHwgVW5rbm93bl92ZXJzaW9uIChzLCBfKSAtPiBcIkVycm9yOiBVbmtub3duIHZlcnNpb24gXCIgXiBzXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3IgKGxvYywgXykgLT5cbiAgICAgICAgXCJTb3VyY2UgcGFyc2UgZXJyb3I6XCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuICAgIHwgU3lzdGVtX2Vycm9yIChsb2MsIF8pIC0+IFwiU3lzdGVtIGVycm9yOiBcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG5cbiAgbGV0IHBhcnNlX3NvdXJjZV9jb2RlIH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGljXG4gICAgICA9XG4gICAgKCogVGhlIGlucHV0IHZlcnNpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBpbnB1dCB3aWxsIGdldCBwYXJzZWQgYnlcbiAgICAgICB0aGUgY3VycmVudCBjb21waWxlciBQYXJzZSBtb2R1bGUgKilcbiAgICBsZXQgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIGluXG4gICAgdHJ5XG4gICAgICAoKiBUbyB0ZXN0IGlmIGEgZmlsZSBpcyBhbiBBU1QgZmlsZSwgd2UgaGF2ZSB0byByZWFkIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgdGhlXG4gICAgICAgICAgZmlsZS4gSWYgaXQgaXMgbm90LCB3ZSBoYXZlIHRvIHBhcnNlIHRoZXNlIGJ5dGVzIGFuZCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBhc1xuICAgICAgICAgIHNvdXJjZSBjb2RlLlxuXG4gICAgICAgICAgVGhlIGNvbXBpbGVyIGp1c3QgZG9lcyBbc2Vla19vbiAwXSBpbiB0aGlzIGNhc2UsIGhvd2V2ZXIgdGhpcyBkb2Vzbid0IHdvcmsgd2hlblxuICAgICAgICAgIHRoZSBpbnB1dCBpcyBhIHBpcGUuXG5cbiAgICAgICAgICBXaGF0IHdlIGRvIGluc3RlYWQgaXMgY3JlYXRlIGEgbGV4aW5nIGJ1ZmZlciBmcm9tIHRoZSBpbnB1dCBjaGFubmVsIGFuZCBwcmUtZmlsbFxuICAgICAgICAgIGl0IHdpdGggd2hhdCB3ZSByZWFkIHRvIGRvIHRoZSB0ZXN0LiAqKVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHByZWZpeF9yZWFkX2Zyb21fc291cmNlIGluXG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnByZWZpeF9yZWFkX2Zyb21fc291cmNlIH5zcmNfcG9zOjBcbiAgICAgICAgfmRzdDpsZXhidWYubGV4X2J1ZmZlciB+ZHN0X3BvczowIH5sZW47XG4gICAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGVuO1xuICAgICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgICAgeyBwb3NfZm5hbWUgPSBpbnB1dF9uYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IDAgfTtcbiAgICAgIFNraXBfaGFzaF9iYW5nLnNraXBfaGFzaF9iYW5nIGxleGJ1ZjtcbiAgICAgIGxldCBhc3QgOiBJbnRmX29yX2ltcGwudCA9XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IEludGYgLT4gSW50ZiAoUGFyc2UuaW50ZXJmYWNlIGxleGJ1ZilcbiAgICAgICAgfCBJbXBsIC0+IEltcGwgKFBhcnNlLmltcGxlbWVudGF0aW9uIGxleGJ1ZilcbiAgICAgIGluXG4gICAgICBPayB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgbWFnaWNfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG4gIGxldCByZWFkX21hZ2ljIGljID1cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIH5wb3M6MCB+bGVuIGluXG4gICAgaWYgbGVuID0gbWFnaWNfbGVuZ3RoIHRoZW4gT2sgcyBlbHNlIEVycm9yIHNcblxuICBsZXQgZnJvbV9jaGFubmVsIGNoIH5pbnB1dF9raW5kID1cbiAgICBsZXQgaGFuZGxlX25vbl9iaW5hcnkgcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgPVxuICAgICAgbWF0Y2ggaW5wdXRfa2luZCB3aXRoXG4gICAgICB8IFBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgLT5cbiAgICAgICAgICBwYXJzZV9zb3VyY2VfY29kZSB+a2luZCB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgY2hcbiAgICAgIHwgTmVjZXNzYXJpbHlfYmluYXJ5IC0+IEVycm9yIE5vdF9hX2JpbmFyeV9hc3RcbiAgICBpblxuICAgICgqIE1hcnNoYWxsZWQgQVNUIG11c3QgYmUgcmVhZCBpbiBiaW5hcnkgbW9kZS4gRXZlbiB0aG91Z2ggd2UgZG9uJ3Qga25vd1xuICAgICAgIGJlZm9yZSByZWFkaW5nIHRoZSBtYWdpYyBudW1iZXIgd2hlbiB0aGUgZmlsZSBoYXMgYSBtYXJzaGFsbGVkIEFTVCxcbiAgICAgICBpdCBpcyBzYWZlIHRvIHJlYWQgc291cmNlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAqKVxuICAgIHNldF9iaW5hcnlfbW9kZV9pbiBjaCB0cnVlO1xuICAgIG1hdGNoIHJlYWRfbWFnaWMgY2ggd2l0aFxuICAgIHwgRXJyb3IgcyAtPiBoYW5kbGVfbm9uX2JpbmFyeSBzXG4gICAgfCBPayBzIC0+IChcbiAgICAgICAgbWF0Y2ggRmluZF92ZXJzaW9uLmZyb21fbWFnaWMgcyB3aXRoXG4gICAgICAgIHwgSW50ZiAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW50ZiAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc2lnbmF0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBJbXBsIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbXBsIChJbnB1dF90b19wcHhsaWIuY29weV9zdHJ1Y3R1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IFVua25vd24gLT5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICB8fCBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgIHRoZW4gRXJyb3IgKFVua25vd25fdmVyc2lvbiAocywgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKVxuICAgICAgICAgICAgZWxzZSBoYW5kbGVfbm9uX2JpbmFyeSBzKVxuXG4gIGxldCByZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBpbnB1dF9zb3VyY2Ugd2l0aFxuICAgICAgfCBTdGRpbiAtPlxuICAgICAgICAgIHNldF9iaW5hcnlfbW9kZV9pbiBzdGRpbiB0cnVlO1xuICAgICAgICAgIGZyb21fY2hhbm5lbCBzdGRpbiB+aW5wdXRfa2luZFxuICAgICAgfCBGaWxlIGZuIC0+IEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQpXG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IHdyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbik7IGFzdCB9XG4gICAgICB+YWRkX3BweF9jb250ZXh0ID1cbiAgICBsZXQgbW9kdWxlIFBweGxpYl90b19pbnB1dCA9IENvbnZlcnQgKEpzKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBsZXQgbW9kdWxlIE9jYW1sX3RvX2lucHV0ID0gQ29udmVydCAoQ29tcGlsZXJfdmVyc2lvbikgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbWF0Y2ggYXN0IHdpdGhcbiAgICB8IEludGYgc2cgLT5cbiAgICAgICAgbGV0IHNnID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zaWduYXR1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc2dcbiAgICB8IEltcGwgc3QgLT5cbiAgICAgICAgbGV0IHN0ID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc3RcblxuICBtb2R1bGUgUmVhZF9iaW4gPSBzdHJ1Y3RcbiAgICB0eXBlIGFzdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcbiAgICB0eXBlIHQgPSB7IGFzdCA6IGFzdDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgICBsZXQgcmVhZF9iaW5hcnkgZm4gPVxuICAgICAgbWF0Y2hcbiAgICAgICAgSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZDpOZWNlc3NhcmlseV9iaW5hcnkpXG4gICAgICB3aXRoXG4gICAgICB8IE9rIHsgYXN0OyBpbnB1dF9uYW1lOyBfIH0gLT5cbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgICB8IEltcGwgc3RydWN0dXJlIC0+IEltcGwgc3RydWN0dXJlXG4gICAgICAgICAgICB8IEludGYgc2lnbmF0dXJlIC0+IEludGYgc2lnbmF0dXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IGFzdDsgaW5wdXRfbmFtZSB9XG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKHJlYWRfZXJyb3JfdG9fc3RyaW5nIGUpXG5cbiAgICBsZXQgZ2V0X2FzdCB0ID0gdC5hc3RcbiAgICBsZXQgZ2V0X2lucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3lzdGVtID0gc3RydWN0XG4gIGxldCBydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQgfm91dHB1dCA9XG4gICAgbGV0IGNvbW1hbmQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyA+ICVzXCIgcHBcbiAgICAgICAgKGlmIFN0cmluZy5lcXVhbCBpbnB1dCBcIi1cIiB0aGVuIFwiXCIgZWxzZSBTdGRsaWIuRmlsZW5hbWUucXVvdGUgaW5wdXQpXG4gICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgb3V0cHV0KVxuICAgIGluXG4gICAgaWYgU3RkbGliLlN5cy5jb21tYW5kIGNvbW1hbmQgPSAwIHRoZW4gT2sgKClcbiAgICBlbHNlIEVycm9yIChjb21tYW5kLCBBc3RfaW8uZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcbm1vZHVsZSBGaWxlbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZVxuXG4oKiBUT0RPOiBtYWtlIHRoZSBcImRlcml2aW5nLlwiIGRlcGVuZCBvbiB0aGUgbWF0Y2hpbmcgYXR0cmlidXRlIG5hbWUuICopXG5sZXQgZW5kX21hcmtlcl9zaWcgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFNpZ25hdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBlbmRfbWFya2VyX3N0ciA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU3RydWN0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgdHlwZSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGdldF9sb2MgOiB0IC0+IExvY2F0aW9uLnRcbiAgdmFsIGVuZF9tYXJrZXIgOiAodCwgdW5pdCkgQXR0cmlidXRlLkZsb2F0aW5nLnRcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpIDogc2lnXG4gICAgdmFsIGFwcGx5IDpcbiAgICAgIDwgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSBULnRcbiAgICAgIDsgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSBULnRcbiAgICAgIDsgLi4gPiAtPlxuICAgICAgdCBULnRcbiAgZW5kXG5cbiAgdmFsIHBhcnNlIDogTGV4aW5nLmxleGJ1ZiAtPiB0IGxpc3RcbiAgdmFsIHBwIDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3NleHAgOiB0IC0+IFNleHAudFxuZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGV4dHJhY3RfcHJlZml4IH5wb3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwicHB4bGliOiBbQEBAQEBAJXNdIGF0dHJpYnV0ZSBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICAoQXR0cmlidXRlLkZsb2F0aW5nLm5hbWUgTS5lbmRfbWFya2VyKSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5GbG9hdGluZy5jb252ZXJ0X3JlcyBbIE0uZW5kX21hcmtlciBdIHggd2l0aFxuICAgICAgICAgIHwgT2sgTm9uZSAtPiBsb29wICh4IDo6IGFjYykgbFxuICAgICAgICAgIHwgT2sgKFNvbWUgKCkpIC0+IE9rIChMaXN0LnJldiBhY2MsIChNLmdldF9sb2MgeCkubG9jX3N0YXJ0KVxuICAgICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgICAgICAgfCBleGNlcHRpb24gRmFpbHVyZSBfIC0+IGxvb3AgKHggOjogYWNjKSBsKVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cbiAgbGV0IHJlbW92ZV9sb2MgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgICBtZXRob2QhIGxvY2F0aW9uIF8gPSBMb2NhdGlvbi5ub25lXG4gICAgICBtZXRob2QhIGxvY2F0aW9uX3N0YWNrIF8gPSBbXVxuICAgIGVuZFxuXG4gIG1vZHVsZSBNX21hcCA9IE0uVHJhbnNmb3JtIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IHJlbW92ZV9sb2MgeCA9IE1fbWFwLmFwcGx5IHJlbW92ZV9sb2MgeFxuICBsZXQgcmVjIGxhc3QgcHJldiA9IGZ1bmN0aW9uIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgZGlmZl9hc3RzIH5nZW5lcmF0ZWQgfnJvdW5kX3RyaXAgPVxuICAgIGxldCB3aXRoX3RlbXBfZmlsZSBmID1cbiAgICAgIEV4bi5wcm90ZWN0eFxuICAgICAgICAoRmlsZW5hbWUudGVtcF9maWxlIFwicHB4bGliXCIgXCJcIilcbiAgICAgICAgfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmZcbiAgICBpblxuICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4xIC0+XG4gICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4yIC0+XG4gICAgICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgIGxldCBkdW1wIGZuIGFzdCA9XG4gICAgICAgICAgICAgICAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZ1biBvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgU2V4cC5wcF9odW0gcHBmIChNLnRvX3NleHAgYXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZHVtcCBmbjEgZ2VuZXJhdGVkO1xuICAgICAgICAgICAgICAgIGR1bXAgZm4yIHJvdW5kX3RyaXA7XG4gICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICBcInBhdGRpZmYgLWFzY2lpIC1hbHQtb2xkIGdlbmVyYXRlZCAtYWx0LW5ldyBcXFxuICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb2sgPVxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcImRpZmYgLS1sYWJlbCBnZW5lcmF0ZWQgLS1sYWJlbCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIG9rIHRoZW4gSW5fY2hhbm5lbC5yZWFkX2FsbCBvdXRcbiAgICAgICAgICAgICAgICBlbHNlIFwiPG5vIGRpZmZlcmVuY2VzIHByb2R1Y2VkIGJ5IGRpZmY+XCIpKSlcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHMgPVxuICAgIG1hdGNoIE0ucGFyc2UgKExleGluZy5mcm9tX3N0cmluZyBzKSB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCByZWMgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZSA9XG4gICAgbWF0Y2ggKGV4cGVjdGVkLCBzb3VyY2UpIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAoKVxuICAgIHwgW10sIHggOjogbCAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IChNLmdldF9sb2MgeCkgd2l0aCBsb2NfZW5kID0gKE0uZ2V0X2xvYyAobGFzdCB4IGwpKS5sb2NfZW5kIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgW11cbiAgICB8IF8sIFtdIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgTG9jYXRpb24ubG9jX2dob3N0ID0gZmFsc2U7IGxvY19zdGFydCA9IGVuZF9wb3M7IGxvY19lbmQgPSBlbmRfcG9zIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgZXhwZWN0ZWRcbiAgICB8IHggOjogZXhwZWN0ZWQsIHkgOjogc291cmNlIC0+XG4gICAgICAgIGxldCBsb2MgPSBNLmdldF9sb2MgeSBpblxuICAgICAgICBsZXQgeCA9IHJlbW92ZV9sb2MgeCBpblxuICAgICAgICBsZXQgeSA9IHJlbW92ZV9sb2MgeSBpblxuICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJvdW5kX3RyaXAgPVxuICAgICAgICAgICAgcmVtb3ZlX2xvYyAocGFyc2Vfc3RyaW5nIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgTS5wcCB4KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIFBvbHkuKCA8PiApIHggcm91bmRfdHJpcCB0aGVuXG4gICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgICAgICAgICAgICBcInBweGxpYjogdGhlIGNvcnJlY3RlZCBjb2RlIGRvZXNuJ3Qgcm91bmQtdHJpcC5cXG5cXFxuICAgICAgICAgICAgICAgVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB0aGUgT0NhbWwgcHJpbnRlcjpcXG5cXFxuICAgICAgICAgICAgICAgJXNcIlxuICAgICAgICAgICAgICAoZGlmZl9hc3RzIH5nZW5lcmF0ZWQ6eCB+cm91bmRfdHJpcCk7XG4gICAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgWyB4IF0pO1xuICAgICAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5cbiAgbGV0IGRvX21hdGNoIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIHNvdXJjZSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZXh0cmFjdF9wcmVmaXggfnBvcyBzb3VyY2UgPj58IGZ1biAoc291cmNlLCBlbmRfcG9zKSAtPlxuICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcbmVuZFxuXG4oKiQqKVxubW9kdWxlIFN0ciA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzdHJfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zdHJcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3N0cnVjdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmltcGxlbWVudGF0aW9uXG4gIGxldCBwcCA9IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZV9pdGVtXG5lbmQpXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbm1vZHVsZSBTaWcgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc2lnbmF0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc2lnX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc2lnXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzaWduYXR1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbnRlcmZhY2VcbiAgbGV0IHBwID0gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlX2l0ZW1cbmVuZClcblxuKCokKilcblxubGV0IG1hdGNoX3N0cnVjdHVyZV9yZXMgPSBTdHIuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3N0cnVjdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc3RydWN0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBtYXRjaF9zaWduYXR1cmVfcmVzID0gU2lnLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zaWduYXR1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3NpZ25hdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxuXG50eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQcHhfaW1wb3J0IDogdHlwZV9kZWNsYXJhdGlvbiB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgUHB4X2ltcG9ydCAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuXG4gIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICBmdW4gYSBiIC0+XG4gICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIENsYXNzX2V4cHIgLT4gRXFcbiAgICB8IENsYXNzX2ZpZWxkLCBDbGFzc19maWVsZCAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZSwgQ2xhc3NfdHlwZSAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgQ2xhc3NfdHlwZV9maWVsZCAtPiBFcVxuICAgIHwgQ29yZV90eXBlLCBDb3JlX3R5cGUgLT4gRXFcbiAgICB8IEV4cHJlc3Npb24sIEV4cHJlc3Npb24gLT4gRXFcbiAgICB8IE1vZHVsZV9leHByLCBNb2R1bGVfZXhwciAtPiBFcVxuICAgIHwgTW9kdWxlX3R5cGUsIE1vZHVsZV90eXBlIC0+IEVxXG4gICAgfCBQYXR0ZXJuLCBQYXR0ZXJuIC0+IEVxXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgU2lnbmF0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCBTdHJ1Y3R1cmVfaXRlbSAtPiBFcVxuICAgIHwgUHB4X2ltcG9ydCwgUHB4X2ltcG9ydCAtPiBFcVxuICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKFBvbHkuKCA8PiApIChUIGEpIChUIGIpKTtcbiAgICAgICAgTmVcblxuICBsZXQgZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbCA9XG4gICAgbWF0Y2ggdHlwZV9kZWNsIHdpdGhcbiAgICB8IHsgcHR5cGVfbWFuaWZlc3QgPSBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gKG5hbWUsIF8pOyBfIH07IF8gfVxuICAgICAgLT5cbiAgICAgICAgbGV0IHZpcnR1YWxfcGF5bG9hZCA9XG4gICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX3R5cGUgfmxvYzp0eXBlX2RlY2wucHR5cGVfbG9jIFJlY3Vyc2l2ZVxuICAgICAgICAgICAgWyB0eXBlX2RlY2wgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0ciA9IFtdIGluXG4gICAgICAgIFNvbWUgKChuYW1lLCBQU3RyIFsgdmlydHVhbF9wYXlsb2FkIF0pLCBhdHRyKVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9leHRlbnNpb24gOiB0eXBlIGEuIGEgdCAtPiBhIC0+IChleHRlbnNpb24gKiBhdHRyaWJ1dGVzKSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBDbGFzc19leHByLCB7IHBjbF9kZXNjID0gUGNsX2V4dGVuc2lvbiBlOyBwY2xfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGU7IHBjZl9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlLCB7IHBjdHlfZGVzYyA9IFBjdHlfZXh0ZW5zaW9uIGU7IHBjdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBlOyBwY3RmX2F0dHJpYnV0ZXMgPSBhOyBfIH1cbiAgICAgIC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDb3JlX3R5cGUsIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gZTsgcHR5cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBFeHByZXNzaW9uLCB7IHBleHBfZGVzYyA9IFBleHBfZXh0ZW5zaW9uIGU7IHBleHBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX2V4cHIsIHsgcG1vZF9kZXNjID0gUG1vZF9leHRlbnNpb24gZTsgcG1vZF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfdHlwZSwgeyBwbXR5X2Rlc2MgPSBQbXR5X2V4dGVuc2lvbiBlOyBwbXR5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFBhdHRlcm4sIHsgcHBhdF9kZXNjID0gUHBhdF9leHRlbnNpb24gZTsgcHBhdF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFBweF9pbXBvcnQsIHR5cGVfZGVjbCAtPiBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlc19yZXMgOlxuICAgICAgdHlwZSBhLlxuICAgICAgYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiAoYSwgTG9jYXRpb24uRXJyb3IudCBOb25FbXB0eUxpc3QudCkgcmVzdWx0ID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENsYXNzX2V4cHIgLT4gT2sgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSB4LnBjbF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4gT2sgeyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSB4LnBjZl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiBPayB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSB4LnBjdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT5cbiAgICAgICAgT2sgeyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0geC5wY3RmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4gT2sgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0geC5wdHlwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IE9rIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IHgucGV4cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4gT2sgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0geC5wbW9kX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiBPayB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSB4LnBtdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4gT2sgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0geC5wcGF0X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBQcHhfaW1wb3J0IC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtZXJnZV9hdHRyaWJ1dGVzX3JlcyB0IHggYXR0cnNcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJleHRlbnNpb25cIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW4gKENvbnRleHQuVCBjdHgpIC0+IFNvbWUgKENvbnRleHQuZGVzYyBjdHgpKVxuXG5tb2R1bGUgTWFrZSAoQ2FsbGJhY2sgOiBzaWdcbiAgdHlwZSAnYSB0XG5lbmQpID1cbnN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHBheWxvYWRfcGFyc2VyID1cbiAgICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgICAgKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQgKiAnYiBDYWxsYmFjay50XG4gICAgICAgIC0+ICgnYSwgJ2MpIHBheWxvYWRfcGFyc2VyXG5cbiAgdHlwZSAoJ2NvbnRleHQsICdwYXlsb2FkKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2NvbnRleHQgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAocGF5bG9hZCwgJ3BheWxvYWQpIHBheWxvYWRfcGFyc2VyO1xuICAgIHdpdGhfYXJnIDogYm9vbDtcbiAgfVxuXG4gIGxldCBkZWNsYXJlIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIHdpdGhfYXJnOmJvb2wgLT5cbiAgICAgIHN0cmluZyAtPlxuICAgICAgYSBDb250ZXh0LnQgLT5cbiAgICAgIChwYXlsb2FkLCAnYiwgJ3BheWxvYWQpIEFzdF9wYXR0ZXJuLnQgLT5cbiAgICAgICdiIENhbGxiYWNrLnQgLT5cbiAgICAgIChhLCAncGF5bG9hZCkgdCA9XG4gICBmdW4gfndpdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgLT5cbiAgICAoKiBDaGVjayB0aGF0IHRoZXJlIGlzIG5vIGNvbGxpc2lvbnMgYmV0d2VlbiBwcHhfaW1wb3J0IGFuZCBjb3JlX3R5cGVcbiAgICAgICBleHRlbnNpb25zICopXG4gICAgKG1hdGNoIGNvbnRleHQgd2l0aFxuICAgIHwgQ29udGV4dC5QcHhfaW1wb3J0IC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgQ29yZV90eXBlKSBuYW1lXG4gICAgfCBDb250ZXh0LkNvcmVfdHlwZSAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIFBweF9pbXBvcnQpIG5hbWVcbiAgICB8IF8gLT4gKCkpO1xuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBFeHRlbnNpb24gcmVnaXN0cmFyIChDb250ZXh0LlQgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICAgICAgd2l0aF9hcmc7XG4gICAgfVxuXG4gIGxldCBmaW5kIHRzIChleHQgOiBleHRlbnNpb24pID1cbiAgICBsZXQgeyB0eHQgPSBuYW1lOyBsb2MgfSA9IGZzdCBleHQgaW5cbiAgICBsZXQgbmFtZSwgYXJnID0gTmFtZS5zcGxpdF9wYXRoIG5hbWUgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IF8gOjogXyA6OiBfIGFzIGwgLT5cbiAgICAgICAgRXJyb3JcbiAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIk11bHRpcGxlIG1hdGNoIGZvciBleHRlbnNpb25zOiAlc1wiXG4gICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICBbXSApXG4gICAgfCBbIHQgXSAtPlxuICAgICAgICBpZiAobm90IHQud2l0aF9hcmcpICYmIE9wdGlvbi5pc19zb21lIGFyZyB0aGVuXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgICAgICAgICAgXCJFeHRlbnNpb24gJXMgZG9lc24ndCBleHBlY3QgYSBwYXRoIGFyZ3VtZW50XCIgbmFtZSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGFyZyA9XG4gICAgICAgICAgICBPcHRpb24ubWFwIGFyZyB+ZjooZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2hpZnQgPSBTdHJpbmcubGVuZ3RoIG5hbWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gbG9jLmxvY19zdGFydCBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR4dCA9IExvbmdpZGVudC5wYXJzZSBzO1xuICAgICAgICAgICAgICAgICAgbG9jID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGxvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhcnQgd2l0aCBwb3NfY251bSA9IHN0YXJ0LnBvc19jbnVtICsgc2hpZnQgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgKFNvbWUgKHQsIGFyZykpXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY3R4IHBhdHQgZlxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjdHggcGF0dCAoZnVuIH5hcmc6XyAtPiBmKVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZmluZCB0cyBleHQgPj49IGZ1biByIC0+XG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+XG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmFyZykgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIFNvbWUgcGF5bG9hZFxuXG4gIGxldCBjb252ZXJ0IHRzIH5sb2MgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubW9kdWxlIE0gPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi50IC0+IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbmVuZClcblxudHlwZSAnYSBleHBhbmRlcl9yZXN1bHQgPSBTaW1wbGUgb2YgJ2EgfCBJbmxpbmUgb2YgJ2EgbGlzdFxuXG5tb2R1bGUgRm9yX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCAnYSBleHBhbmRlcl9yZXN1bHQpIE0udFxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gICAgICAgIHwgU2ltcGxlIHggLT4gU29tZSB4XG4gICAgICAgIHwgSW5saW5lIF8gLT4gZmFpbHdpdGggXCJFeHRlbnNpb24uY29udmVydFwiKVxuXG4gIGxldCBjb252ZXJ0IHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxuICBsZXQgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGggU2ltcGxlIHggLT4gU29tZSBbIHggXSB8IElubGluZSBsIC0+IFNvbWUgbClcblxuICBsZXQgY29udmVydF9pbmxpbmUgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG50eXBlIHQgPSBUIDogXyBGb3JfY29udGV4dC50IC0+IHRcblxubGV0IGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSA6IHR5cGUgYS4gZnVuYzpzdHJpbmcgLT4gYSBDb250ZXh0LnQgLT4gdW5pdCA9XG4gZnVuIH5mdW5jIGN0eCAtPlxuICBtYXRjaCBjdHggd2l0aFxuICB8IENvbnRleHQuQ2xhc3NfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LkNsYXNzX3R5cGVfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LlNpZ25hdHVyZV9pdGVtIC0+ICgpXG4gIHwgQ29udGV4dC5TdHJ1Y3R1cmVfaXRlbSAtPiAoKVxuICB8IGNvbnRleHQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIiVzOiAlcyBjYW4ndCBiZSBpbmxpbmVkXCIgZnVuY1xuICAgICAgICAoQ29udGV4dC5kZXNjIGNvbnRleHQpXG5cbmxldCByZWMgZmlsdGVyX2J5X2NvbnRleHQgOlxuICAgIHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gdCBsaXN0IC0+IGEgRm9yX2NvbnRleHQudCBsaXN0ID1cbiBmdW4gY29udGV4dCBleHBhbmRlcnMgLT5cbiAgbWF0Y2ggZXhwYW5kZXJzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFQgdCA6OiByZXN0IC0+IChcbiAgICAgIG1hdGNoIENvbnRleHQuZXEgY29udGV4dCB0LmNvbnRleHQgd2l0aFxuICAgICAgfCBFcSAtPiB0IDo6IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdFxuICAgICAgfCBOZSAtPiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3QpXG5cbmxldCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIGN0eCAobmFtZSwgXykgPVxuICBpZlxuICAgIG5vdFxuICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEV4dGVuc2lvbiBuYW1lLnR4dFxuICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KVxuICB0aGVuXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgKENvbnRleHQuVCBjdHgpXG4gICAgICAgIFwiRXh0ZW5zaW9uIGAlcycgd2FzIG5vdCB0cmFuc2xhdGVkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgYWNjID1cbiAgICAgIGFjY1xuICAgICAgQCBbXG4gICAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgICAgXVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ29yZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgUGF0dGVybiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBFeHByZXNzaW9uIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0Zl9leHRlbnNpb24gZXh0IC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNmX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFNpZ25hdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU3RydWN0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuICBlbmRcblxubGV0IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3BhdHRlcm5fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2V4cHJlc3Npb25fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cbiAgZW5kXG5cbm1vZHVsZSBWMyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHQgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5lbmRcblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgX19kZWNsYXJlX3BweF9pbXBvcnQgbmFtZSBleHBhbmQgPVxuICAoKiBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byB1bndyYXAgdGhlIHR5cGUgZGVjbGFyYXRpb24gZnJvbSB0aGUgcGF5bG9hZFxuICAgICBhc3NlbWJsZWQgYnkgW0NvbnRleHQuZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uXSAqKVxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX3R5cGUgcmVjdXJzaXZlIChfXyBeOjogbmlsKSBeOjogbmlsKSkgaW5cbiAgVjMuZGVjbGFyZSBuYW1lIENvbnRleHQuUHB4X2ltcG9ydCBwYXR0ZXJuIGV4cGFuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSA9IGRlY2xhcmVcbiAgbGV0IGRlY2xhcmVfaW5saW5lID0gZGVjbGFyZV9pbmxpbmVcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEUgPSBFeHRlbnNpb25cbm1vZHVsZSBFQyA9IEV4dGVuc2lvbi5Db250ZXh0XG5tb2R1bGUgQSA9IEF0dHJpYnV0ZVxubW9kdWxlIEFDID0gQXR0cmlidXRlLkNvbnRleHRcblxubW9kdWxlIFJ1bGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF0dHJfZ3JvdXBfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOlxuICAgICAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgICAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICAgICAnYiBsaXN0IC0+XG4gICAgICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgICAgICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIEF0dHJfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjaWFsX2Z1bmN0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGlkZW50IDogTG9uZ2lkZW50LnQ7XG4gICAgICBleHBhbmQgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbiBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnRfa2luZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEZsb2F0IHwgSW50ZWdlclxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdWZmaXggOiBjaGFyO1xuICAgICAga2luZCA6IENvbnN0YW50X2tpbmQudDtcbiAgICAgIGV4cGFuZCA6IExvY2F0aW9uLnQgLT4gc3RyaW5nIC0+IFBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgRXh0ZW5zaW9uIDogRXh0ZW5zaW9uLnQgdFxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uIDogU3BlY2lhbF9mdW5jdGlvbi50IHRcbiAgICAgIHwgQ29uc3RhbnQgOiBDb25zdGFudC50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuXG4gICAgdHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxuICAgIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICAgIGZ1biBhIGIgLT5cbiAgICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgICB8IEV4dGVuc2lvbiwgRXh0ZW5zaW9uIC0+IEVxXG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24sIFNwZWNpYWxfZnVuY3Rpb24gLT4gRXFcbiAgICAgIHwgQ29uc3RhbnQsIENvbnN0YW50IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbCwgQXR0cl9zdHJfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbCwgQXR0cl9zaWdfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0LCBBdHRyX3N0cl90eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCwgQXR0cl9zaWdfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uLCBBdHRyX3N0cl9leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uLCBBdHRyX3NpZ19leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IF8gLT4gTmVcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhIEZpZWxkLnQgKiAnYSAtPiB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9ncm91cF9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAnYiBsaXN0IC0+XG4gICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAnYSBsaXN0KSAtPlxuICAgIHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgbGV0IHJlYyBmaWx0ZXIgOiB0eXBlIGEuIGEgRmllbGQudCAtPiB0IGxpc3QgLT4gYSBsaXN0ID1cbiAgIGZ1biBmaWVsZCBsIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgVCAoZmllbGQnLCB4KSA6OiBsIC0+IChcbiAgICAgICAgbWF0Y2ggRmllbGQuZXEgZmllbGQgZmllbGQnIHdpdGhcbiAgICAgICAgfCBGaWVsZC5FcSAtPiB4IDo6IGZpbHRlciBmaWVsZCBsXG4gICAgICAgIHwgRmllbGQuTmUgLT4gZmlsdGVyIGZpZWxkIGwpXG5cbiAgbGV0IGV4dGVuc2lvbiBleHQgPSBUIChFeHRlbnNpb24sIGV4dClcblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbiBpZCBmID1cbiAgICBUIChTcGVjaWFsX2Z1bmN0aW9uLCB7IG5hbWUgPSBpZDsgaWRlbnQgPSBMb25naWRlbnQucGFyc2UgaWQ7IGV4cGFuZCA9IGYgfSlcblxuICBsZXQgY29uc3RhbnQga2luZCBzdWZmaXggZXhwYW5kID0gVCAoQ29uc3RhbnQsIHsgc3VmZml4OyBraW5kOyBleHBhbmQgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHQgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHQgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuZW5kXG5cbm1vZHVsZSBHZW5lcmF0ZWRfY29kZV9ob29rID0gc3RydWN0XG4gIHR5cGUgJ2Egc2luZ2xlX29yX21hbnkgPSBTaW5nbGUgb2YgJ2EgfCBNYW55IG9mICdhIGxpc3RcblxuICB0eXBlIHQgPSB7XG4gICAgZiA6ICdhLiAnYSBFeHRlbnNpb24uQ29udGV4dC50IC0+IExvY2F0aW9uLnQgLT4gJ2Egc2luZ2xlX29yX21hbnkgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG4gIGxldCByZXBsYWNlIHQgY29udGV4dCBsb2MgeCA9IHQuZiBjb250ZXh0IGxvYyB4XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTWFueSBbXSAtPiAoKVxuICAgIHwgXyAtPiB0LmYgY29udGV4dCB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0geFxuZW5kXG5cbmxldCByZWMgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgRUMubWVyZ2VfYXR0cmlidXRlc19yZXMgY29udGV4dCB4IGF0dHJzXG4gICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzKVxuXG5sZXQgbWFwX25vZGUgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+aG9vayB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHRcbiAgICAgICAgICAgIChFQy5tZXJnZV9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRycylcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICA+PnwgZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBsb2MgKFNpbmdsZSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgZ2VuZXJhdGVkX2NvZGUpXG5cbmxldCByZWMgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rIH5lbWJlZF9lcnJvcnNcbiAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gW11cbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhlc2UgdHdvIGxldHMgZm9yY2UgdGhlIGV2YWx1YXRpb24gb3JkZXIsIHNvIHRoYXQgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGVcbiAgICAgICAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4gKilcbiAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGdldF9sb2MgeCBpblxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICAgICAgfCBTb21lIGNvbnZlcnRlZCAtPlxuICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgY29udmVydGVkIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICAgICAgICA+Pj0gZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBleHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAoTWFueSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gY29kZSAtPiBnZW5lcmF0ZWRfY29kZSBAIGNvZGUpKVxuXG5sZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG5sZXQgdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnMgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICBtYXRjaFxuICAgIExpc3QubWFwIHNwZWNpYWxfZnVuY3Rpb25zXG4gICAgICB+ZjooZnVuIHsgUnVsZS5TcGVjaWFsX2Z1bmN0aW9uLmlkZW50OyBleHBhbmQ7IF8gfSAtPiAoaWRlbnQsIGV4cGFuZCkpXG4gICAgKCogV2UgZXhwZWN0IHRoZSBsb29rdXAgdG8gZmFpbCBtb3N0IG9mIHRoZSB0aW1lLCBieSBtYWtpbmcgdGhlIHRhYmxlIGJpZyAoYW5kXG4gICAgICAgc3BhcnNlKSwgd2UgbWFrZSBpdCBtb3JlIGxpa2VseSB0byBmYWlsIHF1aWNrbHkgKilcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0IH5zaXplOihtYXggMTAyNCAoTGlzdC5sZW5ndGggc3BlY2lhbF9mdW5jdGlvbnMgKiAyKSlcbiAgd2l0aFxuICB8IE9rIHRhYmxlIC0+IHRhYmxlXG4gIHwgRXJyb3IgaWRlbnQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkNvbnRleHRfZnJlZS5WMS5tYXBfdG9wX2Rvd246ICVzIHByZXNlbnQgdHdpY2UgaW4gbGlzdCBvZiBzcGVjaWFsIFxcXG4gICAgICAgICBmdW5jdGlvbnNcIlxuICAgICAgICAoTGlzdC5maW5kX21hcF9leG4gc3BlY2lhbF9mdW5jdGlvbnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgaWYgUG9seS5lcXVhbCByLmlkZW50IGlkZW50IHRoZW4gU29tZSByLm5hbWUgZWxzZSBOb25lKSlcblxuKCogW2dldF9ncm91cCBhdHRyIGxdIHJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIGVhY2hcbiAgIG5vZGUgaW4gW2xdLlxuICAgSWYgW2xdIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXZlIGFuIGF0dHJpYnV0ZSBhdHRhY2hlZCxcbiAgIFtnZXRfZ3JvdXBdIHJldHVybnMgW05vbmVdLlxuICAgSWYgW2xdIGlzIG5vdCBlbXB0eSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGFzIGFuIGF0dHJpYnVlXG4gICBhdHRhY2hlZCwgW2dldF9ncm91cF0gcmV0dXJucyB0aGUgZXF1aXZhbGVudCBvZlxuICAgW1NvbWUgKExpc3QubWFwIH5mOihBdHRyaWJ1dGUuZ2V0IGF0dHIpIGwpXS4gKilcbmxldCByZWMgZ2V0X2dyb3VwIGF0dHIgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBOb25lXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIGdldF9ncm91cCBhdHRyIGwgPj49IGZ1biBncm91cCAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYXR0ciB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lID4+fCBmdW4gYXR0cjIgLT5cbiAgICAgIG1hdGNoIChhdHRyMiwgZ3JvdXApIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICB8IE5vbmUsIFNvbWUgdmFscyAtPiBTb21lIChOb25lIDo6IHZhbHMpXG4gICAgICB8IFNvbWUgdmFsdWUsIE5vbmUgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiBMaXN0Lm1hcCBsIH5mOihmdW4gXyAtPiBOb25lKSlcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSB2YWxzIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogdmFscykpXG5cbigqIFNhbWUgYXMgW0xpc3QucmV2XSB0aGVuIFtMaXN0LmNvbmNhdF0gYnV0IGV4cGVjdGluZyB0aGUgaW5wdXQgdG8gYmUgb2YgbGVuZ3RoIDw9IDIgKilcbmxldCByZXZfY29uY2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFsgeCBdIC0+IHhcbiAgfCBbIHg7IHkgXSAtPiB5IEAgeFxuICB8IGwgLT4gTGlzdC5jb25jYXQgKExpc3QucmV2IGwpXG5cbmxldCBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgc29ydF9hdHRyX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgPVxuICBFcnJvclxuICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgIFwiQSBjb250ZXh0LWZyZWUgcnVsZSBkZWxldGVkIG9yIGFkZGVkIGF0dHJpYnVlcyBvZiBhIHN0ci9zaWcgaXRlbVwiLFxuICAgICAgW10gKVxuXG4oKiBSZXR1cm5zIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhdHRyaWJ1dGUgaGFuZGxlcnMuIFdlIGRvbid0IHJlbW92ZSB0aGVzZSBhdHRyaWJ1dGVzLCBhc1xuICAgYW5vdGhlciBwYXNzIG1pZ2h0IGludGVycHJldCB0aGVtIGxhdGVyLiBGb3IgaW5zdGFuY2UgYm90aCBwcHhfZGVyaXZpbmcgYW5kXG4gICBwcHhsaWJfZGVyaXZpbmcgaW50ZXJwcmV0cyBbQEBkZXJpdmluZ10gYXR0cmlidXRlcy5cblxuICAgVGhpcyBjb21wbGV4aXR5IGlzIGhvcnJpYmxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgY2FyZSBhcyBbYXR0cnNdIGlzIGFsd2F5cyBhIGxpc3RcbiAgIG9mIG9uZSBlbGVtZW50OyBpdCBvbmx5IGhhcyBbQEBkZXJpdmluZ10uXG4qKVxubGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRycyByZiB+aXRlbXMgfmV4cGFuZGVkX2l0ZW1zIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBMaXN0LmZvbGRfbGVmdCBhdHRycyB+aW5pdDoocmV0dXJuIFtdKVxuICAgIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLlQgZ3JvdXApIC0+XG4gICAgICBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgaXRlbXMgPj49IGZ1biBnMSAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtcyA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZXMsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmdyb3VwLmV4cGVjdCB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGV4cGVjdF9pdGVtcyA9IGdyb3VwLmV4cGFuZCB+Y3R4dCByZiBleHBhbmRlZF9pdGVtcyB2YWx1ZXMgaW5cbiAgICAgICAgICAgIHJldHVybiAoZXhwZWN0X2l0ZW1zIDo6IGFjYylcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoYWNjLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKSlcblxubGV0IGhhbmRsZV9hdHRyX2lubGluZSBhdHRycyB+aXRlbSB+ZXhwYW5kZWRfaXRlbSB+bG9jIH5iYXNlX2N0eHQgfmVtYmVkX2Vycm9yc1xuICAgID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9pbmxpbmUuVCBhKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBpdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcxIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6YS5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBhLmV4cGFuZCB+Y3R4dCBleHBhbmRlZF9pdGVtIHZhbHVlIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKGFjYywgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSkpXG5cbm1vZHVsZSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZiA6ICdhLiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50IC0+IExvY2F0aW9uLnQgLT4gJ2EgbGlzdCAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbmVuZFxuXG5jbGFzcyBtYXBfdG9wX2Rvd24gPyhleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcClcbiAgPyhnZW5lcmF0ZWRfY29kZV9ob29rID0gR2VuZXJhdGVkX2NvZGVfaG9vay5ub3ApID8oZW1iZWRfZXJyb3JzID0gZmFsc2UpIHJ1bGVzXG4gID1cbiAgbGV0IGhvb2sgPSBnZW5lcmF0ZWRfY29kZV9ob29rIGluXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgICBSdWxlLmZpbHRlciBTcGVjaWFsX2Z1bmN0aW9uIHJ1bGVzIHw+IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zXG4gIGluXG4gIGxldCBjb25zdGFudHMgPVxuICAgIFJ1bGUuZmlsdGVyIENvbnN0YW50IHJ1bGVzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoYyA6IFJ1bGUuQ29uc3RhbnQudCkgLT4gKChjLnN1ZmZpeCwgYy5raW5kKSwgYy5leHBhbmQpKVxuICAgIHw+IEhhc2h0Ymwub2ZfYWxpc3RfZXhuXG4gIGluXG4gIGxldCBleHRlbnNpb25zID0gUnVsZS5maWx0ZXIgRXh0ZW5zaW9uIHJ1bGVzIGluXG4gIGxldCBjbGFzc19leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc19leHByIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc19maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGVfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY29yZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jb3JlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgZXhwcmVzc2lvbiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuZXhwcmVzc2lvbiBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIHBhdHRlcm4gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnBhdHRlcm4gZXh0ZW5zaW9uc1xuICBhbmQgc2lnbmF0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnNpZ25hdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHN0cnVjdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zdHJ1Y3R1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBwcHhfaW1wb3J0ID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5QcHhfaW1wb3J0IGV4dGVuc2lvbnMgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNscywgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgfD4gUnVsZS5BdHRyX2dyb3VwX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNscywgYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgfD4gUnVsZS5BdHRyX2dyb3VwX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscywgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscywgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0cywgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9leHQgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0cywgYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9leHQgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9ucywgYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX2V4Y2VwdGlvbiBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9ucywgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX2V4Y2VwdGlvbiBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBtYXBfbm9kZSA9IG1hcF9ub2RlIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgPSBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfaW5saW5lID0gaGFuZGxlX2F0dHJfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyBhcyBzdXBlclxuXG4gICAgKCogTm8gcG9pbnQgcmVjdXJzaW5nIGludG8gZXZlcnkgbG9jYXRpb24gKilcbiAgICBtZXRob2QhIGxvY2F0aW9uIF8geCA9IHJldHVybiB4XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jb3JlX3R5cGUgY29yZV90eXBlIHN1cGVyI2NvcmVfdHlwZSB4LnB0eXBfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHBhdHRlcm4gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMucGF0dGVybiBwYXR0ZXJuIHN1cGVyI3BhdHRlcm4geC5wcGF0X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGJhc2VfY3R4dCBlID1cbiAgICAgIGxldCB3aXRoX2NvbnRleHQgPVxuICAgICAgICAoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBlIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+PSBmdW4gb3B0aW9uIC0+XG4gICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKGJhc2VfY3R4dCwgZSlcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBFeHByZXNzaW9uXG4gICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgXVxuICAgICAgICAgICAgICBlXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6ZVxuICAgICAgICAgICAgPj58IGZ1biBlIC0+XG4gICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jIHR4dCBiYXNlX2N0eHQsIGUpXG4gICAgICBpblxuICAgICAgd2l0aF9jb250ZXh0ID4+PSBmdW4gKGJhc2VfY3R4dCwgZSkgLT5cbiAgICAgIGxldCBleHBhbmRlZCA9XG4gICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgICBtYXBfbm9kZSBFQy5leHByZXNzaW9uIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgKGZ1biBfIGUgLT4gcmV0dXJuIGUpXG4gICAgICAgICAgICAgIGUucGV4cF9sb2MgYmFzZV9jdHh0IGVcbiAgICAgICAgfCBfIC0+IHJldHVybiBlXG4gICAgICBpblxuICAgICAgZXhwYW5kZWQgPj49IGZ1biBlIC0+XG4gICAgICBsZXQgZXhwYW5kX2NvbnN0YW50IGtpbmQgY2hhciB0ZXh0ID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBjb25zdGFudHMgKGNoYXIsIGtpbmQpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgfCBTb21lIGV4cGFuZCAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IChleHBhbmQgZS5wZXhwX2xvYyB0ZXh0KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9hcHBseSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBpZDsgXyB9IGFzIGZ1bmMpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICAgIHwgU29tZSBwYXR0ZXJuIC0+IChcbiAgICAgICAgICAgICAgbGV0IGdlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgICAgICAgICB0cnkgcmV0dXJuIChwYXR0ZXJuIGUpXG4gICAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biBleHByIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuY1xuICAgICAgICAgICAgICAgICAgICBhcmdzXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfaWRlbnQgaWQgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICAgIHwgU29tZSBwYXR0ZXJuIC0+IChcbiAgICAgICAgICAgICAgbGV0IGdlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgICAgICAgICB0cnkgcmV0dXJuIChwYXR0ZXJuIGUpXG4gICAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biBleHByIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2NvbnN0YW50IChQY29uc3RfaW50ZWdlciAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgSW50ZWdlciBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2Zsb2F0IChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBGbG9hdCBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG5cbiAgICAoKiBQcmUtY29uZGl0aW9uczpcbiAgICAgICAtIGUucGV4cF9kZXNjID0gUGV4cF9hcHBseShmdW5jLCBhcmdzKVxuICAgICAgIC0gZnVuYy5wZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF9cbiAgICAqKVxuICAgIG1ldGhvZCBwcml2YXRlIHBleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICA9XG4gICAgICBsZXQgeyBwZXhwX2Rlc2MgPSBfOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZSBpblxuICAgICAgbGV0IGZ1bmMgPVxuICAgICAgICBsZXQgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBmdW5jIGluXG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBwZXhwX2Rlc2M7XG4gICAgICAgICAgcGV4cF9sb2MgKCogbG9jYXRpb24gZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZCAqKTtcbiAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBmdW5jID4+PSBmdW4gZnVuYyAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gKGxhYiwgZXhwKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBleHAgPj58IGZ1biBleHAgLT4gKGxhYiwgZXhwKSlcbiAgICAgICAgfD4gY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBhcmdzID4+PSBmdW4gYXJncyAtPlxuICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZnVuYywgYXJncyk7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgfVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGUgY2xhc3NfdHlwZSBzdXBlciNjbGFzc190eXBlIHgucGN0eV9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICB4LnBjdGZfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZXhwciBjbGFzc19leHByIHN1cGVyI2NsYXNzX2V4cHIgeC5wY2xfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkIHgucGNmX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfdHlwZSBtb2R1bGVfdHlwZSBzdXBlciNtb2R1bGVfdHlwZSB4LnBtdHlfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgICgoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCB4KVxuICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBNb2R1bGVfZXhwclxuICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIF1cbiAgICAgICAgICAgICB4XG4gICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgID4+fCBmdW4geCAtPlxuICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgYmFzZV9jdHh0LCB4KSlcbiAgICAgID4+PSBmdW4gKGJhc2VfY3R4dCwgeCkgLT5cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV9leHByIG1vZHVsZV9leHByIHN1cGVyI21vZHVsZV9leHByIHgucG1vZF9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc3RydWN0dXJlX2l0ZW0gc3RydWN0dXJlX2l0ZW0gc3VwZXIjc3RydWN0dXJlX2l0ZW0geC5wc3RyX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zaWduYXR1cmVfaXRlbSBzaWduYXR1cmVfaXRlbSBzdXBlciNzaWduYXR1cmVfaXRlbSB4LnBzaWdfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3N0cnVjdHVyZSBiYXNlX2N0eHQgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSA9XG4gICAgICBzZWxmI3BhdHRlcm4gYmFzZV9jdHh0IHBjc3RyX3NlbGYgPj49IGZ1biBwY3N0cl9zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGNmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc3RyX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3N0cl9maWVsZHMgLT4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLlBweF9pbXBvcnQgcHB4X2ltcG9ydCBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHgucHR5cGVfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3NpZ25hdHVyZSBiYXNlX2N0eHQgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSA9XG4gICAgICBzZWxmI2NvcmVfdHlwZSBiYXNlX2N0eHQgcGNzaWdfc2VsZiA+Pj0gZnVuIHBjc2lnX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY3RmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc2lnX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3NpZ19maWVsZHMgLT4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgKCogVE9ETzogdHJ5IHRvIGZhY3Rvcml6ZSAjc3RydWN0dXJlIGFuZCAjc2lnbmF0dXJlIHdpdGhvdXQgbWV0YS1wcm9ncmFtbWluZyAqKVxuICAgICgqJCopXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgYmFzZV9jdHh0IHN0ID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU3RydWN0dXJlX2l0ZW0gaXRlbS5wc3RyX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzdHJfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zdHJ1Y3R1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU3RydWN0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc3RydWN0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHN0cl9sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzdHJfZGVzYywgZXhwYW5kZWRfaXRlbS5wc3RyX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZSAocmYsIHRkcyksIFBzdHJfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgbXRkLCBQc3RyX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgdGUsIFBzdHJfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGVjLCBQc3RyX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbiAgICBtZXRob2QhIHNpZ25hdHVyZSBiYXNlX2N0eHQgc2cgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTaWduYXR1cmVfaXRlbSBpdGVtLnBzaWdfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHNpZ19sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3NpZ25hdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTaWduYXR1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzZyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzaWdfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzaWduYXR1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc2lnX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHNpZ19kZXNjLCBleHBhbmRlZF9pdGVtLnBzaWdfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlIChyZiwgdGRzKSwgUHNpZ190eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSBtdGQsIFBzaWdfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB0ZSwgUHNpZ190eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19leGNlcHRpb24gZWMsIFBzaWdfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokKilcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBVdGlsc1xuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXh0ZW5zaW9uIG9mICdhIEV4dGVuc2lvbi5Db250ZXh0LnRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBvZiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50XG5cbiAgbGV0IHBhcmVuIHBwIHBwZiB4ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiglYSlcIiBwcCB4XG5cbiAgbGV0IHByaW50ZXIgOiB0eXBlIGEuIGEgdCAtPiBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlciAtPiBhIC0+IHVuaXQgPVxuICAgIGxldCBvcGVuIEV4dGVuc2lvbi5Db250ZXh0IGluXG4gICAgbGV0IG9wZW4gQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2V4cHIgLT4gUHByaW50YXN0LmNsYXNzX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlIC0+IFBwcmludGFzdC5jbGFzc190eXBlXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENvcmVfdHlwZSAtPiBwYXJlbiBQcHJpbnRhc3QuY29yZV90eXBlXG4gICAgfCBFeHRlbnNpb24gRXhwcmVzc2lvbiAtPiBwYXJlbiBQcHJpbnRhc3QuZXhwcmVzc2lvblxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV9leHByIC0+IFBwcmludGFzdC5tb2R1bGVfZXhwclxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV90eXBlIC0+IFBwcmludGFzdC5tb2R1bGVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIFBhdHRlcm4gLT4gcGFyZW4gUHByaW50YXN0LnBhdHRlcm5cbiAgICB8IEV4dGVuc2lvbiBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBQcHhfaW1wb3J0IC0+IFBwcmludGFzdC50eXBlX2RlY2xhcmF0aW9uXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlbWVudCA9IHN0cnVjdFxuICB0eXBlIGRhdGEgPVxuICAgIHwgVmFsdWVzIDpcbiAgICAgICAgJ2EgQ29udGV4dC50ICogJ2EgQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2suc2luZ2xlX29yX21hbnlcbiAgICAgICAgLT4gZGF0YVxuICAgIHwgVGV4dCBvZiBzdHJpbmdcblxuICB0eXBlIHQgPSB7IHN0YXJ0IDogTGV4aW5nLnBvc2l0aW9uOyBzdG9wIDogTGV4aW5nLnBvc2l0aW9uOyBkYXRhIDogZGF0YSB9XG5cbiAgbGV0IG1ha2UgfmNvbnRleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID1cbiAgICB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVmFsdWVzIChjb250ZXh0LCByZXBsKSB9XG5cbiAgbGV0IG1ha2VfdGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPSB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVGV4dCByZXBsIH1cblxuICBsZXQgdGV4dCBibG9jayA9XG4gICAgbWF0Y2ggYmxvY2suZGF0YSB3aXRoXG4gICAgfCBUZXh0IHMgLT4gc1xuICAgIHwgVmFsdWVzIChjb250ZXh0LCBnZW5lcmF0ZWQpIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgcHJpbnRlciA9IENvbnRleHQucHJpbnRlciBjb250ZXh0IGluXG4gICAgICAgICAgbWF0Y2ggZ2VuZXJhdGVkIHdpdGhcbiAgICAgICAgICB8IFNpbmdsZSB4IC0+IFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiIHByaW50ZXIgeFxuICAgICAgICAgIHwgTWFueSBsIC0+XG4gICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBwcGYgbCAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciBwcGYgeDtcbiAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKSlcbiAgICAgICAgICAgICAgICBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc193cyA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UgaW5cbiAgICAgICAgbGV0IHN0cmlwX3dzIHMgaSBsZW4gPVxuICAgICAgICAgIGxldCBsZW4gPSByZWYgbGVuIGluXG4gICAgICAgICAgd2hpbGUgIWxlbiA+IDAgJiYgaXNfd3Mgcy5baSArICFsZW4gLSAxXSBkb1xuICAgICAgICAgICAgbGVuIDo9ICFsZW4gLSAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBTdHJpbmcuc3ViIHMgfnBvczppIH5sZW46IWxlblxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBwb3MgPVxuICAgICAgICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBbXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBpZHggPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzdHJpcF93cyBzIHBvcyAoaWR4IC0gcG9zKSA6OiBcIlxcblwiIDo6IGxvb3AgcyAoaWR4ICsgMSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKGxvb3AgcyAwKVxuZW5kXG5cbm9wZW4gUmVwbGFjZW1lbnRcblxubW9kdWxlIFJlcGxhY2VtZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXBsYWNlbWVudC50IGxpc3RcblxuICAoKiBNZXJnZSBsb2NhdGlvbnMgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBPdmVybGFwcGluZyBsb2NhdGlvbnMgYXJlIG1lcmdlZCBpbnRvIG9uZS4gVGhlXG4gICAgIHJlc3VsdCBpcyBzb3J0ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBlbmQuICopXG4gIGxldCBjaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgPVxuICAgIExpc3QuaXRlciByZXBscyB+ZjooZnVuIHJlcGwgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBTdHJpbmcuKCA8PiApIHJlcGwuc3RhcnQucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgICB8fCBTdHJpbmcuKCA8PiApIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVuYW1lKVxuICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiB0aGUgcmV3cml0aW5nIGNvbnRhaW5zIHBhcnRzIGZyb20gYW5vdGhlciBmaWxlLlxcblxcXG4gICAgICAgICAgICAgSXQgaXMgdG9vIGNvbXBsaWNhdGVkIHRvIHJlY29uY2lsZSBpdCB3aXRoIHRoZSBzb3VyY2U6ICVzIG9yICVzIFxcXG4gICAgICAgICAgICAgYW5kICVzXCJcbiAgICAgICAgICAgIHJlcGwuc3RhcnQucG9zX2ZuYW1lIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgYXNzZXJ0IChyZXBsLnN0YXJ0LnBvc19jbnVtIDw9IHJlcGwuc3RvcC5wb3NfY251bSkpO1xuICAgIGxldCByZXBscyA9XG4gICAgICBMaXN0LnNvcnQgcmVwbHMgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgICAgIGxldCBkID0gY29tcGFyZSBhLnN0YXJ0LnBvc19jbnVtIGIuc3RvcC5wb3NfY251bSBpblxuICAgICAgICAgIGlmIGQgPSAwIHRoZW5cbiAgICAgICAgICAgICgqIFB1dCB0aGUgbGFyZ2VzdCBmaXJzdCwgc28gdGhhdCB0aGUgZm9sbG93aW5nIFtmaWx0ZXJdIGZ1bmN0aW9ucyBhbHdheXMgcGlja3MgdXBcbiAgICAgICAgICAgICAgIHRoZSBsYXJ0ZXN0IGZpcnN0IHdoZW4gc2V2ZXJhbCBnZW5lcmF0ZWQgcmVwbHMgc3RhcnQgYXQgdGhlIHNhbWUgcG9zaXRpb24gKilcbiAgICAgICAgICAgIGNvbXBhcmUgYi5zdG9wLnBvc19jbnVtIGEuc3RvcC5wb3NfY251bVxuICAgICAgICAgIGVsc2UgZClcbiAgICBpblxuICAgIGxldCByZWMgZmlsdGVyIHByZXYgcmVwbHMgfmFjYyA9XG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IChwcmV2IDo6IGFjYylcbiAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID49IHJlcGwuc3RvcC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgICgqIFtyZXBsXSBpcyBpbmNsdWRlZCBpbiBbcHJldl0gPT4gc2tpcCBbcmVwbF0gKilcbiAgICAgICAgICAgICAgZmlsdGVyIHByZXYgcmVwbHMgfmFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IGxvY2F0aW9ucyBvZiBnZW5lcmF0ZWQgY29kZSBhcmUgb3ZlcmxhcHBpbmcsIFxcXG4gICAgICAgICAgICAgICAgIGNhbm5vdCByZWNvbmNpbGVcIlxuICAgICAgICAgICAgICAgIH5sb2M6XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHJlcGwuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBwcmV2LnN0b3A7XG4gICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzoocHJldiA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCByZXBscyB3aXRoIFtdIC0+IFtdIHwgcmVwbCA6OiByZXBscyAtPiBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOltdXG5lbmRcblxubGV0IGNvdW50X25ld2xpbmVzIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIFN0cmluZy5pdGVyIHMgfmY6KGZ1bmN0aW9uICdcXG4nIC0+IG4gOj0gIW4gKyAxIHwgXyAtPiAoKSk7XG4gICFuXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9iZWdpbiA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEJFR0lOIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxubGV0IGdlbmVyYXRlZF9jb2RlX2VuZCA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEVORCAgIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxudHlwZSBtb2RlID0gVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzXG50eXBlIHRhcmdldCA9IE91dHB1dCBvZiBtb2RlIHwgQ29ycmVjdGVkXG5cbmxldCBza2lwX2JsYW5rX2VvbCBjb250ZW50cyAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSA9XG4gIGxldCByZWMgbG9vcCBjbnVtID1cbiAgICBpZiBjbnVtID0gU3RyaW5nLmxlbmd0aCBjb250ZW50cyB0aGVuIHsgcG9zIHdpdGggcG9zX2NudW0gPSBjbnVtIH1cbiAgICBlbHNlXG4gICAgICBtYXRjaCBjb250ZW50cy5bY251bV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXHInIC0+IGxvb3AgKGNudW0gKyAxKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcyB3aXRoXG4gICAgICAgICAgICBwb3NfY251bSA9IGNudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2JvbCA9IGNudW0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgIHwgXyAtPiBwb3NcbiAgaW5cbiAgbG9vcCBwb3MucG9zX2NudW1cblxubGV0IHdpdGhfb3V0cHV0IH5zdHlsZXIgfihraW5kIDogS2luZC50KSBmbiB+ZiA9XG4gIG1hdGNoIHN0eWxlciB3aXRoXG4gIHwgTm9uZSAtPiB3aXRoX291dHB1dCBmbiB+YmluYXJ5OmZhbHNlIH5mXG4gIHwgU29tZSBjbWQgLT5cbiAgICAgIGxldCB0bXBfZm4sIG9jID1cbiAgICAgICAgU3RkbGliLkZpbGVuYW1lLm9wZW5fdGVtcF9maWxlIFwicHB4bGliX2RyaXZlclwiXG4gICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aCBJbXBsIC0+IFwiLm1sXCIgfCBJbnRmIC0+IFwiLm1saVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBjbWQgPVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzJXNcIiBjbWRcbiAgICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIHRtcF9mbilcbiAgICAgICAgICAobWF0Y2ggZm4gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIGZuIC0+IFwiID4gXCIgXiBTdGRsaWIuRmlsZW5hbWUucXVvdGUgZm4pXG4gICAgICBpblxuICAgICAgbGV0IG4gPVxuICAgICAgICBFeG4ucHJvdGVjdHggdG1wX2ZuIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mOihmdW4gXyAtPlxuICAgICAgICAgICAgRXhuLnByb3RlY3R4IG9jIH5maW5hbGx5OmNsb3NlX291dCB+ZjtcbiAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQpXG4gICAgICBpblxuICAgICAgaWYgbiA8PiAwIHRoZW4gKFxuICAgICAgICBQcmludGYuZXByaW50ZiBcImNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAlZDogJXNcXG5cIiBuIGNtZDtcbiAgICAgICAgU3RkbGliLmV4aXQgMSlcblxubGV0IHJlY29uY2lsZSA/c3R5bGVyIChyZXBscyA6IFJlcGxhY2VtZW50cy50KSB+a2luZCB+Y29udGVudHMgfmlucHV0X2ZpbGVuYW1lXG4gICAgfm91dHB1dCB+aW5wdXRfbmFtZSB+dGFyZ2V0ID1cbiAgbGV0IHJlcGxzID0gUmVwbGFjZW1lbnRzLmNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyBpblxuICBsZXQgb3V0cHV0X25hbWUgPSBtYXRjaCBvdXRwdXQgd2l0aCBOb25lIC0+IFwiPHN0ZG91dD5cIiB8IFNvbWUgZm4gLT4gZm4gaW5cbiAgd2l0aF9vdXRwdXQgb3V0cHV0IH5zdHlsZXIgfmtpbmQgfmY6KGZ1biBvYyAtPlxuICAgICAgbGV0IGNvcHlfaW5wdXQgcG9zIH51cF90byB+bGluZSB+bGFzdF9pc190ZXh0IH5pc190ZXh0ID1cbiAgICAgICAgbGV0IHBvcyA9IGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvcyBpblxuICAgICAgICBpZiBwb3MucG9zX2NudW0gPCB1cF90byB0aGVuIChcbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuJSpzXCIgcG9zLnBvc19sbnVtIGlucHV0X25hbWVcbiAgICAgICAgICAgICAgICAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyB8IENvcnJlY3RlZCAtPiAoKSk7XG4gICAgICAgICAgb3V0cHV0X3N1YnN0cmluZyBvYyBjb250ZW50cyB+cG9zOnBvcy5wb3NfY251bVxuICAgICAgICAgICAgfmxlbjoodXBfdG8gLSBwb3MucG9zX2NudW0pO1xuICAgICAgICAgIGxldCBsaW5lID0gcmVmIChsaW5lICsgMSkgaW5cbiAgICAgICAgICBmb3IgaSA9IHBvcy5wb3NfY251bSB0byB1cF90byAtIDEgZG9cbiAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgY29udGVudHMuW2ldICdcXG4nIHRoZW4gbGluZSA6PSAhbGluZSArIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBsaW5lID0gIWxpbmUgaW5cbiAgICAgICAgICBpZiAobm90IGlzX3RleHQpICYmIENoYXIuKCA8PiApIGNvbnRlbnRzLlt1cF90byAtIDFdICdcXG4nIHRoZW4gKFxuICAgICAgICAgICAgb3V0cHV0X2NoYXIgb2MgJ1xcbic7XG4gICAgICAgICAgICBsaW5lICsgMSlcbiAgICAgICAgICBlbHNlIGxpbmUpXG4gICAgICAgIGVsc2UgbGluZVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoY29weV9pbnB1dCBwb3MgfnVwX3RvOihTdHJpbmcubGVuZ3RoIGNvbnRlbnRzKSB+bGluZVxuICAgICAgICAgICAgICAgICB+bGFzdF9pc190ZXh0IH5pc190ZXh0OmZhbHNlXG4gICAgICAgICAgICAgICAgOiBpbnQpXG4gICAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgICAgbGV0IGlzX3RleHQgPVxuICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBjb3B5X2lucHV0IHBvcyB+dXBfdG86cmVwbC5zdGFydC5wb3NfY251bSB+bGluZSB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICAgICAgfmlzX3RleHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcblwiIChsaW5lICsgMSkgb3V0cHV0X25hbWU7XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbjtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgQ29ycmVjdGVkIC0+IGxpbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzIH5sYXN0X2lzX3RleHQ6aXNfdGV4dFxuICAgICAgYW5kIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBsc1xuICAgICAgICAgIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT4gZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzJyAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgIGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgICAgbGV0IGxhc3RfaXNfdGV4dCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzJyB+bGFzdF9pc190ZXh0XG4gICAgICBhbmQgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2VuZCk7XG4gICAgICAgIGxvb3AgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IGlucHV0X25hbWU7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgeyBzdGFydCA9IHsgcG9zX2NudW0gPSAwOyBfIH07IF8gfSA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbik7XG4gICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlXG4gICAgICB8IF8gLT4gbG9vcCAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlKVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIG5leHRfaWQgOiBpbnQ7XG4gIG11dGFibGUgYmluZGluZ3MgOiBQYXJzZXRyZWUudmFsdWVfYmluZGluZyBsaXN0O1xufVxuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0X2lkID0gMDsgYmluZGluZ3MgPSBbXSB9XG5cbmxldCBzYW5pdGl6ZSB0IGUgPVxuICBtYXRjaCB0LmJpbmRpbmdzIHdpdGhcbiAgfCBbXSAtPiBlXG4gIHwgYmluZGluZ3MgLT5cbiAgICAgIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGUucGV4cF9sb2MgaW5cbiAgICAgIEFzdC5wZXhwX2xldCBOb25yZWN1cnNpdmUgYmluZGluZ3MgZVxuXG5sZXQgcXVvdGUgdCAoZSA6IGV4cHJlc3Npb24pID1cbiAgbGV0IGxvYyA9IGUucGV4cF9sb2MgaW5cbiAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgbG9jIGluXG4gIGxldCBuYW1lID0gXCJfX1wiIF4gSW50LnRvX3N0cmluZyB0Lm5leHRfaWQgaW5cbiAgbGV0IGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgICgqIE9wdGltaXplIGlkZW50aWZpZXIgcXVvdGluZyBieSBhdm9pZGluZyBjbG9zdXJlLlxuICAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweF9kZXJpdmluZy9wdWxsLzI1Mi4gKilcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT4gKGUsIEFzdC5ldmFyIG5hbWUpXG4gICAgfCBfIC0+XG4gICAgICAgIGxldCBiaW5kaW5nX2V4cHIgPVxuICAgICAgICAgIEFzdC5wZXhwX2Z1biBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgIChsZXQgdW5pdCA9IEFzdF9idWlsZGVyLkRlZmF1bHQuTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIgaW5cbiAgICAgICAgICAgICBBc3QucHBhdF9jb25zdHJ1Y3QgdW5pdCBOb25lKVxuICAgICAgICAgICAgZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcXVvdGVkX2V4cHIgPSBBc3QuZWFwcGx5IChBc3QuZXZhciBuYW1lKSBbIEFzdC5ldW5pdCBdIGluXG4gICAgICAgIChiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByKVxuICBpblxuICBsZXQgYmluZGluZyA9XG4gICAgbGV0IHBhdCA9IEFzdC5wdmFyIG5hbWUgaW5cbiAgICBBc3QudmFsdWVfYmluZGluZyB+cGF0IH5leHByOmJpbmRpbmdfZXhwclxuICBpblxuICB0LmJpbmRpbmdzIDwtIGJpbmRpbmcgOjogdC5iaW5kaW5ncztcbiAgdC5uZXh0X2lkIDwtIHQubmV4dF9pZCArIDE7XG4gIHF1b3RlZF9leHByXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IG1rX2F0dHJfbm9sb2MgdHh0ID0gQXN0X2hlbHBlci5BdHRyLm1rIExvY2F0aW9uLnsgdHh0OyBsb2MgPSBub25lIH1cbmxldCBoaWRlX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uaGlkZVwiIChQU3RyIFtdKVxubGV0IGZvY3VzX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uZm9jdXNcIiAoUFN0ciBbXSlcblxubGV0IGhpZGVfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBoaWRlX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuIiwib3BlbiBJbXBvcnRcblxubW9kdWxlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGluc2VydCA6IG5vZGVfbmFtZTpzdHJpbmcgLT4gTG9jYXRpb24udCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcblxuICB2YWwgY292ZXJlZF9ieSA6IHQgLT4gbG9jOkxvY2F0aW9uLnQgLT4gYm9vbFxuICAoKiogW2NvdmVyZWRfYnkgdCB+bG9jID0gdHJ1ZV0gaWZmIFt0XSBpcyBjb3ZlcmVkIGJ5IFtsb2NdICopXG5cbiAgdmFsIGZpbmRfb3V0c2lkZSA6IExvY2F0aW9uLnQgLT4gdCAtPiBzdHJpbmcgKiBMb2NhdGlvbi50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1pbl9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIG1heF9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIHJhbmdlcyA6IChzdHJpbmcgKiBMb2NhdGlvbi50KSBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5ID0geyBtaW5fcG9zID0gTm9uZTsgbWF4X3BvcyA9IE5vbmU7IHJhbmdlcyA9IFtdIH1cblxuICBsZXQgcmVjIGluc2VydCByYW5nZXMgKChub2RlX25hbWUsIG5vZGVfbG9jKSBhcyBub2RlKSA9XG4gICAgbWF0Y2ggcmFuZ2VzIHdpdGhcbiAgICB8IFtdIC0+IFsgbm9kZSBdXG4gICAgfCAoKHhfbmFtZSwgeF9sb2MpIGFzIHgpIDo6IHhzIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uIGluXG4gICAgICAgIGlmIGNvbXBhcmVfcG9zIG5vZGVfbG9jLmxvY19zdGFydCB4X2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIG5vZGUgOjogeCA6OiB4c1xuICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcG9zIHhfbG9jLmxvY19zdGFydCBub2RlX2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIHggOjogaW5zZXJ0IHhzIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICAgICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4LCAlcyBvdmVybGFwcyB3aXRoICVzIGF0IGxvY2F0aW9uOkAuJWFcIlxuICAgICAgICAgICAgbm9kZV9uYW1lIHhfbmFtZSBMb2NhdGlvbi5wcmludCB4X2xvY1xuXG4gIGxldCBtaW5fcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWluX3BvcyBwMSBwMilcblxuICBsZXQgbWF4X3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1heF9wb3MgcDEgcDIpXG5cbiAgbGV0IGxvbmdlc3RfZmlyc3QgbDEgbDIgfnN0b3BfYWZ0ZXIgPVxuICAgIGxldCByZWMgbG9vcCB4cyB5cyBuID1cbiAgICAgIG1hdGNoICh4cywgeXMsIG4pIHdpdGhcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBfLCAwIC0+IChsMiwgbDEpXG4gICAgICB8IF8sIFtdLCBfIC0+IChsMSwgbDIpXG4gICAgICB8IF8gOjogeHMsIF8gOjogeXMsIG4gLT4gbG9vcCB4cyB5cyAobiAtIDEpXG4gICAgaW5cbiAgICBsb29wIGwxIGwyIHN0b3BfYWZ0ZXJcblxuICBsZXQgdW5pb24gdDEgdDIgPVxuICAgIGxldCBpbml0LCBsID0gbG9uZ2VzdF9maXJzdCB0MS5yYW5nZXMgdDIucmFuZ2VzIH5zdG9wX2FmdGVyOjQyIGluXG4gICAgbGV0IHJhbmdlcyA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6aW5zZXJ0IGluXG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgdDEubWluX3BvcyB0Mi5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgdDEubWF4X3BvcyB0Mi5tYXhfcG9zO1xuICAgICAgcmFuZ2VzO1xuICAgIH1cblxuICBsZXQgaW5zZXJ0IH5ub2RlX25hbWUgbG9jIHQgPVxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIChTb21lIGxvYy5sb2Nfc3RhcnQpIHQubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIChTb21lIGxvYy5sb2NfZW5kKSB0Lm1heF9wb3M7XG4gICAgICByYW5nZXMgPSBpbnNlcnQgdC5yYW5nZXMgKG5vZGVfbmFtZSwgbG9jKTtcbiAgICB9XG5cbiAgbGV0IGNvdmVyZWRfYnkgdCB+bG9jID1cbiAgICBtYXRjaCAodC5taW5fcG9zLCB0Lm1heF9wb3MpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBtaW5fcG9zLCBTb21lIG1heF9wb3MgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbWluX3BvcyBsb2MubG9jX3N0YXJ0ID49IDBcbiAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbWF4X3BvcyBsb2MubG9jX2VuZCA8PSAwXG4gICAgfCBfLCBfIC0+XG4gICAgICAgICgqIHRoZXJlIGFyZSBubyBvcGVuIHJhbmdlcyAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuICBsZXQgZmluZF9vdXRzaWRlIGxvYyB0ID1cbiAgICBMaXN0LmZpbmQgdC5yYW5nZXMgfmY6KGZ1biAoXywgbCkgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19zdGFydCBsLmxvY19zdGFydCA+IDBcbiAgICAgICAgfHwgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgbC5sb2NfZW5kIDwgMClcbmVuZFxuXG5sZXQgcmVsb2NfcG10eV9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbXR5X2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtdHlfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG10eV9sb2MgPSB7IHJlcy5wbXR5X2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgcmVsb2NfcG1vZF9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbW9kX2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtb2RfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG1vZF9sb2MgPSB7IHJlcy5wbW9kX2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYyA9XG4gIExpc3QuZm9yX2FsbCB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGF0dHIuYXR0cl9sb2MubG9jX2VuZCA+PSAwKVxuXG5sZXQgZmlsZSA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbmxldCBzYW1lX2ZpbGVfc29fZmFyID0gcmVmIHRydWVcblxubGV0IHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGZuYW1lID1cbiAgKCogVE9ETzogcmVtb3ZlIHVzZXMgb2YgTG9jYXRpb24ubm9uZSBmcm9tIHRoZSBwcHhlcy4gKilcbiAgaWYgU3RyaW5nLmVxdWFsIGZuYW1lIFwiX25vbmVfXCIgdGhlbiB0cnVlICgqIGRvIG5vdGhpbmcgZm9yIG5vdy4gKilcbiAgZWxzZVxuICAgIG1hdGNoICFmaWxlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgZmlsZSA6PSBTb21lIGZuYW1lO1xuICAgICAgICB0cnVlXG4gICAgfCBTb21lIG9yaWdfZm5hbWUgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIG9yaWdfZm5hbWUgZm5hbWVcbiAgICAgICAgfHxcbiAgICAgICAgKHNhbWVfZmlsZV9zb19mYXIgOj0gZmFsc2U7XG4gICAgICAgICBmYWxzZSlcblxubGV0IHNob3VsZF9pZ25vcmUgbG9jIGF0dHJzID1cbiAgKCogSWYgdGhlIGZpbGVuYW1lIGNoYW5nZWQsIHRoZW4gdGhlcmUgd2VyZSBsaW5lIGRpcmVjdGl2ZXMsIGFuZCB0aGUgbG9jYXRpb25zXG4gICAgIGFyZSBhbGwgbWVzc2VkIHVwLiAqKVxuICAobm90IChzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSkpXG4gIHx8ICgqIElnbm9yZSB0aGluZ3MgZXhwbGljaXRseSBtYXJrZWQuICopXG4gIExpc3QuZXhpc3RzXG4gICAgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBTdHJpbmcuZXF1YWwgYXR0ci5hdHRyX25hbWUudHh0XG4gICAgICAgIE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlLmF0dHJfbmFtZS50eHQpXG4gICAgYXR0cnNcblxubGV0IHJlYyBleHRyYWN0X2NvbnN0cmFpbnQgZSA9XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSB8IFBleHBfY29lcmNlIChlLCBfLCBjdCkgLT4gU29tZSAoZSwgY3QpXG4gIHwgUGV4cF9uZXd0eXBlIChuYW1lLCBleHApIC0+XG4gICAgICBPcHRpb24ubWFwIChleHRyYWN0X2NvbnN0cmFpbnQgZXhwKSB+ZjooZnVuIChleHAsIGN0KSAtPlxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlIChuYW1lLCBleHApO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdCApKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZG9fY2hlY2sgfm5vZGVfbmFtZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzID1cbiAgaWYgbm90ICFzYW1lX2ZpbGVfc29fZmFyIHRoZW4gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgZWxzZSBpZiBub2RlX2xvYy5sb2NfZ2hvc3QgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnVuaW9uIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcbiAgZWxzZSBpZiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5jb3ZlcmVkX2J5IGNoaWxkcmVuc19sb2NzIH5sb2M6bm9kZV9sb2MgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lIG5vZGVfbG9jIHNpYmxpbmdzX2xvY3NcbiAgZWxzZVxuICAgIGxldCBjaGlsZF9uYW1lLCBjaGlsZF9sb2MgPVxuICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZmluZF9vdXRzaWRlIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgaW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweDpAIHRoaXMgJXMgaXMgYnVpbHQgZnJvbSBhJXMgd2hvc2UgbG9jYXRpb24gaXMgXFxcbiAgICAgICBvdXRzaWRlIG9mIHRoaXMgbm9kZSdzLkAuQ2hpbGQgJXMgZm91bmQgYXQ6QCAlYVwiXG4gICAgICBub2RlX25hbWVcbiAgICAgICgobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgY2hpbGRfbmFtZSAwIHdpdGhcbiAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyAtPiBcIm4gXCJcbiAgICAgICB8IF8gLT4gXCIgXCIpXG4gICAgICBeIGNoaWxkX25hbWUpXG4gICAgICBjaGlsZF9uYW1lIExvY2F0aW9uLnByaW50IGNoaWxkX2xvY1xuXG5sZXQgZW5mb3JjZV9pbnZhcmlhbnRzIGZuYW1lID1cbiAgbGV0ICgpID0gZmlsZSA6PSBmbmFtZSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICgqIFRPRE86IHdlIHNob3VsZCBnZW5lcmF0ZSBhIGNsYXNzIHdoaWNoIGVuZm9yY2VzIHRoZSBsb2NhdGlvbiBpbnZhcmlhbnQuXG4gICAgICAgQW5kIHRoZW4gd2Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgd2hlcmUgd2UgbmVlZCBhbiBlc2NhcGVcbiAgICAgICBoYXRjaCBiZWNhdXNlIHRoZSBwYXJzZXIgaXNuJ3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLlxuXG4gICAgICAgVGhhdCB3b3VsZCBlbnN1cmUgdGhhdCB3ZSBzdGF5IHVwIHRvIGRhdGUgYXMgdGhlIEFTVCBjaGFuZ2VzLiAqKVxuXG4gICAgbWV0aG9kISBsb25naWRlbnRfbG9jIHggc2libGluZ3MgPVxuICAgICAgaWYgeC5sb2MubG9jX2dob3N0IHRoZW4gc2libGluZ3NcbiAgICAgIGVsc2UgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWU6XCJpZGVudFwiIHgubG9jIHNpYmxpbmdzXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnByZl9sb2MgeC5wcmZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjcm93X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInJvdyBmaWVsZFwiIHgucHJmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9iamVjdF9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvZl9sb2MgeC5wb2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvYmplY3RfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib2JqZWN0IGZpZWxkXCIgeC5wb2ZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBiaW5kaW5nX29wIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNiaW5kaW5nX29wIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJiaW5kaW5nIG9wZXJhdG9yXCIgeC5wYm9wX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZhbF9sb2MgeC5wdmFsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgZGVzY3JpcHRpb25cIiB4LnB2YWxfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cGVfbG9jIHgucHR5cGVfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZGVjbGFyYXRpb25cIiB4LnB0eXBlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbGRfbG9jIHgucGxkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibGFiZWwgZGVjbGFyYXRpb25cIiB4LnBsZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNkX2xvYyB4LnBjZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCIgeC5wY2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4dF9sb2MgeC5wdHlleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGV4dGVuc2lvblwiIHgucHR5ZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4dF9sb2MgeC5wZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiIHgucGV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3R5X2xvYyB4LnBjdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlXCIgeC5wY3R5X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3RmX2xvYyB4LnBjdGZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGUgZmllbGRcIiB4LnBjdGZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNpX2xvYyB4LnBjaV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3NcIiB4LnBjaV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNsX2xvYyB4LnBjbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc19leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGV4cHJlc3Npb25cIiB4LnBjbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNmX2xvYyB4LnBjZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGZpZWxkXCIgeC5wY2ZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc2lnX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzaWduYXR1cmUgaXRlbVwiIHgucHNpZ19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtZF9sb2MgeC5wbWRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGRlY2xhcmF0aW9uXCIgeC5wbWRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1zX2xvYyB4LnBtc19hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9zdWJzdGl0dXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHN1YnN0aXR1dGlvblwiIHgucG1zX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXRkX2xvYyB4LnBtdGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiIHgucG10ZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9wZW5faW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvcGVuX2xvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb3Blbl9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9wZW5cIiB4LnBvcGVuX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBpbmNsX2xvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImluY2x1ZGVcIiB4LnBpbmNsX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHN0cl9sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic3RydWN0dXJlIGl0ZW1cIiB4LnBzdHJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtYl9sb2MgeC5wbWJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgYmluZGluZ1wiIHgucG1iX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgKilcbiAgICAoKiB0aGUgdHlwZSBjb25zdHJhaW50IGlzIGR1cGxpY2F0ZWQuICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmJfbG9jIHgucHZiX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgbWF0Y2ggKHgucHZiX3BhdC5wcGF0X2Rlc2MsIGV4dHJhY3RfY29uc3RyYWludCB4LnB2Yl9leHByKSB3aXRoXG4gICAgICAgICAgKCogbGV0IHggOiB0eXBlIGEgYiBjLiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfIDo6IF8sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAoKiBsZXQgeCA6ICBjdCA9IGVcbiAgICAgICAgICAgICBsZXQgeCA6PiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50IChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoW10sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdHAucHR5cF9sb2MgY3RlLnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgX2FjYyA9IHNlbGYjY29yZV90eXBlIGN0cCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjdmFsdWVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBiaW5kaW5nXCIgeC5wdmJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1UIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgdHlwZS4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSB0eXBlLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG10eV9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHgucG10eV9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlXCIgeC5wbXR5X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNRSBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIGV4cHIuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgZXhwci4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyB4LnBtb2RfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZXhwcmVzc2lvblwiIHgucG1vZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgeC5wdHlwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29yZSB0eXBlXCIgeC5wdHlwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogQW5kIGFnYWluIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNleHByZXNzaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgeC5wZXhwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhwcmVzc2lvblwiIHgucGV4cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIC4uLiBhbmQgYWdhaW4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjcGF0dGVybiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHgucHBhdF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInBhdHRlcm5cIiB4LnBwYXRfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgICopXG4gICAgKCogdGhlIGNvbnN0cnVjdCBlcXVhbHMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBlX2V4Y2VwdGlvbiAqKVxuICAgICgqIChhbmQgc28gY292ZXJzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlcykuICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXhuX2xvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgaW5pdCA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGxldCBjaGlsZHNfbG9jcyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgeC5wdHlleG5fY29uc3RydWN0b3IgaW5pdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cnNfbG9jcyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGluaXQgaW5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgYXR0cnNfbG9jcyBzaWJsaW5nc19sb2NzKTtcbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBjaGlsZHNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgKilcbiAgICAoKiBsaHMgaXMgc29tZXRpbWVzIGluY2x1ZGVkIGluIHRoZSByaHMuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQd2l0aF90eXBlIChfLCB0ZGVjbCkgfCBQd2l0aF90eXBlc3Vic3QgKF8sIHRkZWNsKSAtPlxuICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiB0ZGVjbCBzaWJsaW5nc19sb2NcbiAgICAgIHwgXyAtPiBzdXBlciN3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6KilcbiAgICAoKiAtIEZvby57IGJhcjsgLi4uIH0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLlsgYmFyOyAuLi4gXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uKCBiYXI7IC4uLiApICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIG1ldGhvZCB4IDogdHlwZSBhLiAuLi4gPSAuLi4gICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpIDwtIGJheiAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdIDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9yZWNvcmQgKGxhYmVscywgZXhwcl9vKSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGxpZCwgZSkgYWNjIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgZS5wZXhwX2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAoKiBwdW5uaW5nLiAqKVxuICAgICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gZXhwcl9vIGFjY1xuICAgICAgfCBQZXhwX29wZW5cbiAgICAgICAgICAoKHsgcG9wZW5fZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9pZGVudCBsaWQ7IF8gfTsgXyB9IGFzIG9wbiksIGUpXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnQgPSAwXG4gICAgICAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2NfZW5kIGUucGV4cF9sb2MubG9jX2VuZCA8PiAwIC0+XG4gICAgICAgICAgKCogbGV0J3MgcmVsb2NhdGUgLi4uICopXG4gICAgICAgICAgbGV0IGVfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX3N0YXJ0ID0gbGlkLmxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICBzdXBlciNleHByZXNzaW9uX2Rlc2NcbiAgICAgICAgICAgIChQZXhwX29wZW4gKG9wbiwgeyBlIHdpdGggcGV4cF9sb2MgPSBlX2xvYyB9KSlcbiAgICAgICAgICAgIGFjY1xuICAgICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8sIGN0KTsgXyB9KSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZXh0cmFjdF9jb25zdHJhaW50IGUgd2l0aFxuICAgICAgICAgIHwgU29tZSAoZSwgY3RlKSB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RlLnB0eXBfbG9jIGN0LnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgUGV4cF9hcHBseSAoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gbGlkOyBfIH07IF8gfSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIExvbmdpZGVudC5sYXN0X2V4biBsaWQgd2l0aFxuICAgICAgICAgIHwgaWRcbiAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCBpZCB+cHJlZml4OlwiLlwiXG4gICAgICAgICAgICAgICAgICYmIChTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9PC1cIikgLT5cbiAgICAgICAgICAgICAgc2VsZiNsaXN0IChmdW4gKF8sIGUpIC0+IHNlbGYjZXhwcmVzc2lvbiBlKSBhcmdzIGFjY1xuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiAgICAgICAgICAgICAqKVxuICAgICgqIC0gcHVubmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gcmVjb3JkIGZpZWxkIHdpdGggdHlwZSBjb25zdHJhaW50LiAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gdW5wYWNrIGxvY2F0aW9ucyBiZWluZyBpbmNvcnJlY3Qgd2hlbiBjb25zdHJhaW5lZCAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfcmVjb3JkIChsYWJlbHMsIF8pIC0+XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChsaWQsIHBhdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgcGF0LnBwYXRfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIHBhdC5wcGF0X2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgKCogc2ltcGxlIHB1bm5pbmchICopXG4gICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwIGFjY1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHBhdCBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGF0IGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh7IHBwYXRfZGVzYyA9IFBwYXRfdW5wYWNrIGE7IF8gfSwgYikgLT5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIGZha2Ugc3RydWN0dXJlIGZvciBhIGdlbmVyYXRpdmUgYXJndW1lbnQgY292ZXJzIHRoZSAgICAgKilcbiAgICAoKiBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2FwcGx5IChtLCB7IHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdOyBwbW9kX2xvYzsgXyB9KVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIG0ucG1vZF9sb2MubG9jX3N0YXJ0IHBtb2RfbG9jLmxvY19zdGFydCA9IDAgLT5cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciBtIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogb3Blbl9pbmZvcyBmb3IgUGNsX29wZW4gb25seSBjb3ZlcnMgdGhlIFwib3BlblwiIGtleXdvcmQgICopXG4gICAgKCogYW5kIG5vdCB0aGUgbW9kdWxlIG9wZW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfb3BlbiAob2QsIGNlKSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgY2UgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X29wZW4gKG9kLCBjdCkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGN0IGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgZG9jc3RyaW5ncyBoYXZlICAgICopXG4gICAgKCogdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGl0ZW0gdGhleSBnZXQgYXR0YWNoZWQgdG8uICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB4IGFjYyA9XG4gICAgICBtYXRjaCB4LmF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLmRvY1wiIHwgXCJvY2FtbC50ZXh0XCIgLT4gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjYXR0cmlidXRlIHggYWNjXG4gIGVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgQXJnID0gU3RkbGliLkFyZ1xuXG5sZXQgZXhlX25hbWUgPSBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbmxldCBhcmdzID0gcmVmIFtdXG5sZXQgYWRkX2FyZyBrZXkgc3BlYyB+ZG9jID0gYXJncyA6PSAoa2V5LCBzcGVjLCBkb2MpIDo6ICFhcmdzXG5sZXQgbG9jX2ZuYW1lID0gcmVmIE5vbmVcbmxldCBwZXJmb3JtX2NoZWNrcyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnNcbmxldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA9IHJlZiBPcHRpb25zLnBlcmZvcm1fbG9jYXRpb25zX2NoZWNrXG5sZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AgPSByZWYgZmFsc2VcbmxldCBhcHBseV9saXN0ID0gcmVmIE5vbmVcbmxldCBwcmVwcm9jZXNzb3IgPSByZWYgTm9uZVxubGV0IG5vX21lcmdlID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF9wYXNzZXMgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyA9IHJlZiBmYWxzZVxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE9wdGlvbnMuZGlmZl9jb21tYW5kXG5sZXQgcHJldHR5ID0gcmVmIGZhbHNlXG5sZXQgc3R5bGVyID0gcmVmIE5vbmVcbmxldCBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgPSByZWYgTm9uZVxubGV0IGNvcnJlY3RlZF9zdWZmaXggPSByZWYgXCIucHB4LWNvcnJlY3RlZFwiXG5cbmxldCBnaG9zdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgIG1ldGhvZCEgbG9jYXRpb24gbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgZW5kXG5cbmxldCBjaG9wX3ByZWZpeCB+cHJlZml4IHggPVxuICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXggeCB0aGVuXG4gICAgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHggKFN0cmluZy5sZW5ndGggcHJlZml4KSlcbiAgZWxzZSBOb25lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoIChsb2MgOiBMb2NhdGlvbi50KSA9XG4gIGxldCBmbmFtZSA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lIGluXG4gIG1hdGNoIGNob3BfcHJlZml4IH5wcmVmaXg6XCIuL1wiIGZuYW1lIHdpdGhcbiAgfCBTb21lIGZuYW1lIC0+IGZuYW1lXG4gIHwgTm9uZSAtPiBmbmFtZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zdHIgOiBzdHJ1Y3R1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc3RyX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc2lnIDogc2lnbmF0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHNpZ19sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbm1vZHVsZSBMaW50X2Vycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9IExvY2F0aW9uLnQgKiBzdHJpbmdcblxuICBsZXQgb2Zfc3RyaW5nIGxvYyBzID0gKGxvYywgcylcbmVuZFxuXG5tb2R1bGUgQ29va2llcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUXG5cbiAgbGV0IGdpdmVuX3Rocm91Z2hfY2xpID0gcmVmIFtdXG5cbiAgbGV0IGdldCBUIG5hbWUgcGF0dGVybiA9XG4gICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2UgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG5cbiAgbGV0IGdldF9yZXMgVCBuYW1lIHBhdHRlcm4gPVxuICAgIG1hdGNoXG4gICAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoT2sgZSkgLT4gT2sgKFNvbWUgZSlcbiAgICB8IFNvbWUgKEVycm9yIGUpIC0+IEVycm9yIGVcblxuICBsZXQgc2V0IFQgbmFtZSBleHByID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLnNldF9jb29raWUgbmFtZSAoU2VsZWN0ZWRfYXN0LnRvX29jYW1sIEV4cHJlc3Npb24gZXhwcilcblxuICBsZXQgaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9oYW5kbGVyIGYgPSBoYW5kbGVycyA6PSAhaGFuZGxlcnMgQCBbIGYgXVxuXG4gIGxldCBhZGRfc2ltcGxlX2hhbmRsZXIgbmFtZSBwYXR0ZXJuIH5mID1cbiAgICBhZGRfaGFuZGxlciAoZnVuIFQgLT4gZiAoZ2V0IFQgbmFtZSBwYXR0ZXJuKSlcblxuICBsZXQgYWNrbm93bGVkZ2VfY29va2llcyBUID0gTGlzdC5pdGVyICFoYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuICBsZXQgcG9zdF9oYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX3Bvc3RfaGFuZGxlciBmID0gcG9zdF9oYW5kbGVycyA6PSAhcG9zdF9oYW5kbGVycyBAIFsgZiBdXG4gIGxldCBjYWxsX3Bvc3RfaGFuZGxlcnMgVCA9IExpc3QuaXRlciAhcG9zdF9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuZW5kXG5cbm1vZHVsZSBJbnN0cnVtZW50ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gQmVmb3JlIHwgQWZ0ZXJcblxuICB0eXBlIHQgPSB7XG4gICAgdHJhbnNmb3JtYXRpb24gOlxuICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQ7XG4gICAgcG9zaXRpb24gOiBwb3M7XG4gIH1cblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9uIGN0eCBzdCA9IHJldHVybiAodHJhbnNmb3JtYXRpb24gY3R4IHN0KSBpblxuICAgICAgeyB0cmFuc2Zvcm1hdGlvbjsgcG9zaXRpb24gfVxuICBlbmRcblxuICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBfIHN0ID0gdHJhbnNmb3JtYXRpb24gc3QgaW5cbiAgICBWMi5tYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvblxuZW5kXG5cbm1vZHVsZSBUcmFuc2Zvcm0gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgYWxpYXNlcyA6IHN0cmluZyBsaXN0O1xuICAgIGltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlICogUGFyc2V0cmVlLnN0cnVjdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgKiBQYXJzZXRyZWUuc2lnbmF0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGluc3RydW1lbnQgOiBJbnN0cnVtZW50LnQgb3B0aW9uO1xuICAgIHJ1bGVzIDogQ29udGV4dF9mcmVlLlJ1bGUudCBsaXN0O1xuICAgIHJlZ2lzdGVyZWRfYXQgOiBDYWxsZXJfaWQudDtcbiAgfVxuXG4gIGxldCBoYXNfbmFtZSB0IG5hbWUgPVxuICAgIFN0cmluZy5lcXVhbCBuYW1lIHQubmFtZSB8fCBMaXN0LmV4aXN0cyB+ZjooU3RyaW5nLmVxdWFsIG5hbWUpIHQuYWxpYXNlc1xuXG4gIGxldCBhbGwgOiB0IGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHByaW50X2NhbGxlcl9pZCBvYyAoY2FsbGVyX2lkIDogQ2FsbGVyX2lkLnQpID1cbiAgICBtYXRjaCBjYWxsZXJfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRfc3RyaW5nIG9jIFwiPHVua25vd24gbG9jYXRpb24+XCJcbiAgICB8IFNvbWUgbG9jIC0+IFByaW50Zi5mcHJpbnRmIG9jIFwiJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG5cbiAgbGV0IHJlZ2lzdGVyID8oZXh0ZW5zaW9ucyA9IFtdKSA/KHJ1bGVzID0gW10pID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuICAgICAgP2luc3RydW1lbnQgPyhhbGlhc2VzID0gW10pIG5hbWUgPVxuICAgIGxldCBydWxlcyA9IExpc3QubWFwIGV4dGVuc2lvbnMgfmY6Q29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIEAgcnVsZXMgaW5cbiAgICBsZXQgY2FsbGVyX2lkID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbIFN0ZGxpYi5fX0ZJTEVfXyBdIGluXG4gICAgKG1hdGNoIExpc3QuZmlsdGVyICFhbGwgfmY6KGZ1biBjdCAtPiBoYXNfbmFtZSBjdCBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgY3QgOjogXyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIldhcm5pbmc6IGNvZGUgdHJhbnNmb3JtYXRpb24gJXMgcmVnaXN0ZXJlZCB0d2ljZS5cXG5cIlxuICAgICAgICAgIG5hbWU7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIGZpcnN0IHRpbWUgd2FzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkXG4gICAgICAgICAgY3QucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gc2Vjb25kIHRpbWUgaXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWQgY2FsbGVyX2lkKTtcbiAgICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgY3QgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBhbGlhc2VzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGltcGw7XG4gICAgICAgIGludGY7XG4gICAgICAgIGxpbnRfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGY7XG4gICAgICAgIGxpbnRfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudDtcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IGNhbGxlcl9pZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGFsbCA6PSBjdCA6OiAhYWxsXG5cbiAgbGV0IHJlYyBsYXN0IHByZXYgbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGxvY19vZl9saXN0IH5nZXRfbG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBmaXJzdCA6IExvY2F0aW9uLnQgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgbGV0IGxhc3QgPSBnZXRfbG9jIChsYXN0IHggbCkgaW5cbiAgICAgICAgU29tZSB7IGZpcnN0IHdpdGggbG9jX2VuZCA9IGxhc3QubG9jX2VuZCB9XG5cbiAgbGV0IG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIHQgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWUgPVxuICAgIGxldCB7IHJ1bGVzOyBlbmNsb3NlX2ltcGw7IGVuY2xvc2VfaW50ZjsgaW1wbDsgaW50ZjsgXyB9ID0gdCBpblxuICAgIGxldCBtYXAgPVxuICAgICAgbmV3IENvbnRleHRfZnJlZS5tYXBfdG9wX2Rvd25cbiAgICAgICAgcnVsZXMgfmVtYmVkX2Vycm9ycyB+Z2VuZXJhdGVkX2NvZGVfaG9vazpob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgIGluXG4gICAgbGV0IGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBjb250ZXh0IHdob2xlX2xvYyBmID1cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9IGYgd2hvbGVfbG9jIGluXG4gICAgICAobWF0Y2ggd2hvbGVfbG9jIHdpdGhcbiAgICAgIHwgU29tZSAobG9jIDogTG9jYXRpb24udCkgLT4gKFxuICAgICAgICAgIGxldCBsb2NfaGVhZGVyID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbGV0IGxvY19mb290ZXIgPSB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICAobWF0Y2ggaGVhZGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19oZWFkZXIgKE1hbnkgaGVhZGVyKSk7XG4gICAgICAgICAgbWF0Y2ggZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19mb290ZXIgKE1hbnkgZm9vdGVyKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggaGVhZGVyIEAgZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBob29rLmYgY29udGV4dCBsb2MgKE1hbnkgbCkpKTtcbiAgICAgIChoZWFkZXIsIGZvb3RlcilcbiAgICBpblxuICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZSB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgIGluXG4gICAgbGV0IG1hcF9pbXBsIGN0eHQgc3Rfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHN0ID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzdF93aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ltcGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzdCB+Z2V0X2xvYzooZnVuIHN0IC0+IHN0LlBhcnNldHJlZS5wc3RyX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU3RydWN0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc3RydWN0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzdDsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHN0IC0+IG1hdGNoIGltcGwgd2l0aCBOb25lIC0+IHJldHVybiBzdCB8IFNvbWUgZiAtPiBmIGN0eHQgc3RcbiAgICBpblxuICAgIGxldCBtYXBfaW50ZiBjdHh0IHNnX3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzZyA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc2dfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbnRmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc2cgfmdldF9sb2M6KGZ1biBzZyAtPiBzZy5QYXJzZXRyZWUucHNpZ19sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFNpZ25hdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3NpZ25hdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc2c7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzZyAtPiBtYXRjaCBpbnRmIHdpdGggTm9uZSAtPiByZXR1cm4gc2cgfCBTb21lIGYgLT4gZiBjdHh0IHNnXG4gICAgaW5cbiAgICB7IHQgd2l0aCBpbXBsID0gU29tZSBtYXBfaW1wbDsgaW50ZiA9IFNvbWUgbWFwX2ludGYgfVxuXG4gIGxldCBidWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfmhvb2sgfnJ1bGVzIH5lbmNsb3NlX2ltcGwgfmVuY2xvc2VfaW50ZlxuICAgICAgfmlucHV0X25hbWUgPVxuICAgIG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5ob29rIH5pbnB1dF9uYW1lXG4gICAgICB7XG4gICAgICAgIG5hbWUgPSBcIjxidWlsdGluOmNvbnRleHQtZnJlZT5cIjtcbiAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOltdO1xuICAgICAgfVxuXG4gIGxldCBwYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIHRzID1cbiAgICBsZXQgYmVmb3JlX2luc3RycywgYWZ0ZXJfaW5zdHJzLCByZXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IHRzIH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChiZWZfaSwgYWZ0X2ksIHJlc3QpIHQgLT5cbiAgICAgICAgICBsZXQgcmVkdWNlZF90ID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdCB3aXRoXG4gICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZiBpbnN0ciA9XG4gICAgICAgICAgICAoaW5zdHIuSW5zdHJ1bWVudC5wb3NpdGlvbiwgaW5zdHIuSW5zdHJ1bWVudC50cmFuc2Zvcm1hdGlvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIE9wdGlvbi5tYXAgdC5pbnN0cnVtZW50IH5mIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKEJlZm9yZSwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYmVmX2ksXG4gICAgICAgICAgICAgICAgYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgU29tZSAoQWZ0ZXIsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCBiZWZfaSxcbiAgICAgICAgICAgICAgICB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IE5vbmUgLT4gKGJlZl9pLCBhZnRfaSwgcmVkdWNlZF90IDo6IHJlc3QpKVxuICAgIGluXG4gICAgKCBgTGludGVyc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIHQubGludF9pbXBsIHx8IE9wdGlvbi5pc19zb21lIHQubGludF9pbnRmIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxsaW50OiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gdC5saW50X2ltcGw7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gdC5saW50X2ludGY7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBQcmVwcm9jZXNzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbXBsXG4gICAgICAgICAgICAgICB8fCBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW50ZlxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxwcmVwcm9jZXNzOiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IHQucHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSB0LnByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgIGBSZXN0IHJlc3QgKVxuZW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm0ucmVnaXN0ZXJcblxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuICAgICAgPVxuICAgIGxldCBpbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgaW1wbCB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFN0cnVjdHVyZSlcbiAgICBpblxuICAgIGxldCBpbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgaW50ZiB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFNpZ25hdHVyZSlcbiAgICBpblxuICAgIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbmVuZFxuXG5sZXQgYWRkX2N0eHRfYXJnIChmIDogJ2EgLT4gJ2IpIDogRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdiID1cbiBmdW4gXyB4IC0+IGYgeFxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZiA/aW1wbFxuICAgID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ltcGwgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW50ZiA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbXBsID0gT3B0aW9uLm1hcCBsaW50X2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ludGYgPSBPcHRpb24ubWFwIGxpbnRfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW1wbCA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbnRmID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG5cbmxldCByZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIH5uYW1lID8oYWxpYXNlcyA9IFtdKSB+aW1wbCB+aW50ZiA9XG4gIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIG5hbWUgfmltcGwgfmludGYgfmFsaWFzZXNcbltAQHdhcm5pbmcgXCItMTZcIl1cbigqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYSB3YXJuaW5nIDE2IGFzIG9mIG9jYW1sIDQuMTIgKilcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZlxuXG5sZXQgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgbmFtZSB+b2xkX2Ryb3BwZWQgfm5ld19kcm9wcGVkID1cbiAgbGV0IHByaW50X2RpZmYgd2hhdCBhIGIgPVxuICAgIGxldCBkaWZmID1cbiAgICAgIExpc3QuZmlsdGVyIGEgfmY6KGZ1biAobmFtZSA6IF8gTG9jLnQpIC0+XG4gICAgICAgICAgbm90XG4gICAgICAgICAgICAoTGlzdC5leGlzdHMgYiB+ZjooZnVuIChuYW1lJyA6IF8gTG9jYXRpb24ubG9jKSAtPlxuICAgICAgICAgICAgICAgICBuYW1lLnR4dCA9PSBuYW1lJy50eHQpKSlcbiAgICBpblxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBkaWZmKSB0aGVuIChcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzICVzIGFmdGVyIGFwcGx5aW5nICVzOlxcblwiIHdoYXRcbiAgICAgICAgbmFtZTtcbiAgICAgIExpc3QuaXRlciBkaWZmIH5mOihmdW4geyBMb2NhdGlvbi50eHQ7IGxvYyB9IC0+XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiLSAlYTogJXNcXG5cIiBMb2NhdGlvbi5wcmludCBsb2MgdHh0KTtcbiAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkAuXCIpXG4gIGluXG4gIHByaW50X2RpZmYgXCJkaXNhcHBlYXJlZFwiIG5ld19kcm9wcGVkIG9sZF9kcm9wcGVkO1xuICBwcmludF9kaWZmIFwicmVhcHBlYXJlZFwiIG9sZF9kcm9wcGVkIG5ld19kcm9wcGVkXG5cbmxldCBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgfmlucHV0X25hbWUgPVxuICBsZXQgY3RzID1cbiAgICBtYXRjaCAhYXBwbHlfbGlzdCB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QucmV2ICFUcmFuc2Zvcm0uYWxsXG4gICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgICAgTGlzdC5maW5kICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICBpblxuICBsZXQgKCBgTGludGVycyBsaW50ZXJzLFxuICAgICAgICBgUHJlcHJvY2VzcyBwcmVwcm9jZXNzLFxuICAgICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgICAgYFJlc3QgY3RzICkgPVxuICAgIFRyYW5zZm9ybS5wYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIGN0c1xuICBpblxuICAoKiBBbGxvdyBvbmx5IG9uZSBwcmVwcm9jZXNzb3IgdG8gYXNzdXJlIGRldGVybWluaXN0aWMgb3JkZXIgKilcbiAgKGlmIExpc3QubGVuZ3RoIHByZXByb2Nlc3MgPiAxIHRoZW5cbiAgICAgbGV0IHBwID1cbiAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0Lm1hcCBwcmVwcm9jZXNzIH5mOihmdW4gdCAtPiB0Lm5hbWUpKVxuICAgICBpblxuICAgICBsZXQgZXJyID1cbiAgICAgICBQcmludGYuc3ByaW50ZiBcIkF0IG1vc3Qgb25lIHByZXByb2Nlc3NvciBpcyBhbGxvd2VkLCB3aGlsZSBnb3Q6ICVzXCIgcHBcbiAgICAgaW5cbiAgICAgZmFpbHdpdGggZXJyKTtcbiAgbGV0IG1ha2VfZ2VuZXJpYyB0cmFuc2Zvcm1zID1cbiAgICBpZiAhbm9fbWVyZ2UgdGhlblxuICAgICAgTGlzdC5tYXAgdHJhbnNmb3Jtc1xuICAgICAgICB+ZjpcbiAgICAgICAgICAoVHJhbnNmb3JtLm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfnRvb2xfbmFtZVxuICAgICAgICAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSlcbiAgICBlbHNlXG4gICAgICAobGV0IGdldF9lbmNsb3NlcnMgfmYgPVxuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBmIGN0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGN0Lm5hbWUsIHgpKVxuICAgICAgICAgKCogU29ydCB0aGVtIHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyaW5nICopXG4gICAgICAgICB8PiBMaXN0LnNvcnQgfmNtcDooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKVxuICAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICAgaW5cblxuICAgICAgIGxldCBydWxlcyA9XG4gICAgICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LnJ1bGVzKVxuICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICBhbmQgaW1wbF9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbXBsKVxuICAgICAgIGFuZCBpbnRmX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ludGYpIGluXG4gICAgICAgbWF0Y2ggKHJ1bGVzLCBpbXBsX2VuY2xvc2VycywgaW50Zl9lbmNsb3NlcnMpIHdpdGhcbiAgICAgICB8IFtdLCBbXSwgW10gLT4gdHJhbnNmb3Jtc1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgICBsZXQgbWVyZ2VfZW5jbG9zZXIgPSBmdW5jdGlvblxuICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgIHwgZW5jbG9zZXJzIC0+XG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoZnVuIGN0eHQgbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycywgZm9vdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIGVuY2xvc2VycyB+ZjooZnVuIGYgLT4gZiBjdHh0IGxvYykgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzID0gTGlzdC5jb25jYXQgaGVhZGVycyBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGZvb3RlcnMgPSBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgZm9vdGVycykgaW5cbiAgICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLCBmb290ZXJzKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgVHJhbnNmb3JtLmJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+cnVsZXMgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgIH5lbmNsb3NlX2ltcGw6KG1lcmdlX2VuY2xvc2VyIGltcGxfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH5lbmNsb3NlX2ludGY6KG1lcmdlX2VuY2xvc2VyIGludGZfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWVcbiAgICAgICAgICAgOjogdHJhbnNmb3JtcylcbiAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKGN0LmltcGwsIGN0LmludGYpIHdpdGggTm9uZSwgTm9uZSAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgaW5cbiAgbGludGVycyBAIHByZXByb2Nlc3MgQCBiZWZvcmVfaW5zdHJzIEAgbWFrZV9nZW5lcmljIGN0cyBAIGFmdGVyX2luc3Ryc1xuXG5sZXQgYXBwbHlfdHJhbnNmb3JtcyB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmZpZWxkIH5saW50X2ZpZWxkIH5kcm9wcGVkX3NvX2ZhclxuICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzIGFzdCA9XG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH50b29sX25hbWUgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH5pbnB1dF9uYW1lXG4gIGluXG4gIGxldCBmaW5pc2ggKGFzdCwgX2Ryb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpID1cbiAgICAoIGFzdCxcbiAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzIH5mOihmdW4gKGxvYywgcykgLT5cbiAgICAgICAgICBDb21tb24uYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMpLFxuICAgICAgZXJyb3JzIClcbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgY3RzIH5pbml0Oihhc3QsIFtdLCBbXSwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKGFzdCwgZHJvcHBlZCwgKGxpbnRfZXJyb3JzIDogXyBsaXN0KSwgZXJyb3JzKSAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aFxuICAgICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgICAgICAgIG1hdGNoIGxpbnRfZmllbGQgY3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAobGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSAobGludF9lcnJvcnMgQCBmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKGxpbnRfZXJyb3JzLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmaWVsZCBjdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IChhc3QsIG1vcmVfZXJyb3JzKSwgZXJyb3JzID1cbiAgICAgICAgICAgICAgdHJ5IChmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKChhc3QsIFtdKSwgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkcm9wcGVkID1cbiAgICAgICAgICAgICAgaWYgIWRlYnVnX2F0dHJpYnV0ZV9kcm9wIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBuZXdfZHJvcHBlZCA9IGRyb3BwZWRfc29fZmFyIGFzdCBpblxuICAgICAgICAgICAgICAgIGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIGN0Lm5hbWUgfm9sZF9kcm9wcGVkOmRyb3BwZWRcbiAgICAgICAgICAgICAgICAgIH5uZXdfZHJvcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdfZHJvcHBlZClcbiAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMgQCBtb3JlX2Vycm9ycykpXG4gIGluXG4gIGZpbmlzaCBhY2NcblxuKCokKilcblxubGV0IGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH4oa2luZCA6IEtpbmQudCkgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBJbnRmIC0+IEludGZfb3JfaW1wbC5JbnRmIFsgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciBdXG4gIHwgSW1wbCAtPiBJbnRmX29yX2ltcGwuSW1wbCBbIGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgXVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gfihraW5kIDogS2luZC50KSA9XG4gIGV4bl90b19sb2NfZXJyb3IgZXhuIHw+IGVycm9yX3RvX2V4dGVuc2lvbiB+a2luZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEFjdHVhbCByZXdyaXRpbmcgb2Ygc3RydWN0dXJlL3NpZ25hdHVyZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBwcmludF9wYXNzZXMgKCkgPVxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhsaWJfZHJpdmVyXCIgaW5cbiAgbGV0IGVtYmVkX2Vycm9ycyA9IGZhbHNlIGluXG4gIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgICAgfmlucHV0X25hbWU6Tm9uZVxuICBpblxuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpmcmVzaGVuLWFuZC1jb2xsZWN0LWF0dHJpYnV0ZXM+XFxuXCI7XG4gIExpc3QuaXRlciBjdHMgfmY6KGZ1biBjdCAtPiBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5UcmFuc2Zvcm0ubmFtZSk7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWF0dHJpYnV0ZXM+XFxuXCI7XG4gICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1leHRlbnNpb25zPlxcblwiKVxuXG5sZXQgc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyA9XG4gIExpc3Quc29ydCBlcnJvcnMgfmNtcDooZnVuIGVycm9yIGVycm9yJyAtPlxuICAgICAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICAgICAgbGV0IGxvYycgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3InIGluXG4gICAgICBMb2NhdGlvbi5jb21wYXJlIGxvYyBsb2MnKVxuXG4oKiQqKVxuXG5sZXQgbWFwX3N0cnVjdHVyZV9nZW4gc3QgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3N0cnVjdHVyZSBzdCk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHN0ID1cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzdFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc3RcbiAgICBpblxuICAgIHN0XG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc3QgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3N0cnVjdHVyZV9pdGVtKVxuICAgIEAgc3RcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHN0ID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc3RydWN0dXJlIHN0XG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzdFxuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgbGV0IHN0LCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHN0IH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmltcGwpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ltcGwpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc3QgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9XG4gIG1hdGNoXG4gICAgbWFwX3N0cnVjdHVyZV9nZW4gc3RcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IG1hcF9zaWduYXR1cmVfZ2VuIHNnIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzaWduYXR1cmUgc2cpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzZyA9XG4gICAgbGV0IHNnID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc2dcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHNnXG4gICAgaW5cbiAgICBzZ1xuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHNnID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzaWduYXR1cmVfaXRlbSlcbiAgICBAIHNnXG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzZyA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc2dcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gIGxldCBzZywgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzZyB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbnRmKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbnRmKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHNnIHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zaWduYXR1cmUgc2cgPVxuICBtYXRjaFxuICAgIG1hcF9zaWduYXR1cmVfZ2VuIHNnXG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQqKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEVudHJ5IHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzID1cbiAgbGV0IHRlc3QgbWFnaWNfbnVtYmVyID1cbiAgICBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDooU3RyaW5nLnN1YiBtYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgaW5cbiAgdGVzdCBBc3RfbWFnaWMuYXN0X2ludGZfbWFnaWNfbnVtYmVyIHx8IHRlc3QgQXN0X21hZ2ljLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG5sZXQgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGlucHV0X2ZpbGVfbmFtZSA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExvY2F0aW9uLkVycm9yLm1ha2UgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlX25hbWUpIG1zZyB+c3ViOltdXG4gICAgICBpblxuICAgICAgRXJyb3IgKGVyciwgaW5wdXRfdmVyc2lvbikpXG5cbmxldCByZW1vdmVfbm9fZXJyb3IgZm4gPSB0cnkgU3RkbGliLlN5cy5yZW1vdmUgZm4gd2l0aCBTeXNfZXJyb3IgXyAtPiAoKVxuXG5sZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgdiAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgdlxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICByYWlzZSBlXG5cbmxldCB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mID1cbiAgbWF0Y2ggIXByZXByb2Nlc3NvciB3aXRoXG4gIHwgTm9uZSAtPiBmIGZuXG4gIHwgU29tZSBwcCAtPlxuICAgICAgcHJvdGVjdHggKFN0ZGxpYi5GaWxlbmFtZS50ZW1wX2ZpbGUgXCJvY2FtbHBwXCIgXCJcIikgfmZpbmFsbHk6cmVtb3ZlX25vX2Vycm9yXG4gICAgICAgIH5mOihmdW4gdG1wZmlsZSAtPlxuICAgICAgICAgIG1hdGNoIFN5c3RlbS5ydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQ6Zm4gfm91dHB1dDp0bXBmaWxlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGYgdG1wZmlsZVxuICAgICAgICAgIHwgRXJyb3IgKGZhaWxlZF9jb21tYW5kLCBmYWxsX2JhY2tfdmVyc2lvbikgLT5cbiAgICAgICAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICAgICAgICAgIFwiRXJyb3Igd2hpbGUgcnVubmluZyBleHRlcm5hbCBwcmVwcm9jZXNzb3JcXG5Db21tYW5kIGxpbmU6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICBmYWlsZWRfY29tbWFuZClcblxubGV0IHJlbG9jYXRlX21hcHBlciA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyAqIHN0cmluZ10gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCEgcG9zaXRpb24gKG9sZF9mbiwgbmV3X2ZuKSBwb3MgPVxuICAgICAgaWYgU3RyaW5nLmVxdWFsIHBvcy5wb3NfZm5hbWUgb2xkX2ZuIHRoZW4geyBwb3Mgd2l0aCBwb3NfZm5hbWUgPSBuZXdfZm4gfVxuICAgICAgZWxzZSBwb3NcbiAgZW5kXG5cbigqIFNldCB0aGUgaW5wdXQgbmFtZSBnbG9iYWxseS4gVGhpcyBpcyB1c2VkIGJ5IHNvbWUgcHB4IHJld3JpdGVyc1xuICAgc3VjaCBhcyBiaXNlY3RfcHB4LiAqKVxubGV0IHNldF9pbnB1dF9uYW1lID0gQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9uYW1lXG5cbmxldCBsb2FkX2lucHV0IH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnJlbG9jYXRlIGZuID1cbiAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgbGV0IGlucHV0X3NvdXJjZSA9IGlmIFN0cmluZy5lcXVhbCBmbiBcIi1cIiB0aGVuIEFzdF9pby5TdGRpbiBlbHNlIEZpbGUgZm4gaW5cbiAgbGV0IGlucHV0X2tpbmQgPSBBc3RfaW8uUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSBpblxuICBtYXRjaCBBc3RfaW8ucmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdF9raW5kID0gSW50Zl9vcl9pbXBsLmtpbmQgYXN0IGluXG4gICAgICBpZiBub3QgKEtpbmQuZXF1YWwga2luZCBhc3Rfa2luZCkgdGhlblxuICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gZm5cbiAgICAgICAgICBcIkZpbGUgY29udGFpbnMgYSBiaW5hcnkgJXMgQVNUIGJ1dCBhbiAlcyB3YXMgZXhwZWN0ZWRcIlxuICAgICAgICAgIChLaW5kLmRlc2NyaWJlIGFzdF9raW5kKSAoS2luZC5kZXNjcmliZSBraW5kKVxuICAgICAgZWxzZSBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB8fCBub3QgcmVsb2NhdGUgdGhlbiAoXG4gICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICBPayAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIE9rXG4gICAgICAgICAgKCBpbnB1dF9uYW1lLFxuICAgICAgICAgICAgaW5wdXRfdmVyc2lvbixcbiAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKSApXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICBcIkZpbGUgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSlcbiAgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgRXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbilcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGZuID1cbiAgKCogSWYgdGhlcmUncyBhbiBlcnJvciB3aGlsZSBsb2FkaW5nIGluIHJ1bl9hc19wcHggbW9kZSwgdGhlIGtpbmQgb2YgQVNUIChpbXBsL2ludGYpIGlzIHN0aWxsIHVua25vd24uXG4gICAgIFRoYXQncyB3aHksIGFzIG9wcG9zZWQgdG8gbG9hZF9pbnB1dCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgZXJyb3JzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcmVzdWx0OlxuICAgICBoYW5kbGluZyBhbiBlcnJvciBieSByZXR1cm5pbmcgYW4gQVNUIHdpdGggdGhlIGVycm9yIHBhY2tlZCBhcyBleHRlbnNpb24gbm9kZSB3b3VsZG4ndCBiZSBwb3NzaWJsZS4gKilcbiAgbWF0Y2ggQXN0X2lvLnJlYWQgKEZpbGUgZm4pIH5pbnB1dF9raW5kOkFzdF9pby5OZWNlc3NhcmlseV9iaW5hcnkgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICAgICAgYXN0XG4gICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgdGhlbiBhc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSlcbiAgICAgIGluXG4gICAgICAoKiBXaXRoIGAtLWFzLXBweGAsIG9jYW1sIGNhbGxzIHRoZSBzdGFuZGFsb25lIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5IHN0cnVjdHVyZS9zaWduYXR1cmUgaXRlbVxuICAgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgYXMgbWV0YWRhdGEgdGhhdCBpdCBnZXRzIGZyb20gdGhlIHByZXZpb3VzIGNhbGwuIHJlbG9jYXRlX21hcHBlciBvbmx5XG4gICAgICAgICByZWxvY2F0ZXMgcG9zaXRpb25zIHdob3NlIHBvc2l0aW9uIGZpbGVuYW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgbWV0YWRhdGEgZmlsZW5hbWUuXG4gICAgICAgICBTbyBhbHdheXMgcmV0dXJuIHRoZSBtZXRhZGF0YSBmaWxlbmFtZSBpdHNlbGYsIGV2ZW4gaWYgYC1sb2MtZmlsZW5hbWVgIGlzIHByb3ZpZGVkLiAqKVxuICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgXykpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJUaGUgaW5wdXQgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiRXhwZWN0ZWQgYSBiaW5hcnkgQVNUIGFzIGlucHV0XCJcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgXykpIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIF8pKSAtPlxuICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmbiB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG5cbmxldCBsb2FkX3NvdXJjZV9maWxlIGZuID1cbiAgbGV0IHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZuIGluXG4gIGlmIHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgXCJwcHhsaWJfZHJpdmVyOiBjYW5ub3QgdXNlIC1yZWNvbmNpbGUgd2l0aCBiaW5hcnkgQVNUIGZpbGVzXCI7XG4gIHNcblxudHlwZSBvdXRwdXRfbW9kZSA9XG4gIHwgUHJldHR5X3ByaW50XG4gIHwgRHVtcF9hc3RcbiAgfCBEcGFyc2V0cmVlXG4gIHwgUmVjb25jaWxlIG9mIFJlY29uY2lsZS5tb2RlXG4gIHwgTnVsbFxuXG4oKiQqKVxubGV0IGV4dHJhY3RfY29va2llc19zdHIgc3QgPVxuICBsZXQgc3QgPVxuICAgIG1hdGNoIHN0IHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzdCAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU3RydWN0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3N0ciB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzdFxuICAgIHwgXyAtPiBzdFxuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHN0XG5cbmxldCBhZGRfY29va2llc19zdHIgc3QgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFN0cnVjdHVyZVxuICBpblxuICBwcmVmaXggQCBzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5sZXQgZXh0cmFjdF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBzZyA9XG4gICAgbWF0Y2ggc2cgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzaWdfZGVzYyA9XG4gICAgICAgICAgIFBzaWdfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHNnIC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTaWduYXR1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc2lnIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHNnXG4gICAgfCBfIC0+IHNnXG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc2dcblxubGV0IGFkZF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU2lnbmF0dXJlXG4gIGluXG4gIHByZWZpeCBAIHNnXG5cbigqJCopXG5cbmxldCBleHRyYWN0X2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoZXh0cmFjdF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChleHRyYWN0X2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBhZGRfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChhZGRfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoYWRkX2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBjb3JyZWN0aW9ucyA9IHJlZiBbXVxubGV0IGFkZF90b19saXN0IHIgeCA9IHIgOj0geCA6OiAhclxuXG5sZXQgcmVnaXN0ZXJfY29ycmVjdGlvbiB+bG9jIH5yZXBsID1cbiAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2VfdGV4dCAoKSB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZFxuICAgICAgIH5yZXBsKVxuXG5sZXQgcHJvY2Vzc19maWxlX2hvb2tzID0gcmVmIFtdXG5sZXQgcmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2sgZiA9IGFkZF90b19saXN0IHByb2Nlc3NfZmlsZV9ob29rcyBmXG5cbm1vZHVsZSBGaWxlX3Byb3BlcnR5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgICBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnQ7XG4gIH1cblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGFsbCA9IHJlZiBbXVxuICBsZXQgcmVnaXN0ZXIgdCA9IGFkZF90b19saXN0IGFsbCAoVCB0KVxuICBsZXQgcmVzZXRfYWxsICgpID0gTGlzdC5pdGVyICFhbGwgfmY6KGZ1biAoVCB0KSAtPiB0LmRhdGEgPC0gTm9uZSlcblxuICBsZXQgZHVtcF9hbmRfcmVzZXRfYWxsICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QucmV2ICFhbGwpIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbWF0Y2ggdC5kYXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICAgIHQuZGF0YSA8LSBOb25lO1xuICAgICAgICAgICAgU29tZSAodC5uYW1lLCB0LnNleHBfb2ZfdCB2KSlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoTmFtZSA6IHNpZ1xuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmQpXG4gICAgKFQgOiBTZXhwYWJsZS5TKSA9XG5zdHJ1Y3RcbiAgbGV0IHQgOiBfIEZpbGVfcHJvcGVydHkudCA9XG4gICAgeyBuYW1lID0gTmFtZS5uYW1lOyBkYXRhID0gTm9uZTsgc2V4cF9vZl90ID0gVC5zZXhwX29mX3QgfVxuXG4gIGxldCAoKSA9IEZpbGVfcHJvcGVydHkucmVnaXN0ZXIgdFxuICBsZXQgc2V0IHggPSB0LmRhdGEgPC0gU29tZSB4XG5lbmRcblxubGV0IHByb2Nlc3NfYXN0IChhc3QgOiBJbnRmX29yX2ltcGwudCkgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9va1xuICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+ZW1iZWRfZXJyb3JzID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zaWduYXR1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW50ZiBhc3RcbiAgfCBJbXBsIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW1wbCBhc3RcblxubGV0IHByb2Nlc3NfZmlsZSAoa2luZCA6IEtpbmQudCkgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZVxuICAgIH5lbWJlZF9lcnJvcnMgfm91dHB1dCA9XG4gIEZpbGVfcHJvcGVydHkucmVzZXRfYWxsICgpO1xuICBMaXN0Lml0ZXIgKExpc3QucmV2ICFwcm9jZXNzX2ZpbGVfaG9va3MpIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgY29ycmVjdGlvbnMgOj0gW107XG4gIGxldCByZXBsYWNlbWVudHMgPSByZWYgW10gaW5cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4X2RyaXZlclwiIGluXG4gIGxldCBob29rIDogQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2sudCA9XG4gICAgbWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICAgIHwgUmVjb25jaWxlIChVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBmID1cbiAgICAgICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgICAgIGFkZF90b19saXN0IHJlcGxhY2VtZW50c1xuICAgICAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRXh0ZW5zaW9uIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6Z2VuZXJhdGVkKSk7XG4gICAgICAgIH1cbiAgICB8IF8gLT4gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA6IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci50ID1cbiAgICB7XG4gICAgICBmID1cbiAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihGbG9hdGluZ19hdHRyaWJ1dGUgY29udGV4dClcbiAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOihNYW55IGdlbmVyYXRlZCkpKTtcbiAgICB9XG4gIGluXG5cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9XG4gICAgbGV0IHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkID1cbiAgICAgIHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmY6KGxvYWRfaW5wdXQgfmtpbmQgfmlucHV0X25hbWUgfnJlbG9jYXRlKVxuICAgIGluXG4gICAgbWF0Y2ggcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgd2l0aFxuICAgIHwgT2sgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpIC0+IChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBleHRyYWN0X2Nvb2tpZXMgYXN0XG4gICAgICAgICAgICB8PiBwcm9jZXNzX2FzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kKSlcbiAgICB8IEVycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikgd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgKGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+a2luZClcbiAgICB8IEVycm9yIChlcnJvciwgXykgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuXG4gICAgICAgIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcbiAgaW5cbiAgT3B0aW9uLml0ZXIgIW91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSB+ZjooZnVuIGZuIC0+XG4gICAgICBsZXQgbWV0YWRhdGEgPSBGaWxlX3Byb3BlcnR5LmR1bXBfYW5kX3Jlc2V0X2FsbCAoKSBpblxuICAgICAgT3V0X2NoYW5uZWwud3JpdGVfYWxsIGZuXG4gICAgICAgIH5kYXRhOlxuICAgICAgICAgIChMaXN0Lm1hcCBtZXRhZGF0YSB+ZjooZnVuIChzLCBzZXhwKSAtPlxuICAgICAgICAgICAgICAgU2V4cC50b19zdHJpbmdfaHVtIChTZXhwLkxpc3QgWyBBdG9tIHM7IHNleHAgXSkgXiBcIlxcblwiKVxuICAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiKSk7XG5cbiAgbGV0IGlucHV0X2NvbnRlbnRzID0gbGF6eSAobG9hZF9zb3VyY2VfZmlsZSBmbikgaW5cbiAgbGV0IGNvcnJlY3RlZCA9IGZuIF4gIWNvcnJlY3RlZF9zdWZmaXggaW5cbiAgbGV0IG1pc21hdGNoZXNfZm91bmQgPVxuICAgIG1hdGNoICFjb3JyZWN0aW9ucyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgICBpZiBTdGRsaWIuU3lzLmZpbGVfZXhpc3RzIGNvcnJlY3RlZCB0aGVuIFN0ZGxpYi5TeXMucmVtb3ZlIGNvcnJlY3RlZDtcbiAgICAgICAgZmFsc2VcbiAgICB8IGNvcnJlY3Rpb25zIC0+XG4gICAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgY29ycmVjdGlvbnNcbiAgICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgICAgfm91dHB1dDooU29tZSBjb3JyZWN0ZWQpIH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZVxuICAgICAgICAgIH50YXJnZXQ6Q29ycmVjdGVkID9zdHlsZXI6IXN0eWxlciB+a2luZDtcbiAgICAgICAgdHJ1ZVxuICBpblxuXG4gIChtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gIHwgTnVsbCAtPiAoKVxuICB8IFByZXR0eV9wcmludCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gUHByaW50YXN0LnNpZ25hdHVyZSBwcGYgYXN0XG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBQcHJpbnRhc3Quc3RydWN0dXJlIHBwZiBhc3QpO1xuICAgICAgICAgIGxldCBudWxsX2FzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aCBJbnRmIFtdIHwgSW1wbCBbXSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IG51bGxfYXN0IHRoZW4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBEdW1wX2FzdCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgQXN0X2lvLndyaXRlIG9jXG4gICAgICAgICAgICB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgICAgICAgICB+YWRkX3BweF9jb250ZXh0OnRydWUpXG4gIHwgRHBhcnNldHJlZSAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIGxldCBhc3QgPSBhZGRfY29va2llcyBhc3QgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlIGFzdClcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlIGFzdCkpO1xuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgUmVjb25jaWxlIG1vZGUgLT5cbiAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgIXJlcGxhY2VtZW50c1xuICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgIH5vdXRwdXQgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lIH50YXJnZXQ6KE91dHB1dCBtb2RlKVxuICAgICAgICA/c3R5bGVyOiFzdHlsZXIgfmtpbmQpO1xuXG4gIGlmXG4gICAgbWlzbWF0Y2hlc19mb3VuZCAmJiBtYXRjaCAhZGlmZl9jb21tYW5kIHdpdGggU29tZSBcIi1cIiAtPiBmYWxzZSB8IF8gLT4gdHJ1ZVxuICB0aGVuIChcbiAgICBQcHhsaWJfcHJpbnRfZGlmZi5wcmludCAoKSB+ZmlsZTE6Zm4gfmZpbGUyOmNvcnJlY3RlZCB+dXNlX2NvbG9yOiF1c2VfY29sb3JcbiAgICAgID9kaWZmX2NvbW1hbmQ6IWRpZmZfY29tbWFuZDtcbiAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgb3V0cHV0X21vZGUgPSByZWYgUHJldHR5X3ByaW50XG5sZXQgb3V0cHV0ID0gcmVmIE5vbmVcbmxldCBraW5kID0gcmVmIE5vbmVcbmxldCBpbnB1dCA9IHJlZiBOb25lXG5sZXQgZW1iZWRfZXJyb3JzID0gcmVmIGZhbHNlXG5cbmxldCBzZXRfaW5wdXQgZm4gPVxuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT4gaW5wdXQgOj0gU29tZSBmblxuICB8IFNvbWUgXyAtPiByYWlzZSAoQXJnLkJhZCBcInRvbyBtYW55IGlucHV0IGZpbGVzXCIpXG5cbmxldCBzZXRfa2luZCBrID1cbiAgbWF0Y2ggIWtpbmQgd2l0aFxuICB8IFNvbWUgaycgd2hlbiBub3QgKEtpbmQuZXF1YWwgayBrJykgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwibXVzdCBzcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIC1pbXBsIG9yIC1pbnRmXCIpXG4gIHwgXyAtPiBraW5kIDo9IFNvbWUga1xuXG5sZXQgc2V0X291dHB1dF9tb2RlIG1vZGUgPVxuICBtYXRjaCAoIW91dHB1dF9tb2RlLCBtb2RlKSB3aXRoXG4gIHwgUHJldHR5X3ByaW50LCBfIC0+IG91dHB1dF9tb2RlIDo9IG1vZGVcbiAgfCBfLCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRHVtcF9hc3QsIER1bXBfYXN0IHwgRHBhcnNldHJlZSwgRHBhcnNldHJlZSAtPiAoKVxuICB8IFJlY29uY2lsZSBhLCBSZWNvbmNpbGUgYiB3aGVuIFBvbHkuZXF1YWwgYSBiIC0+ICgpXG4gIHwgeCwgeSAtPlxuICAgICAgbGV0IGFyZ19vZl9vdXRwdXRfbW9kZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IER1bXBfYXN0IC0+IFwiLWR1bXAtYXN0XCJcbiAgICAgICAgfCBEcGFyc2V0cmVlIC0+IFwiLWRwYXJzZXRyZWVcIlxuICAgICAgICB8IFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT4gXCItcmVjb25jaWxlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+IFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCJcbiAgICAgICAgfCBOdWxsIC0+IFwiLW51bGxcIlxuICAgICAgaW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzIGFuZCAlcyBhcmUgaW5jb21wYXRpYmxlXCIgKGFyZ19vZl9vdXRwdXRfbW9kZSB4KVxuICAgICAgICAgICAgICAoYXJnX29mX291dHB1dF9tb2RlIHkpKSlcblxubGV0IHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKSA9XG4gIExpc3QuaXRlciAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QubmFtZSlcblxubGV0IHBhcnNlX2FwcGx5X2xpc3QgcyA9XG4gIGxldCBuYW1lcyA9XG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIiB0aGVuIFtdIGVsc2UgU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicsJ1xuICBpblxuICBMaXN0Lml0ZXIgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICBpZlxuICAgICAgICBub3RcbiAgICAgICAgICAoTGlzdC5leGlzdHMgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoU3RkbGliLkFyZy5CYWRcbiAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJjb2RlIHRyYW5zZm9ybWF0aW9uICclcycgZG9lcyBub3QgZXhpc3RcIiBuYW1lKSkpO1xuICBuYW1lc1xuXG50eXBlIG1hc2sgPSB7XG4gIG11dGFibGUgYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIG11dGFibGUgZG9udF9hcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbn1cblxubGV0IG1hc2sgPSB7IGFwcGx5ID0gTm9uZTsgZG9udF9hcHBseSA9IE5vbmUgfVxuXG5sZXQgaGFuZGxlX2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gICgqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncyBtb3JlIGludHVpdGl2ZSAqKVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSAtZG9udC1hcHBseVwiKTtcbiAgbWFzay5hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBoYW5kbGVfZG9udF9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gIG1hc2suZG9udF9hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBpbnRlcnByZXRfbWFzayAoKSA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgfHwgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICBsZXQgc2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUgY3QgPVxuICAgICAgbGV0IGlzX2NhbmRpZGF0ZSA9XG4gICAgICAgIG1hdGNoIG1hc2suYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT4gTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdClcbiAgICAgIGluXG4gICAgICBsZXQgaXNfc2VsZWN0ZWQgPVxuICAgICAgICBtYXRjaCBtYXNrLmRvbnRfYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaXNfY2FuZGlkYXRlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICAgICAgaXNfY2FuZGlkYXRlICYmIG5vdCAoTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdCkpXG4gICAgICBpblxuICAgICAgaWYgaXNfc2VsZWN0ZWQgdGhlbiBTb21lIGN0Lm5hbWUgZWxzZSBOb25lXG4gICAgaW5cbiAgICBhcHBseV9saXN0IDo9XG4gICAgICBTb21lIChMaXN0LmZpbHRlcl9tYXAgIVRyYW5zZm9ybS5hbGwgfmY6c2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUpXG5cbmxldCBzZXRfY29va2llIHMgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonPScgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwiaW52YWxpZCBjb29raWUsIG11c3QgYmUgb2YgdGhlIGZvcm0gXFxcIjxuYW1lPj08ZXhwcj5cXFwiXCIpXG4gIHwgU29tZSAobmFtZSwgdmFsdWUpIC0+XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHZhbHVlIGluXG4gICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIjxjb21tYW5kLWxpbmU+XCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfTtcbiAgICAgIGxldCBleHByID0gUGFyc2UuZXhwcmVzc2lvbiBsZXhidWYgaW5cbiAgICAgIENvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgOj0gKG5hbWUsIGV4cHIpIDo6ICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpXG5cbmxldCBzaGFyZWRfYXJncyA9XG4gIFtcbiAgICAoIFwiLWxvYy1maWxlbmFtZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gbG9jX2ZuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIjxzdHJpbmc+IEZpbGUgbmFtZSB0byB1c2UgaW4gbG9jYXRpb25zXCIgKTtcbiAgICAoIFwiLXJlc2VydmUtbmFtZXNwYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlcy5yZXNlcnZlLFxuICAgICAgXCI8c3RyaW5nPiBNYXJrIHRoZSBnaXZlbiBuYW1lc3BhY2UgYXMgcmVzZXJ2ZWRcIiApO1xuICAgIChcIi1uby1jaGVja1wiLCBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3MsIFwiIERpc2FibGUgY2hlY2tzICh1bnNhZmUpXCIpO1xuICAgIChcIi1jaGVja1wiLCBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzLCBcIiBFbmFibGUgY2hlY2tzXCIpO1xuICAgICggXCItbm8tY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBEaXNhYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBFbmFibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLW5vLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRGlzYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBFbmFibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEFwcGx5IHRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbiBvcmRlciAoY29tbWEtc2VwYXJhdGVkIGxpc3QpXCIgKTtcbiAgICAoIFwiLWRvbnQtYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2RvbnRfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gRXhjbHVkZSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnNcIiApO1xuICAgICggXCItbm8tbWVyZ2VcIixcbiAgICAgIEFyZy5TZXQgbm9fbWVyZ2UsXG4gICAgICBcIiBEbyBub3QgbWVyZ2UgY29udGV4dCBmcmVlIHRyYW5zZm9ybWF0aW9ucyAoYmV0dGVyIGZvciBkZWJ1Z2dpbmcgXFxcbiAgICAgICByZXdyaXRlcnMpLiBBcyBhIHJlc3VsdCwgdGhlIGNvbnRleHQtZnJlZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5vdCBhbGwgXFxcbiAgICAgICBhcHBsaWVkIGJlZm9yZSBhbGwgaW1wbCBhbmQgaW50Zi5cIiApO1xuICAgIChcIi1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIk5BTUU9RVhQUiBTZXQgdGhlIGNvb2tpZSBOQU1FIHRvIEVYUFJcIik7XG4gICAgKFwiLS1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIiBTYW1lIGFzIC1jb29raWVcIik7XG4gIF1cblxubGV0ICgpID1cbiAgTGlzdC5pdGVyIHNoYXJlZF9hcmdzIH5mOihmdW4gKGtleSwgc3BlYywgZG9jKSAtPiBhZGRfYXJnIGtleSBzcGVjIH5kb2MpXG5cbmxldCBhc19wcCAoKSA9XG4gIHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdDtcbiAgZW1iZWRfZXJyb3JzIDo9IHRydWVcblxubGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gIFtcbiAgICAoIFwiLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgUnVuIGFzIGEgLXBweCByZXdyaXRlciAobXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQpXCIgKTtcbiAgICAoIFwiLS1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBTYW1lIGFzIC1hcy1wcHhcIiApO1xuICAgIChcIi1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2hvcnRoYW5kIGZvcjogLWR1bXAtYXN0IC1lbWJlZC1lcnJvcnNcIik7XG4gICAgKFwiLS1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2FtZSBhcyAtYXMtcHBcIik7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXQgOj0gU29tZSBzKSxcbiAgICAgIFwiPGZpbGVuYW1lPiBPdXRwdXQgZmlsZSAodXNlICctJyBmb3Igc3Rkb3V0KVwiICk7XG4gICAgKFwiLVwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9pbnB1dCBcIi1cIiksIFwiIFJlYWQgaW5wdXQgZnJvbSBzdGRpblwiKTtcbiAgICAoIFwiLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBEdW1wIHRoZSBtYXJzaGFsZWQgYXN0IHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyBpdFwiXG4gICAgKTtcbiAgICAoIFwiLS1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgU2FtZSBhcyAtZHVtcC1hc3RcIiApO1xuICAgICggXCItZHBhcnNldHJlZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHBhcnNldHJlZSksXG4gICAgICBcIiBQcmludCB0aGUgcGFyc2V0cmVlIChzYW1lIGFzIG9jYW1sYyAtZHBhcnNldHJlZSlcIiApO1xuICAgICggXCItZW1iZWQtZXJyb3JzXCIsXG4gICAgICBBcmcuU2V0IGVtYmVkX2Vycm9ycyxcbiAgICAgIFwiIEVtYmVkIGVycm9ycyBpbiB0aGUgb3V0cHV0IEFTVCAoZGVmYXVsdDogdHJ1ZSB3aGVuIC1hcy1wcCwgZmFsc2UgXFxcbiAgICAgICBvdGhlcndpc2UpXCIgKTtcbiAgICAoIFwiLW51bGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIE51bGwpLFxuICAgICAgXCIgUHJvZHVjZSBubyBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXCIgKTtcbiAgICAoIFwiLWltcGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWwgZmlsZVwiICk7XG4gICAgKFwiLS1pbXBsXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksIFwiPGZpbGU+IFNhbWUgYXMgLWltcGxcIik7XG4gICAgKCBcIi1pbnRmXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1saSBmaWxlXCIgKTtcbiAgICAoXCItLWludGZcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW50ZlwiKTtcbiAgICAoIFwiLWRlYnVnLWF0dHJpYnV0ZS1kcm9wXCIsXG4gICAgICBBcmcuU2V0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wLFxuICAgICAgXCIgRGVidWcgYXR0cmlidXRlIGRyb3BwaW5nXCIgKTtcbiAgICAoIFwiLXByaW50LXRyYW5zZm9ybWF0aW9uc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyxcbiAgICAgIFwiIFByaW50IGxpbmtlZC1pbiBjb2RlIHRyYW5zZm9ybWF0aW9ucywgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGFwcGxpZWRcIiApO1xuICAgICggXCItcHJpbnQtcGFzc2VzXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfcGFzc2VzLFxuICAgICAgXCIgUHJpbnQgdGhlIGFjdHVhbCBwYXNzZXMgb3ZlciB0aGUgd2hvbGUgQVNUIGluIHRoZSBvcmRlciB0aGV5IGFyZSBcXFxuICAgICAgIGFwcGxpZWRcIiApO1xuICAgICggXCItaXRlLWNoZWNrXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiV2FybmluZzogdGhlIC1pdGUtY2hlY2sgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gZWZmZWN0LlxcbiUhXCI7XG4gICAgICAgICAgRXh0cmFfd2FybmluZ3MuY2FyZV9hYm91dF9pdGVfYnJhbmNoIDo9IHRydWUpLFxuICAgICAgXCIgKG5vIGVmZmVjdCAtLSBrZXB0IGZvciBjb21wYXRpYmlsaXR5KVwiICk7XG4gICAgKCBcIi1wcFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gcHJlcHJvY2Vzc29yIDo9IFNvbWUgcyksXG4gICAgICBcIjxjb21tYW5kPiAgUGlwZSBzb3VyY2VzIHRocm91Z2ggcHJlcHJvY2Vzc29yIDxjb21tYW5kPiAoaW5jb21wYXRpYmxlIFxcXG4gICAgICAgd2l0aCAtYXMtcHB4KVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzKSksXG4gICAgICBcIiAoV0lQKSBQcmV0dHkgcHJpbnQgdGhlIG91dHB1dCB1c2luZyBhIG1peCBvZiB0aGUgaW5wdXQgc291cmNlIGFuZCB0aGUgXFxcbiAgICAgICBnZW5lcmF0ZWQgY29kZVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpKSxcbiAgICAgIFwiIChXSVApIHNhbWUgYXMgLXJlY29uY2lsZSBidXQgdXNlcyBjb21tZW50cyB0byBlbmNsb3NlIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgRG9uJ3QgdXNlIGNvbG9ycyB3aGVuIHByaW50aW5nIGVycm9yc1wiKTtcbiAgICAoIFwiLWRpZmYtY21kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgIFwiIERpZmYgY29tbWFuZCB3aGVuIHVzaW5nIGNvZGUgZXhwZWN0YXRpb25zICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKTtcbiAgICAoIFwiLXByZXR0eVwiLFxuICAgICAgQXJnLlNldCBwcmV0dHksXG4gICAgICBcIiBJbnN0cnVjdCBjb2RlIGdlbmVyYXRvcnMgdG8gaW1wcm92ZSB0aGUgcHJldHRpbmVzcyBvZiB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLXN0eWxlclwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzdHlsZXIgOj0gU29tZSBzKSwgXCIgQ29kZSBzdHlsZXJcIik7XG4gICAgKCBcIi1vdXRwdXQtbWV0YWRhdGFcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCJGSUxFIFdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgbWV0YWRhdGFcIiApO1xuICAgICggXCItY29ycmVjdGVkLXN1ZmZpeFwiLFxuICAgICAgQXJnLlNldF9zdHJpbmcgY29ycmVjdGVkX3N1ZmZpeCxcbiAgICAgIFwiU1VGRklYIFN1ZmZpeCB0byBhcHBlbmQgdG8gY29ycmVjdGVkIGZpbGVzXCIgKTtcbiAgXVxuXG5sZXQgZ2V0X2FyZ3MgPyhzdGFuZGFsb25lX2FyZ3MgPSBzdGFuZGFsb25lX2FyZ3MpICgpID1cbiAgc3RhbmRhbG9uZV9hcmdzIEAgTGlzdC5yZXYgIWFyZ3NcblxubGV0IHN0YW5kYWxvbmVfbWFpbiAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIFs8ZmlsZXM+XVwiIGV4ZV9uYW1lIGluXG4gIGxldCBhcmdzID0gZ2V0X2FyZ3MgKCkgaW5cbiAgQXJnLnBhcnNlIChBcmcuYWxpZ24gYXJncykgc2V0X2lucHV0IHVzYWdlO1xuICBpbnRlcnByZXRfbWFzayAoKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIHRoZW4gKFxuICAgIHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfcGFzc2VzIHRoZW4gKFxuICAgIHByaW50X3Bhc3NlcyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzOiBubyBpbnB1dCBmaWxlIGdpdmVuXFxuJSFcIiBleGVfbmFtZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBTb21lIGZuIC0+XG4gICAgICBsZXQga2luZCA9XG4gICAgICAgIG1hdGNoICFraW5kIHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggS2luZC5vZl9maWxlbmFtZSBmbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgXCIlczogZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJyVzJywgdXNlIC1pbXBsIG9yIC1pbnRmLlxcblwiXG4gICAgICAgICAgICAgICAgICBleGVfbmFtZSBmbjtcbiAgICAgICAgICAgICAgICBTdGRsaWIuZXhpdCAyKVxuICAgICAgaW5cbiAgICAgIGxldCBpbnB1dF9uYW1lLCByZWxvY2F0ZSA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aCBOb25lIC0+IChmbiwgZmFsc2UpIHwgU29tZSBmbiAtPiAoZm4sIHRydWUpXG4gICAgICBpblxuICAgICAgcHJvY2Vzc19maWxlIGtpbmQgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZTohb3V0cHV0X21vZGVcbiAgICAgICAgfm91dHB1dDohb3V0cHV0IH5lbWJlZF9lcnJvcnM6IWVtYmVkX2Vycm9yc1xuXG5sZXQgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuID1cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBpbnB1dF9mbiBpblxuICBsZXQgYXN0ID1cbiAgICB0cnlcbiAgICAgIGxldCBhc3QgPSBleHRyYWN0X2Nvb2tpZXMgYXN0IGluXG4gICAgICBsZXQgdG9vbF9uYW1lID0gQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkgaW5cbiAgICAgIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gICAgICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gICAgICBwcm9jZXNzX2FzdCBhc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgfmVtYmVkX2Vycm9yczp0cnVlXG4gICAgd2l0aCBleG4gLT4gZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQ6KEludGZfb3JfaW1wbC5raW5kIGFzdClcbiAgaW5cbiAgd2l0aF9vdXRwdXQgKFNvbWUgb3V0cHV0X2ZuKSB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgQXN0X2lvLndyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuXG5sZXQgcGFyc2VfaW5wdXQgcGFzc2VkX2luX2FyZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBwYXNzZWRfaW5fYXJncyAoQXJnLmFsaWduIHZhbGlkX2FyZ3MpXG4gICAgICAoZnVuIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJhbm9ueW1vdXMgYXJndW1lbnRzIG5vdCBhY2NlcHRlZFwiKSlcbiAgICAgIGluY29ycmVjdF9pbnB1dF9tc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDBcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBpbnB1dCA9XG4gIGxldCB2YWxpZF9hcmdzID0gZ2V0X2FyZ3MgfnN0YW5kYWxvbmVfYXJncyAoKSBpblxuICBtYXRjaCBMaXN0LnJldiBAQCBBcnJheS50b19saXN0IEBAIGlucHV0IHdpdGhcbiAgfCBvdXRwdXRfZm4gOjogaW5wdXRfZm4gOjogZmxhZ3NfYW5kX3Byb2dfbmFtZVxuICAgIHdoZW4gTGlzdC5sZW5ndGggZmxhZ3NfYW5kX3Byb2dfbmFtZSA+IDAgLT5cbiAgICAgIGxldCBwcm9nX25hbWVfYW5kX2ZsYWdzID0gTGlzdC5yZXYgZmxhZ3NfYW5kX3Byb2dfbmFtZSB8PiBBcnJheS5vZl9saXN0IGluXG4gICAgICBwYXJzZV9pbnB1dCBwcm9nX25hbWVfYW5kX2ZsYWdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgaW50ZXJwcmV0X21hc2sgKCk7XG4gICAgICByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm47XG4gICAgICBTdGRsaWIuZXhpdCAwXG4gIHwgWyBoZWxwOyBfIF0gd2hlbiBTdHJpbmcuZXF1YWwgaGVscCBcIi1oZWxwXCIgfHwgU3RyaW5nLmVxdWFsIGhlbHAgXCItLWhlbHBcIiAtPlxuICAgICAgcGFyc2VfaW5wdXQgaW5wdXQgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgfCBfIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIlVzYWdlOiAlc1xcbiUhXCIgdXNhZ2U7XG4gICAgICBTdGRsaWIuZXhpdCAyXG5cbmxldCBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgbGV0IHVzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzIC1hcy1wcHggW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lXG4gIGluXG4gIGxldCBhcmd2ID0gQXJyYXkubWFrZSAobiAtIDEpIFwiXCIgaW5cbiAgYXJndi4oMCkgPC0gU3RkbGliLlN5cy5hcmd2LigwKTtcbiAgZm9yIGkgPSAxIHRvIG4gLSAyIGRvXG4gICAgYXJndi4oaSkgPC0gU3RkbGliLlN5cy5hcmd2LihpICsgMSlcbiAgZG9uZTtcbiAgbGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gICAgTGlzdC5tYXAgc3RhbmRhbG9uZV9hcmdzIH5mOihmdW4gKGFyZywgc3BlYywgX2RvYykgLT5cbiAgICAgICAgKGFyZywgc3BlYywgXCIgVW51c2VkIHdpdGggLWFzLXBweFwiKSlcbiAgaW5cbiAgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGFyZ3ZcblxubGV0IHN0YW5kYWxvbmUgKCkgPVxuICBBc3RsaWIuaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCk7XG4gIHRyeVxuICAgIGlmXG4gICAgICBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2ID49IDJcbiAgICAgICYmXG4gICAgICBtYXRjaCBTdGRsaWIuU3lzLmFyZ3YuKDEpIHdpdGhcbiAgICAgIHwgXCItYXMtcHB4XCIgfCBcIi0tYXMtcHB4XCIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKClcbiAgICBlbHNlIHN0YW5kYWxvbmVfbWFpbiAoKTtcbiAgICBTdGRsaWIuZXhpdCAwXG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZSBpblxuICBsZXQgaW5wdXQgPSBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgdHJ5IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzOltdIH51c2FnZSBpbnB1dFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBwcmV0dHkgKCkgPSAhcHJldHR5XG5cbmxldCBlbmFibGVfY2hlY2tzICgpID1cbiAgKCogV2UgZG8gbm90IGVuYWJsZSB0aGUgbG9jYXRpb25zIGNoZWNrIGhlcmUsIHdlIGN1cnJlbnRseSByZXF1aXJlIHRoYXQgb25lXG4gICAgIHRvIGJlIHNwZWNpZmljYWxseSBlbmFibGVkLiAqKVxuICBwZXJmb3JtX2NoZWNrcyA6PSB0cnVlO1xuICBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIDo9IHRydWVcblxubGV0IGVuYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IHRydWVcbmxldCBkaXNhYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gZmFsc2VcbmxldCBtYXBfc3RydWN0dXJlIHN0ID0gbWFwX3N0cnVjdHVyZSBzdFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG5sZXQgdW5kZXJzY29yZV9iaW5kaW5nIGV4cCA9XG4gIGxldCBsb2MgPSBleHAucGV4cF9sb2MgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpIH5leHByOmV4cFxuXG5sZXQgdmFyc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvbmdpZGVudC50IExvY2F0ZWQudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdHQgYWNjID1cbiAgICAgIG1hdGNoIHBhdHQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF92YXIgdiAtPiBMb2NhdGVkLm1hcCAoZnVuIHZhciAtPiBMb25naWRlbnQuTGlkZW50IHZhcikgdiA6OiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdHQgYWNjXG4gIGVuZFxuXG4oKiBGb3IgZXZlcnkgW2xldCB4ID0gLi4uXSBzdHJ1Y3R1cmUgaXRlbSwgYWRkIGEgW2xldCBfID0geF0gKilcbmxldCBhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZSBzdCA9XG4gICAgICBsZXQgcmVjIGxvb3Agc3QgYWNjID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgICB8ICh7IHBzdHJfZGVzYyA9IFBzdHJfdmFsdWUgKF8sIHZicyk7IHBzdHJfbG9jID0gbG9jIH0gYXMgaXRlbSkgOjogcmVzdFxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgdmFycyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IHZicyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB2YiAtPlxuICAgICAgICAgICAgICAgICAgdmFyc19vZiNwYXR0ZXJuIHZiLnB2Yl9wYXQgYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpZ24gPVxuICAgICAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIHZhcnMgfmY6KGZ1biB2IC0+XG4gICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX2JpbmRpbmcgKHBleHBfaWRlbnQgfmxvYzp2LmxvYyB2KSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbG9vcCByZXN0IChpZ24gQCAoaXRlbSA6OiBhY2MpKVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiBsb29wIHJlc3QgKGl0ZW0gOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKHN1cGVyI3N0cnVjdHVyZSBzdCkgW11cbiAgZW5kXG5cbmxldCBiaW5kc19tb2R1bGVfbmFtZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtib29sXSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBtYiBhY2MgPVxuICAgICAgbWF0Y2ggbWIucG1iX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIG1iIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjID1cbiAgICAgIG1hdGNoIG1kLnBtZF9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24gbXMgXyA9XG4gICAgICBtYXRjaCBtcy5wbXNfbmFtZS50eHQgd2l0aCAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuXG4gICAgbWV0aG9kISBmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgfCBOYW1lZCAobmFtZSwgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdW5wYWNrIG5hbWUgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGggU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZSB8IE5vbmUgLT4gYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGV4cHIgYWNjID1cbiAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIF8sIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjY1xuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxuKCogW2RvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGVdIC0tIElmIHRydWUsIGdlbmVyYXRlZCBjb2RlXG4gICBjb250YWlucyBjb21waWxlciBhdHRyaWJ1dGUgdG8gZGlzYWJsZSB1bnVzZWQgd2FybmluZ3MsIGluc3RlYWQgb2ZcbiAgIGluc2VydGluZyBbbGV0IF8gPSAuLi4gXS4gKilcbmxldCBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3czMl9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIGxldCBjb252X3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiY29kZVwiOyBcImF0dHJpYnV0ZVwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJjb2RlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSBmYWxzZVxuICAgICAgICB8IFwiYXR0cmlidXRlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgSG93IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmcta2VlcC13MzJcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LXczMlwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCJcblxubGV0IGtlZXBfdzMyX2ltcGwgKCkgPSAha2VlcF93MzJfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93MzJfaW50ZiAoKSA9ICFrZWVwX3czMl9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93NjBfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93NjBfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93NjBfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13NjBcIiBrZWVwX3c2MF9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyA2MCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCJcblxubGV0IGtlZXBfdzYwX2ltcGwgKCkgPSAha2VlcF93NjBfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW50ZiAoKSA9ICFrZWVwX3c2MF9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA9IHJlZiBPcHRpb25zLmRlZmF1bHRfYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItdW51c2VkLWNvZGUtd2FybmluZ3NcIlxuICAgIChCb29sICgoIDo9ICkgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MpKVxuICAgIH5kb2M6XCJfIEFsbG93IHBweCBkZXJpdmVycyB0byBlbmFibGUgdW51c2VkIGNvZGUgd2FybmluZ3NcIlxuXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKCkgPSAhYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubW9kdWxlIEFyZ3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgQXN0X3BhdHRlcm4gOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQXN0X3BhdHRlcm5cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50KVxuXG4gIHR5cGUgJ2EgcGFyYW0gPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBwYXR0ZXJuIDogKGV4cHJlc3Npb24sICdhKSBBc3RfcGF0dGVybi5QYWNrZWQudDtcbiAgICBkZWZhdWx0IDogJ2E7XG4gIH1cblxuICBsZXQgYXJnIG5hbWUgcGF0dGVybiA9XG4gICAge1xuICAgICAgbmFtZTtcbiAgICAgIGRlZmF1bHQgPSBOb25lO1xuICAgICAgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiAoZnVuIHggLT4gU29tZSB4KTtcbiAgICB9XG5cbiAgbGV0IGZsYWcgbmFtZSA9XG4gICAgbGV0IHBhdHRlcm4gPSBwZXhwX2lkZW50IChsaWRlbnQgKHN0cmluZyBuYW1lKSkgaW5cbiAgICB7IG5hbWU7IGRlZmF1bHQgPSBmYWxzZTsgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiB0cnVlIH1cblxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IE5pbCA6ICgnbSwgJ20pIHRcbiAgICB8IENvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIHQgKiAnYSBwYXJhbSAtPiAoJ20xLCAnbTIpIHRcblxuICBsZXQgZW1wdHkgPSBOaWxcbiAgbGV0ICggKz4gKSBhIGIgPSBDb25zIChhLCBiKVxuXG4gIGxldCByZWMgbmFtZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gc3RyaW5nIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh0LCBwKSAtPiBwLm5hbWUgOjogbmFtZXMgdFxuXG4gIG1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgKF8sIF8pIGluc3RhbmNlID1cbiAgICAgIHwgSV9uaWwgOiAoJ20sICdtKSBpbnN0YW5jZVxuICAgICAgfCBJX2NvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIGluc3RhbmNlICogJ2EgLT4gKCdtMSwgJ20yKSBpbnN0YW5jZVxuXG4gICAgbGV0IHJlYyBjcmVhdGUgOlxuICAgICAgICB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QgLT4gKGEsIGIpIGluc3RhbmNlID1cbiAgICAgZnVuIHNwZWMgYXJncyAtPlxuICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICB8IE5pbCAtPiBJX25pbFxuICAgICAgfCBDb25zICh0LCBwKSAtPlxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jX29wdCBwLm5hbWUgYXJncyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcC5kZWZhdWx0XG4gICAgICAgICAgICB8IFNvbWUgZXhwciAtPiBBc3RfcGF0dGVybi5QYWNrZWQucGFyc2UgcC5wYXR0ZXJuIGV4cHIucGV4cF9sb2MgZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgSV9jb25zIChjcmVhdGUgdCBhcmdzLCB2YWx1ZSlcblxuICAgIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYi4gKGEsIGIpIGluc3RhbmNlIC0+IGEgLT4gYiA9XG4gICAgIGZ1biB0IGYgLT4gbWF0Y2ggdCB3aXRoIElfbmlsIC0+IGYgfCBJX2NvbnMgKHQsIHgpIC0+IGFwcGx5IHQgZiB4XG4gIGVuZFxuXG4gIGxldCBhcHBseSB0IGFyZ3MgZiA9IEluc3RhbmNlLmFwcGx5IChJbnN0YW5jZS5jcmVhdGUgdCBhcmdzKSBmXG5lbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBHZW5lcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGlnbm9yZSAoXyA6IHQpID0gKClcblxudHlwZSBwYXJzZWRfYXJncyA9XG4gIHwgQXJncyBvZiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdFxuICB8IFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxudHlwZSAnaXRlbSBkZXJpdmVkX2NvZGUgPSB7IGl0ZW1zIDogJ2l0ZW0gbGlzdDsgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sIH1cblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlIGRlcml2ZXIgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFQgOiB7XG4gICAgICAgIHNwZWMgOiAoJ2MsICdhKSBBcmdzLnQ7XG4gICAgICAgIGdlbiA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjO1xuICAgICAgICBhcmdfbmFtZXMgOiBTdHJpbmcuU2V0LnQ7XG4gICAgICAgIGRlcHMgOiBkZXJpdmVyIGxpc3Q7XG4gICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbDtcbiAgICAgIH1cbiAgICAgICAgLT4gKCdhLCAnYikgdFxuXG4gIGxldCBkZXBzIChUIHQpID0gdC5kZXBzXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgP2F0dHJpYnV0ZXM6KF8gPSBbXSkgPyhkZXBzID0gW10pID8odW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSlcbiAgICAgICAgc3BlYyBnZW4gPVxuICAgICAgbGV0IGFyZ19uYW1lcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoQXJncy5uYW1lcyBzcGVjKSBpblxuICAgICAgVCB7IHNwZWM7IGdlbjsgYXJnX25hbWVzOyBkZXBzOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9XG5cbiAgICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG4gIGVuZFxuXG4gIGxldCBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjIGdlbiA9XG4gICAgVjIubWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlY1xuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIud2l0aF9sb2NfYW5kX3BhdGggZ2VuKVxuXG4gIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG5cbiAgbGV0IG1lcmdlX2FjY2VwdGVkX2FyZ3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBUIHQgOjogcmVzdCAtPiBsb29wIChTdHJpbmcuU2V0LnVuaW9uIGFjYyB0LmFyZ19uYW1lcykgcmVzdFxuICAgIGluXG4gICAgbG9vcCBTdHJpbmcuU2V0LmVtcHR5IGxcblxuICBsZXQgY2hlY2tfYXJndW1lbnRzIG5hbWUgZ2VuZXJhdG9ycyAoYXJncyA6IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0KSA9XG4gICAgbGV0IGVtcHR5X2xhYmVsX2Vycm9yID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBsYWJlbCB0aGVuXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yIGFyZ3VtZW50cyBtdXN0IGJlIGxhYmVsbGVkXCIpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciA9XG4gICAgICBPcHRpb24ubWFwXG4gICAgICAgIChMaXN0LmZpbmRfYV9kdXAgYXJncyB+Y29tcGFyZTooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbiAgICAgICAgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBhcmd1bWVudCBsYWJlbGxlZCAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2VcIlxuICAgICAgICAgICAgbGFiZWwpXG4gICAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjY2VwdGVkX2FyZ3MgPSBtZXJnZV9hY2NlcHRlZF9hcmdzIGdlbmVyYXRvcnMgaW5cbiAgICBsZXQgdW5hY2NlcHRlZF9hcmd1bWVudCA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5TZXQubWVtIGxhYmVsIGFjY2VwdGVkX2FyZ3MpIHRoZW5cbiAgICAgICAgICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU3BlbGxjaGVjay5zcGVsbGNoZWNrIChTdHJpbmcuU2V0LmVsZW1lbnRzIGFjY2VwdGVkX2FyZ3MpIGxhYmVsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciAnJXMnIGRvZXNuJ3QgYWNjZXB0IGFyZ3VtZW50IFxcXG4gICAgICAgICAgICAgICAgICAnJXMnJXNcIlxuICAgICAgICAgICAgICAgICBuYW1lIGxhYmVsIHNwZWxsY2hlY2tfbXNnKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBlcnJvcnMgPVxuICAgICAgZW1wdHlfbGFiZWxfZXJyb3IgQCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgQCB1bmFjY2VwdGVkX2FyZ3VtZW50XG4gICAgaW5cbiAgICBpZiBMaXN0Lmxlbmd0aCBlcnJvcnMgPSAwIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvcnNcblxuICBsZXQgYXBwbHkgKFQgdCkgfm5hbWU6XyB+Y3R4dCB4IGFyZ3MgPSBBcmdzLmFwcGx5IHQuc3BlYyBhcmdzICh0LmdlbiB+Y3R4dCB4KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgKG5hbWUsIGdlbmVyYXRvcnMsIGFyZ3MpID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBjaGVja19hcmd1bWVudHMgbmFtZS50eHQgZ2VuZXJhdG9ycyBhcmdzID4+fCBmdW4gKCkgLT5cbiAgICBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1zID0gYXBwbHkgKFQgdCkgfm5hbWU6bmFtZS50eHQgfmN0eHQgZW50cnkgYXJncztcbiAgICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA9IHQudW51c2VkX2NvZGVfd2FybmluZ3M7XG4gICAgICAgIH0pXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSBnZW5lcmF0b3JzIGV4dF90b19pdGVtID1cbiAgICBsZXQgbCA9IExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSkgaW5cbiAgICBsZXQgbDEsIGxlcnIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvbiBPayBlIC0+IExlZnQgZSB8IEVycm9yIGUgLT4gUmlnaHQgZSkgbFxuICAgIGluXG4gICAgbGV0IGxlcnIgPVxuICAgICAgTGlzdC5jb25jYXQgbGVyclxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBlcnIgLT4gZXh0X3RvX2l0ZW0gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICBpblxuICAgIExpc3QuY29uY2F0IGwxIEAgWyB7IGl0ZW1zID0gbGVycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9IF1cbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICBtb2R1bGUgQWN0dWFsX2Rlcml2ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgc3RyX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2V4dCA6IChzaWduYXR1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGV4dGVuc2lvbiA6XG4gICAgICAgIChsb2M6TG9jYXRpb24udCAtPiBwYXRoOnN0cmluZyAtPiBjb3JlX3R5cGUgLT4gZXhwcmVzc2lvbikgb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEFsaWFzID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RyX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSBraW5kID0gU3RyIHwgU2lnXG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAga2luZCA6IGtpbmQ7XG4gICAgICBnZXQgOiBBY3R1YWxfZGVyaXZlci50IC0+ICgnYSwgJ2IpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGdldF9zZXQgOiBBbGlhcy50IC0+IHN0cmluZyBsaXN0O1xuICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcIm1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG4gIGVuZFxuXG4gIHR5cGUgdCA9IEFjdHVhbF9kZXJpdmVyIG9mIEFjdHVhbF9kZXJpdmVyLnQgfCBBbGlhcyBvZiBBbGlhcy50XG4gIHR5cGUgUHB4X2Rlcml2ZXJzLmRlcml2ZXIgKz0gVCBvZiB0XG5cbiAgbGV0IGRlcml2ZXJzICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKFBweF9kZXJpdmVycy5kZXJpdmVycyAoKSkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIFQgdCAtPiBTb21lIChuYW1lLCB0KVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbiAgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBsZXQgcmVjIGxvb3AgbmFtZSBjb2xsZWN0ZWQgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHMgY29sbGVjdGVkIH5mOihmdW4gKGQgOiBBY3R1YWxfZGVyaXZlci50KSAtPlxuICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGQubmFtZSBuYW1lKVxuICAgICAgdGhlbiBjb2xsZWN0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIChUIChBY3R1YWxfZGVyaXZlciBkcnYpKSAtPiBkcnYgOjogY29sbGVjdGVkXG4gICAgICAgIHwgU29tZSAoVCAoQWxpYXMgYWxpYXMpKSAtPlxuICAgICAgICAgICAgbGV0IHNldCA9IGZpZWxkLmdldF9zZXQgYWxpYXMgaW5cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBzZXQgfmluaXQ6Y29sbGVjdGVkIH5mOmxvb3BcbiAgICAgICAgfCBfIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBuYW1lIFtdKVxuXG4gIGxldCByZXNvbHZlX2ludGVybmFsIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBMaXN0Lm1hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgbmFtZSkgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgbWF0Y2ggZmllbGQuZ2V0IGRydiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgICAgICB8IFNvbWUgZyAtPiAoZHJ2Lm5hbWUsIGcpKVxuXG4gIGxldCBzdXBwb3J0ZWRfZm9yIGZpZWxkID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZGVyaXZlcnMgKCkpIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIF8pIC0+XG4gICAgICAgIG1hdGNoIHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuU2V0LmFkZCBuYW1lIGFjY1xuICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIF8gLT4gYWNjKVxuICAgIHw+IFN0cmluZy5TZXQuZWxlbWVudHNcblxuICBsZXQgbm90X3N1cHBvcnRlZCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgPyhzcGVsbGNoZWNrID0gdHJ1ZSkgbmFtZSA9XG4gICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgIGlmIHNwZWxsY2hlY2sgdGhlblxuICAgICAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKHN1cHBvcnRlZF9mb3IgZmllbGQpIG5hbWUudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICBlbHNlIFwiXCJcbiAgICBpblxuICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6ICclcycgaXMgbm90IGEgc3VwcG9ydGVkICVzIGRlcml2aW5nIGdlbmVyYXRvciVzXCJcbiAgICAgIG5hbWUudHh0IGZpZWxkLm5hbWUgc3BlbGxjaGVja19tc2dcblxuICBsZXQgcmVzb2x2ZSBmaWVsZCBuYW1lID1cbiAgICB0cnkgT2sgKHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZS50eHQpXG4gICAgd2l0aCBOb3Rfc3VwcG9ydGVkIG5hbWUnIC0+XG4gICAgICBFcnJvciAobm90X3N1cHBvcnRlZCBmaWVsZCB+c3BlbGxjaGVjazooU3RyaW5nLmVxdWFsIG5hbWUudHh0IG5hbWUnKSBuYW1lKVxuXG4gIGxldCByZXNvbHZlX2FsbCBmaWVsZCBkZXJpdmVycyA9XG4gICAgbGV0IGRlcml2ZXJzX2FuZF9hcmdzLCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAgIChmdW4gKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVpdGhlci5SaWdodCAobm90X3N1cHBvcnRlZCBmaWVsZCBuYW1lKVxuICAgICAgICAgIHwgU29tZSAoVCBfKSAtPiAoXG4gICAgICAgICAgICAgICgqIEl0J3Mgb25lIG9mIG91cnMsIHBhcnNlIHRoZSBhcmd1bWVudHMgbm93LiBXZSBjYW4ndCBkbyBpdCBiZWZvcmUgc2luY2VcbiAgICAgICAgICAgICAgICAgcHB4X2Rlcml2aW5nIHVzZXMgYSBkaWZmZXJlbnQgc3ludGF4IGZvciBhcmd1bWVudHMuICopXG4gICAgICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IEFyZ3MgbCAtPiBFaXRoZXIuTGVmdCAoU29tZSAobmFtZSwgbCkpXG4gICAgICAgICAgICAgIHwgVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPlxuICAgICAgICAgICAgICAgICAgRWl0aGVyLlJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2MgXCJQcHhsaWIuRGVyaXZpbmc6ICVzXCIgbXNnKSlcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAoKiBJdCdzIG5vdCBvbmUgb2Ygb3VycywgaWdub3JlIGl0LiAqKVxuICAgICAgICAgICAgICBFaXRoZXIuTGVmdCBOb25lKVxuICAgICAgICBkZXJpdmVyc1xuICAgICAgfD4gZnVuIChsMSwgbDIpIC0+IChMaXN0LmZpbHRlcl9vcHQgbDEsIGwyKVxuICAgIGluXG4gICAgKCogU2V0IG9mIGFjdHVhbCBkZXJpdmVyIG5hbWVzICopXG4gICAgbGV0IHNlZW4gPSBIYXNodGJsLmNyZWF0ZSAxNiBpblxuICAgIGxldCByZXN1bHQsIGRlcF9lcnJvcnMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmluaXQ6KFtdLCBbXSkgZGVyaXZlcnNfYW5kX2FyZ3NcbiAgICAgICAgfmY6KGZ1biAocmVzdWx0LCBlcnJvcnMpIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIHJlc29sdmUgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+IChyZXN1bHQsIGVycm9ycyBAIFsgZSBdKVxuICAgICAgICAgIHwgT2sgbmFtZWRfZ2VuZXJhdG9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCBuYW1lZF9nZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgICB+ZjooZnVuIChhY3R1YWxfZGVyaXZlcl9uYW1lLCBnZW4pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBkdXBfZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zLmZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBIYXNodGJsLm1lbSBzZWVuIGFjdHVhbF9kZXJpdmVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBhcHBlYXJzIHR3aWNlXCIgYWN0dWFsX2Rlcml2ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIChHZW5lcmF0b3IuZGVwcyBnZW4pIH5mOihmdW4gZGVwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgZGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwX25hbWUgPSBkcnYubmFtZSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChIYXNodGJsLm1lbSBzZWVuIGRlcF9uYW1lKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGlzIG5lZWRlZCBmb3IgJXMsIHlvdSBuZWVkIHRvIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBpdCBiZWZvcmUgaW4gdGhlIGxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcF9uYW1lIG5hbWUudHh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgc2VlbiB+a2V5OmFjdHVhbF9kZXJpdmVyX25hbWUgfmRhdGE6KCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cF9lcnJvciBAIGxfZXJyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHJlc3VsdCBAIFsgKG5hbWUsIExpc3QubWFwIG5hbWVkX2dlbmVyYXRvcnMgfmY6c25kLCBhcmdzKSBdLFxuICAgICAgICAgICAgICAgIGVycm9ycyBAIGxfZXJyICkpXG4gICAgaW5cbiAgICAocmVzdWx0LCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgQCBkZXBfZXJyb3JzKVxuXG4gIGxldCBhZGQgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvbiA/c3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb24gP3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/ZXh0ZW5zaW9uIG5hbWUgPVxuICAgIGxldCBhY3R1YWxfZGVyaXZlciA6IEFjdHVhbF9kZXJpdmVyLnQgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBleHRlbnNpb247XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWN0dWFsX2Rlcml2ZXIgYWN0dWFsX2Rlcml2ZXIpKTtcbiAgICAobWF0Y2ggZXh0ZW5zaW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgZXh0ZW5zaW9uID1cbiAgICAgICAgICBFeHRlbnNpb24uZGVjbGFyZSBuYW1lIEV4cHJlc3Npb24gQXN0X3BhdHRlcm4uKHB0eXAgX18pIGZcbiAgICAgICAgaW5cbiAgICAgICAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgKFwiUHB4bGliLkRlcml2aW5nLlwiIF4gbmFtZSlcbiAgICAgICAgICB+cnVsZXM6WyBDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gZXh0ZW5zaW9uIF0pO1xuICAgIG5hbWVcblxuICBsZXQgYWRkX2FsaWFzIG5hbWUgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvblxuICAgICAgP3N0cl9tb2R1bGVfdHlwZV9kZWNsID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb25cbiAgICAgID9zaWdfbW9kdWxlX3R5cGVfZGVjbCBzZXQgPVxuICAgIGxldCBhbGlhcyA6IEFsaWFzLnQgPVxuICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIE5vbmUgLT4gc2V0IHwgU29tZSBzZXQgLT4gc2V0IGluXG4gICAgICB7XG4gICAgICAgIHN0cl90eXBlX2RlY2wgPSBnZXQgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0ID0gZ2V0IHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbiA9IGdldCBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbCA9IGdldCBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQgPSBnZXQgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uID0gZ2V0IHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFsaWFzIGFsaWFzKSk7XG4gICAgbmFtZVxuZW5kXG5cbmxldCBhZGQgPSBEZXJpdmVyLmFkZFxubGV0IGFkZF9hbGlhcyA9IERlcml2ZXIuYWRkX2FsaWFzXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgW0BAZGVyaXZpbmcgXSBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGludmFsaWRfd2l0aCB+bG9jID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJpbnZhbGlkIFtAQGRlcml2aW5nIF0gYXR0cmlidXRlIHN5bnRheFwiXG5cbmxldCBnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQgPVxuICBtYXRjaCBMb25naWRlbnQuZmxhdHRlbl9leG4gaWQgd2l0aFxuICB8IGwgLT4geyBsb2M7IHR4dCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBsIH1cbiAgfCBleGNlcHRpb24gXyAtPiBpbnZhbGlkX3dpdGggfmxvY1xuXG5leGNlcHRpb24gVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgcGFyc2VfYXJndW1lbnRzIGwgPVxuICB0cnlcbiAgICBBcmdzXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IFsgKE5vbGFiZWwsIGUpIF0gLT4gKFxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIC0+XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChpZCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXggKGlkLmxvYywgXCJzaW1wbGUgaWRlbnRpZmllciBleHBlY3RlZFwiKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAobmFtZSwgZXhwcikpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAoIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgICAgICBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBvciByZWNvcmQgZXhwZWN0ZWRcIiApKSlcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIExpc3QubWFwIGwgfmY6KGZ1biAobGFiZWwsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgICAgICAgfCBMYWJlbGxlZCBzIC0+IChzLCBleHByKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgICAgIChleHByLnBleHBfbG9jLCBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBleHBlY3RlZFwiKSkpKVxuICB3aXRoIFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT4gVW5rbm93bl9zeW50YXggKGxvYywgbXNnKVxuXG5sZXQgbWtfZGVyaXZpbmdfYXR0ciBjb250ZXh0IH5wcmVmaXggfnN1ZmZpeCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgKHByZWZpeCBeIFwiZGVyaXZpbmdcIiBeIHN1ZmZpeClcbiAgICBjb250ZXh0XG4gICAgQXN0X3BhdHRlcm4uKFxuICAgICAgbGV0IGdlbmVyYXRvcl9uYW1lICgpID1cbiAgICAgICAgbWFwJyAocGV4cF9pZGVudCBfXykgfmY6KGZ1biBsb2MgZiBpZCAtPlxuICAgICAgICAgICAgZiAoZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9yICgpID1cbiAgICAgICAgbWFwIChnZW5lcmF0b3JfbmFtZSAoKSkgfmY6KGZ1biBmIHggLT4gZiAoeCwgQXJncyBbXSkpXG4gICAgICAgIHx8fCBwYWNrMlxuICAgICAgICAgICAgICAocGV4cF9hcHBseSAoZ2VuZXJhdG9yX25hbWUgKCkpXG4gICAgICAgICAgICAgICAgIChtYXAxIChtYW55IF9fKSB+ZjpwYXJzZV9hcmd1bWVudHMpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3JzID1cbiAgICAgICAgcGV4cF90dXBsZSAobWFueSAoZ2VuZXJhdG9yICgpKSlcbiAgICAgICAgfHx8IG1hcCAoZ2VuZXJhdG9yICgpKSB+ZjooZnVuIGYgeCAtPiBmIFsgeCBdKVxuICAgICAgaW5cbiAgICAgIHBzdHIgKHBzdHJfZXZhbCBnZW5lcmF0b3JzIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBVbnVzZWQgd2FybmluZyBzdHVmZiArIGxvY2F0aW9ucyBjaGVjayBzaWxlbmNpbmcgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgc3RyaW5nID1cbiAgICBMaXN0LnNvcnQgd2FybmluZ3MgfmNtcDpJbnQuY29tcGFyZVxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gd2FybmluZyAtPiBcIi1cIiBeIEludC50b19zdHJpbmcgd2FybmluZylcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIlxuICBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLndhcm5pbmdcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2Mgc3RyaW5nKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpbmxpbmVfZG9jX2F0dHIgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLmRvY1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBcIkBpbmxpbmVcIikgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG4oKiB3cmFwIGEgc3RydWN0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtb2Rfc3RydWN0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc3RyX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc3RydWN0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc3RyXSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHN0ID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIChbXSwgc3QpXG4gICAgZWxzZSBpZiBub3QgIWRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgdGhlblxuICAgICAgKFtdLCBJZ25vcmVfdW51c2VkX3dhcm5pbmcuYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyNzdHJ1Y3R1cmUgc3QpXG4gICAgZWxzZSAoWyAzMiBdLCBzdClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIHx8IG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzdHJ1Y3R1cmUgc3QgZmFsc2UpXG4gICAgdGhlbiAod2FybmluZ3MsIHN0KVxuICAgIGVsc2UgKDYwIDo6IHdhcm5pbmdzLCBzdClcbiAgaW5cbiAgbGV0IHdyYXAsIHN0ID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHN0KVxuICAgIGVsc2UgKHRydWUsIHBzdHJfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzdClcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgZWxzZSBzdFxuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3N0cl0gYWJvdmUgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogd3JhcCBhIHNpZ25hdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbXR5X3NpZ25hdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHNpZ19pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHNpZ25hdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3NpZ10gKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzZyA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWYga2VlcF93MzJfaW50ZiAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIFtdIGVsc2UgWyAzMiBdXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ludGYgKClcbiAgICAgIHx8IChub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc2lnbmF0dXJlIHNnIGZhbHNlKSlcbiAgICAgIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgdGhlbiB3YXJuaW5nc1xuICAgIGVsc2UgNjAgOjogd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdyYXAsIHNnID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHNnKVxuICAgIGVsc2UgKHRydWUsIHBzaWdfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzZylcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc2lnIH5sb2MgfmhpZGUgc2cgZWxzZSBzZ1xuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3NpZ10gYWJvdmUgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBNYWluIGV4cGFuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgdHlwZXNfdXNlZF9ieV9kZXJpdmluZyAodGRzIDogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSA6IHN0cnVjdHVyZV9pdGVtIGxpc3QgPVxuICBpZiBrZWVwX3czMl9pbXBsICgpIHRoZW4gW11cbiAgZWxzZVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgIGxldCB0eXAgPSBDb21tb24uY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgICBwc3RyX3ZhbHVlIH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpXG4gICAgICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgICAgICAgIChwcGF0X2NvbnN0cmFpbnQgfmxvYyAocHBhdF9hbnkgfmxvYykgdHlwKVxuICAgICAgICAgICAgICAgICAgIChldW5pdCB+bG9jKSk7XG4gICAgICAgICAgXSlcblxubGV0IG1lcmdlX2dlbmVyYXRvcnMgZmllbGQgbCA9XG4gIExpc3QuZmlsdGVyX21hcCBsIH5mOihmdW4geCAtPiB4KSB8PiBMaXN0LmNvbmNhdCB8PiBEZXJpdmVyLnJlc29sdmVfYWxsIGZpZWxkXG5cbigqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIFsnYSBkZXJpdmVkXSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXS4gVGhpc1xuICAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGFkZCBbaW5jbHVkZSBzdHJ1Y3QgLi4uIGVuZF0gdG8gZGlzYWJsZSB3YXJuaW5ncy4gKilcbmxldCBtZXJnZV9kZXJpdmVkIGxpc3RzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGxpc3RzIH5pbml0OltdIH5mOihmdW4gZGVyaXZlZCBhY2MgLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IG90aGVyIDo6IG90aGVyc1xuICAgICAgICB3aGVuIEJvb2wuZXF1YWwgZGVyaXZlZC51bnVzZWRfY29kZV93YXJuaW5ncyBvdGhlci51bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgICAtPlxuICAgICAgICAgIHsgb3RoZXIgd2l0aCBpdGVtcyA9IGRlcml2ZWQuaXRlbXMgQCBvdGhlci5pdGVtcyB9IDo6IG90aGVyc1xuICAgICAgfCBfIC0+IGRlcml2ZWQgOjogYWNjKVxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgKCogVE9ETzogaW5zdGVhZCBvZiBkaXNhYmxpbmcgdGhlIHVudXNlZCB3YXJuaW5nIGZvciB0eXBlcyB0aGVtc2VsdmVzLCB3ZVxuICAgICBzaG91bGQgYWRkIGEgdGFnIFtAQHVudXNlZF0uICopXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSB0eXBlc191c2VkX2J5X2Rlcml2aW5nIHRkcyBAIGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgcnVsZXMgfnR5cCB+ZXhwYW5kX3NpZyB+ZXhwYW5kX3N0ciB+cnVsZV9zdHIgfnJ1bGVfc2lnIH5ydWxlX3N0cl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0ID1cbiAgbGV0IHByZWZpeCA9IFwicHB4bGliLlwiIGluXG4gIGxldCBkZXJpdmluZ19hdHRyID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiXCIgfnByZWZpeCB0eXAgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHJfZXhwZWN0ID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiX2lubGluZVwiIH5wcmVmaXggdHlwIGluXG4gIFtcbiAgICBydWxlX3NpZyBkZXJpdmluZ19hdHRyIGV4cGFuZF9zaWc7XG4gICAgcnVsZV9zdHIgZGVyaXZpbmdfYXR0ciBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc3RyX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc2lnX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc2lnO1xuICBdXG5cbmxldCBydWxlc190eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOlR5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2RlY2xzXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2RlY2xzXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3RcblxubGV0IHJ1bGVzX3R5cGVfZXh0ID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4dGVuc2lvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZXh0XG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dF9leHBlY3RcblxubGV0IHJ1bGVzX2V4Y2VwdGlvbiA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leGNlcHRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9leGNlcHRpb25cbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25cbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0XG5cbmxldCBydWxlc19tb2R1bGVfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcblxubGV0ICgpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBbIHJ1bGVzX3R5cGVfZGVjbDsgcnVsZXNfdHlwZV9leHQ7IHJ1bGVzX2V4Y2VwdGlvbjsgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCBdXG4gICAgfD4gTGlzdC5jb25jYXRcbiAgaW5cbiAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIFwiZGVyaXZpbmdcIiB+YWxpYXNlczpbIFwidHlwZV9jb252XCIgXSB+cnVsZXNcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgYWZmaXggPVxuICB8IFByZWZpeCBvZiBzdHJpbmdcbiAgfCBTdWZmaXggb2Ygc3RyaW5nXG4gIHwgUHJlZml4U3VmZml4IG9mIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgbWFuZ2xlID8oZml4cG9pbnQgPSBcInRcIikgYWZmaXggbmFtZSA9XG4gIG1hdGNoIChTdHJpbmcuKG5hbWUgPSBmaXhwb2ludCksIGFmZml4KSB3aXRoXG4gIHwgdHJ1ZSwgKFByZWZpeCB4IHwgU3VmZml4IHgpIC0+IHhcbiAgfCB0cnVlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBuYW1lIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeCB4IC0+IHggXiBcIl9cIiBeIG5hbWVcbiAgfCBmYWxzZSwgU3VmZml4IHggLT4gbmFtZSBeIFwiX1wiIF4geFxuXG5sZXQgbWFuZ2xlX3R5cGVfZGVjbCA/Zml4cG9pbnQgYWZmaXggeyBwdHlwZV9uYW1lID0geyB0eHQgPSBuYW1lOyBfIH07IF8gfSA9XG4gIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggbmFtZVxuXG5sZXQgbWFuZ2xlX2xpZCA/Zml4cG9pbnQgYWZmaXggbGlkID1cbiAgbWF0Y2ggbGlkIHdpdGhcbiAgfCBMaWRlbnQgcyAtPiBMaWRlbnQgKG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMZG90IChwLCBzKSAtPiBMZG90IChwLCBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGFwcGx5IF8gLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuRXhwYW5zaW9uX2hlbHBlcnMubWFuZ2xlX2xpZDogTGFwcGx5XCJcblxubW9kdWxlIFF1b3RlciA9IFF1b3RlclxuIiwiKCoqIFN0YW5kYXJkIGxpYnJhcnkgZm9yIHBweCByZXdyaXRlcnMgKilcblxuKCoqIFtwcHhsaWJdIGlzIG1lYW50IHRvIGJlIG9wZW5lZCBnbG9iYWxseSBpbiB5b3VyIFBQWCBzb3VyY2UgZmlsZXMuXG5cbiAgICBPcGVuaW5nIGl0IGNvbWVzIHdpdGggdHdvIGFkdmFudGFnZXMuIEZpcnN0LCBpdCB3aWxsIHNoYWRvdyB0aGVcbiAgICBbY29tcGlsZXItbGlic10gbW9kdWxlcy4gVGhlIFtjb21waWxlci1saWJzXSBtb2R1bGVzIGFyZSB1bnN0YWJsZSBhbmQgYXJlbid0XG4gICAgbWVhbnQgdG8gYmUgdXNlZCwgc28gc2hhZG93aW5nIHRoZW0gaXMgYSBnb29kIHByb3RlY3Rpb24gbWVjaGFuaXNtLiBJbiBjYXNlXG4gICAgeW91IGRvbid0IHdhbnQgdG8gb3BlbiBbUHB4bGliXSwgeW91IGNhbiBvcGVuIFtPY2FtbF9zaGFkb3ddIHRvIGdldCB0aGUgc2FtZVxuICAgIHByb3RlY3Rpb24uIFNlY29uZCwgaXQgd2lsbCBicmluZyBzZXZlcmFsIG1vZHVsZXMgaW4gc2NvcGUsIHRoYXQgYXJlIHVzZWZ1bFxuICAgIHRvIGhhdmUgd2hlbiB3cml0aW5nIGEgcmV3cml0ZXI6XG5cbiAgICAtIFRoZSBtYWluIFtwcHhsaWJdIG1vZHVsZXMsIHN1Y2ggYXMgbW9kdWxlcyB0byBoZWxwIG1hbmlwdWxhdGUgdGhlIEFTVFxuICAgICAgKHshQXN0X2J1aWxkZXJ9LCB7IUFzdF9wYXR0ZXJufSksIGFuZCBhIGZldyBmdW5jdGlvbnMuXG4gICAgLSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzLCBzdWNoIGFzIHshQXN0X2hlbHBlcn0gb3IgeyFQcHJpbnRhc3R9LFxuICAgIC0gVGhlIHdob2xlIEFTVCB0eXBlcyAoYnkgW2luY2x1ZGluZ10gdGhlIHshQXN0fSBtb2R1bGUpLlxuXG4gICAgezEgVGhlIGNvcmUgW3BweGxpYl0gZW50cmllc30gKilcblxuKCoqIHsyIE1hbmlwdWxhdGluZyB0aGUgQVNUfSAqKVxuXG5tb2R1bGUgQXN0X2J1aWxkZXIgPSBBc3RfYnVpbGRlclxubW9kdWxlIEFzdF9wYXR0ZXJuID0gQXN0X3BhdHRlcm5cbm1vZHVsZSBBc3RfdHJhdmVyc2UgPSBBc3RfdHJhdmVyc2VcblxuKCoqIHsyIENvbnRleHQtZnJlZSByZXdyaXRpbmd9ICopXG5cbm1vZHVsZSBDb250ZXh0X2ZyZWUgPSBDb250ZXh0X2ZyZWVcbm1vZHVsZSBEZXJpdmluZyA9IERlcml2aW5nXG5tb2R1bGUgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uXG5tb2R1bGUgRXhwYW5zaW9uX2NvbnRleHQgPSBFeHBhbnNpb25fY29udGV4dFxubW9kdWxlIENvZGVfcGF0aCA9IENvZGVfcGF0aFxuXG4oKiogezIgT3RoZXIgaGVscGVyc30gKilcblxubW9kdWxlIEV4cGFuc2lvbl9oZWxwZXJzID0gRXhwYW5zaW9uX2hlbHBlcnNcbm1vZHVsZSBNZXJsaW5faGVscGVycyA9IE1lcmxpbl9oZWxwZXJzXG5tb2R1bGUgU3BlbGxjaGVjayA9IFNwZWxsY2hlY2tcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxuXG4oKiogezIgRHJpdmVyLXJlbGF0ZWQgbW9kdWxlc30gKilcblxubW9kdWxlIERyaXZlciA9IERyaXZlclxubW9kdWxlIENhbGxlcl9pZCA9IENhbGxlcl9pZFxubW9kdWxlIEFzdF9pbyA9IFV0aWxzLkFzdF9pby5SZWFkX2JpblxuXG4oKiogezIgQ2hlY2tzfSAqKVxuXG5tb2R1bGUgQXR0cmlidXRlID0gQXR0cmlidXRlXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlc1xuXG4oKiogezIgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnN9ICopXG5cbmluY2x1ZGUgQ29tbW9uXG5cbigqKiB7MSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzfVxuXG4gICAgRXhwb3NlIHNvbWUgbW9kdWxlcyBmcm9tIHshUHB4bGliX2FzdH0uICopXG5cbm1vZHVsZSBBc3QgPSBQcHhsaWJfYXN0LkFzdFxubW9kdWxlIEFzdF9oZWxwZXIgPSBQcHhsaWJfYXN0LkFzdF9oZWxwZXJcbm1vZHVsZSBBc3R0eXBlcyA9IFBweGxpYl9hc3QuQXN0dHlwZXNcbm1vZHVsZSBQYXJzZSA9IFBweGxpYl9hc3QuUGFyc2Vcbm1vZHVsZSBQYXJzZXRyZWUgPSBQcHhsaWJfYXN0LlBhcnNldHJlZVxubW9kdWxlIFBwcmludGFzdCA9IFBweGxpYl9hc3QuUHByaW50YXN0XG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Rcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgTG9jID0gTG9jXG5cbigqKiB7MSBUaGUgd2hvbGUgQVNUIHR5cGVzfSAqKVxuXG5pbmNsdWRlIEFzdFxuKCoqIEluY2x1ZGUgYWxsIHRoZSBBc3QgZGVmaW5pdGlvbnMgc2luY2Ugd2UgbmVlZCB0aGVtIGluIGV2ZXJ5IHNpbmdsZSBwcHhcblxuICAgIEBjbG9zZWQgKilcblxuKCoqIE1ha2Ugc3VyZSBjb2RlIHVzaW5nIFBweGxpYiBkb2Vzbid0IHJlZmVyIHRvIGNvbXBpbGVyLWxpYnMgd2l0aG91dCBiZWluZ1xuICAgIGV4cGxpY2l0IGFib3V0IGl0OlxuXG4gICAgQGNsb3NlZCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG9wZW4gT2NhbWxfc2hhZG93XG5cbiAgaW5jbHVkZSAoXG4gICAgT2NhbWxfc2hhZG93IDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE9jYW1sX3NoYWRvd1xuICAgICAgZW5kXG4gICAgICB3aXRoIG1vZHVsZSBBc3RfaGVscGVyIDo9IEFzdF9oZWxwZXJcbiAgICAgIHdpdGggbW9kdWxlIEFzdHR5cGVzIDo9IEFzdHR5cGVzXG4gICAgICB3aXRoIG1vZHVsZSBEb2NzdHJpbmdzIDo9IERvY3N0cmluZ3NcbiAgICAgIHdpdGggbW9kdWxlIElkZW50aWZpYWJsZSA6PSBJZGVudGlmaWFibGVcbiAgICAgIHdpdGggbW9kdWxlIExleGVyIDo9IExleGVyXG4gICAgICB3aXRoIG1vZHVsZSBMb2NhdGlvbiA6PSBMb2NhdGlvblxuICAgICAgd2l0aCBtb2R1bGUgTG9uZ2lkZW50IDo9IExvbmdpZGVudFxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2UgOj0gUGFyc2VcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNldHJlZSA6PSBQYXJzZXRyZWVcbiAgICAgIHdpdGggbW9kdWxlIFBwcmludGFzdCA6PSBQcHJpbnRhc3RcbiAgICAgIHdpdGggbW9kdWxlIFN5bnRheGVyciA6PSBTeW50YXhlcnIpXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBGb3IgdGVzdHMgYW5kIFBweF9jb3JlIGNvbXBhdGliaWxpdHkgbGF5ZXIgKilcbm1vZHVsZSBQcHhsaWJfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29tbW9uID0gQ29tbW9uXG4gIG1vZHVsZSBOYW1lID0gTmFtZVxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBQcHhsaWJcblxubGV0IGRlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmRlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChhbHRfb3B0aW9uIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpIG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2VxdWFsID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfY29tcGFyZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfeW9qc29uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9pZiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfaWZcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgb3BhcXVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJ5b2pzb24ub3BhcXVlXCIgQXR0cmlidXRlLkNvbnRleHQuY29yZV90eXBlIEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgKClcbjs7XG5cbmxldCBvcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm9wdGlvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfdGQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQudHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IHlvanNvbl9rZXkgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmtleVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQucnRhZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIGF0dHIgZGVzY3JpcHRpb24gPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICB+bG9jXG4gICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAJXNdIGlzIG9ubHkgYWxsb3dlZCBvbiB0eXBlIFslc10uXCJcbiAgICAoQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgICBkZXNjcmlwdGlvblxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkIHgpXG4gIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgIH5sb2NcbiAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiBpbmxpbmUgcmVjb3Jkcy5cIlxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkIHgpXG4gIHRoZW4gKFxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IGNkc1xuICAgICAgd2hlbiBMaXN0LmV4aXN0cyBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIF8gLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIG9ubHkgd29ya3Mgb24gcmVjb3Jkcy4gRm9yIGlubGluZSBcXFxuICAgICAgICAgcmVjb3JkcywgZG86IHR5cGUgdCA9IEEgb2YgeyBhIDogaW50IH0gW0BAYWxsb3dfZXh0cmFfZmllbGRzXSB8IEIgW0BAQEBkZXJpdmluZyBcXFxuICAgICAgICAgeW9qc29uXVwiXG4gICAgfCBfIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiByZWNvcmRzLlwiKVxuOztcblxubW9kdWxlIFJlY29yZF9maWVsZF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgY29tbW9uID0gWyBgeW9qc29uX29wdGlvbiBvZiBjb3JlX3R5cGUgXVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIGF0dHIgbGQgfmYgPVxuICAgIE9wdGlvbi5tYXAgKEF0dHJpYnV0ZS5nZXQgYXR0ciBsZCkgfmY6KGZ1biB4IC0+IGYgeCwgQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgOztcblxuICBsZXQgY3JlYXRlIH5sb2MgZ2V0dGVycyBsZCA9XG4gICAgbGV0IGNvbW1vbl9nZXR0ZXJzID1cbiAgICAgIFsgKGZ1biBsZCAtPlxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5nZXQgb3B0aW9uIGxkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICAgICAgfCBbJXR5cGU6IFsldD8gdHldIG9wdGlvbl0gLT4gU29tZSAoYHlvanNvbl9vcHRpb24gdHksIFwiW0B5b2pzb24ub3B0aW9uXVwiKVxuICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIG9wdGlvbiBcIl8gb3B0aW9uXCIpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICBdXG4gICAgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlcl9tYXAgKGdldHRlcnMgQCBjb21tb25fZ2V0dGVycykgfmY6KGZ1biBmIC0+IGYgbGQpIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgKHYsIF8pIF0gLT4gU29tZSB2XG4gICAgfCBfIDo6IF8gOjogXyBhcyBhdHRyaWJ1dGVzIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogJXNcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChMaXN0Lm1hcCBhdHRyaWJ1dGVzIH5mOnNuZCkpXG4gIDs7XG5cbiAgbW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZGVmYXVsdCBvZiBleHByZXNzaW9uXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlIH5sb2MgWyBnZXRfYXR0cmlidXRlIGRlZmF1bHQgfmY6KGZ1biBkZWZhdWx0IC0+IGBkZWZhdWx0IGRlZmF1bHQpIF0gbGRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgb2YgWyBgbm9fYXJnIHwgYGNvbXBhcmUgfCBgZXF1YWwgfCBgeW9qc29uIHwgYGZ1bmMgb2YgZXhwcmVzc2lvbiBdXG4gICAgICB8IGBkcm9wX2lmIG9mIGV4cHJlc3Npb25cbiAgICAgIHwgYGtlZXBcbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmxvY1xuICAgICAgICBbIGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IGBkcm9wX2RlZmF1bHQgYG5vX2FyZ1xuICAgICAgICAgICAgfCBTb21lIGUgLT4gYGRyb3BfZGVmYXVsdCAoYGZ1bmMgZSkpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfZXF1YWwgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBlcXVhbClcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9jb21wYXJlIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgY29tcGFyZSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF95b2pzb24gfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGB5b2pzb24pXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2lmIH5mOihmdW4geCAtPiBgZHJvcF9pZiB4KVxuICAgICAgICBdXG4gICAgICAgIGxkXG4gICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6YGtlZXBcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPVxuICB7IGxhYmVsIDogc3RyaW5nXG4gIDsgbmFtZV9vdmVycmlkZSA6IHN0cmluZyBvcHRpb25cbiAgfVxuXG5sZXQgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZSA9IHsgbGFiZWw7IG5hbWVfb3ZlcnJpZGUgfVxuXG5sZXQgb2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKGNkIDogUHB4bGliLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSA9XG4gIGxldCBsYWJlbCA9IGNkLnBjZF9uYW1lLnR4dCBpblxuICBsZXQgbmFtZV9vdmVycmlkZSA9IFBweGxpYi5BdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl92YXJpYW50X25hbWUgY2QgaW5cbiAgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZVxuOztcblxubGV0IGxhYmVsIHQgPSB0LmxhYmVsXG5sZXQgbmFtZSB0ID0gT3B0aW9uLnZhbHVlIHQubmFtZV9vdmVycmlkZSB+ZGVmYXVsdDp0LmxhYmVsXG4iLCJvcGVuIEJhc2Vcbm9wZW4gUHB4bGliXG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBBdHRycyA9IEF0dHJzXG5cbmxldCAoIC0tPiApIGxocyByaHMgPSBjYXNlIH5ndWFyZDpOb25lIH5saHMgfnJoc1xuXG4oKiBTaW1wbGlmaWVzIG1hdGNoIGNhc2VzLCBmb3IgcmVhZGFiaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBJdCdzIG5vdCBvYnZpb3VzIHdlIGNhblxuICAgc3RpY2sgdGhpcyBpbiBwcHhfY29yZSwgYXMgKG1hdGNoIGUxIHdpdGggcCAtPiBlMikgYW5kIChsZXQgcCA9IGUxIGluIGUyKSBhcmUgbm90IHR5cGVkXG4gICBleGFjdGx5IHRoZSBzYW1lICh0eXBlIGluZmVyZW5jZSBnb2VzIGluIGRpZmZlcmVudCBvcmRlciwgbWVhbmluZyB0eXBlIGRpc2FtYmlndWF0aW9uXG4gICBkaWZmZXJzKS4gKilcbmxldCBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlcyA9XG4gIG1hdGNoIGNhc2VzIHdpdGhcbiAgfCBbIHsgcGNfbGhzOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyB9IF0gLT5cbiAgICAobWF0Y2ggcGNfbGhzLCBleHByIHdpdGhcbiAgICAgfCAoIHsgcHBhdF9hdHRyaWJ1dGVzID0gW107IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gaWRlbnQ7IF8gfTsgXyB9XG4gICAgICAgLCB7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGlkZW50JzsgXyB9OyBfIH0gKVxuICAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIGlkZW50IGlkZW50JyAtPiBwY19yaHNcbiAgICAgfCBfIC0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGNfbGhzIH5leHByIF0gcGNfcmhzKVxuICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXNcbjs7XG5cbm1vZHVsZSBGdW5fb3JfbWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZ1biBvZiBleHByZXNzaW9uXG4gICAgfCBNYXRjaCBvZiBjYXNlIGxpc3RcblxuICBsZXQgZXhwciB+bG9jIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZlxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIGNhc2VzXG4gIDs7XG5cbiAgbGV0IHVucm9sbCB+bG9jIGUgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBlYXBwbHkgfmxvYyBmIFsgZSBdXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX21hdGNoIH5sb2MgZSBjYXNlc1xuICA7O1xuXG4gIGxldCBtYXBfdG1wX3ZhcnMgfmxvYyB0cyA9XG4gICAgbGV0IHZhcnMgPSBMaXN0Lm1hcGkgdHMgfmY6KGZ1biBpIF8gLT4gXCJ2XCIgXiBJbnQudG9fc3RyaW5nIGkpIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIExpc3QubWFwMl9leG4gdmFycyB0cyB+ZjooZnVuIHZhciB0IC0+XG4gICAgICAgIGxldCBleHByID0gdW5yb2xsIH5sb2MgKGV2YXIgfmxvYyB2YXIpIHQgaW5cbiAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyB2YXIpIH5leHByKVxuICAgIGluXG4gICAgYmluZGluZ3MsIExpc3QubWFwIHZhcnMgfmY6KHB2YXIgfmxvYyksIExpc3QubWFwIHZhcnMgfmY6KGV2YXIgfmxvYylcbiAgOztcbmVuZFxuXG4oKiBBIHJlbmFtaW5nIGlzIGEgbWFwcGluZyBmcm9tIHR5cGUgdmFyaWFibGUgbmFtZSB0byB0eXBlIHZhcmlhYmxlIG5hbWUuXG4gICBJbiBkZWZpbml0aW9ucyBzdWNoIGFzOlxuXG4gICB0eXBlICdhIHQgPVxuICAgfCBBIDogPHR5cGU+IC0+ICdiIHRcbiAgIHwgQiBvZiAnYVxuXG4gICB3ZSBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4geW9qc29uX29mIHBhcmFtZXRlciBuYW1lZCBhZnRlciAnYSwgYnV0ICdhIGlzIG5vdCBpblxuICAgc2NvcGUgaW4gPHR5cGU+IHdoZW4gaGFuZGxpbmcgdGhlIGNvbnN0cnVjdG9yIEEgKGJlY2F1c2UgQSBpcyBhIGdhZHQgY29uc3RydWN0b3IpLlxuICAgSW5zdGVhZCB0aGUgdHlwZSB2YXJpYWJsZXMgaW4gc2NvcGUgYXJlIHRoZSBvbmVzIGRlZmluZWQgaW4gdGhlIHJldHVybiB0eXBlIG9mIEEsXG4gICBuYW1lbHkgJ2IuIFRoZXJlIGNvdWxkIGJlIGxlc3Mgb3IgbW9yZSB0eXBlIHZhcmlhYmxlIGluIGNhc2VzIHN1Y2ggYXM6XG5cbiAgIHR5cGUgXyBsZXNzID0gTGVzcyA6IGludCBsZXNzXG4gICB0eXBlIF8gbW9yZSA9IE1vcmUgOiAoJ2EgKiAnYSkgbW9yZVxuXG4gICBJZiBmb3IgaW5zdGFuY2UsIDx0eXBlPiBpcyBbJ2IgKiAnY10sIHdoZW4gd2UgZmluZCAnYiwgd2Ugd2lsbCBsb29rIGZvciBbJ2JdIGluIHRoZVxuICAgcmVuYW1pbmcgYW5kIGZpbmQgWydhXSAob25seSBpbiB0aGF0IGdhZHQgYnJhbmNoLCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBpbiBvdGhlclxuICAgYnJhbmNoZXMpLCBhdCB3aGljaCBwb2ludCB3ZSBjYW4gY2FsbCB0aGUgcHJldmlvdXNseSBib3VuZCB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkXG4gICBhZnRlciAnYS5cbiAgIElmIHdlIGNhbid0IGZpbmQgYSByZXN1bHRpbmcgbmFtZSwgbGlrZSB3aGVuIGxvb2tpbmcgdXAgWydjXSBpbiB0aGUgcmVuYW1pbmcsIHRoZW4gd2VcbiAgIGFzc3VtZSB0aGUgdmFyaWFibGUgaXMgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkIGFuZCB0cmVhdCBpdCBhcyBbX10gKHdoaWNoIGlzIG9rLFxuICAgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGNvbnN0cmFpbnRzKS4gKilcbm1vZHVsZSBSZW5hbWluZyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgaWRlbnRpdHkgOiB0XG4gIHZhbCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgOiB0IC0+IHN0cmluZyBsb2MgLT4gdFxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIHZhbCBiaW5kaW5nX2tpbmQgOiB0IC0+IHN0cmluZyAtPiBiaW5kaW5nX2tpbmRcbiAgdmFsIG9mX2dhZHQgOiBzdHJpbmcgbGlzdCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvciA9IHN0cmluZyBMb2MudFxuICB0eXBlIHQgPSAoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50IG9wdGlvblxuXG4gIGxldCBpZGVudGl0eSA9IE5vbmVcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICBsZXQgYWRkX3VuaXZlcnNhbGx5X2JvdW5kICh0IDogdCkgbmFtZSA6IHQgPVxuICAgIGxldCBuYW1lID0gbmFtZS50eHQgaW5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBtYXAgLT4gU29tZSAoTWFwLnNldCB+a2V5Om5hbWUgfmRhdGE6KE9rIG5hbWUpIG1hcClcbiAgOztcblxuICBsZXQgYmluZGluZ19raW5kIHQgdmFyID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFyXG4gICAgfCBTb21lIG1hcCAtPlxuICAgICAgKG1hdGNoIE1hcC5maW5kIG1hcCB2YXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBFeGlzdGVudGlhbGx5X2JvdW5kXG4gICAgICAgfCBTb21lIChPayB2YWx1ZSkgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFsdWVcbiAgICAgICB8IFNvbWUgKEVycm9yIHsgbG9jOyB0eHQgfSkgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCIlc1wiIHR4dClcbiAgOztcblxuICAoKiBSZXR1cm4gYSBtYXAgdHJhbnNsYXRpbmcgdHlwZSB2YXJpYWJsZXMgYXBwZWFyaW5nIGluIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdBRFRcbiAgICAgY29uc3RydWN0b3IgdG8gdGhlaXIgbmFtZSBpbiB0aGUgdHlwZSBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICBGb3IgaW5zdGFuY2U6XG5cbiAgICAge1tcbiAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSBYIDogJ3ggKiAneSAtPiAoJ3gsICd5KSB0XG4gICAgIF19XG5cbiAgICAgd2lsbCBwcm9kdWNlOlxuXG4gICAgIHtbXG4gICAgICAgXCJ4XCIgLT4gT2sgXCJhXCJcbiAgICAgICAgICAgICAgICBcInlcIiAtPiBPayBcImJcIlxuICAgICBdfVxuXG4gICAgIElmIGEgdmFyaWFibGUgYXBwZWFycyB0d2ljZSBpbiB0aGUgcmV0dXJuIHR5cGUgaXQgd2lsbCBtYXAgdG8gW0Vycm9yIF9dLiBJZiBhXG4gICAgIHZhcmlhYmxlIGNhbm5vdCBiZSBtYXBwZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgZGVjbGFyYXRpb24sIGl0IHdpbGwgbWFwIHRvXG4gICAgIFtFcnJvcl0gKGZvciBpbnN0YW5jZSBbQSA6ICdhIC0+ICdhIGxpc3QgdF0pLlxuXG4gICAgIEl0IHJldHVybnMgTm9uZSBvbiB1c2VyIGVycm9yLCB0byBsZXQgdGhlIHR5cGVyIGdpdmUgdGhlIGVycm9yIG1lc3NhZ2UgKilcbiAgbGV0IG9mX2dhZHQgPVxuICAgICgqIEFkZCBhbGwgdHlwZSB2YXJpYWJsZXMgb2YgYSB0eXBlIHRvIGEgbWFwLiAqKVxuICAgIGxldCBhZGRfdHlwZXZhcnMgPVxuICAgICAgb2JqZWN0XG4gICAgICAgIGluaGVyaXQgWyhzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgbWFwID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICB7IGxvYyA9IHR5LnB0eXBfbG9jXG4gICAgICAgICAgICAgIDsgdHh0ID1cbiAgICAgICAgICAgICAgICAgIFwicHB4X3lvanNvbl9jb252OiB2YXJpYWJsZSBpcyBub3QgYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgY29uc3RydWN0b3JcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGE6KEVycm9yIGVycm9yKVxuICAgICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgdHkgbWFwXG4gICAgICBlbmRcbiAgICBpblxuICAgIGxldCBhdXggbWFwIHRwX25hbWUgdHBfaW5fcmV0dXJuX3R5cGUgPVxuICAgICAgbWF0Y2ggdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICBpZiBNYXAubWVtIG1hcCB2YXJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2MgPSB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2xvYyBpblxuICAgICAgICAgICAgRXJyb3IgeyBsb2M7IHR4dCA9IFwicHB4X3lvanNvbl9jb252OiBkdXBsaWNhdGUgdmFyaWFibGVcIiB9KVxuICAgICAgICAgIGVsc2UgT2sgdHBfbmFtZVxuICAgICAgICBpblxuICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YVxuICAgICAgfCBfIC0+IGFkZF90eXBldmFycyNjb3JlX3R5cGUgdHBfaW5fcmV0dXJuX3R5cGUgbWFwXG4gICAgaW5cbiAgICBmdW4gdHBzIGNkIC0+XG4gICAgICBtYXRjaCBjZC5wY2RfcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgKG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICB8IFB0eXBfY29uc3RyIChfLCBwYXJhbXMpIC0+XG4gICAgICAgICAgIGlmIExpc3QubGVuZ3RoIHBhcmFtcyA8PiBMaXN0Lmxlbmd0aCB0cHNcbiAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoU3RkbGliLkxpc3RMYWJlbHMuZm9sZF9sZWZ0MlxuICAgICAgICAgICAgICAgICAgdHBzXG4gICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpKVxuICAgICAgICAgICAgICAgICAgfmY6YXV4KVxuICAgICAgICAgfCBfIC0+IE5vbmUpXG4gIDs7XG5lbmRcblxuKCogVXRpbGl0eSBmdW5jdGlvbnMgKilcblxubGV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgUHR5cF92YXIgXyAtPiBQdHlwX2FueVxuICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG5sZXQgcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB4ID1cbiAgbGV0IHByZWZpeCA9IFwicmlnaWRfXCIgaW5cbiAgaWYgU3RyaW5nLmVxdWFsIHggdHlwZV9uYW1lIHx8IFN0cmluZy5pc19wcmVmaXggeCB+cHJlZml4XG4gIHRoZW4gcHJlZml4IF4geCBeIFwiX29mX3R5cGVfXCIgXiB0eXBlX25hbWVcbiAgZWxzZSB4XG47O1xuXG5sZXQgbWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSA9XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciBzIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoTG9jYXRlZC5saWRlbnQgfmxvYzp0eS5wdHlwX2xvYyAocmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSBzKSwgW10pXG4gICAgICAgICAgfCBkZXNjIC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIGRlc2NcbiAgICAgICAgaW5cbiAgICAgICAgeyB0eSB3aXRoIHB0eXBfZGVzYyB9XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgcXVhbnRpZmllZCB0eXBlIFsgISAnYSAuLiAneiAuIChtYWtlX21vbm9fdHlwZSB0ICgnYSAuLiAneikpIF0gb3JcbiAgIFt0eXBlIGEgLi4gei4gbWFrZV9tb25vX3R5cGUgdCAoYSAuLiB6KV0gd2hlbiBbdXNlX3JpZ2lkX3ZhcmlhYmxlc10gaXMgdHJ1ZS5cbiAgIEFubm90YXRpb24gYXJlIG5lZWRlZCBmb3Igbm9uIHJlZ3VsYXIgcmVjdXJzaXZlIGRhdGF0eXBlcyBhbmQgZ2FkdCB3aGVuIHRoZSByZXR1cm4gdHlwZVxuICAgb2YgY29uc3RydWN0b3JzIGFyZSBjb25zdHJhaW5lZC4gVW5mb3J0dW5hdGVseSwgcHV0dGluZyByaWdpZCB2YXJpYWJsZXMgZXZlcnl3aGVyZSBkb2VzXG4gICBub3Qgd29yayBiZWNhdXNlIG9mIGNlcnRhaW5zIHR5cGVzIHdpdGggY29uc3RyYWludHMuIFdlIHRodXMgb25seSB1c2UgcmlnaWQgdmFyaWFibGVzXG4gICBmb3Igc3VtIHR5cGVzLCB3aGljaCBpbmNsdWRlcyBhbGwgR0FEVHMuICopXG5cbmxldCB0dmFyc19vZl9jb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gc3RyaW5nIGxpc3QgPVxuICBsZXQgdHZhcnMgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gaWYgTGlzdC5tZW0gYWNjIHggfmVxdWFsOlN0cmluZy5lcXVhbCB0aGVuIGFjYyBlbHNlIHggOjogYWNjXG4gICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgeCBhY2NcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHR5cCAtPiBMaXN0LnJldiAodHZhcnMjY29yZV90eXBlIHR5cCBbXSlcbjs7XG5cbmxldCBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nXG4gICAgICAoKiBwbGFjaW5nIGEgc3VpdGFibHkgcG9seW1vcnBoaWMgb3IgcmlnaWQgdHlwZSBjb25zdHJhaW50IG9uIHRoZSBwYXR0ZXJuIG9yIGJvZHkgKilcbiAgICAgIChsb2MgOiBMb2NhdGlvbi50KVxuICAgICAgKHRkIDogdHlwZV9kZWNsYXJhdGlvbilcbiAgICAgICh0eXAgOiBjb3JlX3R5cGUpXG4gICAgICB+KHRwcyA6IHN0cmluZyBsb2MgbGlzdClcbiAgICAgIH4oZnVuY19uYW1lIDogc3RyaW5nKVxuICAgICAgKGJvZHkgOiBleHByZXNzaW9uKVxuICA9XG4gIGxldCB2YXJzID0gdHZhcnNfb2ZfY29yZV90eXBlIHR5cCBpblxuICBsZXQgaGFzX3ZhcnMgPVxuICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IF8gOjogXyAtPiB0cnVlXG4gIGluXG4gIGxldCBwYXQgPVxuICAgIGxldCBwYXQgPSBwdmFyIH5sb2MgZnVuY19uYW1lIGluXG4gICAgaWYgbm90IGhhc192YXJzXG4gICAgdGhlbiBwYXRcbiAgICBlbHNlIChcbiAgICAgIGxldCB2YXJzID0gTGlzdC5tYXAgfmY6KGZ1biB0eHQgLT4geyB0eHQ7IGxvYyB9KSB2YXJzIGluXG4gICAgICBwcGF0X2NvbnN0cmFpbnQgfmxvYyBwYXQgKHB0eXBfcG9seSB+bG9jIHZhcnMgdHlwKSlcbiAgaW5cbiAgbGV0IGJvZHkgPVxuICAgIGxldCB1c2VfcmlnaWRfdmFyaWFibGVzID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV92YXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiB1c2VfcmlnaWRfdmFyaWFibGVzXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdHlwZV9uYW1lID0gdGQucHR5cGVfbmFtZS50eHQgaW5cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICB0cHNcbiAgICAgICAgfmY6KGZ1biB0cCBib2R5IC0+XG4gICAgICAgICAgcGV4cF9uZXd0eXBlIH5sb2MgeyB0eHQgPSByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHRwLnR4dDsgbG9jID0gdHAubG9jIH0gYm9keSlcbiAgICAgICAgfmluaXQ6KHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgKG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lIHR5cCkpKVxuICAgIGVsc2UgaWYgaGFzX3ZhcnNcbiAgICB0aGVuIGJvZHlcbiAgICBlbHNlIHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgdHlwXG4gIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0IH5leHByOmJvZHlcbjs7XG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIChvYmplY3RcbiAgICBpbmhlcml0IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUgd2l0aFxuICAgICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgfm1hcmtfYXNfc2VlbjpmYWxzZSBBdHRycy5vcGFxdWUgY3R5cGUpIC0+XG4gICAgICAgICgpXG4gICAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPiAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuICBlbmQpXG4gICNnb1xuICAgICgpXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIHRvIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX29mX3lvanNvbl9vZiB+bG9jIHQgPSBbJXR5cGU6IFsldCB0XSAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnRdXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl95b2pzb25fb2ZcblxuICBsZXQgbWtfc2lnIH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwICgoIF4gKSBcInlvanNvbl9vZl9cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOihta190eXBlIHRkKVxuICAgICAgICAgICB+cHJpbTpbXSkpXG4gIDs7XG5lbmRcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiBmcm9tIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX29mX29mX3lvanNvbiB+bG9jIHQgPSBbJXR5cGU6IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCAtPiBbJXQgdF1dXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl9vZl95b2pzb25cblxuICBsZXQgc2lnX29mX3RkIHdpdGhfcG9seSB0ZCA9XG4gICAgbGV0IG9mX3lvanNvbl90eXBlID0gbWtfdHlwZSB0ZCBpblxuICAgIGxldCBsb2MgPSB7IHRkLnB0eXBlX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBvZl95b2pzb25faXRlbSA9XG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBzIF4gXCJfb2ZfeW9qc29uXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICB+cHJpbTpbXSlcbiAgICBpblxuICAgIG1hdGNoIHdpdGhfcG9seSwgaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlIHdpdGhcbiAgICB8IHRydWUsIGBTdXJlbHlfbm90IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlNpZ19nZW5lcmF0ZV9vZl95b2pzb24uc2lnX29mX3RkOiB5b2pzb25fcG9seSBhbm5vdGF0aW9uIGJ1dCB0eXBlIGlzIHN1cmVseSBub3QgXFxcbiAgICAgICAgIGEgcG9seW1vcnBoaWMgdmFyaWFudFwiXG4gICAgfCBmYWxzZSwgKGBTdXJlbHlfbm90IHwgYE1heWJlKSAtPiBbIG9mX3lvanNvbl9pdGVtIF1cbiAgICB8ICh0cnVlIHwgZmFsc2UpLCBgRGVmaW5pdGVseSB8IHRydWUsIGBNYXliZSAtPlxuICAgICAgWyBvZl95b2pzb25faXRlbVxuICAgICAgOyBwc2lnX3ZhbHVlXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IFwiX19cIiBeIHMgXiBcIl9vZl95b2pzb25fX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICAgIH5wcmltOltdKVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBta19zaWcgfnBvbHkgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHNpZ19vZl90ZCBwb2x5KVxuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gICgqIEhhbmRsaW5nIG9mIHJlY29yZCBkZWZhdWx0cyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IH5sb2MgaWQgfmY6KGZ1biBzIC0+IFwieW9qc29uX29mX1wiIF4gcykgYXJnc1xuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB5b2pzb25fb2ZfdHlwZVxuICAgICAgICAgICAgfih0eXBldmFyX2hhbmRsaW5nIDogWyBgb2sgb2YgUmVuYW1pbmcudCB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciBdKVxuICAgICAgICAgICAgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IFsldHlwZTogX10gLT4gRnVuIFslZXhwciBmdW4gXyAtPiBgU3RyaW5nIFwiX1wiXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCBbIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkgXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSV5b2pzb25fb2Y6IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIlxuICAgICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYmluZGluZ19raW5kIHJlbmFtaW5nIHBhcm0gd2l0aFxuICAgICAgICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgcGFybSAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmQgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgWyV0eXBlOiBfXSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgICh5b2pzb25fb2ZfdHlwZV9jb25zdHJcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBpZFxuICAgICAgICAgICAoTGlzdC5tYXAgYXJncyB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSkpKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIF9mIC0+XG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9mdW4gUHB4X3lvanNvbl9jb252X2xpYi5pZ25vcmVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3ZhcmlhbnQgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFt5b2pzb25fb2ZdIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOihmdW4gdHAgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcHZhcnMsIGV2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBpbl9leHByID0gWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIGV2YXJzXV0gaW5cbiAgICBsZXQgZXhwciA9IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGluX2V4cHIgaW5cbiAgICBwcGF0X3R1cGxlIH5sb2MgcHZhcnMgLS0+IGV4cHJcblxuICAoKiBDb252ZXJzaW9uIG9mIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIHlvanNvbl9vZl92YXJpYW50XG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICgobG9jLCByb3dfZmllbGRzKSA6IExvY2F0aW9uLnQgKiByb3dfZmllbGQgbGlzdClcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBpdGVtIHJvdyA9XG4gICAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3cgaW5cbiAgICAgIG1hdGNoIHJvdy5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBdXVxuICAgICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV1dIGluXG4gICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9IExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZykgYXJncyBpblxuICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgfmxvYyAoU29tZSBwYXR0KVxuICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV1cbiAgICAgIHwgUmluaGVyaXQgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIFtdKTsgXyB9IC0+XG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKVxuICAgICAgICAtLT4geW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgWyBbJWV4cHIgdl0gXVxuICAgICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUnRhZy8mXCJcbiAgICAgIHwgUmluaGVyaXQgKHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBfIDo6IF8pOyBfIH0gYXMgdHlwKSAtPlxuICAgICAgICBsZXQgY2FsbCA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHR5cCkgaW5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpIC0tPiBbJWV4cHIgWyVlIGNhbGxdIHZdXG4gICAgICB8IFJpbmhlcml0IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUmluaGVyaXQvbm9uLWlkXCJcbiAgICAgICgqIGltcG9zc2libGU/KilcbiAgICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIE1hdGNoIChMaXN0Lm1hcCB+ZjppdGVtIHJvd19maWVsZHMpXG5cbiAgKCogUG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkcyAqKVxuICBhbmQgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAoKiBTaG91bGQgYmUgaW1wb3NzaWJsZSBiZWNhdXNlIFt5b2pzb25fb2ZfcG9seV0gaXMgb25seSBjYWxsZWQgb24gcG9seW1vcnBoaWMgcmVjb3JkXG4gICAgICAgICBmaWVsZHMgYW5kIHJlY29yZCB0eXBlIGRlZmluaXRpb25zIGNhbid0IG9jY3VyIGluIHR5cGUgZXhwcmVzc2lvbnMuICopXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBvbHltb3JwaGljIHR5cGUgaW4gYSB0eXBlIGV4cHJlc3Npb25cIlxuICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgICAgaW5cbiAgICAgIGxldCByZW5hbWluZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHBhcm1zIH5pbml0OnJlbmFtaW5nIH5mOlJlbmFtaW5nLmFkZF91bml2ZXJzYWxseV9ib3VuZFxuICAgICAgaW5cbiAgICAgIChtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgICAgTWF0Y2hcbiAgICAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgICAgIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICAgICBdKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgcmVjb3JkIHR5cGVzICopXG5cbiAgbGV0IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgPVxuICAgIGxldCBwID0gTG9jLm1ha2UgKExvbmdpZGVudC5MaWRlbnQgbmFtZSkgfmxvYywgcHZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgIHBhdHQgQCBbIHAgXVxuICA7O1xuXG4gIHR5cGUgaXNfZW1wdHlfZXhwciA9XG4gICAgfCBJbnNwZWN0X3ZhbHVlIG9mIChsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG4gICAgfCBJbnNwZWN0X3lvanNvbiBvZiAoY252X2V4cHI6ZXhwcmVzc2lvbiAtPiBsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG5cbiAgbGV0IHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHlfZXhwciBrZXkgPVxuICAgIGxldCBsb2MgPSB7IHRwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgIHwgRnVuIGV4cCAtPiBleHBcbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gZWwgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZWxdIG1hdGNoaW5nc11dXG4gICAgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbnZfZXhwclxuICAgICAgfCBTb21lIHlvanNvbl9vZiAtPiBbJWV4cHIgWyVlIHlvanNvbl9vZl0gWyVlIGNudl9leHByXV1cbiAgICBpblxuICAgIGxldCBleHByID1cbiAgICAgIGxldCB2X25hbWUgPSBcInZfXCIgXiBuYW1lIGluXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgbWF0Y2ggaXNfZW1wdHlfZXhwciB3aXRoXG4gICAgICAgICAgICB8IEluc3BlY3RfdmFsdWUgaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciBsb2MgKGV2YXIgfmxvYyB2X25hbWUpXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1cbiAgICAgICAgICAgIHwgSW5zcGVjdF95b2pzb24gaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciB+Y252X2V4cHIgbG9jIFslZXhwciBhcmddXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXVxuICAgICAgICBpblxuICAgICAgICBbJWUgZXhwcl1dXG4gICAgaW5cbiAgICBwYXR0LCBleHByXG4gIDs7XG5cbiAgbGV0IGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXMgfnR5cGVzX2JlaW5nX2RlZmluZWQgfmxvYyB+d2h5IHRwID1cbiAgICBsZXQgZGlzYWxsb3dfdmFyaWFibGVzID1cbiAgICAgIGxldCBpdGVyID1cbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgfCBQdHlwX3ZhciB2IC0+XG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgY29udGFpbnMgXFxcbiAgICAgICAgICAgICAgICAgYSB0eXBlIHZhcmlhYmxlOiAnJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbiBpcyBub3QgYXZhaWFibGUgZm9yIHR5cGUgdmFyaWFibGVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgbGV0IGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBmdW4gXyAtPiAoKVxuICAgICAgfCBgUmVjdXJzaXZlIHR5cGVzX2JlaW5nX2RlZmluZWQgLT5cbiAgICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyBsb2MgPSBfOyB0eHQgPSBMaWRlbnQgcyB9LCBfKSBhcyB0IC0+XG4gICAgICAgICAgICAgICAgaWYgU2V0Lm1lbSB0eXBlc19iZWluZ19kZWZpbmVkIHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgXFxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgdHlwZSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHJlY3Vyc2l2ZSBibG9jazogJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgbm90IHN1cHBvcnRlZC5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBkaXNhbGxvd192YXJpYWJsZXMgdHA7XG4gICAgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIHRwXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgIGhvd1xuICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgcGF0dFxuICAgICAgICBleHByXG4gICAgICAgIG5hbWVcbiAgICAgICAgdHBcbiAgICAgICAgP3lvanNvbl9vZlxuICAgICAgICBkZWZhdWx0XG4gICAgICAgIGtleVxuICAgID1cbiAgICBsZXQgaXNfZW1wdHkgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHlvanNvbiAtPlxuICAgICAgICBJbnNwZWN0X3lvanNvblxuICAgICAgICAgIChmdW4gfmNudl9leHByIGxvYyB5b2pzb25fZXhwciAtPlxuICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIChbJWUgY252X2V4cHJdIFslZSBkZWZhdWx0XSkgWyVlIHlvanNvbl9leHByXV0pXG4gICAgICB8IChgbm9fYXJnIHwgYGZ1bmMgXyB8IGBjb21wYXJlIHwgYGVxdWFsKSBhcyBob3cgLT5cbiAgICAgICAgbGV0IGVxdWFsaXR5X2YgbG9jID1cbiAgICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgIHwgYG5vX2FyZyAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbQG9jYW1sLnBwd2FybmluZ1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0XSBpcyBkZXByZWNhdGVkOiBcXFxuICAgICAgICAgICAgICAgICBwbGVhc2UgdXNlIG9uZSBvZjpcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdCBmXSBhbmQgZ2l2ZSBhbiBcXFxuICAgICAgICAgICAgICAgICBleHBsaWNpdCBlcXVhbGl0eSBmdW5jdGlvbiAoW2YgPSBcXFxuICAgICAgICAgICAgICAgICBQb2x5Lig9KV0gY29ycmVzcG9uZHMgdG8gdGhlIG9sZCBcXFxuICAgICAgICAgICAgICAgICBiZWhhdmlvcilcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWNvbXBhcmVdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslZXF1YWxdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBpZiB5b3UgXFxcbiAgICAgICAgICAgICAgICAgd2FudCB0byBjb21wYXJlIHRoZSB5b2pzb24gXFxcbiAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zXFxuXCJdXVxuICAgICAgICAgIHwgYGZ1bmMgZiAtPiBmXG4gICAgICAgICAgfCBgY29tcGFyZSAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBjb21wYXJlXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVjb21wYXJlLmVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgICB8IGBlcXVhbCAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBlcXVhbFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICBpblxuICAgICAgICBJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSBlcXVhbGl0eV9mIGxvY10gWyVlIGRlZmF1bHRdIFslZSBleHByXV0pXG4gICAgaW5cbiAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5IGtleVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+cmVuYW1pbmcgbG9jIGZsZHMgfndyYXBfZXhwciA9XG4gICAgbGV0IGNvbGwgKChwYXR0IDogKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QpLCBleHByKSBsZCA9XG4gICAgICBsZXQgbmFtZSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBsZC5wbGRfbmFtZS5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLllvanNvbl9vZi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICB8IGB5b2pzb25fb3B0aW9uIHRwIC0+XG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBbJWV4cHIgdl0gaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpXSB3aXRoXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBibmRzXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICBibmQgOjogYm5kc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFslZSBleHByXV1cbiAgICAgICAgaW5cbiAgICAgICAgcGF0dCwgZXhwclxuICAgICAgfCBgZHJvcF9kZWZhdWx0IGhvdyAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICAobWF0Y2ggQXR0cmlidXRlLmdldCBBdHRycy5kZWZhdWx0IGxkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm5vIGRlZmF1bHQgdG8gZHJvcFwiXG4gICAgICAgICB8IFNvbWUgZGVmYXVsdCAtPlxuICAgICAgICAgICB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgaG93XG4gICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgcGF0dFxuICAgICAgICAgICAgIGV4cHJcbiAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgdHBcbiAgICAgICAgICAgICBkZWZhdWx0XG4gICAgICAgICAgICAga2V5KVxuICAgICAgfCBgZHJvcF9pZiB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBwYXR0XG4gICAgICAgICAgZXhwclxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICB0cFxuICAgICAgICAgIChJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSB0ZXN0XSBbJWUgZXhwcl1dKSlcbiAgICAgICAgICBrZXlcbiAgICAgIHwgYGtlZXAgYXMgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IGBrZWVwIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICAgIHwgYG9taXRfbmlsIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGNudl9leHByXSB3aXRoXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gYm5kc1xuICAgICAgICAgICAgICB8IGFyZyAtPiAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgIGluXG4gICAgICAgICggcGF0dFxuICAgICAgICAsIFslZXhwclxuICAgICAgICAgIGxldCBibmRzID0gWyVlIGJuZHNdIGluXG4gICAgICAgICAgWyVlIGV4cHJdXSApXG4gICAgaW5cbiAgICBsZXQgaW5pdF9leHByID0gd3JhcF9leHByIFslZXhwciBibmRzXSBpblxuICAgIGxldCBwYXR0LCBleHByID0gTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDooW10sIGluaXRfZXhwcikgZmxkcyBpblxuICAgICggcHBhdF9yZWNvcmQgfmxvYyBwYXR0IENsb3NlZFxuICAgICwgWyVleHByXG4gICAgICBsZXQgYm5kcyA6IChzdHJpbmcgKiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQpIGxpc3QgPSBbXSBpblxuICAgICAgWyVlIGV4cHJdXSApXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiBzdW0gdHlwZXMgKilcblxuICBsZXQgYnJhbmNoX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCByZW5hbWluZyB+bG9jIGNvbnN0cl9saWQgY29uc3RyX3N0ciBhcmdzID1cbiAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IFBjc3RyX3JlY29yZCBsZHMgLT5cbiAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgbG9jXG4gICAgICAgICAgbGRzXG4gICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBMaXN0IFsgWyVlIGNuc3RyX2V4cHJdOyBgQXNzb2MgWyVlIGV4cHJdIF1dKVxuICAgICAgaW5cbiAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KSAtLT4gZXhwclxuICAgIHwgUGNzdHJfdHVwbGUgcGNkX2FyZ3MgLT5cbiAgICAgIChtYXRjaCBwY2RfYXJncyB3aXRoXG4gICAgICAgfCBbXSAtPlxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIE5vbmUgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdIF1dXG4gICAgICAgfCBhcmdzIC0+XG4gICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPVxuICAgICAgICAgICBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykpIGFyZ3NcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICAgaW5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KVxuICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXSlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0cHMgY2RzID1cbiAgICBGdW5fb3JfbWF0Y2guTWF0Y2hcbiAgICAgIChMaXN0Lm1hcCBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcub2ZfZ2FkdCB0cHMgY2QgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbGlkID0gTG9jYXRlZC5tYXAgbGlkZW50IGNkLnBjZF9uYW1lIGluXG4gICAgICAgICBsZXQgY29uc3RyX25hbWUgPVxuICAgICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgaW5cbiAgICAgICAgICAgTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgfD4gZXN0cmluZyB+bG9jOmNkLnBjZF9uYW1lLmxvY1xuICAgICAgICAgaW5cbiAgICAgICAgIGJyYW5jaF9zdW1cbiAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgcmVuYW1pbmdcbiAgICAgICAgICAgfmxvYzpjZC5wY2RfbG9jXG4gICAgICAgICAgIGNvbnN0cl9saWRcbiAgICAgICAgICAgY29uc3RyX25hbWVcbiAgICAgICAgICAgY2QucGNkX2FyZ3MpKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IHlvanNvbl9vZl9uaWwgbG9jID0gRnVuX29yX21hdGNoLkZ1biBbJWV4cHIgZnVuIF92IC0+IGFzc2VydCBmYWxzZV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBjZHMgLT5cbiAgICAgICAgICB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIChMaXN0Lm1hcCB0cHMgfmY6KGZ1biB4IC0+IHgudHh0KSkgY2RzXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPlxuICAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLmlkZW50aXR5IGluXG4gICAgICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBsZHNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBBc3NvYyBbJWUgZXhwcl1dKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTWF0Y2ggWyBwYXR0IC0tPiBleHByIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4geW9qc29uX29mX25pbCBsb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgUmVuYW1pbmcuaWRlbnRpdHkpIHR5KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19wcml2YXRlX2FsaWFzID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCwgdGQucHR5cGVfbWFuaWZlc3QsIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0LCBTb21lIF8sIFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBpc19wcml2YXRlX2FsaWFzXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogUmVwbGFjZSBhbGwgdHlwZSB2YXJpYWJsZSBieSBfIHRvIGF2b2lkIGdlbmVyYWxpemF0aW9uIHByb2JsZW1zICopXG4gICAgICAgIGxldCB0eV9zcmMgPVxuICAgICAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtYW5pZmVzdCA9XG4gICAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgIHwgU29tZSBtYW5pZmVzdCAtPiBtYW5pZmVzdFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInlvanNvbl9vZl90ZC9uby1tYW5pZmVzdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eV9kc3QgPSByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBtYW5pZmVzdCBpblxuICAgICAgICBsZXQgY29lcmNpb24gPSBbJWV4cHIgKHYgOiBbJXQgdHlfc3JjXSA6PiBbJXQgdHlfZHN0XSldIGluXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgY29lcmNpb24gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIGNvZXJjaW9uIG1hdGNoaW5nc11dKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aCByZWN1cnNpdmUgdHlwZXMgYnlcbiAgICAgICAgICAgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHZdIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzKVxuICAgIGluXG4gICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfdHlwZSB0ZCBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgbGV0IHJlY19mbGFnID1cbiAgICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICAgIHwgYFJlY3Vyc2l2ZSBfIC0+IFJlY3Vyc2l2ZVxuICAgICAgICB8IGBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIFsgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5IF1cbiAgOztcblxuICBsZXQgeW9qc29uX29mX3RkcyB+bG9jIH5wYXRoOl8gKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgIGxldCB0eXBlc19iZWluZ19kZWZpbmVkID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IGBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGBSZWN1cnNpdmVcbiAgICAgICAgICAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dCkpKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkKSBpblxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGZsZHMgPVxuICAgIGxldCBjb2xsIGxkID1cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgZXN0cmluZyB+bG9jIGtleVxuICAgIGluXG4gICAgZWxpc3QgfmxvYyAoTGlzdC5tYXAgfmY6Y29sbCBmbGRzKVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPiB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGxkc1xuICAgICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9vcGVuIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IHlvanNvbl9maWVsZHMgb25seSB3b3JrcyBvbiByZWNvcmRzXCJcbiAgICBpblxuICAgIGxldCB0eXAgPSBbJXR5cGU6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9maWVsZHNfb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX2ZpZWxkc19vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGRzIH5sb2MgfnBhdGg6XyAoXywgdGRzKSA9XG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIChMaXN0Lm1hcCB0ZHMgfmY6eW9qc29uX2ZpZWxkc19vZl90ZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICAoKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuICAoKiBIYW5kbGUgYmFja3RyYWNraW5nIHdoZW4gdmFyaWFudHMgZG8gbm90IG1hdGNoICopXG4gIGxldCBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwciA9XG4gICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXSAtLT4gZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBkZXBlbmRpbmcgb24gd2hldGhlciB0byBnZW5lcmF0ZSBhIG1hdGNoIGZvciB0aGUgbGFzdFxuICAgICBjYXNlIG9mIG1hdGNoaW5nIGEgdmFyaWFudCAqKVxuICBsZXQgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hlcyA9XG4gICAgbWF0Y2ggbWF0Y2hfbGFzdCwgbWF0Y2hlcyB3aXRoXG4gICAgfCB0cnVlLCBbIHsgcGNfbGhzID0gXzsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXVxuICAgIHwgXywgWyB7IHBjX2xocyA9IFslcGF0PyBfXTsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXSAtPiBleHByXG4gICAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXRvbV0gbWF0Y2hlc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIG1hbGZvcm1lZCBZb2pzb25zICopXG4gIGxldCBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzIGNhbGwgPVxuICAgIGxldCBjb2xsX3N0cnVjdHMgYWNjIChsb2MsIGxhYmVsKSA9XG4gICAgICAocHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAtLT5cbiAgICAgICBtYXRjaCBjYWxsIHdpdGhcbiAgICAgICB8IGBwdGFnX25vX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfbm9fYXJncyBfdHBfbG9jIF95b2pzb25dXG4gICAgICAgfCBgcHRhZ190YWtlc19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyBfeW9qc29uXSlcbiAgICAgIDo6IGFjY1xuICAgIGluXG4gICAgbGV0IGV4Y19ub192YXJpYW50X21hdGNoID1cbiAgICAgIFslcGF0PyBfXSAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKV1cbiAgICBpblxuICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGxfc3RydWN0cyB+aW5pdDpbIGV4Y19ub192YXJpYW50X21hdGNoIF0gcmV2X2Vsc1xuICA7O1xuXG4gICgqIFNwbGl0IHRoZSByb3cgZmllbGRzIG9mIGEgdmFyaWFudCB0eXBlIGludG8gbGlzdHMgb2YgYXRvbWljIHZhcmlhbnRzLFxuICAgICBzdHJ1Y3R1cmVkIHZhcmlhbnRzLCBhdG9taWMgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLFxuICAgICBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMuICopXG4gIGxldCBzcGxpdF9yb3dfZmllbGQgfmxvYyAoYXRvbXMsIHN0cnVjdHMsIGFpbmhzLCBzaW5ocykgcm93X2ZpZWxkID1cbiAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3dfZmllbGQgaW5cbiAgICBtYXRjaCByb3dfZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgdHBsID0gbG9jLCBsYWJlbCBpblxuICAgICAgdHBsIDo6IGF0b21zLCBzdHJ1Y3RzLCBgQSB0cGwgOjogYWluaHMsIHNpbmhzXG4gICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBhdG9tcywgKGxvYywgbGFiZWwpIDo6IHN0cnVjdHMsIGFpbmhzLCBgUyAobG9jLCBsYWJlbCwgdHAsIHJvd19maWVsZCkgOjogc2luaHNcbiAgICB8IFJpbmhlcml0IGluaCAtPlxuICAgICAgbGV0IGlpbmggPSBgSSBpbmggaW5cbiAgICAgIGF0b21zLCBzdHJ1Y3RzLCBpaW5oIDo6IGFpbmhzLCBpaW5oIDo6IHNpbmhzXG4gICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwic3BsaXRfcm93X2ZpZWxkLyZcIlxuICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdHlwZV9jb25zdHJfb2ZfeW9qc29uID8oaW50ZXJuYWwgPSBmYWxzZSkgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGlkIGFyZ3MgfmxvYyB+ZjooZnVuIHMgLT5cbiAgICAgIGxldCBzID0gcyBeIFwiX29mX3lvanNvblwiIGluXG4gICAgICBpZiBpbnRlcm5hbCB0aGVuIFwiX19cIiBeIHMgXiBcIl9fXCIgZWxzZSBzKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlID8oaW50ZXJuYWwgPSBmYWxzZSkgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSB8IFsldHlwZTogX10gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoICh0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBvayAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSVvZl95b2pzb246IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIilcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biBhcmcgLT5cbiAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBhcmcpKVxuICAgICAgaW5cbiAgICAgIEZ1biAodHlwZV9jb25zdHJfb2ZfeW9qc29uIH5sb2MgfmludGVybmFsIGlkIGFyZ3MpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5mdW5fb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFtvZl95b2pzb25dIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGZwcyBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFslcCBwbGlzdCB+bG9jIHBhdHRzXV1cbiAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF90dXBsZSB+bG9jIHZhcnMpXG4gICAgOyBbJXBhdD8geW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICBbJWUgZWludCB+bG9jIG5dXG4gICAgICAgICAgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oID1cbiAgICBsZXQgbG9jID0gaW5oLnB0eXBfbG9jIGluXG4gICAgbGV0IGZ1bmNfZXhwciA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCBpblxuICAgIGxldCBhcHAgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgICBsZXQgZnVuX2V4cHIgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGZ1bmNfZXhwciBpblxuICAgICAgRnVuIFslZXhwciBbJWUgZnVuX2V4cHJdIF95b2pzb25dXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZXhjID1cbiAgICAgIGhhbmRsZV9ub192YXJpYW50X21hdGNoXG4gICAgICAgIGxvY1xuICAgICAgICAoaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcylcbiAgICBpblxuICAgIGxldCBuZXdfb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBbIFslcGF0PyBfXVxuICAgICAgICAtLT4gcGV4cF90cnlcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICAoWyVlIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgYXBwXVxuICAgICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgICAgIG1hdGNoX2V4Y1xuICAgICAgXVxuICAgIGluXG4gICAgbmV3X290aGVyX21hdGNoZXMsIHRydWVcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBhdG9taWMgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbSB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfYXRvbXNfaW5ocyB+cmV2X3N0cnVjdHMgPVxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBBIChsb2MsIGxhYmVsKSAtPlxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgICAgIC0tPiBwZXhwX3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPVxuICAgICAgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfc3RydWN0cyBgcHRhZ190YWtlc19hcmdzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfYXRvbXNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X2F0b21zX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX2F0b21zX2luaHNcblxuICAoKiBWYXJpYW50IGNvbnZlcnNpb25zICopXG5cbiAgKCogTWF0Y2ggYXJndW1lbnRzIG9mIGNvbnN0cnVjdG9ycyAodmFyaWFudHMgb3Igc3VtIHR5cGVzKSAqKVxuICBhbmQgbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50IGxhYmVsIHRwcyA9XG4gICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgbGV0IGNuc3RyIHZhcnNfZXhwciA9XG4gICAgICBpZiBpc192YXJpYW50XG4gICAgICB0aGVuIHBleHBfdmFyaWFudCB+bG9jIGNuc3RyX2xhYmVsIChTb21lIHZhcnNfZXhwcilcbiAgICAgIGVsc2UgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgdmFyc19leHByKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgICAgbGV0IGdvb2RfYXJnX21hdGNoID1cbiAgICAgICAgbGV0IHZhcnNfZXhwciA9XG4gICAgICAgICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgICAgICAgfCBbIHZhcl9leHByIF0gLT4gdmFyX2V4cHJcbiAgICAgICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHZhcnNcbiAgICAgICAgaW5cbiAgICAgICAgY25zdHIgdmFyc19leHByXG4gICAgICBpblxuICAgICAgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaFxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBtYXRjaCB5b2pzb25fYXJncyB3aXRoXG4gICAgICB8IFslcCBwbGlzdCB+bG9jIHBhdHRzXSAtPiBbJWUgcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZ29vZF9hcmdfbWF0Y2hdXG4gICAgICB8IF8gLT5cbiAgICAgICAgWyVlXG4gICAgICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBzdHJ1Y3R1cmVkIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICA9XG4gICAgbGV0IGhhc19zdHJ1Y3RzX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBTIChsb2MsIGxhYmVsLCB0cCwgX3JvdykgLT5cbiAgICAgICAgaGFzX3N0cnVjdHNfcmVmIDo9IHRydWU7XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbWtfY25zdHJfYXJnc19tYXRjaFxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5sb2M6dHAucHR5cF9sb2NcbiAgICAgICAgICAgIH5pc192YXJpYW50OnRydWVcbiAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIFslcGF0PyBbJXAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIGFzIF90YWddIC0tPiBleHByXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPSBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9hdG9tcyBgcHRhZ19ub19hcmdzIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdHNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X3N0cnVjdHNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfc3RydWN0c19pbmhzLCAhaGFzX3N0cnVjdHNfcmVmXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgYXRvbWljIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzIChpLmUuIG5vdFxuICAgICBpbmNsdWRlZCB2YXJpYW50IHR5cGVzKSAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkX2xpc3QgPVxuICAgIGxldCByZXZfYXRvbXMsIHJldl9zdHJ1Y3RzLCByZXZfYXRvbXNfaW5ocywgcmV2X3N0cnVjdHNfaW5ocyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjooc3BsaXRfcm93X2ZpZWxkIH5sb2MpIH5pbml0OihbXSwgW10sIFtdLCBbXSkgcm93X2ZpZWxkX2xpc3RcbiAgICBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3QsIGhhc19zdHJ1Y3RzID1cbiAgICAgIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgIGluXG4gICAgbGV0IG1heWJlX3lvanNvbl9hcmdzX3BhdHQgPSBpZiBoYXNfc3RydWN0cyB0aGVuIFslcGF0PyB5b2pzb25fYXJnc10gZWxzZSBbJXBhdD8gX10gaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgYXRvbSBdIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWtfdmFyaWFudF9tYXRjaF9hdG9tXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmdWxsX3R5cGVcbiAgICAgICAgICAgIH5yZXZfYXRvbXNfaW5oc1xuICAgICAgICAgICAgfnJldl9zdHJ1Y3RzXG4gICAgOyBbJXBhdD8gYExpc3QgKGBTdHJpbmcgYXRvbSA6OiBbJXAgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dF0pIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWF0Y2hfc3RydWN0XG4gICAgOyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgdmFyaWFudHMgKilcbiAgYW5kIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcykgPVxuICAgIGxldCBpc19jb250YWluZWQsIGZ1bGxfdHlwZSA9XG4gICAgICBtYXRjaCBmdWxsX3R5cGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIHB0eXBfdmFyaWFudCB+bG9jIHJvd19maWVsZHMgQ2xvc2VkIE5vbmVcbiAgICAgIHwgU29tZSBmdWxsX3R5cGUgLT4gZmFsc2UsIGZ1bGxfdHlwZVxuICAgIGluXG4gICAgbGV0IHRvcF9tYXRjaCA9XG4gICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgIHwgeyBwcmZfZGVzYyA9IFJpbmhlcml0IGluaDsgXyB9IDo6IHJlc3QgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGluaCByb3dfZmllbGRzID1cbiAgICAgICAgICBsZXQgY2FsbCA9XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgKFslZVxuICAgICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByXG4gICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oKV1cbiAgICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGNhbGxcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgICAgICBtYXRjaCBoLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCBpbmggLT4gbG9vcCBpbmggdFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcmZ0YWdfbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gcmZ0YWdfbWF0Y2hlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBleHBfdHJ5IH5sb2MgY2FsbCAoaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIpXG4gICAgICAgIGluXG4gICAgICAgIFsgWyVwYXQ/IHlvanNvbl0gLS0+IGxvb3AgaW5oIHJlc3QgXVxuICAgICAgfCBfIDo6IF8gLT4gaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGltcG9zc2libGUgKilcbiAgICBpblxuICAgIGlmIGlzX2NvbnRhaW5lZFxuICAgIHRoZW5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICB0cnkgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSB0b3BfbWF0Y2hdIHdpdGhcbiAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgZWxzZSBNYXRjaCB0b3BfbWF0Y2hcblxuICBhbmQgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgIH5sb2NcbiAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICBpblxuICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgIGluXG4gICAgbWF0Y2ggdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHAgd2l0aFxuICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgIE1hdGNoXG4gICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBleHRyYWN0aW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgPVxuICAgIGxldCByZWMgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpbml0cywgbm9fYXJncywgYXJnc1xuICAgICAgfCBsZCA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgbGV0IGtleSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpubSAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKSBpblxuICAgICAgICAobWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkLCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIHRwKSwgXyB8IChOb25lIHwgU29tZSAoYGRlZmF1bHQgXykpLCB0cCAtPlxuICAgICAgICAgICBsZXQgaW5pdHMgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZV0gOjogaW5pdHMgaW5cbiAgICAgICAgICAgbGV0IHVucm9sbGVkID1cbiAgICAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBbJWV4cHIgX2ZpZWxkX3lvanNvbl1cbiAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgICAgIChwc3RyaW5nIH5sb2Mga2V5XG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWUgPSBbJWUgdW5yb2xsZWRdIGluXG4gICAgICAgICAgICAgICAgICBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXVxuICAgICAgICAgICAgICAgICAgOj0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBmdmFsdWVcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlcyA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlc10pXG4gICAgICAgICAgICAgOjogYXJnc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyBtb3JlX2ZsZHMpXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX2V4dHJhID1cbiAgICAgIFsgKFslcGF0PyBfXVxuICAgICAgICAgLS0+XG4gICAgICAgICBpZiBhbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgIHRoZW4gWyVleHByICgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICBpZiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApXG4gICAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICB0aGVuIGV4dHJhIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYVxuICAgICAgICAgICAgIGVsc2UgKCldKVxuICAgICAgXVxuICAgIGluXG4gICAgbG9vcCBbXSBoYW5kbGVfZXh0cmEgaGFuZGxlX2V4dHJhIChMaXN0LnJldiBmbGRzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGhhc19ub25vcHRfZmllbGRzID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMgPVxuICAgICAgbGV0IHJlYyBsb29wICgocmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBsb2MgfTsgXyB9IGFzIGxkKSA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgICBsZXQgZmxkID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1dIGluXG4gICAgICAgICAgbGV0IG1rX2RlZmF1bHQgbG9jID1cbiAgICAgICAgICAgIGJpX2xzdCwgWyVwYXQ/IFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXSA6OiBnb29kX3BhdHRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgXyB8IGB5b2pzb25fb3B0aW9uIF8pIC0+IG1rX2RlZmF1bHQgbG9jXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaGFzX25vbm9wdF9maWVsZHMgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgKCBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgWyVlIGZsZF0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAsIFslZSBlc3RyaW5nIH5sb2Mgbm1dXVxuICAgICAgICAgICAgICAgIDo6IGJpX2xzdFxuICAgICAgICAgICAgICAsIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXVxuICAgICAgICAgICAgICAgIDo6IGdvb2RfcGF0dHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjYyA9IFslZXhwciBbJWUgZmxkXV0gOjogcmVzX3RwbHMsIG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzIGluXG4gICAgICAgICAgbG9vcCBhY2MgbW9yZV9mbGRzXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgbG9vcCAoW10sIFtdLCBbXSkgKExpc3QucmV2IGZsZHMpXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZ29vZF9leHByID1cbiAgICAgIGlmIGhhc19wb2x5XG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNudnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IF8gfTsgXyB9IC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMgd2l0aFxuICAgICAgICB8IFsgbWF0Y2hfZ29vZF9leHByIF0gLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIHwgbWF0Y2hfZ29vZF9leHBycyAtPiBwZXhwX3R1cGxlIH5sb2MgbWF0Y2hfZ29vZF9leHBycylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY252dCBsZCA9XG4gICAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IGRlZmF1bHQpIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gWyVlIGRlZmF1bHRdXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT4gdl1cbiAgICAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gXykgfCBOb25lIC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBubSwgdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgd3JhcF9leHByIChwZXhwX3JlY29yZCB+bG9jIChMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMpIE5vbmUpKVxuICAgIGluXG4gICAgbGV0IGV4cHIsIHBhdHQgPVxuICAgICAgbWF0Y2ggcmVzX3RwbHMsIGdvb2RfcGF0dHMgd2l0aFxuICAgICAgfCBbIHJlc19leHByIF0sIFsgcmVzX3BhdHQgXSAtPiByZXNfZXhwciwgcmVzX3BhdHRcbiAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgcmVzX3RwbHMsIHBwYXRfdHVwbGUgfmxvYyBnb29kX3BhdHRzXG4gICAgaW5cbiAgICBpZiAhaGFzX25vbm9wdF9maWVsZHNcbiAgICB0aGVuXG4gICAgICBwZXhwX21hdGNoXG4gICAgICAgIH5sb2NcbiAgICAgICAgZXhwclxuICAgICAgICBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICA7IFslcGF0PyBfXVxuICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICBbJWUgZWxpc3QgfmxvYyBiaV9sc3RdXVxuICAgICAgICBdXG4gICAgZWxzZSBwZXhwX21hdGNoIH5sb2MgZXhwciBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgY29udmVydGluZyByZWNvcmQgZmllbGRzICopXG5cbiAgbGV0IG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgZXhwcl9yZWZfaW5pdHMsIF9tY19ub19hcmdzX2ZpZWxkcywgbWNfZmllbGRzX3dpdGhfYXJncyA9XG4gICAgICBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpXG4gICAgaW5cbiAgICBsZXQgZmllbGRfcmVmcyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAgIGZsZHNcbiAgICAgICAgZXhwcl9yZWZfaW5pdHNcbiAgICAgICAgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IGluaXQgLT5cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKG5hbWUgXiBcIl9maWVsZFwiKSlcbiAgICAgICAgICAgIH5leHByOlslZXhwciByZWYgWyVlIGluaXRdXSlcbiAgICBpblxuICAgIHBleHBfbGV0XG4gICAgICB+bG9jXG4gICAgICBOb25yZWN1cnNpdmVcbiAgICAgIChmaWVsZF9yZWZzXG4gICAgICAgQCBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBkdXBsaWNhdGVzXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgOyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZXh0cmFdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICBdKVxuICAgICAgWyVleHByXG4gICAgICAgIGxldCByZWMgaXRlciA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBwZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyBbJXBhdD8gKGZpZWxkX25hbWUsIF9maWVsZF95b2pzb24pIDo6IHRhaWxdXG4gICAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgICAgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZmllbGRfbmFtZV0gbWNfZmllbGRzX3dpdGhfYXJnc107XG4gICAgICAgICAgICAgICAgICBpdGVyIHRhaWxdXG4gICAgICAgICAgICAgIDsgWyVwYXQ/IFtdXSAtLT4gWyVleHByICgpXVxuICAgICAgICAgICAgICBdXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIGZpZWxkX3lvanNvbnM7XG4gICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcyB3aXRoXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcylcbiAgICAgICAgICAgIHlvanNvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgKG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEgd2l0aFxuICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEpXG4gICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgfCBbXSAtPiBbJWUgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwcl0pXVxuICA7O1xuXG4gIGxldCBpc19wb2x5IChfLCBmbGRzKSA9XG4gICAgTGlzdC5leGlzdHMgZmxkcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgeyBwbGRfdHlwZSA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfTsgXyB9IC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICBsb2NcbiAgICAgICAgZmxkc1xuICAgICAgICB+d3JhcF9leHByXG4gICAgPVxuICAgIGxldCBoYXNfcG9seSA9IGlzX3BvbHkgKGxvYywgZmxkcykgaW5cbiAgICBsZXQgY252X2ZpZWxkcyA9XG4gICAgICBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwclxuICAgIGluXG4gICAgaWYgaGFzX3BvbHlcbiAgICB0aGVuIChcbiAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgbGV0IHBhdHMgPVxuICAgICAgICAgIExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+IHB2YXIgfmxvYyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwYXRzIHdpdGhcbiAgICAgICAgfCBbIHBhdCBdIC0+IHBhdFxuICAgICAgICB8IHBhdHMgLT4gcHBhdF90dXBsZSB+bG9jIHBhdHNcbiAgICAgIGluXG4gICAgICBsZXQgcmVjb3JkX2RlZiA9XG4gICAgICAgIHdyYXBfZXhwclxuICAgICAgICAgIChwZXhwX3JlY29yZFxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAoTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT5cbiAgICAgICAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKSlcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgaW5cbiAgICAgIHBleHBfbGV0XG4gICAgICAgIH5sb2NcbiAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGF0dCB+ZXhwcjpjbnZfZmllbGRzIF1cbiAgICAgICAgcmVjb3JkX2RlZilcbiAgICBlbHNlIGNudl9maWVsZHNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciByZWNvcmRzICopXG4gIGxldCByZWNvcmRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgTWF0Y2hcbiAgICAgIFsgWyVwYXQ/IGBBc3NvYyBmaWVsZF95b2pzb25zIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGZsZHNcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIHggLT4geClcbiAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b21cbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIF1cbiAgOztcblxuICAoKiBTdW0gdHlwZSBjb252ZXJzaW9ucyAqKVxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB3ZWxsLWZvcm1lZCBZb2pzb25zIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3JlY29yZCBmaWVsZHM7IF8gfSAtPlxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX2NkIGNkKSlcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZSAtPlxuICAgICAgICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSBlKSlcbiAgICAgICAgaW5cbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZyk7IGBBc3NvYyBmaWVsZF95b2pzb25zIF1cbiAgICAgICAgICBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBleHByXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIF1dXG4gICAgICAgIC0tPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSBOb25lXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfIGFzIHRwcyk7IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgKGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZykgOjogeW9qc29uX2FyZ3MpIGFzXG4gICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgLS0+IG1rX2Nuc3RyX2FyZ3NfbWF0Y2ggfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+aXNfdmFyaWFudDpmYWxzZSBsYWJlbCB0cHMpXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgbWFsZm9ybWVkIFlvanNvbnMgd2l0aCBnb29kIHRhZ3NcbiAgICAgd3J0LiBzdW0gdHlwZXMgKilcbiAgbGV0IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBjZHMpID1cbiAgICBMaXN0Lm1hcCBjZHMgfmY6KGZ1biAoY2QsIGxhYmVsKSAtPlxuICAgICAgbGV0IGNuc3RyX25hbWUgPSBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCBpblxuICAgICAgbWF0Y2ggY2Qgd2l0aFxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgW107IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYExpc3QgKGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX25vX2FyZ3MgX3RwX2xvYyB5b2pzb25dXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfKSB8IFBjc3RyX3JlY29yZCBfOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyB5b2pzb25dKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHN1bSB0eXBlcyAqKVxuICBsZXQgc3VtX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBhbHRzKSA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBsZXQgYWx0cyA9XG4gICAgICBMaXN0Lm1hcCBhbHRzIH5mOihmdW4gY2QgLT4gY2QsIExhYmVsX3dpdGhfbmFtZS5vZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZClcbiAgICBpblxuICAgIE1hdGNoXG4gICAgICAoTGlzdC5jb25jYXRcbiAgICAgICAgIFsgbWtfZ29vZF9zdW1fbWF0Y2hlcyB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgYWx0cylcbiAgICAgICAgIDsgWyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW1cbiAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW1cbiAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIF90cF9sb2MgeW9qc29uXVxuICAgICAgICAgICBdXG4gICAgICAgICBdKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IG5pbF9vZl95b2pzb24gbG9jIDogRnVuX29yX21hdGNoLnQgPVxuICAgIEZ1blxuICAgICAgWyVleHByXG4gICAgICAgIGZ1biB5b2pzb24gLT4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV90eXBlIF90cF9sb2MgeW9qc29uXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG5cbiAgbGV0IHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jOl8gfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgZnVsbF90eXBlID1cbiAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgaW5cbiAgICBsZXQgaXNfcHJpdmF0ZSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9wcml2YXRlIHdpdGhcbiAgICAgIHwgUHJpdmF0ZSAtPiB0cnVlXG4gICAgICB8IFB1YmxpYyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgaXNfcHJpdmF0ZVxuICAgIHRoZW4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJvZl95b2pzb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgcHJpdmF0ZSB0eXBlXCI7XG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiA9XG4gICAgICBtYXRjaCBpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOmZhbHNlIHdpdGhcbiAgICAgIHwgYERlZmluaXRlbHkgLT4gdHJ1ZVxuICAgICAgfCBgTWF5YmUgLT4gcG9seVxuICAgICAgfCBgU3VyZWx5X25vdCAtPlxuICAgICAgICBpZiBwb2x5XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIFwieW9qc29uX3BvbHkgYW5ub3RhdGlvbiBvbiBhIHR5cGUgdGhhdCBpcyBzdXJlbHkgbm90IGEgcG9seW1vcnBoaWMgdmFyaWFudFwiO1xuICAgICAgICBmYWxzZVxuICAgIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IGJvZHkgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGFsdHMgLT5cbiAgICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgdGQ7XG4gICAgICAgICAgc3VtX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAodGQucHR5cGVfbG9jLCBhbHRzKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBsYmxzIC0+XG4gICAgICAgICAgcmVjb3JkX29mX3lvanNvblxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6XG4gICAgICAgICAgICAgIChPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5hbGxvd19leHRyYV9maWVsZHNfdGQgdGQpKVxuICAgICAgICAgICAgKGxvYywgbGJscylcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgdGQ7XG4gICAgICAgICAgKG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG5pbF9vZl95b2pzb24gdGQucHR5cGVfbG9jXG4gICAgICAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICAgICAgIHR5cGVfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICB+ZnVsbF90eXBlXG4gICAgICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgICAgfmludGVybmFsOmNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICAgICAgICAgdHkpXG4gICAgICBpblxuICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aFxuICAgICAgICAgcmVjdXJzaXZlIHR5cGVzIGJ5IGV0YS1leHBhbmRpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKilcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdCAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBbJWV4cHIgdF0gXV1dXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfbmFtZSA9IHR5cGVfbmFtZSBeIFwiX29mX3lvanNvblwiIGluXG4gICAgbGV0IGludGVybmFsX25hbWUgPSBcIl9fXCIgXiB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25fX1wiIGluXG4gICAgbGV0IGFyZ19wYXR0cywgYXJnX2V4cHJzID1cbiAgICAgIExpc3QudW56aXBcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIH5mOihmdW4gdHAgLT5cbiAgICAgICAgICAgICBsZXQgbmFtZSA9IFwiX29mX1wiIF4gdHAudHh0IGluXG4gICAgICAgICAgICAgcHZhciB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKVxuICAgICAgICAgICB0cHMpXG4gICAgaW5cbiAgICBsZXQgYmluZF90cF9sb2NfaW4gPVxuICAgICAgbGV0IGZ1bGxfdHlwZV9uYW1lID0gUHJpbnRmLnNwcmludGYgXCIlcy4lc1wiIHBhdGggdHlwZV9uYW1lIGluXG4gICAgICBmdW4gZSAtPlxuICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+XG4gICAgICAgICAgKCogd2UgZGVmaW5pdGVseSBkb24ndCB1c2UgdGhlIHN0cmluZywgc28gY2xlYW4gdXAgdGhlIGdlbmVyYXRlZCBjb2RlIGEgYml0ICopXG4gICAgICAgICAgZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgIGxldCBfdHBfbG9jID0gWyVlIGVzdHJpbmcgfmxvYyBmdWxsX3R5cGVfbmFtZV0gaW5cbiAgICAgICAgICAgIFslZSBlXV1cbiAgICBpblxuICAgIGxldCBpbnRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBpZiBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgIHRoZW5cbiAgICAgICAgU29tZVxuICAgICAgICAgIChiaW5kX3RwX2xvY19pblxuICAgICAgICAgICAgIChldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgfnJlY19mbGFnIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keSkpKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgbGV0IG5lZWRfdHBfbG9jLCBib2R5X2JlbG93X2xhbWJkYXMgPVxuICAgICAgICBpZiBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5vX3ZhcmlhbnRfbWF0Y2hfbWMgPVxuICAgICAgICAgICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXVxuICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxfY2FsbCA9XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxfZXhwciA9IGV2YXIgfmxvYyBpbnRlcm5hbF9uYW1lIGluXG4gICAgICAgICAgICBlYXBwbHkgfmxvYyBpbnRlcm5hbF9leHByIChhcmdfZXhwcnMgQCBbIFslZXhwciB5b2pzb25dIF0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdHJ5X3dpdGggPSBwZXhwX3RyeSB+bG9jIGludGVybmFsX2NhbGwgbm9fdmFyaWFudF9tYXRjaF9tYyBpblxuICAgICAgICAgIGZhbHNlLCBiaW5kX3RwX2xvY19pbiBbJWV4cHIgZnVuIHlvanNvbiAtPiBbJWUgdHJ5X3dpdGhdXSlcbiAgICAgICAgZWxzZSB0cnVlLCBib2R5XG4gICAgICBpblxuICAgICAgbGV0IGJvZHlfd2l0aF9sYW1iZGFzID1cbiAgICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG4gICAgICAgICAgfnJlY19mbGFnXG4gICAgICAgICAgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5X2JlbG93X2xhbWJkYXMpXG4gICAgICBpblxuICAgICAgaWYgbmVlZF90cF9sb2MgdGhlbiBiaW5kX3RwX2xvY19pbiBib2R5X3dpdGhfbGFtYmRhcyBlbHNlIGJvZHlfd2l0aF9sYW1iZGFzXG4gICAgaW5cbiAgICBsZXQgbWtfYmluZGluZyBmdW5jX25hbWUgYm9keSA9XG4gICAgICBsZXQgdHlwID0gU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta190eXBlIHRkIGluXG4gICAgICBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHlcbiAgICBpblxuICAgIGxldCBpbnRlcm5hbF9iaW5kaW5ncyA9XG4gICAgICBtYXRjaCBpbnRlcm5hbF9mdW5fYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBib2R5IC0+IFsgbWtfYmluZGluZyBpbnRlcm5hbF9uYW1lIGJvZHkgXVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2JpbmRpbmcgPSBta19iaW5kaW5nIGV4dGVybmFsX25hbWUgZXh0ZXJuYWxfZnVuX2JvZHkgaW5cbiAgICBpbnRlcm5hbF9iaW5kaW5ncywgWyBleHRlcm5hbF9iaW5kaW5nIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuICBsZXQgdGRzX29mX3lvanNvbiB+bG9jIH5wb2x5IH5wYXRoIChyZWNfZmxhZywgdGRzKSA9XG4gICAgbGV0IHR5cGV2YXJfaGFuZGxpbmcgPSBgb2sgaW5cbiAgICBsZXQgc2luZ2xldG9uID1cbiAgICAgIG1hdGNoIHRkcyB3aXRoXG4gICAgICB8IFsgXyBdIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgc2luZ2xldG9uXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBSZWN1cnNpdmUgLT5cbiAgICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGludGVybmFscyBAIGV4dGVybmFscylcbiAgICAgICAgaW5cbiAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgUmVjdXJzaXZlIGJpbmRpbmdzXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgaW50ZXJuYWxzXG4gICAgICAgICAgQCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgZXh0ZXJuYWxzKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfnBvbHkgfmxvYyB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGludGVybmFscyBAIGV4dGVybmFscylcbiAgICAgIGluXG4gICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyBiaW5kaW5ncylcbiAgOztcblxuICBsZXQgdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfnBhdGggY3R5cCA9XG4gICAgbGV0IGxvYyA9IHsgY3R5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBmcCA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIGN0eXAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgWyVlIGZ1bl9leHByXSB5b2pzb25dXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gbWF0Y2hpbmdzXG4gICAgaW5cbiAgICBsZXQgZnVsbF90eXBlX25hbWUgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyBsaW5lICVpOiAlc1wiXG4gICAgICAgIHBhdGhcbiAgICAgICAgbG9jLmxvY19zdGFydC5wb3NfbG51bVxuICAgICAgICAoc3RyaW5nX29mX2NvcmVfdHlwZSBjdHlwKVxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgIGxldCBfdHBfbG9jID0gWyVlIGVzdHJpbmcgfmxvYyBmdWxsX3R5cGVfbmFtZV0gaW5cbiAgICAgICAgWyVlIGJvZHldXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBZb2pzb25fb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLnR5cGVfb2ZfeW9qc29uX29mIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgdHkgPVxuICAgIFN0cl9nZW5lcmF0ZV95b2pzb25fb2YueW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIHR5XG4gICAgfD4gRnVuX29yX21hdGNoLmV4cHIgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9XG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fb2YueW9qc29uX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBZb2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9maWVsZHMueW9qc29uX2ZpZWxkc19vZl90ZHNcbmVuZFxuXG5tb2R1bGUgT2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX29mX3lvanNvbiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlID1cbiAgICBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwclxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uLnRkc19vZl95b2pzb25cbmVuZFxuXG5tb2R1bGUgU2lnX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgbWtfc2lnIH5sb2MgfnBhdGggZGVjbHMgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgICBAIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnIH5wb2x5OmZhbHNlIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCB+bG9jIH5wYXRoICgoX3JmLCB0ZHMpIGFzIGRlY2xzKSA9XG4gICAgbWF0Y2hcbiAgICAgIG1rX25hbWVkX3NpZ1xuICAgICAgICB+bG9jXG4gICAgICAgIH5zZ19uYW1lOlwiUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25hYmxlLlNcIlxuICAgICAgICB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQ6ZmFsc2VcbiAgICAgICAgdGRzXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmNsdWRlX2luZm9zIC0+IFsgcHNpZ19pbmNsdWRlIH5sb2MgaW5jbHVkZV9pbmZvcyBdXG4gICAgfCBOb25lIC0+IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzb29fcnVudGltZS5SdW50aW1lX3ZlcnNpb24gKilcbm1vZHVsZSBSdW50aW1lX3ZlcnNpb24gPSBKc29vX3J1bnRpbWVfX1J1bnRpbWVfdmVyc2lvblxuXG5tb2R1bGUgSnNvb19ydW50aW1lX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcbmVuZFxuXG5tb2R1bGUgU3lzID0gc3RydWN0XG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAnYVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbiAgZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDogb3V0X2NoYW5uZWwgLT4gKGpzX3N0cmluZzpKcy50IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxuICBleHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOiBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuICBleHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbiAgbW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICAgIGV4dGVybmFsIHVzZV9qc19zdHJpbmcgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGVmZmVjdHMgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcbiAgZW5kXG5cbiAgbGV0IHZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uc1xuXG4gIGxldCBnaXRfdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5naXRfdmVyc2lvblxuZW5kXG5cbm1vZHVsZSBFcnJvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcmFpc2VfIDogdCAtPiAnYVxuXG4gIHZhbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuXG4gICgqKiBBdHRhY2ggYSBKYXZhc1NjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhc1NjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFzU2NyaXB0IGVycm9ycyB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5IHdoZW4gY29tcGlsaW5nIHdpdGhcbiAgICBbLS1lbmFibGUgd2l0aC1qcy1lcnJvcl0uICopXG5cbiAgdmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvblxuICAoKiogRXh0cmFjdCBhIEphdmFTY3JpcHQgZXJyb3IgYXR0YWNoZWQgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLCBpZiBhbnkuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgICAgaW5zcGVjdCBhbiBldmVudHVhbCBzdGFjayBzdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgbGV0IHJhaXNlXyA6IHQgLT4gJ2EgPSBKcy5qc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9udCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZXMgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5lbmRcblxubW9kdWxlIFR5cGVkX2FycmF5ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdHlwZWRBcnJheSA9IEpzLnRcblxuICB0eXBlIGFycmF5QnVmZmVyID0gSnMudFxuXG4gIHR5cGUgdWludDhBcnJheSA9IEpzLnRcblxuICBleHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gICAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheVxuICAgID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICAgKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICAgID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gICAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbiAgZW5kXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZV9pbnQ2NF9sb19taV9oaSA6IGludCAtPiBpbnQgLT4gaW50IC0+IEludDY0LnRcbiAgICA9IFwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcIlxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5DU1MgKilcbm1vZHVsZSBDU1MgPSBKc19vZl9vY2FtbF9fQ1NTXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbSAqKVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sX19Eb21cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2V2ZW50cyAqKVxubW9kdWxlIERvbV9ldmVudHMgPSBKc19vZl9vY2FtbF9fRG9tX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21faHRtbCAqKVxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWxfX0RvbV9odG1sXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9zdmcgKilcbm1vZHVsZSBEb21fc3ZnID0gSnNfb2Zfb2NhbWxfX0RvbV9zdmdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRXZlbnRTb3VyY2UgKilcbm1vZHVsZSBFdmVudFNvdXJjZSA9IEpzX29mX29jYW1sX19FdmVudFNvdXJjZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaWxlICopXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sX19GaWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpcmVidWcgKilcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWxfX0ZpcmVidWdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRm9ybSAqKVxubW9kdWxlIEZvcm0gPSBKc19vZl9vY2FtbF9fRm9ybVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5HZW9sb2NhdGlvbiAqKVxubW9kdWxlIEdlb2xvY2F0aW9uID0gSnNfb2Zfb2NhbWxfX0dlb2xvY2F0aW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBJbnRlcnNlY3Rpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRsICopXG5tb2R1bGUgSW50bCA9IEpzX29mX29jYW1sX19JbnRsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzICopXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbF9fSnNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnNvbiAqKVxubW9kdWxlIEpzb24gPSBKc19vZl9vY2FtbF9fSnNvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc3RhYmxlICopXG5tb2R1bGUgSnN0YWJsZSA9IEpzX29mX29jYW1sX19Kc3RhYmxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkxpYl92ZXJzaW9uICopXG5tb2R1bGUgTGliX3ZlcnNpb24gPSBKc19vZl9vY2FtbF9fTGliX3ZlcnNpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTXV0YXRpb25PYnNlcnZlciAqKVxubW9kdWxlIE11dGF0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fTXV0YXRpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5QZXJmb3JtYW5jZU9ic2VydmVyICopXG5tb2R1bGUgUGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzX29mX29jYW1sX19QZXJmb3JtYW5jZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlZ2V4cCAqKVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sX19SZWdleHBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVzaXplT2JzZXJ2ZXIgKilcbm1vZHVsZSBSZXNpemVPYnNlcnZlciA9IEpzX29mX29jYW1sX19SZXNpemVPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5TeXNfanMgKilcbm1vZHVsZSBTeXNfanMgPSBKc19vZl9vY2FtbF9fU3lzX2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlR5cGVkX2FycmF5ICopXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbF9fVHlwZWRfYXJyYXlcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVXJsICopXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWxfX1VybFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJHTCAqKVxubW9kdWxlIFdlYkdMID0gSnNfb2Zfb2NhbWxfX1dlYkdMXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYlNvY2tldHMgKilcbm1vZHVsZSBXZWJTb2NrZXRzID0gSnNfb2Zfb2NhbWxfX1dlYlNvY2tldHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV29ya2VyICopXG5tb2R1bGUgV29ya2VyID0gSnNfb2Zfb2NhbWxfX1dvcmtlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIFhtbEh0dHBSZXF1ZXN0ID0gSnNfb2Zfb2NhbWxfX1htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgbG9jYWwgbW9kdWxlIFtKc10gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHBweF9qcyBleHRlbnNpb24gd29yayB3aXRoaW4gdGhhdCBmaWxlLiAqKVxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgKydhIHRcblxuICB0eXBlICgtJ2EsICsnYikgbWV0aF9jYWxsYmFja1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHRvcFxuXG4gICAgdHlwZSBhbnkgPSB0b3AgdFxuXG4gICAgdHlwZSBhbnlfanNfYXJyYXkgPSBhbnlcblxuICAgIGV4dGVybmFsIGluamVjdCA6ICdhIC0+IGFueSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGNvZXJjZSA6IF8gdCAtPiBfIHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBnZXQgOiAnYSAtPiAnYiAtPiAnYyA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0IDogJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gICAgZXh0ZXJuYWwgZGVsZXRlIDogJ2EgLT4gJ2IgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbCA6ICdhIC0+ICdiIC0+IGFueSBhcnJheSAtPiAnYyA9IFwiY2FtbF9qc19jYWxsXCJcblxuICAgIGV4dGVybmFsIGZ1bl9jYWxsIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbCA6ICdhIC0+IHN0cmluZyAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICAgIGV4dGVybmFsIG5ld19vYmogOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbmV3XCJcblxuICAgIGV4dGVybmFsIG5ld19vYmpfYXJyIDogJ2EgLT4gYW55X2pzX2FycmF5IC0+ICdiID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICAgIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiBhbnkpIGFycmF5IC0+ICdhID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICAgIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gICAgbGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgIChhbnlfanNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgYW55X2pzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKCdiIC0+IGFueV9qc19hcnJheSAtPiAnYSkgLT4gKCdiLCBhbnlfanNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgKCogREVQUkVDQVRFRCAqKVxuICAgIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2Egb3B0ID0gJ2FcblxuICB0eXBlICdhIG9wdGRlZiA9ICdhXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBsZXQgbnVsbCA6ICdhIG9wdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcblxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2Egb3B0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCB1bmRlZmluZWQgOiAnYSBvcHRkZWYgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSBvcHRkZWYgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIHR5cGUgT1BUID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZW1wdHkgOiAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAgIHZhbCB0ZXN0IDogJ2EgdCAtPiBib29sXG5cbiAgICB2YWwgaXRlciA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBjYXNlIDogJ2EgdCAtPiAodW5pdCAtPiAnYikgLT4gKCdhIC0+ICdiKSAtPiAnYlxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXG5cbiAgICB2YWwgb3B0aW9uIDogJ2Egb3B0aW9uIC0+ICdhIHRcblxuICAgIHZhbCB0b19vcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvblxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuICBlbmRcblxuICBtb2R1bGUgT3B0IDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0XG5cbiAgICBsZXQgZW1wdHkgPSBudWxsXG5cbiAgICBsZXQgcmV0dXJuID0gc29tZVxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKGVxdWFscyB4IG51bGwpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKGVxdWFscyB4IG51bGwpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGRlZiA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZlxuXG4gICAgbGV0IGVtcHR5ID0gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmV0dXJuID0gZGVmXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgbGV0IGNvZXJjZSB4IGYgZyA9IE9wdC5nZXQgKGYgeCkgKGZ1biAoKSAtPiBnIHgpXG5cbiAgbGV0IGNvZXJjZV9vcHQgeCBmIGcgPSBPcHQuZ2V0IChPcHQuYmluZCB4IGYpIChmdW4gKCkgLT4gZyB4KVxuXG4gICgqKioqKVxuXG4gIHR5cGUgKydhIG1ldGhcblxuICB0eXBlICsnYSBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcmVhZG9ubHlfcHJvcCA9IDwgZ2V0IDogJ2EgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egd3JpdGVvbmx5X3Byb3AgPSA8IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcHJvcCA9IDwgZ2V0IDogJ2EgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIG9wdGRlZl9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICsnYSBjb25zdHJcblxuICAoKioqKilcblxuICB0eXBlICdhIGNhbGxiYWNrID0gKHVuaXQsICdhKSBtZXRoX2NhbGxiYWNrXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5cbiAgKCoqKiopXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAoKioqKilcblxuICBsZXQgX3RydWUgPSBVbnNhZmUucHVyZV9qc19leHByIFwidHJ1ZVwiXG5cbiAgbGV0IF9mYWxzZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5cbiAgdHlwZSBtYXRjaF9yZXN1bHRfaGFuZGxlXG5cbiAgdHlwZSBzdHJpbmdfYXJyYXlcblxuICB0eXBlIG51bWJlcl90ID0gZmxvYXRcblxuICBjbGFzcyB0eXBlIG51bWJlciA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZ19yYWRpeCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9GaXhlZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsX2RpZ2l0cyA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9QcmVjaXNpb24gOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBlbmRcblxuICBhbmQganNfc3RyaW5nID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHZhbHVlT2YgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckF0IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQ29kZUF0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICAgICgqIFRoaXMgbWF5IHJldHVybiBOYU4uLi4gKilcbiAgICBtZXRob2QgY29uY2F0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8zIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF80IDpcbiAgICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxvY2FsZUNvbXBhcmUgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICBtZXRob2QgX21hdGNoIDogcmVnRXhwIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZV9mb3JtIDogbm9ybWFsaXphdGlvbiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlIDogcmVnRXhwIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2Vfc3RyaW5nIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNlYXJjaCA6IHJlZ0V4cCB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0IDoganNfc3RyaW5nIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X2xpbWl0ZWQgOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cCA6IHJlZ0V4cCB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHBMaW1pdGVkIDogcmVnRXhwIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmcgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmdfdG9FbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRyaW0gOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgYW5kIHJlZ0V4cCA9IG9iamVjdFxuICAgIG1ldGhvZCBleGVjIDoganNfc3RyaW5nIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2QgdGVzdCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc291cmNlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGdsb2JhbCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlQ2FzZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbXVsdGlsaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBsYXN0SW5kZXggOiBpbnQgcHJvcFxuICBlbmRcblxuICBhbmQgbm9ybWFsaXphdGlvbiA9IGpzX3N0cmluZ1xuXG4gICgqIHN0cmluZyBpcyB1c2VkIGJ5IHBweF9qcywgaXQgbmVlZHMgdG8gY29tZSBiZWZvcmUgYW55IHVzZSBvZiB0aGVcbiAgICAgbmV3IHN5bnRheCBpbiB0aGlzIGZpbGUgKilcbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgbGV0IG5mYyA9IHN0cmluZyBcIk5GQ1wiXG5cbiAgbGV0IG5mZCA9IHN0cmluZyBcIk5GRFwiXG5cbiAgbGV0IG5ma2MgPSBzdHJpbmcgXCJORktDXCJcblxuICBsZXQgbmZrZCA9IHN0cmluZyBcIk5GS0RcIlxuZW5kXG5cbmluY2x1ZGUgSnNcblxuY2xhc3MgdHlwZSBzdHJpbmdfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBmcm9tQ2hhckNvZGUgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBzdHJpbmdfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9TdHJpbmdcblxubGV0IHJlZ0V4cCA9IFVuc2FmZS5nbG9iYWwjIy5fUmVnRXhwXG5cbmxldCByZWdFeHBfY29weSA9IHJlZ0V4cFxuXG5sZXQgcmVnRXhwX3dpdGhGbGFncyA9IHJlZ0V4cFxuXG5jbGFzcyB0eXBlIFsnYV0ganNfYXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgY29uY2F0IDogJ2EganNfYXJyYXkgdCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgam9pbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcG9wIDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgcHVzaCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHJldmVyc2UgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2hpZnQgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydCA6ICgnYSAtPiAnYSAtPiBudW1iZXJfdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnRfYXNTdHJpbmdzIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8xIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzIgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMyA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV80IDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNvbWUgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBldmVyeSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvckVhY2ggOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1hcCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGZpbHRlciA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VfaW5pdCA6ICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2UgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHRfaW5pdCA6XG4gICAgKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0IDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5lbmRcblxubGV0IG9iamVjdF9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBvYmplY3Rfa2V5cyBvIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IG9iamVjdF9jb25zdHJ1Y3RvciMja2V5cyBvXG5cbmxldCBhcnJheV9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fQXJyYXlcblxubGV0IGFycmF5X2VtcHR5ID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2xlbmd0aCA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9nZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gVW5zYWZlLmdldFxuXG5sZXQgYXJyYXlfc2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBVbnNhZmUuc2V0XG5cbmxldCBhcnJheV9tYXBfcG9seSA6XG4gICAgJ2EgI2pzX2FycmF5IHQgLT4gKCdhIC0+IGludCAtPiAnYSAjanNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgI2pzX2FycmF5IHQgPVxuIGZ1biBhIGNiIC0+IChVbnNhZmUuY29lcmNlIGEpIyNtYXAgY2JcblxubGV0IGFycmF5X21hcCBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBfaWR4IF8gLT4gZiB4KSlcblxubGV0IGFycmF5X21hcGkgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggaWR4IF8gLT4gZiBpZHggeCkpXG5cbmNsYXNzIHR5cGUgbWF0Y2hfcmVzdWx0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2pzX3N0cmluZyB0XSBqc19hcnJheVxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlucHV0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBzdHJfYXJyYXkgOiBzdHJpbmdfYXJyYXkgdCAtPiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gVW5zYWZlLmNvZXJjZVxuXG5sZXQgbWF0Y2hfcmVzdWx0IDogbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IC0+IG1hdGNoX3Jlc3VsdCB0ID0gVW5zYWZlLmNvZXJjZVxuXG5jbGFzcyB0eXBlIGRhdGUgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVUaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB2YWx1ZU9mIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0Z1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0U2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ1NlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lem9uZU9mZnNldCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZ1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0hvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDU2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRvVVRDU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0lTT1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9KU09OIDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZGF0ZV9jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21vbnRoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfZGF5IDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfaG91ciA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbWluIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfc2VjIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21zIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgbm93IDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBkYXRlX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRGF0ZVxuXG5sZXQgZGF0ZSA6IGRhdGVfY29uc3RyIHQgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ub3cgOiBkYXRlIHQgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZnJvbVRpbWVWYWx1ZSA6IChudW1iZXJfdCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21vbnRoIDogKGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9kYXkgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ob3VyIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21pbiA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfc2VjIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbXMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID1cbiAgZGF0ZV9jb25zdHJcblxuY2xhc3MgdHlwZSBtYXRoID0gb2JqZWN0XG4gIG1ldGhvZCBfRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMTAgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cyRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzEwRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BJIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDFfMl8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuMiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY2VpbCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBleHAgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGZsb29yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBsb2cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcG93IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByYW5kb20gOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJvdW5kIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNxcnQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgbWF0aCA9IFVuc2FmZS5nbG9iYWwjIy5fTWF0aFxuXG5jbGFzcyB0eXBlIGVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFjayA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBlcnJvcl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Vycm9yXG5cbm1vZHVsZSBKc19lcnJvciA9IHN0cnVjdFxuICB0eXBlIGVycm9yX3QgPSBlcnJvciB0XG5cbiAgaW5jbHVkZSBKc29vX3J1bnRpbWUuRXJyb3JcblxuICBleHRlcm5hbCBvZl9lcnJvciA6IGVycm9yX3QgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuICBleHRlcm5hbCB0b19lcnJvciA6IHQgLT4gZXJyb3JfdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgbmFtZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm5hbWVcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm1lc3NhZ2VcblxuICBsZXQgc3RhY2sgKGUgOiB0KSA6IHN0cmluZyBvcHRpb24gPVxuICAgIE9wdC50b19vcHRpb24gKE9wdC5tYXAgKHRvX2Vycm9yIGUpIyMuc3RhY2sgdG9fc3RyaW5nKVxuXG4gIGxldCB0b19zdHJpbmcgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjI3RvU3RyaW5nXG5lbmRcblxubW9kdWxlIE1hZ2ljID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBleGNlcHRpb24gRXJyb3Igb2YgZXJyb3IgdFxuICBlbmRcblxuICB0eXBlICgnYSwgJ2IpIGVxID0gRXEgOiAoJ2EsICdhKSBlcVxuXG4gIGxldCAoZXEgOiAoZXJyb3IgdCwgSnNfZXJyb3IudCkgZXEpID0gT2JqLm1hZ2ljIEVxXG5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGVxIHdpdGhcbiAgICB8IEVxIC0+XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgZXhjZXB0aW9uIEVycm9yID0gSnNfZXJyb3IuRXhuXG4gICAgICAgIGVuZCA6IFQpXG5cbiAgbW9kdWxlIEVycm9yID0gKHZhbCBtIDogVClcbmVuZFxuXG5pbmNsdWRlIE1hZ2ljLkVycm9yXG5cbmxldCByYWlzZV9qc19lcnJvciBlID0gSnNfZXJyb3IucmFpc2VfIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgc3RyaW5nX29mX2Vycm9yIGUgPSBKc19lcnJvci50b19zdHJpbmcgKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBleG5fd2l0aF9qc19iYWNrdHJhY2UgPSBKc19lcnJvci5hdHRhY2hfanNfYmFja3RyYWNlXG5cbmV4dGVybmFsIGpzX2Vycm9yX29mX2V4biA6IGV4biAtPiBlcnJvciB0IG9wdCA9IFwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cIlxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IF9KU09OIDoganNvbiB0ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBkZWNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZGVjb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IHVuZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnVuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5leHRlcm5hbCBib29sIDogYm9vbCAtPiBib29sIHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuZXh0ZXJuYWwgdG9fYm9vbCA6IGJvb2wgdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG5leHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+ICdhIGpzX2FycmF5IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2FycmF5IDogJ2EganNfYXJyYXkgdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbmV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB0b19ieXRlc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuZXh0ZXJuYWwgZmxvYXQgOiBmbG9hdCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBudW1iZXJfdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IG51bWJlciB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiBudW1iZXIgdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIGludDMyIDogaW50MzIgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbmV4dGVybmFsIHRvX2ludDMyIDogbnVtYmVyX3QgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG5leHRlcm5hbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBudW1iZXJfdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdHlwZW9mIDogXyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbmV4dGVybmFsIGluc3RhbmNlb2YgOiBfIHQgLT4gXyBjb25zdHIgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxubGV0IGlzTmFOIChpIDogJ2EpIDogYm9vbCA9XG4gIHRvX2Jvb2wgKFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuaXNOYU4gW3wgVW5zYWZlLmluamVjdCBpIHxdKVxuXG5sZXQgcGFyc2VJbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBpbnQgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VJbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlSW50XCIgZWxzZSBzXG5cbmxldCBwYXJzZUZsb2F0IChzIDoganNfc3RyaW5nIHQpIDogbnVtYmVyX3QgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VGbG9hdCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VGbG9hdFwiIGVsc2Ugc1xuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEpzX2Vycm9yLkV4biBlIC0+IFNvbWUgKEpzX2Vycm9yLnRvX3N0cmluZyBlKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGUgLT5cbiAgICAgIGxldCBlIDogPCAuLiA+IHQgPSBPYmoubWFnaWMgZSBpblxuICAgICAgaWYgaW5zdGFuY2VvZiBlIGFycmF5X2NvbnN0cnVjdG9yIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX3N0cmluZyBlIyN0b1N0cmluZykpXG5cbmxldCBleHBvcnRfanMgKGZpZWxkIDoganNfc3RyaW5nIHQpIHggPVxuICBVbnNhZmUuc2V0XG4gICAgKFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJqc29vX2V4cG9ydHNcIilcbiAgICBmaWVsZFxuICAgIChpZiBTdHJpbmcuZXF1YWwgKEpzLnRvX3N0cmluZyAodHlwZW9mIChPYmoubWFnaWMgeCkpKSBcImZ1bmN0aW9uXCJcbiAgICAgICAgKCogZnVuY3Rpb24gd2l0aCBhcml0eS9sZW5ndGggZXF1YWwgdG8gemVybyBhcmUgYWxyZWFkeSB3cmFwcGVkICopXG4gICAgICAgICYmIFVuc2FmZS5nZXQgKE9iai5tYWdpYyB4KSAoSnMuc3RyaW5nIFwibGVuZ3RoXCIpID4gMFxuICAgICB0aGVuIE9iai5tYWdpYyAod3JhcF9jYWxsYmFjayAoT2JqLm1hZ2ljIHgpKVxuICAgICBlbHNlIHgpXG5cbmxldCBleHBvcnQgZmllbGQgeCA9IGV4cG9ydF9qcyAoc3RyaW5nIGZpZWxkKSB4XG5cbmxldCBleHBvcnRfYWxsIG9iaiA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgb2JqIGluXG4gIGtleXMjI2ZvckVhY2hcbiAgICAod3JhcF9jYWxsYmFjayAoZnVuIChrZXkgOiBqc19zdHJpbmcgdCkgXyBfIC0+IGV4cG9ydF9qcyBrZXkgKFVuc2FmZS5nZXQgb2JqIGtleSkpKVxuXG4oKioqKilcblxuKCogREVQUkVDQVRFRCAqKVxuXG50eXBlIGZsb2F0X3Byb3AgPSBudW1iZXJfdCBwcm9wXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydub2RlXSBub2RlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGxpc3Rfb2Zfbm9kZUxpc3QgKG5vZGVMaXN0IDogJ2Egbm9kZUxpc3QgdCkgPVxuICBsZXQgbGVuZ3RoID0gbm9kZUxpc3QjIy5sZW5ndGggaW5cbiAgbGV0IHJlYyBhZGRfaXRlbSBhY2MgaSA9XG4gICAgaWYgaSA8IGxlbmd0aFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKG5vZGVMaXN0IyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhZGRfaXRlbSBhY2MgKGkgKyAxKVxuICAgICAgfCBTb21lIGUgLT4gYWRkX2l0ZW0gKGUgOjogYWNjKSAoaSArIDEpXG4gICAgZWxzZSBMaXN0LnJldiBhY2NcbiAgaW5cbiAgYWRkX2l0ZW0gW10gMFxuXG50eXBlIG5vZGVUeXBlID1cbiAgfCBPVEhFUlxuICAoKiBXaWxsIG5vdCBoYXBwZW4gKilcbiAgfCBFTEVNRU5UXG4gIHwgQVRUUklCVVRFXG4gIHwgVEVYVFxuICB8IENEQVRBX1NFQ1RJT05cbiAgfCBFTlRJVFlfUkVGRVJFTkNFXG4gIHwgRU5USVRZXG4gIHwgUFJPQ0VTU0lOR19JTlNUUlVDVElPTlxuICB8IENPTU1FTlRcbiAgfCBET0NVTUVOVFxuICB8IERPQ1VNRU5UX1RZUEVcbiAgfCBET0NVTUVOVF9GUkFHTUVOVFxuICB8IE5PVEFUSU9OXG5cbm1vZHVsZSBEb2N1bWVudFBvc2l0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIHR5cGUgbWFzayA9IGludFxuXG4gIGxldCBkaXNjb25uZWN0ZWQgPSAweDAxXG5cbiAgbGV0IHByZWNlZGluZyA9IDB4MDJcblxuICBsZXQgZm9sbG93aW5nID0gMHgwNFxuXG4gIGxldCBjb250YWlucyA9IDB4MDhcblxuICBsZXQgY29udGFpbmVkX2J5ID0gMHgxMFxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9zcGVjaWZpYyA9IDB4MjBcblxuICBsZXQgaGFzIHQgbWFzayA9IHQgbGFuZCBtYXNrID0gbWFza1xuXG4gIGxldCBhZGQgeCB5ID0geCBsb3IgeVxuXG4gIGxldCAoICsgKSA9IGFkZFxuZW5kXG5cbmNsYXNzIHR5cGUgbm9kZSA9IG9iamVjdFxuICBtZXRob2Qgbm9kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVUeXBlIDogbm9kZVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBub2RlIG5vZGVMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0QmVmb3JlIDogbm9kZSB0IC0+IG5vZGUgdCBvcHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBoYXNDaGlsZE5vZGVzIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgY2xvbmVOb2RlIDogYm9vbCB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIDogbm9kZSB0IC0+IERvY3VtZW50UG9zaXRpb24udCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cE5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cFByZWZpeCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGFwcGVuZENoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjYXBwZW5kQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlbW92ZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjcmVtb3ZlQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlcGxhY2VDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0KSA9XG4gIGlnbm9yZSAocCMjcmVwbGFjZUNoaWxkIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0KSlcblxubGV0IGluc2VydEJlZm9yZSAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0IG9wdCkgPVxuICBpZ25vcmUgKHAjI2luc2VydEJlZm9yZSAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCBvcHQpKVxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbQXR0cl0gb2JqZWN0cy4gKilcbmNsYXNzIHR5cGUgYXR0ciA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlY2lmaWVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyRWxlbWVudCA6IGVsZW1lbnQgdCBwcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW05hbWVkTm9kZU1hcF0gb2JqZWN0cy4gKilcbmFuZCBbJ25vZGVdIG5hbWVkTm9kZU1hcCA9IG9iamVjdFxuICBtZXRob2QgZ2V0TmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXROYW1lZEl0ZW0gOiAnbm9kZSB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlTmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbRWxlbWVudF0gb2JqZWN0cy4gKilcbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCB0YWdOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGVOUyA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0ciBuYW1lZE5vZGVNYXAgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBjaGFyYWN0ZXJEYXRhID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJqc19zdHJpbmdEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZERhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0RGF0YSA6IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRGF0YSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGNvbW1lbnQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgdGV4dCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSBkb2N1bWVudEZyYWdtZW50ID0gbm9kZVxuXG5jbGFzcyB0eXBlIFsnZWxlbWVudF0gZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6ICdlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVEb2N1bWVudEZyYWdtZW50IDogZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50TlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dE5vZGUgOiBqc19zdHJpbmcgdCAtPiB0ZXh0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDb21tZW50IDoganNfc3RyaW5nIHQgLT4gY29tbWVudCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGltcG9ydE5vZGUgOiBlbGVtZW50IHQgLT4gYm9vbCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBhZG9wdE5vZGUgOiBlbGVtZW50IHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub2RlX3R5cGUgPVxuICB8IEVsZW1lbnQgb2YgZWxlbWVudCB0XG4gIHwgQXR0ciBvZiBhdHRyIHRcbiAgfCBUZXh0IG9mIHRleHQgdFxuICB8IE90aGVyIG9mIG5vZGUgdFxuXG5sZXQgbm9kZVR5cGUgZSA9XG4gIG1hdGNoIGUjIy5ub2RlVHlwZSB3aXRoXG4gIHwgRUxFTUVOVCAtPiBFbGVtZW50IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQVRUUklCVVRFIC0+IEF0dHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBDREFUQV9TRUNUSU9OIHwgVEVYVCAtPiBUZXh0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgXyAtPiBPdGhlciAoZSA6PiBub2RlIHQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgY2FzdCAoZSA6ICNub2RlIEpzLnQpIHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSB0IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgZWxlbWVudCBlIDogZWxlbWVudCBKcy50IEpzLm9wdCA9IGNhc3QgZSBFTEVNRU5UXG5cbiAgbGV0IHRleHQgZSA6IHRleHQgSnMudCBKcy5vcHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSBURVhUIHx8IGUjIy5ub2RlVHlwZSA9PSBDREFUQV9TRUNUSU9OXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGF0dHIgZSA6IGF0dHIgSnMudCBKcy5vcHQgPSBjYXN0IGUgQVRUUklCVVRFXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IgLT4gYm9vbCB0KSBtZXRoX2NhbGxiYWNrIG9wdFxuKCoqIFRoZSB0eXBlIG9mIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9ucy4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlclxuICAgICAgWydhXSBpcyB0aGUgdHlwZSBvZiB0aGUgdGFyZ2V0IG9iamVjdDsgdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIFsnYl0gaXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IG9iamVjdC4gKilcblxuY2xhc3MgdHlwZSBbJ2FdIGV2ZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gICgqIExlZ2FjeSBtZXRob2RzICopXG4gIG1ldGhvZCBzcmNFbGVtZW50IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6ICdiIEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IEpzLm51bGxcblxubGV0IHdpbmRvd19ldmVudCAoKSA6ICdhICNldmVudCB0ID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcImV2ZW50XCJcblxuKCogVGhlIGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0IG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkgd2hlblxuICAgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lci4uLiAqKVxubGV0IGhhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLmNhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZC4gKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGZ1bGxfaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUubWV0aF9jYWxsYmFjayAoZnVuIHRoaXMgZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZCAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGludm9rZV9oYW5kbGVyIChmIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIpICh0aGlzIDogJ2EpIChldmVudCA6ICdiKSA6IGJvb2wgdCA9XG4gIEpzLlVuc2FmZS5jYWxsIGYgdGhpcyBbfCBKcy5VbnNhZmUuaW5qZWN0IGV2ZW50IHxdXG5cbmxldCBldmVudFRhcmdldCAoZSA6ICg8IC4uID4gYXMgJ2EpICNldmVudCB0KSA6ICdhIHQgPVxuICBsZXQgdGFyZ2V0ID1cbiAgICBPcHQuZ2V0IGUjIy50YXJnZXQgKGZ1biAoKSAtPiBPcHQuZ2V0IGUjIy5zcmNFbGVtZW50IChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgaW5cbiAgaWYgSnMuaW5zdGFuY2VvZiB0YXJnZXQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Ob2RlXG4gIHRoZW5cbiAgICAoKiBXb3JrYXJvdW5kIGZvciBTYWZhcmkgYnVnICopXG4gICAgbGV0IHRhcmdldCcgOiBub2RlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlIHRhcmdldCBpblxuICAgIGlmIHRhcmdldCcjIy5ub2RlVHlwZSA9PSBURVhUXG4gICAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChPcHQuZ2V0IHRhcmdldCcjIy5wYXJlbnROb2RlIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICBlbHNlIHRhcmdldFxuICBlbHNlIHRhcmdldFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBtYWtlIHMgPSBKcy5zdHJpbmcgc1xuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSB1bml0IC0+IHVuaXRcblxuY2xhc3MgdHlwZSBldmVudF9saXN0ZW5lcl9vcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBjYXB0dXJlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2UgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGFzc2l2ZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5hZGRFdmVudExpc3RlbmVyKVxuICB0aGVuXG4gICAgbGV0IGV2ID0gKEpzLnN0cmluZyBcIm9uXCIpIyNjb25jYXQgdHlwIGluXG4gICAgbGV0IGNhbGxiYWNrIGUgPSBKcy5VbnNhZmUuY2FsbCAoaCwgZSwgW3x8XSkgaW5cbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYXR0YWNoRXZlbnQgZXYgY2FsbGJhY2sgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2RldGFjaEV2ZW50IGV2IGNhbGxiYWNrXG4gIGVsc2VcbiAgICBsZXQgb3B0cyA6IGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIGxldCBpdGVyIHQgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGIgLT4gZiBiXG4gICAgaW5cbiAgICBpdGVyIGNhcHR1cmUgKGZ1biBiIC0+IG9wdHMjIy5jYXB0dXJlIDo9IGIpO1xuICAgIGl0ZXIgb25jZSAoZnVuIGIgLT4gb3B0cyMjLm9uY2UgOj0gYik7XG4gICAgaXRlciBwYXNzaXZlIChmdW4gYiAtPiBvcHRzIyMucGFzc2l2ZSA6PSBiKTtcbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYWRkRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNyZW1vdmVFdmVudExpc3RlbmVyIHR5cCBoIG9wdHNcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgaCBjYXB0ID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgdHlwIH5jYXB0dXJlOmNhcHQgaFxuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBpZCA9IGlkICgpXG5cbmxldCBwcmV2ZW50RGVmYXVsdCBldiA9XG4gIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnByZXZlbnREZWZhdWx0ICgqIElFIGhhY2sgKilcbiAgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBldikjI3ByZXZlbnREZWZhdWx0XG4gIGVsc2UgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucmV0dXJuVmFsdWUgOj0gSnMuYm9vbCBmYWxzZVxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgP2J1YmJsZXMgP2NhbmNlbGFibGUgP2RldGFpbCB0eXAgPVxuICBsZXQgb3B0X2l0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvcHRzID0gVW5zYWZlLm9iaiBbfHxdIGluXG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuYnViYmxlcyA6PSBib29sIHgpIGJ1YmJsZXM7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuY2FuY2VsYWJsZSA6PSBib29sIHgpIGNhbmNlbGFibGU7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuZGV0YWlsIDo9IHNvbWUgeCkgZGV0YWlsO1xuICBsZXQgY29uc3RyIDpcbiAgICAgICggICAoJ2EsICdiKSAjY3VzdG9tRXZlbnQgSnMudCBFdmVudC50eXBcbiAgICAgICAtPiA8IGRldGFpbCA6ICdiIG9wdCBwcm9wID4gdFxuICAgICAgIC0+ICgnYSwgJ2IpIGN1c3RvbUV2ZW50IHQpXG4gICAgICBjb25zdHIgPVxuICAgIFVuc2FmZS5nbG9iYWwjIy5fQ3VzdG9tRXZlbnRcbiAgaW5cbiAgbmV3JWpzIGNvbnN0ciB0eXAgb3B0c1xuXG4oKiBJRSA8IDkgKilcblxuY2xhc3MgdHlwZSBzdHJpbmdMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gSnNcblxudHlwZSB1aW50MzIgPSBmbG9hdFxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcbmVuZFxuXG5sZXQgYXJyYXlCdWZmZXIgOiAoaW50IC0+IGFycmF5QnVmZmVyIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fQXJyYXlCdWZmZXJcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlclZpZXcgPSBvYmplY3RcbiAgbWV0aG9kIGJ1ZmZlciA6IGFycmF5QnVmZmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB0eXBlZEFycmF5ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIF9CWVRFU19QRVJfRUxFTUVOVCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldF9mcm9tQXJyYXkgOiAnYSBqc19hcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0X2Zyb21UeXBlZEFycmF5IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXkgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5X3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gICgqIFRoaXMgZmFrZSBtZXRob2QgaXMgbmVlZGVkIGZvciB0eXBpbmcgcHVycG9zZXMuXG4gICAgIFdpdGhvdXQgaXQsIFsnYl0gd291bGQgbm90IGJlIGNvbnN0cmFpbmVkLiAqKVxuICBtZXRob2QgX2NvbnRlbnRfdHlwZV8gOiAnYiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgaW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDMyQXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQ2NEFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZWRBcnJheVxuXG5leHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHRcbiAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxubGV0IGludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfaW5CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfaW5CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCBpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21BcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2luQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9pbkJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCBpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21BcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2luQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9pbkJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21BcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2luQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21BcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2luQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBzZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPVxuIGZ1biBhIGkgdiAtPiBhcnJheV9zZXQgKFVuc2FmZS5jb2VyY2UgYSkgaSB2XG5cbmxldCBnZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxubGV0IHVuc2FmZV9nZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5jbGFzcyB0eXBlIGRhdGFWaWV3ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIGdldEludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzIgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyXyA6IGludCAtPiBib29sIHQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzJfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0XyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzJfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMiA6IGludCAtPiB1aW50MzIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMl8gOiBpbnQgLT4gdWludDMyIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMl8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0XyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGRhdGFWaWV3ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9EYXRhVmlld1xuXG5sZXQgZGF0YVZpZXdfaW5CdWZmZXIgPSBkYXRhVmlld1xuXG5tb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyIEpzLnQgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpdiBkb2MgOiBkaXZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpdlwiXG5cbmxldCBjcmVhdGVFbWJlZCBkb2MgOiBlbWJlZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1iZWRcIlxuXG5sZXQgY3JlYXRlUCBkb2MgOiBwYXJhZ3JhcGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBcIlxuXG5sZXQgY3JlYXRlSDEgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDFcIlxuXG5sZXQgY3JlYXRlSDIgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDJcIlxuXG5sZXQgY3JlYXRlSDMgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDNcIlxuXG5sZXQgY3JlYXRlSDQgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDRcIlxuXG5sZXQgY3JlYXRlSDUgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDVcIlxuXG5sZXQgY3JlYXRlSDYgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDZcIlxuXG5sZXQgY3JlYXRlUSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicVwiXG5cbmxldCBjcmVhdGVCbG9ja3F1b3RlIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJibG9ja3F1b3RlXCJcblxubGV0IGNyZWF0ZVByZSBkb2MgOiBwcmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInByZVwiXG5cbmxldCBjcmVhdGVCciBkb2MgOiBickVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYnJcIlxuXG5sZXQgY3JlYXRlSHIgZG9jIDogaHJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhyXCJcblxubGV0IGNyZWF0ZUlucyBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImluc1wiXG5cbmxldCBjcmVhdGVEZWwgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWxcIlxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhbmNob3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlSW1nIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWdcIlxuXG5sZXQgY3JlYXRlT2JqZWN0IGRvYyA6IG9iamVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2JqZWN0XCJcblxubGV0IGNyZWF0ZVBhcmFtIGRvYyA6IHBhcmFtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXJhbVwiXG5cbmxldCBjcmVhdGVNYXAgZG9jIDogbWFwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXBcIlxuXG5sZXQgY3JlYXRlQXJlYSBkb2MgOiBhcmVhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhcmVhXCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVUYWJsZSBkb2MgOiB0YWJsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGFibGVcIlxuXG5sZXQgY3JlYXRlQ2FwdGlvbiBkb2MgOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhcHRpb25cIlxuXG5sZXQgY3JlYXRlQ29sIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xcIlxuXG5sZXQgY3JlYXRlQ29sZ3JvdXAgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbGdyb3VwXCJcblxubGV0IGNyZWF0ZVRoZWFkIGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhlYWRcIlxuXG5sZXQgY3JlYXRlVGZvb3QgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Zm9vdFwiXG5cbmxldCBjcmVhdGVUYm9keSBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRib2R5XCJcblxubGV0IGNyZWF0ZVRyIGRvYyA6IHRhYmxlUm93RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0clwiXG5cbmxldCBjcmVhdGVUaCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoXCJcblxubGV0IGNyZWF0ZVRkIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGRcIlxuXG5sZXQgY3JlYXRlU3ViIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3ViXCJcblxubGV0IGNyZWF0ZVN1cCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1cFwiXG5cbmxldCBjcmVhdGVTcGFuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3BhblwiXG5cbmxldCBjcmVhdGVUdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInR0XCJcblxubGV0IGNyZWF0ZUkgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJpXCJcblxubGV0IGNyZWF0ZUIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiXCJcblxubGV0IGNyZWF0ZUJpZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJpZ1wiXG5cbmxldCBjcmVhdGVTbWFsbCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNtYWxsXCJcblxubGV0IGNyZWF0ZUVtIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1cIlxuXG5sZXQgY3JlYXRlU3Ryb25nIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3Ryb25nXCJcblxubGV0IGNyZWF0ZUNpdGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjaXRlXCJcblxubGV0IGNyZWF0ZURmbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRmblwiXG5cbmxldCBjcmVhdGVDb2RlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY29kZVwiXG5cbmxldCBjcmVhdGVTYW1wIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic2FtcFwiXG5cbmxldCBjcmVhdGVLYmQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJrYmRcIlxuXG5sZXQgY3JlYXRlVmFyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidmFyXCJcblxubGV0IGNyZWF0ZUFiYnIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhYmJyXCJcblxubGV0IGNyZWF0ZURkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGRcIlxuXG5sZXQgY3JlYXRlRHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkdFwiXG5cbmxldCBjcmVhdGVOb3NjcmlwdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcIm5vc2NyaXB0XCJcblxubGV0IGNyZWF0ZUFkZHJlc3MgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhZGRyZXNzXCJcblxubGV0IGNyZWF0ZUZyYW1lc2V0IGRvYyA6IGZyYW1lU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZXNldFwiXG5cbmxldCBjcmVhdGVGcmFtZSBkb2MgOiBmcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVcIlxuXG5sZXQgY3JlYXRlSWZyYW1lIGRvYyA6IGlGcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaWZyYW1lXCJcblxubGV0IGNyZWF0ZUF1ZGlvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhdWRpb1wiXG5cbmxldCBjcmVhdGVWaWRlbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlkZW9cIlxuXG5leGNlcHRpb24gQ2FudmFzX25vdF9hdmFpbGFibGVcblxubGV0IGNyZWF0ZUNhbnZhcyBkb2MgOiBjYW52YXNFbGVtZW50IHQgPVxuICBsZXQgYyA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FudmFzXCIgaW5cbiAgaWYgbm90IChPcHQudGVzdCBjIyMuZ2V0Q29udGV4dCkgdGhlbiByYWlzZSBDYW52YXNfbm90X2F2YWlsYWJsZTtcbiAgY1xuXG5sZXQgaHRtbF9lbGVtZW50IDogaHRtbEVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0hUTUxFbGVtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCA6ICNEb20ubm9kZSBKcy50IC0+IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiBodG1sX2VsZW1lbnQpKVxuICAgIHRoZW5cbiAgICAgICgqIGllIDwgOSBkb2VzIG5vdCBoYXZlIEhUTUxFbGVtZW50OiB3ZSBoYXZlIHRvIGNoZWF0IHRvIGNoZWNrXG4gICAgICAgICB0aGF0IHNvbWV0aGluZyBpcyBhbiBodG1sIGVsZW1lbnQgKilcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5pbm5lckhUTUwpKVxuICAgICAgdGhlbiBKcy5udWxsXG4gICAgICBlbHNlIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgSnMuaW5zdGFuY2VvZiBlIGh0bWxfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSB0YWcgKGUgOiAjZWxlbWVudCB0KSA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlID0gdW5zYWZlQ29lcmNlIFwiYVwiIGVcblxuICBsZXQgYXJlYSBlID0gdW5zYWZlQ29lcmNlIFwiYXJlYVwiIGVcblxuICBsZXQgYmFzZSBlID0gdW5zYWZlQ29lcmNlIFwiYmFzZVwiIGVcblxuICBsZXQgYmxvY2txdW90ZSBlID0gdW5zYWZlQ29lcmNlIFwiYmxvY2txdW90ZVwiIGVcblxuICBsZXQgYm9keSBlID0gdW5zYWZlQ29lcmNlIFwiYm9keVwiIGVcblxuICBsZXQgYnIgZSA9IHVuc2FmZUNvZXJjZSBcImJyXCIgZVxuXG4gIGxldCBidXR0b24gZSA9IHVuc2FmZUNvZXJjZSBcImJ1dHRvblwiIGVcblxuICBsZXQgY2FudmFzIGUgPSB1bnNhZmVDb2VyY2UgXCJjYW52YXNcIiBlXG5cbiAgbGV0IGNhcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcImNhcHRpb25cIiBlXG5cbiAgbGV0IGNvbCBlID0gdW5zYWZlQ29lcmNlIFwiY29sXCIgZVxuXG4gIGxldCBjb2xncm91cCBlID0gdW5zYWZlQ29lcmNlIFwiY29sZ3JvdXBcIiBlXG5cbiAgbGV0IGRlbCBlID0gdW5zYWZlQ29lcmNlIFwiZGVsXCIgZVxuXG4gIGxldCBkaXYgZSA9IHVuc2FmZUNvZXJjZSBcImRpdlwiIGVcblxuICBsZXQgZGwgZSA9IHVuc2FmZUNvZXJjZSBcImRsXCIgZVxuXG4gIGxldCBmaWVsZHNldCBlID0gdW5zYWZlQ29lcmNlIFwiZmllbGRzZXRcIiBlXG5cbiAgbGV0IGVtYmVkIGUgPSB1bnNhZmVDb2VyY2UgXCJlbWJlZFwiIGVcblxuICBsZXQgZm9ybSBlID0gdW5zYWZlQ29lcmNlIFwiZm9ybVwiIGVcblxuICBsZXQgZnJhbWVzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lc2V0XCIgZVxuXG4gIGxldCBmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVcIiBlXG5cbiAgbGV0IGgxIGUgPSB1bnNhZmVDb2VyY2UgXCJoMVwiIGVcblxuICBsZXQgaDIgZSA9IHVuc2FmZUNvZXJjZSBcImgyXCIgZVxuXG4gIGxldCBoMyBlID0gdW5zYWZlQ29lcmNlIFwiaDNcIiBlXG5cbiAgbGV0IGg0IGUgPSB1bnNhZmVDb2VyY2UgXCJoNFwiIGVcblxuICBsZXQgaDUgZSA9IHVuc2FmZUNvZXJjZSBcImg1XCIgZVxuXG4gIGxldCBoNiBlID0gdW5zYWZlQ29lcmNlIFwiaDZcIiBlXG5cbiAgbGV0IGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcImhlYWRcIiBlXG5cbiAgbGV0IGhyIGUgPSB1bnNhZmVDb2VyY2UgXCJoclwiIGVcblxuICBsZXQgaHRtbCBlID0gdW5zYWZlQ29lcmNlIFwiaHRtbFwiIGVcblxuICBsZXQgaWZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJpZnJhbWVcIiBlXG5cbiAgbGV0IGltZyBlID0gdW5zYWZlQ29lcmNlIFwiaW1nXCIgZVxuXG4gIGxldCBpbnB1dCBlID0gdW5zYWZlQ29lcmNlIFwiaW5wdXRcIiBlXG5cbiAgbGV0IGlucyBlID0gdW5zYWZlQ29lcmNlIFwiaW5zXCIgZVxuXG4gIGxldCBsYWJlbCBlID0gdW5zYWZlQ29lcmNlIFwibGFiZWxcIiBlXG5cbiAgbGV0IGxlZ2VuZCBlID0gdW5zYWZlQ29lcmNlIFwibGVnZW5kXCIgZVxuXG4gIGxldCBsaSBlID0gdW5zYWZlQ29lcmNlIFwibGlcIiBlXG5cbiAgbGV0IGxpbmsgZSA9IHVuc2FmZUNvZXJjZSBcImxpbmtcIiBlXG5cbiAgbGV0IG1hcCBlID0gdW5zYWZlQ29lcmNlIFwibWFwXCIgZVxuXG4gIGxldCBtZXRhIGUgPSB1bnNhZmVDb2VyY2UgXCJtZXRhXCIgZVxuXG4gIGxldCBfb2JqZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJvYmplY3RcIiBlXG5cbiAgbGV0IG9sIGUgPSB1bnNhZmVDb2VyY2UgXCJvbFwiIGVcblxuICBsZXQgb3B0Z3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGdyb3VwXCIgZVxuXG4gIGxldCBvcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGlvblwiIGVcblxuICBsZXQgcCBlID0gdW5zYWZlQ29lcmNlIFwicFwiIGVcblxuICBsZXQgcGFyYW0gZSA9IHVuc2FmZUNvZXJjZSBcInBhcmFtXCIgZVxuXG4gIGxldCBwcmUgZSA9IHVuc2FmZUNvZXJjZSBcInByZVwiIGVcblxuICBsZXQgcSBlID0gdW5zYWZlQ29lcmNlIFwicVwiIGVcblxuICBsZXQgc2NyaXB0IGUgPSB1bnNhZmVDb2VyY2UgXCJzY3JpcHRcIiBlXG5cbiAgbGV0IHNlbGVjdCBlID0gdW5zYWZlQ29lcmNlIFwic2VsZWN0XCIgZVxuXG4gIGxldCBzdHlsZSBlID0gdW5zYWZlQ29lcmNlIFwic3R5bGVcIiBlXG5cbiAgbGV0IHRhYmxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0YWJsZVwiIGVcblxuICBsZXQgdGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcInRib2R5XCIgZVxuXG4gIGxldCB0ZCBlID0gdW5zYWZlQ29lcmNlIFwidGRcIiBlXG5cbiAgbGV0IHRleHRhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZXh0YXJlYVwiIGVcblxuICBsZXQgdGZvb3QgZSA9IHVuc2FmZUNvZXJjZSBcInRmb290XCIgZVxuXG4gIGxldCB0aCBlID0gdW5zYWZlQ29lcmNlIFwidGhcIiBlXG5cbiAgbGV0IHRoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aGVhZFwiIGVcblxuICBsZXQgdGl0bGUgZSA9IHVuc2FmZUNvZXJjZSBcInRpdGxlXCIgZVxuXG4gIGxldCB0ciBlID0gdW5zYWZlQ29lcmNlIFwidHJcIiBlXG5cbiAgbGV0IHVsIGUgPSB1bnNhZmVDb2VyY2UgXCJ1bFwiIGVcblxuICBsZXQgYXVkaW8gZSA9IHVuc2FmZUNvZXJjZSBcImF1ZGlvXCIgZVxuXG4gIGxldCB2aWRlbyBlID0gdW5zYWZlQ29lcmNlIFwidmlkZW9cIiBlXG5cbiAgbGV0IHVuc2FmZUNvZXJjZUV2ZW50IGNvbnN0ciAoZXYgOiAjZXZlbnQgdCkgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChkZWYgY29uc3RyKSAmJiBKcy5pbnN0YW5jZW9mIGV2IGNvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBldilcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgbW91c2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VFdmVudCBldlxuXG4gIGxldCBrZXlib2FyZEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9LZXlib2FyZEV2ZW50IGV2XG5cbiAgbGV0IHdoZWVsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1doZWVsRXZlbnQgZXZcblxuICBsZXQgbW91c2VTY3JvbGxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VTY3JvbGxFdmVudCBldlxuXG4gIGxldCBwb3BTdGF0ZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Qb3BTdGF0ZUV2ZW50IGV2XG5cbiAgbGV0IG1lc3NhZ2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTWVzc2FnZUV2ZW50IGV2XG5lbmRcblxuKCoqKiopXG5cbmxldCBldmVudFRhcmdldCA9IERvbS5ldmVudFRhcmdldFxuXG5sZXQgZXZlbnRSZWxhdGVkVGFyZ2V0IChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuZ2V0IGUjIy5yZWxhdGVkVGFyZ2V0IChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIEpzLnRvX3N0cmluZyBlIyMuX3R5cGUgd2l0aFxuICAgICAgfCBcIm1vdXNlb3ZlclwiIC0+IE9wdGRlZi5nZXQgZSMjLmZyb21FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBcIm1vdXNlb3V0XCIgLT4gT3B0ZGVmLmdldCBlIyMudG9FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBfIC0+IEpzLm51bGwpXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24nIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggZSMjLmNsaWVudFggKyBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0XG4gICwgZSMjLmNsaWVudFkgKyBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcCApXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24gKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnBhZ2VYXG4gICAgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpXG4gICAgKGZ1biB4IC0+IE9wdGRlZi5jYXNlIGUjIy5wYWdlWSAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSkgKGZ1biB5IC0+IHgsIHkpKVxuXG5sZXQgZWxlbWVudENsaWVudFBvc2l0aW9uIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgciA9IGUjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy5sZWZ0KSAtIGJvZHkjIy5jbGllbnRMZWZ0IC0gaHRtbCMjLmNsaWVudExlZnRcbiAgLCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLnRvcCkgLSBib2R5IyMuY2xpZW50VG9wIC0gaHRtbCMjLmNsaWVudFRvcCApXG5cbmxldCBnZXREb2N1bWVudFNjcm9sbCAoKSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdCwgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3BcblxubGV0IGJ1dHRvblByZXNzZWQgKGV2IDogI21vdXNlRXZlbnQgSnMudCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIGV2IyMud2hpY2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBldiMjLmJ1dHRvbiB3aXRoXG4gICAgICB8IDEgLT4gTGVmdF9idXR0b25cbiAgICAgIHwgMiAtPiBSaWdodF9idXR0b25cbiAgICAgIHwgNCAtPiBNaWRkbGVfYnV0dG9uXG4gICAgICB8IF8gLT4gTm9fYnV0dG9uKVxuICAgIChmdW4geCAtPiB4KVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICA/Y2FwdHVyZVxuICAgID9vbmNlXG4gICAgP3Bhc3NpdmVcbiAgICBlXG4gICAgRXZlbnQud2hlZWxcbiAgICAoaGFuZGxlciAoZnVuIChlIDogbW91c2V3aGVlbEV2ZW50IHQpIC0+XG4gICAgICAgICBsZXQgZHggPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVggKGZ1biAoKSAtPiAwKSAvIDQwIGluXG4gICAgICAgICBsZXQgZHkgPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVkgKGZ1biAoKSAtPiBlIyMud2hlZWxEZWx0YSkgLyA0MCBpblxuICAgICAgICAgaCAoZSA6PiBtb3VzZUV2ZW50IHQpIH5keCB+ZHkpKVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIgZSBoIGNhcHQgPVxuICBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIH5jYXB0dXJlOmNhcHQgZSBoXG5cbigqKioqKilcblxubW9kdWxlIEtleWJvYXJkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFVuaWRlbnRpZmllZFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgS2V5QVxuICAgIHwgS2V5QlxuICAgIHwgS2V5Q1xuICAgIHwgS2V5RFxuICAgIHwgS2V5RVxuICAgIHwgS2V5RlxuICAgIHwgS2V5R1xuICAgIHwgS2V5SFxuICAgIHwgS2V5SVxuICAgIHwgS2V5SlxuICAgIHwgS2V5S1xuICAgIHwgS2V5TFxuICAgIHwgS2V5TVxuICAgIHwgS2V5TlxuICAgIHwgS2V5T1xuICAgIHwgS2V5UFxuICAgIHwgS2V5UVxuICAgIHwgS2V5UlxuICAgIHwgS2V5U1xuICAgIHwgS2V5VFxuICAgIHwgS2V5VVxuICAgIHwgS2V5VlxuICAgIHwgS2V5V1xuICAgIHwgS2V5WFxuICAgIHwgS2V5WVxuICAgIHwgS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgRGlnaXQwXG4gICAgfCBEaWdpdDFcbiAgICB8IERpZ2l0MlxuICAgIHwgRGlnaXQzXG4gICAgfCBEaWdpdDRcbiAgICB8IERpZ2l0NVxuICAgIHwgRGlnaXQ2XG4gICAgfCBEaWdpdDdcbiAgICB8IERpZ2l0OFxuICAgIHwgRGlnaXQ5XG4gICAgfCBNaW51c1xuICAgIHwgRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBUYWJcbiAgICB8IEVudGVyXG4gICAgfCBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IEVzY2FwZVxuICAgIHwgQmFja3NwYWNlXG4gICAgfCBJbnNlcnRcbiAgICB8IERlbGV0ZVxuICAgIHwgQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgQnJhY2tldExlZnRcbiAgICB8IEJyYWNrZXRSaWdodFxuICAgIHwgU2VtaWNvbG9uXG4gICAgfCBRdW90ZVxuICAgIHwgQmFja3F1b3RlXG4gICAgfCBCYWNrc2xhc2hcbiAgICB8IENvbW1hXG4gICAgfCBQZXJpb2RcbiAgICB8IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgRjFcbiAgICB8IEYyXG4gICAgfCBGM1xuICAgIHwgRjRcbiAgICB8IEY1XG4gICAgfCBGNlxuICAgIHwgRjdcbiAgICB8IEY4XG4gICAgfCBGOVxuICAgIHwgRjEwXG4gICAgfCBGMTFcbiAgICB8IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBOdW1wYWQwXG4gICAgfCBOdW1wYWQxXG4gICAgfCBOdW1wYWQyXG4gICAgfCBOdW1wYWQzXG4gICAgfCBOdW1wYWQ0XG4gICAgfCBOdW1wYWQ1XG4gICAgfCBOdW1wYWQ2XG4gICAgfCBOdW1wYWQ3XG4gICAgfCBOdW1wYWQ4XG4gICAgfCBOdW1wYWQ5XG4gICAgfCBOdW1wYWRNdWx0aXBseVxuICAgIHwgTnVtcGFkU3VidHJhY3RcbiAgICB8IE51bXBhZEFkZFxuICAgIHwgTnVtcGFkRGVjaW1hbFxuICAgIHwgTnVtcGFkRXF1YWxcbiAgICB8IE51bXBhZEVudGVyXG4gICAgfCBOdW1wYWREaXZpZGVcbiAgICB8IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBDb250cm9sTGVmdFxuICAgIHwgQ29udHJvbFJpZ2h0XG4gICAgfCBNZXRhTGVmdFxuICAgIHwgTWV0YVJpZ2h0XG4gICAgfCBTaGlmdExlZnRcbiAgICB8IFNoaWZ0UmlnaHRcbiAgICB8IEFsdExlZnRcbiAgICB8IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgQXJyb3dMZWZ0XG4gICAgfCBBcnJvd1JpZ2h0XG4gICAgfCBBcnJvd1VwXG4gICAgfCBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBQYWdlVXBcbiAgICB8IFBhZ2VEb3duXG4gICAgfCBIb21lXG4gICAgfCBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgVm9sdW1lTXV0ZVxuICAgIHwgVm9sdW1lRG93blxuICAgIHwgVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBNZWRpYVRyYWNrTmV4dFxuICAgIHwgTWVkaWFQbGF5UGF1c2VcbiAgICB8IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgQ29udGV4dE1lbnVcbiAgICB8IEJyb3dzZXJTZWFyY2hcbiAgICB8IEJyb3dzZXJIb21lXG4gICAgfCBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBCcm93c2VyUmVmcmVzaFxuICAgIHwgQnJvd3NlclN0b3BcbiAgICB8IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IE9TTGVmdFxuICAgIHwgT1NSaWdodFxuICAgIHwgU2Nyb2xsTG9ja1xuICAgIHwgUHJpbnRTY3JlZW5cbiAgICB8IEludGxCYWNrc2xhc2hcbiAgICB8IEludGxZZW5cbiAgICB8IFBhdXNlXG5cbiAgbGV0IHRyeV9jb2RlIHYgPVxuICAgIG1hdGNoIEpzLnRvX3N0cmluZyB2IHdpdGhcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IFwiS2V5QVwiIC0+IEtleUFcbiAgICB8IFwiS2V5QlwiIC0+IEtleUJcbiAgICB8IFwiS2V5Q1wiIC0+IEtleUNcbiAgICB8IFwiS2V5RFwiIC0+IEtleURcbiAgICB8IFwiS2V5RVwiIC0+IEtleUVcbiAgICB8IFwiS2V5RlwiIC0+IEtleUZcbiAgICB8IFwiS2V5R1wiIC0+IEtleUdcbiAgICB8IFwiS2V5SFwiIC0+IEtleUhcbiAgICB8IFwiS2V5SVwiIC0+IEtleUlcbiAgICB8IFwiS2V5SlwiIC0+IEtleUpcbiAgICB8IFwiS2V5S1wiIC0+IEtleUtcbiAgICB8IFwiS2V5TFwiIC0+IEtleUxcbiAgICB8IFwiS2V5TVwiIC0+IEtleU1cbiAgICB8IFwiS2V5TlwiIC0+IEtleU5cbiAgICB8IFwiS2V5T1wiIC0+IEtleU9cbiAgICB8IFwiS2V5UFwiIC0+IEtleVBcbiAgICB8IFwiS2V5UVwiIC0+IEtleVFcbiAgICB8IFwiS2V5UlwiIC0+IEtleVJcbiAgICB8IFwiS2V5U1wiIC0+IEtleVNcbiAgICB8IFwiS2V5VFwiIC0+IEtleVRcbiAgICB8IFwiS2V5VVwiIC0+IEtleVVcbiAgICB8IFwiS2V5VlwiIC0+IEtleVZcbiAgICB8IFwiS2V5V1wiIC0+IEtleVdcbiAgICB8IFwiS2V5WFwiIC0+IEtleVhcbiAgICB8IFwiS2V5WVwiIC0+IEtleVlcbiAgICB8IFwiS2V5WlwiIC0+IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IFwiRGlnaXQwXCIgLT4gRGlnaXQwXG4gICAgfCBcIkRpZ2l0MVwiIC0+IERpZ2l0MVxuICAgIHwgXCJEaWdpdDJcIiAtPiBEaWdpdDJcbiAgICB8IFwiRGlnaXQzXCIgLT4gRGlnaXQzXG4gICAgfCBcIkRpZ2l0NFwiIC0+IERpZ2l0NFxuICAgIHwgXCJEaWdpdDVcIiAtPiBEaWdpdDVcbiAgICB8IFwiRGlnaXQ2XCIgLT4gRGlnaXQ2XG4gICAgfCBcIkRpZ2l0N1wiIC0+IERpZ2l0N1xuICAgIHwgXCJEaWdpdDhcIiAtPiBEaWdpdDhcbiAgICB8IFwiRGlnaXQ5XCIgLT4gRGlnaXQ5XG4gICAgfCBcIk1pbnVzXCIgLT4gTWludXNcbiAgICB8IFwiRXF1YWxcIiAtPiBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFwiVGFiXCIgLT4gVGFiXG4gICAgfCBcIkVudGVyXCIgLT4gRW50ZXJcbiAgICB8IFwiU3BhY2VcIiAtPiBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IFwiRXNjYXBlXCIgLT4gRXNjYXBlXG4gICAgfCBcIkJhY2tzcGFjZVwiIC0+IEJhY2tzcGFjZVxuICAgIHwgXCJJbnNlcnRcIiAtPiBJbnNlcnRcbiAgICB8IFwiRGVsZXRlXCIgLT4gRGVsZXRlXG4gICAgfCBcIkNhcHNMb2NrXCIgLT4gQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgXCJCcmFja2V0TGVmdFwiIC0+IEJyYWNrZXRMZWZ0XG4gICAgfCBcIkJyYWNrZXRSaWdodFwiIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgXCJTZW1pY29sb25cIiAtPiBTZW1pY29sb25cbiAgICB8IFwiUXVvdGVcIiAtPiBRdW90ZVxuICAgIHwgXCJCYWNrcXVvdGVcIiAtPiBCYWNrcXVvdGVcbiAgICB8IFwiQmFja3NsYXNoXCIgLT4gQmFja3NsYXNoXG4gICAgfCBcIkNvbW1hXCIgLT4gQ29tbWFcbiAgICB8IFwiUGVyaW9kXCIgLT4gUGVyaW9kXG4gICAgfCBcIlNsYXNoXCIgLT4gU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBcIkYxXCIgLT4gRjFcbiAgICB8IFwiRjJcIiAtPiBGMlxuICAgIHwgXCJGM1wiIC0+IEYzXG4gICAgfCBcIkY0XCIgLT4gRjRcbiAgICB8IFwiRjVcIiAtPiBGNVxuICAgIHwgXCJGNlwiIC0+IEY2XG4gICAgfCBcIkY3XCIgLT4gRjdcbiAgICB8IFwiRjhcIiAtPiBGOFxuICAgIHwgXCJGOVwiIC0+IEY5XG4gICAgfCBcIkYxMFwiIC0+IEYxMFxuICAgIHwgXCJGMTFcIiAtPiBGMTFcbiAgICB8IFwiRjEyXCIgLT4gRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IFwiTnVtcGFkMFwiIC0+IE51bXBhZDBcbiAgICB8IFwiTnVtcGFkMVwiIC0+IE51bXBhZDFcbiAgICB8IFwiTnVtcGFkMlwiIC0+IE51bXBhZDJcbiAgICB8IFwiTnVtcGFkM1wiIC0+IE51bXBhZDNcbiAgICB8IFwiTnVtcGFkNFwiIC0+IE51bXBhZDRcbiAgICB8IFwiTnVtcGFkNVwiIC0+IE51bXBhZDVcbiAgICB8IFwiTnVtcGFkNlwiIC0+IE51bXBhZDZcbiAgICB8IFwiTnVtcGFkN1wiIC0+IE51bXBhZDdcbiAgICB8IFwiTnVtcGFkOFwiIC0+IE51bXBhZDhcbiAgICB8IFwiTnVtcGFkOVwiIC0+IE51bXBhZDlcbiAgICB8IFwiTnVtcGFkTXVsdGlwbHlcIiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgXCJOdW1wYWRTdWJ0cmFjdFwiIC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCBcIk51bXBhZEFkZFwiIC0+IE51bXBhZEFkZFxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgXCJOdW1wYWRFcXVhbFwiIC0+IE51bXBhZEVxdWFsXG4gICAgfCBcIk51bXBhZEVudGVyXCIgLT4gTnVtcGFkRW50ZXJcbiAgICB8IFwiTnVtcGFkRGl2aWRlXCIgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCBcIk51bUxvY2tcIiAtPiBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgXCJDb250cm9sTGVmdFwiIC0+IENvbnRyb2xMZWZ0XG4gICAgfCBcIkNvbnRyb2xSaWdodFwiIC0+IENvbnRyb2xSaWdodFxuICAgIHwgXCJNZXRhTGVmdFwiIC0+IE1ldGFMZWZ0XG4gICAgfCBcIk1ldGFSaWdodFwiIC0+IE1ldGFSaWdodFxuICAgIHwgXCJTaGlmdExlZnRcIiAtPiBTaGlmdExlZnRcbiAgICB8IFwiU2hpZnRSaWdodFwiIC0+IFNoaWZ0UmlnaHRcbiAgICB8IFwiQWx0TGVmdFwiIC0+IEFsdExlZnRcbiAgICB8IFwiQWx0UmlnaHRcIiAtPiBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IFwiQXJyb3dMZWZ0XCIgLT4gQXJyb3dMZWZ0XG4gICAgfCBcIkFycm93UmlnaHRcIiAtPiBBcnJvd1JpZ2h0XG4gICAgfCBcIkFycm93VXBcIiAtPiBBcnJvd1VwXG4gICAgfCBcIkFycm93RG93blwiIC0+IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFwiUGFnZVVwXCIgLT4gUGFnZVVwXG4gICAgfCBcIlBhZ2VEb3duXCIgLT4gUGFnZURvd25cbiAgICB8IFwiSG9tZVwiIC0+IEhvbWVcbiAgICB8IFwiRW5kXCIgLT4gRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFwiVm9sdW1lTXV0ZVwiIC0+IFZvbHVtZU11dGVcbiAgICB8IFwiVm9sdW1lRG93blwiIC0+IFZvbHVtZURvd25cbiAgICB8IFwiVm9sdW1lVXBcIiAtPiBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBcIk1lZGlhVHJhY2tQcmV2aW91c1wiIC0+IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgXCJNZWRpYVRyYWNrTmV4dFwiIC0+IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBcIk1lZGlhUGxheVBhdXNlXCIgLT4gTWVkaWFQbGF5UGF1c2VcbiAgICB8IFwiTWVkaWFTdG9wXCIgLT4gTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBcIkNvbnRleHRNZW51XCIgLT4gQ29udGV4dE1lbnVcbiAgICB8IFwiQnJvd3NlclNlYXJjaFwiIC0+IEJyb3dzZXJTZWFyY2hcbiAgICB8IFwiQnJvd3NlckhvbWVcIiAtPiBCcm93c2VySG9tZVxuICAgIHwgXCJCcm93c2VyRmF2b3JpdGVzXCIgLT4gQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgXCJCcm93c2VyUmVmcmVzaFwiIC0+IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBcIkJyb3dzZXJTdG9wXCIgLT4gQnJvd3NlclN0b3BcbiAgICB8IFwiQnJvd3NlckZvcndhcmRcIiAtPiBCcm93c2VyRm9yd2FyZFxuICAgIHwgXCJCcm93c2VyQmFja1wiIC0+IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgXCJPU0xlZnRcIiAtPiBPU0xlZnRcbiAgICB8IFwiT1NSaWdodFwiIC0+IE9TUmlnaHRcbiAgICB8IFwiU2Nyb2xsTG9ja1wiIC0+IFNjcm9sbExvY2tcbiAgICB8IFwiUHJpbnRTY3JlZW5cIiAtPiBQcmludFNjcmVlblxuICAgIHwgXCJJbnRsQmFja3NsYXNoXCIgLT4gSW50bEJhY2tzbGFzaFxuICAgIHwgXCJJbnRsWWVuXCIgLT4gSW50bFllblxuICAgIHwgXCJQYXVzZVwiIC0+IFBhdXNlXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdExlZnRcbiAgICB8IDE3IC0+IENvbnRyb2xMZWZ0XG4gICAgfCAxOCAtPiBBbHRMZWZ0XG4gICAgfCA5MSAtPiBNZXRhTGVmdFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX3JpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0UmlnaHRcbiAgICB8IDE3IC0+IENvbnRyb2xSaWdodFxuICAgIHwgMTggLT4gQWx0UmlnaHRcbiAgICB8IDkxIC0+IE1ldGFSaWdodFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX251bXBhZCA9IGZ1bmN0aW9uXG4gICAgfCA0NiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA0NSAtPiBOdW1wYWQwXG4gICAgfCAzNSAtPiBOdW1wYWQxXG4gICAgfCA0MCAtPiBOdW1wYWQyXG4gICAgfCAzNCAtPiBOdW1wYWQzXG4gICAgfCAzNyAtPiBOdW1wYWQ0XG4gICAgfCAxMiAtPiBOdW1wYWQ1XG4gICAgfCAzOSAtPiBOdW1wYWQ2XG4gICAgfCAzNiAtPiBOdW1wYWQ3XG4gICAgfCAzOCAtPiBOdW1wYWQ4XG4gICAgfCAzMyAtPiBOdW1wYWQ5XG4gICAgfCAxMyAtPiBOdW1wYWRFbnRlclxuICAgIHwgMTExIC0+IE51bXBhZERpdmlkZVxuICAgIHwgMTA3IC0+IE51bXBhZEFkZFxuICAgIHwgMTA5IC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCAxMDYgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IDExMCAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA5NiAtPiBOdW1wYWQwXG4gICAgfCA5NyAtPiBOdW1wYWQxXG4gICAgfCA5OCAtPiBOdW1wYWQyXG4gICAgfCA5OSAtPiBOdW1wYWQzXG4gICAgfCAxMDAgLT4gTnVtcGFkNFxuICAgIHwgMTAxIC0+IE51bXBhZDVcbiAgICB8IDEwMiAtPiBOdW1wYWQ2XG4gICAgfCAxMDMgLT4gTnVtcGFkN1xuICAgIHwgMTA0IC0+IE51bXBhZDhcbiAgICB8IDEwNSAtPiBOdW1wYWQ5XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbm9ybWFsID0gZnVuY3Rpb25cbiAgICB8IDI3IC0+IEVzY2FwZVxuICAgIHwgMTEyIC0+IEYxXG4gICAgfCAxMTMgLT4gRjJcbiAgICB8IDExNCAtPiBGM1xuICAgIHwgMTE1IC0+IEY0XG4gICAgfCAxMTYgLT4gRjVcbiAgICB8IDExNyAtPiBGNlxuICAgIHwgMTE4IC0+IEY3XG4gICAgfCAxMTkgLT4gRjhcbiAgICB8IDEyMCAtPiBGOVxuICAgIHwgMTIxIC0+IEYxMFxuICAgIHwgMTIyIC0+IEYxMVxuICAgIHwgMTIzIC0+IEYxMlxuICAgIHwgNDIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IDE0NSAtPiBTY3JvbGxMb2NrXG4gICAgfCAxOSAtPiBQYXVzZVxuICAgIHwgMTkyIC0+IEJhY2txdW90ZVxuICAgIHwgNDkgLT4gRGlnaXQxXG4gICAgfCA1MCAtPiBEaWdpdDJcbiAgICB8IDUxIC0+IERpZ2l0M1xuICAgIHwgNTIgLT4gRGlnaXQ0XG4gICAgfCA1MyAtPiBEaWdpdDVcbiAgICB8IDU0IC0+IERpZ2l0NlxuICAgIHwgNTUgLT4gRGlnaXQ3XG4gICAgfCA1NiAtPiBEaWdpdDhcbiAgICB8IDU3IC0+IERpZ2l0OVxuICAgIHwgNDggLT4gRGlnaXQwXG4gICAgfCAxODkgLT4gTWludXNcbiAgICB8IDE4NyAtPiBFcXVhbFxuICAgIHwgOCAtPiBCYWNrc3BhY2VcbiAgICB8IDkgLT4gVGFiXG4gICAgfCA4MSAtPiBLZXlRXG4gICAgfCA4NyAtPiBLZXlXXG4gICAgfCA2OSAtPiBLZXlFXG4gICAgfCA4MiAtPiBLZXlSXG4gICAgfCA4NCAtPiBLZXlUXG4gICAgfCA4OSAtPiBLZXlZXG4gICAgfCA4NSAtPiBLZXlVXG4gICAgfCA3MyAtPiBLZXlJXG4gICAgfCA3OSAtPiBLZXlPXG4gICAgfCA4MCAtPiBLZXlQXG4gICAgfCAyMTkgLT4gQnJhY2tldExlZnRcbiAgICB8IDIyMSAtPiBCcmFja2V0UmlnaHRcbiAgICB8IDIyMCAtPiBCYWNrc2xhc2hcbiAgICB8IDIwIC0+IENhcHNMb2NrXG4gICAgfCA2NSAtPiBLZXlBXG4gICAgfCA4MyAtPiBLZXlTXG4gICAgfCA2OCAtPiBLZXlEXG4gICAgfCA3MCAtPiBLZXlGXG4gICAgfCA3MSAtPiBLZXlHXG4gICAgfCA3MiAtPiBLZXlIXG4gICAgfCA3NCAtPiBLZXlKXG4gICAgfCA3NSAtPiBLZXlLXG4gICAgfCA3NiAtPiBLZXlMXG4gICAgfCAxODYgLT4gU2VtaWNvbG9uXG4gICAgfCAyMjIgLT4gUXVvdGVcbiAgICB8IDEzIC0+IEVudGVyXG4gICAgfCA5MCAtPiBLZXlaXG4gICAgfCA4OCAtPiBLZXlYXG4gICAgfCA2NyAtPiBLZXlDXG4gICAgfCA4NiAtPiBLZXlWXG4gICAgfCA2NiAtPiBLZXlCXG4gICAgfCA3OCAtPiBLZXlOXG4gICAgfCA3NyAtPiBLZXlNXG4gICAgfCAxODggLT4gQ29tbWFcbiAgICB8IDE5MCAtPiBQZXJpb2RcbiAgICB8IDE5MSAtPiBTbGFzaFxuICAgIHwgMzIgLT4gU3BhY2VcbiAgICB8IDkzIC0+IENvbnRleHRNZW51XG4gICAgfCA0NSAtPiBJbnNlcnRcbiAgICB8IDM2IC0+IEhvbWVcbiAgICB8IDMzIC0+IFBhZ2VVcFxuICAgIHwgNDYgLT4gRGVsZXRlXG4gICAgfCAzNSAtPiBFbmRcbiAgICB8IDM0IC0+IFBhZ2VEb3duXG4gICAgfCAzNyAtPiBBcnJvd0xlZnRcbiAgICB8IDQwIC0+IEFycm93RG93blxuICAgIHwgMzkgLT4gQXJyb3dSaWdodFxuICAgIHwgMzggLT4gQXJyb3dVcFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgbWFrZV91bmlkZW50aWZpZWQgXyA9IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBPcHRkZWYuY2FzZSB2YWx1ZSBtYWtlX3VuaWRlbnRpZmllZCBmXG4gICAgfCB2IC0+IHZcblxuICBsZXQgcnVuX25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gZiB2YWx1ZVxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IGdldF9rZXlfY29kZSBldnQgPSBldnQjIy5rZXlDb2RlXG5cbiAgbGV0IHRyeV9rZXlfbG9jYXRpb24gZXZ0ID1cbiAgICBtYXRjaCBldnQjIy5sb2NhdGlvbiB3aXRoXG4gICAgfCAxIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbGVmdFxuICAgIHwgMiAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX3JpZ2h0XG4gICAgfCAzIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbnVtcGFkXG4gICAgfCBfIC0+IG1ha2VfdW5pZGVudGlmaWVkXG5cbiAgbGV0ICggfD4gKSB4IGYgPSBmIHhcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBVbmlkZW50aWZpZWRcbiAgICB8PiB0cnlfbmV4dCBldnQjIy5jb2RlIHRyeV9jb2RlXG4gICAgfD4gdHJ5X2tleV9sb2NhdGlvbiBldnRcbiAgICB8PiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX25vcm1hbFxuXG4gIGxldCBvZl9rZXlfY29kZSA9IHRyeV9rZXlfY29kZV9ub3JtYWxcbmVuZFxuXG5tb2R1bGUgS2V5Ym9hcmRfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFVjaGFyLnQgb3B0aW9uXG5cbiAgbGV0IGNoYXJfb2ZfaW50IHZhbHVlID1cbiAgICBpZiAwIDwgdmFsdWUgdGhlbiB0cnkgU29tZSAoVWNoYXIub2ZfaW50IHZhbHVlKSB3aXRoIF8gLT4gTm9uZSBlbHNlIE5vbmVcblxuICBsZXQgZW1wdHlfc3RyaW5nIF8gPSBKcy5zdHJpbmcgXCJcIlxuXG4gIGxldCBub25lIF8gPSBOb25lXG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgbGV0IGtleSA9IE9wdGRlZi5nZXQgZXZ0IyMua2V5IGVtcHR5X3N0cmluZyBpblxuICAgIG1hdGNoIGtleSMjLmxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IE9wdGRlZi5jYXNlIGV2dCMjLmNoYXJDb2RlIG5vbmUgY2hhcl9vZl9pbnRcbiAgICB8IDEgLT4gY2hhcl9vZl9pbnQgKGludF9vZl9mbG9hdCAoSnMudG9fZmxvYXQgKGtleSMjY2hhckNvZGVBdCAwKSkpXG4gICAgfCBfIC0+IE5vbmVcbmVuZFxuXG4oKioqKiopXG5cbmxldCBlbGVtZW50IDogI0RvbS5lbGVtZW50IHQgLT4gZWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG50eXBlIHRhZ2dlZEVsZW1lbnQgPVxuICB8IEEgb2YgYW5jaG9yRWxlbWVudCB0XG4gIHwgQXJlYSBvZiBhcmVhRWxlbWVudCB0XG4gIHwgQXVkaW8gb2YgYXVkaW9FbGVtZW50IHRcbiAgfCBCYXNlIG9mIGJhc2VFbGVtZW50IHRcbiAgfCBCbG9ja3F1b3RlIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgQm9keSBvZiBib2R5RWxlbWVudCB0XG4gIHwgQnIgb2YgYnJFbGVtZW50IHRcbiAgfCBCdXR0b24gb2YgYnV0dG9uRWxlbWVudCB0XG4gIHwgQ2FudmFzIG9mIGNhbnZhc0VsZW1lbnQgdFxuICB8IENhcHRpb24gb2YgdGFibGVDYXB0aW9uRWxlbWVudCB0XG4gIHwgQ29sIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgQ29sZ3JvdXAgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBEZWwgb2YgbW9kRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiaW5jbHVkZSBKc19vZl9vY2FtbC5Kc1xubW9kdWxlIFVybCA9IEpzX29mX29jYW1sLlVybFxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWwuRmlyZWJ1Z1xubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbC5GaWxlXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWwuRG9tXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbC5UeXBlZF9hcnJheVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sLlJlZ2V4cFxuXG50eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbnR5cGUgd2luZG93ID0gRG9tX2h0bWwud2luZG93XG5cbmxldCB0b19hcnJheWYgZiBhID0gQXJyYXkubWFwIGYgKHRvX2FycmF5IGEpXG5cbmxldCBvZl9hcnJheWYgZiBhID0gYXJyYXkgKEFycmF5Lm1hcCBmIGEpXG5cbmxldCB0b19saXN0IGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5IGFcblxubGV0IG9mX2xpc3QgbCA9IGFycmF5IEBAIEFycmF5Lm9mX2xpc3QgQEAgbFxuXG5sZXQgdG9fbGlzdGYgZiBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheWYgZiBhXG5cbmxldCBvZl9saXN0ZiBmIGEgPSBvZl9hcnJheWYgZiBAQCBBcnJheS5vZl9saXN0IGFcblxubGV0IG9wdGRlZiBmID0gZnVuY3Rpb24gTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHRkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHVub3B0ZGVmX2YgZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IGYgeFxuXG5sZXQgdW5vcHRkZWYgZGVmIHggPSBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiB4XG5cbmxldCBjb252ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBvcHQgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBjb252b3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBqc19sb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChzdHJpbmcgcylcblxubGV0IGxvZyBmbXQgPVxuICBGb3JtYXQua2ZwcmludGZcbiAgICAoZnVuIF9mbXQgLT4ganNfbG9nIChzdHJpbmcgKEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKSkpXG4gICAgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgZm10XG5cbmxldCBlcnJvcl9vZl9zdHJpbmcgcyA9IG5ldyVqcyBlcnJvcl9jb25zdHIgKHN0cmluZyBzKVxubGV0IGNhdGNoX2V4biBmID0gZnVuY3Rpb25cbiAgfCBKc19lcnJvci5FeG4gZSAtPiBmIChKc19lcnJvci50b19lcnJvciBlKVxuICB8IGV4biAtPiBmIEBAIGVycm9yX29mX3N0cmluZyBAQCBQcmludGV4Yy50b19zdHJpbmcgZXhuXG5cbm1vZHVsZSBBT3B0ID0gc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgbGV0IG51bGwgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IHVuZGVmaW5lZCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgY29lcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwganNfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuICBsZXQgaXNfbm9uZSAoeCA6ICdhIHQpIDogYm9vbCA9IHggPT0gdW5kZWZpbmVkIHx8IGpzX2VxdWFscyB4IG51bGxcbiAgbGV0IG1hcCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIHJldHVybiAoZiAoY29lcmNlIHgpKVxuICBsZXQgYmluZCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IgdCkgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgZiAoY29lcmNlIHgpXG4gIGxldCB0ZXN0ICh4IDogJ2EgdCkgOiBib29sID0gbm90IChpc19ub25lIHgpXG4gIGxldCBpdGVyICh4IDogJ2EgdCkgKGYgOiAnYSAtPiB1bml0KSA6IHVuaXQgPSBpZiBub3QgKGlzX25vbmUgeCkgdGhlbiBmIChjb2VyY2UgeClcbiAgbGV0IGNhc2UgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2IpIChnIDogJ2EgLT4gJ2IpIDogJ2IgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgZyAoY29lcmNlIHgpXG4gIGxldCBnZXQgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2EpIDogJ2EgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgKGNvZXJjZSB4KVxuICBsZXQgb3B0aW9uID8obm9uZT11bmRlZmluZWQpICh4IDogJ2Egb3B0aW9uKSA6ICdhIHQgPSBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gIGxldCB0b19vcHRpb24gKHggOiAnYSB0KSA6ICdhIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGxldCBhb3B0ID8obm9uZT0odW5kZWZpbmVkIDogJ2IgdCkpIChmIDogJ2EgLT4gJ2IpIDogJ2Egb3B0aW9uIC0+ICdiIHQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gIGxldCB0b19hb3B0IChmIDogJ2EgLT4gJ2IpICh4IDogJ2EgdCkgOiAnYiBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSAoZiB4KSlcbmVuZFxudHlwZSAnYSBhb3B0ID0gJ2EgQU9wdC50XG5cbnR5cGUgJ2EgY2FzZV9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgPiBnZW5fcHJvcFxuXG5sZXQgcmVjIGNob29zZV9jYXNlX29wdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgaCA6OiB0IC0+IG1hdGNoIE9wdGRlZi50b19vcHRpb24gaCB3aXRoIE5vbmUgLT4gY2hvb3NlX2Nhc2Vfb3B0IHQgfCBTb21lIF8gLT4gaFxuXG5sZXQgY2hvb3NlX2Nhc2UgbCA9IGNob29zZV9jYXNlX29wdCAoTGlzdC5tYXAgT3B0ZGVmLnJldHVybiBsKVxuXG5sZXQgb2JqZWN0X2NzID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcbmxldCBhc3NpZ24gKG8xIDogXyB0KSAobzIgOiBfIHQpID0gVW5zYWZlLmNvZXJjZSAob2JqZWN0X2NzIyNhc3NpZ24gbzEgbzIpXG5sZXQgYXNzaWduX2xpc3QgbCA9IFVuc2FmZS5jb2VyY2UgKFVuc2FmZS5tZXRoX2NhbGwgb2JqZWN0X2NzIFwiYXNzaWduXCIgKEFycmF5Lm9mX2xpc3QgbCkpXG5cbmxldCByZW1vdmVfdW5kZWZpbmVkIG8gPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG8gaW5cbiAga2V5cyMjZm9yRWFjaCAod3JhcF9jYWxsYmFjayAoZnVuIGsgXyBfIC0+XG4gICAgICBpZiBub3QgKE9wdGRlZi50ZXN0IChVbnNhZmUuZ2V0IG8gaykpIHRoZW4gVW5zYWZlLmRlbGV0ZSBvIGspKVxuIiwib3BlbiBKc1xuXG50eXBlIG5vbnJlYyAnYSB0ID0gPCA+IHRcblxubGV0IG9iaiA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpICh2IDogJ2EpID0gVW5zYWZlLnNldCB0IChzdHJpbmcgaykgdlxuXG5sZXQgYWRkX2xpc3QgKHQgOiAnYSB0KSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSBsXG5cbmxldCBhZGRfbGlzdGYgKHQgOiAnYiB0KSAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIChmIHYpKSBsXG5cbmxldCBtYWtlIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdCB0IGw7XG4gIHRcblxubGV0IG1ha2VmIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2IgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0ZiB0IGYgbDtcbiAgdFxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpID0gVW5zYWZlLmRlbGV0ZSB0IChzdHJpbmcgaylcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgOiAnYSBvcHRpb24gPVxuICBPcHRkZWYudG9fb3B0aW9uIChVbnNhZmUuZ2V0IHQgKHN0cmluZyBrKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IHN0cmluZyBsaXN0ID1cbiAgdG9fbGlzdGYgdG9fc3RyaW5nIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtcyAodCA6ICdhIHQpIDogKHN0cmluZyAqICdhKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zZiAoZiA6ICgnYSAtPiAnYikpICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2IpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIGYgQEAgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBsZW5ndGggKHQgOiAnYSB0KSA9IChvYmojI2tleXMgdCkjIy5sZW5ndGhcblxubGV0IG1lcmdlIChsIDogJ2EgdCBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIChpdGVtcyB4KSkgbDtcbiAgdFxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHByb21pc2UwID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHRoZW5fIDogKCdhIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICAgIG1ldGhvZCBjYXRjaCA6ICgnYiAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9taXNlID0gWydhLCBlcnJvciB0XSBwcm9taXNlMFxuXG50eXBlICgnYSwgJ2IpIHByb21pc2VfY3MgPVxuICAoKCgnYSAtPiB1bml0KSAtPiAoJ2IgLT4gdW5pdCkgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdClcbiAgY29uc3RyXG5cbmxldCBwcm9taXNlIGYgPVxuICBsZXQgY3MgOiAoJ2EsICdiKSBwcm9taXNlX2NzID0gVW5zYWZlLmdsb2JhbCMjLl9Qcm9taXNlIGluXG4gIG5ldyVqcyBjcyAod3JhcF9jYWxsYmFjayBmKVxuXG5sZXQganRoZW4wID9lcnJvciAocHJvbSA6ICgnYSwgJ2IgdCkgcHJvbWlzZTAgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biAoZnVuIHggLT4gZWYgKFVuc2FmZS5jb2VyY2UgeCkpIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4gP2Vycm9yIChwcm9tIDogJ2EgcHJvbWlzZSB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPSBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biBlZiBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuMF9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4wIHByb20gZlxubGV0IGp0aGVuX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbiBwcm9tIGZcblxubGV0IHJ0aGVuIHByb20gZiA9XG4gIGp0aGVuIH5lcnJvcjooZnVuIGUgLT4gZiBAQCBFcnJvciBlKSBwcm9tIChmdW4geCAtPiBmIChPayB4KSlcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IGxvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgbzEgbzJcblxubGV0IGxvZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIG8xIG8yIG8zXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBsb2dfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGxvZ19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZGVidWcgbyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgb1xuXG5sZXQgZGVidWcyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIG8xIG8yXG5cbmxldCBkZWJ1ZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgbzEgbzIgbzNcblxubGV0IGRlYnVnX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBkZWJ1Z19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBkZWJ1Z19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCB3YXJuIG8gPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gb1xuXG5sZXQgd2FybjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiBvMSBvMlxuXG5sZXQgd2FybjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyBvMSBvMiBvM1xuXG5sZXQgd2Fybl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjd2FybiAoSnMuc3RyaW5nIHMpXG5cbmxldCB3YXJuX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgd2Fybl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGVycm9yIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIG9cblxubGV0IGVycm9yMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiBvMSBvMlxuXG5sZXQgZXJyb3IzIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIG8xIG8yIG8zXG5cbmxldCBlcnJvcl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKVxuXG5sZXQgZXJyb3Jfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZXJyb3Jfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIGJpZ0ludCA9IG9iamVjdFxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBvcHRkZWYgLT4gXyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHZhbHVlT2YgOiBiaWdJbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub25yZWMgdCA9IGJpZ0ludCB0XG5cbmxldCBiaWdJbnQgOiAoVW5zYWZlLmFueSAtPiB0KSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJCaWdJbnRcIlxuXG5sZXQgb2Zfc3RyaW5nIHMgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgc3RyaW5nIHMpXG5sZXQgb2ZfaW50IChpIDogaW50KSA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBpKVxubGV0IG9mX2ludDY0IChpIDogaW50NjQpID0gb2Zfc3RyaW5nIChJbnQ2NC50b19zdHJpbmcgaSlcbmxldCBvZl9uYXRpdmUgKGkgOiBuYXRpdmVpbnQpID0gb2Zfc3RyaW5nIChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfZmxvYXQgZiA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBudW1iZXJfb2ZfZmxvYXQgZilcblxubGV0IHRvX2xvY2FsZV9zdHJpbmcgP2ZtdCA/b3B0aW9ucyAobiA6IHQpID1cbiAgdG9fc3RyaW5nIChuIyN0b0xvY2FsZVN0cmluZyAob3B0ZGVmIHN0cmluZyBmbXQpIChPcHRkZWYub3B0aW9uIG9wdGlvbnMpKVxubGV0IHRvX3N0cmluZyAobiA6IHQpID0gdG9fc3RyaW5nIG4jI3RvU3RyaW5nXG4iLCJvcGVuIEpzXG5cbmxldCBzZXRJbm5lckh0bWwgZWx0IHMgPSBlbHQjIy5pbm5lckhUTUwgOj0gc3RyaW5nIHNcblxubGV0IHNldFRleHQgZWx0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgcyAtPlxuICAgICAgZWx0IyMudGV4dENvbnRlbnQgOj0gc29tZSAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjYWRkIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzZXMgZWx0IGwgPSBMaXN0Lml0ZXIgKGFkZENsYXNzIGVsdCkgbFxuXG5sZXQgcmVtb3ZlQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI3JlbW92ZSAoc3RyaW5nIHMpXG5cbmxldCBjb250YWluc0NsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNjb250YWlucyAoc3RyaW5nIHMpXG5cbmxldCBzZXRBdHRyaWJ1dGUgZWx0IGtleSB2YWx1ZSA9IGVsdCMjc2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSAoc3RyaW5nIHZhbHVlKVxuXG5sZXQgcmVtb3ZlQXR0cmlidXRlIGVsdCBrZXkgPSBlbHQjI3JlbW92ZUF0dHJpYnV0ZSAoc3RyaW5nIGtleSlcblxubGV0IGdldEF0dHJpYnV0ZSBlbHQga2V5ID0gT3B0LnRvX29wdGlvbiAoZWx0IyNnZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpKVxuXG5sZXQgc2V0Q1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhZGRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBsZXQgc3R5bGVzID1cbiAgICBtYXRjaCBnZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIHN0eWxlc1xuICAgIHwgU29tZSBvbGRfc3R5bGVzIC0+XG4gICAgICAgIG9sZF9zdHlsZXMgXiBcIjsgXCIgXiBzdHlsZXNcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhcHBlbmRDaGlsZCA9IERvbS5hcHBlbmRDaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGQgPSBEb20ucmVtb3ZlQ2hpbGRcblxubGV0IGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9IExpc3QuaXRlciAoRG9tLmFwcGVuZENoaWxkIHBhcmVudCkgY2hpbGRyZW5cblxubGV0IGNoaWxkcmVuIHBhcmVudCA9IERvbS5saXN0X29mX25vZGVMaXN0IHBhcmVudCMjLmNoaWxkTm9kZXNcblxubGV0IHJlbW92ZUNoaWxkaSBwYXJlbnQgaSA9XG4gIG1hdGNoIExpc3QubnRoX29wdCAoY2hpbGRyZW4gcGFyZW50KSBpIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgY2hpbGQgLT5cbiAgICAgIHJlbW92ZUNoaWxkIHBhcmVudCBjaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50ID0gTGlzdC5pdGVyIChyZW1vdmVDaGlsZCBwYXJlbnQpIChjaGlsZHJlbiBwYXJlbnQpXG5cbmxldCByZXBsYWNlQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID1cbiAgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50IDtcbiAgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuXG5cbmxldCBieV9pZCBzID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgc1xuXG5sZXQgYWRkTGlzdGVuZXIgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IGV2IGYgPVxuICBsZXQgY2FwdHVyZSA9IE9wdGlvbi5tYXAgYm9vbCBjYXB0dXJlIGluXG4gIGxldCBvbmNlID0gT3B0aW9uLm1hcCBib29sIG9uY2UgaW5cbiAgbGV0IHBhc3NpdmUgPSBPcHRpb24ubWFwIGJvb2wgcGFzc2l2ZSBpblxuICBpZ25vcmUgQEBcbiAgRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgKERvbS5FdmVudC5tYWtlIGV2KVxuICAgIChEb20uaGFuZGxlciAoZnVuIGUgLT4gYm9vbCAoZiBlKSkpXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oY2xhc3NlcyA9IFtdKSA/KHN0eWxlcyA9IFtdKSA/KGxpc3RlbiA9IFtdKSA/KGF0dHIgPSBbXSkgP3RleHQgZlxuICAgICAgY2hpbGRyZW4gPVxuICAgIGxldCBlbHQgPSBmIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgTGlzdC5pdGVyIChmdW4gKGV2LCBmKSAtPiBhZGRMaXN0ZW5lciBlbHQgZXYgZikgbGlzdGVuIDtcbiAgICBhZGRDbGFzc2VzIGVsdCBjbGFzc2VzIDtcbiAgICBzZXRDU1MgZWx0IHN0eWxlcyA7XG4gICAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IHNldEF0dHJpYnV0ZSBlbHQgayB2KSBhdHRyIDtcbiAgICBzZXRUZXh0IGVsdCB0ZXh0IDtcbiAgICBhcHBlbmRDaGlsZHJlbiBlbHQgY2hpbGRyZW4gO1xuICAgIGVsdFxuXG4gIGxldCBidXR0b24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUJ1dHRvbiBjaGlsZHJlblxuXG4gIGxldCBkaXYgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZURpdiBjaGlsZHJlblxuXG4gIGxldCBhID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVBIGNoaWxkcmVuXG5cbiAgbGV0IHNwYW4gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNwYW4gY2hpbGRyZW5cblxuICBsZXQgZm9ybSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRm9ybSBjaGlsZHJlblxuXG4gIGxldCBvcHRpb24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZU9wdGlvbiBjaGlsZHJlblxuXG4gIGxldCBzZWxlY3QgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNlbGVjdCBjaGlsZHJlblxuXG4gIGxldCBpbnB1dCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgKCkgPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW5wdXQgW11cblxuICBsZXQgaWZyYW1lID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJZnJhbWUgY2hpbGRyZW5cblxuICBsZXQgbGFiZWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxhYmVsIGNoaWxkcmVuXG5cbiAgbGV0IHVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVVbCBjaGlsZHJlblxuXG4gIGxldCBsaSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGkgY2hpbGRyZW5cblxuICBsZXQgaW1nID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbWcgY2hpbGRyZW5cblxuICBsZXQgc2NyaXB0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTY3JpcHQgY2hpbGRyZW5cblxuICBsZXQgdGFibGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRhYmxlIGNoaWxkcmVuXG5cbiAgbGV0IHRyID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUciBjaGlsZHJlblxuXG4gIGxldCB0aCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGggY2hpbGRyZW5cblxuICBsZXQgdGQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRkIGNoaWxkcmVuXG5lbmRcblxubGV0IGVuY2Fwc2UgcyA9IFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiXG5cbmxldCBzdHJpbmdzX3RvX2FycmF5IGwgPSBcIltcIiBeIFN0cmluZy5jb25jYXQgXCIsXCIgbCBeIFwiXVwiXG5cbmxldCBzdHJpbmdzX3RvX29iamVjdCBsID1cbiAgbGV0IHMgPVxuICAgIFwie1wiXG4gICAgXiBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBlbmNhcHNlIGsgXiBcIjpcIiBeIHYpIGwpXG4gICAgXiBcIn1cIlxuICBpblxuICB0cnkgX0pTT04jI3BhcnNlIChzdHJpbmcgcylcbiAgd2l0aCBfIC0+XG4gICAgbG9nX3N0ciAoXCJjYW5ub3QgcGFyc2UganNvbiBcIiBeIHMpIDtcbiAgICBVbnNhZmUub2JqIFt8fF1cbiIsIm9wZW4gRXpqc19taW5cblxubW9kdWxlIFR5cGVzID0gRXpqc19pZGJfdHlwZXNcbm9wZW4gVHlwZXNcblxudHlwZSBtb2RlID0gUkVBRE9OTFkgfCBSRUFEV1JJVEUgfCBWRVJTSU9OQ0hBTkdFXG50eXBlIGRpcmVjdGlvbiA9IE5FWFQgfCBQUkVWIHwgTkVYVFVOSVFVRSB8IFBSRVZVTklRVUVcblxudHlwZSBkYl9vcHRpb25zID0geyBrZXlfcGF0aCA6IHN0cmluZyBvcHRpb247IGF1dG9faW5jcmVtZW50IDogYm9vbCBvcHRpb24gfVxuXG50eXBlIGRiX3VwZ3JhZGUgPSB7IG9sZF92ZXJzaW9uIDogaW50OyBuZXdfdmVyc2lvbiA6IGludCB9XG5cbnR5cGUgaW5kZXhfb3B0aW9ucyA9IHsgdW5pcXVlIDogYm9vbCBvcHRpb247IG11bHRpX2VudHJ5IDogYm9vbCBvcHRpb247IGxvY2FsZSA6IGJvb2wgb3B0aW9uIH1cblxubW9kdWxlIHR5cGUgVHJfc2lnID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGpzXG4gIHZhbCB0b19qcyA6IHQgLT4ganNcbiAgdmFsIG9mX2pzIDoganMgLT4gdFxuZW5kXG5cbmxldCBzdHJfb2ZfbW9kZSA9IGZ1bmN0aW9uXG4gIHwgUkVBRE9OTFkgLT4gc3RyaW5nIFwicmVhZG9ubHlcIlxuICB8IFJFQURXUklURSAtPiBzdHJpbmcgXCJyZWFkd3JpdGVcIlxuICB8IFZFUlNJT05DSEFOR0UgLT4gc3RyaW5nIFwidmVyc2lvbmNoYW5nZVwiXG5cbmxldCBzdHJfb2ZfZGlyZWN0aW9uID0gZnVuY3Rpb25cbiAgfCBORVhUIC0+IHN0cmluZyBcIm5leHRcIlxuICB8IFBSRVYgLT4gc3RyaW5nIFwicHJldlwiXG4gIHwgTkVYVFVOSVFVRSAtPiBzdHJpbmcgXCJuZXh0dW5pcXVlXCJcbiAgfCBQUkVWVU5JUVVFIC0+IHN0cmluZyBcInByZXZ1bmlxdWVcIlxuXG5sZXQgaURCS2V5UmFuZ2UgOiBVbnNhZmUuYW55IGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiXG5sZXQgaW5kZXhlZERCIDoganNfc3RyaW5nIHQgaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiXG5cbmxldCByZXN1bHQgciA9IHIjIy5yZXN1bHRcblxubGV0IHdyYXAgP2Vycm9yID9jYWxsYmFjayByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgd3JhcGYgP2Vycm9yID9jYWxsYmFjayBnIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAoZyBAQCByZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IGRiX3VwZ3JhZGVfZXZlbnQgKGUgOiBpREJWZXJzaW9uQ2hhbmdlRXZlbnQgdCkgPSB7XG4gIG9sZF92ZXJzaW9uID0gZSMjLm9sZFZlcnNpb247XG4gIG5ld192ZXJzaW9uID0gZSMjLm5ld1ZlcnNpb247XG59XG5cbmxldCBvcGVuREIgP3VwZ3JhZGUgP2Vycm9yID92ZXJzaW9uIG5hbWUgY2FsbGJhY2sgPVxuICBsZXQgaW5kZXhlZERCIDogXyBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCIgaW5cbiAgbGV0IHIgPSBsYXp5IChpbmRleGVkREIjI19vcGVuIChzdHJpbmcgbmFtZSkgKEFPcHQub3B0aW9uIHZlcnNpb24pKSBpblxuICB3cmFwID9lcnJvciB+Y2FsbGJhY2sgcjtcbiAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgciMjLm9udXBncmFkZW5lZWRlZCA6PVxuICAgIEFPcHQuYW9wdCAoZnVuIHUgLT4gd3JhcF9jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgbGV0IHYgPSBkYl91cGdyYWRlX2V2ZW50IGUgaW5cbiAgICAgICAgbGV0IGRiID0gcmVzdWx0IHIgaW5cbiAgICAgICAgdSBkYiB2KSkgdXBncmFkZVxuXG5sZXQgdHJhbnNhY3Rpb24gciA6IGlEQlRyYW5zYWN0aW9uIHQgPSByIyMudHJhbnNhY3Rpb25cblxubGV0IGNyZWF0ZV9kYl9vcHRpb25zIHtrZXlfcGF0aDsgYXV0b19pbmNyZW1lbnR9IDogY3JlYXRlX2RiX29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICB2YWwga2V5UGF0aCA9IEFPcHQuYW9wdCBzdHJpbmcga2V5X3BhdGhcbiAgdmFsIGF1dG9JbmNyZW1lbnQgPSBBT3B0LmFvcHQgYm9vbCBhdXRvX2luY3JlbWVudFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcmUgP29wdGlvbnMgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA9XG4gIFVuc2FmZS5jb2VyY2UgQEBcbiAgZGIjI2NyZWF0ZU9iamVjdFN0b3JlIChzdHJpbmcgbmFtZSkgKEFPcHQuYW9wdCBjcmVhdGVfZGJfb3B0aW9ucyBvcHRpb25zKVxuXG5sZXQgZ2V0X3N0b3JlID9tb2RlIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgOiAoXywgXykgaURCT2JqZWN0U3RvcmUgdCA9XG4gIGxldCB0ciA9IGRiIyN0cmFuc2FjdGlvbiAoYXJyYXkgW3wgc3RyaW5nIG5hbWUgfF0pIChBT3B0LmFvcHQgc3RyX29mX21vZGUgbW9kZSkgaW5cbiAgVW5zYWZlLmNvZXJjZSBAQCB0ciMjb2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKVxuXG5tb2R1bGUgU3RvcmUoSyA6IFRyX3NpZykoRCA6IFRyX3NpZykgPSBzdHJ1Y3RcblxuICB0eXBlIHN0b3JlID0gKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHRcbiAgdHlwZSBrZXlzID0gSyBvZiBLLnQgfCBLUiBvZiBLLmpzIGlEQktleVJhbmdlIHRcblxuICBsZXQgY3JlYXRlID9vcHRpb25zIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgY3JlYXRlX3N0b3JlID9vcHRpb25zIGRiIG5hbWVcblxuICBsZXQgc3RvcmUgP21vZGUgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBnZXRfc3RvcmUgP21vZGUgZGIgbmFtZVxuXG4gIGxldCBhZGQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgSy5vZl9qcyBAQCBsYXp5IChzdCMjYWRkIChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCBwdXQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXAgP2NhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjcHV0IChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCByYW5nZSA/b2xvd2VyID9vdXBwZXIgP2xvd2VyID91cHBlciAoKSA9XG4gICAgbGV0IGlEQktleVJhbmdlIDogSy5qcyBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIiBpblxuICAgIG1hdGNoIGxvd2VyLCB1cHBlciB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBsb3dlciwgTm9uZSAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNsb3dlckJvdW5kIChLLnRvX2pzIGxvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSlcbiAgICB8IE5vbmUsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjdXBwZXJCb3VuZCAoSy50b19qcyB1cHBlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG4gICAgfCBTb21lIGxvd2VyLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2JvdW5kXG4gICAgICAgICAgICAoSy50b19qcyBsb3dlcikgKEsudG9fanMgdXBwZXIpXG4gICAgICAgICAgICAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcblxuICBsZXQgY291bnQgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpIChjYWxsYmFjayA6IGludCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCBBT3B0LnVuZGVmaW5lZClcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCAoQU9wdC5kZWYgKEsudG9fanMgaykpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudF9yYW5nZSAoQU9wdC5kZWYgcikpXG5cbiAgbGV0IGdldCA/ZXJyb3IgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChELm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGwgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGdldF9rZXkgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoSy5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsX2tleXMgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXNfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGRlbGV0ZSA/Y2FsbGJhY2sgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSA9IGZ1bmN0aW9uXG4gICAgfCBLIGtleSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGVfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGl0ZXIgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgayAoRC5vZl9qcyBjIyMudmFsdWUpO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKSAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBpdGVyX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGNsZWFyID9lcnJvciA/Y2FsbGJhY2sgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIChmdW4gXyAtPiAoKSkgQEAgbGF6eSBzdCMjY2xlYXJcblxuICBsZXQgY3JlYXRlX2luZGV4X29wdGlvbnMge3VuaXF1ZTsgbXVsdGlfZW50cnk7IGxvY2FsZX0gOiBjcmVhdGVfaW5kZXhfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gICAgdmFsIHVuaXF1ZSA9IEFPcHQuYW9wdCBib29sIHVuaXF1ZVxuICAgIHZhbCBtdWx0aUVudHJ5ID0gQU9wdC5hb3B0IGJvb2wgbXVsdGlfZW50cnlcbiAgICB2YWwgbG9jYWxlID0gQU9wdC5hb3B0IGJvb2wgbG9jYWxlXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfaW5kZXggP29wdGlvbnMgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUga2V5X3BhdGggPVxuICAgIGxldCBvcHRpb25zID0gQU9wdC5hb3B0IGNyZWF0ZV9pbmRleF9vcHRpb25zIG9wdGlvbnMgaW5cbiAgICBzdCMjY3JlYXRlSW5kZXggKHN0cmluZyBuYW1lKSAoc3RyaW5nIGtleV9wYXRoKSBvcHRpb25zXG5cbiAgbGV0IGRlbGV0ZV9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgaWdub3JlIEBAIHN0IyNkZWxldGVJbmRleCAoc3RyaW5nIG5hbWUpXG5cbiAgbGV0IGdldF9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgc3QjI2luZGV4IChzdHJpbmcgbmFtZSlcblxuZW5kXG5cbm1vZHVsZSBOb1RyKFMgOiBzaWcgdHlwZSB0IGVuZCkgOiBUcl9zaWcgd2l0aCB0eXBlIHQgPSBTLnQgYW5kIHR5cGUganMgPSBTLnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUy50XG4gIHR5cGUganMgPSBTLnRcbiAgbGV0IHRvX2pzIHggPSB4XG4gIGxldCBvZl9qcyB4ID0geFxuZW5kXG5cbm1vZHVsZSBJbnRUciA6IChUcl9zaWcgd2l0aCB0eXBlIGpzID0gaW50IGFuZCB0eXBlIHQgPSBpbnQpID0gTm9UcihzdHJ1Y3QgdHlwZSB0ID0gaW50IGVuZClcblxubW9kdWxlIFN0cmluZ1RyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGpzX3N0cmluZyB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGpzX3N0cmluZyB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IHN0cmluZyB4XG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgTnVtYmVyVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gbnVtYmVyIHQgYW5kIHR5cGUgdCA9IGZsb2F0ID0gc3RydWN0XG4gIHR5cGUganMgPSBudW1iZXIgdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdG9fanMgeCA9IG51bWJlcl9vZl9mbG9hdCB4XG4gIGxldCBvZl9qcyB4ID0gZmxvYXRfb2ZfbnVtYmVyIHhcbmVuZFxuXG5tb2R1bGUgRGF0ZVRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGRhdGUgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBkYXRlIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gbmV3JWpzIGRhdGVfZnJvbVRpbWVWYWx1ZSAoZGF0ZSMjcGFyc2UgKHN0cmluZyB4KSlcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeCMjdG9Mb2NhbGVTdHJpbmdcbmVuZFxuIiwibW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG5tb2R1bGUgU2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJvcGVuIEJhc2VcblxudHlwZSAnYSB0ZXN0X3ByZWRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gKCdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X2VxXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ID9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfcmVzdWx0XG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ID9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgLT4gZXhwZWN0OidhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxuZXhjZXB0aW9uIEUgb2Ygc3RyaW5nICogU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWcgYm9keSA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBtYXRjaCBtZXNzYWdlIHdpdGhcbiAgICB8IE5vbmUgLT4gdGFnXG4gICAgfCBTb21lIHMgLT4gcyBeIFwiOiBcIiBeIHRhZ1xuICBpblxuICBsZXQgc2V4cCA9XG4gICAgU2V4cC5MaXN0IChcbiAgICAgIGJvZHlcbiAgICAgIEAgWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJMb2NcIjsgU2V4cC5BdG9tIHBvcyBdIF1cbiAgICAgIEAgYmVnaW4gbWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBfIC0+IFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiU3RhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBbJXNleHBfb2Y6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgbGlzdF0gaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBdXG4gICAgICBlbmRcbiAgICApXG4gIGluXG4gICgqIEhlcmUgYW5kIGluIG90aGVyIHBsYWNlcyB3ZSByZXR1cm4gZXhjZXB0aW9ucywgcmF0aGVyIHRoYW4gZGlyZWN0bHkgcmFpc2luZywgYW5kXG4gICAgIGluc3RlYWQgcmFpc2UgYXQgdGhlIGxhdGVzdCBtb21lbnQgcG9zc2libGUsIHNvIGJhY2t0cmFjZSBkb24ndCBpbmNsdWRlIG5vaXNlIGZyb21cbiAgICAgdGhlc2UgZnVuY3Rpb25zIHRoYXQgY29uc3RydWN0IGV4Y2VwdGlvbnMuICopXG4gIEUgKG1lc3NhZ2UsIHNleHApXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3ByZWQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+c2V4cGlmaWVyIHQgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJwcmVkaWNhdGUgZmFpbGVkXCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiVmFsdWVcIjsgc2V4cGlmaWVyIHRdXG4gIF1cblxubGV0IHRlc3RfcHJlZCB+cG9zIH5zZXhwaWZpZXIgfmhlcmUgP21lc3NhZ2UgcHJlZGljYXRlIHQgPVxuICBpZiBub3QgKHByZWRpY2F0ZSB0KSB0aGVuXG4gICAgcmFpc2UgKGV4bl90ZXN0X3ByZWQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+c2V4cGlmaWVyIHQpXG5cbmxldCByX2RpZmYgOiAoZnJvbV86c3RyaW5nIC0+IHRvXzpzdHJpbmcgLT4gdW5pdCkgb3B0aW9uIHJlZiA9IHJlZiAgIE5vbmVcbmxldCBzZXRfZGlmZl9mdW5jdGlvbiBmID0gcl9kaWZmIDo9IGZcblxubGV0IFtAY29sZF0gdGVzdF9yZXN1bHRfb3JfZXFfZmFpbGVkIH5zZXhwaWZpZXIgfmV4cGVjdCB+Z290ID1cbiAgbGV0IGdvdCA9IHNleHBpZmllciBnb3QgaW5cbiAgbGV0IGV4cGVjdCA9IHNleHBpZmllciBleHBlY3QgaW5cbiAgYmVnaW4gbWF0Y2ggIXJfZGlmZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGlmZiAtPlxuICAgIGxldCBmcm9tXyA9IFNleHAudG9fc3RyaW5nX2h1bSBleHBlY3QgaW5cbiAgICBsZXQgdG9fICAgPSBTZXhwLnRvX3N0cmluZ19odW0gZ290IGluXG4gICAgZGlmZiB+ZnJvbV8gfnRvX1xuICBlbmQ7XG4gIGBGYWlsIChleHBlY3QsIGdvdClcblxubGV0IHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCA9XG4gIGxldCBwYXNzID1cbiAgICBtYXRjaCBlcXVhbCB3aXRoXG4gICAgfCBOb25lIC0+IGNvbXBhcmF0b3IgZ290IGV4cGVjdCA9IDBcbiAgICB8IFNvbWUgZiAtPiBmIGdvdCBleHBlY3RcbiAgaW5cbiAgaWYgcGFzc1xuICB0aGVuIGBQYXNzXG4gIGVsc2UgdGVzdF9yZXN1bHRfb3JfZXFfZmFpbGVkIH5zZXhwaWZpZXIgfmV4cGVjdCB+Z290XG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MiA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImNvbXBhcmlzb24gZmFpbGVkXCIgW1xuICAgIHQxO1xuICAgIFNleHAuQXRvbSBcInZzXCI7XG4gICAgdDI7XG4gIF1cblxubGV0IHRlc3RfZXEgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB0MSB0MiA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3Q6dDEgfmdvdDp0MiB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAodDEsIHQyKSAtPiByYWlzZSAoZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJnb3QgdW5leHBlY3RlZCByZXN1bHRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJleHBlY3RlZFwiOyBleHBlY3RdO1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZ290XCI7IGdvdF07XG4gIF1cblxubGV0W0B3YXJuaW5nIFwiLTE2XCJdIHRlc3RfcmVzdWx0IH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290IHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsIChleHBlY3QsIGdvdCkgLT4gcmFpc2UgKGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdClcbiIsImxldCB1bmlxdWVfaWQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcblxuKCogVXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBsaWJuYW1lIGluIHN1Y2ggYSB3YXkgdGhhdCBmb3IgZnVuY3RvciBhcHBsaWNhdGlvbnMsIGl0IGlzXG4gICB0aGUgY2FsbGluZyBsaWJyYXJpZXMgbmFtZSB0aGF0IGdldHMgcmVnaXN0ZXJlZC4gKilcbm1vZHVsZSBDdXJyZW50X2xpYm5hbWUgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIjx1bmtub3duPlwiXG4gIGxldCBsaWJuYW1lX3JlZiA9IHJlZiBudWxsXG4gIGxldCBzZXQgc3RyID0gbGlibmFtZV9yZWYgOj0gc3RyXG4gIGxldCB1bnNldCAoKSA9IGxpYm5hbWVfcmVmIDo9IG51bGxcbiAgbGV0IGdldCAoKSA9ICFsaWJuYW1lX3JlZlxuZW5kXG5cbm1vZHVsZSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjayA9IHN0cnVjdFxuICBsZXQgdCA9IHJlZiBbXVxuICBsZXQgcHVzaCBzID0gdCA6PSBzIDo6ICF0XG4gIGxldCBwb3BfZXhuICgpID0gdCA6PSBMaXN0LnRsICF0XG5cbiAgbGV0IHRvX25hbWUgKCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG1zIC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIuXCIgKExpc3QucmV2IG1zKSlcbiAgOztcbmVuZFxuXG4oKiBUaGlzIGlzIHRoZSBtYWluIGRhdGEgc3RydWN0dXJlIG9mIHRoaXMgbW9kdWxlLiBBbiBbRW50cnkudF0gcmVwcmVzZW50cyBhIGJlbmNobWFya1xuICAgYWxvbmcgd2l0aCBzb21lIG1ldGFkYXRhIGFib3V0IGlzIHBvc2l0aW9uLCBhcmd1bWVudHMgZXRjLiAqKVxubW9kdWxlIEVudHJ5ID0gc3RydWN0XG4gIHR5cGUgKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyA9XG4gICAgeyBhcmdfbmFtZSA6IHN0cmluZ1xuICAgIDsgcGFyYW1zIDogKHN0cmluZyAqICdwYXJhbSkgbGlzdFxuICAgIDsgdGh1bmsgOiAncGFyYW0gLT4gdW5pdCAtPiAnYVxuICAgIH1cblxuICB0eXBlIHRlc3Rfc3BlYyA9XG4gICAgfCBSZWd1bGFyX3RodW5rIDogKFsgYGluaXQgXSAtPiB1bml0IC0+ICdhKSAtPiB0ZXN0X3NwZWNcbiAgICB8IFBhcmFtZXRlcmlzZWRfdGh1bmsgOiAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjIC0+IHRlc3Rfc3BlY1xuXG4gIHR5cGUgdCA9XG4gICAgeyB1bmlxdWVfaWQgOiBpbnRcbiAgICA7IGNvZGUgOiBzdHJpbmdcbiAgICA7IHR5cGVfY29udl9wYXRoIDogc3RyaW5nXG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyBmaWxlbmFtZSA6IHN0cmluZ1xuICAgIDsgbGluZSA6IGludFxuICAgIDsgc3RhcnRwb3MgOiBpbnRcbiAgICA7IGVuZHBvcyA6IGludFxuICAgIDsgdGVzdF9zcGVjIDogdGVzdF9zcGVjXG4gICAgOyBiZW5jaF9tb2R1bGVfbmFtZSA6IHN0cmluZyBvcHRpb25cbiAgICB9XG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlIHQxLnVuaXF1ZV9pZCB0Mi51bmlxdWVfaWRcblxuICAoKiBFeHRyYWN0cyBtb2R1bGUgbmFtZSBmcm9tIFtcImZpbGVuYW1lLm1sLk1vZHVsZVwiXSwgd2hpY2ggaXMgdGhlIGZvcm1hdCBvZiBbZXh0X25hbWVdXG4gICAgIGFzIHNldCBieSBbdHlwZWNvbnZdLiAqKVxuICBsZXQgZ2V0X21vZHVsZV9uYW1lX29wdCB0ID1cbiAgICBsZXQgc3RyID0gdC50eXBlX2NvbnZfcGF0aCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgKyA0IDw9IGxlblxuICAgICAgdGhlblxuICAgICAgICBpZiBTdHJpbmcuc3ViIHN0ciBpIDQgPSBcIi5tbC5cIlxuICAgICAgICB0aGVuIFNvbWUgKFN0cmluZy5zdWIgc3RyIChpICsgNCkgKGxlbiAtIGkgLSA0KSlcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIDs7XG5cbiAgbGV0IHdpdGhfdGVzdF9zcGVjIHQgdGVzdF9zcGVjID0geyB0IHdpdGggdGVzdF9zcGVjIH1cbmVuZFxuXG4oKiBJbnNwZWN0IHN5c3RlbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVjaWRlIGlmIGJlbmNobWFya3MgYXJlIGJlaW5nIHJ1bi4gVGhpcyBpc1xuICAgY2FsbGVkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgW3BhX2JlbmNoXSBzeW50YXggdG8gZGVjaWRlIGlmIHRoZSBnbG9iYWwgaGFzaHRhYmxlXG4gICBzaG91bGQgYmUgcG9wdWxhdGVkLiAqKVxubGV0IGFkZF9lbnZpcm9ubWVudF92YXIgPVxuICBsZXQgdiA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJCRU5DSE1BUktTX1JVTk5FUlwiIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBcIlwiXG4gIGluXG4gIHYgPSBcIlRSVUVcIlxuOztcblxuKCogVGhpcyBoYXNodGFibGUgY29udGFpbnMgYWxsIHRoZSBiZW5jaG1hcmtzIGZyb20gYWxsIHRoZSBvZiBsaWJyYXJpZXMgdGhhdCBoYXZlIGJlZW5cbiAgIGxvYWRlZC4gQXQgdGhlIHRpbWUgdGhlIGJlbmNobWFya3MgYXJlIHJlZ2lzdGVyaW5nIHRoZW1zZWx2ZXMgd2l0aCBbcHB4X2JlbmNoX2xpYl0gd2VcbiAgIGRvbid0IHlldCBrbm93IHdoaWNoIGxpYnJhcmllcyB3aWxsIG5lZWQgdG8gYmUgcnVuLiAgKilcbmxldCBsaWJzX3RvX2VudHJpZXMgOiAoc3RyaW5nLCBFbnRyeS50IGxpc3QpIEhhc2h0YmwudCA9IEhhc2h0YmwuY3JlYXRlIDEwXG5cbmxldCBsb29rdXBfcmV2X2xpYiB+bGlibmFtZSA9XG4gIHRyeSBIYXNodGJsLmZpbmQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBbXVxuOztcblxubGV0IGxvb2t1cF9saWIgfmxpYm5hbWUgPSBMaXN0LnJldiAobG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG5cbmxldCBmb3JjZV9kcm9wID1cbiAgKCogVXNlZnVsIGZvciBqc19vZl9vY2FtbCB0byBwZXJmb3JtIGRlYWRjb2RlIGVsaW1pbmF0aW9uLlxuICAgICBzZWUgcHB4L3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIFtBY3Rpb24uZ2V0XSBmb3IgbW9yZSBkZXRhaWxzICopXG4gIHRyeVxuICAgIGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfQkVOQ0hcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X21vZGUgKCkgPSBpZiBmb3JjZV9kcm9wIHRoZW4gYElnbm9yZSBlbHNlIGBDb2xsZWN0XG5cbmxldFtAaW5saW5lIG5ldmVyXSBhZGRfYmVuY2hcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZVxuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGhcbiAgICAgICAgICAgICAgICAgICAgIH5saW5lXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRwb3NcbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3NcbiAgICAgICAgICAgICAgICAgICAgIHRlc3Rfc3BlY1xuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICBsZXQgbGlibmFtZSA9IEN1cnJlbnRfbGlibmFtZS5nZXQgKCkgaW5cbiAgICBsZXQgZW50cnkgPVxuICAgICAgeyBFbnRyeS5jb2RlXG4gICAgICA7IHVuaXF1ZV9pZCA9IHVuaXF1ZV9pZCAoKVxuICAgICAgOyB0eXBlX2NvbnZfcGF0aFxuICAgICAgOyBiZW5jaF9tb2R1bGVfbmFtZSA9IEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnRvX25hbWUgKClcbiAgICAgIDsgbmFtZVxuICAgICAgOyBmaWxlbmFtZVxuICAgICAgOyBsaW5lXG4gICAgICA7IHN0YXJ0cG9zXG4gICAgICA7IGVuZHBvc1xuICAgICAgOyB0ZXN0X3NwZWNcbiAgICAgIH1cbiAgICBpblxuICAgIEhhc2h0YmwuYWRkIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIChlbnRyeSA6OiBsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBhZGRfYmVuY2hfbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGU6X1xuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoOl9cbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpfXG4gICAgICAgICAgICAgICAgICAgICB+bGluZTpfXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvczpfXG4gICAgICAgICAgICAgICAgICAgICBmXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgICgqIFJ1bm5pbmcgZiByZWdpc3RlcnMgdGhlIGJlbmNobWFya3MgdXNpbmcgQkVOQ0ggKilcbiAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wdXNoIG5hbWU7XG4gICAgKHRyeVxuICAgICAgIGYgKCk7XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKVxuICAgICB3aXRoXG4gICAgIHwgZXggLT5cbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpO1xuICAgICAgIHJhaXNlIGV4KVxuOztcbiIsInR5cGUgdCA9IHN0cmluZ1xuXG4oKiBTaGFyZSB0aGUgZGlnZXN0IG9mIHRoZSBlbXB0eSBzdHJpbmcgKilcbmxldCBlbXB0eSA9IERpZ2VzdC5zdHJpbmcgXCJcIlxubGV0IG1ha2UgcyA9XG4gIGlmIHMgPSBlbXB0eSB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIHNcblxubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbmxldCBsZW5ndGggPSAxNlxuXG5sZXQgdG9fYmluYXJ5IHMgPSBzXG5sZXQgb2ZfYmluYXJ5X2V4biBzID0gYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHMgPSBsZW5ndGgpOyBtYWtlIHNcbmxldCB1bnNhZmVfb2ZfYmluYXJ5ID0gbWFrZVxuXG5sZXQgdG9faGV4ID0gRGlnZXN0LnRvX2hleFxubGV0IG9mX2hleF9leG4gcyA9IG1ha2UgKERpZ2VzdC5mcm9tX2hleCBzKVxuXG5sZXQgc3RyaW5nIHMgPSBtYWtlIChEaWdlc3Quc3RyaW5nIHMpXG5cbmxldCBieXRlcyBzID0gbWFrZSAoRGlnZXN0LmJ5dGVzIHMpXG5cbmxldCBzdWJieXRlcyBieXRlcyB+cG9zIH5sZW4gPSBtYWtlIChEaWdlc3Quc3ViYnl0ZXMgYnl0ZXMgcG9zIGxlbilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExvY2F0aW9uIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVdWlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbmxldCBldmFsX2ZhaWwgbG9jIGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIHMgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmICFcIiV7TG9jYXRpb259OiAlc1wiIGxvYyBzKSkgZm10XG47O1xuXG5sZXQgZXF1YWxfb3B0aW9uIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFNvbWUgXywgTm9uZSB8IE5vbmUsIFNvbWUgXyAtPiBmYWxzZVxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuOztcblxubW9kdWxlIFNvcnRlZF90YWJsZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0IC0+ICdhIHRcbiAgdmFsIGV4cG9zZSA6ICdhIHQgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0geyBzb3J0ZWQgOiAoc3RyaW5nICogJ2EpIGxpc3QgfSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtZXJnZV9jaGVja19hZGphY2VudF9kdXBzXG4gICAgOiAgZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgICAgLT4gWyBgT2sgb2YgKHN0cmluZyAqICdhKSBsaXN0IHwgYE1pc21hdGNoIG9mIHN0cmluZyBdXG4gICAgPVxuICAgIGZ1biB+ZXEgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGBPayAoTGlzdC5yZXYgYWNjKVxuICAgICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT5cbiAgICAgICAgaWYgU3RyaW5nLihsYXN0X2tleSA9IGtleSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIGVxIGxhc3RfdmFsdWUgdmFsdWUgdGhlbiBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgeHMgZWxzZSBgTWlzbWF0Y2gga2V5XG4gICAgICAgIGVsc2UgbG9vcCAoKGtleSwgdmFsdWUpIDo6IGFjYykgfmxhc3Rfa2V5OmtleSB+bGFzdF92YWx1ZTp2YWx1ZSB4c1xuICAgIGluXG4gICAgZnVuY3Rpb25cbiAgICB8IFtdIC0+IGBPayBbXVxuICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+IGxvb3AgWyBrZXksIHZhbHVlIF0gfmxhc3Rfa2V5OmtleSB+bGFzdF92YWx1ZTp2YWx1ZSB4c1xuICA7O1xuXG4gIGxldCBjcmVhdGUgbG9jIH5lcSB4cyA9XG4gICAgbGV0IHNvcnRlZCA9IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgeHMgaW5cbiAgICBtYXRjaCBtZXJnZV9jaGVja19hZGphY2VudF9kdXBzIH5lcSBzb3J0ZWQgd2l0aFxuICAgIHwgYE9rIHNvcnRlZCAtPiB7IHNvcnRlZCB9XG4gICAgfCBgTWlzbWF0Y2ggcyAtPlxuICAgICAgZXZhbF9mYWlsIGxvYyBcIkRpZmZlcmVudCBzaGFwZXMgZm9yIGR1cGxpY2F0ZWQgcG9seW1vcnBoaWMgY29uc3RydWN0b3I6IGAlc1wiIHMgKClcbiAgOztcblxuICBsZXQgZXhwb3NlIHQgPSB0LnNvcnRlZFxuICBsZXQgbWFwIHQgfmYgPSB7IHNvcnRlZCA9IExpc3QubWFwIHQuc29ydGVkIH5mOihmdW4gKGssIHYpIC0+IGssIGYgdikgfVxuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0ID0gTWQ1X2xpYi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIHRvX21kNSA6IHQgLT4gTWQ1X2xpYi50XG4gIHZhbCBvZl9tZDUgOiBNZDVfbGliLnQgLT4gdFxuICB2YWwgdG9faGV4IDogdCAtPiBzdHJpbmdcbiAgdmFsIGNvbnN0cnVjdG9yIDogc3RyaW5nIC0+IHQgbGlzdCAtPiB0XG4gIHZhbCBsaXN0IDogdCBsaXN0IC0+IHRcbiAgdmFsIHBhaXIgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIHV1aWQgOiBVdWlkLnQgLT4gdFxuICB2YWwgaW50IDogaW50IC0+IHRcbiAgdmFsIG9wdGlvbiA6IHQgb3B0aW9uIC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1kNV9saWJcblxuICBsZXQgdG9fbWQ1IHQgPSB0XG4gIGxldCBvZl9tZDUgdCA9IHRcbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gc2V4cF9vZl9zdHJpbmdcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBzdHJpbmdfb2Zfc2V4cCB8PiBvZl9oZXhfZXhuXG4gIGxldCB1dWlkIHUgPSBzdHJpbmcgKFV1aWQudG9fc3RyaW5nIHUpXG4gIGxldCBpbnQgeCA9IHN0cmluZyAoSW50LnRvX3N0cmluZyB4KVxuICBsZXQgcGFpciB4IHkgPSBzdHJpbmcgKHRvX2JpbmFyeSB4IF4gdG9fYmluYXJ5IHkpXG4gIGxldCBsaXN0IGwgPSBzdHJpbmcgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChMaXN0Lm1hcCB+Zjp0b19iaW5hcnkgbCkpXG4gIGxldCBjb25zdHJ1Y3RvciBzIGwgPSBzdHJpbmcgKHMgXiB0b19iaW5hcnkgKGxpc3QgbCkpXG5cbiAgbGV0IG9wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGNvbnN0cnVjdG9yIFwibm9uZVwiIFtdXG4gICAgfCBTb21lIHggLT4gY29uc3RydWN0b3IgXCJzb21lXCIgWyB4IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvciA9IHN0cnVjdFxuICAoKiBbJ2EgdF0gaXMgYSBub24tcmVjdXJzaXZlIHR5cGUsIHVzZWQgdG8gcmVwcmVzZW50IDEtbGF5ZXIgb2YgZXhwcmVzc2lvbi4gIFRoZVxuICAgICByZWN1cnNpdmUga25vdCBpcyB0aWVkIGJlbG93IGluIFtDYW5vbmljYWxfZnVsbC5FeHAudF0uICopXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBbm5vdGF0ZSBvZiBVdWlkLnQgKiAnYVxuICAgIHwgQmFzZSBvZiBVdWlkLnQgKiAnYSBsaXN0XG4gICAgfCBUdXBsZSBvZiAnYSBsaXN0XG4gICAgfCBSZWNvcmQgb2YgKHN0cmluZyAqICdhKSBsaXN0XG4gICAgfCBWYXJpYW50IG9mIChzdHJpbmcgKiAnYSBsaXN0KSBsaXN0XG4gICAgKCogUG9seW1vcnBoaWMgdmFyaWFudHMgYXJlIGluc2Vuc2l0aXZlIHRvIHRoZSBvcmRlciB0aGUgY29uc3RydWN0b3JzIGFyZSBsaXN0ZWQgKilcbiAgICB8IFBvbHlfdmFyaWFudCBvZiAnYSBvcHRpb24gU29ydGVkX3RhYmxlLnRcbiAgICAoKiBMZWZ0LWhhbmQtc2lkZSBvZiBbQXBwbGljYXRpb25dIGlzIGEgcG90ZW50aWFsbHkgcmVjdXJzaXZlIGRlZmluaXRpb246IGl0XG4gICAgICAgY2FuIHJlZmVyIHRvIGl0c2VsZiB1c2luZyBbUmVjX2FwcCAoaSwgXyldIHdoZXJlIFtpXSBpcyB0aGUgZGVwdGggb2YgdGhpc1xuICAgICAgIGFwcGxpY2F0aW9uIG5vZGUgKGhvdyBtYW55IGFwcGxpY2F0aW9uIG5vZGVzIGFyZSBhYm92ZSBpdCkuXG4gICAgICAgSXQgYWxzbyBoYXMgaXRzIG93biBzY29wZSBvZiB0eXBlIHZhcmlhYmxlcyBzbyBpdCBjYW4gbm90IHJlZmVyIHRvIHR5cGUgdmFyaWFibGVzXG4gICAgICAgb2YgdGhlIGVuY2xvc2luZyBzY29wZS5cbiAgICAqKVxuICAgIHwgQXBwbGljYXRpb24gb2YgJ2EgKiAnYSBsaXN0XG4gICAgfCBSZWNfYXBwIG9mIGludCAqICdhIGxpc3RcbiAgICB8IFZhciBvZiBpbnRcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgbWFwIHggfmYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQW5ub3RhdGUgKHUsIHgpIC0+IEFubm90YXRlICh1LCBmIHgpXG4gICAgfCBCYXNlIChzLCB4cykgLT4gQmFzZSAocywgTGlzdC5tYXAgfmYgeHMpXG4gICAgfCBUdXBsZSB4cyAtPiBUdXBsZSAoTGlzdC5tYXAgfmYgeHMpXG4gICAgfCBSZWNvcmQgbCAtPiBSZWNvcmQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeCkgLT4gcywgZiB4KSlcbiAgICB8IFZhcmlhbnQgbCAtPiBWYXJpYW50IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHhzKSAtPiBzLCBMaXN0Lm1hcCB+ZiB4cykpXG4gICAgfCBQb2x5X3ZhcmlhbnQgdCAtPiBQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5tYXAgdCB+ZjooT3B0aW9uLm1hcCB+ZikpXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gQXBwbGljYXRpb24gKGYgeCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFJlY19hcHAgKHQsIGwpIC0+IFJlY19hcHAgKHQsIExpc3QubWFwIH5mIGwpXG4gICAgfCBWYXIgdiAtPiBWYXIgdlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biBfIC0+IEF0b20gXCIuLi5cIikgdClcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2RpZ2VzdCA6IHNpZ1xuICAoKiBEaWdlc3QgdmFyaW91cyBleHByZXNzaW9uIGZvcm1zICopXG5cbiAgdmFsIGRpZ2VzdF9sYXllciA6IERpZ2VzdC50IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCAtPiBEaWdlc3QudFxuZW5kID0gc3RydWN0XG4gIGxldCBkaWdlc3RfbGF5ZXIgPSBmdW5jdGlvblxuICAgIHwgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Bbm5vdGF0ZSAodSwgeCkgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvciBcImFubm90YXRlXCIgWyBEaWdlc3QudXVpZCB1OyB4IF1cbiAgICB8IEJhc2UgKHUsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImJhc2VcIiBbIERpZ2VzdC51dWlkIHU7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgVHVwbGUgbCAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ0dXBsZVwiIFsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBSZWNvcmQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicmVjb3JkXCJcbiAgICAgICAgWyBEaWdlc3QubGlzdCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB0KSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSB0KSkgXVxuICAgIHwgVmFyaWFudCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJ2YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biAocywgbCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgKERpZ2VzdC5saXN0IGwpKSlcbiAgICAgICAgXVxuICAgIHwgUG9seV92YXJpYW50IHRhYmxlIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJwb2x5X3ZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgKFNvcnRlZF90YWJsZS5leHBvc2UgdGFibGUpIH5mOihmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyB4KSAoRGlnZXN0Lm9wdGlvbiB5KSkpXG4gICAgICAgIF1cbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJhcHBsaWNhdGlvblwiIFsgeDsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBSZWNfYXBwIChuLCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJyZWNfYXBwXCIgWyBEaWdlc3QuaW50IG47IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgVmFyIG4gLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidmFyXCIgWyBEaWdlc3QuaW50IG4gXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWaXNpYmlsaXR5ID0gc3RydWN0XG4gIHR5cGUgdmlzaWJsZSA9IFZpc2libGVcbiAgdHlwZSBvcGFxdWUgPSBPcGFxdWVcblxuICBsZXQgXyA9IFZpc2libGVcbiAgbGV0IF8gPSBPcGFxdWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBDYW5vbmljYWwgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2RpZ2VzdCA6IHQgLT4gRGlnZXN0LnRcblxuICBtb2R1bGUgRXhwMSA6IHNpZ1xuICAgIHR5cGUgXyB0XG5cbiAgICB2YWwgdmFyIDogaW50IC0+IF8gdFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gdCBsaXN0IC0+IF8gdFxuICAgIHZhbCBhcHBseSA6ICdhIHQgLT4gJ2EgdCBsaXN0IC0+IF8gdFxuICAgIHZhbCBvcGFxdWUgOiBfIHQgLT4gVmlzaWJpbGl0eS5vcGFxdWUgdFxuXG4gICAgdmFsIGdldF9wb2x5X3ZhcmlhbnRcbiAgICAgIDogIFZpc2liaWxpdHkudmlzaWJsZSB0XG4gICAgICAtPiAoVmlzaWJpbGl0eS5vcGFxdWUgdCBvcHRpb24gU29ydGVkX3RhYmxlLnQsIHN0cmluZykgUmVzdWx0LnRcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA6IHNpZ1xuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA6IHNpZ1xuICAgIHZhbCBhbm5vdGF0ZSA6IFV1aWQudCAtPiBfIEV4cDEudCAtPiBfIEV4cDEudFxuICAgIHZhbCBiYXNldHlwZSA6IFV1aWQudCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHR1cGxlIDogXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBwb2x5X3ZhcmlhbnQgOiBMb2NhdGlvbi50IC0+IChzdHJpbmcgKiBfIEV4cDEudCBvcHRpb24pIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyIDogaW50IC0+IF8gRXhwMS50XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBhcHBseSA6ICdhIEV4cDEudCAtPiAnYSBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBkZWZpbmUgOiBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50IC0+IERlZi50XG4gICAgdmFsIHJlY29yZCA6IChzdHJpbmcgKiBfIEV4cDEudCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXJpYW50IDogKHN0cmluZyAqIF8gRXhwMS50IGxpc3QpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgY3JlYXRlIDogXyBFeHAxLnQgLT4gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2RpZ2VzdCA6IENhbm9uaWNhbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBDYW5vbmljYWwgb2YgRGlnZXN0LnRcblxuICBsZXQgdG9fZGlnZXN0IChDYW5vbmljYWwgeCkgPSB4XG5cbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSBvcGFxdWUgPSBEaWdlc3QudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgUG9seV92YXJpYW50IG9mIG9wYXF1ZSBvcHRpb24gU29ydGVkX3RhYmxlLnRcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCBvZiAoc3RyaW5nICogb3BhcXVlKVxuICAgICAgfCBPcGFxdWUgOiBvcGFxdWUgLT4gVmlzaWJpbGl0eS5vcGFxdWUgdFxuXG4gICAgbGV0IHRvX2RpZ2VzdCAodHlwZSBhKSAoeCA6IGEgdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9wYXF1ZSB4IC0+IHhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoXywgeCkgLT4geFxuICAgICAgfCBQb2x5X3ZhcmlhbnQgeCAtPiBDRC5kaWdlc3RfbGF5ZXIgKFBvbHlfdmFyaWFudCB4KVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgKHR5cGUgYSkgKHggOiBhIHQpICh5IDogYSB0KSA9XG4gICAgICBEaWdlc3QuY29tcGFyZSAodG9fZGlnZXN0IHgpICh0b19kaWdlc3QgeSkgPSAwXG4gICAgOztcblxuICAgIGxldCBvcGFxdWUgeCA9IE9wYXF1ZSAodG9fZGlnZXN0IHgpXG5cbiAgICBsZXQgY3JlYXRlIHggPVxuICAgICAgbGV0IHggPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLm1hcCB+Zjp0b19kaWdlc3QgeCBpblxuICAgICAgbGV0IGRlc2MgPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnQgbCAtPiBQb2x5X3ZhcmlhbnQgbFxuICAgICAgfCBCYXNlIF8gLT4gTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFubm90YXRlIF8gLT5cbiAgICAgICAgKCogSXQncyB1bnNhZmUgdG8gdXNlIGRlcml2aW5nIGJpbl9pbyB3aGVuIGluaGVyaXRpbmcgZnJvbSBhIHBvbHltb3JwaGljIHZhcmlhbnRcbiAgICAgICAgICAgdGhhdCBoYXMgYSBjdXN0b20gYmluX2lvLiAgSWYgd2UgZm9yYmlkIHRoYXQsIHdlIGNhbiBoYXBwaWx5IHJlamVjdCBoZXJlXG4gICAgICAgICAgIGFueXRoaW5nIHRoYXQncyBhbm5vdGF0ZWQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBcHBsaWNhdGlvbiBfIC0+XG4gICAgICAgICgqIEFwcGxpY2F0aW9uIGNhbiByZWFsbHkgYmUgYSBwb2x5LXZhcmlhbnQgeW91IGNhbiBpbmhlcml0IGZyb20hICBCdXQgaXQncyBhXG4gICAgICAgICAgIHJhcmUgc2l0dWF0aW9uIHRoYXQgbW9zdGx5IChvbmx5PykgYXJpc2VzIHdpdGggaW5oZXJpdGFuY2UgZnJvbSByZWN1cnNpdmVcbiAgICAgICAgICAgcG9seW1vcnBpYyB2YXJpYW50cywgd2hpY2ggd2UndmUgbm90IHNlZW4gYW55d2hlcmUgeWV0LiAgU28gd2UgcmVqZWN0IGl0LiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgUmVjX2FwcCBfIC0+XG4gICAgICAgICgqIFlvdSBjYW4gb25seSBnZXQgdGhlIFtSZWNfYXBwXSBjb25zdHJ1Y3RvciBmb3IgdHlwZS1yZWZlcmVuY2VzIHdpdGhpbiB0aGVcbiAgICAgICAgICAgbXV0dWFsIGdyb3VwIGJlaW5nIGRlZmluZWQuIFJlZmVyZW5jZXMgd2hpY2hcbiAgICAgICAgICAgZm9sbG93IGFmdGVyIHRoZSBjdXJyZW50IGdyb3VwIHdpbGwgYWx3YXlzIGJlIFtBcHBsaWNhdGlvbl1zLlxuXG4gICAgICAgICAgIEFuZCBzaW5jZSBvY2FtbCByZWplY3RzIHJlZmVyZW5jZXMgaW4gYGluaGVyaXRhbmNlJyBwb3NpdGlvbiB0byB0eXBlcyB3aXRoaW5cbiAgICAgICAgICAgdGhlIGN1cnJlbnQgZ3JvdXAgKHNlZSBleGFtcGxlKSB3aXRoOlxuXG4gICAgICAgICAgIEVycm9yOiBUaGUgdHlwZSBjb25zdHJ1Y3RvciB0XG4gICAgICAgICAgIGlzIG5vdCB5ZXQgY29tcGxldGVseSBkZWZpbmVkXG5cbiAgICAgICAgICAgdGhlbiBpdHMgb2sgdG8gc2F5IHRoYXQgYSByZWMtYXBwIGlzIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIGluaGVyaXRlZCBmcm9tIGFuZFxuICAgICAgICAgICByZXR1cm4gW05vbl9wb2x5X3ZhcmlhbnRdLlxuXG4gICAgICAgICAgIEFuZCB1bmxpa2UgdGhlIFtBcHBsaWNhdGlvbl0gY2FzZSwgaXQgc2hvdWxkIG5ldmVyIGJlIHBvc3NpYmxlIHRvIHNlZVxuICAgICAgICAgICBhbiBlcnJvciBtZXNzYWdlIHdpdGggdGhlIFtkZXNjXSA9IFtSZWNfYXBwXS5cblxuICAgICAgICAgICBFeGFtcGxlOiBbdHlwZSB0ID0gW2BhIG9mIFsgfCB0XSBdXVxuICAgICAgICAgICBIZXJlLCBbfCB0XSB3b3VsZCBiZSBhbiBleGFtcGxlIG9mIGluaGVyaXRhbmNlIGZyb20gYSBSZWNfYXBwLCB3aGljaFxuICAgICAgICAgICBpcyByZWplY3RlZCBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBWYXIgXyB8IFR1cGxlIF8gfCBSZWNvcmQgXyB8IFZhcmlhbnQgXyAtPlxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICA7O1xuXG4gICAgbGV0IHZhciB4ID0gY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgZGVmIGwgPSBjcmVhdGUgKEFwcGxpY2F0aW9uIChkZWYsIGwpKVxuICAgIGxldCByZWN1cnNlIHRpZCBsID0gY3JlYXRlIChSZWNfYXBwICh0aWQsIGwpKVxuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgKHggOiBWaXNpYmlsaXR5LnZpc2libGUgdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIF8pIC0+IEVycm9yIGRlc2NcbiAgICAgIHwgUG9seV92YXJpYW50IGwgLT4gT2sgKFNvcnRlZF90YWJsZS5tYXAgfmY6KE9wdGlvbi5tYXAgfmY6KGZ1biB4IC0+IE9wYXF1ZSB4KSkgbClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGVmID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlID0gc3RydWN0XG4gICAgbGV0IGFubm90YXRlIHUgeCA9IEV4cDEuY3JlYXRlIChBbm5vdGF0ZSAodSwgeCkpXG4gICAgbGV0IGJhc2V0eXBlIHUgbCA9IEV4cDEuY3JlYXRlIChCYXNlICh1LCBsKSlcbiAgICBsZXQgdHVwbGUgbCA9IEV4cDEuY3JlYXRlIChUdXBsZSBsKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgbCA9XG4gICAgICBFeHAxLmNyZWF0ZSAoUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUuY3JlYXRlIGxvYyB+ZXE6KGVxdWFsX29wdGlvbiBFeHAxLmVxdWFsKSBsKSlcbiAgICA7O1xuXG4gICAgbGV0IHZhciB4ID0gRXhwMS5jcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSB4IGwgPSBFeHAxLmNyZWF0ZSAoQXBwbGljYXRpb24gKHgsIGwpKVxuICAgIGxldCByZWN1cnNlIHQgbCA9IEV4cDEuY3JlYXRlIChSZWNfYXBwICh0LCBsKSlcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCBsID0gRXhwMS5jcmVhdGUgKFJlY29yZCBsKVxuICAgIGxldCB2YXJpYW50IGwgPSBFeHAxLmNyZWF0ZSAoVmFyaWFudCBsKVxuICAgIGxldCBjcmVhdGUgZSA9IENhbm9uaWNhbCAoRXhwMS50b19kaWdlc3QgZSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9mdWxsIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGluY2x1ZGUgQ2Fub25pY2FsIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgdG9fc3RyaW5nX2h1bSA6IHQgLT4gc3RyaW5nXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSB0MCA9IEV4cCBvZiB0MCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbF90MCB4IHkgPSBjb21wYXJlX3QwIHggeSA9IDBcblxuICAgIHR5cGUgJ2EgdCA9IHQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgdmFyIHggPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuVmFyIHgpXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQXBwbGljYXRpb24gKGQsIHhzKSlcbiAgICBsZXQgcmVjdXJzZSByIHhzID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlJlY19hcHAgKHIsIHhzKSlcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID1cbiAgICAgIEV4cFxuICAgICAgICAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnRcbiAgICAgICAgICAgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIGVxdWFsX3QwKSB4cykpXG4gICAgOztcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ID0gZnVuY3Rpb25cbiAgICAgIHwgRXhwIChQb2x5X3ZhcmlhbnQgdGFiKSAtPiBPayB0YWJcbiAgICAgIHwgRXhwIGNjIC0+IEVycm9yIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyBjYylcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB0ID0gdFxuXG4gICAgbGV0IHJlYyB0b19kaWdlc3QgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgZSAtPiBDRC5kaWdlc3RfbGF5ZXIgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICAoKiBBIFtEZWYudF0gaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtYXkgYmUgYXBwbGllZCAqKVxuICAgIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgKCogQSBjYW5vbmljYWwgc2hhcGUgW3RdIGlzIGFuIFtFeHAxLnRdLiAqKVxuICB0eXBlIHQgPSBFeHAxLnQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX2RpZ2VzdCBlID0gRXhwMS50b19kaWdlc3QgZVxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5FeHAgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSB4cyA9IEV4cDEuRXhwIChCYXNlICh1LCB4cykpXG4gICAgbGV0IHR1cGxlIHhzID0gRXhwMS5FeHAgKFR1cGxlIHhzKVxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gRXhwMS5wb2x5X3ZhcmlhbnQgbG9jIHhzXG4gICAgbGV0IHZhciBuID0gRXhwMS5FeHAgKFZhciBuKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAxLnJlY3Vyc2UgciB4c1xuICAgIGxldCBhcHBseSBkIHhzID0gRXhwMS5hcHBseSBkIHhzXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgeHMgPSBFeHAxLkV4cCAoUmVjb3JkIHhzKVxuICAgIGxldCB2YXJpYW50IHhzID0gRXhwMS5FeHAgKFZhcmlhbnQgeHMpXG4gICAgbGV0IGNyZWF0ZSBleHAgPSBleHBcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gdCA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IHQpXG5lbmRcblxubW9kdWxlIFRpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVmlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBHaWQgOiBzaWdcbiAgKCogdW5pcXVlIGdyb3VwLWlkLCB1c2VkIGFzIGtleSBmb3IgVGVudiBiZWxvdyAqKVxuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IHIgPSByZWYgMFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCB1ID0gIXIgaW5cbiAgICByIDo9IDEgKyB1O1xuICAgIHVcbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwcmVzc2lvbiA9IHN0cnVjdFxuICB0eXBlICd0IHBvbHlfY29uc3RyID1cbiAgICBbIGBDb25zdHIgb2Ygc3RyaW5nICogJ3Qgb3B0aW9uXG4gICAgfCBgSW5oZXJpdCBvZiBMb2NhdGlvbi50ICogJ3RcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiAoVGlkLnQgKiBWaWQudCBsaXN0ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBpZCA6ICdhIHQgLT4gR2lkLnRcbiAgICB2YWwgbG9va3VwIDogJ2EgdCAtPiBUaWQudCAtPiBWaWQudCBsaXN0ICogJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgZ2lkIDogR2lkLnRcbiAgICAgIDsgbG9jIDogTG9jYXRpb24udFxuICAgICAgOyBtZW1iZXJzIDogKFRpZC50ICogKFZpZC50IGxpc3QgKiAnYSkpIGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSBsb2MgdHJpcHMgPVxuICAgICAgbGV0IGdpZCA9IEdpZC5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBtZW1iZXJzID0gTGlzdC5tYXAgdHJpcHMgfmY6KGZ1biAoeCwgdnMsIHQpIC0+IHgsICh2cywgdCkpIGluXG4gICAgICB7IGdpZDsgbG9jOyBtZW1iZXJzIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIGcgPSBnLmdpZFxuXG4gICAgbGV0IGxvb2t1cCBnIHRpZCA9XG4gICAgICBtYXRjaCBMaXN0LkFzc29jLmZpbmQgZy5tZW1iZXJzIH5lcXVhbDpUaWQuKCA9ICkgdGlkIHdpdGhcbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgZXZhbF9mYWlsXG4gICAgICAgICAgZy5sb2NcbiAgICAgICAgICAhXCJpbXBvc3NpYmxlOiBsb29rdXBfZ3JvdXAsIHVuYm91bmQgdHlwZS1pZGVudGlmaWVyOiAle1RpZH1cIlxuICAgICAgICAgIHRpZFxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqIHRcbiAgICB8IEJhc2Ugb2YgVXVpZC50ICogdCBsaXN0XG4gICAgfCBSZWNvcmQgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgbGlzdCkgbGlzdFxuICAgIHwgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBQb2x5X3ZhcmlhbnQgb2YgKExvY2F0aW9uLnQgKiB0IHBvbHlfY29uc3RyIGxpc3QpXG4gICAgfCBWYXIgb2YgKExvY2F0aW9uLnQgKiBWaWQudClcbiAgICB8IFJlY19hcHAgb2YgVGlkLnQgKiB0IGxpc3RcbiAgICB8IFRvcF9hcHAgb2YgdCBHcm91cC50ICogVGlkLnQgKiB0IGxpc3RcbiAgW0BAZGVyaXZpbmcgdmFyaWFudHMsIHNleHBfb2ZdXG5cbiAgdHlwZSBncm91cCA9IHQgR3JvdXAudFxuXG4gIGxldCBncm91cCA9IEdyb3VwLmNyZWF0ZVxuXG4gIHR5cGUgcG9seV92YXJpYW50X3JvdyA9IHQgcG9seV9jb25zdHJcblxuICBsZXQgY29uc3RyIHMgdCA9IGBDb25zdHIgKHMsIHQpXG4gIGxldCBpbmhlcml0XyBsb2MgdCA9IGBJbmhlcml0IChsb2MsIHQpXG4gIGxldCB2YXIgbG9jIHQgPSBWYXIgKGxvYywgdClcbiAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBQb2x5X3ZhcmlhbnQgKGxvYywgeHMpXG4gIGxldCBiYXNldHlwZSA9IGJhc2VcblxuICAoKiBcIlZSXCIgc3RhbmRzIGZvciBcInZhcmlhbnQgb3IgcmVjb3JkXCIgKilcblxuICBsZXQgaXNfY3ljbGljXzAgfih2aWFfVlIgOiBib29sKSA6IGdyb3VwIC0+IFRpZC50IC0+IGJvb2wgPVxuICAgIGZ1biBncm91cCB0aWQgLT5cbiAgICBsZXQgc2V0ID0gcmVmIFtdIGluXG4gICAgbGV0IHZpc2l0ZWQgdGlkID0gTGlzdC5tZW0gIXNldCB0aWQgfmVxdWFsOlRpZC5lcXVhbCBpblxuICAgIGxldCBhZGQgdGlkID0gc2V0IDo9IHRpZCA6OiAhc2V0IGluXG4gICAgbGV0IHJlYyB0cmF2ID0gZnVuY3Rpb25cbiAgICAgICgqIFdlIGxvb2sgZm9yIGN5Y2xlcyBieSB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdHlwZS1leHByZXNzaW9ucyAqKVxuICAgICAgfCBBbm5vdGF0ZSAoXywgdCkgLT4gdHJhdiB0XG4gICAgICB8IEJhc2UgKF8sIHRzKSB8IFR1cGxlIHRzIHwgVG9wX2FwcCAoXywgXywgdHMpIC0+IExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgICAoKiAuLmluY2x1ZGluZyBwb2x5LXZhcmlhbnRzICopXG4gICAgICB8IFBvbHlfdmFyaWFudCAoXywgY3MpIC0+XG4gICAgICAgIExpc3QuaXRlciBjcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IGBDb25zdHIgKF8sIE5vbmUpIC0+ICgpXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBTb21lIHQpIC0+IHRyYXYgdFxuICAgICAgICAgIHwgYEluaGVyaXQgKF9sb2MsIHQpIC0+IHRyYXYgdClcbiAgICAgICgqIC4uIGFuZCByZWNvcmRzICYgKG5vcm1hbCkgdmFyaWFudHMgKilcbiAgICAgIHwgUmVjb3JkIHhzIC0+IGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0KSAtPiB0cmF2IHQpIGVsc2UgKClcbiAgICAgIHwgVmFyaWFudCB4cyAtPlxuICAgICAgICBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdHMpIC0+IExpc3QuaXRlciB+Zjp0cmF2IHRzKSBlbHNlICgpXG4gICAgICAoKiBXZSBkb250IGZvbGxvdyB0eXBlLXZhcnMgKilcbiAgICAgIHwgVmFyIF8gLT4gKClcbiAgICAgICgqIHRyYXZlcnNlIChyZWN1cnNpdmUpIHR5cGUtYXBwcyB3aGVuIGZpcnN0IGVuY291bnRlcmVkICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgdHMpIC0+XG4gICAgICAgIGlmIHZpc2l0ZWQgdGlkXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYWRkIHRpZDtcbiAgICAgICAgICB0cmF2X3RpZCB0aWQpO1xuICAgICAgICBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgIGFuZCB0cmF2X3RpZCB0aWQgPVxuICAgICAgbGV0IF8sIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICB0cmF2IGJvZHlcbiAgICBpblxuICAgIHRyYXZfdGlkIHRpZDtcbiAgICBsZXQgcmVzID0gdmlzaXRlZCB0aWQgaW5cbiAgICAoKmxldCBfc3MgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKExpc3QubWFwICghc2V0KSB+Zjooc3ByaW50ZiAhXCIle1RpZH1cIikpIGluKilcbiAgICAoKlByaW50Zi5wcmludGYgIVwiaXNfY3lsaWM6ICV7VGlkfSAtLT4gKCVzKSAlYiAgLS0gJXMlIVwiIHRpZCBfc3MgcmVzIChHcm91cC5sb2MgZ3JvdXApOyopXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGlzX2N5Y2xpYyA9IGlzX2N5Y2xpY18wIH52aWFfVlI6dHJ1ZVxuICBsZXQgaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOmZhbHNlXG5lbmRcblxuaW5jbHVkZSBFeHByZXNzaW9uXG5cbm1vZHVsZSBFdmFsdWF0aW9uIChDYW5vbmljYWwgOiBDYW5vbmljYWwpID0gc3RydWN0XG4gICgqIFtWZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS12YXJzICopXG4gIG1vZHVsZSBWZW52IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbG9va3VwIDogdCAtPiBWaWQudCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb25cbiAgICB2YWwgY3JlYXRlIDogKFZpZC50ICogVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQpIGxpc3QgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBNYXAuTShWaWQpLnRcblxuICAgIGxldCBjcmVhdGUgPVxuICAgICAgTGlzdC5mb2xkXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBWaWQpKVxuICAgICAgICB+ZjooZnVuIHQgKGssIHYpIC0+IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgZW5kXG5cbiAgbW9kdWxlIEFwcGxpY2FuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnRcbiAgICAgIHwgRGVmaW5pdGlvbiBvZiBDYW5vbmljYWwuRGVmLnRcbiAgZW5kXG5cbiAgKCogW1RlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLWRlZmluaXRpb25zICopXG4gIG1vZHVsZSBUZW52IDogc2lnXG4gICAgdHlwZSBrZXkgPSBHaWQudCAqIFRpZC50XG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZmluZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBvcHRpb25cbiAgICB2YWwgZW1wdHkgOiB0XG4gICAgdmFsIGV4dGVuZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEdpZC50ICogVGlkLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZFxuXG4gICAgdHlwZSBrZXkgPSBLZXkudFxuICAgIHR5cGUgdCA9IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBNYXAuTShLZXkpLnRcblxuICAgIGxldCBmaW5kIHQgayA9IE1hcC5maW5kIHQga1xuICAgIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIEtleSlcbiAgICBsZXQgZXh0ZW5kIHQgayB2ID0gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0XG4gIGVuZFxuXG4gICgqIFtEZWZpbmluZy50XVxuICAgICBNb25hZCBmb3IgbWFuYWdpbmcgdW4tcm9sbGluZyBkZXB0aCwgYW5kIG1haW50YWluZyBhIFtUZW52LnRdICopXG4gIG1vZHVsZSBEZWZpbmluZyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgbG9va19lbnYgOiBUZW52LmtleSAtPiBBcHBsaWNhbmQudCBvcHRpb24gdFxuICAgIHZhbCBleHRlbmRfbmV3X3RpZCA6IFRlbnYua2V5IC0+IENhbm9uaWNhbC5EZWYudCB0IC0+IEFwcGxpY2FuZC50IHRcbiAgICB2YWwgZXhlYyA6ICdhIHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gZGVwdGg6aW50IC0+IFRlbnYudCAtPiAnYVxuXG4gICAgbGV0IHJldHVybiB4IH5kZXB0aDpfIF90ZW52ID0geFxuXG4gICAgbGV0IGJpbmQgdCBmIH5kZXB0aCB0ZW52ID1cbiAgICAgIGxldCB4ID0gdCB+ZGVwdGggdGVudiBpblxuICAgICAgKGYgeCkgfmRlcHRoIHRlbnZcbiAgICA7O1xuXG4gICAgbGV0IGxvb2tfZW52IGtleSB+ZGVwdGg6XyB0ZW52ID1cbiAgICAgIGxldCByZXN1bHQgPSBUZW52LmZpbmQgdGVudiBrZXkgaW5cbiAgICAgIE9wdGlvbi5tYXAgfmY6KGZ1biAoYFJlY3Vyc2lvbl9sZXZlbCB4KSAtPiBBcHBsaWNhbmQuUmVjdXJzaW9uX2xldmVsIHgpIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgZXh0ZW5kX25ld190aWQga2V5IGRlZl90IH5kZXB0aCB0ZW52ID1cbiAgICAgIEFwcGxpY2FuZC5EZWZpbml0aW9uXG4gICAgICAgIChsZXQgdmFsdWUgPSBgUmVjdXJzaW9uX2xldmVsIGRlcHRoIGluXG4gICAgICAgICBsZXQgdGVudiA9IFRlbnYuZXh0ZW5kIHRlbnYga2V5IHZhbHVlIGluXG4gICAgICAgICBkZWZfdCB+ZGVwdGg6KGRlcHRoICsgMSkgdGVudilcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgdCA9IHQgfmRlcHRoOjAgVGVudi5lbXB0eVxuICBlbmRcblxuICB0eXBlICdhIGRlZmluaW5nID0gJ2EgRGVmaW5pbmcudFxuXG4gIGxldCAoID4+PSApID0gRGVmaW5pbmcuYmluZFxuICBsZXQgcmV0dXJuID0gRGVmaW5pbmcucmV0dXJuXG5cbiAgbGV0IHNlcXVlbmNlX2RlZmluaW5nIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYiBkZWZpbmluZykgLT4gJ2IgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIHhzIH5mIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjY195cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjX3lzKVxuICAgICAgfCB4IDo6IHhzIC0+IGYgeCA+Pj0gZnVuIHkgLT4gbG9vcCAoeSA6OiBhY2NfeXMpIHhzXG4gICAgaW5cbiAgICBsb29wIFtdIHhzXG4gIDs7XG5cbiAgKCpcbiAgICAgU2hhcGUgZXZhbHVhdGlvbi5cblxuICAgICBTaGFwZXMgYXJlIGV2YWx1YXRlZCB0byBjYW5vbmljYWwtc2hhcGUgKGV4cHJlc3Npb25zKSwgd2l0aCBhZGRpdGlvbmFsIGRlZnMgY29sbGVjdGVkXG4gICAgIGluIHRoZSBbZGVmaW5pbmddIG1vbmFkLCB3aGljaCBhbHNvIG1hbmFnZXMgZ2VuZXJhdGlvbi9tYXBwaW5nIHRvIFtDYW5vbmljYWwuVGlkLnRdXG5cbiAgICAgVGhlcmUgaXMgZG93bndhcmRzIGNvbnRleHQgb2YgW2dyb3VwXSBhbmQgW1ZlbnYudF1cbiAgICAgVGhlIChjdXJyZW50KSBbZ3JvdXBdIGNoYW5nZXMgd2hlbiB0aGUgY2FzZSBmb3IgW1RvcF9hcHBdIGNhbGxzIFtldmFsX2FwcF0uXG5cbiAgICAgVGhlIGN1cnJlbnQgW1ZlbnYudF0gaXMgYWJhbmRvbmVkIHdoZW4gW2V2YWxfYXBwXSBpcyBjYWxsZWQsIGFuZCB0aGVuIHJlLWNyZWF0ZWQgYWZ0ZXJcbiAgICAgdGhlIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgdG8gZWl0aGVyIGlubGluZSB0aGUgdHlwZS1hcHBsaWNhdGlvbiwgb3IgbWFrZSBhIHJlZmVyZW5jZVxuICAgICB0byBhIHR5cGUtZGVmaW5pdGlvbiwgd2hpY2ggaXMgY3JlYXRlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggKEdpZC50ICogVGlkLnQpLlxuXG4gICAgIFdlIG1ha2UgYSB0eXBlLWRlZmluaXRpb24gYWx3YXlzIGZvciBSZWNvcmRzIGFuZCBWYXJpYW50cywgYW5kIGluIGFkZGl0aW9uIGZvciBhbnlcbiAgICAgb3RoZXIgY3ljbGljIHR5cGUtZGVmaW5pdGlvbi5cbiAgKilcblxuICBsZXQgcmVjIGV2YWwgOiBncm91cCAtPiBWZW52LnQgLT4gdCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFJlY29yZCBiaW5kcyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBiaW5kcyB+ZjooZnVuIChzLCB4KSAtPlxuICAgICAgICAgIGV2YWwgZ3JvdXAgdmVudiB4ID4+PSBmdW4geSAtPiByZXR1cm4gKHMsIHkpKVxuICAgICAgICA+Pj0gZnVuIGJpbmRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5yZWNvcmQgYmluZHMpXG4gICAgICB8IFZhcmlhbnQgYWx0cyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBhbHRzIH5mOihmdW4gKHMsIHhzKSAtPlxuICAgICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHhzID4+PSBmdW4geXMgLT4gcmV0dXJuIChzLCB5cykpXG4gICAgICAgID4+PSBmdW4gYWx0cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudmFyaWFudCBhbHRzKVxuICAgICAgfCBWYXIgKGxvYywgdmlkKSAtPlxuICAgICAgICAobWF0Y2ggVmVudi5sb29rdXAgdmVudiB2aWQgd2l0aFxuICAgICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICAgICAgIHwgTm9uZSAtPiBldmFsX2ZhaWwgbG9jICFcIkZyZWUgdHlwZSB2YXJpYWJsZTogJyV7VmlkfVwiIHZpZCAoKSlcbiAgICAgIHwgQW5ub3RhdGUgKHMsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYW5ub3RhdGUgcyB2KVxuICAgICAgfCBCYXNlIChzLCB0cykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYmFzZXR5cGUgcyB2cylcbiAgICAgIHwgVHVwbGUgdHMgLT4gZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudHVwbGUgdnMpXG4gICAgICB8IFRvcF9hcHAgKGluX2dyb3VwLCB0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3NcbiAgICAgICAgPj49IGZ1biBhcmdzIC0+XG4gICAgICAgICgqIGFyZ3MgZXZhbHVhdGVkIGluIGN1cnJlbnQgZ3JvdXAgKilcbiAgICAgICAgZXZhbF9hcHAgaW5fZ3JvdXAgdGlkIGFyZ3NcbiAgICAgICgqIGdyb3VwIGNoYW5nZWQgaGVyZSAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3MgPj49IGZ1biBhcmdzIC0+IGV2YWxfYXBwIGdyb3VwIHRpZCBhcmdzXG4gICAgICB8IFBvbHlfdmFyaWFudCAobG9jLCBjcykgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgfmY6KGV2YWxfcG9seV9jb25zdHIgZ3JvdXAgdmVudikgY3NcbiAgICAgICAgPj49IGZ1biB4c3MgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnBvbHlfdmFyaWFudCBsb2MgKExpc3QuY29uY2F0IHhzcykpXG5cbiAgYW5kIGV2YWxfbGlzdCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHRzIC0+IHNlcXVlbmNlX2RlZmluaW5nIHRzIH5mOihldmFsIGdyb3VwIHZlbnYpXG5cbiAgYW5kIGV2YWxfcG9seV9jb25zdHJcbiAgICA6ICBncm91cCAtPiBWZW52LnQgLT4gdCBwb2x5X2NvbnN0clxuICAgICAgLT4gKHN0cmluZyAqIFZpc2liaWxpdHkub3BhcXVlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uKSBsaXN0IGRlZmluaW5nXG4gICAgPVxuICAgIGZ1biBncm91cCB2ZW52IGMgLT5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCBgQ29uc3RyIChzLCBOb25lKSAtPiByZXR1cm4gWyBzLCBOb25lIF1cbiAgICAgIHwgYENvbnN0ciAocywgU29tZSB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIFsgcywgU29tZSAoQ2Fub25pY2FsLkV4cDEub3BhcXVlIHYpIF1cbiAgICAgIHwgYEluaGVyaXQgKGxvYywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHRcbiAgICAgICAgPj49IGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBDYW5vbmljYWwuRXhwMS5nZXRfcG9seV92YXJpYW50IHYgd2l0aFxuICAgICAgICAgfCBPayB0YWIgLT4gcmV0dXJuIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYilcbiAgICAgICAgIHwgRXJyb3IgZGVzYyAtPlxuICAgICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICBcIlRoZSBzaGFwZSBmb3IgYW4gaW5oZXJpdGVkIHR5cGUgaXMgbm90IGRlc2NyaWJlZCBhcyBhIHBvbHltb3JwaGljLXZhcmlhbnQ6ICVzXCJcbiAgICAgICAgICAgICBkZXNjXG4gICAgICAgICAgICAgKCkpXG5cbiAgYW5kIGV2YWxfZGVmaW5pdGlvbiA6IGdyb3VwIC0+IFZpZC50IGxpc3QgLT4gdCAtPiBDYW5vbmljYWwuRGVmLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCBmb3JtYWxzIGJvZHkgLT5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgKExpc3QubWFwaSBmb3JtYWxzIH5mOihmdW4gaSB4IC0+IHgsIENhbm9uaWNhbC5FeHAxLnZhciBpKSkgaW5cbiAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuZGVmaW5lIHYpXG5cbiAgYW5kIGV2YWxfYXBwIDogZ3JvdXAgLT4gVGlkLnQgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdGlkIGFyZ3MgLT5cbiAgICAgIGxldCBnaWQgPSBHcm91cC5pZCBncm91cCBpblxuICAgICAgbGV0IGZvcm1hbHMsIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgcmVjb3JkX29yX25vcm1hbF92YXJpYW50ID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgICB8IFR1cGxlIF8gfCBBbm5vdGF0ZSBfIHwgQmFzZSBfIHwgUG9seV92YXJpYW50IF8gfCBWYXIgXyB8IFJlY19hcHAgXyB8IFRvcF9hcHAgXyAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGN5Y2xpYyA9IGlzX2N5Y2xpYyBncm91cCB0aWQgaW5cbiAgICAgIGxldCBjeWNsaWNfbm9fVlIgPSBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiBncm91cCB0aWQgaW5cbiAgICAgIGlmIChyZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgJiYgY3ljbGljKSB8fCBjeWNsaWNfbm9fVlJcbiAgICAgIHRoZW5cbiAgICAgICAgRGVmaW5pbmcubG9va19lbnYgKGdpZCwgdGlkKVxuICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHJlY3Vyc2UgLT4gcmV0dXJuIHJlY3Vyc2VcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIERlZmluaW5nLmV4dGVuZF9uZXdfdGlkIChnaWQsIHRpZCkgKGV2YWxfZGVmaW5pdGlvbiBncm91cCBmb3JtYWxzIGJvZHkpKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgciAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLnJlY3Vyc2UgciBhcmdzKVxuICAgICAgICB8IERlZmluaXRpb24gZGVmIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEuYXBwbHkgZGVmIGFyZ3MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHZlbnYgPVxuICAgICAgICAgIG1hdGNoIExpc3QuemlwIGZvcm1hbHMgYXJncyB3aXRoXG4gICAgICAgICAgfCBPayB4IC0+IFZlbnYuY3JlYXRlIHhcbiAgICAgICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBmYWlsd2l0aCBcImFwcGx5LCBpbmNvcnJlY3QgdHlwZSBhcHBsaWNhdGlvbiBhcml0eVwiXG4gICAgICAgIGluXG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5KVxuICA7O1xuXG4gICgqIHRvcCBsZXZlbCBlbnRyeSBwb2ludCBmb3IgZXZhbHVhdGlvbiAqKVxuICBsZXQgZXZhbCA6IHQgLT4gQ2Fub25pY2FsLnQgPVxuICAgIGZ1biB0IC0+XG4gICAgICBsZXQgZ3JvdXAgPSBncm91cCAoTG9jYXRpb24ub2Zfc3RyaW5nIFwidG9wLWxldmVsXCIpIFtdIGluXG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIFtdIGluXG4gICAgICBsZXQgdiA9IERlZmluaW5nLmV4ZWMgKGV2YWwgZ3JvdXAgdmVudiB0KSBpblxuICAgICAgQ2Fub25pY2FsLkNyZWF0ZS5jcmVhdGUgdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW5vbmljYWxfZnVsbFxuXG4gIG1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsX2Z1bGwpXG5tb2R1bGUgQ2Fub25pY2FsX3NlbGVjdGVkID0gQ2Fub25pY2FsX2RpZ2VzdFxubW9kdWxlIEV2YWx1YXRpb25fdG9fZGlnZXN0ID0gRXZhbHVhdGlvbiAoQ2Fub25pY2FsX3NlbGVjdGVkKVxuXG5sZXQgZXZhbF90b19kaWdlc3QgZXhwID0gQ2Fub25pY2FsX3NlbGVjdGVkLnRvX2RpZ2VzdCAoRXZhbHVhdGlvbl90b19kaWdlc3QuZXZhbCBleHApXG5sZXQgZXZhbF90b19kaWdlc3Rfc3RyaW5nIGV4cCA9IERpZ2VzdC50b19oZXggKGV2YWxfdG9fZGlnZXN0IGV4cClcblxubW9kdWxlIEZvcl90eXBlcmVwID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBOb3RfYV90dXBsZSBvZiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGRlY29uc3RydWN0X3R1cGxlX2V4biB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFR1cGxlIHRzIC0+IHRzXG4gICAgfCBfIC0+IHJhaXNlIChOb3RfYV90dXBsZSB0KVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBlbXB0eSA6IHN0cmluZ1xuKCoqIFRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCB0b19ieXRlcyA6IHN0cmluZyAtPiBieXRlc1xuKCoqIFJldHVybiBhIG5ldyBieXRlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuXG4gICAgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuKCoqIFtsZW5ndGggc10gaXMgdGhlIGxlbmd0aCAobnVtYmVyIG9mIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIFtzXS4gKilcblxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbigqKiBbZ2V0IHMgaV0gaXMgdGhlIGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW4gW3NdLiBUaGlzIGlzIHRoZSBzYW1lXG4gICAgYXMgd3JpdGluZyBbcy5baV1dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIG5vdCBhbiBpbmRleCBvZiBbc10uICopXG5cbigqKiB7MTpjb25jYXQgQ29uY2F0ZW5hdGluZ31cblxuICAgIHtiIE5vdGUufSBUaGUgeyFTdGRsaWIuKCBeICl9IGJpbmFyeSBvcGVyYXRvciBjb25jYXRlbmF0ZXMgdHdvXG4gICAgc3RyaW5ncy4gKilcblxudmFsIGNvbmNhdCA6IHN0cmluZyAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbigqKiBbY29uY2F0IHNlcCBzc10gY29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHN0cmluZ3MgW3NzXSwgaW5zZXJ0aW5nXG4gICAgdGhlIHNlcGFyYXRvciBzdHJpbmcgW3NlcF0gYmV0d2VlbiBlYWNoLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIGNhdCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhdCBzMSBzMl0gY29uY2F0ZW5hdGVzIHMxIGFuZCBzMiAoW3MxIF4gczJdKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuKCoqIFtjb21wYXJlIHMwIHMxXSBzb3J0cyBbczBdIGFuZCBbczFdIGluIGxleGljb2dyYXBoaWNhbCBvcmRlci4gW2NvbXBhcmVdXG4gICAgYmVoYXZlcyBsaWtlIHshU3RkbGliLmNvbXBhcmV9IG9uIHN0cmluZ3MgYnV0IG1heSBiZSBtb3JlIGVmZmljaWVudC4gKilcblxudmFsIHN0YXJ0c193aXRoIDpcbiAgcHJlZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbc3RhcnRzX3dpdGggXVt+cHJlZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gc3RhcnRzIHdpdGhcbiAgICBbcHJlZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNC4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhbnNmb3JtaW5nIFRyYW5zZm9ybWluZ30gKilcblxudmFsIG1hcCA6IChjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwIGYgc10gaXMgdGhlIHN0cmluZyByZXN1bHRpbmcgZnJvbSBhcHBseWluZyBbZl0gdG8gYWxsIHRoZVxuICAgIGNoYXJhY3RlcnMgb2YgW3NdIGluIGluY3JlYXNpbmcgb3JkZXIuXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBjaGFyIC0+ICdhKSAtPiAnYSAtPiBzdHJpbmcgLT4gJ2FcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYSAtPiAnYSkgLT4gc3RyaW5nIC0+ICdhIC0+ICdhXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGV4aXN0cyA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2V4aXN0cyBwIHNdIGNoZWNrcyBpZiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIFtzXSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvXG4gICAgdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbnZhbCBibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbigqKiBbYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5dIGNvcGllcyBbbGVuXSBieXRlc1xuICAgIGZyb20gdGhlIHN0cmluZyBbc3JjXSwgc3RhcnRpbmcgYXQgaW5kZXggW3NyY19wb3NdLFxuICAgIHRvIGJ5dGUgc2VxdWVuY2UgW2RzdF0sIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBudW1iZXIgW2RzdF9wb3NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3NyY19wb3NdIGFuZCBbbGVuXSBkbyBub3RcbiAgICBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbc3JjXSwgb3IgaWYgW2RzdF9wb3NdIGFuZCBbbGVuXVxuICAgIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbZHN0XS4gKilcblxuKCoqIHsxIEJpbmFyeSBkZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCoqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGJpbmFyeSBkZWNvZGUgaW50ZWdlcnMgZnJvbSBzdHJpbmdzLlxuXG4gICAgQWxsIGZvbGxvd2luZyBmdW5jdGlvbnMgcmFpc2UgW0ludmFsaWRfYXJndW1lbnRdIGlmIHRoZSBjaGFyYWN0ZXJzXG4gICAgbmVlZGVkIGF0IGluZGV4IFtpXSB0byBkZWNvZGUgdGhlIGludGVnZXIgYXJlIG5vdCBhdmFpbGFibGUuXG5cbiAgICBMaXR0bGUtZW5kaWFuIChyZXNwLiBiaWctZW5kaWFuKSBlbmNvZGluZyBtZWFucyB0aGF0IGxlYXN0XG4gICAgKHJlc3AuIG1vc3QpIHNpZ25pZmljYW50IGJ5dGVzIGFyZSBzdG9yZWQgZmlyc3QuICBCaWctZW5kaWFuIGlzXG4gICAgYWxzbyBrbm93biBhcyBuZXR3b3JrIGJ5dGUgb3JkZXIuICBOYXRpdmUtZW5kaWFuIGVuY29kaW5nIGlzXG4gICAgZWl0aGVyIGxpdHRsZS1lbmRpYW4gb3IgYmlnLWVuZGlhbiBkZXBlbmRpbmcgb24geyFTeXMuYmlnX2VuZGlhbn0uXG5cbiAgICAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnQzMl0gYW5kXG4gICAgW2ludDY0XSB0eXBlcywgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGVpdGhlciBhcyBzaWduZWQgb3JcbiAgICB1bnNpZ25lZCBudW1iZXJzLlxuXG4gICAgOC1iaXQgYW5kIDE2LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnRdIHR5cGUsXG4gICAgd2hpY2ggaGFzIG1vcmUgYml0cyB0aGFuIHRoZSBiaW5hcnkgZW5jb2RpbmcuICBUaGVzZSBleHRyYSBiaXRzXG4gICAgYXJlIHNpZ24tZXh0ZW5kZWQgKG9yIHplcm8tZXh0ZW5kZWQpIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVjb2RlIDgtYml0XG4gICAgb3IgMTYtYml0IGludGVnZXJzIGFuZCByZXByZXNlbnRlZCB0aGVtIHdpdGggW2ludF0gdmFsdWVzLlxuKilcblxudmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50OCBiIGldIGlzIFtiXSdzIHVuc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwiKCogQ29tbW9uOiBjb21tb24gZGVmaW5pdGlvbnMgdXNlZCBieSBiaW5hcnkgcHJvdG9jb2wgY29udmVydGVycyAqKVxuXG5vcGVuIEJhc2Vcbm9wZW4gUHJpbnRmXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgcG9zID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIEVycm9ycyBhbmQgZXhjZXB0aW9ucyAqKVxuXG5leGNlcHRpb24gQnVmZmVyX3Nob3J0XG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5tb2R1bGUgUmVhZEVycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdfaW50OFxuICAgIHwgSW50X2NvZGVcbiAgICB8IEludF9vdmVyZmxvd1xuICAgIHwgTmF0MF9jb2RlXG4gICAgfCBOYXQwX292ZXJmbG93XG4gICAgfCBJbnQzMl9jb2RlXG4gICAgfCBJbnQ2NF9jb2RlXG4gICAgfCBOYXRpdmVpbnRfY29kZVxuICAgIHwgVW5pdF9jb2RlXG4gICAgfCBCb29sX2NvZGVcbiAgICB8IE9wdGlvbl9jb2RlXG4gICAgfCBTdHJpbmdfdG9vX2xvbmdcbiAgICB8IFZhcmlhbnRfdGFnXG4gICAgfCBBcnJheV90b29fbG9uZ1xuICAgIHwgTGlzdF90b29fbG9uZyBvZlxuICAgICAgICB7IGxlbiA6IGludFxuICAgICAgICA7IG1heF9sZW4gOiBpbnRcbiAgICAgICAgfVxuICAgIHwgSGFzaHRibF90b29fbG9uZ1xuICAgIHwgU3VtX3RhZyBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnQgb2Ygc3RyaW5nXG4gICAgfCBQb2x5X3JlY19ib3VuZCBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBvZiBzdHJpbmdcbiAgICB8IFNpbGx5X3R5cGUgb2Ygc3RyaW5nXG4gICAgfCBFbXB0eV90eXBlIG9mIHN0cmluZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTmVnX2ludDggLT4gXCJOZWdfaW50OFwiXG4gICAgfCBJbnRfY29kZSAtPiBcIkludF9jb2RlXCJcbiAgICB8IEludF9vdmVyZmxvdyAtPiBcIkludF9vdmVyZmxvd1wiXG4gICAgfCBOYXQwX2NvZGUgLT4gXCJOYXQwX2NvZGVcIlxuICAgIHwgTmF0MF9vdmVyZmxvdyAtPiBcIk5hdDBfb3ZlcmZsb3dcIlxuICAgIHwgSW50MzJfY29kZSAtPiBcIkludDMyX2NvZGVcIlxuICAgIHwgSW50NjRfY29kZSAtPiBcIkludDY0X2NvZGVcIlxuICAgIHwgTmF0aXZlaW50X2NvZGUgLT4gXCJOYXRpdmVpbnRfY29kZVwiXG4gICAgfCBVbml0X2NvZGUgLT4gXCJVbml0X2NvZGVcIlxuICAgIHwgQm9vbF9jb2RlIC0+IFwiQm9vbF9jb2RlXCJcbiAgICB8IE9wdGlvbl9jb2RlIC0+IFwiT3B0aW9uX2NvZGVcIlxuICAgIHwgU3RyaW5nX3Rvb19sb25nIC0+IFwiU3RyaW5nX3Rvb19sb25nXCJcbiAgICB8IFZhcmlhbnRfdGFnIC0+IFwiVmFyaWFudF90YWdcIlxuICAgIHwgQXJyYXlfdG9vX2xvbmcgLT4gXCJBcnJheV90b29fbG9uZ1wiXG4gICAgfCBMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0gLT4gc3ByaW50ZiBcIkxpc3RfdG9vX2xvbmcgLyAlZCAobWF4ICVkKVwiIGxlbiBtYXhfbGVuXG4gICAgfCBIYXNodGJsX3Rvb19sb25nIC0+IFwiSGFzaHRibF90b29fbG9uZ1wiXG4gICAgfCBTdW1fdGFnIGxvYyAtPiBcIlN1bV90YWcgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudCBsb2MgLT4gXCJWYXJpYW50IC8gXCIgXiBsb2NcbiAgICB8IFBvbHlfcmVjX2JvdW5kIGxvYyAtPiBcIlBvbHlfcmVjX2JvdW5kIC8gXCIgXiBsb2NcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBsb2MgLT4gXCJWYXJpYW50X3dyb25nX3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgU2lsbHlfdHlwZSBsb2MgLT4gXCJTaWxseV90eXBlIC8gXCIgXiBsb2NcbiAgICB8IEVtcHR5X3R5cGUgbG9jIC0+IFwiRW1wdHlfdHlwZSAvIFwiIF4gbG9jXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5leGNlcHRpb24gUmVhZF9lcnJvciBvZiBSZWFkRXJyb3IudCAqIHBvcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuZXhjZXB0aW9uIFBvbHlfcmVjX3dyaXRlIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbmxldCByYWlzZV9yZWFkX2Vycm9yIGVyciBwb3MgPSByYWlzZSAoUmVhZF9lcnJvciAoZXJyLCBwb3MpKVxuXG5sZXQgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgcG9zID1cbiAgcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3dyb25nX3R5cGUgbmFtZSwgcG9zKSlcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBsb2MgPSBmYWlsd2l0aCAobG9jIF4gXCI6IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uXCIpXG5sZXQgYXJyYXlfYm91bmRfZXJyb3IgKCkgPSBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIlxuXG4oKiBCdWZmZXJzICopXG5cbnR5cGUgcG9zX3JlZiA9IHBvcyByZWZcbnR5cGUgYnVmID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxubGV0IGNyZWF0ZV9idWYgbiA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBjX2xheW91dCBuXG5sZXQgYnVmX2xlbiBidWYgPSBBcnJheTEuZGltIGJ1ZlxubGV0IGFzc2VydF9wb3MgcG9zID0gaWYgcG9zIDwgMCB0aGVuIGFycmF5X2JvdW5kX2Vycm9yICgpXG5sZXQgY2hlY2tfcG9zIChidWYgOiBidWYpIHBvcyA9IGlmIHBvcyA+PSBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICBwb3Ncbjs7XG5cbmxldCBjaGVja19uZXh0IChidWYgOiBidWYpIG5leHQgPSBpZiBuZXh0ID4gQXJyYXkxLmRpbSBidWYgdGhlbiByYWlzZSBCdWZmZXJfc2hvcnRcblxubGV0IGdldF9vcHRfcG9zIH5sb2MgfnZhciA9IGZ1bmN0aW9uXG4gIHwgU29tZSBwb3MgLT5cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaW5fcHJvdC5Db21tb24uJXM6ICVzIDwgMFwiIGxvYyB2YXIpO1xuICAgIHBvc1xuICB8IE5vbmUgLT4gMFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHNyYzpidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZHN0OmJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX3N0dWJcIlxuXG5sZXQgYmxpdF9idWYgP3NyY19wb3MgfnNyYyA/ZHN0X3BvcyB+ZHN0IGxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBzcmNcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBzcmNfcG9zID4gc3JjX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGRzdFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGRzdF9wb3MgPiBkc3RfbGVuXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEFycmF5MS5kaW0gc3JjXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgKyBsZW4gPiBzcmNfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBkc3RcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyArIGxlbiA+IGRzdF9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1ZiB+c3JjX3BvcyB+c3JjIH5kc3RfcG9zIH5kc3QgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBzdHJpbmdcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IGJsaXRfc3RyaW5nX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X3N0cmluZ19idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IHN0cl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmxldCBibGl0X2J5dGVzX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J5dGVzX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBidWZcIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBidWZcIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9zdHJpbmdcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfYnl0ZXNcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9idWZfYnl0ZXMgP3NyY19wb3MgYnVmID9kc3RfcG9zIHN0ciB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZfc3RyaW5nXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgPiBidWZfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IHN0cl9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgKyBsZW4gPiBidWZfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3BvcyBidWYgfmRzdF9wb3Mgc3RyIH5sZW5cbjs7XG5cbmxldCBibGl0X2J1Zl9zdHJpbmcgPSBibGl0X2J1Zl9ieXRlc1xuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmxldCByZWMgY29weV9odGJsX2xpc3QgaHRibCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaHRibFxuICB8IChrLCB2KSA6OiByZXN0IC0+XG4gICAgQ2FtbC5IYXNodGJsLmFkZCBodGJsIGsgdjtcbiAgICBjb3B5X2h0YmxfbGlzdCBodGJsIHJlc3Rcbjs7XG5cbigqIEJpZ2FycmF5cyAqKVxuXG50eXBlIHZlYzMyID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYzY0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IHZlYzY0XG50eXBlIG1hdDMyID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdDY0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IG1hdDY0XG5cbigqIEZsb2F0IGFycmF5cyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mbG9hdF9hcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mbG9hdGFycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqKiopXG5cbmxldCAoICsgKSA9ICggKyApXG4iLCIoKiBOYXQwOiBuYXR1cmFsIG51bWJlcnMgKGluY2x1ZGluZyB6ZXJvKSAqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IG9mX2ludCBuID1cbiAgaWYgbiA8IDAgdGhlbiBmYWlsd2l0aCBcIkJpbl9wcm90Lk5hdDAub2ZfaW50OiBuIDwgMFwiO1xuICBuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG4iLCIoKiBXcml0ZV9tbDogd3JpdGluZyB2YWx1ZXMgdG8gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSB3cml0ZXIgPSBidWYgLT4gcG9zOnBvcyAtPiAnYSAtPiBwb3NcbnR5cGUgKCdhLCAnYikgd3JpdGVyMSA9ICdhIHdyaXRlciAtPiAnYiB3cml0ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHdyaXRlcjIgPSAnYSB3cml0ZXIgLT4gKCdiLCAnYykgd3JpdGVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHdyaXRlcjMgPSAnYSB3cml0ZXIgLT4gKCdiLCAnYywgJ2QpIHdyaXRlcjJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ1ZiAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDggOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDE2IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MzIgOiBidWYgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGNvZGVfTkVHX0lOVDggPSAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopICdcXHhmZicgKCokKilcblxubGV0IGNvZGVfSU5UMTYgPSAoKiQgQ29kZS5jaGFyIElOVDE2ICopICdcXHhmZScgKCokKilcblxubGV0IGNvZGVfSU5UMzIgPSAoKiQgQ29kZS5jaGFyIElOVDMyICopICdcXHhmZCcgKCokKilcblxubGV0IGNvZGVfSU5UNjQgPSAoKiQgQ29kZS5jaGFyIElOVDY0ICopICdcXHhmYycgKCokKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cblxubGV0IHVuc2FmZV9zZXQxNmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDE2XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDMyXG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDY0XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQxNmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXQxNlxuOztcblxubGV0IHVuc2FmZV9zZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuICBlbHNlIHVuc2FmZV9zZXQzMlxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuICBlbHNlIHVuc2FmZV9zZXQ2NFxuOztcblxubGV0IGJpbl93cml0ZV91bml0IGJ1ZiB+cG9zICgpID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgJ1xcMDAwJztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGIgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAoaWYgYiB0aGVuICdcXDAwMScgZWxzZSAnXFwwMDAnKTtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgbiA9XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9ORUdfSU5UODtcbiAgdW5zYWZlX3NldDggYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDMgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMTY7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA1IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDMyO1xuICB1bnNhZmVfc2V0MzJsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgOSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQ2NDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2NoYXIgYnVmIH5wb3MgYyA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIGM7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgbiA+PSAwXG4gIHRoZW5cbiAgICBpZiBuIDwgMHgwMDAwMDA4MFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gICAgZWxzZSBpZiBuIDwgMHgwMDAwODAwMFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzFcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gICAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPCAtKDEgbHNsIDMxKVxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBuYXQwID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49IDEgbHNsIDMyXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9zdHJpbmcgYnVmIH5wb3Mgc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBzdHJpbmdzICopXG4gIHVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9ieXRlcyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IG5ld19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gbmV3X3BvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAoKiBUT0RPOiBvcHRpbWl6ZSBmb3Igc21hbGwgYnl0ZXMgKilcbiAgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOm5ld19wb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQuYml0c19vZl9mbG9hdCB4KTtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGxcbiAgICAgIHRoZW4gKFxuICAgICAgICBhc3NlcnRfcG9zIHBvcztcbiAgICAgICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4pXG4gICAgICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQ2NCBidWYgfnBvcyBuID1cbiAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuKVxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG4gIGVsc2UgaWYgbiA+PSAweDAwMDA4MDAwTCB8fCBuIDwgLTB4MDAwMDgwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50NjQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCBidWYgfnBvcyBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgJiYgKG4gPj0gKCogMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzFcbiAgICAgIHx8IG4gPCAoKiAtMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50Lm5lZyAoTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzEpKVxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX25hdGl2ZWludCBuKSlcbiAgZWxzZSBpZiAoKG5vdCBhcmNoX3NpeHR5Zm91cikgJiYgbiA+PSAweDgwMDBuKSB8fCBuIDwgLTB4ODAwMG5cbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChOYXRpdmVpbnQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoTmF0aXZlaW50LnRvX2ludCBuKVxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9yZWYgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHIgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgIXJcblxubGV0IGJpbl93cml0ZV9sYXp5IGJpbl93cml0ZV9lbCBidWYgfnBvcyBsdiA9XG4gIGxldCB2ID0gTGF6eS5mb3JjZSBsdiBpblxuICBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdlxuOztcblxubGV0IGJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGZhbHNlXG4gIHwgU29tZSB2IC0+XG4gICAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyB0cnVlIGluXG4gICAgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOm5leHQgdlxuOztcblxubGV0IGJpbl93cml0ZV9wYWlyIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIChhLCBiKSA9XG4gIGxldCBuZXh0ID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0IGJcbjs7XG5cbmxldCBiaW5fd3JpdGVfdHJpcGxlIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIChhLCBiLCBjKSA9XG4gIGxldCBuZXh0MSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgaW5cbiAgbGV0IG5leHQyID0gYmluX3dyaXRlX2IgYnVmIH5wb3M6bmV4dDEgYiBpblxuICBiaW5fd3JpdGVfYyBidWYgfnBvczpuZXh0MiBjXG47O1xuXG5sZXQgYmluX3dyaXRlX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdCA9XG4gICAgbWF0Y2ggbHN0IHdpdGhcbiAgICB8IFtdIC0+IGVsc19wb3NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6ZWxzX3BvcyBoZCBpblxuICAgICAgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3M6bmV3X2Vsc19wb3MgdGxcbiAgaW5cbiAgZnVuIGJpbl93cml0ZV9lbCBidWYgfnBvcyBsc3QgLT5cbiAgICBsZXQgbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IChMaXN0Lmxlbmd0aCBsc3QpIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBsZW4gaW5cbiAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvcyBsc3Rcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlbiB+bGVuZ3RoIH5ibGl0IGJ1ZiB+cG9zIGEgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgYmxpdCB+c3JjX3BvczowIGEgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkZsb2F0LkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICAgIGJ1ZlxuICAgIH5wb3NcbiAgICBhXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3BvcyB+biBhciA9XG4gIGxldCBlbHNfcG9zX3JlZiA9IHJlZiBlbHNfcG9zIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGVsc19wb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohZWxzX3Bvc19yZWYgKEFycmF5LnVuc2FmZV9nZXQgYXIgaSlcbiAgZG9uZTtcbiAgIWVsc19wb3NfcmVmXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5ICh0eXBlIGEpIGJpbl93cml0ZV9lbCBidWYgfnBvcyBhciA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl93cml0ZV9lbCA6IGEgd3JpdGVyKSA6IGZsb2F0IHdyaXRlcikgPT0gYmluX3dyaXRlX2Zsb2F0XG4gIHRoZW4gYmluX3dyaXRlX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zIChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgcG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbiBpblxuICAgIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcG4gaW5cbiAgICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyKVxuOztcblxubGV0IGJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZV9rZXkgYmluX3dyaXRlX3ZhbCBidWYgfnBvcyBodGJsID1cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IGVsc19wb3MgPVxuICAgIGluY3IgY250X3JlZjtcbiAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfa2V5IGJ1ZiB+cG9zOmVsc19wb3MgayBpblxuICAgIGJpbl93cml0ZV92YWwgYnVmIH5wb3M6bmV3X2Vsc19wb3MgdlxuICBpblxuICBsZXQgcmVzX3BvcyA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCBlbHNfcG9zIGluXG4gIGlmICFjbnRfcmVmIDw+IGxlbiB0aGVuIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIFwiYmluX3dyaXRlX2hhc2h0YmxcIjtcbiAgcmVzX3Bvc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjMzIgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjNjQgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX3ZlYyA9IGJpbl93cml0ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDMyIG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdDY0X21hdCBidWYgfnBvcyBtID1cbiAgbGV0IGxlbjEgPSBBcnJheTIuZGltMSBtIGluXG4gIGxldCBsZW4yID0gQXJyYXkyLmRpbTIgbSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4xKSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4yKSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl9tYXQ2NCBtKSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbWF0ID0gYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fd3JpdGVfYmlnc3RyaW5nIGJ1ZiB+cG9zIHMgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSBzIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmFyaWFudF9pbnQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCB4KSAxKSAxbCk7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzhiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldDggYnVmIHBvcyBuO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF8xNmJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzMyYml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfNjRiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0X2JpdHMgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDE2YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMyYmUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRiZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9hcnJheV9ub19sZW5ndGggYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3Bvczpwb3Mgfm46KEFycmF5Lmxlbmd0aCBhcikgYXJcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmdfZ2V0MzIgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zdHJpbmdfZ2V0NjQgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcblxubGV0IGJpbl93cml0ZV9tZDUgYnVmIH5wb3MgeCA9XG4gIGxldCB4ID0gTWQ1X2xpYi50b19iaW5hcnkgeCBpblxuICBhc3NlcnQgKFN0cmluZy5sZW5ndGggeCA9IDE2KTtcbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDggaW5cbiAgICB1bnNhZmVfc2V0NjQgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQ2NCBidWYgKHBvcyArIDgpIGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA0IGluXG4gICAgbGV0IGMgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggOCBpblxuICAgIGxldCBkID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDEyIGluXG4gICAgdW5zYWZlX3NldDMyIGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA0KSBiO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDgpIGM7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgMTIpIGQpO1xuICBuZXh0XG47O1xuIiwiKCogUmVhZF9tbDogcmVhZGluZyB2YWx1ZXMgZnJvbSB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHJlYWRlciA9IGJ1ZiAtPiBwb3NfcmVmOnBvc19yZWYgLT4gJ2FcbnR5cGUgKCdhLCAnYikgcmVhZGVyMSA9ICdhIHJlYWRlciAtPiAnYiByZWFkZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHJlYWRlcjIgPSAnYSByZWFkZXIgLT4gKCdiLCAnYykgcmVhZGVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHJlYWRlcjMgPSAnYSByZWFkZXIgLT4gKCdiLCAnYywgJ2QpIHJlYWRlcjJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ1ZiAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5cbmxldCB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCBjID0gdW5zYWZlX2dldDggYnVmIHBvcyBpblxuICBpZiBjID49IDEyOCB0aGVuIGMgLSAyNTYgZWxzZSBjXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X2ludF9pbnQzMiA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gSW50MzIubWF4X2ludCBlbHNlIEludDMyLm9mX2ludCBtYXhfaW50XG5sZXQgbWluX2ludF9pbnQzMiA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gSW50MzIubWF4X2ludCBlbHNlIEludDMyLm9mX2ludCBtaW5faW50XG5sZXQgbWF4X2ludF9pbnQ2NCA9IEludDY0Lm9mX2ludCBtYXhfaW50XG5sZXQgbWluX2ludF9pbnQ2NCA9IEludDY0Lm9mX2ludCBtaW5faW50XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50MzIgcG9zIHggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIEludDMyLnRvX2ludCB4XG4gIGVsc2UgaWYgeCA+PSBtaW5faW50X2ludDMyICYmIHggPD0gbWF4X2ludF9pbnQzMlxuICB0aGVuIEludDMyLnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgeCA9XG4gIGlmIHggPj0gbWluX2ludF9pbnQ2NCAmJiB4IDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiBJbnQ2NC50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldCBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIF9wb3MgeCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgeFxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lIGFsd2F5c10gcG9zIHggLT5cbiAgICAgIGlmIHggPj0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5taW5faW50XG4gICAgICAmJiB4IDw9IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWF4X2ludFxuICAgICAgdGhlbiBJbnQ2NC50b19uYXRpdmVpbnQgeFxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfZ2V0MTYgOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0MzIgOiBidWYgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDE2IGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDE2IGJ1ZiBwb3MgfD4gYnN3YXAxNlxuOztcblxubGV0IHVuc2FmZV9nZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDMyIGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgfD4gYnN3YXAzMlxuOztcblxubGV0IHVuc2FmZV9nZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDY0IGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgfD4gYnN3YXA2NFxuOztcblxubGV0IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDE2IGJ1ZiBwb3MgfD4gYnN3YXAxNiBlbHNlIHVuc2FmZV9nZXQxNlxuOztcblxubGV0IHVuc2FmZV9nZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgfD4gYnN3YXAzMiBlbHNlIHVuc2FmZV9nZXQzMlxuOztcblxubGV0IHVuc2FmZV9nZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgfD4gYnN3YXA2NCBlbHNlIHVuc2FmZV9nZXQ2NFxuOztcblxubGV0IHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IHggPSB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zIGluXG4gIGlmIHggPiAzMjc2NyB0aGVuIHggLSA2NTUzNiBlbHNlIHhcbjs7XG5cbmxldCBiaW5fcmVhZF91bml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGlmIHVuc2FmZV9nZXQgYnVmIHBvcyA9ICdcXDAwMCdcbiAgdGhlbiBwb3NfcmVmIDo9IHBvcyArIDFcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Vbml0X2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfYm9vbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgZmFsc2VcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIHRydWVcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkJvb2xfY29kZSBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAxIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmVnX2ludDggIXBvc19yZWY7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBDYW4gYmUgYWJvdmUgbmV4dCBsaW5lIChubyBlcnJvcnMgcG9zc2libGUgd2l0aCAxNmJpdCkuXG4gICAgIFRoaXMgc2hvdWxkIGltcHJvdmUgdGhlIGdlbmVyYXRlZCBjb2RlLiAqKVxuICB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50MzIgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQ2NCAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgSW50NjQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIE5hdGl2ZWludC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgcG9zIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgTmF0MC51bnNhZmVfb2ZfaW50ICh1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zKVxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8zMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBtYXNrXzMyYml0ID0gSW50NjQudG9faW50IDB4ZmZmZl9mZmZmTCBpblxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgbGV0IG4gPSBJbnQzMi50b19pbnQgKHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MpIGluXG4gICAgICBpZiBuID49IDBcbiAgICAgIHRoZW4gTmF0MC51bnNhZmVfb2ZfaW50IG5cbiAgICAgIGVsc2VcbiAgICAgICAgKCogRXJhc2UgdGhlIHVwcGVyIGJpdHMgdGhhdCB3ZXJlIHNldCB0byAxIGR1cmluZyB0aGUgaW50MzIgLT4gaW50IGNvbnZlcnNpb24uICopXG4gICAgICAgIE5hdDAudW5zYWZlX29mX2ludCAobiBsYW5kIG1hc2tfMzJiaXQpKVxuICBlbHNlXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgICAgIGlmIG4gPj0gMGwgJiYgbiA8PSBtYXhfaW50X2ludDMyXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDMyLnRvX2ludCBuKSBpblxuICAgICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICAgIG4pXG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfNjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gKFxuICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQ2NC50b19pbnQgbikgaW5cbiAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgbilcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTmF0MC51bnNhZmVfb2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzMyIGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuXG4gICAgICBzYWZlX2Jpbl9yZWFkX25hdDBfNjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgPVxuICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlN0cmluZ190b29fbG9uZyBzdGFydF9wb3M7XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgc3RyID0gYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmIGluXG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfY2hhciBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgQ2hhci5jb2RlIGNoXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuXG4gICAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9mbG9hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIEludDY0LmZsb2F0X29mX2JpdHMgKHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDMyLm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQzMi5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQzMi5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQzMl9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50NjQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDY0Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDY0Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDY0X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX25hdGl2ZWludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgd2hlbiBhcmNoX3NpeHR5Zm91ciAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXRpdmVpbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfcmVmIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICByZWYgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9sYXp5IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICBMYXp5LmZyb21fdmFsIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOb25lXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICBTb21lIGVsXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5PcHRpb25fY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWYgPVxuICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBiID0gYmluX3JlYWRfYiBidWYgfnBvc19yZWYgaW5cbiAgYSwgYlxuOztcblxubGV0IGJpbl9yZWFkX3RyaXBsZSBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBiID0gYmluX3JlYWRfYiBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGMgPSBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiLCBjXG47O1xuXG5sZXQgYmluX3JlYWRfbl9yZXZfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbGVuID1cbiAgbGV0IHJlYyBsb29wIG4gYWNjID1cbiAgICBpZiBuID0gMCB0aGVuIGFjYyBlbHNlIGxvb3AgKG4gLSAxKSAoYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIDo6IGFjYylcbiAgaW5cbiAgbG9vcCBsZW4gW11cbjs7XG5cbmxldCBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gbWF4X2xlbiB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgKExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSkgIXBvc19yZWY7XG4gIGxldCByZXZfbHN0ID0gYmluX3JlYWRfbl9yZXZfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbGVuIGluXG4gIExpc3QucmV2IHJldl9sc3Rcbjs7XG5cbmxldCBiaW5fcmVhZF9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuOm1heF9pbnQgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG47O1xuXG5sZXQgZHVtbXlfZmxvYXRfYnVmID0gY3JlYXRlX2J1ZiA4XG5sZXQgKCkgPSBpZ25vcmUgKFdyaXRlLmJpbl93cml0ZV9mbG9hdCBkdW1teV9mbG9hdF9idWYgfnBvczowIDMuMSlcblxubGV0IG1heF9mbG9hdF9hcnJheV9sZW5ndGggPVxuICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2UgU3lzLm1heF9hcnJheV9sZW5ndGggLyAyXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlbiB+Y3JlYXRlIH5ibGl0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHBvcztcbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IGFyciA9IGNyZWF0ZSBsZW4gaW5cbiAgYmxpdCB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgYXJyIH5sZW47XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgYXJyXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW5cbiAgICB+Y3JlYXRlOkZsb2F0LkFycmF5LmNyZWF0ZVxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW5cbiAgICB+Y3JlYXRlOkFycmF5LmNyZWF0ZV9mbG9hdFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfYXJyYXkgKHR5cGUgYSkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3JlYWRfZWwgOiBhIHJlYWRlcikgOiBmbG9hdCByZWFkZXIpID09IGJpbl9yZWFkX2Zsb2F0XG4gIHRoZW4gKE9iai5tYWdpYyAoYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmIDogZmxvYXQgYXJyYXkpIDogYSBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gW3x8XVxuICAgIGVsc2UgKFxuICAgICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3BvcylcbiAgICAgIGVsc2UgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGggLyAyXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IG1heWJlX2Zsb2F0ID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGR1bW15X2Zsb2F0X2J1ZiB+cG9zX3JlZjoocmVmIDApIGluXG4gICAgICAgICAgICBTb21lIGVsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIG1heWJlX2Zsb2F0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvc1xuICAgICAgICB8IFNvbWUgZWwgLT5cbiAgICAgICAgICBpZiBPYmoudGFnIChPYmoucmVwciBlbCkgPSBPYmouZG91YmxlX3RhZyB8fCBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKTtcbiAgICAgIGxldCBmaXJzdCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIGZpcnN0IGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgaSBlbFxuICAgICAgZG9uZTtcbiAgICAgIHJlcykpXG47O1xuXG5sZXQgYmluX3JlYWRfaGFzaHRibCBiaW5fcmVhZF9rZXkgYmluX3JlYWRfdmFsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIGxlbiBpblxuICBsZXQgcmVhZF9rdl9wYWlyID0gYmluX3JlYWRfcGFpciBiaW5fcmVhZF9rZXkgYmluX3JlYWRfdmFsIGluXG4gIGxldCBlbHMgPSBiaW5fcmVhZF9uX3Jldl9saXN0IHJlYWRfa3ZfcGFpciBidWYgfnBvc19yZWYgbGVuIGluXG4gIGNvcHlfaHRibF9saXN0IGh0YmwgZWxzXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX3ZlYyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA0IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dCBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfdmVjMzIgdmVjKSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB2ZWNcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdDY0X3ZlYyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfdmVjNjQgdmVjKSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB2ZWNcbjs7XG5cbmxldCBiaW5fcmVhZF92ZWMgPSBiaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0MzIgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdDY0X21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQ2NCBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX21hdCA9IGJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgc3RyID0gY3JlYXRlX2J1ZiBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OnN0ciB+ZHN0X3BvczowIH5sZW47XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfdmFyaWFudF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICgqIFtuXSBtdXN0IGNvbnRhaW4gYW4gaW50ZWdlciBhbHJlYWR5IGVuY29kZWQsIGkuZS4gW24gPSAyICogayArIDFdLiAqKVxuICBpZiBJbnQzMi5sb2dhbmQgbiAxbCA9IDBsXG4gIHRoZW4gcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3RhZywgcG9zKSlcbiAgZWxzZSAoXG4gICAgKCogV2Ugc2hpZnQgaXQgYnkgb25lIGJpdCB0byB0aGUgcmlnaHQgc2Ugd2UgZ2V0IGJhY2sgWzIgKiBrICsgMV0gaW4gdGhlIGVuZC4gKilcbiAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodCBuIDEpKVxuOztcblxubGV0IGJpbl9yZWFkX2ludF84Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldDggYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8xNmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMzJiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfNjRiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQ2NF9iaXRzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmsxNl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMyYmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDY0YmUgYnVmIHBvc1xuOztcblxuWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAwNywgMCldXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9zdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9zdHJpbmdfc2V0NjR1XCJcblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcblxuWyUlZW5kaWZdXG5cbmxldCBiaW5fcmVhZF9tZDUgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9nZXQ2NCBidWYgcG9zIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfZ2V0NjQgYnVmIChwb3MgKyA4KSBpblxuICAgIHVuc2FmZV9ieXRlc19zZXQ2NCByZXMgMCBhO1xuICAgIHVuc2FmZV9ieXRlc19zZXQ2NCByZXMgOCBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9nZXQzMiBidWYgcG9zIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA0KSBpblxuICAgIGxldCBjID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgOCkgaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDEyKSBpblxuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgMCBhO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgNCBiO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgOCBjO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgMTIgZCk7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMpXG47O1xuIiwiaW5jbHVkZSBCaW5fc2hhcGVfbGliLlN0ZC5TaGFwZVxuXG4oKiBuZXcgYmFzZSBzaGFwZXMgKilcbmxldCBiaW5fc2hhcGVfdW5pdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInVuaXRcIikgW11cbmxldCBiaW5fc2hhcGVfYm9vbCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJvb2xcIikgW11cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwic3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYnl0ZXNcIikgW11cbmxldCBiaW5fc2hhcGVfY2hhciA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImNoYXJcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2MyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDYzXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmF0aXZlaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25hdDAgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXQwXCIpIFtdXG5sZXQgYmluX3NoYXBlX2RpZ2VzdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImRpZ2VzdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0MzJfdmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQ2NF92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl9tYXRcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJtYXRcIikgW11cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYmlnc3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdGFycmF5XCIpIFtdXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmFyaWFudF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfOGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMTZiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzMyYml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF82NGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRfYml0c1wiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazE2X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazMyX2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50MzJcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcms2NF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludDY0XCIpIFtdXG5cbigqIG5ldyBzaGFwZSBjb25zdHJ1Y3RvcnMgKilcbmxldCBiaW5fc2hhcGVfcmVmIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJyZWZcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJvcHRpb25cIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfbGlzdCB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibGlzdFwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9hcnJheSB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYXJyYXlcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4IHkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJoYXNodGJsXCIpIFsgeDsgeSBdXG5cbigqIHNoYXBlIGFsaWFzICopXG5sZXQgYmluX3NoYXBlX2Zsb2F0X2FycmF5ID0gYmluX3NoYXBlX2FycmF5IGJpbl9zaGFwZV9mbG9hdFxuW0BAb2NhbWwuZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgXFxcbiAgICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl1cbjs7XG5cbigqIHNoYXBlLWNvbnN0cnVjdG9yIGFsaWFzZXMgKilcbmxldCBiaW5fc2hhcGVfbGF6eSB4ID0geFxubGV0IGJpbl9zaGFwZV9wYWlyIHggeSA9IHR1cGxlIFsgeDsgeSBdXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4IHkgeiA9IHR1cGxlIFsgeDsgeTsgeiBdXG4iLCIoKiBTaXplOiBjb21wdXRlIHNpemUgb2YgdmFsdWVzIGluIHRoZSBiaW5hcnkgcHJvdG9jb2wuICopXG5cbm9wZW4gQmlnYXJyYXlcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5cbm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBNYXhpbXVtID0gc3RydWN0XG4gIGxldCBiaW5fc2l6ZV91bml0ID0gMVxuICBsZXQgYmluX3NpemVfYm9vbCA9IDFcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSAxXG4gIGxldCBiaW5fc2l6ZV9tZDUgPSAxNlxuICBsZXQgYmluX3NpemVfaW50X25hdDAgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQgPSBtYXggYmluX3NpemVfaW50X25hdDAgYmluX3NpemVfaW50X25lZ2F0aXZlXG4gIGxldCBiaW5fc2l6ZV9mbG9hdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDMyID0gNVxuICBsZXQgYmluX3NpemVfaW50NjQgPSA5XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSBiaW5fc2l6ZV9pbnRfbmF0MFxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSA0XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IDJcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF82NGJpdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50ID0gMlxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSA4XG5lbmRcblxubW9kdWxlIE1pbmltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSBNYXhpbXVtLmJpbl9zaXplX3VuaXRcbiAgbGV0IGJpbl9zaXplX2Jvb2wgPSBNYXhpbXVtLmJpbl9zaXplX2Jvb2xcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSBNYXhpbXVtLmJpbl9zaXplX2NoYXJcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IDJcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1pbiBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gTWF4aW11bS5iaW5fc2l6ZV9mbG9hdFxuICBsZXQgYmluX3NpemVfaW50MzIgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX2ludDY0ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSAxXG4gIGxldCBiaW5fc2l6ZV9yZWYgPSAxXG4gIGxldCBiaW5fc2l6ZV9sYXp5X3QgPSAxXG4gIGxldCBiaW5fc2l6ZV9vcHRpb24gPSAxXG4gIGxldCBiaW5fc2l6ZV9wYWlyID0gMSArIDFcbiAgbGV0IGJpbl9zaXplX3RyaXBsZSA9IDEgKyAxICsgMVxuICBsZXQgYmluX3NpemVfbGVuID0gYmluX3NpemVfbmF0MFxuICBsZXQgYmluX3NpemVfbGlzdCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2hhc2h0YmwgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3N0cmluZyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYnl0ZXMgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3ZlYyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjID0gYmluX3NpemVfdmVjXG4gIGxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9sZW4gKyBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0MzJfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9mbG9hdDY0X21hdCA9IGJpbl9zaXplX21hdFxuICBsZXQgYmluX3NpemVfYmlnc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdGFycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdF9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX3ZhcmlhbnRfaW50XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzhiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzE2Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF8zMmJpdFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfNjRiaXRcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSBNYXhpbXVtLmJpbl9zaXplX2ludDY0X2JpdHNcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmsxNl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmszMl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludDMyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NFxuZW5kXG5cbnR5cGUgJ2Egc2l6ZXIgPSAnYSAtPiBpbnRcbnR5cGUgKCdhLCAnYikgc2l6ZXIxID0gJ2Egc2l6ZXIgLT4gJ2Igc2l6ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHNpemVyMiA9ICdhIHNpemVyIC0+ICgnYiwgJ2MpIHNpemVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNpemVyMyA9ICdhIHNpemVyIC0+ICgnYiwgJ2MsICdkKSBzaXplcjJcblxubGV0IGJpbl9zaXplX3VuaXQgKCkgPSAxXG5sZXQgYmluX3NpemVfYm9vbCBfID0gMVxuXG5sZXQgYmluX3NpemVfaW50X25hdDAgbiA9XG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHg4MDAwMDAwMCAqKSAxIGxzbCAzMVxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfaW50X25lZ2F0aXZlIG4gPVxuICBpZiBuID49IC0weDAwMDAwMDgwXG4gIHRoZW4gMlxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8ICgqIC0weDgwMDAwMDAwICopIC0oMSBsc2wgMzEpXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9jaGFyIF8gPSAxXG5sZXQgYmluX3NpemVfaW50IG4gPSBpZiBuID49IDAgdGhlbiBiaW5fc2l6ZV9pbnRfbmF0MCBuIGVsc2UgYmluX3NpemVfaW50X25lZ2F0aXZlIG5cblxubGV0IGJpbl9zaXplX25hdDAgbmF0MCA9XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBuIDwgMHgwMDAxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49ICgqIDB4MTAwMDAwMDAwICopIDEgbHNsIDMyXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgbGVuID1cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBzaXplX2xlbiA9IGJpbl9zaXplX25hdDAgcGxlbiBpblxuICBzaXplX2xlbiArIGxlblxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZyBzdHIgPSBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgKFN0cmluZy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX2J5dGVzIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoQnl0ZXMubGVuZ3RoIHN0cilcbmxldCBiaW5fc2l6ZV9tZDUgXyA9IDE2XG5cbmxldCBiaW5fc2l6ZV9mbG9hdCBmID1cbiAgKCogSWYgd2UganVzdCBpZ25vcmUgdGhlIGFyZ3VtZW50IHRoZSBjb21waWxlciB3aWxsIHN0aWxsIHJlcXVpcmUgaXQgdG8gZXhpc3QgYW5kIGJlXG4gICAgIGJveGVkLiBUaGlzIG1lYW5zIHRoYXQgaWYgZm9yIGluc3RhbmNlIHdlIGNhbGwgdGhpcyBmb3IgYSBmaWVsZCBvZiBhIGZsb2F0IHJlY29yZCxcbiAgICAgdGhlIGNvbXBpbGVyIHdpbGwgYWxsb2NhdGUgdGhlIGZsb2F0IGZvciBub3RoaW5nLlxuXG4gICAgIFdpdGggdGhpcyBsaW5lIHRoZSBjb21waWxlciByZWFsbHkgaWdub3JlcyB0aGUgZmxvYXQuICopXG4gIGlnbm9yZSAodHJ1bmNhdGUgZik7XG4gIDhcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGwgdGhlbiA1IGVsc2UgYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludCAoSW50NjQudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludDMyIChJbnQ2NC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX25hdGl2ZWludCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50NjQgKEludDY0Lm9mX25hdGl2ZWludCBuKVxuICBlbHNlIGZ1biBuIC0+IGJpbl9zaXplX2ludDMyIChOYXRpdmVpbnQudG9faW50MzIgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9yZWYgYmluX3NpemVfZWwgciA9IGJpbl9zaXplX2VsICFyXG5sZXQgYmluX3NpemVfbGF6eV90IGJpbl9zaXplX2VsIGx2ID0gYmluX3NpemVfZWwgKExhenkuZm9yY2UgbHYpXG5sZXQgYmluX3NpemVfbGF6eSA9IGJpbl9zaXplX2xhenlfdFxuXG5sZXQgYmluX3NpemVfb3B0aW9uIGJpbl9zaXplX2VsID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDFcbiAgfCBTb21lIHYgLT4gMSArIGJpbl9zaXplX2VsIHZcbjs7XG5cbmxldCBiaW5fc2l6ZV9wYWlyIGJpbl9zaXplX2EgYmluX3NpemVfYiAoYSwgYikgPSBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGJcblxubGV0IGJpbl9zaXplX3RyaXBsZSBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyAoYSwgYiwgYykgPVxuICBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGIgKyBiaW5fc2l6ZV9jIGNcbjs7XG5cbmxldCBiaW5fc2l6ZV9saXN0ID1cbiAgbGV0IHJlYyBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2Mgfmxlbl9hY2MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gc2l6ZV9hY2MgKyBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuX2FjYylcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6KHNpemVfYWNjICsgYmluX3NpemVfZWwgaGQpIH5sZW5fYWNjOihsZW5fYWNjICsgMSkgdGxcbiAgaW5cbiAgZnVuIGJpbl9zaXplX2VsIGxzdCAtPiBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6MCB+bGVuX2FjYzowIGxzdFxuOztcblxubGV0IGJpbl9zaXplX2xlbiBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgYmluX3NpemVfbmF0MCBwbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRhcnJheSBhciA9XG4gIGxldCBsZW4gPSBGbG9hdC5BcnJheS5sZW5ndGggYXIgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArICg4ICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5IGFyID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuIH5uID1cbiAgbGV0IHRvdGFsX2xlbl9yZWYgPSByZWYgdG90YWxfbGVuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGxldCBlbCA9IEFycmF5LnVuc2FmZV9nZXQgYXIgaSBpblxuICAgIHRvdGFsX2xlbl9yZWYgOj0gIXRvdGFsX2xlbl9yZWYgKyBiaW5fc2l6ZV9lbCBlbFxuICBkb25lO1xuICAhdG90YWxfbGVuX3JlZlxuOztcblxubGV0IGJpbl9zaXplX2FycmF5ICh0eXBlIGEpIGJpbl9zaXplX2VsIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3NpemVfZWwgOiBhIHNpemVyKSA6IGZsb2F0IHNpemVyKSA9PSBiaW5fc2l6ZV9mbG9hdFxuICB0aGVuIGJpbl9zaXplX2Zsb2F0X2FycmF5IChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgdG90YWxfbGVuID0gYmluX3NpemVfbGVuIG4gaW5cbiAgICBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4pXG47O1xuXG5sZXQgYmluX3NpemVfaGFzaHRibCBiaW5fc2l6ZV9rZXkgYmluX3NpemVfdmFsIGh0YmwgPVxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IHRvdGFsX2xlbiA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIHRvdGFsX2xlbiArIGJpbl9zaXplX2tleSBrICsgYmluX3NpemVfdmFsIHZcbiAgaW5cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHRvdGFsX2xlbiA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCAoYmluX3NpemVfbGVuIGxlbikgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fc2l6ZV9oYXNodGJsXCI7XG4gIHRvdGFsX2xlblxuOztcblxubGV0IGJpbl9zaXplX2dlbl92ZWMgdmVjIG11bHRpcGxpZXIgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2ZWMgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArIChtdWx0aXBsaWVyICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0MzJfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDRcbmxldCBiaW5fc2l6ZV9mbG9hdDY0X3ZlYyB2ZWMgPSBiaW5fc2l6ZV9nZW5fdmVjIHZlYyA4XG5sZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9zaXplX2dlbl9tYXQgbWF0IG11bHRpcGxpZXIgPVxuICBsZXQgZGltMSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgZGltMiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgc2l6ZSA9IGRpbTEgKiBkaW0yIGluXG4gIGJpbl9zaXplX2xlbiBkaW0xICsgYmluX3NpemVfbGVuIGRpbTIgKyAobXVsdGlwbGllciAqIHNpemUpXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0IG1hdCA9IGJpbl9zaXplX2dlbl9tYXQgbWF0IDhcbmxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9mbG9hdDY0X21hdFxubGV0IGJpbl9zaXplX2JpZ3N0cmluZyBidWYgPSBiaW5fc2l6ZV9nZW5fdmVjIGJ1ZiAxXG5sZXQgYmluX3NpemVfdmFyaWFudF9pbnQgXyA9IDRcbmxldCBiaW5fc2l6ZV9pbnRfOGJpdCBfID0gMVxubGV0IGJpbl9zaXplX2ludF8xNmJpdCBfID0gMlxubGV0IGJpbl9zaXplX2ludF8zMmJpdCBfID0gNFxubGV0IGJpbl9zaXplX2ludF82NGJpdCBfID0gOFxubGV0IGJpbl9zaXplX2ludDY0X2JpdHMgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IF8gPSAyXG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludCBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgXyA9IDhcblxubGV0IGJpbl9zaXplX2FycmF5X25vX2xlbmd0aCBiaW5fc2l6ZV9lbCBhciA9XG4gIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbjowIH5uOihBcnJheS5sZW5ndGggYXIpXG47O1xuIiwiKCogVHBfY2xhc3M6IHNpemVycywgd3JpdGVycywgYW5kIHJlYWRlcnMgaW4gcmVjb3JkcyAqKVxuXG50eXBlICdhIHdyaXRlciA9XG4gIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICB9XG5cbnR5cGUgJ2EgcmVhZGVyID1cbiAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICB9XG5cbnR5cGUgJ2EgdCA9XG4gIHsgc2hhcGUgOiBTaGFwZS50XG4gIDsgd3JpdGVyIDogJ2Egd3JpdGVyXG4gIDsgcmVhZGVyIDogJ2EgcmVhZGVyXG4gIH1cblxudHlwZSAnYSB3cml0ZXIwID0gJ2Egd3JpdGVyXG50eXBlICdhIHJlYWRlcjAgPSAnYSByZWFkZXJcbnR5cGUgJ2EgdDAgPSAnYSB0XG5cbm1vZHVsZSBTMSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gJ2Igd3JpdGVyMFxuICB0eXBlICgnYSwgJ2IpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gJ2IgcmVhZGVyMFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSB0MCAtPiAnYiB0MFxuZW5kXG5cbm1vZHVsZSBTMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MpIFMxLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MpIFMxLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYykgUzEudFxuZW5kXG5cbm1vZHVsZSBTMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSB0MCAtPiAoJ2IsICdjLCAnZCkgUzIudFxuZW5kXG5cbmxldCB2YXJpYW50X3dyb25nX3R5cGUgbmFtZSBfYnVmIH5wb3NfcmVmIF94ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lICFwb3NfcmVmXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMuU3RyICopXG4oKiQgbWtfYmFzZSBcInVuaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfdW5pdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdW5pdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdCB9XG5sZXQgYmluX3JlYWRlcl91bml0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF91bml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgfVxubGV0IGJpbl9zaGFwZV91bml0ID0gU2hhcGUuYmluX3NoYXBlX3VuaXRcblxubGV0IGJpbl91bml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV91bml0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3VuaXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfdW5pdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJvb2xcIiAqKVxubGV0IGJpbl93cml0ZXJfYm9vbCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYm9vbDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbCB9XG5sZXQgYmluX3JlYWRlcl9ib29sID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9ib29sOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgfVxubGV0IGJpbl9zaGFwZV9ib29sID0gU2hhcGUuYmluX3NoYXBlX2Jvb2xcblxubGV0IGJpbl9ib29sID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ib29sOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Jvb2w7IHJlYWRlciA9IGJpbl9yZWFkZXJfYm9vbCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInN0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nIH1cblxubGV0IGJpbl9yZWFkZXJfc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9zdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX3N0cmluZ1xuXG5sZXQgYmluX3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfc3RyaW5nOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3N0cmluZzsgcmVhZGVyID0gYmluX3JlYWRlcl9zdHJpbmcgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJieXRlc1wiICopXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYnl0ZXM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzIH1cblxubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2J5dGVzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBTaGFwZS5iaW5fc2hhcGVfYnl0ZXNcblxubGV0IGJpbl9ieXRlcyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYnl0ZXM7IHdyaXRlciA9IGJpbl93cml0ZXJfYnl0ZXM7IHJlYWRlciA9IGJpbl9yZWFkZXJfYnl0ZXMgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJjaGFyXCIgKilcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2NoYXI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2NoYXIgfVxubGV0IGJpbl9yZWFkZXJfY2hhciA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfY2hhcjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiIH1cbmxldCBiaW5fc2hhcGVfY2hhciA9IFNoYXBlLmJpbl9zaGFwZV9jaGFyXG5cbmxldCBiaW5fY2hhciA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfY2hhcjsgd3JpdGVyID0gYmluX3dyaXRlcl9jaGFyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2NoYXIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludCB9XG5sZXQgYmluX3JlYWRlcl9pbnQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgfVxubGV0IGJpbl9zaGFwZV9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XG5sZXQgYmluX2ludCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQgfVxuXG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdFxuXG5sZXQgYmluX2Zsb2F0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDMyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzIgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50MzI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9pbnQzMlxuXG5sZXQgYmluX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQzMjsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQzMjsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQzMiB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjQgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NFxuXG5sZXQgYmluX2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdGl2ZWludFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdGl2ZWludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFNoYXBlLmJpbl9zaGFwZV9uYXRpdmVpbnRcblxubGV0IGJpbl9uYXRpdmVpbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdGl2ZWludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0aXZlaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXRpdmVpbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXQwXCIgKilcbmxldCBiaW5fd3JpdGVyX25hdDAgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdDA7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdDAgfVxubGV0IGJpbl9yZWFkZXJfbmF0MCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0MDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0MFwiIH1cbmxldCBiaW5fc2hhcGVfbmF0MCA9IFNoYXBlLmJpbl9zaGFwZV9uYXQwXG5cbmxldCBiaW5fbmF0MCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0MDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXQwOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdDAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwicmVmXCIgKilcbmxldCBiaW5fd3JpdGVyX3JlZiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcmVmIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9yZWYgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9yZWYgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfcmVmIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9yZWYgeDEgPSBTaGFwZS5iaW5fc2hhcGVfcmVmIHgxXG5cbmxldCBiaW5fcmVmIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcmVmIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcmVmIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3JlZiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxhenlcIiAqKVxubGV0IGJpbl93cml0ZXJfbGF6eSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGF6eSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xhenkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGF6eSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xhenkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGF6eSB4MVxuXG5sZXQgYmluX2xhenkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9sYXp5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGF6eSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9sYXp5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwib3B0aW9uXCIgKilcbmxldCBiaW5fd3JpdGVyX29wdGlvbiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfb3B0aW9uIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9vcHRpb24geDEgPSBTaGFwZS5iaW5fc2hhcGVfb3B0aW9uIHgxXG5cbmxldCBiaW5fb3B0aW9uIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfb3B0aW9uIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfb3B0aW9uIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX29wdGlvbiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcInBhaXJcIiAqKVxubGV0IGJpbl93cml0ZXJfcGFpciBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3BhaXIgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9wYWlyIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3BhaXIgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJwYWlyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9wYWlyIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX3BhaXIgeDEgeDJcblxubGV0IGJpbl9wYWlyIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcGFpciBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3BhaXIgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3BhaXIgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UzIFwidHJpcGxlXCIgKilcbmxldCBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiBiaW5fd3JpdGVyX2VsMyA9XG4gIHsgc2l6ZSA9XG4gICAgICAoZnVuIHYgLT5cbiAgICAgICAgIFNpemUuYmluX3NpemVfdHJpcGxlIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSBiaW5fd3JpdGVyX2VsMy5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfdHJpcGxlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwxLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwyLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwzLndyaXRlXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zXG4gICAgICAgICAgIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiBiaW5fcmVhZGVyX2VsMyA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF90cmlwbGVcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDEucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMi5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwzLnJlYWRcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInRyaXBsZVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzID0gU2hhcGUuYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4M1xuXG5sZXQgYmluX3RyaXBsZSBiaW5fZWwxIGJpbl9lbDIgYmluX2VsMyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdHJpcGxlIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZSBiaW5fZWwzLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl90cmlwbGUgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXIgYmluX2VsMy53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlciBiaW5fZWwzLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsaXN0XCIgKilcbmxldCBiaW5fd3JpdGVyX2xpc3QgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xpc3QgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xpc3QgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9saXN0IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xpc3QgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9saXN0IHgxID0gU2hhcGUuYmluX3NoYXBlX2xpc3QgeDFcblxubGV0IGJpbl9saXN0IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGlzdCBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xpc3QgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGlzdCBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2FycmF5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9hcnJheSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfYXJyYXkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9hcnJheSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9hcnJheSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9hcnJheSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9hcnJheSB4MVxuXG5sZXQgYmluX2FycmF5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYXJyYXkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9hcnJheSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9hcnJheSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcImhhc2h0YmxcIiAqKVxubGV0IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX2hhc2h0YmwgeDEgeDJcblxubGV0IGJpbl9oYXNodGJsIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaGFzaHRibCBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5cbmxldCBiaW5fZmxvYXQzMl92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJ2ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfdmVjID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZlYyB9XG5sZXQgYmluX3JlYWRlcl92ZWMgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgfVxubGV0IGJpbl9zaGFwZV92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3ZlYyA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdmVjOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZlYzsgcmVhZGVyID0gYmluX3JlYWRlcl92ZWMgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcblxubGV0IGJpbl9mbG9hdDMyX21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm1hdFwiICopXG5sZXQgYmluX3dyaXRlcl9tYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbWF0IH1cbmxldCBiaW5fcmVhZGVyX21hdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiB9XG5sZXQgYmluX3NoYXBlX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fbWF0ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9tYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfbWF0OyByZWFkZXIgPSBiaW5fcmVhZGVyX21hdCB9XG5cbigqJCBta19iYXNlIFwiYmlnc3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYmlnc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmcgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX2JpZ3N0cmluZ1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYmlnc3RyaW5nXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9iaWdzdHJpbmdcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2JpZ3N0cmluZ1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0YXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRhcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheSB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0YXJyYXlcblxubGV0IGJpbl9mbG9hdGFycmF5ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdGFycmF5XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdGFycmF5XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdGFycmF5XG4gIH1cbjs7XG5cbigqJCopXG5cbnR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiQgbWtfYmFzZSBcImZsb2F0X2FycmF5XCIgKilcbiAgbGV0IGJpbl93cml0ZXJfZmxvYXRfYXJyYXkgPVxuICAgIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRfYXJyYXk7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0X2FycmF5IH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl9mbG9hdF9hcnJheSA9XG4gICAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdF9hcnJheTsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRfYXJyYXlcIiB9XG4gIDs7XG5cbiAgbGV0IGJpbl9zaGFwZV9mbG9hdF9hcnJheSA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdF9hcnJheVxuXG4gIGxldCBiaW5fZmxvYXRfYXJyYXkgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXRfYXJyYXlcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXRfYXJyYXlcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXRfYXJyYXlcbiAgICB9XG4gIDs7XG4gICgqJCopXG5lbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbigqJCBta19iYXNlIFwidmFyaWFudF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfdmFyaWFudF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZhcmlhbnRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92YXJpYW50X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl92YXJpYW50X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmFyaWFudF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZhcmlhbnRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IFNoYXBlLmJpbl9zaGFwZV92YXJpYW50X2ludFxuXG5sZXQgYmluX3ZhcmlhbnRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV92YXJpYW50X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdmFyaWFudF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzhiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzhiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF84Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfOGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfOGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzhiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF84Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfOGJpdFxuXG5sZXQgYmluX2ludF84Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfOGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzhiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF84Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzE2Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8xNmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzE2Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMTZiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzE2Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMTZiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8xNmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8xNmJpdFxuXG5sZXQgYmluX2ludF8xNmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzE2Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMTZiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8xNmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8zMmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMzJiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8zMmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzMyYml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8zMmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzMyYml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMzJiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMzJiaXRcblxubGV0IGJpbl9pbnRfMzJiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8zMmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzMyYml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMzJiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfNjRiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzY0Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfNjRiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfNjRiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzY0Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzY0Yml0XG5cbmxldCBiaW5faW50XzY0Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfNjRiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF82NGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzY0Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRfYml0c1wiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NF9iaXRzID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NF9iaXRzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NF9iaXRzIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0X2JpdHMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0X2JpdHM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0X2JpdHNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRfYml0c1xuXG5sZXQgYmluX2ludDY0X2JpdHMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0X2JpdHNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0X2JpdHNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0X2JpdHNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMTZfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmsxNl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazE2X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazE2X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG5cbmxldCBiaW5fbmV0d29yazE2X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazE2X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazE2X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50MzJcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50MzJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG5cbmxldCBiaW5fbmV0d29yazY0X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDY0XG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludDY0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG5cbmxldCBiaW5fbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0XG4gIH1cbjs7XG5cbigqJCopXG5sZXQgYmluX3dyaXRlcl9hcnJheV9ub19sZW5ndGggYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiAoU2l6ZS5iaW5fc2l6ZV9hcnJheV9ub19sZW5ndGggW0B3YXJuaW5nIFwiLTNcIl0pIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgKFdyaXRlLmJpbl93cml0ZV9hcnJheV9ub19sZW5ndGggW0B3YXJuaW5nIFwiLTNcIl0pIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbmxldCBjbnZfd3JpdGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiB0cF9jbGFzcy5zaXplIChjbnYgdikpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gdHBfY2xhc3Mud3JpdGUgYnVmIH5wb3MgKGNudiB2KSlcbiAgfVxuOztcblxubGV0IGNudl9yZWFkZXIgY252IHRwX2NsYXNzID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gY252ICh0cF9jbGFzcy5yZWFkIGJ1ZiB+cG9zX3JlZikpXG4gIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgdnRhZyAtPiBjbnYgKHRwX2NsYXNzLnZ0YWdfcmVhZCBidWYgfnBvc19yZWYgdnRhZykpXG4gIH1cbjs7XG5cbmxldCBjbnYgZm9yX3NoYXBlIGZvcl93cml0ZXIgZm9yX3JlYWRlciB0cF9jbGFzcyA9XG4gIHsgc2hhcGUgPSBmb3Jfc2hhcGUgdHBfY2xhc3Muc2hhcGVcbiAgOyB3cml0ZXIgPSBjbnZfd3JpdGVyIGZvcl93cml0ZXIgdHBfY2xhc3Mud3JpdGVyXG4gIDsgcmVhZGVyID0gY252X3JlYWRlciBmb3JfcmVhZGVyIHRwX2NsYXNzLnJlYWRlclxuICB9XG47O1xuIiwiKCogQmluYWJsZTogc2lnbmF0dXJlcyBkZWZpbmluZyBnZW5lcmF0ZWQgZnVuY3Rpb25zIGZvciB0aGUgYmluYXJ5IHByb3RvY29sLlxuICAgW1MsIFMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyBzYXRpc2ZpZWQgYnkgdGhlIGdlbmVyYXRlZCBjb2RlIGFuZFxuICAgW01pbmltYWwuUywgTWluaW1hbC5TMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgdGhhdCBnZW5lcmF0ZWQgY29kZSB1c2VzLiAqKVxuXG4oKiB0aGUgc3Vic2V0IG9mIFMgY29udGFpbmluZyBvbmx5IGZ1bmN0aW9ucywgc28gdGhhdCBvbmUgY2FuIHJlY3Vyc2l2ZWx5IGRlZmluZSBtb2R1bGVzXG4gICBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2UgKilcbm1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX3QgOiB0IFJlYWQucmVhZGVyXG5cbiAgKCoqXG4gICAgIFRoaXMgZnVuY3Rpb24gb25seSBuZWVkcyBpbXBsZW1lbnRhdGlvbiBpZiBbdF0gZXhwb3NlZCB0byBiZSBhIHBvbHltb3JwaGljIHZhcmlhbnQuXG4gICAgIERlc3BpdGUgd2hhdCB0aGUgdHlwZSByZWFkcywgdGhpcyBkb2VzICpub3QqIHByb2R1Y2UgYSBmdW5jdGlvbiBhZnRlciByZWFkaW5nO1xuICAgICBpbnN0ZWFkIGl0IHRha2VzIHRoZSBjb25zdHJ1Y3RvciB0YWcgKGludCkgYmVmb3JlIHJlYWRpbmcgYW5kIHJlYWRzIHRoZSByZXN0IG9mIHRoZVxuICAgICB2YXJpYW50IFt0XSBhZnRlcndhcmRzLlxuICAqKVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgdmFsIGJpbl93cml0ZXJfdCA6IHQgVHlwZV9jbGFzcy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6IHQgVHlwZV9jbGFzcy5yZWFkZXJcbiAgdmFsIGJpbl90IDogdCBUeXBlX2NsYXNzLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdhIHQpIFNpemUuc2l6ZXIxXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgaW50IC0+ICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgV3JpdGUud3JpdGVyMlxuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi50XG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMudFxuZW5kXG5cbm1vZHVsZSBNaW5pbWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICAgIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiB0IFJlYWQucmVhZGVyXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdhIHQpIFNpemUuc2l6ZXIxXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgaW50IC0+ICdhIHQpIFJlYWQucmVhZGVyMVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgV3JpdGUud3JpdGVyMlxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIGVuZFxuZW5kXG4iLCIoKiBVdGlsczogdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHVzZXIgY29udmVuaWVuY2UgKilcblxub3BlbiBDb21tb25cbm9wZW4gU2l6ZVxub3BlbiBUeXBlX2NsYXNzXG5pbmNsdWRlIFV0aWxzX2ludGZcblxubGV0IHNpemVfaGVhZGVyX2xlbmd0aCA9IDhcbmxldCBiaW5fd3JpdGVfc2l6ZV9oZWFkZXIgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0XG5sZXQgYmluX3JlYWRfc2l6ZV9oZWFkZXIgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdFxuXG5sZXQgYmluX2R1bXAgPyhoZWFkZXIgPSBmYWxzZSkgd3JpdGVyIHYgPVxuICBsZXQgYnVmLCBwb3MsIHBvc19sZW4gPVxuICAgIGxldCB2X2xlbiA9IHdyaXRlci5zaXplIHYgaW5cbiAgICBpZiBoZWFkZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCB0b3RfbGVuID0gdl9sZW4gKyBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHRvdF9sZW4gaW5cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3M6MCB2X2xlbiBpblxuICAgICAgYnVmLCBwb3MsIHBvcyArIHZfbGVuKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgMCwgdl9sZW4pXG4gIGluXG4gIGxldCBwb3MgPSB3cml0ZXIud3JpdGUgYnVmIH5wb3MgdiBpblxuICBpZiBwb3MgPSBwb3NfbGVuXG4gIHRoZW4gYnVmXG4gIGVsc2UgZmFpbHdpdGggXCJCaW5fcHJvdC5VdGlscy5iaW5fZHVtcDogc2l6ZSBjaGFuZ2VkIGR1cmluZyB3cml0aW5nXCJcbjs7XG5cbigqIFJlYWRpbmcgZnJvbSBzdHJlYW1zICopXG5cbmxldCBiaW5fcmVhZF9zdHJlYW0gP21heF9zaXplIH5yZWFkIHJlYWRlciA9XG4gIGxldCBidWYgPSBjcmVhdGVfYnVmIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICByZWFkIGJ1ZiB+cG9zOjAgfmxlbjpzaXplX2hlYWRlcl9sZW5ndGg7XG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGxlbiA9IGJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICBtYXRjaCBtYXhfc2l6ZSB3aXRoXG4gIHwgU29tZSBtYXhfc2l6ZSB3aGVuIGxlbiA+IG1heF9zaXplIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHNpemUgZXhjZWVkcyBtYXhfc2l6ZTogJWQgPiAlZFwiXG4gICAgICAgICBsZW5cbiAgICAgICAgIG1heF9zaXplKVxuICB8IF8gLT5cbiAgICBsZXQgYnVmID0gaWYgbGVuID4gc2l6ZV9oZWFkZXJfbGVuZ3RoIHRoZW4gY3JlYXRlX2J1ZiBsZW4gZWxzZSBidWYgaW5cbiAgICByZWFkIGJ1ZiB+cG9zOjAgfmxlbjtcbiAgICBwb3NfcmVmIDo9IDA7XG4gICAgbGV0IHJlcyA9IHJlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGlmICFwb3NfcmVmID0gbGVuXG4gICAgdGhlbiByZXNcbiAgICBlbHNlIChcbiAgICAgIGxldCBtc2cgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBwcm90b2NvbCBsaWVkIGFib3V0IGxlbmd0aCBvZiB2YWx1ZTogZXhwZWN0ZWQgXFxcbiAgICAgICAgICAgJWQsIHJlY2VpdmVkICVkXCJcbiAgICAgICAgICBsZW5cbiAgICAgICAgICAhcG9zX3JlZlxuICAgICAgaW5cbiAgICAgIGZhaWx3aXRoIG1zZylcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5tb2R1bGUgT2ZfbWluaW1hbCAoUyA6IEJpbmFibGUuTWluaW1hbC5TKSA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5sZXQgbWF5YmVfYW5ub3RhdGVfc2hhcGUgbWF5YmVfdXVpZCBzaGFwZSA9XG4gIG1hdGNoIG1heWJlX3V1aWQgd2l0aFxuICB8IE5vbmUgLT4gc2hhcGVcbiAgfCBTb21lIHV1aWQgLT4gU2hhcGUuYW5ub3RhdGUgdXVpZCBzaGFwZVxuOztcblxubW9kdWxlIE1ha2VfYmluYWJsZV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBPZl9taW5pbWFsIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgICAgIHR5cGUgdCA9IFMudFxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBtYXliZV9hbm5vdGF0ZV9zaGFwZSBTLm1heWJlX2NhbGxlcl9pZGVudGl0eSBCLmJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gQi5iaW5fc2l6ZV90IChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID0gQi5iaW5fd3JpdGVfdCBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPSBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBidWYgfnBvc19yZWYpXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gYnVmIH5wb3NfcmVmIG4gPSBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYnVmIH5wb3NfcmVmIG4pXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZSBTLm1heWJlX2NhbGxlcl9pZGVudGl0eSAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwgdCA9IEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbCAoUy50b19iaW5hYmxlIHQpXG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbCBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbCBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMS5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyIGJpbl9zaGFwZV9lbDMgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyIGJpbl9zaGFwZV9lbDMpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTMuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRoX3V1aWRfc3BlYykgPSBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgPSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkXG5tb2R1bGUgTWFrZV9iaW5hYmxlMSA9IE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkXG5tb2R1bGUgTWFrZV9iaW5hYmxlMiA9IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkXG5tb2R1bGUgTWFrZV9iaW5hYmxlMyA9IE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkXG5cbmxldCB3aXRoX21vZHVsZV9uYW1lIGYgfm1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWUgPVxuICBtYXRjaCBtb2R1bGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBmIGZ1bmN0aW9uX25hbWVcbiAgfCBTb21lIG1vZHVsZV9uYW1lIC0+IFByaW50Zi5rc3ByaW50ZiBmIFwiJXMuJXNcIiBtb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lXG47O1xuXG5sZXQgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gPSB3aXRoX21vZHVsZV9uYW1lIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uXG5cbmxldCByYWlzZV9yZWFkX3Rvb19tdWNoID1cbiAgd2l0aF9tb2R1bGVfbmFtZVxuICAgIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogdHJpZWQgdG8gcmVhZCBtb3JlIGVsZW1lbnRzIHRoYW4gYXZhaWxhYmxlXCIpXG47O1xuXG5sZXQgcmFpc2VfcmVhZF9ub3RfZW5vdWdoID1cbiAgd2l0aF9tb2R1bGVfbmFtZSAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IGRpZG4ndCByZWFkIGFsbCBlbGVtZW50c1wiKVxuOztcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCI2NTkyMzcxYS00OTk0LTExZTYtOTIzYS03NzQ4ZTQxODI3NjRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTEgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYWM4YTlmZjQtNDk5NC0xMWU2LTlhMWItOWZiNGU5MzNiZDlkXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIF9uIC0+IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgX24pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTIgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImI0ZTU0YWQyLTQ5OTQtMTFlNi1iOGRmLTg3YzI5OTdmOWY1MlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYmluX3JlYWRfYiBfYnVmIH5wb3NfcmVmIF9uID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlM19zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgdDMgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJmMjExMmVkYS1lN2Q3LTExZTYtYmIzNi0wNzJlOWNlMTU5ZGJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgdDMgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYmluX3JlYWRfYiBfYmluX3JlYWRfYyBfYnVmIH5wb3NfcmVmIF9uID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcbiIsIigqKlxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBkZWZhdWx0IGNvbnZlcnRlcnMgZm9yIHRoZSB0eXBlcyBkZWZpbmVkIGluIHRoZSBPQ2FtbFxuICAgc3RhbmRhcmQgbGlicmFyeS5cbiopXG5cbmluY2x1ZGUgU2l6ZVxuXG5sZXQgYmluX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl91bml0XG5sZXQgYmluX3NoYXBlX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV91bml0XG5sZXQgYmluX3dyaXRlcl91bml0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3VuaXRcbmxldCBiaW5fd3JpdGVfdW5pdCA9IFdyaXRlLmJpbl93cml0ZV91bml0XG5sZXQgYmluX3JlYWRlcl91bml0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3VuaXRcbmxldCBiaW5fcmVhZF91bml0ID0gUmVhZC5iaW5fcmVhZF91bml0XG5cbmxldCBfX2Jpbl9yZWFkX3VuaXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInVuaXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9ib29sID0gVHlwZV9jbGFzcy5iaW5fYm9vbFxubGV0IGJpbl9zaGFwZV9ib29sID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYm9vbFxubGV0IGJpbl93cml0ZXJfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ib29sXG5sZXQgYmluX3dyaXRlX2Jvb2wgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbFxubGV0IGJpbl9yZWFkZXJfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9ib29sXG5sZXQgYmluX3JlYWRfYm9vbCA9IFJlYWQuYmluX3JlYWRfYm9vbFxuXG5sZXQgX19iaW5fcmVhZF9ib29sX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc3RyaW5nXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3N0cmluZ1xubGV0IGJpbl93cml0ZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3N0cmluZ1xubGV0IGJpbl93cml0ZV9zdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfc3RyaW5nXG5sZXQgYmluX3JlYWRfc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9zdHJpbmdcblxubGV0IF9fYmluX3JlYWRfc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX2J5dGVzXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYnl0ZXNcbmxldCBiaW5fd3JpdGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2J5dGVzXG5sZXQgYmluX3dyaXRlX2J5dGVzID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzXG5sZXQgYmluX3JlYWRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9ieXRlc1xubGV0IGJpbl9yZWFkX2J5dGVzID0gUmVhZC5iaW5fcmVhZF9ieXRlc1xuXG5sZXQgX19iaW5fcmVhZF9ieXRlc19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYnl0ZXNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fY2hhclxubGV0IGJpbl9zaGFwZV9jaGFyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfY2hhclxubGV0IGJpbl93cml0ZXJfY2hhciA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9jaGFyXG5sZXQgYmluX3dyaXRlX2NoYXIgPSBXcml0ZS5iaW5fd3JpdGVfY2hhclxubGV0IGJpbl9yZWFkZXJfY2hhciA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9jaGFyXG5sZXQgYmluX3JlYWRfY2hhciA9IFJlYWQuYmluX3JlYWRfY2hhclxuXG5sZXQgX19iaW5fcmVhZF9jaGFyX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJjaGFyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50ID0gVHlwZV9jbGFzcy5iaW5faW50XG5sZXQgYmluX3NoYXBlX2ludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludFxubGV0IGJpbl93cml0ZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludFxubGV0IGJpbl93cml0ZV9pbnQgPSBXcml0ZS5iaW5fd3JpdGVfaW50XG5sZXQgYmluX3JlYWRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50XG5sZXQgYmluX3JlYWRfaW50ID0gUmVhZC5iaW5fcmVhZF9pbnRcbmxldCBfX2Jpbl9yZWFkX2ludF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPSBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgIXBvc19yZWZcbmxldCBiaW5fZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdFxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0XG5sZXQgYmluX3dyaXRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdFxubGV0IGJpbl93cml0ZV9mbG9hdCA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdFxubGV0IGJpbl9yZWFkZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRcbmxldCBiaW5fcmVhZF9mbG9hdCA9IFJlYWQuYmluX3JlYWRfZmxvYXRcblxubGV0IF9fYmluX3JlYWRfZmxvYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0YXJyYXlcbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVyX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZV9mbG9hdGFycmF5ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZGVyX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0YXJyYXlcblxubGV0IF9fYmluX3JlYWRfZmxvYXRhcnJheV9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRhcnJheVwiICFwb3NfcmVmXG47O1xuXG5pbmNsdWRlIHN0cnVjdFxuICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXlcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA5XSBVc2UgW2Zsb2F0IGFycmF5XSBvciBbZmxvYXRhcnJheV0gaW5zdGVhZFwiXVxuXG4gIGxldCAoYmluX3NoYXBlX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl93cml0ZXJfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgXFxcbiAgICAgICAgICBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl93cml0ZV9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gXFxcbiAgICAgICAgICBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFdyaXRlLmJpbl93cml0ZV9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3JlYWRlcl9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnMgXFxcbiAgICAgICAgICBkaXJlY3RseVwiXSlcbiAgICA9XG4gICAgVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IChiaW5fcmVhZF9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gXFxcbiAgICAgICAgICBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFJlYWQuYmluX3JlYWRfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9mbG9hdF9hcnJheV9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICAgIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdF9hcnJheVwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IChfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X18gW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgXFxcbiAgICAgICAgICBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSBmbG9hdGFycmF5IGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgX19iaW5fcmVhZF9mbG9hdF9hcnJheV9fXG4gIDs7XG5lbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbmxldCBiaW5faW50MzIgPSBUeXBlX2NsYXNzLmJpbl9pbnQzMlxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDMyXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQzMlxubGV0IGJpbl93cml0ZV9pbnQzMiA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMlxubGV0IGJpbl9yZWFkZXJfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50MzJcbmxldCBiaW5fcmVhZF9pbnQzMiA9IFJlYWQuYmluX3JlYWRfaW50MzJcblxubGV0IF9fYmluX3JlYWRfaW50MzJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50NjQgPSBUeXBlX2NsYXNzLmJpbl9pbnQ2NFxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDY0XG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQ2NFxubGV0IGJpbl93cml0ZV9pbnQ2NCA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NFxubGV0IGJpbl9yZWFkZXJfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50NjRcbmxldCBiaW5fcmVhZF9pbnQ2NCA9IFJlYWQuYmluX3JlYWRfaW50NjRcblxubGV0IF9fYmluX3JlYWRfaW50NjRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fbmF0aXZlaW50XG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX25hdGl2ZWludFxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdGl2ZWludFxubGV0IGJpbl93cml0ZV9uYXRpdmVpbnQgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRfbmF0aXZlaW50ID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnRcblxubGV0IF9fYmluX3JlYWRfbmF0aXZlaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWYgPSBUeXBlX2NsYXNzLmJpbl9yZWZcbmxldCBiaW5fc2hhcGVfcmVmID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfcmVmXG5sZXQgYmluX3dyaXRlcl9yZWYgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfcmVmXG5sZXQgYmluX3dyaXRlX3JlZiA9IFdyaXRlLmJpbl93cml0ZV9yZWZcbmxldCBiaW5fcmVhZGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9yZWZcbmxldCBiaW5fcmVhZF9yZWYgPSBSZWFkLmJpbl9yZWFkX3JlZlxuXG5sZXQgX19iaW5fcmVhZF9yZWZfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGF6eVxubGV0IGJpbl93cml0ZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eV90ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9sYXp5XG5sZXQgYmluX3JlYWRfbGF6eV90ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9sYXp5XG5sZXQgYmluX3NoYXBlX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eSA9IFdyaXRlLmJpbl93cml0ZV9sYXp5XG5sZXQgYmluX3JlYWRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9vcHRpb25cbmxldCBiaW5fc2hhcGVfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfb3B0aW9uXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfb3B0aW9uXG5sZXQgYmluX3dyaXRlX29wdGlvbiA9IFdyaXRlLmJpbl93cml0ZV9vcHRpb25cbmxldCBiaW5fcmVhZGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9vcHRpb25cbmxldCBiaW5fcmVhZF9vcHRpb24gPSBSZWFkLmJpbl9yZWFkX29wdGlvblxuXG5sZXQgX19iaW5fcmVhZF9vcHRpb25fXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9saXN0XG5sZXQgYmluX3NoYXBlX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9saXN0XG5sZXQgYmluX3dyaXRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xpc3RcbmxldCBiaW5fd3JpdGVfbGlzdCA9IFdyaXRlLmJpbl93cml0ZV9saXN0XG5sZXQgYmluX3JlYWRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xpc3RcbmxldCBiaW5fcmVhZF9saXN0ID0gUmVhZC5iaW5fcmVhZF9saXN0XG5cbmxldCBfX2Jpbl9yZWFkX2xpc3RfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX2FycmF5XG5sZXQgYmluX3NoYXBlX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYXJyYXlcbmxldCBiaW5fd3JpdGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2FycmF5XG5sZXQgYmluX3dyaXRlX2FycmF5ID0gV3JpdGUuYmluX3dyaXRlX2FycmF5XG5sZXQgYmluX3JlYWRlcl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9hcnJheVxubGV0IGJpbl9yZWFkX2FycmF5ID0gUmVhZC5iaW5fcmVhZF9hcnJheVxuXG5sZXQgX19iaW5fcmVhZF9hcnJheV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5faGFzaHRibFxubGV0IGJpbl9zaGFwZV9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaGFzaHRibFxubGV0IGJpbl93cml0ZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9oYXNodGJsXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgPSBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibFxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9oYXNodGJsXG5sZXQgYmluX3JlYWRfaGFzaHRibCA9IFJlYWQuYmluX3JlYWRfaGFzaHRibFxuXG5sZXQgX19iaW5fcmVhZF9oYXNodGJsX18gX2YgX2cgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fYmlnc3RyaW5nXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmdcblxubGV0IF9fYmluX3JlYWRfYmlnc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9tYXRcbmxldCBiaW5fc2hhcGVfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX3dyaXRlcl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbWF0XG5sZXQgYmluX3dyaXRlX21hdCA9IFdyaXRlLmJpbl93cml0ZV9tYXRcbmxldCBiaW5fcmVhZGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9tYXRcbmxldCBiaW5fcmVhZF9tYXQgPSBSZWFkLmJpbl9yZWFkX21hdFxubGV0IF9fYmluX3JlYWRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl92ZWMgPSBUeXBlX2NsYXNzLmJpbl92ZWNcbmxldCBiaW5fc2hhcGVfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3dyaXRlcl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdmVjXG5sZXQgYmluX3dyaXRlX3ZlYyA9IFdyaXRlLmJpbl93cml0ZV92ZWNcbmxldCBiaW5fcmVhZGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl92ZWNcbmxldCBiaW5fcmVhZF92ZWMgPSBSZWFkLmJpbl9yZWFkX3ZlY1xubGV0IF9fYmluX3JlYWRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiAhcG9zX3JlZlxuOztcbiIsImluY2x1ZGUgTWQ1X2xpYlxuXG5sZXQgYmluX3NoYXBlX3QgPVxuICBTaGFwZS5iYXNldHlwZSAoU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmNmJkY2RkMC05Zjc1LTExZTYtOWE3ZS1kMzAyMDQyOGVmZWRcIikgW11cbjs7XG5cbmxldCBiaW5fc2l6ZV90ID0gU2l6ZS5iaW5fc2l6ZV9tZDVcbmxldCBiaW5fd3JpdGVfdCA9IFdyaXRlLmJpbl93cml0ZV9tZDVcbmxldCBiaW5fcmVhZF90ID0gUmVhZC5iaW5fcmVhZF9tZDVcblxubGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZkaWdlc3QgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiU2hhcGUuTWQ1LnRcIiAhcG9zX3JlZlxuOztcbiIsIm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWEyNTU3ZS00OTBhLTExZTYtOThhYy00Yjg5NTNkNTI1ZmVcIikgWyB0IF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBhID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYmluX3NpemVfYSBhXG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgPVxuICAgIGxldCBzdGFydF9hID0gcG9zICsgVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgbGV0IGVuZF9hID0gYmluX3dyaXRlX2EgYnVmIH5wb3M6c3RhcnRfYSBhIGluXG4gICAgbGV0IHNpemUgPSBlbmRfYSAtIHN0YXJ0X2EgaW5cbiAgICBsZXQgd3JpdHRlbiA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgYXNzZXJ0ICh3cml0dGVuID0gc3RhcnRfYSk7XG4gICAgZW5kX2FcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGV4cGVjdGVkX3NpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgc3RhcnRfYSA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBlbmRfYSA9ICFwb3NfcmVmIGluXG4gICAgaWYgZW5kX2EgLSBzdGFydF9hIDw+IGV4cGVjdGVkX3NpemVcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgXCJCaW5fcHJvdC5CbG9iLmJpbl9yZWFkX3Q6IHNpemUgKCVkKSA8PiBleHBlY3RlZCAoJWQpXCJcbiAgICAgICAgICAgKGVuZF9hIC0gc3RhcnRfYSlcbiAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSk7XG4gICAgYVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIF8gfnBvc19yZWYgPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IudFwiICFwb3NfcmVmXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpZCA9ICdhXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIFV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IFRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgdCA9IHRcbiAgICBsZXQgdG9fYmluYWJsZSB0ID0gdFxuICBlbmQpXG5cbm1vZHVsZSBPcGFxdWUgPSBzdHJ1Y3RcbiAgKCogW0JpZ3N0cmluZ10gYW5kIFtTdHJpbmddIHNoYXJlIFtiaW5fc2hhcGVfdF0gYmVjYXVzZSB0aGV5IGhhdmUgZXhhY3RseSB0aGUgc2FtZVxuICAgICBzZXJpYWxpemF0aW9uIGZvcm1hdCBhbmQgdGhleSBkZW5vdGUgdGhlIHNhbWUgdmFsdWVzLlxuXG4gICAgIEluIGZhY3QgYWxtb3N0IGNlcnRhaW5seSBbQmxvYi50XSBpdHNlbGYgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYmluX3NoYXBlX3QgYXMgd2VsbC4gKilcbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMWY3NmUtNDkwYS0xMWU2LTg2YTktNWJlZjU4NWYyNjAyXCIpIFtdKVxuICA7O1xuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICAoKiBbYnVmXSBpcyB0aGUgYmluLWlvIGRhdGEgZXhjbHVkaW5nIHRoZSBzaXplIGhlYWRlci4gV2hlbiAoZGUtKXNlcmlhbGl6ZWQsIHRoZSBzaXplXG4gICAgICAgaGVhZGVyIGlzIGluY2x1ZGVkLiAqKVxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBidWZcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBidWZfbGVuIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IGJ1Zl9sZW4gdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIHNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gY3JlYXRlX2J1ZiBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOiFwb3NfcmVmIH5kc3Q6dCB+ZHN0X3BvczowIHNpemU7XG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuT3BhcXVlLnRcIiAhcG9zX3JlZlxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgVXRpbHMuT2ZfbWluaW1hbCAoVClcblxuICAgIGxldCB0b19vcGFxdWUgYmxvYiBiaW5fd3JpdGVyID0gVXRpbHMuYmluX2R1bXAgYmluX3dyaXRlciBibG9iXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gKHQgOiB0KSBiaW5fcmVhZGVyID0gYmluX3JlYWRlci5UeXBlX2NsYXNzLnJlYWQgdCB+cG9zX3JlZjoocmVmIDApXG5cbiAgICAoKiBCaWdzdHJpbmdzIGFyZSBhIHByaW1pdGl2ZSB0eXBlIHRoYXQgcG9seW1vcnBoaWMgY29tcGFyZSBoYW5kbGVzIHdlbGwuICopXG4gICAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiBidWYgLT4gYnVmIC0+IGludClcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBQcHhfc2V4cF9jb252X2xpYi5TZXhwLkF0b20gKG9mX29wYXF1ZV9leG4gdCBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgU3RyaW5nLmxlbmd0aCB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIENvbW1vbi5ibGl0X3N0cmluZ19idWYgdCB+c3JjX3BvczowIGJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IGxlbiA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3M6IXBvc19yZWYgfmxlbiBpblxuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgbGVuO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuT3BhcXVlLnRcIiAhcG9zX3JlZlxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgVXRpbHMuT2ZfbWluaW1hbCAoVClcblxuICAgIGxldCBsZW5ndGggdCA9IFN0cmluZy5sZW5ndGggdFxuXG4gICAgbGV0IHRvX29wYXF1ZSB+YnVmIHYgYmluX3dyaXRlcl92IDogdCA9XG4gICAgICBsZXQgcG9zID0gMCBpblxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXJfdi5UeXBlX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgICAgIHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgb2Zfb3BhcXVlX2V4biB+YnVmICh0IDogdCkgYmluX3JlYWRlcl92ID1cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgICAgIENvbW1vbi5ibGl0X3N0cmluZ19idWYgdCBidWYgfmxlbjtcbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZXMgPSBiaW5fcmVhZGVyX3YuVHlwZV9jbGFzcy5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgaWYgIXBvc19yZWYgPD4gbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgXCJPcGFxdWUgYmxvYiBoYXMgJWQgYnl0ZXMgYnV0IFtvZl9vcGFxdWVfZXhuXSByZWFkICVkXCJcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgIXBvc19yZWZcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggZXJyb3IpXG4gICAgICBlbHNlIHJlc1xuICAgIDs7XG5cbiAgICAoKiBTdHJpbmdzIGFyZSBhIHByaW1pdGl2ZSB0eXBlIHRoYXQgcG9seW1vcnBoaWMgY29tcGFyZSBoYW5kbGVzIHdlbGwuICopXG4gICAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgICBsZXQgc2V4cF9vZl90ID0gUHB4X3NleHBfY29udl9saWIuQ29udi5zZXhwX29mX3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgSWdub3JlZCA9IHN0cnVjdFxuICAoKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgYW4gaWdub3JlZCB2YWx1ZSBpcyBqdXN0IHRoZSBzaXplIG9mIHRoZSB2YWx1ZSBpdCB3YXMgY3JlYXRlZFxuICAgICBmcm9tIChpLmUuLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2VyZSBpZ25vcmVkIGZyb20gdGhlIGJ1ZmZlciB3ZSB3ZXJlIHJlYWRpbmdcbiAgICAgLS0gd2UgZXhjbHVkZSB0aGUgOCBieXRlIHNpemUgaGVhZGVyIGZyb20gd2hpY2ggdGhlIHNpemUgd2FzIHJlYWQpLiAqKVxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgYmluX3NpemVfdCBzaXplID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgc2l6ZVxuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICBzaXplXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuSWdub3JlZC50XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90ID0geyBUeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdmFsIHByZV90ZXN0X2hvb2sgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5sZXQgcHJlX3Rlc3RfaG9vayA9IGlnbm9yZVxuIiwiWyUlaW1wb3J0IFwiY29uZmlnLmhcIl1cblxub3BlbiEgQmFzZVxuXG5bJSVpZmRlZiBKU0NfQVJDSF9TSVhUWUZPVVJdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5bQEBub2FsbG9jXVxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuXG5bJSVlbmRpZl1cblslJWlmZGVmIEpTQ19QT1NJWF9USU1FUlNdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIGZhaWxlZFwiXG5cblslJWVsc2VdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImdldHRpbWVvZmRheSBmYWlsZWRcIlxuXG5bJSVlbmRpZl1cblxubGV0IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgPVxuICBsZXQgdCA9IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyAoKSBpblxuICBpZiBJbnQ2My4oIDw+ICkgdCBJbnQ2My56ZXJvIHRoZW4gdCBlbHNlIGdldHRpbWVfZmFpbGVkICgpXG47O1xuIiwibW9kdWxlIFRlc3RfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN1Y2Nlc3MgfCBGYWlsdXJlIHwgRXJyb3JcblxuICBsZXQgdG9fZXhpdF9jb2RlID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gMFxuICAgIHwgRmFpbHVyZSAtPiAyXG4gICAgfCBFcnJvciAgIC0+IDFcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gXCJzdWNjZXNzXCJcbiAgICB8IEZhaWx1cmUgLT4gXCJmYWlsdXJlXCJcbiAgICB8IEVycm9yICAgLT4gXCJlcnJvclwiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmUgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBTdWNjZXNzLCBTdWNjZXNzICAgICAgICAtPiBTdWNjZXNzXG4gICAgfCBFcnJvciAgLCBfIHwgXywgRXJyb3IgICAtPiBFcnJvclxuICAgIHwgRmFpbHVyZSwgXyB8IF8sIEZhaWx1cmUgLT4gRmFpbHVyZVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbCB0cyA9IExpc3QuZm9sZF9sZWZ0IGNvbWJpbmUgU3VjY2VzcyB0c1xuZW5kXG5cbmxldCBwYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT4gUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAxXG4gIHwgQXJnLkhlbHAgbXNnIC0+IFByaW50Zi5wcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG47O1xuXG50eXBlIGRlc2NyID0gc3RyaW5nXG5sZXQgdGVzdF9tb2R1bGVzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdF9tb2R1bGVzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgdGVzdHNfcmFuID0gcmVmIDBcbmxldCB0ZXN0c19mYWlsZWQgPSByZWYgMFxubGV0IGR5bmFtaWNfbGliIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxudHlwZSBmaWxlbmFtZSA9IHN0cmluZ1xudHlwZSBsaW5lX251bWJlciA9IGludFxudHlwZSBzdGFydF9wb3MgPSBpbnRcbnR5cGUgZW5kX3BvcyA9IGludFxudHlwZSBjb25maWcgPSAobW9kdWxlIElubGluZV90ZXN0X2NvbmZpZy5TKVxudHlwZSAnYSB0ZXN0X2Z1bmN0aW9uX2FyZ3NcbiAgPSBjb25maWc6Y29uZmlnXG4gIC0+IGRlc2NyOmRlc2NyIExhenkudFxuICAtPiB0YWdzOnN0cmluZyBsaXN0XG4gIC0+IGZpbGVuYW1lOmZpbGVuYW1lXG4gIC0+IGxpbmVfbnVtYmVyOmxpbmVfbnVtYmVyXG4gIC0+IHN0YXJ0X3BvczpzdGFydF9wb3NcbiAgLT4gZW5kX3BvczplbmRfcG9zXG4gIC0+ICdhXG5cbm1vZHVsZSBUYWdfcHJlZGljYXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByZXF1aXJlZF90YWdzICA6IHN0cmluZyBsaXN0XG4gICAgOyBkcm9wcGVkX3RhZ3MgOiBzdHJpbmcgbGlzdFxuICAgIH1cblxuICBsZXQgZW5hYmxlX2V2ZXJ5dGhpbmcgPSB7IHJlcXVpcmVkX3RhZ3MgPSBbXTsgZHJvcHBlZF90YWdzID0gW10gfVxuXG4gIGxldCBkcm9wIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IHRhZyA6OiB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IExpc3QuZmlsdGVyICgoPD4pIHRhZykgdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuXG4gIGxldCByZXF1aXJlIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IExpc3QuZmlsdGVyICgoPD4pIHRhZykgdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSB0YWcgOjogdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuXG4gIGxldCBlbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHQgfnBhcnRpYWxfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuXG4gIGxldCBkaXNhYmxlZCB0IH5jb21wbGV0ZV90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gcmVxIC0+IG5vdCAoTGlzdC5tZW0gcmVxIHRhZ3MpKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB8fCBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuZW5kXG5cblxudHlwZSB3aGljaF90ZXN0cyA9XG4gIHsgbGlibmFtZSA6IHN0cmluZ1xuICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA6IChmaWxlbmFtZSAqIGxpbmVfbnVtYmVyIG9wdGlvbiAqIGJvb2wgcmVmKSBsaXN0XG4gIDsgbmFtZV9maWx0ZXIgOiBzdHJpbmcgbGlzdFxuICA7IHdoaWNoX3RhZ3MgOiBUYWdfcHJlZGljYXRlLnRcbiAgfVxudHlwZSB0ZXN0X21vZGUgPVxuICB7IHdoaWNoX3Rlc3RzIDogd2hpY2hfdGVzdHNcbiAgOyB3aGF0X3RvX2RvIDpcbiAgICAgIFsgYFJ1bl9wYXJ0aXRpb24gb2Ygc3RyaW5nIG9wdGlvblxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zXG4gICAgICBdXG4gIH1cblxubW9kdWxlIEFjdGlvbiA6IHNpZ1xuICB0eXBlIHQgPSBbXG4gICAgfCBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICBdXG4gIHZhbCBnZXQgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFtcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gIF1cbiAgbGV0IGFjdGlvbiA6IHQgcmVmID0gcmVmIGBJZ25vcmVcbiAgbGV0IGZvcmNlX2Ryb3AgPVxuICAgIHRyeSBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCIgOiBzdHJpbmcpOyB0cnVlXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgbGV0IGdldCAoKSA9XG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBjb21waWxpbmcgdG8gamF2YXNjcmlwdC5cbiAgICAgICBKc19vZl9vY2FtbCBjYW4gc3RhdGljYWxseSBldmFsdWF0ZSBbU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIl1cbiAgICAgICBhbmQgaW5saW5lIHRoZSByZXN1bHQgKFtgSWdub3JlXSkgd2hlbmV2ZXIgW2dldCAoKV0gaXMgY2FsbGVkLlxuICAgICAgIFVuaXQgdGVzdHMgY2FuIHRoZW4gYmUgdHJlYXRlZCBhcyBkZWFkY29kZSBzaW5jZSB0aGUgYXJndW1lbnQgW2ZdIG9mIHRoZSBbdGVzdF1cbiAgICAgICBmdW5jdGlvbiBiZWxvdyBpcyBuZXZlciB1c2VkLiAqKVxuICAgIGlmIGZvcmNlX2Ryb3BcbiAgICB0aGVuIGBJZ25vcmVcbiAgICBlbHNlICFhY3Rpb25cblxuICBsZXQgc2V0IHYgPSBhY3Rpb24gOj0gdlxuZW5kXG5cbm1vZHVsZSBQYXJ0aXRpb24gOiBzaWdcbiAgdmFsIGZvdW5kX3Rlc3QgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHNldF9jdXJyZW50IDogc3RyaW5nIC0+IHVuaXRcbiAgdmFsIGlzX2N1cnJlbnQgOiBzdHJpbmcgb3B0aW9uIC0+IGJvb2xcbiAgdmFsIGFsbCA6IHVuaXQgLT4gc3RyaW5nIGxpc3RcbmVuZCA9IHN0cnVjdFxuICBsZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgMjNcbiAgbGV0IGN1cnJlbnQgPSByZWYgXCJcIiAgbGV0IHNldF9jdXJyZW50IHggPSBjdXJyZW50IDo9IHhcbiAgbGV0IGZvdW5kX3Rlc3QgKCkgPVxuICAgIGlmICFjdXJyZW50IDw+IFwiXCIgJiYgbm90IChIYXNodGJsLm1lbSBhbGwgIWN1cnJlbnQpIHRoZW5cbiAgICAgIEhhc2h0YmwuYWRkIGFsbCAhY3VycmVudCAoKVxuICA7O1xuICBsZXQgaXNfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgcCAtPiBwID0gIWN1cnJlbnRcbiAgOztcbiAgbGV0IGFsbCAoKSA9XG4gICAgTGlzdC5zb3J0IFN0cmluZy5jb21wYXJlXG4gICAgICAoSGFzaHRibC5mb2xkIChmdW4gayAoKSBhY2MgLT4gayA6OiBhY2MpIGFsbCBbXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTW9kdWxlX2NvbnRleHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG9uZV9tb2R1bGUgPVxuICAgICAgeyBkZXNjciA6IHN0cmluZ1xuICAgICAgOyB0YWdzIDogc3RyaW5nIGxpc3RcbiAgICAgIH1cblxuICAgIHR5cGUgdCA9IG9uZV9tb2R1bGUgbGlzdFxuXG4gICAgbGV0IGRlc2NyIHQgPSBMaXN0Lm1hcCAoZnVuIG0gLT4gbS5kZXNjcikgdFxuICAgIGxldCB0YWdzIHQgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgKGZ1biBtIC0+IG0udGFncykgdClcbiAgZW5kXG5cbiAgbGV0IGN1cnJlbnQgOiBULnQgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHdpdGhfIH5kZXNjciB+dGFncyBmID1cbiAgICBsZXQgcHJldiA9ICFjdXJyZW50IGluXG4gICAgY3VycmVudCA6PSB7IFQuIGRlc2NyOyB0YWdzIH0gOjogcHJldjtcbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZiAoKSBpblxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgcmFpc2UgZVxuXG4gIGxldCBjdXJyZW50X2Rlc2NyICgpID0gVC5kZXNjciAhY3VycmVudFxuICBsZXQgY3VycmVudF90YWdzICAoKSA9IFQudGFncyAgIWN1cnJlbnRcbmVuZFxuXG5sZXQgdmVyYm9zZSA9IHJlZiBmYWxzZVxubGV0IHN0cmljdCA9IHJlZiBmYWxzZVxubGV0IHNob3dfY291bnRzID0gcmVmIGZhbHNlXG5sZXQgbGlzdF90ZXN0X25hbWVzID0gcmVmIGZhbHNlXG5sZXQgZGVsYXllZF9lcnJvcnMgPSByZWYgW11cbmxldCBzdG9wX29uX2Vycm9yID0gcmVmIGZhbHNlXG5cbmxldCBsb2cgPSByZWYgTm9uZVxuXG5sZXQgdGltZV9zZWMgPSByZWYgMC5cblxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgaW5fcGxhY2UgID0gcmVmIGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE5vbmVcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gcmVmIE5vbmVcbmxldCBhbGxvd19vdXRwdXRfcGF0dGVybnMgPSByZWYgZmFsc2VcblxubGV0IGRpc3BsYXllZF9kZXNjciAobGF6eSBkZXNjcikgZmlsZW5hbWUgbGluZSBzdGFydF9wb3MgZW5kX3BvcyA9XG4gIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZCVzXCJcbiAgICBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zXG4gICAgKGlmIGRlc2NyID0gXCJcIiB0aGVuIFwiXCIgZWxzZSBcIjogXCIgXiBkZXNjcilcbmxldCBwYXJzZV9kZXNjciBzdHIgPVxuICB0cnkgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICwgbGluZSAlZCAsIGNoYXJhY3RlcnMgJWQgLSAlZCAlIVwiXG4gICAgICAgICAgICAgIChmdW4gZmlsZSBsaW5lIF9zdGFydF9wb3MgX2VuZF9wb3MgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aCBfIC0+XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICUhXCIgKGZ1biBmaWxlIGxpbmUgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aCBfIC0+XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgJSFcIiAoZnVuIGZpbGUgLT4gZmlsZSwgTm9uZSkpXG4gIHdpdGggXyAtPiBOb25lXG5cbmxldCAoKSA9XG4gIG1hdGNoIEFycmF5LnRvX2xpc3QgU3lzLmFyZ3Ygd2l0aFxuICB8IG5hbWUgOjogXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiA6OiBsaWIgOjogcmVzdFxuICAgIHdoZW4gQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5hbV90ZXN0aW5nIC0+IGJlZ2luXG4gICAgICAoKiB3aGVuIHdlIHNlZSB0aGlzIGFyZ3VtZW50LCB3ZSBzd2l0Y2ggdG8gdGVzdCBtb2RlICopXG4gICAgICBsZXQgdGVzdHMgPSByZWYgW10gaW5cbiAgICAgIGxldCBsaXN0X3BhcnRpdGlvbnMgPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBwYXJ0aXRpb24gPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHRhZ19wcmVkaWNhdGUgPSByZWYgVGFnX3ByZWRpY2F0ZS5lbmFibGVfZXZlcnl0aGluZyBpblxuICAgICAgbGV0IG5hbWVfZmlsdGVyID0gcmVmIFtdIGluXG4gICAgICBwYXJzZV9hcmd2IChBcnJheS5vZl9saXN0IChuYW1lIDo6IHJlc3QpKSAoQXJnLmFsaWduIFtcbiAgICAgICAgXCItbGlzdC10ZXN0LW5hbWVzXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF90ZXN0X25hbWVzIDo9IHRydWU7IHZlcmJvc2UgOj0gdHJ1ZSksXG4gICAgICAgIFwiIERvIG5vdCBydW4gdGVzdHMgYnV0IHNob3cgd2hhdCB3b3VsZCBoYXZlIGJlZW4gcnVuXCI7XG4gICAgICAgIFwiLWxpc3QtcGFydGl0aW9uc1wiLCBBcmcuVW5pdCAoZnVuICgpIC0+IGxpc3RfcGFydGl0aW9ucyA6PSB0cnVlKSxcbiAgICAgICAgXCIgTGlzdHMgYWxsIHRoZSBwYXJ0aXRpb25zIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdCBvciB0ZXN0X21vZHVsZVwiO1xuICAgICAgICBcIi1wYXJ0aXRpb25cIiwgQXJnLlN0cmluZyAoZnVuIGkgLT4gcGFydGl0aW9uIDo9IFNvbWUgaSksXG4gICAgICAgIFwiIE9ubHkgcnVuIHRoZSB0ZXN0cyBpbiB0aGUgZ2l2ZW4gcGFydGl0aW9uXCI7XG4gICAgICAgIFwiLXZlcmJvc2VcIiwgQXJnLlNldCB2ZXJib3NlLCBcIiBTaG93IHRoZSB0ZXN0cyBhcyB0aGV5IHJ1blwiO1xuICAgICAgICBcIi1zdG9wLW9uLWVycm9yXCIsIEFyZy5TZXQgc3RvcF9vbl9lcnJvciwgXCIgUnVuIHRlc3RzIG9ubHkgdXAgdG8gdGhlIGZpcnN0IGVycm9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2Vzbid0IHdvcmsgZm9yIGV4cGVjdCB0ZXN0cylcIjtcbiAgICAgICAgXCItc3RyaWN0XCIsIEFyZy5TZXQgc3RyaWN0LCBcIiBFbmQgd2l0aCBhbiBlcnJvciBpZiBubyB0ZXN0cyB3ZXJlIHJ1blwiO1xuICAgICAgICBcIi1zaG93LWNvdW50c1wiLCBBcmcuU2V0IHNob3dfY291bnRzLCBcIiBTaG93IHRoZSBudW1iZXIgb2YgdGVzdHMgcmFuXCI7XG4gICAgICAgIFwiLWxvZ1wiLCBBcmcuVW5pdCAoZnVuICgpIC0+XG4gICAgICAgICAgKHRyeSBTeXMucmVtb3ZlIFwiaW5saW5lX3Rlc3RzLmxvZ1wiIHdpdGggXyAtPiAoKSk7XG4gICAgICAgICAgbG9nIDo9IFNvbWUgKG9wZW5fb3V0IFwiaW5saW5lX3Rlc3RzLmxvZ1wiKVxuICAgICAgICApLCBcIiBMb2cgdGhlIHRlc3RzIHJ1biBpbiBpbmxpbmVfdGVzdHMubG9nXCI7XG4gICAgICAgIFwiLWRyb3AtdGFnXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLmRyb3AgIXRhZ19wcmVkaWNhdGUgc1xuICAgICAgICApLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyBub3QgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyAtcmVxdWlyZS10YWcpXCI7XG4gICAgICAgIFwiLXJlcXVpcmUtdGFnXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLnJlcXVpcmUgIXRhZ19wcmVkaWNhdGUgc1xuICAgICAgICApLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1kcm9wLXRhZylcIjtcbiAgICAgICAgXCItbWF0Y2hpbmdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gbmFtZV9maWx0ZXIgOj0gcyA6OiAhbmFtZV9maWx0ZXIpLFxuICAgICAgICBcInN1YnN0cmluZyBPbmx5IHJ1biB0ZXN0cyB3aG9zZSBuYW1lcyBjb250YWluIHRoZSBnaXZlbiBzdWJzdHJpbmdcIjtcbiAgICAgICAgXCItb25seS10ZXN0XCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgbGV0IGZpbGVuYW1lLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBwYXJzZV9kZXNjciBzIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZSwgaW5kZXgpIC0+IGZpbGUsIGluZGV4XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJzonIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc6JyBpblxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFN0cmluZy5zdWIgcyAwIGkgaW5cbiAgICAgICAgICAgICAgICBsZXQgaW5kZXhfc3RyaW5nID0gU3RyaW5nLnN1YiBzIChpICsgMSkgKFN0cmluZy5sZW5ndGggcyAtIGkgLSAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpbmRleF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJBcmd1bWVudCAlcyBkb2Vzbid0IGZpdCB0aGUgZm9ybWF0IGZpbGVuYW1lWzpsaW5lX251bWJlcl1cXG4lIVwiIHM7XG4gICAgICAgICAgICAgICAgICAgIGV4aXQgMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsIFNvbWUgaW5kZXhcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHMsIE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIHRlc3RzIDo9IChmaWxlbmFtZSwgaW5kZXgsIHJlZiBmYWxzZSkgOjogIXRlc3RzXG4gICAgICAgICksIFwibG9jYXRpb24gUnVuIG9ubHkgdGhlIHRlc3RzIHNwZWNpZmllZCBieSBhbGwgdGhlIC1vbmx5LXRlc3Qgb3B0aW9ucy5cbiAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbnMgY2FuIGJlIG9uZSBvZiB0aGVzZSBmb3JtczpcbiAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWxcbiAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWw6bGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyM1xuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjMsIGNoYXJhY3RlcnMgMi0zXCI7XG4gICAgICAgIFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIFN1bW1hcml6ZSB0ZXN0cyB3aXRob3V0IHVzaW5nIGNvbG9yXCI7XG4gICAgICAgIFwiLWluLXBsYWNlXCIsIEFyZy5TZXQgaW5fcGxhY2UsIFwiIFVwZGF0ZSBleHBlY3QgdGVzdHMgaW4gcGxhY2VcIjtcbiAgICAgICAgXCItZGlmZi1jbWRcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcyksXG4gICAgICAgIFwiIERpZmYgY29tbWFuZCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGRpZmZpbmcgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIjtcbiAgICAgICAgXCItYWxsb3ctb3V0cHV0LXBhdHRlcm5zXCIsIEFyZy5TZXQgYWxsb3dfb3V0cHV0X3BhdHRlcm5zLFxuICAgICAgICBcIiBBbGxvdyBvdXRwdXQgcGF0dGVybnMgaW4gdGVzdHMgZXhwZWN0YXRpb25zXCI7XG4gICAgICAgIFwiLXNvdXJjZS10cmVlLXJvb3RcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc291cmNlX3RyZWVfcm9vdCA6PSBTb21lIHMpLFxuICAgICAgICBcIiBQYXRoIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZVwiXG4gICAgICBdKSAoZnVuIGFub24gLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogdW5leHBlY3RlZCBhbm9ueW1vdXMgYXJndW1lbnQgJXNcXG4lIVwiIG5hbWUgYW5vbjtcbiAgICAgICAgZXhpdCAxXG4gICAgICApIChQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIFthcmdzXVwiIG5hbWUgXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiBsaWIpO1xuICAgICAgQWN0aW9uLnNldCAoXG4gICAgICAgIGBUZXN0X21vZGVcbiAgICAgICAgICB7IHdoaWNoX3Rlc3RzID1cbiAgICAgICAgICAgICAgeyBsaWJuYW1lID0gbGliXG4gICAgICAgICAgICAgIDsgb25seV90ZXN0X2xvY2F0aW9uID0gIXRlc3RzO1xuICAgICAgICAgICAgICAgIHdoaWNoX3RhZ3MgPSAhdGFnX3ByZWRpY2F0ZTtcbiAgICAgICAgICAgICAgICBuYW1lX2ZpbHRlciA9ICFuYW1lX2ZpbHRlclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgOyB3aGF0X3RvX2RvID1cbiAgICAgICAgICAgICAgaWYgIWxpc3RfcGFydGl0aW9uc1xuICAgICAgICAgICAgICB0aGVuIGBMaXN0X3BhcnRpdGlvbnNcbiAgICAgICAgICAgICAgZWxzZSBgUnVuX3BhcnRpdGlvbiAhcGFydGl0aW9uXG4gICAgICAgICAgfSlcbiAgICBlbmRcbiAgfCBfIC0+XG4gICAgKClcblxubGV0IGFtX3Rlc3RfcnVubmVyID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYFRlc3RfbW9kZSBfIC0+IHRydWVcbiAgfCBgSWdub3JlIC0+IGZhbHNlXG5cbmxldCBhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIgPVxuICAoKiBmb3IgYXBwcm94aW1hdGUgY29tcGF0aWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdmFyaWFibGUgaXMgbm90IGV4YWN0bHkgZXF1aXZhbGVudFxuICAgICB0byB3aGF0IFBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVCB1c2VkIHRvIGJlICopXG4gIFwiVEVTVElOR19GUkFNRVdPUktcIlxuXG4oKiBUaGlzIHZhbHVlIGlzIGRlcHJlY2F0ZWQgaW4gcHJpbmNpcGxlLCBpbiBmYXZvciBvZiBDb3JlLmFtX3J1bm5pbmdfdGVzdCwgc29cbiAgIHdlJ3JlIGdvaW5nIHRvIGxpdmUgd2l0aCB0aGUgdWdseSBwYXR0ZXJuIG1hdGNoLiAqKVxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPVxuICBtYXRjaCBTeXMuZ2V0ZW52IFwiUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUXCIgd2l0aFxuICB8IChfIDogc3RyaW5nKSAtPiB0cnVlICgqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcGVvcGxlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSAqKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICBtYXRjaCBTeXMuZ2V0ZW52IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RfZW52X3ZhciB3aXRoXG4gICAgfCBcImlubGluZS10ZXN0XCIgLT4gdHJ1ZVxuICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBmYWxzZVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgdGVzdGluZyA9XG4gIGlmIGFtX3Rlc3RfcnVubmVyXG4gIHRoZW4gYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyXG4gIGVsc2VcbiAgICAoaWYgYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuICAgICB0aGVuIGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lclxuICAgICBlbHNlIGBOb3RfdGVzdGluZylcblxubGV0IHdhbGxfdGltZV9jbG9ja19ucyAoKSA9XG4gIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKClcblxuXG5sZXQgd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSA9IGxhenkgKFxuICBCYXNlLlN0cmluZy5TZWFyY2hfcGF0dGVybi5jcmVhdGUgKF9fTU9EVUxFX18gXiBcIi5cIiBeIFwidGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHNcIikpXG5cbmxldCB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGJlZm9yZV9ucyA9IHdhbGxfdGltZV9jbG9ja19ucyAoKSBpblxuICBsZXQgcmVzID1cbiAgICAoKiBUbyBhdm9pZCBub2lzZSBpbiBiYWNrdHJhY2VzLCB3ZSBkbyB0d28gdGhpbmdzLlxuXG4gICAgICAgV2UgdXNlIFt3aGVyZV90b19jdXRfYmFja3RyYWNlXSBhYm92ZSB0byByZW1vdmUgdGhlIHN0YWNrIGZyYW1lcyBmb3IgdGhlIGN1cnJlbnRcbiAgICAgICBmdW5jdGlvbiBhbmQgYW55IGZ1bmN0aW9uIGl0IGdldHMgaW5saW5lZCBpbnRvLCBhcyBpdCdzIG5vdCBvZiBhbnkgaW50ZXJlc3QgdG8gdGhlXG4gICAgICAgdXNlciwgc2luY2UgaXQncyBub3QgdGFsa2luZyBhYm91dCB0aGVpciB0ZXN0IGJ1dCBpbnN0ZWFkIHRhbGtpbmcgYWJvdXQgdGhlXG4gICAgICAgcHB4X2lubGluZV90ZXN0IG1hY2hpbmVyeS5cblxuICAgICAgIFdlIGFsc28gYXZvaWQgaW5zZXJ0aW5nIGFueSBjb2RlIGJldHdlZW4gdGhlIFtmXSB0aGF0IGNvbWVzIGZyb20gdGhlIHVzZXIncyBmaWxlXG4gICAgICAgYW5kIGdyYWJiaW5nIHRoZSBiYWNrdHJhY2UgZnJvbSBpdHMgZXhjZXB0aW9ucyAobm8gd3JhcHBpbmcgb2YgW2ZdIHdpdGggaGlnaCBvcmRlclxuICAgICAgIGZ1bmN0aW9ucyBsaWtlIEV4bi5wcm90ZWN0LCBvciAoZnVuICgpIC0+IGYgKCk7IHRydWUpKS4gKilcbiAgICB0cnkgT2sgKGYgKCkpXG4gICAgd2l0aCBleG4gLT4gRXJyb3IgKGV4biwgUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgaW5cbiAgdGltZV9zZWMgOj0gQmFzZS5JbnQ2My4od2FsbF90aW1lX2Nsb2NrX25zICgpIC0gYmVmb3JlX25zIHw+IHRvX2Zsb2F0KSAgLy4gMWU5O1xuICByZXNcblxuXG5sZXQgc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUgPSBsYXp5IChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTAwOyAyMDA7IDMwMCB8XSlcbmxldCBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSA9IGxhenkgKEJhc2UuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTExOyAyMjI7IDMzMyB8XSlcblxubGV0IHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGNhbWxfcmFuZG9tX3N0YXRlID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgbGV0IGJhc2VfcmFuZG9tX3N0YXRlID0gQmFzZS5SYW5kb20uU3RhdGUuY29weSBCYXNlLlJhbmRvbS5TdGF0ZS5kZWZhdWx0IGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlKTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlKTtcbiAgbGV0IHJlc3VsdCA9IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgY2FtbF9yYW5kb21fc3RhdGU7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSBiYXNlX3JhbmRvbV9zdGF0ZTtcbiAgcmVzdWx0XG5cbmxldCBzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpID1cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChcbiAgICBMaXN0Lm1hcCAoZnVuIHMgLT4gXCIgIGluIFRFU1wiIF4gXCJUX01PRFVMRSBhdCBcIiBeIFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgcyBeIFwiXFxuXCIpXG4gICAgICAoTW9kdWxlX2NvbnRleHQuY3VycmVudF9kZXNjciAoKSlcbiAgKVxuXG5sZXQgcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBsID1cbiAgTGlzdC5leGlzdHMgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgdXNlZCkgLT5cbiAgICBsZXQgcG9zaXRpb25fc3RhcnQgPVxuICAgICAgU3RyaW5nLmxlbmd0aCBkZWZfZmlsZW5hbWUgLSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgbGV0IGZvdW5kID1cbiAgICAgIHBvc2l0aW9uX3N0YXJ0ID49IDAgJiZcbiAgICAgIGxldCBlbmRfb2ZfZGVmX2ZpbGVuYW1lID1cbiAgICAgICAgU3RyaW5nLnN1YiBkZWZfZmlsZW5hbWVcbiAgICAgICAgICBwb3NpdGlvbl9zdGFydFxuICAgICAgICAgIChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKSBpblxuICAgICAgZW5kX29mX2RlZl9maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAmJiAocG9zaXRpb25fc3RhcnQgPSAwIHx8IGRlZl9maWxlbmFtZS5bcG9zaXRpb25fc3RhcnQgLSAxXSA9ICcvJylcbiAgICAgICYmIChtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gZGVmX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIpXG4gICAgaW5cbiAgICBpZiBmb3VuZCB0aGVuIHVzZWQgOj0gdHJ1ZTtcbiAgICBmb3VuZFxuICApIGxcblxubGV0IG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciBkZXNjciA9XG4gIG1hdGNoIG5hbWVfZmlsdGVyIHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+XG4gICAgTGlzdC5leGlzdHMgKGZ1biBzdWJzdHJpbmcgLT4gQmFzZS5TdHJpbmcuaXNfc3Vic3RyaW5nIH5zdWJzdHJpbmcgZGVzY3IpIG5hbWVfZmlsdGVyXG5cbmxldCBwcmludF9kZWxheWVkX2Vycm9ycyAoKSA9XG4gIG1hdGNoIExpc3QucmV2ICFkZWxheWVkX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBfIDo6IF8gYXMgZGVsYXllZF9lcnJvcnMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcIlxcbiVzXFxuJSFcIiAoU3RyaW5nLm1ha2UgNzAgJz0nKTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBtZXNzYWdlIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBtZXNzYWdlXG4gICAgKSBkZWxheWVkX2Vycm9yc1xuXG5sZXQgZXByaW50Zl9vcl9kZWxheSBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+XG4gICAgaWYgIXZlcmJvc2UgdGhlbiBkZWxheWVkX2Vycm9ycyA6PSBzIDo6ICFkZWxheWVkX2Vycm9yc1xuICAgIGVsc2UgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcztcbiAgICBpZiAhc3RvcF9vbl9lcnJvciB0aGVuIGJlZ2luXG4gICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgIGV4aXQgMlxuICAgIGVuZFxuICApIGZtdFxuXG5sZXQgYWRkX2hvb2tzICgobW9kdWxlIEMpIDogY29uZmlnKSBmID1cbiAgZnVuICgpIC0+IEMucHJlX3Rlc3RfaG9vayAoKTsgZiAoKVxuXG5sZXQgaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgPVxuICBsZXQgb3BlbiBCYXNlIGluXG4gIGJhY2t0cmFjZVxuICB8PiBTdHJpbmcuc3BsaXRfbGluZXNcbiAgfD4gTGlzdC50YWtlX3doaWxlIH5mOihmdW4gc3RyIC0+XG4gICAgbm90IChTdHJpbmcuU2VhcmNoX3BhdHRlcm4ubWF0Y2hlcyAoZm9yY2Ugd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSkgc3RyKSlcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyIF4gXCJcXG5cIilcbiAgfD4gU3RyaW5nLmNvbmNhdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3MgfmVuZF9wb3MgZiBib29sX29mX2YgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb247IHdoaWNoX3RhZ3M7IG5hbWVfZmlsdGVyIH07IHdoYXRfdG9fZG8gfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyID0gbGF6eSAoZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MpIGluXG4gICAgbGV0IGNvbXBsZXRlX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAmJiBiZWdpbiBtYXRjaCBvbmx5X3Rlc3RfbG9jYXRpb24gd2l0aFxuICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgfCBfIDo6IF8gLT4gcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBvbmx5X3Rlc3RfbG9jYXRpb25cbiAgICAgIGVuZFxuICAgICAgJiYgbm90IChUYWdfcHJlZGljYXRlLmRpc2FibGVkIHdoaWNoX3RhZ3MgfmNvbXBsZXRlX3RhZ3MpXG4gICAgICAmJiBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgKExhenkuZm9yY2UgZGVzY3IpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb24gdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBkZXNjciA9IExhenkuZm9yY2UgZGVzY3IgaW5cbiAgICAgICAgICBpbmNyIHRlc3RzX3JhbjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCAhbG9nIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgY2ggLT4gUHJpbnRmLmZwcmludGYgY2ggXCIlc1xcbiVzXCIgZGVzY3IgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIFByaW50Zi5wcmludGYgXCIlcyUhXCIgZGVzY3JcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBpZiAhbGlzdF90ZXN0X25hbWVzXG4gICAgICAgICAgICB0aGVuIE9rIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogU2VlIFt0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc10gZm9yIHdoeSB3ZSB1c2UgW2Jvb2xfb2ZfZl1cbiAgICAgICAgICAgICAgICAgcmF0aGVyIGhhdmUgdGhlIGNhbGxlciB3cmFwIFtmXSB0byBhZGp1c3QgaXRzIHJldHVybiB2YWx1ZS4gKilcbiAgICAgICAgICAgICAgUmVzdWx0Lm1hcCBib29sX29mX2YgKHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogSWYgIWxpc3RfdGVzdF9uYW1lcywgdGhpcyBpcyBpcyBhIGhhcm1sZXNzIHplcm8uICopXG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBQcmludGYucHJpbnRmIFwiICglLjNmIHNlYylcXG4lIVwiICF0aW1lX3NlYztcbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgdHJ1ZSAtPiAoKVxuICAgICAgICAgIHwgT2sgZmFsc2UgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIGlzIGZhbHNlLlxcbiVzXFxuJSFcIiBkZXNjclxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIiBkZXNjciBzZXAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2UgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgIGVuZFxuICAgIGVuZFxuXG5sZXQgc2V0X2xpYl9hbmRfcGFydGl0aW9uIHN0YXRpY19saWIgcGFydGl0aW9uID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAoKiBwb3NzaWJsZSBpZiB0aGUgaW50ZXJmYWNlIGlzIHVzZWQgZXhwbGljaXRseSBvciBpZiB3ZSBoYXBwZW4gdG8gZHlubGluayBzb21ldGhpbmdcbiAgICAgICB0aGF0IGNvbnRhaW4gdGVzdHMgKilcbiAgICAoKVxuICB8IE5vbmUgLT5cbiAgICBkeW5hbWljX2xpYiA6PSBTb21lIHN0YXRpY19saWI7XG4gICAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gICAgfCBgSWdub3JlIC0+ICgpXG4gICAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHM7IHdoYXRfdG9fZG8gfSAtPlxuICAgICAgaWYgd2hpY2hfdGVzdHMubGlibmFtZSA9IHN0YXRpY19saWIgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcmVxdWlyZXNfcGFydGl0aW9uID1cbiAgICAgICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgfCBgUnVuX3BhcnRpdGlvbiAoU29tZSBfKSAtPiB0cnVlXG4gICAgICAgICAgfCBgUnVuX3BhcnRpdGlvbiBOb25lIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGlmIHBhcnRpdGlvbiA9IFwiXCIgJiYgcmVxdWlyZXNfcGFydGl0aW9uXG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJwcHhfaW5saW5lX3Rlc3Q6IGNhbm5vdCB1c2UgLWxpc3QtcGFydGl0aW9uIG9yIC1wYXJ0aXRpb24gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgcGFydGl0aW9uIGF0IHByZXByb2Nlc3NpbmcgdGltZVwiXG4gICAgICAgIGVsc2UgUGFydGl0aW9uLnNldF9jdXJyZW50IHBhcnRpdGlvblxuICAgICAgZW5kXG5cbmxldCB1bnNldF9saWIgc3RhdGljX2xpYiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIG5vdCBnaXZpbmcgYW4gZXJyb3IsIGJlY2F1c2Ugd2hlbiBzb21lIGFubm95aW5nIHBlb3BsZSBwdXQgcGFfb3VuaXQgaW4gdGhlaXIgbGlzdFxuICAgICAgIG9mIHByZXByb2Nlc3NvcnMsIHBhX291bml0IGlzIHNldCB1cCB0d2ljZSBhbmQgd2UgaGF2ZSB0d28gY2FsbHMgdG8gdW5zZXRfbGliIGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgZmlsZSwgYW5kIHRoZSBzZWNvbmQgb25lIGNvbWVzIGluIHRoaXMgYnJhbmNoICopXG4gICAgKClcbiAgfCBTb21lIGxpYiAtPlxuICAgIGlmIGxpYiA9IHN0YXRpY19saWIgdGhlbiBkeW5hbWljX2xpYiA6PSBOb25lXG5cbmxldCB0ZXN0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3NcbiAgICBmIChmdW4gYiAtPiBiKVxuXG5sZXQgdGVzdF91bml0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3NcbiAgICBmIChmdW4gKCkgLT4gdHJ1ZSlcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfbW9kdWxlIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZTpkZWZfZmlsZW5hbWUgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uID0gXzsgbmFtZV9maWx0ZXIgPSBfOyB3aGljaF90YWdzIH07IHdoYXRfdG9fZG8gfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyICgpID0gZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MgaW5cbiAgICBsZXQgcGFydGlhbF90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgKCogSWYsIG5vIG1hdHRlciB3aGF0IHRhZ3MgYSB0ZXN0IGRlZmluZXMsIHdlIGNlcnRhaW5seSB3aWxsIGRyb3AgYWxsIHRlc3RzIHdpdGhpblxuICAgICAgICAgdGhpcyBtb2R1bGUsIHRoZW4gZG9uJ3QgcnVuIHRoZSBtb2R1bGUgYXQgYWxsLiBUaGlzIG1lYW5zIHBlb3BsZSBjYW4gd3JpdGVcbiAgICAgICAgIHRoaW5ncyBsaWtlIHRoZSBmb2xsb3dpbmcgd2l0aG91dCBicmVha2luZyB0aGUgMzItYml0IGJ1aWxkOlxuICAgICAgICAgbGV0JXRlc3RfbW9kdWxlIFtAdGFncyBcIjY0LWJpdHMtb25seVwiXSA9IChtb2R1bGUgc3RydWN0XG4gICAgICAgICBsZXQgaSA9IEludDY0LnRvX2ludF9leG4gLi4uLlxuICAgICAgICAgZW5kKVxuICAgICAgICAgV2UgZG9uJ3Qgc2hvcnRjdXQgYmFzZWQgb24gcG9zaXRpb24sIGFzIHdlIGNhbid0IHRlbGwgd2hhdCBwb3NpdGlvbnMgdGhlXG4gICAgICAgICBpbm5lciB0ZXN0cyB3aWxsIGhhdmUuICopXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZW50aXJlX21vZHVsZV9kaXNhYmxlZCB3aGljaF90YWdzIH5wYXJ0aWFsX3RhZ3MpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb24gdGhlbiBiZWdpblxuICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICAgICBsZXQgZGVzY3IgPSBkZXNjciAoKSBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBNb2R1bGVfY29udGV4dC53aXRoXyB+ZGVzY3IgfnRhZ3MgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAoKiBXZSBkbyBub3QgcmVzZXQgcmFuZG9tIHN0YXRlcyB1cG9uIGVudGVyaW5nIFtsZXQldGVzdF9tb2R1bGVdLlxuXG4gICAgICAgICAgICAgICAgIENvbjogQ29kZSBpbiB0ZXN0IG1vZHVsZXMgY2FuIGFjY2lkZW50YWxseSBkZXBlbmQgb24gdG9wLWxldmVsIHJhbmRvbVxuICAgICAgICAgICAgICAgICBzdGF0ZSBlZmZlY3RzLlxuXG4gICAgICAgICAgICAgICAgIFByb3M6ICgxKSBXZSBkb24ndCByZXNldCB0byB0aGUgc2FtZSBzZWVkIG9uIGVudGVyaW5nIGEgW2xldCV0ZXN0X21vZHVsZV1cbiAgICAgICAgICAgICAgICAgYW5kIHRoZW4gYSBbbGV0JXRlc3RdIGluc2lkZSB0aGF0IG1vZHVsZSwgd2hpY2ggY291bGQgbGVhZCB0b1xuICAgICAgICAgICAgICAgICBhY2NpZGVudGFsbHkgcmFuZG9tbHkgZ2VuZXJhdGluZyB0aGUgc2FtZSB2YWx1ZXMgaW4gc29tZSB0ZXN0LiAoMikgTW92aW5nXG4gICAgICAgICAgICAgICAgIGNvZGUgaW50byBhbmQgb3V0IG9mIFtsZXQldGVzdF9tb2R1bGVdIGRvZXMgbm90IGNoYW5nZSBpdHMgcmFuZG9tIHNlZWQuXG4gICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgIHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXkgKFwiVEVTXCIgXl4gXCJUX01PRFVMRSBhdCAlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCIpXG4gICAgICAgICAgICAgIChTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGRlc2NyKSBzZXAgZXhuX3N0ciBiYWNrdHJhY2UgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgIGVuZFxuICAgIGVuZFxuXG5sZXQgc3VtbWFyaXplICgpID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPlxuICAgIGlmIFN5cy5hcmd2IDw+IFt8fF0gJiYgRmlsZW5hbWUuYmFzZW5hbWUgU3lzLmFyZ3YuKDApID0gXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZVwiIHRoZW5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGUgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBieSBoYW5kLCB5b3UgXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcnVuIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCBpbnN0ZWFkLlxcbiUhXCJcbiAgICBlbHNlXG4gICAgICBQcmludGYuZXByaW50ZiBcIllvdSBhcmUgZG9pbmcgc29tZXRoaW5nIHVuZXhwZWN0ZWQgd2l0aCB0aGUgdGVzdHMuIE5vIHRlc3RzIGhhdmUgXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICBiZWVuIHJ1bi4gWW91IHNob3VsZCB1c2UgdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IHRvIHJ1biBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLlxcbiUhXCI7XG4gICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSBfOyB3aGF0X3RvX2RvID0gYExpc3RfcGFydGl0aW9ucyB9IC0+XG4gICAgTGlzdC5pdGVyIChQcmludGYucHJpbnRmIFwiJXNcXG5cIikgKFBhcnRpdGlvbi5hbGwgKCkpO1xuICAgIFRlc3RfcmVzdWx0LlN1Y2Nlc3NcbiAgfCBgVGVzdF9tb2RlIHsgd2hhdF90b19kbyA9IGBSdW5fcGFydGl0aW9uIF87IHdoaWNoX3Rlc3RzIH0gLT4gYmVnaW5cbiAgICAgIGJlZ2luIG1hdGNoICFsb2cgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2ggLT4gY2xvc2Vfb3V0IGNoXG4gICAgICBlbmQ7XG4gICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgIG1hdGNoICF0ZXN0c19mYWlsZWQsICF0ZXN0X21vZHVsZXNfZmFpbGVkIHdpdGhcbiAgICAgIHwgMCwgMCAtPiBiZWdpblxuICAgICAgICAgIGlmICFzaG93X2NvdW50cyB0aGVuIGJlZ2luXG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVkIHRlc3RzIHJhbiwgJWQgdGVzdF9tb2R1bGVzIHJhblxcbiUhXCIgIXRlc3RzX3JhbiAhdGVzdF9tb2R1bGVzX3JhblxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgIGxldCB1bnVzZWRfdGVzdHMgPVxuICAgICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIChfLCBfLCB1c2VkKSAtPiBub3QgIXVzZWQpIHdoaWNoX3Rlc3RzLm9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIHVudXNlZF90ZXN0cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgIHwgXyA6OiBfIC0+IFNvbWUgdW51c2VkX3Rlc3RzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlcnJvcnMgd2l0aFxuICAgICAgICAgIHwgU29tZSB0ZXN0cyAtPlxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IHRoZSBmb2xsb3dpbmcgLW9ubHktdGVzdCBmbGFncyBtYXRjaGVkIG5vdGhpbmc6XCI7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzXCIgZmlsZW5hbWVcbiAgICAgICAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzOiVkXCIgZmlsZW5hbWUgbGluZV9udW1iZXJcbiAgICAgICAgICAgICkgdGVzdHM7XG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcIi5cXG4lIVwiO1xuICAgICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGlmICF0ZXN0c19yYW4gPSAwICYmICFzdHJpY3QgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogbm8gdGVzdHMgaGF2ZSBiZWVuIHJ1bi5cXG4lIVwiO1xuICAgICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICAgICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjb3VudCwgY291bnRfdGVzdF9tb2R1bGVzIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRkFJTEVEICVkIC8gJWQgdGVzdHMlc1xcbiUhXCIgY291bnQgIXRlc3RzX3JhblxuICAgICAgICAgIChpZiBjb3VudF90ZXN0X21vZHVsZXMgPSAwIHRoZW4gXCJcIiBlbHNlIFByaW50Zi5zcHJpbnRmIChcIiwgJWQgVEVTXCIgXl4gXCJUX01PRFVMRVNcIikgY291bnRfdGVzdF9tb2R1bGVzKTtcbiAgICAgICAgVGVzdF9yZXN1bHQuRmFpbHVyZVxuICAgIGVuZFxuXG5sZXQgdXNlX2NvbG9yID0gIXVzZV9jb2xvclxubGV0IGluX3BsYWNlICA9ICFpbl9wbGFjZVxubGV0IGRpZmZfY29tbWFuZCA9ICFkaWZmX2NvbW1hbmRcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gIXNvdXJjZV90cmVlX3Jvb3RcbmxldCBhbGxvd19vdXRwdXRfcGF0dGVybnMgPSAhYWxsb3dfb3V0cHV0X3BhdHRlcm5zXG5cbmxldCBldmFsdWF0b3JzID0gcmVmIFtzdW1tYXJpemVdXG5sZXQgYWRkX2V2YWx1YXRvciB+ZiA9IGV2YWx1YXRvcnMgOj0gZiA6OiAhZXZhbHVhdG9yc1xubGV0IGV4aXQgKCkgPVxuICBMaXN0Lm1hcCAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFldmFsdWF0b3JzKVxuICB8PiBUZXN0X3Jlc3VsdC5jb21iaW5lX2FsbFxuICB8PiBUZXN0X3Jlc3VsdC50b19leGl0X2NvZGVcbiAgfD4gZXhpdFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBDYW1sLmluX2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBDYW1sLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gQ2FtbC5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gQ2FtbC5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRpbiA9IENhbWwuc3RkaW5cblxubGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICBsZXQgZmxhZ3MgPSBbIE9wZW5fcmRvbmx5IF0gaW5cbiAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBDYW1sLm9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcbjs7XG5cbmxldCBjbG9zZSA9IENhbWwuY2xvc2VfaW5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlIH5mID0gRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuXG5sZXQgbWF5X2VvZiBmID1cbiAgdHJ5IFNvbWUgKGYgKCkpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBOb25lXG47O1xuXG5sZXQgaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IENhbWwuaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IHJlYWxseV9pbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW4pXG5sZXQgcmVhbGx5X2lucHV0X2V4biB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IGlucHV0X2J5dGUgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2J5dGUgdClcbmxldCBpbnB1dF9jaGFyIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF9jaGFyIHQpXG5sZXQgaW5wdXRfYmluYXJ5X2ludCB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfYmluYXJ5X2ludCB0KVxubGV0IHVuc2FmZV9pbnB1dF92YWx1ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfdmFsdWUgdClcbmxldCBpbnB1dF9idWZmZXIgdCBidWYgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWYgdCBsZW4pXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gQ2FtbC5zZXRfYmluYXJ5X21vZGVfaW5cblxubGV0IGlucHV0X2FsbCB0ID1cbiAgKCogV2UgdXNlIDY1NTM2IGJlY2F1c2UgdGhhdCBpcyB0aGUgc2l6ZSBvZiBPQ2FtbCdzIElPIGJ1ZmZlcnMuICopXG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW5cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgY2h1bmtfc2l6ZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIENhbWwuQnVmZmVyLmFkZF9jaGFubmVsIGJ1ZmZlciB0IGNodW5rX3NpemU7XG4gICAgbG9vcCAoKVxuICBpblxuICB0cnkgbG9vcCAoKSB3aXRoXG4gIHwgRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlclxuOztcblxubGV0IHRyaW0gfmZpeF93aW5fZW9sIGxpbmUgPVxuICBpZiBmaXhfd2luX2VvbFxuICB0aGVuIChcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBsaW5lIGluXG4gICAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsIChTdHJpbmcuZ2V0IGxpbmUgKGxlbiAtIDEpKSAnXFxyJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBsaW5lIH5wb3M6MCB+bGVuOihsZW4gLSAxKVxuICAgIGVsc2UgbGluZSlcbiAgZWxzZSBsaW5lXG47O1xuXG5sZXQgaW5wdXRfbGluZSA/KGZpeF93aW5fZW9sID0gdHJ1ZSkgdCA9XG4gIG1hdGNoIG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2xpbmUgdCkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgbGluZSAtPiBTb21lICh0cmltIH5maXhfd2luX2VvbCBsaW5lKVxuOztcblxubGV0IGlucHV0X2xpbmVfZXhuID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbGV0IGxpbmUgPSBDYW1sLmlucHV0X2xpbmUgdCBpblxuICB0cmltIH5maXhfd2luX2VvbCBsaW5lXG47O1xuXG5sZXQgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBhYyA9XG4gICAgbWF0Y2ggaW5wdXRfbGluZSA/Zml4X3dpbl9lb2wgdCB3aXRoXG4gICAgfCBOb25lIC0+IGFjXG4gICAgfCBTb21lIGxpbmUgLT4gbG9vcCAoZiBhYyBsaW5lKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wgdCA9XG4gIExpc3QucmV2IChmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OltdIH5mOihmdW4gbGluZXMgbGluZSAtPiBsaW5lIDo6IGxpbmVzKSlcbjs7XG5cbmxldCBpdGVyX2xpbmVzID9maXhfd2luX2VvbCB0IH5mID1cbiAgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdDooKSB+ZjooZnVuICgpIGxpbmUgLT4gZiBsaW5lKVxuOztcblxubGV0IHJlYWRfbGluZXMgP2ZpeF93aW5fZW9sIGZuYW1lID0gd2l0aF9maWxlIGZuYW1lIH5mOihpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wpXG5sZXQgcmVhZF9hbGwgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6aW5wdXRfYWxsXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IENhbWwub3V0X2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBDYW1sLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IENhbWwuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBDYW1sLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRvdXQgPSBDYW1sLnN0ZG91dFxubGV0IHN0ZGVyciA9IENhbWwuc3RkZXJyXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGlmIHBoeXNfZXF1YWwgdCBzdGRlcnJcbiAgdGhlbiBTZXhwLkF0b20gXCI8c3RkZXJyPlwiXG4gIGVsc2UgaWYgcGh5c19lcXVhbCB0IHN0ZG91dFxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRvdXQ+XCJcbiAgZWxzZSBTZXhwLkF0b20gXCI8T3V0X2NoYW5uZWwudD5cIlxuOztcblxudHlwZSAnYSB3aXRoX2NyZWF0ZV9hcmdzID1cbiAgP2JpbmFyeTpib29sIC0+ID9hcHBlbmQ6Ym9vbCAtPiA/ZmFpbF9pZl9leGlzdHM6Ym9vbCAtPiA/cGVybTppbnQgLT4gJ2FcblxubGV0IGNyZWF0ZVxuICAgICAgPyhiaW5hcnkgPSB0cnVlKVxuICAgICAgPyhhcHBlbmQgPSBmYWxzZSlcbiAgICAgID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KVxuICAgICAgZmlsZVxuICA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgQ2FtbC5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSBmaWxlXG47O1xuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gQ2FtbC5zZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgZmx1c2ggPSBDYW1sLmZsdXNoXG5sZXQgY2xvc2UgPSBDYW1sLmNsb3NlX291dFxubGV0IGNsb3NlX25vX2VyciA9IENhbWwuY2xvc2Vfb3V0X25vZXJyXG5sZXQgb3V0cHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLm91dHB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5vdXRwdXRfc3Vic3RyaW5nIHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3RyaW5nID0gQ2FtbC5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gQ2FtbC5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXRfY2hhciA9IENhbWwub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IENhbWwub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IENhbWwub3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfYnVmZmVyID0gQ2FtbC5CdWZmZXIub3V0cHV0X2J1ZmZlclxubGV0IG91dHB1dF92YWx1ZSA9IENhbWwub3V0cHV0X3ZhbHVlXG5sZXQgbmV3bGluZSB0ID0gb3V0cHV0X3N0cmluZyB0IFwiXFxuXCJcblxubGV0IG91dHB1dF9saW5lcyB0IGxpbmVzID1cbiAgTGlzdC5pdGVyIGxpbmVzIH5mOihmdW4gbGluZSAtPlxuICAgIG91dHB1dF9zdHJpbmcgdCBsaW5lO1xuICAgIG5ld2xpbmUgdClcbjs7XG5cbmxldCBwcmludGYgPSBDYW1sLlByaW50Zi5wcmludGZcbmxldCBlcHJpbnRmID0gQ2FtbC5QcmludGYuZXByaW50ZlxubGV0IGZwcmludGYgPSBDYW1sLlByaW50Zi5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBDYW1sLlByaW50Zi5rZnByaW50ZlxubGV0IHByaW50X3N0cmluZyA9IENhbWwucHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfZW5kbGluZSA9IENhbWwucHJpbnRfZW5kbGluZVxubGV0IHByZXJyX2VuZGxpbmUgPSBDYW1sLnByZXJyX2VuZGxpbmVcblxubGV0IHByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByaW50X2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IGVwcmludF9zID9tYWNoIHNleHAgPVxuICBwcmVycl9lbmRsaW5lXG4gICAgKG1hdGNoIG1hY2ggd2l0aFxuICAgICB8IFNvbWUgKCkgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwXG4gICAgIHwgTm9uZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbjs7XG5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuOztcblxubGV0IHdyaXRlX2xpbmVzIGZpbGUgbGluZXMgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X2xpbmVzIHQgbGluZXMpXG5sZXQgd3JpdGVfYWxsIGZpbGUgfmRhdGEgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG4iLCJvcGVuISBCYXNlXG5tb2R1bGUgR2MgPSBTdGRsaWIuR2NcblxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuXG5sZXQgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlID0gXCJQUFhfTU9EVUxFX1RJTUVSXCJcblxubGV0IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKCkgPVxuICAoKiBhdm9pZCBTdGRsaWIuU3lzLmdldGVudl9vcHQgdG8gcHJlc2VydmUgNC4wNC54IGNvbXBhdGliaWxpdHkgKilcbiAgbWF0Y2ggU3RkbGliLlN5cy5nZXRlbnYgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlIHdpdGhcbiAgfCB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IGFtX3JlY29yZGluZ192YWx1ZSA9IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKClcbmxldCBhbV9yZWNvcmRpbmcgPSBPcHRpb24uaXNfc29tZSBhbV9yZWNvcmRpbmdfdmFsdWVcblxubW9kdWxlIER1cmF0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEludDYzLnRcblxuICBsZXQgdG9fbmFub3NlY29uZHMgdCA9IHRcbiAgbGV0IG9mX25hbm9zZWNvbmRzIHQgPSB0XG5cbiAgbW9kdWxlIHR5cGUgRm9ybWF0ID0gc2lnXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCA6IHQgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgRGVmYXVsdF9mb3JtYXQgPSBzdHJ1Y3RcbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXg6XCJuc1wiIHw+IEludDYzLm9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgbmFub3MgPSBJbnQ2My50b19zdHJpbmcgbmFub3MgXiBcIm5zXCJcbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOnRvX3N0cmluZ1xuICBlbmRcblxuICBsZXQgZm9ybWF0ID0gcmVmIChtb2R1bGUgRGVmYXVsdF9mb3JtYXQgOiBGb3JtYXQpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgIGxldCAobW9kdWxlIEZvcm1hdCkgPSAhZm9ybWF0IGluXG4gICAgRm9ybWF0Lm9mX3N0cmluZyBzdHJpbmdcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQudG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBHY19ldmVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWluZ19ldmVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IHJ1bnRpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBnY19ldmVudHMgOiBHY19ldmVudHMudFxuICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgOiB0IGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDogc3RyaW5nXG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIDogR2Muc3RhdFxuICAgIDsgbXV0YWJsZSBuZXN0ZWRfdGltZXIgOiB0IG9wdGlvblxuICAgIDsgbXV0YWJsZSB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA6IFRpbWluZ19ldmVudC50IGxpc3RcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/bmVzdGVkX3RpbWVyICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uID0gXCJcIlxuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA9IEludDYzLnplcm9cbiAgICA7IGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzID0gR2MucXVpY2tfc3RhdCAoKVxuICAgIDsgbmVzdGVkX3RpbWVyXG4gICAgOyB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA9IFtdXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldCB0ID1cbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIFwiXCI7XG4gICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIEludDYzLnplcm87XG4gICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXN0ZWQgLT4gbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDwtIFtdXG4gIDs7XG5cbiAgbGV0IHJlY29yZF9zdGFydCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoU3RyaW5nLmlzX2VtcHR5IHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24pO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA8LSBkZXNjcmlwdGlvbjtcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPC0gR2MucXVpY2tfc3RhdCAoKTtcbiAgICAgICgqIGNhbGwgW1RpbWVfbm93XSBhcyBsYXRlIGFzIHBvc3NpYmxlIGJlZm9yZSBydW5uaW5nIHRoZSBtb2R1bGUgYm9keSAqKVxuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkpXG4gIDs7XG5cbiAgbGV0IHJlY29yZF91bnRpbCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIGNvbXB1dGUgW1RpbWVfbm93XSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICBsZXQgdW50aWwgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIGluXG4gICAgICBsZXQgc3RhcnQgPSB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgaW5cbiAgICAgIGxldCBnY19zdGF0c19hZnRlciA9IEdjLnF1aWNrX3N0YXQgKCkgaW5cbiAgICAgIGxldCBnY19zdGF0c19iZWZvcmUgPSB0LmN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIGluXG4gICAgICBsZXQgcnVudGltZSA9IEludDYzLiggLSApIHVudGlsIHN0YXJ0IGluXG4gICAgICBhc3NlcnQgKFN0cmluZy5lcXVhbCB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKTtcbiAgICAgIGxldCBnY19ldmVudHMgOiBHY19ldmVudHMudCA9XG4gICAgICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPVxuICAgICAgICAgICAgZ2Nfc3RhdHNfYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IGNvbXBhY3Rpb25zID0gZ2Nfc3RhdHNfYWZ0ZXIuY29tcGFjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUuY29tcGFjdGlvbnNcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIHQubmVzdGVkX3RpbWVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBuZXN0ZWQgLT4gTGlzdC5yZXYgbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICBpblxuICAgICAgbGV0IHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50ID1cbiAgICAgICAgeyBkZXNjcmlwdGlvbjsgcnVudGltZTsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICBpblxuICAgICAgdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlclxuICAgICAgPC0gdGltaW5nX2V2ZW50IDo6IHQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXI7XG4gICAgICByZXNldCB0KVxuICA7O1xuZW5kXG5cbmxldCBkZWZpbml0aW9uX3RpbWVyID0gVGltZXIuY3JlYXRlICgpXG5sZXQgbW9kdWxlX3RpbWVyID0gVGltZXIuY3JlYXRlIH5uZXN0ZWRfdGltZXI6ZGVmaW5pdGlvbl90aW1lciAoKVxubGV0IHJlY29yZF9zdGFydCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF9zdGFydCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfdW50aWwgbW9kdWxlX25hbWUgPSBUaW1lci5yZWNvcmRfdW50aWwgbW9kdWxlX3RpbWVyIG1vZHVsZV9uYW1lXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fc3RhcnQgbG9jID0gVGltZXIucmVjb3JkX3N0YXJ0IGRlZmluaXRpb25fdGltZXIgbG9jXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fdW50aWwgbG9jID0gVGltZXIucmVjb3JkX3VudGlsIGRlZmluaXRpb25fdGltZXIgbG9jXG5cbmxldCBnY19ldmVudHNfc3VmZml4X3N0cmluZ1xuICAgICAgKHsgbWlub3JfY29sbGVjdGlvbnM7IG1ham9yX2NvbGxlY3Rpb25zOyBjb21wYWN0aW9ucyB9IDogR2NfZXZlbnRzLnQpXG4gID1cbiAgbGV0IHRvX2xpc3QgZGVzY3JpcHRpb24gY291bnQgPVxuICAgIGlmIGNvdW50ID0gMCB0aGVuIFtdIGVsc2UgWyBJbnQudG9fc3RyaW5nIGNvdW50IF4gXCIgXCIgXiBkZXNjcmlwdGlvbiBdXG4gIGluXG4gIGxldCBzdHJpbmdzID1cbiAgICB0b19saXN0IFwibWlub3IgY29sbGVjdGlvbnNcIiBtaW5vcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcIm1ham9yIGNvbGxlY3Rpb25zXCIgbWFqb3JfY29sbGVjdGlvbnNcbiAgICBAIHRvX2xpc3QgXCJjb21wYWN0aW9uc1wiIGNvbXBhY3Rpb25zXG4gIGluXG4gIGlmIExpc3QuaXNfZW1wdHkgc3RyaW5ncyB0aGVuIFwiXCIgZWxzZSBcIjsgR0M6IFwiIF4gU3RyaW5nLmNvbmNhdCBzdHJpbmdzIH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWQgbGlzdCA9XG4gIGxldCBsZWZ0X2NvbHVtbl93aWR0aCA9XG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6MCB+ZjooZnVuIHdpZHRoIChsZWZ0LCBfKSAtPiBJbnQubWF4IHdpZHRoIChTdHJpbmcubGVuZ3RoIGxlZnQpKVxuICBpblxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGxlZnQsIHJpZ2h0KSAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiJSpzICVzXCIgbGVmdF9jb2x1bW5fd2lkdGggbGVmdCByaWdodClcbjs7XG5cbmxldCByZWMgdGltaW5nX2V2ZW50c190b19zdHJpbmdzIGxpc3QgfmluZGVudCA9XG4gIGxldCBkdXJhdGlvbl9zdHJpbmdzID1cbiAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPiB0aW1pbmdfZXZlbnQucnVudGltZSlcbiAgICB8PiBEdXJhdGlvbi50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXRcbiAgaW5cbiAgbGV0IHByZWZpeCA9IFN0cmluZy5tYWtlIGluZGVudCAnICcgaW5cbiAgTGlzdC5tYXAyX2V4blxuICAgIGR1cmF0aW9uX3N0cmluZ3NcbiAgICBsaXN0XG4gICAgfmY6KGZ1biBkdXJhdGlvbl9zdHJpbmcgeyBydW50aW1lID0gXzsgZGVzY3JpcHRpb247IGdjX2V2ZW50czsgbmVzdGVkX3RpbWluZ19ldmVudHMgfVxuICAgICAgICAgLT5cbiAgICAgICAgICAgKCBkdXJhdGlvbl9zdHJpbmdcbiAgICAgICAgICAgLCBkZXNjcmlwdGlvblxuICAgICAgICAgICAgIF4gZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmcgZ2NfZXZlbnRzXG4gICAgICAgICAgICAgXiBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAodGltaW5nX2V2ZW50c190b19zdHJpbmdzIG5lc3RlZF90aW1pbmdfZXZlbnRzIH5pbmRlbnQ6KGluZGVudCArIDQpKVxuICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIGxpbmUgLT4gXCJcXG5cIiBeIGxpbmUpKSApKVxuICB8PiB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZFxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gcHJlZml4IF4gbGluZSlcbjs7XG5cbmxldCBmYWtlX3RpbWluZ19ldmVudHMgPVxuICBsZXQgZ2NfZXZlbnRzIGkgOiBHY19ldmVudHMudCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgMiA9IDEgdGhlbiAxIGVsc2UgMClcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSA0ID0gMyB0aGVuIDEgZWxzZSAwKVxuICAgIDsgY29tcGFjdGlvbnMgPSAoaWYgaSAlIDggPSA3IHRoZW4gMSBlbHNlIDApXG4gICAgfVxuICBpblxuICBsYXp5XG4gICAgKExpc3QuaW5pdCAxMiB+ZjooZnVuIGkgOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkZha2VfX0RlcGVuZGVuY3lfJWRcIiAoaSArIDEpXG4gICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaSArIDEpKVxuICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGlcbiAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgKGlmIChpICsgMSkgJSA0ID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBMaXN0LmluaXQgKGkgKyAxKSB+ZjooZnVuIGogOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkxpbmUgJWRcIiAoaiArIDEpXG4gICAgICAgICAgICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaiArIDEpKVxuICAgICAgICAgICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGpcbiAgICAgICAgICAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID0gW11cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZWxzZSBbXSlcbiAgICAgICB9KSlcbjs7XG5cbmxldCBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzIHRpbWluZ19ldmVudHMgPVxuICBsZXQgbm90aWZ5X29mX292ZXJyaWRpbmcgKCkgPVxuICAgIFN0ZGlvLnByaW50X2VuZGxpbmUgXCJwcHhfbW9kdWxlX3RpbWVyOiBvdmVycmlkaW5nIHRpbWUgbWVhc3VyZW1lbnRzIGZvciB0ZXN0aW5nXCJcbiAgaW5cbiAgbGV0IHRpbWluZ19ldmVudHMgPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZV9leG4gYW1fcmVjb3JkaW5nX3ZhbHVlIHdpdGhcbiAgICB8IFwiRkFLRV9NT0RVTEVTXCIgLT5cbiAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgZm9yY2UgZmFrZV90aW1pbmdfZXZlbnRzXG4gICAgfCBzdHJpbmcgLT5cbiAgICAgIChtYXRjaCBEdXJhdGlvbi5vZl9zdHJpbmcgc3RyaW5nIHdpdGhcbiAgICAgICB8IG92ZXJyaWRlIC0+XG4gICAgICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgICAgIExpc3QubWFwaSB0aW1pbmdfZXZlbnRzIH5mOihmdW4gaW5kZXggKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPlxuICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgICAgICB0aW1pbmdfZXZlbnQubmVzdGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgICAgICAgIH5mOihmdW4gaW5kZXggbmVzdGVkX3RpbWluZ19ldmVudCAtPlxuICAgICAgICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgICAgICAgIHsgbmVzdGVkX3RpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWUgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB0aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9KVxuICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdGltaW5nX2V2ZW50cylcbiAgaW5cbiAgdGltaW5nX2V2ZW50cyB8PiB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgfmluZGVudDowIHw+IExpc3QuaXRlciB+ZjpTdGRpby5wcmludF9lbmRsaW5lXG47O1xuXG5sZXQgKCkgPVxuICBpZiBhbV9yZWNvcmRpbmdcbiAgdGhlblxuICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgIHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgKExpc3QucmV2IG1vZHVsZV90aW1lci50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcikpXG47O1xuIiwidHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmFzZS5UeXBlX2VxdWFsLnQgPSBUIDogKCdhLCAnYSkgdFxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgY29udiA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBhIC0+IGIgPSBmdW4gVCB4IC0+IHhcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcbiIsIigqIHRoaXMgbGliIHNob3VsZCBub3QgZGVwZW5kIG9uIGNvcmUgKilcbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiAwXG4gICAgICB8IFtdLCBfIC0+IC0xXG4gICAgICB8IF8sIFtdIC0+IDFcbiAgICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiBsb29wIHhzIHlzIGVsc2UgblxuICAgIGluXG4gICAgbG9vcCBhIGJcbiAgOztcbmVuZFxuXG5tb2R1bGUgVWlkIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbmV4dCA6IHN0cmluZyAtPiB0XG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgdmFsIG5hbWUgOiB0IC0+IHN0cmluZ1xuICB2YWwgc3RhdGljIDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIGEgYiA9IGNvbXBhcmUgKGEuY29kZSA6IGludCkgYi5jb2RlXG4gIGxldCBlcXVhbCBhIGIgPSAoYS5jb2RlIDogaW50KSA9IGIuY29kZVxuICBsZXQgdWlkID0gcmVmIDBcblxuICBsZXQgbmV4dCBuYW1lID1cbiAgICBsZXQgY29kZSA9ICF1aWQgaW5cbiAgICBpbmNyIHVpZDtcbiAgICB7IGNvZGU7IG5hbWUgfVxuICA7O1xuXG4gIGxldCBoYXNoIGEgPSBIYXNodGJsLmhhc2ggYS5jb2RlXG4gIGxldCBuYW1lIGEgPSBhLm5hbWVcbiAgbGV0IHN0YXRpYyA9IG5leHQgXCJzdGF0aWNcIlxuZW5kXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHVpZCA6IFVpZC50XG4gICAgOyBwYXJhbXMgOiB0IGxpc3RcbiAgICB9XG5cbiAgbGV0IHJlYyBjb21wYXJlIGsxIGsyID1cbiAgICBpZiBrMSA9PSBrMlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNtcCA9IFVpZC5jb21wYXJlIGsxLnVpZCBrMi51aWQgaW5cbiAgICAgIGlmIGNtcCA8PiAwIHRoZW4gY21wIGVsc2UgTGlzdC5jb21wYXJlIGNvbXBhcmUgazEucGFyYW1zIGsyLnBhcmFtcylcbiAgOztcblxuICBsZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG4gIGxldCBoYXNoID0gKEhhc2h0YmwuaGFzaCA6IHQgLT4gaW50KVxuICBsZXQgc3RhdGljID0geyB1aWQgPSBVaWQuc3RhdGljOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxudHlwZSAnYSB0ID0gS2V5LnRcbnR5cGUgJ2EgdHlwZW5hbWUgPSAnYSB0XG5cbmxldCBrZXkgdCA9IHRcbmxldCB1aWQgdCA9IHQuS2V5LnVpZFxubGV0IG5hbWUgdCA9IFVpZC5uYW1lIHQuS2V5LnVpZFxubGV0IHN0YXRpYyA9IEtleS5zdGF0aWNcbmxldCBjcmVhdGUgPyhuYW1lID0gXCJUeXBlbmFtZS5jcmVhdGVcIikgKCkgPSB7IEtleS51aWQgPSBVaWQubmV4dCBuYW1lOyBwYXJhbXMgPSBbXSB9XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFRoZSBhcmd1bWVudCBmb3IgT2JqLm1hZ2ljIGhlcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBjb3JlL3R5cGVfZXF1YWwgKilcblxuICBsZXQgc2FtZSAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID0gS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcblxuICBsZXQgc2FtZV93aXRuZXNzICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiBTb21lIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgZmFpbHdpdGggXCJUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdhIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICgnYSwgJ2IpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAnYyB0eXBlbmFtZSAtPiAoJ2EsICdiLCAnYykgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAnZSB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90ID0geyBLZXkudWlkOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGEgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYiBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGMgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkIGUgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZDsgZSBdIH1cbmVuZFxuXG5tb2R1bGUgS2V5X3RhYmxlID0gSGFzaHRibC5NYWtlIChLZXkpXG5cbm1vZHVsZSBUYWJsZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGRhdGEgPSBEYXRhIDogJ2EgdCAqICdhIFgudCAtPiBkYXRhXG4gIHR5cGUgdCA9IGRhdGEgS2V5X3RhYmxlLnRcblxuICBsZXQgY3JlYXRlIGludCA9IEtleV90YWJsZS5jcmVhdGUgaW50XG4gIGxldCBtZW0gdGFibGUgbmFtZSA9IEtleV90YWJsZS5tZW0gdGFibGUgKGtleSBuYW1lKVxuICBsZXQgc2V0IHRhYmxlIG5hbWUgZGF0YSA9IEtleV90YWJsZS5yZXBsYWNlIHRhYmxlIChrZXkgbmFtZSkgKERhdGEgKG5hbWUsIGRhdGEpKVxuXG4gIGxldCBmaW5kICh0eXBlIGEpIHRhYmxlIChuYW1lIDogYSB0eXBlbmFtZSkgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIHRyeSBTb21lIChLZXlfdGFibGUuZmluZCB0YWJsZSAoa2V5IG5hbWUpKSB3aXRoXG4gICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChEYXRhIChuYW1lJywgZGF0YSkpIC0+XG4gICAgICAoZnVuICh0eXBlIGIpIChuYW1lJyA6IGIgdHlwZW5hbWUpIChkYXRhIDogYiBYLnQpIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gKHNhbWVfd2l0bmVzc19leG4gbmFtZScgbmFtZSA6IChiLCBhKSBUeXBlX2VxdWFsLnQpIGluXG4gICAgICAgICBTb21lIChkYXRhIDogYSBYLnQpKVxuICAgICAgICBuYW1lJ1xuICAgICAgICBkYXRhXG4gIDs7XG5lbmRcblxubGV0IGZhaWwgdWlkX2EgdWlkX2IgPVxuICBsZXQgbXNnID1cbiAgICBQcmludGYuc3ByaW50ZiBcIlR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG4gJVMgJVNcIiAoVWlkLm5hbWUgdWlkX2EpIChVaWQubmFtZSB1aWRfYilcbiAgaW5cbiAgZmFpbHdpdGggbXNnXG47O1xuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8xIChBIDogUzEpIChCIDogUzEpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYS4gKCdhIEEudCwgJ2EgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMiAoQSA6IFMyKSAoQiA6IFMyKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IuICgoJ2EsICdiKSBBLnQsICgnYSwgJ2IpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMyAoQSA6IFMzKSAoQiA6IFMzKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MuICgoJ2EsICdiLCAnYykgQS50LCAoJ2EsICdiLCAnYykgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzQgKEEgOiBTNCkgKEIgOiBTNCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiICdjICdkLiAoKCdhLCAnYiwgJ2MsICdkKSBBLnQsICgnYSwgJ2IsICdjLCAnZCkgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNSAoQSA6IFM1KSAoQiA6IFM1KSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXEgOlxuICAgICAgICAnYSAnYiAnYyAnZCAnZS4gKCgnYSwgJ2IsICdjLCAnZCwgJ2UpIEEudCwgKCdhLCAnYiwgJ2MsICdkLCAnZSkgQi50KSBUeXBlX2VxdWFsLnRcbiAgICB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFBsYWNlIGhvbGRlciBmb3IgY29tbW9uIFZhcmlhbnRzIGFuZCBGaWVsZHMgaW50ZXJmYWNlXG4qKVxuXG5tb2R1bGUgTSAoWCA6IHNpZ1xuICAgICgqKlxuICAgICAgIFRoaXMgZnVuY3RvciBpcyBlc3NlbnRpYWxseSB0aGVyZSBiZWNhdXNlIHdlIHVzZSB0aGlzIHNhbWUgaW50ZXJmYWNlIGluIGRpZmZlcmVudFxuICAgICAgIGNvbnRleHRzLCB3aXRoIGRpZmZlcmVudCB0eXBlcyBmb3IgWydhIHRdLlxuXG4gICAgICAgMSkgT25lIHVzZSBjYXNlIGZvciBpdCBpcyB3aGVyZSBbJ2EgWC50ID0gJ2EgVHlwZXJlcC50XS4gIFRoZXNlIGludGVyZmFjZXMgYXJlIHRoZW5cbiAgICAgICBwYXJ0IG9mIHRoZSB0eXBlIHdpdG5lc3MgYnVpbHQgZm9yIGEgdHlwZSBjb250YWluaW5nIGEgcmVjb3JkIG9yIGEgdmFyaWFudCBpbiBpdHNcbiAgICAgICBzdHJ1Y3R1cmUuIFt0cmF2ZXJzZV0gd2lsbCBnaXZlIGEgd2F5IG9mIGFjY2Vzc2luZyB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlXG4gICAgICAgYXJndW1lbnRzIG9mIGEgdmFyaWFudCBvciByZWNvcmQgdHlwZS5cblxuICAgICAgIDIpIEFub3RoZXIgdXNlIGNhc2UgaXMgZm9yIGJ1aWxkaW5nIFwic3RhZ2VkIGdlbmVyaWMgY29tcHV0YXRpb25zXCIuIEluIHRoYXQgY2FzZSwgdGhlXG4gICAgICAgdHlwZSBbJ2EgWC50XSBpcyB0aGUgdHlwZSBvZiB0aGUgY29tcHV0YXRpb24gdGhhdCBpcyBiZWluZyBidWlsdC4gIFt0cmF2ZXJzZV1cbiAgICAgICByZXR1cm5zIHRoZSBjb21wdXRhdGlvbiBidWlsdCBmb3IgdGhlIGFyZ3VtZW50LiBUaGUgaW50ZXJmYWNlIG5vIGxvbmdlciBleHBvcnRzXG4gICAgICAgdGhlIHR5cGVyZXAgb2YgdGhlIGFyZ3VtZW50cyBpbiBob3BlcyBvZiBlbmZvcmNpbmcgdGhhdCBubyB0eXBlcmVwIHRyYXZlcnNhbFxuICAgICAgIGhhcHBlbnMgYXQgcnVudGltZSBpZiB0aGUgY29tcHV0YXRpb24gaGFwcGVuIHRvIGJlIGEgZnVuY3Rpb24uXG4gICAgKilcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGZ1bmN0aW9ucyBwcmVmaXhlZCBieSBbaW50ZXJuYWxdIGFzIHdlbGwgYXMgdGhlIG1vZHVsZSBzdWZmaXhlZCBieSBbX2ludGVybmFsXVxuICAgICBhcmUgdXNlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gW3dpdGggdHlwZXJlcF0gYXMgd2VsbCBhcyBzb21lXG4gICAgIGludGVybmFscyBvZiB0aGUgdHlwZXJlcCBsaWJyYXJ5LiBEbyBub3QgY29uc2lkZXIgdXNpbmcgdGhlc2Ugc29tZXdoZXJlIGVsc2UuICBUaGV5XG4gICAgIHNob3VsZCBpZGVhbGx5IG5vdCBiZSBleHBvcnRlZCBvdXRzaWRlIHRoZSB0eXBlcmVwIGxpYnJhcnksIGJ1dCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAgbmVlZHMgc29tZWhvdyB0byBhY2Nlc3MgdGhpcywgZXZlbiBvdXRzaWRlLiAqKVxuXG4gIG1vZHVsZSBUYWdfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZSA9XG4gICAgICB8IEFyZ3Mgb2YgKCdhcmdzIC0+ICd2YXJpYW50KVxuICAgICAgfCBDb25zdCBvZiAndmFyaWFudFxuXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2FyZ3MgWC50XG4gICAgICA7IGFyaXR5IDogaW50XG4gICAgICA7IGFyZ3NfbGFiZWxzIDogc3RyaW5nIGxpc3RcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgb2NhbWxfcmVwciA6IGludFxuICAgICAgOyB0eWlkIDogJ2FyZ3MgVHlwZW5hbWUudFxuICAgICAgOyBjcmVhdGUgOiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSB0YWcsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHZhcmlhbnQgdHlwZSwgYWxzbyBjYWxsZWQgYW4gXCJhcHBsaWVkXG4gICAgIHZhcmlhbnQgQ29uc3RydWN0b3JcIlxuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHZhcmlhbnQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgdGFnXG4gICAgIHBhcmFtZXRlcnMuICBFeGFtcGxlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID1cbiAgICAgICAgIHwgQSBvZiAoaW50ICogc3RyaW5nKVxuICAgICAgICAgfCBCIG9mIHN0cmluZ1xuICAgICAgICAgfCBDIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG5cbiAgICAgdGhpcyB0eXBlIGhhcyB0aHJlZSBjb25zdHJ1Y3RvcnMuIEZvciBlYWNoIG9mIHRoZW0gd2UnbGwgaGF2ZSBhIGNvcnJlc3BvbmRpbmdcbiAgICAgW1RhZy50XTpcblxuICAgICB7W1xuICAgICAgIHZhbCB0YWdfQSA6ICh0LCAoaW50ICogc3RyaW5nKSkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0IgOiAodCwgc3RyaW5nICAgICAgICApIFRhZy50XG4gICAgICAgdmFsIHRhZ19DIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICBdfVxuXG4gICAgIE5vdGUsIGlubGluZSByZWNvcmQgaW4gdmFyaWFudCBhcmUgdHlwZWQgYXMgaWYgdGhlaXIgZGVmaW5pdGlvbiB3YXMgdXNpbmcgdHVwbGVzLFxuICAgICB3aXRob3V0IHRoZSBwYXJlbnRoZXNpcy4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZWlyIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24uICBCdXRcbiAgICAgdGhlIGRpc3RpbmN0aW9uIGlzIGNhcnJpZWQgYW5kIGF2YWlsYWJsZSBmb3IgaW50cm9zcGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBbVGFnLnRdLlxuICAgICBTZWUgW2FyZ3NfbGFiZWxzXS4gKilcbiAgbW9kdWxlIFRhZyA6IHNpZ1xuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHRcblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvciBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ29uc3RydWN0b3IgICAgICAgIHwgbGFiZWxcbiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBgYSBvZiBpbnQgICAgICAgIHwgIFwiYVwiXG4gICAgICAgICB8IGBBIG9mIGludCAgICAgICAgfCAgXCJBXCJcbiAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSB8ICBcIkFcIlxuICAgICAgIHZ9XG5cbiAgICAgICBmb3Igc3RhbmRhcmQgdmFyaWFudCwgdGhlIG9jYW1sIHN5bnRheCBpbXBsaWVzIHRoYXQgdGhpcyBsYWJlbCB3aWxsIGFsd2F5cyBzdGFydHNcbiAgICAgICB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSBjaGFyLlxuICAgICAgIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50LCB0aGlzIGxhYmVsIGRvZXMgbm90IGluY2x1ZGUgdGhlIFtgXSBjaGFyYWN0ZXIuXG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSBzaXplIG9mIHRoZSBvY2FtbCBoZWFwIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50c1xuXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge3ZcbiAgICAgICAgICAwOiB8IEEgfCAnQVxuICAgICAgICAgIDE6IHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgICB8IGBBIG9mIGludCAqIGludFxuICAgICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnR9XG4gICAgICAgICAgMjogfCBBIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgICAgZXRjLlxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJpdHkgOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKiBUaGUgbGFiZWwgb2YgdGhlIGZpZWxkcyBmb3IgaW5saW5lIHJlY29yZHMuICBGb3Igb3RoZXIgZm9ybXMgb2YgdGFncywgdGhpcyBpcyB0aGVcbiAgICAgICAgZW1wdHkgbGlzdC4gIFdoZW4gdGhpcyByZXR1cm5zIGEgbm9uIGVtcHR5IGxpc3QsIHRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIGxpc3RcbiAgICAgICAgaXMgZXF1YWwgdG8gdGhlIGFyaXR5LlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAge3ZcbiAgICAgICAgICgxKSBFbXB0eTpcblxuICAgICAgICAgICB8IEEgfCAnQVxuICAgICAgICAgICB8IEEgb2YgaW50IHwgYEEgb2YgaW50IHwgQSBvZiAoaW50ICogaW50KSB8IGBBIG9mIChpbnQgKiBpbnQpXG4gICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgIHwgQSBvZiBpbnQgKiBmbG9hdFxuXG4gICAgICAgICAoMikgTm9uIGVtcHR5OlxuXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgIC0+IFsgXCJ4XCIgXVxuICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH0gICAtPiBbIFwieFwiIDsgXCJ5XCIgXVxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJnc19sYWJlbHMgOiAoXywgXykgdCAtPiBzdHJpbmcgbGlzdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIGluZGV4IG9mIHRoZSBjb25zdHJ1Y3RvciBpbiB0aGUgbGlzdCBvZiBhbGwgdGhlIHZhcmlhbnQgdHlwZSdzIGNvbnN0cnVjdG9yc1xuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgaW50ICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBCICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgQyBvZiBpbnQgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEQgb2YgY2hhciAgICAgICAgICgqIDMgKilcbiAgICAgICAgICAgfCBFIG9mIHsgeCA6IGludCB9ICAoKiA0ICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBpbmRleCA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgb2NhbWxfcmVwciBpcyByZWxhdGVkIHRvIHRoZSBydW50aW1lIG9mIG9iamVjdHMuIHRoaXMgaXMgZXNzZW50aWFsbHkgYSB3YXkgb2ZcbiAgICAgICBnaXZpbmcgb25lIHRoZSBhYmlsaXR5IHRvIHJlYnVpbGQgZHluYW1pY2FsbHkgYW4gW09iai50XSByZXByZXNlbnRpbmcgYSB0YWcuXG5cbiAgICAgICBQb2x5bW9ycGhpYyB2YXJpYW50czpcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgaGFzaCBvZiB0aGUgbGFiZWwsIGFzIGRvbmUgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAgcHJpbnRfaW50IChPYmoubWFnaWMgYGJhcikgICgqIDQ4OTUxODcgKilcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyAnZm9vKSAgKCogNTA5NzIyMiAqKVxuXG4gICAgICAgU3RhbmRhcmRzIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgdGFnIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZS5cbiAgICAgICB0aGUgd2F5IGl0IHdvcmtzIGluIHRoZSBvY2FtbCBydW50aW1lIGlzIGJ5IHBhcnRpdGlvbmluZyB0aGUgY29uc3RydWN0b3JzIHJlZ2FyZGluZ1xuICAgICAgIGlmIHRoZXkgaGF2ZSBzb21lIGFyZ3VtZW50cyBvciBub3QsIHByZXNlcnZpbmcgdGhlIG9yZGVyLCB0aGVuIGFzc2lnbiBpbmNyZWFzaW5nXG4gICAgICAgaW5kZXggd2l0aGluZyBlYWNoIHBhcnRpdGlvbi5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9ICAgICAgICAgICAgICAgICAgKCogbm8gYXJnICopICAoKiBhcmdzICopXG4gICAgICAgICAgIHwgQSAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgb2YgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEMgICAgICAgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBEIG9mIChmbG9hdCAqIHN0cmluZykgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBFICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRiAgICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEcgb2Ygc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEggb2YgeyB4IDogaW50IH0gICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgb2NhbWxfcmVwciA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2l2ZSBiYWNrIGEgd2F5IG9mIGNvbnN0cnVjdGluZyBhIHZhbHVlIG9mIHRoYXQgY29uc3RydWN0b3IgZnJvbSBpdHMgYXJndW1lbnRzLlxuXG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICAgIHwgQiBvZiBpbnQgKiBmbG9hdFxuICAgICAgICAgICB8IENcbiAgICAgICAgICAgfCBEIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgXX1cblxuICAgICAgIFtjcmVhdGVdIHdpbGwgcmV0dXJuIHNvbWV0aGluZyBlcXVpdmFsZW50IHRvOlxuICAgICAgIHRhZ19BIDogW0FyZ3MgKGZ1biAoZCA6IChpbnQgKiBzdHJpbmcpIC0+IEEgZCldXG4gICAgICAgdGFnX0IgOiBbQXJncyAoZnVuIChpLCBmKSAtPiBCIChpLCBmKSldXG4gICAgICAgdGFnX0MgOiBbQ29uc3QgQ11cbiAgICAgICB0YWdfRCA6IFtBcmdzIChmdW4gKHgsIHkpIC0+IEQgeyB4OyB5IH0pXVxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIHQgLT4gKCd2YXJpYW50LCAnYXJncykgY3JlYXRlXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gbWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0IHdoaWxlIGJ1aWxkaW5nIGEgY29tcHV0YXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICB2YWwgdHlpZCA6IChfLCAnYXJncykgdCAtPiAnYXJncyBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSByZXByZXNlbnRhdGlvbi9jb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgVGFnX2ludGVybmFsLnQgLT4gKCdhLCAnYikgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRhZ19pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGFyaXR5IHQgPSB0LmFyaXR5XG4gICAgbGV0IGFyZ3NfbGFiZWxzIHQgPSB0LmFyZ3NfbGFiZWxzXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IG9jYW1sX3JlcHIgdCA9IHQub2NhbWxfcmVwclxuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFZhcmlhbnRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gdGFnID0gVGFnIDogKCd2YXJpYW50LCAnYSkgVGFnLnQgLT4gJ3ZhcmlhbnQgdGFnXG4gICAgdHlwZSBfIHZhbHVlID0gVmFsdWUgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAqICdhIC0+ICd2YXJpYW50IHZhbHVlXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgdGFncyA6ICdhIHRhZyBhcnJheVxuICAgICAgOyBwb2x5bW9ycGhpYyA6IGJvb2xcbiAgICAgIDsgdmFsdWUgOiAnYSAtPiAnYSB2YWx1ZVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudCA6IHNpZ1xuICAgICgqKlxuICAgICAgIEFuIGV4aXN0ZW50aWFsIHR5cGUgdXNlZCB0byBnYXRoZXIgYWxsIHRoZSB0YWdzIGNvbnN0aXR1aW5nIGEgdmFyaWFudFxuICAgICAgIHR5cGUuIHRoZSBbJ3ZhcmlhbnRdIHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZVxuICAgICAgIGNvbnN0cnVjdG9ycyBvZiB0aGF0IHZhcmlhbnQgdHlwZS4gVGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcnMgbWlnaHQgYmUgZGlmZmVyZW50XG4gICAgICAgZm9yIGVhY2ggY29uc3RydWN0b3IgYW5kIGlzIHRodXMgZXhpc3RlbnRpYWxcbiAgICAqKVxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhcmdzKSBUYWcudCAtPiAndmFyaWFudCB0YWdcblxuICAgICgqKlxuICAgICAgIEEgc2ltaWxhciBleGlzdGVudGlhbCBjb25zdHJ1Y3RvciB0byBbXyB0YWddIGJ1dCB0aGlzIG9uZSBob2xkcyBhIHZhbHVlIHdob3NlIHR5cGVcbiAgICAgICBpcyB0aGUgYXJndW1lbnRzIG9mIHRoZSB0YWcgY29uc3RydWN0b3IuICBBIHZhbHVlIG9mIHR5cGUgWydhIHZhbHVlXSBpcyBhIHBhaXIgb2ZcbiAgICAgICAoMSkgYSB2YWx1ZSBvZiB2YXJpYW50IHR5cGUgWydhXSBhbG9uZyB3aXRoICgyKSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgICAgIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZSBbJ2FdXG4gICAgKilcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50ICogJ2FyZ3MgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSB2YXJpYW50IHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHZhcmlhbnQgdHlwZSB3aXRuZXNzZWQuXG4gICAgKilcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG5cbiAgICAoKipcbiAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGFncyBvZiB0aGlzIHZhcmlhbnQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCB0YWcgb2YgdGhpcyB2YXJpYW50IHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIHRhZyA6ICdhIHQgLT4gaW50IC0+ICdhIHRhZ1xuXG4gICAgKCoqXG4gICAgICAgRGlzdGluZ3Vpc2ggcG9seW1vcnBoaWMgdmFyaWFudHMgYW5kIHN0YW5kYXJkIHZhcmlhbnRzLiBUeXBpY2FsbHksIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMgdGFncyBzdGFydHMgd2l0aCB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAgICBFeGFtcGxlXG4gICAgICAgcG9seW1vcnBoaWMgdmFyaWFudDogdHlwZSB0ID0gWyBgQSB8IGBCIF1cbiAgICAgICBzdGFuZGFyZCB2YXJpYW50OiAgICB0eXBlIHQgPSBBIHwgQlxuICAgICopXG4gICAgdmFsIGlzX3BvbHltb3JwaGljIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gYSB2YWx1ZSBvZiB0aGlzIHZhcmlhbnQgdHlwZS5cbiAgICAqKVxuICAgIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdmFsdWVcblxuICAgICgqKlxuICAgICAgIGZvbGRpbmcgYWxvbmcgdGhlIHRhZ3Mgb2YgdGhlIHZhcmlhbnQgdHlwZVxuICAgICopXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOignYWNjIC0+ICdhIHRhZyAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBWYXJpYW50X2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhcmlhbnRfaW50ZXJuYWxcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IHQgPSB0LnR5cGVuYW1lXG4gICAgbGV0IGxlbmd0aCB0ID0gQXJyYXkubGVuZ3RoIHQudGFnc1xuICAgIGxldCB0YWcgdCBpbmRleCA9IHQudGFncy4oaW5kZXgpXG4gICAgbGV0IGlzX3BvbHltb3JwaGljIHQgPSB0LnBvbHltb3JwaGljXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC50YWdzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgICB7IGxhYmVsIDogc3RyaW5nXG4gICAgICA7IHJlcCA6ICdmaWVsZCBYLnRcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgdHlpZCA6ICdmaWVsZCBUeXBlbmFtZS50XG4gICAgICA7IGdldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgICA7ICgqIHNldCA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb247IChcXCogbXV0YWJsZSBmaWVsZCAqXFwpICopXG4gICAgICAgIGlzX211dGFibGUgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gICgqKlxuICAgICBXaXRuZXNzIG9mIGEgZmllbGQsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHJlY29yZCB0eXBlLlxuICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgZmllbGQuXG4gICAgIEV4YW1wbGU6XG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50IDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG4gICAgIFRoaXMgdHlwZSBoYXMgdHdvIGZpZWxkcy4gZm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZyBbRmllbGQudF1cblxuICAgICB2YWwgZmllbGRfeCA6ICh0LCBpbnQpIEZpZWxkLnRcbiAgICAgdmFsIGZpZWxkX3kgOiAodCwgc3RyaW5nKSBGaWVsZC50XG4gICopXG4gIG1vZHVsZSBGaWVsZCA6IHNpZ1xuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdFxuXG5cbiAgICAoKipcbiAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmllbGQgYXMgaXQgaXMgZ2l2ZW4gaW4gdGhlIGNvbmNyZXRlIHN5bnRheFxuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB7IHggICA6IGludDsgICAgICgqIFwieFwiICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIFwiZm9vXCIgKilcbiAgICAgICAgICAgYmFyIDogZmxvYXQ7ICAgKCogXCJiYXJcIiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBmaWVsZCBpbiB0aGUgbGlzdCBvZiBhbGwgZmllbGRzIGZvciB0aGlzIHJlY29yZCB0eXBlLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICAgeCAgIDogaW50OyAgICAgKCogMCAqKVxuICAgICAgICAgICBmb28gOiBzdHJpbmc7ICAoKiAxICopXG4gICAgICAgICAgIGJhciA6IHN0cmluZzsgICgqIDIgKilcbiAgICAgICAgIH1cbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBGaWVsZCBhY2Nlc3NvcnMuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGRvdCBvcGVyYXRpb24uXG4gICAgICAgW0ZpZWxkLmdldCBiYXJfZmllbGQgdF0gcmV0dXJucyB0aGUgZmllbGQgW2Jhcl0gb2YgdGhlIHJlY29yZCB2YWx1ZSBbdF0sIGp1c3QgdGhlXG4gICAgICAgc2FtZSBhcyBbdC5iYXJdXG4gICAgKilcbiAgICB2YWwgZ2V0IDogKCdyZWNvcmQsICdmaWVsZCkgdCAtPiAncmVjb3JkIC0+ICdmaWVsZFxuXG4gICAgKCoqIHJldHVybiB3aGV0aGVyIHRoZSBmaWVsZCBpcyBtdXRhYmxlLCBpLmUuIHdoZXRoZXIgaXRzIGRlY2xhcmF0aW9uIGlzIHByZWZpeGVkIHdpdGhcbiAgICAgICAgdGhlIGtleXdvcmQgW211dGFibGVdICopXG4gICAgdmFsIGlzX211dGFibGUgOiAoXywgXykgdCAtPiBib29sXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gIE1pZ2h0IGJlIHVzZWQgdG8gcGVyZm9ybSBzb21lIGxvb2t1cCBiYXNlZFxuICAgICAgICBvbiBpdCAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgVHlwZW5hbWUudFxuXG4gICAgKCoqIGdldCB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGFyZ3VtZW50cyAqKVxuICAgIHZhbCB0cmF2ZXJzZSA6IChfLCAnZmllbGQpIHQgLT4gJ2ZpZWxkIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgRmllbGRfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRmllbGRfaW50ZXJuYWxcblxuICAgIGxldCBsYWJlbCB0ID0gdC5sYWJlbFxuICAgIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICAgIGxldCBnZXQgdCA9IHQuZ2V0XG4gICAgbGV0IGlzX211dGFibGUgdCA9IHQuaXNfbXV0YWJsZVxuICAgIGxldCB0eWlkIHQgPSB0LnR5aWRcbiAgICBsZXQgdHJhdmVyc2UgdCA9IHQucmVwXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgZmllbGRzIDogJ2EgZmllbGQgYXJyYXlcbiAgICAgIDsgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBib29sXG4gICAgICA7IGNyZWF0ZSA6ICdhIGZpZWxkcyAtPiAnYVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgUmVjb3JkIDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIGZpZWxkcyBjb25zdGl0dWluZyBhIHJlY29yZCB0eXBlLiB0aGVcbiAgICAgICBbJ3JlY29yZF0gcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgaXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aGUgZmllbGQgb2YgdGhhdFxuICAgICAgIHJlY29yZCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgZmllbGRzIG1pZ2h0IGJlIGRpZmZlcmVudCBmb3IgZWFjaCBmaWVsZCBhbmQgaXMgdGh1c1xuICAgICAgIGV4aXN0ZW50aWFsLlxuICAgICopXG4gICAgdHlwZSBfIGZpZWxkID0gRmllbGQgOiAoJ3JlY29yZCwgJ2EpIEZpZWxkLnQgLT4gJ3JlY29yZCBmaWVsZFxuXG4gICAgKCoqXG4gICAgICAgWydyZWNvcmQgZmllbGRzXSBpcyBhIHR5cGUgaXNvbW9ycGhpYyB0byBbJ3JlY29yZF0uICBUaGlzIGdpdmVzIGEgd2F5IHRvIGdldCB0aGVcbiAgICAgICBmaWVsZCB2YWx1ZSBmb3IgZWFjaCBmaWVsZCBvZiB0aGUgcmVjb3JkLiAgVGhlIGFkdmFudGFnZSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgdGhhdCBpdCBpcyBjb252ZW5pZW50IGZvciB3cml0aW5nIGdlbmVyaWMgY29tcHV0YXRpb25zLlxuICAgICopXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICAoKipcbiAgICAgICBXaXRuZXNzIG9mIGEgcmVjb3JkIHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHJlY29yZCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBmaWVsZHMgb2YgdGhpcyByZWNvcmQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCBmaWVsZCBvZiB0aGlzIHJlY29yZCB0eXBlLCBpbmRleGVkIGZyb20gMC5cbiAgICAqKVxuICAgIHZhbCBmaWVsZCA6ICdhIHQgLT4gaW50IC0+ICdhIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBUaGlzIGlzIGEgbG93IGxldmVsIG1ldGFkYXRhIHJlZ2FyZGluZyB0aGUgd2F5IHRoZSBvY2FtbCBjb21waWxlciByZXByZXNlbnQgdGhlXG4gICAgICAgYXJyYXkgdW5kZXJuZWF0aCB0aGF0IGlzIHRoZSBydW50aW1lIHZhbHVlIG9mIGEgcmVjb3JkIG9mIHR5cGUgWydhXSBnaXZlbiBhIHdpdG5lc3NcbiAgICAgICBvZiB0eXBlIFsnYSB0XS4gW2hhc19kb3VibGVfYXJyYXlfdGFnIHddIHJldHVybnMgW3RydWVdIGlmIHRoZSBhcnJheSB0aGF0XG4gICAgICAgcmVwcmVzZW50cyBydW50aW1lIHZhbHVlcyBvZiB0aGlzIHR5cGUgaXMgYW4gb3B0aW1pemVkIG9jYW1sIGZsb2F0IGFycmF5LlxuICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIHRydWUgZm9yIHJlY29yZCB3aGVyZSBhbGwgZmllbGRzIGFyZSBzdGF0aWNhbGx5IGtub3duIGFzIHRvXG4gICAgICAgYmUgW2Zsb2F0c10uXG5cbiAgICAgICBOb3RlIHRoYXQgeW91IGNhbid0IGdldCB0aGlzIGluZm9ybWF0aW9uIGR5bmFtaWNhbGx5IGJ5IGluc3BlY3RpbmcgdGhlIHR5cGVyZXAgb25jZVxuICAgICAgIGl0IGlzIGFwcGxpZWQsIGJlY2F1c2UgdGhlcmUgaXMgYXQgdGhpcyBwb2ludCBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIG9uZSBvZiB0aGVcbiAgICAgICBmaWVsZCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGhhc19kb3VibGVfYXJyYXlfdGFnIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIEV4cG9zZSBvbmUgZGlyZWN0aW9uIG9mIHRoZSBpc29tb3JwaGlzbSBiZXR3ZWVuIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGFuZCBhIHZhbHVlIG9mXG4gICAgICAgdHlwZSBbJ2EgZmllbGRzXS4gQmFzaWNhbGx5LCBnaXZlbiBhbiBlbmNvZGluZyB3YXkgb2YgYWNjZXNzaW5nIHRoZSB2YWx1ZSBvZiBhbGxcbiAgICAgICB0aGUgZmllbGRzIG9mIGEgcmVjb3JkLCBjcmVhdGUgdGhhdCByZWNvcmQgYW5kIHJldHVybiBpdC5cbiAgICAqKVxuICAgIHZhbCBjcmVhdGUgOiAnYSB0IC0+ICdhIGZpZWxkcyAtPiAnYVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgZmllbGQgLT4gJ2FjYykgLT4gJ2FjY1xuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogJ2EgUmVjb3JkX2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlY29yZF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC5maWVsZHNcbiAgICBsZXQgZmllbGQgdCBpbmRleCA9IHQuZmllbGRzLihpbmRleClcbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgdCA9IHQuaGFzX2RvdWJsZV9hcnJheV90YWdcbiAgICBsZXQgY3JlYXRlIHQgPSB0LmNyZWF0ZVxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBBcnJheS5mb2xkX2xlZnQgZiBpbml0IHQuZmllbGRzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVwID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVwXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgTmFtZV9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZW5hbWVfb2ZfaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9pbnQzMiA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50MzJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50MzJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDY0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQ2NFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQ2NFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfbmF0aXZlaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBuYXRpdmVpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwibmF0aXZlaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9jaGFyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImNoYXJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Zsb2F0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJmbG9hdFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2Zfc3RyaW5nID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICBsZXQgbmFtZSA9IFwic3RyaW5nXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9ieXRlcyA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYnl0ZXNcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Jvb2wgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGJvb2xcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYm9vbFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdW5pdCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJ1bml0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIG1vZHVsZSBNX29wdGlvbiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gICAgICBsZXQgbmFtZSA9IFwib3B0aW9uXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX29wdGlvbiA9IE1fb3B0aW9uLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9saXN0ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGlzdFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9saXN0ID0gTV9saXN0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9hcnJheSA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbiAgICAgIGxldCBuYW1lID0gXCJhcnJheVwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9hcnJheSA9IE1fYXJyYXkudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xhenlfdCA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGF6eV90XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xhenlfdCA9IE1fbGF6eV90LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9yZWYgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZWZcblxuICAgICAgbGV0IG5hbWUgPSBcInJlZlwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9yZWYgPSBNX3JlZi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fZnVuY3Rpb24gPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAtPiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwiZnVuY3Rpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfZnVuY3Rpb24gPSBNX2Z1bmN0aW9uLnR5cGVuYW1lX29mX3RcblxuICB0eXBlIHR1cGxlMCA9IHVuaXRcblxuICBtb2R1bGUgTV90dXBsZTAgPSBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB0dXBsZTBcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlMFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTAgPSBNX3R1cGxlMC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGUyID0gVHlwZW5hbWUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgKiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUyXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMiA9IE1fdHVwbGUyLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTMgPSBUeXBlbmFtZS5NYWtlMyAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTNcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUzID0gTV90dXBsZTMudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlNCA9IFR5cGVuYW1lLk1ha2U0IChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgKiAnYiAqICdjICogJ2RcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlNFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTQgPSBNX3R1cGxlNC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU1ID0gVHlwZW5hbWUuTWFrZTUgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZVxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU1XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNSA9IE1fdHVwbGU1LnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgcmVjIFR5cGVyZXAgOiBzaWdcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICB2YWwgYXJpdHkgOiBfIHQgLT4gaW50XG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgICB2YWwgbmFtZSA6IF8gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlIDogc2lnXG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoYXQgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVHlwZXJlcC50XG5cbiAgdmFsIHNhbWUgOiBfIHQgLT4gXyB0IC0+IGJvb2xcbiAgdmFsIHNhbWVfd2l0bmVzcyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG4gIHZhbCBzYW1lX3dpdG5lc3NfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudFxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICB2YWwgaGVhZCA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0ID1cbiAgICB8IEludCA6IGludCB0XG4gICAgfCBJbnQzMiA6IGludDMyIHRcbiAgICB8IEludDY0IDogaW50NjQgdFxuICAgIHwgTmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB8IENoYXIgOiBjaGFyIHRcbiAgICB8IEZsb2F0IDogZmxvYXQgdFxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJ5dGVzIDogYnl0ZXMgdFxuICAgIHwgQm9vbCA6IGJvb2wgdFxuICAgIHwgVW5pdCA6IHVuaXQgdFxuICAgIHwgT3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHwgTGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgfCBBcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICAgIHwgTGF6eSA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgICB8IFJlZiA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgICB8IEZ1bmN0aW9uIDogKCdkb20gdCAqICdybmcgdCkgLT4gKCdkb20gLT4gJ3JuZykgdFxuICAgIHwgVHVwbGUgOiAnYSBUeXBlcmVwLlR1cGxlLnQgLT4gJ2EgdFxuICAgIHwgUmVjb3JkIDogJ2EgVHlwZXJlcC5SZWNvcmQudCAtPiAnYSB0XG4gICAgfCBWYXJpYW50IDogJ2EgVHlwZXJlcC5WYXJpYW50LnQgLT4gJ2EgdFxuICAgIHwgTmFtZWQgOiAoJ2EgVHlwZXJlcC5OYW1lZC50ICogJ2EgdCBsYXp5X3Qgb3B0aW9uKSAtPiAnYSB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogJ2EgdCAtPiBwYWNrZWRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBUMCA9IHNpZ1xuICAgICAgdHlwZSBuYW1lZFxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6IG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICAgICAgdHlwZSAnYSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIGEgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDIgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdiIFR5cGVuYW1lLnQgLT4gKCdhLCAnYikgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMyA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNCA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDUgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZVxuXG4gICAgICB2YWwgZSA6IGUgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkLCBlKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICAoKiB0aGVyZSB0aGUgbW9kdWxlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdHlwZSBbdF0gd2l0aFxuICAgICAgIHBhcmFtZXRlcnMgd2hvc2Uga2luZCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIHR5cGUgdmFyaWFibGU6IFsnYSAndF0sIGV2ZW4gd2l0aFxuICAgICAgIGEgZ2FkdC4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBUMCBvZiAobW9kdWxlIFQwIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQxIG9mIChtb2R1bGUgVDEgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDIgb2YgKG1vZHVsZSBUMiB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMyBvZiAobW9kdWxlIFQzIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ0IG9mIChtb2R1bGUgVDQgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDUgb2YgKG1vZHVsZSBUNSB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IGFyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgVDAgXyAtPiAwXG4gICAgICB8IFQxIF8gLT4gMVxuICAgICAgfCBUMiBfIC0+IDJcbiAgICAgIHwgVDMgXyAtPiAzXG4gICAgICB8IFQ0IF8gLT4gNFxuICAgICAgfCBUNSBfIC0+IDVcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgKHR5cGUgYSkgPSBmdW5jdGlvblxuICAgICAgfCBUMCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMiByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMiB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMyByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgbmFtZSByZXAgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkICh0eXBlbmFtZV9vZl90IHJlcCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBUdXBsZSA9IHN0cnVjdFxuICAgICgqIHRoZXNlIGNvbnN0cnVjdG9ycyBjb3VsZCBiZSBwbHVuZ2VkIGF0IHRvcGxldmVsIG9mIFR5cGVyZXAudCwgaG93ZXZlciBpdCBpcyBsZXNzXG4gICAgICAgdmVyYm9zZSB0aGlzIHdheSAqKVxuICAgIHR5cGUgXyB0ID1cbiAgICAgIHwgVDIgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYikgdFxuICAgICAgfCBUMyA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQpIC0+ICgnYSAqICdiICogJ2MpIHRcbiAgICAgIHwgVDQgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gICAgICB8IFQ1IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50ICogJ2UgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG5cbiAgICBsZXQgYXJpdHkgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIF8gLT4gMlxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQzIF8gLT4gM1xuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ0IF8gLT4gNFxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA6IHR5cGUgYS4gYSB0IC0+IGEgVHlwZW5hbWUudCA9IGZ1bmN0aW9uXG4gICAgICB8IFQyIChhLCBiKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlMiAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgIHwgVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUzXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICB8IFQ0IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlNFxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZClcbiAgICAgIHwgVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU1XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZSlcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5cbiAgbGV0IHJlYyB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICB8IEludCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludFxuICAgIHwgSW50MzIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQzMlxuICAgIHwgSW50NjQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQ2NFxuICAgIHwgTmF0aXZlaW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgfCBDaGFyIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfY2hhclxuICAgIHwgRmxvYXQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9mbG9hdFxuICAgIHwgU3RyaW5nIC0+IE5hbWVfb2YudHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgfCBCeXRlcyAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2J5dGVzXG4gICAgfCBCb29sIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYm9vbFxuICAgIHwgVW5pdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3VuaXRcbiAgICB8IE9wdGlvbiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9vcHRpb24gKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGlzdCByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9saXN0ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IEFycmF5IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2FycmF5ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IExhenkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbGF6eV90ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IFJlZiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9yZWYgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgRnVuY3Rpb24gKGRvbSwgcm5nKSAtPlxuICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl9mdW5jdGlvbiAodHlwZW5hbWVfb2ZfdCBkb20pICh0eXBlbmFtZV9vZl90IHJuZylcbiAgICB8IFR1cGxlIHJlcCAtPiBUeXBlcmVwLlR1cGxlLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBSZWNvcmQgcmVwIC0+IFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBWYXJpYW50IHJlcCAtPiBUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiBOYW1lZC50eXBlbmFtZV9vZl90IG5hbWVcbiAgOztcblxuICBsZXQgcmVjIHNhbWVfd2l0bmVzcyA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBUeXBlX2VxdWFsLnQgb3B0aW9uID1cbiAgICBmdW4gdDEgdDIgLT5cbiAgICAgIGxldCBtb2R1bGUgRSA9IFR5cGVfZXF1YWwgaW5cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IE5hbWVkIChuYW1lMSwgcjEpLCBOYW1lZCAobmFtZTIsIHIyKSAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUxKSAoTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lMilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHIxLCByMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGxhenkgdDEpLCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIE5vbmUgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmUpKVxuICAgICAgfCBOYW1lZCAoXywgcjEpLCB0MiAtPlxuICAgICAgICAobWF0Y2ggcjEgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQxKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCB0MSwgTmFtZWQgKF8sIHIyKSAtPlxuICAgICAgICAobWF0Y2ggcjIgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBJbnQsIEludCAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQzMiwgSW50MzIgLT4gU29tZSBFLlRcbiAgICAgIHwgSW50NjQsIEludDY0IC0+IFNvbWUgRS5UXG4gICAgICB8IE5hdGl2ZWludCwgTmF0aXZlaW50IC0+IFNvbWUgRS5UXG4gICAgICB8IENoYXIsIENoYXIgLT4gU29tZSBFLlRcbiAgICAgIHwgRmxvYXQsIEZsb2F0IC0+IFNvbWUgRS5UXG4gICAgICB8IFN0cmluZywgU3RyaW5nIC0+IFNvbWUgRS5UXG4gICAgICB8IEJ5dGVzLCBCeXRlcyAtPiBTb21lIEUuVFxuICAgICAgfCBCb29sLCBCb29sIC0+IFNvbWUgRS5UXG4gICAgICB8IFVuaXQsIFVuaXQgLT4gU29tZSBFLlRcbiAgICAgIHwgT3B0aW9uIHIxLCBPcHRpb24gcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGlzdCByMSwgTGlzdCByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBBcnJheSByMSwgQXJyYXkgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGF6eSByMSwgTGF6eSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBSZWYgcjEsIFJlZiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBGdW5jdGlvbiAoZG9tMSwgcm5nMSksIEZ1bmN0aW9uIChkb20yLCBybmcyKSAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGRvbTEgZG9tMiwgc2FtZV93aXRuZXNzIHJuZzEgcm5nMiB3aXRoXG4gICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgfCBUdXBsZSB0MSwgVHVwbGUgdDIgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gVHlwZXJlcC5UdXBsZSBpblxuICAgICAgICAobWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgIHwgVC5UMiAoYTEsIGIxKSwgVC5UMiAoYTIsIGIyKSAtPlxuICAgICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UMyAoYTEsIGIxLCBjMSksIFQuVDMgKGEyLCBiMiwgYzIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiwgc2FtZV93aXRuZXNzIGMxIGMyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNCAoYTEsIGIxLCBjMSwgZDEpLCBULlQ0IChhMiwgYjIsIGMyLCBkMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIsIHNhbWVfd2l0bmVzcyBkMSBkMlxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfLCBfIHwgXywgTm9uZSwgXywgXyB8IF8sIF8sIE5vbmUsIF8gfCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDUgKGExLCBiMSwgYzEsIGQxLCBlMSksIFQuVDUgKGEyLCBiMiwgYzIsIGQyLCBlMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICggc2FtZV93aXRuZXNzIGExIGEyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGIxIGIyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGMxIGMyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGUxIGUyIClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8sIF9cbiAgICAgICAgICAgIHwgXywgTm9uZSwgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBfLCBOb25lLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIF8sIE5vbmUsIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQyIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQzIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ0IF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ1IF8sIF8gLT4gTm9uZSlcbiAgICAgIHwgUmVjb3JkIHIxLCBSZWNvcmQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjIpXG4gICAgICB8IFZhcmlhbnQgcjEsIFZhcmlhbnQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIxKVxuICAgICAgICAgIChUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgSW50LCBfIC0+IE5vbmVcbiAgICAgIHwgSW50MzIsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQ2NCwgXyAtPiBOb25lXG4gICAgICB8IE5hdGl2ZWludCwgXyAtPiBOb25lXG4gICAgICB8IENoYXIsIF8gLT4gTm9uZVxuICAgICAgfCBGbG9hdCwgXyAtPiBOb25lXG4gICAgICB8IFN0cmluZywgXyAtPiBOb25lXG4gICAgICB8IEJ5dGVzLCBfIC0+IE5vbmVcbiAgICAgIHwgQm9vbCwgXyAtPiBOb25lXG4gICAgICB8IFVuaXQsIF8gLT4gTm9uZVxuICAgICAgfCBPcHRpb24gXywgXyAtPiBOb25lXG4gICAgICB8IExpc3QgXywgXyAtPiBOb25lXG4gICAgICB8IEFycmF5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBMYXp5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWYgXywgXyAtPiBOb25lXG4gICAgICB8IEZ1bmN0aW9uIF8sIF8gLT4gTm9uZVxuICAgICAgfCBUdXBsZSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgUmVjb3JkIF8sIF8gLT4gTm9uZVxuICAgICAgfCBWYXJpYW50IF8sIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lIGEgYiA9IHNhbWVfd2l0bmVzcyBhIGIgPD4gTm9uZVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIGEgYiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIGEgYiB3aXRoXG4gICAgfCBTb21lIHByb29mIC0+IHByb29mXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCByZWMgaGVhZCA9IGZ1bmN0aW9uXG4gICAgfCBUeXBlcmVwLk5hbWVkIChfLCBTb21lIChsYXp5IHQpKSAtPiBoZWFkIHRcbiAgICB8IHQgLT4gdFxuICA7O1xuZW5kXG5cbmxldCB0eXBlcmVwX29mX2ludCA9IFR5cGVyZXAuSW50XG5sZXQgdHlwZXJlcF9vZl9pbnQzMiA9IFR5cGVyZXAuSW50MzJcbmxldCB0eXBlcmVwX29mX2ludDY0ID0gVHlwZXJlcC5JbnQ2NFxubGV0IHR5cGVyZXBfb2ZfbmF0aXZlaW50ID0gVHlwZXJlcC5OYXRpdmVpbnRcbmxldCB0eXBlcmVwX29mX2NoYXIgPSBUeXBlcmVwLkNoYXJcbmxldCB0eXBlcmVwX29mX2Zsb2F0ID0gVHlwZXJlcC5GbG9hdFxubGV0IHR5cGVyZXBfb2Zfc3RyaW5nID0gVHlwZXJlcC5TdHJpbmdcbmxldCB0eXBlcmVwX29mX2J5dGVzID0gVHlwZXJlcC5CeXRlc1xubGV0IHR5cGVyZXBfb2ZfYm9vbCA9IFR5cGVyZXAuQm9vbFxubGV0IHR5cGVyZXBfb2ZfdW5pdCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2Zfb3B0aW9uIHJlcCA9IFR5cGVyZXAuT3B0aW9uIHJlcFxubGV0IHR5cGVyZXBfb2ZfbGlzdCByZXAgPSBUeXBlcmVwLkxpc3QgcmVwXG5sZXQgdHlwZXJlcF9vZl9hcnJheSByZXAgPSBUeXBlcmVwLkFycmF5IHJlcFxubGV0IHR5cGVyZXBfb2ZfbGF6eV90IHJlcCA9IFR5cGVyZXAuTGF6eSByZXBcbmxldCB0eXBlcmVwX29mX3JlZiByZXAgPSBUeXBlcmVwLlJlZiByZXBcbmxldCB0eXBlcmVwX29mX2Z1bmN0aW9uIGRvbSBybmcgPSBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZylcbmxldCB0eXBlcmVwX29mX3R1cGxlMCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2ZfdHVwbGUyIGEgYiA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUzIGEgYiBjID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTQgYSBiIGMgZCA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGU1IGEgYiBjIGQgZSA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpKVxuXG5pbmNsdWRlIE5hbWVfb2ZcblxubGV0IHZhbHVlX3R1cGxlMCA9ICgpXG5cbmxldCB0eXBlcmVwX29mX2ludDYzLCB0eXBlbmFtZV9vZl9pbnQ2MyA9XG4gIGxldCB0eXBlcmVwX2FuZF90eXBlbmFtZV9vZl9pbnQ2M19yZXByXG4gICAgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYSBUeXBlcmVwLnQgKiBhIFR5cGVuYW1lLnRcbiAgICA9IGZ1bmN0aW9uXG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiB0eXBlcmVwX29mX2ludCwgdHlwZW5hbWVfb2ZfaW50XG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IHR5cGVyZXBfb2ZfaW50NjQsIHR5cGVuYW1lX29mX2ludDY0XG4gIGluXG4gIHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcbjs7XG4iLCIoKiB1c2luZyB0aGUgaGFzaF92YXJpYW50IG9mIHBhX3R5cGVfY29udiBhdCBjb21waWxlIHRpbWUgKilcbmxldCByZXByX29mX3BvbHlfdmFyaWFudCA6IFs+IF0gLT4gaW50ID1cbiAgZnVuIHZhcmlhbnQgLT5cbiAgbGV0IG9iaiA9IE9iai5yZXByIHZhcmlhbnQgaW5cbiAgaWYgT2JqLmlzX2ludCBvYmpcbiAgdGhlbiBPYmoub2JqIG9ialxuICBlbHNlIChcbiAgICBsZXQgc2l6ZSA9IE9iai5zaXplIG9iaiBpblxuICAgIGFzc2VydCAoc2l6ZSA9IDIpO1xuICAgIGxldCByZXByID0gT2JqLmZpZWxkIG9iaiAwIGluXG4gICAgYXNzZXJ0IChPYmouaXNfaW50IHJlcHIpO1xuICAgIE9iai5vYmogcmVwcilcbjs7XG5cbmxldCBoYXNoX3ZhcmlhbnQgcyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9ICgyMjMgKiAhYWNjdSkgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgoMSBsc2wgMzEpIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3Vcbjs7XG5cbigqIGEgZmV3IHVuaXQgdGVzdHMgb2YgY2FzZXMgdGhhdCBoYXZlIHRyaWdnZXJlZCBkaWZmcyBpbiB0aGUgcGFzdCBvZiB0aGlzXG4gICBsaWIgKilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYExhdGVuY3lfc3RhdHMgPSBoYXNoX3ZhcmlhbnQgXCJMYXRlbmN5X3N0YXRzXCIpXG5sZXQgKCkgPSBhc3NlcnQgKHJlcHJfb2ZfcG9seV92YXJpYW50IGB6ZXJvID0gaGFzaF92YXJpYW50IFwiemVyb1wiKVxubGV0IGRvdWJsZV9hcnJheV92YWx1ZSA9IE9iai5tYWdpYyAwLlxubGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIGEgPSBPYmouZG91YmxlX2FycmF5X3RhZyA9IE9iai50YWcgKE9iai5yZXByIGEpXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgZG91YmxlID1cbiAgICAgIHsgYSA6IGZsb2F0XG4gICAgICA7IGIgOiBmbG9hdFxuICAgICAgfVxuXG4gICAgdHlwZSBzaW1wbGUgPVxuICAgICAgeyBjIDogZmxvYXRcbiAgICAgIDsgZCA6IGludFxuICAgICAgfVxuXG4gICAgbGV0IGRvdWJsZSA9IHsgYSA9IGRvdWJsZV9hcnJheV92YWx1ZTsgYiA9IGRvdWJsZV9hcnJheV92YWx1ZSB9XG4gICAgbGV0IHNpbXBsZSA9IHsgYyA9IGRvdWJsZV9hcnJheV92YWx1ZTsgZCA9IGRvdWJsZV9hcnJheV92YWx1ZSB9XG4gIGVuZFxuICBpblxuICBhc3NlcnQgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uZG91YmxlKTtcbiAgYXNzZXJ0IChub3QgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uc2ltcGxlKSlcbjs7XG4iLCJtb2R1bGUgTSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gKCdhLCAnYikgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAoJ2EsICdiLCAnYykgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAnZCBYLnQgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgWC50XG4gICAgICAtPiAnYiBYLnRcbiAgICAgIC0+ICdjIFgudFxuICAgICAgLT4gJ2QgWC50XG4gICAgICAtPiAnZSBYLnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgWC50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZiA9IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmXG5cbm1vZHVsZSBIZWxwZXIgKEEgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSAoQiA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpID0gc3RydWN0XG4gIHR5cGUgbWFwID0geyBtYXAgOiAnYS4gJ2EgQS50IC0+ICdhIEIudCB9XG5cbiAgbGV0IG1hcF92YXJpYW50ICh0eXBlIHZhcmlhbnQpIHsgbWFwIH0gKHZhcmlhbnQgOiB2YXJpYW50IEEuVmFyaWFudC50KSA9XG4gICAgbGV0IG1hcF9jcmVhdGUgPSBmdW5jdGlvblxuICAgICAgfCBBLlRhZy5BcmdzIGZjdCAtPiBCLlRhZ19pbnRlcm5hbC5BcmdzIGZjdFxuICAgICAgfCBBLlRhZy5Db25zdCBrIC0+IEIuVGFnX2ludGVybmFsLkNvbnN0IGtcbiAgICBpblxuICAgIGxldCBtYXBfdGFnIHRhZyA9XG4gICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVGFnIHRhZyAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLlRhZy5sYWJlbCB0YWcgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5UYWcudHJhdmVyc2UgdGFnKSBpblxuICAgICAgICBsZXQgYXJpdHkgPSBBLlRhZy5hcml0eSB0YWcgaW5cbiAgICAgICAgbGV0IGFyZ3NfbGFiZWxzID0gQS5UYWcuYXJnc19sYWJlbHMgdGFnIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuVGFnLmluZGV4IHRhZyBpblxuICAgICAgICBsZXQgb2NhbWxfcmVwciA9IEEuVGFnLm9jYW1sX3JlcHIgdGFnIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5UYWcudHlpZCB0YWcgaW5cbiAgICAgICAgbGV0IGNyZWF0ZSA9IG1hcF9jcmVhdGUgKEEuVGFnLmNyZWF0ZSB0YWcpIGluXG4gICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5UYWdcbiAgICAgICAgICAoQi5UYWcuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuVGFnX2ludGVybmFsLmxhYmVsXG4gICAgICAgICAgICAgOyByZXBcbiAgICAgICAgICAgICA7IGFyaXR5XG4gICAgICAgICAgICAgOyBhcmdzX2xhYmVsc1xuICAgICAgICAgICAgIDsgaW5kZXhcbiAgICAgICAgICAgICA7IG9jYW1sX3JlcHJcbiAgICAgICAgICAgICA7IHR5aWRcbiAgICAgICAgICAgICA7IGNyZWF0ZVxuICAgICAgICAgICAgIH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50IGluXG4gICAgbGV0IHBvbHltb3JwaGljID0gQS5WYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQgaW5cbiAgICBsZXQgdGFncyA9XG4gICAgICBBcnJheS5pbml0IChBLlZhcmlhbnQubGVuZ3RoIHZhcmlhbnQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX3RhZyAoQS5WYXJpYW50LnRhZyB2YXJpYW50IGluZGV4KSlcbiAgICBpblxuICAgIGxldCB2YWx1ZSAoYSA6IHZhcmlhbnQpID1cbiAgICAgIG1hdGNoIEEuVmFyaWFudC52YWx1ZSB2YXJpYW50IGEgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVmFsdWUgKGF0YWcsIGEpIC0+XG4gICAgICAgIChmdW4gKHR5cGUgYXJncykgKGF0YWcgOiAodmFyaWFudCwgYXJncykgQS5UYWcudCkgKGEgOiBhcmdzKSAtPlxuICAgICAgICAgICBsZXQgKEIuVmFyaWFudF9pbnRlcm5hbC5UYWcgYnRhZykgPSB0YWdzLihBLlRhZy5pbmRleCBhdGFnKSBpblxuICAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYnRhZyA6ICh2YXJpYW50LCBleCkgQi5UYWcudCkgLT5cbiAgICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5UYWcudHlpZCBhdGFnKSAoQi5UYWcudHlpZCBidGFnKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYnRhZyA9IChidGFnIDogKHZhcmlhbnQsIGFyZ3MpIEIuVGFnLnQpIGluXG4gICAgICAgICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5WYWx1ZSAoYnRhZywgYSkpXG4gICAgICAgICAgICAgYnRhZylcbiAgICAgICAgICBhdGFnXG4gICAgICAgICAgYVxuICAgIGluXG4gICAgQi5WYXJpYW50LmludGVybmFsX3VzZV9vbmx5IHsgQi5WYXJpYW50X2ludGVybmFsLnR5cGVuYW1lOyB0YWdzOyBwb2x5bW9ycGhpYzsgdmFsdWUgfVxuICA7O1xuXG4gIGxldCBtYXBfcmVjb3JkICh0eXBlIHJlY29yZCkgeyBtYXAgfSAocmVjb3JkIDogcmVjb3JkIEEuUmVjb3JkLnQpID1cbiAgICBsZXQgbWFwX2ZpZWxkIGZpZWxkID1cbiAgICAgIG1hdGNoIGZpZWxkIHdpdGhcbiAgICAgIHwgQS5SZWNvcmQuRmllbGQgZmllbGQgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5GaWVsZC5sYWJlbCBmaWVsZCBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLkZpZWxkLnRyYXZlcnNlIGZpZWxkKSBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLkZpZWxkLmluZGV4IGZpZWxkIGluXG4gICAgICAgIGxldCBpc19tdXRhYmxlID0gQS5GaWVsZC5pc19tdXRhYmxlIGZpZWxkIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5GaWVsZC50eWlkIGZpZWxkIGluXG4gICAgICAgIGxldCBnZXQgPSBBLkZpZWxkLmdldCBmaWVsZCBpblxuICAgICAgICBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZFxuICAgICAgICAgIChCLkZpZWxkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLkZpZWxkX2ludGVybmFsLmxhYmVsOyByZXA7IGluZGV4OyBpc19tdXRhYmxlOyB0eWlkOyBnZXQgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVjb3JkIGluXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnID0gQS5SZWNvcmQuaGFzX2RvdWJsZV9hcnJheV90YWcgcmVjb3JkIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBBcnJheS5pbml0IChBLlJlY29yZC5sZW5ndGggcmVjb3JkKSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF9maWVsZCAoQS5SZWNvcmQuZmllbGQgcmVjb3JkIGluZGV4KSlcbiAgICBpblxuICAgIGxldCBjcmVhdGUgeyBCLlJlY29yZF9pbnRlcm5hbC5nZXQgfSA9XG4gICAgICBsZXQgZ2V0ICh0eXBlIGEpIChhZmllbGQgOiAoXywgYSkgQS5GaWVsZC50KSA9XG4gICAgICAgIG1hdGNoIGZpZWxkcy4oQS5GaWVsZC5pbmRleCBhZmllbGQpIHdpdGhcbiAgICAgICAgfCBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZCBiZmllbGQgLT5cbiAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYmZpZWxkIDogKHJlY29yZCwgZXgpIEIuRmllbGQudCkgLT5cbiAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuRmllbGQudHlpZCBhZmllbGQpIChCLkZpZWxkLnR5aWQgYmZpZWxkKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGJmaWVsZCA9IChiZmllbGQgOiAocmVjb3JkLCBhKSBCLkZpZWxkLnQpIGluXG4gICAgICAgICAgICAgZ2V0IGJmaWVsZClcbiAgICAgICAgICAgIGJmaWVsZFxuICAgICAgaW5cbiAgICAgIEEuUmVjb3JkLmNyZWF0ZSByZWNvcmQgeyBBLlJlY29yZC5nZXQgfVxuICAgIGluXG4gICAgQi5SZWNvcmQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgIHsgQi5SZWNvcmRfaW50ZXJuYWwudHlwZW5hbWU7IGZpZWxkczsgaGFzX2RvdWJsZV9hcnJheV90YWc7IGNyZWF0ZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgTmFtZWQgPSBzaWdcbiAgdHlwZSAnYSBjb21wdXRhdGlvblxuXG4gIG1vZHVsZSBDb250ZXh0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBpbml0IDogQ29udGV4dC50IC0+ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgZ2V0X3dpcF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNldF9maW5hbF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNoYXJlIDogXyBUeXBlcmVwLnQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXB1dGF0aW9uID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGludCA6IGludCB0XG4gIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgdmFsIGludDY0IDogaW50NjQgdFxuICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICB2YWwgYm9vbCA6IGJvb2wgdFxuICB2YWwgdW5pdCA6IHVuaXQgdFxuICB2YWwgb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICB2YWwgbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBhcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICB2YWwgbGF6eV90IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICB2YWwgcmVmXyA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgdmFsIGZ1bmN0aW9uXyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgLT4gJ2IpIHRcbiAgdmFsIHR1cGxlMiA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHVwbGUzIDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gKCdhICogJ2IgKiAnYykgdFxuICB2YWwgdHVwbGU0IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgdmFsIHR1cGxlNSA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gJ2UgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuICB2YWwgcmVjb3JkIDogJ2EgUmVjb3JkLnQgLT4gJ2EgdFxuICB2YWwgdmFyaWFudCA6ICdhIFZhcmlhbnQudCAtPiAnYSB0XG5cbiAgbW9kdWxlIE5hbWVkIDogTmFtZWQgd2l0aCB0eXBlICdhIGNvbXB1dGF0aW9uIDo9ICdhIHRcbmVuZFxuXG4oKiBzcGVjaWFsIGZ1bmN0b3IgYXBwbGljYXRpb24gZm9yIGNvbXB1dGF0aW9uIGFzIGNsb3N1cmUgb2YgdGhlIGZvcm0gW2EgLT4gYl0gKilcbm1vZHVsZSBNYWtlX25hbWVkX2Zvcl9jbG9zdXJlIChYIDogc2lnXG4gICAgdHlwZSAnYSBpbnB1dFxuICAgIHR5cGUgJ2Egb3V0cHV0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaW5wdXQgLT4gJ2Egb3V0cHV0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGlnbm9yZVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudFxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgOiAnYSBYLnQgcmVmXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudCBvcHRpb24gcmVmXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IGluaXQgKCkgbmFtZSA9XG4gICAgbGV0IHBhdGggPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIG5hbWUpIGluXG4gICAgbGV0IHIgPSByZWYgKGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWQgcGF0aCkpIGluXG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlID0gKGZ1biBpbnB1dCAtPiAhciBpbnB1dClcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlID0gclxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSByZWYgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWQgPVxuICAgIG1hdGNoIHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIGNsb3MgLT4gY2xvc1xuICAgIHwgTm9uZSAtPiBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZVxuICA7O1xuXG4gIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uID1cbiAgICBsZXQgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgaW5cbiAgICBtYXRjaCBjb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBCYXNlLnBoeXNfZXF1YWwgc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2UgY29tcHV0YXRpb24gdGhlbiBhc3NlcnQgZmFsc2U7XG4gICAgICBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6PSBTb21lIGNvbXB1dGF0aW9uO1xuICAgICAgc2hhcmVkLnJ1bnRpbWVfcmVmZXJlbmNlIDo9IGNvbXB1dGF0aW9uO1xuICAgICAgY29tcHV0YXRpb25cbiAgOztcblxuICBsZXQgc2hhcmUgXyA9IHRydWVcbmVuZFxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGltcGxlbWVudHMgOiBUeXBlbmFtZS5VaWQudCAtPiBib29sXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBCcm9rZW5fZGVwZW5kZW5jeSBvZiBzdHJpbmdcblxuICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzIG5hbWUgcmVxdWlyZWQgPVxuICAgIG1hdGNoIHJlcXVpcmVkIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+ICgpXG4gICAgfCBfIC0+XG4gICAgICBmdW4gdWlkIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geyBuYW1lID0gbmFtZSc7IGltcGxlbWVudHMgfSAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoaW1wbGVtZW50cyB1aWQpXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAoKiBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgc2V0IHVwLCB0aGlzIGlzIGFuIGVycm9yIGR1cmluZyB0aGVcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwcm9ncmFtLCB3ZSByYXRoZXIgZmFpbCB3aXRoIGEgaHVtYW5cbiAgICAgICAgICAgICAgICAgIHJlYWRhYmxlIG91dHB1dCAqKVxuICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiVHlwZV9nZW5lcmljICVTIHJlcXVpcmVzICVTIGZvciB1aWQgJVNcXG5cIlxuICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICBuYW1lJ1xuICAgICAgICAgICAgICAgICAgIChUeXBlbmFtZS5VaWQubmFtZSB1aWQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcHJlcnJfZW5kbGluZSBtZXNzYWdlO1xuICAgICAgICAgICAgICAgcmFpc2UgKEJyb2tlbl9kZXBlbmRlbmN5IG1lc3NhZ2UpKSlcbiAgICAgICAgICByZXF1aXJlZFxuICA7O1xuZW5kXG5cbigqIEV4dGVuZGluZyBhbiBleGlzdGluZyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBFeHRlbmRpbmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgdmFsIGlkZW50IDogSWRlbnQudFxuXG4gICgqIGdlbmVyaWNfaWRlbnQgKiB0eXBlbmFtZSBvciBpbmZvICopXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdhIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYiBjb21wdXRhdGlvbiAtPiAoJ2EsICdiKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICdlIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIHZhbCByZWdpc3RlcjAgOiAobW9kdWxlIFMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMSA6IChtb2R1bGUgUzEpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMiA6IChtb2R1bGUgUzIpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMyA6IChtb2R1bGUgUzMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNCA6IChtb2R1bGUgUzQpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNSA6IChtb2R1bGUgUzUpIC0+IHVuaXRcblxuICAoKiBzcGVjaWFsIGxlc3Mgc2NhcnkgdHlwZSB3aGVuIHRoZSB0eXBlIGhhcyBubyBwYXJhbWV0ZXJzICopXG4gIHZhbCByZWdpc3RlciA6ICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiAtPiB1bml0XG5cbiAgKCpcbiAgICAgRXNzZW50aWFsbHkgYmVjYXVzZSB3ZSBjYW5ub3QgdGFsayBhYm91dCBhIHZhcmlhYmxlIG9mIGtpbmQgKiAtPiBrXG4gICAgIHZhbCByZWdpc3RlcjEgOiAnYSAndCBUeXBlcmVwLnQgLT4gKCdhIGNvbXB1dGF0aW9uIC0+ICdhICd0IGNvbXB1dGF0aW9uKSAtPiB1bml0XG4gICAgIC4uLlxuICAqKVxuZW5kXG5cbigqIEltcGxlbWVudGluZyBhIG5ldyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBTX2ltcGxlbWVudGF0aW9uID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgKCogcmFpc2UgdXNpbmcgdGhlIGN1cnJlbnQgaWRlbnQgKilcbiAgdmFsIHJhaXNlX25vdF9pbXBsZW1lbnRlZCA6IHN0cmluZyAtPiAnYVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICAoKlxuICAgICBTdGFuZGFyZCBjYXNlLCBmaW5kIGEgZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24sIG9yIGxvb2sgaW4gdGhlIGNvbnRlbnRcbiAgKilcbiAgdmFsIF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgVHlwZXJlcC50IGxhenlfdCBvcHRpb25cbiAgICAtPiAnYSBjb21wdXRhdGlvblxuXG4gICgqXG4gICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSBtb3JlIGNvbnRyb2wgb24gd2hhdCB5b3Ugd2FudCB0byBkb1xuICAqKVxuICB2YWwgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgY29tcHV0YXRpb24gb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gIHZhbCBvZl90eXBlcmVwIDogJ2EgVHlwZXJlcC50IC0+IFsgYGdlbmVyaWMgb2YgJ2EgY29tcHV0YXRpb24gXVxuXG4gIG1vZHVsZSBDb21wdXRhdGlvbiA6IENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG4gIGVuZCkgOiBTX2ltcGxlbWVudGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFgudFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcblxuICAoKiB3ZSBkbyBub3QgdXNlIGNvcmUgc2luY2Ugd2UgYXJlIGVhcmxpZXIgaW4gdGhlIGRlcGVuZGVuY2llcyBncmFwaCAqKVxuICBtb2R1bGUgVWlkX3RhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLlVpZClcblxuICAgIGxldCBmaW5kIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgdHJ5IFNvbWUgKGZpbmQgdGFibGUga2V5KSB3aXRoXG4gICAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzID0gSWRlbnQuY2hlY2tfZGVwZW5kZW5jaWVzIFgubmFtZSBYLnJlcXVpcmVkXG5cbiAgICBsZXQgcmVwbGFjZSB0YWJsZSBrZXkgdmFsdWUgPVxuICAgICAgY2hlY2tfZGVwZW5kZW5jaWVzIGtleTtcbiAgICAgIHJlcGxhY2UgKExhenkuZm9yY2UgdGFibGUpIGtleSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbWVtIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgbWVtIHRhYmxlIGtleSlcbiAgICAgIGVsc2UgZmFsc2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2l6ZSA9IDI1NlxuICBsZXQgdGFibGUwID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUxID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUyID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUzID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU0ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU1ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuXG4gIGxldCBpc19yZWdpc3RlcmVkIHVpZCA9XG4gICAgVWlkX3RhYmxlLm1lbSB0YWJsZTAgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTEgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTIgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTMgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTQgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTUgdWlkXG4gIDs7XG5cbiAgbGV0IGlkZW50ID0geyBJZGVudC5uYW1lID0gWC5uYW1lOyBpbXBsZW1lbnRzID0gaXNfcmVnaXN0ZXJlZCB9XG5cbiAgbW9kdWxlIEZpbmQwIChUIDogVHlwZXJlcC5OYW1lZC5UMCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gVC5uYW1lZCBjb21wdXRhdGlvbiBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUwIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMgPSAodmFsIHJlcCA6IFMpIGluXG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biBTLnR5cGVuYW1lX29mX3QgVC50eXBlbmFtZV9vZl9uYW1lZCBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgd2l0bmVzcykgUy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMSAoVCA6IFR5cGVyZXAuTmFtZWQuVDEpIDogc2lnXG4gICAgdmFsIGNvbXB1dGUgOiB1bml0IC0+IChULmEgY29tcHV0YXRpb24gLT4gVC5hIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTEgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzEgPSAodmFsIHJlcCA6IFMxKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMVxuICAgICAgICAgICAgKFMxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMxLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQyIChUIDogVHlwZXJlcC5OYW1lZC5UMikgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUyIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMyID0gKHZhbCByZXAgOiBTMikgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzJcbiAgICAgICAgICAgIChTMilcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzIuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDMgKFQgOiBUeXBlcmVwLk5hbWVkLlQzKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTMgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIHJlcCA6IFMzKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fM1xuICAgICAgICAgICAgKFMzKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiBULmMgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNCAoVCA6IFR5cGVyZXAuTmFtZWQuVDQpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU0IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCByZXAgOiBTNCkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzRcbiAgICAgICAgICAgIChTNClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAoJ2EsICdiLCAnYywgJ2QpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzQuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDUgKFQgOiBUeXBlcmVwLk5hbWVkLlQ1KSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU1IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM1ID0gKHZhbCByZXAgOiBTNSkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzVcbiAgICAgICAgICAgIChTNSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzUuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdW5pdCA9IFR5cGVuYW1lLnN0YXRpY1xuXG4gIGxldCByZWdpc3RlcjAgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gKHZhbCBjb21wdXRlIDogUykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIFMudHlwZW5hbWVfb2ZfdCBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjEgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgY29tcHV0ZSA6IFMxKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMxLnR5cGVuYW1lX29mX3QgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTEgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIyIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIGNvbXB1dGUgOiBTMikgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMi50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTIgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIzIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIGNvbXB1dGUgOiBTMykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMy50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMyB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjQgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNCA9ICh2YWwgY29tcHV0ZSA6IFM0KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM0LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTQgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXI1IGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIGNvbXB1dGUgOiBTNSkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTNS50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTUgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIgKHR5cGUgYSkgdHlwZXJlcF9vZl9hIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwX29mX2FcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2FcbiAgICAgIGxldCBjb21wdXRlID0gY29tcHV0ZVxuICAgIGVuZFxuICAgIGluXG4gICAgcmVnaXN0ZXIwIChtb2R1bGUgUyA6IFMpXG4gIDs7XG5cbiAgKCogSU1QTEVNRU5UQVRJT04gKilcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgbGV0IGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gKHR5cGUgYSkgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQuVDAgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDAgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDEgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDEgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9IChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgOiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQyIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDIgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIDogKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQzIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDMgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQ0IHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDQgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpIChhdXguZ2VuZXJpYyBULmQpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDUgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDUgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b21cbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYSlcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYilcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZSlcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgcmFpc2Vfbm90X2ltcGxlbWVudGVkIHN0cmluZyA9IHJhaXNlIChOb3RfaW1wbGVtZW50ZWQgKFgubmFtZSwgc3RyaW5nKSlcblxuICBsZXQgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgY29udGVudCA9XG4gICAgbWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiBhdXggcmVwIHdpdGhcbiAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBjb250ZW50IHdpdGhcbiAgICAgICB8IFNvbWUgKGxhenkgY29udGVudCkgLT4gYXV4LmdlbmVyaWMgY29udGVudFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IHJlcCBpblxuICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWUpXG4gIDs7XG5lbmRcblxubW9kdWxlIF8gPSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLktleSlcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG5cbiAgICBpbmNsdWRlIENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbXB1dGF0aW9uID0gWFxuICBpbmNsdWRlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWClcblxuICBtb2R1bGUgTWVtbyA9IFR5cGVuYW1lLlRhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFguTmFtZWQudFxuICAgIGVuZClcblxuICBtb2R1bGUgSGVscGVyID0gSGVscGVyIChUeXBlcmVwKSAoQ29tcHV0YXRpb24pXG5cbiAgbGV0IG9mX3R5cGVyZXAgcmVwID1cbiAgICBsZXQgY29udGV4dCA9IFguTmFtZWQuQ29udGV4dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbWVtb190YWJsZSA9IE1lbW8uY3JlYXRlIDMyIGluXG4gICAgbGV0IHJlYyBvZl90eXBlcmVwIDogdHlwZSBhLiBhIFR5cGVyZXAudCAtPiBhIHQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLkludCAtPiBYLmludFxuICAgICAgfCBUeXBlcmVwLkludDMyIC0+IFguaW50MzJcbiAgICAgIHwgVHlwZXJlcC5JbnQ2NCAtPiBYLmludDY0XG4gICAgICB8IFR5cGVyZXAuTmF0aXZlaW50IC0+IFgubmF0aXZlaW50XG4gICAgICB8IFR5cGVyZXAuQ2hhciAtPiBYLmNoYXJcbiAgICAgIHwgVHlwZXJlcC5GbG9hdCAtPiBYLmZsb2F0XG4gICAgICB8IFR5cGVyZXAuU3RyaW5nIC0+IFguc3RyaW5nXG4gICAgICB8IFR5cGVyZXAuQnl0ZXMgLT4gWC5ieXRlc1xuICAgICAgfCBUeXBlcmVwLkJvb2wgLT4gWC5ib29sXG4gICAgICB8IFR5cGVyZXAuVW5pdCAtPiBYLnVuaXRcbiAgICAgIHwgVHlwZXJlcC5PcHRpb24gcmVwIC0+IFgub3B0aW9uIChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MaXN0IHJlcCAtPiBYLmxpc3QgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkFycmF5IHJlcCAtPiBYLmFycmF5IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MYXp5IHJlcCAtPiBYLmxhenlfdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuUmVmIHJlcCAtPiBYLnJlZl8gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZykgLT4gWC5mdW5jdGlvbl8gKG9mX3R5cGVyZXAgZG9tKSAob2ZfdHlwZXJlcCBybmcpXG4gICAgICB8IFR5cGVyZXAuVHVwbGUgdHVwbGUgLT5cbiAgICAgICAgKCogZG8gTk9UIHdyaXRlIFtYLnR1cGxlMiAob2ZfdHlwZXJlcCBhKSAob2ZfdHlwZXJlcCBiKV1cbiAgICAgICAgICAgYmVjYXVzZSBvZl90eXBlcmVwIGNhbiBjb250YWluIGEgc2lkZSBlZmZlY3QgYW5kIFthXSBzaG91bGQgYmUgZXhlY3V0ZWRcbiAgICAgICAgICAgYmVmb3JlIFtiXSAqKVxuICAgICAgICAobWF0Y2ggdHVwbGUgd2l0aFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIChhLCBiKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIFgudHVwbGUyIHJhIHJiXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIFgudHVwbGUzIHJhIHJiIHJjXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBYLnR1cGxlNCByYSByYiByYyByZFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBsZXQgcmQgPSBvZl90eXBlcmVwIGQgaW5cbiAgICAgICAgICAgbGV0IHJlID0gb2ZfdHlwZXJlcCBlIGluXG4gICAgICAgICAgIFgudHVwbGU1IHJhIHJiIHJjIHJkIHJlKVxuICAgICAgfCBUeXBlcmVwLlJlY29yZCByZWNvcmQgLT5cbiAgICAgICAgWC5yZWNvcmQgKEhlbHBlci5tYXBfcmVjb3JkIHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSByZWNvcmQpXG4gICAgICB8IFR5cGVyZXAuVmFyaWFudCB2YXJpYW50IC0+XG4gICAgICAgIFgudmFyaWFudCAoSGVscGVyLm1hcF92YXJpYW50IHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSB2YXJpYW50KVxuICAgICAgfCBUeXBlcmVwLk5hbWVkIChuYW1lZCwgY29udGVudCkgLT5cbiAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IG5hbWVkIGluXG4gICAgICAgIChtYXRjaCBNZW1vLmZpbmQgbWVtb190YWJsZSB0eXBlbmFtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgc2hhcmVkIC0+IFguTmFtZWQuZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWRcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiB7IGdlbmVyaWMgPSBvZl90eXBlcmVwIH0gbmFtZWQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGNvbXB1dGF0aW9uIC0+IGNvbXB1dGF0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIGxldCBuYW1lID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCB0eXBlbmFtZSkgaW5cbiAgICAgICAgICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWVcbiAgICAgICAgICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPlxuICAgICAgICAgICAgICAgICBpZiBYLk5hbWVkLnNoYXJlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IHNoYXJlZCA9IFguTmFtZWQuaW5pdCBjb250ZXh0IHR5cGVuYW1lIGluXG4gICAgICAgICAgICAgICAgICAgTWVtby5zZXQgbWVtb190YWJsZSB0eXBlbmFtZSBzaGFyZWQ7XG4gICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCBjb250ZW50IGluXG4gICAgICAgICAgICAgICAgICAgWC5OYW1lZC5zZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICAgICAgICBlbHNlIG9mX3R5cGVyZXAgY29udGVudCkpKVxuICAgIGluXG4gICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCByZXAgaW5cbiAgICBgZ2VuZXJpYyBjb21wdXRhdGlvblxuICA7O1xuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCA9XG4gICAgVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBuYW1lZCA9IFgudFxuICAgICAgICB0eXBlIHQgPSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDBcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEpIG9mX3AxID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSBuYW1lZCA9ICdhIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIHQgPSBwMSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDFcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBwMSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIpIG9mX3AxIG9mX3AyID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdCAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZCA9ICgnYSwgJ2IpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDJcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMpIG9mX3AxIG9mX3AyIG9mX3AzID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWQgPSAoJ2EsICdiLCAnYykgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDNcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMykgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzIHA0KSBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNClcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCkgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQ0XG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQgcDUpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A1KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIGQgPSBwNFxuXG4gICAgICAgIGxldCBkID0gb2ZfcDRcblxuICAgICAgICB0eXBlIGUgPSBwNVxuXG4gICAgICAgIGxldCBlID0gb2ZfcDVcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDVcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnQpXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApIDogVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UwIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpIDogVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA6IFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFgudCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpIDpcbiAgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpIDpcbiAgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTQgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCwgTm9uZSlcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpIDpcbiAgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOYW1lIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcmVsYXRpdmVfdG8gOiBkaXI6c3RyaW5nIC0+IHQgLT4gc3RyaW5nXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgcmVsYXRpdmVfdG8gfmRpciB0ID1cbiAgICBpZiBub3QgKFN0ZGxpYi5GaWxlbmFtZS5pc19yZWxhdGl2ZSB0KSB0aGVuIHQgZWxzZSBTdGRsaWIuRmlsZW5hbWUuY29uY2F0IGRpciB0XG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxfZGlyID1cbiAgbGV0IGRpcl9vcl9lcnJvciA9XG4gICAgbWF0Y2ggU3RkbGliLlN5cy5nZXRjd2QgKCkgd2l0aFxuICAgIHwgdiAtPiBgT2sgdlxuICAgIHwgZXhjZXB0aW9uIGV4biAtPiBgRXhuIGV4blxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCBkaXJfb3JfZXJyb3Igd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYEV4biBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWxlbmFtZSA6IE5hbWUudFxuICAgICAgOyBsaW5lX251bWJlciA6IGludFxuICAgICAgOyBsaW5lX3N0YXJ0IDogaW50XG4gICAgICA7IHN0YXJ0X3BvcyA6IGludFxuICAgICAgOyBlbmRfcG9zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG5cbiAgICBsZXQgdF9vZl9zZXhwID1cbiAgICAgIChsZXQgZXJyb3Jfc291cmNlX18wMjRfID0gXCJmaWxlLm1sLkxvY2F0aW9uLlQudFwiIGluXG4gICAgICAgZnVuY3Rpb25cbiAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBmaWVsZF9zZXhwc19fMDAzXyBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgICBsZXQgZmlsZW5hbWVfXzAwNF8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGxpbmVfbnVtYmVyX18wMDZfID0gU3RkbGliLnJlZiBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgIGFuZCBsaW5lX3N0YXJ0X18wMDhfID0gU3RkbGliLnJlZiBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgIGFuZCBzdGFydF9wb3NfXzAxMF8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGVuZF9wb3NfXzAxMl8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGR1cGxpY2F0ZXNfXzAxNF8gPSBTdGRsaWIucmVmIFtdXG4gICAgICAgICBhbmQgZXh0cmFfXzAxNV8gPSBTdGRsaWIucmVmIFtdIGluXG4gICAgICAgICBsZXQgcmVjIGl0ZXJfXzAyNV8gPSBmdW5jdGlvblxuICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSBmaWVsZF9uYW1lX18wMTZfXG4gICAgICAgICAgICAgICAgOjogKChbXSB8IFsgXyBdKSBhcyBfZmllbGRfc2V4cHNfXzAxOF8pKVxuICAgICAgICAgICAgIDo6IHRhaWxfXzAyNl8gLT5cbiAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gKCkgPVxuICAgICAgICAgICAgICAgbWF0Y2ggX2ZpZWxkX3NleHBzX18wMThfIHdpdGhcbiAgICAgICAgICAgICAgIHwgWyB4X18wMjdfIF0gLT4geF9fMDI3X1xuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAobWF0Y2ggZmllbGRfbmFtZV9fMDE2XyB3aXRoXG4gICAgICAgICAgICAgIHwgXCJmaWxlbmFtZVwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBmaWxlbmFtZV9fMDA0XyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjNfID0gTmFtZS50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGZpbGVuYW1lX18wMDRfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjNfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwibGluZV9udW1iZXJcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgbGluZV9udW1iZXJfXzAwNl8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDIyXyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBsaW5lX251bWJlcl9fMDA2XyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDIyXylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBcImxpbmVfc3RhcnRcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgbGluZV9zdGFydF9fMDA4XyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjFfID0gaW50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGxpbmVfc3RhcnRfXzAwOF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyMV8pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJzdGFydF9wb3NcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgc3RhcnRfcG9zX18wMTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyMF8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgc3RhcnRfcG9zX18wMTBfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjBfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwiZW5kX3Bvc1wiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBlbmRfcG9zX18wMTJfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAxOV8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgZW5kX3Bvc19fMDEyXyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDE5XylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgaWYgU3RkbGliLiggISApIFNleHBsaWIwLlNleHBfY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBleHRyYV9fMDE1XyAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZXh0cmFfXzAxNV8pXG4gICAgICAgICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgICAgICAgaXRlcl9fMDI1XyB0YWlsX18wMjZfXG4gICAgICAgICAgIHwgKChTZXhwbGliMC5TZXhwLkF0b20gXyB8IFNleHBsaWIwLlNleHAuTGlzdCBfKSBhcyBzZXhwX18wMDJfKSA6OiBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgaW5cbiAgICAgICAgIGl0ZXJfXzAyNV8gZmllbGRfc2V4cHNfXzAwM187XG4gICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8gd2l0aFxuICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX2R1cGxpY2F0ZV9maWVsZHNcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjRfXG4gICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XylcbiAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgZXh0cmFfXzAxNV8gd2l0aFxuICAgICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XylcbiAgICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgKCBTdGRsaWIuKCAhICkgZmlsZW5hbWVfXzAwNF9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIGxpbmVfbnVtYmVyX18wMDZfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi4oICEgKSBzdGFydF9wb3NfXzAxMF9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8gKVxuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8ICggU3RkbGliLk9wdGlvbi5Tb21lIGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBsaW5lX251bWJlcl9fMDA3X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuT3B0aW9uLlNvbWUgbGluZV9zdGFydF9fMDA5X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuT3B0aW9uLlNvbWUgc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBlbmRfcG9zX18wMTNfICkgLT5cbiAgICAgICAgICAgICAgICAgIHsgZmlsZW5hbWUgPSBmaWxlbmFtZV9fMDA1X1xuICAgICAgICAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgICAgICAgICA7IGxpbmVfc3RhcnQgPSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgICAgICAgICA7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDExX1xuICAgICAgICAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDEzX1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF91bmRlZmluZWRfZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjRfXG4gICAgICAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgICAgICAgWyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGZpbGVuYW1lX18wMDRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwiZmlsZW5hbWVcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBsaW5lX251bWJlcl9fMDA2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcImxpbmVfbnVtYmVyXCIgKVxuICAgICAgICAgICAgICAgICAgICA7ICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgbGluZV9zdGFydF9fMDA4XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcImxpbmVfc3RhcnRcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBzdGFydF9wb3NfXzAxMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJzdGFydF9wb3NcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBlbmRfcG9zX18wMTJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwiZW5kX3Bvc1wiIClcbiAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIF8gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBlcnJvcl9zb3VyY2VfXzAyNF8gc2V4cF9fMDAyX1xuICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSB0X29mX3NleHBcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IGZpbGVuYW1lID0gZmlsZW5hbWVfXzAyOV9cbiAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMzFfXG4gICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAzM19cbiAgICAgICAgICAgOyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAzNV9cbiAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDM3X1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMjhfID0gW10gaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzOF8gPSBzZXhwX29mX2ludCBlbmRfcG9zX18wMzdfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAzOF8gXSA6OiBibmRzX18wMjhfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMjhfID1cbiAgICAgICAgICBsZXQgYXJnX18wMzZfID0gc2V4cF9vZl9pbnQgc3RhcnRfcG9zX18wMzVfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDM2XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzNF8gPSBzZXhwX29mX2ludCBsaW5lX3N0YXJ0X18wMzNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZV9zdGFydFwiOyBhcmdfXzAzNF8gXSA6OiBibmRzX18wMjhfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMjhfID1cbiAgICAgICAgICBsZXQgYXJnX18wMzJfID0gc2V4cF9vZl9pbnQgbGluZV9udW1iZXJfXzAzMV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX251bWJlclwiOyBhcmdfXzAzMl8gXVxuICAgICAgICAgIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzMF8gPSBOYW1lLnNleHBfb2ZfdCBmaWxlbmFtZV9fMDI5XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZpbGVuYW1lXCI7IGFyZ19fMDMwXyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAyOF9cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSBzZXhwX29mX3RcblxuICAgIGxldCBjb21wYXJlID1cbiAgICAgIChmdW4gYV9fMDM5XyBiX18wNDBfIC0+XG4gICAgICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMzlfIGJfXzA0MF9cbiAgICAgICAgIHRoZW4gMFxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIE5hbWUuY29tcGFyZSBhX18wMzlfLmZpbGVuYW1lIGJfXzA0MF8uZmlsZW5hbWUgd2l0aFxuICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDM5Xy5saW5lX251bWJlciBiX18wNDBfLmxpbmVfbnVtYmVyIHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAzOV8ubGluZV9zdGFydCBiX18wNDBfLmxpbmVfc3RhcnQgd2l0aFxuICAgICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDM5Xy5zdGFydF9wb3MgYl9fMDQwXy5zdGFydF9wb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDM5Xy5lbmRfcG9zIGJfXzA0MF8uZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IGNvbXBhcmVcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuICBsZXQgYmVnaW5uaW5nX29mX2ZpbGUgZmlsZW5hbWUgPVxuICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyID0gMTsgbGluZV9zdGFydCA9IDA7IHN0YXJ0X3BvcyA9IDA7IGVuZF9wb3MgPSAwIH1cbiAgOztcblxuICBsZXQgb2Zfc291cmNlX2NvZGVfcG9zaXRpb24gKHBvcyA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpID1cbiAgICB7IGZpbGVuYW1lID0gTmFtZS5vZl9zdHJpbmcgKENhbWwuRmlsZW5hbWUuYmFzZW5hbWUgcG9zLnBvc19mbmFtZSlcbiAgICA7IGxpbmVfbnVtYmVyID0gcG9zLnBvc19sbnVtXG4gICAgOyBsaW5lX3N0YXJ0ID0gcG9zLnBvc19ib2xcbiAgICA7IHN0YXJ0X3BvcyA9IHBvcy5wb3NfY251bVxuICAgIDsgZW5kX3BvcyA9IHBvcy5wb3NfY251bVxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX3N0cmluZyA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IGV4cGVjdGVkX2xlbmd0aCA9IDMyIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGV4cGVjdGVkX2xlbmd0aFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nLCB1bmV4cGVjdGVkIGxlbmd0aFwiO1xuICAgIGZvciBpID0gMCB0byBleHBlY3RlZF9sZW5ndGggLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+ICgpXG4gICAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nXCJcbiAgICBkb25lO1xuICAgIHNcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIuMCAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuKCoqIHsxOnByZWRpY2F0ZXMgUHJlZGljYXRlcyBhbmQgY29tcGFyaXNvbnN9ICopXG5cbnZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4oKiogW2VxdWFsIHMwIHMxXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3MwXSBhbmQgW3MxXSBhcmUgY2hhcmFjdGVyLXdpc2VcbiAgICBlcXVhbC5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBlbmRzX3dpdGggOlxuICBzdWZmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtlbmRzX3dpdGggXVt+c3VmZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gZW5kcyB3aXRoIFtzdWZmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG5cbiAgICBUaGUgZnVuY3Rpb24ncyByZXN1bHQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czpcbiAgICB7dWxcbiAgICB7LSBUaGUgbGlzdCBpcyBub3QgZW1wdHkufVxuICAgIHstIENvbmNhdGVuYXRpbmcgaXRzIGVsZW1lbnRzIHVzaW5nIFtzZXBdIGFzIGEgc2VwYXJhdG9yIHJldHVybnMgYVxuICAgICAgc3RyaW5nIGVxdWFsIHRvIHRoZSBpbnB1dCAoW2NvbmNhdCAobWFrZSAxIHNlcClcbiAgICAgIChzcGxpdF9vbl9jaGFyIHNlcCBzKSA9IHNdKS59XG4gICAgey0gTm8gc3RyaW5nIGluIHRoZSByZXN1bHQgY29udGFpbnMgdGhlIFtzZXBdIGNoYXJhY3Rlci59fVxuXG4gICAgQHNpbmNlIDQuMDQuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG52YWwgbWFwaSA6IChpbnQgLT4gY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcGkgZiBzXSBpcyBsaWtlIHshbWFwfSBidXQgdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgaXMgYWxzb1xuICAgIHBhc3NlZCB0byBbZl0uXG5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2EgLT4gY2hhciAtPiAnYSkgLT4gJ2EgLT4gc3RyaW5nIC0+ICdhXG4oKiogW2ZvbGRfbGVmdCBmIHggc10gY29tcHV0ZXMgW2YgKC4uLiAoZiAoZiB4IHMuWzBdKSBzLlsxXSkgLi4uKSBzLltuLTFdXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2EgLT4gJ2EpIC0+IHN0cmluZyAtPiAnYSAtPiAnYVxuKCoqIFtmb2xkX3JpZ2h0IGYgcyB4XSBjb21wdXRlcyBbZiBzLlswXSAoZiBzLlsxXSAoIC4uLiAoZiBzLltuLTFdIHgpIC4uLikpXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgdHJpbSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdHJpbSBzXSBpcyBbc10gd2l0aG91dCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiBXaGl0ZXNwYWNlXG4gICAgY2hhcmFjdGVycyBhcmU6IFsnICddLCBbJ1xceDBDJ10gKGZvcm0gZmVlZCksIFsnXFxuJ10sIFsnXFxyJ10sIGFuZCBbJ1xcdCddLlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBsb3dlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2xvd2VyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgdXBwZXJjYXNlIGxldHRlcnMgdHJhbnNsYXRlZFxuICAgIHRvIGxvd2VyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYXZlcnNpbmcgVHJhdmVyc2luZ30gKilcblxudmFsIGl0ZXIgOiAoY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyIGYgc10gYXBwbGllcyBmdW5jdGlvbiBbZl0gaW4gdHVybiB0byBhbGwgdGhlIGNoYXJhY3RlcnMgb2YgW3NdLlxuICAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW2Ygcy5bMF07IGYgcy5bMV07IC4uLjsgZiBzLltsZW5ndGggcyAtIDFdOyAoKV0uICopXG5cbnZhbCBpdGVyaSA6IChpbnQgLT4gY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyaV0gaXMgbGlrZSB7IWl0ZXJ9LCBidXQgdGhlIGZ1bmN0aW9uIGlzIGFsc28gZ2l2ZW4gdGhlXG4gICAgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogW2JsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXSBjb3BpZXMgW2xlbl0gYnl0ZXNcbiAgICBmcm9tIHRoZSBzdHJpbmcgW3NyY10sIHN0YXJ0aW5nIGF0IGluZGV4IFtzcmNfcG9zXSxcbiAgICB0byBieXRlIHNlcXVlbmNlIFtkc3RdLCBzdGFydGluZyBhdCBjaGFyYWN0ZXIgbnVtYmVyIFtkc3RfcG9zXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzcmNfcG9zXSBhbmQgW2xlbl0gZG8gbm90XG4gICAgZGVzaWduYXRlIGEgdmFsaWQgcmFuZ2Ugb2YgW3NyY10sIG9yIGlmIFtkc3RfcG9zXSBhbmQgW2xlbl1cbiAgICBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWQgcmFuZ2Ugb2YgW2RzdF0uICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQ4IGIgaV0gaXMgW2JdJ3Mgc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAuMCAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjAuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuKCoqLyoqKVxuXG4oKiBUaGUgZm9sbG93aW5nIGlzIGZvciBzeXN0ZW0gdXNlIG9ubHkuIERvIG5vdCBjYWxsIGRpcmVjdGx5LiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT5cbiAgICB1bml0ID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5vcGVuIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgQm9keSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXhhY3Qgb2Ygc3RyaW5nXG4gICAgfCBPdXRwdXRcbiAgICB8IFByZXR0eSBvZiAnYVxuICAgIHwgVW5yZWFjaGFibGVcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG4gIGxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA2XykgOiAoKGFfXzAwNl8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMDZfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyAtPiBmdW5jdGlvblxuICAgICAgfCBFeGFjdCBhcmcwX18wMDJfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDNfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAyXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeGFjdFwiOyByZXMwX18wMDNfIF1cbiAgICAgIHwgT3V0cHV0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk91dHB1dFwiXG4gICAgICB8IFByZXR0eSBhcmcwX18wMDRfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDVfID0gX29mX2FfXzAwMV8gYXJnMF9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJQcmV0dHlcIjsgcmVzMF9fMDA1XyBdXG4gICAgICB8IFVucmVhY2hhYmxlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVucmVhY2hhYmxlXCJcbiAgOztcblxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwN18gYl9fMDA4X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA3XywgYl9fMDA4XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMDlfLCBFeGFjdCBfYl9fMDEwXyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDA5XyBfYl9fMDEwX1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gMVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiAwXG4gICAgICB8IE91dHB1dCwgXyAtPiAtMVxuICAgICAgfCBfLCBPdXRwdXQgLT4gMVxuICAgICAgfCBQcmV0dHkgX2FfXzAxMV8sIFByZXR0eSBfYl9fMDEyXyAtPiBfY21wX19hIF9hX18wMTFfIF9iX18wMTJfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IDFcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IDApXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEzXyBiX18wMTRfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAxNV8sIEV4YWN0IF9iX18wMTZfIC0+IGVxdWFsX3N0cmluZyBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gZmFsc2VcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gdHJ1ZVxuICAgICAgfCBPdXRwdXQsIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgT3V0cHV0IC0+IGZhbHNlXG4gICAgICB8IFByZXR0eSBfYV9fMDE3XywgUHJldHR5IF9iX18wMThfIC0+IF9jbXBfX2EgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gZmFsc2VcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IHRydWUpXG4gIDs7XG5cbiAgbGV0IF8gPSBlcXVhbFxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1hcF9wcmV0dHkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCAoRXhhY3QgXyB8IE91dHB1dCB8IFVucmVhY2hhYmxlKSBhcyB0IC0+IHRcbiAgICB8IFByZXR0eSB4IC0+IFByZXR0eSAoZiB4KVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgdGFnIDogc3RyaW5nIG9wdGlvblxuICA7IGJvZHkgOiAnYSBCb2R5LnRcbiAgOyBleHRpZF9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICA7IGJvZHlfbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxOV9cbiAgICB7IHRhZyA9IHRhZ19fMDIxX1xuICAgIDsgYm9keSA9IGJvZHlfXzAyM19cbiAgICA7IGV4dGlkX2xvY2F0aW9uID0gZXh0aWRfbG9jYXRpb25fXzAyNV9cbiAgICA7IGJvZHlfbG9jYXRpb24gPSBib2R5X2xvY2F0aW9uX18wMjdfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMjBfID0gW10gaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjhfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgYm9keV9sb2NhdGlvbl9fMDI3XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keV9sb2NhdGlvblwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjBfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjZfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgZXh0aWRfbG9jYXRpb25fXzAyNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4dGlkX2xvY2F0aW9uXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNF8gPSBCb2R5LnNleHBfb2ZfdCBfb2ZfYV9fMDE5XyBib2R5X18wMjNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5XCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyMl8gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX3N0cmluZyB0YWdfXzAyMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInRhZ1wiOyBhcmdfXzAyMl8gXSA6OiBibmRzX18wMjBfXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDIwX1xuOztcblxubGV0IF8gPSBzZXhwX29mX3RcblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAyOV8gYl9fMDMwXyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMjlfIGJfXzAzMF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGNvbXBhcmVfb3B0aW9uIGNvbXBhcmVfc3RyaW5nIGFfXzAyOV8udGFnIGJfXzAzMF8udGFnIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgIChtYXRjaCBCb2R5LmNvbXBhcmUgX2NtcF9fYSBhX18wMjlfLmJvZHkgYl9fMDMwXy5ib2R5IHdpdGhcbiAgICAgICB8IDAgLT5cbiAgICAgICAgIChtYXRjaCBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5leHRpZF9sb2NhdGlvbiBiX18wMzBfLmV4dGlkX2xvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IDAgLT4gRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uYm9keV9sb2NhdGlvbiBiX18wMzBfLmJvZHlfbG9jYXRpb25cbiAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICB8IG4gLT4gbilcbiAgICB8IG4gLT4gbilcbjs7XG5cbmxldCBfID0gY29tcGFyZVxuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDM1XyBiX18wMzZfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzNV8gYl9fMDM2X1xuICB0aGVuIHRydWVcbiAgZWxzZVxuICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgIChlcXVhbF9vcHRpb24gZXF1YWxfc3RyaW5nIGFfXzAzNV8udGFnIGJfXzAzNl8udGFnKVxuICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgIChCb2R5LmVxdWFsIF9jbXBfX2EgYV9fMDM1Xy5ib2R5IGJfXzAzNl8uYm9keSlcbiAgICAgICAgIChQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmV4dGlkX2xvY2F0aW9uIGJfXzAzNl8uZXh0aWRfbG9jYXRpb24pXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmJvZHlfbG9jYXRpb24gYl9fMDM2Xy5ib2R5X2xvY2F0aW9uKSkpXG47O1xuXG5sZXQgXyA9IGVxdWFsXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHN0cmluZyB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChmdW4geF9fMDQxXyAtPiBzZXhwX29mX3Qgc2V4cF9vZl9zdHJpbmcgeF9fMDQxXyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzA0Ml8gYl9fMDQzXyAtPiBjb21wYXJlIGNvbXBhcmVfc3RyaW5nIGFfXzA0Ml8gYl9fMDQzXyA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWFwX3ByZXR0eSB0IH5mID0geyB0IHdpdGggYm9keSA9IEJvZHkubWFwX3ByZXR0eSB0LmJvZHkgfmYgfVxuIiwibW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgRmlsZSA9IEZpbGVcbiAgbW9kdWxlIEV4cGVjdGF0aW9uID0gRXhwZWN0YXRpb25cbmVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSB1c2UgW0V4cGVjdF90ZXN0X2NvbW1vbl0gaW5zdGVhZFwiXVxuXG5pbmNsdWRlIFN0ZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG4iLCJtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBDUiAoKiogTGVhdmVzIGEgQ1IsIHNvIHRoYXQgZmVhdHVyZXMgY2Fubm90IGJlIHJlbGVhc2VkLiAqKVxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nICgqKiBPbmx5IGZvciBwcHhfZXhwZWN0IHRlc3Rpbmc7IGRvIG5vdCB1c2UuICopXG4gICAgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIElPX3J1biA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmRcblxuICAoKiogQSBub3ctbGVnYWN5IG1vbmFkLiBUaGlzIHNpZ25hdHVyZSB1c2VkIHRvIGRlY2xhcmUgYSBbZmx1c2hdIGZ1bmN0aW9uLlxuICAgICAgW1slZXhwZWN0Lm91dHB1dF1dIHN0aWxsIHJldHVybnMgdGhpcyB0eXBlLiBObyBtZWFuaW5nZnVsIG1vbmFkaWMgd29yayBpcyBkb25lLiAqKVxuICBtb2R1bGUgSU9fZmx1c2ggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgdG9fcnVuIDogJ2EgdCAtPiAnYSBJT19ydW4udFxuICBlbmRcblxuICAoKiogUnVuIGFuIElPIG9wZXJhdGlvbiB1bnRpbCBjb21wbGV0aW9uICopXG4gIHZhbCBydW4gOiAodW5pdCAtPiB1bml0IElPX3J1bi50KSAtPiB1bml0XG5cbiAgKCoqIFN5bmNocm9ub3VzIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gcGVuZGluZyBvdXRwdXQgb24gZmlsZSBkZXNjcmlwdGlvbiAwLiBXaXRoIGFzeW5jLFxuICAgICAgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgb24gdGhlIHJocyBvZiBhIFtJTy5iaW5kIChmbHVzaCAoKSkgLi4uXSB0aGUgb3V0cHV0IGlzXG4gICAgICBjb21wbGV0ZWx5IGZsdXNoZWQsIHRoYXQncyB3aHkgd2UgbmVlZCB0aGlzLiAqKVxuICB2YWwgZmx1c2hlZCA6IHVuaXQgLT4gYm9vbFxuXG4gICgqKiBbc2FuaXRpemVdIGNhbiBiZSB1c2VkIHRvIG1hcCBhbGwgb3V0cHV0IHN0cmluZ3MsIGUuZy4gZm9yIGNsZWFuc2luZy4gKilcbiAgdmFsIHNhbml0aXplIDogc3RyaW5nIC0+IHN0cmluZ1xuXG5cbiAgKCoqIFt1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZV0gc3BlY2lmaWVzIGhvdyB0byBkZWFsIHdpdGggb3V0cHV0IHRoYXQgc2hvdWxkIG5vdCBiZVxuICAgICAgcmVsZWFzZWQgZXZlbiBpZiBpdCBpcyBhY2NlcHRlZCAoZS5nLiBiYWNrdHJhY2VzKS4gVGhlIGRlZmF1bHQgaXMgW2BDUl0uICAqKVxuICB2YWwgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZS50XG5lbmRcblxuKCoqIENvbmZpZ3VyYXRpb24gZm9yIHJ1bm5pbmcgZXhwZWN0IHRlc3RzICopXG5tb2R1bGUgdHlwZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMgPSBzaWdcbiAgKCoqIFRvIGNvbmZpZ3VyZSBleHBlY3RfdGVzdCwgYWRkIHRoZSBmb2xsb3dpbmcgYXQgdGhlIHRvcCBvZiB5b3VyIC5tbCBmaWxlLCBvciBpbiBzb21lXG4gICAgICBpbXBvcnQubWw6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ1xuICAgICAgICAgIGxldCBwcmVfcmVkaXJlY3RfaG9vayAoKSA9IC4uLlxuICAgICAgICBlbmRcbiAgICAgIF19XG5cbiAgICAgIE5vdGUgdGhhdCBzaW5jZSBhbGwgZXhwZWN0IHRlc3QgYXJlIGFsc28gaW5saW5lIHRlc3RzLCB0aGUgaW5saW5lIHRlc3QgY29uZmlndXJhdGlvblxuICAgICAgYWxzbyBhcHBsaWVzIHRvIGFsbCBleHBlY3QgdGVzdC5cbiAgKilcblxuICBtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBjb21tZW50X3ByZWZpeCA6IHQgLT4gc3RyaW5nXG5cbiAgICAoKiogTWVzc2FnZSB0byBwcmludCB3aGVuIGFuIGV4cGVjdGF0aW9uIGNvbnRhaW5zIGEgYmFja3RyYWNlICopXG4gICAgdmFsIG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgOiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gU1xuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuU1xuXG5tb2R1bGUgdHlwZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMgPVxuICBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5FeHBlY3RfdGVzdF9jb25maWdfdHlwZXNcblxubW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gc3RydWN0XG4gIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICBsZXQgZXF1YWwgdDEgdDIgPSB0MSA9IHQyXG5cbiAgbGV0IGNvbW1lbnRfcHJlZml4ID0gZnVuY3Rpb25cbiAgICB8IGBDUiAtPiBcIkNSIFwiXG4gICAgfCBgV2FybmluZ19mb3JfY29sbGVjdG9yX3Rlc3RpbmcgLT4gXCJcIlxuICA7O1xuXG4gIGxldCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIHQgPVxuICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICB7fFxuKCogJXNleHBlY3RfdGVzdF9jb2xsZWN0b3I6IFRoaXMgdGVzdCBleHBlY3RhdGlvbiBhcHBlYXJzIHRvIGNvbnRhaW4gYSBiYWNrdHJhY2UuXG4gICBUaGlzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkIGFzIGJhY2t0cmFjZXMgYXJlIGZyYWdpbGUuXG4gICBQbGVhc2UgY2hhbmdlIHRoaXMgdGVzdCB0byBub3QgaW5jbHVkZSBhIGJhY2t0cmFjZS4gKilcblxufH1cbiAgICAgIChjb21tZW50X3ByZWZpeCB0KVxuICA7O1xuZW5kXG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyOFxcMDAwXFwwMDVcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcMDA2XFwwMDBcXDA4NVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDQwXFwwMDBcXDAzMVxcMDAwXFwwNDZcXDAwMFxcMDQ4XFwwMDBcXDAwN1xcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDYyXFwwMDBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMTAzXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwNVxcMDAwXFwwOTVcXDAwMFxcMTA3XFwwMDBcXDA5NVxcMDAwXFwxMTNcXDAwMFxcMDEwXFwwMDBcXDEwNFxcMDAwXFxcbiAgICBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTA0XFwwMDBcXDEyMlxcMDAwXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDExMVxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMTE2XFwwMDBcXDExN1xcMDAwXFwxMjVcXDAwMFxcMTI3XFwwMDBcXDAxMlxcMDAwXFwxMjZcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTE5XFwwMDBcXDEyMlxcMDAwXFwwMTNcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDAxMlxcMDAwXFwwMTRcXDAwMFxcMDI0XFwwMDBcXDAxMlxcMDAwXFwwMzlcXDAwMFxcMDEyXFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNjFcXDAwMFxcMDcxXFwwMDBcXDA1OVxcMDAwXFwwODZcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwM1xcMDAwXFwwMjlcXDAwMFxcMDA3XFwwMDBcXDAwNlxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMThcXDAwMFxcMDI3XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMjZcXDAwMFxcMDE2XFwwMDBcXDAwNVxcMDAwXFwwMTFcXDAwMFxcMDIwXFwwMDBcXDAyMlxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwwMzBcXDAwMFxcMDEzXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXFxuICAgIFxcMDM4XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA2MFxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1NlxcMDAwXFwwNThcXDAwMFxcMDYyXFwwMDBcXDA0NlxcMDAwXFwwNjNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMjNcXDAwMFxcMDMzXFwwMDBcXDAzOFxcMDAwXFwwNDNcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA2MFxcMDAwXFwwNzBcXDAwMFxcMDgwXFwwMDBcXDA4NVxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAyOFxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDAzXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMDIwXFwwMDBcXDAxN1xcMDAwXFwwMjZcXDAwMFxcMDI0XFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwMDlcXDAwMFxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwMzdcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU2XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjFcXDAwMFxcMDQ0XFwwMDBcXDA2MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBjaGVjayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2MyBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDEgLT5cbiMgNSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE2OCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbm90X2F0X2JvcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIDQ0XG5hbmQgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE4MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDEgLT5cbiMgOSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTg1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMiAtPlxuIyAxMCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICggZmFsc2UgKVxuIyAxOTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEyIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiBcbiAgbGV0IGNvbnRhaW5zX2JhY2t0cmFjZXMgcyA9IGNoZWNrIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuIyAyMDEgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG4iLCJvcGVuIEV4cGVjdF90ZXN0X2NvbW1vblxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG5cbm1vZHVsZSBUZXN0X291dGNvbWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGVfZGlnZXN0IDogRmlsZS5EaWdlc3QudFxuICAgIDsgbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgICA7IGV4cGVjdGF0aW9ucyA6IEV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbiA6IEV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgIDsgc2F2ZWRfb3V0cHV0IDogKEZpbGUuTG9jYXRpb24udCAqIHN0cmluZykgbGlzdFxuICAgIDsgdHJhaWxpbmdfb3V0cHV0IDogc3RyaW5nXG4gICAgOyB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZS50XG4gICAgOyB1bmNhdWdodF9leG4gOiAoZXhuICogUHJpbnRleGMucmF3X2JhY2t0cmFjZSkgb3B0aW9uXG4gICAgfVxuZW5kXG5cbmxldCB0ZXN0c19ydW4gOiBUZXN0X291dGNvbWUudCBsaXN0IHJlZiA9IHJlZiBbXVxuXG5sZXQgcHJvdGVjdCB+ZmluYWxseSB+ZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHhcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgcmFpc2UgZVxuOztcblxubW9kdWxlIEN1cnJlbnRfZmlsZSA9IHN0cnVjdFxuICBsZXQgY3VycmVudCA9IHJlZiBOb25lXG5cbiAgbGV0IHNldCB+YWJzb2x1dGVfZmlsZW5hbWUgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gY3VycmVudCA6PSBTb21lIGFic29sdXRlX2ZpbGVuYW1lXG4gICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3Iuc2V0OiBhbHJlYWR5IHNldFwiXG4gIDs7XG5cbiAgbGV0IHVuc2V0ICgpID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBTb21lIF8gLT4gY3VycmVudCA6PSBOb25lXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnVuc2V0OiBub3Qgc2V0XCJcbiAgOztcblxuICBsZXQgZ2V0ICgpID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBTb21lIGZuIC0+IGZuXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLmdldDogbm90IHNldFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNhdmVkIDogKEZpbGUuTG9jYXRpb24udCAqIGludCkgbGlzdFxuICAgIDsgY2hhbiA6IG91dF9jaGFubmVsXG4gICAgOyBmaWxlbmFtZSA6IEZpbGUuTmFtZS50XG4gICAgfVxuXG4gIGV4dGVybmFsIGJlZm9yZV90ZXN0XG4gICAgOiAgb3V0cHV0Om91dF9jaGFubmVsXG4gICAgLT4gc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3RcIlxuXG4gIGV4dGVybmFsIGFmdGVyX3Rlc3RcbiAgICA6ICBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XCJcblxuICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX291dF9jaGFubmVsX3Bvc19mZFwiXG5cbiAgbGV0IGdldF9wb3NpdGlvbiAoKSA9IHBvc19vdXQgc3Rkb3V0XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IGZpbGVuYW1lID0gRmlsZW5hbWUudGVtcF9maWxlIFwiZXhwZWN0LXRlc3RcIiBcIm91dHB1dFwiIGluXG4gICAgbGV0IGNoYW4gPSBvcGVuX291dF9iaW4gZmlsZW5hbWUgaW5cbiAgICBiZWZvcmVfdGVzdCB+b3V0cHV0OmNoYW4gfnN0ZG91dCB+c3RkZXJyO1xuICAgIHsgY2hhbjsgZmlsZW5hbWUgPSBGaWxlLk5hbWUub2Zfc3RyaW5nIGZpbGVuYW1lOyBzYXZlZCA9IFtdIH1cbiAgOztcblxuICBsZXQgcmVsYXRpdmVfZmlsZW5hbWUgdCA9IEZpbGUuTmFtZS5yZWxhdGl2ZV90byB+ZGlyOihGaWxlLmluaXRpYWxfZGlyICgpKSB0LmZpbGVuYW1lXG5cbiAgbGV0IHdpdGhfaWMgZm5hbWUgfmYgPVxuICAgIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gICAgcHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IGNsb3NlX2luIGljKSB+ZjooZnVuICgpIC0+IGYgaWMpXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRfdGVzdCA6IChGaWxlLkxvY2F0aW9uLnQgKiB0KSBvcHRpb24gcmVmID0gcmVmIE5vbmVcblxuICBsZXQgZ2V0X2N1cnJlbnQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoXywgdCkgLT4gdFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5JbnN0YW5jZS5nZXRfY3VycmVudCBjYWxsZWQgb3V0c2lkZSBhIHRlc3QuXCJcbiAgOztcblxuICBsZXQgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZFxuICA7O1xuXG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbiA9XG4gICAgbGV0IHBvcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgIGxldCBwcmV2X3BvcyA9XG4gICAgICBtYXRjaCB0LnNhdmVkIHdpdGhcbiAgICAgIHwgW10gLT4gMFxuICAgICAgfCAoXywgcHJldl9wb3MpIDo6IF8gLT4gcHJldl9wb3NcbiAgICBpblxuICAgIHQuc2F2ZWQgPC0gKGxvY2F0aW9uLCBwb3MpIDo6IHQuc2F2ZWQ7XG4gICAgZmx1c2ggdC5jaGFuO1xuICAgIGxldCBsZW4gPSBwb3MgLSBwcmV2X3BvcyBpblxuICAgIHdpdGhfaWMgKHJlbGF0aXZlX2ZpbGVuYW1lIHQpIH5mOihmdW4gaWMgLT5cbiAgICAgIHNlZWtfaW4gaWMgcHJldl9wb3M7XG4gICAgICByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbilcbiAgOztcbmVuZFxuXG5sZXQgYmFzaWNfZmx1c2ggKCkgPVxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCk7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuZXJyX2Zvcm1hdHRlciAoKTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRvdXQ7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gIGxldCBpbnN0YW5jZSA9IEluc3RhbmNlLmdldF9jdXJyZW50ICgpIGluXG4gIGJhc2ljX2ZsdXNoICgpO1xuICBJbnN0YW5jZS5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggaW5zdGFuY2UgbG9jYXRpb25cbjs7XG5cbm1vZHVsZSBNYWtlIChDIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlMpID0gc3RydWN0XG4gIGxldCAoID4+PSApIHQgZiA9IEMuSU9fZmx1c2guYmluZCB0IH5mXG4gIGxldCByZXR1cm4gPSBDLklPX2ZsdXNoLnJldHVyblxuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBDXG5cbiAgICBsZXQgZmx1c2ggKCkgPVxuICAgICAgYmFzaWNfZmx1c2ggKCk7XG4gICAgICBDLklPX2ZsdXNoLnJldHVybiAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBJbnN0YW5jZV9pbyA6IHNpZ1xuICAgIHZhbCBzYXZlX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiB1bml0IEMuSU9fZmx1c2gudFxuICAgIHZhbCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHN0cmluZyBDLklPX2ZsdXNoLnRcblxuICAgIHZhbCBleGVjXG4gICAgICA6ICBmaWxlX2RpZ2VzdDpGaWxlLkRpZ2VzdC50XG4gICAgICAtPiBsb2NhdGlvbjpGaWxlLkxvY2F0aW9uLnRcbiAgICAgIC0+IGV4cGVjdGF0aW9uczpFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgICAtPiB1bmNhdWdodF9leG5fZXhwZWN0YXRpb246RXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgICAtPiBmOih1bml0IC0+IHVuaXQgQy5JT19ydW4udClcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBJbnN0YW5jZVxuXG4gICAgbGV0IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyBsZW4gPVxuICAgICAgbGV0IHMgPSByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB8PiBDLnNhbml0aXplIGluXG4gICAgICBpZiBub3QgKENoZWNrX2JhY2t0cmFjZXMuY29udGFpbnNfYmFja3RyYWNlcyBzKVxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAubWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZVxuICAgICAgICAgIEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgXiBzXG4gICAgOztcblxuICAgIGxldCBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0ID1cbiAgICAgIGxldCBsYXN0X29mcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgICAgYWZ0ZXJfdGVzdCB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgICBjbG9zZV9vdXQgdC5jaGFuO1xuICAgICAgbGV0IGZuYW1lID0gcmVsYXRpdmVfZmlsZW5hbWUgdCBpblxuICAgICAgcHJvdGVjdFxuICAgICAgICB+ZmluYWxseTooZnVuICgpIC0+IFN5cy5yZW1vdmUgZm5hbWUpXG4gICAgICAgIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICB3aXRoX2ljIGZuYW1lIH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgIGxldCBvZnMsIG91dHB1dHMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChMaXN0LnJldiB0LnNhdmVkKVxuICAgICAgICAgICAgICAgIH5pbml0OigwLCBbXSlcbiAgICAgICAgICAgICAgICB+ZjooZnVuIChvZnMsIGFjYykgKGxvYywgbmV4dF9vZnMpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobmV4dF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICAgICAgICBuZXh0X29mcywgKGxvYywgcykgOjogYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0cmFpbGluZ19vdXRwdXQgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKGxhc3Rfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgb3V0cHV0cywgdHJhaWxpbmdfb3V0cHV0KSlcbiAgICA7O1xuXG4gICAgbGV0IHNhdmVfb3V0cHV0IGxvY2F0aW9uID1cbiAgICAgIGxldCB0ID0gZ2V0X2N1cnJlbnQgKCkgaW5cbiAgICAgIEMuZmx1c2ggKClcbiAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgIHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbjtcbiAgICAgIHJldHVybiAoKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBDLmZsdXNoICgpID4+PSBmdW4gKCkgLT4gcmV0dXJuIChzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbilcbiAgICA7O1xuXG4gICAgbGV0ICgpID1cbiAgICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgKGxvYywgdCkgLT5cbiAgICAgICAgICBsZXQgYmxvY2tzLCB0cmFpbGluZyA9IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgaW5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlxcblxcXG4gICAgICAgICAgICAgRXJyb3I6IHByb2dyYW0gZXhpdGVkIHdoaWxlIGV4cGVjdCB0ZXN0IHdhcyBydW5uaW5nIVxcblxcXG4gICAgICAgICAgICAgT3V0cHV0IGNhcHR1cmVkIHNvIGZhcjpcXG5cXFxuICAgICAgICAgICAgICUhXCJcbiAgICAgICAgICAgIChGaWxlLk5hbWUudG9fc3RyaW5nIGxvYy5maWxlbmFtZSlcbiAgICAgICAgICAgIGxvYy5saW5lX251bWJlclxuICAgICAgICAgICAgKGxvYy5zdGFydF9wb3MgLSBsb2MubGluZV9zdGFydClcbiAgICAgICAgICAgIChsb2MuZW5kX3BvcyAtIGxvYy5saW5lX3N0YXJ0KTtcbiAgICAgICAgICBMaXN0Lml0ZXIgYmxvY2tzIH5mOihmdW4gKF8sIHMpIC0+IFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHMpO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHRyYWlsaW5nKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmFsX2ZsdXNoID8oY291bnQgPSAwKSBrID1cbiAgICAgIGxldCBtYXhfYXR0ZW1wdHMgPSAxMCBpblxuICAgICAgQy5mbHVzaCAoKVxuICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgaWYgQy5mbHVzaGVkICgpXG4gICAgICB0aGVuIGsgfmFwcGVuZDpcIlwiXG4gICAgICBlbHNlIGlmIGNvdW50ID0gbWF4X2F0dGVtcHRzXG4gICAgICB0aGVuXG4gICAgICAgIGtcbiAgICAgICAgICB+YXBwZW5kOlxuICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICBcIlxcblxcXG4gICAgICAgICAgICAgICAgU1RPUFBFRCBDT0xMRUNUSU5HIE9VVFBVVCBBRlRFUiAlZCBGTFVTSElORyBBVFRFTVBTXFxuXFxcbiAgICAgICAgICAgICAgICBUSEVSRSBNVVNUIEJFIEEgQkFDS0dST1VORCBKT0IgUFJJTlRJTkcgVE8gU1RET1VUXFxuXCJcbiAgICAgICAgICAgICAgIG1heF9hdHRlbXB0cylcbiAgICAgIGVsc2UgZmluYWxfZmx1c2ggfmNvdW50Oihjb3VudCArIDEpIGtcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgfmZpbGVfZGlnZXN0IH5sb2NhdGlvbiB+ZXhwZWN0YXRpb25zIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb24gfmYgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGN1cnJlbnRfdGVzdCA6PSBTb21lIChsb2NhdGlvbiwgdCk7XG4gICAgICBsZXQgZmluYWxseSB1bmNhdWdodF9leG4gPVxuICAgICAgICBDLnJ1biAoZnVuICgpIC0+XG4gICAgICAgICAgQy5JT19mbHVzaC50b19ydW5cbiAgICAgICAgICAgIChmaW5hbF9mbHVzaCAoZnVuIH5hcHBlbmQgLT5cbiAgICAgICAgICAgICAgIGN1cnJlbnRfdGVzdCA6PSBOb25lO1xuICAgICAgICAgICAgICAgbGV0IHNhdmVkX291dHB1dCwgdHJhaWxpbmdfb3V0cHV0ID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgICAgICAgdGVzdHNfcnVuXG4gICAgICAgICAgICAgICA6PSB7IGZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgICAgICA7IGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgICA7IGV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICAgICAgIDsgc2F2ZWRfb3V0cHV0XG4gICAgICAgICAgICAgICAgICA7IHRyYWlsaW5nX291dHB1dCA9IHRyYWlsaW5nX291dHB1dCBeIGFwcGVuZFxuICAgICAgICAgICAgICAgICAgOyB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6OiAhdGVzdHNfcnVuO1xuICAgICAgICAgICAgICAgcmV0dXJuICgpKSkpXG4gICAgICBpblxuICAgICAgbWF0Y2ggQy5ydW4gZiB3aXRoXG4gICAgICB8ICgpIC0+IGZpbmFsbHkgTm9uZVxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICAgIGZpbmFsbHkgKFNvbWUgKGV4biwgYnQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzYXZlX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfb3V0cHV0XG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9hbmRfcmV0dXJuX291dHB1dFxuXG4gIGxldCBydW5cbiAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgIH4obG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnQpXG4gICAgICAgIH5hYnNvbHV0ZV9maWxlbmFtZTpkZWZpbmVkX2luXG4gICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICB+dGFnc1xuICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgfmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgICBmXG4gICAgPVxuICAgIFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS50ZXN0XG4gICAgICB+Y29uZmlnOmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgfmRlc2NyOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChtYXRjaCBkZXNjcmlwdGlvbiB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSBzIC0+IHMpKVxuICAgICAgfnRhZ3NcbiAgICAgIH5maWxlbmFtZTooRmlsZS5OYW1lLnRvX3N0cmluZyBsb2NhdGlvbi5maWxlbmFtZSlcbiAgICAgIH5saW5lX251bWJlcjpsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgfnN0YXJ0X3BvczoobG9jYXRpb24uc3RhcnRfcG9zIC0gbG9jYXRpb24ubGluZV9zdGFydClcbiAgICAgIH5lbmRfcG9zOihsb2NhdGlvbi5lbmRfcG9zIC0gbG9jYXRpb24ubGluZV9zdGFydClcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCByZWdpc3RlcmluZ190ZXN0c19mb3IgPSBDdXJyZW50X2ZpbGUuZ2V0ICgpIGluXG4gICAgICAgICBpZiBkZWZpbmVkX2luIDw+IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgdGhlblxuICAgICAgICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgIFwiVHJ5aW5nIHRvIHJ1biBhbiBleHBlY3QgdGVzdCBmcm9tIHRoZSB3cm9uZyBmaWxlLlxcblxcXG4gICAgICAgICAgICAgIC0gdGVzdCBkZWNsYXJlZCBhdCAlczolZFxcblxcXG4gICAgICAgICAgICAgIC0gdHJ5aW5nIHRvIHJ1biBpdCBmcm9tICVzXFxuXCJcbiAgICAgICAgICAgICBkZWZpbmVkX2luXG4gICAgICAgICAgICAgbG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgICAgICAgICByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAoKiBUbyBhdm9pZCBjYXB0dXJpbmcgbm90LXlldCBmbHVzaGVkIGRhdGEgb2YgdGhlIHN0ZG91dCBidWZmZXIgKilcbiAgICAgICAgICAgQy5ydW4gKGZ1biAoKSAtPiBDLklPX2ZsdXNoLnRvX3J1biAoQy5mbHVzaCAoKSkpO1xuICAgICAgICAgICBJbnN0YW5jZV9pby5leGVjXG4gICAgICAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgfmxvY2F0aW9uXG4gICAgICAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICB+ZjtcbiAgICAgICAgICAgdHJ1ZSkpXG4gIDs7XG5lbmRcbltAQGlubGluZSBuZXZlcl1cblxubGV0IHRlc3RzX3J1biAoKSA9XG4gICgqIFdlIHByZXBlbmQgdGVzdHMgd2hlbiB3ZSBlbmNvdW50ZXIgdGhlbSwgc28gcmV2ZXJzZSB0aGUgbGlzdCB0byByZWluc3RhdGUgb3JkZXIgKilcbiAgTGlzdC5yZXYgIXRlc3RzX3J1blxuOztcbiIsIm1vZHVsZSBJT19ydW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXQgcmV0dXJuIHggPSB4XG4gIGxldCBiaW5kIHQgfmYgPSBmIHRcbmVuZFxuXG5tb2R1bGUgSU9fZmx1c2ggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJT19ydW5cblxuICBsZXQgdG9fcnVuIHQgPSB0XG5lbmRcblxubGV0IHNhbml0aXplIHMgPSBzXG5sZXQgcnVuIGYgPSBmICgpXG5sZXQgZmx1c2hlZCAoKSA9IHRydWUgKCogdGhlIHJ1bnRpbWUgZmx1c2hlZCBbc3Rkb3V0XSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uICopXG5cbmxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IGBDUlxuIiwibW9kdWxlIFBweF9zZXhwX2NvbnZfbGliID0gc3RydWN0XG4gIG1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG4gIG1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG4gIG1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuZW5kXG5cbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuIiwiKCogVGhpcyBtb2R1bGUgYnVpbGRzIGEgYnVmZmVyIG9mIFwiaW5zdHJ1Y3Rpb25zXCIsIGluIG9yZGVyIHRvIHJlcHJlc2VudCBhIGNvbXBhY3Qgc2VxdWVuY2VcbiAgIG9mIGRlbGltaXRpbmcgcG9zaXRpb25zIGFuZCBuZXdsaW5lcy4gVGhlIHBhcnNlciBzdG9yZXMgdGhlIHBvc2l0aW9ucyBvZiBlYWNoOlxuXG4gICAtIG5ld2xpbmVcbiAgIC0gYmVnaW5uaW5nIG9mIGF0b21cbiAgIC0gZW5kIG9mIGF0b21cbiAgIC0gbGVmdCBwYXJlbnRoZXNpc1xuICAgLSByaWdodCBwYXJlbnRoZXNpc1xuXG4gICBJbnN0cnVjdGlvbnMgYXJlIGVuY29kZWQgYXMgYSBzZXF1ZW5jZSBiaXRzLiBUaGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBkZXRlcm1pbmVkIGJ5XG4gICBsb29raW5nIGF0IHRoZSBuZXh0IGZldyBiaXRzOlxuXG4gICAtIGJpdCAwIHJlcHJlc2VudHMgYSBzYXZlZCBwb3NpdGlvbiBmb2xsb3dlZCBieSBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTAgcmVwcmVzZW50IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMTAgYXJlIGZvbGxvd2VkIGJ5IDUgYml0cyBvZiBwYXlsb2FkLiBUaGUgNS1iaXQgcGF5bG9hZHMgb2YgYW55IHN1YnNlcXVlbnQgMTEwLVxuICAgICBpbnN0cnVjdGlvbnMgYXJlIHNxdWFzaGVkIHRvIGZvcm0gYSBudW1iZXIgKGxlYXN0IHNpZ25pZmljYW50IDUtYml0IGNodW5rIGZpcnN0KS5cbiAgICAgVGhpcyBudW1iZXIgKyA1IHJlcHJlc2VudHMgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMTAgbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBsaW5lICh3aXRoIG9mZnNldCBpbmNyZW1lbnRlZClcbiAgIC0gYml0cyAxMTExIHJlcHJlc2VudCBhIHBvc2l0aW9uIHNhdmVkIHR3aWNlIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcblxuICAgRm9yIGluc3RhbmNlIGxldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2V4cDpcblxuICAge1tcbiAgICAge3xcbihhYmNcbiAgICAgIFwiZm9vXG4gYmFyXCJcbilcbnx9XG4gICBdfVxuXG4gICB0aGUgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zIHRvIHJlY29yZCBpbiBvcmRlciB0byByZWNvbnN0cnVjdCB0aGUgcG9zaXRpb24gb2YgYW55XG4gICBzdWItc2V4cCBpczpcblxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBmaXJzdCAnKCdcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJhYmNcIlxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGVuZCBvZiBcImFiY1wiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMSBhZHZhbmNlIDZcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMCBhZHZhbmNlIDVcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiZm9vXFxuICBiYXJcIlxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBsYXN0ICcpJ1xuXG4gICAod2Ugc2F2ZSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMpXG5cbiAgIFRoZSB0b3RhbCBzZXF1ZW5jZSBpcyA0MiBiaXRzLCBzbyB3ZSBuZWVkIDYgYnl0ZXMgdG8gc3RvcmUgaXRcblxuICAgVGhlIHNlcXVlbmNlIG9mIGJpdHMgaXMgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIG9mIDE2LWJpdCB2YWx1ZXMsIHdoZXJlIHRoZSBlYXJsaWVyIGJpdHNcbiAgIGFyZSBtb3N0IHNpZ25pZmljYW50LlxuXG4gICBOb3RlIHRoYXQgdGhlIHBhcnNlciBzdG9yZXMgdGhlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlLiBUaGlzIHdheSBvbmx5IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHJlcXVpcmUgYSBkb3VibGUgcG9zaXRpb25zLiBJZiB3ZSB3ZXJlIHN0b3JpbmcgZW5kIHBvc2l0aW9ucyBhc1xuICAgZXhjbHVzaXZlLCB3ZSB3b3VsZCBuZWVkIGRvdWJsZSBwb3NpdGlvbnMgZm9yIFspKF0gYW5kIFthKF0sIHdoaWNoIGFyZSBsaWtlbHkgdG8gYmVcbiAgIGZyZXF1ZW50IGluIHMtZXhwcmVzc2lvbnMgcHJpbnRlZCB3aXRoIHRoZSBub24gW19odW1dIHByaW50ZXIuIFdlIGV4cGVjdCBzaW5nbGVcbiAgIGNoYXJhY3RlciBhdG9tcyB0byBiZSBsZXNzIGZyZXF1ZW50IHNvIGl0IG1ha2VzIHNlbnNlIHRvIHBlbmFsaXplIHRoZW0gaW5zdGVhZC5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvcyA9XG4gIHsgbGluZSA6IGludFxuICA7IGNvbCA6IGludFxuICA7IG9mZnNldCA6IGludFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcG9zID1cbiAgKGZ1biB7IGxpbmUgPSBsaW5lX18wMDJfOyBjb2wgPSBjb2xfXzAwNF87IG9mZnNldCA9IG9mZnNldF9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gW10gaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBvZmZzZXRfXzAwNl8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZmZzZXRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2ZfaW50IGNvbF9fMDA0XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbFwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9pbnQgbGluZV9fMDAyXyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHBvcyAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZV9wb3MgPSBDYW1sLmNvbXBhcmVcbmxldCBiZWdpbm5pbmdfb2ZfZmlsZSA9IHsgbGluZSA9IDE7IGNvbCA9IDA7IG9mZnNldCA9IDAgfVxubGV0IHNoaWZ0X3BvcyBwb3MgfmNvbHMgPSB7IHBvcyB3aXRoIGNvbCA9IHBvcy5jb2wgKyBjb2xzOyBvZmZzZXQgPSBwb3Mub2Zmc2V0ICsgY29scyB9XG5cbnR5cGUgcmFuZ2UgPVxuICB7IHN0YXJ0X3BvcyA6IHBvc1xuICA7IGVuZF9wb3MgOiBwb3NcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3JhbmdlID1cbiAgKGZ1biB7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDA5XzsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxMV8gfSAtPlxuICAgICBsZXQgYm5kc19fMDA4XyA9IFtdIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9wb3MgZW5kX3Bvc19fMDExXyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfcG9zIHN0YXJ0X3Bvc19fMDA5XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXJ0X3Bvc1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDhfXG4gICAgIDogcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcmFuZ2UgPSBDYW1sLmNvbXBhcmVcblxubGV0IG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3BvcyA9XG4gIHsgc3RhcnRfcG9zOyBlbmRfcG9zID0gc2hpZnRfcG9zIGxhc3RfcG9zIH5jb2xzOjEgfVxuOztcblxubW9kdWxlIENodW5rIDogc2lnXG4gICgqKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIFtsZW5ndGgvMl0gc2lnbmVkIDE2LWJpdCB2YWx1ZXMgKilcbiAgdHlwZSB0XG5cbiAgKCoqIExlbmd0aCBpbiBieXRlcy4gKilcbiAgdmFsIGxlbmd0aCA6IGludFxuXG4gIHZhbCBhbGxvYyA6IHVuaXQgLT4gdFxuXG4gICgqKiBbZ2V0MTYgfnBvc10gYW5kIFtzZXQxNiB+cG9zXSBtYW5pcHVsYXRlIHRoZSBbcG9zLzJddGggc3RvcmVkIHZhbHVlLlxuICAgICAgW3Bvc10gbXVzdCBiZSBldmVuLlxuICAgICAgW3NldDE2IHhdIG9ubHkgdXNlcyB0aGUgMTYgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBbeF0uICopXG4gIHZhbCBnZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnRcblxuICB2YWwgc2V0MTYgOiB0IC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gICgqIE9DYW1sIHN0cmluZ3MgYWx3YXlzIHdhc3RlIHR3byBieXRlcyBhdCB0aGUgZW5kLCBzbyB3ZSB0YWtlIGEgcG93ZXIgb2YgdHdvIG1pbnVzIHR3b1xuICAgICB0byBiZSBzdXJlIHdlIGRvbid0IHdhc3RlIHNwYWNlLiAqKVxuICBsZXQgbGVuZ3RoID0gNjJcbiAgbGV0IGFsbG9jICgpID0gQnl0ZXMuY3JlYXRlIGxlbmd0aFxuXG4gIGV4dGVybmFsIGdldDE2IDogYnl0ZXMgLT4gcG9zOmludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbiAgZXh0ZXJuYWwgc2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5cbiAgKCogSWYgd2Ugd2FudCB0byBtYWtlIGEgW1Bvc2l0aW9ucy50XSBzZXJpYWxpemFibGU6XG5cbiAgICAge1tcbiAgICAgICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIjs7XG5cbiAgICAgICBsZXQgZ2V0MTYgPVxuICAgICAgICAgaWYgQ2FtbC5TeXMuYXJjaF9iaWdfZW5kaWFuIHRoZW5cbiAgICAgICAgICAgZnVuIGJ1ZiB+cG9zIC0+IGdldDE2IGJ1ZiB+cG9zIHw+IGJzd2FwMTZcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZ2V0MTZcblxuICAgICAgIGxldCBzZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgeCAtPiBzZXQxNiBidWYgfnBvcyAoYnN3YXAxNiB4KVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBzZXQxNlxuICAgICBdfVxuXG4gICopXG5lbmRcblxudHlwZSB0XyA9XG4gIHsgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgc3RvcmVkIGluIFtjaHVua3NdLlxuICAgICAgIFRoZSBsYXN0IFtleHRyYV9iaXRzXSBiaXRzIHdpbGwgYmUgc3RvcmVkIGFzIHRoZSAqbGVhc3QqIHNpZ25pZmljYW50IGJpdHNcbiAgICAgICBvZiB0aGUgYXBwcm9wcmlhdGUgcGFpciBvZiBieXRlcyBvZiB0aGUgbGFzdCBjaHVuay4gKilcbiAgICBudW1fYnl0ZXMgOiBpbnRcbiAgOyBleHRyYV9iaXRzIDogaW50XG4gIDsgaW5pdGlhbF9wb3MgOiBwb3NcbiAgfVxuXG50eXBlIHQgPSB0XyBMYXp5LnRcblxubGV0IG1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMgKGxhenkgdCkgPVxuICBsZXQgbnVtX2ZpZWxkcyA9IDQgaW5cbiAgbGV0IGhlYWRlcl93b3JkcyA9IDEgaW5cbiAgbGV0IHdvcmRfYnl0ZXMgPVxuICAgIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgIHwgMzIgLT4gNFxuICAgIHwgNjQgLT4gOFxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbGV0IGNodW5rX3dvcmRzID1cbiAgICBsZXQgZGl2X2NlaWwgYSBiID0gKGEgKyBiIC0gMSkgLyBiIGluXG4gICAgbGV0IG4gPVxuICAgICAgZGl2X2NlaWxcbiAgICAgICAgKENodW5rLmxlbmd0aFxuICAgICAgICAgKyAxICgqIE5VTCB0ZXJtaW5hdGluZyBieXRlcyAqKVxuICAgICAgICAgKyAxICgqIG51bWJlciBvZiB3YXN0ZWQgYnl0ZXMgdG8gZmlsbCBhIHdvcmQgKikpXG4gICAgICAgIHdvcmRfYnl0ZXNcbiAgICBpblxuICAgIG4gKyBoZWFkZXJfd29yZHNcbiAgaW5cbiAgbGV0IHBvc19maWVsZHMgPSAzIGluXG4gIGxldCBwb3Nfd29yZHMgPSBoZWFkZXJfd29yZHMgKyBwb3NfZmllbGRzIGluXG4gIGxldCBsaXN0X2NvbnNfd29yZHMgPSBoZWFkZXJfd29yZHMgKyAyIGluXG4gIChoZWFkZXJfd29yZHNcbiAgICsgbnVtX2ZpZWxkc1xuICAgKyBwb3Nfd29yZHNcbiAgICsgKExpc3QubGVuZ3RoIHQuY2h1bmtzICogKGNodW5rX3dvcmRzICsgbGlzdF9jb25zX3dvcmRzKSkpXG4gICogd29yZF9ieXRlc1xuOztcblxubW9kdWxlIEJ1aWxkZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rX3BvcyA6IGludFxuICAgIDsgbXV0YWJsZSBmaWxsZWRfY2h1bmtzIDogQ2h1bmsudCBsaXN0ICgqIEZpbGxlZCBjaHVua3MgaW4gcmV2ZXJzZSBvcmRlciAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICAoKiBPZmZzZXQgb2YgdGhlIGxhc3Qgc2F2ZWQgcG9zaXRpb24gb3IgbmV3bGluZSBwbHVzXG4gICAgICAgb25lLCBvciBbaW5pdGlhbF9wb3NdICopXG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICAoKiB0aGUgW251bV9iaXRzXSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFtpbnRfYnVmXVxuICAgICAgIGFyZSB0aGUgYml0cyBub3QgeWV0IHB1c2hlZCB0byBbY2h1bmtdLiAqKVxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIGluaXRpYWxfcG9zIDogcG9zXG4gICAgfVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0LmNodW5rX3BvcyA+PSAwICYmIHQuY2h1bmtfcG9zIDw9IENodW5rLmxlbmd0aCk7XG4gICAgYXNzZXJ0ICh0Lm9mZnNldCA+PSB0LmluaXRpYWxfcG9zLm9mZnNldCk7XG4gICAgYXNzZXJ0ICh0Lm51bV9iaXRzIDw9IDE1KVxuICA7O1xuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSBmYWxzZVxuICBsZXQgaW52YXJpYW50IHQgPSBpZiBjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdFxuXG4gIGxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IGJlZ2lubmluZ19vZl9maWxlKSAoKSA9XG4gICAgeyBjaHVuayA9IENodW5rLmFsbG9jICgpXG4gICAgOyBjaHVua19wb3MgPSAwXG4gICAgOyBmaWxsZWRfY2h1bmtzID0gW11cbiAgICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICAgIDsgaW50X2J1ZiA9IDBcbiAgICA7IG51bV9iaXRzID0gMFxuICAgIDsgaW5pdGlhbF9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgKHBvcyA6IHBvcykgPVxuICAgICgqIFdlIG5lZWQgYSBuZXcgY2h1bmsgYXMgW2NvbnRlbnRzXSBrZWVwcyB0aGUgY3VycmVudCBjaHVuayBpbiB0aGUgY2xvc3VyZSBvZiB0aGVcbiAgICAgICBsYXp5IHZhbHVlLiAqKVxuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMDtcbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gW107XG4gICAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgICB0LmludF9idWYgPC0gMDtcbiAgICB0Lm51bV9iaXRzIDwtIDA7XG4gICAgdC5pbml0aWFsX3BvcyA8LSBwb3NcbiAgOztcblxuICBsZXRbQGlubGluZWQgbmV2ZXJdIGFsbG9jX25ld19jaHVuayB0ID1cbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3M7XG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwXG4gIDs7XG5cbiAgbGV0IGFkZF91aW50MTYgdCBuID1cbiAgICBpZiB0LmNodW5rX3BvcyA9IENodW5rLmxlbmd0aCB0aGVuIGFsbG9jX25ld19jaHVuayB0O1xuICAgIENodW5rLnNldDE2IHQuY2h1bmsgfnBvczp0LmNodW5rX3BvcyBuXG4gIDs7XG5cbiAgbGV0IGFkZF9iaXRzIHQgbiB+bnVtX2JpdHMgPVxuICAgIGxldCBpbnRfYnVmID0gKHQuaW50X2J1ZiBsc2wgbnVtX2JpdHMpIGxvciBuIGluXG4gICAgbGV0IG51bV9iaXRzID0gdC5udW1fYml0cyArIG51bV9iaXRzIGluXG4gICAgdC5pbnRfYnVmIDwtIGludF9idWY7XG4gICAgaWYgbnVtX2JpdHMgPCAxNlxuICAgIHRoZW4gdC5udW1fYml0cyA8LSBudW1fYml0c1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9iaXRzID0gbnVtX2JpdHMgLSAxNiBpblxuICAgICAgdC5udW1fYml0cyA8LSBudW1fYml0cztcbiAgICAgIGFkZF91aW50MTYgdCAoaW50X2J1ZiBsc3IgbnVtX2JpdHMpO1xuICAgICAgdC5jaHVua19wb3MgPC0gdC5jaHVua19wb3MgKyAyXG4gICAgICAoKiBubyBuZWVkIHRvIGNsZWFyIHRoZSBiaXRzIG9mIGludF9idWYgd2UganVzdCB3cm90ZSwgYXMgZnVydGhlciBzZXQxNiB3aWxsIGlnbm9yZVxuICAgICAgICAgdGhlc2UgZXh0cmEgYml0cy4gKikpXG4gIDs7XG5cbiAgbGV0IGNvbnRlbnRzIHQgPVxuICAgICgqIEZsdXNoIHRoZSBjdXJyZW50IFt0LmludF9idWZdICopXG4gICAgYWRkX3VpbnQxNiB0IHQuaW50X2J1ZjtcbiAgICBsZXQgcmV2X2NodW5rcyA9IHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzIGluXG4gICAgbGV0IGNodW5rX3BvcyA9IHQuY2h1bmtfcG9zIGluXG4gICAgbGV0IGV4dHJhX2JpdHMgPSB0Lm51bV9iaXRzIGluXG4gICAgbGV0IGluaXRpYWxfcG9zID0gdC5pbml0aWFsX3BvcyBpblxuICAgIGxhenlcbiAgICAgIHsgY2h1bmtzID0gTGlzdC5yZXYgcmV2X2NodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSAoKExpc3QubGVuZ3RoIHJldl9jaHVua3MgLSAxKSAqIENodW5rLmxlbmd0aCkgKyBjaHVua19wb3NcbiAgICAgIDsgZXh0cmFfYml0c1xuICAgICAgOyBpbml0aWFsX3Bvc1xuICAgICAgfVxuICA7O1xuXG4gIGxldCBsb25nX3NoaWZ0IHQgbiA9XG4gICAgbGV0IG4gPSByZWYgKG4gLSA1KSBpblxuICAgIHdoaWxlICFuID4gMCBkb1xuICAgICAgYWRkX2JpdHMgdCAoMGIxMTAwXzAwMDAgbG9yICghbiBsYW5kIDBiMDAwMV8xMTExKSkgfm51bV9iaXRzOjg7XG4gICAgICBuIDo9ICFuIGxzciA1XG4gICAgZG9uZVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogbiA+PSA1ICopXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGxvbmdfc2hpZnQgdCBuO1xuICAgIGFkZF9iaXRzIHQgaW5zdHIgfm51bV9iaXRzOmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgc2hpZnQ0ID0gMGIxMF8xMF8xMF8xMFxuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBsZXQgbiA9IG9mZnNldCAtIHQub2Zmc2V0IGluXG4gICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDAgfCAxIHwgMiB8IDMgfCA0IC0+XG4gICAgICBsZXQgbnVtX2JpdHMgPSAobiBsc2wgMSkgKyBpbnN0cl9iaXRzIGluXG4gICAgICBhZGRfYml0cyB0ICgoc2hpZnQ0IGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpKSB+bnVtX2JpdHNcbiAgICB8IDVcbiAgICB8IDZcbiAgICB8IDdcbiAgICB8IDhcbiAgICB8IDlcbiAgICB8IDEwXG4gICAgfCAxMVxuICAgIHwgMTJcbiAgICB8IDEzXG4gICAgfCAxNFxuICAgIHwgMTVcbiAgICB8IDE2XG4gICAgfCAxN1xuICAgIHwgMThcbiAgICB8IDE5XG4gICAgfCAyMFxuICAgIHwgMjFcbiAgICB8IDIyXG4gICAgfCAyM1xuICAgIHwgMjRcbiAgICB8IDI1XG4gICAgfCAyNlxuICAgIHwgMjdcbiAgICB8IDI4XG4gICAgfCAyOVxuICAgIHwgMzBcbiAgICB8IDMxXG4gICAgfCAzMlxuICAgIHwgMzNcbiAgICB8IDM0XG4gICAgfCAzNVxuICAgIHwgMzYgLT5cbiAgICAgIGFkZF9iaXRzXG4gICAgICAgIHRcbiAgICAgICAgKCgoMGIxMTAwXzAwMDAgbG9yIChuIC0gNSkpIGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIpXG4gICAgICAgIH5udW1fYml0czooOCArIGluc3RyX2JpdHMpXG4gICAgfCBfIC0+XG4gICAgICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuYWRkX2dlblwiO1xuICAgICAgYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgYWRkIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjAgfmluc3RyX2JpdHM6MVxuICBsZXQgYWRkX3R3aWNlIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTEgfmluc3RyX2JpdHM6NFxuICBsZXQgYWRkX25ld2xpbmUgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMCB+aW5zdHJfYml0czo0XG5lbmRcblxudHlwZSBwb3NpdGlvbnMgPSB0XG5cbm1vZHVsZSBJdGVyYXRvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogcG9zaXRpb25zIC0+IHRcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gICgqIFthZHZhbmNlIHQgfnNraXBdIGlnbm9yZXMgW3NraXBdIHNhdmVkIHBvc2l0aW9ucyBhbmQgcmV0dXJucyB0aGUgbmV4dCBzYXZlZCBwb3NpdGlvbi5cbiAgICAgUmFpc2VzIFtOb19tb3JlXSB3aGVuIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIHBvc2l0aW9uIHNldC4gKilcbiAgdmFsIGFkdmFuY2VfZXhuIDogdCAtPiBza2lwOmludCAtPiBwb3NcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gICAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZnJvbSBbaW5zdHJfcG9zXSBpblxuICAgICAgICAgW2NodW5rIDo6IGNodW5rc10uICopXG4gICAgICBtdXRhYmxlIG51bV9ieXRlcyA6IGludFxuICAgIDsgZXh0cmFfYml0cyA6IGludFxuICAgIDsgbXV0YWJsZSBpbnN0cl9wb3MgOiBpbnQgKCogcG9zaXRpb24gaW4gW2NodW5rXSAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSBib2wgOiBpbnRcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBOdW1iZXIgb2YgYml0cyBub3QgeWV0IGNvbnN1bWVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBwZW5kaW5nIDogcG9zIG9wdGlvblxuICAgIH1cblxuICBsZXQgY3JlYXRlICgobGF6eSBwKSA6IHBvc2l0aW9ucykgPVxuICAgIG1hdGNoIHAuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB7IGNodW5rXG4gICAgICA7IGNodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSBwLm51bV9ieXRlc1xuICAgICAgOyBleHRyYV9iaXRzID0gcC5leHRyYV9iaXRzXG4gICAgICA7IGluc3RyX3BvcyA9IDBcbiAgICAgIDsgb2Zmc2V0ID0gcC5pbml0aWFsX3Bvcy5vZmZzZXRcbiAgICAgIDsgbGluZSA9IHAuaW5pdGlhbF9wb3MubGluZVxuICAgICAgOyBib2wgPSBwLmluaXRpYWxfcG9zLm9mZnNldCAtIHAuaW5pdGlhbF9wb3MuY29sXG4gICAgICA7IGludF9idWYgPSAwXG4gICAgICA7IG51bV9iaXRzID0gMFxuICAgICAgOyBwZW5kaW5nID0gTm9uZVxuICAgICAgfVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgbGV0IG5vX21vcmUgKCkgPSByYWlzZV9ub3RyYWNlIE5vX21vcmVcblxuICBsZXRbQGlubGluZWQgbmV2ZXJdIGZldGNoX2NodW5rIHQgPVxuICAgIG1hdGNoIHQuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB0Lmluc3RyX3BvcyA8LSAwO1xuICAgICAgdC5udW1fYnl0ZXMgPC0gdC5udW1fYnl0ZXMgLSBDaHVuay5sZW5ndGg7XG4gICAgICB0LmNodW5rIDwtIGNodW5rO1xuICAgICAgdC5jaHVua3MgPC0gY2h1bmtzXG4gIDs7XG5cbiAgbGV0IGZldGNoIHQgPVxuICAgIGlmIHQuaW5zdHJfcG9zID4gdC5udW1fYnl0ZXMgdGhlbiBub19tb3JlICgpO1xuICAgIGlmIHQuaW5zdHJfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gZmV0Y2hfY2h1bmsgdDtcbiAgICBsZXQgdiA9IENodW5rLmdldDE2IHQuY2h1bmsgfnBvczp0Lmluc3RyX3BvcyBpblxuICAgIGxldCBhZGRlZF9iaXRzID0gaWYgdC5pbnN0cl9wb3MgPSB0Lm51bV9ieXRlcyB0aGVuIHQuZXh0cmFfYml0cyBlbHNlIDE2IGluXG4gICAgdC5pbnRfYnVmIDwtICh0LmludF9idWYgbHNsIGFkZGVkX2JpdHMpIGxvciAodiBsYW5kICgoMSBsc2wgYWRkZWRfYml0cykgLSAxKSk7XG4gICAgdC5udW1fYml0cyA8LSB0Lm51bV9iaXRzICsgYWRkZWRfYml0cztcbiAgICB0Lmluc3RyX3BvcyA8LSB0Lmluc3RyX3BvcyArIDJcbiAgOztcblxuICBsZXQgbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzID1cbiAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHNcbiAgICB0aGVuIChcbiAgICAgIGZldGNoIHQ7XG4gICAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHMgdGhlbiBub19tb3JlICgpKTtcbiAgICBsZXQgbiA9ICh0LmludF9idWYgbHNyICh0Lm51bV9iaXRzIC0gbnVtX2JpdHMpKSBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkgaW5cbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgLSBudW1fYml0cztcbiAgICBuXG4gIDs7XG5cbiAgKCogW29mZnNldF9zaGlmdF0gYW5kIFtvZmZzZXRfc2hpZnRfbnVtX2JpdHNdIGVuY29kZSB0aGUgb2Zmc2V0IG51bWJlclxuICAgICBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZyBbMTEwXSBpbnN0cnVjdGlvbnMuICopXG4gIGxldCByZWMgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQgfm9mZnNldF9zaGlmdF9udW1fYml0cyA9XG4gICAgbWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKCogYml0IHNlcSAwIC0+IG5ldyBpdGVtICopXG4gICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgaW5cbiAgICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfVxuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKCogYml0IHNlcSAxMCAtPiBzaGlmdCAqKVxuICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAoKiBiaXQgc2VxIDExMCAtPiBsb25nIHNoaWZ0ICopXG4gICAgICAgICAgICBsZXQgbiA9IG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czo1IGluXG4gICAgICAgICAgICBsZXQgb2Zmc2V0X3NoaWZ0ID0gaWYgb2Zmc2V0X3NoaWZ0X251bV9iaXRzID0gMCB0aGVuIDUgZWxzZSBvZmZzZXRfc2hpZnQgaW5cbiAgICAgICAgICAgIGFkdmFuY2VcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICB+c2tpcFxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0OihvZmZzZXRfc2hpZnQgKyAobiBsc2wgb2Zmc2V0X3NoaWZ0X251bV9iaXRzKSlcbiAgICAgICAgICAgICAgfm9mZnNldF9zaGlmdF9udW1fYml0czoob2Zmc2V0X3NoaWZ0X251bV9iaXRzICsgNSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTAgLT4gbmV3bGluZSAqKVxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgICAgICAgdC5ib2wgPC0gdC5vZmZzZXQ7XG4gICAgICAgICAgICAgICB0LmxpbmUgPC0gdC5saW5lICsgMTtcbiAgICAgICAgICAgICAgIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTEgLT4gMiBuZXcgaXRlbXMgKilcbiAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgICAgICAgICAgIGlmIHNraXAgPD0gMVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwb3MgPSB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfSBpblxuICAgICAgICAgICAgICAgICBpZiBza2lwID0gMCB0aGVuIHQucGVuZGluZyA8LSBTb21lIHBvcztcbiAgICAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAyKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowKSkpXG4gIDs7XG5cbiAgbGV0IGFkdmFuY2VfZXhuIHQgfnNraXAgPVxuICAgIG1hdGNoIHQucGVuZGluZyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPlxuICAgICAgdC5wZW5kaW5nIDwtIE5vbmU7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiBwb3NcbiAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMSkgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgIHwgTm9uZSAtPiBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICA7O1xuZW5kXG5cbmxldCBmaW5kIHQgYSBiID1cbiAgaWYgYSA8IDAgfHwgYiA8PSBhIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5maW5kXCI7XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgdHJ5XG4gICAgbGV0IHN0YXJ0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6YSBpblxuICAgIGxldCBsYXN0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6KGIgLSBhIC0gMSkgaW5cbiAgICBtYWtlX3JhbmdlX2luY2wgfnN0YXJ0X3BvcyB+bGFzdF9wb3NcbiAgd2l0aFxuICB8IEl0ZXJhdG9yLk5vX21vcmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBvc2l0aW9uLmZpbmRcIlxuOztcblxubGV0IHJlYyBzdWJfc2V4cF9jb3VudCAoc2V4cCA6IFNleHAudCkgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIF8gLT4gMVxuICB8IExpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCBsIH5pbml0OjEgfmY6KGZ1biBhY2MgeCAtPiBhY2MgKyBzdWJfc2V4cF9jb3VudCB4KVxuOztcblxubW9kdWxlIFNleHBfc2VhcmNoID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBGb3VuZCBvZiBpbnRcblxuICBsZXQgcmVjIGxvb3AgfnN1YiBpbmRleCAoc2V4cCA6IFNleHAudCkgPVxuICAgIGlmIHNleHAgPT0gc3ViXG4gICAgdGhlbiByYWlzZV9ub3RyYWNlIChGb3VuZCBpbmRleClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBBdG9tIF8gLT4gaW5kZXggKyAyXG4gICAgICB8IExpc3QgbCAtPlxuICAgICAgICBsZXQgaW5kZXggPSBsb29wX2xpc3QgfnN1YiAoaW5kZXggKyAxKSBsIGluXG4gICAgICAgIGluZGV4ICsgMSlcblxuICBhbmQgbG9vcF9saXN0IH5zdWIgaW5kZXggKHNleHBzIDogU2V4cC50IGxpc3QpID1cbiAgICBMaXN0LmZvbGRfbGVmdCBzZXhwcyB+aW5pdDppbmRleCB+ZjoobG9vcCB+c3ViKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZSB0IH5zdWIgYSA9XG4gICAgbGV0IGIgPSBhICsgKHN1Yl9zZXhwX2NvdW50IHN1YiAqIDIpIC0gMSBpblxuICAgIFNvbWUgKGZpbmQgdCBhIGIpXG4gIDs7XG5cbiAgbGV0IGZpbmRfc3ViX3NleHBfcGh5cyB0IHNleHAgfnN1YiA9XG4gICAgbWF0Y2ggbG9vcCB+c3ViIDAgc2V4cCB3aXRoXG4gICAgfCAoXyA6IGludCkgLT4gTm9uZVxuICAgIHwgZXhjZXB0aW9uIEZvdW5kIG4gLT4gZmluYWxpemUgdCB+c3ViIG5cbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXMgdCBzZXhwcyB+c3ViID1cbiAgICBtYXRjaCBsb29wX2xpc3QgfnN1YiAwIHNleHBzIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuZW5kXG5cbmxldCBmaW5kX3N1Yl9zZXhwX3BoeXMgPSBTZXhwX3NlYXJjaC5maW5kX3N1Yl9zZXhwX3BoeXNcbmxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgaXRlciA9IEl0ZXJhdG9yLmNyZWF0ZSB0IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCB3aXRoXG4gICAgfCBleGNlcHRpb24gSXRlcmF0b3IuTm9fbW9yZSAtPiBMaXN0LnJldiBhY2NcbiAgICB8IHBvcyAtPiBsb29wIChwb3MgOjogYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRvX2xpc3QgdCB8PiBBcnJheS5vZl9saXN0XG5sZXQgY29tcGFyZSB0MSB0MiA9IENhbWwuY29tcGFyZSAodG9fYXJyYXkgdDEpICh0b19hcnJheSB0MilcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9wb3MgKHRvX2FycmF5IHQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBBdG9tIG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBhdG9tIDogc3RyaW5nXG4gICAgICA7IHVuZXNjYXBlZCA6IHN0cmluZyBvcHRpb25cbiAgICAgIH1cbiAgfCBMaXN0IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBlbGVtZW50cyA6IHRfb3JfY29tbWVudCBsaXN0XG4gICAgICB9XG5cbmFuZCB0X29yX2NvbW1lbnQgPVxuICB8IFNleHAgb2YgdFxuICB8IENvbW1lbnQgb2YgY29tbWVudFxuXG5hbmQgY29tbWVudCA9XG4gIHwgUGxhaW5fY29tbWVudCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgY29tbWVudCA6IHN0cmluZ1xuICAgICAgfVxuICB8IFNleHBfY29tbWVudCBvZlxuICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgOyBjb21tZW50cyA6IGNvbW1lbnQgbGlzdFxuICAgICAgOyBzZXhwIDogdFxuICAgICAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCByZWMgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBBdG9tIHsgbG9jID0gbG9jX18wMDJfOyBhdG9tID0gYXRvbV9fMDA0XzsgdW5lc2NhcGVkID0gdW5lc2NhcGVkX18wMDZfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDFfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHVuZXNjYXBlZF9fMDA2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1bmVzY2FwZWRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIGF0b21fXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYXRvbVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDNfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJBdG9tXCIgOjogYm5kc19fMDAxXylcbiAgICB8IExpc3QgeyBsb2MgPSBsb2NfXzAwOV87IGVsZW1lbnRzID0gZWxlbWVudHNfXzAxMV8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwOF8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdF9vcl9jb21tZW50IGVsZW1lbnRzX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsZW1lbnRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwOV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkxpc3RcIiA6OiBibmRzX18wMDhfKVxuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfdF9vcl9jb21tZW50ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBTZXhwIGFyZzBfXzAxM18gLT5cbiAgICAgIGxldCByZXMwX18wMTRfID0gc2V4cF9vZl90IGFyZzBfXzAxM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDE0XyBdXG4gICAgfCBDb21tZW50IGFyZzBfXzAxNV8gLT5cbiAgICAgIGxldCByZXMwX18wMTZfID0gc2V4cF9vZl9jb21tZW50IGFyZzBfXzAxNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbW1lbnRcIjsgcmVzMF9fMDE2XyBdXG4gICAgICA6IHRfb3JfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbmFuZCBzZXhwX29mX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBsb2NfXzAxOF87IGNvbW1lbnQgPSBjb21tZW50X18wMjBfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMTdfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDIxXyA9IHNleHBfb2Zfc3RyaW5nIGNvbW1lbnRfXzAyMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudFwiOyBhcmdfXzAyMV8gXSA6OiBibmRzX18wMTdfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMTlfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMThfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxOV8gXSA6OiBibmRzX18wMTdfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJQbGFpbl9jb21tZW50XCIgOjogYm5kc19fMDE3XylcbiAgICB8IFNleHBfY29tbWVudFxuICAgICAgICB7IGhhc2hfc2VtaV9wb3MgPSBoYXNoX3NlbWlfcG9zX18wMjNfXG4gICAgICAgIDsgY29tbWVudHMgPSBjb21tZW50c19fMDI1X1xuICAgICAgICA7IHNleHAgPSBzZXhwX18wMjdfXG4gICAgICAgIH0gLT5cbiAgICAgIGxldCBibmRzX18wMjJfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI4XyA9IHNleHBfb2ZfdCBzZXhwX18wMjdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInNleHBcIjsgYXJnX18wMjhfIF0gOjogYm5kc19fMDIyX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI2XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2NvbW1lbnQgY29tbWVudHNfXzAyNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudHNcIjsgYXJnX18wMjZfIF0gOjogYm5kc19fMDIyX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI0XyA9IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBoYXNoX3NlbWlfcG9zX18wMjNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImhhc2hfc2VtaV9wb3NcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIyX1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cF9jb21tZW50XCIgOjogYm5kc19fMDIyXylcbiAgICAgIDogY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZSA9IENhbWwuY29tcGFyZVxubGV0IGNvbXBhcmVfdF9vcl9jb21tZW50ID0gQ2FtbC5jb21wYXJlXG5sZXQgY29tcGFyZV9jb21tZW50ID0gQ2FtbC5jb21wYXJlXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFNleHAudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoU2V4cC50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoU2V4cC50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIHsgYXRvbTsgXyB9IC0+IGsgKFNleHAuQXRvbSBhdG9tKVxuICAgICAgfCBMaXN0IHsgZWxlbWVudHM7IF8gfSAtPiBmb3JnZXRfdG9jcyBlbGVtZW50cyAoZnVuIHhzIC0+IGsgKFNleHAuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGFja19pbnRmXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgVF9vcl9jb21tZW50IG9mIENzdC50X29yX2NvbW1lbnQgKiB0XG4gICAgfCBPcGVuIG9mIFBvc2l0aW9ucy5wb3MgKiB0XG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgb2ZcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgICA7IHJldl9jb21tZW50cyA6IENzdC5jb21tZW50IGxpc3RcbiAgICAgICAgOyBzdGFjayA6IHRcbiAgICAgICAgfVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGdldF9tYW55ID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IGxvb3AgKHQgOjogYWNjKSBzdGFja1xuICAgICAgfCBPcGVuIF8gfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55XCJcbiAgICBpblxuICAgIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG4gIDs7XG5lbmRcblxubW9kdWxlIEp1c3RfcG9zaXRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcblxuICBsZXQgZW1wdHkgPSAoKVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgRW1wdHlcbiAgfCBPcGVuIG9mIHRcbiAgfCBTZXhwIG9mIFNleHAudCAqIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGdldF9zaW5nbGUgPSBmdW5jdGlvblxuICB8IFNleHAgKHNleHAsIEVtcHR5KSAtPiBzZXhwXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlXCJcbjs7XG5cbmxldCBnZXRfbWFueSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBPcGVuIF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X21hbnlcIlxuICAgIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IGxvb3AgKHNleHAgOjogYWNjKSBzdGFja1xuICBpblxuICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgfCBTZXhwXG5lbmRcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRva2VuX2J1ZmZlciA6IEJ1ZmZlci50ICgqKiBTdGFydGluZyBwb3NpdGlvbnMgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKiopXG4gICAgOyBtdXRhYmxlIHRva2VuX3N0YXJ0X3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCB1bml0KSB0XG4gICAgfCBTZXhwIDogKHVuaXQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBDc3QgOiAoRm9yX2NzdC50LCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KSB0XG5lbmRcblxubW9kdWxlIHJlYyBTdGF0ZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHsgbXV0YWJsZSBhdXRvbWF0b25fc3RhdGUgOiBpbnRcbiAgICA7IGtpbmQgOiAoJ3UsICdzKSBLaW5kLnRcbiAgICA7IG11dGFibGUgZGVwdGggOiBpbnQgKCoqIE51bWJlciBvZiBvcGVuZWQgI3wgd2hlbiBwYXJzaW5nIGEgYmxvY2sgY29tbWVudCAqKVxuICAgIDsgbXV0YWJsZSBibG9ja19jb21tZW50X2RlcHRoIDogaW50XG4gICAgKCoqIFN0YWNrIG9mIGlnbm9yaW5nIGRlcHRoczsgdGhlIGN1cnJlbnQgZGVwdGggaXMgcHVzaGVkXG4gICAgICAgIGVhY2ggdGltZSBhICM7IGNvbW1lbnQgaXMgZW50ZXJlZC4gKilcbiAgICA7IG11dGFibGUgaWdub3Jpbmdfc3RhY2sgOiBpbnQgbGlzdFxuICAgICgqKiBXaGVuIHBhcnNpbmcgYW4gZXNjYXBlIHNlcXVlbmNlIG9mIHRoZSBmb3JtIFwiXFxcXE5OTlwiIG9yIFwiXFxcXFhYXCIsIHRoaXMgYWNjdW11bGF0ZXNcbiAgICAgICAgdGhlIGNvbXB1dGVkIG51bWJlciAqKVxuICAgIDsgbXV0YWJsZSBlc2NhcGVkX3ZhbHVlIDogaW50ICgqKiBCdWZmZXIgZm9yIGFjY3VtdWxhdGluZyBhdG9tcyAqKVxuICAgIDsgYXRvbV9idWZmZXIgOiBCdWZmZXIudFxuICAgIDsgdXNlcl9zdGF0ZSA6ICd1XG4gICAgOyBtb2RlIDogKCd1LCAncykgTW9kZS50XG4gICAgOyBtdXRhYmxlIGZ1bGxfc2V4cHMgOiBpbnRcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50ICgqKiBnbG9iYWwgb2Zmc2V0ICoqKVxuICAgIDsgbXV0YWJsZSBsaW5lX251bWJlciA6IGludFxuICAgIDsgbXV0YWJsZSBib2xfb2Zmc2V0IDogaW50ICgqKiBvZmZzZXQgb2YgYmVnaW5uaW5nIG9mIGxpbmUgKiopXG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIE1vZGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFNpbmdsZVxuICAgIHwgTWFueVxuICAgIHwgRWFnZXIgb2ZcbiAgICAgICAgeyBnb3Rfc2V4cCA6ICgndSwgJ3MpIFN0YXRlLnQgLT4gJ3MgLT4gJ3NcbiAgICAgICAgOyBtdXRhYmxlIG5vX3NleHBfaXNfZXJyb3IgOiBib29sXG4gICAgICAgIH1cbmVuZCA9XG4gIE1vZGVcblxubW9kdWxlIHR5cGUgQXV0b21hdG9uX3N0YXRlID0gc2lnXG4gIG1vZHVsZSBDb250ZXh0ID0gQ29udGV4dFxuICBtb2R1bGUgRm9yX2NzdCA9IEZvcl9jc3RcbiAgbW9kdWxlIEtpbmQgPSBLaW5kXG4gIG1vZHVsZSBNb2RlID0gTW9kZVxuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZVxuXG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2luaXRpYWxfcG9zOlBvc2l0aW9ucy5wb3NcbiAgICAtPiAoJ3UsICdzKSBNb2RlLnRcbiAgICAtPiAoJ3UsICdzKSBLaW5kLnRcbiAgICAtPiAoJ3UsICdzKSB0XG5cbiAgdmFsIHJlc2V0IDogP3BvczpQb3NpdGlvbnMucG9zIC0+IF8gdCAtPiB1bml0XG4gIHZhbCBwb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgXykgdCAtPiBQb3NpdGlvbnMudFxuICB2YWwgbW9kZSA6ICgndSwgJ3MpIHQgLT4gKCd1LCAncykgTW9kZS50XG5cbiAgKCoqIE51bWJlciBvZiBjaGFyYWN0ZXJzIGZlZCB0byB0aGUgcGFyc2VyICopXG4gIHZhbCBvZmZzZXQgOiBfIHQgLT4gaW50XG5cbiAgKCoqIFBvc2l0aW9uIGluIHRoZSB0ZXh0ICopXG4gIHZhbCBsaW5lIDogXyB0IC0+IGludFxuXG4gIHZhbCBjb2x1bW4gOiBfIHQgLT4gaW50XG5cbiAgKCoqIFdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdW5jbG9zZWQgcGFyZW50aGVzZXMgKilcbiAgdmFsIGhhc191bmNsb3NlZF9wYXJlbiA6ICgndSwgJ3MpIHQgLT4gYm9vbFxuXG4gIHZhbCBzZXRfZXJyb3Jfc3RhdGUgOiBfIHQgLT4gdW5pdFxuXG4gICgqKi8qKilcblxuICAoKl8gT25seSBmb3IgY29udmVydGluZyBlcnJvcnMgdG8gdGhlIG9sZCBwYXJzZXIgZXJyb3JzICopXG4gIHZhbCBhdG9tX2J1ZmZlciA6IF8gdCAtPiBCdWZmZXIudFxuXG4gICgqXyBGb3IgY292ZXJhdGUgdGVzdHMgKilcbiAgdmFsIGF1dG9tYXRvbl9zdGF0ZSA6ICgndSwgJ3MpIHQgLT4gaW50XG4gIHZhbCBjb250ZXh0IDogXyB0IC0+IENvbnRleHQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlX2ludGZcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG5vcGVuIFN0YXRlXG5cbmxldCBpbml0aWFsX3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBQb3NpdGlvbnMucG9zIC0+IHUgPVxuICBmdW4ga2luZCBpbml0aWFsX3BvcyAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBDc3QgLT5cbiAgICAoKiBbdG9rZW5fc3RhcnRfcG9zXSBpcyBzZXQgdG8gYSBkdW1teSBsb2NhdGlvbiBoZXJlLiBJdCBpcyBwcm9wZXJseSBzZXQgd2hlbiB3ZVxuICAgICAgIHN0YXJ0IHRvIGNhcHR1cmUgYSB0b2tlbiBmcm9tIHRoZSBpbnB1dCAqKVxuICAgIHsgdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjg7IHRva2VuX3N0YXJ0X3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSB9XG47O1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3N0YXRlLnByaW50X2NvbnN0YW50cyAoKSAqKVxubGV0IGluaXRpYWxfc3RhdGUgPSAwXG5sZXQgZXJyb3Jfc3RhdGUgPSAxXG5cbigqJCopXG5cbmxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgbW9kZSBraW5kID1cbiAgeyBraW5kXG4gIDsgZGVwdGggPSAwXG4gIDsgYXV0b21hdG9uX3N0YXRlID0gaW5pdGlhbF9zdGF0ZVxuICA7IGJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gIDsgaWdub3Jpbmdfc3RhY2sgPSBbXVxuICA7IGVzY2FwZWRfdmFsdWUgPSAwXG4gIDsgYXRvbV9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyOFxuICA7IHVzZXJfc3RhdGUgPSBpbml0aWFsX3VzZXJfc3RhdGUga2luZCBpbml0aWFsX3Bvc1xuICA7IG1vZGVcbiAgOyBmdWxsX3NleHBzID0gMFxuICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICA7IGxpbmVfbnVtYmVyID0gaW5pdGlhbF9wb3MubGluZVxuICA7IGJvbF9vZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXQgLSBpbml0aWFsX3Bvcy5jb2xcbiAgfVxuOztcblxubGV0IG1vZGUgdCA9IHQubW9kZVxubGV0IHBvc2l0aW9ucyB0ID0gUG9zaXRpb25zLkJ1aWxkZXIuY29udGVudHMgdC51c2VyX3N0YXRlXG5sZXQgYXRvbV9idWZmZXIgdCA9IHQuYXRvbV9idWZmZXJcbmxldCBvZmZzZXQgc3RhdGUgPSBzdGF0ZS5vZmZzZXRcbmxldCBsaW5lIHN0YXRlID0gc3RhdGUubGluZV9udW1iZXJcbmxldCBjb2x1bW4gc3RhdGUgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG5sZXQgcG9zaXRpb24gdCA9IHsgUG9zaXRpb25zLmNvbCA9IGNvbHVtbiB0OyBsaW5lID0gbGluZSB0OyBvZmZzZXQgPSBvZmZzZXQgdCB9XG5cbmxldCByZXNldF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSB0IC0+IHVuaXQgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IENzdCAtPiBCdWZmZXIuY2xlYXIgdC51c2VyX3N0YXRlLnRva2VuX2J1ZmZlclxuOztcblxubGV0IHJlc2V0ID8ocG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSB0ID1cbiAgdC5kZXB0aCA8LSAwO1xuICB0LmF1dG9tYXRvbl9zdGF0ZSA8LSBpbml0aWFsX3N0YXRlO1xuICB0LmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gMDtcbiAgdC5pZ25vcmluZ19zdGFjayA8LSBbXTtcbiAgdC5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIHQuZnVsbF9zZXhwcyA8LSAwO1xuICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICB0LmxpbmVfbnVtYmVyIDwtIHBvcy5saW5lO1xuICB0LmJvbF9vZmZzZXQgPC0gcG9zLm9mZnNldCAtIHBvcy5jb2w7XG4gIHJlc2V0X3VzZXJfc3RhdGUgdDtcbiAgQnVmZmVyLmNsZWFyIHQuYXRvbV9idWZmZXJcbjs7XG5cbmxldCBjb250ZXh0IHN0YXRlIDogQ29udGV4dC50ID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IF8gOjogXyAtPiBTZXhwX2NvbW1lbnRcbiAgfCBbXSAtPiBTZXhwXG47O1xuXG5sZXQgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlID0gc3RhdGUuZGVwdGggPiAwXG5sZXQgc2V0X2Vycm9yX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIGVycm9yX3N0YXRlXG5sZXQgYXV0b21hdG9uX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFJlYXNvbiA9IHN0cnVjdFxuICAoKl8gU29tZSBvZiB0aGVzZSBjb21lIGZyb20gW1BhcnNleHBfc3ltYm9saWNfYXV0b21hdG9uLlBhcnNlX2Vycm9yX3JlYXNvbl0uICopXG4gIHR5cGUgdCA9XG4gICAgKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX3BhcnNlX2Vycm9yLnByaW50X2NvbnN0cnVjdG9ycyAoKSAqKVxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbiAgICAoKiQqKVxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0XG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gICAgfCBUb29fbWFueV9zZXhwc1xuICAgIHwgVW5jbG9zZWRfcGFyZW5cbmVuZFxuXG5tb2R1bGUgdHlwZSBQYXJzZV9lcnJvciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcG9zaXRpb24gOiB0IC0+IFBvc2l0aW9ucy5wb3NcbiAgdmFsIG1lc3NhZ2UgOiB0IC0+IHN0cmluZ1xuXG4gICgqKiBSZXBvcnQgYW4gZXJyb3IgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIE9DYW1sLCBmb3IgaW5zdGFuY2U6XG5cbiAgICAgIEZpbGUgXCJibGFoXCIsIGxpbmUgNDIsIGNoYXJhY3RlciAxMDpcbiAgICAgIEVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcbiAgICAgIHVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nLlxuICAqKVxuICB2YWwgcmVwb3J0IDogRm9ybWF0LmZvcm1hdHRlciAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdCAtPiB1bml0XG5cbiAgZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHRcblxuICAoKiovKiopXG5cbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgICAoKiogVG8gbWF0Y2ggdGhlIG9sZCBiZWhhdmlvciwgdGhlIG9sZCBwYXJzZXIgc29tZXRpbWVzIHJhaXNlZCBbRmFpbHVyZV0gYW5kIHNvbWV0aW1lc1xuICAgICAgICByYWlzZWQgW1BhcnNlX2Vycm9yXSAqKVxuICAgIHZhbCBvbGRfcGFyc2VyX2V4biA6IHQgLT4gWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG5cbiAgICB2YWwgcmFpc2UgOiBSZWFzb24udCAtPiBQb3NpdGlvbnMucG9zIC0+IGF0X2VvZjpib29sIC0+IGF0b21fYnVmZmVyOkJ1ZmZlci50IC0+ICdhXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VfZXJyb3JfaW50ZlxuXG50eXBlIHQgPVxuICB7IHBvc2l0aW9uIDogUG9zaXRpb25zLnBvc1xuICA7IG1lc3NhZ2UgOiBzdHJpbmdcbiAgOyBvbGRfcGFyc2VyX2V4biA6IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuICB9XG5cbmxldCBzZXhwX29mX3QgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gPSBfIH0gOiBTZXhwLnQgPVxuICBMaXN0XG4gICAgWyBMaXN0IFsgQXRvbSBcInBvc2l0aW9uXCI7IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBwb3NpdGlvbiBdXG4gICAgOyBMaXN0IFsgQXRvbSBcIm1lc3NhZ2VcIjsgc2V4cF9vZl9zdHJpbmcgbWVzc2FnZSBdXG4gICAgXVxuOztcblxubGV0IHBvc2l0aW9uIHQgPSB0LnBvc2l0aW9uXG5sZXQgbWVzc2FnZSB0ID0gdC5tZXNzYWdlXG5sZXQgb2xkX3BhcnNlcl9leG4gdCA9IHQub2xkX3BhcnNlcl9leG5cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgcG9zID0gcG9zaXRpb24gdCBpblxuICBsZXQgbXNnID0gbWVzc2FnZSB0IGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlciAlZDpcXG5FcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XFxuJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgcG9zLmxpbmVcbiAgICBwb3MuY29sXG4gICAgbXNnXG47O1xuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhcnNlX2Vycm9yLm1sLlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgKHJlYXNvbiA6IFJlYXNvbi50KSBwb3NpdGlvbiB+YXRfZW9mIH5hdG9tX2J1ZmZlciA9XG4gIGxldCBtZXNzYWdlID1cbiAgICAoKiBUaGVzZSBtZXNzYWdlcyB3aGVyZSBjaG9vc2VuIHN1Y2ggdGhhdCB3ZSBjYW4gYnVpbGQgdGhlIHZhcmlvdXMgU2V4cGxpYiBwYXJzaW5nXG4gICAgICAgZnVuY3Rpb25zIG9uIHRvcCBvZiBQYXJzZXhwIGFuZCBrZWVwIHRoZSBzYW1lIGV4Y2VwdGlvbnMuXG5cbiAgICAgICBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMsIGEgc2ltcGxlIGxheWVyIG9uIHRvcCBvZiBwYXJzZXhwIHRvIGltcGxlbWVudCB0aGVcbiAgICAgICBzZXhwbGliIEFQSSBpcyBwYXNzaW5nIGFsbCB0aGUgc2V4cGxpYiB0ZXN0cy5cblxuICAgICAgIE5vdGUgdGhhdCBwYXJzZXhwIG1hdGNoZXMgdGhlIHNlbWFudGljIG9mIFNleHAucGFyc2Ugd2hpY2ggaXMgc2xpZ2h0bHlcbiAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgb2NhbWxsZXgvb2NhbWx5YWNjIGJhc2VkIHBhcnNlciBvZiBTZXhwbGliLiBUaGUgbGF0dGVyIG9uZVxuICAgICAgIGlzIGxlc3MgdGVzdGVkIGFuZCBhc3N1bWVkIHRvIGJlIGxlc3MgdXNlZC4gKilcbiAgICBtYXRjaCByZWFzb24gd2l0aFxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZyAtPiBcInVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nXCJcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50IC0+IFwidW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRcIlxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZSAtPiBcImVzY2FwZSBzZXF1ZW5jZSBpbiBxdW90ZWQgc3RyaW5nIG91dCBvZiByYW5nZVwiXG4gICAgfCBVbmNsb3NlZF9wYXJlbiAtPiBcInVuY2xvc2VkIHBhcmVudGhlc2VzIGF0IGVuZCBvZiBpbnB1dFwiXG4gICAgfCBUb29fbWFueV9zZXhwcyAtPiBcInMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhXCJcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZCAtPiBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnKSdcIlxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tIC0+XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCJcbiAgICAgIHRoZW4gXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCJcbiAgICAgIGVsc2UgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCJcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHAgLT4gXCJ1bnRlcm1pbmF0ZWQgc2V4cCBjb21tZW50XCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyIC0+XG4gICAgICBpZiBhdF9lb2ZcbiAgICAgIHRoZW4gXCJ1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgICAgZWxzZSBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0IC0+IFwibm8gcy1leHByZXNzaW9uIGZvdW5kIGluIGlucHV0XCJcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUGFyc2VyX2F1dG9tYXRvbjogcGFyc2VyIGlzIGRlYWRcIlxuICBpblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPVxuICAgIG1hdGNoIHJlYXNvbiwgYXRfZW9mIHdpdGhcbiAgICB8IFRvb19tYW55X3NleHBzLCBfIHwgXywgdHJ1ZSAtPiBgRmFpbHVyZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tLCBfXG4gICAgICB3aGVuIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIiAtPiBgRmFpbHVyZVxuICAgIHwgXyAtPiBgUGFyc2VfZXJyb3JcbiAgaW5cbiAgcmFpc2UgKFBhcnNlX2Vycm9yIHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuIH0pXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID0gb2xkX3BhcnNlcl9leG5cbiAgbGV0IHJhaXNlID0gcmFpc2VcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEF1dG9tYXRvbl9zdGF0ZVxub3BlbiBTdGF0ZVxuXG5sZXQgcmFpc2VfZXJyb3IgOiB0eXBlIGEgYi4gKGEsIGIpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IF8gPVxuICBmdW4gc3RhdGUgfmF0X2VvZiByZWFzb24gLT5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBQYXJzZV9lcnJvci5Qcml2YXRlLnJhaXNlXG4gICAgcmVhc29uXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbiAgICB+YXRfZW9mXG4gICAgfmF0b21fYnVmZmVyOnN0YXRlLmF0b21fYnVmZmVyXG47O1xuXG50eXBlIG5vbnJlYyBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLkNvbnRleHQudCA9XG4gIHwgU2V4cF9jb21tZW50XG4gIHwgU2V4cFxuXG5sZXQgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5jb250ZXh0XG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gJ3MgLT4gJ3NcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbmVuZFxuXG5tb2R1bGUgRXBzaWxvbiA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiAncyAtPiAnc1xuXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmRcblxubGV0IGN1cnJlbnRfcG9zID8oZGVsdGEgPSAwKSBzdGF0ZSA6IFBvc2l0aW9ucy5wb3MgPVxuICBsZXQgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0ICsgZGVsdGEgaW5cbiAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXI7IGNvbCA9IG9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXQ7IG9mZnNldCB9XG47O1xuXG5sZXQgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSB4ID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIHhcbmxldCBhZHZhbmNlIHN0YXRlID0gc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIDFcblxubGV0IGFkdmFuY2VfZW9sIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIGxldCBuZXdsaW5lX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICBzdGF0ZS5vZmZzZXQgPC0gbmV3bGluZV9vZmZzZXQgKyAxO1xuICBzdGF0ZS5ib2xfb2Zmc2V0IDwtIHN0YXRlLm9mZnNldDtcbiAgc3RhdGUubGluZV9udW1iZXIgPC0gc3RhdGUubGluZV9udW1iZXIgKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlID0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aFxuXG5sZXQgYWRkX3Rva2VuX2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgc3RhY2tcbjs7XG5cbmxldCBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBpc19pZ25vcmluZyBzdGF0ZSA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHAgLT4gZmFsc2VcbiAgfCBTZXhwX2NvbW1lbnQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX25vdF9pZ25vcmluZyBzdGF0ZSA9IG5vdCAoaXNfaWdub3Jpbmcgc3RhdGUpXG5cbmxldCBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlID1cbiAgbGV0IGlzX3NpbmdsZSA9XG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBTaW5nbGUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBpc19zaW5nbGUgJiYgc3RhdGUuZnVsbF9zZXhwcyA+IDAgJiYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBUb29fbWFueV9zZXhwc1xuOztcblxubGV0IGFkZF9wb3Mgc3RhdGUgfmRlbHRhID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0ICsgZGVsdGEpXG47O1xuXG5sZXQgYWRkX2ZpcnN0X2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgY2hhcjtcbiAgKCogRm9yIG5vbi1xdW90ZWQgYXRvbXMsIHdlIHNhdmUgYm90aCBwb3NpdGlvbnMgYXQgdGhlIGVuZC4gV2UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgdGhlXG4gICAgIHN0YXJ0IHBvc2l0aW9uIGZyb20gdGhlIGVuZCBwb3NpdGlvbiBhbmQgdGhlIGF0b20gbGVuZ3RoIGZvciBub24tcXVvdGVkIGF0b21zLlxuXG4gICAgIERvaW5nIGl0IHRoaXMgd2F5IGFsbG93cyB1cyB0byBkZXRlY3Qgc2luZ2xlIGNoYXJhY2F0ZXIgYXRvbXMgZm9yIHdoaWNoIHdlIG5lZWQgdG9cbiAgICAgc2F2ZSB0aGUgcG9zaXRpb24gdHdpY2UuICopXG4gIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJyMnO1xuICBzdGFja1xuOztcblxubGV0IHN0YXJ0X3F1b3RlZF9zdHJpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICdcIic7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2VzY2FwZWQgc3RhdGUgYyBzdGFjayA9XG4gIGxldCBjJyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnbicgLT4gJ1xcbidcbiAgICB8ICdyJyAtPiAnXFxyJ1xuICAgIHwgJ2InIC0+ICdcXGInXG4gICAgfCAndCcgLT4gJ1xcdCdcbiAgICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1wiJyAtPiBjXG4gICAgfCBfIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xcXFwnO1xuICAgICAgY1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYyc7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xccic7XG4gIHN0YWNrXG47O1xuXG5sZXQgZGVjX3ZhbCBjID0gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG5cbmxldCBoZXhfdmFsIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICB8ICdhJyAuLiAnZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgfCBfIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG47O1xuXG5sZXQgYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBvcGVuaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIE9wZW4gc3RhY2sgZWxzZSBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICB0aGVuIChcbiAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBPcGVuIHN0YWNrKVxuICAgIGVsc2Ugc3RhY2tcbiAgfCBDc3QgLT4gT3BlbiAoY3VycmVudF9wb3Mgc3RhdGUsIHN0YWNrKVxuOztcblxubGV0IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0XG4gICAgc3RhdGUudXNlcl9zdGF0ZVxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG47O1xuXG5sZXQgcmVzZXRfcG9zaXRpb25zIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHAgLT4gKClcbiAgfCBDc3QgLT4gKClcbjs7XG5cbmxldCB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gIHwgU2luZ2xlIHwgTWFueSAtPiBzdGFja1xuICB8IEVhZ2VyIHsgZ290X3NleHAgPSBmOyBfIH0gLT5cbiAgICAoKiBNb2RpZnkgdGhlIG9mZnNldCBzbyB0aGF0IFtmXSBnZXQgYSBzdGF0ZSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50XG4gICAgICAgcy1leHByZXNzaW9uICopXG4gICAgbGV0IHNhdmVkX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICAgIHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyBkZWx0YTtcbiAgICBsZXQgc2F2ZWRfZnVsbF9zZXhwcyA9IHN0YXRlLmZ1bGxfc2V4cHMgaW5cbiAgICAobWF0Y2ggZiBzdGF0ZSBzdGFjayB3aXRoXG4gICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gICAgICAgcmFpc2UgZVxuICAgICB8IHN0YWNrIC0+XG4gICAgICAgKCogVGhpcyBhc3NlcnQgaXMgbm90IGEgZnVsbCBwcm90ZWN0aW9uIGFnYWluc3QgdGhlIHVzZXIgbXV0YXRpbmcgdGhlIHN0YXRlIGJ1dFxuICAgICAgICAgIGl0IHNob3VsZCBjYXRjaCBtb3N0IGNhc2VzLiAqKVxuICAgICAgIGFzc2VydCAoc3RhdGUub2Zmc2V0ID0gc2F2ZWRfb2Zmc2V0ICsgZGVsdGEgJiYgc3RhdGUuZnVsbF9zZXhwcyA9IHNhdmVkX2Z1bGxfc2V4cHMpO1xuICAgICAgIHN0YXRlLm9mZnNldCA8LSBzYXZlZF9vZmZzZXQ7XG4gICAgICAgcmVzZXRfcG9zaXRpb25zIHN0YXRlO1xuICAgICAgIHN0YWNrKVxuOztcblxubGV0IGlzX3RvcF9sZXZlbCBzdGF0ZSA9IGlzX25vdF9pZ25vcmluZyBzdGF0ZSAmJiBzdGF0ZS5kZXB0aCA9IDBcblxubGV0IGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZSB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgZWxzZSBzdGFja1xuOztcblxubGV0IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IF90bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPiBzdGF0ZS5kZXB0aCAtPlxuICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID0gc3RhdGUuZGVwdGggLT5cbiAgICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSB0bDtcbiAgICB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNleHBfYWRkZWQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHMgLT4gZGVsdGE6aW50IC0+IHMgPVxuICBmdW4gc3RhdGUgc3RhY2sgfmRlbHRhIC0+XG4gIGxldCBpc19jb21tZW50ID0gbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlIGluXG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZVxuICB0aGVuIChcbiAgICBpZiBub3QgaXNfY29tbWVudCB0aGVuIHN0YXRlLmZ1bGxfc2V4cHMgPC0gc3RhdGUuZnVsbF9zZXhwcyArIDE7XG4gICAgaWYgKG5vdCBpc19jb21tZW50KVxuICAgICAgIHx8XG4gICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICAgfCBDc3QgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YVxuICAgIGVsc2Ugc3RhY2spXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0IGFjYyA6IEF1dG9tYXRvbl9zdGFjay50IC0+IEF1dG9tYXRvbl9zdGFjay50ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBPcGVuIHN0YWNrIC0+IFNleHAgKExpc3QgYWNjLCBzdGFjaylcbiAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbWFrZV9saXN0IChzZXhwIDo6IGFjYykgc3RhY2tcbjs7XG5cbmxldCBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCAoc3RhY2sgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KVxuICA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPVxuICBtYXRjaCBzdGFjayB3aXRoXG4gIHwgSW5fc2V4cF9jb21tZW50IHIgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnQgeyByIHdpdGggcmV2X2NvbW1lbnRzID0gY29tbWVudCA6OiByLnJldl9jb21tZW50cyB9XG4gIHwgXyAtPiBUX29yX2NvbW1lbnQgKENvbW1lbnQgY29tbWVudCwgc3RhY2spXG47O1xuXG5sZXQgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgSW5fc2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgcmV2X2NvbW1lbnRzOyBzdGFjayB9IC0+XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgU2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgY29tbWVudHMgPSBMaXN0LnJldiByZXZfY29tbWVudHM7IHNleHAgfVxuICAgICAgaW5cbiAgICAgIGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrXG4gICAgfCBzdGFjayAtPiBUX29yX2NvbW1lbnQgKFNleHAgc2V4cCwgc3RhY2spXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdF9jc3QgZW5kX3BvcyBhY2MgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbWFrZV9saXN0X2NzdCBlbmRfcG9zICh0IDo6IGFjYykgc3RhY2tcbiAgICB8IE9wZW4gKHN0YXJ0X3Bvcywgc3RhY2spIC0+XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gTGlzdCB7IGxvYyA9IHsgc3RhcnRfcG9zOyBlbmRfcG9zIH07IGVsZW1lbnRzID0gYWNjIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gICAgfCBFbXB0eSB8IEluX3NleHBfY29tbWVudCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxubGV0IGNsb3NpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMFxuICB0aGVuIChcbiAgICBsZXQgc3RhY2sgOiBzID1cbiAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgICAgKCogTm90ZSB3ZSBzdG9yZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZSBpbiBbUG9zaXRpb25zLnRdLCBzbyB3ZSB1c2UgW2RlbHRhOjBdLFxuICAgICAgICAgICB3aGlsZSBpbiB0aGUgW0NzdF0gY2FzZSB3ZSBzYXZlIGRpcmVjdGx5IHRoZSBmaW5hbCByYW5nZXMsIHNvIHdlIHVzZVxuICAgICAgICAgICBbZGVsdGE6MV0uICopXG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIHN0YWNrXG4gICAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gbWFrZV9saXN0IFtdIHN0YWNrIGVsc2Ugc3RhY2tcbiAgICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgICBtYWtlX2xpc3QgW10gc3RhY2spXG4gICAgICAgIGVsc2Ugc3RhY2tcbiAgICAgIHwgQ3N0IC0+IG1ha2VfbGlzdF9jc3QgKGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YToxKSBbXSBzdGFja1xuICAgIGluXG4gICAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggLSAxO1xuICAgIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gIGVsc2UgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbjs7XG5cbmxldCBtYWtlX2xvYyA/KGRlbHRhID0gMCkgKHN0YXRlIDogKEF1dG9tYXRvbl9zdGF0ZS5Gb3JfY3N0LnQsIF8pIEF1dG9tYXRvbl9zdGF0ZS50KVxuICA6IFBvc2l0aW9ucy5yYW5nZVxuICA9XG4gIHsgc3RhcnRfcG9zID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3M7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGEgfVxuOztcblxuKCogVGhpcyBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbiBleGFjdGx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYVxuICAgbm9uLXF1b3RlZCBhdG9tICopXG5sZXQgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b20gPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBhdG9tIGluXG4gIGlmIGxlbiA9IDFcbiAgdGhlbiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfdHdpY2Ugc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgLSAxKVxuICBlbHNlIChcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLWxlbik7XG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKSlcbjs7XG5cbmxldCBlcHNfcHVzaF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGxvYyA6IFBvc2l0aW9ucy5yYW5nZSA9XG4gICAgICAgIHsgc3RhcnRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgICAgIDsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTowXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gQXRvbSB7IGxvYzsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzdHIgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IHB1c2hfcXVvdGVkX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1wiJztcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPVxuICAgICAgICBBdG9tIHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgcyB9XG4gICAgICBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MVxuOztcblxubGV0IHN0YXJ0X3NleHBfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSBzdGF0ZS5kZXB0aCA6OiBzdGF0ZS5pZ25vcmluZ19zdGFjaztcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgSW5fc2V4cF9jb21tZW50XG4gICAgICB7IGhhc2hfc2VtaV9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTsgcmV2X2NvbW1lbnRzID0gW107IHN0YWNrIH1cbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAxXG4gICAgdGhlbiAoXG4gICAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnIycpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG47O1xuXG5sZXQgZW5kX2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIC0gMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGNvbW1lbnQgPSBzIH1cbiAgICAgIGluXG4gICAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gICAgZWxzZSBzdGFja1xuOztcblxubGV0IHN0YXJ0X2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGVuZF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZTsgY29tbWVudCA9IHMgfSBpblxuICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBlcHNfZW9pX2NoZWNrIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFVuY2xvc2VkX3BhcmVuO1xuICBpZiBpc19pZ25vcmluZyBzdGF0ZSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwO1xuICBpZiBzdGF0ZS5mdWxsX3NleHBzID0gMFxuICB0aGVuIChcbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IE1hbnkgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZTsgXyB9IC0+ICgpXG4gICAgfCBTaW5nbGUgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSB0cnVlOyBfIH0gLT5cbiAgICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBOb19zZXhwX2ZvdW5kX2luX2lucHV0KTtcbiAgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19hdG9tXG4gIHwgUGFyc2luZ19saXN0XG4gIHwgUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX2F0b20gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19hdG9tXCJcbiAgICB8IFBhcnNpbmdfbGlzdCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2xpc3RcIlxuICAgIHwgUGFyc2luZ19zZXhwX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19zZXhwX2NvbW1lbnRcIlxuICAgIHwgUGFyc2luZ19ibG9ja19jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYmxvY2tfY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIG1hdGNoIHNleHBfb2ZfdCB0IHdpdGhcbiAgfCBBdG9tIHMgLT4gc1xuICB8IExpc3QgXyAtPiBmYWlsd2l0aCBcIkJVRzogW3NleHBfb2ZfdF0gcmV0dXJuZWQgYSBbTGlzdCBfXVwiXG47O1xuIiwib3BlbiBBdXRvbWF0b25fYWN0aW9uXG5cbmxldCByYWlzZSA9IEF1dG9tYXRvbl9hY3Rpb24ucmFpc2VfZXJyb3JcblxudHlwZSB1J1xudHlwZSBzJ1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3RhYmxlcy5wcmludF9jb2RlICgpICopXG5sZXQgdHJfMDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAwX2YgfVxuXG5sZXQgdHJfMDFfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDFfZiB9XG5cbmxldCB0cl8wMl9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDJfZiB9XG5cbmxldCB0cl8wM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wM19mIH1cblxubGV0IHRyXzA0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA0X2YgfVxuXG5sZXQgdHJfMDVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDVfZiB9XG5cbmxldCB0cl8wNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNl9mIH1cblxubGV0IHRyXzA3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA3X2YgfVxuXG5sZXQgdHJfMDhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOF9mIH1cblxubGV0IHRyXzA5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOV9mIH1cbmxldCB0cl8xMF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl8xMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTBfZiB9XG5sZXQgdHJfMTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl8xMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTFfZiB9XG5cbmxldCB0cl8xMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMl9mIH1cblxubGV0IHRyXzEzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTNfZiB9XG5cbmxldCB0cl8xNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNF9mIH1cblxubGV0IHRyXzE1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTVfZiB9XG5cbmxldCB0cl8xNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE2X2YgfVxuXG5sZXQgdHJfMTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTdfZiB9XG5cbmxldCB0cl8xOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE4X2YgfVxuXG5sZXQgdHJfMTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOV9mIH1cblxubGV0IHRyXzIwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMF9mIH1cblxubGV0IHRyXzIxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIxX2YgfVxuXG5sZXQgdHJfMjJfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG47O1xuXG5sZXQgdHJfMjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIyX2YgfVxuXG5sZXQgdHJfMjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIzX2YgfVxuXG5sZXQgdHJfMjRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjRfZiB9XG5cbmxldCB0cl8yNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI1X2YgfVxuXG5sZXQgdHJfMjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjZfZiB9XG5cbmxldCB0cl8yN19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI3X2YgfVxuXG5sZXQgdHJfMjhfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjhfZiB9XG5cbmxldCB0cl8yOV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI5X2YgfVxuXG5sZXQgdHJfMzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMF9mIH1cblxubGV0IHRyXzMxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMxX2YgfVxuXG5sZXQgdHJfMzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMl9mIH1cblxubGV0IHRyXzMzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzNfZiB9XG5cbmxldCB0cl8zNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9zZXhwX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM0X2YgfVxuXG5sZXQgdHJfMzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM1X2YgfVxuXG5sZXQgdHJfMzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM2X2YgfVxuXG5sZXQgdHJfMzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zN19mIH1cblxubGV0IHRyXzM4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM4X2YgfVxuXG5sZXQgdHJfMzlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM5X2YgfVxuXG5sZXQgdHJfNDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2VzY2FwZWQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQwX2YgfVxuXG5sZXQgdHJfNDFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDFfZiB9XG5cbmxldCB0cl80Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQyX2YgfVxuXG5sZXQgdHJfNDNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQzX2YgfVxuXG5sZXQgdHJfNDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NF9mIH1cblxubGV0IHRyXzQ1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDVfZiB9XG5cbmxldCB0cl80Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDZfZiB9XG5cbmxldCB0cl80N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ3X2YgfVxuXG5sZXQgdHJfNDhfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuOztcblxubGV0IHRyXzQ4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OF9mIH1cblxubGV0IHRyXzQ5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OV9mIH1cblxubGV0IHRyXzUwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTBfZiB9XG5cbmxldCB0cl81MV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG47O1xuXG5sZXQgdHJfNTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUxX2YgfVxuXG5sZXQgdHJfNTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUyX2YgfVxuXG5sZXQgdHJfNTNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81M19mIH1cblxubGV0IHRyXzU0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NF9mIH1cblxubGV0IHRyXzU1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTVfZiB9XG5cbmxldCB0cl81Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU2X2YgfVxuXG5sZXQgdHJfNTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTdfZiB9XG5cbmxldCB0cl81OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNThfZiB9XG5cbmxldCB0cl81OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU5X2YgfVxuXG5sZXQgdHJfNjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjBfZiB9XG5cbmxldCB0cl82MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYxX2YgfVxuXG5sZXQgdHJfNjJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Ml9mIH1cblxubGV0IHRyXzYzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjNfZiB9XG5cbmxldCB0cl82NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgKGlmIGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPD4gMCB0aGVuIDE2IGVsc2UgMCk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY0X2YgfVxuXG5sZXQgdHJfNjVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjVfZiB9XG5cbmxldCB0cl82Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY2X2YgfVxuXG5sZXQgdHJfNjdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjdfZiB9XG5cbmxldCB0cl82OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY4X2YgfVxuXG5sZXQgdHJfNjlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY5X2YgfVxuXG5sZXQgdHJfNzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MF9mIH1cblxubGV0IHRyXzcxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzFfZiB9XG5cbmxldCB0cl83Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcyX2YgfVxuXG5sZXQgdHJfNzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzczIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83M19mIH1cblxubGV0IHRyXzc0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NF9mIH1cblxubGV0IHRyXzc1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzVfZiB9XG5cbmxldCB0cl83Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc2X2YgfVxuXG5sZXQgdHJfNzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83N19mIH1cblxubGV0IHRyXzc4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc4X2YgfVxubGV0IHRyX2VvaV8wMF9mIHN0YXRlIHN0YWNrID0gZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xubGV0IHRyX2VvaV8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDBfZiB9XG5sZXQgdHJfZW9pXzAxX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyX2VvaV8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDFfZiB9XG5sZXQgdHJfZW9pXzAyX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfZW9pXzAyIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMl9mIH1cblxubGV0IHRyX2VvaV8wM19mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzAzIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wM19mIH1cblxubGV0IHRyX2VvaV8wNF9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA0IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNF9mIH1cblxubGV0IHRyX2VvaV8wNV9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA1IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNV9mIH1cbmxldCB0cl9lb2lfMDZfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbmxldCB0cl9lb2lfMDYgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA2X2YgfVxubGV0IHRyX2VvaV8wN19mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxubGV0IHRyX2VvaV8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDdfZiB9XG5cbmxldCB0cmFuc2l0aW9ucyA9XG4gIFt8IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAyXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAzXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAwXG4gICA7IHRyXzA0XG4gICA7IHRyXzA1XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA2XG4gICA7IHRyXzA3XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA4XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA5XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzAyXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI0XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI1XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI4XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI5XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI2XG4gICA7IHRyXzMwXG4gICA7IHRyXzMxXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzMyXG4gICA7IHRyXzMzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM0XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM1XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM3XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM4XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM5XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQxXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQyXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ0XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQxXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ2XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ3XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU2XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU0XG4gICA7IHRyXzU3XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU4XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzY0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzM1XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY1XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY2XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY3XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY4XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcwXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzY3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzc4XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gIHxdXG47O1xuXG5sZXQgdHJhbnNpdGlvbnNfZW9pID1cbiAgW3wgdHJfZW9pXzAwXG4gICA7IHRyX2VvaV8wMVxuICAgOyB0cl9lb2lfMDJcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzA0XG4gICA7IHRyX2VvaV8wNVxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgfF1cbjs7XG5cbmxldCBvbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcyA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50IGFycmF5ID1cbiAgW3wgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gIHxdXG47O1xuKCokKilcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN0YWNrID0gQXV0b21hdG9uX3N0YWNrXG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZVxuXG5sZXQgZmVlZCAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgY2hhciAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgaWR4ID0gKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSBsc2wgOCkgbG9yIENoYXIuY29kZSBjaGFyIGluXG4gIEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnMuKGlkeCkuZiBzdGF0ZSBjaGFyIHN0YWNrXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGZlZWRfZW9pICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgc3RhY2sgPSBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zX2VvaS4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKS5mIHN0YXRlIHN0YWNrIGluXG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHBfY29tbWVudCAtPiBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFNleHAgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIEF1dG9tYXRvbl90YWJsZXMub2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSlcbiAgICAgICAsIGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSApXG4gICAgIHdpdGhcbiAgICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIHRydWUgLT4gUGFyc2luZ19saXN0XG4gICAgIHwgcywgXyAtPiBzKVxuOztcblxubGV0IHJlYyBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3Vic3RyaW5nXCI7XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdWJieXRlcyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3ViYnl0ZXNcIjtcbiAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBzdGFjayA9XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG47O1xuXG5sZXQgZmVlZF9ieXRlcyBzdGF0ZSBzdHIgc3RhY2sgPSBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoQnl0ZXMubGVuZ3RoIHN0cilcblxubGV0IGVtcHR5X3N0YWNrIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gcyA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAtPiBTdGFjay5lbXB0eVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gU3RhY2suZW1wdHlcbiAgfCBQb3NpdGlvbnMgLT4gU3RhY2suSnVzdF9wb3NpdGlvbnMuZW1wdHlcbiAgfCBDc3QgLT4gU3RhY2suRm9yX2NzdC5lbXB0eVxuOztcblxubGV0IG9mX3N1YnN0cmluZyAodHlwZSB1IHMpIChtb2RlIDogKHUsIHMpIE1vZGUudCkgKGtpbmQgOiAodSwgcykgS2luZC50KSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzdGF0ZSA9IGNyZWF0ZSBtb2RlIGtpbmQgaW5cbiAgbGV0IHN0YWNrID0gZmVlZF9zdWJzdHJpbmcgc3RhdGUgcyB+cG9zIH5sZW4gKGVtcHR5X3N0YWNrIGtpbmQpIGluXG4gIHN0YXRlLCBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IHVzZXJfZXhuIDogZXhuXG4gIDsgc3ViX3NleHAgOiBTZXhwLnRcbiAgOyBsb2NhdGlvbiA6IFBvc2l0aW9ucy5yYW5nZSBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuIHsgdXNlcl9leG4gPSB1c2VyX2V4bl9fMDAyXzsgc3ViX3NleHAgPSBzdWJfc2V4cF9fMDA0XzsgbG9jYXRpb24gPSBsb2NhdGlvbl9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gW10gaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NhdGlvbl9fMDA2XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY2F0aW9uXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwNV8gPSBTZXhwLnNleHBfb2ZfdCBzdWJfc2V4cF9fMDA0XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN1Yl9zZXhwXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2V4biB1c2VyX2V4bl9fMDAyXyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVzZXJfZXhuXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB1c2VyX2V4biB0ID0gdC51c2VyX2V4blxubGV0IHN1Yl9zZXhwIHQgPSB0LnN1Yl9zZXhwXG5sZXQgbG9jYXRpb24gdCA9IHQubG9jYXRpb25cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgbGluZSwgc3RhcnQsIHN0b3AgPVxuICAgIG1hdGNoIHQubG9jYXRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAxLCAwLCAwXG4gICAgfCBTb21lIHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0gLT5cbiAgICAgIHN0YXJ0X3Bvcy5saW5lLCBzdGFydF9wb3MuY29sLCBzdGFydF9wb3MuY29sICsgZW5kX3Bvcy5vZmZzZXQgLSBzdGFydF9wb3Mub2Zmc2V0XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBjb252ZXJzaW9uIGVycm9yO1xcblxcXG4gICAgIGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBsaW5lXG4gICAgc3RhcnRcbiAgICBzdG9wXG4gICAgKFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCB0LnVzZXJfZXhuKVxuOztcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDhfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA5XyA9IHNleHBfb2ZfdCBhcmcwX18wMDhfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZl9zZXhwX2Vycm9yLm1sLk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA5XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwIH5sb2NhdGlvbiA9XG4gIHJhaXNlIChPZl9zZXhwX2Vycm9yIHsgdXNlcl9leG47IHN1Yl9zZXhwOyBsb2NhdGlvbiB9KVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNlX2Vycm9yIG9mIFBhcnNlX2Vycm9yLnRcbiAgfCBPZl9zZXhwX2Vycm9yIG9mIE9mX3NleHBfZXJyb3IudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gUGFyc2VfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDNfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA0XyA9IE9mX3NleHBfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA0XyBdXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQYXJzZV9lcnJvciBlIC0+IFBhcnNlX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbiAgfCBPZl9zZXhwX2Vycm9yIGUgLT4gT2Zfc2V4cF9lcnJvci5yZXBvcnQgcHBmIH5maWxlbmFtZSBlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlcl9pbnRmXG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5sZXQga2luZF90b19zdGFja1xuICA6IHR5cGUgc3RhY2suXG4gICAgKCdzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQgLT4gKG1vZHVsZSBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICA9XG4gIGZ1biAodHlwZSBzdGF0ZSkgKGtpbmQgOiAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUuS2luZC50KSAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBTZXhwIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBQb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2suSnVzdF9wb3NpdGlvbnMgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IENzdCAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0IDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbjs7XG5cbmxldCBtYWtlICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtb2RlIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZSlcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyAoKSA9IEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgbW9kZSBraW5kXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IHN0b3Agc3RhdGUgPSBBLnNldF9lcnJvcl9zdGF0ZSBzdGF0ZVxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBtYWtlX3ZhbHVlIHN0YXRlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrKVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgPVxuICAgICAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlICgpIGluXG4gICAgICBmZWVkX2VvaSBzdGF0ZSAoZmVlZF9zdHJpbmcgc3RhdGUgc3RyIFN0YWNrLmVtcHR5KVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciA9XG4gICAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciBlXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IG1ha2VfZWFnZXIgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNfZWFnZXIgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZSlcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICBtb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IChzdGF0ZSwgU3RhY2sudCkgQXV0b21hdG9uX3N0YXRlLnRcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgICAgbGV0IGxpbmUgPSBBLmxpbmVcbiAgICAgICAgbGV0IGNvbHVtbiA9IEEuY29sdW1uXG5cbiAgICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgICB7IG9mZnNldCA9IG9mZnNldCB0OyBsaW5lID0gbGluZSB0OyBjb2wgPSBjb2x1bW4gdCB9XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBSZWFkX29ubHlcblxuICAgICAgbGV0IGNyZWF0ZSA/cG9zID8obm9fc2V4cF9pc19lcnJvciA9IGZhbHNlKSBmID1cbiAgICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHN0YWNrID1cbiAgICAgICAgICBsZXQgcGFyc2VkX3ZhbHVlID0gbWFrZV92YWx1ZSBzdGF0ZSBzdGFjayBpblxuICAgICAgICAgIGYgc3RhdGUgcGFyc2VkX3ZhbHVlO1xuICAgICAgICAgIFN0YWNrLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgKEVhZ2VyIHsgZ290X3NleHA7IG5vX3NleHBfaXNfZXJyb3IgfSkga2luZFxuICAgICAgOztcblxuICAgICAgbGV0IHJlc2V0ID0gQS5yZXNldFxuICAgICAgbGV0IHN0b3AgdCA9IEEuc2V0X2Vycm9yX3N0YXRlIHRcbiAgICAgIGxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgdCA9IEF1dG9tYXRvbi5vbGRfcGFyc2VyX2NvbnRfc3RhdGUgdFxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBpZ25vcmUgKEEuZmVlZF9lb2kgc3RhdGUgc3RhY2sgOiBTdGFjay50KVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBtb2R1bGUgTGV4YnVmX2NvbnN1bWVyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGF0ZS50XG5cbiAgICAgIGV4Y2VwdGlvbiBHb3Rfc2V4cCBvZiBwYXJzZWRfdmFsdWUgKiBQb3NpdGlvbnMucG9zXG5cbiAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBwYXJzZWRfdmFsdWUgPVxuICAgICAgICByYWlzZV9ub3RyYWNlIChHb3Rfc2V4cCAocGFyc2VkX3ZhbHVlLCBTdGF0ZS5wb3NpdGlvbiBzdGF0ZSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlICgpID0gU3RhdGUuY3JlYXRlIGdvdF9zZXhwXG5cbiAgICAgIGxldCBwb3Nfb2ZfbGV4YnVmIGxleGJ1ZiA9XG4gICAgICAgIGxldCBwID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIGluXG4gICAgICAgIHsgUG9zaXRpb25zLmxpbmUgPSBwLnBvc19sbnVtOyBjb2wgPSBwLnBvc19jbnVtIC0gcC5wb3NfYm9sOyBvZmZzZXQgPSBwLnBvc19jbnVtIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB1cGRhdGVfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAocG9zIDogUG9zaXRpb25zLnBvcykgPVxuICAgICAgICBsZXQgcCA9IHBvcy5vZmZzZXQgLSBsZXhidWYubGV4X2Fic19wb3MgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBwO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBwO1xuICAgICAgICBsZXhidWYubGV4X2N1cnJfcFxuICAgICAgICA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgICAgICBwb3NfbG51bSA9IHBvcy5saW5lXG4gICAgICAgICAgIDsgcG9zX2NudW0gPSBwb3Mub2Zmc2V0XG4gICAgICAgICAgIDsgcG9zX2JvbCA9IHBvcy5vZmZzZXQgLSBwb3MuY29sXG4gICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmVlZF9sZXhidWYgdCAobGV4YnVmIDogTGV4aW5nLmxleGJ1Zikgc3RhY2sgPVxuICAgICAgICBsZXQgc3RhY2sgPVxuICAgICAgICAgIGZlZWRfc3ViYnl0ZXNcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgICAgICAgICBzdGFja1xuICAgICAgICAgICAgfnBvczpsZXhidWYubGV4X2N1cnJfcG9zXG4gICAgICAgICAgICB+bGVuOihsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X2N1cnJfcG9zKVxuICAgICAgICBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBpZiBub3QgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXhidWYucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgICAgIGZlZWRfbGV4YnVmIHQgbGV4YnVmIHN0YWNrKVxuICAgICAgICBlbHNlIGZlZWRfZW9pIHQgc3RhY2tcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9nZW4gdCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgICAgICBBLnJlc2V0IHQgfnBvczoocG9zX29mX2xleGJ1ZiBsZXhidWYpO1xuICAgICAgICBtYXRjaCBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBTdGFjay5lbXB0eSB3aXRoXG4gICAgICAgIHwgKCkgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IGV4Y2VwdGlvbiBHb3Rfc2V4cCAocGFyc2VkX3ZhbHVlLCBwb3MpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgcG9zO1xuICAgICAgICAgIFNvbWUgcGFyc2VkX3ZhbHVlXG4gICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICByYWlzZSBleG5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXRfbm9fc2V4cF9pc19lcnJvciB0IHggPVxuICAgICAgICBtYXRjaCBBLm1vZGUgdCB3aXRoXG4gICAgICAgIHwgRWFnZXIgZSAtPiBlLm5vX3NleHBfaXNfZXJyb3IgPC0geFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2UgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IHRydWU7XG4gICAgICAgIG1hdGNoIHBhcnNlX2dlbiB0IGxleGJ1ZiB3aXRoXG4gICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5wYXJzZV9nZW46IE5vbmVcIlxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX29wdCB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgZmFsc2U7XG4gICAgICAgIHBhcnNlX2dlbiB0IGxleGJ1ZlxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb252X2ludGZcblxubW9kdWxlIE1ha2VcbiAgICAoTW9kZSA6IE1vZGUpXG4gICAgKFNleHBfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IE1vZGUucGFyc2VkX3NleHApXG4gICAgKFBvc2l0aW9uc19wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gUG9zaXRpb25zLnQpID1cbnN0cnVjdFxuICBsZXQgcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIH5zdWIgdXNlcl9leG4gPVxuICAgIGxldCBsb2NhdGlvbiA9IE1vZGUuZmluZCBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIH5zdWIgaW5cbiAgICBPZl9zZXhwX2Vycm9yLnJhaXNlIH51c2VyX2V4biB+c3ViX3NleHA6c3ViIH5sb2NhdGlvblxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmID1cbiAgICBsZXQgcGFyc2VkX3ZhbHVlID0gU2V4cF9wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+XG4gICAgICBsZXQgcG9zaXRpb25zID0gUG9zaXRpb25zX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgICAgcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzdHIgZiA6IChfLCBDb252X2Vycm9yLnQpIHJlc3VsdCA9XG4gICAgbWF0Y2ggcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiB3aXRoXG4gICAgfCB4IC0+IE9rIHhcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpXG4gIDs7XG5cbiAgbGV0IGNvbnZfZXhuIChwYXJzZWRfdmFsdWUsIHBvc2l0aW9ucykgZiA9XG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPiByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgY29udiB4IGYgPVxuICAgIG1hdGNoIGNvbnZfZXhuIHggZiB3aXRoXG4gICAgfCB4IC0+IE9rIHhcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciBlXG4gIDs7XG5cbiAgbGV0IGNvbnZfY29tYmluZSByZXN1bHQgZiA6IChfLCBDb252X2Vycm9yLnQpIHJlc3VsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBPayB4IC0+XG4gICAgICAobWF0Y2ggY29udiB4IGYgd2l0aFxuICAgICAgIHwgT2sgXyBhcyByIC0+IHJcbiAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udi5TXG5tb2R1bGUgdHlwZSBQYXJzZXIgPSBQYXJzZXIuU1xubW9kdWxlIHR5cGUgRWFnZXJfcGFyc2VyID0gUGFyc2VyLlNfZWFnZXJcblxubW9kdWxlIENvbnZfZXJyb3IgPSBDb252X2Vycm9yXG5tb2R1bGUgT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3Jcbm1vZHVsZSBPbGRfcGFyc2VyX2NvbnRfc3RhdGUgPSBPbGRfcGFyc2VyX2NvbnRfc3RhdGVcbm1vZHVsZSBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yXG5tb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5tb2R1bGUgQ3N0ID0gQ3N0XG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvci5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3JcblxubGV0IGNvbnN0IGMgXyA9IGNcblxubW9kdWxlIFNpbmdsZSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBTaW5nbGUgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKSlcbm1vZHVsZSBNYW55ID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIE1hbnkgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSkpXG5tb2R1bGUgRWFnZXIgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFNleHAgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKSlcblxubGV0IGFuZF9nZXRfcG9zaXRpb25zIGdldF9zZXhwIHN0YXRlIHN0YWNrID0gZ2V0X3NleHAgc3RhY2ssIEEucG9zaXRpb25zIHN0YXRlXG5cbmxldCBhbmRfcG9zaXRpb25zIG1vZGUgZ2V0X3NleHAgPVxuICBQYXJzZXIubWFrZSBTZXhwX3dpdGhfcG9zaXRpb25zIG1vZGUgKGFuZF9nZXRfcG9zaXRpb25zIGdldF9zZXhwKVxuOztcblxubW9kdWxlIFNpbmdsZV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIFNpbmdsZSBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSlcbm1vZHVsZSBNYW55X2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgTWFueSBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9hbmRfcG9zaXRpb25zID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlclxuICAgICAgICAgU2V4cF93aXRoX3Bvc2l0aW9uc1xuICAgICAgICAgKEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlIHw+IGFuZF9nZXRfcG9zaXRpb25zKSlcblxubGV0IGp1c3RfZ2V0X3Bvc2l0aW9ucyBzdGF0ZSAoKSA9IEEucG9zaXRpb25zIHN0YXRlXG5sZXQganVzdF9wb3NpdGlvbnMgbW9kZSA9IFBhcnNlci5tYWtlIFBvc2l0aW9ucyBtb2RlIGp1c3RfZ2V0X3Bvc2l0aW9uc1xuXG5tb2R1bGUgU2luZ2xlX2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBTaW5nbGUpXG5tb2R1bGUgTWFueV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgTWFueSlcbm1vZHVsZSBFYWdlcl9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgUG9zaXRpb25zIGp1c3RfZ2V0X3Bvc2l0aW9ucylcblxubGV0IGNzdCBtb2RlIGYgPSBQYXJzZXIubWFrZSBDc3QgbW9kZSAoY29uc3QgZilcblxubW9kdWxlIE1hbnlfY3N0ID0gKHZhbCBjc3QgTWFueSBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2NzdCA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgQ3N0IChmdW4gXyBzdGFjayAtPlxuICAgICBtYXRjaCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueSBzdGFjayB3aXRoXG4gICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcblxudHlwZSAnYSBpZCA9ICdhXG50eXBlIHNleHBfbGlzdCA9IFNleHAudCBsaXN0XG5cbm1vZHVsZSBDb252X3NpbmdsZSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2FcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnRcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX3BoeXNcbiAgICBlbmQpXG4gICAgKFNpbmdsZSlcbiAgICAoU2luZ2xlX2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55ID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYSBsaXN0XG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCB4IH5mKVxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcbiAgICBlbmQpXG4gICAgKE1hbnkpXG4gICAgKE1hbnlfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnlfYXRfb25jZSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2FcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50IGxpc3RcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcbiAgICBlbmQpXG4gICAgKE1hbnkpXG4gICAgKE1hbnlfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBBdXRvbWF0b24gPSBBdXRvbWF0b25cbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGFjayA9IEF1dG9tYXRvbl9zdGFja1xuICBtb2R1bGUgQXV0b21hdG9uX3N0YXRlID0gQXV0b21hdG9uX3N0YXRlXG4gIG1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbmVuZFxuIiwiKCogZm9yIGxleGluZyBwb3NpdGlvbnM6XG4gICAtIGxudW0gc3RhcnRzIGZyb20gMVxuICAgLSBjbnVtIHN0YXJ0cyBmcm9tIDBcbiAgIC0gcG9zX2JvbCBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgbGluZVxuXG4gICBmb3IgYWJzb2x1dGUgcG9zOlxuICAgLSByb3cgc3RhcnRzIGZyb20gMVxuICAgLSBjb2wgc3RhcnRzIGZyb20gMVxuXG4gICBmb3IgcmVsYXRpdmUgcG9zLCBvYnZpb3VzbHkgMCBtZWFucyBzYW1lIHBvc2l0aW9uXG4qKVxuXG4oKiBvcGVyYXRpb25zIHRoYXQgbWFrZSBzZW5zZSBmb3IgYm90aCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcG9zaXRpb25zICopXG5tb2R1bGUgUG9zID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByb3cgOiBpbnRcbiAgICA7IGNvbCA6IGludFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IHsgcm93OyBjb2wgfSA9IFR5cGUuQXRvbSAoUHJpbnRmLnNwcmludGYgXCIlZDolZFwiIHJvdyBjb2wpXG4gIGxldCBhZGQgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyArIHQyLnJvdzsgY29sID0gdDEuY29sICsgdDIuY29sIH1cbiAgbGV0IHN1YiB0MSB0MiA9IHsgcm93ID0gdDEucm93IC0gdDIucm93OyBjb2wgPSB0MS5jb2wgLSB0Mi5jb2wgfVxuXG4gIGxldCBjb21wYXJlIHsgcm93ID0gcjE7IGNvbCA9IGMxIH0geyByb3cgPSByMjsgY29sID0gYzIgfSA9XG4gICAgaWYgcjEgPSByMiB0aGVuIGMxIC0gYzIgZWxzZSByMSAtIHIyXG4gIDs7XG5cbiAgbGV0IGdlcSB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPj0gMFxuZW5kXG5cbm1vZHVsZSBSZWxhdGl2ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCB6ZXJvID0geyByb3cgPSAwOyBjb2wgPSAwIH1cbmVuZFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgb3JpZ2luID0geyByb3cgPSAxOyBjb2wgPSAxIH1cblxuICBsZXQgb2ZfbGV4aW5nIHsgTGV4aW5nLnBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbDsgcG9zX2ZuYW1lID0gXyB9ID1cbiAgICB7IHJvdyA9IHBvc19sbnVtOyBjb2wgPSBwb3NfY251bSAtIHBvc19ib2wgKyAxIH1cbiAgOztcblxuICBsZXQgZGlmZiA9IHN1YlxuZW5kXG4iLCIoKiogVHlwZSBvZiBhbm5vdGF0ZWQgUy1leHByZXNzaW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoUG9zIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAoKiogSW4gW0F0b20gKF8sIHMsIG9wdCldLCBbc10gaXMgdGhlIHVuZXNjYXBlZCBzdHJpbmcsIHRoYXQgaXMgdGhlIGFyZ3VtZW50IG9mXG4gICAgICAgIFtUeXBlLkF0b21dLiBXaGVuIFtvcHRdIGlzIGRlZmluZWQsIGl0IGlzIHRoZSBzb3VyY2Ugc3ludGF4IG9mIFtzXSwgdGhhdCBpcyBhXG4gICAgICAgIHN0cmluZyB0aGF0IGNhbiBiZSBwcmludGVkIGFzIGlzIGlmIG9uZSB3YW50cyB0byBwYXJzZSBhbmQgcHJpbnQgcHJlc2VydmluZ1xuICAgICAgICBzeW50YXguIFRoaXMgaXMgdXN1YWxseSBzZXQgZm9yIHF1b3RlZCBhdG9tcyAodG8gcHJlc2VydmUgdGhlIGZhY3QgdGhhdCB3ZXJlXG4gICAgICAgIHF1b3RlZCksIGJ1dCBpdCBjYW4gYmUgdXNlZnVsIHRvIGRvIHRoZSByZXZlcnNlOiBzZXQgaXQgZm9yIGF0b21zIHRoYXQgY2FuIGJlXG4gICAgICAgIHBhcnNlZCB1bnF1b3RlZCBidXQgd291bGQgYmUgcHJpbnRlZCB3aXRoIHF1b3RlcywgdG8gcHJlc2VydmUgdGhlIGxhY2sgb2YgcXVvdGVzLlxuICAgICAgICBGb3IgaW5zdGFuY2U6XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBOb25lKSBzaG91bGQgYmUgcHJpbnRlZCB7fGF8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBOb25lKSBzaG91bGQgYmUgcHJpbnRlZCB7fFwiYSBiXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImFcIiwgU29tZSBcIlxcXCJhXFxcIlwiKSBzaG91bGQgYmUgcHJpbnRlZCB7fFwiYVwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgU29tZSBcImEgYlwiKSBzaG91bGQgYmUgcHJpbnRlZCB7fGEgYnx9IG9yIG1heSByYWlzZSwgYXMgaXQgaXNcbiAgICAgICAgYW4gZXJyb3IgdG8gY29uc3RydWN0ZWQgc3VjaCBhbiBhdG9tIChkb2Vzbid0IHBhcnNlIGJhY2spICopXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXRvbSBvZiBQb3MudCAqIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAgIHwgTGlzdCBvZiBQb3MudCAqIHRfb3JfY29tbWVudCBsaXN0ICogUG9zLnRcblxuICAgICgqIHBvc2l0aW9ucyBvZiBsZWZ0IGFuZCByaWdodCBwYXJlbnMgKilcbiAgICBhbmQgdF9vcl9jb21tZW50ID1cbiAgICAgIHwgU2V4cCBvZiB0XG4gICAgICB8IENvbW1lbnQgb2YgY29tbWVudFxuXG4gICAgYW5kIGNvbW1lbnQgPVxuICAgICAgfCBQbGFpbl9jb21tZW50IG9mIFBvcy50ICogc3RyaW5nXG4gICAgICB8IFNleHBfY29tbWVudCBvZiBQb3MudCAqIGNvbW1lbnQgbGlzdCAqIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIHNleHBfb2ZfY29tbWVudCA6IGNvbW1lbnQgLT4gVHlwZS50XG4gICAgdmFsIHNleHBfb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmRcblxuICBtb2R1bGUgVG9fc2V4cCA6IHNpZ1xuICAgIHZhbCBvZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfY29tbWVudCA6IGNvbW1lbnQgLT4gVHlwZS50XG4gICAgdmFsIG9mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kID0gc3RydWN0XG4gICAgKCogbWF5YmUgd2UgY2FuIGFjdHVhbGx5IHVzZSBjb252IGhlcmUsIGluc3RlYWQgb2YgaW5saW5pbmcgaXQgKilcblxuICAgIGxldCBvZl9wb3MgPSBQb3Muc2V4cF9vZl90XG4gICAgbGV0IG9mX3N0cmluZyB4ID0gVHlwZS5BdG9tIHhcbiAgICBsZXQgb2ZfbGlzdCBvZl9hIHhzID0gVHlwZS5MaXN0IChMaXN0Lm1hcCB+ZjpvZl9hIHhzKVxuXG4gICAgbGV0IG9mX29wdGlvbiBvZl9hID0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSB4IC0+IFR5cGUuTGlzdCBbIG9mX2EgeCBdXG4gICAgICB8IE5vbmUgLT4gVHlwZS5MaXN0IFtdXG4gICAgOztcblxuICAgIGxldCByZWMgb2ZfdCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkF0b21cIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjI7IG9mX29wdGlvbiBvZl9zdHJpbmcgdjMgXVxuICAgICAgfCBMaXN0ICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJMaXN0XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl90X29yX2NvbW1lbnQgdjI7IG9mX3BvcyB2MyBdXG5cbiAgICBhbmQgb2ZfdF9vcl9jb21tZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cCB0IC0+IFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBcIjsgb2ZfdCB0IF1cbiAgICAgIHwgQ29tbWVudCBjIC0+IFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkNvbW1lbnRcIjsgb2ZfY29tbWVudCBjIF1cblxuICAgIGFuZCBvZl9jb21tZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgUGxhaW5fY29tbWVudCAodjEsIHYyKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJQbGFpbl9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyIF1cbiAgICAgIHwgU2V4cF9jb21tZW50ICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX2NvbW1lbnQgdjI7IG9mX3QgdjMgXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3QgPSBUb19zZXhwLm9mX3RcbiAgbGV0IHNleHBfb2ZfY29tbWVudCA9IFRvX3NleHAub2ZfY29tbWVudFxuICBsZXQgc2V4cF9vZl90X29yX2NvbW1lbnQgPSBUb19zZXhwLm9mX3Rfb3JfY29tbWVudFxuZW5kXG5cbmluY2x1ZGUgTWFrZSAoU3JjX3Bvcy5SZWxhdGl2ZSlcbm1vZHVsZSBQYXJzZWQgPSBNYWtlIChTcmNfcG9zLkFic29sdXRlKVxuXG5sZXQgcmVsYXRpdml6ZSA9XG4gIGxldCByZWwgfm91dGVyX3AgcCA9IFNyY19wb3MuQWJzb2x1dGUuZGlmZiBwIG91dGVyX3AgaW5cbiAgbGV0IHJlYyBhdXhfdCB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuQXRvbSAocG9zLCBzLCBzb3B0KSAtPiBBdG9tIChyZWwgcG9zIH5vdXRlcl9wLCBzLCBzb3B0KVxuICAgIHwgUGFyc2VkLkxpc3QgKHN0YXJ0X3BvcywgdG9jcywgZW5kX3BvcykgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKCByZWwgc3RhcnRfcG9zIH5vdXRlcl9wXG4gICAgICAgICwgTGlzdC5tYXAgdG9jcyB+ZjooZnVuIHRvYyAtPiBhdXhfdG9jIH5vdXRlcl9wOnN0YXJ0X3BvcyB0b2MpXG4gICAgICAgICwgcmVsIGVuZF9wb3Mgfm91dGVyX3AgKVxuICBhbmQgYXV4X3RvYyB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuU2V4cCB0IC0+IFNleHAgKGF1eF90IHQgfm91dGVyX3ApXG4gICAgfCBQYXJzZWQuQ29tbWVudCBjIC0+IENvbW1lbnQgKGF1eF9jIGMgfm91dGVyX3ApXG4gIGFuZCBhdXhfYyB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuUGxhaW5fY29tbWVudCAocG9zLCB0eHQpIC0+IFBsYWluX2NvbW1lbnQgKHJlbCBwb3Mgfm91dGVyX3AsIHR4dClcbiAgICB8IFBhcnNlZC5TZXhwX2NvbW1lbnQgKHBvcywgY3MsIHQpIC0+XG4gICAgICBTZXhwX2NvbW1lbnRcbiAgICAgICAgKHJlbCBwb3Mgfm91dGVyX3AsIExpc3QubWFwIGNzIH5mOihmdW4gYyAtPiBhdXhfYyB+b3V0ZXJfcCBjKSwgYXV4X3QgdCB+b3V0ZXJfcClcbiAgaW5cbiAgZnVuIHRvYyAtPiBhdXhfdG9jIHRvYyB+b3V0ZXJfcDpTcmNfcG9zLkFic29sdXRlLm9yaWdpblxuOztcbiIsInR5cGUgdG9rZW4gPVxuICB8IFNUUklORyBvZiAoc3RyaW5nKVxuICB8IExQQVJFTlxuICB8IFJQQVJFTlxuICB8IEVPRlxuICB8IEhBU0hfU0VNSVxuXG5vcGVuIFBhcnNpbmc7O1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4jIDIzIFwic3JjL3BhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTggKCogTFBBUkVOICopO1xuICAyNTkgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjAgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDIyXFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMTBcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTJcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxNVxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDA0MFxcMDAwXFxcblxcMDM0XFwyNTVcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMjU1XFxcblxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDI1NVxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMjlcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI4NlxubGV0IHl5dGFibGUgPSBcIlxcMDE2XFwwMDBcXFxuXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDAyM1xcMDAwXFwwMjlcXDAwMFxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMzlcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDIyXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMzFcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDI2XFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA4XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjhcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA4XFwwMDBcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMDExXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAxNzAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE3NyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICggVHlwZS5BdG9tIF8xIClcbiMgMTg0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IFtdIClcbiMgMTkwIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IChMaXN0LnJldiBfMikgKVxuIyAxOTcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIwMyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMTAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMTggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjMzIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnRzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTAgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzEgKVxuIyAyNDAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF8yIClcbiMgMjQ4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAyNTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTm9uZSApXG4jIDI2MSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAyNjggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjgzIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5MSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyOTggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzA0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDMxMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMTcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZS50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pXG4gIHwgQ09NTUVOVCBvZiAoc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAoKiBQYXJzZXI6IEdyYW1tYXIgU3BlY2lmaWNhdGlvbiBmb3IgUGFyc2luZyBTLWV4cHJlc3Npb25zICopXG4gICgqIGNvbXBhcmUgdG8gcGFyc2VyLm1seSAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIFdpdGhfcG9zID0gc3RydWN0XG5cbiAgICBvcGVuIFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkXG5cbiAgICBsZXQgY29lcmNlID0gU3JjX3Bvcy5BYnNvbHV0ZS5vZl9sZXhpbmdcblxuICAgIGxldCBzdGFydF9wb3MgKCkgPSBjb2VyY2UgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSlcblxuICAgIGxldCBlbmRfcG9zICgpID1cbiAgICAgIGxldCBwID0gUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSBpblxuICAgICAgY29lcmNlIHsgcCB3aXRoIExleGluZy5wb3NfY251bSA9IHAuTGV4aW5nLnBvc19jbnVtIC0gMSB9XG5cbiAgICBsZXQgYXRvbSAoeCwgeSkgPVxuICAgICAgbGV0IChwb3MsIHkpID1cbiAgICAgICAgbWF0Y2ggeSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoc3RhcnRfcG9zICgpLCBTb21lIHgpXG4gICAgICAgIHwgU29tZSAocG9zLCB4KSAtPiAoY29lcmNlIHBvcywgU29tZSB4KVxuICAgICAgaW5cbiAgICAgIEF0b20gKHBvcywgeCwgeSlcblxuICAgIGxldCBsaXN0IHRzID0gTGlzdCAoc3RhcnRfcG9zICgpLCB0cywgZW5kX3BvcyAoKSlcblxuICAgIGxldCBzZXhwICAgIHggPSBTZXhwICAgIHhcbiAgICBsZXQgY29tbWVudCB4ID0gQ29tbWVudCB4XG5cbiAgICBsZXQgc2V4cF9jb21tZW50IGNzIHQgPSBTZXhwX2NvbW1lbnQgKHN0YXJ0X3BvcyAoKSwgY3MsIHQpXG5cbiAgICBsZXQgcGxhaW5fY29tbWVudCAoeCwgcG9zX29wdCkgPVxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIG1hdGNoIHBvc19vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3RhcnRfcG9zICgpXG4gICAgICAgIHwgU29tZSBwb3MgLT4gY29lcmNlIHBvc1xuICAgICAgaW5cbiAgICAgIFBsYWluX2NvbW1lbnQgKHBvcywgeClcblxuICBlbmRcblxuIyA2MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgMjU5ICgqIExQQVJFTiAqKTtcbiAgMjYwICgqIFJQQVJFTiAqKTtcbiAgICAwICgqIEVPRiAqKTtcbiAgMjYxICgqIEhBU0hfU0VNSSAqKTtcbiAgICAwfF1cblxubGV0IHl5dHJhbnNsX2Jsb2NrID0gW3xcbiAgMjU3ICgqIFNUUklORyAqKTtcbiAgMjU4ICgqIENPTU1FTlQgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAxMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDA2XFwwMDBcXDAyMlxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMlxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxM1xcMDAwXFwwMjNcXDAwMFxcMDIwXFwwMDBcXDAxNVxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxNlxcMDAwXFwwMjFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTdcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNlxcMDAwXFxcblxcMDIwXFwwMDBcXDAxOFxcMDAwXFwwMjFcXDAwMFxcMDIzXFwwMDBcXDAyNlxcMDAwXFwwMTNcXDAwMFxcMDI0XFwwMDBcXDAxNFxcMDAwXFxcblxcMDI5XFwwMDBcXDAxNVxcMDAwXFwwMjJcXDAwMFwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwMzdcXDAwMFxcXG5cXDAwOVxcMjU1XFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMjU1XFwwMDlcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI3XFwyNTVcXDI1MVxcMjU1XFwyMzVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyMzRcXDI1NVxcMDEwXFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyOTJcbmxldCB5eXRhYmxlID0gXCJcXDAzNlxcMDAwXFxcblxcMDE2XFwwMDBcXDAzM1xcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAyOFxcMDAwXFwwMzNcXDAwMFxcMDE5XFwwMDBcXDAzN1xcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAyNVxcMDAwXFwwMTFcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDM1XFwwMDBcXDAxMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMjlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMTBcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDFcXDAwNVxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgQ09NTUVOVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgKCBXaXRoX3Bvcy5hdG9tIF8xIClcbiMgMjE0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmxpc3QgKExpc3QucmV2IF8yKSApXG4jIDIyMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDc3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIyNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDgwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgKCBXaXRoX3Bvcy5wbGFpbl9jb21tZW50IF8xIClcbiMgMjM0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9jb21tZW50c19hYnMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwX2NvbW1lbnQgKExpc3QucmV2IF8yKSBfMyApXG4jIDI0MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBbXSApXG4jIDI0OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9jb21tZW50c19hYnMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjU2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cCBfMSApXG4jIDI2MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5jb21tZW50IF8xIClcbiMgMjcwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgOTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBbXSApXG4jIDI3NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICggVHlwZV93aXRoX2xheW91dC5yZWxhdGl2aXplIF8xIClcbiMgMjkxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgOTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAoIFNvbWUgXzEgKVxuIyAyOTggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDMwNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAoIFtfMV0gKVxuIyAzMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMzE5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMjYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTA4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzMyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDMzOSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzNDUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzUyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KSlcbigqIEVudHJ5IHNleHAgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cF9vcHQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHNfYWJzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudClcbmxldCBzZXhwX29wdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHNleHBzX2FicyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgcmV2X3NleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA1IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KVxuIiwiIyAxIFwic3JjL2xleGVyLm1sbFwiXG4gXG4gICgqKiBMZXhlcjogTGV4ZXIgU3BlY2lmaWNhdGlvbiBmb3IgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gICAgfCAnbicgLT4gJ1xcMDEwJ1xuICAgIHwgJ3InIC0+ICdcXDAxMydcbiAgICB8ICdiJyAtPiAnXFwwMDgnXG4gICAgfCAndCcgLT4gJ1xcMDA5J1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IGxmID0gJ1xcMDEwJ1xuXG4gIGxldCBkZWNfY29kZSBjMSBjMiBjMyA9XG4gICAgMTAwICogKENoYXIuY29kZSBjMSAtIDQ4KSArIDEwICogKENoYXIuY29kZSBjMiAtIDQ4KSArIChDaGFyLmNvZGUgYzMgLSA0OClcblxuICBsZXQgaGV4X2NvZGUgYzEgYzIgPVxuICAgIGxldCBkMSA9IENoYXIuY29kZSBjMSBpblxuICAgIGxldCB2YWwxID1cbiAgICAgIGlmIGQxID49IDk3IHRoZW4gZDEgLSA4N1xuICAgICAgZWxzZSBpZiBkMSA+PSA2NSB0aGVuIGQxIC0gNTVcbiAgICAgIGVsc2UgZDEgLSA0OCBpblxuICAgIGxldCBkMiA9IENoYXIuY29kZSBjMiBpblxuICAgIGxldCB2YWwyID1cbiAgICAgIGlmIGQyID49IDk3IHRoZW4gZDIgLSA4N1xuICAgICAgZWxzZSBpZiBkMiA+PSA2NSB0aGVuIGQyIC0gNTVcbiAgICAgIGVsc2UgZDIgLSA0OCBpblxuICAgIHZhbDEgKiAxNiArIHZhbDJcblxuICBsZXQgZm91bmRfbmV3bGluZSAoeyBsZXhfY3Vycl9wOyBfIH0gYXMgbGV4YnVmKSBkaWZmID1cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAge1xuICAgICAgICBsZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsZXhfY3Vycl9wLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxleF9jdXJyX3AucG9zX2NudW0gLSBkaWZmO1xuICAgICAgfVxuXG4gICgqIHNhbWUgbGVuZ3RoIGNvbXB1dGF0aW9uIGFzIGluIFtMZXhpbmcubGV4ZW1lXSAqKVxuICBsZXQgbGV4ZW1lX2xlbiB7IGxleF9zdGFydF9wb3M7IGxleF9jdXJyX3BvczsgXyB9ID0gbGV4X2N1cnJfcG9zIC0gbGV4X3N0YXJ0X3Bvc1xuXG4gIGxldCBtYWluX2ZhaWx1cmUgbGV4YnVmIG1zZyA9XG4gICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJTZXhwbGliLkxleGVyLm1haW46ICVzIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgIG1zZyBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgICAgIHZhbCBhZGRfY2hhciA6IHQgLT4gY2hhciAtPiB1bml0XG4gICAgICB2YWwgYWRkX3N1YmJ5dGVzIDogdCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfbGV4ZW1lIDogdCAtPiBsZXhidWYgLT4gdW5pdFxuICAgICAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gICAgICB2YWwgb2ZfYnVmZmVyIDogQnVmZmVyLnQgLT4gdFxuICAgIGVuZFxuICAgIG1vZHVsZSBUb2tlbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgbHBhcmVuIDogdFxuICAgICAgdmFsIHJwYXJlbiA6IHRcbiAgICAgIHZhbCBlb2YgOiB0XG4gICAgICB2YWwgc2ltcGxlX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICB2YWwgaGFzaF9zZW1pIDogdFxuICAgICAgdmFsIHF1b3RlZF9zdHJpbmcgOiBMZXhpbmcucG9zaXRpb24gLT4gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiB0XG4gICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgdmFsIGNvbW1lbnQgOiBzdHJpbmcgLT4gbWFpbjpzIC0+IHNcbiAgICAgIHZhbCBibG9ja19jb21tZW50IDogTGV4aW5nLnBvc2l0aW9uIC0+IG1haW46cyAtPiBzXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogVCkgOiBzaWdcbiAgICB2YWwgbWFpbiA6ID9idWY6QnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiBYLlRva2VuLnRcbiAgZW5kID0gc3RydWN0ICgqIEJFR0lOIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG4gICAgb3BlbiBYXG5cbiMgODMgXCJzcmMvbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjQ0XFwyNTVcXDAxMFxcMDAwXFwwNDNcXDAwMFxcMDUzXFwwMDBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDA4NlxcMDAwXFwyNDhcXDI1NVxcMjQ5XFwyNTVcXDA5NlxcMDAwXFxcbiAgICBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTcyXFwwMDBcXDE4MlxcMDAwXFwyMjBcXDAwMFxcMjMwXFwwMDBcXDAwN1xcMDAxXFwyNDdcXDI1NVxcXG4gICAgXFwwMTdcXDAwMVxcMDUwXFwwMDFcXDA2MFxcMDAxXFwwOTNcXDAwMVxcMTAzXFwwMDFcXDEzNlxcMDAxXFwxNDZcXDAwMVxcMTgxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDIyNFxcMDAxXFwyMzRcXDAwMVxcMDExXFwwMDJcXDAzN1xcMDAwXFwyNDZcXDI1NVxcMDgwXFwwMDBcXDI0OFxcMjU1XFxcbiAgICBcXDAyM1xcMDAyXFwyNTVcXDI1NVxcMjQ5XFwyNTVcXDA1N1xcMDAyXFwwMzNcXDAwMlxcMjUyXFwyNTVcXDAwN1xcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMTEyXFwwMDJcXDI1MVxcMjU1XFwxNDRcXDAwMlxcMjUwXFwyNTVcXDA4MVxcMDAwXFwyNTBcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMTIyXFwwMDBcXDI1NVxcMjU1XFwxNjZcXDAwMFxcMTMwXFwwMDFcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMTczXFwwMDFcXDI1MVxcMDAxXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDIzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAxN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzVcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDQ2XFwwMDBcXDAwOVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMzZcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXDAzOFxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDUzXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDI0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxN1xcMDAwXFwwNTlcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDE5XFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMjlcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDI1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBtYWluIGJ1ZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICggZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgbWFpbiBidWYgbGV4YnVmIClcbiMgMzY5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgOTYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgKCBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNzQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRcbiMgMzgwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA5NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uY29tbWVudCB0ZXh0IH5tYWluIGJ1ZiBsZXhidWYgKVxuIyAzODQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmxwYXJlbiApXG4jIDM4OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDk5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4ucnBhcmVuIClcbiMgMzk0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMTAxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHBvcyBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5xdW90ZWRfc3RyaW5nIHBvcyBidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDA2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgMTA5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIFRva2VuLmhhc2hfc2VtaSApXG4jIDQxMSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA3IC0+XG4jIDExMSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgW3Bvc10gbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4uYmxvY2tfY29tbWVudCBwb3Mgfm1haW4gYnVmIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MjMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxuIyAxMTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImlsbGVnYWwgZW5kIG9mIGNvbW1lbnRcIiApXG4jIDQyOCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDEyNSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiY29tbWVudCB0b2tlbnMgaW4gdW5xdW90ZWQgYXRvbVwiIClcbiMgNDMzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEwIC0+XG5sZXRcbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0clxuIyA0MzkgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyNiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUb2tlbi5zaW1wbGVfc3RyaW5nIHN0ciApXG4jIDQ0MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMSAtPlxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5lb2YgKVxuIyA0NDggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIDM2XG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEzMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjsgKCkgKVxuIyA0NjAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxMzIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IGxlbiA9IGxleGVtZV9sZW4gbGV4YnVmIC0gMiBpblxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0NzAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxMzkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IGxlbiA9IGxleGVtZV9sZW4gbGV4YnVmIC0gMyBpblxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0ODAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDE0NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgNDg2IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGluXG4jIDE0NiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ5NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG5sZXRcbiMgMTUxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgYzFcbiMgNTAwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMTUxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1MDUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNcbiMgNTEwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGRlY19jb2RlIGMxIGMyIGMzIGluXG4gICAgICAgIGlmIHYgPiAyNTUgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogXFxcbiAgICAgICAgICAgICAgIGlsbGVnYWwgZXNjYXBlIGF0IGxpbmUgJWQgY2hhciAlZDogYFxcXFwlYyVjJWMnXCJcbiAgICAgICAgICAgICAgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbCAtIDMpXG4gICAgICAgICAgICAgIGMxIGMyIGMzIGluXG4gICAgICAgICAgZmFpbHdpdGggbXNnKTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDUyOCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG5sZXRcbiMgMTY3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMxXG4jIDUzNCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE2NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUzOSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBoZXhfY29kZSBjMSBjMiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTQ4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAxNzQgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIGNcbiMgNTU0IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGluXG4jIDE3NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU2MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA3IC0+XG4jIDE4MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgbGY7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NzMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxuIyAxODkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG9mcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gb2ZzIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgb2ZzIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU4NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDE5NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmcgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgIHN0YXJ0LnBvc19sbnVtIChzdGFydC5wb3NfY251bSAtIHN0YXJ0LnBvc19ib2wpXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA1OTYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiA1M1xuYW5kIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyMDggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwOyBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjA5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMjExIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYxNSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDIxNCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAxIH0gaW5cbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZlxuICAgICAgKVxuIyA2MjYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAyMjIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAoXG4gICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDIgfSBpblxuICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiAoc3RhcnQgOjogbG9jcykgbGV4YnVmXG4gICAgKVxuIyA2MzYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAyMjkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbX10gLT4gKCkgKCogdGhlIGNvbW1lbnQgaXMgZmluaXNoZWQgKilcbiAgICAgICAgfCBfIDo6IChfIDo6IF8gYXMgdCkgLT4gc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiB0IGxleGJ1ZlxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZSAgKCogaW1wb3NzaWJsZSAqKVxuICAgICAgKVxuIyA2NDcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAyMzcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA6OiBfIC0+XG4gICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICAgc3ByaW50ZiBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9ibG9ja19jb21tZW50OiBcXFxuICAgICAgICAgICAgICAgIHVudGVybWluYXRlZCBibG9jayBjb21tZW50IGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICAgICAgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNjYyIFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAyNDkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgKCogUkVTVU1FIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgICBsZXQgbWFpbiA/YnVmID1cbiAgICAgIGxldCBidWYgPVxuICAgICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gUXVvdGVkX3N0cmluZ19idWZmZXIuY3JlYXRlIDY0XG4gICAgICAgIHwgU29tZSBidWYgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLm9mX2J1ZmZlciBidWZcbiAgICAgIGluXG4gICAgICBtYWluIGJ1ZlxuXG4gIGVuZCAoKiBFTkQgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICBtb2R1bGUgVmFuaWxsYSA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBCdWZmZXJcbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgXyBfID0gKClcbiAgICAgICAgbGV0IG9mX2J1ZmZlciBiID0gYlxuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HIHhcbiAgICAgICAgbGV0IHF1b3RlZF9zdHJpbmcgXyBidWYgPSBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBidWYpXG4gICAgICAgIGxldCBibG9ja19jb21tZW50IF9wb3Mgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmXG4gICAgICAgIGxldCBjb21tZW50IF90ZXh0IH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZiAoKiBza2lwIGFuZCBjb250aW51ZSBsZXhpbmcgKilcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBtb2R1bGUgV2l0aF9sYXlvdXQgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICBjb250ZW50cyA6IEJ1ZmZlci50O1xuICAgICAgICAgIGxleGVtZSA6IEJ1ZmZlci50O1xuICAgICAgICB9XG4gICAgICAgIGxldCBjcmVhdGUgbiA9IHtjb250ZW50cyA9IEJ1ZmZlci5jcmVhdGUgbjsgbGV4ZW1lID0gQnVmZmVyLmNyZWF0ZSBufVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGNvbnRlbnRzID0geyBjb250ZW50czsgbGV4ZW1lID0gQnVmZmVyLmNyZWF0ZSA2NCB9XG4gICAgICAgIGxldCBhZGRfY2hhciB0IGNoID0gQnVmZmVyLmFkZF9jaGFyIHQuY29udGVudHMgY2hcbiAgICAgICAgbGV0IGFkZF9zdWJieXRlcyB0IHN0ciBvZnMgbGVuID0gQnVmZmVyLmFkZF9zdWJieXRlcyB0LmNvbnRlbnRzIHN0ciBvZnMgbGVuXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIHQgbGV4YnVmID0gQnVmZmVyLmFkZF9zdHJpbmcgdC5sZXhlbWUgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICBsZXQgY2xlYXIgdCA9IEJ1ZmZlci5jbGVhciB0LmxleGVtZTsgQnVmZmVyLmNsZWFyIHQuY29udGVudHNcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyX3dpdGhfbGF5b3V0XG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyAoeCwgTm9uZSlcbiAgICAgICAgbGV0IHF1b3RlZF9zdHJpbmcgcG9zIHtRdW90ZWRfc3RyaW5nX2J1ZmZlci5jb250ZW50czsgbGV4ZW1lfSA9XG4gICAgICAgICAgU1RSSU5HIChCdWZmZXIuY29udGVudHMgY29udGVudHMsIFNvbWUgKHBvcywgQnVmZmVyLmNvbnRlbnRzIGxleGVtZSkpXG4gICAgICAgIGxldCBibG9ja19jb21tZW50IHBvcyB+bWFpbjpfIHtRdW90ZWRfc3RyaW5nX2J1ZmZlci5jb250ZW50cyA9IF87IGxleGVtZX0gX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAoQnVmZmVyLmNvbnRlbnRzIGxleGVtZSwgU29tZSBwb3MpXG4gICAgICAgIGxldCBjb21tZW50IHRleHQgfm1haW46XyBfYnVmIF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKHRleHQsIE5vbmUpXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbGV0IG1haW4gPSBWYW5pbGxhLm1haW5cbiAgbGV0IG1haW5fd2l0aF9sYXlvdXQgPSBXaXRoX2xheW91dC5tYWluXG5cblxuIyA3NDQgXCJzcmMvbGV4ZXIubWxcIlxuIiwiKCogU2V4cDogTW9kdWxlIGZvciBoYW5kbGluZyBTLWV4cHJlc3Npb25zIChJL08sIGV0Yy4pICopXG5cbm9wZW4gRm9ybWF0XG5vcGVuIEJpZ2FycmF5XG5tb2R1bGUgU2V4cGxpYiA9IFNleHBsaWIwXG5tb2R1bGUgQ29udiA9IFNleHBsaWIuU2V4cF9jb252XG5cbigqIGNvbnYubWwgZGVwZW5kcyBvbiB1cyBzbyB3ZSBjYW4gb25seSB1c2UgdGhpcyBtb2R1bGUgKilcblxuaW5jbHVkZSBUeXBlXG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJpdmF0ZVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcblxuKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gSS9PLWNoYW5uZWxzICopXG5cbmxldCB3aXRoX25ld19idWZmZXIgb2MgZiA9XG4gIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgZiBidWY7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIGJ1ZlxuOztcblxubGV0IG91dHB1dF9odW0gb2Mgc2V4cCA9IHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIHNleHAgfmJ1ZilcblxubGV0IG91dHB1dF9odW1faW5kZW50IGluZGVudCBvYyBzZXhwID1cbiAgd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gfmluZGVudCBzZXhwIH5idWYpXG47O1xuXG5sZXQgb3V0cHV0X21hY2ggb2Mgc2V4cCA9IHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfbWFjaCBzZXhwIH5idWYpXG5sZXQgb3V0cHV0ID0gb3V0cHV0X21hY2hcblxuKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gZmlsZSAqKVxuXG4oKiBUaGUgdGVtcCBmaWxlIGZ1bmN0aW9ucyBpbiB0aGUgT0NhbWwgRmlsZW5hbWUgbW9kdWxlIGRvIG5vdCBzdXBwb3J0XG4gICBwZXJtaXNzaW9ucy4gIEJ1dCBvcGVuaW5nIGEgZmlsZSB3aXRoIGdpdmVuIHBlcm1pc3Npb25zIGlzIGRpZmZlcmVudFxuICAgZnJvbSBvcGVuaW5nIGl0IGFuZCBjaG1vZGluZyBpdCB0byB0aGVzZSBwZXJtaXNzaW9ucywgYmVjYXVzZSB0aGUgdW1hc2tcbiAgIGlzIHRha2VuIGluIGFjY291bnQuICBVbmRlciBVbml4IHRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gZ2V0IHRoZSB1bWFzayBpblxuICAgYSB0aHJlYWQtc2FmZSB3YXkuICopXG5tb2R1bGUgVG1wX2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IHBybmcgPSByZWYgTm9uZVxuXG4gIGxldCB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmFuZF9zdGF0ZSA9XG4gICAgICBtYXRjaCAhcHJuZyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHJldCA9IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSBpblxuICAgICAgICBwcm5nIDo9IFNvbWUgcmV0O1xuICAgICAgICByZXRcbiAgICBpblxuICAgIGxldCBybmQgPSBSYW5kb20uU3RhdGUuYml0cyByYW5kX3N0YXRlIGxhbmQgMHhGRkZGRkYgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXhcbiAgOztcblxuICAoKiBLZWVwIHRoZSBwZXJtaXNzaW9ucyBsb29zZS4gU2V4cHMgYXJlIHVzdWFsbHkgc2hhcmVkIGFuZCByYXJlbHkgcHJpdmF0ZSopXG4gIGxldCBvcGVuX3RlbXBfZmlsZSA/KHBlcm0gPSAwbzY2NikgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCBvYyA9XG4gICAgICAgICAgb3Blbl9vdXRfZ2VuIFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbDsgT3Blbl90ZXh0IF0gcGVybSBuYW1lXG4gICAgICAgIGluXG4gICAgICAgIG5hbWUsIG9jXG4gICAgICB3aXRoXG4gICAgICB8IFN5c19lcnJvciBfIGFzIGUgLT4gaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgICBpblxuICAgIHRyeV9uYW1lIDBcbiAgOztcbmVuZFxuXG5sZXQgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gb3V0cHV0X2Z1bmN0aW9uIGZpbGUgc2V4cCA9XG4gIGxldCB0bXBfbmFtZSwgb2MgPSBUbXBfZmlsZS5vcGVuX3RlbXBfZmlsZSA/cGVybSBmaWxlIFwidG1wXCIgaW5cbiAgKHRyeVxuICAgICBvdXRwdXRfZnVuY3Rpb24gb2Mgc2V4cDtcbiAgICAgY2xvc2Vfb3V0IG9jXG4gICB3aXRoXG4gICB8IGUgLT5cbiAgICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgICAodHJ5IFN5cy5yZW1vdmUgdG1wX25hbWUgd2l0aFxuICAgICAgfCBfIC0+ICgpKTtcbiAgICAgcmFpc2UgZSk7XG4gIFN5cy5yZW5hbWUgdG1wX25hbWUgZmlsZVxuOztcblxubGV0IG91dHB1dF9zZXhwX25sIGRvX291dHB1dCBvYyBzZXhwID1cbiAgZG9fb3V0cHV0IG9jIHNleHA7XG4gIG91dHB1dF9zdHJpbmcgb2MgXCJcXG5cIlxuOztcblxubGV0IHNhdmVfaHVtID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cF9ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBcbmxldCBzYXZlX21hY2ggP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gb3V0cHV0X21hY2ggZmlsZSBzZXhwXG5sZXQgc2F2ZSA9IHNhdmVfbWFjaFxubGV0IG91dHB1dF9zZXhwc19ubCBkb19vdXRwdXQgb2Mgc2V4cHMgPSBMaXN0Lml0ZXIgKG91dHB1dF9zZXhwX25sIGRvX291dHB1dCBvYykgc2V4cHNcblxubGV0IHNhdmVfc2V4cHNfaHVtID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cHNcbjs7XG5cbmxldCBzYXZlX3NleHBzX21hY2ggP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X21hY2gpIGZpbGUgc2V4cHNcbjs7XG5cbmxldCBzYXZlX3NleHBzID0gc2F2ZV9zZXhwc19tYWNoXG5cbigqIFNjYW4gZnVuY3Rpb25zICopXG5cbmxldCBzY2FuX3NleHAgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBfb3B0ID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBfb3B0IChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cHMgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9yZXZfc2V4cHMgP2J1ZiBsZXhidWYgPSBQYXJzZXIucmV2X3NleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxuXG5sZXQgZ2V0X21haW5fYnVmIGJ1ZiA9XG4gIGxldCBidWYgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMTI4XG4gICAgfCBTb21lIGJ1ZiAtPiBidWZcbiAgaW5cbiAgTGV4ZXIubWFpbiB+YnVmXG47O1xuXG5sZXQgc2Nhbl9mb2xkX3NleHBzID9idWYgfmYgfmluaXQgbGV4YnVmID1cbiAgbGV0IG1haW4gPSBnZXRfbWFpbl9idWYgYnVmIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIFBhcnNlci5zZXhwX29wdCBtYWluIGxleGJ1ZiB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSBzZXhwIC0+IGxvb3AgKGYgYWNjIHNleHApXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IHNjYW5faXRlcl9zZXhwcyA/YnVmIH5mIGxleGJ1ZiA9XG4gIHNjYW5fZm9sZF9zZXhwcyA/YnVmIGxleGJ1ZiB+aW5pdDooKSB+ZjooZnVuICgpIHNleHAgLT4gZiBzZXhwKVxuOztcblxubGV0IHNjYW5fc2V4cHNfY29udiA/YnVmIH5mIGxleGJ1ZiA9XG4gIGxldCBjb2xsIGFjYyBzZXhwID0gZiBzZXhwIDo6IGFjYyBpblxuICBMaXN0LnJldiAoc2Nhbl9mb2xkX3NleHBzID9idWYgfmY6Y29sbCB+aW5pdDpbXSBsZXhidWYpXG47O1xuXG5sZXQgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgP2NvbnRhaW5pbmdfc2V4cCA/bG9jYXRpb24gP2ludmFsaWRfc2V4cCAoKSB+ZXhuIDogdCA9XG4gIExpc3RcbiAgICAoTGlzdC5jb25jYXRcbiAgICAgICBbIFsgQXRvbSBcIk9mX3NleHBfZXJyb3JcIiBdXG4gICAgICAgOyAobWF0Y2ggbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgQXRvbSB4IF0pXG4gICAgICAgOyBbIChtYXRjaCBleG4gd2l0aFxuICAgICAgICAgICAgIHwgRmFpbHVyZSB4IC0+IEF0b20geFxuICAgICAgICAgICAgIHwgXyAtPiBDb252LnNleHBfb2ZfZXhuIGV4bilcbiAgICAgICAgIF1cbiAgICAgICA7IChtYXRjaCBpbnZhbGlkX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJpbnZhbGlkX3NleHBcIjsgeCBdIF0pXG4gICAgICAgOyAobWF0Y2ggY29udGFpbmluZ19zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiY29udGFpbmluZ19zZXhwXCI7IHggXSBdKVxuICAgICAgIF0pXG47O1xuXG4oKiBQYXJ0aWFsIHBhcnNpbmcgKilcblxubW9kdWxlIEFubm90ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gUGFyc2V4cC5Qb3NpdGlvbnMucG9zID1cbiAgICB7IGxpbmUgOiBpbnRcbiAgICA7IGNvbCA6IGludFxuICAgIDsgb2Zmc2V0IDogaW50XG4gICAgfVxuXG4gIHR5cGUgcmFuZ2UgPSBQYXJzZXhwLlBvc2l0aW9ucy5yYW5nZSA9XG4gICAgeyBzdGFydF9wb3MgOiBwb3NcbiAgICA7IGVuZF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgdHlwZSB0ID1cbiAgICB8IEF0b20gb2YgcmFuZ2UgKiBUeXBlLnRcbiAgICB8IExpc3Qgb2YgcmFuZ2UgKiB0IGxpc3QgKiBUeXBlLnRcblxuICB0eXBlICdhIGNvbnYgPVxuICAgIFsgYFJlc3VsdCBvZiAnYVxuICAgIHwgYEVycm9yIG9mIGV4biAqIHRcbiAgICBdXG5cbiAgZXhjZXB0aW9uIENvbnZfZXhuIG9mIHN0cmluZyAqIGV4blxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ29udl9leG5dIChmdW5jdGlvblxuICAgICAgfCBDb252X2V4biAobG9jYXRpb24sIGV4bikgLT4gc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5leG5cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgdHlwZSBzdGFjayA9XG4gICAgeyBtdXRhYmxlIHBvc2l0aW9ucyA6IHBvcyBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YWNrIDogdCBsaXN0IGxpc3RcbiAgICB9XG5cbiAgbGV0IGdldF9zZXhwID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKF8sIHNleHApIHwgTGlzdCAoXywgXywgc2V4cCkgLT4gc2V4cFxuICA7O1xuXG4gIGxldCBnZXRfcmFuZ2UgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAocmFuZ2UsIF8pIHwgTGlzdCAocmFuZ2UsIF8sIF8pIC0+IHJhbmdlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfY29udiBzZXhwX29mX2EgPSBmdW5jdGlvblxuICAgIHwgYFJlc3VsdCBhIC0+IFR5cGUuTGlzdCBbIEF0b20gXCJSZXN1bHRcIjsgYSB8PiBzZXhwX29mX2EgXVxuICAgIHwgYEVycm9yIChleG4sIHQpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcIkVycm9yXCI7IExpc3QgWyBleG4gfD4gQ29udi5zZXhwX29mX2V4bjsgdCB8PiBnZXRfc2V4cCBdIF1cbiAgOztcblxuICBleGNlcHRpb24gQW5ub3Rfc2V4cCBvZiB0XG5cbiAgbGV0IGZpbmRfc2V4cCBhbm5vdF9zZXhwIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBhbm5vdF9zZXhwID1cbiAgICAgIG1hdGNoIGFubm90X3NleHAgd2l0aFxuICAgICAgfCAoQXRvbSAoXywgc3ViX3NleHApIHwgTGlzdCAoXywgXywgc3ViX3NleHApKSB3aGVuIHNleHAgPT0gc3ViX3NleHAgLT5cbiAgICAgICAgcmFpc2UgKEFubm90X3NleHAgYW5ub3Rfc2V4cClcbiAgICAgIHwgTGlzdCAoXywgYW5ub3RzLCBfKSAtPiBMaXN0Lml0ZXIgbG9vcCBhbm5vdHNcbiAgICAgIHwgQXRvbSBfIC0+ICgpXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIGxvb3AgYW5ub3Rfc2V4cDtcbiAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBBbm5vdF9zZXhwIHJlcyAtPiBTb21lIHJlc1xuICA7O1xuZW5kXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvY2F0aW9uLCBleG4pLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBPZl9zZXhwX2Vycm9yIChleG4sIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5tb2R1bGUgUGFyc2VfcG9zID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHRleHRfbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSB0ZXh0X2NoYXIgOiBpbnRcbiAgICA7IG11dGFibGUgZ2xvYmFsX29mZnNldCA6IGludFxuICAgIDsgbXV0YWJsZSBidWZfcG9zIDogaW50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgPyh0ZXh0X2xpbmUgPSAxKSA/KHRleHRfY2hhciA9IDApID8oYnVmX3BvcyA9IDApID8oZ2xvYmFsX29mZnNldCA9IDApICgpID1cbiAgICBsZXQgZmFpbCBtc2cgPSBmYWlsd2l0aCAoXCJTZXhwbGliLlNleHAuUGFyc2VfcG9zLmNyZWF0ZTogXCIgXiBtc2cpIGluXG4gICAgaWYgdGV4dF9saW5lIDwgMVxuICAgIHRoZW4gZmFpbCBcInRleHRfbGluZSA8IDFcIlxuICAgIGVsc2UgaWYgdGV4dF9jaGFyIDwgMFxuICAgIHRoZW4gZmFpbCBcInRleHRfY2hhciA8IDBcIlxuICAgIGVsc2UgaWYgZ2xvYmFsX29mZnNldCA8IDBcbiAgICB0aGVuIGZhaWwgXCJnbG9iYWxfb2Zmc2V0IDwgMFwiXG4gICAgZWxzZSBpZiBidWZfcG9zIDwgMFxuICAgIHRoZW4gZmFpbCBcImJ1Zl9wb3MgPCAwXCJcbiAgICBlbHNlIHsgdGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfVxuICA7O1xuXG4gIGxldCB3aXRoX2J1Zl9wb3MgdCBidWZfcG9zID0geyB0IHdpdGggYnVmX3BvcyB9XG5lbmRcblxubW9kdWxlIENvbnRfc3RhdGUgPSBQYXJzZXhwLk9sZF9wYXJzZXJfY29udF9zdGF0ZVxuXG50eXBlICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdCA9XG4gIHwgRG9uZSBvZiAndCAqIFBhcnNlX3Bvcy50XG4gIHwgQ29udCBvZiBDb250X3N0YXRlLnQgKiAoJ2EsICd0KSBwYXJzZV9mdW5cblxuYW5kICgnYSwgJ3QpIHBhcnNlX2Z1biA9IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiAoJ2EsICd0KSBwYXJzZV9yZXN1bHRcblxudHlwZSAndCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zIDogUGFyc2VfcG9zLnQgfVxuXG50eXBlIHBhcnNlX2Vycm9yID1cbiAgeyBlcnJfbXNnIDogc3RyaW5nXG4gIDsgcGFyc2Vfc3RhdGUgOiBbIGBTZXhwIG9mIHQgbGlzdCBsaXN0IHBhcnNlX3N0YXRlIHwgYEFubm90IG9mIEFubm90LnN0YWNrIHBhcnNlX3N0YXRlIF1cbiAgfVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgcGFyc2VfZXJyb3JcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2VfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgcGUgLT5cbiAgICAgIGxldCBwcG9zID1cbiAgICAgICAgbWF0Y2ggcGUucGFyc2Vfc3RhdGUgd2l0aFxuICAgICAgICB8IGBTZXhwIHsgcGFyc2VfcG9zIH0gfCBgQW5ub3QgeyBwYXJzZV9wb3MgfSAtPiBwYXJzZV9wb3NcbiAgICAgIGluXG4gICAgICBMaXN0XG4gICAgICAgIFsgQXRvbSBcIlNleHBsaWIuU2V4cC5QYXJzZV9lcnJvclwiXG4gICAgICAgIDsgTGlzdFxuICAgICAgICAgICAgWyBMaXN0IFsgQXRvbSBcImVycl9tc2dcIjsgQXRvbSBwZS5lcnJfbXNnIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2xpbmVcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2xpbmUgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfY2hhclwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfY2hhciBdXG4gICAgICAgICAgICA7IExpc3RcbiAgICAgICAgICAgICAgICBbIEF0b20gXCJnbG9iYWxfb2Zmc2V0XCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuZ2xvYmFsX29mZnNldCBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwiYnVmX3Bvc1wiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgXVxuICAgICAgICAgICAgXVxuICAgICAgICBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZXJfb3V0cHV0IDogc2lnXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBCYXJlX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBUeXBlLnRcbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwIDogVCB3aXRoIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBJID0gUGFyc2V4cC5Qb3NpdGlvbnMuSXRlcmF0b3JcblxuICBsZXQgcmVjIGFubm90YXRlX3NleHAgc2V4cCBpdGVyID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFR5cGUuQXRvbSBfIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90LkF0b20gKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIHNleHApXG4gICAgfCBUeXBlLkxpc3QgbCAtPlxuICAgICAgbGV0IHN0YXJ0X3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwX2xpc3QgbCBpdGVyIGluXG4gICAgICBsZXQgZW5kX3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBBbm5vdC5MaXN0ICh7IHN0YXJ0X3BvczsgZW5kX3BvcyB9LCBhbm5vdCwgc2V4cClcblxuICBhbmQgYW5ub3RhdGVfc2V4cF9saXN0IHNleHBzIGl0ZXIgPVxuICAgIExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biBzZXhwIC0+IGFubm90YXRlX3NleHAgc2V4cCBpdGVyKSBzZXhwcylcbiAgOztcblxuICBtb2R1bGUgQmFyZV9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyXG5cbiAgICB0eXBlIG91dHB1dCA9IFR5cGUudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSBzZXhwID0gcmFpc2Vfbm90cmFjZSAoRm91bmQgc2V4cClcbiAgZW5kXG5cbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyX2FuZF9wb3NpdGlvbnNcblxuICAgIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSAoc2V4cCwgcG9zaXRpb25zKSA9XG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwIHNleHAgKEkuY3JlYXRlIHBvc2l0aW9ucykgaW5cbiAgICAgIHJhaXNlX25vdHJhY2UgKEZvdW5kIGFubm90KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3BhcnNlciAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5UXG5cbiAgICB0eXBlIGlucHV0XG5cbiAgICB2YWwgbGVuZ3RoIDogaW5wdXQgLT4gaW50XG5cbiAgICB2YWwgdW5zYWZlX2ZlZWRfbG9vcFxuICAgICAgOiAgSW1wbC5TdGF0ZS50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgICAgIC0+IGlucHV0XG4gICAgICAtPiBtYXhfcG9zOmludFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gSW1wbC5TdGFjay50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHBhcnNlXG4gICAgOiAgP3BhcnNlX3BvczpQYXJzZV9wb3MudFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gVC5pbnB1dFxuICAgIC0+IChULmlucHV0LCBULm91dHB1dCkgcGFyc2VfcmVzdWx0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBidWZfcG9zID1cbiAgICB7IFBhcnNlX3Bvcy50ZXh0X2xpbmUgPSBULkltcGwuU3RhdGUubGluZSBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLnRleHRfY2hhciA9IFQuSW1wbC5TdGF0ZS5jb2x1bW4gc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmJ1Zl9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyA8IDBcIjtcbiAgICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogbGVuIDwgMFwiO1xuICAgIGxldCBzdHJfbGVuID0gVC5sZW5ndGggc3RyIGluXG4gICAgbGV0IHBvc19sZW4gPSBwb3MgKyBsZW4gaW5cbiAgICBpZiBwb3NfbGVuID4gc3RyX2xlbiB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyArIGxlbiA+IHN0cl9sZW5cIjtcbiAgICBwb3NfbGVuIC0gMVxuICA7O1xuXG4gIGxldCByYWlzZV9wYXJzZV9lcnJvciBzdGF0ZSBwb3MgbXNnID1cbiAgICBsZXQgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA9IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBwb3MgfSBpblxuICAgIGxldCBwYXJzZV9lcnJvciA9IHsgZXJyX21zZyA9IG1zZzsgcGFyc2Vfc3RhdGUgPSBgU2V4cCBwYXJzZV9zdGF0ZSB9IGluXG4gICAgcmFpc2UgKFBhcnNlX2Vycm9yIHBhcnNlX2Vycm9yKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSBwb3MgZSA9XG4gICAgbGV0IG1zZyA9IFBhcnNleHAuUGFyc2VfZXJyb3IubWVzc2FnZSBlIGluXG4gICAgbWF0Y2ggUGFyc2V4cC5QYXJzZV9lcnJvci5Qcml2YXRlLm9sZF9wYXJzZXJfZXhuIGUgd2l0aFxuICAgIHwgYFBhcnNlX2Vycm9yIC0+IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2dcbiAgICB8IGBGYWlsdXJlIC0+IGZhaWx3aXRoIG1zZ1xuICA7O1xuXG4gIGxldCByZWMgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyID1cbiAgICBsZXQgbWF4X3BvcyA9IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciBpblxuICAgIGxldCBwcmV2aW91c19vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIGluXG4gICAgbWF0Y2ggVC51bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zIHdpdGhcbiAgICB8IHN0YWNrIC0+IG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2tcbiAgICB8IGV4Y2VwdGlvbiBULkZvdW5kIHJlc3VsdCAtPlxuICAgICAgbGV0IG9mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICAgIGxldCBuZXh0X3BvcyA9IHBvcyArIChvZmZzZXQgLSBwcmV2aW91c19vZmZzZXQpIGluXG4gICAgICBEb25lIChyZXN1bHQsIHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBuZXh0X3BvcylcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZXhwLlBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGVyciAtPlxuICAgICAgaGFuZGxlX3BhcnNleHBfZXJyb3Igc3RhdGUgKHBvcyArIChULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIC0gcHJldmlvdXNfb2Zmc2V0KSkgZXJyXG5cbiAgYW5kIG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2sgPVxuICAgIGxldCBwYXJzZV9mdW4gPVxuICAgICAgbGV0IHVzZWRfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgICAgICBpZiAhdXNlZF9yZWZcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cDogcGFyc2VyIGNvbnRpbnVhdGlvbiBjYWxsZWQgdHdpY2VcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICB1c2VkX3JlZiA6PSB0cnVlO1xuICAgICAgICAgIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgfnBvcyB+bGVuIHN0cilcbiAgICBpblxuICAgIGxldCBjb250X3N0YXRlID0gVC5JbXBsLlN0YXRlLm9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSBpblxuICAgIENvbnQgKGNvbnRfc3RhdGUsIHBhcnNlX2Z1bilcbiAgOztcblxuICBsZXQgcGFyc2UgPyhwYXJzZV9wb3MgPSBQYXJzZV9wb3MuY3JlYXRlICgpKSA/bGVuIHN0ciA9XG4gICAgbGV0IHBvcywgYnVmX3BvcyA9XG4gICAgICBsZXQgeyBQYXJzZV9wb3MudGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfSA9IHBhcnNlX3BvcyBpblxuICAgICAgKCB7IFBhcnNleHAuUG9zaXRpb25zLmxpbmUgPSB0ZXh0X2xpbmU7IGNvbCA9IHRleHRfY2hhcjsgb2Zmc2V0ID0gZ2xvYmFsX29mZnNldCB9XG4gICAgICAsIGJ1Zl9wb3MgKVxuICAgIGluXG4gICAgbGV0IHN0YXRlID0gVC5JbXBsLlN0YXRlLmNyZWF0ZSB+cG9zIH5ub19zZXhwX2lzX2Vycm9yOmZhbHNlIFQucmFpc2VfZm91bmQgaW5cbiAgICBsZXQgc3RhY2sgPSBULkltcGwuU3RhY2suZW1wdHkgaW5cbiAgICBsZXQgbGVuID1cbiAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICB8IE5vbmUgLT4gVC5sZW5ndGggc3RyIC0gYnVmX3Bvc1xuICAgIGluXG4gICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfnBvczpidWZfcG9zIH5sZW5cbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIFN0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChTdHJpbmcudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9zdHIgPSBTdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcbmxldCBwYXJzZSA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9hbm5vdCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQW5ub3RhdGVkX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0cl9hbm5vdCA9IFN0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nID0gQmlnc3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IGJpZ3N0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayAoc3RyIDogaW5wdXQpIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKEFycmF5MS51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX2JpZ3N0cmluZ19hbm5vdCA9IEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxuKCogSW5wdXQgZnVuY3Rpb25zICopXG5cbmxldCBta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UgPVxuICAoKTtcbiAgZnVuIH5wb3MgfmxlbiBzdHIgLT5cbiAgICBsZXQgcGFyc2VfcG9zID1cbiAgICAgIG1hdGNoIHBhcnNlX3BvcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2VfcG9zLmNyZWF0ZSB+YnVmX3Bvczpwb3MgKClcbiAgICAgIHwgU29tZSBwYXJzZV9wb3MgLT5cbiAgICAgICAgcGFyc2VfcG9zLlBhcnNlX3Bvcy5idWZfcG9zIDwtIHBvcztcbiAgICAgICAgcGFyc2VfcG9zXG4gICAgaW5cbiAgICBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjooU29tZSBsZW4pIHN0clxuOztcblxuKCogW3dzX2J1Zl0gbXVzdCBjb250YWluIGEgc2luZ2xlIHNwYWNlIGNoYXJhY3RlciAqKVxubGV0IGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgPVxuICAoKiBXaGVuIHBhcnNpbmcgYXRvbXMsIHRoZSBpbmNyZW1lbnRhbCBwYXJzZXIgY2Fubm90IHRlbGwgd2hldGhlclxuICAgICBpdCBpcyBhdCB0aGUgZW5kIHVudGlsIGl0IGhpdHMgd2hpdGVzcGFjZS4gIFdlIHRoZXJlZm9yZSBmZWVkIGl0XG4gICAgIG9uZSBzcGFjZSB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBmaW5pc2hlZC4gKilcbiAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIHdzX2J1ZiB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgXykgLT4gT2sgc2V4cFxuICB8IENvbnQgKGNvbnRfc3RhdGUsIF8pIC0+IEVycm9yIGNvbnRfc3RhdGVcbjs7XG5cbmxldCBnZW5faW5wdXRfc2V4cCBteV9wYXJzZSA/cGFyc2VfcG9zIGljID1cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlID1cbiAgICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgKG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWY6XCIgXCIgd2l0aFxuICAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICAgfCBFcnJvciBfIC0+IHJhaXNlIEVuZF9vZl9maWxlKVxuICAgIHwgYyAtPlxuICAgICAgQnl0ZXMuc2V0IGJ1ZiAwIGM7XG4gICAgICAobWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlKVxuICBpblxuICBsb29wIChta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UpXG47O1xuXG5sZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuXG5sZXQgZ2VuX2lucHV0X3Jldl9zZXhwcyBteV9wYXJzZSB+d3NfYnVmID9wYXJzZV9wb3MgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgaWMgPVxuICBsZXQgcmV2X3NleHBzX3JlZiA9IHJlZiBbXSBpblxuICBsZXQgYnVmX2xlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3MgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgIHwgRG9uZSAoc2V4cCwgKHsgUGFyc2VfcG9zLmJ1Zl9wb3M7IF8gfSBhcyBwYXJzZV9wb3MpKSAtPlxuICAgICAgICByZXZfc2V4cHNfcmVmIDo9IHNleHAgOjogIXJldl9zZXhwc19yZWY7XG4gICAgICAgIGxldCBuX3BhcnNlZCA9IGJ1Zl9wb3MgLSBwb3MgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgaWYgbl9wYXJzZWQgPSBsZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5ld19sZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOm5ld19sZW4pXG4gICAgICAgIGVsc2UgbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBuX3BhcnNlZClcbiAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOihpbnB1dCBpYyBidWYgMCBidWZfbGVuKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgd2l0aFxuICAgICAgfCBPayBzZXhwIC0+IHNleHAgOjogIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+ICFyZXZfc2V4cHNfcmVmXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoXCJTZXhwbGliLlNleHAuaW5wdXRfcmV2X3NleHBzOiByZWFjaGVkIEVPRiB3aGlsZSBpbiBzdGF0ZSBcIlxuICAgICAgICAgICBeIENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKVxuICBpblxuICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSBpblxuICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbjs7XG5cbmxldCBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID1cbiAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuOztcblxubGV0IGlucHV0X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9IExpc3QucmV2IChpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljKVxuXG4oKiBvZl9zdHJpbmcgYW5kIG9mX2JpZ3N0cmluZyAqKVxuXG5sZXQgb2Zfc3RyaW5nX2JpZ3N0cmluZyBsb2MgbXlfcGFyc2Ugd3NfYnVmIGdldF9sZW4gZ2V0X3N1YiBzdHIgPVxuICBtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOk5vbmUgP2xlbjpOb25lIHN0ciB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgcGFyc2VfcG9zKSAtPlxuICAgIChtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjpOb25lIHN0ciB3aXRoXG4gICAgIHwgRG9uZSAoX3NleHAyLCBfKSAtPlxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGdvdCBtdWx0aXBsZSBTLWV4cHJlc3Npb25zIHdoZXJlIG9ubHkgb25lIHdhcyBleHBlY3RlZC5cIlxuICAgICAgICAgICAgbG9jKVxuICAgICB8IENvbnQgKENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCBfKSAtPiBzZXhwXG4gICAgIHwgQ29udCAoXywgXykgLT5cbiAgICAgICAoKiBub3QgdXNpbmcgW2ZlZWRfZW5kX29mX2lucHV0XSBoZXJlIG1lYW5zIFwiYSBiXCIgd2lsbCBlbmQgdXAgaGVyZSBhbmQgbm90IGluXG4gICAgICAgICAgXCJtdWx0aXBsZSBTLWV4cHJlc3Npb25zXCIgYnJhbmNoLCBidXQgaXQgZG9lc24ndCBtYXR0ZXIgdGhhdCBtdWNoICopXG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogUy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGEgYXQgcG9zaXRpb24gJWQuLi5cIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBwYXJzZV9wb3MuYnVmX3BvcykpXG4gIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT5cbiAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgIGxldCBjb250X3N0YXRlX3N0ciA9IENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUgaW5cbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBpbmNvbXBsZXRlIFMtZXhwcmVzc2lvbiB3aGlsZSBpbiBzdGF0ZSAlczogJXNcIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBjb250X3N0YXRlX3N0clxuICAgICAgICAgICAgKGdldF9zdWIgc3RyIDAgKGdldF9sZW4gc3RyKSkpKVxuOztcblxubGV0IG9mX3N0cmluZyBzdHIgPSBvZl9zdHJpbmdfYmlnc3RyaW5nIFwib2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxubGV0IG9mX3N0cmluZ19tYW55IHN0ciA9IFBhcnNleHAuTWFueS5wYXJzZV9zdHJpbmdfZXhuIHN0clxuXG5sZXQgZ2V0X2JzdHJfc3ViX3N0ciBic3RyIHBvcyBsZW4gPVxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBzdHIgaSBic3RyLntwb3MgKyBpfVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJzdHJfd3NfYnVmID0gQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IDFcbmxldCAoKSA9IGJzdHJfd3NfYnVmLnswfSA8LSAnICdcblxubGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgIFwib2ZfYmlnc3RyaW5nXCJcbiAgICBwYXJzZV9iaWdzdHJpbmdcbiAgICBic3RyX3dzX2J1ZlxuICAgIEFycmF5MS5kaW1cbiAgICBnZXRfYnN0cl9zdWJfc3RyXG4gICAgYnN0clxuOztcblxuKCogTG9hZGluZyAqKVxuXG5sZXQgZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHBzID0gaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3M6Tm9uZSA/YnVmIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgc2V4cHNcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSA9IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlXG5sZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxubGV0IGdlbl9sb2FkX3NleHBfbG9jID0gXCJTZXhwbGliLlNleHAuZ2VuX2xvYWRfc2V4cFwiXG5cbmxldCBnZW5fbG9hZF9zZXhwIG15X3BhcnNlID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSA9XG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICBcIiVzOiBFT0YgaW4gJXMgd2hpbGUgaW4gc3RhdGUgJXNcIlxuICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgIChDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKSkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIHdoZW4gc3RyaWN0IC0+XG4gICAgICAgIGxldCByZWMgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgICAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgICAgIHwgRG9uZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoc3ByaW50ZiBcIiVzOiBtb3JlIHRoYW4gb25lIFMtZXhwcmVzc2lvbiBpbiBmaWxlICVzXCIgZ2VuX2xvYWRfc2V4cF9sb2MgZmlsZSlcbiAgICAgICAgICB8IENvbnQgKGNvbnRfc3RhdGUsIHRoaXNfcGFyc2UpIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgICAgICAgICAgaWYgbGVuID4gMFxuICAgICAgICAgICAgdGhlbiBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuXG4gICAgICAgICAgICBlbHNlIGlmIGNvbnRfc3RhdGUgPSBDb250X3N0YXRlLlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgICAgICAgICAgdGhlbiBzZXhwXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIiVzOiAlcyBpbiBzdGF0ZSAlcyBsb2FkaW5nIGZpbGUgJXNcIlxuICAgICAgICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgICAgICAgXCJhZGRpdGlvbmFsIGluY29tcGxldGUgZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgZmlsZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zOmJ1Zl9wb3MgfmxlbjoobGVuIC0gYnVmX3BvcylcbiAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIHRyeVxuICAgIGxldCBzZXhwID0gbG9vcCAobWtfdGhpc19wYXJzZSBteV9wYXJzZSkgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwXG4gIHdpdGhcbiAgfCBleGMgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBleGNcbjs7XG5cbmxldCBsb2FkX3NleHAgP3N0cmljdCA/YnVmIGZpbGUgPSBnZW5fbG9hZF9zZXhwIHBhcnNlID9zdHJpY3QgP2J1ZiBmaWxlXG5cbm1vZHVsZSBBbm5vdGF0ZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBbm5vdFxuXG4gIGxldCBwYXJzZSA9IHBhcnNlX3N0cl9hbm5vdFxuICBsZXQgcGFyc2VfYmlnc3RyaW5nID0gcGFyc2VfYmlnc3RyaW5nX2Fubm90XG5cbiAgbGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICAgIGdlbl9pbnB1dF9yZXZfc2V4cHMgcGFyc2UgfndzX2J1ZjpcIiBcIiA/cGFyc2VfcG9zID9idWYgaWNcbiAgOztcblxuICBsZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuICBsZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIG9mX3N0cmluZ19iaWdzdHJpbmcgXCJBbm5vdGF0ZWQub2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxuICA7O1xuXG4gIGxldCBvZl9iaWdzdHJpbmcgYnN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgICAgXCJBbm5vdGF0ZWQub2ZfYmlnc3RyaW5nXCJcbiAgICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgICAgYnN0cl93c19idWZcbiAgICAgIEFycmF5MS5kaW1cbiAgICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICAgIGJzdHJcbiAgOztcblxuICBsZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbiAgbGV0IGxvYWRfc2V4cHMgP2J1ZiBmaWxlID0gTGlzdC5yZXYgKGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSlcbiAgbGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxuICBsZXQgY29udiBmIGFubm90X3NleHAgPVxuICAgIGxldCBzZXhwID0gZ2V0X3NleHAgYW5ub3Rfc2V4cCBpblxuICAgIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4YywgYmFkX3NleHApIGFzIGUgLT5cbiAgICAgIChtYXRjaCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBiYWRfc2V4cCB3aXRoXG4gICAgICAgfCBOb25lIC0+IHJhaXNlIGVcbiAgICAgICB8IFNvbWUgYmFkX2Fubm90X3NleHAgLT4gYEVycm9yIChleGMsIGJhZF9hbm5vdF9zZXhwKSlcbiAgOztcblxuICBsZXQgZ2V0X2NvbnZfZXhuIH5maWxlIH5leGMgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHJhbmdlID0gZ2V0X3JhbmdlIGFubm90X3NleHAgaW5cbiAgICBsZXQgeyBzdGFydF9wb3MgPSB7IGxpbmU7IGNvbDsgb2Zmc2V0ID0gXyB9OyBlbmRfcG9zID0gXyB9ID0gcmFuZ2UgaW5cbiAgICBsZXQgbG9jID0gc3ByaW50ZiBcIiVzOiVkOiVkXCIgZmlsZSBsaW5lIGNvbCBpblxuICAgIE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2MsIGV4YyksIGdldF9zZXhwIGFubm90X3NleHApXG4gIDs7XG5lbmRcblxubGV0IGxvYWRfc2V4cF9jb252ID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHNleHAgPSBsb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChBbm5vdGF0ZWQubG9hZF9zZXhwIH5zdHJpY3QgfmJ1ZiBmaWxlKVxuOztcblxubGV0IHJhaXNlX2NvbnZfZXhuIH5maWxlID0gZnVuY3Rpb25cbiAgfCBgUmVzdWx0IHJlcyAtPiByZXNcbiAgfCBgRXJyb3IgKGV4YywgYW5ub3Rfc2V4cCkgLT4gcmFpc2UgKEFubm90YXRlZC5nZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwKVxuOztcblxubGV0IGxvYWRfc2V4cF9jb252X2V4biA/c3RyaWN0ID9idWYgZmlsZSBmID1cbiAgcmFpc2VfY29udl9leG4gfmZpbGUgKGxvYWRfc2V4cF9jb252ID9zdHJpY3QgP2J1ZiBmaWxlIGYpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252ID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYFJlc3VsdCAoZiBzZXhwKSkgcmV2X3NleHBzIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPlxuICAgIChtYXRjaCBBbm5vdGF0ZWQubG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIHdpdGhcbiAgICAgfCBbXSAtPlxuICAgICAgICgqIEZpbGUgaXMgbm93IGVtcHR5IC0gcGVyaGFwcyBpdCB3YXMgYSB0ZW1wb3JhcnkgZmlsZSBoYW5kbGU/ICopXG4gICAgICAgcmFpc2UgZVxuICAgICB8IHJldl9hbm5vdF9zZXhwcyAtPlxuICAgICAgIExpc3QucmV2X21hcCAoZnVuIGFubm90X3NleHAgLT4gQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252X2V4biA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgcmV2X3NleHBzID0gbG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIGluXG4gIHRyeSBMaXN0LnJldl9tYXAgZiByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGFubm90X3NleHAgLT4gcmFpc2VfY29udl9leG4gfmZpbGUgKEFubm90YXRlZC5jb252IGYgYW5ub3Rfc2V4cCkpXG4gICAgICAgICByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBhbm5vdF9vZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChhbm5vdF9vZl9zdHJpbmcgc3RyKVxuOztcblxubGV0IG9mX3N0cmluZ19jb252IHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBBbm5vdGF0ZWQub2Zfc3RyaW5nIHN0ciBmXG5cbmxldCBvZl9iaWdzdHJpbmdfY29udiBic3RyIGYgPVxuICBnZW5fb2Zfc3RyaW5nX2NvbnYgb2ZfYmlnc3RyaW5nIEFubm90YXRlZC5vZl9iaWdzdHJpbmcgYnN0ciBmXG47O1xuXG5tb2R1bGUgT2Zfc3RyaW5nX2NvbnZfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleGMgOiBleG5cbiAgICA7IHNleHAgOiBUeXBlLnRcbiAgICA7IHN1Yl9zZXhwIDogVHlwZS50XG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBFIG9mIHRcblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVdIChmdW5jdGlvblxuICAgICAgfCBFIG9zY2UgLT5cbiAgICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5pbnZhbGlkX3NleHA6b3NjZS5zdWJfc2V4cFxuICAgICAgICAgIH5leG46b3NjZS5leGNcbiAgICAgICAgICB+Y29udGFpbmluZ19zZXhwOm9zY2Uuc2V4cFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcbmVuZFxuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGYgc2V4cCB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzdWJfc2V4cCkgLT5cbiAgICByYWlzZSAoT2Zfc3RyaW5nX2NvbnZfZXhuLkUgeyBPZl9zdHJpbmdfY29udl9leG4uZXhjOyBzZXhwOyBzdWJfc2V4cCB9KVxuOztcblxubGV0IG9mX3N0cmluZ19jb252X2V4biBzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2Zfc3RyaW5nIHN0ciBmXG5sZXQgb2ZfYmlnc3RyaW5nX2NvbnZfZXhuIGJzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2ZfYmlnc3RyaW5nIGJzdHIgZlxuXG5sZXQgb2Zfc3RyaW5nX21hbnlfY29udl9leG4gc3RyIGYgPVxuICBsZXQgc2V4cHMgPSBvZl9zdHJpbmdfbWFueSBzdHIgaW5cbiAgTGlzdC5tYXAgKGZ1biBzZXhwIC0+IGdlbl9vZl9zdHJpbmdfY29udl9leG4gKGZ1biB4IC0+IHgpIHNleHAgZikgc2V4cHNcbjs7XG5cbigqIFV0aWxpdGllcyBmb3IgYXV0b21hdGVkIHR5cGUgY29udmVyc2lvbnMgKilcblxubGV0IHVuaXQgPSBMaXN0IFtdXG5cbmxldCBpc191bml0ID0gZnVuY3Rpb25cbiAgfCBMaXN0IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5leHRlcm5hbCBzZXhwX29mX3QgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X29mX3NleHAgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbigqIFV0aWxpdGllcyBmb3IgY29udmVyc2lvbiBlcnJvciBoYW5kbGluZyAqKVxuXG50eXBlIGZvdW5kID1cbiAgWyBgRm91bmRcbiAgfCBgUG9zIG9mIGludCAqIGZvdW5kXG4gIF1cblxudHlwZSBzZWFyY2hfcmVzdWx0ID1cbiAgWyBgTm90X2ZvdW5kXG4gIHwgZm91bmRcbiAgXVxuXG5sZXQgcmVjIHNlYXJjaF9waHlzaWNhbCBzZXhwIH5jb250YWluZWQgPVxuICBpZiBzZXhwID09IGNvbnRhaW5lZFxuICB0aGVuIGBGb3VuZFxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gXyAtPiBgTm90X2ZvdW5kXG4gICAgfCBMaXN0IGxzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGBOb3RfZm91bmRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgcmVzID0gc2VhcmNoX3BoeXNpY2FsIGggfmNvbnRhaW5lZCBpblxuICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICB8IGBOb3RfZm91bmQgLT4gbG9vcCAoaSArIDEpIHRcbiAgICAgICAgICAgfCAjZm91bmQgYXMgZm91bmQgLT4gYFBvcyAoaSwgZm91bmQpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCBsc3QpXG47O1xuXG5sZXQgcmVjIHN1YnN0X2ZvdW5kIHNleHAgfnN1YnN0ID0gZnVuY3Rpb25cbiAgfCBgRm91bmQgLT4gc3Vic3RcbiAgfCBgUG9zIChwb3MsIGZvdW5kKSAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBBdG9tIF8gLT4gZmFpbHdpdGggXCJTZXhwbGliLlNleHAuc3Vic3RfZm91bmQ6IGF0b20gd2hlbiBwb3NpdGlvbiByZXF1ZXN0ZWRcIlxuICAgICB8IExpc3QgbHN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGFjYyBwb3MgPSBmdW5jdGlvblxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogc2hvcnQgbGlzdCB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgICAgICB8IGggOjogdCB3aGVuIHBvcyA8PiAwIC0+IGxvb3AgKGggOjogYWNjKSAocG9zIC0gMSkgdFxuICAgICAgICAgfCBoIDo6IHQgLT4gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoc3Vic3RfZm91bmQgaCB+c3Vic3QgZm91bmQgOjogdCkpXG4gICAgICAgaW5cbiAgICAgICBsb29wIFtdIHBvcyBsc3QpXG47O1xuIiwiKCogcGFja2FnaW5nIG9mIGFubm90YXRlZCBzZXhwIGZ1bmN0aW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyIGYgdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5pbmNsdWRlIFR5cGVfd2l0aF9sYXlvdXRcblxudHlwZSBwb3MgPSBTcmNfcG9zLlJlbGF0aXZlLnQgPVxuICB7IHJvdyA6IGludFxuICA7IGNvbCA6IGludFxuICB9XG5cbmxldCBzZXhwX29mX3BvcyA9IFNyY19wb3MuUmVsYXRpdmUuc2V4cF9vZl90XG5cbm1vZHVsZSBMZXhlciA9IHN0cnVjdFxuICBsZXQgbWFpbiA9IExleGVyLm1haW5fd2l0aF9sYXlvdXRcbmVuZFxuXG5tb2R1bGUgUGFyc2VyID0gUGFyc2VyX3dpdGhfbGF5b3V0XG5cbm1vZHVsZSBSZW5kZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlbF9wb3MgPSBTcmNfcG9zLlJlbGF0aXZlXG4gIG1vZHVsZSBBYnNfcG9zID0gU3JjX3Bvcy5BYnNvbHV0ZVxuXG4gIHR5cGUgbGFzdF9hdG9tID1cbiAgICB7IGltbWVkX2FmdGVyIDogQWJzX3Bvcy50XG4gICAgOyB1bmVzY2FwZWQgOiBib29sXG4gICAgfVxuXG4gIHR5cGUgc3RhdGUgPVxuICAgIHsgbXV0YWJsZSByb3dfc2hpZnQgOiBSZWxfcG9zLnRcbiAgICA7IG11dGFibGUgY3VycmVudCA6IEFic19wb3MudFxuICAgIDsgbXV0YWJsZSBsYXN0X2F0b20gOiBsYXN0X2F0b20gb3B0aW9uXG4gICAgOyBtdXRhYmxlIGxhc3RfY29tbWVudF9yb3cgOiBpbnRcbiAgICB9XG5cbiAgKCogdGhlIHBvaW50IG9mIFtpbW1lZF9hZnRlcl9sYXN0X2F0b21dIGlzIHRvIHByZXZlbnRcbiAgICAgKEEgQiBDKSBmcm9tIHJlbmRlcmluZyBhcyAoQSBCQkMpIGFmdGVyIHdlIHJlcGxhY2UgQiB3aXRoIEJCICopXG5cbiAgdHlwZSAnYSB0ID0gKGNoYXIgLT4gdW5pdCkgLT4gc3RhdGUgLT4gJ2FcblxuICBsZXQgcmV0dXJuIGEgX3B1dGMgX3N0ID0gYVxuICBsZXQgYmluZCBtIH5mIHB1dGMgc3QgPSBmIChtIHB1dGMgc3QpIHB1dGMgc3RcblxuICBsZXQgcnVuIHB1dGMgbSA9XG4gICAgbVxuICAgICAgcHV0Y1xuICAgICAgeyByb3dfc2hpZnQgPSBSZWxfcG9zLnplcm9cbiAgICAgIDsgY3VycmVudCA9IEFic19wb3Mub3JpZ2luXG4gICAgICA7IGxhc3RfYXRvbSA9IE5vbmVcbiAgICAgIDsgbGFzdF9jb21tZW50X3JvdyA9IDAgKCogYmVmb3JlIHRoZSBmaWxlIHN0YXJ0cyAqKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXIgcHV0YyBzdCBjID1cbiAgICBsZXQgeyBBYnNfcG9zLmNvbDsgcm93IH0gPSBzdC5jdXJyZW50IGluXG4gICAgcHV0YyBjO1xuICAgIGlmIGMgPSAnXFxuJ1xuICAgIHRoZW4gc3QuY3VycmVudCA8LSB7IEFic19wb3Mucm93ID0gMSArIHJvdzsgY29sID0gMSB9XG4gICAgZWxzZSBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3c7IGNvbCA9IDEgKyBjb2wgfVxuICA7O1xuXG4gIGxldCBlbWl0X3N0cmluZyBwdXRjIHN0IHN0ciA9XG4gICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgZW1pdF9jaGFyIHB1dGMgc3Qgc3RyLltpXVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgZW1pdF9jaGFycyBwdXRjIHN0IGMgfm4gPSBlbWl0X3N0cmluZyBwdXRjIHN0IChTdHJpbmcubWFrZSBuIGMpXG5cbiAgbGV0IGFkdmFuY2UgcHV0YyB+YW5jaG9yIHN0IH5ieTpkZWx0YSB+dW5lc2NhcGVkX2F0b20gfmxpbmVfY29tbWVudCA9XG4gICAgbGV0IG5ld19wb3MgPSBBYnNfcG9zLmFkZCAoQWJzX3Bvcy5hZGQgYW5jaG9yIGRlbHRhKSBzdC5yb3dfc2hpZnQgaW5cbiAgICBsZXQgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZSA9XG4gICAgICB1bmVzY2FwZWRfYXRvbVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHN0Lmxhc3RfYXRvbSB3aXRoXG4gICAgICB8IFNvbWUgeyBpbW1lZF9hZnRlcjsgdW5lc2NhcGVkID0gcHJldl91bmVzY2FwZWQgfSAtPlxuICAgICAgICBuZXdfcG9zID0gaW1tZWRfYWZ0ZXIgJiYgcHJldl91bmVzY2FwZWRcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIGluXG4gICAgKCogYXZvaWQgam9pbmluZyBzdWJzZXF1ZW50IGl0ZW1zIGludG8gYSBwcmVjZWRpbmcgbGluZSBjb21tZW50ICopXG4gICAgbGV0IG5lZWRfdG9fY2xlYXJfbGluZV9jb21tZW50ID0gbmV3X3Bvcy5yb3cgPSBzdC5sYXN0X2NvbW1lbnRfcm93IGluXG4gICAgbGV0IG5lZWRfdG9fcmVwb3NpdGlvbiA9XG4gICAgICAobm90IChBYnNfcG9zLmdlcSBuZXdfcG9zIHN0LmN1cnJlbnQpKVxuICAgICAgfHwgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnRcbiAgICAgIHx8IG5lZWRfdG9fbGVhdmVfcm9vbV9iZXR3ZWVuX3R3b191bmVzY2FwZWRfYXRvbXNfbGVzdF90aGV5X2JlY29tZV9vbmVcbiAgICBpblxuICAgIGxldCByb3dfZGVsdGEsIG5ld19wb3MgPVxuICAgICAgaWYgbmVlZF90b19yZXBvc2l0aW9uXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogcmVwb3NpdGlvbmluZyBoZXVyaXN0aWM6IGp1c3QgbW92ZSB0byB0aGUgbmV4dCBmcmVzaCByb3cgKilcbiAgICAgICAgbGV0IG5ld19yb3cgPSAxICsgc3QuY3VycmVudC5BYnNfcG9zLnJvdyBpblxuICAgICAgICBsZXQgcm93X2RlbHRhID0gbmV3X3JvdyAtIG5ld19wb3MuQWJzX3Bvcy5yb3cgaW5cbiAgICAgICAgcm93X2RlbHRhLCB7IEFic19wb3Mucm93ID0gbmV3X3JvdzsgY29sID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCB9KVxuICAgICAgZWxzZSAwLCBuZXdfcG9zXG4gICAgaW5cbiAgICAoKiBhZHZhbmNlIHRvIG5ld19wb3MgYnkgZW1pdHRpbmcgd2hpdGVzcGFjZSAqKVxuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5yb3cgPiBzdC5jdXJyZW50LkFic19wb3Mucm93XG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5yb3cgLSBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJ1xcbicgfm4pO1xuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5jb2wgPiBzdC5jdXJyZW50LkFic19wb3MuY29sXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5jb2wgLSBzdC5jdXJyZW50LkFic19wb3MuY29sIGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJyAnIH5uKTtcbiAgICBhc3NlcnQgKG5ld19wb3MgPSBzdC5jdXJyZW50KTtcbiAgICBpZiBsaW5lX2NvbW1lbnQgdGhlbiBzdC5sYXN0X2NvbW1lbnRfcm93IDwtIHN0LmN1cnJlbnQucm93O1xuICAgIHN0LnJvd19zaGlmdFxuICAgIDwtIHsgc3Qucm93X3NoaWZ0IHdpdGggUmVsX3Bvcy5yb3cgPSBzdC5yb3dfc2hpZnQuUmVsX3Bvcy5yb3cgKyByb3dfZGVsdGEgfVxuICA7O1xuXG4gIGxldCByZWMgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIChzdCA6IHN0YXRlKSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEF0b20gKGRlbHRhLCB0ZXh0LCBmbXRfdGV4dCkgLT5cbiAgICAgIGxldCBmbXRfdGV4dCA9XG4gICAgICAgIG1hdGNoIGZtdF90ZXh0IHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+IFByZV9zZXhwLm1hY2hfbWF5YmVfZXNjX3N0ciB0ZXh0XG4gICAgICAgIHwgU29tZSB0ZXh0IC0+IHRleHRcbiAgICAgIGluXG4gICAgICBsZXQgdW5lc2NhcGVkID0gZm10X3RleHQuWzBdIDw+ICdcIicgaW5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206dW5lc2NhcGVkIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IGZtdF90ZXh0O1xuICAgICAgc3QubGFzdF9hdG9tIDwtIFNvbWUgeyBpbW1lZF9hZnRlciA9IHN0LmN1cnJlbnQ7IHVuZXNjYXBlZCB9XG4gICAgfCBMaXN0IChzdGFydF9kZWx0YSwgdG9jcywgZW5kX2RlbHRhKSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpzdGFydF9kZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgbGV0IGNoaWxkX2FuY2hvciA9IEFic19wb3Muc3ViIHN0LmN1cnJlbnQgc3Qucm93X3NoaWZ0IGluXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKCc7XG4gICAgICBMaXN0Lml0ZXIgdG9jcyB+ZjooZnVuIHRvYyAtPiByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpjaGlsZF9hbmNob3Igc3QgdG9jKTtcbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZW5kX2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKSc7XG4gICAgICAoKVxuXG4gIGFuZCByZW5kZXJfdG9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBTZXhwIHQgLT4gcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgICB8IENvbW1lbnQgYyAtPiByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgY1xuXG4gIGFuZCByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgPSBmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCAoZGVsdGEsIHRleHQpIC0+XG4gICAgICBsZXQgbGluZV9jb21tZW50ID0gU3RyaW5nLmxlbmd0aCB0ZXh0ID4gMCAmJiB0ZXh0LlswXSA9ICc7JyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50O1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCB0ZXh0XG4gICAgfCBTZXhwX2NvbW1lbnQgKGRlbHRhLCBjcywgdCkgLT5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgXCIjO1wiO1xuICAgICAgTGlzdC5pdGVyIGNzIH5mOihyZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QpO1xuICAgICAgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgOztcblxuICBsZXQgcmVuZGVyIGFzZXhwIHB1dGMgc3QgPSByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpBYnNfcG9zLm9yaWdpbiBzdCBhc2V4cFxuICBsZXQgc2V4cCA9IHJlbmRlclxuZW5kXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFR5cGUudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoVHlwZS50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoVHlwZS50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIChfLCB4LCBfKSAtPiBrIChUeXBlLkF0b20geClcbiAgICAgIHwgTGlzdCAoXywgdG9jcywgXykgLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKFR5cGUuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5vcGVuIFNleHBcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDMyX3ZlYyA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDY0X3ZlYyA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSBmbG9hdDY0X3ZlY1xudHlwZSBmbG9hdDMyX21hdCA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBmbG9hdDY0X21hdCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBmbG9hdDY0X21hdFxuXG5sZXQgc2V4cF9vZl9mbG9hdF92ZWMgdmVjID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheTEuZGltIHZlYyBkb3dudG8gMSBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCB2ZWMue2l9IDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2JpZ3N0cmluZyAoYnN0ciA6IGJpZ3N0cmluZykgPVxuICBsZXQgbiA9IEFycmF5MS5kaW0gYnN0ciBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue2l9XG4gIGRvbmU7XG4gIEF0b20gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl92ZWMgKHZlYyA6IGZsb2F0MzJfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfZmxvYXQ2NF92ZWMgKHZlYyA6IGZsb2F0NjRfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfdmVjICh2ZWMgOiB2ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5cbmxldCBzZXhwX29mX2Zsb2F0X21hdCBtYXQgPVxuICBsZXQgbSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgbiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICAoKiBJdCdzIHN1cnByaXNpbmcgdGhhdCB3ZSBzZXJpYWxpemUgW0ZvcnRyYW5fbGF5b3V0XSBtYXRyaWNlcyBpbiByb3ctbWFqb3Igb3JkZXIuIEkgY2FuXG4gICAgIG9ubHkgc3BlY3VsYXRlIHRoYXQgaXQgd2FzIGNob3NlbiBmb3IgcmVhZGFiaWxpdHkuIFRoZSBjYWNoZSBwZXJmb3JtYW5jZSBpc1xuICAgICBpcnJlbGV2YW50IGJlY2F1c2UgcGVvcGxlIHdobyBjYXJlIHdvbid0IHNlcmlhbGl6ZSB0byBzZXhwLiAqKVxuICBmb3Igcm93ID0gbiBkb3dudG8gMSBkb1xuICAgIGZvciBjb2wgPSBtIGRvd250byAxIGRvXG4gICAgICBsc3RfcmVmIDo9IHNleHBfb2ZfZmxvYXQgbWF0Lntjb2wsIHJvd30gOjogIWxzdF9yZWZcbiAgICBkb25lXG4gIGRvbmU7XG4gIExpc3QgKHNleHBfb2ZfaW50IG0gOjogc2V4cF9vZl9pbnQgbiA6OiAhbHN0X3JlZilcbjs7XG5cbmxldCBzZXhwX29mX2Zsb2F0MzJfbWF0IChtYXQgOiBmbG9hdDMyX21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX2Zsb2F0NjRfbWF0IChtYXQgOiBmbG9hdDY0X21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX21hdCAobWF0IDogbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IGJpZ3N0cmluZ19zZXhwX2dyYW1tYXIgOiBiaWdzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxuXG5sZXQgYmlnc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGJzdHIgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGJzdHIue2l9IDwtIHN0ci5baV1cbiAgICBkb25lO1xuICAgIGJzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdF92ZWMgY3JlYXRlX2Zsb2F0X3ZlYyBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBlbXB0eV9mbG9hdF92ZWNcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X3ZlYyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLntpfSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF92ZWNfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0MzJfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0XG5sZXQgY3JlYXRlX2Zsb2F0NjRfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0XG5sZXQgZW1wdHlfZmxvYXQzMl92ZWMgPSBjcmVhdGVfZmxvYXQzMl92ZWMgMFxubGV0IGVtcHR5X2Zsb2F0NjRfdmVjID0gY3JlYXRlX2Zsb2F0NjRfdmVjIDBcbmxldCBmbG9hdDMyX3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQzMl92ZWMgY3JlYXRlX2Zsb2F0MzJfdmVjXG5sZXQgZmxvYXQ2NF92ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0NjRfdmVjIGNyZWF0ZV9mbG9hdDY0X3ZlY1xubGV0IHZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX3NleHBfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IChNYW55IEZsb2F0KSB9XG5sZXQgZmxvYXQzMl92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfdmVjX3NleHBfZ3JhbW1hciA9IHZlY19zZXhwX2dyYW1tYXJcblxubGV0IGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlcyA9XG4gIGlmIGRhdGEgPSBbXSB0aGVuIHJlcyBlbHNlIG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogdG9vIG11Y2ggZGF0YVwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXRfbWF0IHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IChzbSA6OiBzbiA6OiBkYXRhKSAtPlxuICAgIGxldCBtID0gaW50X29mX3NleHAgc20gaW5cbiAgICBsZXQgbiA9IGludF9vZl9zZXhwIHNuIGluXG4gICAgbGV0IHJlcyA9IGNyZWF0ZV9mbG9hdF9tYXQgbSBuIGluXG4gICAgaWYgbSA9IDAgfHwgbiA9IDBcbiAgICB0aGVuIGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wX2NvbHMgY29sIGRhdGEgPVxuICAgICAgICBsZXQgdmVjID0gQXJyYXkyLnNsaWNlX3JpZ2h0IHJlcyBjb2wgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wX3Jvd3Mgcm93ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbm90IGVub3VnaCBkYXRhXCIgc2V4cFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICB2ZWMue3Jvd30gPC0gZmxvYXRfb2Zfc2V4cCBoO1xuICAgICAgICAgICAgaWYgcm93ID0gbVxuICAgICAgICAgICAgdGhlbiBpZiBjb2wgPSBuIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIHQgcmVzIGVsc2UgbG9vcF9jb2xzIChjb2wgKyAxKSB0XG4gICAgICAgICAgICBlbHNlIGxvb3Bfcm93cyAocm93ICsgMSkgdFxuICAgICAgICBpblxuICAgICAgICBsb29wX3Jvd3MgMSBkYXRhXG4gICAgICBpblxuICAgICAgbG9vcF9jb2xzIDEgZGF0YSlcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IHRvbyBzaG9ydFwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDMyX21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0MzJfbWF0XG5sZXQgZmxvYXQ2NF9tYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDY0X21hdFxubGV0IG1hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBtYXRfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKENvbnMgKEludGVnZXIsIENvbnMgKEludGVnZXIsIE1hbnkgRmxvYXQpKSkgfVxuOztcblxubGV0IGZsb2F0MzJfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBmbG9hdDY0X21hdF9zZXhwX2dyYW1tYXIgPSBtYXRfc2V4cF9ncmFtbWFyXG5sZXQgc3RyaW5nX29mX19vZl9fc2V4cF9vZiB0b19zZXhwIHggPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCB4KVxuXG5sZXQgb2Zfc3RyaW5nX19vZl9fb2Zfc2V4cCBvZl9zZXhwIHMgPVxuICB0cnlcbiAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHMgaW5cbiAgICBvZl9zZXhwIHNleHBcbiAgd2l0aFxuICB8IGUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKHNwcmludGYgXCJvZl9zdHJpbmcgZmFpbGVkIG9uICVzIHdpdGggJXNcIiBzIChTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpKSlcbjs7XG4iLCJtb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2hhc2h0YmxcbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYuaGFzaHRibF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMYXp5XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IHNleHBfb2ZfdW5pdCA9IENvbnYuc2V4cF9vZl91bml0XG5sZXQgdW5pdF9vZl9zZXhwID0gQ29udi51bml0X29mX3NleHBcbmxldCB1bml0X3NleHBfZ3JhbW1hciA9IENvbnYudW5pdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Jvb2wgPSBDb252LnNleHBfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc2V4cCA9IENvbnYuYm9vbF9vZl9zZXhwXG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgPSBDb252LmJvb2xfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9zdHJpbmcgPSBDb252LnNleHBfb2Zfc3RyaW5nXG5sZXQgc3RyaW5nX29mX3NleHAgPSBDb252LnN0cmluZ19vZl9zZXhwXG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA9IENvbnYuc3RyaW5nX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfY2hhciA9IENvbnYuc2V4cF9vZl9jaGFyXG5sZXQgY2hhcl9vZl9zZXhwID0gQ29udi5jaGFyX29mX3NleHBcbmxldCBjaGFyX3NleHBfZ3JhbW1hciA9IENvbnYuY2hhcl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludCA9IENvbnYuc2V4cF9vZl9pbnRcbmxldCBpbnRfb2Zfc2V4cCA9IENvbnYuaW50X29mX3NleHBcbmxldCBpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9mbG9hdCA9IENvbnYuc2V4cF9vZl9mbG9hdFxubGV0IGZsb2F0X29mX3NleHAgPSBDb252LmZsb2F0X29mX3NleHBcbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgPSBDb252LmZsb2F0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50MzIgPSBDb252LnNleHBfb2ZfaW50MzJcbmxldCBpbnQzMl9vZl9zZXhwID0gQ29udi5pbnQzMl9vZl9zZXhwXG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQzMl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludDY0ID0gQ29udi5zZXhwX29mX2ludDY0XG5sZXQgaW50NjRfb2Zfc2V4cCA9IENvbnYuaW50NjRfb2Zfc2V4cFxubGV0IGludDY0X3NleHBfZ3JhbW1hciA9IENvbnYuaW50NjRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSBDb252LnNleHBfb2ZfbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X29mX3NleHAgPSBDb252Lm5hdGl2ZWludF9vZl9zZXhwXG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA9IENvbnYubmF0aXZlaW50X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfcmVmID0gQ29udi5zZXhwX29mX3JlZlxubGV0IHJlZl9vZl9zZXhwID0gQ29udi5yZWZfb2Zfc2V4cFxubGV0IHJlZl9zZXhwX2dyYW1tYXIgPSBDb252LnJlZl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2xhenlfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbmxldCBsYXp5X3Rfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9vcHRpb24gPSBDb252LnNleHBfb2Zfb3B0aW9uXG5sZXQgb3B0aW9uX29mX3NleHAgPSBDb252Lm9wdGlvbl9vZl9zZXhwXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciA9IENvbnYub3B0aW9uX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGlzdCA9IENvbnYuc2V4cF9vZl9saXN0XG5sZXQgbGlzdF9vZl9zZXhwID0gQ29udi5saXN0X29mX3NleHBcbmxldCBsaXN0X3NleHBfZ3JhbW1hciA9IENvbnYubGlzdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2FycmF5ID0gQ29udi5zZXhwX29mX2FycmF5XG5sZXQgYXJyYXlfb2Zfc2V4cCA9IENvbnYuYXJyYXlfb2Zfc2V4cFxubGV0IGFycmF5X3NleHBfZ3JhbW1hciA9IENvbnYuYXJyYXlfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9leG4gPSBDb252LnNleHBfb2ZfZXhuXG5sZXQgZXhuX3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuIiwiaW5jbHVkZSBTZXhwX2dyYW1tYXJfaW50ZlxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubGV0IHJlbWVtYmVyX3RvX3VwZGF0ZV90aGVzZV90b2dldGhlciB+dF9vZl9zZXhwIH50X3NleHBfZ3JhbW1hciA9XG4gIHRfb2Zfc2V4cCwgdF9zZXhwX2dyYW1tYXJcbjs7XG4iLCIoKiBQYXRoOiBNb2R1bGUgZm9yIFN1YnN0aXR1dGlvbnMgd2l0aGluIFMtZXhwcmVzc2lvbnMgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gU2V4cFxuXG50eXBlIGVsID1cbiAgfCBQb3Mgb2YgaW50XG4gIHwgTWF0Y2ggb2Ygc3RyaW5nICogaW50XG4gIHwgUmVjIG9mIHN0cmluZ1xuXG50eXBlIHQgPSBlbCBsaXN0XG5cbmxldCBpbGxlZ2FsX2F0b20gbG9jIHNleHAgPVxuICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguJXM6IGlsbGVnYWwgYXRvbTogJXNcIiBsb2MgKFNleHAudG9fc3RyaW5nIHNleHApKVxuOztcblxubGV0IGV4dHJhY3RfcG9zX2xzdCBsb2Mgc2V4cCBpeCBsc3QgPVxuICBsZXQgcmVjIGxvb3AgYWNjIG4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBpbmRleCAlZCBpbjogJXNcIiBsb2MgaXggc2V4cF9zdHIpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN1YnN0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgICAgfCBTb21lIHggLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyAoeCA6OiB0KVxuICAgICAgICBpblxuICAgICAgICBzdWJzdCwgaClcbiAgICAgIGVsc2UgbG9vcCAoaCA6OiBhY2MpIChuIC0gMSkgdFxuICBpblxuICBsb29wIFtdIGl4IGxzdFxuOztcblxubGV0IGV4dHJhY3RfcG9zIG4gPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgc3Vic3QsIGVsID0gZXh0cmFjdF9wb3NfbHN0IFwiZXh0cmFjdF9wb3NcIiBzZXhwIG4gbHN0IGluXG4gICAgKGZ1biB4IC0+IExpc3QgKHN1YnN0IHgpKSwgZWxcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3Bvc1wiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggPSBmdW5jdGlvblxuICB8IExpc3QgKChBdG9tIHN0ciBhcyBzZXhwKSA6OiBhcmdzKSB3aGVuIHN0ciA9IHRhZyAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X21hdGNoXCIgKExpc3QgYXJncykgYXJnX2l4IGFyZ3MgaW5cbiAgICAoZnVuIG1heWJlX3ggLT4gTGlzdCAoc2V4cCA6OiBzdWJzdCBtYXliZV94KSksIGVsXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgZmFpbHdpdGggKFwiUGF0aC5leHRyYWN0X21hdGNoOiB1bmV4cGVjdGVkIG5lc3RlZCBsaXN0IGluOiBcIiBeIHNleHBfc3RyKVxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfbWF0Y2hcIiBzZXhwXG47O1xuXG5sZXQgZXh0cmFjdF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBMaXN0IGxzdCBhcyBzZXhwIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLmV4dHJhY3RfcmVjOiBrZXkgXFxcIiVzXFxcIiBub3QgZm91bmQgaW46ICVzXCIga2V5IHNleHBfc3RyKVxuICAgICAgfCBMaXN0IFsgKEF0b20gc3RyIGFzIHNleHApOyB2IF0gOjogcmVzdCB3aGVuIHN0ciA9IGtleSAtPlxuICAgICAgICBsZXQgc3Vic3QgeCA9IExpc3QgKExpc3QucmV2X2FwcGVuZCBhY2MgKExpc3QgWyBzZXhwOyB4IF0gOjogcmVzdCkpIGluXG4gICAgICAgIHN1YnN0LCB2XG4gICAgICB8IGggOjogdCAtPiBsb29wIChoIDo6IGFjYykgdFxuICAgIGluXG4gICAgbG9vcCBbXSBsc3RcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3JlY1wiIHNleHBcbjs7XG5cbmxldCBpZCB4ID0geFxuXG5sZXQgcmVjIHN1YnN0X29wdGlvbiAoc3VwX3N1YnN0LCBlbCkgcmVzdCA9XG4gIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICBsZXQgc3Vic3QgeCA9IHN1cF9zdWJzdCAoU29tZSAoc3ViX3N1YnN0IHgpKSBpblxuICBzdWJzdCwgc3ViX2VsXG5cbmFuZCBzdWJzdF9wYXRoIHNleHAgPSBmdW5jdGlvblxuICB8IFBvcyBuIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X3BvcyBuIHNleHApIHRcbiAgfCBNYXRjaCAodGFnLCBhcmdfaXgpIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggc2V4cCkgdFxuICB8IFJlYyBrZXkgOjogcmVzdCAtPlxuICAgIGxldCByZWNfc3Vic3QsIGVsID0gZXh0cmFjdF9yZWMga2V5IHNleHAgaW5cbiAgICBsZXQgc3ViX3N1YnN0LCBzdWJfZWwgPSBzdWJzdF9wYXRoIGVsIHJlc3QgaW5cbiAgICBsZXQgc3Vic3QgeCA9IHJlY19zdWJzdCAoc3ViX3N1YnN0IHgpIGluXG4gICAgc3Vic3QsIHN1Yl9lbFxuICB8IFtdIC0+IGlkLCBzZXhwXG47O1xuXG5sZXQgaW1wbG9kZSBsc3QgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbHN0IGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpeCA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIEJ5dGVzLnNldCBzdHIgaXggaDtcbiAgICAgIGxvb3AgKGl4ICsgMSkgdFxuICAgIHwgW10gLT4gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgaW5cbiAgbG9vcCAwIGxzdFxuOztcblxubGV0IGZhaWxfcGFyc2UgbXNnID0gZmFpbHdpdGggKFwiUGF0aC5wYXJzZTogXCIgXiBtc2cpXG5cbmxldCBwYXJzZSBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIGZhaWxfcGFyc2UgXCJwYXRoIGVtcHR5XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGFjYyBkb3RfaXggPVxuICAgICAgbWF0Y2ggc3RyLltkb3RfaXhdIHdpdGhcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBkb3RfaXgxID0gZG90X2l4ICsgMSBpblxuICAgICAgICBpZiBkb3RfaXgxID0gbGVuXG4gICAgICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgcGFyc2VfZG90IGFjYyBzdHJfYWNjIGl4ID1cbiAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBdXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgICAgICAgICB8ICdbJyAtPlxuICAgICAgICAgICAgICAgIGxldCByZWMgcGFyc2VfaW5kZXggaW5kZXhfYWNjIGl4ID1cbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgcmVhZGluZyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0sIGluZGV4X2FjYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgKCcwJyAuLiAnOScgYXMgYyksIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCAoU29tZSAoaW50X29mX2NoYXIgYyAtIDQ4KSkgKGl4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2luZGV4X2FjYyA9IFNvbWUgKCgxMCAqIGluZGV4X2FjYykgKyBpbnRfb2ZfY2hhciBjIC0gNDgpIGluXG4gICAgICAgICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggbmV3X2luZGV4X2FjYyAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICddJywgTm9uZSAtPiBmYWlsX3BhcnNlIFwiZW1wdHkgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB8ICddJywgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aF9lbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gUG9zIGluZGV4X2FjY1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXRjaCAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYyksIGluZGV4X2FjYylcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBwYXRoX2VsIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxvb3AgKHBhdGhfZWwgOjogYWNjKSBpeDFcbiAgICAgICAgICAgICAgICAgICAgfCBjLCBfIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCJpbGxlZ2FsIGNoYXJhY3RlciBpbiBpbmRleDogJWNcIiBjKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IE5vbmUgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnXFxcXCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgaXgxID0gaXggKyAxIGluXG4gICAgICAgICAgICAgICAgaWYgaXgxID0gbGVuXG4gICAgICAgICAgICAgICAgdGhlbiBmYWlsX3BhcnNlIFwiRU9GIGFmdGVyIGVzY2FwZVwiXG4gICAgICAgICAgICAgICAgZWxzZSBwYXJzZV9kb3QgYWNjIChzdHIuW2l4MV0gOjogc3RyX2FjYykgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW10gdGhlbiBmYWlsX3BhcnNlIFwiZG91YmxlICcuJ1wiO1xuICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID0gUmVjIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSkgaW5cbiAgICAgICAgICAgICAgICBwYXJzZV9kb3QgKHBhdGhfZWwgOjogYWNjKSBbXSAoaXggKyAxKVxuICAgICAgICAgICAgICB8IGMgLT4gcGFyc2VfZG90IGFjYyAoYyA6OiBzdHJfYWNjKSAoaXggKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2RvdCBhY2MgW10gZG90X2l4MSlcbiAgICAgIHwgYyAtPiBmYWlsX3BhcnNlIChzcHJpbnRmIFwiJy4nIGV4cGVjdGVkOyBnb3QgJyVjJ1wiIGMpXG4gICAgaW5cbiAgICBsb29wIFtdIDApXG47O1xuXG5sZXQgZ2V0X3N1YnN0IHBhdGggc3RyIHNleHAgPVxuICBsZXQgcGF0aCA9XG4gICAgbWF0Y2ggcGF0aCwgc3RyIHdpdGhcbiAgICB8IFNvbWUgcGF0aCwgXyAtPiBwYXRoXG4gICAgfCBOb25lLCBTb21lIHN0ciAtPiBwYXJzZSBzdHJcbiAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgaW5cbiAgc3Vic3RfcGF0aCBzZXhwIHBhdGhcbjs7XG5cbmxldCBnZXQgP3BhdGggP3N0ciBzZXhwID0gc25kIChnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cClcblxubGV0IHJlcGxhY2UgP3BhdGggP3N0ciBzZXhwIH5zdWJzdCA9XG4gIGxldCBzdWJzdF9mdW4sIF8gPSBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCBpblxuICBzdWJzdF9mdW4gc3Vic3Rcbjs7XG5cbmxldCByZXBsYWNlX25vX3BhdGggfnN0ciBzZXhwIH5zdWJzdCA9IHJlcGxhY2UgfnN0ciBzZXhwIH5zdWJzdFxuIiwibGV0IHJlZ2lzdGVyIGV4YyBleGNfbmFtZSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBfZXhjIC0+XG4gICAgU2V4cC5BdG9tIGV4Y19uYW1lKVxuOztcblxubGV0IG1hZ2ljX2ZpZWxkIHJlcHIgbiA9IE9iai5tYWdpYyAoT2JqLmZpZWxkIHJlcHIgbilcblxubGV0IHJlZ2lzdGVyMSBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIyIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIzIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMyBdKVxuOztcblxubGV0IHJlZ2lzdGVyNCBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyIHNleHBfb2ZfYXJnMyBzZXhwX29mX2FyZzQgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQgXSlcbjs7XG5cbmxldCByZWdpc3RlcjVcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNSBdKVxuOztcblxubGV0IHJlZ2lzdGVyNlxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI3XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNjsgc2V4cDcgXSlcbjs7XG5cbmxldCByZWdpc3RlcjhcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNzsgc2V4cDggXSlcbjs7XG5cbmxldCByZWdpc3RlcjlcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgICAgIHNleHBfb2ZfYXJnOVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIGxldCBzZXhwOSA9IHNleHBfb2ZfYXJnOSAobWFnaWNfZmllbGQgcmVwciA5KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWVcbiAgICAgIDsgc2V4cDFcbiAgICAgIDsgc2V4cDJcbiAgICAgIDsgc2V4cDNcbiAgICAgIDsgc2V4cDRcbiAgICAgIDsgc2V4cDVcbiAgICAgIDsgc2V4cDZcbiAgICAgIDsgc2V4cDdcbiAgICAgIDsgc2V4cDhcbiAgICAgIDsgc2V4cDlcbiAgICAgIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIxMFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gICAgICBzZXhwX29mX2FyZzEwXG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgbGV0IHNleHAxMCA9IHNleHBfb2ZfYXJnMTAgKG1hZ2ljX2ZpZWxkIHJlcHIgMTApIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgOyBzZXhwMTBcbiAgICAgIF0pXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgXCJGYXN0IFNwbGl0dGFibGUgUHNldWRvcmFuZG9tIE51bWJlciBHZW5lcmF0b3JzXCIgYnkgU3RlZWxlIGV0LlxuICAgIGFsLiAoMSkuICBUaGUgcGFwZXIncyBhbGdvcml0aG0gcHJvdmlkZXMgZGVjZW50IHJhbmRvbW5lc3MgZm9yIG1vc3QgcHVycG9zZXMsIGJ1dFxuICAgIHNhY3JpZmljZXMgY3J5cHRvZ3JhcGhpYy1xdWFsaXR5IHJhbmRvbW5lc3MgaW4gZmF2b3Igb2YgcGVyZm9ybWFuY2UuICBUaGUgb3JpZ2luYWxcbiAgICBpbXBsZW1lbnRhdGlvbiB3YXMgdGVzdGVkIHdpdGggRGllSGFyZGVyIGFuZCBCaWdDcnVzaDsgc2VlIHRoZSBwYXBlciBmb3IgZGV0YWlscy5cblxuICAgIE91ciBpbXBsZW1lbnRhdGlvbiBpcyBhIHBvcnQgZnJvbSBKYXZhIHRvIE9DYW1sIG9mIHRoZSBwYXBlcidzIGFsZ29yaXRobS4gIE90aGVyIHRoYW5cbiAgICB0aGUgY2hvaWNlIG9mIGluaXRpYWwgc2VlZCBmb3IgW2NyZWF0ZV0sIG91ciBwb3J0IHNob3VsZCBiZSBmYWl0aGZ1bC4gIFdlIGhhdmUgbm90XG4gICAgcmUtcnVuIHRoZSBEaWVIYXJkZXIgb3IgQmlnQ3J1c2ggdGVzdHMgb24gb3VyIGltcGxlbWVudGF0aW9uLiAgT3VyIHBvcnQgaXMgYWxzbyBub3QgYXNcbiAgICBwZXJmb3JtYW50IGFzIHRoZSBvcmlnaW5hbDsgdHdvIGZhY3RvcnMgdGhhdCBodXJ0IHVzIGFyZSBib3hlZCBbaW50NjRdIHZhbHVlcyBhbmQgbGFja1xuICAgIG9mIGEgUE9QQ05UIHByaW1pdGl2ZS5cblxuICAgICgxKSBodHRwOi8vMjAxNC5zcGxhc2hjb24ub3JnL2V2ZW50L29vcHNsYTIwMTQtZmFzdC1zcGxpdHRhYmxlLXBzZXVkb3JhbmRvbS1udW1iZXItZ2VuZXJhdG9yc1xuICAgIChhbHNvIG1pcnJvcmVkIGF0IGh0dHA6Ly9nZWUuY3Mub3N3ZWdvLmVkdS9kbC9wYXBlcnMvb29wc2xhMTQucGRmKVxuXG4gICAgQmV3YXJlIHdoZW4gaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlOyBpdCBpcyBlYXN5IHRvIGltcGxlbWVudCBhIFtzcGxpdF0gb3BlcmF0aW9uXG4gICAgd2hvc2Ugb3V0cHV0IGlzIG5vdCBhcyBcImluZGVwZW5kZW50XCIgYXMgaXQgc2VlbXMgKDIpLiAgVGhpcyBidWcgY2F1c2VkIHByb2JsZW1zIGZvclxuICAgIEhhc2tlbGwncyBRdWlja2NoZWNrIGxpYnJhcnkgZm9yIGEgbG9uZyB0aW1lLlxuXG4gICAgKDIpIFNjaGFhdGh1biwgXCJFdmFsdWF0aW9uIG9mIHNwbGl0dGFibGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzXCIsIEpGUCAyMDE1LlxuICAgIGh0dHA6Ly93d3cuaGcuc2NoYWF0aHVuLm5ldC9yZXNlYXJjaC9QYXBlcnMvaGdzMjAxNWpmcC5wZGZcbiopXG5cbm9wZW4hIEJhc2Vcbm9wZW4gIEludDY0Lk9cblxubGV0IGlzX29kZCB4ID0geCBsb3IgMUwgPSB4XG5cbmxldCBwb3Bjb3VudCA9IEludDY0LnBvcGNvdW50XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNlZWQgOiBpbnQ2NFxuICAgIDsgb2RkX2dhbW1hICAgIDogaW50NjRcbiAgICB9XG5cbiAgbGV0IGdvbGRlbl9nYW1tYSA9IDB4OWUzN183OWI5XzdmNGFfN2MxNUxcblxuICBsZXQgb2ZfaW50IHNlZWQgPVxuICAgIHsgc2VlZCAgICAgID0gSW50NjQub2ZfaW50IHNlZWRcbiAgICA7IG9kZF9nYW1tYSA9IGdvbGRlbl9nYW1tYVxuICAgIH1cblxuICBsZXQgY29weSB7IHNlZWQgOyBvZGRfZ2FtbWEgfSA9IHsgc2VlZCA7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IG1peF9iaXRzIHogbiA9XG4gICAgeiBseG9yICh6IGxzciBuKVxuXG4gIGxldCBtaXg2NCB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4ZmY1MV9hZmQ3X2VkNTVfOGNjZEwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4YzRjZV9iOWZlXzFhODVfZWM1M0wgaW5cbiAgICBtaXhfYml0cyB6IDMzXG5cbiAgbGV0IG1peDY0X3ZhcmlhbnQxMyB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMwKSAqIDB4YmY1OF80NzZkXzFjZTRfZTViOUwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDI3KSAqIDB4OTRkMF80OWJiXzEzMzFfMTFlYkwgaW5cbiAgICBtaXhfYml0cyB6IDMxXG5cbiAgbGV0IG1peF9vZGRfZ2FtbWEgeiA9XG4gICAgbGV0IHogPSAobWl4NjRfdmFyaWFudDEzIHopIGxvciAxTCBpblxuICAgIGxldCBuID0gcG9wY291bnQgKHogbHhvciAoeiBsc3IgMSkpIGluXG4gICAgKCogVGhlIG9yaWdpbmFsIHBhcGVyIHVzZXMgWz49XSBpbiB0aGUgY29uZGl0aW9uYWwgaW1tZWRpYXRlbHkgYmVsb3c7IGhvd2V2ZXIgdGhpcyBpc1xuICAgICAgIGEgdHlwbywgYW5kIHdlIGNvcnJlY3QgaXQgYnkgdXNpbmcgWzxdLiBUaGlzIHdhcyBmaXhlZCBpbiByZXNwb25zZSB0byBbMV0gYW5kIFsyXS5cblxuICAgICAgIFsxXSBodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9zcGxpdHRhYmxlX3JhbmRvbS9pc3N1ZXMvMVxuICAgICAgIFsyXSBodHRwOi8vd3d3LnBjZy1yYW5kb20ub3JnL3Bvc3RzL2J1Z3MtaW4tc3BsaXRtaXguaHRtbFxuICAgICopXG4gICAgaWYgSW50LiggPCApIG4gMjRcbiAgICB0aGVuIHogbHhvciAweGFhYWFfYWFhYV9hYWFhX2FhYWFMXG4gICAgZWxzZSB6XG5cbiAgbGV0JXRlc3RfdW5pdCBcIm9kZCBnYW1tYVwiID1cbiAgICBmb3IgaW5wdXQgPSAtMV8wMDBfMDAwIHRvIDFfMDAwXzAwMCBkb1xuICAgICAgbGV0IG91dHB1dCA9IG1peF9vZGRfZ2FtbWEgKEludDY0Lm9mX2ludCBpbnB1dCkgaW5cbiAgICAgIGlmIG5vdCAoaXNfb2RkIG91dHB1dCkgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICAgIFwiZ2FtbWEgdmFsdWUgaXMgbm90IG9kZFwiXG4gICAgICAgICAgICAoaW5wdXQgIDogaW50KVxuICAgICAgICAgICAgKG91dHB1dCA6IGludDY0KV1cbiAgICBkb25lXG5cbiAgbGV0IG5leHRfc2VlZCB0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIHQub2RkX2dhbW1hIGluXG4gICAgdC5zZWVkIDwtIG5leHQ7XG4gICAgbmV4dFxuXG4gIGxldCBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWEgPVxuICAgIGxldCBzZWVkICAgICAgPSBtaXg2NCAgICAgICAgIHNlZWQgIGluXG4gICAgbGV0IG9kZF9nYW1tYSA9IG1peF9vZGRfZ2FtbWEgZ2FtbWEgaW5cbiAgICB7IHNlZWQ7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgPVxuICAgIFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHJhbmRvbV9zdGF0ZSBJbnQ2NC5taW5fdmFsdWUgSW50NjQubWF4X3ZhbHVlXG5cbiAgbGV0IGNyZWF0ZSByYW5kb21fc3RhdGUgPVxuICAgIGxldCBzZWVkICA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBsZXQgZ2FtbWEgPSByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlIGluXG4gICAgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hXG5cbiAgbGV0IHNwbGl0IHQgPVxuICAgIGxldCBzZWVkICA9IG5leHRfc2VlZCB0IGluXG4gICAgbGV0IGdhbW1hID0gbmV4dF9zZWVkIHQgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgbmV4dF9pbnQ2NCB0ID0gbWl4NjQgKG5leHRfc2VlZCB0KVxuXG4gICgqIFtwZXJ0dXJiXSBpcyBub3QgZnJvbSBhbnkgZXh0ZXJuYWwgc291cmNlLCBidXQgcHJvdmlkZXMgYSB3YXkgdG8gbWl4IGluIGV4dGVybmFsXG4gICAgIGVudHJvcHkgd2l0aCBhIHBzZXVkby1yYW5kb20gc3RhdGUuICopXG4gIGxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gICAgbGV0IG5leHQgPSB0LnNlZWQgKyBtaXg2NCAoSW50NjQub2ZfaW50IHNhbHQpIGluXG4gICAgdC5zZWVkIDwtIG5leHRcblxuZW5kXG5cbmxldCBib29sIHN0YXRlID0gaXNfb2RkIChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBXZSBhYnVzZSB0ZXJtaW5vbG9neSBhbmQgcmVmZXIgdG8gaW5kaXZpZHVhbCB2YWx1ZXMgYXMgYmlhc2VkIG9yIHVuYmlhc2VkLiAgTW9yZVxuICAgcHJvcGVybHksIHdoYXQgaXMgdW5iaWFzZWQgaXMgdGhlIHNhbXBsZXIgdGhhdCByZXN1bHRzIGlmIHdlIGtlZXAgb25seSB0aGVzZSBcInVuYmlhc2VkXCJcbiAgIHZhbHVlcy4gKilcbmxldCByZW1haW5kZXJfaXNfdW5iaWFzZWRcbiAgICAgIH5kcmF3XG4gICAgICB+cmVtYWluZGVyXG4gICAgICB+ZHJhd19tYXhpbXVtXG4gICAgICB+cmVtYWluZGVyX21heGltdW1cbiAgPVxuICBsZXQgb3BlbiBJbnQ2NC5PIGluXG4gIGRyYXcgLSByZW1haW5kZXIgPD0gZHJhd19tYXhpbXVtIC0gcmVtYWluZGVyX21heGltdW1cblxubGV0JXRlc3RfdW5pdCBcInJlbWFpbmRlcl9pc191bmJpYXNlZFwiID1cbiAgKCogY2hvb3NpbmcgYSByYW5nZSBvZiAxMCB2YWx1ZXMgYmFzZWQgb24gYSByYW5nZSBvZiAxMDUgdmFsdWVzICopXG4gIGxldCBkcmF3X21heGltdW0gPSAxMDRMIGluXG4gIGxldCByZW1haW5kZXJfbWF4aW11bSA9IDlMIGluXG4gIGxldCBpc191bmJpYXNlZCBkcmF3ID1cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjQucmVtIGRyYXcgKEludDY0LnN1Y2MgcmVtYWluZGVyX21heGltdW0pIGluXG4gICAgcmVtYWluZGVyX2lzX3VuYmlhc2VkIH5kcmF3IH5yZW1haW5kZXIgfmRyYXdfbWF4aW11bSB+cmVtYWluZGVyX21heGltdW1cbiAgaW5cbiAgZm9yIGkgPSAwIHRvIDk5IGRvXG4gICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgIChpc191bmJpYXNlZCAoSW50NjQub2ZfaW50IGkpKVxuICAgICAgfmV4cGVjdDp0cnVlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lO1xuICBmb3IgaSA9IDEwMCB0byAxMDQgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OmZhbHNlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYm91bmRlZCByYW5kb21uZXNzIGlzIGFkYXB0ZWQgZnJvbSBbUmFuZG9tLlN0YXRlLmludCpdIGluIHRoZVxuICAgT0NhbWwgc3RhbmRhcmQgbGlicmFyeS4gIFRoZSBwdXJwb3NlIGlzIHRvIHVzZSB0aGUgbWluaW11bSBudW1iZXIgb2YgY2FsbHMgdG9cbiAgIFtuZXh0X2ludDY0XSB0byBwcm9kdWNlIGEgbnVtYmVyIHVuaWZvcm1seSBjaG9zZW4gd2l0aGluIHRoZSBnaXZlbiByYW5nZS4gKilcbmxldCBpbnQ2NCA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgbGV0IHJlYyBiZXR3ZWVuIHN0YXRlIH5sbyB+aGkgPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBpblxuICAgIGlmIGxvIDw9IGRyYXcgJiYgZHJhdyA8PSBoaVxuICAgIHRoZW4gZHJhd1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG4gIGluXG4gIGxldCByZWMgbm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIG1heGltdW0gPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBsYW5kIEludDY0Lm1heF92YWx1ZSBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyBtYXhpbXVtKSBpblxuICAgIGlmIHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgICAgfmRyYXdcbiAgICAgICAgIH5yZW1haW5kZXJcbiAgICAgICAgIH5kcmF3X21heGltdW06SW50NjQubWF4X3ZhbHVlXG4gICAgICAgICB+cmVtYWluZGVyX21heGltdW06bWF4aW11bVxuICAgIHRoZW4gcmVtYWluZGVyXG4gICAgZWxzZSBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bVxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIGxvID4gaGkgdGhlbiBiZWdpblxuICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnQ2NDogY3Jvc3NlZCBib3VuZHNcIiAobG8gOiBpbnQ2NCkgKGhpIDogaW50NjQpXVxuICAgIGVuZDtcbiAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICBpZiBkaWZmID0gSW50NjQubWF4X3ZhbHVlXG4gICAgdGhlbiAoKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpIGxhbmQgSW50NjQubWF4X3ZhbHVlKSArIGxvXG4gICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgdGhlbiAobm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIGRpZmYpICsgbG9cbiAgICBlbHNlIGJldHdlZW4gc3RhdGUgfmxvIH5oaVxuXG5sZXQgaW50IHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9pbnQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgaW50MzIgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludDMyIGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX2ludDMyIGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50MzJfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBuYXRpdmVpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX25hdGl2ZWludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9uYXRpdmVpbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19uYXRpdmVpbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQ2MyBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjMudG9faW50NjQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjMudG9faW50NjQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2My5vZl9pbnQ2NF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGRvdWJsZV91bHAgPSAyLiAqKi4gLTUzLlxuXG5sZXQldGVzdF91bml0IFwiZG91YmxlX3VscFwiID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT5cbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApID0gMS4wKVxuICB8IFczMiAtPlxuICAgICgqIDMyLWJpdCBPQ2FtbCB1c2VzIGEgNjQtYml0IGZsb2F0IHJlcHJlc2VudGF0aW9uIGJ1dCA4MC1iaXQgZmxvYXQgaW5zdHJ1Y3Rpb25zLCBzb1xuICAgICAgIHJvdW5kaW5nIHdvcmtzIGRpZmZlcmVudGx5IGR1ZSB0byB0aGUgY29udmVyc2lvbiBiYWNrIGFuZCBmb3J0aC4gKilcbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgIDEuMCk7XG4gICAgYXNzZXJ0ICgxLjAgLS4gKGRvdWJsZV91bHAgLy4gMi4wKSA8PSAxLjApXG5cbmxldCB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjQgPVxuICAoSW50NjQudG9fZmxvYXQgKGludDY0IGxzciAxMSkpICouIGRvdWJsZV91bHBcblxubGV0JXRlc3RfdW5pdCBcInVuaXRfZmxvYXRfZnJvbV9pbnQ2NFwiID0gYmVnaW5cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweDAwMDBfMDAwMF8wMDAwXzAwMDBMID0gMC4pO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMIDwgMS4wKTtcbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHhmZmZmX2ZmZmZfZmZmZl9mZmZmTCA9ICgxLjAgLS4gZG91YmxlX3VscCkpO1xuZW5kXG5cbmxldCB1bml0X2Zsb2F0IHN0YXRlID1cbiAgdW5pdF9mbG9hdF9mcm9tX2ludDY0IChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBOb3RlIGFib3V0IHJvdW5kb2ZmIGVycm9yOlxuXG4gICBBbHRob3VnaCBbZmxvYXQgc3RhdGUgfmxvIH5oaV0gaXMgbm9taW5hbGx5IGluY2x1c2l2ZSBvZiBlbmRwb2ludHMsIHdlIGFyZSByZWx5aW5nIG9uXG4gICB0aGUgZmFjdCB0aGF0IFt1bml0X2Zsb2F0XSBuZXZlciByZXR1cm5zIDEuLCBiZWNhdXNlIHRoZXJlIGFyZSBwYWlycyBbKGxvLGhpKV0gZm9yXG4gICB3aGljaCBbbG8gKy4gMS4gKi4gKGhpIC0uIGxvKSA+IGhpXS4gIFRoZXJlIGFyZSBhbHNvIHBhaXJzIFsobG8saGkpXSBhbmQgdmFsdWVzIG9mIFt4XVxuICAgd2l0aCBbeCA8IDEuXSBzdWNoIHRoYXQgW2xvICsuIHggKi4gKGhpIC0uIGxvKSA9IGhpXSwgc28gaXQgd291bGQgbm90IGJlIGNvcnJlY3QgdG9cbiAgIGRvY3VtZW50IHRoaXMgYXMgYmVpbmcgZXhjbHVzaXZlIG9mIFtoaV0uXG4qKVxubGV0IGZsb2F0ID1cbiAgbGV0IHJlYyBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IHJhbmdlID0gaGkgLS4gbG8gaW5cbiAgICBpZiBGbG9hdC5pc19maW5pdGUgcmFuZ2VcbiAgICB0aGVuIChsbyArLiAodW5pdF9mbG9hdCBzdGF0ZSAqLiByYW5nZSkpXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogSWYgW2hpIC0gbG9dIGlzIGluZmluaXRlLCB0aGVuIFtoaSArIGxvXSBpcyBmaW5pdGUgYmVjYXVzZSBbaGldIGFuZCBbbG9dIGhhdmVcbiAgICAgICAgIG9wcG9zaXRlIHNpZ25zLiAqKVxuICAgICAgbGV0IG1pZCA9IChoaSArLiBsbykgLy4gMi4gaW5cbiAgICAgIGlmIGJvb2wgc3RhdGVcbiAgICAgICgqIERlcGVuZGluZyBvbiByb3VuZGluZywgdGhlIHJlY3Vyc2lvbiB3aXRoIFt+aGk6bWlkXSBtaWdodCBiZSBpbmNsdXNpdmUgb2YgW21pZF0sXG4gICAgICAgICB3aGljaCB3b3VsZCBtZWFuIHRoZSB0d28gY2FzZXMgb3ZlcmxhcCBvbiBbbWlkXS4gVGhlIGFsdGVybmF0aXZlIGlzIHRvIGluY3JlbWVudFxuICAgICAgICAgb3IgZGVjcmVtZW50IFttaWRdIHVzaW5nIFtvbmVfdWxwXSBpbiBlaXRoZXIgb2YgdGhlIGNhbGxzLCBidXQgdGhlbiBpZiB0aGUgZmlyc3RcbiAgICAgICAgIGNhc2UgaXMgZXhjbHVzaXZlIHdlIGxlYXZlIGEgXCJnYXBcIiBiZXR3ZWVuIHRoZSB0d28gcmFuZ2VzLiBUaGVyZSdzIG5vIHBlcmZlY3RseVxuICAgICAgICAgdW5pZm9ybSBzb2x1dGlvbiwgc28gd2UgdXNlIHRoZSBzaW1wbGVyIGNvZGUgdGhhdCBkb2VzIG5vdCBjYWxsIFtvbmVfdWxwXS4gKilcbiAgICAgIHRoZW4gZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGk6bWlkXG4gICAgICBlbHNlIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG86bWlkIH5oaVxuICAgIGVuZFxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvICYmIEZsb2F0LmlzX2Zpbml0ZSBoaSlcbiAgICB0aGVuIGJlZ2luXG4gICAgICByYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICBcImZsb2F0OiBib3VuZHMgYXJlIG5vdCBmaW5pdGUgbnVtYmVyc1wiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBpZiBGbG9hdC4oID4gKSBsbyBoaVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaVxuXG5sZXQlYmVuY2hfZnVuIFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPVxuICBsZXQgaW50NjQgPSAxTCBpblxuICBmdW4gKCkgLT4gdW5pdF9mbG9hdF9mcm9tX2ludDY0IGludDY0XG5cbm1vZHVsZSBMb2dfdW5pZm9ybSA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZSAoTSA6IHNpZyBpbmNsdWRlIEludC5TIHZhbCB1bmlmb3JtIDogU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdCBlbmQpIDogc2lnXG4gICAgdmFsIGxvZ191bmlmb3JtIDogU3RhdGUudCAtPiBsbzpNLnQgLT4gaGk6TS50IC0+IE0udFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIE1cblxuICAgIGxldCBiaXRzX3RvX3JlcHJlc2VudCB0ID1cbiAgICAgIGFzc2VydCAodCA+PSB6ZXJvKTtcbiAgICAgIGxldCB0ID0gcmVmIHQgaW5cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlICF0ID4gemVybyBkb1xuICAgICAgICB0IDo9IHNoaWZ0X3JpZ2h0ICF0IDE7XG4gICAgICAgIEludC5pbmNyIG47XG4gICAgICBkb25lO1xuICAgICAgIW5cblxuICAgIGxldCV0ZXN0X3VuaXQgXCJiaXRzX3RvX3JlcHJlc2VudFwiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogaW50XSAoYml0c190b19yZXByZXNlbnQgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAwKSAgIDA7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMSkgICAxO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDIpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAzKSAgIDI7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNCkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDUpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA2KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNykgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDgpICAgNDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxMDApIDc7XG4gICAgICB0ZXN0IE0ubWF4X3ZhbHVlIChJbnQucHJlZCBNLm51bV9iaXRzKTtcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBpZiBJbnQuZXF1YWwgbiAwXG4gICAgICB0aGVuIHplcm9cbiAgICAgIGVsc2Ugc2hpZnRfbGVmdCBvbmUgKEludC5wcmVkIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWluX3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0IGluXG4gICAgICB0ZXN0IDAgKE0ub2ZfaW50X2V4biAwKTtcbiAgICAgIHRlc3QgMSAoTS5vZl9pbnRfZXhuIDEpO1xuICAgICAgdGVzdCAyIChNLm9mX2ludF9leG4gMik7XG4gICAgICB0ZXN0IDMgKE0ub2ZfaW50X2V4biA0KTtcbiAgICAgIHRlc3QgNCAoTS5vZl9pbnRfZXhuIDgpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gNjQpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgKE0uc2hpZnRfcmlnaHRfbG9naWNhbCBNLm1pbl92YWx1ZSAxKTtcbiAgICA7O1xuXG4gICAgbGV0IG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBwcmVkIChzaGlmdF9sZWZ0IG9uZSBuKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcIm1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHNcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IE0udF0gKG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAzKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDcpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gMTUpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gMTI3KTtcbiAgICAgIHRlc3QgKEludC5wcmVkIE0ubnVtX2JpdHMpIE0ubWF4X3ZhbHVlO1xuICAgIDs7XG5cbiAgICBsZXQgbG9nX3VuaWZvcm0gc3RhdGUgfmxvIH5oaSA9XG4gICAgICBsZXQgbWluX2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBsbyBpblxuICAgICAgbGV0IG1heF9iaXRzID0gYml0c190b19yZXByZXNlbnQgaGkgaW5cbiAgICAgIGxldCBiaXRzID0gaW50IHN0YXRlIH5sbzptaW5fYml0cyB+aGk6bWF4X2JpdHMgaW5cbiAgICAgIHVuaWZvcm0gc3RhdGVcbiAgICAgICAgfmxvOihtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIGJpdHMgfD4gbWF4IGxvKVxuICAgICAgICB+aGk6KG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtaW4gaGkpXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfaW50ICAgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50ICAgICAgIGxldCB1bmlmb3JtID0gaW50ICAgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQzMiAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQzMiAgICAgbGV0IHVuaWZvcm0gPSBpbnQzMiAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDYzICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDYzICAgICBsZXQgdW5pZm9ybSA9IGludDYzICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjQgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjQgICAgIGxldCB1bmlmb3JtID0gaW50NjQgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBOYXRpdmVpbnQgbGV0IHVuaWZvcm0gPSBuYXRpdmVpbnQgZW5kKVxuXG4gIGxldCBpbnQgICAgICAgPSBGb3JfaW50LmxvZ191bmlmb3JtXG4gIGxldCBpbnQzMiAgICAgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1cbiAgbGV0IGludDYzICAgICA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjQgICAgID0gRm9yX2ludDY0LmxvZ191bmlmb3JtXG4gIGxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtXG5lbmRcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIHN1Y2MgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFN1Y2Nlc3Nvci4gIFtJbnQ2NC5zdWNjIHhdIGlzIFtJbnQ2NC5hZGQgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgcHJlZCA6IGludDY0IC0+IGludDY0XG4oKiogUHJlZGVjZXNzb3IuICBbSW50NjQucHJlZCB4XSBpcyBbSW50NjQuc3ViIHggSW50NjQub25lXS4gKilcblxudmFsIGFicyA6IGludDY0IC0+IGludDY0XG4oKiogW2FicyB4XSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgW3hdLiBPbiBbbWluX2ludF0gdGhpc1xuICAgaXMgW21pbl9pbnRdIGl0c2VsZiBhbmQgdGh1cyByZW1haW5zIG5lZ2F0aXZlLiAqKVxuXG52YWwgbWF4X2ludCA6IGludDY0XG4oKiogVGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIDJ7XjYzfSAtIDEuICopXG5cbnZhbCBtaW5faW50IDogaW50NjRcbigqKiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgLTJ7XjYzfS4gKilcblxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBhbmQuICopXG5cbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIG9yLiAqKVxuXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGV4Y2x1c2l2ZSBvci4gKilcblxudmFsIGxvZ25vdCA6IGludDY0IC0+IGludDY0XG4oKiogQml0d2lzZSBsb2dpY2FsIG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbigqKiBbSW50NjQuc2hpZnRfbGVmdCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIGxlZnQgYnkgW3ldIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGFuIGFyaXRobWV0aWMgc2hpZnQ6IHRoZSBzaWduIGJpdCBvZiBbeF0gaXMgcmVwbGljYXRlZFxuICAgYW5kIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhIGxvZ2ljYWwgc2hpZnQ6IHplcm9lcyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0c1xuICAgcmVnYXJkbGVzcyBvZiB0aGUgc2lnbiBvZiBbeF0uXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGludGVnZXIgKHR5cGUgW2ludF0pIHRvIGEgNjQtYml0IGludGVnZXJcbiAgICAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhblxuICAgaW50ZWdlciAodHlwZSBbaW50XSkuICBPbiA2NC1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye142M30sIGkuZS4gdGhlIGhpZ2gtb3JkZXIgYml0IGlzIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMxfSwgaS5lLiB0aGUgdG9wIDMzIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gKilcblxudmFsIHVuc2lnbmVkX3RvX2ludCA6IGludDY0IC0+IGludCBvcHRpb25cbigqKiBTYW1lIGFzIHshdG9faW50fSwgYnV0IGludGVycHJldHMgdGhlIGFyZ3VtZW50IGFzIGFuIHtlIHVuc2lnbmVkfSBpbnRlZ2VyLlxuICAgIFJldHVybnMgW05vbmVdIGlmIHRoZSB1bnNpZ25lZCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgY2Fubm90IGZpdCBpbnRvIGFuXG4gICAgW2ludF0uXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzLjAgKilcblxudmFsIG1pbjogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuICopXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMYXlvdXQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmlnYXJyYXkubGF5b3V0XG5cbiAgbGV0IG9mZnNldCA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgfCBCaWdhcnJheS5Gb3J0cmFuX2xheW91dCAtPiAxXG4gICAgfCBCaWdhcnJheS5DX2xheW91dCAtPiAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTEubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5MS5kaW0gdCAtIDEgZG9cbiAgICAgIGYgKGkgKyBvZmZzZXQpIHQue2kgKyBvZmZzZXR9XG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5MS5jcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IHQue2l9IDwtIGYgaSk7XG4gICAgdFxuICA7O1xuXG4gIGxldCBmb2xkICh0eXBlIGVsdCkgKHQgOiAoZWx0LCBfLCBfKSB0KSB+aW5pdCB+ZiA9XG4gICAgbGV0IGluaXQgPSByZWYgaW5pdCBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiBpbml0IDo9IGYgIWluaXQgdC57aX0pO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTEubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSB+ZjooZnVuIGkgLT4gdC57aSArIG9mZnNldH0pXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTEuZGltIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkyLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCAtIDEgZG9cbiAgICAgIGZvciBqID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMiB0IC0gMSBkb1xuICAgICAgICBmIChpICsgb2Zmc2V0KSAoaiArIG9mZnNldCkgdC57aSArIG9mZnNldCwgaiArIG9mZnNldH1cbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0xIGRpbTIgfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkyLmNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSBqIChfIDogZWx0KSAtPiB0LntpLCBqfSA8LSBmIGkgaik7XG4gICAgdFxuICA7O1xuXG4gIGxldCBmb2xkICh0eXBlIGVsdCkgKHQgOiAoZWx0LCBfLCBfKSB0KSB+aW5pdCB+ZiA9XG4gICAgbGV0IGluaXQgPSByZWYgaW5pdCBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biAoXyA6IGludCkgKF8gOiBpbnQpIGVsdCAtPiBpbml0IDo9IGYgIWluaXQgZWx0KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQpIH5mOihmdW4gaSAtPlxuICAgICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCkgfmY6KGZ1biBqIC0+IHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9KSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQpIGluXG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgJ2EgdCA9ICdhIC0+IHNpemU6aW50IC0+IGhhc2g6SGFzaC5zdGF0ZSAtPiBIYXNoLnN0YXRlXG5cbmxldCBjcmVhdGUgZiA6IF8gdCA9IGZcblxubGV0IG9ic2VydmUgKHQgOiBfIHQpIHggfnNpemUgfmhhc2ggPVxuICBpZiBzaXplIDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmU6IHNpemUgPCAwXCIgKHNpemUgOiBpbnQpXVxuICBlbHNlIHQgeCB+c2l6ZSB+aGFzaFxuOztcblxubGV0IG9wYXF1ZSBfIH5zaXplOl8gfmhhc2ggPSBoYXNoXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgKydhIHRcblxuICB2YWwgY3JlYXRlIDogKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBnZW5lcmF0ZSA6ICdhIHQgLT4gc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIFN0YWdlZC50XG5cbiAgbGV0IGNyZWF0ZSBmIDogXyB0ID0gU3RhZ2VkLnN0YWdlIGZcblxuICBsZXQgZ2VuZXJhdGUgKHQgOiBfIHQpIH5zaXplIH5yYW5kb20gPVxuICAgIGlmIHNpemUgPCAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZ2VuZXJhdGU6IHNpemUgPCAwXCIgKHNpemUgOiBpbnQpXVxuICAgIGVsc2UgU3RhZ2VkLnVuc3RhZ2UgdCB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBzaXplID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbTpfIC0+IHNpemUpXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5zcGxpdCByYW5kb20gaW5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IGhhc2ggPSBPYnNlcnZlcjAub2JzZXJ2ZSBkb20geCB+c2l6ZSB+aGFzaDooSGFzaC5hbGxvYyAoKSkgaW5cbiAgICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jb3B5IHJhbmRvbSBpblxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCk7XG4gICAgICBnZW5lcmF0ZSBybmcgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCB3aXRoX3NpemUgdCB+c2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG5cbmxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSBzYWx0O1xuICAgIGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgfnNpemUgfnJhbmRvbSA9XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgU29tZSB5IC0+IHlcbiAgICB8IE5vbmUgLT4gbG9vcCB+c2l6ZTooc2l6ZSArIDEpIH5yYW5kb21cbiAgaW5cbiAgY3JlYXRlIGxvb3Bcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbmxldCByZXR1cm4geCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbTpfIC0+IHgpXG5sZXQgbWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGYgKGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSkpXG5cbmxldCBhcHBseSB0ZiB0eCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgZiA9IGdlbmVyYXRlIHRmIH5zaXplIH5yYW5kb20gaW5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHR4IH5zaXplIH5yYW5kb20gaW5cbiAgICBmIHgpXG47O1xuXG5sZXQgYmluZCB0IH5mID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZ2VuZXJhdGUgKGYgeCkgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCBhbGwgbGlzdCA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5tYXAgbGlzdCB+ZjooZ2VuZXJhdGUgfnNpemUgfnJhbmRvbSkpXG5cbmxldCBhbGxfdW5pdCBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lml0ZXIgbGlzdCB+ZjooZ2VuZXJhdGUgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5tb2R1bGUgRm9yX2FwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBib3RoID0gRm9yX2FwcGxpY2F0aXZlLmJvdGhcbmxldCBtYXAyID0gRm9yX2FwcGxpY2F0aXZlLm1hcDJcbmxldCBtYXAzID0gRm9yX2FwcGxpY2F0aXZlLm1hcDNcblxubW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gRm9yX2FwcGxpY2F0aXZlLkFwcGxpY2F0aXZlX2luZml4XG5pbmNsdWRlIEFwcGxpY2F0aXZlX2luZml4XG5cbm1vZHVsZSBGb3JfbW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBpZ25vcmVfbSA9IEZvcl9tb25hZC5pZ25vcmVfbVxubGV0IGpvaW4gPSBGb3JfbW9uYWQuam9pblxuXG5tb2R1bGUgTW9uYWRfaW5maXggPSBGb3JfbW9uYWQuTW9uYWRfaW5maXhcbmluY2x1ZGUgTW9uYWRfaW5maXhcbm1vZHVsZSBMZXRfc3ludGF4ID0gRm9yX21vbmFkLkxldF9zeW50YXhcbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICBsZXQgbG8gPSAwIGluXG4gIGxldCBoaSA9IEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGluZGV4ID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG8gfmhpIGluXG4gICAgYXJyYXkuKGluZGV4KSlcbjs7XG5cbmxldCB1bmlvbiBsaXN0ID0gam9pbiAob2ZfbGlzdCBsaXN0KVxuXG5sZXQgb2Zfd2VpZ2h0ZWRfbGlzdCBhbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgYWxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IHdlaWdodHMsIHZhbHVlcyA9IExpc3QudW56aXAgYWxpc3QgaW5cbiAgbGV0IHZhbHVlX2FycmF5ID0gQXJyYXkub2ZfbGlzdCB2YWx1ZXMgaW5cbiAgbGV0IHRvdGFsX3dlaWdodCwgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXkgPVxuICAgIGxldCBhcnJheSA9IEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCB2YWx1ZV9hcnJheSkgfmY6KGZ1biBfIC0+IDAuKSBpblxuICAgIGxldCBzdW0gPVxuICAgICAgTGlzdC5mb2xkaSB3ZWlnaHRzIH5pbml0OjAuIH5mOihmdW4gaW5kZXggYWNjIHdlaWdodCAtPlxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB3ZWlnaHQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHdlaWdodCBpcyBub3QgZmluaXRlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgaWYgRmxvYXQuKCA8ICkgd2VpZ2h0IDAuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHdlaWdodCBpcyBuZWdhdGl2ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGxldCBjdW11bGF0aXZlID0gYWNjICsuIHdlaWdodCBpblxuICAgICAgICBhcnJheS4oaW5kZXgpIDwtIGN1bXVsYXRpdmU7XG4gICAgICAgIGN1bXVsYXRpdmUpXG4gICAgaW5cbiAgICBpZiBGbG9hdC4oIDw9ICkgc3VtIDAuXG4gICAgdGhlblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHRvdGFsIHdlaWdodCBpcyB6ZXJvXCJdO1xuICAgIHN1bSwgYXJyYXlcbiAgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGNob2ljZSA9IFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86MC4gfmhpOnRvdGFsX3dlaWdodCBpblxuICAgIG1hdGNoXG4gICAgICBBcnJheS5iaW5hcnlfc2VhcmNoXG4gICAgICAgIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5XG4gICAgICAgIH5jb21wYXJlOkZsb2F0LmNvbXBhcmVcbiAgICAgICAgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgICAgICBjaG9pY2VcbiAgICB3aXRoXG4gICAgfCBTb21lIGluZGV4IC0+IHZhbHVlX2FycmF5LihpbmRleClcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IHdlaWdodGVkX3VuaW9uIGFsaXN0ID0gam9pbiAob2Zfd2VpZ2h0ZWRfbGlzdCBhbGlzdClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGZvcmNlIGxhenlfdCkgfnNpemUgfnJhbmRvbSlcblxubGV0IGZpeGVkX3BvaW50IG9mX2dlbmVyYXRvciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2ZfZ2VuZXJhdG9yIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIGZvcmNlIGxhenlfdFxuOztcblxubGV0IHdlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbiBub25yZWNfbGlzdCB+ZiA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCByZWNfbGlzdCA9XG4gICAgICBMaXN0Lm1hcCAoZiBzZWxmKSB+ZjooZnVuICh3LCB0KSAtPlxuICAgICAgICAoIHdcbiAgICAgICAgLCBsZXQlYmluZCBuID0gc2l6ZSBpblxuICAgICAgICAgIHdpdGhfc2l6ZSB+c2l6ZToobiAtIDEpIHQgKSlcbiAgICBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgbm9ucmVjX2xpc3QgfHwgTGlzdC5pc19lbXB0eSByZWNfbGlzdFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLndlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbjogbGlzdHMgbXVzdCBiZSBub24tZW1wdHlcIl07XG4gICAgbGV0IG5vbnJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiBub25yZWNfbGlzdCBpblxuICAgIGxldCByZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gKG5vbnJlY19saXN0IEAgcmVjX2xpc3QpIGluXG4gICAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgICB8IDAgLT4gbm9ucmVjX2dlblxuICAgIHwgXyAtPiByZWNfZ2VuKVxuOztcblxubGV0IHJlY3Vyc2l2ZV91bmlvbiBub25yZWNfbGlzdCB+ZiA9XG4gIGxldCB3ZWlnaHRlZCBsaXN0ID0gTGlzdC5tYXAgbGlzdCB+ZjooZnVuIHQgLT4gMS4sIHQpIGluXG4gIHdlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbiAod2VpZ2h0ZWQgbm9ucmVjX2xpc3QpIH5mOihmdW4gc2VsZiAtPiB3ZWlnaHRlZCAoZiBzZWxmKSlcbjs7XG5cbmxldCBzaXplcyA/KG1pbl9sZW5ndGggPSAwKSA/KG1heF9sZW5ndGggPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBhc3NlcnQgKG1pbl9sZW5ndGggPD0gbWF4X2xlbmd0aCk7XG4gICAgbGV0IHVwcGVyX2JvdW5kID0gbWluX2xlbmd0aCArIHNpemUgaW5cbiAgICBsZXQgbWF4X2xlbmd0aCA9XG4gICAgICBpZiB1cHBlcl9ib3VuZCA+PSBtaW5fbGVuZ3RoICgqIGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cgKilcbiAgICAgIHRoZW4gbWluIG1heF9sZW5ndGggdXBwZXJfYm91bmRcbiAgICAgIGVsc2UgbWF4X2xlbmd0aFxuICAgIGluXG4gICAgKCogcGljayBhIGxlbmd0aCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgbW9zdCBvZiB0aGUgc2l6ZSBpcyBzcGVudCBvbiBlbGVtZW50cyAqKVxuICAgIGxldCBsZW4gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzptaW5fbGVuZ3RoIH5oaTptYXhfbGVuZ3RoIGluXG4gICAgKCogaWYgdGhlcmUgYXJlIG5vIGVsZW1lbnRzIHJldHVybiBhbiBlbXB0eSBhcnJheSwgb3RoZXJ3aXNlIHJldHVybiBhIG5vbi1lbXB0eSBhcnJheVxuICAgICAgIHdpdGggdGhlIHNpemUgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIGVsZW1lbnRzICopXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgIGxldCBzaXplcyA9IEFycmF5LmluaXQgbGVuIH5mOihmdW4gXyAtPiAwKSBpblxuICAgICAgbGV0IHJlbWFpbmluZyA9IHNpemUgLSAobGVuIC0gbWluX2xlbmd0aCkgaW5cbiAgICAgIGxldCBtYXhfaW5kZXggPSBsZW4gLSAxIGluXG4gICAgICBmb3IgXyA9IDEgdG8gcmVtYWluaW5nIGRvXG4gICAgICAgICgqIHBpY2sgYW4gaW5kZXgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IHdlIHNlZSB1bmJhbGFuY2VkIGRpc3RyaWJ1dGlvbnMgb2Z0ZW4gKilcbiAgICAgICAgbGV0IGluZGV4ID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIHNpemVzLihpbmRleCkgPC0gc2l6ZXMuKGluZGV4KSArIDFcbiAgICAgIGRvbmU7XG4gICAgICAoKiBwZXJtdXRlIHRoZSBhcnJheSBzbyB0aGF0IG5vIGluZGV4IGlzIGZhdm9yZWQgb3ZlciBhbm90aGVyICopXG4gICAgICBmb3IgaSA9IDAgdG8gbWF4X2luZGV4IC0gMSBkb1xuICAgICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBBcnJheS5zd2FwIHNpemVzIGkgalxuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCAoQXJyYXkuc3VtIChtb2R1bGUgSW50KSBzaXplcyB+ZjpGbi5pZCArIChsZW4gLSBtaW5fbGVuZ3RoKSA9IHNpemUpO1xuICAgICAgQXJyYXkudG9fbGlzdCBzaXplcykpXG47O1xuXG5sZXQgdW5pdCA9IHJldHVybiAoKVxubGV0IGJvb2wgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gU3BsaXR0YWJsZV9yYW5kb20uYm9vbCByYW5kb20pXG5sZXQgb3B0aW9uIHZhbHVlX3QgPSB1bmlvbiBbIHJldHVybiBOb25lOyBtYXAgdmFsdWVfdCB+ZjpPcHRpb24ucmV0dXJuIF1cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPSB1bmlvbiBbIG1hcCBmc3RfdCB+ZjpFaXRoZXIuZmlyc3Q7IG1hcCBzbmRfdCB+ZjpFaXRoZXIuc2Vjb25kIF1cblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG47O1xuXG5sZXQgbGlzdF9nZW5lcmljID9taW5fbGVuZ3RoID9tYXhfbGVuZ3RoIGVsdF9nZW4gPVxuICBsZXQlYmluZCBzaXplcyA9IHNpemVzID9taW5fbGVuZ3RoID9tYXhfbGVuZ3RoICgpIGluXG4gIExpc3QubWFwIHNpemVzIH5mOihmdW4gc2l6ZSAtPiB3aXRoX3NpemUgfnNpemUgZWx0X2dlbikgfD4gYWxsXG47O1xuXG5sZXQgbGlzdCBlbHRfZ2VuID0gbGlzdF9nZW5lcmljIGVsdF9nZW5cbmxldCBsaXN0X25vbl9lbXB0eSBlbHRfZ2VuID0gbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOjEgZWx0X2dlblxuXG5sZXQgbGlzdF93aXRoX2xlbmd0aCBlbHRfZ2VuIH5sZW5ndGggPVxuICBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCBlbHRfZ2VuXG47O1xuXG5sZXQgbGlzdF9maWx0ZXJlZCBlbHRzID1cbiAgbGV0IGVsdHMgPSBBcnJheS5vZl9saXN0IGVsdHMgaW5cbiAgbGV0IGxlbmd0aF9vZl9pbnB1dCA9IEFycmF5Lmxlbmd0aCBlbHRzIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBsZW5ndGhfb2Zfb3V0cHV0ID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6bGVuZ3RoX29mX2lucHV0IGluXG4gICAgbGV0IGluZGljZXMgPSBBcnJheS5pbml0IGxlbmd0aF9vZl9pbnB1dCB+ZjpGbi5pZCBpblxuICAgICgqIENob29zZSBbbGVuZ3RoX29mX291dHB1dF0gcmFuZG9tIHZhbHVlcyBpbiB0aGUgcHJlZml4IG9mIFtpbmRpY2VzXS4gKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX29mX291dHB1dCAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6KGxlbmd0aF9vZl9pbnB1dCAtIDEpIGluXG4gICAgICBBcnJheS5zd2FwIGluZGljZXMgaSBqXG4gICAgZG9uZTtcbiAgICAoKiBTb3J0IHRoZSBjaG9zZW4gaW5kaWNlcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVvcmRlciB0aGVtLiAqKVxuICAgIEFycmF5LnNvcnQgaW5kaWNlcyB+cG9zOjAgfmxlbjpsZW5ndGhfb2Zfb3V0cHV0IH5jb21wYXJlOkludC5jb21wYXJlO1xuICAgICgqIFJldHVybiB0aGUgY2hvc2VuIGVsZW1lbnRzLiAqKVxuICAgIExpc3QuaW5pdCBsZW5ndGhfb2Zfb3V0cHV0IH5mOihmdW4gaSAtPiBlbHRzLihpbmRpY2VzLihpKSkpKVxuOztcblxubGV0IGxpc3RfcGVybXV0YXRpb25zIGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTppIGluXG4gICAgICBBcnJheS5zd2FwIGFycmF5IGkgalxuICAgIGRvbmU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJheSlcbjs7XG5cbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGVcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWxcblxubGV0IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzooQ2hhci50b19pbnQgbG8pIH5oaTooQ2hhci50b19pbnQgaGkpXG4gICAgfD4gQ2hhci51bnNhZmVfb2ZfaW50KVxuOztcblxubGV0IGNoYXJfdXBwZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnQScgJ1onXG5sZXQgY2hhcl9sb3dlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdhJyAneidcbmxldCBjaGFyX2RpZ2l0ID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnMCcgJzknXG5sZXQgY2hhcl9wcmludF91bmlmb3JtID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnICcgJ34nXG5sZXQgY2hhcl91bmlmb3JtID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBDaGFyLm1pbl92YWx1ZSBDaGFyLm1heF92YWx1ZVxubGV0IGNoYXJfYWxwaGEgPSB1bmlvbiBbIGNoYXJfbG93ZXJjYXNlOyBjaGFyX3VwcGVyY2FzZSBdXG5cbmxldCBjaGFyX2FscGhhbnVtID1cbiAgd2VpZ2h0ZWRfdW5pb25cbiAgICAoKiBNb3N0IHBlb3BsZSBwcm9iYWJseSBleHBlY3QgdGhpcyB0byBiZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLCBub3Qgd2VpZ2h0ZWRcbiAgICAgICB0b3dhcmQgZGlnaXRzIGxpa2Ugd2Ugd291bGQgZ2V0IHdpdGggW3VuaW9uXSAoc2luY2UgdGhlcmUgYXJlIGZld2VyIGRpZ2l0cyB0aGFuXG4gICAgICAgbGV0dGVycykuICopXG4gICAgWyA1Mi4sIGNoYXJfYWxwaGE7IDEwLiwgY2hhcl9kaWdpdCBdXG47O1xuXG5sZXQgY2hhcl93aGl0ZXNwYWNlID0gb2ZfbGlzdCAoTGlzdC5maWx0ZXIgQ2hhci5hbGwgfmY6Q2hhci5pc193aGl0ZXNwYWNlKVxubGV0IGNoYXJfcHJpbnQgPSB3ZWlnaHRlZF91bmlvbiBbIDEwLiwgY2hhcl9hbHBoYW51bTsgMS4sIGNoYXJfcHJpbnRfdW5pZm9ybSBdXG5cbmxldCBjaGFyID1cbiAgd2VpZ2h0ZWRfdW5pb25cbiAgICBbIDEwMC4sIGNoYXJfcHJpbnRcbiAgICA7IDEwLiwgY2hhcl91bmlmb3JtXG4gICAgOyAxLiwgcmV0dXJuIENoYXIubWluX3ZhbHVlXG4gICAgOyAxLiwgcmV0dXJuIENoYXIubWF4X3ZhbHVlXG4gICAgXVxuOztcblxuKCogUHJvZHVjZXMgYSBudW1iZXIgZnJvbSAwIG9yIDEgdG8gc2l6ZSArIDEsIHdlaWdodGVkIGhpZ2guIFdlIGhhdmUgZm91bmQgdGhpc1xuICAgZGlzdHJpYnV0aW9uIGVtcGlyaWNhbGx5IHVzZWZ1bCBmb3Igc3RyaW5nIGxlbmd0aHMuICopXG5sZXQgc21hbGxfaW50IH5hbGxvd196ZXJvID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBsb3dlcl9ib3VuZCA9IGlmIGFsbG93X3plcm8gdGhlbiAwIGVsc2UgMSBpblxuICAgIGxldCB1cHBlcl9ib3VuZCA9IHNpemUgKyAxIGluXG4gICAgbGV0IHdlaWdodGVkX2xvdyA9XG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaToodXBwZXJfYm91bmQgLSBsb3dlcl9ib3VuZClcbiAgICBpblxuICAgIGxldCB3ZWlnaHRlZF9oaWdoID0gdXBwZXJfYm91bmQgLSB3ZWlnaHRlZF9sb3cgaW5cbiAgICB3ZWlnaHRlZF9oaWdoKVxuOztcblxubGV0IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOnRydWVcbmxldCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86ZmFsc2VcblxubW9kdWxlIHR5cGUgSW50X3dpdGhfcmFuZG9tID0gc2lnXG4gIGluY2x1ZGUgSW50LlNcblxuICB2YWwgdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbiAgdmFsIGxvZ191bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBGb3JfaW50ZWdlciAoSW50ZWdlciA6IEludF93aXRoX3JhbmRvbSkgPSBzdHJ1Y3RcbiAgbGV0IHVuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci51bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBsb2dfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLmxvZ191bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBub25fdW5pZm9ybSBmIGxvIGhpID1cbiAgICB3ZWlnaHRlZF91bmlvbiBbIDAuMDUsIHJldHVybiBsbzsgMC4wNSwgcmV0dXJuIGhpOyAwLjksIGYgbG8gaGkgXVxuICA7O1xuXG4gIGxldCBpbmNsdXNpdmUgPSBub25fdW5pZm9ybSB1bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgbG9nX2luY2x1c2l2ZSA9IG5vbl91bmlmb3JtIGxvZ191bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgdW5pZm9ybV9hbGwgPSB1bmlmb3JtX2luY2x1c2l2ZSBJbnRlZ2VyLm1pbl92YWx1ZSBJbnRlZ2VyLm1heF92YWx1ZVxuXG4gIGxldCBhbGwgPVxuICAgIFslbWFwXG4gICAgICBsZXQgbmVnYXRpdmUgPSBib29sXG4gICAgICBhbmQgbWFnbml0dWRlID0gbG9nX2luY2x1c2l2ZSBJbnRlZ2VyLnplcm8gSW50ZWdlci5tYXhfdmFsdWUgaW5cbiAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gSW50ZWdlci5iaXRfbm90IG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2ludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnRcbiAgZW5kKVxuXG5sZXQgaW50ID0gRm9yX2ludC5hbGxcbmxldCBpbnRfdW5pZm9ybSA9IEZvcl9pbnQudW5pZm9ybV9hbGxcbmxldCBpbnRfaW5jbHVzaXZlID0gRm9yX2ludC5pbmNsdXNpdmVcbmxldCBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmVcbmxldCBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9pbnQzMiA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDMyXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDMyXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50MzJcbiAgZW5kKVxuXG5sZXQgaW50MzIgPSBGb3JfaW50MzIuYWxsXG5sZXQgaW50MzJfdW5pZm9ybSA9IEZvcl9pbnQzMi51bmlmb3JtX2FsbFxubGV0IGludDMyX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5pbmNsdXNpdmVcbmxldCBpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9pbnQ2MyA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDYzXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDYzXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjNcbiAgZW5kKVxuXG5sZXQgaW50NjMgPSBGb3JfaW50NjMuYWxsXG5sZXQgaW50NjNfdW5pZm9ybSA9IEZvcl9pbnQ2My51bmlmb3JtX2FsbFxubGV0IGludDYzX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5pbmNsdXNpdmVcbmxldCBpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDYzX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX2luY2x1c2l2ZVxubGV0IGludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9pbnQ2NCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDY0XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDY0XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjRcbiAgZW5kKVxuXG5sZXQgaW50NjQgPSBGb3JfaW50NjQuYWxsXG5sZXQgaW50NjRfdW5pZm9ybSA9IEZvcl9pbnQ2NC51bmlmb3JtX2FsbFxubGV0IGludDY0X2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5pbmNsdXNpdmVcbmxldCBpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjQubG9nX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBOYXRpdmVpbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20ubmF0aXZlaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0ubmF0aXZlaW50XG4gIGVuZClcblxubGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQuYWxsXG5sZXQgbmF0aXZlaW50X3VuaWZvcm0gPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1fYWxsXG5sZXQgbmF0aXZlaW50X2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQuaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZmxvYXRfemVyb19leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMC5cbmxldCBmbG9hdF96ZXJvX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSAwLlxuXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9XG4gIEZsb2F0Lm9uZV91bHAgYERvd24gRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IEZsb2F0Lm1heF9maW5pdGVfdmFsdWVcbmxldCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9pbmZfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfaW5mX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X25hbl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubmFuXG5sZXQgZmxvYXRfbWluX25hbl9tYW50aXNzYSA9IEludDYzLnN1Y2MgZmxvYXRfaW5mX21hbnRpc3NhXG5sZXQgZmxvYXRfbWF4X25hbl9tYW50aXNzYSA9IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2FcbmxldCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyA9IDUyXG5cbigqIFdlIHdlaWdodCBtYW50aXNzYXMgc28gdGhhdCBcImludGVnZXItbGlrZVwiIHZhbHVlcywgYW5kIHZhbHVlcyB3aXRoIG9ubHkgYSBmZXcgZGlnaXRzXG4gICBwYXN0IHRoZSBkZWNpbWFsLCBhcmUgcmVhc29uYWJseSBjb21tb24uICopXG5sZXQgZmxvYXRfbm9ybWFsX21hbnRpc3NhID1cbiAgbGV0JWJpbmQgbnVtX2JpdHMgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlIDAgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgaW5cbiAgbGV0JW1hcCBiaXRzID1cbiAgICBGb3JfaW50NjMuaW5jbHVzaXZlIEludDYzLnplcm8gKEludDYzLnByZWQgKEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzKSlcbiAgaW5cbiAgSW50NjMuc2hpZnRfbGVmdCBiaXRzIChJbnQuKCAtICkgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgbnVtX2JpdHMpXG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCArICkgbG93ZXJfYm91bmQgb2Zmc2V0XG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggLSApIHVwcGVyX2JvdW5kIG9mZnNldFxuOztcblxuKCogV2Ugd2VpZ2h0IGV4cG9uZW50cyBzdWNoIHRoYXQgdmFsdWVzIG5lYXIgMSBhcmUgbW9yZSBsaWtlbHkuICopXG5sZXQgZmxvYXRfZXhwb25lbnQgPVxuICBsZXQgbWlkcG9pbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDEuIGluXG4gIHVuaW9uXG4gICAgWyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgbWlkcG9pbnRcbiAgICA7IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBtaWRwb2ludCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50XG4gICAgXVxuOztcblxubGV0IGZsb2F0X3plcm8gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfemVyb19leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF96ZXJvX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPVxuICAgIEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlIGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYVxuICBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9ub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSBmbG9hdF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBmbG9hdF9ub3JtYWxfbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfaW5maW5pdGUgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfaW5mX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X2luZl9tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25hbiA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9uYW5fZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gRm9yX2ludDYzLmluY2x1c2l2ZSBmbG9hdF9taW5fbmFuX21hbnRpc3NhIGZsb2F0X21heF9uYW5fbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gZmxvYXRfemVyb1xuICB8IFN1Ym5vcm1hbCAtPiBmbG9hdF9zdWJub3JtYWxcbiAgfCBOb3JtYWwgLT4gZmxvYXRfbm9ybWFsXG4gIHwgSW5maW5pdGUgLT4gZmxvYXRfaW5maW5pdGVcbiAgfCBOYW4gLT4gZmxvYXRfbmFuXG47O1xuXG5sZXQgZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IDEuXG4gIHwgU3Vibm9ybWFsIC0+IDEwLlxuICB8IE5vcm1hbCAtPiAxMDAuXG4gIHwgSW5maW5pdGUgLT4gMS5cbiAgfCBOYW4gLT4gMS5cbjs7XG5cbmxldCBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIGZpbHRlciA9XG4gIExpc3QuZmlsdGVyX21hcCBGbG9hdC5DbGFzcy5hbGwgfmY6KGZ1biBjIC0+XG4gICAgaWYgZmlsdGVyIGMgdGhlbiBTb21lIChmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYywgZmxvYXRfb2ZfY2xhc3MgYykgZWxzZSBOb25lKVxuICB8PiB3ZWlnaHRlZF91bmlvblxuOztcblxubGV0IGZsb2F0X2Zpbml0ZSA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3dpdGhvdXRfbmFuID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgfCBJbmZpbml0ZSAtPiB0cnVlXG4gICAgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXQgPSBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW4gXyAtPiB0cnVlKVxuXG5sZXQgZmxvYXRfZmluaXRlX25vbl96ZXJvID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBaZXJvIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfcG9zaXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X25lZ2F0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBpZiAobm90IChGbG9hdC5pc19maW5pdGUgbG93ZXJfYm91bmQpKSB8fCBub3QgKEZsb2F0LmlzX2Zpbml0ZSB1cHBlcl9ib3VuZClcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiBib3VuZHMgYXJlIG5vdCBmaW5pdGVcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGxldCBsb3dlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCBpblxuICBsZXQgdXBwZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgRG93biB1cHBlcl9ib3VuZCBpblxuICBpZiBsb3dlcl9pbmNsdXNpdmUgPiB1cHBlcl9pbmNsdXNpdmVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiByZXF1ZXN0ZWQgcmFuZ2UgaXMgZW1wdHlcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86bG93ZXJfaW5jbHVzaXZlIH5oaTp1cHBlcl9pbmNsdXNpdmUpXG47O1xuXG5sZXQgZmxvYXRfaW5jbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgaWYgRmxvYXQuZXF1YWwgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgdGhlbiByZXR1cm4gbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBGbG9hdC4oID0gKSAoRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQpIHVwcGVyX2JvdW5kXG4gIHRoZW4gdW5pb24gWyByZXR1cm4gbG93ZXJfYm91bmQ7IHJldHVybiB1cHBlcl9ib3VuZCBdXG4gIGVsc2VcbiAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgWyAwLjA1LCByZXR1cm4gbG93ZXJfYm91bmRcbiAgICAgIDsgMC4wNSwgcmV0dXJuIHVwcGVyX2JvdW5kXG4gICAgICA7IDAuOSwgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgICAgIF1cbjs7XG5cbmxldCBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aCA9XG4gIGxpc3Rfd2l0aF9sZW5ndGggY2hhcl9nZW4gfmxlbmd0aCB8PiBtYXAgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdFxuOztcblxubGV0IHN0cmluZ19vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmcgPSBzdHJpbmdfb2YgY2hhclxubGV0IHN0cmluZ19ub25fZW1wdHkgPSBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJcbmxldCBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aCA9IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyIH5sZW5ndGhcbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nXG5cbmxldCBzZXhwX29mIGF0b20gPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQlYmluZCBzaXplID0gc2l6ZSBpblxuICAgICgqIGNob29zZSBhIG51bWJlciB3ZWlnaHRlZCBsb3cgc28gd2UgaGF2ZSBhIGRlY3JlYXNpbmcsIGJ1dCBub3QgdmFuaXNoaW5nLCBjaGFuY2VcbiAgICAgICB0byBnZW5lcmF0ZSBhdG9tcyBhcyBzaXplIGdyb3dzICopXG4gICAgbWF0Y2glYmluZCBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZSAwIChzaXplICsgMSkgd2l0aFxuICAgICgqIGdlbmVyYXRlIGFuIGF0b20gdXNpbmcgdGhlIGdpdmVuIHNpemUgKilcbiAgICB8IDAgLT5cbiAgICAgIGxldCVtYXAgYXRvbSA9IGF0b20gaW5cbiAgICAgIFNleHAuQXRvbSBhdG9tXG4gICAgKCogcmVseWluZyBvbiBbTGlzdC5nZW5dIHRvIGRpc3RyaWJ1dGUgW3NpemVdIG92ZXIgc3ViLXNleHBzICopXG4gICAgfCBfIC0+XG4gICAgICBsZXQlbWFwIGxpc3QgPSBsaXN0IHNlbGYgaW5cbiAgICAgIFNleHAuTGlzdCBsaXN0KVxuOztcblxubGV0IHNleHAgPSBzZXhwX29mIHN0cmluZ1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0JWJpbmQga2V5cyA9IGxpc3Qga2V5X2dlbiBpblxuICBsZXQga2V5cyA9IExpc3QuZGVkdXBfYW5kX3NvcnQga2V5cyB+Y29tcGFyZTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICBsZXQlYmluZCBkYXRhID0gbGlzdF93aXRoX2xlbmd0aCBkYXRhX2dlbiB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBrZXlzKSBpblxuICByZXR1cm4gKE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIChMaXN0LnppcF9leG4ga2V5cyBkYXRhKSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICBtYXAgKGxpc3QgZWx0X2dlbikgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfbGlzdCB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBjb21wYXJhdG9yX29mX21cbiAgICAgICh0eXBlIGEgYylcbiAgICAgIChtb2R1bGUgTSA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gYylcbiAgPVxuICBNLmNvbXBhcmF0b3Jcbjs7XG5cbmxldCBtYXBfdF9tIG0ga2V5X2dlbiBkYXRhX2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuXG4gIHw+IG1hcCB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBzZXRfdF9tIG0gZWx0X2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuXG4gIHw+IG1hcCB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBiaWdhcnJheTEgdCBraW5kIGxheW91dCA9XG4gIGxldCVtYXAgZWx0cyA9IGxpc3QgdCBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgZGltID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCBkaW0gfmY6KGZ1biBpIC0+IGVsdHMuKGkgLSBvZmZzZXQpKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGJpZ2FycmF5MSBjaGFyIENoYXIgQ19sYXlvdXRcbmxldCBmbG9hdDMyX3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF92ZWMgPSBiaWdhcnJheTEgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5sZXQgYmlnYXJyYXkyX2RpbSA9XG4gIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gIHwgMCAtPiByZXR1cm4gKDAsIDApXG4gIHwgbWF4X3RvdGFsX3NpemUgLT5cbiAgICBsZXQlYmluZCBhID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemVdLCB3ZWlnaHRlZCBsb3cgdG8gZ2l2ZSB0aGUgb3RoZXJcbiAgICAgICAgIGRpbWVuc2lvbiBhIGdvb2QgY2hhbmNlIG9mIGJlaW5nIGNvbXBhcmF0aXZlbHkgaGlnaCAqKVxuICAgICAgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIG1heF90b3RhbF9zaXplXG4gICAgaW5cbiAgICBsZXQlYmluZCBiID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemUgLyBhXSwgd2VpZ2h0ZWQgaGlnaCB0byByZWFjaCBjbG9zZSB0b1xuICAgICAgICAgW21heF90b3RhbF9zaXplXSBtb3N0IG9mIHRoZSB0aW1lICopXG4gICAgICBsZXQgbWF4X2IgPSBtYXhfdG90YWxfc2l6ZSAvIGEgaW5cbiAgICAgIGxldCVtYXAgYl93ZWlnaHRlZF9sb3cgPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgbWF4X2IgaW5cbiAgICAgIG1heF9iIC0gYl93ZWlnaHRlZF9sb3dcbiAgICBpblxuICAgICgqIGF2b2lkIGFueSBza2V3IG9mIGEgdnMgYiBieSByYW5kb21seSBzd2FwcGluZyAqKVxuICAgIGlmJW1hcCBib29sIHRoZW4gYSwgYiBlbHNlIGIsIGFcbjs7XG5cbmxldCBiaWdhcnJheTIgdCBraW5kIGxheW91dCA9XG4gIGxldCViaW5kIGRpbTEsIGRpbTIgPSBiaWdhcnJheTJfZGltIGluXG4gIGxldCVtYXAgZWx0cyA9IGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0xIChsaXN0X3dpdGhfbGVuZ3RoIH5sZW5ndGg6ZGltMiB0KSBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3RfbWFwIH5mOkFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGkgaiAtPlxuICAgIGVsdHMuKGkgLSBvZmZzZXQpLihqIC0gb2Zmc2V0KSlcbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF9tYXQgPSBiaWdhcnJheTIgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgRGVidWcgPSBzdHJ1Y3RcbiAgbGV0IGNvdmVyYWdlXG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIENtcCA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICBzYW1wbGVcbiAgICA9XG4gICAgU2VxdWVuY2UuZm9sZFxuICAgICAgc2FtcGxlXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgQ21wKSlcbiAgICAgIH5mOihmdW4gY291bnRzIHZhbHVlIC0+XG4gICAgICAgIE1hcC51cGRhdGUgY291bnRzIHZhbHVlIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldiArIDEpKVxuICA7O1xuXG4gIGxldCBtb25pdG9yIHQgfmYgPVxuICAgIG1hcCB0IH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGYgdmFsdWU7XG4gICAgICB2YWx1ZSlcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIHN1Y2MgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFN1Y2Nlc3Nvci4gIFtJbnQ2NC5zdWNjIHhdIGlzIFtJbnQ2NC5hZGQgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgcHJlZCA6IGludDY0IC0+IGludDY0XG4oKiogUHJlZGVjZXNzb3IuICBbSW50NjQucHJlZCB4XSBpcyBbSW50NjQuc3ViIHggSW50NjQub25lXS4gKilcblxudmFsIGFicyA6IGludDY0IC0+IGludDY0XG4oKiogW2FicyB4XSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgW3hdLiBPbiBbbWluX2ludF0gdGhpc1xuICAgaXMgW21pbl9pbnRdIGl0c2VsZiBhbmQgdGh1cyByZW1haW5zIG5lZ2F0aXZlLiAqKVxuXG52YWwgbWF4X2ludCA6IGludDY0XG4oKiogVGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIDJ7XjYzfSAtIDEuICopXG5cbnZhbCBtaW5faW50IDogaW50NjRcbigqKiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgLTJ7XjYzfS4gKilcblxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBhbmQuICopXG5cbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIG9yLiAqKVxuXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGV4Y2x1c2l2ZSBvci4gKilcblxudmFsIGxvZ25vdCA6IGludDY0IC0+IGludDY0XG4oKiogQml0d2lzZSBsb2dpY2FsIG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbigqKiBbSW50NjQuc2hpZnRfbGVmdCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIGxlZnQgYnkgW3ldIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGFuIGFyaXRobWV0aWMgc2hpZnQ6IHRoZSBzaWduIGJpdCBvZiBbeF0gaXMgcmVwbGljYXRlZFxuICAgYW5kIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhIGxvZ2ljYWwgc2hpZnQ6IHplcm9lcyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0c1xuICAgcmVnYXJkbGVzcyBvZiB0aGUgc2lnbiBvZiBbeF0uXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGludGVnZXIgKHR5cGUgW2ludF0pIHRvIGEgNjQtYml0IGludGVnZXJcbiAgICAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhblxuICAgaW50ZWdlciAodHlwZSBbaW50XSkuICBPbiA2NC1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye142M30sIGkuZS4gdGhlIGhpZ2gtb3JkZXIgYml0IGlzIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMxfSwgaS5lLiB0aGUgdG9wIDMzIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gKilcblxudmFsIHVuc2lnbmVkX3RvX2ludCA6IGludDY0IC0+IGludCBvcHRpb25cbigqKiBTYW1lIGFzIHshdG9faW50fSwgYnV0IGludGVycHJldHMgdGhlIGFyZ3VtZW50IGFzIGFuIHtlIHVuc2lnbmVkfSBpbnRlZ2VyLlxuICAgIFJldHVybnMgW05vbmVdIGlmIHRoZSB1bnNpZ25lZCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgY2Fubm90IGZpdCBpbnRvIGFuXG4gICAgW2ludF0uXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzLjAgKilcblxudmFsIG1pbjogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuICopXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBhdG9taWMgOiBfIHRcbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYSBTZXF1ZW5jZS50KSAtPiAnYSB0XG4gIHZhbCBzaHJpbmsgOiAnYSB0IC0+ICdhIC0+ICdhIFNlcXVlbmNlLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgbGV0IGF0b21pYyBfID0gU2VxdWVuY2UuZW1wdHlcbiAgbGV0IGNyZWF0ZSA9IEZuLmlkXG4gIGxldCBzaHJpbmsgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgbWFwIHQgfmYgfmZfaW52ZXJzZSA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UubWFwIH5mIChzaHJpbmsgdCAoZl9pbnZlcnNlIHgpKSlcbmxldCBmaWx0ZXIgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyIH5mIChzaHJpbmsgdCB4KSlcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiB+Zl9pbnZlcnNlID1cbiAgY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXJfbWFwIH5mIChzaHJpbmsgdCAoZl9pbnZlcnNlIHgpKSlcbjs7XG5cbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2Uub2ZfbGF6eSAobGF6eSAoc2hyaW5rIChmb3JjZSBsYXp5X3QpIHgpKSlcblxubGV0IGZpeGVkX3BvaW50IG9mX3Nocmlua2VyID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9zaHJpbmtlciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgIFsgU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjooZnVuIGZzdCAtPiBmc3QsIHNuZClcbiAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjooZnVuIHNuZCAtPiBmc3QsIHNuZClcbiAgICAgIF0pXG47O1xuXG5sZXQgdW5pdCA9IGF0b21pY1xubGV0IGJvb2wgPSBhdG9taWNcbmxldCBjaGFyID0gYXRvbWljXG5sZXQgaW50ID0gYXRvbWljXG5sZXQgaW50MzIgPSBhdG9taWNcbmxldCBpbnQ2MyA9IGF0b21pY1xubGV0IGludDY0ID0gYXRvbWljXG5sZXQgbmF0aXZlaW50ID0gYXRvbWljXG5sZXQgZmxvYXQgPSBhdG9taWNcblxubGV0IGJpZ2FycmF5MSBzcmMgPVxuICBsZXQgZGltID0gQmlnYXJyYXkuQXJyYXkxLmRpbSBzcmMgaW5cbiAgbWF0Y2ggZGltIHdpdGhcbiAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gIHwgXyAtPlxuICAgIGxldCBraW5kID0gQmlnYXJyYXkuQXJyYXkxLmtpbmQgc3JjIGluXG4gICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgc3JjIGluXG4gICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICBTZXF1ZW5jZS5pbml0IGRpbSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgIGxldCB0b19za2lwID0gdG9fc2tpcCArIG9mZnNldCBpblxuICAgICAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCAoZGltIC0gMSkgfmY6KGZ1biBpIC0+XG4gICAgICAgIHNyYy57aWYgaSA8IHRvX3NraXAgdGhlbiBpIGVsc2UgaSArIDF9KSlcbjs7XG5cbmxldCBiaWdzdHJpbmcgPSBjcmVhdGUgYmlnYXJyYXkxXG5sZXQgZmxvYXQzMl92ZWMgPSBjcmVhdGUgYmlnYXJyYXkxXG5sZXQgZmxvYXQ2NF92ZWMgPSBjcmVhdGUgYmlnYXJyYXkxXG5cbmxldCBiaWdhcnJheTIgPVxuICBsZXQgbW9kdWxlIERpbXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBkaW0xIDogaW50XG4gICAgICA7IGRpbTIgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlIGEgPSBCaWdhcnJheS5BcnJheTIueyBkaW0xID0gZGltMSBhOyBkaW0yID0gZGltMiBhIH1cbiAgZW5kXG4gIGluXG4gIGxldCBzaHJpbmsgZmllbGQgc3JjID1cbiAgICBsZXQgZGltcyA9IERpbXMuY3JlYXRlIHNyYyBpblxuICAgIG1hdGNoIEZpZWxkLmdldCBmaWVsZCBkaW1zIHdpdGhcbiAgICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IF8gLT5cbiAgICAgIGxldCBraW5kID0gQmlnYXJyYXkuQXJyYXkyLmtpbmQgc3JjIGluXG4gICAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkyLmxheW91dCBzcmMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgICBsZXQgKHsgZGltMTsgZGltMiB9IDogRGltcy50KSA9IEZpZWxkLm1hcCBmaWVsZCBkaW1zIH5mOkludC5wcmVkIGluXG4gICAgICBTZXF1ZW5jZS5pbml0IChGaWVsZC5nZXQgZmllbGQgZGltcykgfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICAgIGxldCB0b19za2lwID0gdG9fc2tpcCArIG9mZnNldCBpblxuICAgICAgICBsZXQgc2tpcCBpID0gaWYgaSA8IHRvX3NraXAgdGhlbiBpIGVsc2UgaSArIDEgaW5cbiAgICAgICAgQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaW5pdCBraW5kIGxheW91dCBkaW0xIGRpbTIgfmY6KGZ1biBkaW0xIGRpbTIgLT5cbiAgICAgICAgICBsZXQgKHsgZGltMTsgZGltMiB9IDogRGltcy50KSA9IEZpZWxkLm1hcCBmaWVsZCB7IGRpbTE7IGRpbTIgfSB+Zjpza2lwIGluXG4gICAgICAgICAgc3JjLntkaW0xLCBkaW0yfSkpXG4gIGluXG4gIGZ1biBzcmMgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmluayBEaW1zLkZpZWxkcy5kaW0xIHNyYzsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTIgc3JjIF1cbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGNyZWF0ZSBiaWdhcnJheTJcbmxldCBmbG9hdDY0X21hdCA9IGNyZWF0ZSBiaWdhcnJheTJcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgY3JlYXRlIChmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gTm9uZSlcbiAgICAgICAgKFNlcXVlbmNlLm1hcCB+ZjpPcHRpb24ucmV0dXJuIChzaHJpbmsgdmFsdWVfdCB2YWx1ZSkpKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBmaXhlZF9wb2ludCAoZnVuIGxpc3RfdCAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gdGFpbFxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgZWx0X3QgaGVhZCkgfmY6KGZ1biBoZWFkIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGxpc3RfdCB0YWlsKSB+ZjooZnVuIHRhaWwgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHN0cmluZyA9IG1hcCAobGlzdCBjaGFyKSB+ZjpTdHJpbmcub2ZfY2hhcl9saXN0IH5mX2ludmVyc2U6U3RyaW5nLnRvX2xpc3RcbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nIH5mX2ludmVyc2U6Qnl0ZXMudG9fc3RyaW5nXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0IH5mX2ludmVyc2U6QXJyYXkudG9fbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZSB+Zl9pbnZlcnNlOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbCB+Zl9pbnZlcnNlOkxhenkuZm9yY2VcblxubGV0IHNleHAgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNocmlua2VyIC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBTZXhwLkxpc3QgbCAtPlxuICAgICAgICBsZXQgc2hyaW5rX2xpc3QgPVxuICAgICAgICAgIHNocmluayAobGlzdCBzaHJpbmtlcikgbCB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBsIC0+IFNleHAuTGlzdCBsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2hyaW5rX3RyZWUgPSBTZXF1ZW5jZS5vZl9saXN0IGwgaW5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmtfbGlzdDsgc2hyaW5rX3RyZWUgXSkpXG47O1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOkVpdGhlci5maXJzdFxuICAgIHwgU2Vjb25kIHNuZCAtPiBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOkVpdGhlci5zZWNvbmQpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXBcbiAgICAoZWl0aGVyIG9rX3QgZXJyX3QpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuICAgIH5mX2ludmVyc2U6KGZ1bmN0aW9uXG4gICAgICB8IE9rIG9rIC0+IEZpcnN0IG9rXG4gICAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X3QgZGF0YV90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBhbGlzdCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3QgdHJlZSBpblxuICAgIGxldCBkcm9wX2tleXMgPVxuICAgICAgU2VxdWVuY2UubWFwIChTZXF1ZW5jZS5vZl9saXN0IGFsaXN0KSB+ZjooZnVuIChrLCBfKSAtPlxuICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGspXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2tleXMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGtleSBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsga2V5X3Qga2V5KSB+ZjooZnVuIHNtYWxsZXJfa2V5IC0+XG4gICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuYWRkIH5jb21wYXJhdG9yIHRyZWUgfmtleTpzbWFsbGVyX2tleSB+ZGF0YVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IGBPayB0cmVlIC0+IFNvbWUgdHJlZVxuICAgICAgICAgICAgIHwgYER1cGxpY2F0ZSAtPiBOb25lKSkpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2RhdGEgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgU2VxdWVuY2UubWFwIChzaHJpbmsgZGF0YV90IGRhdGEpIH5mOihmdW4gc21hbGxlcl9kYXRhIC0+XG4gICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5zZXQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5IH5kYXRhOnNtYWxsZXJfZGF0YSkpKVxuICAgIGluXG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBkcm9wX2tleXM7IHNocmlua19rZXlzOyBzaHJpbmtfZGF0YSBdKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGxpc3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3QgdHJlZSBpblxuICAgIGxldCBkcm9wX2VsdHMgPVxuICAgICAgU2VxdWVuY2UubWFwIChTZXF1ZW5jZS5vZl9saXN0IGxpc3QpIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0KVxuICAgIGluXG4gICAgbGV0IHNocmlua19lbHRzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGVsdF90IGVsdCkgfmY6KGZ1biBzbWFsbGVyX2VsdCAtPlxuICAgICAgICAgICAgIG1hdGNoIFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUubWVtIH5jb21wYXJhdG9yIHRyZWUgc21hbGxlcl9lbHQgd2l0aFxuICAgICAgICAgICAgIHwgdHJ1ZSAtPiBOb25lXG4gICAgICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgICAgU29tZSAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgdHJlZSB+Y29tcGFyYXRvciBzbWFsbGVyX2VsdCkpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9lbHRzOyBzaHJpbmtfZWx0cyBdKVxuOztcblxubGV0IG1hcF90IGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIG1hcF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBtYXBfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAobWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QpXG4gICAgICAgIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IG1hcF90KVxuOztcblxubGV0IHNldF90IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gc2V0X3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IFNldC5jb21wYXJhdG9yIHNldF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90KVxuICAgICAgICB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBzZXRfdClcbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFRlc3RfaW50ZlxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBTZWVkID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9uZGV0ZXJtaW5pc3RpY1xuICAgICAgfCBEZXRlcm1pbmlzdGljIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIG1vZHVsZSBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgc2VxdWVuY2UgPVxuICAgICAgbGV0IHByZWZpeCwgc3VmZml4ID0gU2VxdWVuY2Uuc3BsaXRfbiBzZXF1ZW5jZSAxMDAgaW5cbiAgICAgIGxldCBwcmVmaXggPSBMaXN0Lm1hcCBwcmVmaXggfmY6c2V4cF9vZl9lbHQgaW5cbiAgICAgIGxldCBzdWZmaXggPVxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5pc19lbXB0eSBzdWZmaXggd2l0aFxuICAgICAgICB8IHRydWUgLT4gW11cbiAgICAgICAgfCBmYWxzZSAtPiBbIFslbWVzc2FnZSBcIi4uLlwiXSBdXG4gICAgICBpblxuICAgICAgU2V4cC5MaXN0IChwcmVmaXggQCBzdWZmaXgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHNlZWQgOiBTZWVkLnRcbiAgICA7IHRlc3RfY291bnQgOiBpbnRcbiAgICA7IHNocmlua19jb3VudCA6IGludFxuICAgIDsgc2l6ZXMgOiBpbnQgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZyA6IENvbmZpZy50ID1cbiAgeyBzZWVkID0gRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuICA7IHRlc3RfY291bnQgPSAxMF8wMDBcbiAgOyBzaHJpbmtfY291bnQgPSAxMF8wMDBcbiAgOyBzaXplcyA9IFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgfnN0YXJ0OmBpbmNsdXNpdmUgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgfVxuOztcblxubGV0IGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IGluaXRpYWxfcmFuZG9tX3N0YXRlIH5jb25maWcgPVxuICBtYXRjaCBDb25maWcuc2VlZCBjb25maWcgd2l0aFxuICB8IE5vbmRldGVybWluaXN0aWMgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY3JlYXRlIChmb3JjZSBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUpXG4gIHwgRGV0ZXJtaW5pc3RpYyBzdHJpbmcgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChTdHJpbmcuaGFzaCBzdHJpbmcpXG47O1xuXG5sZXQgb25lX3NpemVfcGVyX3Rlc3Qgfihjb25maWcgOiBDb25maWcudCkgPVxuICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6KGNvbmZpZy5zaXplcywgMCkgfmY6KGZ1biAoc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcykgLT5cbiAgICBtYXRjaCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgPj0gY29uZmlnLnRlc3RfY291bnQgd2l0aFxuICAgIHwgdHJ1ZSAtPiBOb25lXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKG1hdGNoIFNlcXVlbmNlLm5leHQgc2l6ZXMgd2l0aFxuICAgICAgIHwgU29tZSAoc2l6ZSwgcmVtYWluaW5nX3NpemVzKSAtPlxuICAgICAgICAgU29tZSAoc2l6ZSwgKHJlbWFpbmluZ19zaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzICsgMSkpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICByYWlzZV9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiBpbnN1ZmZpY2llbnQgc2l6ZSB2YWx1ZXMgZm9yIHRlc3QgY291bnRcIlxuICAgICAgICAgICAgICAgfnRlc3RfY291bnQ6KGNvbmZpZy50ZXN0X2NvdW50IDogaW50KVxuICAgICAgICAgICAgICAgKG51bWJlcl9vZl9zaXplX3ZhbHVlcyA6IGludCldKSlcbjs7XG5cbmxldCBzaHJpbmtfZXJyb3IgfnNocmlua2VyIH5jb25maWcgfmYgaW5wdXQgZXJyb3IgPVxuICBsZXQgcmVjIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvciA9XG4gICAgbWF0Y2ggc2hyaW5rX2NvdW50IHdpdGhcbiAgICB8IDAgLT4gaW5wdXQsIGVycm9yXG4gICAgfCBfIC0+XG4gICAgICBsZXQgc2hyaW5rX2NvdW50ID0gc2hyaW5rX2NvdW50IC0gMSBpblxuICAgICAgKG1hdGNoIFNlcXVlbmNlLm5leHQgYWx0ZXJuYXRlcyB3aXRoXG4gICAgICAgfCBOb25lIC0+IGlucHV0LCBlcnJvclxuICAgICAgIHwgU29tZSAoYWx0ZXJuYXRlLCBhbHRlcm5hdGVzKSAtPlxuICAgICAgICAgKG1hdGNoIGYgYWx0ZXJuYXRlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGFsdGVybmF0ZSBpblxuICAgICAgICAgICAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGFsdGVybmF0ZSBlcnJvcikpXG4gIGluXG4gIGxldCBzaHJpbmtfY291bnQgPSBDb25maWcuc2hyaW5rX2NvdW50IGNvbmZpZyBpblxuICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBpbnB1dCBpblxuICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3Jcbjs7XG5cbmxldCBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yID1cbiAgbGV0IHJhbmRvbSA9IGluaXRpYWxfcmFuZG9tX3N0YXRlIH5jb25maWcgaW5cbiAgU2VxdWVuY2UuYXBwZW5kXG4gICAgKFNlcXVlbmNlLm9mX2xpc3QgZXhhbXBsZXMpXG4gICAgKG9uZV9zaXplX3Blcl90ZXN0IH5jb25maWdcbiAgICAgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gc2l6ZSAtPiBHZW5lcmF0b3IuZ2VuZXJhdGUgZ2VuZXJhdG9yIH5zaXplIH5yYW5kb20pKVxuOztcblxubGV0IHdpdGhfc2FtcGxlIH5mID8oY29uZmlnID0gZGVmYXVsdF9jb25maWcpID8oZXhhbXBsZXMgPSBbXSkgZ2VuZXJhdG9yID1cbiAgbGV0IHNlcXVlbmNlID0gaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciBpblxuICBmIHNlcXVlbmNlXG47O1xuXG5sZXQgcmVzdWx0ICh0eXBlIGEpIH5mID8oY29uZmlnID0gZGVmYXVsdF9jb25maWcpID8oZXhhbXBsZXMgPSBbXSkgbSA9XG4gIGxldCAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPSBtIGluXG4gIHdpdGhfc2FtcGxlIE0ucXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbmZpZyB+ZXhhbXBsZXMgfmY6KGZ1biBzZXF1ZW5jZSAtPlxuICAgIG1hdGNoXG4gICAgICBTZXF1ZW5jZS5mb2xkX3Jlc3VsdCBzZXF1ZW5jZSB+aW5pdDooKSB+ZjooZnVuICgpIGlucHV0IC0+XG4gICAgICAgIG1hdGNoIGYgaW5wdXQgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKGlucHV0LCBlcnJvcikpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgICBsZXQgc2hyaW5rZXIgPSBNLnF1aWNrY2hlY2tfc2hyaW5rZXIgaW5cbiAgICAgIGxldCBpbnB1dCwgZXJyb3IgPSBzaHJpbmtfZXJyb3IgfnNocmlua2VyIH5jb25maWcgfmYgaW5wdXQgZXJyb3IgaW5cbiAgICAgIEVycm9yIChpbnB1dCwgZXJyb3IpKVxuOztcblxubGV0IHJ1biAodHlwZSBhKSB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aF9qb2luIH5iYWNrdHJhY2U6KEJhY2t0cmFjZS5FeG4uYW1fcmVjb3JkaW5nICgpKSAoZnVuICgpIC0+IGYgeClcbiAgaW5cbiAgbWF0Y2ggcmVzdWx0IH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSkgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IHRlc3QgZmFpbGVkXCIgKGlucHV0IDogTS50KSAoZXJyb3IgOiBFcnJvci50KV1cbjs7XG5cbmxldCB3aXRoX3NhbXBsZV9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yID1cbiAgbGV0IGYgeCA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZiB4KSBpblxuICB3aXRoX3NhbXBsZSB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuXG5sZXQgcnVuX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoIH5iYWNrdHJhY2U6KEJhY2t0cmFjZS5FeG4uYW1fcmVjb3JkaW5nICgpKSAoZnVuICgpIC0+IGYgeClcbiAgaW5cbiAgcnVuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgT2JzZXJ2ZXIwXG5cbmxldCB1bm1hcCB0IH5mID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIHQgKGYgeCkgfnNpemUgfmhhc2gpXG5sZXQgb2ZfaGFzaF9mb2xkIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplOl8gfmhhc2ggLT4gZiBoYXNoIHgpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGZvcmNlIGxhenlfdCkgeCB+c2l6ZSB+aGFzaClcblxubGV0IGZpeGVkX3BvaW50IHdyYXAgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKHdyYXAgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCB1bml0ID0gb3BhcXVlXG5sZXQgYm9vbCA9IG9mX2hhc2hfZm9sZCBCb29sLmhhc2hfZm9sZF90XG5sZXQgY2hhciA9IG9mX2hhc2hfZm9sZCBDaGFyLmhhc2hfZm9sZF90XG5sZXQgaW50ID0gb2ZfaGFzaF9mb2xkIEludC5oYXNoX2ZvbGRfdFxubGV0IGludDMyID0gb2ZfaGFzaF9mb2xkIEludDMyLmhhc2hfZm9sZF90XG5sZXQgaW50NjMgPSBvZl9oYXNoX2ZvbGQgSW50NjMuaGFzaF9mb2xkX3RcbmxldCBpbnQ2NCA9IG9mX2hhc2hfZm9sZCBJbnQ2NC5oYXNoX2ZvbGRfdFxubGV0IG5hdGl2ZWludCA9IG9mX2hhc2hfZm9sZCBOYXRpdmVpbnQuaGFzaF9mb2xkX3RcbmxldCBmbG9hdCA9IG9mX2hhc2hfZm9sZCBGbG9hdC5oYXNoX2ZvbGRfdFxubGV0IHN0cmluZyA9IG9mX2hhc2hfZm9sZCBTdHJpbmcuaGFzaF9mb2xkX3RcbmxldCBzZXhwID0gb2ZfaGFzaF9mb2xkIFNleHAuaGFzaF9mb2xkX3RcbmxldCBiaWdzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfY2hhcilcbmxldCBmbG9hdDMyX3ZlYyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDY0X3ZlYyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDMyX21hdCA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDY0X21hdCA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBieXRlcyA9IHVubWFwIHN0cmluZyB+ZjpCeXRlcy50b19zdHJpbmdcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciB+c2l6ZSB+aGFzaCAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gb2JzZXJ2ZSBmc3RfdCBmc3QgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKVxuICAgIHwgU2Vjb25kIHNuZCAtPiBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDIpKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgdW5tYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE9rIG9rIC0+IEZpcnN0IG9rXG4gICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBmc3RfdCBmc3QgfnNpemUgfmhhc2ggaW5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoIGluXG4gICAgaGFzaClcbjs7XG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIHVubWFwIChlaXRoZXIgb3BhcXVlIHZhbHVlX3QpIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGaXJzdCAoKVxuICAgIHwgU29tZSB2YWx1ZSAtPiBTZWNvbmQgdmFsdWUpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIGxpc3QgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpIGluXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgR2VuZXJhdG9yLnNpemVzIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggKClcbiAgICAgIHw+IEdlbmVyYXRvci5nZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQyX2V4biBsaXN0IHNpemVzIH5pbml0OihoYXNoX2ZvbGRfaW50IGhhc2ggMCkgfmY6KGZ1biBoYXNoIGVsdCBzaXplIC0+XG4gICAgICBvYnNlcnZlIGVsdF90IGVsdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpKSlcbjs7XG5cbmxldCBhcnJheSB0ID0gdW5tYXAgKGxpc3QgdCkgfmY6QXJyYXkudG9fbGlzdFxubGV0IHJlZiB0ID0gdW5tYXAgdCB+ZjpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IHVubWFwIHQgfmY6TGF6eS5mb3JjZVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIGYgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpIGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgICgqIEVtcGlyaWNhbGx5LCBkb3VibGluZyB0aGUgc2l6ZSB3aGVuIGdlbmVyYXRpbmcgdGhlIGxpc3Qgb2YgaW5wdXRzIGdpdmVzIHVzIG11Y2hcbiAgICAgICAgIGJldHRlciBjb3ZlcmFnZSBvZiB0aGUgc3BhY2Ugb2YgZnVuY3Rpb25zLiAqKVxuICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlIChHZW5lcmF0b3Iuc2l6ZXMgKCkpIH5zaXplOihzaXplICogMikgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkIHNpemVzIH5pbml0Omhhc2ggfmY6KGZ1biBoYXNoIHNpemUgLT5cbiAgICAgIGxldCB4ID0gR2VuZXJhdG9yLmdlbmVyYXRlIGRvbSB+c2l6ZSB+cmFuZG9tIGluXG4gICAgICBvYnNlcnZlIHJuZyAoZiB4KSB+c2l6ZSB+aGFzaCkpXG47O1xuXG5sZXQgbWFwX3RyZWUga2V5X29icyBkYXRhX29icyA9XG4gIHVubWFwIChsaXN0IChib3RoIGtleV9vYnMgZGF0YV9vYnMpKSB+ZjpNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0XG47O1xuXG5sZXQgc2V0X3RyZWUgZWx0X29icyA9IHVubWFwIChsaXN0IGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdFxuXG5sZXQgbWFwX3Qga2V5X29icyBkYXRhX29icyA9XG4gIHVubWFwIChtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzKSB+ZjpNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG47O1xuXG5sZXQgc2V0X3QgZWx0X29icyA9IHVubWFwIChzZXRfdHJlZSBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4iLCJtb2R1bGUgR2VuZXJhdG9yID0gR2VuZXJhdG9yXG5tb2R1bGUgT2JzZXJ2ZXIgPSBPYnNlcnZlclxubW9kdWxlIFNocmlua2VyID0gU2hyaW5rZXJcbm1vZHVsZSBUZXN0ID0gVGVzdFxubW9kdWxlIEV4cG9ydCA9IEV4cG9ydFxuaW5jbHVkZSBFeHBvcnRcblxuKCoqLyoqKVxuXG4oKl8gVGhpcyBtb2R1bGUgaXMgZXhwb3NlZCBvbmx5IHRvIG1ha2Ugb2NhbWxkb2Mgb3V0cHV0IG1vcmUgcmVhZGFibGUuICopXG5tb2R1bGUgV2l0aF9iYXNpY190eXBlcyA9IFdpdGhfYmFzaWNfdHlwZXNcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpZ2FycmF5X2hlbHBlcnMgPSBCaWdhcnJheV9oZWxwZXJzXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCB0eXBlcmVwXVxuXG4gIHZhbCBzaWduZWQgOiBib29sXG4gIHZhbCBudW1fYml0cyA6IGludFxuICB2YWwgbnVtX2J5dGVzIDogaW50XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE8gOiBzaWdcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgbW9kdWxlIFdyYXAgOiBzaWdcbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gICAgZW5kXG4gIGVuZFxuXG5lbmRcblxubGV0IHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggPVxuICBCYXNlLnJhaXNlX3MgWyVtZXNzYWdlIChtb2RfbmFtZSBeIFwiOiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWRcIikgfl86KHRvX3N0cmluZyB4KV1cbltAQGNvbGRdXG47O1xuXG5sZXQgdHJ1bmNfdW5zaWduZWQgOiB0eXBlIGEgYi4gY29udjooYSAtPiBiKSAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKSAtPiBtYXNrOmEgLT4gYSAtPiBiID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgeCAtPiBjb252IChsb2dhbmQgeCBtYXNrKVxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fdW5zaWduZWRcbiAgOiB0eXBlIGEgYi5cbiAgICBjb252OihhIC0+IGIpXG4gICAgLT4gbG9nYW5kOihhIC0+IGEgLT4gYSlcbiAgICAtPiBtYXNrOmFcbiAgICAtPiBlcXVhbDooYSAtPiBhIC0+IGJvb2wpXG4gICAgLT4gbW9kX25hbWU6c3RyaW5nXG4gICAgLT4gdG9fc3RyaW5nOihhIC0+IHN0cmluZylcbiAgICAtPiBhXG4gICAgLT4gYlxuICA9XG4gIGZ1biB+Y29udiB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4IC0+XG4gIGxldCB5ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBpblxuICBpZiBlcXVhbCB4IHkgdGhlbiBjb252IHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IHRydW5jX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdF9yaWdodDooYSAtPiBpbnQgLT4gYSkgLT4gc2hpZnQ6aW50IC0+IGEgLT4gYVxuICA9XG4gIGZ1biB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggLT4gc2hpZnRfcmlnaHQgKHNoaWZ0X2xlZnQgeCBzaGlmdCkgc2hpZnRcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZXhuX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0OmludFxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG47O1xuXG5sZXQgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIGlmIGdyZWF0ZXJfZXF1YWwgeCB6ZXJvIHRoZW4geCBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPVxuICByYWlzZSAoU2V4cGxpYjAuU2V4cF9jb252Lk9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG47O1xuXG5tb2R1bGUgUmVwcjMyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLlN5cy5JbW1lZGlhdGU2NC5NYWtlIChCYXNlLkludCkgKEJhc2UuSW50MzIpXG5cbiAgbGV0IHRvX2ludDMyICh4IDogdCkgOiBCYXNlLkludDMyLnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4geFxuICA7O1xuXG4gICgqIHNpZ24tZXh0ZW5kaW5nIGNvbnZlcnNpb24gdG8gaW50NjQgKilcbiAgbGV0IHRvX2ludDY0ICh4IDogdCkgOiBCYXNlLkludDY0LnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50NjQub2ZfaW50IHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQzMiB4XG4gIDs7XG5lbmRcblxuKCogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gdHlwZXMgKilcbnR5cGUgaW50OCA9IGludFxudHlwZSB1aW50OCA9IGludFxudHlwZSBpbnQxNiA9IGludFxudHlwZSB1aW50MTYgPSBpbnRcbnR5cGUgaW50MzIgPSBSZXByMzIudFxudHlwZSB1aW50MzIgPSBSZXByMzIudFxudHlwZSBpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSB1aW50NjMgPSBCYXNlLkludDYzLnRcbnR5cGUgaW50NjQgPSBCYXNlLkludDY0LnRcbnR5cGUgdWludDY0ID0gQmFzZS5JbnQ2NC50XG5cbm1vZHVsZSBJbnQ4ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gLTEyOFxuICBsZXQgbWF4X3ZhbHVlID0gMTI3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ4XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAyNTVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX3RydW5jIHggPSB0cnVuYzY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4bjY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDhfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMzI3NjhcbiAgbGV0IG1heF92YWx1ZSA9IDMyNzY3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gIGxldCBtb2RfbmFtZSA9IFwiSW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9pbnQzMl90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50MzIudG9faW50X3RydW5jIChSZXByMzIudG9faW50MzIgeCkpXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF9leG4gKFJlcHIzMi50b19pbnQzMiB4KSkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDE2ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gNjU1MzVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgbGV0IG1hc2sgPSAweEZGRkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDE2XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG42NCB4ID1cbiAgICBleG5fdW5zaWduZWRcbiAgICAgIH5jb252XG4gICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICB+bWFzazptYXNrNjRcbiAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICB+bW9kX25hbWVcbiAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFja2VuZDMyX1MgPSBzaWdcbiAgbW9kdWxlIFNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzIgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDMyIDogdCAtPiBCYXNlLkludDMyLnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50OCA6IGludDggLT4gdFxuICAgIHZhbCBvZl9pbnQxNiA6IGludDE2IC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfdHJ1bmMgOiBpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX2ludDY0X2V4biA6IGludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQzMl93cmFwIDogdWludDMyIC0+IHRcbiAgICB2YWwgb2ZfdWludDMyX2V4biA6IHVpbnQzMiAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSBVbnNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfdHJ1bmMgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDMyX2V4biA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfdHJ1bmMgOiB0IC0+IEJhc2UuSW50MzIudFxuICAgIHZhbCB0b19iYXNlX2ludDMyX2V4biA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfdHJ1bmMgOiBCYXNlLkludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDY0X2V4biA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50NjQgOiB0IC0+IEJhc2UuSW50NjQudFxuICAgIHZhbCB0b19iYXNlX2ludF9leG4gOiB0IC0+IEJhc2UuSW50LnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDggOiB1aW50OCAtPiB0XG4gICAgdmFsIG9mX3VpbnQxNiA6IHVpbnQxNiAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M190cnVuYyA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M19leG4gOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfdHJ1bmMgOiB1aW50NjQgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfZXhuIDogdWludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDMyX3dyYXAgOiBpbnQzMiAtPiB0XG4gICAgdmFsIG9mX2ludDMyX2V4biA6IGludDMyIC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJhY2tlbmQzMiA6IHNpZ1xuICB2YWwgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICAgICAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgICAgIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0gdHJ1bmMgeFxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4biB4XG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgNDI5NDk2NzI5NUxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gICAgICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgICAgIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgICAgIGxldCBtYXNrID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgMHhGRkZGRkZGRkxcbiAgICAgIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gICAgICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICAgICAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBleG42NCB4ID1cbiAgICAgICAgZXhuX3Vuc2lnbmVkXG4gICAgICAgICAgfmNvbnZcbiAgICAgICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICAgICAgfm1hc2s6bWFzazY0XG4gICAgICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgICAgICB+bW9kX25hbWVcbiAgICAgICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICAgICAgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9XG4gICAgICAgIEJhc2UuSW50NjQudG9faW50X3RydW5jIChsb2dhbmQ2NCAoQmFzZS5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrNjQpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0gQmFzZS5JbnQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50LiggPD0gKSB4IChCYXNlLkludC5vZl9pbnQ2NF90cnVuYyAyMTQ3NDgzNjQ3TClcbiAgICAgICAgdGhlbiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludC50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnRfZXhuIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50OCB4ID0gKHggOiBVaW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50MTYgeCA9ICh4IDogVWludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50MzJfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogTWlzY2VsbGFuZW91cyAqKVxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgTiA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDMyXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQzMlxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLm1pbl92YWx1ZVxuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50MzIubWF4X3ZhbHVlXG4gICAgICBsZXQgc2lnbmVkID0gdHJ1ZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgbW9kX25hbWUgPSBcIkludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSBCYXNlLkludDYzLnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IEJhc2UuSW50NjMudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDY0LnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA6IHQgPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDMyLiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludDMyLiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50MzIuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQzMi4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQzMi4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50MzIuKCArIClcbiAgICAgICAgICBsZXQgKCAtICkgPSBCYXNlLkludDMyLiggLSApXG4gICAgICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQzMi4oICogKVxuICAgICAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50MzIuKCAvIClcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCBjb21wYXJlIHggeSA9IFN0ZGxpYi5JbnQzMi51bnNpZ25lZF9jb21wYXJlIHggeSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDMyXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQzMlxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtYXhfdmFsdWUgPSAtMWxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQzMi5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID1cbiAgICAgICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTCAmJiBCYXNlLkludDY0LiggPD0gKSB4IDQyOTQ5NjcyOTVMXG4gICAgICAgIHRoZW4gQmFzZS5JbnQ2NC50b19pbnQzMl90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDMyLnRvX2ludDY0IHgpIDB4RkZGRkZGRkZMXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgICB8PiBCYXNlLkludDMyLnRvX2ludF9leG5cbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJWx1XCIgeClcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVsdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICAgICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICAgICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgICAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2RpdlxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKSA9XG4gICAgbWF0Y2ggUmVwcjMyLnJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgSSA6IEJhY2tlbmQzMl9TKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIE4gOiBCYWNrZW5kMzJfUylcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5TaWduZWRcbmVuZFxuXG5tb2R1bGUgVWludDMyID0gc3RydWN0XG4gIG1vZHVsZSBNID0gKHZhbCBCYWNrZW5kMzIuaW1wbCA6IEJhY2tlbmQzMl9TKVxuICBpbmNsdWRlIE0uVW5zaWduZWRcbmVuZFxuXG5tb2R1bGUgSW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGltbWVkaWF0ZTY0XSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDYzLm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2M1xuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDYzXCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjNfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2My4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2My4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDYzLiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2My4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjMuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2My4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDYzLiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgKCogeCBhbmQgeSBhcmUgc2lnbi1leHRlbmRlZCwgd2hpY2ggcHJlc2VydmVzIHRoZSBoaWdoIGJpdCAqKVxuICAgIFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlIChCYXNlLkludDYzLnRvX2ludDY0IHgpIChCYXNlLkludDYzLnRvX2ludDY0IHkpXG4gIDs7XG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDYzXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDYzXG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2My4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjNcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgKFVpbnQzMi50b19iYXNlX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuICh4IDogdWludDY0KSA6IHQgPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiICh0b19iYXNlX2ludDY0IHgpKVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIG9mX2Jhc2VfaW50NjRfZXhuIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2My4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2My4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2My4oICogKVxuXG4gICAgICBsZXQgKCAvICkgeCB5ID1cbiAgICAgICAgb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2NC4oIC8gKSAodG9fYmFzZV9pbnQ2NCB4KSAodG9fYmFzZV9pbnQ2NCB5KSlcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lm1pbl92YWx1ZVxuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2NC5tYXhfdmFsdWVcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ2NFwiXG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2NC4oID49IClcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDMyIHggPSBCYXNlLkludDY0Lm9mX2ludDMyIChJbnQzMi50b19iYXNlX2ludDMyIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2MyB4ID0gQmFzZS5JbnQ2My50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDY0LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDY0LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDY0LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2NC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDY0LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjQuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgY29tcGFyZSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAtMUxcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2NC4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjRcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IFVpbnQzMi50b19iYXNlX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDYzICh4IDogdWludDYzKSA6IGludDY0ID1cbiAgICBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlTHVcIiB4KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9kaXZcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuICB2YWwgZ2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuICB2YWwgZ2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcbiAgdmFsIGdldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcbiAgdmFsIGdldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG4gIHZhbCBnZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG4gIHZhbCBnZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDggLT4gdW5pdFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDggLT4gdW5pdFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudFxuICB2YWwgZ2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnQgLT4gdW5pdFxuZW5kXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IENhbWwuSW50MzIudCAtPiBDYW1sLkludDMyLnQgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5tb2R1bGUgTWFrZV9nZXQgKEYgOiBHZXRfZnVuY3Rpb25zKSA6IEdldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50OCB0IH5wb3MgPSBJbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ4IHQgfnBvcyA9IFVpbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBJbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDE2X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBJbnQzMi5vZl9iYXNlX2ludDMyIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDMyX2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgVWludDMyLm9mX2Jhc2VfaW50MzJfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50NjRfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDY0X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIFVpbnQ2NC5vZl9iYXNlX2ludDY0X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIE1ha2Vfc2V0IChGIDogU2V0X2Z1bmN0aW9ucykgOiBTZXQgd2l0aCB0eXBlIHQgOj0gRi50ID0gc3RydWN0XG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDggdCB+cG9zIHggPSBGLnNldF91aW50OCB0IHBvcyB4XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50OCB0IH5wb3MgeCA9IHNldF91aW50OCB0IH5wb3MgKFVpbnQ4Lm9mX2ludDhfd3JhcCB4KVxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQxNl9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF91aW50MTZfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHggaW5cbiAgICBGLnNldF91aW50MTZfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQxNl9sZSB0IH5wb3MgeCA9IHNldF91aW50MTZfbGUgdCB+cG9zIChVaW50MTYub2ZfaW50MTZfd3JhcCB4KVxuICBsZXQgc2V0X2ludDE2X2JlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9iZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDMyX2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQzMl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBJbnQzMi50b19iYXNlX2ludDMyIHggaW5cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4IGluXG4gICAgRi5zZXRfaW50MzJfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQzMl9sZSB0IH5wb3MgeCA9IHNldF9pbnQzMl9sZSB0IH5wb3MgKEludDMyLm9mX3VpbnQzMl93cmFwIHgpXG4gIGxldCBzZXRfdWludDMyX2JlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2JlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50NjRfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQ2NF9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQ2NF9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50NjRfbGUgdCB+cG9zIHggPSBzZXRfaW50NjRfbGUgdCB+cG9zIChJbnQ2NC5vZl91aW50NjRfd3JhcCB4KVxuICBsZXQgc2V0X3VpbnQ2NF9iZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9iZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBCeXRlczBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgPSBcIiVjYW1sX2J5dGVzX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50NjQudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuICBleHRlcm5hbCBzZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzKVxuICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlcylcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMwVW5zYWZlKVxuICAgIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzMFVuc2FmZSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0cmluZzAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5lbmRcblxubW9kdWxlIFN0cmluZzBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnRcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzApXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzBVbnNhZmUpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBCaWdzdHJpbmcwID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgKCBjaGFyXG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHRcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5jX2xheW91dCApXG4gICAgICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltIDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG5lbmRcblxuaW5jbHVkZSBCaWdzdHJpbmcwXG5cbmV4dGVybmFsIGF1eF9jcmVhdGUgOiBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXM6aW50IC0+IHNpemU6aW50IC0+IHQgPSBcImJpZ3N0cmluZ19hbGxvY1wiXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxuKCogT25lIG5lZWRzIHRvIHVzZSBbQ2FtbC5TeXMud29yZF9zaXplXSBzbyB0aGF0IGl0cyB2YWx1ZSBpcyBrbm93biBhdCBjb21waWxlLXRpbWUuICopXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBDYW1sLlN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IENhbWwuU3lzLmJpZ19lbmRpYW5cbmxldCBub3Rfb25fMzJiaXQgPSBDYW1sLlN5cy53b3JkX3NpemUgPiAzMlxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi52YWx1ZSBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfmRlZmF1bHQ6KC0xKVxuICBpblxuICAoKiBUaGlzIGNoZWNrIGlzIGltcG9ydGFudCBiZWNhdXNlIFthdXhfY3JlYXRlIH5zaXplOigtMSldIHJhaXNlcyBbT3V0X29mX21lbW9yeV0sIHdoaWNoXG4gICAgIGNvdWxkIGJlIGNvbmZ1c2luZyBkdXJpbmcgZGVidWdnaW5nLiAqKVxuICBpZiBzaXplIDwgMCB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiY3JlYXRlOiBzaXplID0gJWQgPCAwXCIgc2l6ZSk7XG4gIGF1eF9jcmVhdGUgfm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+c2l6ZVxuOztcblxubGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuZXh0ZXJuYWwgaXNfbW1hcHBlZCA6IHQgLT4gYm9vbCA9IFwiYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlwiIFtAQG5vYWxsb2NdXG5cbmxldCBpbml0IG4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHQue2l9IDwtIGYgaVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgY2hlY2tfYXJncyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogcG9zIDwgMFwiKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogbGVuIDwgMFwiKTtcbiAgbGV0IGJzdHJfbGVuID0gbGVuZ3RoIGJzdHIgaW5cbiAgKCogQmUgY2FyZWZ1bCB3aXRoIG92ZXJmbG93ISAgV2UgY291bGQgaGF2ZSBib2dvbnMgbGlrZSBbcG9zID0gSW50Lm1heF92YWx1ZV0gb3IgW2xlbiA9XG4gICAgIEludC5tYXhfdmFsdWVdIHBhc3NlZCBieSB0aGUgdXNlci4gKilcbiAgaWYgYnN0cl9sZW4gLSBwb3MgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpZ3N0cmluZy4lczogbGVuZ3RoKGJzdHIpIDwgcG9zICsgbGVuXCIgbG9jKVxuOztcblxubGV0IGdldF9vcHRfbGVuIGJzdHIgfnBvcyA9IGZ1bmN0aW9uXG4gIHwgU29tZSBsZW4gLT4gbGVuXG4gIHwgTm9uZSAtPiBsZW5ndGggYnN0ciAtIHBvc1xuOztcblxuKCogQmxpdHRpbmcgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOnRcbiAgLT4gc3JjX3BvczppbnRcbiAgLT4gZHN0OnRcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaWdzdHJpbmdfYmxpdF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqIEV4cG9zaW5nIHRoZSBleHRlcm5hbCB2ZXJzaW9uIG9mIGdldC9zZXQgc3VwcG9ydHMgYmV0dGVyIGlubGluaW5nLiAqKVxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbmVuZFxuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubW9kdWxlIEZyb21fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQnl0ZXNfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOmJ5dGVzXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0XG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChCaWdzdHJpbmdfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnRcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OmJ5dGVzXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCeXRlc19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzpzdHJpbmdcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUb19ieXRlc1xuICBpbmNsdWRlIEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ3N0cmluZzApIChUb19ieXRlcylcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRnJvbV9zdHJpbmcuc3Vib1xubGV0IG9mX2J5dGVzID0gRnJvbV9ieXRlcy5zdWJvXG5sZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnN1Ym9cbmxldCB0b19ieXRlcyA9IFRvX2J5dGVzLnN1Ym9cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbmxldCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdCA9IGZ1bmN0aW9uXG4gIHwgQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgU2V4cGxpYjAuU2V4cF9jb252Lm9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY29weSB0IDogdCA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxubGV0IGNvbmNhdCA9XG4gIGxldCBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICBsZXQgc3JjX3BvcyA9IDAgaW5cbiAgICBsZXQgZHN0X3BvcyA9ICFkc3RfcG9zX3JlZiBpblxuICAgIGJsaXQgfmRzdCB+ZHN0X3BvcyB+c3JjIH5zcmNfcG9zIH5sZW47XG4gICAgZHN0X3Bvc19yZWYgOj0gZHN0X3BvcyArIGxlblxuICBpblxuICBmdW4gP3NlcCBsaXN0IC0+XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBjcmVhdGUgMFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBsZXQgaGVhZF9sZW4gPSBsZW5ndGggaGVhZCBpblxuICAgICAgbGV0IHNlcF9sZW4gPSBPcHRpb24udmFsdWVfbWFwIHNlcCB+ZjpsZW5ndGggfmRlZmF1bHQ6MCBpblxuICAgICAgbGV0IHRhaWxfY291bnQgPSBMaXN0Lmxlbmd0aCB0YWlsIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaGVhZF9sZW4gKyAoc2VwX2xlbiAqIHRhaWxfY291bnQpICsgTGlzdC5zdW0gKG1vZHVsZSBJbnQpIHRhaWwgfmY6bGVuZ3RoXG4gICAgICBpblxuICAgICAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBkc3RfcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBhcHBlbmQgfnNyYzpoZWFkIH5kc3QgfmRzdF9wb3NfcmVmO1xuICAgICAgTGlzdC5pdGVyIHRhaWwgfmY6KGZ1biBzcmMgLT5cbiAgICAgICAgKG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBzZXAgLT4gYXBwZW5kIH5zcmM6c2VwIH5kc3QgfmRzdF9wb3NfcmVmKTtcbiAgICAgICAgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgYXNzZXJ0ICghZHN0X3Bvc19yZWYgPSBsZW4pO1xuICAgICAgZHN0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtc2V0IDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gY2hhciAtPiB1bml0ID0gXCJiaWdzdHJpbmdfbWVtc2V0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbXNldCB0IH5wb3MgfmxlbiBjID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpO1xuICB1bnNhZmVfbWVtc2V0IHQgfnBvcyB+bGVuIGNcbjs7XG5cbigqIENvbXBhcmlzb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcFxuICA6ICB0XG4gIC0+IHBvczE6aW50XG4gIC0+IHRcbiAgLT4gcG9zMjppbnRcbiAgLT4gbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1jbXBfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMSB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0MSk7XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MyIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQyKTtcbiAgdW5zYWZlX21lbWNtcCB0MSB+cG9zMSB0MiB+cG9zMiB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX2J5dGVzXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gQnl0ZXMudFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgIH5wb3M6cG9zMlxuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCeXRlcy5sZW5ndGggYnl0ZXMpO1xuICB1bnNhZmVfbWVtY21wX2J5dGVzIHQxIH5wb3MxIGJ5dGVzIH5wb3MyIH5sZW5cbjs7XG5cbmxldCBjb21wYXJlIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCBsZW4gPSBJbnQubWluIGxlbjEgbGVuMiBpblxuICAgIG1hdGNoIHVuc2FmZV9tZW1jbXAgdDEgfnBvczE6MCB0MiB+cG9zMjowIH5sZW4gd2l0aFxuICAgIHwgMCAtPiBpZiBsZW4xIDwgbGVuMiB0aGVuIC0xIGVsc2UgaWYgbGVuMSA+IGxlbjIgdGhlbiAxIGVsc2UgMFxuICAgIHwgbiAtPiBuKVxuOztcblxuZXh0ZXJuYWwgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4gIDogIEhhc2guc3RhdGVcbiAgLT4gdFxuICAtPiBIYXNoLnN0YXRlXG4gID0gXCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcIlxuW0BAbm9hbGxvY11cblxubGV0IF9tYWtpbmdfc3VyZV90aGVfQ19iaW5kaW5nX3Rha2VzX2FuX2ludCAoeCA6IEhhc2guc3RhdGUpID0gKHggOj4gaW50KVxubGV0IGhhc2hfZm9sZF90ID0gaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG5sZXQgaGFzaCA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5vZl9mb2xkIGhhc2hfZm9sZF90XG5cbnR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbmxldCBlcXVhbCB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBsZW4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IGxlbjIgPSBsZW5ndGggdDIgaW5cbiAgICBJbnQuZXF1YWwgbGVuMSBsZW4yICYmIEludC5lcXVhbCAodW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbjpsZW4xKSAwKVxuOztcblxuKCogU2VhcmNoICopXG5cbmV4dGVybmFsIHVuc2FmZV9maW5kIDogdCAtPiBjaGFyIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBpbnQgPSBcImJpZ3N0cmluZ19maW5kXCJcbltAQG5vYWxsb2NdXG5cbmxldCBmaW5kID8ocG9zID0gMCkgP2xlbiBjaHIgYnN0ciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiBic3RyIH5wb3MgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcImZpbmRcIiB+cG9zIH5sZW4gYnN0cjtcbiAgbGV0IHJlcyA9IHVuc2FmZV9maW5kIGJzdHIgY2hyIH5wb3MgfmxlbiBpblxuICBpZiByZXMgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcmVzXG47O1xuXG4oKiB2aW06IHNldCBmaWxldHlwZT1vY2FtbCA6ICopXG5cbigqIEJpbmFyeS1wYWNraW5nIGxpa2UgYWNjZXNzb3JzICopXG5cbmV4dGVybmFsIGludDMyX29mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBpbnQzMl90b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgaW50NjRfb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIGludDY0X3RvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8xNiA6IHQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF82NCA6IHQgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMTYgOiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzY0IDogdCAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmxldCBnZXRfMTYgKHQgOiB0KSAocG9zIDogaW50KSA6IGludCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9nZXRfMTYgdCBwb3Ncbjs7XG5cbmxldCBnZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDMyID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX2dldF8zMiB0IHBvc1xuOztcblxubGV0IGdldF82NCAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50NjQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfNjRcIiB+cG9zIH5sZW46OCB0O1xuICB1bnNhZmVfZ2V0XzY0IHQgcG9zXG47O1xuXG5sZXQgc2V0XzE2X3RydW5jICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9zZXRfMTYgdCBwb3MgdlxuOztcblxubGV0IHNldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50MzIpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9zZXRfMzIgdCBwb3MgdlxuOztcblxubGV0IHNldF82NCAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50NjQpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgdlxuOztcblxubGV0IHNpZ25fZXh0ZW5kXzE2IHUgPSAodSBsc2wgKEludC5udW1fYml0cyAtIDE2KSkgYXNyIChJbnQubnVtX2JpdHMgLSAxNilcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAwMCB8fCB4ID4gMHg3RkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50OCB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MCB8fCB4ID4gMHg3RlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfIH5sb2M6XyAtPiAoKVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAtMSBsc2wgMzEgJiYgeCA8IDEgbHNsIDMxXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDBcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMCAmJiB4IDwgMSBsc2wgMzJcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50NjQgeCB+bG9jID1cbiAgaWYgeCA+PSAwXG4gIHRoZW4gKClcbiAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcykpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChnZXRfMTYgdCBwb3MpXG5sZXQgcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKGdldF8xNiB0IHBvcykpXG5cbmxldCB3cml0ZV9pbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV9pbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX3VpbnQxNiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV91aW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX3VpbnQxNiB0IH5wb3MgPSBnZXRfMTYgdCBwb3NcbmxldCByZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAoZ2V0XzE2IHQgcG9zKVxuXG5sZXQgd3JpdGVfdWludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfdWludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50ICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKSlcbmxldCB1bnNhZmVfcmVhZF9pbnQzMiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG5sZXQgcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50IChnZXRfMzIgdCBwb3MpXG5sZXQgcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAoZ2V0XzMyIHQgcG9zKSlcbmxldCByZWFkX2ludDMyIHQgfnBvcyA9IGdldF8zMiB0IHBvc1xubGV0IHJlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKGdldF8zMiB0IHBvcylcbmxldCB3cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyB4XG5sZXQgd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxuOztcblxubGV0IHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAodW5zYWZlX2dldF82NCB0IHBvcylcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnQgKHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcykpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID1cbiAgdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAoZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9IGludDY0X3RvX2ludCAoc3dhcDY0IChnZXRfNjQgdCBwb3MpKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0IHQgfnBvcyA9IGdldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0IChnZXRfNjQgdCBwb3MpXG5sZXQgd3JpdGVfaW50NjQgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgeFxubGV0IHdyaXRlX2ludDY0X3N3YXAgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0IHdyaXRlX2ludDY0X2ludCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50X3N3YXAgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKHN3YXA2NCAoaW50NjRfb2ZfaW50IHgpKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2IGVsc2UgdW5zYWZlX3JlYWRfaW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNiBlbHNlIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX3VpbnQxNlxuOztcblxubGV0IGdldF9pbnQxNl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTYgZWxzZSByZWFkX2ludDE2X3N3YXBcbmxldCBnZXRfaW50MTZfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2X3N3YXAgZWxzZSByZWFkX2ludDE2XG5sZXQgZ2V0X3VpbnQxNl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2IGVsc2UgcmVhZF91aW50MTZfc3dhcFxubGV0IGdldF91aW50MTZfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNl9zd2FwIGVsc2UgcmVhZF91aW50MTZcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX3VpbnQxNiBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNlxuOztcblxubGV0IHNldF9pbnQxNl9iZV9leG4gPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQxNl9leG4gZWxzZSB3cml0ZV9pbnQxNl9zd2FwX2V4blxubGV0IHNldF9pbnQxNl9sZV9leG4gPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX2ludDE2X2V4blxuXG5sZXQgc2V0X3VpbnQxNl9iZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV91aW50MTZfZXhuIGVsc2Ugd3JpdGVfdWludDE2X3N3YXBfZXhuXG47O1xuXG5sZXQgc2V0X3VpbnQxNl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV91aW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV91aW50MTZfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzIgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMlxuOztcblxubGV0IGdldF9pbnQzMl90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMiBlbHNlIHJlYWRfaW50MzJfc3dhcFxubGV0IGdldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9zd2FwIGVsc2UgcmVhZF9pbnQzMlxubGV0IHNldF9pbnQzMl90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzIgZWxzZSB3cml0ZV9pbnQzMl9zd2FwXG5sZXQgc2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9zd2FwIGVsc2Ugd3JpdGVfaW50MzJcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRcbjs7XG5cbmxldCBnZXRfaW50MzJfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX2ludCBlbHNlIHJlYWRfaW50MzJfaW50X3N3YXBcbmxldCBnZXRfaW50MzJfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgcmVhZF9pbnQzMl9pbnRcblxubGV0IHNldF9pbnQzMl9iZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuXG47O1xuXG5sZXQgc2V0X2ludDMyX2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlX3RydW5jID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50XG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX3RydW5jID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9pbnQgZWxzZSByZWFkX2ludDY0X2ludF9zd2FwXG5sZXQgZ2V0X2ludDY0X2xlX3RydW5jID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHJlYWRfaW50NjRfaW50XG5sZXQgc2V0X2ludDY0X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50IGVsc2Ugd3JpdGVfaW50NjRfaW50X3N3YXBcbmxldCBzZXRfaW50NjRfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHdyaXRlX2ludDY0X2ludFxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NFxuOztcblxubGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NCBlbHNlIHJlYWRfaW50NjRfc3dhcFxubGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwIGVsc2UgcmVhZF9pbnQ2NFxubGV0IHNldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjQgZWxzZSB3cml0ZV9pbnQ2NF9zd2FwXG5sZXQgc2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRcblxubGV0IGludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX2ludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxubGV0IHVpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF91aW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG4oKiBbUG9seV0gaXMgcmVxdWlyZWQgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB1bmJveGVkIFtpbnQ2NF0uICopXG5sZXRbQGlubGluZSBhbHdheXNdIGludDY0X3RvX2ludF9leG4gbiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBpZiBQb2x5LihuID49IC0weDQwMDBfMDAwMF8wMDAwXzAwMDBMICYmIG4gPCAweDQwMDBfMDAwMF8wMDAwXzAwMDBMKVxuICAgIHRoZW4gaW50NjRfdG9faW50IG5cbiAgICBlbHNlIGludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IC0weDAwMDBfMDAwMF80MDAwXzAwMDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X2ludDY0X2xlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9sZSB0IH5wb3MpXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIHVpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuOztcblxubGV0IGdldF91aW50NjRfYmVfZXhuIHQgfnBvcyA9IHVpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9iZSA9IHVuc2FmZV9zZXRfaW50NjRfYmVcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9sZSA9IHVuc2FmZV9zZXRfaW50NjRfbGVcblxubGV0IHNldF91aW50NjRfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9iZV9leG5cIiBuO1xuICBzZXRfaW50NjRfYmUgdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDY0X2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ2NCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50NjRfbGVfZXhuXCIgbjtcbiAgc2V0X2ludDY0X2xlIHQgfnBvcyBuXG47O1xuXG4oKiBUeXBlIGFubm90YXRpb25zIG9uIHRoZSBbdF1zIGFyZSBpbXBvcnRhbnQgaGVyZTogaW4gb3JkZXIgZm9yIHRoZSBjb21waWxlciB0byBnZW5lcmF0ZVxuICAgb3B0aW1pemVkIGNvZGUsIGl0IG5lZWRzIHRvIGtub3cgdGhlIGZ1bGx5IGluc3RhbnRpYXRlZCB0eXBlIG9mIHRoZSBiaWdhcnJheS4gVGhpcyBpc1xuICAgYmVjYXVzZSB0aGUgdHlwZSBvZiB0aGUgYmlnYXJyYXkgZW5jb2RlcyB0aGUgZWxlbWVudCBraW5kIGFuZCB0aGUgbGF5b3V0IG9mIHRoZVxuICAgYmlnYXJyYXkuIFdpdGhvdXQgdGhlIGFubm90YXRpb24gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhIEMgY2FsbCB0byB0aGUgZ2VuZXJpYyBhY2Nlc3NcbiAgIGZ1bmN0aW9ucy4gKilcbmxldCB1bnNhZmVfc2V0X3VpbnQ4ICh0IDogdCkgfnBvcyBuID0gQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuXG5sZXQgdW5zYWZlX3NldF9pbnQ4ICh0IDogdCkgfnBvcyBuID1cbiAgKCogSW4gYWxsIHRoZSBzZXQgZnVuY3Rpb25zIHdoZXJlIHRoZXJlIGFyZSB0aGVzZSB0ZXN0cywgaXQgbG9va3MgbGlrZSB0aGUgdGVzdCBjb3VsZCBiZVxuICAgICByZW1vdmVkLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGNoYW5naW5nIHRoZSB2YWx1ZXMgb2YgdGhlIGJ5dGVzIHRoYXQgYXJlIG5vdFxuICAgICB3cml0dGVuLiAqKVxuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQ4ICh0IDogdCkgfnBvcyA9XG4gIGxldCBuID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgc2V0X3VpbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ4IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ4X2V4blwiIG47XG4gIEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHNldF9pbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX2ludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfaW50OF9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgZ2V0X3VpbnQ4ICh0IDogdCkgfnBvcyA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKVxuXG5sZXQgZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLmdldCB0IHBvcykgaW5cbiAgaWYgbiA+PSAxMjggdGhlbiBuIC0gMjU2IGVsc2UgblxuOztcblxubGV0IG1hc2szMl9uID0gQ2FtbC5OYXRpdmVpbnQuKHN1YiAoc2hpZnRfbGVmdCAxbiAzMikgMW4pXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdWludDMyX29mX2ludDMyX3QgbiA9XG4gIGlmIG5vdF9vbl8zMmJpdFxuICB0aGVuXG4gICAgKCogdXNlIENhbWwuTmF0aXZlaW50IHRvIGVuc3VyZSBpbmxpbmluZyBldmVuIHdpdGhvdXQgeC1saWJyYXJ5LWlubGluaW5nICopXG4gICAgQ2FtbC5OYXRpdmVpbnQuKHRvX2ludCAobG9nYW5kIChvZl9pbnQzMiBuKSBtYXNrMzJfbikpXG4gIGVsc2UgaW50MzJfdG9faW50IG5cbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9sZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9sZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2JlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2JlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2xlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2JlIHQgfnBvcylcbjs7XG5cbmxldCBzZXRfdWludDMyX2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfbGVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfbGVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2JlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2JlX2V4biB0IH5wb3MgblxuOztcblxubGV0IGdldF91aW50MzJfbGUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2xlIHQgfnBvcylcbmxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9iZSB0IH5wb3MpXG5cbm1vZHVsZSBJbnRfcmVwciA9IHN0cnVjdFxuICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gZ2V0X3VpbnQ4IHQgfnBvc1xuICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCB4KVxuICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gZ2V0XzE2IHQgcG9zXG4gICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHNldF8xNl90cnVuYyB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IGdldF8zMiB0IHBvc1xuICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHNldF8zMiB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IGdldF82NCB0IHBvc1xuICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHNldF82NCB0IHBvcyB4XG4gIGVuZFxuXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gdW5zYWZlX2dldF91aW50OCB0IH5wb3NcbiAgICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IHVuc2FmZV9zZXRfdWludDggdCB+cG9zIHhcbiAgICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xuICAgICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2lnbl9leHRlbmRfMTYgPSBzaWduX2V4dGVuZF8xNlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCbGl0XG5pbmNsdWRlIFRlc3RfYmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmxpdFxuXG4gIHR5cGUgJ2Egc3JjXG4gIHR5cGUgJ2EgZHN0XG5cbiAgKCogIHZhbCBibGl0ICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBibGl0byA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdG9cblxuICAoKiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIHN1YiA6ICgnYSBzcmMsICdhIGRzdCkgc3ViXG5cbiAgKCp2YWwgc3VibyAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1Ym8qKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl90ZXN0c19nZW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sXG5cbiAgICB2YWwgb2ZfYm9vbCA6IGJvb2wgLT4gYm9vbCB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgelxuXG4gIG1vZHVsZSBTcmMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICBlbmRcblxuICBtb2R1bGUgRHN0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgICB2YWwgb3ZlcmxhcHBpbmdfc3JjX2RzdCA6IFsgYERvX25vdF9jaGVjayB8IGBDaGVjayBvZiAnYSBTcmMudCAtPiAnYSB0IF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIFRlc3RfZ2VuXG4gICAgKEZvcl90ZXN0cyA6IEZvcl90ZXN0c19nZW4pXG4gICAgKFRlc3RlZCA6IFNfZ2VuXG4gICAgIHdpdGggdHlwZSAnYSBzcmMgOj0gJ2EgRm9yX3Rlc3RzLlNyYy50XG4gICAgIHdpdGggdHlwZSAnYSBkc3QgOj0gJ2EgRm9yX3Rlc3RzLkRzdC50KSA9XG5zdHJ1Y3RcbiAgb3BlbiBUZXN0ZWRcbiAgb3BlbiBGb3JfdGVzdHNcblxuICBsZXQgaW5pdCB+bGVuIH5jcmVhdGUgfnNldCB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBzZXQgdCBpIChmIGkpXG4gICAgZG9uZTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGVsdDEgPSBFbHQub2ZfYm9vbCB0cnVlXG4gIGxldCBlbHQyID0gRWx0Lm9mX2Jvb2wgZmFsc2VcbiAgbGV0ICgpID0gYXNzZXJ0IChub3QgKEVsdC5lcXVhbCBlbHQxIGVsdDIpKVxuICBsZXQgc3JjX2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQxIGVsc2UgZWx0MlxuICBsZXQgZHN0X2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQyIGVsc2UgZWx0MVxuXG4gICgqIFRlc3QgW2JsaXRdLiAqKVxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBuID0gNCBpblxuICAgIGZvciBzcmNfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICBmb3IgZHN0X2xlbmd0aCA9IDAgdG8gbiBkb1xuICAgICAgICBmb3Igc3JjX3BvcyA9IDAgdG8gc3JjX2xlbmd0aCBkb1xuICAgICAgICAgIGZvciBkc3RfcG9zID0gMCB0byBkc3RfbGVuZ3RoIGRvXG4gICAgICAgICAgICBmb3Igc3JjX2xlbiA9IDAgdG8gbWluIChzcmNfbGVuZ3RoIC0gc3JjX3BvcykgKGRzdF9sZW5ndGggLSBkc3RfcG9zKSBkb1xuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICBsZXQgaXNfaW5fcmFuZ2UgaSA9IGkgPj0gZHN0X3BvcyAmJiBpIDwgZHN0X3BvcyArIHNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2sgbGVuZ3RoIGdldCBuYW1lIHNlcXVlbmNlIH5leHBlY3QgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzZXF1ZW5jZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IChFbHQuZXF1YWwgKGdldCBzZXF1ZW5jZSBpKSAoZXhwZWN0IGkpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiYnVnXCIgKG5hbWUgOiBzdHJpbmcpIChpIDogaW50KV1cbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19zcmMgPSBjaGVjayBTcmMubGVuZ3RoIFNyYy5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tfZHN0ID0gY2hlY2sgRHN0Lmxlbmd0aCBEc3QuZ2V0IGluXG4gICAgICAgICAgICAgICAgbGV0IHNyYyA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46c3JjX2xlbmd0aCB+Y3JlYXRlOlNyYy5jcmVhdGVfYm9vbCB+c2V0OlNyYy5zZXQgfmY6c3JjX2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChTcmMubGVuZ3RoIHNyYyA9IHNyY19sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPVxuICAgICAgICAgICAgICAgICAgaW5pdCB+bGVuOmRzdF9sZW5ndGggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGFzc2VydCAoRHN0Lmxlbmd0aCBkc3QgPSBkc3RfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5pdF9zcmMgKCkgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIHNyY19sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgIFNyYy5zZXQgc3JjIGkgKHNyY19iaXQgaSlcbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJibGl0IHNyY1wiIHNyYyB+ZXhwZWN0OnNyY19iaXQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfYml0IChzcmNfcG9zICsgaSAtIGRzdF9wb3MpIGVsc2UgZHN0X2JpdCBpKTtcbiAgICAgICAgICAgICAgICAobWF0Y2ggRHN0Lm92ZXJsYXBwaW5nX3NyY19kc3Qgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBEb19ub3RfY2hlY2sgLT4gKClcbiAgICAgICAgICAgICAgICAgfCBgQ2hlY2sgc3JjX3RvX2RzdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGRzdF9wb3MgKyBzcmNfbGVuIDw9IHNyY19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGRzdCA9IHNyY190b19kc3Qgc3JjIGluXG4gICAgICAgICAgICAgICAgICAgICBpZiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3Qgb3ZlcmxhcHBpbmdcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYml0IChpZiBpc19pbl9yYW5nZSBpIHRoZW4gc3JjX3BvcyArIGkgLSBkc3RfcG9zIGVsc2UgaSkpKSkpO1xuICAgICAgICAgICAgICAgICgqIENoZWNrIFtzdWJdLiAqKVxuICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPSBzdWIgc3JjIH5wb3M6c3JjX3BvcyB+bGVuOnNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJzdWIgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJzdWIgZHN0XCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+IHNyY19iaXQgKHNyY19wb3MgKyBpKSlcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICBcImJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGV4biA6IGV4bilcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX3BvcyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X3BvcyA6IGludCldXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IHNyYyA9IGluaXQgfmxlbjo0IH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0IGluXG4gICAgbGV0IGRzdCA9IGluaXQgfmxlbjo4IH5jcmVhdGU6RHN0LmNyZWF0ZV9ib29sIH5zZXQ6RHN0LnNldCB+Zjpkc3RfYml0IGluXG4gICAgbGV0IGFzc2VydF9yYWlzZXMgZiA9IGFzc2VydCAoRXhuLmRvZXNfcmFpc2UgZikgaW5cbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczooLTEpIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczooLTEpICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3Bvczo1IH5zcmNfbGVuOjEgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjggfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo1ICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo4ICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0MVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHkpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgICAgbGV0IGVxdWFsID0gUG9seS5lcXVhbFxuICAgICAgICBsZXQgb2ZfYm9vbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB6ID0gJ2EgU2VxdWVuY2UuelxuXG4gICAgICBtb2R1bGUgU3JjID0gU2VxdWVuY2VcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdDFfZ2VuZXJpY1xuICAgIChFbHQgOiBFbHQxKVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50KVxuICAgIChUZXN0ZWQgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBFbHRfdG9fZWx0MSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBFbHQudFxuXG4gIGxldCBlcXVhbCA9IEVsdC5lcXVhbFxuICBsZXQgb2ZfYm9vbCA9IEVsdC5vZl9ib29sXG5lbmRcblxubW9kdWxlIFRlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMgd2l0aCB0eXBlIHQgOj0gU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNyY1xuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIFRlc3RfZGlzdGluY3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChEc3QgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChUZXN0ZWQgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gU3JjLnQgd2l0aCB0eXBlIGRzdCA6PSBEc3QudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTcmNcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBEc3RcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBEb19ub3RfY2hlY2tcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQpIChTZXF1ZW5jZSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0IChFbHQpIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU3JjIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudCkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZV9kaXN0aW5jdCAoU3JjKSAoRHN0KVxuICBpbmNsdWRlIFRlc3RfZGlzdGluY3QgKEVsdCkgKFNyYykgKERzdCkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIEJsaXQuU2VxdWVuY2UxXG4gICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHlcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlMSAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDEgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2dlbmVyaWNfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0MSkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QxX2dlbmVyaWMgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJpbmFyeV9zZWFyY2hhYmxlXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJpbmFyeV9zZWFyY2hhYmxlXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EgZWx0LCAnYSBlbHQpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCA9IHNpZ1xuICBpbmNsdWRlIFNfZ2VuXG5cbiAgbW9kdWxlIEZvcl90ZXN0IDogc2lnXG4gICAgdmFsIGNvbXBhcmUgOiBib29sIGVsdCAtPiBib29sIGVsdCAtPiBpbnRcbiAgICB2YWwgc21hbGwgOiBib29sIGVsdFxuICAgIHZhbCBiaWcgOiBib29sIGVsdFxuICAgIHZhbCBvZl9hcnJheSA6IGJvb2wgZWx0IGFycmF5IC0+IGJvb2wgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW4gKE0gOiBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgb3BlbiBNXG5cbiAgbGV0JXRlc3RfbW9kdWxlIFwidGVzdF9iaW5hcnlfc2VhcmNoYWJsZVwiID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGNvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgZWx0X2NvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgcyA9IEZvcl90ZXN0LnNtYWxsXG4gICAgICBsZXQgYiA9IEZvcl90ZXN0LmJpZ1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgdCBob3cgdiA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIH5jb21wYXJlIChGb3JfdGVzdC5vZl9hcnJheSB0KSBob3cgdlxuICAgICAgOztcblxuICAgICAgbGV0ICggPSApID0gUG9seS5lcXVhbFxuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMlxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gcyA9IE5vbmVcblxuICAgICAgbGV0IGNyZWF0ZV90ZXN0X2Nhc2UgKG51bV9zLCBudW1fYikgPVxuICAgICAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIGIgfmxlbjoobnVtX3MgKyBudW1fYikgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG51bV9zIC0gMSBkb1xuICAgICAgICAgIGFyci4oaSkgPC0gc1xuICAgICAgICBkb25lO1xuICAgICAgICBhcnJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbmx5X3NtYWxsID0gMTBfMDAwLCAwXG4gICAgICBsZXQgb25seV9iaWcgPSAwLCAxMF8wMDBcbiAgICAgIGxldCBib3RoID0gMjUzMSwgNDcxN1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCAoY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsKSB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPiB0cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2UgYm90aCBpblxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2ID0gMjUzMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSA9XG4gICAgICAgIEFycmF5LmluaXQgMTAwXzAwMCB+ZjooZnVuIGkgLT4gaWYgaSA+IDUwXzAwMCB0aGVuIGIgZWxzZSBzKVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdHMgYXJvdW5kIGEgZ2FwKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgYmVnaW5uaW5nIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBlbmQgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICAgIGZvciBsZW5ndGggPSAwIHRvIDUgZG9cbiAgICAgICAgICBmb3IgbnVtX3MgPSAwIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgbGV0IGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIH5mOihmdW4gaSAtPiBpZiBpIDwgbnVtX3MgdGhlbiBzIGVsc2UgYikgaW5cbiAgICAgICAgICAgIGZvciBwb3MgPSAtMSB0byBsZW5ndGggZG9cbiAgICAgICAgICAgICAgZm9yIGxlbiA9IC0xIHRvIGxlbmd0aCArIDEgZG9cbiAgICAgICAgICAgICAgICAoKnRyeSopXG4gICAgICAgICAgICAgICAgbGV0IHNob3VsZF9yYWlzZSA9XG4gICAgICAgICAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgICAgIH50b3RhbF9sZW5ndGg6bGVuZ3RoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+cG9zIH5sZW4gfmNvbXBhcmU6ZWx0X2NvbXBhcmUgYExhc3RfZXF1YWxfdG8gcylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIHNob3VsZF9yYWlzZSwgcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgICB8IHRydWUsIEVycm9yIF8gLT4gKClcbiAgICAgICAgICAgICAgICB8IHRydWUsIE9rIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byByYWlzZSBidXQgaXQgZGlkbid0XCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBFcnJvciBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gbm90IHJhaXNlLCBidXQgaXQgcmFpc2VkXCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBPayByZXN1bHQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hlZCA9IG51bV9zIC0gMSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGNvcnJlY3RfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc2VhcmNoZWQgPCBwb3NcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgbGVuID0gMFxuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBzZWFyY2hlZCA+PSBwb3MgKyBsZW5cbiAgICAgICAgICAgICAgICAgICAgdGhlbiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIFNvbWUgc2VhcmNoZWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBub3QgKGNvcnJlY3RfcmVzdWx0ID0gcmVzdWx0KSB0aGVuIGZhaWx3aXRoIFwiV3JvbmcgcmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgICgqd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGhzIFwiYmluYXJ5X3NlYXJjaCBidWdcIlxuICAgICAgICAgICAgICAgICAgICAoZXhuLCBgbGVuZ3RoIGxlbmd0aCwgYHNlYXJjaF9rZXkgc2VhcmNoX2tleSwgYHBvcyBwb3MsIGBsZW4gbGVuKVxuICAgICAgICAgICAgICAgICAgICA8OnNleHBfb2Y8IGV4biAqIFsgYGxlbmd0aCBvZiBpbnQgXSAqIFsgYHNlYXJjaF9rZXkgb2YgaW50IF1cbiAgICAgICAgICAgICAgICAgICAqIFsgYHBvcyBvZiBpbnQgXSAqIFsgYGxlbiBvZiBpbnQgXSA+PiopXG4gICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhID0gYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgKEZvcl90ZXN0Lm9mX2FycmF5IGEpXG5cbiAgICAgICgqdGVzdCBmb3IgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIHggPSBpZiB4ID0gYiB0aGVuIGBSaWdodCBlbHNlIGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA1MF8wMDBcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBSaWdodCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IE5vbmVcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgOTlfOTk5XG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBOb25lXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdCAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gTS50XG4gICAgdHlwZSAnYSBlbHQgPSBNLmVsdFxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gIGVuZClcblxubW9kdWxlIFRlc3QxIChNIDogQmluYXJ5X3NlYXJjaGFibGUxX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTS50XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IE0uRm9yX3Rlc3Qub2ZfYXJyYXlcbiAgICAgIGxldCBjb21wYXJlID0gQm9vbC5jb21wYXJlXG4gICAgICBsZXQgc21hbGwgPSBmYWxzZVxuICAgICAgbGV0IGJpZyA9IHRydWVcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0IChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE0udFxuICAgICAgdHlwZSBlbHQgPSBNLmVsdFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlMV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdDEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgTS50XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBCYXNlXG5cbigqKiBFYWNoIHNpbmdsZV9lcnJvciBpcyBhIHBhdGggaW5kaWNhdGluZyB0aGUgbG9jYXRpb24gd2l0aGluIHRoZSBkYXRhc3RydWN0dXJlIGluXG4gICAgcXVlc3Rpb24gdGhhdCBpcyBiZWluZyB2YWxpZGF0ZWQsIGFsb25nIHdpdGggYW4gZXJyb3IgbWVzc2FnZS4gKilcbnR5cGUgc2luZ2xlX2Vycm9yID1cbiAgeyBwYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBlcnJvciA6IEVycm9yLnRcbiAgfVxuXG50eXBlIHQgPSBzaW5nbGVfZXJyb3IgbGlzdFxudHlwZSAnYSBjaGVjayA9ICdhIC0+IHRcblxubGV0IHBhc3MgOiB0ID0gW11cblxubGV0IGZhaWxzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLmNyZWF0ZSBtZXNzYWdlIGEgc2V4cF9vZl9hIH0gXVxuOztcblxubGV0IGZhaWwgbWVzc2FnZSA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UgfSBdXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgZmFpbF9zIHNleHAgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLmNyZWF0ZV9zIHNleHAgfSBdXG5sZXQgY29tYmluZSB0MSB0MiA9IHQxIEAgdDJcbmxldCBvZl9saXN0ID0gTGlzdC5jb25jYXRcblxubGV0IG5hbWUgbmFtZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW10gKCogd2hlbiBzdWNjZXNzZnVsLCBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhIGNsb3N1cmUgZm9yIFt+Zl0sIGJlbG93ICopXG4gIHwgXyAtPiBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHsgcGF0aCA9IG5hbWUgOjogcGF0aDsgZXJyb3IgfSlcbjs7XG5cbmxldCBuYW1lX2xpc3QgbiBsID0gbmFtZSBuIChvZl9saXN0IGwpXG5sZXQgZmFpbF9mbiBtZXNzYWdlIF8gPSBmYWlsIG1lc3NhZ2VcbmxldCBwYXNzX2Jvb2wgKF8gOiBib29sKSA9IHBhc3NcbmxldCBwYXNzX3VuaXQgKF8gOiB1bml0KSA9IHBhc3NcblxubGV0IHByb3RlY3QgZiB2ID1cbiAgdHJ5IGYgdiB3aXRoXG4gIHwgZXhuIC0+XG4gICAgZmFpbF9zIChTZXhwLm1lc3NhZ2UgXCJFeGNlcHRpb24gcmFpc2VkIGR1cmluZyB2YWxpZGF0aW9uXCIgWyBcIlwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgcHJvdGVjdFxuICAgIChmdW4gKCkgLT5cbiAgICAgICBmICgpO1xuICAgICAgIHBhc3MpXG4gICAgKClcbjs7XG5cbmxldCBwYXRoX3N0cmluZyBwYXRoID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIHBhdGhcblxubGV0IGVycm9ycyB0ID1cbiAgTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPlxuICAgIEVycm9yLnRvX3N0cmluZ19odW0gKEVycm9yLnRhZyBlcnJvciB+dGFnOihwYXRoX3N0cmluZyBwYXRoKSkpXG47O1xuXG5sZXQgcmVzdWx0X2ZhaWwgdCA9XG4gIE9yX2Vycm9yLmVycm9yXG4gICAgXCJ2YWxpZGF0aW9uIGVycm9yc1wiXG4gICAgKExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4gcGF0aF9zdHJpbmcgcGF0aCwgZXJyb3IpKVxuICAgIFslc2V4cF9vZjogKHN0cmluZyAqIEVycm9yLnQpIExpc3QudF1cbltAQGNvbGRdXG47O1xuXG4oKiogW3Jlc3VsdF0gaXMgY2FyZWZ1bGx5IGltcGxlbWVudGVkIHNvIHRoYXQgaXQgY2FuIGJlIGlubGluZWQgLS0gY2FsbGluZyBbcmVzdWx0X2ZhaWxdLFxuICAgIHdoaWNoIGlzIG5vdCBpbmxpbmVhYmxlLCBpcyBrZXkgdG8gdGhpcy4gKilcbmxldCByZXN1bHQgdCA9IGlmIExpc3QuaXNfZW1wdHkgdCB0aGVuIE9rICgpIGVsc2UgcmVzdWx0X2ZhaWwgdFxuXG5sZXQgbWF5YmVfcmFpc2UgdCA9IE9yX2Vycm9yLm9rX2V4biAocmVzdWx0IHQpXG5sZXQgdmFsaWRfb3JfZXJyb3IgY2hlY2sgeCA9IE9yX2Vycm9yLm1hcCAocmVzdWx0IChwcm90ZWN0IGNoZWNrIHgpKSB+ZjooZnVuICgpIC0+IHgpXG5cbmxldCBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIF9yZWNvcmQgdiA9XG4gIGxldCByZXN1bHQgPSBwcm90ZWN0IGNoZWNrIHYgaW5cbiAgbmFtZSAoRmllbGQubmFtZSBmbGQpIHJlc3VsdFxuOztcblxubGV0IGZpZWxkIGNoZWNrIHJlY29yZCBmbGQgPVxuICBsZXQgdiA9IEZpZWxkLmdldCBmbGQgcmVjb3JkIGluXG4gIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHZcbjs7XG5cbmxldCBmaWVsZF9mb2xkZXIgY2hlY2sgcmVjb3JkID1cbiAgKCk7XG4gIGZ1biBhY2MgZmxkIC0+IGZpZWxkIGNoZWNrIHJlY29yZCBmbGQgOjogYWNjXG47O1xuXG5sZXQgZmllbGRfZGlyZWN0X2ZvbGRlciBjaGVjayA9XG4gIFN0YWdlZC5zdGFnZSAoZnVuIGFjYyBmbGQgcmVjb3JkIHYgLT5cbiAgICBtYXRjaCBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2IHdpdGhcbiAgICB8IFtdIC0+IGFjYyAoKiBBdm9pZCBhbGxvY2F0aW5nIGEgbmV3IGxpc3QgaW4gdGhlIHN1Y2Nlc3MgY2FzZSAqKVxuICAgIHwgcmVzdWx0IC0+IHJlc3VsdCA6OiBhY2MpXG47O1xuXG5sZXQgYWxsIGNoZWNrcyB2ID1cbiAgbGV0IHJlYyBsb29wIGNoZWNrcyB2IGVycnMgPVxuICAgIG1hdGNoIGNoZWNrcyB3aXRoXG4gICAgfCBbXSAtPiBlcnJzXG4gICAgfCBjaGVjayA6OiBjaGVja3MgLT5cbiAgICAgIChtYXRjaCBwcm90ZWN0IGNoZWNrIHYgd2l0aFxuICAgICAgIHwgW10gLT4gbG9vcCBjaGVja3MgdiBlcnJzXG4gICAgICAgfCBlcnIgLT4gbG9vcCBjaGVja3MgdiAoZXJyIDo6IGVycnMpKVxuICBpblxuICBvZl9saXN0IChMaXN0LnJldiAobG9vcCBjaGVja3MgdiBbXSkpXG47O1xuXG5sZXQgb2ZfcmVzdWx0IGYgPVxuICBwcm90ZWN0IChmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBPayAoKSAtPiBwYXNzXG4gICAgfCBFcnJvciBlcnJvciAtPiBmYWlsIGVycm9yKVxuOztcblxubGV0IG9mX2Vycm9yIGYgPVxuICBwcm90ZWN0IChmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBPayAoKSAtPiBwYXNzXG4gICAgfCBFcnJvciBlcnJvciAtPiBbIHsgcGF0aCA9IFtdOyBlcnJvciB9IF0pXG47O1xuXG5sZXQgYm9vbHRlc3QgZiB+aWZfZmFsc2UgPSBwcm90ZWN0IChmdW4gdiAtPiBpZiBmIHYgdGhlbiBwYXNzIGVsc2UgZmFpbCBpZl9mYWxzZSlcblxubGV0IHBhaXIgfmZzdCB+c25kIChmc3RfdmFsdWUsIHNuZF92YWx1ZSkgPVxuICBvZl9saXN0IFsgbmFtZSBcImZzdFwiIChwcm90ZWN0IGZzdCBmc3RfdmFsdWUpOyBuYW1lIFwic25kXCIgKHByb3RlY3Qgc25kIHNuZF92YWx1ZSkgXVxuOztcblxubGV0IGxpc3RfaW5kZXhlZCBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXBpIGxpc3QgfmY6KGZ1biBpIGVsIC0+IG5hbWUgKEludC50b19zdHJpbmcgKGkgKyAxKSkgKHByb3RlY3QgY2hlY2sgZWwpKVxuICB8PiBvZl9saXN0XG47O1xuXG5sZXQgbGlzdCB+bmFtZTpleHRyYWN0X25hbWUgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbCAtPlxuICAgIG1hdGNoIHByb3RlY3QgY2hlY2sgZWwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IHQgLT5cbiAgICAgICgqIGV4dHJhIGxldmVsIG9mIHByb3RlY3Rpb24gaW4gY2FzZSBleHRyYWN0X25hbWUgdGhyb3dzIGFuIGV4Y2VwdGlvbiAqKVxuICAgICAgcHJvdGVjdCAoZnVuIHQgLT4gbmFtZSAoZXh0cmFjdF9uYW1lIGVsKSB0KSB0KVxuICB8PiBvZl9saXN0XG47O1xuXG5sZXQgYWxpc3Qgfm5hbWUgZiBsaXN0JyA9IGxpc3QgKGZ1biAoXywgeCkgLT4gZiB4KSBsaXN0JyB+bmFtZTooZnVuIChrZXksIF8pIC0+IG5hbWUga2V5KVxubGV0IGZpcnN0X2ZhaWx1cmUgdDEgdDIgPSBpZiBMaXN0LmlzX2VtcHR5IHQxIHRoZW4gdDIgZWxzZSB0MVxuXG5sZXQgb2ZfZXJyb3Jfb3B0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHBhc3NcbiAgfCBTb21lIGVycm9yIC0+IGZhaWwgZXJyb3Jcbjs7XG5cbmxldCBib3VuZGVkIH5uYW1lIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgeCA9XG4gIG1hdGNoIE1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgeCB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gcGFzc1xuICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+XG4gICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgSW5jbCBpbmNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPCBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGluY2wpKVxuICAgICB8IEV4Y2wgZXhjbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDw9IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgZXhjbCkpKVxuICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgSW5jbCBpbmNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPiBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGluY2wpKVxuICAgICB8IEV4Y2wgZXhjbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID49IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgZXhjbCkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoICsrICkgdDEgdDIgPSBjb21iaW5lIHQxIHQyXG5lbmRcbiIsIlxuKCogV2UgZG8gbm90IFtpbmNsdWRlIEJhc2VdIGhlcmUsIGFuZCBpbnN0ZWFkIGltcG9ydCBtb2R1bGVzIHRoYXQgW0NvcmVdIGRvZXNuJ3QgZXh0ZW5kLFxuICAgYmVjYXVzZSB3ZSB3YW50IGNvZGUgaW4gW0NvcmVdIHRvIGJlIGNsZWFyIHdoZW4gaXQgcmVmZXJlbmNlcyBhIFtCYXNlXSBtb2R1bGUgdGhhdFxuICAgW0NvcmVdIGlzIG92ZXJyaWRpbmcuICopXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBCYXNlLkFwcGxpY2F0aXZlXG5tb2R1bGUgQXZsdHJlZSA9IEJhc2UuQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhc2UuQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJhc2UuQmluYXJ5X3NlYXJjaFxubW9kdWxlIENvbXBhcmlzb25zID0gQmFzZS5Db21wYXJpc29uc1xubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBFcXVhbCA9IEJhc2UuRXF1YWxcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEZsb2F0YWJsZSA9IEJhc2UuRmxvYXRhYmxlXG5tb2R1bGUgRm9ybWF0dGVyID0gQmFzZS5Gb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gQmFzZS5IYXNoXG5tb2R1bGUgSGFzaGVyID0gQmFzZS5IYXNoZXJcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEJhc2UuSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbnRhYmxlID0gQmFzZS5JbnRhYmxlXG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gQmFzZS5JbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnRfbWF0aCA9IEJhc2UuSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBCYXNlLkludmFyaWFudFxubW9kdWxlIE1vbmFkID0gQmFzZS5Nb25hZFxubW9kdWxlIFBvbHkgPSBCYXNlLlBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IEJhc2UuUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFN0YWdlZCA9IEJhc2UuU3RhZ2VkXG5tb2R1bGUgU3RyaW5nYWJsZSA9IEJhc2UuU3RyaW5nYWJsZVxubW9kdWxlIFN5cyA9IEJhc2UuU3lzXG5tb2R1bGUgVWNoYXIgPSBCYXNlLlVjaGFyXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBCYXNlLldpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gQmFzZS5Xb3JkX3NpemVcblxuKCogV2UgZG8gaW5jbHVkZSBbQmFzZV0ncyB0b3AtbGV2ZWwgdmFsdWUgYW5kIHR5cGUgYmluZGluZ3MsIGJlY2F1c2UgdGhleSBkb24ndCBjYXVzZVxuICAgYW55IGNvbmZ1c2lvbiwgYW5kIGR1cGxpY2F0aW5nIHRoZW0gd291bGQgYmUgZXJyb3IgcHJvbmUuICopXG5pbmNsdWRlIEJhc2UuRXhwb3J0XG5pbmNsdWRlIFN0ZGlvXG5pbmNsdWRlIEJhc2VfZm9yX3Rlc3RzXG5pbmNsdWRlIEJpbl9wcm90LlN0ZFxubW9kdWxlIEZpZWxkID0gRmllbGRzbGliLkZpZWxkXG5cbm1vZHVsZSBGcm9tX3NleHBsaWIgOiBzaWdcbiAgdHlwZSBiaWdzdHJpbmcgPSBTZXhwbGliLkNvbnYuYmlnc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgbWF0ID0gU2V4cGxpYi5Db252Lm1hdCBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIHZlYyA9IFNleHBsaWIuQ29udi52ZWMgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAoKiBbc2V4cF9vZl9vcGFxdWVdIGFuZCBbb3BhcXVlX29mX3NleHBdIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBmcm9tXG4gICAgIFtbQEBkZXJpdmluZyBzZXhwXV0sIFtbJXNleHBfb2Y6IF1dLCBhbmQgW1slb2Zfc2V4cDogXV0uICBUaGUgdHlwZSBbXyBzZXhwX29wYXF1ZV1cbiAgICAgZXhwYW5kcyB0byB1c2VzIG9mIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0uICopXG5cbiAgdmFsIHNleHBfb2Zfb3BhcXVlIDogXyAtPiBCYXNlLlNleHAudFxuICB2YWwgb3BhcXVlX29mX3NleHAgOiBCYXNlLlNleHAudCAtPiBfXG4gIHZhbCBzZXhwX29mX3BhaXIgOiAoJ2EgLT4gQmFzZS5TZXhwLnQpIC0+ICgnYiAtPiBCYXNlLlNleHAudCkgLT4gJ2EgKiAnYiAtPiBCYXNlLlNleHAudFxuICB2YWwgcGFpcl9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhKSAtPiAoQmFzZS5TZXhwLnQgLT4gJ2IpIC0+IEJhc2UuU2V4cC50IC0+ICdhICogJ2JcblxuICBleGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiBCYXNlLlNleHAudFxuXG4gIHZhbCBvZl9zZXhwX2Vycm9yIDogc3RyaW5nIC0+IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIG9mX3NleHBfZXJyb3JfZXhuIDogZXhuIC0+IEJhc2UuU2V4cC50IC0+IF9cbmVuZCA9XG4gIFNleHBsaWIuQ29udlxuXG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuXG4oKiBbc2V4cF9vcGFxdWVdIGluZGljYXRlcyB0byBbcHB4X3NleHBfY29udl0gdGhhdCBhIHZhbHVlIHNob3VsZCBiZSByZW5kZXJlZCBhcyBbX10sIGkuZS5cbiAgIFtTZXhwLkF0b20gXCJfXCJdLiAgSGVyZSB3ZSBleHBvc2UgdGhlIFtAQGRlcml2aW5nXSBhc3BlY3RzIG9mIFtzZXhwX29wYXF1ZV0gc28gdGhhdFxuICAgb3RoZXIgcHB4J3MgdHJlYXQgW3NleHBfb3BhcXVlXSBjb3JyZWN0bHksIGJ5IGlnbm9yaW5nIGl0IGFuZCBwcm9jZXNzaW5nIHRoZSB1bmRlcmx5aW5nXG4gICB0eXBlLiAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBzZXhwX29wYXF1ZSA6PSAnYSlcblxuaW5jbHVkZSAoXG4gIFR5cGVyZXBfbGliLlN0ZCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUeXBlcmVwX2xpYi5TdGRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIFR5cGVfZXF1YWwgOj0gVHlwZXJlcF9saWIuU3RkLlR5cGVfZXF1YWwpXG5cbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudHNsaWIuVmFyaWFudFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPSBQcHhfaW5saW5lX3Rlc3RfbGliLlJ1bnRpbWUuYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID1cbiAgdHJ5XG4gICAgaWdub3JlIChDYW1sLlN5cy5nZXRlbnYgXCJURVNUSU5HX0ZSQU1FV09SS1wiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgKCogW0NhbWwuKl0gbmV2ZXIgcmFpc2VzIFtOb3RfZm91bmRfc10gKilcbiAgfCBDYW1sLk5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxudHlwZSAnYSBpZGVudGl0eSA9ICdhXG5cbm1vZHVsZSBOb3RfZm91bmQgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uXG4gICAgTm90X2ZvdW5kID0gTm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgW0BkZXByZWNhdGVkXG4gICAgICAgICAgICAgICAgICB7fFtzaW5jZSAyMDE4LTAyXSBJbnN0ZWFkIG9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIGNvbnNpZGVyIHVzaW5nIFtyYWlzZV9zXSB3aXRoIGFuXG5pbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLiAgSWYgY29kZSBuZWVkcyB0byBkaXN0aW5ndWlzaCBbTm90X2ZvdW5kXSBmcm9tIG90aGVyXG5leGNlcHRpb25zLCBwbGVhc2UgY2hhbmdlIGl0IHRvIGhhbmRsZSBib3RoIFtOb3RfZm91bmRdIGFuZCBbTm90X2ZvdW5kX3NdLiAgVGhlbiwgaW5zdGVhZFxub2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgcmFpc2UgW05vdF9mb3VuZF9zXSB3aXRoIGFuIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UufH1dXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gQmFzZS5Ob3RfZm91bmRfc1xuZW5kXG5cbmluY2x1ZGUgTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXhwYWJsZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IFNleHBsaWIuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICAgICAgfCBTZXhwbGliLlNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwbGliLlNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTKSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5vZl9zdHJpbmdfX29mX19vZl9zZXhwIE0udF9vZl9zZXhwIHhcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5zdHJpbmdfb2ZfX29mX19zZXhwX29mIE0uc2V4cF9vZl90IHhcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFRvX3N0cmluZ2FibGUgPSBTdGFibGUuVG9fc3RyaW5nYWJsZS5WMVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5fcHJvdC5CaW5hYmxlXG5tb2R1bGUgU2hhcGUgPSBCaW5fcHJvdC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9iaW5hYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnZfd2l0aG91dF91dWlkIHdpdGggdHlwZSBiaW5hYmxlIDo9IEJpbmFibGUudCkgOlxuICAgICAgUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnYgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzEpXG4gICAgICAgIChNIDogQ29udjFfd2l0aG91dF91dWlkIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMxKSAoTSA6IENvbnYxIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzIpXG4gICAgICAgIChNIDogQ29udjJfd2l0aG91dF91dWlkIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252MiB3aXRoIHR5cGUgKCdhLCAnYikgYmluYWJsZSA6PSAoJ2EsICdiKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252M193aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBiaW5hYmxlIDo9ICgnYSwgJ2IsICdjKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252MyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFNleHBhYmxlLlMpID1cbiAgICAgIE9mX2JpbmFibGUuVjFcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgICAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnNleHBfb2ZfdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gTS50X29mX3NleHBcbiAgICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zZXhwYWJsZSkgPVxuICAgICAgT2ZfYmluYWJsZS5WMlxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zdHJpbmdhYmxlKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuXG50eXBlICdhIG0gPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxubGV0IG9mX2JpZ3N0cmluZyAodHlwZSBhKSBtIGJpZ3N0cmluZyA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCB0ID0gTS5iaW5fcmVhZF90IGJpZ3N0cmluZyB+cG9zX3JlZiBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9IEFycmF5MS5kaW0gYmlnc3RyaW5nIGluXG4gIChtYXRjaCAhcG9zX3JlZiA9IGJpZ3N0cmluZ19sZW5ndGggd2l0aFxuICAgfCB0cnVlIC0+ICgpXG4gICB8IGZhbHNlIC0+XG4gICAgIHJhaXNlX3NcbiAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgIFwiYmluX3JlYWRfdCBkaWQgbm90IGNvbnN1bWUgdGhlIGVudGlyZSBidWZmZXJcIlxuICAgICAgICAgICB+Y29uc3VtZWQ6KCFwb3NfcmVmIDogaW50KVxuICAgICAgICAgICAoYmlnc3RyaW5nX2xlbmd0aCA6IGludCldKTtcbiAgdFxuOztcblxuKCogVXNpbmcgdGhlIFtCaWdzdHJpbmddIG1vZHVsZSB3b3VsZCBpbnRyb2R1Y2UgYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBjcmVhdGVfYmlnc3RyaW5nIHNpemUgPSBBcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgc2l6ZVxuXG5sZXQgdG9fYmlnc3RyaW5nID8ocHJlZml4X3dpdGhfbGVuZ3RoID0gZmFsc2UpICh0eXBlIGEpIG0gdCA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgdF9sZW5ndGggPSBNLmJpbl9zaXplX3QgdCBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoIHRoZW4gdF9sZW5ndGggKyA4ICgqIHRoZSBzaXplIG9mIGEgNjQtYml0IGludCAqKSBlbHNlIHRfbGVuZ3RoXG4gIGluXG4gIGxldCBiaWdzdHJpbmcgPSBjcmVhdGVfYmlnc3RyaW5nIGJpZ3N0cmluZ19sZW5ndGggaW5cbiAgbGV0IHBvcyA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoXG4gICAgdGhlbiBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IGJpZ3N0cmluZyB+cG9zOjAgdF9sZW5ndGhcbiAgICBlbHNlIDBcbiAgaW5cbiAgbGV0IHBvcyA9IE0uYmluX3dyaXRlX3QgYmlnc3RyaW5nIH5wb3MgdCBpblxuICBhc3NlcnQgKHBvcyA9IGJpZ3N0cmluZ19sZW5ndGgpO1xuICBiaWdzdHJpbmdcbjs7XG5cbm1vZHVsZSBPZl9iaW5hYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTFfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUxLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTJfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUyLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTNfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUzLlYyXG5tb2R1bGUgT2Zfc2V4cGFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX3NleHBhYmxlLlYyXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc3RyaW5nYWJsZS5WMlxubW9kdWxlIE9mX2JpbmFibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjFcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjFcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjFcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zX2FuZF9zaGFwZSA9IHNpZ1xuICAgICAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zXG5cbiAgICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICBlbmRcblxuICAgICgqIENoZWNrIHRoYXQgb25seSB0aGUgZnVuY3Rpb25zICYgc2hhcGUgYXJlIHN1ZmZpY2llbnQgZm9yIFtAQGRlcml2aW5nIGJpbl9pb10uIFRoZVxuICAgICAgIGZhY3QgdGhhdCB0aGlzIGZ1bmN0b3IgdHlwZWNoZWNrcyBpcywgaXRzZWxmLCB0aGUgdGVzdC4gKilcbiAgICBtb2R1bGUgXyAoWCA6IFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlKSA6IFMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFgudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlByaW50Zn1bQmFzZS5QcmludGZdfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgQmFzZS5QcmludGYgKCoqIEBvcGVuICopXG5cbmxldCBlcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwuZXByaW50ZlxubGV0IGZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5rZnByaW50ZlxubGV0IHByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLnByaW50ZlxuXG5cbigqKiBwcmludCB0byBzdGRlcnI7IGV4aXQgMSAqKVxubGV0IGV4aXRmIGZtdCA9XG4gIGtzcHJpbnRmXG4gICAgKGZ1biBzICgpIC0+XG4gICAgICAgZXByaW50ZiBcIiVzXFxuJSFcIiBzO1xuICAgICAgIGV4aXQgMSlcbiAgICBmbXRcbjs7XG5cbnR5cGUgcHJpbnRmID0geyBwcmludGYgOiAnYS4gKCdhLCBCdWZmZXIudCwgdW5pdCkgZm9ybWF0IC0+ICdhIH1cblxubGV0IGNvbGxlY3RfdG9fc3RyaW5nIGYgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgZG9uZV8gPSByZWYgZmFsc2UgaW5cbiAgbGV0IHByaW50ZiBmbXQgPVxuICAgIGticHJpbnRmXG4gICAgICAoZnVuIGJ1ZiAtPlxuICAgICAgICAgaWYgIWRvbmVfXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJbcHJpbnRmXSB1c2VkIGFmdGVyIFtjb2xsZWN0X3RvX3N0cmluZ10gcmV0dXJuZWRcIl0pKVxuICAgICAgYnVmXG4gICAgICBmbXRcbiAgaW5cbiAgZiB7IHByaW50ZiB9O1xuICBkb25lXyA6PSB0cnVlO1xuICBsZXQgb3V0cHV0ID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBvdXRwdXRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxuKCogQWxsIHRoZSB0eXBlcyBhcyBleHBvc2VkIGluIHRoZSBtbGkgYXJlIGRlZmluZWQgaW4gdGhpcyBbVHlwZXNdIG1vZHVsZS4gIFRoZSByZXN0IG9mXG4gICB0aGlzIGZpbGUgaXMgc2ltcGx5IG92ZXJyaWRpbmcgYWxsIHRoZSBiaW5faW8sIGNvbXBhcmUsIGFuZCBzZXhwIGZ1bmN0aW9ucyB0byByYWlzZVxuICAgZXhjZXB0aW9ucy4gKilcbm1vZHVsZSBUeXBlcyA9IHN0cnVjdFxuICBtb2R1bGUgTm9ib2R5ID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJOb2JvZHlcIlxuICBlbmRcblxuICBtb2R1bGUgTWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk1lXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBSZWFkIF0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlJlYWRcIlxuICBlbmRcblxuICBtb2R1bGUgV3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBXaG9fY2FuX3dyaXRlIG9mIE1lLnQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiV3JpdGVcIlxuICBlbmRcblxuICBtb2R1bGUgSW1tdXRhYmxlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mIE5vYm9keS50XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIkltbXV0YWJsZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IFdyaXRlLnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZF93cml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBgV2hvX2Nhbl93cml0ZSBvZiAnYVxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJVcHBlcl9ib3VuZFwiXG4gIGVuZFxuZW5kXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbigqIFRoaXMgaXMgYW4gZXhwbGljaXQgbW9kdWxlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IGdpdmVuIGlubGluZSBhcyB0aGUgcmV0dXJuIHNpZ25hdHVyZSBvZlxuICAgW09ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxXSB0byBhdm9pZCBhbiB1bnVzZWQgdmFsdWUgd2FybmluZyB3aXRoIGJpbl9pbyB2YWx1ZXMuICopXG5tb2R1bGUgdHlwZSBTZXhwYWJsZV9iaW5hYmxlX2NvbXBhcmFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuKCogT3ZlcnJpZGUgYWxsIGJpbl9pbywgc2V4cCwgY29tcGFyZSBmdW5jdGlvbnMgdG8gcmFpc2UgZXhjZXB0aW9ucyAqKVxubW9kdWxlIE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChOYW1lIDogc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCBzZXhwX29mX3QgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuc2V4cF9vZl90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9vZl9zZXhwIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLnRfb2Zfc2V4cF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IGNvbXBhcmUgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5jb21wYXJlXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgaGFzaF9mb2xkX3QgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5oYXNoX2ZvbGRfdF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5Ob3RoaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIGVuZClcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSBfID1cbiAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgdXNlZCAlcyBiaW5faW8gc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBkZXNlcmlhbGl6YXRpb25cIiBOYW1lLm5hbWUgKClcbiAgICAgICAgOztcbiAgICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IHNpZ1xuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX3BvbHldXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVClcblxuICB0eXBlIHQgPSBULnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE5vYm9keSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Ob2JvZHkpXG4gICAgbW9kdWxlIE1lID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk1lKVxuICAgIG1vZHVsZSBSZWFkID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWQpXG4gICAgbW9kdWxlIFdyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLldyaXRlKVxuICAgIG1vZHVsZSBSZWFkX3dyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWRfd3JpdGUpXG4gICAgbW9kdWxlIEltbXV0YWJsZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5JbW11dGFibGUpXG5cbiAgICB0eXBlIG5vYm9keSA9IE5vYm9keS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIG1lID0gTWUudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBtb2R1bGUgVXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKFR5cGVzLlVwcGVyX2JvdW5kKVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBUeXBlcy5VcHBlcl9ib3VuZC50IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICAgIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHJlYWQgPSBWMS5SZWFkLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgd3JpdGUgPSBWMS5Xcml0ZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSBpbW11dGFibGUgPSBWMS5JbW11dGFibGUudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSByZWFkX3dyaXRlID0gVjEuUmVhZF93cml0ZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlICdhIHBlcm1zID0gJ2EgVjEuVXBwZXJfYm91bmQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5tb2R1bGUgRXhwb3J0ID0gU3RhYmxlLkV4cG9ydFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ29tcGFyYXRvciA9IEJhc2UuQ29tcGFyYXRvclxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSBDb21wYXJhdG9yLnQgPSBwcml2YXRlXG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gIH1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQ29tcGFyYXRvciB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbmluY2x1ZGUgKENvbXBhcmF0b3IgOiBCYXNlX21hc2spXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIHQgPSBwcml2YXRlXG4gICAgICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuXG4gICAgbGV0IG1ha2UgPSBtYWtlXG5cbiAgICBtb2R1bGUgTWFrZSA9IE1ha2VcbiAgICBtb2R1bGUgTWFrZTEgPSBNYWtlMVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUmVzdWx0ID0gQmFzZS5SZXN1bHRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCA9XG4gICAgICB8IE9rIG9mICdhXG4gICAgICB8IEVycm9yIG9mICdiXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAoZjIgZXJyKVxuICAgICAgfCBPayB4IC0+IE9rIChmMSB4KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMV9zdGFibGVfdW5pdF90ZXN0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKHN0cmluZywgaW50KSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICAgIGxldCB0ZXN0cyA9XG4gICAgICBbIFYxLk9rIFwiZm9vXCIsIFwiKE9rIGZvbylcIiwgXCJcXDAwMFxcMDAzZm9vXCI7IFYxLkVycm9yIDcsIFwiKEVycm9yIDcpXCIsIFwiXFwwMDFcXDAwN1wiIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBSZXN1bHRcbiIsIigqKiBBbiBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIHVuaXQgdGVzdHMgdG8gY2hlY2sgc3RhYmlsaXR5IG9mIHNleHAgYW5kIGJpbi1pb1xuICAgIHNlcmlhbGl6YXRpb25zICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG5cblxuICAoKiogW3Rlc3RzXSBpcyBhIGxpc3Qgb2YgKHZhbHVlLCBzZXhwLXJlcHJlc2VudGF0aW9uLCBiaW4taW8tcmVwcmVzZW50YXRpb24pIHRyaXBsZXMuXG4gICAgICBUaGUgdW5pdCB0ZXN0cyBjaGVjayB0aGF0IHRoZSB0eXBlIHByb3Blcmx5IHNlcmlhbGl6ZXMgYW5kXG4gICAgICBkZS1zZXJpYWxpemVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcmVwcmVzZW50YXRpb25zLiAqKVxuICB2YWwgdGVzdHMgOiAodCAqIHN0cmluZyAqIHN0cmluZykgbGlzdFxuZW5kXG5cbigqKiBVbm9yZGVyZWQgY29udGFpbmVyIHRlc3RzIGFyZSBmb3IgdHlwZXMgd2l0aCBzZXJpYWxpemF0aW9ucyB0aGF0IHdpbGwgY29udGFpbiBhXG4gICAgY2VydGFpbiBzZXQgb2YgZWxlbWVudHMgKGVhY2ggcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgc2V4cCBvciBiaW4taW8gc3RyaW5nKSB3aGljaCBtYXlcbiAgICBhcHBlYXIgaW4gYW55IG9yZGVyLCBzdWNoIGFzIGhhc2ggdGFibGVzIGFuZCBoYXNoIHNldHMuICopXG5tb2R1bGUgVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzZXhwcyA6IHN0cmluZyBsaXN0XG4gICAgOyBiaW5faW9faGVhZGVyIDogc3RyaW5nXG4gICAgOyBiaW5faW9fZWxlbWVudHMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBVbm9yZGVyZWRfY29udGFpbmVyX2FyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCB0ZXN0cyA6ICh0ICogVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0LnQpIGxpc3RcbmVuZFxuIiwibGV0ICggfCEgKSB4IHkgPSB4IHw+IHlcbiIsImluY2x1ZGUgQmFzZS5PcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5cbmxldCBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBpID0gaWYgaSA8IDAgdGhlbiBpICsgbGVuZ3RoX2Z1biB0IGVsc2UgaVxuXG5sZXQgc2xpY2Ugfmxlbmd0aF9mdW4gfnN1Yl9mdW4gdCBzdGFydCBzdG9wID1cbiAgbGV0IHN0b3AgPSBpZiBzdG9wID0gMCB0aGVuIGxlbmd0aF9mdW4gdCBlbHNlIHN0b3AgaW5cbiAgbGV0IHBvcyA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0YXJ0IGluXG4gIGxldCBsZW4gPSBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBzdG9wIC0gcG9zIGluXG4gIHN1Yl9mdW4gdCB+cG9zIH5sZW5cbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXF1ZW5jZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLlNlcXVlbmNlLnRcblxuICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5TZXF1ZW5jZS5vZl9saXN0XG4gICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLnRvX2xpc3RcbiAgZW5kKVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZXBcblxuICB0eXBlICgnYSwgJ3MpIHQgPSAoJ2EsICdzKSBTdGVwLnQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiAnc1xuICAgIHwgWWllbGQgb2YgJ2EgKiAnc1xuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEhlYXAgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBwb3BfbWluIDogJ2EgdCAtPiAoJ2EgKiAnYSB0KSBvcHRpb25cbmVuZFxuXG5sZXQgbWVyZ2VfYWxsIChtb2R1bGUgSGVhcCA6IEhlYXApIHNlcXMgfmNvbXBhcmUgPVxuICBsZXQgbW9kdWxlIE1lcmdlX2FsbF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGhlYXAgOiAoJ2EgKiAnYSBCYXNlLlNlcXVlbmNlLnQpIEhlYXAudFxuICAgICAgOyBub3RfeWV0X2luX2hlYXAgOiAnYSBCYXNlLlNlcXVlbmNlLnQgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG4gIGVuZFxuICBpblxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OlxuICAgICAgKE1lcmdlX2FsbF9zdGF0ZS5jcmVhdGVcbiAgICAgICAgIH5oZWFwOihIZWFwLmNyZWF0ZSB+Y29tcGFyZTooQmFzZS5Db21wYXJhYmxlLmxpZnQgY29tcGFyZSB+Zjpmc3QpKVxuICAgICAgICAgfm5vdF95ZXRfaW5faGVhcDpzZXFzKVxuICAgIH5mOihmdW4geyBoZWFwOyBub3RfeWV0X2luX2hlYXAgfSAtPlxuICAgICAgbWF0Y2ggbm90X3lldF9pbl9oZWFwIHdpdGhcbiAgICAgIHwgc2VxIDo6IG5vdF95ZXRfaW5faGVhcCAtPlxuICAgICAgICAobWF0Y2ggRXhwZXJ0Lm5leHRfc3RlcCBzZXEgd2l0aFxuICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBub3RfeWV0X2luX2hlYXA7IGhlYXAgfVxuICAgICAgICAgfCBTa2lwIHNlcSAtPiBTa2lwIHsgbm90X3lldF9pbl9oZWFwID0gc2VxIDo6IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9XG4gICAgICAgICB8IFlpZWxkIChlbHQsIHNlcSkgLT4gU2tpcCB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCA9IEhlYXAuYWRkIGhlYXAgKGVsdCwgc2VxKSB9KVxuICAgICAgfCBbXSAtPlxuICAgICAgICAobWF0Y2ggSGVhcC5wb3BfbWluIGhlYXAgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgICAgIHwgU29tZSAoKGVsdCwgc2VxKSwgaGVhcCkgLT4gWWllbGQgKGVsdCwgeyBoZWFwOyBub3RfeWV0X2luX2hlYXAgPSBbIHNlcSBdIH0pKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxub3BlbiBQZXJtcy5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEJhc2UuQXJyYXlcbm1vZHVsZSBDb3JlX3NlcXVlbmNlID0gU2VxdWVuY2VcblxuaW5jbHVkZSAoXG4gIEJhc2UuQXJyYXkgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBzZXhwX2dyYW1tYXJdXG4gIGVuZClcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG5tb2R1bGUgUHJpdmF0ZSA9IEJhc2UuQXJyYXkuUHJpdmF0ZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQXJyYXlcblxuICBsZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxuICBsZXQgc2xpY2UgdCBzdGFydCBzdG9wID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG4gIDs7XG5cbiAgbGV0IG5nZXQgdCBpID0gdC4obm9ybWFsaXplIHQgaSlcbiAgbGV0IG5zZXQgdCBpIHYgPSB0Lihub3JtYWxpemUgdCBpKSA8LSB2XG5cbiAgbW9kdWxlIFNlcXVlbmNlID0gc3RydWN0XG4gICAgb3BlbiBCYXNlLkFycmF5XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBzZXQgPSBzZXRcbiAgZW5kXG5cbiAgKCogU2VlIE9DYW1sIHBlcmYgbm90ZXMgZm9yIHdoeSB0aGVzZSBhcnJheSBibGl0cyBhcmUgc3BlY2lhbCBjYXNlZCAtLSBpbiBwYXJ0aWN1bGFyLFxuICAgICB0aGUgc2VjdGlvbiBlbnRpdGxlZCBcIkZhc3QsIFNsb3cgYW5kIEluY29ycmVjdCBBcnJheSBibGl0c1wiIG9mXG4gICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEzMDIyMDAwMDIyOS9odHRwOi8vamFuZXN0cmVldC5naXRodWIuY29tL29jYW1sLXBlcmYtbm90ZXMuaHRtbCAqKVxuICBtb2R1bGUgSW50ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGludCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBtb2R1bGUgVW5zYWZlX2JsaXQgPSBzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzp0X1xuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6dF9cbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gKCA9IClcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnRfXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0X1xuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIFRlc3RfYmxpdC5NYWtlX2FuZF90ZXN0XG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gQmFzZS5GbG9hdC5lcXVhbFxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMS4gZWxzZSAwLlxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIH5sZW4gMC5cblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQZXJtaXNzaW9uZWQgPSBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHRcblxuICBpbmNsdWRlIENvbnRhaW5lci5TMV9wZXJtaXNzaW9ucyB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcbiAgaW5jbHVkZSBCbGl0LlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuXG4gIGV4dGVybmFsIGxlbmd0aCA6ICgnYSwgXykgdCAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbiAgdmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAoZmxvYXQsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaW5pdCA6IGludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvcHlfbWF0cml4XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBhcHBlbmQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29uY2F0IDogKCdhLCBbPiByZWFkIF0pIHQgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29weSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWxsIDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRpbmdfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICdiICogJ2MpXG4gICAgLT4gJ2IgKiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBtYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaXRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZGluZ19tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpXG4gICAgLT4gKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpXG4gICAgLT4gJ2IgKiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+IGluaXQ6J2IgLT4gJ2JcblxuICB2YWwgc29ydFxuICAgIDogID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiB1bml0XG5cbiAgdmFsIHN0YWJsZV9zb3J0IDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KGludCAtPiAnYSAtPiAoJ2IsIFs+IHJlYWQgXSkgdClcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cblxuICB2YWwgdHJhbnNwb3NlX2V4blxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbm9ybWFsaXplIDogKCdhLCBfKSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbmdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICgnYSBvcHRpb24sIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIG1hcDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCdhIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGQyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZm9yX2FsbDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBleGlzdHMyX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBzd2FwIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gZjooJ2EgLT4gJ2EpIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2JcbiAgdmFsIGZpbmRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiXG5cbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgcGVybXV0ZVxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnRcbiAgICAtPiA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiB1bml0XG5cbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBvcHRpb25cbiAgdmFsIHJhbmRvbV9lbGVtZW50X2V4biA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgdW56aXAgOiAoJ2EgKiAnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHNvcnRlZF9jb3B5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbGFzdCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbW9kdWxlIEludCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChpbnQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6Wz4gcmVhZCBdIHRcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6Wz4gd3JpdGUgXSB0XG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoZmxvYXQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6Wz4gcmVhZCBdIHRcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6Wz4gd3JpdGUgXSB0XG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIHZhbCBvZl9hcnJheV9pZCA6ICdhIGFycmF5IC0+ICgnYSwgWzwgcmVhZF93cml0ZSBdKSB0XG4gIHZhbCB0b19hcnJheV9pZCA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+ICdhIGFycmF5XG4gIHZhbCB0b19zZXF1ZW5jZV9pbW11dGFibGUgOiAoJ2EsIFs+IGltbXV0YWJsZSBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgdHlwZXJlcF1cblxuICBtb2R1bGUgSW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkludFxuXG4gICAgdHlwZSAtJ3Blcm1zIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5GbG9hdFxuXG4gICAgdHlwZSAtJ3Blcm1zIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gIGxldCB0b19hcnJheV9pZCA9IEZuLmlkXG4gIGxldCBvZl9hcnJheV9pZCA9IEZuLmlkXG5cbiAgaW5jbHVkZSAoVCA6IFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gIGxldCB0b19hcnJheSA9IGNvcHlcbiAgbGV0IHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA9IHRvX3NlcXVlbmNlX211dGFibGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIENvbnRhaW5lci5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiBmbG9hdCB0XG4gIHZhbCBpbml0IDogaW50IC0+IGY6KGludCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAnYSB0IHRcbiAgdmFsIGNvcHlfbWF0cml4IDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGNvbmNhdCA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBmaWxsIDogJ2EgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGluY2x1ZGUgQmxpdC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGZvbGRpbmdfbWFwIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdjIHRcbiAgdmFsIGZvbGRfbWFwIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdiICogJ2MgdFxuICB2YWwgbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBpdGVyaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYikgLT4gJ2JcbiAgdmFsIGZvbGRpbmdfbWFwaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZF9tYXBpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiAqICdjKSAtPiAnYiAqICdjIHRcbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiBpbml0OidiIC0+ICdiXG4gIHZhbCBzb3J0IDogP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIHN0YWJsZV9zb3J0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG4gIHZhbCBpc19zb3J0ZWRfc3RyaWN0bHkgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCBjb25jYXRfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgY2FydGVzaWFuX3Byb2R1Y3QgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHRyYW5zcG9zZSA6ICdhIHQgdCAtPiAnYSB0IHQgb3B0aW9uXG4gIHZhbCB0cmFuc3Bvc2VfZXhuIDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgbm9ybWFsaXplIDogJ2EgdCAtPiBpbnQgLT4gaW50XG4gIHZhbCBzbGljZSA6ICdhIHQgLT4gaW50IC0+IGludCAtPiAnYSB0XG4gIHZhbCBuZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIG5zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJfb3B0IDogJ2Egb3B0aW9uIHQgLT4gJ2EgdFxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgbWFwMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpIC0+ICdjIHRcbiAgdmFsIGZvbGQyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBpbml0OidjIC0+IGY6KCdjIC0+ICdhIC0+ICdiIC0+ICdjKSAtPiAnY1xuICB2YWwgZm9yX2FsbDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0czJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIHN3YXAgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9tYXBpIDogJ2EgbGlzdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgbWFwX2lucGxhY2UgOiAnYSB0IC0+IGY6KCdhIC0+ICdhKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX21hcGlfZXhuIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgOiAnYSB0IC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EgKiAnYSkgb3B0aW9uXG4gIHZhbCByZWR1Y2UgOiAnYSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAnYSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYVxuICB2YWwgcGVybXV0ZSA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIHJhbmRvbV9lbGVtZW50X2V4biA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgemlwIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdW56aXAgOiAoJ2EgKiAnYikgdCAtPiAnYSB0ICogJ2IgdFxuICB2YWwgc29ydGVkX2NvcHkgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdFxuICB2YWwgbGFzdCA6ICdhIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgQ29yZV9zZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbmVuZFxuXG5pbmNsdWRlIChUIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBhcnJheSkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkludFxuXG4gIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkZsb2F0XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBfIChNIDogUykgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF9cblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybSkgdCA6PSAoJ2EsICdwZXJtKSB0X1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgKCdhLCAtJ3Blcm0pIHRfID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBfIChNIDogUGVybWlzc2lvbmVkKSA6IHNpZ1xuICB0eXBlICdhIHRfXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAnYSB0XyA9ICgnYSwgcmVhZF93cml0ZSkgdFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgKCdmLCAncykgdCA9ICgnZiwgJ3MpIEJhc2UuRWl0aGVyLnQgPVxuICAgICAgfCBGaXJzdCBvZiAnZlxuICAgICAgfCBTZWNvbmQgb2YgJ3NcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHR5cGVyZXBdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRmlyc3QgeDEgLT4gRmlyc3QgKGYxIHgxKVxuICAgICAgfCBTZWNvbmQgeDIgLT4gU2Vjb25kIChmMiB4MilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLkVpdGhlclxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZDIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5laXRoZXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZWl0aGVyXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb25cblxuICAgIHR5cGUgdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udCA9XG4gICAgICB7IHBvc19mbmFtZSA6IHN0cmluZ1xuICAgICAgOyBwb3NfbG51bSA6IGludFxuICAgICAgOyBwb3NfYm9sIDogaW50XG4gICAgICA7IHBvc19jbnVtIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIGhhc2gsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmxldCB0b19zdHJpbmcgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBpcyBtYW55IHBsYWNlcyBwbGFjZXMgYXMgcG9zc2libGUuXG4gICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgSW5mb19pbnRmXG5cbm1vZHVsZSB0eXBlIFMgPSBCYXNlLkluZm8uU1xuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliLlNleHBcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubW9kdWxlIEJpbmFibGVfZXhuID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9IHQgfD4gWyVzZXhwX29mOiB0XVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBFeG4uY3JlYXRlX3NcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFeHRlbmQgKEluZm8gOiBCYXNlLkluZm8uUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZvXG5cbiAgbW9kdWxlIEludGVybmFsX3JlcHIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgQmluYWJsZV9leG4gPSBCaW5hYmxlX2V4bi5TdGFibGVcblxuICAgICAgbW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgICgqIFtzZXhwX29mX3RdIGFzIGRlZmluZWQgaGVyZSBpcyB1bnN0YWJsZTsgdGhpcyBpcyBPSyBiZWNhdXNlIHRoZXJlIGlzIG5vXG4gICAgICAgICAgICAgW3Rfb2Zfc2V4cF0uICBbc2V4cF9vZl90XSBpcyBvbmx5IHVzZWQgdG8gcHJvZHVjZSBhIHNleHAgdGhhdCBpcyBuZXZlclxuICAgICAgICAgICAgIGRlc2VyaWFsaXplZCBhcyBhIFtTb3VyY2VfY29kZV9wb3NpdGlvbl0uICopXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnNleHBfb2ZfdFxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby5JbnRlcm5hbF9yZXByLnQgPVxuICAgICAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICAgICAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICAgICAgICB8IEV4biBvZiBCaW5hYmxlX2V4bi5WMS50XG4gICAgICAgICAgfCBTZXhwIG9mIFNleHAudFxuICAgICAgICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24uVjEudCBvcHRpb25cbiAgICAgICAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICAgICAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgICAgICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgICAgICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgU3RhYmxlLlYyXG5cbiAgICBsZXQgdG9faW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG4gICAgbGV0IG9mX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgaGFzaF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludGVybmFsX3JlcHIuU3RhYmxlLlYyKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gSW5mby5JbnRlcm5hbF9yZXByLm9mX2luZm9cbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gSW5mby5JbnRlcm5hbF9yZXByLnRvX2luZm9cbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAgIChTZXhwKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEluZm8uc2V4cF9vZl90XG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IEluZm8udF9vZl9zZXhwXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gc2V4cF9vZl90XG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IHRfb2Zfc2V4cFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbmluY2x1ZGUgRXh0ZW5kIChCYXNlLkluZm8pXG5cbiIsImluY2x1ZGUgQmFzZS5FcnJvclxuaW5jbHVkZSBJbmZvLkV4dGVuZCAoQmFzZS5FcnJvcilcblxubGV0IGZhaWx3aXRocyA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICByYWlzZSAoY3JlYXRlID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBmYWlsd2l0aHAgP3N0cmljdCBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICByYWlzZSAoY3JlYXRlID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5Pcl9lcnJvclxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZ193aXRoX3VuaXRfZXhwZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBJT19ydW4gPSBCYXNlLk9yX2Vycm9yXG5cbiAgbW9kdWxlIElPX2ZsdXNoID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWcuSU9fZmx1c2hcblxuICAgIGxldCB0b19ydW4gdCA9IEJhc2UuT3JfZXJyb3IucmV0dXJuIHRcbiAgZW5kXG5cbiAgbGV0IHJ1biBmID0gb2tfZXhuIChmICgpKVxuICBsZXQgc2FuaXRpemUgcyA9IHNcbiAgbGV0IGZsdXNoZWQgKCkgPSB0cnVlXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuZW5kXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPID0gQmFzZS5Pcl9lcnJvclxuICBtb2R1bGUgSU9fcnVuID0gSU9cblxuICBtb2R1bGUgSU9fZmx1c2ggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIElPXG5cbiAgICBsZXQgdG9fcnVuIHQgPSB0XG4gIGVuZFxuXG4gIGxldCBydW4gZiA9IG9rX2V4biAoZiAoKSlcbiAgbGV0IGZsdXNoZWQgKCkgPSB0cnVlXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICBsZXQgc2FuaXRpemUgcyA9IHNcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYxLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYyLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja19pbnRmXG5vcGVuIEJhc2VfcXVpY2tjaGVja1xubW9kdWxlIEZsb2F0ID0gQmFzZS5GbG9hdFxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIE9wdGlvbiA9IEJhc2UuT3B0aW9uXG5cbm1vZHVsZSBQb2x5bW9ycGhpY190eXBlcyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHZhcmlhbnQyID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjKSB2YXJpYW50MyA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB2YXJpYW50NCA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHZhcmlhbnQ1ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB2YXJpYW50NiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICB8IGBGIG9mICdmXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYikgdHVwbGUyID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjKSB0dXBsZTMgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHR1cGxlNCA9ICdhICogJ2IgKiAnYyAqICdkIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdHVwbGU1ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHR1cGxlNiA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgKiAnZlxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAncikgZm4yID0gJ2EgLT4gJ2IgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgJ3IpIGZuMyA9ICdhIC0+ICdiIC0+ICdjIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgJ3IpIGZuNCA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsICdyKSBmbjUgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnclxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAtJ2YsICdyKSBmbjYgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnZiAtPiAnclxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuZW5kXG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG5cbiAgbGV0IG9mX2hhc2ggKHR5cGUgYSkgKG1vZHVsZSBNIDogRGVyaXZpbmdfaGFzaCB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBvZl9oYXNoX2ZvbGQgTS5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2XG4gIGxldCBvZl9wcmVkaWNhdGUgYSBiIH5mID0gdW5tYXAgKHZhcmlhbnQyIGEgYikgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIGBBIHggZWxzZSBgQiB4KVxuICBsZXQgc2luZ2xldG9uICgpID0gb3BhcXVlXG4gIGxldCBkb3VibGV0b24gZiA9IG9mX3ByZWRpY2F0ZSAoc2luZ2xldG9uICgpKSAoc2luZ2xldG9uICgpKSB+ZlxuICBsZXQgZW51bSBfIH5mID0gdW5tYXAgaW50IH5mXG5cbiAgbGV0IG9mX2xpc3QgbGlzdCB+ZXF1YWwgPVxuICAgIGxldCBmIHggPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kaSBsaXN0IH5mOihmdW4gXyB5IC0+IGVxdWFsIHggeSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiUXVpY2tjaGVjay5PYnNlcnZlci5vZl9saXN0OiB2YWx1ZSBub3QgZm91bmRcIlxuICAgICAgfCBTb21lIChpLCBfKSAtPiBpXG4gICAgaW5cbiAgICBlbnVtIChMaXN0Lmxlbmd0aCBsaXN0KSB+ZlxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZiAoKSkgeCB+c2l6ZSB+aGFzaClcblxuICBsZXQgY29tcGFyaXNvbiB+Y29tcGFyZSB+ZXEgfmx0IH5ndCA9XG4gICAgdW5tYXBcbiAgICAgICh2YXJpYW50MyBsdCAoc2luZ2xldG9uICgpKSBndClcbiAgICAgIH5mOihmdW4geCAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmUgeCBlcSBpblxuICAgICAgICBpZiBjIDwgMCB0aGVuIGBBIHggZWxzZSBpZiBjID4gMCB0aGVuIGBDIHggZWxzZSBgQiB4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgb3BlbiBMZXRfc3ludGF4XG5cbiAgbGV0IHNpbmdsZXRvbiA9IHJldHVyblxuXG4gIGxldCBkb3VibGV0b24geCB5ID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gaWYgU3BsaXR0YWJsZV9yYW5kb20uYm9vbCByYW5kb20gdGhlbiB4IGVsc2UgeSlcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmICgpKSB+c2l6ZSB+cmFuZG9tKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSB+cCBzZXEgPVxuICAgIGlmIEZsb2F0LiggPD0gKSBwIDAuIHx8IEZsb2F0LiggPiApIHAgMS5cbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHByb2JhYmlsaXR5IFslZl0gb3V0IG9mIGJvdW5kc1wiIHApO1xuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxXG4gICAgICB+aW5pdDooKVxuICAgICAgfmZpbmlzaDooZnVuICgpIC0+IGZhaWx3aXRoIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiByYW4gb3V0IG9mIHZhbHVlc1wiKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIC0+IHdlaWdodGVkX3VuaW9uIFsgcCwgc2luZ2xldG9uIHg7IDEuIC0uIHAsIG9mX2Z1biBrIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBib3VuZGVkX2dlb21ldHJpYyB+cCB+bWF4aW11bSBpbml0ID1cbiAgICBpZiBpbml0ID0gbWF4aW11bVxuICAgIHRoZW4gc2luZ2xldG9uIG1heGltdW1cbiAgICBlbHNlXG4gICAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgICBbIHAsIHNpbmdsZXRvbiBpbml0XG4gICAgICAgIDsgMS4gLS4gcCwgb2ZfZnVuIChmdW4gKCkgLT4gYm91bmRlZF9nZW9tZXRyaWMgfnAgfm1heGltdW0gKGluaXQgKyAxKSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCBnZW9tZXRyaWMgfnAgaW5pdCA9IGJvdW5kZWRfZ2VvbWV0cmljIH5wIH5tYXhpbXVtOkludC5tYXhfdmFsdWUgaW5pdFxuICBsZXQgc21hbGxfbm9uX25lZ2F0aXZlX2ludCA9IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50XG4gIGxldCBzbWFsbF9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnRcbiAgbGV0IGxpc3Rfd2l0aF9sZW5ndGggbGVuZ3RoIHQgPSBsaXN0X3dpdGhfbGVuZ3RoIHQgfmxlbmd0aFxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTZcbiAgbGV0IGZuMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMlxuICBsZXQgZm4zID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4zXG4gIGxldCBmbjQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjRcbiAgbGV0IGZuNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNVxuICBsZXQgZm42ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm42XG5cbiAgbGV0IGNvbXBhcmVfZm4gZG9tID1cbiAgICBmbiBkb20gaW50ID4+fCBmdW4gZ2V0X2luZGV4IHggeSAtPiBbJWNvbXBhcmU6IGludF0gKGdldF9pbmRleCB4KSAoZ2V0X2luZGV4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsX2ZuIGRvbSA9IGNvbXBhcmVfZm4gZG9tID4+fCBmdW4gY21wIHggeSAtPiBJbnQuKCA9ICkgKGNtcCB4IHkpIDBcbmVuZFxuXG5tb2R1bGUgU2hyaW5rZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaHJpbmtlclxuXG4gIGxldCBlbXB0eSAoKSA9IGF0b21pY1xuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNlxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBHZW5lcmF0b3JcbiAgZW5kXG5cbiAgaW5jbHVkZSBHZW5lcmF0b3IuTW9uYWRfaW5maXhcblxuICBsZXQgcmV0dXJuID0gR2VuZXJhdG9yLnJldHVyblxuZW5kXG5cbm1vZHVsZSBDb25maWd1cmUgKENvbmZpZyA6IFF1aWNrY2hlY2tfY29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIGxldCBub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG4gIGxldCByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2Ugbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0ciAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFslaGFzaDogc3RyaW5nXSBzdHIpXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2VlZCBzZWVkIDogVGVzdC5Db25maWcuU2VlZC50ID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IE5vbmRldGVybWluaXN0aWNcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBEZXRlcm1pbmlzdGljIHN0cmluZ1xuICA7O1xuXG4gIGxldCBtYWtlX3Nocmlua19jb3VudCA9IGZ1bmN0aW9uXG4gICAgfCBgRXhoYXVzdGl2ZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBgTGltaXQgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgOiBUZXN0LkNvbmZpZy50ID1cbiAgICB7IHNlZWQgPSBtYWtlX3NlZWQgKE9wdGlvbi52YWx1ZSBzZWVkIH5kZWZhdWx0OmRlZmF1bHRfc2VlZClcbiAgICA7IHNpemVzID0gT3B0aW9uLnZhbHVlIHNpemVzIH5kZWZhdWx0OmRlZmF1bHRfc2l6ZXNcbiAgICA7IHRlc3RfY291bnQgPSBPcHRpb24udmFsdWUgdHJpYWxzIH5kZWZhdWx0OmRlZmF1bHRfdHJpYWxfY291bnRcbiAgICA7IHNocmlua19jb3VudCA9XG4gICAgICAgIG1ha2Vfc2hyaW5rX2NvdW50IChPcHRpb24udmFsdWUgc2hyaW5rX2F0dGVtcHRzIH5kZWZhdWx0OmRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzKVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV90ZXN0X20gKHR5cGUgYSkgfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgOiAobW9kdWxlIFRlc3QuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IE9wdGlvbi52YWx1ZSBzaHJpbmtlciB+ZGVmYXVsdDpTaHJpbmtlci5hdG9taWNcbiAgICAgIGxldCBzZXhwX29mX3QgPSBPcHRpb24udmFsdWUgc2V4cF9vZiB+ZGVmYXVsdDpbJXNleHBfb2Y6IF9dXG4gICAgZW5kXG4gICAgaW5cbiAgICAobW9kdWxlIE0pXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV92YWx1ZSA/KHNlZWQgPSBkZWZhdWx0X3NlZWQpID8oc2l6ZSA9IDMwKSBnZW4gPVxuICAgIGxldCByYW5kb20gPSByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkIGluXG4gICAgR2VuZXJhdG9yLmdlbmVyYXRlIGdlbiB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV9zZXF1ZW5jZSA/c2VlZCA/c2l6ZXMgZ2VuID1cbiAgICBsZXQgY29uZmlnID1cbiAgICAgIG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzOihTb21lIEludC5tYXhfdmFsdWUpIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZVxuICAgIGluXG4gICAgbGV0IHJldHVybiA9IHJlZiBTZXF1ZW5jZS5lbXB0eSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gcmV0dXJuIDo9IHNlcXVlbmNlKTtcbiAgICAhcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP3NlZWQgP3NpemVzID90cmlhbHMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0czpOb25lIGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiBTZXF1ZW5jZS5pdGVyIHNlcXVlbmNlIH5mKVxuICA7O1xuXG4gIGxldCB0ZXN0ID9zZWVkID9zaXplcyA/dHJpYWxzID9zaHJpbmtlciA/c2hyaW5rX2F0dGVtcHRzID9zZXhwX29mID9leGFtcGxlcyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW5fZXhuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X29yX2Vycm9yXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/dHJpYWxzXG4gICAgICAgID9zaHJpbmtlclxuICAgICAgICA/c2hyaW5rX2F0dGVtcHRzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgID9leGFtcGxlc1xuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH50cmlhbHNcbiAgICAgICAgfmRpc3RpbmN0X3ZhbHVlc1xuICAgICAgICB+Y29tcGFyZVxuICAgID1cbiAgICBsZXQgbW9kdWxlIFMgPVxuICAgICAgQ2FtbC5TZXQuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGtleVxuXG4gICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgbGV0IGZhaWwgc2V0ID1cbiAgICAgIGxldCBleHBlY3RfY291bnQgPSBkaXN0aW5jdF92YWx1ZXMgaW5cbiAgICAgIGxldCBhY3R1YWxfY291bnQgPSBTLmNhcmRpbmFsIHNldCBpblxuICAgICAgbGV0IHZhbHVlcyA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgc2V4cF9vZl9lbHQgLT4gU29tZSBbJXNleHAgKFMuZWxlbWVudHMgc2V0IDogZWx0IGxpc3QpXVxuICAgICAgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnN1ZmZpY2llbnQgZGlzdGluY3QgdmFsdWVzXCJcbiAgICAgICAgICAgICh0cmlhbHMgOiBpbnQpXG4gICAgICAgICAgICAoZXhwZWN0X2NvdW50IDogaW50KVxuICAgICAgICAgICAgKGFjdHVhbF9jb3VudCA6IGludClcbiAgICAgICAgICAgICh2YWx1ZXMgOiAoQmFzZS5TZXhwLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgICBpblxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IHNldCA9IHJlZiBTLmVtcHR5IGluXG4gICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBzZXQgOj0gUy5hZGQgZWx0ICFzZXQ7XG4gICAgICAgIGlmIFMuY2FyZGluYWwgIXNldCA+PSBkaXN0aW5jdF92YWx1ZXMgdGhlbiByLnJldHVybiAoKSk7XG4gICAgICBmYWlsICFzZXQpXG4gIDs7XG5cbiAgbGV0IHRlc3RfY2FuX2dlbmVyYXRlXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/KHRyaWFscyA9IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50KVxuICAgICAgICA/c2V4cF9vZlxuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IHIgPSByZWYgW10gaW5cbiAgICBsZXQgZl9hbmRfZW5xdWV1ZSByZXR1cm4geCA9IGlmIGYgeCB0aGVuIHJldHVybiBgQ2FuX2dlbmVyYXRlIGVsc2UgciA6PSB4IDo6ICFyIGluXG4gICAgbWF0Y2hcbiAgICAgIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gcmV0dXJuIC0+XG4gICAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmX2FuZF9lbnF1ZXVlIHJldHVybi5yZXR1cm4pO1xuICAgICAgICBgQ2Fubm90X2dlbmVyYXRlKVxuICAgIHdpdGhcbiAgICB8IGBDYW5fZ2VuZXJhdGUgLT4gKClcbiAgICB8IGBDYW5ub3RfZ2VuZXJhdGUgLT5cbiAgICAgIChtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW5ub3QgZ2VuZXJhdGVcIlxuICAgICAgIHwgU29tZSBzZXhwX29mX3ZhbHVlIC0+XG4gICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImNhbm5vdCBnZW5lcmF0ZVwiIH5hdHRlbXB0czooIXIgOiB2YWx1ZSBsaXN0KV0pXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb25maWd1cmUgKHN0cnVjdFxuICAgIGxldCBkZWZhdWx0X3NlZWQgPSBgRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuXG4gICAgbGV0IGRlZmF1bHRfdHJpYWxfY291bnQgPVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAxMF8wMDBcbiAgICAgIHwgVzMyIC0+IDFfMDAwXG4gICAgOztcblxuICAgIGxldCBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudCA9IDEwXzAwMFxuICAgIGxldCBkZWZhdWx0X3Nocmlua19hdHRlbXB0cyA9IGBMaW1pdCAxMDAwXG5cbiAgICBsZXQgZGVmYXVsdF9zaXplcyA9XG4gICAgICBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgUzEgPSBTMVxubW9kdWxlIHR5cGUgUzIgPSBTMlxubW9kdWxlIHR5cGUgU19pbnQgPSBTX2ludFxubW9kdWxlIHR5cGUgU19yYW5nZSA9IFNfcmFuZ2VcblxudHlwZSBub25yZWMgc2VlZCA9IHNlZWRcbnR5cGUgbm9ucmVjIHNocmlua19hdHRlbXB0cyA9IHNocmlua19hdHRlbXB0c1xuXG5tb2R1bGUgdHlwZSBRdWlja2NoZWNrX2NvbmZpZyA9IFF1aWNrY2hlY2tfY29uZmlnXG5tb2R1bGUgdHlwZSBRdWlja2NoZWNrX2NvbmZpZ3VyZWQgPSBRdWlja2NoZWNrX2NvbmZpZ3VyZWRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVHlwZXJlcF9saWIuU3RkXG5pbmNsdWRlIEJhc2UuTGlzdFxuXG50eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIGluY2x1ZGUgQXNzb2NcblxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EgKiAnYikgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IGNvbXBhcmUgKHR5cGUgYSBiKSBjb21wYXJlX2EgY29tcGFyZV9iID0gWyVjb21wYXJlOiAoYSAqIGIpIGxpc3RdXG5lbmRcblxubGV0IHRvX3N0cmluZyB+ZiB0ID1cbiAgU2V4cGxpYi5TZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4geCAtPiBTZXhwbGliLlNleHAuQXRvbSB4KSAobWFwIHQgfmYpKVxuOztcblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0XG5sZXQgZ2VuX25vbl9lbXB0eSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9ub25fZW1wdHlcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW5ndGggcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfd2l0aF9sZW5ndGggcXVpY2tjaGVja19nZW5lcmF0b3Igfmxlbmd0aFxuOztcblxubGV0IGdlbl9maWx0ZXJlZCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9maWx0ZXJlZFxubGV0IGdlbl9wZXJtdXRhdGlvbnMgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfcGVybXV0YXRpb25zXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5saXN0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5saXN0XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja2FibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udlxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZCA9IENvbnZfZmlsdGVyZWRcbm1vZHVsZSB0eXBlIENvbnYxID0gQ29udjFcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQxID0gQ29udl9maWx0ZXJlZDFcbm1vZHVsZSB0eXBlIFMgPSBRdWlja2NoZWNrLlNcbm1vZHVsZSB0eXBlIFMxID0gUXVpY2tjaGVjay5TMVxubW9kdWxlIHR5cGUgUzIgPSBRdWlja2NoZWNrLlMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFF1aWNrY2hlY2suU19pbnRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnYgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDogUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPVxuc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZTFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnYxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZDFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2h0YmxfaW50ZlxubW9kdWxlIEhhc2hhYmxlID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBIYXNodGJsX2ludGYuTWVyZ2VfaW50b19hY3Rpb25cbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgQ3JlYXRvcnMgPSBIYXNodGJsLkNyZWF0b3JzXG5cbmluY2x1ZGUgKFxuICBIYXNodGJsIDpcbiAgc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEJhc2UuSGFzaHRibC5TX3dpdGhvdXRfc3VibW9kdWxlcyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXBcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIH5jb21iaW5lXG4gICAgICBsXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibC5Qb2x5XG5cbiAgbGV0IHZhbGlkYXRlID0gdmFsaWRhdGVcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGYzZTQ0NWMtNDk5Mi0xMWU2LWEyNzktMzcwM2JlMzExZTdiXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiQ29yZV9oYXNodGJsLmJpbl9yZWFkX3RfOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuXG4gIHR5cGUga2V5ID0gVC5LZXkudFxuICB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2EgdCA9IChULktleS50LCAnYSkgaGFzaHRibFxuICB0eXBlICgnYSwgJ2IpIHRfXyA9IChULktleS50LCAnYikgaGFzaHRibFxuICB0eXBlICdhIGtleV8gPSBULktleS50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULktleS50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgKFxuICAgIEhhc2h0YmwgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZVxuICAgICAgICBIYXNodGJsLkFjY2Vzc29yc1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X19cbiAgICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlfXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgSGFzaHRibC5NdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X18gd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlfXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIGhhc2h0YmxcbiAgICBlbmQpXG5cbiAgbGV0IHZhbGlkYXRlID0gdmFsaWRhdGVcbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IHQgPSBpbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9rZXkgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gUG9seS5zZXhwX29mX3QgVC5LZXkuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuS2V5XG4gICAgICAgIGluY2x1ZGUgS2V5J1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gS2V5LnQgKiAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmYWJhYjBhLTQ5OTItMTFlNi04Y2NhLTliYTJjNDY4NmQ5ZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJIYXNodGJsLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBLZXkudF1cbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChLZXkgOiBLZXlfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICBsZXQgaGFzaGFibGUgPVxuICAgICAgeyBIYXNoYWJsZS5oYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChLZXkgOiBLZXlfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEtleSlcbmVuZFxuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIEZvcl9kZXJpdmluZyA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ID0gc3RydWN0XG4gIGluY2x1ZGUgKEhhc2h0YmwgOiBIYXNodGJsLkZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuXG4gIG1vZHVsZSB0eXBlIE1fcXVpY2tjaGVjayA9IE1fcXVpY2tjaGVja1xuXG4gIGxldCBvZl9hbGlzdF9vcHRpb24gbSBhbGlzdCA9IFJlc3VsdC5vayAob2ZfYWxpc3Rfb3JfZXJyb3IgbSBhbGlzdClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19vYnNlcnZlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5vYnNlcnZlcjogKEtleS50ICogZGF0YSkgTGlzdC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2FsaXN0XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX3Nocmlua2VyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLnNocmlua2VyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAgICB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgICAgICAgIH5mX2ludmVyc2U6dG9fYWxpc3RcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5pbmNsdWRlIEJhc2UuSGFzaF9zZXRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEhhc2h0YmwuS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBIYXNodGJsLktleVxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBIYXNodGJsLktleV9iaW5hYmxlXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBULkVsdC50XG4gIHR5cGUgbm9ucmVjIHQgPSBlbHQgdFxuXG4gIGxldCBlcXVhbCA9IGVxdWFsXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULkVsdC50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gUG9seS5zZXhwX29mX3QgVC5FbHQuc2V4cF9vZl90IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULkVsdFxuICAgICAgICBpbmNsdWRlIFhcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYWQzODE2NzItNDk5Mi0xMWU2LTllMzYtYjc2ZGM4Y2Q0NjZmXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2hfc2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCB2ID0gbmV4dCAoKSBpblxuICAgICAgICAgIGFkZCB0IHZcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfYmluYWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoRWx0IDogRWx0X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgbGV0IGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEVsdCA6IEVsdCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5lbmRcblxubGV0IGhhc2hhYmxlID0gUHJpdmF0ZS5oYXNoYWJsZVxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiBLZXkudCBMaXN0MC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2xpc3Rcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSkgfmZfaW52ZXJzZTp0b19saXN0XG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IU1hcH1bTWFwXX0uIFNlZSB0aG9zZSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uXG4gICAgb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezEsMiwzLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW01hcF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMzXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cblxub3BlbiEgSW1wb3J0XG5vcGVuIFRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcbm1vZHVsZSBNYXAgPSBCYXNlLk1hcFxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IE1hcC5Pcl9kdXBsaWNhdGVcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXAuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBNYXAuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXAuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgVHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcblxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9oYXNoYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQpIG9wdGlvbnNcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBrZXkgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnMxXG5cbiAgdmFsIGtleV9zZXQgOiBfIHQgLT4gKGtleSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50XG4gIHZhbCB2YWxpZGF0ZSA6IG5hbWU6KGtleSAtPiBzdHJpbmcpIC0+ICdhIFZhbGlkYXRlLmNoZWNrIC0+ICdhIHQgVmFsaWRhdGUuY2hlY2tcbiAgdmFsIHZhbGlkYXRlaSA6IG5hbWU6KGtleSAtPiBzdHJpbmcpIC0+IChrZXkgKiAnYSkgVmFsaWRhdGUuY2hlY2sgLT4gJ2EgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAga2V5IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICBrZXkgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczJcblxuICB2YWwga2V5X3NldCA6ICgnaywgJ3YpIHQgLT4gKCdrLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnRcbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooJ2EgLT4gc3RyaW5nKSAtPiAnYiBWYWxpZGF0ZS5jaGVjayAtPiAoJ2EsICdiKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdhIC0+IHN0cmluZylcbiAgICAtPiAoJ2EgKiAnYikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2EsICdiKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndikgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczNcblxuICB2YWwga2V5X3NldCA6ICgnaywgXywgJ2NtcCkgdCAtPiAoJ2ssICdjbXApIEJhc2UuU2V0LnRcbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooJ2EgLT4gc3RyaW5nKSAtPiAnYiBWYWxpZGF0ZS5jaGVjayAtPiAoJ2EsICdiLCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdhIC0+IHN0cmluZylcbiAgICAtPiAoJ2EgKiAnYikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2EsICdiLCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndiwgXykgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIHZhbCBrZXlfc2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgXywgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ2NtcCkgQmFzZS5TZXQudFxuXG4gIHZhbCB2YWxpZGF0ZSA6IG5hbWU6KCdhIC0+IHN0cmluZykgLT4gJ2IgVmFsaWRhdGUuY2hlY2sgLT4gKCdhLCAnYiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayAtPiBzdHJpbmcpXG4gICAgLT4gKCdrICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzIChNIDogQWNjZXNzb3JzMykgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaHRibF9leG4gOiAoJ2ssICdjbXAsICgnayBrZXksICd2KSBIYXNodGJsLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbU2V0LnRdLiAqKVxuICB2YWwgb2Zfa2V5X3NldCA6ICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50IC0+IGY6KCdrIGtleSAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzMVxuXG4gIHZhbCBvZl9oYXNodGJsX2V4biA6IChrZXksICdhKSBIYXNodGJsLnQgLT4gJ2EgdFxuICB2YWwgb2Zfa2V5X3NldCA6IChrZXksIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCAtPiBmOihrZXkgLT4gJ3YpIC0+ICd2IHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICBrZXkgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnMyXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuIDogKCdhLCAnYikgSGFzaHRibC50IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2tleV9zZXQgOiAoJ2EsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCAtPiBmOignYSAtPiAnYikgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnYikgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IpIEhhc2h0YmwudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfa2V5X3NldCA6ICgnYSwgJ2NtcCkgQmFzZS5TZXQudCAtPiBmOignYSAtPiAnYikgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gJ2IgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMVxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUga2V5IDo9IGtleVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczJcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChLZXkgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICdhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gICAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0XG4gICAgICB3aXRoIHR5cGUga2V5IDo9IEtleS50XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgICAgKEsgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICB0eXBlICsnYSB0ID0gKEtleS50LCAnYSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gKEtleS50LCAnYSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlIGtleSA6PSBLZXkudFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IEJpbmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleSA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIFNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5NYXAuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5NYXAuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2MpIEtleV9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50IC0+IEJpbl9wcm90LlNoYXBlLnRcblxuICB2YWwgYmluX3NpemVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5TaXplLnNpemVyXG5cbiAgdmFsIGJpbl93cml0ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG5cbiAgdmFsIGJpbl9yZWFkX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gTWFwX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IChpbnQsIHN0cmluZykgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDAwNjc0YmU5ZmU4ZGZlOWU5YWQ0NzYwNjdkN2Q4MTAxIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IG1hcCAoaywgZGlmZikgfmYxIH5mMiA9XG4gICAgICAgIGxldCBrID0gZjEgayBpblxuICAgICAgICBsZXQgZGlmZiA9XG4gICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgfCBgTGVmdCB2IC0+IGBMZWZ0IChmMiB2KVxuICAgICAgICAgIHwgYFJpZ2h0IHYgLT4gYFJpZ2h0IChmMiB2KVxuICAgICAgICAgIHwgYFVuZXF1YWwgKHYxLCB2MikgLT4gYFVuZXF1YWwgKGYyIHYxLCBmMiB2MilcbiAgICAgICAgaW5cbiAgICAgICAgaywgZGlmZlxuICAgICAgOztcblxuICAgICAgbGV0IG1hcF9kYXRhIHQgfmYgPSBtYXAgdCB+ZjE6Rm4uaWQgfmYyOmZcblxuICAgICAgbGV0IGxlZnQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYExlZnQgeCB8IGBVbmVxdWFsICh4LCBfKSAtPiBTb21lIHhcbiAgICAgICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmlnaHQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gQmFzZS5NYXAuTWVyZ2VfZWxlbWVudFxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgb2JzX3RyZWUga19vYnMgdl9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RyZWUga19vYnMgdl9vYnNcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXAuVXNpbmdfY29tcGFyYXRvclxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaTooSGFzaHRibC5pdGVyaSBoYXNodGJsKSB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5mYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1hcC5vZl9oYXNodGJsX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGtleVxuICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCB0cmVlX29mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIHRvX3RyZWUgKG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXQgfmNvbXBhcmF0b3IgdCA9XG4gICAgQmFzZS5TZXQuVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKExpc3QudG9fYXJyYXkgKGtleXMgdCkpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0ID0ga2V5X3NldCB+Y29tcGFyYXRvciAob2ZfdHJlZSB+Y29tcGFyYXRvciB0KVxuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPVxuICAgIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yOihCYXNlLlNldC5jb21wYXJhdG9yIGtleV9zZXQpXG4gICAgICAoQXJyYXkubWFwIChCYXNlLlNldC50b19hcnJheSBrZXlfc2V0KSB+ZjooZnVuIGtleSAtPiBrZXksIGYga2V5KSlcbiAgOztcblxuICBsZXQgdHJlZV9vZl9rZXlfc2V0IGtleV9zZXQgfmYgPSB0b190cmVlIChvZl9rZXlfc2V0IGtleV9zZXQgfmYpXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBNYXAuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBNYXAuQWNjZXNzb3JzM1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTWFwLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudClcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBxdWlja2NoZWNrX29ic2VydmVyIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBxdWlja2NoZWNrX3Nocmlua2VyIGsgdlxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0IHQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KVxuZW5kXG5cbmxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KSB0XG5sZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfa2V5X3NldFxubGV0IGhhc2hfZm9sZF9kaXJlY3QgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3RcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgY29tcGFyYXRvcl9zID0gQmFzZS5NYXAuY29tcGFyYXRvcl9zXG5cbnR5cGUgJ2sga2V5ID0gJ2tcbnR5cGUgJ2MgY21wID0gJ2NcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYXBcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfdHJlZSBtID0gTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sga2V5XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBjbXBcblxuICBpbmNsdWRlXG4gICAgTWFwLkFjY2Vzc29yczNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuZW5kKVxuXG5tb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuXG5sZXQgZmluZF9vcl9lcnJvciB0IGtleSA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IFNvbWUgZGF0YSAtPiBPayBkYXRhXG4gIHwgTm9uZSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3JfcyBbJW1lc3NhZ2UgXCJrZXkgbm90IGZvdW5kXCIgfl86KGtleSA6IGtleSldXG47O1xuXG5sZXQgbWVyZ2Vfc2tld2VkID0gTWFwLm1lcmdlX3NrZXdlZFxubGV0IG9mX2hhc2h0YmxfZXhuIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRfID0gKCdhIEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlID0gKCdhLCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgPSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICB2YWwgdF9vZl9zZXhwXG4gICAgOiAgKEJhc2UuU2V4cC50IC0+ICdhIEtleS50KVxuICAgIC0+IChCYXNlLlNleHAudCAtPiAnYilcbiAgICAtPiBCYXNlLlNleHAudFxuICAgIC0+ICgnYSwgJ2IsIF8pIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgPSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICBsZXQgY29tcGFyYXRvciA9IEtleS5jb21wYXJhdG9yXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEtleSlcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBvZl90cmVlIHRyZWUgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgc2luZ2xldG9uIGsgdiA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5ID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mXG4gIGxldCBvZl9hbGlzdCBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3RfZXhuIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2hhc2h0YmxfZXhuIGhhc2h0YmwgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmxcbiAgbGV0IG9mX2FsaXN0X211bHRpIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdFxuXG4gIGxldCBvZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmZcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpXG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0IGtleV9zZXQgfmZcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5fayBnZW5fdiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBnZW5fayBnZW5fdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEtleSA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIG9wZW4gVHJlZVxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIGEgYiBjID0gdF9vZl9zZXhwX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZW1wdHkgPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gYSA9IHNpbmdsZXRvbiBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gb2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gb2Zfc2VxdWVuY2VfZXhuIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBvZl9zZXF1ZW5jZV9tdWx0aSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPSBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0IGEgPSBvZl9hbGlzdCBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gb2ZfYWxpc3Rfb3JfZXJyb3IgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBvZl9hbGlzdF9leG4gYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gb2ZfYWxpc3RfbXVsdGkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IG9mX2FsaXN0X3JlZHVjZSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBvZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IGludmFyaWFudHMgYSA9IGludmFyaWFudHMgYSB+Y29tcGFyYXRvclxuICBsZXQgaXNfZW1wdHkgYSA9IGlzX2VtcHR5IGFcbiAgbGV0IGxlbmd0aCBhID0gbGVuZ3RoIGFcbiAgbGV0IHNldCBhIH5rZXkgfmRhdGEgPSBzZXQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgYSB+a2V5IH5kYXRhID0gYWRkIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX2V4biBhIH5rZXkgfmRhdGEgPSBhZGRfZXhuIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX211bHRpIGEgfmtleSB+ZGF0YSA9IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZV9tdWx0aSBhIGIgPSByZW1vdmVfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX211bHRpIGEgYiA9IGZpbmRfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBjaGFuZ2UgYSBiIH5mID0gY2hhbmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdXBkYXRlIGEgYiB+ZiA9IHVwZGF0ZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfZXhuIGEgYiA9IGZpbmRfZXhuIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZCBhIGIgPSBmaW5kIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlIGEgYiA9IHJlbW92ZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSBhIGIgPSBtZW0gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBpdGVyaV91bnRpbCA9IGl0ZXJpX3VudGlsXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBpdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBmb2xkX3VudGlsID0gZm9sZF91bnRpbFxuICBsZXQgZm9sZF9yaWdodCA9IGZvbGRfcmlnaHRcbiAgbGV0IGZvbGQyIGEgYiB+aW5pdCB+ZiA9IGZvbGQyIGEgYiB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX2tleXMgYSB+ZiA9IGZpbHRlcl9rZXlzIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlciBhIH5mID0gZmlsdGVyIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcmkgYSB+ZiA9IGZpbHRlcmkgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gZmlsdGVyX21hcCBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwaSBhIH5mID0gZmlsdGVyX21hcGkgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID0gY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgYSBiIGMgPSBjb21wYXJlX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZXF1YWwgYSBiIGMgPSBlcXVhbCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgPSBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmNvbXBhcmF0b3JcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5mIH5pbml0IH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG1lcmdlIGEgYiB+ZiA9IG1lcmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSA9IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgfmNvbXBhcmF0b3JcbiAgbGV0IG1pbl9lbHQgPSBtaW5fZWx0XG4gIGxldCBtaW5fZWx0X2V4biA9IG1pbl9lbHRfZXhuXG4gIGxldCBtYXhfZWx0ID0gbWF4X2VsdFxuICBsZXQgbWF4X2VsdF9leG4gPSBtYXhfZWx0X2V4blxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgc3BsaXQgYSBiID0gc3BsaXQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPSBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4ID0gcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmF0b3JcbiAgbGV0IGNsb3Nlc3Rfa2V5IGEgYiBjID0gY2xvc2VzdF9rZXkgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IG50aCA9IG50aFxuICBsZXQgbnRoX2V4biA9IG50aF9leG5cbiAgbGV0IHJhbmsgYSBiID0gcmFuayBhIGIgfmNvbXBhcmF0b3JcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvciB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvciB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgOztcblxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0X29mX3RyZWUgfmNvbXBhcmF0b3IgdFxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXlfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEtleSlcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEtleV9TMSlcblxuICB0eXBlICsndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IHNleHBfb2ZfdCBLZXkuc2V4cF9vZl90IHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBtYXAgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3IgaW5cbiAgaWYgaW52YXJpYW50cyBtYXBcbiAgdGhlbiBtYXBcbiAgZWxzZSAoXG4gICAgKCogVGhlIGludmFyaWFudHMgYXJlIGJyb2tlbiwgYnV0IHdlIGNhbiBzdGlsbCB0cmF2ZXJzZSB0aGUgc3RydWN0dXJlLiAqKVxuICAgIG1hdGNoIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpOihpdGVyaSBtYXApIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBfa2V5IC0+IGZhaWx3aXRoIFwiTWFwLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIG1hcFwiKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDcmVhdG9ycyAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIG1hcFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gY21wdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNtcHYgdDEgdDJcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gICAgICB0eXBlICgnYSwgJ2IpIGVsID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI3ZDdiMWEwLTQ5OTItMTFlNi04YTMyLWJiYjIyMWZhMDI1Y1wiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5NYXBcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAoJ2ssICsndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gS2V5X2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IEtleV9iaW5hYmxlX2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IEtleV9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChLZXkgOiBLZXlfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLZXkudCwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlICd2IGVsID0gS2V5LnQgKiAndiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImRmYjMwMGY4LTQ5OTItMTFlNi05YzE1LTczYTJhYzZiODE1Y1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpLZXkuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIENyZWF0b3JzIChLZXlfUzEpXG5cbiAgdHlwZSBrZXkgPSBLZXkudFxuICB0eXBlICgnYSwgJ2IsICdjKSBtYXAgPSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICd2IHQgPSAoa2V5LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXknIDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90ICh0eXBlIGEpIGhhc2hfZm9sZF9kYXRhIHN0YXRlICh0IDogYSB0KSA9XG4gICAgICBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgS2V5Jy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5X3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuXG4gIG1vZHVsZSBfID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlXG4gICAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfYmluX3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1hcC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IGtcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X2dlbmVyYXRvclxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEtleSkgS2V5LnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHZfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX29ic2VydmVyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IGtcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X29ic2VydmVyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgS2V5LnF1aWNrY2hlY2tfb2JzZXJ2ZXIgdl9vYnNlcnZlclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19zaHJpbmtlcl9tXG4gICAgICAgICAgd2l0aCB0eXBlIHQgPSBrXG4gICAgICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9zaHJpbmtlclxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEtleS5xdWlja2NoZWNrX3Nocmlua2VyIHZfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBNYXAuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoTWFwIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdClcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfaGFzaHRibF9leG4gPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG5cbiAgbGV0IGtleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZVxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IChrZXksICdhLCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleSlcbiAgZW5kXG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLk1heWJlX2JvdW5kLnQgPVxuICAgICAgfCBJbmNsIG9mICdhXG4gICAgICB8IEV4Y2wgb2YgJ2FcbiAgICAgIHwgVW5ib3VuZGVkXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBJbmNsIHggLT4gSW5jbCAoZiB4KVxuICAgICAgfCBFeGNsIHggLT4gRXhjbCAoZiB4KVxuICAgICAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBCYXNlLk1heWJlX2JvdW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5WMS50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBxdWlja2NoZWNrLCBzZXhwXVxuXG5sZXQgY29tcGFyZV9vbmVfc2lkZWQgfnNpZGUgY29tcGFyZV9hIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBVbmJvdW5kZWQsIFVuYm91bmRlZCAtPiAwXG4gIHwgVW5ib3VuZGVkLCBfIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAtMVxuICAgICB8IGBVcHBlciAtPiAxKVxuICB8IF8sIFVuYm91bmRlZCAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gMVxuICAgICB8IGBVcHBlciAtPiAtMSlcbiAgfCBJbmNsIGExLCBJbmNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEV4Y2wgYTEsIEV4Y2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgSW5jbCBhMSwgRXhjbCBhMiAtPlxuICAgIGxldCBjID0gY29tcGFyZV9hIGExIGEyIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgIHwgYFVwcGVyIC0+IDEpXG4gICAgZWxzZSBjXG4gIHwgRXhjbCBhMSwgSW5jbCBhMiAtPlxuICAgIGxldCBjID0gY29tcGFyZV9hIGExIGEyIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgICAgfCBgTG93ZXIgLT4gMVxuICAgICAgfCBgVXBwZXIgLT4gLTEpXG4gICAgZWxzZSBjXG47O1xuXG5tb2R1bGUgQXNfbG93ZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgTG93ZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcblxubW9kdWxlIEFzX3VwcGVyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YFVwcGVyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shQ29yZS5TZXR9W1NldF19LiBTZWUgdGhlXG4gICAgeyFNYXB9IGRvY3MgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezAsMSwyLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW1NldF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMyXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cbigqXG4gICBDUnMgYW5kIGNvbW1lbnRzIGFib3V0IFtTZXRdIGZ1bmN0aW9ucyBkbyBub3QgYmVsb25nIGluIHRoaXMgZmlsZS4gIFRoZXkgYmVsb25nIG5leHRcbiAgIHRvIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiBzZXQubWxpLlxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcbm1vZHVsZSBTZXQgPSBCYXNlLlNldFxubW9kdWxlIFRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5tb2R1bGUgTmFtZWQgPSBTZXQuTmFtZWRcbm1vZHVsZSBDb250YWluZXIgPSBCYXNlLkNvbnRhaW5lclxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBTZXQuRWx0X3BsYWluXG5cbm1vZHVsZSB0eXBlIEVsdCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLlNldC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLlNldC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2IpIEVsdF9iaW5faW8udFxuICAgIC0+IChpbnQgLT4gKCdhLCAnYikgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZVxuICAgICAgc2V0cywgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gU2V0Lk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFNldC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBTZXQuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBTZXQuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwgdG9fbWFwXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGY6KCdhIGVsdCAtPiAnYikgLT4gKCdhIGVsdCwgJ2IsICdjbXAgY21wKSBCYXNlLk1hcC50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2EgZWx0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICdhIGVsdCBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yczBcblxuICB2YWwgdG9fbWFwIDogdCAtPiBmOihlbHQgLT4gJ2RhdGEpIC0+IChlbHQsICdkYXRhLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnRcbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMVxuXG4gIHZhbCB0b19tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnRcbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiAnYSBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gJ2EgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiAnYSBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gJ2EgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yczJcblxuICB2YWwgdG9fbWFwIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSBCYXNlLk1hcC50XG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogJ2EgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiAnYSBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIHRvX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSBCYXNlLk1hcC50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiAnYSBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChOYW1lZCA6IFQyKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMwIChNIDogQWNjZXNzb3JzMCkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAoJ2EsICdjbXAsICdhIGVsdCBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCAnY21wLCAoJ2EgZWx0LCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgKCoqIE5ldmVyIHJlcXVpcmVzIGEgY29tcGFyYXRvciBiZWNhdXNlIGl0IGNhbiBnZXQgb25lIGZyb20gdGhlIGlucHV0IFtNYXAudF0uICopXG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSBlbHQsIF8sICdjbXAgY21wKSBCYXNlLk1hcC50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICdhIGVsdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczBcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiBlbHQgSGFzaF9zZXQudCAtPiB0XG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoZWx0LCBfKSBIYXNodGJsLnQgLT4gdFxuICB2YWwgb2ZfbWFwX2tleXMgOiAoZWx0LCBfLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnQgLT4gdFxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiBlbHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnMxXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogJ2EgSGFzaF9zZXQudCAtPiAnYSB0XG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoJ2EsIF8pIEhhc2h0YmwudCAtPiAnYSB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLk1hcC50IC0+ICdhIHRcbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiAnYSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnMyXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogJ2EgSGFzaF9zZXQudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgXykgSGFzaHRibC50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EsIF8sICdjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9oYXNodGJsX2tleXNcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCBfKSBIYXNodGJsLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EsIF8sICdjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMwIChNIDogQ3JlYXRvcnMwKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmVsdFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMwXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgdHJlZSA6PSB0cmVlXG4gICAgd2l0aCB0eXBlIGVsdCA6PSBlbHRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEVsdCA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgdHlwZSBuYW1lZCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS5OYW1lZC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSB0cmVlIDo9IHRcbiAgICAgIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcbiAgICAgIHdpdGggdHlwZSBuYW1lZCA6PSBuYW1lZFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIEJhc2UuU2V0LnRcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgd2l0aCB0eXBlIHRyZWUgOj0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG4gICAgd2l0aCB0eXBlIG5hbWVkIDo9IG5hbWVkXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxub3BlbiBTZXRfaW50ZlxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50XG5tb2R1bGUgTmFtZWQgPSBOYW1lZFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEVsdFxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBFbHRfYmluYWJsZVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGVsdF9nZW5cbiAgOztcblxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBlbHRfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNldF90IGVsdF9vYnNcbiAgbGV0IG9ic190cmVlIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3RyZWUgZWx0X29ic1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHRfc2hyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90IGVsdF9zaHJcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3IgZWx0X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBtIGVsdF9nZW4gPVxuICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBlbHRfZ2VuXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdG9fbWFwIH5jb21wYXJhdG9yIHQgPSBNYXAub2Zfa2V5X3NldCAoU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB0IH5jb21wYXJhdG9yKVxuICBsZXQgb2ZfbWFwX2tleXMgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWUgKE1hcC5rZXlfc2V0IG0pXG5cbiAgbGV0IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhzZXQgPVxuICAgIEhhc2hfc2V0LmZvbGQgaHNldCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBIYXNodGJsLmZvbGQgaGFzaHRibCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gfmtleTp4IH5kYXRhOl8gdCAtPlxuICAgICAgYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWVcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIFNldC5BY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgU2V0Lk5hbWVkLnQpXG5cbiAgbGV0IHRvX21hcCA9IE1hcC5vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gcXVpY2tjaGVja19vYnNlcnZlclxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IHF1aWNrY2hlY2tfc2hyaW5rZXJcbmVuZFxuXG50eXBlICdhIGNtcCA9ICdhXG50eXBlICdhIGVsdCA9ICdhXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgU2V0XG5cbiAgbGV0IG9mX3RyZWUgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbiAgbGV0IHRvX3RyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gIGxldCBzZXhwX29mX3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3RcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU2V0LkNyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcblxuICBpbmNsdWRlXG4gICAgU2V0LkFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIFNldC5OYW1lZC50XG4gICAgd2l0aCBtb2R1bGUgTmFtZWQgOj0gTmFtZWRcbmVuZClcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBTZXQuVXNpbmdfY29tcGFyYXRvclxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFRyZWUgOj0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZSlcblxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNoX3NldCBoc2V0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNodGJsX2tleXMgaGFzaHRibCB+Y29tcGFyYXRvcilcbiAgOztcbmVuZFxuXG5sZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbmxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBvZl9oYXNoX3NldCBtIGhzZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2hfc2V0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhzZXRcblxubGV0IG9mX2hhc2h0Ymxfa2V5cyBtIGhhc2h0YmwgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoYXNodGJsXG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2EgY21wXyA9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgdF9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhIEVsdC50KSAtPiBCYXNlLlNleHAudCAtPiAoJ2EsICdjb21wYXJhdG9yKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wX1xuZW5kID0gc3RydWN0XG4gIG9wZW4gVXNpbmdfY29tcGFyYXRvclxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2NtcCBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdClcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBzaW5nbGV0b24gZSA9IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCB1bmlvbl9saXN0IGwgPSB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGxcbiAgbGV0IG9mX2xpc3QgbCA9IG9mX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9hcnJheSBhID0gb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4c1xuICBsZXQgbWFwIHQgfmYgPSBtYXAgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZSAoVHJlZS50X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX1MxIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IFRyZWUuZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIGUgPSBUcmVlLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlLmludmFyaWFudHMgdCB+Y29tcGFyYXRvclxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlLmxlbmd0aCB0XG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZS5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZS5lbGVtZW50cyB0XG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZS5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlLm1heF9lbHRfZXhuIHRcbiAgbGV0IGNob29zZSB0ID0gVHJlZS5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZS5jaG9vc2VfZXhuIHRcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUudG9fbGlzdCB0XG4gIGxldCB0b19hcnJheSB0ID0gVHJlZS50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlLml0ZXIgdCB+ZlxuICBsZXQgaXRlcjIgYSBiIH5mID0gVHJlZS5pdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZS5leGlzdHMgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZS5mb3JfYWxsIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlLnN1bSBtIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUuZmluZCB0IH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZS5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZS5maW5kX21hcCB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlLmZvbGQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZS5mb2xkX3VudGlsIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IG1hcCB0IH5mID0gVHJlZS5tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyIHQgfmYgPSBUcmVlLmZpbHRlciB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBUcmVlLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBUcmVlLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBtZW0gdCBhID0gVHJlZS5tZW0gdCBhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgdCBhID0gVHJlZS5hZGQgdCBhIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmUgdCBhID0gVHJlZS5yZW1vdmUgdCBhIH5jb21wYXJhdG9yXG4gIGxldCB1bmlvbiB0MSB0MiA9IFRyZWUudW5pb24gdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IGludGVyIHQxIHQyID0gVHJlZS5pbnRlciB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgZGlmZiB0MSB0MiA9IFRyZWUuZGlmZiB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgPSBUcmVlLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUuY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDJcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyYXRvclxuICBsZXQgYXJlX2Rpc2pvaW50IHQxIHQyID0gVHJlZS5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3QgbCA9IFRyZWUub2ZfbGlzdCBsIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gVHJlZS5vZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNoX3NldCBoID0gVHJlZS5vZl9oYXNoX3NldCBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IFRyZWUub2ZfaGFzaHRibF9rZXlzIGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FycmF5IGEgPSBUcmVlLm9mX2FycmF5IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IFRyZWUub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFRyZWUub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFRyZWUub2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IFRyZWUudW5pb25fbGlzdCBsIH5jb21wYXJhdG9yXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IFRyZWUuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmF0b3JcbiAgbGV0IGdyb3VwX2J5IHQgfmVxdWl2ID0gVHJlZS5ncm91cF9ieSB0IH5lcXVpdiB+Y29tcGFyYXRvclxuICBsZXQgc3BsaXQgdCBhID0gVHJlZS5zcGxpdCB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG50aCB0IGkgPSBUcmVlLm50aCB0IGlcbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgPSBUcmVlLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgdCA9IHRcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUudG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZS5iaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3IgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUubWVyZ2VfdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCdcbiAgOztcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBUcmVlLm9mX21hcF9rZXlzXG4gIGxldCB0b19tYXAgdCB+ZiA9IFRyZWUudG9fbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUuTmFtZWQuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyYXRvclxuICAgIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUuTmFtZWQuZXF1YWwgdDEgdDIgfmNvbXBhcmF0b3JcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIGVsdCB+Y29tcGFyYXRvclxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBlbHQgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBlbHRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgZWx0ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgZWx0IH5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEVsdF9TMSlcblxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IFRyZWUuc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgWC50X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpFbHRfUzEuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiBpblxuICBpZiBpbnZhcmlhbnRzIHNldFxuICB0aGVuIHNldFxuICBlbHNlXG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKGZvbGQgc2V0IH5pbml0OihUcmVlLmVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICAgICAgIGlmIFRyZWUubWVtIGFjYyBlbHQgfmNvbXBhcmF0b3JcbiAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXQuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCJcbiAgICAgICAgIGVsc2UgVHJlZS5hZGQgYWNjIGVsdCB+Y29tcGFyYXRvcikpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gQ29tcGFyYXRvci5Qb2x5XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdClcblxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgJ2EgbmFtZWQgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBbJXNleHBfb2Y6IF9dIHRcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg4YmNjNDc4LTQ5OTItMTFlNi1hOTVkLWZmNDgzMWFjZjQxMFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgfmY6KGZ1biBrZXkgLT4gZiBrZXkpIHRcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG4gICAgdHlwZSAnYSBuYW1lZCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS5OYW1lZC50XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHQgPSBUcmVlLnNleHBfb2ZfdCBzZXhwX29mX2VsdCBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X29mX3NleHAgZWx0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgZWx0X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgRWx0X2Jpbl9pbyA9IEVsdF9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChFbHQgOiBFbHRfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODk4OTI3OGUtNDk5Mi0xMWU2LThmNGEtNmI4OTc3NmIxZTUzXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgfmY6KGZ1biBrZXkgLT4gZiBrZXkpIHRcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6RWx0LmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0ID0gRWx0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0X1MxKVxuXG4gIHR5cGUgKCdhLCAnYikgc2V0ID0gKCdhLCAnYikgdFxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHNldFxuICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBOYW1lZC50XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBFbHQudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlIHRcblxuICAgIGxldCBoYXNoIHQgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChoYXNoX2ZvbGRfdCAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSkgdClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoRWx0IDogRWx0X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKEVsdCA6IEVsdCkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IFNldC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEVsdCkgRWx0LnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX29ic2VydmVyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEVsdC5xdWlja2NoZWNrX29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX3Nocmlua2VyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEVsdC5xdWlja2NoZWNrX3Nocmlua2VyXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gU2V0LkZvcl9kZXJpdmluZ1xuXG4gIGluY2x1ZGUgKFNldCA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID0gKCdhLCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGVsdFxuICAgICAgdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gKGVsdCwgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgbW9kdWxlIE1ha2UgKEVsdCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcbm1vZHVsZSBJbmZpeCA9IEJhc2UuQ29tcGFyYWJsZS5JbmZpeFxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNvbXBhcmFibGUuUG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVmFsaWRhdGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgZW5kKSA6IFZhbGlkYXRlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgViA9IFZhbGlkYXRlXG4gIG9wZW4gTWF5YmVfYm91bmRcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBCYXNlLlNleHAudG9fc3RyaW5nIChULnNleHBfb2ZfdCB0KVxuXG4gIGxldCB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXggdCA9XG4gICAgVi5ib3VuZGVkIH5uYW1lOnRvX3N0cmluZyB+bG93ZXI6bWluIH51cHBlcjptYXggfmNvbXBhcmU6VC5jb21wYXJlIHRcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfbGJvdW5kIH5taW4gdCA9IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heDpVbmJvdW5kZWQgdFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kIH5tYXggdCA9IHZhbGlkYXRlX2JvdW5kIH5tYXggfm1pbjpVbmJvdW5kZWQgdFxuZW5kXG5cbm1vZHVsZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgViA9IFZhbGlkYXRlIChUKVxuICBpbmNsdWRlIFZcblxuICAoKiBQcmVhbGxvY2F0ZSB0aGUgaW50ZXJlc3RpbmcgYm91bmRzIHRvIG1pbmltaXplIGFsbG9jYXRpb24gaW4gdGhlIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICBbdmFsaWRhdGVfKl0uICopXG4gIGxldCBleGNsX3plcm8gPSBNYXliZV9ib3VuZC5FeGNsIFQuemVyb1xuICBsZXQgaW5jbF96ZXJvID0gTWF5YmVfYm91bmQuSW5jbCBULnplcm9cbiAgbGV0IHZhbGlkYXRlX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV9sYm91bmQgfm1pbjpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV9sYm91bmQgfm1pbjppbmNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbmVnYXRpdmUgdCA9IHZhbGlkYXRlX3Vib3VuZCB+bWF4OmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fcG9zaXRpdmUgdCA9IHZhbGlkYXRlX3Vib3VuZCB+bWF4OmluY2xfemVybyB0XG5lbmRcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5XaXRoX3plcm8gKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG4gIE1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5Qb2x5IChUKVxuICBlbmRcblxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoQylcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IENcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChDKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpID1cbiAgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGVuZClcblxuICBpbmNsdWRlIE1cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEV4dGVuZF9iaW5hYmxlXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbmluY2x1ZGUgKEJhc2UuQ29tcGFyYWJsZSA6IFdpdGhfY29tcGFyZSlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNvbXBhcmFibGVcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIG1vZHVsZSBNYXAgOlxuICAgICAgICBNYXAuU3RhYmxlLlYxLlNcbiAgICAgICAgd2l0aCB0eXBlIGtleSA6PSBjb21wYXJhYmxlXG4gICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIG1vZHVsZSBTZXQgOlxuICAgICAgICBTZXQuU3RhYmxlLlYxLlNcbiAgICAgICAgd2l0aCB0eXBlIGVsdCA6PSBjb21wYXJhYmxlXG4gICAgICAgIHdpdGggdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKFggOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE1hcCA9IE1hcC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICAgIG1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJpbmNsdWRlIExpc3QwICgqKiBAaW5saW5lICopXG5cbigqKiBbc3RhYmxlX2RlZHVwXSBTYW1lIGFzIFtkZWR1cF0gYnV0IG1haW50YWlucyB0aGUgb3JkZXIgb2YgdGhlIGxpc3QgYW5kIGRvZXNuJ3QgYWxsb3dcbiAgICBjb21wYXJlIGZ1bmN0aW9uIHRvIGJlIHNwZWNpZmllZCAob3RoZXJ3aXNlLCB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGVybXMgb2YgU2V0LnRcbiAgICB3b3VsZCBoaWRlIGEgaGVhdnl3ZWlnaHQgZnVuY3RvciBpbnN0YW50aWF0aW9uIGF0IGVhY2ggY2FsbCkuICopXG5sZXQgc3RhYmxlX2RlZHVwID0gU2V0LlBvbHkuc3RhYmxlX2RlZHVwX2xpc3RcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBzdGFnZWQgdG8gaW5kaWNhdGUgdGhhdCByZWFsIHdvcmsgKHRoZSBmdW5jdG9yIGFwcGxpY2F0aW9uKSB0YWtlc1xuICAgcGxhY2UgYWZ0ZXIgYSBwYXJ0aWFsIGFwcGxpY2F0aW9uLiAqKVxubGV0IHN0YWJsZV9kZWR1cF9zdGFnZWQgKHR5cGUgYSkgfihjb21wYXJlIDogYSAtPiBhIC0+IGludClcbiAgOiAoYSBsaXN0IC0+IGEgbGlzdCkgQmFzZS5TdGFnZWQudFxuICA9XG4gIGxldCBtb2R1bGUgU2V0ID1cbiAgICBTZXQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gICAgICAoKiBbc3RhYmxlX2RlZHVwX2xpc3RdIG5ldmVyIGNhbGxzIHRoZXNlICopXG4gICAgICBsZXQgdF9vZl9zZXhwIF8gPSBhc3NlcnQgZmFsc2VcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IGFzc2VydCBmYWxzZVxuICAgIGVuZClcbiAgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgU2V0LnN0YWJsZV9kZWR1cF9saXN0XG47O1xuXG5sZXQgemlwX3dpdGhfcmVtYWluZGVyID1cbiAgbGV0IHJlYyB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciBhY2MgeHMgeXMgPVxuICAgIG1hdGNoIHhzLCB5cyB3aXRoXG4gICAgfCBbXSwgW10gLT4gcmV2IGFjYywgTm9uZVxuICAgIHwgZnN0LCBbXSAtPiByZXYgYWNjLCBTb21lIChFaXRoZXIuRmlyc3QgZnN0KVxuICAgIHwgW10sIHNuZCAtPiByZXYgYWNjLCBTb21lIChFaXRoZXIuU2Vjb25kIHNuZClcbiAgICB8IHggOjogeHMsIHkgOjogeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgKCh4LCB5KSA6OiBhY2MpIHhzIHlzXG4gIGluXG4gIGZ1biB4cyB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciBbXSB4cyB5c1xuOztcblxudHlwZSBzZXhwX3RodW5rID0gdW5pdCAtPiBCYXNlLlNleHAudFxuXG5sZXQgc2V4cF9vZl9zZXhwX3RodW5rIHggPSB4ICgpXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGVfZm91bmQgb2Ygc2V4cF90aHVuayAqIEJhc2UuU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9pZl9kdXAgfmNvbXBhcmUgPyhjb250ZXh0ID0gXCJleG5faWZfZHVwXCIpIHQgfnRvX3NleHAgPVxuICBtYXRjaCBmaW5kX2FfZHVwIH5jb21wYXJlIHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGR1cCAtPiByYWlzZSAoRHVwbGljYXRlX2ZvdW5kICgoZnVuICgpIC0+IHRvX3NleHAgZHVwKSwgY29udGV4dCkpXG47O1xuXG5sZXQgc2xpY2UgYSBzdGFydCBzdG9wID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIGEgc3RhcnQgc3RvcFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25cblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5ub25lIH5zb21lIHQgPVxuICBsZXQgbW9kdWxlIFYgPSBWYWxpZGF0ZSBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFYubmFtZSBcIm5vbmVcIiAoVi5wcm90ZWN0IG5vbmUgKCkpXG4gIHwgU29tZSB4IC0+IFYubmFtZSBcInNvbWVcIiAoVi5wcm90ZWN0IHNvbWUgeClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub3B0aW9uXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vcHRpb25cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm9wdGlvblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuXG4gICAgKCogW3Vuc2FmZV92YWx1ZV0gaXMgb25seSBzYWZlIHRvIGNhbGwgd2hlbiBbaXNfbm9uZV0gcmV0dXJucyBbZmFsc2VdLiBUbyBhdm9pZFxuICAgICAgIHJlcGVhdGluZyB0aGUgW2lzX25vbmVdIGNoZWNrLCB3ZSBkZWNsYXJlIFtVbmNoZWNrZWRfc29tZV0uIFtVbmNoZWNrZWRfc29tZSB4XVxuICAgICAgIGhhcyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBhcyBbU29tZSB4XSwgYnV0IHRoZSB0eXBlIGhhcyBubyBbTm9uZV0gY2xhdXNlLlxuXG4gICAgICAgV2UgbWFrZSBzdXJlIGFsbCB0aGlzIHdvcmtzIHdpdGggdGVzdHMgb2YgW3Vuc2FmZV92YWx1ZV0gaW4gdGVzdF9vcHRpb24ubWwuXG5cbiAgICAgICBXZSB0cmllZCB1c2luZyBbT2JqLmZpZWxkXSBpbnN0ZWFkLiBJdCBnZW5lcmF0ZXMgbXVjaCB3b3JzZSBuYXRpdmUgY29kZSBkdWUgdG9cbiAgICAgICBmbG9hdCBhcnJheSByZXByZXNlbnRhdGlvbnMuICopXG5cbiAgICBtb2R1bGUgVW5jaGVja2VkX3NvbWUgPSBzdHJ1Y3RcbiAgICAgICgqIFdhcm5pbmcgMzcgdGVsbHMgdXMgW1VuY2hlY2tlZF9zb21lXSBpcyBuZXZlciB1c2VkIGFzIGEgY29uc3RydWN0b3IuIFRoaXMgaXNcbiAgICAgICAgIGludGVudGlvbmFsLCBzbyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nLiAqKVxuICAgICAgdHlwZSAnYSB0ID0gVW5jaGVja2VkX3NvbWUgb2YgJ2EgW0BAb2NhbWwuYm94ZWRdIFtAQG9jYW1sLndhcm5pbmcgXCItMzdcIl1cbiAgICBlbmRcblxuICAgIGxldCB1bnNhZmVfdmFsdWUgKHR5cGUgYSkgKHQgOiBhIHQpIDogYSA9XG4gICAgICBsZXQgKFVuY2hlY2tlZF9zb21lIHZhbHVlKSA9IChPYmoubWFnaWMgdCA6IGEgVW5jaGVja2VkX3NvbWUudCkgaW5cbiAgICAgIHZhbHVlXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgTUx0b24gbGlicmFyeSBzZXQvZGlzam9pbnQuZnVuLCB3aGljaCBoYXMgdGhlXG4gICBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZS5cbiopXG4oKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBIZW5yeSBDZWp0aW4sIE1hdHRoZXcgRmx1ZXQsIFN1cmVzaFxuICogICAgSmFnYW5uYXRoYW4sIGFuZCBTdGVwaGVuIFdlZWtzLlxuICpcbiAqIE1MdG9uIGlzIHJlbGVhc2VkIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UuXG4gKiBTZWUgdGhlIGZpbGUgTUx0b24tTElDRU5TRSBmb3IgZGV0YWlscy5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG4oKlxuICAge3ZcbiAgICAgICAgICAgUm9vdFxuICAgICAgICAgICAgIHxcbiAgICAgICAgICAgSW5uZXJcbiAgICAgICAgLyAuLiB8IC4uIFxcXG4gICAgIElubmVyIElubmVyIElubmVyXG4gICAgICAvfFxcICAgL3xcXCAgIC98XFxcbiAgICAgIC4uLiAgIC4uLiAgIC4uLlxuICAgdn1cblxuICAgV2UgY29uc3RydWN0IHRoZSBgaW52ZXJ0ZWQnIHRyZWUgaW4gdGhlIE1MIHJlcHJlc2VudGF0aW9uLlxuICAgVGhlIGRpcmVjdGlvbiBvZiB0aGUgZWRnZXMgaXMgVVBXQVJEUy5cbiAgIFN0YXJ0aW5nIHdpdGggYW55IFsnYSB0XSB3ZSBjYW4gc3RlcCBkaXJlY3RseSB0byBpdHMgcGFyZW50LlxuICAgQnV0IHdlIGNhbid0IChhbmQgZG9uJ3QgbmVlZCB0bykgc3RhcnQgZnJvbSB0aGUgcm9vdCBhbmQgc3RlcCB0byBpdHMgY2hpbGRyZW4uXG4qKVxuXG4oKlxuICAgW3JhbmtdIGlzIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBkZXB0aCBvZiBhbnkgbm9kZSBpbiB0aGUgdXAtdHJlZS5cblxuICAgSW1hZ2luZSBhbiB1bmx1Y2t5IHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgaW4gd2hpY2ggeW91IGNyZWF0ZSBOXG4gICBpbmRpdmlkdWFsIFt0XS12YWx1ZXMgYW5kIHRoZW4gdW5pb24gdGhlbSB0b2dldGhlciBpbiBzdWNoIGEgd2F5XG4gICB0aGF0IHlvdSBhbHdheXMgcGljayB0aGUgcm9vdCBvZiBlYWNoIHRyZWUgdG8gdW5pb24gdG9nZXRoZXIsIHNvIHRoYXRcbiAgIG5vIHBhdGggY29tcHJlc3Npb24gdGFrZXMgcGxhY2UuICBJZiB5b3UgZG9uJ3QgdGFrZSBjYXJlIHRvIHNvbWVob3dcbiAgIGJhbGFuY2UgdGhlIHJlc3VsdGluZyB1cC10cmVlLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBlbmQgdXAgd2l0aCBvbmVcbiAgIGJpZyBsb25nIGNoYWluIG9mIE4gbGlua3MsIGFuZCB0aGVuIGNhbGxpbmcgW3JlcHJlc2VudGF0aXZlXSBvbiB0aGVcbiAgIGRlZXBlc3Qgbm9kZSB0YWtlcyBUaGV0YShOKSB0aW1lLiAgV2l0aCB0aGUgYmFsYW5jaW5nIHNjaGVtZSBvZiBuZXZlclxuICAgaW5jcmVhc2luZyB0aGUgcmFuayBvZiBhIG5vZGUgdW5uZWNlc3NhcmlseSwgaXQgd291bGQgdGFrZSBPKGxvZyBOKS5cbiopXG50eXBlICdhIHJvb3QgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7IG11dGFibGUgcmFuayA6IGludFxuICB9XG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBub2RlIDogJ2Egbm9kZSB9XG5cbmFuZCAnYSBub2RlID1cbiAgfCBJbm5lciBvZiAnYSB0XG4gICgqIFtJbm5lciB4XSBpcyBhIG5vZGUgd2hvc2UgcGFyZW50IGlzIFt4XS4gKilcbiAgfCBSb290IG9mICdhIHJvb3RcblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCA9XG4gICAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgICB8IElubmVyIHQgLT4gbG9vcCB0IChkZXB0aCArIDEpXG4gICAgfCBSb290IHIgLT4gYXNzZXJ0IChkZXB0aCA8PSByLnJhbmspXG4gIGluXG4gIGxvb3AgdCAwXG47O1xuXG5sZXQgY3JlYXRlIHYgPSB7IG5vZGUgPSBSb290IHsgdmFsdWUgPSB2OyByYW5rID0gMCB9IH1cblxuKCogaW52YXJpYW50czpcbiAgIFtpbm5lci5ub2RlXSA9IFtpbm5lcl9ub2RlXSA9IFtJbm5lciB0XS5cbiAgIFtkZXNjZW5kYW50c10gYXJlIHRoZSBwcm9wZXIgZGVzY2VuZGFudHMgb2YgW2lubmVyXSB3ZSd2ZSB2aXNpdGVkLlxuKilcbmxldCByZWMgY29tcHJlc3MgdCB+aW5uZXJfbm9kZSB+aW5uZXIgfmRlc2NlbmRhbnRzID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiB0IGlzIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgICAgIFJlLXBvaW50IGFsbCBkZXNjZW5kYW50cyBkaXJlY3RseSB0byBpdCBieSBzZXR0aW5nIHRoZW0gdG8gW0lubmVyIHRdLlxuICAgICAgIE5vdGU6IHdlIGRvbid0IHJlLXBvaW50IFtpbm5lcl0gYXMgaXQgYWxyZWFkeSBwb2ludHMgdGhlcmUuICopXG4gICAgTGlzdC5pdGVyIGRlc2NlbmRhbnRzIH5mOihmdW4gdCAtPiB0Lm5vZGUgPC0gaW5uZXJfbm9kZSk7XG4gICAgdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT5cbiAgICBjb21wcmVzcyB0JyB+aW5uZXJfbm9kZTpub2RlIH5pbm5lcjp0IH5kZXNjZW5kYW50czooaW5uZXIgOjogZGVzY2VuZGFudHMpXG47O1xuXG5sZXQgcmVwcmVzZW50YXRpdmUgdCA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+IHQsIHJcbiAgfCBJbm5lciB0JyBhcyBub2RlIC0+IGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOltdXG47O1xuXG5sZXQgcm9vdCB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiBhdm9pZCB0dXBsZSBhbGxvY2F0aW9uIGluIHRoZSBmYXN0IHBhdGggKilcbiAgICByXG4gIHwgXyAtPiBzbmQgKHJlcHJlc2VudGF0aXZlIHQpXG47O1xuXG5sZXQgcmFuayB0ID0gKHJvb3QgdCkucmFua1xubGV0IGdldCB0ID0gKHJvb3QgdCkudmFsdWVcbmxldCBzZXQgdCB2ID0gKHJvb3QgdCkudmFsdWUgPC0gdlxubGV0IHNhbWVfY2xhc3MgdDEgdDIgPSBwaHlzX2VxdWFsIChyb290IHQxKSAocm9vdCB0MilcblxubGV0IHVuaW9uIHQxIHQyID1cbiAgbGV0IHQxLCByMSA9IHJlcHJlc2VudGF0aXZlIHQxIGluXG4gIGxldCB0MiwgcjIgPSByZXByZXNlbnRhdGl2ZSB0MiBpblxuICBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gcjEucmFuayBpblxuICAgIGxldCBuMiA9IHIyLnJhbmsgaW5cbiAgICBpZiBuMSA8IG4yXG4gICAgdGhlbiB0MS5ub2RlIDwtIElubmVyIHQyXG4gICAgZWxzZSAoXG4gICAgICB0Mi5ub2RlIDwtIElubmVyIHQxO1xuICAgICAgaWYgbjEgPSBuMiB0aGVuIHIxLnJhbmsgPC0gcjEucmFuayArIDEpKVxuOztcblxubGV0IGlzX2NvbXByZXNzZWQgdCA9XG4gIGludmFyaWFudCBpZ25vcmUgdDtcbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IF8gLT4gdHJ1ZVxuICB8IElubmVyIHQgLT5cbiAgICAobWF0Y2ggdC5ub2RlIHdpdGhcbiAgICAgfCBSb290IF8gLT4gdHJ1ZVxuICAgICB8IElubmVyIF8gLT4gZmFsc2UpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaXNfY29tcHJlc3NlZCA9IGlzX2NvbXByZXNzZWRcbiAgbGV0IHJhbmsgPSByYW5rXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEb3VibHlfbGlua2VkX2ludGZcblxuKCogSU5WQVJJQU5UOiBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgYSBsaXN0IGlzIG11dGF0ZWQgZHVyaW5nIGEgcGVuZGluZyBpdGVyYXRpb24uXG5cbiAgIFRoaXMgaW52YXJpYW50IGlzIGd1YXJhbnRlZWQgYnkgdGhlIEhlYWRlciBhbmQgRWx0IG1vZHVsZXMgaW4gY29uanVuY3Rpb24uICBBbGxcbiAgIGRvd25zdHJlYW0gY29kZSBpbiB0aGlzIG1vZHVsZSBuZWVkIG5vdCBiZSBjb25jZXJuZWQgd2l0aCB0aGlzIGludmFyaWFudC4gKilcbmV4Y2VwdGlvbiBBdHRlbXB0X3RvX211dGF0ZV9saXN0X2R1cmluZ19pdGVyYXRpb25cblxubGV0IHBoeXNfZXF1YWwgPSAoID09IClcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaW5jcl9sZW5ndGggOiBieTppbnQgLT4gdCAtPiB1bml0XG4gIHZhbCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgOiB0IC0+IHVuaXRcblxuICAoKiBVbmZvcnR1bmF0ZSwgYnV0IGJ5IHNwZWNpYWxpemluZyBbd2l0aF9pdGVyYXRpb25dIGZvciBkaWZmZXJlbnQgYXJpdGllcywgYSBsYXJnZVxuICAgICBhbW91bnQgb2YgYWxsb2NhdGlvbiBkdXJpbmcgZm9sZHMgYW5kIGl0ZXJhdGlvbnMgaXMgYXZvaWRlZC5cblxuICAgICBUaGUgb3JpZ2luYWwgdHlwZSBvZiBbd2l0aF9pdGVyYXRpb25dIHdhc1xuICAgICBbdmFsIHdpdGhfaXRlcmF0aW9uIDogdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FdXG5cbiAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmICgpID0gZyB4IGluXG4gICAgICAgZiAoKVxuICAgICBdfVxuICAgICBhbmRcbiAgICAge1tcbiAgICAgICBsZXQgeCA9IGUgaW5cbiAgICAgICBsZXQgZiB4ID0gZyB4IGluXG4gICAgICAgZiB4XG4gICAgIF19XG4gICAgIGlzIHRoYXQgaW4gdGhlIGZpcnN0IGNhc2UgdGhlIGNsb3N1cmUgZm9yIFtmXSBjb250YWlucyBhIHBvaW50ZXIgdG8gW3hdLFxuICAgICBhbmQgaW4gdGhlIHNlY29uZCBjYXNlIGl0IGRvZXNuJ3QuIEEgY2xvc3VyZSB3aXRob3V0IHBvaW50ZXJzIHRvIGVuY2xvc2luZ1xuICAgICBlbnZpcm9ubWVudCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5ha2VkIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIHdlIGRvbid0XG4gICAgIGFsbG9jYXRlIGF0IGFsbC5cblxuICAgICBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIG1ha2Ugc3VyZSBub3QgdG8gY2FsbCBbUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gLi4uKV1cbiAgICAgaW5zaWRlIFt3aXRoX2l0ZXJhdGlvbl0gYW5kIGRvIGFuIGV4cGxpY2l0IG1hdGNoIHN0YXRlbWVudCBpbnN0ZWFkLiAqKVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8yIDogdCAtPiAnYSAtPiAnYiAtPiAoJ2EgLT4gJ2IgLT4gJ2MpIC0+ICdjXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8zIDogdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QpIC0+ICdkXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl80IDogdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UpIC0+ICdlXG4gIHZhbCBtZXJnZSA6IHQgLT4gdCAtPiBbIGBTYW1lX2FscmVhZHkgfCBgTWVyZ2VkIF1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHMgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBlbmRpbmdfaXRlcmF0aW9ucyA6IGludFxuICAgIH1cblxuICB0eXBlIHQgPSBzIFVuaW9uX2ZpbmQudFxuXG4gIGxldCBjcmVhdGUgKCkgPSBVbmlvbl9maW5kLmNyZWF0ZSB7IGxlbmd0aCA9IDE7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgbGV0IGxlbmd0aCB0ID0gKFVuaW9uX2ZpbmQuZ2V0IHQpLmxlbmd0aFxuXG4gIGxldCB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGlmIHMucGVuZGluZ19pdGVyYXRpb25zID4gMCB0aGVuIHJhaXNlIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvbiBlbHNlIHNcbiAgOztcblxuICBsZXQgY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGlnbm9yZSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0IDogcylcbiAgOztcblxuICBsZXQgaW5jcl9sZW5ndGggfmJ5Om4gdCA9XG4gICAgbGV0IHMgPSB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgaW5cbiAgICBzLmxlbmd0aCA8LSBzLmxlbmd0aCArIG5cbiAgOztcblxuICAoKiBDYXJlIGlzIHRha2VuIG5vdCB0byBhbGxvY2F0ZSBpbiBbd2l0aF9pdGVyYXRpb25fKl0sIHNpbmNlIGl0IGlzIGNhbGxlZCBldmVyeSBzZWNvbmRcbiAgICAgYnkgW2V2ZXJ5X3NlY29uZF0gaW4gW3dyaXRlcjAubWxdICopXG5cbiAgbGV0IGluY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgKyAxXG4gIGxldCBkZWNyX3BlbmRpbmdfaXRlcnMgcyA9IHMucGVuZGluZ19pdGVyYXRpb25zIDwtIHMucGVuZGluZ19pdGVyYXRpb25zIC0gMVxuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8yIHQgYSBiIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fMyB0IGEgYiBjIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80IHQgYSBiIGMgZCBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIGQgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCBtZXJnZSAodDEgOiB0KSB0MiA9XG4gICAgaWYgVW5pb25fZmluZC5zYW1lX2NsYXNzIHQxIHQyXG4gICAgdGhlbiBgU2FtZV9hbHJlYWR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbjEgPSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSkubGVuZ3RoIGluXG4gICAgICBsZXQgbjIgPSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MikubGVuZ3RoIGluXG4gICAgICB3aXRoX2l0ZXJhdGlvbl80IHQxIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MiB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgICAgVW5pb25fZmluZC51bmlvbiB0MSB0MjtcbiAgICAgICAgICBVbmlvbl9maW5kLnNldCB0MSB7IGxlbmd0aCA9IG4xICsgbjI7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfSkpO1xuICAgICAgYE1lcmdlZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgRWx0IDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBoZWFkZXIgOiAnYSB0IC0+IEhlYWRlci50XG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBjcmVhdGUgOiAnYSAtPiAnYSB0XG4gIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5saW5rIDogJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9hZnRlciA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBpbnNlcnRfYWZ0ZXIgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIGluc2VydF9iZWZvcmUgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHVubGlua19iZWZvcmUgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG5leHQgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHByZXYgOiAnYSB0IC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gICAgOyBtdXRhYmxlIHByZXYgOiAnYSB0XG4gICAgOyBtdXRhYmxlIG5leHQgOiAnYSB0XG4gICAgOyBtdXRhYmxlIGhlYWRlciA6IEhlYWRlci50XG4gICAgfVxuXG4gIGxldCBlcXVhbCA9IHBoeXNfZXF1YWxcbiAgbGV0IG5leHQgdCA9IHQubmV4dFxuICBsZXQgcHJldiB0ID0gdC5wcmV2XG4gIGxldCBoZWFkZXIgdCA9IHQuaGVhZGVyXG5cbiAgbGV0IGNyZWF0ZV9hdXggdiBoZWFkZXIgPVxuICAgIGxldCByZWMgdCA9IHsgdmFsdWUgPSB2OyBwcmV2ID0gdDsgbmV4dCA9IHQ7IGhlYWRlciB9IGluXG4gICAgdFxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IGVxdWFsIHQgdC5wcmV2XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2EgdC52YWx1ZVxuICBsZXQgY3JlYXRlIHYgPSBjcmVhdGVfYXV4IHYgKEhlYWRlci5jcmVhdGUgKCkpXG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuICBsZXQgc2V0IHQgdiA9IHQudmFsdWUgPC0gdlxuXG4gICgqXG4gICAgIFtzcGxpdF9vcl9zcGxpY2VdIGlzIHN1ZmZpY2llbnQgYXMgdGhlIGxvbmUgcHJpbWl0aXZlIGZvclxuICAgICBhY2NvbXBsaXNoaW5nIGFsbCBwb2ludGVyIHVwZGF0ZXMgb24gY3ljbGljIGxvb3BzIG9mIGxpc3Qgbm9kZXMuXG4gICAgIEl0IHRha2VzIHR3byBcImdhcHNcIiBiZXR3ZWVuIGFkamFjZW50IGxpbmtlZCBsaXN0IG5vZGVzLiAgSWYgdGhlIGdhcHNcbiAgICAgcG9pbnQgaW50byB0aGUgc2FtZSBsaXN0LCB0aGUgcmVzdWx0IGlzIHRoYXQgaXQgd2lsbCBiZSBzcGxpdCBpbnRvXG4gICAgIHR3byBsaXN0cyBhZnRlcndhcmRzLiAgSWYgdGhlIGdhcHMgcG9pbnQgaW50byBkaWZmZXJlbnQgbGlzdHMsIHRoZVxuICAgICByZXN1bHQgaXMgdGhhdCB0aGV5IHdpbGwgYmUgc3BsaWNlZCB0b2dldGhlciBpbnRvIG9uZSBsaXN0IGFmdGVyd2FyZHMuXG5cbiAgICAge3ZcbiAgICAgICBCZWZvcmUgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXJcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQSB8ICA8LS0+ICB8IEIgICAgICAgICAgICAgICBBIHwgIDwtLS0gICAtLS0+ICB8IEJcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICBcXCAvICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAvIFxcICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEMgfCAgPC0tPiAgfCBEICAgICAgICAgICAgICAgQyB8ICA8LS0tICAgLS0tPiAgfCBEXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgIHZ9ICopXG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2UgfnByZXYxOmEgfm5leHQxOmIgfnByZXYyOmMgfm5leHQyOmQgPVxuICAgIGEubmV4dCA8LSBkO1xuICAgIGQucHJldiA8LSBhO1xuICAgIGMubmV4dCA8LSBiO1xuICAgIGIucHJldiA8LSBjXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5uZXh0MTp0MS5uZXh0XG4gICAgICB+cHJldjE6dDEubmV4dC5wcmV2XG4gICAgICB+bmV4dDI6dDIubmV4dFxuICAgICAgfnByZXYyOnQyLm5leHQucHJldlxuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfnByZXYxOnQxLnByZXZcbiAgICAgIH5uZXh0MTp0MS5wcmV2Lm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5wcmV2XG4gICAgICB+bmV4dDI6dDIucHJldi5uZXh0XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDIgPVxuICAgIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEuaGVhZGVyO1xuICAgIGlmIG5vdCAoSGVhZGVyLmVxdWFsIHQxLmhlYWRlciB0Mi5oZWFkZXIpXG4gICAgdGhlbiBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyLmhlYWRlclxuICA7O1xuXG4gICgqIFdlIHJlZGVmaW5lIHNhZmUgdmVyc2lvbnMgZm9yIGV4cG9ydCAqKVxuICBsZXQgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDJcbiAgOztcblxuICBsZXQgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MlxuICA7O1xuXG4gIGxldCBpbnNlcnRfYmVmb3JlIHQgdiA9XG4gICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieToxO1xuICAgIGxldCBub2RlID0gY3JlYXRlX2F1eCB2IHQuaGVhZGVyIGluXG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgdiA9XG4gICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieToxO1xuICAgIGxldCBub2RlID0gY3JlYXRlX2F1eCB2IHQuaGVhZGVyIGluXG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBkdW1teV9oZWFkZXIgPSBIZWFkZXIuY3JlYXRlICgpXG5cbiAgbGV0IHVubGlua19iZWZvcmUgdCA9XG4gICAgbGV0IG5vZGUgPSB0LnByZXYgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdCBub2RlO1xuICAgICAgbm9kZS5oZWFkZXIgPC0gZHVtbXlfaGVhZGVyO1xuICAgICAgbm9kZSlcbiAgOztcblxuICBsZXQgdW5saW5rX2FmdGVyIHQgPVxuICAgIGxldCBub2RlID0gdC5uZXh0IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgICAgbm9kZS5oZWFkZXIgPC0gZHVtbXlfaGVhZGVyO1xuICAgICAgbm9kZSlcbiAgOztcblxuICBsZXQgdW5saW5rIHQgPSBpZ25vcmUgKHVubGlua19hZnRlciB0LnByZXYgOiBfIHQpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgRWx0LnQgb3B0aW9uIHJlZlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaGVhZCAtPlxuICAgIGxldCBoZWFkZXIgPSBFbHQuaGVhZGVyIGhlYWQgaW5cbiAgICBsZXQgcmVjIGxvb3AgbiBlbHQgPVxuICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICBsZXQgcHJldl9lbHQgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgIGFzc2VydCAoRWx0LmVxdWFsIGVsdCAoRWx0LnByZXYgbmV4dF9lbHQpKTtcbiAgICAgIGFzc2VydCAoRWx0LmVxdWFsIGVsdCAoRWx0Lm5leHQgcHJldl9lbHQpKTtcbiAgICAgIGFzc2VydCAoSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGVsdCkgaGVhZGVyKTtcbiAgICAgIGludmFyaWFudF9hIChFbHQudmFsdWUgZWx0KTtcbiAgICAgIGlmIEVsdC5lcXVhbCBuZXh0X2VsdCBoZWFkIHRoZW4gbiBlbHNlIGxvb3AgKG4gKyAxKSBuZXh0X2VsdFxuICAgIGluXG4gICAgbGV0IGxlbiA9IGxvb3AgMSBoZWFkIGluXG4gICAgYXNzZXJ0IChsZW4gPSBIZWFkZXIubGVuZ3RoIGhlYWRlcilcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSByZWYgTm9uZVxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gY3JlYXRlICgpXG4gIHwgeCA6OiB4cyAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgeCBpblxuICAgIGxldCBfbGFzdCA9IExpc3QuZm9sZCB4cyB+aW5pdDpmaXJzdCB+ZjpFbHQuaW5zZXJ0X2FmdGVyIGluXG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG9mX2FycmF5ID0gZnVuY3Rpb25cbiAgfCBbfHxdIC0+IGNyZWF0ZSAoKVxuICB8IGFyciAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgYXJyLigwKSBpblxuICAgIGxldCByZWMgbG9vcCBhcnIgZWx0IGkgPVxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBsb29wIGFyciAoRWx0Lmluc2VydF9hZnRlciBlbHQgYXJyLihpKSkgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCBhcnIgZmlyc3QgMTtcbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIDAgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiBpIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgMSBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGEgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGlfZWx0XzEgdCB+aW5pdCB+ZiBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBpIGEgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgKGkgKyAxKSBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGl0ZXJfZWx0IHQgfmYgPSBmb2xkX2VsdF8xIHQgfmluaXQ6KCkgfmY6KGZ1biBmICgpIGVsdCAtPiBmIGVsdCkgZlxubGV0IGl0ZXJpX2VsdCB0IH5mID0gZm9sZGlfZWx0IHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIGVsdCAtPiBmIGkgZWx0KVxuXG5vcGVuIFdpdGhfcmV0dXJuXG5cbmxldCBmaW5kX2VsdCB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgZm9sZF9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBmICgpIGVsdCAtPlxuICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSBlbHQpKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmRpX2VsdCB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgZm9sZGlfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gaSBmICgpIGVsdCAtPlxuICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIChpLCBlbHQpKSk7XG4gICAgTm9uZSlcbjs7XG5cbigqIHRoaXMgZnVuY3Rpb24gaXMgbGFtYmRhIGxpZnRlZCBmb3IgcGVyZm9ybWFuY2UsIHRvIG1ha2UgZGlyZWN0IHJlY3Vyc2l2ZSBjYWxscyBpbnN0ZWFkXG4gICBvZiBjYWxscyB0aHJvdWdoIGl0cyBjbG9zdXJlLiBJdCBhbHNvIGF2b2lkcyB0aGUgaW5pdGlhbCBjbG9zdXJlIGFsbG9jYXRpb24uICopXG5sZXQgcmVjIGl0ZXJfbG9vcCBmaXJzdCBmIGVsdCA9XG4gIGYgKEVsdC52YWx1ZSBlbHQpO1xuICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBpdGVyX2xvb3AgZmlyc3QgZiBuZXh0XG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzIgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyX2xvb3AgZmlyc3QgZiBmaXJzdClcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5sZW5ndGggKEVsdC5oZWFkZXIgZmlyc3QpXG47O1xuXG5sZXQgcmVjIGl0ZXJpX2xvb3AgZmlyc3QgZiBpIGVsdCA9XG4gIGYgaSAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJpX2xvb3AgZmlyc3QgZiAoaSArIDEpIG5leHRcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzIgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyaV9sb29wIGZpcnN0IGYgMCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgZm9sZGlfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gaSBmIGFjYyBlbHQgLT4gZiBpIGFjYyAoRWx0LnZhbHVlIGVsdCkpXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gZiBhY2MgZWx0IC0+IGYgYWNjIChFbHQudmFsdWUgZWx0KSlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGQgPSBDLmZvbGRcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWVtID0gQy5tZW1cbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IHVuY2hlY2tlZF9pdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBmIGVsdCA9XG4gICAgICBmIChFbHQudmFsdWUgZWx0KTtcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAoKiB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgYmFnIG1heSBoYXZlIGJlZW4gY2hhbmdlZCBieSBbZl0gKilcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGZpcnN0IC0+IGlmIG5vdCAocGh5c19lcXVhbCBmaXJzdCBuZXh0KSB0aGVuIGxvb3AgdCBmIG5leHRcbiAgICBpblxuICAgIGxvb3AgdCBmIGZpcnN0XG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IE9wdGlvbi5pc19ub25lICF0XG5cbigqIG1vcmUgZWZmaWNpZW50IHRoYW4gd2hhdCBDb250YWluZXIuTWFrZSByZXR1cm5zICopXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiAoRWx0LnZhbHVlIHByZXYpIGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX3JpZ2h0X2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgcHJldiBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4geCB0bCAtPiB4IDo6IHRsKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgcyA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEJhc2UuTGlzdC50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbjs7XG5cbmxldCBjb3B5IHQgPSBvZl9saXN0ICh0b19saXN0IHQpXG5sZXQgY2xlYXIgdCA9IHQgOj0gTm9uZVxuXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCB0MSB0MiA9XG4gIG1hdGNoICF0MSwgIXQyIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IDBcbiAgfCBOb25lLCBfIC0+IC0xXG4gIHwgXywgTm9uZSAtPiAxXG4gIHwgU29tZSBmMSwgU29tZSBmMiAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGYxKSBjb21wYXJlX2VsdCBmMSBmMiAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fM1xuICAgICAgICAoRWx0LmhlYWRlciBmMilcbiAgICAgICAgY29tcGFyZV9lbHRcbiAgICAgICAgZjFcbiAgICAgICAgZjJcbiAgICAgICAgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgICAgICBsZXQgcmVjIGxvb3AgY29tcGFyZV9lbHQgZWx0MSBmMSBlbHQyIGYyID1cbiAgICAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCAoRWx0LnZhbHVlIGVsdDEpIChFbHQudmFsdWUgZWx0MikgaW5cbiAgICAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA8PiAwXG4gICAgICAgICAgICAgdGhlbiBjb21wYXJlX3Jlc3VsdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IG5leHQxID0gRWx0Lm5leHQgZWx0MSBpblxuICAgICAgICAgICAgICAgbGV0IG5leHQyID0gRWx0Lm5leHQgZWx0MiBpblxuICAgICAgICAgICAgICAgbWF0Y2ggcGh5c19lcXVhbCBuZXh0MSBmMSwgcGh5c19lcXVhbCBuZXh0MiBmMiB3aXRoXG4gICAgICAgICAgICAgICB8IHRydWUsIHRydWUgLT4gMFxuICAgICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgICAgICAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiBsb29wIGNvbXBhcmVfZWx0IG5leHQxIGYxIG5leHQyIGYyKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGNvbXBhcmVfZWx0IGYxIGYxIGYyIGYyKSlcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0XG5cbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPVxuICBpZiBwaHlzX2VxdWFsIHNyYyBkc3QgdGhlbiByYWlzZSBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0O1xuICBtYXRjaCAhc3JjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzcmNfaGVhZCAtPlxuICAgIChtYXRjaCAhZHN0IHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgICAgZHN0IDo9IFNvbWUgc3JjX2hlYWQ7XG4gICAgICAgY2xlYXIgc3JjXG4gICAgIHwgU29tZSBkc3RfaGVhZCAtPlxuICAgICAgIChtYXRjaCBIZWFkZXIubWVyZ2UgKEVsdC5oZWFkZXIgc3JjX2hlYWQpIChFbHQuaGVhZGVyIGRzdF9oZWFkKSB3aXRoXG4gICAgICAgIHwgYFNhbWVfYWxyZWFkeSAtPiByYWlzZSBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0XG4gICAgICAgIHwgYE1lcmdlZCAtPlxuICAgICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGRzdF9oZWFkIHNyY19oZWFkO1xuICAgICAgICAgIGNsZWFyIHNyYykpXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IGl0ZXJfZWx0IHQgfmY6KGZ1biBlbHQgLT4gRWx0LnNldCBlbHQgKGYgKEVsdC52YWx1ZSBlbHQpKSlcbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9IGl0ZXJpX2VsdCB0IH5mOihmdW4gaSBlbHQgLT4gRWx0LnNldCBlbHQgKGYgaSAoRWx0LnZhbHVlIGVsdCkpKVxuXG5sZXQgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmUgPVxuICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4gZWx0IC0+XG4gICAgKG1hdGNoICF0IHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBoZWFkIC0+XG4gICAgICAgaWYgRWx0LmVxdWFsIGhlYWQgZWx0XG4gICAgICAgdGhlbiAoXG4gICAgICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIHQgOj0gaWYgRWx0LmVxdWFsIGhlYWQgbmV4dF9lbHQgdGhlbiBOb25lIGVsc2UgU29tZSBuZXh0X2VsdCkpO1xuICAgIEVsdC51bmxpbmsgZWx0KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiBlbHRzIGVsc2UgZWx0IDo6IGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiBlbHRzIGVsc2UgZWx0IDo6IGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiBpIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5leGNlcHRpb24gRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG5cbmxldCBmaXJzdF9lbHQgdCA9ICF0XG5sZXQgbGFzdF9lbHQgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnByZXYgIXRcbmxldCBmaXJzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGZpcnN0X2VsdCB0KVxubGV0IGxhc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChsYXN0X2VsdCB0KVxuXG5sZXQgaXNfZmlyc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpc19sYXN0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgICAgRWx0LmVxdWFsIGVsdCBsYXN0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbWVtX2VsdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBmaXJzdCAtPiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbjs7XG5cbmxldCBwcmV2IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0LnByZXYgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbmV4dCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGVsdCBsYXN0XG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIFNvbWUgKEVsdC5uZXh0IGVsdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9hZnRlciB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0Lmluc2VydF9hZnRlciBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2JlZm9yZSB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgICBuZXdfZWx0KVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2JlZm9yZSBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2VtcHR5IHQgdiA9XG4gIGxldCBuZXdfZWx0ID0gRWx0LmNyZWF0ZSB2IGluXG4gIHQgOj0gU29tZSBuZXdfZWx0O1xuICBuZXdfZWx0XG47O1xuXG5sZXQgaW5zZXJ0X2xhc3QgdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5zZXJ0X2VtcHR5IHQgdlxuICB8IFNvbWUgZmlyc3QgLT4gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdlxuOztcblxubGV0IGluc2VydF9maXJzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgIHQgOj0gU29tZSBuZXdfZWx0O1xuICAgIG5ld19lbHRcbjs7XG5cbmxldCByZW1vdmVfbGFzdCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC51bmxpbmtfYmVmb3JlIGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGZpcnN0IGxhc3QgdGhlbiB0IDo9IE5vbmU7XG4gICAgU29tZSAoRWx0LnZhbHVlIGxhc3QpXG47O1xuXG5sZXQgcmVtb3ZlX2ZpcnN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBzZWNvbmQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgIEVsdC51bmxpbmsgZmlyc3Q7XG4gICAgdCA6PSBpZiBFbHQuZXF1YWwgZmlyc3Qgc2Vjb25kIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjb25kO1xuICAgIFNvbWUgKEVsdC52YWx1ZSBmaXJzdClcbjs7XG5cbmxldCByZW1vdmUgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gaWdub3JlIChyZW1vdmVfZmlyc3QgdCA6IF8gb3B0aW9uKVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQudW5saW5rIGVsdFxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgbmV3X3QgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIGluc2VydF9sYXN0IChpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIChFbHQudmFsdWUgZWx0KSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDEgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbiAgICAgICAgICB8IFNlY29uZCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MiB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIGkgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmV4Y2VwdGlvbiBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yXG5cbmxldCBtb3ZlX2JlZm9yZSB0IGVsdCB+YW5jaG9yID1cbiAgaWYgRWx0LmVxdWFsIGFuY2hvciBlbHQgdGhlbiByYWlzZSBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yO1xuICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgYW5jaG9yKSAoRWx0LmhlYWRlciBlbHQpXG4gIHRoZW4gKFxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiB1bmxpbmsgW2VsdF0gKilcbiAgICAgICAgbGV0IGFmdGVyX2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBlbHQgYWZ0ZXJfZWx0O1xuICAgICAgICBsZXQgZmlyc3QgPVxuICAgICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICAgICBhZnRlcl9lbHQpXG4gICAgICAgICAgZWxzZSBmaXJzdFxuICAgICAgICBpblxuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYmVmb3JlIFthbmNob3JdICopXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGFuY2hvciBlbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBhbmNob3IgdGhlbiB0IDo9IFNvbWUgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19mcm9udCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChFbHQuZXF1YWwgZWx0IGZpcnN0KSB0aGVuIG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3I6Zmlyc3Rcbjs7XG5cbmxldCBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHQgdGhlbiB0IDo9IFNvbWUgYWZ0ZXJfZWx0O1xuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYWZ0ZXIgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9hZnRlciBhbmNob3IgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19iYWNrIHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBub3QgKEVsdC5lcXVhbCBlbHQgbGFzdCkgdGhlbiBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3I6bGFzdFxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19saXN0IHQgfD4gU2VxdWVuY2Uub2ZfbGlzdFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCB0X29mX3NleHAgPSBTZXhwbGliLlNleHAudF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCA9IFNleHBsaWIuU2V4cC5zZXhwX29mX3RcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxuaW5jbHVkZSAoXG4gIEJhc2UuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICB0eXBlIHNleHAgPSBCYXNlLlNleHAudCA9XG4gICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgIHwgTGlzdCBvZiB0IGxpc3RcbmVuZFxuXG5tb2R1bGUgU2V4cF9tYXliZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCB0ICogRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUmVzdWx0Lk9rIGEgLT4gc2V4cF9vZl9hIGFcbiAgICB8IFJlc3VsdC5FcnJvciAoc2V4cCwgZXJyKSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJzZXhwX3BhcnNlX2Vycm9yXCI7IHNleHA7IEVycm9yLnNleHBfb2ZfdCBlcnIgXVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBbIEF0b20gXCJzZXhwX3BhcnNlX2Vycm9yXCI7IHNleHA7IF8gXSB8IHNleHAgLT5cbiAgICAgICh0cnkgUmVzdWx0Lk9rIChhX29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgIHwgZXhuIC0+IFJlc3VsdC5FcnJvciAoc2V4cCwgRXJyb3Iub2ZfZXhuIGV4bikpXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIChncmFtbWFyIDogXyBTZXhwbGliLlNleHBfZ3JhbW1hci50KSA6IF8gdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICB7IHVudHlwZWQgPSBVbmlvbiBbIGdyYW1tYXIudW50eXBlZDsgQmFzZS5TZXhwLnRfc2V4cF9ncmFtbWFyLnVudHlwZWQgXSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFdpdGhfdGV4dCA9IHN0cnVjdFxuICBvcGVuIFJlc3VsdC5FeHBvcnRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgdmFsdWUgOiAnYVxuICAgIDsgdGV4dCA6IHN0cmluZ1xuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBzZXhwX29mX3QgXyB0ID0gQXRvbSB0LnRleHRcblxuICBsZXQgb2ZfdGV4dCB2YWx1ZV9vZl9zZXhwID8oZmlsZW5hbWUgPSBcIlwiKSB0ZXh0ID1cbiAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IG9mX3N0cmluZ19jb252IHRleHQgdmFsdWVfb2Zfc2V4cCkgd2l0aFxuICAgIHwgT2sgKGBSZXN1bHQgdmFsdWUpIC0+IE9rIHsgdmFsdWU7IHRleHQgfVxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gZXJyXG4gICAgfCBPayAoYEVycm9yIChleG4sIGFubm90YXRlZCkpIC0+XG4gICAgICBFcnJvciAoRXJyb3Iub2ZfZXhuIChBbm5vdGF0ZWQuZ2V0X2NvbnZfZXhuIGFubm90YXRlZCB+ZmlsZTpmaWxlbmFtZSB+ZXhjOmV4bikpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJXaXRoX3RleHQudCBzaG91bGQgYmUgc3RvcmVkIGFzIGFuIGF0b20sIGJ1dCBpbnN0ZWFkIGEgbGlzdCB3YXMgZm91bmQuXCJcbiAgICAgICAgc2V4cFxuICAgIHwgQXRvbSB0ZXh0IC0+IG9mX3RleHQgYV9vZl9zZXhwIHRleHQgfD4gT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5TdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgbGV0IHRleHQgdCA9IHQudGV4dFxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICBsZXQgb2ZfdmFsdWUgc2V4cF9vZl92YWx1ZSB2YWx1ZSA9XG4gICAgbGV0IHRleHQgPSBzZXhwX29mX3ZhbHVlIHZhbHVlIHw+IHRvX3N0cmluZ19odW0gaW5cbiAgICB7IHZhbHVlOyB0ZXh0IH1cbiAgOztcbmVuZFxuXG50eXBlICdhIG5vX3JhaXNlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG5sZXQgc2V4cF9vZl9ub19yYWlzZSBzZXhwX29mX2EgYSA9XG4gIHRyeSBzZXhwX29mX2EgYSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKHRyeSBMaXN0IFsgQXRvbSBcImZhaWx1cmUgYnVpbGRpbmcgc2V4cFwiOyBzZXhwX29mX2V4biBleG4gXSB3aXRoXG4gICAgIHwgXyAtPiBBdG9tIFwiY291bGQgbm90IGJ1aWxkIHNleHAgZm9yIGV4biByYWlzZWQgd2hlbiBidWlsZGluZyBzZXhwIGZvciB2YWx1ZVwiKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5TZXhwKSAoQmFzZS5TZXhwKVxuXG5sZXQgb2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjdXJzaXZlbHkgb2Zfc2V4cCBzZXhwID1cbiAgbGV0IHIgPSBTZXhwbGliLkNvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyBpblxuICBsZXQgcHJldiA9ICFyIGluXG4gIEV4bi5wcm90ZWN0XG4gICAgfmZpbmFsbHk6KGZ1biAoKSAtPiByIDo9IHByZXYpXG4gICAgfmY6KGZ1biAoKSAtPlxuICAgICAgciA6PSBmYWxzZTtcbiAgICAgIG9mX3NleHAgc2V4cClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc2V4cFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V4cFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V4cFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2hfcXVldWVfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIFNfYmFja2VuZCA9IFNfYmFja2VuZFxuXG5tb2R1bGUgTWFrZV9iYWNrZW5kIChUYWJsZSA6IEhhc2h0YmxfaW50Zi5IYXNodGJsKSA6IFNfYmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBCYWNrZW5kID1cbiAgICBTMVxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9hcmcgOj0gJ2tleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfa2V5IDo9ICdrZXlcblxuICBtb2R1bGUgQmFja2VuZCA6IEJhY2tlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5X3ZhbHVlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlICgna2V5LCAndmFsdWUpIHQgPVxuICAgICAgICAgIHsga2V5IDogJ2tleVxuICAgICAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IGtleSB0ID0gdC5rZXlcbiAgICAgIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB7IGtleTsgdmFsdWUgfSA9XG4gICAgICAgIFslc2V4cF9vZjoga2V5ICogZGF0YV0gKGtleSwgdmFsdWUpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgb3BlbiBLZXlfdmFsdWUuVFxuICAgIG1vZHVsZSBFbHQgPSBEb3VibHlfbGlua2VkLkVsdFxuXG4gICAgdHlwZSAoJ2tleSwgJ2RhdGEpIHQgPVxuICAgICAgeyBtdXRhYmxlIG51bV9yZWFkZXJzIDogaW50XG4gICAgICA7IHF1ZXVlIDogKCdrZXksICdkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRcbiAgICAgIDsgdGFibGUgOiAoJ2tleSwgKCdrZXksICdkYXRhKSBLZXlfdmFsdWUudCBFbHQudCkgVGFibGUudFxuICAgICAgfVxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgdCA9XG4gICAgICBbJXNleHBfb2Y6IChrZXksIGRhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudF0gdC5xdWV1ZVxuICAgIDs7XG5cbiAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgYXNzZXJ0IChEb3VibHlfbGlua2VkLmxlbmd0aCB0LnF1ZXVlID0gVGFibGUubGVuZ3RoIHQudGFibGUpO1xuICAgICAgKCogTG9vayBhdCBlYWNoIGVsZW1lbnQgaW4gdGhlIHF1ZXVlLCBjaGVja2luZzpcbiAgICAgICAqICAgLSBldmVyeSBlbGVtZW50IGluIHRoZSBxdWV1ZSBpcyBpbiB0aGUgaGFzaCB0YWJsZVxuICAgICAgICogICAtIHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5c1xuICAgICAgKilcbiAgICAgIGxldCBrZXlzID0gVGFibGUuY3JlYXRlIH5zaXplOihUYWJsZS5sZW5ndGggdC50YWJsZSkgKFRhYmxlLmhhc2hhYmxlX3MgdC50YWJsZSkgaW5cbiAgICAgIERvdWJseV9saW5rZWQuaXRlciB0LnF1ZXVlIH5mOihmdW4ga3YgLT5cbiAgICAgICAgbGV0IGtleSA9IGt2LmtleSBpblxuICAgICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgIGFzc2VydCAobm90IChUYWJsZS5tZW0ga2V5cyBrZXkpKTtcbiAgICAgICAgICBUYWJsZS5zZXQga2V5cyB+a2V5IH5kYXRhOigpKVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlID8oZ3Jvd3RoX2FsbG93ZWQgPSB0cnVlKSA/KHNpemUgPSAxNikgaGFzaGFibGUgPVxuICAgICAgeyBudW1fcmVhZGVycyA9IDBcbiAgICAgIDsgcXVldWUgPSBEb3VibHlfbGlua2VkLmNyZWF0ZSAoKVxuICAgICAgOyB0YWJsZSA9IFRhYmxlLmNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQgfnNpemUgKFRhYmxlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlYWQgdCBmID1cbiAgICAgIHQubnVtX3JlYWRlcnMgPC0gdC5udW1fcmVhZGVycyArIDE7XG4gICAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQubnVtX3JlYWRlcnMgPC0gdC5udW1fcmVhZGVycyAtIDEpXG4gICAgOztcblxuICAgIGxldCBlbnN1cmVfY2FuX21vZGlmeSB0ID1cbiAgICAgIGlmIHQubnVtX3JlYWRlcnMgPiAwXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiSXQgaXMgYW4gZXJyb3IgdG8gbW9kaWZ5IGEgSGFzaF9xdWV1ZS50IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGl0LlwiXG4gICAgOztcblxuICAgIGxldCBjbGVhciB0ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBEb3VibHlfbGlua2VkLmNsZWFyIHQucXVldWU7XG4gICAgICBUYWJsZS5jbGVhciB0LnRhYmxlXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggdCA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlXG4gICAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuICAgIGxldCBsb29rdXAgdCBrID1cbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+IFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfZXhuIHQgayA9IChFbHQudmFsdWUgKFRhYmxlLmZpbmRfZXhuIHQudGFibGUgaykpLnZhbHVlXG4gICAgbGV0IG1lbSB0IGsgPSBUYWJsZS5tZW0gdC50YWJsZSBrXG5cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgdGFpbC1yZWN1cnNpdmUgQ29yZV9saXN0Lm1hcCAqKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuICAgIGxldCB0b19hcnJheSB0ID0gQXJyYXkubWFwIChEb3VibHlfbGlua2VkLnRvX2FycmF5IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuXG4gICAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmZvcl9hbGwgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT4gRG91Ymx5X2xpbmtlZC5leGlzdHMgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmZpbmRfbWFwIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgKERvdWJseV9saW5rZWQuZmluZCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgICAgICAgfmY6S2V5X3ZhbHVlLnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBpZiBUYWJsZS5tZW0gdC50YWJsZSBrZXlcbiAgICAgIHRoZW4gYEtleV9hbHJlYWR5X3ByZXNlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29udGVudHMgPSB7IEtleV92YWx1ZS5rZXk7IHZhbHVlIH0gaW5cbiAgICAgICAgbGV0IGVsdCA9XG4gICAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLmluc2VydF9sYXN0IHQucXVldWUgY29udGVudHNcbiAgICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLmluc2VydF9maXJzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICAgIGluXG4gICAgICAgIFRhYmxlLnNldCB0LnRhYmxlIH5rZXkgfmRhdGE6ZWx0O1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2sgdCA9IGVucXVldWUgdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250IHQgPSBlbnF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLmVucXVldWVfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIG1hdGNoIGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSB3aXRoXG4gICAgICB8IGBLZXlfYWxyZWFkeV9wcmVzZW50IC0+IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleVxuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFja19leG4gdCA9IGVucXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udF9leG4gdCA9IGVucXVldWVfZXhuIHQgYGZyb250XG5cbiAgICAoKiBQZXJmb3JtYW5jZSBoYWNrOiB3ZSBpbXBsZW1lbnQgdGhpcyB2ZXJzaW9uIHNlcGFyYXRlbHkgdG8gYXZvaWQgYWxsb2NhdGlvbiBmcm9tIHRoZVxuICAgICAgIG9wdGlvbi4gKilcbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250X2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgbWF5YmVfa3YgPVxuICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9sYXN0IHQucXVldWVcbiAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfZmlyc3QgdC5xdWV1ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIG1heWJlX2t2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT5cbiAgICAgICAgVGFibGUucmVtb3ZlIHQudGFibGUga3Yua2V5O1xuICAgICAgICBTb21lIChrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKSA9XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV93aXRoX2tleTogZW1wdHkgcXVldWVcIl1cbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKVxuICAgICAgfCBTb21lIChrLCB2KSAtPiBrLCB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgZnJvbnRcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGZyb250XG5cbiAgICBsZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXywgdikgLT4gU29tZSB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2sgdCA9IGRlcXVldWUgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250IHQgPSBkZXF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgbGFzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGxhc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX2V4bjogZW1wdHkgcXVldWVcIl1cblxuICAgIGxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfZW1wdHkgKClcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja19leG4gdCA9IGRlcXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IGRlcXVldWVfZXhuIHQgYGZyb250XG5cbiAgICBsZXQga2V5cyB0ID1cbiAgICAgICgqIFJldHVybiB0aGUga2V5cyBpbiB0aGUgb3JkZXIgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUua2V5XG4gICAgOztcblxuICAgIGxldCBpdGVyaSB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuaXRlciB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxuICAgIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZm9sZCB0LnF1ZXVlIH5pbml0IH5mOihmdW4gYWMga3YgLT5cbiAgICAgICAgICBmIGFjIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBhYyB+a2V5Ol8gfmRhdGEgLT4gZiBhYyBkYXRhKVxuICAgIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gbSB+Zm9sZCB0IH5mXG4gICAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuXG4gICAgbGV0IGRlcXVldWVfYWxsIHQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbWF0Y2ggZGVxdWV1ZV9mcm9udCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgZiB2O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCByZW1vdmUgdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kX2FuZF9yZW1vdmUgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLnJlbW92ZV9leG46IHVua25vd24ga2V5XCIgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZV9leG4gdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZW1vdmUgdCBrIHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlbW92ZV91bmtub3duX2tleSB0IGtcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX3JlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYE5vX3N1Y2hfa2V5XG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2O1xuICAgICAgICBgT2tcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVwbGFjZV9leG46IHVua25vd24ga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX2V4biB0IGsgdiA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggcmVwbGFjZSB0IGsgdiB3aXRoXG4gICAgICB8IGBOb19zdWNoX2tleSAtPiByYWlzZV9yZXBsYWNlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGRyb3AgPyhuID0gMSkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGlmIG4gPj0gbGVuZ3RoIHRcbiAgICAgIHRoZW4gY2xlYXIgdFxuICAgICAgZWxzZVxuICAgICAgICBmb3IgXyA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgOiBfIG9wdGlvbilcbiAgICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wID9uIHQgYGJhY2tcbiAgICBsZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcCA/biB0IGBmcm9udFxuXG4gICAgbGV0IGNvcHkgdCA9XG4gICAgICBsZXQgY29waWVkID0gY3JlYXRlIH5zaXplOihsZW5ndGggdCkgKFRhYmxlLmhhc2hhYmxlIHQudGFibGUpIGluXG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBlbnF1ZXVlX2JhY2tfZXhuIGNvcGllZCBrZXkgZGF0YSk7XG4gICAgICBjb3BpZWRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gUzAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSkgaGFzaF9xdWV1ZSA6PSAoJ2tleSwgJ2RhdGEpIEJhY2tlbmQudFxuXG4gIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChCYWNrZW5kIDogQmFja2VuZCB3aXRoIHR5cGUgKCdrLCAnZCkgdCA6PSAoJ2ssICdkKSBCYWNrZW5kLnQpXG5cbiAgICB0eXBlIGtleSA9IFQuS2V5LnRcbiAgICB0eXBlICdkYXRhIHQgPSAoVC5LZXkudCwgJ2RhdGEpIEJhY2tlbmQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA6IFMgd2l0aCB0eXBlIGtleSA9IEtleS50ID0gTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgS2V5KVxuICAgIGVuZClcblxuICBpbmNsdWRlIEJhY2tlbmRcbmVuZFxuXG5pbmNsdWRlIE1ha2VfYmFja2VuZCAoSGFzaHRibClcbiIsIigqKiBGdW5jdG9ycyBhbmQgaW50ZXJmYWNlcyB1c2VkIHRvIG1ha2UgbW9kdWxlcyBoYXNoYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hhYmxlX2ludGZcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfcGxhaW4pIDpcbiAgU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3BsYWluIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5KSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcbiAgaW5jbHVkZSBUXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgVC5LZXlcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfYmluYWJsZSkgOlxuICBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcblxuICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCA9IChrZXksICdhKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgdmFsIGhhc2hhYmxlIDoga2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGUpIDogUyB3aXRoIHR5cGUga2V5IDo9IEtleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoS2V5KVxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChLZXkpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9iaW5hYmxlXG5cbiAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENoYXIgPSBCYXNlLkNoYXJcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5pbmNsdWRlIEhleGR1bXBfaW50ZlxuXG5sZXQgYnl0ZXNfcGVyX2xpbmUgPSAxNlxuXG4oKiBJbml0aWFsaXplIHRvIGVub3VnaCBsaW5lcyB0byBkaXNwbGF5IDQwOTYgYnl0ZXMgLS0gbGFyZ2UgZW5vdWdoIHRoYXQsIGZvciBleGFtcGxlLCBhXG4gICBjb21wbGV0ZSBFdGhlcm5ldCBwYWNrZXQgY2FuIGFsd2F5cyBiZSBkaXNwbGF5ZWQgLS0gaW5jbHVkaW5nIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlXG4gICBmaW5hbCBpbmRleC4gKilcbmxldCBkZWZhdWx0X21heF9saW5lcyA9IHJlZiAoKDQwOTYgLyBieXRlc19wZXJfbGluZSkgKyAxKVxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlMiAoVCA6IEluZGV4YWJsZTIpID0gc3RydWN0XG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGV4X29mX3BvcyBwb3MgPSBQcmludGYuc3ByaW50ZiBcIiUwOHhcIiBwb3NcblxuICAgIGxldCBoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgb2Zmc2V0ID1cbiAgICAgIGxldCBwb3MgPSBzdGFydCArIG9mZnNldCBpblxuICAgICAgaWYgcG9zID49IHVudGlsIHRoZW4gXCIgIFwiIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlMDJ4XCIgKENoYXIudG9faW50IChnZXQgdCBwb3MpKVxuICAgIDs7XG5cbiAgICBsZXQgaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXMgICVzICVzICVzICVzICVzICVzICVzICVzXCJcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA2KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDcpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgOClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA5KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDExKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE0KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE1KVxuICAgIDs7XG5cbiAgICBsZXQgcHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgU3RyaW5nLmluaXQgKHVudGlsIC0gc3RhcnQpIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgY2hhciA9IGdldCB0IChzdGFydCArIGkpIGluXG4gICAgICAgIGlmIENoYXIuaXNfcHJpbnQgY2hhciB0aGVuIGNoYXIgZWxzZSAnLicpXG4gICAgOztcblxuICAgIGxldCBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4ID1cbiAgICAgIGxldCBzdGFydCA9IHBvcyArIChsaW5lX2luZGV4ICogYnl0ZXNfcGVyX2xpbmUpIGluXG4gICAgICBsZXQgdW50aWwgPSBtaW4gKHN0YXJ0ICsgYnl0ZXNfcGVyX2xpbmUpIChwb3MgKyBsZW4pIGluXG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzICAlcyAgfCVzfFwiXG4gICAgICAgIChoZXhfb2ZfcG9zIHN0YXJ0KVxuICAgICAgICAoaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsKVxuICAgICAgICAocHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwpXG4gICAgOztcblxuICAgIGxldCB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0ID1cbiAgICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgbWF4X2xpbmVzID1cbiAgICAgICAgbWF0Y2ggbWF4X2xpbmVzIHdpdGhcbiAgICAgICAgfCBTb21lIG1heF9saW5lcyAtPiBtYXhfbGluZXNcbiAgICAgICAgfCBOb25lIC0+ICFkZWZhdWx0X21heF9saW5lc1xuICAgICAgaW5cbiAgICAgICgqIGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IDMgbGluZXM6IGZpcnN0IGxpbmUgb2YgaGV4LCBlbGxpcHNpcywgbGFzdCBsaW5lIG9mIGhleCAqKVxuICAgICAgbGV0IG1heF9saW5lcyA9IG1heCBtYXhfbGluZXMgMyBpblxuICAgICAgKCogdW5hYnJpZGdlZCBsaW5lcyA9IGxpbmVzIG9mIGhleCArIGxpbmUgd2l0aCBmaW5hbCBpbmRleCAqKVxuICAgICAgbGV0IHVuYWJyaWRnZWRfbGluZXMgPVxuICAgICAgICBJbnQucm91bmRfdXAgbGVuIH50b19tdWx0aXBsZV9vZjpieXRlc19wZXJfbGluZSAvIGJ5dGVzX3Blcl9saW5lXG4gICAgICBpblxuICAgICAgKCogRmlndXJlIG91dCB3aGVyZSB3ZSBuZWVkIHRvIHNraXAgZnJvbSBhbmQgdG8gaWYgW21heF9saW5lcyA8IHVuYWJyaWRnZWRfbGluZXNdLlxuICAgICAgICAgU2tpcCBhZnRlciBoYWxmIHRoZSBhY3R1YWwgaGV4IGxpbmVzIChzdWJ0cmFjdGluZyBvbmUgbGluZSBmb3IgdGhlIGVsbGlwc2lzKS5cbiAgICAgICAgIFNraXAgdG8gbmVhciB0aGUgZW5kLCBsZXNzIHRoZSBudW1iZXIgb2YgbGluZXMgcmVtYWluaW5nIHRvIHByb2R1Y2UsIHBsdXMgdGhlXG4gICAgICAgICBlbGxpcHNpcyBsaW5lLiAqKVxuICAgICAgbGV0IHNraXBfZnJvbSA9IChtYXhfbGluZXMgLSAxKSAvIDIgaW5cbiAgICAgIGxldCBza2lwX3RvID0gdW5hYnJpZGdlZF9saW5lcyAtIChtYXhfbGluZXMgLSBza2lwX2Zyb20pICsgMSBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGxpbmVfaW5kZXggLT5cbiAgICAgICAgaWYgbGluZV9pbmRleCA+PSB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIGlmIGxpbmVfaW5kZXggPSBza2lwX2Zyb20gJiYgbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc1xuICAgICAgICB0aGVuIFlpZWxkIChcIi4uLlwiLCBza2lwX3RvKVxuICAgICAgICBlbHNlIFlpZWxkIChsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4LCBsaW5lX2luZGV4ICsgMSkpXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfaHVtID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgdG9fc2VxdWVuY2UgP21heF9saW5lcyA/cG9zID9sZW4gdCB8PiBTZXF1ZW5jZS50b19saXN0IHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgXyBfIHQgPSB0b19zZXF1ZW5jZSB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgcHJpbnRhYmxlID1cbiAgICAgICAgbGV0IHJlYyBwcmludGFibGVfZnJvbSB0IH5wb3Mgfmxlbmd0aCA9XG4gICAgICAgICAgcG9zID49IGxlbmd0aFxuICAgICAgICAgIHx8IChDaGFyLmlzX3ByaW50IChnZXQgdCBwb3MpICYmIHByaW50YWJsZV9mcm9tIHQgfnBvczoocG9zICsgMSkgfmxlbmd0aClcbiAgICAgICAgaW5cbiAgICAgICAgZnVuIHQgLT4gcHJpbnRhYmxlX2Zyb20gdCB+cG9zOjAgfmxlbmd0aDoobGVuZ3RoIHQpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gcG9zIC0+IGdldCB0IHBvcylcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBpZiBwcmludGFibGUgdCB0aGVuIFslc2V4cCAodG9fc3RyaW5nIHQgOiBzdHJpbmcpXSBlbHNlIFslc2V4cCAodCA6IChhLCBiKSB0KV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUxIChUIDogSW5kZXhhYmxlMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPZl9pbmRleGFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICAgICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgc2V4cF9vZl90IHggdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgeCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodCA6IChhLCBfKSBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlIChUIDogSW5kZXhhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG4gICAgbGV0IHRvX3NlcXVlbmNlID0gTS5IZXhkdW1wLnRvX3NlcXVlbmNlXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPSBNLkhleGR1bXAudG9fc3RyaW5nX2h1bVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCA6IF8gTS5IZXhkdW1wLlByZXR0eS50KV1cbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9zZXhwX2dyYW1tYXIgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3JfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBFeHRlbmQgKE0gOiBCYXNlLklkZW50aWZpYWJsZS5TKSAoQiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSBNLnQpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG4gICAgaW5jbHVkZSAoQiA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZF9iaW5hYmxlIChNKSAoVClcblxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBUXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IE0uaGFzaGFibGVcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4oKiBUaGVzZSB0d28gYXJlIG5lZWRlZCBiZWNhdXNlIFtpbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmRdIChwcmVzZW50IGxhdGVyIGluIHRoZSBmaWxlKVxuICAgYmluZHMgbmV3IFtNYXBdIGFuZCBbU2V0XSBtb2R1bGVzLiAqKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgIGxldCBvZl9zdHJpbmcgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcblxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFN0YWJsZS5WMS5oYXNoYWJsZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLlN0cmluZylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnN0cmluZ1xubGV0IGdlbl9ub25lbXB0eSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eVxubGV0IGdlbicgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19vZlxubGV0IGdlbl9ub25lbXB0eScgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlfb2ZcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW5ndGggY2hhcnMgPVxuICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFycyB+bGVuZ3RoXG47O1xuXG5sZXQgdGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOjAgfmxlbjppXG47O1xuXG5sZXQgcnRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHJmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpXG47O1xuXG4oKiogU2VlIHshQXJyYXkubm9ybWFsaXplfSBmb3IgdGhlIGZvbGxvd2luZyA0IGZ1bmN0aW9ucy4gKilcbmxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG5sZXQgc2xpY2UgdCBzdGFydCBzdG9wID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuOztcblxubGV0IG5nZXQgeCBpID1cbiAgbGV0IG1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZyBpblxuICB4Lltub3JtYWxpemUgeCBpXVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuU3RyaW5nfVtCYXNlLlN0cmluZ119LiAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuZW5kXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBbQ2FzZWxlc3NdIGNvbXBhcmVzIGFuZCBoYXNoZXMgc3RyaW5ncyBpZ25vcmluZyBjYXNlLCBzbyB0aGF0IGZvciBleGFtcGxlXG4gICAgW0Nhc2VsZXNzLmVxdWFsIFwiT0NhbWxcIiBcIm9jYW1sXCJdIGFuZCBbQ2FzZWxlc3MuKFwiYXBwbGVcIiA8IFwiQmFuYW5hXCIpXSBhcmUgW3RydWVdLCBhbmRcbiAgICBbQ2FzZWxlc3MuTWFwXSwgW0Nhc2VsZXNzLlRhYmxlXSBsb29rdXAgYW5kIFtDYXNlbGVzcy5TZXRdIG1lbWJlcnNoaXAgaXNcbiAgICBjYXNlLWluc2Vuc2l0aXZlLlxuXG4gICAgW0Nhc2VsZXNzXSBhbHNvIHByb3ZpZGVzIGNhc2UtaW5zZW5zaXRpdmUgW2lzX3N1ZmZpeF0gYW5kIFtpc19wcmVmaXhdIGZ1bmN0aW9ucywgc29cbiAgICB0aGF0IGZvciBleGFtcGxlIFtDYXNlbGVzcy5pc19zdWZmaXggXCJPQ2FtbFwiIH5zdWZmaXg6XCJBbUxcIl0gYW5kIFtDYXNlbGVzcy5pc19wcmVmaXhcbiAgICBcIk9DYW1sXCIgfnByZWZpeDpcIm9jXCJdIGFyZSBbdHJ1ZV0uICopXG5tb2R1bGUgQ2FzZWxlc3MgOiBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG4gIGVuZFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc2V4cF1cblxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxuXG4oKiogW3NsaWNlIHQgc3RhcnQgc3RvcF0gcmV0dXJucyBhIG5ldyBzdHJpbmcgaW5jbHVkaW5nIGVsZW1lbnRzIFt0LihzdGFydCldIHRocm91Z2hcbiAgICBbdC4oc3RvcC0xKV0sIG5vcm1hbGl6ZWQgUHl0aG9uLXN0eWxlIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IFtzdG9wID0gMF0gaXMgdHJlYXRlZCBhc1xuICAgIFtzdG9wID0gbGVuZ3RoIHRdLiAqKVxudmFsIHNsaWNlIDogdCAtPiBpbnQgLT4gaW50IC0+IHRcblxuKCoqIFtuZ2V0IHMgaV0gZ2V0cyB0aGUgY2hhciBhdCBub3JtYWxpemVkIHBvc2l0aW9uIFtpXSBpbiBbc10uICopXG52YWwgbmdldCA6IHQgLT4gaW50IC0+IGNoYXJcblxuKCoqIFt0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3QgcHJlZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHByZWZpeCB+Zl1cbiAgICAoU2VlIFtsc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHByZWZpeCkgKilcbnZhbCB0YWtlX3doaWxlIDogdCAtPiBmOihjaGFyIC0+IGJvb2wpIC0+IHRcblxuKCoqIFtydGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHN1ZmZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBzdWZmaXggfmZdXG4gICAgKFNlZSBbcnN0cmlwXSB0byBkcm9wIHN1Y2ggYSBzdWZmaXgpICopXG52YWwgcnRha2Vfd2hpbGUgOiB0IC0+IGY6KGNoYXIgLT4gYm9vbCkgLT4gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHkgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mXG4gICAgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5JyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbc3RyaW5nXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbU3RyaW5nLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gaW50cm9kdWNlXG4gICAgW1N0cmluZy5TdGFibGUuU2V0XSwgW1N0cmluZy5TdGFibGUuTWFwXSwgW1N0cmluZy5TdGFibGUuVGFibGVdLCBhbmQgcHJvdmlkZSBpbnRlcmZhY2VcbiAgICB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfY29tcGFyYWJsZS5WMVxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Cb29sKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkJvb2xcblxuaW5jbHVkZSAoXG4gIEJhc2UuQm9vbCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJvb2xcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5Cb29sKVxuXG5sZXQgb2Zfc3RyaW5nX2h1bSA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCB0YWJsZSA9IFN0cmluZy5DYXNlbGVzcy5UYWJsZS5jcmVhdGUgKCkgaW5cbiAgICAgICBbIGZhbHNlLCBbIFwiZmFsc2VcIjsgXCJub1wiOyBcIjBcIiBdOyB0cnVlLCBbIFwidHJ1ZVwiOyBcInllc1wiOyBcIjFcIiBdIF1cbiAgICAgICB8PiBMaXN0Lml0ZXIgfmY6KGZ1biAoYm9vbCwgc3RyaW5ncykgLT5cbiAgICAgICAgIExpc3QuaXRlciBzdHJpbmdzIH5mOihmdW4gc3RyaW5nIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6c3RyaW5nIH5kYXRhOmJvb2w7XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5wcmVmaXggc3RyaW5nIDEpIH5kYXRhOmJvb2wpKTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgbGV0IHJhaXNlX2ludmFsaWQgaW5wdXQgPVxuICAgIGxldCBleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlID0gU3RyaW5nLlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgKGZvcmNlIHRhYmxlKSkgaW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCb29sLm9mX3N0cmluZ19odW06IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgIChpbnB1dCA6IHN0cmluZylcbiAgICAgICAgICAoZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA6IFN0cmluZy5TZXQudCldXG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBIYXNodGJsLmZpbmRfYW5kX2NhbGwgKGZvcmNlIHRhYmxlKSBzdHJpbmcgfmlmX2ZvdW5kOkZuLmlkIH5pZl9ub3RfZm91bmQ6cmFpc2VfaW52YWxpZFxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5ib29sXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5ib29sXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5ib29sXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgYmluX2lvXVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQnl0ZXNcblxuICAgIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5CeXRlcylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IGdlbicgY2hhcl9nZW4gPSBTdHJpbmcuZ2VuJyBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuID1cbiAgU3RyaW5nLmdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkNoYXIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG4oKiBpbmNsdWRlIFtCYXNlLkNoYXJdIGFmdGVyIHRoZSBhcHBsaWNhdGlvbiBvZiBbSWRlbnRpZmlhYmxlLkV4dGVuZF0gdG8gcmVwbGFjZSB0aGVcbiAgIFtDb21wYXJhYmxlXSBmdW5jdGlvbnMgd2l0aCB0aGUgcGVydmFzaXZlIHZlcnNpb25zICopXG5pbmNsdWRlIChcbiAgQmFzZS5DaGFyIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQ2hhclxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNoYXJcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jaGFyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5jaGFyXG5sZXQgZ2VuX2RpZ2l0ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2RpZ2l0XG5sZXQgZ2VuX2xvd2VyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9sb3dlcmNhc2VcbmxldCBnZW5fdXBwZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VwcGVyY2FzZVxubGV0IGdlbl9hbHBoYSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYVxubGV0IGdlbl9hbHBoYW51bSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYW51bVxubGV0IGdlbl9wcmludCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9wcmludFxubGV0IGdlbl93aGl0ZXNwYWNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3doaXRlc3BhY2VcbmxldCBnZW5fdW5pZm9ybV9pbmNsdXNpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ24gPSBCYXNlLlNpZ25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduKSAoU3RhYmxlLlYxKVxuIiwiZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XSAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXRcblxuICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IFRcblxubGV0IHZhbGlkYXRlX29yZGluYXJ5IHQgPVxuICBWYWxpZGF0ZS5vZl9lcnJvcl9vcHRcbiAgICAobGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgICAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBOb25lXG4gICAgIHwgQy5JbmZpbml0ZSAtPiBTb21lIFwidmFsdWUgaXMgaW5maW5pdGVcIlxuICAgICB8IEMuTmFuIC0+IFNvbWUgXCJ2YWx1ZSBpcyBOYU5cIilcbjs7XG5cbm1vZHVsZSBWID0gc3RydWN0XG4gIG1vZHVsZSBaWiA9IENvbXBhcmFibGUuVmFsaWRhdGUgKFQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfYm91bmQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9sYm91bmQgdCB+bWluKVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfdWJvdW5kIHQgfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFZcblxubW9kdWxlIFJvYnVzdF9jb21wYXJlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAoKiBpbnRlbmRlZCB0byBiZSBhIHRvbGVyYW5jZSBvbiBodW1hbi1lbnRlcmVkIGZsb2F0cyAqKVxuXG4gICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG5cbiAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSBmbG9hdFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG4gICAgZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgICAoKiBXZSBoYXZlIHRlc3QgaW4gdGhlIHRyZWUgdGhhdCByZWx5IG9uIHRoZXNlIGZ1bmN0aW9ucyBub3QgYWxsb2NhdGluZywgZXZlbiB3aXRob3V0XG4gICAgICAgWF9MSUJSQVJZX0lOTElORy4gVGhlIG9ubHkgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZXNlIGRvbid0IGNyZWF0ZSB0ZW1wb3JhcnkgYm94ZWRcbiAgICAgICBmbG9hdHMgd2l0aG91dCBYX0xJQlJBUllfSU5MSU5HIGlzIGZvciB0aGlzIGNvZGUgdG8gc2VlIHRoZSBmbG9hdCBvcGVyYXRpb25zIGFzXG4gICAgICAgZXh0ZXJuYWxzLCBhcyBkZWZpbmVkIGluIFtQZXJ2YXNpdmVzXS4gVGhhdCdzIHdoeSB3ZSB1c2UgW1BvbHldIGFuZCBmbG9hdFxuICAgICAgIGFyaXRobWV0aWMgZnJvbSBbQ2FtbF0uICopXG4gICAgb3BlbiBQb2x5XG5cbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gVC5yb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA+PS4gKSB4IHkgPSB4ID49IENhbWwuKCAtLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPD0uICkgeCB5ID0geSA+PS4geFxuICAgIGxldCAoID0uICkgeCB5ID0geCA+PS4geSAmJiB5ID49LiB4XG4gICAgbGV0ICggPi4gKSB4IHkgPSB4ID4gQ2FtbC4oICsuICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8LiApIHggeSA9IHkgPi4geFxuICAgIGxldCAoIDw+LiApIHggeSA9IG5vdCAoeCA9LiB5KVxuXG4gICAgbGV0IHJvYnVzdGx5X2NvbXBhcmUgeCB5ID1cbiAgICAgIGxldCBkID0gQ2FtbC4oIC0uICkgeCB5IGluXG4gICAgICBpZiBkIDwgQ2FtbC4oIH4tLiApIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgICAgdGhlbiAtMVxuICAgICAgZWxzZSBpZiBkID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgMFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTdcbiAgZW5kKVxuXG5pbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkZsb2F0Lk9cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlXG5lbmRcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBpbmNsdWRlIChcbiAgICBCYXNlLkZsb2F0LlRlcnNlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0LlRlcnNlXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5sZXQgcm9idXN0X3NpZ24gdCA6IFNpZ24udCA9IGlmIHQgPi4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwuIDAuIHRoZW4gTmVnIGVsc2UgWmVyb1xuXG4oKiBUaGVyZSBhcmUgdHdvIGlzc3VlczpcbiAgIC0gRmxvYXQuc2lnbiB1c2VkIHRvIHVzZSByb2J1c3QgY29tcGFyaXNvbiwgYW5kIHVzZXJzIG9mIFtDb3JlXSBtaWdodCBoYXZlIGNvbWUgdG9cbiAgICAgZGVwZW5kIG9uIHRoaXMuXG4gICAtIFJvYnVzdG5lc3MgYXNpZGUsIHdoYXQgd2UgZ2V0IGZyb20gQ29tcGFyYWJsZS5XaXRoX3plcm8gd291bGQgbWFwIG5hbiB0byBOZWcuXG4qKVxubGV0IHNpZ24gPSByb2J1c3Rfc2lnblxuXG4oKiBTdGFuZGFyZCAxMiBzaWduaWZpY2FudCBkaWdpdHMsIGV4cG9uZW50aWFsIG5vdGF0aW9uIHVzZWQgYXMgbmVjZXNzYXJ5LCBndWFyYW50ZWVkIHRvXG4gICBiZSBhIHZhbGlkIE9DYW1sIGZsb2F0IGxleGVtLCBub3QgdG8gbG9vayBsaWtlIGFuIGludC4gKilcbmxldCB0b19zdHJpbmdfMTIgeCA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIHgpXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5mbG9hdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmxvYXRcbmxldCBnZW5fdW5pZm9ybV9leGNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZVxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9pbmNsdXNpdmVcbmxldCBnZW5fd2l0aG91dF9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3dpdGhvdXRfbmFuXG5sZXQgZ2VuX2Zpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfZmluaXRlXG5sZXQgZ2VuX3Bvc2l0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9wb3NpdGl2ZVxubGV0IGdlbl9uZWdhdGl2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmVcbmxldCBnZW5femVybyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgWmVyb1xubGV0IGdlbl9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5hblxubGV0IGdlbl9zdWJub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIFN1Ym5vcm1hbFxubGV0IGdlbl9ub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5vcm1hbFxubGV0IGdlbl9pbmZpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgSW5maW5pdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuSW50XG5cbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHNleHBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuSW50XG5pbmNsdWRlIEJhc2UuSW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludClcblxuKCogVGhpcyBpcyBhbHJlYWR5IGRlZmluZWQgYnkgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8sIGJ1dCBTaWduLm9mX2ludCBpc1xuICAgbW9yZSBkaXJlY3QuICopXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludF9pbnRmfVtCYXNlLkludF9pbnRmXX0uICopXG5cbm1vZHVsZSB0eXBlIFJvdW5kID0gQmFzZS5JbnQuUm91bmRcblxubW9kdWxlIHR5cGUgU3RhYmxlID0gc2lnXG4gIG1vZHVsZSBWMSA6IFN0YWJsZV9jb21wYXJhYmxlLlYxXG5lbmRcblxubW9kdWxlIHR5cGUgSGV4YWJsZSA9IHNpZ1xuICB0eXBlIHRcblxuICBtb2R1bGUgSGV4IDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIEJhc2UuU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCB0b19zdHJpbmdfaHVtIDogP2RlbGltaXRlcjpjaGFyIC0+IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gICgqXyBFbnN1cmUgdGhhdCB0aGlzIG1vZHVsZSBpcyBhbiBleHRlbnNpb24gb2YgW0Jhc2UuSW50LkhleGFibGVdLiAqKVxuICBpbmNsdWRlIEJhc2UuSW50LkhleGFibGUgd2l0aCB0eXBlIHQgOj0gdCBhbmQgbW9kdWxlIEhleCA6PSBIZXhcbmVuZFxuXG5tb2R1bGUgdHlwZSBFeHRlbnNpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuICBpbmNsdWRlIEhleGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgUXVpY2tjaGVja2FibGUuU19pbnQgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfdW5ib3VuZGVkID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU191bmJvdW5kZWRcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBFeHRlbnNpb25fd2l0aF9zdGFibGUgPSBzaWdcbiAgaW5jbHVkZSBFeHRlbnNpb25cblxuICBtb2R1bGUgU3RhYmxlIDpcbiAgICBTdGFibGUgd2l0aCB0eXBlIFYxLnQgPSB0IGFuZCB0eXBlIFYxLmNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50MzIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDMyXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDMyKVxuXG50eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDMyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQzMlxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQ2NClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50NjRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjQpXG5cbnR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDY0XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5JbnQ2NH1bQmFzZS5JbnQ2NF19LiAqKVxuXG4oKiogezIgSW50ZXJmYWNlIGZyb20gQmFzZX0gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5JbnQ2NFxuZW5kXG5cbigqKiB7MiBFeHRlbnNpb25zfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZVxuICBJbnRfaW50Zi5FeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIEJpbiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgOj0gQmFzZS5JbnQ2My50ID0gc3RydWN0XG4gIG1vZHVsZSBCaW5fZW11bGF0ZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50NjQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC5XLndyYXBfZXhuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC5XLnVud3JhcFxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgYmluYWJsZSA9IChtb2R1bGUgQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gIGxldCBiaW5hYmxlX29mX3JlcHIgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYiBiaW5hYmxlID0gZnVuY3Rpb25cbiAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiAobW9kdWxlIEludClcbiAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IChtb2R1bGUgQmluX2VtdWxhdGVkKVxuICA7O1xuXG4gIGxldCBiaW5hYmxlIDogQmFzZS5JbnQ2My50IGJpbmFibGUgPSBiaW5hYmxlX29mX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcblxuICBpbmNsdWRlICh2YWwgYmluYWJsZSlcblxuICBsZXQgYmluX3NoYXBlX3QgPSBCaW5fcHJvdC5TaGFwZS5iaW5fc2hhcGVfaW50NjNcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCaW5cblxuICAgICAgaW5jbHVkZSAoXG4gICAgICAgIEJhc2UuSW50NjMgOlxuICAgICAgICAgIEJhc2UuQ29tcGFyYWJsZS5TXG4gICAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IEJhc2UuSW50NjMuY29tcGFyYXRvcl93aXRuZXNzKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG4oKiBUaGlzIFtpbmNsdWRlIHN0cnVjdF0gaXMgcmVxdWlyZWQgYmVjYXVzZSBpdCBsZXRzIHVzIHNoYWRvdyBbdF0gd2hlbiB3ZSBpbmNsdWRlXG4gICBbQmFzZS5JbnQ2M10gbGF0ZXIgb24uICopXG5pbmNsdWRlIHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnRcbmVuZFxuXG5sZXQgdHlwZXJlcF9vZl90ID0gdHlwZXJlcF9vZl9pbnQ2M1xubGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl9pbnQ2M1xuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQ2MylcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIEJpblxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmFibGUuUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID1cbiAgQmFzZS5JbnQ2M1xuXG5pbmNsdWRlIEJhc2UuSW50NjNcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjMpXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIEJhc2UuRXhwb3J0XG4gIG9wZW4gQmluX3Byb3QuU3RkXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLlVuaXQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuVW5pdFxuXG50eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IudW5pdFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5pdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIudW5pdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnIGVuZFxuXG50eXBlIG0gPSAobW9kdWxlIFMpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG9wZW4gU2V4cGxpYi5TdGRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgICBsZXQgbWFwID0gQmFzZS5MYXp5Lm1hcFxuICAgIGxldCBjb21wYXJlID0gQmFzZS5MYXp5LmNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIFN0YWJsZS5WMS50XG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIChCYXNlLkxhenkgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuTmF0aXZlaW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuTmF0aXZlaW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLk5hdGl2ZWludClcblxudHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubmF0aXZlaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuTm90aGluZy50ID0gfFxuXG4gICAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX3NoYXBlXVxuICAgIGVuZFxuXG4gICAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBCYXNlLk5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fc2hhcGVfdCA9IFNoYXBlLmJpbl9zaGFwZV90XG4gICAgbGV0IHRwX2xvYyA9IFslaGVyZV0ucG9zX2ZuYW1lIF4gXCIuU3RhYmxlLlYxLnRcIlxuICAgIGxldCBhbGwgPSBbXVxuICAgIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgICBsZXQgYmluX3NpemVfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3dyaXRlX3QgX2J1ZiB+cG9zOl8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgXyA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIHRwX2xvYyAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRfdCBfYnVmIH5wb3NfcmVmID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV9yZWFkX2Vycm9yIChFbXB0eV90eXBlIHRwX2xvYykgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliLkNvbnZfZXJyb3IuZW1wdHlfdHlwZSB0cF9sb2Mgc2V4cFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLk5vdGhpbmdcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoQmFzZS5Ob3RoaW5nKSAoU3RhYmxlLlYxKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgbmV2ZXJfcmV0dXJucyA9IE5vdGhpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbmV2ZXJfcmV0dXJucyA9IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEJhc2UuT3JkZXJpbmcudCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBCYXNlLk9yZGVyaW5nIHdpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSAoQmFzZS5PcmRlcmluZyA6IEJhc2VfbWFzaylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5SZWZcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG5cbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gIGxldCByZWFkX29ubHkgPSBGbi5pZFxuICBsZXQgb2ZfcmVmID0gRm4uaWRcbiAgbGV0IHRvX3JlZiA9IEZuLmlkXG4gIGxldCBzZXQgPSAoIDo9IClcbiAgbGV0IGdldCA9ICggISApXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5pbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbikgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuIiwiKCogV2UgZG9uJ3QganVzdCBpbmNsdWRlIFNleHBsaWIuU3RkIGJlY2F1c2Ugb25lIGNhbiBvbmx5IGRlZmluZSBIYXNodGJsIG9uY2UgaW4gdGhpc1xuICAgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIFtpbmNsdWRlXWQgZmlyc3Qgc28gdGhhdCBldmVyeXRoaW5nIGVsc2Ugc2hhZG93cyBpdCAqKVxuaW5jbHVkZSBDb3JlX3BlcnZhc2l2ZXNcblxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcbmluY2x1ZGUgRGVwcmVjYXRlX3BpcGVfYmFuZ1xuaW5jbHVkZSBFaXRoZXIuRXhwb3J0XG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuaW5jbHVkZSBJbnRlcmZhY2VzXG5pbmNsdWRlIExpc3QuSW5maXhcbmluY2x1ZGUgTmV2ZXJfcmV0dXJuc1xuaW5jbHVkZSBPcmRlcmluZy5FeHBvcnRcbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5pbmNsdWRlIFJlc3VsdC5FeHBvcnRcblxudHlwZSAtJ2EgcmV0dXJuID0gJ2EgV2l0aF9yZXR1cm4ucmV0dXJuID0gcHJpdmF0ZSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmluY2x1ZGUgc3RydWN0XG4gIGV4Y2VwdGlvbiBCdWcgb2Ygc3RyaW5nIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSBEb24ndCB1c2UgW0J1Z11cIl1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cblxuKCoqIFJhaXNlZCBpZiBtYWxsb2MgaW4gQyBiaW5kaW5ncyBmYWlsIChlcnJubyAqIHNpemUpLiAqKVxuZXhjZXB0aW9uIENfbWFsbG9jX2V4biBvZiBpbnQgKiBpbnRcblxuKCogZXJybm8sIHNpemUgKilcbmxldCAoKSA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkNfbWFsbG9jX2V4blwiIChDX21hbGxvY19leG4gKDAsIDApKVxuXG5leGNlcHRpb24gRmluYWxseSA9IEV4bi5GaW5hbGx5XG5cbmxldCBmc3QzICh4LCBfLCBfKSA9IHhcbmxldCBzbmQzIChfLCB5LCBfKSA9IHlcbmxldCB0cmQzIChfLCBfLCB6KSA9IHpcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgbGV0IHV3ID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZSBDYW1sLk5vdF9mb3VuZFxuICA7O1xuZW5kIDpcbnNpZ1xuICB2YWwgdXcgOiAnYSBvcHRpb24gLT4gJ2EgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEyXSBVc2UgW09wdGlvbi52YWx1ZV9leG5dXCJdXG5lbmQpXG5cbigqKiBbcGh5c19zYW1lXSBpcyBsaWtlIFtwaHlzX2VxdWFsXSwgYnV0IHdpdGggYSBtb3JlIGdlbmVyYWwgdHlwZS4gIFtwaHlzX3NhbWVdIGlzIHVzZWZ1bFxuICAgIHdoZW4gZGVhbGluZyB3aXRoIGV4aXN0ZW50aWFsIHR5cGVzLCB3aGVuIG9uZSBoYXMgYSBwYWNrZWQgdmFsdWUgYW5kIGFuIHVucGFja2VkIHZhbHVlXG4gICAgdGhhdCBvbmUgd2FudHMgdG8gY2hlY2sgYXJlIHBoeXNpY2FsbHkgZXF1YWwuICBPbmUgY2FuJ3QgdXNlIFtwaHlzX2VxdWFsXSBpbiBzdWNoIGFcbiAgICBzaXR1YXRpb24gYmVjYXVzZSB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudC4gKilcbmxldCBwaHlzX3NhbWUgKHR5cGUgYSBiKSAoYSA6IGEpIChiIDogYikgPSBwaHlzX2VxdWFsIGEgKE9iai5tYWdpYyBiIDogYSlcblxubGV0ICggJSApID0gSW50LiggJSApXG5sZXQgKCAvJSApID0gSW50LiggLyUgKVxubGV0ICggLy8gKSA9IEludC4oIC8vIClcbmxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxubGV0IGJwcmludGYgPSBQcmludGYuYnByaW50ZlxubGV0IGNvbnN0ID0gRm4uY29uc3RcbmxldCBlcHJpbnRmID0gUHJpbnRmLmVwcmludGZcbmxldCBlcnJvciA9IE9yX2Vycm9yLmVycm9yXG5sZXQgZXJyb3JfcyA9IE9yX2Vycm9yLmVycm9yX3NcbmxldCBmYWlsd2l0aGYgPSBCYXNlLlByaW50Zi5mYWlsd2l0aGZcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgbGV0IGZhaWx3aXRocCA9IChFcnJvci5mYWlsd2l0aHAgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdKVxuZW5kIDpcbnNpZ1xuICB2YWwgZmFpbHdpdGhwXG4gICAgOiAgP3N0cmljdDp1bml0XG4gICAgLT4gU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgIC0+IHN0cmluZ1xuICAgIC0+ICdhXG4gICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAtPiBfXG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMC0wM10gVXNlIFtmYWlsd2l0aHNdIGluc3RlYWQuXCJdXG5lbmQpXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBmb3JjZSA9IEJhc2UuTGF6eS5mb3JjZVxubGV0IGZwcmludGYgPSBQcmludGYuZnByaW50ZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgaWRlbnQgPSBGbi5pZFxuZW5kIDpcbnNpZ1xuICB2YWwgaWRlbnQgOiAnYSAtPiAnYSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDhdIFVzZSBbRm4uaWRdIGluc3RlYWQuXCJdXG5lbmQpXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBCYXNlLlByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBpZnByaW50ZiA9IFByaW50Zi5pZnByaW50ZlxubGV0IGlzX25vbmUgPSBPcHRpb24uaXNfbm9uZVxubGV0IGlzX3NvbWUgPSBPcHRpb24uaXNfc29tZVxubGV0IGtzcHJpbnRmID0gUHJpbnRmLmtzcHJpbnRmXG5sZXQgb2tfZXhuID0gT3JfZXJyb3Iub2tfZXhuXG5sZXQgcGh5c19lcXVhbCA9IEJhc2UucGh5c19lcXVhbFxubGV0IHBoeXNfc2FtZSA9IHBoeXNfc2FtZVxubGV0IHByaW50X3MgPSBTdGRpby5wcmludF9zXG5sZXQgZXByaW50X3MgPSBTdGRpby5lcHJpbnRfc1xubGV0IHByaW50ZiA9IFByaW50Zi5wcmludGZcbmxldCBwcm90ZWN0ID0gRXhuLnByb3RlY3RcbmxldCBwcm90ZWN0eCA9IEV4bi5wcm90ZWN0eFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgcm91bmQgPSBGbG9hdC5yb3VuZFxubGV0ICggKiouICkgPSBCYXNlLiggKiouIClcbmxldCAoICUuICkgPSBCYXNlLiggJS4gKVxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcbmxldCB1bnN0YWdlID0gU3RhZ2VkLnVuc3RhZ2VcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5fb3B0aW9uXG5cbigqIFdpdGggdGhlIGZvbGxvd2luZyBhbGlhc2VzLCB3ZSBhcmUganVzdCBtYWtpbmcgZXh0cmEgc3VyZSB0aGF0IHRoZSB0b3BsZXZlbCBzZXhwXG4gICBjb252ZXJ0ZXJzIGxpbmUgdXAgd2l0aCB0aGUgb25lcyBpbiBvdXIgbW9kdWxlcy4gKilcblxuXG5pbmNsdWRlIFR5cGVyZXBfbGliLlN0ZF9pbnRlcm5hbFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSwgW2J5dGVzXSwgYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZVxuICAgICBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBib29sID0gQm9vbC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludCA9IEludC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGF6eV90ID0gJ2EgTGF6eS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgdW5pdCA9IFVuaXQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgKCogQmluX3Byb3QgaGFzIG9wdGltaXplZCBmdW5jdGlvbnMgZm9yIGZsb2F0IGFycmF5cyAqKVxuICBpbmNsdWRlIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IEZsb2F0LnQgYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSBmbG9hdF9hcnJheSA6PSBmbG9hdF9hcnJheSlcbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgYm9vbCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgY2hhciBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgZmxvYXQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGludCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50MzIgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGludDY0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2Egb3B0aW9uXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXlcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBbZmxvYXQgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBpbnN0ZWFkXCJdXG4gIGVuZFxuICAgICAgICAgIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuZW5kXG53aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbndpdGggdHlwZSBib29sIDo9IGJvb2xcbndpdGggdHlwZSBjaGFyIDo9IGNoYXJcbndpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxud2l0aCB0eXBlIGludCA6PSBpbnRcbndpdGggdHlwZSBpbnQzMiA6PSBpbnQzMlxud2l0aCB0eXBlIGludDY0IDo9IGludDY0XG53aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG53aXRoIHR5cGUgbmF0aXZlaW50IDo9IG5hdGl2ZWludFxud2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbndpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG53aXRoIHR5cGUgYnl0ZXMgOj0gYnl0ZXNcbndpdGggdHlwZSAnYSBsYXp5X3QgOj0gJ2EgbGF6eV90XG53aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxud2l0aCB0eXBlIHVuaXQgOj0gdW5pdClcblxubGV0IHNleHBfb2ZfZXhuID0gRXhuLnNleHBfb2ZfdFxuXG5cbigqIFRoZSBjb2RlIGJlbG93IGNoZWNrcyB0aGF0IHRoZSBzaWduYXR1cmVzIGluIG1hcC5tbGkgYW5kIHNldC5tbGkgYXJlXG4gICBjb25zaXN0ZW50IHdpdGggdGhlIGdlbmVyaWMgbWFwIGFuZCBzZXQgc2lnbmF0dXJlcyBkZWZpbmVkIGluIG1hcF9pbnRmLm1sXG4gICBhbmQgc2V0X2ludGYubWwuICopXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIGNtcCA9ICdhXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIF8gOiBzaWdcbiAgICBvcGVuIFNldF9pbnRmXG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIFRyZWUuTmFtZWQudFxuICAgIGVuZFxuXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMyXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBULmNtcFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnMgOj1cbiAgICAgICAgKCdhLCAnY21wLCAneikgU2V0X2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICBlbmQgPVxuICAgIFNldFxuICBpblxuICAoKVxuOztcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnayBrZXkgPSAna1xuICAgIHR5cGUgJ2MgY21wID0gJ2NcbiAgZW5kXG4gIGluXG4gIGxldCBtb2R1bGUgXyA6IHNpZ1xuICAgIG9wZW4gTWFwX2ludGZcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICBlbmRcblxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zIDo9XG4gICAgICAgICgnYSwgJ2NtcCwgJ3opIE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sgVC5rZXlcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2MgVC5jbXBcbiAgZW5kID1cbiAgICBNYXBcbiAgaW5cbiAgKClcbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdIFtAQGltbWVkaWF0ZTY0XVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2ZfcmVwciA6IFJlcHIudCAtPiB0XG4gIHZhbCB0b19yZXByIDogdCAtPiBSZXByLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXByLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgb2ZfcmVwciA9IEZuLmlkXG4gIGxldCB0b19yZXByID0gRm4uaWRcblxuICBsZXQgdG9fc3RyaW5nIG4gPVxuICAgIGxldCBvcGVuIFJlcHIgaW5cbiAgICBsZXQga2liID0gb2ZfaW50IDEwMjQgaW5cbiAgICBsZXQgbWliID0ga2liICoga2liIGluXG4gICAgbGV0IGdpYiA9IGtpYiAqIG1pYiBpblxuICAgIGxldCBuX2FicyA9IGFicyBuIGluXG4gICAgaWYgbl9hYnMgPCBraWJcbiAgICB0aGVuIHNwcmludGYgXCIlZEJcIiAodG9faW50X2V4biBuKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBtaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ0tcIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBraWIpXG4gICAgZWxzZSBpZiBuX2FicyA8IGdpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnTVwiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IG1pYilcbiAgICBlbHNlIHNwcmludGYgXCIlZ0dcIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBnaWIpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgbilcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGJ5dGVzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAodG9fcmVwciB0KVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBCaWdhcnJheVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZV9iaWdzdHJpbmdcblxuICAgIG1vZHVsZSBaIDogc2lnXG4gICAgICB0eXBlIHQgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBiaWdzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBaXG5cbiAgICB0eXBlIHRfZnJvemVuID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gU3RhYmxlLlYxXG5pbmNsdWRlIFRcbm1vZHVsZSBVbnN0YWJsZSA9IFRcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24ubWFwIG1heF9tZW1fd2FpdGluZ19nYyB+ZjpCeXRlX3VuaXRzMC5ieXRlc19pbnRfZXhuXG4gIGluXG4gIGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemVcbjs7XG5cbmxldCBzdWJfc2hhcmVkID8ocG9zID0gMCkgP2xlbiAoYnN0ciA6IHQpID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgQXJyYXkxLnN1YiBic3RyIHBvcyBsZW5cbjs7XG5cbigqIERlc3RydWN0aW9uICopXG5cbmV4dGVybmFsIHVuc2FmZV9kZXN0cm95IDogdCAtPiB1bml0ID0gXCJiaWdzdHJpbmdfZGVzdHJveV9zdHViXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3lfYW5kX3Jlc2l6ZSA6IHQgLT4gbGVuOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfcmVhbGxvY1wiXG5cbigqIFJlYWRpbmcgLyB3cml0aW5nIGJpbi1wcm90ICopXG5cbmxldCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgPyhwb3MgPSAwKSA/bGVuIHJlYWRlciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiB0IGxlbiB+cG9zIGluXG4gIGxldCBsaW1pdCA9IHBvcyArIGxlbiBpblxuICBjaGVja19hcmdzIH5sb2M6XCJyZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzXCIgdCB+cG9zIH5sZW47XG4gIGxldCBpbnZhbGlkX2RhdGEgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gICAgYEludmFsaWRfZGF0YSAoRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG4gIGluXG4gIGxldCByZWFkIGJpbl9yZWFkZXIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiBsaW1pdCAtIHBvc1xuICAgIHRoZW4gYE5vdF9lbm91Z2hfZGF0YVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgICBtYXRjaFxuICAgICAgICB0cnkgYE9rIChiaW5fcmVhZGVyIHQgfnBvc19yZWYpIHdpdGhcbiAgICAgICAgfCBleG4gLT4gYEludmFsaWRfZGF0YSAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICAgIHdpdGhcbiAgICAgIHwgYEludmFsaWRfZGF0YSBfIGFzIHggLT4geFxuICAgICAgfCBgT2sgcmVzdWx0IC0+XG4gICAgICAgIGxldCBleHBlY3RlZF9wb3MgPSBwb3MgKyBsZW4gaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPSBleHBlY3RlZF9wb3NcbiAgICAgICAgdGhlbiBgT2sgKHJlc3VsdCwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9kYXRhXG4gICAgICAgICAgICBcInBvc19yZWYgPD4gZXhwZWN0ZWRfcG9zXCJcbiAgICAgICAgICAgICghcG9zX3JlZiwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBpbnRdKVxuICBpblxuICBtYXRjaFxuICAgIHJlYWQgQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgfnBvcyB+bGVuOkJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICB3aXRoXG4gIHwgKGBOb3RfZW5vdWdoX2RhdGEgfCBgSW52YWxpZF9kYXRhIF8pIGFzIHggLT4geFxuICB8IGBPayAoZWxlbWVudF9sZW5ndGgsIHBvcykgLT5cbiAgICBpZiBlbGVtZW50X2xlbmd0aCA8IDBcbiAgICB0aGVuIGludmFsaWRfZGF0YSBcIm5lZ2F0aXZlIGVsZW1lbnQgbGVuZ3RoICVkXCIgZWxlbWVudF9sZW5ndGggWyVzZXhwX29mOiBpbnRdXG4gICAgZWxzZSByZWFkIHJlYWRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgfnBvcyB+bGVuOmVsZW1lbnRfbGVuZ3RoXG47O1xuXG5sZXQgcmVhZF9iaW5fcHJvdCB0ID9wb3MgP2xlbiByZWFkZXIgPVxuICBtYXRjaCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgP3BvcyA/bGVuIHJlYWRlciB3aXRoXG4gIHwgYE9rIHggLT4gT2sgeFxuICB8IGBJbnZhbGlkX2RhdGEgZSAtPiBFcnJvciAoRXJyb3IudGFnIGUgfnRhZzpcIkludmFsaWQgZGF0YVwiKVxuICB8IGBOb3RfZW5vdWdoX2RhdGEgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwibm90IGVub3VnaCBkYXRhXCJcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdCB0ID8ocG9zID0gMCkgd3JpdGVyIHYgPVxuICBsZXQgZGF0YV9sZW4gPSB3cml0ZXIuQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplIHYgaW5cbiAgbGV0IHRvdGFsX2xlbiA9IGRhdGFfbGVuICsgQmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIGlmIHBvcyA8IDBcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBuZWdhdGl2ZSBwb3NcIiBwb3MgWyVzZXhwX29mOiBpbnRdO1xuICBpZiBwb3MgKyB0b3RhbF9sZW4gPiBsZW5ndGggdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdDogbm90IGVub3VnaCByb29tXCJcbiAgICAgIChgcG9zIHBvcywgYHBvc19hZnRlcl93cml0aW5nIChwb3MgKyB0b3RhbF9sZW4pLCBgYmlnc3RyaW5nX2xlbmd0aCAobGVuZ3RoIHQpKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3Mgb2YgaW50IF0gKiBbIGBwb3NfYWZ0ZXJfd3JpdGluZyBvZiBpbnQgXSAqIFsgYGJpZ3N0cmluZ19sZW5ndGggb2YgaW50IF1dO1xuICBsZXQgcG9zX2FmdGVyX3NpemVfaGVhZGVyID0gQmluX3Byb3QuVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIHQgfnBvcyBkYXRhX2xlbiBpblxuICBsZXQgcG9zX2FmdGVyX2RhdGEgPSB3cml0ZXIuQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZSB0IH5wb3M6cG9zX2FmdGVyX3NpemVfaGVhZGVyIHYgaW5cbiAgaWYgcG9zX2FmdGVyX2RhdGEgLSBwb3MgPD4gdG90YWxfbGVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90IGJ1ZyFcIlxuICAgICAgKCBgcG9zX2FmdGVyX2RhdGEgcG9zX2FmdGVyX2RhdGFcbiAgICAgICwgYHN0YXJ0X3BvcyBwb3NcbiAgICAgICwgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGhcbiAgICAgICwgYGRhdGFfbGVuIGRhdGFfbGVuXG4gICAgICAsIGB0b3RhbF9sZW4gdG90YWxfbGVuIClcbiAgICAgIFslc2V4cF9vZjpcbiAgICAgICAgWyBgcG9zX2FmdGVyX2RhdGEgb2YgaW50IF1cbiAgICAgICAgKiBbIGBzdGFydF9wb3Mgb2YgaW50IF1cbiAgICAgICAgKiBbIGBiaW5fcHJvdF9zaXplX2hlYWRlcl9sZW5ndGggb2YgaW50IF1cbiAgICAgICAgKiBbIGBkYXRhX2xlbiBvZiBpbnQgXVxuICAgICAgICAqIFsgYHRvdGFsX2xlbiBvZiBpbnQgXV07XG4gIHBvc19hZnRlcl9kYXRhXG47O1xuXG4oKiBIZXggZHVtcCAqKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcmVjIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zIH5jaGFyID1cbiAgbGV0IHBvcycgPSBwb3MgLSAxIGluXG4gIGlmIHBvcycgPj0gbWluX3BvcyAmJiBDaGFyLiggPSApIChnZXQgYnVmIHBvcycpIGNoYXJcbiAgdGhlbiBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWYgfm1pbl9wb3MgfnBvczpwb3MnIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIGxldCBkYXRhX2VuZCA9XG4gICAgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmOnQgfm1pbl9wb3M6cG9zIH5wb3M6KHBvcyArIGxlbikgfmNoYXI6cGFkZGluZ1xuICBpblxuICB0b19zdHJpbmcgdCB+cG9zIH5sZW46KGRhdGFfZW5kIC0gcG9zKVxuOztcblxubGV0IHNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gdmFsdWUgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlblxuICB0aGVuXG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJCaWdzdHJpbmcuc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZzogJVMgaXMgbG9uZ2VyIHRoYW4gJWRcIlxuICAgICAgdmFsdWVcbiAgICAgIGxlblxuICAgICAgKCk7XG4gIEZyb21fc3RyaW5nLmJsaXQgfnNyYzp2YWx1ZSB+ZHN0OnQgfnNyY19wb3M6MCB+ZHN0X3Bvczpwb3MgfmxlbjpzbGVuO1xuICBmb3IgaSA9IHBvcyArIHNsZW4gdG8gcG9zICsgbGVuIC0gMSBkb1xuICAgIHNldCB0IGkgcGFkZGluZ1xuICBkb25lXG47O1xuXG5sZXQgcmVjIGZpcnN0X25vbm1hdGNoIH5idWYgfnBvcyB+bWF4X3BvcyB+Y2hhciA9XG4gIGlmIHBvcyA8PSBtYXhfcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zKSBjaGFyXG4gIHRoZW4gZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zOihJbnQuc3VjYyBwb3MpIH5tYXhfcG9zIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgc2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiB2YWx1ZSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkJpZ3N0cmluZy5zZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgICB2YWx1ZVxuICAgICAgbGVuXG4gICAgICAoKTtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOihwb3MgKyBsZW4gLSBzbGVuKSB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zIHRvIHBvcyArIGxlbiAtIHNsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICB0b19zdHJpbmcgdCB+cG9zOmRhdGFfYmVnaW4gfmxlbjoobGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5iaWdzdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYmlnc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3RcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICAgIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgICB9XG5cbiAgbGV0IHRvX3N0cmluZyB0IHYgPVxuICAgIGxldCBsZW4gPSB0LnNpemUgdiBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIGxlbiBpblxuICAgIGxldCBwb3MgPSB0LndyaXRlIGJ1ZiB+cG9zOjAgdiBpblxuICAgIGFzc2VydCAocG9zID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIGxldCBzdHIgPSBCaWdzdHJpbmcudG9fc3RyaW5nIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5cbiAgbGV0IHRvX2J5dGVzIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19ieXRlcyBidWYgaW5cbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHN0clxuICA7O1xuZW5kXG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPVxuICAgIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gICAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICAgIH1cblxuICBsZXQgb2Zfc3RyaW5nIHQgc3RyaW5nID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcgaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IHYgPSB0LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgYXNzZXJ0ICghcG9zX3JlZiA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHZcbiAgOztcblxuICBsZXQgb2ZfYnl0ZXMgdCBieXRlcyA9XG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5vZl9ieXRlcyBieXRlcyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuZW5kXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJpbl9wcm90Lk1kNVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IFN0cmluZy5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBTdHJpbmcudF9vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuZW5kXG5cbmxldCBoYXNoX2ZvbGRfdCBhY2N1bSB0ID0gU3RyaW5nLmhhc2hfZm9sZF90IGFjY3VtIChULnRvX2JpbmFyeSB0KVxubGV0IGhhc2ggdCA9IFN0cmluZy5oYXNoIChULnRvX2JpbmFyeSB0KVxuXG5tb2R1bGUgQXNfYmluYXJ5X3N0cmluZyA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gU3RyaW5nLnNleHBfb2ZfdCAoVC50b19iaW5hcnkgeClcbiAgICAgIGxldCB0X29mX3NleHAgeCA9IFQub2ZfYmluYXJ5X2V4biAoU3RyaW5nLnRfb2Zfc2V4cCB4KVxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBCaW5hYmxlID0gU3RyaW5nXG5cbiAgICAgICAgICB0eXBlIHQgPSBCaW5fcHJvdC5NZDUudFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBULnRvX2JpbmFyeVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gVC5vZl9iaW5hcnlfZXhuXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICBsZXQgaGFzaCA9IGhhc2hcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluX3Byb3QuTWQ1XG5cbiAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gRm4uaWRcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbGV0IGRpZ2VzdF9zdHJpbmcgcyA9IE1kNV9saWIuc3RyaW5nIHNcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgZGlnZXN0X251bV9ieXRlcyA9IDE2XG5sZXQgdG9faGV4ID0gVC50b19oZXhcbmxldCBmcm9tX2hleCA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2hleF9leG4gPSBULm9mX2hleF9leG5cbmxldCBvZl9iaW5hcnlfZXhuID0gVC5vZl9iaW5hcnlfZXhuXG5sZXQgdG9fYmluYXJ5ID0gVC50b19iaW5hcnlcbmxldCBkaWdlc3Rfc3RyaW5nID0gU3RhYmxlLmRpZ2VzdF9zdHJpbmdcbmxldCBkaWdlc3RfYnl0ZXMgPSBNZDVfbGliLmJ5dGVzXG5cbmV4dGVybmFsIGNhbWxfc3lzX29wZW5cbiAgOiAgc3RyaW5nXG4gIC0+IENhbWwub3Blbl9mbGFnIGxpc3RcbiAgLT4gcGVybTppbnRcbiAgLT4gaW50XG4gID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgY2FtbF9zeXNfY2xvc2UgOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuZXh0ZXJuYWwgZGlnZXN0X2ZkX2Jsb2NraW5nIDogaW50IC0+IHN0cmluZyA9IFwiY29yZV9tZDVfZmRcIlxuXG5sZXQgZGlnZXN0X2ZpbGVfYmxvY2tpbmcgcGF0aCA9XG4gIG9mX2JpbmFyeV9leG5cbiAgICAoQmFzZS5FeG4ucHJvdGVjdHhcbiAgICAgICAoY2FtbF9zeXNfb3BlbiBwYXRoIFsgT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5IF0gfnBlcm06MG8wMDApXG4gICAgICAgfmY6ZGlnZXN0X2ZkX2Jsb2NraW5nXG4gICAgICAgfmZpbmFsbHk6Y2FtbF9zeXNfY2xvc2UpXG47O1xuXG5sZXQgZmlsZSA9IGRpZ2VzdF9maWxlX2Jsb2NraW5nXG5cbmxldCBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuID1cbiAgb2ZfYmluYXJ5X2V4biAoQ2FtbC5EaWdlc3QuY2hhbm5lbCBjaGFubmVsIGxlbilcbjs7XG5cbmxldCBjaGFubmVsIGNoYW5uZWwgbGVuID1cbiAgZGlnZXN0X2NoYW5uZWxfYmxvY2tpbmdfd2l0aG91dF9yZWxlYXNpbmdfcnVudGltZV9sb2NrIGNoYW5uZWwgfmxlblxuOztcblxubGV0IG91dHB1dF9ibG9ja2luZyB0IG9jID0gQ2FtbC5EaWdlc3Qub3V0cHV0IG9jICh0b19iaW5hcnkgdClcbmxldCBvdXRwdXQgb2MgdCA9IG91dHB1dF9ibG9ja2luZyB0IG9jXG5sZXQgaW5wdXRfYmxvY2tpbmcgaWMgPSBvZl9iaW5hcnlfZXhuIChDYW1sLkRpZ2VzdC5pbnB1dCBpYylcbmxldCBpbnB1dCA9IGlucHV0X2Jsb2NraW5nXG5sZXQgZGlnZXN0X3N1YmJ5dGVzID0gTWQ1X2xpYi5zdWJieXRlc1xubGV0IHN0cmluZyA9IGRpZ2VzdF9zdHJpbmdcbmxldCBieXRlcyA9IGRpZ2VzdF9ieXRlc1xubGV0IHN1YmJ5dGVzIHMgcG9zIGxlbiA9IGRpZ2VzdF9zdWJieXRlcyBzIH5wb3MgfmxlblxuXG5sZXQgZGlnZXN0X2Jpbl9wcm90IHdyaXRlciB2YWx1ZSA9XG4gIGRpZ2VzdF9zdHJpbmcgKENvcmVfYmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZyB3cml0ZXIgdmFsdWUpXG47O1xuXG5leHRlcm5hbCBjX2RpZ2VzdF9zdWJiaWdzdHJpbmdcbiAgOiAgQmlnc3RyaW5nLnRcbiAgLT4gcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHJlczpCeXRlcy50XG4gIC0+IHVuaXRcbiAgPSBcImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcIlxuXG5sZXQgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICgqIEl0J3MgbW9yZSBlZmZpY2llbnQgdG8gYWxsb2NhdGUgdGhlIHJlc3VsdCBvbiB0aGUgT0NhbWwgc2lkZSBhbmQgZGVjbGFyZSB0aGUgQ1xuICAgICBmdW5jdGlvbiBhcyBub2FsbG9jIHRoYW4gdG8gbGV0IHRoZSBDIGZ1bmN0aW9uIGFsbG9jYXRlLiAqKVxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGNfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuIH5yZXM7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeVxuICAgIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlcylcbjs7XG5cbmxldCBkaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvc1xuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbjs7XG5cbmxldCBkaWdlc3RfYmlnc3RyaW5nIGJ1ZiA9XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbjooQmlnc3RyaW5nLmxlbmd0aCBidWYpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5hYmxlMFxuXG4oKiBbb2Zfc3RyaW5nXSBhbmQgW3RvX3N0cmluZ10gY2FuJ3QgZ28gaW4gYmluYWJsZTAubWwgZHVlIHRvIGEgY3ljbGljIGRlcGVuZGVuY3kuICopXG5sZXQgb2Zfc3RyaW5nIG0gc3RyaW5nID0gb2ZfYmlnc3RyaW5nIG0gKEJpZ3N0cmluZy5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyBtIHQgPSBCaWdzdHJpbmcudG9fc3RyaW5nICh0b19iaWdzdHJpbmcgbSB0KVxuXG5tb2R1bGUgT2ZfYmluYWJsZSA9IE9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX2JpbmFibGUxID0gT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX2JpbmFibGUyID0gT2ZfYmluYWJsZTJfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX2JpbmFibGUzID0gT2ZfYmluYWJsZTNfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX3NleHBhYmxlID0gT2Zfc2V4cGFibGVfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX3N0cmluZ2FibGUgPSBPZl9zdHJpbmdhYmxlX3dpdGhvdXRfdXVpZCBbQEBhbGVydCBcIi1sZWdhY3lcIl1cbiIsIigqIEZ1bmN0aW9ucyBmb3IgcGFyc2luZyB0aW1lIHpvbmUgZGF0YWJhc2UgZmlsZXMgKHppYyBmaWxlcykuXG5cbiAgIEEgdGltZSB6b25lIGZpbGUgY29uc2lzdHMgKGNvbmNlcHR1YWxseSAtIHRoZSByZXByZXNlbnRhdGlvbiBpcyBtb3JlXG4gICBjb21wYWN0KSBvZiBhbiBvcmRlcmVkIGxpc3Qgb2YgKFRpbWUudCAqIFtsb2NhbF90aW1lX3R5cGVdKSB0aGF0IG1hcmtcbiAgIHRoZSBib3VuZGFyaWVzIChtYXJrZWQgZnJvbSB0aGUgZXBvY2gpIGF0IHdoaWNoIHZhcmlvdXMgdGltZSBhZGp1c3RtZW50XG4gICByZWdpbWVzIGFyZSBpbiBlZmZlY3QuICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2YgYXMgYnJlYWtpbmcgZG93biBhbGxcbiAgIHRpbWUgcGFzdCB0aGUgZXBvY2ggaW50byByYW5nZXMgd2l0aCBhIFtsb2NhbF90aW1lX3R5cGVdIHRoYXQgZGVzY3JpYmVzIHRoZVxuICAgb2Zmc2V0IGZyb20gR01UIHRvIGFwcGx5IHRvIGVhY2ggcmFuZ2UgdG8gZ2V0IGxvY2FsIHRpbWUuXG4qKVxuXG5vcGVuIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgWm9uZV9pbnRmXG5cbmV4Y2VwdGlvbiBJbnZhbGlkX2ZpbGVfZm9ybWF0IG9mIHN0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBGdWxsX2RhdGEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbmRleCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmV4dCA9IEludC5zdWNjXG4gICAgICAgIGxldCBwcmV2ID0gSW50LnByZWRcbiAgICAgICAgbGV0IGJlZm9yZV9maXJzdF90cmFuc2l0aW9uID0gLTFcblxuICAgICAgICAoKiBTb21lIGV4aXN0aW5nIGNsaWVudHMgZXhwZWN0IFtpbmRleCA+PSAwXSwgc28gd2UgbmV2ZXIgc2VyaWFsaXplIGEgbmVnYXRpdmVcbiAgICAgICAgICAgaW5kZXguIFRoaXMgY29udmVyc2lvbiBjYW4gYmUgcmVtb3ZlZCBpZiBuZXcgc3RhYmxlIHZlcnNpb25zIGFyZSBtaW50ZWQuICopXG4gICAgICAgIGxldCB0b19leHRlcm5hbCB0ID0gbWF4IDAgdFxuXG4gICAgICAgICgqIFdoZW4gdGhlIGluZGV4IG9mIGEgdGltZSB6b25lIHdpdGggbm8gdHJhbnNpdGlvbnMgaXMgY29udmVydGVkIHZpYSB0b19leHRlcm5hbCxcbiAgICAgICAgICAgaXRzIHZhbHVlIGJlY29tZXMgMCBldmVuIHRob3VnaCBpdHMgdHJhbnNpdGlvbiBhcnJheSBpcyBlbXB0eSAoYW5kIGl0IHNob3VsZFxuICAgICAgICAgICBoYXZlIGJlZW4gLTEpLiBXaGVuIHRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgY2hhbmdlZCBiYWNrIHRvIGEgWm9uZS50IHRocm91Z2hcbiAgICAgICAgICAgb2ZfZXh0ZXJuYWwsIHJldHVybmluZyB0aGlzIHZhbHVlIGZvciBpdHMgaW5kZXggY291bGQgcmVzdWx0IGluIHVuc2FmZSBhcnJheVxuICAgICAgICAgICBhY2Nlc3NlcyB0byB0aGUgdHJhbnNpdGlvbiBhcnJheSBvZiB0aGUgem9uZSAoc2luY2UgdGhlcmUgaXMgbm8gdHJhbnNpdGlvbiBhdFxuICAgICAgICAgICBpbmRleCAwKS4gQWxzbywgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBrZWVwIHRoZSBjb252ZXJ0ZWQgaW5kZXggYmVjYXVzZSBpdFxuICAgICAgICAgICBpcyBpbnRlbmRlZCB0byBiZSBhIG11dGFibGUgdmFsdWUgdXNlZCBmb3IgY2FjaGluZy4gU28gb2ZfZXh0ZXJuYWwgYWx3YXlzIHNldHNcbiAgICAgICAgICAgdGhlIGluZGV4IHRvIC0xLCB3aGljaCBpcyBhIHNhZmUgdmFsdWUuICopXG4gICAgICAgIGxldCBvZl9leHRlcm5hbCAoXyA6IHQpID0gLTFcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKEludClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpbWUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBpc19kc3QgOiBib29sXG4gICAgICAgICAgOyBhYmJydiA6IHN0cmluZ1xuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgICgqIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHdoZW4gbGVhcCBzZWNvbmRzIHNob3VsZCBiZSBhcHBsaWVkIC0gdW51c2VkXG4gICAgICAgICBiZWNhdXNlIHdlIGFyZSB0cmFuc2xhdGluZyBiYXNlZCBvbiBhIGVwb2NoIHN5c3RlbSBjbG9jayAoc2VlIHRoZSBDb3JlX3pvbmVcbiAgICAgICAgIGRvY3VtZW50YXRpb24pLiAqKVxuICAgICAgbW9kdWxlIExlYXBfc2Vjb25kID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgc2Vjb25kcyA6IGludFxuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUcmFuc2l0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyBzdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgbmV3X3JlZ2ltZSA6IFJlZ2ltZS50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDtcbiAgICAgICAgICBkaWdlc3QgOiBNZDUuQXNfYmluYXJ5X3N0cmluZy50IG9wdGlvblxuICAgICAgICA7IHRyYW5zaXRpb25zIDogVHJhbnNpdGlvbi50IGFycmF5XG4gICAgICAgIDsgKCogY2FjaGVzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cmFuc2l0aW9uIHdlIHVzZWQgdG8gbWFrZSBsb29rdXBzIGZhc3RlciAqKVxuICAgICAgICAgIG11dGFibGUgbGFzdF9yZWdpbWVfaW5kZXggOiBJbmRleC50XG4gICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgOiBSZWdpbWUudFxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA6IExlYXBfc2Vjb25kLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgICgqIHRoaXMgcmVsaWVzIG9uIHpvbmVzIHdpdGggdGhlIHNhbWUgbmFtZSBoYXZpbmcgdGhlIHNhbWUgdHJhbnNpdGlvbnMgKilcbiAgICAgIGxldCBjb21wYXJlIHQxIHQyID0gU3RyaW5nLmNvbXBhcmUgdDEubmFtZSB0Mi5uYW1lXG4gICAgICBsZXQgb3JpZ2luYWxfZmlsZW5hbWUgem9uZSA9IHpvbmUub3JpZ2luYWxfZmlsZW5hbWVcbiAgICAgIGxldCBkaWdlc3Qgem9uZSA9IHpvbmUuZGlnZXN0XG5cbiAgICAgIG1vZHVsZSBab25lX2ZpbGUgOiBzaWdcbiAgICAgICAgdmFsIGlucHV0X3R6X2ZpbGUgOiB6b25lbmFtZTpzdHJpbmcgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBsZXQgYm9vbF9vZl9pbnQgaSA9IGkgPD4gMFxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDMyID1cbiAgICAgICAgICBsZXQgbG9uZyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgbGV0IGludDMyX29mX2NoYXIgY2hyID0gSW50MzIub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGZ1biBpYyAtPlxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZyB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgbGV0IHNiMSA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDApKSAyNCBpblxuICAgICAgICAgICAgbGV0IHNiMiA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDEpKSAxNiBpblxuICAgICAgICAgICAgbGV0IHNiMyA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDIpKSA4IGluXG4gICAgICAgICAgICBsZXQgc2I0ID0gaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMykgaW5cbiAgICAgICAgICAgIEludDMyLmJpdF9vciAoSW50MzIuYml0X29yIHNiMSBzYjIpIChJbnQzMi5iaXRfb3Igc2IzIHNiNClcbiAgICAgICAgOztcblxuICAgICAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIG9uIG51bWJlcnMgdGhhdCB3aWxsIGZpdCBpbnRvIGEgMzEtYml0XG4gICAgICAgICAgIGludC4gVU5JWCB0aW1lc3RhbXBzIHdvbid0LCBmb3IgZXhhbXBsZS4gIEluIG91ciBjYXNlIHRoaXMgaXMgb25seSB1c2VkXG4gICAgICAgICAgIHRvIGhvbGQgc21hbGwgbnVtYmVycyB0aGF0IGFyZSBuZXZlciBpbnRlcnByZXRlZCBhcyB0aW1lc3RhbXBzLiAqKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQgaWMgPSBJbnQzMi50b19pbnRfZXhuIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyA9IEludDYzLm9mX2ludDMyIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMgaWMgPVxuICAgICAgICAgIGxldCBpbnQ2M19vZl9jaGFyIGNociA9IEludDYzLm9mX2ludF9leG4gKGludF9vZl9jaGFyIGNocikgaW5cbiAgICAgICAgICBsZXQgc2hpZnQgYyBiaXRzID0gSW50NjMuc2hpZnRfbGVmdCAoaW50NjNfb2ZfY2hhciBjKSBiaXRzIGluXG4gICAgICAgICAgbGV0IGxvbmdfbG9uZyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZ19sb25nIH5wb3M6MCB+bGVuOjg7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDApIDU2IGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDEpIDQ4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAyKSA0MCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMykgMzIpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDQpIDI0KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA1KSAxNikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNikgOCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoaW50NjNfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA3KSkgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfbGlzdCBpYyB+bGVuIH5mID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgYyBsc3QgPVxuICAgICAgICAgICAgaWYgYyA+IDAgdGhlbiBsb29wIChjIC0gMSkgKGYgaWMgOjogbHN0KSBlbHNlIExpc3QucmV2IGxzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBsZW4gW11cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYXJyYXkgaWMgfmxlbiB+ZiA9IEFycmF5Lm9mX2xpc3QgKGlucHV0X2xpc3QgaWMgfmxlbiB+ZilcblxuICAgICAgICBsZXQgaW5wdXRfcmVnaW1lIGljID1cbiAgICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyBpblxuICAgICAgICAgIGxldCBpc19kc3QgPSBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkgaW5cbiAgICAgICAgICBsZXQgYWJicnZfaW5kZXggPSBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpIGluXG4gICAgICAgICAgbGV0IGx0IGFiYnJ2ID0geyBSZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzOyBpc19kc3Q7IGFiYnJ2IH0gaW5cbiAgICAgICAgICBsdCwgYWJicnZfaW5kZXhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuID1cbiAgICAgICAgICBsZXQgcmF3X2FiYnJ2cyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0IGljIH5sZW4gfmY6KGZ1biBpYyAtPiBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2NoYXIgaWMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgbGV0IF8sIGluZGV4ZWRfYWJicnZzID1cbiAgICAgICAgICAgIExpc3QuZm9sZCByYXdfYWJicnZzIH5pbml0OigwLCBNYXAuUG9seS5lbXB0eSkgfmY6KGZ1biAoaW5kZXgsIGFiYnJ2cykgYyAtPlxuICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgfCAnXFwwMDAnIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHRfaW5kZXggPSBpbmRleCArIFN0cmluZy5sZW5ndGggZGF0YSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWJicnZzID0gTWFwLnNldCBhYmJydnMgfmtleTppbmRleCB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgICAgICAgbmV4dF9pbmRleCwgYWJicnZzXG4gICAgICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgICAgICAgICBpbmRleCwgYWJicnZzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPD4gMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChJbnZhbGlkX2ZpbGVfZm9ybWF0XG4gICAgICAgICAgICAgICAgIFwibWlzc2luZyBcXDAwMCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIgaW4gaW5wdXRfYWJicmV2aWF0aW9uc1wiKTtcbiAgICAgICAgICBpbmRleGVkX2FiYnJ2c1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB1dGNfbG9jYWxfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBzdGRfd2FsbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGxlYXBfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHlwZV9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGFiYnJ2X2NoYXJfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX3RpbWVzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfdHJhbnNpdGlvbiB+bGVuOnRyYW5zaXRpb25fY291bnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2luZGljZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdFxuICAgICAgICAgICAgICBpY1xuICAgICAgICAgICAgICB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpXG4gICAgICAgICAgICAgIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlZ2ltZXMgPSBpbnB1dF9saXN0IGljIH5mOmlucHV0X3JlZ2ltZSB+bGVuOnR5cGVfY291bnQgaW5cbiAgICAgICAgICBsZXQgYWJicmV2aWF0aW9ucyA9IGlucHV0X2FiYnJldmlhdGlvbnMgaWMgfmxlbjphYmJydl9jaGFyX2NvdW50IGluXG4gICAgICAgICAgbGV0IGxlYXBfc2Vjb25kcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfbGVhcF9zZWNvbmQgfmxlbjpsZWFwX2NvdW50IGluXG4gICAgICAgICAgKCogVGhlIGZvbGxvd2luZyB0d28gYXJyYXlzIGluZGljYXRlIHR3byBib29sZWFuIHZhbHVlcyBwZXIgcmVnaW1lIHRoYXRcbiAgICAgICAgICAgICByZXByZXNlbnQgYSB0aHJlZS12YWx1ZSB0eXBlIHRoYXQgd291bGQgdHJhbnNsYXRlIHRvOlxuXG4gICAgICAgICAgICAgdHlwZSB0cmFuc2l0aW9uX3R5cGUgPSBVVEMgfCBTdGFuZGFyZCB8IFdhbGxfY2xvY2tcblxuICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIHN5c3RlbSBsaWJyYXJ5IHdoZW4gaGFuZGxpbmcgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gICAgICAgICAgICAgVFogdmFyaWFibGUgaXMgc2V0LCBub3QgdG8gYSB0aW1lIHpvbmUgbmFtZSwgYnV0IGluc3RlYWQgaXMgb2YgdGhlIGZvcm06XG5cbiAgICAgICAgICAgICBUWiA9IFwic3RkIG9mZnNldCBkc3Qgb2Zmc2V0LCBydWxlXCJcblxuICAgICAgICAgICAgIFdoaWNoIGlzIGRlZXBseSBvYnNjdXJlLCBhbmQgYWxtb3N0IGNlcnRhaW5seSBhIG1pc3Rha2UgdG8gdXNlLiAgVGhpcyBsaWJyYXJ5IG1ha2VzXG4gICAgICAgICAgICAgbm8gcHJldGVuc2UgYWJvdXQgaGFuZGxpbmcgdGhpcyBjYXNlLiAgV2UgY29udGludWUgdG8gcmVhZCB0aGVtIGluIGZvclxuICAgICAgICAgICAgIGNvbXBsZXRlbmVzcywgYW5kIGJlY2F1c2UgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHdpbGwgbGF0ZXIgZGlzY292ZXIgYSBjYXNlIHdoZXJlXG4gICAgICAgICAgICAgdGhleSBhcmUgdXNlZC4gKilcbiAgICAgICAgICBsZXQgX3N0ZF93YWxsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjpzdGRfd2FsbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfdXRjX2xvY2FsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjp1dGNfbG9jYWxfY291bnQgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9XG4gICAgICAgICAgICBBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCByZWdpbWVzIH5mOihmdW4gKGx0LCBhYmJydl9pbmRleCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGFiYnJ2ID0gTWFwLmZpbmRfZXhuIGFiYnJldmlhdGlvbnMgYWJicnZfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgbHQgYWJicnYpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJhd190cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcDJfZXhuIHRyYW5zaXRpb25fdGltZXMgdHJhbnNpdGlvbl9pbmRpY2VzIH5mOihmdW4gdGltZSBpbmRleCAtPlxuICAgICAgICAgICAgICBsZXQgcmVnaW1lID0gcmVnaW1lcy4oaW5kZXgpIGluXG4gICAgICAgICAgICAgIHRpbWUsIHJlZ2ltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBsZXQgcmVjIG1ha2VfdHJhbnNpdGlvbnMgYWNjIGwgPVxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBBcnJheS5vZl9saXN0IChMaXN0LnJldiBhY2MpXG4gICAgICAgICAgICAgIHwgKHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCwgbmV3X3JlZ2ltZSkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgICAgICh7IFRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoOyBuZXdfcmVnaW1lIH0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnMgW10gcmF3X3RyYW5zaXRpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgPVxuICAgICAgICAgICAgbWF0Y2ggQXJyYXkuZmluZCByZWdpbWVzIH5mOihmdW4gciAtPiBub3Qgci5SZWdpbWUuaXNfZHN0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmVnaW1lcy4oMClcbiAgICAgICAgICAgIHwgU29tZSBsdHQgLT4gbHR0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWUgfmRpZ2VzdCAtPlxuICAgICAgICAgICAgeyBuYW1lXG4gICAgICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lID0gU29tZSBvcmlnaW5hbF9maWxlbmFtZVxuICAgICAgICAgICAgOyBkaWdlc3QgPSBTb21lIGRpZ2VzdFxuICAgICAgICAgICAgOyB0cmFuc2l0aW9uc1xuICAgICAgICAgICAgOyBsYXN0X3JlZ2ltZV9pbmRleCA9IEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG4gICAgICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlXG4gICAgICAgICAgICA7IGxlYXBfc2Vjb25kc1xuICAgICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kIGljID1cbiAgICAgICAgICBsZXQgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoID0gaW5wdXRfbGVhcF9zZWNvbmQgaWMgaW5cbiAgICAgICAgICBsZXQgc2Vjb25kcyA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgeyBMZWFwX3NlY29uZC50aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IHNlY29uZHMgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWFkX2hlYWRlciBpYyA9XG4gICAgICAgICAgbGV0IG1hZ2ljID1cbiAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNCBpblxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWYgfnBvczowIH5sZW46NDtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5lcXVhbCBtYWdpYyBcIlRaaWZcIilcbiAgICAgICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwibWFnaWMgY2hhcmFjdGVycyBUWmlmIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIGxldCB2ZXJzaW9uID1cbiAgICAgICAgICAgIG1hdGNoIEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgJ1xcMDAwJyAtPiBgVjFcbiAgICAgICAgICAgIHwgU29tZSAnMicgLT4gYFYyXG4gICAgICAgICAgICB8IFNvbWUgJzMnIC0+IGBWM1xuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwiZXhwZWN0ZWQgdmVyc2lvbiwgZm91bmQgbm90aGluZ1wiKVxuICAgICAgICAgICAgfCBTb21lIGJhZF92ZXJzaW9uIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IChzcHJpbnRmIFwidmVyc2lvbiAoJWMpIGlzIGludmFsaWRcIiBiYWRfdmVyc2lvbikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBzcGFjZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiB0aGUgZm9ybWF0ICopXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6KEJ5dGVzLmNyZWF0ZSAxNSkgfnBvczowIH5sZW46MTU7XG4gICAgICAgICAgdmVyc2lvblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX3YxIGljID1cbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2FzX2ludDYzIH5pbnB1dF9sZWFwX3NlY29uZCBpY1xuICAgICAgICA7O1xuXG4gICAgICAgICgqXG4gICAgICAgICAgIHZlcnNpb24gMiB0aW1lem9uZSBmaWxlcyBoYXZlIHRoZSBmb3JtYXQ6XG5cbiAgICAgICAgICAgcGFydCAxIC0gZXhhY3RseSB0aGUgc2FtZSBhcyB2MVxuXG4gICAgICAgICAgIHBhcnQgMiAtIHNhbWUgZm9ybWF0IGFzIHYxLCBleGNlcHQgdGhhdCA4IGJ5dGVzIGFyZSB1c2VkIHRvIHN0b3JlXG4gICAgICAgICAgIHRyYW5zaXRpb24gdGltZXMgYW5kIGxlYXAgc2Vjb25kc1xuXG4gICAgICAgICAgIHBhcnQgMyAtIGEgbmV3bGluZS1lbmNsb2RlZCwgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGVcbiAgICAgICAgICAgc3RyaW5nIGZvciB1c2UgaW4gaGFuZGxpbmcgaW5zdGFudHMgYWZ0ZXIgdGhlIGxhc3QgdHJhbnNpdGlvbiB0aW1lXG4gICAgICAgICAgIHN0b3JlZCBpbiB0aGUgZmlsZSAod2l0aCBub3RoaW5nIGJldHdlZW4gdGhlIG5ld2xpbmVzIGlmIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIFBPU0lYIHJlcHJlc2VudGF0aW9uIGZvciBzdWNoIGluc3RhbnRzKVxuXG4gICAgICAgICAgIFdlIGhhbmRsZSBmaWxlcyBpbiB0aGlzIGZvcm1hdCBieSBwYXJzaW5nIHRoZSBmaXJzdCBwYXJ0IGV4YWN0bHkgYXMgYSB2MVxuICAgICAgICAgICB0aW1lem9uZSBmaWxlIGFuZCB0aGVuIGNvbnRpbnVpbmcgdG8gcGFyc2Ugd2l0aCA2NGJpdCByZWFkaW5nIGZ1bmN0aW9ucyBpbiB0aGVcbiAgICAgICAgICAgcmlnaHQgcGxhY2VzLlxuXG4gICAgICAgICAgIFZlcnNpb24gMyB0aW1lem9uZSBmaWxlcyBhcmUgdGhlIHNhbWUgYXMgdmVyc2lvbiAyLCBleGNlcHQgdGhlXG4gICAgICAgICAgIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0cmluZyBpbiBwYXJ0IDMgbWF5IHVzZSB0d28gbWlub3JcbiAgICAgICAgICAgZXh0ZW5zaW9ucyB0byB0aGUgUE9TSVggVFogZm9ybWF0ICh0aGUgaG91cnMgcGFydCBvZiBpdHMgdHJhbnNpdGlvblxuICAgICAgICAgICB0aW1lcyBtYXkgYmUgc2lnbmVkIGFuZCByYW5nZSBmcm9tIC0xNjcgdGhyb3VnaCAxNjcgaW5zdGVhZCBvZiB0aGVcbiAgICAgICAgICAgUE9TSVgtcmVxdWlyZWQgdW5zaWduZWQgdmFsdWVzIGZyb20gMCB0aHJvdWdoIDI0OyBhbmQgRFNUIGlzIGluIGVmZmVjdCBhbGxcbiAgICAgICAgICAgeWVhciBpZiBpdCBzdGFydHMgSmFudWFyeSAxIGF0IDAwOjAwIGFuZCBlbmRzIERlY2VtYmVyIDMxIGF0IDI0OjAwIHBsdXMgdGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiBkYXlsaWdodCBzYXZpbmcgYW5kIHN0YW5kYXJkIHRpbWUpLlxuXG4gICAgICAgICAgIEFzIHdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIHdpdGggcGFydCAzIGFueXdheSwgd2UgY2FuIGp1c3QgcmVhZCB2M1xuICAgICAgICAgICBmaWxlcyBhcyB2Mi5cbiAgICAgICAgKilcbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWMgPVxuICAgICAgICAgIGxldCAoXyA6IHN0cmluZyAtPiBvcmlnaW5hbF9maWxlbmFtZTpzdHJpbmcgLT4gZGlnZXN0Ok1kNV9saWIudCAtPiB0KSA9XG4gICAgICAgICAgICBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB0aGUgaGVhZGVyIGlzIGZ1bGx5IHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IFsgYFYxIHwgYFYyIHwgYFYzIF1dIChyZWFkX2hlYWRlciBpYykgdmVyc2lvbik7XG4gICAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kID1cbiAgICAgICAgICAgIGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQ6aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlblxuICAgICAgICAgICAgfmlucHV0X3RyYW5zaXRpb246aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgICB+aW5wdXRfbGVhcF9zZWNvbmRcbiAgICAgICAgICAgIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGUgfnpvbmVuYW1lIH5maWxlbmFtZSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBwcm90ZWN0eCAoSW5fY2hhbm5lbC5jcmVhdGUgZmlsZW5hbWUpIH5maW5hbGx5OkluX2NoYW5uZWwuY2xvc2UgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBsZXQgbWFrZV96b25lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZWFkX2hlYWRlciBpYyB3aXRoXG4gICAgICAgICAgICAgICAgfCBgVjEgLT4gaW5wdXRfdHpfZmlsZV92MSBpY1xuICAgICAgICAgICAgICAgIHwgKGBWMiB8IGBWMykgYXMgdmVyc2lvbiAtPiBpbnB1dF90el9maWxlX3YyX29yX3YzIH52ZXJzaW9uIGljXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkaWdlc3QgPSBNZDUuZGlnZXN0X2ZpbGVfYmxvY2tpbmcgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgbGV0IHIgPSBtYWtlX3pvbmUgem9uZW5hbWUgfm9yaWdpbmFsX2ZpbGVuYW1lOmZpbGVuYW1lIH5kaWdlc3QgaW5cbiAgICAgICAgICAgICAgcilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBJbnZhbGlkX2ZpbGVfZm9ybWF0IHJlYXNvbiAtPlxuICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCIlcyAtICVzXCIgZmlsZW5hbWUgcmVhc29uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgb2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIH5uYW1lIH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBhc3NlcnQgKG9mZnNldCA+PSAtMjQgJiYgb2Zmc2V0IDw9IDI0KTtcbiAgICAgICAgbGV0IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA9IEludDYzLm9mX2ludCAob2Zmc2V0ICogNjAgKiA2MCkgaW5cbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBOb25lXG4gICAgICAgIDsgZGlnZXN0ID0gTm9uZVxuICAgICAgICA7IHRyYW5zaXRpb25zID0gW3x8XVxuICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdCA9IGZhbHNlOyBhYmJydiA9IG5hbWUgfVxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0IH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMFxuICAgICAgICAgIHRoZW4gXCJVVENcIlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIlVUQyVzJWRcIiAoaWYgb2Zmc2V0IDwgMCB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIChhYnMgb2Zmc2V0KVxuICAgICAgICBpblxuICAgICAgICBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuRnVsbF9kYXRhLlYxXG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSB0Lm5hbWVcblxubGV0IGxpa2VseV9tYWNoaW5lX3pvbmVzID1cbiAgcmVmIFsgXCJBbWVyaWNhL05ld19Zb3JrXCI7IFwiRXVyb3BlL0xvbmRvblwiOyBcIkFzaWEvSG9uZ19Lb25nXCI7IFwiQW1lcmljYS9DaGljYWdvXCIgXVxuOztcblxubGV0IGlucHV0X3R6X2ZpbGUgPSBab25lX2ZpbGUuaW5wdXRfdHpfZmlsZVxubGV0IHV0YyA9IG9mX3V0Y19vZmZzZXQgfmhvdXJzOjBcbmxldCBuYW1lIHpvbmUgPSB6b25lLm5hbWVcbmxldCByZXNldF90cmFuc2l0aW9uX2NhY2hlIHQgPSB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG5cbigqIFJhaXNlcyBpZiBbaW5kZXggPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNdICopXG5sZXQgZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCA9XG4gIGlmIGluZGV4IDwgMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCkubmV3X3JlZ2ltZVxuOztcblxuKCogSW4gXCJhYnNvbHV0ZSBtb2RlXCIsIGEgbnVtYmVyIG9mIHNlY29uZHMgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IG9mIHRoYXQgbWFueVxuICAgc2Vjb25kcyBmcm9tIHRoZSBVTklYIGVwb2NoLCBpZ25vcmluZyBsZWFwIHNlY29uZHMuXG5cbiAgIEluIFwiZGF0ZSBhbmQgb2ZkYXkgbW9kZVwiLCB5b3UgaW50ZXJwcmV0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBhIG51bWJlciBvZiBkYXlzIGluXG4gICBjb21iaW5hdGlvbiB3aXRoIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQsIHdoaWNoIGdpdmVzIHlvdSBhIGNhbGVuZGFyIGRheSBhbmRcbiAgIGEgY2xvY2sgZmFjZSB0aW1lLiBUaGVuIHlvdSB0YWtlIHRoZSB0aW1lIHRoYXQgdGhvc2UgcmVwcmVzZW50IGluIHNvbWUgcmVsZXZhbnRcbiAgIHRpbWV6b25lLlxuXG4gICBPZiBjb3Vyc2UsIGlmIHRoZSB0aW1lem9uZSBpbiBxdWVzdGlvbiBoYXMgRFNUIHNoaWZ0cywgdGhlIGRhdGUgYW5kIG9mZGF5IG1pZ2h0XG4gICByZXByZXNlbnQgdHdvIG9yIHplcm8gdGltZXMuIFRoZXNlIHRpbWVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIGVpdGhlciB0aGVcbiAgIHByZXZpb3VzIFVUQyBvZmZzZXQgb3IgdGhlIG5leHQgb25lLCBpbiBhIHdheSB3aG9zZSBwcmVjaXNlIGRldGFpbHMgeW91IHByb2JhYmx5XG4gICBzaG91bGRuJ3QgZGVwZW5kIG9uLlxuXG4gICAoRm9yIHRoZSBjdXJpb3VzLCB3aGF0IHdlIGRvIGlzOiBjb21wdXRlIHRoZSBcInJlbGF0aXZlIHRpbWVcIiBvZiB0aGUgc2hpZnQgYWNjb3JkaW5nIHRvXG4gICB0aGUgbmV3IHJlZ2ltZSwgYW5kIGFzc2lnbiByZWxhdGl2ZSB0aW1lcyB0byB0aGUgb2xkIHJlZ2ltZSBvciBuZXcgcmVnaW1lIGRlcGVuZGluZyBvblxuICAgd2hpY2ggc2lkZSBvZiB0aGUgc2hpZnQgdGltZSB0aGV5IG9jY3VyLiBTaW5jZSB0aGlzIGFtb3VudHMgdG8gdXNpbmcgdGhlIG9sZCByZWdpbWVcbiAgIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGZvcndhcmQgYW5kIHRoZSBuZXcgcmVnaW1lIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGJhY2ssIGl0J3NcbiAgIGVxdWl2YWxlbnQgdG8gY2FsY3VsYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVGltZS50J3MgcmVsYXRpdmUgdG8gYm90aCB0aGUgb2xkIGFuZCB0aGVcbiAgIG5ldyByZWdpbWUgYW5kIHBpY2tpbmcgdGhlIG9uZSB0aGF0IG9jY3VycyBsYXRlci4gWWVzLCBsYXRlci4gSSBoYWQgdG8gZHJhdyBhIGRpYWdyYW1cbiAgIHRvIHBlcnN1YWRlIG15c2VsZiB0aGF0IGl0J3MgdGhhdCB3YXkgcm91bmQsIGJ1dCBpdCBpcy4pXG4qKVxubW9kdWxlIE1vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFic29sdXRlXG4gICAgfCBEYXRlX2FuZF9vZmRheVxuZW5kXG5cbmxldCBlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSAoeCA6IFRyYW5zaXRpb24udCkgPVxuICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gIG1hdGNoIChtb2RlIDogTW9kZS50KSB3aXRoXG4gIHwgQWJzb2x1dGUgLT4geC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfCBEYXRlX2FuZF9vZmRheSAtPlxuICAgIHguc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoICsgeC5uZXdfcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcblxubGV0IGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzID1cbiAgaW5kZXggPCAwIHx8IEludDYzLiggPj0gKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCkpXG47O1xuXG5sZXQgaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCArIDEgPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbiAgfHwgSW50NjMuKCA8ICkgc2Vjb25kcyAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgdC50cmFuc2l0aW9ucy4oaW5kZXggKyAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzIDogSW5kZXgudCA9XG4gIEFycmF5LmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJhbnNpdGlvbnMgYExhc3Rfb25fbGVmdCB+c2VnbWVudF9vZjooZnVuIHRyYW5zaXRpb24gLT5cbiAgICBpZiBJbnQ2My4oIDw9ICkgKGVmZmVjdGl2ZV9zdGFydF90aW1lIHRyYW5zaXRpb24gfm1vZGUpIHNlY29uZHNcbiAgICB0aGVuIGBMZWZ0XG4gICAgZWxzZSBgUmlnaHQpXG4gIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuOztcblxubGV0IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzID1cbiAgbGV0IGluZGV4ID1cbiAgICBsZXQgaW5kZXggPSB0Lmxhc3RfcmVnaW1lX2luZGV4IGluXG4gICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXg7IHRyeSBwcmV2aW91cyBpbmRleCAqKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggLSAxIGluXG4gICAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICAgKCogdGltZSBpcyBiZWZvcmUgcHJldmlvdXMgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4IGFuZCBub3QgYmVmb3JlIHByZXZpb3VzLCBzbyB3aXRoaW4gcHJldmlvdXMgKilcbiAgICAgIGVsc2UgaW5kZXgpXG4gICAgZWxzZSBpZiBub3QgKGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYWZ0ZXIgY2FjaGVkIGluZGV4OyB0cnkgbmV4dCBpbmRleCAqKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggKyAxIGluXG4gICAgICBpZiBub3QgKGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICAgKCogdGltZSBpcyBhZnRlciBuZXh0IGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgY2FjaGVkIGluZGV4IGFuZCBub3QgYWZ0ZXIgbmV4dCwgc28gd2l0aGluIG5leHQgKilcbiAgICAgIGVsc2UgaW5kZXggKCogdGltZSBpcyB3aXRoaW4gY2FjaGVkIGluZGV4ICopKVxuICAgIGVsc2UgaW5kZXhcbiAgaW5cbiAgdC5sYXN0X3JlZ2ltZV9pbmRleCA8LSBpbmRleDtcbiAgaW5kZXhcbjs7XG5cbm1vZHVsZSBUaW1lX2luX3NlY29uZHMgOiBzaWdcbiAgaW5jbHVkZSBab25lX2ludGYuVGltZV9pbl9zZWNvbmRzXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyA9IEZuLmlkXG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gPSBGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIGluY2x1ZGUgQWJzb2x1dGVcbmVuZFxuXG5sZXQgaW5kZXggdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpBYnNvbHV0ZVxuOztcblxubGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkRhdGVfYW5kX29mZGF5XG47O1xuXG5sZXQgaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4ID49IDAgJiYgaW5kZXggPCBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xubGV0IGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCArIDEpXG5cbmxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICB0cmFuc2l0aW9uLnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IChpbmRleCArIDEpXG5cbmxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIGxldCBhZnRlciA9IHRyYW5zaXRpb24ubmV3X3JlZ2ltZSBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpbmRleCA9IDAgdGhlbiB0LmRlZmF1bHRfbG9jYWxfdGltZV90eXBlIGVsc2UgdC50cmFuc2l0aW9ucy4oaW5kZXggLSAxKS5uZXdfcmVnaW1lXG4gIGluXG4gIEludDYzLiggLSApIGFmdGVyLnV0Y19vZmZzZXRfaW5fc2Vjb25kcyBiZWZvcmUudXRjX29mZnNldF9pbl9zZWNvbmRzXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IChpbmRleCArIDEpXG47O1xuXG5sZXQgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IGluZGV4ID1cbiAgbGV0IHJlZ2ltZSA9IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggaW5cbiAgcmVnaW1lLmFiYnJ2XG47O1xuXG5sZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgbGV0IHJlZ2ltZSA9IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggaW5cbiAgVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kcyByZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBWYWxpZGF0ZWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBSYXcgPSBSYXdcblxudHlwZSAoJ3JhdywgJ3dpdG5lc3MpIHQgPSAncmF3XG5cbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgU19iaW5faW8gPSBTX2Jpbl9pbyB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubW9kdWxlIHR5cGUgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgPVxuICBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubGV0IHJhdyB0ID0gdFxuXG5tb2R1bGUgTWFrZSAoUmF3IDogUmF3KSA9IHN0cnVjdFxuICB0eXBlIHdpdG5lc3NcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvciA9XG4gICAgRXJyb3IuY3JlYXRlXG4gICAgICBcInZhbGlkYXRpb24gZmFpbGVkXCJcbiAgICAgICh0LCBlcnJvciwgUmF3LmhlcmUpXG4gICAgICBbJXNleHBfb2Y6IFJhdy50ICogRXJyb3IudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRdXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9leG4gdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IucmFpc2UgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiBPayB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBjcmVhdGVfZXhuIChSYXcudF9vZl9zZXhwIHNleHApXG4gIGxldCByYXcgdCA9IHRcbmVuZFxuXG5tb2R1bGUgQWRkX2Jpbl9pbyAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChSYXcpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IFJhdy50XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcmF3ID1cbiAgICAgICAgICBpZiBSYXcudmFsaWRhdGVfYmluaW9fZGVzZXJpYWxpemF0aW9uIHRoZW4gVmFsaWRhdGVkLmNyZWF0ZV9leG4gcmF3IGVsc2UgcmF3XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBBZGRfY29tcGFyZSAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBjb21wYXJlIHQxIHQyID0gWyVjb21wYXJlOiBSYXcudF0gKHJhdyB0MSkgKHJhdyB0MilcbmVuZFxuXG5tb2R1bGUgQWRkX2hhc2ggKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKFZhbGlkYXRlZCA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmF3Lmhhc2hfZm9sZF90IHN0YXRlIChWYWxpZGF0ZWQucmF3IHQpXG4gIGxldCBoYXNoIHQgPSBSYXcuaGFzaCAoVmFsaWRhdGVkLnJhdyB0KVxuZW5kXG5cbm1vZHVsZSBBZGRfdHlwZXJlcCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoUmF3IDogUmF3X2Jpbl9pbykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQwID0gTWFrZSAoUmF3KVxuICBpbmNsdWRlIFQwXG4gIGluY2x1ZGUgQWRkX2Jpbl9pbyAoUmF3KSAoVDApXG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gTWFrZV9iaW5hYmxlIChSYXcpXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEFkZF9jb21wYXJlIChSYXcpIChUKVxuXG4gIGluY2x1ZGUgKFxuICAgIEFkZF9oYXNoIChSYXcpIChUKSA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG4iLCJpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJZFxuXG4gIG1vZHVsZSBVaWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVXBzdHJlYW0gPSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkXG4gICAgaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLkV4dGVuZFxuICAgICAgICAoVXBzdHJlYW0pXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChVcHN0cmVhbSlcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgVW5pdl9tYXBfaW50ZlxubW9kdWxlIFVpZCA9IFR5cGVfZXF1YWwuSWQuVWlkXG5cbm1vZHVsZSBNYWtlMVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAoJ3MsICdhKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gICgqIEEgd3JhcHBlciBmb3IgdGhlIFtLZXldIG1vZHVsZSB0aGF0IGFkZHMgYSBkeW5hbWljIGNoZWNrIHRvIFtLZXkudHlwZV9pZF0uXG5cbiAgICAgSXQncyBhIGJ1ZyBpZiB0aGUgdXNlci1wcm92aWRlZCBbS2V5LnR5cGVfaWRdIGdpdmVzIGRpZmZlcmVudCB0eXBlIGlkcyBvbiBkaWZmZXJlbnRcbiAgICAgY2FsbHMuICBCZWNhdXNlIHRoaXMgY2hlY2sgc2hvdWxkIGJlIGZhaXJseSBjaGVhcCwgd2UgZG8gaXQgZHluYW1pY2FsbHkgdG8gYXZvaWRcbiAgICAgc3VidGxlciBwcm9ibGVtcyBsYXRlci5cblxuICAgICBPZiBjb3Vyc2UsIHdlJ3JlIG5vdCBjaGVja2luZyB0cnVseSBwYXRob2xvZ2ljYWwgdGhpbmdzIGxpa2UgdGhlIHByb3ZpZGVkXG4gICAgIFtLZXkudHlwZV9pZF0gb25seSBjaGFuZ2VzIHRoZSB2YWx1ZSBpdCByZXR1cm5zIG9uIGV2ZXJ5IHRoaXJkIGNhbGwuLi4gKilcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEtleS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiB0ZXN0LWZyaWVuZGx5IHNleHAgY29udmVyc2lvbiAqKVxuICAgIGxldCBzZXhwX29mX3R5cGVfaWQgdHlwZV9pZCA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBuYW1lID0gKFR5cGVfZXF1YWwuSWQubmFtZSB0eXBlX2lkIDogc3RyaW5nKVxuICAgICAgICA7IHVpZCA9XG4gICAgICAgICAgICAoKGlmIGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcbiAgICAgICAgICAgICAgdGhlbiBTZXhwLkF0b20gXCI8dWlkPlwiXG4gICAgICAgICAgICAgIGVsc2UgVHlwZV9lcXVhbC5JZC5VaWQuc2V4cF9vZl90IChUeXBlX2VxdWFsLklkLnVpZCB0eXBlX2lkKSkgOiBTZXhwLnQpXG4gICAgICAgIH1dXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkIGtleSA9XG4gICAgICBsZXQgdHlwZV9pZDEgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGxldCB0eXBlX2lkMiA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgaWYgVHlwZV9lcXVhbC5JZC5zYW1lIHR5cGVfaWQxIHR5cGVfaWQyXG4gICAgICB0aGVuIHR5cGVfaWQxXG4gICAgICBlbHNlXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW0tleS50eXBlX2lkXSBtdXN0IG5vdCBwcm92aWRlIGRpZmZlcmVudCB0eXBlIGlkcyB3aGVuIGNhbGxlZCBvbiB0aGUgc2FtZSBcXFxuICAgICAgICAgICAgIGlucHV0XCJcbiAgICAgICAgICAgICAgKGtleSA6IF8gS2V5LnQpXG4gICAgICAgICAgICAgICh0eXBlX2lkMSA6IHR5cGVfaWQpXG4gICAgICAgICAgICAgICh0eXBlX2lkMiA6IHR5cGVfaWQpXVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgKCdzLCAnYSkgZGF0YSA9ICgncywgJ2EpIERhdGEudFxuXG4gIGxldCBuYW1lX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLm5hbWUgKEtleS50eXBlX2lkIGtleSlcbiAgbGV0IHVpZF9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC51aWQgKEtleS50eXBlX2lkIGtleSlcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAncyB0ID0gVCA6ICdhIEtleS50ICogKCdzLCAnYSkgRGF0YS50IC0+ICdzIHRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIChUIChrZXksIGRhdGEpKSA9XG4gICAgICBEYXRhLnNleHBfb2ZfdCBzZXhwX29mX2EgKFR5cGVfZXF1YWwuSWQudG9fc2V4cCAoS2V5LnR5cGVfaWQga2V5KSkgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZF9uYW1lIChUIChrZXksIF8pKSA9IG5hbWVfb2Zfa2V5IGtleVxuICAgIGxldCB0eXBlX2lkX3VpZCAoVCAoa2V5LCBfKSkgPSB1aWRfb2Zfa2V5IGtleVxuXG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPVxuICAgICAgbGV0IGMgPSBTdHJpbmcuY29tcGFyZSAodHlwZV9pZF9uYW1lIHQxKSAodHlwZV9pZF9uYW1lIHQyKSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIFVpZC5jb21wYXJlICh0eXBlX2lkX3VpZCB0MSkgKHR5cGVfaWRfdWlkIHQyKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ3MgdCA9ICdzIFBhY2tlZC50IFVpZC5NYXAudFxuXG4gIGxldCB0b19hbGlzdCB0ID0gTWFwLmRhdGEgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6UGFja2VkLmNvbXBhcmVcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICB0b19hbGlzdCB0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBwYWNrZWQgLT4gUGFja2VkLnR5cGVfaWRfbmFtZSBwYWNrZWQsIHBhY2tlZClcbiAgICB8PiBbJXNleHBfb2Y6IChzdHJpbmcgKiBhIFBhY2tlZC50KSBsaXN0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgKHQgOiBfIHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgTWFwLml0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIGFzc2VydCAoVWlkLmVxdWFsIGtleSAoUGFja2VkLnR5cGVfaWRfdWlkIGRhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPSBNYXAuc2V0IHQgfmtleToodWlkX29mX2tleSBrZXkpIH5kYXRhOihQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgbGV0IG1lbV9ieV9pZCB0IGlkID0gTWFwLm1lbSB0IGlkXG4gIGxldCBtZW0gdCBrZXkgPSBtZW1fYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCByZW1vdmVfYnlfaWQgdCBpZCA9IE1hcC5yZW1vdmUgdCBpZFxuICBsZXQgcmVtb3ZlIHQga2V5ID0gcmVtb3ZlX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgZW1wdHkgPSBVaWQuTWFwLmVtcHR5XG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBVaWQuTWFwLnNpbmdsZXRvbiAodWlkX29mX2tleSBrZXkpIChQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgbGV0IGlzX2VtcHR5ID0gTWFwLmlzX2VtcHR5XG5cbiAgbGV0IGZpbmQgKHR5cGUgYikgdCAoa2V5IDogYiBLZXkudCkgPVxuICAgIG1hdGNoIE1hcC5maW5kIHQgKHVpZF9vZl9rZXkga2V5KSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKFBhY2tlZC5UIChrZXknLCB2YWx1ZSkpIC0+XG4gICAgICAoKiBjYW5ub3QgcmFpc2UgLS0gc2VlIFtpbnZhcmlhbnRdICopXG4gICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBrZXkpIChLZXkudHlwZV9pZCBrZXknKVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHZhbHVlIDogKF8sIGIpIERhdGEudClcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiVW5pdl9tYXAuZmluZF9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID0gaWYgbWVtIHQga2V5IHRoZW4gYER1cGxpY2F0ZSBlbHNlIGBPayAoc2V0IHQgfmtleSB+ZGF0YSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgYE9rIHQgLT4gdFxuICAgIHwgYER1cGxpY2F0ZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5hZGRfZXhuIG9uIGV4aXN0aW5nIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZV9leG4gdCBrZXkgfmY6dXBkYXRlID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhOih1cGRhdGUgZGF0YSlcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiVW5pdl9tYXAuY2hhbmdlX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIGxldCBvcmlnID0gZmluZCB0IGtleSBpblxuICAgIGxldCBuZXh0ID0gdXBkYXRlIG9yaWcgaW5cbiAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgfCBOb25lIC0+IGlmIE9wdGlvbi5pc19ub25lIG9yaWcgdGhlbiB0IGVsc2UgcmVtb3ZlIHQga2V5XG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9IGNoYW5nZSB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIFVpZC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCB0IH5mOihmdW4gcCAtPiBQYWNrZWQudHlwZV9pZF91aWQgcCwgcCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoS2V5IDogS2V5KSAoRGF0YSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9XG4gICAgTWFrZTFcbiAgICAgIChLZXkpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgKF8sICdhKSB0ID0gJ2EgRGF0YS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmQpXG5cbiAgdHlwZSB0ID0gdW5pdCBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRGF0YS50XG5cbiAgbGV0IGludmFyaWFudCA9IE0uaW52YXJpYW50XG4gIGxldCBlbXB0eSA9IE0uZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiA9IE0uc2luZ2xldG9uXG4gIGxldCBpc19lbXB0eSA9IE0uaXNfZW1wdHlcbiAgbGV0IHNldCA9IE0uc2V0XG4gIGxldCBtZW0gPSBNLm1lbVxuICBsZXQgbWVtX2J5X2lkID0gTS5tZW1fYnlfaWRcbiAgbGV0IGZpbmQgPSBNLmZpbmRcbiAgbGV0IGZpbmRfZXhuID0gTS5maW5kX2V4blxuICBsZXQgYWRkID0gTS5hZGRcbiAgbGV0IGFkZF9leG4gPSBNLmFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IE0uY2hhbmdlXG4gIGxldCBjaGFuZ2VfZXhuID0gTS5jaGFuZ2VfZXhuXG4gIGxldCB1cGRhdGUgPSBNLnVwZGF0ZVxuICBsZXQgcmVtb3ZlID0gTS5yZW1vdmVcbiAgbGV0IHJlbW92ZV9ieV9pZCA9IE0ucmVtb3ZlX2J5X2lkXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgOiAnYSBLZXkudCAqICdhIERhdGEudCAtPiB0XG4gIGVuZFxuXG4gIGxldCB0b19hbGlzdCB0ID1cbiAgICBMaXN0Lm1hcCAoTS50b19hbGlzdCB0KSB+ZjooZnVuY3Rpb24gTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSAtPiBQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIE0ub2ZfYWxpc3RfZXhuXG4gICAgICAoTGlzdC5tYXAgdCB+ZjooZnVuY3Rpb24gUGFja2VkLlQgKGtleSwgZGF0YSkgLT4gTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1lcmdlIChLZXkgOiBLZXkpIChJbnB1dDFfZGF0YSA6IERhdGEpIChJbnB1dDJfZGF0YSA6IERhdGEpIChPdXRwdXRfZGF0YSA6IERhdGEpID1cbnN0cnVjdFxuICB0eXBlIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICdhIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICdhIElucHV0MV9kYXRhLnQgKiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gJ2EgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZSAodDEgOiBNYWtlKEtleSkoSW5wdXQxX2RhdGEpLnQpICh0MiA6IE1ha2UoS2V5KShJbnB1dDJfZGF0YSkudCkgfmY6eyBmIH1cbiAgICA6IE1ha2UoS2V5KShPdXRwdXRfZGF0YSkudFxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0Lk0uUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNZXJnZTFcbiAgICAoS2V5IDogS2V5KVxuICAgIChJbnB1dDFfZGF0YSA6IERhdGExKVxuICAgIChJbnB1dDJfZGF0YSA6IERhdGExKVxuICAgIChPdXRwdXRfZGF0YSA6IERhdGExKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ3MxLCAnczIsICdzMykgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudCAqICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gKCdzMywgJ2EpIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlMSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlXG4gICAgICAgICh0eXBlIHMxIHMyKVxuICAgICAgICAodDEgOiBzMSBNYWtlMShLZXkpKElucHV0MV9kYXRhKS50KVxuICAgICAgICAodDIgOiBzMiBNYWtlMShLZXkpKElucHV0Ml9kYXRhKS50KVxuICAgICAgICB+Zjp7IGYgfVxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0LlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVHlwZV9pZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVHlwZV9lcXVhbC5JZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHR5cGVfaWQgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBNYWtlXG4gICAgKFR5cGVfaWRfa2V5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kKSA6XG4gICAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIGFuZCBtb2R1bGUgS2V5IDo9IFR5cGVfaWRfa2V5KVxuXG5tb2R1bGUgS2V5ID0gVHlwZV9lcXVhbC5JZFxuXG5tb2R1bGUgV2l0aF9kZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBrZXkgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgZGVmYXVsdCA6ICdhXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5kZWZhdWx0IH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBkZWZhdWx0OyBrZXkgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZGVmYXVsdCB9ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IChmaW5kIHQga2V5KVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGRlZmF1bHQgPSBfIH0gfmRhdGEgPSBzZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID0gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIChmaW5kIHQga2V5KSlcbmVuZFxuXG5tb2R1bGUgV2l0aF9mb2xkID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBrZXkgOiAnYiBXaXRoX2RlZmF1bHQuS2V5LnRcbiAgICAgIDsgZiA6ICdiIC0+ICdhIC0+ICdiXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5pbml0IH5mIH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBmOyBrZXkgPSBXaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDppbml0IH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IFdpdGhfZGVmYXVsdC5LZXkuaWQgdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGYgPSBfIH0gPSBXaXRoX2RlZmF1bHQuZmluZCB0IGtleVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGYgPSBfIH0gfmRhdGEgPSBXaXRoX2RlZmF1bHQuc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQgeyBLZXkua2V5OyBmID0gXyB9IH5mOnVwZGF0ZSA9IFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6dXBkYXRlXG5cbiAgbGV0IGFkZCB0IH5rZXk6eyBLZXkua2V5OyBmIH0gfmRhdGEgPVxuICAgIFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6KGZ1biBhY2MgLT4gZiBhY2MgZGF0YSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcbiAgb3BlbiBXaXRoX2ZvbGRcblxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCAnYSBsaXN0KSBLZXkudFxuXG4gICAgbGV0IGNyZWF0ZSB+bmFtZSBzZXhwX29mID1cbiAgICAgIEtleS5jcmVhdGUgfmluaXQ6W10gfmY6KGZ1biB4cyB4IC0+IHggOjogeHMpIH5uYW1lIChMaXN0LnNleHBfb2ZfdCBzZXhwX29mKVxuICAgIDs7XG5cbiAgICBsZXQgaWQgPSBXaXRoX2ZvbGQuS2V5LmlkXG4gIGVuZFxuXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOYW5vc2Vjb25kXG4gIHwgTWljcm9zZWNvbmRcbiAgfCBNaWxsaXNlY29uZFxuICB8IFNlY29uZFxuICB8IE1pbnV0ZVxuICB8IEhvdXJcbiAgfCBEYXlcbltAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaF1cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gVW5pcXVlX2lkX2ludGZcblxubW9kdWxlIHR5cGUgSWQgPSBJZFxuXG4oKiBPbmx5IFwibWFrZVwiIGNhbiBjYXVzZSBhIGNvbnRleHQtc3dpdGNoIHRoYXQgbWlnaHQgbGVhZCB0byBhIHJhY2UuXG4gICBUaHVzIHdlIGhhdmUgdG8gY2hlY2sgd2hldGhlciB0aGUgY29udGVudHMgb2YgdGhlIGNlbGwgcmVtYWluZWRcbiAgIHVuY2hhbmdlZCBhY3Jvc3MgdGhpcyBjYWxsLiAgVGhlIHN1YnNlcXVlbnQgY29tcGFyaXNvbiwgZGVyZWZlcmVuY2luZ1xuICAgYW5kIGFzc2lnbm1lbnQgY2Fubm90IGNhdXNlIGNvbnRleHQgc3dpdGNoZXMuICBJZiB0aGUgY29udGVudHMgb2YgdGhlXG4gICBjZWxsIGhhZCBjaGFuZ2VkLCB3ZSB3aWxsIGhhdmUgdG8gdHJ5IGFnYWluIHRvIG9idGFpbiBhIHVuaXF1ZSBpZC5cbiAgIFRoaXMgaXMgZXNzZW50aWFsbHkgbGlrZSBhIHNwaW4tbG9jayBhbmQgaXMgdmlydHVhbGx5IGd1YXJhbnRlZWQgdG9cbiAgIHN1Y2NlZWQgcXVpY2tseS4gKilcbmxldCByZWMgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZSA9XG4gIGxldCB4ID0gIWNlbGwgaW5cbiAgbGV0IG5ld194ID0gbWFrZSB4IGluXG4gIGlmIHBoeXNfZXF1YWwgIWNlbGwgeFxuICB0aGVuIChcbiAgICBjZWxsIDo9IG5ld194O1xuICAgIHgpXG4gIGVsc2UgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZVxuOztcblxubW9kdWxlIEludCAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuXG5tb2R1bGUgSW50NjMgKCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnQ2M1xuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdmVyeSBtdWNoIGRlcGVuZGVudCBvbiB0aGUgcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuICBTaG91bGQgdGhlXG4gICB3YXkgdGhlIGNvbXBpbGVyIHJlcHJlc2VudHMgdmFyaW91cyB0eXBlcyBjaGFuZ2UsIGl0IG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGlzXG4gICBtb2R1bGUsIG90aGVyd2lzZSBiYWQgdGhpbmdzIGNvdWxkIGhhcHBlbi4gIFRoZXJlZm9yZSB0aGUgY29udmVyc2lvbnMgYW5kXG4gICByZXByZXNlbnRhdGlvbnMgYXJlIHRlc3RlZCB0aG9yb3VnaGx5IGluIFsuLi90ZXN0L3Rlc3Rfd2l0bmVzcy5tbF0gYW5kXG4gICBbLi4vdGVzdC90ZXN0X2NvbnZlcnNpb25zLm1sXVxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIEhhc2hfc2V0ID0gQmFzZS5IYXNoX3NldFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgKCogVGhlIGludGVnZXJzIGhlcmUgYXJlIHRoZSB2YWx1ZXMgdW5kZXJseWluZyB0aGUgcG9seW1vcnBoaWMgdmFyaWFudHMsIHRoZXkgYWxyZWFkeVxuICAgICBhcmUgaGFzaGVzIG9mIGNvbnN0cnVjdG9yIG5hbWVzLCBhbmQgaGVuY2UgYXJlIGV4cGVjdGVkIHRvIGJlIHVuaWZvcm1seVxuICAgICBkaXN0cmlidXRlZC4gKilcbiAgbGV0IGhhc2ggeCA9IHhcbmVuZFxuXG5tb2R1bGUgQWxsb3dlZF9pbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb25lXG4gICAgfCBBbGxcbiAgICB8IEhhc2hfc2V0IG9mIEhhc2hfc2V0Lk0oS2V5KS50XG4gICAgfCBGcm9tX3plcm9fdG8gb2YgaW50XG5cbiAgbGV0IF9pbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSB8IEFsbCB8IEhhc2hfc2V0IF8gLT4gKClcbiAgICB8IEZyb21femVyb190byBuIC0+IGFzc2VydCAobiA+PSAwKVxuICA7O1xuXG4gIGxldCBpbnRfaXNfdmFsdWUgdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IEFsbCAtPiB0cnVlXG4gICAgfCBIYXNoX3NldCBoYXNoX3NldCAtPiBIYXNoX3NldC5tZW0gaGFzaF9zZXQgaVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gMCA8PSBpICYmIGkgPD0gblxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbW1lZGlhY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFsd2F5c1xuICAgIHwgU29tZXRpbWVzXG4gICAgfCBOZXZlclxuICAgIHwgVW5rbm93blxuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEFsd2F5cyAtPiBcIkFsd2F5c1wiXG4gICAgfCBTb21ldGltZXMgLT4gXCJTb21ldGltZXNcIlxuICAgIHwgTmV2ZXIgLT4gXCJOZXZlclwiXG4gICAgfCBVbmtub3duIC0+IFwiVW5rbm93blwiXG4gIDs7XG5lbmRcblxub3BlbiBJbW1lZGlhY3lcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6ICdhIFR5cGVuYW1lLnQgLT4gSW1tZWRpYWN5LnQgLT4gQWxsb3dlZF9pbnRzLnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX3dpdGhfbmFtZSA6IHN0cmluZyAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiBfIHRcbiAgdmFsIGltbWVkaWFjeSA6IF8gdCAtPiBJbW1lZGlhY3kudFxuICB2YWwgYWxsb3dlZF9pbnRzIDogXyB0IC0+IEFsbG93ZWRfaW50cy50XG4gIHZhbCB0eXBlbmFtZSA6IF8gdCAtPiBzdHJpbmdcblxuICBtb2R1bGUgTmV2ZXJfdmFsdWVzIDogc2lnXG4gICAgdmFsIGludDMyIDogaW50MzIgdFxuICAgIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICAgIHZhbCBhcnJheSA6IF8gYXJyYXkgdFxuICAgIHZhbCByZWZfIDogXyByZWYgdFxuICAgIHZhbCB0dXBsZTIgOiAoXyAqIF8pIHRcbiAgICB2YWwgdHVwbGUzIDogKF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTQgOiAoXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTUgOiAoXyAqIF8gKiBfICogXyAqIF8pIHRcbiAgICB2YWwgZnVuY3Rpb25fIDogKF8gLT4gXykgdFxuICBlbmRcblxuICB2YWwgbmV2ZXIgOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIHVua25vd24gOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIG9wdGlvbiA6IF8gdFxuICB2YWwgbGlzdCA6IF8gdFxuICB2YWwgbWFnaWMgOiBfIHQgLT4gXyB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XyA9XG4gICAgeyBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICAgIDsgYWxsb3dlZF9pbnRzIDogQWxsb3dlZF9pbnRzLnRcbiAgICA7IHR5cGVuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHRfXG5cbiAgbGV0IGNyZWF0ZV93aXRoX25hbWUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgeyBpbW1lZGlhY3k7IGFsbG93ZWRfaW50czsgdHlwZW5hbWUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgY3JlYXRlX3dpdGhfbmFtZSAoVHlwZW5hbWUubmFtZSB0eXBlbmFtZSkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBpbW1lZGlhY3kgdCA9IHQuaW1tZWRpYWN5XG4gIGxldCBhbGxvd2VkX2ludHMgdCA9IHQuYWxsb3dlZF9pbnRzXG4gIGxldCB0eXBlbmFtZSB0ID0gdC50eXBlbmFtZVxuICBsZXQgbWFnaWMgdCA9IHRcbiAgbGV0IG5ldmVyX3dpdGhfbmFtZSBuYW1lID0gY3JlYXRlX3dpdGhfbmFtZSBuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IG5ldmVyIHR5cGVuYW1lID0gY3JlYXRlIHR5cGVuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IHVua25vd24gdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgVW5rbm93biBOb25lXG5cbiAgbGV0IG9wdGlvbiA9IGNyZWF0ZV93aXRoX25hbWUgXCJvcHRpb25cIiBTb21ldGltZXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcbiAgbGV0IGxpc3QgPSBjcmVhdGVfd2l0aF9uYW1lIFwibGlzdFwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgPSBzdHJ1Y3RcbiAgICAoKiBpbnQzMiBpcyBib3hlZCBldmVuIG9uIDY0YiBwbGF0Zm9ybSBhdCB0aGUgbW9tZW50LiAqKVxuICAgIGxldCBpbnQzMiA9IG5ldmVyIHR5cGVuYW1lX29mX2ludDMyXG4gICAgbGV0IGludDY0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50NjRcbiAgICBsZXQgbmF0aXZlaW50ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgbGV0IGZsb2F0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfZmxvYXRcbiAgICBsZXQgc3RyaW5nID0gbmV2ZXIgdHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgbGV0IGJ5dGVzID0gbmV2ZXIgdHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICBsZXQgYXJyYXkgPSBuZXZlcl93aXRoX25hbWUgXCJhcnJheVwiXG4gICAgbGV0IHJlZl8gPSBuZXZlcl93aXRoX25hbWUgXCJyZWZcIlxuICAgIGxldCB0dXBsZTIgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTJcIlxuICAgIGxldCB0dXBsZTMgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTNcIlxuICAgIGxldCB0dXBsZTQgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTRcIlxuICAgIGxldCB0dXBsZTUgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTVcIlxuXG4gICAgbGV0IGZ1bmN0aW9uXyA9IG5ldmVyX3dpdGhfbmFtZSBcImZ1bmN0aW9uXCJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnQgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfaW50IEFsd2F5cyBBbGxvd2VkX2ludHMuQWxsXG5sZXQgdW5pdCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl91bml0IEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxubGV0IGJvb2wgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfYm9vbCBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMSlcbmxldCBjaGFyID0gY3JlYXRlIHR5cGVuYW1lX29mX2NoYXIgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDI1NSlcblxubW9kdWxlIENvbXB1dGF0aW9uX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpYy5WYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5cbiAgbGV0IHJlZl8gXyA9IHJlZl9cbiAgbGV0IGFycmF5IF8gPSBhcnJheVxuICBsZXQgdHVwbGUyIF8gXyA9IHR1cGxlMlxuICBsZXQgdHVwbGUzIF8gXyBfID0gdHVwbGUzXG4gIGxldCB0dXBsZTQgXyBfIF8gXyA9IHR1cGxlNFxuICBsZXQgdHVwbGU1IF8gXyBfIF8gXyA9IHR1cGxlNVxuICBsZXQgZnVuY3Rpb25fIF8gXyA9IGZ1bmN0aW9uX1xuICBsZXQgaW50ID0gaW50XG4gIGxldCBjaGFyID0gY2hhclxuICBsZXQgYm9vbCA9IGJvb2xcbiAgbGV0IHVuaXQgPSB1bml0XG4gIGxldCBvcHRpb24gXyA9IG9wdGlvblxuICBsZXQgbGlzdCBfID0gbGlzdFxuXG4gICgqIEFuIFthIExhenkudF0gbWlnaHQgYmUgYSBib3hlZCBjbG9zdXJlLCBzbyBtdXN0IGhhdmUgaW1tZWRpYWN5IGVpdGhlciBbTmV2ZXJdIG9yXG4gICAgIFtTb21ldGltZXNdLiAgQW4gW2EgTGF6eS50XSB2YWx1ZSBjb3VsZCBiZSBpbW1lZGlhdGUgaWYgW2FdIGlzIGltbWVkaWF0ZS4gIEJ1dCBpZiBbYV1cbiAgICAgaXMgbmV2ZXIgaW1tZWRpYXRlLCB0aGVuIFthIExhenkudF0gY2Fubm90IGJlLiAqKVxuICBsZXQgbGF6eV90IHQgPVxuICAgIGxldCBpbW1lZGlhY3kgPVxuICAgICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgICAgfCBOZXZlciAtPiBOZXZlclxuICAgICAgfCBVbmtub3duIC0+IFVua25vd25cbiAgICAgIHwgU29tZXRpbWVzIHwgQWx3YXlzIC0+IFNvbWV0aW1lc1xuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfbmFtZSBcImxhenlfdFwiIGltbWVkaWFjeSAoYWxsb3dlZF9pbnRzIHQpXG4gIDs7XG5cbiAgbGV0IHBvc3NpYmx5X3VuYm94ZWQgdHlwZW5hbWUgY2hpbGRfdHlwZSA9XG4gICAgbWF0Y2ggaW1tZWRpYWN5IGNoaWxkX3R5cGUgd2l0aFxuICAgIHwgTmV2ZXIgLT4gbmV2ZXIgdHlwZW5hbWVcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gdW5rbm93biB0eXBlbmFtZVxuICA7O1xuXG4gIGxldCByZWNvcmQgciA9XG4gICAgaWYgUmVjb3JkLmxlbmd0aCByID4gMVxuICAgIHRoZW4gbmV2ZXIgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKEZpZWxkIHRoZV9vbmx5X2ZpZWxkKSA9IFJlY29yZC5maWVsZCByIDAgaW5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpIChGaWVsZC50cmF2ZXJzZSB0aGVfb25seV9maWVsZCkpXG4gIDs7XG5cbiAgKCogVmFyaWFudHMgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBubyBhcmd1bWVudHMgYXJlIGFsd2F5cyBpbW1lZGlhdGU7IHZhcmlhbnRzXG4gICAgIHdpdGggYWxsIGNvbnN0cnVjdG9ycyBoYXZpbmcgc29tZSBhcmd1bWVudHMgYXJlIG5ldmVyIGltbWVkaWF0ZTsgbWl4ZWQgdmFyaWFudHMgYXJlXG4gICAgIHNvbWV0aW1lcyBpbW1lZGlhdGUuXG5cbiAgICAgSWYgYSB2YXJpYW50IGhhcyBhIHNpbmdsZSBjb25zdHJ1Y3RvciwgYW5kIHRoZSBjb25zdHJ1Y3RvciBoYXMgYW4gYXJndW1lbnQsIHRoZVxuICAgICB2YXJpYW50IGNhbiBiZSB1bmJveGVkLiBJZiB1bmJveGVkLCBlaXRoZXIgZXhwbGljaXRseSBvciBieSBkZWZhdWx0IChkZXBlbmRpbmcgb25cbiAgICAgY29tcGlsZXIgc2V0dGluZ3MpLCB0aGUgcmVwcmVzZW50YXRpb24gaXMgc2ltcGx5IHRoZSBhcmd1bWVudC4gT3RoZXJ3aXNlLCB0aGUgcnVsZXNcbiAgICAgYWJvdmUgYXBwbHkgbm9ybWFsbHkuICopXG4gIGxldCB2YXJpYW50IHZhcmlhbnQgPVxuICAgIGxldCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0ID1cbiAgICAgIFZhcmlhbnQuZm9sZCB2YXJpYW50IH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChubywgb25lLCBtb3JlKSAoVGFnIHQgYXMgdGFnKSAtPlxuICAgICAgICBtYXRjaCBUYWcuYXJpdHkgdCB3aXRoXG4gICAgICAgIHwgMCAtPiB0YWcgOjogbm8sIG9uZSwgbW9yZVxuICAgICAgICB8IDEgLT4gbm8sIHRhZyA6OiBvbmUsIG1vcmVcbiAgICAgICAgfCBfIC0+IG5vLCBvbmUsIHRhZyA6OiBtb3JlKVxuICAgIGluXG4gICAgbWF0Y2ggbm9fYXJnX2xpc3QsIG9uZV9hcmdfbGlzdCwgbW9yZV9hcmdfbGlzdCB3aXRoXG4gICAgfCBbXSwgWyBUYWcgdGFnIF0sIFtdIHdoZW4gbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpIC0+XG4gICAgICBwb3NzaWJseV91bmJveGVkIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgKFRhZy50cmF2ZXJzZSB0YWcpXG4gICAgfCBbXSwgW10sIFtdIC0+XG4gICAgICAoKiBXZSBkb24ndCBoYXZlIGFuIGV4cGxpY3Qgd2F5IG9mIHNheWluZyBhIHR5cGUgaXMgdW5pbmhhYml0ZWQuICopXG4gICAgICB1bmtub3duIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IFtdLCBfIDo6IF8sIF8gfCBbXSwgXywgXyA6OiBfIC0+IG5ldmVyIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IF8gOjogXywgXywgXyAtPlxuICAgICAgbGV0IG5vX2FyZ19jb3VudCA9IExpc3QubGVuZ3RoIG5vX2FyZ19saXN0IGluXG4gICAgICBsZXQgYWxsb3dlZF9pbnRzID1cbiAgICAgICAgaWYgbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpXG4gICAgICAgIHRoZW4gQWxsb3dlZF9pbnRzLkZyb21femVyb190byAobm9fYXJnX2NvdW50IC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGhhc2hfc2V0ID0gSGFzaF9zZXQuY3JlYXRlIChtb2R1bGUgS2V5KSB+c2l6ZToobm9fYXJnX2NvdW50ICogMikgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgbm9fYXJnX2xpc3QgfmY6KGZ1biAoVGFnIHRhZykgLT5cbiAgICAgICAgICAgIG1hdGNoIFRhZy5jcmVhdGUgdGFnIHdpdGhcbiAgICAgICAgICAgIHwgVGFnLkNvbnN0IF8gLT4gSGFzaF9zZXQuYWRkIGhhc2hfc2V0IChUYWcub2NhbWxfcmVwciB0YWcpXG4gICAgICAgICAgICB8IFRhZy5BcmdzIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICBBbGxvd2VkX2ludHMuSGFzaF9zZXQgaGFzaF9zZXQpXG4gICAgICBpblxuICAgICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICAgIGlmIExpc3QuaXNfZW1wdHkgb25lX2FyZ19saXN0ICYmIExpc3QuaXNfZW1wdHkgbW9yZV9hcmdfbGlzdFxuICAgICAgICB0aGVuIEFsd2F5c1xuICAgICAgICBlbHNlIFNvbWV0aW1lc1xuICAgICAgaW5cbiAgICAgIGNyZWF0ZSAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpIGltbWVkaWFjeSBhbGxvd2VkX2ludHNcbiAgOztcblxuICBsZXQgbmFtZSA9IFwiaXNfaW1tZWRpYXRlXCJcbiAgbGV0IHJlcXVpcmVkID0gW11cblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gKClcbiAgICBlbmRcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IHJlZlxuXG4gICAgKCogVGhlIGRlZmF1bHQgd2l0bmVzcyAtIHdoaWNoIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBbaW5pdF0gYW5kIHJlY292ZXJlZCBhdCBhbnkgbGF0ZXJcbiAgICAgICBwb2ludCBieSBjYWxsaW5nIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSAtIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSByZWN1cnNpdmUgdHlwZS5cbiAgICAgICBPdGhlciB0eXBlcyB0aGF0IGRvbid0IHVzZSBbZ2V0X3dpcF9jb21wdXRhdGlvbl0gd2lsbCBqdXN0IGV2YWx1YXRlIHRvIHRoZSBhY3R1YWxcbiAgICAgICB3aXRuZXNzIHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgaW5pdGlhbCBkdW1teSBvbmUuICopXG4gICAgbGV0IGluaXQgXyBuYW1lID0gcmVmIChjcmVhdGUgbmFtZSBTb21ldGltZXMgQWxsb3dlZF9pbnRzLk5vbmUpXG4gICAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gY29tcCA9ICFjb21wXG5cbiAgICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHIgdCA9XG4gICAgICByIDo9IHQ7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBzaGFyZSBfID0gdHJ1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IFR5cGVfZ2VuZXJpYy5NYWtlIChDb21wdXRhdGlvbl9pbXBsKVxuXG5sZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgbGV0IChgZ2VuZXJpYyB0KSA9IEdlbmVyaWMub2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gIHRcbjs7XG5cbm1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnMgKE0gOiBzaWdcbiAgICB2YWwgaW1tZWRpYWN5IDogSW1tZWRpYWN5LnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHdpdG5lc3MgdHlwZXJlcDEgdHlwZXJlcDIgPVxuICAgIGxldCB0MSA9IG9mX3R5cGVyZXAgdHlwZXJlcDEgaW5cbiAgICBsZXQgdDIgPSBvZl90eXBlcmVwIHR5cGVyZXAyIGluXG4gICAgbGV0IGkxID0gaW1tZWRpYWN5IHQxIGluXG4gICAgbGV0IGkyID0gaW1tZWRpYWN5IHQyIGluXG4gICAgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgaTIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGlzIG5vdCBpbmRlcGVuZGVudCBvZiBpdHMgYXJndW1lbnRzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpKVxuICAgIGVsc2UgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgTS5pbW1lZGlhY3kpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGRvZXMgbm90IGhhdmUgZGVzaXJlZCBpbW1lZGlhY3k6IHdhbnRlZCAlcyBidXQgZ290ICVzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIE0uaW1tZWRpYWN5KVxuICAgICAgICAgICAoSW1tZWRpYWN5LnRvX3N0cmluZyBpMSkpXG4gICAgZWxzZSB0MVxuICA7O1xuXG4gICgqIGFsd2F5cyBpbW1lZGlhdGUgKilcbiAgbGV0IHJhID0gVHlwZXJlcC5JbnRcblxuICAoKiBuZXZlciBpbW1lZGlhdGUgKilcbiAgbGV0IHJuID0gVHlwZXJlcC5TdHJpbmdcblxuICAoKiBFYWNoIG9mIHRoZSBbRm9yX2FsbF9wYXJhbWV0ZXJzXypdIGZ1bmN0b3JzIHdvcmtzIGJ5IGluc3RhbnRpYXRpbmcgdGhlIG4tYXJ5IHR5cGVcbiAgICAgd2l0aCBhbGwgW0Fsd2F5c10gdHlwZXMsIGFuZCB0aGVuIHdpdGggYWxsIFtOZXZlcl0gdHlwZXMuICBJZiB0aG9zZSBwcm9kdWNlIHRoZSBzYW1lXG4gICAgIGltbWVkaWFjeSwgdGhlbiB3ZSBjb25jbHVkZSB0aGF0IHRoZSBuLWFyeSB0eXBlIGlzIGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHMuICopXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMSAoWCA6IFR5cGVyZXBhYmxlLlMxKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEpIChYLnR5cGVyZXBfb2ZfdCBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMiAoWCA6IFR5cGVyZXBhYmxlLlMyKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMyAoWCA6IFR5cGVyZXBhYmxlLlMzKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNCAoWCA6IFR5cGVyZXBhYmxlLlM0KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNSAoWCA6IFR5cGVyZXBhYmxlLlM1KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5lbmRcblxubGV0IGludF9pc192YWx1ZSB0IGludCA9IEFsbG93ZWRfaW50cy5pbnRfaXNfdmFsdWUgKGFsbG93ZWRfaW50cyB0KSBpbnRcblxubGV0IGludF9hc192YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50IHRoZW4gU29tZSAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X2FzX3ZhbHVlX2V4biAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50XG4gIHRoZW4gKE9iai5tYWdpYyAoaW50IDogaW50KSA6IGEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkltbWVkaWF0ZS5pbnRfYXNfdmFsdWVfZXhuOiB0eXBlbmFtZTolUyBpbnQ6JWRcIiAoVC50eXBlbmFtZSB0KSBpbnQpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50X2V4biAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIGlmIE9iai5pc19pbnQgKE9iai5yZXByIGEpXG4gIHRoZW4gKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KVxuICBlbHNlIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLnZhbHVlX2FzX2ludF9leG46IHR5cGVuYW1lOiVTXCIgKFQudHlwZW5hbWUgdCkpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSkgdGhlbiBTb21lIChPYmoubWFnaWMgKGEgOiBhKSA6IGludCkgZWxzZSBOb25lXG47O1xuXG5sZXQgdmFsdWVfaXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcblxubW9kdWxlIEFsd2F5cyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBBbHdheXNcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBBbHdheXMgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgTmV2ZXIgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG4gIGxldCBpbnRfYXNfdmFsdWUgPSBpbnRfYXNfdmFsdWVcbiAgbGV0IGludF9hc192YWx1ZV9leG4gPSBpbnRfYXNfdmFsdWVfZXhuXG4gIGxldCBpbnRfaXNfdmFsdWUgPSBpbnRfaXNfdmFsdWVcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgXyBhID0gYSB8PiAoT2JqLm1hZ2ljIDogYSAtPiBpbnQpXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbmVuZFxuXG5tb2R1bGUgU29tZXRpbWVzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IFNvbWV0aW1lc1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IFNvbWV0aW1lcyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBOZXZlciAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXQgdmFsdWVfYXNfaW50ID0gdmFsdWVfYXNfaW50XG4gIGxldCB2YWx1ZV9hc19pbnRfZXhuID0gdmFsdWVfYXNfaW50X2V4blxuICBsZXQgdmFsdWVfaXNfaW50ID0gdmFsdWVfaXNfaW50XG4gIGxldCBvcHRpb24gPSBvcHRpb25cbiAgbGV0IGxpc3QgPSBsaXN0XG5lbmRcblxubW9kdWxlIE5ldmVyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IE5ldmVyXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgTmV2ZXIgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgU29tZXRpbWVzIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5lbmRcblxudHlwZSAnYSBkZXN0ID1cbiAgfCBBbHdheXMgb2YgJ2EgQWx3YXlzLnRcbiAgfCBTb21ldGltZXMgb2YgJ2EgU29tZXRpbWVzLnRcbiAgfCBOZXZlciBvZiAnYSBOZXZlci50XG4gIHwgVW5rbm93blxuXG5sZXQgZGVzdCB0ID1cbiAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICB8IEFsd2F5cyAtPiBBbHdheXMgdFxuICB8IFNvbWV0aW1lcyAtPiBTb21ldGltZXMgdFxuICB8IE5ldmVyIC0+IE5ldmVyIHRcbiAgfCBVbmtub3duIC0+IFVua25vd25cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVDEgOiBUKSAoVDIgOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUMS50ICogVDIudFxuZW5kXG5cbm1vZHVsZSBUMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgPSBhLCBiXG5cbiAgbGV0IGN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biBhIGIgLT4gZiAoYSwgYilcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIpIC0+IGYgYSBiXG4gIDs7XG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhKSB0IC0+ICdhID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhKSB0IC0+ICdhID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICBsZXQgbWFwICh4LCB5KSB+ZiA9IGYgeCwgZiB5XG4gIGxldCBtYXBfZnN0ICh4LCB5KSB+ZiA9IGYgeCwgeVxuICBsZXQgbWFwX3NuZCAoeCwgeSkgfmYgPSB4LCBmIHlcbiAgbGV0IG1hcDIgKHgxLCB5MSkgKHgyLCB5MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyXG5cbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgKHgsIHkpICh4JywgeScpID1cbiAgICBtYXRjaCBjbXAxIHggeCcgd2l0aFxuICAgIHwgMCAtPiBjbXAyIHkgeSdcbiAgICB8IGkgLT4gaVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgKHgsIHkpICh4JywgeScpID0gZXExIHggeCcgJiYgZXEyIHkgeSdcbiAgbGV0IHN3YXAgKGEsIGIpID0gYiwgYVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tcGFyZSBjbXAxIGNtcDIgPSBjb21wYXJlIH5jbXAxIH5jbXAyXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBUMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgYyA9IGEsIGIsIGNcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiBjIC0+IGYgKGEsIGIsIGMpXG4gIDs7XG5cbiAgbGV0IHVuY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIChhLCBiLCBjKSAtPiBmIGEgYiBjXG4gIDs7XG5cbiAgbGV0IG1hcCAoeCwgeSwgeikgfmYgPSBmIHgsIGYgeSwgZiB6XG4gIGxldCBtYXBfZnN0ICh4LCB5LCB6KSB+ZiA9IGYgeCwgeSwgelxuICBsZXQgbWFwX3NuZCAoeCwgeSwgeikgfmYgPSB4LCBmIHksIHpcbiAgbGV0IG1hcF90cmQgKHgsIHksIHopIH5mID0geCwgeSwgZiB6XG4gIGxldCBtYXAyICh4MSwgeTEsIHoxKSAoeDIsIHkyLCB6MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyLCBmIHoxIHoyXG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhLCBfKSB0IC0+ICdhID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhLCBfKSB0IC0+ICdhID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICAoKiBUaGVyZSdzIG5vICVmaWVsZDIuLi4uKilcbiAgbGV0IGdldDMgKF8sIF8sIGEpID0gYVxuXG4gICgqIGxleGljb2dyYXBoaWMgY29tcGFyaXNvbiAgKilcbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgfmNtcDMgKHgsIHksIHopICh4JywgeScsIHonKSA9XG4gICAgbGV0IGMxID0gY21wMSB4IHgnIGluXG4gICAgaWYgYzEgPD4gMFxuICAgIHRoZW4gYzFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMiA9IGNtcDIgeSB5JyBpblxuICAgICAgaWYgYzIgPD4gMCB0aGVuIGMyIGVsc2UgY21wMyB6IHonKVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgfmVxMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID0gZXExIHggeCcgJiYgZXEyIHkgeScgJiYgZXEzIHogeidcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZV9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hlcl9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgKFMxIDogU2V4cGFibGUuUykgKFMyIDogU2V4cGFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUzEudCAqIFMyLnQgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgQmluYWJsZSAoQjEgOiBCaW5hYmxlLlMpIChCMiA6IEJpbmFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQjEudCAqIEIyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhdG9yIChTMSA6IENvbXBhcmF0b3IuUykgKFMyIDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKFMxKSAoUzIpXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPVxuICAgIChTMS5jb21wYXJhdG9yX3dpdG5lc3MsIFMyLmNvbXBhcmF0b3Jfd2l0bmVzcykgVDIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBUMi5jb21wYXJhdG9yIFMxLmNvbXBhcmF0b3IgUzIuY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlX3BsYWluIChTMSA6IENvbXBhcmFibGUuU19wbGFpbikgKFMyIDogQ29tcGFyYWJsZS5TX3BsYWluKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvciAoUzEpIChTMilcblxuICAgIGxldCBzZXhwX29mX3QgPSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgQ29tcGFyYWJsZSAoUzEgOiBDb21wYXJhYmxlX3NleHBhYmxlKSAoUzIgOiBDb21wYXJhYmxlX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGFibGUgKFMxKSAoUzIpXG5cbiAgICBsZXQgY29tcGFyZSAoczEsIHMyKSAoczEnLCBzMicpID1cbiAgICAgIG1hdGNoIFMxLmNvbXBhcmUgczEgczEnIHdpdGhcbiAgICAgIHwgMCAtPiBTMi5jb21wYXJlIHMyIHMyJ1xuICAgICAgfCB4IC0+IHhcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlciAoSDEgOiBIYXNoZXJfc2V4cGFibGUpIChIMiA6IEhhc2hlcl9zZXhwYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBIMS50ICogSDIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMgOiBIYXNoYWJsZV9zZXhwYWJsZSkgOlxuICBIYXNoZXJfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG5lbmRcblxubW9kdWxlIEhhc2hhYmxlX3QgKFMxIDogSGFzaGFibGVfc2V4cGFibGUpIChTMiA6IEhhc2hhYmxlX3NleHBhYmxlKSA9XG4gIEhhc2hlclxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGVcbiAgICAgICAoUzEpKVxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMyKSlcblxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVfdFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgU3VuXG4gICAgICAgIHwgTW9uXG4gICAgICAgIHwgVHVlXG4gICAgICAgIHwgV2VkXG4gICAgICAgIHwgVGh1XG4gICAgICAgIHwgRnJpXG4gICAgICAgIHwgU2F0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2tdXG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlNVTlwiXG4gICAgICAgIHwgTW9uIC0+IFwiTU9OXCJcbiAgICAgICAgfCBUdWUgLT4gXCJUVUVcIlxuICAgICAgICB8IFdlZCAtPiBcIldFRFwiXG4gICAgICAgIHwgVGh1IC0+IFwiVEhVXCJcbiAgICAgICAgfCBGcmkgLT4gXCJGUklcIlxuICAgICAgICB8IFNhdCAtPiBcIlNBVFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nX2xvbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlN1bmRheVwiXG4gICAgICAgIHwgTW9uIC0+IFwiTW9uZGF5XCJcbiAgICAgICAgfCBUdWUgLT4gXCJUdWVzZGF5XCJcbiAgICAgICAgfCBXZWQgLT4gXCJXZWRuZXNkYXlcIlxuICAgICAgICB8IFRodSAtPiBcIlRodXJzZGF5XCJcbiAgICAgICAgfCBGcmkgLT4gXCJGcmlkYXlcIlxuICAgICAgICB8IFNhdCAtPiBcIlNhdHVyZGF5XCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfaW50ZXJuYWwgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy51cHBlcmNhc2UgcyB3aXRoXG4gICAgICAgIHwgXCJTVU5cIiB8IFwiU1VOREFZXCIgLT4gU3VuXG4gICAgICAgIHwgXCJNT05cIiB8IFwiTU9OREFZXCIgLT4gTW9uXG4gICAgICAgIHwgXCJUVUVcIiB8IFwiVFVFU0RBWVwiIC0+IFR1ZVxuICAgICAgICB8IFwiV0VEXCIgfCBcIldFRE5FU0RBWVwiIC0+IFdlZFxuICAgICAgICB8IFwiVEhVXCIgfCBcIlRIVVJTREFZXCIgLT4gVGh1XG4gICAgICAgIHwgXCJGUklcIiB8IFwiRlJJREFZXCIgLT4gRnJpXG4gICAgICAgIHwgXCJTQVRcIiB8IFwiU0FUVVJEQVlcIiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfaW50X2V4biBpID1cbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgIHwgMCAtPiBTdW5cbiAgICAgICAgfCAxIC0+IE1vblxuICAgICAgICB8IDIgLT4gVHVlXG4gICAgICAgIHwgMyAtPiBXZWRcbiAgICAgICAgfCA0IC0+IFRodVxuICAgICAgICB8IDUgLT4gRnJpXG4gICAgICAgIHwgNiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX2ludF9leG46ICVkXCIgaSAoKVxuICAgICAgOztcblxuICAgICAgKCogQmUgdmVyeSBnZW5lcm91cyB3aXRoIG9mX3N0cmluZy4gIFdlIGFjY2VwdCBhbGwgcG9zc2libGUgY2FwaXRhbGl6YXRpb25zIGFuZCB0aGVcbiAgICAgICAgIGludGVnZXIgcmVwcmVzZW50YXRpb25zIGFzIHdlbGwuICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nX2ludGVybmFsIHMgd2l0aFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAodHJ5IG9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgcykgd2l0aFxuICAgICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKCkpXG4gICAgICA7O1xuXG4gICAgICAoKiB0aGlzIGlzIGluIFQgcmF0aGVyIHRoYW4gb3V0c2lkZSBzbyB0aGF0IHRoZSBsYXRlciBmdW5jdG9yIGFwcGxpY2F0aW9uIHRvIGJ1aWxkIG1hcHNcbiAgICAgICAgIHVzZXMgdGhpcyBzZXhwIHJlcHJlc2VudGF0aW9uICopXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBtb2R1bGUgVW5zdGFibGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSAoQ29tcGFyYWJsZS5NYWtlX2JpbmFibGUgKFQpIDogQ29tcGFyYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbiAgICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChVbnN0YWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5NYWtlIChVbnN0YWJsZSlcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuVW5zdGFibGVcblxubGV0IHdlZWtkYXlzID0gWyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaSBdXG5sZXQgd2Vla2VuZHMgPSBbIFNhdDsgU3VuIF1cblxuKCogd3JpdHRlbiBvdXQgdG8gc2F2ZSBvdmVyaGVhZCB3aGVuIGxvYWRpbmcgbW9kdWxlcy4gIFRoZSBtZW1iZXJzIG9mIHRoZSBzZXQgYW5kIHRoZVxuICAgb3JkZXJpbmcgc2hvdWxkIG5ldmVyIGNoYW5nZSwgc28gc3BlZWQgd2lucyBvdmVyIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggdGhhdCBwcm92ZXNcbiAgIHRoZSBvcmRlciA9IHRoZSBvcmRlciBpbiB0IGF0IHJ1bnRpbWUgKilcbmxldCBhbGwgPSBbIFN1bjsgTW9uOyBUdWU7IFdlZDsgVGh1OyBGcmk7IFNhdCBdXG5cbmxldCBvZl9pbnQgaSA9XG4gIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0b19pbnQgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN1biAtPiAwXG4gIHwgTW9uIC0+IDFcbiAgfCBUdWUgLT4gMlxuICB8IFdlZCAtPiAzXG4gIHwgVGh1IC0+IDRcbiAgfCBGcmkgLT4gNVxuICB8IFNhdCAtPiA2XG47O1xuXG5sZXQgaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE1vbiAtPiAxXG4gIHwgVHVlIC0+IDJcbiAgfCBXZWQgLT4gM1xuICB8IFRodSAtPiA0XG4gIHwgRnJpIC0+IDVcbiAgfCBTYXQgLT4gNlxuICB8IFN1biAtPiA3XG47O1xuXG5sZXQgbnVtX2RheXNfaW5fd2VlayA9IDdcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuIChJbnQuKCAlICkgKHRvX2ludCB0ICsgaSkgbnVtX2RheXNfaW5fd2VlaylcblxubGV0IG51bV9kYXlzIH5mcm9tIH50b18gPVxuICBsZXQgZCA9IHRvX2ludCB0b18gLSB0b19pbnQgZnJvbSBpblxuICBpZiBJbnQuKGQgPCAwKSB0aGVuIGQgKyBudW1fZGF5c19pbl93ZWVrIGVsc2UgZFxuOztcblxubGV0IGlzX3N1bl9vcl9zYXQgdCA9IHQgPSBTdW4gfHwgdCA9IFNhdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBSb3VuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgfCBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkRpZ2l0X3N0cmluZ19oZWxwZXJzXCJcbmxldCBpbnQ2M190d28gPSBJbnQ2My5vZl9pbnQgMlxubGV0IGludDYzX3RlbiA9IEludDYzLm9mX2ludCAxMFxubGV0IGludDYzX3R3ZW50eSA9IEludDYzLm9mX2ludCAyMFxubGV0IGludDYzX2JpbGxpb24gPSBJbnQ2My5vZl9pbnQgMV8wMDBfMDAwXzAwMFxubGV0IG1heF9iaWxsaW9ucyA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M19iaWxsaW9uXG5cbmxldCByZWMgZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIG4gPVxuICBpZiBJbnQ2My4oIDwgKSBuIGludDYzX3RlblxuICB0aGVuIDFcbiAgZWxzZSBJbnQuc3VjYyAoZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIChJbnQ2My4oIC8gKSBuIGludDYzX3RlbikpXG47O1xuXG5sZXQgZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSA9IGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBJbnQ2My5tYXhfdmFsdWVcblxubGV0IHJlYyBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzID1cbiAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgfCAxIC0+IEludDYzLm9mX2ludCA5XG4gIHwgMiAtPiBJbnQ2My5vZl9pbnQgOTlcbiAgfCAzIC0+IEludDYzLm9mX2ludCA5OTlcbiAgfCA0IC0+IEludDYzLm9mX2ludCA5Xzk5OVxuICB8IDUgLT4gSW50NjMub2ZfaW50IDk5Xzk5OVxuICB8IDYgLT4gSW50NjMub2ZfaW50IDk5OV85OTlcbiAgfCA3IC0+IEludDYzLm9mX2ludCA5Xzk5OV85OTlcbiAgfCA4IC0+IEludDYzLm9mX2ludCA5OV85OTlfOTk5XG4gIHwgOSAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OV85OTlcbiAgfCBfIC0+XG4gICAgaWYgZGlnaXRzID49IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWVcbiAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbGxpb25zID0gSW50NjMuc3VjYyAobWF4X2ludDYzX3dpdGggfmRpZ2l0czooZGlnaXRzIC0gOSkpIGluXG4gICAgICBJbnQ2My5wcmVkIChJbnQ2My4oICogKSBpbnQ2M19iaWxsaW9uIGJpbGxpb25zKSlcbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHVuc2FmZV9jaGFyX29mX2RpZ2l0IG4gPSBDaGFyLnVuc2FmZV9vZl9pbnQgKENoYXIudG9faW50ICcwJyArIG4pXG4gIGxldCBkaWdpdF9vZl9jaGFyIGNoYXIgPSBDaGFyLmdldF9kaWdpdF9leG4gY2hhclxuXG4gIGxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgQnl0ZXMudW5zYWZlX3NldCBieXRlcyBwb3MgKHVuc2FmZV9jaGFyX29mX2RpZ2l0IGludClcbiAgOztcblxuICBsZXQgcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gaW50IC8gMTAgaW5cbiAgICBsZXQgb25lcyA9IGludCAtICh0ZW5zICogMTApIGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBvbmVzO1xuICAgIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMSkgaW50IGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDIpIGludCBpblxuICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAzKSBpbnQgaW5cbiAgICB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNCkgaW50IGluXG4gICAgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDUpIGludCBpblxuICAgIHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA2KSBpbnQgaW5cbiAgICB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNykgaW50IGluXG4gICAgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDgpIGludCBpblxuICAgIHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zIGludDYzID1cbiAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBpbnQ2MyBpbnQ2M19iaWxsaW9uIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDYzLiggLSApIGludDYzIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSBpblxuICAgIHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gcmVtYWluZGVyKTtcbiAgICBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWMgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMiAtPiB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMyAtPiB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNCAtPiB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNSAtPiB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNiAtPiB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNyAtPiB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOCAtPiB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOSAtPiB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9XG4gICAgICAgIHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykgaW50NjNcbiAgICAgIGluXG4gICAgICB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPSBkaWdpdF9vZl9jaGFyIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgcG9zKVxuXG4gIGxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDEpXG4gIDs7XG5cbiAgbGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMilcbiAgOztcblxuICBsZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAzKVxuICA7O1xuXG4gIGxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDQpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNSlcbiAgOztcblxuICBsZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA2KVxuICA7O1xuXG4gIGxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDcpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgOClcbiAgOztcblxuICBsZXQgcmFpc2VfaW50NjNfb3ZlcmZsb3cgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IG92ZXJmbG93IHJlYWRpbmcgaW50NjNcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgbGV0IHJlYyByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IEludDYzLm9mX2ludCAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDIgLT4gSW50NjMub2ZfaW50IChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA0IC0+IEludDYzLm9mX2ludCAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDUgLT4gSW50NjMub2ZfaW50IChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA3IC0+IEludDYzLm9mX2ludCAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDggLT4gSW50NjMub2ZfaW50IChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID0gcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9XG4gICAgICAgIEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQ2My4oID4gKSBiaWxsaW9ucyBtYXhfYmlsbGlvbnMgdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIGxldCBzdW0gPSBJbnQ2My4oICsgKSAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgcmVtYWluZGVyIGluXG4gICAgICBpZiBJbnQ2My4oIDwgKSBzdW0gSW50NjMuemVybyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgc3VtXG4gIDs7XG5cbiAgbGV0IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAobnVtZXJhdG9yICsgZGVub21pbmF0b3IgLSBJbnQ2My5vbmUpIC8lIGRlbm9taW5hdG9yXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogaW52YWxpZCBkZWNpbWFsIGNoYXJhY3RlclwiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICAoKiBSZWFkcyB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgYmV0d2VlbiBbcG9zXSBhbmQgW3BvcytkZWNpbWFscy0xXSwgaW5jbHVzaXZlLCBhbmRcbiAgICAgaW50ZXJwZXJldHMgaXQgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIHBhcnQgb2YgYSBudW1iZXIsIHdoaWNoIHdlIGNhbGwgW3hdLlxuXG4gICAgIExldCBbaV0gYW5kIFtyXSBiZSB0aGUgaW50ZWdlciBwYXJ0IGFuZCByZW1haW5pbmcgZnJhY3Rpb25hbCBwYXJ0IG9mXG4gICAgIFt4ICogc2NhbGUgLyBkaXZpc29yXS5cblxuICAgICBJZiBbciA8IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXS5cbiAgICAgSWYgW3IgPSByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0gb3IgW2krMV0gYmFzZWQgb24gW3JvdW5kX2V4YWN0XS5cbiAgICAgSWYgW3IgPiByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaSsxXS5cblxuICAgICBBc3N1bWVzIHdpdGhvdXQgY2hlY2tpbmcgdGhhdCBbc2NhbGVdIGFuZCBbZGl2aXNvcl0gYXJlIGJvdGggcG9zaXRpdmUgYW5kXG4gICAgIGxlc3MgdGhhbiBbSW50NjMubWF4X3ZhbHVlIC8gMTBdICh0byBhdm9pZCBpbnRlcm5hbCBvdmVyZmxvdyBkdXJpbmcgdGhlIGFsZ29yaXRobVxuICAgICB3aGVuIG11bHRpcGx5aW5nIGJ5IDEwKSwgYW5kIHRoYXQgW3JvdW5kX2F0ID49IDBdIGFuZCBbcm91bmRfYXQgPCBkaXZpc29yXS4gKilcbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cG9zOnN0YXJ0XG4gICAgICAgIH5kZWNpbWFsc1xuICAgICAgICB+c2NhbGVcbiAgICAgICAgfmRpdmlzb3JcbiAgICAgICAgfnJvdW5kX2F0XG4gICAgICAgIH5yb3VuZF9leGFjdFxuICAgICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICAgID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IHVudGlsID0gSW50LiggKyApIHN0YXJ0IGRlY2ltYWxzIGluXG4gICAgKCogVGhlIGxvb3AgaW52YXJpYW50IGlzIHRoYXQgZWFjaCBpdGVyYXRpb24sIHdlIHN0cmlwIG9mZiB0aGUgbmV4dCBkZWNpbWFsIGRpZ2l0IGFuZFxuICAgICAgIHVwZGF0ZSBbc3VtXSwgW3JvdW5kX2F0XSwgYW5kIFtkaXZpc29yXSBzdWNoIHRoYXQgdGhlIGRlc2lyZWQgcmVzdWx0IGlzOlxuXG4gICAgICAgWyBzdW0gKyByb3VuZChyZW1haW5pbmdfZGlnaXRzX29mX3hfcGFyc2VkX2FzX2RlY2ltYWwgKiBzY2FsZSAvIGRpdmlzb3IpIF1cbiAgICAgICB3aGVyZSBcInJvdW5kXCIgcm91bmRzIGJhc2VkIG9uIHRoZSBuZXcgdmFsdWUgb2YgW3JvdW5kX2F0XS5cbiAgICAqKVxuICAgIGxldCBkaXZpc29yID0gcmVmIGRpdmlzb3IgaW5cbiAgICBsZXQgcm91bmRfYXQgPSByZWYgcm91bmRfYXQgaW5cbiAgICBsZXQgc3VtID0gcmVmIEludDYzLnplcm8gaW5cbiAgICBsZXQgcG9zID0gcmVmIHN0YXJ0IGluXG4gICAgKCogU3RvcCBpZiB3ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIG9yIGlmIGZ1cnRoZXIgZGlnaXRzIGNhbm5vdCBpbmNyZWFzZSBvdXIgc3VtLiAqKVxuICAgIHdoaWxlIEludC4oIDw+ICkgIXBvcyB1bnRpbCAmJiAhcm91bmRfYXQgPCBzY2FsZSBkb1xuICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICB8ICcwJyAuLiAnOScgYXMgY2hhciAtPlxuICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChkaWdpdF9vZl9jaGFyIGNoYXIpIGluXG4gICAgICAgICAoKiBFdmVyeSBuZXcgZGVjaW1hbCBwbGFjZSBpbXBsaWNpdGx5IHNjYWxlcyBvdXIgbnVtZXJhdG9yIGJ5IGEgZmFjdG9yIG9mIHRlbixcbiAgICAgICAgICAgIHNvIG11c3QgYWxzbyBlZmZlY3RpdmVseSBzY2FsZSBvdXIgZGVub21pbmF0b3IuXG5cbiAgICAgICAgICAgIDAuYWJjZGVmICogc2NhbGUvZGl2aXNvciAgICAgICAgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvKGRpdmlzb3IqMTApICBbcm91bmQgYXQgcm91bmRfYXQqMTBdXG5cbiAgICAgICAgICAgIFRoZW4gcmVkZWZpbmUgZGl2aXNvciA6PSBkaXZpc29yKjEwIGFuZCByb3VuZF9hdCA6PSByb3VuZF9hdCoxMCwgc28gd2UgaGF2ZTpcbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF0gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gIWRpdmlzb3IgKiBpbnQ2M190ZW47XG4gICAgICAgICByb3VuZF9hdCA6PSAhcm91bmRfYXQgKiBpbnQ2M190ZW47XG4gICAgICAgICAoKiBOZXh0IHdlIHdvcmsgb3V0IHRoZSBwYXJ0IG9mIHRoZSBzdW0gYmFzZWQgb24gb3VyIGN1cnJlbnQgZGlnaXQ6XG5cbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgLSByb3VuZF9hdCAvIGRpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSAoYSpzY2FsZS1yb3VuZF9hdCkgLyBkaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuXG4gICAgICAgICAgICBEZWNvbXBvc2UgdGhlIGZpcnN0IHRlcm0gaW50byBpbnRlZ2VyIGFuZCByZW1haW5kZXIgcGFydHMuXG4gICAgICAgICAgICBTaW5jZSB3ZSBoYXZlIGFscmVhZHkgc3VidHJhY3RlZCBbcm91bmRfYXRdLCB3ZSBkZWNvbXBvc2UgYmFzZWRcbiAgICAgICAgICAgIG9uIHRoZSBjZWlsaW5nIHJhdGhlciB0aGFuIHRoZSBmbG9vciBvZiB0aGUgZGl2aXNpb24sXG4gICAgICAgICAgICBlLmcuIDUvMyB3b3VsZCBkZWNvbXBvc2UgYXMgMiArICgtMSkvMywgcmF0aGVyIHRoYW4gMSArICgyLzMpLlxuXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIHJlbWFpbmRlci9kaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdXG4gICAgICAgICAqKVxuICAgICAgICAgbGV0IG51bWVyYXRvciA9IChkaWdpdCAqIHNjYWxlKSAtICFyb3VuZF9hdCBpblxuICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gIWRpdmlzb3IgaW5cbiAgICAgICAgIGxldCBpbmNyZW1lbnQgPSBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICBsZXQgcmVtYWluZGVyID0gbnVtZXJhdG9yIC0gKGluY3JlbWVudCAqIGRlbm9taW5hdG9yKSBpblxuICAgICAgICAgKCogTm93IGp1c3QgYWNjdW11bGF0ZSB0aGUgbmV3IGluY3JlbWVudCBhbmQgaXRlcmF0ZSBvbiB0aGUgcmVtYWluaW5nIHBhcnQ6XG4gICAgICAgICAgICAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdLlxuXG4gICAgICAgICAgICBTaW5jZSBbcmVtYWluZGVyXSBpcyBiZXR3ZWVuIFstKGRpdmlzb3ItMSldIGFuZCBbMF0gaW5jbHVzaXZlLCB0aGUgbmV3XG4gICAgICAgICAgICBbcm91bmRfYXRdIHdpbGwgYmUgd2l0aGluIFswXSBhbmQgW2Rpdmlzb3ItMV0gaW5jbHVzaXZlLiAqKVxuICAgICAgICAgcm91bmRfYXQgOj0gLXJlbWFpbmRlcjtcbiAgICAgICAgIHN1bSA6PSAhc3VtICsgaW5jcmVtZW50O1xuICAgICAgICAgKCogVGhpcyBsaW5lIHByZXZlbnRzIHRoZSBkaXZpc29yIGZyb20gZ3Jvd2luZyB3aXRob3V0IGJvdW5kIGFuZCBvdmVyZmxvd2luZy4gSWZcbiAgICAgICAgICAgIHRoaXMgbGluZSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBkaXZpc29yLCB0aGVuIHRoZSBkaXZpc29yIGlzIGxhcmdlciB0aGFuIHRoZVxuICAgICAgICAgICAgc2NhbGUsIHNvIHRoZSBzdW0gd2lsbCBpbmNyZWFzZSBpZiBhbmQgb25seSBpZiBbcGFyc2VkX3JlbWFpbmluZ19kaWdpdHMgKlxuICAgICAgICAgICAgc2NhbGUgKD4gb3IgPj0pIHJvdW5kX2F0XSwgd2hpY2ggZG9lc24ndCBkZXBlbmQgb24gaG93IG11Y2ggbGFyZ2VyIHRoZVxuICAgICAgICAgICAgZGl2aXNvciBpcy4gU28gdGhpcyBjaGFuZ2UgaXMgc2FmZS4gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gSW50NjMubWluIGRlbm9taW5hdG9yIHNjYWxlXG4gICAgICAgfCAnXycgd2hlbiBhbGxvd191bmRlcnNjb3JlIC0+ICgpXG4gICAgICAgfCBfIC0+IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiKTtcbiAgICAgIHBvcyA6PSBJbnQuc3VjYyAhcG9zXG4gICAgZG9uZTtcbiAgICBpZiAhcm91bmRfYXQgPSB6ZXJvXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByb3VuZF9leGFjdCB3aXRoXG4gICAgICB8IFJvdW5kLlRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eSAtPiAoKVxuICAgICAgfCBSb3VuZC5Ub3dhcmRfcG9zaXRpdmVfaW5maW5pdHkgLT4gc3VtIDo9ICFzdW0gKyBJbnQ2My5vbmUpO1xuICAgICFzdW1cbiAgOztcblxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICAgIHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICBzdHJpbmdcbiAgICAgIH5wb3NcbiAgICAgIH5kZWNpbWFsc1xuICAgICAgfnNjYWxlOihJbnQ2My4oICogKSBzY2FsZSBpbnQ2M190d28pXG4gICAgICB+ZGl2aXNvcjppbnQ2M190d29cbiAgICAgIH5yb3VuZF9hdDpJbnQ2My5vbmVcbiAgICAgIH5yb3VuZF9leGFjdDpyb3VuZF90aWVzXG4gICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICA7O1xuZW5kXG5cbmxldCBtaW5fc2NhbGUgPSBJbnQ2My5vbmVcbmxldCBtYXhfc2NhbGUgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfdHdlbnR5XG5cbmxldCByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkZWNpbWFscz0lZCBpcyBuZWdhdGl2ZVwiIG1vZHVsZV9uYW1lIG5hbWUgZGVjaW1hbHMgKClcbjs7XG5cbmxldCByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkaWdpdHM9JWQgaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyXCIgbW9kdWxlX25hbWUgbmFtZSBkaWdpdHMgKClcbjs7XG5cbmxldCByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlID1cbiAgaW52YWxpZF9hcmdmXG4gICAgXCIlcy4lczogc2NhbGU9JUxkIG91dCBvZiByYW5nZSBbJUxkLCAlTGRdXCJcbiAgICBtb2R1bGVfbmFtZVxuICAgIG5hbWVcbiAgICAoSW50NjMudG9faW50NjQgc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1pbl9zY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWF4X3NjYWxlKVxuICAgICgpXG47O1xuXG5sZXQgcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiBwb3M9JWQgb3V0IG9mIHJhbmdlIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogJWQgZGlnaXRzIGRvIG5vdCBmaXQgYXQgcG9zICVkIGluIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIGRpZ2l0c1xuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG47O1xuXG5sZXQgcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludCA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50IG1heCAoKVxuOztcblxubGV0IHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzID1cbiAgaW52YWxpZF9hcmdmICFcIiVzLiVzOiAle0ludDYzfSBvdXQgb2YgcmFuZ2UgWzAsICV7SW50NjN9XVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50NjMgbWF4ICgpXG47O1xuXG5sZXQgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpZiBkZWNpbWFscyA8IDAgdGhlbiByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFsc1xuOztcblxubGV0IGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPSBpZiBkaWdpdHMgPCAxIHRoZW4gcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHNcblxubGV0IGNoZWNrX3BvcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgKyBkaWdpdHMgPiBsZW4gdGhlbiByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgY2hlY2tfaW50IG5hbWUgfm1heCBpbnQgPVxuICBpZiBpbnQgPCAwIHx8IGludCA+IG1heCB0aGVuIHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjMgPVxuICBpZiBJbnQ2My4oIDwgKSBpbnQ2MyBJbnQ2My56ZXJvIHx8IEludDYzLiggPiApIGludDYzIG1heFxuICB0aGVuIHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGUgPVxuICBpZiBJbnQ2My4oIDwgKSBzY2FsZSBtaW5fc2NhbGUgfHwgSW50NjMuKCA+ICkgc2NhbGUgbWF4X3NjYWxlXG4gIHRoZW4gcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZVxuOztcblxubGV0IGNoZWNrX3dyaXRlIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyB+bWF4IGludCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludCBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfd3JpdGU2MyBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbWF4ID0gbWF4X2ludDYzX3dpdGggfmRpZ2l0cyBpblxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjEgfm1heDo5IGludDtcbiAgVW5zYWZlLndyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzJfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoyIH5tYXg6OTkgaW50O1xuICBVbnNhZmUud3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfM19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjMgfm1heDo5OTkgaW50O1xuICBVbnNhZmUud3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjQgfm1heDo5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV81X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NSB+bWF4Ojk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV82X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NiB+bWF4Ojk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfN19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjcgfm1heDo5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjggfm1heDo5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzlfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo5IH5tYXg6OTk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja193cml0ZTYzIFwid3JpdGVfaW50NjNcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzO1xuICBVbnNhZmUud3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzXG47O1xuXG5sZXQgY2hlY2tfcmVhZCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjNfZGVjaW1hbCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzO1xuICBjaGVja19zY2FsZSBuYW1lIH5zY2FsZTtcbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0czpkZWNpbWFscyB+bGVuIH5wb3Ncbjs7XG5cbmxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoxO1xuICBVbnNhZmUucmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8yX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjI7XG4gIFVuc2FmZS5yZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzNfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MztcbiAgVW5zYWZlLnJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo0O1xuICBVbnNhZmUucmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF81X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjU7XG4gIFVuc2FmZS5yZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzZfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NjtcbiAgVW5zYWZlLnJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfN19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo3O1xuICBVbnNhZmUucmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF84X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjg7XG4gIFVuc2FmZS5yZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzlfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6OTtcbiAgVW5zYWZlLnJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19yZWFkNjMgXCJyZWFkX2ludDYzXCIgfnN0cmluZyB+cG9zIH5kaWdpdHM7XG4gIFVuc2FmZS5yZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gIGNoZWNrX3JlYWQ2M19kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGU7XG4gIFVuc2FmZS5yZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEphblxuICAgICAgfCBGZWJcbiAgICAgIHwgTWFyXG4gICAgICB8IEFwclxuICAgICAgfCBNYXlcbiAgICAgIHwgSnVuXG4gICAgICB8IEp1bFxuICAgICAgfCBBdWdcbiAgICAgIHwgU2VwXG4gICAgICB8IE9jdFxuICAgICAgfCBOb3ZcbiAgICAgIHwgRGVjXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHZhcmlhbnRzXVxuXG4gICAgbGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuICAgIGxldCBvZl9pbnRfZXhuIGkgOiB0ID1cbiAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgfCAxIC0+IEphblxuICAgICAgfCAyIC0+IEZlYlxuICAgICAgfCAzIC0+IE1hclxuICAgICAgfCA0IC0+IEFwclxuICAgICAgfCA1IC0+IE1heVxuICAgICAgfCA2IC0+IEp1blxuICAgICAgfCA3IC0+IEp1bFxuICAgICAgfCA4IC0+IEF1Z1xuICAgICAgfCA5IC0+IFNlcFxuICAgICAgfCAxMCAtPiBPY3RcbiAgICAgIHwgMTEgLT4gTm92XG4gICAgICB8IDEyIC0+IERlY1xuICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIk1vbnRoLm9mX2ludF9leG4gJWRcIiBpICgpXG4gICAgOztcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgdG9faW50ICh0IDogdCkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEphbiAtPiAxXG4gICAgICB8IEZlYiAtPiAyXG4gICAgICB8IE1hciAtPiAzXG4gICAgICB8IEFwciAtPiA0XG4gICAgICB8IE1heSAtPiA1XG4gICAgICB8IEp1biAtPiA2XG4gICAgICB8IEp1bCAtPiA3XG4gICAgICB8IEF1ZyAtPiA4XG4gICAgICB8IFNlcCAtPiA5XG4gICAgICB8IE9jdCAtPiAxMFxuICAgICAgfCBOb3YgLT4gMTFcbiAgICAgIHwgRGVjIC0+IDEyXG4gICAgOztcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdG9faW50IHQgLSAxXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgaSA9IG9mX2ludF9leG4gKGkgKyAxKVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICBlbmRcbmVuZFxuXG5sZXQgbnVtX21vbnRocyA9IDEyXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbGV0IGFsbCA9IFsgSmFuOyBGZWI7IE1hcjsgQXByOyBNYXk7IEp1bjsgSnVsOyBBdWc7IFNlcDsgT2N0OyBOb3Y7IERlYyBdXG4gIGxldCBoYXNoID0gdG9faW50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICBlbmQpIDpcbiAgICBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG1vbnRocyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGludHMuICBGcm9tIDEwOC4wN1xuICAgICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXNcbiAgICAgICBjaGFuZ2VkIGZyb20gcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlXG4gICAgICAgbW9zdCBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgICAgcmF3LiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBJbnQudF9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgIHwgU29tZSBpIC0+IG9mX2ludF9leG4gKGkgKyAxKVxuICAgICAgfCBOb25lIC0+IFQudF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbigqIFJlcGxhY2UgdGhlIG92ZXJyaWRlbiBzZXhwIGNvbnZlcnRlcnMgZnJvbSBbQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVdIHdpdGggdGhlIG9yZGluYXJ5XG4gICBzeW1ib2xpYyBjb252ZXJ0ZXJzLiAqKVxubGV0IHNleHBfb2ZfdCA9IFQuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gVC50X29mX3NleHBcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuICgxICsgSW50LiggJSApICh0b19pbnQgdCAtIDEgKyBpKSBudW1fbW9udGhzKVxuXG5sZXQgYWxsX3N0cmluZ3MgPVxuICBsYXp5XG4gICAgKEFycmF5Lm9mX2xpc3QgKExpc3QubWFwIGFsbCB+ZjooZnVuIHZhcmlhbnQgLT4gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB2YXJpYW50KSkpKVxuOztcblxubGV0IHRvX3N0cmluZyAodCA6IHQpID1cbiAgbGV0IGFsbF9zdHJpbmdzID0gTGF6eS5mb3JjZSBhbGxfc3RyaW5ncyBpblxuICBhbGxfc3RyaW5ncy4odG9faW50IHQgLSAxKVxuOztcblxubGV0IG9mX3N0cmluZyA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCBtb2R1bGUgVCA9IFN0cmluZy5UYWJsZSBpblxuICAgICAgIGxldCB0YWJsZSA9IFQuY3JlYXRlIH5zaXplOm51bV9tb250aHMgKCkgaW5cbiAgICAgICBBcnJheS5pdGVyaSAoTGF6eS5mb3JjZSBhbGxfc3RyaW5ncykgfmY6KGZ1biBpIHMgLT5cbiAgICAgICAgIGxldCB0ID0gb2ZfaW50X2V4biAoaSArIDEpIGluXG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OnMgfmRhdGE6dDtcbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5sb3dlcmNhc2UgcykgfmRhdGE6dDtcbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy51cHBlcmNhc2UgcykgfmRhdGE6dCk7XG4gICAgICAgdGFibGUpXG4gIGluXG4gIGZ1biBzdHIgLT5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgKExhenkuZm9yY2UgdGFibGUpIHN0ciB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJJbnZhbGlkIG1vbnRoOiAlc1wiIHN0ciAoKVxuOztcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlIG1vbnRoID0gdCA9XG4gICAgfCBKYW5cbiAgICB8IEZlYlxuICAgIHwgTWFyXG4gICAgfCBBcHJcbiAgICB8IE1heVxuICAgIHwgSnVuXG4gICAgfCBKdWxcbiAgICB8IEF1Z1xuICAgIHwgU2VwXG4gICAgfCBPY3RcbiAgICB8IE5vdlxuICAgIHwgRGVjXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IGlzX2xlYXBfeWVhciB+eWVhciA9ICh5ZWFyIG1vZCA0ID0gMCAmJiBub3QgKHllYXIgbW9kIDEwMCA9IDApKSB8fCB5ZWFyIG1vZCA0MDAgPSAwXG5cbigqIENyZWF0ZSBhIGxvY2FsIHByaXZhdGUgZGF0ZSB0eXBlIHRvIGVuc3VyZSB0aGF0IGFsbCBkYXRlcyBhcmUgY3JlYXRlZCB2aWFcbiAgIERhdGUuY3JlYXRlX2V4bi5cbiopXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBXaXRob3V0X2NvbXBhcmFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGJpbl9pbywgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgICAgdmFsIGNyZWF0ZV9leG4gOiB5OmludCAtPiBtOk1vbnRoLlN0YWJsZS5WMS50IC0+IGQ6aW50IC0+IHRcbiAgICAgICAgdmFsIHllYXIgOiB0IC0+IGludFxuICAgICAgICB2YWwgbW9udGggOiB0IC0+IE1vbnRoLlN0YWJsZS5WMS50XG4gICAgICAgIHZhbCBkYXkgOiB0IC0+IGludFxuICAgICAgICB2YWwgZGF5c19pbl9tb250aCA6IHllYXI6aW50IC0+IG1vbnRoOk1vbnRoLnQgLT4gaW50XG4gICAgICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgICAgICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gICAgICAgIHZhbCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkgOiB0XG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgKCogV2UgdXNlZCB0byBzdG9yZSBkYXRlcyBsaWtlIHRoaXM6XG4gICAgICAgICAgIHR5cGUgdCA9IHsgeTogaW50OyBtOiBNb250aC5TdGFibGUuVjEudDsgZDogaW50OyB9XG4gICAgICAgICAgIEluIHRoZSBiZWxvdyB3ZSBtYWtlIHN1cmUgdGhhdCB0aGUgYmluX2lvIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgICAgIGlkZW50aWNhbCAoYW5kIHRoZSBzdGFibGUgdW5pdCB0ZXN0cyBjaGVjayB0aGlzKVxuXG4gICAgICAgICAgIEluIG1lbW9yeSB3ZSB1c2UgdGhlIGZvbGxvd2luZyBtdWNoIG1vcmUgY29tcGFjdCByZXByZXNlbnRhdGlvbjpcbiAgICAgICAgICAgMiBieXRlcyB5ZWFyXG4gICAgICAgICAgIDEgYnl0ZSBtb250aFxuICAgICAgICAgICAxIGJ5dGUgZGF5XG5cbiAgICAgICAgICAgYWxsIHBhY2tlZCBpbnRvIGEgc2luZ2xlIGltbWVkaWF0ZSBpbnQgKHNvIGZyb20gNCB3b3JkcyBkb3duIHRvIDEpLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlIHQgPSBpbnRcbiAgICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgICBlcXVhbCwgaGFzaCwgdHlwZXJlcCwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWVlM2UwLTQ5MGEtMTFlNi1hMTBhLWEzNzM0ZjczMzU2NlwiXVxuXG4gICAgICAgIGxldCBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICAoKiBjcmVhdGVfZXhuJ3MgdmFsaWRhdGlvbiBtYWtlIHN1cmUgdGhhdCBlYWNoIHZhbHVlIGZpdHMgKilcbiAgICAgICAgICAoeWVhciBsc2wgMTYpIGxvciAoTW9udGgudG9faW50IG1vbnRoIGxzbCA4KSBsb3IgZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHllYXIgdCA9IHQgbHNyIDE2XG4gICAgICAgIGxldCBtb250aCB0ID0gTW9udGgub2ZfaW50X2V4biAoKHQgbHNyIDgpIGxhbmQgMHhmZilcbiAgICAgICAgbGV0IGRheSB0ID0gdCBsYW5kIDB4ZmZcblxuICAgICAgICBsZXQgZGF5c19pbl9tb250aCB+eWVhciB+bW9udGggPVxuICAgICAgICAgIG1hdGNoIChtb250aCA6IE1vbnRoLnQpIHdpdGhcbiAgICAgICAgICB8IEphbiB8IE1hciB8IE1heSB8IEp1bCB8IEF1ZyB8IE9jdCB8IERlYyAtPiAzMVxuICAgICAgICAgIHwgQXByIHwgSnVuIHwgU2VwIHwgTm92IC0+IDMwXG4gICAgICAgICAgfCBGZWIgLT4gaWYgaXNfbGVhcF95ZWFyIH55ZWFyIHRoZW4gMjkgZWxzZSAyOFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5ID1cbiAgICAgICAgICAoKiB5ZWFyLCBtb250aCwgYW5kIGRheSBuZWVkIHRvIGJlIHBhc3NlZCBhcyBwYXJhbWV0ZXJzIHRvIGF2b2lkIGFsbG9jYXRpbmdcbiAgICAgICAgICAgICBhIGNsb3N1cmUgKHNlZSB1bml0IHRlc3QgYmVsb3cpICopXG4gICAgICAgICAgbGV0IGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgbXNnID1cbiAgICAgICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgICAgICAhXCJEYXRlLmNyZWF0ZV9leG4gfnk6JWQgfm06JXtNb250aH0gfmQ6JWQgZXJyb3I6ICVzXCJcbiAgICAgICAgICAgICAgeWVhclxuICAgICAgICAgICAgICBtb250aFxuICAgICAgICAgICAgICBkYXlcbiAgICAgICAgICAgICAgbXNnXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiB5ZWFyIDwgMCB8fCB5ZWFyID4gOTk5OVxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcInllYXIgb3V0c2lkZSBvZiBbMC4uOTk5OV1cIjtcbiAgICAgICAgICBpZiBkYXkgPD0gMCB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJkYXkgPD0gMFwiO1xuICAgICAgICAgIGxldCBkYXlzX2luX21vbnRoID0gZGF5c19pbl9tb250aCB+eWVhciB+bW9udGggaW5cbiAgICAgICAgICBpZiBkYXkgPiBkYXlzX2luX21vbnRoXG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IChzcHJpbnRmIFwiJWQgZGF5IG1vbnRoIHZpb2xhdGlvblwiIGRheXNfaW5fbW9udGgpO1xuICAgICAgICAgIGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXlcbiAgICAgICAgOztcblxuICAgICAgICAoKiBXZSBkb24ndCB1c2UgTWFrZV9iaW5hYmxlIGhlcmUsIGJlY2F1c2UgdGhhdCB3b3VsZCBnbyB2aWEgYW4gaW1tZWRpYXRlXG4gICAgICAgICAgIHR1cGxlIG9yIHJlY29yZC4gIFRoYXQgaXMgZXhhY3RseSB0aGUgMzIgYnl0ZXMgd2Ugd29ya2VkIHNvIGhhcmQgYWJvdmUgdG9cbiAgICAgICAgICAgZ2V0IHJpZCBvZi4gIFdlIGFsc28gZG9uJ3Qgd2FudCB0byBqdXN0IGJpbl9pbyB0aGUgaW50ZWdlciBkaXJlY3RseVxuICAgICAgICAgICBiZWNhdXNlIHRoYXQgd291bGQgbWVhbiBhIG5ldyBiaW5faW8gZm9ybWF0LiAgKilcblxuICAgICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICAgIGxldCB5ZWFyID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGguU3RhYmxlLlYxLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgbGV0IGRheSA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgKCogX19iaW5fcmVhZF90IGlzIG9ubHkgbmVlZGVkIGZvciB2YXJpYW50cyAqKVxuICAgICAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJEYXRlLnRcIiAhcG9zX3JlZlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fc2l6ZV90IHQgPVxuICAgICAgICAgIEludC5iaW5fc2l6ZV90ICh5ZWFyIHQpICsgTW9udGguYmluX3NpemVfdCAobW9udGggdCkgKyBJbnQuYmluX3NpemVfdCAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICAgIGxldCBwb3MgPSBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKHllYXIgdCkgaW5cbiAgICAgICAgICBsZXQgcG9zID0gTW9udGguYmluX3dyaXRlX3QgYnVmIH5wb3MgKG1vbnRoIHQpIGluXG4gICAgICAgICAgSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zIChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgICAgICBsZXQgYmluX3QgPVxuICAgICAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgICAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgICAgIDsgc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9faW50IHQgPSB0XG4gICAgICAgIGxldCBvZl9pbnRfZXhuIG4gPSBjcmVhdGVfZXhuIH55Oih5ZWFyIG4pIH5tOihtb250aCBuKSB+ZDooZGF5IG4pXG4gICAgICAgIGxldCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkgPSAwXG5cbiAgICAgICAgbGV0JXRlc3QgXCJpbnZhbGlkIHZhbHVlXCIgPVxuICAgICAgICAgIEV4bi5kb2VzX3JhaXNlIChmdW4gKCkgOiB0IC0+IG9mX2ludF9leG4gaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG5cbiAgICAgICgqKiBZWVlZLU1NLUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA0ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NSAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNyAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjggKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZFxuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjQgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo2IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICAoKiogTU0vREQvWVlZWSAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19hbWVyaWNhbiB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICcvJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MyAoZGF5IHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDUgJy8nO1xuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczo2ICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX3llYXI0IHN0ciBwb3MgPSByZWFkXzRfZGlnaXRfaW50IHN0ciB+cG9zXG4gICAgICBsZXQgcGFyc2VfbW9udGggc3RyIHBvcyA9IE1vbnRoLm9mX2ludF9leG4gKHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MpXG4gICAgICBsZXQgcGFyc2VfZGF5IHN0ciBwb3MgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IG9mX3N0cmluZ19pc284NjAxX2Jhc2ljIHN0ciB+cG9zID1cbiAgICAgICAgaWYgcG9zICsgOCA+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEYXRlLm9mX3N0cmluZ19pc284NjAxX2Jhc2ljOiBwb3MgKyA4ID4gc3RyaW5nIGxlbmd0aFwiO1xuICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHN0ciBwb3MpXG4gICAgICAgICAgfm06KHBhcnNlX21vbnRoIHN0ciAocG9zICsgNCkpXG4gICAgICAgICAgfmQ6KHBhcnNlX2RheSBzdHIgKHBvcyArIDYpKVxuICAgICAgOztcblxuICAgICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhIG1hdGVyaWFsIHdheSwgYmUgc3VyZSB5b3VcbiAgICAgICAgIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB3b3JraW5nIGluIFN0YWJsZSAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbGV0IGludmFsaWQgKCkgPSBmYWlsd2l0aCAoXCJpbnZhbGlkIGRhdGU6IFwiIF4gcykgaW5cbiAgICAgICAgbGV0IGVuc3VyZSBiID0gaWYgbm90IGIgdGhlbiBpbnZhbGlkICgpIGluXG4gICAgICAgIGxldCBtb250aF9udW0gfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG4gfnk6KHBhcnNlX3llYXI0IHMgeWVhcikgfm06KHBhcnNlX21vbnRoIHMgbW9udGgpIH5kOihwYXJzZV9kYXkgcyBkYXkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb250aF9hYnJ2IH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgICB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKVxuICAgICAgICAgICAgfm06KE1vbnRoLm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzIH5wb3M6bW9udGggfmxlbjozKSlcbiAgICAgICAgICAgIH5kOihwYXJzZV9kYXkgcyBkYXkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzICcvJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeSwgbSwgZCA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246Jy8nIHdpdGhcbiAgICAgICAgICAgIHwgWyBhOyBiOyBjIF0gLT5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBhID0gNCB0aGVuIGEsIGIsIGMgKCogeS9tL2QgKikgZWxzZSBjLCBhLCBiICgqIG0vZC95ICopXG4gICAgICAgICAgICB8IF8gLT4gaW52YWxpZCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQub2Zfc3RyaW5nIHkgaW5cbiAgICAgICAgICBsZXQgeWVhciA9XG4gICAgICAgICAgICBpZiB5ZWFyID49IDEwMCB0aGVuIHllYXIgZWxzZSBpZiB5ZWFyIDwgNzUgdGhlbiAyMDAwICsgeWVhciBlbHNlIDE5MDAgKyB5ZWFyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5vZl9pbnRfZXhuIChJbnQub2Zfc3RyaW5nIG0pIGluXG4gICAgICAgICAgbGV0IGRheSA9IEludC5vZl9zdHJpbmcgZCBpblxuICAgICAgICAgIGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkpXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy0nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIHl5eXktbW0tZGQgKilcbiAgICAgICAgICBlbnN1cmUgKFN0cmluZy5sZW5ndGggcyA9IDEwICYmIENoYXIuKCA9ICkgcy5bNF0gJy0nICYmIENoYXIuKCA9ICkgcy5bN10gJy0nKTtcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NSB+ZGF5OjgpXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJyAnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzJdICcgJyAmJiBDaGFyLiggPSApIHMuWzZdICcgJ1xuICAgICAgICAgIHRoZW4gKCogREQgTU1NIFlZWVkgKilcbiAgICAgICAgICAgIG1vbnRoX2FicnYgfmRheTowIH5tb250aDozIH55ZWFyOjdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFlZWVkgTU1NIEREICopXG4gICAgICAgICAgICBlbnN1cmUgKFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bNF0gJyAnICYmIENoYXIuKCA9ICkgcy5bOF0gJyAnKTtcbiAgICAgICAgICAgIG1vbnRoX2FicnYgfmRheTo5IH5tb250aDo1IH55ZWFyOjApXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOVxuICAgICAgICB0aGVuICgqIERETU1NWVlZWSAqKVxuICAgICAgICAgIG1vbnRoX2FicnYgfmRheTowIH5tb250aDoyIH55ZWFyOjVcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA4XG4gICAgICAgIHRoZW4gKCogYXNzdW1lIFlZWVlNTUREICopXG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjQgfmRheTo2XG4gICAgICAgIGVsc2UgaW52YWxpZCAoKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiRGF0ZS5vZl9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT2xkX2RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgeyB5IDogaW50XG4gICAgICAgICAgICA7IG0gOiBpbnRcbiAgICAgICAgICAgIDsgZCA6IGludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgICBsZXQgdG9fZGF0ZSB0ID0gVC5jcmVhdGVfZXhuIH55OnQueSB+bTooTW9udGgub2ZfaW50X2V4biB0Lm0pIH5kOnQuZFxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyBhcyBzZXhwIC0+IE9sZF9kYXRlLnRvX2RhdGUgKE9sZF9kYXRlLnRfb2Zfc2V4cCBzZXhwKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICAgICAgdHJ5IHRfb2Zfc2V4cCBzIHdpdGhcbiAgICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBleG4gLT4gcmFpc2UgZXhuXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGEgLT4gb2Zfc2V4cF9lcnJvciBhIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlXG5cbiAgICAgIGxldCBjb21wYXJlIHQxIHQyID1cbiAgICAgICAgbGV0IG4gPSBJbnQuY29tcGFyZSAoeWVhciB0MSkgKHllYXIgdDIpIGluXG4gICAgICAgIGlmIG4gPD4gMFxuICAgICAgICB0aGVuIG5cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG4gPSBNb250aC5jb21wYXJlIChtb250aCB0MSkgKG1vbnRoIHQyKSBpblxuICAgICAgICAgIGlmIG4gPD4gMCB0aGVuIG4gZWxzZSBJbnQuY29tcGFyZSAoZGF5IHQxKSAoZGF5IHQyKSlcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFdpdGhvdXRfY29tcGFyYWJsZVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBbQEBkZXJpdmluZ1xuICAgICAgICBiaW5faW9cbiAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjgyNmEzZTc5LTMzMjEtNDUxYS05NzA3LWVkNmMwM2I4NGUyZlwiXG4gICAgICAsIGNvbXBhcmVcbiAgICAgICwgaGFzaFxuICAgICAgLCB0eXBlcmVwXVxuXG4gICAgICBsZXQgbm9uZSA9IFYxLih0b19pbnQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHQgPSBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlIF8gPSB0cnVlXG4gICAgICBsZXQgc29tZSB0ID0gVjEudG9faW50IHRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBWMS5vZl9pbnRfZXhuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJEYXRlLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBpZiBpc19zb21lIHQgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdCBlbHNlIGRlZmF1bHRcbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjEuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMS50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYxLnQgT3B0aW9uLnRdXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmFibGUgPSBTdGFibGUuVjEuV2l0aG91dF9jb21wYXJhYmxlXG5pbmNsdWRlIFdpdGhvdXRfY29tcGFyYWJsZVxubW9kdWxlIEMgPSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChXaXRob3V0X2NvbXBhcmFibGUpXG5pbmNsdWRlIENcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoQyA6IENvbXBhcmFibGUuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlXG4gICAgaW5jbHVkZSBCaW5hYmxlXG5cbiAgICBsZXQgY29tcGFyZSAoYSA6IHQpIChiIDogdCkgPSBjb21wYXJlIGEgYlxuICBlbmQpIDpcbiAgICBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5EYXRlXCJcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGVuZClcblxubGV0IHVuaXhfZXBvY2ggPSBjcmVhdGVfZXhuIH55OjE5NzAgfm06SmFuIH5kOjFcblxuKCogVGhlIERheXMgbW9kdWxlIGlzIHVzZWQgZm9yIGNhbGN1bGF0aW9ucyB0aGF0IGludm9sdmUgYWRkaW5nIG9yIHJlbW92aW5nIGEga25vd24gbnVtYmVyXG4gICBvZiBkYXlzIGZyb20gYSBkYXRlLiAgSW50ZXJuYWxseSB0aGUgZGF0ZSBpcyB0cmFuc2xhdGVkIHRvIGEgZGF5IG51bWJlciwgdGhlIGRheXMgYXJlXG4gICBhZGRlZCwgYW5kIHRoZSBuZXcgZGF0ZSBpcyByZXR1cm5lZC4gIFRob3NlIGludGVyZXN0ZWQgaW4gdGhlIG1hdGggY2FuIHJlYWQ6XG5cbiAgIGh0dHA6Ly9hbGNvci5jb25jb3JkaWEuY2Evfmdwa2F0Y2gvZ2RhdGUtbWV0aG9kLmh0bWxcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBhcmUgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubW9kdWxlIERheXMgOiBzaWdcbiAgdHlwZSBkYXRlID0gdFxuICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuXG4gIHZhbCBvZl9kYXRlIDogZGF0ZSAtPiB0XG4gIHZhbCB0b19kYXRlIDogdCAtPiBkYXRlXG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IGludFxuICB2YWwgYWRkX2RheXMgOiB0IC0+IGludCAtPiB0XG4gIHZhbCB1bml4X2Vwb2NoIDogdFxuZW5kXG53aXRoIHR5cGUgZGF0ZSA6PSB0ID0gc3RydWN0XG4gIG9wZW4gSW50XG5cbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG9mX3llYXIgeSA9ICgzNjUgKiB5KSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMClcblxuICBsZXQgb2ZfZGF0ZSBkYXRlID1cbiAgICBsZXQgbSA9IChNb250aC50b19pbnQgKG1vbnRoIGRhdGUpICsgOSkgJSAxMiBpblxuICAgIGxldCB5ID0geWVhciBkYXRlIC0gKG0gLyAxMCkgaW5cbiAgICBvZl95ZWFyIHkgKyAoKChtICogMzA2KSArIDUpIC8gMTApICsgKGRheSBkYXRlIC0gMSlcbiAgOztcblxuICBsZXQgY18xMF8wMDAgPSBJbnQ2My5vZl9pbnQgMTBfMDAwXG4gIGxldCBjXzE0Xzc4MCA9IEludDYzLm9mX2ludCAxNF83ODBcbiAgbGV0IGNfM182NTJfNDI1ID0gSW50NjMub2ZfaW50IDNfNjUyXzQyNVxuXG4gIGxldCB0b19kYXRlIGRheXMgPVxuICAgIGxldCB5ID1cbiAgICAgIGxldCBvcGVuIEludDYzIGluXG4gICAgICB0b19pbnRfZXhuICgoKGNfMTBfMDAwICogb2ZfaW50IGRheXMpICsgY18xNF83ODApIC8gY18zXzY1Ml80MjUpXG4gICAgaW5cbiAgICBsZXQgZGRkID0gZGF5cyAtIG9mX3llYXIgeSBpblxuICAgIGxldCB5LCBkZGQgPVxuICAgICAgaWYgZGRkIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB5ID0geSAtIDEgaW5cbiAgICAgICAgeSwgZGF5cyAtIG9mX3llYXIgeSlcbiAgICAgIGVsc2UgeSwgZGRkXG4gICAgaW5cbiAgICBsZXQgbWkgPSAoKDEwMCAqIGRkZCkgKyA1MikgLyAzXzA2MCBpblxuICAgIGxldCB5ID0geSArICgobWkgKyAyKSAvIDEyKSBpblxuICAgIGxldCBtID0gKChtaSArIDIpICUgMTIpICsgMSBpblxuICAgIGxldCBkID0gZGRkIC0gKCgobWkgKiAzMDYpICsgNSkgLyAxMCkgKyAxIGluXG4gICAgY3JlYXRlX2V4biB+eSB+bTooTW9udGgub2ZfaW50X2V4biBtKSB+ZFxuICA7O1xuXG4gIGxldCB1bml4X2Vwb2NoID0gb2ZfZGF0ZSB1bml4X2Vwb2NoXG4gIGxldCBhZGRfZGF5cyB0IGRheXMgPSB0ICsgZGF5c1xuICBsZXQgZGlmZiB0MSB0MiA9IHQxIC0gdDJcbmVuZFxuXG5sZXQgYWRkX2RheXMgdCBkYXlzID0gRGF5cy50b19kYXRlIChEYXlzLmFkZF9kYXlzIChEYXlzLm9mX2RhdGUgdCkgZGF5cylcbmxldCBkaWZmIHQxIHQyID0gRGF5cy5kaWZmIChEYXlzLm9mX2RhdGUgdDEpIChEYXlzLm9mX2RhdGUgdDIpXG5cbmxldCBhZGRfbW9udGhzIHQgbiA9XG4gIGxldCB0b3RhbF9tb250aHMgPSBNb250aC50b19pbnQgKG1vbnRoIHQpICsgbiBpblxuICBsZXQgeSA9IHllYXIgdCArICh0b3RhbF9tb250aHMgLyUgMTIpIGluXG4gIGxldCBtID0gdG90YWxfbW9udGhzICUgMTIgaW5cbiAgKCogY29ycmVjdCBmb3IgZGVjZW1iZXIgKilcbiAgbGV0IHksIG0gPSBpZiBJbnQuKCA9ICkgbSAwIHRoZW4geSAtIDEsIG0gKyAxMiBlbHNlIHksIG0gaW5cbiAgbGV0IG0gPSBNb250aC5vZl9pbnRfZXhuIG0gaW5cbiAgKCogaGFuZGxlIGludmFsaWQgZGF0ZXMgZm9yIG1vbnRocyB3aXRoIGZld2VyIG51bWJlciBvZiBkYXlzICopXG4gIGxldCByZWMgdHJ5X2NyZWF0ZSBkID1cbiAgICB0cnkgY3JlYXRlX2V4biB+eSB+bSB+ZCB3aXRoXG4gICAgfCBfZXhuIC0+XG4gICAgICBhc3NlcnQgKEludC4oID49ICkgZCAxKTtcbiAgICAgIHRyeV9jcmVhdGUgKGQgLSAxKVxuICBpblxuICB0cnlfY3JlYXRlIChkYXkgdClcbjs7XG5cbmxldCBhZGRfeWVhcnMgdCBuID0gYWRkX21vbnRocyB0IChuICogMTIpXG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGV0ZXJtaW5hdGlvbl9vZl90aGVfZGF5X29mX3RoZV93ZWVrI1B1cmVseV9tYXRoZW1hdGljYWxfbWV0aG9kc1xuXG4gICBub3RlOiB1bml0IHRlc3RzIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbmxldCBkYXlfb2Zfd2VlayA9XG4gIGxldCB0YWJsZSA9IFt8IDA7IDM7IDI7IDU7IDA7IDM7IDU7IDE7IDQ7IDY7IDI7IDQgfF0gaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbSA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgaW5cbiAgICBsZXQgeSA9IGlmIEludC4oIDwgKSBtIDMgdGhlbiB5ZWFyIHQgLSAxIGVsc2UgeWVhciB0IGluXG4gICAgRGF5X29mX3dlZWsub2ZfaW50X2V4blxuICAgICAgKCh5ICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKSArIHRhYmxlLihtIC0gMSkgKyBkYXkgdCkgJSA3KVxuOztcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcmRpbmFsX2RhdGUgKilcbmxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDU5OyA5MDsgMTIwOyAxNTE7IDE4MTsgMjEyOyAyNDM7IDI3MzsgMzA0OyAzMzQgfF1cbmxldCBsZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNjA7IDkxOyAxMjE7IDE1MjsgMTgyOyAyMTM7IDI0NDsgMjc0OyAzMDU7IDMzNSB8XVxuXG5sZXQgb3JkaW5hbF9kYXRlIHQgPVxuICBsZXQgdGFibGUgPVxuICAgIGlmIGlzX2xlYXBfeWVhciB+eWVhcjooeWVhciB0KSB0aGVuIGxlYXBfeWVhcl90YWJsZSBlbHNlIG5vbl9sZWFwX3llYXJfdGFibGVcbiAgaW5cbiAgbGV0IG9mZnNldCA9IHRhYmxlLihNb250aC50b19pbnQgKG1vbnRoIHQpIC0gMSkgaW5cbiAgZGF5IHQgKyBvZmZzZXRcbjs7XG5cbmxldCBsYXN0X3dlZWtfb2ZfeWVhciB5ID1cbiAgbGV0IGZpcnN0X29mX3llYXIgPSBjcmVhdGVfZXhuIH55IH5tOkphbiB+ZDoxIGluXG4gIGxldCBpcyB0IGRheSA9IERheV9vZl93ZWVrLmVxdWFsIChkYXlfb2Zfd2VlayB0KSBkYXkgaW5cbiAgaWYgaXMgZmlyc3Rfb2ZfeWVhciBUaHUgfHwgKGlzX2xlYXBfeWVhciB+eWVhcjp5ICYmIGlzIGZpcnN0X29mX3llYXIgV2VkKVxuICB0aGVuIDUzXG4gIGVsc2UgNTJcbjs7XG5cbigqIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUgb3IgSVNPIDg2MDEgZm9yIHRoZSBkZXRhaWxzIG9mIHRoaXNcbiAgIGFsZ29yaXRobS5cblxuICAgVXNlcyBhIFt+Zl0gYXJndW1lbnQgdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlIHdoZW4gY2FsbGVkIGJ5IFt3ZWVrX251bWJlcl0uXG4qKVxubGV0IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmYgPVxuICBsZXQgb3JkaW5hbCA9IG9yZGluYWxfZGF0ZSB0IGluXG4gIGxldCB3ZWVrZGF5ID0gRGF5X29mX3dlZWsuaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgKGRheV9vZl93ZWVrIHQpIGluXG4gICgqIFtvcmRpbmFsIC0gd2Vla2RheSArIDRdIGlzIHRoZSBvcmRpbmFsIG9mIHRoaXMgd2VlaydzIFRodXJzZGF5LCB0aGVuIChuICsgNikgLyA3IGlzXG4gICAgIGRpdmlzaW9uIGJ5IDcgcm91bmRpbmcgdXAgKilcbiAgbGV0IHdlZWsgPSAob3JkaW5hbCAtIHdlZWtkYXkgKyAxMCkgLyA3IGluXG4gIGxldCB5ZWFyID0geWVhciB0IGluXG4gIGlmIEludC4oIDwgKSB3ZWVrIDFcbiAgdGhlbiBmIH53ZWVrOihsYXN0X3dlZWtfb2ZfeWVhciAoeWVhciAtIDEpKSB+eWVhcjooeWVhciAtIDEpXG4gIGVsc2UgaWYgSW50LiggPiApIHdlZWsgKGxhc3Rfd2Vla19vZl95ZWFyIHllYXIpXG4gIHRoZW4gZiB+d2VlazoxIH55ZWFyOih5ZWFyICsgMSlcbiAgZWxzZSBmIH53ZWVrIH55ZWFyXG47O1xuXG5sZXQgd2Vla19udW1iZXJfYW5kX3llYXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhciAtPiB3ZWVrLCB5ZWFyKVxubGV0IHdlZWtfbnVtYmVyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXI6XyAtPiB3ZWVrKVxubGV0IGlzX3dlZWtlbmQgdCA9IERheV9vZl93ZWVrLmlzX3N1bl9vcl9zYXQgKGRheV9vZl93ZWVrIHQpXG5sZXQgaXNfd2Vla2RheSB0ID0gbm90IChpc193ZWVrZW5kIHQpXG5sZXQgaXNfYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPSBpc193ZWVrZGF5IHQgJiYgbm90IChpc19ob2xpZGF5IHQpXG5cbmxldCByZWMgZGlmZl93ZWVrZW5kX2RheXMgdDEgdDIgPVxuICBpZiB0MSA8IHQyXG4gIHRoZW4gLWRpZmZfd2Vla2VuZF9kYXlzIHQyIHQxXG4gIGVsc2UgKFxuICAgICgqIEJhc2ljIGRhdGUgZGlmZiAqKVxuICAgIGxldCBkaWZmID0gZGlmZiB0MSB0MiBpblxuICAgICgqIENvbXB1dGUgdGhlIG51bWJlciBvZiBTYXR1cmRheSAtPiBTdW5kYXkgY3Jvc3NpbmdzICopXG4gICAgbGV0IGQxID0gZGF5X29mX3dlZWsgdDEgaW5cbiAgICBsZXQgZDIgPSBkYXlfb2Zfd2VlayB0MiBpblxuICAgIGxldCBudW1fc2F0c3VuX2Nyb3NzaW5ncyA9XG4gICAgICBpZiBJbnQuKCA8ICkgKERheV9vZl93ZWVrLnRvX2ludCBkMSkgKERheV9vZl93ZWVrLnRvX2ludCBkMilcbiAgICAgIHRoZW4gMSArIChkaWZmIC8gNylcbiAgICAgIGVsc2UgZGlmZiAvIDdcbiAgICBpblxuICAgIChudW1fc2F0c3VuX2Nyb3NzaW5ncyAqIDIpXG4gICAgKyAoaWYgRGF5X29mX3dlZWsuKCA9ICkgZDIgRGF5X29mX3dlZWsuU3VuIHRoZW4gMSBlbHNlIDApXG4gICAgKyBpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMSBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAtMSBlbHNlIDApXG47O1xuXG5sZXQgZGlmZl93ZWVrZGF5cyB0MSB0MiA9IGRpZmYgdDEgdDIgLSBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MlxuXG5sZXQgYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcCBuID1cbiAgbGV0IHN0ZXAgPSBpZiBJbnQuKCA+PSApIG4gMCB0aGVuIDEgZWxzZSAtMSBpblxuICBsZXQgcmVjIGxvb3AgdCBrID1cbiAgICBsZXQgdF9uZXh0ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gICAgaWYgc2tpcCB0IHRoZW4gbG9vcCB0X25leHQgayBlbHNlIGlmIEludC4oID0gKSBrIDAgdGhlbiB0IGVsc2UgbG9vcCB0X25leHQgKGsgLSAxKVxuICBpblxuICBsb29wIHQgKGFicyBuKVxuOztcblxubGV0IHJlYyBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwIH5jb25kaXRpb24gPVxuICBpZiBjb25kaXRpb24gdCB0aGVuIHQgZWxzZSBmaXJzdF9kYXlfc2F0aXNmeWluZyAoYWRkX2RheXMgdCBzdGVwKSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwIH5jb25kaXRpb24gPVxuICBsZXQgbmV4dF9kYXkgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgbmV4dF9kYXkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IGZvbGxvd2luZ193ZWVrZGF5IHQgPSBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCBwcmV2aW91c193ZWVrZGF5IHQgPSBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCByb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCByb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5cbmxldCByb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCByb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzIHQgbiA9IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXA6aXNfd2Vla2VuZCBuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX3dlZWtkYXlzXG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfZm9yd2FyZCB0IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19iYWNrd2FyZCB0IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5cyB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyB0IG4gfnNraXA6KGZ1biBkIC0+IGlzX3dlZWtlbmQgZCB8fCBpc19ob2xpZGF5IGQpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfYnVzaW5lc3NfZGF5c1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfZm9yd2FyZCB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWNrd2FyZCB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZGF0ZXNfYmV0d2VlbiB+bWluOnQxIH5tYXg6dDIgPVxuICBsZXQgcmVjIGxvb3AgdCBsID0gaWYgdCA8IHQxIHRoZW4gbCBlbHNlIGxvb3AgKGFkZF9kYXlzIHQgKC0xKSkgKHQgOjogbCkgaW5cbiAgbG9vcCB0MiBbXVxuOztcblxubGV0IHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4ID1cbiAgbGV0IGFsbF9kYXRlcyA9IGRhdGVzX2JldHdlZW4gfm1pbiB+bWF4IGluXG4gIE9wdGlvbi52YWx1ZV9tYXAgKExpc3QuaGQgYWxsX2RhdGVzKSB+ZGVmYXVsdDpbXSB+ZjooZnVuIGZpcnN0X2RhdGUgLT5cbiAgICAoKiB0byBhdm9pZCBhIHN5c3RlbSBjYWxsIG9uIGV2ZXJ5IGRhdGUsIHdlIGp1c3QgZ2V0IHRoZSB3ZWVrZGF5IGZvciB0aGUgZmlyc3RcbiAgICAgICBkYXRlIGFuZCB1c2UgaXQgdG8gZ2V0IGFsbCB0aGUgb3RoZXIgd2Vla2RheXMgKilcbiAgICBsZXQgZmlyc3Rfd2Vla2RheSA9IGRheV9vZl93ZWVrIGZpcnN0X2RhdGUgaW5cbiAgICBsZXQgZGF0ZV9hbmRfd2Vla2RheXMgPVxuICAgICAgTGlzdC5tYXBpIGFsbF9kYXRlcyB+ZjooZnVuIGkgZGF0ZSAtPiBkYXRlLCBEYXlfb2Zfd2Vlay5zaGlmdCBmaXJzdF93ZWVrZGF5IGkpXG4gICAgaW5cbiAgICBMaXN0LmZpbHRlcl9tYXAgZGF0ZV9hbmRfd2Vla2RheXMgfmY6KGZ1biAoZGF0ZSwgd2Vla2RheSkgLT5cbiAgICAgIGlmIERheV9vZl93ZWVrLmlzX3N1bl9vcl9zYXQgd2Vla2RheSB0aGVuIE5vbmUgZWxzZSBTb21lIGRhdGUpKVxuOztcblxubGV0IGJ1c2luZXNzX2RhdGVzX2JldHdlZW4gfm1pbiB+bWF4IH5pc19ob2xpZGF5ID1cbiAgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBkIC0+IG5vdCAoaXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBmaXJzdF9zdHJpY3RseV9hZnRlciB0IH5vbjpkb3cgPVxuICBsZXQgZG93ID0gRGF5X29mX3dlZWsudG9faW50IGRvdyBpblxuICBsZXQgdHBsdXMxID0gYWRkX2RheXMgdCAxIGluXG4gIGxldCBjdXIgPSBEYXlfb2Zfd2Vlay50b19pbnQgKGRheV9vZl93ZWVrIHRwbHVzMSkgaW5cbiAgbGV0IGRpZmYgPSAoZG93ICsgNyAtIGN1cikgbW9kIDcgaW5cbiAgYWRkX2RheXMgdHBsdXMxIGRpZmZcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBvcGVuIFF1aWNrY2hlY2tcblxuICBsZXQgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiA9XG4gICAgaWYgZDEgPiBkMlxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJEYXRlLmdlbl91bmlmb3JtX2luY2w6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgICB+bG93ZXJfYm91bmQ6KGQxIDogdClcbiAgICAgICAgICAgIH51cHBlcl9ib3VuZDooZDIgOiB0KV07XG4gICAgR2VuZXJhdG9yLm1hcCAoSW50Lmdlbl91bmlmb3JtX2luY2wgMCAoZGlmZiBkMiBkMSkpIH5mOihmdW4gZGF5cyAtPiBhZGRfZGF5cyBkMSBkYXlzKVxuICA7O1xuXG4gIGxldCBnZW5faW5jbCBkMSBkMiA9XG4gICAgR2VuZXJhdG9yLndlaWdodGVkX3VuaW9uXG4gICAgICBbIDEuLCBHZW5lcmF0b3IucmV0dXJuIGQxOyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMjsgMTguLCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyIF1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCAob2Zfc3RyaW5nIFwiMTkwMC0wMS0wMVwiKSAob2Zfc3RyaW5nIFwiMjEwMC0wMS0wMVwiKVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IE9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemU6XyB+aGFzaCAtPiBoYXNoX2ZvbGRfdCBoYXNoIHQpXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gU2hyaW5rZXIuZW1wdHkgKClcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvclxubGV0IGdlbl9pbmNsID0gRm9yX3F1aWNrY2hlY2suZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gRm9yX3F1aWNrY2hlY2suZ2VuX3VuaWZvcm1faW5jbFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGxlYXBfeWVhcl90YWJsZSA9IGxlYXBfeWVhcl90YWJsZVxuICBsZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IG5vbl9sZWFwX3llYXJfdGFibGVcbiAgbGV0IG9yZGluYWxfZGF0ZSA9IG9yZGluYWxfZGF0ZVxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZS5PcHRpb25cbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoT3B0aW9uLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHF1aWNrY2hlY2tfZ2VuZXJhdG9yKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICAoT3B0aW9uLnF1aWNrY2hlY2tfc2hyaW5rZXIgcXVpY2tjaGVja19zaHJpbmtlcilcbiAgICAgIH5mOm9mX29wdGlvblxuICAgICAgfmZfaW52ZXJzZTp0b19vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci5vZl9oYXNoXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgZW5kKVxuICA7O1xuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBzdWZmaXhlcyBjaGFyID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBbIHNwcmludGYgXCIlY1wiIGNoYXI7IHNwcmludGYgXCIlY01cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NLlwiIGNoYXIgXVxuICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biBzdWZmaXggLT5cbiAgICBbIFN0cmluZy5sb3dlcmNhc2Ugc3VmZml4OyBTdHJpbmcudXBwZXJjYXNlIHN1ZmZpeCBdKVxuOztcblxubGV0IGFtX3N1ZmZpeGVzID0gbGF6eSAoc3VmZml4ZXMgJ0EnKVxubGV0IHBtX3N1ZmZpeGVzID0gbGF6eSAoc3VmZml4ZXMgJ1AnKVxuXG4oKiBBdm9pZHMgdGhlIGFsbG9jYXRpb24gdGhhdCBbTGlzdC5maW5kXSB3b3VsZCBlbnRhaWwgaW4gYm90aCBib3RoIHRoZSBjbG9zdXJlIGlucHV0IGFuZFxuICAgdGhlIG9wdGlvbiBvdXRwdXQuICopXG5sZXQgcmVjIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlcyA9XG4gIG1hdGNoIHN1ZmZpeGVzIHdpdGhcbiAgfCBzdWZmaXggOjogc3VmZml4ZXMgLT5cbiAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4IHRoZW4gc3VmZml4IGVsc2UgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzXG4gIHwgW10gLT4gXCJcIlxuOztcblxubGV0IGhhc19jb2xvbiBzdHJpbmcgcG9zIH51bnRpbCA9IHBvcyA8IHVudGlsICYmIENoYXIuZXF1YWwgJzonIHN0cmluZy5bcG9zXVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGRlZmluZXMgd2hhdCB3ZSBtZWFudCBieSBcImRlY2ltYWwgcG9pbnRcIiwgYmVjYXVzZSBpbiBzb21lIHN0cmluZyBmb3JtYXRzXG4gICBpdCBtZWFucyAnLicgYW5kIGluIHNvbWUgaXQgY2FuIGJlICcuJyBvciAnLCcuIFRoZXJlJ3Mgbm8gcGFydGljdWxhciBkZW1hbmQgZm9yIHN1cHBvcnRcbiAgIGZvciAnLCcsIGFuZCB1c2luZyBqdXN0ICcuJyBsZXRzIHVzIHVzZSBbRmxvYXQub2Zfc3RyaW5nXSBmb3IgdGhlIGRlY2ltYWwgc3Vic3RyaW5nXG4gICB3aXRob3V0IGFueSBzdWJzdGl0dXRpb25zLiAqKVxubGV0IGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zID0gQ2hhci5lcXVhbCAnLicgc3RyaW5nLltwb3NdXG5cbmxldCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIGxlbiA9XG4gIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAnICcgc3RyaW5nLltsZW4gLSAxXSB0aGVuIGxlbiAtIDEgZWxzZSBsZW5cbjs7XG5cbmxldFtAY29sZF0gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWUuT2ZkYXk6IGludmFsaWQgc3RyaW5nXCIgc3RyaW5nIHJlYXNvbl1cbjs7XG5cbmxldCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgcG9zIH51bnRpbCA9XG4gIGxldCBub256ZXJvID0gcmVmIGZhbHNlIGluXG4gIGZvciBwb3MgPSBwb3MgdG8gdW50aWwgLSAxIGRvXG4gICAgbWF0Y2ggc3RyaW5nLltwb3NdIHdpdGhcbiAgICB8ICcwJyB8ICdfJyAtPiAoKVxuICAgIHwgJzEnIC4uICc5JyAtPiBub256ZXJvIDo9IHRydWVcbiAgICB8IF8gLT5cbiAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFuZC9vciB1bmRlcnNjb3JlcyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgcG9zIH51bnRpbCA9XG4gIGxldCBub256ZXJvID0gcmVmIGZhbHNlIGluXG4gIGZvciBwb3MgPSBwb3MgdG8gdW50aWwgLSAxIGRvXG4gICAgbWF0Y2ggc3RyaW5nLltwb3NdIHdpdGhcbiAgICB8ICcwJyAtPiAoKVxuICAgIHwgJzEnIC4uICc5JyAtPiBub256ZXJvIDo9IHRydWVcbiAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgcGFyc2Ugc3RyaW5nIH5mID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGxldCBhbV9vcl9wbSwgdW50aWwgPVxuICAgICgqIGRpc2NyaW1pbmF0ZSBhbW9uZyBBTSAoMTozMGFtKSwgUE0gKDEyOjMwOjAwIFAuTS4pLCBvciAyNC1ociAoMTM6MDApLiAqKVxuICAgIG1hdGNoXG4gICAgICAoIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBhbV9zdWZmaXhlcylcbiAgICAgICwgZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIHBtX3N1ZmZpeGVzKSApXG4gICAgd2l0aFxuICAgIHwgXCJcIiwgXCJcIiAtPiBgaHJfMjQsIGxlblxuICAgIHwgYW0sIFwiXCIgLT4gYGhyX0FNLCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIChsZW4gLSBTdHJpbmcubGVuZ3RoIGFtKVxuICAgIHwgXCJcIiwgcG0gLT4gYGhyX1BNLCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIChsZW4gLSBTdHJpbmcubGVuZ3RoIHBtKVxuICAgIHwgXywgXyAtPiBgaHJfMjQsIGFzc2VydCBmYWxzZVxuICAgICgqIEltbWVkaWF0ZWx5IGFib3ZlLCBpdCBtYXkgc2VlbSBub25zZW5zaWNhbCB0byB3cml0ZSBbYGhyXzI0LCBhc3NlcnQgZmFsc2VdIHdoZW4gdGhlXG4gICAgICAgW2Bocl8yNF0gY2FuIG5ldmVyIGJlIHJldHVybmVkLiBXZSBkbyB0aGlzIHRvIGhlbHAgdGhlIGNvbXBpbGVyIGZpZ3VyZSBvdXQgbmV2ZXIgdG9cbiAgICAgICBhbGxvY2F0ZSBhIHR1cGxlIGluIHRoaXMgY29kZTogdGhlIFtsZXRdIHBhdHRlcm4gaXMgc3ludGFjdGljYWxseSBhIHR1cGxlIGFuZCBldmVyeVxuICAgICAgIG1hdGNoIGNsYXVzZSBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUuICopXG4gIGluXG4gIGxldCBwb3MgPSAwIGluXG4gIGxldCBwb3MsIGhyLCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyA9XG4gICAgKCogZS5nLiBcIjE6MDBcIiBvciBcIjE6MDA6MDBcIiAqKVxuICAgIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDEpIH51bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDIsIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTI6MDBcIiBvciBcIjEyOjAwOjAwXCIgKilcbiAgICBlbHNlIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDIpIH51bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDMsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMWFtXCI7IG11c3QgaGF2ZSBBTSBvciBQTSAoY2hlY2tlZCBiZWxvdykgKilcbiAgICBlbHNlIGlmIHBvcyArIDEgPSB1bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDEsIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMmFtXCI7IG11c3QgaGF2ZSBBTSBvciBQTSAoY2hlY2tlZCBiZWxvdykgKilcbiAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIwOTMwXCI7IG11c3Qgbm90IGhhdmUgc2Vjb25kcyAqKVxuICAgIGVsc2UgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzXG4gIGluXG4gIGxldCBwb3MsIG1pbiwgZXhwZWN0X3NlY29uZHMgPVxuICAgIG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgKilcbiAgICAgIHBvcywgMCwgZmFsc2VcbiAgICB8IChgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcykgYXMgbWF5YmVfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDIpIH51bnRpbFxuICAgICAgdGhlblxuICAgICAgICAoIHBvcyArIDNcbiAgICAgICAgLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG4gICAgICAgICwgbWF0Y2ggbWF5YmVfc2Vjb25kcyB3aXRoXG4gICAgICAgIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT4gdHJ1ZVxuICAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyAtPlxuICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZW5kIG9mIHN0cmluZyBhZnRlciBtaW51dGVzXCIgKVxuICAgICAgICAoKiBlLmcuIFwiMTI6MDBcIiAqKVxuICAgICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICAgIHRoZW4gcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgY29sb24gb3IgYW0vcG0gc3VmZml4IHdpdGggb3B0aW9uYWwgc3BhY2UgYWZ0ZXIgbWludXRlc1wiXG4gIGluXG4gIGxldCBzZWMsIHN1YnNlY19wb3MsIHN1YnNlY19sZW4sIHN1YnNlY19ub256ZXJvID1cbiAgICBtYXRjaCBleHBlY3Rfc2Vjb25kcyB3aXRoXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiBvciBcIjEyOjAwXCIgKilcbiAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICB0aGVuIDAsIHBvcywgMCwgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGFjdHVhbGx5IHVucmVhY2hhYmxlLCBiYXNlZCBvbiB0aGUgdmFyaW91cyB3YXlzIHRoYXRcbiAgICAgICAgICAgW2V4cGVjdF9zZWNvbmRzXSBjYW4gZW5kIHVwIGZhbHNlLiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIkJVRzogZGlkIG5vdCBleHBlY3Qgc2Vjb25kcywgYnV0IGZvdW5kIHRoZW1cIlxuICAgIHwgdHJ1ZSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgIGlmIHBvcyArIDIgPiB1bnRpbFxuICAgICAgdGhlblxuICAgICAgICAoKiBlLmcuIFwiMTI6MDA6MFwiICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgdHdvIGRpZ2l0cyBvZiBzZWNvbmRzXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyBpblxuICAgICAgICBsZXQgcG9zID0gcG9zICsgMiBpblxuICAgICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgICB0aGVuIHNlYywgcG9zLCAwLCBmYWxzZSAoKiBlLmcuIFwiMTI6MDA6MDAuMTIzXCIgKilcbiAgICAgICAgZWxzZSBpZiBwb3MgPCB1bnRpbCAmJiBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgKCBzZWNcbiAgICAgICAgICAsIHBvc1xuICAgICAgICAgICwgdW50aWwgLSBwb3NcbiAgICAgICAgICAsIGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyAocG9zICsgMSkgfnVudGlsIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkZWNpbWFsIHBvaW50IG9yIGFtL3BtIHN1ZmZpeCBhZnRlciBzZWNvbmRzXCIpXG4gIGluXG4gIGxldCBociA9XG4gICAgKCogTkIuIFdlIGFscmVhZHkga25vdyBbaHJdIGlzIG5vbi1uZWdhdGl2ZSwgYmVjYXVzZSBpdCdzIHRoZSByZXN1bHQgb2ZcbiAgICAgICBbcmVhZF8yX2RpZ2l0X2ludF0uICopXG4gICAgbWF0Y2ggYW1fb3JfcG0gd2l0aFxuICAgIHwgYGhyX0FNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBhbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2UgaHJcbiAgICB8IGBocl9QTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwcG1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAxMlxuICAgICAgZWxzZSBociArIDEyXG4gICAgfCBgaHJfMjQgLT5cbiAgICAgIChtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIHdpdGhvdXQgbWludXRlcyBvciBBTS9QTVwiXG4gICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPlxuICAgICAgICAgaWYgaHIgPiAyNFxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgZWxzZSBpZiBociA9IDI0ICYmIChtaW4gPiAwIHx8IHNlYyA+IDAgfHwgc3Vic2VjX25vbnplcm8pXG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidGltZSBpcyBwYXN0IDI0OjAwOjAwXCIgKCogZS5nLiBcIjEzOjAwOjAwXCIgKilcbiAgICAgICAgIGVsc2UgaHIpXG4gIGluXG4gIGxldCBtaW4gPVxuICAgIGlmIG1pbiA+IDU5IHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJtaW51dGVzIG91dCBvZiBib3VuZHNcIiBlbHNlIG1pblxuICBpblxuICBsZXQgc2VjID1cbiAgICBpZiBzZWMgPiA2MCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic2Vjb25kcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBzZWNcbiAgaW5cbiAgbGV0IHN1YnNlY19sZW4gPSBpZiBzZWMgPSA2MCB8fCBub3Qgc3Vic2VjX25vbnplcm8gdGhlbiAwIGVsc2Ugc3Vic2VjX2xlbiBpblxuICBmIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuXG47O1xuXG5sZXQgcGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBtYXRjaFxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbiAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgd2l0aFxuICAgIHwgUmVzdWx0Lk9rIHogLT4gelxuICAgIHwgUmVzdWx0LkVycm9yIHMgLT5cbiAgICAgIGZhaWx3aXRoZiBcIk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiAlc1wiIChFcnJvci50b19zdHJpbmdfbWFjaCBzKSAoKVxuICBpblxuICBpZiBsZW4gPCAyXG4gIHRoZW4gZmFpbHdpdGggXCJsZW4gPCAyXCJcbiAgZWxzZSAoXG4gICAgbGV0IGhyID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcyBpblxuICAgIGlmIGhyID4gMjQgdGhlbiBmYWlsd2l0aCBcImhvdXIgPiAyNFwiO1xuICAgIGlmIGxlbiA9IDJcbiAgICB0aGVuIGYgc3RyIH5ociB+bWluOjAgfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICBlbHNlIGlmIGxlbiA8IDVcbiAgICB0aGVuIGZhaWx3aXRoIFwiMiA8IGxlbiA8IDVcIlxuICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgMl0gJzonKVxuICAgIHRoZW4gZmFpbHdpdGggXCJmaXJzdCBjb2xvbiBtaXNzaW5nXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBtaW4gPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zOihwb3MgKyAzKSBpblxuICAgICAgaWYgbWluID49IDYwIHRoZW4gZmFpbHdpdGggXCJtaW51dGUgPiA2MFwiO1xuICAgICAgaWYgaHIgPSAyNCAmJiBtaW4gPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIG1pbnV0ZVwiO1xuICAgICAgaWYgbGVuID0gNVxuICAgICAgdGhlbiBmIHN0ciB+aHIgfm1pbiB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgZWxzZSBpZiBsZW4gPCA4XG4gICAgICB0aGVuIGZhaWx3aXRoIFwiNSA8IGxlbiA8IDhcIlxuICAgICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyA1XSAnOicpXG4gICAgICB0aGVuIGZhaWx3aXRoIFwic2Vjb25kIGNvbG9uIG1pc3NpbmdcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zOihwb3MgKyA2KSBpblxuICAgICAgICAoKiBzZWNvbmQgY2FuIGJlIDYwIGluIHRoZSBjYXNlIG9mIGEgbGVhcCBzZWNvbmQuIFVuZm9ydHVuYXRlbHksIHdoYXQgd2l0aFxuICAgICAgICAgICBub24taG91ci1tdWx0aXBsZSB0aW1lem9uZSBvZmZzZXRzLCB3ZSBjYW4ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hhdFxuICAgICAgICAgICB0aGUgaG91ciBvciBtaW51dGUgbXVzdCBiZSBpbiB0aGF0IGNhc2UgKilcbiAgICAgICAgaWYgc2VjID4gNjAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIHNlY29uZDogJWlcIiBzZWMgKCk7XG4gICAgICAgIGlmIGhyID0gMjQgJiYgc2VjIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBzZWNvbmRzXCI7XG4gICAgICAgIGlmIGxlbiA9IDhcbiAgICAgICAgdGhlbiBmIHN0ciB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgICAgZWxzZSBpZiBsZW4gPSA5XG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJsZW5ndGggPSA5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggc3RyLltwb3MgKyA4XSB3aXRoXG4gICAgICAgICAgfCAnLicgfCAnLCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfcG9zID0gcG9zICsgOCBpblxuICAgICAgICAgICAgbGV0IHN1YnNlY19sZW4gPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvXG4gICAgICAgICAgICAgICAgICBzdHJcbiAgICAgICAgICAgICAgICAgIChzdWJzZWNfcG9zICsgMSlcbiAgICAgICAgICAgICAgICAgIH51bnRpbDoocG9zICsgbGVuKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIHNlYyA9IDYwIC0+IDBcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gaHIgPSAyNCAtPiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBzdWJzZWNvbmRzXCJcbiAgICAgICAgICAgICAgfCBfIC0+IGxlbiAtIDhcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBmIHN0ciB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuXG4gICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwibWlzc2luZyBzdWJzZWNvbmQgc2VwYXJhdG9yXCIpKSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbl9wcm90LlN0ZFxuaW5jbHVkZSBIYXNoLkJ1aWx0aW5cblxuaW5jbHVkZSAoXG4gIEJhc2UgOlxuICBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBib29sID0gYm9vbCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgY2hhciA9IGNoYXIgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGV4biA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludCA9IGludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50MzIgPSBpbnQzMiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgYnl0ZXMgPSBieXRlcyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgdW5pdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG4gIHdpdGggdHlwZSBib29sIDo9IGJvb2xcbiAgd2l0aCB0eXBlIGNoYXIgOj0gY2hhclxuICB3aXRoIHR5cGUgZXhuIDo9IGV4blxuICB3aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbiAgd2l0aCB0eXBlIGludCA6PSBpbnRcbiAgd2l0aCB0eXBlIGludDMyIDo9IGludDMyXG4gIHdpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxuICB3aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG4gIHdpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG4gIHdpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG4gIHdpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG4gIHdpdGggdHlwZSBieXRlcyA6PSBieXRlc1xuICB3aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuIiwib3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBleGNlcHRpb24gTmFuX29yX2luZiBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICBsZXQgdmVyaWZ5IHQgPVxuICAgICAgbWF0Y2ggQ2FtbC5jbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiAoKVxuICAgICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiByYWlzZSBOYW5fb3JfaW5mXG4gICAgOztcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gRmxvYXQuc2V4cF9vZl90XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gYXMgc2V4cCAtPlxuICAgICAgICBsZXQgdCA9IEZsb2F0LnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICh0cnkgdmVyaWZ5IHQgd2l0aFxuICAgICAgICAgfCBlIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIChJbXBvcnQuRXhuLnRvX3N0cmluZyBlKSBzZXhwKTtcbiAgICAgICAgdFxuICAgICAgfCBzIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIFwiRGVjaW1hbC50X29mX3NleHA6IEV4cGVjdGVkIEF0b20sIGZvdW5kIExpc3RcIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gICAgbGV0IG9mX211bHQgZiA9IGZcbiAgICBsZXQgdG9fbXVsdCB0ID0gdFxuICAgIGxldCBvZl9wZXJjZW50YWdlIGYgPSBmIC8uIDEwMC5cbiAgICBsZXQgdG9fcGVyY2VudGFnZSB0ID0gdCAqLiAxMDAuXG4gICAgbGV0IG9mX2JwIGYgPSBmIC8uIDEwXzAwMC5cbiAgICBsZXQgdG9fYnAgdCA9IHQgKi4gMTBfMDAwLlxuICAgIGxldCBvZl9icF9pbnQgaSA9IG9mX2JwIChGbG9hdC5vZl9pbnQgaSlcbiAgICBsZXQgdG9fYnBfaW50IHQgPSBGbG9hdC50b19pbnQgKHRvX2JwIHQpXG5cbiAgICBsZXQgcm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX3NpZ25pZmljYW50IHAgfnNpZ25pZmljYW50X2RpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9tdWx0IHAgfmRlY2ltYWxfZGlnaXRzID0gRmxvYXQucm91bmRfZGVjaW1hbCBwIH5kZWNpbWFsX2RpZ2l0c1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfcGVyY2VudGFnZSBwIH5kZWNpbWFsX2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9kZWNpbWFsIChwICouIDEwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAuXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX2JwIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwMDAuKSB+ZGVjaW1hbF9kaWdpdHMgLy4gMTAwMDAuXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgRXhwb25lbnQgb2YgaW50XG4gICAgICAgIHwgRXhwb25lbnRfRSBvZiBpbnRcbiAgICAgICAgfCBEZWNpbWFsIG9mIGludFxuICAgICAgICB8IE9jYW1sXG4gICAgICAgIHwgQ29tcGFjdCBvZiBpbnRcbiAgICAgICAgfCBDb21wYWN0X0Ugb2YgaW50XG4gICAgICAgIHwgSGV4IG9mIGludFxuICAgICAgICB8IEhleF9FIG9mIGludFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGV4cG9uZW50IH5wcmVjaXNpb24gPSBFeHBvbmVudCBwcmVjaXNpb25cbiAgICAgIGxldCBleHBvbmVudF9FIH5wcmVjaXNpb24gPSBFeHBvbmVudF9FIHByZWNpc2lvblxuICAgICAgbGV0IGRlY2ltYWwgfnByZWNpc2lvbiA9IERlY2ltYWwgcHJlY2lzaW9uXG4gICAgICBsZXQgb2NhbWwgPSBPY2FtbFxuICAgICAgbGV0IGNvbXBhY3QgfnByZWNpc2lvbiA9IENvbXBhY3QgcHJlY2lzaW9uXG4gICAgICBsZXQgY29tcGFjdF9FIH5wcmVjaXNpb24gPSBDb21wYWN0X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4IH5wcmVjaXNpb24gPSBIZXggcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4X0UgfnByZWNpc2lvbiA9IEhleF9FIHByZWNpc2lvblxuXG4gICAgICBsZXQgZm9ybWF0X2Zsb2F0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFeHBvbmVudCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmVcIiBwcmVjaXNpb25cbiAgICAgICAgfCBFeHBvbmVudF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qRVwiIHByZWNpc2lvblxuICAgICAgICB8IERlY2ltYWwgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipmXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgT2NhbWwgLT4gc3ByaW50ZiBcIiVGXCJcbiAgICAgICAgfCBDb21wYWN0IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZ1wiIHByZWNpc2lvblxuICAgICAgICB8IENvbXBhY3RfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkdcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXggcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipoXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgSGV4X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipIXCIgcHJlY2lzaW9uXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9XG4gICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0IGZsb2F0IGluXG4gICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgdGhlbiBcIjB4XCJcbiAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICgqIFdBUk5JTkcgLSBQTEVBU0UgUkVBRCBCRUZPUkUgRURJVElORyBUSEVTRSBGVU5DVElPTlM6XG5cbiAgICAgICAgIFRoZSBzdHJpbmcgY29udmVydGVycyBpbiBTdGFibGUuVjEgc2hvdWxkIG5ldmVyIGNoYW5nZS4gIElmIHlvdSBhcmUgY2hhbmdpbmcgdGhlXG4gICAgICAgICBzZW1hbnRpY3Mgb2YgYW55dGhpbmcgdGhhdCBhZmZlY3RzIHRoZSBzZXhwIG9yIGJpbi1pbyByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMgb2ZcbiAgICAgICAgIHRoaXMgdHlwZSAodGhpcyBpbmNsdWRlcyB0b19zdHJpbmcgYW5kIG9mX3N0cmluZykgbWFrZSBhIFN0YWJsZS5WMiBhbmQgbWFrZSB5b3VyXG4gICAgICAgICBjaGFuZ2VzIHRoZXJlLiAgVGhhbmtzISAqKVxuICAgICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IHNwcmludGYgXCIlLjZHXCIgZmxvYXQgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVhbGx5X29mX3N0cmluZyBzdHIgZmxvYXRfb2Zfc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwieFwiIHdpdGhcbiAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCIlXCIgd2l0aFxuICAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHIgKi4gMC4wMVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiYnBcIiB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBzdHIgLT4gb2ZfYnAgKGZsb2F0X29mX3N0cmluZyBzdHIpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJQZXJjZW50Lm9mX3N0cmluZzogbXVzdCBlbmQgaW4geCwgJSUsIG9yIGJwOiAlc1wiIHN0ciAoKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgICAgIGxldCBmbG9hdCBzdHIgPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24udF9vZl9zZXhwIChTZXhwLkF0b20gc3RyKSBpblxuICAgICAgICByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzdHIgPSByZWFsbHlfb2Zfc3RyaW5nIHN0ciBGbG9hdC5vZl9zdHJpbmdcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nYWJsZSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGJpbl9pb11cblxuICAgICAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXRcbiAgICAgICAgICAgc2VyaWFsaXphdGlvbiByYXRoZXIgdGhhbiBwZXJjZW50IHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZ1xuICAgICAgICAgICBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlciBzZXJpYWxpemF0aW9uLiAqKVxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgICAgICB8IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgbGV0IG5vbmUgPSBGbG9hdC5uYW5cbiAgICAgIGxldCBpc19ub25lIHQgPSBGbG9hdC5pc19uYW4gdFxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSA9IGlzX3NvbWVcbiAgICAgIGxldCBzb21lID0gRm4uaWRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBGbi5pZFxuICAgICAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfc29tZSB0IHRoZW4gU29tZSAodW5jaGVja2VkX3ZhbHVlIHQpIGVsc2UgTm9uZVxuICAgICAgbGV0IGFwcGx5X3dpdGhfbm9uZV9hc19uYW4gPSAoICouIClcbiAgICAgIGxldCBvZl9tdWx0X3dpdGhfbmFuX2FzX25vbmUgPSBGbi5pZFxuICAgICAgbGV0IHRvX211bHRfd2l0aF9ub25lX2FzX25hbiA9IEZuLmlkXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJQZXJjZW50Lk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBpZiBpc19zb21lIHQgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdCBlbHNlIGRlZmF1bHRcbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjEuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMS50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYxLnQgT3B0aW9uLnRdXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZS5PcHRpb25cbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBpc196ZXJvIHQgPSB0ID0gMC5cbmxldCBhcHBseSB0IGYgPSB0ICouIGZcbmxldCBzY2FsZSB0IGYgPSB0ICouIGZcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBGbG9hdFxuXG4gIGxldCAoIC8vICkgeCB5ID0gb2ZfbXVsdCB4IC8uIG9mX211bHQgeVxuZW5kIDpcbnNpZ1xuICB2YWwgemVybyA6IHRcbiAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLy8gKSA6IHQgLT4gdCAtPiBmbG9hdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIGlzX25hbiA6IHQgLT4gYm9vbFxuICB2YWwgaXNfaW5mIDogdCAtPiBib29sXG4gIHZhbCBzaWduX2V4biA6IHQgLT4gU2lnbi50XG5cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBTdGFibGUuVjFcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSA9IEZsb2F0LnZhbGlkYXRlX29yZGluYXJ5XG5sZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHMgPSBTdHJpbmdhYmxlLm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzXG5sZXQgdF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIHNleHAgPSBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgKFNleHAudG9fc3RyaW5nIHNleHApXG5cbm1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBmb3JtYXQgeCBmb3JtYXQgPSBGb3JtYXQuZm9ybWF0X2Zsb2F0IGZvcm1hdCAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gIGxldCB0b19zdHJpbmcgeCA9IHNwcmludGYgXCIlLjZHJSVcIiAoeCAqIDEwMC4pXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IHJhbmRvbWl6ZSBzcGFuIH5wZXJjZW50IH5zY2FsZSA9XG4gIGxldCBtdWx0ID0gUGVyY2VudC50b19tdWx0IHBlcmNlbnQgaW5cbiAgaWYgRmxvYXQuKCA8ICkgbXVsdCAwLiB8fCBGbG9hdC4oID4gKSBtdWx0IDEuXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJTcGFuLnJhbmRvbWl6ZTogcGVyY2VudCBpcyBvdXQgb2YgcmFuZ2UgWzB4LCAxeF1cIiAocGVyY2VudCA6IFBlcmNlbnQudCldO1xuICBsZXQgZmFjdG9yID0gUmFuZG9tLmZsb2F0X3JhbmdlICgxLiAtLiBtdWx0KSAoRmxvYXQub25lX3VscCBgVXAgKDEuICsuIG11bHQpKSBpblxuICBzY2FsZSBzcGFuIGZhY3RvclxuOztcblxubGV0IGZvcm1hdF9kZWNpbWFsIG4gdGVudGhzIHVuaXRzID1cbiAgYXNzZXJ0ICh0ZW50aHMgPj0gMCAmJiB0ZW50aHMgPCAxMCk7XG4gIGlmIG4gPCAxMCAmJiB0ZW50aHMgPD4gMFxuICB0aGVuIHNwcmludGYgXCIlZC4lZCVzXCIgbiB0ZW50aHMgdW5pdHNcbiAgZWxzZSBzcHJpbnRmIFwiJWQlc1wiIG4gdW5pdHNcbjs7XG5cbmxldCBzaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyA9XG4gIGxldCBzID1cbiAgICBpZiBociA+PSAyNFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgKGhyIC8gMjQpIChJbnQub2ZfZmxvYXQgKEZsb2F0Lm9mX2ludCAoaHIgJSAyNCkgLy4gMi40KSkgXCJkXCJcbiAgICBlbHNlIGlmIGhyID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgaHIgKG1pbiAvIDYpIFwiaFwiXG4gICAgZWxzZSBpZiBtaW4gPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBtaW4gKHNlYyAvIDYpIFwibVwiXG4gICAgZWxzZSBpZiBzZWMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBzZWMgKG1zIC8gMTAwKSBcInNcIlxuICAgIGVsc2UgaWYgbXMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBtcyAodXMgLyAxMDApIFwibXNcIlxuICAgIGVsc2UgaWYgdXMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCB1cyAobnMgLyAxMDApIFwidXNcIlxuICAgIGVsc2Ugc3ByaW50ZiBcIiVpbnNcIiBuc1xuICBpblxuICBtYXRjaCAoc2lnbiA6IFNpZ24udCkgd2l0aFxuICB8IE5lZyAtPiBcIi1cIiBeIHNcbiAgfCBaZXJvIHwgUG9zIC0+IHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFBhcnRzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHNpZ24gOiBTaWduLnRcbiAgICAgICAgOyBociA6IGludFxuICAgICAgICA7IG1pbiA6IGludFxuICAgICAgICA7IHNlYyA6IGludFxuICAgICAgICA7IG1zIDogaW50XG4gICAgICAgIDsgdXMgOiBpbnRcbiAgICAgICAgOyBucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBMaWtlX2FfZmxvYXQgPSBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgemVybyA6IHRcbiAgICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiB0XG4gICAgICB2YWwgYWJzIDogdCAtPiB0XG4gICAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgICB2YWwgc2NhbGUgOiB0IC0+IGZsb2F0IC0+IHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaF1cblxuICAgICAgaW5jbHVkZSBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgbW9kdWxlIENvbnN0YW50IDogc2lnXG4gICAgICAgIHZhbCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG5hbm9zZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaWNyb3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kIDogdFxuICAgICAgICB2YWwgc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWludXRlIDogdFxuICAgICAgICB2YWwgaG91ciA6IHRcbiAgICAgICAgdmFsIGRheSA6IHRcbiAgICAgIGVuZFxuXG4gICAgICB2YWwgdG9fcGFydHMgOiB0IC0+IFBhcnRzLnRcbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgICB2YWwgcHJldiA6IHQgLT4gdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgbGV0IG5leHQgdCA9IEZsb2F0Lm9uZV91bHAgYFVwIHRcbiAgICAgIGxldCBwcmV2IHQgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHRcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuU3BhbiB2ZXJzaW9uIHRvIHN0YWJsZS5tbCAqKVxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cbiAgICAgIGVuZCA6XG4gICAgICAgIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgICAoKiBkdWUgdG8gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIGZsb2F0IHdlIGNhbid0IGV4cGVjdCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZFxuICAgICAgICAgcHJlY2lzaW9uICopXG4gICAgICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS02XG4gICAgICAgIGVuZClcblxuICAgICAgKCogdGhpcyBwcmV2ZW50cyBhbnkgd29ycnkgYWJvdXQgaGF2aW5nIHRoZXNlIHZlcnkgY29tbW9uIG5hbWVzIHJlZGVmaW5lZCBiZWxvdyBhbmRcbiAgICAgICAgIG1ha2VzIHRoZWlyIHVzYWdlIHdpdGhpbiB0aGlzIG1vZHVsZSBzYWZlci4gIENvbnN0YW50IGlzIGluY2x1ZGVkIGF0IHRoZSB2ZXJ5XG4gICAgICAgICBib3R0b20gdG8gcmUtZXhwb3J0IHRoZXNlIGNvbnN0YW50cyBpbiBhIG1vcmUgY29udmVuaWVudCB3YXkgKilcbiAgICAgIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgICAgICBsZXQgbmFub3NlY29uZHNfcGVyX3NlY29uZCA9IDFFOVxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTZcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kID0gMUUzXG5cbiAgICAgICAgKCogc3BhbnMgYXJlIHN0b3JlZCBhcyBhIGZsb2F0IGluIHNlY29uZHMgKilcbiAgICAgICAgbGV0IG5hbm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWlsbGlzZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBzZWNvbmQgPSBvZl9mbG9hdCAxLlxuICAgICAgICBsZXQgbWludXRlID0gb2ZfZmxvYXQgNjAuXG4gICAgICAgIGxldCBob3VyID0gb2ZfZmxvYXQgKDYwLiAqLiA2MC4pXG4gICAgICAgIGxldCBkYXkgPSBvZl9mbG9hdCAoMjQuICouIDYwLiAqLiA2MC4pXG4gICAgICBlbmRcblxuXG4gICAgICBsZXQgdG9fcGFydHMgdCA6IFBhcnRzLnQgPVxuICAgICAgICBsZXQgc2lnbiA9IEZsb2F0LnNpZ25fZXhuIHQgaW5cbiAgICAgICAgbGV0IHQgPSBhYnMgdCBpblxuICAgICAgICBsZXQgaW50ZWdyYWwgPSBGbG9hdC5yb3VuZF9kb3duIHQgaW5cbiAgICAgICAgbGV0IGZyYWN0aW9uYWwgPSB0IC0uIGludGVncmFsIGluXG4gICAgICAgIGxldCBzZWNvbmRzID0gRmxvYXQuaXJvdW5kX2Rvd25fZXhuIGludGVncmFsIGluXG4gICAgICAgIGxldCBuYW5vc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4biAoZnJhY3Rpb25hbCAqLiAxRTkpIGluXG4gICAgICAgIGxldCBzZWNvbmRzLCBuYW5vc2Vjb25kcyA9XG4gICAgICAgICAgaWYgSW50LmVxdWFsIG5hbm9zZWNvbmRzIDFfMDAwXzAwMF8wMDBcbiAgICAgICAgICB0aGVuIEludC5zdWNjIHNlY29uZHMsIDBcbiAgICAgICAgICBlbHNlIHNlY29uZHMsIG5hbm9zZWNvbmRzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzZWMgPSBzZWNvbmRzIG1vZCA2MCBpblxuICAgICAgICBsZXQgbWludXRlcyA9IHNlY29uZHMgLyA2MCBpblxuICAgICAgICBsZXQgbWluID0gbWludXRlcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IGhyID0gbWludXRlcyAvIDYwIGluXG4gICAgICAgIGxldCBucyA9IG5hbm9zZWNvbmRzIG1vZCAxMDAwIGluXG4gICAgICAgIGxldCBtaWNyb3NlY29uZHMgPSBuYW5vc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IHVzID0gbWljcm9zZWNvbmRzIG1vZCAxMDAwIGluXG4gICAgICAgIGxldCBtaWxsaXNlY29uZHMgPSBtaWNyb3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCBtcyA9IG1pbGxpc2Vjb25kcyBpblxuICAgICAgICB7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0ICggLyApIHQgZiA9IFQub2ZfZmxvYXQgKCh0IDogVC50IDo+IGZsb2F0KSAvLiBmKVxuICAgIGxldCAoIC8vICkgKGYgOiBULnQpICh0IDogVC50KSA9IChmIDo+IGZsb2F0KSAvLiAodCA6PiBmbG9hdClcblxuICAgICgqIE11bHRpcGx5aW5nIGJ5IDFFMyBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gZGl2aXNpb24gYnkgMUUtMyAqKVxuICAgIGxldCB0b19ucyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX3VzICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX21zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX3NlYyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdClcbiAgICBsZXQgdG9fbWluIHggPSB4IC8vIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IHRvX2hyIHggPSB4IC8vIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCB0b19kYXkgeCA9IHggLy8gVC5Db25zdGFudC5kYXlcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB4ID0gRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG4gKHRvX3NlYyB4KVxuICAgIGxldCAoICoqICkgZiAodCA6IFQudCkgPSBULm9mX2Zsb2F0IChmICouICh0IDo+IGZsb2F0KSlcblxuICAgICgqIERpdmlzaW9uIGJ5IDFFMyBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gbXVsdGlwbHlpbmcgYnkgMUUtMyAqKVxuICAgIGxldCBvZl9ucyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX3VzIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX21zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX3NlYyB4ID0gVC5vZl9mbG9hdCB4XG4gICAgbGV0IG9mX2ludF9zZWMgeCA9IG9mX3NlYyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludDMyX3NlY29uZHMgc2VjID0gb2Zfc2VjIChJbnQzMi50b19mbG9hdCBzZWMpXG5cbiAgICAoKiBOb3RlIHRoYXQgW0ludDYzLnRvX2Zsb2F0XSBjYW4gbG9zZSBwcmVjaXNpb24sIGJ1dCBvbmx5IG9uIGlucHV0cyBsYXJnZSBlbm91Z2ggdGhhdFxuICAgICAgIFtvZl9zZWNdIGluIGVpdGhlciB0aGUgVGltZV9ucyBvciBUaW1lX2Zsb2F0IGNhc2Ugd291bGQgbG9zZSBwcmVjaXNpb24gKG9yIGp1c3QgYmVcbiAgICAgICBwbGFpbiBvdXQgb2YgYm91bmRzKSBhbnl3YXkuICopXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgc2VjID0gb2Zfc2VjIChJbnQ2My50b19mbG9hdCBzZWMpXG4gICAgbGV0IG9mX21pbiB4ID0geCAqKiBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCBvZl9ociB4ID0geCAqKiBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgb2ZfZGF5IHggPSB4ICoqIFQuQ29uc3RhbnQuZGF5XG5cbiAgICBsZXQgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSB0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0XG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdFxuICAgICAgfCBTZWNvbmQgLT4gdG9fc2VjIHRcbiAgICAgIHwgTWludXRlIC0+IHRvX21pbiB0XG4gICAgICB8IEhvdXIgLT4gdG9faHIgdFxuICAgICAgfCBEYXkgLT4gdG9fZGF5IHRcbiAgICA7O1xuXG4gICAgbGV0IHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gb2ZfbnMgZmxvYXRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gb2ZfdXMgZmxvYXRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gb2ZfbXMgZmxvYXRcbiAgICAgIHwgU2Vjb25kIC0+IG9mX3NlYyBmbG9hdFxuICAgICAgfCBNaW51dGUgLT4gb2ZfbWluIGZsb2F0XG4gICAgICB8IEhvdXIgLT4gb2ZfaHIgZmxvYXRcbiAgICAgIHwgRGF5IC0+IG9mX2RheSBmbG9hdFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhzaWduID0gU2lnbi5Qb3MpXG4gICAgICAgICAgPyhkYXkgPSAwKVxuICAgICAgICAgID8oaHIgPSAwKVxuICAgICAgICAgID8obWluID0gMClcbiAgICAgICAgICA/KHNlYyA9IDApXG4gICAgICAgICAgPyhtcyA9IDApXG4gICAgICAgICAgPyh1cyA9IDApXG4gICAgICAgICAgPyhucyA9IDApXG4gICAgICAgICAgKClcbiAgICAgID1cbiAgICAgIGxldCAoICsgKSA9IFQuKCArICkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgb2ZfZGF5IChGbG9hdC5vZl9pbnQgZGF5KVxuICAgICAgICArIG9mX2hyIChGbG9hdC5vZl9pbnQgaHIpXG4gICAgICAgICsgb2ZfbWluIChGbG9hdC5vZl9pbnQgbWluKVxuICAgICAgICArIG9mX3NlYyAoRmxvYXQub2ZfaW50IHNlYylcbiAgICAgICAgKyBvZl9tcyAoRmxvYXQub2ZfaW50IG1zKVxuICAgICAgICArIG9mX3VzIChGbG9hdC5vZl9pbnQgdXMpXG4gICAgICAgICsgb2ZfbnMgKEZsb2F0Lm9mX2ludCBucylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgTmVnIC0+IFQuKCAtICkgVC56ZXJvIHRcbiAgICAgIHwgUG9zIHwgWmVybyAtPiB0XG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29uc3RhbnRcblxuICAgIGxldCByYW5kb21pemUgdCB+cGVyY2VudCA9IFNwYW5faGVscGVycy5yYW5kb21pemUgdCB+cGVyY2VudCB+c2NhbGVcblxuICAgIGxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gICAgICBsZXQgKHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gOiBQYXJ0cy50KSA9IHRvX3BhcnRzIHQgaW5cbiAgICAgIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgbGV0IG9mX3N0cmluZ192MV92MiAocyA6IHN0cmluZykgfmlzX3YyID1cbiAgICAgIHRyeVxuICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwiZW1wdHkgc3RyaW5nXCJcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGZsb2F0IG4gPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmRyb3Bfc3VmZml4IHMgbiB3aXRoXG4gICAgICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJubyBudW1iZXIgZ2l2ZW5cIlxuICAgICAgICAgICAgfCBzIC0+XG4gICAgICAgICAgICAgIGxldCB2ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICAgICAgVmFsaWRhdGUubWF5YmVfcmFpc2UgKEZsb2F0LnZhbGlkYXRlX29yZGluYXJ5IHYpO1xuICAgICAgICAgICAgICB2XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgKG1hdGNoIHMuW0ludC4oIC0gKSBsZW4gMV0gd2l0aFxuICAgICAgICAgICB8ICdzJyAtPlxuICAgICAgICAgICAgIGlmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICdtJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAndSdcbiAgICAgICAgICAgICB0aGVuIG9mX3VzIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ24nXG4gICAgICAgICAgICAgdGhlbiBvZl9ucyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIFQub2ZfZmxvYXQgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ20nIC0+IG9mX21pbiAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnaCcgLT4gb2ZfaHIgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2QnIC0+IG9mX2RheSAoZmxvYXQgMSlcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgaWYgaXNfdjJcbiAgICAgICAgICAgICB0aGVuIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBucywgdXMsIG1zLCBzLCBtLCBoLCBvciBkLlwiXG4gICAgICAgICAgICAgZWxzZSBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbXMsIHMsIG0sIGgsIG9yIGQuXCIpXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBpbnZhbGlkX2FyZ2YgXCJTcGFuLm9mX3N0cmluZyBjb3VsZCBub3QgcGFyc2UgJyVzJzogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwID0gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHBcblxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHAgb2YgU2V4cC50ICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgb2YgU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZ192MV92MiB4IH5pc192MiB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biAoVF9vZl9zZXhwIChzZXhwLCBleG4pKSBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yX2V4biAoVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBzZXhwKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzdHJpbmcgfmlzX3YyIHN1ZmZpeCBmbG9hdCA9XG4gICAgICBpZiBpc192MlxuICAgICAgKCogVGhpcyBpcyB0aGUgc2FtZSBmbG9hdC10by1zdHJpbmcgY29udmVyc2lvbiB1c2VkIGluIFtGbG9hdC5zZXhwX29mX3RdLiAgSXQncyBsaWtlXG4gICAgICAgICBbRmxvYXQudG9fc3RyaW5nXSwgYnV0IG1heSBsZWF2ZSBvZmYgdHJhaWxpbmcgcGVyaW9kLiAqKVxuICAgICAgdGhlbiAhU2V4cGxpYi5Db252LmRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IGZsb2F0IF4gc3VmZml4XG4gICAgICBlbHNlIHNwcmludGYgXCIlZyVzXCIgZmxvYXQgc3VmZml4XG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICAoKiBJJ2QgbGlrZSBpdCB0byBiZSB0aGUgY2FzZSB0aGF0IHlvdSBjb3VsZCBuZXZlciBjb25zdHJ1Y3QgYW4gaW5maW5pdGUgc3BhbiwgYnV0IElcbiAgICAgICBjYW4ndCB0aGluayBvZiBhIGdvb2Qgd2F5IHRvIGVuZm9yY2UgaXQuICBTbyB0aGlzIHRvX3N0cmluZyBmdW5jdGlvbiBjYW4gcHJvZHVjZVxuICAgICAgIHN0cmluZ3MgdGhhdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZXkgYXJlIGZlZCB0byBvZl9zdHJpbmcgKilcbiAgICBsZXQgdG9fc3RyaW5nX3YxX3YyICh0IDogVC50KSB+aXNfdjIgPVxuICAgICAgKCogdGhpcyBpcyBhIHNhZCBicm9rZW4gYWJzdHJhY3Rpb24uLi4gKilcbiAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSAodCA6PiBmbG9hdCkgd2l0aFxuICAgICAgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBcIjBzXCJcbiAgICAgIHwgQy5JbmZpbml0ZSAtPiBpZiBULiggPiApIHQgVC56ZXJvIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gICAgICB8IEMuTmFuIC0+IFwibmFuXCJcbiAgICAgIHwgQy5Ob3JtYWwgLT5cbiAgICAgICAgbGV0ICggPCApID0gVC4oIDwgKSBpblxuICAgICAgICBsZXQgYWJzX3QgPSBULm9mX2Zsb2F0IChGbG9hdC5hYnMgKHQgOj4gZmxvYXQpKSBpblxuICAgICAgICBpZiBpc192MiAmJiBhYnNfdCA8IFQuQ29uc3RhbnQubWljcm9zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibnNcIiAodG9fbnMgdClcbiAgICAgICAgZWxzZSBpZiBpc192MiAmJiBhYnNfdCA8IFQuQ29uc3RhbnQubWlsbGlzZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwidXNcIiAodG9fdXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm1zXCIgKHRvX21zIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbnV0ZVxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJzXCIgKHRvX3NlYyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5ob3VyXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm1cIiAodG9fbWluIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmRheVxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJoXCIgKHRvX2hyIHQpXG4gICAgICAgIGVsc2Ugc3RyaW5nIH5pc192MiBcImRcIiAodG9fZGF5IHQpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjIgPSBTZXhwLkF0b20gKHRvX3N0cmluZ192MV92MiB0IH5pc192MilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6ZmFsc2VcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6ZmFsc2VcbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192Mjp0cnVlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOnRydWVcbiAgZW5kXG5cbiAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRvX3VuaXRfb2ZfdGltZSB0IDogVW5pdF9vZl90aW1lLnQgPVxuICAgICAgbGV0IG9wZW4gVCBpblxuICAgICAgbGV0IG9wZW4gQ29uc3RhbnQgaW5cbiAgICAgIGxldCBhYnNfdCA9IFQuYWJzIHQgaW5cbiAgICAgIGlmIGFic190ID49IGRheVxuICAgICAgdGhlbiBEYXlcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICAgICAgdGhlbiBIb3VyXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbnV0ZVxuICAgICAgdGhlbiBNaW51dGVcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gICAgICB0aGVuIFNlY29uZFxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICAgICAgdGhlbiBNaWxsaXNlY29uZFxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaWNyb3NlY29uZFxuICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgZWxzZSBOYW5vc2Vjb25kXG4gICAgOztcblxuICAgIGxldCBvZl91bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCAtPiBULnQgPVxuICAgICAgbGV0IG9wZW4gVC5Db25zdGFudCBpblxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmFub3NlY29uZCAtPiBuYW5vc2Vjb25kXG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gICAgICB8IFNlY29uZCAtPiBzZWNvbmRcbiAgICAgIHwgTWludXRlIC0+IG1pbnV0ZVxuICAgICAgfCBIb3VyIC0+IGhvdXJcbiAgICAgIHwgRGF5IC0+IGRheVxuICAgIDs7XG5cbiAgICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gXCJuc1wiXG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IFwidXNcIlxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBcIm1zXCJcbiAgICAgIHwgU2Vjb25kIC0+IFwic1wiXG4gICAgICB8IE1pbnV0ZSAtPiBcIm1cIlxuICAgICAgfCBIb3VyIC0+IFwiaFwiXG4gICAgICB8IERheSAtPiBcImRcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgT2Zfc3RyaW5nID0gc3RydWN0XG4gICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICAgICAgICBsZXQgbWVzc2FnZSA9IFwiVGltZS5TcGFuLm9mX3N0cmluZzogXCIgXiByZWFzb24gaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgbWVzc2FnZSBzdHJpbmddXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHVuaXRfb2ZfdGltZV9saXN0ID1cbiAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lX2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaW52YWxpZCBzcGFuIHBhcnQgc3VmZml4XCJcbiAgICAgICAgfCB1bml0X29mX3RpbWUgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGlmIFN0cmluZy5pc19zdWJzdHJpbmdfYXQgc3RyaW5nIH5wb3M6aW5kZXggfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICAgICB0aGVuIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGVsc2UgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggcmVzdFxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4ID1cbiAgICAgICAgKCogV2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IFwibXNcIiBjb21lcyBiZWZvcmUgXCJtXCIgaW4gW1VuaXRfb2ZfdGltZS5hbGxdIHRvIGdldCBhXG4gICAgICAgICAgIGNvcnJlY3QgbWF0Y2ggb24gbWlsbGlzZWNvbmQgdGltZXN0YW1wcy4gVGhpcyBhc3N1bXB0aW9uIGlzIGRlbW9uc3RyYXRlZCBpbiB0aGVcbiAgICAgICAgICAgZXhwZWN0IHRlc3QgYmVsb3cuICopXG4gICAgICAgIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IFVuaXRfb2ZfdGltZS5hbGxcbiAgICAgIDs7XG5cbiAgICAgICgqIFdlIHZhbGlkYXRlIG1hZ25pdHVkZSBzdHJpbmdzIHNvIHRoYXQgd2Uga25vdyB3aGVyZSB0aGUgdW5pdC1vZi10aW1lIHN1ZmZpeFxuICAgICAgICAgYmVnaW5zLCBhbmQgc28gdGhhdCBvbmx5IHNlbnNpYmxlIHN0cmluZ3MgYXJlIGFsbG93ZWQuIFdlIGRvIG5vdCB3YW50IHRvIGJlIGFzXG4gICAgICAgICBwZXJtaXNzaXZlIGFzIFtGbG9hdC5vZl9zdHJpbmddOyBmb3IgZXhhbXBsZSwgaGV4YWRlY2ltYWwgc3BhbiBtYWduaXR1ZGVzIGFyZSBub3RcbiAgICAgICAgIGFsbG93ZWQuIEFmdGVyIHZhbGlkYXRpb24sIHdlIHN0aWxsIHVzZSBbRmxvYXQub2Zfc3RyaW5nXSB0byBwcm9kdWNlIHRoZSBhY3R1YWxcbiAgICAgICAgIHZhbHVlLiAqKVxuICAgICAgbW9kdWxlIEZsb2F0X3BhcnNlciA9IHN0cnVjdFxuICAgICAgICAoKiBbSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XSBpbmNsdWRlcyBoYXZpbmcgYSBkaWdpdCBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgIHR5cGUgc3RhdGUgPVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcblxuICAgICAgICB0eXBlIHRva2VuID1cbiAgICAgICAgICB8IERpZ2l0XG4gICAgICAgICAgfCBQb2ludFxuICAgICAgICAgIHwgVW5kZXJcbiAgICAgICAgICB8IFNpZ25cbiAgICAgICAgICB8IEV4cHRcblxuICAgICAgICBsZXQgc3RhdGVfaXNfZmluYWwgPSBmdW5jdGlvblxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCAtPiB0cnVlXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0IC0+IGZhbHNlXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRva2VuX29mX2NoYXIgPSBmdW5jdGlvblxuICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiBTb21lIERpZ2l0XG4gICAgICAgICAgfCAnLicgLT4gU29tZSBQb2ludFxuICAgICAgICAgIHwgJ18nIC0+IFNvbWUgVW5kZXJcbiAgICAgICAgICB8ICctJyB8ICcrJyAtPiBTb21lIFNpZ25cbiAgICAgICAgICB8ICdFJyB8ICdlJyAtPiBTb21lIEV4cHRcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaW52YWxpZCBzcGFuIHBhcnQgbWFnbml0dWRlXCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVjIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZSA9XG4gICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICBpZiBpbmRleCA9IGxlblxuICAgICAgICAgIHRoZW4gaWYgc3RhdGVfaXNfZmluYWwgc3RhdGUgdGhlbiBpbmRleCBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggdG9rZW5fb2ZfY2hhciBzdHJpbmcuW2luZGV4XSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaWYgc3RhdGVfaXNfZmluYWwgc3RhdGUgdGhlbiBpbmRleCBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgfCBTb21lIHRva2VuIC0+XG4gICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggc3RhdGUsIHRva2VuIHdpdGhcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFBvaW50IC0+IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBTaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIEV4cHQgLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFBvaW50IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBFeHB0IC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBFeHB0IC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBQb2ludCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgU2lnbiAtPlxuICAgICAgICAgICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgU2lnbiAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIEV4cHQgLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4OihpbmRleCArIDEpIH5sZW4gfnN0YXRlKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiA9XG4gICAgICAgICAgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlOkluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCByZWMgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGUgfmluZGV4IH5sZW4gPVxuICAgICAgICBpZiBJbnQuZXF1YWwgaW5kZXggbGVuXG4gICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzdWZmaXhfaW5kZXggPSBGbG9hdF9wYXJzZXIuZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXg6c3VmZml4X2luZGV4IGluXG4gICAgICAgICAgbGV0IHVudGlsX2luZGV4ID1cbiAgICAgICAgICAgIEludC4oICsgKSBzdWZmaXhfaW5kZXggKFN0cmluZy5sZW5ndGggKHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzdHJpbmcgfnBvczppbmRleCB+bGVuOihJbnQuKCAtICkgc3VmZml4X2luZGV4IGluZGV4KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0ID0gRmxvYXQub2Zfc3RyaW5nIGZsb2F0X3N0cmluZyBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBtYWduaXR1ZGUgKyBzY2FsZV9ieV91bml0X29mX3RpbWUgZmxvYXQgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGUgfmluZGV4OnVudGlsX2luZGV4IH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiA9XG4gICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlOlQuemVybyB+aW5kZXggfmxlblxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICBtYXRjaCBzdHJpbmcgd2l0aFxuICAgICAgICB8IFwiTkFOc1wiIC0+IG9mX3NlYyBGbG9hdC5uYW5cbiAgICAgICAgfCBcIi1JTkZzXCIgLT4gb2Zfc2VjIEZsb2F0Lm5lZ19pbmZpbml0eVxuICAgICAgICB8IFwiSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5pbmZpbml0eVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBuZWdhdGl2ZSwgaW5kZXggPVxuICAgICAgICAgICAgbWF0Y2ggc3RyaW5nLlswXSB3aXRoXG4gICAgICAgICAgICB8ICctJyAtPiB0cnVlLCAxXG4gICAgICAgICAgICB8ICcrJyAtPiBmYWxzZSwgMVxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlLCAwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBpbmRleCA+PSBsZW4gdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gaW5cbiAgICAgICAgICBpZiBuZWdhdGl2ZSB0aGVuIFQubmVnIG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9zdHJpbmcgPSBPZl9zdHJpbmcub2Zfc3RyaW5nXG5cbiAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICBsZXQgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBmbG9hdCA9XG4gICAgICAgIGxldCBzdHJpbmcgPSBGbG9hdC50b19zdHJpbmcgZmxvYXQgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFwiLlwiIGluXG4gICAgICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgdGhlbiBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIHN0cmluZyB+c3VmZml4XG4gICAgICAgIGVsc2Ugc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICAoKiBBcyB3ZSBidWlsZCB1cCBhIHN0cmluZywgd2Uga2VlcCBhIHJ1bm5pbmcgc3VtIG9mIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgcmVhZFxuICAgICAgICAgYmFjayBpbiwgc28gdGhhdCB3ZSBjYW4gY29tcHV0ZSB0aGUgcmVtYWluZGVyIHRoYXQgbmVlZHMgdG8gYmUgZ2VuZXJhdGVkLiAqKVxuICAgICAgbGV0IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlID1cbiAgICAgICAgc3VtX3QgKyBzY2FsZV9ieV91bml0X29mX3RpbWUgbWFnbml0dWRlIHVuaXRfb2ZfdGltZVxuICAgICAgOztcblxuICAgICAgKCogRm9yIHNvbWUgdW5pdHMgKHZlcnkgbGFyZ2UgbnVtYmVycyBvZiBkYXlzLCBvciBzZWNvbmRzIGFuZCBzbWFsbGVyKSB3ZSBqdXN0XG4gICAgICAgICByZW5kZXIgYSBmbG9hdCBkaXJlY3RseSwgd2l0aCBhIGZpeCBmb3Igcm91bmRvZmYgZXJyb3IuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWUgPVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSBhYnNfdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBpZiBzdW1fdCA9IGFic190XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgICBpZiBzdW1fdCA8IGFic190XG4gICAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgICAgZWxzZSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIChwcmV2IGFic190KSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICAgbGV0IGZpeHVwX21hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgcmVtX3QgZml4dXBfdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgKCogW3JlbV90XSBpcyBhdCBVTFAgc2l6ZSBvZiBbYWJzX3RdLCBpdCBuZWVkcyBqdXN0IG9uZSBiaXQgb2YgcHJlY2lzaW9uICopXG4gICAgICAgICAgXiBzcHJpbnRmIFwiJS4xZ1wiIGZpeHVwX21hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSBmaXh1cF91bml0X29mX3RpbWUpXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igbm9uLWRlY2ltYWwgdW5pdHMgKG1pbnV0ZXMgYW5kIGdyZWF0ZXIpLCB3ZSByZW5kZXIgYW4gaW50ZWdlciBtYWduaXR1ZGUsIGFuZFxuICAgICAgICAgcmV0dXJuIHRoYXQgd2l0aCB0aGUgcnVubmluZyBzdW0gc28gdGhlIHJlbWFpbmRlciBjYW4gYmUgcmVuZGVyZWQgYXQgYSBzbWFsbGVyXG4gICAgICAgICB1bml0LiAqKVxuICAgICAgbGV0IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB1bml0X29mX3RpbWUgfmFic190IH5zdW1fdCA9XG4gICAgICAgIGxldCB1bml0X3NwYW4gPSBvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgKCogV2UgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBtdWx0aXBsZSBvZiBbdW5pdF9vZl90aW1lXSB0aGF0IG5lZWRzIHRvIGJlXG4gICAgICAgICAgIGFkZGVkIHRvIFtzdW1fdF0uIER1ZSB0byByb3VuZGluZywgdGhpcyBjYW4gYmUgb2ZmIGJ5IG9uZSAod2UndmUgbmV2ZXIgc2VlbiBhXG4gICAgICAgICAgIGNhc2Ugb2ZmIGJ5IHR3byBvciBtb3JlKSwgc28gd2UgcmUtY29tcHV0ZSB0aGUgcmVtYWluZGVyIGFuZCBjb3JyZWN0IGlmXG4gICAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IEZsb2F0LnJvdW5kX2Rvd24gKHJlbV90IC8vIHVuaXRfc3BhbikgaW5cbiAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGxldCBuZXdfcmVtX3QgPSBhYnNfdCAtIG5ld19zdW1fdCBpblxuICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICBpZiBuZXdfcmVtX3QgPSB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICBlbHNlIGlmIG5ld19yZW1fdCA8IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZSAtLiAxLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHRfbWFnbml0dWRlID0gbWFnbml0dWRlICsuIDEuIGluXG4gICAgICAgICAgICBsZXQgbmV4dF9zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlOm5leHRfbWFnbml0dWRlIGluXG4gICAgICAgICAgICBsZXQgbmV4dF9yZW1fdCA9IGFic190IC0gbmV4dF9zdW1fdCBpblxuICAgICAgICAgICAgaWYgbmV4dF9yZW1fdCA8IHplcm8gdGhlbiBtYWduaXR1ZGUgZWxzZSBuZXh0X21hZ25pdHVkZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA8PSApIG1hZ25pdHVkZSAwLlxuICAgICAgICB0aGVuIFwiXCIsIHN1bV90XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCBzdHJpbmcgPVxuICAgICAgICAgICAgSW50NjMudG9fc3RyaW5nIChJbnQ2My5vZl9mbG9hdCBtYWduaXR1ZGUpXG4gICAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzdHJpbmcsIG5ld19zdW1fdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSB0ID0gRmxvYXQubG9nMTAgKHRvX3NlYyB0KVxuXG4gICAgICAoKiBUaGUgZmluYWwgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgbmVlZHMgdG8gYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBkaWdpdHMgdG9cbiAgICAgICAgIHJvdW5kLXRyaXAgdGhlIHdob2xlIHNwYW4gKHdoaWNoIGlzIG1pbnV0ZXMgb3IgZ3JlYXRlcik7IHRoaXMgY2FuIGJlXG4gICAgICAgICBzaWduaWZpY2FudGx5IGZld2VyIGRpZ2l0cyB0aGFuIHdvdWxkIGJlIG5lZWRlZCBmb3IgdGhlIHNlY29uZHMtb3Itc21hbGxlclxuICAgICAgICAgcmVtYWluZGVyIGl0c2VsZi4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfnN1bV90IH5hYnNfdCA9XG4gICAgICAgIGlmIHN1bV90ID49IGFic190XG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSByZW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X3NwYW4gPSBvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IHJlbV90IC8vIHVuaXRfc3BhbiBpblxuICAgICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCBuZXdfcmVtX3QgPSBhYnNfdCAtIG5ld19zdW1fdCBpblxuICAgICAgICAgIGlmIGFicyByZW1fdCA8PSBhYnMgbmV3X3JlbV90XG4gICAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpcnN0X2RpZ2l0ID1cbiAgICAgICAgICAgICAgRmxvYXQuaXJvdW5kX2Rvd25fZXhuIChkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSByZW1fdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaGFsZl91bHAgPSAoYWJzX3QgLSBwcmV2IGFic190KSAvIDIuIGluXG4gICAgICAgICAgICBsZXQgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpZ2l0ID1cbiAgICAgICAgICAgICAgKCogVGhpcyB3b3JrcyBvdXQgdG8gcm91bmRpbmcgZG93biwgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGV4YWN0IGludGVnZXJzLFxuICAgICAgICAgICAgICAgICB3aGljaCBhcmUgZGVjcmVtZW50ZWQuIFRoaXMgbWFrZXMgc3VyZSB3ZSBhbHdheXMgc3RvcCBhdCBhIGRpZ2l0IHdpdGhcbiAgICAgICAgICAgICAgICAgc3RyaWN0bHkgbW9yZSBwcmVjaXNpb24gdGhhbiBoYWxmIHRoZSBVTFAuICopXG4gICAgICAgICAgICAgIEludC5wcmVkIChGbG9hdC5pcm91bmRfdXBfZXhuIChkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSBoYWxmX3VscCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICAxICsgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpcnN0X2RpZ2l0IC0gb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpZ2l0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgICBzcHJpbnRmIFwiJS4qZ1wiIG51bWJlcl9vZl9kaWdpdHMgbWFnbml0dWRlIF4gc3VmZml4KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFRoaXMgaGVscGVyIGF2b2lkcyB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9uLCBiZWNhdXNlIGZvciBvdXIgdXNlIGJlbG93LCBpdCBpc1xuICAgICAgICAgY29tbW9uIHRvIGhhdmUgZWl0aGVyIG9yIGJvdGggYXJndW1lbnRzIGJlIGVtcHR5LiBDdXJyZW50bHkgKDIwMTgtMDIpLCB0aGVcbiAgICAgICAgIGJ1aWx0LWluIFteXSBhbGxvY2F0ZXMgZXZlbiB3aGVuIGFwcGVuZGluZyB0byBhbiBlbXB0eSBzdHJpbmcuICopXG4gICAgICBsZXQgKCBePyApIHggeSA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSB4IHRoZW4geSBlbHNlIGlmIFN0cmluZy5pc19lbXB0eSB5IHRoZW4geCBlbHNlIHggXiB5XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBsZXQgZmxvYXQgPSB0b19mbG9hdCB0IGluXG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGZsb2F0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgKCogV2UgcHJpbnQgc3BlY2lmaWMgc3BlY2lhbCBzdHJpbmdzIGZvciBub24tZmluaXRlIGZsb2F0cyAqKVxuICAgICAgICAgICAgRmxvYXQuaXNfbmFuIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIk5BTnNcIlxuICAgICAgICAgIGVsc2UgaWYgRmxvYXQuaXNfbmVnYXRpdmUgZmxvYXRcbiAgICAgICAgICB0aGVuIFwiLUlORnNcIlxuICAgICAgICAgIGVsc2UgXCJJTkZzXCJcbiAgICAgICAgZWxzZSBpZiB0ID0gemVyb1xuICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHQgaW5cbiAgICAgICAgICBsZXQgYWJzX3QgPSBhYnMgdCBpblxuICAgICAgICAgIGxldCBzaWduID0gaWYgdCA8IHplcm8gdGhlbiBcIi1cIiBlbHNlIFwiXCIgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlX3N0cmluZyA9XG4gICAgICAgICAgICBtYXRjaCB1bml0X29mX3RpbWUgd2l0aFxuICAgICAgICAgICAgKCogV2UgY2FuIHVzZSBub3JtYWwgZmxvYXQgbm90YXRpb24gZm9yIHNlY29uZHMgYW5kIHN1Yi1zZWNvbmQgdW5pdHMsIHRoZXkgYXJlXG4gICAgICAgICAgICAgICByZWFkYWJsZSB3aXRoIGEgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgICAgIHwgTmFub3NlY29uZCB8IE1pY3Jvc2Vjb25kIHwgTWlsbGlzZWNvbmQgfCBTZWNvbmQgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6TmFub3NlY29uZFxuICAgICAgICAgICAgKCogRm9yIGxhcmdlIGVub3VnaCB2YWx1ZXMgdGhhdCB0aGUgVUxQIGlzIGEgZGF5IG9yIG1vcmUsIHdlIGNhbiB1c2UgZmxvYXRcbiAgICAgICAgICAgICAgIG5vdGF0aW9uIGJlY2F1c2Ugd2UgYXJlIGV4cHJlc3NpbmcgYSBzaW5nbGUsIHZlcnkgbGFyZ2UgaW50ZWdlci4gKilcbiAgICAgICAgICAgIHwgRGF5IHdoZW4gbmV4dCBhYnNfdCAtIGFic190ID49IGRheSAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpEYXlcbiAgICAgICAgICAgICgqIEZvciBldmVyeXRoaW5nIGluIGJldHdlZW4sIHdlIG5lZWQgdG8gdXNlIGludGVnZXIgdW5pdHMgb2YgZGF5cywgaG91cnMsXG4gICAgICAgICAgICAgICBhbmQvb3IgbWludXRlcywgYmVjYXVzZSB0aG9zZSB1bml0cyBhcmUgbm90IHJlYWRhYmxlIGFzIGRlY2ltYWxzLCBhbmQgd2VcbiAgICAgICAgICAgICAgIHRhY2sgb24gYSBkZWNpbWFsIHJlbWFpbmRlciBvZiBhIHNlY29uZHMtb3Itc21hbGxlciB1bml0IGlmIG5lY2Vzc2FyeS4gKilcbiAgICAgICAgICAgIHwgTWludXRlIHwgSG91ciB8IERheSAtPlxuICAgICAgICAgICAgICBsZXQgc3VtX3QgPSB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBkYXlfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IERheSBpblxuICAgICAgICAgICAgICBsZXQgaG91cl9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgSG91ciBpblxuICAgICAgICAgICAgICBsZXQgbWludXRlX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBNaW51dGUgaW5cbiAgICAgICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+YWJzX3QgfnN1bV90IGluXG4gICAgICAgICAgICAgIGRheV9zdHJpbmcgXj8gaG91cl9zdHJpbmcgXj8gbWludXRlX3N0cmluZyBePyBmbG9hdF9zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIHNpZ24gXj8gbWFnbml0dWRlX3N0cmluZylcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnRvX3N0cmluZ1xuICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHMpXG4gICAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lLlNwYW4uU3RhYmxlLlYzLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGFuIEF0b21cIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjNcblxubGV0IHRvX3Byb3BvcnRpb25hbF9mbG9hdCA9IHRvX2Zsb2F0XG5cbmxldCB0b19zdHJpbmdfaHVtXG4gICAgICA/KGRlbGltaXRlciA9ICdfJylcbiAgICAgID8oZGVjaW1hbHMgPSAzKVxuICAgICAgPyhhbGlnbl9kZWNpbWFsID0gZmFsc2UpXG4gICAgICA/dW5pdF9vZl90aW1lXG4gICAgICB0XG4gID1cbiAgbGV0IGZsb2F0LCBzdWZmaXggPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZSB1bml0X29mX3RpbWUgfmRlZmF1bHQ6KHRvX3VuaXRfb2ZfdGltZSB0KSB3aXRoXG4gICAgfCBEYXkgLT4gdG9fZGF5IHQsIFwiZFwiXG4gICAgfCBIb3VyIC0+IHRvX2hyIHQsIFwiaFwiXG4gICAgfCBNaW51dGUgLT4gdG9fbWluIHQsIFwibVwiXG4gICAgfCBTZWNvbmQgLT4gdG9fc2VjIHQsIFwic1wiXG4gICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0LCBcIm1zXCJcbiAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHQsIFwidXNcIlxuICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0LCBcIm5zXCJcbiAgaW5cbiAgbGV0IHByZWZpeCA9XG4gICAgRmxvYXQudG9fc3RyaW5nX2h1bSBmbG9hdCB+ZGVsaW1pdGVyIH5kZWNpbWFscyB+c3RyaXBfemVybzoobm90IGFsaWduX2RlY2ltYWwpXG4gIGluXG4gIGxldCBzdWZmaXggPVxuICAgIGlmIGFsaWduX2RlY2ltYWwgJiYgSW50LiggPSApIChTdHJpbmcubGVuZ3RoIHN1ZmZpeCkgMSB0aGVuIHN1ZmZpeCBeIFwiIFwiIGVsc2Ugc3VmZml4XG4gIGluXG4gIHByZWZpeCBeIHN1ZmZpeFxuOztcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgRmxvYXQuZ2VuX2luY2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAoKiBUZWNobmljYWxseSBleGNsdXNpdmUgcmF0aGVyIHRoYW4gaW5jbHVzaXZlLCBidXQgb3RoZXJ3aXNlIHNhdGlzZmllcyB0aGUgY29udHJhY3QgdG9cbiAgICAgd2l0aGluIDF1bHAgb2YgdGhlIGdpdmVuIGJvdW5kcy4gKilcbiAgRmxvYXQuZ2VuX3VuaWZvcm1fZXhjbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAoKiBXZSBnZW5lcmF0ZSBzcGFucyB1cCB0byAoc2xpZ2h0bHkgbW9yZSB0aGFuKSBhIG1pbGxlbml1bSwgcG9zaXRpdmUgb3IgbmVnYXRpdmUuIFRoaXNcbiAgICAgaXMgYmFzZWQgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgaW4gd2hpY2ggeWVhcnMgYXZlcmFnZSAzNjUuMjQyNSBkYXlzIHdoZW5cbiAgICAgYWNjb3VudGluZyBmb3IgbGVhcCBkYXlzLiBDb3ZlcmluZyBhIHR3by1taWxsZW5pdW0gc3BhbiBpcyBtb3JlIHRoYW4gZW5vdWdoIGZvciBtb3N0XG4gICAgIHByYWN0aWNhbCBwdXJwb3NlcywgY2VydGFpbmx5IG1vcmUgdGhhbiBlbm91Z2ggdG8gY292ZXIgdGhlIHJlcHJlc2VudGFibGUgcmFuZ2Ugb2ZcbiAgICAgW1NwYW5fbnNdLCBhbmQgcmVzdWx0cyBpbiBmaW5pdGUgc3BhbnMgYW5kIHRpbWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQuXG5cbiAgICAgV2UgZ2VuZXJhdGUgYnkgZmlsdGVyaW5nIHRoZSBkZWZhdWx0IGdlbmVyYXRvciBzbyB0aGF0IHNwYW5zIGFyZSBzdGlsbCBza2V3ZWQgdG93YXJkXG4gICAgIHNtYWxsIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhlIGJvdW5kcyBhcmUgbGFyZ2UuICopXG4gIGxldCBtaWxsZW5pdW0gPSBvZl9kYXkgKEZsb2F0LnJvdW5kX3VwICgzNjUuMjQyNSAqLiAxMDAwLikpIGluXG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciBxdWlja2NoZWNrX2dlbmVyYXRvciB+ZjooZnVuIHQgLT5cbiAgICBuZWcgbWlsbGVuaXVtIDw9IHQgJiYgdCA8PSBtaWxsZW5pdW0pXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLlNwYW5cIlxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXQgc2VyaWFsaXphdGlvbiByYXRoZXJcbiAgICAgICB0aGFuIHRpbWUgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nIGhhc2gtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyXG4gICAgICAgc2VyaWFsaXphdGlvbi4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBmbG9hdCAtPiBvZl9mbG9hdCBmbG9hdFxuICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVC5jb21wYXJhdG9yXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgc3BhbnMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBmbG9hdHMuICBGcm9tIDEwOC4wN1xuICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmQgcHJldHR5XG4gICAgIGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhcyBjaGFuZ2VkIGZyb21cbiAgICAgcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlIG1vc3RcbiAgICAgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICByYXcuICopXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IFQub2ZfZmxvYXQgKEZsb2F0LnRfb2Zfc2V4cCBzZXhwKSkgd2l0aFxuICAgIHwgU29tZSB0IC0+IHRcbiAgICB8IE5vbmUgLT4gdF9vZl9zZXhwIHNleHBcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxubW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZVxuICBsZXQgcGFyc2Vfc3VmZml4ID0gU3RhYmxlLlYzLk9mX3N0cmluZy5wYXJzZV9zdWZmaXhcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5cbigqIENyZWF0ZSBhbiBhYnN0cmFjdCB0eXBlIGZvciBPZmRheSB0byBwcmV2ZW50IHVzIGZyb20gY29uZnVzaW5nIGl0IHdpdGhcbiAgIG90aGVyIGZsb2F0cy5cbiopXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdFxuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBhZGQgOiB0IC0+IFNwYW4udCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHN1YiA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgbmV4dCA6IHQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIDogU3Bhbi50IC0+IHRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIDogU3Bhbi50IC0+IGJvb2xcbiAgICAgIHZhbCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgc3RhcnRfb2ZfZGF5IDogdFxuICAgICAgdmFsIHN0YXJ0X29mX25leHRfZGF5IDogdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgKCogTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQuICopXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBGbG9hdC50XG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG4gICAgICBlbmQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBlbmQpXG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLk9mZGF5IHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IFNwYW4ub2Zfc2VjIHRcblxuICAgICAgKCogQW5vdGhlciByZWFzb25hYmxlIGNob2ljZSB3b3VsZCBiZSBvbmx5IGFsbG93aW5nIE9mZGF5LnQgdG8gYmUgPCAyNGhyLCBidXQgdGhpc1xuICAgICAgICAgY2hvaWNlIHdhcyBtYWRlIGVhcmx5IG9uIGFuZCBwZW9wbGUgYmVjYW1lIHVzZWQgdG8gYmVpbmcgYWJsZSB0byBlYXNpbHkgY2FsbCAyNGhyXG4gICAgICAgICB0aGUgZW5kIG9mIHRoZSBkYXkuICBJdCdzIGEgYml0IHNhZCBiZWNhdXNlIGl0IHNoYXJlcyB0aGF0IG1vbWVudCB3aXRoIHRoZVxuICAgICAgICAgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGRheSwgYW5kIHJvdW5kIHRyaXBzIG9kZGx5IGlmIHBhc3NlZCB0aHJvdWdoXG4gICAgICAgICBUaW1lLnRvX2RhdGVfb2ZkYXkvVGltZS5vZl9kYXRlX29mZGF5LlxuXG4gICAgICAgICBOb3RlOiBbU2NoZWR1bGUudF0gcmVxdWlyZXMgdGhhdCB0aGUgZW5kIG9mIGRheSBiZSByZXByZXNlbnRhYmxlLCBhcyBpdCdzIHRoZVxuICAgICAgICAgb25seSB3YXkgdG8gd3JpdGUgYSBzY2hlZHVsZSBpbiB0ZXJtcyBvZiBbT2ZkYXkudF1zIHRoYXQgc3BhbnMgdHdvIHdlZWtkYXlzLiAqKVxuICAgICAgKCogb2ZkYXkgbXVzdCBiZSA+PSAwIGFuZCA8PSAyNGggKilcbiAgICAgIGxldCBpc192YWxpZCAodCA6IHQpID1cbiAgICAgICAgbGV0IHQgPSB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICAgIFNwYW4uKCA8PSApIFNwYW4uemVybyB0ICYmIFNwYW4uKCA8PSApIHQgU3Bhbi5kYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IFNwYW4udG9fc2VjIHNwYW5cblxuICAgICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPVxuICAgICAgICBpc192YWxpZCAob2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIHNwYW4gPVxuICAgICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgICBsZXQgcyA9IFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgcyB3aXRoXG4gICAgICAgIHwgQy5JbmZpbml0ZSAtPiBpbnZhbGlkX2FyZyBcIk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5maW5pdGUgdmFsdWVcIlxuICAgICAgICB8IEMuTmFuIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBOYU4gdmFsdWVcIlxuICAgICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT5cbiAgICAgICAgICBpZiBub3QgKGlzX3ZhbGlkIHMpXG4gICAgICAgICAgdGhlbiBpbnZhbGlkX2FyZ2YgIVwiT2ZkYXkgb3V0IG9mIHJhbmdlOiAle1NwYW59XCIgc3BhbiAoKVxuICAgICAgICAgIGVsc2Ugc1xuICAgICAgOztcblxuICAgICAgbGV0IHN0YXJ0X29mX2RheSA9IDAuXG4gICAgICBsZXQgc3RhcnRfb2ZfbmV4dF9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gU3Bhbi5kYXlcblxuICAgICAgbGV0IGFkZCAodCA6IHQpIChzcGFuIDogU3Bhbi50KSA9XG4gICAgICAgIGxldCB0ID0gdCArLiBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIHQgdGhlbiBTb21lIHQgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0IC0uIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgVXAgdCBpblxuICAgICAgICBpZiBpc192YWxpZCBjYW5kaWRhdGUgdGhlbiBTb21lIGNhbmRpZGF0ZSBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwcmV2IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgRG93biB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGRpZmYgdDEgdDIgPVxuICAgICAgICBTcGFuLiggLSApICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0MSkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5ID1cbiAgICAgIE9wdGlvbi52YWx1ZV9leG4gKFQuc3ViIFQuc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5taWNyb3NlY29uZClcbiAgICA7O1xuXG4gICAgKCogW2NyZWF0ZV0gY2hvcHMgb2ZmIGFueSBzdWJzZWNvbmQgcGFydCB3aGVuIFtzZWMgPSA2MF0gdG8gaGFuZGxlIGxlYXAgc2Vjb25kcy4gSW5cbiAgICAgICBwYXJ0aWN1bGFyIGl0J3MgdHJ5aW5nIHRvIGJlIGdlbmVyb3VzIGFib3V0IHJlYWRpbmcgaW4gdGltZXMgb24gdGhpbmdzIGxpa2UgZml4XG4gICAgICAgbWVzc2FnZXMgdGhhdCBtaWdodCBpbmNsdWRlIGFuIGV4dHJhIHVubGlrZWx5IHNlY29uZC5cblxuICAgICAgIE90aGVyIHdheXMgb2Ygd3JpdGluZyBhIHRpbWUsIGxpa2UgMTAwMG1zLCB3aGlsZSBtYXRoZW1hdGljYWxseSB2YWxpZCwgZG9uJ3QgbWF0Y2hcbiAgICAgICB3YXlzIHRoYXQgcGVvcGxlIGFjdHVhbGx5IHdyaXRlIHRpbWVzIGRvd24sIHNvIHdlIGRpZG4ndCBzZWUgdGhlIG5lZWQgdG8gc3VwcG9ydFxuICAgICAgIHRoZW0uIFRoYXQgaXMsIGEgY2xvY2sgbWlnaHQgbGVnaXRpbWF0ZWx5IHJlYWQgMjM6NTk6NjAgKG9yLCB3aXRoIDYwIHNlY29uZHMgYXRcbiAgICAgICB0aW1lcyBvZiBkYXkgb3RoZXIgdGhhbiAyMzo1OSwgZGVwZW5kaW5nIG9uIHRoZSB0aW1lIHpvbmUpLCBidXQgaXQgZG9lc24ndCBzZWVtXG4gICAgICAgcmVhc29uYWJsZSBmb3IgYSBjbG9jayB0byByZWFkIFwiMjM6NTk6NTkgYW5kIDEwMDBtc1wiLiAqKVxuICAgIGxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICAgICBsZXQgbXMsIHVzLCBucyA9XG4gICAgICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgICAgIHwgXyAtPiBtcywgdXMsIG5zXG4gICAgICBpblxuICAgICAgVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG4gICAgOztcblxuICAgIGxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KVxuXG4gICAgbGV0IHRvX3N0cmluZ19nZW4gfmRyb3BfbXMgfmRyb3BfdXMgfnRyaW0gdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBhc3NlcnQgKGlmIGRyb3BfbXMgdGhlbiBkcm9wX3VzIGVsc2UgdHJ1ZSk7XG4gICAgICBsZXQgZmxvYXRfc2VjID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCkgaW5cbiAgICAgIGxldCB1cyA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuIChmbG9hdF9zZWMgKi4gMWU2KSBpblxuICAgICAgbGV0IG1zLCB1cyA9IHVzIC8gITEwMDAsIHVzIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgc2VjLCBtcyA9IG1zIC8gITEwMDAsIG1zIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgbWluLCBzZWMgPSBzZWMgLyAhNjAsIHNlYyBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociwgbWluID0gbWluIC8gITYwLCBtaW4gbW9kICE2MCB8PiBpIGluXG4gICAgICBsZXQgaHIgPSBpIGhyIGluXG4gICAgICBsZXQgZG9udF9wcmludF91cyA9IGRyb3BfdXMgfHwgKHRyaW0gJiYgdXMgPSAwKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfbXMgPSBkcm9wX21zIHx8ICh0cmltICYmIG1zID0gMCAmJiBkb250X3ByaW50X3VzKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfcyA9IHRyaW0gJiYgc2VjID0gMCAmJiBkb250X3ByaW50X21zIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICAgIHRoZW4gNVxuICAgICAgICBlbHNlIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiA4XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF91c1xuICAgICAgICB0aGVuIDEyXG4gICAgICAgIGVsc2UgMTVcbiAgICAgIGluXG4gICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCBocjtcbiAgICAgIEJ5dGVzLnNldCBidWYgMiAnOic7XG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIG1pbjtcbiAgICAgIGlmIGRvbnRfcHJpbnRfc1xuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnOic7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgc2VjO1xuICAgICAgICBpZiBkb250X3ByaW50X21zXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA4ICcuJztcbiAgICAgICAgICB3cml0ZV8zX2RpZ2l0X2ludCBidWYgfnBvczo5IG1zO1xuICAgICAgICAgIGlmIGRvbnRfcHJpbnRfdXMgdGhlbiAoKSBlbHNlIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjEyIHVzKSk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6ZmFsc2UgfnRyaW06dHJ1ZSB0XG4gICAgbGV0IHRvX3NlY19zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6dHJ1ZSB+ZHJvcF91czp0cnVlIH50cmltOmZhbHNlIHRcbiAgICBsZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuXG4gICAgbGV0IHNtYWxsX2RpZmYgPVxuICAgICAgbGV0IGhvdXIgPSAzNjAwLiBpblxuICAgICAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICAgICAgbGV0IG9mZGF5MSA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICAgICAgbGV0IG9mZGF5MiA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICAgICAgbGV0IGRpZmYgPSBvZmRheTEgLS4gb2ZkYXkyIGluXG4gICAgICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgICAgIGxldCBkMSA9IEZsb2F0Lm1vZF9mbG9hdCBkaWZmIGhvdXIgaW5cbiAgICAgICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgICAgIGxldCBkMiA9IEZsb2F0Lm1vZF9mbG9hdCAoZDEgKy4gaG91cikgaG91ciBpblxuICAgICAgICBsZXQgZCA9IGlmIEZsb2F0LiggPiApIGQyIChob3VyIC8uIDIuKSB0aGVuIGQyIC0uIGhvdXIgZWxzZSBkMiBpblxuICAgICAgICBTcGFuLm9mX3NlYyBkXG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLk9mZGF5XCJcbiAgICAgIGVuZClcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IHN1YnNlYyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwLlxuICAgICAgICBlbHNlIEZsb2F0Lm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpzdWJzZWNfcG9zIH5sZW46c3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBGbG9hdC5vZl9pbnQgKChociAqIDM2MDApICsgKG1pbiAqIDYwKSArIHNlYykgKy4gc3Vic2VjXG4gICAgICB8PiBTcGFuLm9mX3NlY1xuICAgICAgfD4gVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IG9mX3NleHBfZXJyb3IgKFwiT2ZkYXkudF9vZl9zZXhwOiBcIiBeIHMpIHNleHApXG4gICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIk9mZGF5LnRfb2Zfc2V4cFwiIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIGxldCBzZXhwX29mX3Qgc3BhbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHNwYW4pXG5cbiAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gICAgICB0cnkgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQoJXMpOiAlc1wiXG4gICAgICAgICAgKFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4pXG4gICAgICAgICAgKEV4bi50b19zdHJpbmcgZXhuKVxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgU3Bhbi5nZW5faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGxvKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaGkpXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG9mZGF5cyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb21cbiAgICAgMTA4LjA3IHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWRcbiAgICAgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChDKVxuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbiIsIigqIFNlZSB0aW1lX2Zsb2F0Lm1sIGZvciB0aGUgcHJpbWFyeSBpbnN0YW50aWF0aW9uIG9mIHRoaXMgZnVuY3RvciB0aGF0IGlzIHZpc2libGUgb3V0c2lkZVxuICAgb2YgQ29yZSBhcyBUaW1lIChzZWUgY29yZS5tbCkuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFRpbWVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVGltZTAgOiBUaW1lMF9pbnRmLlMpID0gc3RydWN0XG4gIG1vZHVsZSBUaW1lMCA9IFRpbWUwXG4gIGluY2x1ZGUgVGltZTBcblxuICBsZXQgZXBvY2ggPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4uemVyb1xuICBsZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwuIHQyXG4gIGxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4uIHQyXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICBpbmNsdWRlIFRpbWVfaW50Zi5ab25lIHdpdGggbW9kdWxlIFRpbWUgOj0gVGltZTBcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZTAub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgVGltZTAudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBhYmJyZXZpYXRpb24gdCB0aW1lID1cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IChpbmRleCB0IHRpbWUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGFic19kaWZmIHQxIHQyID0gU3Bhbi5hYnMgKGRpZmYgdDEgdDIpXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIFRpbWUwLiggPj0gKSB0aW1lIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIFRpbWUwLiggPCApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBUaW1lMC5zdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBUaW1lMC5hZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICAgIHw+IFRpbWUwLm1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICAgIHw+IFRpbWUwLm1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IGVuZF9vZl9kYXkgPSBPZmRheS5wcmV2IE9mZGF5LnN0YXJ0X29mX25leHRfZGF5IHw+IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXVxuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGxldCBvZl9kYXkgPVxuICAgICAgVGltZTAuZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgaW5cbiAgICBpZiBPZmRheS5lcXVhbCBvZl9kYXkgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgdGhlbiBlbmRfb2ZfZGF5IGVsc2Ugb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHIgfnRhcmdldDonOicgfnJlcGxhY2VtZW50OictJyAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBTcGFuLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgIH5mX2ludmVyc2U6dG9fc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFNwYW4ucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgU3Bhbi5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX2Vwb2NoIGxvKSAodG9fc3Bhbl9zaW5jZV9lcG9jaCBoaSlcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxubW9kdWxlIE9mZGF5ID0gT2ZkYXlfZmxvYXRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICBpbmNsdWRlIChcbiAgICBGbG9hdCA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXQuT1xuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgIHByZWNpc2lvbiAqKVxuICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICBlbmQpXG5cbiAgbGV0IGRpZmYgdDEgdDIgPSBTcGFuLm9mX3NlYyAodDEgLSB0MilcbiAgbGV0IGFkZCB0IHNwYW4gPSB0ICsuIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHN1YiB0IHNwYW4gPSB0IC0uIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4ub2Zfc2VjXG4gIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi50b19zZWNcbmVuZFxuXG5pbmNsdWRlIEFic29sdXRlXG5cbm1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2Zfc2VjIHRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgZGF5cyA9XG4gICAgICBGbG9hdC5vZl9pbnQgKERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaClcbiAgICBpblxuICAgIChkYXlzICouIDg2NDAwLikgKy4gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICA7O1xuXG4gIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID0gc3ViIHJlbGF0aXZlIG9mZnNldF9mcm9tX3V0Y1xuICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9IGFkZCBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGNcblxuICAoKiBZZWFycyBvdXQgb2YgcmFuZ2UgZm9yIFtEYXRlLmNyZWF0ZV9leG5dLiAqKVxuICBsZXRbQGNvbGRdIGFzc2VydF9pbl9ib3VuZHMgfnNlY19zaW5jZV9lcG9jaCA9XG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QC02MjE2NzIxOTIwMFxuICAgICAgIFNhdCBKYW4gIDEgMDA6MDA6MDAgVVRDIDAwMDAgKilcbiAgICBsZXQgZ210aW1lX2xvd2VyX2JvdW5kID0gLTYyXzE2N18yMTlfMjAwLiBpblxuICAgICgqICQgVFo9VVRDIGRhdGUgLS1kYXRlPUAyNTM0MDIzMDA3OTlcbiAgICAgICBGcmkgRGVjIDMxIDIzOjU5OjU5IFVUQyA5OTk5ICopXG4gICAgbGV0IGdtdGltZV91cHBlcl9ib3VuZCA9IDI1M180MDJfMzAwXzc5OS4gaW5cbiAgICBpZiBGbG9hdC4oID49ICkgc2VjX3NpbmNlX2Vwb2NoIChnbXRpbWVfdXBwZXJfYm91bmQgKy4gMS4pXG4gICAgfHwgRmxvYXQuKCA8ICkgc2VjX3NpbmNlX2Vwb2NoIGdtdGltZV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiVGltZS5nbXRpbWU6IG91dCBvZiByYW5nZSAoJWYpXCIgc2VjX3NpbmNlX2Vwb2NoICgpXG4gIDs7XG5cbiAgbGV0IHNlY19wZXJfZGF5ID0gSW50NjMub2ZfaW50IDg2XzQwMFxuXG4gIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoOnQ7XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gSW50NjMub2ZfZmxvYXQgdCAvIHNlY19wZXJfZGF5IGluXG4gICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgaWYgRmxvYXQuKCA8ICkgdCAoSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBzZWNfcGVyX2RheSkpXG4gICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgOztcblxuICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fc2VjID0gSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaCAqIHNlY19wZXJfZGF5KSBpblxuICAgIGxldCByZW1haW5kZXIgPSB0IC0uIGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgaW5cbiAgICBTcGFuLm9mX3NlYyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBsZXQgZGF0ZSA9IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgb2ZkYXkgPSBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgZGF0ZSwgb2ZkYXlcbiAgOztcbmVuZFxuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICAgIGludGVydmFsXG4gICAgICBbJXNleHBfb2Y6IFNwYW4udF07XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPVxuICAgICAgYWRkXG4gICAgICAgIGJhc2VcbiAgICAgICAgKFNwYW4uc2NhbGVcbiAgICAgICAgICAgaW50ZXJ2YWxcbiAgICAgICAgICAgKEZsb2F0LnJvdW5kIH5kaXI6YERvd24gKFNwYW4uKCAvLyApIGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSlcbiAgICBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCBub3cgKCkgPVxuICBsZXQgZmxvYXRfbnMgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IEludDYzLnRvX2Zsb2F0IGluXG4gIG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2Zfc2VjIChmbG9hdF9ucyAqLiAxRS05KSlcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgU19rZXJuZWxfd2l0aG91dF96b25lID0gVGltZTBfaW50Zi5TXG5tb2R1bGUgdHlwZSBTX2tlcm5lbCA9IFRpbWVfaW50Zi5TXG5cbm1vZHVsZSBab25lX3N0YWJsZSA9IFpvbmUuU3RhYmxlXG5pbmNsdWRlIFRpbWUuTWFrZSAoVGltZV9mbG9hdDApXG5pbmNsdWRlIFRpbWVfZmxvYXQwXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX2Zsb2F0MC5TdGFibGVcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgV2l0aF90X29mX3NleHBfYWJzID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2ZkYXlcbiAgICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBXaXRoX3V0Y19zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodG9fc3RyaW5nX2Fic19wYXJ0cyB0IH56b25lOlpvbmUudXRjIDogc3RyaW5nIGxpc3QpXVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSBkYXRlOyBTZXhwLkF0b20gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUgXSAtPlxuICAgICAgICAgICAgb2Zfc3RyaW5nX2dlblxuICAgICAgICAgICAgICB+ZGVmYXVsdF96b25lOihmdW4gKCkgLT4gWm9uZS51dGMpXG4gICAgICAgICAgICAgIH5maW5kX3pvbmU6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cDogdW5rbm93biB0aW1lIHpvbmVcIiBzZXhwKVxuICAgICAgICAgICAgICAoZGF0ZSBeIFwiIFwiIF4gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUpXG4gICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHBcIiBzZXhwXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPiByYWlzZSBlXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiAlc1wiIChFeG4udG9fc3RyaW5nIGUpKVxuICAgICAgICAgICAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuXG4gICAgICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICAgICAgbW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gICAgaW5jbHVkZSBab25lX3N0YWJsZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPZmRheVxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBub3cgPSBgVXNlX1RpbWVfdW5peFxuXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbmVuZFxuXG5tb2R1bGUgU3BhbiA9IHN0cnVjdFxuICBpbmNsdWRlIFNwYW5cblxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBab25lID0gc3RydWN0XG4gIGluY2x1ZGUgWm9uZVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbiAgbGV0ICggPCApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoIDw+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA9ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiZXR3ZWVuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9yZWFkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaGFwZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaXplX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGRlc2NlbmRpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZXF1YWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZmluZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hfZm9sZF90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hhYmxlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGluaXQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdGlhbGl6ZWRfem9uZXMgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbG9jYWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWF4ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG1pbiA9IGBVc2VfVGltZV91bml4XG4gIGxldCBvZl9zdHJpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHRvX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kID0gYFVzZV9UaW1lX3VuaXhcbmVuZFxuXG5tb2R1bGUgRXhwb3NlZF9mb3JfdGVzdHMgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGZvcm1hdCA9IGBVc2VfVGltZV91bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3RtID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXJzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxuIiwiaW5jbHVkZSBEYXRlMFxuXG5sZXQgb2ZfdGltZSB0aW1lIH56b25lID0gVGltZV9mbG9hdC50b19kYXRlIH56b25lIHRpbWVcbmxldCB0b2RheSB+em9uZSA9IG9mX3RpbWUgKFRpbWVfZmxvYXQubm93ICgpKSB+em9uZVxubGV0IGZvcm1hdCA9IGBVc2VfRGF0ZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX0RhdGVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9EYXRlX3VuaXhcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludDYzLk9cblxubGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3BhblwiXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gSW50LmVxdWFsIFN5cy53b3JkX3NpemVfaW5fYml0cyA2NFxubGV0IHJvdW5kX25lYXJlc3QgPSBGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X2V4blxubGV0IGZsb2F0IHggPSBJbnQ2My50b19mbG9hdCB4XG5cbigqIFtTcGFuXSBpcyBiYXNpY2FsbHkgYSBbSW50NjNdLiAgSXQgZXZlbiBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93LiAqKVxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudCAoKiBuYW5vc2Vjb25kcyAqKSBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEludDYzLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCB6ZXJvID0gSW50NjMuemVyb1xuZW5kXG5cbmluY2x1ZGUgVFxub3BlbiBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFBhcnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzaWduIDogU2lnbi50XG4gICAgOyBociA6IGludFxuICAgIDsgbWluIDogaW50XG4gICAgOyBzZWMgOiBpbnRcbiAgICA7IG1zIDogaW50XG4gICAgOyB1cyA6IGludFxuICAgIDsgbnMgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5sZXQgbmV4dCB0ID0gSW50NjMuc3VjYyB0XG5sZXQgcHJldiB0ID0gSW50NjMucHJlZCB0XG5sZXQgbmFub3NlY29uZCA9IEludDYzLm9mX2ludCAxXG5sZXQgbWljcm9zZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBuYW5vc2Vjb25kKVxubGV0IG1pbGxpc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWljcm9zZWNvbmQpXG5sZXQgc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWlsbGlzZWNvbmQpXG5sZXQgbWludXRlID0gSW50NjMuKG9mX2ludCA2MCAqIHNlY29uZClcbmxldCBob3VyID0gSW50NjMuKG9mX2ludCA2MCAqIG1pbnV0ZSlcbmxldCBkYXkgPSBJbnQ2My4ob2ZfaW50IDI0ICogaG91cilcblxuKCogQmV5b25kIFttaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZy4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmddLCBub3QgZXZlcnkgbWljcm9zZWNvbmRcbiAgIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIFtmbG9hdF0gbnVtYmVyIG9mIHNlY29uZHMuIChJbiBmYWN0LCBpdCBpcyBhcm91bmQgMTM1eSwgYnV0IHdlXG4gICBsZWF2ZSBhIHNtYWxsIG1hcmdpbi4pXG5cbiAgIEluIHRoZSBwcmVzZW5jZSBvZiBzaWxlbnRseSBpZ25vcmVkIG92ZXJmbG93LCBub3RlIHRoYXQgW3RdIGlzIG5vdCBhY3R1YWxseSBib3VuZCB0b1xuICAgc3RheSBiZXR3ZWVuIHRoZXNlIGxpbWl0cy4gKilcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLihvZl9pbnQgMTM1ICogb2ZfaW50IDM2NSAqIGRheSlcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLm5lZyBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuXG5sZXQgY3JlYXRlXG4gICAgICA/c2lnbjooc2lnbl8gPSBTaWduLlBvcyAoKiByZWJpbmQgc28gbm90IHNoYWRvd2VkIGJ5IFtvcGVuIEludDYzXSBiZWxvdyAqKSlcbiAgICAgID9kYXk6KGRheXMgPSAwKVxuICAgICAgPyhociA9IDApXG4gICAgICA/bWluOihtaW51dGVzID0gMClcbiAgICAgID8oc2VjID0gMClcbiAgICAgID8obXMgPSAwKVxuICAgICAgPyh1cyA9IDApXG4gICAgICA/KG5zID0gMClcbiAgICAgICgpXG4gID1cbiAgbGV0IG9wZW4gSW50NjMgaW5cbiAgbGV0IHQgPVxuICAgIChvZl9pbnQgZGF5cyAqIGRheSlcbiAgICArIChvZl9pbnQgaHIgKiBob3VyKVxuICAgICsgKG9mX2ludCBtaW51dGVzICogbWludXRlKVxuICAgICsgKG9mX2ludCBzZWMgKiBzZWNvbmQpXG4gICAgKyAob2ZfaW50IG1zICogbWlsbGlzZWNvbmQpXG4gICAgKyAob2ZfaW50IHVzICogbWljcm9zZWNvbmQpXG4gICAgKyAob2ZfaW50IG5zICogbmFub3NlY29uZClcbiAgaW5cbiAgbWF0Y2ggc2lnbl8gd2l0aFxuICB8IE5lZyAtPiBuZWcgdFxuICB8IFBvcyB8IFplcm8gLT4gdFxuOztcblxubGV0IHRvX3BhcnRzIHQgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgbWFnID0gYWJzIHQgaW5cbiAgeyBQYXJ0cy5zaWduID0gKGlmIHQgPCB6ZXJvIHRoZW4gTmVnIGVsc2UgaWYgdCA+IHplcm8gdGhlbiBQb3MgZWxzZSBaZXJvKVxuICA7IGhyID0gdG9faW50X2V4biAobWFnIC8gaG91cilcbiAgOyBtaW4gPSB0b19pbnRfZXhuIChyZW0gbWFnIGhvdXIgLyBtaW51dGUpXG4gIDsgc2VjID0gdG9faW50X2V4biAocmVtIG1hZyBtaW51dGUgLyBzZWNvbmQpXG4gIDsgbXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIHNlY29uZCAvIG1pbGxpc2Vjb25kKVxuICA7IHVzID0gdG9faW50X2V4biAocmVtIG1hZyBtaWxsaXNlY29uZCAvIG1pY3Jvc2Vjb25kKVxuICA7IG5zID0gdG9faW50X2V4biAocmVtIG1hZyBtaWNyb3NlY29uZCAvIG5hbm9zZWNvbmQpXG4gIH1cbjs7XG5cbmxldCBvZl9wYXJ0cyB7IFBhcnRzLnNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9ID1cbiAgY3JlYXRlIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgKClcbjs7XG5cbmxldCBvZl9ucyBmID0gcm91bmRfbmVhcmVzdCBmXG5sZXQgb2ZfaW50NjNfbnMgaSA9IGlcbmxldCBvZl9pbnRfdXMgaSA9IEludDYzLihvZl9pbnQgaSAqIG1pY3Jvc2Vjb25kKVxubGV0IG9mX2ludF9tcyBpID0gSW50NjMuKG9mX2ludCBpICogbWlsbGlzZWNvbmQpXG5sZXQgb2ZfaW50X3NlYyBpID0gSW50NjMuKG9mX2ludCBpICogc2Vjb25kKVxubGV0IG9mX3VzIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pY3Jvc2Vjb25kKVxubGV0IG9mX21zIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbGxpc2Vjb25kKVxubGV0IG9mX3NlYyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBzZWNvbmQpXG5sZXQgb2ZfbWluIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbnV0ZSlcbmxldCBvZl9ociBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBob3VyKVxubGV0IG9mX2RheSBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBkYXkpXG5cbmxldCBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gc2VjID1cbiAgbGV0IHVzID0gcm91bmRfbmVhcmVzdCAoc2VjICouIDFlNikgaW5cbiAgb2ZfaW50NjNfbnMgSW50NjMuKHVzICogb2ZfaW50IDEwMDApXG47O1xuXG5sZXQgb2ZfaW50NjNfc2Vjb25kcyB4ID0geCAqIHNlY29uZFxubGV0IG9mX2ludDMyX3NlY29uZHMgeCA9IG9mX2ludDYzX3NlY29uZHMgKEludDYzLm9mX2ludDMyIHgpXG5cbmxldCB0b19ucyB0ID0gZmxvYXQgdFxubGV0IHRvX2ludDYzX25zIHQgPSB0XG5sZXQgdG9fdXMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWljcm9zZWNvbmRcbmxldCB0b19tcyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWxsaXNlY29uZFxubGV0IHRvX3NlYyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBzZWNvbmRcbmxldCB0b19taW4gdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWludXRlXG5sZXQgdG9faHIgdCA9IGZsb2F0IHQgLy4gZmxvYXQgaG91clxubGV0IHRvX2RheSB0ID0gZmxvYXQgdCAvLiBmbG9hdCBkYXlcbmxldCB0b19pbnRfdXMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gbWljcm9zZWNvbmQpKVxubGV0IHRvX2ludF9tcyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWxsaXNlY29uZCkpXG5sZXQgdG9faW50X3NlYyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBzZWNvbmQpKVxubGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gdCA9IHQgLyUgc2Vjb25kXG5sZXQgb2ZfaW50X25zIGkgPSBvZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b19pbnRfbnMgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLlNwYW4udG9faW50X25zOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgKCArICkgdCB1ID0gSW50NjMuKCArICkgdCB1XG5sZXQgKCAtICkgdCB1ID0gSW50NjMuKCAtICkgdCB1XG5sZXQgYWJzID0gSW50NjMuYWJzXG5sZXQgbmVnID0gSW50NjMubmVnXG5sZXQgc2NhbGUgdCBmID0gcm91bmRfbmVhcmVzdCAoZmxvYXQgdCAqLiBmKVxubGV0IHNjYWxlX2ludDYzIHQgaSA9IEludDYzLiggKiApIHQgaVxubGV0IHNjYWxlX2ludCB0IGkgPSBzY2FsZV9pbnQ2MyB0IChJbnQ2My5vZl9pbnQgaSlcbmxldCBkaXYgPSBJbnQ2My4oIC8lIClcbmxldCAoIC8gKSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0IC8uIGYpXG5sZXQgKCAvLyApID0gSW50NjMuKCAvLyApXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0IHQgPSBJbnQ2My50b19mbG9hdCB0XG5cbmxldCBvZl91bml0X29mX3RpbWUgdSA9XG4gIG1hdGNoICh1IDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kIC0+IHNlY29uZFxuICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgfCBIb3VyIC0+IGhvdXJcbiAgfCBEYXkgLT4gZGF5XG47O1xuXG5sZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gIGxldCBhYnNfdCA9IGFicyB0IGluXG4gIGlmIGFic190ID49IGRheVxuICB0aGVuIERheVxuICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgdGhlbiBIb3VyXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gIHRoZW4gTWludXRlXG4gIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gIHRoZW4gU2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgdGhlbiBNaWxsaXNlY29uZFxuICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gIHRoZW4gTWljcm9zZWNvbmRcbiAgZWxzZSBOYW5vc2Vjb25kXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRvX2ludDYzX25zIHRcblxuICAgICAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGUgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXG4gICAgICAgICAgICB0aGVuIDFcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxXzAwMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXzAwMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGFzc2VydCBmYWxzZVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBzcGFuIHBhcnQgbWFnbml0dWRlcyBhcmUgYWx3YXlzIDwgMTAwXzAwMCAqKVxuXG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgYXNzZXJ0IChiaWxsaW9udGhzID49IDAgJiYgYmlsbGlvbnRocyA8PSA5OTlfOTk5Xzk5OSk7XG4gICAgICAgICAgICBpZiBiaWxsaW9udGhzID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDlcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDhcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gN1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNlxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfY2hhciBidWYgfnBvcyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjtcbiAgICAgICAgICAgIHBvcyArIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgY2hhcjEgY2hhcjIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyMTtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIChwb3MgKyAxKSBjaGFyMjtcbiAgICAgICAgICAgIHBvcyArIDJcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjMgYnVmIH5wb3MgfmRpZ2l0cyAoSW50NjMub2ZfaW50IGludCk7XG4gICAgICAgICAgICBwb3MgKyBkaWdpdHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5kZWNpbWFscyB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjNcbiAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgfmRpZ2l0czpkZWNpbWFsc1xuICAgICAgICAgICAgICAoSW50NjMub2ZfaW50IChiaWxsaW9udGhzIC8gSW50LnBvdyAxMCAoOSAtIGRlY2ltYWxzKSkpO1xuICAgICAgICAgICAgcG9zICsgZGVjaW1hbHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzIGludCBzdWZmaXggPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyBzdWZmaXggaW5cbiAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgPSB0b19pbnQ2M19ucyBtaWxsaXNlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pY3Jvc2Vjb25kID0gdG9faW50NjNfbnMgbWljcm9zZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBpbnQ2M182MCA9IEludDYzLm9mX2ludCA2MFxuICAgICAgICAgIGxldCBpbnQ2M18yNCA9IEludDYzLm9mX2ludCAyNFxuXG4gICAgICAgICAgKCogVW5pdHMgb2Ygc2Vjb25kcyBhbmQgc21hbGxlciBjYW4gYmUgd3JpdHRlbiBpbiBkZWNpbWFsIG5vdGF0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICB3b3JyeWluZyBhYm91dCBub24tcG93ZXItb2YtdGVuIGZhY3RvcnMuICopXG4gICAgICAgICAgbW9kdWxlIERlY2ltYWxfdW5pdCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBTZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZFxuICAgICAgICAgICAgICB8IE5vbmVcbiAgICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgICAgIGxldCBjcmVhdGUgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgcyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IDFcbiAgICAgICAgICAgICAgdGhlbiBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGludGVnZXIgdCB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAvIG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGJpbGxpb250aHMgdCB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAlIG5hbm9zX29mX21pbGxpc2Vjb25kICogMV8wMDBcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAlIG5hbm9zX29mX21pY3Jvc2Vjb25kICogMV8wMDBfMDAwXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiAwXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgbGVuZ3RoIHQgfmRpZ2l0cyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX2xlbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gZGlnaXRzICsgMVxuICAgICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgfCBNaWNyb3NlY29uZCB8IE5hbm9zZWNvbmQgLT4gZGlnaXRzICsgMlxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19sZW4gPSBpZiBkZWNpbWFscyA+IDAgdGhlbiBkZWNpbWFscyArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgIGRpZ2l0c19sZW4gKyBkZWNpbWFsc19sZW5cbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZV9zdWZmaXggdCBidWYgfnBvcyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICdzJ1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ20nICdzJ1xuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ3UnICdzJ1xuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbicgJ3MnXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZSB0IGJ1ZiB+cG9zIH5pbnRlZ2VyIH5kaWdpdHMgfmJpbGxpb250aHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIGludGVnZXIgfmRpZ2l0cyBpblxuICAgICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgICAgaWYgZGVjaW1hbHMgPSAwXG4gICAgICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zICcuJyBpblxuICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9zdWZmaXggdCBidWYgfnBvcylcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kXG5cbiAgICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICAgICAgaWYgZXF1YWwgdCB6ZXJvXG4gICAgICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9IHQgPCB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuKCAvICkgKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIGluXG4gICAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgICAgSW50NjMucmVtICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuYWJzIHNlY29uZHMgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID0gSW50LmFicyBucyBpblxuICAgICAgICAgICAgICBsZXQgcyA9IEludDYzLnJlbSBzZWNvbmRzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgPSBJbnQ2My4oIC8gKSBzZWNvbmRzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBtID0gSW50NjMucmVtIG1pbnV0ZXMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgaG91cnMgPSBJbnQ2My4oIC8gKSBtaW51dGVzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBoID0gSW50NjMucmVtIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGQgPSBJbnQ2My4oIC8gKSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2ggPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmggaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9tID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTptIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXQgPSBEZWNpbWFsX3VuaXQuY3JlYXRlIH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2ludGVnZXIgPSBEZWNpbWFsX3VuaXQuaW50ZWdlciBkZWNpbWFsX3VuaXQgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfYmlsbGlvbnRocyA9IERlY2ltYWxfdW5pdC5iaWxsaW9udGhzIGRlY2ltYWxfdW5pdCB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgICAgICAgICAgICBsZXQgc2lnbl9sZW4gPSBpZiBpc19uZWdhdGl2ZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRfbGVuID0gaWYgZGlnaXRzX29mX2QgPiAwIHRoZW4gZGlnaXRzX29mX2QgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBoX2xlbiA9IGlmIGRpZ2l0c19vZl9oID4gMCB0aGVuIGRpZ2l0c19vZl9oICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbV9sZW4gPSBpZiBkaWdpdHNfb2ZfbSA+IDAgdGhlbiBkaWdpdHNfb2ZfbSArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9sZW4gPVxuICAgICAgICAgICAgICAgICAgRGVjaW1hbF91bml0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHNpZ25fbGVuICsgZF9sZW4gKyBoX2xlbiArIG1fbGVuICsgZGVjaW1hbF91bml0X2xlblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHN0cmluZ19sZW5ndGggPiAwKTtcbiAgICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBzdHJpbmdfbGVuZ3RoIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSBpZiBpc19uZWdhdGl2ZSB0aGVuIHdyaXRlX2NoYXIgYnVmIH5wb3MgJy0nIGVsc2UgcG9zIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfZCBkICdkJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2ggaCAnaCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9tIG0gJ20nIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC53cml0ZVxuICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgIH5pbnRlZ2VyOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAocG9zID0gc3RyaW5nX2xlbmd0aCk7XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmKVxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgICgqIFdlIGRvIGNvbXB1dGF0aW9ucyB1c2luZyBuZWdhdGl2ZSBudW1iZXJzIGV2ZXJ5d2hlcmUgYW5kIHRlc3QgYWdhaW5zdFxuICAgICAgICAgICAgIHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5taW5fdmFsdWVdIHJhdGhlciB0aGFuIHVzaW5nIHBvc2l0aXZlIG51bWJlcnNcbiAgICAgICAgICAgICBhbmQgdGVzdGluZyBhZ2FpbnN0IHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5tYXhfdmFsdWVdIGJlY2F1c2UgdGhlXG4gICAgICAgICAgICAgbmVnYXRpdmUgaW50ZWdlciByYW5nZSBpcyBvbmUgd2lkZXIgdGhhbiB0aGUgcG9zaXRpdmUgaW50ZWdlciByYW5nZVxuICAgICAgICAgICAgICgtMioqNjMgdnMgMioqNjMtMSksIGFuZCB3ZSBuZWVkIHRoYXQgdG8gYmUgYWJsZSB0byBoYW5kbGUgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgbmljZWx5LiAqKVxuXG4gICAgICAgICAgbGV0IGludDYzXzEwID0gSW50NjMub2ZfaW50IDEwXG4gICAgICAgICAgbGV0IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3cgPSBJbnQ2My4obWluX3ZhbHVlIC8gaW50NjNfMTApXG5cbiAgICAgICAgICBsZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4ub2Zfc3RyaW5nOiBpbnZhbGlkIHN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAoc3RyaW5nIDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgKHJlYXNvbiA6IHN0cmluZyldXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIEFzc3VtZXMgeCBhbmQgeSBhcmUgYm90aCBub25wb3NpdGl2ZSAqKVxuICAgICAgICAgIGxldCBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyB4IHkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IHN1bSA9IHggKyB5IGluXG4gICAgICAgICAgICBpZiBzdW0gPiB4XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBzdW1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IGFkZF9uZWdfZGlnaXQgfnN0cmluZyBpbnQ2MyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXIpIGluXG4gICAgICAgICAgICBpZiBpbnQ2MyA8IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIChpbnQ2MyAqIGludDYzXzEwKSAoLWRpZ2l0KVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbWluX2ZhY3Rvcl9vZiBzcGFuID0gSW50NjMuKCAvICkgSW50NjMubWluX3ZhbHVlICh0b19pbnQ2M19ucyBzcGFuKVxuICAgICAgICAgIGxldCBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgZGF5XG4gICAgICAgICAgbGV0IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgaG91clxuICAgICAgICAgIGxldCBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWludXRlXG4gICAgICAgICAgbGV0IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWlsbGlzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWljcm9zZWNvbmRcbiAgICAgICAgICBsZXQgbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBuYW5vc2Vjb25kXG5cbiAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICAgICAgICB8IERheSAtPiBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBIb3VyIC0+IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaW51dGUgLT4gbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgU2Vjb25kIC0+IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRvX2ludDYzX25zIChvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSBpblxuICAgICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvdyA9XG4gICAgICAgICAgICAgIG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgSW50NjMuKCA8ICkgbmVnX2ludGVnZXIgbWluX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBsZXQgbmVnX2ludGVnZXJfbnMgPSBJbnQ2My4oICogKSBuZWdfaW50ZWdlciBzY2FsZSBpblxuICAgICAgICAgICAgbGV0IGZyYWN0aW9uX3BvcyA9IGRlY2ltYWxfcG9zICsgMSBpblxuICAgICAgICAgICAgaWYgZnJhY3Rpb25fcG9zID49IGVuZF9wb3NcbiAgICAgICAgICAgIHRoZW4gbmVnX2ludGVnZXJfbnNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9ucyA9XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMucmVhZF9pbnQ2M19kZWNpbWFsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5wb3M6ZnJhY3Rpb25fcG9zXG4gICAgICAgICAgICAgICAgICB+c2NhbGVcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczooZW5kX3BvcyAtIGZyYWN0aW9uX3BvcylcbiAgICAgICAgICAgICAgICAgIH5hbGxvd191bmRlcnNjb3JlOnRydWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzOnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIG5lZ19pbnRlZ2VyX25zIChJbnQ2My4oIH4tICkgZGVjaW1hbF9ucykpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgbmVnX25zID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBzdHJpbmdcIjtcbiAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgJysnIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nIDogRGlnaXRfc3RyaW5nX2hlbHBlcnMuUm91bmQudCA9XG4gICAgICAgICAgICAgICgqIFVsdGltYXRlbHksIHdlIGFsd2F5cyByb3VuZCBwYXJzZWQgc3BhbnMgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSB3aGVuXG4gICAgICAgICAgICAgICAgIHRoZSBuZWFyZXN0IHJvdW5kIG5zIGFyZSBlcXVpZGlzdGFudC4gRm9yIGV4YW1wbGUsIFwiMS41bnNcIiBpcyByZWFkIGFzXG4gICAgICAgICAgICAgICAgIDIuMG5zLCBhbmQgXCItMS41bnNcIiBpcyByZWFkIGFzIC0xbnMuIFNpbmNlIHdlIHJlYWQgYWJzb2x1dGUgdmFsdWVzIGJlZm9yZVxuICAgICAgICAgICAgICAgICBhcHBseWluZyB0aGUgc2lnbiwgd2UgbXVzdCBjaG9vc2Ugb3VyIHJvdW5kaW5nIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGVcbiAgICAgICAgICAgICAgICAgc2lnbi4gUm91bmRpbmcgZGVjaW1hbCB2YWx1ZXMgaGFwcGVucyBiZWZvcmUgbmVnYXRpbmcgdGhlaXIgbWFnbml0dWRlLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBpc19uZWdhdGl2ZSB3aXRoXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT4gVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgICAgICAgICAgIHwgdHJ1ZSAtPiBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBMb29wIG92ZXIgcGFydHMsIGxpa2UgXCI1bVwiIGluIFwiMWg1bTMwc1wiICopXG4gICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuIGRvXG4gICAgICAgICAgICAgIGxldCBoYXNfZGlnaXQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyID1cbiAgICAgICAgICAgICAgICBsZXQgaSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kaWdpdHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RpZ2l0cyBkb1xuICAgICAgICAgICAgICAgICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaSA6PSBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgIWkgYztcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kaWdpdHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIWlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiAhcG9zIDwgbGVuICYmIENoYXIuZXF1YWwgJy4nIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcylcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kZWNpbWFscyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGVjaW1hbHMgZG9cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RlY2ltYWxzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAgICAgbGV0IGVuZF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmIG5vdCAhaGFzX2RpZ2l0XG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyBkaWdpdHMgYmVmb3JlIHVuaXQgc3VmZml4XCI7XG4gICAgICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICAgICAgICAgICAgaWYgIXBvcyArIDEgPCBsZW4gJiYgQ2hhci5lcXVhbCAncycgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAoIXBvcyArIDEpKVxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICAgICAgfCAndScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCAnbicgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgIXBvcyA8IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnZCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIERheVxuICAgICAgICAgICAgICAgICAgfCAnaCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBNaW51dGVcbiAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBTZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIHVuaXQgc3VmZml4IGFmdGVyIGRpZ2l0c1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfbmFub3Nfb2ZfcGFydCA9XG4gICAgICAgICAgICAgICAgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBuZWdfbnMgOj0gYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgIW5lZ19ucyBuZWdfbmFub3Nfb2ZfcGFydFxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgIGlmIGlzX25lZ2F0aXZlXG4gICAgICAgICAgICAgIHRoZW4gIW5lZ19uc1xuICAgICAgICAgICAgICBlbHNlIGlmIEludDYzLiggPSApICFuZWdfbnMgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIlxuICAgICAgICAgICAgICBlbHNlIEludDYzLiggfi0gKSAhbmVnX25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb2ZfaW50NjNfbnMgbnNcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHApXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWVfbnMuU3Bhbi5TdGFibGUuVjIudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUMClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubGV0IHRvX3N0cmluZyA9IFN0YWJsZS5WMi50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBTdGFibGUuVjIub2Zfc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gU3RhYmxlLlYyLnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFN0YWJsZS5WMi50X29mX3NleHBcbmxldCB0X3NleHBfZ3JhbW1hciA9IFN0YWJsZS5WMi50X3NleHBfZ3JhbW1hclxuXG5tb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBGdW5jdGlvbnMgcmVxdWlyZWQgYnkgW1JvYnVzdGx5X2NvbXBhcmFibGVdOiBhbGxvd3MgZm9yIFtyb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VdXG4gICBncmFudWxhcml0eS5cblxuICAgQSBtaWNyb3NlY29uZCBpcyBhIHJlYXNvbmFibGUgZ3JhbnVsYXJpdHkgYmVjYXVzZSB0aGVyZSBpcyB2ZXJ5IGxpdHRsZSBuZXR3b3JrXG4gICBhY3Rpdml0eSB0aGF0IGNhbiBiZSBtZWFzdXJlZCB0byBzdWItbWljcm9zZWNvbmQgcmVzb2x1dGlvbi4gKilcbmxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSBtaWNyb3NlY29uZFxubGV0ICggPj0uICkgdCB1ID0gdCA+PSBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw9LiApIHQgdSA9IHQgPD0gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA9LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPD0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgKCA+LiApIHQgdSA9IHQgPiBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDwuICkgdCB1ID0gdCA8IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD4uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA+IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0IHJvYnVzdGx5X2NvbXBhcmUgdCB1ID0gaWYgdCA8LiB1IHRoZW4gLTEgZWxzZSBpZiB0ID4uIHUgdGhlbiAxIGVsc2UgMFxuXG4oKiBXZSBkb24ndCBqdXN0IGNvbnZlcnQgdG8gW1RpbWUuU3Bhbi50XSBhbmQgdXNlIHRoZSBjb252ZXJzaW9uIHRoZXJlIGJlY2F1c2Ugb3VyXG4gICBbdG9fc3Bhbl0gY29udmVyc2lvbiBpcyBsaW1pdGVkIHRvIG1pY3Jvc2Vjb25kIHByZWNpc2lvbi4gKilcbmxldCB0b19zdHJpbmdfaHVtXG4gICAgICA/KGRlbGltaXRlciA9ICdfJylcbiAgICAgID8oZGVjaW1hbHMgPSAzKVxuICAgICAgPyhhbGlnbl9kZWNpbWFsID0gZmFsc2UpXG4gICAgICA/dW5pdF9vZl90aW1lXG4gICAgICB0XG4gID1cbiAgbGV0IGZsb2F0LCBzdWZmaXggPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZSB1bml0X29mX3RpbWUgfmRlZmF1bHQ6KHRvX3VuaXRfb2ZfdGltZSB0KSB3aXRoXG4gICAgfCBEYXkgLT4gdG9fZGF5IHQsIFwiZFwiXG4gICAgfCBIb3VyIC0+IHRvX2hyIHQsIFwiaFwiXG4gICAgfCBNaW51dGUgLT4gdG9fbWluIHQsIFwibVwiXG4gICAgfCBTZWNvbmQgLT4gdG9fc2VjIHQsIFwic1wiXG4gICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0LCBcIm1zXCJcbiAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHQsIFwidXNcIlxuICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0LCBcIm5zXCJcbiAgaW5cbiAgbGV0IHByZWZpeCA9XG4gICAgRmxvYXQudG9fc3RyaW5nX2h1bSBmbG9hdCB+ZGVsaW1pdGVyIH5kZWNpbWFscyB+c3RyaXBfemVybzoobm90IGFsaWduX2RlY2ltYWwpXG4gIGluXG4gIGxldCBzdWZmaXggPVxuICAgIGlmIGFsaWduX2RlY2ltYWwgJiYgSW50LiggPSApIChTdHJpbmcubGVuZ3RoIHN1ZmZpeCkgMSB0aGVuIHN1ZmZpeCBeIFwiIFwiIGVsc2Ugc3VmZml4XG4gIGluXG4gIHByZWZpeCBeIHN1ZmZpeFxuOztcblxubGV0IHNpbmNlX3VuaXhfZXBvY2ggKCkgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IG9mX2ludDYzX25zXG5cbmxldCByYW5kb20gP3N0YXRlICgpID1cbiAgSW50NjMucmFuZG9tID9zdGF0ZSAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG4gIC0gSW50NjMucmFuZG9tID9zdGF0ZSAobmVnIG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuOztcblxubGV0IHJhbmRvbWl6ZSB0IH5wZXJjZW50ID0gU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IH5wZXJjZW50IH5zY2FsZVxuXG5sZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICBsZXQgKHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gOiBQYXJ0cy50KSA9IHRvX3BhcnRzIHQgaW5cbiAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG47O1xuXG5sZXQgZ2VuX2luY2wgPSBJbnQ2My5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBJbnQ2My5nZW5fdW5pZm9ybV9pbmNsXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gbW9kdWxlX25hbWVcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmQpXG5cbnR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gU3RhYmxlLlYyLmNvbXBhcmF0b3JcbiAgZW5kKVxuXG4oKiByZS1pbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFuZCBpdHMgY29tcGFyaXNvbnMgdG8gc2hhZG93IHRoZVxuICAgdW4taW5saW5lYWJsZSBvbmVzIGZyb20gW0NvbXBhcmFibGVdICopXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gVC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9IFNwYW5fZmxvYXQub2Zfc2VjICh0b19zZWMgdClcbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgcyA9IG9mX3NlYyAoU3Bhbl9mbG9hdC50b19zZWMgcylcbmxldCBoYWxmX21pY3Jvc2Vjb25kID0gSW50NjMub2ZfaW50IDUwMFxubGV0IG5lYXJlc3RfbWljcm9zZWNvbmQgdCA9IEludDYzLigodG9faW50NjNfbnMgdCArIGhhbGZfbWljcm9zZWNvbmQpIC8lIG9mX2ludCAxMDAwKVxuXG5sZXRbQGNvbGRdIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJTcGFuLnQgZXhjZWVkcyBsaW1pdHNcIlxuICAgICAgICAodCA6IHQpXG4gICAgICAgIChtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA6IHQpXG4gICAgICAgIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA6IHQpXVxuOztcblxubGV0IGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIGlmIHQgPCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyB8fCB0ID4gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlbiBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdFxuICBlbHNlIHRcbjs7XG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdCA9XG4gIFNwYW5fZmxvYXQub2ZfdXMgKEludDYzLnRvX2Zsb2F0IChuZWFyZXN0X21pY3Jvc2Vjb25kIChjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQpKSlcbjs7XG5cbmxldCBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCBzID1cbiAgaWYgU3Bhbl9mbG9hdC4oID4gKSBzIG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgfHwgU3Bhbl9mbG9hdC4oIDwgKSBzIG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lX25zLlNwYW4gZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHNwYW5cIlxuICAgICAgc1xuICAgICAgWyVzZXhwX29mOiBTcGFuX2Zsb2F0LnRdO1xuICAoKiBVc2luZyBbVGltZS5TcGFuLnRvX3NlY10gKGJlaW5nIHRoZSBpZGVudGl0eSkgc28gdGhhdFxuICAgICB3ZSBtYWtlIGRvbid0IGFwcGx5IHRvbyBtYW55IGNvbnZlcnNpb25cbiAgICAgLSBUb28gbWFueSA6IGBbU3Bhbi50XSAtPiBbYV0gLT4gW3RdYFxuICAgICAtIE9ubHkgT25lIDogYFtTcGFuLnRdPT1bYV0gLT4gW3RdYC4gKilcbiAgb2Zfc2VjX3dpdGhfbWljcm9zZWNvbmRfcHJlY2lzaW9uIChTcGFuX2Zsb2F0LnRvX3NlYyBzKVxuOztcblxubGV0IG1pbl92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5tYXhfdmFsdWVcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IG9mX3BhcnRzID0gb2ZfcGFydHNcbiAgbGV0IHRvX3BhcnRzID0gdG9fcGFydHNcbmVuZFxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG9mX3NwYW4gPSBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCB0b19zcGFuID0gdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3BhbiA9IFNwYW5fbnNcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2Ugd2FsbC1jbG9jayBtaWRuaWdodCAqKVxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG5pbmNsdWRlIChTcGFuIDogUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyB0XG5cblxubGV0IHN0YXJ0X29mX2RheSA6IHQgPSBTcGFuLnplcm9cbmxldCBzdGFydF9vZl9uZXh0X2RheSA6IHQgPSBTcGFuLmRheVxubGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPSBTcGFuLiggLSApIHN0YXJ0X29mX25leHRfZGF5IFNwYW4ubmFub3NlY29uZFxubGV0IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPSB0XG5cbmxldFtAY29sZF0gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5wdXQgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgIH5fOihzcGFuIDogU3Bhbi50KV1cbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gaXNfaW52YWxpZCBzcGFuID1cbiAgKCogV2h5IHdlIHVzZSBbU3Bhbi4oID4gKV0gcmF0aGVyIHRoYW4gWyggPj0gKV0gYmVsb3c6XG5cbiAgICAgV2UgYWxsb3cgdG8gcmVwcmVzZW50IHRoZSBlbmQtb2YtZGF5IHNlbnRpbmVsIHZhbHVlIChbMjQuMDAwMDAwMDAwaF0pLCB3aGljaCBpcyBub3RcbiAgICAgaXRzZWxmIGEgdmFsaWQgY2xvY2sgZmFjZSB0aW1lLiAgSG93ZXZlciwgc2luY2UgdmFsaWQgY2xvY2sgZmFjZSB0aW1lcyByZWFkaWx5XG4gICAgIHJvdW5kIHVwIHRvIGl0LCBpdCdzIGJldHRlciB0byBhbGxvdyBpdCB0byBiZSByZXByZXNlbnRlZC4gKilcbiAgU3Bhbi4oIDwgKSBzcGFuIHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPiApIHNwYW4gc3RhcnRfb2ZfbmV4dF9kYXlcbjs7XG5cbmxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCBzcGFuID0gbm90IChpc19pbnZhbGlkIHNwYW4pXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4gPSBzcGFuXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gIGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIGlucHV0X291dF9vZl9ib3VuZHMgc3BhbiBlbHNlIHNwYW5cbjs7XG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgc3BhbiA9IGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIE5vbmUgZWxzZSBTb21lIHNwYW5cbmxldCBhZGRfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViX2V4biB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IGFkZCB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCArICkgdCBzcGFuKVxubGV0IHN1YiB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IG5leHQgdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi5uZXh0IHQpXG5sZXQgcHJldiB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLnByZXYgdClcbmxldCBkaWZmIHQgdSA9IFNwYW4uKCAtICkgdCB1XG5cbmxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICgqIFNpbWlsYXIgdG8gW1RpbWUuT2ZkYXkuY3JlYXRlXSwgaWYgd2UgZGV0ZWN0IGEgbGVhcCBzZWNvbmQgd2Ugc3RyaXAgb2ZmIGFsbFxuICAgICBzdWItc2Vjb25kIGVsZW1lbnRzIHNvIHRoYXQgSEg6TU06NjAuWFhYWFhYWFhYIGlzIGFsbCBtYXBwZWQgdG8gSEg6TU06NjAuICopXG4gIGxldCBtcywgdXMsIG5zID1cbiAgICBtYXRjaCBzZWMgd2l0aFxuICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSAoXG4gICAgICBTcGFuLlN0YWJsZS5WMiA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgPSB0XG4gICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3Bhbi5TdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgYmluX2lvXVxuXG4gICAgbGV0IHRvX3N0cmluZ193aXRoX3VuaXQgPVxuICAgICAgbGV0ICggLyApID0gSW50NjMuKCAvICkgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCBpID0gSW50NjMudG9faW50X2V4biBpblxuICAgICAgZnVuIHQgfnVuaXQgLT5cbiAgICAgICAgaWYgU3Bhbi4oIDwgKSB0IHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPCApIHN0YXJ0X29mX25leHRfZGF5IHRcbiAgICAgICAgdGhlbiBcIkluY29ycmVjdCBkYXlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2l4dHkgPSAhNjAgaW5cbiAgICAgICAgICBsZXQgdGhvdXNhbmQgPSAhMTAwMCBpblxuICAgICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgdCBpblxuICAgICAgICAgIGxldCB1cyA9IG5zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbnMgPSBucyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtcyA9IHVzIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgdXMgPSB1cyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBzID0gbXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBtcyA9IG1zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG0gPSBzIC8gc2l4dHkgaW5cbiAgICAgICAgICBsZXQgcyA9IHMgbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgaCA9IG0gLyBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IG0gPSBtIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IHVuaXQgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IChgTmFub3NlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBTZWNvbmQpIGFzIHVuaXQgLT4gdW5pdFxuICAgICAgICAgICAgfCBgTWludXRlX29yX2xlc3MgLT5cbiAgICAgICAgICAgICAgaWYgbnMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgdXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG1zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgU2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgYE1pbnV0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgYE1pbnV0ZSAtPiA1XG4gICAgICAgICAgICB8IGBTZWNvbmQgLT4gOFxuICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gMTJcbiAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+IDE1XG4gICAgICAgICAgICB8IGBOYW5vc2Vjb25kIC0+IDE4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjAgaDtcbiAgICAgICAgICBCeXRlcy5zZXQgc3RyIDIgJzonO1xuICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjMgbTtcbiAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgIHwgYE1pbnV0ZSAtPiAoKVxuICAgICAgICAgICB8IChgU2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDUgJzonO1xuICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjYgcztcbiAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgIHwgYFNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICB8IChgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgOCAnLic7XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6OSBtcztcbiAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgKGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTIgdXM7XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICAgICB8IGBOYW5vc2Vjb25kIC0+IERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjE1IG5zKSkpKTtcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnN0cilcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zIH51bnRpbCA9XG4gICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgbGV0IGRpZ2l0cyA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2RpZ2l0cyA9IHJlZiAwIGluXG4gICAgICBsZXQgcG9zID0gcmVmIHBvcyBpblxuICAgICAgKCogcmVhZCB1cCB0byAxMCBkaWdpdHM7IHN0b3JlIHRoZSBmaXJzdCA5LCB1c2UgdGhlIDEwdGggdG8gcm91bmQgKilcbiAgICAgIHdoaWxlICFwb3MgPCB1bnRpbCAmJiAhbnVtX2RpZ2l0cyA8IDEwIGRvXG4gICAgICAgIGxldCBjID0gc3RyaW5nLlshcG9zXSBpblxuICAgICAgICBpZiBDaGFyLmlzX2RpZ2l0IGNcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaW5jciBudW1fZGlnaXRzO1xuICAgICAgICAgIGlmICFudW1fZGlnaXRzIDwgMTBcbiAgICAgICAgICB0aGVuIGRpZ2l0cyA6PSAoIWRpZ2l0cyAqIDEwKSArIENoYXIuZ2V0X2RpZ2l0X2V4biBjXG4gICAgICAgICAgZWxzZSBpZiBDaGFyLmdldF9kaWdpdF9leG4gYyA+PSA1XG4gICAgICAgICAgdGhlbiBpbmNyIGRpZ2l0c1xuICAgICAgICAgIGVsc2UgKCkpO1xuICAgICAgICBpbmNyIHBvc1xuICAgICAgZG9uZTtcbiAgICAgICgqIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGRpZ2l0cywgYWRkIHplcm9lcyAqKVxuICAgICAgaWYgIW51bV9kaWdpdHMgPCA5IHRoZW4gZGlnaXRzIDo9ICFkaWdpdHMgKiBJbnQucG93IDEwICg5IC0gIW51bV9kaWdpdHMpO1xuICAgICAgIWRpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlX2Zyb21fcGFyc2VkIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuID1cbiAgICAgIGxldCBuYW5vc2Vjb25kcyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvczooc3Vic2VjX3BvcyArIDEpIH51bnRpbDooc3Vic2VjX3BvcyArIHN1YnNlY19sZW4pXG4gICAgICBpblxuICAgICAgU3Bhbi5vZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IG5hbm9zZWNvbmRzKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5zZWNvbmQgc2VjKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5taW51dGUgbWluKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5ob3VyIGhyKVxuICAgICAgfD4gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzdHJpbmcgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgOiB0ID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZXhwZWN0ZWQgYW4gYXRvbVwiIHNleHBcbiAgICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHRvX3N0cmluZyAodCA6IHQpID0gdG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBOYW5vc2Vjb25kXG4gICAgbGV0IHNleHBfb2ZfdCAodCA6IHQpID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBsZXQgdG9faW50NjMgdCA9IFNwYW5fbnMuU3RhYmxlLlYyLnRvX2ludDYzIHRcbiAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW5fbnMuU3RhYmxlLlYyLm9mX2ludDYzX2V4biB0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChcbiAgU3RhYmxlLlYxIDpcbiAgICBDb21wYXJhdG9yLlNcbiAgd2l0aCB0eXBlIHQgOj0gdFxuICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0YWJsZS5WMSA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBpbmNsdWRlIChTdGFibGUuVjEgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLk9mZGF5XCJcbiAgICBsZXQgaGFzaCA9IFNwYW4uaGFzaFxuICAgIGxldCBoYXNoX2ZvbGRfdCA9IFNwYW4uaGFzaF9mb2xkX3RcbiAgZW5kKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RhYmxlLlYxLnRfc2V4cF9ncmFtbWFyXG5sZXQgdG9fbWljcm9zZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWNyb3NlY29uZFxubGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWlsbGlzZWNvbmRcbmxldCB0b19zZWNfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBTZWNvbmRcbmxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWludXRlX29yX2xlc3NcblxubGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICB0cnlcbiAgICBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpTdGFibGUuVjEuY3JlYXRlX2Zyb21fcGFyc2VkXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiBjYW5ub3QgcGFyc2Ugc3RyaW5nXCJcbiAgICAgICAgICB+XzooU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbiA6IHN0cmluZylcbiAgICAgICAgICB+XzooZXhuIDogZXhuKV1cbjs7XG5cbmxldCBldmVyeSA9XG4gIGxldCByZWMgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjID1cbiAgICAoKiBBc3N1bWVzIFtzcGFuXSwgW3N0YXJ0XSwgYW5kIFtzdG9wXSBhcmUgdmFsaWQgb2ZkYXlzLiBBc3N1bWVzIFtzdGFydCA8IHN0b3BdLlxuICAgICAgIEFzc3VtZXMgW3NwYW4gPiAwXS4gKilcbiAgICBsZXQgYWNjID0gc3RhcnQgOjogYWNjIGluXG4gICAgbGV0IHN0YXJ0ID0gU3Bhbi4oICsgKSBzdGFydCBzcGFuIGluXG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wICgqIGNhbm5vdCBvdmVyZmxvdyAqKVxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2NcbiAgaW5cbiAgKCogaW50ZXJuYWwgW2V2ZXJ5XSBuYW1lZCB0byBzaG93IHVwIGluIHN0YWNrIHRyYWNlcyAqKVxuICBsZXQgZXZlcnkgc3BhbiB+c3RhcnQgfnN0b3AgPVxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggW3N0YXJ0XSA+IFtzdG9wXVwiIChzdGFydCA6IHQpIChzdG9wIDogdCldXG4gICAgZWxzZSBpZiBTcGFuLiggPD0gKSBzcGFuIFNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIHNwYW5cIiB+Xzooc3BhbiA6IFNwYW4udCldXG4gICAgZWxzZSBpZiBpc19pbnZhbGlkIHNwYW5cbiAgICB0aGVuIE9rIFsgc3RhcnQgXVxuICAgIGVsc2UgT2sgKGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYzpbXSlcbiAgaW5cbiAgZXZlcnlcbjs7XG5cbmxldCBzbWFsbF9kaWZmID1cbiAgbGV0IGhvdXIgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uaG91ciBpblxuICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgbGV0IGRpZmYgPSBvZmRheTEgLSBvZmRheTIgaW5cbiAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgIGxldCBkMSA9IEludDYzLnJlbSBkaWZmIGhvdXIgaW5cbiAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICBsZXQgZDIgPSBJbnQ2My5yZW0gKGQxICsgaG91cikgaG91ciBpblxuICAgIGxldCBkID0gaWYgZDIgPiBob3VyIC8gSW50NjMub2ZfaW50IDIgdGhlbiBkMiAtIGhvdXIgZWxzZSBkMiBpblxuICAgIFNwYW4ub2ZfaW50NjNfbnMgZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwic21hbGxfZGlmZlwiID1cbiAgbGV0IHRlc3QgeCB5ID1cbiAgICBsZXQgZGlmZiA9IHNtYWxsX2RpZmYgeCB5IGluXG4gICAgcHJpbnRmICFcInNtYWxsX2RpZmYgJXMgJXMgPSAlc1xcblwiICh0b19zdHJpbmcgeCkgKHRvX3N0cmluZyB5KSAoU3Bhbi50b19zdHJpbmcgZGlmZilcbiAgaW5cbiAgbGV0IGV4YW1wbGVzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biAoeCwgeSkgLT4gb2Zfc3RyaW5nIHgsIG9mX3N0cmluZyB5KVxuICAgICAgWyBcIjEyOjAwXCIsIFwiMTI6MDVcIjsgXCIxMjo1OFwiLCBcIjEzOjAyXCI7IFwiMDA6NTJcIiwgXCIyMzoxOVwiOyBcIjAwOjAwXCIsIFwiMjQ6MDBcIiBdXG4gIGluXG4gIExpc3QuaXRlciBleGFtcGxlcyB+ZjooZnVuICh4LCB5KSAtPlxuICAgIHRlc3QgeCB5O1xuICAgIHRlc3QgeSB4KTtcbiAgWyVleHBlY3RcbiAgICB7fFxuICAgIHNtYWxsX2RpZmYgMTI6MDA6MDAuMDAwMDAwMDAwIDEyOjA1OjAwLjAwMDAwMDAwMCA9IC01bVxuICAgIHNtYWxsX2RpZmYgMTI6MDU6MDAuMDAwMDAwMDAwIDEyOjAwOjAwLjAwMDAwMDAwMCA9IDVtXG4gICAgc21hbGxfZGlmZiAxMjo1ODowMC4wMDAwMDAwMDAgMTM6MDI6MDAuMDAwMDAwMDAwID0gLTRtXG4gICAgc21hbGxfZGlmZiAxMzowMjowMC4wMDAwMDAwMDAgMTI6NTg6MDAuMDAwMDAwMDAwID0gNG1cbiAgICBzbWFsbF9kaWZmIDAwOjUyOjAwLjAwMDAwMDAwMCAyMzoxOTowMC4wMDAwMDAwMDAgPSAtMjdtXG4gICAgc21hbGxfZGlmZiAyMzoxOTowMC4wMDAwMDAwMDAgMDA6NTI6MDAuMDAwMDAwMDAwID0gMjdtXG4gICAgc21hbGxfZGlmZiAwMDowMDowMC4wMDAwMDAwMDAgMjQ6MDA6MDAuMDAwMDAwMDAwID0gMHNcbiAgICBzbWFsbF9kaWZmIDI0OjAwOjAwLjAwMDAwMDAwMCAwMDowMDowMC4wMDAwMDAwMDAgPSAwcyB8fV1cbjs7XG5cbmxldCBnZW5faW5jbCA9IFNwYW4uZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gU3Bhbi5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSAoU3BhbiA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5ncyAqKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG5vdyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xubW9kdWxlIE9mZGF5ID0gT2ZkYXlfbnNcblxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHRoZSBVbml4IGVwb2NoICgxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQykgKilcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnQgPSBTcGFuLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSAoU3BhbiA6IFF1aWNrY2hlY2suU19yYW5nZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgbm93ID0gU3Bhbi5zaW5jZV91bml4X2Vwb2NoXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgZXBvY2ggPSBTcGFuLnplcm9cbmxldCBhZGQgPSBTcGFuLiggKyApXG5sZXQgc3ViID0gU3Bhbi4oIC0gKVxubGV0IGRpZmYgPSBTcGFuLiggLSApXG5sZXQgYWJzX2RpZmYgdCB1ID0gU3Bhbi5hYnMgKGRpZmYgdCB1KVxubGV0IG1heCA9IFNwYW4ubWF4XG5sZXQgbWluID0gU3Bhbi5taW5cbmxldCBuZXh0ID0gU3Bhbi5uZXh0XG5sZXQgcHJldiA9IFNwYW4ucHJldlxubGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggdCA9IHRcbmxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoIHMgPSBzXG5sZXQgdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCA6IEludDYzLnQgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG5sZXQgb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggaSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2ZfaW50NjNfbnMgaSlcbmxldFtAY29sZF0gb3ZlcmZsb3cgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfbnM6IG92ZXJmbG93XCJdXG5sZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwgdDJcbmxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4gdDJcblxubGV0IGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA8ICkgc3VtIHggZWxzZSBTcGFuLiggPiApIHN1bSB4XG47O1xuXG5sZXQgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA+ICkgZGlmZiB4IGVsc2UgU3Bhbi4oIDwgKSBkaWZmIHhcbjs7XG5cbmxldCBhZGRfZXhuIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfZXhuIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgdGhlbiBvdmVyZmxvdyAoKSBlbHNlIGRpZmZcbjs7XG5cbmxldCBhZGRfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bVxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIGRpZmZcbjs7XG5cbmxldCB0b19pbnRfbnNfc2luY2VfZXBvY2ggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLnRvX2ludF9uc19zaW5jZV9lcG9jaDogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0IG9mX2ludF9uc19zaW5jZV9lcG9jaCBpID0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWUgPVxuICBpZiBUaW1lX2Zsb2F0LiggPCApIHRpbWUgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBUaW1lX2Zsb2F0LiggPiApIHRpbWUgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHRpbWVcIlxuICAgICAgdGltZVxuICAgICAgWyVzZXhwX29mOiBUaW1lX2Zsb2F0LlN0YWJsZS5XaXRoX3V0Y19zZXhwLlYyLnRdXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHRpbWUgPVxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHRpbWUgPVxuICBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWU7XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWwgPVxuICBmYWlsd2l0aHNcbiAgICB+aGVyZTpbJWhlcmVdXG4gICAgXCJUaW1lX25zLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICBpbnRlcnZhbFxuICAgIFslc2V4cF9vZjogU3Bhbi50XVxuOztcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWw7XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPSBhZGQgYmFzZSAoU3Bhbi5zY2FsZV9pbnQ2MyBpbnRlcnZhbCAoU3Bhbi5kaXYgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPSBTcGFuLnJhbmRvbSA/c3RhdGUgKClcblxubW9kdWxlIFV0YyA6IHNpZ1xuICB2YWwgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IERhdGUwLnQgKiBTcGFuLnRcbiAgdmFsIG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogRGF0ZTAudCAtPiBTcGFuLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIGEgcmVjcmVhdGlvbiBvZiB0aGUgc3lzdGVtIGNhbGwgZ210aW1lIHNwZWNpYWxpemVkIHRvIHRoZSBmaWVsZHMgd2UgbmVlZCB0aGF0IGFsc29cbiAgICAgZG9lc24ndCByZWx5IG9uIFVuaXguICopXG4gIGxldCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0ICggITwgKSBpID0gSW50NjMub2ZfaW50X2V4biBpIGluXG4gICAgbGV0ICggIT4gKSB0ID0gSW50NjMudG9faW50X2V4biB0IGluXG4gICAgbGV0IG5zX3NpbmNlX2Vwb2NoID0gdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCBpblxuICAgIGxldCBuc19wZXJfZGF5ID0gITw4Nl80MDAgKiAhPDFfMDAwXzAwMF8wMDAgaW5cbiAgICBsZXQgYXBwcm94X2RheXNfZnJvbV9lcG9jaCA9IG5zX3NpbmNlX2Vwb2NoIC8gbnNfcGVyX2RheSBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgaWYgbnNfc2luY2VfZXBvY2ggPCAhPDAgJiYgYXBwcm94X2RheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgPD4gbnNfc2luY2VfZXBvY2hcbiAgICAgIHRoZW4gYXBwcm94X2RheXNfZnJvbV9lcG9jaCAtICE8MVxuICAgICAgZWxzZSBhcHByb3hfZGF5c19mcm9tX2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5ID0gbnNfc2luY2VfZXBvY2ggLSAobnNfcGVyX2RheSAqIGRheXNfZnJvbV9lcG9jaCkgaW5cbiAgICBsZXQgZGF0ZSA9XG4gICAgICBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaCAhPmRheXNfZnJvbV9lcG9jaCB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICBpblxuICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFNwYW4ub2ZfaW50NjNfbnMgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9XG4gICAgYXNzZXJ0IChcbiAgICAgIFNwYW4uKCA+PSApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uemVyb1xuICAgICAgJiYgU3Bhbi4oIDwgKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLmRheSk7XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICBpblxuICAgIGxldCBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggPSBTcGFuLnNjYWxlX2ludCBTcGFuLmRheSBkYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4uKCArICkgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIG1vZHVsZSBPZmRheV9hc19zcGFuID0gc3RydWN0XG4gICAgICBvcGVuIEludC5PXG5cbiAgICAgIGxldCBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gPVxuICAgICAgICBsZXQgc2Vjb25kcyA9IFNwYW4udG9faW50X3NlYyBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgbGV0IGggPSBzZWNvbmRzIC8gMzYwMCBpblxuICAgICAgICBsZXQgbSA9IHNlY29uZHMgLyA2MCAlIDYwIGluXG4gICAgICAgIGxldCBzID0gc2Vjb25kcyAlIDYwIGluXG4gICAgICAgIHNwcmludGYgXCIlMDJkOiUwMmQ6JTAyZFwiIGggbSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHdvX2RpZ2l0X29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyaW5nID0gMiAmJiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgIEludC5vZl9zdHJpbmcgc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgc2Vjb25kc19zdHJpbmcgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBoX3N0cmluZzsgbV9zdHJpbmc7IHNfc3RyaW5nIF0gLT5cbiAgICAgICAgICBsZXQgaCA9IHR3b19kaWdpdF9vZl9zdHJpbmcgaF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbSA9IHR3b19kaWdpdF9vZl9zdHJpbmcgbV9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgcyA9IHR3b19kaWdpdF9vZl9zdHJpbmcgc19zdHJpbmcgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludF9zZWMgKCgoKGggKiA2MCkgKyBtKSAqIDYwKSArIHMpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuc19vZl8xMDBfbXMgPSAxMDBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX21zID0gMTBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfbXMgPSAxXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfdXMgPSAxMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfdXMgPSAxMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX3VzID0gMV8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfbnMgPSAxMDBcbiAgICAgIGxldCBuc19vZl8xMF9ucyA9IDEwXG4gICAgICBsZXQgbnNfb2ZfMV9ucyA9IDFcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhbiA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgc3ViX3NlY29uZF9zcGFuIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgaWYgbnMgPSAwXG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAxZFwiIChucyAvIG5zX29mXzEwMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAyZFwiIChucyAvIG5zX29mXzEwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwM2RcIiAobnMgLyBuc19vZl8xX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA0ZFwiIChucyAvIG5zX29mXzEwMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA1ZFwiIChucyAvIG5zX29mXzEwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNmRcIiAobnMgLyBuc19vZl8xX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA3ZFwiIChucyAvIG5zX29mXzEwMF9ucylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA4ZFwiIChucyAvIG5zX29mXzEwX25zKVxuICAgICAgICBlbHNlIHNwcmludGYgXCIuJTA5ZFwiIG5zXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViX3NlY29uZF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgICB0aGVuIFNwYW4uemVyb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlnaXRzID0gU3RyaW5nLmNob3BfcHJlZml4X2V4biBzdHJpbmcgfnByZWZpeDpcIi5cIiBpblxuICAgICAgICAgIGFzc2VydCAoU3RyaW5nLmZvcl9hbGwgZGlnaXRzIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICAgIGxldCBtdWx0aXBsaWVyID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sZW5ndGggZGlnaXRzIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBuc19vZl8xMDBfbXNcbiAgICAgICAgICAgIHwgMiAtPiBuc19vZl8xMF9tc1xuICAgICAgICAgICAgfCAzIC0+IG5zX29mXzFfbXNcbiAgICAgICAgICAgIHwgNCAtPiBuc19vZl8xMDBfdXNcbiAgICAgICAgICAgIHwgNSAtPiBuc19vZl8xMF91c1xuICAgICAgICAgICAgfCA2IC0+IG5zX29mXzFfdXNcbiAgICAgICAgICAgIHwgNyAtPiBuc19vZl8xMDBfbnNcbiAgICAgICAgICAgIHwgOCAtPiBuc19vZl8xMF9uc1xuICAgICAgICAgICAgfCA5IC0+IG5zX29mXzFfbnNcbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCAoSW50Lm9mX3N0cmluZyBkaWdpdHMgKiBtdWx0aXBsaWVyKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHNwYW4gPVxuICAgICAgICBhc3NlcnQgKFNwYW4uKCA+PSApIHNwYW4gU3Bhbi56ZXJvICYmIFNwYW4uKCA8ICkgc3BhbiBTcGFuLmRheSk7XG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzcGFuIHw+IFNwYW4udG9faW50X3NlYyB8PiBTcGFuLm9mX2ludF9zZWMgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IFNwYW4uKCAtICkgc3BhbiBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuIF4gc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICBsZXQgcHJlZml4X2xlbiA9IDggaW5cbiAgICAgICAgKCogXCJISDpNTTpERFwiICopXG4gICAgICAgIGxldCBzdWZmaXhfbGVuID0gbGVuIC0gcHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjpwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6cHJlZml4X2xlbiB+bGVuOnN1ZmZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBzdWJfc2Vjb25kX29mX3N0cmluZyBzdWJfc2Vjb25kX3N0cmluZyBpblxuICAgICAgICBTcGFuLiggKyApIHNlY29uZHNfc3BhbiBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgbGV0IGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gVXRjLnRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheV9hc19zcGFuLnRvX3N0cmluZyBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBeIFwiWlwiXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBkYXRlX3N0cmluZywgb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSA9IFN0cmluZy5sc3BsaXQyX2V4biBzdHJpbmcgfm9uOicgJyBpblxuICAgICAgbGV0IG9mZGF5X3N0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSB+c3VmZml4OlwiWlwiIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlX3N0cmluZyBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXlfYXNfc3Bhbi5vZl9zdHJpbmcgb2ZkYXlfc3RyaW5nIGluXG4gICAgICBVdGMub2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBvZmRheVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgZW5kKVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICgqIHNlZSB0ZXN0cyBpbiBsaWIvY29yZS90ZXN0L3NyYy90ZXN0X3RpbWVfbnMgdGhhdCBlbnN1cmUgc3RhYmlsaXR5IG9mIHRoaXNcbiAgICAgICAgICAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gQWx0ZXJuYXRlX3NleHAuU3RhYmxlXG4gIG1vZHVsZSBTcGFuID0gU3Bhbi5TdGFibGVcbiAgbW9kdWxlIE9mZGF5ID0gT2ZkYXkuU3RhYmxlXG5lbmRcblxuKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lLm1sIGZ1bmN0b3IsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0IFRpbWVfbnNcbiAgIHRvL29mX3N0cmluZyB3b3JraW5nICopXG5tb2R1bGUgVG9fYW5kX29mX3N0cmluZyA6IHNpZ1xuICB2YWwgb2ZfZGF0ZV9vZmRheSA6IHpvbmU6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IHRcblxuICB2YWwgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgRGF0ZS50XG4gICAgLT4gT2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gWyBgT25jZSBvZiB0IHwgYFR3aWNlIG9mIHQgKiB0IHwgYE5ldmVyIG9mIHQgXVxuXG4gIHZhbCB0b19kYXRlX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnQgKiBPZmRheS50XG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIHRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IERhdGUudCAqIE9mZGF5LnQgKiBbIGBPbmx5IHwgYEFsc29fYXQgb2YgdCB8IGBBbHNvX3NraXBwZWQgb2YgRGF0ZS50ICogT2ZkYXkudCBdXG5cbiAgdmFsIHRvX2RhdGUgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudFxuICB2YWwgdG9fb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IE9mZGF5LnRcbiAgdmFsIGNvbnZlcnQgOiBmcm9tX3R6OlpvbmUudCAtPiB0b190ejpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuICB2YWwgcmVzZXRfZGF0ZV9jYWNoZSA6IHVuaXQgLT4gdW5pdFxuICB2YWwgdXRjX29mZnNldCA6IHQgLT4gem9uZTpab25lLnQgLT4gU3Bhbi50XG5cbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFtvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XVwiXVxuXG4gIHZhbCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IDogc3RyaW5nIC0+IHRcbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFt0b19zdHJpbmdfdXRjXVwiXVxuICB2YWwgdG9fc3RyaW5nX3V0YyA6IHQgLT4gc3RyaW5nXG4gIHZhbCB0b19maWxlbmFtZV9zdHJpbmcgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgb2ZfZmlsZW5hbWVfc3RyaW5nIDogc3RyaW5nIC0+IHpvbmU6Wm9uZS50IC0+IHRcbiAgdmFsIHRvX3N0cmluZ190cmltbWVkIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmcgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgb2ZfbG9jYWxpemVkX3N0cmluZyA6IHpvbmU6Wm9uZS50IC0+IHN0cmluZyAtPiB0XG5cbiAgdmFsIG9mX3N0cmluZ19nZW5cbiAgICA6ICBkZWZhdWx0X3pvbmU6KHVuaXQgLT4gWm9uZS50KVxuICAgIC0+IGZpbmRfem9uZTooc3RyaW5nIC0+IFpvbmUudClcbiAgICAtPiBzdHJpbmdcbiAgICAtPiB0XG5cbiAgdmFsIHRvX3N0cmluZ19hYnMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic190cmltbWVkIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfcGFydHMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZyBsaXN0XG4gIHZhbCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG5cbiAgdmFsIG9jY3VycmVuY2VcbiAgICA6ICBbIGBGaXJzdF9hZnRlcl9vcl9hdCB8IGBMYXN0X2JlZm9yZV9vcl9hdCBdXG4gICAgLT4gdFxuICAgIC0+IG9mZGF5Ok9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICAoKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWVfZmxvYXQwLm1sLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldFxuICAgICBUaW1lX25zIHRvL29mX3N0cmluZyB3b3JraW5nICopXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9pbnQ2M19ucyB0XG5cbiAgICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICAgIGxldCBkYXlzID1cbiAgICAgICAgRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoIHw+IEludDYzLm9mX2ludFxuICAgICAgaW5cbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIChkYXlzICogU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheSlcbiAgICAgICsgU3Bhbi50b19pbnQ2M19ucyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gICAgOztcblxuICAgIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIHN1Yl9leG4gKFNwYW4ub2ZfaW50NjNfbnMgcmVsYXRpdmUpIG9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBTcGFuLnRvX2ludDYzX25zIChhZGRfZXhuIGFic29sdXRlIG9mZnNldF9mcm9tX3V0YylcbiAgICA7O1xuXG4gICAgbGV0IG5zX3Blcl9kYXkgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5XG5cbiAgICBsZXQgdG9fZGF5c19mcm9tX2Vwb2NoIHQgPVxuICAgICAgKCogbm90ZSBUaW1lX25zIHJlcHJlc2VudHMgYWJvdXQgMTQ2IHllYXJzLCBub3QgZW5vdWdoIGZvciBbRGF0ZS5jcmVhdGVfZXhuXSB0byBldmVyXG4gICAgICAgICByYWlzZSAqKVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSB0IC8gbnNfcGVyX2RheSBpblxuICAgICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICAgIHdhbnQgLTEpIC0tIGFkanVzdCBmb3IgdGhhdCBoZXJlLiAqKVxuICAgICAgaWYgdCA8IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBuc19wZXJfZGF5XG4gICAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgZWxzZSBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgOztcblxuICAgIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgPSBkYXlzX2Zyb21fZXBvY2ggKiBuc19wZXJfZGF5IGluXG4gICAgICBsZXQgcmVtYWluZGVyID0gdCAtIGRheXNfZnJvbV9lcG9jaF9pbl9ucyBpblxuICAgICAgU3Bhbi5vZl9pbnQ2M19ucyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlIHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19vZmRheSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBab25lIDogc2lnXG4gICAgKCogVGhpcyBpbnRlcmZhY2UgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWVfaW50Zi5ab25lLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldFxuICAgICAgIHRoaXMgdG8gd29yay5cblxuICAgICAgIFRoZSBwcm9ibGVtIGlzIGhhcyByZWZlcmVuY2VzIHRvIFRpbWUwX2ludGYuUywgd2hpY2ggaXMgdGhlIGZ1bmN0b3IgaW5wdXQgaW50ZXJmYWNlXG4gICAgICAgdGhhdCBUaW1lX25zIGN1cnJlbnRseSBkb2VzIG5vdCBzYXRpc2Z5LiAqKVxuXG4gICAgdHlwZSB0aW1lID0gdFxuICAgIHR5cGUgdCA9IFpvbmUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbW9kdWxlIEluZGV4ID0gWm9uZS5JbmRleFxuXG4gICAgKCogY29waWVkIGZ1bmN0aW9ucyByZWV4cG9ydGVkIGZyb20gWm9uZSAqKVxuXG4gICAgdmFsIHV0YyA6IHRcbiAgICB2YWwgaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuICAgIHZhbCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG5cbiAgICAoKiBuZXcgZnVuY3Rpb25zIGRlZmluZWQgYmVsb3cgKilcblxuICAgIHZhbCBpbmRleCA6IHQgLT4gdGltZSAtPiBJbmRleC50XG4gICAgdmFsIGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgOiB0IC0+IERhdGVfYW5kX29mZGF5LnQgLT4gdGltZVxuICAgIHZhbCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIDogdCAtPiB0aW1lIC0+IERhdGVfYW5kX29mZGF5LnRcbiAgICB2YWwgbmV4dF9jbG9ja19zaGlmdCA6IHQgLT4gc3RyaWN0bHlfYWZ0ZXI6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gICAgdmFsIHByZXZfY2xvY2tfc2hpZnQgOiB0IC0+IGF0X29yX2JlZm9yZTp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0aW1lID0gdFxuXG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgdG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBTcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBTcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogdFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiB0XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IHRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIHRpbWUgPj0gZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgdGltZSA8IGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbFxuICA7O1xuXG4gIGxldCBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lID1cbiAgICBtYXRjaCBpc19pbl9jYWNoZSB0aW1lIH56b25lIHdpdGhcbiAgICB8IHRydWUgLT4gKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBsZXQgaW5kZXggPSBab25lLmluZGV4IHpvbmUgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW1pvbmUuaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBab25lLmluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gem9uZSBpbmRleCBpblxuICAgICAgbGV0IHJlbCA9IERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0YyBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlX2FuZF9vZmRheS50b19kYXRlIHJlbCBpblxuICAgICAgbGV0IHNwYW4gPSBEYXRlX2FuZF9vZmRheS50b19vZmRheSByZWwgfD4gT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3N0YXJ0ID1cbiAgICAgICAgc3ViIChEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWwgfm9mZnNldF9mcm9tX3V0Yykgc3BhblxuICAgICAgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3VudGlsID0gYWRkIGVmZmVjdGl2ZV9kYXlfc3RhcnQgU3Bhbi5kYXkgaW5cbiAgICAgIGxldCBjYWNoZV9zdGFydF9pbmNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gbWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsIHw+IG1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBzaGlmdGVkIHJlY2VudGx5ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGZvcndhcmQgcmVjZW50bHk6IHdlIHNraXBwZWQgYSB0aW1lICopXG4gICAgICAgICAgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgYmFjayByZWNlbnRseTogdGhpcyBkYXRlL29mZGF5IGFscmVhZHkgaGFwcGVuZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoc3ViIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfLCBTb21lIChzdGFydCwgYW1vdW50KSB3aGVuIHN1YiBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA8PSB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyA9XG4gICAgbGV0IGF0dGVtcHQgdGltZSB+em9uZSA9XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICAgIF1cbiAgICBpblxuICAgIGZ1biB0aW1lIH56b25lIC0+XG4gICAgICB0cnkgYXR0ZW1wdCB0aW1lIH56b25lIHdpdGhcbiAgICAgIHwgKF8gOiBleG4pIC0+XG4gICAgICAgICgqIElmIHdlIG92ZXJmbG93IGFwcGx5aW5nIHRoZSBVVEMgb2Zmc2V0LCB0cnkgYWdhaW4gd2l0aCBVVEMgdGltZS4gKilcbiAgICAgICAgYXR0ZW1wdCB0aW1lIH56b25lOlpvbmUudXRjXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHJcbiAgICAgICAgfnRhcmdldDonOidcbiAgICAgICAgfnJlcGxhY2VtZW50OictJ1xuICAgICAgICAoU3RyaW5nLmRyb3Bfc3VmZml4IChPZmRheS50b19zdHJpbmcgb2ZkYXkpIDMpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfbnNfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX25zX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcbmVuZFxuXG5pbmNsdWRlIFRvX2FuZF9vZl9zdHJpbmdcblxubGV0IG1pbl92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlXG5sZXQgbWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCB0b190aW1lID0gdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgb2ZfdGltZSA9IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuXG5tb2R1bGUgXyA9IHN0cnVjdFxuICBvcGVuIFBweF9tb2R1bGVfdGltZXJfcnVudGltZVxuXG4gIGxldCAoKSA9XG4gICAgRHVyYXRpb24uZm9ybWF0XG4gICAgOj0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGxldCBkdXJhdGlvbl9vZl9zcGFuIHMgPSBzIHw+IFNwYW4udG9faW50NjNfbnMgfD4gRHVyYXRpb24ub2ZfbmFub3NlY29uZHNcbiAgICAgIGxldCBzcGFuX29mX2R1cmF0aW9uIGQgPSBkIHw+IER1cmF0aW9uLnRvX25hbm9zZWNvbmRzIHw+IFNwYW4ub2ZfaW50NjNfbnNcbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gc3RyaW5nIHw+IFNwYW4ub2Zfc3RyaW5nIHw+IGR1cmF0aW9uX29mX3NwYW5cblxuICAgICAgbGV0IHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBkdXJhdGlvbnMgPVxuICAgICAgICBsZXQgc3BhbnMgPSBkdXJhdGlvbnMgfD4gTGlzdC5tYXAgfmY6c3Bhbl9vZl9kdXJhdGlvbiBpblxuICAgICAgICBsZXQgdW5pdF9vZl90aW1lID1cbiAgICAgICAgICBzcGFuc1xuICAgICAgICAgIHw+IExpc3QubWF4X2VsdCB+Y29tcGFyZTpTcGFuLmNvbXBhcmVcbiAgICAgICAgICB8PiBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgICAgICAgICB+ZjpTcGFuLnRvX3VuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgfmRlZmF1bHQ6VW5pdF9vZl90aW1lLk5hbm9zZWNvbmRcbiAgICAgICAgaW5cbiAgICAgICAgc3BhbnMgfD4gTGlzdC5tYXAgfmY6KFNwYW4udG9fc3RyaW5nX2h1bSB+dW5pdF9vZl90aW1lIH5hbGlnbl9kZWNpbWFsOnRydWUpXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxubW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBab25lID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGdldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZV9mb3JldmVyID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwcCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgc2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgc2V4cF9vZl90ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRfb2Zfc2V4cF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfbGJvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuIiwiKCogQSBzdWJzdHJpbmcgaXMgYSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuICBXZSB1c2UgYVxuICAgZnVuY3RvciBiZWNhdXNlIHdlIHdhbnQgc3Vic3RyaW5ncyBvZiBbc3RyaW5nXSBhbmQgW2JpZ3N0cmluZ10uXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nX2ludGZcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmcudFxuXG5tb2R1bGUgQmxpdCA9IHN0cnVjdFxuICB0eXBlICgnc3JjLCAnZHN0KSB0ID0gKCdzcmMsICdkc3QpIEJsaXQuYmxpdG9cblxuICBsZXQgc3RyaW5nX2J5dGVzIH5zcmMgP3NyY19wb3MgP3NyY19sZW4gfmRzdCA/KGRzdF9wb3MgPSAwKSAoKSA9XG4gICAgbGV0IHNyY19wb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zOnNyY19wb3NcbiAgICAgICAgP2xlbjpzcmNfbGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3JjKVxuICAgIGluXG4gICAgQnl0ZXMuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gIGxldCBzdHJpbmdfc3RyaW5nID0gc3RyaW5nX2J5dGVzXG4gIGxldCBieXRlc19ieXRlcyA9IEJ5dGVzLmJsaXRvXG4gIGxldCBzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvXG4gIGxldCBieXRlc19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX3N0cmluZyA9IEJpZ3N0cmluZy5Ub19ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2J5dGVzID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG5lbmRcblxuKCogV2UgY2FuJ3QgY2FsbCB0aGUgYmFzZSBtb2R1bGUgW0Jhc2VdIGJlY2F1c2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gd2FudHMgdG8gYWNjZXNzXG4gICB0aGUgW0Jhc2VdIGxpYnJhcnkgZGlyZWN0bHksIGFuZCB3ZSdkIGJlIHNoYWRvd2luZyBpdC4gKilcbm1vZHVsZSBGIChVbmRlcmx5aW5nIDogQmFzZSkgOiBTIHdpdGggdHlwZSBiYXNlID0gVW5kZXJseWluZy50ID0gc3RydWN0XG4gIHR5cGUgYmFzZSA9IFVuZGVybHlpbmcudFxuXG4gIHR5cGUgdCA9XG4gICAgeyBiYXNlIDogVW5kZXJseWluZy50XG4gICAgOyBwb3MgOiBpbnRcbiAgICA7IGxlbiA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAoKiBub3RlIHdlIG92ZXJyaWRlIHRoZSBnZW5lcmF0ZWQgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSBiZWxvdywgb25jZSB3ZSd2ZSBkZWZpbmVkXG4gICAgIFtjcmVhdGVdICopXG5cbiAgKCoge1tcbiAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQucG9zKTtcbiAgICAgICAgIGFzc2VydCAoMCA8PSB0Lmxlbik7XG4gICAgICAgICBhc3NlcnQgKHQucG9zICsgdC5sZW4gPD0gQmFzZS5sZW5ndGggdC5iYXNlKTtcbiAgICAgICA7OyBdfSAqKVxuXG4gIGxldCBiYXNlIHQgPSB0LmJhc2VcbiAgbGV0IHBvcyB0ID0gdC5wb3NcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5cbiAgbGV0IGlzX2VtcHR5IHQgPSBJbnQuZXF1YWwgdC5sZW4gMFxuXG4gIGxldCBiYXNlX29mX3N0cmluZyBzID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGJ1ZiA9IFVuZGVybHlpbmcuY3JlYXRlIGxlbiBpblxuICAgIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZyB+c3JjOnMgfmRzdDpidWYgKCk7XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGJhc2Vfb2ZfYmlnc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBCaWdzdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlID9wb3MgP2xlbiBiYXNlID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG5cbiAgICAgICAgKClcbiAgICAgICAgP3Bvc1xuICAgICAgICA/bGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFVuZGVybHlpbmcubGVuZ3RoIGJhc2UpXG4gICAgaW5cbiAgICB7IGJhc2U7IHBvczsgbGVuIH1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIGxldCBvcGVuIFF1aWNrY2hlY2suTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIGJhc2UgPSBVbmRlcmx5aW5nLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGluXG4gICAgbGV0IGJhc2VfbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSBpblxuICAgIGxldCViaW5kIGxlbiA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgYmFzZV9sZW4gaW5cbiAgICBsZXQlYmluZCBwb3MgPSBJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChiYXNlX2xlbiAtIGxlbikgaW5cbiAgICByZXR1cm4gKGNyZWF0ZSB+cG9zIH5sZW4gYmFzZSlcbiAgOztcblxuICBsZXQgZ2V0X25vX2JvdW5kc19jaGVjayB0IGkgPSBVbmRlcmx5aW5nLmdldCAoYmFzZSB0KSAocG9zIHQgKyBpKVxuXG4gIGxldCBnZXQgdCBpID1cbiAgICBpZiBpID49IDAgJiYgaSA8IGxlbmd0aCB0XG4gICAgdGhlbiBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaVxuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIDs7XG5cbiAgbGV0IHN1YiA/cG9zID9sZW4gdCA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICBpblxuICAgIHsgYmFzZSA9IHQuYmFzZTsgcG9zID0gdC5wb3MgKyBwb3M7IGxlbiB9XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXJnID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIG1vZHVsZSBFbHQgPSBDaGFyXG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgZ28gYWNjIGkgPSBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgYWNjIChnZXQgdCBpKSkgKGkgKyAxKSBpblxuICAgICAgZ28gaW5pdCAwXG4gICAgOztcblxuICAgIGxldCBpdGVyID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgICAgICAgICBmIChnZXQgdCBpKVxuICAgICAgICAgICBkb25lKVxuICAgIDs7XG5cbiAgICBsZXQgZm9sZGkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmluaXQgfmYgLT5cbiAgICAgICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9XG4gICAgICAgICAgICAgaWYgaSA+PSBsZW5ndGggdCB0aGVuIGFjYyBlbHNlIGdvIChmIGkgYWNjIChnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSkpIChpICsgMSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZ28gaW5pdCAwKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgaSAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmRcblxuICBtb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UwIChNYWtlX2FyZylcblxuICBsZXQgZm9sZCA9IEMuZm9sZFxuICBsZXQgaXRlciA9IEMuaXRlclxuICBsZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG4gIGxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbiAgKCogW0MudG9fbGlzdF0gaGFzIHRvIGNvbnN0cnVjdCB0aGVuIHJldmVyc2UgdGhlIGxpc3QgKilcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihnZXQgdClcbiAgbGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxuICBsZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG4gIGxldCBmaW5kID0gQy5maW5kXG4gIGxldCBleGlzdHMgPSBDLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxuICBsZXQgbWVtID0gQy5tZW1cbiAgbGV0IGNvdW50ID0gQy5jb3VudFxuICBsZXQgc3VtID0gQy5zdW1cbiAgbGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbiAgbGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbiAgbGV0IGZvbGRpID0gQy5mb2xkaVxuICBsZXQgaXRlcmkgPSBDLml0ZXJpXG4gIGxldCBleGlzdHNpID0gQy5leGlzdHNpXG4gIGxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbiAgbGV0IGNvdW50aSA9IEMuY291bnRpXG4gIGxldCBmaW5kaSA9IEMuZmluZGlcbiAgbGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5cbiAgbGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICAgIGlmIG4gPCAwXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgICBlbHNlIChcbiAgICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgICAgfCBfIC0+IG9uX2Vycm9yKVxuICA7O1xuXG4gIGxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9wcmVmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczpuXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3N1ZmZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxuICBsZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxuICBsZXQgYmxpdF90byAodHlwZSBhKSAoYmxpdCA6IChVbmRlcmx5aW5nLnQsIGEpIEJsaXQudCkgdCB+ZHN0IH5kc3RfcG9zID1cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF90b19zdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19ieXRlcyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuICBsZXQgYmxpdF9iYXNlID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRcblxuICBsZXQgYmxpdF9mcm9tIH5uYW1lICh0eXBlIGEpIChibGl0IDogKGEsIGJhc2UpIEJsaXQudCkgdCB+c3JjIH5zcmNfcG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IHQubGVuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwiU3Vic3RyaW5nLmJsaXRfZnJvbV8lcyBsZW4gPiBzdWJzdHJpbmcgbGVuZ3RoIDogJWQgPiAlZFwiXG4gICAgICAgIG5hbWVcbiAgICAgICAgbGVuXG4gICAgICAgIHQubGVuXG4gICAgICAgICgpO1xuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+c3JjX2xlbjpsZW4gfmRzdDp0LmJhc2UgfmRzdF9wb3M6dC5wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcInN0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZ1xuICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcImJpZ3N0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZ1xuICBsZXQgb2ZfYmFzZSBiYXNlID0geyBiYXNlOyBwb3MgPSAwOyBsZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIH1cbiAgbGV0IG9mX3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9zdHJpbmcgeClcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9iaWdzdHJpbmcgeClcblxuICBsZXQgbWFrZSAodHlwZSBhKSBjcmVhdGUgKGJsaXQgOiAoYmFzZSwgYSkgQmxpdC50KSB0ID1cbiAgICBsZXQgZHN0ID0gY3JlYXRlIHQubGVuIGluXG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zOjAgKCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZToobWFrZSBCeXRlcy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzIHgpXG4gIDs7XG5cbiAgbGV0IHRvX2JpZ3N0cmluZyA9IG1ha2UgQmlnc3RyaW5nLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG5cbiAgbGV0IGNvbmNhdF9nZW4gY3JlYXRlX2RzdCBibGl0X2RzdCB0cyA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gbGVuIHQgLT4gbGVuICsgbGVuZ3RoIHQpIGluXG4gICAgbGV0IGRzdCA9IGNyZWF0ZV9kc3QgbGVuIGluXG4gICAgaWdub3JlXG4gICAgICAoTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBkc3RfcG9zIHQgLT5cbiAgICAgICAgIGJsaXRfZHN0IHQgfmRzdCB+ZHN0X3BvcztcbiAgICAgICAgIGRzdF9wb3MgKyBsZW5ndGggdClcbiAgICAgICA6IGludCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IGNvbmNhdCB0cyA9IG9mX2Jhc2UgKGNvbmNhdF9nZW4gVW5kZXJseWluZy5jcmVhdGUgYmxpdF9iYXNlIHRzKVxuXG4gIGxldCBjb25jYXRfc3RyaW5nIHRzID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooY29uY2F0X2dlbiBCeXRlcy5jcmVhdGUgYmxpdF90b19zdHJpbmcgdHMpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF9iaWdzdHJpbmcgdHMgPSBjb25jYXRfZ2VuIEJpZ3N0cmluZy5jcmVhdGUgYmxpdF90b19iaWdzdHJpbmcgdHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBNYWtlX3N1YnN0cmluZy5TXG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQnl0ZXMudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJ5dGVzLmNyZWF0ZVxuICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQnl0ZXMuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJ5dGVzX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDYW1sLkFyZ1xuXG50eXBlIHQgPSBrZXkgKiBzcGVjICogZG9jXG5cbmxldCBzb3J0X2FuZF9hbGlnbiBsc3QgPVxuICBhbGlnbiAoQmFzZS5MaXN0LnNvcnQgbHN0IH5jb21wYXJlOihmdW4gKGEsIF8sIF8pIChiLCBfLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuOztcbiIsInR5cGUgdCA9XG4gIHwgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0hcbiAgfCBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcbiAgfCBDT01QX0NXT1JEXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBfb2ZdXG5cbmxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdClcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmcgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLlNcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5TdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gQ2FtbC5GaWxlbmFtZVxuXG4gIGxldCBjaGVja19zdWZmaXggPSBjaGVja19zdWZmaXhcbiAgbGV0IGNob3BfZXh0ZW5zaW9uID0gY2hvcF9leHRlbnNpb25cbiAgbGV0IGNob3Bfc3VmZml4ID0gY2hvcF9zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IGNob3Bfc3VmZml4X29wdFxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gaXNfaW1wbGljaXRcbiAgbGV0IGlzX3JlbGF0aXZlID0gaXNfcmVsYXRpdmVcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IHBhcmVudF9kaXJfbmFtZVxuICBsZXQgZGlyX3NlcCA9IGRpcl9zZXBcbiAgbGV0IHF1b3RlID0gcXVvdGVcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBnZXRfdGVtcF9kaXJfbmFtZSAoKVxuICBsZXQgZGlybmFtZSA9IGRpcm5hbWVcbiAgbGV0IGJhc2VuYW1lID0gYmFzZW5hbWVcbmVuZFxuXG5sZXQgaXNfYWJzb2x1dGUgcCA9IG5vdCAoaXNfcmVsYXRpdmUgcClcblxubGV0IGNvbmNhdCBwMSBwMiA9XG4gIGlmIFN0cmluZy5pc19lbXB0eSBwMVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLmNvbmNhdCBjYWxsZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIGZpcnN0IGFyZ3VtZW50IChzZWNvbmQgXFxcbiAgICAgICBhcmd1bWVudDogJXMpXCJcbiAgICAgIHAyXG4gICAgICAoKTtcbiAgbGV0IHJlYyBjb2xsYXBzZV90cmFpbGluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiBzIH5vbjonLycgd2l0aFxuICAgIHwgU29tZSAoXCJcIiwgKFwiLlwiIHwgXCJcIikpIC0+IFwiXCJcbiAgICB8IFNvbWUgKHMsIChcIi5cIiB8IFwiXCIpKSAtPiBjb2xsYXBzZV90cmFpbGluZyBzXG4gICAgfCBOb25lIHwgU29tZSBfIC0+IHNcbiAgaW5cbiAgbGV0IHJlYyBjb2xsYXBzZV9sZWFkaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lICgoXCIuXCIgfCBcIlwiKSwgcykgLT4gY29sbGFwc2VfbGVhZGluZyBzXG4gICAgfCBTb21lIF8gfCBOb25lIC0+IHNcbiAgaW5cbiAgY29sbGFwc2VfdHJhaWxpbmcgcDEgXiBcIi9cIiBeIGNvbGxhcHNlX2xlYWRpbmcgcDJcbjs7XG5cbmxldCB0b19hYnNvbHV0ZV9leG4gcCB+cmVsYXRpdmVfdG8gPVxuICBpZiBpc19yZWxhdGl2ZSByZWxhdGl2ZV90b1xuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLnRvX2Fic29sdXRlX2V4biBjYWxsZWQgd2l0aCBhIFtyZWxhdGl2ZV90b10gdGhhdCBpcyBhIHJlbGF0aXZlIHBhdGg6ICVzXCJcbiAgICAgIHJlbGF0aXZlX3RvXG4gICAgICAoKVxuICBlbHNlIGlmIGlzX2Fic29sdXRlIHBcbiAgdGhlbiBwXG4gIGVsc2UgY29uY2F0IHJlbGF0aXZlX3RvIHBcbjs7XG5cbmxldCBzcGxpdCBzID0gZGlybmFtZSBzLCBiYXNlbmFtZSBzXG5cbigqIFttYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemVdIGNvbWVzIGZyb20gZ2V0Y29uZiBfUE9TSVhfTkFNRV9NQVggLyAqKVxubGV0IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSA9IDI1NVxuXG5sZXQgaXNfcG9zaXhfcGF0aG5hbWVfY29tcG9uZW50IHMgPVxuICBsZXQgbW9kdWxlIFMgPSBTdHJpbmcgaW5cbiAgcyA8PiBcIi5cIlxuICAmJiBzIDw+IFwiLi5cIlxuICAmJiBJbnQuKDAgPCBTLmxlbmd0aCBzKVxuICAmJiBJbnQuKFMubGVuZ3RoIHMgPD0gbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplKVxuICAmJiAobm90IChTLmNvbnRhaW5zIHMgJy8nKSlcbiAgJiYgbm90IChTLmNvbnRhaW5zIHMgJ1xcMDAwJylcbjs7XG5cbmxldCByb290ID0gXCIvXCJcblxubGV0IHNwbGl0X2V4dGVuc2lvbiBmbiA9XG4gIGxldCBkaXIsIGZuID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy8nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgZm5cbiAgICB8IFNvbWUgKHBhdGgsIGZuKSAtPiBTb21lIHBhdGgsIGZuXG4gIGluXG4gIGxldCBmbiwgZXh0ID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy4nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gZm4sIE5vbmVcbiAgICB8IFNvbWUgKGJhc2VfZm4sIGV4dCkgLT4gYmFzZV9mbiwgU29tZSBleHRcbiAgaW5cbiAgbGV0IGZuID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgTm9uZSAtPiBmblxuICAgIHwgU29tZSBkaXIgLT4gZGlyIF4gXCIvXCIgXiBmblxuICBpblxuICBmbiwgZXh0XG47O1xuXG5sZXQgcGFydHMgZmlsZW5hbWUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGZpbGVuYW1lID1cbiAgICBtYXRjaCBzcGxpdCBmaWxlbmFtZSB3aXRoXG4gICAgfCAoXCIuXCIgYXMgYmFzZSksIFwiLlwiIC0+IGJhc2UgOjogYWNjXG4gICAgfCAoXCIvXCIgYXMgYmFzZSksIFwiL1wiIC0+IGJhc2UgOjogYWNjXG4gICAgfCByZXN0LCBkaXIgLT4gbG9vcCAoZGlyIDo6IGFjYykgcmVzdFxuICBpblxuICBsb29wIFtdIGZpbGVuYW1lXG47O1xuXG5sZXQgb2ZfcGFydHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwiRmlsZW5hbWUub2ZfcGFydHM6IGVtcHR5IHBhcnRzIGxpc3RcIlxuICB8IHJvb3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpyb290IH5mOkNhbWwuRmlsZW5hbWUuY29uY2F0XG47O1xuXG5sZXQgcmVjIHNraXBfY29tbW9uX3ByZWZpeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIHdoZW4gU3RyaW5nLmVxdWFsIGgxIGgyIC0+IHNraXBfY29tbW9uX3ByZWZpeCB0MSB0MlxuICB8IF8gLT4gbDEsIGwyXG47O1xuXG5sZXQgb2ZfYWJzb2x1dGVfZXhuIGEgfnJlbGF0aXZlX3RvOmIgPVxuICBpZiBpc19yZWxhdGl2ZSBhXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfmZpcnN0X2FyZzooYSA6IHN0cmluZyldO1xuICBpZiBpc19yZWxhdGl2ZSBiXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IFt+cmVsYXRpdmVfdG9dIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfnJlbGF0aXZlX3RvOihiIDogc3RyaW5nKV07XG4gIGxldCBhX3BhcnRzID0gcGFydHMgYSBpblxuICBsZXQgYl9wYXJ0cyA9IHBhcnRzIGIgaW5cbiAgbGV0IGFfc3VmZml4LCBiX3N1ZmZpeCA9IHNraXBfY29tbW9uX3ByZWZpeCBhX3BhcnRzIGJfcGFydHMgaW5cbiAgbGV0IGdvX3VwID0gTGlzdC5tYXAgfmY6KGZ1biBfIC0+IHBhcmVudF9kaXJfbmFtZSkgYl9zdWZmaXggaW5cbiAgbWF0Y2ggZ29fdXAgQCBhX3N1ZmZpeCB3aXRoXG4gIHwgW10gLT4gY3VycmVudF9kaXJfbmFtZVxuICB8IHJlbHBhdGggLT4gb2ZfcGFydHMgcmVscGF0aFxuOztcblxubGV0IGFyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgY3JlYXRlX2FyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgb3Blbl90ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZV9mZCA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHJlYWxwYXRoID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgdGVtcF9kaXIgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiEgU3RhYmxlX2ludGVybmFsXG4gIG9wZW4hIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbiAgbW9kdWxlIEFub25zID0gc3RydWN0XG4gICAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHwgWmVyb1xuICAgICAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgICAgIHwgTWFueSBvZiB0XG4gICAgICAgICAgfCBNYXliZSBvZiB0XG4gICAgICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICAgIFslZXhwZWN0IHt8IGExN2ZkMzRlYzIxM2U1MDhkYjQ1MGY2NDY5ZjdmZTk5IHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgaW52YXJpYW50IHQgPVxuICAgICAgICAgIEJhc2UuSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgWmVybyAtPiAoKVxuICAgICAgICAgICAgfCBPbmUgXyAtPiAoKVxuICAgICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJNYW55IFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1hbnkgdCAtPiBpbnZhcmlhbnQgdFxuICAgICAgICAgICAgfCBNYXliZSBaZXJvIC0+IGZhaWx3aXRoIFwiTWF5YmUgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWF5YmUgdCAtPiBpbnZhcmlhbnQgdFxuICAgICAgICAgICAgfCBDb25jYXQgW10gfCBDb25jYXQgWyBfIF0gLT4gZmFpbHdpdGggXCJGbGF0dGVuIHplcm8gYW5kIG9uZS1lbGVtZW50IENvbmNhdFwiXG4gICAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLkxpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnRcbiAgICAgICAgICAgIHwgQWRfaG9jIF8gLT4gKCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBsZXQgdCA9IFslb2Zfc2V4cDogdF0gc2V4cCBpblxuICAgICAgICAgIGludmFyaWFudCB0O1xuICAgICAgICAgIHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVjIHVzYWdlID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFplcm8gLT4gXCJcIlxuICAgICAgICAgIHwgT25lIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYW55IChPbmUgXyBhcyB0KSAtPiBCYXNlLlByaW50Zi5zcHJpbnRmIFwiWyVzIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1hbnkgdCAtPiBCYXNlLlByaW50Zi5zcHJpbnRmIFwiWyglcykgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1heWJlIHQgLT4gQmFzZS5QcmludGYuc3ByaW50ZiBcIlslc11cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoQmFzZS5MaXN0Lm1hcCB0cyB+Zjp1c2FnZSlcbiAgICAgICAgICB8IEFkX2hvYyB1c2FnZSAtPiB1c2FnZVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDA4MWQ5ZWMxNjc5MDNmOGY4YzQ5Y2JmOGUzZmIzYTY2IHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBiZDhkNmZiN2E2NjJkMmMwYjVlMGQyMDI2YzZkMmQyMSB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgYW5vbnMgOiBBbm9ucy5WMi50XG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOGZhYWMxZThkOWRlYjBiYWFhNTZhYzhlYmY4NWI0OTggfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgdXNhZ2UgOiBzdHJpbmdcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3MgfSA9XG4gICAgICAgIHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9ucyA9IFVzYWdlIHVzYWdlOyBmbGFncyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9uczsgZmxhZ3MgfSA9XG4gICAgICAgIHsgc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZVxuICAgICAgICA7IHVzYWdlID1cbiAgICAgICAgICAgIChtYXRjaCBhbm9ucyB3aXRoXG4gICAgICAgICAgICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIuVjEudXNhZ2UgZ3JhbW1hcilcbiAgICAgICAgOyBmbGFnc1xuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QuU3RhYmxlLlYxLnQgTGF6eS5TdGFibGUuVjEudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IGEgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDJjYzNlZWI1OGQxMmQ4ZmU0NDAwMDA5ZTU5MmQ3ODI3IHx9XVxuICAgICAgOztcblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPVxuICAgICAgICB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExhenkubWFwIHQuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mKSB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgdC5zdWJjb21tYW5kcyB+ZiB9XG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mcm9tX3ZhbCBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0ICh7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQpIDogJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZm9yY2Ugc3ViY29tbWFuZHMgfVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4ZWNfaW5mbyA9IHN0cnVjdFxuICAgIGxldCBhYnNfcGF0aCB+ZGlyIHBhdGggPVxuICAgICAgaWYgRmlsZW5hbWUuaXNfYWJzb2x1dGUgcGF0aCB0aGVuIHBhdGggZWxzZSBGaWxlbmFtZS5jb25jYXQgZGlyIHBhdGhcbiAgICA7O1xuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBjMGM4MjU2ZTkyMzhjZGQ4ZjJlYzFmODc4NWUwMmFlMCB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBGbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b192MyB0IDogVjMudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MyAodCA6IFYzLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBGbi5jb21wb3NlIFYzLnRvX2xhdGVzdCB0b192M1xuICAgICAgbGV0IG9mX2xhdGVzdCA9IEZuLmNvbXBvc2Ugb2ZfdjMgVjMub2ZfbGF0ZXN0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyAoKiBbcGF0aF90b19leGVdIG11c3QgYmUgYWJzb2x1dGUuICopXG4gICAgICAgICAgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQgdG9fdjIgdCA6IFYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gXCIvXCJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YyICh0IDogVjIudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmNvbXBvc2UgVjIudG9fbGF0ZXN0IHRvX3YyXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uY29tcG9zZSBvZl92MiBWMi5vZl9sYXRlc3RcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNpYyBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudCAqIHRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDk4MTE1NGVmMzkxOTQzN2M2YzgyMjYxOTg4Mjg0MWQ0IHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50XG4gICAgICAgIHwgTGF6eSBvZiB0IExhenkuU3RhYmxlLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGQzYzM3NTU0OGYxYTQzYzU4YzcxZTgxNGMwNGJhMzZhIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmlkXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNTk4ZDRiNDFlZjQzNWJjNjlhNDg4NmJkYmEwZjg2ODkgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgYlxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjIudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYxLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDcwZDIwYjU0MzJmZmFiNzdhMzg1YjAyYjA0MDMxZDJlIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyB0b19sYXRlc3QgOiB0IC0+IE1vZGVsLnQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIChCYXNlX2luZm8uVjEudG9fbGF0ZXN0IGIpXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMS50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIChCYXNlX2luZm8uVjEub2ZfbGF0ZXN0IGIpXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMS5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFZlcnNpb25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBWMSBvZiBWMS50XG4gICAgICAgIHwgVjIgb2YgVjIudFxuICAgICAgICB8IFYzIG9mIFYzLnQgKCogYXZhaWxhYmxlIGF0IGxlYXN0IHNpbmNlIDIwMjAtMDQgKilcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cCwgdmFyaWFudHNdXG5cbiAgICAgICgqIEl0J3Mgb2theSB0byBjaGFuZ2UgdGhpcyBvbmUgaW4gcGxhY2UsIGFzIGxvbmcgYXMgd2Ugd2FpdCBsb25nIGVub3VnaCBiZWZvcmVcbiAgICAgICAgIGRyb3BwaW5nIHN1cHBvcnQgZm9yIG9sZCB2ZXJzaW9ucy4gKilcbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA3OTZmYmYwMDZkZWIyNTE1OTE3MTYzN2MyYTUxMGJmNCB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBmdW5jdGlvblxuICAgICAgICB8IFYxIHQgLT4gVjEudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMiB0IC0+IFYyLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjMgdCAtPiBWMy50b19sYXRlc3QgdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB+dmVyc2lvbl90b191c2UgbGF0ZXN0ID1cbiAgICAgICAgbWF0Y2ggdmVyc2lvbl90b191c2Ugd2l0aFxuICAgICAgICB8IDEgLT4gVjEgKFYxLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMiAtPiBWMiAoVjIub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAzIC0+IFYzIChWMy5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IG90aGVyIC0+XG4gICAgICAgICAgU3RkX2ludGVybmFsLmZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJ1bnN1cHBvcnRlZCB2ZXJzaW9uX3RvX3VzZVwiXG4gICAgICAgICAgICBvdGhlclxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBpbnZhcmlhbnQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC5pbnZhcmlhbnRcbiAgICBsZXQgdXNhZ2UgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC51c2FnZVxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuTW9kZWwudCA9XG4gICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IG1heWJlX21pc3NpbmdfcHJlZml4ID0gXCJbXCJcbiAgbGV0IG1heWJlX21pc3Npbmdfc3VmZml4ID0gXCJdXCJcbiAgbGV0IG1heWJlX21vcmVfc3VmZml4ID0gXCIgLi4uXCJcblxuICBsZXQgdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lID1cbiAgICBsZXQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgfSA9IHQgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgaWYgYXRfbGVhc3Rfb25jZVxuICAgICAgdGhlbiBmbGFnX25hbWVcbiAgICAgIGVsc2UgU3RyaW5nLmNvbmNhdCBbIG1heWJlX21pc3NpbmdfcHJlZml4OyBmbGFnX25hbWU7IG1heWJlX21pc3Npbmdfc3VmZml4IF1cbiAgICBpblxuICAgIGlmIGF0X21vc3Rfb25jZSB0aGVuIGRlc2NyaXB0aW9uIGVsc2UgU3RyaW5nLmNvbmNhdCBbIGRlc2NyaXB0aW9uOyBtYXliZV9tb3JlX3N1ZmZpeCBdXG4gIDs7XG5cbiAgbGV0IG9mX2hlbHBfc3RyaW5nIG5hbWUgPVxuICAgIGxldCBhdF9tb3N0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IG5hbWUgfnN1ZmZpeDptYXliZV9tb3JlX3N1ZmZpeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIGxldCBhdF9sZWFzdF9vbmNlLCBuYW1lID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFN0cmluZy5jaG9wX3ByZWZpeCBuYW1lIH5wcmVmaXg6bWF5YmVfbWlzc2luZ19wcmVmaXhcbiAgICAgICAgfD4gT3B0aW9uLmJpbmQgfmY6KFN0cmluZy5jaG9wX3N1ZmZpeCB+c3VmZml4Om1heWJlX21pc3Npbmdfc3VmZml4KVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIG5hbWVcbiAgICAgIHwgU29tZSBuYW1lIC0+IGZhbHNlLCBuYW1lXG4gICAgaW5cbiAgICB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9LCBuYW1lXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwidG9faGVscF9zdHJpbmdcIiA9XG4gICAgbGV0IGZsYWdfbmFtZSA9IFwibmFtZVwiIGluXG4gICAgTGlzdC5pdGVyIFslYWxsOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgIGxldCBzID0gdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lIGluXG4gICAgICBwcmludF9zIFslbWVzc2FnZSBcIlwiIH5fOih0IDogdCkgc107XG4gICAgICBsZXQgdCcsIGZsYWdfbmFtZScgPSBvZl9oZWxwX3N0cmluZyBzIGluXG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gdCB0Jyk7XG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogc3RyaW5nXSBmbGFnX25hbWUgZmxhZ19uYW1lJykpO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJbbmFtZV0gLi4uXCIpXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSBmYWxzZSkpIFwibmFtZSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSBmYWxzZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgW25hbWVdKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIHRydWUpIChhdF9tb3N0X29uY2UgdHJ1ZSkpIG5hbWUpIHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZsYWdfaW5mby5Nb2RlbC50ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGRvYyA6IHN0cmluZ1xuICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgcGFyc2VfbmFtZSB0ID1cbiAgICBsZXQgbnVtX29jY3VycmVuY2VzLCBmbGFnX25hbWUgPSBOdW1fb2NjdXJyZW5jZXMub2ZfaGVscF9zdHJpbmcgdC5uYW1lIGluXG4gICAgbWF0Y2ggU3RyaW5nLnNwbGl0IGZsYWdfbmFtZSB+b246JyAnIHdpdGhcbiAgICB8IFsgZmxhZ19uYW1lIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgZmFsc2UsIGZsYWdfbmFtZSlcbiAgICB8IFsgZmxhZ19uYW1lOyBfYXJnX2RvYyBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIHRydWUsIGZsYWdfbmFtZSlcbiAgICB8IF8gLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJVbmFibGUgdG8gcGFyc2VcIiBmbGFnX25hbWVdXG4gIDs7XG5cbiAgKCogVXNlcnMgYXJlIGxpa2VseSB0byBjYWxsIGFsbCB0aHJlZSBvZiB0aGVzZSBmdW5jdGlvbnMsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCByZS1wYXJzZVxuICAgICB0aGUgW25hbWVdIHNldmVyYWwgdGltZXMuIFdlIGRvbid0IGV4cGVjdCB1c2VycyBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY2FyZSBhYm91dCB0aGVcbiAgICAgaW5lZmZpY2llbmN5LiAqKVxuICBsZXQgZmxhZ19uYW1lIHQgPSBwYXJzZV9uYW1lIHQgfD4gT3JfZXJyb3IubWFwIH5mOnRyZDNcbiAgbGV0IG51bV9vY2N1cnJlbmNlcyB0ID0gcGFyc2VfbmFtZSB0IHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3QzXG4gIGxldCByZXF1aXJlc19hcmcgdCA9IHBhcnNlX25hbWUgdCB8PiBPcl9lcnJvci5tYXAgfmY6c25kM1xuXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBcIlstaGVscF1cIiAtPiAtMVxuICAgIHwgXCJbLWhlbHBdXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLXZlcnNpb25dXCIgLT4gLTFcbiAgICB8IFwiWy12ZXJzaW9uXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy1idWlsZC1pbmZvXVwiIC0+IC0xXG4gICAgfCBcIlstYnVpbGQtaW5mb11cIiwgXyAtPiAxXG4gICAgfCBfLCBcImhlbHBcIiAtPiAtMVxuICAgIHwgXCJoZWxwXCIsIF8gLT4gMVxuICAgIHwgXywgXCJ2ZXJzaW9uXCIgLT4gLTFcbiAgICB8IFwidmVyc2lvblwiLCBfIC0+IDFcbiAgICB8IF8gLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2hlbHBfZGlzcGxheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBGbGFnX2luZm8udCBsaXN0XG5cbiAgbGV0IHNvcnQgdCA9XG4gICAgTGlzdC5zdGFibGVfc29ydCB0IH5jb21wYXJlOihmdW4gYSBiIC0+XG4gICAgICBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZSBhLkZsYWdfaW5mby5uYW1lIGIuRmxhZ19pbmZvLm5hbWUpXG4gIDs7XG5cbiAgbGV0IHdvcmRfd3JhcF9hbmRfc3RyaXAgdGV4dCB3aWR0aCA9XG4gICAgbGV0IGNodW5rcyA9IFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonXFxuJyBpblxuICAgIExpc3QuY29uY2F0X21hcCBjaHVua3MgfmY6KGZ1biB0ZXh0IC0+XG4gICAgICBsZXQgd29yZHMgPVxuICAgICAgICBTdHJpbmcuc3BsaXQgdGV4dCB+b246JyAnXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gd29yZCAtPiBub3QgKFN0cmluZy5pc19lbXB0eSB3b3JkKSlcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBMaXN0LmZvbGQgd29yZHMgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyB3b3JkIC0+XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKG1hdGNoIGFjYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IFtdLCB3b3JkXG4gICAgICAgICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT5cbiAgICAgICAgICAgICAgICgqIGVmZmljaWVuY3kgaXMgbm90IGEgY29uY2VybiBmb3IgdGhlIHN0cmluZyBsZW5ndGhzIHdlIGV4cGVjdCAqKVxuICAgICAgICAgICAgICAgbGV0IGxpbmVfYW5kX3dvcmQgPSBsaW5lIF4gXCIgXCIgXiB3b3JkIGluXG4gICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGxpbmVfYW5kX3dvcmQgPD0gd2lkdGhcbiAgICAgICAgICAgICAgIHRoZW4gbGluZXMsIGxpbmVfYW5kX3dvcmRcbiAgICAgICAgICAgICAgIGVsc2UgbGluZSA6OiBsaW5lcywgd29yZCkpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+IExpc3QucmV2IChsaW5lIDo6IGxpbmVzKSlcbiAgOztcblxuICBtb2R1bGUgRGlzcGxheSA6IHNpZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbnVtX2NvbHMgPSA4MFxuICAgIGxldCBzcGFjZXNfc3RyaW5nIHdpZHRoID0gU3RyaW5nLm1ha2Ugd2lkdGggJyAnXG5cbiAgICBsZXQgcGFkX3NwYWNlc190b19zdWZmaXggeCB+d2lkdGggPVxuICAgICAgbGV0IHNsYWNrID0gd2lkdGggLSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICAgIHggXiBzcGFjZXNfc3RyaW5nIHNsYWNrXG4gICAgOztcblxuICAgIGxldCBpbmRlbnRhdGlvbiA9IFwiICBcIlxuICAgIGxldCBpbmRlbnRfYW5kX25ld2xpbmUgeCA9IExpc3QuY29uY2F0IFsgWyBpbmRlbnRhdGlvbiBdOyB4OyBbIFwiXFxuXCIgXSBdXG4gICAgbGV0IHNwYWNpbmdfZG90ID0gXCIuIFwiXG5cbiAgICBsZXQgZG90X2luZGVudGF0aW9uX29mZnNldCA9XG4gICAgICAyN1xuICAgIDs7XG5cbiAgICBsZXQgZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW4gPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfd2lkdGggPSBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtblxuICAgIGxldCBsaHNfcGFkX3dpZHRoID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3BhZCA9IHNwYWNlc19zdHJpbmcgbGhzX3BhZF93aWR0aFxuXG4gICAgbGV0IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlID1cbiAgICAgIExpc3QubWFwIH5mOihmdW4gdiAtPiBpbmRlbnRfYW5kX25ld2xpbmUgWyBsaHNfcGFkOyB2IF0pXG4gICAgOztcblxuICAgIGxldCByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgZG9jdW1lbnRhdGlvbiA9XG4gICAgICBsZXQgZmxhZ19vbl9pdHNfb3duX2xpbmUgPVxuICAgICAgICBsZXQgZmxhZ193aWR0aCA9XG4gICAgICAgICAgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbiArIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICBpblxuICAgICAgICBpZiBmbGFnX3dpZHRoID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIHNwYWNpbmdfZG90XG4gICAgICAgIHRoZW4gaW5kZW50X2FuZF9uZXdsaW5lIFsgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGxldCB3cmFwcGVkX2RvY3VtZW50YXRpb24gPVxuICAgICAgICB3b3JkX3dyYXBfYW5kX3N0cmlwXG4gICAgICAgICAgZG9jdW1lbnRhdGlvblxuICAgICAgICAgIChudW1fY29scyAtIGxoc193aWR0aCAtIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24pXG4gICAgICBpblxuICAgICAgbWF0Y2ggd3JhcHBlZF9kb2N1bWVudGF0aW9uIHdpdGhcbiAgICAgIHwgW10gLT4gWyBmbGFnX29uX2l0c19vd25fbGluZSBdXG4gICAgICB8IGRvY193cmFwcGVkX2ZpcnN0X2xpbmUgOjogZG9jX3dyYXBwZWRfcmVzdF9saW5lcyAtPlxuICAgICAgICBsZXQgd3JhcHBlZF9kb2NfbGluZXMgPSBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIGluXG4gICAgICAgIGxldCBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIHggPVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCB4XG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICA7IGRvY193cmFwcGVkX2ZpcnN0X2xpbmVcbiAgICAgICAgICAgIF1cbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZsYWdfb25faXRzX293bl9saW5lXG4gICAgICAgICAgOjogcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBcIlwiXG4gICAgICAgICAgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgTGlzdC5jb25jYXRfbWFwIHQgfmY6KGZ1biB0IC0+XG4gICAgICAgIGxldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID1cbiAgICAgICAgICBsZXQgZmxhZyA9IHQuRmxhZ19pbmZvLm5hbWUgaW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChmbGFnIDo6IHQuYWxpYXNlcylcbiAgICAgICAgaW5cbiAgICAgICAgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIHQuZG9jIHw+IExpc3QuY29uY2F0KVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IERpc3BsYXkudG9fc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1YmNvbW1hbmRcbiAgICB8IEZsYWdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1YmNvbW1hbmQgLT4gXCJzdWJjb21tYW5kXCJcbiAgICB8IEZsYWcgLT4gXCJmbGFnXCJcbiAgOztcbmVuZFxuXG5sZXQgbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgaXNfZGFzaCA9IENoYXIuZXF1YWwgJy0nIGluXG4gIGxldCBhbGlzdCA9XG4gICAgKCogbm8gcGFydGlhbCBtYXRjaGVzIHVubGVzcyBzb21lIG5vbi1kYXNoIGNoYXIgaXMgcHJlc2VudCAqKVxuICAgIGlmIFN0cmluZy5mb3JfYWxsIHByZWZpeCB+Zjppc19kYXNoXG4gICAgdGhlbiBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIChkYXRhLCBfKSkgLT4ga2V5LCAoZGF0YSwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpKVxuICAgIGVsc2UgYWxpc3RcbiAgaW5cbiAgbWF0Y2hcbiAgICBMaXN0LmZpbHRlciBhbGlzdCB+ZjooZnVuY3Rpb25cbiAgICAgIHwga2V5LCAoXywgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4XG4gICAgICB8IGtleSwgKF8sIGBQcmVmaXgpIC0+IFN0cmluZy5pc19wcmVmaXgga2V5IH5wcmVmaXgpXG4gIHdpdGhcbiAgfCBbIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIF0gLT4gT2sgKGtleSwgZGF0YSlcbiAgfCBbXSAtPiBFcnJvciAoc3ByaW50ZiAhXCJ1bmtub3duICV7S2V5X3R5cGV9ICVzXCIga2V5X3R5cGUgcHJlZml4KVxuICB8IG1hdGNoZXMgLT5cbiAgICAobWF0Y2ggTGlzdC5maW5kIG1hdGNoZXMgfmY6KGZ1biAoa2V5LCBfKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeCkgd2l0aFxuICAgICB8IFNvbWUgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgLT4gT2sgKGtleSwgZGF0YSlcbiAgICAgfCBOb25lIC0+XG4gICAgICAgbGV0IG1hdGNoaW5nX2tleXMgPSBMaXN0Lm1hcCB+Zjpmc3QgbWF0Y2hlcyBpblxuICAgICAgIEVycm9yXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIVwiJXtLZXlfdHlwZX0gJXMgaXMgYW4gYW1iaWd1b3VzIHByZWZpeDogJXNcIlxuICAgICAgICAgICAga2V5X3R5cGVcbiAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgbWF0Y2hpbmdfa2V5cykpKVxuOztcblxubW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQmFzZV9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgYW5vbnMgOiBBbm9ucy50XG4gICAgOyBmbGFncyA6IEZsYWdfaW5mby50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBmaW5kX2ZsYWcgdCBwcmVmaXggPVxuICAgIG1hdGNoIFN0cmluZy5pc19wcmVmaXggcHJlZml4IH5wcmVmaXg6XCItXCIgd2l0aFxuICAgIHwgZmFsc2UgLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJGbGFncyBtdXN0IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XVxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY2hvaWNlcyA9XG4gICAgICAgIExpc3QubWFwIHQuZmxhZ3MgfmY6KGZ1biAoZmxhZ19pbmZvIDogRmxhZ19pbmZvLnQpIC0+XG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgZmxhZ19uYW1lID0gRmxhZ19pbmZvLmZsYWdfbmFtZSBmbGFnX2luZm8gaW5cbiAgICAgICAgICBPa1xuICAgICAgICAgICAgKExpc3QubWFwIChmbGFnX25hbWUgOjogZmxhZ19pbmZvLmFsaWFzZXMpIH5mOihmdW4ga2V5IC0+XG4gICAgICAgICAgICAgICBrZXksIChmbGFnX2luZm8sIGBQcmVmaXgpKSkpXG4gICAgICAgIHw+IE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCAoTGlzdC5jb25jYXQgY2hvaWNlcykgcHJlZml4IEZsYWdcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdldF91c2FnZSB0ID1cbiAgICBtYXRjaCB0LmFub25zIHdpdGhcbiAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gU3RhYmxlLkFub25zLkdyYW1tYXIuVjEudXNhZ2UgZ3JhbW1hclxuICA7O1xuZW5kXG5cbm1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QudCBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBmaW5kX3N1YmNvbW1hbmQgdCBwcmVmaXggPVxuICAgIG1hdGNoIFN0cmluZy5pc19wcmVmaXggcHJlZml4IH5wcmVmaXg6XCItXCIgd2l0aFxuICAgIHwgdHJ1ZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIlN1YmNvbW1hbmRzIG11c3Qgbm90IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgKGZvcmNlIHQuc3ViY29tbWFuZHMpIH5mOihmdW4gKGtleSwgYSkgLT4ga2V5LCAoYSwgYFByZWZpeCkpXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCBjaG9pY2VzIHByZWZpeCBTdWJjb21tYW5kXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBtYXAgPSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC5tYXBcbmVuZFxuXG5tb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5FeGVjX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5lbmRcblxubW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRnVsbHlfZm9yY2VkLk1vZGVsLnQgPVxuICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IGV4cGFuZGVkX3N1YmNvbW1hbmRzIHQgPVxuICAgIGxldCByZWMgZXhwYW5kID0gZnVuY3Rpb25cbiAgICAgIHwgRXhlYyAoXywgdCkgLT4gZXhwYW5kIHRcbiAgICAgIHwgQmFzaWMgXyAtPiBbIFtdIF1cbiAgICAgIHwgR3JvdXAgeyBzdWJjb21tYW5kczsgXyB9IC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCAoTGF6eS5mb3JjZSBzdWJjb21tYW5kcykgfmY6KGZ1biAobmFtZSwgdCkgLT5cbiAgICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHBhdGggLT4gbmFtZSA6OiBwYXRoKSAoZXhwYW5kIHQpKVxuICAgIGluXG4gICAgKCogUmV2ZXJzaW5nIHNvIHRoYXQgdGhlIGNvbW1hbmRzIHNob3cgdXAgaW4gdGhlIHNhbWUgb3JkZXIgYXMgaGVscCBpcyBvdXRwdXQgKilcbiAgICBMaXN0LnJldiAoZXhwYW5kIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5TZXhwYWJsZS5Nb2RlbC50ID1cbiAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50XG4gICAgfCBMYXp5IG9mIHQgTGF6eS50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGV4dHJhY3Rpb25fdmFyID0gQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcblxuICBtb2R1bGUgVmVyc2lvbmVkID0gU3RhYmxlLlNleHBhYmxlLlZlcnNpb25lZFxuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIGxldCBmIGkgc3VwcG9ydGVkIF8gPSBTZXQuYWRkIHN1cHBvcnRlZCBpIGluXG4gICAgVmVyc2lvbmVkLlZhcmlhbnRzLmZvbGQgfmluaXQ6KFNldC5lbXB0eSAobW9kdWxlIEludCkpIH52MTooZiAxKSB+djI6KGYgMikgfnYzOihmIDMpXG4gIDs7XG5cbiAgbGV0IG9mX3ZlcnNpb25lZCA9IFZlcnNpb25lZC50b19sYXRlc3RcbiAgbGV0IHRvX3ZlcnNpb25lZCB0IH52ZXJzaW9uX3RvX3VzZSA9IFZlcnNpb25lZC5vZl9sYXRlc3QgdCB+dmVyc2lvbl90b191c2VcbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogKHVuaXQgLT4gdClcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgZnVsbHlfZm9yY2VkIDogdCAtPiBGdWxseV9mb3JjZWQudCA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBCYXNpYyBiXG4gIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5tYXAgZyB+ZjpmdWxseV9mb3JjZWQpXG4gIHwgRXhlYyAoZSwgZikgLT4gRXhlYyAoZSwgZnVsbHlfZm9yY2VkIChmICgpKSlcbiAgfCBMYXp5IHRodW5rIC0+IGZ1bGx5X2ZvcmNlZCAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbmxldCByZWMgZ2V0X3N1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2ljIGIgLT4gYi5zdW1tYXJ5XG4gIHwgR3JvdXAgZyAtPiBnLnN1bW1hcnlcbiAgfCBFeGVjIChlLCBfKSAtPiBlLnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IGdldF9zdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IGhlbHBfdGV4dCA9IGBVc2VfQ29tbWFuZF91bml4XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBLZXlfdHlwZSA9IEtleV90eXBlXG5cbiAgbGV0IGFic19wYXRoID0gU3RhYmxlLkV4ZWNfaW5mby5hYnNfcGF0aFxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlXG4gIGxldCB3b3JkX3dyYXAgPSBGbGFnX2hlbHBfZGlzcGxheS53b3JkX3dyYXBfYW5kX3N0cmlwXG4gIGxldCBsb29rdXBfZXhwYW5kID0gbG9va3VwX2V4cGFuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFNlcmlhbGl6YWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nICogaW50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBob3N0IDogU3RyaW5nLnRcbiAgICAgICAgOyBwb3J0IDogSW50LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2tdXG5cbiAgICAgIGxldCB0b19zZXJpYWxpemFibGUgeyBob3N0OyBwb3J0IH0gPSBob3N0LCBwb3J0XG4gICAgICBsZXQgb2Zfc2VyaWFsaXphYmxlIChob3N0LCBwb3J0KSA9IHsgaG9zdDsgcG9ydCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IFwic3RhYmxlXCIgPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBTZXJpYWxpemFibGUudF07XG4gICAgICAgIFslZXhwZWN0XG4gICAgICAgICAge3xcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwXG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MCB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBvcGVuISBJbXBvcnRcbiAgICAgIG9wZW4hIFN0ZF9pbnRlcm5hbFxuICAgICAgb3BlbiEgVDBcblxuICAgICAgbGV0IHRvX3N0cmluZyB7IGhvc3Q7IHBvcnQgfSA9IHNwcmludGYgXCIlczolZFwiIGhvc3QgcG9ydFxuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JzonIHdpdGhcbiAgICAgICAgfCBbIGhvc3Q7IHBvcnQgXSAtPlxuICAgICAgICAgIGxldCBwb3J0ID1cbiAgICAgICAgICAgIHRyeSBJbnQub2Zfc3RyaW5nIHBvcnQgd2l0aFxuICAgICAgICAgICAgfCBfZXhuIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiBiYWQgcG9ydDogJXNcIiBzICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB7IGhvc3Q7IHBvcnQgfVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6ICVzXCIgcyAoKVxuICAgICAgOztcblxuICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cC5BdG9tIHMgYXMgc2V4cCAtPlxuICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IEZhaWx1cmUgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHApXG4gICAgICAgIHwgc2V4cCAtPiB0X29mX3NleHAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuXG4gICAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgICAgVW5pb25cbiAgICAgICAgICAgICAgICBbICgqIGhhbmRsZXMgdGhlIGhvc3Q6cG9ydCBzdHJpbmcgY2FzZSAqKVxuICAgICAgICAgICAgICAgICAgU3RyaW5nXG4gICAgICAgICAgICAgICAgICA7ICgqIGhhbmRsZXMgdGhlIGxpc3QgKGhvc3QgcG9ydCkgY2FzZSAgKilcbiAgICAgICAgICAgICAgICAgIExpc3QgKENvbnMgKFN0cmluZywgQ29ucyAoSW50ZWdlciwgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQxKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRfb2Zfc2V4cFwiID1cbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8KGxvY2FsaG9zdCA4MDgwKXx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9O1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3xsb2NhbGhvc3Q6ODA4MHx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9XG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHJvdW5kdHJpcFwiID1cbiAgICAgIFF1aWNrY2hlY2sudGVzdCBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgICAgWyV0ZXN0X3Jlc3VsdDogdF0gKHRfb2Zfc2V4cCAoc2V4cF9vZl90IHQpKSB+ZXhwZWN0OnQpXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbmluY2x1ZGUgTGF0ZXN0XG5cbmxldCBjcmVhdGUgfmhvc3QgfnBvcnQgPSB7IGhvc3Q7IHBvcnQgfVxubGV0IGhvc3QgdCA9IHQuaG9zdFxubGV0IHBvcnQgdCA9IHQucG9ydFxubGV0IHR1cGxlIHQgPSB0b19zZXJpYWxpemFibGUgdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5Ib3N0X2FuZF9wb3J0XCJcbiAgZW5kKVxuXG5pbmNsdWRlIChIYXNoYWJsZS5NYWtlX2JpbmFibGUgKExhdGVzdCkgOiBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoTGF0ZXN0KVxuXG5sZXQgdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiSG9zdF9hbmRfcG9ydFwiIHNleHBfb2ZfdFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb250YWluZXJzID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGV4Y2VwdGlvbiBQaWRfbXVzdF9iZV9wb3NpdGl2ZSBvZiBJbnQuU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGVuc3VyZSBpID0gaWYgaSA8PSAwIHRoZW4gcmFpc2UgKFBpZF9tdXN0X2JlX3Bvc2l0aXZlIGkpIGVsc2UgaVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSBGbi5pZFxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFdpdGhvdXRfY29udGFpbmVycylcbiAgICBpbmNsdWRlIFdpdGhvdXRfY29udGFpbmVyc1xuICBlbmRcblxuICBtb2R1bGUgTGF0ZXN0ID0gVjFcbmVuZFxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhYmxlLkxhdGVzdC5XaXRob3V0X2NvbnRhaW5lcnNcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2hdXG5cbmxldCBvZl9pbnQgaSA9IGVuc3VyZSBpXG5sZXQgdG9faW50ID0gRm4uaWRcbmxldCBvZl9zdHJpbmcgc3RyaW5nID0gZW5zdXJlIChJbnQub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG5sZXQgaW5pdCA9IG9mX2ludCAxXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuUGlkXCJcbiAgZW5kKVxuIiwiKCoqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHBvbHltb3JwaGljIGZ1bmN0aW9uYWwgZG91YmxlLWVuZGVkIHF1ZXVlLiAqKVxuXG4oKiogSW52YXJpYW50czpcbiAgICAtIHF1ZXVlLmxlbmd0aCA9IExpc3QubGVuZ3RoIHF1ZXVlLmZyb250ICsgTGlzdC5sZW5ndGggcXVldWUuYmFja1xuICAgIC0gaWYgcXVldWUgaGFzID49IDIgZWxlbWVudHMsIG5laXRoZXIgZnJvbnQgbm9yIGJhY2sgYXJlIGVtcHR5XG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmV4Y2VwdGlvbiBFbXB0eSBbQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlICdhIHQgPVxuICB7IGZyb250IDogJ2EgbGlzdFxuICA7IGJhY2sgOiAnYSBsaXN0XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgZiB0ID1cbiAgbGV0IG5fZnJvbnQgPSBMaXN0Lmxlbmd0aCB0LmZyb250IGluXG4gIGxldCBuX2JhY2sgPSBMaXN0Lmxlbmd0aCB0LmJhY2sgaW5cbiAgYXNzZXJ0ICh0Lmxlbmd0aCA9IG5fZnJvbnQgKyBuX2JhY2spO1xuICBhc3NlcnQgKHQubGVuZ3RoIDwgMiB8fCAobl9mcm9udCA8PiAwICYmIG5fYmFjayA8PiAwKSk7XG4gIExpc3QuaXRlciB0LmZyb250IH5mO1xuICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG47O1xuXG5sZXQgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjayA9XG4gIG1hdGNoIGZyb250LCBiYWNrIHdpdGhcbiAgfCBbXSwgW10gfCBbIF8gXSwgW10gfCBbXSwgWyBfIF0gfCBfIDo6IF8sIF8gOjogXyAtPiB7IGZyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IFtdLCBfIDo6IF8gOjogXyAtPlxuICAgIGxldCBiYWNrLCByZXZfZnJvbnQgPSBMaXN0LnNwbGl0X24gYmFjayAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250ID0gTGlzdC5yZXYgcmV2X2Zyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IF8gOjogXyA6OiBfLCBbXSAtPlxuICAgIGxldCBmcm9udCwgcmV2X2JhY2sgPSBMaXN0LnNwbGl0X24gZnJvbnQgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udDsgYmFjayA9IExpc3QucmV2IHJldl9iYWNrOyBsZW5ndGggfVxuOztcblxubGV0IGVtcHR5ID0geyBmcm9udCA9IFtdOyBiYWNrID0gW107IGxlbmd0aCA9IDAgfVxubGV0IGVucXVldWVfZnJvbnQgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5mcm9udDooeCA6OiB0LmZyb250KSB+YmFjazp0LmJhY2tcbmxldCBlbnF1ZXVlX2JhY2sgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5iYWNrOih4IDo6IHQuYmFjaykgfmZyb250OnQuZnJvbnRcblxubGV0W0Bjb2xkXSByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8ZnJvbnR8ID0gMCwgfGJhY2t8ID49IDJcIl1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8YmFja3wgPSAwLCB8ZnJvbnR8ID49IDJcIl1cbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5mcm9udDp4cyB+YmFjazp0LmJhY2tcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+YmFjazp4cyB+ZnJvbnQ6dC5mcm9udFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gcGVla19mcm9udF9leG4gdCwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFja19leG4gdCA9IHBlZWtfYmFja19leG4gdCwgZHJvcF9iYWNrX2V4biB0XG5cbmxldCBvcHRpb25hbCBmIHQgPVxuICBtYXRjaCBmIHQgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIEVtcHR5IC0+IE5vbmVcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBvcHRpb25hbCBwZWVrX2Zyb250X2V4biB0XG5sZXQgcGVla19iYWNrIHQgPSBvcHRpb25hbCBwZWVrX2JhY2tfZXhuIHRcbmxldCBkcm9wX2Zyb250IHQgPSBvcHRpb25hbCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZHJvcF9iYWNrIHQgPSBvcHRpb25hbCBkcm9wX2JhY2tfZXhuIHRcbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBvcHRpb25hbCBkZXF1ZXVlX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBvcHRpb25hbCBkZXF1ZXVlX2JhY2tfZXhuIHRcblxubGV0IGVucXVldWUgdCBzaWRlIHggPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB4XG47O1xuXG5sZXQgcGVlayB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbjs7XG5cbmxldCBwZWVrX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFja19leG4gdFxuOztcblxubGV0IGRyb3AgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgcmV2IHQgPSB7IHQgd2l0aCBmcm9udCA9IHQuYmFjazsgYmFjayA9IHQuZnJvbnQgfVxuXG5tb2R1bGUgQXJiaXRyYXJ5X29yZGVyID0gc3RydWN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2X2FwcGVuZCB0LmZyb250IHQuYmFja1xuICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdClcbiAgbGV0IHRvX3NlcXVlbmNlIHQgPSBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKVxuXG4gIGxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gICAgbGV0IG9wZW4gTSBpblxuICAgIExpc3Quc3VtIChtb2R1bGUgTSkgdC5mcm9udCB+ZiArIExpc3Quc3VtIChtb2R1bGUgTSkgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50IHQuZnJvbnQgfmYgKyBMaXN0LmNvdW50IHQuYmFjayB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIHQuZnJvbnQgfmYgJiYgTGlzdC5mb3JfYWxsIHQuYmFjayB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyB0LmZyb250IH5mIHx8IExpc3QuZXhpc3RzIHQuYmFjayB+ZlxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgdC5mcm9udCB4IHx8IExpc3QubWVtIH5lcXVhbCB0LmJhY2sgeFxuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIExpc3QuaXRlciB0LmZyb250IH5mO1xuICAgIExpc3QuaXRlciB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICBMaXN0LmZvbGQgdC5mcm9udCB+aW5pdCB+ZiB8PiBmdW4gaW5pdCAtPiBMaXN0LmZvbGQgdC5iYWNrIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kIHQuYmFjayB+ZlxuICAgIHwgc29tZSAtPiBzb21lXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZF9tYXAgdC5mcm9udCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QuZmluZF9tYXAgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID1cbiAgICBtYXRjaCBMaXN0Lm1heF9lbHQgdC5mcm9udCB+Y29tcGFyZSwgTGlzdC5tYXhfZWx0IHQuYmFjayB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lLCBvcHQgfCBvcHQsIE5vbmUgLT4gb3B0XG4gICAgfCAoU29tZSB4IGFzIHNvbWVfeCksIChTb21lIHkgYXMgc29tZV95KSAtPlxuICAgICAgaWYgY29tcGFyZSB4IHkgPj0gMCB0aGVuIHNvbWVfeCBlbHNlIHNvbWVfeVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWluX2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1pbl9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA8PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfY29udGFpbmVyIChGIDogc2lnXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgPSBGLnRvX2xpc3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgKHRvX2xpc3QgdCkgeFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKHRvX2xpc3QgdCkgfmluaXQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBMaXN0LnN1bSBtICh0b19saXN0IHQpIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwICh0b19saXN0IHQpIH5mXG4gIGxldCB0b19hcnJheSB0ID0gTGlzdC50b19hcnJheSAodG9fbGlzdCB0KVxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gTGlzdC5taW5fZWx0ICh0b19saXN0IHQpIH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1heF9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuZW5kXG5cbm1vZHVsZSBGcm9udF90b19iYWNrID0gc3RydWN0XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5mcm9udDpsaXN0IH5iYWNrOltdXG4gIGxldCB0b19saXN0IHQgPSB0LmZyb250IEAgTGlzdC5yZXYgdC5iYWNrXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5iYWNrKSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGJhY2sgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udDpbXSB+YmFja1xuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBCYWNrX3RvX2Zyb250ID0gc3RydWN0XG4gIGxldCB0b19saXN0IHQgPSB0LmJhY2sgQCBMaXN0LnJldiB0LmZyb250XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5iYWNrOmxpc3QgfmZyb250OltdXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmZyb250KSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGZyb250ID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2s6W11cbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIEZyb250X3RvX2JhY2tcblxubGV0IHNpbmdsZXRvbiB4ID0gb2ZfbGlzdCBbIHggXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgZWx0IC0+IGZvbGQgKGYgZWx0KSB+aW5pdDp0IH5mOmVucXVldWVfYmFjaylcbiAgICA7O1xuXG4gICAgbGV0IHJldHVybiA9IHNpbmdsZXRvblxuXG4gICAgbGV0IG1hcCA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICB7IGZyb250ID0gTGlzdC5tYXAgdC5mcm9udCB+ZjsgYmFjayA9IExpc3QubWFwIHQuYmFjayB+ZjsgbGVuZ3RoID0gdC5sZW5ndGggfSlcbiAgICA7O1xuICBlbmQpXG5cbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9IExpc3QuY29tcGFyZSBjbXAgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxubGV0IGVxdWFsIGVxIHQxIHQyID0gTGlzdC5lcXVhbCBlcSAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5cbmxldCBoYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfYSBzdGF0ZSB0ID1cbiAgZm9sZCB+ZjpoYXNoX2ZvbGRfYSB+aW5pdDooWyVoYXNoX2ZvbGQ6IGludF0gc3RhdGUgKGxlbmd0aCB0KSkgdFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gWyVzZXhwX29mOiBlbHQgbGlzdF0gKHRvX2xpc3QgdClcbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChbJW9mX3NleHA6IGVsdCBsaXN0XSBzZXhwKVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IExpc3QudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgbWFwID0gbWFwXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODNmOTY5ODItNDk5Mi0xMWU2LTkxOWQtZmJkZGNmZGNhNTc2XCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5GZGVxdWVcIlxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcblxuICAgICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgbmV4dCBhY2MgbiA9XG4gICAgICAgICAgICBpZiBsZW4gPSBuXG4gICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGFzc2VydCAobiA9IGxlbmd0aCBhY2MpO1xuICAgICAgICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgICAgICAgbG9vcCBuZXh0IChlbnF1ZXVlX2JhY2sgYWNjIHgpIChuICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIG5leHQgZW1wdHkgMFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJ1aWxkIH5mcm9udCB+YmFjayA9XG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGZyb250ICsgTGlzdC5sZW5ndGggYmFjayBpblxuICAgIGxldCB0ID0geyBsZW5ndGg7IGZyb250OyBiYWNrIH0gaW5cbiAgICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gICAgdFxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRmRlcXVlXG5cbmxldCBlbnF1ZXVlID0gZW5xdWV1ZV9iYWNrXG5sZXQgcGVla19leG4gPSBwZWVrX2Zyb250X2V4blxubGV0IHBlZWsgPSBwZWVrX2Zyb250XG5sZXQgZGVxdWV1ZV9leG4gPSBkZXF1ZXVlX2Zyb250X2V4blxubGV0IGRlcXVldWUgPSBkZXF1ZXVlX2Zyb250XG5sZXQgZHJvcF9leG4gPSBkcm9wX2Zyb250X2V4blxubGV0IHRvX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay50b19zZXF1ZW5jZVxubGV0IG9mX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay5vZl9zZXF1ZW5jZVxuXG4oKiBEZXByZWNhdGVkIGFsaWFzZXMgKilcbmxldCB0b3AgPSBwZWVrXG5sZXQgdG9wX2V4biA9IHBlZWtfZXhuXG5sZXQgZGlzY2FyZF9leG4gPSBkcm9wX2V4blxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIG9wdGlvblxuICAgICAgOyBtdXRhYmxlIHNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9ybWF0ID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb24gcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgICAgbGV0IG9mX2Zvcm1hdCAodjEgOiAnYSBGb3JtYXQudCkgOiAnYSB0ID0geyB2YWx1ZSA9ICF2MTsgc2V0X2F0ID0gWyVoZXJlXSB9XG4gICAgICBsZXQgdG9fZm9ybWF0ICh0IDogJ2EgdCkgOiAnYSBGb3JtYXQudCA9IHJlZiB0LnZhbHVlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGb3JtYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZVxuICAgICAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgICAgIChGb3JtYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFVuc3RhYmxlID0gU3RhYmxlLlYxXG5vcGVuIFN0YWJsZS5UXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5ULnRcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgeyB2YWx1ZTsgc2V0X2F0IH0gPVxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiBbJW1lc3NhZ2UgXCJ1bnNldFwiXVxuICB8IFNvbWUgdmFsdWUgLT5cbiAgICBbJW1lc3NhZ2UgXCJcIiAodmFsdWUgOiBhKSB+c2V0X2F0OihzZXRfYXQgfD4gU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nKV1cbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuOztcblxubGV0IGNyZWF0ZSAoKSA9IHsgdmFsdWUgPSBOb25lOyBzZXRfYXQgPSBbJWhlcmVdIH1cblxubGV0IHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWUgPVxuICB0LnZhbHVlIDwtIFNvbWUgdmFsdWU7XG4gIHQuc2V0X2F0IDwtIGhlcmVcbjs7XG5cbmxldCBzZXRfaWZfbm9uZSB0IGhlcmUgdmFsdWUgPSBpZiBPcHRpb24uaXNfbm9uZSB0LnZhbHVlIHRoZW4gc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZVxuXG5sZXQgc2V0IHQgaGVyZSB2YWx1ZSA9XG4gIGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWVcbiAgdGhlbiAoXG4gICAgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZTtcbiAgICBPayAoKSlcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTZXRfb25jZS5zZXRfZXhuXSBhbHJlYWR5IHNldFwiXG4gICAgICAgICAgfnNldHRpbmdfYXQ6KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgICAgIH5wcmV2aW91c2x5X3NldF9hdDoodC5zZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaGVyZSB2YWx1ZSA9IE9yX2Vycm9yLm9rX2V4biAoc2V0IHQgaGVyZSB2YWx1ZSlcbmxldCBnZXQgdCA9IHQudmFsdWVcblxubGV0IGdldF9leG4gKHQgOiBfIHQpIGhlcmUgPVxuICBtYXRjaCB0LnZhbHVlIHdpdGhcbiAgfCBTb21lIGEgLT4gYVxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIltTZXRfb25jZS5nZXRfZXhuXSB1bnNldFwiIH5hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGlzX25vbmUgdCA9IE9wdGlvbi5pc19ub25lIHQudmFsdWVcbmxldCBpc19zb21lIHQgPSBPcHRpb24uaXNfc29tZSB0LnZhbHVlXG5sZXQgaXRlciB0IH5mID0gT3B0aW9uLml0ZXIgdC52YWx1ZSB+ZlxuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlIHQgPSBnZXRfZXhuIHQgWyVoZXJlXVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU2hhcGUgPSBDb21tYW5kX3NoYXBlLlN0YWJsZVxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIENvbW1hbmRfaW50ZlxubW9kdWxlIFNoYXBlID0gQ29tbWFuZF9zaGFwZVxuXG4oKiBpbiBvcmRlciB0byBkZWZpbmUgZXhwZWN0IHRlc3RzLCB3ZSB3YW50IHRvIHJhaXNlIHJhdGhlciB0aGFuIGV4aXQgaWYgdGhlIGNvZGUgaXNcbiAgIHJ1bm5pbmcgaW4gdGhlIHRlc3QgcnVubmVyIHByb2Nlc3MgKilcbmxldCByYWlzZV9pbnN0ZWFkX29mX2V4aXQgPVxuICBtYXRjaCBQcHhfaW5saW5lX3Rlc3RfbGliLlJ1bnRpbWUudGVzdGluZyB3aXRoXG4gIHwgYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyIC0+IHRydWVcbiAgfCBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXIgfCBgTm90X3Rlc3RpbmcgLT4gZmFsc2Vcbjs7XG5cbmV4Y2VwdGlvbiBFeGl0X2NhbGxlZCBvZiB7IHN0YXR1cyA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIFtyYWlzZV9pbnN0ZWFkX29mX2V4aXRdLXJlc3BlY3Rpbmcgd3JhcHBlcnMgZm9yIFtleGl0XSBhbmQgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgbGV0IGV4aXQgc3RhdHVzID1cbiAgICBpZiByYWlzZV9pbnN0ZWFkX29mX2V4aXQgdGhlbiByYWlzZSAoRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSkgZWxzZSBleGl0IHN0YXR1c1xuICA7O1xuXG4gIG1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgICBsZXQgdG9fc3RyaW5nID0gRXhuLnRvX3N0cmluZ1xuXG4gICAgbGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID1cbiAgICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBmICgpIHdpdGhcbiAgICAgICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyA9IDAgfSBhcyBleG4gLT4gcHJpbnRfcyBbJXNleHAgKGV4biA6IGV4bildKVxuICAgICAgZWxzZSBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgdW53b3JkcyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB4c1xubGV0IHVucGFyYWdyYXBocyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblxcblwiIHhzXG5cbmV4Y2VwdGlvbiBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG9mIHN0cmluZ1xuXG5sZXQgZGllIGZtdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAoKSAtPiByYWlzZSAoRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cpKSBmbXRcbmxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gU2hhcGUuUHJpdmF0ZS5oZWxwX3NjcmVlbl9jb21wYXJlXG5cbigqIHVuaXZlcnNhbCBtYXBzIGFyZSB1c2VkIHRvIHBhc3MgYXJvdW5kIHZhbHVlcyBiZXR3ZWVuIGRpZmZlcmVudCBiaXRzXG4gICBvZiBjb21tYW5kIGxpbmUgcGFyc2luZyBjb2RlIHdpdGhvdXQgaGF2aW5nIGEgaHVnZSBpbXBhY3Qgb24gdGhlXG4gICB0eXBlcyBpbnZvbHZlZFxuXG4gICAxLiBwYXNzaW5nIHZhbHVlcyBmcm9tIHBhcnNlZCBhcmdzIHRvIGNvbW1hbmQtbGluZSBhdXRvY29tcGxldGUgZnVuY3Rpb25zXG4gICAyLiBwYXNzaW5nIHNwZWNpYWwgdmFsdWVzIHRvIGEgYmFzZSBjb21tYW5kcyB0aGF0IHJlcXVlc3QgdGhlbSBpbiB0aGVpciBzcGVjXG4gKiBleHBhbmRlZCBzdWJjb21tYW5kIHBhdGhcbiAqIGFyZ3MgcGFzc2VkIHRvIHRoZSBiYXNlIGNvbW1hbmRcbiAqIGhlbHAgdGV4dCBmb3IgdGhlIGJhc2UgY29tbWFuZFxuKilcbm1vZHVsZSBFbnYgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbml2X21hcFxuXG4gIGxldCBrZXlfY3JlYXRlIG5hbWUgPSBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lIHNleHBfb2Zfb3BhcXVlXG4gIGxldCBtdWx0aV9hZGQgPSBVbml2X21hcC5NdWx0aS5hZGRcbiAgbGV0IHNldF93aXRoX2RlZmF1bHQgPSBVbml2X21hcC5XaXRoX2RlZmF1bHQuc2V0XG5lbmRcblxubW9kdWxlIEF1dG9fY29tcGxldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbmVuZFxuXG5tb2R1bGUgQ29tcGxldGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IEF1dG9fY29tcGxldGUudCBvcHRpb25cblxuICBsZXQgcnVuX2FuZF9leGl0IHQgZW52IH5wYXJ0IDogbmV2ZXJfcmV0dXJucyA9XG4gICAgT3B0aW9uLml0ZXIgdCB+ZjooZnVuIGNvbXBsZXRpb25zIC0+XG4gICAgICBMaXN0Lml0ZXIgfmY6cHJpbnRfZW5kbGluZSAoY29tcGxldGlvbnMgZW52IH5wYXJ0KSk7XG4gICAgZXhpdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFyZ190eXBlIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBleHRyYV9kb2MgOiAnYSB0IC0+IHN0cmluZyBvcHRpb24gbGF6eV90XG4gIHZhbCBrZXkgOiAnYSB0IC0+ICdhIEVudi5NdWx0aS5LZXkudCBvcHRpb25cbiAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBDb21wbGV0ZXIudFxuICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAoJ2EsIGV4bikgcmVzdWx0XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgLT4gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBtYXAgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYiB0IC0+IGY6KCdiIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9sYXp5IDogP2tleTonYSBFbnYuTXVsdGkuS2V5LnQgLT4gJ2EgdCBsYXp5X3QgLT4gJ2EgdFxuXG4gIHZhbCBvZl9tYXBcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAnYSBTdHJpbmcuTWFwLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIC0+ICdhIHRcblxuICB2YWwgZW51bWVyYXRlZFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChtb2R1bGUgRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBjb21tYV9zZXBhcmF0ZWRcbiAgICA6ICA/YWxsb3dfZW1wdHk6Ym9vbFxuICAgIC0+ID9rZXk6J2EgbGlzdCBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiA/c3RyaXBfd2hpdGVzcGFjZTpib29sXG4gICAgLT4gP3VuaXF1ZV92YWx1ZXM6Ym9vbFxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBsaXN0IHRcblxuICBtb2R1bGUgRXhwb3J0IDogc2lnXG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGludCA6IGludCB0XG4gICAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIGJvb2wgOiBib29sIHRcbiAgICB2YWwgZGF0ZSA6IERhdGUudCB0XG4gICAgdmFsIHBlcmNlbnQgOiBQZXJjZW50LnQgdFxuICAgIHZhbCBob3N0X2FuZF9wb3J0IDogSG9zdF9hbmRfcG9ydC50IHRcbiAgICB2YWwgc2V4cCA6IFNleHAudCB0XG4gICAgdmFsIHNleHBfY29udiA6ID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnQgLT4gKFNleHAudCAtPiAnYSkgLT4gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgY29tcGxldGUgOiBfIHQgLT4gQXV0b19jb21wbGV0ZS50XG4gICAgdmFsIHBhcnNlIDogJ2EgdCAtPiBzdHJpbmcgLT4gJ2EgT3JfZXJyb3IudFxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGFyc2UgOiBzdHJpbmcgLT4gJ2FcbiAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICA7IGtleSA6ICdhIFVuaXZfbWFwLk11bHRpLktleS50IG9wdGlvblxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgcGFyc2UgdCBzID0gUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdC5wYXJzZSBzKVxuICBsZXQgY3JlYXRlJyA/Y29tcGxldGUgP2tleSBwYXJzZSB+ZXh0cmFfZG9jID0geyBwYXJzZTsga2V5OyBjb21wbGV0ZTsgZXh0cmFfZG9jIH1cblxuICBsZXQgY3JlYXRlID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyA9XG4gICAgY3JlYXRlJyA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgfmV4dHJhX2RvYzooTGF6eS5mcm9tX3ZhbCBOb25lKVxuICA7O1xuXG4gIGxldCBtYXAgP2tleSB0IH5mID0geyB0IHdpdGgga2V5OyBwYXJzZSA9IChmdW4gcyAtPiBmICh0LnBhcnNlIHMpKSB9XG5cbiAgbGV0IG9mX2xhenkgP2tleSB0ID1cbiAgICBsZXQgcGFyc2Ugc3RyID0gKGZvcmNlIHQpLnBhcnNlIHN0ciBpblxuICAgIGxldCBjb21wbGV0ZSBlbnYgfnBhcnQgPVxuICAgICAgbWF0Y2ggKGZvcmNlIHQpLmNvbXBsZXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBTZWUgW3J1bl9hbmRfZXhpdF0gLSBubyBjb21wbGV0aW9ucyBpcyBlcXVpdmFsZW50IHRvIG5vdCBoYXZpbmcgYVxuICAgICAgICAgICBbQ29tcGxldGVdLiAqKVxuICAgICAgICBbXVxuICAgICAgfCBTb21lIGNvbXBsZXRlIC0+IGNvbXBsZXRlIGVudiB+cGFydFxuICAgIGluXG4gICAgbGV0IGV4dHJhX2RvYyA9IExhenkuYmluZCB0IH5mOmV4dHJhX2RvYyBpblxuICAgIHsgcGFyc2U7IGNvbXBsZXRlID0gU29tZSBjb21wbGV0ZTsga2V5OyBleHRyYV9kb2MgfVxuICA7O1xuXG4gIGxldCBzdHJpbmcgPSBjcmVhdGUgRm4uaWRcbiAgbGV0IGludCA9IGNyZWF0ZSBJbnQub2Zfc3RyaW5nXG4gIGxldCBjaGFyID0gY3JlYXRlIENoYXIub2Zfc3RyaW5nXG4gIGxldCBmbG9hdCA9IGNyZWF0ZSBGbG9hdC5vZl9zdHJpbmdcbiAgbGV0IGRhdGUgPSBjcmVhdGUgRGF0ZS5vZl9zdHJpbmdcbiAgbGV0IHBlcmNlbnQgPSBjcmVhdGUgUGVyY2VudC5vZl9zdHJpbmdcbiAgbGV0IGhvc3RfYW5kX3BvcnQgPSBjcmVhdGUgSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmdcbiAgbGV0IHNleHAgPSBjcmVhdGUgU2V4cC5vZl9zdHJpbmdcbiAgbGV0IHNleHBfY29udiA/Y29tcGxldGUgb2Zfc2V4cCA9IGNyZWF0ZSA/Y29tcGxldGUgKGZ1biBzIC0+IG9mX3NleHAgKFNleHAub2Zfc3RyaW5nIHMpKVxuXG4gIGxldCBhc3NvY2lhdGl2ZVxuICAgICAgICA/KGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgPSB0cnVlKVxuICAgICAgICA/KGxpc3RfdmFsdWVzX2luX2hlbHAgPSB0cnVlKVxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBsZXQgb3BlbiBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICB2YWwgaXNfcHJlZml4IDogc3RyaW5nIC0+IHByZWZpeDpzdHJpbmcgLT4gYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgVCA6XG4gICAgICAgICAgICB7IGNtcCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAgICAgICAgIDsgbWFwIDogKHN0cmluZywgJ2EsICdjbXApIE1hcC50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAtPiAnYSB0XG4gICAgZW5kIGluXG4gICAgbGV0IChUIHsgY21wID0gKG1vZHVsZSBTKTsgbWFwIH0pID1cbiAgICAgIGxldCBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5XG4gICAgICAgICAgICAodHlwZSBjbXApXG4gICAgICAgICAgICAobW9kdWxlIFMgOiBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgICAgICBhbGlzdFxuICAgICAgICA9XG4gICAgICAgIG1hdGNoIE1hcC5vZl9hbGlzdCAobW9kdWxlIFMpIGFsaXN0IHdpdGhcbiAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IChfIDogUy50KSAtPlxuICAgICAgICAgIGxldCBkdXBsaWNhdGVfa2V5cyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrLCAoXyA6ICdhKSkgLT4gaywgaylcbiAgICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIFMpXG4gICAgICAgICAgICB8PiBNYXAuZmlsdGVyIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiB0cnVlKVxuICAgICAgICAgICAgfD4gTWFwLmRhdGFcbiAgICAgICAgICBpblxuICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5vZl9hbGlzdF9leG5cIiAoZHVwbGljYXRlX2tleXMgOiBzdHJpbmcgbGlzdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICBsZXQgbWFrZSBjbXAgPSBUIHsgY21wOyBtYXAgPSBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5IGNtcCBhbGlzdCB9IGluXG4gICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIG1ha2UgKG1vZHVsZSBTdHJpbmcpIGVsc2UgbWFrZSAobW9kdWxlIFN0cmluZy5DYXNlbGVzcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXggPVxuICAgICAgbWF0Y2ggYXV0b19jb21wbGV0ZSB3aXRoXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgbWFwKSB+ZjooZnVuIChuYW1lLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeCB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKiBCYXNoIGNvbXBsZXRpb24gd2lsbCBub3QgYWNjZXB0IFtGb29dIGFzIGEgY29tcGxldGlvbiBmb3IgW2ZdLiBTbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICB0byBtYXRjaCB0aGUgY2FwaXRhbGl6YXRpb24gZ2l2ZW4uICopXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1Ym8gbmFtZSB+cG9zOihTdHJpbmcubGVuZ3RoIHByZWZpeCkgaW5cbiAgICAgICAgICAgIGxldCBuYW1lID0gcHJlZml4IF4gc3VmZml4IGluXG4gICAgICAgICAgICBTb21lIG5hbWUpXG4gICAgaW5cbiAgICBsZXQgZmluZCBhcmcgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgbWFwIGFyZyB3aXRoXG4gICAgICB8IFNvbWUgXyBhcyBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChuYW1lLCBfKSAtPiBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6YXJnKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIChfc2luZ2xldG9uX2tleSwgdikgXSAtPiBTb21lIHZcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgICAoKiBJbiB0aGUgdHdvLW9yLW1vcmUgY2FzZSB3ZSBjb3VsZCBwcm92aWRlIGZpbHRlcmVkIGhlbHAgdGV4dCwgYnV0IGl0J3NcbiAgICAgICAgICAgICAgICAgbW9yZSBnZW5lcmFsbHkgdXNlZnVsIHRvIGxpc3QgYWxsIHRoZSBvcHRpb25zLCB3aGljaCB3ZSBkbyBiZWxvdy4gKilcbiAgICAgICAgICAgICAgTm9uZSkpXG4gICAgaW5cbiAgICBjcmVhdGUnXG4gICAgICB+ZXh0cmFfZG9jOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChpZiBsaXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChNYXAua2V5cyBtYXApIGluXG4gICAgICAgICAgICAgU29tZSBbJXN0cmluZyBcIihjYW4gYmU6ICV7dmFsdWVzfSlcIl0pXG4gICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICA/a2V5XG4gICAgICB+Y29tcGxldGVcbiAgICAgIChmdW4gYXJnIC0+XG4gICAgICAgICBtYXRjaCBmaW5kIGFyZyB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHZhbGlkX2FyZ3VtZW50c19leHRyYSA9XG4gICAgICAgICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBcIlwiIGVsc2UgXCIgKGNhc2UgaW5zZW5zaXRpdmUpXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgXCJ2YWxpZCBhcmd1bWVudHMlczogeyVzfVwiXG4gICAgICAgICAgICAgdmFsaWRfYXJndW1lbnRzX2V4dHJhXG4gICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTWFwLmtleXMgbWFwKSlcbiAgICAgICAgICAgICAoKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGFzc29jaWF0aXZlXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgIGFsaXN0XG4gIDs7XG5cbiAgbGV0IG9mX21hcFxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBtYXBcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChNYXAudG9fYWxpc3QgbWFwKVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobGV0JW1hcC5MaXN0IHQgPSBFLmFsbCBpblxuICAgICAgIEUudG9fc3RyaW5nIHQsIHQpXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIGVudW1lcmF0ZWRcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBFXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgWyVzZXhwICh0IDogRS50KV1cbiAgICAgIGVuZClcbiAgOztcblxuICBsZXQgYm9vbCA9IGVudW1lcmF0ZWQgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2UgKG1vZHVsZSBCb29sKVxuXG4gIGxldCBjb21tYV9zZXBhcmF0ZWRcbiAgICAgICAgPyhhbGxvd19lbXB0eSA9IGZhbHNlKVxuICAgICAgICA/a2V5XG4gICAgICAgID8oc3RyaXBfd2hpdGVzcGFjZSA9IGZhbHNlKVxuICAgICAgICA/KHVuaXF1ZV92YWx1ZXMgPSBmYWxzZSlcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgc3RyaXAgPSBpZiBzdHJpcF93aGl0ZXNwYWNlIHRoZW4gZnVuIHN0ciAtPiBTdHJpbmcuc3RyaXAgc3RyIGVsc2UgRm4uaWQgaW5cbiAgICBsZXQgY29tcGxldGUgPVxuICAgICAgT3B0aW9uLm1hcCB0LmNvbXBsZXRlIH5mOihmdW4gY29tcGxldGVfZWx0IGVudiB+cGFydCAtPlxuICAgICAgICBsZXQgcHJlZml4ZXMsIHN1ZmZpeCA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHBhcnQgfm9uOicsJyB8PiBMaXN0LnJldiB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBbXSwgcGFydFxuICAgICAgICAgIHwgaGQgOjogdGwgLT4gTGlzdC5yZXYgdGwsIGhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc19hbGxvd2VkID1cbiAgICAgICAgICBpZiBub3QgdW5pcXVlX3ZhbHVlc1xuICAgICAgICAgIHRoZW4gZnVuIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgc2Vlbl9hbHJlYWR5ID0gcHJlZml4ZXMgfD4gTGlzdC5tYXAgfmY6c3RyaXAgfD4gU3RyaW5nLlNldC5vZl9saXN0IGluXG4gICAgICAgICAgICBmdW4gY2hvaWNlIC0+IG5vdCAoU2V0Lm1lbSBzZWVuX2FscmVhZHkgKHN0cmlwIGNob2ljZSkpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY2hvaWNlcyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChjb21wbGV0ZV9lbHQgZW52IH5wYXJ0OnN1ZmZpeCkgfmY6KGZ1biBjaG9pY2UgLT5cbiAgICAgICAgICAgICAgKG5vdCAoU3RyaW5nLm1lbSBjaG9pY2UgJywnKSkgJiYgaXNfYWxsb3dlZCBjaG9pY2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgICgqIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIGNob2ljZSB0byBhdXRvLWNvbXBsZXRlLCBhZGQgYSBzZWNvbmQgY2hvaWNlIHdpdGhcbiAgICAgICAgICAgICBhIHRyYWlsaW5nIGNvbW1hIHNvIHRoYXQgYXV0by1jb21wbGV0aW9uIHdpbGwgZ28gdG8gdGhlIGVuZCBidXQgYmFzaFxuICAgICAgICAgICAgIHdvbid0IGFkZCBhIHNwYWNlLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNob2ljZXMsIG9yIGEgc2luZ2xlIGNob2ljZVxuICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBmaW5hbCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSBkdW1teSBvcHRpb24uICopXG4gICAgICAgICAgfCBbIGNob2ljZSBdIC0+IFsgY2hvaWNlOyBjaG9pY2UgXiBcIixcIiBdXG4gICAgICAgICAgfCBjaG9pY2VzIC0+IGNob2ljZXNcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgY2hvaWNlcyB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAocHJlZml4ZXMgQCBbIGNob2ljZSBdKSkpXG4gICAgaW5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgc3RyaW5nID0gc3RyaXAgc3RyaW5nIGluXG4gICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFsbG93X2VtcHR5XG4gICAgICAgIHRoZW4gW11cbiAgICAgICAgZWxzZSBmYWlsd2l0aCBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5jb21tYV9zZXBhcmF0ZWQ6IGVtcHR5IGxpc3Qgbm90IGFsbG93ZWRcIlxuICAgICAgZWxzZSBMaXN0Lm1hcCAoU3RyaW5nLnNwbGl0IHN0cmluZyB+b246JywnKSB+ZjooZnVuIHN0ciAtPiB0LnBhcnNlIChzdHJpcCBzdHIpKVxuICAgIGluXG4gICAgY3JlYXRlID9rZXkgP2NvbXBsZXRlIG9mX3N0cmluZ1xuICA7O1xuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc3RyaW5nID0gc3RyaW5nXG4gICAgbGV0IGludCA9IGludFxuICAgIGxldCBjaGFyID0gY2hhclxuICAgIGxldCBmbG9hdCA9IGZsb2F0XG4gICAgbGV0IGJvb2wgPSBib29sXG4gICAgbGV0IGRhdGUgPSBkYXRlXG4gICAgbGV0IHBlcmNlbnQgPSBwZXJjZW50XG4gICAgbGV0IGhvc3RfYW5kX3BvcnQgPSBob3N0X2FuZF9wb3J0XG4gICAgbGV0IHNleHAgPSBzZXhwXG4gICAgbGV0IHNleHBfY29udiA9IHNleHBfY29udlxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcGxldGUgdCA9XG4gICAgICBtYXRjaCB0LmNvbXBsZXRlIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGZcbiAgICAgIHwgTm9uZSAtPiBmdW4gXyB+cGFydDpfIC0+IFtdXG4gICAgOztcblxuICAgIGxldCBwYXJzZSB0IHN0ciA9IHBhcnNlIHQgc3RyIHw+IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZsYWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE51bV9vY2N1cnJlbmNlcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50ID1cbiAgICAgIHsgYXRfbGVhc3Rfb25jZSA6IGJvb2xcbiAgICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IF8gfSBmbGFnX25hbWUgPVxuICAgICAgdG9faGVscF9zdHJpbmcgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH0gfmZsYWdfbmFtZVxuICAgIDs7XG5cbiAgICBsZXQgYW55ID0geyBhdF9sZWFzdF9vbmNlID0gZmFsc2U7IGF0X21vc3Rfb25jZSA9IGZhbHNlIH1cbiAgICBsZXQgYXRfbGVhc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IGZhbHNlIH1cbiAgICBsZXQgYXRfbW9zdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gZmFsc2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICAgIGxldCBleGFjdGx5X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgZW5kXG5cbiAgdHlwZSBhY3Rpb24gPVxuICAgIHwgTm9fYXJnIG9mIChFbnYudCAtPiBFbnYudClcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgb2YgKEVudi50IC0+IHN0cmluZylcbiAgICB8IEFyZyBvZiAoRW52LnQgLT4gc3RyaW5nIC0+IEVudi50KSAqIENvbXBsZXRlci50XG4gICAgfCBSZXN0IG9mIChFbnYudCAtPiBzdHJpbmcgbGlzdCAtPiBFbnYudClcblxuICBtb2R1bGUgSW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA6IHN0cmluZyBsaXN0XG4gICAgICAoKiBbYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBdIGFyZSBhbGlhc2VzIHRoYXQgZG9uJ3Qgc2hvdyB1cCBpbiAtaGVscCBvdXRwdXQuXG4gICAgICAgICBDdXJyZW50bHkgdGhleSdyZSBvbmx5IHVzZWQgZm9yIGRvdWJsZS1kYXNoIGJ1aWx0LWluIGZsYWdzIGxpa2UgLS1oZWxwIGFuZFxuICAgICAgICAgLS12ZXJzaW9uLiAqKVxuICAgICAgOyBhY3Rpb24gOiBhY3Rpb25cbiAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgICA7IGNoZWNrX2F2YWlsYWJsZSA6IEVudi50IC0+IHVuaXRcbiAgICAgIDsgbmFtZV9tYXRjaGluZyA6IFsgYFByZWZpeCB8IGBGdWxsX21hdGNoX3JlcXVpcmVkIF1cbiAgICAgIH1cblxuICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgZmxhZ19uYW1lID1cbiAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZyB0Lm51bV9vY2N1cnJlbmNlcyB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIG1vZHVsZSBEb2MgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgYXJnX2RvYyA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2UgfmFjdGlvbiB+ZG9jID1cbiAgICAgICAgbGV0IGFyZ19kb2MsIGRvYyA9XG4gICAgICAgICAgbWF0Y2ggKGFjdGlvbiA6IGFjdGlvbiksIFN0cmluZy5sc3BsaXQyIGRvYyB+b246JyAnIHdpdGhcbiAgICAgICAgICB8IChOb19hcmcgXyB8IFByaW50X2luZm9fYW5kX3F1aXQgXyksIF8gLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCBBcmcgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gU29tZSBcIl9cIiwgZG9jXG4gICAgICAgICAgfCBSZXN0IF8sIChOb25lIHwgU29tZSAoXCJcIiwgXykpIC0+IE5vbmUsIGRvY1xuICAgICAgICAgIHwgKEFyZyBfIHwgUmVzdCBfKSwgU29tZSAoYXJnLCBkb2MpIC0+IFNvbWUgYXJnLCBkb2NcbiAgICAgICAgaW5cbiAgICAgICAgeyBkb2MgPSBTdHJpbmcuc3RyaXAgZG9jOyBhcmdfZG9jIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBjb25jYXQgfm5hbWUgfmFyZ19kb2MgPVxuICAgICAgICBtYXRjaCBhcmdfZG9jIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5hbWVcbiAgICAgICAgfCBTb21lIGFyZ19kb2MgLT4gbmFtZSBeIFwiIFwiIF4gYXJnX2RvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBsZXQgd3JhcF9pZl9vcHRpb25hbCB0IHggPVxuICAgICAgICBOdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB0Lm51bV9vY2N1cnJlbmNlcyB4XG4gICAgICA7O1xuXG4gICAgICAoKiBmbGFnIGhlbHAgaW4gdGhlIGZvcm1hdCBvZiB0aGUgb2xkIGNvbW1hbmQuIHVzZWQgZm9yIGluamVjdGlvbiAqKVxuICAgICAgbGV0IGhlbHBcbiAgICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgICAgfSBhcyB0KVxuICAgICAgICA9XG4gICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggZG9jIH5wcmVmaXg6XCIgXCJcbiAgICAgICAgdGhlblxuICAgICAgICAgIChuYW1lLCBTdHJpbmcubHN0cmlwIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPiB4LCBzcHJpbnRmIFwic2FtZSBhcyBcXFwiJXNcXFwiXCIgbmFtZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgRG9jLmFyZ19kb2M7IGRvYyB9ID0gRG9jLnBhcnNlIH5hY3Rpb24gfmRvYyBpblxuICAgICAgICAgICh3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWUgfmFyZ19kb2MpLCBkb2MpXG4gICAgICAgICAgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICggd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lOnggfmFyZ19kb2MpXG4gICAgICAgICAgICAsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lICkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhbGlnblxuICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgOyBkb2NcbiAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwID0gX1xuICAgICAgICAgICB9IGFzIHQpXG4gICAgICA6IFNoYXBlLkZsYWdfaW5mby50XG4gICAgICA9XG4gICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICBsZXQgbmFtZSA9IHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYykgaW5cbiAgICAgIHsgbmFtZTsgZG9jOyBhbGlhc2VzIH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBmbGFncyA9XG4gICAgICBtYXRjaCBTdHJpbmcuTWFwLm9mX2FsaXN0IChMaXN0Lm1hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lLCBmbGFnKSkgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBmbGFnIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lIDo6IGZsYWcuYWxpYXNlcylcbiAgICAgICAgfD4gTGlzdC5maW5kX2FfZHVwIH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXVxuICAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIHggLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3Mgb3IgYWxpYXNlcyBuYW1lZCAlc1wiIHggKCkpO1xuICAgICAgICBtYXBcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB7IGFjdGlvbiA6IGFjdGlvblxuICAgIDsgcmVhZCA6IEVudi50IC0+ICdhXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gc3RyaW5nIC0+ICdhIHN0YXRlXG5cbiAgbGV0IGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIHsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBhY3Rpb24gPVxuICAgICAgICAobGV0IHVwZGF0ZSBlbnYgYXJnID1cbiAgICAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYXJnIHdpdGhcbiAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICBkaWUgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVMuXFxuJXNcIiBuYW1lIGFyZyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICAgICAgIHwgT2sgYXJnIC0+XG4gICAgICAgICAgICAgbGV0IGVudiA9IHdyaXRlIGVudiBhcmcgaW5cbiAgICAgICAgICAgICAobWF0Y2ggQXJnX3R5cGUua2V5IGFyZ190eXBlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGVudlxuICAgICAgICAgICAgICB8IFNvbWUga2V5IC0+IEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6YXJnKVxuICAgICAgICAgaW5cbiAgICAgICAgIEFyZyAodXBkYXRlLCBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSkpXG4gICAgOyBleHRyYV9kb2MgPSBBcmdfdHlwZS5leHRyYV9kb2MgYXJnX3R5cGVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1hcF9mbGFnIHQgfmYgaW5wdXQgPVxuICAgIGxldCB7IGFjdGlvbjsgcmVhZDsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IHQgaW5wdXQgaW5cbiAgICB7IGFjdGlvbjsgcmVhZCA9IChmdW4gZW52IC0+IGYgKHJlYWQgZW52KSk7IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH1cbiAgOztcblxuICBsZXQgd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgPVxuICAgIEVudi51cGRhdGUgZW52IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBhcmdcbiAgICAgIHwgU29tZSBfIC0+IGRpZSBcImZsYWcgJXMgcGFzc2VkIG1vcmUgdGhhbiBvbmNlXCIgbmFtZSAoKSlcbiAgOztcblxuICBsZXQgcmVxdWlyZWRfdmFsdWUgP2RlZmF1bHQgYXJnX3R5cGUgbmFtZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgIHwgTm9uZSAtPiBkaWUgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSAoKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkIGFyZ190eXBlIG5hbWUgPSByZXF1aXJlZF92YWx1ZSBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcblxuICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUgbmFtZSA9XG4gICAgcmVxdWlyZWRfdmFsdWUgfmRlZmF1bHQgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9wdGlvbmFsIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID0gRW52LmZpbmQgZW52IGtleSBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBub19hcmdfZ2VuZXJhbCB+a2V5X3ZhbHVlIH5kZXByZWNhdGVkX2hvb2sgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogdW5pdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPSBFbnYubWVtIGVudiBrZXkgaW5cbiAgICBsZXQgd3JpdGUgZW52ID1cbiAgICAgIGlmIEVudi5tZW0gZW52IGtleVxuICAgICAgdGhlbiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKClcbiAgICAgIGVsc2UgRW52LnNldCBlbnYgfmtleSB+ZGF0YTooKVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgPVxuICAgICAgbGV0IGVudiA9XG4gICAgICAgIE9wdGlvbi5mb2xkIGtleV92YWx1ZSB+aW5pdDplbnYgfmY6KGZ1biBlbnYgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgICAgRW52LnNldF93aXRoX2RlZmF1bHQgZW52IH5rZXkgfmRhdGE6dmFsdWUpXG4gICAgICBpblxuICAgICAgd3JpdGUgZW52XG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IC0+XG4gICAgICAgICAgbGV0IGVudiA9IGFjdGlvbiBlbnYgaW5cbiAgICAgICAgICBmICgpO1xuICAgICAgICAgIGVudlxuICAgIGluXG4gICAgeyByZWFkXG4gICAgOyBhY3Rpb24gPSBOb19hcmcgYWN0aW9uXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZyBuYW1lID0gbm9fYXJnX2dlbmVyYWwgbmFtZSB+a2V5X3ZhbHVlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lXG5cbiAgbGV0IG5vX2FyZ19yZWdpc3RlciB+a2V5IH52YWx1ZSBuYW1lID1cbiAgICBub19hcmdfZ2VuZXJhbCBuYW1lIH5rZXlfdmFsdWU6KFNvbWUgKGtleSwgdmFsdWUpKSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3NvbWUgdmFsdWUgPVxuICAgIG1hcF9mbGFnIG5vX2FyZyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBTb21lIHZhbHVlXG4gICAgICB8IGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbGV0IGxpc3RlZCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9IExpc3QucmV2IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBsaXN0IC0+IGFyZyA6OiBsaXN0KSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYW55XG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9XG4gICAgICBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6RnF1ZXVlLmVtcHR5IH5uYW1lIFslc2V4cF9vZjogXyBGcXVldWUudF1cbiAgICBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBGcXVldWUudG9fbGlzdCAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgZmlyc3QgOjogcmVzdCAtPiBmaXJzdCwgcmVzdFxuICAgICAgfCBbXSAtPiBkaWUgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSAoKVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPVxuICAgICAgRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIHEgLT4gRnF1ZXVlLmVucXVldWUgcSBhcmcpXG4gICAgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2VcbiAgOztcblxuICBsZXRbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wN10gVXNlIFtvbmVfb3JfbW9yZV9hc19wYWlyXSBvciBbb25lX29yX21vcmVfYXNfbGlzdF1cIl0gb25lX29yX21vcmVcbiAgICA9XG4gICAgb25lX29yX21vcmVfYXNfcGFpclxuICA7O1xuXG4gIGxldCBvbmVfb3JfbW9yZV9hc19saXN0IGFyZ190eXBlID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyIGFyZ190eXBlIHw+IG1hcF9mbGFnIH5mOihmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuZXJhbCB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBhY3Rpb24gZW52IGNtZF9saW5lID0gRW52LnNldCBlbnYgfmtleSB+ZGF0YTpjbWRfbGluZSBpblxuICAgIGxldCByZWFkIGVudiA9IEVudi5maW5kIGVudiBrZXkgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IHggLT5cbiAgICAgICAgICBmIHg7XG4gICAgICAgICAgYWN0aW9uIGVudiB4XG4gICAgaW5cbiAgICB7IGFjdGlvbiA9IFJlc3QgYWN0aW9uXG4gICAgOyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19hYm9ydCB+ZXhpdCBfbmFtZSA9XG4gICAgeyBhY3Rpb24gPSBOb19hcmcgKGZ1biBfIC0+IG5ldmVyX3JldHVybnMgKGV4aXQgKCkpKVxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgcmVhZCA9IChmdW4gXyAtPiAoKSlcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIG5hbWUgPSBlc2NhcGVfZ2VuZXJhbCB+ZGVwcmVjYXRlZF9ob29rOk5vbmUgbmFtZVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IG5vX2FyZyB+aG9vayBuYW1lID1cbiAgICAgIG5vX2FyZ19nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaykgfmtleV92YWx1ZTpOb25lIG5hbWVcbiAgICA7O1xuXG4gICAgbGV0IGVzY2FwZSB+aG9vayA9IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaylcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhdGggOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgY3JlYXRlIDogcGF0aF90b19leGU6c3RyaW5nIC0+IHRcbiAgdmFsIG9mX3BhcnRzIDogc3RyaW5nIGxpc3QgLT4gdFxuICB2YWwgYXBwZW5kIDogdCAtPiBzdWJjb21tYW5kOnN0cmluZyAtPiB0XG4gIHZhbCByZXBsYWNlX2ZpcnN0IDogdCAtPiBmcm9tOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHRcbiAgdmFsIHBhcnRzIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgcGFydHNfZXhlX2Jhc2VuYW1lIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19kb3RzIDogdCAtPiBzdHJpbmdcbiAgdmFsIHBvcF9oZWxwIDogdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBjcmVhdGUgfnBhdGhfdG9fZXhlID0gWyBwYXRoX3RvX2V4ZSBdXG4gIGxldCBvZl9wYXJ0cyBwYXJ0cyA9IExpc3QucmV2IHBhcnRzXG4gIGxldCBhcHBlbmQgdCB+c3ViY29tbWFuZCA9IHN1YmNvbW1hbmQgOjogdFxuICBsZXQgcGFydHMgPSBMaXN0LnJldlxuXG4gIGxldCBwYXJ0c19leGVfYmFzZW5hbWUgdCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgdCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGQgOjogdGwgLT4gRmlsZW5hbWUuYmFzZW5hbWUgaGQgOjogdGxcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSB1bndvcmRzIChwYXJ0c19leGVfYmFzZW5hbWUgdClcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoXG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgdCB+ZnJvbSB+dG9fID1cbiAgICBsZXQgcmVjIGF1eCBwYXJ0cyB+YWNjIH5mcm9tIH50b18gPVxuICAgICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgU3RyaW5nLiggPSApIGhkIGZyb21cbiAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgdGwgKHRvXyA6OiBhY2MpXG4gICAgICAgIGVsc2UgYXV4IHRsIH5hY2M6KGhkIDo6IGFjYykgfmZyb20gfnRvX1xuICAgIGluXG4gICAgYXV4IChwYXJ0cyB0KSB+YWNjOltdIH5mcm9tIH50b19cbiAgOztcblxuICBsZXQgcG9wX2hlbHAgPSBmdW5jdGlvblxuICAgIHwgXCJoZWxwXCIgOjogdCAtPiB0XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfZG90cyB0ID1cbiAgICAobWF0Y2ggdCB3aXRoXG4gICAgIHwgW10gLT4gW11cbiAgICAgfCBsYXN0IDo6IGluaXQgLT4gbGFzdCA6OiBMaXN0Lm1hcCBpbml0IH5mOihGbi5jb25zdCBcIi5cIikpXG4gICAgfD4gdG9fc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxuZW5kXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA6IHNpZ1xuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsIG9uZSA6IHN0cmluZyAtPiB0XG4gICAgdmFsIG1hbnkgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmUgOiB0IC0+IHRcbiAgICB2YWwgY29uY2F0IDogdCBsaXN0IC0+IHRcbiAgICB2YWwgYWRfaG9jIDogdXNhZ2U6c3RyaW5nIC0+IHRcblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG5hbWVzIDogdCAtPiBzdHJpbmcgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnQgPVxuICAgICAgfCBaZXJvXG4gICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgIHwgTWFueSBvZiB0XG4gICAgICB8IE1heWJlIG9mIHRcbiAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU2hhcGUuQW5vbnMuR3JhbW1hci5pbnZhcmlhbnRcbiAgICBsZXQgdXNhZ2UgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnVzYWdlXG5cbiAgICBsZXQgcmVjIGlzX2ZpeGVkX2FyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiB0cnVlXG4gICAgICB8IE9uZSBfIC0+IHRydWVcbiAgICAgIHwgTWFueSBfIC0+IGZhbHNlXG4gICAgICB8IE1heWJlIF8gLT4gZmFsc2VcbiAgICAgIHwgQWRfaG9jIF8gLT4gZmFsc2VcbiAgICAgIHwgQ29uY2F0IHRzIC0+XG4gICAgICAgIChtYXRjaCBMaXN0LnJldiB0cyB3aXRoXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgfCBsYXN0IDo6IG90aGVycyAtPlxuICAgICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCBvdGhlcnMgfmY6aXNfZml4ZWRfYXJpdHkpO1xuICAgICAgICAgICBpc19maXhlZF9hcml0eSBsYXN0KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG5hbWVzID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBbXVxuICAgICAgfCBPbmUgcyAtPiBbIHMgXVxuICAgICAgfCBNYW55IHQgLT4gbmFtZXMgdFxuICAgICAgfCBNYXliZSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgQWRfaG9jIHMgLT4gWyBzIF1cbiAgICAgIHwgQ29uY2F0IHRzIC0+IExpc3QuY29uY2F0X21hcCB0cyB+ZjpuYW1lc1xuICAgIDs7XG5cbiAgICBsZXQgemVybyA9IFplcm9cbiAgICBsZXQgb25lIG5hbWUgPSBPbmUgbmFtZVxuXG4gICAgbGV0IG1hbnkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPlxuICAgICAgICBpZiBub3QgKGlzX2ZpeGVkX2FyaXR5IHQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwiaXRlcmF0aW9uIG9mIHZhcmlhYmxlLWxlbmd0aCBncmFtbWFycyBzdWNoIGFzICVzIGlzIGRpc2FsbG93ZWRcIlxuICAgICAgICAgICAgKHVzYWdlIHQpXG4gICAgICAgICAgICAoKTtcbiAgICAgICAgTWFueSB0XG4gICAgOztcblxuICAgIGxldCBtYXliZSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+IE1heWJlIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbmNhdCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFplcm9cbiAgICAgIHwgY2FyIDo6IGNkciAtPlxuICAgICAgICBsZXQgY2FyLCBjZHIgPVxuICAgICAgICAgIExpc3QuZm9sZCBjZHIgfmluaXQ6KGNhciwgW10pIH5mOihmdW4gKHQxLCBhY2MpIHQyIC0+XG4gICAgICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgICAgfCBaZXJvLCB0IHwgdCwgWmVybyAtPiB0LCBhY2NcbiAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICBpZiBpc19maXhlZF9hcml0eSB0MVxuICAgICAgICAgICAgICB0aGVuIHQyLCB0MSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgZ3JhbW1hciAlcyBmb3IgYW5vbnltb3VzIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgXFxcbiAgICAgICAgICAgICAgICAgICB0aGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgZm9yIGFyZ3VtZW50cyAoJXMpIGZvbGxvd2luZyBhIHZhcmlhYmxlIFxcXG4gICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyAoJXMpLiAgU3VwcG9ydGluZyBzdWNoIGdyYW1tYXJzIHdvdWxkIFxcXG4gICAgICAgICAgICAgICAgICAgY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24gc2lnbmlmaWNhbnRseS5cIlxuICAgICAgICAgICAgICAgICAgKHVzYWdlIChDb25jYXQgKExpc3QucmV2ICh0MiA6OiB0MSA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDIpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDEpXG4gICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGNkciB3aXRoXG4gICAgICAgICB8IFtdIC0+IGNhclxuICAgICAgICAgfCBfIDo6IF8gLT4gQ29uY2F0IChMaXN0LnJldiAoY2FyIDo6IGNkcikpKVxuICAgIDs7XG5cbiAgICBsZXQgYWRfaG9jIH51c2FnZSA9IEFkX2hvYyB1c2FnZVxuICBlbmRcblxuICBtb2R1bGUgUGFyc2VyIDogc2lnXG4gICAgdHlwZSArJ2EgdFxuXG4gICAgdmFsIGZyb21fZW52IDogKEVudi50IC0+ICdhKSAtPiAnYSB0XG4gICAgdmFsIG9uZSA6IG5hbWU6c3RyaW5nIC0+ICdhIEFyZ190eXBlLnQgLT4gJ2EgdFxuICAgIHZhbCBtYXliZSA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB2YWwgc2VxdWVuY2UgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCBzdG9wX3BhcnNpbmcgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmluYWxfdmFsdWUgOiAnYSB0IC0+IEVudi50IC0+ICdhXG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7ICgqIElmIGVtYWNzIGhpZ2hsaWdodHMgW3BhcnNlcl0gYXMgaWYgaXQgd2VyZSBhIGtleXdvcmQsIHRoYXQncyBvbmx5IGJlY2F1c2VcbiAgICAgICAgICAgICBbcGFyc2VyXSB3YXMgYSBrZXl3b3JkIGluIGNhbWxwNC4gW3BhcnNlcl0gaXMgYSByZWd1bGFyIG5hbWUgaW4gT0NhbWwuICopXG4gICAgICAgICAgcGFyc2VyIDogJ2EgdFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB2YWwgY29uc3VtZSA6ICdhIHQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgQ29uc3VtZV9yZXN1bHQudFxuICAgIHZhbCBjb21wbGV0ZSA6ICdhIHQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gbmV2ZXJfcmV0dXJuc1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsICggPCo+ICkgOiAoJ2EgLT4gJ2IpIHQgLT4gJ2EgdCAtPiAnYiB0XG4gICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgZW5kXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IERvbmUgb2YgKEVudi50IC0+ICdhKVxuICAgICAgfCBNb3JlIG9mICdhIG1vcmVcbiAgICAgICgqIEEgW1Rlc3RdIHdpbGwgKGdlbmVyYWxseSkgcmV0dXJuIGEgW0RvbmUgX10gdmFsdWUgaWYgdGhlcmUgaXMgbm8gbW9yZSBpbnB1dCBhbmRcbiAgICAgICAgIGEgW01vcmVdIHBhcnNlciB0byB1c2UgaWYgdGhlcmUgaXMgYW55IG1vcmUgaW5wdXQuICopXG4gICAgICB8IFRlc3Qgb2YgKG1vcmU6Ym9vbCAtPiAnYSB0KVxuICAgICAgKCogSWYgd2UncmUgb25seSBjb21wbGV0aW5nLCB3ZSBjYW4ndCBwdWxsIHZhbHVlcyBvdXQsIGJ1dCB3ZSBjYW4gc3RpbGwgc3RlcCB0aHJvdWdoXG4gICAgICAgICBbdF1zICh3aGljaCBtYXkgaGF2ZSBjb21wbGV0aW9uIHNldCB1cCkuICopXG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gb2YgcGFja2VkIGxpc3RcbiAgICAgIHwgU3RvcF9wYXJzaW5nIG9mICdhIHRcblxuICAgIGFuZCAnYSBtb3JlID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBwYXJzZSA6IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+ICdhIHBhcnNlX3Jlc3VsdFxuICAgICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgICB9XG5cbiAgICBhbmQgcGFja2VkID0gUGFja2VkIDogJ2EgdCAtPiBwYWNrZWRcblxuICAgIGFuZCAnYSBwYXJzZV9yZXN1bHQgPVxuICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgfVxuXG4gICAgbGV0IHJldHVybiBhID0gRG9uZSAoZnVuIF8gLT4gYSlcbiAgICBsZXQgZnJvbV9lbnYgZiA9IERvbmUgZlxuICAgIGxldCBzdG9wX3BhcnNpbmcgdCA9IFN0b3BfcGFyc2luZyB0XG5cbiAgICBsZXQgcGFja19mb3JfY29tcGxldGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IERvbmUgXyAtPiBbXSAoKiB3b24ndCBjb21wbGV0ZSBvciBjb25zdW1lIGFueXRoaW5nICopXG4gICAgICB8IChNb3JlIF8gfCBUZXN0IF8gfCBTdG9wX3BhcnNpbmcgXykgYXMgeCAtPiBbIFBhY2tlZCB4IF1cbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwcyAtPiBwc1xuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9IH5mID1cbiAgICAgIGxldCBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgbGV0IHsgcGFyc2VyOyB1cGRhdGVfZW52IH0gPSBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uIGluXG4gICAgICAgIHsgcGFyc2VyID0gZiBwYXJzZXI7IHVwZGF0ZV9lbnYgfVxuICAgICAgaW5cbiAgICAgIE1vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVjICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPVxuICAgICAgbWF0Y2ggdF9sZWZ0LCB0X3JpZ2h0IHdpdGhcbiAgICAgICgqIFtEb25lXSAqKVxuICAgICAgfCBEb25lIGYsIERvbmUgeCAtPiBEb25lIChmdW4gZW52IC0+IGYgZW52ICh4IGVudikpXG4gICAgICAoKiBuZXh0IHN0ZXAgW01vcmVdICopXG4gICAgICB8IE1vcmUgbW9yZSwgXyAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0bCAtPiB0bCA8Kj4gdF9yaWdodClcbiAgICAgIHwgRG9uZSBfLCBNb3JlIG1vcmUgLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdHIgLT4gdF9sZWZ0IDwqPiB0cilcbiAgICAgICgqIG5leHQgc3RlcCBbT25seV9mb3JfY29tcGxldGlvbl0gKilcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfLCBfIHwgRG9uZSBfLCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiB0X2xlZnQgQCBwYWNrX2Zvcl9jb21wbGV0aW9uIHRfcmlnaHQpXG4gICAgICAoKiBuZXh0IHN0ZXAgW1N0b3BfcGFyc2luZ10gKilcbiAgICAgIHwgU3RvcF9wYXJzaW5nIHRsLCB0ciB8IChEb25lIF8gYXMgdGwpLCBTdG9wX3BhcnNpbmcgdHIgLT4gU3RvcF9wYXJzaW5nICh0bCA8Kj4gdHIpXG4gICAgICAoKiBuZXh0IHN0ZXAgW1Rlc3RdICopXG4gICAgICB8IFRlc3QgdGVzdCwgXyAtPiBUZXN0IChmdW4gfm1vcmUgLT4gdGVzdCB+bW9yZSA8Kj4gdF9yaWdodClcbiAgICAgIHwgRG9uZSBfLCBUZXN0IHRlc3QgLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRfbGVmdCA8Kj4gdGVzdCB+bW9yZSlcbiAgICA7O1xuXG4gICAgbGV0ICggPj58ICkgdCBmID0gcmV0dXJuIGYgPCo+IHRcblxuICAgIGxldCBvbmVfbW9yZSB+bmFtZSBhcmdfdHlwZSA9XG4gICAgICBsZXQgcGFyc2UgYW5vbiB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICBtYXRjaCBBcmdfdHlwZS5wYXJzZSBhcmdfdHlwZSBhbm9uIHdpdGhcbiAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICBpZiBmb3JfY29tcGxldGlvblxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIHdlIGRvbid0ICpyZWFsbHkqIGNhcmUgYWJvdXQgdGhpcyB2YWx1ZSwgc28ganVzdCBwdXQgaW4gYSBkdW1teSB2YWx1ZSBzb1xuICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYW4gY29udGludWUgKilcbiAgICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgICBlbHNlIGRpZSBcImZhaWxlZCB0byBwYXJzZSAlcyB2YWx1ZSAlU1xcbiVzXCIgbmFtZSBhbm9uIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgICAgfCBPayB2IC0+XG4gICAgICAgICAgeyBwYXJzZXIgPSByZXR1cm4gdlxuICAgICAgICAgIDsgdXBkYXRlX2VudiA9XG4gICAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICAgIE9wdGlvbi5mb2xkIChBcmdfdHlwZS5rZXkgYXJnX3R5cGUpIH5pbml0OmVudiB+ZjooZnVuIGVudiBrZXkgLT5cbiAgICAgICAgICAgICAgICAgICBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOnYpKVxuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlID0gQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUgfVxuICAgIDs7XG5cbiAgICBsZXQgb25lIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlXG4gICAgICAgICAgIHRoZW4gb25lX21vcmUgfm5hbWUgYXJnX3R5cGVcbiAgICAgICAgICAgZWxzZSBkaWUgXCJtaXNzaW5nIGFub255bW91cyBhcmd1bWVudDogJXNcIiBuYW1lICgpKVxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgdCA9IFRlc3QgKGZ1biB+bW9yZSAtPiBpZiBtb3JlIHRoZW4gdCA+PnwgZnVuIGEgLT4gU29tZSBhIGVsc2UgcmV0dXJuIE5vbmUpXG5cbiAgICBsZXQgc2VxdWVuY2UgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPVxuICAgICAgICBUZXN0XG4gICAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICAgIGlmIG1vcmUgdGhlbiByZXR1cm4gKGZ1biB2IGFjYyAtPiB2IDo6IGFjYykgPCo+IHQgPCo+IGxvb3AgZWxzZSByZXR1cm4gW10pXG4gICAgICBpblxuICAgICAgbG9vcFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmFsX3ZhbHVlIHQgZW52ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIGEgLT4gYSBlbnZcbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gZmluYWxfdmFsdWUgdCBlbnZcbiAgICAgIHwgVGVzdCBmIC0+IGZpbmFsX3ZhbHVlIChmIH5tb3JlOmZhbHNlKSBlbnZcbiAgICAgIHwgTW9yZSB7IG5hbWU7IF8gfSAtPiBkaWUgXCJtaXNzaW5nIGFub255bW91cyBhcmd1bWVudDogJXNcIiBuYW1lICgpXG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gXyAtPlxuICAgICAgICBmYWlsd2l0aCBcIkJVRzogYXNrZWQgZm9yIGZpbmFsIHZhbHVlIHdoZW4gZG9pbmcgY29tcGxldGlvblwiXG4gICAgOztcblxuICAgIG1vZHVsZSBDb25zdW1lX3Jlc3VsdCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgICAgIHsgcGFyc2VyIDogJ2EgdFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBsZXQgcmVjIGNvbnN1bWUgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiBhIENvbnN1bWVfcmVzdWx0LnQgPVxuICAgICAgZnVuIHQgYXJnIH5mb3JfY29tcGxldGlvbiAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgXyAtPiBkaWUgXCJ0b28gbWFueSBhbm9ueW1vdXMgYXJndW1lbnRzXCIgKClcbiAgICAgIHwgVGVzdCBmIC0+IGNvbnN1bWUgKGYgfm1vcmU6dHJ1ZSkgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgfCBNb3JlIHsgcGFyc2U7IF8gfSAtPlxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiB9XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IHsgKGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uKSB3aXRoIHBhcnNlX2ZsYWdzID0gZmFsc2UgfVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBhY2tlZCAtPlxuICAgICAgICAobWF0Y2ggcGFja2VkIHdpdGhcbiAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICB8IFBhY2tlZCB0IDo6IHJlc3QgLT5cbiAgICAgICAgICAgbGV0ICh7IHVwZGF0ZV9lbnY7IHBhcnNlX2ZsYWdzOyBwYXJzZXIgfSA6IF8gQ29uc3VtZV9yZXN1bHQudCkgPVxuICAgICAgICAgICAgIGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdXBkYXRlX2VudlxuICAgICAgICAgICA7IHBhcnNlX2ZsYWdzXG4gICAgICAgICAgIDsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiBwYXJzZXIgQCByZXN0KVxuICAgICAgICAgICB9KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbXBsZXRlIDogdHlwZSBhLiBhIHQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gbmV2ZXJfcmV0dXJucyA9XG4gICAgICBmdW4gdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRG9uZSBfIC0+IGV4aXQgMFxuICAgICAgICB8IFRlc3QgZiAtPiBjb21wbGV0ZSAoZiB+bW9yZTp0cnVlKSBlbnYgfnBhcnRcbiAgICAgICAgfCBNb3JlIHsgY29tcGxldGU7IF8gfSAtPiBDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXBsZXRlIGVudiB+cGFydFxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IGNvbXBsZXRlIHQgZW52IH5wYXJ0XG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IGV4aXQgMFxuICAgICAgICAgICB8IFBhY2tlZCB0IDo6IF8gLT4gY29tcGxldGUgdCBlbnYgfnBhcnQpXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBQYXJzZXIuRm9yX29wZW5pbmdcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcCA6ICdhIFBhcnNlci50XG4gICAgOyBncmFtbWFyIDogR3JhbW1hci50XG4gICAgfVxuXG4gIGxldCB0MiB0MSB0MiA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgLT4gYTEsIGEyKSA8Kj4gdDEucCA8Kj4gdDIucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0MyB0MSB0MiB0MyA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgLT4gYTEsIGEyLCBhMykgPCo+IHQxLnAgPCo+IHQyLnAgPCo+IHQzLnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXI7IHQzLmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgdDQgdDEgdDIgdDMgdDQgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIGEzIGE0IC0+IGExLCBhMiwgYTMsIGE0KSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucCA8Kj4gdDQucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hcjsgdDQuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCBub3JtYWxpemUgc3RyID1cbiAgICAoKiBWZXJpZnkgdGhlIHN0cmluZyBpcyBub3QgZW1wdHkgb3Igc3Vycm91bmRlZCBieSB3aGl0ZXNwYWNlICopXG4gICAgbGV0IHN0cmxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgc3RybGVuID0gMCB0aGVuIGZhaWx3aXRoIFwiRW1wdHkgYW5vbnltb3VzIGFyZ3VtZW50IG5hbWUgcHJvdmlkZWRcIjtcbiAgICBpZiBTdHJpbmcuKCA8PiApIChTdHJpbmcuc3RyaXAgc3RyKSBzdHJcbiAgICB0aGVuIGZhaWx3aXRoZiBcImFyZ3VtZW50IG5hbWUgJVMgaGFzIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2VcIiBzdHIgKCk7XG4gICAgKCogSWYgdGhlIHN0cmluZyBjb250YWlucyBzcGVjaWFsIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGRvbid0IGRvIGFueXRoaW5nICopXG4gICAgbGV0IGhhc19zcGVjaWFsX2NoYXJzID1cbiAgICAgIGxldCBzcGVjaWFsX2NoYXJzID0gQ2hhci5TZXQub2ZfbGlzdCBbICc8JzsgJz4nOyAnWyc7ICddJzsgJygnOyAnKSc7ICd7JzsgJ30nIF0gaW5cbiAgICAgIFN0cmluZy5leGlzdHMgc3RyIH5mOihTZXQubWVtIHNwZWNpYWxfY2hhcnMpXG4gICAgaW5cbiAgICBpZiBoYXNfc3BlY2lhbF9jaGFycyB0aGVuIHN0ciBlbHNlIFN0cmluZy51cHBlcmNhc2Ugc3RyXG4gIDs7XG5cbiAgbGV0ICggJTogKSBuYW1lIGFyZ190eXBlID1cbiAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgeyBwID0gUGFyc2VyLm9uZSB+bmFtZSBhcmdfdHlwZTsgZ3JhbW1hciA9IEdyYW1tYXIub25lIG5hbWUgfVxuICA7O1xuXG4gIGxldCBtYXBfYW5vbnMgdCB+ZiA9IHsgcCA9IHQucCA+PnwgZjsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG4gIGxldCBtYXliZSB0ID0geyBwID0gUGFyc2VyLm1heWJlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWF5YmUgdC5ncmFtbWFyIH1cblxuICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0IGRlZmF1bHQgdCA9XG4gICAgbGV0IHQgPSBtYXliZSB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biB2IC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCB2KSB9XG4gIDs7XG5cbiAgbGV0IHNlcXVlbmNlIHQgPSB7IHAgPSBQYXJzZXIuc2VxdWVuY2UgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYW55IHQuZ3JhbW1hciB9XG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0ID0gdDIgdCAoc2VxdWVuY2UgdClcblxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgdCA9XG4gICAgbGV0IHQgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biAoeCwgeHMpIC0+IHggOjogeHMpIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIHQgPSB7IHAgPSBQYXJzZXIuc3RvcF9wYXJzaW5nIHQucDsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgYWRfaG9jIH51c2FnZV9hcmcgPVxuICAgICAgeyBwID1cbiAgICAgICAgICBQYXJzZXIuc2VxdWVuY2VcbiAgICAgICAgICAgIChQYXJzZXIub25lIH5uYW1lOlwiV0lMTCBORVZFUiBCRSBQUklOVEVEXCIgQXJnX3R5cGUuRXhwb3J0LnN0cmluZylcbiAgICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuYWRfaG9jIH51c2FnZTp1c2FnZV9hcmdcbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ21kbGluZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mIHN0cmluZyAqIHRcbiAgICB8IENvbXBsZXRlIG9mIHN0cmluZ1xuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBvZl9saXN0IGFyZ3MgPSBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpOaWwgfmY6KGZ1biBhcmcgYXJncyAtPiBDb25zIChhcmcsIGFyZ3MpKVxuXG4gIGxldCByZWMgdG9fbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHgsIHhzKSAtPiB4IDo6IHRvX2xpc3QgeHNcbiAgICB8IENvbXBsZXRlIHggLT4gWyB4IF1cbiAgOztcblxuICBsZXQgcmVjIGVuZHNfaW5fY29tcGxldGUgPSBmdW5jdGlvblxuICAgIHwgQ29tcGxldGUgXyAtPiB0cnVlXG4gICAgfCBOaWwgLT4gZmFsc2VcbiAgICB8IENvbnMgKF8sIGFyZ3MpIC0+IGVuZHNfaW5fY29tcGxldGUgYXJnc1xuICA7O1xuXG4gIGxldCBleHRlbmQgdCB+ZXh0ZW5kIH5wYXRoID1cbiAgICBpZiBlbmRzX2luX2NvbXBsZXRlIHRcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwYXRoX2xpc3QgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W10gKExpc3QudGwgKFBhdGgucGFydHMgcGF0aCkpIGluXG4gICAgICBvZl9saXN0ICh0b19saXN0IHQgQCBleHRlbmQgcGF0aF9saXN0KSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBTaGFwZS5Qcml2YXRlLktleV90eXBlXG5cbmxldCBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUgZmxhZ19vcl9zdWJjb21tYW5kID1cbiAgaWYgU3RyaW5nLmV4aXN0cyBmbGFnX29yX3N1YmNvbW1hbmQgfmY6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnXycpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiJXMgJXMgY29udGFpbnMgYW4gdW5kZXJzY29yZS4gVXNlIGEgZGFzaCBpbnN0ZWFkLlwiXG4gICAgICAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKVxuICAgICAgZmxhZ19vcl9zdWJjb21tYW5kXG4gICAgICAoKVxuOztcblxubGV0IG5vcm1hbGl6ZSBrZXlfdHlwZSBrZXkgPVxuICBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUga2V5O1xuICBtYXRjaCBrZXlfdHlwZSB3aXRoXG4gIHwgS2V5X3R5cGUuRmxhZyAtPlxuICAgIGlmIFN0cmluZy5lcXVhbCBrZXkgXCItXCIgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuZXhpc3RzIGtleSB+ZjpDaGFyLmlzX3doaXRlc3BhY2VcbiAgICB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWUgKGNvbnRhaW5zIHdoaXRlc3BhY2UpOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCItXCIga2V5IHRoZW4ga2V5IGVsc2UgXCItXCIgXiBrZXlcbiAgfCBLZXlfdHlwZS5TdWJjb21tYW5kIC0+IFN0cmluZy5sb3dlcmNhc2Uga2V5XG47O1xuXG5sZXQgbG9va3VwX2V4cGFuZCA9IFNoYXBlLlByaXZhdGUubG9va3VwX2V4cGFuZFxuXG5sZXQgbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgbWFwIHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBhbGlzdCA9XG4gICAgTGlzdC5jb25jYXRfbWFwIChTdHJpbmcuTWFwLmRhdGEgbWFwKSB+ZjooZnVuIGZsYWcgLT5cbiAgICAgIGxldCB7IEZsYWcuSW50ZXJuYWwubmFtZVxuICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICA7IGFjdGlvbiA9IF9cbiAgICAgICAgICA7IGRvYyA9IF9cbiAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICB9XG4gICAgICAgID1cbiAgICAgICAgZmxhZ1xuICAgICAgaW5cbiAgICAgIGxldCBkYXRhID0gZmxhZywgbmFtZV9tYXRjaGluZyBpblxuICAgICAgbGV0IGFsaWFzZXMgPSBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCBAIGFsaWFzZXMgaW5cbiAgICAgIChuYW1lLCBkYXRhKSA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4gYWxpYXMgLT4gYWxpYXMsIGRhdGEpKVxuICBpblxuICBtYXRjaCBMaXN0LmZpbmRfYV9kdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHdpdGhcbiAgfCBOb25lIC0+IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlXG4gIHwgU29tZSAoZmxhZywgXykgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG47O1xuXG5tb2R1bGUgQmFzZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IGZsYWdzIDogRmxhZy5JbnRlcm5hbC50IFN0cmluZy5NYXAudFxuICAgIDtcbiAgICAgIGFub25zIDogdW5pdCAtPiAoWyBgUGFyc2VfYXJncyBdIC0+IFsgYFJ1bl9tYWluIF0gLT4gdW5pdCkgQW5vbnMuUGFyc2VyLnRcbiAgICA7IHVzYWdlIDogQW5vbnMuR3JhbW1hci50XG4gICAgfVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IHN1YmNvbW1hbmRfY21wX2ZzdCAoYSwgXykgKGMsIF8pID0gaGVscF9zY3JlZW5fY29tcGFyZSBhIGNcblxuICAgIGxldCBmbGFnc19oZWxwID8oZGlzcGxheV9oZWxwX2ZsYWdzID0gdHJ1ZSkgdCA9XG4gICAgICBsZXQgZmxhZ3MgPSBTdHJpbmcuTWFwLmRhdGEgdC5mbGFncyBpblxuICAgICAgbGV0IGZsYWdzID1cbiAgICAgICAgaWYgZGlzcGxheV9oZWxwX2ZsYWdzXG4gICAgICAgIHRoZW4gZmxhZ3NcbiAgICAgICAgZWxzZSBMaXN0LmZpbHRlciBmbGFncyB+ZjooZnVuIGYgLT4gU3RyaW5nLiggPD4gKSBmLm5hbWUgXCItaGVscFwiKVxuICAgICAgaW5cbiAgICAgIExpc3QuY29uY2F0X21hcCB+ZjpGbGFnLkludGVybmFsLkRlcHJlY2F0ZWQuaGVscCBmbGFnc1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmb3JtYXR0ZWRfZmxhZ3MgdCA9XG4gICAgU3RyaW5nLk1hcC5kYXRhIHQuZmxhZ3NcbiAgICB8PiBMaXN0Lm1hcCB+ZjpGbGFnLkludGVybmFsLmFsaWduXG4gICAgKCogdGhpcyBzb3J0IHB1dHMgb3B0aW9uYWwgZmxhZ3MgYWZ0ZXIgcmVxdWlyZWQgb25lcyAqKVxuICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBTdHJpbmcuY29tcGFyZSBhLm5hbWUgYi5uYW1lKVxuICAgIHw+IFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnNvcnRcbiAgOztcblxuICBsZXQgc2hhcGUgdCA6IFNoYXBlLkJhc2VfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgdC5yZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKVxuICAgIDsgYW5vbnMgPSBHcmFtbWFyIHQudXNhZ2VcbiAgICA7IGZsYWdzID0gZm9ybWF0dGVkX2ZsYWdzIHRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHBhdGhfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJwYXRoXCJcbiAgbGV0IGFyZ3Nfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJhcmdzXCJcbiAgbGV0IGhlbHBfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJoZWxwXCJcblxuICBsZXQgaW5kZW50X2J5XzIgc3RyID1cbiAgICBTdHJpbmcuc3BsaXQgfm9uOidcXG4nIHN0clxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBcIiAgXCIgXiBsaW5lKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgPVxuICAgIG1hdGNoIGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIHQuZmxhZ3MgYXJnIEZsYWcgd2l0aFxuICAgIHwgRXJyb3IgbXNnIC0+IGRpZSBcIiVzXCIgbXNnICgpXG4gICAgfCBPayAoZmxhZ19uYW1lLCBmbGFnKSAtPiBmbGFnX25hbWUsIGZsYWcuYWN0aW9uXG4gIDs7XG5cbiAgbGV0IHJ1bl9mbGFnIHQgZW52IGFyZyAoYXJncyA6IENtZGxpbmUudCkgPVxuICAgIGxldCBmbGFnLCBhY3Rpb24gPSBnZXRfZmxhZ19hbmRfYWN0aW9uIHQgYXJnIGluXG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgaW5mbyAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgKCogSWYgd2UncmUgZG9pbmcgY29tcGxldGlvbiwgdmVyc2lvbi9oZWxwIGluZm8gYXJlbid0IHVzZWZ1bCBjb21wbGV0aW9uXG4gICAgICAgICByZXNwb25zZXMuICopXG4gICAgICBpZiBjb21wbGV0aW5nXG4gICAgICB0aGVuIGVudiwgYXJnc1xuICAgICAgZWxzZSAoXG4gICAgICAgIHByaW50X2VuZGxpbmUgKGluZm8gZW52KTtcbiAgICAgICAgZXhpdCAwKVxuICAgIHwgTm9fYXJnIGYgLT4gZiBlbnYsIGFyZ3NcbiAgICB8IEFyZyAoZiwgY29tcCkgLT5cbiAgICAgIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICB8IE5pbCAtPiBkaWUgXCJtaXNzaW5nIGFyZ3VtZW50IGZvciBmbGFnICVzXCIgZmxhZyAoKVxuICAgICAgIHwgQ29ucyAoYXJnLCByZXN0KSAtPlxuICAgICAgICAgbGV0IGVudiA9XG4gICAgICAgICAgIHRyeSBmIGVudiBhcmcgd2l0aFxuICAgICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyBhcyBlIC0+XG4gICAgICAgICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIHJlc3QgdGhlbiBlbnYgZWxzZSByYWlzZSBlXG4gICAgICAgICBpblxuICAgICAgICAgZW52LCByZXN0XG4gICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+IG5ldmVyX3JldHVybnMgKENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcCBlbnYgfnBhcnQpKVxuICAgIHwgUmVzdCBmIC0+XG4gICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyB0aGVuIGV4aXQgMDtcbiAgICAgIGYgZW52IChDbWRsaW5lLnRvX2xpc3QgYXJncyksIE5pbFxuICA7O1xuXG4gIGxldCByZWMgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIChjbWRsaW5lIDogQ21kbGluZS50KSB+Zm9yX2NvbXBsZXRpb24gfnBhcnNlX2ZsYWdzID1cbiAgICBtYXRjaCBjbWRsaW5lIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgTGlzdC5pdGVyIChTdHJpbmcuTWFwLmRhdGEgdC5mbGFncykgfmY6KGZ1biBmbGFnIC0+IGZsYWcuY2hlY2tfYXZhaWxhYmxlIGVudik7XG4gICAgICBBbm9ucy5QYXJzZXIuZmluYWxfdmFsdWUgcGFyc2VyIGVudlxuICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgaWYgcGFyc2VfZmxhZ3MgJiYgU3RyaW5nLmlzX3ByZWZpeCBwYXJ0IH5wcmVmaXg6XCItXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICBMaXN0Lml0ZXIgKFN0cmluZy5NYXAua2V5cyB0LmZsYWdzKSB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0IHRoZW4gcHJpbnRfZW5kbGluZSBuYW1lKTtcbiAgICAgICAgZXhpdCAwKVxuICAgICAgZWxzZSBuZXZlcl9yZXR1cm5zIChBbm9ucy5QYXJzZXIuY29tcGxldGUgcGFyc2VyIGVudiB+cGFydClcbiAgICB8IENvbnMgKGFyZywgYXJncykgLT5cbiAgICAgIGxldCBhcmcsIGFyZ3MsIGFyZ19pc19mbGFnID1cbiAgICAgICAgbWF0Y2ggcGFyc2VfZmxhZ3Mgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKG1hdGNoIGFyZywgYXJncyB3aXRoXG4gICAgICAgICAgICgqIHRoZSAnLWFub24nIGZsYWcgaXMgaGVyZSBhcyBhbiBlc2NhcGUgaGF0Y2ggaW4gY2FzZSB5b3UgaGF2ZSBhblxuICAgICAgICAgICAgICBhbm9ueW1vdXMgYXJndW1lbnQgdGhhdCBzdGFydHMgd2l0aCBhIGh5cGhlbi4gKilcbiAgICAgICAgICAgfCBcIi1hbm9uXCIsIENvbnMgKGFyZywgYXJncykgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICAgICAoKiBzdXBwb3J0IHRoZSBjb21tb24gVW5peCBjb252ZW50aW9uIHdoZXJlIFwiLVwiIG1lYW5zIHN0ZGluICopXG4gICAgICAgICAgIHwgXCItXCIsIF8gLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICAgICB8IF8sIF8gLT4gYXJnLCBhcmdzLCBTdHJpbmcuaXNfcHJlZml4IGFyZyB+cHJlZml4OlwiLVwiKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBhcmdfaXNfZmxhZyB3aXRoXG4gICAgICAgfCB0cnVlIC0+XG4gICAgICAgICBsZXQgZW52LCBhcmdzID0gcnVuX2ZsYWcgdCBlbnYgYXJnIGFyZ3MgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciBhcmdzIH5wYXJzZV9mbGFncyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICBsZXQgcGFyc2VfZmxhZ3MxID0gcGFyc2VfZmxhZ3MgaW5cbiAgICAgICAgIGxldCAoeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MyOyB1cGRhdGVfZW52IH1cbiAgICAgICAgICAgICAgOiBfIEFub25zLlBhcnNlci5Db25zdW1lX3Jlc3VsdC50KVxuICAgICAgICAgICA9XG4gICAgICAgICAgIEFub25zLlBhcnNlci5jb25zdW1lIHBhcnNlciBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGVudiA9IHVwZGF0ZV9lbnYgZW52IGluXG4gICAgICAgICBsZXQgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczEgJiYgcGFyc2VfZmxhZ3MyIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgfnBhcnNlX2ZsYWdzIGFyZ3MgfmZvcl9jb21wbGV0aW9uKVxuICA7O1xuXG4gIGxldCBydW5fZXhuIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIF8gd2hlbiBmb3JfY29tcGxldGlvbiAtPiBleGl0IDBcbiAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzIH0gLT4gZXhpdCBzdGF0dXNcbiAgICB8IF8gLT5cbiAgICAgIGxldCBleG5fc3RyID1cbiAgICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPiBtc2dcbiAgICAgICAgfCBfIC0+IFNleHAudG9fc3RyaW5nX2h1bSBbJXNleHAgKGV4biA6IGV4bildXG4gICAgICBpblxuICAgICAgbGV0IHZlcmJvc2UgPSBPcHRpb24udmFsdWUgdmVyYm9zZV9vbl9wYXJzZV9lcnJvciB+ZGVmYXVsdDp0cnVlIGluXG4gICAgICBsZXQgZXJyb3JfbXNnID1cbiAgICAgICAgaWYgdmVyYm9zZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgfnNlcDpcIlxcblxcblwiXG4gICAgICAgICAgICBbIFwiRXJyb3IgcGFyc2luZyBjb21tYW5kIGxpbmU6XCJcbiAgICAgICAgICAgIDsgaW5kZW50X2J5XzIgZXhuX3N0clxuICAgICAgICAgICAgOyBcIkZvciB1c2FnZSBpbmZvcm1hdGlvbiwgcnVuXCJcbiAgICAgICAgICAgIDsgXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIC1oZWxwXFxuXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgZWxzZSBleG5fc3RyXG4gICAgICBpblxuICAgICAgcHJlcnJfZW5kbGluZSBlcnJvcl9tc2c7XG4gICAgICBleGl0IDFcbiAgOztcblxuICBsZXQgcnVuIHQgZW52IH53aGVuX3BhcnNpbmdfc3VjY2VlZHMgfnBhdGggfmFyZ3MgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgfmhlbHBfdGV4dCA9XG4gICAgbGV0IGZvcl9jb21wbGV0aW9uID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICBsZXQgZW52ID1cbiAgICAgIGVudlxuICAgICAgfD4gRW52LnNldCB+a2V5OnBhdGhfa2V5IH5kYXRhOnBhdGhcbiAgICAgIHw+IEVudi5zZXQgfmtleTphcmdzX2tleSB+ZGF0YTooQ21kbGluZS50b19saXN0IGFyZ3MpXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6aGVscF9rZXkgfmRhdGE6aGVscF90ZXh0XG4gICAgaW5cbiAgICBtYXRjaFxuICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgcnVuX2NtZGxpbmVcbiAgICAgICAgICB0XG4gICAgICAgICAgZW52XG4gICAgICAgICAgKHQuYW5vbnMgKCkpXG4gICAgICAgICAgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgfnBhcnNlX2ZsYWdzOnRydWVcbiAgICAgICAgICBhcmdzXG4gICAgICAgICAgYFBhcnNlX2FyZ3MpXG4gICAgd2l0aFxuICAgIHwgT2sgdGh1bmsgLT5cbiAgICAgIHdoZW5fcGFyc2luZ19zdWNjZWVkcyAoKTtcbiAgICAgIHRodW5rIGBSdW5fbWFpblxuICAgIHwgRXJyb3IgZXhuIC0+IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICA7O1xuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHsgZiA6IHVuaXQgLT4gKCdhIC0+ICdiKSBBbm9ucy5QYXJzZXIudFxuICAgICAgOyB1c2FnZSA6IHVuaXQgLT4gQW5vbnMuR3JhbW1hci50XG4gICAgICA7IGZsYWdzIDogdW5pdCAtPiBGbGFnLkludGVybmFsLnQgbGlzdFxuICAgICAgfVxuXG4gICAgKCogdGhlIChoaXN0b3JpY2FsKSByZWFzb24gdGhhdCBbcGFyYW1dIGlzIGRlZmluZWQgaW4gdGVybXMgb2YgW3RdIHJhdGhlciB0aGFuIHRoZVxuICAgICAgIG90aGVyIHdheSByb3VuZCBpcyB0aGF0IHRoZSBkZWxheWVkIGV2YWx1YXRpb24gbWF0dGVyZWQgZm9yIHNlcXVlbmNpbmcgb2ZcbiAgICAgICByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gcmVmIGNlbGxzIGluIHRoZSBvbGQgcmVwcmVzZW50YXRpb24gb2YgZmxhZ3MgKilcbiAgICB0eXBlICdhIHBhcmFtID0geyBwYXJhbSA6ICdtLiAoJ2EgLT4gJ20sICdtKSB0IH1cblxuICAgIG9wZW4gQW5vbnMuUGFyc2VyLkZvcl9vcGVuaW5nXG5cbiAgICBsZXQgYXBwIHQxIHQyIH5mID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIGYgPCo+IHQxLmYgKCkgPCo+IHQyLmYgKCkpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiB0Mi5mbGFncyAoKSBAIHQxLmZsYWdzICgpKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyB0MS51c2FnZSAoKTsgdDIudXNhZ2UgKCkgXSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgKCogU28gc2FkLiAgV2UgY2FuJ3QgZGVmaW5lIFthcHBseV0gaW4gdGVybXMgb2YgW2FwcF0gYmVjYXVzZSBvZiB0aGUgdmFsdWVcbiAgICAgICByZXN0cmljdGlvbi4gKilcbiAgICBsZXQgYXBwbHkgcGYgcHggPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID1cbiAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1biBtZiBteCBrIC0+IG1mIChmdW4gZiAtPiBteCAoZnVuIHggLT4gayAoZiB4KSkpKVxuICAgICAgICAgICAgICAgICA8Kj4gcGYucGFyYW0uZiAoKVxuICAgICAgICAgICAgICAgICA8Kj4gcHgucGFyYW0uZiAoKSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBweC5wYXJhbS5mbGFncyAoKSBAIHBmLnBhcmFtLmZsYWdzICgpKVxuICAgICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuY29uY2F0IFsgcGYucGFyYW0udXNhZ2UgKCk7IHB4LnBhcmFtLnVzYWdlICgpIF0pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgKCArKyApIHQxIHQyID0gYXBwIHQxIHQyIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKz4gKSB0MSBwMiA9IGFwcCB0MSBwMi5wYXJhbSB+ZjooZnVuIGYxIGYyIHggLT4gZjIgKGYxIHgpKVxuICAgIGxldCAoICs8ICkgdDEgcDIgPSBhcHAgcDIucGFyYW0gdDEgfmY6KGZ1biBmMiBmMSB4IC0+IGYxIChmMiB4KSlcblxuICAgIGxldCBzdGVwIGYgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gZilcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZW1wdHkgOiAnbS4gKCdtLCAnbSkgdCA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiBGbi5pZClcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgY29uc3QgdiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuIGsgLT4gayB2KSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHAgfmYgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBwLnBhcmFtLmYgKCkgPj58IGZ1biBjIGsgLT4gYyAoZnVuIHYgLT4gayAoZiB2KSkpXG4gICAgICAgICAgOyBmbGFncyA9IHAucGFyYW0uZmxhZ3NcbiAgICAgICAgICA7IHVzYWdlID0gcC5wYXJhbS51c2FnZVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHdyYXAgZiB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gdC5mICgpID4+fCBmdW4gcnVuIG1haW4gLT4gZiB+cnVuIH5tYWluKVxuICAgICAgOyBmbGFncyA9IHQuZmxhZ3NcbiAgICAgIDsgdXNhZ2UgPSB0LnVzYWdlXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvZl9wYXJhbXMgcGFyYW1zID1cbiAgICAgIGxldCB0ID0gcGFyYW1zLnBhcmFtIGluXG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHQuZiAoKSA+PnwgZnVuIHJ1biBtYWluIC0+IHJ1biBGbi5pZCBtYWluKVxuICAgICAgOyBmbGFncyA9IHQuZmxhZ3NcbiAgICAgIDsgdXNhZ2UgPSB0LnVzYWdlXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCB0b19wYXJhbXMgKHQgOiAoJ2EsICdiKSB0KSA6ICgnYSAtPiAnYikgcGFyYW0gPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiB0LmYgKCkgPj58IGZ1biBmIGsgLT4gayBmKTsgZmxhZ3MgPSB0LmZsYWdzOyB1c2FnZSA9IHQudXNhZ2UgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfcGFyYW0gcCA9IHAucGFyYW1cbiAgICBsZXQgdG9fcGFyYW0gdCBtYWluID0gbWFwICh0b19wYXJhbXMgdCkgfmY6KGZ1biBrIC0+IGsgbWFpbilcblxuICAgIGxldCBsb29rdXAga2V5ID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLmZyb21fZW52IChmdW4gZW52IG0gLT4gbSAoRW52LmZpbmRfZXhuIGVudiBrZXkpKSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcGF0aCA6IFBhdGgudCBwYXJhbSA9IGxvb2t1cCBwYXRoX2tleVxuICAgIGxldCBhcmdzIDogc3RyaW5nIGxpc3QgcGFyYW0gPSBsb29rdXAgYXJnc19rZXlcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgcGFyYW0gPSBsb29rdXAgaGVscF9rZXlcblxuICAgICgqIFRoaXMgaXMgb25seSB1c2VkIGludGVybmFsbHksIGZvciB0aGUgaGVscCBjb21tYW5kLiAqKVxuICAgIGxldCBlbnYgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuZnJvbV9lbnYgKGZ1biBlbnYgbSAtPiBtIGVudikpXG4gICAgICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gICAgICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gQW5vbnNcblxuICAgICAgdHlwZSAnYSBhbm9ucyA9ICdhIHRcblxuICAgICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCB0MiA9IHQyXG4gICAgICBsZXQgdDMgPSB0M1xuICAgICAgbGV0IHQ0ID0gdDRcblxuICAgICAgbGV0IGFub24gc3BlYyA9XG4gICAgICAgIEFub25zLkdyYW1tYXIuaW52YXJpYW50IHNwZWMuZ3JhbW1hcjtcbiAgICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHNwZWMucCA+PnwgZnVuIHYgayAtPiBrIHYpXG4gICAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IHNwZWMuZ3JhbW1hcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBlc2NhcGVfYW5vbiB+ZmluYWxfYW5vbiA9XG4gICAgICBBbm9ucy5lc2NhcGUgKHQyIGZpbmFsX2Fub24gKHNlcXVlbmNlIChcIkFSR1wiICU6IHN0cmluZykpKSB8PiBhbm9uXG4gICAgOztcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEZsYWdcblxuICAgICAgdHlwZSAnYSBmbGFnID0gJ2EgdFxuXG4gICAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgICAgbGV0IG9uZV9vcl9tb3JlID0gb25lX29yX21vcmVcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG5cbiAgICAgIGxldCBmbGFnX2ludGVybmFsXG4gICAgICAgICAgICA/KGFsaWFzZXMgPSBbXSlcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIG1vZGVcbiAgICAgICAgICAgIH5kb2NcbiAgICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA9XG4gICAgICAgIGxldCBub3JtYWxpemUgZmxhZyA9IG5vcm1hbGl6ZSBLZXlfdHlwZS5GbGFnIGZsYWcgaW5cbiAgICAgICAgbGV0IG5hbWUgPSBub3JtYWxpemUgbmFtZSBpblxuICAgICAgICBsZXQgYWxpYXNlcyA9IExpc3QubWFwIH5mOm5vcm1hbGl6ZSBhbGlhc2VzIGluXG4gICAgICAgIGxldCB7IHJlYWQ7IGFjdGlvbjsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IG1vZGUgbmFtZSBpblxuICAgICAgICBsZXQgY2hlY2tfYXZhaWxhYmxlID1cbiAgICAgICAgICBtYXRjaCBudW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiAoaWdub3JlIDogVW5pdl9tYXAudCAtPiB1bml0KVxuICAgICAgICAgIHwgdHJ1ZSAtPiBmdW4gZW52IC0+IGlnbm9yZSAocmVhZCBlbnYgOiBfKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmFtZV9tYXRjaGluZyA9XG4gICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgZnVsbF9mbGFnX3JlcXVpcmVkIHRoZW4gYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgZWxzZSBgUHJlZml4XG4gICAgICAgIGluXG4gICAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuZnJvbV9lbnYgKGZ1biBlbnYgbSAtPiBtIChyZWFkIGVudikpKVxuICAgICAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgIFsgeyBuYW1lXG4gICAgICAgICAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICAgICAgICAgICAgIDsgZG9jID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZm9yY2UgZXh0cmFfZG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGV4dHJhX2RvYyAtPiBbJXN0cmluZyBcIiV7ZG9jfSAle2V4dHJhX2RvY31cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGRvYylcbiAgICAgICAgICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbGFnID0gZmxhZ19pbnRlcm5hbCB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6W11cblxuICAgICAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGFyZ190eXBlXG4gICAgICAgICAgICBzZXhwX29mX2RlZmF1bHRcbiAgICAgICAgICAgIH5kZWZhdWx0XG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgID1cbiAgICAgICAgbGV0IGRvYyA9XG4gICAgICAgICAgbWF0Y2ggc2V4cF9vZl9kZWZhdWx0IGRlZmF1bHQgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIFwiX1wiIC0+IGRvY1xuICAgICAgICAgIHwgZGVmYXVsdF9zZXhwIC0+IHNwcmludGYgIVwiJXMgKGRlZmF1bHQ6ICV7U2V4cH0pXCIgZG9jIGRlZmF1bHRfc2V4cFxuICAgICAgICBpblxuICAgICAgICBmbGFnXG4gICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIChvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSlcbiAgICAgICAgICB+ZG9jXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBwYXJhbVxuXG4gICAgICAgICAgbGV0IHJldHVybiA9IGNvbnN0XG4gICAgICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcGFpciA9IGJvdGhcbiAgICBlbmRcblxuICAgIGxldCBmbGFnc19vZl9hcmdzX2V4biBhcmdzID1cbiAgICAgIExpc3QuZm9sZCBhcmdzIH5pbml0OmVtcHR5IH5mOihmdW4gYWNjIChuYW1lLCBzcGVjLCBkb2MpIC0+XG4gICAgICAgIGxldCBnZW4gZiBmbGFnX3R5cGUgPVxuICAgICAgICAgIHN0ZXAgKGZ1biBtIHggLT5cbiAgICAgICAgICAgIGYgeDtcbiAgICAgICAgICAgIG0pXG4gICAgICAgICAgKz4gZmxhZyBuYW1lIGZsYWdfdHlwZSB+ZG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYWxsIGYgYXJnX3R5cGUgPSBnZW4gKGZ1biB4IC0+IE9wdGlvbi5pdGVyIHggfmYpIChvcHRpb25hbCBhcmdfdHlwZSkgaW5cbiAgICAgICAgbGV0IHNldCByIGFyZ190eXBlID0gY2FsbCAoZnVuIHggLT4gciA6PSB4KSBhcmdfdHlwZSBpblxuICAgICAgICBsZXQgc2V0X2Jvb2wgciBiID0gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIHIgOj0gYikgbm9fYXJnIGluXG4gICAgICAgIGFjY1xuICAgICAgICArK1xuICAgICAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICAgICAgfCBBcmcuVW5pdCBmIC0+IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiBmICgpKSBub19hcmdcbiAgICAgICAgfCBBcmcuU2V0IHIgLT4gc2V0X2Jvb2wgciB0cnVlXG4gICAgICAgIHwgQXJnLkNsZWFyIHIgLT4gc2V0X2Jvb2wgciBmYWxzZVxuICAgICAgICB8IEFyZy5TdHJpbmcgZiAtPiBjYWxsIGYgc3RyaW5nXG4gICAgICAgIHwgQXJnLlNldF9zdHJpbmcgciAtPiBzZXQgciBzdHJpbmdcbiAgICAgICAgfCBBcmcuSW50IGYgLT4gY2FsbCBmIGludFxuICAgICAgICB8IEFyZy5TZXRfaW50IHIgLT4gc2V0IHIgaW50XG4gICAgICAgIHwgQXJnLkZsb2F0IGYgLT4gY2FsbCBmIGZsb2F0XG4gICAgICAgIHwgQXJnLlNldF9mbG9hdCByIC0+IHNldCByIGZsb2F0XG4gICAgICAgIHwgQXJnLkJvb2wgZiAtPiBjYWxsIGYgYm9vbFxuICAgICAgICB8IEFyZy5TeW1ib2wgKHN5bXMsIGYpIC0+XG4gICAgICAgICAgbGV0IGFyZ190eXBlID1cbiAgICAgICAgICAgIEFyZ190eXBlLm9mX2FsaXN0X2V4blxuICAgICAgICAgICAgICB+bGlzdF92YWx1ZXNfaW5faGVscDpmYWxzZVxuICAgICAgICAgICAgICAoTGlzdC5tYXAgc3ltcyB+ZjooZnVuIHN5bSAtPiBzeW0sIHN5bSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjYWxsIGYgYXJnX3R5cGVcbiAgICAgICAgfCBBcmcuUmVzdCBmIC0+IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZjooTGlzdC5pdGVyIH5mKSkgZXNjYXBlXG4gICAgICAgIHwgQXJnLlR1cGxlIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5UdXBsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChBcmcuRXhwYW5kIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMDUsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5FeHBhbmQgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIlxuICAgICAgICB8ICgoQXJnLlJlc3RfYWxsIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTIsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5SZXN0X2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBGbGFnLkRlcHJlY2F0ZWRcbiAgICAgIGluY2x1ZGUgQW5vbnMuRGVwcmVjYXRlZFxuICAgIGVuZFxuXG4gICAgbGV0IGFyZ19uYW1lcyBwYXJhbSA9XG4gICAgICBsZXQgdCA9IHBhcmFtLnBhcmFtIGluXG4gICAgICBsZXQgZmxhZ19uYW1lcyA9IE1hcC5rZXlzIChGbGFnLkludGVybmFsLmNyZWF0ZSAodC5mbGFncyAoKSkpIGluXG4gICAgICBsZXQgYW5vbl9uYW1lcyA9IEFub25zLkdyYW1tYXIubmFtZXMgKHQudXNhZ2UgKCkpIGluXG4gICAgICBMaXN0LmNvbmNhdCBbIGZsYWdfbmFtZXM7IGFub25fbmFtZXMgXVxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ2hvb3NlX29uZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIENob2ljZV9uYW1lIDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIGxpc3RfdG9fc3RyaW5nIDogdCBsaXN0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgY3JlYXRlX2V4biA6ICdhIHBhcmFtIC0+IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biBwYXJhbSA9XG4gICAgICAgICAgbGV0IG5hbWVzID0gYXJnX25hbWVzIHBhcmFtIGluXG4gICAgICAgICAgbGV0IG5hbWVzX3dpdGhfY29tbWFzID0gTGlzdC5maWx0ZXIgbmFtZXMgfmY6KGZ1biBzIC0+IFN0cmluZy5jb250YWlucyBzICcsJykgaW5cbiAgICAgICAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgbmFtZXNfd2l0aF9jb21tYXMpXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJGb3Igc2ltcGxpY2l0eSwgW0NvbW1hbmQuU3BlYy5jaG9vc2Vfb25lXSBkb2VzIG5vdCBzdXBwb3J0IG5hbWVzIHdpdGggXFxcbiAgICAgICAgICAgICAgIGNvbW1hcy5cIlxuICAgICAgICAgICAgICBuYW1lc193aXRoX2NvbW1hc1xuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XTtcbiAgICAgICAgICBtYXRjaCBuYW1lcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2UgXCJbY2hvb3NlX29uZV0gZXhwZWN0cyBjaG9pY2VzIHRvIHJlYWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cIl1cbiAgICAgICAgICB8IF8gOjogXyAtPiBuYW1lc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCJcbiAgICAgICAgbGV0IGxpc3RfdG9fc3RyaW5nIHRzID0gTGlzdC5tYXAgdHMgfmY6dG9fc3RyaW5nIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcbiAgXCJcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGNob29zZV9vbmVcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgICh0cyA6IGEgb3B0aW9uIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0LCB0KVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdCAobW9kdWxlIENob2ljZV9uYW1lKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGNhbGxlZCB3aXRoIGR1cGxpY2F0ZSBuYW1lXCJcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIFslc2V4cF9vZjogQ2hvaWNlX25hbWUudF1cbiAgICAgICAgfCBgT2sgdHMgLT5cbiAgICAgICAgICBNYXAuZm9sZCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTp0IGluaXQgLT5cbiAgICAgICAgICAgIG1hcDIgaW5pdCB0IH5mOihmdW4gaW5pdCB2YWx1ZSAtPlxuICAgICAgICAgICAgICBPcHRpb24uZm9sZCB2YWx1ZSB+aW5pdCB+ZjooZnVuIGluaXQgdmFsdWUgLT4gKG5hbWUsIHZhbHVlKSA6OiBpbml0KSkpXG4gICAgICAgICAgfD4gbWFwIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBfIDo6IF8gOjogXyBhcyBwYXNzZWQgLT5cbiAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgIVwiQ2Fubm90IHBhc3MgbW9yZSB0aGFuIG9uZSBvZiB0aGVzZTogXFxuXFxcbiAgICAgICAgICAgICAgICAgXFwgICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAoTGlzdC5tYXAgcGFzc2VkIH5mOmZzdClcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgfCBbIChfLCB2YWx1ZSkgXSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIChfIDogYSkgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgIHwgUmFpc2UgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gKFNvbWUgdmFsdWUgOiBiKSlcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGlmX25vdGhpbmdfY2hvc2VuIHdpdGhcbiAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byB2YWx1ZSAtPiB2YWx1ZVxuICAgICAgICAgICAgICAgfCBSZXR1cm5fbm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICB8IFJhaXNlIC0+XG4gICAgICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgICAgICFcIk11c3QgcGFzcyBvbmUgb2YgdGhlc2U6XFxuICAle0Nob2ljZV9uYW1lLmxpc3RfdG9fc3RyaW5nfVwiXG4gICAgICAgICAgICAgICAgICAgKE1hcC5rZXlzIHRzKVxuICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBDaG9vc2Vfb25lLklmX25vdGhpbmdfY2hvc2VuXG5cbiAgICBsZXQgY2hvb3NlX29uZSA9IENob29zZV9vbmUuY2hvb3NlX29uZVxuICAgIGxldCBhbmRfYXJnX25hbWVzIHQgPSBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBhcmdfbmFtZXMgdClcblxuICAgIGxldCBhbmRfYXJnX25hbWUgdCA9XG4gICAgICBtYXRjaCBhcmdfbmFtZXMgdCB3aXRoXG4gICAgICB8IFsgbmFtZSBdIC0+IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIG5hbWUpXG4gICAgICB8IG5hbWVzIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW2FuZF9hcmdfbmFtZV0gZXhwZWN0cyBleGFjdGx5IG9uZSBuYW1lLCBnb3RcIiB+XzoobmFtZXMgOiBzdHJpbmcgbGlzdCldXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIEdyb3VwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3QgTGF6eS50XG4gICAgOyBib2R5IDogKHBhdGg6c3RyaW5nIGxpc3QgLT4gdW5pdCkgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZSB0IDogXyBTaGFwZS5Hcm91cF9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyBzdWJjb21tYW5kcyA9IExhenkubWFwIHQuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnN1YmNvbW1hbmRfdG9fc2hhcGUpXG4gICAgfVxuICA7O1xuZW5kXG5cbmxldCBhYnNfcGF0aCA9IFNoYXBlLlByaXZhdGUuYWJzX3BhdGhcbmxldCBjb21wX2N3b3JkID0gQ29tbWFuZF9lbnZfdmFyLkNPTVBfQ1dPUkRcblxubW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyAoKiBJZiBbcGF0aF90b19leGVdIGlzIHJlbGF0aXZlLCBpbnRlcnByZXQgdy5yLnQuIFt3b3JraW5nX2Rpcl0gKilcbiAgICAgIHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBlbnYgOiBlbnYgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuRXhlY19pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IHQuY2hpbGRfc3ViY29tbWFuZFxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBIHByb3h5IGNvbW1hbmQgaXMgdGhlIHN0cnVjdHVyZSBvZiBhbiBFeGVjIGNvbW1hbmQgb2J0YWluZWQgYnkgcnVubmluZyBpdCBpbiBhXG4gICBzcGVjaWFsIHdheSAqKVxubW9kdWxlIFByb3h5ID0gc3RydWN0XG4gIG1vZHVsZSBLaW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgQmFzZSBvZiBTaGFwZS5CYXNlX2luZm8udFxuICAgICAgfCBHcm91cCBvZiAnYSBTaGFwZS5Hcm91cF9pbmZvLnRcbiAgICAgIHwgRXhlYyBvZiBTaGFwZS5FeGVjX2luZm8udFxuICAgICAgfCBMYXp5IG9mICdhIHQgTGF6eS50XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGtpbmQgOiB0IEtpbmQudFxuICAgIH1cbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2Ugb2YgQmFzZS50XG4gIHwgR3JvdXAgb2YgdCBHcm91cC50XG4gIHwgRXhlYyBvZiBFeGVjLnRcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgc2V4cGFibGVfc2hhcGUgOiB0IC0+IFNoYXBlLlNleHBhYmxlLnQgPSBmdW5jdGlvblxuICB8IEJhc2UgYmFzZSAtPiBCYXNlIChCYXNlLnNoYXBlIGJhc2UpXG4gIHwgRXhlYyBleGVjIC0+IEV4ZWMgKEV4ZWMuc2hhcGUgZXhlYylcbiAgfCBHcm91cCBncm91cCAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2V4cGFibGVfc2hhcGUgZ3JvdXApXG4gIHwgTGF6eSB0aHVuayAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzZXhwYWJsZV9zaGFwZSB0aHVuaylcbjs7XG5cbnR5cGUgKCdtYWluLCAncmVzdWx0KSBiYXNpY19zcGVjX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZ1xuICAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZylcbiAgLT4gKCdtYWluLCB1bml0IC0+ICdyZXN1bHQpIEJhc2UuU3BlYy50XG4gIC0+ICdtYWluXG4gIC0+IHRcblxubGV0IGV4dGVuZF9leG4gfm1lbSB+YWRkIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBpZiBtZW0gbWFwIGtleVxuICB0aGVuIGZhaWx3aXRoZiBcInRoZXJlIGlzIGFscmVhZHkgYSAlcyBuYW1lZCAlc1wiIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpIGtleSAoKTtcbiAgYWRkIG1hcCB+a2V5IH5kYXRhXG47O1xuXG5sZXQgZXh0ZW5kX21hcF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSB+bWVtOk1hcC5tZW0gfmFkZDpNYXAuc2V0XG47O1xuXG5sZXQgZXh0ZW5kX2FsaXN0X2V4biBhbGlzdCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBleHRlbmRfZXhuXG4gICAgYWxpc3RcbiAgICBrZXlfdHlwZVxuICAgIH5rZXlcbiAgICBkYXRhXG4gICAgfm1lbTooZnVuIGFsaXN0IGtleSAtPiBMaXN0LkFzc29jLm1lbSBhbGlzdCBrZXkgfmVxdWFsOlN0cmluZy5lcXVhbClcbiAgICB+YWRkOihmdW4gYWxpc3QgfmtleSB+ZGF0YSAtPiBMaXN0LkFzc29jLmFkZCBhbGlzdCBrZXkgZGF0YSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuOztcblxubW9kdWxlIEJhaWxvdXRfZHVtcF9mbGFnID0gc3RydWN0XG4gIGxldCBhZGQgYmFzZSB+bmFtZSB+YWxpYXNlcyB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgfnRleHQgfnRleHRfc3VtbWFyeSA9XG4gICAgbGV0IGZsYWdzID0gYmFzZS5CYXNlLmZsYWdzIGluXG4gICAgbGV0IGZsYWdzID1cbiAgICAgIGV4dGVuZF9tYXBfZXhuXG4gICAgICAgIGZsYWdzXG4gICAgICAgIEtleV90eXBlLkZsYWdcbiAgICAgICAgfmtleTpuYW1lXG4gICAgICAgIHsgbmFtZVxuICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgIDsgYWxpYXNlc1xuICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IEZsYWcuTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IGlnbm9yZVxuICAgICAgICA7IGFjdGlvbiA9IFByaW50X2luZm9fYW5kX3F1aXQgKGZ1biBlbnYgLT4gdGV4dCBlbnYpXG4gICAgICAgIDsgZG9jID0gc3ByaW50ZiBcIiBwcmludCAlcyBhbmQgZXhpdFwiIHRleHRfc3VtbWFyeVxuICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBgUHJlZml4XG4gICAgICAgIH1cbiAgICBpblxuICAgIHsgYmFzZSB3aXRoIEJhc2UuZmxhZ3MgfVxuICA7O1xuZW5kXG5cbmxldCBiYXNpY19zcGVjIH5zdW1tYXJ5ID9yZWFkbWUgeyBCYXNlLlNwZWMudXNhZ2U7IGZsYWdzOyBmIH0gbWFpbiA9XG4gIGxldCBmbGFncyA9IGZsYWdzICgpIGluXG4gIGxldCB1c2FnZSA9IHVzYWdlICgpIGluXG4gIGxldCBhbm9ucyAoKSA9XG4gICAgbGV0IG9wZW4gQW5vbnMuUGFyc2VyLkZvcl9vcGVuaW5nIGluXG4gICAgZiAoKVxuICAgID4+fCBmdW4gayBgUGFyc2VfYXJncyAtPlxuICAgIGxldCB0aHVuayA9IGsgbWFpbiBpblxuICAgIGZ1biBgUnVuX21haW4gLT4gdGh1bmsgKClcbiAgaW5cbiAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgZmxhZ3MgaW5cbiAgbGV0IGJhc2UgPSB7IEJhc2Uuc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3M7IGFub25zIH0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgYmFzZVxuICAgICAgfm5hbWU6XCItaGVscFwiXG4gICAgICB+YWxpYXNlczpbIFwiLT9cIiBdXG4gICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0taGVscFwiIF1cbiAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGlzIGhlbHAgdGV4dFwiXG4gICAgICB+dGV4dDooZnVuIGVudiAtPiBMYXp5LmZvcmNlIChFbnYuZmluZF9leG4gZW52IEJhc2UuaGVscF9rZXkpKVxuICBpblxuICBCYXNlIGJhc2Vcbjs7XG5cbmxldCBiYXNpYyA9IGJhc2ljX3NwZWNcbmxldCBzdWJzX2tleSA6IChzdHJpbmcgKiB0KSBsaXN0IEVudi5LZXkudCA9IEVudi5rZXlfY3JlYXRlIFwic3ViY29tbWFuZHNcIlxuXG5sZXQgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICBMYXp5Lm1hcCBhbGlzdCB+ZjooZnVuIGFsaXN0IC0+XG4gICAgICBsZXQgYWxpc3QgPVxuICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChuYW1lLCB0KSAtPiBub3JtYWxpemUgS2V5X3R5cGUuU3ViY29tbWFuZCBuYW1lLCB0KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFN0cmluZy5NYXAub2ZfYWxpc3QgYWxpc3Qgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBuYW1lIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIHN1YmNvbW1hbmRzIG5hbWVkICVzXCIgbmFtZSAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIChtYXRjaCBwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIHdpdGhcbiAgICAgICAgIHwgU29tZSAoKSAtPiBhbGlzdFxuICAgICAgICAgfCBOb25lIC0+IE1hcC50b19hbGlzdCBtYXApKVxuICBpblxuICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuOztcblxubGV0IGdyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSAoTGF6eS5mcm9tX3ZhbCBhbGlzdClcbjs7XG5cbmxldCBleGVjIH5zdW1tYXJ5ID9yZWFkbWUgPyhjaGlsZF9zdWJjb21tYW5kID0gW10pID9lbnYgfnBhdGhfdG9fZXhlICgpID1cbiAgbGV0IHdvcmtpbmdfZGlyID1cbiAgICBGaWxlbmFtZS5kaXJuYW1lXG4gICAgQEBcbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgXyB8IGBSZWxhdGl2ZV90b19tZSBfIC0+IENhbWwuU3lzLmV4ZWN1dGFibGVfbmFtZVxuICAgIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIF8gLT4gQ2FtbC5TeXMuYXJndi4oMClcbiAgaW5cbiAgbGV0IHBhdGhfdG9fZXhlID1cbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZS5pc19hYnNvbHV0ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBBYnNvbHV0ZSBtdXN0IGJlIGFic29sdXRlXCJcbiAgICAgIGVsc2UgcFxuICAgIHwgYFJlbGF0aXZlX3RvX21lIHAgfCBgUmVsYXRpdmVfdG9fYXJndjAgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZS5pc19yZWxhdGl2ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBSZWxhdGl2ZV90b19tZSBtdXN0IGJlIHJlbGF0aXZlXCJcbiAgICAgIGVsc2UgcFxuICBpblxuICBFeGVjIHsgc3VtbWFyeTsgcmVhZG1lOyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IGNoaWxkX3N1YmNvbW1hbmQ7IGVudiB9XG47O1xuXG5sZXQgb2ZfbGF6eSB0aHVuayA9IExhenkgdGh1bmtcblxubGV0IHJlYyBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIDogUHJveHkudFxuICA9XG4gIGxldCBraW5kID1cbiAgICBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIGluXG4gIHsgd29ya2luZ19kaXI7IHBhdGhfdG9fZXhlOyBwYXRoX3RvX3N1YmNvbW1hbmQ7IGNoaWxkX3N1YmNvbW1hbmQ7IGtpbmQgfVxuXG5hbmQga2luZF9vZl9zZXhwYWJsZVxuICAgICAgc2V4cGFibGVcbiAgICAgIH53b3JraW5nX2RpclxuICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICA9XG4gIG1hdGNoIChzZXhwYWJsZSA6IFNoYXBlLlNleHBhYmxlLnQpIHdpdGhcbiAgfCBCYXNlIGIgLT4gUHJveHkuS2luZC5CYXNlIGJcbiAgfCBFeGVjIGUgLT4gUHJveHkuS2luZC5FeGVjIGVcbiAgfCBMYXp5IGwgLT5cbiAgICBQcm94eS5LaW5kLkxhenlcbiAgICAgIChMYXp5Lm1hcCBsIH5mOihmdW4gc2V4cGFibGUgLT5cbiAgICAgICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kKSlcbiAgfCBHcm91cCBnIC0+XG4gICAgUHJveHkuS2luZC5Hcm91cFxuICAgICAgeyBnIHdpdGhcbiAgICAgICAgc3ViY29tbWFuZHMgPVxuICAgICAgICAgIExhenkubWFwXG4gICAgICAgICAgICBnLnN1YmNvbW1hbmRzXG4gICAgICAgICAgICB+ZjpcbiAgICAgICAgICAgICAgKExpc3QubWFwIH5mOihmdW4gKHN0ciwgc2V4cGFibGUpIC0+XG4gICAgICAgICAgICAgICAgIGxldCBwYXRoX3RvX3N1YmNvbW1hbmQgPSBwYXRoX3RvX3N1YmNvbW1hbmQgQCBbIHN0ciBdIGluXG4gICAgICAgICAgICAgICAgIGxldCBwcm94eSA9XG4gICAgICAgICAgICAgICAgICAgcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICAgICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgc3RyLCBwcm94eSkpXG4gICAgICB9XG47O1xuXG5tb2R1bGUgdHlwZSBGb3JfdmVyc2lvbl9pbmZvID0gc2lnXG4gIG1vZHVsZSBWZXJzaW9uX3V0aWwgOiBWZXJzaW9uX3V0aWxcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIHR5cGUgdCA9IFRpbWVfZmxvYXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVmVyc2lvbl9pbmZvIChNIDogRm9yX3ZlcnNpb25faW5mbykgPSBzdHJ1Y3RcbiAgb3BlbiBNXG5cbiAgbGV0IHByaW50X3ZlcnNpb24gfnZlcnNpb24gPSBwcmludF9lbmRsaW5lIChmb3JjZSB2ZXJzaW9uKVxuICBsZXQgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbyA9IHByaW50X2VuZGxpbmUgKGZvcmNlIGJ1aWxkX2luZm8pXG5cbiAgbGV0IGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8gPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcInByaW50IHZlcnNpb24gaW5mb3JtYXRpb25cIlxuICAgICAgQmFzZS5TcGVjLihcbiAgICAgICAgZW1wdHlcbiAgICAgICAgKz4gZmxhZyBcIi12ZXJzaW9uXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgdGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgICs+IGZsYWcgXCItYnVpbGQtaW5mb1wiIG5vX2FyZyB+ZG9jOlwiIHByaW50IGJ1aWxkIGluZm8gZm9yIHRoaXMgYnVpbGRcIilcbiAgICAgIChmdW4gdmVyc2lvbl9mbGFnIGJ1aWxkX2luZm9fZmxhZyAtPlxuICAgICAgICAgaWYgYnVpbGRfaW5mb19mbGFnXG4gICAgICAgICB0aGVuIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm9cbiAgICAgICAgIGVsc2UgaWYgdmVyc2lvbl9mbGFnXG4gICAgICAgICB0aGVuIHByaW50X3ZlcnNpb24gfnZlcnNpb25cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICBwcmludF92ZXJzaW9uIH52ZXJzaW9uKTtcbiAgICAgICAgIGV4aXQgMClcbiAgOztcblxuICBsZXQgcmVjIGFkZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyB1bnZlcnNpb25lZCA9XG4gICAgbWF0Y2ggdW52ZXJzaW9uZWQgd2l0aFxuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYmFzZSA9XG4gICAgICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgICAgIGJhc2VcbiAgICAgICAgICB+bmFtZTpcIi12ZXJzaW9uXCJcbiAgICAgICAgICB+YWxpYXNlczpbXVxuICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS12ZXJzaW9uXCIgXVxuICAgICAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGUgdmVyc2lvbiBvZiB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgdmVyc2lvbilcbiAgICAgIGluXG4gICAgICBsZXQgYmFzZSA9XG4gICAgICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgICAgIGJhc2VcbiAgICAgICAgICB+bmFtZTpcIi1idWlsZC1pbmZvXCJcbiAgICAgICAgICB+YWxpYXNlczpbXVxuICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS1idWlsZC1pbmZvXCIgXVxuICAgICAgICAgIH50ZXh0X3N1bW1hcnk6XCJpbmZvIGFib3V0IHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSBidWlsZF9pbmZvKVxuICAgICAgaW5cbiAgICAgIEJhc2UgYmFzZVxuICAgIHwgR3JvdXAgZ3JvdXAgLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIGdyb3VwLkdyb3VwLnN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICBzdWJjb21tYW5kc1xuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcInZlcnNpb25cIlxuICAgICAgICAgICAgKGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8pKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgZ3JvdXAgd2l0aCBHcm91cC5zdWJjb21tYW5kcyB9XG4gICAgfCBFeGVjIGV4ZWMgLT4gRXhlYyBleGVjXG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBub3JtYWxpemVfdmVyc2lvbl9saW5lcyBsaW5lcyA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCIgKExpc3Quc29ydCBsaW5lcyB+Y29tcGFyZTpTdHJpbmcuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZGVmYXVsdF92ZXJzaW9uID0gbGF6eSAobm9ybWFsaXplX3ZlcnNpb25fbGluZXMgVmVyc2lvbl91dGlsLnZlcnNpb25fbGlzdClcblxuICBsZXQgZGVmYXVsdF9idWlsZF9pbmZvID1cbiAgICBsYXp5XG4gICAgICAoKiBsYXp5IHRvIGF2b2lkIGxvYWRpbmcgYWxsIHRoZSB0aW1lIHpvbmUgc3R1ZmYgYXQgdG9wbGV2ZWwgKilcbiAgICAgIChWZXJzaW9uX3V0aWwucmVwcmludF9idWlsZF9pbmZvIFRpbWUuc2V4cF9vZl90KVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlZlcnNpb25faW5mb1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFZlcnNpb25fdXRpbCA9IHN0cnVjdFxuICAgICAgICAgIGxldCB2ZXJzaW9uX2xpc3QgPSBbIFwiaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlwiOyBcInNzaDovL2EvcGF0aF84YmFkZjAwZFwiIF1cbiAgICAgICAgICBsZXQgcmVwcmludF9idWlsZF9pbmZvIHRvX3NleHAgPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCBUaW1lX2Zsb2F0LmVwb2NoKVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgVGltZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFRpbWVfZmxvYXQudFxuXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gVGltZV9mbG9hdC50b19zdHJpbmdfdXRjIHQgfD4gU2V4cC5vZl9zdHJpbmdcbiAgICAgICAgZW5kXG4gICAgICBlbmQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCB2ZXJzaW9uIHdoZXJlIG11bHRpcGxlIHJlcG9zIGFyZSB1c2VkXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvbjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgICAgIGhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcbiAgICAgICAgc3NoOi8vYS9wYXRoXzhiYWRmMDBkIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCBidWlsZCBpbmZvXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm86KGxhenkgXCJzb21lIGJ1aWxkIGluZm9cIik7XG4gICAgICBbJWV4cGVjdCB7fCBzb21lIGJ1aWxkIGluZm8gfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IHJlYyBzdW1tYXJ5ID0gZnVuY3Rpb25cbiAgfCBCYXNlIHggLT4geC5zdW1tYXJ5XG4gIHwgR3JvdXAgeCAtPiB4LnN1bW1hcnlcbiAgfCBFeGVjIHggLT4geC5zdW1tYXJ5XG4gIHwgTGF6eSB0aHVuayAtPiBzdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlNwZWNcblxuICBsZXQgcGF0aCA9IG1hcCB+ZjpQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwZWMgPSBTcGVjLkRlcHJlY2F0ZWRcblxuICBsZXQgc3VtbWFyeSA9IHN1bW1hcnlcblxuICBsZXQgcmVjIGdldF9mbGFnX25hbWVzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgYmFzZSAtPiBiYXNlLkJhc2UuZmxhZ3MgfD4gU3RyaW5nLk1hcC5rZXlzXG4gICAgfCBMYXp5IHRodW5rIC0+IGdldF9mbGFnX25hbWVzIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIHwgR3JvdXAgXyB8IEV4ZWMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgaGVscF9yZWN1cnNpdmUgfmNtZCB+d2l0aF9mbGFncyB+ZXhwYW5kX2RvdHMgdCBzID1cbiAgICBsZXQgcmVjIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgcyA9XG4gICAgICBsZXQgbmV3X3MgPSBzIF4gKGlmIGV4cGFuZF9kb3RzIHRoZW4gY21kIGVsc2UgXCIuXCIpIF4gXCIgXCIgaW5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICAgIGxldCBiYXNlX2hlbHAgPSBzIF4gY21kLCBzdW1tYXJ5IChCYXNlIGJhc2UpIGluXG4gICAgICAgIGlmIHdpdGhfZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGJhc2VfaGVscFxuICAgICAgICAgIDo6IExpc3QubWFwXG4gICAgICAgICAgICAgICB+ZjooZnVuIChmbGFnLCBoKSAtPiBuZXdfcyBeIGZsYWcsIGgpXG4gICAgICAgICAgICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAgICAgICAgICB+Y29tcGFyZTpCYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICAgICAgICAoQmFzZS5EZXByZWNhdGVkLmZsYWdzX2hlbHAgfmRpc3BsYXlfaGVscF9mbGFnczpmYWxzZSBiYXNlKSlcbiAgICAgICAgZWxzZSBbIGJhc2VfaGVscCBdXG4gICAgICB8IEdyb3VwIHsgc3VtbWFyeTsgc3ViY29tbWFuZHM7IHJlYWRtZSA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgICAgKHMgXiBjbWQsIHN1bW1hcnkpXG4gICAgICAgIDo6IChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6QmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gKGNtZCcsIHQpIC0+IGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kOmNtZCcgdCBuZXdfcykpXG4gICAgICB8IEV4ZWMgXyAtPlxuICAgICAgICAoKiBDb21tYW5kLmV4ZWMgZG9lcyBub3Qgc3VwcG9ydCBkZXByZWNhdGVkIGNvbW1hbmRzICopXG4gICAgICAgIFtdXG4gICAgaW5cbiAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3VuaXggKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBzdHJpbmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyKVxuXG4gIG1vZHVsZSBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhciA6IEZvcl91bml4IHdpdGggdHlwZSBlbnZfdmFyIDo9IENvbW1hbmRfZW52X3Zhci50ID1cbiAgc3RydWN0XG4gICAgKCogV2UgZm9yY2UgYWNjZXNzIHRvIGVudiB2YXJzIHRvIGdvIHRocm91Z2ggW0NvbW1hbmRfZW52X3Zhcl0gc28gdGhhdCB3ZSBjYW4ga2VlcCBhblxuICAgICAgIGFjY3VyYXRlIGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgd2UgdXNlLiAqKVxuXG4gICAgaW5jbHVkZSBGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyXG5cbiAgICBtb2R1bGUgVW5peCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml4XG5cbiAgICAgIGxldCBwdXRlbnYgfmtleSB+ZGF0YSA9IHB1dGVudiB+a2V5OihDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGtleSkgfmRhdGFcbiAgICAgIGxldCB1bnNldGVudiBrZXkgPSB1bnNldGVudiAoQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBrZXkpXG4gICAgICBsZXQgdW5zYWZlX2dldGVudiBrZXkgPSB1bnNhZmVfZ2V0ZW52IChDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGtleSlcblxuICAgICAgdHlwZSBlbnYgPVxuICAgICAgICBbIGBSZXBsYWNlIG9mIChDb21tYW5kX2Vudl92YXIudCAqIHN0cmluZykgbGlzdFxuICAgICAgICB8IGBFeHRlbmQgb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nKSBsaXN0XG4gICAgICAgIHwgYE92ZXJyaWRlIG9mIChDb21tYW5kX2Vudl92YXIudCAqIHN0cmluZyBvcHRpb24pIGxpc3RcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgb2Ygc3RyaW5nIGxpc3RcbiAgICAgICAgXVxuXG4gICAgICBsZXQgY29udmVydF9lbnYgZW52ID1cbiAgICAgICAgbGV0IGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0ID1cbiAgICAgICAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGVudl92YXIsIHN0cikgLT4gQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBlbnZfdmFyLCBzdHIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGVudiB3aXRoXG4gICAgICAgIHwgYFJlcGxhY2UgbGlzdCAtPiBgUmVwbGFjZSAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYEV4dGVuZCBsaXN0IC0+IGBFeHRlbmQgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBPdmVycmlkZSBsaXN0IC0+IGBPdmVycmlkZSAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYFJlcGxhY2VfcmF3IF8gYXMgcmVwbGFjZSAtPiByZXBsYWNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudiAoKSA9XG4gICAgICAgIGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnY6KE9wdGlvbi5tYXAgZW52IH5mOmNvbnZlcnRfZW52KSAoKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZV9wcm9jZXNzX2VudiA/d29ya2luZ19kaXIgP3Byb2dfc2VhcmNoX3BhdGggP2FyZ3YwIH5wcm9nIH5hcmdzIH5lbnYgKCkgPVxuICAgICAgICBjcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICA/d29ya2luZ19kaXJcbiAgICAgICAgICA/cHJvZ19zZWFyY2hfcGF0aFxuICAgICAgICAgID9hcmd2MFxuICAgICAgICAgIH5wcm9nXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+ZW52Oihjb252ZXJ0X2VudiBlbnYpXG4gICAgICAgICAgKClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG9wZW4gRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXJcblxuICAoKiBDbGVhciB0aGUgc2V0dGluZyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhc3NvY2lhdGVkIHdpdGggY29tbWFuZC1saW5lXG4gICAgIGNvbXBsZXRpb24gYW5kIHJlY3Vyc2l2ZSBoZWxwIHNvIHRoYXQgc3VicHJvY2Vzc2VzIGRvbid0IHNlZSB0aGVtLlxuXG4gICAgIFVzZSBbdW5zYWZlX2dldGVudl0gc28gc2V0dWlkLXJvb3QgcHJvZ3JhbXMgY2FuIHN0aWxsIHJlYWQgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgICBUaGVyZSBpcyBubyBzZWN1cml0eSByaXNrIGhlcmUgYmVjYXVzZSB0aGUgdmFsdWVzIGFyZSBvbmx5IHVzZWQgYXMgdHJpZ2dlcnMgdG8gZHVtcFxuICAgICBvdXQgY29tbWFuZCBpbmZvcm1hdGlvbi4gKilcbiAgbGV0IGdldGVudl9hbmRfY2xlYXIgdmFyID1cbiAgICBsZXQgdmFsdWUgPSBVbml4LnVuc2FmZV9nZXRlbnYgdmFyIGluXG4gICAgaWYgT3B0aW9uLmlzX3NvbWUgdmFsdWUgdGhlbiBVbml4LnVuc2V0ZW52IHZhcjtcbiAgICB2YWx1ZVxuICA7O1xuXG4gIGxldCBtYXliZV9jb21wX2N3b3JkICgpID0gZ2V0ZW52X2FuZF9jbGVhciBjb21wX2N3b3JkIHw+IE9wdGlvbi5tYXAgfmY6SW50Lm9mX3N0cmluZ1xuXG4gIGxldCBzZXRfY29tcF9jd29yZCBuZXdfdmFsdWUgPVxuICAgIGxldCBuZXdfdmFsdWUgPSBJbnQudG9fc3RyaW5nIG5ld192YWx1ZSBpblxuICAgIFVuaXgucHV0ZW52IH5rZXk6Y29tcF9jd29yZCB+ZGF0YTpuZXdfdmFsdWVcbiAgOztcblxuICBtb2R1bGUgRXhlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhlY1xuXG4gICAgbGV0IGV4ZWNfd2l0aF9hcmdzIHQgfmFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkID1cbiAgICAgIGxldCBwcm9nID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGUgaW5cbiAgICAgIGxldCBhcmdzID0gdC5jaGlsZF9zdWJjb21tYW5kIEAgYXJncyBpblxuICAgICAgbGV0IGVudiA9IHQuZW52IGluXG4gICAgICBPcHRpb24uaXRlciBtYXliZV9uZXdfY29tcF9jd29yZCB+ZjooZnVuIG4gLT5cbiAgICAgICAgKCogVGhlIGxvZ2ljIGZvciB0cmFja2luZyBbbWF5YmVfbmV3X2NvbXBfY3dvcmRdIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgd2hldGhlclxuICAgICAgICAgICB0aGlzIGV4ZWMgc3BlY2lmaWVzIGEgY2hpbGQgc3ViY29tbWFuZC4gSWYgaXQgZG9lcywgQ09NUF9DV09SRCBuZWVkcyB0byBiZSBzZXRcbiAgICAgICAgICAgaGlnaGVyIHRvIGFjY291bnQgZm9yIHRoZSBhcmd1bWVudHMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaGlsZCBzdWJjb21tYW5kLiAqKVxuICAgICAgICBzZXRfY29tcF9jd29yZCAobiArIExpc3QubGVuZ3RoIHQuY2hpbGRfc3ViY29tbWFuZCkpO1xuICAgICAgbmV2ZXJfcmV0dXJuc1xuICAgICAgICAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5Vbml4LmV4ZWMgP2VudiB+cHJvZyB+YXJndjoocHJvZyA6OiBhcmdzKSAoKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYXBlLlNleHBhYmxlXG5cbiAgICBsZXQgcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciAocHJvY2Vzc19pbmZvIDogVW5peC5Qcm9jZXNzX2luZm8udCkgPVxuICAgICAgKCogV2UgbmVlZCB0byByZWFkIGVhY2ggb2Ygc3Rkb3V0IGFuZCBzdGRlcnIgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gYXZvaWQgZGVhZGxvY2tzXG4gICAgICAgICBpZiB0aGUgY2hpbGQgcHJvY2VzcyBkZWNpZGVzIHRvIHdhaXQgZm9yIGEgcmVhZCBvbiBvbmUgYmVmb3JlIGNsb3NpbmcgdGhlIG90aGVyLlxuICAgICAgICAgQnVmZmVyaW5nIG1heSBoaWRlIHRoaXMgcHJvYmxlbSB1bnRpbCBvdXRwdXQgaXMgXCJzdWZmaWNpZW50bHkgbGFyZ2VcIi4gKilcbiAgICAgIGxldCBzdGFydF9yZWFkaW5nIGRlc2NyIGluZm8gPVxuICAgICAgICBsZXQgb3V0cHV0ID0gU2V0X29uY2UuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICAgIFRocmVhZC5jcmVhdGVcbiAgICAgICAgICAgIH5vbl91bmNhdWdodF9leG46YFByaW50X3RvX3N0ZGVyclxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgZGVzY3IgfD4gVW5peC5pbl9jaGFubmVsX29mX2Rlc2NyIHw+IEluX2NoYW5uZWwuaW5wdXRfYWxsKVxuICAgICAgICAgICAgICAgfD4gU2V0X29uY2Uuc2V0X2V4biBvdXRwdXQgWyVoZXJlXSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIHN0YWdlIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJlYWQuam9pbiB0aHJlYWQ7XG4gICAgICAgICAgVW5peC5jbG9zZSBkZXNjcjtcbiAgICAgICAgICBtYXRjaCBTZXRfb25jZS5nZXQgb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUcgZmFpbGVkIHRvIHJlYWRcIiAoaW5mbyA6IEluZm8udCldXG4gICAgICAgICAgfCBTb21lIChPayBvdXRwdXQpIC0+IG91dHB1dFxuICAgICAgICAgIHwgU29tZSAoRXJyb3IgZXhuKSAtPiByYWlzZSBleG4pXG4gICAgICBpblxuICAgICAgKCogV2UgbWlnaHQgaGFuZyBmb3JldmVyIHRyeWluZyB0byBqb2luIHRoZSByZWFkaW5nIHRocmVhZHMgaWYgdGhlIGNoaWxkIHByb2Nlc3Mga2VlcHNcbiAgICAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3Blbi4gTm90IGhhbmRsaW5nIHRoaXMgYmVjYXVzZSBJIHRoaW5rIHdlJ3ZlIG5ldmVyIHNlZW4gaXRcbiAgICAgICAgIGluIHRoZSB3aWxkIGRlc3BpdGUgcnVubmluZyB2dWxuZXJhYmxlIGNvZGUgZm9yIHllYXJzLiAqKVxuICAgICAgKCogV2UgaGF2ZSB0byBzdGFydCBib3RoIHRocmVhZHMgYmVmb3JlIGpvaW5pbmcgYW55IG9mIHRoZW0uICopXG4gICAgICBsZXQgZmluaXNoX3N0ZG91dCA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZG91dCAoSW5mby5vZl9zdHJpbmcgXCJzdGRvdXRcIikgaW5cbiAgICAgIGxldCBmaW5pc2hfc3RkZXJyID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3RkZXJyIChJbmZvLm9mX3N0cmluZyBcInN0ZGVyclwiKSBpblxuICAgICAgdW5zdGFnZSBmaW5pc2hfc3Rkb3V0ICgpLCB1bnN0YWdlIGZpbmlzaF9zdGRlcnIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQgPVxuICAgICAgbGV0IHByb2Nlc3NfaW5mbyA9XG4gICAgICAgIFVuaXguY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgKClcbiAgICAgICAgICB+cHJvZzooYWJzX3BhdGggfmRpcjp3b3JraW5nX2RpciBwYXRoX3RvX2V4ZSlcbiAgICAgICAgICB+YXJnczpjaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgfmVudjpcbiAgICAgICAgICAgIChsZXQgaGVscF9zZXhwID0gc3VwcG9ydGVkX3ZlcnNpb25zIHw+IEludC5TZXQuc2V4cF9vZl90IHw+IFNleHAudG9fc3RyaW5nIGluXG4gICAgICAgICAgICAgYEV4dGVuZCBbIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCwgaGVscF9zZXhwIF0pXG4gICAgICBpblxuICAgICAgVW5peC5jbG9zZSBwcm9jZXNzX2luZm8uc3RkaW47XG4gICAgICBsZXQgc3Rkb3V0LCBzdGRlcnIgPSByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIHByb2Nlc3NfaW5mbyBpblxuICAgICAgaWdub3JlIChVbml4LndhaXQgKGBQaWQgcHJvY2Vzc19pbmZvLnBpZCkgOiBQaWQudCAqIFVuaXguRXhpdF9vcl9zaWduYWwudCk7XG4gICAgICAoKiBOb3cgd2UndmUga2lsbGVkIGFsbCB0aGUgcHJvY2Vzc2VzIGFuZCB0aHJlYWRzIHdlIG1hZGUuICopXG4gICAgICBtYXRjaCBzdGRvdXQgfD4gU2V4cC5vZl9zdHJpbmcgfD4gVmVyc2lvbmVkLnRfb2Zfc2V4cCB8PiBvZl92ZXJzaW9uZWQgd2l0aFxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiY2Fubm90IHBhcnNlIGNvbW1hbmQgc2hhcGVcIlxuICAgICAgICAgICAgICB+XzooZXhuIDogZXhuKVxuICAgICAgICAgICAgICAoc3Rkb3V0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAoc3RkZXJyIDogc3RyaW5nKV1cbiAgICAgIHwgdCAtPiB0XG4gICAgOztcblxuICAgIGxldCByZWMgZmluZCAodCA6IHQpIH5wYXRoX3RvX3N1YmNvbW1hbmQgPVxuICAgICAgbWF0Y2ggcGF0aF90b19zdWJjb21tYW5kIHdpdGhcbiAgICAgIHwgW10gLT4gdFxuICAgICAgfCBzdWIgOjogc3VicyAtPlxuICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICB8IEJhc2UgXyAtPiBmYWlsd2l0aGYgXCJ1bmV4cGVjdGVkIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgIHwgTGF6eSB0aHVuayAtPiBmaW5kIChMYXp5LmZvcmNlIHRodW5rKSB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICAgICB8IEV4ZWMgeyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IGNoaWxkX3N1YmNvbW1hbmQ7IF8gfSAtPlxuICAgICAgICAgICBmaW5kXG4gICAgICAgICAgICAgKG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQpXG4gICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZDooc3ViIDo6IChzdWJzIEAgY2hpbGRfc3ViY29tbWFuZCkpXG4gICAgICAgICB8IEdyb3VwIGcgLT5cbiAgICAgICAgICAgKG1hdGNoIExpc3QuQXNzb2MuZmluZCAoTGF6eS5mb3JjZSBnLnN1YmNvbW1hbmRzKSB+ZXF1YWw6U3RyaW5nLmVxdWFsIHN1YiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwidW5rbm93biBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICAgICB8IFNvbWUgdCAtPiBmaW5kIHQgfnBhdGhfdG9fc3ViY29tbWFuZDpzdWJzKSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgcHJveHlfb2ZfZXhlIH53b3JraW5nX2RpciBwYXRoX3RvX2V4ZSBjaGlsZF9zdWJjb21tYW5kID1cbiAgICBTZXhwYWJsZS5vZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgfD4gcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZDpbXVxuICA7O1xuXG4gIGxldCByZWMgc2hhcGVfb2ZfcHJveHkgcHJveHkgOiBTaGFwZS50ID0gc2hhcGVfb2ZfcHJveHlfa2luZCBwcm94eS5Qcm94eS5raW5kXG5cbiAgYW5kIHNoYXBlX29mX2V4ZSAoKSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyID1cbiAgICBzaGFwZV9vZl9wcm94eSAocHJveHlfb2ZfZXhlIH53b3JraW5nX2RpciBwYXRoX3RvX2V4ZSBjaGlsZF9zdWJjb21tYW5kKVxuXG4gIGFuZCBzaGFwZV9vZl9wcm94eV9raW5kIGtpbmQgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgQmFzZSBiIC0+IEJhc2ljIGJcbiAgICB8IExhenkgbCAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzaGFwZV9vZl9wcm94eV9raW5kIGwpXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBHcm91cFxuICAgICAgICB7IGcgd2l0aFxuICAgICAgICAgIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgZy5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c2hhcGVfb2ZfcHJveHkpXG4gICAgICAgIH1cbiAgICB8IEV4ZWMgKHsgY2hpbGRfc3ViY29tbWFuZDsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBfIH0gYXMgZSkgLT5cbiAgICAgIEV4ZWMgKGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICA7O1xuXG4gIGxldCByZWMgc2hhcGUgdCA6IFNoYXBlLnQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSBiIC0+IEJhc2ljIChCYXNlLnNoYXBlIGIpXG4gICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzaGFwZSBnKVxuICAgIHwgRXhlYyAoeyBFeGVjLmNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChFeGVjLnNoYXBlIGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICAgIHwgTGF6eSB0aHVuayAtPiBzaGFwZSAoTGF6eS5mb3JjZSB0aHVuaylcbiAgOztcblxuICBsZXQgZ2F0aGVyX2hlbHAgfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzIHNoYXBlID1cbiAgICBsZXQgcmVjIGxvb3AgcGF0aCBhY2Mgc2hhcGUgPVxuICAgICAgbGV0IHN0cmluZ19vZl9wYXRoID0gaWYgZXhwYW5kX2RvdHMgdGhlbiBQYXRoLnRvX3N0cmluZyBlbHNlIFBhdGgudG9fc3RyaW5nX2RvdHMgaW5cbiAgICAgIGxldCBnYXRoZXJfZ3JvdXAgcGF0aCBhY2Mgc3ViY29tbWFuZHMgPVxuICAgICAgICBsZXQgZmlsdGVyZWRfc3ViY29tbWFuZHMgPVxuICAgICAgICAgICgqIE9ubHkgc2hvdyB0aGUgW2hlbHBdIHN1YmNvbW1hbmQgYXQgdG9wLWxldmVsLiAqKVxuICAgICAgICAgIGlmIFBhdGguaXNfZW1wdHkgcGF0aFxuICAgICAgICAgIHRoZW4gc3ViY29tbWFuZHNcbiAgICAgICAgICBlbHNlIExpc3QuQXNzb2MucmVtb3ZlIH5lcXVhbDpTdHJpbmcuKCA9ICkgc3ViY29tbWFuZHMgXCJoZWxwXCJcbiAgICAgICAgaW5cbiAgICAgICAgZmlsdGVyZWRfc3ViY29tbWFuZHNcbiAgICAgICAgfD4gTGlzdC5zdGFibGVfc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBoZWxwX3NjcmVlbl9jb21wYXJlIChmc3QgYSkgKGZzdCBiKSlcbiAgICAgICAgfD4gTGlzdC5mb2xkXG4gICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgfmY6KGZ1biAoYWNjIDogU2hhcGUuRmxhZ19pbmZvLnQgRnF1ZXVlLnQpIChzdWJjb21tYW5kLCBzaGFwZSkgLT5cbiAgICAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZCBpblxuICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIGluXG4gICAgICAgICAgICAgICBsZXQgZG9jID0gU2hhcGUuZ2V0X3N1bW1hcnkgc2hhcGUgaW5cbiAgICAgICAgICAgICAgIGxldCBhY2MgPSBGcXVldWUuZW5xdWV1ZSBhY2MgeyBuYW1lOyBkb2M7IGFsaWFzZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgICBpZiByZWN1cnNpdmUgdGhlbiBsb29wIHBhdGggYWNjIHNoYXBlIGVsc2UgYWNjKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICAgIHwgRXhlYyAoXywgc2hhcGUpIC0+XG4gICAgICAgICgqIElmIHRoZSBleGVjdXRhYmxlIGJlaW5nIGNhbGxlZCBkb2Vzbid0IHVzZSBbQ29yZS5Db21tYW5kXSwgdGhlbiBzZXhwIGV4dHJhY3Rpb25cbiAgICAgICAgICAgd2lsbCBmYWlsLiAqKVxuICAgICAgICAodHJ5IGxvb3AgcGF0aCBhY2MgKHNoYXBlICgpKSB3aXRoXG4gICAgICAgICB8IF8gLT4gYWNjKVxuICAgICAgfCBHcm91cCBnIC0+IGdhdGhlcl9ncm91cCBwYXRoIGFjYyAoTGF6eS5mb3JjZSBnLnN1YmNvbW1hbmRzKVxuICAgICAgfCBCYXNpYyBiIC0+XG4gICAgICAgIGlmIGZsYWdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBiLmZsYWdzXG4gICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBmbXQgLT4gU3RyaW5nLiggPD4gKSBmbXQubmFtZSBcIlstaGVscF1cIilcbiAgICAgICAgICB8PiBMaXN0LmZvbGQgfmluaXQ6YWNjIH5mOihmdW4gYWNjIGZtdCAtPlxuICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOmZtdC5uYW1lIGluXG4gICAgICAgICAgICBsZXQgZm10ID0geyBmbXQgd2l0aCBuYW1lID0gc3RyaW5nX29mX3BhdGggcGF0aCB9IGluXG4gICAgICAgICAgICBGcXVldWUuZW5xdWV1ZSBhY2MgZm10KVxuICAgICAgICBlbHNlIGFjY1xuICAgICAgfCBMYXp5IHRodW5rIC0+IGxvb3AgcGF0aCBhY2MgKExhenkuZm9yY2UgdGh1bmspXG4gICAgaW5cbiAgICBsb29wIFBhdGguZW1wdHkgRnF1ZXVlLmVtcHR5IHNoYXBlIHw+IEZxdWV1ZS50b19saXN0XG4gIDs7XG5cbiAgbGV0IGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IH5mbGFncyB+cGF0aCB+c3VtbWFyeSB+cmVhZG1lIH5mb3JtYXRfbGlzdCA9XG4gICAgdW5wYXJhZ3JhcGhzXG4gICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICBbIFNvbWUgc3VtbWFyeVxuICAgICAgICAgOyBTb21lIChTdHJpbmcuY29uY2F0IFsgXCIgIFwiOyBQYXRoLnRvX3N0cmluZyBwYXRoOyBcIiBTVUJDT01NQU5EXCIgXSlcbiAgICAgICAgIDsgcmVhZG1lXG4gICAgICAgICA7IFNvbWUgKGlmIGZsYWdzIHRoZW4gXCI9PT0gc3ViY29tbWFuZHMgYW5kIGZsYWdzID09PVwiIGVsc2UgXCI9PT0gc3ViY29tbWFuZHMgPT09XCIpXG4gICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBmb3JtYXRfbGlzdClcbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSA9XG4gICAgbGV0IGZvcm1hdF9saXN0ID0gZ2F0aGVyX2hlbHAgfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlIHNoYXBlIGluXG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgQmFzaWMgYiAtPlxuICAgICAgbGV0IHVzYWdlID0gU2hhcGUuQmFzZV9pbmZvLmdldF91c2FnZSBiIGluXG4gICAgICB1bnBhcmFncmFwaHNcbiAgICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgICBbIFNvbWUgYi5zdW1tYXJ5XG4gICAgICAgICAgIDsgU29tZSAoXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIFwiIF4gdXNhZ2UpXG4gICAgICAgICAgIDsgYi5yZWFkbWVcbiAgICAgICAgICAgOyBTb21lIFwiPT09IGZsYWdzID09PVwiXG4gICAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGIuZmxhZ3MpXG4gICAgICAgICAgIF0pXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTpnLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTpnLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBFeGVjIChlLCBfKSAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6ZS5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6ZS5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgTGF6eSB0aHVuayAtPiBoZWxwX2Zvcl9zaGFwZSAoTGF6eS5mb3JjZSB0aHVuaykgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmVcbiAgOztcblxuICBsZXQgaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUgPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcImV4cGxhaW4gYSBnaXZlbiBzdWJjb21tYW5kIChwZXJoYXBzIHJlY3Vyc2l2ZWx5KVwiXG4gICAgICBCYXNlLlNwZWMuKFxuICAgICAgICBlbXB0eVxuICAgICAgICArPiBmbGFnIFwiLXJlY3Vyc2l2ZVwiIG5vX2FyZyB+ZG9jOlwiIHNob3cgc3ViY29tbWFuZHMgb2Ygc3ViY29tbWFuZHMsIGV0Yy5cIlxuICAgICAgICArPiBmbGFnIFwiLWZsYWdzXCIgbm9fYXJnIH5kb2M6XCIgc2hvdyBmbGFncyBhcyB3ZWxsIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgKz4gZmxhZyBcIi1leHBhbmQtZG90c1wiIG5vX2FyZyB+ZG9jOlwiIGV4cGFuZCBzdWJjb21tYW5kcyBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgICs+IHBhdGhcbiAgICAgICAgKz4gZW52XG4gICAgICAgICs+IGFub24gKG1heWJlIChcIlNVQkNPTU1BTkRcIiAlOiBzdHJpbmcpKSlcbiAgICAgIChmdW4gcmVjdXJzaXZlIGZsYWdzIGV4cGFuZF9kb3RzIHBhdGggKGVudiA6IEVudi50KSBjbWRfb3B0ICgpIC0+XG4gICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgIG1hdGNoIEVudi5maW5kIGVudiBzdWJzX2tleSB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdWJzIC0+IHN1YnNcbiAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAoKiBtYWludGFpbmVkIGJ5IFtkaXNwYXRjaF0gKilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5wb3BfaGVscCBwYXRoIGluXG4gICAgICAgICAgIE9wdGlvbi5mb2xkIGNtZF9vcHQgfmluaXQ6cGF0aCB+ZjooZnVuIHBhdGggc3ViY29tbWFuZCAtPlxuICAgICAgICAgICAgIFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHBhdGgsIHNoYXBlID1cbiAgICAgICAgICAgbWF0Y2ggY21kX29wdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHN1YnMgfmY6c2hhcGUgfD4gTGF6eS5mcm9tX3ZhbCBpblxuICAgICAgICAgICAgIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIGluXG4gICAgICAgICAgICAgcGF0aCwgU2hhcGUuR3JvdXAgeyByZWFkbWU7IHN1bW1hcnk7IHN1YmNvbW1hbmRzIH1cbiAgICAgICAgICAgfCBTb21lIGNtZCAtPlxuICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgIGxvb2t1cF9leHBhbmQgKExpc3QuQXNzb2MubWFwIHN1YnMgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpKSBjbWQgU3ViY29tbWFuZFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgICAgXCJ1bmtub3duIHN1YmNvbW1hbmQgJXMgZm9yIGNvbW1hbmQgJXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgKFBhdGgudG9fc3RyaW5nIHBhdGgpXG4gICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICB8IE9rIChwb3NzaWJseV9leHBhbmRlZF9uYW1lLCB0KSAtPlxuICAgICAgICAgICAgICAgICgqIEZpeCB0aGUgdW5leHBhbmRlZCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5yZXBsYWNlX2ZpcnN0IH5mcm9tOmNtZCB+dG9fOnBvc3NpYmx5X2V4cGFuZGVkX25hbWUgcGF0aCBpblxuICAgICAgICAgICAgICAgIHBhdGgsIHNoYXBlIHQpXG4gICAgICAgICBpblxuICAgICAgICAgcHJpbnRfZW5kbGluZSAoaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMpKVxuICA7O1xuXG4gICgqIFRoaXMgc2NyaXB0IHdvcmtzIGluIGJvdGggYmFzaCAodmlhIHJlYWRhcnJheSkgYW5kIHpzaCAodmlhIHJlYWQgLUEpLiAgSWYgeW91IGNoYW5nZVxuICAgICBpdCwgcGxlYXNlIHRlc3QgaW4gYm90aCBiYXNoIGFuZCB6c2guICBJdCBkb2VzIG5vdCB3b3JrIHRjc2ggKGRpZmZlcmVudCBmdW5jdGlvblxuICAgICBzeW50YXgpLiAqKVxuICBsZXQgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCkgPVxuICAgIGxldCBmbmFtZSA9IHNwcmludGYgXCJfanNhdXRvY29tXyVzXCIgKFBpZC50b19zdHJpbmcgKFVuaXguZ2V0cGlkICgpKSkgaW5cbiAgICBsZXQgYXJndl8wID0gQ2FtbC5TeXMuYXJndi4oMCkgaW5cbiAgICBwcmludGZcbiAgICAgIFwiZnVuY3Rpb24gJXMge1xcblxcXG4gICAgICBcXCAgZXhwb3J0IENPTVBfQ1dPUkRcXG5cXFxuICAgICAgXFwgIENPTVBfV09SRFNbMF09JXNcXG5cXFxuICAgICAgXFwgIGlmIHR5cGUgcmVhZGFycmF5ID4gL2Rldi9udWxsXFxuXFxcbiAgICAgIFxcICB0aGVuIHJlYWRhcnJheSAtdCBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGVsc2UgSUZTPVxcXCJcXG5cXFxuICAgICAgIFxcXCIgcmVhZCAtZCBcXFwiXFxcIiAtQSBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGZpXFxuXFxcbiAgICAgICB9XFxuXFxcbiAgICAgICBjb21wbGV0ZSAtRiAlcyAlc1xcblxcXG4gICAgICAgJSFcIlxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICA7O1xuXG4gIGxldCBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgSW50LlNldC5pbnRlciBTZXhwYWJsZS5zdXBwb3J0ZWRfdmVyc2lvbnMgc3VwcG9ydGVkX3ZlcnNpb25zXG4gICAgfD4gSW50LlNldC5tYXhfZWx0XG4gICAgfD4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiQ291bGRuJ3QgY2hvb3NlIGEgc3VwcG9ydGVkIGhlbHAgb3V0cHV0IHZlcnNpb24gZm9yIENvbW1hbmQuZXhlYyBmcm9tIHRoZSBnaXZlbiBcXFxuICAgICAgICAgc3VwcG9ydGVkIHZlcnNpb25zLlwiXG4gICAgICAgIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9uc1xuICAgICAgICBJbnQuU2V0LnNleHBfb2ZfdFxuICAgIHwgU29tZSB2ZXJzaW9uX3RvX3VzZSAtPlxuICAgICAgc2V4cGFibGVfc2hhcGUgdFxuICAgICAgfD4gU2V4cGFibGUuZmluZCB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICB8PiBTZXhwYWJsZS50b192ZXJzaW9uZWQgfnZlcnNpb25fdG9fdXNlXG4gICAgICB8PiBTZXhwYWJsZS5WZXJzaW9uZWQuc2V4cF9vZl90XG4gICAgICB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgfD4gcHJpbnRfc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2ID1cbiAgICBtYXRjaCBhcmd2IHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibWlzc2luZyBleGVjdXRhYmxlIG5hbWVcIlxuICAgIHwgY21kIDo6IGFyZ3MgLT5cbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCkgfmY6KGZ1biB2ZXJzaW9uIC0+XG4gICAgICAgIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPSBTZXhwLm9mX3N0cmluZyB2ZXJzaW9uIHw+IEludC5TZXQudF9vZl9zZXhwIGluXG4gICAgICAgIGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kOmFyZ3M7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBPcHRpb24uaXRlciAoZ2V0ZW52X2FuZF9jbGVhciBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSCkgfmY6KGZ1biBfIC0+XG4gICAgICAgIGR1bXBfYXV0b2NvbXBsZXRlX2Z1bmN0aW9uICgpO1xuICAgICAgICBleGl0IDApO1xuICAgICAgY21kLCBhcmdzXG4gIDs7XG5cbiAgbGV0IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzID1cbiAgICBsZXQgbWF5YmVfY29tcF9jd29yZCA9IG1heWJlX2NvbXBfY3dvcmQgKCkgaW5cbiAgICBsZXQgYXJncyA9XG4gICAgICBtYXRjaCBtYXliZV9jb21wX2N3b3JkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBDbWRsaW5lLm9mX2xpc3QgYXJnc1xuICAgICAgfCBTb21lIGNvbXBfY3dvcmQgLT5cbiAgICAgICAgbGV0IGFyZ3MgPSBMaXN0LnRha2UgKGFyZ3MgQCBbIFwiXCIgXSkgY29tcF9jd29yZCBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpDbWRsaW5lLk5pbCB+ZjooZnVuIGFyZyBhcmdzIC0+XG4gICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgfCBDbWRsaW5lLk5pbCAtPiBDbWRsaW5lLkNvbXBsZXRlIGFyZ1xuICAgICAgICAgIHwgXyAtPiBDbWRsaW5lLkNvbnMgKGFyZywgYXJncykpXG4gICAgaW5cbiAgICBQYXRoLmNyZWF0ZSB+cGF0aF90b19leGU6Y21kLCBhcmdzLCBtYXliZV9jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGRfaGVscF9zdWJjb21tYW5kcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIF8gYXMgdCAtPiB0XG4gICAgfCBFeGVjIF8gYXMgdCAtPiB0XG4gICAgfCBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfSAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIChMaXN0LkFzc29jLm1hcCBzdWJjb21tYW5kcyB+ZjphZGRfaGVscF9zdWJjb21tYW5kcylcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJoZWxwXCJcbiAgICAgICAgICAgIChoZWxwX3N1YmNvbW1hbmQgfnN1bW1hcnkgfnJlYWRtZSkpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkX2hlbHBfc3ViY29tbWFuZHMgKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCA9XG4gICAgT3B0aW9uLnZhbHVlX21hcCBleHRlbmQgfmRlZmF1bHQ6YXJncyB+ZjooZnVuIGYgLT5cbiAgICAgIENtZGxpbmUuZXh0ZW5kIGFyZ3MgfmV4dGVuZDpmIH5wYXRoKVxuICA7O1xuXG4gIGxldCByZWMgZGlzcGF0Y2hcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgICAgfnBhdGhcbiAgICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgZGlzcGF0Y2hcbiAgICAgICAgdFxuICAgICAgICBlbnZcbiAgICAgICAgfmV4dGVuZFxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGFyZ3MgPSBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoIGluXG4gICAgICBsZXQgaGVscF90ZXh0ID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZSAoc2hhcGUgdCkgcGF0aCB+cmVjdXJzaXZlOmZhbHNlIH5mbGFnczp0cnVlIH5leHBhbmRfZG90czpmYWxzZSlcbiAgICAgIGluXG4gICAgICBCYXNlLnJ1blxuICAgICAgICBiYXNlXG4gICAgICAgIGVudlxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICB8IEV4ZWMgZXhlYyAtPlxuICAgICAgbGV0IGFyZ3MgPSBDbWRsaW5lLnRvX2xpc3QgKG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGgpIGluXG4gICAgICBFeGVjLmV4ZWNfd2l0aF9hcmdzIH5hcmdzIGV4ZWMgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgfCBHcm91cCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9IGFzIGdyb3VwKSAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgbGV0IGVudiA9IEVudi5zZXQgZW52IH5rZXk6c3Vic19rZXkgfmRhdGE6KExhenkuZm9yY2Ugc3VicykgaW5cbiAgICAgIGxldCBkaWVfc2hvd2luZ19oZWxwIG1zZyA9XG4gICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIlc1xcbiUhXCJcbiAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9KSlcbiAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgIGRpZSBcIiVzXCIgbXNnICgpKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgICBsZXQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBPcHRpb24ubWFwIH5mOkludC5wcmVkIG1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCBza2lwIHJlc3QgPSBwYXJzZV9ncm91cCByZXN0IH5tYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgcmVzb2x2ZSBzdWIgcmVzdCA9XG4gICAgICAgICAgbGV0IHN1YnMgPSBMaXN0LkFzc29jLm1hcCAoTGF6eS5mb3JjZSBzdWJzKSB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkgaW5cbiAgICAgICAgICBtYXRjaCBsb29rdXBfZXhwYW5kIHN1YnMgc3ViIFN1YmNvbW1hbmQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgbXNnIC0+IGRpZV9zaG93aW5nX2hlbHAgbXNnXG4gICAgICAgICAgfCBPayAoc3ViLCB0KSAtPlxuICAgICAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICAgIH5wYXRoOihQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOnN1YilcbiAgICAgICAgICAgICAgfmFyZ3M6cmVzdFxuICAgICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChhcmdzIDogQ21kbGluZS50KSB3aXRoXG4gICAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBkaWVfc2hvd2luZ19oZWxwXG4gICAgICAgICAgICAgICAoc3ByaW50ZiBcIm1pc3Npbmcgc3ViY29tbWFuZCBmb3IgY29tbWFuZCAlc1wiIChQYXRoLnRvX3N0cmluZyBwYXRoKSlcbiAgICAgICAgICAgfCBTb21lIGJvZHkgLT4gYm9keSB+cGF0aDooUGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aCkpXG4gICAgICAgIHwgQ29ucyAoc3ViLCByZXN0KSAtPlxuICAgICAgICAgICgqIE1hdGNoIGZvciBmbGFncyByZWNvZ25pemVkIHdoZW4gc3ViY29tbWFuZHMgYXJlIGV4cGVjdGVkIG5leHQgKilcbiAgICAgICAgICAobWF0Y2ggc3ViIHdpdGhcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBhdCB0aGUgdG9wIGxldmVsIGNvbW1hbmQgb25seSAqKVxuICAgICAgICAgICB8IChcIi12ZXJzaW9uXCIgfCBcIi0tdmVyc2lvblwiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjtcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCAoXCItYnVpbGQtaW5mb1wiIHwgXCItLWJ1aWxkLWluZm9cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgZXZlcnl3aGVyZSAqKVxuICAgICAgICAgICB8IFwiLWhlbHBcIiB8IFwiLS1oZWxwXCIgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOaWwgfCBDb21wbGV0ZSAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgZ3JvdXAgd2l0aCBzdWJjb21tYW5kcyA9IHN1YnMgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgICAgICAgIGV4aXQgMFxuICAgICAgICAgICAgICAgfCBDbWRsaW5lLkNvbnMgKGZpcnN0X29mX3Jlc3QsIHJlc3Rfb2ZfcmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgcmVzb2x2ZSBmaXJzdF9vZl9yZXN0IChDb25zIChzdWIsIHJlc3Rfb2ZfcmVzdCkpKVxuICAgICAgICAgICB8IChfIDogc3RyaW5nKSAtPiByZXNvbHZlIHN1YiByZXN0KVxuICAgICAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBMYXp5LmZvcmNlIHN1YnNcbiAgICAgICAgICAgIHw+IExpc3QubWFwIH5mOmZzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBuYW1lIC0+IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQpXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmVcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBjb21wbGV0ZV9zdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgICAgICAgIHNoYXBlIHQgfD4gU2hhcGUuZnVsbHlfZm9yY2VkIHw+IFNoYXBlLkZ1bGx5X2ZvcmNlZC5leHBhbmRlZF9zdWJjb21tYW5kc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKG1hdGNoIGYgfnBhdGg6KFBhdGgucGFydHMgcGF0aCkgfnBhcnQgc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZXhpdCAxXG4gICAgICAgICAgICAgIHwgU29tZSB0b19vdXRwdXQgLT5cbiAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgdG9fb3V0cHV0KTtcbiAgICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIExpc3QuaXRlciBzdWJzIH5mOnByaW50X2VuZGxpbmU7XG4gICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgaW5cbiAgICAgIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICA/dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICA/dmVyc2lvblxuICAgICAgICA/YnVpbGRfaW5mb1xuICAgICAgICA/KGFyZ3YgPSBBcnJheS50b19saXN0IENhbWwuU3lzLmFyZ3YpXG4gICAgICAgID9leHRlbmRcbiAgICAgICAgPyh3aGVuX3BhcnNpbmdfc3VjY2VlZHMgPSBGbi5pZClcbiAgICAgICAgP2NvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGJ1aWxkX2luZm8gPVxuICAgICAgbWF0Y2ggYnVpbGRfaW5mbyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBsYXp5IHZcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF9idWlsZF9pbmZvXG4gICAgaW5cbiAgICBsZXQgdmVyc2lvbiA9XG4gICAgICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uXG4gICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAoKiBbdmVyc2lvbl0gd2FzIHNwYWNlIGRlbGltaXRlZCBhdCBzb21lIHBvaW50IGFuZCBuZXdsaW5lIGRlbGltaXRlZFxuICAgICAgICAgICBhdCBhbm90aGVyLiAgV2UgYWx3YXlzIHByaW50IG9uZSAocmVwbywgcmV2aXNpb24pIHBhaXIgcGVyIGxpbmVcbiAgICAgICAgICAgYW5kIGVuc3VyZSBzb3J0ZWQgb3JkZXIgKilcbiAgICAgICAgbGF6eVxuICAgICAgICAgIChWZXJzaW9uX2luZm8ubm9ybWFsaXplX3ZlcnNpb25fbGluZXNcbiAgICAgICAgICAgICAoU3RyaW5nLnNwbGl0IHYgfm9uOicgJyB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KFN0cmluZy5zcGxpdCB+b246J1xcbicpKSlcbiAgICBpblxuICAgIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPlxuICAgICAgbGV0IHQgPSBWZXJzaW9uX2luZm8uYWRkIHQgfnZlcnNpb24gfmJ1aWxkX2luZm8gaW5cbiAgICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgICAgbGV0IGNtZCwgYXJncyA9IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2IGluXG4gICAgICBsZXQgcGF0aCwgYXJncywgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyBpblxuICAgICAgdHJ5XG4gICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgdFxuICAgICAgICAgIEVudi5lbXB0eVxuICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICB+cGF0aFxuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgd2l0aFxuICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPlxuICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJnc1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBwcmVycl9lbmRsaW5lIG1zZztcbiAgICAgICAgICBleGl0IDEpKVxuICA7O1xuXG4gIGxldCBkZXByZWNhdGVkX3J1biB0IH5jbWQgfmFyZ3MgfmlzX2hlbHAgfmlzX2hlbHBfcmVjIH5pc19oZWxwX3JlY19mbGFncyB+aXNfZXhwYW5kX2RvdHNcbiAgICA9XG4gICAgbGV0IHBhdGhfc3RyaW5ncyA9IFN0cmluZy5zcGxpdCBjbWQgfm9uOicgJyBpblxuICAgIGxldCBwYXRoID0gUGF0aC5vZl9wYXJ0cyBwYXRoX3N0cmluZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2V4cGFuZF9kb3RzIHRoZW4gXCItZXhwYW5kLWRvdHNcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscF9yZWNfZmxhZ3MgdGhlbiBcIi1mbGFnc1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlYyB0aGVuIFwiLXJcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscCB0aGVuIFwiLWhlbHBcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gQ21kbGluZS5vZl9saXN0IGFyZ3MgaW5cbiAgICBsZXQgdCA9IGFkZF9oZWxwX3N1YmNvbW1hbmRzIHQgaW5cbiAgICBkaXNwYXRjaFxuICAgICAgdFxuICAgICAgRW52LmVtcHR5XG4gICAgICB+cGF0aFxuICAgICAgfmFyZ3NcbiAgICAgIH5leHRlbmQ6Tm9uZVxuICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkOk5vbmVcbiAgICAgIH52ZXJzaW9uOlZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIH5idWlsZF9pbmZvOlZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOk5vbmVcbiAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHM6Rm4uaWRcbiAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kczpOb25lXG4gIDs7XG5lbmRcblxuKCogTk9URTogYWxsIHRoYXQgZm9sbG93cyBpcyBzaW1wbHkgbmFtZXNwYWNlIG1hbmFnZW1lbnQgYm9pbGVycGxhdGUuICBUaGlzIHdpbGwgZ28gYXdheVxuICAgb25jZSB3ZSByZS13b3JrIHRoZSBpbnRlcm5hbHMgb2YgQ29tbWFuZCB0byB1c2UgQXBwbGljYXRpdmUgZnJvbSB0aGUgZ3JvdW5kIHVwLiAqKVxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgKydhIHRcblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgaGVscCA6IHN0cmluZyBMYXp5LnQgdFxuICAgIHZhbCBwYXRoIDogc3RyaW5nIGxpc3QgdFxuICAgIHZhbCBhcmdzIDogc3RyaW5nIGxpc3QgdFxuXG4gICAgdmFsIGZsYWdcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgRmxhZy50XG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEFyZ190eXBlLnRcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiBkZWZhdWx0OidhXG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgYW5vbiA6ICdhIEFub25zLnQgLT4gJ2EgdFxuICAgIHZhbCBlc2NhcGVfYW5vbiA6IGZpbmFsX2Fub246J2EgQW5vbnMudCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuIDogc2lnXG4gICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICBlbmRcblxuICAgIHZhbCBjaG9vc2Vfb25lXG4gICAgICA6ICAnYSBvcHRpb24gdCBsaXN0XG4gICAgICAtPiBpZl9ub3RoaW5nX2Nob3NlbjooJ2EsICdiKSBJZl9ub3RoaW5nX2Nob3Nlbi50XG4gICAgICAtPiAnYiB0XG5cbiAgICB2YWwgYW5kX2FyZ19uYW1lcyA6ICdhIHQgLT4gKCdhICogc3RyaW5nIGxpc3QpIHRcbiAgICB2YWwgYW5kX2FyZ19uYW1lIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcpIHRcbiAgICB2YWwgYXJnX25hbWVzIDogJ2EgdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNwZWMucGFyYW1cblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IFNwZWMuY29uc3RcbiAgICAgICAgbGV0IGFwcGx5ID0gU3BlYy5hcHBseVxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBTcGVjLm1hcFxuICAgICAgZW5kKVxuICBlbmRcblxuICBpbmNsdWRlIEFcblxuICBsZXQgaGVscCA9IFNwZWMuaGVscFxuICBsZXQgcGF0aCA9IFNwZWMucGF0aFxuICBsZXQgYXJncyA9IFNwZWMuYXJnc1xuICBsZXQgZmxhZyA9IFNwZWMuZmxhZ1xuICBsZXQgYW5vbiA9IFNwZWMuYW5vblxuICBsZXQgY2hvb3NlX29uZSA9IFNwZWMuY2hvb3NlX29uZVxuICBsZXQgYXJnX25hbWVzID0gU3BlYy5hcmdfbmFtZXNcbiAgbGV0IGFuZF9hcmdfbmFtZXMgPSBTcGVjLmFuZF9hcmdfbmFtZXNcbiAgbGV0IGFuZF9hcmdfbmFtZSA9IFNwZWMuYW5kX2FyZ19uYW1lXG4gIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2MgPSBTcGVjLmZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuXG4gIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IFNwZWMuSWZfbm90aGluZ19jaG9zZW5cbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgIG9wZW4gRmxhZ1xuXG4gICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgbGV0IG9uZV9vcl9tb3JlID0gb25lX29yX21vcmVcbiAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuICBlbmRcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgIG9wZW4gQW5vbnNcblxuICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgbGV0IHQyID0gdDJcbiAgICBsZXQgdDMgPSB0M1xuICAgIGxldCB0NCA9IHQ0XG4gIGVuZFxuXG4gIGxldCBlc2NhcGVfYW5vbiA9IFNwZWMuZXNjYXBlX2Fub25cbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcmFtXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcmFtXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gUGFyYW1cbiAgZW5kXG5lbmRcblxudHlwZSAncmVzdWx0IGJhc2ljX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZyAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZykgLT4gKHVuaXQgLT4gJ3Jlc3VsdCkgUGFyYW0udCAtPiB0XG5cbmxldCBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHBhcmFtID1cbiAgbGV0IHNwZWMgPSBTcGVjLm9mX3BhcmFtcyBAQCBQYXJhbS5tYXAgcGFyYW0gfmY6KGZ1biBydW4gKCkgKCkgLT4gcnVuICgpKSBpblxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgc3BlYyAoKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGFic19wYXRoID0gYWJzX3BhdGhcbiAgbGV0IHdvcmRfd3JhcCA9IFNoYXBlLlByaXZhdGUud29yZF93cmFwXG5cbiAgbW9kdWxlIEFub25zID0gQW5vbnNcbiAgbW9kdWxlIENtZGxpbmUgPSBDbWRsaW5lXG4gIG1vZHVsZSBGb3JfdW5peCA9IEZvcl91bml4XG4gIG1vZHVsZSBQYXRoID0gUGF0aFxuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBTcGVjXG5cbiAgICBsZXQgdG9fc3RyaW5nX2Zvcl9jaG9vc2Vfb25lIHBhcmFtID1cbiAgICAgIENob29zZV9vbmUuQ2hvaWNlX25hbWUuKGNyZWF0ZV9leG4gcGFyYW0gfD4gdG9fc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBydW4gPSBgVXNlX0NvbW1hbmRfdW5peFxubGV0IHNoYXBlID0gYFVzZV9Db21tYW5kX3VuaXhcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RyaW5nX2lkX2ludGZcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICAgICAgICBsZXQgY2hlY2tfZm9yX3doaXRlc3BhY2UgPVxuICAgICAgICAgIGxldCBpbnZhbGlkIHMgcmVhc29uID1cbiAgICAgICAgICAgIEVycm9yIChzcHJpbnRmIFwiJyVzJyBpcyBub3QgYSB2YWxpZCAlcyBiZWNhdXNlICVzXCIgcyBNLm1vZHVsZV9uYW1lIHJlYXNvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBzIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICBpZiBJbnQuKCA9ICkgbGVuIDBcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaXMgZW1wdHlcIlxuICAgICAgICAgICAgZWxzZSBpZiBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bMF0gfHwgQ2hhci5pc193aGl0ZXNwYWNlIHMuW2xlbiAtIDFdXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGhhcyB3aGl0ZXNwYWNlIG9uIHRoZSBlZGdlXCJcbiAgICAgICAgICAgIGVsc2UgT2sgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdmFsaWRhdGUgcyA9IFJlc3VsdC5tYXBfZXJyb3IgKE0udmFsaWRhdGUgcykgfmY6RXJyb3IudG9fc3RyaW5nX21hY2hcblxuICAgICAgICBsZXQgY2hlY2sgcyA9XG4gICAgICAgICAgaWYgTS5pbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvblxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggY2hlY2tfZm9yX3doaXRlc3BhY2UgcyB3aXRoXG4gICAgICAgICAgICB8IE9rICgpIC0+IHZhbGlkYXRlIHNcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgZXJyb3IpXG4gICAgICAgICAgZWxzZSB2YWxpZGF0ZSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IEZuLmlkXG4gICAgICAgIGxldCBwcCA9IFN0cmluZy5wcFxuXG4gICAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gaW52YWxpZF9hcmcgZXJyXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5TdGFibGUuVjEudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwXG4gICAgICAgIDs7XG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChTdHJpbmcpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0cmluZ1xuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUX3dpdGhfY29tcGFyYXRvciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVF93aXRoX2NvbXBhcmF0b3JcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZV9sYXRlc3QgPSBTdGFibGUuVjFcbiAgaW5jbHVkZSBTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3IpXG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3RyaW5nLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFN0cmluZy5nZW5fbm9uZW1wdHknIENoYXIuZ2VuX3ByaW50XG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIH5mOihmdW4gc3RyaW5nIC0+IGNoZWNrIHN0cmluZyB8PiBSZXN1bHQuaXNfb2spXG4gIDs7XG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlclxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlXG4gIE1ha2VcbiAgICAoc3RydWN0XG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuU3RyaW5nX2lkXCJcbiAgICBlbmQpXG4gICAgKClcblxubW9kdWxlIFN0cmluZ193aXRob3V0X3ZhbGlkYXRpb25fd2l0aG91dF9wcmV0dHlfcHJpbnRlciA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIEZuLmlkXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RhYmxlX3VuaXRfdGVzdF9pbnRmXG5cbm1vZHVsZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBkZXNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgc2V4cF9hc19zdHJpbmcgfD4gU2V4cC5vZl9zdHJpbmcgfD4gWyVvZl9zZXhwOiBULnRdKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+XG4gICAgICAgICAgIE9yX2Vycm9yLnRhZ19hcmdcbiAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgIFwiY291bGQgbm90IGRlc2VyaWFsaXplIHNleHBcIlxuICAgICAgICAgICAgIChzZXhwX2FzX3N0cmluZywgYEV4cGVjdGVkIHQpXG4gICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBbIGBFeHBlY3RlZCBvZiBULnQgXV1cbiAgICAgICAgIHwgT2sgdCcgLT5cbiAgICAgICAgICAgaWYgVC5lcXVhbCB0IHQnXG4gICAgICAgICAgIHRoZW4gT2sgKClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICAgIHw+IG9rX2V4blxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3NleHBfc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgbGV0IHNleHAgPSBTZXhwLm9mX3N0cmluZyBzZXhwX2FzX3N0cmluZyBpblxuICAgICAgICAgICBsZXQgc2VyaWFsaXplZF9zZXhwID0gVC5zZXhwX29mX3QgdCBpblxuICAgICAgICAgICBpZiBTZXhwLiggPD4gKSBzZXJpYWxpemVkX3NleHAgc2V4cFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgICBcInNleHAgc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHNleHAsIGBCdXRfZ290IHNlcmlhbGl6ZWRfc2V4cClcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IF0gKiBbIGBCdXRfZ290IG9mIFNleHAudCBdXSkpKVxuICAgIHw+IG9rX2V4blxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2Jpbl9pb190ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcImJpbl9pb1wiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCBfLCBleHBlY3RlZF9iaW5faW8pIC0+XG4gICAgICBsZXQgYmluYWJsZV9tID0gKG1vZHVsZSBUIDogQmluYWJsZS5TIHdpdGggdHlwZSB0ID0gVC50KSBpblxuICAgICAgbGV0IHRvX2Jpbl9zdHJpbmcgdCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9iaW5faW8gPSB0b19iaW5fc3RyaW5nIHQgaW5cbiAgICAgIGlmIFN0cmluZy4oIDw+ICkgc2VyaWFsaXplZF9iaW5faW8gZXhwZWN0ZWRfYmluX2lvXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAodCwgYEV4cGVjdGVkIGV4cGVjdGVkX2Jpbl9pbywgYEJ1dF9nb3Qgc2VyaWFsaXplZF9iaW5faW8pXG4gICAgICAgICAgWyVzZXhwX29mOiBULnQgKiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgXSAqIFsgYEJ1dF9nb3Qgb2Ygc3RyaW5nIF1dO1xuICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIHNlcmlhbGl6ZWRfYmluX2lvIGluXG4gICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX3NleHBfc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2VfYmluX2lvX3Rlc3QgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfdW5vcmRlcmVkX2NvbnRhaW5lciAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX2FyZykgPVxuc3RydWN0XG4gIG1vZHVsZSBUZXN0ID0gU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfdGVzdFxuXG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5zZXhwczsgXyB9KSAtPlxuICAgICAgbGV0IHNleHBzID0gTGlzdC5tYXAgc2V4cHMgfmY6U2V4cC5vZl9zdHJpbmcgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2VsZW1lbnRzID1cbiAgICAgICAgbWF0Y2ggVC5zZXhwX29mX3QgdCB3aXRoXG4gICAgICAgIHwgU2V4cC5MaXN0IHNleHBzIC0+IHNleHBzXG4gICAgICAgIHwgU2V4cC5BdG9tIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiZXhwZWN0ZWQgbGlzdCB3aGVuIHNlcmlhbGl6aW5nIHVub3JkZXJlZCBjb250YWluZXJcIlxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgVC5zZXhwX29mX3RcbiAgICAgIGluXG4gICAgICBsZXQgc29ydGVkX3NleHBzID0gTGlzdC5zb3J0IH5jb21wYXJlOlNleHAuY29tcGFyZSBzZXhwcyBpblxuICAgICAgbGV0IHNvcnRlZF9zZXJpYWxpemVkID0gTGlzdC5zb3J0IH5jb21wYXJlOlNleHAuY29tcGFyZSBzZXJpYWxpemVkX2VsZW1lbnRzIGluXG4gICAgICBpZiBub3QgKExpc3QuZXF1YWwgU2V4cC4oID0gKSBzb3J0ZWRfc2V4cHMgc29ydGVkX3NlcmlhbGl6ZWQpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNleHAgc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCBzZXhwcywgYEJ1dF9nb3Qgc2VyaWFsaXplZF9lbGVtZW50cylcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIFNleHAudCBsaXN0IF1dO1xuICAgICAgbGV0IHNleHBfcGVybXV0YXRpb25zID0gTGlzdC5pbml0IDEwIH5mOihmdW4gXyAtPiBMaXN0LnBlcm11dGUgc2V4cHMpIGluXG4gICAgICBMaXN0Lml0ZXIgc2V4cF9wZXJtdXRhdGlvbnMgfmY6KGZ1biBzZXhwcyAtPlxuICAgICAgICBsZXQgdCcgPSBULnRfb2Zfc2V4cCAoU2V4cC5MaXN0IHNleHBzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtc2ltYXRjaFwiXG4gICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgOztcblxuICBsZXQgcmVjIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIHN0cmluZ3MgPVxuICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICB0aGVuIExpc3QuZm9yX2FsbCBzdHJpbmdzIH5mOlN0cmluZy5pc19lbXB0eVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHJldl9za2lwcGVkIHN0cmluZ3MgPVxuICAgICAgICBtYXRjaCBzdHJpbmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgICB8IHByZWZpeCA6OiBzdHJpbmdzIC0+XG4gICAgICAgICAgbGV0IGNvbnRpbnVlICgpID0gbG9vcCAocHJlZml4IDo6IHJldl9za2lwcGVkKSBzdHJpbmdzIGluXG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4IHN0cmluZyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBjb250aW51ZSAoKVxuICAgICAgICAgICB8IFNvbWUgc3RyaW5nIC0+XG4gICAgICAgICAgICAgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgKExpc3QucmV2X2FwcGVuZCByZXZfc2tpcHBlZCBzdHJpbmdzKSB8fCBjb250aW51ZSAoKSlcbiAgICAgIGluXG4gICAgICBsb29wIFtdIHN0cmluZ3MpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBcImJpbl9pb1wiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3QuYmluX2lvX2hlYWRlcjsgYmluX2lvX2VsZW1lbnRzOyBfIH0pIC0+XG4gICAgICBsZXQgYmluYWJsZV9tID0gKG1vZHVsZSBUIDogQmluYWJsZS5TIHdpdGggdHlwZSB0ID0gVC50KSBpblxuICAgICAgbGV0IGVsZW1lbnRzID0gYmluX2lvX2VsZW1lbnRzIGluXG4gICAgICBsZXQgYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzID0gYmluX2lvX2hlYWRlciBeIFN0cmluZy5jb25jYXQgZWxlbWVudHMgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemF0aW9uX21hdGNoZXMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeDpiaW5faW9faGVhZGVyIHNlcmlhbGl6ZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIGVsZW1lbnRzX3N0cmluZyAtPiBpc19jb25jYXRlbmF0aW9uIGVsZW1lbnRzX3N0cmluZyBlbGVtZW50c1xuICAgICAgaW5cbiAgICAgIGlmIG5vdCBzZXJpYWxpemF0aW9uX21hdGNoZXNcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCAoYmluX2lvX2hlYWRlciwgZWxlbWVudHMpLCBgQnV0X2dvdCBzZXJpYWxpemVkKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nICogc3RyaW5nIGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2Ygc3RyaW5nIF1dO1xuICAgICAgbGV0IHBlcm11dGF0YXRpb25zID0gTGlzdC5pbml0IDEwIH5mOihmdW4gXyAtPiBMaXN0LnBlcm11dGUgZWxlbWVudHMpIGluXG4gICAgICBMaXN0Lml0ZXIgcGVybXV0YXRhdGlvbnMgfmY6KGZ1biBlbGVtZW50cyAtPlxuICAgICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gKGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiYmluLWlvIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgOztcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbigqIFRoZSBtb2R1bGUgW1RdIHNlcnZlcyB0byBlbmZvcmNlIHRoZSBpbnZhcmlhbnQgdGhhdCBhbGwgQmxhbmcudCB2YWx1ZXMgYXJlIGluIGFcbiAgIG5vcm1hbCBmb3JtIHdoZXJlYnkgYm9vbGVhbiBjb25zdGFudHMgVHJ1ZSBhbmQgRmFsc2Ugb25seSBhcHBlYXIgYXMgdGhlIHRvcG1vc3RcbiAgIGNvbnN0cnVjdG9yIC0tIGluIGFueSBvdGhlciBwb3NpdGlvbiB0aGV5IGFyZSBzaW1wbGlmaWVkIGF3YXkgdXNpbmcgbGF3cyBvZlxuICAgYm9vbGVhbiBhbGdlYnJhLlxuXG4gICBXZSBhbHNvIGVuZm9yY2UgdGhhdCBuZXN0ZWQgW0FuZF1zIGFuZCBbT3JdcyBlYWNoIGxlYW4gdG8gdGhlIHJpZ2h0IHNvIHRoYXQgW2V2YWxdXG4gICBkb2Vzbid0IG5lZWQgc28gbXVjaCBzdGFjayBzcGFjZSBhcyBpdCB3b3VsZCBpZiB0aGV5IGxlYW5lZCB0byB0aGUgbGVmdC4gIFRob3VnaHRcbiAgIGV4cGVyaW1lbnQ6IGNvbXBhcmUgaG93IFtldmFsXSB3b3JrcyBvbiByaWdodC1sZWFuaW5nIFtBbmQgKGEsIEFuZCAoYiwgQW5kIChjLCBkKSkpXVxuICAgdmVyc3VzIGxlZnQtbGVhbmluZyBbQW5kIChBbmQgKEFuZCAoYSwgYiksIGMpLCBkKV0uICBUaGUgZm9ybWVyIGlzIHRoZSBiZXN0IGNhc2UgYW5kIGlzXG4gICBlbmZvcmNlZC5cblxuICAgTm90ZTogdGhpcyBmaWxlIGRldmlhdGVzIGZyb20gdGhlIHVzdWFsIHBhdHRlcm4gb2YgbW9kdWxlcyB3aXRoIFN0YWJsZSBpbnRlcmZhY2VzIGluXG4gICB0aGF0IHRoZSBTdGFibGUgc3ViLW1vZHVsZSBpcyBub3QgdGhlIGZpcnN0IHRoaW5nIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1vZHVsZS4gIFRoZVxuICAgcmVhc29uIGZvciB0aGlzIGRldmlhdGlvbiBpcyBzbyB0aGF0IG9uZSBjYW4gY29udmluY2Ugb25lc2VsZiBvZiB0aGUgYWZvcmVtZW50aW9uZWRcbiAgIGludmFyaWFudCBhZnRlciByZWFkaW5nIG9ubHkgdGhpcyBzbWFsbCBhbW91bnQgb2YgY29kZS4gIEFmdGVyIGRlZmluaW5nIFQgd2UgdGhlblxuICAgaW1tZWRpYXRlbHkgZGVmaW5lIGl0cyBTdGFibGUgaW50ZXJmYWNlLlxuKilcbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgKydhIHQgPSBwcml2YXRlXG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIHZhbCBpbnZhcmlhbnQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHRydWVfIDogJ2EgdFxuICB2YWwgZmFsc2VfIDogJ2EgdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kYWxzbyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBvcmVsc2UgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID1cbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgbGV0IGludmFyaWFudCA9XG4gICAgbGV0IHN1YnRlcm1zID0gZnVuY3Rpb25cbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIHwgQmFzZSBfIC0+IFtdXG4gICAgICB8IE5vdCB0MSAtPiBbIHQxIF1cbiAgICAgIHwgQW5kICh0MSwgdDIpIHwgT3IgKHQxLCB0MikgLT4gWyB0MTsgdDIgXVxuICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gWyB0MTsgdDI7IHQzIF1cbiAgICBpblxuICAgIGxldCByZWMgY29udGFpbnNfbm9fY29uc3RhbnRzID0gZnVuY3Rpb25cbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gICAgaW5cbiAgICBmdW4gdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICA7O1xuXG4gIGxldCB0cnVlXyA9IFRydWVcbiAgbGV0IGZhbHNlXyA9IEZhbHNlXG4gIGxldCBiYXNlIHYgPSBCYXNlIHZcblxuICBsZXQgbm90XyA9IGZ1bmN0aW9uXG4gICAgfCBUcnVlIC0+IEZhbHNlXG4gICAgfCBGYWxzZSAtPiBUcnVlXG4gICAgfCBOb3QgdCAtPiB0XG4gICAgfCB0IC0+IE5vdCB0XG4gIDs7XG5cbiAgbGV0IHJlYyBhbmRhbHNvIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgRmFsc2UgfCBGYWxzZSwgXyAtPiBGYWxzZVxuICAgIHwgb3RoZXIsIFRydWUgfCBUcnVlLCBvdGhlciAtPiBvdGhlclxuICAgIHwgQW5kICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbQW5kXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgQW5kICh0MWEsIGFuZGFsc28gdDFiIHQyKVxuICAgIHwgXyAtPiBBbmQgKHQxLCB0MilcbiAgOztcblxuICBsZXQgcmVjIG9yZWxzZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIFRydWUgfCBUcnVlLCBfIC0+IFRydWVcbiAgICB8IG90aGVyLCBGYWxzZSB8IEZhbHNlLCBvdGhlciAtPiBvdGhlclxuICAgIHwgT3IgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtPcl1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIE9yICh0MWEsIG9yZWxzZSB0MWIgdDIpXG4gICAgfCBfIC0+IE9yICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IGlmXyBhIGIgYyA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBUcnVlIC0+IGJcbiAgICB8IEZhbHNlIC0+IGNcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBiLCBjIHdpdGhcbiAgICAgICB8IFRydWUsIF8gLT4gb3JlbHNlIGEgY1xuICAgICAgIHwgXywgRmFsc2UgLT4gYW5kYWxzbyBhIGJcbiAgICAgICB8IF8sIFRydWUgLT4gb3JlbHNlIChub3RfIGEpIGJcbiAgICAgICB8IEZhbHNlLCBfIC0+IGFuZGFsc28gKG5vdF8gYSkgY1xuICAgICAgIHwgXyAtPiBJZiAoYSwgYiwgYykpXG4gIDs7XG5lbmRcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgICgqIFRISVMgVFlQRSBBTkQgSVRTIFNFUklBTElaQVRJT05TIFNIT1VMRCBORVZFUiBCRSBDSEFOR0VEIC0gUExFQVNFIFNQRUFLIFdJVEhcbiAgICAgICBBTk9USEVSIERFVkVMT1BFUiBJRiBZT1UgTkVFRCBNT1JFIERFVEFJTCAqKVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICgqIHRoZSByZW1haW5kZXIgb2YgdGhpcyBzaWduYXR1cmUgY29uc2lzdHMgb2YgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGRlZmluaXRpb25zXG4gICAgICAgb2Ygc2V4cCBjb252ZXJzaW9ucyB0aGF0IGFyZSBhbHNvIHVzZWZ1bCBtb3JlIGdlbmVyYWxseSAqKVxuXG4gICAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBnYXRoZXJfY29uanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgICB2YWwgZ2F0aGVyX2Rpc2p1bmN0cyA6ICdhIHQgLT4gJ2EgdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcblxuICAgIGluY2x1ZGUgKFxuICAgICAgVCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbiAgICB0eXBlIHNleHAgPSBTZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHNleHAgbGlzdFxuXG4gICAgKCogY2hlYXAgaW1wb3J0ICopXG5cbiAgICAoKiBmbGF0dGVuIG91dCBuZXN0ZWQgYW5kJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Nvbmp1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBmbGF0dGVuIG91dCBuZXN0ZWQgb3IncyAqKVxuICAgIGxldCBnYXRoZXJfZGlzanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICAgICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIFthbmRfXSBhbmQgW29yX10gdXNlIFtmb2xkX3JpZ2h0XSBpbnN0ZWFkIG9mIFtmb2xkX2xlZnRdIHRvIGF2b2lkIHF1YWRyYXRpY1xuICAgICAgIGJlaGF2aW9yIHdpdGggW2FuZGFsc29dIG9yIFtvcmVsc2VdLCByZXNwZWN0aXZlbHkuICopXG4gICAgbGV0IGFuZF8gdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6dHJ1ZV8gfmY6YW5kYWxzb1xuICAgIGxldCBvcl8gdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6ZmFsc2VfIH5mOm9yZWxzZVxuXG4gICAgbGV0IHVuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHggXSAtPiB4XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIG9uZSBhcmd1bWVudCwgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRlcm5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeDsgeTsgeiBdIC0+IHgsIHksIHpcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgdGhyZWUgYXJndW1lbnRzLCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgICBsZXQgcmVjIGF1eCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSB4IC0+IHNleHBfb2ZfdmFsdWUgeFxuICAgICAgICB8IFRydWUgLT4gQXRvbSBcInRydWVcIlxuICAgICAgICB8IEZhbHNlIC0+IEF0b20gXCJmYWxzZVwiXG4gICAgICAgIHwgTm90IHQgLT4gTGlzdCBbIEF0b20gXCJub3RcIjsgYXV4IHQgXVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBMaXN0IFsgQXRvbSBcImlmXCI7IGF1eCB0MTsgYXV4IHQyOyBhdXggdDMgXVxuICAgICAgICB8IEFuZCBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfY29uanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwiYW5kXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgICB8IE9yIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9kaXNqdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJvclwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgIGluXG4gICAgICBhdXggdFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIGJhc2Vfb2Zfc2V4cCBzZXhwID1cbiAgICAgIGxldCBiYXNlIHNleHAgPSBiYXNlIChiYXNlX29mX3NleHAgc2V4cCkgaW5cbiAgICAgIGxldCByZWMgYXV4IHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBBdG9tIGt3IC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwidHJ1ZVwiIC0+IHRydWVfXG4gICAgICAgICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlX1xuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IExpc3QgKEF0b20ga3cgOjogYXJncykgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJhbmRcIiAtPiBhbmRfIChMaXN0Lm1hcCB+ZjphdXggYXJncylcbiAgICAgICAgICAgfCBcIm9yXCIgLT4gb3JfIChMaXN0Lm1hcCB+ZjphdXggYXJncylcbiAgICAgICAgICAgfCBcIm5vdFwiIC0+IG5vdF8gKGF1eCAodW5hcnkgXCJub3RcIiBhcmdzIHNleHApKVxuICAgICAgICAgICB8IFwiaWZcIiAtPlxuICAgICAgICAgICAgIGxldCB4LCB5LCB6ID0gdGVybmFyeSBcImlmXCIgYXJncyBzZXhwIGluXG4gICAgICAgICAgICAgaWZfIChhdXggeCkgKGF1eCB5KSAoYXV4IHopXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgXyAtPiBiYXNlIHNleHBcbiAgICAgIGluXG4gICAgICBhdXggc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgICAgbGV0IGRlZm5zIDogU2V4cGxpYi5TZXhwX2dyYW1tYXIuZGVmbiBsaXN0ID1cbiAgICAgICAgbGV0IGJsYW5nIDogU2V4cGxpYi5TZXhwX2dyYW1tYXIuZ3JhbW1hciA9IFR5Y29uIChcImJsYW5nXCIsIFsgVHl2YXIgXCJhXCIgXSkgaW5cbiAgICAgICAgWyB7IHR5Y29uID0gXCJibGFuZ1wiXG4gICAgICAgICAgOyB0eXZhcnMgPSBbIFwiYVwiIF1cbiAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgVHl2YXIgXCJhXCJcbiAgICAgICAgICAgICAgICA7IFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9pbnNlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJ0cnVlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJmYWxzZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJpZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBDb25zIChibGFuZywgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJub3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChibGFuZywgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgZnVuIGJhc2VfZ3JhbW1hciAtPlxuICAgICAgICB7IHVudHlwZWQgPSBSZWN1cnNpdmUgKFR5Y29uIChcImJsYW5nXCIsIFsgYmFzZV9ncmFtbWFyLnVudHlwZWQgXSksIGRlZm5zKSB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbmxldCBjb25zdGFudCBiID0gaWYgYiB0aGVuIHRydWVfIGVsc2UgZmFsc2VfXG5cbm1vZHVsZSB0eXBlIENvbnN0cnVjdG9ycyA9IHNpZ1xuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHRydWVfIDogXyB0XG4gIHZhbCBmYWxzZV8gOiBfIHRcbiAgdmFsIGNvbnN0YW50IDogYm9vbCAtPiBfIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb3JfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICBsZXQgbm90ID0gbm90X1xuICBsZXQgYW5kXyA9IGFuZF9cbiAgbGV0IG9yXyA9IG9yX1xuICBsZXQgY29uc3RhbnQgPSBjb25zdGFudFxuICBsZXQgKCAmJiApID0gYW5kYWxzb1xuICBsZXQgKCB8fCApID0gb3JlbHNlXG4gIGxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxuZW5kXG5cbmxldCBjb25zdGFudF92YWx1ZSA9IGZ1bmN0aW9uXG4gIHwgVHJ1ZSAtPiBTb21lIHRydWVcbiAgfCBGYWxzZSAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG47O1xuXG4oKiBbdmFsdWVzIHRdIGxpc3RzIHRoZSBiYXNlIHByZWRpY2F0ZXMgaW4gW3RdIGZyb20gbGVmdCB0byByaWdodCAqKVxubGV0IHZhbHVlcyB0ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIHYgOjogdHMgLT4gbG9vcCAodiA6OiBhY2MpIHRzXG4gICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgIHwgTm90IHQxIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0cylcbiAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBJZiAodDEsIHQyLCB0MykgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHQzIDo6IHRzKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIGxvb3AgW10gWyB0IF1cbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjIHQgcGVuZGluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgYSAtPiBuZXh0IChmIGFjYyBhKSBwZW5kaW5nXG4gICAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IG5leHQgYWNjIHBlbmRpbmdcbiAgICAgICAgfCBOb3QgdCAtPiBsb29wIGFjYyB0IHBlbmRpbmdcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBsb29wIGFjYyB0MSAodDIgOjogcGVuZGluZylcbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gbG9vcCBhY2MgdDEgKHQyIDo6IHQzIDo6IHBlbmRpbmcpXG4gICAgICBhbmQgbmV4dCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCBhY2MgdCB0c1xuICAgICAgaW5cbiAgICAgIGxvb3AgaW5pdCB0IFtdXG4gICAgOztcblxuICAgIGxldCBpdGVyID0gYERlZmluZV91c2luZ19mb2xkXG4gICAgbGV0IGxlbmd0aCA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGQgPSBDLmZvbGRcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgaXNfZW1wdHkgPSBDLmlzX2VtcHR5XG5sZXQgaXRlciA9IEMuaXRlclxubGV0IGxlbmd0aCA9IEMubGVuZ3RoXG5sZXQgbWVtID0gQy5tZW1cbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgcmV0dXJuID0gYmFzZVxuXG4gICAgbGV0IHJlYyBiaW5kIHQgfmY6ayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQmFzZSB2IC0+IGsgdlxuICAgICAgfCBUcnVlIC0+IHRydWVfXG4gICAgICB8IEZhbHNlIC0+IGZhbHNlX1xuICAgICAgfCBOb3QgdDEgLT4gbm90XyAoYmluZCB0MSB+ZjprKVxuICAgICAgKCogVW5mb3J0dW5hdGVseSB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBzb21lIG9mIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGZyb20gW2FuZGFsc29dIGFuZFxuICAgICAgICAgZnJpZW5kcyBoZXJlLiBJbiBwcmluY2lwbGUgd2UgY291bGQgZG8gc29tZXRoaW5nIGludm9sdmluZyBbTGF6eS50XSBidXQgdGhlXG4gICAgICAgICBvdmVyaGVhZCBwcm9iYWJseSB3b3VsZG4ndCBiZSB3b3J0aCBpdC4gKilcbiAgICAgIHwgQW5kICh0MSwgdDIpIC0+XG4gICAgICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICAgICAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgICAgICAgIHwgb3RoZXIgLT4gYW5kYWxzbyBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgICAgIHwgT3IgKHQxLCB0MikgLT5cbiAgICAgICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgICAgIHwgb3RoZXIgLT4gb3JlbHNlIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT5cbiAgICAgICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgICAgICB8IFRydWUgLT4gYmluZCB0MiB+ZjprXG4gICAgICAgICB8IEZhbHNlIC0+IGJpbmQgdDMgfmY6a1xuICAgICAgICAgfCBvdGhlciAtPiBpZl8gb3RoZXIgKGJpbmQgdDIgfmY6aykgKGJpbmQgdDMgfmY6aykpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgZW5kKVxuXG4oKiBzZW1hbnRpY3MgKilcblxubGV0IHJlYyBldmFsIHQgYmFzZV9ldmFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVHJ1ZSAtPiB0cnVlXG4gIHwgRmFsc2UgLT4gZmFsc2VcbiAgfCBBbmQgKHQxLCB0MikgLT4gZXZhbCB0MSBiYXNlX2V2YWwgJiYgZXZhbCB0MiBiYXNlX2V2YWxcbiAgfCBPciAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCB8fCBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE5vdCB0IC0+IG5vdCAoZXZhbCB0IGJhc2VfZXZhbClcbiAgfCBJZiAodDEsIHQyLCB0MykgLT4gaWYgZXZhbCB0MSBiYXNlX2V2YWwgdGhlbiBldmFsIHQyIGJhc2VfZXZhbCBlbHNlIGV2YWwgdDMgYmFzZV9ldmFsXG4gIHwgQmFzZSB4IC0+IGJhc2VfZXZhbCB4XG47O1xuXG5sZXQgc3BlY2lhbGl6ZSB0IGYgPVxuICBiaW5kIHQgfmY6KGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IGBLbm93biBjIC0+IGNvbnN0YW50IGNcbiAgICB8IGBVbmtub3duIC0+IGJhc2Ugdilcbjs7XG5cbmxldCBldmFsX3NldCB+dW5pdmVyc2U6YWxsIHNldF9vZl9iYXNlID1cbiAgbGV0IHJlYyBhdXggKGIgOiBfIHQpID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IFRydWUgLT4gZm9yY2UgYWxsXG4gICAgfCBGYWxzZSAtPiBTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooU2V0LmNvbXBhcmF0b3IgKGZvcmNlIGFsbCkpXG4gICAgfCBBbmQgKGEsIGIpIC0+IFNldC5pbnRlciAoYXV4IGEpIChhdXggYilcbiAgICB8IE9yIChhLCBiKSAtPiBTZXQudW5pb24gKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBOb3QgYSAtPiBTZXQuZGlmZiAoZm9yY2UgYWxsKSAoYXV4IGEpXG4gICAgfCBCYXNlIGEgLT4gc2V0X29mX2Jhc2UgYVxuICAgIHwgSWYgKGNvbmQsIGEsIGIpIC0+XG4gICAgICBsZXQgY29uZCA9IGF1eCBjb25kIGluXG4gICAgICBTZXQudW5pb24gKFNldC5pbnRlciBjb25kIChhdXggYSkpIChTZXQuaW50ZXIgKFNldC5kaWZmIChmb3JjZSBhbGwpIGNvbmQpIChhdXggYikpXG4gIGluXG4gIGF1eFxuOztcblxubW9kdWxlIHR5cGUgTW9uYWRpYyA9IHNpZ1xuICBtb2R1bGUgTSA6IE1vbmFkLlNcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBNLnQpIC0+ICdiIHQgTS50XG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0IE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGV2YWwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgTS50KSAtPiBib29sIE0udFxuZW5kXG5cbm1vZHVsZSBGb3JfbW9uYWQgKE0gOiBNb25hZC5TKSA6IE1vbmFkaWMgd2l0aCBtb2R1bGUgTSA6PSBNID0gc3RydWN0XG4gIG9wZW4gTS5Nb25hZF9pbmZpeFxuXG4gIGxldCByZWMgYmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgeCAtPiBmIHhcbiAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICB8IEZhbHNlIC0+IE0ucmV0dXJuIGZhbHNlX1xuICAgIHwgQW5kIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgICAgIHwgVHJ1ZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gYW5kYWxzbyBhIGIpXG4gICAgfCBPciAoYSwgYikgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICAgICAgfCBGYWxzZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gb3JlbHNlIGEgYilcbiAgICB8IE5vdCBhIC0+IGJpbmQgYSB+ZiA+Pnwgbm90X1xuICAgIHwgSWYgKGEsIGIsIGMpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYyB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+PSBmdW4gYiAtPiBiaW5kIGMgfmYgPj58IGZ1biBjIC0+IGlmXyBhIGIgYylcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IGYgeCA+PnwgYmFzZSlcblxuICBsZXQgZXZhbCB0IH5mID1cbiAgICBiaW5kIHQgfmY6KGZ1biB4IC0+XG4gICAgICBmIHhcbiAgICAgID4+fCBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IHRydWVfXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXylcbiAgICA+PnwgZnVuIHQgLT4gZXZhbCB0IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICA7O1xuZW5kXG5cbigqKiBXZSBhdm9pZCBkZXJpdmluZyBxdWlja2NoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnZhcmlhbnRzIGRlc2NyaWJlZCBpbiBbVF0ncyBjb21tZW50c1xuICAgIGFib3ZlIGFyZSBwcmVzZXJ2ZWQuICopXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgYV9nZW5lcmF0b3IgPVxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5yZWN1cnNpdmVfdW5pb25cbiAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpiYXNlIGFfZ2VuZXJhdG9yXG4gICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5zaW5nbGV0b24gdHJ1ZV9cbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiBmYWxzZV9cbiAgICBdXG4gICAgfmY6KGZ1biBzZWxmIC0+XG4gICAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBzZWxmIH5mOm5vdF9cbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oIHx8IClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oICYmIClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMyBzZWxmIHNlbGYgc2VsZiB+ZjppZl9cbiAgICAgIF0pXG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciAodHlwZSBhKSAoYV9zaHJpbmtlciA6IGEgUXVpY2tjaGVjay5TaHJpbmtlci50KSA9XG4gIFF1aWNrY2hlY2suU2hyaW5rZXIuZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IGJpbm9wIG9wZXJhdG9yIGxlZnQgcmlnaHQgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gbGVmdFxuICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiByaWdodFxuICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBsZWZ0KSB+ZjooZnVuIGxlZnQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHJpZ2h0KSB+ZjooZnVuIHJpZ2h0IC0+XG4gICAgICAgICAgICBvcGVyYXRvciBsZWZ0IHJpZ2h0KVxuICAgICAgICBdXG4gICAgaW5cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmNyZWF0ZSAoZnVuIHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgQmFzZSBhIC0+IFNlcXVlbmNlLm1hcCB+ZjpiYXNlIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBhX3Nocmlua2VyIGEpXG4gICAgICB8IE9yIChsZWZ0LCByaWdodCkgLT4gYmlub3AgTy4oIHx8ICkgbGVmdCByaWdodFxuICAgICAgfCBBbmQgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggJiYgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IE5vdCB0IC0+XG4gICAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gdClcbiAgICAgICAgICAoU2VxdWVuY2UubWFwIH5mOm5vdF8gKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdCkpXG4gICAgICB8IElmIChpZl8sIHRoZW5fLCBlbHNlXykgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBpZl9cbiAgICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiB0aGVuX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIGVsc2VfXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgaWZfKSB+ZjooZnVuIGlmXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdGhlbl8pIH5mOihmdW4gdGhlbl8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGVsc2VfKSB+ZjooZnVuIGVsc2VfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyICh0eXBlIGEpIChhX29ic2VydmVyIDogYSBRdWlja2NoZWNrLk9ic2VydmVyLnQpID1cbiAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemUgfmhhc2ggLT5cbiAgICBoYXNoX2ZvbGRfdFxuICAgICAgKGZ1biBoYXNoIGEgLT4gUXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlIGFfb2JzZXJ2ZXIgYSB+c2l6ZSB+aGFzaClcbiAgICAgIGhhc2hcbiAgICAgIHQpXG47O1xuIiwiKCogQ29udmVyc2lvbnMgYmV0d2VlbiB1bml0cyBvZiBtZWFzdXJlIGJhc2VkIG9uIGJ5dGVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5tb2R1bGUgVCA9IEJ5dGVfdW5pdHMwXG5pbmNsdWRlIChUIDogbW9kdWxlIHR5cGUgb2YgVCB3aXRoIG1vZHVsZSBSZXByIDo9IFJlcHIpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIC0gKSBhIGIgPSBvZl9yZXByIChSZXByLiggLSApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCArICkgYSBiID0gb2ZfcmVwciAoUmVwci4oICsgKSAodG9fcmVwciBhKSAodG9fcmVwciBiKSlcbiAgbGV0ICggLy8gKSBhIGIgPSBSZXByLiggLy8gKSAodG9fcmVwciBhKSAodG9fcmVwciBiKVxuXG4gIGxldCAoIC8gKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpIC8uIHMpKVxuICBsZXQgKCAqICkgdCBzID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCAoUmVwci50b19mbG9hdCAodG9fcmVwciB0KSAqLiBzKSlcbmVuZFxuXG5pbmNsdWRlIEluZml4XG5cbmxldCB6ZXJvID0gb2ZfcmVwciBSZXByLnplcm9cbmxldCBtaW5fdmFsdWUgPSBvZl9yZXByIFJlcHIubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlID0gb2ZfcmVwciBSZXByLm1heF92YWx1ZVxubGV0IHNjYWxlID0gSW5maXguKCAqIClcbmxldCBpc2NhbGUgdCBzID0gb2ZfcmVwciAoUmVwci4oICogKSAodG9fcmVwciB0KSAoUmVwci5vZl9pbnQgcykpXG5sZXQgYnl0ZXNfaW50X2V4biA9IFQuYnl0ZXNfaW50X2V4blxubGV0IGJ5dGVzX2ludDYzID0gdG9fcmVwclxubGV0IGJ5dGVzX2ludDY0IHQgPSBSZXByLnRvX2ludDY0ICh0b19yZXByIHQpXG5sZXQgYnl0ZXNfZmxvYXQgdCA9IFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdClcbmxldCBvZl9ieXRlc19pbnQgYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50IGIpXG5sZXQgb2ZfYnl0ZXNfaW50NjMgPSBvZl9yZXByXG5sZXQgb2ZfYnl0ZXNfaW50NjRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2ludDY0X2V4biBiKVxubGV0IG9mX2J5dGVzX2Zsb2F0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCBiKVxuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtieXRlc19pbnRfZXhuXSwgW2J5dGVzX2ludDYzXSwgW2J5dGVzX2ludDY0XSBvciBbYnl0ZXNfZmxvYXRdIFxcXG4gICBhcyBhcHByb3ByaWF0ZS5cIl0gYnl0ZXNcbiAgPVxuICBieXRlc19mbG9hdFxuOztcblxubGV0W0BkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNfaW50XSwgW29mX2J5dGVzX2ludDYzXSwgW29mX2J5dGVzX2ludDY0X2V4bl0gb3IgXFxcbiAgIFtvZl9ieXRlc19mbG9hdF9leG5dIGFzIGFwcHJvcHJpYXRlLlwiXSBvZl9ieXRlc1xuICA9XG4gIG9mX2J5dGVzX2Zsb2F0X2V4blxuOztcblxubGV0IGtpbG9ieXRlIDogdCA9IG9mX2J5dGVzX2ludCAxMDI0XG5sZXQgbWVnYWJ5dGUgPSBpc2NhbGUga2lsb2J5dGUgMTAyNFxubGV0IGdpZ2FieXRlID0gaXNjYWxlIG1lZ2FieXRlIDEwMjRcbmxldCB0ZXJhYnl0ZSA9IGlzY2FsZSBnaWdhYnl0ZSAxMDI0XG5sZXQgcGV0YWJ5dGUgPSBpc2NhbGUgdGVyYWJ5dGUgMTAyNFxubGV0IGV4YWJ5dGUgPSBpc2NhbGUgcGV0YWJ5dGUgMTAyNFxuXG5sZXQgd29yZCA9XG4gIGxldCBtb2R1bGUgVyA9IFdvcmRfc2l6ZSBpblxuICBtYXRjaCBXLndvcmRfc2l6ZSB3aXRoXG4gIHwgVy5XMzIgLT4gb2ZfYnl0ZXNfaW50IDRcbiAgfCBXLlc2NCAtPiBvZl9ieXRlc19pbnQgOFxuOztcblxubGV0IGtpbG9ieXRlcyB0IDogZmxvYXQgPSBJbmZpeC4oIC8vICkgdCBraWxvYnl0ZVxubGV0IG1lZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgbWVnYWJ5dGVcbmxldCBnaWdhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IGdpZ2FieXRlXG5sZXQgdGVyYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCB0ZXJhYnl0ZVxubGV0IHBldGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgcGV0YWJ5dGVcbmxldCBleGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZXhhYnl0ZVxubGV0IHdvcmRzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAoUmVwci4oIC8gKSAodG9fcmVwciB0KSAodG9fcmVwciB3b3JkKSlcbmxldCB3b3Jkc19mbG9hdCB0ID0gSW5maXguKCAvLyApIHQgd29yZFxubGV0IG9mX2tpbG9ieXRlcyB0IDogdCA9IEluZml4LiggKiApIGtpbG9ieXRlIHRcbmxldCBvZl9tZWdhYnl0ZXMgdCA9IEluZml4LiggKiApIG1lZ2FieXRlIHRcbmxldCBvZl9naWdhYnl0ZXMgdCA9IEluZml4LiggKiApIGdpZ2FieXRlIHRcbmxldCBvZl90ZXJhYnl0ZXMgdCA9IEluZml4LiggKiApIHRlcmFieXRlIHRcbmxldCBvZl9wZXRhYnl0ZXMgdCA9IEluZml4LiggKiApIHBldGFieXRlIHRcbmxldCBvZl9leGFieXRlcyB0ID0gSW5maXguKCAqICkgZXhhYnl0ZSB0XG5sZXQgb2Zfd29yZHNfaW50IHQgPSBpc2NhbGUgd29yZCB0XG5sZXQgb2Zfd29yZHNfZmxvYXRfZXhuIHQgPSBJbmZpeC4oICogKSB3b3JkIHRcblxubGV0W0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbd29yZHNfaW50X2V4bl0gb3IgW3dvcmRzX2Zsb2F0XVwiXSB3b3JkcyA9XG4gIHdvcmRzX2Zsb2F0XG47O1xuXG5sZXRbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl93b3Jkc19pbnRdIG9yIFtvZl93b3Jkc19mbG9hdF9leG5dXCJdIG9mX3dvcmRzID1cbiAgb2Zfd29yZHNfZmxvYXRfZXhuXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIEludC4oIDwgKSBsZW5ndGggMlxuICB0aGVuIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gdG9vIHNob3J0XCIgcyAoKTtcbiAgbGV0IGJhc2Vfc3RyID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihJbnQuKCAtICkgbGVuZ3RoIDEpIGluXG4gIGxldCBleHRfY2hhciA9IENoYXIubG93ZXJjYXNlIHMuW0ludC4oIC0gKSBsZW5ndGggMV0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIHRyeSBGbG9hdC5vZl9zdHJpbmcgYmFzZV9zdHIgd2l0aFxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSAlcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIGZsb2F0IFwiXG4gICAgICAgIHNcbiAgICAgICAgYmFzZV9zdHJcbiAgICAgICAgKClcbiAgaW5cbiAgbWF0Y2ggZXh0X2NoYXIgd2l0aFxuICB8ICdiJyAtPiBvZl9ieXRlc19mbG9hdF9leG4gYmFzZVxuICB8ICdrJyAtPiBvZl9raWxvYnl0ZXMgYmFzZVxuICB8ICdtJyAtPiBvZl9tZWdhYnl0ZXMgYmFzZVxuICB8ICdnJyAtPiBvZl9naWdhYnl0ZXMgYmFzZVxuICB8ICd0JyAtPiBvZl90ZXJhYnl0ZXMgYmFzZVxuICB8ICdwJyAtPiBvZl9wZXRhYnl0ZXMgYmFzZVxuICB8ICdlJyAtPiBvZl9leGFieXRlcyBiYXNlXG4gIHwgJ3cnIC0+IG9mX3dvcmRzIGJhc2VcbiAgfCBleHQgLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIGlsbGVnYWwgZXh0ZW5zaW9uICVjXCIgcyBleHQgKClcbjs7XG5cbmxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuXG5sZXQgbGFyZ2VzdF9tZWFzdXJlIHQgPVxuICBsZXQgdF9hYnMgPSBvZl9yZXByIChSZXByLmFicyAodG9fcmVwciB0KSkgaW5cbiAgaWYgdF9hYnMgPj0gZXhhYnl0ZVxuICB0aGVuIGBFeGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHBldGFieXRlXG4gIHRoZW4gYFBldGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHRlcmFieXRlXG4gIHRoZW4gYFRlcmFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGdpZ2FieXRlXG4gIHRoZW4gYEdpZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IG1lZ2FieXRlXG4gIHRoZW4gYE1lZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGtpbG9ieXRlXG4gIHRoZW4gYEtpbG9ieXRlc1xuICBlbHNlIGBCeXRlc1xuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAoKiBTaGFyZSB0aGUgY29tbW9uIFtvZl9zZXhwXSBjb2RlIGZvciBbVjFdIGFuZCBbVjJdLiAqKVxuICBtb2R1bGUgT2Zfc2V4cF92MV92MiA6IHNpZ1xuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fbWF0Y2ggKCkgPSBmYWlsd2l0aCBcIk5vdCBhIHJlY29nbml6ZWQgW0J5dGVfdW5pdHMudF0gcmVwcmVzZW50YXRpb25cIlxuXG4gICAgbGV0IG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWxfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiQnl0ZXNcIiAtPlxuICAgICAgICAodHJ5IG9mX2J5dGVzX2ludDYzIChJbnQ2My50X29mX3NleHAgdmFsX3NleHApIHdpdGhcbiAgICAgICAgIHwgXyAtPiBvZl9ieXRlc19mbG9hdF9leG4gKEZsb2F0LnRfb2Zfc2V4cCB2YWxfc2V4cCkpXG4gICAgICB8IFwiS2lsb2J5dGVzXCIgLT4gb2Zfa2lsb2J5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIk1lZ2FieXRlc1wiIC0+IG9mX21lZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJHaWdhYnl0ZXNcIiAtPiBvZl9naWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiVGVyYWJ5dGVzXCIgLT4gb2ZfdGVyYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlBldGFieXRlc1wiIC0+IG9mX3BldGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJFeGFieXRlc1wiIC0+IG9mX2V4YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIldvcmRzXCIgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIHVuaXRfbmFtZTsgdmFsdWUgXSAtPlxuICAgICAgICBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsdWUgdW5pdF9uYW1lXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIHRyeSB0X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGV4biAtPiByYWlzZSAoU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHNleHApKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19mbG9hdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfZmxvYXRfZXhuXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICgqIFYxIG9ubHkgZ29lcyB1cCB0byBnaWdhYnl0ZXMgKilcbiAgICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICAgIHwgYEJ5dGVzIC0+IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2Zsb2F0IHQgOiBmbG9hdCldXG4gICAgICB8IGBLaWxvYnl0ZXMgLT4gWyVzZXhwIGBLaWxvYnl0ZXMgKGtpbG9ieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgTWVnYWJ5dGVzIC0+IFslc2V4cCBgTWVnYWJ5dGVzIChtZWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEdpZ2FieXRlcyB8IGBUZXJhYnl0ZXMgfCBgUGV0YWJ5dGVzIHwgYEV4YWJ5dGVzIC0+XG4gICAgICAgIFslc2V4cCBgR2lnYWJ5dGVzIChnaWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLmxvd2VyY2FzZSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuXG4gICAgKCogVGhpcyB0ZXN0IGRvY3VtZW50cyB0aGUgb3JpZ2luYWwgdG8tc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFuZCBmYWlscyB1bmRlciBqYXZhc2NyaXB0XG4gICAgICAgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHRoZSByb3VuZGluZy4gKilcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKF8gW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgICAgWyVleHBlY3Qge3wgMTAwMGIgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDIzYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDFrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgICAgWyVleHBlY3Qge3wgMS4wMDA5OGsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTUwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjQ2NDg0ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ljc2NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOTcuNjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5NzYuNTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5LjUzNjc0bSB8fV1cbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gb2Zfc2V4cF9lcnJvciBtc2cgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDYzKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gYnl0ZXNfaW50NjNcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2J5dGVzX2ludDYzXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfaW50NjMgdCA6IEludDYzLnQpXVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IFQudG9fc3RyaW5nXG5cbm1vZHVsZSBTaG9ydCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgbGV0IHRvX3VuaXRzX3N0ciB0b191bml0IGV4dCA9XG4gICAgICBsZXQgZiA9IHRvX3VuaXQgdCBpblxuICAgICAgbGV0IGZfYWJzID0gRmxvYXQuYWJzIGYgaW5cbiAgICAgIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMDAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjBmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjFmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJS4yZiVjXCIgZiBleHRcbiAgICBpblxuICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICB8IGBCeXRlcyAtPiBzcHJpbnRmIFwiJWRCXCIgKGJ5dGVzX2ludF9leG4gdClcbiAgICB8IGBLaWxvYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGtpbG9ieXRlcyAnSydcbiAgICB8IGBNZWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIG1lZ2FieXRlcyAnTSdcbiAgICB8IGBHaWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGdpZ2FieXRlcyAnRydcbiAgICB8IGBUZXJhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHRlcmFieXRlcyAnVCdcbiAgICB8IGBQZXRhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHBldGFieXRlcyAnUCdcbiAgICB8IGBFeGFieXRlcyAtPiB0b191bml0c19zdHIgZXhhYnl0ZXMgJ0UnXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgWyVleHBlY3Qge3wgMTAwMEIgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgIFslZXhwZWN0IHt8IDEwMjNCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ljc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ny43SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNTRNIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzIDEwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOS4zMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkzMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTAuOVQgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgODguOFAgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMzAwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDIuNjBFIHx9XTtcbiAgICAoKVxuICA7O1xuZW5kXG5cbmxldCB0b19zdHJpbmdfc2hvcnQgPSBTaG9ydC50b19zdHJpbmdcblxubGV0W0BkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNdLCBbb2Zfa2lsb2J5dGVzXSwgW29mX21lZ2FieXRlc10sIGV0YyBhcyBhcHByb3ByaWF0ZS5cIl0gY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICA9XG4gIG1hdGNoIHVuaXRzIHdpdGhcbiAgfCBgQnl0ZXMgLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIHZhbHVlXG4gIHwgYEtpbG9ieXRlcyAtPiBvZl9raWxvYnl0ZXMgdmFsdWVcbiAgfCBgTWVnYWJ5dGVzIC0+IG9mX21lZ2FieXRlcyB2YWx1ZVxuICB8IGBHaWdhYnl0ZXMgLT4gb2ZfZ2lnYWJ5dGVzIHZhbHVlXG4gIHwgYFdvcmRzIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biB2YWx1ZVxuOztcblxuaW5jbHVkZVxuICBRdWlja2NoZWNrYWJsZS5PZl9xdWlja2NoZWNrYWJsZVxuICAgIChSZXByKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBvZl9xdWlja2NoZWNrYWJsZSA9IG9mX3JlcHJcbiAgICAgIGxldCB0b19xdWlja2NoZWNrYWJsZSA9IHRvX3JlcHJcbiAgICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuZXh0ZXJuYWwgaXNfaGVhcF9ibG9jayA6IENhbWwuT2JqLnQgLT4gYm9vbCA9IFwiY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcIiBbQEBub2FsbG9jXVxuXG5sZXQgaXNfb2sgdiA9IGlzX2hlYXBfYmxvY2sgKENhbWwuT2JqLnJlcHIgdilcbmxldCBjcmVhdGUgdiA9IGlmIGlzX29rIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG5cbmxldCBjcmVhdGVfZXhuIHYgPVxuICBpZiBpc19vayB2IHRoZW4gdiBlbHNlIGZhaWx3aXRoIFwiSGVhcF9ibG9jay5jcmVhdGVfZXhuIGNhbGxlZCB3aXRoIG5vbiBoZWFwIGJsb2NrXCJcbjs7XG5cbmxldCB2YWx1ZSB0ID0gdFxubGV0IGJ5dGVzX3Blcl93b3JkID0gV29yZF9zaXplLihudW1fYml0cyB3b3JkX3NpemUpIC8gOFxuXG5sZXQgYnl0ZXMgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgKENhbWwuT2JqLnNpemUgKENhbWwuT2JqLnJlcHIgKHQgOiBhIHQpKSArIDEpICogYnl0ZXNfcGVyX3dvcmRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgTmV4dF9maXRcbiAgICAgICAgfCBGaXJzdF9maXRcbiAgICAgICAgfCBCZXN0X2ZpdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IENhbWwuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IENhbWwuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlIGVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQ2FtbC5HY1xuXG5tb2R1bGUgU3RhdCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgYmluX2lvLCBzZXhwLCBmaWVsZHNdXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2YsIGZpZWxkc11cblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgbGV0IGRpZmYgYWZ0ZXIgYmVmb3JlID1cbiAgICB7IG1pbm9yX3dvcmRzID0gYWZ0ZXIubWlub3Jfd29yZHMgLS4gYmVmb3JlLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGFmdGVyLnByb21vdGVkX3dvcmRzIC0uIGJlZm9yZS5wcm9tb3RlZF93b3Jkc1xuICAgIDsgbWFqb3Jfd29yZHMgPSBhZnRlci5tYWpvcl93b3JkcyAtLiBiZWZvcmUubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBiZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gYWZ0ZXIubWFqb3JfY29sbGVjdGlvbnMgLSBiZWZvcmUubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBhZnRlci5oZWFwX3dvcmRzIC0gYmVmb3JlLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gYWZ0ZXIuaGVhcF9jaHVua3MgLSBiZWZvcmUuaGVhcF9jaHVua3NcbiAgICA7IGxpdmVfd29yZHMgPSBhZnRlci5saXZlX3dvcmRzIC0gYmVmb3JlLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gYWZ0ZXIubGl2ZV9ibG9ja3MgLSBiZWZvcmUubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBhZnRlci5mcmVlX3dvcmRzIC0gYmVmb3JlLmZyZWVfd29yZHNcbiAgICA7IGZyZWVfYmxvY2tzID0gYWZ0ZXIuZnJlZV9ibG9ja3MgLSBiZWZvcmUuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGFmdGVyLmxhcmdlc3RfZnJlZSAtIGJlZm9yZS5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGFmdGVyLmZyYWdtZW50cyAtIGJlZm9yZS5mcmFnbWVudHNcbiAgICA7IGNvbXBhY3Rpb25zID0gYWZ0ZXIuY29tcGFjdGlvbnMgLSBiZWZvcmUuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gYWZ0ZXIudG9wX2hlYXBfd29yZHMgLSBiZWZvcmUudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBhZnRlci5zdGFja19zaXplIC0gYmVmb3JlLnN0YWNrX3NpemVcbiAgICB9XG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgZGlmZiBhZnRlciBiZWZvcmUgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBhZnRlci5taW5vcl93b3JkcyAtLiBiZWZvcmUubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gYWZ0ZXIucHJvbW90ZWRfd29yZHMgLS4gYmVmb3JlLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGFmdGVyLm1ham9yX3dvcmRzIC0uIGJlZm9yZS5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBhZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBhZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGFmdGVyLmhlYXBfd29yZHMgLSBiZWZvcmUuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBhZnRlci5oZWFwX2NodW5rcyAtIGJlZm9yZS5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGFmdGVyLmxpdmVfd29yZHMgLSBiZWZvcmUubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBhZnRlci5saXZlX2Jsb2NrcyAtIGJlZm9yZS5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGFmdGVyLmZyZWVfd29yZHMgLSBiZWZvcmUuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBhZnRlci5mcmVlX2Jsb2NrcyAtIGJlZm9yZS5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gYWZ0ZXIubGFyZ2VzdF9mcmVlIC0gYmVmb3JlLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gYWZ0ZXIuZnJhZ21lbnRzIC0gYmVmb3JlLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBhZnRlci5jb21wYWN0aW9ucyAtIGJlZm9yZS5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBhZnRlci50b3BfaGVhcF93b3JkcyAtIGJlZm9yZS50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGFmdGVyLnN0YWNrX3NpemUgLSBiZWZvcmUuc3RhY2tfc2l6ZVxuICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgYWZ0ZXIuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc1xuICAgIH1cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJSBlbHNlXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSUgZW5kaWZdXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuZW5kXG5cbm1vZHVsZSBBbGxvY2F0aW9uX3BvbGljeSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQWxsb2NhdGlvbl9wb2xpY3kuVjEudCA9XG4gICAgfCBOZXh0X2ZpdFxuICAgIHwgRmlyc3RfZml0XG4gICAgfCBCZXN0X2ZpdFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF9vZl1cblxuICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICB8IE5leHRfZml0IC0+IDBcbiAgICB8IEZpcnN0X2ZpdCAtPiAxXG4gICAgfCBCZXN0X2ZpdCAtPiAyXG4gIDs7XG5lbmRcblxubGV0IHR1bmVcbiAgICAgID9sb2dnZXJcbiAgICAgID9taW5vcl9oZWFwX3NpemVcbiAgICAgID9tYWpvcl9oZWFwX2luY3JlbWVudFxuICAgICAgP3NwYWNlX292ZXJoZWFkXG4gICAgICA/dmVyYm9zZVxuICAgICAgP21heF9vdmVyaGVhZFxuICAgICAgP3N0YWNrX2xpbWl0XG4gICAgICA/YWxsb2NhdGlvbl9wb2xpY3lcbiAgICAgID93aW5kb3dfc2l6ZVxuICAgICAgP2N1c3RvbV9tYWpvcl9yYXRpb1xuICAgICAgP2N1c3RvbV9taW5vcl9yYXRpb1xuICAgICAgP2N1c3RvbV9taW5vcl9tYXhfc2l6ZVxuICAgICAgKClcbiAgPVxuICBsZXQgb2xkX2NvbnRyb2xfcGFyYW1zID0gZ2V0ICgpIGluXG4gIGxldCBmIG9wdCB0b19zdHJpbmcgZmllbGQgPVxuICAgIGxldCBvbGRfdmFsdWUgPSBGaWVsZC5nZXQgZmllbGQgb2xkX2NvbnRyb2xfcGFyYW1zIGluXG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gb2xkX3ZhbHVlXG4gICAgfCBTb21lIG5ld192YWx1ZSAtPlxuICAgICAgT3B0aW9uLml0ZXIgbG9nZ2VyIH5mOihmdW4gZiAtPlxuICAgICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgICBmXG4gICAgICAgICAgXCJHYy5Db250cm9sLiVzOiAlcyAtPiAlc1wiXG4gICAgICAgICAgKEZpZWxkLm5hbWUgZmllbGQpXG4gICAgICAgICAgKHRvX3N0cmluZyBvbGRfdmFsdWUpXG4gICAgICAgICAgKHRvX3N0cmluZyBuZXdfdmFsdWUpKTtcbiAgICAgIG5ld192YWx1ZVxuICBpblxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPSBPcHRpb24ubWFwIGFsbG9jYXRpb25fcG9saWN5IH5mOkFsbG9jYXRpb25fcG9saWN5LnRvX2ludCBpblxuICBsZXQgbmV3X2NvbnRyb2xfcGFyYW1zID1cbiAgICBDb250cm9sLkZpZWxkcy5tYXBcbiAgICAgIH5taW5vcl9oZWFwX3NpemU6KGYgbWlub3JfaGVhcF9zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWFqb3JfaGVhcF9pbmNyZW1lbnQ6KGYgbWFqb3JfaGVhcF9pbmNyZW1lbnQgc3RyaW5nX29mX2ludClcbiAgICAgIH5zcGFjZV9vdmVyaGVhZDooZiBzcGFjZV9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnZlcmJvc2U6KGYgdmVyYm9zZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1heF9vdmVyaGVhZDooZiBtYXhfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH5zdGFja19saW1pdDooZiBzdGFja19saW1pdCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmFsbG9jYXRpb25fcG9saWN5OihmIGFsbG9jYXRpb25fcG9saWN5IHN0cmluZ19vZl9pbnQpXG4gICAgICB+d2luZG93X3NpemU6KGYgd2luZG93X3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWFqb3JfcmF0aW86KGYgY3VzdG9tX21ham9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX3JhdGlvOihmIGN1c3RvbV9taW5vcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9tYXhfc2l6ZTooZiBjdXN0b21fbWlub3JfbWF4X3NpemUgc3RyaW5nX29mX2ludClcbiAgaW5cbiAgc2V0IG5ld19jb250cm9sX3BhcmFtc1xuOztcblxubGV0IGRpc2FibGVfY29tcGFjdGlvbiA/bG9nZ2VyIH5hbGxvY2F0aW9uX3BvbGljeSAoKSA9XG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9XG4gICAgbWF0Y2ggYWxsb2NhdGlvbl9wb2xpY3kgd2l0aFxuICAgIHwgYERvbid0X2NoYW5nZSAtPiBOb25lXG4gICAgfCBgU2V0X3RvIHBvbGljeSAtPiBTb21lIHBvbGljeVxuICBpblxuICAoKiBUaGUgdmFsdWUgMV8wMDBfMDAwLCBhY2NvcmRpbmcgdG9cbiAgICAgaHR0cDovL2NhbWwuaW5yaWEuZnIvcHViL2RvY3MvbWFudWFsLW9jYW1sLTQuMDIvbGlicmVmL0djLmh0bWxcbiAgICAgd2lsbCBkaXNhYmxlIGNvbXBhY3Rpb25zLlxuICAqKVxuICB0dW5lID9sb2dnZXIgP2FsbG9jYXRpb25fcG9saWN5IH5tYXhfb3ZlcmhlYWQ6MV8wMDBfMDAwICgpXG47O1xuXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIG1ham9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3Jfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcHJvbW90ZWRfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19wcm9tb3RlZF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtaW5vcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29tcGFjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19jb21wYWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9wbHVzX21pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBhbGxvY2F0ZWRfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19hbGxvY2F0ZWRfd29yZHNcIlxuXG5sZXQgemVybyA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKGludF9vZl9zdHJpbmcgXCIwXCIpXG5cbigqIFRoZSBjb21waWxlciB3b24ndCBvcHRpbWl6ZSBpbnRfb2Zfc3RyaW5nIGF3YXkgc28gaXQgd29uJ3RcbiAgIHBlcmZvcm0gY29uc3RhbnQgZm9sZGluZyBiZWxvdy4gKilcbmxldCByZWMga2VlcF9hbGl2ZSBvID0gaWYgemVybyA8PiAwIHRoZW4ga2VlcF9hbGl2ZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvKVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IHByZXBhcmVfaGVhcF90b19jb3VudF9taW5vcl9hbGxvY2F0aW9uICgpID1cbiAgICAoKiBXZSBjYWxsIFttaW5vcl0gdG8gZW1wdHkgdGhlIG1pbm9yIGhlYXAsIHNvIHRoYXQgb3VyIGFsbG9jYXRpb24gaXMgdW5saWtlbHkgdG9cbiAgICAgICB0cmlnZ2VyIGEgbWlub3IgZ2MuICopXG4gICAgbWlub3IgKCk7XG4gICAgKCogV2UgYWxsb2NhdGUgdHdvIHdvcmRzIGluIGNhc2UgdGhlIFtHYy5taW5vcl0gZmluaXNoZXMgYSBtYWpvciBnYyBjeWNsZSwgaW4gd2hpY2hcbiAgICAgICBjYXNlIGl0IHJlcXVlc3RzIGEgbWlub3IgZ2MgdG8gb2NjdXIgYXQgdGhlIG5leHQgbWlub3IgYWxsb2NhdGlvbi4gIFdlIGRvbid0IHdhbnRcbiAgICAgICB0aGUgc3Vic2VxdWVudCBtaW5vciBhbGxvY2F0aW9uIHRvIHRyaWdnZXIgYSBtaW5vciBHQywgYmVjYXVzZSB0aGVyZSBpcyBhIGJ1Z1xuICAgICAgIChodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzc3OTgpIGluIHRoZSBPQ2FtbCBydW50aW1lIHRoYXQgZG91YmxlXG4gICAgICAgY291bnRzIFtHYy5taW5vcl93b3Jkc10gaW4gdGhhdCBjYXNlLiAqKVxuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAocmVmIChTeXMub3BhcXVlX2lkZW50aXR5IDEpKSA6IGludCByZWYpXG4gIDs7XG5cbiAgKCogV2UgZGlzYWJsZSBpbmxpbmluZyBmb3IgdGhpcyBmdW5jdGlvbiBzbyB0aGUgR0Mgc3RhdHMgYW5kIHRoZSBjYWxsIHRvIFtmXSBhcmUgbmV2ZXJcbiAgICAgcmVhcnJhbmdlZC4gKilcbiAgbGV0W0Bjb2xkXSBtZWFzdXJlX2ludGVybmFsIH5vbl9yZXN1bHQgZiA9XG4gICAgbGV0IG1pbm9yX3dvcmRzX2JlZm9yZSA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2JlZm9yZSA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgKCogV2Ugd3JhcCBbZiAoKV0gd2l0aCBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gdG8gcHJldmVudCB0aGUgcmV0dXJuIHZhbHVlIGZyb20gYmVpbmdcbiAgICAgICBvcHRpbWl6ZWQgYXdheS4gKilcbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKGYgKCkpIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FmdGVyID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWZ0ZXIgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPSBtYWpvcl93b3Jkc19hZnRlciAtIG1ham9yX3dvcmRzX2JlZm9yZSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPSBtaW5vcl93b3Jkc19hZnRlciAtIG1pbm9yX3dvcmRzX2JlZm9yZSBpblxuICAgIG9uX3Jlc3VsdCB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeFxuICA7O1xuXG4gIGxldCBpc196ZXJvX2FsbG9jICh0eXBlIGEpIChmIDogdW5pdCAtPiBhKSA9XG4gICAgKCogSW5zdGVhZCBvZiB1c2luZyBbQWxsb2NhdGlvbl9yZXBvcnQubWVhc3VyZV0sIGFuZCBtYXRjaGluZyBvbiB0aGUgcmVzdWx0LCB3ZSB1c2VcbiAgICAgICB0aGlzIGNvbnN0cnVjdGlvbiwgaW4gb3JkZXIgdG8gaGF2ZSBbaXNfemVyb19hbGxvY10gbm90IGFsbG9jYXRlIGl0c2VsZi4gVGhpc1xuICAgICAgIGVuYWJsZXMgW2lzX3plcm9fYWxsb2NdIHRvIGJlIHVzZWQgaW4gYSBuZXN0ZWQgd2F5LlxuXG4gICAgICAgVGhpcyBhbHNvIG1lYW5zIHdlIGNhbm5vdCBjYWxsIFtwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWxsb2NhdGlvbl0uIFRoaXMgaXNcbiAgICAgICBva2F5LCBzaW5jZSB3ZSBkbyBub3QgbmVlZCBhIHByZWNpc2UgY291bnQsIHdlIG9ubHkgbmVlZCB0byBjaGVjayBpZiB0aGUgY291bnQgaXNcbiAgICAgICB6ZXJvIG9yIG5vdC4gKilcbiAgICBtZWFzdXJlX2ludGVybmFsXG4gICAgICBmXG4gICAgICB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHZhbHVlIC0+XG4gICAgICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2YWx1ZSA6IGEpO1xuICAgICAgICBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPT0gMCAmJiBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPT0gMClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9yZXBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgfVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZWFzdXJlX2FsbG9jYXRpb24gZiA9XG4gICAgcHJlcGFyZV9oZWFwX3RvX2NvdW50X21pbm9yX2FsbG9jYXRpb24gKCk7XG4gICAgbWVhc3VyZV9pbnRlcm5hbCBmIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeCAtPlxuICAgICAgeCwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9sb2cgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzaXplX2luX3dvcmRzIDogaW50XG4gICAgICA7IGlzX21ham9yIDogYm9vbFxuICAgICAgOyBiYWNrdHJhY2UgOiBzdHJpbmdcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMSwgMCldXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCBsb2cgOiBBbGxvY2F0aW9uX2xvZy50IGxpc3QgcmVmID0gcmVmIFtdXG4gICAgYW5kIG1ham9yX2FsbG9jcyA9IHJlZiAwXG4gICAgYW5kIG1pbm9yX2FsbG9jcyA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2FsbG9jIH5pc19tYWpvciAoaW5mbyA6IENhbWwuR2MuTWVtcHJvZi5hbGxvY2F0aW9uKSA9XG4gICAgICBpZiBpc19tYWpvclxuICAgICAgdGhlbiBtYWpvcl9hbGxvY3MgOj0gIW1ham9yX2FsbG9jcyArIGluZm8ubl9zYW1wbGVzXG4gICAgICBlbHNlIG1pbm9yX2FsbG9jcyA6PSAhbWlub3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXM7XG4gICAgICBsZXQgYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyBpbmZvLmNhbGxzdGFjayBpblxuICAgICAgKCogTWFrZSBiYWNrdHJhY2VzIGVhc2llciB0byByZWFkIGJ5IGRlbGV0aW5nIGV2ZXJ5dGhpbmcgYmVsb3cgdGhpcyBmdW5jdGlvbiAqKVxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zdWJzdHJfaW5kZXggYmFja3RyYWNlIH5wYXR0ZXJuOlwibWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb25cIiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBwb3NzaWJsZTogd2UgbWF5IGhhdmUgbG9nZ2VkIGFsbG9jYXRpb25zIGluIGFub3RoZXIgdGhyZWFkICopXG4gICAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICAgU3RyaW5nLnN1YiB+cG9zOjAgfmxlbjpwIGJhY2t0cmFjZVxuICAgICAgICAgIHw+IFN0cmluZy5yc3RyaXAgfmRyb3A6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8ICdcXG4nIC0+IGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgaW5mbyA6IEFsbG9jYXRpb25fbG9nLnQgPVxuICAgICAgICB7IHNpemVfaW5fd29yZHMgPSBpbmZvLm5fc2FtcGxlczsgaXNfbWFqb3I7IGJhY2t0cmFjZSB9XG4gICAgICBpblxuICAgICAgbG9nIDo9IGluZm8gOjogIWxvZztcbiAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCB0cmFja2VyID1cbiAgICAgIHsgQ2FtbC5HYy5NZW1wcm9mLm51bGxfdHJhY2tlciB3aXRoXG4gICAgICAgIGFsbG9jX21pbm9yID0gb25fYWxsb2MgfmlzX21ham9yOmZhbHNlXG4gICAgICA7IGFsbG9jX21ham9yID0gb25fYWxsb2MgfmlzX21ham9yOnRydWVcbiAgICAgIH1cbiAgICBpblxuICAgIENhbWwuR2MuTWVtcHJvZi5zdGFydCB+c2FtcGxpbmdfcmF0ZToxLjAgdHJhY2tlcjtcbiAgICAoKiBFeG4ucHJvdGVjdCwgbWFudWFsbHkgaW5saW5lZCB0byBndWFyYW50ZWUgbm8gYWxsb2NhdGlvbnMgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgICAgfCB4IC0+XG4gICAgICAgICgqIE1lbXByb2Yuc3RvcCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCBhbGwgbWVtcHJvZiBjYWxsYmFja3MgYXJlIHJ1biAoc29tZSBtYXkgYmVcbiAgICAgICAgICAgZGVsYXllZCBpZiB0aGV5IGhhcHBlbmVkIGR1cmluZyBDIGNvZGUgYW5kIHRoZXJlIGhhcyBiZWVuIG5vIGFsbG9jYXRpb24gc2luY2UpLFxuICAgICAgICAgICBzbyB3ZSBleHBsaWN0bHkgZmx1c2ggdGhlbSAqKVxuICAgICAgICBDYW1sLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgeFxuICAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBDYW1sLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgKCByZXN1bHRcbiAgICAsIEFsbG9jYXRpb25fcmVwb3J0LmNyZWF0ZVxuICAgICAgICB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkOiFtYWpvcl9hbGxvY3NcbiAgICAgICAgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZDohbWlub3JfYWxsb2NzXG4gICAgLCBMaXN0LnJldiAhbG9nIClcbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvbiBmID1cbiAgICBsZXQgeCwgcmVwb3J0ID0gbWVhc3VyZV9hbGxvY2F0aW9uIGYgaW5cbiAgICB4LCByZXBvcnQsIFtdXG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgYWRkX2ZpbmFsaXplciB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXIgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgKCogW2FkZF9maW5hbGl6ZXJfZXhuXSBpcyB0aGUgc2FtZSBhcyBbYWRkX2ZpbmFsaXplcl0uICBIb3dldmVyLCB0aGVpciB0eXBlcyBpblxuICAgICBjb3JlX2djLm1saSBhcmUgZGlmZmVyZW50LCBhbmQgdGhlIHR5cGUgb2YgW2FkZF9maW5hbGl6ZXJdIGd1YXJhbnRlZXMgdGhhdCBpdCBhbHdheXNcbiAgICAgcmVjZWl2ZXMgYSBoZWFwIGJsb2NrLCB3aGljaCBlbnN1cmVzIHRoYXQgaXQgd2lsbCBub3QgcmFpc2UsIHdoaWxlXG4gICAgIFthZGRfZmluYWxpemVyX2V4bl0gYWNjZXB0cyBhbnkgdHlwZSwgYW5kIHNvIG1heSByYWlzZS4gKilcbiAgbGV0IGFkZF9maW5hbGl6ZXJfZXhuIHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdCB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAoKiBUaGUgdHlwZSBvZiBhZGRfZmluYWxpemVyX2xhc3QgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4geCBmID1cbiAgICB0cnkgQ2FtbC5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplX3JlbGVhc2UgPSBDYW1sLkdjLmZpbmFsaXNlX3JlbGVhc2VcblxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBhbGFybVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfID0gXCI8Z2MgYWxhcm0+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgbGV0IGNyZWF0ZSBmID0gY3JlYXRlX2FsYXJtIChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKVxuICAgIGxldCBkZWxldGUgPSBkZWxldGVfYWxhcm1cbiAgZW5kXG5lbmRcbiIsIm9wZW4gU3RhYmxlX21vZHVsZV90eXBlc1xubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGUuU3RhYmxlXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5RdWV1ZVxuXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgYSA9XG4gICAgICAgIGxldCByID0gY3JlYXRlICgpIGluXG4gICAgICAgICgqIFdlIGVucXVldWUgZXZlcnl0aGluZyB0d2ljZSwgYW5kIGRlcXVldWUgaXQgb25jZSB0byBlbnN1cmU6XG4gICAgICAgICAgIC0gdGhhdCB0aGUgcXVldWUgaGFzIHRoZSBzYW1lIGNvbnRlbnQgYXMgdGhlIGFycmF5LlxuICAgICAgICAgICAtIHRoYXQgaXQgaGFzLCBpbiBtb3N0IGNhc2VzLCBhbiBpbnRlcmVzdGluZyBpbnRlcm5hbCBzdHJ1Y3R1cmUqKVxuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBpZ25vcmUgKGRlcXVldWVfZXhuIHIgOiBib29sKTtcbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgclxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgU2VyaWFsaXphdGlvbl92MSA9IHN0cnVjdFxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI0Yzg0MjU0LTQ5OTItMTFlNi05YmE3LTczNGUxNTQwMjdiZFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5RdWV1ZVwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPSBpbml0IGxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSlcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgU2VyaWFsaXphdGlvbl92MVxuXG4gICAgKCogV2UgZG9uJ3QgaGF2ZSBhIFslYmluX2RpZ2VzdF0gZXhwZWN0IHRlc3QgaGVyZSBiZWNhdXNlIHRoZSBiaW5faW8gaXMgbW9zdGx5IGhhbmRcbiAgICAgICB3cml0dGVuLCBhbmQgW2NvcmVfcXVldWVfdW5pdF90ZXN0cy5tbF0gaGFzIHVuaXQgdGVzdHMgZm9yIHNwZWNpZmljIHZhbHVlcy4gKilcblxuICAgIGxldCBtYXAgPSBtYXBcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBVbml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0Lk1ha2VcblxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aG91dF9jb21wYXJhdG9yID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSB0eXBlIFN0YWJsZTEgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlMyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTQgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlM0XG5cbm1vZHVsZSBNYWtlX3N0YWJsZSA9IE1ha2Vfc3RhYmxlXG5pbmNsdWRlIFN0YWJsZV9pbnRlcm5hbFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGUuU3RhYmxlXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nLlN0YWJsZVxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmcuU3RhYmxlXG5tb2R1bGUgQm9vbCA9IEJvb2wuU3RhYmxlXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHMuU3RhYmxlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlcy5TdGFibGVcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZS5TdGFibGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrLlN0YWJsZVxubW9kdWxlIE1kNSA9IE1kNS5TdGFibGVcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIuU3RhYmxlXG5tb2R1bGUgRXJyb3IgPSBFcnJvci5TdGFibGVcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWUuU3RhYmxlXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZS5TdGFibGVcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24uU3RhYmxlXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlLlN0YWJsZVxubW9kdWxlIEdjID0gR2MuU3RhYmxlXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnQuU3RhYmxlXG5tb2R1bGUgSW5mbyA9IEluZm8uU3RhYmxlXG5tb2R1bGUgSW50ID0gSW50LlN0YWJsZVxubW9kdWxlIEludDYzID0gSW50NjMuU3RhYmxlXG5tb2R1bGUgTGF6eSA9IExhenkuU3RhYmxlXG5tb2R1bGUgTGlzdCA9IExpc3QuU3RhYmxlXG5tb2R1bGUgTWFwID0gTWFwLlN0YWJsZVxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmQuU3RhYmxlXG5tb2R1bGUgTW9udGggPSBNb250aC5TdGFibGVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZy5TdGFibGVcbm1vZHVsZSBPcHRpb24gPSBPcHRpb24uU3RhYmxlXG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvci5TdGFibGVcbm1vZHVsZSBQZXJjZW50ID0gUGVyY2VudC5TdGFibGVcbm1vZHVsZSBQZXJtcyA9IFBlcm1zLlN0YWJsZVxubW9kdWxlIFBpZCA9IFBpZC5TdGFibGVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlLlN0YWJsZVxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdC5TdGFibGVcbm1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlXG5tb2R1bGUgU2V4cCA9IFNleHAuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZVxubW9kdWxlIFN0cmluZyA9IFN0cmluZy5TdGFibGVcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWQuU3RhYmxlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnMuU3RhYmxlXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXQuU3RhYmxlXG5tb2R1bGUgVW5pdCA9IFVuaXQuU3RhYmxlXG5tb2R1bGUgVW5peCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NvcmVfdW5peC5TdGFibGVdXCJdXG5pbmNsdWRlIFBlcm1zLkV4cG9ydFxuXG5pbmNsdWRlIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIEltcG9ydC5Ob3RfZm91bmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbiAgSW50IDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG5cbmxldCBvZl9jYW1sX2ludCB0ID0gdFxubGV0IHRvX2NhbWxfaW50IHQgPSB0XG5cbnR5cGUgc3lzX2JlaGF2aW9yID1cbiAgWyBgQ29udGludWUgKCoqIENvbnRpbnVlIHRoZSBwcm9jZXNzIGlmIGl0IGlzIGN1cnJlbnRseSBzdG9wcGVkICopXG4gIHwgYER1bXBfY29yZSAoKiogVGVybWluYXRlIHRoZSBwcm9jZXNzIGFuZCBkdW1wIGNvcmUgKilcbiAgfCBgSWdub3JlICgqKiBJZ25vcmUgdGhlIHNpZ25hbCAqKVxuICB8IGBTdG9wICgqKiBTdG9wIHRoZSBwcm9jZXNzICopXG4gIHwgYFRlcm1pbmF0ZSAoKiogVGVybWluYXRlIHRoZSBwcm9jZXNzICopXG4gIF1cbltAQGRlcml2aW5nIHNleHBdXG5cbmxldCBlcXVhbCAodCA6IHQpIHQnID0gdCA9IHQnXG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFBsZWFzZSBrZWVwIGluIHN5bmMgd2l0aCB0aGUgbGlzdCBmb3IgdG9fc3RyaW5nL3N5c19iZWhhdmlvciAqKVxuICBvcGVuIENhbWwuU3lzXG5cbiAgbGV0IGFicnQgPSBzaWdhYnJ0XG4gIGxldCBhbHJtID0gc2lnYWxybVxuICBsZXQgYnVzID0gc2lnYnVzXG4gIGxldCBjaGxkID0gc2lnY2hsZFxuICBsZXQgY29udCA9IHNpZ2NvbnRcbiAgbGV0IGZwZSA9IHNpZ2ZwZVxuICBsZXQgaHVwID0gc2lnaHVwXG4gIGxldCBpbGwgPSBzaWdpbGxcbiAgbGV0IGludCA9IHNpZ2ludFxuICBsZXQga2lsbCA9IHNpZ2tpbGxcbiAgbGV0IHBpcGUgPSBzaWdwaXBlXG4gIGxldCBwb2xsID0gc2lncG9sbFxuICBsZXQgcHJvZiA9IHNpZ3Byb2ZcbiAgbGV0IHF1aXQgPSBzaWdxdWl0XG4gIGxldCBzZWd2ID0gc2lnc2VndlxuICBsZXQgc3RvcCA9IHNpZ3N0b3BcbiAgbGV0IHN5cyA9IHNpZ3N5c1xuICBsZXQgdGVybSA9IHNpZ3Rlcm1cbiAgbGV0IHRyYXAgPSBzaWd0cmFwXG4gIGxldCB0c3RwID0gc2lndHN0cFxuICBsZXQgdHRpbiA9IHNpZ3R0aW5cbiAgbGV0IHR0b3UgPSBzaWd0dG91XG4gIGxldCB1cmcgPSBzaWd1cmdcbiAgbGV0IHVzcjEgPSBzaWd1c3IxXG4gIGxldCB1c3IyID0gc2lndXNyMlxuICBsZXQgdnRhbHJtID0gc2lndnRhbHJtXG4gIGxldCB4Y3B1ID0gc2lneGNwdVxuICBsZXQgeGZzeiA9IHNpZ3hmc3pcbiAgbGV0IHplcm8gPSAwXG5lbmRcblxuZXhjZXB0aW9uIEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3IgPVxuICBsZXQga25vd24gPVxuICAgIFtcbiAgICAgIFwic2lnYWJydFwiLCBhYnJ0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2Fscm1cIiwgYWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdidXNcIiwgYnVzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ2NobGRcIiwgY2hsZCwgYElnbm9yZSwgMVxuICAgIDsgXCJzaWdjb250XCIsIGNvbnQsIGBDb250aW51ZSwgMVxuICAgIDsgXCJzaWdmcGVcIiwgZnBlLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2h1cFwiLCBodXAsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnaWxsXCIsIGlsbCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdpbnRcIiwgaW50LCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2tpbGxcIiwga2lsbCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwaXBlXCIsIHBpcGUsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncG9sbFwiLCBwb2xsLCBgVGVybWluYXRlLCAyXG4gICAgOyBcInNpZ3Byb2ZcIiwgcHJvZiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdxdWl0XCIsIHF1aXQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc2VndlwiLCBzZWd2LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3N0b3BcIiwgc3RvcCwgYFN0b3AsIDFcbiAgICA7IFwic2lnc3lzXCIsIHN5cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0ZXJtXCIsIHRlcm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndHJhcFwiLCB0cmFwLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3RzdHBcIiwgdHN0cCwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRpblwiLCB0dGluLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dG91XCIsIHR0b3UsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3VyZ1wiLCB1cmcsIGBJZ25vcmUsIDJcbiAgICA7IFwic2lndXNyMVwiLCB1c3IxLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3VzcjJcIiwgdXNyMiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd2dGFscm1cIiwgdnRhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3hjcHVcIiwgeGNwdSwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd4ZnN6XCIsIHhmc3osIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnemVyb1wiLCB6ZXJvLCBgSWdub3JlLCAxXG4gICAgXVxuICBpblxuICBsZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCB0X2J5X25hbWUgPSBTdHJpbmcuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IGJlaGF2aW9yX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgTGlzdC5pdGVyIGtub3duIH5mOihmdW4gKG5hbWUsIHQsIGJlaGF2aW9yLCBzdGFibGVfdmVyc2lvbikgLT5cbiAgICBIYXNodGJsLnNldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgfmtleTp0IH5kYXRhOihuYW1lLCBzdGFibGVfdmVyc2lvbik7XG4gICAgSGFzaHRibC5zZXQgdF9ieV9uYW1lIH5rZXk6bmFtZSB+ZGF0YTp0O1xuICAgIEhhc2h0Ymwuc2V0IGJlaGF2aW9yX2J5X3QgfmtleTp0IH5kYXRhOmJlaGF2aW9yKTtcbiAgKCogRm9yIHVua25vd24gc2lnbmFsIG51bWJlcnMsIFt0b19zdHJpbmddIHJldHVybnMgYSBtZWFuaW5nZnVsXG4gICAgIHN0cmluZywgd2hpbGUgW2RlZmF1bHRfc3lzX2JlaGF2aW9yXSBoYXMgdG8gcmFpc2UgYW4gZXhjZXB0aW9uXG4gICAgIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSByaWdodCBhbnN3ZXIgaXMuICopXG4gIGxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246cmVxdWVzdGVkX3ZlcnNpb24gPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgdCB3aXRoXG4gICAgfCBTb21lIChzdHJpbmcsIG5lZWRlZF92ZXJzaW9uKSB3aGVuIHJlcXVlc3RlZF92ZXJzaW9uID49IG5lZWRlZF92ZXJzaW9uIC0+IHN0cmluZ1xuICAgIHwgXyAtPiBcIjx1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCBeIFwiPlwiXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubG93ZXJjYXNlIChTdHJpbmcuc3RyaXAgcykgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdF9ieV9uYW1lIHMgd2l0aFxuICAgIHwgU29tZSBzbiAtPiBzblxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCI8dW5rbm93biBzaWduYWwgXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyAoU3RyaW5nLnNsaWNlIHMgMTYgfi0xKSB3aXRoXG4gICAgICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpKVxuICAgICAgZWxzZSByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpXG4gIGluXG4gIGxldCBkZWZhdWx0X3N5c19iZWhhdmlvciB0ID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgYmVoYXZpb3JfYnlfdCB0IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChJbnZhbGlkX2FyZ3VtZW50XG4gICAgICAgICAgIChcIlNpZ25hbC5kZWZhdWx0X3N5c19iZWhhdmlvcjogdW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQpKVxuICAgIHwgU29tZSBiZWhhdmlvciAtPiBiZWhhdmlvclxuICBpblxuICB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yXG47O1xuXG5leGNlcHRpb24gRXhwZWN0ZWRfYXRvbSBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uKVxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiBzIH52ZXJzaW9uOjJcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoxXG5cbmxldCB0X29mX3NleHAgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gIHwgXyAtPiByYWlzZSAoRXhwZWN0ZWRfYXRvbSBzKVxuOztcblxudHlwZSBwaWRfc3BlYyA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG50eXBlIHNpZ3Byb2NtYXNrX2NvbW1hbmQgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxuXG5sZXQgY2FuX3NlbmRfdG8gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgb2Zfc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfZXhuID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfaSA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZXhwX29mX3BpZF9zcGVjID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3BlbmRpbmcgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncHJvY21hc2sgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lnc3VzcGVuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCB0b19zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIHR5cGUgYmVoYXZpb3IgPVxuICAgIFsgYERlZmF1bHRcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBIYW5kbGUgb2YgdCAtPiB1bml0XG4gICAgXVxuXG4gIG1vZHVsZSBCZWhhdmlvciA9IHN0cnVjdFxuICAgIGxldCBvZl9jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgQ2FtbC5TeXMuU2lnbmFsX2RlZmF1bHQgLT4gYERlZmF1bHRcbiAgICAgIHwgU2lnbmFsX2lnbm9yZSAtPiBgSWdub3JlXG4gICAgICB8IFNpZ25hbF9oYW5kbGUgZiAtPiBgSGFuZGxlIGZcbiAgICA7O1xuXG4gICAgbGV0IHRvX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBgRGVmYXVsdCAtPiBDYW1sLlN5cy5TaWduYWxfZGVmYXVsdFxuICAgICAgfCBgSWdub3JlIC0+IFNpZ25hbF9pZ25vcmVcbiAgICAgIHwgYEhhbmRsZSBmIC0+IFNpZ25hbF9oYW5kbGUgKGZ1biB0IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaWduYWwgdCBiZWhhdmlvciA9IEJlaGF2aW9yLm9mX2NhbWwgKENhbWwuU3lzLnNpZ25hbCB0IChCZWhhdmlvci50b19jYW1sIGJlaGF2aW9yKSlcbiAgbGV0IHNldCB0IGJlaGF2aW9yID0gaWdub3JlIChzaWduYWwgdCBiZWhhdmlvciA6IGJlaGF2aW9yKVxuICBsZXQgaGFuZGxlIHQgZiA9IHNldCB0IChgSGFuZGxlIGYpXG5lbmRcblxub3BlbiBFeHBlcnRcblxubGV0IGhhbmRsZV9kZWZhdWx0IHQgPSBzZXQgdCBgRGVmYXVsdFxubGV0IGlnbm9yZSB0ID0gc2V0IHQgYElnbm9yZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MlxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjFcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ25fb3JfbmFuID0gQmFzZS5TaWduX29yX25hblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNpZ25fb3JfbmFuLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICAgIHwgTmFuXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBlbnVtZXJhdGVdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFNpZ25fb3JfbmFuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKFNpZ25fb3JfbmFuKSAoU3RhYmxlLlYxKVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCB0b19zdHJpbmcgXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5fdG9fc3RyaW5nX2luc3RlYWRcbmxldCBwcmludCBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IGNhdGNoIF8gXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5faGFuZGxlX3VuY2F1Z2h0X2luc3RlYWRcbmxldCBwcmludF9iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnByaW50X2JhY2t0cmFjZVxubGV0IGdldF9iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLmdldF9iYWNrdHJhY2VcbmxldCByZWNvcmRfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG5sZXQgYmFja3RyYWNlX3N0YXR1cyA9IENhbWwuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3B0aW9uX2FycmF5XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb24gYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5MYXp5fVtCYXNlLkxhenldfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIEJhc2UuTGF6eS50XG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBCYXNlLkxhenkgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCAoKiogQGlubGluZSAqKVxuXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIGNvbXBhcmUgPVxuICBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuXG5sZXQgY29tcGFyZSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPCApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID49ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IGVxdWFsIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgbWluIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgbWF4IF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgKCdhLCAnYikgZm4gPSAnYSAtPiAnYlxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSdmFsIG9mICdhXG4gICAgfCBFeHB0IG9mIGV4blxuXG4gIGxldCByZXR1cm4gPSBmdW5jdGlvblxuICAgIHwgUnZhbCB2IC0+IHZcbiAgICB8IEV4cHQgZSAtPiByYWlzZSBlXG4gIDs7XG5cbiAgbGV0IGNhcHR1cmUgZiB4ID1cbiAgICB0cnkgUnZhbCAoZiB4KSB3aXRoXG4gICAgfCBDYW1sLlN5cy5CcmVhayBhcyBlIC0+IHJhaXNlIGVcbiAgICB8IGUgLT4gRXhwdCBlXG4gIDs7XG5lbmRcblxubGV0IHVuaXQgZiA9XG4gIGxldCBsID0gTGF6eS5mcm9tX2Z1biBmIGluXG4gIGZ1biAoKSAtPiBMYXp5LmZvcmNlIGxcbjs7XG5cbmxldCB1bmJvdW5kZWQgKHR5cGUgYSkgPyhoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUucG9seSkgZiA9XG4gIGxldCBjYWNoZSA9XG4gICAgbGV0IG1vZHVsZSBBID1cbiAgICAgIEhhc2hhYmxlLk1ha2VfcGxhaW5fYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICAgIGVuZClcbiAgICBpblxuICAgIEEuVGFibGUuY3JlYXRlICgpIH5zaXplOjBcbiAgaW5cbiAgKCogQWxsb2NhdGUgdGhpcyBjbG9zdXJlIGF0IHRoZSBjYWxsIHRvIFt1bmJvdW5kZWRdLCBub3QgYXQgZWFjaCBjYWxsIHRvIHRoZSBtZW1vaXplZFxuICAgICBmdW5jdGlvbi4gKilcbiAgbGV0IHJlYWxseV9jYWxsX2YgYXJnID0gUmVzdWx0LmNhcHR1cmUgZiBhcmcgaW5cbiAgZnVuIGFyZyAtPiBSZXN1bHQucmV0dXJuIChIYXNodGJsLmZpbmRpX29yX2FkZCBjYWNoZSBhcmcgfmRlZmF1bHQ6cmVhbGx5X2NhbGxfZilcbjs7XG5cbigqIHRoZSBzYW1lIGJ1dCB3aXRoIGEgYm91bmQgb24gY2FjaGUgc2l6ZSAqKVxubGV0IGxydSAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSB+bWF4X2NhY2hlX3NpemUgZiA9XG4gIGlmIG1heF9jYWNoZV9zaXplIDw9IDBcbiAgdGhlbiBmYWlsd2l0aGYgXCJNZW1vLmxydTogbWF4X2NhY2hlX3NpemUgb2YgJWkgPD0gMFwiIG1heF9jYWNoZV9zaXplICgpO1xuICBsZXQgbW9kdWxlIENhY2hlID1cbiAgICBIYXNoX3F1ZXVlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICBlbmQpXG4gIGluXG4gIGxldCBjYWNoZSA9IENhY2hlLmNyZWF0ZSAoKSBpblxuICBmdW4gYXJnIC0+XG4gICAgUmVzdWx0LnJldHVyblxuICAgICAgKG1hdGNoIENhY2hlLmxvb2t1cF9hbmRfbW92ZV90b19iYWNrIGNhY2hlIGFyZyB3aXRoXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCByZXN1bHQgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICAgICAgICAgQ2FjaGUuZW5xdWV1ZV9iYWNrX2V4biBjYWNoZSBhcmcgcmVzdWx0O1xuICAgICAgICAgKCogZWplY3QgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeSAqKVxuICAgICAgICAgaWYgQ2FjaGUubGVuZ3RoIGNhY2hlID4gbWF4X2NhY2hlX3NpemVcbiAgICAgICAgIHRoZW4gaWdub3JlIChDYWNoZS5kZXF1ZXVlX2Zyb250X2V4biBjYWNoZSA6IF8gUmVzdWx0LnQpO1xuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IGdlbmVyYWwgP2hhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGYgPVxuICBtYXRjaCBjYWNoZV9zaXplX2JvdW5kIHdpdGhcbiAgfCBOb25lIC0+IHVuYm91bmRlZCA/aGFzaGFibGUgZlxuICB8IFNvbWUgbiAtPiBscnUgP2hhc2hhYmxlIH5tYXhfY2FjaGVfc2l6ZTpuIGZcbjs7XG5cbigqIFdlIGV4cGVjdCBbZl9vbmVzdGVwXSB0byBiZSBhIG9uZS1zdGVwIHVucm9sbGVkIHJlY3Vyc2l2ZSBmdW5jdGlvbjsgc2VlIHRoZSBtbGkuIEhlbmNlLFxuICAgaGVyZSB3ZSBjcmVhdGUgdGhlIG1lbW9pemVkIGZ1bmN0aW9uIF9hbmRfIHBhc3MgaXQgdG8gW2Zfb25lc3RlcF0gdG8gYmUgdXNlZCBmb3JcbiAgIHJlY3Vyc2l2ZSBjYWxscy5cblxuICAgTm90ZSB0aGF0IHdlIGltbWVkaWF0ZWx5IGFwcGx5IFtmX29uZXN0ZXBdIHRvIGl0cyBmaXJzdCBhcmd1bWVudCBoZXJlIHNvIHRoYXQgYW55XG4gICBwcmVjb21wdXRhdGlvbiBpcyBwZXJmb3JtZWQgd2hlbiB0aGUgdXNlciBjYWxscyBbcmVjdXJzaXZlXS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaWYgc29tZW9uZSB3cml0ZXMgdGhpcyBub24tbWVtb2l6ZWQgY29kZTpcblxuICAgWyBsZXQgcmVjIGYgPSBsZXQgZGF0YSA9IGNvbXB1dGVfd2l0aG91dF91c2luZ19mICgpIGluIGZ1biB4IC0+IC4uLiBmIC4uLiBdXG5cbiAgIGFuZCBjb252ZXJ0cyB0byBtZW1vaXphdGlvbiBieSBkb2luZzpcblxuICAge1tcbiAgICAgbGV0IGYgPVxuICAgICAgIGxldCBmX29uZXN0ZXAgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIGluXG4gICAgICAgcmVjdXJzaXZlIGZfb25lc3RlcFxuICAgXX1cblxuICAgd2Ugd2FudCB0byBjb21wdXRlIFtkYXRhXSBpbW1lZGlhdGVseS4gSWYgd2UgaGFkIFtmdW4geCAtPiBmX29uZXN0ZXAgKGZvcmNlIG1lbW9pemVkKVxuICAgeF0gYmVsb3csIHdlJ2QgcmVjb21wdXRlIFtkYXRhXSBlYWNoIHRpbWUgdGhlIHVzZXIgY2FsbHMgW2ZdIG9uIGFuIGFyZ3VtZW50IHRoYXQgaGFkbid0XG4gICB5ZXQgYmVlbiBtZW1vaXplZC4gKilcbmxldCByZWN1cnNpdmUgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGZfb25lc3RlcCA9XG4gIGxldCByZWMgbWVtb2l6ZWQgPVxuICAgIGxhenkgKGdlbmVyYWwgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIChmX29uZXN0ZXAgKGZ1biB4IC0+IChmb3JjZSBtZW1vaXplZCkgeCkpKVxuICBpblxuICBmb3JjZSBtZW1vaXplZFxuOztcblxubGV0IG9mX2NvbXBhcmFibGUgKHR5cGUgaW5kZXgpIChtb2R1bGUgTSA6IENvbXBhcmFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGluZGV4KSBmID1cbiAgbGV0IG0gPSByZWYgTS5NYXAuZW1wdHkgaW5cbiAgZnVuICh4IDogTS50KSAtPlxuICAgIGxldCB2ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kICFtIHggd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCB2ID0gUmVzdWx0LmNhcHR1cmUgZiB4IGluXG4gICAgICAgIG0gOj0gTWFwLnNldCAhbSB+a2V5OnggfmRhdGE6djtcbiAgICAgICAgdlxuICAgIGluXG4gICAgUmVzdWx0LnJldHVybiB2XG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUXVldWUgPSBCYXNlLkxpbmtlZF9xdWV1ZVxuaW5jbHVkZSBRdWV1ZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFF1ZXVlLnRcbiAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgwMGRmOWEwLTQ5OTItMTFlNi04ODFkLWZmZTFhNWM4YWNlZFwiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkxpbmtlZF9xdWV1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgKCogQmluX3Byb3QgcmVhZHMgdGhlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2VyZSB3cml0dGVuIG91dCwgYXMgZGV0ZXJtaW5lZFxuICAgICAgIGJ5IFtpdGVyXS4gIFNvLCB3ZSBjYW4gaWdub3JlIHRoZSBpbmRleCBhbmQganVzdCBlbnF1ZXVlIGVhY2ggZWxlbWVudCBhcyBpdCBpcyByZWFkXG4gICAgICAgaW4uICopXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICBlbnF1ZXVlIHQgKG5leHQgKCkpXG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEZXJpdmluZ19oYXNoX2ludGZcblxubW9kdWxlIE9mX2Rlcml2aW5nX2hhc2hcbiAgICAoUmVwciA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmVwci5oYXNoX2ZvbGRfdCBzdGF0ZSAoTS50b19yZXByIHQpXG4gIGxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICdhIHQgPVxuICB7ICgqIFthcnJdIGlzIGEgY3ljbGljIGJ1ZmZlciAqKVxuICAgIG11dGFibGUgYXJyIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbZnJvbnRfaW5kZXhdIGFuZCBbYmFja19pbmRleF0gYXJlIHRoZSBwb3NpdGlvbnMgaW4gd2hpY2ggbmV3IGVsZW1lbnRzIG1heSBiZVxuICAgICAgIGVucXVldWVkLiAgVGhpcyBtYWtlcyB0aGUgYWN0aXZlIHBhcnQgb2YgW2Fycl0gdGhlIHJhbmdlIGZyb20gW2Zyb250X2luZGV4KzFdIHRvXG4gICAgICAgW2JhY2tfaW5kZXgtMV0gKG1vZHVsbyB0aGUgbGVuZ3RoIG9mIFthcnJdIGFuZCB3cmFwcGluZyBhcm91bmQgaWYgbmVjZXNzYXJ5KS4gIE5vdGVcbiAgICAgICB0aGF0IHRoaXMgbWVhbnMgdGhlIGFjdGl2ZSByYW5nZSBpcyBtYXhpbWl6ZWQgd2hlbiBbZnJvbnRfaW5kZXggPSBiYWNrX2luZGV4XSwgd2hpY2hcbiAgICAgICBvY2N1cnMgd2hlbiB0aGVyZSBhcmUgW0FycmF5Lmxlbmd0aCBhcnIgLSAxXSBhY3RpdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBmcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgYmFja19pbmRleCA6IGludFxuICA7ICgqIGFwcGFyZW50X2Zyb250X2luZGV4IGlzIHdoYXQgaXMgZXhwb3NlZCBhcyB0aGUgZnJvbnQgaW5kZXggZXh0ZXJuYWxseS4gIEl0IGhhcyBub1xuICAgICAgIHJlYWwgcmVsYXRpb24gdG8gdGhlIGFycmF5IC0tIGV2ZXJ5IGVucXVldWUgdG8gdGhlIGZyb250IGRlY3JlbWVudHMgaXQgYW5kIGV2ZXJ5XG4gICAgICAgZGVxdWV1ZSBmcm9tIHRoZSBmcm9udCBpbmNyZW1lbnRzIGl0LiAqKVxuICAgIG11dGFibGUgYXBwYXJlbnRfZnJvbnRfaW5kZXggOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7ICgqIFdlIGtlZXAgYXJyX2xlbmd0aCBoZXJlIGFzIGEgc3BlZWQgaGFjay4gIENhbGxpbmcgQXJyYXkubGVuZ3RoIG9uIGFyciBpcyBhY3R1YWxseVxuICAgICAgIG1lYW5pbmdmdWxseSBzbG93ZXIuICopXG4gICAgbXV0YWJsZSBhcnJfbGVuZ3RoIDogaW50XG4gIDsgbmV2ZXJfc2hyaW5rIDogYm9vbFxuICB9XG5cbmxldCBjcmVhdGUgP2luaXRpYWxfbGVuZ3RoID9uZXZlcl9zaHJpbmsgKCkgPVxuICBsZXQgbmV2ZXJfc2hyaW5rID1cbiAgICBtYXRjaCBuZXZlcl9zaHJpbmsgd2l0aFxuICAgIHwgTm9uZSAtPiBPcHRpb24uaXNfc29tZSBpbml0aWFsX2xlbmd0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgbGV0IGluaXRpYWxfbGVuZ3RoID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OjcgaW5pdGlhbF9sZW5ndGggaW5cbiAgaWYgaW5pdGlhbF9sZW5ndGggPCAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicGFzc2VkIG5lZ2F0aXZlIGluaXRpYWxfbGVuZ3RoIHRvIERlcXVlLmNyZWF0ZTogJWlcIiBpbml0aWFsX2xlbmd0aCAoKTtcbiAgKCogTWFrZSB0aGUgaW5pdGlhbCBhcnJheSBsZW5ndGggYmUgW2luaXRpYWxfbGVuZ3RoICsgMV0gc28gd2UgY2FuIGZpdCBbaW5pdGlhbF9sZW5ndGhdXG4gICAgIGVsZW1lbnRzIHdpdGhvdXQgZ3Jvd2luZy4gIFdlIG5ldmVyIHF1aXRlIHVzZSB0aGUgd2hvbGUgYXJyYXkuICopXG4gIGxldCBhcnJfbGVuZ3RoID0gaW5pdGlhbF9sZW5ndGggKyAxIGluXG4gIHsgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmFycl9sZW5ndGhcbiAgOyBmcm9udF9pbmRleCA9IDBcbiAgOyBiYWNrX2luZGV4ID0gMVxuICA7IGFwcGFyZW50X2Zyb250X2luZGV4ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBhcnJfbGVuZ3RoXG4gIDsgbmV2ZXJfc2hyaW5rXG4gIH1cbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBsZW5ndGggaW4gYSBtdXRhYmxlIGZpZWxkIGZvciBzcGVlZCwgYnV0IHRoaXMgY2FsY3VsYXRpb24gc2hvdWxkXG4gICBiZSBjb3JyZWN0IGJ5IGNvbnN0cnVjdGlvbiwgYW5kIGNhbiBiZSB1c2VkIGZvciB0ZXN0aW5nLiAqKVxubGV0IF9pbnZhcmlhbnRfbGVuZ3RoIHQgPVxuICBsZXQgY29uc3RydWN0ZWRfbGVuZ3RoID1cbiAgICBpZiB0LmZyb250X2luZGV4IDwgdC5iYWNrX2luZGV4XG4gICAgdGhlbiB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMVxuICAgIGVsc2UgdC5iYWNrX2luZGV4IC0gdC5mcm9udF9pbmRleCAtIDEgKyB0LmFycl9sZW5ndGhcbiAgaW5cbiAgYXNzZXJ0IChsZW5ndGggdCA9IGNvbnN0cnVjdGVkX2xlbmd0aClcbjs7XG5cbigqIFRoZSB2YXJpb3VzIFwid2hlbl9ub3RfZW1wdHlcIiBmdW5jdGlvbnMgcmV0dXJuIG1pc2xlYWRpbmcgbnVtYmVycyB3aGVuIHRoZSBkZXF1ZXVlIGlzXG4gICBlbXB0eS4gIFRoZXkgYXJlIHNhZmUgdG8gY2FsbCBpZiBpdCBpcyBrbm93biB0aGF0IHRoZSBkZXF1ZXVlIGlzIG5vbi1lbXB0eS4gKilcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleFxubGV0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9IHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyBsZW5ndGggdCAtIDFcblxubGV0IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5mcm9udF9pbmRleCArIDFcbjs7XG5cbmxldCBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5iYWNrX2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmJhY2tfaW5kZXggLSAxXG47O1xuXG5sZXQgY2hlY2tlZCB0IGYgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGYgdClcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHlcblxubGV0IGZvbGRpJyB0IGRpciB+aW5pdCB+ZiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2kgfnN0b3BfcG9zIH5zdGVwID1cbiAgICAgIGlmIHJlYWxfaSA9IHN0b3BfcG9zXG4gICAgICB0aGVuIGFjYywgYXBwYXJlbnRfaVxuICAgICAgZWxzZVxuICAgICAgICBsb29wXG4gICAgICAgICAgKGYgYXBwYXJlbnRfaSBhY2MgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgcmVhbF9pKSlcbiAgICAgICAgICB+YXBwYXJlbnRfaTooYXBwYXJlbnRfaSArIHN0ZXApXG4gICAgICAgICAgfnJlYWxfaToocmVhbF9pICsgc3RlcClcbiAgICAgICAgICB+c3RvcF9wb3NcbiAgICAgICAgICB+c3RlcFxuICAgIGluXG4gICAgKCogV2Ugd2FudCB0byBpdGVyYXRlIGZyb20gYWN0dWFsX2Zyb250IHRvIGFjdHVhbF9iYWNrIChvciB2aWNlIHZlcnNhKSwgYnV0IHdlIG1heVxuICAgICAgIG5lZWQgdG8gd3JhcCBhcm91bmQgdGhlIGFycmF5IHRvIGRvIHNvLiAgVGh1cyB3ZSBkbyB0aGUgZm9sbG93aW5nOlxuICAgICAgIDEuICBJZiB0aGUgYWN0aXZlIHJhbmdlIGlzIGNvbnRpZ3VvdXMgKGkuZS4gYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrKSwgdGhlbiBsb29wXG4gICAgICAgc3RhcnRpbmcgYXQgdGhlIGFwcHJvcHJpYXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlIHVudGlsIHdlIHJlYWNoIHRoZSBmaXJzdFxuICAgICAgIGVsZW1lbnQgb3V0c2lkZSBvZiBpdC5cbiAgICAgICAyLiAgSWYgaXQgaXMgbm90IGNvbnRpZ3VvdXMgKGFjdHVhbF9mcm9udCA+IGFjdHVhbF9iYWNrKSwgdGhlbiBmaXJzdCBsb29wIGZyb20gdGhlXG4gICAgICAgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBUaGVuLCBsb29wIGZyb21cbiAgICAgICB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhcnJheSB0byB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UuXG4gICAgKilcbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYGZyb250X3RvX2JhY2sgLT5cbiAgICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpXG4gICAgICAgICAgICB+c3RlcDoxXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9mcm9udFxuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfZnJvbnRcbiAgICAgICAgICAgIH5zdG9wX3Bvczp0LmFycl9sZW5ndGhcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9IGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgfnN0ZXA6MSBpblxuICAgICAgICBhY2MpXG4gICAgfCBgYmFja190b19mcm9udCAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFjYywgYXBwYXJlbnRfaSA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOigtMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICB+YXBwYXJlbnRfaVxuICAgICAgICAgICAgfnJlYWxfaToodC5hcnJfbGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2Zyb250IC0gMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKSlcbjs7XG5cbmxldCBmb2xkJyB0IGRpciB+aW5pdCB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdCB+ZjooZnVuIF8gYWNjIHYgLT4gZiBhY2MgdilcbmxldCBpdGVyaScgdCBkaXIgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHYgLT4gZiBpIHYpXG5sZXQgaXRlcicgdCBkaXIgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQ6KCkgfmY6KGZ1biBfICgpIHYgLT4gZiB2KVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGQnIHQgYGZyb250X3RvX2JhY2sgfmluaXQgfmZcbmxldCBmb2xkaSB0IH5pbml0IH5mID0gZm9sZGknIHQgYGZyb250X3RvX2JhY2sgfmluaXQgfmZcbmxldCBpdGVyaSB0IH5mID0gaXRlcmknIHQgYGZyb250X3RvX2JhY2sgfmZcblxubGV0IGl0ZXJpX2ludGVybmFsIHQgfmYgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gKFxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgfnJlYWxfaSB+c3RvcF9wb3MgPVxuICAgICAgaWYgcmVhbF9pIDwgc3RvcF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBmIHQuYXJyIHJlYWxfaTtcbiAgICAgICAgbG9vcCB+cmVhbF9pOihyZWFsX2kgKyAxKSB+c3RvcF9wb3MpXG4gICAgaW5cbiAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICB0aGVuIGxvb3AgfnJlYWxfaTphY3R1YWxfZnJvbnQgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpXG4gICAgZWxzZSAoXG4gICAgICBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3Bvczp0LmFycl9sZW5ndGg7XG4gICAgICBsb29wIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkpKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpX2ludGVybmFsIHQgfmY6KGZ1biBhcnIgaSAtPiBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGFyciBpIHw+IGYpXG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5uZXZlcl9zaHJpbmtcbiAgdGhlblxuICAgICgqIGNsZWFyIHRoZSBhcnJheSB0byBhbGxvdyBlbGVtZW50cyB0byBiZSBnYXJiYWdlIGNvbGxlY3RlZCAqKVxuICAgIGl0ZXJpX2ludGVybmFsIHQgfmY6T3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZVxuICBlbHNlIHQuYXJyIDwtIE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjo4O1xuICB0LmZyb250X2luZGV4IDwtIDA7XG4gIHQuYmFja19pbmRleCA8LSAxO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmFycl9sZW5ndGggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmFyclxuOztcblxuKCogV2UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUsIGltcG9ydGluZyBhbGwgb2YgQ29udGFpbmVyLk1ha2Ugd291bGQgY2hhbmdlIHRoZSBydW50aW1lIG9mXG4gICBzb21lIGZ1bmN0aW9ucyAoW2xlbmd0aF0gbWluaW1hbGx5KSBzaWxlbnRseSB3aXRob3V0IGNoYW5naW5nIHRoZSBzZW1hbnRpY3MuICBXZSBnZXRcbiAgIGFyb3VuZCB0aGF0IGJ5IGltcG9ydGluZyB0aGluZ3MgZXhwbGljaXRseS4gICopXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IG1lbSA9IEMubWVtXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBibGl0IG5ld19hcnIgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBvbGRfYXJyID0gdC5hcnIgaW5cbiAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gIHRoZW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQpXG4gIGVsc2UgKFxuICAgIGxldCBicmVha19wb3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIG9sZF9hcnIgLSBhY3R1YWxfZnJvbnQgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjpicmVha19wb3M7XG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpicmVha19wb3NcbiAgICAgIH5sZW46KGFjdHVhbF9iYWNrICsgMSkpO1xuICAoKiBsZW5ndGggZGVwZW5kcyBvbiB0LmFyciBhbmQgdC5mcm9udF9pbmRleCwgc28gdGhpcyBuZWVkcyB0byBiZSBmaXJzdCAqKVxuICB0LmJhY2tfaW5kZXggPC0gbGVuZ3RoIHQ7XG4gIHQuYXJyIDwtIG5ld19hcnI7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnI7XG4gIHQuZnJvbnRfaW5kZXggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMTtcbiAgKCogU2luY2UgdC5mcm9udF9pbmRleCA9IE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciAtIDEsIHRoaXMgaXMgYXNzZXJ0aW5nIHRoYXQgdC5iYWNrX2luZGV4XG4gICAgIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5IGFuZCB0aGF0IHRoZSBhcnJheSBjYW4gc3VwcG9ydCBhdCBsZWFzdCBvbmUgbW9yZVxuICAgICBlbGVtZW50IC0tIHJlY2FsbCwgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIHRoZSBhcnJheSBpcyBmdWxsLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyID4gbGVuZ3RoIHQgKyAxLlxuICAqKVxuICBhc3NlcnQgKHQuZnJvbnRfaW5kZXggPiB0LmJhY2tfaW5kZXgpXG47O1xuXG5sZXQgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdCA9XG4gIGlmIChub3QgdC5uZXZlcl9zaHJpbmspICYmIHQuYXJyX2xlbmd0aCA+IDEwICYmIHQuYXJyX2xlbmd0aCAvIDMgPiBsZW5ndGggdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoodC5hcnJfbGVuZ3RoIC8gMikgaW5cbiAgICBibGl0IG5ld19hcnIgdClcbjs7XG5cbmxldCBncm93X3VuZGVybHlpbmcgdCA9XG4gIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggKiAyKSBpblxuICBibGl0IG5ld19hcnIgdFxuOztcblxubGV0IGVucXVldWVfYmFjayB0IHYgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gZ3Jvd191bmRlcmx5aW5nIHQ7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciB0LmJhY2tfaW5kZXggdjtcbiAgdC5iYWNrX2luZGV4IDwtIChpZiB0LmJhY2tfaW5kZXggPSB0LmFycl9sZW5ndGggLSAxIHRoZW4gMCBlbHNlIHQuYmFja19pbmRleCArIDEpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlX2Zyb250IHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuZnJvbnRfaW5kZXggdjtcbiAgdC5mcm9udF9pbmRleCA8LSAoaWYgdC5mcm9udF9pbmRleCA9IDAgdGhlbiB0LmFycl9sZW5ndGggLSAxIGVsc2UgdC5mcm9udF9pbmRleCAtIDEpO1xuICB0LmFwcGFyZW50X2Zyb250X2luZGV4IDwtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggLSAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCB2ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgdlxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgdlxuOztcblxubGV0IHBlZWtfZnJvbnRfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5wZWVrX2Zyb250X2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfZnJvbnRfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocGVla19mcm9udF9ub25lbXB0eSB0KVxuXG5sZXQgcGVla19iYWNrX25vbmVtcHR5IHQgPVxuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIChhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBwZWVrX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IHBlZWsgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmZyb250X2luZGV4IDwtIGk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdDtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmJhY2tfaW5kZXggPC0gaTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5kZXF1ZXVlX2JhY2tfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2sgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9nZW4gPyhuID0gMSkgfmRlcXVldWUgdCA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiRGVxdWUuZHJvcDogIG5lZ2F0aXZlIGlucHV0ICglZClcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGRlcXVldWUgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKG4gLSAxKSlcbiAgaW5cbiAgbG9vcCBuXG47O1xuXG5sZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcF9nZW4gP24gfmRlcXVldWU6ZGVxdWV1ZV9mcm9udCB0XG5sZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2JhY2sgdFxuXG5sZXQgZHJvcCA/biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgP24gdFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250ID9uIHRcbjs7XG5cbmxldCBhc3NlcnRfbm90X2VtcHR5IHQgbmFtZSA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmYWlsd2l0aGYgXCIlczogRGVxdWUudCBpcyBlbXB0eVwiIG5hbWUgKClcblxubGV0IHRydWVfaW5kZXhfZXhuIHQgaSA9XG4gIGxldCBpX2Zyb21femVybyA9IGkgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4IGluXG4gIGlmIGlfZnJvbV96ZXJvIDwgMCB8fCBsZW5ndGggdCA8PSBpX2Zyb21femVyb1xuICB0aGVuIChcbiAgICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS50cnVlX2luZGV4X2V4blwiO1xuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJpbnZhbGlkIGluZGV4OiAlaSBmb3IgYXJyYXkgd2l0aCBpbmRpY2VzICglaSwlaSlcIlxuICAgICAgaVxuICAgICAgYXBwYXJlbnRfZnJvbnRcbiAgICAgIGFwcGFyZW50X2JhY2tcbiAgICAgICgpKTtcbiAgbGV0IHRydWVfaSA9IHQuZnJvbnRfaW5kZXggKyAxICsgaV9mcm9tX3plcm8gaW5cbiAgaWYgdHJ1ZV9pID49IHQuYXJyX2xlbmd0aCB0aGVuIHRydWVfaSAtIHQuYXJyX2xlbmd0aCBlbHNlIHRydWVfaVxuOztcblxubGV0IGdldCB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIHRyeSBTb21lIChnZXQgdCBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgdiA9IE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciAodHJ1ZV9pbmRleF9leG4gdCBpKSB2XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggcGVla19mcm9udCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIGZyb250IC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggdCkgZnJvbnQgaW5cbiAgICBpZ25vcmVcbiAgICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgdiAtPlxuICAgICAgICAgYXJyLihpKSA8LSB2O1xuICAgICAgICAgaSArIDEpXG4gICAgICAgOiBpbnQpO1xuICAgIGFyclxuOztcblxubGV0IG9mX2FycmF5IGFyciA9XG4gIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDooQXJyYXkubGVuZ3RoIGFyciArIDEpICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBlbnF1ZXVlX2JhY2sgdCB2KTtcbiAgdFxuOztcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMzRjMWU5Y2EtNDk5Mi0xMWU2LWE2ODYtOGI0YmQ0Zjg3Nzk2XCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRGVxdWVcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB0IH5mXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDpsZW4gKCkgaW5cbiAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgZW5xdWV1ZV9iYWNrIHQgeFxuICAgICAgZG9uZTtcbiAgICAgIHRcbiAgICA7O1xuICBlbmQpXG5cbmxldCB0X29mX3NleHAgZiBzZXhwID0gb2ZfYXJyYXkgKEFycmF5LnRfb2Zfc2V4cCBmIHNleHApXG5sZXQgc2V4cF9vZl90IGYgdCA9IEFycmF5LnNleHBfb2ZfdCBmICh0b19hcnJheSB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxuKCogcmUtZXhwb3NlIHRoZXNlIGhlcmUgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSB0byBhdm9pZCBpbnRlcm5hbCBjb25mdXNpb24gKilcbmxldCBiYWNrX2luZGV4ID0gYXBwYXJlbnRfYmFja19pbmRleFxubGV0IGZyb250X2luZGV4ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhcblxubGV0IGJhY2tfaW5kZXhfZXhuIHQgPVxuICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS5iYWNrX2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbmxldCBmcm9udF9pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmZyb250X2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0XG47O1xuXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCB0IGkgPSBnZXQgdCAoZnJvbnRfaW5kZXhfZXhuIHQgKyBpKVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmRcbiAgZW5kKVxuXG4oKiBUaGUgXCJzdGFibGVcIiBpbmRpY2VzIHVzZWQgaW4gdGhpcyBtb2R1bGUgbWFrZSB0aGUgYXBwbGljYXRpb24gb2YgdGhlXG4gICBbQmluYXJ5X3NlYXJjaGFibGVdIGZ1bmN0b3IgYXdrd2FyZC4gIFdlIG5lZWQgdG8gYmUgc3VyZSB0byB0cmFuc2xhdGUgaW5jb21pbmdcbiAgIHBvc2l0aW9ucyBmcm9tIHN0YWJsZSBzcGFjZSB0byB0aGUgZXhwZWN0ZWQgMCAtPiBsZW5ndGggLSAxIHNwYWNlIGFuZCB0aGVuIHdlIG5lZWQgdG9cbiAgIHRyYW5zbGF0ZSB0aGVtIGJhY2sgb24gcmV0dXJuLiAqKVxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVudHJhbnNsYXRlZF9pIC0+IFNvbWUgKHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyB1bnRyYW5zbGF0ZWRfaSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZ1xuXG5sZXQgZXByaW50IG1lc3NhZ2UgPSBQcmludGYuZXByaW50ZiBcIiVzXFxuJSFcIiBtZXNzYWdlXG5sZXQgZXByaW50X3Mgc2V4cCA9IGVwcmludCAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG5sZXQgZXByaW50cyBtZXNzYWdlIGEgc2V4cF9vZl9hID0gZXByaW50X3MgKFslc2V4cF9vZjogc3RyaW5nICogYV0gKG1lc3NhZ2UsIGEpKVxubGV0IGVwcmludGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVwcmludCBmb3JtYXRcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIE1ha2UgKCkgPSBzdHJ1Y3RcbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgaW52YXJpYW50IH5tb2R1bGVfbmFtZSBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW4gZXByaW50cyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBtb2R1bGVfbmFtZTsgXCIuXCI7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwcmUtY29uZGl0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgKG5hbWUsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGV4bl0pO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50XG4gICAgdGhlbiAoXG4gICAgICB0cnkgTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJpbnZhcmlhbnQgcG9zdC1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBlcHJpbnRzXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZTsgXCItcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuZW5kXG5cbmxldCBzaG91bGRfcHJpbnRfYmFja3RyYWNlID0gcmVmIGZhbHNlXG5cbmxldCBhbV9pbnRlcm5hbCBoZXJlIG1lc3NhZ2UgPVxuICAoKiBJbiB0aGlzIGZ1bmN0aW9uIHdlIHVzZSBbUHJpbnRmLmVwcmludGZdIHJhdGhlciB0aGFuIFtEZWJ1Zy5lcHJpbnRmXSwgYmVjYXVzZSB0aGVcbiAgICAgZm9ybWVyIGRvZXNuJ3QgZmx1c2gsIHdoaWxlIHRoZSBsYXR0ZXIgZG9lcy4gIFdlJ2QgcmF0aGVyIGZsdXNoIG9uY2UgYXQgdGhlIGVuZCxcbiAgICAgcmF0aGVyIHRoYW4gdGhyZWUgdGltZXMuICopXG4gIFByaW50Zi5lcHJpbnRmIFwiJXM6XFxuXCIgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZyBoZXJlKTtcbiAgaWYgIXNob3VsZF9wcmludF9iYWNrdHJhY2VcbiAgdGhlblxuICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICBcIiVzXFxuXCJcbiAgICAgIChCYWNrdHJhY2UuZ2V0ICgpIHw+IFslc2V4cF9vZjogQmFja3RyYWNlLnRdIHw+IFNleHAudG9fc3RyaW5nX2h1bSk7XG4gIChtYXRjaCBtZXNzYWdlIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlc1xcblwiIG1lc3NhZ2UpO1xuICBQcmludGYuZXByaW50ZiBcIiUhXCJcbjs7XG5cbmxldCBhbSBoZXJlID0gYW1faW50ZXJuYWwgaGVyZSBOb25lXG5sZXQgYW1mIGhlcmUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyaW5nIC0+IGFtX2ludGVybmFsIGhlcmUgKFNvbWUgc3RyaW5nKSkgZm10XG5cbmxldCBhbXMgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgYW1faW50ZXJuYWwgaGVyZSAoU29tZSAoKG1lc3NhZ2UsIGEpIHw+IFslc2V4cF9vZjogc3RyaW5nICogYV0gfD4gU2V4cC50b19zdHJpbmdfaHVtKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TeXNcblxubGV0IHVuaXhfcXVvdGUgeCA9XG4gIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSB4KSlcbiAgJiYgU3RyaW5nLmZvcl9hbGwgeCB+ZjooZnVuY3Rpb25cbiAgICAgICB8ICdhJyAuLiAneidcbiAgICAgICB8ICdBJyAuLiAnWidcbiAgICAgICB8ICcwJyAuLiAnOSdcbiAgICAgICB8ICdfJyB8ICctJyB8ICc6JyB8ICcuJyB8ICcvJyB8ICcsJyB8ICcrJyB8ICc9JyB8ICclJyB8ICdAJyAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuIChcbiAgICAoKiBTaGVsbCBrZXl3b3JkcywgYXMgb3V0cHV0IGJ5IFtjb21wZ2VuIC1rXSBmb3IgYmFzaCwgW21hbiBkYXNoXSBmb3IgZGFzaCwgYW5kIFtQQVRIPVxuICAgICAgIHR5cGUgLW0gJyonIHwgZ3JlcCByZXNlcnZlZF0gZm9yIHpzaCwgZXhjZXB0IGZvciBrZXl3b3JkcyB0aGF0IGhhdmUgc3BlY2lhbFxuICAgICAgIGNoYXJhY3RlcnMgbGlrZSBbWy4gTm90ZSB0aGF0IGJ1aWx0aW5zIGRvbid0IG1hdHRlciBiZWNhdXNlICdhbGlhcycgYW5kIGFsaWFzXG4gICAgICAgYmVoYXZlIHRoZSBzYW1lLCB1bmxpa2UgJ2lmJyBhbmQgaWYuICopXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBcImlmXCJcbiAgICB8IFwidGhlblwiXG4gICAgfCBcImVsc2VcIlxuICAgIHwgXCJlbGlmXCJcbiAgICB8IFwiZmlcIlxuICAgIHwgXCJjYXNlXCJcbiAgICB8IFwiZXNhY1wiXG4gICAgfCBcImZvclwiXG4gICAgfCBcInNlbGVjdFwiXG4gICAgfCBcIndoaWxlXCJcbiAgICB8IFwidW50aWxcIlxuICAgIHwgXCJkb1wiXG4gICAgfCBcImRvbmVcIlxuICAgIHwgXCJpblwiXG4gICAgfCBcImZ1bmN0aW9uXCJcbiAgICB8IFwidGltZVwiXG4gICAgfCBcImNvcHJvY1wiXG4gICAgfCBcImZvcmVhY2hcIlxuICAgIHwgXCJyZXBlYXRcIlxuICAgIHwgXCJub2NvcnJlY3RcIiAtPiBGaWxlbmFtZS5xdW90ZSB4XG4gICAgfCBfIC0+IHgpXG4gIGVsc2UgRmlsZW5hbWUucXVvdGUgeFxuOztcblxubGV0IHF1b3RlID1cbiAgbWF0Y2ggQ2FtbC5TeXMub3NfdHlwZSB3aXRoXG4gIHwgXCJVbml4XCIgLT4gdW5peF9xdW90ZVxuICB8IF8gLT4gRmlsZW5hbWUucXVvdGVcbjs7XG5cbmxldCBjb25jYXRfcXVvdGVkIHNwbGl0X2NvbW1hbmQgPVxuICBMaXN0Lm1hcCB+ZjpxdW90ZSBzcGxpdF9jb21tYW5kIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuOztcblxubGV0IGNfaW50X3NpemUgPSBgVXNlX1N5c191bml4XG5sZXQgY2F0Y2hfYnJlYWsgPSBgVXNlX1N5c191bml4XG5sZXQgY2hkaXIgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZCA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRhYmxlX25hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0aW9uX21vZGUgPSBgVXNlX1N5c191bml4XG5sZXQgZmlsZV9leGlzdHMgPSBgVXNlX1N5c191bml4XG5sZXQgZmlsZV9leGlzdHNfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGZvbGRfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGdldGN3ZCA9IGBVc2VfU3lzX3VuaXhcbmxldCBob21lX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5X2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGVfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGxzX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBvdmVycmlkZV9hcmd2ID0gYFVzZV9TeXNfdW5peFxubGV0IHJlYWRkaXIgPSBgVXNlX1N5c191bml4XG5sZXQgcmVtb3ZlID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52ID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnZfZXhuID0gYFVzZV9TeXNfdW5peFxuXG5leGNlcHRpb24gQnJlYWsgPSBDYW1sLlN5cy5CcmVha1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgdW5peF9xdW90ZSA9IHVuaXhfcXVvdGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhZ19pbnRmXG5pbmNsdWRlIChEb3VibHlfbGlua2VkIDogRG91Ymx5X2xpbmtlZC5TKVxuXG5sZXQgYWRkID0gaW5zZXJ0X2ZpcnN0XG5sZXQgYWRkX3VuaXQgdCB2ID0gYWRkIHQgdiB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxubGV0IGVsdHMgdCA9IGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBhY2MgZWx0IC0+IGVsdCA6OiBhY2MpXG5sZXQgcmVtb3ZlX29uZSA9IHJlbW92ZV9maXJzdFxubGV0IGNob29zZSA9IGZpcnN0X2VsdFxuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBPcHRpb24uaXRlciAocmVtb3ZlX29uZSB0KSB+ZjooZnVuIHYgLT5cbiAgICAgIGYgdjtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJzdHIgOiBCaWdzdHJpbmcudFxuICA7IG11dGFibGUgcG9zIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyBpbml0IDogQmlnc3RyaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlc2l6ZSBidWYgbW9yZSA9XG4gIGxldCBtaW5fbGVuID0gYnVmLmxlbiArIG1vcmUgaW5cbiAgbGV0IG5ld19sZW4gPSBtaW5fbGVuICsgbWluX2xlbiBpblxuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbmV3X2xlbiBpblxuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWYuYnN0ciB+c3JjX2xlbjpidWYucG9zIH5kc3Q6bmV3X2J1ZiAoKTtcbiAgYnVmLmJzdHIgPC0gbmV3X2J1ZjtcbiAgYnVmLmxlbiA8LSBuZXdfbGVuXG47O1xuIiwiKCogU29tZSBjb2RlIHRha2VuIGZyb20gSU5SSUEncyBidWZmZXIgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gQmlnc3RyaW5nXG5pbmNsdWRlIEJpZ2J1ZmZlcl9pbnRlcm5hbFxuXG5sZXQgX19pbnRlcm5hbCAodCA6IHQpID0gdFxubGV0IGxlbmd0aCB0ID0gdC5wb3NcblxuKCoge1sgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0LmxlbiA9PSBCaWdzdHJpbmcubGVuZ3RoIHQuYnN0cikgXX0gKilcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPSBtYXggMSBuIGluXG4gIGxldCBic3RyID0gQmlnc3RyaW5nLmNyZWF0ZSBuIGluXG4gIHsgYnN0cjsgcG9zID0gMDsgbGVuID0gbjsgaW5pdCA9IGJzdHIgfVxuOztcblxubGV0IGNvbnRlbnRzIGJ1ZiA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgY29udGVudHNfYnl0ZXMgYnVmID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1Zi5ic3RyIH5sZW46YnVmLnBvc1xubGV0IGJpZ19jb250ZW50cyBidWYgPSBzdWJvIH5sZW46YnVmLnBvcyBidWYuYnN0clxubGV0IHZvbGF0aWxlX2NvbnRlbnRzIGJ1ZiA9IGJ1Zi5ic3RyXG5cbmxldCBhZGRfY2hhciBidWYgYyA9XG4gIGxldCBwb3MgPSBidWYucG9zIGluXG4gIGlmIHBvcyA+PSBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiAxO1xuICBidWYuYnN0ci57cG9zfSA8LSBjO1xuICBidWYucG9zIDwtIHBvcyArIDFcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIFRlc3RfYmxpdC5NYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhclxuXG4gICAgICBsZXQgZXF1YWwgPSBDaGFyLmVxdWFsXG4gICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuICdhJyBlbHNlICdiJ1xuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICAgIGFkZF9jaGFyIHQgJ2EnXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBzZXQgdCBpIGMgPSBCaWdzdHJpbmcuc2V0IHQuYnN0ciBpIGNcbiAgICAgIGxldCBnZXQgdCBpID0gQmlnc3RyaW5nLmdldCB0LmJzdHIgaVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJ5dGVzXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgQmlnc3RyaW5nLlRvX2J5dGVzLnVuc2FmZV9ibGl0IH5zcmM6c3JjLmJzdHIgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ2J1ZmZlcl9pbnRlcm5hbCkgKFRvX2J5dGVzKVxuXG5sZXQgbnRoIGJ1ZiBwb3MgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBidWYucG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIubnRoXCIgZWxzZSBidWYuYnN0ci57cG9zfVxuOztcblxubGV0IGNsZWFyIGJ1ZiA9IGJ1Zi5wb3MgPC0gMFxuXG5sZXQgcmVzZXQgYnVmID1cbiAgYnVmLnBvcyA8LSAwO1xuICBidWYuYnN0ciA8LSBidWYuaW5pdDtcbiAgYnVmLmxlbiA8LSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zi5ic3RyXG47O1xuXG5sZXQgYWRkX3N1YnN0cmluZyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RyaW5nXCI7XG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3ViYnl0ZXMgYnVmIHNyYyB+cG9zOnNyY19wb3MgfmxlbiA9XG4gIGlmIHNyY19wb3MgPCAwIHx8IGxlbiA8IDAgfHwgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcztcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2JpZ3N0cmluZyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9ieXRlcyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J1ZmZlciBidWZfZHN0IGJ1Zl9zcmMgPVxuICBsZXQgbGVuID0gYnVmX3NyYy5wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBidWZfZHN0LnBvcyBpblxuICBsZXQgbmV3X3BvcyA9IGRzdF9wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zl9kc3QubGVuIHRoZW4gcmVzaXplIGJ1Zl9kc3QgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWZfc3JjLmJzdHIgfnNyY19sZW46bGVuIH5kc3Q6YnVmX2RzdC5ic3RyIH5kc3RfcG9zICgpO1xuICBidWZfZHN0LnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2Jpbl9wcm90IHQgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICBsZXQgbmV3X3BvcyA9XG4gICAgbWF0Y2ggd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHggd2l0aFxuICAgIHwgcG9zIC0+IHBvc1xuICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICgqIEl0J3MgbGlrZWt5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgW0Jpbl9wcm90LkNvbW1vbi5CdWZmZXJfc2hvcnRdIG9ubHksIGhvd2V2ZXIgd2UgY2FuJ3QgZWFzaWx5IGVuZm9yY2UgdGhhdCBjdXN0b21cbiAgICAgICAgIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIGRvIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGlmIHQucG9zICsgc2l6ZSA+IHQubGVuIHRoZW4gcmVzaXplIHQgc2l6ZTtcbiAgICAgIHdyaXRlci53cml0ZSB0LmJzdHIgfnBvczp0LnBvcyB4XG4gIGluXG4gIHQucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChOb3RfZm91bmRfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RpdHV0ZTogY2Fubm90IGZpbmQgY2xvc2luZyBkZWxpbWl0ZXJcIlxuICAgICAgICAgICAgICAgKG9wZW5pbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKGNsb3NpbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKHN0YXJ0IDogaW50KVxuICAgICAgICAgICAgICAgc10pXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIG9wZW5pbmdcbiAgICB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbCBzLltpXSBjbG9zaW5nXG4gICAgdGhlbiBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbVxuICBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW4gbGltXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneidcbiAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgfCAnMCcgLi4gJzknXG4gICAgICB8ICdfJ1xuICAgICAgfCAn6SdcbiAgICAgIHwgJ+AnXG4gICAgICB8ICfhJ1xuICAgICAgfCAn6CdcbiAgICAgIHwgJ/knXG4gICAgICB8ICfiJ1xuICAgICAgfCAn6idcbiAgICAgIHwgJ+4nXG4gICAgICB8ICf0J1xuICAgICAgfCAn+ydcbiAgICAgIHwgJ+snXG4gICAgICB8ICfvJ1xuICAgICAgfCAn/CdcbiAgICAgIHwgJ+cnXG4gICAgICB8ICfJJ1xuICAgICAgfCAnwCdcbiAgICAgIHwgJ8EnXG4gICAgICB8ICfIJ1xuICAgICAgfCAn2SdcbiAgICAgIHwgJ8InXG4gICAgICB8ICfKJ1xuICAgICAgfCAnzidcbiAgICAgIHwgJ9QnXG4gICAgICB8ICfbJ1xuICAgICAgfCAnyydcbiAgICAgIHwgJ88nXG4gICAgICB8ICfcJ1xuICAgICAgfCAnxycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkpXG4gIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0ID1cbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgKCcoJyB8ICd7JykgYXMgYyAtPlxuICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpuZXdfc3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgU3RyaW5nLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0KSwgc3RvcFxuOztcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYnVmIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgKGkgKyAxKSBpblxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiAoZiBpZGVudCk7XG4gICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIENoYXIuZXF1YWwgcHJldmlvdXMgJ1xcXFwnIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKSlcbiAgaW5cbiAgc3Vic3QgJyAnIDBcbjs7XG5cbm1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgbGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmID1cbiAgICBGb3JtYXQubWFrZV9mb3JtYXR0ZXIgKGZ1biBzIHBvcyBsZW4gLT4gYWRkX3N1YnN0cmluZyBidWYgcyB+cG9zIH5sZW4pIGlnbm9yZVxuICA7O1xuXG4gIGxldCBicHJpbnRmIGJ1ZiA9IEZvcm1hdC5rZnByaW50ZiBpZ25vcmUgKGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmKVxuZW5kXG5cbm1vZHVsZSBQcmludGYgPSBzdHJ1Y3RcbiAgbGV0IGJwcmludGYgYnVmID0gUHJpbnRmLmtzcHJpbnRmIChhZGRfc3RyaW5nIGJ1ZilcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5CeXRlc31bQmFzZS5CeXRlc119LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkJ5dGVzXG5lbmRcbndpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW2dlbl0sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2YgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbYnl0ZXNdIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtCeXRlcy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIHByb3ZpZGVcbiAgICBpbnRlcmZhY2UgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nLkYgKHN0cnVjdFxuICAgIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgICBsZXQgY3JlYXRlID0gQmlnc3RyaW5nLmNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djOk5vbmVcbiAgICBsZXQgbGVuZ3RoID0gQmlnc3RyaW5nLmxlbmd0aFxuICAgIGxldCBnZXQgPSBCaWdzdHJpbmcuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfdG9fc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBCbGl0LnN0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGluZGV4IDogaW50XG4gICAgICAgIDsgbWluX2luZGV4IDogaW50XG4gICAgICAgIDsgbWF4X2luZGV4IDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IGNyZWF0ZSBpbmRleCB+bWluIH5tYXggPVxuICAgICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heFxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIChpbmRleCA6IGludCkgKG1pbiA6IGludCkgKG1heCA6IGludCldXG4gICAgICAgIGVsc2UgeyBpbmRleDsgbWluX2luZGV4ID0gbWluOyBtYXhfaW5kZXggPSBtYXggfVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIEZvcl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChGb3Jfc2V4cGFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlIHQgPSBNLmxhYmVsLCB0LmluZGV4LCBcIm9mXCIsIHQubWluX2luZGV4LCBcInRvXCIsIHQubWF4X2luZGV4XG5cbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSAobGFiZWwsIGluZGV4LCBvZl8sIG1pbiwgdG9fLCBtYXgpID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGxhYmVsIE0ubGFiZWxcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIG9mXyBcIm9mXCJcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIHRvXyBcInRvXCJcbiAgICAgICAgICAgICAgdGhlbiBjcmVhdGUgaW5kZXggfm1pbiB+bWF4XG4gICAgICAgICAgICAgIGVsc2UgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIHNleHAgZm9yIGluZGV4XCIgfmxhYmVsOk0ubGFiZWxdXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvXVxuICAgICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSB0eXBlIFMgPSBCb3VuZGVkX2luZGV4X2ludGYuU1xuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gU3RhYmxlLlYxLk1ha2UgKE0pXG4gIGVuZFxuXG4gIG9wZW4gU3RhYmxlLlYxXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY3JlYXRlID0gU3RhYmxlLlYxLmNyZWF0ZVxuXG4gIGxldCBjcmVhdGVfYWxsIH5taW4gfm1heCA9XG4gICAgU2VxdWVuY2UudW5mb2xkIH5pbml0Om1pbiB+ZjooZnVuIGluZGV4IC0+XG4gICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heFxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIFNvbWUgKGNyZWF0ZSBpbmRleCB+bWluIH5tYXgsIGluZGV4ICsgMSkpXG4gICAgfD4gU2VxdWVuY2UudG9fbGlzdFxuICA7O1xuXG4gIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICBsZXQgbWF4X2luZGV4IHQgPSB0Lm1heF9pbmRleFxuICBsZXQgbWluX2luZGV4IHQgPSB0Lm1pbl9pbmRleFxuXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGVuZClcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgIGVuZClcbmVuZFxuIiwiKCoqIENvcmUgZ3JlYXRseSBleHBhbmRzIHRoZSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiBCYXNlIHdoaWxlIHN0aWxsIHJlbWFpbmluZ1xuICAgIHBsYXRmb3JtLWFnbm9zdGljLiAgQ29yZSBjaGFuZ2VzIG1vcmUgZnJlcXVlbnRseSAoaS5lLiwgaXMgbGVzcyBzdGFibGUpIHRoYW4gQmFzZS5cblxuICAgIFNvbWUgbW9kdWxlcyBhcmUgbWVyZSBleHRlbnNpb25zIG9mIHRoZWlyIGNvdW50ZXJwYXJ0cyBpbiBCYXNlLCB1c3VhbGx5IGFkZGluZyBnZW5lcmljXG4gICAgZnVuY3Rpb25hbGl0eSBieSBpbmNsdWRpbmcgZnVuY3RvcnMgdGhhdCBtYWtlIHRoZW0gYmluYWJsZSwgY29tcGFyYWJsZSwgc2V4cGFibGUsXG4gICAgYmxpdGFibGUsIGV0Yy4gIFRoZSBidWxrIG9mIENvcmUsIHRob3VnaCwgaXMgbW9kdWxlcyBwcm92aWRpbmcgZW50aXJlbHkgbmV3XG4gICAgZnVuY3Rpb25hbGl0eS4gKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcmcgPSBBcmdcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCYWcgPSBCYWdcbm1vZHVsZSBCaWdidWZmZXIgPSBCaWdidWZmZXJcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmdcbm1vZHVsZSBCaWdzdWJzdHJpbmcgPSBCaWdzdWJzdHJpbmdcbm1vZHVsZSBCaW5fcHJvdCA9IENvcmVfYmluX3Byb3Rcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmdcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQm91bmRlZF9pbmRleCA9IEJvdW5kZWRfaW5kZXhcbm1vZHVsZSBCdWZmZXIgPSBCYXNlLkJ1ZmZlclxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xuXG5tb2R1bGUgQ2FtbCA9IHN0cnVjdFxuICBpbmNsdWRlIENhbWxcblxuICAoKiBXaGVuIHdlIHJlbW92ZWQgW0NvcmUuQ2FtbF0ncyBleHRlbnNpb25zIG9mIFtDb3JlLkNhbWxdLCB3ZSBhZGRlZFxuICAgICB0aGUgZGVjbGFyYXRpb25zIGJlbG93IHRvIGZvcmNlIGNvZGUgdG8gc3dpdGNoIHRvIHRoZSBuZXcgbmFtZXMsIGFuZCBhdm9pZFxuICAgICBzaWxlbnRseSBpbmNvcnJlY3RseSB1c2luZyBzb21ldGhpbmcgZWxzZSBpbiBzY29wZS4gKilcbiAgbW9kdWxlIENvbmRpdGlvbiA9IHN0cnVjdCBlbmRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NhbWxfdGhyZWFkcy5Db25kaXRpb25dXCJdXG5cbiAgbW9kdWxlIE11dGV4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF90aHJlYWRzLk11dGV4XVwiXVxuICBtb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cbiAgbW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3VuaXhdXCJdXG4gIG1vZHVsZSBVbml4TGFiZWxzID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbVW5peExhYmVsc11cIl1cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IENoYXJcbm1vZHVsZSBDb21tYW5kID0gQ29tbWFuZFxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgQ29udGFpbmVyX2ludGYgPSBDb250YWluZXJfaW50ZlxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbm1vZHVsZSBDb3JlX2tlcm5lbF9zdGFibGUgPSBTdGFibGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3N0YWJsZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cblxubW9kdWxlIENvcmVfc3RhYmxlID0gU3RhYmxlXG5tb2R1bGUgRGF0ZSA9IERhdGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIERlcXVlID0gRGVxdWVcbm1vZHVsZSBEZXJpdmluZ19oYXNoID0gRGVyaXZpbmdfaGFzaFxubW9kdWxlIERpZ2VzdCA9IE1kNSBbQEBvY2FtbC5kZXByZWNhdGVkIFwiW3NpbmNlIDIwMTctMDVdIFVzZSBNZDUgaW5zdGVhZC5cIl1cbm1vZHVsZSBEb3VibHlfbGlua2VkID0gRG91Ymx5X2xpbmtlZFxubW9kdWxlIEVpdGhlciA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiA9IEVwaGVtZXJvblxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBFeHBlY3RfdGVzdF9jb25maWdcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWVcbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb25cbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlXG5tb2R1bGUgR2MgPSBHY1xubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWVcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSGFzaHRibF9pbnRmID0gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGVhcF9ibG9jayA9IEhlYXBfYmxvY2tcbm1vZHVsZSBIZXhkdW1wID0gSGV4ZHVtcFxubW9kdWxlIEhleGR1bXBfaW50ZiA9IEhleGR1bXBfaW50ZlxubW9kdWxlIEhvc3RfYW5kX3BvcnQgPSBIb3N0X2FuZF9wb3J0XG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW1tZWRpYXRlX29wdGlvbiA9IEltbWVkaWF0ZV9vcHRpb25cbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uX2ludGYgPSBJbW1lZGlhdGVfb3B0aW9uX2ludGZcbm1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9pbnRmID0gSW50X2ludGZcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRlcmZhY2VzID0gSW50ZXJmYWNlc1xubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXBfaW50ZiA9IE1hcF9pbnRmXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1kNSA9IE1kNVxubW9kdWxlIE1lbW8gPSBNZW1vXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE1vbnRoID0gTW9udGhcblxubW9kdWxlIE11dGV4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAyXSBVc2UgW0Vycm9yX2NoZWNraW5nX211dGV4XSBvciBbQ2FtbF90aHJlYWRzLk11dGV4XVwiXVxuXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm9fcG9seW1vcnBoaWNfY29tcGFyZSA9IE5vX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9ubHlfaW5fdGVzdCA9IE9ubHlfaW5fdGVzdFxubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IE9wdGlvbmFsX3N5bnRheFxubW9kdWxlIE9wdGlvbmFsX3N5bnRheF9pbnRmID0gT3B0aW9uYWxfc3ludGF4X2ludGZcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50XG5tb2R1bGUgUGVybXMgPSBQZXJtc1xubW9kdWxlIFBpZCA9IFBpZFxubW9kdWxlIFBvbHkgPSBQb2x5XG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSA9IFBvbHkgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTExXSB1c2UgW1BvbHldIGluc3RlYWRcIl1cblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRleGMgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBRdWlja2NoZWNrID0gUXVpY2tjaGVja1xubW9kdWxlIFF1aWNrY2hlY2tfaW50ZiA9IFF1aWNrY2hlY2tfaW50ZlxubW9kdWxlIFF1aWNrY2hlY2thYmxlID0gUXVpY2tjaGVja2FibGVcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RseV9jb21wYXJhYmxlXG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNldF9pbnRmID0gU2V0X2ludGZcbm1vZHVsZSBTZXRfb25jZSA9IFNldF9vbmNlXG5tb2R1bGUgU2V4cF9tYXliZSA9IFNleHAuU2V4cF9tYXliZVxuXG5tb2R1bGUgU2V4cCA9IFNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduYWwgPSBTaWduYWxcbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFNwbGl0dGFibGVfcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb21cbm1vZHVsZSBTdGFibGVfY29tcGFyYWJsZSA9IFN0YWJsZV9jb21wYXJhYmxlXG5tb2R1bGUgU3RhYmxlX3VuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3Rcbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN1YnN0cmluZyA9IFN1YnN0cmluZ1xubW9kdWxlIFN1YnN0cmluZ19pbnRmID0gU3Vic3RyaW5nX2ludGZcbm1vZHVsZSBTeXMgPSBDb3JlX3N5c1xuXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW0NvcmVfdGhyZWFkXSBvciBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUdXBsZSA9IFR1cGxlXG5tb2R1bGUgVHVwbGUyID0gVHVwbGUuVDJcbm1vZHVsZSBUdXBsZTMgPSBUdXBsZS5UM1xubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBUeXBlX2ltbWVkaWFjeVxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaW9uX2ZpbmQgPSBVbmlvbl9maW5kXG5tb2R1bGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkXG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVbml0X29mX3RpbWUgPSBVbml0X29mX3RpbWVcbm1vZHVsZSBVbml2X21hcCA9IFVuaXZfbWFwXG5cbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDIwLTAzXSBDb3JlIHNoYWRvd3MgVW5peC4gVXNlIENvcmVfdW5peCwgd2hpY2ggb3ZlcnJpZGVzIHNvbWUgb2YgVW5peCdzIFxcXG4gICBiZWhhdmlvci4gSWYgbmVjZXNzYXJ5LCBVbml4IGlzIGF2YWlsYWJsZSBhbmQgdW5zaGFkb3dlZCBhcyBDYW1sX3VuaXguXCJdXG5cbm1vZHVsZSBWYWxpZGF0ZSA9IFZhbGlkYXRlXG5tb2R1bGUgVmFsaWRhdGVkID0gVmFsaWRhdGVkXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXZWFrID0gV2Vha1xubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxubW9kdWxlIHR5cGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkLklkXG5cbmluY2x1ZGUgVCAoKiogQG9wZW4gKilcblxuaW5jbHVkZSBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTm90X2ZvdW5kXG5cbigqKiB7MiBUb3AtbGV2ZWwgdmFsdWVzfSAqKVxuXG50eXBlICdhIF9tYXliZV9ib3VuZCA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5cbmxldCBhbV9ydW5uaW5nX2lubGluZV90ZXN0ID0gYW1fcnVubmluZ19pbmxpbmVfdGVzdFxubGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxubGV0IGRvZXNfcmFpc2UgPSBFeG4uZG9lc19yYWlzZVxubGV0IHNlYyA9IFRpbWVfZmxvYXQuU3Bhbi5vZl9zZWNcbmxldCAoIF4vICkgPSBGaWxlbmFtZS5jb25jYXRcblxuKCoqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgICBbQ29yZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0NvcmVdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIENvcmU7IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgICBbQ29yZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gRXhuLmluaXRpYWxpemVfbW9kdWxlICgpXG5cbigqKiBUbyBiZSB1c2VkIGluIGltcGxlbWVudGluZyBDb3JlLCBidXQgbm90IGJ5IGVuZCB1c2Vycy4gKilcbm1vZHVsZSBDb3JlX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpZ2l0X3N0cmluZ19oZWxwZXJzID0gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbiAgbW9kdWxlIFRpbWVfem9uZSA9IFpvbmVcbiAgbW9kdWxlIE9mZGF5X2hlbHBlcnMgPSBPZmRheV9oZWxwZXJzXG4gIG1vZHVsZSBTcGFuX2Zsb2F0ID0gU3Bhbl9mbG9hdFxuXG4gIG1vZHVsZSBCaWdidWZmZXJfaW50ZXJuYWwgPSBCaWdidWZmZXJfaW50ZXJuYWxcbiAgbW9kdWxlIFN0YWJsZV9pbnRlcm5hbCA9IFN0YWJsZV9pbnRlcm5hbFxuICBtb2R1bGUgU3RkX2ludGVybmFsID0gU3RkX2ludGVybmFsXG5cbiAgbW9kdWxlIFRpbWVfbnNfYWx0ZXJuYXRlX3NleHAgPSBUaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5lbmRcblxubW9kdWxlIENvcmVfa2VybmVsX3ByaXZhdGUgPSBDb3JlX3ByaXZhdGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3ByaXZhdGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFVpX2VmZmVjdF9pbnRmXG5cbnR5cGUgJ2EgdCA9IC4uXG50eXBlICdhIHQgKz0gSWdub3JlIDogdW5pdCB0IHwgTWFueSA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuXG4oKiBXZSB1c2UgdGhpcyB0YWJsZSBmb3IgZGlzcGF0Y2hpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgaW4gYW4gZWZmaWNpZW50IHdheS4gICopXG50eXBlIGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZGVuXG5cbmxldCBoYW5kbGVycyA6IChoaWRkZW4gLT4gdW5pdCkgSGFzaHRibC5NKEludCkudCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KSB+c2l6ZTo4XG5cbm1vZHVsZSBEZWZpbmUgKEhhbmRsZXIgOiBIYW5kbGVyKSA6XG4gIFMgd2l0aCB0eXBlIGFjdGlvbiA6PSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogSGFuZGxlci5BY3Rpb24udCAtPiB1bml0IHRcblxuICBsZXQga2V5ID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZTtcbiAgICAgICAgY2FsbGJhY2sgKClcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbm1vZHVsZSBEZWZpbmUxIChIYW5kbGVyIDogSGFuZGxlcjEpIDpcbiAgUzEgd2l0aCB0eXBlICdhIGFjdGlvbiA6PSAnYSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogJ2EgSGFuZGxlci5BY3Rpb24udCAtPiAnYSB0XG5cbiAgbGV0IGtleSA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgbGV0IGNhbGxlZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICBsZXQgY2FsbGJhY2sgYSA9XG4gICAgICAgICAgaWYgIWNhbGxlZFxuICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJvbl9yZXNwb25zZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMhXCJcbiAgICAgICAgICBlbHNlIGNhbGxlZCA6PSB0cnVlO1xuICAgICAgICAgIGNhbGxiYWNrIGFcbiAgICAgICAgaW5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWUgfm9uX3Jlc3BvbnNlOmNhbGxiYWNrXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5sZXQgZ2V0X2tleSB0ID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgdClcblxubGV0IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYikpID1cbiAgSGFzaHRibC5maW5kX2V4biBoYW5kbGVycyAoZ2V0X2tleSB0KSAoVCAodCwgY2IpKVxuOztcblxubW9kdWxlIFByaW50X3MgPSBEZWZpbmUgKHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBTZXhwXG5cbiAgICBsZXQgaGFuZGxlIHMgPSBwcmludF9zIHNcbiAgZW5kKVxuXG5sZXQgcHJpbnRfcyA9IFByaW50X3MuaW5qZWN0XG5cbigqIEVmZmVjdGZ1bCB0aGluZ3MgKilcbnR5cGUgJ2EgdCArPVxuICB8IFJldHVybiA6ICdhIC0+ICdhIHRcbiAgfCBMYXp5IDogJ2EgdCBMYXp5LnQgLT4gJ2EgdFxuICB8IEJpbmQgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2IgdFxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE1hcCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYlxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE5ldmVyIDogJ2IgdFxuICB8IEZ1biA6IChjYWxsYmFjazooJ2EgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ2EgdFxuXG5sZXQgcmV0dXJuIGEgPSBSZXR1cm4gYVxubGV0IGJpbmQgKHR5cGUgYSkgKHQgOiBhIHQpIH5mID0gQmluZCB7IHQ7IGYgfVxubGV0IG1hcCAodHlwZSBhIGIpICh0IDogYSB0KSB+ZiA6IGIgdCA9IE1hcCB7IHQ7IGYgfVxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBvZl9mdW4gfmYgPSBGdW4gZlxubGV0IGxhenlfIGEgPSBMYXp5IGFcblxuaW5jbHVkZSBDb3JlLk1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IHJlYyBldmFsIDogdHlwZSBhLiBhIHQgLT4gY2FsbGJhY2s6KGEgLT4gdW5pdCkgLT4gdW5pdCA9XG4gIGZ1biB0IH5jYWxsYmFjayAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBGdW4gZiAtPiBmIH5jYWxsYmFja1xuICB8IElnbm9yZSAtPiBjYWxsYmFjayAoKVxuICB8IFJldHVybiBhIC0+IGNhbGxiYWNrIGFcbiAgfCBMYXp5IChsYXp5IHQpIC0+IGV2YWwgdCB+Y2FsbGJhY2tcbiAgfCBNYW55IGwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZXZhbCB+Y2FsbGJhY2s6aWdub3JlKTtcbiAgICBjYWxsYmFjayAoKVxuICB8IEJpbmQgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gZXZhbCAoZiBhKSB+Y2FsbGJhY2spXG4gIHwgTWFwIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGNhbGxiYWNrIChmIGEpKVxuICB8IE5ldmVyIC0+ICgpXG4gIHwgdCAtPiBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2FsbGJhY2spKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlID0gZXZhbCB+Y2FsbGJhY2s6aWdub3JlXG5cbiAgdHlwZSBoaWRlID0gaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRlXG5cbiAgbGV0IGhhbmRsZXJzID0gaGFuZGxlcnNcbiAgbGV0IG9mX2Z1biA9IG9mX2Z1blxuZW5kXG5cbm1vZHVsZSBBZHZhbmNlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3luY19mdW5fYXJnID0gc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyKSAtPiAnciB0XG4gICAgZW5kXG5cbiAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IG9uX3Jlc3BvbnNlIChmIGEpXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW5jX2Z1biA9IERlZmluZTEgKFN5bmNfZnVuX2FyZylcblxuICBsZXQgb2Zfc3luY19mdW4gZiBhID0gU3luY19mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBDYWxsYmFjayA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9XG4gICAgICAgIHsgcmVxdWVzdCA6ICdhXG4gICAgICAgIDsgb25fcmVzcG9uc2UgOiAnYiAtPiB1bml0IHRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2UgPSB7IHJlcXVlc3Q7IG9uX3Jlc3BvbnNlIH1cbiAgICAgIGxldCByZXF1ZXN0IHsgcmVxdWVzdDsgXyB9ID0gcmVxdWVzdFxuICAgICAgbGV0IHJlc3BvbmRfdG8geyBvbl9yZXNwb25zZTsgXyB9IHJlc3BvbnNlID0gb25fcmVzcG9uc2UgcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIGxldCBtYWtlIDogcmVxdWVzdDonYSAtPiBldmFsdWF0b3I6KCgnYSwgJ2IpIENhbGxiYWNrLnQgLT4gdW5pdCB0KSAtPiAnYiB0ID1cbiAgICAgIGZ1biB+cmVxdWVzdCB+ZXZhbHVhdG9yIC0+XG4gICAgICBFeHBlcnQub2ZfZnVuIH5mOihmdW4gfmNhbGxiYWNrIC0+XG4gICAgICAgIGxldCBjYWxsYmFjayA9XG4gICAgICAgICAgQ2FsbGJhY2subWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2U6KGZ1biByZXNwb25zZSAtPlxuICAgICAgICAgICAgY2FsbGJhY2sgcmVzcG9uc2U7XG4gICAgICAgICAgICBJZ25vcmUpXG4gICAgICAgIGluXG4gICAgICAgIEV4cGVydC5oYW5kbGUgKGV2YWx1YXRvciBjYWxsYmFjaykpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFN2YXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2Egc3RhdGUgPVxuICAgICAgICB8IEVtcHR5IG9mIHsgaGFuZGxlcnMgOiAoJ2EgLT4gdW5pdCkgQmFnLnQgfVxuICAgICAgICB8IEZ1bGwgb2YgJ2FcblxuICAgICAgdHlwZSAnYSB0ID0gJ2Egc3RhdGUgcmVmXG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSByZWYgKEVtcHR5IHsgaGFuZGxlcnMgPSBCYWcuY3JlYXRlICgpIH0pXG5cbiAgICAgIGxldCB1cG9uIHQgaGFuZGxlciA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSB7IGhhbmRsZXJzIH0gLT4gaWdub3JlIChCYWcuYWRkIGhhbmRsZXJzIGhhbmRsZXIgOiBfIEJhZy5FbHQudClcbiAgICAgICAgfCBGdWxsIHggLT4gaGFuZGxlciB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmlsbF9pZl9lbXB0eSB0IHggPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRnVsbCBfIC0+ICgpXG4gICAgICAgIHwgRW1wdHkgeyBoYW5kbGVycyB9IC0+XG4gICAgICAgICAgQmFnLml0ZXIgaGFuZGxlcnMgfmY6KGZ1biBoYW5kbGVyIC0+IGhhbmRsZXIgeCk7XG4gICAgICAgICAgdCA6PSBGdWxsIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwZWVrIHQgPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgXyAtPiBOb25lXG4gICAgICAgIHwgRnVsbCB4IC0+IFNvbWUgeFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1bl9hcmcgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyIFN2YXIudCkgLT4gJ3IgdFxuICAgICAgZW5kXG5cbiAgICAgIGxldCBoYW5kbGUgKEFjdGlvbi5UIChhLCBmKSkgfm9uX3Jlc3BvbnNlID0gU3Zhci51cG9uIChmIGEpIG9uX3Jlc3BvbnNlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW4gPSBEZWZpbmUxIChTdmFyX2Z1bl9hcmcpXG5cbiAgICBsZXQgb2Zfc3Zhcl9mdW4gZiBhID0gU3Zhcl9mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICAgIG1vZHVsZSBRdWVyeV9yZXNwb25zZV90cmFja2VyID0gc3RydWN0XG4gICAgICB0eXBlICgncSwgJ3IpIHJwYyA9XG4gICAgICAgIHsgcXVlcnkgOiAncVxuICAgICAgICA7IHJlc3BvbnNlIDogJ3IgU3Zhci50XG4gICAgICAgIH1cblxuICAgICAgdHlwZSAoJ3EsICdyKSB0ID0gKCdxLCAncikgcnBjIEJhZy50XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBCYWcuY3JlYXRlICgpXG5cbiAgICAgIGxldCBhZGRfcXVlcnkgdCBxdWVyeSA9XG4gICAgICAgIGxldCByZXNwb25zZSA9IFN2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGlnbm9yZSAoQmFnLmFkZCB0IHsgcXVlcnk7IHJlc3BvbnNlIH0gOiBfIEJhZy5FbHQudCk7XG4gICAgICAgIHJlc3BvbnNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIHQgPVxuICAgICAgICBCYWcudG9fbGlzdCB0IHw+IExpc3QubWFwIH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgPSBfIH0gLT4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICB0eXBlICdyIG1heWJlX3Jlc3BvbmQgPVxuICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldFxuICAgICAgICB8IFJlc3BvbmQgb2YgJ3JcblxuICAgICAgbGV0IG1heWJlX3Jlc3BvbmQgdCB+ZiA9XG4gICAgICAgIEJhZy5maWx0ZXJfaW5wbGFjZSB0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgfSAtPlxuICAgICAgICAgIG1hdGNoIGYgcXVlcnkgd2l0aFxuICAgICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0IC0+IHRydWVcbiAgICAgICAgICB8IFJlc3BvbmQgcmVzcCAtPlxuICAgICAgICAgICAgU3Zhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIHJlc3A7XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2ZfcXVlcnlfcmVzcG9uc2VfdHJhY2tlciBxcnQgPSBvZl9zdmFyX2Z1biAoUXVlcnlfcmVzcG9uc2VfdHJhY2tlci5hZGRfcXVlcnkgcXJ0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEFkdmFuY2VkXG4iLCJvcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFRva2VuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJZGVudFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IEF0a2V5d29yZFxuICAgIHwgSGFzaFxuICAgIHwgU3RyaW5nXG4gICAgfCBVcmlcbiAgICB8IERlbGltXG4gICAgfCBOdW1iZXJcbiAgICB8IFBlcmNlbnRhZ2VcbiAgICB8IERpbWVuc2lvblxuICAgIHwgV2hpdGVfc3BhY2VcbiAgICB8IENvbG9uXG4gICAgfCBTZW1pX2NvbG9uXG4gICAgfCBDb21tYVxuICAgIHwgTGJyYWNrZXRcbiAgICB8IFJicmFja2V0XG4gICAgfCBMcGFyZW5cbiAgICB8IFJwYXJlblxuICAgIHwgTGN1cmx5XG4gICAgfCBSY3VybHlcbiAgICB8IENvbW1lbnRcbiAgICB8IEVvZlxuICAgIHwgRXJyb3JcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyAoKiBzdGFydCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgbGVuIDogaW50XG4gIDsgKCogbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBjdXJyZW50IDogVG9rZW4udFxuICB9XG5cbnR5cGUgbWFyayA9IE1hcmsgb2YgaW50IFtAQHVuYm94ZWRdXG5cbmxldCBtYXJrIHQgPSBNYXJrIHQubGVuXG5sZXQgc291cmNlIHQgPSB0LnNcbmxldCBuZXh0X3BvcyB0ID0gdC5vZmYgKyB0LmxlblxubGV0IGlzX25leHRfZW9mIHQgPSBuZXh0X3BvcyB0ID49IFN0cmluZy5sZW5ndGggdC5zXG5sZXQgbmV4dF9jaGFyIHQgPSB0LnMuW25leHRfcG9zIHRdXG5sZXQgcmVzZXQgdCAoTWFyayB2KSA9IHQubGVuIDwtIHZcbmxldCBjb25zdW1lXzEgdCA9IHQubGVuIDwtIHQubGVuICsgMVxubGV0IGNvbnN1bWVfbiB0IG4gPSB0LmxlbiA8LSB0LmxlbiArIG5cblxubGV0IG9uZV9jaGFyX3Rva2VuIHQgdG9rID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBjb25zdW1lXzEgdDtcbiAgdC5jdXJyZW50IDwtIHRva1xuOztcblxuZXhjZXB0aW9uIEVycm9yX2hhcHBlbmVkXG5cbmxldCBlcnJvciB0ID1cbiAgdC5jdXJyZW50IDwtIEVycm9yO1xuICByYWlzZSBFcnJvcl9oYXBwZW5lZFxuOztcblxubGV0IGFjY2VwdCB0IGYgPVxuICBpZiAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpXG4gIHRoZW4gKFxuICAgIGNvbnN1bWVfMSB0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBhY2NlcHRfY2hhciB0IGNoID0gYWNjZXB0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBhY2NlcHRfc3RyaW5nIHQgc3RyID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPSAwXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgcG9zID0gbmV4dF9wb3MgdCBpblxuICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBwb3MgKyBzdHJfbGVuID4gU3RyaW5nLmxlbmd0aCB0LnNcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHQucyB+cG9zIH5zdWJzdHJpbmc6c3RyXG4gICAgdGhlbiAoXG4gICAgICBjb25zdW1lX24gdCBzdHJfbGVuO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKVxuOztcblxubGV0IGV4cGVjdCB0IGYgPSBpZiBhY2NlcHQgdCBmIHRoZW4gKCkgZWxzZSBlcnJvciB0XG5sZXQgZXhwZWN0X2NoYXIgdCBjaCA9IGV4cGVjdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgbWFueSB0IGYgPVxuICB3aGlsZSAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpIGRvXG4gICAgY29uc3VtZV8xIHRcbiAgZG9uZVxuOztcblxubGV0IG1hbnkxIHQgZiA9XG4gIGV4cGVjdCB0IGY7XG4gIG1hbnkgdCBmXG47O1xuXG5sZXQgcGx1c19vcl9taW51cyA9IGZ1bmN0aW9uXG4gIHwgJy0nIHwgJysnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1zdGFydCA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubWNoYXIgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyB8ICctJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlkZW50IHQgPVxuICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICB0aGVuXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgICB0aGVuIG1hbnkgdCBubWNoYXJcbiAgICBlbHNlIChcbiAgICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgICBtYW55IHQgbm1jaGFyKVxuICBlbHNlIChcbiAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgIG1hbnkgdCBubWNoYXIpXG47O1xuXG5sZXQgaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGlkZW50IHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJygnIHRoZW4gdC5jdXJyZW50IDwtIEZ1bmN0aW9uIGVsc2UgdC5jdXJyZW50IDwtIElkZW50XG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXG4nIHwgJ1xceDBjJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlID1cbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgcXVvdGUpO1xuICBjb25zdW1lXzEgdDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICB8ICdcXG4nIHwgJ1xccicgfCAnXFx4MGMnIHwgJ1xcXFwnIC0+IGZhbHNlXG4gICAgICB8IGMgd2hlbiBDaGFyLmVxdWFsIGMgcXVvdGUgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICdcXFxcJ1xuICAgIHRoZW5cbiAgICAgIGlmIGFjY2VwdF9jaGFyIHQgcXVvdGVcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICAgICAgfCAnXFxuJyB8ICdcXHgwYycgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJ1xcbicgOiBib29sKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgX2MgLT5cbiAgICAgICAgICAoKiBIYW5kbGUgdGhlIFwiZXNjYXBlXCIgcnVsZTpcbiAgICAgICAgICAgICB7dlxuICAgICAgICAgICAgICAgIHVuaWNvZGU6IFxcXFxbMC05YS1mXXsxLDZ9KFxcclxcbnxbIFxcblxcclxcdFxcZl0pP1xuICAgICAgICAgICAgICAgIGVzY2FwZSA6IHt1bmljb2RlfXxcXFxcW15cXG5cXHJcXGYwLTlhLWZdXG4gICAgICAgICAgICAgIHZ9XG4gICAgICAgICAgKilcbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpO1xuICBleHBlY3RfY2hhciB0IHF1b3RlXG47O1xuXG5sZXQgc3RhcnRfbnVtIHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJy4nIDogYm9vbCk7XG4gICAgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHN0YXJ0X2lkZW50IH5wcmVmaXggdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGFjY2VwdF9zdHJpbmcgdCBwcmVmaXhcbiAgICAmJlxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nIHRoZW4gYWNjZXB0X2NoYXIgdCAnLScgfHwgYWNjZXB0IHQgbm1zdGFydCBlbHNlIGFjY2VwdCB0IG5tc3RhcnRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZTtcbiAgdC5jdXJyZW50IDwtIFN0cmluZ1xuOztcblxubGV0IGV4cG9uZW50aWFsX3BhcnQgdCA9XG4gIGxldCBtYXJrID0gbWFyayB0IGluXG4gIGlmIGFjY2VwdCB0IChmdW5jdGlvblxuICAgIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW5cbiAgICBpZiBhY2NlcHQgdCBwbHVzX29yX21pbnVzXG4gICAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlIGlmIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgICB0aGVuIG1hbnkgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZVxuICAgICAgKCogQmFja3RyYWNrIGlmIHRoZXJlIGFyZSBubyBkaWdpdHMgb3Igc2lnbnMgYWZ0ZXIgdGhlICdlJyBiZWNhdXNlXG4gICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSAnZScgd2FzIGFjdHVhbGx5IGEgcGFydCBvZiBzb21ldGhpbmcgZWxzZS4gRm9yXG4gICAgICAgICBleGFtcGxlLCB0aGUgJ2UnIGNvdWxkIGJlIHBhcnQgb2YgYW4gJ2VtJyBvciAnZW4nIGRpbWVuc2lvbiBpbnN0ZWFkXG4gICAgICAgICBvZiBiZWdpbm5pbmcgdGhlIGV4cG9uZW50aWFsIHBhcnQgb2YgYSBzY2llbnRpZmljIG5vdGF0aW9uIG51bWJlci5cblxuICAgICAgICAgRXhhbXBsZTogMS4yZTMgaXMgc2NpZW50aWZpYyBub3RhdGlvbiwgYnV0IDEuMmVtIGlzIGEgbnVtYmVyIHdpdGggYVxuICAgICAgICAgZGltZW5zaW9uLiAqKVxuICAgICAgcmVzZXQgdCBtYXJrXG47O1xuXG5sZXQgbnVtIHQgPVxuICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnLidcbiAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgZWxzZSAoXG4gICAgbWFueTEgdCBDaGFyLmlzX2RpZ2l0O1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy4nIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0KTtcbiAgZXhwb25lbnRpYWxfcGFydCB0XG47O1xuXG5sZXQgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIG51bSB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICclJ1xuICB0aGVuIHQuY3VycmVudCA8LSBQZXJjZW50YWdlXG4gIGVsc2UgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgdGhlbiAoXG4gICAgaWRlbnQgdDtcbiAgICB0LmN1cnJlbnQgPC0gRGltZW5zaW9uKVxuICBlbHNlIHQuY3VycmVudCA8LSBOdW1iZXJcbjs7XG5cbmxldCBoYXNoX29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICcjJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZiBhY2NlcHQgdCBubWNoYXJcbiAgdGhlbiAoXG4gICAgbWFueTEgdCBubWNoYXI7XG4gICAgdC5jdXJyZW50IDwtIEhhc2gpXG4gIGVsc2UgdC5jdXJyZW50IDwtIERlbGltXG47O1xuXG5sZXQgYXRrZXl3b3JkIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdAJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZGVudCB0O1xuICB0LmN1cnJlbnQgPC0gQXRrZXl3b3JkXG47O1xuXG5sZXQgdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICd1Jyk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcInVybChcIlxuICB0aGVuIChcbiAgICBsZXQgbSA9IG1hcmsgdCBpblxuICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgIGlmIENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXCInIHx8IENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXFwnJ1xuICAgIHRoZW4gKFxuICAgICAgcmVzZXQgdCBtO1xuICAgICAgdC5jdXJyZW50IDwtIEZ1bmN0aW9uKVxuICAgIGVsc2UgKFxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcpJyB8ICcgJyAtPiBmYWxzZVxuICAgICAgICB8ICdcXCcnIHwgJ1wiJyB8ICcoJyAtPiBlcnJvciB0XG4gICAgICAgIHwgYyB3aGVuIENoYXIuaXNfcHJpbnQgYyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBlcnJvciB0KTtcbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgZXhwZWN0X2NoYXIgdCAnKSc7XG4gICAgICB0LmN1cnJlbnQgPC0gVXJpKSlcbiAgZWxzZSBpZGVudF9vcl9mdW5jdGlvbiB0XG47O1xuXG5sZXQgY29tbWVudF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIvKlwiXG4gIHRoZW4gKFxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyonIC0+IGZhbHNlXG4gICAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICAgIGlmIGFjY2VwdF9zdHJpbmcgdCBcIiovXCJcbiAgICAgIHRoZW4gdC5jdXJyZW50IDwtIENvbW1lbnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0X2NoYXIgdCAnKidcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSBlcnJvciB0XG4gICAgaW5cbiAgICBsb29wICgpKVxuICBlbHNlIChcbiAgICBleHBlY3RfY2hhciB0ICcvJztcbiAgICB0LmN1cnJlbnQgPC0gRGVsaW0pXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgbGV0IG5ld19vZmYgPSBuZXh0X3BvcyB0IGluXG4gIHQub2ZmIDwtIG5ld19vZmY7XG4gIHQubGVuIDwtIDA7XG4gIGlmIGlzX25leHRfZW9mIHRcbiAgdGhlbiB0LmN1cnJlbnQgPC0gRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICB8IGMgd2hlbiBpc193aGl0ZXNwYWNlIGMgLT5cbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgdC5jdXJyZW50IDwtIFdoaXRlX3NwYWNlXG4gICAgfCAnOicgLT4gb25lX2NoYXJfdG9rZW4gdCBDb2xvblxuICAgIHwgJzsnIC0+IG9uZV9jaGFyX3Rva2VuIHQgU2VtaV9jb2xvblxuICAgIHwgJ3snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGN1cmx5XG4gICAgfCAnfScgLT4gb25lX2NoYXJfdG9rZW4gdCBSY3VybHlcbiAgICB8ICdbJyAtPiBvbmVfY2hhcl90b2tlbiB0IExicmFja2V0XG4gICAgfCAnXScgLT4gb25lX2NoYXJfdG9rZW4gdCBSYnJhY2tldFxuICAgIHwgJygnIC0+IG9uZV9jaGFyX3Rva2VuIHQgTHBhcmVuXG4gICAgfCAnKScgLT4gb25lX2NoYXJfdG9rZW4gdCBScGFyZW5cbiAgICB8ICcsJyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbW1hXG4gICAgfCAoJ1xcJycgfCAnXCInKSBhcyBxdW90ZSAtPiBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlXG4gICAgfCAoJzAnIC4uICc5JyB8ICcuJyB8ICcrJyB8ICctJykgd2hlbiBzdGFydF9udW0gdCAtPlxuICAgICAgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHRcbiAgICB8ICcvJyAtPiBjb21tZW50X29yX2RlbGltIHRcbiAgICB8ICcjJyAtPiBoYXNoX29yX2RlbGltIHRcbiAgICB8ICdAJyB3aGVuIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJAXCIgdCAtPiBhdGtleXdvcmQgdFxuICAgIHwgJ3UnIC0+IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgfCBfIC0+XG4gICAgICBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICAgICAgdGhlbiBpZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICgqIHRoaXMgaXMgd2VpcmQgYnV0IHRoZSBzcGVjIGlzIHdlaXJkICopXG4gICAgICAgIHQuY3VycmVudCA8LSBEZWxpbSkpXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgKCogTWFrZSBzdXJlIHdlIGFyZSBpZGVtcG90ZW50IHdoZW4gd2UgZ2V0IGludG8gdGhlIGVycm9yIHN0YXRlICopXG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFcnJvclxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIHRyeSBuZXh0IHQgd2l0aFxuICAgIHwgRXJyb3JfaGFwcGVuZWQgLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIHMgPVxuICAoKiBjdXJyZW50IGlzIGR1bW15IGFuZCB3aWxsIGJlIHNldCBieSBjYWxsIHRvIG5leHQgKilcbiAgbGV0IHQgPSB7IHM7IG9mZiA9IDA7IGxlbiA9IDA7IGN1cnJlbnQgPSBXaGl0ZV9zcGFjZSB9IGluXG4gIG5leHQgdDtcbiAgdFxuOztcblxubGV0IHNsaWNlIHQgPSB0Lm9mZiwgdC5sZW5cbmxldCBjdXJyZW50IHQgPSB0LmN1cnJlbnRcblxubGV0IGN1cnJlbnRfdGV4dCB0ID1cbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVvZlxuICB0aGVuIFwiXCJcbiAgZWxzZSAoXG4gICAgbGV0IHBvcywgbGVuID0gc2xpY2UgdCBpblxuICAgIFN0cmluZy5zdWIgdC5zIH5wb3Mgfmxlbilcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgdCA9IGNyZWF0ZSBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIGxldCBzdGFydCwgbGVuID0gc2xpY2UgdCBpblxuICAgIGxldCBhY2MgPSAoY3VycmVudCB0LCBzdGFydCwgbGVuKSA6OiBhY2MgaW5cbiAgICBpZiBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFb2YgfHwgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRXJyb3JcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbmV4dCB0O1xuICAgICAgbG9vcCBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCB0ZXN0IHMgPVxuICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAoU2V4cC50b19zdHJpbmdfbWFjaCAoWyVzZXhwX29mOiAoVG9rZW4udCAqIGludCAqIGludCkgbGlzdF0gKHRvX2xpc3QgcykpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlb2ZcIiA9XG4gICAgICB0ZXN0IFwiXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoRW9mIDAgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInNpbXBsZV90b2tlbnNcIiA9XG4gICAgICB0ZXN0IFwiKSh7fVtdOzpcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoUnBhcmVuIDAgMSkoTHBhcmVuIDEgMSkoTGN1cmx5IDIgMSkoUmN1cmx5IDMgMSkoTGJyYWNrZXQgNCAxKShSYnJhY2tldCA1IDEpKFNlbWlfY29sb24gNiAxKShDb2xvbiA3IDEpKEVvZiA4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaWRlbnRcIiA9XG4gICAgICB0ZXN0IFwiLWZvby1iYXI6IGJhelwiO1xuICAgICAgdGVzdCBcIi1mb28tYmFyKFwiO1xuICAgICAgdGVzdCBcIkBmb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC0tZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIi0tdmFyXCI7XG4gICAgICB0ZXN0IFwiUkdCQVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgOCkoQ29sb24gOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCA4KShFb2YgOCAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgMTApKEVvZiAxMCAwKSlcbiAgICAoKElkZW50IDAgNSkoRW9mIDUgMCkpXG4gICAgKChJZGVudCAwIDQpKEVvZiA0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwid2hpdGVzcGFjZVwiID1cbiAgICAgIHRlc3QgXCIgIFwiO1xuICAgICAgWyVleHBlY3Qge3woKFdoaXRlX3NwYWNlIDAgMikoRW9mIDIgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIm51bWJlcnNcIiA9XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW1cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWluXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDNjbVwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAxMjAlXCI7XG4gICAgICB0ZXN0IFwiZ3JpZDogMCAxIGZvb1wiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41LWluXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUyMFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKERpbWVuc2lvbiAxMyAzKShFb2YgMTYgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShQZXJjZW50YWdlIDEzIDQpKEVvZiAxNyAwKSlcbiAgICAoKElkZW50IDAgNCkoQ29sb24gNCAxKShXaGl0ZV9zcGFjZSA1IDEpKE51bWJlciA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJiYWRseV9xdW90ZWRcIiA9XG4gICAgICB0ZXN0IFwiJ2ZvbyBiYXJcIjtcbiAgICAgIHRlc3QgXCInXCI7XG4gICAgICB0ZXN0IFwiJ1xcXFwnXCI7XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICgoRXJyb3IgMCA4KSlcbiAgICAoKEVycm9yIDAgMSkpXG4gICAgKChFcnJvciAwIDMpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicXVvdGVkXCIgPVxuICAgICAgdGVzdCB7fCdGb28gJ1wiQmFyXCInOycgJ1xcJycgXCJcXFwiXCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoU3RyaW5nIDAgNikoU3RyaW5nIDYgNSkoU3RyaW5nIDExIDMpKFdoaXRlX3NwYWNlIDE0IDEpKFN0cmluZyAxNSA0KShXaGl0ZV9zcGFjZSAxOSAxKShTdHJpbmcgMjAgNCkoRW9mIDI0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiY29sb3JzXCIgPVxuICAgICAgdGVzdCB7fGNvbG9yOiAjZjAwfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShIYXNoIDcgNCkoRW9mIDExIDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaW1wb3J0XCIgPVxuICAgICAgdGVzdCB7fEBpbXBvcnQgXCJmb28uYmFyXCI7fH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKEF0a2V5d29yZCAwIDcpKFdoaXRlX3NwYWNlIDcgMSkoU3RyaW5nIDggOSkoU2VtaV9jb2xvbiAxNyAxKShFb2YgMTggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJyZWQgZXhhbXBsZVwiID1cbiAgICAgIHRlc3QgXCJyZWQtLT5cIjtcbiAgICAgIFslZXhwZWN0IHt8ICgoSWRlbnQgMCA1KShEZWxpbSA1IDEpKEVvZiA2IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidXJsXCIgPVxuICAgICAgdGVzdCB7fHVybCggXCJodHRwOi8vd3d3dy5nb29nbGUuY29tXCIpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyl8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuY29tICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuXCJjb20gKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKEZ1bmN0aW9uIDAgNCkoV2hpdGVfc3BhY2UgNCAxKShTdHJpbmcgNSAyNCkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFJwYXJlbiAyOCAxKShFb2YgMjkgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShXaGl0ZV9zcGFjZSAyOCAxKShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoVXJpIDAgMzApKEVvZiAzMCAwKSlcbiAgICAoKEVycm9yIDAgMjUpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZXNjYXBlXCIgPVxuICAgICAgdGVzdCB7fFwidGVzdFxcMTlhYmYyXFwyXCJ8fTtcbiAgICAgIHRlc3Qge3xcIlxcMDEwXFx4RkZhXFxvMTIzXFxuXFxcXFxcdXsxMjM0NX1hYfCfkKrwn5Cq8J+QqvCfkKrwn5CqXCJ8fTtcbiAgICAgIHRlc3Qge3xcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChTdHJpbmcgMCAxNSkoRW9mIDE1IDApKVxuICAgICgoU3RyaW5nIDAgNTEpKEVvZiA1MSAwKSlcbiAgICAoKFN0cmluZyAwIDQ5KShFb2YgNDkgMCkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBSZWN1cnNpdmUgZGVzY2VudCBwYXJzZXJzLiAgQSBwYXJzZXIgcmV0dXJucyBmYWxzZSBpZiBiYXNlZCBvbiBhXG4gICBzaW5nbGUgdG9rZW4gbG9va2FoZWFkIGl0IGRlY2lkZXMgdGhhdCB0aGUgZ2l2ZW4gdGV4dCBjYW4gbm90IGJlXG4gICBwYXJzZWQuICBBbnkgb3RoZXIgcGFyc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IHJhaXNpbmcgZXhjZXB0aW9ucy5cblxuICAgU29tZSBwYXJzZXJzIHJldHVybiB1bml0IGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoZW0gd2hlbiBhIGZhaWx1cmVcbiAgIHRvIHBhcnNlIGltcGxpZXMgYSBwYXJzZSBlcnJvciAoYW5kIG5vdCB0aGF0IHNvbWUgcGFyc2VyIGhpZ2hlciB1cFxuICAgaW4gdGhlIGNhbGwgY2hhaW4gc2hvdWxkIHRyeSB0byBwYXJzZSBzb21ldGhpbmcgZWxzZSkuXG5cbiAgIEZvciBzaW1wbGljaXR5IHRoZSBwYXJzZXJzIHRoZW1zZWx2ZXMganVzdCB2YWxpZGF0ZSBhbmQgZG9uJ3RcbiAgIHByb2R1Y2UgYW55IHZhbHVlcy4gIFRoYXQgbGVhZHMgdG8gYSBmZXcgdW5lbGVnYW50IGNvbnN0cnVjdHNcbiAgIChwcmltYXJpbHkgaW4gZGVjbGFyYXRpb24pLCBidXQgbWVhbnMgd2Ugb3RoZXJ3aXNlIGhhdmUgcmF0aGVyXG4gICBzaW1wbGUgY29kZSB0aGF0IGFsc28gYWxsb2NhdGVzIHZlcnkgbGl0dGxlLlxuKilcblxub3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCByZWMgbmV4dCBjdCA9XG4gIENzc190b2tlbml6ZXIubmV4dCBjdDtcbiAgaWYgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIHRoZW4gbmV4dCBjdCBlbHNlICgpXG47O1xuXG5sZXQgc2tpcF93aGl0ZV9zcGFjZSBjdCA9XG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBXaGl0ZV9zcGFjZSkgZG9cbiAgICBuZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCBhY2NlcHQgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gKFxuICAgIG5leHQgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGV4cGVjdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiBuZXh0IGN0XG4gIGVsc2VcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmV4cGVjdGVkIHRva2VuXCJcbiAgICAgICAgICAoZXhwZWN0ZWQgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXG4gICAgICAgICAgKGdvdCA6IENzc190b2tlbml6ZXIuVG9rZW4udCldXG47O1xuXG5sZXQgcmVjIG1hbnkgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID0gaWYgZiBjdCB0aGVuIG1hbnkgY3QgZiBlbHNlICgpXG5cbmxldCBtYW55MSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPVxuICBpZiBmIGN0XG4gIHRoZW4gKFxuICAgIG1hbnkgY3QgZjtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgcmVjIGFueSBjdCA6IGJvb2wgPVxuICBsZXQgcmVzID1cbiAgICBtYXRjaCBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3Qgd2l0aFxuICAgIHwgSWRlbnQgfCBOdW1iZXIgfCBQZXJjZW50YWdlIHwgRGltZW5zaW9uIHwgU3RyaW5nIHwgVXJpIHwgRGVsaW0gfCBIYXNoIHwgQ29tbWEgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICB0cnVlXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBtYW55IGN0IGFueTtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMcGFyZW4gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMYnJhY2tldCAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJicmFja2V0O1xuICAgICAgdHJ1ZVxuICAgIHwgUmN1cmx5IHwgUnBhcmVuIHwgUmJyYWNrZXQgLT4gZmFsc2VcbiAgICB8IExjdXJseSAtPiBmYWxzZVxuICAgIHwgQXRrZXl3b3JkIHwgQ29sb24gfCBTZW1pX2NvbG9uIC0+IGZhbHNlXG4gICAgfCBDb21tZW50IHwgV2hpdGVfc3BhY2UgfCBFb2YgfCBFcnJvciAtPiBmYWxzZVxuICBpblxuICBpZiByZXMgdGhlbiBza2lwX3doaXRlX3NwYWNlIGN0IGVsc2UgKCk7XG4gIHJlc1xuXG5hbmQgZXhwZWN0X2FueSBjdCA9IGlmIGFueSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8YW55PlwiXVxuXG5hbmQgdmFsdWUwIGN0ID1cbiAgYW55IGN0XG4gIHx8IGJsb2NrIGN0XG4gIHx8XG4gIGlmIGFjY2VwdCBjdCBBdGtleXdvcmRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCB2YWx1ZSBjdCA9IG1hbnkxIGN0IHZhbHVlMFxuXG5hbmQgYmxvY2sgY3QgOiBib29sID1cbiAgaWYgYWNjZXB0IGN0IExjdXJseVxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgICAgdmFsdWUwIGN0XG4gICAgICB8fFxuICAgICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICAgIHRoZW4gKFxuICAgICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgICB0cnVlKVxuICAgICAgZWxzZSBmYWxzZSk7XG4gICAgZXhwZWN0IGN0IFJjdXJseTtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIGV4cGVjdF92YWx1ZSBjdCA9IGlmIHZhbHVlIGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDx2YWx1ZT5cIl1cblxubGV0IGRlY2xhcmF0aW9uIGN0ID1cbiAgbGV0IGlkZW50X3N0YXJ0LCBpZGVudF9sZW4gPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IGluXG4gIGlmIGFjY2VwdCBjdCBJZGVudFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGV4cGVjdCBjdCBDb2xvbjtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGxldCB2YWx1ZV9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgZXhwZWN0X3ZhbHVlIGN0O1xuICAgIGxldCBuZXh0X3Rva2VuX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBsZXQgc291cmNlID0gQ3NzX3Rva2VuaXplci5zb3VyY2UgY3QgaW5cbiAgICBTb21lXG4gICAgICAoIFN0cmluZy5zdWIgc291cmNlIH5wb3M6aWRlbnRfc3RhcnQgfmxlbjppZGVudF9sZW5cbiAgICAgICwgU3RyaW5nLnJzdHJpcFxuICAgICAgICAgIChTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOnZhbHVlX3N0YXJ0IH5sZW46KG5leHRfdG9rZW5fc3RhcnQgLSB2YWx1ZV9zdGFydCkpICkpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbiBjdCA9XG4gIG1hdGNoIGRlY2xhcmF0aW9uIGN0IHdpdGhcbiAgfCBTb21lIChmaWVsZCwgdmFsdWUpIC0+IGZpZWxkLCB2YWx1ZVxuICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8ZGVjbGFyYXRpb24+XCJdXG47O1xuXG4oKiBBcyBwZXI6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3R5bGUtYXR0ci9cbiAgIGRlY2xhcmF0aW9uLWxpc3RcbiAgIDogUyogZGVjbGFyYXRpb24/IFsgJzsnIFMqIGRlY2xhcmF0aW9uPyBdKlxuICAgO1xuKilcbmxldCBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBjdCA9XG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgbGV0IGFkZCBrdiA9XG4gICAgbWF0Y2gga3Ygd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaywgdikgLT4gcmVzIDo9IChrLCB2KSA6OiAhcmVzXG4gIGluXG4gIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgIHRoZW4gKFxuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKTtcbiAgTGlzdC5yZXYgIXJlc1xuOztcblxubGV0IHBhcnNlIHBhcnNlcl9mIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSBkb1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lO1xuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgbGV0IHJlcyA9IHBhcnNlcl9mIGN0IGluXG4gICAgZXhwZWN0IGN0IEVvZjtcbiAgICByZXMpXG47O1xuXG5sZXQgcHJpbnRfdG9rZW5zIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKG5vdCAoVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIEVvZikpIGRvXG4gICAgcHJpbnRfcyAoQ3NzX3Rva2VuaXplci5Ub2tlbi5zZXhwX29mX3QgKENzc190b2tlbml6ZXIuY3VycmVudCBjdCkpO1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgdmFsaWRhdGVfdmFsdWUgPSBwYXJzZSBleHBlY3RfdmFsdWVcbmxldCBwYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgPSBwYXJzZSBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBzXG5cbmxldCB0ZXN0X3BhcnNlciBwIHNleHBfb2ZfYXJnIHMgPVxuICBsZXQgciA9IHBhcnNlIHAgcyBpblxuICBwcmludGYgIVwiJXMgLS0+ICV7c2V4cDphcmcgT3JfZXJyb3IudH1cXG5cIiBzIHJcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcIlwiID1cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIFwiMCA0cHggOHB4IDAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMTIpLCAwIDJweCA0cHggMCBcXFxuICAgICAgICAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMDgpXCJcbiAgICAgIGluXG4gICAgICBwcmludF90b2tlbnMgdmFsdWU7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW4gfH1dO1xuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgKHZhbGlkYXRlX3ZhbHVlIHZhbHVlIDogdW5pdCBPcl9lcnJvci50KV07XG4gICAgICBbJWV4cGVjdCB7fFxuICAgIChcInZhbGlkYXRlX3ZhbHVlIHZhbHVlXCIgKE9rICgpKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInZhbHVlc1wiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X3ZhbHVlIFVuaXQuc2V4cF9vZl90IGluXG4gICAgICB0ZXN0IFwieFwiO1xuICAgICAgdGVzdCBcIjNcIjtcbiAgICAgIHRlc3QgXCIzaW5cIjtcbiAgICAgIHRlc3QgXCIzJVwiO1xuICAgICAgdGVzdCBcIiNmZmZcIjtcbiAgICAgIHRlc3QgXCIxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcIidIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJyZ2IoMCwwLDApXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgeCAtLT4gKE9rICgpKVxuICAgICAgMyAtLT4gKE9rICgpKVxuICAgICAgM2luIC0tPiAoT2sgKCkpXG4gICAgICAzJSAtLT4gKE9rICgpKVxuICAgICAgI2ZmZiAtLT4gKE9rICgpKVxuICAgICAgMSAwIGF1dG8gLS0+IChPayAoKSlcbiAgICAgICdIZWxsbyBXb3JsZCcgLS0+IChPayAoKSlcbiAgICAgIHJnYigwLDAsMCkgLS0+IChPayAoKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiAnSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogZm9vO1wiO1xuICAgICAgKCogU2VtaSdzIGFyZSBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIGxpc3QgKilcbiAgICAgIHRlc3QgXCJjb250ZW50OiBiYXIgXCI7XG4gICAgICAoKiBidXQgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIChhbnkgcmVhbGx5KSAqKVxuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKGZsZXggXCIxIDAgYXV0b1wiKSlcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBXb3JsZCcgLS0+IChPayAoY29udGVudCBcIidIZWxsbyBXb3JsZCdcIikpXG4gICAgICBjb250ZW50OiBmb287IC0tPiAoRXJyb3IgKFwiVW5leHBlY3RlZCB0b2tlblwiIChleHBlY3RlZCBFb2YpIChnb3QgU2VtaV9jb2xvbikpKVxuICAgICAgY29udGVudDogYmFyICAtLT4gKE9rIChjb250ZW50IGJhcikpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1bmljb2RlXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2J1wiO1xuICAgICAgcHJpbnRfZW5kbGluZSAoU2V4cC50b19zdHJpbmcgKFNleHAuQXRvbSBcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCIpKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2JyAtLT4gKE9rXG4gICAgIChjb250ZW50XG4gICAgICBcIidcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MidcIikpXG4gICAgXCJcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MlwiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvbiBsaXN0XCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBbJXNleHBfb2Y6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RdIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0bztcIjtcbiAgICAgIHRlc3RcbiAgICAgICAgXCJiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweFwiO1xuICAgICAgdGVzdCBcIjs7Ozs7XCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgZmxleDogMSAwIGF1dG87IC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFwiaW1nX3RyZWUucG5nXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHggLS0+IChPa1xuICAgICAoKGJhY2tncm91bmQgXCIjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0XCIpXG4gICAgICAobWFyZ2luLWxlZnQgMjAwcHgpKSlcbiAgICA7Ozs7OyAtLT4gKE9rICgpKVxuICAgIGZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikgKG90aGVyIHNhKSkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQ29yZS5Db3JlX3N0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICgqKiAoZmllbGQgKiB2YWx1ZSkgbGlzdC4gIFdoZXJlIHZhbHVlIHNob3VsZCBiZSBlc2NhcGVkIC8gcXVvdGVkXG4gICAgICAgIGFzIG5lY2Vzc2FyeSBhcyBwZXIgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNydWxlLXNldHMuICopXG4gICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm9wZW4gQ29yZVxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSBjc3NfZ2xvYmFsX3ZhbHVlcyA9XG4gIFsgYEluaGVyaXRcbiAgfCBgSW5pdGlhbFxuICBdXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA9IHJlZiAoZnVuIGRpZ2l0cyBmIC0+IHNwcmludGYgXCIlLipmXCIgZGlnaXRzIGYpXG5lbmRcblxubGV0IGYycyBkaWdpdHMgZiA9ICFQcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIGRpZ2l0cyBmXG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSR0JBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHIgOiBpbnRcbiAgICAgICAgOyBnIDogaW50XG4gICAgICAgIDsgYiA6IGludFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5yIH5nIH5iID9hICgpID0geyByOyBnOyBiOyBhIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBIU0xBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGggOiBpbnRcbiAgICAgICAgOyBzIDogUGVyY2VudC50XG4gICAgICAgIDsgbCA6IFBlcmNlbnQudFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5oIH5zIH5sID9hICgpID0geyBoOyBzOyBsOyBhIH1cbiAgICBlbmRcblxuICAgIHR5cGUgdCA9XG4gICAgICBbIGBSR0JBIG9mIFJHQkEudFxuICAgICAgfCBgSFNMQSBvZiBIU0xBLnRcbiAgICAgIHwgYE5hbWUgb2Ygc3RyaW5nXG4gICAgICB8IGBIZXggb2Ygc3RyaW5nXG4gICAgICB8IGBWYXIgb2Ygc3RyaW5nXG4gICAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCB0b19zdHJpbmdfY3NzIDogWzwgdCBdIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBSR0JBIHsgUkdCQS5yOyBnOyBiOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gWyVzdHJpbmcgXCJyZ2IoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0pXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nIFwicmdiYSgle3IjSW50fSwle2cjSW50fSwle2IjSW50fSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBIU0xBIHsgSFNMQS5oOyBzOyBsOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2xhKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBOYW1lIG5hbWUgLT4gbmFtZVxuICAgIHwgYEhleCBoZXggLT4gaGV4XG4gICAgfCBgVmFyIHZhciAtPiBbJXN0cmluZyBcInZhcigle3Zhcn0pXCJdXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsaWdubWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExlZnRcbiAgICB8IGBSaWdodFxuICAgIHwgYENlbnRlciAoKiBob3Jpem9udGFsICopXG4gICAgfCBgVG9wXG4gICAgfCBgQm90dG9tXG4gICAgfCBgTWlkZGxlICgqIHZlcnRpY2FsICopXG4gICAgfCBgSnVzdGlmeSAoKiB0ZXh0LWFsaWduIChpbiBhZGRpdGlvbiB0byBbaG9yaXpvbnRhbF0pICopXG4gICAgfCBgU3VwZXIgKCogdmVydGljYWwgKilcbiAgICB8IGBTdWIgKCogdmVydGljYWwgKilcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBUb3AgLT4gXCJ0b3BcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYEJvdHRvbSAtPiBcImJvdHRvbVwiXG4gICAgfCBgU3VwZXIgLT4gXCJzdXBlclwiXG4gICAgfCBgU3ViIC0+IFwic3ViXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYFJhdyBvZiBzdHJpbmdcbiAgICB8IGBDaCBvZiBmbG9hdFxuICAgIHwgYFJlbSBvZiBmbG9hdFxuICAgIHwgYEVtIG9mIGludFxuICAgIHwgYEVtX2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgUGVyY2VudCBvZiBQZXJjZW50LnRcbiAgICB8IGBQdCBvZiBmbG9hdFxuICAgIHwgYFB4IG9mIGludFxuICAgIHwgYFB4X2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgVmggb2YgUGVyY2VudC50XG4gICAgfCBgVncgb2YgUGVyY2VudC50XG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBSYXcgcyAtPiBzXG4gICAgfCBgQ2ggYyAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgY31jaFwiXVxuICAgIHwgYFJlbSBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXJlbVwiXVxuICAgIHwgYEVtIGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fWVtXCJdXG4gICAgfCBgRW1fZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1lbVwiXVxuICAgIHwgYFBlcmNlbnQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX0lXCJdXG4gICAgfCBgUHQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgcH1wdFwiXVxuICAgIHwgYFB4IGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fXB4XCJdXG4gICAgfCBgUHhfZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1weFwiXVxuICAgIHwgYFZoIHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dmhcIl1cbiAgICB8IGBWdyBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZ3XCJdXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcblxuICBsZXQgcGVyY2VudDEwMCA9IGBQZXJjZW50IChQZXJjZW50Lm9mX3BlcmNlbnRhZ2UgMTAwLilcbmVuZFxuXG5tb2R1bGUgQXV0b19vcl9sZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBBdXRvXG4gICAgfCBMZW5ndGgudFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCAjTGVuZ3RoLnQgYXMgbCAtPiBMZW5ndGgudG9fc3RyaW5nX2NzcyBsXG4gIDs7XG5lbmRcblxubGV0IHZhbHVlX21hcCBvIH5mID0gT3B0aW9uLnZhbHVlX21hcCBvIH5kZWZhdWx0OlwiXCIgfmZcbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0ICggQD4gKSA9IGNvbWJpbmVcbmxldCBjb25jYXQgbCA9IExpc3QuY29uY2F0IGxcbmxldCB0b19zdHJpbmdfbGlzdCA9IEZuLmlkXG5cbmxldCB0b19zdHJpbmdfY3NzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4gKGZpZWxkLCB2YWx1ZSkgLT4gWyVzdHJpbmcgXCIle2ZpZWxkfTogJXt2YWx1ZX1cIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIjtcIlxuOztcblxubGV0IG9mX3N0cmluZ19jc3NfZXhuIHMgPSBDc3NfcGFyc2VyLnBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyB8PiBPcl9lcnJvci5va19leG5cblxuKCoqIGNyZWF0ZV9yYXcgY3JlYXRlcyBhIHNpbmdsZSBmaWVsZCwgdmFsdWUgcGFpci4gIEl0IGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZFxuICAgIGNzcyB2YWx1ZS4gIEFzIHN1Y2ggaXQgaXMgdW5zYWZlIHRvIHVzZSB3aXRoIGFyYml0cmFyeSB2YWx1ZSBzdHJpbmdzLiAgQnV0IGZvciB0aGVcbiAgICB2YXN0IG1ham9yaXR5IG9mIGNvbWJpbmF0b3JzIGluIHRoaXMgbW9kdWxlIGl0IGlzIHRoZSByaWdodCB0aGluZyB0byB1c2UsIGFzIHdlIGtub3dcbiAgICBieSBjb25zdHJ1Y3Rpb24gdGhhdCB0aGUgdmFsdWVzIGRvIG5vdCBuZWVkIHF1b3RpbmcgLyBlc2NhcGluZy4gKilcbmxldCBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWUgPSBbIGZpZWxkLCB2YWx1ZSBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHNob3VsZF92YWxpZGF0ZSA9IHJlZiBmYWxzZVxuZW5kXG5cbmxldCBjcmVhdGUgfmZpZWxkIH52YWx1ZSA9XG4gIGlmICFFeHBlcnQuc2hvdWxkX3ZhbGlkYXRlIHRoZW4gQ3NzX3BhcnNlci52YWxpZGF0ZV92YWx1ZSB2YWx1ZSB8PiBPcl9lcnJvci5va19leG47XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IGVtcHR5ID0gW11cbmxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmxldCBjcmVhdGVfcGxhY2VtZW50IG5hbWUgbGVuZ3RoID0gY3JlYXRlIH5maWVsZDpuYW1lIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbGVuZ3RoKVxubGV0IGxlZnQgPSBjcmVhdGVfcGxhY2VtZW50IFwibGVmdFwiXG5sZXQgdG9wID0gY3JlYXRlX3BsYWNlbWVudCBcInRvcFwiXG5sZXQgYm90dG9tID0gY3JlYXRlX3BsYWNlbWVudCBcImJvdHRvbVwiXG5sZXQgcmlnaHQgPSBjcmVhdGVfcGxhY2VtZW50IFwicmlnaHRcIlxuXG5sZXQgcG9zaXRpb24gP3RvcDp0cCA/Ym90dG9tOmJ0ID9sZWZ0Omx0ID9yaWdodDpydCBwb3MgPVxuICBsZXQgcG9zID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbWF0Y2ggcG9zIHdpdGhcbiAgICAgIHwgYFN0YXRpYyAtPiBcInN0YXRpY1wiXG4gICAgICB8IGBBYnNvbHV0ZSAtPiBcImFic29sdXRlXCJcbiAgICAgIHwgYFN0aWNreSAtPiBcInN0aWNreVwiXG4gICAgICB8IGBSZWxhdGl2ZSAtPiBcInJlbGF0aXZlXCJcbiAgICAgIHwgYEZpeGVkIC0+IFwiZml4ZWRcIlxuICAgIGluXG4gICAgY3JlYXRlIH5maWVsZDpcInBvc2l0aW9uXCIgfnZhbHVlXG4gIGluXG4gIGxldCBjb252ZXJ0IG9wdF9sIGYgPSBPcHRpb24udmFsdWVfbWFwIG9wdF9sIH5kZWZhdWx0OmVtcHR5IH5mIGluXG4gIGNvbmNhdCBbIHBvczsgY29udmVydCB0cCB0b3A7IGNvbnZlcnQgbHQgbGVmdDsgY29udmVydCBydCByaWdodDsgY29udmVydCBidCBib3R0b20gXVxuOztcblxubGV0IGJveF9zaXppbmcgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgQ29udGVudF9ib3ggLT4gXCJjb250ZW50LWJveFwiXG4gICAgfCBgQm9yZGVyX2JveCAtPiBcImJvcmRlci1ib3hcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm94LXNpemluZ1wiIH52YWx1ZVxuOztcblxubGV0IGRpc3BsYXkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgSW5saW5lIC0+IFwiaW5saW5lXCJcbiAgICB8IGBCbG9jayAtPiBcImJsb2NrXCJcbiAgICB8IGBJbmxpbmVfYmxvY2sgLT4gXCJpbmxpbmUtYmxvY2tcIlxuICAgIHwgYExpc3RfaXRlbSAtPiBcImxpc3QtaXRlbVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgSW5saW5lX3RhYmxlIC0+IFwiaW5saW5lLXRhYmxlXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgRmxleCAtPiBcImZsZXhcIlxuICAgIHwgYElubGluZV9mbGV4IC0+IFwiaW5saW5lLWZsZXhcIlxuICAgIHwgYElubGluZV9ncmlkIC0+IFwiaW5saW5lLWdyaWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZGlzcGxheVwiIH52YWx1ZVxuOztcblxubGV0IHZpc2liaWxpdHkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ2aXNpYmlsaXR5XCIgfnZhbHVlXG47O1xuXG50eXBlIG92ZXJmbG93ID1cbiAgWyBgVmlzaWJsZVxuICB8IGBIaWRkZW5cbiAgfCBgU2Nyb2xsXG4gIHwgYEF1dG9cbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBtYWtlX292ZXJmbG93IGZpZWxkIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYFNjcm9sbCAtPiBcInNjcm9sbFwiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IG92ZXJmbG93ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93XCJcbmxldCBvdmVyZmxvd194ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXhcIlxubGV0IG92ZXJmbG93X3kgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteVwiXG5sZXQgel9pbmRleCBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJ6LWluZGV4XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpXG5sZXQgb3BhY2l0eSBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcGFjaXR5XCIgfnZhbHVlOihmMnMgNiBpKVxuXG5sZXQgY3JlYXRlX2xlbmd0aF9maWVsZCBmaWVsZCBsID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGwpXG47O1xuXG5sZXQgd2hpdGVfc3BhY2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFByZSAtPiBcInByZVwiXG4gICAgfCBgUHJlX2xpbmUgLT4gXCJwcmUtbGluZVwiXG4gICAgfCBgUHJlX3dyYXAgLT4gXCJwcmUtd3JhcFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlIH5maWVsZDpcIndoaXRlLXNwYWNlXCIgfnZhbHVlXG47O1xuXG50eXBlIGZvbnRfc3R5bGUgPVxuICBbIGBOb3JtYWxcbiAgfCBgSXRhbGljXG4gIHwgYE9ibGlxdWVcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF93ZWlnaHQgPVxuICBbIGBOb3JtYWxcbiAgfCBgQm9sZFxuICB8IGBCb2xkZXJcbiAgfCBgTGlnaHRlclxuICB8IGBOdW1iZXIgb2YgaW50XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfdmFyaWFudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBTbWFsbF9jYXBzXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgZm9udF9zaXplID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImZvbnQtc2l6ZVwiXG5sZXQgZm9udF9mYW1pbHkgbCA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1mYW1pbHlcIiB+dmFsdWU6KFN0cmluZy5jb25jYXQgbCB+c2VwOlwiLFwiKVxuXG5sZXQgZm9udF9zdHlsZSBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYEl0YWxpYyAtPiBcIml0YWxpY1wiXG4gICAgfCBgT2JsaXF1ZSAtPiBcIm9ibGlxdWVcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1zdHlsZVwiIH52YWx1ZVxuOztcblxubGV0IGZvbnRfd2VpZ2h0IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE51bWJlciBpIC0+IEludC50b19zdHJpbmcgaVxuICAgIHwgYEJvbGQgLT4gXCJib2xkXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYExpZ2h0ZXIgLT4gXCJsaWdodGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgQm9sZGVyIC0+IFwiYm9sZGVyXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC13ZWlnaHRcIiB+dmFsdWVcbjs7XG5cbmxldCBib2xkID0gZm9udF93ZWlnaHQgYEJvbGRcblxubGV0IGZvbnRfdmFyaWFudCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYFNtYWxsX2NhcHMgLT4gXCJzbWFsbC1jYXBzXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtdmFyaWFudFwiIH52YWx1ZVxuOztcblxubGV0IGZvbnQgfnNpemUgfmZhbWlseSA/c3R5bGUgP3dlaWdodCA/dmFyaWFudCAoKSA9XG4gIFsgU29tZSAoZm9udF9zaXplIHNpemUpXG4gIDsgU29tZSAoZm9udF9mYW1pbHkgZmFtaWx5KVxuICA7IE9wdGlvbi5tYXAgc3R5bGUgfmY6Zm9udF9zdHlsZVxuICA7IE9wdGlvbi5tYXAgd2VpZ2h0IH5mOmZvbnRfd2VpZ2h0XG4gIDsgT3B0aW9uLm1hcCB2YXJpYW50IH5mOmZvbnRfdmFyaWFudFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQgfmNvbG9yID0gY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yKVxubGV0IGNvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiY29sb3JcIiB+Y29sb3JcbmxldCBiYWNrZ3JvdW5kX2NvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiYmFja2dyb3VuZC1jb2xvclwiIH5jb2xvclxubGV0IGZpbGwgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJmaWxsXCIgfmNvbG9yXG5cbnR5cGUgc3RvcHMgPSAoUGVyY2VudC50ICogQ29sb3IudCkgbGlzdFxuXG50eXBlIGxpbmVhcl9ncmFkaWVudCA9XG4gIHsgZGlyZWN0aW9uIDogWyBgRGVnIG9mIGludCBdXG4gIDsgc3RvcHMgOiBzdG9wc1xuICB9XG5cbnR5cGUgcmFkaWFsX2dyYWRpZW50ID0geyBzdG9wcyA6IHN0b3BzIH1cblxudHlwZSBiYWNrZ3JvdW5kX2ltYWdlID1cbiAgWyBgVXJsIG9mIHN0cmluZ1xuICB8IGBMaW5lYXJfZ3JhZGllbnQgb2YgbGluZWFyX2dyYWRpZW50XG4gIHwgYFJhZGlhbF9ncmFkaWVudCBvZiByYWRpYWxfZ3JhZGllbnRcbiAgXVxuXG5sZXQgc3RvcHNfdG9fc3RyaW5nIHN0b3BzID1cbiAgTGlzdC5tYXAgc3RvcHMgfmY6KGZ1biAocGN0LCBjb2xvcikgLT5cbiAgICAoKiBOb3RlOiBQZXJjZW50LnRvX3N0cmluZyBwcm9kdWNlZCBlLmcuIFwiMHhcIiwgXCIxeFwiLCB3b24ndCB3b3JrIGhlcmUuICopXG4gICAgWyVzdHJpbmcgXCIle0NvbG9yLnRvX3N0cmluZ19jc3MgY29sb3J9ICV7ZjJzIDYgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwY3QpfSVcIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCBiYWNrZ3JvdW5kX2ltYWdlIHNwZWMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgYFVybCB1cmwgLT4gWyVzdHJpbmcgXCJ1cmwoJXt1cmx9KVwiXVxuICAgIHwgYExpbmVhcl9ncmFkaWVudCB7IGRpcmVjdGlvbiA9IGBEZWcgZGlyZWN0aW9uOyBzdG9wcyB9IC0+XG4gICAgICBbJXN0cmluZyBcImxpbmVhci1ncmFkaWVudCgle2RpcmVjdGlvbiNJbnR9ZGVnLCAle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gICAgfCBgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgfSAtPiBbJXN0cmluZyBcInJhZGlhbC1ncmFkaWVudCgle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYmFja2dyb3VuZC1pbWFnZVwiIH52YWx1ZVxuOztcblxubGV0IGNyZWF0ZV9hbGlnbm1lbnQgZmllbGQgYSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQWxpZ25tZW50LnRvX3N0cmluZ19jc3MgKGEgOj4gQWxpZ25tZW50LnQpKVxuOztcblxubGV0IHRleHRfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidGV4dC1hbGlnblwiXG5sZXQgaG9yaXpvbnRhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJob3Jpem9udGFsLWFsaWduXCJcbmxldCB2ZXJ0aWNhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ2ZXJ0aWNhbC1hbGlnblwiXG5cbmxldCBmbG9hdCBmID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBmIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxvYXRcIiB+dmFsdWVcbjs7XG5cbmxldCB3aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJ3aWR0aFwiXG5sZXQgbWluX3dpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi13aWR0aFwiXG5sZXQgbWF4X3dpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1heC13aWR0aFwiXG5sZXQgaGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImhlaWdodFwiXG5sZXQgbWluX2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4taGVpZ2h0XCJcbmxldCBtYXhfaGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1heC1oZWlnaHRcIlxubGV0IHBhZGRpbmdfdG9wID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctdG9wXCJcbmxldCBwYWRkaW5nX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWJvdHRvbVwiXG5sZXQgcGFkZGluZ19sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctbGVmdFwiXG5sZXQgcGFkZGluZ19yaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXJpZ2h0XCJcblxubGV0IHBhZGRpbmcgP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOnBhZGRpbmdfdG9wXG4gIDsgbSBib3R0b20gfmY6cGFkZGluZ19ib3R0b21cbiAgOyBtIGxlZnQgfmY6cGFkZGluZ19sZWZ0XG4gIDsgbSByaWdodCB+ZjpwYWRkaW5nX3JpZ2h0XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IHVuaWZvcm1fcGFkZGluZyBsID0gcGFkZGluZyB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcbmxldCBtYXJnaW5fdG9wID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi10b3BcIlxubGV0IG1hcmdpbl9ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLWJvdHRvbVwiXG5sZXQgbWFyZ2luX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLWxlZnRcIlxubGV0IG1hcmdpbl9yaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tcmlnaHRcIlxuXG5sZXQgbWFyZ2luID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjptYXJnaW5fdG9wXG4gIDsgbSBib3R0b20gfmY6bWFyZ2luX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjptYXJnaW5fbGVmdFxuICA7IG0gcmlnaHQgfmY6bWFyZ2luX3JpZ2h0XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IHVuaWZvcm1fbWFyZ2luIGwgPSBtYXJnaW4gfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5cbnR5cGUgYm9yZGVyX3N0eWxlID1cbiAgWyBgTm9uZVxuICB8IGBIaWRkZW5cbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgR3Jvb3ZlXG4gIHwgYFJpZGdlXG4gIHwgYEluc2V0XG4gIHwgYE91dHNldFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxuKCoqIENvbmNhdCAyIHZhbHVlcyB3aXRoIGEgc3BhY2UgaW4gYmV0d2Vlbi4gIElmIGVpdGhlciBpcyB0aGUgZW1wdHkgc3RyaW5nXG4gICAgZG9uJ3QgcHV0IGluIHVubmVjZXNzYXJ5IHdoaXRlc3BhY2UuICopXG5sZXQgY29uY2F0MnYgdjEgdjIgPVxuICBtYXRjaCB2MSwgdjIgd2l0aFxuICB8IFwiXCIsIHggLT4geFxuICB8IHgsIFwiXCIgLT4geFxuICB8IHgsIHkgLT4geCBeIFwiIFwiIF4geVxuOztcblxuKCoqIENvbmNhdCB1cCB0byAzIHZhbHVlcyB3aXRoIHNwYWNlcyBpbiBiZXR3ZWVuLiAqKVxubGV0IGNvbmNhdDN2IHYxIHYyIHYzID0gY29uY2F0MnYgKGNvbmNhdDJ2IHYxIHYyKSB2M1xuXG5sZXQgYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfihzdHlsZSA6IGJvcmRlcl9zdHlsZSkgKCkgPVxuICBsZXQgc3R5bGUgPVxuICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBSaWRnZSAtPiBcInJpZGdlXCJcbiAgICB8IGBPdXRzZXQgLT4gXCJvdXRzZXRcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBHcm9vdmUgLT4gXCJncm9vdmVcIlxuICAgIHwgYERhc2hlZCAtPiBcImRhc2hlZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluc2V0IC0+IFwiaW5zZXRcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICB8IGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgaW5cbiAgbGV0IHdpZHRoID0gdmFsdWVfbWFwIHdpZHRoIH5mOkxlbmd0aC50b19zdHJpbmdfY3NzIGluXG4gIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gIGNvbmNhdDN2IHdpZHRoIHN0eWxlIGNvbG9yXG47O1xuXG5sZXQgY3JlYXRlX2JvcmRlciA/c2lkZSAoKSA9XG4gIGxldCBmaWVsZCA9XG4gICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgfCBTb21lIGBUb3AgLT4gXCJib3JkZXItdG9wXCJcbiAgICB8IFNvbWUgYEJvdHRvbSAtPiBcImJvcmRlci1ib3R0b21cIlxuICAgIHwgU29tZSBgUmlnaHQgLT4gXCJib3JkZXItcmlnaHRcIlxuICAgIHwgU29tZSBgTGVmdCAtPiBcImJvcmRlci1sZWZ0XCJcbiAgICB8IE5vbmUgLT4gXCJib3JkZXJcIlxuICBpblxuICBmdW4gP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgLT5cbiAgICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfdG9wID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgVG9wICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2JvdHRvbSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YEJvdHRvbSAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9sZWZ0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgTGVmdCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9yaWdodCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YFJpZ2h0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID0gY3JlYXRlX2JvcmRlciA/c2lkZTpOb25lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpICgpXG5cbmxldCBvdXRsaW5lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJvdXRsaW5lXCIgfnZhbHVlOihib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkpXG47O1xuXG5sZXQgYm9yZGVyX2NvbGxhcHNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFNlcGFyYXRlIC0+IFwic2VwYXJhdGVcIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm9yZGVyLWNvbGxhcHNlXCIgfnZhbHVlXG47O1xuXG5sZXQgYm9yZGVyX3NwYWNpbmcgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiYm9yZGVyLXNwYWNpbmdcIlxubGV0IGJvcmRlcl9yYWRpdXMgbCA9IGNyZWF0ZSB+ZmllbGQ6XCJib3JkZXItcmFkaXVzXCIgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9saW5lID1cbiAgWyBgTm9uZVxuICB8IGBVbmRlcmxpbmVcbiAgfCBgT3ZlcmxpbmVcbiAgfCBgTGluZV90aHJvdWdoXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSB0ZXh0X2RlY29yYXRpb25fc3R5bGUgPVxuICBbIGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBXYXZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRleHRfZGVjb3JhdGlvbiA/c3R5bGUgP2NvbG9yIH5saW5lICgpID1cbiAgbGV0IHZhbHVlID1cbiAgICBsZXQgbGluZSA9XG4gICAgICBMaXN0Lm1hcCBsaW5lIH5mOihmdW5jdGlvblxuICAgICAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCIpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbiAgICBpblxuICAgIGxldCBzdHlsZSA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgICAgIHwgU29tZSBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICAgIHwgU29tZSBgRG90dGVkIC0+IFwiZG90dGVkXCJcbiAgICAgIHwgU29tZSBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICAgIHwgU29tZSBgV2F2eSAtPiBcIndhdnlcIlxuICAgICAgfCBTb21lIGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICB8IFNvbWUgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICBpblxuICAgIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gICAgY29uY2F0M3YgbGluZSBzdHlsZSBjb2xvclxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInRleHQtZGVjb3JhdGlvblwiIH52YWx1ZVxuOztcblxudHlwZSBpdGVtX2FsaWdubWVudCA9XG4gIFsgYEF1dG9cbiAgfCBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgQmFzZWxpbmVcbiAgfCBgU3RyZXRjaFxuICBdXG5cbmxldCBpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBCYXNlbGluZSAtPiBcImJhc2VsaW5lXCJcbiAgfCBgU3RyZXRjaCAtPiBcInN0cmV0Y2hcIlxuOztcblxudHlwZSBqdXN0aWZ5X2NvbnRlbnQgPVxuICBbIGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBTcGFjZV9iZXR3ZWVuXG4gIHwgYFNwYWNlX2Fyb3VuZFxuICB8IGBTcGFjZV9ldmVubHlcbiAgXVxuXG5sZXQganVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBTcGFjZV9iZXR3ZWVuIC0+IFwic3BhY2UtYmV0d2VlblwiXG4gIHwgYFNwYWNlX2Fyb3VuZCAtPiBcInNwYWNlLWFyb3VuZFwiXG4gIHwgYFNwYWNlX2V2ZW5seSAtPiBcInNwYWNlLWV2ZW5seVwiXG47O1xuXG5sZXQgZmxleF9jb250YWluZXJcbiAgICAgID8oaW5saW5lID0gZmFsc2UpXG4gICAgICA/KGRpcmVjdGlvbiA9IGBSb3cpXG4gICAgICA/KHdyYXAgPSBgTm93cmFwKVxuICAgICAgP2FsaWduX2l0ZW1zXG4gICAgICA/anVzdGlmeV9jb250ZW50XG4gICAgICAoKVxuICA9XG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgUm93IC0+IFwicm93XCJcbiAgICB8IGBSb3dfcmV2ZXJzZSAtPiBcInJvdy1yZXZlcnNlXCJcbiAgICB8IGBDb2x1bW4gLT4gXCJjb2x1bW5cIlxuICAgIHwgYENvbHVtbl9yZXZlcnNlIC0+IFwiY29sdW1uLXJldmVyc2VcIlxuICBpblxuICBsZXQgd3JhcCA9XG4gICAgbWF0Y2ggd3JhcCB3aXRoXG4gICAgfCBgTm93cmFwIC0+IFwibm93cmFwXCJcbiAgICB8IGBXcmFwIC0+IFwid3JhcFwiXG4gICAgfCBgV3JhcF9yZXZlcnNlIC0+IFwid3JhcC1yZXZlcnNlXCJcbiAgaW5cbiAgbGV0IGFsaWduX2l0ZW1zID1cbiAgICBtYXRjaCBhbGlnbl9pdGVtcyB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1pdGVtc1wiIH52YWx1ZTooaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQganVzdGlmeV9jb250ZW50ID1cbiAgICBtYXRjaCBqdXN0aWZ5X2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImp1c3RpZnktY29udGVudFwiIH52YWx1ZTooanVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgY29uY2F0XG4gICAgWyBkaXNwbGF5IChpZiBpbmxpbmUgdGhlbiBgSW5saW5lX2ZsZXggZWxzZSBgRmxleClcbiAgICA7IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC1kaXJlY3Rpb25cIiB+dmFsdWU6ZGlyZWN0aW9uXG4gICAgOyBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtd3JhcFwiIH52YWx1ZTp3cmFwXG4gICAgOyBhbGlnbl9pdGVtc1xuICAgIDsganVzdGlmeV9jb250ZW50XG4gICAgXVxuOztcblxubGV0IGZsZXhfaXRlbSA/b3JkZXIgPyhiYXNpcyA9IGBBdXRvKSA/KHNocmluayA9IDEuKSB+Z3JvdyAoKSA9XG4gIGxldCBvcmRlciA9XG4gICAgT3B0aW9uLm1hcCBvcmRlciB+ZjooZnVuIGkgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcmRlclwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIHw+IExpc3Quam9pblxuICBpblxuICBsZXQgZmxleCA9XG4gICAgbGV0IGJhc2lzID0gQXV0b19vcl9sZW5ndGgudG9fc3RyaW5nX2NzcyBiYXNpcyBpblxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleFwiIH52YWx1ZTpbJXN0cmluZyBcIiV7ZjJzIDYgZ3Jvd30gJXtmMnMgNiBzaHJpbmt9ICV7YmFzaXN9XCJdXG4gIGluXG4gIGNvbmNhdCBbIGZsZXg7IG9yZGVyIF1cbjs7XG5cbmxldCBhbGlnbl9zZWxmIGEgPVxuICBsZXQgdmFsdWUgPSBpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1zZWxmXCIgfnZhbHVlXG47O1xuXG5sZXQgcmVzaXplICh2YWx1ZSA6IFsgYE5vbmUgfCBgQm90aCB8IGBIb3Jpem9udGFsIHwgYFZlcnRpY2FsIHwgY3NzX2dsb2JhbF92YWx1ZXMgXSkgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgIHwgYEhvcml6b250YWwgLT4gXCJob3Jpem9udGFsXCJcbiAgICB8IGBWZXJ0aWNhbCAtPiBcInZlcnRpY2FsXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInJlc2l6ZVwiIH52YWx1ZVxuOztcblxubGV0IGFuaW1hdGlvbiB+bmFtZSB+ZHVyYXRpb24gP2RlbGF5ID9kaXJlY3Rpb24gP2ZpbGxfbW9kZSA/aXRlcl9jb3VudCA/dGltaW5nX2Z1bmN0aW9uICgpXG4gID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIGxldCBzcGFuX3RvX3N0cmluZyBzID0gWyVzdHJpbmcgXCIle2YycyAyIChUaW1lX25zLlNwYW4udG9fc2VjIHMpfXNcIl0gaW5cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbSBkaXJlY3Rpb24gfmY6KGZ1biBkIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICAgICAgfCBgUmV2ZXJzZSAtPiBcInJldmVyc2VcIlxuICAgICAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgICAgICB8IGBBbHRlcm5hdGVfcmV2ZXJzZSAtPiBcImFsdGVybmF0ZS1yZXZlcnNlXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGlyZWN0aW9uXCIgfnZhbHVlKVxuICBpblxuICBsZXQgZmlsbF9tb2RlID1cbiAgICBtIGZpbGxfbW9kZSB+ZjooZnVuIGYgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGYgd2l0aFxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEZvcndhcmRzIC0+IFwiZm9yd2FyZHNcIlxuICAgICAgICB8IGBCYWNrd2FyZHMgLT4gXCJiYWNrd2FyZHNcIlxuICAgICAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiIH52YWx1ZSlcbiAgaW5cbiAgWyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1uYW1lXCIgfnZhbHVlOm5hbWUpXG4gIDsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZHVyYXRpb25cIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIGR1cmF0aW9uKSlcbiAgOyBtIGRlbGF5IH5mOihmdW4gcyAtPiBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kZWxheVwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgcykpXG4gIDsgbSBpdGVyX2NvdW50IH5mOihmdW4gaSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICA7IG0gdGltaW5nX2Z1bmN0aW9uIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiIH52YWx1ZSlcbiAgOyBkaXJlY3Rpb25cbiAgOyBmaWxsX21vZGVcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG50eXBlIHVzZXJfc2VsZWN0ID1cbiAgWyBgQWxsXG4gIHwgYEF1dG9cbiAgfCBgTm9uZVxuICB8IGBUZXh0XG4gIF1cblxubGV0IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBbGwgLT4gXCJhbGxcIlxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgfCBgVGV4dCAtPiBcInRleHRcIlxuOztcblxubGV0IHVzZXJfc2VsZWN0IHMgPVxuICBsZXQgdmFsdWUgPSB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzIHMgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ1c2VyLXNlbGVjdFwiIH52YWx1ZVxuOztcblxuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19zdHJpbmdfY3NzIC0+IG9mX3N0cmluZ19jc3NfZXhuIC0+IHRvX3N0cmluZ19jc3NcIiA9XG4gICAgICBsZXQgdCBjc3MgPVxuICAgICAgICBsZXQgcyA9IHRvX3N0cmluZ19jc3MgY3NzIGluXG4gICAgICAgIGxldCBzMiA9IHRvX3N0cmluZ19jc3MgKG9mX3N0cmluZ19jc3NfZXhuIHMpIGluXG4gICAgICAgIHByaW50X2VuZGxpbmUgcztcbiAgICAgICAgcHJpbnRfZW5kbGluZSBzMlxuICAgICAgaW5cbiAgICAgIHQgKGZsZXhfaXRlbSB+Z3JvdzoxLjAgKCkgQD4gb3ZlcmZsb3cgYFNjcm9sbCk7XG4gICAgICB0IChmbGV4X2NvbnRhaW5lciB+aW5saW5lOnRydWUgfmRpcmVjdGlvbjpgQ29sdW1uICgpIEA+IGJvcmRlciB+c3R5bGU6YERhc2hlZCAoKSk7XG4gICAgICB0IChjb2xvciAoYFJHQkEgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+ZzoxMDAgfmI6MTAwICgpKSkpO1xuICAgICAgdFxuICAgICAgICAoY29sb3JcbiAgICAgICAgICAgKGBIU0xBXG4gICAgICAgICAgICAgIChDb2xvci5IU0xBLmNyZWF0ZVxuICAgICAgICAgICAgICAgICB+aDoxMDBcbiAgICAgICAgICAgICAgICAgfnM6KFBlcmNlbnQub2ZfbXVsdCAwLjc1KVxuICAgICAgICAgICAgICAgICB+bDooUGVyY2VudC5vZl9tdWx0IDAuNjApXG4gICAgICAgICAgICAgICAgICgpKSkpO1xuICAgICAgdCAoY3JlYXRlIH5maWVsZDpcImNvbnRlbnRcIiB+dmFsdWU6e3xcIjtcInx9KTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMS4wMDAwMDAgMS4wMDAwMDAgYXV0bztvdmVyZmxvdzogc2Nyb2xsXG4gICAgZmxleDogMS4wMDAwMDAgMS4wMDAwMDAgYXV0bztvdmVyZmxvdzogc2Nyb2xsXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbnRlbnQ6IFwiO1wiXG4gICAgY29udGVudDogXCI7XCIgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImdyYWRpZW50c1wiID1cbiAgICAgIGxldCBwIHggPSBQZXJjZW50Lm9mX211bHQgeCBpblxuICAgICAgbGV0IGMgcyA9IGBOYW1lIHMgaW5cbiAgICAgIGxldCB0IGNzcyA9IHByaW50X2VuZGxpbmUgKHRvX3N0cmluZ19jc3MgY3NzKSBpblxuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYExpbmVhcl9ncmFkaWVudFxuICAgICAgICAgICAgICB7IGRpcmVjdGlvbiA9IGBEZWcgOTBcbiAgICAgICAgICAgICAgOyBzdG9wcyA9XG4gICAgICAgICAgICAgICAgICBbIHAgMC4sIGMgXCJibGFja1wiXG4gICAgICAgICAgICAgICAgICA7IHAgMC4yLCBjIFwiI2ZmMDAwMFwiXG4gICAgICAgICAgICAgICAgICA7IHAgMC40LCBjIFwicmVkXCJcbiAgICAgICAgICAgICAgICAgIDsgKCBwIDEuXG4gICAgICAgICAgICAgICAgICAgICwgYFJHQkFcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6NTAgfmI6MzAgfmE6KFBlcmNlbnQub2ZfbXVsdCAwLjc1KSAoKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIGJsYWNrIDAuMDAwMDAwJSwgI2ZmMDAwMCAyMC4wMDAwMDAlLCByZWQgNDAuMDAwMDAwJSwgcmdiYSgxMDAsNTAsMzAsMC43NSkgMTAwLjAwMDAwMCUpIHx9XTtcbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBSYWRpYWxfZ3JhZGllbnQgeyBzdG9wcyA9IFsgcCAwLiwgYyBcImJsYWNrXCI7IHAgMS4sIGMgXCJyZWRcIiBdIH0pKTtcbiAgICAgIFslZXhwZWN0IHt8IGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChibGFjayAwLjAwMDAwMCUsIHJlZCAxMDAuMDAwMDAwJSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIigqIFRoZSBnZW5fanNfYXBpIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtbGlrZSBsaWNlbnNlLiAgICAgKilcbigqIFNlZSB0aGUgYXR0YWNoZWQgTElDRU5TRSBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIENvcHlyaWdodCAyMDE1IGJ5IExleGlGaS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcblxuKCogVGhpcyBtb2R1bGUgKG1vc3RseSkgYWJzdHJhY3RzIGF3YXkgZnJvbSBqc19vZl9vY2FtbCBlbmNvZGluZyBvZlxuICAgT0NhbWwgdmFsdWVzLiAgSXQgc2VydmVzIGFzIGEgc3VwcG9ydCBsaWJyYXJ5IGZvciB0aGUgY29kZSBnZW5lcmF0ZWRcbiAgIGJ5IGdlbl9qc19hcGkuXG5cbiAgIFRoZSBtb2R1bGUgY291bGQgbW9zdGx5IGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBqc19vZl9vY2FtbCdzIEpzIG1vZHVsZVxuICAgKGFuZCBpbiBwYXJ0aWN1bGFyIEpzLlVuc2FmZSksIGJ1dCB3ZSBwcmVmZXIgdG8gZHJvcCB0aGUgZGVwZW5kZW5jeVxuICAgdG8ganNfb2Zfb2NhbWwncyBsaWJyYXJ5IGFuZCB0byByZWx5IG9ubHkgb24gaXRzIGNvbXBpbGVyIGFuZCBKU1xuICAgcnVudGltZSBjb2RlLlxuKilcblxuXG50eXBlIHRcblxuZXh0ZXJuYWwgdF9vZl9qczogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdF90b19qczogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5leHRlcm5hbCBzdHJpbmdfb2ZfanM6IHQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCBzdHJpbmdfdG9fanM6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50X29mX2pzOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGludF90b19qczogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIGJvb2xfb2ZfanM6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcbmV4dGVybmFsIGJvb2xfdG9fanM6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9qczogdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGZsb2F0X3RvX2pzOiBmbG9hdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5leHRlcm5hbCBvYmo6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbmV4dGVybmFsIHZhcmlhYmxlOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc192YXJcIlxuXG5leHRlcm5hbCBnZXQ6IHQgLT4gc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGU6IHQgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuZXh0ZXJuYWwgZ2V0X3Byb3A6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXRfcHJvcDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlX3Byb3A6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbmV4dGVybmFsIGdldF9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXRfcHJvcF9hc2NpaTogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGVfcHJvcF9hc2NpaTogdCAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG5leHRlcm5hbCBpbnRlcm5hbF90eXBlX29mOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcbmxldCB0eXBlX29mIHggPSBzdHJpbmdfb2ZfanMgKGludGVybmFsX3R5cGVfb2YgeClcblxuZXh0ZXJuYWwgaW50ZXJuYWxfaW5zdGFuY2Vfb2Y6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxubGV0IGluc3RhbmNlX29mIHggfmNvbnN0ciA9IGJvb2xfb2ZfanMgKGludGVybmFsX2luc3RhbmNlX29mIHggY29uc3RyKVxuXG5leHRlcm5hbCBwdXJlX2pzX2V4cHI6IHN0cmluZyAtPiB0ID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5sZXQgbnVsbCA9IHB1cmVfanNfZXhwciBcIm51bGxcIlxubGV0IHVuZGVmaW5lZCA9IHB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbmV4dGVybmFsIGVxdWFsczogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxubGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImpvb19nbG9iYWxfb2JqZWN0XCJcblxuZXh0ZXJuYWwgbmV3X29iajogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuZXh0ZXJuYWwgY2FsbDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5leHRlcm5hbCBhcHBseTogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG5sZXQgYXJyYXlfbWFrZSBuID0gbmV3X29iaiAoZ2V0X3Byb3BfYXNjaWkgZ2xvYmFsIFwiQXJyYXlcIikgW3xpbnRfdG9fanMgbnxdXG5sZXQgYXJyYXlfZ2V0IHQgaSA9IGdldF9wcm9wIHQgKGludF90b19qcyBpKVxubGV0IGFycmF5X3NldCB0IGkgeCA9IHNldF9wcm9wIHQgKGludF90b19qcyBpKSB4XG5cbmxldCBhcnJheV9vZl9qc19mcm9tIGYgb2JqcyBzdGFydCA9XG4gIGxldCBuID0gaW50X29mX2pzIChnZXRfcHJvcF9hc2NpaSBvYmpzIFwibGVuZ3RoXCIpIGluXG4gIEFycmF5LmluaXQgKG4gLSBzdGFydCkgKGZ1biBpIC0+IGYgKGFycmF5X2dldCBvYmpzIChzdGFydCArIGkpKSlcblxubGV0IGFycmF5X29mX2pzIGYgb2JqcyA9IGFycmF5X29mX2pzX2Zyb20gZiBvYmpzIDBcblxubGV0IGFycmF5X3RvX2pzIGYgYXJyID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGxldCBhID0gYXJyYXlfbWFrZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGFycmF5X3NldCBhIGkgKGYgYXJyLihpKSlcbiAgZG9uZTtcbiAgYVxuXG5sZXQgbGlzdF9vZl9qc19mcm9tIGYgb2JqcyBzdGFydCA9IEFycmF5LnRvX2xpc3QgKGFycmF5X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0KVxuXG5sZXQgbGlzdF9vZl9qcyBmIG9ianMgPSBsaXN0X29mX2pzX2Zyb20gZiBvYmpzIDBcblxubGV0IGxpc3RfdG9fanMgZiBsID1cbiAgYXJyYXlfdG9fanMgZiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgb3B0aW9uX29mX2pzIGYgeCA9XG4gIGlmIGVxdWFscyB4IG51bGwgfHwgeCA9PSB1bmRlZmluZWQgdGhlbiBOb25lXG4gIGVsc2UgU29tZSAoZiB4KVxuXG5sZXQgb3B0aW9uX3RvX2pzIGYgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiBmIHhcbiAgfCBOb25lIC0+IG51bGxcblxubGV0IHVuaXRfdG9fanMgKCkgPSB1bmRlZmluZWRcbmxldCB1bml0X29mX2pzIF8gPSAoKVxuXG5jbGFzcyBvYmogKHg6dCkgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdG9fanMgPSB4XG4gIGVuZFxuXG5leHRlcm5hbCBmdW5fdG9fanM6IGludCAtPiAodCAtPiAnYSkgLT4gdCA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5leHRlcm5hbCBmdW5fdG9fanNfYXJnczogKHQgLT4gJ2EpIC0+IHQgPSBcImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50c1wiXG5cbmxldCBoYXNfcHJvcGVydHkgbyB4ID1cbiAgdHlwZV9vZiBvID0gXCJvYmplY3RcIiAmJiBvICE9IG51bGxcbiAgJiYgZ2V0X3Byb3AgbyAoc3RyaW5nX3RvX2pzIHgpICE9IHVuZGVmaW5lZFxuXG5leHRlcm5hbCBuZXdfb2JqX2FycjogdCAtPiB0IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG5sZXQgZW1wdHlfb2JqICgpID0gbmV3X29iaiAoZ2V0X3Byb3BfYXNjaWkgZ2xvYmFsIFwiT2JqZWN0XCIpIFt8fF1cblxuZXh0ZXJuYWwgaXRlcl9wcm9wZXJ0aWVzX3VudHlwZWQgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9vanNfaXRlcmF0ZV9wcm9wZXJ0aWVzXCJcbmxldCBpdGVyX3Byb3BlcnRpZXMgeCBmID1cbiAgaXRlcl9wcm9wZXJ0aWVzX3VudHlwZWQgeCAoZnVuX3RvX2pzIDEgKGZ1biB4IC0+IGYgKHN0cmluZ19vZl9qcyB4KSkpXG5cbmxldCBhcHBseV9hcnIgbyBhcnIgPSBjYWxsIG8gXCJhcHBseVwiIFt8IG51bGw7IGFyciB8XVxubGV0IGNhbGxfYXJyIG8gcyBhcnIgPSBjYWxsIChnZXRfcHJvcCBvIChzdHJpbmdfdG9fanMgcykpIFwiYXBwbHlcIiBbfCBvOyBhcnIgfF1cblxubGV0IGlzX251bGwgeCA9XG4gIGVxdWFscyB4IG51bGxcblxubGV0IG9ial90eXBlIHggPVxuICBzdHJpbmdfb2ZfanMgKGNhbGwgKHB1cmVfanNfZXhwciBcIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcIikgXCJjYWxsXCIgW3x4fF0pXG5cbm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSBqcyA6PSB0XG4gIHR5cGUgdFxuICB2YWwgdF90b19qcyA6IHQgLT4ganNcbiAgdmFsIHRfb2ZfanMgOiBqcyAtPiB0XG5lbmRcblxuKCogT2pzLlQgaW5zdGFuY2VzIGZvciBidWlsdC1pbiB0eXBlcyAqKVxubW9kdWxlIEludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IHRfdG9fanMgPSBpbnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBpbnRfb2ZfanNcbiBlbmRcbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0X3RvX2pzID0gc3RyaW5nX3RvX2pzXG4gIGxldCB0X29mX2pzID0gc3RyaW5nX29mX2pzXG5lbmRcbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIHR5cGUgdCA9IGJvb2xcbiAgbGV0IHRfdG9fanMgPSBib29sX3RvX2pzXG4gIGxldCB0X29mX2pzID0gYm9vbF9vZl9qc1xuZW5kXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcbiAgbGV0IHRfdG9fanMgPSBmbG9hdF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGZsb2F0X29mX2pzXG5lbmRcbm1vZHVsZSBBcnJheSAoQTogVCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQS50IGFycmF5XG4gIGxldCB0X3RvX2pzID0gYXJyYXlfdG9fanMgQS50X3RvX2pzXG4gIGxldCB0X29mX2pzID0gYXJyYXlfb2ZfanMgQS50X29mX2pzXG5lbmRcbm1vZHVsZSBMaXN0IChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgbGlzdFxuICBsZXQgdF90b19qcyA9IGxpc3RfdG9fanMgQS50X3RvX2pzXG4gIGxldCB0X29mX2pzID0gbGlzdF9vZl9qcyBBLnRfb2ZfanNcbmVuZFxubW9kdWxlIE9wdGlvbiAoQTogVCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQS50IG9wdGlvblxuICBsZXQgdF90b19qcyA9IG9wdGlvbl90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBvcHRpb25fb2ZfanMgQS50X29mX2pzXG5lbmRcbiIsIigqIFRoZSBnZW5fanNfYXBpIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtbGlrZSBsaWNlbnNlLiAgICAgKilcbigqIFNlZSB0aGUgYXR0YWNoZWQgTElDRU5TRSBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIENvcHlyaWdodCAyMDE1IGJ5IExleGlGaS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcblxudHlwZSB0ID0gSnNvb19ydW50aW1lLkVycm9yLnRcblxuZXh0ZXJuYWwgY29lcmNlIDogdCAtPiBPanMudCA9IFwiJWlkZW50aXR5XCJcbmxldCBuYW1lIHggPSBPanMuc3RyaW5nX29mX2pzIChPanMuZ2V0X3Byb3BfYXNjaWkgKGNvZXJjZSB4KSBcIm5hbWVcIilcbmxldCBtZXNzYWdlIHggPSBPanMuc3RyaW5nX29mX2pzIChPanMuZ2V0X3Byb3BfYXNjaWkgKGNvZXJjZSB4KSBcIm1lc3NhZ2VcIilcbmxldCBzdGFjayB4ID0gT2pzLm9wdGlvbl9vZl9qcyBPanMuc3RyaW5nX29mX2pzIChPanMuZ2V0X3Byb3BfYXNjaWkgKGNvZXJjZSB4KSBcInN0YWNrXCIpXG5sZXQgdG9fc3RyaW5nIHggPSBPanMuc3RyaW5nX29mX2pzIChPanMuY2FsbCAoY29lcmNlIHgpIFwidG9TdHJpbmdcIiBbfHxdKVxuXG5leGNlcHRpb24gRXJyb3IgPSBKc29vX3J1bnRpbWUuRXJyb3IuRXhuXG5cbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIHggLT4gU29tZSAodG9fc3RyaW5nIHgpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHRvX2pzX3N0cmluZyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b1N0cmluZ1xubGV0IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9GaXhlZCBkaWdpdHNcbmxldCB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b1ByZWNpc2lvbiBkaWdpdHNcbmxldCB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9FeHBvbmVudGlhbFxubGV0IHRvX3N0cmluZyB2YWx1ZSA9IHRvX2pzX3N0cmluZyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSB8PiBKcy50b19zdHJpbmdcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgb3BlbiBDb3JlIGluXG4gIGxldCBwcmludCBmID0gcHJpbnRmIFwiJXNcIiAodG9fc3RyaW5nIGYpIGluXG4gIHByaW50IDEuO1xuICBbJWV4cGVjdCB7fCAxIHx9XTtcbiAgcHJpbnQgRmxvYXQubmFuO1xuICBbJWV4cGVjdCB7fCBOYU4gfH1dO1xuICBwcmludCBGbG9hdC5pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgSW5maW5pdHkgfH1dO1xuICBwcmludCBGbG9hdC5uZWdfaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IC1JbmZpbml0eSB8fV07XG4gIHByaW50IDAuMDAwMDAwMDE7XG4gIFslZXhwZWN0IHt8IDFlLTggfH1dO1xuICBwcmludCAoLTEuKTtcbiAgWyVleHBlY3Qge3wgLTEgfH1dO1xuICBwcmludCAxLjAwMDAwMDE7XG4gIFslZXhwZWN0IHt8IDEuMDAwMDAwMSB8fV1cbjs7XG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcbmluY2x1ZGUgVWlfZWZmZWN0XG5cbigqIEFsbCB2aXNpYmlsaXR5IGhhbmRsZXJzIHNlZSBhbGwgZXZlbnRzLCBzbyBhIHNpbXBsZSBsaXN0IGlzIGVub3VnaC4gICopXG5sZXQgdmlzaWJpbGl0eV9oYW5kbGVycyA6ICh1bml0IC0+IHVuaXQpIGxpc3QgcmVmID0gcmVmIFtdXG5cbm1vZHVsZSB0eXBlIFZpc2liaWxpdHlfaGFuZGxlciA9IHNpZ1xuICB2YWwgaGFuZGxlIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIERlZmluZV92aXNpYmlsaXR5IChWSCA6IFZpc2liaWxpdHlfaGFuZGxlcikgPSBzdHJ1Y3RcbiAgbGV0ICgpID0gdmlzaWJpbGl0eV9oYW5kbGVycyA6PSBWSC5oYW5kbGUgOjogIXZpc2liaWxpdHlfaGFuZGxlcnNcbmVuZFxuXG50eXBlIF8gdCArPVxuICB8IFZpZXdwb3J0X2NoYW5nZWRcbiAgfCBTdG9wX3Byb3BhZ2F0aW9uXG4gIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb25cbiAgfCBQcmV2ZW50X2RlZmF1bHRcblxubGV0IHNlcXVlbmNlX2FzX3NpYmxpbmcgbGVmdCB+dW5sZXNzX3N0b3BwZWQgPVxuICBsZXQgcmVjIGNvbnRhaW5zX3N0b3AgPSBmdW5jdGlvblxuICAgIHwgTWFueSBlcyAtPiBMaXN0LmV4aXN0cyBlcyB+Zjpjb250YWluc19zdG9wXG4gICAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvbiAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIGNvbnRhaW5zX3N0b3AgbGVmdCB0aGVuIGxlZnQgZWxzZSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHVubGVzc19zdG9wcGVkICgpIF1cbjs7XG5cbigqIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBkb20gZXZlbnQgaGVyZSBzbyB0aGF0XG4gICBtb3ZlbWVudCBiZXR3ZWVuIFtWZG9tLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBhbmRcbiAgIFtVaV9jb25jcmV0ZS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0ga2VlcHMgdGhlIG9yaWdpbmFsXG4gICBkb20gZXZlbnQgYXJvdW5kLiAqKVxubGV0IGN1cnJlbnRfZG9tX2V2ZW50ID0gcmVmIE5vbmVcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgVmlld3BvcnRfY2hhbmdlZCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IExpc3QuaXRlciAhdmlzaWJpbGl0eV9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiAoKSkpXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OkNhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBTdG9wX3Byb3BhZ2F0aW9uKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbV9odG1sLnN0b3BQcm9wYWdhdGlvbilcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6Q2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFByZXZlbnRfZGVmYXVsdCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IE9wdGlvbi5pdGVyICFjdXJyZW50X2RvbV9ldmVudCB+ZjpEb20ucHJldmVudERlZmF1bHQpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gPSBFeHBlcnQuaGFuZGxlXG5cbiAgbGV0IGhhbmRsZSBkb21fZXZlbnQgZXZlbnQgPVxuICAgIGxldCBvbGQgPSAhY3VycmVudF9kb21fZXZlbnQgaW5cbiAgICBjdXJyZW50X2RvbV9ldmVudCA6PSBTb21lIChkb21fZXZlbnQgOj4gRG9tX2h0bWwuZWxlbWVudCBEb20uZXZlbnQgSnMudCk7XG4gICAgRXhwZXJ0LmhhbmRsZSBldmVudDtcbiAgICBjdXJyZW50X2RvbV9ldmVudCA6PSBvbGRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSnNfb2Zfb2NhbWxcblxubW9kdWxlIHR5cGUgUyA9IEhvb2tzX2ludGYuU1xuXG5sZXQgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBpZCA9IERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgaWRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSAoSnMud3JhcF9jYWxsYmFjayBmKVxuOztcblxubW9kdWxlIEV4dHJhID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHsgdHlwZV9pZDsgdmFsdWUgfSkgPSBUeXBlX2VxdWFsLklkLnRvX3NleHAgdHlwZV9pZCB2YWx1ZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgVCA6XG4gICAgICB7IGlucHV0IDogJ2lucHV0XG4gICAgICA7IGlucHV0X2lkIDogJ2lucHV0IFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBjb21iaW5lX2lucHV0cyA6ICdpbnB1dCAtPiAnaW5wdXQgLT4gJ2lucHV0XG4gICAgICA7IGluaXQgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IHVwZGF0ZSA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyBkZXN0cm95IDpcbiAgICAgICAgICAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+IHVuaXRcbiAgICAgIDsgaWQgOiAoJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGUpIENvcmUuVHlwZV9lcXVhbC5JZC50XG4gICAgICB9XG4gICAgICAtPiB0XG5cbmxldCBnZW5lcmljX2hvb2sgPSBsYXp5IEpzLlVuc2FmZS4oZ2V0IGdsb2JhbCAoSnMuc3RyaW5nIFwiR2VuZXJpY0hvb2tcIikpXG5cbmxldCBtYWtlX2hvb2sgfmNvbWJpbmVfaW5wdXRzIH5pbml0IH5leHRyYTooaW5wdXQsIGlucHV0X2lkKSB+dXBkYXRlIH5kZXN0cm95IH5pZCA9XG4gIFQgeyBpbml0OyBjb21iaW5lX2lucHV0czsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkIH1cbjs7XG5cbmxldCBwYWNrIChUIHsgaW5pdDsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkOyBfIH0pID1cbiAgbGV0IHdyYXAgYSA9IGEgfD4gSnMud3JhcF9jYWxsYmFjayB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBpbml0ID0gd3JhcCAoaW5pdCBpbnB1dCkgaW5cbiAgbGV0IHVwZGF0ZSA9IHdyYXAgKHVwZGF0ZSBpbnB1dCkgaW5cbiAgbGV0IGRlc3Ryb3kgPSB3cmFwIGRlc3Ryb3kgaW5cbiAgbGV0IGdlbmVyaWNfaG9vayA9IExhenkuZm9yY2UgZ2VuZXJpY19ob29rIGluXG4gIGxldCBleHRyYSA9IEV4dHJhLlQgeyB0eXBlX2lkID0gaW5wdXRfaWQ7IHZhbHVlID0gaW5wdXQgfSBpblxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICBnZW5lcmljX2hvb2tcbiAgICBbfCBpbml0OyB1cGRhdGU7IGRlc3Ryb3k7IGlkIHw+IEpzLlVuc2FmZS5pbmplY3Q7IGV4dHJhIHw+IEpzLlVuc2FmZS5pbmplY3QgfF1cbjs7XG5cbmxldCBjb21iaW5lIChUIGxlZnQpIChUIHJpZ2h0KSA9XG4gIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGxlZnQuaW5wdXRfaWQgcmlnaHQuaW5wdXRfaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBlcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiaG9va3MgZG8gbm90IGhhdmUgdGhlIHNhbWUgdHlwZSwgc28gdGhleSBjYW5ub3QgYmUgY29tYmluZWQ7IHRha2luZyB0aGUgc2Vjb25kIFxcXG4gICAgICAgICBvZiB0aGUgdHdvXCJdO1xuICAgIFQgcmlnaHRcbiAgfCBTb21lIFQgLT4gVCB7IHJpZ2h0IHdpdGggaW5wdXQgPSByaWdodC5jb21iaW5lX2lucHV0cyBsZWZ0LmlucHV0IHJpZ2h0LmlucHV0IH1cbjs7XG5cbm1vZHVsZSBNYWtlIChTIDogUykgPSBzdHJ1Y3RcbiAgbGV0IGlucHV0X2FuZF9zdGF0ZV9pZCA9XG4gICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiAoZnVuIChpbnB1dCwgX2FuaW1hdGlvbl9pZCwgc3RhdGUpIC0+XG4gICAgICBbJXNleHBfb2Y6IFMuSW5wdXQudCAqIG9wYXF1ZV0gKGlucHV0LCBzdGF0ZSkpXG4gIDs7XG5cbiAgbGV0IGlucHV0X2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiBTLklucHV0LnNleHBfb2ZfdFxuXG4gIGxldCBpbml0IGlucHV0IGVsZW1lbnQgPVxuICAgIGxldCBzdGF0ZSA9IFMuaW5pdCBpbnB1dCBlbGVtZW50IGluXG4gICAgbGV0IGFuaW1hdGlvbl9pZCA9XG4gICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoZnVuIF8gLT4gUy5vbl9tb3VudCBpbnB1dCBzdGF0ZSBlbGVtZW50KVxuICAgIGluXG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgdXBkYXRlIGlucHV0IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIFMudXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDppbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IGRlc3Ryb3kgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBhbmltYXRpb25faWQ7XG4gICAgUy5kZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBpbnB1dCA9XG4gICAgbWFrZV9ob29rXG4gICAgICB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZClcbiAgICAgIH5jb21iaW5lX2lucHV0czpTLklucHV0LmNvbWJpbmVcbiAgICAgIH5pZDppbnB1dF9hbmRfc3RhdGVfaWRcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlXG4gICAgICB+ZGVzdHJveVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2lkID0gaW5wdXRfaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBFeHRyYSA9IEV4dHJhXG5lbmRcbiIsIltAQEBqcy5kdW1teSBcIiEhIFRoaXMgY29kZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuX2pzX2FwaSAhIVwiXVxuW0BAQG9jYW1sLndhcm5pbmcgXCItNy0zMi0zOVwiXVxub3BlbiEgSnNfb2Zfb2NhbWxcbm9wZW4hIEdlbl9qc19hcGlcbnR5cGUgKCdhLCAnYikgdCA9IE9qcy50XG5sZXQgcmVjIHRfb2ZfanMgOlxuICAnYSAnYiAuIChPanMudCAtPiAnYSkgLT4gKE9qcy50IC0+ICdiKSAtPiBPanMudCAtPiAoJ2EsICdiKSB0ID0gZnVuICh0eXBlXG4gIF9fYSkgLT4gZnVuICh0eXBlIF9fYikgLT5cbiAgZnVuIChfX2Ffb2ZfanMgOiBPanMudCAtPiBfX2EpIC0+XG4gICAgZnVuIChfX2Jfb2ZfanMgOiBPanMudCAtPiBfX2IpIC0+IGZ1biAoeDIgOiBPanMudCkgLT4geDJcbmFuZCB0X3RvX2pzIDogJ2EgJ2IgLiAoJ2EgLT4gT2pzLnQpIC0+ICgnYiAtPiBPanMudCkgLT4gKCdhLCAnYikgdCAtPiBPanMudCA9XG4gIGZ1biAodHlwZSBfX2EpIC0+IGZ1biAodHlwZSBfX2IpIC0+XG4gIGZ1biAoX19hX3RvX2pzIDogX19hIC0+IE9qcy50KSAtPlxuICAgIGZ1biAoX19iX3RvX2pzIDogX19iIC0+IE9qcy50KSAtPiBmdW4gKHgxIDogT2pzLnQpIC0+IHgxXG5sZXQgKGNyZWF0ZSA6IHVuaXQgLT4gKCdhLCAnYikgdCkgPVxuICBmdW4gKCkgLT5cbiAgICB0X29mX2pzIE9iai5tYWdpYyBPYmoubWFnaWNcbiAgICAgIChPanMubmV3X29iaiAoT2pzLmdldF9wcm9wX2FzY2lpIE9qcy5nbG9iYWwgXCJNYXBcIikgW3x8XSlcbmxldCAoc2V0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiAtPiB1bml0KSA9XG4gIGZ1biAoeDcgOiAoJ2EsICdiKSB0KSAtPlxuICAgIGZ1biAoeDUgOiAnYSkgLT5cbiAgICAgIGZ1biAoeDYgOiAnYikgLT5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKE9qcy5jYWxsICh0X3RvX2pzIE9iai5tYWdpYyBPYmoubWFnaWMgeDcpIFwic2V0XCJcbiAgICAgICAgICAgICBbfChPYmoubWFnaWMgeDUpOyhPYmoubWFnaWMgeDYpfF0pXG5sZXQgKGdldCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSA9XG4gIGZ1biAoeDExIDogKCdhLCAnYikgdCkgLT5cbiAgICBmdW4gKHgxMCA6ICdhKSAtPlxuICAgICAgT2pzLm9wdGlvbl9vZl9qcyBPYmoubWFnaWNcbiAgICAgICAgKE9qcy5jYWxsICh0X3RvX2pzIE9iai5tYWdpYyBPYmoubWFnaWMgeDExKSBcImdldFwiIFt8KE9iai5tYWdpYyB4MTApfF0pXG5sZXQgKGRlbGV0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gdW5pdCkgPVxuICBmdW4gKHgxNiA6ICgnYSwgJ2IpIHQpIC0+XG4gICAgZnVuICh4MTUgOiAnYSkgLT5cbiAgICAgIGlnbm9yZVxuICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4MTYpIFwiZGVsZXRlXCJcbiAgICAgICAgICAgW3woT2JqLm1hZ2ljIHgxNSl8XSlcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBHZW5fanNfYXBpXG5cbm1vZHVsZSBOYXRpdmVfbm9kZSA6IHNpZ1xuICB0eXBlIHQgPSBEb21faHRtbC5lbGVtZW50IEpzLnRcblxuICB2YWwgdF9vZl9qcyA6IE9qcy50IC0+IHRcbiAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRG9tX2h0bWwuZWxlbWVudCBKcy50XG5cbiAgbGV0IHRfb2ZfanMgeCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuICBsZXQgdF90b19qcyB4ID0gU3RkbGliLk9iai5tYWdpYyB4XG5lbmRcblxubW9kdWxlIEF0dHJzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgT2pzLnRcblxuICB2YWwgdF9vZl9qcyA6IE9qcy50IC0+IHRcbiAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGhhc19wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGhhc19hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBzZXRfcHJvcGVydHkgOiB0IC0+IHN0cmluZyAtPiBPanMudCAtPiB1bml0XG4gIHZhbCBzZXRfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gT2pzLnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IE9qcy50XG5cbiAgbGV0IHRfb2ZfanMgeCA9IHhcbiAgbGV0IHRfdG9fanMgeCA9IHhcbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSBPanMuZW1wdHlfb2JqICgpXG5cbiAgbGV0IHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9XG4gICAgZnVuIHQgbmFtZSB2YWx1ZSAtPiBPanMuc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlXG4gIDs7XG5cbiAgbGV0IGhhc19wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IGJvb2wgPSBPanMuaGFzX3Byb3BlcnR5XG5cbiAgbGV0IGhhc19hdHRyaWJ1dGUgdCBuYW1lID1cbiAgICBPanMuaGFzX3Byb3BlcnR5IHQgXCJhdHRyaWJ1dGVzXCJcbiAgICAmJiBPanMuaGFzX3Byb3BlcnR5IChPanMuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZVxuICA7O1xuXG4gIGxldCBzZXRfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIChPanMuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgKE9qcy52YXJpYWJsZSBcInVuZGVmaW5lZFwiKVxuICAgICAgdGhlbiBPanMuc2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIiAoT2pzLmVtcHR5X29iaiAoKSk7XG4gICAgICBPanMuc2V0X3Byb3BfYXNjaWkgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lIHZhbHVlXG4gIDs7XG5lbmRcblxubW9kdWxlIEVsZW1lbnRfYXJyYXkgPSBzdHJ1Y3RcbiAgKCogVGhpcyB0eXBlIG11c3Qgb25seSBiZSBpbnN0YW50aWF0ZWQgd2l0aCBOb2RlLnQgYXMgdGhlXG4gICAgIHR5cGUgcGFyYW1ldGVyIGJlY2F1c2UgaXQgaWdub3JlcyB0aGUgaW5uZXItbW9zdCBjb252ZXJzaW9uXG4gICAgIGZ1bmN0aW9uLiAgVGhpcyBpcyBzYWZlIGJlY2F1c2UgTm9kZS50IGlzIGRlZmluZWQgYXMgT2pzLnQsXG4gICAgIGJ1dCB3ZSBjYW4ndCB0YWtlIGFkdmFudGFnZSBvZiB0aGF0IGZhY3QgYmVjYXVzZSB0aGUgTm9kZVxuICAgICBtb2R1bGUgaXMgZ2VuZXJhdGVkIHZpYSBwcHguICopXG5cbiAgdHlwZSAnYSB0ID0gJ2EgSnNfb2Zfb2NhbWwuSnMuanNfYXJyYXkgSnMudFxuXG4gIGxldCB0X29mX2pzIDogXyAtPiBPanMudCAtPiAnYSB0ID0gZnVuIF8gLT4gQ2FtbC5PYmoubWFnaWNcbiAgbGV0IHRfdG9fanMgOiBfIC0+ICdhIHQgLT4gT2pzLnQgPSBmdW4gXyAtPiBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBOb2RlID1cbiAgWyVqczpcbiAgICB0eXBlIHQgPSBwcml2YXRlIE9qcy50XG5cbiAgICB2YWwgdF9vZl9qcyA6IE9qcy50IC0+IHRcbiAgICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcblxuICAgIHZhbCBub2RlIDogc3RyaW5nIC0+IEF0dHJzLnQgLT4gdCBFbGVtZW50X2FycmF5LnQgLT4gc3RyaW5nIG9wdGlvbiAtPiB0XG4gICAgW0BAanMubmV3IFwiVmlydHVhbERvbS5WTm9kZVwiXVxuXG4gICAgdmFsIHRleHQgOiBzdHJpbmcgLT4gdCBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLlZUZXh0XCJdXG5cbiAgICB2YWwgc3ZnIDogc3RyaW5nIC0+IEF0dHJzLnQgLT4gdCBFbGVtZW50X2FycmF5LnQgLT4gc3RyaW5nIG9wdGlvbiAtPiB0XG4gICAgW0BAanMubmV3IFwiVmlydHVhbERvbS5zdmdcIl1cblxuICAgIHZhbCB0b19kb20gOiB0IC0+IE5hdGl2ZV9ub2RlLnQgW0BAanMuZ2xvYmFsIFwiVmlydHVhbERvbS5jcmVhdGVFbGVtZW50XCJdXVxuXG5tb2R1bGUgUGF0Y2ggPVxuICBbJWpzOlxuICAgIHR5cGUgdCA9IHByaXZhdGUgT2pzLnRcblxuICAgIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICAgIHZhbCB0X3RvX2pzIDogdCAtPiBPanMudFxuICAgIHZhbCBjcmVhdGUgOiBwcmV2aW91czpOb2RlLnQgLT4gY3VycmVudDpOb2RlLnQgLT4gdCBbQEBqcy5nbG9iYWwgXCJWaXJ0dWFsRG9tLmRpZmZcIl1cbiAgICB2YWwgYXBwbHkgOiBOYXRpdmVfbm9kZS50IC0+IHQgLT4gTmF0aXZlX25vZGUudCBbQEBqcy5nbG9iYWwgXCJWaXJ0dWFsRG9tLnBhdGNoXCJdXG5cbiAgICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgICBbQEBqcy5jdXN0b21cbiAgICAgIGxldCBpc19lbXB0eSA9XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAgICAgICAgICB7anN8XG4gICAgICAgIChmdW5jdGlvbiAocGF0Y2gpIHtcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2gpIHtcbiAgICAgICAgICAgIGlmIChrZXkgIT09ICdhJykgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB8anN9XG4gICAgICAgIGluXG4gICAgICAgIGZ1biAodCA6IHQpIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCBmIFt8IEpzLlVuc2FmZS5pbmplY3QgdCB8XSB8PiBKcy50b19ib29sXG4gICAgICA7O11dXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBbJ3MsICdlbGVtZW50XSB3aWRnZXQgPVxuICAgIG9iamVjdFxuICAgICAgY29uc3RyYWludCAnZWxlbWVudCA9ICNEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgIG1ldGhvZCB0eXBlXyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgICgqIHZpcnR1YWwtZG9tIGNvbnNpZGVycyB0d28gd2lkZ2V0cyBvZiBiZWluZyBvZiB0aGUgc2FtZSBcImtpbmRcIiBpZiBlaXRoZXJcbiAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgaG9sZHM6XG5cbiAgICAgICAgIDEuIFRoZXkgYm90aCBoYXZlIGEgXCJuYW1lXCIgYXR0cmlidXRlIGFuZCB0aGVpciBcImlkXCIgZmllbGRzIGFyZSBlcXVhbC5cbiAgICAgICAgIChJIHRoaW5rIHRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdmlydHVhbC1kb20gYW5kIGhhdmUgZmllbGQgYW4gaXNzdWVcbiAgICAgICAgIG9uIGdpdGh1YjogW2h0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vaXNzdWVzLzM4MF0pXG5cbiAgICAgICAgIDIuIFRoZWlyIFtpbml0XSBtZXRob2RzIGFyZSBcIj09PVwiIGVxdWFsLiBUaGlzIGlzIHRydWUgd2hlbiB1c2luZyB2aXJ0dWFsLWRvbVxuICAgICAgICAgd2lkZ2V0cyBpbiB0aGUgdXN1YWwgc3R5bGUgaW4gSmF2YXNjcmlwdCwgc2luY2UgdGhlIFtpbml0XSBtZXRob2Qgd2lsbCBiZSBkZWZpbmVkXG4gICAgICAgICBvbiBhIHByb3RvdHlwZSwgYnV0IGlzIG5vdCB0cnVlIGluIHRoaXMgYmluZGluZyBhcyBpdCBpcyByZWRlZmluZWQgZm9yIGVhY2hcbiAgICAgICAgIGNhbGwgdG8gW3dpZGdldF0uXG5cbiAgICAgICAgIFNvLCB3ZSBnbyB3aXRoIG9wdGlvbiAxIGFuZCBtdXN0IGhhdmUgYSB0cml2aWFsIGZpZWxkIGNhbGxlZCBbbmFtZV0uXG4gICAgICAqKVxuICAgICAgbWV0aG9kIG5hbWUgOiB1bml0IEpzLndyaXRlb25seV9wcm9wXG4gICAgICBtZXRob2QgaWQgOiAoJ3MgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50IEpzLnByb3BcbiAgICAgIG1ldGhvZCBzdGF0ZSA6ICdzIEpzLnByb3BcbiAgICAgIG1ldGhvZCBpbmZvIDogU2V4cC50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgICAgbWV0aG9kIGRlc3Ryb3kgOiAoJ2VsZW1lbnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHVwZGF0ZSA6XG4gICAgICAgICgoJ290aGVyX3N0YXRlLCAnb3RoZXJfZWxlbWVudCkgd2lkZ2V0IEpzLnQgLT4gJ2VsZW1lbnQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrXG4gICAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIGluaXQgOiAodW5pdCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBlbmRcblxuICAoKiBXZSBtb2RlbCBKUyBsZXZlbCBvYmplY3RzIGhlcmUgc28gdGhlcmUgaXMgYSBsb3Qgb2YgdGhyb3dpbmcgYXdheSBvZiB0eXBlXG4gICAgIGluZm9ybWF0aW9uLiAgV2UgY291bGQgcG9zc2libHkgdHJ5IHRvIHJlZGlzY292ZXIgbW9yZSBvZiBpdC4gIE9yIG1heWJlIHdlXG4gICAgIHNob3VsZCBzZWUgaWYgd2UgY2FuIGdldCByaWQgV2lkZ2V0IGNvbXBsZXRlbHkuXG4gICAgIHRoZSB1bml0IHR5cGUgcGFyYW1ldGVycyBoZXJlIGFyZSBub3QgYWN0dWFsbHkgdW5pdCwgYnV0IHBhcnQgb2ZcbiAgICAgdGhlIHR5cGUgaW5mbyB3ZSBoYXZlIHRocm93biBhd2F5IGludG8gb3VyIGRhbmNlXG4gICAgIHdpdGggSlMgKilcbiAgdHlwZSB0ID0gTm9kZS50XG5cbiAgKCogaGVyZSBpcyBob3cgd2UgdGhyb3cgYXdheSB0eXBlIGluZm9ybWF0aW9uLiAgT3VyIGdvb2Qgb2xkIGZyaWVuZCBPYmoubWFnaWMsXG4gICAgIGJ1dCBjb25zdHJhaW5lZCBhIGxpdHRsZSBiaXQgKilcbiAgZXh0ZXJuYWwgb2pzX29mX2pzIDogKF8sIF8pIHdpZGdldCBKcy50IC0+IE9qcy50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSBTdGF0ZV9rZWVwZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIGJveCA9IFQgOiAoJ2EgKiBfKSBUeXBlX2VxdWFsLklkLnQgKiAnYSAtPiBib3hcblxuICAgIGxldCB0IDogKEpzLlVuc2FmZS5hbnksIGJveCkgSnNfbWFwLnQgPSBKc19tYXAuY3JlYXRlICgpXG4gICAgbGV0IHNldCB+aWQgZWxlbWVudCBzdGF0ZSA9IEpzX21hcC5zZXQgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KSAoVCAoaWQsIHN0YXRlKSlcblxuICAgIGxldCBnZXQgOiB0eXBlIGEgYi4gaWQ6KGEgKiBiKSBUeXBlX2VxdWFsLklkLnQgLT4gXyAtPiBhID1cbiAgICAgIGZ1biB+aWQgZWxlbWVudCAtPlxuICAgICAgbGV0IGVsZW1lbnQgPSBKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQgaW5cbiAgICAgIG1hdGNoIEpzX21hcC5nZXQgdCBlbGVtZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgaWRfc2V4cCA9IFR5cGVfZXF1YWwuSWQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCI8b3BhcXVlPlwiKSBpZCBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogZWxlbWVudCBzdGF0ZSBub3QgZm91bmRcIiAoaWRfc2V4cCA6IFNleHAudCldXG4gICAgICB8IFNvbWUgKFQgKGZfaWQsIHN0YXRlKSkgLT5cbiAgICAgICAgbGV0IFQgPSBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gaWQgZl9pZCBpblxuICAgICAgICBzdGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgZGVsZXRlIGVsZW1lbnQgPSBKc19tYXAuZGVsZXRlIHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudClcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICAodHlwZSBzKVxuICAgICAgICA/aW5mb1xuICAgICAgICA/KGRlc3Ryb3kgOiBzIC0+ICdlbGVtZW50IC0+IHVuaXQgPSBmdW4gXyBfIC0+ICgpKVxuICAgICAgICA/KHVwZGF0ZSA6IHMgLT4gJ2VsZW1lbnQgLT4gcyAqICdlbGVtZW50ID0gZnVuIHMgZWx0IC0+IHMsIGVsdClcbiAgICAgICAgfihpZCA6IChzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgfihpbml0IDogdW5pdCAtPiBzICogJ2VsZW1lbnQpXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvYmogOiAocywgXykgd2lkZ2V0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBvYmojIy50eXBlXyA6PSBKcy5zdHJpbmcgXCJXaWRnZXRcIjtcbiAgICBvYmojIy5uYW1lIDo9ICgpO1xuICAgIG9iaiMjLmlkIDo9IGlkO1xuICAgIG9iaiMjLmluZm8gOj0gaW5mbztcbiAgICBvYmojIy5pbml0XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgczAsIGRvbV9ub2RlID0gaW5pdCAoKSBpblxuICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUgczA7XG4gICAgICBkb21fbm9kZSk7XG4gICAgb2JqIyMudXBkYXRlXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZXYgZG9tX25vZGUgLT5cbiAgICAgICgqIFRoZSBbdXBkYXRlXSBtZXRob2Qgb2YgW29ial0gaXMgb25seSBjYWxsZWQgYnkgdmlydHVhbC1kb20gYWZ0ZXIgaXQgaGFzIGNoZWNrZWRcbiAgICAgICAgIHRoYXQgdGhlIFtpZF1zIG9mIFtwcmV2XSBhbmQgW29ial0gYXJlIFwiPT09XCIgZXF1YWwuIFRodXMgW3NhbWVfd2l0bmVzc19leG5dIHdpbGxcbiAgICAgICAgIG5ldmVyIHJhaXNlLiAqKVxuICAgICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIHByZXYjIy5pZCBpZCB3aXRoXG4gICAgICB8IFR5cGVfZXF1YWwuVCAtPlxuICAgICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICAgIGxldCBzdGF0ZScsIGRvbV9ub2RlJyA9IHVwZGF0ZSBwcmV2X3N0YXRlIGRvbV9ub2RlIGluXG4gICAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGU7XG4gICAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlJyBzdGF0ZSc7XG4gICAgICAgIGRvbV9ub2RlJyk7XG4gICAgb2JqIyMuZGVzdHJveVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBkb21fbm9kZSAtPlxuICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgZGVzdHJveSBwcmV2X3N0YXRlIGRvbV9ub2RlO1xuICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZSk7XG4gICAgTm9kZS50X29mX2pzIChvanNfb2ZfanMgb2JqKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgVmRvbV9yYXcgPSBSYXdcblxubGV0ICgpID1cbiAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuOztcblxuKCoqIFRoaXMgaGFzIDMga2luZHMgb2YgY29uc3RydWN0b3JzLlxuICAgIHt2XG4gICAgICAtIGNvbnN0cnVjdG9ycyBmb3IgcHJvcGVydGllcyAvIGF0dHJpYnV0ZXMgZm9yIHdoaWNoIHdlXG4gICAgICAgIGhhdmUgd3JpdHRlbiBmaXJzdCBjbGFzcyBvY2FtbCByZXByZXNlbnRhdGlvbnMgKHNvIGZhciBvbmx5IFN0eWxlLFxuICAgICAgICBDbGFzcywgYW5kIEhhbmRsZXIpXG5cbiAgICAgIC0gVGhvc2Ugd2hpY2ggd2UgaW1tZWRpYXRlbHkgY29udmVydCBpbnRvIEpzIGNhbGxlZCBSYXcsIHdoaWNoXG4gICAgICAgIGluIHR1cm4gaGFzIHR3byBjYXNlczpcbiAgICAgICAgLSBQcm9wZXJ0eSBmb3IgcHJvcGVydGllcyBvbiB0aGUgRE9NXG4gICAgICAgIC0gQXR0cmlidXRlIGZvciBhdHRyaWJ1dGVzIG9uIHRoZSBET01cblxuICAgICAgLSBIb29rcywgd2hpY2ggcmVnaXN0ZXIgY2FsbGJhY2tzIG9uIHByb3BlcnR5IGFkZGl0aW9uIGFuZCByZW1vdmFsLlxuICAgIHZ9XG5cbiAgICBHZW5lcmFsbHkgc3BlYWtpbmcgb25lIHNob3VsZCBhdm9pZCBjcmVhdGluZyBhIHByb3BlcnR5IG9yIGF0dHJpYnV0ZVxuICAgIGZvciBzb21ldGhpbmcgZm9yIHdoaWNoIHdlIGhhdmUgYSBmaXJzdCBjbGFzcyByZXByZXNlbnRhdGlvbi5cbiopXG5cbm1vZHVsZSBFdmVudF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgaGFuZGxlciA6ICgjRG9tX2h0bWwuZXZlbnQgYXMgJ2EpIEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudFxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgY29tYmluZVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBsdGlkOyBoYW5kbGVyID0gbGhhbmRsZXIgfSlcbiAgICAgICAgKFQgeyB0eXBlX2lkID0gcnRpZDsgaGFuZGxlciA9IHJoYW5kbGVyIH0gYXMgcmlnaHQpXG4gICAgPVxuICAgICgqIElmIHRoZXkgYXJlIG5vdCB0aGUgc2FtZSB3aXRuZXNzLCB0aGVuIGl0IGlzIGEgYnVnIGluIHZpcnR1YWxfZG9tLCBzaW5jZVxuICAgICAgIHdlIGRvIG5vdCBleHBvc2UgW29uXSBhbnltb3JlIHdoaWNoIG1lYW5zIHRoaXMgbGlicmFyeSBjYW4gZGV0ZXJtaW5lZCB0aGVcbiAgICAgICBbVHlwZV9lcXVhbC5JZF0gY29ycmVzcG9uZGluZyB0byBlYWNoIGV2ZW50LiB2aXJ0dWFsX2RvbSBtYWludGFpbnMgdGhlXG4gICAgICAgaW52YXJpYW50IHRoYXQgYW55IHR3byBldmVudHMgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgcHJvZHVjZSBoYW5kbGVyc1xuICAgICAgIHRoYXQgaGF2ZSB0aGUgc2FtZSBbVHlwZV9lcXVhbC5JZF0uICopXG4gICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbHRpZCBydGlkIHdpdGhcbiAgICB8IFNvbWUgVCAtPlxuICAgICAgVFxuICAgICAgICB7IHR5cGVfaWQgPSBsdGlkXG4gICAgICAgIDsgaGFuZGxlciA9XG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgICBFZmZlY3Quc2VxdWVuY2VfYXNfc2libGluZyAobGhhbmRsZXIgdmFsdWUpIH51bmxlc3Nfc3RvcHBlZDooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJoYW5kbGVyIHZhbHVlKSlcbiAgICAgICAgfVxuICAgIHwgTm9uZSAtPlxuICAgICAgZXByaW50X3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCVUchICBUeXBlLWlkcyBmb3IgZXZlbnQgaGFuZGxlcnMgZGlmZmVyXCJcbiAgICAgICAgICAgIChsdGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXG4gICAgICAgICAgICAocnRpZCA6IF8gVHlwZV9lcXVhbC5JZC50KV07XG4gICAgICByaWdodFxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHwgUHJvcGVydHkgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgQXR0cmlidXRlIG9mXG4gICAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzIDogYm9vbFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZhbHVlIDogSnMuVW5zYWZlLmFueVxuICAgICAgfVxuICB8IEhhbmRsZXIgb2ZcbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBoYW5kbGVyIDogRXZlbnRfaGFuZGxlci50XG4gICAgICB9XG4gIHwgSG9vayBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhvb2sgOiBIb29rcy50XG4gICAgICB9XG4gIHwgU3R5bGUgb2YgQ3NzX2dlbi50XG4gIHwgQ2xhc3Mgb2YgKHN0cmluZywgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgfCBNYW55IG9mIHQgbGlzdFxuICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgb2ZcbiAgICAgIHQgbGlzdCAqIChDc3NfZ2VuLnQgLT4gQ3NzX2dlbi50KSAqIChTdHJpbmcuU2V0LnQgLT4gU3RyaW5nLlNldC50KVxuICB8IE1hbnlfd2l0aG91dF9tZXJnZSBvZiB0IGxpc3RcblxubGV0IGNyZWF0ZSBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdCBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlXG4gICAgOyBuYW1lXG4gICAgOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKERvbV9mbG9hdC50b19qc19zdHJpbmcgdmFsdWUpXG4gICAgfVxuOztcblxubGV0IHByb3BlcnR5IG5hbWUgdmFsdWUgPSBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlIH1cblxubGV0IHN0cmluZ19wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgYm9vbF9wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuYm9vbCB2YWx1ZSkgfVxuOztcblxubGV0IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZnVuY3Rpb25cbiAgfCBBdHRyaWJ1dGUgYXR0cmlidXRlIC0+IEF0dHJpYnV0ZSB7IGF0dHJpYnV0ZSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgUHJvcGVydHkgcHJvcGVydHkgLT4gUHJvcGVydHkgeyBwcm9wZXJ0eSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY3JlYXRlX2hvb2sgbmFtZSBob29rID0gSG9vayB7IG5hbWU7IGhvb2sgfVxubGV0IG1hbnkgYXR0cnMgPSBNYW55IGF0dHJzXG5sZXQgbWFueV93aXRob3V0X21lcmdlIGF0dHJzID0gTWFueV93aXRob3V0X21lcmdlIGF0dHJzXG5sZXQgZW1wdHkgPSBNYW55IFtdXG5sZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbmxldCAoIEAgKSA9IGNvbWJpbmVcblxuZXh0ZXJuYWwgb2pzX29mX2FueSA6IEpzLlVuc2FmZS5hbnkgLT4gR2VuX2pzX2FwaS5PanMudCA9IFwiJWlkZW50aXR5XCJcblxubW9kdWxlIFVubWVyZ2VkX3dhcm5pbmdfbW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9fd2FybmluZ3NcbiAgICB8IEFsbF93YXJuaW5nc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBvZiBpbnRcblxuICBsZXQgd2FybmluZ19jb3VudCA9IHJlZiAwXG4gIGxldCBjdXJyZW50ID0gcmVmIChTdG9wX2FmdGVyX3F1b3RhIDEwMClcblxuICBsZXQgd2Fybl9zIHMgPVxuICAgIGluY3Igd2FybmluZ19jb3VudDtcbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb193YXJuaW5ncyAtPiAoKVxuICAgIHwgQWxsX3dhcm5pbmdzIC0+IGVwcmludF9zIHNcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgcXVvdGEgLT5cbiAgICAgIGxldCB3YXJuaW5nX2NvdW50ID0gIXdhcm5pbmdfY291bnQgaW5cbiAgICAgIGlmIHdhcm5pbmdfY291bnQgPD0gcXVvdGFcbiAgICAgIHRoZW4gKFxuICAgICAgICBlcHJpbnRfcyBzO1xuICAgICAgICBpZiB3YXJuaW5nX2NvdW50ID0gcXVvdGFcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVwcmludF9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJXQVJOSU5HOiByZWFjaGVkIHdhcm5pbmcgbWVzc2FnZSBxdW90YTsgbm8gbW9yZSBtZXNzYWdlcyB3aWxsIGJlIHByaW50ZWRcIlxuICAgICAgICAgICAgICAgIChxdW90YSA6IGludCldKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCByZXNldF93YXJuaW5nX2NvdW50ICgpID0gd2FybmluZ19jb3VudCA6PSAwXG4gIGVuZFxuZW5kXG5cbnR5cGUgbWVyZ2UgPVxuICB7IHN0eWxlcyA6IENzc19nZW4udFxuICA7IGNsYXNzZXMgOiBTZXQuTShTdHJpbmcpLnRcbiAgOyBoYW5kbGVycyA6IEV2ZW50X2hhbmRsZXIudCBNYXAuTShTdHJpbmcpLnRcbiAgOyBob29rcyA6IEhvb2tzLnQgTWFwLk0oU3RyaW5nKS50XG4gIH1cblxubGV0IGNvbWJpbmluZ19tYXBfYWRkIG1hcCBrZXkgdmFsdWUgfmNvbWJpbmUgPVxuICBNYXAudXBkYXRlIG1hcCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBTb21lIGV4aXN0aW5nX3ZhbHVlIC0+IGNvbWJpbmUgfmtleSBleGlzdGluZ192YWx1ZSB2YWx1ZVxuICAgIHwgTm9uZSAtPiB2YWx1ZSlcbjs7XG5cbmxldCBlbXB0eV9tZXJnZSA9XG4gIHsgc3R5bGVzID0gQ3NzX2dlbi5lbXB0eVxuICA7IGNsYXNzZXMgPSBTZXQuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaGFuZGxlcnMgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaG9va3MgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIH1cbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIGxldCBhdHRycyA9IFsgYXR0ciBdIGluXG4gICgqIFdoZW4gaW5wdXQgZWxlbWVudHMgaGF2ZSB0aGVpciB2YWx1ZSBzZXQgdG8gd2hhdCBpdCBhbHJlYWR5IGlzXG4gICAgIHRoZSBjdXJzb3IgZ2V0cyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZCBldmVuIHdoZW4gdGhlIHVzZXJcbiAgICAgaXMgZWRpdGluZyBpbiB0aGUgbWlkZGxlLiBTb2Z0U2V0SG9vayAoZnJvbSAuL3NvZnQtc2V0LWhvb2suanMpXG4gICAgIGNvbXBhcmVzIGJlZm9yZSBzZXR0aW5nLCBhdm9pZGluZyB0aGUgcHJvYmxlbSBqdXN0IGxpa2UgaW5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9pbmRleC5qcyNMNDMtTDUxXG5cbiAgICAgbm90ZSB0aGF0IEVsbSdzIHZpcnR1YWwtZG9tIGluY2x1ZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhpcyBzb1xuICAgICBpZiB3ZSBzd2l0Y2ggdG8gdGhhdCB0aGUgd29ya2Fyb3VuZCBoZXJlIHdpbGwgYmUgdW5uZWNlc3NhcnkuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9lbG0tbGFuZy92aXJ0dWFsLWRvbS9ibG9iLzE3YjMwZmI3ZGU0ODY3MjU2NWQ2MjI3ZDMzYzAxNzZmMDc1Nzg2ZGIvc3JjL05hdGl2ZS9WaXJ0dWFsRG9tLmpzI0w0MzQtTDQzOVxuICAqKVxuICBsZXQgYXR0cnNfb2JqIDogVmRvbV9yYXcuQXR0cnMudCA9IFZkb21fcmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAoKiBbdGFrZV9zZWNvbmRfKl0gaXMgdGhlIHRyaXZpYWwgbWVyZ2UgZnVuY3Rpb24gKGkuZS4gbm8gbWVyZ2UgYXQgYWxsKTsgaXRcbiAgICAgdGFrZXMgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUga2luZCwgaWdub3JlcyBhIGZpcnN0LCBhbmQgZW1pdHNcbiAgICAgYSB3YXJuaW5nIGlmIFt3YXJuX2Fib3V0X3VubWVyZ2VkX2F0dHJpYnV0ZXNdIGlzIGVuYWJsZWQuICopXG4gIGxldCB0YWtlX3NlY29uZF9zdHlsZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgc3R5bGVzXCIgKGZpcnN0IDogQ3NzX2dlbi50KSAoc2Vjb25kIDogQ3NzX2dlbi50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9jbGFzc2VzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChTZXQuaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgY2xhc3Nlc1wiIChmaXJzdCA6IFN0cmluZy5TZXQudCkgKHNlY29uZCA6IFN0cmluZy5TZXQudCldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaGFuZGxlciB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBoYW5kbGVyc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9ob29rIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaG9va3NcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICAoKiBXZSBtZXJnZSBhdHRyaWJ1dGVzIHdoZW4gdGhleSBhcmUgd3JpdHRlbiB0byB0aGUgcmF3IGF0dHJpYnV0ZSBvYmplY3QsXG4gICAgIHJhdGhlciB0aGFuIHdoZW4gdGhlIHVzZXItZmFjaW5nIG1lcmdlIGZ1bmN0aW9ucyAoW21hbnldLCBbY29tYmluZV0sIGFuZFxuICAgICBbQF0pIGFyZSBjYWxsZWQuIFRoaXMgc3RyYXRlZ3kgaXMgYmV0dGVyIGluIGJvdGggc3BlZWQgYW5kIG1lbW9yeSB1c2FnZSxcbiAgICAgc2luY2UgaXQgbWVhbnMgd2UgZG8gbm90IG5lZWQgdG8gY29uY2F0ZW5hdGUgdGhlIGxpc3Qgb2YgXCJ1bm1lcmdlYWJsZVwiXG4gICAgIGF0dHJpYnV0ZXMgKFByb3BlcnR5IGFuZCBBdHRyaWJ1dGUpOyBpbnN0ZWFkLCB3ZSBjYW4gaXRlcmF0ZSB0aHJvdWdoIHRoZVxuICAgICB0cmVlIG9mIGF0dHJpYnV0ZXMgYW5kIGVhZ2VybHkgd3JpdGUgdW5tZXJnZWFibGUgYXR0cmlidXRlcyB0byB0aGVcbiAgICAgYXR0cmlidXRlIG9iamVjdCBhcyB3ZSBmaW5kIHRoZW0uIElmIHR3byB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIGhhdmUgdGhlXG4gICAgIHNhbWUgbmFtZSwgdGhlIHNlY29uZCB3aWxsIHNpbXBseSBvdmVyd3JpdGUgdGhlIGZpcnN0LCBhcyBkZXNpcmVkLlxuXG4gICAgIEluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBleGlzdGluZyBiZWhhdmlvciBvZiB0aGUgW011bHRpXSBtb2R1bGUgKHRoYXQgaXMsXG4gICAgIGl0IG11c3QgYmUgcG9zc2libGUgdG8gbWVyZ2UgY2xhc3NlcyBhbmQgc3R5bGVzLCBidXQgbm90IGhvb2tzIGFuZFxuICAgICBoYW5kbGVycyksIHdlIGludHJvZHVjZSB0aGUgd29ya2Fyb3VuZCBjb25zdHJ1Y3RvclxuICAgICBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10uXG5cbiAgICAgVGhlcmUgYXJlIHRodXMgdGhyZWUgY2FzZXMgdGhhdCBlYWNoIGhhdmUgZGlmZmVyZW50IG1lcmdlIGJlaGF2aW9yczpcbiAgICAgLSBTaW1wbGUgbGlzdHMgLSBubyBtZXJnaW5nXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55XSAtIG1lcmdlcyBjbGFzc2VzLCBzdHlsZXMsIGhvb2tzLCBhbmQgaGFuZGxlcnNcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdIC0gbWVyZ2VzIGNsYXNzZXMgYW5kIHN0eWxlc1xuXG4gICAgIFRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSBtYXRjaCBleHByZXNzaW9uIGxvZ2ljLCB3ZSBwYXJlbWV0ZXJpemUgaXQgYnkgdGhlXG4gICAgIG1lcmdpbmcgYmVoYXZpb3IsIHNpbmNlIFwibm8gbWVyZ2VcIiByZWFsbHkgbWVhbnMgXCJtZXJnZSBieSB0YWtpbmcgdGhlXG4gICAgIHNlY29uZCBvbmVcIi4gKilcbiAgbGV0IHJlYyBtZXJnZSB+Y29tYmluZV9ob29rIH5jb21iaW5lX2hhbmRsZXIgfmNvbWJpbmVfc3R5bGVzIH5jb21iaW5lX2NsYXNzZXMgYWNjID1cbiAgICBMaXN0LmZvbGQgfmluaXQ6YWNjIH5mOihmdW4gYWNjIGF0dHIgLT5cbiAgICAgIG1hdGNoIGF0dHIgd2l0aFxuICAgICAgfCBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzOyBuYW1lOyB2YWx1ZSB9IC0+XG4gICAgICAgIGlmIFJhdy5BdHRycy5oYXNfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgJiYgbm90IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIHByb3BlcnRpZXNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgICAgICAobWF0Y2ggbmFtZSB3aXRoXG4gICAgICAgICB8IFwidmFsdWVcIiAtPlxuICAgICAgICAgICBsZXQgc29mdFNldEhvb2sgeCA6IEdlbl9qc19hcGkuT2pzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsICMjIFNvZnRTZXRIb29rIHggaW5cbiAgICAgICAgICAgbGV0IHZhbHVlID0gc29mdFNldEhvb2sgdmFsdWUgaW5cbiAgICAgICAgICAgVmRvbV9yYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInZhbHVlXCIgdmFsdWVcbiAgICAgICAgIHwgbmFtZSAtPiBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChvanNfb2ZfYW55IHZhbHVlKSk7XG4gICAgICAgIGFjY1xuICAgICAgfCBBdHRyaWJ1dGUgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgYXR0cmlidXRlc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lIChvanNfb2ZfYW55IHZhbHVlKTtcbiAgICAgICAgYWNjXG4gICAgICB8IFN0eWxlIG5ld19zdHlsZXMgLT4geyBhY2Mgd2l0aCBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIG5ld19zdHlsZXMgfVxuICAgICAgfCBDbGFzcyBuZXdfY2xhc3NlcyAtPlxuICAgICAgICB7IGFjYyB3aXRoIGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgbmV3X2NsYXNzZXMgfVxuICAgICAgfCBIb29rIHsgbmFtZTsgaG9vayB9IC0+XG4gICAgICAgIHsgYWNjIHdpdGggaG9va3MgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaG9va3MgbmFtZSBob29rIH5jb21iaW5lOmNvbWJpbmVfaG9vayB9XG4gICAgICB8IEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aFxuICAgICAgICAgIGhhbmRsZXJzID1cbiAgICAgICAgICAgIGNvbWJpbmluZ19tYXBfYWRkIGFjYy5oYW5kbGVycyBuYW1lIGhhbmRsZXIgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIH1cbiAgICAgIHwgTWFueSBhdHRycyAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazooZnVuIH5rZXk6XyAtPiBIb29rcy5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjooZnVuIH5rZXk6XyAtPiBFdmVudF9oYW5kbGVyLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOlNldC51bmlvblxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgbWFwX3N0eWxlcywgbWFwX2NsYXNzZXMpIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpTZXQudW5pb25cbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IG1hcF9zdHlsZXMgKGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlcylcbiAgICAgICAgOyBjbGFzc2VzID0gbWFwX2NsYXNzZXMgKGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3NlcylcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9KVxuICBpblxuICBsZXQgbWVyZ2UgPVxuICAgIG1lcmdlXG4gICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICBlbXB0eV9tZXJnZVxuICAgICAgYXR0cnNcbiAgaW5cbiAgTWFwLml0ZXJpIG1lcmdlLmhvb2tzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOmhvb2sgLT5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChvanNfb2ZfYW55IChIb29rcy5wYWNrIGhvb2spKSk7XG4gIE1hcC5pdGVyaSBtZXJnZS5oYW5kbGVycyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTooRXZlbnRfaGFuZGxlci5UIHsgaGFuZGxlcjsgXyB9KSAtPlxuICAgIGxldCBmIGUgPVxuICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGUgZSAoaGFuZGxlciBlKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5XG4gICAgICBhdHRyc19vYmpcbiAgICAgIChcIm9uXCIgXiBuYW1lKVxuICAgICAgKG9qc19vZl9hbnkgKEpzLlVuc2FmZS5pbmplY3QgKERvbS5oYW5kbGVyIGYpKSkpO1xuICBsZXQgKCkgPVxuICAgIGlmIG5vdCAoQ3NzX2dlbi5pc19lbXB0eSBtZXJnZS5zdHlsZXMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJvcHMgPSBDc3NfZ2VuLnRvX3N0cmluZ19saXN0IG1lcmdlLnN0eWxlcyBpblxuICAgICAgbGV0IG9iaiA9IEdlbl9qc19hcGkuT2pzLmVtcHR5X29iaiAoKSBpblxuICAgICAgTGlzdC5pdGVyIHByb3BzIH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIEdlbl9qc19hcGkuT2pzLnNldF9wcm9wX2FzY2lpIG9iaiBrIChHZW5fanNfYXBpLk9qcy5zdHJpbmdfdG9fanMgdikpO1xuICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJzdHlsZVwiIG9iailcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBTZXQuaXNfZW1wdHkgbWVyZ2UuY2xhc3Nlc1xuICAgIHRoZW4gKClcbiAgICBlbHNlXG4gICAgICBSYXcuQXR0cnMuc2V0X2F0dHJpYnV0ZVxuICAgICAgICBhdHRyc19vYmpcbiAgICAgICAgXCJjbGFzc1wiXG4gICAgICAgIChHZW5fanNfYXBpLk9qcy5zdHJpbmdfdG9fanMgKFN0cmluZy5jb25jYXQgKFNldC50b19saXN0IG1lcmdlLmNsYXNzZXMpIH5zZXA6XCIgXCIpKVxuICBpblxuICBhdHRyc19vYmpcbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIG1hdGNoIGF0dHIgd2l0aFxuICB8IE1hbnkgW10gfCBNYW55X3dpdGhvdXRfbWVyZ2UgW10gLT4gUmF3LkF0dHJzLmNyZWF0ZSAoKVxuICB8IGF0dHIgLT4gdG9fcmF3IGF0dHJcbjs7XG5cbmxldCBzdHlsZSBjc3MgPSBTdHlsZSBjc3NcblxubGV0IHZhbGlkX2NsYXNzX25hbWUgcyA9XG4gIGxldCBpbnZhbGlkID0gU3RyaW5nLmlzX2VtcHR5IHMgfHwgU3RyaW5nLmV4aXN0cyBzIH5mOkNoYXIuaXNfd2hpdGVzcGFjZSBpblxuICBub3QgaW52YWxpZFxuOztcblxubGV0JXRlc3QgXCJ2YWxpZFwiID0gdmFsaWRfY2xhc3NfbmFtZSBcImZvby1iYXJcIlxubGV0JXRlc3QgXCJpbnZhbGlkLWVtcHR5XCIgPSBub3QgKHZhbGlkX2NsYXNzX25hbWUgXCJcIilcbmxldCV0ZXN0IFwiaW52YWxpZC1zcGFjZVwiID0gbm90ICh2YWxpZF9jbGFzc19uYW1lIFwiZm9vIGJhclwiKVxuXG5sZXQgY2xhc3NfIGNsYXNzbmFtZSA9XG4gIGlmIG5vdCAodmFsaWRfY2xhc3NfbmFtZSBjbGFzc25hbWUpXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIGNsYXNzbmFtZVwiIChjbGFzc25hbWUgOiBzdHJpbmcpXTtcbiAgQ2xhc3MgKFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmcpIGNsYXNzbmFtZSlcbjs7XG5cbmxldCBjbGFzc2VzJyBjbGFzc2VzID0gQ2xhc3MgY2xhc3Nlc1xuXG5sZXQgY2xhc3NlcyBjbGFzc25hbWVzID1cbiAgaWYgbm90IChMaXN0LmZvcl9hbGwgfmY6dmFsaWRfY2xhc3NfbmFtZSBjbGFzc25hbWVzKVxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiaW52YWxpZCBjbGFzc25hbWVzXCIgKGNsYXNzbmFtZXMgOiBzdHJpbmcgbGlzdCldO1xuICBjbGFzc2VzJyAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIGNsYXNzbmFtZXMpXG47O1xuXG5sZXQgaWQgcyA9IGNyZWF0ZSBcImlkXCIgc1xubGV0IG5hbWUgcyA9IGNyZWF0ZSBcIm5hbWVcIiBzXG5sZXQgaHJlZiByID0gY3JlYXRlIFwiaHJlZlwiIHJcbmxldCB0YXJnZXQgcyA9IGNyZWF0ZSBcInRhcmdldFwiIHNcbmxldCBjaGVja2VkID0gY3JlYXRlIFwiY2hlY2tlZFwiIFwiXCJcbmxldCBzZWxlY3RlZCA9IGNyZWF0ZSBcInNlbGVjdGVkXCIgXCJcIlxubGV0IGhpZGRlbiA9IGNyZWF0ZSBcImhpZGRlblwiIFwiXCJcbmxldCByZWFkb25seSA9IGNyZWF0ZSBcInJlYWRvbmx5XCIgXCJcIlxubGV0IGRpc2FibGVkID0gY3JlYXRlIFwiZGlzYWJsZWRcIiBcIlwiXG5sZXQgcGxhY2Vob2xkZXIgeCA9IGNyZWF0ZSBcInBsYWNlaG9sZGVyXCIgeFxuXG5sZXQgYXV0b2ZvY3VzID0gZnVuY3Rpb25cbiAgfCB0cnVlIC0+IGNyZWF0ZSBcImF1dG9mb2N1c1wiIFwiXCJcbiAgfCBmYWxzZSAtPiBlbXB0eVxuOztcblxubGV0IGZvcl8geCA9IGNyZWF0ZSBcImZvclwiIHhcbmxldCB0eXBlXyB4ID0gY3JlYXRlIFwidHlwZVwiIHhcbmxldCB2YWx1ZSB4ID0gY3JlYXRlIFwidmFsdWVcIiB4XG5sZXQgdmFsdWVfcHJvcCB4ID0gc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiB4XG5sZXQgdGFiaW5kZXggeCA9IGNyZWF0ZSBcInRhYmluZGV4XCIgKEludC50b19zdHJpbmcgeClcbmxldCB0aXRsZSB4ID0gY3JlYXRlIFwidGl0bGVcIiB4XG5sZXQgc3JjIHggPSBjcmVhdGUgXCJzcmNcIiB4XG5sZXQgbWluIHggPSBjcmVhdGVfZmxvYXQgXCJtaW5cIiB4XG5sZXQgbWF4IHggPSBjcmVhdGVfZmxvYXQgXCJtYXhcIiB4XG5sZXQgY29sc3BhbiB4ID0gY3JlYXRlIFwiY29sc3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgcm93c3BhbiB4ID0gY3JlYXRlIFwicm93c3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgZHJhZ2dhYmxlIGIgPSBjcmVhdGUgXCJkcmFnZ2FibGVcIiAoQm9vbC50b19zdHJpbmcgYilcblxubW9kdWxlIFR5cGVfaWQgPSBzdHJ1Y3RcbiAgKCogV2UgcHJvdmlkZSBhIHRyaXZpYWwgW3RvX3NleHBdIGZ1bmN0aW9uIHNpbmNlIHdlIG9ubHkgd2FudFxuICAgICB0byB1bmlmeSB0eXBlIGlkcyBhbmQgbm90IGNvbnZlcnQgdHlwZXMgdG8gaWRzICopXG4gIGxldCBjcmVhdGUgbmFtZSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIChmdW4gXyAtPiBTZXhwbGliLlNleHAuTGlzdCBbXSlcbiAgbGV0IChldmVudCA6IERvbV9odG1sLmV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJldmVudFwiXG4gIGxldCAoZm9jdXMgOiBEb21faHRtbC5mb2N1c0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJmb2N1c0V2ZW50XCJcbiAgbGV0IChtb3VzZSA6IERvbV9odG1sLm1vdXNlRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNlRXZlbnRcIlxuICBsZXQgKGtleWJvYXJkIDogRG9tX2h0bWwua2V5Ym9hcmRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwia2V5Ym9hcmRFdmVudFwiXG4gIGxldCAoc3VibWl0IDogRG9tX2h0bWwuc3VibWl0RXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInN1Ym1pdEV2ZW50XCJcbiAgbGV0IChtb3VzZXdoZWVsIDogRG9tX2h0bWwubW91c2V3aGVlbEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJtb3VzZXdoZWVsRXZlbnRcIlxuICBsZXQgKGNsaXBib2FyZCA6IERvbV9odG1sLmNsaXBib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJjbGlwYm9hcmRFdmVudFwiXG4gIGxldCAoZHJhZyA6IERvbV9odG1sLmRyYWdFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZHJhZ0V2ZW50XCJcbiAgbGV0IChwb2ludGVyIDogRG9tX2h0bWwucG9pbnRlckV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJwb2ludGVyRXZlbnRcIlxuICBsZXQgKGFuaW1hdGlvbiA6IERvbV9odG1sLmFuaW1hdGlvbkV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJhbmltYXRpb25FdmVudFwiXG5lbmRcblxubGV0IG9uIHR5cGVfaWQgbmFtZSAoaGFuZGxlciA6ICNEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQpIDogdCA9XG4gIEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyID0gVCB7IGhhbmRsZXI7IHR5cGVfaWQgfSB9XG47O1xuXG5sZXQgb25fZm9jdXMgPSBvbiBUeXBlX2lkLmZvY3VzIFwiZm9jdXNcIlxubGV0IG9uX2JsdXIgPSBvbiBUeXBlX2lkLmZvY3VzIFwiYmx1clwiXG5sZXQgb25fY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY2xpY2tcIlxubGV0IG9uX2NvbnRleHRtZW51ID0gb24gVHlwZV9pZC5tb3VzZSBcImNvbnRleHRtZW51XCJcbmxldCBvbl9kb3VibGVfY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiZGJsY2xpY2tcIlxubGV0IG9uX2RyYWcgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnXCJcbmxldCBvbl9kcmFnc3RhcnQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnc3RhcnRcIlxubGV0IG9uX2RyYWdlbmQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW5kXCJcbmxldCBvbl9kcmFnZW50ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW50ZXJcIlxubGV0IG9uX2RyYWdsZWF2ZSA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdsZWF2ZVwiXG5sZXQgb25fZHJhZ292ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnb3ZlclwiXG5sZXQgb25fZHJvcCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyb3BcIlxubGV0IG9uX21vdXNlbW92ZSA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW1vdmVcIlxubGV0IG9uX21vdXNldXAgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2V1cFwiXG5sZXQgb25fbW91c2Vkb3duID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZG93blwiXG5sZXQgb25fbW91c2VlbnRlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWVudGVyXCJcbmxldCBvbl9tb3VzZWxlYXZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbGVhdmVcIlxubGV0IG9uX21vdXNlb3ZlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW92ZXJcIlxubGV0IG9uX21vdXNlb3V0ID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3V0XCJcbmxldCBvbl9rZXl1cCA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXl1cFwiXG5sZXQgb25fa2V5cHJlc3MgPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5cHJlc3NcIlxubGV0IG9uX2tleWRvd24gPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5ZG93blwiXG5sZXQgb25fc2Nyb2xsID0gb24gVHlwZV9pZC5ldmVudCBcInNjcm9sbFwiXG5sZXQgb25fc3VibWl0ID0gb24gVHlwZV9pZC5zdWJtaXQgXCJzdWJtaXRcIlxubGV0IG9uX3BvaW50ZXJkb3duID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcmRvd25cIlxubGV0IG9uX3BvaW50ZXJ1cCA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJ1cFwiXG5sZXQgb25fbW91c2V3aGVlbCA9IG9uIFR5cGVfaWQubW91c2V3aGVlbCBcIm1vdXNld2hlZWxcIlxubGV0IG9uX2NvcHkgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcImNvcHlcIlxubGV0IG9uX2N1dCA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY3V0XCJcbmxldCBvbl9wYXN0ZSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwicGFzdGVcIlxubGV0IG9uX3Jlc2V0ID0gb24gVHlwZV9pZC5ldmVudCBcInJlc2V0XCJcbmxldCBvbl9hbmltYXRpb25lbmQgPSBvbiBUeXBlX2lkLmFuaW1hdGlvbiBcImFuaW1hdGlvbmVuZFwiXG5sZXQgY29uc3RfaWdub3JlIF8gPSBFZmZlY3QuSWdub3JlXG5cbmNsYXNzIHR5cGUgdmFsdWVfZWxlbWVudCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgRG9tX2h0bWwuZWxlbWVudFxuICAgIG1ldGhvZCB2YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbnR5cGUgdmFsdWVfY29lcmNpb24gPSBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmFsdWVfZWxlbWVudCBKcy50IEpzLm9wdFxuXG5sZXQgcnVuX2NvZXJjaW9uIGNvZXJjaW9uIHRhcmdldCBwcmV2ID1cbiAgbWF0Y2ggcHJldiB3aXRoXG4gIHwgU29tZSBfIC0+IHByZXZcbiAgfCBOb25lIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjaW9uIHRhcmdldClcbjs7XG5cbmxldCBjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQgPVxuICBsZXQgb3BlbiBEb21faHRtbC5Db2VyY2VUbyBpblxuICBOb25lXG4gIHw+IHJ1bl9jb2VyY2lvbiAoaW5wdXQgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuICB8PiBydW5fY29lcmNpb24gKHNlbGVjdCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAodGV4dGFyZWEgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuOztcblxubGV0IG9uX2lucHV0X2V2ZW50IHR5cGVfaWQgZXZlbnQgaGFuZGxlciA9XG4gIG9uIHR5cGVfaWQgZXZlbnQgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAoY29lcmNlX3ZhbHVlX2VsZW1lbnQgdGFyZ2V0KVxuICAgICAgICB+ZGVmYXVsdDpFZmZlY3QuSWdub3JlXG4gICAgICAgIH5mOihmdW4gdGFyZ2V0IC0+XG4gICAgICAgICAgbGV0IHRleHQgPSBKcy50b19zdHJpbmcgdGFyZ2V0IyMudmFsdWUgaW5cbiAgICAgICAgICBoYW5kbGVyIGV2IHRleHQpKSlcbjs7XG5cbmxldCBvbl9jaGFuZ2UgPSBvbl9pbnB1dF9ldmVudCBUeXBlX2lkLmV2ZW50IFwiY2hhbmdlXCJcbmxldCBvbl9pbnB1dCA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJpbnB1dFwiXG5sZXQgdG9fcmF3IGwgPSB0b19yYXcgbFxuXG5sZXQgb25fZmlsZV9pbnB1dCBoYW5kbGVyID1cbiAgb24gVHlwZV9pZC5ldmVudCBcImlucHV0XCIgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgSnMuT3B0LmNhc2UgKERvbV9odG1sLkNvZXJjZVRvLmlucHV0IHRhcmdldCkgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICAgIEpzLk9wdGRlZi5jYXNlIHRhcmdldCMjLmZpbGVzIGNvbnN0X2lnbm9yZSAoZnVuIGZpbGVzIC0+IGhhbmRsZXIgZXYgZmlsZXMpKSkpXG47O1xuXG5tb2R1bGUgQWx3YXlzX2ZvY3VzX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVW5pdFxuXG4gICAgICBsZXQgY29tYmluZSAoKSAoKSA9ICgpXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCAoKSBfID0gKClcbiAgICBsZXQgb25fbW91bnQgKCkgKCkgZWxlbWVudCA9IGVsZW1lbnQjI2ZvY3VzXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0OigpIH5uZXdfaW5wdXQ6KCkgKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgKCkgKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcImFsd2F5cy1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTaW5nbGVfZm9jdXNfaG9vayAoKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIGxldCBoYXNfYmVlbl91c2VkID0gcmVmIGZhbHNlXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9ICh1bml0IFVpX2VmZmVjdC50W0BzZXhwLm9wYXF1ZV0pIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbiAgICBlbmRcblxuICAgIGxldCBpbml0IF8gXyA9ICgpXG5cbiAgICBsZXQgb25fbW91bnQgZXZlbnQgKCkgZWxlbWVudCA9XG4gICAgICBpZiBub3QgIWhhc19iZWVuX3VzZWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBoYXNfYmVlbl91c2VkIDo9IHRydWU7XG4gICAgICAgIGVsZW1lbnQjI2ZvY3VzO1xuICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biBldmVudClcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgfmFmdGVyID1cbiAgICAoKiBBcHBlbmQgdGhlIGlkIHRvIHRoZSBuYW1lIG9mIHRoZSBob29rIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGRpc3RpbmN0XG4gICAgICAgZnJvbSBhbGwgb3RoZXIgZm9jdXMgaG9va3MuICopXG4gICAgY3JlYXRlX2hvb2sgXCJzaW5nbGUtZm9jdXMtaG9va1wiIChIb29rLmNyZWF0ZSBhZnRlcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcblxuICB0eXBlIGF0dHIgPSB0XG4gIHR5cGUgdCA9IGF0dHIgbGlzdFxuXG4gIGxldCBtYXBfc3R5bGUgdCB+ZiA9IFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgZiwgRm4uaWQpIF1cblxuICBsZXQgYWRkX2NsYXNzIHQgYyA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgZnVuIGNzIC0+IFNldC5hZGQgY3MgYykgXVxuICA7O1xuXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX3N0eWxlIHQgfmY6KGZ1biBzcyAtPiBDc3NfZ2VuLmNvbWJpbmUgc3MgcylcblxuICBsZXQgbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIHQgPVxuICAgIFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIEZuLmlkKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcmVjIGZpbHRlcl9ieV9raW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUHJvcGVydHkgXyAtPiBpZiBmIGBQcm9wZXJ0eSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQXR0cmlidXRlIF8gLT4gaWYgZiBgQXR0cmlidXRlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIb29rIF8gLT4gaWYgZiBgSG9vayB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSGFuZGxlciBfIC0+IGlmIGYgYEhhbmRsZXIgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IFN0eWxlIF8gLT4gaWYgZiBgU3R5bGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IENsYXNzIF8gLT4gaWYgZiBgQ2xhc3MgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IE1hbnkgYXR0cnMgLT4gTWFueSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBhLCBiKSAtPlxuICAgICAgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSwgYSwgYilcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgTWFueV93aXRob3V0X21lcmdlIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICA7O1xuXG4gIGxldCByZWMgY29udGFpbnNfbmFtZSBsb29raW5nX2ZvciA9IGZ1bmN0aW9uXG4gICAgfCBQcm9wZXJ0eSB7IG5hbWU7IF8gfSB8IEF0dHJpYnV0ZSB7IG5hbWU7IF8gfSB8IEhvb2sgeyBuYW1lOyBfIH0gLT5cbiAgICAgIFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBuYW1lXG4gICAgfCBIYW5kbGVyIHsgbmFtZTsgXyB9IC0+IFN0cmluZy5lcXVhbCAoXCJvblwiIF4gbmFtZSkgbG9va2luZ19mb3JcbiAgICB8IFN0eWxlIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwic3R5bGVcIlxuICAgIHwgQ2xhc3MgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJjbGFzc1wiXG4gICAgfCBNYW55IGF0dHJzXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgXywgXylcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPiBMaXN0LmV4aXN0cyB+ZjooY29udGFpbnNfbmFtZSBsb29raW5nX2ZvcikgYXR0cnNcbiAgOztcbmVuZFxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHZhbCBldmVudF9raW5kIDogRG9tX2h0bWwubW91c2VFdmVudCBKcy50IERvbS5FdmVudC50eXBcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCBjb21iaW5lIGYgZyBldmVudCA9IFVpX2VmZmVjdC5NYW55IFsgZiBldmVudDsgZyBldmVudCBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBsaXN0ZW5lciA6IChEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFtAc2V4cC5vcGFxdWVdKSB9XG4gICAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgbGV0IHNldCBmID1cbiAgICAgICAgbGV0IGhhbmRsZXIgPVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIChmIGV2KTtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgICBpblxuICAgICAgICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIERvbV9odG1sLndpbmRvdyBYLmV2ZW50X2tpbmQgaGFuZGxlciBKcy5fdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0IGluaXQgZiBfZWxlbWVudCA9IHsgU3RhdGUubGlzdGVuZXIgPSBzZXQgZiB9XG4gICAgICBsZXQgZGVzdHJveSBfaW5wdXQgc3RhdGUgX2VsZW1lbnQgPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIHN0YXRlLlN0YXRlLmxpc3RlbmVyXG5cbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmYgc3RhdGUgZWxlbWVudCA9XG4gICAgICAgICgqIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjaGFuZ2VzLCBjYW5jZWwgdGhlIG9sZCBvbmUgYW5kIHJlLWluc3RhbGwgKilcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgICAgbGV0IG5ld19zdGF0ZSA9IGluaXQgZiBlbGVtZW50IGluXG4gICAgICAgIHN0YXRlLlN0YXRlLmxpc3RlbmVyIDwtIG5ld19zdGF0ZS5saXN0ZW5lclxuICAgICAgOztcblxuICAgICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTW91c2VfdXAgPSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNldXBcbiAgZW5kKVxuXG5tb2R1bGUgTW91c2VfbW92ZSA9IE1ha2UgKHN0cnVjdFxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2Vtb3ZlXG4gIGVuZClcblxubGV0IG1vdXNldXAgZiA9IE1vdXNlX3VwLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2V1cC1saXN0ZW5lclwiXG5sZXQgbW91c2Vtb3ZlIGYgPSBNb3VzZV9tb3ZlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2Vtb3ZlLWxpc3RlbmVyXCJcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIGxldCBtb3VzZV91cF90eXBlX2lkID0gTW91c2VfdXAuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgbW91c2VfbW92ZV90eXBlX2lkID0gTW91c2VfbW92ZS5Gb3JfdGVzdGluZy50eXBlX2lkXG5lbmRcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgV2lkZ2V0ID0gc3RydWN0XG4gIG9wZW4gSnNfb2Zfb2NhbWxcbiAgaW5jbHVkZSBSYXcuV2lkZ2V0XG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgZG9tID0gcHJpdmF0ZSAjRG9tX2h0bWwuZWxlbWVudFxuXG4gICAgbW9kdWxlIElucHV0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBjcmVhdGUgOiBJbnB1dC50IC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIHVwZGF0ZVxuICAgICAgOiAgcHJldl9pbnB1dDpJbnB1dC50XG4gICAgICAtPiBpbnB1dDpJbnB1dC50XG4gICAgICAtPiBzdGF0ZTpTdGF0ZS50XG4gICAgICAtPiBlbGVtZW50OmRvbSBKcy50XG4gICAgICAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCBkZXN0cm95IDogcHJldl9pbnB1dDpJbnB1dC50IC0+IHN0YXRlOlN0YXRlLnQgLT4gZWxlbWVudDpkb20gSnMudCAtPiB1bml0XG4gIGVuZFxuXG4gIGxldCBvZl9tb2R1bGUgKHR5cGUgaW5wdXQpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIElucHV0LnQgPSBpbnB1dCkgPVxuICAgIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5wdXQgOiBNLklucHV0LnRcbiAgICAgICAgOyBzdGF0ZSA6IE0uU3RhdGUudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuICAgIGluXG4gICAgbGV0IHNleHBfb2ZfZG9tIDogTS5kb20gSnMudCAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCI8b3BhcXVlPlwiIGluXG4gICAgbGV0IGlkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6TS5uYW1lIFslc2V4cF9vZjogU3RhdGUudCAqIGRvbV0gaW5cbiAgICBCYXNlLlN0YWdlZC5zdGFnZSAoZnVuIGlucHV0IC0+XG4gICAgICBsZXQgaW5mbyA9IGxhenkgKE0uSW5wdXQuc2V4cF9vZl90IGlucHV0KSBpblxuICAgICAgY3JlYXRlXG4gICAgICAgIH5pZFxuICAgICAgICB+aW5mb1xuICAgICAgICB+aW5pdDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS5jcmVhdGUgaW5wdXQgaW5cbiAgICAgICAgICB7IGlucHV0OyBzdGF0ZSB9LCBlbGVtZW50KVxuICAgICAgICB+dXBkYXRlOihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0udXBkYXRlIH5wcmV2X2lucHV0IH5pbnB1dCB+c3RhdGUgfmVsZW1lbnQgaW5cbiAgICAgICAgICB7IGlucHV0OyBzdGF0ZSB9LCBlbGVtZW50KVxuICAgICAgICB+ZGVzdHJveTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBNLmRlc3Ryb3kgfnByZXZfaW5wdXQgfnN0YXRlIH5lbGVtZW50KVxuICAgICAgICAoKSlcbiAgOztcbmVuZFxuXG50eXBlIGVsZW1lbnQgPVxuICB7IHRhZyA6IHN0cmluZ1xuICA7IGtleSA6IHN0cmluZyBvcHRpb25cbiAgOyBhdHRycyA6IEF0dHIudFxuICA7IHJhd19hdHRycyA6IFJhdy5BdHRycy50IExhenkudFxuICA7IGNoaWxkcmVuIDogUmF3Lk5vZGUudCBKcy5qc19hcnJheSBKcy50XG4gIDsga2luZCA6IFsgYFZub2RlIHwgYFN2ZyBdXG4gIH1cblxuYW5kIHQgPVxuICB8IE5vbmVcbiAgfCBUZXh0IG9mIHN0cmluZ1xuICB8IEVsZW1lbnQgb2YgZWxlbWVudFxuICB8IFdpZGdldCBvZiBXaWRnZXQudFxuXG5tb2R1bGUgQWxpYXNlcyA9IHN0cnVjdFxuICB0eXBlIG5vZGVfY3JlYXRvciA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyOkF0dHIudCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIG5vZGVfY3JlYXRvcl9jaGlsZGxlc3MgPSA/a2V5OnN0cmluZyAtPiA/YXR0cjpBdHRyLnQgLT4gdW5pdCAtPiB0XG5lbmRcblxubW9kdWxlIEVsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZWxlbWVudFxuXG4gIGxldCB0YWcgdCA9IHQudGFnXG4gIGxldCBhdHRycyB0ID0gdC5hdHRyc1xuICBsZXQga2V5IHQgPSB0LmtleVxuICBsZXQgd2l0aF9rZXkgdCBrZXkgPSB7IHQgd2l0aCBrZXkgPSBTb21lIGtleSB9XG5cbiAgbGV0IG1hcF9hdHRycyB0IH5mID1cbiAgICBsZXQgYXR0cnMgPSBmIHQuYXR0cnMgaW5cbiAgICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gICAgeyB0IHdpdGggYXR0cnM7IHJhd19hdHRycyB9XG4gIDs7XG5cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzXyBjKSlcbiAgbGV0IGFkZF9jbGFzc2VzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NlcyBjKSlcbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIHN0eWxlIHMpKVxuZW5kXG5cbmxldCB0X3RvX2pzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgKCogV2Ugbm9ybWFsbHkgZmlsdGVyIHRoZXNlIG91dCwgYnV0IGlmIFt0b19qc10gaXMgY2FsbGVkIGRpcmVjdGx5IG9uIGEgW05vbmVdIG5vZGUsXG4gICAgICAgd2UgdXNlIHRoaXMgaGFjay4gQXNpZGUgZnJvbSBoYXZpbmcgYSBbVGV4dF0gbm9kZSB3aXRob3V0IGFueSB0ZXh0IHByZXNlbnQgaW4gdGhlXG4gICAgICAgRG9tLCB0aGVyZSBzaG91bGQgYmUgbm8gdW53YW50ZWQgc2lkZS1lZmZlY3RzLiAgSW4gYW4gSW5jcl9kb20gYXBwbGljYXRpb24sIHRoaXNcbiAgICAgICBjYW4gb25seSBoYXBwZW4gd2hlbiB0aGUgcm9vdCB2aWV3IEluY3JlbWVudGFsIGlzIGluaGFiaXRlZCBieSBhIFtOb25lXS4gKilcbiAgICBSYXcuTm9kZS50ZXh0IFwiXCJcbiAgfCBUZXh0IHMgLT4gUmF3Lk5vZGUudGV4dCBzXG4gIHwgRWxlbWVudCB7IHRhZzsga2V5OyBhdHRycyA9IF87IHJhd19hdHRycyA9IChsYXp5IHJhd19hdHRycyk7IGNoaWxkcmVuOyBraW5kID0gYFZub2RlIH1cbiAgICAtPiBSYXcuTm9kZS5ub2RlIHRhZyByYXdfYXR0cnMgY2hpbGRyZW4ga2V5XG4gIHwgRWxlbWVudCB7IHRhZzsga2V5OyBhdHRycyA9IF87IHJhd19hdHRycyA9IChsYXp5IHJhd19hdHRycyk7IGNoaWxkcmVuOyBraW5kID0gYFN2ZyB9XG4gICAgLT4gUmF3Lk5vZGUuc3ZnIHRhZyByYXdfYXR0cnMgY2hpbGRyZW4ga2V5XG4gIHwgV2lkZ2V0IHcgLT4gd1xuOztcblxubGV0IGVsZW1lbnQga2luZCB+dGFnIH5rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgY2hpbGRyZW5fcmF3ID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gIExpc3QuaXRlciBjaGlsZHJlbiB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IChUZXh0IF8gfCBFbGVtZW50IF8gfCBXaWRnZXQgXykgYXMgb3RoZXIgLT5cbiAgICAgIGxldCAoXyA6IGludCkgPSBjaGlsZHJlbl9yYXcjI3B1c2ggKHRfdG9fanMgb3RoZXIpIGluXG4gICAgICAoKSk7XG4gIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgeyBraW5kOyB0YWc7IGtleTsgYXR0cnM7IHJhd19hdHRyczsgY2hpbGRyZW4gPSBjaGlsZHJlbl9yYXcgfVxuOztcblxubGV0IGVsZW1lbnRfZXhwZXJ0IGtpbmQgfnRhZyA/a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiB9XG47O1xuXG5sZXQgdGV4dCBzID0gVGV4dCBzXG5cbmxldCB3aWRnZXQgP2luZm8gP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkgPVxuICBXaWRnZXQgKFdpZGdldC5jcmVhdGUgP2luZm8gP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkpXG47O1xuXG5sZXQgY3JlYXRlIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgVm5vZGUgfnRhZyB+a2V5IGF0dHIgY2hpbGRyZW4pXG47O1xuXG5sZXQgY3JlYXRlX2NoaWxkbGVzcyB0YWcgP2tleSA/YXR0ciAoKSA9IGNyZWF0ZSB0YWcgP2tleSA/YXR0ciBbXVxuXG5sZXQgY3JlYXRlX3N2ZyB0YWcgP2tleSA/KGF0dHIgPSBBdHRyLmVtcHR5KSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFN2ZyB+dGFnIH5rZXkgYXR0ciBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleSA/KGF0dHIgPSBBdHRyLmVtcHR5KSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFN2ZyB+dGFnIH5rZXkgYXR0ciBjaGlsZHJlbilcbjs7XG5cbmxldCBub25lID0gTm9uZVxubGV0IHRleHRmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiB0ZXh0IGZvcm1hdFxuXG5sZXQgd2lkZ2V0X29mX21vZHVsZSBtID1cbiAgbGV0IGYgPSBCYXNlLlN0YWdlZC51bnN0YWdlIChXaWRnZXQub2ZfbW9kdWxlIG0pIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaSAtPiBXaWRnZXQgKGYgaSkpXG47O1xuXG5sZXQgdG9fcmF3ID0gdF90b19qc1xubGV0IHRvX2RvbSB0ID0gUmF3Lk5vZGUudG9fZG9tICh0b19yYXcgdClcblxubGV0IGlubmVyX2h0bWxcbiAgICAgIGNyZWF0ZVxuICAgICAgfnRhZ1xuICAgICAgfmF0dHJcbiAgICAgIH50aGlzX2h0bWxfaXNfc2FuaXRpemVkX2FuZF9pc190b3RhbGx5X3NhZmVfdHJ1c3RfbWU6Y29udGVudFxuICA9XG4gIGxldCBlbGVtZW50ID0gY3JlYXRlIHRhZyB+YXR0ciBbXSBpblxuICBsZXQgYnVpbGRfc2V4cCB+ZXh0cmEgfmNvbnRlbnQgPVxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcImlubmVyLWh0bWxcIjsgZXh0cmE7IFNleHAuQXRvbSBjb250ZW50IF1cbiAgaW5cbiAgbGV0IGlkID1cbiAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcImlubmVyLWh0bWwtbm9kZVwiIChmdW4gKChlbGVtZW50LCBjb250ZW50KSwgXykgLT5cbiAgICAgIGJ1aWxkX3NleHAgfmV4dHJhOmVsZW1lbnQgfmNvbnRlbnQpXG4gIGluXG4gIGxldCBkZWJ1ZyA9XG4gICAgbWF0Y2ggZWxlbWVudCB3aXRoXG4gICAgfCBFbGVtZW50IGVsZW1lbnQgLT4gU2V4cC5BdG9tIChFbGVtZW50LnRhZyBlbGVtZW50KVxuICAgIHwgV2lkZ2V0IF8gLT4gZmFpbHdpdGggXCJWZG9tLk5vZGUuaW5uZXJfaHRtbCB3YXMgZ2l2ZW4gYSAnd2lkZ2V0J1wiXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiVmRvbS5Ob2RlLmlubmVyX2h0bWwgd2FzIGdpdmVuIGEgJ25vbmUnXCJcbiAgICB8IFRleHQgXyAtPiBmYWlsd2l0aCBcIlZkb20uTm9kZS5pbm5lcl9odG1sIHdhcyBnaXZlbiBhICd0ZXh0J1wiXG4gIGluXG4gIHdpZGdldFxuICAgIH5pZFxuICAgIH5pbmZvOihsYXp5IChidWlsZF9zZXhwIH5leHRyYTpkZWJ1ZyB+Y29udGVudCkpXG4gICAgfmluaXQ6KGZ1biAoKSAtPlxuICAgICAgbGV0IGVsZW1lbnQgPSB0b19kb20gZWxlbWVudCBpblxuICAgICAgZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgIChkZWJ1ZywgY29udGVudCksIGVsZW1lbnQpXG4gICAgKClcbjs7XG5cbmxldCBpbm5lcl9odG1sX3N2ZyA9IGlubmVyX2h0bWwgKGZ1biB0YWcgfmF0dHIgLT4gY3JlYXRlX3N2Z19tb25vaWQgdGFnID9rZXk6Tm9uZSB+YXR0cilcbmxldCBpbm5lcl9odG1sID0gaW5uZXJfaHRtbCAoZnVuIHRhZyB+YXR0ciAtPiBjcmVhdGUgdGFnID9rZXk6Tm9uZSB+YXR0cilcbmxldCBhID0gY3JlYXRlIFwiYVwiXG5sZXQgYm9keSA9IGNyZWF0ZSBcImJvZHlcIlxubGV0IGJ1dHRvbiA9IGNyZWF0ZSBcImJ1dHRvblwiXG5sZXQgY29kZSA9IGNyZWF0ZSBcImNvZGVcIlxubGV0IGRpdiA9IGNyZWF0ZSBcImRpdlwiXG5sZXQgbWFpbiA9IGNyZWF0ZSBcIm1haW5cIlxubGV0IGZpZWxkc2V0ID0gY3JlYXRlIFwiZmllbGRzZXRcIlxubGV0IGZvb3RlciA9IGNyZWF0ZSBcImZvb3RlclwiXG5sZXQgaDEgPSBjcmVhdGUgXCJoMVwiXG5sZXQgaDIgPSBjcmVhdGUgXCJoMlwiXG5sZXQgaDMgPSBjcmVhdGUgXCJoM1wiXG5sZXQgaDQgPSBjcmVhdGUgXCJoNFwiXG5sZXQgaDUgPSBjcmVhdGUgXCJoNVwiXG5sZXQgaDYgPSBjcmVhdGUgXCJoNlwiXG5sZXQgaGVhZGVyID0gY3JlYXRlIFwiaGVhZGVyXCJcbmxldCBodG1sID0gY3JlYXRlIFwiaHRtbFwiXG5sZXQgaW5wdXQgPSBjcmVhdGUgXCJpbnB1dFwiXG5sZXQgdGV4dGFyZWEgPSBjcmVhdGUgXCJ0ZXh0YXJlYVwiXG5sZXQgc2VsZWN0ID0gY3JlYXRlIFwic2VsZWN0XCJcbmxldCBvcHRpb24gPSBjcmVhdGUgXCJvcHRpb25cIlxubGV0IGxhYmVsID0gY3JlYXRlIFwibGFiZWxcIlxubGV0IGxpID0gY3JlYXRlIFwibGlcIlxubGV0IHAgPSBjcmVhdGUgXCJwXCJcbmxldCBwcmUgPSBjcmVhdGUgXCJwcmVcIlxubGV0IHNlY3Rpb24gPSBjcmVhdGUgXCJzZWN0aW9uXCJcbmxldCBzcGFuID0gY3JlYXRlIFwic3BhblwiXG5sZXQgc3Ryb25nID0gY3JlYXRlIFwic3Ryb25nXCJcbmxldCB0YWJsZSA9IGNyZWF0ZSBcInRhYmxlXCJcbmxldCB0Ym9keSA9IGNyZWF0ZSBcInRib2R5XCJcbmxldCB0ZCA9IGNyZWF0ZSBcInRkXCJcbmxldCB0aCA9IGNyZWF0ZSBcInRoXCJcbmxldCB0aGVhZCA9IGNyZWF0ZSBcInRoZWFkXCJcbmxldCB0ciA9IGNyZWF0ZSBcInRyXCJcbmxldCB1bCA9IGNyZWF0ZSBcInVsXCJcbmxldCBvbCA9IGNyZWF0ZSBcIm9sXCJcbmxldCBiciA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJiclwiXG5sZXQgaHIgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaHJcIlxuXG5sZXQgc2V4cF9mb3JfZGVidWdnaW5nID9pbmRlbnQgc2V4cCA9XG4gIHNleHAgfD4gU2V4cC50b19zdHJpbmdfaHVtID9pbmRlbnQgfD4gdGV4dCB8PiBMaXN0LnJldHVybiB8PiBwcmUgfmF0dHI6QXR0ci5lbXB0eVxuOztcblxubW9kdWxlIFBhdGNoID0gc3RydWN0XG4gIHR5cGUgdCA9IFJhdy5QYXRjaC50XG5cbiAgbGV0IGNyZWF0ZSB+cHJldmlvdXMgfmN1cnJlbnQgPVxuICAgIFJhdy5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOih0X3RvX2pzIHByZXZpb3VzKSB+Y3VycmVudDoodF90b19qcyBjdXJyZW50KVxuICA7O1xuXG4gIGxldCBhcHBseSB0IGVsdCA9IFJhdy5QYXRjaC5hcHBseSBlbHQgdFxuICBsZXQgaXNfZW1wdHkgdCA9IFJhdy5QYXRjaC5pc19lbXB0eSB0XG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9rZXkgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBFbGVtZW50IChlbGVtZW50X2V4cGVydCBgVm5vZGUgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuXG4gIGxldCBjcmVhdGVfc3ZnID9rZXkgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBFbGVtZW50IChlbGVtZW50X2V4cGVydCBgU3ZnID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcbmVuZFxuIiwibW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBdHRyXG4gIG1vZHVsZSBIb29rcyA9IEhvb2tzXG4gIG1vZHVsZSBHbG9iYWxfbGlzdGVuZXJzID0gR2xvYmFsX2xpc3RlbmVyc1xuZW5kXG5cbm1vZHVsZSBBdHRycyA9IEF0dHIuTXVsdGlcbm1vZHVsZSBFZmZlY3QgPSBFZmZlY3Rcbm1vZHVsZSBOb2RlID0gTm9kZVxuIiwibW9kdWxlIFZkb20gPSBWZG9tXG5tb2R1bGUgRG9tX2Zsb2F0ID0gRG9tX2Zsb2F0XG5cbm1vZHVsZSBUb3BfbGV2ZWxfZWZmZWN0cyA9IHN0cnVjdFxuICBsZXQgKCkgPVxuICAgICgqIHVzZSB0aGUgbmF0aXZlLWphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgZmxvYXQgLT4gc3RyaW5nIHdpdGggYSBmaXhlZCBudW1iZXIgb2ZcbiAgICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICAgIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ3B1c2V0ID0gc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50LlNldC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuXG4gICAgICBsZXQgdmFsaWRhdGUgdCA9XG4gICAgICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmVcbiAgICAgICAgICAoSW50LnZhbGlkYXRlX2xib3VuZCB+bWluOihJbmNsIDEpIChJbnQuU2V0Lmxlbmd0aCB0KSlcbiAgICAgICAgICAoSW50LlNldC50b19saXN0IHRcbiAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6SW50LnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICAgICAgICAgICB8PiBWYWxpZGF0ZS5uYW1lX2xpc3QgXCJUaHJlYWRfcG9vbF9jcHVzZXRcIilcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IEludC5TZXQuZXF1YWwgKHQxIHw+IHJhdykgKHQyIHw+IHJhdylcbmVuZFxuXG50eXBlIHQgPVxuICB8IEluaGVyaXRcbiAgfCBDcHVzZXQgb2YgQ3B1c2V0LnRcbltAQGRlcml2aW5nIHNleHBdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHVwbGVfdHlwZV9pbnRmXG5cbm1vZHVsZSBTbG90cyA9IHN0cnVjdFxuICB0eXBlIHVfID0geyBzbG90c19wZXJfdHVwbGUgOiBpbnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB1ID0gdV8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0XyA9IFsgYFNsb3RzIG9mIHVfIF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ3R1cGxlLCAndmFyaWFudCkgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNsb3RzX3Blcl90dXBsZSAoYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gbiB9KSA9IG5cblxuICB0eXBlICdhMCB0MSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExKSB0MiA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIpIHQzID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzKSB0NCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0KSB0NSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUpIHQ2ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2KSB0NyA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3KSB0OCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgpIHQ5ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5KSB0MTAgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCkgdDExID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEpIHQxMiA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyKSB0MTMgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSwgJ2ExMiwgJ2ExMykgdDE0ID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdDEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxIH1cbiAgbGV0IHQyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMiB9XG4gIGxldCB0MyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDMgfVxuICBsZXQgdDQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA0IH1cbiAgbGV0IHQ1ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNSB9XG4gIGxldCB0NiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDYgfVxuICBsZXQgdDcgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA3IH1cbiAgbGV0IHQ4ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOCB9XG4gIGxldCB0OSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDkgfVxuICBsZXQgdDEwID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTAgfVxuICBsZXQgdDExID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTEgfVxuICBsZXQgdDEyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTIgfVxuICBsZXQgdDEzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTMgfVxuICBsZXQgdDE0ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTQgfVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHVwbGVfcG9vbF9pbnRmXG5tb2R1bGUgVHVwbGVfdHlwZSA9IFR1cGxlX3R5cGVcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IHBoeXNfZXF1YWwgPSBDYW1sLiggPT0gKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZV9pbl9iaXRzID0gNjRcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgbnVtX2JpdHMgPSBJbnQubnVtX2JpdHNcbiAgbGV0IG1heF92YWx1ZSA9IENhbWwubWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBjb25jYXQgbCA9IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgbFxuXG5tb2R1bGUgdHlwZSBTID0gU1xuXG5tb2R1bGUgUG9vbCA9IHN0cnVjdFxuICBsZXQgZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiBpZiBvbGRfY2FwYWNpdHkgPSAwIHRoZW4gMSBlbHNlIG9sZF9jYXBhY2l0eSAqIDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDw9IG9sZF9jYXBhY2l0eVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb29sLmdyb3cgZ290IHRvbyBzbWFsbCBjYXBhY2l0eVwiXG4gICAgICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSwgYG9sZF9jYXBhY2l0eSBvbGRfY2FwYWNpdHkpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgXSAqIFsgYG9sZF9jYXBhY2l0eSBvZiBpbnQgXV07XG4gICAgICBjYXBhY2l0eVxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFR1cGxlX3R5cGUuU2xvdHNcblxuICBsZXQgbWF4X3Nsb3QgPSAxNFxuXG4gICgqIFRoZSBwb29sIGlzIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIFtVbmlmb3JtX2FycmF5LnRdLCB3aGVyZSBpbmRleCB6ZXJvIGhhcyB0aGVcbiAgICAgbWV0YWRhdGEgYWJvdXQgdGhlIHBvb2wgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBhcmUgdGhlIHR1cGxlcyBsYXllZCBvdXQgb25lIGFmdGVyXG4gICAgIHRoZSBvdGhlci4gIEVhY2ggdHVwbGUgdGFrZXMgWzEgKyBzbG90c19wZXJfdHVwbGVdIGluZGljZXMgaW4gdGhlIHBvb2wsIHdoZXJlIHRoZVxuICAgICBmaXJzdCBpbmRleCBob2xkcyBhIGhlYWRlciBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGhvbGQgdGhlIHR1cGxlJ3Mgc2xvdHM6XG5cbiAgICAge3ZcbiAgICAgfCBoZWFkZXIgfCBzMCB8IHMxIHwgLi4uIHwgczxOLTE+IHxcbiAgICAgdn1cblxuICAgICBBIFtQb2ludGVyLnRdIHRvIGEgdHVwbGUgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXggd2hlcmUgaXRzIGhlYWRlciBpcywgYXMgd2VsbCBhc1xuICAgICAoYSBtYXNrIG9mKSB0aGUgdHVwbGUncyB1bmlxdWUgaWQuXG5cbiAgICAgVGhlIGZyZWUgdHVwbGVzIGFyZSBzaW5nbHkgbGlua2VkIHZpYSB0aGUgaGVhZGVycy5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIG1hcmtlZCB0byBpbmRpY2F0ZSBzbywgYW5kIGFsc28gdG8gaW5jbHVkZSB0aGVcbiAgICAgdHVwbGUncyB1bmlxdWUgaWQuICBUaGlzIGFsbG93cyB1cyB0byBjaGVjayBpbiBjb25zdGFudCB0aW1lIHdoZXRoZXIgYSBwb2ludGVyIGlzXG4gICAgIHZhbGlkLCBieSBjb21wYXJpbmcgdGhlIGlkIGluIHRoZSBwb2ludGVyIHdpdGggdGhlIGlkIGluIHRoZSBoZWFkZXIuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIG5vdCBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgcGFydCBvZiB0aGUgZnJlZSBsaXN0LCBhbmQgaXRzIHR1cGxlIHNsb3RzXG4gICAgIGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlcywgZnJvbSB0aGUgW2R1bW15XSB0dXBsZSBzdXBwbGllZCB0b1xuICAgICBbY3JlYXRlXS4gIFdlIG11c3QgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGNvcnJlY3QgdHlwZSB0byBwcmV2ZW50IGEgc2VnZmF1bHQgaW5cbiAgICAgY29kZSB0aGF0IChtaXN0YWtlbmx5KSB1c2VzIGEgcG9pbnRlciB0byBhIGZyZWUgdHVwbGUuXG5cbiAgICAgRm9yIFtQb29sLlVuc2FmZV0sIGEgc2xvdCBpbiBhIGZyZWUgb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgYW4gaW50OyBpdCBtdXN0IG5vdCBiZVxuICAgICBwb2ludGVyIHRvIHByZXZlbnQgYSBzcGFjZSBsZWFrLiAgSG93ZXZlciwgdGhlIGludCBpbiB0aGUgc2xvdCBtYXkgbm90IHJlcHJlc2VudCBhXG4gICAgIHZhbGlkIHZhbHVlIG9mIHRoZSB0eXBlLlxuICAqKVxuXG4gIG1vZHVsZSBTbG90ID0gc3RydWN0XG4gICAgdHlwZSAoJ3Nsb3RzLCAnYSkgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgdDAgPSAxXG4gICAgbGV0IHQxID0gMlxuICAgIGxldCB0MiA9IDNcbiAgICBsZXQgdDMgPSA0XG4gICAgbGV0IHQ0ID0gNVxuICAgIGxldCB0NSA9IDZcbiAgICBsZXQgdDYgPSA3XG4gICAgbGV0IHQ3ID0gOFxuICAgIGxldCB0OCA9IDlcbiAgICBsZXQgdDkgPSAxMFxuICAgIGxldCB0MTAgPSAxMVxuICAgIGxldCB0MTEgPSAxMlxuICAgIGxldCB0MTIgPSAxM1xuICAgIGxldCB0MTMgPSAxNFxuXG4gICAgbGV0JXRlc3QgXyA9IHQxMyA9IG1heF9zbG90XG4gIGVuZFxuXG4gICgqIFdlIG9ubHkgaGF2ZSBbSW50Lm51bV9iaXRzXSBiaXRzIGF2YWlsYWJsZSBmb3IgcG9vbCBwb2ludGVycy4gIFRoZSBiaXRzIG9mIGEgcG9vbFxuICAgICBwb2ludGVyIGVuY29kZSB0d28gdGhpbmdzOlxuXG4gICAgIC0gdGhlIHR1cGxlJ3MgYXJyYXkgaW5kZXggaW4gdGhlIHBvb2xcbiAgICAgLSB0aGUgdHVwbGUncyBpZGVudGlmaWVyIChub3QgbmVjZXNzYXJpbHkgdW5pcXVlKVxuXG4gICAgIFdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGFzIGxhcmdlIGFzIG5lZWRlZCBmb3IgdGhlIG1heGltdW0gcG9vbCBjYXBhY2l0eVxuICAgICB0aGF0IHdlIHdhbnQgdG8gc3VwcG9ydCwgYW5kIHVzZSB0aGUgcmVtYWluaW5nIFttYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHNdIGJpdHMgZm9yXG4gICAgIHRoZSBpZGVudGlmaWVyLiAgNjQtYml0IGFuZCAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0eXBpY2FsbHkgaGF2ZSB2ZXJ5IGRpZmZlcmVudFxuICAgICBhZGRyZXNzLXNwYWNlIHNpemVzLCBzbyB3ZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBkaWZmZXJlbnRseS4gKilcblxuICBsZXQgYXJyYXlfaW5kZXhfbnVtX2JpdHMgPVxuICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDYzKTtcbiAgICAgIDMwKVxuICAgIGVsc2UgKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSAzMSB8fCBJbnQubnVtX2JpdHMgPSAzMik7XG4gICAgICAyMilcbiAgOztcblxuICBsZXQgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzID0gSW50Lm51bV9iaXRzIC0gYXJyYXlfaW5kZXhfbnVtX2JpdHNcblxuICBsZXQldGVzdCBfID0gYXJyYXlfaW5kZXhfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyArIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA8PSBJbnQubnVtX2JpdHNcblxuICBsZXQgbWF4X2FycmF5X2xlbmd0aCA9IDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzXG5cbiAgbW9kdWxlIFR1cGxlX2lkIDogc2lnXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaW5pdCA6IHRcbiAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBleGFtcGxlcyA6IHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIFdlIGd1YXJhbnRlZSB0aGF0IHR1cGxlIGlkcyBhcmUgbm9ubmVnYXRpdmUgc28gdGhhdCB0aGV5IGNhbiBiZSBlbmNvZGVkIGluXG4gICAgICAgaGVhZGVycy4gKilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMClcbiAgICBsZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xuICAgIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgaW5pdCA9IDBcbiAgICBsZXQgbmV4dCB0ID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiB0ICsgMSBlbHNlIGlmIHQgPSBJbnQubWF4X3ZhbHVlIHRoZW4gMCBlbHNlIHQgKyAxXG4gICAgbGV0IHRvX2ludCB0ID0gdFxuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIGlmIGkgPCAwXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVHVwbGVfaWQub2ZfaW50IGdvdCBuZWdhdGl2ZSBpbnRcIiBpIFslc2V4cF9vZjogaW50XTtcbiAgICAgIGlcbiAgICA7O1xuXG4gICAgbGV0IGV4YW1wbGVzID0gWyAwOyAxOyAweDFGRkZfRkZGRjsgSW50Lm1heF92YWx1ZSBdXG4gIGVuZFxuXG4gIGxldCB0dXBsZV9pZF9tYXNrID0gKDEgbHNsIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cykgLSAxXG5cbiAgbW9kdWxlIFBvaW50ZXIgOiBzaWdcbiAgICAoKiBbUG9pbnRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHN1bSB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBOb3JtYWwgb2YgeyBoZWFkZXJfaW5kZXggOiBpbnQ7IG1hc2tlZF90dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIFRoZSBlbmNvZGluZyBpcyBjaG9zZW4gdG8gb3B0aW1pemUgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbiwgbmFtZWx5IHR1cGxlLXNsb3RcbiAgICAgICBhY2Nlc3MsIHRoZSBbc2xvdF9pbmRleF0gZnVuY3Rpb24uICBUaGUgZW5jb2RpbmcgaXMgZGVzaWduZWQgc28gdGhhdCBbc2xvdF9pbmRleF1cbiAgICAgICBwcm9kdWNlcyBhIG5lZ2F0aXZlIG51bWJlciBmb3IgW051bGxdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdWJzZXF1ZW50IGFycmF5IGJvdW5kc1xuICAgICAgIGNoZWNrIHRvIGZhaWwuICopXG5cbiAgICB0eXBlICdzbG90cyB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBwaHlzX2NvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHBoeXNfZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCogVGhlIG51bGwgcG9pbnRlci4gIFtudWxsXSBpcyBhIGZ1bmN0aW9uIGR1ZSB0byBpc3N1ZXMgd2l0aCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24uICopXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCogTm9ybWFsIHBvaW50ZXJzLiAqKVxuXG4gICAgdmFsIGNyZWF0ZSA6IGhlYWRlcl9pbmRleDppbnQgLT4gVHVwbGVfaWQudCAtPiBfIHRcbiAgICB2YWwgaGVhZGVyX2luZGV4IDogXyB0IC0+IGludFxuICAgIHZhbCBtYXNrZWRfdHVwbGVfaWQgOiBfIHQgLT4gaW50XG4gICAgdmFsIHNsb3RfaW5kZXggOiBfIHQgLT4gKF8sIF8pIFNsb3QudCAtPiBpbnRcbiAgICB2YWwgZmlyc3Rfc2xvdF9pbmRleCA6IF8gdCAtPiBpbnRcblxuICAgIG1vZHVsZSBJZCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgICB2YWwgb2ZfaW50NjMgOiBJbnQ2My50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCB0b19pZCA6IF8gdCAtPiBJZC50XG4gICAgdmFsIG9mX2lkX2V4biA6IElkLnQgLT4gXyB0XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIEEgcG9pbnRlciBpcyBlaXRoZXIgW251bGxdIG9yIHRoZSAocG9zaXRpdmUpIGluZGV4IGluIHRoZSBwb29sIG9mIHRoZSBuZXh0LWZyZWVcbiAgICAgICBmaWVsZCBwcmVjZWVkaW5nIHRoZSB0dXBsZSdzIHNsb3RzLiAqKVxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGxldCBzZXhwX29mX3QgXyB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPFBvb2wuUG9pbnRlci50OiAweCUwOHg+XCIgdClcbiAgICBsZXQgcGh5c19lcXVhbCAodDEgOiBfIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxuICAgIGxldCBwaHlzX2NvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IG51bGwgKCkgPSAtbWF4X3Nsb3QgLSAxXG4gICAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcblxuICAgICgqIFtudWxsXSBtdXN0IGJlIHN1Y2ggdGhhdCBbbnVsbCArIHNsb3RdIGlzIGFuIGludmFsaWQgYXJyYXkgaW5kZXggZm9yIGFsbCBzbG90cy5cbiAgICAgICBPdGhlcndpc2UgZ2V0L3NldCBvbiB0aGUgbnVsbCBwb2ludGVyIG1heSBsZWFkIHRvIGEgc2VnZmF1bHQuICopXG4gICAgbGV0JXRlc3QgXyA9IG51bGwgKCkgKyBtYXhfc2xvdCA8IDBcblxuICAgIGxldCBjcmVhdGUgfmhlYWRlcl9pbmRleCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9XG4gICAgICBoZWFkZXJfaW5kZXhcbiAgICAgIGxvciAoKFR1cGxlX2lkLnRvX2ludCB0dXBsZV9pZCBsYW5kIHR1cGxlX2lkX21hc2spIGxzbCBhcnJheV9pbmRleF9udW1fYml0cylcbiAgICA7O1xuXG4gICAgbGV0IGhlYWRlcl9pbmRleF9tYXNrID0gKDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKSAtIDFcbiAgICBsZXQgbWFza2VkX3R1cGxlX2lkIHQgPSB0IGxzciBhcnJheV9pbmRleF9udW1fYml0c1xuICAgIGxldCBoZWFkZXJfaW5kZXggdCA9IHQgbGFuZCBoZWFkZXJfaW5kZXhfbWFza1xuICAgIGxldCBpbnZhcmlhbnQgXyB0ID0gaWYgbm90IChpc19udWxsIHQpIHRoZW4gYXNzZXJ0IChoZWFkZXJfaW5kZXggdCA+IDApXG5cbiAgICBsZXQldGVzdF91bml0IF8gPSBpbnZhcmlhbnQgaWdub3JlIChudWxsICgpKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIExpc3QuaXRlciBUdXBsZV9pZC5leGFtcGxlcyB+ZjooZnVuIHR1cGxlX2lkIC0+XG4gICAgICAgIGludmFyaWFudCBpZ25vcmUgKGNyZWF0ZSB+aGVhZGVyX2luZGV4OjEgdHVwbGVfaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2xvdF9pbmRleCB0IHNsb3QgPSBoZWFkZXJfaW5kZXggdCArIHNsb3RcbiAgICBsZXQgZmlyc3Rfc2xvdF9pbmRleCB0ID0gc2xvdF9pbmRleCB0IFNsb3QudDBcblxuICAgIG1vZHVsZSBJZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGVuZFxuXG4gICAgbGV0IHRvX2lkIHQgPSBJZC5vZl9pbnQgdFxuXG4gICAgbGV0IG9mX2lkX2V4biBpZCA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHQgPSBJZC50b19pbnRfZXhuIGlkIGluXG4gICAgICAgIGlmIGlzX251bGwgdFxuICAgICAgICB0aGVuIHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNob3VsZF9lcXVhbCA9XG4gICAgICAgICAgICBjcmVhdGUgfmhlYWRlcl9pbmRleDooaGVhZGVyX2luZGV4IHQpIChUdXBsZV9pZC5vZl9pbnQgKG1hc2tlZF90dXBsZV9pZCB0KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdCBzaG91bGRfZXF1YWxcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwic2hvdWxkIGVxdWFsXCIgc2hvdWxkX2VxdWFsIFslc2V4cF9vZjogXyB0XSlcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcIlBvaW50ZXIub2ZfaWRfZXhuIGdvdCBzdHJhbmdlIGlkXCJcbiAgICAgICAgICAoaWQsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IElkLnQgKiBleG5dXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhlYWRlciA6IHNpZ1xuICAgICgqIEEgW0hlYWRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHR5cGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgfCBOdWxsXG4gICAgICAgICB8IEZyZWUgb2YgeyBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogaW50IH1cbiAgICAgICAgIHwgVXNlZCBvZiB7IHR1cGxlX2lkIDogaW50IH1cbiAgICAgICBdfVxuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBmcmVlLCBpdHMgaGVhZGVyIGlzIHNldCB0byBlaXRoZXIgW051bGxdIG9yIFtGcmVlXSB3aXRoXG4gICAgICAgW25leHRfZnJlZV9oZWFkZXJfaW5kZXhdIGluZGljYXRpbmcgdGhlIGhlYWRlciBvZiB0aGUgbmV4dCB0dXBsZSBvbiB0aGUgZnJlZSBsaXN0LlxuICAgICAgIElmIGEgdHVwbGUgaXMgaW4gdXNlLCBpdCBoZWFkZXIgaXMgc2V0IHRvIFtVc2VkXS4gKilcblxuICAgIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgbnVsbCA6IHRcbiAgICB2YWwgaXNfbnVsbCA6IHQgLT4gYm9vbFxuICAgIHZhbCBmcmVlIDogbmV4dF9mcmVlX2hlYWRlcl9pbmRleDppbnQgLT4gdFxuICAgIHZhbCBpc19mcmVlIDogdCAtPiBib29sXG4gICAgdmFsIG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiB0IC0+IGludFxuXG4gICAgKCogb25seSB2YWxpZCBpZiBbaXNfZnJlZSB0XSAqKVxuXG4gICAgdmFsIHVzZWQgOiBUdXBsZV9pZC50IC0+IHRcbiAgICB2YWwgaXNfdXNlZCA6IHQgLT4gYm9vbFxuICAgIHZhbCB0dXBsZV9pZCA6IHQgLT4gVHVwbGVfaWQudFxuXG4gICAgKCogb25seSB2YWxpZCBpZiBbaXNfdXNlZCB0XSAqKVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnRcblxuICAgIGxldCBudWxsID0gMFxuICAgIGxldCBpc19udWxsIHQgPSB0ID0gMFxuXG4gICAgKCogV2Uga25vdyB0aGF0IGhlYWRlciBpbmRpY2VzIGFyZSBbPiAwXSwgYmVjYXVzZSBpbmRleCBbMF0gaG9sZHMgdGhlIG1ldGFkYXRhLiAqKVxuICAgIGxldCBmcmVlIH5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4ID0gbmV4dF9mcmVlX2hlYWRlcl9pbmRleFxuICAgIGxldCBpc19mcmVlIHQgPSB0ID4gMFxuICAgIGxldCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IHQgPSB0XG4gICAgbGV0IHVzZWQgKHR1cGxlX2lkIDogVHVwbGVfaWQudCkgPSAtMSAtICh0dXBsZV9pZCA6PiBpbnQpXG4gICAgbGV0IGlzX3VzZWQgdCA9IHQgPCAwXG4gICAgbGV0IHR1cGxlX2lkIHQgPSBUdXBsZV9pZC5vZl9pbnQgKC0odCArIDEpKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIExpc3QuaXRlciBUdXBsZV9pZC5leGFtcGxlcyB+ZjooZnVuIGlkIC0+XG4gICAgICAgIGxldCB0ID0gdXNlZCBpZCBpblxuICAgICAgICBhc3NlcnQgKGlzX3VzZWQgdCk7XG4gICAgICAgIGFzc2VydCAoVHVwbGVfaWQuZXF1YWwgKHR1cGxlX2lkIHQpIGlkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIGlmIGlzX251bGwgdFxuICAgICAgdGhlbiBTZXhwLkF0b20gXCJudWxsXCJcbiAgICAgIGVsc2UgaWYgaXNfZnJlZSB0XG4gICAgICB0aGVuIFNleHAuKExpc3QgWyBBdG9tIFwiRnJlZVwiOyBBdG9tIChJbnQudG9fc3RyaW5nIChuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IHQpKSBdKVxuICAgICAgZWxzZSBTZXhwLihMaXN0IFsgQXRvbSBcIlVzZWRcIjsgQXRvbSAoVHVwbGVfaWQudG9fc3RyaW5nICh0dXBsZV9pZCB0KSkgXSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWV0YWRhdGFfaW5kZXggPSAwXG4gIGxldCBzdGFydF9vZl90dXBsZXNfaW5kZXggPSAxXG5cbiAgbGV0IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlID1cbiAgICAobWF4X2FycmF5X2xlbmd0aCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleCkgLyAoMSArIHNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGZvciBzbG90c19wZXJfdHVwbGUgPSAxIHRvIG1heF9zbG90IGRvXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAoKDEgKyBzbG90c19wZXJfdHVwbGUpICogbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpXG4gICAgICAgIDw9IG1heF9hcnJheV9sZW5ndGgpXG4gICAgZG9uZVxuICA7O1xuXG4gIG1vZHVsZSBNZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgJ3Nsb3RzIHQgPVxuICAgICAgeyAoKiBbc2xvdHNfcGVyX3R1cGxlXSBpcyBudW1iZXIgb2Ygc2xvdHMgaW4gYSB0dXBsZSBhcyBzZWVuIGJ5IHRoZSB1c2VyOyBpLmUuIG5vdFxuICAgICAgICAgICBjb3VudGluZyB0aGUgbmV4dC1mcmVlIHBvaW50ZXIuICopXG4gICAgICAgIHNsb3RzX3Blcl90dXBsZSA6IGludFxuICAgICAgOyBjYXBhY2l0eSA6IGludFxuICAgICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgICAgOyBtdXRhYmxlIG5leHRfaWQgOiBUdXBsZV9pZC50XG4gICAgICA7IG11dGFibGUgZmlyc3RfZnJlZSA6IEhlYWRlci50XG4gICAgICAoKiBbZHVtbXldIGlzIFtOb25lXSBpbiBhbiB1bnNhZmUgcG9vbC4gIEluIGEgc2FmZSBwb29sLCBbZHVtbXldIGlzIFtTb21lIGFdLCB3aXRoXG4gICAgICAgICBbVW5pZm9ybV9hcnJheS5sZW5ndGggYSA9IHNsb3RzX3Blcl90dXBsZV0uICBbZHVtbXldIGlzIGFjdHVhbGx5IGEgdHVwbGUgdmFsdWVcbiAgICAgICAgIHdpdGggdGhlIGNvcnJlY3QgdHlwZSAoY29ycmVzcG9uZGluZyB0byBbJ3Nsb3RzXSksIGJ1dCB3ZSBtYWtlIHRoZSB0eXBlIG9mXG4gICAgICAgICBbZHVtbXldIGJlIFtPYmoudCBVbmlmb3JtX2FycmF5LnRdIGJlY2F1c2Ugd2UgY2FuJ3Qgd3JpdGUgdGhhdCB0eXBlIGhlcmUuICBBbHNvLFxuICAgICAgICAgdGhlIHB1cnBvc2Ugb2YgW2R1bW15XSBpcyB0byBpbml0aWFsaXplIGEgcG9vbCBlbGVtZW50LCBtYWtpbmcgW2R1bW15XSBhbiBbT2JqLnRcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkudF0gbGV0cyB1cyBpbml0aWFsaXplIGEgcG9vbCBlbGVtZW50IHVzaW5nIFtVbmlmb3JtX2FycmF5LmJsaXRdXG4gICAgICAgICBmcm9tIFtkdW1teV0gdG8gdGhlIHBvb2wsIHdoaWNoIGlzIGFuIFtPYmoudCBVbmlmb3JtX2FycmF5LnRdLiAqKVxuICAgICAgOyBkdW1teSA6IChPYmoudCBVbmlmb3JtX2FycmF5LnRbQHNleHAub3BhcXVlXSkgb3B0aW9uXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQgPSAxICsgdC5zbG90c19wZXJfdHVwbGVcbiAgICBsZXQgYXJyYXlfbGVuZ3RoIHQgPSBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodC5jYXBhY2l0eSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG5cbiAgICBsZXQgaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSB0IH5oZWFkZXJfaW5kZXggPVxuICAgICAgKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleCkgLyBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0XG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0dXBsZV9udW0gKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSArIDFcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IHQubGVuZ3RoID0gdC5jYXBhY2l0eVxuICBlbmRcblxuICBvcGVuIE1ldGFkYXRhXG5cbiAgKCogV2UgdXNlIHR5cGUgW09iai50XSBiZWNhdXNlIHRoZSBhcnJheSBob2xkcyBhIG1peCBvZiBpbnRlZ2VycyBhcyB3ZWxsIGFzIE9DYW1sIHZhbHVlc1xuICAgICBvZiBhcmJpdHJhcnkgdHlwZS4gKilcbiAgdHlwZSAnc2xvdHMgdCA9IE9iai50IFVuaWZvcm1fYXJyYXkudFxuXG4gIGxldCBtZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgbWV0YWRhdGFfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IHNsb3RzIE1ldGFkYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCB0ID0gKG1ldGFkYXRhIHQpLmxlbmd0aFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdHkgdCA9IE1ldGFkYXRhLnNleHBfb2ZfdCBzZXhwX29mX3R5IChtZXRhZGF0YSB0KVxuXG4gICgqIEJlY2F1c2UgW3Vuc2FmZV9oZWFkZXJdIGFuZCBbdW5zYWZlX3NldF9oZWFkZXJdIGRvIG5vdCBkbyBhIGJvdW5kcyBjaGVjaywgb25lIG11c3QgYmVcbiAgICAgc3VyZSB0aGF0IG9uZSBoYXMgYSB2YWxpZCBbaGVhZGVyX2luZGV4XSBiZWZvcmUgY2FsbGluZyB0aGVtLiAqKVxuICBsZXQgdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGhlYWRlcl9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gSGVhZGVyLnQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoaGVhZGVyIDogSGVhZGVyLnQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBoZWFkZXJfaW5kZXggKGhlYWRlciA6PiBpbnQpXG4gIDs7XG5cbiAgbGV0IGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBoZWFkZXJfaW5kZXggPj0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICYmIGhlYWRlcl9pbmRleCA8IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHRcbiAgOztcblxuICBsZXQgdW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIgPVxuICAgIGxldCBoZWFkZXJfaW5kZXggPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IGluXG4gICAgSGVhZGVyLmlzX3VzZWQgaGVhZGVyXG4gICAgJiYgVHVwbGVfaWQudG9faW50IChIZWFkZXIudHVwbGVfaWQgaGVhZGVyKSBsYW5kIHR1cGxlX2lkX21hc2tcbiAgICAgICA9IFBvaW50ZXIubWFza2VkX3R1cGxlX2lkIHBvaW50ZXJcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4OihQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyKVxuICAgICgqIEF0IHRoaXMgcG9pbnQsIHdlIGtub3cgdGhlIHBvaW50ZXIgaXNuJ3QgW251bGxdIGFuZCBpcyBpbiBib3VuZHMsIHNvIHdlIGtub3cgaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgYSBoZWFkZXIsIHNpbmNlIHdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBhbGwgcG9pbnRlcnMgb3RoZXIgdGhhblxuICAgICAgIFtudWxsXSBhcmUuICopXG4gICAgJiYgdW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgaWRfb2ZfcG9pbnRlciBfdCBwb2ludGVyID0gUG9pbnRlci50b19pZCBwb2ludGVyXG5cbiAgbGV0IGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleFxuICAgICYmIDBcbiAgICAgICA9IChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpXG4gICAgICAgICBtb2QgTWV0YWRhdGEuYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgdHJ5XG4gICAgICBsZXQgcG9pbnRlciA9IFBvaW50ZXIub2ZfaWRfZXhuIGlkIGluXG4gICAgICBpZiBub3QgKFBvaW50ZXIuaXNfbnVsbCBwb2ludGVyKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgICAgIGlmIG5vdCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleClcbiAgICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImludmFsaWQgaGVhZGVyIGluZGV4XCIgaGVhZGVyX2luZGV4IFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgaWYgbm90ICh1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlcikgdGhlbiBmYWlsd2l0aCBcInBvaW50ZXIgbm90IGxpdmVcIik7XG4gICAgICBwb2ludGVyXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wucG9pbnRlcl9vZl9pZF9leG4gZ290IGludmFsaWQgaWRcIlxuICAgICAgICAoaWQsIHQsIGV4bilcbiAgICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnQgKiBfIHQgKiBleG5dXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgbWV0YWRhdGEpIGluXG4gICAgICBNZXRhZGF0YS5GaWVsZHMuaXRlclxuICAgICAgICB+c2xvdHNfcGVyX3R1cGxlOihjaGVjayAoZnVuIHNsb3RzX3Blcl90dXBsZSAtPiBhc3NlcnQgKHNsb3RzX3Blcl90dXBsZSA+IDApKSlcbiAgICAgICAgfmNhcGFjaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIGNhcGFjaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSA+PSAwKTtcbiAgICAgICAgICAgICBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgPSBNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpKSlcbiAgICAgICAgfmxlbmd0aDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA8PSBtZXRhZGF0YS5jYXBhY2l0eSkpKVxuICAgICAgICB+bmV4dF9pZDooY2hlY2sgVHVwbGVfaWQuaW52YXJpYW50KVxuICAgICAgICB+Zmlyc3RfZnJlZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBmaXJzdF9mcmVlIC0+XG4gICAgICAgICAgICAgbGV0IGZyZWUgPSBBcnJheS5jcmVhdGUgfmxlbjptZXRhZGF0YS5jYXBhY2l0eSBmYWxzZSBpblxuICAgICAgICAgICAgIGxldCByID0gcmVmIGZpcnN0X2ZyZWUgaW5cbiAgICAgICAgICAgICB3aGlsZSBub3QgKEhlYWRlci5pc19udWxsICFyKSBkb1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlciA9ICFyIGluXG4gICAgICAgICAgICAgICBhc3NlcnQgKEhlYWRlci5pc19mcmVlIGhlYWRlcik7XG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggaGVhZGVyIGluXG4gICAgICAgICAgICAgICBhc3NlcnQgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpO1xuICAgICAgICAgICAgICAgbGV0IHR1cGxlX251bSA9IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gbWV0YWRhdGEgfmhlYWRlcl9pbmRleCBpblxuICAgICAgICAgICAgICAgaWYgZnJlZS4odHVwbGVfbnVtKVxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImN5Y2xlIGluIGZyZWUgbGlzdFwiIHR1cGxlX251bSBbJXNleHBfb2Y6IGludF07XG4gICAgICAgICAgICAgICBmcmVlLih0dXBsZV9udW0pIDwtIHRydWU7XG4gICAgICAgICAgICAgICByIDo9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4XG4gICAgICAgICAgICAgZG9uZSkpXG4gICAgICAgIH5kdW1teTpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGR1bW15ID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgaWYgSGVhZGVyLmlzX2ZyZWUgaGVhZGVyXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdF9zbG90ID0gdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgICAgZm9yIHNsb3QgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoT2JqLmlzX2ludCAoVW5pZm9ybV9hcnJheS5nZXQgdCAoZmlyc3Rfc2xvdCArIHNsb3QpKSlcbiAgICAgICAgICAgICAgICAgICBkb25lKVxuICAgICAgICAgICAgICAgZG9uZSkpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuaW52YXJpYW50IGZhaWxlZFwiIChleG4sIHQpIFslc2V4cF9vZjogZXhuICogXyB0XVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID0gKG1ldGFkYXRhIHQpLmNhcGFjaXR5XG4gIGxldCBpc19mdWxsIHQgPSBNZXRhZGF0YS5pc19mdWxsIChtZXRhZGF0YSB0KVxuXG4gIGxldCB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggPVxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBtZXRhZGF0YS5maXJzdF9mcmVlO1xuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gSGVhZGVyLmZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aGVhZGVyX2luZGV4XG4gIDs7XG5cbiAgbGV0IHNldF9tZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSBtZXRhZGF0YSA9XG4gICAgVW5pZm9ybV9hcnJheS5zZXQgdCBtZXRhZGF0YV9pbmRleCAoT2JqLnJlcHIgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hcnJheSAodHlwZSBzbG90cykgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkgOiBzbG90cyB0ID1cbiAgICBsZXQgdCA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlX29ial9hcnJheSB+bGVuOihNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGE7XG4gICAgdFxuICA7O1xuXG4gICgqIEluaXRpYWxpemUgdHVwbGVzIG51bWJlcmVkIGZyb20gW2xvXSAoaW5jbHVzaXZlKSB1cCB0byBbaGldIChleGNsdXNpdmUpLiAgRm9yIGVhY2hcbiAgICAgdHVwbGUsIHRoaXMgcHV0cyBkdW1teSB2YWx1ZXMgaW4gdGhlIHR1cGxlJ3Mgc2xvdHMgYW5kIGFkZHMgdGhlIHR1cGxlIHRvIHRoZSBmcmVlXG4gICAgIGxpc3QuICopXG4gIGxldCB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbyB+aGkgPVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gbG8gdG8gaGkgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczoodHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGZvciB0dXBsZV9udW0gPSBoaSAtIDEgZG93bnRvIGxvIGRvXG4gICAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdFxuICAgICAgICB0XG4gICAgICAgIG1ldGFkYXRhXG4gICAgICAgIH5oZWFkZXJfaW5kZXg6KHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmNyZWF0ZSBnb3QgaW52YWxpZCBjYXBhY2l0eVwiIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgc2xvdHNfcGVyX3R1cGxlID0gU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzIGluXG4gICAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgY2FwYWNpdHkgPiBtYXhfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuY3JlYXRlIGdvdCB0b28gbGFyZ2UgY2FwYWNpdHlcIlxuICAgICAgICAoY2FwYWNpdHksIGBtYXggbWF4X2NhcGFjaXR5KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heCBvZiBpbnQgXV07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IFR1cGxlX2lkLmluaXRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvOjAgfmhpOmNhcGFjaXR5O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlICh0eXBlIHR1cGxlKSAoc2xvdHMgOiAodHVwbGUsIF8pIFNsb3RzLnQpIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGxldCBkdW1teSA9XG4gICAgICBpZiBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgPSAxXG4gICAgICB0aGVuIFVuaWZvcm1fYXJyYXkuc2luZ2xldG9uIChPYmoucmVwciAoZHVtbXkgOiB0dXBsZSkpXG4gICAgICBlbHNlIChPYmoubWFnaWMgKGR1bW15IDogdHVwbGUpIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTooU29tZSBkdW1teSlcbiAgOztcblxuICAoKiBQdXJnZSBhIHBvb2wgYW5kIG1ha2UgaXQgdW51c2FibGUuICopXG4gIGxldCBkZXN0cm95IHQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAoKiBXZSBjbGVhciBvdXQgYWxsIHRoZSBwb29sJ3MgZW50cmllcywgd2hpY2ggY2F1c2VzIGFsbCBwb2ludGVycyB0byBiZSBpbnZhbGlkLiAgVGhpc1xuICAgICAgIGFsc28gcHJldmVudHMgdGhlIGRlc3Ryb3llZCBwb29sIGZyb20gdW5uZWNlc3NhcmlseSBrZWVwaW5nIGhlYXAgYmxvY2tzIGFsaXZlLlxuICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBbZnJlZV1pbmcgYWxsIHRoZSBlbnRyaWVzIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB3ZSBtYWtlIHRoZVxuICAgICAgIGZyZWUgbGlzdCBlbXB0eSBhcyB3ZWxsLiAqKVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGZvciBpID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4IHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChPYmoucmVwciAwKVxuICAgICAgIGRvbmVcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBIZWFkZXIubnVsbDtcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOihoZWFkZXJfaW5kZXggKyAxKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eSA9IDBcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gbWV0YWRhdGEubmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXkgPSBtZXRhZGF0YS5kdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGFcbiAgOztcblxuICBsZXRbQGNvbGRdIGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGxldCB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICA7IGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgICAgIDsgbGVuZ3RoXG4gICAgICAgIDsgbmV4dF9pZFxuICAgICAgICA7IGZpcnN0X2ZyZWUgPSBfXG4gICAgICAgIDsgZHVtbXlcbiAgICAgICAgfVxuICAgICAgPVxuICAgICAgbWV0YWRhdGEgdFxuICAgIGluXG4gICAgbGV0IGNhcGFjaXR5ID1cbiAgICAgIG1pbiAobWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpIChncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5KVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZ3JvdyBjYW5ub3QgZ3JvdyBwb29sOyBjYXBhY2l0eSBhbHJlYWR5IGF0IG1heGltdW1cIlxuICAgICAgICBjYXBhY2l0eVxuICAgICAgICBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aFxuICAgICAgOyBuZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQnID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICB+c3JjOnRcbiAgICAgIH5zcmNfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmRzdDp0J1xuICAgICAgfmRzdF9wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+bGVuOihvbGRfY2FwYWNpdHkgKiBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YSk7XG4gICAgZGVzdHJveSB0O1xuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQnIG1ldGFkYXRhIH5sbzpvbGRfY2FwYWNpdHkgfmhpOmNhcGFjaXR5O1xuICAgIGZvciB0dXBsZV9udW0gPSBvbGRfY2FwYWNpdHkgLSAxIGRvd250byAwIGRvXG4gICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQnIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgIGlmIG5vdCAoSGVhZGVyLmlzX3VzZWQgaGVhZGVyKVxuICAgICAgdGhlbiB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0JyBtZXRhZGF0YSB+aGVhZGVyX2luZGV4XG4gICAgZG9uZTtcbiAgICB0J1xuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfbWFsbG9jX2Z1bGwgdCA9XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLm1hbGxvYyBvZiBmdWxsIHBvb2xcIiB0IFslc2V4cF9vZjogXyB0XVxuICA7O1xuXG4gIGxldCBtYWxsb2MgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgOiBzbG90cyBQb2ludGVyLnQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgZmlyc3RfZnJlZSA9IG1ldGFkYXRhLmZpcnN0X2ZyZWUgaW5cbiAgICBpZiBIZWFkZXIuaXNfbnVsbCBmaXJzdF9mcmVlIHRoZW4gcmFpc2VfbWFsbG9jX2Z1bGwgdDtcbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggZmlyc3RfZnJlZSBpblxuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXg7XG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCArIDE7XG4gICAgbGV0IHR1cGxlX2lkID0gbWV0YWRhdGEubmV4dF9pZCBpblxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoSGVhZGVyLnVzZWQgdHVwbGVfaWQpO1xuICAgIG1ldGFkYXRhLm5leHRfaWQgPC0gVHVwbGVfaWQubmV4dCB0dXBsZV9pZDtcbiAgICBQb2ludGVyLmNyZWF0ZSB+aGVhZGVyX2luZGV4IHR1cGxlX2lkXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggLSAxO1xuICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcik7XG4gICAgbWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHBvcyA9IFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgKHBvcyArIGkpXG4gICAgICBkb25lXG4gICAgfCBTb21lIGR1bW15IC0+XG4gICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICB+ZHN0OnRcbiAgICAgICAgfmRzdF9wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBmcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgKCogQ2hlY2sgW3BvaW50ZXJfaXNfdmFsaWRdIHRvOlxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIG51bGwgcG9pbnRlclxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIGZyZWUgcG9pbnRlciAodGhpcyB3b3VsZCBsZWFkIHRvIGEgcG9vbCBpbmNvbnNpc3RlbmN5KVxuICAgICAgIC0gYmUgYWJsZSB0byB1c2UgdW5zYWZlIGZ1bmN0aW9ucyBhZnRlci4gKilcbiAgICBpZiBub3QgKHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5mcmVlIG9mIGludmFsaWQgcG9pbnRlclwiXG4gICAgICAgIChwb2ludGVyLCB0KVxuICAgICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50ICogXyB0XTtcbiAgICB1bnNhZmVfZnJlZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzIgdCBhMCBhMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTQpIChPYmoucmVwciBhMTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgZ2V0IHQgcCBzbG90ID0gT2JqLm9iaiAoVW5pZm9ybV9hcnJheS5nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwIHNsb3QgPVxuICAgIE9iai5vYmogKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcbiAgOztcblxuICBsZXQgc2V0IHQgcCBzbG90IHggPSBVbmlmb3JtX2FycmF5LnNldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcblxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSAodHlwZSB0dXBsZSkgKHQgOiAodHVwbGUsIF8pIFNsb3RzLnQgdCkgcG9pbnRlciA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBsZW4gPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBsZW4gPSAxXG4gICAgdGhlbiBnZXQgdCBwb2ludGVyIFNsb3QudDBcbiAgICBlbHNlXG4gICAgICAoT2JqLm1hZ2ljXG4gICAgICAgICAoVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcikgfmxlblxuICAgICAgICAgIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgICAgIDogdHVwbGUpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb29sXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb29sXG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgPSBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15Ok5vbmVcbmVuZFxuXG5tb2R1bGUgRGVidWcgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBsZXQgcHJlZml4ID0gXCJQb29sLlwiIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciB0cyB+ZjooaW52YXJpYW50IGlnbm9yZSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXMgdGhlbiBEZWJ1Zy5lcHJpbnRzIChjb25jYXQgWyBwcmVmaXg7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmVwcmludHNcbiAgICAgICAgKGNvbmNhdCBbIHByZWZpeDsgbmFtZTsgXCIgcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgb3BlbiBQb2ludGVyXG5cbiAgICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2NvbXBhcmVcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19jb21wYXJlIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19lcXVhbFwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19lcXVhbCB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IGlzX251bGwgdCA9XG4gICAgICBkZWJ1ZyBcIlBvaW50ZXIuaXNfbnVsbFwiIFtdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19udWxsIHQpXG4gICAgOztcblxuICAgIGxldCBudWxsID0gbnVsbFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBvcGVuIElkXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgbGV0IG9mX2ludDYzIGkgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQub2ZfaW50NjNcIiBbXSBpIFslc2V4cF9vZjogSW50NjMudF0gWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgb2ZfaW50NjMgaSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLnRvX2ludDYzXCIgW10gdCBbJXNleHBfb2Y6IHRdIFslc2V4cF9vZjogSW50NjMudF0gKGZ1biAoKSAtPlxuICAgICAgICAgIHRvX2ludDYzIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJpZF9vZl9wb2ludGVyXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICAoZnVuICgpIC0+IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX29mX2lkX2V4blwiXG4gICAgICBbIHQgXVxuICAgICAgaWRcbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9vZl9pZF9leG4gdCBpZClcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfaXNfdmFsaWRcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgZGVidWcgXCJjcmVhdGVcIiBbXSBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15KVxuICA7O1xuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgZGVidWcgXCJtYXhfY2FwYWNpdHlcIiBbXSBzbG90c19wZXJfdHVwbGUgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+XG4gICAgICBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9XG4gICAgZGVidWcgXCJjYXBhY2l0eVwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+IGNhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGRlYnVnXG4gICAgICBcImdyb3dcIlxuICAgICAgWyB0IF1cbiAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHkpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBvcHRpb24gXV1cbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICAgICAgKGZ1biAoKSAtPiBncm93ID9jYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBpc19mdWxsIHQgPVxuICAgIGRlYnVnIFwiaXNfZnVsbFwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19mdWxsIHQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgZGVidWcgXCJ1bnNhZmVfZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICB1bnNhZmVfZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcImZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPiBmcmVlIHQgcClcbiAgOztcblxuICBsZXQgZGVidWdfbmV3IHQgZiA9IGRlYnVnIFwibmV3XCIgWyB0IF0gKCkgWyVzZXhwX29mOiB1bml0XSBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBmXG4gIGxldCBuZXcxIHQgYTAgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlIHQgcG9pbnRlciA9XG4gICAgZGVidWcgXCJnZXRfdHVwbGVcIiBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPlxuICAgICAgZ2V0X3R1cGxlIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZGVidWdfZ2V0IG5hbWUgZiB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT4gZiB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGdldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcImdldFwiIGdldCB0IHBvaW50ZXIgc2xvdFxuICBsZXQgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcInVuc2FmZV9nZXRcIiB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90XG5cbiAgbGV0IGRlYnVnX3NldCBuYW1lIGYgdCBwb2ludGVyIHNsb3QgYSA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgZiB0IHBvaW50ZXIgc2xvdCBhKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInNldFwiIHNldCB0IHBvaW50ZXIgc2xvdCBhXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJ1bnNhZmVfc2V0XCIgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhXG5lbmRcblxubW9kdWxlIEVycm9yX2NoZWNrIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7IG11dGFibGUgaXNfdmFsaWQgOiBib29sXG4gICAgICA7IHBvaW50ZXIgOiAnc2xvdHMgUG9pbnRlci50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBjcmVhdGUgcG9pbnRlciA9IHsgaXNfdmFsaWQgPSB0cnVlOyBwb2ludGVyIH1cbiAgICBsZXQgbnVsbCAoKSA9IHsgaXNfdmFsaWQgPSBmYWxzZTsgcG9pbnRlciA9IFBvaW50ZXIubnVsbCAoKSB9XG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9IFBvaW50ZXIucGh5c19jb21wYXJlIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBpc19udWxsIHQgPSBQb2ludGVyLmlzX251bGwgdC5wb2ludGVyXG5cbiAgICBsZXQgZm9sbG93IHQgPVxuICAgICAgaWYgbm90IHQuaXNfdmFsaWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHVzZSBpbnZhbGlkIHBvaW50ZXJcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICAgIHQucG9pbnRlclxuICAgIDs7XG5cbiAgICBsZXQgaW52YWxpZGF0ZSB0ID0gdC5pc192YWxpZCA8LSBmYWxzZVxuXG4gICAgbW9kdWxlIElkID0gUG9pbnRlci5JZFxuICBlbmRcblxuICB0eXBlICdzbG90cyB0ID0gJ3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH0gPVxuICAgIGlzX3ZhbGlkICYmIHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyXG4gIDs7XG5cbiAgKCogV2UgZG9uJ3QgZG8gW1BvaW50ZXIuZm9sbG93IHBvaW50ZXJdLCBiZWNhdXNlIHRoYXQgd291bGQgZGlzYWxsb3cgW2lkX29mX3BvaW50ZXIgdFxuICAgICAoUG9pbnRlci5udWxsICgpKV0uICopXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyLlBvaW50ZXIucG9pbnRlclxuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBsZXQgcG9pbnRlciA9IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgaW5cbiAgICBsZXQgaXNfdmFsaWQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyIGluXG4gICAgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH1cbiAgOztcblxuICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5XG4gIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHlcbiAgbGV0IGdyb3cgPSBncm93XG4gIGxldCBpc19mdWxsID0gaXNfZnVsbFxuICBsZXQgZ2V0X3R1cGxlIHQgcCA9IGdldF90dXBsZSB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgZ2V0IHQgcCA9IGdldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgdW5zYWZlX2dldCB0IHAgPSB1bnNhZmVfZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBzZXQgdCBwIHNsb3QgdiA9IHNldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgdiA9IHVuc2FmZV9zZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgdW5zYWZlX2ZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcbmVuZFxuIiwiKCogQmUgc3VyZSBhbmQgZmlyc3QgcmVhZCB0aGUgaW1wbGVtZW50YXRpb24gb3ZlcnZpZXcgaW4gdGltaW5nX3doZWVsX2ludGYubWwuXG5cbiAgIEEgdGltaW5nIHdoZWVsIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIFwibGV2ZWxzXCIsIHdoZXJlIGVhY2ggbGV2ZWwgaXMgYW4gYXJyYXkgb2ZcbiAgIFwic2xvdHNcIi4gIEVhY2ggc2xvdCByZXByZXNlbnRzIGEgcmFuZ2Ugb2Yga2V5cywgYW5kIGhvbGRzIGVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aFxuICAgdGhvc2Uga2V5cy4gIEVhY2ggbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSB0d28gcGFyYW1ldGVyczogW2JpdHNdLCB0aGUgbnVtYmVyIG9mIGtleSBiaXRzXG4gICB0aGF0IHRoYXQgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yIGRpc3Rpbmd1aXNoaW5nLCBhbmQgW2JpdHNfcGVyX3Nsb3RdLCB0aGUgc2l6ZSBvZiB0aGVcbiAgIHJhbmdlIG9mIGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2luZ2xlIHNsb3QgaW4gdGhlIGFycmF5LiAgQ29uY2VwdHVhbGx5LCBlYWNoIGxldmVsXG4gICBicmVha3MgdXAgYWxsIHBvc3NpYmxlIGtleXMgaW50byByYW5nZXMgb2Ygc2l6ZSBbMl5iaXRzX3Blcl9zbG90XS4gIFRoZSBsZW5ndGggb2YgYVxuICAgbGV2ZWwgYXJyYXkgaXMgWzJeYml0c10sIGFuZCB0aGUgYXJyYXkgaXMgdXNlZCBsaWtlIGEgY2lyY3VsYXIgYnVmZmVyIHRvIHRyYXZlcnNlIHRoZVxuICAgcmFuZ2VzIGFzIHRoZSB0aW1pbmcgd2hlZWwncyBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMuICBBIGtleSBba10sIGlmIHN0b3JlZCBpbiB0aGVcbiAgIGxldmVsLCBpcyBzdG9yZWQgYXQgaW5kZXggWyhrIC8gMl5iaXRzX3Blcl9zbG90KSBtb2QgMl5iaXRzXS5cblxuICAgVGhlIHNldHRpbmdzIG9mIHRoZSBbYml0c10gdmFsdWVzIGFyZSBjb25maWd1cmFibGUgYnkgdXNlciBjb2RlIHVzaW5nIFtMZXZlbF9iaXRzXSxcbiAgIGFsdGhvdWdoIHRoZXJlIGlzIGEgcmVhc29uYWJsZSBkZWZhdWx0IHNldHRpbmcuICBHaXZlbiB0aGUgW2JpdHNdIHZhbHVlcywgdGhlXG4gICBbYml0c19wZXJfc2xvdF0gYXJlIGNob3NlbiBzbyB0aGF0IFtiaXRzX3Blcl9zbG90XSBhdCBsZXZlbCBbaV0gaXMgdGhlIHN1bSBvZiB0aGVcbiAgIFtiaXRzXSBhdCBhbGwgbG93ZXIgbGV2ZWxzLiAgVGh1cywgYSBzbG90J3MgcmFuZ2UgYXQgbGV2ZWwgW2ldIGlzIGFzIGxhcmdlIGFzIHRoZVxuICAgZW50aXJlIHJhbmdlIG9mIHRoZSBhcnJheSBhdCBsZXZlbCBbaSAtIDFdLlxuXG4gICBFYWNoIGxldmVsIGhhcyBhIFttaW5fYWxsb3dlZF9rZXldIGFuZCBhIFttYXhfYWxsb3dlZF9rZXldIHRoYXQgZGV0ZXJtaW5lIHRoZSByYW5nZSBvZlxuICAga2V5cyB0aGF0IGl0IGN1cnJlbnRseSByZXByZXNlbnRzLiAgVGhlIGNydWNpYWwgaW52YXJpYW50IG9mIHRoZSB0aW1pbmcgd2hlZWwgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRoYXQgdGhlIFttaW5fYWxsb3dlZF9rZXldIGF0IGxldmVsIFtpXSBpcyBubyBtb3JlIHRoYW4gdGhlXG4gICBbbWF4X2FsbG93ZWRfa2V5ICsgMV0gb2YgbGV2ZWwgW2kgLSAxXS4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbHMgY2FuIHJlcHJlc2VudCBhbGxcbiAgIGtleXMgZnJvbSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGxvd2VzdCBsZXZlbCB0byB0aGUgW21heF9hbGxvd2VkX2tleV0gb2YgdGhlXG4gICBoaWdoZXN0IGxldmVsLiAgVGhlIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0b3JpbmdcbiAgIHRoaXMgaW52YXJpYW50LlxuXG4gICBBdCBsZXZlbCAwLCBbYml0c19wZXJfc2xvdCA9IDBdLCBhbmQgc28gdGhlIHNpemUgb2YgZWFjaCBzbG90IGlzIFsxXS4gIFRoYXQgaXMsIGxldmVsIDBcbiAgIHByZWNpc2VseSBkaXN0aW5ndWlzaGVzIGFsbCB0aGUga2V5cyBiZXR3ZWVuIGl0cyBbbWluX2FsbG93ZWRfa2V5XSAod2hpY2ggaXMgdGhlIHNhbWVcbiAgIGFzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgZW50aXJlIHRpbWluZyB3aGVlbCkgYW5kIFttYXhfYWxsb3dlZF9rZXldLiAgQXMgdGhlXG4gICBsZXZlbHMgaW5jcmVhc2UsIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHRoZSBbYml0c19wZXJfc2xvdF0gaW5jcmVhc2VzLCBhbmRcbiAgIHRoZSByYW5nZSBvZiBrZXlzIHN0b3JlZCBpbiB0aGUgbGV2ZWwgaW5jcmVhc2VzIChkcmFtYXRpY2FsbHkpLlxuXG4gICBUaGUgaWRlYSBvZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byB0aGUgaGllcmFyY2hpY2FsIGFwcHJvYWNoIGRlc2NyaWJlZCBpbjpcblxuICAge3ZcbiAgICAgSGFzaGVkIGFuZCBIaWVyYXJjaGljYWwgVGltaW5nIFdoZWVsczpcbiAgICAgRWZmaWNpZW50IERhdGEgU3RydWN0dXJlcyBmb3IgSW1wbGVtZW50aW5nIGEgVGltZXIgRmFjaWxpdHlcblxuICAgICBWYXJnaGVzZSAmIExhdWNrLCAxOTk2XG4gICB2fVxuXG4gICBIb3dldmVyLCB0aGUgY29kZSBpcyBjb21wbGV0ZWx5IG5ldy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBUaW1pbmdfd2hlZWxfaW50ZlxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbmxldCBzZXhwX29mX3Rfc3R5bGUgOiBbIGBQcmV0dHkgfCBgSW50ZXJuYWwgXSByZWYgPSByZWYgYFByZXR0eVxuXG4oKiBbe21heCxtaW59X3RpbWVdIGFyZSBib3VuZHMgb24gdGhlIHRpbWVzIHN1cHBvcnRlZCBieSBhIHRpbWluZyB3aGVlbC4gKilcblxubGV0IG1heF90aW1lID0gVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1pbl90aW1lID0gVGltZV9ucy5lcG9jaFxuXG5tb2R1bGUgTnVtX2tleV9iaXRzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHplcm8gOiB0XG5cbiAgKCogdmFsIG1pbl92YWx1ZSA6IHQgKilcblxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cyIDogdCAtPiBJbnQ2My50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgbWluX3ZhbHVlID0gMFxuXG4gICgqKiBXZSBzdXBwb3J0IGFsbCBub24tbmVnYXRpdmUgW1RpbWVfbnMudF0gdmFsdWVzLiAqKVxuICBsZXQgbWF4X3ZhbHVlID0gSW50NjMubnVtX2JpdHMgLSAxXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQgPj0gbWluX3ZhbHVlKTtcbiAgICBhc3NlcnQgKHQgPD0gbWF4X3ZhbHVlKVxuICA7O1xuXG4gIGxldCBvZl9pbnQgaSA9XG4gICAgaW52YXJpYW50IGk7XG4gICAgaVxuICA7O1xuXG4gIGxldCAoICsgKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSArIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCAoIC0gKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSAtIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBwb3cyIHQgPSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSB0XG5lbmRcblxubW9kdWxlIExldmVsX2JpdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTnVtX2tleV9iaXRzLnQgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtYXhfbnVtX2JpdHMgPSAoTnVtX2tleV9iaXRzLm1heF92YWx1ZSA6PiBpbnQpXG4gIGxldCBudW1fYml0c19pbnRlcm5hbCB0ID0gTGlzdC5mb2xkIHQgfmluaXQ6TnVtX2tleV9iaXRzLnplcm8gfmY6TnVtX2tleV9iaXRzLiggKyApXG4gIGxldCBudW1fYml0cyB0ID0gKG51bV9iaXRzX2ludGVybmFsIHQgOj4gaW50KVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0IChub3QgKExpc3QuaXNfZW1wdHkgdCkpO1xuICAgIExpc3QuaXRlciB0IH5mOihmdW4gbnVtX2tleV9iaXRzIC0+XG4gICAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IG51bV9rZXlfYml0cztcbiAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIG51bV9rZXlfYml0cyBOdW1fa2V5X2JpdHMuemVybykpO1xuICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgKG51bV9iaXRzX2ludGVybmFsIHQpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgdCA9IHNleHAgfD4gWyVvZl9zZXhwOiB0XSBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biA/KGV4dGVuZF90b19tYXhfbnVtX2JpdHMgPSBmYWxzZSkgaW50cyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRzIHRoZW4gZmFpbHdpdGggXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gcmVxdWlyZXMgYSBub25lbXB0eSBsaXN0XCI7XG4gICAgaWYgTGlzdC5leGlzdHMgaW50cyB+ZjooZnVuIGJpdHMgLT4gYml0cyA8PSAwKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCBub25wb3NpdGl2ZSBudW0gYml0c1wiIH5fOihpbnRzIDogaW50IGxpc3QpXTtcbiAgICBsZXQgbnVtX2JpdHMgPSBMaXN0LmZvbGQgaW50cyB+aW5pdDowIH5mOiggKyApIGluXG4gICAgaWYgbnVtX2JpdHMgPiBtYXhfbnVtX2JpdHNcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCB0b28gbWFueSBiaXRzXCJcbiAgICAgICAgICAgIH5fOihpbnRzIDogaW50IGxpc3QpXG4gICAgICAgICAgICB+Z290OihudW1fYml0cyA6IGludClcbiAgICAgICAgICAgIChtYXhfbnVtX2JpdHMgOiBpbnQpXTtcbiAgICBsZXQgaW50cyA9XG4gICAgICBpZiBleHRlbmRfdG9fbWF4X251bV9iaXRzXG4gICAgICB0aGVuIGludHMgQCBMaXN0LmluaXQgKG1heF9udW1fYml0cyAtIG51bV9iaXRzKSB+ZjooY29uc3QgMSlcbiAgICAgIGVsc2UgaW50c1xuICAgIGluXG4gICAgTGlzdC5tYXAgaW50cyB+ZjpOdW1fa2V5X2JpdHMub2ZfaW50XG4gIDs7XG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuIFsgMTE7IDEwOyAxMDsgMTA7IDEwOyAxMDsgMSBdXG5cbiAgbGV0IHRyaW0gdCB+bWF4X251bV9iaXRzID1cbiAgICBpZiBOdW1fa2V5X2JpdHMuKCA8PSApIChudW1fYml0c19pbnRlcm5hbCB0KSBtYXhfbnVtX2JpdHNcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCB0IH5yZW1haW5pbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IGIgOjogdCAtPlxuICAgICAgICAgIGlmIE51bV9rZXlfYml0cy4oID49ICkgYiByZW1haW5pbmdcbiAgICAgICAgICB0aGVuIFsgcmVtYWluaW5nIF1cbiAgICAgICAgICBlbHNlIGIgOjogbG9vcCB0IH5yZW1haW5pbmc6KE51bV9rZXlfYml0cy4oIC0gKSByZW1haW5pbmcgYilcbiAgICAgIGluXG4gICAgICBsb29wIHQgfnJlbWFpbmluZzptYXhfbnVtX2JpdHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA6IHNpZ1xuICBpbmNsdWRlIEFsYXJtX3ByZWNpc2lvblxuXG4gIHZhbCBudW1fa2V5X2JpdHMgOiB0IC0+IE51bV9rZXlfYml0cy50XG4gIHZhbCBpbnRlcnZhbF9udW0gOiB0IC0+IFRpbWVfbnMudCAtPiBJbnQ2My50XG4gIHZhbCBpbnRlcnZhbF9udW1fc3RhcnQgOiB0IC0+IEludDYzLnQgLT4gVGltZV9ucy50XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIFt0XSBpcyByZXByZXNlbnRlZCBhcyB0aGUgbG9nMiBvZiBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKilcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBsZXQgbnVtX2tleV9iaXRzIHQgPSB0IHw+IE51bV9rZXlfYml0cy5vZl9pbnRcblxuICBsZXQgdG9fc3BhbiB0ID1cbiAgICBpZiB0IDwgMFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW5dIG9mIG5lZ2F0aXZlIHBvd2VyIG9mIHR3byBuYW5vc2Vjb25kc1wiIH5fOih0IDogaW50KV07XG4gICAgSW50NjMuKHNoaWZ0X2xlZnQgb25lKSB0IHw+IFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCB8PiB0b19zcGFuIDogVGltZV9ucy5TcGFuLnQpXVxuICBsZXQgb25lX25hbm9zZWNvbmQgPSAwXG4gIGxldCBhYm91dF9vbmVfbWljcm9zZWNvbmQgPSAxMFxuICBsZXQgYWJvdXRfb25lX21pbGxpc2Vjb25kID0gMjBcbiAgbGV0IGFib3V0X29uZV9zZWNvbmQgPSAzMFxuICBsZXQgYWJvdXRfb25lX2RheSA9IDQ2XG4gIGxldCBtdWwgdCB+cG93MiA9IHQgKyBwb3cyXG4gIGxldCBkaXYgdCB+cG93MiA9IHQgLSBwb3cyXG4gIGxldCBpbnRlcnZhbF9udW0gdCB0aW1lID0gSW50NjMuc2hpZnRfcmlnaHQgKHRpbWUgfD4gVGltZV9ucy50b19pbnQ2M19uc19zaW5jZV9lcG9jaCkgdFxuXG4gIGxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICAgIEludDYzLnNoaWZ0X2xlZnQgaW50ZXJ2YWxfbnVtIHQgfD4gVGltZV9ucy5vZl9pbnQ2M19uc19zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBvZl9zcGFuX2Zsb29yX3BvdzJfbnMgc3BhbiA9XG4gICAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24ub2Zfc3Bhbl9mbG9vcl9wb3cyX25zXSBnb3Qgbm9uLXBvc2l0aXZlIHNwYW5cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICAgIHNwYW4gfD4gVGltZV9ucy5TcGFuLnRvX2ludDYzX25zIHw+IEludDYzLmZsb29yX2xvZzJcbiAgOztcblxuICBsZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuXG4gIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zcGFuXG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NwYW5cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoVGltZV9ucy5TcGFuKSAoVClcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlIChUaW1lX25zLlNwYW4pIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBsZXZlbF9iaXRzX2RlZmF1bHQgPSBMZXZlbF9iaXRzLmRlZmF1bHRcblxuICB0eXBlIHQgPVxuICAgIHsgYWxhcm1fcHJlY2lzaW9uIDogQWxhcm1fcHJlY2lzaW9uLlVuc3RhYmxlLnRcbiAgICA7IGxldmVsX2JpdHMgOiBMZXZlbF9iaXRzLnQgW0BkZWZhdWx0IGxldmVsX2JpdHNfZGVmYXVsdF1cbiAgICA7IGNhcGFjaXR5IDogaW50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IEFsYXJtX3ByZWNpc2lvbi50b19zcGFuIHQuYWxhcm1fcHJlY2lzaW9uXG5cbiAgKCogW21heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb25dIHJldHVybnMgdGhlIG51bWJlciBvZiBsZXZlbCBiaXRzIG5lZWRlZCBmb3IgYVxuICAgICB0aW1pbmcgd2hlZWwgd2l0aCB0aGUgc3BlY2lmaWVkIFthbGFybV9wcmVjaXNpb25dIHRvIGJlIGFibGUgdG8gcmVwcmVzZW50IGFsbFxuICAgICBwb3NzaWJsZSB0aW1lcyBmcm9tIFtUaW1lX25zLmVwb2NoXSBvbndhcmQuICBTaW5jZSBub24tbmVnYXRpdmUgdGltZXMgaGF2ZSA2MiBiaXRzLFxuICAgICB3ZSByZXF1aXJlIFtMIDw9IDYyIC0gQV0sIHdoZXJlIFtBXSBpcyB0aGUgbnVtYmVyIG9mIGFsYXJtIGJpdHMgYW5kIFtMXSBpcyB0aGVcbiAgICAgbnVtYmVyIG9mIGxldmVsIGJpdHMuICopXG4gIGxldCBtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uID1cbiAgICBOdW1fa2V5X2JpdHMuKCAtIClcbiAgICAgIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICAgIChBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgTnVtX2tleV9iaXRzLiggPD0gKVxuICAgICAgICAgIChMZXZlbF9iaXRzLm51bV9iaXRzX2ludGVybmFsIHQubGV2ZWxfYml0cylcbiAgICAgICAgICAobWF4X251bV9sZXZlbF9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uKSk7XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb246aWdub3JlXG4gICAgICAgIH5jYXBhY2l0eTppZ25vcmVcbiAgICAgICAgfmxldmVsX2JpdHM6KGNoZWNrIExldmVsX2JpdHMuaW52YXJpYW50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/KGxldmVsX2JpdHMgPSBsZXZlbF9iaXRzX2RlZmF1bHQpIH5hbGFybV9wcmVjaXNpb24gKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIExldmVsX2JpdHMudHJpbSBsZXZlbF9iaXRzIH5tYXhfbnVtX2JpdHM6KG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gICAgaW5cbiAgICB7IGFsYXJtX3ByZWNpc2lvbjsgbGV2ZWxfYml0czsgY2FwYWNpdHkgfVxuICA7O1xuXG4gIGxldCBtaWNyb3NlY29uZF9wcmVjaXNpb24gKCkgPVxuICAgIGNyZWF0ZVxuICAgICAgKClcbiAgICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWNyb3NlY29uZFxuICAgICAgfmxldmVsX2JpdHM6KExldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEwOyAxMDsgNjsgNjsgNSBdKVxuICA7O1xuXG4gIGxldCBkdXJhdGlvbnMgdCA9XG4gICAgTGlzdC5mb2xkaW5nX21hcFxuICAgICAgdC5sZXZlbF9iaXRzXG4gICAgICB+aW5pdDooQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyB0LmFsYXJtX3ByZWNpc2lvbiB8PiBOdW1fa2V5X2JpdHMudG9faW50KVxuICAgICAgfmY6KGZ1biBudW1fYml0c19hY2N1bSBsZXZlbF9udW1fYml0cyAtPlxuICAgICAgICBsZXQgbnVtX2JpdHNfYWNjdW0gPSBudW1fYml0c19hY2N1bSArIChsZXZlbF9udW1fYml0cyB8PiBOdW1fa2V5X2JpdHMudG9faW50KSBpblxuICAgICAgICBsZXQgZHVyYXRpb24gPVxuICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgICAgICAgKGlmIG51bV9iaXRzX2FjY3VtID0gSW50NjMubnVtX2JpdHMgLSAxXG4gICAgICAgICAgICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICAgICAgICAgICBlbHNlIEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzX2FjY3VtKVxuICAgICAgICBpblxuICAgICAgICBudW1fYml0c19hY2N1bSwgZHVyYXRpb24pXG4gIDs7XG5lbmRcblxuXG4oKiogVGltaW5nIHdoZWVsIGlzIGltcGxlbWVudGVkIGFzIGEgcHJpb3JpdHkgcXVldWUgaW4gd2hpY2ggdGhlIGtleXMgYXJlXG4gICAgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVydmFscyBvZiB0aW1lLiAgVGhlIHByaW9yaXR5IHF1ZXVlIGlzXG4gICAgdW5saWtlIGEgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZSBpbiB0aGF0IHJhdGhlciB0aGFuIGhhdmluZyBhIFwiZGVsZXRlIG1pblwiIG9wZXJhdGlvbixcbiAgICBpdCBoYXMgYSBub25kZWNyZWFzaW5nIG1pbmltdW0gYWxsb3dlZCBrZXksIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHRpbWUsXG4gICAgYW5kIGFuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIG9wZXJhdGlvbiwgd2hpY2ggaW1wbGVtZW50cyBbYWR2YW5jZV9jbG9ja10uXG4gICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gYXMgYSBzaWRlIGVmZmVjdCByZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSB0aW1pbmdcbiAgICB3aGVlbCB3aG9zZSBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBuZXcgbWluaW11bSwgd2hpY2ggaW1wbGVtZW50cyBmaXJpbmcgdGhlIGFsYXJtc1xuICAgIHdob3NlIHRpbWUgaGFzIGV4cGlyZWQuXG5cbiAgICBBZGRpbmcgZWxlbWVudHMgdG8gYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gYSB0aW1pbmcgd2hlZWwgdGFrZXMgY29uc3RhbnQgdGltZSxcbiAgICB1bmxpa2UgYSBoZWFwLWJhc2VkIHByaW9yaXR5IHF1ZXVlIHdoaWNoIHRha2VzIGxvZyhOKSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgZWxlbWVudHMgaW4gdGhlIGhlYXAuICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGVcbiAgICBhbW91bnQgb2YgaW5jcmVhc2UgaW4gdGhlIG1pbi1hbGxvd2VkIGtleSwgYXMgY29tcGFyZWQgdG8gbG9nKE4pIGZvciBhIGhlYXAuICBJdCBpc1xuICAgIHRoZXNlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzIHRoYXQgbW90aXZhdGUgdGhlIGV4aXN0ZW5jZSBvZiB0aW1pbmcgd2hlZWxzIGFuZCBtYWtlXG4gICAgdGhlbSBhIGdvb2QgY2hvaWNlIGZvciBtYWludGFpbmcgYSBzZXQgb2YgYWxhcm1zLiAgV2l0aCBhIHRpbWluZyB3aGVlbCwgb25lIGNhblxuICAgIHN1cHBvcnQgYW55IG51bWJlciBvZiBhbGFybXMgcGF5aW5nIGNvbnN0YW50IG92ZXJoZWFkIHBlciBhbGFybSwgd2hpbGUgcGF5aW5nIGFcbiAgICBzbWFsbCBjb25zdGFudCBvdmVyaGVhZCBwZXIgdW5pdCBvZiB0aW1lIHBhc3NlZC5cblxuICAgIEFzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGhlIHRpbWluZyB3aGVlbCBkb2VzIGEgbGF6eSByYWRpeCBzb3J0IG9mIHRoZVxuICAgIGVsZW1lbnQga2V5cywgd2l0aCBsZXZlbCAwIGhhbmRsaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBbYl8wXSBiaXRzIGluIGEga2V5LCBhbmRcbiAgICBlYWNoIHN1YnNlcXVlbnQgbGV2ZWwgW2ldIGhhbmRsaW5nIHRoZSBuZXh0IG1vc3Qgc2lnbmlmaWNhbnQgW2JfaV0gYml0cy4gIFRoZSBsZXZlbHNcbiAgICBob2xkIGluY3JlYXNpbmdseSBsYXJnZXIgcmFuZ2VzIG9mIGtleXMsIHdoZXJlIHRoZSB1bmlvbiBvZiBhbGwgdGhlIGxldmVscyBjYW4gaG9sZFxuICAgIGFueSBrZXkgZnJvbSBbbWluX2FsbG93ZWRfa2V5IHRdIHRvIFttYXhfYWxsb3dlZF9rZXkgdF0uICBXaGVuIGEga2V5IGlzIGFkZGVkIHRvIHRoZVxuICAgIHRpbWluZyB3aGVlbCwgaXQgaXMgYWRkZWQgYXQgdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCB0aGF0IGNhbiBzdG9yZSB0aGUga2V5LiAgQXNcbiAgICB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRpbWluZy13aGVlbCBlbGVtZW50cyBtb3ZlIGRvd24gbGV2ZWxzIHVudGlsIHRoZXlcbiAgICByZWFjaCBsZXZlbCAwLCBhbmQgdGhlbiBhcmUgZXZlbnR1YWxseSByZW1vdmVkLiAgKilcbm1vZHVsZSBQcmlvcml0eV9xdWV1ZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgS2V5IDogSW50ZXJ2YWxfbnVtXG5cbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgICgqKiBBbiBbRWx0LnRdIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZCB0byBhIHRpbWluZyB3aGVlbC4gKilcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBhdCA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGtleSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgdmFsdWUgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIG51bGwgOiB1bml0IC0+ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRWx0LnRcbiAgZW5kXG5cbiAgdmFsIHBvb2wgOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC5Qb29sLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtjcmVhdGUgP2xldmVsX2JpdHMgKCldIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdGltaW5nIHdoZWVsLCBbdF0sIHdpdGggW2xlbmd0aCB0ID0gMF1cbiAgICAgIGFuZCBbbWluX2FsbG93ZWRfa2V5IHQgPSAwXS4gKilcbiAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gP2xldmVsX2JpdHM6TGV2ZWxfYml0cy50IC0+IHVuaXQgLT4gJ2EgdFxuXG4gICgqKiBbbGVuZ3RoIHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuXG4gICgqKiBbbWluX2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtaW5pbXVtIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgVGhpcyBvbmx5XG4gICAgICBpbmRpY2F0ZXMgdGhlIHBvc3NpYmlsaXR5OyB0aGVyZSBuZWVkIG5vdCBiZSBhbiBlbGVtZW50IFtlbHRdIGluIFt0XSB3aXRoIFtFbHQua2V5XG4gICAgICBlbHQgPSBtaW5fYWxsb3dlZF9rZXkgdF0uICBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgXCJtaW5fa2V5XCIgb3BlcmF0aW9uIGluIGFcbiAgICAgIHR5cGljYWwgcHJpb3JpdHkgcXVldWUuXG5cbiAgICAgIFttaW5fYWxsb3dlZF9rZXkgdF0gY2FuIGluY3JlYXNlIG92ZXIgdGltZSwgdmlhIGNhbGxzIHRvXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XS4gKilcbiAgdmFsIG1pbl9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gICgqKiBbbWF4X2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBBc1xuICAgICAgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCBzbyBkb2VzIFttYXhfYWxsb3dlZF9rZXldOyBob3dldmVyIGl0IGlzIG5vdCB0aGUgY2FzZVxuICAgICAgdGhhdCBbbWF4X2FsbG93ZWRfa2V5IHQgLSBtaW5fYWxsb3dlZF9rZXkgdF0gaXMgYSBjb25zdGFudC4gIEl0IGlzIGd1YXJhbnRlZWQgdGhhdFxuICAgICAgW21heF9hbGxvd2VkX2tleSB0ID49IG1pbl9hbGxvd2VkX2tleSB0ICsgMl5CIC0gMV0sXG4gICAgICB3aGVyZSBbQl0gaXMgdGhlIHN1bSBvZiB0aGUgYl9pIGluIFtsZXZlbF9iaXRzXS4gKilcbiAgdmFsIG1heF9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gIHZhbCBtaW5fZWx0XyA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcbiAgdmFsIGludGVybmFsX2FkZCA6ICdhIHQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiAnYSAtPiAnYSBJbnRlcm5hbF9lbHQudFxuXG4gICgqKiBbcmVtb3ZlIHQgZWx0XSByZW1vdmVzIFtlbHRdIGZyb20gW3RdLiAgSXQgaXMgYW4gZXJyb3IgaWYgW2VsdF0gaXMgbm90IGN1cnJlbnRseVxuICAgICAgaW4gW3RdLCBhbmQgdGhpcyBlcnJvciBtYXkgb3IgbWF5IG5vdCBiZSBkZXRlY3RlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuXG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+ICdhIEVsdC50IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gdW5pdFxuXG4gICgqKiBbY2xlYXIgdF0gcmVtb3ZlcyBhbGwgZWx0cyBmcm9tIFt0XS4gKilcbiAgdmFsIGNsZWFyIDogXyB0IC0+IHVuaXRcblxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBib29sXG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgKCoqIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZF0gaW5jcmVhc2VzIHRoZSBtaW5pbXVtIGFsbG93ZWRcbiAgICAgIGtleSBpbiBbdF0gdG8gW2tleV0sIGFuZCByZW1vdmVzIGFsbCBlbGVtZW50cyB3aXRoIGtleXMgbGVzcyB0aGFuIFtrZXldLCBhcHBseWluZ1xuICAgICAgW2hhbmRsZV9yZW1vdmVkXSB0byBlYWNoIGVsZW1lbnQgdGhhdCBpcyByZW1vdmVkLiAgSWYgW2tleSA8PSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICB0aGVuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGRvZXMgbm90aGluZy4gIE90aGVyd2lzZSwgaWZcbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCBbbWluX2FsbG93ZWRfa2V5IHQgPSBrZXldLlxuXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byBba2V5IC0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgYWx0aG91Z2ggcG9zc2libHkgbGVzcyB0aW1lLlxuXG4gICAgICBCZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbaGFuZGxlX3JlbW92ZWRdIGFjY2Vzc2VzIFt0XSBpbiBhbnkgd2F5IG90aGVyIHRoYW5cbiAgICAgIFtFbHRdIGZ1bmN0aW9ucy4gKilcbiAgdmFsIGluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgIDogICdhIHRcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBoYW5kbGVfcmVtb3ZlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnRcblxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgRWx0LnQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBmaXJlX3Bhc3RfYWxhcm1zXG4gICAgOiAgJ2EgdFxuICAgIC0+IGhhbmRsZV9maXJlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBub3c6VGltZV9ucy50XG4gICAgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gICgqKiBFYWNoIHNsb3QgaW4gYSBsZXZlbCBpcyBhIChwb3NzaWJseSBudWxsKSBwb2ludGVyIHRvIGEgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBvZiBlbGVtZW50cy4gIFdlIHBvb2wgdGhlIGVsZW1lbnRzIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZW0gYWZ0ZXIgdGhleSBhcmUgcmVtb3ZlZFxuICAgICAgZnJvbSB0aGUgdGltaW5nIHdoZWVsIChlaXRoZXIgdmlhIFtyZW1vdmVdIG9yIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldKS4gIEluXG4gICAgICBhZGRpdGlvbiB0byBzdG9yaW5nIHRoZSBba2V5XSwgW2F0XSwgYW5kIFt2YWx1ZV0gaW4gdGhlIGVsZW1lbnQsIHdlIHN0b3JlIHRoZVxuICAgICAgW2xldmVsX2luZGV4XSBzbyB0aGF0IHdlIGNhbiBxdWlja2x5IGdldCB0byB0aGUgbGV2ZWwgaG9sZGluZyBhbiBlbGVtZW50IHdoZW4gd2VcbiAgICAgIFtyZW1vdmVdIGl0LlxuXG4gICAgICBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFtFeHRlcm5hbF9lbHRdIGFuZCBbSW50ZXJuYWxfZWx0XSwgd2hpY2ggYXJlIHRoZSBzYW1lXG4gICAgICB1bmRlcm5lYXRoLiAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFuIFtJbnRlcm5hbF9lbHRdIGlzIGVpdGhlciBbbnVsbF0gb3IgYVxuICAgICAgdmFsaWQgcG9pbnRlci4gIE9uIHRoZSBvdGhlciBoYW5kLCBbRXh0ZXJuYWxfZWx0XXMgYXJlIHJldHVybmVkIHRvIHVzZXIgY29kZSwgc29cbiAgICAgIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiB2YWxpZGl0eSAtLSB3ZSBhbHdheXMgdmFsaWRhdGUgYW4gW0V4dGVybmFsX2VsdF0gYmVmb3JlXG4gICAgICBkb2luZyBhbnl0aGluZyB3aXRoIGl0LlxuXG4gICAgICBJdCBpcyB0aGVyZWZvcmUgT0sgdG8gdXNlIFtQb29sLlVuc2FmZV0sIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciBhdHRlbXB0IHRvIGFjY2VzcyBhXG4gICAgICBzbG90IG9mIGFuIGludmFsaWQgcG9pbnRlci4gKilcbiAgbW9kdWxlIFBvb2wgPSBQb29sLlVuc2FmZVxuXG4gIG1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICgqKiBbSW50ZXJ2YWxfbnVtXSBpcyB0aGUgcHVibGljIEFQSS4gIEV2ZXJ5dGhpbmcgZm9sbG93aW5nIGluIHRoZSBzaWduYXR1cmUgaXNcbiAgICAgICAgZm9yIGludGVybmFsIHVzZS4gKilcbiAgICBpbmNsdWRlIFRpbWluZ193aGVlbF9pbnRmLkludGVydmFsX251bVxuXG4gICAgKCoqIFthZGRfY2xhbXBfdG9fbWF4XSBkb2Vzbid0IHdvcmsgYXQgYWxsIHdpdGggbmVnYXRpdmUgc3BhbnMgKilcbiAgICB2YWwgYWRkX2NsYW1wX3RvX21heCA6IHQgLT4gU3Bhbi50IC0+IHRcblxuICAgIHZhbCBzdWNjX2NsYW1wX3RvX21heCA6IHQgLT4gdFxuXG4gICAgKCoqIFtTbG90c19tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGEga2V5J3Mgc2xvdCBpbiBhIGdpdmVuIGxldmVsLiAqKVxuICAgIG1vZHVsZSBTbG90c19tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgdmFsIGNyZWF0ZSA6IGxldmVsX2JpdHM6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgICAgdmFsIG5leHRfc2xvdCA6IHQgLT4gaW50IC0+IGludFxuICAgIGVuZFxuXG4gICAgKCoqIFtNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGtleSBpbiB0aGVcbiAgICAgICAgc2FtZSBzbG90IGFzIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBFcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGNyZWF0ZSA6IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIG51bV9rZXlzIDogTnVtX2tleV9iaXRzLnQgLT4gU3Bhbi50XG4gICAgdmFsIG1pbl9rZXlfaW5fc2FtZV9zbG90IDogdCAtPiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnQgLT4gdFxuICAgIHZhbCBzbG90IDogdCAtPiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHNsb3RzX21hc2s6U2xvdHNfbWFzay50IC0+IGludFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZXZlbF9iaXRzID0gSW50NjMuKCAtICkgKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpIEludDYzLm9uZVxuICAgICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSAoc2xvdCArIDEpIGxhbmQgSW50NjMudG9faW50X2V4biB0XG4gICAgZW5kXG5cbiAgICBsZXQgbnVtX2tleXMgbnVtX2JpdHMgPSBOdW1fa2V5X2JpdHMucG93MiBudW1fYml0c1xuXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IGNyZWF0ZSB+Yml0c19wZXJfc2xvdCA9IGJpdF9ub3QgKE51bV9rZXlfYml0cy5wb3cyIGJpdHNfcGVyX3Nsb3QgLSBvbmUpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgICAgbGV0IHNjYWxlX2ludCB0IGkgPSB0ICogb2ZfaW50IGlcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgIGxldCBhZGQgdCBpID0gdCArIGlcbiAgICBsZXQgYWRkX2NsYW1wX3RvX21heCB0IGkgPSBpZiB0ID4gbWF4X3ZhbHVlIC0gaSB0aGVuIG1heF92YWx1ZSBlbHNlIHQgKyBpXG4gICAgbGV0IHN1Y2NfY2xhbXBfdG9fbWF4IHQgPSBpZiB0ID0gbWF4X3ZhbHVlIHRoZW4gbWF4X3ZhbHVlIGVsc2Ugc3VjYyB0XG4gICAgbGV0IHN1YiB0IGkgPSB0IC0gaVxuICAgIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuXG4gICAgbGV0IHNsb3QgdCB+KGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudCkgfnNsb3RzX21hc2sgPVxuICAgICAgdG9faW50X2V4biAoYml0X2FuZCAoc2hpZnRfcmlnaHQgdCAoYml0c19wZXJfc2xvdCA6PiBpbnQpKSBzbG90c19tYXNrKVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgIGJpdF9hbmQgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBLZXkuTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICBtb2R1bGUgU2xvdHNfbWFzayA9IEtleS5TbG90c19tYXNrXG5cbiAgbW9kdWxlIEV4dGVybmFsX2VsdCA9IHN0cnVjdFxuXG4gICAgKCoqIFRoZSBbcG9vbF9zbG90c10gaGVyZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzbG90cyBpbiBhIGxldmVsIGFycmF5LiAgVGhpcyBpc1xuICAgICAgICBmb3IgdGhlIHNsb3RzIGluIHRoZSBwb29sIHR1cGxlIHJlcHJlc2VudGluZyBhIGxldmVsIGVsZW1lbnQuICopXG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID1cbiAgICAgICggS2V5LnRcbiAgICAgICwgVGltZV9ucy50XG4gICAgICAsICdhXG4gICAgICAsIGludFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCApXG4gICAgICAgIFBvb2wuU2xvdHMudDZcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgICAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gdW5pdCAtPiBfIHRcbiAgICAgIHZhbCBpc19mdWxsIDogXyB0IC0+IGJvb2xcbiAgICAgIHZhbCBncm93IDogP2NhcGFjaXR5OmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHByaXZhdGUgJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCoqIERlYWxpbmcgd2l0aCBbRXh0ZXJuYWxfZWx0XXMuICopXG5cbiAgICB2YWwgZXh0ZXJuYWxfaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnRcbiAgICB2YWwgb2ZfZXh0ZXJuYWxfZXhuIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+ICdhIHRcbiAgICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBQb29sLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtjcmVhdGVdIHJldHVybnMgYW4gZWxlbWVudCB3aG9zZSBbbmV4dF0gYW5kIFtwcmV2XSBhcmUgW251bGxdLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogICdhIFBvb2wudFxuICAgICAgLT4ga2V5OktleS50XG4gICAgICAoKiogW2F0XSBpcyB1c2VkIHdoZW4gdGhlIHByaW9yaXR5IHF1ZXVlIGlzIHVzZWQgdG8gaW1wbGVtZW50IGEgdGltaW5nIHdoZWVsLiAgSWZcbiAgICAgICAgICB1bnVzZWQsIGl0IHdpbGwgYmUgW1RpbWVfbnMuZXBvY2hdLiAqKVxuICAgICAgLT4gYXQ6VGltZV9ucy50XG4gICAgICAtPiB2YWx1ZTonYVxuICAgICAgLT4gbGV2ZWxfaW5kZXg6aW50XG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZnJlZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBhY2Nlc3NvcnMgKilcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBhdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBsZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBuZXh0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB2YWx1ZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhXG5cbiAgICAoKiogbXV0YXRvcnMgKilcblxuICAgIHZhbCBzZXRfa2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnQgLT4gdW5pdFxuXG4gICAgKCoqIFtpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkXSB0cmVhdHMgW3RdIGFzIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGFuZCBhZGRzIFt0b19hZGRdXG4gICAgICAgIHRvIHRoZSBlbmQgb2YgaXQuICopXG4gICAgdmFsIGluc2VydF9hdF9lbmQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB0b19hZGQ6J2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2xpbmtfdG9fc2VsZiBwb29sIHRdIG1ha2VzIFt0XSBiZSBhIHNpbmdsZXRvbiBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3QuICopXG4gICAgdmFsIGxpbmtfdG9fc2VsZiA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbdW5saW5rIHAgdF0gdW5saW5rcyBbdF0gZnJvbSB0aGUgY2lyY3VsYXJseSBkb3VibHktbGlua2VkIGxpc3QgdGhhdCBpdCBpcyBpbi4gIEl0XG4gICAgICAgIGNoYW5nZXMgdGhlIHBvaW50ZXJzIG9mIFt0XSdzIFtwcmV2XSBhbmQgW25leHRdIGVsdHMsIGJ1dCBub3QgW3RdJ3MgW3ByZXZdIGFuZFxuICAgICAgICBbbmV4dF0gcG9pbnRlcnMuICBbdW5saW5rXSBpcyBtZWFuaW5nbGVzcyBpZiBbdF0gaXMgYSBzaW5nbGV0b24uICopXG4gICAgdmFsIHVubGluayA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBJdGVyYXRvcnMuICBbaXRlciBwIHQgfmluaXQgfmZdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgICBjb250YWluaW5nIFt0XSwgc3RhcnRpbmcgYXQgW3RdLCBhbmQgZm9sbG93aW5nIFtuZXh0XSBwb2ludGVycy4gIFtsZW5ndGhdIGNvdW50c1xuICAgICAgICBieSB2aXNpdGluZyBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QuICopXG4gICAgdmFsIGl0ZXIgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBmOignYSB0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBsZW5ndGggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcblxuICAgICgqKiBbbWF4X2FsYXJtX3RpbWUgdCBlbHQgfndpdGhfa2V5XSBmaW5kcyB0aGUgbWF4IFthdF0gaW4gW2VsdF0ncyBsaXN0IGFtb25nIHRoZSBlbHRzXG4gICAgICAgIHdob3NlIGtleSBpcyBbd2l0aF9rZXldLCByZXR1cm5pbmcgW1RpbWVfbnMuZXBvY2hdIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAqKVxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuXG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9ICdhIEV4dGVybmFsX2VsdC5wb29sX3Nsb3RzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gICAgbGV0IGlzX251bGwgPSBQb2ludGVyLmlzX251bGxcbiAgICBsZXQgZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEgdDJcblxuICAgIGxldCBjcmVhdGUgcG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4ID1cbiAgICAgIFBvb2wubmV3NiBwb29sIGtleSBhdCB2YWx1ZSBsZXZlbF9pbmRleCAobnVsbCAoKSkgKG51bGwgKCkpXG4gICAgOztcblxuICAgIGxldCBmcmVlID0gUG9vbC5mcmVlXG4gICAgbGV0IGtleSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQwXG4gICAgbGV0IHNldF9rZXkgcCB0IGsgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQwIGtcbiAgICBsZXQgYXQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MVxuICAgIGxldCBzZXRfYXQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQxIHhcbiAgICBsZXQgdmFsdWUgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MlxuICAgIGxldCBsZXZlbF9pbmRleCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQzXG4gICAgbGV0IHNldF9sZXZlbF9pbmRleCBwIHQgaSA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDMgaVxuICAgIGxldCBwcmV2IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDRcbiAgICBsZXQgc2V0X3ByZXYgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ0IHhcbiAgICBsZXQgbmV4dCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ1XG4gICAgbGV0IHNldF9uZXh0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NSB4XG4gICAgbGV0IGlzX3ZhbGlkIHAgdCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCBwIHRcbiAgICBsZXQgZXh0ZXJuYWxfaXNfdmFsaWQgPSBpc192YWxpZFxuXG4gICAgbGV0IGludmFyaWFudCBwb29sIGludmFyaWFudF9hIHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgICAgYXNzZXJ0IChpc192YWxpZCBwb29sIHQpO1xuICAgICAgICBpbnZhcmlhbnRfYSAodmFsdWUgcG9vbCB0KTtcbiAgICAgICAgbGV0IG4gPSBuZXh0IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgbiB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAocHJldiBwb29sIG4pKTtcbiAgICAgICAgbGV0IHAgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgcCB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAobmV4dCBwb29sIHApKSlcbiAgICA7O1xuXG4gICAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxuICAgICAgbGV0IGNyZWF0ZSA/KGNhcGFjaXR5ID0gMSkgKCkgPSBQb29sLmNyZWF0ZSBQb29sLlNsb3RzLnQ2IH5jYXBhY2l0eVxuICAgICAgbGV0IGdyb3cgPSBQb29sLmdyb3dcbiAgICAgIGxldCBpc19mdWxsID0gUG9vbC5pc19mdWxsXG4gICAgZW5kXG5cbiAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IHRcblxuICAgIGxldCBvZl9leHRlcm5hbF9leG4gcG9vbCB0ID1cbiAgICAgIGlmIGlzX3ZhbGlkIHBvb2wgdCB0aGVuIHQgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbCBnb3QgaW52YWxpZCBhbGFybVwiXVxuICAgIDs7XG5cbiAgICBsZXQgdW5saW5rIHBvb2wgdCA9XG4gICAgICBzZXRfbmV4dCBwb29sIChwcmV2IHBvb2wgdCkgKG5leHQgcG9vbCB0KTtcbiAgICAgIHNldF9wcmV2IHBvb2wgKG5leHQgcG9vbCB0KSAocHJldiBwb29sIHQpXG4gICAgOztcblxuICAgIGxldCBsaW5rIHBvb2wgcHJldiBuZXh0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgcHJldiBuZXh0O1xuICAgICAgc2V0X3ByZXYgcG9vbCBuZXh0IHByZXZcbiAgICA7O1xuXG4gICAgbGV0IGxpbmtfdG9fc2VsZiBwb29sIHQgPSBsaW5rIHBvb2wgdCB0XG5cbiAgICBsZXQgaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZCA9XG4gICAgICBsZXQgcHJldiA9IHByZXYgcG9vbCB0IGluXG4gICAgICBsaW5rIHBvb2wgcHJldiB0b19hZGQ7XG4gICAgICBsaW5rIHBvb2wgdG9fYWRkIHRcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgcG9vbCBmaXJzdCB+ZiA9XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAoKiBXZSBnZXQgW25leHRdIGJlZm9yZSBjYWxsaW5nIFtmXSBzbyB0aGF0IFtmXSBjYW4gbW9kaWZ5IG9yIFtmcmVlXSBbIWN1cnJlbnRdLiAqKVxuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBmICFjdXJyZW50O1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHBvb2wgZmlyc3QgPVxuICAgICAgbGV0IHIgPSByZWYgMCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgaW5jciByO1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgOztcblxuICAgIGxldCBtYXhfYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWF4X2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5lcG9jaCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtYXhfYWxhcm1fdGltZSA6PSBUaW1lX25zLm1heCAoYXQgcG9vbCAhY3VycmVudCkgIW1heF9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtYXhfYWxhcm1fdGltZVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICgqIFRoZSBba2V5XSBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBmb3IgW21heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0gYmVjYXVzZVxuICAgICAgICAgICBtYXggdGltZSBwZXIgaW50ZXJ2YWwgaXMgbm90IHRoZSBzYW1lIGFzIG1heCB0aW1lIGdsb2JhbGx5LlxuXG4gICAgICAgICAgIFRoaXMgaXMgbm90IHNvIGZvciBbbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSwgc28gdGhpcyBjYW4gcG90ZW50aWFsbHlcbiAgICAgICAgICAgYmUgc2ltcGxpZmllZC5cblxuICAgICAgICAgICBQcm9iYWJseSBhIGJldHRlciBjaGFuZ2Ugd291bGQgYmUgdG8gc2ltcGx5IHRyYW5zZmVyIHRoZSBldmVudHMgdG8gdGhlXG4gICAgICAgICAgIFwiZmlyZWRcIiBjb2xsZWN0aW9uIChhbmQgcmVuYW1lIGl0IHRvIFwiYWJvdXQgdG8gZmlyZVwiKSwgd2hpY2ggaXMgc29ydGVkIGJ5IHRpbWUsXG4gICAgICAgICAgIHNvIGdldHRpbmcgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gaXMgZWZmaWNpZW50LlxuICAgICAgICAqKVxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1pbl9hbGFybV90aW1lIDo9IFRpbWVfbnMubWluIChhdCBwb29sICFjdXJyZW50KSAhbWluX2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1pbl9hbGFybV90aW1lXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIExldmVsID0gc3RydWN0XG4gICAgKCoqIEZvciBnaXZlbiBsZXZlbCwgb25lIGNhbiBicmVhayB0aGUgYml0cyBpbnRvIGEga2V5IGludG8gdGhyZWUgcmVnaW9uczpcblxuICAgICAgICB7dlxuICAgICAgICAgfCBoaWdoZXIgbGV2ZWxzIHwgdGhpcyBsZXZlbCB8IGxvd2VyIGxldmVscyB8XG4gICAgICAgIHZ9XG5cbiAgICAgICAgXCJMb3dlciBsZXZlbHNcIiBpcyBbYml0c19wZXJfc2xvdF0gYml0cyB3aWRlLiAgXCJUaGlzIGxldmVsXCIgaXMgW2JpdHNdIHdpZGUuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogVGhlIFtpbmRleF0gaW4gdGhlIHRpbWluZyB3aGVlbCdzIGFycmF5IG9mIGxldmVscyB3aGVyZSB0aGlzIGxldmVsIGlzLiAqKVxuICAgICAgICBpbmRleCA6IGludFxuICAgICAgOyAoKiBIb3cgbWFueSBbYml0c10gdGhpcyBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IuICopXG4gICAgICAgIGJpdHMgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyAoKiBbc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOnQuYml0c10uICopXG4gICAgICAgIHNsb3RzX21hc2sgOiBTbG90c19tYXNrLnRcbiAgICAgIDsgKCogW2JpdHNfcGVyX3Nsb3RdIGlzIGhvdyBtYW55IGJpdHMgZWFjaCBzbG90IGRpc3Rpbmd1aXNoZXMsIGFuZCBpcyB0aGUgc3VtIG9mIG9mXG4gICAgICAgICAgIHRoZSBbYml0c10gb2YgYWxsIHRoZSBsb3dlciBsZXZlbHMuICopXG4gICAgICAgIGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyBrZXlzX3Blcl9zbG90IDogS2V5LlNwYW4udFxuICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50XG4gICAgICA7ICgqIFtkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPSBrZXlzX3Blcl9zbG90ICogQXJyYXkubGVuZ3RoIHNsb3RzIC0gMV0gKilcbiAgICAgICAgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IDogS2V5LlNwYW4udFxuICAgICAgOyAoKiBbbGVuZ3RoXSBpcyB0aGUgbnVtYmVyIG9mIGVsdHMgY3VycmVudGx5IGluIHRoaXMgbGV2ZWwuICopXG4gICAgICAgIG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7ICgqIEFsbCBlbGVtZW50cyBhdCB0aGlzIGxldmVsIGhhdmUgdGhlaXIgW2tleV0gc2F0aXNmeSBbbWluX2FsbG93ZWRfa2V5IDw9IGtleSA8PVxuICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXldLiAgQWxzbywgW21pbl9hbGxvd2VkX2tleV0gaXMgYSBtdWx0aXBsZSBvZiBba2V5c19wZXJfc2xvdF0uICopXG4gICAgICAgIG11dGFibGUgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyAoKiBbc2xvdHNdIGhvbGRzIHRoZSAocG9zc2libHkgbnVsbCkgcG9pbnRlcnMgdG8gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdHNcbiAgICAgICAgICAgb2YgZWx0cy4gIFtBcnJheS5sZW5ndGggc2xvdHMgPSAxIGxzbCBiaXRzXS4gKilcbiAgICAgICAgc2xvdHMgOiAoJ2EgSW50ZXJuYWxfZWx0LnQgYXJyYXlbQHNleHAub3BhcXVlXSlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2xvdCB0IH5rZXkgPSBLZXkuc2xvdCBrZXkgfmJpdHNfcGVyX3Nsb3Q6dC5iaXRzX3Blcl9zbG90IH5zbG90c19tYXNrOnQuc2xvdHNfbWFza1xuICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gU2xvdHNfbWFzay5uZXh0X3Nsb3QgdC5zbG90c19tYXNrIHNsb3RcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXkgPVxuICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IGtleSB0Lm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuXG4gICAgbGV0IGNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IHQgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICgqIFRoaXMgY29tcHV0YXRpb24gZW5zdXJlcyB0aGF0IFt0XSdzIFttaW5fYWxsb3dlZF9rZXldIGlzIGFzIGxhcmdlIGFzIHBvc3NpYmxlXG4gICAgICAgICBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50IHRoYXQgdGhlcmUgaXMgbm8gaW50ZXItbGV2ZWwgZ2FwLiAqKVxuICAgICAgaWYgS2V5LmVxdWFsIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgIHRoZW4gS2V5Lm1heF92YWx1ZVxuICAgICAgZWxzZSBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXk6KEtleS5zdWNjIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBwb29sIDogJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuICAgIDsgKCogW21pbl9lbHRdIGlzIGVpdGhlciBudWxsIG9yIGFuIGVsZW1lbnQgd2hvc2Uga2V5IGlzIFtlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgbWluX2VsdCA6ICdhIEludGVybmFsX2VsdC50XG4gICAgOyAoKiBBbGwgZWxlbWVudHMgaW4gdGhlIHByaW9yaXR5IHF1ZXVlIGhhdmUgdGhlaXIga2V5IFs+PSBlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgZWx0X2tleV9sb3dlcl9ib3VuZCA6IEtleS50XG4gICAgOyBsZXZlbHMgOiAnYSBMZXZlbC50IGFycmF5XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gRXh0ZXJuYWxfZWx0Lm51bGxcbiAgICBsZXQgYXQgcCB0ID0gSW50ZXJuYWxfZWx0LmF0IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQga2V5IHAgdCA9IEludGVybmFsX2VsdC5rZXkgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCB2YWx1ZSBwIHQgPSBJbnRlcm5hbF9lbHQudmFsdWUgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG4gIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBudW1fbGV2ZWxzIHQgPSBBcnJheS5sZW5ndGggdC5sZXZlbHNcbiAgbGV0IG1pbl9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWluX2FsbG93ZWRfa2V5IHQubGV2ZWxzLigwKVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKG51bV9sZXZlbHMgdCAtIDEpXG5cbiAgbGV0IGludGVybmFsX2l0ZXIgdCB+ZiA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpIHRoZW4gSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmZcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID0gaW50ZXJuYWxfaXRlciB0IH5mOihmIDogXyBFbHQudCAtPiB1bml0IDo+IF8gSW50ZXJuYWxfZWx0LnQgLT4gdW5pdClcblxuICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBrZXkgOiBLZXkudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IGVsdHMgOiAnYSBFbHQudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHByZXR0eSB0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIHsgUHJldHR5Lm1pbl9hbGxvd2VkX2tleSA9IG1pbl9hbGxvd2VkX2tleSB0XG4gICAgOyBtYXhfYWxsb3dlZF9rZXkgPSBtYXhfYWxsb3dlZF9rZXkgdFxuICAgIDsgZWx0cyA9XG4gICAgICAgIChsZXQgciA9IHJlZiBbXSBpblxuICAgICAgICAgaW50ZXJuYWxfaXRlciB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIHJcbiAgICAgICAgICAgOj0geyBQcmV0dHkuRWx0LmtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHRcbiAgICAgICAgICAgICAgOyB2YWx1ZSA9IEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6ICFyKTtcbiAgICAgICAgIExpc3QucmV2ICFyKVxuICAgIH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgICB8IGBJbnRlcm5hbCAtPiBbJXNleHAgKHQgOiBhIHRfaW50ZXJuYWwpXVxuICAgIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG4gIDs7XG5cbiAgbGV0IGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90ID1cbiAgICBsZXQgYml0cyA9IE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICBpZiBOdW1fa2V5X2JpdHMuZXF1YWwgYml0cyBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgdGhlbiBLZXkuU3Bhbi5tYXhfdmFsdWVcbiAgICBlbHNlIEtleS5TcGFuLnByZWQgKEtleS5udW1fa2V5cyBiaXRzKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGxldmVsX2ludmFyaWFudCBsZXZlbCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gbGV2ZWwgWyVzZXhwX29mOiBfIExldmVsLnRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgbGV2ZWwgZiBpblxuICAgICAgICBMZXZlbC5GaWVsZHMuaXRlclxuICAgICAgICAgIH5pbmRleDooY2hlY2sgKGZ1biBpbmRleCAtPiBhc3NlcnQgKGluZGV4ID49IDApKSlcbiAgICAgICAgICB+Yml0czooY2hlY2sgKGZ1biBiaXRzIC0+IGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIGJpdHMgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+c2xvdHNfbWFzazpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IFNsb3RzX21hc2sudF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOmxldmVsLmJpdHMpKSlcbiAgICAgICAgICB+Yml0c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGJpdHNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPj0gKSBiaXRzX3Blcl9zbG90IE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfmtleXNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBrZXlzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5udW1fa2V5cyBsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2s6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICAgIChNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSkpXG4gICAgICAgICAgfmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgICAoY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgfmxldmVsX2JpdHM6bGV2ZWwuYml0c1xuICAgICAgICAgICAgICAgICAgICAgICB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfmxlbmd0aDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgbGVuZ3RoXG4gICAgICAgICAgICAgICAgID0gQXJyYXkuZm9sZCBsZXZlbC5zbG90cyB+aW5pdDowIH5mOihmdW4gbiBlbHQgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgICAgICAgICAgICAgICAgICB0aGVuIG5cbiAgICAgICAgICAgICAgICAgICBlbHNlIG4gKyBJbnRlcm5hbF9lbHQubGVuZ3RoIHBvb2wgZWx0KSkpKVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lnplcm8pO1xuICAgICAgICAgICAgICAgaWYgS2V5LiggPCApIG1pbl9hbGxvd2VkX2tleSBLZXkubWF4X3ZhbHVlXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEtleS5yZW0gbWluX2FsbG93ZWRfa2V5IGxldmVsLmtleXNfcGVyX3Nsb3QpXG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpLZXkuU3Bhbi56ZXJvKSlcbiAgICAgICAgICB+bWF4X2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWF4X2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkudF1cbiAgICAgICAgICAgICAgICAgbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKEtleS5hZGRfY2xhbXBfdG9fbWF4XG4gICAgICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KSkpXG4gICAgICAgICAgfnNsb3RzOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gc2xvdHMgLT5cbiAgICAgICAgICAgICAgIEFycmF5Lml0ZXIgc2xvdHMgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pbnZhcmlhbnQgcG9vbCBpbnZhcmlhbnRfYSBlbHQ7XG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgICAgICAgIEtleS4oID49IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgICAgICAgS2V5LiggPD0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1heF9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICAgICAgICBLZXkuKCA+PSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmxldmVsX2luZGV4IHBvb2wgZWx0ID0gbGV2ZWwuaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgaW52YXJpYW50X2EgKEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdCkpKSkpKSlcbiAgICBpblxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0X2ludGVybmFsXSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAobWluX2FsbG93ZWRfa2V5IHQpIEtleS56ZXJvKTtcbiAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAobWF4X2FsbG93ZWRfa2V5IHQpIChtaW5fYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmxlbmd0aDooY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPj0gMCkpKVxuICAgICAgICB+cG9vbDooY2hlY2sgKEludGVybmFsX2VsdC5Qb29sLmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgICB+bWluX2VsdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfIC0+XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRfKVxuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQuaXNfdmFsaWQgdC5wb29sIGVsdF8pO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuZXF1YWwgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCBlbHRfKSkpKSlcbiAgICAgICAgfmVsdF9rZXlfbG93ZXJfYm91bmQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0X2tleV9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSBlbHRfa2V5X2xvd2VyX2JvdW5kIChtaW5fYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPD0gKSBlbHRfa2V5X2xvd2VyX2JvdW5kIChtYXhfYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIEtleS5lcXVhbCBlbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCB0Lm1pbl9lbHQpKSkpXG4gICAgICAgIH5sZXZlbHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGV2ZWxzIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChudW1fbGV2ZWxzIHQgPiAwKTtcbiAgICAgICAgICAgICBBcnJheS5pdGVyaSBsZXZlbHMgfmY6KGZ1biBsZXZlbF9pbmRleCBsZXZlbCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChsZXZlbF9pbmRleCA9IExldmVsLmluZGV4IGxldmVsKTtcbiAgICAgICAgICAgICAgIGxldmVsX2ludmFyaWFudCBsZXZlbDtcbiAgICAgICAgICAgICAgIGlmIGxldmVsX2luZGV4ID4gMFxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwcmV2X2xldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCAtIDEpIGluXG4gICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgTCA9IExldmVsIGluXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEwua2V5c19wZXJfc2xvdCBsZXZlbClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkuU3Bhbi5zdWNjIHByZXZfbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgIChMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTpwcmV2X2xldmVsLm1heF9hbGxvd2VkX2tleSkpKSkpKVxuICA7O1xuXG4gICgqKiBbbWluX2VsdF9dIHJldHVybnMgW251bGxdIGlmIGl0IGNhbid0IGZpbmQgdGhlIGRlc2lyZWQgZWxlbWVudC4gIFdlIHdyYXAgaXQgdXBcbiAgICAgIGFmdGVyd2FyZHMgdG8gcmV0dXJuIGFuIFtvcHRpb25dLiAqKVxuICBsZXQgbWluX2VsdF8gdCA9XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgIHRoZW4gdC5taW5fZWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA9IHJlZiAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpIGluXG4gICAgICBsZXQgbWluX2tleV9hbHJlYWR5X2ZvdW5kID0gcmVmIEtleS5tYXhfdmFsdWUgaW5cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBLZXkuKCA+ICkgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBhbnkgbW9yZSBsZXZlbHMuICBRdWl0IHRoZSBsb29wLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHNcbiAgICAgICAgZWxzZSBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICAgIHRoZW4gaW5jciBsZXZlbF9pbmRleFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMb29rIGluIFtsZXZlbF0uICopXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBsZXQgc2xvdF9taW5fa2V5ID1cbiAgICAgICAgICAgIHJlZlxuICAgICAgICAgICAgICAoTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgfmtleTooS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IXNsb3RfbWluX2tleSkgaW5cbiAgICAgICAgICAoKiBGaW5kIHRoZSBmaXJzdCBub25lbXB0eSBzbG90IHdpdGggYSBzbWFsbCBlbm91Z2ggW3Nsb3RfbWluX2tleV0uICopXG4gICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5pc19udWxsIHNsb3RzLighc2xvdClcbiAgICAgICAgICAgICYmIEtleS4oIDwgKSAhc2xvdF9taW5fa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICBkb1xuICAgICAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgICAgICBzbG90X21pbl9rZXkgOj0gS2V5LmFkZCAhc2xvdF9taW5fa2V5IGxldmVsLmtleXNfcGVyX3Nsb3RcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVmlzaXQgYWxsIG9mIHRoZSBlbHRzIGluIHRoaXMgc2xvdCBhbmQgZmluZCBvbmUgd2l0aCBtaW5pbXVtIGtleS4gKilcbiAgICAgICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgICAgIGxldCBjdXJyZW50X2tleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICBpZiBLZXkuKCA8PSApIGN1cnJlbnRfa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWluX2VsdF9hbHJlYWR5X2ZvdW5kIDo9ICFjdXJyZW50O1xuICAgICAgICAgICAgICAgIG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA6PSBjdXJyZW50X2tleSk7XG4gICAgICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICAoKiBJZiBbIWxldmVsX2luZGV4ID0gMF0gdGhlbiBhbGwgZWx0cyBpbiB0aGlzIHNsb3QgaGF2ZSB0aGUgc2FtZSBba2V5XSxcbiAgICAgICAgICAgICAgICAgaS5lLiBbIXNsb3RfbWluX2tleV0uICBTbywgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnkgZWxlbWVudHMgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgW2ZpcnN0XS4gIFRoaXMgaXMgYSB1c2VmdWwgc2hvcnQgY3V0IGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZXJlIGFyZVxuICAgICAgICAgICAgICAgICBtdWx0aXBsZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBtaW4gc2xvdCBpbiBsZXZlbCAwLiAqKVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgfHwgIWxldmVsX2luZGV4ID0gMFxuICAgICAgICAgICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICAgICAgICAgIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAoKiBGaW5pc2hlZCBsb29raW5nIGluIFtsZXZlbF0uICBNb3ZlIHVwIHRvIHRoZSBuZXh0IGxldmVsLiAqKVxuICAgICAgICAgIGluY3IgbGV2ZWxfaW5kZXgpXG4gICAgICBkb25lO1xuICAgICAgdC5taW5fZWx0IDwtICFtaW5fZWx0X2FscmVhZHlfZm91bmQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gIW1pbl9rZXlfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQubWluX2VsdClcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgIChrZXkgOiBLZXkudClcbiAgICAgICAgICAobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICAobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+cHJpb3JpdHlfcXVldWU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWwgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBsZXZlbCBib3VuZHNcIiAoa2V5IDogS2V5LnQpIChsZXZlbCA6IF8gTGV2ZWwudCldXG4gIDs7XG5cbiAgbGV0IGFkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgJiYgS2V5LiggPD0gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXk7XG4gICAgKCogRmluZCB0aGUgbG93ZXN0IGxldmVsIHRoYXQgd2lsbCBob2xkIFtlbHRdLiAqKVxuICAgIGxldCBsZXZlbF9pbmRleCA9XG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgd2hpbGUgS2V5LiggPiApIGtleSAoTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpKSBkb1xuICAgICAgICBpbmNyIGxldmVsX2luZGV4XG4gICAgICBkb25lO1xuICAgICAgIWxldmVsX2luZGV4XG4gICAgaW5cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgJiYgS2V5LiggPD0gKSBrZXkgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWw7XG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCArIDE7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9sZXZlbF9pbmRleCBwb29sIGVsdCBsZXZlbF9pbmRleDtcbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICB0aGVuIEludGVybmFsX2VsdC5pbnNlcnRfYXRfZW5kIHBvb2wgZmlyc3QgfnRvX2FkZDplbHRcbiAgICBlbHNlIChcbiAgICAgIHNsb3RzLihzbG90KSA8LSBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQubGlua190b19zZWxmIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0IGluXG4gICAgaWYgS2V5LiggPCApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICB0aGVuIChcbiAgICAgIHQubWluX2VsdCA8LSBlbHQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0ga2V5KTtcbiAgICBhZGRfZWx0IHQgZWx0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuYWRkX2F0X2ludGVydmFsX251bSBnb3QgaW52YWxpZCBpbnRlcnZhbCBudW1cIlxuICAgICAgICAgIH5pbnRlcnZhbF9udW06KGtleSA6IEtleS50KVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudCldXG4gIDs7XG5cbiAgbGV0IGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5ID1cbiAgICBpZiBLZXkuKCA8ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgfHwgS2V5LiggPiApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXlcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkIHQgfmtleSB+YXQgdmFsdWUgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGlmIEludGVybmFsX2VsdC5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIEludGVybmFsX2VsdC5Qb29sLmdyb3cgdC5wb29sO1xuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQuY3JlYXRlIHQucG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4OigtMSkgaW5cbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0O1xuICAgIGVsdFxuICA7O1xuXG4gICgqKiBbcmVtb3ZlX29yX3JlX2FkZF9lbHRzXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIFtmaXJzdF0uICBJZiB0aGUgZWxlbWVudCdzIGtleSBpcyBbPj0gdF9taW5fYWxsb3dlZF9rZXldLCB0aGVuIGl0IGFkZHMgdGhlIGVsZW1lbnRcbiAgICAgIGJhY2sgYXQgYSBsb3dlciBsZXZlbC4gIElmIG5vdCwgdGhlbiBpdCBjYWxscyBbaGFuZGxlX3JlbW92ZWRdIGFuZCBbZnJlZV1zIHRoZVxuICAgICAgZWxlbWVudC4gKilcbiAgbGV0IHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IChsZXZlbCA6IF8gTGV2ZWwudCkgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICgqIFdlIGV4dHJhY3QgW25leHRdIGZyb20gW2N1cnJlbnRdIGZpcnN0LCBiZWNhdXNlIHdlIHdpbGwgbW9kaWZ5IG9yIFtmcmVlXVxuICAgICAgICAgW2N1cnJlbnRdIGJlZm9yZSBjb250aW51aW5nIHRoZSBsb29wLiAqKVxuICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICAgIGlmIEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCkgdF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIHRoZW4gYWRkX2VsdCB0ICFjdXJyZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgICBoYW5kbGVfcmVtb3ZlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsICFjdXJyZW50KTtcbiAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCAhY3VycmVudCk7XG4gICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgIGRvbmVcbiAgOztcblxuICAoKiogW2luY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBbbGV2ZWxdIHRvIGFzXG4gICAgICBsYXJnZSBhIHZhbHVlIGFzIHBvc3NpYmxlLCBidXQgbm8gbW9yZSB0aGFuIFttYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XS5cbiAgICAgIFt0X21pbl9hbGxvd2VkX2tleV0gaXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgZm9yIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsLiAgQXNcbiAgICAgIGVsZW1lbnRzIGFyZSBlbmNvdW50ZXJlZCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgaWYgdGhlaXIga2V5IGlzXG4gICAgICBzbWFsbGVyIHRoYW4gW3RfbWluX2FsbG93ZWRfa2V5XSwgb3IgYWRkZWQgYXQgYSBsb3dlciBsZXZlbCBpZiBub3QuICopXG4gIGxldCBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdFxuICAgICAgICAobGV2ZWwgOiBfIExldmVsLnQpXG4gICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleSBsZXZlbCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICBpblxuICAgICgqIFdlIHJlcXVpcmUgdGhhdCBbbW9kIGxldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90ID0gMF0uICBTbyxcbiAgICAgICB3ZSBzdGFydCBbbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSB3aGVyZSB0aGF0IGlzIHRydWUsIGFuZCB0aGVuIGluY3JlYXNlIGl0IGJ5XG4gICAgICAgW2tleXNfcGVyX3Nsb3RdIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLiAqKVxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgbGV2ZWxcbiAgICAgICAgfmtleTpcbiAgICAgICAgICAoS2V5Lm1pblxuICAgICAgICAgICAgIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgKEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgaW5cbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID0gcmVmIGxldmVsX21pbl9hbGxvd2VkX2tleSBpblxuICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IWxldmVsX21pbl9hbGxvd2VkX2tleSkgaW5cbiAgICBsZXQga2V5c19wZXJfc2xvdCA9IGxldmVsLmtleXNfcGVyX3Nsb3QgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIHdoaWxlIEtleS4oIDwgKSAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGRvXG4gICAgICBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICB0aGVuXG4gICAgICAgICgqIElmIG5vIGVsZW1lbnRzIHJlbWFpbiBhdCB0aGlzIGxldmVsLCB3ZSBjYW4ganVzdCBzZXQgW21pbl9hbGxvd2VkX2tleV0gdG8gdGhlXG4gICAgICAgICAgIGRlc2lyZWQgdmFsdWUuICopXG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc2xvdHMuKCFzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgICByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCBsZXZlbCBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkKTtcbiAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBLZXkuYWRkX2NsYW1wX3RvX21heCAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGtleXNfcGVyX3Nsb3QpXG4gICAgZG9uZTtcbiAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkgPC0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXk7XG4gICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5XG4gICAgPC0gS2V5LmFkZF9jbGFtcF90b19tYXggZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgbGV0IGluY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkIDogSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50ID1cbiAgICBpZiBLZXkuKCA8PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICBlbHNlIChcbiAgICAgICgqIFdlIGluY3JlYXNlIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBsZXZlbHMgaW4gb3JkZXIgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50XG4gICAgICAgICB0aGF0IHRoZXkgaGF2ZSBhcyBsYXJnZSBhcyBwb3NzaWJsZSBhIFttaW5fYWxsb3dlZF9rZXldLCB3aGlsZSBsZWF2aW5nIG5vIGdhcHNcbiAgICAgICAgIGluIGtleXMuICopXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0Lk1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIGluXG4gICAgICBsZXQgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPSByZWYgKEtleS5wcmVkIGtleSkgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlID0gbGV2ZWwubWluX2FsbG93ZWRfa2V5IGluXG4gICAgICAgIGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgIHRcbiAgICAgICAgICBsZXZlbFxuICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTohcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXk6a2V5XG4gICAgICAgICAgfmhhbmRsZV9yZW1vdmVkO1xuICAgICAgICBpZiBLZXkuZXF1YWwgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgbWluX2FsbG93ZWRfa2V5X2JlZm9yZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBUaGlzIGxldmVsIGRpZCBub3Qgc2hpZnQuICBEb24ndCBzaGlmdCBhbnkgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzO1xuICAgICAgICAgIHJlc3VsdCA6PSBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExldmVsIFtsZXZlbF9pbmRleF0gc2hpZnRlZC4gIENvbnNpZGVyIHNoaWZ0aW5nIGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gIWxldmVsX2luZGV4ICsgMTtcbiAgICAgICAgICBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA6PSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgbGV2ZWwpXG4gICAgICBkb25lO1xuICAgICAgaWYgS2V5LiggPiApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBXZSBoYXZlIHJlbW92ZWQgW3QubWluX2VsdF0gb3IgaXQgd2FzIGFscmVhZHkgbnVsbCwgc28ganVzdCBzZXQgaXQgdG9cbiAgICAgICAgICAgbnVsbC4gKilcbiAgICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gbWluX2FsbG93ZWRfa2V5IHQpO1xuICAgICAgIXJlc3VsdClcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/bGV2ZWxfYml0cyAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgbWF0Y2ggbGV2ZWxfYml0cyB3aXRoXG4gICAgICB8IFNvbWUgbCAtPiBsXG4gICAgICB8IE5vbmUgLT4gTGV2ZWxfYml0cy5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgXywgXywgbGV2ZWxzID1cbiAgICAgIExpc3QuZm9sZGlcbiAgICAgICAgbGV2ZWxfYml0c1xuICAgICAgICB+aW5pdDooTnVtX2tleV9iaXRzLnplcm8sIEtleS56ZXJvLCBbXSlcbiAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgKGJpdHNfcGVyX3Nsb3QsIG1heF9sZXZlbF9taW5fYWxsb3dlZF9rZXksIGxldmVscylcbiAgICAgICAgICAgICAobGV2ZWxfYml0cyA6IE51bV9rZXlfYml0cy50KVxuICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICBsZXQga2V5c19wZXJfc2xvdCA9IEtleS5udW1fa2V5cyBiaXRzX3Blcl9zbG90IGluXG4gICAgICAgICAgICAgICBsZXQgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICAgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9XG4gICAgICAgICAgICAgICAgIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlIH5iaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IG1pbl9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICAgS2V5LmFkZF9jbGFtcF90b19tYXggbWluX2FsbG93ZWRfa2V5IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBsZXZlbCA9XG4gICAgICAgICAgICAgICAgIHsgTGV2ZWwuaW5kZXhcbiAgICAgICAgICAgICAgICAgOyBiaXRzID0gbGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgICA7IHNsb3RzX21hc2sgPSBTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgICA7IGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgOyBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIDsgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICA7IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IGxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgICAgOyBtaW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgOyBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgOyBzbG90cyA9XG4gICAgICAgICAgICAgICAgICAgICBBcnJheS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgfmxlbjooSW50NjMudG9faW50X2V4biAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykpXG4gICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgLCBLZXkuc3VjY19jbGFtcF90b19tYXggbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAsIGxldmVsIDo6IGxldmVscyApKVxuICAgIGluXG4gICAgeyBsZW5ndGggPSAwXG4gICAgOyBwb29sID0gSW50ZXJuYWxfZWx0LlBvb2wuY3JlYXRlID9jYXBhY2l0eSAoKVxuICAgIDsgbWluX2VsdCA9IEludGVybmFsX2VsdC5udWxsICgpXG4gICAgOyBlbHRfa2V5X2xvd2VyX2JvdW5kID0gS2V5Lnplcm9cbiAgICA7IGxldmVscyA9IEFycmF5Lm9mX2xpc3RfcmV2IGxldmVsc1xuICAgIH1cbiAgOztcblxuICBsZXQgbWVtIHQgZWx0ID0gSW50ZXJuYWxfZWx0LmV4dGVybmFsX2lzX3ZhbGlkIHQucG9vbCBlbHRcblxuICBsZXQgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGlmIEludGVybmFsX2VsdC5lcXVhbCBlbHQgdC5taW5fZWx0XG4gICAgdGhlblxuICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgKCogV2Uga2VlcCBbdC5lbHRfbG93ZXJfYm91bmRdIHNpbmNlIGl0IGlzIHZhbGlkIGV2ZW4gdGhvdWdoIFt0Lm1pbl9lbHRdIGlzIGJlaW5nXG4gICAgICAgcmVtb3ZlZC4gKik7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQpIGluXG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBwaHlzX2VxdWFsIGVsdCAoSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQpXG4gICAgdGhlbiAoKiBbZWx0XSBpcyB0aGUgb25seSBlbGVtZW50IGluIHRoZSBzbG90ICopXG4gICAgICBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgZWx0IGZpcnN0IHRoZW4gc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LnVubGluayBwb29sIGVsdClcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0XG4gIDs7XG5cbiAgbGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkIH5rZXkgfm5vdyA9XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKDApIGluXG4gICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZpcnN0ID0gcmVmIHNsb3RzLihzbG90KSBpblxuICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCAhZmlyc3QpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgIWZpcnN0IGluXG4gICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgIGxldCBlbHQgPSAhY3VycmVudCBpblxuICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgIWZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHQ7XG4gICAgICAgICAgaWYgVGltZV9ucy4oIDw9ICkgKEludGVybmFsX2VsdC5hdCBwb29sIGVsdCkgbm93XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBoYW5kbGVfZmlyZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCBlbHQpO1xuICAgICAgICAgICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQ7XG4gICAgICAgICAgICAoKiBXZSByZWNvbXB1dGUgW2ZpcnN0XSBiZWNhdXNlIFtpbnRlcm5hbF9yZW1vdmVdIG1heSBoYXZlIGNoYW5nZWQgaXQuICopXG4gICAgICAgICAgICBmaXJzdCA6PSBzbG90cy4oc2xvdCkpXG4gICAgICAgIGRvbmUpKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBlbHQgfmtleSB+YXQgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9rZXkgcG9vbCBlbHQga2V5O1xuICAgIEludGVybmFsX2VsdC5zZXRfYXQgcG9vbCBlbHQgYXQ7XG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdFxuICA7O1xuXG4gIGxldCBjbGVhciB0ID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmcmVlX2VsdCBlbHQgPSBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV2ZWwubGVuZ3RoIDwtIDA7XG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6ZnJlZV9lbHQ7XG4gICAgICAgICAgICAgIHNsb3RzLihzbG90X2luZGV4KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxfZWx0ID0gUHJpb3JpdHlfcXVldWUuSW50ZXJuYWxfZWx0XG5tb2R1bGUgS2V5ID0gUHJpb3JpdHlfcXVldWUuS2V5XG5tb2R1bGUgSW50ZXJ2YWxfbnVtID0gS2V5XG5cbmxldCBtaW5faW50ZXJ2YWxfbnVtID0gSW50ZXJ2YWxfbnVtLnplcm9cblxuKCogQWxsIHRpbWUgZnJvbSB0aGUgZXBvY2ggb253YXJkcyBpcyBicm9rZW4gaW50byBoYWxmLW9wZW4gaW50ZXJ2YWxzIG9mIHNpemVcbiAgIFtDb25maWcuYWxhcm1fcHJlY2lzaW9uIGNvbmZpZ10uICBUaGUgaW50ZXJ2YWxzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCB6ZXJvLCBhbmQgYVxuICAgdGltZSdzIGludGVydmFsIG51bWJlciBzZXJ2ZXMgYXMgaXRzIGtleSBpbiBbcHJpb3JpdHlfcXVldWVdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBjb25maWcgOiBDb25maWcudFxuICA7IHN0YXJ0IDogVGltZV9ucy50XG4gIDsgKCogW21heF9pbnRlcnZhbF9udW1dIGlzIHRoZSBpbnRlcnZhbCBudW1iZXIgb2YgW21heF90aW1lXS4gKilcbiAgICBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgOyBtdXRhYmxlIG5vdyA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudFxuICA7IHByaW9yaXR5X3F1ZXVlIDogJ2EgUHJpb3JpdHlfcXVldWUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdGltaW5nX3doZWVsID0gJ2EgdFxudHlwZSAnYSB0X25vdyA9ICdhIHRcblxubGV0IHNleHBfb2ZfdF9ub3cgXyB0ID0gWyVzZXhwICh0Lm5vdyA6IFRpbWVfbnMudCldXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBDb25maWcuYWxhcm1fcHJlY2lzaW9uIHQuY29uZmlnXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmlvcml0eV9xdWV1ZS5FbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBudWxsID0gUHJpb3JpdHlfcXVldWUuRWx0Lm51bGxcbiAgbGV0IGF0IHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQuYXQgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgdmFsdWUgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC52YWx1ZSB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCBpbnRlcnZhbF9udW0gdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5rZXkgdHcucHJpb3JpdHlfcXVldWUgdFxuZW5kXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBpdGVyIHQgfmYgPSBQcmlvcml0eV9xdWV1ZS5pdGVyIHQucHJpb3JpdHlfcXVldWUgfmZcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBhdCA6IFRpbWVfbnMudFxuICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB0IGFsYXJtID0geyBhdCA9IEFsYXJtLmF0IHQgYWxhcm07IHZhbHVlID0gQWxhcm0udmFsdWUgdCBhbGFybSB9XG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBUaW1lX25zLmNvbXBhcmUgKGF0IHQxKSAoYXQgdDIpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBjb25maWcgOiBDb25maWcudFxuICAgIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICAgIDsgbm93IDogVGltZV9ucy50XG4gICAgOyBhbGFybXMgOiAnYSBBbGFybS50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IHByZXR0eVxuICAgICAgKHsgY29uZmlnXG4gICAgICAgOyBzdGFydFxuICAgICAgIDsgbWF4X2ludGVydmFsX251bVxuICAgICAgIDsgbm93XG4gICAgICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID0gX1xuICAgICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IF9cbiAgICAgICA7IHByaW9yaXR5X3F1ZXVlID0gX1xuICAgICAgIH0gYXMgdClcbiAgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IHIgOj0gUHJldHR5LkFsYXJtLmNyZWF0ZSB0IGEgOjogIXIpO1xuICBsZXQgYWxhcm1zID0gTGlzdC5zb3J0ICFyIH5jb21wYXJlOlByZXR0eS5BbGFybS5jb21wYXJlIGluXG4gIHsgUHJldHR5LmNvbmZpZzsgc3RhcnQ7IG1heF9pbnRlcnZhbF9udW07IG5vdzsgYWxhcm1zIH1cbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgfCBgSW50ZXJuYWwgLT4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2ZfYSB0XG4gIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBQcmlvcml0eV9xdWV1ZS5sZW5ndGggdC5wcmlvcml0eV9xdWV1ZVxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdpdGggYWxsIGFsYXJtcyBpbiBtYXggaW50ZXJ2YWxcIlxuICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldCBwb29sIHQgPSBQcmlvcml0eV9xdWV1ZS5wb29sIHQucHJpb3JpdHlfcXVldWVcblxubGV0IGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uID1cbiAgSW50ZXJ2YWxfbnVtLm9mX2ludDYzIChBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtIGFsYXJtX3ByZWNpc2lvbiB0aW1lKVxuOztcblxubGV0IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lID1cbiAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb246dC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgdGltZSBtaW5fdGltZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bSBnb3QgdGltZSB0b28gZmFyIGluIHRoZSBwYXN0XCIgKHRpbWUgOiBUaW1lX25zLnQpXTtcbiAgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWVcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtID1cbiAgQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bV9zdGFydFxuICAgIHQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIChpbnRlcnZhbF9udW0gfD4gSW50ZXJ2YWxfbnVtLnRvX2ludDYzKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBzbWFsbCBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgIChtaW5faW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIGxhcmdlIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKHQubWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICBpZiBJbnRlcnZhbF9udW0uKCA8ICkgaW50ZXJ2YWxfbnVtIG1pbl9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW07XG4gIGlmIEludGVydmFsX251bS4oID4gKSBpbnRlcnZhbF9udW0gdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW07XG4gIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW1cbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5ID1cbiAgKCogW2ludGVydmFsX251bV9zdGFydCB0IGtleV0gaXMgdGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgdGltZSBpbnRlcnZhbFxuICAgICBob2xkaW5nIHRoZSBmaXJzdCBhbGFybSBpbiBbdF0uICBBZHZhbmNpbmcgdG8gdGhhdCB3b3VsZCBub3QgYmUgZW5vdWdoLCBzaW5jZSB0aGVcbiAgICAgYWxhcm1zIGluIHRoYXQgaW50ZXJ2YWwgZG9uJ3QgZmlyZSB1bnRpbCB0aGUgY2xvY2sgaXMgYWR2YW5jZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZVxuICAgICBuZXh0IGludGVydmFsLiAgU28sIHdlIHVzZSBbc3VjYyBrZXldIHRvIGFkdmFuY2UgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgIGludGVydmFsLiAqKVxuICBpbnRlcnZhbF9udW1fc3RhcnQgdCAoS2V5LnN1Y2Mga2V5KVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gICAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkpKVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdDtcbiAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQ7XG4gIG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXlcbjs7XG5cbmxldCBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9XG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgPSBQcmlvcml0eV9xdWV1ZS5tYXhfYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcnZhbF9udW0uKCA+PSApIG1heF9hbGxvd2VkX2tleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiBtYXhfdGltZVxuICBlbHNlXG4gICAgVGltZV9ucy5hZGRcbiAgICAgIChpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgbWF4X2FsbG93ZWRfa2V5KVxuICAgICAgKFRpbWVfbnMuU3Bhbi4oIC0gKSAoYWxhcm1fcHJlY2lzaW9uIHQpIFRpbWVfbnMuU3Bhbi5uYW5vc2Vjb25kKVxuOztcblxubGV0IG5vd19pbnRlcnZhbF9udW0gdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtID0gbm93X2ludGVydmFsX251bVxubGV0IG1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSB0ID0gaW50ZXJ2YWxfbnVtIHQgKG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbmxldCBpbnRlcnZhbF9zdGFydCB0IHRpbWUgPSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgKGludGVydmFsX251bSB0IHRpbWUpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb25maWc6KGNoZWNrIENvbmZpZy5pbnZhcmlhbnQpXG4gICAgICB+c3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIHN0YXJ0IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgc3RhcnQgbWluX3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIHN0YXJ0IG1heF90aW1lKSkpXG4gICAgICB+bWF4X2ludGVydmFsX251bTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2ludGVydmFsX251bSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgbWF4X3RpbWUpO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKGludGVydmFsX251bV9zdGFydCB0IG1heF9pbnRlcnZhbF9udW0pKSkpXG4gICAgICB+bm93OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3cgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBub3cgdC5zdGFydCk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgbm93IG1heF90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCB0Lm5vdylcbiAgICAgICAgICAgICAgIChQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSkpKSlcbiAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgICAgICAgICAgfmV4cGVjdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKG5vd19pbnRlcnZhbF9udW0gdCkpKSlcbiAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9hbGFybV90aW1lIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBtYXhfYWxsb3dlZF9hbGFybV90aW1lXG4gICAgICAgICAgICAgfmV4cGVjdDooY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKSlcbiAgICAgIH5wcmlvcml0eV9xdWV1ZTooY2hlY2sgKFByaW9yaXR5X3F1ZXVlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpO1xuICAgIGl0ZXIgdCB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAoQWxhcm0uaW50ZXJ2YWxfbnVtIHQgYWxhcm0pXG4gICAgICAgICAgKGludGVydmFsX251bSB0IChBbGFybS5hdCB0IGFsYXJtKSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID49IClcbiAgICAgICAgICAoaW50ZXJ2YWxfc3RhcnQgdCAoQWxhcm0uYXQgdCBhbGFybSkpXG4gICAgICAgICAgKGludGVydmFsX3N0YXJ0IHQgKG5vdyB0KSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID4gKSAoQWxhcm0uYXQgdCBhbGFybSkgKFRpbWVfbnMuc3ViIChub3cgdCkgKGFsYXJtX3ByZWNpc2lvbiB0KSkpKSlcbjs7XG5cbmxldCBkZWJ1ZyA9IGZhbHNlXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+aGFuZGxlX2ZpcmVkID1cbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyB0KVxuICB0aGVuIChcbiAgICB0Lm5vdyA8LSB0b187XG4gICAgbGV0IGtleSA9IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0b18gaW5cbiAgICB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgPC0gaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGtleTtcbiAgICBtYXRjaFxuICAgICAgUHJpb3JpdHlfcXVldWUuaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICAgfmtleVxuICAgICAgICB+aGFuZGxlX3JlbW92ZWQ6aGFuZGxlX2ZpcmVkXG4gICAgd2l0aFxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlIC0+XG4gICAgICBpZiBkZWJ1Z1xuICAgICAgdGhlblxuICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA9ICkgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIChjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCkpXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZCAtPlxuICAgICAgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDwtIGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KVxuOztcblxubGV0IGNyZWF0ZSB+Y29uZmlnIH5zdGFydCA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgc3RhcnQgVGltZV9ucy5lcG9jaFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiVGltaW5nX3doZWVsLmNyZWF0ZSBnb3Qgc3RhcnQgYmVmb3JlIHRoZSBlcG9jaFwiIChzdGFydCA6IFRpbWVfbnMudCldO1xuICBsZXQgdCA9XG4gICAgeyBjb25maWdcbiAgICA7IHN0YXJ0XG4gICAgOyBtYXhfaW50ZXJ2YWxfbnVtID1cbiAgICAgICAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lOm1heF90aW1lIH5hbGFybV9wcmVjaXNpb246Y29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIDsgbm93ID0gVGltZV9ucy5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID1cbiAgICAgICAgVGltZV9ucy5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBtYXhfYWxsb3dlZF9hbGFybV90aW1lID0gbWF4X3RpbWUgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgcHJpb3JpdHlfcXVldWUgPVxuICAgICAgICBQcmlvcml0eV9xdWV1ZS5jcmVhdGUgP2NhcGFjaXR5OmNvbmZpZy5jYXBhY2l0eSB+bGV2ZWxfYml0czpjb25maWcubGV2ZWxfYml0cyAoKVxuICAgIH1cbiAgaW5cbiAgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDwtIGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0O1xuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXzpzdGFydCB+aGFuZGxlX2ZpcmVkOihmdW4gXyAtPiBhc3NlcnQgZmFsc2UpO1xuICB0XG47O1xuXG5sZXQgYWRkX2F0X2ludGVydmFsX251bSB0IH5hdCB2YWx1ZSA9XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTphdFxuICAgICAgIH5hdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgYXQpXG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsIGNhbm5vdCBzY2hlZHVsZSBhbGFybSB0aGF0IGZhciBpbiB0aGUgZnV0dXJlXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bWF4X2FsbG93ZWRfYWxhcm1fdGltZToodC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDogVGltZV9ucy50KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsIGNhbm5vdCBzY2hlZHVsZSBhbGFybSBiZWZvcmUgc3RhcnQgb2YgY3VycmVudCBpbnRlcnZhbFwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm5vd19pbnRlcnZhbF9udW1fc3RhcnQ6KHQubm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudCldXG47O1xuXG5sZXQgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgYXQgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHRoZW4gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0O1xuICBpZiBUaW1lX25zLiggPCApIGF0IHQubm93X2ludGVydmFsX251bV9zdGFydFxuICB0aGVuIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXRcbjs7XG5cbmxldCBhZGQgdCB+YXQgdmFsdWUgPVxuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdClcbiAgICAgICB+YXRcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldCByZW1vdmUgdCBhbGFybSA9IFByaW9yaXR5X3F1ZXVlLnJlbW92ZSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtXG5sZXQgY2xlYXIgdCA9IFByaW9yaXR5X3F1ZXVlLmNsZWFyIHQucHJpb3JpdHlfcXVldWVcbmxldCBtZW0gdCBhbGFybSA9IFByaW9yaXR5X3F1ZXVlLm1lbSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtXG5cbmxldCByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXkgfmF0ID1cbiAgaWYgbm90IChtZW0gdCBhbGFybSlcbiAgdGhlbiBmYWlsd2l0aCBcIlRpbWluZ193aGVlbCBjYW5ub3QgcmVzY2hlZHVsZSBhbGFybSBub3QgaW4gdGltaW5nIHdoZWVsXCI7XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIFByaW9yaXR5X3F1ZXVlLmNoYW5nZSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtIH5rZXkgfmF0XG47O1xuXG5sZXQgcmVzY2hlZHVsZSB0IGFsYXJtIH5hdCA9IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KSB+YXRcblxubGV0IHJlc2NoZWR1bGVfYXRfaW50ZXJ2YWxfbnVtIHQgYWxhcm0gfmF0ID1cbiAgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OmF0IH5hdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgYXQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bSB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5taW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biBvZiBlbXB0eSB0aW1pbmdfd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuICBlbHNlIEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0XG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdCA9XG4gIGxldCBwb29sID0gcG9vbCB0IGluXG4gIEludGVybmFsX2VsdC5tYXhfYWxhcm1fdGltZSBwb29sIGVsdCB+d2l0aF9rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdCA9XG4gIGxldCBwb29sID0gcG9vbCB0IGluXG4gIEludGVybmFsX2VsdC5taW5fYWxhcm1fdGltZSBwb29sIGVsdCB+d2l0aF9rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5oYW5kbGVfZmlyZWQgPVxuICBQcmlvcml0eV9xdWV1ZS5maXJlX3Bhc3RfYWxhcm1zXG4gICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgIH5oYW5kbGVfZmlyZWRcbiAgICB+a2V5Oihub3dfaW50ZXJ2YWxfbnVtIHQpXG4gICAgfm5vdzp0Lm5vd1xuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE51bV9rZXlfYml0cyA9IE51bV9rZXlfYml0c1xuXG4gIGxldCBpbnRlcnZhbF9udW1faW50ZXJuYWwgPSBpbnRlcnZhbF9udW1faW50ZXJuYWxcbiAgbGV0IG1heF90aW1lID0gbWF4X3RpbWVcbmVuZFxuIiwibW9kdWxlIElucmlhX3N5cyA9IFN5c1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5vcGVuIFBvbHlcblxubGV0IHNlYyA9IFRpbWVfbnMuU3Bhbi5vZl9zZWNcbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5cbm1vZHVsZSBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUaW1lX25zLlNwYW5cblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IFRpbWVfbnMuU3Bhbi52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUaW1lX25zLlNwYW5cblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IFRpbWVfbnMuU3Bhbi52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnRcblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgICBlbmQpXG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuICgxIGxzbCAxNilcbiAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gdDEgPSB0MlxuZW5kXG5cbm1vZHVsZSBNYXhfbnVtX3RocmVhZHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIER1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhvd190b19kdW1wID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRGVmYXVsdFxuICAgICAgfCBDYWxsX2Fib3J0XG4gICAgICB8IENhbGxfZ2NvcmVcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICB0eXBlIHdhdGNoID1cbiAgICB7IGR1bXBfaWZfZGVsYXllZF9ieSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBob3dfdG9fZHVtcCA6IEhvd190b19kdW1wLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgdHlwZSB0ID1cbiAgICB8IFdhdGNoIG9mIHdhdGNoXG4gICAgfCBEb19ub3Rfd2F0Y2hcbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRGVidWdfdGFnID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWxsXG4gICAgICB8IENsb2NrXG4gICAgICB8IEZkXG4gICAgICB8IEZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgICAgfCBGaW5hbGl6ZXJzXG4gICAgICB8IEludGVycnVwdG9yXG4gICAgICB8IE1vbml0b3JcbiAgICAgIHwgTW9uaXRvcl9zZW5kX2V4blxuICAgICAgfCBQYXJhbGxlbFxuICAgICAgfCBSZWFkZXJcbiAgICAgIHwgU2NoZWR1bGVyXG4gICAgICB8IFNodXRkb3duXG4gICAgICB8IFRocmVhZF9wb29sXG4gICAgICB8IFRocmVhZF9zYWZlXG4gICAgICB8IFdyaXRlclxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IGxpc3QgPVxuICAgIFsgQWxsXG4gICAgOyBDbG9ja1xuICAgIDsgRmRcbiAgICA7IEZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgIDsgRmluYWxpemVyc1xuICAgIDsgSW50ZXJydXB0b3JcbiAgICA7IE1vbml0b3JcbiAgICA7IE1vbml0b3Jfc2VuZF9leG5cbiAgICA7IFBhcmFsbGVsXG4gICAgOyBSZWFkZXJcbiAgICA7IFNjaGVkdWxlclxuICAgIDsgU2h1dGRvd25cbiAgICA7IFRocmVhZF9wb29sXG4gICAgOyBUaHJlYWRfc2FmZVxuICAgIDsgV3JpdGVyXG4gICAgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGaWxlX2Rlc2NyX3dhdGNoZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFcG9sbF9pZl90aW1lcmZkXG4gICAgICB8IEVwb2xsXG4gICAgICB8IFNlbGVjdFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IGxpc3QgPSBbIEVwb2xsX2lmX3RpbWVyZmQ7IEVwb2xsOyBTZWxlY3QgXVxuZW5kXG5cbnR5cGUgdCA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgY2hlY2tfaW52YXJpYW50cyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5IDogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgOiBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyIDogRmlsZV9kZXNjcl93YXRjaGVyLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgOiBNYXhfaW50ZXJfY3ljbGVfdGltZW91dC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA6IE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fdGhyZWFkcyA6IE1heF9udW1fdGhyZWFkcy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudCBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAc2V4cC5vcHRpb25dXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgOiBNaW5faW50ZXJfY3ljbGVfdGltZW91dC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA6IERlYnVnX3RhZy50IGxpc3Qgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnIDogVGltaW5nX3doZWVsLkNvbmZpZy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBdXG5cbmxldCBlbXB0eSA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBOb25lXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gTm9uZVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBOb25lXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IE5vbmVcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBOb25lXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gTm9uZVxuICA7IG1heF9udW1fdGhyZWFkcyA9IE5vbmVcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IE5vbmVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBOb25lXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBOb25lXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBOb25lXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IE5vbmVcbiAgfVxuOztcblxubGV0IGNyZWF0ZVxuICAgICAgP2Fib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICAgICAgP2NoZWNrX2ludmFyaWFudHNcbiAgICAgID9kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgICAgID9kdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gICAgICA/ZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICAgICAgP2ZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgICAgP21heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/bWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gICAgICA/bWF4X251bV90aHJlYWRzXG4gICAgICA/bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICAgID9taW5faW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP3ByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICAgICAgP3JlY29yZF9iYWNrdHJhY2VzXG4gICAgICA/cmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICAgICAgP3RocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICAgICAgP3RpbWluZ193aGVlbF9jb25maWdcbiAgICAgICgpXG4gID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyBjaGVja19pbnZhcmlhbnRzXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXJcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICA7IG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgOyByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSAod29yZF9zaXplIDogV29yZF9zaXplLnQpID1cbiAgbGV0IG1vZHVsZSBBbGFybV9wcmVjaXNpb24gPSBUaW1pbmdfd2hlZWwuQWxhcm1fcHJlY2lzaW9uIGluXG4gIGxldCBhbGFybV9wcmVjaXNpb24sIGxldmVsX2JpdHMgPVxuICAgIG1hdGNoIHdvcmRfc2l6ZSB3aXRoXG4gICAgfCBXMzIgLT4gQWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWxsaXNlY29uZCwgWyAxMDsgMTA7IDkgXVxuICAgIHwgVzY0IC0+IEFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKSwgWyAxNDsgMTU7IDk7IDYgXVxuICBpblxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb25cbiAgICB+bGV2ZWxfYml0czooVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzKVxuICAgICgpXG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgV29yZF9zaXplLndvcmRfc2l6ZVxuOztcblxubGV0IGRlZmF1bHQgPVxuICAoKiBGb3IgW2ZpbGVfZGVzY3Jfd2F0Y2hlcl0gYW5kIFttYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNdIHdlIGNob29zZSB0aGUgZGVmYXVsdCBmb3IgdGhlXG4gICAgIGNvbW1vbiBjYXNlIHRoYXQgW2Vwb2xsXSBpcyBhdmFpbGFibGUuICBUaGVyZSBpcyBzb21lIGFkZGl0aW9uYWwgY29kZSBpblxuICAgICBbQXN5bmNfdW5peC5Db25maWddIHRoYXQgY2hlY2tzIHdoZXRoZXIgW2Vwb2xsXSBpcyBhY3R1YWxseSBhdmFpbGFibGUsIGFuZCBpZiBub3QsXG4gICAgIHVzZXMgW3NlbGVjdF0gYW5kIGEgc21hbGxlciBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycy4gKilcbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIChzZWMgNjAuKVxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGZhbHNlXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gU29tZSBmYWxzZVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIERvX25vdF93YXRjaFxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIChFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLmNyZWF0ZV9leG4gMjU2KVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgRXBvbGxfaWZfdGltZXJmZFxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuMDUpKVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLmRlZmF1bHRcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIChNYXhfbnVtX3RocmVhZHMuY3JlYXRlX2V4biA1MClcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICBTb21lIChNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIDUwMClcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLikpXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBbXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSBmYWxzZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIChzZWMgMS4pXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gU29tZSBJbmhlcml0XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IFNvbWUgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCBleGFtcGxlID1cbiAgeyBkZWZhdWx0IHdpdGhcbiAgICBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIERlYnVnX3RhZy5bIEZkOyBTY2hlZHVsZXIgXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9XG4gICAgICBTb21lXG4gICAgICAgIChDcHVzZXRcbiAgICAgICAgICAgKFsgMDsgMTsgMiBdIHw+IEludC5TZXQub2ZfbGlzdCB8PiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkuQ3B1c2V0LmNyZWF0ZV9leG4pKVxuICB9XG47O1xuXG5sZXQgZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIkFTWU5DX0NPTkZJR1wiXG5cbmxldCBmaWVsZF9kZXNjcmlwdGlvbnMgKCkgOiBzdHJpbmcgPVxuICBsZXQgZmllbGQgdG9fc2V4cCBkZXNjcmlwdGlvbiBhYyBmaWVsZCA9XG4gICAgKEZpZWxkLm5hbWUgZmllbGQsIHRvX3NleHAgKE9wdGlvbi52YWx1ZV9leG4gKEZpZWxkLmdldCBmaWVsZCBkZWZhdWx0KSksIGRlc2NyaXB0aW9uKVxuICAgIDo6IGFjXG4gIGluXG4gIGxldCBmaWVsZHMgPVxuICAgIEZpZWxkcy5mb2xkXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdXG4gICAgICAgICAgIFsge3xcbiAgQnkgZGVmYXVsdCwgQXN5bmMgd2lsbCBzZW5kIGFuIGV4Y2VwdGlvbiB0byB0aGUgdG9wbGV2ZWwgbW9uaXRvclxuICBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5jaGVja19pbnZhcmlhbnRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyB0byByZWd1bGFybHkgY2hlY2sgaW52YXJpYW50cyBvZiBpdHMgaW50ZXJuYWxcbiAgZGF0YSBzdHJ1Y3R1cmVzLiAgVGhpcyBjYW4gc3Vic3RhbnRpYWxseSBzbG93IGRvd24geW91ciBwcm9ncmFtLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHJvdXRpbmVzIHRvIGNoZWNrIGlmIHRoZXkgYXJlIGJlaW5nIGFjY2Vzc2VkXG4gIGZyb20gc29tZSB0aHJlYWQgb3RoZXIgdGhhbiB0aGUgdGhyZWFkIGN1cnJlbnRseSBob2xkaW5nIHRoZSBBc3luY1xuICBsb2NrLCB3aGljaCBpcyBub3QgYWxsb3dlZCBhbmQgY2FuIGxlYWQgdG8gdmVyeSBjb25mdXNpbmcgYmVoYXZpb3IuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmR1bXBfY29yZV9vbl9qb2JfZGVsYXk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudF1cbiAgICAgICAgICAgWyB7fFxuICBDYW4gYmUgc2V0IHRvIFtEb19ub3Rfd2F0Y2hdIG9yOlxuXG4gICAgKFdhdGNoICgoZHVtcF9pZl9kZWxheWVkX2J5IFNQQU4pIChob3dfdG9fZHVtcCBIT1cpKSlcblxuICBJZiBzZXQgdG8gW1dhdGNoXSwgdGhlbiBvbiBwcm9ncmFtIHN0YXJ0IHRoaXMgd2lsbCBzdGFydCBhIHJlZ3VsYXJcbiAgQXN5bmMgam9iIHRoYXQgaW5jcmVtZW50cyBhIGNvdW50ZXIsIGFuZCBhIEMgdGhyZWFkIHRoYXQgd2lsbFxuICBkZXRlY3QgaWYgdGhhdCBqb2IgaXMgZGVsYXllZCBieSBbZHVtcF9pZl9kZWxheWVkX2J5XSwgYW5kIGlmIHNvLFxuICB3aWxsIGNvcmUgZHVtcCB0aGUgcHJvZ3JhbS4gIElmIGF2YWlsYWJsZSwgWy91c3IvYmluL2djb3JlXSBpc1xuICB1c2VkIGJ5IGRlZmF1bHQgdG8gZHVtcCB0aGUgY29yZSwgd2hpY2ggc2hvdWxkIGFsbG93IHRoZSBwcm9ncmFtXG4gIHRvIGNvbnRpbnVlIHJ1bm5pbmcuICBPdGhlcndpc2UsIFthYm9ydF0gd2lsbCBiZSBjYWxsZWQgZnJvbSBDLFxuICB3aGljaCB3aWxsIGtpbGwgdGhlIHByb2dyYW0gd2hpbGUgY2F1c2luZyBhIGNvcmUgZHVtcC4gIE9uZSBjYW5cbiAgZm9yY2UgW2Fib3J0XSBvciBbZ2NvcmVdIHZpYSBbaG93X3RvX2R1bXBdLCB3aGljaCBzaG91bGQgYmUgb25lIG9mOlxuICBbQ2FsbF9hYm9ydF0sIFtDYWxsX2djb3JlXSwgb3IgW0RlZmF1bHRdLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5lcG9sbF9tYXhfcmVhZHlfZXZlbnRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlYWR5IGV2ZW50cyB0aGF0IEFzeW5jJ3MgY2FsbCB0byBbRXBvbGwud2FpdF1cbiAgd2lsbCBoYW5kbGUuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmZpbGVfZGVzY3Jfd2F0Y2hlcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRmlsZV9kZXNjcl93YXRjaGVyLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBkZXRlcm1pbmVzIHdoYXQgT1Mgc3Vic3lzdGVtIEFzeW5jIHVzZXMgdG8gd2F0Y2ggZmlsZSBkZXNjcmlwdG9ycyBmb3IgYmVpbmcgcmVhZHkuXG4gIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSBbZXBvbGxdIGlmIHRpbWVyZmQncyBhcmUgc3VwcG9ydGVkIGFuZCBpZiBub3QsIHVzZSBbc2VsZWN0XS5cblxuICBBbGxvd2VkIHZhbHVlcyBhcmU6fH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAoTGlzdC5tYXAgRmlsZV9kZXNjcl93YXRjaGVyLmxpc3QgfmY6RmlsZV9kZXNjcl93YXRjaGVyLnRvX3N0cmluZylcbiAgICAgICAgICAgOyB7fC5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgKGZ1biBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgIH5fOlxuICAgICAgICAgICAgICAgICAgICAoY29uY2F0XG4gICAgICAgICAgICAgICAgICAgICAgIFsgXCJtaW4gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgOyBkZWZhdWx0IHw+IE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5yYXcgfD4gSW50LnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgICAgICAgICAgICAgOyBcIiBbdWxpbWl0IC1uIC1IXVwiXG4gICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgIDogc3RyaW5nKV0pXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBhbGxvd2VkIGF0IGFueSBvbmUgdGltZS58fSBdKVxuICAgICAgfm1heF9udW1fdGhyZWFkczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X251bV90aHJlYWRzLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBBc3luYyB3aWxsIGNyZWF0ZSB0byBkbyBibG9ja2luZ1xuICBzeXN0ZW0gY2FsbHMgYW5kIGhhbmRsZSBjYWxscyB0byBbSW5fdGhyZWFkLnJ1bl0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9pbnRlcl9jeWNsZV90aW1lb3V0OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfaW50ZXJfY3ljbGVfdGltZW91dC50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSBzY2hlZHVsZXIgd2lsbCBwYXVzZSBiZXR3ZWVuIGN5Y2xlc1xuICB3aGVuIGl0IGhhcyBubyBqb2JzIGFuZCBpcyBnb2luZyB0byB3YWl0IGZvciBJL08uICBJbiBwcmluY2lwbGUgb25lXG4gIGRvZXNuJ3QgbmVlZCB0aGlzLCBhbmQgd2UgY291bGQgdXNlIGFuIGluZmluaXRlIHRpbWVvdXQuICBXZSBpbnN0ZWFkXG4gIHVzZSBhIHNtYWxsIHRpbWVvdXQgKGJ5IGRlZmF1bHQpLCB0byBiZSBtb3JlIHJvYnVzdCB0byBidWdzIHRoYXRcbiAgY291bGQgcHJldmVudCBBc3luYyBmcm9tIHdha2luZyB1cCBhbmQgc2VydmljaW5nIGV2ZW50cy4gIEZvclxuICBleGFtcGxlLCBhcyBvZiAyMDEzLTAxLCB0aGUgT0NhbWwgcnVudGltZSBoYXMgYSBidWcgdGhhdCBjYXVzZXMgaXRcbiAgdG8gbm90IG5lY2Vzc2FyaWx5IHJ1biBhbiBPQ2FtbCBzaWduYWwgaGFuZGxlciBpbiBhIHRpbWVseSBtYW5uZXIuXG4gIFRoaXMgaW4gdHVybiBjYW4gY2F1c2UgYSBzaW1wbGUgQXN5bmMgcHJvZ3JhbSB0aGF0IGlzIHdhaXRpbmcgb24gYVxuICBzaWduYWwgdG8gaGFuZywgd2hlbiBpbiBmYWN0IGl0IHNob3VsZCBoYW5kbGUgdGhlIHNpZ25hbC5cblxuICBXZSB1c2UgNTBtcyBhcyB0aGUgZGVmYXVsdCB0aW1lb3V0LCBiZWNhdXNlIGl0IGlzIGluZnJlcXVlbnQgZW5vdWdoXG4gIHRvIGhhdmUgYSBuZWdsaWdpYmxlIHBlcmZvcm1hbmNlIGltcGFjdCwgYW5kIGZyZXF1ZW50IGVub3VnaCB0aGF0XG4gIHRoZSBsYXRlbmN5IHdvdWxkIHR5cGljYWxseSBiZSBub3Qgbm90aWNlYWJsZS4gIEFsc28sIDUwbXMgaXMgd2hhdFxuICB0aGUgT0NhbWwgdGlja2VyIHRocmVhZCB1c2VzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygam9icyB0aGF0IHdpbGwgYmUgZG9uZSBhdCBlYWNoIHByaW9yaXR5IHdpdGhpblxuICBlYWNoIEFzeW5jIGN5Y2xlLiAgVGhpcyBsaW1pdHMgaG93IG1hbnkgam9icyB0aGUgc2NoZWR1bGVyIHdpbGwgcnVuXG4gIGJlZm9yZSBwYXVzaW5nIHRvIGNoZWNrIGZvciBJL08uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNaW5faW50ZXJfY3ljbGVfdGltZW91dC50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtaW5pbXVtIHRpbWVvdXQgdGhlIHNjaGVkdWxlciB3aWxsIHBhc3MgdG8gdGhlIE9TIHdoZW4gaXQgY2hlY2tzXG4gIGZvciBJL08gYmV0d2VlbiBjeWNsZXMuICBUaGlzIGlzIHplcm8gYnkgZGVmYXVsdC4gIFNldHRpbmcgaXQgdG8gYVxuICBub256ZXJvIHZhbHVlIGlzIHVzZWQgdG8gaW5jcmVhc2UgdGhyZWFkIGZhaXJuZXNzIGJldHdlZW4gdGhlIHNjaGVkdWxlclxuICBhbmQgb3RoZXIgdGhyZWFkcy4gIEEgcGxhdXNpYmxlIHNldHRpbmcgaXMgMXVzLiAgVGhpcyBpcyBhbHNvXG4gIGNvbmZpZ3VyYWJsZSBpbiBPQ2FtbCB2aWEgW1NjaGVkdWxlci5zZXRfbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRdLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IERlYnVnX3RhZy50IGxpc3RdXG4gICAgICAgICAgIFsge3xcbiAgQSBsaXN0IG9mIHRhZ3Mgc3BlY2lmeWluZyB3aGljaCBBc3luYyBmdW5jdGlvbnMgc2hvdWxkIHByaW50IGRlYnVnXG4gIG1lc3NhZ2VzIHRvIHN0ZGVyci4gIEVhY2ggdGFnIGlkZW50aWZpZXMgYSBncm91cCBvZiByZWxhdGVkIEFzeW5jXG4gIGZ1bmN0aW9ucy4gIFRoZSB0YWcgW2FsbF0gbWVhbnMgdG8gcHJpbnQgZGVidWcgbWVzc2FnZXMgZm9yIGFsbFxuICBmdW5jdGlvbnMuICBBbGxvd2VkIHZhbHVlcyBhcmU6XG5cbnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICAoTGlzdC5tYXAgRGVidWdfdGFnLmxpc3QgfmY6KGZ1biBkIC0+XG4gICAgICAgICAgICAgICAgICBjb25jYXQgWyBcIiAgICBcIjsgRGVidWdfdGFnLnRvX3N0cmluZyBkOyBcIlxcblwiIF0pKVxuICAgICAgICAgICA7IHt8XG4gIFR1cm5pbmcgb24gZGVidWcgbWVzc2FnZXMgd2lsbCBzdWJzdGFudGlhbGx5IHNsb3cgZG93biBtb3N0IHByb2dyYW1zLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZWNvcmRfYmFja3RyYWNlczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCB0aGlzIHdpbGwgY2F1c2UgQXN5bmMgdG8ga2VlcCBpbiB0aGUgZXhlY3V0aW9uIGNvbnRleHQgdGhlXG4gIGhpc3Rvcnkgb2Ygc3RhY2sgYmFja3RyYWNlcyAob2J0YWluZWQgdmlhIFtCYWNrdHJhY2UuZ2V0XSkgdGhhdCBsZWRcbiAgdG8gdGhlIGN1cnJlbnQgam9iLiAgSWYgYW4gQXN5bmMgam9iIGhhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLFxuICB0aGlzIGJhY2t0cmFjZSBoaXN0b3J5IHdpbGwgYmUgcmVjb3JkZWQgaW4gdGhlIGV4Y2VwdGlvbi4gIEluXG4gIHBhcnRpY3VsYXIgdGhlIGhpc3Rvcnkgd2lsbCBhcHBlYXIgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiB0aGF0XG4gIHJlYWNoZXMgdGhlIG1haW4gbW9uaXRvci4gIFRoaXMgY2FuIGhhdmUgYSBzdWJzdGFudGlhbCBwZXJmb3JtYW5jZVxuICBpbXBhY3QsIGJvdGggaW4gcnVubmluZyB0aW1lIGFuZCBzcGFjZSB1c2FnZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdXG4gICAgICAgICAgIFsge3xcbiAgQnkgZGVmYXVsdCwgQXN5bmMgd2lsbCBwcmludCBhIG1lc3NhZ2UgdG8gc3RkZXJyIGV2ZXJ5IHNlY29uZCBpZlxuICB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRocmVhZF9wb29sX2NwdV9hZmZpbml0eTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnRdXG4gICAgICAgICAgIFsge3xcbiAgIFdoZXRoZXIgYW5kIGhvdyB0aHJlYWRzIGluIHRoZSB0aHJlYWQgcG9vbCBzaG91bGQgYmUgYWZmaW5pdGl6ZWQgdG8gQ1BVcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGltaW5nX3doZWVsX2NvbmZpZzpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltaW5nX3doZWVsLkNvbmZpZy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgaXMgdXNlZCB0byBhZGp1c3QgdGhlIHRpbWUvc3BhY2UgdHJhZGVvZmYgaW4gdGhlIHRpbWluZyB3aGVlbFxuICB1c2VkIHRvIGltcGxlbWVudCBBc3luYydzIGNsb2NrLiAgVGltZSBpcyBzcGxpdCBpbnRvIGludGVydmFscyBvZlxuICBzaXplIFthbGFybV9wcmVjaXNpb25dLCBhbmQgYWxhcm1zIHdpdGggdGltZXMgaW4gdGhlIHNhbWUgaW50ZXJ2YWxcbiAgZmlyZSBpbiB0aGUgc2FtZSBjeWNsZS4gIExldmVsIFtpXSBpbiB0aGUgdGltaW5nIHdoZWVsIGhhcyBhblxuICBhcnJheSBvZiBzaXplIFsyXmJdLCB3aGVyZSBbYl0gaXMgdGhlIFtpXSd0aCBlbnRyeSBpbiBbbGV2ZWxfYml0c10uXG58fVxuICAgICAgICAgICBdKVxuICBpblxuICBjb25jYXRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoTGlzdC5zb3J0IGZpZWxkcyB+Y29tcGFyZTooZnVuIChuYW1lMSwgXywgXykgKG5hbWUyLCBfLCBfKSAtPlxuICAgICAgICAgIFN0cmluZy5jb21wYXJlIG5hbWUxIG5hbWUyKSlcbiAgICAgICB+ZjooZnVuIChuYW1lLCBkZWZhdWx0LCBkZXNjcmlwdGlvbikgLT5cbiAgICAgICAgIGNvbmNhdFxuICAgICAgICAgICAoXCJcXG5cIiA6OiBuYW1lIDo6IFwiIChkZWZhdWx0IFwiIDo6IFNleHAudG9fc3RyaW5nIGRlZmF1bHQgOjogXCIpXCIgOjogZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBoZWxwX21lc3NhZ2UgKCkgPVxuICBjb25jYXRcbiAgICBbIFwiVGhlIFwiXG4gICAgOyBlbnZpcm9ubWVudF92YXJpYWJsZVxuICAgIDsge3wgZW52aXJvbm1lbnQgdmFyaWFibGUgYWZmZWN0cyBBc3luY1xuaW4gdmFyaW91cyB3YXlzLiAgSXRzIHZhbHVlIHNob3VsZCBiZSBhIHNleHAgb2YgdGhlIGZvbGxvd2luZyBmb3JtLFxud2hlcmUgYWxsIGZpZWxkcyBhcmUgb3B0aW9uYWw6XG5cbnx9XG4gICAgOyBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfdCBleGFtcGxlKVxuICAgIDsge3xcblxuSGVyZSBpcyBhbiBleHBsYW5hdGlvbiBvZiBlYWNoIGZpZWxkLlxufH1cbiAgICA7IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKVxuICAgIF1cbjs7XG5cbmxldCB1c2FnZSAoKSA9XG4gIGVwcmludGYgXCIlcyUhXCIgKGhlbHBfbWVzc2FnZSAoKSk7XG4gIGV4aXQgMVxuOztcblxubGV0IHQgPVxuICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBJbnJpYV9zeXMuZ2V0ZW52IGVudmlyb25tZW50X3ZhcmlhYmxlKSB3aXRoXG4gIHwgTm9uZSAtPiBlbXB0eVxuICB8IFNvbWUgXCJcIiAtPiB1c2FnZSAoKVxuICB8IFNvbWUgc3RyaW5nIC0+XG4gICAgKG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgc3RyaW5nKSkgd2l0aFxuICAgICB8IE9rIHQgLT4gdFxuICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgIGVwcmludGZcbiAgICAgICAgIFwiJXNcXG5cXG5cIlxuICAgICAgICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgKEVycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgKEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgIFwiaW52YWxpZCB2YWx1ZSBmb3IgJXMgZW52aXJvbm1lbnQgdmFyaWFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRfdmFyaWFibGUpXG4gICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgIFslc2V4cF9vZjogZXhuXSkpKTtcbiAgICAgICB1c2FnZSAoKSlcbjs7XG5cbm1vZHVsZSBQcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBzdHJ1Y3RcbiAgbGV0IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWcgPVxuICAgIG1hdGNoIHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbCAtPiBMaXN0Lm1lbSBsIHRhZyB+ZXF1YWw6RGVidWdfdGFnLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGFsbCA9IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciBBbGxcbiAgbGV0IGRlYnVnIHRhZyA9IGFsbCB8fCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnXG4gIGxldCBjbG9jayA9IGRlYnVnIENsb2NrXG4gIGxldCBmZCA9IGRlYnVnIEZkXG4gIGxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBkZWJ1ZyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgbGV0IGZpbmFsaXplcnMgPSBkZWJ1ZyBGaW5hbGl6ZXJzXG4gIGxldCBpbnRlcnJ1cHRvciA9IGRlYnVnIEludGVycnVwdG9yXG4gIGxldCBtb25pdG9yID0gZGVidWcgTW9uaXRvclxuICBsZXQgbW9uaXRvcl9zZW5kX2V4biA9IGRlYnVnIE1vbml0b3Jfc2VuZF9leG5cbiAgbGV0IHBhcmFsbGVsID0gZGVidWcgUGFyYWxsZWxcbiAgbGV0IHJlYWRlciA9IGRlYnVnIFJlYWRlclxuICBsZXQgc2NoZWR1bGVyID0gZGVidWcgU2NoZWR1bGVyXG4gIGxldCBzaHV0ZG93biA9IGRlYnVnIFNodXRkb3duXG4gIGxldCB0aHJlYWRfcG9vbCA9IGRlYnVnIFRocmVhZF9wb29sXG4gIGxldCB0aHJlYWRfc2FmZSA9IGRlYnVnIFRocmVhZF9zYWZlXG4gIGxldCB3cml0ZXIgPSBkZWJ1ZyBXcml0ZXJcbmVuZFxuXG5sZXQgKCAhISApIGZpZWxkID1cbiAgT3B0aW9uLnZhbHVlIChGaWVsZC5nZXQgZmllbGQgdCkgfmRlZmF1bHQ6KE9wdGlvbi52YWx1ZV9leG4gKEZpZWxkLmdldCBmaWVsZCBkZWZhdWx0KSlcbjs7XG5cbmxldCBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSAhIUZpZWxkcy5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCBjaGVja19pbnZhcmlhbnRzID0gISFGaWVsZHMuY2hlY2tfaW52YXJpYW50c1xubGV0IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9ICEhRmllbGRzLmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxubGV0IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSAhIUZpZWxkcy5lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG5sZXQgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gISFGaWVsZHMudGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG5sZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gISFGaWVsZHMuZmlsZV9kZXNjcl93YXRjaGVyXG5sZXQgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxubGV0IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9ICEhRmllbGRzLm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xubGV0IG1heF9udW1fdGhyZWFkcyA9ICEhRmllbGRzLm1heF9udW1fdGhyZWFkc1xubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gISFGaWVsZHMubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbmxldCBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgcmVjb3JkX2JhY2t0cmFjZXMgPSAhIUZpZWxkcy5yZWNvcmRfYmFja3RyYWNlc1xubGV0IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSAhIUZpZWxkcy5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgdGltaW5nX3doZWVsX2NvbmZpZyA9ICEhRmllbGRzLnRpbWluZ193aGVlbF9jb25maWdcbmxldCBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gISFGaWVsZHMuZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuXG5sZXQgdCA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBjaGVja19pbnZhcmlhbnRzXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gU29tZSBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gU29tZSB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBmaWxlX2Rlc2NyX3dhdGNoZXJcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIG1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBTb21lIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IFNvbWUgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgdGFza19pZCA9IHJlZiAoZnVuICgpIC0+IFNleHAuQXRvbSBcIjxubyB0YXNrIGlkPlwiKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4oKiBCZWluZyBhIHBvaW50ZXIsIG5vIG9uZSBvdXRzaWRlIHRoaXMgbW9kdWxlIGNhbiBjb25zdHJ1Y3QgYSB2YWx1ZSB0aGF0IGlzXG4gICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gT3B0aW9uX2FycmF5LkNoZWFwX29wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXJcbiAgIHBsYWNlIHdoZXJlIHdlIHdhbnQgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbmxldCBub25lID0gT2JqLm9iaiAoT2JqLm5ld19ibG9jayBPYmouYWJzdHJhY3RfdGFnIDEpXG5sZXQgY3JlYXRlICgpID0gcmVmIG5vbmVcbmxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsICF4IG5vbmVcbmxldCBpc19zb21lIHggPSBub3QgKGlzX25vbmUgeClcbmxldCBnZXRfc29tZV9leG4geCA9IGlmIGlzX25vbmUgeCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTW9wdGlvbi5nZXRfc29tZV9leG5cIl0gZWxzZSAheFxubGV0IGdldCB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgIXRcbmxldCB1bnNhZmVfZ2V0IHQgPSAhdFxubGV0IHNldF9zb21lIHQgdiA9IHQgOj0gdlxubGV0IHNldF9ub25lIHQgPSB0IDo9IG5vbmVcblxubGV0IHNldCB0IHYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBOb25lIC0+IHNldF9ub25lIHRcbiAgfCBTb21lIHYgLT4gc2V0X3NvbWUgdCB2XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwIChnZXQgdCA6IGEgb3B0aW9uKV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBPcHRpb24uaXRlciAoZ2V0IHQpIH5mOmludmFyaWFudF9hKVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV9nZXRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxubW9kdWxlIFBvaW50ZXIgPSBQb29sLlBvaW50ZXJcblxuKCogVGhpcyBwb29sIGhvbGRzIG5vZGVzIHRoYXQgd291bGQgYmUgcmVwcmVzZW50ZWQgbW9yZSB0cmFkaXRpb25hbGx5IGFzOlxuXG4gICB7W1xuICAgICB0eXBlICdhIHQgPVxuICAgICAgIHwgRW1wdHlcbiAgICAgICB8IEhlYXAgb2YgJ2EgKiAnYSB0IGxpc3QgXX1cblxuICAgV2Ugd2lsbCByZXByZXNlbnQgdGhlbSBhcyBhIGxlZnQtY2hpbGQsIHJpZ2h0LXNpYmxpbmcgdHJlZSBpbiBhIHRyaXBsZXRcbiAgICh2YWx1ZSAqIGxlZnRfY2hpbGQgKiByaWdodF9zaWJsaW5nKS4gIFRoZSBsZWZ0IGNoaWxkIGFuZCBhbGwgcmlnaHQgc2libGluZ3NcbiAgIG9mIHRoZSBsZWZ0IGNoaWxkIGZvcm0gYSBsaW5rZWQgbGlzdCByZXByZXNlbnRpbmcgdGhlIHN1YmhlYXBzIG9mIGEgZ2l2ZW4gaGVhcDpcblxuICAge3ZcbiAgICAgICAgIEFcbiAgICAgICAgL1xuICAgICAgIEIgLT4gQyAtPiBEIC0+IEUgLT4gRlxuICAgICAgLyAgICAgICAgIC8gICAgICAgICAvXG4gICAgIEcgICAgICAgICBILT5JLT5KICAgSy0+TFxuICAgdn0gKilcblxubW9kdWxlIE5vZGUgOiBzaWdcbiAgKCogRXhwb3NpbmcgW3ByaXZhdGUgaW50XSBpcyBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBiZWNhdXNlIGl0IGFsbG93c1xuICAgICB0aGUgY29tcGlsZXIgdG8gc2tpcCB0aGUgd3JpdGUgYmFycmllci4gKilcblxuICB0eXBlICdhIHQgPSBwcml2YXRlIGludFxuXG4gIG1vZHVsZSBJZCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0XG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY3JlYXRlIDogbWluX3NpemU6aW50IC0+ICdhIHRcbiAgICB2YWwgaXNfZnVsbCA6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBncm93IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIG5vZGUgLT4gJ2Egbm9kZSAqICdhIHRcbiAgZW5kXG5cbiAgKCoqIFthbGxvY2F0ZSB2IH5wb29sXSBhbGxvY2F0ZXMgYSBuZXcgbm9kZSBmcm9tIHRoZSBwb29sIHdpdGggbm8gY2hpbGQgb3Igc2libGluZyAqKVxuICB2YWwgYWxsb2NhdGUgOiAnYSAtPiBwb29sOidhIFBvb2wudCAtPiBpZDpJZC50IC0+ICdhIHRcblxuICAoKiogW2ZyZWUgdCB+cG9vbF0gZnJlZXMgW3RdIGZvciByZXVzZS4gIEl0IGlzIGFuIGVycm9yIHRvIGFjY2VzcyBbdF0gYWZ0ZXIgdGhpcy4gKilcbiAgdmFsIGZyZWUgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcblxuICAoKiogYSBzcGVjaWFsIFt0XSB0aGF0IHJlcHJlc2VudHMgdGhlIGVtcHR5IG5vZGUgKilcbiAgdmFsIGVtcHR5IDogdW5pdCAtPiAnYSB0XG5cbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgKCoqIFt2YWx1ZV9leG4gdCB+cG9vbF0gcmV0dXJuIHRoZSB2YWx1ZSBvZiBbdF0sIHJhaXNlIGlmIFtpc19lbXB0eSB0XSAqKVxuICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYVxuXG4gIHZhbCBpZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gSWQudFxuICB2YWwgY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcbiAgdmFsIHNpYmxpbmcgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW3ByZXYgdF0gaXMgZWl0aGVyIHRoZSBwYXJlbnQgb2YgW3RdIG9yIHRoZSBzaWJsaW5nIGltbWVkaWF0ZWx5IGxlZnQgb2YgW3RdICopXG4gIHZhbCBwcmV2IDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFthZGRfY2hpbGQgdCB+Y2hpbGQgfnBvb2xdIEFkZCBhIGNoaWxkIHRvIFt0XSwgcHJlc2VydmluZyBleGlzdGluZyBjaGlsZHJlbiBhc1xuICAgICAgc2libGluZ3Mgb2YgW2NoaWxkXS4gW3RdIGFuZCBbY2hpbGRdIHNob3VsZCBub3QgYmUgZW1wdHkgYW5kIFtjaGlsZF0gc2hvdWxkIGhhdmUgbm9cbiAgICAgIHNpYmxpbmcgYW5kIGhhdmUgbm8gcHJldiBub2RlLiAqKVxuICB2YWwgYWRkX2NoaWxkIDogJ2EgdCAtPiBjaGlsZDonYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcblxuICAoKiogZGlzY29ubmVjdCBhbmQgcmV0dXJuIHRoZSBzaWJsaW5nICopXG4gIHZhbCBkaXNjb25uZWN0X3NpYmxpbmcgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogZGlzY29ubmVjdCBhbmQgcmV0dXJuIHRoZSBjaGlsZCAqKVxuICB2YWwgZGlzY29ubmVjdF9jaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbZGV0YWNoIHQgfnBvb2xdIHJlbW92ZXMgW3RdIGZyb20gdGhlIHRyZWUsIGFkanVzdGluZyBwb2ludGVycyBhcm91bmQgaXQuIEFmdGVyXG4gICAgICBbZGV0YWNoXSwgW3RdIGlzIHRoZSByb290IG9mIGEgc3RhbmRhbG9uZSBoZWFwLCB3aGljaCBpcyBkZXRhY2hlZCBmcm9tIHRoZSBvcmlnaW5hbFxuICAgICAgaGVhcC4gKilcbiAgdmFsIGRldGFjaCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBJZCA9IEludFxuXG4gIGxldCBkdW1teV9pZCA6IElkLnQgPSAtMVxuXG4gIHR5cGUgJ2Egbm9kZSA9XG4gICAgKCdhLCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCBJZC50KSBQb29sLlNsb3RzLnQ1XG5cbiAgdHlwZSAnYSB0ID0gJ2Egbm9kZSBQb2ludGVyLnRcblxuICBsZXQgZW1wdHkgPSBQb2ludGVyLm51bGxcbiAgbGV0IGlzX2VtcHR5ID0gUG9pbnRlci5pc19udWxsXG4gIGxldCBlcXVhbCA9IFBvaW50ZXIucGh5c19lcXVhbFxuICBsZXQgdmFsdWUgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDBcbiAgbGV0IGNoaWxkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQxXG4gIGxldCBzaWJsaW5nIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQyXG4gIGxldCBwcmV2IHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQzXG4gIGxldCBpZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50NFxuXG4gICgqIGxldCBzZXRfdmFsdWUgICB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQwIHYgKilcbiAgbGV0IHNldF9jaGlsZCB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQxIHZcbiAgbGV0IHNldF9zaWJsaW5nIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDIgdlxuICBsZXQgc2V0X3ByZXYgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MyB2XG5cbiAgbGV0IHZhbHVlX2V4biB0IH5wb29sID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICAgIHZhbHVlIHQgfnBvb2xcbiAgOztcblxuICBsZXQgYWxsb2NhdGUgdmFsdWUgfnBvb2wgfmlkID0gUG9vbC5uZXc1IHBvb2wgdmFsdWUgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgaWRcbiAgbGV0IGZyZWUgdCB+cG9vbCA9IFBvb2wudW5zYWZlX2ZyZWUgcG9vbCB0XG5cbiAgbGV0IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sID1cbiAgICBsZXQgc2libGluZyA9IHNpYmxpbmcgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgc2libGluZylcbiAgICB0aGVuIChcbiAgICAgIHNldF9zaWJsaW5nIHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgIHNldF9wcmV2IHNpYmxpbmcgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgc2libGluZ1xuICA7O1xuXG4gIGxldCBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgPVxuICAgIGxldCBjaGlsZCA9IGNoaWxkIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IGNoaWxkKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X2NoaWxkIHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgIHNldF9wcmV2IGNoaWxkIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIGNoaWxkXG4gIDs7XG5cbiAgbGV0IGFkZF9jaGlsZCB0IH5jaGlsZDpuZXdfY2hpbGQgfnBvb2wgPVxuICAgICgqIGFzc2VydGlvbnMgd2Ugd291bGQgbWFrZSwgYnV0IGZvciBzcGVlZDpcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSBuZXdfY2hpbGQpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChzaWJsaW5nIG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHByZXYgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgKilcbiAgICBsZXQgY3VycmVudF9jaGlsZCA9IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCBpblxuICAgICgqIGFkZCBbbmV3X2NoaWxkXSB0byB0aGUgbGlzdCBvZiBbdF0ncyBjaGlsZHJlbiAod2hpY2ggbWF5IGJlIGVtcHR5KSAqKVxuICAgIHNldF9zaWJsaW5nIG5ld19jaGlsZCBjdXJyZW50X2NoaWxkIH5wb29sO1xuICAgIGlmIG5vdCAoaXNfZW1wdHkgY3VycmVudF9jaGlsZCkgdGhlbiBzZXRfcHJldiBjdXJyZW50X2NoaWxkIG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfY2hpbGQgdCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X3ByZXYgbmV3X2NoaWxkIHQgfnBvb2xcbiAgOztcblxuICBsZXQgZGV0YWNoIHQgfnBvb2wgPVxuICAgIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcmV2ID0gcHJldiB0IH5wb29sIGluXG4gICAgICBpZiBub3QgKGlzX2VtcHR5IHByZXYpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHJlbGF0aW9uX3RvX3ByZXYgPSBpZiBlcXVhbCB0IChjaGlsZCBwcmV2IH5wb29sKSB0aGVuIGBjaGlsZCBlbHNlIGBzaWJsaW5nIGluXG4gICAgICAgIHNldF9wcmV2IHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgICAgbGV0IHNpYmxpbmcgPSBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCBpblxuICAgICAgICAobWF0Y2ggcmVsYXRpb25fdG9fcHJldiB3aXRoXG4gICAgICAgICB8IGBjaGlsZCAtPiBzZXRfY2hpbGQgcHJldiBzaWJsaW5nIH5wb29sXG4gICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIHByZXYgc2libGluZyB+cG9vbCk7XG4gICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgc2libGluZykgdGhlbiBzZXRfcHJldiBzaWJsaW5nIHByZXYgfnBvb2wpKVxuICA7O1xuXG4gIG1vZHVsZSBQb29sID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egbm9kZSBQb29sLnRcbiAgICB0eXBlIG5vbnJlYyAnYSBub2RlID0gJ2Egbm9kZSBQb2ludGVyLnRcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfm1pbl9zaXplOmNhcGFjaXR5IDogYSB0ID1cbiAgICAgIFBvb2wuY3JlYXRlXG4gICAgICAgIFBvb2wuU2xvdHMudDVcbiAgICAgICAgfmNhcGFjaXR5XG4gICAgICAgIH5kdW1teTpcbiAgICAgICAgICAoIChPYmoubWFnaWMgTm9uZSA6IGEpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBkdW1teV9pZCApXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSBQb29sLmlzX2Z1bGwgdFxuICAgIGxldCBsZW5ndGggdCA9IFBvb2wubGVuZ3RoIHRcbiAgICBsZXQgZ3JvdyB0ID0gUG9vbC5ncm93IHRcblxuICAgIGxldCBjb3B5IHQgc3RhcnQgPVxuICAgICAgbGV0IHQnID0gY3JlYXRlIH5taW5fc2l6ZTooUG9vbC5jYXBhY2l0eSB0KSBpblxuICAgICAgbGV0IGNvcHlfbm9kZSBub2RlIHRvX3Zpc2l0ID1cbiAgICAgICAgaWYgaXNfZW1wdHkgbm9kZVxuICAgICAgICB0aGVuIGVtcHR5ICgpLCB0b192aXNpdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiB3ZSB1c2UgdGhlIHNhbWUgaWQsIGJ1dCB0aGF0J3Mgb2sgc2luY2UgaWRzIHNob3VsZCBiZSB1bmlxdWUgcGVyIGhlYXAgKilcbiAgICAgICAgICBsZXQgbmV3X25vZGUgPVxuICAgICAgICAgICAgYWxsb2NhdGUgKHZhbHVlX2V4biBub2RlIH5wb29sOnQpIH5wb29sOnQnIH5pZDooaWQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRvX3Zpc2l0ID1cbiAgICAgICAgICAgIChuZXdfbm9kZSwgYGNoaWxkLCBjaGlsZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiAobmV3X25vZGUsIGBzaWJsaW5nLCBzaWJsaW5nIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IHRvX3Zpc2l0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBuZXdfbm9kZSwgdG9fdmlzaXQpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICAgICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgKG5vZGVfdG9fdXBkYXRlLCBzbG90LCBub2RlX3RvX2NvcHkpIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgbmV3X25vZGUsIHRvX3Zpc2l0ID0gY29weV9ub2RlIG5vZGVfdG9fY29weSByZXN0IGluXG4gICAgICAgICAgKG1hdGNoIHNsb3Qgd2l0aFxuICAgICAgICAgICB8IGBjaGlsZCAtPiBzZXRfY2hpbGQgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCdcbiAgICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0Jyk7XG4gICAgICAgICAgaWYgbm90IChpc19lbXB0eSBuZXdfbm9kZSkgdGhlbiBzZXRfcHJldiBuZXdfbm9kZSBub2RlX3RvX3VwZGF0ZSB+cG9vbDp0JztcbiAgICAgICAgICBsb29wIHRvX3Zpc2l0XG4gICAgICBpblxuICAgICAgbGV0IG5ld19zdGFydCwgdG9fdmlzaXQgPSBjb3B5X25vZGUgc3RhcnQgW10gaW5cbiAgICAgIGxvb3AgdG9fdmlzaXQ7XG4gICAgICBuZXdfc3RhcnQsIHQnXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyAoKiBjbXAgaXMgcGxhY2VkIGZpcnN0IHRvIHNob3J0LWNpcmN1aXQgcG9seW1vcnBoaWMgY29tcGFyZSAqKVxuICAgIGNtcCA6ICdhIC0+ICdhIC0+IGludFxuICA7IG11dGFibGUgcG9vbCA6ICdhIE5vZGUuUG9vbC50XG4gIDsgKCogaW52YXJpYW50OiAgW3Jvb3RdIG5ldmVyIGhhcyBhIHNpYmxpbmcgKilcbiAgICBtdXRhYmxlIHJvb3QgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgOiBpbnRcbiAgfVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IChub2RlLCBleHBlY3RlZF9wcmV2LCBtYXliZV9wYXJlbnRfdmFsdWUpIDo6IHJlc3QgLT5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBub2RlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0aGlzX3ZhbHVlID0gTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgYXNzZXJ0IChOb2RlLmVxdWFsIChOb2RlLnByZXYgbm9kZSB+cG9vbDp0LnBvb2wpIGV4cGVjdGVkX3ByZXYpO1xuICAgICAgICBPcHRpb24uaXRlciBtYXliZV9wYXJlbnRfdmFsdWUgfmY6KGZ1biBwYXJlbnRfdmFsdWUgLT5cbiAgICAgICAgICBhc3NlcnQgKHQuY21wIHBhcmVudF92YWx1ZSB0aGlzX3ZhbHVlIDw9IDApKTtcbiAgICAgICAgbG9vcFxuICAgICAgICAgICgoTm9kZS5jaGlsZCBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgU29tZSB0aGlzX3ZhbHVlKVxuICAgICAgICAgICA6OiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBtYXliZV9wYXJlbnRfdmFsdWUpXG4gICAgICAgICAgIDo6IHJlc3QpKVxuICAgICAgZWxzZSBsb29wIHJlc3RcbiAgaW5cbiAgYXNzZXJ0IChOb2RlLmlzX2VtcHR5IHQucm9vdCB8fCBOb2RlLmlzX2VtcHR5IChOb2RlLnNpYmxpbmcgdC5yb290IH5wb29sOnQucG9vbCkpO1xuICBsb29wIFsgdC5yb290LCBOb2RlLmVtcHR5ICgpLCBOb25lIF1cbjs7XG5cbmxldCBjcmVhdGUgPyhtaW5fc2l6ZSA9IDEpIH5jbXAgKCkgPVxuICB7IGNtcFxuICA7IHBvb2wgPSBOb2RlLlBvb2wuY3JlYXRlIH5taW5fc2l6ZVxuICA7IHJvb3QgPSBOb2RlLmVtcHR5ICgpXG4gIDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA9IDBcbiAgfVxuOztcblxubGV0IGNvcHkgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfSA9XG4gIGxldCByb290LCBwb29sID0gTm9kZS5Qb29sLmNvcHkgcG9vbCByb290IGluXG4gIHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH1cbjs7XG5cbmxldCBhbGxvY2F0ZSB0IHYgPVxuICBpZiBOb2RlLlBvb2wuaXNfZnVsbCB0LnBvb2wgdGhlbiB0LnBvb2wgPC0gTm9kZS5Qb29sLmdyb3cgdC5wb29sO1xuICB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPC0gdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzICsgMTtcbiAgTm9kZS5hbGxvY2F0ZSB2IH5wb29sOnQucG9vbCB+aWQ6KE5vZGUuSWQub2ZfaW50IHQubnVtX29mX2FsbG9jYXRlZF9ub2Rlcylcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggcm9vdDEsIHJvb3QyIHdpdGhcbiAgICAgfCBOb25lLCBoIHwgaCwgTm9uZSAtPiBoXG4gICAgIHwgU29tZSAoTm9kZSAodjEsIGNoaWxkcmVuMSkpLCBTb21lIChOb2RlICh2MiwgY2hpbGRyZW4yKSkgLT5cbiAgICAgICBpZiB2MSA8IHYyXG4gICAgICAgdGhlbiBTb21lIChOb2RlICh2MSwgcm9vdDIgOjogY2hpbGRyZW4xKSlcbiAgICAgICBlbHNlIFNvbWUgKE5vZGUgKHYyLCByb290MSA6OiBjaGlsZHJlbjIpKVxuICAgXX1cblxuICAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIG5laXRoZXIgcm9vdCBoYXMgYSBwcmV2IG5vZGUgKHVzdWFsbHkgYmVjYXVzZSB0aGUgaW5wdXRzIGNvbWVcbiAgIGZyb20gW2Rpc2Nvbm5lY3RfKl0gb3IgYXJlIHRoZSB0b3Agb2YgdGhlIGhlYXAgb3IgYXJlIHRoZSBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbikuICopXG5sZXQgbWVyZ2UgdCByb290MSByb290MiA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgcm9vdDFcbiAgdGhlbiByb290MlxuICBlbHNlIGlmIE5vZGUuaXNfZW1wdHkgcm9vdDJcbiAgdGhlbiByb290MVxuICBlbHNlIChcbiAgICBsZXQgYWRkX2NoaWxkIHQgbm9kZSB+Y2hpbGQgPVxuICAgICAgTm9kZS5hZGRfY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgfmNoaWxkO1xuICAgICAgbm9kZVxuICAgIGluXG4gICAgbGV0IHYxID0gTm9kZS52YWx1ZV9leG4gcm9vdDEgfnBvb2w6dC5wb29sIGluXG4gICAgbGV0IHYyID0gTm9kZS52YWx1ZV9leG4gcm9vdDIgfnBvb2w6dC5wb29sIGluXG4gICAgaWYgdC5jbXAgdjEgdjIgPCAwXG4gICAgdGhlbiBhZGRfY2hpbGQgdCByb290MSB+Y2hpbGQ6cm9vdDJcbiAgICBlbHNlIGFkZF9jaGlsZCB0IHJvb3QyIH5jaGlsZDpyb290MSlcbjs7XG5cbmxldCB0b3BfZXhuIHQgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdFxuICB0aGVuIGZhaWx3aXRoIFwiSGVhcC50b3BfZXhuIGNhbGxlZCBvbiBhbiBlbXB0eSBoZWFwXCJcbiAgZWxzZSBOb2RlLnZhbHVlX2V4biB0LnJvb3QgfnBvb2w6dC5wb29sXG47O1xuXG5sZXQgdG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3BfZXhuIHQpXG5cbmxldCBhZGRfbm9kZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFsbG9jYXRlIHQgdiBpblxuICB0LnJvb3QgPC0gbWVyZ2UgdCB0LnJvb3Qgbm9kZTtcbiAgbm9kZVxuOztcblxubGV0IGFkZCB0IHYgPSBpZ25vcmUgKGFkZF9ub2RlIHQgdiA6IF8gTm9kZS50KVxuXG4oKiBbbWVyZ2VfcGFpcnNdIHRha2VzIGEgbGlzdCBvZiBoZWFwIHJvb3RzIGFuZCBtZXJnZXMgY29uc2VjdXRpdmUgcGFpcnMsIHJlZHVjaW5nIHRoZVxuICAgbGlzdCBvZiBsZW5ndGggbiB0byBuLzIuICBUaGVuIGl0IG1lcmdlcyB0aGUgbWVyZ2VkIHBhaXJzIGludG8gYSBzaW5nbGUgaGVhcC4gIE9uZVxuICAgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyBpcyBzb21ld2hhdCBsaWtlIGJ1aWxkaW5nIGEgc2luZ2xlIGxldmVsIG9mIGEgYmluYXJ5IHRyZWUuXG5cbiAgIFRoZSBvdXRwdXQgaGVhcCBkb2VzIG5vdCBjb250YWluIHRoZSB2YWx1ZSB0aGF0IHdhcyBhdCB0aGUgcm9vdCBvZiB0aGUgaW5wdXQgaGVhcC5cblxuICAgV2UgYnJlYWsgdGhlIGZ1bmN0aW9uIGludG8gdHdvIHBhcnRzLiAgQSBmaXJzdCBzdGFnZSB0aGF0IGlzIHdpbGxpbmcgdG8gdXNlIGxpbWl0ZWRcbiAgIHN0YWNrIGluc3RlYWQgb2YgaGVhcCBhbGxvY2F0aW9uIGZvciBib29ra2VlcGluZywgYW5kIGEgc2Vjb25kIHN0YWdlIHRoYXQgc2hpZnRzIHRvXG4gICB1c2luZyBhIGxpc3QgYXMgYW4gYWNjdW11bGF0b3IgaWYgd2UgZ28gdG9vIGRlZXAuXG5cbiAgIFRoaXMgY2FuIGJlIG1hZGUgdGFpbCByZWN1cnNpdmUgYW5kIG5vbi1hbGxvY2F0aW5nIGJ5IHN0YXJ0aW5nIHdpdGggYW4gZW1wdHkgaGVhcCBhbmRcbiAgIG1lcmdpbmcgbWVyZ2VkIHBhaXJzIGludG8gaXQuIFVuZm9ydHVuYXRlbHkgdGhpcyBcImxlZnQgZm9sZFwiIHZlcnNpb24gaXMgbm90IHdoYXQgaXNcbiAgIGRlc2NyaWJlZCBpbiB0aGUgb3JpZ2luYWwgcGFwZXIgYnkgRnJlZG1hbiBldCBhbC47IHRoZXkgc3BlY2lmaWNhbGx5IHNheSB0aGF0XG4gICBjaGlsZHJlbiBzaG91bGQgYmUgbWVyZ2VkIHRvZ2V0aGVyIGZyb20gdGhlIGVuZCBvZiB0aGUgbGlzdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgbGlzdC4gKFttZXJnZV0gaXMgbm90IGFzc29jaWF0aXZlLCBzbyBvcmRlciBtYXR0ZXJzLilcbiopXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgfCBbaGVhZF0gLT4gaGVhZCA6OiBhY2NcbiAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT4gbG9vcCAobWVyZ2UgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyXG4gICAgIGluXG4gICAgIG1hdGNoIGxvb3AgW10gY2hpbGRyZW4gd2l0aFxuICAgICB8IFtdIC0+IE5vbmVcbiAgICAgfCBbaF0gLT4gU29tZSBoXG4gICAgIHwgeCA6OiB4cyAtPiBTb21lIChMaXN0LmZvbGQgeHMgfmluaXQ6eCB+ZjptZXJnZSlcbiAgIF19XG4qKVxubGV0IGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkID1cbiAgbGV0IHJlYyBsb29wIGFjYyBoZWFkID1cbiAgICBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHQxID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgaGVhZCB+cG9vbDp0LnBvb2wgaW5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbmV4dDFcbiAgICAgIHRoZW4gaGVhZCA6OiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgbG9vcCAobWVyZ2UgdCBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDIpKVxuICBpblxuICBtYXRjaCBsb29wIFtdIGhlYWQgd2l0aFxuICB8IFtdIC0+IE5vZGUuZW1wdHkgKClcbiAgfCBbIGggXSAtPiBoXG4gIHwgeCA6OiB4cyAtPiBMaXN0LmZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIGFjYyBoZWFwIC0+IG1lcmdlIHQgYWNjIGhlYXApXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHQucm9vdCB3aXRoXG4gICAgIHwgTm9kZSAoXywgY2hpbGRyZW4pIC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGRlcHRoIGNoaWxkcmVuID1cbiAgICAgICAgIGlmIGRlcHRoID49IG1heF9zdGFja19kZXB0aFxuICAgICAgICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgY2hpbGRlblxuICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICB8IFtoZWFkXSAtPiBTb21lIGhlYWRcbiAgICAgICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+XG4gICAgICAgICAgICAgbWVyZ2UgKG1lcmdlIGhlYWQgbmV4dDEpIChsb29wIChkZXB0aCArIDEpIG5leHQyKVxuICAgICAgICAgZW5kXG4gICAgICAgaW5cbiAgICAgICBsb29wIDAgY2hpbGRyZW5cbiAgIF19XG4qKVxubGV0IG1lcmdlX3BhaXJzID1cbiAgbGV0IG1heF9zdGFja19kZXB0aCA9IDFfMDAwIGluXG4gIGxldCByZWMgbG9vcCB0IGRlcHRoIGhlYWQgPVxuICAgIGlmIGRlcHRoID49IG1heF9zdGFja19kZXB0aFxuICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWRcbiAgICBlbHNlIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gaGVhZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHQxID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgaGVhZCB+cG9vbDp0LnBvb2wgaW5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbmV4dDFcbiAgICAgIHRoZW4gaGVhZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICAoKiBtZXJnZSB0aGUgZmlyc3QgdHdvIG5vZGVzIGluIG91ciBsaXN0LCBhbmQgdGhlbiBtZXJnZSB0aGUgcmVzdWx0IHdpdGggdGhlXG4gICAgICAgICAgIHJlc3VsdCBvZiByZWN1cnNpdmVseSBjYWxsaW5nIG1lcmdlX3BhaXJzIG9uIHRoZSB0YWlsICopXG4gICAgICAgIG1lcmdlIHQgKG1lcmdlIHQgaGVhZCBuZXh0MSkgKGxvb3AgdCAoZGVwdGggKyAxKSBuZXh0MikpKVxuICBpblxuICBmdW4gdCBoZWFkIC0+IGxvb3AgdCAwIGhlYWRcbjs7XG5cbmxldCByZW1vdmVfbm9uX2VtcHR5IHQgbm9kZSA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIE5vZGUuZGV0YWNoIG5vZGUgfnBvb2w7XG4gIGxldCBtZXJnZWRfY2hpbGRyZW4gPSBtZXJnZV9wYWlycyB0IChOb2RlLmRpc2Nvbm5lY3RfY2hpbGQgbm9kZSB+cG9vbCkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICBpZiBOb2RlLmVxdWFsIHQucm9vdCBub2RlIHRoZW4gbWVyZ2VkX2NoaWxkcmVuIGVsc2UgbWVyZ2UgdCB0LnJvb3QgbWVyZ2VkX2NoaWxkcmVuXG4gIGluXG4gIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICB0LnJvb3QgPC0gbmV3X3Jvb3Rcbjs7XG5cbmxldCByZW1vdmVfdG9wIHQgPSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KSB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0LnJvb3RcblxuKCogTm90ZSB0aGF0IHRoaXMgaXMgdGFpbC1yZWN1cnNpdmUgYW5kIHRoYXQgZWFjaCBub2RlIGlzIHZpc2l0ZWQgYXQgbW9zdCAzIHRpbWVzIChvbmNlXG4gICBmb3IgZWFjaCBicmFuY2ggb2YgdGhlIFwiaWZcIiksIHNvIGl0IHRha2VzIGxpbmVhciB0aW1lIGFuZCBjb25zdGFudCBzcGFjZS4gKilcbmxldCByZWMgcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgbm9kZSB+cG9vbCA9XG4gIGxldCBjaGlsZCA9IE5vZGUuY2hpbGQgbm9kZSB+cG9vbCBpblxuICBsZXQgc2libGluZyA9IE5vZGUuc2libGluZyBub2RlIH5wb29sIGluXG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBjaGlsZClcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBjaGlsZCB+cG9vbFxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBzaWJsaW5nKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHNpYmxpbmcgfnBvb2xcbiAgZWxzZSAoXG4gICAgbGV0IHByZXYgPSBOb2RlLnByZXYgbm9kZSB+cG9vbCBpblxuICAgIE5vZGUuZGV0YWNoIG5vZGUgfnBvb2w7XG4gICAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IHByZXYpIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgcHJldiB+cG9vbClcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdClcbiAgdGhlbiAoXG4gICAgcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgdC5yb290IH5wb29sOnQucG9vbDtcbiAgICB0LnJvb3QgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBwb3BfZXhuIHQgPVxuICBsZXQgciA9IHRvcF9leG4gdCBpblxuICByZW1vdmVfdG9wIHQ7XG4gIHJcbjs7XG5cbmxldCBwb3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9leG4gdClcblxubGV0IHBvcF9pZiB0IGYgPVxuICBtYXRjaCB0b3AgdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB2IC0+XG4gICAgaWYgZiB2XG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfdG9wIHQ7XG4gICAgICBTb21lIHYpXG4gICAgZWxzZSBOb25lXG47O1xuXG4oKiBwYWlyaW5nIGhlYXBzIGFyZSBub3QgYmFsYW5jZWQgdHJlZXMsIGFuZCB0aGVyZWZvcmUgd2UgY2FuJ3QgcmVseSBvbiBhIGJhbGFuY2VcbiAgIHByb3BlcnR5IHRvIHN0b3Agb3Vyc2VsdmVzIGZyb20gb3ZlcmZsb3dpbmcgdGhlIHN0YWNrLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIGxldCByZWMgbG9vcCBhY2MgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB0b192aXNpdCA9IE5vZGUuc2libGluZyB+cG9vbCBub2RlIDo6IE5vZGUuY2hpbGQgfnBvb2wgbm9kZSA6OiByZXN0IGluXG4gICAgICAgIGxvb3AgKGYgYWNjIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKSkgdG9fdmlzaXQpXG4gIGluXG4gIGxvb3AgaW5pdCBbIHQucm9vdCBdXG47O1xuXG4oKiBhbG1vc3QgaWRlbnRpY2FsIHRvIGZvbGQsIGNvcGllZCBmb3Igc3BlZWQgcHVycG9zZXMgKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBmIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKTtcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBbIHQucm9vdCBdXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBOb2RlLlBvb2wubGVuZ3RoIHQucG9vbFxuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgaXNfZW1wdHkgdCA9IE5vZGUuaXNfZW1wdHkgdC5yb290XG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9hcnJheSBhcnIgfmNtcCA9XG4gIGxldCB0ID0gY3JlYXRlIH5taW5fc2l6ZTooQXJyYXkubGVuZ3RoIGFycikgfmNtcCAoKSBpblxuICBBcnJheS5pdGVyIGFyciB+ZjooZnVuIHYgLT4gYWRkIHQgdik7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0IGwgfmNtcCA9IG9mX2FycmF5IChBcnJheS5vZl9saXN0IGwpIH5jbXBcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQgfD4gQXJyYXkuc29ydGVkX2NvcHkgfmNvbXBhcmU6dC5jbXApXG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIG5vZGUgOiAnYSBOb2RlLnRcbiAgICA7IG5vZGVfaWQgOiBOb2RlLklkLnRcbiAgICA7IGhlYXAgOiAnYSB0XG4gICAgfVxuXG4gICgqIElmIGlkcyBhcmUgZGlmZmVyZW50LCBpdCBtZWFucyB0aGF0IHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lXG4gICAgIG90aGVyIG1lYW5zIChhbmQgcG9zc2libHkgcmV1c2VkKS4gKilcbiAgbGV0IGlzX25vZGVfdmFsaWQgdCA9IE5vZGUuSWQuZXF1YWwgKE5vZGUuaWQgfnBvb2w6dC5oZWFwLnBvb2wgdC5ub2RlKSB0Lm5vZGVfaWRcblxuICBsZXQgdmFsdWUgdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0IHRoZW4gU29tZSAoTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX25vZGVfdmFsaWQgdFxuICAgIHRoZW4gTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sXG4gICAgZWxzZSBmYWlsd2l0aCBcIkhlYXAudmFsdWVfZXhuOiBub2RlIHdhcyByZW1vdmVkIGZyb20gdGhlIGhlYXBcIlxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHZhbHVlIHQgOiBhIG9wdGlvbildXG5lbmRcblxubGV0IHJlbW92ZSB0ICh0b2tlbiA6IF8gRWx0LnQpID1cbiAgaWYgbm90IChwaHlzX2VxdWFsIHQgdG9rZW4uaGVhcClcbiAgdGhlbiBmYWlsd2l0aCBcImNhbm5vdCByZW1vdmUgZnJvbSBhIGRpZmZlcmVudCBoZWFwXCJcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdG9rZW4ubm9kZSlcbiAgdGhlbiAoXG4gICAgaWYgRWx0LmlzX25vZGVfdmFsaWQgdG9rZW4gdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdG9rZW4ubm9kZTtcbiAgICB0b2tlbi5ub2RlIDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgYWRkX3JlbW92YWJsZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFkZF9ub2RlIHQgdiBpblxuICB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuOztcblxubGV0IHVwZGF0ZSB0IHRva2VuIHYgPVxuICByZW1vdmUgdCB0b2tlbjtcbiAgYWRkX3JlbW92YWJsZSB0IHZcbjs7XG5cbmxldCBmaW5kX2VsdCA9XG4gIGxldCByZWMgbG9vcCB0IGYgbm9kZXMgPVxuICAgIG1hdGNoIG5vZGVzIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgdCBmIHJlc3RcbiAgICAgIGVsc2UgaWYgZiAoTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wpXG4gICAgICB0aGVuIFNvbWUgeyBFbHQubm9kZTsgaGVhcCA9IHQ7IG5vZGVfaWQgPSBOb2RlLmlkIH5wb29sOnQucG9vbCBub2RlIH1cbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCB0IGYgKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCA6OiBOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sIDo6IHJlc3QpXG4gIGluXG4gIGZ1biB0IH5mIC0+IGxvb3AgdCBmIFsgdC5yb290IF1cbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgaGVhcCA9ICdhIHRcbiAgICB0eXBlICdhIHQgPSAnYSBOb2RlLnRcblxuICAgIGxldCB2YWx1ZSB0IGhlYXAgPSBOb2RlLnZhbHVlX2V4biB+cG9vbDpoZWFwLnBvb2wgdFxuICBlbmRcblxuICBsZXQgYWRkX3JlbW92YWJsZSA9IGFkZF9ub2RlXG4gIGxldCByZW1vdmUgPSByZW1vdmVfbm9uX2VtcHR5XG5cbiAgbGV0IHVwZGF0ZSB0IGVsdCB2ID1cbiAgICByZW1vdmUgdCBlbHQ7XG4gICAgYWRkX3JlbW92YWJsZSB0IHZcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBhbV9ydW5uaW5nX3Rlc3QgOiBib29sXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBhID1cbiAgICBpZiBNLmFtX3J1bm5pbmdfdGVzdCB0aGVuIFNleHAuQXRvbSBcIjxoaWRkZW5faW5fdGVzdD5cIiBlbHNlIHNleHBfb2ZfYSBhXG4gIDs7XG5cbiAgbW9kdWxlIFdpdGhfbm9uX3JvdW5kdHJpcHBpbmdfaW5fdGVzdF9vZl9zZXhwID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbW9kdWxlIFR1cm5lZF9vZmYgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYgPSBNYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gZmFsc2VcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVHVybmVkX29uID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb24gPSBNYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gdHJ1ZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb24udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiVHVybmVkIG9uXCIgPVxuICAgICAgcHJpbnRfcyBbJXNleHAgKDEwMjQgOiBUdXJuZWRfb24udCldO1xuICAgICAgWyVleHBlY3Qge3wgPGhpZGRlbl9pbl90ZXN0PiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiVHVybmVkIG9mZlwiID1cbiAgICAgIHByaW50X3MgKFslc2V4cF9vZjogVHVybmVkX29mZi50XSAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjQgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxuaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG4gIGVuZClcbiIsIm9wZW4gQ29yZVxuXG50eXBlICsnYSB0XG5cbigqIFRoaXMgW09iai5tYWdpY10gaXMgT0sgYmVjYXVzZSB3ZSBuZXZlciBhbGxvdyB1c2VyIGNvZGUgYWNjZXNzIHRvIFtub25lXSAoZXhjZXB0IHZpYVxuICAgW3Vuc2FmZV92YWx1ZV0pLiAgV2UgZGlzYWxsb3cgW18gVW9wdC50IFVvcHQudF0sIHNvIHRoZXJlIGlzIG5vIGNoYW5jZSBvZiBjb25mdXNpbmdcbiAgIFtub25lXSB3aXRoIFtzb21lIG5vbmVdLiAgQW5kIFtmbG9hdCBVb3B0LnQgYXJyYXldIGlzIHNpbWlsYXJseSBkaXNhbGxvd2VkLiAqKVxubGV0IG5vbmUgOiAnYSB0ID0gT2JqLm1hZ2ljIFwiVW9wdC5ub25lXCJcbmxldCBzb21lICh4IDogJ2EpIDogJ2EgdCA9IE9iai5tYWdpYyB4XG5sZXQgdW5zYWZlX3ZhbHVlICh4IDogJ2EgdCkgOiAnYSA9IE9iai5tYWdpYyB4XG5sZXQgaXNfbm9uZSB0ID0gcGh5c19lcXVhbCB0IG5vbmVcbmxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGlmIGlzX3NvbWUgdCB0aGVuIGludmFyaWFudF9hICh1bnNhZmVfdmFsdWUgdClcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIGlmIGlzX25vbmUgdCB0aGVuIFslc2V4cCBOb25lXSBlbHNlIFslc2V4cCBTb21lICh1bnNhZmVfdmFsdWUgdCA6IGEpXVxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gZmFpbHdpdGggXCJVb3B0LnZhbHVlX2V4blwiIGVsc2UgdW5zYWZlX3ZhbHVlIHRcbmxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh1bnNhZmVfdmFsdWUgdClcblxubGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBub25lXG4gIHwgU29tZSBhIC0+IHNvbWUgYVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBtb2R1bGUgZXhwbG9pdHMgdGhlIGZhY3QgdGhhdCBPQ2FtbCBkb2VzIG5vdCBwZXJmb3JtIGNvbnRleHQtc3dpdGNoZXMgdW5kZXJcbiAgIGNlcnRhaW4gY29uZGl0aW9ucy4gIEl0IGNhbiB0aGVyZWZvcmUgYXZvaWQgdXNpbmcgbXV0ZXhlcy5cblxuICAgR2l2ZW4gdGhlIHNlbWFudGljcyBvZiB0aGUgY3VycmVudCBPQ2FtbCBydW50aW1lIChhbmQgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUpLCBjb2RlXG4gICBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvdyB3aWxsIG5ldmVyIGNvbnRhaW4gYSBjb250ZXh0LXN3aXRjaC4gIFRoZSBkZWNpZGluZ1xuICAgY3JpdGVyaW9uIGlzIHdoZXRoZXIgdGhleSBjb250YWluIGFsbG9jYXRpb25zIG9yIGNhbGxzIHRvIGV4dGVybmFsL2J1aWx0aW4gZnVuY3Rpb25zLlxuICAgSWYgdGhlcmUgaXMgbm9uZSwgYSBjb250ZXh0LXN3aXRjaCBjYW5ub3QgaGFwcGVuLiAgQXNzaWdubWVudHMgd2l0aG91dCBhbGxvY2F0aW9ucyxcbiAgIGZpZWxkIGFjY2VzcywgcGF0dGVybi1tYXRjaGluZywgZXRjLiwgZG8gbm90IHRyaWdnZXIgY29udGV4dC1zd2l0Y2hlcy5cblxuICAgQ29kZSByZXZpZXdlcnMgc2hvdWxkIHRoZXJlZm9yZSBtYWtlIHN1cmUgdGhhdCB0aGUgc2VjdGlvbnMgZG9jdW1lbnRlZCBhcyBhdG9taWMgYmVsb3dcbiAgIGRvIG5vdCB2aW9sYXRlIHRoZSBhYm92ZSBhc3N1bXB0aW9ucy4gIEl0IGlzIHBydWRlbnQgdG8gZGlzYXNzZW1ibGUgdGhlIC5vIGZpbGUgKHVzaW5nXG4gICBbb2JqZHVtcCAtZHJdKSBhbmQgZXhhbWluZSBpdC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dCA6ICgnYSB0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IFVvcHQubm9uZTsgbmV4dCA9IFVvcHQubm9uZSB9XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAoKiBbZnJvbnRdIHRvIFtiYWNrXSBoYXMgW2xlbmd0aCArIDFdIGxpbmtlZCBlbGVtZW50cywgd2hlcmUgdGhlIGZpcnN0IFtsZW5ndGhdIGhvbGQgdGhlXG4gICAgIHZhbHVlcyBpbiB0aGUgcXVldWUsIGFuZCB0aGUgbGFzdCBpcyBbYmFja10sIGhvbGRpbmcgbm8gdmFsdWUuICopXG4gIDsgbXV0YWJsZSBmcm9udCA6ICdhIEVsdC50XG4gIDsgbXV0YWJsZSBiYWNrIDogJ2EgRWx0LnRcbiAgKCogW3VudXNlZF9lbHRzXSBpcyBzaW5nbHkgbGlua2VkIHZpYSBbbmV4dF0sIGFuZCBlbmRzIHdpdGggW3NlbnRpbmVsXS4gIEFsbCBlbHRzIGluXG4gICAgIFt1bnVzZWRfZWx0c10gaGF2ZSBbVW9wdC5pc19ub25lIGVsdC52YWx1ZV0uICopXG4gIDsgbXV0YWJsZSB1bnVzZWRfZWx0cyA6ICdhIEVsdC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGxldCBpID0gcmVmIHQubGVuZ3RoIGluXG4gICAgICAgICAgIGxldCByID0gcmVmIGZyb250IGluXG4gICAgICAgICAgIHdoaWxlICFpID4gMCBkb1xuICAgICAgICAgICAgIGRlY3IgaTtcbiAgICAgICAgICAgICBsZXQgZWx0ID0gIXIgaW5cbiAgICAgICAgICAgICByIDo9IFVvcHQudmFsdWVfZXhuIGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfc29tZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAhciB0LmJhY2spKSlcbiAgICAgIH5iYWNrOihjaGVjayAoZnVuIGJhY2sgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgYmFjay5FbHQudmFsdWUpKSlcbiAgICAgIH51bnVzZWRfZWx0czpcbiAgICAgICAgKGNoZWNrIChmdW4gdW51c2VkX2VsdHMgLT5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgdW51c2VkX2VsdHMgaW5cbiAgICAgICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgICAgICAgbGV0IGVsdCA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgICAgICAgICAgciA6PSBlbHQuRWx0Lm5leHQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWx0LnZhbHVlKVxuICAgICAgICAgICBkb25lKSkpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGVsdCA9IEVsdC5jcmVhdGUgKCkgaW5cbiAgeyBmcm9udCA9IGVsdDsgYmFjayA9IGVsdDsgbGVuZ3RoID0gMDsgdW51c2VkX2VsdHMgPSBVb3B0Lm5vbmUgfVxuOztcblxubGV0IGdldF91bnVzZWRfZWx0IHQgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBpZiBVb3B0LmlzX3NvbWUgdC51bnVzZWRfZWx0c1xuICB0aGVuIChcbiAgICBsZXQgZWx0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC51bnVzZWRfZWx0cyBpblxuICAgIHQudW51c2VkX2VsdHMgPC0gZWx0Lm5leHQ7XG4gICAgZWx0ICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKSlcbiAgZWxzZSBFbHQuY3JlYXRlICgpXG47O1xuXG5sZXQgZW5xdWV1ZSAodHlwZSBhKSAodCA6IGEgdCkgKGEgOiBhKSA9XG4gIGxldCBuZXdfYmFjayA9IGdldF91bnVzZWRfZWx0IHQgaW5cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICB0LmJhY2sudmFsdWUgPC0gVW9wdC5zb21lIGE7XG4gIHQuYmFjay5uZXh0IDwtIFVvcHQuc29tZSBuZXdfYmFjaztcbiAgdC5iYWNrIDwtIG5ld19iYWNrXG47O1xuXG4oKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcblxubGV0IHJldHVybl91bnVzZWRfZWx0IHQgKGVsdCA6IF8gRWx0LnQpID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgZWx0LnZhbHVlIDwtIFVvcHQubm9uZTtcbiAgZWx0Lm5leHQgPC0gdC51bnVzZWRfZWx0cztcbiAgdC51bnVzZWRfZWx0cyA8LSBVb3B0LnNvbWUgZWx0O1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgKClcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0ID1cbiAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBvZiBlbXB0eSBxdWV1ZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX2RlcXVldWVfZW1wdHkgdDtcbiAgbGV0IGVsdCA9IHQuZnJvbnQgaW5cbiAgbGV0IGEgPSBlbHQudmFsdWUgaW5cbiAgdC5mcm9udCA8LSBVb3B0LnVuc2FmZV92YWx1ZSBlbHQubmV4dDtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgcmV0dXJuX3VudXNlZF9lbHQgdCBlbHQ7XG4gIFVvcHQudW5zYWZlX3ZhbHVlIGFcbjs7XG5cbmxldCBjbGVhcl9pbnRlcm5hbF9wb29sIHQgPSB0LnVudXNlZF9lbHRzIDwtIFVvcHQubm9uZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgVW9wdCA9IFVvcHRcbmVuZFxuIiwiaW5jbHVkZSBDb3JlLkNvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbigqIFthZnRlcl0gaXMgbGlrZSBbYWRkXSwgYnV0IGRlYWxzIG5pY2VseSB3aXRoIHRoZSBjYXNlIG9mIG92ZXJmbG93IGJ5IGluc3RlYWQgcmV0dXJuaW5nXG4gICBbbWF4X3ZhbHVlXS4gIFRpbWUtc291cmNlIGZ1bmN0aW9ucyB1c2UgW2FmdGVyXSB0byBhdm9pZCBpbW1lZGlhdGVseSBmaXJpbmcgZXZlbnRzIHRoYXRcbiAgIHNob3VsZCBuZXZlciBmaXJlLCBkdWUgdG8gdGhlIG92ZXJmbG93IGxlYWRpbmcgdG8gYSBuZWdhdGl2ZSB0aW1lIHRoYXQgYXBwZWFycyB0byBiZSBpblxuICAgdGhlIHBhc3QuICBXZSBkb24ndCBjaGVjayB1bmRlcmZsb3cgYmVjYXVzZSB0aGF0IGlzIHZlcnkgdW5saWtlbHksIHJlcXVpcmluZyBib3RoIGFcbiAgIG5lZ2F0aXZlIHRpbWUgYW5kIGEgbmVnYXRpdmUgc3Bhbi4gKilcbmxldCBhZnRlciB0IHNwYW4gPVxuICBsZXQgcmVzdWx0ID0gYWRkIHQgc3BhbiBpblxuICBpZiBTcGFuLiggPiApIHNwYW4gU3Bhbi56ZXJvICYmIHJlc3VsdCA8IHQgdGhlbiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyBlbHNlIHJlc3VsdFxuOztcbiIsIm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnlcbmluY2x1ZGUgQXN5bmNfa2VybmVsX2NvbmZpZy5QcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcblxubGV0IGxvZyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgZXByaW50ZlxuICAgIFwiJXNcXG4lIVwiXG4gICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgIChbJXNleHBfb2Y6IFNleHAudCAqIFRpbWVfbnMudCAqIHN0cmluZyAqIGFdXG4gICAgICAgICAgKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCksIFRpbWVfbnMubm93ICgpLCBtZXNzYWdlLCBhKSkpXG47O1xuXG5sZXQgbG9nX3N0cmluZyBtZXNzYWdlID0gbG9nIG1lc3NhZ2UgKCkgWyVzZXhwX29mOiB1bml0XVxuIiwibW9kdWxlIERlYnVnX2luX3RoaXNfZGlyZWN0b3J5ID0gRGVidWdcbm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiEgQ29yZVxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z19pbl90aGlzX2RpcmVjdG9yeVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgQXN5bmNfa2VybmVsX2NvbmZpZy5NYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxubGV0IGVwcmludCA9IENvcmUuRGVidWcuZXByaW50XG5sZXQgZXByaW50X3MgPSBDb3JlLkRlYnVnLmVwcmludF9zXG5sZXQgZXByaW50cyA9IENvcmUuRGVidWcuZXByaW50c1xubGV0IHByaW50X3Mgc2V4cCA9IHByaW50ZiBcIiVzXFxuJSFcIiAoc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0pXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xuXG4oKiBXZSBkb24ndCB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIGluIEFzeW5jX2tlcm5lbCwgdG8gYXZvaWQgZGlmZmljdWx0aWVzIHdpdGhcbiAgIHVzaW5nIGl0IG9uIGpzX29mX29jYW1sLiAqKVxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTm9ybWFsXG4gIHwgTG93XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbm9ybWFsID0gTm9ybWFsXG5sZXQgbG93ID0gTG93XG4iLCIoKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIHR5cGVzIGF0IHRoZSBoZWFydCBvZiBBc3luYy4gIFRoZSBmdW5jdGlvbnNcbiAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHlwZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmlsZShzKSBmb3IgZWFjaCBtb2R1bGUuXG4gICBUaGlzIGZpbGUgc2hvdWxkIGRlZmluZSBvbmx5IHR5cGVzLCBub3QgZnVuY3Rpb25zLCBzaW5jZSBmdW5jdGlvbnMgZGVmaW5lZCBpbnNpZGUgdGhlXG4gICByZWN1cnNpdmUgbW9kdWxlcyBhcmUgbm90IGlubGluZWQuXG5cbiAgIElmIHlvdSBuZWVkIHRvIGFkZCBmdW5jdGlvbmFsaXR5IHRvIGEgbW9kdWxlIGJ1dCBkb2luZyBzbyB3b3VsZCBjcmVhdGUgYSBkZXBlbmRlbmN5XG4gICBjeWNsZSwgc3BsaXQgdGhlIGZpbGUgaW50byBwaWVjZXMgYXMgbmVlZGVkIHRvIGJyZWFrIHRoZSBjeWNsZSwgZS5nLiBzY2hlZHVsZXIwLm1sLFxuICAgc2NoZWR1bGVyMS5tbCwgc2NoZWR1bGVyLm1sLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHJlYyBDZWxsIDogc2lnXG4gIHR5cGUgYW55ID1cbiAgICBbIGBFbXB0eVxuICAgIHwgYEVtcHR5X29uZV9oYW5kbGVyXG4gICAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICB8IGBGdWxsXG4gICAgfCBgSW5kaXJcbiAgICBdXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgICAgeyBtdXRhYmxlIHJ1biA6ICdhIC0+IHVuaXRcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgOyBtdXRhYmxlIHByZXYgOiAnYSBIYW5kbGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIG5leHQgOiAnYSBIYW5kbGVyLnRcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSB0XG4gICAgfCBFbXB0eV9vbmVfaGFuZGxlciA6XG4gICAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgdFxuICAgIHwgRW1wdHkgOiAoJ2EsIFs+IGBFbXB0eSBdKSB0XG4gICAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSB0XG4gICAgfCBJbmRpciA6ICdhIEl2YXIudCAtPiAoJ2EsIFs+IGBJbmRpciBdKSB0XG5lbmQgPVxuICBDZWxsXG5cbmFuZCBIYW5kbGVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgQ2VsbC50XG5lbmQgPVxuICBIYW5kbGVyXG5cbmFuZCBJdmFyIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBDZWxsLmFueSkgQ2VsbC50IH1cblxuICBtb2R1bGUgSW1tdXRhYmxlIDogc2lnXG4gICAgdHlwZSAnYSB0ID0geyBjZWxsIDogKCdhLCBDZWxsLmFueSkgQ2VsbC50IH1cbiAgZW5kXG5lbmQgPVxuICBJdmFyXG5cbmFuZCBEZWZlcnJlZCA6IHNpZ1xuICB0eXBlICsnYSB0XG5lbmQgPVxuICBEZWZlcnJlZFxuXG5hbmQgRXhlY3V0aW9uX2NvbnRleHQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICAgIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIEV4ZWN1dGlvbl9jb250ZXh0XG5cbmFuZCBGb3J3YXJkaW5nIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBEZXRhY2hlZFxuICAgIHwgUGFyZW50IG9mIE1vbml0b3IudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4blxuZW5kID1cbiAgRm9yd2FyZGluZ1xuXG5hbmQgTW9uaXRvciA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IEluZm8udFxuICAgIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gICAgOyBpZCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIEl2YXIudFxuICAgIDsgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgICA7IG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVGFpbC50IGxpc3RcbiAgICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gICAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgICB9XG5lbmQgPVxuICBNb25pdG9yXG5cbmFuZCBUYWlsIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBuZXh0IDogJ2EgU3RyZWFtLm5leHQgSXZhci50IH1cbmVuZCA9XG4gIFRhaWxcblxuYW5kIFN0cmVhbSA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBuZXh0IERlZmVycmVkLnRcblxuICBhbmQgJ2EgbmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5lbmQgPVxuICBTdHJlYW1cblxuKCogV2UgYXZvaWQgdXNpbmcgW21vZHVsZSByZWNdIHRvIGRlZmluZSBbQnZhcl0sIHNvIHRoYXQgW3RvX3JlcHJdIGFuZCBbb2ZfcmVwcl0gYXJlXG4gICBpbmxpbmVkLiAqKVxubW9kdWxlIEJ2YXIgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybWlzc2lvbikgdFxuXG4gICgqKiBbcmVwcl0gZXhpc3RzIHNvIHRoYXQgd2UgbWF5IGhpZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgW0J2YXIudF0sIGFuZCB0aGVuIGFkZCBhXG4gICAgICBwaGFudG9tIHR5cGUgdG8gaXQgdXBzdHJlYW0uICBXaXRob3V0IHRoaXMsIHRoZSBwaGFudG9tIHR5cGUgdmFyaWFibGUgd291bGQgYWxsb3dcbiAgICAgIGZvciBhbnl0aGluZyB0byBiZSBjb2VyY2VkIGluIGFuZCBvdXQsIHNpbmNlIGl0IGlzIHVudXNlZC4gKilcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHZhbCBvZl9yZXByIDogJ2EgcmVwciAtPiAoJ2EsICdwZXJtaXNzaW9uKSB0XG4gIHZhbCB0b19yZXByIDogKCdhLCAncGVybWlzc2lvbikgdCAtPiAnYSByZXByXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICdhIHJlcHJcblxuICBsZXQgdG9fcmVwciB0ID0gdFxuICBsZXQgb2ZfcmVwciB0ID0gdFxuZW5kXG5cbm1vZHVsZSByZWMgRXZlbnQgOiBzaWdcbiAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpcmVkXG4gICAgICB8IEhhcHBlbmluZ1xuICAgICAgfCBTY2hlZHVsZWRcbiAgICAgIHwgVW5zY2hlZHVsZWRcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICB9XG5lbmQgPVxuICBFdmVudFxuXG5hbmQgRXh0ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgdCA9IFQgOiBFeGVjdXRpb25fY29udGV4dC50ICogKCdhIC0+IHVuaXQpICogJ2EgLT4gdFxuZW5kID1cbiAgRXh0ZXJuYWxfam9iXG5cbmFuZCBKb2IgOiBzaWdcbiAgdHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCBPYmoudCkgUG9vbC5TbG90cy50M1xuICB0eXBlIHQgPSBzbG90cyBQb29sLlBvaW50ZXIudFxuZW5kID1cbiAgSm9iXG5cbmFuZCBKb2Jfb3JfZXZlbnQgOiBzaWdcbiAgdHlwZSB0XG5lbmQgPVxuICBKb2Jfb3JfZXZlbnRcblxuYW5kIEpvYl9wb29sIDogc2lnXG4gIHR5cGUgdCA9IEpvYi5zbG90cyBQb29sLnRcbmVuZCA9XG4gIEpvYl9wb29sXG5cbmFuZCBKb2JfcXVldWUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnMgOiBPYmoudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbWFzayA6IGludFxuICAgIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICB9XG5lbmQgPVxuICBKb2JfcXVldWVcblxuYW5kIEpvYnMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsIDogSm9iX3F1ZXVlLnRcbiAgICA7IGxvdyA6IEpvYl9xdWV1ZS50XG4gICAgfVxuZW5kID1cbiAgSm9ic1xuXG5hbmQgU2NoZWR1bGVyIDogc2lnXG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgICA7IG11dGFibGUgbWFpbl9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgICA7IG11dGFibGUgY3ljbGVfc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IEN5Y2xlX2hvb2sudCBsaXN0XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IEN5Y2xlX2hvb2sudCBsaXN0XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDogKEN5Y2xlX2hvb2tfaGFuZGxlLnQsIEN5Y2xlX2hvb2sudCkgSGFzaHRibC50XG4gICAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfbnVtX2pvYnMgOiBpbnRcbiAgICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBUaW1lX3NvdXJjZS50MVxuICAgIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV2ZW50X2FkZGVkX2hvb2sgOiAoVGltZV9ucy50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSB5aWVsZCA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIGNoZWNrX2ludmFyaWFudHMgOiBib29sXG4gICAgOyBtdXRhYmxlIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudFxuICAgIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgICB9XG5lbmQgPVxuICBTY2hlZHVsZXJcblxuYW5kIEN5Y2xlX2hvb2sgOiBzaWdcbiAgdHlwZSB0ID0gdW5pdCAtPiB1bml0XG5lbmQgPVxuICBDeWNsZV9ob29rXG5cbmFuZCBDeWNsZV9ob29rX2hhbmRsZSA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuYW5kIFRpbWVfc291cmNlX2lkIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5cbmFuZCBUaW1lX3NvdXJjZSA6IHNpZ1xuICB0eXBlIC0ncncgdDEgPVxuICAgIHsgaWQgOiBUaW1lX3NvdXJjZV9pZC50XG4gICAgOyBtdXRhYmxlIGFkdmFuY2VfZXJyb3JzIDogRXJyb3IudCBsaXN0XG4gICAgOyBtdXRhYmxlIGFtX2FkdmFuY2luZyA6IGJvb2xcbiAgICA7IGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC50XG4gICAgOyBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBtdXRhYmxlIG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgfVxuZW5kID1cbiAgVGltZV9zb3VyY2VcblxuYW5kIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA6IHNpZ1xuICBtb2R1bGUgRXhlY19yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbmVuZCA9XG4gIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlclxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5tb25pdG9yXG5cbm1vZHVsZSBGb3J3YXJkaW5nID0gVHlwZXMuRm9yd2FyZGluZ1xuXG50eXBlIHQgPSBUeXBlcy5Nb25pdG9yLnQgPVxuICB7IG5hbWUgOiBJbmZvLnRcbiAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgOyBpZCA6IGludFxuICA7IG11dGFibGUgbmV4dF9lcnJvciA6IGV4biBUeXBlcy5JdmFyLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gc2NoZWR1bGVzIGEgam9iIGZvciBlYWNoIGVsZW1lbnQgb2YgW2hhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKFR5cGVzLkV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBleHRlbmRzIGVhY2ggdGFpbCBpbiBbdGFpbHNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVHlwZXMuVGFpbC50IGxpc3RcbiAgOyBtdXRhYmxlIGhhc19zZWVuX2Vycm9yIDogYm9vbFxuICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID1cbiAgbWF0Y2ggdC5oZXJlIHdpdGhcbiAgfCBOb25lIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KV1cbiAgfCBTb21lIGhlcmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpLCAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGRlc2NyaXB0aW9ucyA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBsZXQgYWMgPSBkZXNjcmlwdGlvbiB0IDo6IGFjIGluXG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPiBMaXN0LnJldiBhY1xuICAgIHwgUGFyZW50IHQgLT4gbG9vcCB0IGFjXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXVxuOztcblxubGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIChkZXNjcmlwdGlvbnMgdCA6IFNleHAudCBsaXN0KV1cblxubGV0IG5leHRfaWQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcblxubGV0IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBwYXJlbnQgPVxuICBsZXQgaWQgPSBuZXh0X2lkICgpIGluXG4gIGxldCBuYW1lID1cbiAgICBtYXRjaCBpbmZvLCBuYW1lIHdpdGhcbiAgICB8IFNvbWUgaSwgTm9uZSAtPiBpXG4gICAgfCBTb21lIGksIFNvbWUgcyAtPiBJbmZvLnRhZyBpIH50YWc6c1xuICAgIHwgTm9uZSwgU29tZSBzIC0+IEluZm8ub2Zfc3RyaW5nIHNcbiAgICB8IE5vbmUsIE5vbmUgLT4gSW5mby5jcmVhdGUgXCJpZFwiIGlkIFslc2V4cF9vZjogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudF1cbiAgaW5cbiAgbGV0IHQgPVxuICAgIHsgbmFtZVxuICAgIDsgaGVyZVxuICAgIDsgZm9yd2FyZGluZyA9XG4gICAgICAgIChtYXRjaCBwYXJlbnQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IFJlcG9ydF91bmNhdWdodF9leG5cbiAgICAgICAgIHwgU29tZSBwYXJlbnQgLT4gUGFyZW50IHBhcmVudClcbiAgICA7IGlkXG4gICAgOyBuZXh0X2Vycm9yID0geyBjZWxsID0gRW1wdHkgfVxuICAgIDsgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgPSBCYWcuY3JlYXRlICgpXG4gICAgOyB0YWlsc19mb3JfYWxsX2Vycm9ycyA9IFtdXG4gICAgOyBoYXNfc2Vlbl9lcnJvciA9IGZhbHNlXG4gICAgfVxuICBpblxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImNyZWF0ZWQgbW9uaXRvclwiIHQgWyVzZXhwX29mOiB0XTtcbiAgdFxuOztcblxubGV0IG1haW4gPSBjcmVhdGVfd2l0aF9wYXJlbnQgfm5hbWU6XCJtYWluXCIgTm9uZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5cbnR5cGUgdCA9IFR5cGVzLkV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgOyBwcmlvcml0eSA6IFByaW9yaXR5LnRcbiAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBtYWluID1cbiAgeyBtb25pdG9yID0gTW9uaXRvci5tYWluXG4gIDsgcHJpb3JpdHkgPSBQcmlvcml0eS5ub3JtYWxcbiAgOyBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuZW1wdHlcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA9IFtdXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfbGlrZSA/bW9uaXRvciA/cHJpb3JpdHkgP2xvY2FsX3N0b3JhZ2UgdCA9XG4gIGxldCBtb25pdG9yID0gT3B0aW9uLnZhbHVlIG1vbml0b3IgfmRlZmF1bHQ6dC5tb25pdG9yIGluXG4gIHsgbW9uaXRvclxuICA7IHByaW9yaXR5ID0gT3B0aW9uLnZhbHVlIHByaW9yaXR5IH5kZWZhdWx0OnQucHJpb3JpdHlcbiAgOyBsb2NhbF9zdG9yYWdlID0gT3B0aW9uLnZhbHVlIGxvY2FsX3N0b3JhZ2UgfmRlZmF1bHQ6dC5sb2NhbF9zdG9yYWdlXG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgPSB0LmJhY2t0cmFjZV9oaXN0b3J5XG4gIH1cbjs7XG5cbmxldCBmaW5kX2xvY2FsIHQga2V5ID0gVW5pdl9tYXAuZmluZCB0LmxvY2FsX3N0b3JhZ2Uga2V5XG5cbmxldCB3aXRoX2xvY2FsIHQga2V5IGRhdGEgPVxuICB7IHQgd2l0aCBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuY2hhbmdlIHQubG9jYWxfc3RvcmFnZSBrZXkgfmY6KGZ1biBfIC0+IGRhdGEpIH1cbjs7XG5cbmxldCByZWNvcmRfYmFja3RyYWNlIHQgPVxuICB7IHQgd2l0aCBiYWNrdHJhY2VfaGlzdG9yeSA9IEJhY2t0cmFjZS5nZXQgKCkgOjogdC5iYWNrdHJhY2VfaGlzdG9yeSB9XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLkV4dGVybmFsX2pvYlxuXG5sZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCI8am9iPlwiXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gUG9vbFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5cbnR5cGUgc2xvdHMgPSAoRXhlY3V0aW9uX2NvbnRleHQudCwgT2JqLnQgLT4gdW5pdCwgKE9iai50W0BzZXhwLm9wYXF1ZV0pKSBTbG90cy50M1xuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID0gc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG5sZXQgY3JlYXRlICgpID0gY3JlYXRlIFNsb3RzLnQzIH5jYXBhY2l0eToxIH5kdW1teTooZHVtbXlfZSwgZHVtbXlfZiwgZHVtbXlfYSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBKb2JfcG9vbC5zbG90cyBQb29sLlBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRXZlbnQgPSBUeXBlcy5FdmVudFxubW9kdWxlIEpvYiA9IFR5cGVzLkpvYlxuaW5jbHVkZSBUeXBlcy5Kb2Jfb3JfZXZlbnRcblxuKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dCB0b1xuICAgW09iai5tYWdpY11zLiAqKVxubW9kdWxlIF8gOiBzaWcgZW5kID0gc3RydWN0XG4gIG9wZW4gVHlwZXNcbiAgb3BlbiBFdmVudFxuXG4gIHR5cGUgX3QgPSB0ID1cbiAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVuc3VyZV9wcml2YXRlX2ludCAoTSA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBfdCA9IE0udFxuICBlbmRcblxuICBpbmNsdWRlIEVuc3VyZV9wcml2YXRlX2ludCAoSm9iKVxuZW5kXG5cbmxldCBvZl9ldmVudCBldmVudCA6IHQgPSBPYmoubWFnaWMgKGV2ZW50IDogRXZlbnQudClcbmxldCBvZl9qb2Igam9iIDogdCA9IE9iai5tYWdpYyAoam9iIDogSm9iLnQpXG5sZXQgaXNfZXZlbnQgKHQgOiB0KSA9IE9iai5pc19ibG9jayAoT2JqLnJlcHIgdClcbmxldCBpc19qb2IgKHQgOiB0KSA9IE9iai5pc19pbnQgKE9iai5yZXByIHQpXG5cbm1vZHVsZSBNYXRjaCA9IHN0cnVjdFxuICB0eXBlIF8ga2luZCA9XG4gICAgfCBFdmVudCA6IEV2ZW50LnQga2luZFxuICAgIHwgSm9iIDogSm9iLnQga2luZFxuXG4gIHR5cGUgcGFja2VkID0gSyA6IF8ga2luZCAtPiBwYWNrZWQgW0BAdW5ib3hlZF1cblxuICBsZXQga2luZCB0ID0gaWYgaXNfZXZlbnQgdCB0aGVuIEsgRXZlbnQgZWxzZSBLIEpvYlxuICBsZXQgcHJvamVjdCAodHlwZSBhKSAoXyA6IGEga2luZCkgam9iX29yX2V2ZW50ID0gKE9iai5tYWdpYyA6IHQgLT4gYSkgam9iX29yX2V2ZW50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUeXBlcy5TY2hlZHVsZXJcblxubGV0IGV2ZW50cyB0ID0gdC50aW1lX3NvdXJjZS5ldmVudHNcblxubGV0IHNldF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgKCogQXZvaWQgYSBjYW1sX21vZGlmeSBpbiBtb3N0IGNhc2VzLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0KVxuICB0aGVuIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCA8LSBleGVjdXRpb25fY29udGV4dFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjBcblxubGV0IGR1bW15X2UgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG5sZXQgZHVtbXlfZiA6IE9iai50IC0+IHVuaXQgPSBpZ25vcmVcbmxldCBkdW1teV9hIDogT2JqLnQgPSBPYmoucmVwciAoKVxubGV0IHNsb3RzX3Blcl9lbHQgPSAzXG5cbm1vZHVsZSBBID0gVW5pZm9ybV9hcnJheVxuXG4oKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgc3BlY2lhbGl6ZWQgW0ZsYXRfcXVldWVdLCBkb25lIGZvciByZWFzb25zIG9mIHNwZWVkLiAqKVxudHlwZSB0ID0gVHlwZXMuSm9iX3F1ZXVlLnQgPVxuICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gIDsgbXV0YWJsZSBqb2JzX2xlZnRfdGhpc19jeWNsZSA6IGludFxuICA7ICgqIFtqb2JzXSBpcyBhbiBhcnJheSBvZiBsZW5ndGggW2NhcGFjaXR5IHQgKiBzbG90c19wZXJfZWx0XSwgd2hlcmUgZWFjaCBlbHQgaGFzIHRoZVxuICAgICAgIHRocmVlIGNvbXBvbmVudHMgb2YgYSBqb2IgKFtleGVjdXRpb25fY29udGV4dF0sIFtmXSwgW2FdKSBpbiBjb25zZWN1dGl2ZSBzcG90cyBpblxuICAgICAgIFtqb2JzXS4gIFtlbnF1ZXVlXSBkb3VibGVzIHRoZSBsZW5ndGggb2YgW2pvYnNdIGlmIFtqb2JzXSBpcyBmdWxsLiAgW2pvYnNdIG5ldmVyXG4gICAgICAgc2hyaW5rcy4gIFtqb2JzXSBpcyBzb21ld2hhdCBsaWtlIGEgW0NvcmUuUG9vbF0gc3BlY2lhbGl6ZWQgdG8gMy10dXBsZXM7IHdlXG4gICAgICAgZG9uJ3QgdXNlIFtQb29sXSBiZWNhdXNlIHRoYXQgaW1wbGVtZW50cyBhIHNldCwgd2hlcmUgW2pvYnNdIGlzIGEgcXVldWUuICopXG4gICAgbXV0YWJsZSBqb2JzIDogKE9iai50IEEudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFttYXNrXSBpcyBbY2FwYWNpdHkgdCAtIDFdLCBhbmQgaXMgdXNlZCBmb3IgcXVpY2tseSBjb21wdXRpbmcgW2kgbW9kIChjYXBhY2l0eVxuICAgICAgIHQpXSAqKVxuICAgIG11dGFibGUgbWFzayA6IGludFxuICA7ICgqIFtmcm9udF0gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBqb2IgaW4gdGhlIHF1ZXVlLiAgVGhlIGFycmF5IGluZGV4IG9mIHRoYXQgam9iJ3NcbiAgICAgICBleGVjdXRpb24gY29udGV4dCBpcyBbZnJvbnQgKiBzbG90c19wZXJfZWx0XS4gKilcbiAgICBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgb2Zmc2V0IHQgaSA9ICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKiBzbG90c19wZXJfZWx0XG5sZXQgY2FwYWNpdHkgdCA9IHQubWFzayArIDFcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bnVtX2pvYnNfcnVuOihjaGVjayAoZnVuIG51bV9qb2JzX3J1biAtPiBhc3NlcnQgKG51bV9qb2JzX3J1biA+PSAwKSkpXG4gICAgICB+am9ic19sZWZ0X3RoaXNfY3ljbGU6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYnNfbGVmdF90aGlzX2N5Y2xlIC0+IGFzc2VydCAoam9ic19sZWZ0X3RoaXNfY3ljbGUgPj0gMCkpKVxuICAgICAgfmpvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYnMgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgICAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudFxuICAgICAgICAgICAgICAgKE9iai5vYmogKEEuZ2V0IGpvYnMgKG9mZnNldCB0IGkpKSA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm1hc2s6XG4gICAgICAgIChjaGVjayAoZnVuIG1hc2sgLT5cbiAgICAgICAgICAgbGV0IGNhcGFjaXR5ID0gbWFzayArIDEgaW5cbiAgICAgICAgICAgYXNzZXJ0IChJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgKiBzbG90c19wZXJfZWx0ID0gQS5sZW5ndGggdC5qb2JzKSkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPCBjYXBhY2l0eSB0KSkpXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5IHQpKSkpXG47O1xuXG5sZXQgY3JlYXRlX2FycmF5IH5jYXBhY2l0eSA9IEEuY3JlYXRlX29ial9hcnJheSB+bGVuOihjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgY2FwYWNpdHkgPSAxIGluXG4gIHsgbnVtX2pvYnNfcnVuID0gMFxuICA7IGpvYnNfbGVmdF90aGlzX2N5Y2xlID0gMFxuICA7IGpvYnMgPSBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5XG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGZyb250ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgfVxuOztcblxubGV0IGNsZWFyIHQgPVxuICB0LmZyb250IDwtIDA7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gMFxuOztcblxubGV0IGdyb3cgdCA9XG4gIGxldCBvbGRfY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHkgKiAyIGluXG4gIGxldCBvbGRfam9icyA9IHQuam9icyBpblxuICBsZXQgb2xkX2Zyb250ID0gdC5mcm9udCBpblxuICBsZXQgbGVuMSA9IEludC5taW4gdC5sZW5ndGggKG9sZF9jYXBhY2l0eSAtIG9sZF9mcm9udCkgKiBzbG90c19wZXJfZWx0IGluXG4gIGxldCBsZW4yID0gKHQubGVuZ3RoICogc2xvdHNfcGVyX2VsdCkgLSBsZW4xIGluXG4gIGxldCBuZXdfam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHk6bmV3X2NhcGFjaXR5IGluXG4gIEEuYmxpdFxuICAgIH5sZW46bGVuMVxuICAgIH5zcmM6b2xkX2pvYnNcbiAgICB+c3JjX3Bvczoob2xkX2Zyb250ICogc2xvdHNfcGVyX2VsdClcbiAgICB+ZHN0Om5ld19qb2JzXG4gICAgfmRzdF9wb3M6MDtcbiAgQS5ibGl0IH5sZW46bGVuMiB+c3JjOm9sZF9qb2JzIH5zcmNfcG9zOjAgfmRzdDpuZXdfam9icyB+ZHN0X3BvczpsZW4xO1xuICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgdC5qb2JzIDwtIG5ld19qb2JzO1xuICB0LmZyb250IDwtIDBcbjs7XG5cbmxldCBzZXQgKHR5cGUgYSkgdCBpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBvZmZzZXQgPSBvZmZzZXQgdCBpIGluXG4gIEEudW5zYWZlX3NldCB0LmpvYnMgb2Zmc2V0IChPYmoucmVwciAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDEpIChPYmoucmVwciAoZiA6IGEgLT4gdW5pdCkpO1xuICBBLnVuc2FmZV9zZXQgdC5qb2JzIChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gZ3JvdyB0O1xuICBzZXQgdCB0Lmxlbmd0aCBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiSm9icy5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgZ290IG5lZ2F0aXZlIG51bWJlclwiIChuIDogaW50KSAodCA6IHQpXTtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSBuXG47O1xuXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gdC5sZW5ndGggPiAwICYmIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPiAwXG5cbmxldCBydW5fam9iIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0Lm51bV9qb2JzX3J1biA8LSB0Lm51bV9qb2JzX3J1biArIDE7XG4gIFNjaGVkdWxlci5zZXRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0O1xuICBmIGFcbjs7XG5cbmxldCBydW5fZXh0ZXJuYWxfam9icyB0IChzY2hlZHVsZXIgOiBTY2hlZHVsZXIudCkgPVxuICBsZXQgZXh0ZXJuYWxfam9icyA9IHNjaGVkdWxlci5leHRlcm5hbF9qb2JzIGluXG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCBleHRlcm5hbF9qb2JzID4gMCBkb1xuICAgIGxldCAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSkgPVxuICAgICAgVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gZXh0ZXJuYWxfam9ic1xuICAgIGluXG4gICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZG9uZVxuOztcblxubGV0IHJ1bl9qb2JzICh0eXBlIGEpIHQgc2NoZWR1bGVyID1cbiAgKCogV2UgZG8gdGhlIFt0cnktd2l0aF0gb3V0c2lkZSBvZiB0aGUgW3doaWxlXSBiZWNhdXNlIGl0IGlzIGNoZWFwZXIgdGhhbiBkb2luZyBhXG4gICAgIFt0cnktd2l0aF0gZm9yIGVhY2ggam9iLiAqKVxuICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGJlZm9yZSBlbnRlcmluZyB0aGUgbG9vcCwgc2luY2UgaXQgbWlnaHQgZW5xdWV1ZSBhIGpvYixcbiAgICAgY2hhbmdpbmcgW3QubGVuZ3RoXS4gKilcbiAgdHJ5XG4gICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXI7XG4gICAgd2hpbGUgY2FuX3J1bl9hX2pvYiB0IGRvXG4gICAgICBsZXQgdGhpc19qb2IgPSBvZmZzZXQgdCAwIGluXG4gICAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50ID1cbiAgICAgICAgT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyB0aGlzX2pvYilcbiAgICAgIGluXG4gICAgICBsZXQgZiA6IGEgLT4gdW5pdCA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMSkpIGluXG4gICAgICBsZXQgYSA6IGEgPSBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzICh0aGlzX2pvYiArIDIpKSBpblxuICAgICAgKCogV2UgY2xlYXIgb3V0IHRoZSBqb2IgcmlnaHQgbm93IHNvIHRoYXQgaXQgaXNuJ3QgbGl2ZSBhdCB0aGUgbmV4dCBtaW5vclxuICAgICAgICAgY29sbGVjdGlvbi4gIFdlIHRyaWVkIG5vdCBkb2luZyB0aGlzIGFuZCBzYXcgc2lnbmlmaWNhbnQgKDE1JSBvciBzbykgcGVyZm9ybWFuY2VcbiAgICAgICAgIGhpdHMgZHVlIHRvIHNwdXJpb3VzIHByb21vdGlvbi4gKilcbiAgICAgIHNldCB0IDAgZHVtbXlfZSBkdW1teV9mIGR1bW15X2E7XG4gICAgICB0LmZyb250IDwtICh0LmZyb250ICsgMSkgbGFuZCB0Lm1hc2s7XG4gICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgLSAxO1xuICAgICAgKCogSXQgaXMgT0sgaWYgW3J1bl9qb2JdIG9yIFtydW5fZXh0ZXJuYWxfam9ic10gcmFpc2VzLCBpbiB3aGljaCBjYXNlIHRoZSBleG4gaXNcbiAgICAgICAgIGhhbmRsZWQgYnkgdGhlIG91dGVyIHRyeS13aXRoLiAgVGhlIG9ubHkgc2lkZSBlZmZlY3RzIHdlIGhhdmUgZG9uZSBhcmUgdG8gdGFrZVxuICAgICAgICAgdGhlIGpvYiBvdXQgb2YgdGhlIHF1ZXVlIGFuZCBkZWNyZW1lbnQgW2pvYnNfbGVmdF90aGlzX2N5Y2xlXS4gIFtydW5fam9iXSBvclxuICAgICAgICAgW3J1bl9leHRlcm5hbF9qb2JzXSBtYXkgc2lkZSBlZmZlY3QgW3RdLCBlaXRoZXIgYnkgZW5xdWV1ZWluZyBqb2JzLCBvciBieVxuICAgICAgICAgY2xlYXJpbmcgW3RdLiAqKVxuICAgICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGF0IGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBbd2hpbGVdIGxvb3AsIGZvciBmYWlybmVzcy4gKilcbiAgICAgIHJ1bl9leHRlcm5hbF9qb2JzIHQgc2NoZWR1bGVyXG4gICAgZG9uZTtcbiAgICBPayAoKVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKCogV2UgY2FsbCBbRXhuLmJhY2t0cmFjZV0gaW1tZWRpYXRlbHkgYWZ0ZXIgY2F0Y2hpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiwgdG9cbiAgICAgICBlbnN1cmUgdGhlcmUgaXMgbm8gaW50ZXJ2ZW5pbmcgY29kZSB0aGF0IGludGVyZmVyZXMgd2l0aCB0aGUgZ2xvYmFsIGJhY2t0cmFjZVxuICAgICAgIHN0YXRlLiAqKVxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgRXJyb3IgKGV4biwgYmFja3RyYWNlKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBleHRlcm5hbCBmb3JtYXQgOiBmbG9hdCAtPiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjb3JlX3RpbWVfbnNfZm9ybWF0XCJcblxuICAoKiBXZSB1c2UgYSBtb3JlIHBsZWFzYW50IGZvcm1hdCB0aGFuIFtDb3JlLlRpbWVfbnMuc2V4cF9vZl90XSxcbiAgICAgd2hpY2ggaGFzIHRvIGJlIG1lc3NpZXIgZm9yIHJvdW5kIHRyaXBwYWJpbGl0eS4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBbJXNleHBcbiAgICAgIChmb3JtYXQgKHQgfD4gdG9fc3Bhbl9zaW5jZV9lcG9jaCB8PiBTcGFuLnRvX3NlYykgXCIlWS0lbS0lZFQlSDolTTolUyV6XCIgOiBzdHJpbmcpXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWluZ193aGVlbC5BbGFybVxuXG4gIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICgqIDEvOHRoIG9mIGEgbWlsbGlzZWNvbmQgYWxhcm1fcHJlY2lzaW9uIHNlZW1zIHN1ZmZpY2llbnQgdG8gYXZvaWQgaGF2aW5nIG1hbnkgYWxhcm1zXG4gICAgIGluIHRoZSBzYW1lIGludGVydmFsLCB3aGljaCBhdm9pZHMgcXVhZHJhdGljIGluc2VydGlvbiBzb3J0IHdoZW4gZmlyaW5nIGFsYXJtcy4gIEFuZFxuICAgICB0aGUgbGV2ZWwgYml0cyBnaXZlIHVzIGxldmVscyBvZiA+MXMsID4xbSwgPjFoLCA+MWQuICBTZWUgdGVzdCBpblxuICAgICBbLi4vdGVzdC90ZXN0X3N5bmNocm9ub3VzX3RpbWVfc291cmNlLm1sXS4gKilcbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKVxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTM7IDY7IDY7IDUgXSlcbiAgICAoKVxuOztcblxudHlwZSBjYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG5tb2R1bGUgSWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZFxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXR1cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuU3RhdHVzLnQgPVxuICAgICAgICB8IEZpcmVkICgqIGluIFtmaXJlZF9ldmVudHNdLCByZWFkeSB0byBydW4gKilcbiAgICAgICAgfCBIYXBwZW5pbmcgKCogY3VycmVudGx5IHJ1bm5pbmcgdGhlIGNhbGxiYWNrICopXG4gICAgICAgIHwgU2NoZWR1bGVkICgqIGluIHRoZSB0aW1pbmcgd2hlZWwgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCAoKiBub3QgaW4gdGltaW5nIHdoZWVsIG9yIFtmaXJlZF9ldmVudHNdICopXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgICAgbGV0IHRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fID1cbiAgICAgICAgbWF0Y2ggZnJvbSwgdG9fIHdpdGhcbiAgICAgICAgfCBGaXJlZCwgSGFwcGVuaW5nICgqIHN0YXJ0ZWQgcnVubmluZyBjYWxsYmFjayAqKVxuICAgICAgICB8IEZpcmVkLCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgICgqIFtyZXNjaGVkdWxlXypdIGdvZXMgdGhyb3VnaCBhbiBpbnRlcm1lZGlhdGUgW0ZpcmVkLCBVbnNjaGVkdWxlZF0gc3RhdGUsXG4gICAgICAgICAgIHNvIHdlIG5ldmVyIHRyYW5zaXRpb24gZnJvbSBbRmlyZWRdIGRpcmVjdGx5IHRvIFtTY2hlZHVsZWRdLiAqKVxuICAgICAgICB8IEhhcHBlbmluZywgU2NoZWR1bGVkICgqIGZvciByZXBlYXRpbmcgZXZlbnRzICopXG4gICAgICAgIHwgSGFwcGVuaW5nLCBVbnNjaGVkdWxlZCAoKiBldmVudCBjYWxsYmFjayBmaW5pc2hlZCAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgRmlyZWQgKCogbW92ZWQgZnJvbSB0aW1pbmcgd2hlZWwgdG8gW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgRmlyZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBwYXN0ICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIFNjaGVkdWxlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIGZ1dHVyZSAqKSAtPiB0cnVlXG4gICAgICAgIHwgKEZpcmVkIHwgSGFwcGVuaW5nIHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQpLCBfIC0+IGZhbHNlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSBldmVudCA9IFR5cGVzLkV2ZW50LnRcblxuICAgIGxldCBzZXhwX29mX2V2ZW50XG4gICAgICAgICAgKHsgYWxhcm0gPSBfXG4gICAgICAgICAgIDsgYXRcbiAgICAgICAgICAgOyBjYWxsYmFjayA9IF9cbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IF9cbiAgICAgICAgICAgOyBpbnRlcnZhbFxuICAgICAgICAgICA7IG5leHRfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgcHJldl9maXJlZCA9IF9cbiAgICAgICAgICAgOyBzdGF0dXNcbiAgICAgICAgICAgfSA6XG4gICAgICAgICAgICAgZXZlbnQpXG4gICAgICA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICA7IGF0IDogVGltZV9ucy50XG4gICAgICAgIDsgaW50ZXJ2YWwgOiAoVGltZV9ucy5TcGFuLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pXG4gICAgICAgIH1dXG4gICAgOztcblxuICAgIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICAgICgqIFRoaXMgcmVkZWZpbml0aW9uIG9mIFtFdmVudF0gaXMgaGVyZSBzbyB0aGUgdHlwZSBjaGVja3MgYXJlIHJpZ2h0IG5leHRcbiAgICAgICAgIHRvIFtPYmoubWFnaWNdcy4gKilcbiAgICAgIG1vZHVsZSBFdmVudF9pc19ibG9jayA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBUeXBlc1xuICAgICAgICBvcGVuIEV2ZW50XG5cbiAgICAgICAgdHlwZSBfdCA9IHQgPVxuICAgICAgICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgICAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgICAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgICAgICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50Lk9wdGlvbi50XG5cbiAgICAgICgqIFVzaW5nIGFuIGltbWVkaWF0ZSByYXRoZXIgdGhhbiBhIHN0YXRpY2FsbHktYWxsb2NhdGVkIHJlY29yZCBoZXJlIHNlZW1zIHRvXG4gICAgICAgICBpbXByb3ZlIHBlcmZvcm1hbmNlIG5vdGljZWFibHkgKFsuLi9iZW5jaC9iaW4vYmVuY2hfdGltZV9zb3VyY2UuZXhlXSBiZW5jaG1hcmtcbiAgICAgICAgIGlzIGZhc3RlciBieSB+MTBucyBwZXIgYWxhcm0pLCBwcmVzdW1hYmx5IGJlY2F1c2UgaXQgYXZvaWRzIHRoZSBleHBlbnNpdmVcbiAgICAgICAgIHBhcnRzIG9mIGNhbWxfbW9kaWZ5LiAqKVxuICAgICAgbGV0IG5vbmUgPSAoT2JqLm1hZ2ljIE5vbmUgOiB0KSAoKiBhbiBhcmJpdHJhcnkgaW1tZWRpYXRlICopXG5cbiAgICAgIGxldCBzb21lID0gKE9iai5tYWdpYyA6IFR5cGVzLkV2ZW50LnQgLT4gdClcbiAgICAgIGxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IGZpcnN0X3NvbWUgdDEgdDIgPSBpZiBpc19zb21lIHQxIHRoZW4gdDEgZWxzZSB0MlxuXG4gICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gKE9iai5tYWdpYyA6IHQgLT4gVHlwZXMuRXZlbnQudClcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgb3BlbiBPcHRpb25hbF9zeW50YXhcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbJXNleHAgKCldXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogZXZlbnQpXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50Lk9wdGlvbi52YWx1ZV9leG4gTm9uZV1cIl1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFNvbWUgZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gc29tZSBldmVudFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LnQgPVxuICAgICAgeyAoKiBbYWxhcm1dIGlzIG5vbi1udWxsIGlmZiB0aGUgZXZlbnQgaXMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW2ludGVydmFsXSBpcyB0aGUgcGVyaW9kIGZvciB0aGUgcGVyaW9kaWMgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICA7ICgqIFtuZXh0X2ZpcmVkXSBhbmQgW3ByZXZfZmlyZWRdIGNyZWF0ZSBhIGRvdWJseS1saW5rZWQgKG5vbi1jaXJjdWxhcikgbGlzdCBvZlxuICAgICAgICAgICBmaXJlZCBldmVudHMsIGxpbmtlZCB2aWEgdGhlc2UgZmllbGRzLiBBbiBldmVudCBpcyBhZGRlZCB0byB0aGUgbGlzdCB3aGVuXG4gICAgICAgICAgIGl0IGZpcmVzLCBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhZGRlZCB3aXRoIGEgdGltZSBpbiB0aGUgcGFzdCwgb3JcbiAgICAgICAgICAgYmVjYXVzZSB0aW1lIGFkdmFuY2VzLiBbYWR2YW5jZV9ieV9hbGFybXNdIGl0ZXJhdGVzIG92ZXIgdGhlIGV2ZW50c1xuICAgICAgICAgICBpbiBbbmV4dF9maXJlZF0gYW5kIHJ1bnMgdGhlbSwgZW1wdHlpbmcgdGhlIGxpc3QuIFtub25lXSBpcyB1c2VkIHRvXG4gICAgICAgICAgIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBzZXhwX29mX3QgPSBbJXNleHBfb2Y6IGV2ZW50XVxuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgICB+YWxhcm06XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAgICAgKEFsYXJtLmlzX251bGwgYWxhcm0pXG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGaXJlZCB8IEhhcHBlbmluZyB8IFVuc2NoZWR1bGVkIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfCBTY2hlZHVsZWQgLT4gZmFsc2UpKSlcbiAgICAgICAgICB+YXQ6aWdub3JlXG4gICAgICAgICAgfmNhbGxiYWNrOmlnbm9yZVxuICAgICAgICAgIH5leGVjdXRpb25fY29udGV4dDppZ25vcmVcbiAgICAgICAgICB+aW50ZXJ2YWw6aWdub3JlXG4gICAgICAgICAgfm5leHRfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobmV4dF9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW25leHRfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBlbmQgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBuZXh0X2ZpcmVkLnByZXZfZmlyZWQpKSlcbiAgICAgICAgICB+cHJldl9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChwcmV2X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbcHJldl9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIHByZXZfZmlyZWQubmV4dF9maXJlZCkpKVxuICAgICAgICAgIH5zdGF0dXM6aWdub3JlKVxuICAgIDs7XG5cbiAgICBsZXQgc2V0X3N0YXR1cyB0IHRvXyA9XG4gICAgICBsZXQgZnJvbSA9IHQuc3RhdHVzIGluXG4gICAgICBpZiBub3QgKFN0YXR1cy50cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXylcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgWyVoZXJlXVxuICAgICAgICAgICAgICBcImJ1ZyAtLSBzZXRfc3RhdHVzIHRyYW5zaXRpb24gbm90IGFsbG93ZWRcIlxuICAgICAgICAgICAgICAoZnJvbSA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICAodG9fIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgIH5ldmVudDoodCA6IHQpXTtcbiAgICAgIHQuc3RhdHVzIDwtIHRvX1xuICAgIDs7XG5cbiAgICBsZXQgc2V0X3N0YXR1c19pZiB+aXMgdCB0b18gPSBpZiBTdGF0dXMuZXF1YWwgaXMgdC5zdGF0dXMgdGhlbiBzZXRfc3RhdHVzIHQgdG9fXG4gICAgbGV0IHNjaGVkdWxlZF9hdCA9IGF0XG4gIGVuZFxuXG4gIG1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEpvYl9vcl9ldmVudFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgbGV0IChLIGspID0ga2luZCB0IGluXG4gICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgdCB3aXRoXG4gICAgICB8IEV2ZW50LCBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogRXZlbnQudCldXG4gICAgICB8IEpvYiwgXyAtPlxuICAgICAgICAoKiBXZSBkb24ndCBkaXNwbGF5IHRoZSBbSm9iLnRdcyBpbiBbZXZlbnRzXSBiZWNhdXNlIHRob3NlIGFyZVxuICAgICAgICAgICBwb29sIHBvaW50ZXJzLCB3aGljaCBhcmUgdW5pbmZvcm1hdGl2ZS4gKilcbiAgICAgICAgWyVtZXNzYWdlIFwiPEpvYi50PlwiXVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgLSdydyB0ID0gJ3J3IFR5cGVzLlRpbWVfc291cmNlLnQxID1cbiAgICB7IGlkIDogSWQudFxuICAgIDsgKCogW2FkdmFuY2VfZXJyb3JzXSBhY2N1bXVsYXRlcyBlcnJvcnMgcmFpc2VkIGJ5IGFsYXJtcyBydW4gYnlcbiAgICAgICAgIFthZHZhbmNlX2J5X2FsYXJtc10uICopXG4gICAgICBtdXRhYmxlIGFkdmFuY2VfZXJyb3JzIDogRXJyb3IudCBsaXN0XG4gICAgOyAoKiBbYW1fYWR2YW5jaW5nXSBpcyB0cnVlIG9ubHkgZHVyaW5nIFthZHZhbmNlX2J5X2FsYXJtc10sIGFuZCBpcyB1c2VkIHRvIGNhdXNlXG4gICAgICAgICBjYWxsYmFja3MgdG8gcmFpc2UgaWYgdGhleSBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10uICopXG4gICAgICBtdXRhYmxlIGFtX2FkdmFuY2luZyA6IGJvb2xcbiAgICA7IGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC50XG4gICAgOyAoKiBbZmlyZWRfZXZlbnRzXSBpcyB0aGUgZnJvbnQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBmaXJlZCBldmVudHMsXG4gICAgICAgICB3aGljaCBpcyBzdG9yZWQgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBbRXZlbnQuYXRdLiAqKVxuICAgICAgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgKCogW21vc3RfcmVjZW50bHlfZmlyZWRdIGlzIHRoZSBldmVudCB0aGF0IHdhcyBtb3N0IHJlY2VudGx5IGluc2VydGVkIGludG9cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiBJdCBpcyB1c2VkIGFzIGFuIG9wdGltaXphdGlvbiB0byBhbGxvdyBpbnNlcnRpb24gb2ZcbiAgICAgICAgIHN1YnNlcXVlbnQgZXZlbnRzIHRvIHN0YXJ0IGxhdGVyIGluIHRoZSBsaXN0IHJhdGhlciB0aGFuIGF0IHRoZSBiZWdpbm5pbmcuXG4gICAgICAgICBJdCBzcGVjaWZpY2FsbHkgYXZvaWRzIHF1YWRyYXRpYyBiZWhhdmlvciB3aGVuIGluc2VydGluZyBtdWx0aXBsZSBldmVudHNcbiAgICAgICAgIHRoYXQgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRpbWUgLS0gdGhlIHRpbWUgc291cmNlIGZpcmVzIHN1Y2ggZXZlbnRzIGluXG4gICAgICAgICB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIGluIHRoYXQgc2FtZSBvcmRlciBpblxuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uICopXG4gICAgICBtdXRhYmxlIG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udFxuICAgIDsgKCogV2Ugc3RvcmUgW2hhbmRsZV9maXJlZF0gaW4gW3RdIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgZXZlcnkgdGltZSB3ZSBjYWxsXG4gICAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgICBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIwLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBsZXQgbm93ID0gVGltaW5nX3doZWVsLm5vdyBldmVudHMgaW5cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCJ3YWxsX2Nsb2NrXCIgKG5vdyA6IFRpbWVfbnMudCldXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYWxsX2V2ZW50cyA9IHJlZiBbXSBpblxuICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgYWxsX2V2ZW50cyA6PSAoQWxhcm0uYXQgZXZlbnRzIGFsYXJtLCBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pIDo6ICFhbGxfZXZlbnRzKTtcbiAgICAgIGxldCBldmVudHMgPVxuICAgICAgICBMaXN0LnNvcnQgIWFsbF9ldmVudHMgfmNvbXBhcmU6KGZ1biAoYXQxLCBfKSAoYXQyLCBfKSAtPiBUaW1lX25zLmNvbXBhcmUgYXQxIGF0MilcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICBpblxuICAgICAgWyVtZXNzYWdlIFwiXCIgKG5vdyA6IFRpbWVfbnMudCkgKGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IGxpc3QpXSlcbiAgOztcblxuICBsZXQgdGltaW5nX3doZWVsX25vdyB0ID0gVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c1xuXG4gIGxldCBpc19pbl9maXJlZF9ldmVudHMgPVxuICAgIGxldCByZWMgc2VhcmNoIGN1cnJlbnQgfnRhcmdldF9ldmVudCA9XG4gICAgICBtYXRjaCVvcHRpb25hbCAoY3VycmVudCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBjdXJyZW50IC0+XG4gICAgICAgIHBoeXNfZXF1YWwgY3VycmVudCB0YXJnZXRfZXZlbnQgfHwgc2VhcmNoIGN1cnJlbnQubmV4dF9maXJlZCB+dGFyZ2V0X2V2ZW50XG4gICAgaW5cbiAgICBmdW4gdCB0YXJnZXRfZXZlbnQgLT4gc2VhcmNoIHQuZmlyZWRfZXZlbnRzIH50YXJnZXRfZXZlbnRcbiAgOztcblxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyAodHlwZSBydykgfmpvYjooam9iX2ludmFyaWFudCA6IEpvYi50IC0+IHVuaXQpICh0IDogcncgdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5pZDppZ25vcmVcbiAgICAgICAgfmFkdmFuY2VfZXJyb3JzOmlnbm9yZVxuICAgICAgICB+YW1fYWR2YW5jaW5nOmlnbm9yZVxuICAgICAgICB+ZXZlbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGV2ZW50cyAtPlxuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pbnZhcmlhbnQgaWdub3JlIGV2ZW50cztcbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSBpblxuICAgICAgICAgICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICAgICAgICAgICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICAgICAgICAgICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gICAgICAgICAgICAgICB8IEpvYiwgam9iIC0+IGpvYl9pbnZhcmlhbnQgam9iXG4gICAgICAgICAgICAgICB8IEV2ZW50LCBldmVudCAtPlxuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgYWxhcm0gZXZlbnQuYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdIGV2ZW50LmF0IH5leHBlY3Q6KEFsYXJtLmF0IGV2ZW50cyBhbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEV2ZW50LlN0YXR1cy50XSBldmVudC5zdGF0dXMgfmV4cGVjdDpTY2hlZHVsZWQ7XG4gICAgICAgICAgICAgICAgIEV2ZW50LmludmFyaWFudCBldmVudCkpKVxuICAgICAgICB+ZmlyZWRfZXZlbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuIChmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udCkgLT5cbiAgICAgICAgICAgICBsZXQgcmVjIGNoZWNrX2V2ZW50IChjdXJyZW50IDogRXZlbnQudCkgPVxuICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0ICh0aW1pbmdfd2hlZWxfbm93IHQpKTtcbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsLkV2ZW50Lk9wdGlvbiBjdXJyZW50Lm5leHRfZmlyZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgbmV4dC5hdCk7XG4gICAgICAgICAgICAgICAgIGNoZWNrX2V2ZW50IG5leHRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsLkV2ZW50Lk9wdGlvbiBmaXJlZF9ldmVudHMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBldmVudCAtPiBjaGVja19ldmVudCBldmVudCkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5pc193YWxsX2Nsb2NrOmlnbm9yZVxuICAgICAgICB+bW9zdF9yZWNlbnRseV9maXJlZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBtb3N0X3JlY2VudGx5X2ZpcmVkIC0+XG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBldmVudCAtPiBhc3NlcnQgKGlzX2luX2ZpcmVkX2V2ZW50cyB0IGV2ZW50KSkpXG4gICAgICAgIH5zY2hlZHVsZXI6aWdub3JlKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9IGludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIF8gLT4gKCkpIHRcbmVuZFxuXG5vcGVuIFQxXG5cbnR5cGUgdCA9IHJlYWQgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5sZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG5sZXQgaWQgdCA9IHQuaWRcbmxldCBpc193YWxsX2Nsb2NrIHQgPSB0LmlzX3dhbGxfY2xvY2tcbmxldCBsZW5ndGggdCA9IFRpbWluZ193aGVlbC5sZW5ndGggdC5ldmVudHNcbmxldCBtYXhfYWxsb3dlZF9hbGFybV90aW1lIHQgPSBUaW1pbmdfd2hlZWwubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0LmV2ZW50c1xubGV0IHJlYWRfb25seSAodCA6IFs+IHJlYWQgXSBUMS50KSA9ICh0IDo+IHQpXG5cbigqIFtmaXJlIHQgZXZlbnRdIHNldHMgW2V2ZW50LnN0YXR1cyA9IEZpcmVkXSBhbmQgaW5zZXJ0cyBbZXZlbnRdIGludG9cbiAgIFt0LmZpcmVkX2V2ZW50c10gaW4gc29ydGVkIHRpbWUgb3JkZXIuICopXG5sZXQgZmlyZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBGaXJlZDtcbiAgZXZlbnQuYWxhcm0gPC0gQWxhcm0ubnVsbCAoKTtcbiAgbGV0ICgpID1cbiAgICAoKiBJZiBbZXZlbnRdIGJlbG9uZ3MgYWZ0ZXIgW3QubW9zdF9yZWNlbnRseV9maXJlZF0sIHRoZW4gd2Ugc3RhcnQgdGhlXG4gICAgICAgaW5zZXJ0aW9uIHRoZXJlIHJhdGhlciB0aGFuIGF0IHRoZSBmcm9udCBvZiBbdC5maXJlZF9ldmVudHNdLiBUaGlzIHdvcmtzXG4gICAgICAgbmljZWx5IGlmIHdlJ3JlIGdldHRpbmcgdGhlIGFsYXJtcyBpbiBub24tZGVjcmVhc2luZyB0aW1lIG9yZGVyLCB3aGljaCBpc1xuICAgICAgIGNsb3NlIHRvIHdoYXQgW1RpbWluZ193aGVlbF0gcHJvdmlkZXMgKGFsdGhvdWdoIFtUaW1pbmdfd2hlZWxdIGRvZXNuJ3RcbiAgICAgICBndWFyYW50ZWUgdGltZSBvcmRlcmluZyBmb3IgdGltZXMgaW4gdGhlIHNhbWUgaW50ZXJ2YWwpLiAqKVxuICAgIG1hdGNoJW9wdGlvbmFsICh0Lm1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgU29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkIHdoZW4gVGltZV9ucy4oIDw9ICkgbW9zdF9yZWNlbnRseV9maXJlZC5hdCBldmVudC5hdCAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBtb3N0X3JlY2VudGx5X2ZpcmVkLm5leHRfZmlyZWRcbiAgICB8IF8gLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIHQuZmlyZWRfZXZlbnRzXG4gIGluXG4gIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudDtcbiAgKCogV2UgdXNlIFtUaW1lX25zLiggPD0gKV0gcmF0aGVyIHRoYW4gWzxdIHNvIHRoYXQgW2V2ZW50XSBpcyBhZGRlZCBhZnRlciBvdGhlclxuICAgICBldmVudHMgYXQgdGhlIHNhbWUgdGltZS4gU2luY2UgW1RpbWluZ193aGVlbF0gZmlyZXMgYWxhcm1zIGluIGEgYnVja2V0IGluXG4gICAgIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQsIHVzaW5nIFs8PV0ga2VlcHMgZXZlbnRzIGF0IHRoZSBzYW1lXG4gICAgIHRpbWUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZC4gKilcbiAgd2hpbGVcbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG5leHQgLT5cbiAgICAgIGxldCBjb250aW51ZSA9IFRpbWVfbnMuKCA8PSApIG5leHQuYXQgZXZlbnQuYXQgaW5cbiAgICAgIGlmIGNvbnRpbnVlXG4gICAgICB0aGVuIChcbiAgICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBldmVudC5uZXh0X2ZpcmVkO1xuICAgICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG5leHQubmV4dF9maXJlZCk7XG4gICAgICBjb250aW51ZVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXh0IC0+IG5leHQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuICBpblxuICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbjs7XG5cbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC5ldmVudHNcbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xuXG5sZXQgbmV4dF9hbGFybV9ydW5zX2F0IHQgPVxuICBpZiBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuICB0aGVuIFNvbWUgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgZWxzZSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xuOztcblxubGV0IG5vdyB0ID0gaWYgdC5pc193YWxsX2Nsb2NrIHRoZW4gVGltZV9ucy5ub3cgKCkgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbmxldCB0aW1pbmdfd2hlZWxfbm93ID0gdGltaW5nX3doZWVsX25vd1xuXG5sZXQgc2NoZWR1bGUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgU2NoZWR1bGVkO1xuICBldmVudC5hbGFybSA8LSBUaW1pbmdfd2hlZWwuYWRkIHQuZXZlbnRzIH5hdDpldmVudC5hdCAoZXZlbnQgfD4gSm9iX29yX2V2ZW50Lm9mX2V2ZW50KVxuOztcblxubGV0IHJlbW92ZV9mcm9tX2ZpcmVkIHQgKGV2ZW50IDogRXZlbnQudCkgfm5ld19zdGF0dXMgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsICh0Lm1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIGV2ZW50IG1vc3RfcmVjZW50bHlfZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5maXJzdF9zb21lIGV2ZW50Lm5leHRfZmlyZWQgZXZlbnQucHJldl9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gZXZlbnQubmV4dF9maXJlZFxuICAgIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBldmVudC5uZXh0X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXh0IC0+IG5leHQucHJldl9maXJlZCA8LSBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGV2ZW50Lm5leHRfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgbmV3X3N0YXR1c1xuOztcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgRXZlbnRcblxuICBsZXQgY3JlYXRlX2ludGVybmFsIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgOyBhdFxuICAgIDsgY2FsbGJhY2tcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gdC5zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICAgIDsgaW50ZXJ2YWxcbiAgICA7IG5leHRfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgcHJldl9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzdGF0dXMgPSBVbnNjaGVkdWxlZFxuICAgIH1cbiAgOztcblxuICBsZXQgYWRkIHQgZXZlbnQgPVxuICAgIGlmIFRpbWVfbnMuKCA8PSApIGV2ZW50LmF0ICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgdGhlbiBmaXJlIHQgZXZlbnRcbiAgICBlbHNlIHNjaGVkdWxlIHQgZXZlbnRcbiAgOztcblxuICBsZXQgY3JlYXRlX2FuZF9hZGQgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgbGV0IGV2ZW50ID0gY3JlYXRlX2ludGVybmFsIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgaW5cbiAgICBhZGQgdCBldmVudDtcbiAgICBldmVudFxuICA7O1xuXG4gIGxldCBhdCB0IGF0IGNhbGxiYWNrID0gY3JlYXRlX2FuZF9hZGQgdCB+YXQgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IGFmdGVyIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKSB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcbiAgOztcblxuICBsZXQgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW4gPVxuICAgIGxldCBhbGFybV9wcmVjaXNpb24gPSBhbGFybV9wcmVjaXNpb24gdCBpblxuICAgIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBzcGFuIGFsYXJtX3ByZWNpc2lvblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnRlcnZhbCBzcGFuIHNtYWxsZXIgdGhhbiBhbGFybSBwcmVjaXNpb25cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udClcbiAgICAgICAgICAgIChhbGFybV9wcmVjaXNpb24gOiBUaW1lX25zLlNwYW4udCldXG4gIDs7XG5cbiAgbGV0IGF0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0Oihub3cgdCkgfmludGVydmFsOihTb21lIHNwYW4pIH5jYWxsYmFja1xuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBDdXJyZW50bHlfaGFwcGVuaW5nXG4gICAgICB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgYWJvcnQgdCAoZXZlbnQgOiB0KSA6IEFib3J0X3Jlc3VsdC50ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nIC0+XG4gICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBDdXJyZW50bHlfaGFwcGVuaW5nXG4gICAgICAgfCBTb21lIChfIDogVGltZV9ucy5TcGFuLnQpIC0+XG4gICAgICAgICBldmVudC5pbnRlcnZhbCA8LSBOb25lO1xuICAgICAgICAgT2spXG4gICAgfCBGaXJlZCAtPlxuICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpVbnNjaGVkdWxlZDtcbiAgICAgIE9rXG4gICAgfCBTY2hlZHVsZWQgLT5cbiAgICAgIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgVW5zY2hlZHVsZWQ7XG4gICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGV2ZW50LmFsYXJtO1xuICAgICAgZXZlbnQuYWxhcm0gPC0gQWxhcm0ubnVsbCAoKTtcbiAgICAgIE9rXG4gICAgfCBVbnNjaGVkdWxlZCAtPiBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgZXZlbnQgPSBpZ25vcmUgKGFib3J0IHQgZXZlbnQgOiBBYm9ydF9yZXN1bHQudClcblxuICBsZXQgYWJvcnRfZXhuIHQgZXZlbnQgPVxuICAgIG1hdGNoIGFib3J0IHQgZXZlbnQgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IHJlYXNvbiAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltTeW5jaHJvbm91c190aW1lX3NvdXJjZS5hYm9ydF9leG5dIGNhbm5vdCBhYm9ydCBldmVudFwiXG4gICAgICAgICAgICAocmVhc29uIDogQWJvcnRfcmVzdWx0LnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCBjYWxsYmFjayA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdDpUaW1lX25zLmVwb2NoIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IChldmVudCA6IHQpIGF0IH5pbnRlcnZhbCA9XG4gICAgKCogW0ZpcmVkXSBpcyBkaXNhbGxvd2VkIHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBlbnRlcmluZyBpbnRvIGFuIGluZmluaXRlIGxvb3AuICBUaGVcbiAgICAgICB1c2VyIGNvdWxkIHNwZWNpZnkgW2F0XSBpbiB0aGUgcGFzdCB3aGljaCB3b3VsZCBjb25zdGFudGx5IGFkZCBbY2FsbGJhY2tdIHRvIHRoZVxuICAgICAgIGJhY2sgb2YgW3QubmV4dF9maXJlZF0gaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBbY2FsbGJhY2tdLiAqKVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCAoSGFwcGVuaW5nIHwgU2NoZWR1bGVkIHwgRmlyZWQpIGFzIHN0YXR1cyAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJXNleHAgXCJjYW5ub3Qgc2NoZWR1bGUgYW4gZXZlbnQgd2l0aCBzdGF0dXNcIiwgKHN0YXR1cyA6IEV2ZW50LlN0YXR1cy50KV1cbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIGludGVydmFsO1xuICAgICAgYWRkIHQgZXZlbnQ7XG4gICAgICBPayAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV9hdCB0IGV2ZW50IGF0ID0gc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCBhdCB+aW50ZXJ2YWw6Tm9uZVxuICBsZXQgc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVydmFscyB0IGV2ZW50IHNwYW4gPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgKG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbilcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGV2ZW50IGF0IDogdW5pdCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgSGFwcGVuaW5nIC0+XG4gICAgICAoKiBIYXBwZW5pbmcgZXZlbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBbZmlyZWRdLiAqKVxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGlmIFRpbWVfbnMuKCA+ICkgYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgIHRoZW4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgdC5ldmVudHMgZXZlbnQuYWxhcm0gfmF0XG4gICAgICBlbHNlIChcbiAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgICAgZmlyZSB0IGV2ZW50KVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgIGFkZCB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuZW5kXG5cbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hZnRlciB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxubGV0IHJ1bl9hdCB0IGF0IGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hdCB0IGF0IGNhbGxiYWNrIDogRXZlbnQudClcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgaWdub3JlIChFdmVudC5hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbjs7XG5cbnR5cGUgc2VuZF9leG4gPSBNb25pdG9yMC50IC0+ID9iYWNrdHJhY2U6WyBgR2V0IHwgYFRoaXMgb2YgQmFja3RyYWNlLnQgXSAtPiBleG4gLT4gdW5pdFxuXG5sZXQgcnVuX2ZpcmVkX2V2ZW50cyB0IH4oc2VuZF9leG4gOiBzZW5kX2V4biBvcHRpb24pID1cbiAgbGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGluXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgICAgIHwgSGFwcGVuaW5nIHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBGaXJlZCAtPlxuICAgICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpIYXBwZW5pbmc7XG4gICAgICAgICAoKiBXZSBzZXQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgW2V2ZW50LmNhbGxiYWNrXSBydW5zIGluIHRoZSBzYW1lIGNvbnRleHRcbiAgICAgICAgICAgIHRoYXQgd2FzIGluIHBsYWNlIHdoZW4gW2V2ZW50XSB3YXMgY3JlYXRlZC4gKilcbiAgICAgICAgIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgICAgKCogQW55IG1vZGlmaWNhdGlvbiBvZiBbc3RhdHVzXSBiZWxvdyBuZWVkcyB0byBmaXJzdCBjaGVjayB0aGF0IHRoZSBldmVudCBpc1xuICAgICAgICAgICAgc3RpbGwgW0hhcHBlbmluZ10uIElmIHRoZSBldmVudCBzdGF0dXMgaXMgbm90IFtIYXBwZW5pbmddIHRoZW4gdGhlIGV2ZW50J3NcbiAgICAgICAgICAgIGNhbGxiYWNrIG11c3QgaGF2ZSByZXNjaGVkdWxlZCB0aGUgZXZlbnQuIEluIHRoYXQgY2FzZSwgZG8gbm90IHNldCB0aGUgc3RhdHVzXG4gICAgICAgICAgICBvciBhdHRlbXB0IHRvIHJlc2NoZWR1bGUgYSByZXBlYXRpbmcgZXZlbnQuXG5cbiAgICAgICAgICAgIFRoaXMgY29kZSBjb3VsZCBiZSBtdWNoIHNpbXBsZXIgaWYgd2UgaW1tZWRpYXRlbHkgcmVzY2hlZHVsZWQgdGhlIGV2ZW50IGJlZm9yZVxuICAgICAgICAgICAgcnVubmluZyB0aGUgY2FsbGJhY2sgKG5vIG5lZWQgZm9yIHRoZSBIYXBwZW5pbmcgc3RhdGUgdGhlbikuIE9uZSByZWFzb24gd2VcbiAgICAgICAgICAgIGRvbid0IGRvIHRoYXQgaXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcmVzY2hlZHVsZSBhIHBlcmlvZGljXG4gICAgICAgICAgICBldmVudCBpZiBpdHMgY2FsbGJhY2sgcmFpc2VzLiAqKVxuICAgICAgICAgKG1hdGNoIGV2ZW50LmNhbGxiYWNrICgpIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIChtYXRjaCBzZW5kX2V4biB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IHQuYWR2YW5jZV9lcnJvcnMgPC0gRXJyb3Iub2ZfZXhuIGV4biA6OiB0LmFkdmFuY2VfZXJyb3JzXG4gICAgICAgICAgICAgfCBTb21lIHNlbmRfZXhuIC0+XG4gICAgICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgICAgc2VuZF9leG4gZXZlbnQuZXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKSk7XG4gICAgICAgICAgICBFdmVudC5zZXRfc3RhdHVzX2lmIH5pczpIYXBwZW5pbmcgZXZlbnQgVW5zY2hlZHVsZWRcbiAgICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBFdmVudC5zZXRfc3RhdHVzX2lmIH5pczpIYXBwZW5pbmcgZXZlbnQgVW5zY2hlZHVsZWRcbiAgICAgICAgICAgICB8IFNvbWUgaW50ZXJ2YWwgLT5cbiAgICAgICAgICAgICAgIGlmIEV2ZW50LlN0YXR1cy5lcXVhbCBIYXBwZW5pbmcgZXZlbnQuc3RhdHVzXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgKCogVGhlIGV2ZW50J3MgY2FsbGJhY2sgZGlkIG5vdCByZXNjaGVkdWxlIHRoZSBldmVudC4gU28gcmVzY2hlZHVsZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgcmVwZWF0aW5nIHRpbWVyIGJhc2VkIG9uIHRoZSBsYXN0IFthdF0gdGltZS4gKilcbiAgICAgICAgICAgICAgICAgZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgPC0gVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgICB+YmFzZTpldmVudC5hdFxuICAgICAgICAgICAgICAgICAgICAgIH5hZnRlcjoodGltaW5nX3doZWVsX25vdyB0KVxuICAgICAgICAgICAgICAgICAgICAgIH5pbnRlcnZhbDtcbiAgICAgICAgICAgICAgICAgc2NoZWR1bGUgdCBldmVudCkpKTtcbiAgICAgICAgIHRydWUpXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgU2NoZWR1bGVyMC5zZXRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrIHQuZXZlbnRzIH50b18gfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyB0LmV2ZW50cyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuID1cbiAgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuO1xuICBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuID1cbiAgaWYgdC5hbV9hZHZhbmNpbmdcbiAgdGhlblxuICAgIHJhaXNlX3MgWyVzZXhwIFwiY2Fubm90IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXSBvciBbYWR2YW5jZV9kaXJlY3RseV0gZnJvbSBjYWxsYmFja1wiXTtcbiAgdC5hbV9hZHZhbmNpbmcgPC0gdHJ1ZTtcbiAgKG1hdGNoIHQuYWR2YW5jZV9lcnJvcnMgd2l0aFxuICAgfCBbXSAtPiAoKVxuICAgfCBfIC0+IHQuYWR2YW5jZV9lcnJvcnMgPC0gW10pO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmluaXNoX2FkdmFuY2luZyB0ID1cbiAgdC5hbV9hZHZhbmNpbmcgPC0gZmFsc2U7XG4gIG1hdGNoIHQuYWR2YW5jZV9lcnJvcnMgd2l0aFxuICB8IFtdIC0+IE9rICgpXG4gIHwgZXJyb3JzIC0+XG4gICAgdC5hZHZhbmNlX2Vycm9ycyA8LSBbXTtcbiAgICBFcnJvciAoRXJyb3Iub2ZfbGlzdCBlcnJvcnMpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXMgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFjb250aW51ZSBkb1xuICAgIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB0LmV2ZW50c1xuICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICBlbHNlIChcbiAgICAgIGxldCBtaW5fYWxhcm1fdGltZSA9IFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzIGluXG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZSB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fOm1pbl9hbGFybV90aW1lIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFjb250aW51ZSBkb1xuICAgIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB0LmV2ZW50c1xuICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQuZXZlbnRzIGluXG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbFxuICAgICAgICAgIHRcbiAgICAgICAgICB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cylcbiAgICAgICAgICB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICByZXN1bHQsIGR1cmF0aW9uXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0ID1cbiAgVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0LmV2ZW50c1xuOztcblxubGV0IGhhc19ldmVudHNfdG9fcnVuIHQgPSBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXIwXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcbm1vZHVsZSBFdmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS5Kb2Jfb3JfZXZlbnRcblxubGV0IGRlYnVnID0gRGVidWcuc2NoZWR1bGVyXG5cbm1vZHVsZSBJdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuSXZhclxuXG4gIGxldCBjcmVhdGVfd2l0aF9jZWxsIGNlbGwgPSB7IGNlbGwgfVxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX3dpdGhfY2VsbCBFbXB0eVxuXG4gIGxldCBjcmVhdGVfZnVsbCAodHlwZSBhKSAoYSA6IGEpID1cbiAgICAoKiBXZSBhbGxvY2F0ZSBhbiBpbW11dGFibGUgaXZhciBhbmQgdGhlbiBjYXN0IGl0IHRvIGEgbXV0YWJsZSBpdmFyLiAgVGhlIGltbXV0YWJpbGl0eVxuICAgICAgIGFsbG93cyBPQ2FtbCB0byBzdGF0aWNhbGx5IGFsbG9jYXRlIHRoZSBpdmFyIGlmIFthXSBpcyBjb25zdGFudC4gIFRoaXMgY2FzdCBpcyBzYWZlXG4gICAgICAgYmVjYXVzZSBhIGZ1bGwgaXZhciBpcyBuZXZlciBtdXRhdGVkLiAgV2UgYWxzbyBiZWxpZXZlIHRoYXQgd2Ugd2lsbCBub3QgdHJpZ2dlclxuICAgICAgIGZsYW1iZGEgdG8gc3B1cmlvdXNseSByZXBvciB3YXJuaW5nIDU5LCBtdXRhdGlvbiBvZiBrbm93biBpbW11dGFibGUgZGF0YS4gIEFsbFxuICAgICAgIG11dGF0aW9ucyBvZiBhbiBpdmFyIGNlbGwsIGkuZS4gW2Zvby5jZWxsIDwtIC4uLl0sIGFyZSBkaXJlY3RseSBwcmVjZWRlZCBieSBhXG4gICAgICAgW21hdGNoIGZvby5jZWxsXSB0aGF0IHByZXZlbnRzIHRoZSBbRnVsbF0gY2FzZSBmcm9tIHJlYWNoaW5nIHRoZSBtb2RpZmljYXRpb24uICBTb1xuICAgICAgIGZsYW1iZGEgc2hvdWxkIGFsd2F5cyBlbGltaW5hdGUgdGhlIFtmb28uY2VsbCA8LSAuLi5dIG9mIGEgY29uc3RhbnQgW0Z1bGxdIGl2YXIsXG4gICAgICAgYW5kIG5vdCB3YXJuLiAqKVxuICAgIChPYmoubWFnaWMgOiBhIEltbXV0YWJsZS50IC0+IGEgdCkgeyBjZWxsID0gRnVsbCBhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQnZhciA9IHN0cnVjdFxuICBvcGVuIFR5cGVzLkJ2YXJcblxuICBsZXQgY3JlYXRlICgpID0gb2ZfcmVwciB7IGhhc19hbnlfd2FpdGVycyA9IGZhbHNlOyBpdmFyID0gSXZhci5jcmVhdGUgKCkgfVxuZW5kXG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVHlwZXMuVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0LnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlciB+ZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCkgfmV4ZWM6aWdub3JlKVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFNjaGVkdWxlcjAudCA9XG4gIHsgKCogW2NoZWNrX2FjY2Vzc10gb3B0aW9uYWxseSBob2xkcyBhIGZ1bmN0aW9uIHRvIHJ1biB0byBjaGVjayB3aGV0aGVyIGFjY2VzcyB0byBbdF0gaXNcbiAgICAgICBjdXJyZW50bHkgYWxsb3dlZC4gIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IGludmFsaWQgYWNjZXNzIHRvIHRoZSBzY2hlZHVsZXIgZnJvbSBhXG4gICAgICAgdGhyZWFkLiAqKVxuICAgIG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgOiBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCBEZXF1ZS50XG4gIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgKCogVGhlIHNjaGVkdWxlciBjYWxscyBbZ290X3VuY2F1Z2h0X2V4bl0gd2hlbiBhbiBleGNlcHRpb24gYnViYmxlcyB0byB0aGUgdG9wIG9mIHRoZVxuICAgICBtb25pdG9yIHRyZWUgd2l0aG91dCBiZWluZyBoYW5kbGVkLiAgVGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRvIG5ldmVyIHJ1biBhbm90aGVyXG4gICAgIGpvYiBhZnRlciB0aGlzIGJ5IGNhbGxpbmcgW2NsZWFyXSBhbmQgYmVjYXVzZSBbZW5xdWV1ZV9qb2JdIHdpbGwgbmV2ZXIgYWRkIGFub3RoZXJcbiAgICAgam9iLiAqKVxuICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgOyBtdXRhYmxlIGN5Y2xlX2NvdW50IDogaW50XG4gIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGxpc3RcbiAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgbGlzdFxuICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfbnVtX2pvYnMgOiBpbnRcbiAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnRcbiAgKCogW2V4dGVybmFsX2pvYnNdIGlzIGEgcXVldWUgb2YgYWN0aW9ucyBzZW50IGZyb20gb3V0c2lkZSBvZiBhc3luYy4gIFRoaXMgaXMgZm9yIHRoZVxuICAgICBjYXNlIHdoZXJlIHdlIHdhbnQgdG8gc2NoZWR1bGUgYSBqb2Igb3IgZmlsbCBhbiBpdmFyIGZyb20gYSBjb250ZXh0IHdoZXJlIGl0IGlzIG5vdFxuICAgICBzYWZlIHRvIHJ1biBhc3luYyBjb2RlLCBiZWNhdXNlIHRoZSBhc3luYyBsb2NrIGlzbid0IGhlbGQuICBGb3IgaW5zdGFuY2U6IC0gaW4gYW5cbiAgICAgT0NhbWwgZmluYWxpemVyLCBhcyB0aGV5IGNhbiBydW4gYXQgYW55IHRpbWUgaW4gYW55IHRocmVhZC5cblxuICAgICBUaGUgd2F5IHRvIGRvIGl0IGlzIHRvIHF1ZXVlIGEgdGh1bmsgaW4gW2V4dGVybmFsX2pvYnNdIGFuZCBjYWxsXG4gICAgIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10sIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBub3RpZnlpbmcgdGhlIHNjaGVkdWxlclxuICAgICB0aGF0IG5ldyBhY3Rpb25zIGFyZSBhdmFpbGFibGUuXG5cbiAgICAgV2hlbiB1c2luZyBBc3luYyBvbiB1bml4LCBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdIGlzIHNldCBpbiBbQXN5bmNfdW5peF1cbiAgICAgdG8gY2FsbCBbSW50ZXJydXB0b3IudGhyZWFkX3NhZmVfaW50ZXJydXB0XSwgd2hpY2ggd2lsbCB3YWtlIHVwIHRoZVxuICAgICBbQXN5bmNfdW5peF0gc2NoZWR1bGVyIGFuZCBydW4gYSBjeWNsZS5cblxuICAgICBOb3RlIHRoYXQgdGhpcyBob29rIG1pZ2h0IGJlIHVzZWQgaW4gb3RoZXIgY29udGV4dCAoanNfb2Zfb2NhbWwsIG1pcmFnZSkuXG5cbiAgICAgV2hlbiBydW5uaW5nIGEgY3ljbGUsIHdlIHB1bGwgZXh0ZXJuYWwgYWN0aW9ucyBhdCBldmVyeSBqb2IgYW5kIHBlcmZvcm0gdGhlbVxuICAgICBpbW1lZGlhdGVseS4gKilcbiAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgOiB1bml0IC0+IHVuaXRcbiAgKCogW2pvYl9xdWV1ZWRfaG9va10gYW5kIFtldmVudF9hZGRlZF9ob29rXSBhaW0gdG8gYmUgdXNlZCBieSBqc19vZl9vY2FtbC4gKilcbiAgKCogV2UgdXNlIFtfIG9wdGlvbl0gaGVyZSBiZWNhdXNlIHRob3NlIGhvb2tzIHdpbGwgbm90IGJlIHNldCBpbiB0aGUgY29tbW9uIGNhc2VcbiAgICAgYW5kIHdlIHdhbnQgdG8gYXZvaWQgZXh0cmEgZnVuY3Rpb24gY2FsbHMuICopXG4gIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGV2ZW50X2FkZGVkX2hvb2sgOiAoVGltZV9ucy50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgeWllbGQgOiAoKHVuaXQsIHJlYWRfd3JpdGUpIFR5cGVzLkJ2YXIudFtAc2V4cC5vcGFxdWVdKVxuICA7IG11dGFibGUgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOlxuICAgICAgKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSAoKiBjb25maWd1cmF0aW9uKikpXG4gIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuX3Vud3JhcHBlZCA9IHVuY2F1Z2h0X2V4blxuXG5sZXQgdW5jYXVnaHRfZXhuIHQgPVxuICBtYXRjaCB0LnVuY2F1Z2h0X2V4biB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoZXhuLCBzZXhwKSAtPlxuICAgIFNvbWUgKEVycm9yLmNyZWF0ZSBcInVuaGFuZGxlZCBleGNlcHRpb25cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XSlcbjs7XG5cbmxldCBudW1fcGVuZGluZ19qb2JzIHQgPVxuICBKb2JfcXVldWUubGVuZ3RoIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgKyBKb2JfcXVldWUubGVuZ3RoIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBudW1fam9ic19ydW4gdCA9XG4gIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICArIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgdCA9IHQubGFzdF9jeWNsZV9udW1fam9ic1xuXG5sZXQgdW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsIH5zdWJsaXN0OnNtYWxsIGxhcmdlID1cbiAgbGV0IHJlbW92ZSBsIHggPVxuICAgIG1hdGNoIExpc3Quc3BsaXRfd2hpbGUgbCB+ZjooZnVuIHkgLT4gbm90IChlcXVhbCB5IHgpKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBOb25lXG4gICAgfCBsLCBfIDo6IHIgLT4gU29tZSAobCBAIHIpXG4gIGluXG4gIE9wdGlvbi5pc19zb21lXG4gICAgKExpc3QuZm9sZCBzbWFsbCB+aW5pdDooU29tZSBsYXJnZSkgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgIE9wdGlvbi5iaW5kIGFjYyB+ZjooZnVuIGwgLT4gcmVtb3ZlIGwgeCkpKVxuOztcblxubGV0IGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHRhYmxlIGxpc3QgPVxuICAoKiBZb3UgY2FuIGluIGZhY3QgaGF2ZSBob29rcyBpbiB0aGUgbGlzdCBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBlbnRyeSBpblxuICAgICB0aGUgdGFibGUuIFN1Y2ggaG9va3MgY2FuIG5ldmVyIGJlIHJlbW92ZWQuICopXG4gIGFzc2VydCAodW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsOnBoeXNfZXF1YWwgfnN1Ymxpc3Q6KEhhc2h0YmwuZGF0YSB0YWJsZSkgbGlzdClcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y2hlY2tfYWNjZXNzOmlnbm9yZVxuICAgICAgfmpvYl9wb29sOihjaGVjayBKb2JfcG9vbC5pbnZhcmlhbnQpXG4gICAgICB+bm9ybWFsX3ByaW9yaXR5X2pvYnM6KGNoZWNrIEpvYl9xdWV1ZS5pbnZhcmlhbnQpXG4gICAgICB+bG93X3ByaW9yaXR5X2pvYnM6KGNoZWNrIEpvYl9xdWV1ZS5pbnZhcmlhbnQpXG4gICAgICB+dmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyczpcbiAgICAgICAgKGNoZWNrIChmdW4gcSAtPiBEZXF1ZS5pdGVyIHEgfmY6VmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLmludmFyaWFudCkpXG4gICAgICB+bWFpbl9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH51bmNhdWdodF9leG46XG4gICAgICAgIChjaGVjayAoZnVuIHVuY2F1Z2h0X2V4biAtPlxuICAgICAgICAgICBpZiBpc19zb21lIHVuY2F1Z2h0X2V4biB0aGVuIGFzc2VydCAobnVtX3BlbmRpbmdfam9icyB0ID0gMCkpKVxuICAgICAgfmN5Y2xlX2NvdW50OihjaGVjayAoZnVuIGN5Y2xlX2NvdW50IC0+IGFzc2VydCAoY3ljbGVfY291bnQgPj0gMCkpKVxuICAgICAgfmN5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfmluX2N5Y2xlOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSAtPlxuICAgICAgICAgICBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudFxuICAgICAgICAgICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZVxuICAgICAgICAgICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0KSlcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQpKVxuICAgICAgfmxhc3RfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH50b3RhbF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfmxhc3RfY3ljbGVfbnVtX2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGxhc3RfY3ljbGVfbnVtX2pvYnMgLT4gYXNzZXJ0IChsYXN0X2N5Y2xlX251bV9qb2JzID49IDApKSlcbiAgICAgIH50aW1lX3NvdXJjZTpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5SZWFkX3dyaXRlLmludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIGpvYiAtPlxuICAgICAgICAgICAgICBhc3NlcnQgKFBvb2wucG9pbnRlcl9pc192YWxpZCB0LmpvYl9wb29sIGpvYikpKSlcbiAgICAgIH5leHRlcm5hbF9qb2JzOmlnbm9yZVxuICAgICAgfnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rOmlnbm9yZVxuICAgICAgfmpvYl9xdWV1ZWRfaG9vazppZ25vcmVcbiAgICAgIH5ldmVudF9hZGRlZF9ob29rOmlnbm9yZVxuICAgICAgfnlpZWxkOmlnbm9yZVxuICAgICAgfnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluOmlnbm9yZVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6aWdub3JlXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6aWdub3JlXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogdCldXG47O1xuXG5sZXQgZnJlZV9qb2IgdCBqb2IgPSBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2JcblxubGV0IGVucXVldWUgdCAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSBmIGEgPVxuICAoKiBJZiB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLCB3ZSBkb24ndCBhZGQgdGhlIGpvYiwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBhbnkgam9ic1xuICAgICB0byBydW4gb25jZSB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLiAqKVxuICBpZiBpc19ub25lIHQudW5jYXVnaHRfZXhuXG4gIHRoZW4gKFxuICAgIGxldCBwcmlvcml0eSA9IGV4ZWN1dGlvbl9jb250ZXh0LnByaW9yaXR5IGluXG4gICAgbGV0IGpvYl9xdWV1ZSA9XG4gICAgICBtYXRjaCBwcmlvcml0eSB3aXRoXG4gICAgICB8IE5vcm1hbCAtPiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICB8IExvdyAtPiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgaW5cbiAgICBKb2JfcXVldWUuZW5xdWV1ZSBqb2JfcXVldWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIG1hdGNoIHQuam9iX3F1ZXVlZF9ob29rIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPiBmIHByaW9yaXR5KVxuOztcblxubGV0IGVucXVldWVfam9iIHQgam9iIH5mcmVlX2pvYiA9XG4gIGxldCBqb2JfcG9vbCA9IHQuam9iX3Bvb2wgaW5cbiAgZW5xdWV1ZVxuICAgIHRcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MClcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MSlcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50Mik7XG4gIGlmIGZyZWVfam9iIHRoZW4gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG47O1xuXG5sZXQgaGFuZGxlX2ZpcmVkICh0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCkgam9iX29yX2V2ZW50ID1cbiAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICB8IEpvYiwgam9iIC0+IGVucXVldWVfam9iIHRpbWVfc291cmNlLnNjaGVkdWxlciBqb2IgfmZyZWVfam9iOnRydWVcbiAgfCBFdmVudCwgZXZlbnQgLT4gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuZmlyZSB0aW1lX3NvdXJjZSBldmVudFxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICBsZXQgcmVjIHQgPVxuICAgIHsgY2hlY2tfYWNjZXNzID0gTm9uZVxuICAgIDsgam9iX3Bvb2wgPSBKb2JfcG9vbC5jcmVhdGUgKClcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzID0gRGVxdWUuY3JlYXRlICgpXG4gICAgOyBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IHVuY2F1Z2h0X2V4biA9IE5vbmVcbiAgICA7IGN5Y2xlX3N0YXJ0ID0gbm93XG4gICAgOyBjeWNsZV9jb3VudCA9IDBcbiAgICA7IGluX2N5Y2xlID0gZmFsc2VcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA9IFtdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA9IFtdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZSlcbiAgICA7IGxhc3RfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgbGFzdF9jeWNsZV9udW1fam9icyA9IDBcbiAgICA7IHRvdGFsX2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBleHRlcm5hbF9qb2JzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA9IGlnbm9yZVxuICAgIDsgam9iX3F1ZXVlZF9ob29rID0gTm9uZVxuICAgIDsgZXZlbnRfYWRkZWRfaG9vayA9IE5vbmVcbiAgICA7IHlpZWxkID0gQnZhci5jcmVhdGUgKClcbiAgICA7IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID0gQnZhci5jcmVhdGUgKCkgKCogY29uZmlndXJhdGlvbiAqKVxuICAgIDsgY2hlY2tfaW52YXJpYW50cyA9IEFzeW5jX2tlcm5lbF9jb25maWcuY2hlY2tfaW52YXJpYW50c1xuICAgIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgICBBc3luY19rZXJuZWxfY29uZmlnLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgOyByZWNvcmRfYmFja3RyYWNlcyA9IEFzeW5jX2tlcm5lbF9jb25maWcucmVjb3JkX2JhY2t0cmFjZXNcbiAgICB9XG4gIGFuZCBldmVudHMgPVxuICAgIFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzpBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vd1xuICBhbmQgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSB0cnVlXG4gICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHNjaGVkdWxlciA9IHRcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCBpc19kZWFkIHQgPSBpc19zb21lIHQudW5jYXVnaHRfZXhuXG5sZXQgc2V0X2NoZWNrX2FjY2VzcyB0IGYgPSB0LmNoZWNrX2FjY2VzcyA8LSBmXG5cbmxldCB0X3JlZiA9XG4gIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBjcmVhdGUgd2l0aFxuICB8IE9rIHQgLT4gcmVmIHRcbiAgfCBFcnJvciBleG4gLT5cbiAgICBEZWJ1Zy5sb2cgXCJBc3luYyBjYW5ub3QgY3JlYXRlIGl0cyByYXcgc2NoZWR1bGVyXCIgZXhuIFslc2V4cF9vZjogZXhuXTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBjaGVja19hY2Nlc3MgdCA9XG4gIG1hdGNoIHQuY2hlY2tfYWNjZXNzIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgKClcbjs7XG5cbmxldCB0ICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgY2hlY2tfYWNjZXNzIHQ7XG4gIHRcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgPVxuICBpZiB0LnJlY29yZF9iYWNrdHJhY2VzXG4gIHRoZW4gRXhlY3V0aW9uX2NvbnRleHQucmVjb3JkX2JhY2t0cmFjZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgZWxzZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSB0IHRtcF9jb250ZXh0IH5mIHggPVxuICBsZXQgb2xkX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdG1wX2NvbnRleHQ7XG4gIHByb3RlY3R4IH5mIHggfmZpbmFsbHk6KGZ1biBfIC0+IHNldF9leGVjdXRpb25fY29udGV4dCB0IG9sZF9jb250ZXh0KVxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dCB+ZiA9IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgKClcblxubGV0IGNyZWF0ZV9qb2IgKHR5cGUgYSkgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiBQb29sLmlzX2Z1bGwgdC5qb2JfcG9vbCB0aGVuIHQuam9iX3Bvb2wgPC0gUG9vbC5ncm93IHQuam9iX3Bvb2w7XG4gIFBvb2wubmV3M1xuICAgIHQuam9iX3Bvb2xcbiAgICBleGVjdXRpb25fY29udGV4dFxuICAgIChPYmoubWFnaWMgKGYgOiBhIC0+IHVuaXQpIDogT2JqLnQgLT4gdW5pdClcbiAgICAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBnb3RfdW5jYXVnaHRfZXhuIHQgZXhuIHNleHAgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImdvdF91bmNhdWdodF9leG5cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XTtcbiAgTGlzdC5pdGVyIFsgdC5ub3JtYWxfcHJpb3JpdHlfam9iczsgdC5sb3dfcHJpb3JpdHlfam9icyBdIH5mOkpvYl9xdWV1ZS5jbGVhcjtcbiAgdC51bmNhdWdodF9leG4gPC0gU29tZSAoZXhuLCBzZXhwKVxuOztcblxuKCogW3N0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGVuYWJsZXMgc3Vic2VxdWVudCBjYWxscyBvZiBbcnVuX2pvYnNdXG4gICB0byBydW4gdXAgdG8gW21heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGpvYnMgb2YgZWFjaCBwcmlvcml0eSBsZXZlbC4gKilcbmxldCBzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5ID1cbiAgbGV0IG4gPSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eSBpblxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgbjtcbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lmxvd19wcmlvcml0eV9qb2JzIG5cbjs7XG5cbigqIFtydW5fam9icyB0XSByZW1vdmVzIGpvYnMgZnJvbSBbdF0gb25lIGF0IGEgdGltZSBhbmQgcnVucyB0aGVtLCBzdG9wcGluZyBhcyBzb29uXG4gICBhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3Igd2hlbiBubyBtb3JlIGpvYnMgY2FuIGJlIHJ1biBhdCBhbnkgcHJpb3JpdHksXG4gICBhcyBwZXIgW35tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XS4gKilcbmxldCByZWMgcnVuX2pvYnMgdCA9XG4gIG1hdGNoIEpvYl9xdWV1ZS5ydW5fam9icyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIHQgd2l0aFxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gIHwgT2sgKCkgLT5cbiAgICAobWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubG93X3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgfCBPayAoKSAtPlxuICAgICAgIGlmIEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgICB8fCBKb2JfcXVldWUuY2FuX3J1bl9hX2pvYiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgICAgdGhlbiBydW5fam9icyB0XG4gICAgICAgZWxzZSBPayAoKSlcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIHN0YXJ0X2N5Y2xlXG4gICAgdFxuICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5OlxuICAgICAgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gSW50Lm1heF92YWx1ZSk7XG4gIG1hdGNoIHJ1bl9qb2JzIHQgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGV4biwgX2JhY2t0cmFjZSkgLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgY3JlYXRlX3RpbWVfc291cmNlXG4gICAgICA/KHRpbWluZ193aGVlbF9jb25maWcgPSBBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcpXG4gICAgICB+bm93XG4gICAgICAoKVxuICA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXZlbnRzID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vdyBpblxuICBsZXQgcmVjIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gZmFsc2VcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdGltZV9zb3VyY2Vcbjs7XG5cbmxldCB3YWxsX2Nsb2NrICgpID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UucmVhZF9vbmx5ICh0ICgpKS50aW1lX3NvdXJjZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIENlbGwgPSBUeXBlcy5DZWxsXG5cbnR5cGUgYW55ID1cbiAgWyBgRW1wdHlcbiAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgfCBgRnVsbFxuICB8IGBJbmRpclxuICBdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkl2YXIudCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBhbnkpIGNlbGwgfVxuXG4oKiBUaGUgWydiXSBpcyB1c2VkIHRvIGVuY29kZSB0aGUgY29uc3RydWN0b3IuICBUaGlzIGFsbG93cyB1cyB0byB3cml0ZSBmdW5jdGlvbnMgdGhhdFxuICAgdGFrZSBvbmx5IG9uZSBvZiB0aGUgY29uc3RydWN0b3JzLCB3aXRoIG5vIHJ1bnRpbWUgdGVzdC5cblxuICAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBkaXJlY3RlZCBncmFwaCB3aXRoIGl2YXJzIGFzIG5vZGVzIGFuZCBbSW5kaXJdcyBhc1xuICAgZWRnZXMgaXMgYWN5Y2xpYy4gIFRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSBhbiBbSW5kaXJdIGFyZSBbc3F1YXNoXSBhbmRcbiAgIFtjb25uZWN0XSwgYW5kIGZvciB0aG9zZSwgdGhlIHRhcmdldCBvZiB0aGUgW0luZGlyXSBpcyBhbHdheXMgYSBub24tW0luZGlyXS4gIFRodXMsIHRoZVxuICAgbmV3bHkgYWRkZWQgZWRnZXMgYXJlIG5ldmVyIHBhcnQgb2YgYSBjeWNsZS4gKilcbmFuZCAoJ2EsICdiKSBjZWxsID0gKCdhLCAnYikgVHlwZXMuQ2VsbC50ID1cbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICB7ICgqIFtydW5dIGlzIG11dGFibGUgc28gd2UgY2FuIHNldCBpdCB0byBbaWdub3JlXSB3aGVuIHRoZSBoYW5kbGVyIGlzIHJlbW92ZWQuXG4gICAgICAgICAgIFRoaXMgaXMgdXNlZCB3aGVuIHdlIGluc3RhbGwgYSBoYW5kbGVyIG9uIGEgZnVsbCBpdmFyIHNpbmNlIGl0IGlzIGltbWVkaWF0ZWx5XG4gICAgICAgICAgIGFkZGVkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gICAgICAgIG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW3ByZXZdIGFuZCBbbmV4dF0gY2lyY3VsYXJseSBkb3VibHkgbGluayBhbGwgaGFuZGxlcnMgb2YgdGhlIHNhbWUgaXZhci4gKilcbiAgICAgICAgbXV0YWJsZSBwcmV2IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICA7IG11dGFibGUgbmV4dCA6ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICAgICAgfVxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIGNlbGxcbiAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIGNlbGxcbiAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSBjZWxsXG4gIHwgSW5kaXIgOiAnYSB0IC0+ICgnYSwgWz4gYEluZGlyIF0pIGNlbGxcblxubW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG5cbiAgbGV0IHJ1biAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnJ1blxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5leGVjdXRpb25fY29udGV4dFxuICBsZXQgcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnByZXZcbiAgbGV0IG5leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5uZXh0XG4gIGxldCBzZXRfcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5ydW4gPC0geFxuICBsZXQgc2V0X3ByZXYgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnByZXYgPC0geFxuICBsZXQgc2V0X25leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0Lm5leHQgPC0geFxuXG4gIGxldCBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0ID1cbiAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgICAgICB7IHJ1blxuICAgICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHRcbiAgICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdFxuICAgICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0IH1cbiAgICAgICAgIGluXG4gICAgICAgICBoMSBdfVxuXG4gICAgICAgSG93ZXZlciB0aGUgY29tcGlsYXRpb24gb2YgcmVjdXJzaXZlIHZhbHVlIGluIE9DYW1sIGlzIG5vdCBvcHRpbWFsOiB0aGUgdmFsdWUgaXNcbiAgICAgICBhbGxvY2F0ZWQgdHdpY2UgYW5kIGNvcGllZCBvbmNlICh3aXRoIGEgbG9vcCBjYWxsaW5nIGNhbWxfbW9kaWZ5KS4gIFRoaXMgaXMgbm90XG4gICAgICAgbmVjZXNzYXJ5IGZvciBzaW1wbGUgcmVjdXJzaXZlIGRlZmluaXRpb25zIGxpa2UgdGhpcyBvbmUuXG5cbiAgICAgICBJbnN0ZWFkIHdlIGFsbG9jYXRlIHRoZSB2YWx1ZSB3aXRoIGR1bW15IGZpZWxkcyBhbmQgdXBkYXRlIHRoZW0gYWZ0ZXIuICopXG4gICAgbGV0IHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gT2JqLm1hZ2ljIE5vbmU7IG5leHQgPSBPYmoubWFnaWMgTm9uZSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA9XG4gICAgKCogQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mOlxuXG4gICAgICAge1tcbiAgICAgICAgIGxldCByZWMgdDEgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMVxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MlxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDIgfVxuICAgICAgICAgYW5kIHQyID1cbiAgICAgICAgICAgeyBydW4gICAgICAgICAgICAgICA9IHJ1bjJcbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MlxuICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdDFcbiAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQxIH1cbiAgICAgICAgIGluXG4gICAgICAgICB0MSBdfSAqKVxuICAgIGxldCB0MSA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjFcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MVxuICAgICAgICA7IHByZXYgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICA7IG5leHQgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgdDIgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW4gPSBydW4yOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MjsgcHJldiA9IHQxOyBuZXh0ID0gdDEgfVxuICAgIGluXG4gICAgc2V0X3ByZXYgdDEgdDI7XG4gICAgc2V0X25leHQgdDEgdDI7XG4gICAgdDFcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdCk7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGxldCB0MSA9ICFyIGluXG4gICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKHByZXYgKG5leHQgdDEpKSB0MSk7XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgKGV4ZWN1dGlvbl9jb250ZXh0IHQxKTtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBwaHlzX2VxdWFsIHQgKG5leHQgdClcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCBuID0gcmVmIDEgaW5cbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgaW5jciBuO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZTtcbiAgICAhblxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIHQgc2NoZWR1bGVyIHYgPSBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgKGV4ZWN1dGlvbl9jb250ZXh0IHQpIChydW4gdCkgdlxuXG4gIGxldCBzY2hlZHVsZV9qb2JzIHQgdiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgZW5xdWV1ZSB0IHNjaGVkdWxlciB2O1xuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBlbnF1ZXVlICFyIHNjaGVkdWxlciB2O1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9XG4gICAgc2V0X3ByZXYgKG5leHQgdCkgKHByZXYgdCk7XG4gICAgc2V0X25leHQgKHByZXYgdCkgKG5leHQgdCk7XG4gICAgc2V0X3ByZXYgdCB0O1xuICAgIHNldF9uZXh0IHQgdFxuICA7O1xuXG4gIGxldCBhZGQgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gcHJldiB0OyBuZXh0ID0gdCB9XG4gICAgaW5cbiAgICBzZXRfbmV4dCAocHJldiB0KSByZXN1bHQ7XG4gICAgc2V0X3ByZXYgdCByZXN1bHQ7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgKCogW3NwbGljZSB0MSB0Ml0gY3JlYXRlczpcblxuICAgICB7dlxuICAgICAgIC0tPiB0MSA8LS0+IC4uLiA8LS0+IGxhc3QxIDwtLT4gdDIgPC0tPiAuLi4gPC0tPiBsYXN0MiA8LS1cbiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICB2fSAqKVxuICBsZXQgc3BsaWNlIHQxIHQyID1cbiAgICBsZXQgbGFzdDEgPSBwcmV2IHQxIGluXG4gICAgbGV0IGxhc3QyID0gcHJldiB0MiBpblxuICAgIHNldF9uZXh0IGxhc3QxIHQyO1xuICAgIHNldF9uZXh0IGxhc3QyIHQxO1xuICAgIHNldF9wcmV2IHQxIGxhc3QyO1xuICAgIHNldF9wcmV2IHQyIGxhc3QxXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgbGV0IGZpcnN0ID0gY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICAgbGV0IHJlYyBsb29wIHByZXYgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNldF9wcmV2IGZpcnN0IHByZXZcbiAgICAgICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldjsgbmV4dCA9IGZpcnN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIHNldF9uZXh0IHByZXYgdDtcbiAgICAgICAgICBsb29wIHQgbFxuICAgICAgaW5cbiAgICAgIGxvb3AgZmlyc3QgbDtcbiAgICAgIFNvbWUgZmlyc3RcbiAgOztcblxuICBsZXQgdG9fbGlzdCBmaXJzdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgYWNjID1cbiAgICAgIGxldCBhY2MgPSAocnVuIHQsIGV4ZWN1dGlvbl9jb250ZXh0IHQpIDo6IGFjYyBpblxuICAgICAgaWYgcGh5c19lcXVhbCB0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCAocHJldiB0KSBhY2NcbiAgICBpblxuICAgIGxvb3AgKHByZXYgZmlyc3QpIFtdXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBfICh0IDogXyB0KSA9XG4gICAgbGV0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1biA9IF87IGV4ZWN1dGlvbl9jb250ZXh0OyBuZXh0ID0gXzsgcHJldiA9IF8gfSkgPVxuICAgICAgdFxuICAgIGluXG4gICAgWyVtZXNzYWdlIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaXZhciA9ICdhIHRcblxuKCogQ29tcGlsZWQgYXMgdGhlIGlkZW50aXR5LiAqKVxubGV0IGNlbGxfb2ZfaGFuZGxlciA6IF8gSGFuZGxlci50IC0+IF8gPSBmdW5jdGlvblxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgeCAtPiAoeCA6PiAoXywgYW55KSBjZWxsKVxuOztcblxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xubGV0IGluZGlyIHQgPSB7IGNlbGwgPSBJbmRpciB0IH1cblxuaW5jbHVkZSBTY2hlZHVsZXIuSXZhclxuXG4oKiBbc3F1YXNoIHRdIHJldHVybnMgdGhlIG5vbi1bSW5kaXJdIGl2YXIgYXQgdGhlIGVuZCBvZiB0aGUgKHBvc3NpYmx5IGVtcHR5KSBjaGFpbiBvZlxuICAgW0luZGlyXXMgc3RhcnRpbmcgd2l0aCBbdF0gYW5kIGVuc3VyZXMgdGhhdCBhbGwgW0luZGlyXXMgYWxvbmcgdGhhdCBjaGFpbiBhcmUgcmVwbGFjZWRcbiAgIHdpdGggYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbi4gKilcbmxldCBzcXVhc2ggPVxuICBsZXQgcmVjIGZvbGxvdyBpbmRpciB0ID1cbiAgICAoKiBbaW5kaXIgPSBJbmRpciB0XSAqKVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyBhcyBpbmRpcicgLT4gZm9sbG93IGluZGlyJyB0J1xuICAgIHwgXyAtPiBpbmRpclxuICBpblxuICBsZXQgcmVjIHVwZGF0ZSB0IGluZGlyID1cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIHQuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHVwZGF0ZSB0JyBpbmRpclxuICAgIHwgXyAtPiB0XG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIC0+XG4gICAgICAobWF0Y2ggdCcuY2VsbCB3aXRoXG4gICAgICAgfCBJbmRpciB0JycgYXMgaW5kaXIgLT4gdXBkYXRlIHQgKGZvbGxvdyBpbmRpciB0JycpXG4gICAgICAgfCBfIC0+IHQnICgqIG5vdGhpbmcgdG8gZG8sIHNpbmNlIFt0XSBpcyBhIGNoYWluIHdpdGggYSBzaW5nbGUgW0luZGlyXSAqKSlcbiAgICB8IF8gLT4gdFxuOztcblxuKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzbid0IGFuIFtJbmRpcl0uICopXG5cbmxldCBpbnZhcmlhbnQgYV9pbnZhcmlhbnQgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYV9pbnZhcmlhbnQgYVxuICB8IEVtcHR5IC0+ICgpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKF8sIGV4ZWN1dGlvbl9jb250ZXh0KSAtPlxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCBleGVjdXRpb25fY29udGV4dFxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmludmFyaWFudCBoYW5kbGVyXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0IDogU2V4cC50ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBMaXN0IFsgQXRvbSBcIkZ1bGxcIjsgc2V4cF9vZl9hIGEgXVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gQXRvbSBcIkVtcHR5XCJcbjs7XG5cbmxldCBwZWVrIHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IFNvbWUgYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gTm9uZVxuOztcblxubGV0IHZhbHVlIHQgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGggPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IGFcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgZmFpbHdpdGggaWZfZW1wdHlfdGhlbl9mYWlsd2l0aFxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkl2YXIudmFsdWVfZXhuIGNhbGxlZCBvbiBlbXB0eSBpdmFyXCJcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IGZhbHNlXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXNfZnVsbCB0ID0gbm90IChpc19lbXB0eSB0KVxuXG5sZXQgZmlsbCB0IHYgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiSXZhci5maWxsIG9mIGZ1bGwgaXZhclwiICh0IDogXyB0KV1cbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRnVsbCB2XG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIHQuY2VsbCA8LSBGdWxsIHY7XG4gICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuOztcblxubGV0IHJlbW92ZV9oYW5kbGVyIHQgKGhhbmRsZXIgOiBfIEhhbmRsZXIudCkgPVxuICBIYW5kbGVyLnNldF9ydW4gaGFuZGxlciBpZ25vcmU7XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gLT5cbiAgICAoKiBUaGVzZSBhcmUgb25seSBwb3NzaWJsZSBpZiBbaGFuZGxlcl0gd2FzIGFscmVhZHkgcmVtb3ZlZC4gICopXG4gICAgKClcbiAgfCBGdWxsIF8gLT5cbiAgICAoKiBUaGlzIGlzIHBvc3NpYmxlIGlmIFt0XSB3YXMgZmlsbGVkIGJlZm9yZSB3ZSB0cnkgdG8gcmVtb3ZlIHRoZSBoYW5kbGVyLiAgRS5nLlxuICAgICAgIFtEZWZlcnJlZC5jaG9vc2VdIHdpbGwgZG8gdGhpcy4gKilcbiAgICAoKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgY2VsbCAtPlxuICAgIGlmIEhhbmRsZXIuaXNfc2luZ2xldG9uIGhhbmRsZXJcbiAgICB0aGVuIHQuY2VsbCA8LSBFbXB0eVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBoYW5kbGVyIGNlbGwgdGhlbiB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLm5leHQgaGFuZGxlcik7XG4gICAgICBIYW5kbGVyLnVubGluayBoYW5kbGVyKVxuOztcblxubGV0IGFkZF9oYW5kbGVyIHQgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnIGluXG4gICAgdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyO1xuICAgIGhhbmRsZXJcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT4gSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHRcbiAgfCBGdWxsIHYgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICgqIFtydW5dIGNhbGxzIFtoYW5kbGVyLnJ1bl0sIHdoaWNoLCBpZiBbaGFuZGxlcl0gaGFzIGJlZW4gcmVtb3ZlZCwgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAgIHRvIFtpZ25vcmVdLiAqKVxuICAgIGxldCBydW4gdiA9IEhhbmRsZXIucnVuIGhhbmRsZXIgdiBpblxuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2O1xuICAgIGhhbmRsZXJcbjs7XG5cbmxldCBoYXNfaGFuZGxlcnMgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG4gIHwgRW1wdHkgfCBGdWxsIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB1cG9uJyB0IHJ1biA9IGFkZF9oYW5kbGVyIHQgcnVuIFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpXG5cbigqIFt1cG9uXSBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUgYXM6XG5cbiAgIHtbXG4gICAgIGxldCB1cG9uIHQgZiA9IGlnbm9yZSAodXBvbicgdCBydW4pIF19XG5cbiAgIEhvd2V2ZXIsIGJlbG93IGlzIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHdvcnRoIGRvaW5nIGJlY2F1c2UgW3Vwb25dXG4gICBpcyB2ZXJ5IHdpZGVseSB1c2VkIGFuZCBpcyBzbyBtdWNoIG1vcmUgY29tbW9uIHRoYW4gW3Vwb24nXS4gIFRoZSBiZWxvdyBpbXBsZW1lbnRhdGlvblxuICAgYXZvaWRzIHRoZSB1c2Ugb2YgdGhlIGJhZyBvZiBoYW5kbGVycyBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIG9mIG9uZSBoYW5kbGVyIGZvclxuICAgdGhlIGRlZmVycmVkLiAqKVxubGV0IHVwb24gdCBydW4gPVxuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIHYgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHkgLT4gdC5jZWxsIDwtIEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgdC5jZWxsXG4gICAgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHQgOiBfIEhhbmRsZXIudClcbjs7XG5cbigqIFtjb25uZWN0XSB0YWtlcyBpdmFycyBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdLCBhbmQgbWFrZXMgW2JpbmRfcmhzXVxuICAgYmUgYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgbm9uLWluZGlyIGNlbGwgcmVhY2hhYmxlIGZyb20gW2JpbmRfcmVzdWx0XS4gIE9uIGVudHJ5XG4gICB0byBbY29ubmVjdF0sIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gbWF5IGJlIGNoYWlucywgc2luY2UgW2JpbmRfcmhzXSBpcyBhblxuICAgYXJiaXRyYXJ5IHVzZXItc3VwcGxpZWQgZGVmZXJyZWQsIGFuZCBbYmluZF9yZXN1bHRdIGlzIHJldHVybmVkIHRvIHRoZSB1c2VyIHByaW9yIHRvXG4gICBiZWluZyBbY29ubmVjdF1lZCwgYW5kIG1heSBoYXZlIGJlZW4gY29udmVydGVkIHRvIGFuIGluZGlyZWN0aW9uIGluIHRoZSBjYXNlIG9mXG4gICByaWdodC1uZXN0ZWQgYmluZHMuXG5cbiAgIFRoZSBwdXJwb3NlIG9mIFtjb25uZWN0XSBpcyB0byBtYWtlIHRhaWwtcmVjdXJzaXZlIGJpbmQgbG9vcHMgdXNlIGNvbnN0YW50IHNwYWNlLlxuICAgRS5nLjpcblxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgIGlmIGkgPSAwXG4gICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCViaW5kICgpID0gYWZ0ZXIgKHNlYyAxLikgaW5cbiAgICAgICAgIGxvb3AgKGkgLSAxKSkgXX1cblxuICAgW2Nvbm5lY3RdIG1ha2VzIGludGVybWVkaWF0ZSBiaW5kIHJlc3VsdHMgYWxsIGJlIFtJbmRpcl1zIHBvaW50aW5nIGF0IHRoZSBvdXRlcm1vc3RcbiAgIGJpbmQsIHJhdGhlciB0aGFuIGJlaW5nIGEgbGluZWFyLWxlbmd0aCBjaGFpbiwgd2l0aCBlYWNoIHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBvbmUuXG4gICBUaGVuLCBzaW5jZSB0aGUgcHJvZ3JhbSBpcyBvbmx5IGhvbGRpbmcgb24gdG8gdGhlIGlubmVybW9zdCBhbmQgb3V0ZXJtb3N0IGJpbmRzIGFsbCB0aGVcbiAgIGludGVybWVkaWF0ZSBvbmVzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC5cblxuICAgW2Nvbm5lY3RdIHdvcmtzIGJ5IHNxdWFzaGluZyBpdHMgYXJndW1lbnRzIHNvIHRoYXQgdGhlIFtiaW5kX3Joc10gYWx3YXlzIHBvaW50cyBhdCB0aGVcbiAgIHVsdGltYXRlIHJlc3VsdC4gKilcbmxldCBjb25uZWN0ID1cbiAgKCogW3JlcG9pbnRfaW5kaXJzIH5pdmFyIH5pbmRpciB+YmluZF9yZXN1bHRdIHJlcG9pbnRzIHRvIFtpbmRpcl0gYWxsIHRoZSBpdmFycyBpbiB0aGVcbiAgICAgY2hhaW4gcmVhY2hhYmxlIGZyb20gW2l2YXJdLCBhbmQgcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gY2VsbCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgICBjaGFpbi4gIEFmdGVyIHJlcG9pbnRpbmcsIHdlIHdpbGwgbWVyZ2UgdGhlIGhhbmRsZXJzIGluIHRoYXQgY2VsbCB3aXRoIHRoZSBoYW5kbGVyc1xuICAgICBpbiBbYmluZF9yZXN1bHRdLCBhbmQgcHV0IHRoZSBtZXJnZWQgc2V0IG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0uICopXG4gIGxldCByZWMgcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdCA9XG4gICAgbGV0IGNlbGwgPSBpdmFyLmNlbGwgaW5cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IEluZGlyIGl2YXInIC0+XG4gICAgICBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICByZXBvaW50X2luZGlycyB+aXZhcjppdmFyJyB+aW5kaXIgfmJpbmRfcmVzdWx0XG4gICAgfCBGdWxsIF8gLT4gY2VsbFxuICAgIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPlxuICAgICAgKCogSXQgaXMgcG9zc2libGUgdGhhdCBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdIGFyZSBub3QgZXF1YWwsIGJ1dCB0aGVpciBjaGFpbnNcbiAgICAgICAgIG9mIGluZGlycyBsZWFkIHRvIHRoZSBzYW1lIG5vbi1bSW5kaXJdIGNlbGwsIGluIHdoaWNoIGNhc2Ugd2UgY2Fubm90IHNldCB0aGF0XG4gICAgICAgICBjZWxsIHRvIHBvaW50IHRvIGl0c2VsZiwgYmVjYXVzZSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIGN5Y2xlLiAqKVxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIGl2YXIgYmluZF9yZXN1bHQpIHRoZW4gaXZhci5jZWxsIDwtIGluZGlyO1xuICAgICAgY2VsbFxuICBpblxuICBmdW4gfmJpbmRfcmVzdWx0IH5iaW5kX3JocyAtPlxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBiaW5kX3Jlc3VsdCBiaW5kX3JocylcbiAgICB0aGVuIChcbiAgICAgIGxldCBiaW5kX3Jlc3VsdCA9IHNxdWFzaCBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGluZGlyID0gSW5kaXIgYmluZF9yZXN1bHQgaW5cbiAgICAgIGxldCBiaW5kX3Joc19jb250ZW50cyA9IHJlcG9pbnRfaW5kaXJzIH5pdmFyOmJpbmRfcmhzIH5pbmRpciB+YmluZF9yZXN1bHQgaW5cbiAgICAgICgqIHVwZGF0ZSBbYmluZF9yZXN1bHRdIHdpdGggdGhlIHVuaW9uIG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0gYW5kXG4gICAgICAgICBbYmluZF9yaHNdICopXG4gICAgICBtYXRjaCBiaW5kX3Jlc3VsdC5jZWxsLCBiaW5kX3Joc19jb250ZW50cyB3aXRoXG4gICAgICB8IEluZGlyIF8sIF8gfCBfLCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdIGFuZCBbcmVwb2ludF9pbmRpcnNdICopXG4gICAgICAoKiBbY29ubmVjdF0gaXMgb25seSB1c2VkIGluIGJpbmQsIHdob3NlIGl2YXIgaXMgb25seSBldmVyIGV4cG9ydGVkIGFzIGEgcmVhZC1vbmx5XG4gICAgICAgICBkZWZlcnJlZC4gIFRodXMsIFtiaW5kX3Jlc3VsdF0gbXVzdCBiZSBlbXB0eS4gKilcbiAgICAgIHwgRnVsbCBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBfLCBFbXB0eSAtPiAoKVxuICAgICAgfCBFbXB0eSwgXyAtPiBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzXG4gICAgICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSwgRnVsbCB2IC0+XG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHM7XG4gICAgICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gICAgICB8IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjIsIGV4ZWN1dGlvbl9jb250ZXh0MikgKSAtPlxuICAgICAgICBsZXQgaGFuZGxlcjEgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlcjEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgOiBfIEhhbmRsZXIudClcbiAgICAgIHwgKCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMSwgZXhlY3V0aW9uX2NvbnRleHQxKVxuICAgICAgICAsIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuYWRkIGhhbmRsZXIyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIGluXG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXIxXG4gICAgICB8ICggKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT4gSGFuZGxlci5zcGxpY2UgaGFuZGxlcjEgaGFuZGxlcjIpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgSXZhciA9IEl2YXIwXG5tb2R1bGUgSGFuZGxlciA9IEl2YXIuSGFuZGxlclxuXG4oKiBEZWZlcnJlZHMgcHJlc2VudCBhIGNvdmFyaWFudCB2aWV3IG9mIGl2YXJzLiAgV2UgY291bGQgYWN0dWFsbHkgaW1wbGVtZW50IGRlZmVycmVkc1xuICAgdXNpbmcgYSByZWNvcmQgb2YgY2xvc3VyZXMsIGFzIGluIHRoZSBbZXNzZW5jZV9vZl9kZWZlcnJlZF0gcmVjb3JkIGJlbG93LCBmb3Igd2hpY2ggdGhlXG4gICBPQ2FtbCB0eXBlIGNoZWNrZXIgY2FuIGluZmVyIGNvdmFyaWFuY2UuICBIb3dldmVyLCBkb2luZyBzbyB3b3VsZCBtYWtlIFtJdmFyLnJlYWRdIHZlcnlcbiAgIGNvc3RseSwgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIHRvIGFsbG9jYXRlIGxvdHMgb2YgY2xvc3VyZXMgYW5kIGEgcmVjb3JkLiAgSW5zdGVhZCBvZlxuICAgZG9pbmcgdGhpcywgd2UgbWFrZSBkZWZlcnJlZHMgYW4gYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIHdoaWNoIGNvbmNyZXRlbHkgaXMganVzdCB0aGVcbiAgIGl2YXIsIGFuZCB1c2UgW09iai5tYWdpY10gdG8gY29udmVydCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGEgZGVmZXJyZWQgYW5kIGl0cyBjb25jcmV0ZVxuICAgcmVwcmVzZW50YXRpb24gYXMgYW4gaXZhci4gIFRoaXMgW09iai5tYWdpY10gaXMgc2FmZSBiZWNhdXNlIHRoZSByZXByZXNlbnRhdGlvbiBpc1xuICAgYWx3YXlzIGp1c3QgYW4gaXZhciwgYW5kIHRoZSBjb3ZhcmlhbmNlIGZvbGxvd3MgZnJvbSB0aGUgZmFjdCB0aGF0IGFsbCB0aGUgZGVmZXJyZWRcbiAgIG9wZXJhdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gdGhvc2UgaW1wbGVtZW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIHRoZVxuICAgW2Vzc2VuY2Vfb2ZfZGVmZXJyZWRdLlxuXG4gICB7W1xuICAgICB0eXBlICgrJ2EsICdleGVjdXRpb25fY29udGV4dCkgZXNzZW5jZV9vZl9kZWZlcnJlZCA9XG4gICAgICAgeyBwZWVrICAgICAgICAgICAgICAgICAgICAgIDogdW5pdCAtPiAnYSBvcHRpb25cbiAgICAgICA7IGlzX2RldGVybWluZWQgICAgICAgICAgICAgOiB1bml0IC0+IGJvb2xcbiAgICAgICA7IHVwb24gICAgICAgICAgICAgICAgICAgICAgOiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICAgICAgIDsgdXBvbicgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiBVbnJlZ2lzdGVyLnRcbiAgICAgICA7IGluc3RhbGxfcmVtb3ZhYmxlX2hhbmRsZXIgOiAoJ2EsICdleGVjdXRpb25fY29udGV4dCkgUmF3X2hhbmRsZXIudCAtPiBVbnJlZ2lzdGVyLnQ7IH0gXX0gKilcblxudHlwZSArJ2EgdCA9ICdhIFR5cGVzLkRlZmVycmVkLnRcblxuKCogdGhlIGFic3RyYWN0IGNvdmFyaWFudCB0eXBlLCBlcXVpdmFsZW50IHRvIGl2YXIgKilcblxubGV0IG9mX2l2YXIgKHR5cGUgYSkgKGl2YXIgOiBhIEl2YXIudCkgOiBhIHQgPSBPYmoubWFnaWMgaXZhclxubGV0IHRvX2l2YXIgKHR5cGUgYSkgdCA6IGEgSXZhci50ID0gT2JqLm1hZ2ljICh0IDogYSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgKHRvX2l2YXIgdClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBJdmFyLnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2l2YXIgdClcbmxldCBwZWVrIHQgPSBJdmFyLnBlZWsgKHRvX2l2YXIgdClcbmxldCByZXR1cm4gYSA9IG9mX2l2YXIgKEl2YXIuY3JlYXRlX2Z1bGwgYSlcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBJdmFyLmlzX2Z1bGwgKHRvX2l2YXIgdClcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgSXZhci52YWx1ZVxuICAgICh0b19pdmFyIHQpXG4gICAgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGg6XCJEZWZlcnJlZC52YWx1ZV9leG4gY2FsbGVkIG9uIHVuZGV0ZXJtaW5lZCBkZWZlcnJlZFwiXG47O1xuXG5sZXQgdXBvbiB0IGYgPSBJdmFyLnVwb24gKHRvX2l2YXIgdCkgZlxuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZiByZXN1bHQ7XG4gIG9mX2l2YXIgcmVzdWx0XG47O1xuXG4oKiBkb24ndCB1c2UgW2NyZWF0ZV0gaGVyZSBhcyBpdCB3b3VsZCBhbGxvY2F0ZSBvbmUgbW9yZSBjbG9zdXJlICopXG5sZXQgYmluZCB0IH5mID1cbiAgbGV0IGJpbmRfcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmNvbm5lY3QgfmJpbmRfcmVzdWx0IH5iaW5kX3JoczoodG9faXZhciAoZiBhKSkpO1xuICBvZl9pdmFyIGJpbmRfcmVzdWx0XG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBmIGV4ZWN1dGlvbl9jb250ZXh0ID0gSXZhci5hZGRfaGFuZGxlciAodG9faXZhciB0KSBmIGV4ZWN1dGlvbl9jb250ZXh0XG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCBoID0gSXZhci5yZW1vdmVfaGFuZGxlciAodG9faXZhciB0KSBoXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMFxuaW5jbHVkZSBJdmFyMFxuXG5sZXQgcmVhZCA9IERlZmVycmVkLm9mX2l2YXJcbmxldCBmaWxsX2lmX2VtcHR5IHQgdiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmaWxsIHQgdlxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKE9wdGlvbilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gcGVlayB0XG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICAgICAgICB8IFNvbWUgYSAtPiBjcmVhdGVfZnVsbCBhXG4gICAgICA7O1xuICAgIGVuZClcbiIsIigqKiBbTW9uYWRfc2VxdWVuY2UuU10gaXMgYSBnZW5lcmljIGludGVyZmFjZSBzcGVjaWZ5aW5nIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBhXG4gICAgY29udGFpbmVyIGFuZCBhIG1vbmFkLiAgSXQgaXMgc3BlY2lhbGl6ZWQgdG8gdGhlIFtEZWZlcnJlZF0gbW9uYWQgYW5kIHVzZWQgd2l0aFxuICAgIHZhcmlvdXMgY29udGFpbmVycyBpbiBtb2R1bGVzIFtEZWZlcnJlZC5BcnJheV0sIFtEZWZlcnJlZC5MaXN0XSwgW0RlZmVycmVkLlF1ZXVlXSwgYW5kXG4gICAgW0RlZmVycmVkLlNlcXVlbmNlXS4gIFRoZSBbTW9uYWRfc2VxdWVuY2UuaG93XSB0eXBlIHNwZWNpZmllcyB0aGUgcGFyYWxsZWxpc20gb2ZcbiAgICBjb250YWluZXIgaXRlcmF0b3JzLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSBob3cgPVxuICBbIGBQYXJhbGxlbCAoKiogbGlrZSBbYE1heF9jb25jdXJyZW50X2pvYnMgSW50Lm1heF92YWx1ZV0gKilcbiAgfCBgU2VxdWVudGlhbFxuICAoKiogW2BTZXF1ZW50aWFsXSBpcyBvZnRlbiBidXQgbm90IGFsd2F5cyB0aGUgc2FtZSBhcyBbYE1heF9jb25jdXJyZW50X2pvYnMgMV1cbiAgICAgIChmb3IgZXhhbXBsZSwgdGhleSBkaWZmZXIgaW4gdGhlIFtPcl9lcnJvcl0gbW9uYWQpLiAqKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG9mIGludFxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgbW9uYWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIG1vbmFkXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gKGludCAqICdhKSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiBvcHRpb24gbW9uYWRcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgYWxsIDogJ2EgbW9uYWQgdCAtPiAnYSB0IG1vbmFkXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgbW9uYWQgdCAtPiB1bml0IG1vbmFkXG5cbiAgKCoqIHsyIERlZmVycmVkIGl0ZXJhdG9yc31cblxuICAgICAgSW4gdGhlIGZvbGxvd2luZywgdGhlIGRlZmF1bHQgW2hvd10gaXMgW2BTZXF1ZW50aWFsXSAqKVxuXG4gIHZhbCBpbml0IDogP2hvdzpob3cgLT4gaW50IC0+IGY6KGludCAtPiAnYSBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgaXRlciA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgaXRlcmkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBtYXAgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBtYXBpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlciA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGZpbHRlcl9tYXAgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXAgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXBpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuZW5kXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5pbmNsdWRlIERlZmVycmVkMFxuXG4oKiBUbyBhdm9pZCBhIHNwYWNlIGxlYWssIGl0IGlzIG5lY2Vzc2FyeSB0aGF0IFtuZXZlcl0gYWxsb2NhdGVzIGEgbmV3IGl2YXIgd2hlbmV2ZXIgaXQgaXNcbiAgIGNhbGxlZC4gIENvZGUgY2FuIGJpbmQgb24gW25ldmVyICgpXSwgc28gaWYgd2UgcmUtdXNlZCB0aGUgaXZhciwgd2UgY291bGQgZW5kbGVzc2x5XG4gICBhY2N1bXVsYXRlIGhhbmRsZXJzLiAqKVxubGV0IG5ldmVyICgpID0gSXZhci5yZWFkIChJdmFyLmNyZWF0ZSAoKSlcblxubW9kdWxlIE0gPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmVycmVkMFxuXG4gICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICgqIFdlIG1hbnVhbGx5IGlubGluZSBbRGVmZXJyZWQuY3JlYXRlXSBoZXJlLCBiZWNhdXNlIHRoZSBub24tZmxhbWJkYSBjb21waWxlciBpc24ndFxuICAgICAgICAgYWJsZSB0byBvcHRpbWl6ZSBhd2F5IHRoZSBjbG9zdXJlIHRoYXQgd291bGQgYmUgYmUgY3JlYXRlZC4gKilcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmZpbGwgcmVzdWx0IChmIGEpKTtcbiAgICAgIG9mX2l2YXIgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmluY2x1ZGUgTVxuXG4oKiBXZSByZWJpbmQgYWxsIHRoZSB2YXJpb3VzIFtyZXR1cm5dcyBiZWNhdXNlIHRoZSB1c2Ugb2YgdGhlIFtNb25hZC5NYWtlXSBmdW5jdG9yXG4gICBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIG5vdCBpbmxpbmUgW3JldHVybl0sIGFuZCBoZW5jZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvXG4gICBzdGF0aWNhbGx5IGFsbG9jYXRlIGNvbnN0YW50cyBsaWtlIFtyZXR1cm4gKCldLiAgQnkgcmViaW5kaW5nIFtyZXR1cm5dIGFzXG4gICBbRGVmZXJyZWQwLnJldHVybl0sIHRoZSBjb21waWxlciBjYW4gc2VlIHRoYXQ6XG5cbiAgIHtbXG4gICAgIHJldHVybiBhID0geyBJdmFyLkltbXV0YWJsZS4gY2VsbCA9IEZ1bGwgYSB9IF19XG5cbiAgIEFuZCBoZW5jZSwgaWYgW2FdIGlzIGNvbnN0YW50LCB0aGVuIHRoZSByZXR1cm4gaXMgY29uc3RhbnQgYW5kIGNhbiBiZSBzdGF0aWNhbGx5XG4gICBhbGxvY2F0ZWQuICBXaGVuIGNvbXBpbGluZyB3aXRoIGZsYW1iZGEsIHRoZSBjb21waWxlciBpbmxpbmVzIFtyZXR1cm5dIGFuZCB0aGlzIG1hbnVhbFxuICAgcmViaW5kaW5nIHdvdWxkIG5vdCBoZWxwOyB3ZSd2ZSBkZWNpZGVkIHRvIGRvIGl0IGFueXdheSBzbyB0aGF0IG5vbi1mbGFtYmRhIGJ1aWxkc1xuICAgZ2V0IHRoZSBvcHRpbWl6YXRpb24uICopXG5sZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIE0uTGV0X3N5bnRheFxuXG4gIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE0uTGV0X3N5bnRheC5MZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxuKCogV2Ugc2hhZG93IFthbGxdIG9uLXB1cnBvc2UgaGVyZSwgc2luY2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VzIGEgY2hhaW4gb2ZcbiAgIGJpbmRzIGFzIGxvbmcgYXMgdGhlIGxpc3QuICopXG5sZXQgYWxsID0gYE1ha2Vfc3VyZV90b19kZWZpbmVfYWxsX2Vsc2V3aGVyZVxubGV0IF8gPSBhbGxcbmxldCB1bml0ID0gcmV0dXJuICgpXG5cbmxldCBib3RoIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+IHVwb24gdDEgKGZ1biBhMSAtPiB1cG9uIHQyIChmdW4gYTIgLT4gSXZhci5maWxsIHJlc3VsdCAoYTEsIGEyKSkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBsZXQgKCA+Pj4gKSA9IHVwb25cbiAgbGV0IHBweF9ib3RoID0gYm90aFxuZW5kXG5cbm9wZW4gSW5maXhcblxubGV0IGRvbid0X3dhaXRfZm9yIChfIDogdW5pdCB0KSA9ICgpXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9IFQgOiAnYiBEZWZlcnJlZDAudCAqICgnYiAtPiAnYSkgLT4gJ2EgdFxuXG4gIGxldCBtYXAgKFQgKHQsIGYxKSkgfmY6ZjIgPSBUICh0LCBmdW4geCAtPiBmMiAoZjEgeCkpXG5lbmRcblxubW9kdWxlIFVucmVnaXN0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhpcyByZXByZXNlbnRhdGlvbiBzYXZlcyAybiB3b3JkcyBmb3IgYSBsaXN0IG9mIG4gY2hvaWNlcy4gKilcbiAgdHlwZSB0ID1cbiAgICB8IE5pbCA6IHRcbiAgICB8IENvbnMgOiAnYSBEZWZlcnJlZDAudCAqICdhIERlZmVycmVkMC5IYW5kbGVyLnQgKiB0IC0+IHRcblxuICBsZXQgcmVjIHByb2Nlc3MgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh0LCBoYW5kbGVyLCByZXN0KSAtPlxuICAgICAgcmVtb3ZlX2hhbmRsZXIgdCBoYW5kbGVyO1xuICAgICAgcHJvY2VzcyByZXN0XG4gIDs7XG5lbmRcblxubGV0IGNob2ljZSB0IGYgPSBDaG9pY2UuVCAodCwgZilcblxubGV0IGVuYWJsZWQgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoZnVuICgpIC0+XG4gICAgICAgIExpc3QucmV2XG4gICAgICAgICAgKExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OltdIH5mOihmdW4gYWMgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICAgICAgICAgICBtYXRjaCBwZWVrIHQgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBhY1xuICAgICAgICAgICAgIHwgU29tZSB2IC0+IGYgdiA6OiBhYykpKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBfKSkgLT5cbiAgICBDb25zICh0LCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCByZWMgY2hvb3NlX3Jlc3VsdCBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ2hvaWNlLlQgKHQsIGYpIDo6IGNob2ljZXMgLT5cbiAgICAobWF0Y2ggcGVlayB0IHdpdGhcbiAgICAgfCBOb25lIC0+IGNob29zZV9yZXN1bHQgY2hvaWNlc1xuICAgICB8IFNvbWUgdiAtPiBmIHYpXG47O1xuXG5sZXQgY2hvb3NlIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHVucmVnaXN0ZXJzID0gcmVmIFVucmVnaXN0ZXIuTmlsIGluXG4gIGxldCByZWFkeSBfID1cbiAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgIHRoZW4gKFxuICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzICF1bnJlZ2lzdGVycztcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKGNob29zZV9yZXN1bHQgY2hvaWNlcykpXG4gIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIHVucmVnaXN0ZXJzXG4gIDo9IExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gYWNjIChDaG9pY2UuVCAodCwgXykpIC0+XG4gICAgQ29ucyAodCwgRGVmZXJyZWQwLmFkZF9oYW5kbGVyIHQgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQsIGFjYykpO1xuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgYW55X2YgdHMgZiA9IGNob29zZSAoTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+IGNob2ljZSB0IGYpKVxubGV0IGFueSB0cyA9IGFueV9mIHRzIEZuLmlkXG5sZXQgYW55X3VuaXQgdHMgPSBhbnlfZiB0cyAoRm4uaWdub3JlIDogdW5pdCAtPiB1bml0KVxuXG5sZXQgZm9yXyBzdGFydCB+dG9fIH5kb18gPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+IHRvX1xuICAgIHRoZW4gcmV0dXJuICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQlYmluZCAoKSA9IGRvXyBpIGluXG4gICAgICBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3Agc3RhcnRcbjs7XG5cbmxldCByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIGNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICAgIGYgc3RhdGVcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBgUmVwZWF0IHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICAgIHwgYEZpbmlzaGVkIHJlc3VsdCAtPiBJdmFyLmZpbGwgZmluaXNoZWQgcmVzdWx0XG4gICAgaW5cbiAgICBsb29wIHN0YXRlKVxuOztcblxubGV0IGZvcmV2ZXIgc3RhdGUgZiA9XG4gIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSAoZnVuIHN0YXRlIC0+XG4gICAgbGV0JW1hcCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICBgUmVwZWF0IHN0YXRlKVxuICA+Pj4gbmV2ZXJfcmV0dXJuc1xuOztcblxudHlwZSBob3cgPSBNb25hZF9zZXF1ZW5jZS5ob3cgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIHR5cGUgTW9uYWRfc2VxdWVuY2UgPSBNb25hZF9zZXF1ZW5jZS5TIHdpdGggdHlwZSAnYSBtb25hZCA6PSAnYSB0XG5cblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgYiB4ID4+PiBmdW4gYiAtPiBsb29wIHhzIGJcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IHNlcW1hcCB0IH5mID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYnMgYSAtPiBmIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpID4+fCBMaXN0LnJldlxubGV0IGFsbCBkcyA9IHNlcW1hcCBkcyB+ZjpGbi5pZFxubGV0IGFsbF91bml0IGRzID0gZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZClcbmxldCBvayB4ID0geCA+PnwgZnVuIHggLT4gT2sgeFxuIiwib3BlbiBEZWZlcnJlZDFcbmluY2x1ZGUgSW5maXhcbmluY2x1ZGUgTGV0X3N5bnRheFxuXG5sZXQgY2hvaWNlID0gY2hvaWNlXG5sZXQgY2hvb3NlID0gY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBkb24ndF93YWl0X2ZvclxubGV0IG5ldmVyID0gbmV2ZXJcbmxldCByZXR1cm4gPSByZXR1cm5cbmxldCB1cG9uID0gdXBvblxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdSA9XG4gIHwgRW1wdHkgb2YgJ2EgSXZhci50XG4gIHwgRnVsbFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgdSByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IEZ1bGwgLT4gKClcbiAgICB8IEVtcHR5IGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHQgPSByZWYgKEVtcHR5IGl2YXIpIGluXG4gIHQsIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBfIC0+IHRydWVcbiAgfCBGdWxsIC0+IGZhbHNlXG47O1xuXG5sZXQgZmlsbCB0IGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgRW1wdHkgaSAtPlxuICAgIHQgOj0gRnVsbDtcbiAgICBJdmFyLmZpbGwgaSBhXG4gIHwgRnVsbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gZmlsbCBmdWxsIGl2YXJcIl1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgU3RyZWFtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID0gJ2EgVHlwZXMuU3RyZWFtLm5leHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mICdhICogJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGxldCByZWMgbG9vcCBkIGFjIDogU2V4cC50ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTGlzdCAoTGlzdC5yZXYgKFNleHAuQXRvbSBcIi4uLlwiIDo6IGFjKSlcbiAgICAgIHwgU29tZSBOaWwgLT4gTGlzdCAoTGlzdC5yZXYgYWMpXG4gICAgICB8IFNvbWUgKENvbnMgKGEsIHQpKSAtPiBsb29wIHQgKHNleHBfb2ZfYSBhIDo6IGFjKVxuICAgIGluXG4gICAgbG9vcCB0IFtdXG4gIDs7XG5cbiAgbGV0IG5leHQgdCA9IHRcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5UYWlsLnQgPVxuICB7ICgqIFtuZXh0XSBwb2ludHMgYXQgdGhlIHRhaWwgb2YgdGhlIHN0cmVhbSAqKSBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90IF8gdCA6IFNleHAudCA9XG4gIEF0b20gKGlmIEl2YXIuaXNfZW1wdHkgdC5uZXh0IHRoZW4gXCI8b3BlbiB0YWlsPlwiIGVsc2UgXCI8Y2xvc2VkIHRhaWw+XCIpXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0ID0gSXZhci5jcmVhdGUgKCkgfVxubGV0IGNvbGxlY3QgdCA9IEl2YXIucmVhZCAobmV4dCB0KVxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIChuZXh0IHQpXG5cbmxldCBmaWxsX2V4biB0IHYgPVxuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwic3RyZWFtIGlzIGNsb3NlZFwiXSBlbHNlIEl2YXIuZmlsbCAobmV4dCB0KSB2XG47O1xuXG5sZXQgY2xvc2VfZXhuIHQgPSBmaWxsX2V4biB0IE5pbFxubGV0IGNsb3NlX2lmX29wZW4gdCA9IGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gSXZhci5maWxsIChuZXh0IHQpIE5pbFxuXG5sZXQgZXh0ZW5kIHQgdiA9XG4gIGxldCBuZXh0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZmlsbF9leG4gdCAoQ29ucyAodiwgSXZhci5yZWFkIG5leHQpKTtcbiAgdC5uZXh0IDwtIG5leHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IFRhaWwuU3RyZWFtXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5pbmNsdWRlIE1vbml0b3JcblxudHlwZSBtb25pdG9yID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+aGVyZTppZ25vcmVcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5mb3J3YXJkaW5nOmlnbm9yZVxuICAgICAgfm5leHRfZXJyb3I6KGNoZWNrIChmdW4gbmV4dF9lcnJvciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgbmV4dF9lcnJvcikpKVxuICAgICAgfmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfnRhaWxzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfmhhc19zZWVuX2Vycm9yOmlnbm9yZSlcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcbmxldCBjdXJyZW50ICgpID0gRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSlcblxudHlwZSAnYSB3aXRoX29wdGlvbmFsX21vbml0b3JfbmFtZSA9XG4gID9oZXJlOlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgLT4gP2luZm86SW5mby50IC0+ID9uYW1lOnN0cmluZyAtPiAnYVxuXG5sZXQgZGV0YWNoIHQgPSB0LmZvcndhcmRpbmcgPC0gRGV0YWNoZWRcblxudHlwZSBoYW5kbGVyX3N0YXRlID1cbiAgfCBVbmluaXRpYWxpemVkXG4gIHwgUnVubmluZyBvZiAoRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy5FbHQudFxuICB8IFRlcm1pbmF0ZWRcblxubGV0IGRldGFjaF9hbmRfaXRlcl9lcnJvcnMgdCB+ZiA9XG4gIGRldGFjaCB0O1xuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCBoYW5kbGVyX3N0YXRlX3JlZiA9IHJlZiBVbmluaXRpYWxpemVkIGluXG4gIGxldCBydW5fZiBleG4gPVxuICAgIG1hdGNoICFoYW5kbGVyX3N0YXRlX3JlZiB3aXRoXG4gICAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgVGVybWluYXRlZCAtPiAoKVxuICAgIHwgUnVubmluZyBiYWdfZWx0IC0+XG4gICAgICAodHJ5IGYgZXhuIHdpdGhcbiAgICAgICB8IGlubmVyX2V4biAtPlxuICAgICAgICAgaGFuZGxlcl9zdGF0ZV9yZWYgOj0gVGVybWluYXRlZDtcbiAgICAgICAgIEJhZy5yZW1vdmUgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyBiYWdfZWx0O1xuICAgICAgICAgKCogW3J1bl9mXSBhbHdheXMgcnVucyBpbiBbZXhlY3V0aW9uX2NvbnRleHRdLiAgSGVuY2UsIFtyYWlzZSBpbm5lcl9leG5dIHNlbmRzXG4gICAgICAgICAgICBbaW5uZXJfZXhuXSB0byBbZXhlY3V0aW9uX2NvbnRleHRdJ3MgbW9uaXRvciwgaS5lLiB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlblxuICAgICAgICAgICAgW2RldGFjaF9hbmRfaXRlcl9lcnJvcnNdIHdhcyBjYWxsZWQuICopXG4gICAgICAgICByYWlzZSBpbm5lcl9leG4pXG4gIGluXG4gIGhhbmRsZXJfc3RhdGVfcmVmXG4gIDo9IFJ1bm5pbmcgKEJhZy5hZGQgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyAoZXhlY3V0aW9uX2NvbnRleHQsIHJ1bl9mKSlcbjs7XG5cbmxldCBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gdCA9XG4gIGRldGFjaCB0O1xuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIHQudGFpbHNfZm9yX2FsbF9lcnJvcnMgPC0gdGFpbCA6OiB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzO1xuICBUYWlsLmNvbGxlY3QgdGFpbFxuOztcblxubGV0IGdldF9uZXh0X2Vycm9yIHQgPSBJdmFyLnJlYWQgdC5uZXh0X2Vycm9yXG5cbmxldCBkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIHQgPVxuICBkZXRhY2ggdDtcbiAgZ2V0X25leHRfZXJyb3IgdFxuOztcblxubGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSAoKSA9XG4gIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gIGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSAoU29tZSBwYXJlbnQpXG47O1xuXG5tb2R1bGUgTW9uaXRvcl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4biA6IGV4blxuICAgIDsgYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICB9XG5cbiAgbGV0IGJhY2t0cmFjZSB0ID0gdC5iYWNrdHJhY2VcbiAgbGV0IGV4dHJhY3RfZXhuIHQgPSB0LmV4blxuXG4gIGxldCBiYWNrdHJhY2VfdHJ1bmNhdGlvbl9oZXVyaXN0aWNzID1cbiAgICBsZXQgam9iX3F1ZXVlID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJqb2JfcXVldWUubWxcXFwiXCIgaW5cbiAgICBsZXQgZGVmZXJyZWQwID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJkZWZlcnJlZDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZGVmZXJyZWQxID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJkZWZlcnJlZDEubWxcXFwiXCIgaW5cbiAgICBsZXQgbW9uaXRvciA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwibW9uaXRvci5tbFxcXCJcIiBpblxuICAgIGxldCBpbXBvcnQwID0gXCJSYWlzZWQgYXQgZmlsZSBcXFwiaW1wb3J0MC5tbFxcXCJcIiBpblxuICAgIGxldCBlcnJvciA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZXJyb3IubWxcXFwiXCIgaW5cbiAgICBmdW4gdHJhY2VzIC0+XG4gICAgICAoKiAuLi90ZXN0L3Rlc3RfdHJ5X3dpdGhfZXJyb3JfZGlzcGxheS5tbCBtYWtlcyBzdXJlIHRoaXMgc3RheXMgdXAtdG8tZGF0ZS4gKilcbiAgICAgIGxldCB0cmFjZXMgPVxuICAgICAgICBtYXRjaCB0cmFjZXMgd2l0aFxuICAgICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6aW1wb3J0MCAtPlxuICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmVycm9yIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICB8IHQzIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQzIH5wcmVmaXg6ZXJyb3IgLT4gcmVzdFxuICAgICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgIHwgXyAtPiB0cmFjZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBMaXN0LnJldiB0cmFjZXMgd2l0aFxuICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgdDIgOjogcmVzdFxuICAgICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDBcbiAgICAgICAgICAgICAgICAoKiBiaW5kICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMVxuICAgICAgICAgICAgICAgICgqIG1hcCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDptb25pdG9yXG4gICAgICAgICAgICAgICgqIHRyeV93aXRoICopIC0+IExpc3QucmV2IHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICB8IF8gLT4gdHJhY2VzXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB7IGV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciB9ID1cbiAgICBsZXQgbW9uaXRvciA9XG4gICAgICBsZXQgbmFtZSA9XG4gICAgICAgIG1hdGNoIEluZm8udG9fc3RyaW5nX2h1bSBtb25pdG9yLm5hbWUgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgICB8IHMgLT4gU29tZSBzXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIG1hdGNoIG1vbml0b3IuaGVyZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBoZXJlIC0+XG4gICAgICAgICAgKCogV2UgZGlzcGxheSB0aGUgZnVsbCBmaWxlbmFtZSwgd2hlcmVhcyBiYWNrdHJhY2VzIG9ubHkgaGF2ZSBiYXNlbmFtZXMsIGJ1dFxuICAgICAgICAgICAgIHBlcmhhcHMgdGhhdCdzIHdoYXQgc2hvdWxkIGNoYW5nZS4gKilcbiAgICAgICAgICBsZXQgY29sdW1uID0gaGVyZS5wb3NfY251bSAtIGhlcmUucG9zX2JvbCBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICgqIFdlIGhpZGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgd2hlbiBbYW1fcnVubmluZ190ZXN0XSB0byBtYWtlIHRlc3Qgb3V0cHV0XG4gICAgICAgICAgICAgICBtb3JlIHJvYnVzdC4gIFRoaXMgc2F2ZXMgcGVvcGxlIG1hbnVhbGx5IGhpZGluZyB0aGUgbnVtYmVycyBvciBldmVuIHdvcnNlLFxuICAgICAgICAgICAgICAgbGVhdmluZyB0aGVtIGluIHRlc3Qgb3V0cHV0LiAgSGlkaW5nIGluIHRlc3QgaXMgZGlmZmVyZW50IGNob2ljZSBmb3JcbiAgICAgICAgICAgICAgIGJlaGF2aW9yIHRoYW4gb3VyIGNvZGViYXNlIG1ha2VzIGZvciBbQmFja3RyYWNlLmVsaWRlXSwgd2hpY2ggaGFzIGRlZmF1bHRcbiAgICAgICAgICAgICAgIFtmYWxzZV0sIGFuZCB0aHVzIHNob3dzIGJhY2t0cmFjZXMgaW4gdGVzdC4gIFRoZXJlIGFyZSBhIGNvdXBsZSByZWFzb25zIGZvclxuICAgICAgICAgICAgICAgdGhpcyBkaWZmZXJlbnQgY2hvaWNlLiAgRmlyc3QsIGV4cGVjdC10ZXN0IG1hY2hpbmVyeSBoYXMgY2hlY2sgdG8gcHJldmVudFxuICAgICAgICAgICAgICAgYmFja3RyYWNlcyBmcm9tIGFwcGVhcmluZyBpbiB0ZXN0IG91dHB1dC4gIEl0IGhhcyBubyBzdWNoIGNoZWNrcyBmb3IgbGluZVxuICAgICAgICAgICAgICAgYW5kIGNvbHVtbiBudW1iZXJzLiAgU2Vjb25kLCB3aGVuIHRoZXJlIGlzIGEgcmVhbCBlcnJvciBhbmQgeW91IHdhbnQgdG8gc2VlXG4gICAgICAgICAgICAgICB0aGUgYmFja3RyYWNlLCB0aHJvd2luZyBhd2F5IHRoZSB3aG9sZSBiYWNrdHJhY2UgbG9zZXMgYSBsb3Qgb2YgcG90ZW50aWFsbHlcbiAgICAgICAgICAgICAgIHVzZWZ1bCBpbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBoYXJkIHRvIHJlY292ZXIuICBXaGVyZWFzIHdlJ3JlIGp1c3RcbiAgICAgICAgICAgICAgIHRocm93aW5nIGEgd2F5IGEgbGluZSBudW1iZXIgYW5kIGNvbHVtbiwgd2hpY2ggYXJlIGEgbWlub3IgY29udmVuaWVuY2VcbiAgICAgICAgICAgICAgIGdpdmVuIHRoYXQgdGhlIGZpbGVuYW1lIGhhcyBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbi4gKilcbiAgICAgICAgICAgIChpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgICAgICAgICB0aGVuIHNwcmludGYgXCJmaWxlICVTLCBsaW5lIExJTkUsIGNoYXJhY3RlcnMgQzEtQzJcIiBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJmaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgICAgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICAgICAgaGVyZS5wb3NfbG51bVxuICAgICAgICAgICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgICAgICAgY29sdW1uKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHBvcywgbmFtZSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBwb3MsIE5vbmUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgYXQgJXNcIiBwb3MgXVxuICAgICAgfCBOb25lLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXNcIiBuYW1lIF1cbiAgICAgIHwgU29tZSBwb3MsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlcyBhdCAlc1wiIG5hbWUgcG9zIF1cbiAgICBpblxuICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgYmFja3RyYWNlIC0+IEJhY2t0cmFjZS50b19zdHJpbmdfbGlzdCBiYWNrdHJhY2VcbiAgICAgIGluXG4gICAgICBiYWNrdHJhY2VfdHJ1bmNhdGlvbl9oZXVyaXN0aWNzIGJhY2t0cmFjZSBAIG1vbml0b3JcbiAgICBpblxuICAgIGxldCBsaXN0X2lmX25vdF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgXyA6OiBfIGFzIGwgLT4gU29tZSBsXG4gICAgaW5cbiAgICBbJXNleHBcbiAgICAgIChleG4gOiBleG4pXG4gICAgLCAobGlzdF9pZl9ub3RfZW1wdHkgYmFja3RyYWNlIDogKHN0cmluZyBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAsIGBiYWNrdHJhY2VfaGlzdG9yeVxuICAgICAgICAobGlzdF9pZl9ub3RfZW1wdHkgYmFja3RyYWNlX2hpc3RvcnkgOiAoQmFja3RyYWNlLnQgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICA7O1xuZW5kXG5cbmV4Y2VwdGlvbiBNb25pdG9yX2V4biBvZiBNb25pdG9yX2V4bi50XG5cbmxldCAoKSA9XG4gIFNleHBsaWIuQ29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNb25pdG9yX2V4bl0gKGZ1bmN0aW9uXG4gICAgfCBNb25pdG9yX2V4biB0IC0+IFslc2V4cCBcIm1vbml0b3IubWwuRXJyb3JcIiA6OiAodCA6IE1vbml0b3JfZXhuLnQpXVxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgZXh0cmFjdF9leG4gZXhuID1cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBNb25pdG9yX2V4biBlcnJvciAtPiBlcnJvci5leG5cbiAgfCBleG4gLT4gZXhuXG47O1xuXG5sZXQgc2VuZF9leG4gdCA/KGJhY2t0cmFjZSA9IGBHZXQpIGV4biA9XG4gIGxldCBleG4gPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBNb25pdG9yX2V4biBfIC0+IGV4blxuICAgIHwgXyAtPlxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgICAgIHwgYEdldCAtPiBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50X2Zvcl9leG4gZXhuXG4gICAgICAgIHwgYFRoaXMgYiAtPiBTb21lIGJcbiAgICAgIGluXG4gICAgICBsZXQgYmFja3RyYWNlX2hpc3RvcnkgPSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkuYmFja3RyYWNlX2hpc3RvcnkgaW5cbiAgICAgIE1vbml0b3JfZXhuIHsgTW9uaXRvcl9leG4uZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yID0gdCB9XG4gIGluXG4gIGlmIERlYnVnLm1vbml0b3Jfc2VuZF9leG4gdGhlbiBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgdC5oYXNfc2Vlbl9lcnJvciA8LSB0cnVlO1xuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIEl2YXIuZmlsbCB0Lm5leHRfZXJyb3IgZXhuO1xuICAgIHQubmV4dF9lcnJvciA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgLT5cbiAgICAgIGlmIERlYnVnLm1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHRoZW5cbiAgICAgICAgRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4biBmb3VuZCBsaXN0ZW5pbmcgbW9uaXRvclwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gICAgICBCYWcuaXRlciB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gKGV4ZWN1dGlvbl9jb250ZXh0LCBmKSAtPlxuICAgICAgICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBleG4pO1xuICAgICAgTGlzdC5pdGVyIHQudGFpbHNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biB0YWlsIC0+IFRhaWwuZXh0ZW5kIHRhaWwgZXhuKVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBsb29wIHBhcmVudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPlxuICAgICAgKCogRG8gbm90IGNoYW5nZSB0aGlzIGJyYW5jaCB0byBwcmludCB0aGUgZXhjZXB0aW9uIG9yIHRvIGV4aXQuICBIYXZpbmcgdGhlXG4gICAgICAgICBzY2hlZHVsZXIgcmFpc2UgYW4gdW5jYXVnaHQgZXhjZXB0aW9uIGlzIHRoZSBuZWNlc3NhcnkgYmVoYXZpb3IgZm9yIHByb2dyYW1zXG4gICAgICAgICB0aGF0IGNhbGwgW1NjaGVkdWxlci5nb10gYW5kIHdhbnQgdG8gaGFuZGxlIGl0LiAqKVxuICAgICAgU2NoZWR1bGVyLihnb3RfdW5jYXVnaHRfZXhuICh0ICgpKSkgZXhuICghQXN5bmNfa2VybmVsX2NvbmZpZy50YXNrX2lkICgpKVxuICBpblxuICBsb29wIHRcbjs7XG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyID0gc3RydWN0XG4gIGxldCB3aXRoaW5fY29udGV4dCBjb250ZXh0IGYgPVxuICAgIFNjaGVkdWxlci4od2l0aF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGNvbnRleHQgfmY6KGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGYgd2l0aFxuICAgICAgfCBPayB4IC0+IE9rIHhcbiAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgIHNlbmRfZXhuIChFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIGNvbnRleHQpIGV4biB+YmFja3RyYWNlOmBHZXQ7XG4gICAgICAgIEVycm9yICgpKVxuICA7O1xuXG4gIHR5cGUgJ2Egd2l0aF9vcHRpb25zID0gP21vbml0b3I6dCAtPiA/cHJpb3JpdHk6UHJpb3JpdHkudCAtPiAnYVxuXG4gIGxldCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBsZXQgdG1wX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpID9tb25pdG9yID9wcmlvcml0eVxuICAgIGluXG4gICAgd2l0aGluX2NvbnRleHQgdG1wX2NvbnRleHQgZlxuICA7O1xuXG4gIGxldCB3aXRoaW4nID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBPayBkIC0+IGRcbiAgOztcblxuICBsZXQgd2l0aGluX3YgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gTm9uZVxuICAgIHwgT2sgeCAtPiBTb21lIHhcbiAgOztcblxuICBsZXQgd2l0aGluID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+ICgpXG4gICAgfCBPayAoKSAtPiAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgeCA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgU2NoZWR1bGVyLmVucXVldWVcbiAgICAgIHNjaGVkdWxlclxuICAgICAgKEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlXG4gICAgICAgICAoU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyKVxuICAgICAgICAgP21vbml0b3JcbiAgICAgICAgID9wcmlvcml0eSlcbiAgICAgIHdvcmtcbiAgICAgIHhcbiAgOztcblxuICBsZXQgc2NoZWR1bGUgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgPSBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgKClcblxuICBsZXQgc2NoZWR1bGUnID1cbiAgICAoKiBGb3IgcGVyZm9ybWFuY2UsIHdlIHVzZSBbc2NoZWR1bGVfd2l0aF9kYXRhXSB3aXRoIGEgY2xvc2VkIGZ1bmN0aW9uLCBhbmQgaW5saW5lXG4gICAgICAgW0RlZmVycmVkLmNyZWF0ZV0uICopXG4gICAgbGV0IHVwb25fd29ya19maWxsX2kgKHdvcmssIGkpID0gdXBvbiAod29yayAoKSkgKGZ1biBhIC0+IEl2YXIuZmlsbCBpIGEpIGluXG4gICAgZnVuID9tb25pdG9yID9wcmlvcml0eSB3b3JrIC0+XG4gICAgICBsZXQgaSA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHVwb25fd29ya19maWxsX2kgKHdvcmssIGkpO1xuICAgICAgSXZhci5yZWFkIGlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGEpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBsZXQgY2FsbF9hbmRfZmlsbCAoZiwgYSwgaSkgPSB1cG9uIChmIGEpIChmdW4gciAtPiBJdmFyLmZpbGwgaSByKSBpblxuICAgIHN0YWdlIChmdW4gYSAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaSAtPlxuICAgICAgICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgY2FsbF9hbmRfZmlsbCAoZiwgYSwgaSkpKVxuICA7O1xuZW5kXG5cbm9wZW4gRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgc3RyZWFtX2l0ZXIgc3RyZWFtIH5mID1cbiAgbGV0IHJlYyBsb29wIHN0cmVhbSA9XG4gICAgU3RyZWFtLm5leHQgc3RyZWFtXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHYsIHN0cmVhbSkgLT5cbiAgICAgIGxvb3Agc3RyZWFtO1xuICAgICAgZiB2XG4gIGluXG4gIGxvb3Agc3RyZWFtXG47O1xuXG4oKiBBbiBbJ2EgT2tfYW5kX2V4bnMudF0gcmVwcmVzZW50cyB0aGUgb3V0cHV0IG9mIGEgY29tcHV0YXRpb24gcnVubmluZyBpbiBhIGRldGFjaGVkXG4gICBtb25pdG9yLiAqKVxubW9kdWxlIE9rX2FuZF9leG5zID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBvayA6ICdhIERlZmVycmVkLnRcbiAgICA7IGV4bnMgOiBleG4gU3RyZWFtLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW4gZiA9XG4gICAgKCogV2UgY2FsbCBbY3JlYXRlX3dpdGhfcGFyZW50IE5vbmVdIGJlY2F1c2UgW21vbml0b3JdIGRvZXMgbm90IG5lZWQgYSBwYXJlbnQuICBJdFxuICAgICAgIGRvZXMgbm90IGJlY2F1c2Ugd2UgY2FsbCBbZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3JdIGFuZCBkZWFsIHdpdGggdGhlXG4gICAgICAgZXJyb3JzIGV4cGxpY2l0bHksIHRodXMgW3NlbmRfZXhuXSB3b3VsZCBuZXZlciBwcm9wYWdhdGUgYW4gZXhuIHBhc3QgW21vbml0b3JdLiAqKVxuICAgIGxldCBtb25pdG9yID0gY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIE5vbmUgaW5cbiAgICBsZXQgZXhucyA9IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yIGluXG4gICAgbGV0IG9rID1cbiAgICAgIG1hdGNoIHJ1biB3aXRoXG4gICAgICB8IGBOb3cgLT4gd2l0aGluJyB+bW9uaXRvciBmXG4gICAgICB8IGBTY2hlZHVsZSAtPiBzY2hlZHVsZScgfm1vbml0b3IgZlxuICAgIGluXG4gICAgeyBvazsgZXhucyB9XG4gIDs7XG5lbmRcblxubGV0IGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgIHJlc3VsdFxuICAgICAgZXhuc1xuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0XG4gID1cbiAgaWYgSXZhcl9maWxsZXIuaXNfZW1wdHkgcmVzdWx0X2ZpbGxlclxuICB0aGVuIChcbiAgICBJdmFyX2ZpbGxlci5maWxsIHJlc3VsdF9maWxsZXIgcmVzdWx0O1xuICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGhfbG9nX2V4biA6IChleG4gLT4gdW5pdCkgcmVmID1cbiAgICByZWYgKGZ1biBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiZmFpbGVkIHRvIHNldCBbTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4bl1cIiAoZXhuIDogRXhuLnQpXSlcbiAgOztcbmVuZFxuXG5sZXQgbWFrZV9oYW5kbGVfZXhuIHJlc3QgPVxuICBtYXRjaCByZXN0IHdpdGhcbiAgfCBgTG9nIC0+XG4gICAgKCogV2UgYXJlIGNhcmVmdWwgdG8gbm90IGNsb3NlIG92ZXIgY3VycmVudCBjb250ZXh0LCB3aGljaCBpcyBub3QgbmVlZGVkLiAqKVxuICAgICFFeHBlcnQudHJ5X3dpdGhfbG9nX2V4blxuICB8IGBSYWlzZSAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiBzZW5kX2V4biBwYXJlbnQgZXhuID9iYWNrdHJhY2U6Tm9uZVxuICB8IGBDYWxsIGYgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gd2l0aGluIH5tb25pdG9yOnBhcmVudCAoZnVuICgpIC0+IGYgZXhuKVxuOztcblxubGV0IHRyeV93aXRoXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwiXCIpXG4gICAgICA/ZXh0cmFjdF9leG46KGRvX2V4dHJhY3RfZXhuID0gZmFsc2UpXG4gICAgICA/KHJ1biA9IGBOb3cpXG4gICAgICA/KHJlc3QgPSBgUmFpc2UpXG4gICAgICBmXG4gID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyB+bmFtZSB+cnVuIGYgaW5cbiAgbGV0IGhhbmRsZV9leG4gPSBtYWtlX2hhbmRsZV9leG4gcmVzdCBpblxuICBsZXQgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMgPSBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZV9leG4gaW5cbiAgKCogV2UgcnVuIFt3aXRoaW4nIH5tb25pdG9yOm1haW5dIHRvIGF2b2lkIGhvbGRpbmcgb24gdG8gcmVmZXJlbmNlcyB0byB0aGUgZXZhbHVhdGlvblxuICAgICBjb250ZXh0IGluIHdoaWNoIFt0cnlfd2l0aF0gd2FzIGNhbGxlZC4gIFRoaXMgYXZvaWRzIGEgc3BhY2UgbGVhayB3aGVuIGEgY2hhaW4gb2ZcbiAgICAgW3RyeV93aXRoXSdzIGFyZSBydW4gZWFjaCBuZXN0ZWQgd2l0aGluIHRoZSBwcmV2aW91cyBvbmUuICBXaXRob3V0IHRoZSBbd2l0aGluJ10sIHRoZVxuICAgICBlcnJvciBoYW5kbGluZyBmb3IgdGhlIGlubmVybW9zdCBbdHJ5X3dpdGhdIHdvdWxkIGtlZXAgYWxpdmUgdGhlIGVudGlyZSBjaGFpbi4gKilcbiAgd2l0aGluJyB+bW9uaXRvcjptYWluIChmdW4gKCkgLT5cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIG9rXG4gICAgdGhlbiAoXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucztcbiAgICAgIHJldHVybiAoT2sgKERlZmVycmVkLnZhbHVlX2V4biBvaykpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdF9maWxsZXIsIHJlc3VsdCA9IEl2YXJfZmlsbGVyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiBvayAoZnVuIHJlcyAtPlxuICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgIChPayByZXMpXG4gICAgICAgICAgZXhuc1xuICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICB1cG9uIChTdHJlYW0ubmV4dCBleG5zKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgQ29ucyAoZXhuLCBleG5zKSAtPlxuICAgICAgICAgIGxldCBleG4gPSBpZiBkb19leHRyYWN0X2V4biB0aGVuIGV4dHJhY3RfZXhuIGV4biBlbHNlIGV4biBpblxuICAgICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAgIChFcnJvciBleG4pXG4gICAgICAgICAgICBleG5zXG4gICAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgcmVzdWx0KSlcbjs7XG5cbmxldCB0cnlfd2l0aF9vcl9lcnJvciA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcInRyeV93aXRoX29yX2Vycm9yXCIpID9leHRyYWN0X2V4biA/cmVzdCBmID1cbiAgdHJ5X3dpdGggZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gfnJ1bjpgTm93ID9yZXN0ID4+fCBPcl9lcnJvci5vZl9leG5fcmVzdWx0XG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbl9vcl9lcnJvclxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcInRyeV93aXRoX2pvaW5fb3JfZXJyb3JcIilcbiAgICAgID9leHRyYWN0X2V4blxuICAgICAgP3Jlc3RcbiAgICAgIGZcbiAgPVxuICB0cnlfd2l0aF9vcl9lcnJvciBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biA/cmVzdCA+PnwgT3JfZXJyb3Iuam9pblxuOztcblxubGV0IHByb3RlY3QgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJNb25pdG9yLnByb3RlY3RcIikgP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgZiB+ZmluYWxseSA9XG4gIGxldCViaW5kIHIgPSB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP2hlcmUgP2luZm8gP3J1biA/cmVzdCB+bmFtZSBmIGluXG4gIGxldCVtYXAgZnIgPVxuICAgIHRyeV93aXRoXG4gICAgICB+ZXh0cmFjdF9leG46ZmFsc2VcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgfnJ1bjpgU2NoZWR1bGUgKCogY29uc2lkZXIgW35ydW46YE5vd10gKilcbiAgICAgID9yZXN0XG4gICAgICB+bmFtZTpcImZpbmFsbHlcIlxuICAgICAgZmluYWxseVxuICBpblxuICBtYXRjaCByLCBmciB3aXRoXG4gIHwgRXJyb3IgZXhuLCBFcnJvciBmaW5hbGx5X2V4biAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQXN5bmMgZmluYWxseVwiIChleG4gOiBleG4pIChmaW5hbGx5X2V4biA6IGV4bildXG4gIHwgRXJyb3IgZSwgT2sgKCkgfCBPayBfLCBFcnJvciBlIC0+IHJhaXNlIGVcbiAgfCBPayByLCBPayAoKSAtPiByXG47O1xuXG5sZXQgaGFuZGxlX2Vycm9ycyA/aGVyZSA/aW5mbyA/bmFtZSBmIGhhbmRsZXIgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW46YE5vdyBmIGluXG4gIHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlcjtcbiAgb2tcbjs7XG5cbmxldCBjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZiA9XG4gIGxldCB7IE9rX2FuZF9leG5zLmV4bnM7IF8gfSA9XG4gICAgT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICBmICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICBleG5zXG47O1xuXG5sZXQgY2F0Y2ggP2hlcmUgP2luZm8gP25hbWUgZiA9XG4gIG1hdGNoJW1hcCBTdHJlYW0ubmV4dCAoY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYpIHdpdGhcbiAgfCBDb25zICh4LCBfKSAtPiB4XG4gIHwgTmlsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiTW9uaXRvci5jYXRjaCBnb3QgdW5leHBlY3RlZCBlbXB0eSBzdHJlYW1cIl1cbjs7XG5cbmxldCBjYXRjaF9lcnJvciA/aGVyZSA/aW5mbyA/bmFtZSBmID0gY2F0Y2ggP2hlcmUgP2luZm8gP25hbWUgZiA+PnwgRXJyb3Iub2ZfZXhuXG5cbm1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgbGV0IHBhcmVudCB0ID1cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPiBOb25lXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IFNvbWUgcGFyZW50XG4gICAgfCBEZXRhY2hlZCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGRlcHRoIHQgPVxuICAgIGxldCByZWMgbG9vcCB0IG4gPVxuICAgICAgbWF0Y2ggcGFyZW50IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IG5cbiAgICAgIHwgU29tZSB0IC0+IGxvb3AgdCAobiArIDEpXG4gICAgaW5cbiAgICBsb29wIHQgMFxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbmluY2x1ZGUgVGFpbC5TdHJlYW1cblxubGV0IGZpcnN0X2V4biB0ID1cbiAgbWF0Y2glbWFwIG5leHQgdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiU3RyZWFtLmZpcnN0IG9mIGVtcHR5IHN0cmVhbVwiXVxuICB8IENvbnMgKHgsIF8pIC0+IHhcbjs7XG5cbmxldCBmb2xkJyB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICB1cG9uIChuZXh0IHQpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgICAgfCBDb25zICh2LCB0KSAtPiB1cG9uIChmIGIgdikgKGxvb3AgdCkpXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbigqIFtmb2xkXSBpcyBpbXBsZW1lbnRlZCB0byBhdm9pZCBwZXItc3RyZWFtLWVsZW1lbnQgZGVmZXJyZWQgb3ZlcmhlYWQgaW4gdGhlIGNhc2Ugd2hlblxuICAgbXVsdGlwbGUgc3RyZWFtIGVsZW1lbnRzIGFyZSBhdmFpbGFibGUgc2ltdWx0YW5lb3VzbHkuICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB1cG9uIChuZXh0IHQpIChmdW4gbmV4dCAtPiBsb29wX25leHQgbmV4dCBiKVxuICAgICAgfCBTb21lIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYlxuICAgIGFuZCBsb29wX25leHQgbmV4dCBiID1cbiAgICAgIG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IENvbnMgKHYsIHQpIC0+IGxvb3AgdCAoZiBiIHYpXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxubGV0IGl0ZXInIHQgfmYgPSBmb2xkJyB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiBmIHYpXG5cbmxldCBjbG9zZWQgdCA9XG4gIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICB8IFNvbWUgTmlsIC0+IHJldHVybiAoKVxuICB8IF8gLT4gaXRlcicgdCB+ZjooZnVuIF8gLT4gcmV0dXJuICgpKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGl0ZXInIHQgfmY6KGZ1biBhIC0+XG4gICAgICAgZiBhO1xuICAgICAgIHJldHVybiAoKSkpXG47O1xuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gICgqIGNvbGxlY3QgYmVmb3JlIGNhbGxpbmcgW2ZdLCBpbiBjYXNlIFtmXSBpbW1lZGlhdGVseSBleHRlbmRzLiAqKVxuICBsZXQgdCA9IFRhaWwuY29sbGVjdCB0YWlsIGluXG4gIGYgdGFpbDtcbiAgdFxuOztcblxubGV0IHVuZm9sZCBiIH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIHVwb24gKGYgYikgKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICAgIHwgU29tZSAoYSwgYikgLT5cbiAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIGE7XG4gICAgICAgICAgbG9vcCBiKVxuICAgIGluXG4gICAgbG9vcCBiKVxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICBUYWlsLmNsb3NlX2V4biB0YWlsKVxuOztcblxubGV0IHRvX2xpc3QgcyA9IGZvbGQnIHMgfmluaXQ6W10gfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChhIDo6IGIpKSA+PnwgTGlzdC5yZXZcbmxldCBjb3B5X3RvX3RhaWwgdCB0YWlsID0gaXRlcicgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChUYWlsLmV4dGVuZCB0YWlsIGEpKVxuXG5sZXQgYXBwZW5kIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MSB0YWlsKSAoZnVuICgpIC0+XG4gICAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDIgdGFpbCkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSkpXG47O1xuXG5sZXQgY29uY2F0IHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoaXRlcicgdCB+ZjooZnVuIHQgLT4gY29weV90b190YWlsIHQgdGFpbCkpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+ICgpXG4gICAgICAgICB8IHRydWUgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX2RlcHJlY2F0ZWQgdCB+ZiA9IGZpbHRlcicgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlsdGVyX21hcCcgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgdiAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2RlcHJlY2F0ZWQgdCB+ZiA9IGZpbHRlcl9tYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IG1hcCcgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT4gZiB2ID4+fCBUYWlsLmV4dGVuZCB0YWlsKSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpcnN0X24gcyBuID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBzIG4gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgZWxzZVxuICAgICAgICB1cG9uIChuZXh0IHMpIChmdW5jdGlvblxuICAgICAgICAgIHwgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIHg7XG4gICAgICAgICAgICBsb29wIHQgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgcyBuKVxuOztcblxubGV0IGF2YWlsYWJsZV9ub3cgdCA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIE5pbCAtPiBMaXN0LnJldiBhYywgdFxuICAgIHwgU29tZSAoQ29ucyAoeCwgdCkpIC0+IGxvb3AgdCAoeCA6OiBhYylcbiAgaW5cbiAgbG9vcCB0IFtdXG47O1xuXG5sZXQgc3BsaXQgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpID8oZiA9IGZ1biBfIC0+IGBDb250aW51ZSkgdCA9XG4gIGxldCByZWFzb25fZm9yX3N0b3BwaW5nID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHByZWZpeCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIGxldCBmaW5pc2ggdiA9XG4gICAgVGFpbC5jbG9zZV9leG4gcHJlZml4O1xuICAgIEl2YXIuZmlsbCByZWFzb25fZm9yX3N0b3BwaW5nIHZcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGNob29zZSBbIGNob2ljZSBzdG9wIChmdW4gKCkgLT4gYFN0b3BwZWQpOyBjaG9pY2UgKG5leHQgdCkgKGZ1biBvIC0+IGBOZXh0IG8pIF1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IGBTdG9wcGVkIC0+IGZpbmlzaCAoYFN0b3BwZWQgdClcbiAgICB8IGBOZXh0IG8gLT5cbiAgICAgIChtYXRjaCBvIHdpdGhcbiAgICAgICB8IE5pbCAtPiBmaW5pc2ggYEVuZF9vZl9zdHJlYW1cbiAgICAgICB8IENvbnMgKGEsIHQpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICAgICB8IGBDb250aW51ZSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgcHJlZml4IGE7XG4gICAgICAgICAgICBsb29wIHRcbiAgICAgICAgICB8IGBGb3VuZCBiIC0+IGZpbmlzaCAoYEZvdW5kIChiLCB0KSkpKVxuICBpblxuICBsb29wIHQ7XG4gIFRhaWwuY29sbGVjdCBwcmVmaXgsIEl2YXIucmVhZCByZWFzb25fZm9yX3N0b3BwaW5nXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IF8sIGZvdW5kID0gc3BsaXQgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gYEZvdW5kIGEgZWxzZSBgQ29udGludWUpIGluXG4gIG1hdGNoJW1hcCBmb3VuZCB3aXRoXG4gIHwgYFN0b3BwZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCAoYEVuZF9vZl9zdHJlYW0gfCBgRm91bmQgXykgYXMgeCAtPiB4XG47O1xuXG5sZXQgdW5ncm91cCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gbCAtPlxuICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgICAgICByZXR1cm4gKCkpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlIHRzID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgICgqIFRoZSBpbnRlcmxlYXZlZCBzdHJlYW0gc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRoZSBvdXRlciBzdHJlYW0gYW5kIGFsbCBvZlxuICAgICAgIHRoZSBpbm5lciBzdHJlYW1zIGhhdmUgYmVlbiBjbG9zZWQuICBLZWVwIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBvcGVuXG4gICAgICAgc3RyZWFtcyBhbmQgY2xvc2UgdGhlIGludGVybGVhdmVkIHN0cmVhbSB3aGVuIHRoYXQgY291bnQgYmVjb21lc1xuICAgICAgIHplcm8uICopXG4gICAgbGV0IG51bV9vcGVuID0gcmVmIDEgaW5cbiAgICAoKiAxIGZvciB0aGUgb3V0ZXIgc3RyZWFtIHRoYXQgaXMgb3BlbiAqKVxuICAgIGxldCBjbG9zZSAoKSA9XG4gICAgICBudW1fb3BlbiA6PSAhbnVtX29wZW4gLSAxO1xuICAgICAgaWYgIW51bV9vcGVuID0gMCB0aGVuIFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICBpblxuICAgIGxldCBvdXRlcl9jbG9zZWQgPVxuICAgICAgaXRlcicgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiArIDE7XG4gICAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0IHRhaWwpIGNsb3NlO1xuICAgICAgICByZXR1cm4gKCkpXG4gICAgaW5cbiAgICB1cG9uIG91dGVyX2Nsb3NlZCBjbG9zZSlcbjs7XG5cbmxldCB0YWtlX3VudGlsIHQgZCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICB1cG9uXG4gICAgICAgIChjaG9vc2UgWyBjaG9pY2UgZCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChuZXh0IHQpIChmdW4geiAtPiBgTmV4dCB6KSBdKVxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IGBTdG9wIHwgYE5leHQgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IGBOZXh0IChDb25zICh4LCB0KSkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdClcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHknIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgfnJ1bjpcbiAgICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICAgIH5yZXN0OmBSYWlzZVxuICAgICAgICAgIChmdW4gKCkgLT4gZiB4KVxuICAgICAgICA+Pj4gZnVuIHogLT5cbiAgICAgICAgbG9vcCB0O1xuICAgICAgICAobWF0Y2ggeiB3aXRoXG4gICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICB8IEVycm9yIGUgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlKVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAoKiBXZSBpbW1lZGlhdGVseSBjYWxsIFtsb29wXSwgdGh1cyBtYWtpbmcgdGhlIGl0ZXIgZHVyYWJsZS4gIEFueSBleGNlcHRpb25zXG4gICAgICAgICAgIHJhaXNlZCBieSBbZl0gd2lsbCBub3QgcHJldmVudCB0aGUgbG9vcCBmcm9tIGNvbnRpbnVpbmcsIGFuZCB3aWxsIGdvIHRvIHRoZVxuICAgICAgICAgICBtb25pdG9yIG9mIHdob21ldmVyIGNhbGxlZCBbaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmRdLiAqKVxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIGYgeFxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseSB0IH5mID0gZG9uJ3Rfd2FpdF9mb3IgKGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYpXG5cbmxldCBvZl9mdW4gZiA9XG4gIHVuZm9sZCAoKSB+ZjooZnVuICgpIC0+XG4gICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgIFNvbWUgKGEsICgpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gKCdhLCAncGVybWlzc2lvbikgVHlwZXMuQnZhci50XG5cbnR5cGUgJ2EgcmVwciA9ICdhIFR5cGVzLkJ2YXIucmVwciA9XG4gIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSByZXByIFslc2V4cF9vZjogXyByZXByXSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgcmVwciBmIGluXG4gICAgRmllbGRzX29mX3JlcHIuaXRlclxuICAgICAgfmhhc19hbnlfd2FpdGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gaGFzX2FueV93YWl0ZXJzIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaGFzX2hhbmRsZXJzIHJlcHIuaXZhciB0aGVuIGFzc2VydCBoYXNfYW55X3dhaXRlcnMpKVxuICAgICAgfml2YXI6XG4gICAgICAgIChjaGVjayAoZnVuIGl2YXIgLT5cbiAgICAgICAgICAgSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgaXZhcjtcbiAgICAgICAgICAgYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSkpXG47O1xuXG5sZXQgc2V4cF9vZl90IF8gXyB0ID1cbiAgbGV0IHsgaGFzX2FueV93YWl0ZXJzOyBpdmFyID0gXyB9ID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgKCogV2UgZG9uJ3Qgc2hvdyBbaXZhcl0gYmVjYXVzZSBpdCdzIGFsd2F5cyBlbXB0eS4gKilcbiAgWyVtZXNzYWdlIChoYXNfYW55X3dhaXRlcnMgOiBib29sKV1cbjs7XG5cbmluY2x1ZGUgU2NoZWR1bGVyMS5CdmFyXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBpZiByZXByLmhhc19hbnlfd2FpdGVyc1xuICB0aGVuIChcbiAgICByZXByLmhhc19hbnlfd2FpdGVycyA8LSBmYWxzZTtcbiAgICBJdmFyLmZpbGwgcmVwci5pdmFyIGE7XG4gICAgcmVwci5pdmFyIDwtIEl2YXIuY3JlYXRlICgpKVxuOztcblxubGV0IHdhaXQgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gdHJ1ZTtcbiAgSXZhci5yZWFkIHJlcHIuaXZhclxuOztcblxubGV0IGhhc19hbnlfd2FpdGVycyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVyc1xuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbmxldCBkZWJ1ZyA9IERlYnVnLmNsb2NrXG5cbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCAoID4+PiApID0gdXBvblxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuVDFcblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCI8d2FsbF9jbG9jaz5cIl1cbiAgICBlbHNlXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgKGlzX3dhbGxfY2xvY2sgOiBib29sKVxuICAgICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgICAgKGV2ZW50cyA6IF8gVGltaW5nX3doZWVsLnQpXVxuICA7O1xuZW5kXG5cbm9wZW4gVDFcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlci53YWxsX2Nsb2NrXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbmxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5sZXQgaWQgdCA9IHQuaWRcblxubW9kdWxlIElkID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLklkXG5cbmxldCBub3cgdCA9XG4gIGlmIHQuaXNfd2FsbF9jbG9ja1xuICB0aGVuXG4gICAgKCogRm9yIHRoZSB3YWxsLWNsb2NrIHRpbWUtc291cmNlLCB3ZSB1c2UgW1RpbWVfbnMubm93ICgpXSByYXRoZXIgdGhhblxuICAgICAgIFtUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXS4gIFRoZSBsYXR0ZXIgaXMgb25seSB1cGRhdGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoXG4gICAgICAgY3ljbGUuICBUaGVyZSBjYW4gYmUgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gd2hlbiBwZW9wbGUgZG8gbG9uZ1xuICAgICAgIHJ1bm5pbmcgY29tcHV0YXRpb25zIG9yIG1peCBibG9ja2luZyBjb2RlIHdpdGggYXN5bmMuICBBbmQgaHVtYW5zIGV4cGVjdCB0aGF0XG4gICAgICAgd2FsbC1jbG9jayB0aW1lIGlzIGJhc2VkIG9uIFtUaW1lLm5vd10sIG5vdCBzb21lIGFydGlmYWN0IG9mIGFzeW5jXG4gICAgICAgaW1wbGVtZW50YXRpb24uICopXG4gICAgVGltZV9ucy5ub3cgKClcbiAgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbmxldCBhZHZhbmNlID0gYWR2YW5jZV9kaXJlY3RseVxubGV0IGFkdmFuY2VfYnkgPSBhZHZhbmNlX2RpcmVjdGx5X2J5XG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IChTY2hlZHVsZXIueWllbGQgdC5zY2hlZHVsZXIpXG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAoKiBzbyB0aGF0IGFsYXJtcyBzY2hlZHVsZWQgYXQgb3IgYmVmb3JlIFt0b19dIGZpcmUgKilcbiAgICBydW5fcXVldWVkX2FsYXJtcyAoKVxuICBpblxuICBsZXQgcmVjIHdhbGtfYWxhcm1zICgpID1cbiAgICBtYXRjaCBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCAtPlxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHRvX1xuICAgICAgdGhlbiBmaW5pc2ggKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzptaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWw7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBxdWV1ZWRfYWxhcm1zX3JhblxuICAgICAgICB0aGVuIHdhbGtfYWxhcm1zICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCViaW5kICgpID0gcXVldWVkX2FsYXJtc19yYW4gaW5cbiAgICAgICAgICB3YWxrX2FsYXJtcyAoKSkpXG4gIGluXG4gIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIG5leHRfYWxhcm1fZmlyZXNfYXQgdCB3aXRoXG4gICAgfCBOb25lIC0+IGZpbmlzaCAoKVxuICAgIHwgU29tZSBuZXh0X2FsYXJtX2ZpcmVzX2F0IC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBmaW5pc2ggKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpO1xuICAgICAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgICAgIGxldCBxdWV1ZWRfYWxhcm1zX3JhbiA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgcXVldWVkX2FsYXJtc19yYW5cbiAgICAgICAgdGhlbiB3YWxrX2FsYXJtcyAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQlYmluZCAoKSA9IHF1ZXVlZF9hbGFybXNfcmFuIGluXG4gICAgICAgICAgd2Fsa19hbGFybXMgKCkpKVxuICBpblxuICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5ID93YWl0X2ZvciB0IGJ5ID1cbiAgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuOztcblxubGV0IHNwYW5fdG9fdGltZSB0IHNwYW4gPSBUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhblxuXG5sZXQgc2NoZWR1bGVfam9iIHQgfmF0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBhbGFybSA9XG4gICAgVGltaW5nX3doZWVsLmFkZFxuICAgICAgdC5ldmVudHNcbiAgICAgIH5hdFxuICAgICAgKEpvYl9vcl9ldmVudC5vZl9qb2IgKFNjaGVkdWxlci5jcmVhdGVfam9iIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSkpXG4gIGluXG4gIChtYXRjaCB0LnNjaGVkdWxlci5ldmVudF9hZGRlZF9ob29rIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGYgLT4gZiBhdCk7XG4gIGFsYXJtXG47O1xuXG5sZXQgcnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBpblxuICBpZiBUaW1lX25zLiggPiApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gIHRoZW4gc2NoZWR1bGVfam9iIHQgfmF0OnRpbWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGVsc2UgKFxuICAgIFNjaGVkdWxlci5lbnF1ZXVlIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBBbGFybS5udWxsICgpKVxuOztcblxubGV0IHJ1bl9hdCB0IHRpbWUgZiBhID0gaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA6IF8gQWxhcm0udClcbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGYgYSA9IHJ1bl9hdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKSBmIGFcblxubGV0IGF0ID1cbiAgbGV0IGZpbGwgcmVzdWx0ID0gSXZhci5maWxsIHJlc3VsdCAoKSBpblxuICBmdW4gdCB0aW1lIC0+XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgICB0aGVuIHJldHVybiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZmlsbCByZXN1bHQgOiBfIEFsYXJtLnQpO1xuICAgICAgSXZhci5yZWFkIHJlc3VsdClcbjs7XG5cbmxldCBhZnRlciB0IHNwYW4gPSBhdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKVxuXG5sZXQgcmVtb3ZlX2FsYXJtIHQgYWxhcm0gOiB1bml0ID1cbiAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIHQuZXZlbnRzIGFsYXJtIGluXG4gIChsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgIHwgSm9iLCBqb2IgLT4gU2NoZWR1bGVyLmZyZWVfam9iIHQuc2NoZWR1bGVyIGpvYlxuICAgfCBFdmVudCwgXyAtPlxuICAgICAoKiBUaGlzIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgW2FsYXJtXSBvbmx5IGV2ZXIgY29tZXMgZnJvbSBbRXZlbnQuYWxhcm1dIHdoaWNoIG9ubHlcbiAgICAgICAgZXZlciBnZXRzIHBvcHVsYXRlZCBieSBhIGNhbGwgdG8gW3NjaGVkdWxlX2pvYl0uICopXG4gICAgIGFzc2VydCBmYWxzZSk7XG4gIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgYWxhcm1cbjs7XG5cbmxldCByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzIGFsYXJtIHRoZW4gcmVtb3ZlX2FsYXJtIHQgYWxhcm1cbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBtb2R1bGUgRmlyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgOyBtdXRhYmxlIGZpcmUgOiB1bml0IC0+IHVuaXRcbiAgICA7ICgqIEFzIGxvbmcgYXMgW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB3ZSBoYXZlIG5vdCB5ZXQgY29tbWl0dGVkIHRvIHdoZXRoZXIgdGhlIGV2ZW50XG4gICAgICAgICB3aWxsIGhhcHBlbiBvciBiZSBhYm9ydGVkLiAgV2hlbiBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHRoZSBhbGFybSBtYXkgb3IgbWF5IG5vdFxuICAgICAgICAgYmUgaW4gdGhlIHRpbWluZyB3aGVlbCAtLSBpZiBpdCBpc24ndCwgdGhlbiB0aGVyZSdzIGEgam9iIGluIEFzeW5jJ3Mgam9iIHF1ZXVlXG4gICAgICAgICB0aGF0IHdpbGwgZmlyZSB0aGUgZXZlbnQsIHVubGVzcyBpdCBpcyBhYm9ydGVkIGJlZm9yZSB0aGF0IGpvYiBjYW4gcnVuLiAqKVxuICAgICAgZmlyZWQgOiAoJ2EsICdoKSBGaXJlZC50IEl2YXIudFxuICAgIDsgKCogW251bV9maXJlc190b19za2lwXSBpcyB1c2VkIHRvIHJlc2NoZWR1bGUgZXZlbnRzIHRoYXQgaGF2ZSBmaXJlZCBhbmQgZW50ZXJlZCB0aGVcbiAgICAgICAgIEFzeW5jIGpvYiBxdWV1ZSwgYnV0IGhhdmUgbm90IHlldCBydW4uICBUaG9zZSBqb2JzIG9ubHkgcnVuIGlmIFtudW1fZmlyZXNfdG9fc2tpcFxuICAgICAgICAgPSAwXSwgYW5kIG90aGVyd2lzZSBqdXN0IGRlY3JlbWVudCBpdC4gIFNvLCB0byByZXNjaGVkdWxlIGFuIGV2ZW50IGluIHN1Y2ggYVxuICAgICAgICAgc3RhdGUsIHdlIGluY3JlbWVudCBbbnVtX2ZpcmVzX3RvX3NraXBdIGFuZCBhZGQgYSBuZXcgYWxhcm0gdG8gdGhlIHRpbWluZ1xuICAgICAgICAgd2hlZWwuICopXG4gICAgICBtdXRhYmxlIG51bV9maXJlc190b19za2lwIDogaW50XG4gICAgOyAoKiBbc2NoZWR1bGVkX2F0XSBpcyB0aGUgdGltZSBhdCB3aGljaCBbdF0gaGFzIG1vc3QgcmVjZW50bHkgYmVlbiBzY2hlZHVsZWQgdG8gZmlyZS5cbiAgICAgICAgIFdoaWxlIFt0LmFsYXJtXSBpcyBzdGlsbCBpbiB0aGUgdGltaW5nIHdoZWVsLCB0aGlzIGlzIHRoZSBzYW1lIGFzIFtBbGFybS5hdFxuICAgICAgICAgdC5hbGFybV0uICopXG4gICAgICBtdXRhYmxlIHNjaGVkdWxlZF9hdCA6IFRpbWVfbnMudFxuICAgIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZmlyZWQgdCA9IEl2YXIucmVhZCB0LmZpcmVkXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfaCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuZmlyZWRcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAobm90IChUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybSkpXG4gICAgICAgICAgICAgZWxzZSBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybVxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChKb2Jfb3JfZXZlbnQuaXNfam9iIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKSkpXG4gICAgICAgIH5maXJlOmlnbm9yZVxuICAgICAgICB+ZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkIDogXyBGaXJlZC50IEl2YXIudCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgZmlyZWQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gaW52YXJpYW50X2EgYVxuICAgICAgICAgICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gaW52YXJpYW50X2ggaCkpXG4gICAgICAgIH5udW1fZmlyZXNfdG9fc2tpcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fZmlyZXNfdG9fc2tpcCAtPiBhc3NlcnQgKG51bV9maXJlc190b19za2lwID49IDApKSlcbiAgICAgICAgfnNjaGVkdWxlZF9hdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzY2hlZHVsZWRfYXQgLT5cbiAgICAgICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgICAgICBzY2hlZHVsZWRfYXRcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIHQuYWxhcm0pKSlcbiAgICAgICAgfnRpbWVfc291cmNlOmlnbm9yZSlcbiAgOztcblxuICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZV9ucy50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHN0YXR1cyB0IDogXyBTdGF0dXMudCA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuZmlyZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU2NoZWR1bGVkX2F0IHQuc2NoZWR1bGVkX2F0XG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IEFib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gSGFwcGVuZWQgaFxuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IGEgOiBfIEFib3J0X3Jlc3VsdC50ID1cbiAgICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LmFib3J0XCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEl2YXIuZmlsbCB0LmZpcmVkIChBYm9ydGVkIGEpO1xuICAgICAgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0LnRpbWVfc291cmNlIHQuYWxhcm07XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCBhYm9ydF9leG4gdCBhID1cbiAgICBtYXRjaCBhYm9ydCB0IGEgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBoYXBwZW5lZFwiXVxuICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIF8gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQ2xvY2suRXZlbnQuYWJvcnRfZXhuIGZhaWxlZCB0byBhYm9ydCBldmVudCB0aGF0IHByZXZpb3VzbHkgYWJvcnRlZFwiXVxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQpXG4gIGxldCBzY2hlZHVsZSB0ID0gdC5hbGFybSA8LSBydW5fYXRfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB0LnNjaGVkdWxlZF9hdCB0LmZpcmUgKClcblxuICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgYXQgOiBfIFJlc2NoZWR1bGVfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucmVzY2hlZHVsZV9hdFwiICh0LCBhdCkgWyVzZXhwX29mOiAoXywgXykgdCAqIFRpbWVfbnMudF07XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoZmlyZWQgdCkgd2l0aFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBQcmV2aW91c2x5X2Fib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gUHJldmlvdXNseV9oYXBwZW5lZCBoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBpc19pbl90aW1pbmdfd2hlZWwgPSBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtIGluXG4gICAgICBsZXQgYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSA9XG4gICAgICAgIFRpbWVfbnMuKCA+ICkgYXQgKFRpbWluZ193aGVlbC5ub3cgZXZlbnRzKVxuICAgICAgaW5cbiAgICAgIHQuc2NoZWR1bGVkX2F0IDwtIGF0O1xuICAgICAgKG1hdGNoIGFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZV9mdXR1cmUsIGlzX2luX3RpbWluZ193aGVlbCB3aXRoXG4gICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gKClcbiAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICB0LnRpbWVfc291cmNlLmhhbmRsZV9maXJlZCB0LmFsYXJtO1xuICAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSBldmVudHMgdC5hbGFybVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgIHQubnVtX2ZpcmVzX3RvX3NraXAgPC0gdC5udW1fZmlyZXNfdG9fc2tpcCArIDE7XG4gICAgICAgICBzY2hlZHVsZSB0XG4gICAgICAgfCB0cnVlLCB0cnVlIC0+IFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIGV2ZW50cyB0LmFsYXJtIH5hdCk7XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCAoc3Bhbl90b190aW1lIHQudGltZV9zb3VyY2Ugc3BhbilcblxuICBsZXQgcnVuX2F0IHRpbWVfc291cmNlIHNjaGVkdWxlZF9hdCBmIHogPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucnVuX2F0XCIgc2NoZWR1bGVkX2F0IFslc2V4cF9vZjogVGltZV9ucy50XTtcbiAgICBsZXQgdCA9XG4gICAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgICAgOyBmaXJlID0gaWdub3JlICgqIHNldCBiZWxvdyAqKVxuICAgICAgOyBmaXJlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICA7IG51bV9maXJlc190b19za2lwID0gMFxuICAgICAgOyBzY2hlZHVsZWRfYXRcbiAgICAgIDsgdGltZV9zb3VyY2UgPSByZWFkX29ubHkgdGltZV9zb3VyY2VcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBmaXJlICgpID1cbiAgICAgICgqIFtmaXJlXSBydW5zIGluIGFuIEFzeW5jIGpvYi4gIFRoZSBldmVudCBtYXkgaGF2ZSBiZWVuIGFib3J0ZWQgYWZ0ZXIgdGhlIGpvYlxuICAgICAgICAgd2FzIGVucXVldWVkLCBzbyBbZmlyZV0gbXVzdCBjaGVjayBbZmlyZWRdLiAqKVxuICAgICAgaWYgSXZhci5pc19lbXB0eSB0LmZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHQubnVtX2ZpcmVzX3RvX3NraXAgPiAwXG4gICAgICAgIHRoZW4gdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwIC0gMVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZiB6IGluXG4gICAgICAgICAgKCogW2Ygel0gbWF5IGhhdmUgYWJvcnRlZCB0aGUgZXZlbnQsIHNvIHdlIG11c3QgY2hlY2sgW2ZpcmVkXSBhZ2Fpbi4gKilcbiAgICAgICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWQgdGhlbiBJdmFyLmZpbGwgdC5maXJlZCAoSGFwcGVuZWQgcmVzdWx0KSlcbiAgICBpblxuICAgIHQuZmlyZSA8LSBmaXJlO1xuICAgIHNjaGVkdWxlIHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBhdCB0aW1lX3NvdXJjZSB0aW1lID0gcnVuX2F0IHRpbWVfc291cmNlIHRpbWUgaWdub3JlICgpXG5cbiAgbGV0IHJ1bl9hZnRlciB0aW1lX3NvdXJjZSBzcGFuIGYgYSA9XG4gICAgcnVuX2F0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbikgZiBhXG4gIDs7XG5cbiAgbGV0IGFmdGVyIHRpbWVfc291cmNlIHNwYW4gPSBhdCB0aW1lX3NvdXJjZSAoc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW4pXG5lbmRcblxubGV0IGF0X3RpbWVzID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKSB0IG5leHRfdGltZSA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBjaG9vc2VcbiAgICAgIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcCk7IGNob2ljZSAoYXQgdCAobmV4dF90aW1lICgpKSkgKGZ1biAoKSAtPiBgVGljaykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3AgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIHwgYFRpY2sgLT5cbiAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgKCk7XG4gICAgICBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgdCBjb21wdXRlX3NwYW4gPVxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT4gVGltZV9ucy5hZnRlciAobm93IHQpIChjb21wdXRlX3NwYW4gKCkpKVxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgdCBpbnRlcnZhbCA9XG4gIGxldCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gbm93IHRcbiAgaW5cbiAgYXRfdGltZXMgdCA/c3RvcCAoZnVuICgpIC0+XG4gICAgVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlOnN0YXJ0IH5hZnRlcjoobm93IHQpIH5pbnRlcnZhbCAoKSlcbjs7XG5cbm1vZHVsZSBDb250aW51ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW1tZWRpYXRlbHlcbiAgICB8IEFmdGVyIG9mIFRpbWVfbnMuU3Bhbi50XG4gICAgfCBOZXh0X211bHRpcGxlIG9mIFRpbWVfbnMudCAqIFRpbWVfbnMuU3Bhbi50XG5cbiAgbGV0IGltbWVkaWF0ZWx5ID0gSW1tZWRpYXRlbHlcblxuICBsZXQgYXQgdCB0aW1lX3NvdXJjZSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbW1lZGlhdGVseSAtPiBUaW1pbmdfd2hlZWwubm93IHRpbWVfc291cmNlLmV2ZW50c1xuICAgIHwgQWZ0ZXIgc3BhbiAtPiBzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhblxuICAgIHwgTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpIC0+XG4gICAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyOihub3cgdGltZV9zb3VyY2UpIH5pbnRlcnZhbCAoKVxuICA7O1xuZW5kXG5cbmxldCBydW5fcmVwZWF0ZWRseVxuICAgICAgPyhzdGFydCA9IHJldHVybiAoKSlcbiAgICAgID9zdG9wXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gdHJ1ZSlcbiAgICAgID8oZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKSlcbiAgICAgIHRcbiAgICAgIH5mXG4gICAgICB+Y29udGludWVcbiAgPVxuICBzdGFydFxuICA+Pj4gZnVuICgpIC0+XG4gIGxldCBhbGFybSA9IHJlZiAoQWxhcm0ubnVsbCAoKSkgaW5cbiAgbGV0IHN0b3AgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgU29tZSBzdG9wIC0+XG4gICAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPlxuICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzICFhbGFybVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfYWxhcm0gdCAhYWxhcm07XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpKSk7XG4gICAgICBzdG9wXG4gIGluXG4gICgqIFtydW5fZl0sIFtjb250aW51ZV9mXSwgYW5kIFtjb250aW51ZV90cnlfd2l0aF0gYXJlIGRlZmluZWQgc28gdGhhdCB3ZSBhbGxvY2F0ZSB0aGVpclxuICAgICBjbG9zdXJlcyBvbmNlLCBub3Qgb25jZSBwZXIgaXRlcmF0aW9uLiAqKVxuICBsZXQgcmVjIHJ1bl9mICgpID1cbiAgICAoKiBCZWZvcmUgY2FsbGluZyBbZl0sIHdlIHN5bmNocm9ub3VzbHkgY2hlY2sgd2hldGhlciBbc3RvcF0gaXMgZGV0ZXJtaW5lZC4gKilcbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKVxuICAgIGVsc2UgaWYgY29udGludWVfb25fZXJyb3JcbiAgICB0aGVuIE1vbml0b3IudHJ5X3dpdGggZiB+cnVuOmBOb3cgfnJlc3Q6YFJhaXNlID4+PiBjb250aW51ZV90cnlfd2l0aFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGQgPSBmICgpIGluXG4gICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBjb250aW51ZV9mICgpIGVsc2UgZCA+Pj4gY29udGludWVfZilcbiAgYW5kIGNvbnRpbnVlX2YgKCkgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBhbGFybSA6PSBydW5fYXRfaW50ZXJuYWwgdCAoQ29udGludWUuYXQgY29udGludWUgdCkgcnVuX2YgKClcbiAgYW5kIGNvbnRpbnVlX3RyeV93aXRoIG9yX2Vycm9yID1cbiAgICAobWF0Y2ggb3JfZXJyb3Igd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgZXJyb3IgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlcnJvcik7XG4gICAgY29udGludWVfZiAoKVxuICBpblxuICBydW5fZiAoKVxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB0IHNwYW4gZiA9XG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2UuZXZlcnkgZ290IG5vbnBvc2l0aXZlIHNwYW5cIiAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gIHJ1bl9yZXBlYXRlZGx5IHQgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgfmYgfmNvbnRpbnVlOihBZnRlciBzcGFuKVxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBzcGFuIGYgPVxuICBldmVyeScgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZDpOb25lIHNwYW4gKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgbGV0IG5vdyA9IG5vdyB0IGluXG4gIGxldCBiYXNlLCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgTm9uZSAtPiBub3csIE5vbmVcbiAgICB8IFNvbWUgc3RhcnQgLT5cbiAgICAgICggc3RhcnRcbiAgICAgICwgU29tZVxuICAgICAgICAgIChhdFxuICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAoVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICB+YmFzZTpzdGFydFxuICAgICAgICAgICAgICAgIH5hZnRlcjpub3dcbiAgICAgICAgICAgICAgICB+Y2FuX2VxdWFsX2FmdGVyOnRydWVcbiAgICAgICAgICAgICAgICB+aW50ZXJ2YWwpKSApXG4gIGluXG4gIHJ1bl9yZXBlYXRlZGx5XG4gICAgdFxuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgfmZcbiAgICB+Y29udGludWU6KE5leHRfbXVsdGlwbGUgKGJhc2UsIGludGVydmFsKSlcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIChmdW4gKCkgLT5cbiAgICBmICgpO1xuICAgIHJldHVybiAoKSlcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgdCBzcGFuIGQgPVxuICBsZXQgdGltZW91dCA9IEV2ZW50LmFmdGVyIHQgc3BhbiBpblxuICBjaG9vc2VcbiAgICAoKiBUaGUgY29kZSBiZWxvdyBkb2VzIGV4aGF1c3RpdmUgY2FzZSBhbmFseXNpcyBpbiBib3RoIFtjaG9pY2Vdcy4gIEJlY2F1c2UgW3RpbWVvdXRdXG4gICAgICAgZG9lcyBub3QgZXNjYXBlIHRoZSBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uLCBjZXJ0YWluIGNhc2VzIHNob3VsZCBiZSBpbXBvc3NpYmxlLCBhbmRcbiAgICAgICBhcmUgbWFya2VkIGFzIHN1Y2ggd2l0aCBleGNlcHRpb25zLiAgV2UgZG8gbm90IGV4cGVjdCB0aG9zZSBleGNlcHRpb25zIHRvIG9jY3VyLFxuICAgICAgIGJ1dCBpZiB0aGV5IGRvLCBpdCBsaWtlbHkgaW5kaWNhdGVzIGEgYnVnIGluIFtjaG9vc2VdIHJhdGhlciB0aGFuXG4gICAgICAgW3dpdGhfdGltZW91dF0uICopXG4gICAgWyBjaG9pY2UgZCAoZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIEV2ZW50LmFib3J0IHRpbWVvdXQgKCkgd2l0aFxuICAgICAgICAgKCogW1ByZXZpb3VzbHlfaGFwcGVuZWRdIGNhbiBvY2N1ciBpZiBib3RoIFtkXSBhbmQgW3dhaXRdIGJlY29tZSBkZXRlcm1pbmVkIGF0XG4gICAgICAgICAgICB0aGUgc2FtZSB0aW1lLCBlLmcuIFt3aXRoX3RpbWVvdXQgKHNlYyAwLikgKHJldHVybiAoKSldLiAqKVxuICAgICAgICAgfCBPayB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gKClcbiAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+XG4gICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1Zzogc2hvdWxkIG9ubHkgYWJvcnQgb25jZVwiXSk7XG4gICAgICAgIGBSZXN1bHQgdilcbiAgICA7IGNob2ljZSAoRXZlbnQuZmlyZWQgdGltZW91dCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gYFRpbWVvdXRcbiAgICAgICAgfCBBYm9ydGVkICgpIC0+XG4gICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1ZzogYm90aCBjb21wbGV0ZWQgYW5kIHRpbWVkIG91dFwiXSlcbiAgICBdXG47O1xuXG5sZXQgZHVyYXRpb25fb2YgdCBmID1cbiAgbGV0IHN0YXJ0ID0gbm93IHQgaW5cbiAgbGV0JW1hcCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBvZl9zeW5jaHJvbm91cyB0ID0gdFxubGV0IHRvX3N5bmNocm9ub3VzIHQgPSB0XG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgXyB0ID1cbiAgfCBTdGFjayA6ICdhIFN0YWNrLnQgLT4gJ2EgdFxuICB8IENvdW50ZXIgOiB7IG11dGFibGUgbGVuZ3RoIDogaW50IH0gLT4gdW5pdCB0XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID0gU3RhY2sgKFN0YWNrLm9mX2xpc3QgbGlzdClcblxubGV0IGNyZWF0ZV9jb3VudGVyIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlcl0gZ290IG5lZ2F0aXZlIGxlbmd0aFwiIChsZW5ndGggOiBpbnQpXTtcbiAgQ291bnRlciB7IGxlbmd0aCB9XG47O1xuXG5sZXQgbGVuZ3RoICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2subGVuZ3RoIHNcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGhcbjs7XG5cbmxldCBjbGVhciAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmNsZWFyIHNcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gMFxuOztcblxubGV0IHB1c2ggKHR5cGUgYSkgKHQgOiBhIHQpIGEgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnB1c2ggcyBhXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIHIubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9leG4gKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wb3BfZXhuIHNcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBpZiByLmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLnBvcF9leG5dIG9mIGVtcHR5IHN0YWNrXCJdO1xuICAgIHIubGVuZ3RoIDwtIHIubGVuZ3RoIC0gMVxuOztcblxubGV0IGl0ZXIgKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGEgLT4gdW5pdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLml0ZXIgcyB+ZlxuICB8IENvdW50ZXIgciAtPlxuICAgIGZvciBfID0gMSB0byByLmxlbmd0aCBkb1xuICAgICAgZiAoKVxuICAgIGRvbmVcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbnR5cGUgJ2Egb3V0Y29tZSA9XG4gIFsgYE9rIG9mICdhXG4gIHwgYEFib3J0ZWRcbiAgfCBgUmFpc2VkIG9mIGV4blxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgSW50ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2IgRGVmZXJyZWQudCkgLT4gJ2EgdCAqICdiIG91dGNvbWUgRGVmZXJyZWQudFxuXG4gICgqIEV2ZXJ5IGludGVybmFsIGpvYiB3aWxsIGV2ZW50dWFsbHkgYmUgZWl0aGVyIFtydW5dIG9yIFthYm9ydF1lZCwgYnV0IG5vdCBib3RoLiAqKVxuXG4gIHZhbCBydW4gOiAnYSB0IC0+ICdhIC0+IFsgYE9rIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgdmFsIGFib3J0IDogXyB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiBbIGBBYm9ydCB8IGBTdGFydCBvZiAnYSBdIEl2YXIudFxuICAgIDsgb3V0Y29tZSA6IFsgYE9rIHwgYEFib3J0ZWQgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHdvcmsgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaCViaW5kIEl2YXIucmVhZCBzdGFydCB3aXRoXG4gICAgICB8IGBBYm9ydCAtPiByZXR1cm4gYEFib3J0ZWRcbiAgICAgIHwgYFN0YXJ0IGEgLT5cbiAgICAgICAgKG1hdGNoJW1hcFxuICAgICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgICAgfnJ1bjpcbiAgICAgICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgICAoZnVuICgpIC0+IHdvcmsgYSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgT2sgYSAtPiBgT2sgYVxuICAgICAgICAgfCBFcnJvciBleG4gLT4gYFJhaXNlZCBleG4pXG4gICAgaW5cbiAgICBsZXQgb3V0Y29tZSA9XG4gICAgICBtYXRjaCVtYXAgcmVzdWx0IHdpdGhcbiAgICAgIHwgYE9rIF8gLT4gYE9rXG4gICAgICB8IGBBYm9ydGVkIC0+IGBBYm9ydGVkXG4gICAgICB8IGBSYWlzZWQgXyAtPiBgUmFpc2VkXG4gICAgaW5cbiAgICBsZXQgdCA9IHsgc3RhcnQ7IG91dGNvbWUgfSBpblxuICAgIHQsIHJlc3VsdFxuICA7O1xuXG4gIGxldCBydW4gdCBhID1cbiAgICBJdmFyLmZpbGwgdC5zdGFydCAoYFN0YXJ0IGEpO1xuICAgIG1hdGNoJW1hcCB0Lm91dGNvbWUgd2l0aFxuICAgIHwgYEFib3J0ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoYE9rIHwgYFJhaXNlZCkgYXMgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPSBJdmFyLmZpbGwgdC5zdGFydCBgQWJvcnRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGNvbnRpbnVlX29uX2Vycm9yIDogYm9vbFxuICA7IG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgOyAoKiBbam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXSBob2xkcyByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnkgYVxuICAgICAgIHJ1bm5pbmcgam9iLiAqKVxuICAgIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA6ICdhIFN0YWNrX29yX2NvdW50ZXIudFxuICA7XG4gICAgKCogW2pvYnNfd2FpdGluZ190b19zdGFydF0gaXMgdGhlIHF1ZXVlIG9mIGpvYnMgdGhhdCBoYXZlbid0IHlldCBzdGFydGVkLiAqKVxuICAgIGpvYnNfd2FpdGluZ190b19zdGFydCA6ICdhIEludGVybmFsX2pvYi50IFF1ZXVlLnRcbiAgOyAoKiBbMCA8PSBudW1fam9ic19ydW5uaW5nIDw9IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgbnVtX2pvYnNfcnVubmluZyA6IGludFxuICA7ICgqIFtjYXBhY2l0eV9hdmFpbGFibGVdIGlzIFtTb21lIGl2YXJdIGlmIHVzZXIgY29kZSBoYXMgY2FsbGVkIFtjYXBhY2l0eV9hdmFpbGFibGUgdF1cbiAgICAgICBhbmQgaXMgd2FpdGluZyB0byBiZSBub3RpZmllZCB3aGVuIGNhcGFjaXR5IGlzIGF2YWlsYWJsZSBpbiB0aGUgdGhyb3R0bGUuXG4gICAgICAgW21heWJlX3N0YXJ0X2pvYl0gd2lsbCBmaWxsIFtpdmFyXSB3aGVuIGNhcGFjaXR5IGJlY29tZXMgYXZhaWxhYmxlLCBpLmUuIHdoZW5cbiAgICAgICBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyBlbXB0eSBhbmQgW251bV9qb2JzX3J1bm5pbmcgPCBtYXhfY29uY3VycmVudF9qb2JzXS4gKilcbiAgICBtdXRhYmxlIGNhcGFjaXR5X2F2YWlsYWJsZSA6IHVuaXQgSXZhci50IG9wdGlvblxuICA7ICgqIFtpc19kZWFkXSBpcyB0cnVlIGlmIFt0XSB3YXMga2lsbGVkIGR1ZSB0byBhIGpvYiByYWlzaW5nIGFuIGV4Y2VwdGlvbiBvciBba2lsbCB0XVxuICAgICAgIGJlaW5nIGNhbGxlZC4gKilcbiAgICBtdXRhYmxlIGlzX2RlYWQgOiBib29sXG4gIDsgKCogW2NsZWFuc10gaG9sZHMgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY2xlYW4gZWFjaCByZXNvdXJjZSB3aGVuIFt0XSBpc1xuICAgICAgIGtpbGxlZC4gKilcbiAgICBtdXRhYmxlIGNsZWFucyA6ICgnYSAtPiB1bml0IERlZmVycmVkLnQpIGxpc3RcbiAgOyAoKiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gaXMgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgd2hvc2UgY2xlYW4gZnVuY3Rpb25zIGhhdmVcbiAgICAgICBub3QgeWV0IGNvbXBsZXRlZC4gIFdoaWxlIFt0XSBpcyBhbGl2ZSwgW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPVxuICAgICAgIG1heF9jb25jdXJyZW50X2pvYnNdLiAgT25jZSBbdF0gaXMga2lsbGVkLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gZGVjcmVhc2VzIHRvXG4gICAgICAgemVybyBvdmVyIHRpbWUgYXMgdGhlIGNsZWFuIGZ1bmN0aW9ucyBjb21wbGV0ZS4gKilcbiAgICBtdXRhYmxlIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgOiBpbnRcbiAgOyAoKiBbY2xlYW5lZF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIHJlYWNoZXMgemVybyxcbiAgICAgICBpLmUuIGFmdGVyIFt0XSBpcyBraWxsZWQgYW5kIGFsbCBpdHMgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIGNsZWFuZWQgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29udGludWVfb25fZXJyb3I6aWdub3JlXG4gICAgICB+bWF4X2NvbmN1cnJlbnRfam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2NvbmN1cnJlbnRfam9icyAtPiBhc3NlcnQgKG1heF9jb25jdXJyZW50X2pvYnMgPiAwKSkpXG4gICAgICB+am9iX3Jlc291cmNlc19ub3RfaW5fdXNlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgLT5cbiAgICAgICAgICAgU3RhY2tfb3JfY291bnRlci5pdGVyIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjppbnZhcmlhbnRfYTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLmxlbmd0aCBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VcbiAgICAgICAgICAgICA9IGlmIHQuaXNfZGVhZCB0aGVuIDAgZWxzZSB0Lm1heF9jb25jdXJyZW50X2pvYnMgLSB0Lm51bV9qb2JzX3J1bm5pbmcpKSlcbiAgICAgIH5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb24gam9ic193YWl0aW5nX3RvX3N0YXJ0IC0+XG4gICAgICAgICAgIGlmIHQuaXNfZGVhZCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+bnVtX2pvYnNfcnVubmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2pvYnNfcnVubmluZyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9qb2JzX3J1bm5pbmcgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA8PSB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICAgICAgICAgICBpZiBudW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydCkpKVxuICAgICAgfmNhcGFjaXR5X2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgIH5pc19kZWFkOmlnbm9yZVxuICAgICAgfmNsZWFuczppZ25vcmVcbiAgICAgIH5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMgdGhlbiBhc3NlcnQgdC5pc19kZWFkKSlcbiAgICAgIH5jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBjbGVhbmVkIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCBjbGVhbmVkIHRoZW4gYXNzZXJ0ICh0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwKSkpXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaHJvdHRsZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiBfIHQpXVxuOztcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2tpbmQpIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuZW5kXG5cbmxldCBudW1fam9ic193YWl0aW5nX3RvX3N0YXJ0IHQgPSBRdWV1ZS5sZW5ndGggdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnRcblxubGV0IGNsZWFuX3Jlc291cmNlIHQgYSA9XG4gIERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCB0LmNsZWFucyB+ZjooZnVuIGYgLT4gZiBhKSlcbiAgPj4+IGZ1biAoKSAtPlxuICB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPC0gdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0gMTtcbiAgaWYgdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gMCB0aGVuIEl2YXIuZmlsbCB0LmNsZWFuZWQgKClcbjs7XG5cbmxldCBraWxsIHQgPVxuICBpZiBub3QgdC5pc19kZWFkXG4gIHRoZW4gKFxuICAgIHQuaXNfZGVhZCA8LSB0cnVlO1xuICAgIFF1ZXVlLml0ZXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgfmY6SW50ZXJuYWxfam9iLmFib3J0O1xuICAgIFF1ZXVlLmNsZWFyIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0O1xuICAgIFN0YWNrX29yX2NvdW50ZXIuaXRlciB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjooZnVuIGEgLT4gY2xlYW5fcmVzb3VyY2UgdCBhKTtcbiAgICBTdGFja19vcl9jb3VudGVyLmNsZWFyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlKVxuOztcblxubGV0IGF0X2tpbGwgdCBmID1cbiAgKCogV2UgcHJlc2VydmUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgZXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGdvIHRvIHRoZSBtb25pdG9yXG4gICAgIGluIGVmZmVjdCB3aGVuIFthdF9raWxsXSB3YXMgY2FsbGVkLiAqKVxuICBsZXQgZiA9IHVuc3RhZ2UgKE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlci5wcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZikgaW5cbiAgdC5jbGVhbnMgPC0gZiA6OiB0LmNsZWFuc1xuOztcblxubGV0IGNsZWFuZWQgdCA9IEl2YXIucmVhZCB0LmNsZWFuZWRcblxubGV0IHJlYyBzdGFydF9qb2IgdCA9XG4gIGFzc2VydCAobm90IHQuaXNfZGVhZCk7XG4gIGFzc2VydCAodC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgYXNzZXJ0IChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSk7XG4gIGxldCBqb2IgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmpvYnNfd2FpdGluZ190b19zdGFydCBpblxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nICsgMTtcbiAgbGV0IGpvYl9yZXNvdXJjZSA9IFN0YWNrX29yX2NvdW50ZXIucG9wX2V4biB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBpblxuICBJbnRlcm5hbF9qb2IucnVuIGpvYiBqb2JfcmVzb3VyY2VcbiAgPj4+IGZ1biByZXMgLT5cbiAgdC5udW1fam9ic19ydW5uaW5nIDwtIHQubnVtX2pvYnNfcnVubmluZyAtIDE7XG4gIChtYXRjaCByZXMgd2l0aFxuICAgfCBgT2sgLT4gKClcbiAgIHwgYFJhaXNlZCAtPiBpZiBub3QgdC5jb250aW51ZV9vbl9lcnJvciB0aGVuIGtpbGwgdCk7XG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIGNsZWFuX3Jlc291cmNlIHQgam9iX3Jlc291cmNlXG4gIGVsc2UgKFxuICAgIFN0YWNrX29yX2NvdW50ZXIucHVzaCB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBqb2JfcmVzb3VyY2U7XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydClcbiAgICB0aGVuIHN0YXJ0X2pvYiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LmNhcGFjaXR5X2F2YWlsYWJsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgICB0LmNhcGFjaXR5X2F2YWlsYWJsZSA8LSBOb25lKSlcbjs7XG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9IFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXMgaW5cbiAgeyBjb250aW51ZV9vbl9lcnJvclxuICA7IG1heF9jb25jdXJyZW50X2pvYnNcbiAgOyBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgPSBqb2JfcmVzb3VyY2VzXG4gIDsgam9ic193YWl0aW5nX3RvX3N0YXJ0ID0gUXVldWUuY3JlYXRlICgpXG4gIDsgbnVtX2pvYnNfcnVubmluZyA9IDBcbiAgOyBjYXBhY2l0eV9hdmFpbGFibGUgPSBOb25lXG4gIDsgaXNfZGVhZCA9IGZhbHNlXG4gIDsgY2xlYW5zID0gW11cbiAgOyBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGNsZWFuZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIChTdGFja19vcl9jb3VudGVyLm9mX2xpc3Qgam9iX3Jlc291cmNlcylcbjs7XG5cbm1vZHVsZSBTZXF1ZW5jZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSkgYSA9IGNyZWF0ZV93aXRoIH5jb250aW51ZV9vbl9lcnJvciBbIGEgXVxuZW5kXG5cbmxldCBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA8PSAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaHJvdHRsZS5jcmVhdGUgcmVxdWlyZXMgcG9zaXRpdmUgbWF4X2NvbmN1cnJlbnRfam9icywgYnV0IGdvdFwiXG4gICAgICAgICAgKG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnQpXTtcbiAgY3JlYXRlX2ludGVybmFsXG4gICAgfmNvbnRpbnVlX29uX2Vycm9yXG4gICAgKFN0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXIgfmxlbmd0aDptYXhfY29uY3VycmVudF9qb2JzKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgaW50ZXJuYWxfam9iIDogJ2EgSW50ZXJuYWxfam9iLnRcbiAgICA7IHJlc3VsdCA6IFsgYE9rIG9mICdiIHwgYEFib3J0ZWQgfCBgUmFpc2VkIG9mIGV4biBdIERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IHJlc3VsdCB0ID0gdC5yZXN1bHRcbiAgbGV0IGFib3J0IHQgPSBJbnRlcm5hbF9qb2IuYWJvcnQgdC5pbnRlcm5hbF9qb2JcblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBpbnRlcm5hbF9qb2IsIHJlc3VsdCA9IEludGVybmFsX2pvYi5jcmVhdGUgZiBpblxuICAgIHsgaW50ZXJuYWxfam9iOyByZXN1bHQgfVxuICA7O1xuZW5kXG5cbmxldCBlbnF1ZXVlJyB0IGYgPVxuICBsZXQgam9iID0gSm9iLmNyZWF0ZSBmIGluXG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIEpvYi5hYm9ydCBqb2JcbiAgZWxzZSAoXG4gICAgUXVldWUuZW5xdWV1ZSB0LmpvYnNfd2FpdGluZ190b19zdGFydCBqb2IuaW50ZXJuYWxfam9iO1xuICAgIGlmIHQubnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIHN0YXJ0X2pvYiB0KTtcbiAgSm9iLnJlc3VsdCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0ID1cbiAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgfCBgT2sgYSAtPiBhXG4gIHwgYEFib3J0ZWQgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aHJvdHRsZSBhYm9ydGVkIGpvYlwiXVxuICB8IGBSYWlzZWQgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IGVucXVldWUgdCBmID0gZW5xdWV1ZScgdCBmID4+fCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHRcblxubGV0IGVucXVldWVfZXhjbHVzaXZlIHQgZiA9XG4gIGxldCBuID0gdC5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gIGlmIEludC4oID49ICkgbiAxXzAwMF8wMDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIltlbnF1ZXVlX2V4Y2x1c2l2ZV0gd2FzIGNhbGxlZCB3aXRoIGEgdmVyeSBsYXJnZSB2YWx1ZSBvZiBcXFxuICAgICAgICAgW21heF9jb25jdXJyZW50X2pvYnNdLiBUaGlzIGRvZXNuJ3Qgd29yay5cIl07XG4gIGxldCBkb25lXyA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGFzc2VydCAobiA+IDApO1xuICBsZXQgZl9wbGFjZWhvbGRlciBfc2xvdCA9IEl2YXIucmVhZCBkb25lXyBpblxuICBmb3IgXyA9IDEgdG8gbiAtIDEgZG9cbiAgICBkb24ndF93YWl0X2ZvciAoZW5xdWV1ZSB0IGZfcGxhY2Vob2xkZXIpXG4gIGRvbmU7XG4gIGxldCVtYXAgcmVzdWx0ID0gZW5xdWV1ZScgdCAoZnVuIF9zbG90IC0+IGYgKCkpIGluXG4gIEl2YXIuZmlsbCBkb25lXyAoKTtcbiAgaGFuZGxlX2VucXVldWVfcmVzdWx0IHJlc3VsdFxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdyB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYSAtPiBlbnF1ZXVlIHQgKGZ1biAoKSAtPiBmIGEpKVxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZiA9XG4gIHN0YWdlXG4gICAgKG1hdGNoIGhvdyB3aXRoXG4gICAgIHwgYFBhcmFsbGVsIC0+IGZcbiAgICAgfCAoYFNlcXVlbnRpYWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgfCBgU2VxdWVudGlhbCAtPiAxXG4gICAgICAgICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT4gbWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgIGluXG4gICAgICAgbGV0IHQgPSBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICAgICAgZnVuIGExIGEyIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYTEgYTIpKVxuOztcblxubGV0IHByaW9yX2pvYnNfZG9uZSB0ID1cbiAgKCogV2UgcXVldWUgW3QubWF4X2NvbmN1cnJlbnRfam9ic10gZHVtbXkgam9icyBhbmQgd2hlbiB0aGV5IGFyZSBhbGwgc3RhcnRlZCB3ZSBrbm93XG4gICAgIHRoYXQgYWxsIHByaW9yIGpvYnMgZmluaXNoZWQuICBXZSBtYWtlIHN1cmUgdGhhdCBhbGwgZHVtbXkgam9icyB3YWl0IGZvciB0aGUgbGFzdCBvbmVcbiAgICAgdG8gZ2V0IHN0YXJ0ZWQgYmVmb3JlIGZpbmlzaGluZy4gKilcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gYWxsX2R1bW15X2pvYnNfcnVubmluZyAtPlxuICAgIGxldCBkdW1teV9qb2JzX3J1bm5pbmcgPSByZWYgMCBpblxuICAgIGZvciBfID0gMSB0byB0Lm1heF9jb25jdXJyZW50X2pvYnMgZG9cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChlbnF1ZXVlIHQgKGZ1biBfIC0+XG4gICAgICAgICAgIGluY3IgZHVtbXlfam9ic19ydW5uaW5nO1xuICAgICAgICAgICBpZiAhZHVtbXlfam9ic19ydW5uaW5nID0gdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gSXZhci5maWxsIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcgKCk7XG4gICAgICAgICAgIEl2YXIucmVhZCBhbGxfZHVtbXlfam9ic19ydW5uaW5nKSlcbiAgICBkb25lKVxuOztcblxubGV0IGNhcGFjaXR5X2F2YWlsYWJsZSB0ID1cbiAgaWYgbnVtX2pvYnNfcnVubmluZyB0IDwgbWF4X2NvbmN1cnJlbnRfam9icyB0XG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICB8IFNvbWUgaXZhciAtPiBJdmFyLnJlYWQgaXZhclxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIFNvbWUgaXZhcikpXG47O1xuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcblxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlcjEuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlcjEud2FsbF9jbG9ja1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cbmluY2x1ZGUgKFNjaGVkdWxlciA6IG1vZHVsZSB0eXBlIG9mIFNjaGVkdWxlciB3aXRoIG1vZHVsZSBCdmFyIDo9IFNjaGVkdWxlci5CdmFyKVxuXG5sZXQgdCA9IFNjaGVkdWxlci50XG5cbmluY2x1ZGUgTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBmaW5kX2xvY2FsIGtleSA9IEV4ZWN1dGlvbl9jb250ZXh0LmZpbmRfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBrZXlcblxubGV0IHdpdGhfbG9jYWwga2V5IHZhbHVlIH5mID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQud2l0aF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0KSBrZXkgdmFsdWVcbiAgaW5cbiAgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0IH5mXG47O1xuXG5sZXQgbWFpbl9leGVjdXRpb25fY29udGV4dCA9ICh0ICgpKS5tYWluX2V4ZWN1dGlvbl9jb250ZXh0XG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gbnVtX3BlbmRpbmdfam9icyB0ID4gMCB8fCBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkXG5sZXQgaGFzX3VwY29taW5nX2V2ZW50IHQgPSBub3QgKFRpbWluZ193aGVlbC5pc19lbXB0eSAoZXZlbnRzIHQpKVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IChldmVudHMgdClcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50X2V4biB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIChldmVudHMgdClcbmxldCBldmVudF9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gKGV2ZW50cyB0KVxubGV0IGN5Y2xlX3N0YXJ0IHQgPSB0LmN5Y2xlX3N0YXJ0XG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmYgPSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCA8LSBmIDo6IHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mID0gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIGYgOjogdC5ydW5fZXZlcnlfY3ljbGVfZW5kXG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayB0IH5mID1cbiAgbGV0IGhhbmRsZSA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLmNyZWF0ZSAoKSBpblxuICBIYXNodGJsLmFkZF9leG4gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY7XG4gIGhhbmRsZVxuOztcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB0IH5mID1cbiAgbGV0IGhhbmRsZSA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLmNyZWF0ZSAoKSBpblxuICBIYXNodGJsLmFkZF9leG4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9lbmQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG4oKiBVbmJlbGlldmFibGUgdGhhdCBbTGlzdC5yZW1vdmVdIGlzIG5vdCBhIHRoaW5nICopXG5sZXQgbGlzdF9yZW1vdmVfZmlyc3QgbHN0IH5mID1cbiAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSB+ZjooZnVuIHggLT4gbm90IChmIHgpKSBsc3Qgd2l0aFxuICB8IF8sIFtdIC0+IE5vbmVcbiAgfCBsLCBfIDo6IHIgLT4gU29tZSAobCBAIHIpXG47O1xuXG5sZXQgcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGxzdCBmID1cbiAgKCogUmVtb3ZlIGEgc2luZ2xlIGluc3RhbmNlIG9mIFtmXSBmcm9tIFtsc3RdLiBNb3JlIHRoYW4gb25lIGluc3RhbmNlIG1heSBiZSBwcmVzZW50LFxuICAgICBidXQgcmVtb3ZhbCBpcyByZWZlcmVuY2UtY291bnRlZCBieSBbcnVuX2V2ZXJ5X2N5Y2xlXyhzdGFydHxlbmQpX3N0YXRlXSB0YWJsZXMuICopXG4gIG1hdGNoIGxpc3RfcmVtb3ZlX2ZpcnN0IH5mOihwaHlzX2VxdWFsIGYpIGxzdCB3aXRoXG4gIHwgU29tZSBsc3QgLT4gbHN0XG4gIHwgTm9uZSAtPlxuICAgICgqIFRoaXMgc2hvdWxkIGJlIHVucmVhY2hhYmxlLCBzZWUgdGhlIFtpbnZhcmlhbnRdIGluIFtzY2hlZHVsZXIxLm1sXS4gKilcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJTY2hlZHVsZXIucmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGNhbGxlZCB3aXRoIGEgaG9vayB0aGF0IGlzbid0IHJlZ2lzdGVyZWRcIl1cbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBzdGFydCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPlxuICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBlbmQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgZlxuOztcblxubGV0IG1hcF9jeWNsZV90aW1lcyB0IH5mID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgKGYgdC5sYXN0X2N5Y2xlX3RpbWUpKSlcbjs7XG5cbmxldCBsb25nX2N5Y2xlcyB0IH5hdF9sZWFzdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPlxuICAgICAgaWYgVGltZV9ucy5TcGFuLiggPj0gKSB0Lmxhc3RfY3ljbGVfdGltZSBhdF9sZWFzdFxuICAgICAgdGhlbiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV90aW1lKSlcbjs7XG5cbmxldCBjeWNsZV9udW1fam9icyB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX251bV9qb2JzKSlcbjs7XG5cbmxldCBjeWNsZV9jb3VudCB0ID0gdC5jeWNsZV9jb3VudFxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgaW50ID1cbiAgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA8LSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIGludFxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgPVxuICBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuOztcblxubGV0IHNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IGYgPSB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDwtIGZcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmV4dGVybmFsX2pvYnMgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpO1xuICB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rICgpXG47O1xuXG5sZXQgc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCBmID0gdC5ldmVudF9hZGRlZF9ob29rIDwtIFNvbWUgZlxubGV0IHNldF9qb2JfcXVldWVkX2hvb2sgdCBmID0gdC5qb2JfcXVldWVkX2hvb2sgPC0gU29tZSBmXG5cbmxldCBjcmVhdGVfYWxhcm0gdCBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIEdjLkV4cGVydC5BbGFybS5jcmVhdGUgKGZ1biAoKSAtPlxuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyIHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgaGVhcF9ibG9jayA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy5cblxuICAgICAgIEJ5IHB1dHRpbmcgW2hlYXBfYmxvY2tdIGluIFtleHRlcm5hbF9qb2JzXSwgd2UgYXJlIGtlZXBpbmcgaXQgYWxpdmUgdW50aWwgdGhlIG5leHRcbiAgICAgICB0aW1lIHRoZSBhc3luYyBzY2hlZHVsZXIgZ2V0cyBhcm91bmQgdG8gZGVxdWV1ZWluZyBpdC4gIENhbGxpbmdcbiAgICAgICBbdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gZW5zdXJlcyB0aGF0IHdpbGwgaGFwcGVuIGluIHNob3J0IG9yZGVyLiAgVGh1cyxcbiAgICAgICB3ZSBhcmUgbm90IGRyYW1hdGljYWxseSBpbmNyZWFzaW5nIHRoZSBsaWZldGltZSBvZiBbaGVhcF9ibG9ja10sIHNpbmNlIHRoZSBPQ2FtbFxuICAgICAgIHJ1bnRpbWUgYWxyZWFkeSByZXN1cnJlY3RlZCBbaGVhcF9ibG9ja10gc28gdGhhdCB3ZSBjb3VsZCByZWZlciB0byBpdCBoZXJlLiAgVGhlXG4gICAgICAgT0NhbWwgcnVudGltZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGZpbmFsaXplciBmdW5jdGlvbiB3aGVuIGl0IG5vdGljZWQgW2hlYXBfYmxvY2tdXG4gICAgICAgY291bGQgYmUgZmluYWxpemVkLCBzbyB0aGVyZSBpcyBubyBpbmZpbml0ZSBsb29wIGluIHdoaWNoIHdlIGFyZSBjYXVzaW5nIHRoZVxuICAgICAgIGZpbmFsaXplciB0byBydW4gYWdhaW4uICBBbHNvLCBPQ2FtbCBkb2VzIG5vdCBpbXBvc2UgYW55IHJlcXVpcmVtZW50IG9uIGZpbmFsaXplclxuICAgICAgIGZ1bmN0aW9ucyB0aGF0IHRoZXkgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBibG9jaywgc28gaXQncyBmaW5lIHRoYXQgd2Uga2VlcFxuICAgICAgIFtoZWFwX2Jsb2NrXSBhcm91bmQgdW50aWwgbGF0ZXIuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplclwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBoZWFwX2Jsb2NrXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplclwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gYmVjYXVzZSB0aGUgbGF0dGVyXG4gICAgIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlXSB0byBydW4gZmluYWxpemVycyBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgQ2FtbC5HYy5maW5hbGlzZSBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2V4biB0IHggZiA9XG4gIGFkZF9maW5hbGl6ZXIgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIChmdW4gaGVhcF9ibG9jayAtPlxuICAgIGYgKEhlYXBfYmxvY2sudmFsdWUgaGVhcF9ibG9jaykpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgKCkgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVyc1xuICAgIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplciAodXNpbmcgJ2xhc3QnIHNlbWFudGljKVwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VfbGFzdF0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyX2xhc3RdIGJlY2F1c2VcbiAgICAgdGhlIGxhdHRlciBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSB0byBydW4gZmluYWxpemVyc1xuICAgICBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgQ2FtbC5HYy5maW5hbGlzZV9sYXN0IGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gdCB4IGYgPSBhZGRfZmluYWxpemVyX2xhc3QgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIGZcblxuKCoqIFtmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZF0gc2V0cyB0aGUgbnVtYmVyIG9mIG5vcm1hbCBqb2JzIGFsbG93ZWQgdG8gcnVuIGluIHRoaXNcbiAgICBjeWNsZSB0byB6ZXJvLiAgVGh1cywgYWZ0ZXIgdGhlIGN1cnJlbnRseSBydW5uaW5nIGpvYiBjb21wbGV0ZXMsIHRoZSBzY2hlZHVsZXIgd2lsbFxuICAgIHN3aXRjaCB0byBsb3cgcHJpb3JpdHkgam9icyBhbmQgdGhlbiBlbmQgdGhlIGN1cnJlbnQgY3ljbGUuICopXG5sZXQgZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgdCA9XG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyAwXG47O1xuXG4oKiBXZSBwcmVhbGxvY2F0ZSBbc2VuZF9leG5dIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24gZWFjaCBjYWxsIHRvIFthZHZhbmNlX2Nsb2NrXS4gKilcbmxldCBzZW5kX2V4biA9IFNvbWUgTW9uaXRvci5zZW5kX2V4blxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH5ub3cgPVxuICBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9pbnRlcm5hbCB0LnRpbWVfc291cmNlIH50b186bm93IH5zZW5kX2V4blxuOztcblxubGV0IHJ1bl9jeWNsZSB0ID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJydW5fY3ljbGUgc3RhcnRpbmdcIiB0IFslc2V4cF9vZjogdF07XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICB0LmN5Y2xlX2NvdW50IDwtIHQuY3ljbGVfY291bnQgKyAxO1xuICB0LmN5Y2xlX3N0YXJ0IDwtIG5vdztcbiAgdC5pbl9jeWNsZSA8LSB0cnVlO1xuICBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkICgpO1xuICBsZXQgbnVtX2pvYnNfcnVuX2F0X3N0YXJ0X29mX2N5Y2xlID0gbnVtX2pvYnNfcnVuIHQgaW5cbiAgTGlzdC5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IH5mOihmdW4gZiAtPiBmICgpKTtcbiAgYWR2YW5jZV9jbG9jayB0IH5ub3c7XG4gIHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6dC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTtcbiAgbGV0IHJlYyBydW5fam9icyB0ID1cbiAgICBtYXRjaCBTY2hlZHVsZXIucnVuX2pvYnMgdCB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKTtcbiAgICAgICgqIFtydW5fam9ic10gc3RvcHBlZCBkdWUgdG8gYW4gZXhuLiAgVGhlcmUgbWF5IHN0aWxsIGJlIGpvYnMgdGhhdCBjb3VsZCBiZVxuICAgICAgICAgcnVuIHRoaXMgY3ljbGUsIHNvIFtydW5fam9ic10gYWdhaW4uICopXG4gICAgICBydW5fam9icyB0XG4gIGluXG4gIHJ1bl9qb2JzIHQ7XG4gIGxldCBjeWNsZV90aW1lID0gVGltZV9ucy5kaWZmIChUaW1lX25zLm5vdyAoKSkgdC5jeWNsZV9zdGFydCBpblxuICB0Lmxhc3RfY3ljbGVfdGltZSA8LSBjeWNsZV90aW1lO1xuICB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMgPC0gbnVtX2pvYnNfcnVuIHQgLSBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGU7XG4gIHQudG90YWxfY3ljbGVfdGltZSA8LSBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIGN5Y2xlX3RpbWUpO1xuICBpZiBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICgpO1xuICBMaXN0Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgdC5pbl9jeWNsZSA8LSBmYWxzZTtcbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIERlYnVnLmxvZ1xuICAgICAgXCJydW5fY3ljbGUgZmluaXNoZWRcIlxuICAgICAgKHVuY2F1Z2h0X2V4biB0LCBpc19zb21lIChuZXh0X3VwY29taW5nX2V2ZW50IHQpKVxuICAgICAgWyVzZXhwX29mOiBFcnJvci50IG9wdGlvbiAqIGJvb2xdXG47O1xuXG5sZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gc3RhcnRpbmdcIjtcbiAgbGV0IHQgPSB0ICgpIGluXG4gIGlmIGlzX2RlYWQgdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBjYW5ub3QgcHJvY2VlZCAtLSBzY2hlZHVsZXIgaXMgZGVhZFwiXG4gICAgICAgICAgfnNjaGVkdWxlcjoodCA6IHQpXTtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBydW5fY3ljbGUgdDtcbiAgICBhZHZhbmNlX2Nsb2NrIHQgfm5vdzooVGltZV9ucy5ub3cgKCkpO1xuICAgIGlmIGNhbl9ydW5fYV9qb2IgdCB0aGVuIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgKCogUmVzZXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHdoZW4gd2UncmUgbm90IGluXG4gICAgIGEgam9iLCBbY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IG1haW5fZXhlY3V0aW9uX2NvbnRleHRdLiAqKVxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0Lm1haW5fZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gZmluaXNoZWRcIjtcbiAgT3B0aW9uLml0ZXIgKHVuY2F1Z2h0X2V4biB0KSB+ZjpFcnJvci5yYWlzZVxuOztcblxubGV0IG1ha2VfYXN5bmNfdW51c2FibGUgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICB0LmNoZWNrX2FjY2Vzc1xuICA8LSBTb21lXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIHJhaXNlX3MgWyVzZXhwIFwiQXN5bmMgc2NoZWR1bGVyIGlzIHVudXNhYmxlIGR1ZSB0byBbbWFrZV9hc3luY191bnVzYWJsZV1cIl0pXG47O1xuXG5sZXQgcmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3MgKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJyZXNldF9pbl9mb3JrZWRfcHJvY2Vzc1wiO1xuICAoKiBUaGVyZSBpcyBubyBuZWVkIHRvIGVtcHR5IFttYWluX21vbml0b3JfaG9sZV0uICopXG4gIFNjaGVkdWxlci4odF9yZWYgOj0gY3JlYXRlICgpKVxuOztcblxubGV0IGNoZWNrX2ludmFyaWFudHMgdCA9IHQuY2hlY2tfaW52YXJpYW50c1xubGV0IHNldF9jaGVja19pbnZhcmlhbnRzIHQgYiA9IHQuY2hlY2tfaW52YXJpYW50cyA8LSBiXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIHQgYiA9IHQucmVjb3JkX2JhY2t0cmFjZXMgPC0gYlxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgdC55aWVsZFxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPyhtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ID0gZmFsc2UpIHQgPVxuICBpZiBtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSBCdmFyLndhaXQgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpblxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIueWllbGRfZXZlcnkgZ290IG5vbnBvc2l0aXZlIGNvdW50XCIgKG4gOiBpbnQpXVxuICBlbHNlIGlmIG4gPSAxXG4gIHRoZW4gc3RhZ2UgKGZ1biB0IC0+IHlpZWxkIHQpXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF91bnRpbF95aWVsZCA9IHJlZiBuIGluXG4gICAgc3RhZ2UgKGZ1biB0IC0+XG4gICAgICBkZWNyIGNvdW50X3VudGlsX3lpZWxkO1xuICAgICAgaWYgIWNvdW50X3VudGlsX3lpZWxkID4gMFxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb3VudF91bnRpbF95aWVsZCA6PSBuO1xuICAgICAgICB5aWVsZCB0KSkpXG47O1xuXG5sZXQgdG90YWxfY3ljbGVfdGltZSB0ID1cbiAgKCogQWRqdXN0IGZvciB0aGUgZmFjdCB0aGUgY2FsbGVyJ3MgcHJvYmFibHkgYW4gQXN5bmMgam9iLiAqKVxuICBpZiB0LmluX2N5Y2xlXG4gIHRoZW4gKFxuICAgIGxldCB0aGlzX2N5Y2xlX3RpbWUgPSBUaW1lX25zLihkaWZmIChub3cgKCkpIHQuY3ljbGVfc3RhcnQpIGluXG4gICAgVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyB0aGlzX2N5Y2xlX3RpbWUpKVxuICBlbHNlIHQudG90YWxfY3ljbGVfdGltZVxuOztcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmsgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdvcmtlcl9yZXN1bHQgPSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHRcblxuXG4gIGxldCByZWMgcnVuIHQgPSBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nOjFfMDAwXG5cbiAgYW5kIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiB5aWVsZF90aGVuX3J1biB0XG4gICAgZWxzZSBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIChcbiAgICAgIGxldCB3b3JrZXIgPSBEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICAgIHNldF9leGVjdXRpb25fY29udGV4dCB0IHdvcmtlci5leGVjdXRpb25fY29udGV4dDtcbiAgICAgIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG5cbiAgYW5kIHlpZWxkX3RoZW5fcnVuIHQgPVxuICAgIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gRGVmZXJyZWQudXBvbiAoeWllbGQgdCkgKGZ1biAoKSAtPiBydW4gdClcblxuICBhbmQgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQpO1xuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiAoXG4gICAgICBEZXF1ZS5lbnF1ZXVlX2Zyb250IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyB3b3JrZXI7XG4gICAgICB5aWVsZF90aGVuX3J1biB0KVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nIC0gMSBpblxuICAgICAgbWF0Y2ggd29ya2VyLmV4ZWMgKCkgd2l0aFxuICAgICAgfCBGaW5pc2hlZCAtPiBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IE5vdF9maW5pc2hlZCAtPiBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBidCk7XG4gICAgICAgIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgfmYgPVxuICAgIGxldCB0ID0gdCAoKSBpblxuICAgIGxldCBxdWV1ZSA9IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgIGxldCBydW5uaW5nID0gbm90IChEZXF1ZS5pc19lbXB0eSBxdWV1ZSkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkgfnByaW9yaXR5Okxvd1xuICAgIGluXG4gICAgRGVxdWUuZW5xdWV1ZV9iYWNrIHF1ZXVlIHsgZXhlY3V0aW9uX2NvbnRleHQ7IGV4ZWMgPSBmIH07XG4gICAgaWYgbm90IHJ1bm5pbmcgdGhlbiBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2JlbmNoID0gc3RydWN0XG4gIGxldCBhZHZhbmNlX2Nsb2NrID0gYWR2YW5jZV9jbG9ja1xuZW5kXG5cbmxldCBpbl9jeWNsZSB0ID0gdC5pbl9jeWNsZVxuIiwidHlwZSB0ID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBIYW5kbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyXG5cbmxldCBlbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPSBlbnF1ZXVlICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSlcbmxldCBjeWNsZV9jb3VudCAoKSA9IGN5Y2xlX2NvdW50ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0X25zICgpID0gY3ljbGVfc3RhcnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnQgKCkgPSBUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCAoY3ljbGVfc3RhcnRfbnMgKCkpXG5sZXQgY3ljbGVfdGltZXNfbnMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOkZuLmlkXG5sZXQgY3ljbGVfdGltZXMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOlRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RcbmxldCB0b3RhbF9jeWNsZV90aW1lICgpID0gdG90YWxfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsYXN0X2N5Y2xlX3RpbWUgKCkgPSBsYXN0X2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbG9uZ19jeWNsZXMgfmF0X2xlYXN0ID0gbG9uZ19jeWNsZXMgKHQgKCkpIH5hdF9sZWFzdFxubGV0IGV2ZW50X3ByZWNpc2lvbl9ucyAoKSA9IGV2ZW50X3ByZWNpc2lvbiAodCAoKSlcbmxldCBldmVudF9wcmVjaXNpb24gKCkgPSBUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChldmVudF9wcmVjaXNpb25fbnMgKCkpXG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgaSA9XG4gIHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSkgaVxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICgpID0gbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIGJvb2wgPSBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgKHQgKCkpIGJvb2xcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAoKSA9IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICh0ICgpKVxubGV0IHlpZWxkICgpID0geWllbGQgKHQgKCkpXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAoKSA9XG4gIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICh0ICgpKVxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgbGV0IHlpZWxkX2V2ZXJ5ID0gU3RhZ2VkLnVuc3RhZ2UgKHlpZWxkX2V2ZXJ5IH5uKSBpblxuICBsZXQgdCA9IHQgKCkgaW5cbiAgc3RhZ2UgKGZ1biAoKSAtPiB5aWVsZF9ldmVyeSB0KVxuOztcblxubGV0IG51bV9qb2JzX3J1biAoKSA9IG51bV9qb2JzX3J1biAodCAoKSlcbmxldCBudW1fcGVuZGluZ19qb2JzICgpID0gbnVtX3BlbmRpbmdfam9icyAodCAoKSlcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiA9IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW5cbiAgbGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgKCkgPSBsYXN0X2N5Y2xlX251bV9qb2JzICh0ICgpKVxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGYgPSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgKHQgKCkpIH5mXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfZW5kIGYgPSBydW5fZXZlcnlfY3ljbGVfZW5kICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayAodCAoKSkgfmZcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHggPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZiB4XG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBTY2hlZHVsZXJcbiIsIigqKiBTY2hlZHVsZSBqb2JzIHRvIHJ1biBhdCBhIHRpbWUgaW4gdGhlIGZ1dHVyZS5cblxuICAgIFRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIHVzZXMgYSBoZWFwIG9mIGV2ZW50cywgb25lIGZvciBlYWNoIGpvYiB0aGF0IG5lZWRzIHRvXG4gICAgcnVuIGluIHRoZSBmdXR1cmUuICBUaGUgQXN5bmMgc2NoZWR1bGVyIGlzIHJlc3BvbnNpYmxlIGZvciB3YWtpbmcgdXAgYXQgdGhlIHJpZ2h0IHRpbWVcbiAgICB0byBydW4gdGhlIGpvYnMuICopXG5cbm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgVGltZW91dFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICAoKiogW3J1bl9hdCB0aW1lIGYgYV0gcnVucyBbZiBhXSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIFt0aW1lXS4gIElmIFt0aW1lXSBpcyBpbiB0aGVcbiAgICAgIHBhc3QsIHRoZW4gW3J1bl9hdF0gd2lsbCBpbW1lZGlhdGVseSBzY2hlZHVsZSBhIGpvYiBbdF0gdGhhdCB3aWxsIHJ1biBbZiBhXS4gIEluIG5vXG4gICAgICBzaXR1YXRpb24gd2lsbCBbcnVuX2F0XSBhY3R1YWxseSBjYWxsIFtmXSBpdHNlbGYuICBUaGUgY2FsbCB0byBbZl0gd2lsbCBhbHdheXMgYmUgaW5cbiAgICAgIGFub3RoZXIgam9iLiAqKVxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFtydW5fYWZ0ZXJdIGlzIGxpa2UgW3J1bl9hdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW5cbiAgICAgIGFic29sdXRlIHRpbWUuICopXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbYXQgdGltZV0gcmV0dXJucyBhIGRlZmVycmVkIFtkXSB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYXMgc29vbiBhcyBwb3NzaWJsZVxuICAgICAgYWZ0ZXIgW3RpbWVdLiAqKVxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFthZnRlcl0gaXMgbGlrZSBbYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuIGFic29sdXRlXG4gICAgICB0aW1lLiAqKVxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3dpdGhfdGltZW91dCBzcGFuIGRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYWZ0ZXIgZWl0aGVyXG4gICAgICBbc3Bhbl0gZWxhcHNlcyBvciBbZF0gaXMgZGV0ZXJtaW5lZCwgcmV0dXJuaW5nIGVpdGhlciBbYFRpbWVvdXRdIG9yIFtgUmVzdWx0XVxuICAgICAgZGVwZW5kaW5nIG9uIHdoaWNoIG9uZSBzdWNjZWVkZWQgZmlyc3QuICBBdCB0aGUgdGltZSB0aGUgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCwgYm90aCB0aGluZ3MgbWF5IGhhdmUgaGFwcGVuZWQsIGluIHdoaWNoIGNhc2UgW2BSZXN1bHRdIGlzIGdpdmVuXG4gICAgICBwcmVmZXJlbmNlLiAqKVxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuXG4gICgqKiBFdmVudHMgcHJvdmlkZSB2YXJpYW50cyBvZiBbcnVuX2F0XSBhbmQgW3J1bl9hZnRlcl0gd2l0aCB0aGUgYWJpbGl0eSB0byBhYm9ydCBvclxuICAgICAgcmVzY2hlZHVsZSBhbiBldmVudCB0aGF0IGhhc24ndCB5ZXQgaGFwcGVuZWQuICBPbmNlIGFuIGV2ZW50IGhhcHBlbnMgb3IgaXMgYWJvcnRlZCxcbiAgICAgIEFzeW5jIGRvZXNuJ3QgdXNlIGFueSBzcGFjZSBmb3IgdHJhY2tpbmcgaXQuICopXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgICgqKiBJZiBbc3RhdHVzXSByZXR1cm5zIFtTY2hlZHVsZWRfYXQgdGltZV0sIGl0IGlzIHBvc3NpYmxlIHRoYXQgW3RpbWUgPCBUaW1lLm5vdyAoKV1cbiAgICAgICAgaWYgQXN5bmMncyBzY2hlZHVsZXIgaGFzbid0IHlldCBnb3R0ZW4gdGhlIGNoYW5jZSB0byB1cGRhdGUgaXRzIGNsb2NrLCBlLmcuLCBkdWVcbiAgICAgICAgdG8gdXNlciBqb2JzIHJ1bm5pbmcuICopXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcblxuICAgICgqKiBMZXQgW3QgPSBydW5fYXQgdGltZSBmIHpdLiAgQXQgW3RpbWVdLCB0aGlzIHJ1bnMgW2Ygel0gYW5kIHRyYW5zaXRpb25zIFtzdGF0dXMgdF1cbiAgICAgICAgdG8gW0hhcHBlbmVkIGhdLCB3aGVyZSBbaF0gaXMgcmVzdWx0IG9mIFtmIHpdLlxuXG4gICAgICAgIE1vcmUgcHJlY2lzZWx5LCBhdCBbdGltZV0sIHByb3ZpZGVkIFthYm9ydCB0IGFdIGhhcyBub3QgcHJldmlvdXNseSBiZWVuIGNhbGxlZCxcbiAgICAgICAgdGhpcyB3aWxsIGNhbGwgW2Ygel0sIHdpdGggdGhlIGd1YXJhbnRlZSB0aGF0IFtzdGF0dXMgdCA9IFNjaGVkdWxlZF9hdCB0aW1lXS4gIElmXG4gICAgICAgIFtmIHpdIHJldHVybnMgW2hdIGFuZCBkaWQgbm90IGNhbGwgW2Fib3J0IHQgYV0sIHRoZW4gW3N0YXR1cyB0XSBiZWNvbWVzIFtIYXBwZW5lZFxuICAgICAgICBoXS4gIElmIFtmIHpdIGNhbGxzIFthYm9ydCB0IGFdLCB0aGVuIHRoZSByZXN1bHQgb2YgW2ZdIGlzIGlnbm9yZWQsIGFuZCBbc3RhdHVzIHRdXG4gICAgICAgIGlzIFtBYm9ydGVkIGFdLlxuXG4gICAgICAgIElmIFtmIHpdIHJhaXNlcywgdGhlbiBbc3RhdHVzIHRdIGRvZXMgbm90IHRyYW5zaXRpb24gYW5kIHJlbWFpbnMgW1NjaGVkdWxlZF9hdFxuICAgICAgICB0aW1lXSwgYW5kIHRoZSBleGNlcHRpb24gaXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbcnVuX2F0XSB3YXNcbiAgICAgICAgY2FsbGVkLiAqKVxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgKCoqIFthYm9ydCB0XSBjaGFuZ2VzIFtzdGF0dXMgdF0gdG8gW0Fib3J0ZWRdIGFuZCByZXR1cm5zIFtPa10sIHVubGVzcyBbdF1cbiAgICAgICAgcHJldmlvdXNseSBoYXBwZW5lZCBvciB3YXMgcHJldmlvdXNseSBhYm9ydGVkLiAqKVxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcblxuICAgICgqKiBbYWJvcnRfZXhuIHQgYV0gcmV0dXJucyBbdW5pdF0gaWYgW2Fib3J0IHQgYSA9IGBPa10sIGFuZCBvdGhlcndpc2UgcmFpc2VzLiAqKVxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgICgqKiBbYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEpXS4gKilcbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgKCoqIFtyZXNjaGVkdWxlX2F0IHRdIGFuZCBbcmVzY2hlZHVsZV9hZnRlciB0XSBjaGFuZ2UgdGhlIHRpbWUgdGhhdCBbdF0gd2lsbCBmaXJlLCBpZlxuICAgICAgICBwb3NzaWJsZSwgYW5kIGlmIG5vdCwgZ2l2ZSBhIHJlYXNvbiB3aHkuICBMaWtlIFtydW5fYXRdLCBpZiB0aGUgcmVxdWVzdGVkIHRpbWUgaXNcbiAgICAgICAgaW4gdGhlIHBhc3QsIHRoZSBldmVudCB3aWxsIGJlIHNjaGVkdWxlZCB0byBydW4gaW1tZWRpYXRlbHkuICBJZiBbcmVzY2hlZHVsZV9hdCB0XG4gICAgICAgIHRpbWUgPSBPa10sIHRoZW4gc3Vic2VxdWVudGx5IFtzY2hlZHVsZWRfYXQgdCA9IHRpbWVdLiAgKilcbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICAoKiogW2F0IHRpbWVdICAgIGlzIFtydW5fYXQgICAgdGltZSBpZ25vcmUgKCldLlxuICAgICAgICBbYWZ0ZXIgdGltZV0gaXMgW3J1bl9hZnRlciB0aW1lIGlnbm9yZSAoKV0uXG5cbiAgICAgICAgWW91IHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSB0aGUgW3J1bl8qXSBmdW5jdGlvbnMsIHdoaWNoIGFsbG93IHlvdSB0b1xuICAgICAgICBzeW5jaHJvbm91c2x5IHVwZGF0ZSBzdGF0ZSB2aWEgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHdoZW4gdGhlIGV2ZW50XG4gICAgICAgIHRyYW5zaXRpb25zIHRvIFtIYXBwZW5lZF0uICBUaGF0IGlzLCB0aGVyZSBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBydW5fYXQgdGltZSBmICgpIF19XG5cbiAgICAgICAgYW5kOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBhdCB0aW1lIGluXG4gICAgICAgICAgZmlyZWQgdFxuICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gZiAoKVxuICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKSBdfVxuXG4gICAgICAgIFdpdGggW3J1bl9hdF0sIGlmIFtzdGF0dXMgdCA9IEhhcHBlbmVkXSwgb25lIGtub3dzIHRoYXQgW2ZdIGhhcyBydW4uICBXaXRoIFthdF1cbiAgICAgICAgYW5kIFtmaXJlZF0sIG9uZSBkb2VzIG5vdCBrbm93IHdoZXRoZXIgW2ZdIGhhcyB5ZXQgcnVuOyBpdCBtYXkgc3RpbGwgYmUgc2NoZWR1bGVkXG4gICAgICAgIHRvIHJ1bi4gIFRodXMsIHdpdGggW2F0XSBhbmQgW2ZpcmVkXSwgaXQgaXMgZWFzeSB0byBpbnRyb2R1Y2UgYSByYWNlLiAgRm9yXG4gICAgICAgIGV4YW1wbGUsIGNvbnNpZGVyIHRoZXNlIHR3byBjb2RlIHNuaXBwZXRzOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5hZnRlciAoc2VjIDIuKSBpblxuICAgICAgICAgIHVwb24gKEV2ZW50LmZpcmVkIHQpIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpXG4gICAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IHByaW50ZiBcIlRpbWVyIGZpcmVkXCIpO1xuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5ydW5fYWZ0ZXIgKHNlYyAyLikgcHJpbnRmIFwiVGltZXIgZmlyZWRcIiBpblxuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIEluIGJvdGggc25pcHBldHMsIGlmIFtFdmVudC5hYm9ydF0gcmV0dXJucyBbT2tdLCBcIlRpbWVyIGZpcmVkXCIgaXMgbmV2ZXIgcHJpbnRlZC5cbiAgICAgICAgSG93ZXZlciwgdGhlIGZpcnN0IHNuaXBwZXQgbWlnaHQgcHJpbnQgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiIGFuZCB0aGVuXG4gICAgICAgIFwiVGltZXIgZmlyZWRcIi4gIFRoaXMgY29uZnVzZWQgb3JkZXJpbmcgY2Fubm90IGhhcHBlbiB3aXRoIFtFdmVudC5ydW5fYWZ0ZXJdLiAqKVxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdFxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgZW5kXG5cbiAgKCoqIFthdF92YXJ5aW5nX2ludGVydmFscyBmID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIG5leHQgZWxlbWVudCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgW2YgKCldIGFuZCB3YWl0aW5nIGZvciB0aGF0IGFtb3VudCBvZiB0aW1lLCBhbmQgdGhlbiBsb29waW5nXG4gICAgICB0byBkZXRlcm1pbmUgc3Vic2VxdWVudCBlbGVtZW50cy4gIFRoZSBzdHJlYW0gd2lsbCBlbmQgYWZ0ZXIgW3N0b3BdIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQuICopXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2F0X2ludGVydmFscyBpbnRlcnZhbCA/c3RhcnQgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgZWxlbWVudHMgd2lsbCBiZWNvbWVcbiAgICAgIGRldGVybWluZWQgYXQgbm9ubmVnYXRpdmUgaW50ZWdlciBtdWx0aXBsZXMgb2YgW2ludGVydmFsXSBhZnRlciB0aGUgW3N0YXJ0XSB0aW1lLFxuICAgICAgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZDpcblxuICAgICAge3ZcbiAgICAgICAgc3RhcnQgKyAwICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAxICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAyICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAzICogaW50ZXJ2YWxcbiAgICAgICAgLi4uXG4gICAgICB2fVxuXG4gICAgICBOb3RlIHRoYXQgb25seSBlbGVtZW50cyB0aGF0IGFyZSBzdHJpY3RseSBpbiB0aGUgZnV0dXJlIGV2ZXIgYmVjb21lIGRldGVybWluZWQuXG4gICAgICBJbiBwYXJ0aWN1bGFyLCBpZiBbc3RhcnRdIGlzIG5vdCBpbiB0aGUgZnV0dXJlLCBvciBbc3RhcnRdIGlzIG5vdCBwcm92aWRlZCxcbiAgICAgIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBlbGVtZW50IGJlZm9yZSB0aGUgW2ludGVydmFsXSBoYXMgcGFzc2VkLlxuXG4gICAgICBJZiB0aGUgaW50ZXJ2YWwgaXMgdG9vIHNtYWxsIG9yIHRoZSBDUFUgaXMgdG9vIGxvYWRlZCwgW2F0X2ludGVydmFsc10gd2lsbCBza2lwXG4gICAgICB1bnRpbCB0aGUgbmV4dCB1cGNvbWluZyBtdWx0aXBsZSBvZiBbaW50ZXJ2YWxdIGFmdGVyIFtzdGFydF0uICopXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZiAoKV0gZXZlcnkgW3NwYW5dIGFtb3VudCBvZiB0aW1lIHN0YXJ0aW5nIHdoZW5cbiAgICAgIFtzdGFydF0gYmVjb21lcyBkZXRlcm1pbmVkIGFuZCBzdG9wcGluZyB3aGVuIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuICBbZXZlcnknXVxuICAgICAgd2FpdHMgdW50aWwgdGhlIG91dGNvbWUgb2YgW2YgKCldIGJlY29tZXMgZGV0ZXJtaW5lZCBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIG5leHRcbiAgICAgIFtzcGFuXS5cblxuICAgICAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0IGlmIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQsIGV2ZW4gZHVyaW5nIGV2YWx1YXRpb24gb2YgW2ZdLFxuICAgICAgdGhlbiBbZl0gd2lsbCBub3QgYmUgY2FsbGVkIGFnYWluIGJ5IGEgc3Vic2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuXG5cbiAgICAgIEl0IGlzIGFuIGVycm9yIGZvciBbc3Bhbl0gdG8gYmUgbm9ucG9zaXRpdmUuXG5cbiAgICAgIFtjb250aW51ZV9vbl9lcnJvcl0gY29udHJvbHMgd2hhdCBzaG91bGQgaGFwcGVuIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlXSwgaXRlcmF0aW9uIG9ubHkgY29udGludWVzIGlmIFtmXSBzdWNjZXNzZnVsbHlcbiAgICAgIHJldHVybnMgYSBkZWZlcnJlZCBhbmQgdGhhdCBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLCBpdGVyYXRpb24gYWxzbyBjb250aW51ZXMgaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBJZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbiBhc3luY2hyb25vdXNseSwgdGhpcyBtYXkgY2F1c2UgdXMgdG8gcHJvY2VlZCB3aXRoIHRoZVxuICAgICAgbmV4dCBpdGVyYXRpb24gd2hpbGUgdGhlIHByZXZpb3VzIGNhbGwgdG8gW2ZdIGlzIHN0aWxsIHJ1bm5pbmcuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW2V2ZXJ5J10gd2FzXG4gICAgICBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLlxuXG4gICAgICBJZiBbZmluaXNoZWRdIGlzIHN1cHBsaWVkLCBbZXZlcnknXSB3aWxsIGZpbGwgaXQgb25jZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBiZWNvbWVcbiAgICAgIGRldGVybWluZWQ6IFtzdGFydF0sIFtzdG9wXSwgYW5kIHRoZSBvdXRjb21lIG9mIHRoZSBmaW5hbCBjYWxsIHRvIFtmXS4gKilcbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2V2ZXJ5ID9zdGFydCA/c3RvcCBzcGFuIGZdIGlzXG4gICAgICBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKV0uICopXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmKCldIGF0IGluY3JlbWVudHMgb2YgW3N0YXJ0ICsgaSAqXG4gICAgICBzcGFuXSBmb3Igbm9ubmVnYXRpdmUgaW50ZWdlcnMgW2ldLCB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLlxuICAgICAgSWYgdGhlIHJlc3VsdCBvZiBbZl0gaXMgbm90IGRldGVybWluZWQgZmFzdCBlbm91Z2ggdGhlbiB0aGUgbmV4dCBpbnRlcnZhbChzKVxuICAgICAgYXJlIHNraXBwZWQgc28gdGhhdCB0aGVyZSBhcmUgbmV2ZXIgbXVsdGlwbGUgY29uY3VycmVudCBpbnZvY2F0aW9ucyBvZiBbZl0gaW5cbiAgICAgIGZsaWdodC5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICBbcnVuX2F0X2ludGVydmFscyddIHdhcyBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLiAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGZdIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhblxuICAgICAgICAgIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKSBdfSAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2R1cmF0aW9uX29mIGZdIGludm9rZXMgW2YgKCldIGFuZCBtZWFzdXJlcyBob3cgbG9uZyBpdCB0YWtlcyBmcm9tIHRoZSBpbnZvY2F0aW9uXG4gICAgICB0byBhZnRlciB0aGUgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cblxuICAgICAgTm90ZSB0aGF0IHRoZSBtZWFzdXJlbWVudCBpcyBub3QgZXhhY3Q7IGJlY2F1c2UgaXQgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBtYXAgb24gdGhlXG4gICAgICBkZWZlcnJlZCwgdGhlIHRpbWluZyBhbHNvIGluY2x1ZGVzIHRoZSBkdXJhdGlvbiBvZiBqb2JzIGluIHRoZSBqb2IgcXVldWUgd2hlbiBbZiAoKV1cbiAgICAgIGlzIGRldGVybWluZWQuICopXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG5lbmRcblxuKCoqIFtDbG9ja19kZXByZWNhdGVkXSBpcyB1c2VkIGluIFtSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXSB0byBjcmVhdGUgYSBjbG9ja1xuICAgIG1vZHVsZSBpbiB3aGljaCBhbGwgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkLiAqKVxubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgc2NoZWR1bGVkX2F0IDogKF8sIF8pIHQgLT4gVGltZS50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgdmFsIGFib3J0IDogKCdhLCAnaCkgdCAtPiAnYSAtPiAoJ2EsICdoKSBBYm9ydF9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBGaXJlZCA9IFRpbWVfc291cmNlLkV2ZW50LkZpcmVkXG5cbiAgICB2YWwgZmlyZWQgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIEZpcmVkLnQgRGVmZXJyZWQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LlJlc2NoZWR1bGVfcmVzdWx0XG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hZnRlciA6ICgnYSwgJ2gpIHQgLT4gVGltZS5TcGFuLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoXywgdW5pdCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cbiAgZW5kXG5cbiAgdmFsIGF0X3ZhcnlpbmdfaW50ZXJ2YWxzXG4gICAgOiAgP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gKHVuaXQgLT4gVGltZS5TcGFuLnQpXG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGF0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnRcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeSdcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiA/ZmluaXNoZWQ6dW5pdCBJdmFyLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnlcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cbmVuZFxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2spIDogQ2xvY2tfZGVwcmVjYXRlZCA9IENcblxuICBtb2R1bGUgXyAoQyA6IENsb2NrX2RlcHJlY2F0ZWQpIDogQ2xvY2sgPSBDXG5lbmQgOlxuc2lnIGVuZClcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IENsb2NrX2ludGYuQ2xvY2tcbm1vZHVsZSB0eXBlIENsb2NrX2RlcHJlY2F0ZWQgPSBDbG9ja19pbnRmLkNsb2NrX2RlcHJlY2F0ZWRcblxubW9kdWxlIE9yX3RpbWVvdXQgPSBDbG9ja19pbnRmLk9yX3RpbWVvdXRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5cbmxldCB0aW1lX3NvdXJjZSAoKSA9IChTY2hlZHVsZXIudCAoKSkudGltZV9zb3VyY2UgfD4gVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXNcbmxldCBhZnRlciBzcGFuID0gVGltZV9zb3VyY2UuYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG5sZXQgYXQgdGltZSA9IFRpbWVfc291cmNlLmF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgY29tcHV0ZV9zcGFuID1cbiAgVGltZV9zb3VyY2UuYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgKHRpbWVfc291cmNlICgpKSBjb21wdXRlX3NwYW5cbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wIGludGVydmFsID1cbiAgVGltZV9zb3VyY2UuYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGludGVydmFsXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCAodGltZV9zb3VyY2UgKCkpIHNwYW4gZlxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZlxuOztcblxubGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG5sZXQgcnVuX2F0IHRpbWUgZiBhID0gVGltZV9zb3VyY2UucnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIGFcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWwgZlxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICAodGltZV9zb3VyY2UgKCkpXG4gICAgaW50ZXJ2YWxcbiAgICBmXG47O1xuXG5sZXQgd2l0aF90aW1lb3V0IHNwYW4gZCA9IFRpbWVfc291cmNlLndpdGhfdGltZW91dCAodGltZV9zb3VyY2UgKCkpIHNwYW4gZFxubGV0IGR1cmF0aW9uX29mIGYgPSBUaW1lX3NvdXJjZS5kdXJhdGlvbl9vZiAodGltZV9zb3VyY2UgKCkpIGZcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9zb3VyY2UuRXZlbnRcblxuICBsZXQgYWZ0ZXIgc3BhbiA9IGFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxuICBsZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gcnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbiAgbGV0IGF0IHRpbWUgPSBhdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcbiAgbGV0IHJ1bl9hdCB0aW1lIGYgeiA9IHJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiB6XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCBpIGIgPVxuICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0XG4gICAgICB0aGVuIEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgZWxzZSBmIGkgYiB0LihpKSA+Pj4gZnVuIGIgLT4gbG9vcCAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPSBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+IGYgaSBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSBpblxuICBBcnJheS5vZl9saXN0IChDb3JlLkxpc3QucmV2IGJzKVxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBBcnJheS5vZl9saXN0X3JldlxuICAgIChBcnJheS5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgQXJyYXkuZmlsdGVyX29wdFxuXG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCB0ID0gbWFwaSB0ID9ob3cgfmYgaW5cbiAgQXJyYXkuY29uY2F0IChBcnJheS50b19saXN0IHQpXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICB0aGVuIHJldHVybiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCViaW5kIGYgaSB0LihpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXV4IChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGF1eCAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXIgP2hvdyB0IH5mID0gaXRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgP2hvdyB0IH5mID0gY29uY2F0X21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0ID9ob3cgbiB+ZiA9IG1hcCA/aG93IChBcnJheS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIHQgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgIGIgOjogYnMpXG4gID4+fCBMaXN0LnJldlxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG47O1xuXG5sZXQgZmlsdGVyaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0ID9ob3cgfmYgaW5cbiAgTGlzdC5yZXYgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxubGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9IGZpbHRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3RcblxudHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG5sZXQgY2hhbmdlIHQgayB+ZiA9XG4gIGxldCVtYXAgb3B0ID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuY2hhbmdlIHQgayB+ZjooZnVuIF8gLT4gb3B0KVxuOztcblxubGV0IHVwZGF0ZSB0IGsgfmYgPVxuICBsZXQlbWFwIGRhdGEgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5zZXQgdCB+a2V5OmsgfmRhdGFcbjs7XG5cbmxldCBpdGVyX2tleXMgP2hvdyB0IH5mID0gTGlzdC5pdGVyID9ob3cgKE1hcC5rZXlzIHQpIH5mXG5sZXQgaXRlciA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoTWFwLmRhdGEgdCkgfmZcbmxldCBpdGVyaSA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoTWFwLnRvX2FsaXN0IHQpIH5mOihmdW4gKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbm1vZHVsZSBKb2IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgeyBrZXkgOiAnYVxuICAgIDsgZGF0YSA6ICdiXG4gICAgOyBtdXRhYmxlIHJlc3VsdCA6ICdjIG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuZW5kXG5cbmxldCBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmYgPVxuICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIHQgaW5cbiAgbGV0IHNlcXVlbmNlID0gTWFwLnRvX3NlcXVlbmNlIH5vcmRlcjpgSW5jcmVhc2luZ19rZXkgdCBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6QmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcbiAgICAgIH5mOihmdW4gcyAoa2V5LCBkYXRhKSB+ayAtPlxuICAgICAgICB1cG9uIChmIH5rZXkgfmRhdGEpIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBrIHNcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICBCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5hZGRfZXhuXG4gICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgayBzKSlcbiAgICAgIH5maW5pc2g6KGZ1biB4IC0+XG4gICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgIGl2YXJcbiAgICAgICAgICAoTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZVxuICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgKEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWUgeCkpKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPiBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmZcbiAgfCBgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfIC0+XG4gICAgbGV0IGpvYnMgPSByZWYgW10gaW5cbiAgICBsZXQgam9iX21hcCA9XG4gICAgICBNYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBsZXQgam9iID0geyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBOb25lIH0gaW5cbiAgICAgICAgam9icyA6PSBqb2IgOjogIWpvYnM7XG4gICAgICAgIGpvYilcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPVxuICAgICAgTGlzdC5pdGVyIH5ob3cgKEJhc2UuTGlzdC5yZXYgIWpvYnMpIH5mOihmdW5jdGlvblxuICAgICAgICB8IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gXyB9IGFzIGpvYiAtPlxuICAgICAgICAgIGxldCVtYXAgeCA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgIGpvYi5yZXN1bHQgPC0geClcbiAgICBpblxuICAgIE1hcC5maWx0ZXJfbWFwIGpvYl9tYXAgfmY6Sm9iLnJlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcl9rZXlzID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGtleSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciA/aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBtYXBpID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIHogPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBTb21lIHopXG47O1xuXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IG1lcmdlID9ob3cgdDEgdDIgfmYgPVxuICBmaWx0ZXJfbWFwXG4gICAgP2hvd1xuICAgIChNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5IHogLT4gU29tZSAoZnVuICgpIC0+IGYgfmtleSB6KSkpXG4gICAgfmY6KGZ1biB0aHVuayAtPiB0aHVuayAoKSlcbjs7XG5cbmxldCBhbGwgdCA9IG1hcCB0IH5mOkZuLmlkXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IHJlcmFpc2UgPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4biAtPiBFeG4ucmVyYWlzZSBleG4gXCJjYXVnaHQgZXhjZXB0aW9uIGluIG1lbW9pemVkIGZ1bmN0aW9uXCJcbjs7XG5cbmxldCBnZW5lcmFsICh0eXBlIGEpIChoYXNoYWJsZSA6IChtb2R1bGUgSGFzaGFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGEpKSBmID1cbiAgbGV0IG1vZHVsZSBIYXNoYWJsZSA9ICh2YWwgaGFzaGFibGUpIGluXG4gIGxldCBmID1cbiAgICBNZW1vLmdlbmVyYWwgfmhhc2hhYmxlOkhhc2hhYmxlLmhhc2hhYmxlIChmdW4gYSAtPlxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICAoZnVuICgpIC0+IGYgYSkpXG4gIGluXG4gIFN0YWdlZC5zdGFnZSAoZnVuIGEgLT4gZiBhID4+fCByZXJhaXNlKVxuOztcblxubGV0IHVuaXQgZiA9XG4gIGxldCBmID1cbiAgICBNZW1vLnVuaXQgKGZ1biAoKSAtPlxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICBmKVxuICBpblxuICBTdGFnZWQuc3RhZ2UgKGZ1biAoKSAtPiBmICgpID4+fCByZXJhaXNlKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE9wdGlvbi50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoU29tZSBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSBhIC0+IGYgYVxuICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQucmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBPcHRpb24ubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmVuZFxuXG4oKiBDb3BpZWQgdG8gW2VhZ2VyX2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gZXhuID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxubGV0IG9mX2V4bl9yZXN1bHQgdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbmxldCBlcnJvciBtc2cgdiBzZXhwX29mID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvciBtc2cgdiBzZXhwX29mKVxubGV0IGVycm9yX3Mgc2V4cCA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3JfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBtc2cpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IGtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRGVmZXJyZWQubWFwIHQgfmY6KGZ1biB0IC0+IE9yX2Vycm9yLnRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci51bmltcGxlbWVudGVkIG1zZylcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5maWx0ZXJfb2tfYXRfbGVhc3Rfb25lXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAobCwgW10pIChmdW4gKGwsIGVycm9ycykgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgZXJyb3JzID0gRXJyb3Iub2ZfbGlzdCAoTGlzdC5yZXYgZXJyb3JzKSBpblxuICAgICAgRGVmZXJyZWQucmV0dXJuIChgRmluaXNoZWQgKEVycm9yIGVycm9ycykpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgRGVmZXJyZWQubWFwIChmIGhkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBjdXJyZW50X2Vycm9yIC0+IGBSZXBlYXQgKHRsLCBjdXJyZW50X2Vycm9yIDo6IGVycm9ycylcbiAgICAgICAgfCBPayByZXN1bHQgLT4gYEZpbmlzaGVkIChPayByZXN1bHQpKSlcbjs7XG5cbmxldCBva191bml0ID0gcmV0dXJuICgpXG5cbmxldCB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwIChNb25pdG9yLnRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOihmdW5jdGlvblxuICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuICAgIHwgT2sgXyBhcyBvayAtPiBvaylcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOk9yX2Vycm9yLmpvaW5cbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBmb2xkaSBsaXN0IH5pbml0OmFjYyB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQlYmluZCBhY2MgPSBmIGkgYWNjIGhkIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSBhY2MgdGxcbiAgICBpblxuICAgIGxvb3AgMCBhY2MgbGlzdFxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCA9IGFsbFxuICBsZXQgYWxsX3VuaXQgPSBhbGxfdW5pdFxuXG4gIGxldCBpdGVyaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgeCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gICAgaW5cbiAgICBmaW5kX21hcGkgdCB+ZiAwXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5cbiAgbGV0IGZpbmRpIHQgfmYgPVxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBmaW5kX21hcCB0IH5mOihmdW4gZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP2hvdyB0IH5mID0gaXRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IHJlYyByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIG1hdGNoJWJpbmQgZiBzdGF0ZSB3aXRoXG4gIHwgYFJlcGVhdCBzdGF0ZSAtPiByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZlxuICB8IGBGaW5pc2hlZCBzdGF0ZSAtPiByZXR1cm4gc3RhdGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3RcblxuKCogV2UgaW1wbGVtZW50IGFsbCBvZiB0aGUgW1F1ZXVlXSBvcGVyYXRpb25zIGJ5IGNvbnZlcnRpbmcgdGhlIHF1ZXVlIHRvIGEgbGlzdCBhbmQgdGhlblxuICAgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgW0xpc3RdIG9wZXJhdGlvbi4gIFdlIHVzZSBsaXN0cyByYXRoZXIgdGhhbiBhcnJheXMgYmVjYXVzZVxuICAgYXJyYXlzIGxvbmdlciB0aGFuIGEgY2VydGFpbiBsZW5ndGggYXJlIGFsbG9jYXRlZCBpbiB0aGUgbWFqb3IgaGVhcCwgd2hpY2ggY2FuIGNhdXNlXG4gICB1bm5lY2Vzc2FyeSBwcm9tb3Rpb24gb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS4gIEFsc28sIHdoZW4gb25lIGlzIGZvbGRpbmcgb3JcbiAgIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5LCB0aGUgZW50aXJlIGFycmF5IG11c3QgYmUga2VwdCBhbGl2ZS4gIFdoZW4gZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYSBsaXN0LCBvbmx5IHRoZSByZW1haW5pbmcgdGFpbCBvZiB0aGUgbGlzdCBpcyBrZXB0IGFsaXZlLiAgU28sIHVzaW5nXG4gICBhcnJheXMgcmF0aGVyIHRoYW4gbGlzdHMgd291bGQgaW5jcmVhc2UgdGhlIGxpdmUtc3BhY2UgbmVlZGVkIGJ5IHRoZSBwcm9ncmFtLiAqKVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBhbGwgdCA9IExpc3QuYWxsIChRdWV1ZS50b19saXN0IHQpID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgYWxsX3VuaXQgdCA9IExpc3QuYWxsX3VuaXQgKFF1ZXVlLnRvX2xpc3QgdClcbmxldCBpdGVyID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgaXRlcmkgP2hvdyB0IH5mID0gTGlzdC5pdGVyaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgbWFwID9ob3cgdCB+ZiA9IExpc3QubWFwID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBtYXBpID9ob3cgdCB+ZiA9IExpc3QubWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgaW5pdCA/aG93IG4gfmYgPSBMaXN0LmluaXQgP2hvdyBuIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBMaXN0LmZpbHRlcl9tYXAgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcGkgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxuXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPVxuICBMaXN0LmNvbmNhdF9tYXAgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIHggLT4gZiB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcGkgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIGkgeCAtPiBmIGkgeCA+PnwgUXVldWUudG9fbGlzdClcbiAgPj58IFF1ZXVlLm9mX2xpc3Rcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID0gTGlzdC5maW5kX21hcCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRfbWFwaSB0IH5mID0gTGlzdC5maW5kX21hcGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kaSB0IH5mID0gTGlzdC5maW5kaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBMaXN0LmZvcl9hbGxpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IExpc3QuZXhpc3RzaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbigqIFtmb2xkX21hcGkgP2hvdyB0IH5pbml0IH5tYXBpX2YgfmZvbGRfZl0gaXMgYSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIG9mOlxuXG4gICB7W1xuICAgICBmb2xkIH5pbml0IH5mOihmdW4gYiBhIC0+IHJldHVybiAoZm9sZF9mIGIgYSkpIChtYXBpIHQgP2hvdyB+ZjptYXBpX2YpIF19XG5cbiAgIEl0IGF2b2lkcyBjcmVhdGluZyB0aGUgaW50ZXJtZWRpYXRlIHNlcXVlbmNlIHRoYXQgd291bGQgcmVzdWx0IGZyb20gW21hcGldLCBhbmRcbiAgIGFsbG93cyB0aGUgW2ZvbGRdIHRvIHByb2NlZWQgY29uY3VycmVudGx5IHdpdGggdGhlIFttYXBpXSwgc28gdGhhdCBvbmUgY2FuIGFjY3VtdWxhdGVcbiAgIHRoZSByZXN1bHQgYXMgc29vbiBhcyBwb3NzaWJsZSwgcG9zc2libHkgYXZvaWRpbmcgY3JlYXRpbmcgYW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVyZVxuICAgKGUuZy4gW2l0ZXJpXSBhbmQgW2ZpbHRlcl9tYXBdIHVzZXMgW2ZvbGRfbWFwaV0gdG8gZG8gdGhpcykuICopXG5sZXQgZm9sZF9tYXBpXG4gICAgICAodHlwZSBhIGIgYylcbiAgICAgID8oaG93ID0gYFNlcXVlbnRpYWwpXG4gICAgICAodCA6IGEgU2VxdWVuY2UudClcbiAgICAgIH4oaW5pdCA6IGMpXG4gICAgICB+KG1hcGlfZiA6IGludCAtPiBhIC0+IGIgRGVmZXJyZWQudClcbiAgICAgIH4oZm9sZF9mIDogYyAtPiBiIC0+IGMpXG4gIDogYyBEZWZlcnJlZC50XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPlxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjKSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJldHVybiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxldCViaW5kIGIgPSBtYXBpX2YgaSBhIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSB0IChmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgaW5pdFxuICB8IGBQYXJhbGxlbCAtPlxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY1xuICAgICAgfCBTb21lIChhLCB0KSAtPlxuICAgICAgICBsb29wXG4gICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgIHRcbiAgICAgICAgICAobGV0JWJpbmQgYiA9IG1hcGlfZiBpIGEgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBsZXQgdGhyb3R0bGUgPSBUaHJvdHRsZS5jcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIGluXG4gICAgKCogW2xvb3BdIGZvcmNlcyB0aGUgaW5wdXQgc2VxdWVuY2UgYW5kIGVucXVldWVzIGEgdGhyb3R0bGUgam9iIG9ubHkgaWYgdGhlcmUgaXNcbiAgICAgICBjYXBhY2l0eSBhdmFpbGFibGUuICopXG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbGV0JWJpbmQgKCkgPSBUaHJvdHRsZS5jYXBhY2l0eV9hdmFpbGFibGUgdGhyb3R0bGUgaW5cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY1xuICAgICAgfCBTb21lIChhLCB0KSAtPlxuICAgICAgICBsb29wXG4gICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgIHRcbiAgICAgICAgICAobGV0JWJpbmQgYiA9IFRocm90dGxlLmVucXVldWUgdGhyb3R0bGUgKGZ1biAoKSAtPiBtYXBpX2YgaSBhKSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgIHRcbiAgICB+aW5pdDooMCwgaW5pdClcbiAgICB+ZjooZnVuIChpLCBiKSBhIH5rIC0+XG4gICAgICBsZXQlYmluZCBiID0gZiBpIGIgYSBpblxuICAgICAgayAoaSArIDEsIGIpKVxuICAgIH5maW5pc2g6KGZ1biAoXywgYikgLT4gcmV0dXJuIGIpXG47O1xuXG4oKiBbZm9sZF0gaXMgbm90IGltcGxlbWVudGVkIGluIHRlcm1zIG9mIFtmb2xkaV0gdG8gc2F2ZSB0aGUgaW50ZXJtZWRpYXRlIGNsb3N1cmVcbiAgIGFsbG9jYXRpb24uICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkIHQgfmluaXQgfmY6KGZ1biBiIGEgfmsgLT4gZiBiIGEgPj49IGspIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgYWxsIHQgPVxuICBsZXQlbWFwIHJlcyA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWNjdW0gZCAtPlxuICAgICAgbGV0JW1hcCBhID0gZCBpblxuICAgICAgYSA6OiBhY2N1bSlcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgcmVzKVxuOztcblxubGV0IGFsbF91bml0IHQgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IHYpXG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmV0dXJuIE5vbmVcbiAgICB8IFNvbWUgKHYsIHJlc3QpIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgdiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSByZXN0IH5mIChpICsgMSlcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICBpblxuICBmaW5kX21hcGkgdCB+ZiAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJpID9ob3cgdCB+ZiA6IHVuaXQgRGVmZXJyZWQudCA9XG4gIGZvbGRfbWFwaSA/aG93IHQgfm1hcGlfZjpmIH5pbml0OigpIH5mb2xkX2Y6KGZ1biAoKSAoKSAtPiAoKSlcbjs7XG5cbmxldCBtYXBpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaSA/aG93IHQgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSkgfmluaXQ6W10gfmZvbGRfZjooZnVuIGJzIGIgLT4gYiA6OiBicylcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgYnMpXG47O1xuXG4oKiBbZmlsdGVyX21hcGldIGlzIGltcGxlbWVudGVkIHVzaW5nIFtmb2xkX21hcGldIHJhdGhlciB0aGFuIFttYXBdIHNvIHRoYXQgd2UgbmV2ZXIgbmVlZFxuICAgdG8ga2VlcCBhIGxvbmcgc3RyZWFtIG9mIGludGVybWVkaWF0ZSBbTm9uZV0gcmVzdWx0cyBpbiB0aGUgYWNjdW11bGF0b3IsIG9ubHkgdG8gbGF0ZXJcbiAgIGZpbHRlciB0aGVtIGFsbCBvdXQuICopXG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpXG4gICAgICB0XG4gICAgICA/aG93XG4gICAgICB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKVxuICAgICAgfmluaXQ6W11cbiAgICAgIH5mb2xkX2Y6KGZ1biBicyBtYXliZV92IC0+XG4gICAgICAgIG1hdGNoIG1heWJlX3Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYnNcbiAgICAgICAgfCBTb21lIGIgLT4gYiA6OiBicylcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmYgPj58IFNlcXVlbmNlLmNvbmNhdFxuXG5sZXQgZmlsdGVyaSA/aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCVtYXAgZiBpIGEgd2l0aFxuICAgIHwgdHJ1ZSAtPiBTb21lIGFcbiAgICB8IGZhbHNlIC0+IE5vbmUpXG47O1xuXG5sZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9IGZpbHRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKFNlcXVlbmNlLmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIENsb2NrX25zID0gQ2xvY2tfbnNcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFRpbWUgPSBUaW1lXG5tb2R1bGUgQXN5bmNfa2VybmVsX3NjaGVkdWxlciA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXJcbm1vZHVsZSBEYXRlID0gRGF0ZVxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBldmVyeSA9IENsb2NrX25zLmV2ZXJ5XG5sZXQgd2l0aF90aW1lb3V0ID0gQ2xvY2tfbnMud2l0aF90aW1lb3V0XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuXG5sZXQgc2hvd19kZWJ1Z19tZXNzYWdlcyA9IHJlZiBmYWxzZVxubGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiBmYWxzZVxuXG5tb2R1bGUgRmx1c2hlZF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBPa1xuICAgIHwgYFJlYWRlcl9jbG9zZWRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCBjb21iaW5lIChsIDogdCBEZWZlcnJlZC50IGxpc3QpID1cbiAgICBsZXQlbWFwIGwgPSBEZWZlcnJlZC5hbGwgbCBpblxuICAgIG1hdGNoIExpc3QubWVtIGwgYFJlYWRlcl9jbG9zZWQgfmVxdWFsIHdpdGhcbiAgICB8IHRydWUgLT4gYFJlYWRlcl9jbG9zZWRcbiAgICB8IGZhbHNlIC0+IGBPa1xuICA7O1xuZW5kXG5cbigqIEEgW0NvbnN1bWVyLnRdIGFjdHMgYXMgdGhlIG1vbml0b3Igb2Ygc29tZSBwcm9jZXNzIHRoYXQgcmVhZHMgdmFsdWVzIGZyb20gYSBwaXBlIGFuZFxuICAgcHJvY2Vzc2VzIHRoZW0sIGFsbG93aW5nIHRoYXQgcHJvY2VzczpcbiAgIC0gdG8gY29tbXVuaWNhdGUgdGhhdCBpdCBoYXMgdGFrZW4gcmVzcG9uc2liaWxpdHkgZm9yIHRoZSB2YWx1ZXNcbiAgIC0gdG8gc2lnbmFsIHdoZW4gaXQgaGFzIGZpbmlzaGVkIHdpdGggdGhlIHZhbHVlcyB0byBpbnRlcmVzdGVkIHBhcnRpZXMgKHZpYVxuICAgICBbZG93bnN0cmVhbV9mbHVzaGVkXSlcblxuICAgSXQgaXMgdXNlZCBpbiB0d28gc3RlcHM6XG5cbiAgIDEuIGNhbGxpbmcgW0NvbnN1bWVyLnN0YXJ0XSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGNvbnN1bWVyIHRha2VzIHZhbHVlcyBvdXQgb2YgdGhlXG4gICBQaXBlIHZpYSBbcmVhZF0gb3IgW3JlYWQnXS5cblxuICAgMi4gY2FsbGluZyBbQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV0uXG5cbiAgIEJ5IGNhbGxpbmcgW3ZhbHVlc19zZW50X2Rvd25zdHJlYW1dIG9uZSBhc3NlcnRzIHRoYXQgdGhlIFtkb3duc3RyZWFtX2ZsdXNoZWRdIGZ1bmN0aW9uXG4gICBzdXBwbGllZCB0byBbY3JlYXRlXSB3aWxsIG5vdyB3YWl0IGZvciB0aGlzIHZhbHVlLlxuXG4gICBJZiBubyBbQ29uc3VtZXIudF0gaXMgc3VwcGxpZWQgd2hlbiBhIHZhbHVlIGlzIHJlYWQgdGhlbiB0aGUgdmFsdWUgaXMgZGVmaW5lZCB0byBiZVxuICAgZmx1c2hlZCBhdCB0aGF0IHRpbWUuICopXG5tb2R1bGUgQ29uc3VtZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogIHBpcGVfaWQ6aW50XG4gICAgLT4gZG93bnN0cmVhbV9mbHVzaGVkOih1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAtPiB0XG5cbiAgdmFsIHBpcGVfaWQgOiB0IC0+IGludFxuICB2YWwgc3RhcnQgOiB0IC0+IHVuaXRcbiAgdmFsIHZhbHVlc19zZW50X2Rvd25zdHJlYW0gOiB0IC0+IHVuaXRcbiAgdmFsIHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgOiB0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBwaXBlX2lkIDogaW50XG4gICAgOyAoKiBbdmFsdWVzX3JlYWRdIHJlZmxlY3RzIHdoZXRoZXIgdmFsdWVzIHRoZSBjb25zdW1lciBoYXMgcmVhZCBmcm9tIHRoZSBwaXBlIGhhdmUgYmVlblxuICAgICAgICAgc2VudCBkb3duc3RyZWFtIG9yIGlmIG5vdCwgaG9sZHMgYW4gaXZhciB0aGF0IGlzIHRvIGJlIGZpbGxlZCB3aGVuIHRoZXkgYXJlLiAqKVxuICAgICAgbXV0YWJsZSB2YWx1ZXNfcmVhZCA6XG4gICAgICAgIFsgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gb2YgdW5pdCBJdmFyLnQgXVxuICAgIDsgKCogW2Rvd25zdHJlYW1fZmx1c2hlZCAoKV0gcmV0dXJucyB3aGVuIGFsbCBwcmlvciB2YWx1ZXMgdGhhdCB0aGUgY29uc3VtZXIgaGFzXG4gICAgICAgICBwYXNzZWQgZG93bnN0cmVhbSBoYXZlIGJlZW4gZmx1c2hlZCBhbGwgdGhlIHdheSBkb3duIHRoZSBjaGFpbiBvZiBwaXBlcy4gKilcbiAgICAgIGRvd25zdHJlYW1fZmx1c2hlZCA6IHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnBpcGVfaWQ6aWdub3JlXG4gICAgICAgIH52YWx1ZXNfcmVhZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgICAgICAgICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgICAgfmRvd25zdHJlYW1fZmx1c2hlZDppZ25vcmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLkNvbnN1bWVyLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfnBpcGVfaWQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gICAgeyBwaXBlX2lkOyB2YWx1ZXNfcmVhZCA9IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtOyBkb3duc3RyZWFtX2ZsdXNoZWQgfVxuICA7O1xuXG4gIGxldCBzdGFydCB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBfIC0+ICgpXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gKEl2YXIuY3JlYXRlICgpKVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW1cbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+IHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gd2hlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHdoZW5fc2VudF9kb3duc3RyZWFtIGluXG4gICAgICB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX3JlYWQgPSBzdHJ1Y3RcbiAgKCogQSBbQmxvY2tlZF9yZWFkLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIHJlYWQgYXR0ZW1wdC4gIElmIHNvbWVvbmUgcmVhZHMgZnJvbSBhbiBlbXB0eVxuICAgICBwaXBlLCB0aGV5IGVucXVldWUgYSBbQmxvY2tlZF9yZWFkLnRdIGluIHRoZSBxdWV1ZSBvZiBbYmxvY2tlZF9yZWFkc10uICBMYXRlciwgd2hlblxuICAgICB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gYSBwaXBlLCB0aGF0IHdpbGwgY2F1c2Ugc29tZSBudW1iZXIgb2YgYmxvY2tlZCByZWFkcyB0byBiZVxuICAgICBmaWxsZWQsIGZpcnN0IGNvbWUgZmlyc3Qgc2VydmUuICBUaGUgYmxvY2tlZC1yZWFkIGNvbnN0cnVjdG9yIHNwZWNpZmllcyBob3cgbWFueVxuICAgICB2YWx1ZXMgYSByZWFkIHNob3VsZCBjb25zdW1lIGZyb20gdGhlIHBpcGUgd2hlbiBpdCBnZXRzIGl0cyB0dXJuLlxuXG4gICAgIElmIGEgcGlwZSBpcyBjbG9zZWQsIHRoZW4gYWxsIGJsb2NrZWQgcmVhZHMgd2lsbCBiZSBmaWxsZWQgd2l0aCBbYEVvZl0uICopXG4gIHR5cGUgJ2Egd2FudHMgPVxuICAgIHwgWmVybyBvZiBbIGBFb2YgfCBgT2sgXSBJdmFyLnRcbiAgICB8IE9uZSBvZiBbIGBFb2YgfCBgT2sgb2YgJ2EgXSBJdmFyLnRcbiAgICB8IEF0X21vc3Qgb2YgaW50ICogWyBgRW9mIHwgYE9rIG9mICdhIFF1ZXVlLnQgXSBJdmFyLnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2FudHMgOiAnYSB3YW50c1xuICAgIDsgY29uc3VtZXIgOiBDb25zdW1lci50IG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH53YW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBaZXJvIF8gfCBPbmUgXyAtPiAoKVxuICAgICAgICAgICAgIHwgQXRfbW9zdCAoaSwgXykgLT4gYXNzZXJ0IChpID4gMCkpKVxuICAgICAgICB+Y29uc3VtZXI6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBjb25zdW1lciAtPiBDb25zdW1lci5pbnZhcmlhbnQgY29uc3VtZXIpKVxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLkJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgd2FudHMgY29uc3VtZXIgPSB7IHdhbnRzOyBjb25zdW1lciB9XG5cbiAgbGV0IGlzX2VtcHR5IHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgT25lIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBBdF9tb3N0IChfLCBpKSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgOztcblxuICBsZXQgZmlsbF93aXRoX2VvZiB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gICAgfCBPbmUgaSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gICAgfCBBdF9tb3N0IChfLCBpKSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfZmx1c2ggPSBzdHJ1Y3RcbiAgKCogQSBbQmxvY2tlZF9mbHVzaC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCBmbHVzaCBvcGVyYXRpb24sIHdoaWNoIGNhbiBiZSBlbmFibGVkIGJ5IGFcbiAgICAgZnV0dXJlIHJlYWQuICBJZiBzb21lb25lIGRvZXMgW2ZsdXNoZWQgcF0gb24gYSBwaXBlLCB0aGF0IGJsb2NrcyB1bnRpbCBldmVyeXRoaW5nXG4gICAgIHRoYXQncyBjdXJyZW50bHkgaW4gdGhlIHBpcGUgYXQgdGhhdCBwb2ludCBoYXMgZHJhaW5lZCBvdXQgb2YgdGhlIHBpcGUuICBXaGVuIHdlIGNhbGxcbiAgICAgW2ZsdXNoZWRdLCBpdCByZWNvcmRzIHRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4gc28gZmFyIGluXG4gICAgIFtmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXS4gIFdlIGZpbGwgdGhlIFtGbHVzaC50XSB3aXRoIFtgT2tdIHdoZW4gdGhpcyBhbW91bnQgb2ZcbiAgICAgZGF0YSBoYXMgYmVlbiByZWFkIGZyb20gdGhlIHBpcGUuXG5cbiAgICAgQSBbQmxvY2tlZF9mbHVzaC50XSBjYW4gYWxzbyBiZSBmaWxsZWQgd2l0aCBbYFJlYWRlcl9jbG9zZWRdLCB3aGljaCBoYXBwZW5zIHdoZW4gdGhlXG4gICAgIHJlYWRlciBlbmQgb2YgdGhlIHBpcGUgaXMgY2xvc2VkLCBhbmQgd2UgYXJlIHRodXMgc3VyZSB0aGF0IHRoZSB1bnJlYWQgZWxlbWVudHNcbiAgICAgcHJlY2VkaW5nIHRoZSBmbHVzaCB3aWxsIG5ldmVyIGJlIHJlYWQuICopXG4gIHR5cGUgdCA9XG4gICAgeyBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIDogaW50XG4gICAgOyByZWFkeSA6IFsgYE9rIHwgYFJlYWRlcl9jbG9zZWQgXSBJdmFyLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgZmlsbCB0IHYgPSBJdmFyLmZpbGwgdC5yZWFkeSB2XG5lbmRcblxudHlwZSAoJ2EsICdwaGFudG9tKSB0ID1cbiAgeyAoKiBbaWRdIGlzIGFuIGludGVnZXIgdXNlZCB0byBkaXN0aW5ndWlzaCBwaXBlcyB3aGVuIGRlYnVnZ2luZy4gKilcbiAgICBpZCA6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRcbiAgOyAoKiBbaW5mb10gaXMgdXNlci1wcm92aWRlZCBhcmJpdHJhcnkgc2V4cCwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gKilcbiAgICBtdXRhYmxlIGluZm8gOiBTZXhwLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgKCogW2J1ZmZlcl0gaG9sZHMgdmFsdWVzIHdyaXR0ZW4gdG8gdGhlIHBpcGUgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiByZWFkLiAqKVxuICAgIG11dGFibGUgYnVmZmVyIDogJ2EgUXVldWUudFxuICA7ICgqIFtzaXplX2J1ZGdldF0gZ292ZXJucyBwdXNoYmFjayBvbiB3cml0ZXJzIHRvIHRoZSBwaXBlLlxuXG4gICAgICAgVGhlcmUgaXMgKm5vKiBpbnZhcmlhbnQgdGhhdCBbUXVldWUubGVuZ3RoIGJ1ZmZlciA8PSBzaXplX2J1ZGdldF0uICBUaGVyZSBpcyBub1xuICAgICAgIGhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBzdHVmZmVkIGludG8gdGhlIFtidWZmZXJdLlxuICAgICAgIFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2UgaGFuZGxlIHdyaXRlcy4gIFdoZW4gd2UgZG8gYSB3cml0ZSwgYWxsIG9mIHRoZSB2YWx1ZXNcbiAgICAgICB3cml0dGVuIGFyZSBpbW1lZGlhdGVseSBlbnF1ZXVlZCBpbnRvIFtidWZmZXJdLiAgQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbUXVldWUubGVuZ3RoXG4gICAgICAgYnVmZmVyIDw9IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZXIgd2lsbCBiZSBub3RpZmllZCB0byBjb250aW51ZSB3cml0aW5nLlxuICAgICAgIEFmdGVyIHRoZSB3cml0ZSwgaWYgW2xlbmd0aCB0ID4gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlIHdpbGwgYmxvY2sgdW50aWwgdGhlXG4gICAgICAgcGlwZSBpcyB1bmRlciBidWRnZXQuICopXG4gICAgbXV0YWJsZSBzaXplX2J1ZGdldCA6IGludFxuICA7ICgqIFtwdXNoYmFja10gaXMgdXNlZCB0byBnaXZlIGZlZWRiYWNrIHRvIHdyaXRlcnMgYWJvdXQgd2hldGhlciB0aGV5IHNob3VsZCB3cml0ZSB0b1xuICAgICAgIHRoZSBwaXBlLiAgW3B1c2hiYWNrXSBpcyBmdWxsIGlmZiBbbGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdF0uICopXG4gICAgbXV0YWJsZSBwdXNoYmFjayA6IHVuaXQgSXZhci50XG4gIDsgKCogW251bV92YWx1ZXNfcmVhZF0ga2VlcHMgdHJhY2sgb2YgdGhlIHRvdGFsIG51bWJlciBvZiB2YWx1ZXMgdGhhdCBoYXZlIGJlZW4gcmVhZFxuICAgICAgIGZyb20gdGhlIHBpcGUuICBXZSBkbyBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBvdmVyZmxvdyBpbiBbbnVtX3ZhbHVlc19yZWFkXS4gIFlvdSdkXG4gICAgICAgbmVlZCB0byB3cml0ZSAyXjYyIGVsZW1lbnRzIHRvIHRoZSBwaXBlLCB3aGljaCB3b3VsZCB0YWtlIGFib3V0IDE0NiB5ZWFycywgYXQgYVxuICAgICAgIGZsb3cgcmF0ZSBvZiAxIHNpemUtdW5pdC9uYW5vc2Vjb25kLiAqKVxuICAgIG11dGFibGUgbnVtX3ZhbHVlc19yZWFkIDogaW50XG4gIDsgKCogW2Jsb2NrZWRfZmx1c2hlc10gaG9sZHMgZmx1c2hlcyB3aG9zZSBwcmVjZWRpbmcgZWxlbWVudHMgaGF2ZSBub3QgYmVlbiBjb21wbGV0ZWx5XG4gICAgICAgcmVhZC4gIEZvciBlYWNoIGJsb2NrZWQgZmx1c2gsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgZnJvbSB0aGVcbiAgICAgICBwaXBlIGluIG9yZGVyIHRvIGZpbGwgdGhlIGZsdXNoIGlzICAgICAgICAgICAgICAgICAgICAgICAgOlxuXG4gICAgICAgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCAtIG51bV92YWx1ZXNfcmVhZFxuXG4gICAgICAgS2VlcGluZyB0aGUgZGF0YSBpbiB0aGlzIGZvcm0gYWxsb3dzIHVzIHRvIGNoYW5nZSBhIHNpbmdsZSBmaWVsZChudW1fdmFsdWVzX3JlYWQpXG4gICAgICAgd2hlbiB3ZSBjb25zdW1lIHZhbHVlcyBpbnN0ZWFkIG9mIGhhdmluZyB0byBpdGVyYXRlIG92ZXIgdGhlIHdob2xlIHF1ZXVlIG9mXG4gICAgICAgZmx1c2hlcy4gKilcbiAgICBibG9ja2VkX2ZsdXNoZXMgOiBCbG9ja2VkX2ZsdXNoLnQgUXVldWUudFxuICA7ICgqIFtibG9ja2VkX3JlYWRzXSBob2xkcyByZWFkcyB0aGF0IGFyZSB3YWl0aW5nIG9uIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgcGlwZS4gKilcbiAgICBibG9ja2VkX3JlYWRzIDogJ2EgQmxvY2tlZF9yZWFkLnQgUXVldWUudFxuICA7ICgqIFtjbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUuICopXG4gICAgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbcmVhZF9jbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSByZWFkIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICByZWFkX2Nsb3NlZCA6IHVuaXQgSXZhci50XG4gIDsgKCogW2NvbnN1bWVyc10gaXMgYSBsaXN0IG9mIGFsbCBjb25zdW1lcnMgdGhhdCBtYXkgYmUgaGFuZGxpbmcgdmFsdWVzIHJlYWQgZnJvbSB0aGVcbiAgICAgICBwaXBlLiAqKVxuICAgIG11dGFibGUgY29uc3VtZXJzIDogQ29uc3VtZXIudCBsaXN0XG4gIDsgKCogW3Vwc3RyZWFtX2ZsdXNoZWRzXSBoYXMgYSBmdW5jdGlvbiBmb3IgZWFjaCBwaXBlIGltbWVkaWF0ZWx5IHVwc3RyZWFtIG9mIHRoaXMgb25lLlxuICAgICAgIFRoYXQgZnVuY3Rpb24gd2Fsa3MgdG8gdGhlIGhlYWQocykgb2YgdGhlIHVwc3RyZWFtIHBpcGUsIGFuZCBjYWxsc1xuICAgICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdIG9uIHRoZSBoZWFkKHMpLiAgU2VlIHRoZSBkZWZpbml0aW9uIG9mIFt1cHN0cmVhbV9mbHVzaGVkXVxuICAgICAgIGJlbG93LiAqKVxuICAgIHVwc3RyZWFtX2ZsdXNoZWRzIDogKHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KSBCYWcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgcGlwZSA9ICgnYSwgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCB0LmlkXG5sZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IGNvbXBhcmUgdDEgdDIgPSBJbnQuY29tcGFyZSB0MS5pZCB0Mi5pZFxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2VkXG5sZXQgaXNfcmVhZF9jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnJlYWRfY2xvc2VkXG5sZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcbmxldCBwdXNoYmFjayB0ID0gSXZhci5yZWFkIHQucHVzaGJhY2tcbmxldCBsZW5ndGggdCA9IFF1ZXVlLmxlbmd0aCB0LmJ1ZmZlclxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5pbmZvOmlnbm9yZVxuICAgICAgfmJ1ZmZlcjppZ25vcmVcbiAgICAgIH5zaXplX2J1ZGdldDooY2hlY2sgKGZ1biBzaXplX2J1ZGdldCAtPiBhc3NlcnQgKHNpemVfYnVkZ2V0ID49IDApKSlcbiAgICAgIH5wdXNoYmFjazpcbiAgICAgICAgKGNoZWNrIChmdW4gcHVzaGJhY2sgLT5cbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBCb29sLmVxdWFsXG4gICAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHB1c2hiYWNrKVxuICAgICAgICAgICAgICAgKGxlbmd0aCB0IDw9IHQuc2l6ZV9idWRnZXQgfHwgaXNfY2xvc2VkIHQpKSkpXG4gICAgICB+bnVtX3ZhbHVlc19yZWFkOmlnbm9yZVxuICAgICAgfmJsb2NrZWRfZmx1c2hlczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9mbHVzaGVzIC0+XG4gICAgICAgICAgIFF1ZXVlLml0ZXIgYmxvY2tlZF9mbHVzaGVzIH5mOihmdW4gKGYgOiBCbG9ja2VkX2ZsdXNoLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChmLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPiB0Lm51bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIExpc3QuaXNfc29ydGVkXG4gICAgICAgICAgICAgICB+Y29tcGFyZTpJbnQuY29tcGFyZVxuICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoUXVldWUudG9fbGlzdCBibG9ja2VkX2ZsdXNoZXMpXG4gICAgICAgICAgICAgICAgICB+ZjpCbG9ja2VkX2ZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQpKTtcbiAgICAgICAgICAgaWYgaXNfZW1wdHkgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9mbHVzaGVzKSkpXG4gICAgICB+YmxvY2tlZF9yZWFkczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9yZWFkcyAtPlxuICAgICAgICAgICAoKiBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgbm8gb25lIGlzIHdhaXRpbmcgZm9yIGl0LiAgVGhpcyB3b3VsZCBuZWVkIHRvIGNoYW5nZSBpZlxuICAgICAgICAgICAgICB3ZSBldmVyIGltcGxlbWVudCBbcmVhZF9leGFjdGx5XSBhcyBhbiBhdG9taWMgb3BlcmF0aW9uLiAqKVxuICAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKTtcbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX3JlYWRzIH5mOihmdW4gcmVhZCAtPlxuICAgICAgICAgICAgIEJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgcmVhZDtcbiAgICAgICAgICAgICBhc3NlcnQgKEJsb2NrZWRfcmVhZC5pc19lbXB0eSByZWFkKSk7XG4gICAgICAgICAgICgqIFlvdSBuZXZlciBibG9jayB0cnlpbmcgdG8gcmVhZCBhIGNsb3NlZCBwaXBlLiAqKVxuICAgICAgICAgICBpZiBpc19jbG9zZWQgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9yZWFkcykpKVxuICAgICAgfmNsb3NlZDppZ25vcmVcbiAgICAgIH5yZWFkX2Nsb3NlZDppZ25vcmVcbiAgICAgIH5jb25zdW1lcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGwgLT5cbiAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biBjb25zdW1lciAtPlxuICAgICAgICAgICAgIENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcjtcbiAgICAgICAgICAgICBhc3NlcnQgKENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXIgPSB0LmlkKSkpKVxuICAgICAgfnVwc3RyZWFtX2ZsdXNoZWRzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiAoXywgXykgdCldXG47O1xuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlIHBoYW50b20gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSB0ID0gKCdhLCBwaGFudG9tKSBwaXBlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuZW5kXG5cbmxldCBpZF9yZWYgPSByZWYgMFxuXG5sZXQgY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXIgPVxuICBpbmNyIGlkX3JlZjtcbiAgbGV0IHQgPVxuICAgIHsgaWQgPSAhaWRfcmVmXG4gICAgOyBpbmZvXG4gICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgcmVhZF9jbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDtcbiAgICAgIHNpemVfYnVkZ2V0XG4gICAgOyBwdXNoYmFjayA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBidWZmZXIgPSBpbml0aWFsX2J1ZmZlclxuICAgIDsgbnVtX3ZhbHVlc19yZWFkID0gMFxuICAgIDsgYmxvY2tlZF9mbHVzaGVzID0gUXVldWUuY3JlYXRlICgpXG4gICAgOyBibG9ja2VkX3JlYWRzID0gUXVldWUuY3JlYXRlICgpXG4gICAgOyBjb25zdW1lcnMgPSBbXVxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHMgPSBCYWcuY3JlYXRlICgpXG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgdmFsaWRhdGVfc2l6ZV9idWRnZXQgc2l6ZV9idWRnZXQgPVxuICBpZiBzaXplX2J1ZGdldCA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm5lZ2F0aXZlIHNpemVfYnVkZ2V0XCIgKHNpemVfYnVkZ2V0IDogaW50KV1cbiAgZWxzZSBzaXplX2J1ZGdldFxuOztcblxubGV0IGNyZWF0ZSA/c2l6ZV9idWRnZXQgP2luZm8gKCkgPVxuICBsZXQgc2l6ZV9idWRnZXQgPVxuICAgIG1hdGNoIHNpemVfYnVkZ2V0IHdpdGhcbiAgICB8IFNvbWUgdiAtPiB2YWxpZGF0ZV9zaXplX2J1ZGdldCB2XG4gICAgfCBOb25lIC0+IDBcbiAgaW5cbiAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlcjooUXVldWUuY3JlYXRlICgpKSBpblxuICAoKiBpbml0aWFsbHksIHRoZSBwaXBlIGRvZXMgbm90IHB1c2hiYWNrICopXG4gIEl2YXIuZmlsbCB0LnB1c2hiYWNrICgpO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIHQsIHRcbjs7XG5cbmxldCB1cGRhdGVfcHVzaGJhY2sgdCA9XG4gIGlmIGxlbmd0aCB0IDw9IHQuc2l6ZV9idWRnZXQgfHwgaXNfY2xvc2VkIHRcbiAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgdC5wdXNoYmFjayAoKVxuICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LnB1c2hiYWNrXG4gIHRoZW4gdC5wdXNoYmFjayA8LSBJdmFyLmNyZWF0ZSAoKVxuOztcblxubGV0IGNsb3NlIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIChcbiAgICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX3JlYWRzIH5mOkJsb2NrZWRfcmVhZC5maWxsX3dpdGhfZW9mO1xuICAgICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdClcbjs7XG5cbmxldCBjbG9zZV9yZWFkIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZV9yZWFkXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX3JlYWRfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIEl2YXIuZmlsbCB0LnJlYWRfY2xvc2VkICgpO1xuICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biBmbHVzaCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYFJlYWRlcl9jbG9zZWQpO1xuICAgIFF1ZXVlLmNsZWFyIHQuYmxvY2tlZF9mbHVzaGVzO1xuICAgIFF1ZXVlLmNsZWFyIHQuYnVmZmVyO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgICgqIHdlIGp1c3QgY2xlYXJlZCB0aGUgYnVmZmVyLCBzbyBtYXkgbmVlZCB0byBmaWxsIFt0LnB1c2hiYWNrXSAqKVxuICAgIGNsb3NlIHQpXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIHVwb24gKGYgdykgKGZ1biAoKSAtPiBjbG9zZSB3KTtcbiAgclxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXIgP3NpemVfYnVkZ2V0IH5jbG9zZV9vbl9leGNlcHRpb24gZiA9XG4gIGlmIG5vdCBjbG9zZV9vbl9leGNlcHRpb25cbiAgdGhlbiBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGZcbiAgZWxzZSAoXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICAgIH5ydW46XG4gICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgKGZ1biAoKSAtPiBmIHcpXG4gICAgICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgICAgIGNsb3NlIHc7XG4gICAgICAgICAgIHJldHVybiAoKSkpO1xuICAgIHIpXG47O1xuXG5sZXQgY3JlYXRlX3dyaXRlciA/c2l6ZV9idWRnZXQgZiA9XG4gIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICB+cnVuOlxuICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgfnJlc3Q6YExvZ1xuICAgICAgIChmdW4gKCkgLT4gZiByKVxuICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgIGNsb3NlX3JlYWQgcjtcbiAgICAgICAgIHJldHVybiAoKSkpO1xuICB3XG47O1xuXG5sZXQgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyID1cbiAgT3B0aW9uLml0ZXIgY29uc3VtZXIgfmY6Q29uc3VtZXIuc3RhcnQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggUXVldWUucGVlayB0LmJsb2NrZWRfZmx1c2hlcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZsdXNoIC0+XG4gICAgICBpZiB0Lm51bV92YWx1ZXNfcmVhZCA+PSBmbHVzaC5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXG4gICAgICB0aGVuIChcbiAgICAgICAgaWdub3JlIChRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCk7XG4gICAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGBPa1xuICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+XG4gICAgICAgICAgIHVwb24gKENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgY29uc3VtZXIpIChmdW4gZmx1c2hfcmVzdWx0IC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGZsdXNoX3Jlc3VsdCkpO1xuICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuXG4oKiBbY29uc3VtZV9hbGwgdF0gcmVhZHMgYWxsIHRoZSBlbGVtZW50cyBpbiBbdF0uICopXG5sZXQgY29uc3VtZV9hbGwgdCBjb25zdW1lciA9XG4gIGxldCByZXN1bHQgPSB0LmJ1ZmZlciBpblxuICB0LmJ1ZmZlciA8LSBRdWV1ZS5jcmVhdGUgKCk7XG4gIHQubnVtX3ZhbHVlc19yZWFkIDwtIHQubnVtX3ZhbHVlc19yZWFkICsgUXVldWUubGVuZ3RoIHJlc3VsdDtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZV9vbmUgdCBjb25zdW1lciA9XG4gIGFzc2VydCAobGVuZ3RoIHQgPj0gMSk7XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJ1ZmZlciBpblxuICB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIDE7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lciA9XG4gIGFzc2VydCAobWF4X3F1ZXVlX2xlbmd0aCA+PSAwKTtcbiAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA+PSBsZW5ndGggdFxuICB0aGVuIGNvbnN1bWVfYWxsIHQgY29uc3VtZXJcbiAgZWxzZSAoXG4gICAgdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBtYXhfcXVldWVfbGVuZ3RoO1xuICAgIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlIH5jYXBhY2l0eTptYXhfcXVldWVfbGVuZ3RoICgpIGluXG4gICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnQuYnVmZmVyIH5kc3Q6cmVzdWx0IH5sZW46bWF4X3F1ZXVlX2xlbmd0aCAoKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2V0X3NpemVfYnVkZ2V0IHQgc2l6ZV9idWRnZXQgPVxuICBsZXQgc2l6ZV9idWRnZXQgPSB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCBpblxuICB0LnNpemVfYnVkZ2V0IDwtIHNpemVfYnVkZ2V0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IGZpbGxfYmxvY2tlZF9yZWFkcyB0ID1cbiAgd2hpbGUgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKSkgJiYgbm90IChpc19lbXB0eSB0KSBkb1xuICAgIGxldCBibG9ja2VkX3JlYWQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfcmVhZHMgaW5cbiAgICBsZXQgY29uc3VtZXIgPSBibG9ja2VkX3JlYWQuY29uc3VtZXIgaW5cbiAgICBtYXRjaCBibG9ja2VkX3JlYWQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGBPa1xuICAgIHwgT25lIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpXG4gICAgfCBBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKSlcbiAgZG9uZVxuOztcblxuKCogY2hlY2tzIGFsbCBpbnZhcmlhbnRzLCBjYWxscyBhIHBhc3NlZCBpbiBmIHRvIGhhbmRsZSBhIHdyaXRlLCB0aGVuIHVwZGF0ZXMgcmVhZHMgYW5kXG4gICBwdXNoYmFjayAqKVxubGV0IHN0YXJ0X3dyaXRlIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJ3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIndyaXRlIHRvIGNsb3NlZCBwaXBlXCIgfnBpcGU6KHQgOiAoXywgXykgdCldXG47O1xuXG5sZXQgZmluaXNoX3dyaXRlIHQgPVxuICBmaWxsX2Jsb2NrZWRfcmVhZHMgdDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0O1xuICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6ZnJvbSB+ZHN0OnQuYnVmZmVyICgpO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHRyYW5zZmVyX2luIHQgfmZyb20gPVxuICB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb207XG4gIHB1c2hiYWNrIHRcbjs7XG5cbmxldCBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQ7XG4gIFF1ZXVlLml0ZXIgZnJvbSB+ZjooZnVuIHggLT4gUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB4KTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFt3cml0ZSddIGlzIHVzZWQgaW50ZXJuYWxseSAqKVxubGV0IHdyaXRlJyB0IHEgPSB0cmFuc2Zlcl9pbiB0IH5mcm9tOnFcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZSA9XG4gIHN0YXJ0X3dyaXRlIHQ7XG4gIFF1ZXVlLmVucXVldWUgdC5idWZmZXIgdmFsdWU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUgdCB2YWx1ZSA9XG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IHdyaXRlX3doZW5fcmVhZHkgdCB+ZiA9XG4gIGxldCVtYXAgKCkgPSBwdXNoYmFjayB0IGluXG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYENsb3NlZCBlbHNlIGBPayAoZiAoZnVuIHggLT4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHgpKVxuOztcblxubGV0IHdyaXRlX2lmX29wZW4gdCB4ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiB3cml0ZSB0IHggZWxzZSByZXR1cm4gKClcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiB0IHggPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4XG47O1xuXG5sZXQgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgP2NvbnN1bWVyIHQgPVxuICBtYXRjaCBjb25zdW1lciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICBpZiB0LmlkIDw+IENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQXR0ZW1wdCB0byB1c2UgY29uc3VtZXIgd2l0aCB3cm9uZyBwaXBlXCJcbiAgICAgICAgICAgIChjb25zdW1lciA6IENvbnN1bWVyLnQpXG4gICAgICAgICAgICB+cGlwZToodCA6IF8gUmVhZGVyLnQpXVxuOztcblxubGV0IHN0YXJ0X3JlYWQgP2NvbnN1bWVyIHQgbGFiZWwgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgbGFiZWwgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lclxuOztcblxubGV0IGdlbl9yZWFkX25vdyA/Y29uc3VtZXIgdCBjb25zdW1lID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9ub3dcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpZiBpc19jbG9zZWQgdCB0aGVuIGBFb2YgZWxzZSBgTm90aGluZ19hdmFpbGFibGVcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgICgqIGZyb20gW2ludmFyaWFudF0gYW5kIFtub3QgKGlzX2VtcHR5IHQpXSAqKVxuICAgIGBPayAoY29uc3VtZSB0IGNvbnN1bWVyKSlcbjs7XG5cbmxldCBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCA9XG4gIG1hdGNoIG1heF9xdWV1ZV9sZW5ndGggd2l0aFxuICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICB8IFNvbWUgbWF4X3F1ZXVlX2xlbmd0aCAtPlxuICAgIGlmIG1heF9xdWV1ZV9sZW5ndGggPD0gMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJtYXhfcXVldWVfbGVuZ3RoIDw9IDBcIiAobWF4X3F1ZXVlX2xlbmd0aCA6IGludCldO1xuICAgIG1heF9xdWV1ZV9sZW5ndGhcbjs7XG5cbmxldCByZWFkX25vdycgP2NvbnN1bWVyID9tYXhfcXVldWVfbGVuZ3RoIHQgPVxuICBsZXQgbWF4X3F1ZXVlX2xlbmd0aCA9IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoIGluXG4gIGdlbl9yZWFkX25vdyB0ID9jb25zdW1lciAoZnVuIHQgY29uc3VtZXIgLT4gY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKVxuOztcblxubGV0IHJlYWRfbm93ID9jb25zdW1lciB0ID0gZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIGNvbnN1bWVfb25lXG5sZXQgcGVlayB0ID0gUXVldWUucGVlayB0LmJ1ZmZlclxuXG5sZXQgY2xlYXIgdCA9XG4gIG1hdGNoIHJlYWRfbm93JyB0IHdpdGhcbiAgfCBgRW9mIHwgYE5vdGhpbmdfYXZhaWxhYmxlIHwgYE9rIF8gLT4gKClcbjs7XG5cbmxldCByZWFkJyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgc3RhcnRfcmVhZCB0IFwicmVhZCdcIiA/Y29uc3VtZXI7XG4gIG1hdGNoIHJlYWRfbm93JyB0ID9jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgKGBPayBfIHwgYEVvZikgYXMgciAtPiByZXR1cm4gclxuICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgIFF1ZXVlLmVucXVldWVcbiAgICAgICAgdC5ibG9ja2VkX3JlYWRzXG4gICAgICAgIChCbG9ja2VkX3JlYWQuY3JlYXRlIChBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSkgY29uc3VtZXIpKVxuOztcblxubGV0IHJlYWQgP2NvbnN1bWVyIHQgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkXCIgP2NvbnN1bWVyO1xuICBpZiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBpZiBpc19jbG9zZWQgdFxuICAgIHRoZW4gcmV0dXJuIGBFb2ZcbiAgICBlbHNlXG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIFF1ZXVlLmVucXVldWUgdC5ibG9ja2VkX3JlYWRzIChCbG9ja2VkX3JlYWQuKGNyZWF0ZSAoT25lIGl2YXIpKSBjb25zdW1lcikpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICByZXR1cm4gKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpKVxuOztcblxubGV0IHJlYWRfZXhuID9jb25zdW1lciB0ID1cbiAgbWF0Y2glbWFwIHJlYWQgP2NvbnN1bWVyIHQgd2l0aFxuICB8IGBPayB2YWx1ZSAtPiB2YWx1ZVxuICB8IGBFb2YgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhuOiByZWNlaXZlZCBFT0ZcIl1cbjs7XG5cbmxldCB2YWx1ZXNfYXZhaWxhYmxlIHQgPVxuICBzdGFydF9yZWFkIHQgXCJ2YWx1ZXNfYXZhaWxhYmxlXCI7XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gYE9rXG4gIGVsc2UgaWYgaXNfY2xvc2VkIHRcbiAgdGhlbiByZXR1cm4gYEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBRdWV1ZS5sYXN0IHQuYmxvY2tlZF9yZWFkcyB3aXRoXG4gICAgfCBTb21lIHsgY29uc3VtZXIgPSBOb25lOyB3YW50cyA9IFplcm8gaXZhciB9IC0+XG4gICAgICAoKiBUaGlzIGNhc2UgaXMgYW4gb3B0aW1pemF0aW9uIGZvciBtdWx0aXBsZSBjYWxscyB0byBbdmFsdWVzX2F2YWlsYWJsZV0gaW5cbiAgICAgICAgIHNlcXVlbmNlLiAgSXQgY2F1c2VzIHRoZW0gdG8gYWxsIHNoYXJlIHRoZSBzYW1lIGl2YXIsIHJhdGhlciB0aGFuIGFsbG9jYXRlXG4gICAgICAgICBhbiBpdmFyIHBlciBjYWxsLiAqKVxuICAgICAgSXZhci5yZWFkIGl2YXJcbiAgICB8IF8gLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChaZXJvIGl2YXIpKSBOb25lKSkpXG47O1xuXG5sZXQgcmVhZF9jaG9pY2UgdCA9IGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSB0KSAoZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+IHJlYWRfbm93IHQpXG5cbmxldCByZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXhuIHQgaGVyZSA9XG4gIERlZmVycmVkLkNob2ljZS5tYXAgKHJlYWRfY2hvaWNlIHQpIH5mOihmdW5jdGlvblxuICAgIHwgKGBPayBfIHwgYEVvZikgYXMgeCAtPiB4XG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJQaXBlLnJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG46IGNob2ljZSB3YXMgZW5hYmxlZCBidXQgcGlwZSBpcyBlbXB0eTsgXFxcbiAgICAgICAgICAgdGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24gd2l0aCBvbmUgb3IgbW9yZSBvdGhlciBjb25zdW1lcnNcIlxuICAgICAgICAgICAgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV0pXG47O1xuXG4oKiBbcmVhZF9leGFjdGx5IHQgfm51bV92YWx1ZXNdIGxvb3BzLCBnZXR0aW5nIHlvdSBhbGwgW251bV92YWx1ZXNdIGl0ZW1zLCB1cFxuICAgdG8gRU9GLiAqKVxubGV0IHJlYWRfZXhhY3RseSA/Y29uc3VtZXIgdCB+bnVtX3ZhbHVlcyA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRfZXhhY3RseVwiID9jb25zdW1lcjtcbiAgaWYgbnVtX3ZhbHVlcyA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhhY3RseSBnb3QgbnVtX3ZhbHVlcyA8PSAwXCIgKG51bV92YWx1ZXMgOiBpbnQpXTtcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoIC0+XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBsZXQgYWxyZWFkeV9yZWFkID0gUXVldWUubGVuZ3RoIHJlc3VsdCBpblxuICAgICAgYXNzZXJ0IChhbHJlYWR5X3JlYWQgPD0gbnVtX3ZhbHVlcyk7XG4gICAgICBpZiBhbHJlYWR5X3JlYWQgPSBudW1fdmFsdWVzXG4gICAgICB0aGVuIEl2YXIuZmlsbCBmaW5pc2ggKGBFeGFjdGx5IHJlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCcgP2NvbnN1bWVyIHQgfm1heF9xdWV1ZV9sZW5ndGg6KG51bV92YWx1ZXMgLSBhbHJlYWR5X3JlYWQpXG4gICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaCAoaWYgYWxyZWFkeV9yZWFkID0gMCB0aGVuIGBFb2YgZWxzZSBgRmV3ZXIgcmVzdWx0KVxuICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCBkb3duc3RyZWFtX2ZsdXNoZWQgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIExpc3QuaXNfZW1wdHkgdC5jb25zdW1lcnNcbiAgICB0aGVuIHJldHVybiBgT2tcbiAgICBlbHNlXG4gICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIChMaXN0Lm1hcCB0LmNvbnN1bWVycyB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkKVxuICBlbHNlXG4gICAgKCogW3RdIG1pZ2h0IGJlIGNsb3NlZC4gIEJ1dCB0aGUgcmVhZCBlbmQgY2FuJ3QgYmUgY2xvc2VkLCBiZWNhdXNlIGlmIGl0IHdlcmUsIHRoZW5cbiAgICAgICBbdF0gd291bGQgYmUgZW1wdHkuICBJZiB0aGUgd3JpdGUgZW5kIGlzIGNsb3NlZCBidXQgbm90IHRoZSByZWFkIGVuZCwgdGhlbiB3ZSB3YW50XG4gICAgICAgdG8gZW5xdWV1ZSBhIGJsb2NrZWQgZmx1c2ggYmVjYXVzZSB0aGUgZW5xdWV1ZWQgdmFsdWVzIG1heSBnZXQgcmVhZC4gKilcbiAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZWFkeSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfZmx1c2hlc1xuICAgICAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPSB0Lm51bV92YWx1ZXNfcmVhZCArIGxlbmd0aCB0OyByZWFkeSB9KVxuOztcblxuKCogSW4gcHJhY3RpY2UsIGFsb25nIHdpdGggW0xpbmsuY3JlYXRlXSBhbmQgW2FkZF91cHN0cmVhbV9mbHVzaGVkXSwgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICB0cmF2ZXJzZXMgdGhlIGdyYXBoIG9mIGxpbmtlZCBwaXBlcyB1cCB0byB0aGUgaGVhZHMgYW5kIHRoZW4gY2FsbHMgW2Rvd25zdHJlYW1fZmx1c2hlZF1cbiAgIG9uIHRoZW0uICopXG5sZXQgdXBzdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgQmFnLmlzX2VtcHR5IHQudXBzdHJlYW1fZmx1c2hlZHNcbiAgdGhlbiBkb3duc3RyZWFtX2ZsdXNoZWQgdFxuICBlbHNlXG4gICAgQmFnLnRvX2xpc3QgdC51cHN0cmVhbV9mbHVzaGVkc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gZiAtPiBmICgpKVxuICAgIHw+IEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbjs7XG5cbmxldCBhZGRfdXBzdHJlYW1fZmx1c2hlZCB0IHVwc3RyZWFtX2ZsdXNoZWQgPSBCYWcuYWRkIHQudXBzdHJlYW1fZmx1c2hlZHMgdXBzdHJlYW1fZmx1c2hlZFxuXG5sZXQgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gIGxldCBjb25zdW1lciA9IENvbnN1bWVyLmNyZWF0ZSB+cGlwZV9pZDp0LmlkIH5kb3duc3RyZWFtX2ZsdXNoZWQgaW5cbiAgdC5jb25zdW1lcnMgPC0gY29uc3VtZXIgOjogdC5jb25zdW1lcnM7XG4gIGNvbnN1bWVyXG47O1xuXG4oKiBBIFtMaW5rLnRdIGxpbmtzIGZsdXNoaW5nIG9mIHR3byBwaXBlcyB0b2dldGhlci4gKilcbm1vZHVsZSBMaW5rIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1cHN0cmVhbTooXywgXykgcGlwZSAtPiBkb3duc3RyZWFtOihfLCBfKSBwaXBlIC0+IHRcbiAgdmFsIGNvbnN1bWVyIDogdCAtPiBDb25zdW1lci50XG5cbiAgKCogW3VubGlua191cHN0cmVhbV0gcmVtb3ZlcyBkb3duc3RyZWFtJ3MgcmVmZXJlbmNlIHRvIHVwc3RyZWFtLiAqKVxuXG4gIHZhbCB1bmxpbmtfdXBzdHJlYW0gOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHVucGFja2VkID1cbiAgICB7IGRvd25zdHJlYW0gOiAoJ2EsICdiKSB0XG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnRcbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy5FbHQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogKF8sIF8pIHVucGFja2VkIC0+IHRcblxuICBsZXQgY29uc3VtZXIgKFQgdCkgPSB0LmNvbnN1bWVyXG5cbiAgbGV0IGNyZWF0ZSB+dXBzdHJlYW0gfmRvd25zdHJlYW0gPVxuICAgIFRcbiAgICAgIHsgZG93bnN0cmVhbVxuICAgICAgOyBjb25zdW1lciA9XG4gICAgICAgICAgYWRkX2NvbnN1bWVyIHVwc3RyZWFtIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0pXG4gICAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgPVxuICAgICAgICAgIGFkZF91cHN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0gKGZ1biAoKSAtPiB1cHN0cmVhbV9mbHVzaGVkIHVwc3RyZWFtKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCB1bmxpbmtfdXBzdHJlYW0gKFQgdCkgPVxuICAgIEJhZy5yZW1vdmUgdC5kb3duc3RyZWFtLnVwc3RyZWFtX2ZsdXNoZWRzIHQudXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbHVzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb25zdW1lciBvZiBDb25zdW1lci50XG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZFxuICAgIHwgV2hlbl92YWx1ZV9yZWFkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGZvbGRfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICA/KGZsdXNoZWQgPSBGbHVzaGVkLldoZW5fdmFsdWVfcmVhZClcbiAgICAgIHRcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA9XG4gIGxldCBjb25zdW1lciA9XG4gICAgbWF0Y2ggZmx1c2hlZCB3aXRoXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWQgLT4gTm9uZVxuICAgIHwgQ29uc3VtZXIgY29uc3VtZXIgLT4gU29tZSBjb25zdW1lclxuICAgIHwgV2hlbl92YWx1ZV9wcm9jZXNzZWQgLT5cbiAgICAgICgqIFRoZSBmYWN0IHRoYXQgXCJubyBjb25zdW1lclwiIGJlaGF2ZXMgZGlmZmVyZW50IGZyb20gXCJ0cml2aWFsIGNvbnN1bWVyXCIgaXMgd2VpcmQsXG4gICAgICAgICBidXQgdGhhdCdzIGhvdyB0aGUgY29uc3VtZXIgbWFjaGluZXJ5IHdvcmtzLiAqKVxuICAgICAgU29tZSAoYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+IHJldHVybiBgT2spKVxuICBpblxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFtyZXR1cm4gKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuICopXG4gICAgcmV0dXJuICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgYlxuICAgICAgfCBgT2sgdiAtPiBmIGIgdiBjb250aW51ZVxuICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBsb29wIGJcbiAgICBhbmQgY29udGludWUgYiA9XG4gICAgICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtO1xuICAgICAgbG9vcCBiXG4gICAgaW5cbiAgICBsb29wIGluaXQpXG47O1xuXG5sZXQgZm9sZCcgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIHEgbG9vcCAtPlxuICAgIGYgYiBxID4+PiBsb29wKVxuOztcblxubGV0IGZvbGQgP2ZsdXNoZWQgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIGEgbG9vcCAtPiBmIGIgYSA+Pj4gbG9vcClcbjs7XG5cbmxldCBmb2xkX3dpdGhvdXRfcHVzaGJhY2sgP2NvbnN1bWVyIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlblxuICAgIHJlYWRfbm93XG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBiIGEgbG9vcCAtPiBsb29wIChmIGIgYSkpXG4gICAgP2ZsdXNoZWQ6XG4gICAgICAobWF0Y2ggY29uc3VtZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIGMgLT4gU29tZSAoQ29uc3VtZXIgYykpXG47O1xuXG5sZXQgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBmIGEgPVxuICBpZiBub3QgY29udGludWVfb25fZXJyb3JcbiAgdGhlbiBmIGFcbiAgZWxzZSAoXG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46XG4gICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgKGZ1biAoKSAtPiBmIGEpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIChNb25pdG9yLmV4dHJhY3RfZXhuIGV4bikpXG47O1xuXG5sZXQgaXRlcicgP2NvbnRpbnVlX29uX2Vycm9yID9mbHVzaGVkID9tYXhfcXVldWVfbGVuZ3RoIHQgfmYgPVxuICBmb2xkJyA/bWF4X3F1ZXVlX2xlbmd0aCA/Zmx1c2hlZCB0IH5pbml0OigpIH5mOihmdW4gKCkgcSAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIHEpXG47O1xuXG5sZXQgaXRlciA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIGxvb3AgLT5cbiAgICB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/Y29udGludWVfb25fZXJyb3IgZiBhID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbjs7XG5cbigqIFtpdGVyX3dpdGhvdXRfcHVzaGJhY2tdIGlzIGEgY29tbW9uIGNhc2UsIHNvIHdlIGltcGxlbWVudCBpdCBpbiBhbiBvcHRpbWl6ZWQgbWFubmVyLFxuICAgcmF0aGVyIHRoYW4gdmlhIFtpdGVyXS4gIFRoZSBpbXBsZW1lbnRhdGlvbiByZWFkcyBvbmx5IG9uZSBlbGVtZW50IGF0IGEgdGltZSwgc28gdGhhdFxuICAgaWYgW2ZdIGNsb3NlcyBbdF0gb3IgcmFpc2VzLCBubyBtb3JlIGVsZW1lbnRzIHdpbGwgYmUgcmVhZC4gKilcbmxldCBpdGVyX3dpdGhvdXRfcHVzaGJhY2tcbiAgICAgID9jb25zdW1lclxuICAgICAgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKVxuICAgICAgP21heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICAgIHRcbiAgICAgIH5mXG4gID1cbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIGxldCBtYXhfaXRlcmF0aW9uc19wZXJfam9iID1cbiAgICBtYXRjaCBtYXhfaXRlcmF0aW9uc19wZXJfam9iIHdpdGhcbiAgICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgU29tZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iIC0+XG4gICAgICBpZiBtYXhfaXRlcmF0aW9uc19wZXJfam9iIDw9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJpdGVyX3dpdGhvdXRfcHVzaGJhY2sgZ290IG5vbi1wb3NpdGl2ZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iXCJcbiAgICAgICAgICAgICAgKG1heF9pdGVyYXRpb25zX3Blcl9qb2IgOiBpbnQpXTtcbiAgICAgIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgaW5cbiAgbGV0IGYgPVxuICAgIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gZlxuICAgIGVsc2VcbiAgICAgIGZ1biBhIC0+XG4gICAgICAgIHRyeSBmIGEgd2l0aFxuICAgICAgICB8IGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4blxuICBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFtyZXR1cm4gKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuICopXG4gICAgcmV0dXJuICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCByZWMgc3RhcnQgKCkgPSBsb29wIH5yZW1haW5pbmc6bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgIGFuZCBsb29wIH5yZW1haW5pbmcgPVxuICAgICAgaWYgcmVtYWluaW5nID0gMFxuICAgICAgdGhlbiByZXR1cm4gKCkgPj4+IGZ1biAoKSAtPiBzdGFydCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCAoKVxuICAgICAgICB8IGBPayBhIC0+XG4gICAgICAgICAgZiBhO1xuICAgICAgICAgIGxvb3AgfnJlbWFpbmluZzoocmVtYWluaW5nIC0gMSlcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBzdGFydCAoKSlcbiAgICBpblxuICAgIHN0YXJ0ICgpKVxuOztcblxubGV0IGRyYWluIHQgPSBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG5sZXQgZHJhaW5fYW5kX2NvdW50IHQgPSBmb2xkJyB0IH5pbml0OjAgfmY6KGZ1biBzdW0gcSAtPiByZXR1cm4gKHN1bSArIFF1ZXVlLmxlbmd0aCBxKSlcblxubGV0IHJlYWRfYWxsIGlucHV0ID1cbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQlbWFwICgpID1cbiAgICBpdGVyJyBpbnB1dCB+ZjooZnVuIHEgLT5cbiAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICByZXN1bHRcbjs7XG5cbmxldCB0b19saXN0IHIgPSByZWFkX2FsbCByID4+fCBRdWV1ZS50b19saXN0XG5cbmxldCB0b19zdHJlYW1fZGVwcmVjYXRlZCB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KVxuICAgID4+PiBmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBbb2Zfc3RyZWFtX2RlcHJlY2F0ZWRdIGRvZXMgYXMgbXVjaCBiYXRjaGluZyBhcyBwb3NzaWJsZS4gIEl0XG4gICBncmFicyBhcyBtYW55IGl0ZW1zIGFzIGFyZSBhdmFpbGFibGUgaW50byBhbiBpbnRlcm5hbCBxdWV1ZS4gIE9uY2UgaXQgaGFzIGdyYWJiZWRcbiAgIGV2ZXJ5dGhpbmcsIGl0IHdyaXRlcyBpdCB0byB0aGUgcGlwZSBhbmQgdGhlbiBibG9ja3Mgd2FpdGluZyBmb3IgdGhlIG5leHQgZWxlbWVudCBmcm9tXG4gICB0aGUgc3RyZWFtLlxuXG4gICBUaGVyZSdzIG5vIHBvc3NpYmlsaXR5IHRoYXQgd2UnbGwgc3RhcnZlIHRoZSBwaXBlIHJlYWRpbmcgYW4gZW5kbGVzcyBzdHJlYW0sIGp1c3RcbiAgIGFjY3VtdWxhdGluZyB0aGUgZWxlbWVudHMgaW50byBvdXIgcHJpdmF0ZSBxdWV1ZSBmb3JldmVyIHdpdGhvdXQgZXZlciB3cml0aW5nIHRoZW1cbiAgIGRvd25zdHJlYW0gdG8gdGhlIHBpcGUuICBXaHk/IGJlY2F1c2Ugd2hpbGUgd2UncmUgcnVubmluZywgdGhlIHN0cmVhbS1wcm9kdWNlciAqaXNuJ3QqXG4gICBydW5uaW5nIC0tIHRoZXJlIGFyZSBubyBBc3luYyBibG9jayBwb2ludHMgaW4gdGhlIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3AuICBTbyB0aGVcbiAgIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3Agd2lsbCBldmVudHVhbGx5IGNhdGNoIHVwIHRvIHRoZSBjdXJyZW50IHN0cmVhbSB0YWlsLCBhdCB3aGljaFxuICAgcG9pbnQgd2UnbGwgZG8gdGhlIHBpcGUtd3JpdGUgYW5kIHRoZW4gYmxvY2sgb24gdGhlIHN0cmVhbS4uLiB0aHVzIGdpdmluZyB0aGVcbiAgIHN0cmVhbS1wcm9kdWNlciBhIGNoYW5jZSB0byBtYWtlIG1vcmUgZWxlbWVudHMuXG5cbiAgIE9uZSBjYW4ndCBpbXBsZW1lbnQgW29mX3N0cmVhbV0gdXNpbmcgW1N0cmVhbS5pdGVyXSBvciBbU3RyZWFtLml0ZXInXSBiZWNhdXNlIHlvdVxuICAgbmVlZCB0byBiZSBhYmxlIHRvIHN0b3AgZWFybHkgd2hlbiB0aGUgY29uc3VtZXIgY2xvc2VzIHRoZSBwaXBlLiAgQWxzbywgdXNpbmcgZWl0aGVyXG4gICBvZiB0aG9zZSB3b3VsZCBlbnRhaWwgc2lnbmlmaWNhbnRseSBtb3JlIGRlZmVycmVkIG92ZXJoZWFkLCB3aGVyZWFzIHRoZSBiZWxvd1xuICAgaW1wbGVtZW50YXRpb24gdXNlcyBhIGRlZmVycmVkIG9ubHkgd2hlbiBpdCBuZWVkcyB0byB3YWl0IGZvciBkYXRhIGZyb20gdGhlIHN0cmVhbS4gKilcbmxldCBvZl9zdHJlYW1fZGVwcmVjYXRlZCBzID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHEgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHRyYW5zZmVyICgpID1cbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHEpXG4gICAgdGhlblxuICAgICAgKCogQ2FuIG5vdCBwdXNoYmFjayBvbiB0aGUgc3RyZWFtLCBzbyBpZ25vcmUgdGhlIHB1c2hiYWNrIG9uIHRoZSBwaXBlLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKHdyaXRlJyB3IHEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfY2xvc2VkIHcpKTtcbiAgICBsZXQgbmV4dF9kZWZlcnJlZCA9IFN0cmVhbS5uZXh0IHMgaW5cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIG5leHRfZGVmZXJyZWQgd2l0aFxuICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0XG4gICAgfCBOb25lIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIHVwb24gbmV4dF9kZWZlcnJlZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0XG4gIGFuZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0IG5leHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB3KSB0aGVuIGxvb3BfbmV4dCBuZXh0XG4gIGFuZCBsb29wX25leHQgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIGNsb3NlIHdcbiAgICB8IENvbnMgKHgsIHMpIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlIHEgeDtcbiAgICAgIGxvb3Agc1xuICBpblxuICBsb29wIHM7XG4gIHJcbjs7XG5cbmxldCB0cmFuc2Zlcl9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgIHdyaXRlXG4gICAgICBpbnB1dFxuICAgICAgb3V0cHV0XG4gICAgICB+ZlxuICA9XG4gIGlmICFjaGVja19pbnZhcmlhbnRcbiAgdGhlbiAoXG4gICAgaW52YXJpYW50IGlucHV0O1xuICAgIGludmFyaWFudCBvdXRwdXQpO1xuICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dCB+ZG93bnN0cmVhbTpvdXRwdXQgaW5cbiAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICgqIFdoZW4gd2UncmUgZG9uZSB3aXRoIFtpbnB1dF0sIHdlIHVubGluayB0byByZW1vdmUgcG9pbnRlcnMgZnJvbVxuICAgICBbb3V0cHV0XSB0byBbaW5wdXRdLCB3aGljaCB3b3VsZCBjYXVzZSBhIHNwYWNlIGxlYWsgaWYgd2UgaGFkIHNpbmdsZSBsb25nLWxpdmVkXG4gICAgIG91dHB1dCBpbnRvIHdoaWNoIHdlIHRyYW5zZmVyIGxvdHMgb2Ygc2hvcnQtbGl2ZWQgaW5wdXRzLiAqKVxuICBsZXQgdW5saW5rICgpID0gTGluay51bmxpbmtfdXBzdHJlYW0gbGluayBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICAoKiBXZSBkbyBbcmV0dXJuICgpID4+Pl0gdG8gZW5zdXJlIHRoYXQgW2ZdIGlzIG9ubHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiAqKVxuICAgIHJldHVybiAoKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBsZXQgb3V0cHV0X2Nsb3NlZCAoKSA9XG4gICAgICBjbG9zZV9yZWFkIGlucHV0O1xuICAgICAgdW5saW5rICgpO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IH5jb25zdW1lciB3aXRoXG4gICAgICAgIHwgYEVvZiAtPlxuICAgICAgICAgIHVubGluayAoKTtcbiAgICAgICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICAgIHwgYE9rIHggLT4gZiB4IGNvbnRpbnVlXG4gICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgY2hvb3NlXG4gICAgICAgICAgICBbIGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSBpbnB1dCkgaWdub3JlOyBjaG9pY2UgKGNsb3NlZCBvdXRwdXQpIGlnbm9yZSBdXG4gICAgICAgICAgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGFuZCBjb250aW51ZSB5ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwdXNoYmFjayA9IHdyaXRlIG91dHB1dCB5IGluXG4gICAgICAgIENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgIHB1c2hiYWNrID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICBpblxuICAgIGxvb3AgKCkpXG47O1xuXG5sZXQgdHJhbnNmZXInID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgb3V0cHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCB0cmFuc2ZlciBpbnB1dCBvdXRwdXQgfmYgPVxuICB0cmFuc2Zlcl9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgb3V0cHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG47O1xuXG5sZXQgdHJhbnNmZXJfaWQgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0ID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gayBxKVxuOztcblxubGV0IG1hcF9nZW4gcmVhZCB3cml0ZSBpbnB1dCB+ZiA9XG4gIGxldCBpbmZvID0gT3B0aW9uLm1hcCBpbnB1dC5pbmZvIH5mOihmdW4gaW5mbyAtPiBbJXNleHAgTWFwcGVkIChpbmZvIDogU2V4cC50KV0pIGluXG4gIGxldCByZXN1bHQsIG91dHB1dCA9IGNyZWF0ZSA/aW5mbyAoKSBpblxuICB1cG9uICh0cmFuc2Zlcl9nZW4gcmVhZCB3cml0ZSBpbnB1dCBvdXRwdXQgfmYpIChmdW4gKCkgLT4gY2xvc2Ugb3V0cHV0KTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBfZ2VuIHJlYWRfbm93IHdyaXRlIGlucHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG5cbmxldCBjb25jYXRfbWFwX2xpc3QgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmNvbmNhdF9tYXAgcSB+ZikpXG47O1xuXG5sZXQgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4gcSAtPiBEZWZlcnJlZC5RdWV1ZS5maWx0ZXJfbWFwIHEgfmYpXG47O1xuXG5sZXQgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuZmlsdGVyX21hcCBxIH5mOihmdW4geCAtPiBpZiBpc19yZWFkX2Nsb3NlZCBpbnB1dCB0aGVuIE5vbmUgZWxzZSBmIHgpKSlcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0JW1hcCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZjooZnVuIGFjY3VtIGEgLT5cbiAgICBsZXQgYWNjdW0sIGIgPSBmIGFjY3VtIGEgaW5cbiAgICBhY2N1bSwgU29tZSBiKVxuOztcblxubGV0IGZpbHRlciBpbnB1dCB+ZiA9IGZpbHRlcl9tYXAgaW5wdXQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cbmxldCBvZl9saXN0IGwgPVxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQ6MCB+aW5mbzpOb25lIH5pbml0aWFsX2J1ZmZlcjooUXVldWUub2ZfbGlzdCBsKSBpblxuICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICB0XG47O1xuXG5sZXQgZW1wdHkgKCkgPSBvZl9saXN0IFtdXG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCByZWFkZXIsIHdyaXRlciA9IGNyZWF0ZSAoKSBpblxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciB4O1xuICBjbG9zZSB3cml0ZXI7XG4gIHJlYWRlclxuOztcblxubGV0IHVuZm9sZCB+aW5pdDpzIH5mID1cbiAgKCogVG8gZ2V0IHNvbWUgYmF0Y2hpbmcsIHdlIHJ1biB0aGUgY29udGludWF0aW9uIGltbWVkaWF0ZWx5IGlmIHRoZSBkZWZlcnJlZCBpc1xuICAgICBkZXRlcm1pbmVkLiAgSG93ZXZlciwgd2UgYWx3YXlzIGNoZWNrIGZvciBwdXNoYmFjay4gIEJlY2F1c2Ugc2l6ZSBidWRnZXQgY2FuJ3QgYmVcbiAgICAgaW5maW5pdGUsIHRoZSBiZWxvdyBsb29wIGlzIGd1YXJhbnRlZWQgdG8gZXZlbnR1YWxseSB5aWVsZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICBsZXQgKCA+Pj1+ICkgZCBmID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgIGYgc1xuICAgICAgPj49fiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IHJldHVybiAoKVxuICAgICAgfCBTb21lIChhLCBzKSAtPlxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHRoZW4gcmV0dXJuICgpIGVsc2Ugd3JpdGUgd3JpdGVyIGEgPj49fiBmdW4gKCkgLT4gbG9vcCBzXG4gICAgaW5cbiAgICBsb29wIHMpXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGVucXVldWVfbiBzZXF1ZW5jZSBpID1cbiAgICAgIGlmIGkgPD0gMFxuICAgICAgdGhlbiBzZXF1ZW5jZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgc2VxdWVuY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VxdWVuY2VcbiAgICAgICAgfCBTb21lIChhLCBzZXF1ZW5jZSkgLT5cbiAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHdyaXRlci5idWZmZXIgYTtcbiAgICAgICAgICBlbnF1ZXVlX24gc2VxdWVuY2UgKGkgLSAxKSlcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBzZXF1ZW5jZSA9XG4gICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHx8IFNlcXVlbmNlLmlzX2VtcHR5IHNlcXVlbmNlXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YXJ0X3dyaXRlIHdyaXRlcjtcbiAgICAgICAgbGV0IHNlcXVlbmNlID0gZW5xdWV1ZV9uIHNlcXVlbmNlICgxICsgd3JpdGVyLnNpemVfYnVkZ2V0IC0gbGVuZ3RoIHdyaXRlcikgaW5cbiAgICAgICAgZmluaXNoX3dyaXRlIHdyaXRlcjtcbiAgICAgICAgbGV0JWJpbmQgKCkgPSBwdXNoYmFjayB3cml0ZXIgaW5cbiAgICAgICAgbG9vcCBzZXF1ZW5jZSlcbiAgICBpblxuICAgIGxvb3Agc2VxdWVuY2UpXG47O1xuXG50eXBlICdhIHRvX3NlcXVlbmNlX2VsdCA9XG4gIHwgVmFsdWUgb2YgJ2FcbiAgfCBXYWl0X2ZvciA6IF8gRGVmZXJyZWQudCAtPiBfIHRvX3NlcXVlbmNlX2VsdFxuXG5sZXQgdG9fc2VxdWVuY2UgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooKSB+ZjooZnVuICgpIC0+XG4gICAgbWF0Y2ggcmVhZF9ub3cgdCB3aXRoXG4gICAgfCBgRW9mIC0+IE5vbmVcbiAgICB8IGBPayBhIC0+IFNvbWUgKFZhbHVlIGEsICgpKVxuICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IFNvbWUgKFdhaXRfZm9yICh2YWx1ZXNfYXZhaWxhYmxlIHQpLCAoKSkpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZV9waXBlIGlucHV0cyA9XG4gIGxldCBvdXRwdXQsIG91dHB1dF93cml0ZXIgPSBjcmVhdGUgfmluZm86WyVzZXhwIFwiUGlwZS5pbnRlcmxlYXZlXCJdICgpIGluXG4gICgqIFdlIGtlZXAgYSByZWZlcmVuY2UgY291bnQgb2YgYWxsIHRoZSBwaXBlcyB0aGF0IFtpbnRlcmxlYXZlX3BpcGVdIGlzIG1hbmFnaW5nO1xuICAgICBbaW5wdXRzXSBjb3VudHMgYXMgb25lLiAgV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sIHdlIGtub3cgdGhhdCBhbGxcbiAgICAgcGlwZXMgYXJlIGNsb3NlZCBhbmQgd2UgY2FuIGNsb3NlIFtvdXRwdXRfd3JpdGVyXS4gKilcbiAgbGV0IG51bV9waXBlc19yZW1haW5pbmcgPSByZWYgMSBpblxuICBsZXQgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpID1cbiAgICBkZWNyIG51bV9waXBlc19yZW1haW5pbmc7XG4gICAgaWYgIW51bV9waXBlc19yZW1haW5pbmcgPSAwIHRoZW4gY2xvc2Ugb3V0cHV0X3dyaXRlclxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlbWFwICgpID1cbiAgICAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgIGluY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgIChsZXQlbWFwICgpID0gdHJhbnNmZXJfaWQgaW5wdXQgb3V0cHV0X3dyaXRlciBpblxuICAgICAgICAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKSlcbiAgICAgaW5cbiAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKTtcbiAgKCogZm9yIFtpbnB1dHNdICopXG4gIG91dHB1dFxuOztcblxubGV0IGludGVybGVhdmUgaW5wdXRzID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciBpbnB1dHMgfmY6aW52YXJpYW50O1xuICBpbnRlcmxlYXZlX3BpcGUgKG9mX2xpc3QgaW5wdXRzKVxuOztcblxubGV0IG1lcmdlIGlucHV0cyB+Y29tcGFyZSA9XG4gIG1hdGNoIGlucHV0cyB3aXRoXG4gIHwgW10gLT4gZW1wdHkgKClcbiAgfCBbIGlucHV0IF0gLT4gaW5wdXRcbiAgfCBpbnB1dHMgLT5cbiAgICBsZXQgbW9kdWxlIEhlYXAgPSBQYWlyaW5nX2hlYXAgaW5cbiAgICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICAgIHVwb24gKGNsb3NlZCB3KSAoZnVuICgpIC0+IExpc3QuaXRlciBpbnB1dHMgfmY6Y2xvc2VfcmVhZCk7XG4gICAgbGV0IGhlYXAgPSBIZWFwLmNyZWF0ZSB+Y21wOihmdW4gKGExLCBfKSAoYTIsIF8pIC0+IGNvbXBhcmUgYTEgYTIpICgpIGluXG4gICAgbGV0IGhhbmRsZV9yZWFkIGlucHV0IGVvZl9vcl9vayA9XG4gICAgICBtYXRjaCBlb2Zfb3Jfb2sgd2l0aFxuICAgICAgfCBgRW9mIC0+ICgpXG4gICAgICB8IGBPayB2IC0+IEhlYXAuYWRkIGhlYXAgKHYsIGlucHV0KVxuICAgIGluXG4gICAgbGV0IHJlYyBwb3BfaGVhcF9hbmRfbG9vcCAoKSA9XG4gICAgICAoKiBBdCB0aGlzIHBvaW50LCBhbGwgaW5wdXRzIG5vdCBhdCBFb2Ygb2NjdXIgaW4gW2hlYXBdIGV4YWN0bHkgb25jZSwgc28gd2Uga25vd1xuICAgICAgICAgd2hhdCB0aGUgbmV4dCBvdXRwdXQgZWxlbWVudCBpcy4gIFtwb3BfaGVhcF9hbmRfbG9vcF0gcmVwZWF0ZWRseSB0YWtlcyBlbGVtZW50c1xuICAgICAgICAgZnJvbSB0aGUgaW5wdXRzIGFzIGxvbmcgYXMgaXQgaGFzIG9uZSBmcm9tIGVhY2ggaW5wdXQuICBUaGlzIGlzIGRvbmVcbiAgICAgICAgIHN5bmNocm9ub3VzbHkgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgYSBkZWZlcnJlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSBvdXRwdXQgLS1cbiAgICAgICAgIHRoZXJlJ3Mgbm8gbmVlZCB0byBwdXNoYmFjayBzaW5jZSB0aGF0IGlzIG9ubHkgbW92aW5nIGVsZW1lbnRzIGZyb20gb25lIHBpcGUgdG9cbiAgICAgICAgIGFub3RoZXIuICBBcyBzb29uIGFzIFtwb3BfaGVhcF9hbmRfbG9vcF0gY2FuJ3QgZ2V0IGFuIGVsZW1lbnQgZnJvbSBzb21lIGlucHV0LCBpdFxuICAgICAgICAgd2FpdHMgb24gcHVzaGJhY2sgZnJvbSB0aGUgb3V0cHV0LCBzaW5jZSBpdCBoYXMgdG8gd2FpdCBvbiB0aGUgaW5wdXQgYW55d2F5LlxuICAgICAgICAgVGhpcyBhbHNvIHByZXZlbnRzIFttZXJnZV0gZnJvbSBjb25zdW1pbmcgaW5wdXRzIGF0IGEgcmF0ZSBmYXN0ZXIgdGhhbiBpdHMgb3V0cHV0XG4gICAgICAgICBpcyBjb25zdW1lZC4gKilcbiAgICAgIG1hdGNoIEhlYXAucG9wIGhlYXAgd2l0aFxuICAgICAgfCBOb25lIC0+IGNsb3NlIHdcbiAgICAgIHwgU29tZSAodiwgaW5wdXQpIC0+XG4gICAgICAgIGlmIG5vdCAoaXNfY2xvc2VkIHcpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdyB2O1xuICAgICAgICAgIGlmIEhlYXAubGVuZ3RoIGhlYXAgPSAwXG4gICAgICAgICAgdGhlbiB1cG9uICh0cmFuc2Zlcl9pZCBpbnB1dCB3KSAoZnVuICgpIC0+IGNsb3NlIHcpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB3aXRoXG4gICAgICAgICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHggLT5cbiAgICAgICAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeDtcbiAgICAgICAgICAgICAgcG9wX2hlYXBfYW5kX2xvb3AgKClcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIHB1c2hiYWNrIHdcbiAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICByZWFkIGlucHV0XG4gICAgICAgICAgICAgID4+PiBmdW4geCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKSkpXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9wdXNoID1cbiAgICAgIERlZmVycmVkLkxpc3QuaXRlciBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICBsZXQlbWFwIHggPSByZWFkIGlucHV0IGluXG4gICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHgpXG4gICAgaW5cbiAgICB1cG9uIGluaXRpYWxfcHVzaCBwb3BfaGVhcF9hbmRfbG9vcDtcbiAgICByXG47O1xuXG5sZXQgY29uY2F0X3BpcGUgaW5wdXRzID1cbiAgbGV0IHIgPVxuICAgIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICAgIGxldCBsaW5rID0gTGluay5jcmVhdGUgfnVwc3RyZWFtOmlucHV0cyB+ZG93bnN0cmVhbTp3IGluXG4gICAgICBsZXQgY29uc3VtZXIgPSBMaW5rLmNvbnN1bWVyIGxpbmsgaW5cbiAgICAgIGl0ZXIgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPiB0cmFuc2Zlcl9pZCBpbnB1dCB3KSlcbiAgaW5cbiAgdXBvbiAoY2xvc2VkIHIpIChmdW4gKCkgLT4gY2xvc2UgaW5wdXRzKTtcbiAgclxuOztcblxubGV0IGNvbmNhdCBpbnB1dHMgPVxuICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgRGVmZXJyZWQuTGlzdC5pdGVyIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuOztcblxubGV0IGZvcmsgdCB+cHVzaGJhY2tfdXNlcyA9XG4gIGxldCByZWFkZXIwLCB3cml0ZXIwID0gY3JlYXRlICgpIGluXG4gIGxldCByZWFkZXIxLCB3cml0ZXIxID0gY3JlYXRlICgpIGluXG4gIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjb25zdW1lciA9XG4gICAgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9ICFzb21lX3JlYWRlcl93YXNfY2xvc2VkIGluXG4gICAgICBtYXRjaCVtYXBcbiAgICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICAgIFsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjA7IGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIxIF1cbiAgICAgIHdpdGhcbiAgICAgIHwgYFJlYWRlcl9jbG9zZWQgLT4gYFJlYWRlcl9jbG9zZWRcbiAgICAgIHwgYE9rIC0+XG4gICAgICAgICgqIEluIHRoaXMgY2FzZSwgdGhlcmUgY291bGQgaGF2ZSBiZWVuIG5vIHBlbmRpbmcgaXRlbXMgaW4gW3dyaXRlcjBdIG5vciBpblxuICAgICAgICAgICBbd3JpdGVyMV0sIGluIHdoaWNoIGNhc2Ugd2UgY291bGQgaGF2ZSBoYWQgYSBjbG9zZWQgcGlwZSB0aGF0IG1pc3NlZCBzb21lXG4gICAgICAgICAgIHdyaXRlcywgYnV0IFtGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXSB3b3VsZCBzdGlsbCBoYXZlIHJldHVybmVkIFtgT2tdICopXG4gICAgICAgIGlmIHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgdGhlbiBgUmVhZGVyX2Nsb3NlZCBlbHNlIGBPaylcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0IHN0aWxsX29wZW4gPSBbIHdyaXRlcjA7IHdyaXRlcjEgXSBpblxuICAgICBsZXQgZmlsdGVyX29wZW4gc3RpbGxfb3BlbiA9XG4gICAgICAgKCogT25seSBjYWxsIFtmaWx0ZXJdIGFuZCByZWFsbG9jYXRlIGxpc3QgaWYgc29tZXRoaW5nIHdpbGwgZ2V0IGZpbHRlcmVkICopXG4gICAgICAgaWYgbm90IChMaXN0LmV4aXN0cyBzdGlsbF9vcGVuIH5mOmlzX2Nsb3NlZClcbiAgICAgICB0aGVuIHN0aWxsX29wZW5cbiAgICAgICBlbHNlIChcbiAgICAgICAgIHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgOj0gdHJ1ZTtcbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gTGlzdC5maWx0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gbm90IChpc19jbG9zZWQgdykpIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW4gdGhlbiBjbG9zZSB0O1xuICAgICAgICAgc3RpbGxfb3BlbilcbiAgICAgaW5cbiAgICAgbGV0JWJpbmQgc3RpbGxfb3BlbiA9XG4gICAgICAgZm9sZCcgdCB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIH5pbml0OnN0aWxsX29wZW4gfmY6KGZ1biBzdGlsbF9vcGVuIHF1ZXVlIC0+XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlblxuICAgICAgICAgdGhlbiByZXR1cm4gW11cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwdXNoYmFja191c2VzIHdpdGhcbiAgICAgICAgICAgICB8IGBGYXN0X2NvbnN1bWVyX29ubHkgLT4gRGVmZXJyZWQuYW55IChMaXN0Lm1hcCBzdGlsbF9vcGVuIH5mOnB1c2hiYWNrKVxuICAgICAgICAgICAgIHwgYEJvdGhfY29uc3VtZXJzIC0+IERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCBzdGlsbF9vcGVuIH5mOnB1c2hiYWNrKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gaW5cbiAgICAgICAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB3IH5mcm9tOnF1ZXVlKTtcbiAgICAgICAgICAgc3RpbGxfb3BlbikpXG4gICAgIGluXG4gICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOmNsb3NlO1xuICAgICByZXR1cm4gKCkpO1xuICByZWFkZXIwLCByZWFkZXIxXG47O1xuXG5sZXQgc2V0X2luZm8gdCBpbmZvID0gc2V0X2luZm8gdCAoU29tZSBpbmZvKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcblxudHlwZSAoJ2EsICdwaGFudG9tKSB0ID1cbiAgeyBjdXJyZW50X3ZhbHVlIDogJ2EgTW9wdGlvbi50XG4gIDsgdGFrZW4gOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gIDsgbXV0YWJsZSB2YWx1ZV9hdmFpbGFibGUgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCB2YWx1ZV9hdmFpbGFibGUgdCA9IEl2YXIucmVhZCB0LnZhbHVlX2F2YWlsYWJsZVxubGV0IGlzX2VtcHR5IHQgPSBNb3B0aW9uLmlzX25vbmUgdC5jdXJyZW50X3ZhbHVlXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyAodCA6IF8gdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jdXJyZW50X3ZhbHVlOihjaGVjayAoTW9wdGlvbi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnRha2VuOihjaGVjayAoQnZhci5pbnZhcmlhbnQgVW5pdC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgIH52YWx1ZV9hdmFpbGFibGU6XG4gICAgICAgIChjaGVjayAoZnVuIHZhbHVlX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgdmFsdWVfYXZhaWxhYmxlKVxuICAgICAgICAgICAgIH5leHBlY3Q6KE1vcHRpb24uaXNfc29tZSB0LmN1cnJlbnRfdmFsdWUpKSkpXG47O1xuXG5sZXQgcGVlayB0ID0gTW9wdGlvbi5nZXQgdC5jdXJyZW50X3ZhbHVlXG5cbmxldCBwZWVrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTXZhci5wZWVrX2V4biBjYWxsZWQgb24gZW1wdHkgbXZhclwiXTtcbiAgTW9wdGlvbi5nZXRfc29tZV9leG4gdC5jdXJyZW50X3ZhbHVlXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBbJXNleHAgKHBlZWsgdCA6IGEgb3B0aW9uKV1cblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgcmVhZF93cml0ZSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbm1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgcmVhZCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbmxldCByZWFkX29ubHkgKHQgOiAoJ2EsIFs+IHJlYWQgXSkgdCkgPSAodCA6PiAoJ2EsIHJlYWQpIHQpXG5sZXQgd3JpdGVfb25seSAodCA6ICgnYSwgWz4gd3JpdGUgXSkgdCkgPSAodCA6PiAoJ2EsIHdyaXRlKSB0KVxuXG5sZXQgY3JlYXRlICgpID1cbiAgeyBjdXJyZW50X3ZhbHVlID0gTW9wdGlvbi5jcmVhdGUgKClcbiAgOyB0YWtlbiA9IEJ2YXIuY3JlYXRlICgpXG4gIDsgdmFsdWVfYXZhaWxhYmxlID0gSXZhci5jcmVhdGUgKClcbiAgfVxuOztcblxubGV0IHRha2Vfbm9uZW1wdHkgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCByID0gTW9wdGlvbi5nZXRfc29tZV9leG4gdC5jdXJyZW50X3ZhbHVlIGluXG4gIE1vcHRpb24uc2V0X25vbmUgdC5jdXJyZW50X3ZhbHVlO1xuICBCdmFyLmJyb2FkY2FzdCB0LnRha2VuICgpO1xuICB0LnZhbHVlX2F2YWlsYWJsZSA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgclxuOztcblxubGV0IHRha2Vfbm93X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTXZhci50YWtlX2V4biBjYWxsZWQgb24gZW1wdHkgbXZhclwiXTtcbiAgdGFrZV9ub25lbXB0eSB0XG47O1xuXG5sZXQgdGFrZV9ub3cgdCA9IGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBTb21lICh0YWtlX25vbmVtcHR5IHQpIGVsc2UgTm9uZVxuXG5sZXQgcmVjIHRha2UgdCA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gKHRha2Vfbm9uZW1wdHkgdClcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB2YWx1ZV9hdmFpbGFibGUgdCBpblxuICAgIHRha2UgdClcbjs7XG5cbmxldCBzZXQgdCB2ID1cbiAgTW9wdGlvbi5zZXRfc29tZSB0LmN1cnJlbnRfdmFsdWUgdjtcbiAgSXZhci5maWxsX2lmX2VtcHR5IHQudmFsdWVfYXZhaWxhYmxlICgpXG47O1xuXG5sZXQgdXBkYXRlIHQgfmYgPSBzZXQgdCAoZiAocGVlayB0KSlcbmxldCB1cGRhdGVfZXhuIHQgfmYgPSBzZXQgdCAoZiAocGVla19leG4gdCkpXG5sZXQgdGFrZW4gdCA9IEJ2YXIud2FpdCB0LnRha2VuXG5cbmxldCByZWMgcHV0IHQgdiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiAoXG4gICAgc2V0IHQgdjtcbiAgICByZXR1cm4gKCkpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdGFrZW4gdCBpblxuICAgIHB1dCB0IHYpXG47O1xuXG5sZXQgcGlwZV93aGVuX3JlYWR5IHQgPVxuICBsZXQgciwgdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbGV0JWJpbmQgKCkgPSB2YWx1ZV9hdmFpbGFibGUgdCBpblxuICAgIGlmIG5vdCAoUGlwZS5pc19jbG9zZWQgdylcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRha2Vfbm93IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKClcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIGxldCViaW5kICgpID0gUGlwZS53cml0ZSB3IHggaW5cbiAgICAgICAgbG9vcCAoKSlcbiAgICBlbHNlIHJldHVybiAoKVxuICBpblxuICBkb24ndF93YWl0X2ZvciAobG9vcCAoKSk7XG4gIHJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IHVuaXQgSXZhci50XG4gICAgOyByZXN1bHQgOiAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfb3JfZXJyb3IgZiA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICB7IHN0YXJ0XG4gICAgOyByZXN1bHQgPVxuICAgICAgICAobGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgc3RhcnQgaW5cbiAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhfam9pbl9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCB3YWl0IHQgPSB0LnJlc3VsdFxuICBsZXQgd2FpdF9leG4gdCA9IHdhaXQgdCA+Pnwgb2tfZXhuXG4gIGxldCBzdGFydCB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQuc3RhcnQgKClcblxuICBsZXQgZm9yY2UgdCA9XG4gICAgc3RhcnQgdDtcbiAgICB3YWl0IHRcbiAgOztcblxuICBsZXQgZm9yY2VfZXhuIHQgPSBmb3JjZSB0ID4+fCBva19leG5cbiAgbGV0IHJldHVybiBhID0gY3JlYXRlIChmdW4gKCkgLT4gcmV0dXJuIGEpXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gKCkgLT5cbiAgICAgIGxldCViaW5kIGEgPSBmb3JjZV9leG4gdCBpblxuICAgICAgZm9yY2VfZXhuIChmIGEpKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuICgpIC0+IGZvcmNlX2V4biB0ID4+fCBmKVxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGJpbmQnIHQgZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gY3JlYXRlIChmdW4gKCkgLT4gZiBhKSlcbmxldCBpc19mb3JjZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnN0YXJ0XG5sZXQgaXNfZGV0ZXJtaW5lZCB0ID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0LnJlc3VsdFxubGV0IHBlZWsgdCA9IERlZmVycmVkLnBlZWsgdC5yZXN1bHRcbmxldCBwZWVrX2V4biB0ID0gT3B0aW9uLm1hcCAocGVlayB0KSB+Zjpva19leG5cbiIsIm9wZW4gQ29yZVxuXG50eXBlICdhIHQgPSB7IHdhaXRzIDogJ2EgSXZhci50IFF1ZXVlLnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlICgpID0geyB3YWl0cyA9IFF1ZXVlLmNyZWF0ZSAoKSB9XG5sZXQgd2FpdCB0ID0gRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPiBRdWV1ZS5lbnF1ZXVlIHQud2FpdHMgaXZhcilcbmxldCBzaWduYWwgdCBhID0gT3B0aW9uLml0ZXIgKFF1ZXVlLmRlcXVldWUgdC53YWl0cykgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgUXVldWUuaXRlciB0LndhaXRzIH5mOihmdW4gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBhKTtcbiAgUXVldWUuY2xlYXIgdC53YWl0c1xuOztcbiIsIm9wZW4gQ29yZVxuaW5jbHVkZSBHY1xuXG4oKiogW2FkZF9maW5hbGl6ZXIgZiB4XSBpcyBsaWtlIFtHYy5maW5hbGlzZSBmIHhdLCBleGNlcHQgdGhhdCB0aGUgZmluYWxpemVyIGlzIGd1YXJhbnRlZWRcbiAgICB0byBydW4gYXMgYW4gQXN5bmMgam9iIChpLmUuIHdpdGhvdXQgaW50ZXJydXB0aW5nIG90aGVyIEFzeW5jIGpvYnMpLiAgVW5wcm90ZWN0ZWQgdXNlXG4gICAgb2YgW0NhbWwuR2MuZmluYWxpc2VdIG9yIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGluIEFzeW5jIHByb2dyYW1zIGlzIHdyb25nLCBiZWNhdXNlXG4gICAgdGhlIGZpbmFsaXplcnMgd29uJ3QgaG9sZCB0aGUgYXN5bmMgbG9jaywgYW5kIHRodXMgY291bGQgaW50ZXJsZWF2ZSBhcmJpdHJhcmlseSB3aXRoXG4gICAgYXN5bmMgam9icy4gKilcbmxldCBhZGRfZmluYWxpemVyIGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplciAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9leG4gaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdCBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdCAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biBoZWFwX2Jsb2NrIGYgPVxuICBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gKHQgKCkpKSBoZWFwX2Jsb2NrIGZcbjs7XG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBHYy5FeHBlcnQuQWxhcm1cblxuICB0eXBlIHQgPSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBmID0gU2NoZWR1bGVyLihjcmVhdGVfYWxhcm0gKHQgKCkpKSBmXG4gIGxldCBkZWxldGUgPSBBbGFybS5kZWxldGVcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgc2lnbmF0dXJlcyB0aGF0IGV4dGVuZCBbQ29yZS5JbnZhcmlhbnRdIHdpdGggYW4gW0FzeW5jXVxuICAgIHN1Ym1vZHVsZSBmb3IgaW52YXJpYW50cyB0aGF0IHVzZSBhc3luYyBjb21wdXRhdGlvbiBhbmQgcmV0dXJuIFt1bml0IERlZmVycmVkLnRdLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+IHVuaXQgRGVmZXJyZWQudFxuICB0eXBlICdhIGludiA9ICdhIHRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2EgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2IgaW52IC0+ICgnYSwgJ2IpIHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gJ2MgaW52IC0+ICgnYSwgJ2IsICdjKSB0IGludlxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBc3luY19pbnZhcmlhbnQgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBDb3JlLkludmFyaWFudFxuXG4gIG1vZHVsZSBBc3luYyA6IHNpZ1xuICAgIG9wZW4gQXN5bmNcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBBc3luYy50XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gICAgbW9kdWxlIHR5cGUgUzMgPSBTM1xuXG4gICAgdmFsIGludmFyaWFudFxuICAgICAgOiAgU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgICAgLT4gJ2FcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcblxuICAgICgqKiBbY2hlY2tfZmllbGRdIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHJlY29yZCBmaWVsZHMgd2hlbiB1c2luZyBbW0BAZGVyaXZpbmcgZmllbGRzXV0uXG4gICAgICAgIElkaW9tYXRpYyB1c2FnZSBsb29rcyBsaWtlOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgICAgSW52YXJpYW50LkFzeW5jLmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCBjaGVjayBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAoY2hlY2sgRm9vLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+YmFyOiAoY2hlY2sgQmFyLmludmFyaWFudCkgXX1cblxuICAgICAgICBXaGVuIHNvbWUgZmllbGRzIGhhdmUgc3luY2hyb25vdXMgaW52YXJpYW50cywgb3IgZG8gbm90IG5lZWQgdG8gYmUgY2hlY2tlZCwgaXRcbiAgICAgICAgbWF5IGJlIHVzZWZ1bCB0byBkZWZpbmUgYSBzZWNvbmQgd3JhcHBlciBhcm91bmQgW2NoZWNrX2ZpZWxkXTpcblxuICAgICAgICB7W1xuICAgICAgICAgIHR5cGUgdCA9IHsgZm9vIDogRm9vLnQgOyBiYXIgOiBCYXIudCA7IHF1dXggOiBRdXV4LnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrJyBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IGNoZWNrJyAoZnVuIHggLT4gaW52IHg7IHJldHVybiAoKSkgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAgKGNoZWNrJyBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6ICAoY2hlY2sgIEJhci5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfnF1dXg6IChjaGVjayAgaWdub3JlKSBdfSAqKVxuICAgIHZhbCBjaGVja19maWVsZCA6ICdhIC0+ICdiIHQgLT4gdW5pdCBEZWZlcnJlZC50IC0+ICgnYSwgJ2IpIEZpZWxkLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBEZWZlcnJlZC5MZXRfc3ludGF4XG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29yZS5JbnZhcmlhbnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIGluY2x1ZGUgQXN5bmNfaW52YXJpYW50X2ludGYuQXN5bmNcblxuICBsZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46XG4gICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgZlxuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCIgfl86KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSAoZXhuIDogZXhuKSB+XzoodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjaGVja19maWVsZCB0IGYgd2FpdF9mb3JfcHJldmlvdXMgZmllbGQgPVxuICAgIGxldCViaW5kICgpID0gd2FpdF9mb3JfcHJldmlvdXMgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgICAgICAoZnVuICgpIC0+IGYgKEZpZWxkLmdldCBmaWVsZCB0KSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcInByb2JsZW0gd2l0aCBmaWVsZFwiIH5maWVsZDooRmllbGQubmFtZSBmaWVsZCA6IHN0cmluZykgKGV4biA6IGV4bildXG4gIDs7XG5lbmRcbiIsIigqKiBDb250YWlucyBBc3luYydzIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzLCBsaWtlIHt7IUFzeW5jX2tlcm5lbC5EZWZlcnJlZH1bRGVmZXJyZWRdfSxcbiAgICB7eyFBc3luY19rZXJuZWwuSXZhcn1bSXZhcl19LCBhbmQge3shQXN5bmNfa2VybmVsLkNsb2NrX2ludGYuQ2xvY2t9W0Nsb2NrXX0uXG5cbiAgICBbQXN5bmNfa2VybmVsXSBpcyBkZXNpZ25lZCB0byBkZXBlbmQgb25seSBvbiB7eyFDb3JlfVtDb3JlXX0gYW5kIHNvIGlzIG1vcmVcbiAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXN5bmNfa2VybmVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWdcbm1vZHVsZSBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZSA9IFJlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2Vcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIEJ2YXIgPSBCdmFyXG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIENvbmRpdGlvbiA9IEFzeW5jX2NvbmRpdGlvblxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWRcbm1vZHVsZSBFeGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0XG5tb2R1bGUgR2MgPSBBc3luY19nY1xubW9kdWxlIEludmFyaWFudCA9IEFzeW5jX2ludmFyaWFudFxubW9kdWxlIEl2YXIgPSBJdmFyXG5tb2R1bGUgTGF6eV9kZWZlcnJlZCA9IExhenlfZGVmZXJyZWRcbm1vZHVsZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3Jcbm1vZHVsZSBNdmFyID0gTXZhclxubW9kdWxlIFBpcGUgPSBQaXBlXG5tb2R1bGUgUHJpb3JpdHkgPSBQcmlvcml0eVxubW9kdWxlIFNlcXVlbmNlciA9IFRocm90dGxlLlNlcXVlbmNlclxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxubW9kdWxlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Vcbm1vZHVsZSBUYWlsID0gVGFpbFxubW9kdWxlIFRocm90dGxlID0gVGhyb3R0bGVcbm1vZHVsZSBUaW1lX3NvdXJjZSA9IFRpbWVfc291cmNlXG5cblxuKCoqIHsyIFRvcGxldmVsIGZ1bmN0aW9ucyB9XG5cbiAgICBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBicm9hZGx5IHVzZWZ1bCB3aGVuIHdyaXRpbmcgQXN5bmMgcHJvZ3JhbXMsIGFuZCBzbyBhcmUgbWFkZVxuICAgIGF2YWlsYWJsZSBhdCB0aGUgdG9wbGV2ZWwuICopXG5cblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgY2F0Y2ggPSBNb25pdG9yLmNhdGNoXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBEZWZlcnJlZC5kb24ndF93YWl0X2ZvclxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgc2NoZWR1bGUgPSBTY2hlZHVsZXIuc2NoZWR1bGVcbmxldCBzY2hlZHVsZScgPSBTY2hlZHVsZXIuc2NoZWR1bGUnXG5sZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbmxldCB3aXRoaW4gPSBTY2hlZHVsZXIud2l0aGluXG5sZXQgd2l0aGluJyA9IFNjaGVkdWxlci53aXRoaW4nXG5cbigqKiB7MiBJbmZpeCBvcGVyYXRvcnMgYW5kIFtMZXRfc3ludGF4XSBzdXBwb3J0fSAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZCA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQudXBvbn0uICopXG5sZXQgKCA+Pj4gKSA9IERlZmVycmVkLkluZml4LiggPj4+IClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC5SZXN1bHQuYmluZH0uICopXG5sZXQgKCA+Pj0/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+Pj0gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5tYXB9LiAqKVxubGV0ICggPj58PyApID0gRGVmZXJyZWQuUmVzdWx0LiggPj58IClcblxuaW5jbHVkZSBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqKi8qKilcblxuKCoqIFRoZSBtb2R1bGVzIGluIFtBc3luY19rZXJuZWxfcHJpdmF0ZV0gYXJlIHVzZWQgZm9yIGNvbnN0cnVjdGluZyBhbmQgdGVzdGluZyBBc3luYywgYW5kXG4gICAgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgdXNlZC4gKilcbm1vZHVsZSBBc3luY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVidWcgPSBEZWJ1Z1xuICBtb2R1bGUgSXZhcjAgPSBJdmFyMFxuICBtb2R1bGUgSXZhcl9maWxsZXIgPSBJdmFyX2ZpbGxlclxuICBtb2R1bGUgSm9iID0gSm9iXG4gIG1vZHVsZSBTdGFja19vcl9jb3VudGVyID0gU3RhY2tfb3JfY291bnRlclxuZW5kXG5cbigqKi8qKilcblxuKCogVGhpcyB0ZXN0IG11c3QgYmUgaW4gdGhpcyBsaWJyYXJ5LCBiZWNhdXNlIGl0IHJlcXVpcmVzIFtyZXR1cm5dIHRvIGJlIGlubGluZWQuICBNb3ZpbmdcbiAgIGl0IHRvIGFub3RoZXIgbGlicmFyeSB3aWxsIGNhdXNlIGl0IHRvIGJyZWFrIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz1mYWxzZV0uICopXG5sZXQldGVzdF91bml0IFwiW3JldHVybiAoKV0gZG9lcyBub3QgYWxsb2NhdGVcIiA9XG4gIGxldCB3MSA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAocmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQuTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LkxldF9zeW50YXgucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGxldCB3MiA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIFsldGVzdF9yZXN1bHQ6IGludF0gdzIgfmV4cGVjdDp3MVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgQXN5bmNfa2VybmVsX3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbF9pbnRmXG5cbm1vZHVsZSBNYWtlIChDb25uIDogQ2xvc2FibGUpID0gc3RydWN0XG4gIG1vZHVsZSBDb25uID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb25uXG5cbiAgICBsZXQgc2V4cF9vZl90IChfIDogdCkgOiBTZXhwLnQgPSBBdG9tIFwiPENvbm4udD5cIlxuICBlbmRcblxuICB0eXBlIGNvbm4gPSBDb25uLnRcblxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgIHwgT2J0YWluZWRfYWRkcmVzcyBvZiAnYWRkcmVzc1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBvZiBFcnJvci50XG4gICAgICB8IENvbm5lY3RlZCBvZiAoY29ubltAc2V4cC5vcGFxdWVdKVxuICAgICAgfCBEaXNjb25uZWN0ZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYWRkcmVzcyBldmVudCA9ICdhZGRyZXNzIHRcblxuICAgIG1vZHVsZSBIYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgICB7IHNlcnZlcl9uYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb25fZXZlbnQgOiAnYWRkcmVzcyBldmVudCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBsb2dfbGV2ZWwgPSBmdW5jdGlvblxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgfCBDb25uZWN0ZWQgXyB8IERpc2Nvbm5lY3RlZCB8IE9idGFpbmVkX2FkZHJlc3MgXyAtPiBgSW5mb1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBfIC0+IGBFcnJvclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlIHQgeyBIYW5kbGVyLnNlcnZlcl9uYW1lID0gXzsgb25fZXZlbnQgfSA9IG9uX2V2ZW50IHRcbiAgZW5kXG5cbiAgKCogQSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gdGhhdCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgYWRkcmVzcyB0eXBlLiAgV2UgaGlkZSBhd2F5IHRoaXNcbiAgICAgdHlwZSBsYXRlciBzaW5jZSBpdCBvbmx5IGFwcGVhcnMgaW4gdGhlIHR5cGUgb2YgW2NyZWF0ZV0uICopXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgIHsgZ2V0X2FkZHJlc3MgOiB1bml0IC0+ICdhZGRyZXNzIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyBjb25uZWN0IDogJ2FkZHJlc3MgLT4gQ29ubi50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyByZXRyeV9kZWxheSA6IHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgY29ubiA6IFsgYE9rIG9mIENvbm4udCB8IGBDbG9zZV9zdGFydGVkIF0gSXZhci50XG4gICAgICA7IG11dGFibGUgbmV4dF9jb25uZWN0X3Jlc3VsdCA6IENvbm4udCBPcl9lcnJvci50IEl2YXIudFxuICAgICAgOyBldmVudF9oYW5kbGVyIDogJ2FkZHJlc3MgRXZlbnQuSGFuZGxlci50XG4gICAgICA7IGNsb3NlX3N0YXJ0ZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBjbG9zZV9maW5pc2hlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGRvbid0X3JlY29ubmVjdCA6IHVuaXQgSXZhci50XG4gICAgICA7IGFkZHJlc3NfZXF1YWwgOiAnYWRkcmVzcyAtPiAnYWRkcmVzcyAtPiBib29sXG4gICAgICA7IHNleHBfb2ZfYWRkcmVzcyA6ICdhZGRyZXNzIC0+IFNleHAudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBzZXJ2ZXJfbmFtZSB0ID0gdC5ldmVudF9oYW5kbGVyLnNlcnZlcl9uYW1lXG4gICAgbGV0IGhhbmRsZV9ldmVudCB0IGV2ZW50ID0gRXZlbnQuaGFuZGxlIGV2ZW50IHQuZXZlbnRfaGFuZGxlclxuXG4gICAgKCogVGhpcyBmdW5jdGlvbiBmb2N1c2VzIGluIG9uIHRoZSB0aGUgZXJyb3IgaXRzZWxmLCBkaXNjYXJkaW5nIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoXG4gICAgICAgbW9uaXRvciBjYXVnaHQgdGhlIGVycm9yLCBpZiBhbnkuXG5cbiAgICAgICBJZiB3ZSBkb24ndCBkbyB0aGlzLCB3ZSBzb21ldGltZXMgZW5kIHVwIHdpdGggbm9pc3kgbG9ncyB3aGljaCByZXBvcnQgdGhlIHNhbWUgZXJyb3JcbiAgICAgICBhZ2FpbiBhbmQgYWdhaW4sIGRpZmZlcmluZyBvbmx5IGFzIHRvIHdoYXQgbW9uaXRvciBjYXVnaHQgdGhlbS4gKilcbiAgICBsZXQgc2FtZV9lcnJvciBlMSBlMiA9XG4gICAgICBsZXQgdG9fc2V4cCBlID0gRXhuLnNleHBfb2ZfdCAoTW9uaXRvci5leHRyYWN0X2V4biAoRXJyb3IudG9fZXhuIGUpKSBpblxuICAgICAgU2V4cC5lcXVhbCAodG9fc2V4cCBlMSkgKHRvX3NleHAgZTIpXG4gICAgOztcblxuICAgICgqIENvbnRpbnVlIHRyeWluZyB0byBjb25uZWN0IHVudGlsIHdlIGFyZSBhYmxlIHRvIGRvIHNvLCBpbiB3aGljaCBjYXNlIHdlIHJldHVybiBib3RoXG4gICAgICAgdGhlIG5ldyBjb25uZWN0aW9uIGFuZCBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBvbmNlIHdlIGFyZSByZWFkeSBmb3JcbiAgICAgICB0aGUgbmV4dCByZWNvbm5lY3Rpb24gYXR0ZW1wdC4gKilcbiAgICBsZXQgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0ID1cbiAgICAgICgqIFdlIHRha2UgY2FyZSBub3QgdG8gc3BhbSBsb2dzIHdpdGggdGhlIHNhbWUgbWVzc2FnZSBvdmVyIGFuZCBvdmVyIGJ5IGNvbXBhcmluZ1xuICAgICAgICAgZWFjaCBsb2cgbWVzc2FnZSB0aGUgdGhlIHByZXZpb3VzIG9uZSBvZiB0aGUgc2FtZSB0eXBlLiAqKVxuICAgICAgbGV0IHByZXZpb3VzX2FkZHJlc3MgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHByZXZpb3VzX2Vycm9yID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgdC5nZXRfYWRkcmVzcyAoKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayBhZGRyIC0+XG4gICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyA9XG4gICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19hZGRyZXNzIC0+IHQuYWRkcmVzc19lcXVhbCBhZGRyIHByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIHByZXZpb3VzX2FkZHJlc3MgOj0gU29tZSBhZGRyO1xuICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKE9idGFpbmVkX2FkZHJlc3MgYWRkcikpXG4gICAgICAgICAgPj49IGZ1biAoKSAtPiB0LmNvbm5lY3QgYWRkclxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgdGhlbiByZXR1cm4gYENsb3NlX3N0YXJ0ZWRcbiAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgdGhlbiByZXR1cm4gYERvbid0X3JlY29ubmVjdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZyA9IHQucmV0cnlfZGVsYXkgKCkgaW5cbiAgICAgICAgICBsZXQlYmluZCBjb25uZWN0X3Jlc3VsdCA9IGNvbm5lY3QgKCkgaW5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IGNvbm5lY3RfcmVzdWx0O1xuICAgICAgICAgIHQubmV4dF9jb25uZWN0X3Jlc3VsdCA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBtYXRjaCBjb25uZWN0X3Jlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayBjb25uIC0+IHJldHVybiAoYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSlcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfZXJyb3IgPVxuICAgICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfZXJyb3Igd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2VyciAtPiBzYW1lX2Vycm9yIGVyciBwcmV2aW91c19lcnJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcmV2aW91c19lcnJvciA6PSBTb21lIGVycjtcbiAgICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yXG4gICAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoRmFpbGVkX3RvX2Nvbm5lY3QgZXJyKSlcbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0ID1cbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgICh0eXBlIGFkZHJlc3MpXG4gICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICAgPyhvbl9ldmVudCA9IGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICAgPyhyYW5kb21fc3RhdGUgPSBgU3RhdGUgUmFuZG9tLlN0YXRlLmRlZmF1bHQpXG4gICAgICAgICAgPyh0aW1lX3NvdXJjZSA9IFRpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgICB+YWRkcmVzczoobW9kdWxlIEFkZHJlc3MgOiBBZGRyZXNzIHdpdGggdHlwZSB0ID0gYWRkcmVzcylcbiAgICAgICAgICBnZXRfYWRkcmVzc1xuICAgICAgPVxuICAgICAgbGV0IGV2ZW50X2hhbmRsZXIgPSB7IEV2ZW50LkhhbmRsZXIuc2VydmVyX25hbWU7IG9uX2V2ZW50IH0gaW5cbiAgICAgIGxldCBkZWZhdWx0X3JldHJ5X2RlbGF5ID1cbiAgICAgICAgRm4uY29uc3QgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgKGlmIGFtX3J1bm5pbmdfdGVzdCB0aGVuIDAuMSBlbHNlIDEwLikpXG4gICAgICBpblxuICAgICAgbGV0IG5vbl9yYW5kb21pemVkX2RlbGF5ID0gT3B0aW9uLnZhbHVlIHJldHJ5X2RlbGF5IH5kZWZhdWx0OmRlZmF1bHRfcmV0cnlfZGVsYXkgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheV9zcGFuID1cbiAgICAgICAgbWF0Y2ggcmFuZG9tX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgTm9uX3JhbmRvbSAtPiBub25fcmFuZG9taXplZF9kZWxheVxuICAgICAgICB8IGBTdGF0ZSByYW5kb21fc3RhdGUgLT5cbiAgICAgICAgICBmdW4gKCkgLT5cbiAgICAgICAgICAgIGxldCBzcGFuID0gbm9uX3JhbmRvbWl6ZWRfZGVsYXkgKCkgaW5cbiAgICAgICAgICAgIGxldCBzcGFuID0gVGltZV9ucy5TcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBSYW5kb20uU3RhdGUuZmxvYXQgcmFuZG9tX3N0YXRlIChzcGFuICouIDAuMykgaW5cbiAgICAgICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICAgICAgaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlXG4gICAgICAgICAgICAgIHRoZW4gc3BhbiArLiBkaXN0YW5jZVxuICAgICAgICAgICAgICBlbHNlIHNwYW4gLS4gZGlzdGFuY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBUaW1lX25zLlNwYW4ub2Zfc2VjIHdhaXRcbiAgICAgIGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXkgKCkgPSBUaW1lX3NvdXJjZS5hZnRlciB0aW1lX3NvdXJjZSAocmV0cnlfZGVsYXlfc3BhbiAoKSkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgeyBldmVudF9oYW5kbGVyXG4gICAgICAgIDsgZ2V0X2FkZHJlc3NcbiAgICAgICAgOyBjb25uZWN0XG4gICAgICAgIDsgbmV4dF9jb25uZWN0X3Jlc3VsdCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgcmV0cnlfZGVsYXlcbiAgICAgICAgOyBjb25uID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgZG9uJ3RfcmVjb25uZWN0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBhZGRyZXNzX2VxdWFsID0gQWRkcmVzcy5lcXVhbFxuICAgICAgICA7IHNleHBfb2ZfYWRkcmVzcyA9IEFkZHJlc3Muc2V4cF9vZl90XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICAoKiB0aGlzIGxvb3AgZmluaXNoZXMgb25jZSBbY2xvc2UgdF0gaGFzIGJlZW4gY2FsbGVkLCBpbiB3aGljaCBjYXNlIGl0IG1ha2VzIHN1cmUgdG9cbiAgICAgICAgIGxlYXZlIFt0LmNvbm5dIGZpbGxlZCB3aXRoIFtgQ2xvc2Vfc3RhcnRlZF0uICopXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgQEAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkICgpIChmdW4gKCkgLT5cbiAgICAgICAgaGFuZGxlX2V2ZW50IHQgQXR0ZW1wdGluZ190b19jb25uZWN0XG4gICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0XG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+XG4gICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICByZXR1cm4gKGBGaW5pc2hlZCAoKSlcbiAgICAgICAgfCBgRG9uJ3RfcmVjb25uZWN0IC0+XG4gICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICByZXR1cm4gKGBGaW5pc2hlZCAoKSlcbiAgICAgICAgfCBgT2sgKGNvbm4sIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcpIC0+XG4gICAgICAgICAgSXZhci5maWxsIHQuY29ubiAoYE9rIGNvbm4pO1xuICAgICAgICAgIGhhbmRsZV9ldmVudCB0IChDb25uZWN0ZWQgY29ubilcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uXG4gICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIHQuY29ubiA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBoYW5kbGVfZXZlbnQgdCBEaXNjb25uZWN0ZWRcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgKCogd2FpdHMgdW50aWwgW3JldHJ5X2RlbGF5ICgpXSB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIHRpbWUganVzdCBiZWZvcmUgd2UgbGFzdFxuICAgICAgICAgICAgIHRyaWVkIHRvIGNvbm5lY3QgcmF0aGVyIHRoYW4gdGhlIHRpbWUgd2Ugbm90aWNlZCBiZWluZyBkaXNjb25uZWN0ZWQsIHNvIHRoYXQgaWZcbiAgICAgICAgICAgICBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiBkaWVzLCB3ZSB3aWxsIGF0dGVtcHQgdG8gcmVjb25uZWN0IGltbWVkaWF0ZWx5LiAqKVxuICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGBSZXBlYXQgKCkpO1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkIHQgPVxuICAgICAgKCogVGFrZSBjYXJlIG5vdCB0byByZXR1cm4gYSBjb25uZWN0aW9uIHRoYXQgaXMga25vd24gdG8gYmUgY2xvc2VkIGF0IHRoZSB0aW1lXG4gICAgICAgICBbY29ubmVjdGVkXSB3YXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2xpZW50IGNvZGUgdGhhdCBiZWhhdmVzIGxpa2VcbiAgICAgICAgIHtbXG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgPj49IGZ1biBjMSAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCBjMVxuICAgICAgICAgICAoKiBhdCB0aGlzIHBvaW50IHdlIGFyZSBpbiBhIHJhY2Ugd2l0aCB0aGUgc2FtZSBjYWxsIGluc2lkZVxuICAgICAgICAgICAgICBwZXJzaXN0ZW50X2NsaWVudC5tbCAqKVxuICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgKCogZGVwZW5kaW5nIG9uIGhvdyB0aGUgcmFjZSB0dXJucyBvdXQsIHdlIGRvbid0IHdhbnQgdG8gZ2V0IGEgY2xvc2VkIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgaGVyZSAqKVxuICAgICAgICAgICA+Pj0gZnVuIGMyIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgXX1cbiAgICAgICAgIFRoaXMgZG9lc24ndCByZW1vdmUgdGhlIHJhY2UgY29uZGl0aW9uLCBidXQgaXQgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGxldCBkID0gSXZhci5yZWFkIHQuY29ubiBpblxuICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBkXG4gICAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICAgICAgfCBgT2sgY29ubiAtPiByZXR1cm4gY29ubilcbiAgICAgICAgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+XG4gICAgICAgICAgaWYgQ29ubi5pc19jbG9zZWQgY29ublxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIGdpdmUgdGhlIHJlY29ubmVjdGlvbiBsb29wIGEgY2hhbmNlIHRvIG92ZXJ3cml0ZSB0aGUgaXZhciAqKVxuICAgICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uID4+PSBsb29wXG4gICAgICAgICAgZWxzZSByZXR1cm4gY29ublxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiB0ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmNvbm4pIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gTm9uZVxuICAgICAgfCBTb21lIChgT2sgY29ubikgLT4gU29tZSBjb25uXG4gICAgOztcblxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbiAgICBsZXQgY2xvc2UgdCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICB0aGVuXG4gICAgICAgICgqIEFub3RoZXIgY2FsbCB0byBjbG9zZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLiAgV2FpdCBmb3IgaXQgdG8gZmluaXNoLiAqKVxuICAgICAgICBjbG9zZV9maW5pc2hlZCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgICAgSXZhci5yZWFkIHQuY29ublxuICAgICAgICA+Pj0gZnVuIGNvbm5fb3B0IC0+XG4gICAgICAgIChtYXRjaCBjb25uX29wdCB3aXRoXG4gICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgIHwgYE9rIGNvbm4gLT4gQ29ubi5jbG9zZSBjb25uKVxuICAgICAgICA+PnwgZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkID1cbiAgICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwiUGVyc2lzdGVudCBjb25uZWN0aW9uIGNsb3NlZFwiXVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHQgPVxuICAgICAgaWYgaXNfY2xvc2VkIHRcbiAgICAgIHRoZW4gcmV0dXJuIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGN1cnJlbnRfY29ubmVjdGlvbiB0IHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBub3QgKENvbm4uaXNfY2xvc2VkIHgpIC0+IHJldHVybiAoT2sgeClcbiAgICAgICAgfCBTb21lIChfIDogQ29ubi50KSB8IE5vbmUgLT5cbiAgICAgICAgICBEZWZlcnJlZC5jaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlIChJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkKVxuICAgICAgICAgICAgOyBjaG9pY2UgKEl2YXIucmVhZCB0Lm5leHRfY29ubmVjdF9yZXN1bHQpIEZuLmlkXG4gICAgICAgICAgICBdKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHQgPVxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHQuZG9uJ3RfcmVjb25uZWN0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhZGRyZXNzIFBvbHkudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFBvbHkuc2V4cF9vZl90IHQuc2V4cF9vZl9hZGRyZXNzIHRcblxuICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIChUIHQpID1cbiAgICBQb2x5LmNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0XG4gIDs7XG5cbiAgbGV0IGNsb3NlX2ZpbmlzaGVkIChUIHQpID0gUG9seS5jbG9zZV9maW5pc2hlZCB0XG4gIGxldCBpc19jbG9zZWQgKFQgdCkgPSBQb2x5LmlzX2Nsb3NlZCB0XG4gIGxldCBjbG9zZSAoVCB0KSA9IFBvbHkuY2xvc2UgdFxuICBsZXQgc2VydmVyX25hbWUgKFQgdCkgPSBQb2x5LnNlcnZlcl9uYW1lIHRcbiAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiAoVCB0KSA9IFBvbHkuY3VycmVudF9jb25uZWN0aW9uIHRcbiAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHRcbiAgbGV0IGNvbm5lY3RlZCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkIHRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgIH5jb25uZWN0XG4gICAgICAgIH5hZGRyZXNzXG4gICAgICAgIGdldF9hZGRyZXNzXG4gICAgPVxuICAgIFRcbiAgICAgIChQb2x5LmNyZWF0ZVxuICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgIGdldF9hZGRyZXNzKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgdCA9XG4gIHwgS3JiXG4gIHwgS3JiX3Rlc3RfbW9kZVxuICB8IFJwY1xuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBiaW5faW9dXG5cbmxldCBtYWdpY193b3JkID0gZnVuY3Rpb25cbiAgfCBLcmIgLT4gXCJLUkIyXCJcbiAgfCBLcmJfdGVzdF9tb2RlIC0+IFwiS0JUXCJcbiAgfCBScGMgLT4gXCJSUENcIlxuOztcblxubGV0IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSA9IDVcblxubGV0IGdlbl9tYWdpY19udW1iZXIgd29yZCA9XG4gIFN0cmluZy50b19saXN0X3JldiB3b3JkXG4gIHw+IExpc3QuZm9sZCB+aW5pdDowIH5mOihmdW4gYWNjIGMgLT4gKGFjYyAqIDI1NikgKyBDaGFyLnRvX2ludCBjKVxuOztcblxubGV0IG1hZ2ljX251bWJlciB0ID0gZ2VuX21hZ2ljX251bWJlciAobWFnaWNfd29yZCB0KVxubGV0IGJ5X21hZ2ljX251bWJlciA9IEludC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCBhbGwgfmY6KGZ1biBwIC0+IG1hZ2ljX251bWJlciBwLCBwKSlcblxuKCogV2Ugb25jZSBtaW50ZWQgYSBuZXcgbWFnaWMgbnVtYmVyIGZvciBLcmIgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBwcm90b2NvbFxuICAgbmVnb3RpYXRpb24uICBMZXQncyBiZSBjYXJlZnVsIHRoYXQgd2UgZG9uJ3QgcmV1c2UgdGhlIG9sZCBtYWdpYyBudW1iZXIgKilcbmxldCByZXRpcmVkX2tyYl93b3JkID0gXCJLUkJcIlxuXG5sZXQldGVzdF91bml0IFwidmFsaWRhdGUgbWFnaWMgd29yZHNcIiA9XG4gIGxldCBtYWdpY193b3JkcyA9IHJldGlyZWRfa3JiX3dvcmQgOjogTGlzdC5tYXAgYWxsIH5mOm1hZ2ljX3dvcmQgaW5cbiAgbGV0IG1hZ2ljX251bWJlcnMgPSBMaXN0Lm1hcCBtYWdpY193b3JkcyB+ZjpnZW5fbWFnaWNfbnVtYmVyIGluXG4gICgqIE1hZ2ljIG51bWJlcnMgbXVzdCBmaXQgaW50byBPY2FtbCBpbnRlZ2VycyAoMzEgYml0cyBvbiAzMiBiaXQgYnVpbGRzKS4gKilcbiAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgbWFnaWNfbnVtYmVycyB+ZjooZnVuIG4gLT4gbiA8PSBJbnQub2ZfZmxvYXQgKCgyLiAqKiAzMC4pIC0uIDEuKSkpO1xuICAoKiBObyBkdXBsaWNhdGUgbWFnaWMgbnVtYmVycyAqKVxuICBhc3NlcnQgKG5vdCAoTGlzdC5jb250YWluc19kdXAgbWFnaWNfbnVtYmVycyB+Y29tcGFyZTpJbnQuY29tcGFyZSkpXG47O1xuXG4oKiBFbnN1cmUgdGVzdHMgYnJlYWsgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlIGNoYW5nZWQgKilcbmxldCV0ZXN0X3VuaXQgXCJtYWdpYyBudW1iZXJzXCIgPVxuICBhc3NlcnQgKGdlbl9tYWdpY19udW1iZXIgcmV0aXJlZF9rcmJfd29yZCA9IDRfMzQ2XzQ0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYiA9IDg0M18yMDdfMjQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiX3Rlc3RfbW9kZSA9IDVfNTIxXzk5NSk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIFJwYyA9IDRfNDExXzQ3NClcbjs7XG5cbmxldCV0ZXN0X3VuaXQgXCJtYWdpY19udW1iZXJfYmluX3NpemUgaXMgY29ycmVjdFwiID1cbiAgTGlzdC5pdGVyIGFsbCB+ZjooZnVuIHQgLT5cbiAgICBsZXQgbWFnaWNfbnVtYmVyID0gbWFnaWNfbnVtYmVyIHQgaW5cbiAgICBsZXQgc2l6ZSA9IEludC5iaW5fc2l6ZV90IG1hZ2ljX251bWJlciBpblxuICAgIFsldGVzdF9lcTogaW50XSBzaXplIG1hZ2ljX251bWJlcl9iaW5fc2l6ZSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIExpc3Rfd2l0aF9tYXhfbGVuX2ludGZcblxubW9kdWxlIE1ha2UgKENvbmZpZyA6IENvbmZpZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25maWdcblxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgYmluX3dyaXRlXVxuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyA9IExpc3QuX19iaW5fcmVhZF90X19cblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIHRyeSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiB3aXRoXG4gICAgfCBleG4gLT4gRXhuLnJlcmFpc2UgZXhuIChJbmZvLnRvX3N0cmluZ19odW0gY29udGV4dClcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IChiaW5fcmVhZGVyX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdCBiaW5fcmVhZGVyX2EucmVhZFxuICAgIDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gYmluX3JlYWRlcl9hLnJlYWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IChiaW5fYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaGFwZSA9IGJpbl9zaGFwZV90IGJpbl9hLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgYmluX2Eud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgYmluX2EucmVhZGVyXG4gICAgfVxuICA7O1xuXG4gIGxldCBvZl9saXN0X2V4biBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGlmIGxlbiA+IG1heF9sZW5cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkxpc3QgaXMgdG9vIGxhcmdlXCIgKGNvbnRleHQgOiBJbmZvLnQpIChsZW4gOiBpbnQpIChtYXhfbGVuIDogaW50KV07XG4gICAgbFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPSBMaXN0LnNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgdF9vZl9hIHNleHAgPVxuICAgIGxldCB0ID0gTGlzdC50X29mX3NleHAgdF9vZl9hIHNleHAgaW5cbiAgICBvZl9saXN0X2V4biB0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBLbm93bl9wcm90b2NvbCA9IEtub3duX3Byb3RvY29sXG5cbm1vZHVsZSBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUgPVxuICBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgbWF4X2xlbiA9IDEwMFxuICAgIGxldCBjb250ZXh0ID0gSW5mby5vZl9zdHJpbmcgXCJQcm90b2NvbF92ZXJzaW9uX2hlYWRlclwiXG4gIGVuZClcblxudHlwZSB0ID0gaW50IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS50XG5bQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBjcmVhdGVfZXhuIH5wcm90b2NvbCB+c3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIDo6IHN1cHBvcnRlZF92ZXJzaW9uc1xuICB8PiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUub2ZfbGlzdF9leG5cbjs7XG5cbmxldCBnZXRfcHJvdG9jb2wgKHQgOiB0KSA9XG4gIGxldCBwcm90b2NvbHMsIHZlcnNpb25zID1cbiAgICBMaXN0LnBhcnRpdGlvbl9tYXBcbiAgICAgICh0IDo+IGludCBsaXN0KVxuICAgICAgfmY6KGZ1biB2IC0+XG4gICAgICAgIG1hdGNoIE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlciB2IHdpdGhcbiAgICAgICAgfCBTb21lIHAgLT4gRmlyc3QgcFxuICAgICAgICB8IE5vbmUgLT4gU2Vjb25kIHYpXG4gIGluXG4gIG1hdGNoIHByb3RvY29scyB3aXRoXG4gIHwgW10gLT4gT2sgKE5vbmUsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBbIHAgXSAtPiBPayAoU29tZSBwLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgXyAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBtdWx0aXBsZSBtYWdpYyBudW1iZXJzIHNlZW4uXCJcbiAgICAgICAgICAocHJvdG9jb2xzIDogS25vd25fcHJvdG9jb2wudCBsaXN0KVxuICAgICAgICAgICh2ZXJzaW9ucyA6IGludCBsaXN0KV1cbjs7XG5cbmxldCBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyIH4odXMgOiB0KSB+KHBlZXIgOiB0KSA9XG4gIGxldCBvcGVuIE9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wsIHVzX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHVzIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wsIHBlZXJfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgcGVlciBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCA9XG4gICAgbWF0Y2ggdXNfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiTm8gbWFnaWMgbnVtYmVycyBzZWVuXCIgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KV1cbiAgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCA9XG4gICAgbWF0Y2ggcGVlcl9wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGFzc3VtZSBwZWVyIGlzIHNwZWFraW5nIG91ciBwcm90b2NvbCBpZiBbYWxsb3dfbGVnYWN5X3BlZXJdICopXG4gICAgICBpZiBhbGxvd19sZWdhY3lfcGVlclxuICAgICAgdGhlbiByZXR1cm4gdXNfcHJvdG9jb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcGVlcl9wcm90b2NvbCA9IGBVbmtub3duIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IFsgYFVua25vd24gXSldKVxuICBpblxuICBpZiBub3QgKFslY29tcGFyZS5lcXVhbDogS25vd25fcHJvdG9jb2wudF0gdXNfcHJvdG9jb2wgcGVlcl9wcm90b2NvbClcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldXG4gIGVsc2UgKFxuICAgIGxldCBwcm90b2NvbCA9IHVzX3Byb3RvY29sIGluXG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciB1c192ZXJzaW9ucyBwZWVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBubyBzaGFyZWQgdmVyc2lvbiBudW1iZXJzXCJcbiAgICAgICAgICAgICh1c192ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwZWVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHByb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldKVxuOztcblxubGV0IG1hdGNoZXNfbWFnaWNfcHJlZml4ICh0IDogdCkgfnByb3RvY29sID1cbiAgbGV0IG1hZ2ljX251bWJlciA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCBpblxuICBMaXN0Lm1lbSB+ZXF1YWw6SW50LmVxdWFsICh0IDo+IGludCBsaXN0KSBtYWdpY19udW1iZXJcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIChtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wpIGJpbl90LnJlYWRlclxuOztcblxubGV0IGFueV9tYWdpY19wcmVmaXggPVxuICBsZXQgZiB0ID1cbiAgICBMaXN0LmZpbmQgS25vd25fcHJvdG9jb2wuYWxsIH5mOihmdW4gcHJvdG9jb2wgLT4gbWF0Y2hlc19tYWdpY19wcmVmaXggfnByb3RvY29sIHQpXG4gIGluXG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlciBmIGJpbl90LnJlYWRlclxuOztcblxubW9kdWxlIE1hZ2ljX3ByZWZpeF9iaW5fcmVwciA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgKCogVGhlIGJpbiBwcm90IHJlcHJlc2VudGF0aW9uIG9mIGEgcHJvdG9jb2wgdmVyc2lvbiBoZWFkZXIgaXMgdGhlIHN0YW5kYXJkXG4gICAgIHJlcHJlc2VudGF0aW9uIGZvciBhbiBpbnQgbGlzdDpcblxuICAgICB8IG5hdDAgaW5kaWNhdGluZyBzaXplIHwgZWxlbWVudCAwIHwgZWxlbWVudCAxIHwgLi4uXG5cbiAgICAgW2NyZWF0ZV9leG5dIHdpbGwgYWx3YXlzIHB1dCB0aGUga25vd24gcHJvdG9jb2wgbWFnaWMgbnVtYmVyIGFzIFwiZWxlbWVudCAwXCIuXG5cbiAgICAgVGhlIGJpbiBzaXplIG9mIFwibmF0MCBpbmRpY2F0aW5nIHNpemVcIiBhbmQgXCJlbGVtZW50IDBcIiBpcyBmaXhlZCAodGhlcmUgYXJlIGV4cGVjdFxuICAgICB0ZXN0cyB0byBtYWtlIHN1cmUgd2UgbmV2ZXIgY2hhbmdlIHRoZW0pLiAqKVxuICBsZXQgYmluX3NpemUgPVxuICAgIGJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICArIEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlcl9iaW5fc2l6ZVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IChfbGlzdF9sZW5ndGggOiBCaW5fcHJvdC5OYXQwLnQpID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiBpblxuICAgIEJpbl9wcm90LlJlYWQuYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gSW50Ll9fYmluX3JlYWRfdF9fIH1cbiAgOztcbmVuZFxuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlcyA9XG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlclxuICAgIChmdW4gbWFnaWNfbnVtYmVyIC0+IChNYXAuZmluZCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIpIG1hZ2ljX251bWJlcilcbiAgICBNYWdpY19wcmVmaXhfYmluX3JlcHIuYmluX3JlYWRlcl90XG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZSA9IE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fc2l6ZVxuXG5tb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1ha2VfbGlzdF93aXRoX21heF9sZW4gPSBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlXG5lbmRcblxubGV0JXRlc3RfdW5pdCBcImJpbiBzaXplcyBhcmUgbm90IGNoYW5nZWQgYnkgYWNjaWRlbnRcIiA9XG4gICgqIEVuc3VyZSB0aGUgYmluX3NpemUgb2YgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICAgaXMgYWx3YXlzIDEuIFRoaXMgbWVhbnMgdGhhdCByZWdhcmRsZXNzIG9mIGhvdyBsb25nIHRoZSBsaXN0IG9mIHZlcnNpb25zIGluIHRoZVxuICAgICBwcm90b2NvbCBoZWFkZXIgaXMsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHRoZSBzYW1lIG51bWJlciBvZiBieXRlcy4gVGhlXG4gICAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludCBqdW1wcyB0byAzIGJ5dGVzIGF0IHRoZSB2YWx1ZSAxMjguICopXG4gIGxldCBib3VuZGVkX2xpc3RfYmluX3NpemUgPVxuICAgIEludC5iaW5fc2l6ZV90IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gIGluXG4gIGFzc2VydCAoYm91bmRlZF9saXN0X2Jpbl9zaXplID0gMSk7XG4gIGFzc2VydCAoNiA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSk7XG4gIGFzc2VydCAoXG4gICAgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZVxuICAgID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKVxuOztcbiIsInR5cGUgdCA9IEJpbl9wcm90Lk5hdDAudFxuW0BAZGVyaXZpbmcgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWUyZjRhLTQ5MGEtMTFlNi1iNjhmLWJiZDYyNDcyNTE2Y1wiXVxuXG5sZXQgYmluX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9uYXQwXG5sZXQgYmluX3NpemVfdCA9IEJpbl9wcm90LlNpemUuYmluX3NpemVfbmF0MFxubGV0IGJpbl93cml0ZXJfdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX3dyaXRlcl9uYXQwXG5sZXQgYmluX3dyaXRlX3QgPSBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfbmF0MFxubGV0IGJpbl9yZWFkZXJfdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXQwXG5sZXQgYmluX3JlYWRfdCA9IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbmF0MFxuXG5sZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdm5hdDAgPVxuICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG47O1xuXG5sZXQgb2ZfaW50X2V4biA9IEJpbl9wcm90Lk5hdDAub2ZfaW50XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxuXG5sZXQgb2Zfd3JpdGVyIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9ID1cbiAgbGV0IHdyaXRlIGJ1ZiB+cG9zIGEgPVxuICAgIGxldCBsZW4gPSBOYXQwLm9mX2ludF9leG4gKHNpemUgYSkgaW5cbiAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyBsZW4gaW5cbiAgICB3cml0ZSBidWYgfnBvcyBhXG4gIGluXG4gIGxldCBzaXplIGEgPVxuICAgIGxldCBsZW4gPSBOYXQwLm9mX2ludF9leG4gKHNpemUgYSkgaW5cbiAgICBOYXQwLmJpbl9zaXplX3QgbGVuICsgKChsZW4gOiBCaW5fcHJvdC5OYXQwLnQpIDo+IGludClcbiAgaW5cbiAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH1cbjs7XG5cbmxldCBvZl90eXBlX2NsYXNzIChiaW5fYSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9IG9mX3dyaXRlciBiaW5fYS53cml0ZXJcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBiaWdzdHJpbmdfYmluX3Byb3QgcyA9XG4gICAgICBsZXQgYmlnc3RyaW5nID0gQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQnl0ZXMuYmluX3dyaXRlcl90IHMgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJpZ3N0cmluZy5TdGFibGUuVjEuYmluX3dyaXRlcl90IGJpZ3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgYmluX3Byb3Rfd2l0aF9sZW5ndGggcyA9XG4gICAgICBsZXQgd3JpdGVyX3dpdGhfbGVuZ3RoID0gb2Zfd3JpdGVyIEJ5dGVzLmJpbl93cml0ZXJfdCBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgd3JpdGVyX3dpdGhfbGVuZ3RoIHNcbiAgICA7O1xuXG4gICAgbGV0IHRlc3QgbGVuID1cbiAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGJpZ3N0cmluZ192ZXJzaW9uID0gYmlnc3RyaW5nX2Jpbl9wcm90IHMgaW5cbiAgICAgIGxldCB3aXRoX2xlbmd0aF92ZXJzaW9uID0gYmluX3Byb3Rfd2l0aF9sZW5ndGggcyBpblxuICAgICAgaWYgQmlnc3RyaW5nLnRvX3N0cmluZyBiaWdzdHJpbmdfdmVyc2lvbiA8PiBCaWdzdHJpbmcudG9fc3RyaW5nIHdpdGhfbGVuZ3RoX3ZlcnNpb25cbiAgICAgIHRoZW4gZmFpbHdpdGhmIFwibWlzbWF0Y2ggZm9yIGxlbmd0aCAlZFwiIGxlbiAoKVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgZm9yIGxlbiA9IDAgdG8gSW50LnBvdyAyIDEwIGRvXG4gICAgICAgIHRlc3QgbGVuXG4gICAgICBkb25lO1xuICAgICAgZm9yIHBvdyA9IDEwIHRvIDIwIGRvXG4gICAgICAgIGxldCB4ID0gSW50LnBvdyAyIHBvdyBpblxuICAgICAgICB0ZXN0ICh4IC0gMSk7XG4gICAgICAgIHRlc3QgeDtcbiAgICAgICAgdGVzdCAoeCArIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmVyc2lvbiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IHN1bW1hcml6ZSB0cyA9XG4gIExpc3QubWFwIHRzIH5mOihmdW4geyBuYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgfD4gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkIH5pbml0OkludC5TZXQuZW1wdHkgfmY6SW50LlNldC5hZGRcbjs7XG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IGRlc2NyaXB0aW9ucyA9XG4gICAgWyB7IG5hbWUgPSBcImZvb1wiOyB2ZXJzaW9uID0gMSB9XG4gICAgOyB7IG5hbWUgPSBcImZvb1wiOyB2ZXJzaW9uID0gMiB9XG4gICAgOyB7IG5hbWUgPSBcImJhclwiOyB2ZXJzaW9uID0gNSB9XG4gICAgXVxuICBpblxuICBsZXQgc3VtbWFyeSA9IHN1bW1hcml6ZSBkZXNjcmlwdGlvbnMgaW5cbiAgcHJpbnRfcyBbJXNleHAgKHN1bW1hcnkgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07XG4gIFslZXhwZWN0IHt8ICgoYmFyICg1KSkgKGZvbyAoMSAyKSkpIHx9XVxuOztcbiIsIigqKiBBc3luY19ycGMgcHJvdG9jb2wgdHlwZXMsIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqKVxuXG4oKiBXQVJOSU5HOiBkbyBub3QgY2hhbmdlIGFueSBvZiB0aGVzZSB0eXBlcyB3aXRob3V0IGdvb2QgcmVhc29uICopXG5cbm9wZW4gQmluX3Byb3QuU3RkXG5vcGVuIFNleHBsaWIuU3RkXG5tb2R1bGUgUnBjX3RhZyA6IENvcmUuSWRlbnRpZmlhYmxlID0gQ29yZS5TdHJpbmdcbm1vZHVsZSBRdWVyeV9pZCA9IENvcmUuVW5pcXVlX2lkLkludDYzICgpXG5cbm1vZHVsZSBVbnVzZWRfcXVlcnlfaWQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdCA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBRdWVyeV9pZC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQgdCA9IFF1ZXJ5X2lkLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBScGNfZXJyb3IgOiBzaWdcbiAgb3BlbiBDb3JlXG5cbiAgdHlwZSB0ID1cbiAgICB8IEJpbl9pb19leG4gb2YgU2V4cC50XG4gICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIHwgV3JpdGVfZXJyb3Igb2YgU2V4cC50XG4gICAgfCBVbmNhdWdodF9leG4gb2YgU2V4cC50XG4gICAgfCBVbmltcGxlbWVudGVkX3JwYyBvZiBScGNfdGFnLnQgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEJpbl9pb19leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIHwgV3JpdGVfZXJyb3Igb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5jYXVnaHRfZXhuIG9mIENvcmUuU2V4cC50XG4gICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgQ29yZS5JbnQuU3RhYmxlLlYxLnQgXVxuICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4Y2M3NjZiZWZhMmNmNTY1ZWExNDdkOWZjZDVlYWFhYiB8fV1cbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb3JlLkNvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBDb3JlLlJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgSGVhZGVyID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcblxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhIFJwY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX3F1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBRdWVyeSBvZiAnYVxuICAgIHwgYEFib3J0XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX2luaXRpYWxfbWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlICgncmVzcG9uc2UsICdlcnJvcikgdCA9XG4gICAgeyB1bnVzZWRfcXVlcnlfaWQgOiBVbnVzZWRfcXVlcnlfaWQudFxuICAgIDsgaW5pdGlhbCA6ICgncmVzcG9uc2UsICdlcnJvcikgQ29yZS5SZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBFb2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB8IEhlYXJ0YmVhdFxuICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnkubmVlZHNfbGVuZ3RoXG4gICAgfCBSZXNwb25zZSBvZiAnYSBSZXNwb25zZS5uZWVkc19sZW5ndGhcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgc2V4cF9vZl1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSBtZXNzYWdlX2hhbmRsZXIgPSBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2FcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gc3RydWN0XG4gICgqKiBSZXN1bHQgb2YgYW4gW29uX21lc3NhZ2VdIGNhbGxiYWNrLiAgV2Ugc3BsaXQgdGhlIFtDb250aW51ZV0gYW5kIFtXYWl0IF9dIGNhc2VzIHRvXG4gICAgICBtYWtlIGl0IGNsZWFyIHRoYXQgW0NvbnRpbnVlXSBpcyB0aGUgZXhwZWN0ZWQgY2FzZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmVcbiAgICAgIG9wdGltaXplZCBmb3IgdGhpcyBjYXNlLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RvcCBvZiAnYVxuICAgIHwgQ29udGludWVcbiAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxuXG5tb2R1bGUgdHlwZSBSZWFkZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuXG4gICgqKiBTdGFydCByZWFkaW5nIGluY29taW5nIG1lc3NhZ2VzIGFuZCBwYXNzIHRoZW0gdG8gW29uX21lc3NhZ2VdLCB1bnRpbCBpdCByZXR1cm5zXG4gICAgICBbU3RvcCBfXS5cblxuICAgICAgW29uX2VuZF9vZl9iYXRjaF0gaXMgY2FsbGVkIGFmdGVyIHByb2Nlc3NpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgYmVmb3JlIHdhaXRpbmcgZm9yXG4gICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIGJlY29tZSByZWFkYWJsZSBhZ2Fpbi4gKilcbiAgdmFsIHJlYWRfZm9yZXZlclxuICAgIDogIHRcbiAgICAtPiBvbl9tZXNzYWdlOihCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgSGFuZGxlcl9yZXN1bHQudClcbiAgICAtPiBvbl9lbmRfb2ZfYmF0Y2g6KHVuaXQgLT4gdW5pdClcbiAgICAtPiAoJ2EsIFsgYEVvZiB8IGBDbG9zZWQgXSkgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIG1lc3NhZ2VfdG9vX2JpZyA9XG4gICAgeyBzaXplIDogaW50XG4gICAgOyBtYXhfbWVzc2FnZV9zaXplIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTZW50IG9mICdhXG4gICAgfCBDbG9zZWRcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBvZiBtZXNzYWdlX3Rvb19iaWdcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBXcml0ZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgbW9uaXRvciA6IHQgLT4gTW9uaXRvci50XG4gIHZhbCBieXRlc190b193cml0ZSA6IHQgLT4gaW50XG5cbiAgKCoqIEJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzZW5kIG1lc3NhZ2UgdXNpbmcgdGhpcyB3cml0ZXIsXG4gICAgICBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgd3JpdGVyIGlzIGNsb3NlZCBvciB0aGUgY29uc3VtZXIgbGVhdmVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgY2FjaGVkIGJ5IFtScGMuVHJhbnNwb3J0XSAqKVxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtmbHVzaGVkIHRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IG11c3QgYmVjb21lIGRldGVybWluZWQgd2hlbiBhbGwgcHJpb3Igc2VudFxuICAgICAgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZC5cblxuICAgICAgSXQgbXVzdCBiZSBPSyB0byBjYWxsIFtmbHVzaGVkIHRdIGFmdGVyIFt0XSBoYXMgYmVlbiBjbG9zZWQuICopXG4gIHZhbCBmbHVzaGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3JlYWR5X3RvX3dyaXRlIHRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHNlbmQgbWVzc2FnZXNcbiAgICAgIGFnYWluLiBBc3luYyBSUEMgY2FsbHMgdGhpcyBmdW5jdGlvbiBhZnRlciBzZW5kaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIHRvIGF2b2lkXG4gICAgICBmbG9vZGluZyB0aGUgdHJhbnNwb3J0LlxuXG4gICAgICBVc2luZyBbbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZF0gaXMgYW4gYWNjZXB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gKilcbiAgdmFsIHJlYWR5X3RvX3dyaXRlIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogQWxsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHNlbmQgZXhhY3RseSBvbmUgbWVzc2FnZS4gKilcblxuICB2YWwgc2VuZF9iaW5fcHJvdCA6IHQgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICAoKiogU2FtZSBhcyBbc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXSBidXQgdGhlIGJpZ3N0cmluZyBjYW4ndCBiZSBtb2RpZmllZCB1bnRpbCB0aGVcbiAgICAgIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyB0aGVcbiAgICAgIGJpZ3N0cmluZy4gKilcbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IERlZmVycmVkLnQgU2VuZF9yZXN1bHQudFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbm1vZHVsZSBIZWFkZXIgPSBzdHJ1Y3RcbiAgbGV0IGxlbmd0aCA9IDhcbiAgbGV0IHVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgPSBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gYnVmIH5wb3NcblxuICBsZXQgdW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyBwYXlsb2FkX2xlbiA9XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50NjRfbGUgYnVmIH5wb3MgcGF5bG9hZF9sZW5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5IYW5kbGVyX3Jlc3VsdFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5SZWFkZXJcblxuICB0eXBlIHQgPSBUIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpICogJ2EgLT4gdFxuXG4gIGxldCBwYWNrIG0gdCA9IFQgKG0sIHQpXG5cbiAgKCogV2UgcHV0IHR5cGUgYW5ub3RhdGlvbnMgdG8gYmUgc3VyZSB0aGUgdHlwZSBpcyBub3QgYSBmdW5jdGlvbiB0eXBlLCBpLmUuIHRvIGF2b2lkXG4gICAgIGNyZWF0aW5nIGNsb3N1cmVzICopXG4gIGxldCBzZXhwX29mX3QgKFQgKChtb2R1bGUgTSksIHQpKSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUICgobW9kdWxlIE0pLCB0KSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcblxuICBsZXQgcmVhZF9mb3JldmVyIChUICgobW9kdWxlIE0pLCB0KSkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IF8gRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkX2ZvcmV2ZXIgdCB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoXG4gIDs7XG5cbiAgbGV0IHJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdCAoYmluX3JlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICByZWFkX2ZvcmV2ZXJcbiAgICAgIHRcbiAgICAgIH5vbl9tZXNzYWdlOihmdW4gYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgICAgbGV0IHggPSBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGlmICFwb3NfcmVmIDw+IHBvcyArIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICAgICAoIXBvc19yZWYgLSBwb3MpXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgU3RvcCB4KVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDppZ25vcmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5TZW5kX3Jlc3VsdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5Xcml0ZXJcblxuICB0eXBlICdhIHdyaXRlciA9XG4gICAgeyBpbXBsIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgOyB0IDogJ2FcbiAgICAoKiBXZSBjYWNoZSB0aGUgcmVzdWx0IG9mIFtzdG9wcGVkXSBiZWNhdXNlIGl0IGlzIG9mdGVuIHRoZSBbRGVmZXJyZWQuYW55XSBvZiBzZXZlcmFsXG4gICAgICAgb3RoZXIgZGVmZXJyZWRzIGFuZCB3ZSB3YW50IFtjYW5fc2VuZF0gdG8gYmUgc2ltcGxlLiAqKVxuICAgIDsgc3RvcHBlZCA6IHVuaXQgRGVmZXJyZWQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogJ2Egd3JpdGVyIC0+IHRcblxuICBsZXQgcGFjayAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgdCA9XG4gICAgVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkID0gTS5zdG9wcGVkIHQgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IG1vbml0b3IgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IE1vbml0b3IudCA9IE0ubW9uaXRvciB0XG4gIGxldCBieXRlc190b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogaW50ID0gTS5ieXRlc190b193cml0ZSB0XG4gIGxldCBmbHVzaGVkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmZsdXNoZWQgdFxuXG4gIGxldCByZWFkeV90b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWR5X3RvX3dyaXRlIHRcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIGJpbl93cml0ZXIgeCA6IF8gU2VuZF9yZXN1bHQudCA9XG4gICAgTS5zZW5kX2Jpbl9wcm90IHQgYmluX3dyaXRlciB4XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pXG4gICAgICAgIGJpbl93cml0ZXJcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDogXyBTZW5kX3Jlc3VsdC50XG4gICAgPVxuICAgIE0uc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgICAgICAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pXG4gICAgICAgIGJpbl93cml0ZXJcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDogXyBTZW5kX3Jlc3VsdC50XG4gICAgPVxuICAgIE0uc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nIHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IHN0b3BwZWQgKFQgeyBzdG9wcGVkOyBfIH0pID0gc3RvcHBlZFxuXG4gIGxldCBjYW5fc2VuZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkIH0pID1cbiAgICBub3QgKE0uaXNfY2xvc2VkIHQgfHwgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wcGVkKVxuICA7O1xuXG4gIGxldCB0cmFuc2ZlciB0ID8obWF4X251bV92YWx1ZXNfcGVyX3JlYWQgPSAxXzAwMCkgcGlwZSBmID1cbiAgICBsZXQgY29uc3VtZXIgPVxuICAgICAgUGlwZS5hZGRfY29uc3VtZXIgcGlwZSB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgICAgbGV0JW1hcCAoKSA9IGZsdXNoZWQgdCBpblxuICAgICAgICBgT2spXG4gICAgaW5cbiAgICBsZXQgZW5kX29mX3BpcGUgPVxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBsZXQgcmVjIGl0ZXIgKCkgPVxuICAgICAgICAgIGlmIGNhbl9zZW5kIHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIFBpcGUucmVhZF9ub3cnIHBpcGUgfmNvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoOm1heF9udW1fdmFsdWVzX3Blcl9yZWFkXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgICAgIFF1ZXVlLml0ZXIgcSB+ZjtcbiAgICAgICAgICAgICAgUGlwZS5Db25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtIGNvbnN1bWVyO1xuICAgICAgICAgICAgICByZWFkeV90b193cml0ZSB0ID4+PiBpdGVyXG4gICAgICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICAgICBQaXBlLnZhbHVlc19hdmFpbGFibGUgcGlwZSA+Pj4gZnVuIChgT2sgfCBgRW9mKSAtPiBpdGVyICgpXG4gICAgICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGl2YXIgKCkpXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKCkpXG4gICAgaW5cbiAgICBsZXQlbWFwICgpID0gRGVmZXJyZWQuYW55IFsgZW5kX29mX3BpcGU7IHN0b3BwZWQgdCBdIGluXG4gICAgUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPVxuICB7IHJlYWRlciA6IFJlYWRlci50XG4gIDsgd3JpdGVyIDogV3JpdGVyLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNsb3NlIHQgPVxuICBsZXQlYmluZCAoKSA9IFdyaXRlci5jbG9zZSB0LndyaXRlciBpblxuICBSZWFkZXIuY2xvc2UgdC5yZWFkZXJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFByb3RvY29sXG5cbigqKiBUaGUgdHlwZXMgb2YgdGhlIFtJbXBsZW1lbnRhdGlvbl0gYW5kIFtJbXBsZW1lbnRhdGlvbnNdIG1vZHVsZXMsIHdoaWNoIGhhdmVcbiAgICBhIGRlcGVuZGVuY3kgY3lsZTogW0ltcGxlbWVudGF0aW9uXSAtPiBbRGlyZWN0X3N0cmVhbV93cml0ZXJdIC0+XG4gICAgW0ltcGxlbWVudGF0aW9uc10gLT4gW0ltcGxlbWVudGF0aW9uXS4gKilcblxubW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyX2lkID0gVW5pcXVlX2lkLkludDYzICgpXG5cbm1vZHVsZSBPbl9leGNlcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNhbGxiYWNrIDogKGV4biAtPiB1bml0KSBvcHRpb24gW0BzZXhwLm9taXRfbmlsXVxuICAgIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSByZWMgSW1wbGVtZW50YXRpb24gOiBzaWdcbiAgbW9kdWxlIEV4cGVydCA6IHNpZ1xuICAgIG1vZHVsZSBSZXNwb25kZXIgOiBzaWdcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICAgIDsgbXV0YWJsZSByZXNwb25kZWQgOiBib29sXG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICAgIHwgUmVwbGllZFxuICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgRiA6IHNpZ1xuICAgIHR5cGUgKF8sIF8pIHJlc3VsdF9tb2RlID1cbiAgICAgIHwgQmxvY2tpbmcgOiAoJ2EsICdhKSByZXN1bHRfbW9kZVxuICAgICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gJ3VwZGF0ZSBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgICAgfCBPbmVfd2F5IDpcbiAgICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHVuaXQpXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGMgOlxuICAgICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjX2V4cGVydCA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgICAgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgU3RyZWFtaW5nX3JwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgZW5kXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICAgIDsgc2hhcGVzIDogU2V4cC50IExhenkudFxuICAgIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgICB9XG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvblxuXG5hbmQgSW1wbGVtZW50YXRpb25zIDogc2lnXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICAgIFsgYFJhaXNlXG4gICAgfCBgQ29udGludWVcbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gICAgfCBgQ2FsbCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgICB8IGBFeHBlcnQgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgICBdXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICAgIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBtb2R1bGUgcmVjIEluc3RhbmNlIDogc2lnXG4gICAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgICAgfCBEaXJlY3QgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG5cbiAgICB0eXBlICdhIHVucGFja2VkID1cbiAgICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2EgaW1wbGVtZW50YXRpb25zXG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiAoUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAnYSBJbXBsZW1lbnRhdGlvbi50KSBvcHRpb25cbiAgICAgIDsgcGFja2VkX3NlbGYgOiB0XG4gICAgICB9XG5cbiAgICBhbmQgdCA9IFQgOiBfIHVucGFja2VkIC0+IHRcbiAgZW5kXG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvbnNcblxuYW5kIERpcmVjdF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gIG1vZHVsZSBQZW5kaW5nX3Jlc3BvbnNlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm9ybWFsIG9mICdhXG4gICAgICB8IEV4cGVydCBvZiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm90X3N0YXJ0ZWQgb2YgJ2EgUGVuZGluZ19yZXNwb25zZS50IFF1ZXVlLnRcbiAgICAgIHwgU3RhcnRlZFxuICBlbmRcblxuICBtb2R1bGUgSWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgIDsgaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudFxuICAgIDsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX3N0cmVhbV93cml0ZXIudFxuICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICB9XG5cbiAgYW5kICdhIGdyb3VwX2VudHJ5ID1cbiAgICB7IGdyb3VwIDogJ2EgRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAudFxuICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgfVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBbY29tcG9uZW50c10gaXMgb25seSB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSBbY29tcG9uZW50c19ieV9pZF0gc28gd2UgY2FuIGl0ZXJhdGVcbiAgICAgICAgICAgb3ZlciBpdHMgZWxlbWVudHMgbW9yZSBxdWlja2x5IHRoYW4gd2UgY291bGQgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgb2ZcbiAgICAgICAgICAgW2NvbXBvbmVudHNfYnlfaWRdLiAqKVxuICAgICAgICBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgY29tcG9uZW50ID1cbiAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgIH1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA6PSAnYSB0XG5lbmQgPVxuICBEaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5hbmQgQ2FjaGVkX3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgOyBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB9XG5lbmQgPVxuICBDYWNoZWRfc3RyZWFtX3dyaXRlclxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5Pbl9leGNlcHRpb24udCA9XG4gIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZV9jb25uZWN0aW9uID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gdHJ1ZSB9XG5sZXQgY29udGludWUgPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSBmYWxzZSB9XG5cbmxldCBoYW5kbGVfZXhuXG4gICAgICB7IGNhbGxiYWNrOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSB9XG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICBleG5cbiAgPVxuICBPcHRpb24uaXRlciBjYWxsYmFjayB+ZjooZnVuIGNhbGxiYWNrIC0+IGNhbGxiYWNrIGV4bik7XG4gIGlmIGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gIHRoZW4gTW9uaXRvci5zZW5kX2V4biBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvblxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBFeHBlcnQuUmVzcG9uZGVyLnQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHF1ZXJ5X2lkIHdyaXRlciA9IHsgcXVlcnlfaWQ7IHdyaXRlcjsgcmVzcG9uZGVkID0gZmFsc2UgfVxuICBlbmRcblxuICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgIHwgUmVwbGllZFxuICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgRiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdF9tb2RlID0gKCdhLCAnYikgRi5yZXN1bHRfbW9kZSA9XG4gICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EpIHJlc3VsdF9tb2RlXG4gICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGwgPVxuICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgRi5zdHJlYW1pbmdfaW1wbCA9XG4gICAgfCBQaXBlIG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAoJ2luaXQgKiAndXBkYXRlIFBpcGUuUmVhZGVyLnQsICdpbml0KSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAndXBkYXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgRi50ID1cbiAgICB8IE9uZV93YXkgOlxuICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwYyA6XG4gICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgKCogJ2luaXQgY2FuIGJlIGFuIGVycm9yIG9yIGFuIGluaXRpYWwgc3RhdGUgKilcbiAgICAgICAgKiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBsZXQgc2V4cF9vZl90IF8gPSBmdW5jdGlvblxuICAgIHwgT25lX3dheV9leHBlcnQgXyB8IE9uZV93YXkgXyAtPiBbJW1lc3NhZ2UgXCJvbmUtd2F5XCJdXG4gICAgfCBScGNfZXhwZXJ0IF8gfCBScGMgXyAtPiBbJW1lc3NhZ2UgXCJycGNcIl1cbiAgICB8IFN0cmVhbWluZ19ycGMgXyAtPiBbJW1lc3NhZ2UgXCJzdHJlYW1pbmctcnBjXCJdXG4gIDs7XG5cbiAgbGV0IGxpZnQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKSAtPiBPbmVfd2F5IChiaW5fbXNnLCBmdW4gc3RhdGUgc3RyIC0+IGltcGwgKGYgc3RhdGUpIHN0cilcbiAgICB8IE9uZV93YXlfZXhwZXJ0IGltcGwgLT5cbiAgICAgIE9uZV93YXlfZXhwZXJ0IChmdW4gc3RhdGUgYnVmIH5wb3MgfmxlbiAtPiBpbXBsIChmIHN0YXRlKSBidWYgfnBvcyB+bGVuKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCAoZnVuIHN0YXRlIHEgLT4gaW1wbCAoZiBzdGF0ZSkgcSksIHJlc3VsdF9tb2RlKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICgoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPiBpbXBsIChmIHN0YXRlKSByZXNwIGJ1ZiB+cG9zIH5sZW4pLCByZXN1bHRfbW9kZSlcbiAgICB8IFN0cmVhbWluZ19ycGMgKGJpbl9xLCBiaW5faSwgYmluX3UsIGltcGwpIC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPiBQaXBlIChmdW4gc3RhdGUgcSAtPiBpbXBsIChmIHN0YXRlKSBxKVxuICAgICAgICB8IERpcmVjdCBpbXBsIC0+IERpcmVjdCAoZnVuIHN0YXRlIHEgdyAtPiBpbXBsIChmIHN0YXRlKSBxIHcpXG4gICAgICBpblxuICAgICAgU3RyZWFtaW5nX3JwYyAoYmluX3EsIGJpbl9pLCBiaW5fdSwgaW1wbClcbiAgOztcbmVuZFxuXG50eXBlIG5vbnJlYyAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gIHsgdGFnIDogUnBjX3RhZy50XG4gIDsgdmVyc2lvbiA6IGludFxuICA7IGYgOiAnY29ubmVjdGlvbl9zdGF0ZSBGLnRcbiAgOyBzaGFwZXMgOiBTZXhwLnQgTGF6eS50XG4gIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBScGNfdGFnLnRvX3N0cmluZyB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbiB9XG5sZXQgbGlmdCB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdCB+ZiB0LmYgfVxubGV0IHVwZGF0ZV9vbl9leGNlcHRpb24gdCB+ZiA9IHsgdCB3aXRoIG9uX2V4Y2VwdGlvbiA9IGYgdC5vbl9leGNlcHRpb24gfVxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQcm90b2NvbC5ScGNfZXJyb3JcbmluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoUHJvdG9jb2wuUnBjX2Vycm9yKVxuXG5leGNlcHRpb24gUnBjIG9mIHQgKiBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHJhaXNlIHQgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA9IHJhaXNlIChScGMgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pKVxuXG5sZXQgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IENvbm5lY3Rpb25fY2xvc2VkIC0+XG4gICAgWyVzZXhwIGBDb25uZWN0aW9uX2Nsb3NlZCAoZ2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uICgpIDogU2V4cC50KV1cbiAgfCBCaW5faW9fZXhuIF9cbiAgfCBXcml0ZV9lcnJvciBfXG4gIHwgVW5jYXVnaHRfZXhuIF9cbiAgfCBVbmltcGxlbWVudGVkX3JwYyBfXG4gIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IHNleHBfb2ZfdCB0XG47O1xuXG4oKiBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdGFrZSBhIFtDb25uZWN0aW9uLnRdLCBidXQgd2UgdGFrZSBpdHMgcGllY2VzIGluc3RlYWQgdG9cbiAgIGF2b2lkIGEgZGVwZW5kZW5jeSBjeWNsZSAqKVxubGV0IHRvX2Vycm9yXG4gICAgICB0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgRGVzY3JpcHRpb24ubmFtZSA9IHJwY19uYW1lOyB2ZXJzaW9uID0gcnBjX3ZlcnNpb24gfVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgPVxuICBsZXQgcnBjX2Vycm9yID1cbiAgICBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgIGxldCBjbG9zZV9yZWFzb24gPVxuICAgICAgICAoKiBVc3VhbGx5IChhbHdheXM/KSBoZXJlIHdlIHdpbGwgaGF2ZSB0aGUgZGVmZXJyZWQgYWxyZWFkeSBmdWxsXG4gICAgICAgICAgIGJlY2F1c2UgQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeVxuICAgICAgICAgICBjbG9zZWQgKilcbiAgICAgICAgRGVmZXJyZWQucGVlayBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIGluXG4gICAgICBbJXNleHAgKGNsb3NlX3JlYXNvbiA6IEluZm8udCBvcHRpb24pXSlcbiAgaW5cbiAgRXJyb3IuY3JlYXRlX3NcbiAgICBbJXNleHBcbiAgICAgIHsgcnBjX2Vycm9yIDogU2V4cC50XG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgcnBjX25hbWUgOiBzdHJpbmdcbiAgICAgIDsgcnBjX3ZlcnNpb24gOiBpbnRcbiAgICAgIH1dXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbnR5cGUgbG9jYXRlZF9lcnJvciA9XG4gIHsgbG9jYXRpb24gOiBzdHJpbmdcbiAgOyBleG4gOiBFeG4udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCBiaW5faW9fZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLkJpbl9pb19leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgdHJ5X3dpdGggP29uX2JhY2tncm91bmRfZXhjZXB0aW9uID9ydW4gfmxvY2F0aW9uIGYgPVxuICBsZXQgeCA9XG4gICAgbGV0IHJlc3QgPVxuICAgICAgbWF0Y2ggb25fYmFja2dyb3VuZF9leGNlcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGBMb2dcbiAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgIGluXG4gICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgfnJlc3RcbiAgICAgIH5ydW46KE9wdGlvbi52YWx1ZSBydW4gfmRlZmF1bHQ6YFNjaGVkdWxlKVxuICAgICAgZlxuICBpblxuICBsZXQgam9pbiA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4blxuICBpblxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIHggd2l0aFxuICB8IE5vbmUgLT4geCA+Pnwgam9pblxuICB8IFNvbWUgeCAtPiByZXR1cm4gKGpvaW4geClcbjs7XG5cbmxldCBvcl9lcnJvciB+cnBjX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgPVxuICBSZXN1bHQubWFwX2Vycm9yXG4gICAgfmY6XG4gICAgICAoUnBjX2Vycm9yLnRvX2Vycm9yXG4gICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZClcbjs7XG4iLCJvcGVuIENvcmVcblxuKCogdXRpbGl0eSBmdW5jdGlvbiBmb3IgYmluLWlvJ2luZyBvdXQgb2YgYSBCaWdzdHJpbmcudCAqKVxubGV0IGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAoYmluX3JlYWRlcl90IDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcilcbiAgICAgID9hZGRfbGVuXG4gICAgICBidWZcbiAgICAgIH5wb3NfcmVmXG4gICAgICB+KGxlbiA6IE5hdDAudClcbiAgICAgIH5sb2NhdGlvblxuICA9XG4gIHRyeVxuICAgIGxldCBpbml0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGRhdGEgPSBiaW5fcmVhZGVyX3QucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgYWRkX2xlbiA9XG4gICAgICBtYXRjaCBhZGRfbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgYWRkX2xlbiAtPiBhZGRfbGVuIGRhdGFcbiAgICBpblxuICAgIGlmICFwb3NfcmVmIC0gaW5pdF9wb3MgKyBhZGRfbGVuIDw+IChsZW4gOj4gaW50KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICghcG9zX3JlZiAtIGluaXRfcG9zKVxuICAgICAgICAobGVuIDogTmF0MC50IDo+IGludClcbiAgICAgICAgKCk7XG4gICAgT2sgZGF0YVxuICB3aXRoXG4gIHwgZSAtPiBScGNfcmVzdWx0LmJpbl9pb19leG4gfmxvY2F0aW9uIGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxuKCogQ29tbXV0ZSBSZXN1bHQgYW5kIERlZmVycmVkLiAqKVxubGV0IGRlZmVyX3Jlc3VsdCA6ICdhICdiLiAoJ2EgRGVmZXJyZWQudCwgJ2IpIFJlc3VsdC50IC0+ICgnYSwgJ2IpIFJlc3VsdC50IERlZmVycmVkLnRcbiAgPSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gcmV0dXJuIGVyclxuICAgIHwgT2sgZCAtPlxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQlbWFwIHggPSBkIGluXG4gICAgICAgICBPayB4XG4gICAgICAgfCBTb21lIGQgLT4gcmV0dXJuIChPayBkKSlcbjs7XG5cbm1vZHVsZSBEZWZlcnJlZF9pbW1lZGlhdGUgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBEZWZlcnJlZC50XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYmluZCBkIH5mID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZCA+Pj0gZlxuICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgOztcblxuICAgIGxldCBtYXAgZCB+ZiA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgfCBOb25lIC0+IGQgPj58IGZcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiAoZiB4KVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgUmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlclxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgWyBgUmFpc2VcbiAgfCBgQ29udGludWVcbiAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICB8IGBDYWxsIG9mXG4gICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0ID1cbiAgWyAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICB8IGBFeHBlcnQgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFJlc3BvbmRlci50XG4gICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gIF1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zLnQgPVxuICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnRcbiAgfVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxubGV0IGRlc2NyaXB0aW9ucyB0ID0gSGFzaHRibC5rZXlzIHQuaW1wbGVtZW50YXRpb25zXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9IEluc3RhbmNlLnN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgIHwgRGlyZWN0IDpcbiAgICAgICAgKF8gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFtAc2V4cC5vcGFxdWVdKVxuICAgICAgICAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZXMgPSAoUC5RdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdW5wYWNrZWQgPSAnYSBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAoJ2EgaW1wbGVtZW50YXRpb25zW0BzZXhwLm9wYXF1ZV0pXG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgIDsgbXV0YWJsZSBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAoRGVzY3JpcHRpb24udCAqICgnYSBJbXBsZW1lbnRhdGlvbi50W0BzZXhwLm9wYXF1ZV0pKSBvcHRpb25cbiAgICAoKiBbcGFja2VkX3NlbGZdIGlzIGhlcmUgc28gd2UgY2FuIGVzc2VudGlhbGx5IHBhY2sgYW4gdW5wYWNrZWQgaW5zdGFuY2Ugd2l0aG91dCBkb2luZ1xuICAgICAgIGFueSBhZGRpdGlvbmFsIGFsbG9jYXRpb24uICopXG4gICAgOyBwYWNrZWRfc2VsZiA6ICh0W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGFuZCB0ID0gSW5zdGFuY2UudCA9IFQgOiBfIHVucGFja2VkIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gWyVzZXhwX29mOiBfIHVucGFja2VkXSB0XG5cbiAgbGV0IHNlbmRfd3JpdGVfZXJyb3IgdCBpZCBzZXhwID1cbiAgICBsZXQgZGF0YSA6IF8gUC5NZXNzYWdlLnQgPSBSZXNwb25zZSB7IGlkOyBkYXRhID0gRXJyb3IgKFdyaXRlX2Vycm9yIHNleHApIH0gaW5cbiAgICBtYXRjaCBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgZGF0YSB3aXRoXG4gICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIFwiRmFpbGVkIHRvIHNlbmQgd3JpdGUgZXJyb3IgdG8gY2xpZW50XCJcbiAgICAgICAgLCB7IGVycm9yID0gKHNleHAgOiBTZXhwLnQpOyByZWFzb24gPSAociA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpIH1dXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkIChyZXN1bHQgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gKClcbiAgICB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgc2VuZF93cml0ZV9lcnJvciB0IGlkIChbJXNleHBfb2Y6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdIHIpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2UgdCB+aWQgYmluX3dyaXRlciB4ID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlbiBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBiaW5fd3JpdGVyIHggfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+aWQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0LndyaXRlciBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl9kYXRhIGRhdGEgPVxuICAgIGxldCBiaW5fd3JpdGVyID1cbiAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2RhdGEpXG4gICAgaW5cbiAgICB3cml0ZV9tZXNzYWdlIHQgfmlkIGJpbl93cml0ZXIgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgfSlcbiAgOztcblxuICBtb2R1bGUgQ2FjaGVkX3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgICB0eXBlIGluc3RhbmNlXG4gICAgdHlwZSAnYSB0ID0gJ2EgSW1wbGVtZW50YXRpb25fdHlwZXMuQ2FjaGVkX3N0cmVhbV93cml0ZXIudFxuXG4gICAgdmFsIGNyZWF0ZSA6IGlkOlAuUXVlcnlfaWQudCAtPiBiaW5fd3JpdGVyOidhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIHRcbiAgICB2YWwgd3JpdGUgOiAnYSB0IC0+IGluc3RhbmNlIC0+IFAuUXVlcnlfaWQudCAtPiAnYSAtPiB1bml0XG5cbiAgICB2YWwgd3JpdGVfZXhwZXJ0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBpbnN0YW5jZVxuICAgICAgLT4gUC5RdWVyeV9pZC50XG4gICAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAgIC0+IHBvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcblxuICAgIHZhbCB3cml0ZV9zdHJpbmcgOiAnYSB0IC0+IGluc3RhbmNlIC0+IFAuUXVlcnlfaWQudCAtPiBzdHJpbmcgLT4gdW5pdFxuICBlbmRcbiAgd2l0aCB0eXBlIGluc3RhbmNlIDo9IHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfc3RyZWFtX3dyaXRlci50ID1cbiAgICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICAgIDsgKCogTGVuZ3RoIG9mIHRoZSB1c2VyIGRhdGEgcGFydC4gV2Ugc2V0IHRoaXMgZmllbGQgd2hlbiBzZW5kaW5nIGEgbWVzc2FnZS4gVGhpc1xuICAgICAgICAgICByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkIGltbWVkaWF0ZWx5ICh3aGljaCBpcyB0aGVcbiAgICAgICAgICAgb25seSBhY2NlcHRhYmxlIHNlbWFudGljcyBmb3IgdGhlIHRyYW5zcG9ydCBsYXllciBhbnl3YXksIGFzIGl0IGRvZXNuJ3Qga25vdyBpZlxuICAgICAgICAgICB0aGUgdmFsdWUgaXMgbXV0YWJsZSBvciBub3QpLlxuXG4gICAgICAgICAgIFtkYXRhX2xlbl0gaXMgcGFzc2VkIHRvIGJpbi1wcm90IHdyaXRlcnMgYnkgbXV0YXRpbmcgW2RhdGFfbGVuXSBpbnN0ZWFkIG9mIGJ5XG4gICAgICAgICAgIHBhc3NpbmcgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBhdm9pZCBzb21lIGFsbG9jYXRpb24uXG4gICAgICAgICopXG4gICAgICAgIG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICB9XG5cblxuICAgIHR5cGUgdm9pZCA9IFZvaWRcblxuICAgIGxldCBiaW5fc2l6ZV92b2lkIFZvaWQgPSAwXG4gICAgbGV0IGJpbl93cml0ZV92b2lkIF9idWYgfnBvcyBWb2lkID0gcG9zXG5cbiAgICB0eXBlIHZvaWRfbWVzc2FnZSA9IHZvaWQgUC5NZXNzYWdlLm5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICB0eXBlIHZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEgPSB2b2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX3dyaXRlXVxuXG4gICAgKCogVGhpcyBpcyBub3QgcmUtZW50cmFudCBidXQgQXN5bmMgY29kZSBhbHdheXMgcnVucyBvbiBvbmUgdGhyZWFkIGF0IGEgdGltZSAqKVxuICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDMyXG5cbiAgICBsZXQgY2FjaGVfYmluX3Byb3R0ZWQgKGJpbl93cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB4ID1cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyLndyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmZmVyIH5wb3M6MCB+bGVuXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfmlkIH5iaW5fd3JpdGVyIDogYSB0ID1cbiAgICAgIGxldCBoZWFkZXJfcHJlZml4ID1cbiAgICAgICAgY2FjaGVfYmluX3Byb3R0ZWQgYmluX3dyaXRlcl92b2lkX21lc3NhZ2UgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayBWb2lkIH0pXG4gICAgICBpblxuICAgICAgeyBoZWFkZXJfcHJlZml4OyBiaW5fd3JpdGVyOyBkYXRhX2xlbiA9IE5hdDAub2ZfaW50X2V4biAwIH1cbiAgICA7O1xuXG4gICAgKCogVGhpcyBwYXJ0IG9mIHRoZSBtZXNzYWdlIGhlYWRlciBpcyBhIGNvbnN0YW50LCBtYWtlIGl0IGEgbGl0ZXJhbCB0byBtYWtlIHRoZVxuICAgICAgIHdyaXRpbmcgY29kZSBzbGlnaHRseSBmYXN0ZXIuICopXG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gPSA0XG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMiA9IDB4OGE3OWxcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzdHJlYW1fcmVzcG9uc2VfKiBjb25zdGFudHMgYXJlIGNvcnJlY3RcIiA9XG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgYmluX3dyaXRlcl92b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhLndyaXRlXG4gICAgICAgICAgYnVmZmVyXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgKGBPayBWb2lkIDogdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSlcbiAgICAgIGluXG4gICAgICBhc3NlcnQgKGxlbiA9IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4pO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50MzJfdF9sZSBidWZmZXIgfnBvczowXG4gICAgICAgID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyKVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyID1cbiAgICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICAgICgqIFZlcnkgbG93LWxldmVsIGJpbl9wcm90IHN0dWZmLi4uICopXG4gICAgICBCaW5fcHJvdC5Db21tb24uYXNzZXJ0X3BvcyBwb3M7XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIHN0cl9sZW4gaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmluX3Byb3QuQ29tbW9uLnVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuOnN0cl9sZW47XG4gICAgICBuZXh0XG4gICAgOztcblxuICAgICgqIFRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgMyB2YXJpYW50cyBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlLiBUaGV5XG4gICAgICAgc2VyaWFsaXplIGEgW1Jlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayAoYE9rIGRhdGFfbGVuKSB9XSB2YWx1ZSwgdGFraW5nIGNhcmUgb2ZcbiAgICAgICB3cml0aW5nIHRoZSBbTmF0MC50XSBsZW5ndGggcHJlZml4IHdoZXJlIGFwcHJvcmlhdGUuXG5cbiAgICAgICBCZWFyIGluIG1pbmQgdGhhdCB0aGVyZSBhcmUgdHdvIGxldmVscyBvZiBsZW5ndGggcHJlZml4ZXMgZm9yIHN0cmVhbSByZXNwb25zZSBkYXRhXG4gICAgICAgbWVzc2FnZTogb25lIGZvciB0aGUgdXNlciBkYXRhICh1bmRlciB0aGUgYE9rLCBiZWZvcmUgdGhlIGFjdHVhbCBkYXRhKSwgYW5kIG9uZSBmb3JcbiAgICAgICB0aGUgcmVzcG9uc2UgZGF0YSAodW5kZXIgdGhlIC5kYXRhIGZpZWxkLCBiZWZvcmUgdGhlIE9rKS4gKilcbiAgICBsZXQgYmluX3NpemVfbmF0MF9oZWFkZXIgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gKyBOYXQwLmJpbl9zaXplX3QgZGF0YV9sZW5cbiAgICAgIGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW4gKyAoZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5sZW5ndGggaGVhZGVyX3ByZWZpeFxuICAgICAgKyBOYXQwLmJpbl9zaXplX3QgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pXG4gICAgICArIHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBoZWFkZXJfcHJlZml4IGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlblxuICAgICAgICArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgICArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pIGluXG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50MzJfdF9sZSBidWYgfnBvcyBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzI7XG4gICAgICBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zOm5leHQgZGF0YV9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbmF0MF9oZWFkZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX25hdDBfaGVhZGVyOyB3cml0ZSA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlICh0LCBfKSA9IGJpbl9zaXplX25hdDBfaGVhZGVyIHQgKyAodC5kYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2UgYnVmIH5wb3MgKHQsIGRhdGEpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgdC5iaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZTsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZSB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyAodCwgXykgPVxuICAgICAgYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyBidWYgfnBvcyAodCwgc3RyKSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHQgaW5cbiAgICAgIGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIHN0clxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZV9hc19zdHJpbmc7IHdyaXRlID0gYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIH1cbiAgICA7O1xuXG4gICAgKCogW3dyaXRlXSBhbmQgW3dyaXRlX3N0cmluZ10gYm90aCBhbGxvY2F0ZSAzIHdvcmRzIGZvciB0aGUgdHVwbGVzLiBbd3JpdGVfZXhwZXJ0XVxuICAgICAgIGRvZXMgbm90IGFsbG9jYXRlLiAqKVxuICAgIGxldCB3cml0ZSB0IChUIGluc3RhbmNlKSBpZCBkYXRhID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuICh0LmJpbl93cml0ZXIuc2l6ZSBkYXRhKTtcbiAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZSAodCwgZGF0YSlcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3N0cmluZyB0IChUIGluc3RhbmNlKSBpZCBzdHIgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKFN0cmluZy5sZW5ndGggc3RyKTtcbiAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmcgKHQsIHN0cilcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2V4cGVydCB0IChUIGluc3RhbmNlKSBpZCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biBsZW47XG4gICAgICB3cml0ZV9tZXNzYWdlX2V4cGVydCBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciB0IH5idWYgfnBvcyB+bGVuXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuICAgIG1vZHVsZSBTdGF0ZSA9IFQuU3RhdGVcbiAgICBtb2R1bGUgSWQgPSBULklkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPVxuICAgICAgeyBpZCA6IElkLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgaW5zdGFuY2UgOiBJbnN0YW5jZS50XG4gICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfc3RyZWFtX3dyaXRlci50XG4gICAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgICB9XG5cbiAgICBhbmQgJ2EgZ3JvdXBfZW50cnkgPSAnYSBULmdyb3VwX2VudHJ5ID1cbiAgICAgIHsgZ3JvdXAgOiAnYSBULkdyb3VwLnRcbiAgICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgICB9XG5cbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICBsZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcblxuICAgIGxldCBmbHVzaGVkIHQgPVxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIFRyYW5zcG9ydC5Xcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXJcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXIgdCA9IHQuc3RyZWFtX3dyaXRlci5iaW5fd3JpdGVyXG5cbiAgICBsZXQgd3JpdGVfZW9mIHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9ID1cbiAgICAgIHdyaXRlX3Jlc3BvbnNlIGluc3RhbmNlIHF1ZXJ5X2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlIHsgaW5zdGFuY2U7IHN0cmVhbV93cml0ZXI7IHF1ZXJ5X2lkOyBfIH0geCA9XG4gICAgICBDYWNoZWRfc3RyZWFtX3dyaXRlci53cml0ZSBzdHJlYW1fd3JpdGVyIGluc3RhbmNlIHF1ZXJ5X2lkIHhcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHsgaW5zdGFuY2U7IHN0cmVhbV93cml0ZXI7IHF1ZXJ5X2lkOyBfIH0geCA9XG4gICAgICBDYWNoZWRfc3RyZWFtX3dyaXRlci53cml0ZV9zdHJpbmcgc3RyZWFtX3dyaXRlciBpbnN0YW5jZSBxdWVyeV9pZCB4XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlX2V4cGVydCB7IGluc3RhbmNlOyBzdHJlYW1fd3JpdGVyOyBxdWVyeV9pZDsgXyB9IH5idWYgfnBvcyB+bGVuID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlX2V4cGVydCBzdHJlYW1fd3JpdGVyIGluc3RhbmNlIHF1ZXJ5X2lkIH5idWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdCA9XG4gICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCB0LmNsb3NlZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgICAgIGxldCBncm91cHMgPSB0Lmdyb3VwcyBpblxuICAgICAgICBpZiBub3QgKEJhZy5pc19lbXB0eSBncm91cHMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGUuVmVyeV9sb3dfcHJpb3JpdHlfd29yay5lbnF1ZXVlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJhZy5yZW1vdmVfb25lIGdyb3VwcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gRmluaXNoZWRcbiAgICAgICAgICAgIHwgU29tZSB7IGdyb3VwOyBlbGVtZW50X2luX2dyb3VwIH0gLT5cbiAgICAgICAgICAgICAgQmFnLnJlbW92ZSBncm91cC5jb21wb25lbnRzIGVsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHNfYnlfaWQgdC5pZDtcbiAgICAgICAgICAgICAgTm90X2ZpbmlzaGVkKTtcbiAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgIHwgTm90X3N0YXJ0ZWQgXyAtPiAoKVxuICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfZW9mIHQpXG4gICAgOztcblxuICAgIGxldCBjbG9zZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gYXMgdCkgPVxuICAgICAgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQ7XG4gICAgICBIYXNodGJsLnJlbW92ZSBpbnN0YW5jZS5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnlfaWRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+IFF1ZXVlLmVucXVldWUgcSAoTm9ybWFsIHgpXG4gICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZSB0IHgpO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB4ID1cbiAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4IHdpdGhcbiAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICAgICAgIFF1ZXVlLmVucXVldWUgcSAoRXhwZXJ0IChCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWYgfnBvcyB+bGVuKSlcbiAgICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4pO1xuICAgICAgICAgIGBPaylcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHN0YXJ0IHQgPVxuICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICB8IFN0YXJ0ZWQgLT4gZmFpbHdpdGggXCJhdHRlbXB0ZWQgdG8gc3RhcnQgd3JpdGVyIHdoaWNoIHdhcyBhbHJlYWR5IHN0YXJ0ZWRcIlxuICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgIHQuc3RhdGUgPC0gU3RhcnRlZDtcbiAgICAgICAgUXVldWUuaXRlciBxIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9ybWFsIHggLT4gd3JpdGVfbWVzc2FnZSB0IHhcbiAgICAgICAgICB8IEV4cGVydCB4IC0+IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCk7XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZCB0aGVuIHdyaXRlX2VvZiB0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvblxuICAgICAgICAocmVzdWx0IDogKF8sIFJwY19lcnJvci50KSBSZXN1bHQudClcbiAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCkgLT5cbiAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICB8IEVycm9yIF8gfCBPayBfIC0+ICgpXG4gIDs7XG5cbiAgbGV0IGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb25cbiAgICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgICA9XG4gICAgbGV0IGlkID0gcXVlcnkuaWQgaW5cbiAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXkgKGJpbl9xdWVyeV9yZWFkZXIsIGYpIC0+XG4gICAgICBsZXQgcXVlcnlfY29udGVudHMgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBtZXNzYWdlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIChtYXRjaCBxdWVyeV9jb250ZW50cyB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGVyciAtPiBTdG9wIGVyclxuICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgKHRyeVxuICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcTtcbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlKSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheV9leHBlcnQgZiAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbjtcbiAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICBDb250aW51ZVxuICAgICAgIHdpdGhcbiAgICAgICB8IGV4biAtPlxuICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBleHBlcnQgY29tcHV0YXRpb25cIilcbiAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlJwYyAoYmluX3F1ZXJ5X3JlYWRlciwgYmluX3Jlc3BvbnNlX3dyaXRlciwgZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcXVlcnlfY29udGVudHMgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgIHF1ZXJ5X2NvbnRlbnRzXG4gICAgICAgICAgICA+Pnx+IGYgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICB8PiB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICgqIEluIHRoZSBbRGVmZXJyZWRdIGJyYW5jaCB3ZSB1c2UgW01vbml0b3IudHJ5X3dpdGhdLCB3aGljaCBpbmNsdWRlc1xuICAgICAgICAgICAgICAgYmFja3RyYWNlcyB3aGVuIGl0IGNhdGNoZXMgYW4gZXhjZXB0aW9uLiBGb3IgY29uc2lzdGVuY3ksIHdlIGFsc28gZ2V0XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGhlcmUuICopXG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgbGV0IHNleHAgPVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGxvY2F0aW9uID0gXCJzZXJ2ZXItc2lkZSBibG9ja2luZyBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgICAgIDsgZXhuIDogZXhuXG4gICAgICAgICAgICAgICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIChFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biBzZXhwKSk7XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG4pXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICgqIFdlIGdlbmVyYWxseSB0cnkgdG8gd3JpdGUgYSByZXNwb25zZSBiZWZvcmUgaGFuZGxpbmcgW29uX2V4Y2VwdGlvbl0gc28gaWYgd2VcbiAgICAgICAgICAgICAgYXJlIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24gd2Ugc3RpbGwgYWN0dWFsbHkgc2VuZCB0aGUgcmVzcG9uc2UgYmFjay4gV2hlbiB3ZVxuICAgICAgICAgICAgICBwYXNzIFtvbl9leGNlcHRpb24uY2FsbGJhY2tdIGhlcmUsIHdlIGFyZSBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHJhaXNlZFxuICAgICAgICAgICAgICBleGNlcHRpb25zIG5vdCB0byBiZSB3cml0dGVuIGJhY2sgdG8gdGhlIGNsaWVudCAoZS5nLiBpZiB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgICAgcmFpc2VzIGJvdGggYXN5bmNocm9ub3VzbHkgYW5kIHN5bmNocm9ub3VzbHkpLiBUaGlzIHdvdWxkIGJlIGhhcmQgdG8gaGFuZGxlXG4gICAgICAgICAgICAgIGluIGEgbW9yZSBwcmluY2lwbGVkIHdheS4gKilcbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgIChmdW4gKCkgLT4gZGVmZXJfcmVzdWx0IChxdWVyeV9jb250ZW50cyA+Pnx+IGYgdC5jb25uZWN0aW9uX3N0YXRlKSlcbiAgICAgICAgIGluXG4gICAgICAgICAoKiBJbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhIHZhbHVlIGltbWVkaWF0ZWx5LCB3ZSB3aWxsXG4gICAgICAgICAgICB3cml0ZSB0aGUgcmVzcG9uc2UgaW1tZWRpYXRlbHkgYXMgd2VsbCAodGhpcyBpcyBhbHNvIHdoeSB0aGUgYWJvdmUgW3RyeV93aXRoXVxuICAgICAgICAgICAgaGFzIFt+cnVuOmBOb3ddKS4gIFRoaXMgY2FuIGJlIGEgYmlnIHBlcmZvcm1hbmNlIHdpbiBmb3Igc2VydmVycyB0aGF0IGdldCBtYW55XG4gICAgICAgICAgICBxdWVyaWVzIGluIGEgc2luZ2xlIEFzeW5jIGN5Y2xlLiAqKVxuICAgICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICA+Pj4gZnVuIGRhdGEgLT5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciBkYXRhO1xuICAgICAgICAgICAgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uIGRhdGEgb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcikpO1xuICAgICAgQ29udGludWVcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjX2V4cGVydCAoZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci5jcmVhdGUgcXVlcnkuaWQgdC53cml0ZXIgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgKCogV2UgbmVlZCB0aGUgW01vbml0b3IudHJ5X3dpdGhdIGV2ZW4gZm9yIHRoZSBibG9ja2luZyBtb2RlIGFzIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICBtaWdodCByZXR1cm4gW0RlbGF5ZWRfcmVwb25zZV0sIHNvIHdlIGRvbid0IGJvdGhlciBvcHRpbWl6aW5nIHRoZSBibG9ja2luZ1xuICAgICAgICAgICBtb2RlLiAqKVxuICAgICAgICBsZXQgcmVzdCA9XG4gICAgICAgICAgbWF0Y2ggb25fZXhjZXB0aW9uLmNhbGxiYWNrIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGBMb2dcbiAgICAgICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aCB+cmVzdCB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZXNwb25kZXIgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+IHJlc3VsdFxuICAgICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPiBEZWZlcnJlZC5yZXR1cm4gcmVzdWx0KVxuICAgICAgaW5cbiAgICAgIGxldCBoYW5kbGVfZXhuIH5pc191bmNhdWdodF9leG4gZXhuID1cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG4gZXhuIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBleHBlcnQgY29tcHV0YXRpb25cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgICAgdGhlbiByZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl91bml0IHJlc3VsdDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICBpblxuICAgICAgICBpZiBpc191bmNhdWdodF9leG5cbiAgICAgICAgdGhlbiBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgIHJlc3VsdFxuICAgICAgaW5cbiAgICAgIGxldCBjaGVja19yZXNwb25kZWQgKCkgPVxuICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgIHRoZW4gT2sgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGhhbmRsZV9leG5cbiAgICAgICAgICAgIH5pc191bmNhdWdodF9leG46ZmFsc2VcbiAgICAgICAgICAgIChGYWlsdXJlIFwiRXhwZXJ0IGltcGxlbWVudGF0aW9uIGRpZCBub3QgcmVwbHlcIilcbiAgICAgIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgIGxldCBvcGVuIERlZmVycmVkX2ltbWVkaWF0ZS5MZXRfc3ludGF4IGluXG4gICAgICAgIG1hdGNoJW1hcCBkIHdpdGhcbiAgICAgICAgfCBPayByZXN1bHQgLT5cbiAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgfCBSZXBsaWVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBkIC0+IGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZFxuICAgICAgICAgIHRoZW4gY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB1cG9uIGQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICAgICAgfD4gUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgfD4gb2tfZXhuKTtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICB8IEVycm9yIGV4biAtPiBoYW5kbGVfZXhuIH5pc191bmNhdWdodF9leG46dHJ1ZSBleG5cbiAgICAgIGluXG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFdhaXRcbiAgICAgICAgICAgKGxldCVtYXAgciA9IGQgaW5cbiAgICAgICAgICAgIG9rX2V4blxuICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgICAgIHIpKVxuICAgICAgIHwgU29tZSByZXN1bHQgLT5cbiAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgICB8IEVycm9yIF8gLT4gU3RvcCByZXN1bHQpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5TdHJlYW1pbmdfcnBjXG4gICAgICAgIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5faW5pdF93cml0ZXIsIGJpbl91cGRhdGVfd3JpdGVyLCBpbXBsKSAtPlxuICAgICAgbGV0IHN0cmVhbV9xdWVyeSA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBzdHJlYW1fcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBBYm9ydCAtPiAwXG4gICAgICAgICAgICB8IGBRdWVyeSAobGVuIDogTmF0MC50KSAtPiAobGVuIDo+IGludCkpXG4gICAgICBpblxuICAgICAgKG1hdGNoIHN0cmVhbV9xdWVyeSB3aXRoXG4gICAgICAgfCBFcnJvciBfZXJyIC0+ICgpXG4gICAgICAgfCBPayBgQWJvcnQgLT5cbiAgICAgICAgICgqIE5vdGUgdGhhdCB0aGVyZSdzIHNvbWUgZGVsYXkgYmV0d2VlbiB3aGVuIHdlIHJlY2VpdmUgYSBwaXBlIFJQQyBxdWVyeSBhbmRcbiAgICAgICAgICAgIHdoZW4gd2UgcHV0IHNvbWV0aGluZyBpbiBbb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzXSAod2Ugd2FpdCBmb3JcbiAgICAgICAgICAgIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0byByZXR1cm4pLiBEdXJpbmcgdGhpcyB0aW1lLCBhbiBhYm9ydCBtZXNzYWdlIHdvdWxkXG4gICAgICAgICAgICBqdXN0IGJlIGlnbm9yZWQuIFRoZSBkaXNwYXRjaGVyIGNhbid0IGFib3J0IHRoZSBxdWVyeSB3aGlsZSB0aGlzIGlzXG4gICAgICAgICAgICBoYXBwZW5pbmcsIHRob3VnaCwgc2luY2UgdGhlIGludGVyZmFjZSBkb2Vzbid0IGV4cG9zZSB0aGUgSUQgcmVxdWlyZWQgdG9cbiAgICAgICAgICAgIGFib3J0IHRoZSBxdWVyeSB1bnRpbCBhZnRlciBhIHJlc3BvbnNlIGhhcyBiZWVuIHJldHVybmVkLiAqKVxuICAgICAgICAgT3B0aW9uLml0ZXIgKEhhc2h0YmwuZmluZCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBxdWVyeS5pZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgIHwgUGlwZSBwaXBlIC0+IFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gICAgICAgICAgIHwgRGlyZWN0IHcgLT4gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2UgdylcbiAgICAgICB8IE9rIChgUXVlcnkgbGVuKSAtPlxuICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgfmxvY2F0aW9uOlwic3RyZWFtaW5nX3JwYyBzZXJ2ZXItc2lkZSBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgc3RyZWFtX3dyaXRlciA9XG4gICAgICAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLmNyZWF0ZSB+aWQgfmJpbl93cml0ZXI6YmluX3VwZGF0ZV93cml0ZXJcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgaW1wbF93aXRoX3N0YXRlID1cbiAgICAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgICAgIHwgUGlwZSBmIC0+IGBQaXBlIGZcbiAgICAgICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICAgICAgIGxldCB3cml0ZXIgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgICAgICAgICAgeyBpZCA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLklkLmNyZWF0ZSAoKVxuICAgICAgICAgICAgICAgOyBzdGF0ZSA9IE5vdF9zdGFydGVkIChRdWV1ZS5jcmVhdGUgKCkpXG4gICAgICAgICAgICAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgICAgICAgICA7IGluc3RhbmNlID0gdC5wYWNrZWRfc2VsZlxuICAgICAgICAgICAgICAgOyBxdWVyeV9pZCA9IGlkXG4gICAgICAgICAgICAgICA7IGdyb3VwcyA9IEJhZy5jcmVhdGUgKClcbiAgICAgICAgICAgICAgIDsgc3RyZWFtX3dyaXRlclxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTpxdWVyeS5pZCB+ZGF0YTooRGlyZWN0IHdyaXRlcik7XG4gICAgICAgICAgICAgYERpcmVjdCAoZiwgd3JpdGVyKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBydW5faW1wbCBpbXBsIHNwbGl0X29rIGhhbmRsZV9vayA9XG4gICAgICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKGRhdGEgPj58fiBpbXBsKSlcbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCBhcyBlcnIpIC0+XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycik7XG4gICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG5cbiAgICAgICAgICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgICAgICAgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpXG4gICAgICAgICAgIHwgT2sgKEVycm9yIGVycikgLT5cbiAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgZXJyKVxuICAgICAgICAgICB8IE9rIChPayBvaykgLT5cbiAgICAgICAgICAgICBsZXQgaW5pdGlhbCwgcmVzdCA9IHNwbGl0X29rIG9rIGluXG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGluaXRpYWwpO1xuICAgICAgICAgICAgIGhhbmRsZV9vayByZXN0XG4gICAgICAgICBpblxuICAgICAgICAgKG1hdGNoIGltcGxfd2l0aF9zdGF0ZSB3aXRoXG4gICAgICAgICAgfCBgUGlwZSBmIC0+XG4gICAgICAgICAgICBydW5faW1wbFxuICAgICAgICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSlcbiAgICAgICAgICAgICAgRm4uaWRcbiAgICAgICAgICAgICAgKGZ1biBwaXBlX3IgLT5cbiAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTppZCB+ZGF0YTooUGlwZSBwaXBlX3IpO1xuICAgICAgICAgICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAgICAgICAgIChXcml0ZXIudHJhbnNmZXJcbiAgICAgICAgICAgICAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgICAgICAgICAgICAgIHBpcGVfclxuICAgICAgICAgICAgICAgICAgICAgIChDYWNoZWRfc3RyZWFtX3dyaXRlci53cml0ZSBzdHJlYW1fd3JpdGVyIHQucGFja2VkX3NlbGYgaWQpKTtcbiAgICAgICAgICAgICAgICAgUGlwZS5jbG9zZWQgcGlwZV9yXG4gICAgICAgICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGVfclxuICAgICAgICAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPlxuICAgICAgICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZik7XG4gICAgICAgICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQpXG4gICAgICAgICAgfCBgRGlyZWN0IChmLCB3cml0ZXIpIC0+XG4gICAgICAgICAgICBydW5faW1wbFxuICAgICAgICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSB3cml0ZXIpXG4gICAgICAgICAgICAgIChmdW4geCAtPiB4LCAoKSlcbiAgICAgICAgICAgICAgKGZ1biAoKSAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5zdGFydCB3cml0ZXIpKSk7XG4gICAgICBDb250aW51ZVxuICA7O1xuXG4gIGxldCBmbHVzaCAoVCB0KSA9XG4gICAgYXNzZXJ0IChub3QgdC5zdG9wcGVkKTtcbiAgICBsZXQgcHJvZHVjZXJzX2ZsdXNoZWQgPVxuICAgICAgSGFzaHRibC5mb2xkIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5pbml0OltdIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPlxuICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgfCBEaXJlY3QgXyAtPiBhY2NcbiAgICAgICAgfCBQaXBlIHBpcGUgLT4gRGVmZXJyZWQuaWdub3JlX20gKFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlKSA6OiBhY2MpXG4gICAgaW5cbiAgICBEZWZlcnJlZC5hbGxfdW5pdCBwcm9kdWNlcnNfZmx1c2hlZFxuICA7O1xuXG4gIGxldCBzdG9wIChUIHQpID1cbiAgICB0LnN0b3BwZWQgPC0gdHJ1ZTtcbiAgICBIYXNodGJsLml0ZXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IERpcmVjdCB3cml0ZXIgLT5cbiAgICAgICAgKCogRG9uJ3QgcmVtb3ZlIHRoZSB3cml0ZXIgZnJvbSB0aGUgaW5zdGFuY2UsIGFzIHRoYXQgd291bGQgbW9kaWZ5IHRoZSBoYXNodGFibGVcbiAgICAgICAgICAgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLiAqKVxuICAgICAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2Ugd3JpdGVyXG4gICAgICB8IFBpcGUgXyAtPiAoKSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICA7O1xuXG4gIGxldCBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgYFJhaXNlIC0+IFJwY19lcnJvci5yYWlzZSBlcnJvciB0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgIHwgYENhbGwgZiAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBmXG4gICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS5QLlF1ZXJ5LnRhZylcbiAgICAgICAgICAgfnZlcnNpb246cXVlcnkudmVyc2lvblxuICAgICAgIHdpdGhcbiAgICAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbGV0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9ID0gdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gOiBEZXNjcmlwdGlvbi50ID1cbiAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBTb21lIChsYXN0X2Rlc2MsIGltcGxlbWVudGF0aW9uKSB3aGVuIERlc2NyaXB0aW9uLmVxdWFsIGxhc3RfZGVzYyBkZXNjcmlwdGlvbiAtPlxuICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPlxuICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBpbXBsZW1lbnRhdGlvbnMgZGVzY3JpcHRpb24gd2l0aFxuICAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbiAtPlxuICAgICAgICAgdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPC0gU29tZSAoZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uKTtcbiAgICAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIHRcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgICAgICAgfCBgRXhwZXJ0IGltcGwgLT5cbiAgICAgICAgICAgIGxldCB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSA9IGxlbiB9ID0gcXVlcnkgaW5cbiAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbmRlciA9IFJlc3BvbmRlci5jcmVhdGUgaWQgdC53cml0ZXIgaW5cbiAgICAgICAgICAgICAgaW1wbFxuICAgICAgICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHRhZylcbiAgICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICAgIHJlc3BvbmRlclxuICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgIH5sZW46KGxlbiA6PiBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gQ29udGludWUgZWxzZSBXYWl0IGRcbiAgICAgICAgICB8IChgQ29udGludWUgfCBgUmFpc2UgfCBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDYWxsIF8pIGFzIG9uX3Vua25vd25fcnBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBScGNfZXJyb3IuVW5pbXBsZW1lbnRlZF9ycGMgKHF1ZXJ5LnRhZywgYFZlcnNpb24gcXVlcnkudmVyc2lvbikgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgcXVlcnkuaWQgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IChFcnJvciBlcnJvcik7XG4gICAgICAgICAgICBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeVxuICAgICAgICAoVCB0KVxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgaWYgdC5zdG9wcGVkIHx8IFdyaXRlci5pc19jbG9zZWQgdC53cml0ZXJcbiAgICB0aGVuIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC5TdG9wIChPayAoKSlcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBJbnN0YW5jZS5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5sZXQgY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnM6aSdzIH5vbl91bmtub3duX3JwYyA9XG4gICgqIE1ha2Ugc3VyZSB0aGUgdGFncyBhcmUgdW5pcXVlLiAqKVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gRGVzY3JpcHRpb24uVGFibGUuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIGxldCBkdXBzID0gRGVzY3JpcHRpb24uSGFzaF9zZXQuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIExpc3QuaXRlciBpJ3MgfmY6KGZ1biAoaSA6IF8gSW1wbGVtZW50YXRpb24udCkgLT5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgeyBEZXNjcmlwdGlvbi5uYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpLnRhZzsgdmVyc2lvbiA9IGkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjcmlwdGlvbiB+ZGF0YTppIHdpdGhcbiAgICB8IGBPayAtPiAoKVxuICAgIHwgYER1cGxpY2F0ZSAtPiBIYXNoX3NldC5hZGQgZHVwcyBkZXNjcmlwdGlvbik7XG4gIGlmIG5vdCAoSGFzaF9zZXQuaXNfZW1wdHkgZHVwcylcbiAgdGhlbiBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgKEhhc2hfc2V0LnRvX2xpc3QgZHVwcykpXG4gIGVsc2VcbiAgICBPa1xuICAgICAgeyBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDsgb25fdW5rbm93bl9ycGMgPSAob25fdW5rbm93bl9ycGMgOj4gXyBvbl91bmtub3duX3JwY193aXRoX2V4cGVydClcbiAgICAgIH1cbjs7XG5cbmxldCBpbnN0YW50aWF0ZVxuICAgICAgdFxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+d3JpdGVyXG4gID1cbiAgbGV0IHJlYyB1bnBhY2tlZCA6IF8gSW5zdGFuY2UudW5wYWNrZWQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zID0gdFxuICAgIDsgd3JpdGVyXG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICA7IHN0b3BwZWQgPSBmYWxzZVxuICAgIDsgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uID0gTm9uZVxuICAgIDsgcGFja2VkX3NlbGYgPSBJbnN0YW5jZS5UIHVucGFja2VkXG4gICAgfVxuICBpblxuICB1bnBhY2tlZC5wYWNrZWRfc2VsZlxuOztcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgb2YgRGVzY3JpcHRpb24udCBsaXN0IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjID1cbiAgbWF0Y2ggY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcykgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcylcbjs7XG5cbmxldCBudWxsICgpID0gY3JlYXRlX2V4biB+aW1wbGVtZW50YXRpb25zOltdIH5vbl91bmtub3duX3JwYzpgUmFpc2VcblxubGV0IGFkZF9leG4gdCAoaW1wbGVtZW50YXRpb24gOiBfIEltcGxlbWVudGF0aW9uLnQpID1cbiAgbGV0IGRlc2MgOiBEZXNjcmlwdGlvbi50ID1cbiAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGltcGxlbWVudGF0aW9uLnRhZzsgdmVyc2lvbiA9IGltcGxlbWVudGF0aW9uLnZlcnNpb24gfVxuICBpblxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5jb3B5IHQuaW1wbGVtZW50YXRpb25zIGluXG4gIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2MgfmRhdGE6aW1wbGVtZW50YXRpb24gd2l0aFxuICB8IGBEdXBsaWNhdGUgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgWyBkZXNjIF0pXG4gIHwgYE9rIC0+IHsgdCB3aXRoIGltcGxlbWVudGF0aW9ucyB9XG47O1xuXG5sZXQgYWRkIHQgaW1wbGVtZW50YXRpb24gPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGFkZF9leG4gdCBpbXBsZW1lbnRhdGlvbilcblxubGV0IGxpZnQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gfmYgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5tYXAgaW1wbGVtZW50YXRpb25zIH5mOihJbXBsZW1lbnRhdGlvbi5saWZ0IH5mKSBpblxuICBsZXQgb25fdW5rbm93bl9ycGMgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IChgUmFpc2UgfCBgQ29udGludWUgfCBgQ2xvc2VfY29ubmVjdGlvbikgYXMgeCAtPiB4XG4gICAgfCBgQ2FsbCBjYWxsIC0+IGBDYWxsIChmdW4gc3RhdGUgLT4gY2FsbCAoZiBzdGF0ZSkpXG4gICAgfCBgRXhwZXJ0IGV4cGVydCAtPiBgRXhwZXJ0IChmdW4gc3RhdGUgLT4gZXhwZXJ0IChmIHN0YXRlKSlcbiAgaW5cbiAgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH1cbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IFJlc3BvbmRlclxuXG4gIG1vZHVsZSBScGNfcmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gUmVzcG9uZGVyLnRcblxuICAgIGxldCBjYW5ub3Rfc2VuZCByID1cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAgIHJcbiAgICAgICAgWyVzZXhwX29mOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XVxuICAgIDs7XG5cbiAgICBsZXQgbWFya19yZXNwb25kZWQgKHQgOiB0KSA9XG4gICAgICBpZiB0LnJlc3BvbmRlZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFscmVhZHkgcmVzcG9uZGVkXCIgdCBbJXNleHBfb2Y6IFJlc3BvbmRlci50XTtcbiAgICAgIHQucmVzcG9uZGVkIDwtIHRydWVcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlICh0IDogdCkgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICAgIFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgKE5hdDAub2ZfaW50X2V4biBsZW4pIH1cbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgICAgdC53cml0ZXJcbiAgICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgICBoZWFkZXJcbiAgICAgICAgICB+YnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgIHdpdGhcbiAgICAgIHwgU2VudCBkIC0+IGBGbHVzaGVkIGRcbiAgICAgIHwgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPiBjYW5ub3Rfc2VuZCByXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9iaWdzdHJpbmcgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgIGhlYWRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9lcnJvciAodCA6IHQpIGVycm9yID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgZGF0YSA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcmF3IHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgKEVycm9yLnRvX2V4biBlcnJvcilcbiAgICAgIGluXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Jpbl9wcm90ICh0IDogdCkgYmluX3dyaXRlcl9hIGEgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9hKSlcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgYSB9KVxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9leG4gPSBjcmVhdGVfZXhuXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBSZWFkZXIgPSBUcmFuc3BvcnQuUmVhZGVyXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5fdHlwZV9jbGFzc11cblxuICB2YWwgdjEgOiB0XG4gIHZhbCBuZWdvdGlhdGUgOiB1czp0IC0+IHBlZXI6dCAtPiBpbnQgT3JfZXJyb3IudFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgUC5IZWFkZXJcblxuICBsZXQgbmVnb3RpYXRlID0gbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlcjp0cnVlXG4gIGxldCB2MSA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNyZWF0ZV9leG4gfnByb3RvY29sOlJwYyB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMSBdXG5lbmRcblxubW9kdWxlIEhhbmRzaGFrZV9lcnJvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVvZlxuICAgICAgfCBUcmFuc3BvcnRfY2xvc2VkXG4gICAgICB8IFRpbWVvdXRcbiAgICAgIHwgUmVhZGluZ19oZWFkZXJfZmFpbGVkIG9mIEVycm9yLnRcbiAgICAgIHwgTmVnb3RpYXRpb25fZmFpbGVkIG9mIEVycm9yLnRcbiAgICAgIHwgTmVnb3RpYXRlZF91bmV4cGVjdGVkX3ZlcnNpb24gb2YgaW50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBleGNlcHRpb24gSGFuZHNoYWtlX2Vycm9yIG9mICh0ICogSW5mby50KSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCB0b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb24gdCA9IEhhbmRzaGFrZV9lcnJvciAodCwgY29ubmVjdGlvbl9kZXNjcmlwdGlvbilcbmVuZFxuXG5tb2R1bGUgSGVhcnRiZWF0X2NvbmZpZyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdGltZW91dCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBzZW5kX2V2ZXJ5IDogVGltZV9ucy5TcGFuLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgZmllbGRzXVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyh0aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC4pXG4gICAgICAgID8oc2VuZF9ldmVyeSA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMTAuKVxuICAgICAgICAoKVxuICAgID1cbiAgICB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuICA7O1xuXG4gIG1vZHVsZSBSdW50aW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHRvX3J1bnRpbWUgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH0gPSB7IFJ1bnRpbWUudGltZW91dDsgc2VuZF9ldmVyeSB9XG5lbmRcblxudHlwZSByZXNwb25zZV9oYW5kbGVyID1cbiAgTmF0MC50IFAuUmVzcG9uc2UudFxuICAtPiByZWFkX2J1ZmZlcjpCaWdzdHJpbmcudFxuICAtPiByZWFkX2J1ZmZlcl9wb3NfcmVmOmludCByZWZcbiAgLT4gWyBga2VlcFxuICAgICB8IGB3YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICB8IGByZW1vdmUgb2YgdW5pdCBScGNfcmVzdWx0LnRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICBdXG5cbnR5cGUgdCA9XG4gIHsgZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgOyBoZWFydGJlYXRfY29uZmlnIDogSGVhcnRiZWF0X2NvbmZpZy5SdW50aW1lLnRcbiAgOyBtdXRhYmxlIGhlYXJ0YmVhdF9jYWxsYmFja3MgOiAodW5pdCAtPiB1bml0KSBhcnJheVxuICA7IG11dGFibGUgbGFzdF9zZWVuX2FsaXZlIDogVGltZV9ucy50XG4gIDsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICA7IG9wZW5fcXVlcmllcyA6IChQLlF1ZXJ5X2lkLnQsIChyZXNwb25zZV9oYW5kbGVyW0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBjbG9zZV9zdGFydGVkIDogSW5mby50IEl2YXIudFxuICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgKCogVGhlcmUncyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb25uZWN0aW9ucyBhbmQgdGhlaXIgaW1wbGVtZW50YXRpb24gaW5zdGFuY2VzXG4gICAgICh0aGUgbGF0dGVyIGRlcGVuZHMgb24gdGhlIGNvbm5lY3Rpb24gc3RhdGUsIHdoaWNoIGlzIGdpdmVuIGFjY2VzcyB0byB0aGUgY29ubmVjdGlvblxuICAgICB3aGVuIGl0IGlzIGNyZWF0ZWQpLiAqKVxuICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50IFNldF9vbmNlLnRcbiAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnRcbiAgOyBoZWFydGJlYXRfZXZlbnQgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC50IFNldF9vbmNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdF9odW1fd3JpdGVyIHQgPVxuICBbJXNleHAgeyBkZXNjcmlwdGlvbiA6IEluZm8udCA9IHQuZGVzY3JpcHRpb247IHdyaXRlciA6IFdyaXRlci50ID0gdC53cml0ZXIgfV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbiB0ID0gdC5kZXNjcmlwdGlvblxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG5sZXQgd3JpdGVyIHQgPVxuICBpZiBpc19jbG9zZWQgdCB8fCBub3QgKFdyaXRlci5jYW5fc2VuZCB0LndyaXRlcikgdGhlbiBFcnJvciBgQ2xvc2VkIGVsc2UgT2sgdC53cml0ZXJcbjs7XG5cbmxldCBieXRlc190b193cml0ZSB0ID0gV3JpdGVyLmJ5dGVzX3RvX3dyaXRlIHQud3JpdGVyXG5sZXQgZmx1c2hlZCB0ID0gV3JpdGVyLmZsdXNoZWQgdC53cml0ZXJcblxubGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHQgLT4gJ2EgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gJ2EgPVxuICBmdW4gdCByIC0+XG4gIG1hdGNoIHIgd2l0aFxuICB8IFNlbnQgeCAtPiB4XG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQWxsIG9mIHRoZSBwbGFjZXMgd2UgY2FsbCBbaGFuZGxlX3NlbmRfcmVzdWx0XSBjaGVjayB3aGV0aGVyIFt0XSBpcyBjbG9zZWRcbiAgICAgICAodXN1YWxseSB2aWEgdGhlIFt3cml0ZXJdIGZ1bmN0aW9uIGFib3ZlKS4gVGhpcyBjaGVja3Mgd2hldGhlciBbdC53cml0ZXJdIGlzXG4gICAgICAgY2xvc2VkLCB3aGljaCBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgW3RdIGlzIGNsb3NlZC4gKilcbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlJQQyBjb25uZWN0aW9uIGdvdCBjbG9zZWQgd3JpdGVyXCIgdCBzZXhwX29mX3RfaHVtX3dyaXRlclxuICB8IE1lc3NhZ2VfdG9vX2JpZyBfIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAsIHsgcmVhc29uID0gKHIgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KTsgY29ubmVjdGlvbiA9ICh0IDogdF9odW1fd3JpdGVyKSB9XVxuOztcblxubGV0IGRpc3BhdGNoIHQgfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5ID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgYXMgciAtPiByXG4gIHwgT2sgd3JpdGVyIC0+XG4gICAgT3B0aW9uLml0ZXIgcmVzcG9uc2VfaGFuZGxlciB+ZjooZnVuIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9xdWVyaWVzIH5rZXk6cXVlcnkuUC5RdWVyeS5pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgd3JpdGVyXG4gICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfcXVlcnkpKVxuICAgICAgKFF1ZXJ5IHF1ZXJ5KVxuICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgIE9rICgpXG47O1xuXG5sZXQgbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgZG9fc2VuZCB0IH50YWcgfnZlcnNpb24gYnVmIH5wb3MgfmxlbiB+cmVzcG9uc2VfaGFuZGxlciA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIGBDbG9zZWRcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgUXVlcnkgeyB0YWc7IHZlcnNpb247IGlkOyBkYXRhID0gTmF0MC5vZl9pbnRfZXhuIGxlbiB9XG4gICAgaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTppZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIGRvX3NlbmQgd3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBoZWFkZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0XG4gICAgaW5cbiAgICBPayByZXN1bHRcbjs7XG5cbmxldCBkaXNwYXRjaF9iaWdzdHJpbmcgPSBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG5cbmxldCBzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmcgPVxuICBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG47O1xuXG5sZXQgaGFuZGxlX3Jlc3BvbnNlIHQgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQgd2l0aFxuICB8IE5vbmUgLT4gU3RvcCAoRXJyb3IgKFJwY19lcnJvci5Vbmtub3duX3F1ZXJ5X2lkIHJlc3BvbnNlLmlkKSlcbiAgfCBTb21lIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAobWF0Y2ggcmVzcG9uc2VfaGFuZGxlciByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgd2l0aFxuICAgICB8IGBrZWVwIC0+IENvbnRpbnVlXG4gICAgIHwgYHdhaXQgd2FpdCAtPiBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IHdhaXQgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIChtYXRjaCByZW1vdmFsX2NpcmN1bXN0YW5jZXMgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBfIC0+IENvbnRpbnVlXG4gICAgICAgICAgIHwgQmluX2lvX2V4biBfXG4gICAgICAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgICAgICAgfCBXcml0ZV9lcnJvciBfXG4gICAgICAgICAgIHwgVW5jYXVnaHRfZXhuIF9cbiAgICAgICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gU3RvcCAoRXJyb3IgZSkpKSlcbjs7XG5cbmxldCBoYW5kbGVfbXNnXG4gICAgICB0XG4gICAgICAobXNnIDogXyBQLk1lc3NhZ2UudClcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggbXNnIHdpdGhcbiAgfCBIZWFydGJlYXQgLT5cbiAgICBBcnJheS5pdGVyIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gICAgQ29udGludWVcbiAgfCBSZXNwb25zZSByZXNwb25zZSAtPiBoYW5kbGVfcmVzcG9uc2UgdCByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5oYW5kbGVfcXVlcnlcbiAgICAgIGluc3RhbmNlXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbjs7XG5cbmxldCBjbG9zZV9yZWFzb24gdCB+b25fY2xvc2UgPVxuICBsZXQgcmVhc29uID0gSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZCBpblxuICBtYXRjaCBvbl9jbG9zZSB3aXRoXG4gIHwgYHN0YXJ0ZWQgLT4gcmVhc29uXG4gIHwgYGZpbmlzaGVkIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZCBpblxuICAgIHJlYXNvblxuOztcblxubGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZFxuXG5sZXQgYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayB0IGYgPVxuICAoKiBBZGRpbmcgaGVhcnRiZWF0IGNhbGxiYWNrcyBpcyByZWxhdGl2ZWx5IHJhcmUsIGJ1dCB0aGUgY2FsbGJhY2tzIGFyZSB0cmlnZ2VyZWQgYSBsb3QuXG4gICAgIFRoZSBhcnJheSByZXByZXNlbnRhdGlvbiBtYWtlcyB0aGUgYWRkaXRpb24gcXVhZHJhdGljIGZvciB0aGUgc2FrZSBvZiBrZWVwaW5nIHRoZVxuICAgICB0cmlnZ2VyaW5nIGNoZWFwLiAqKVxuICB0LmhlYXJ0YmVhdF9jYWxsYmFja3MgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5oZWFydGJlYXRfY2FsbGJhY2tzXG47O1xuXG5sZXQgcmVzZXRfaGVhcnRiZWF0X3RpbWVvdXQgdCB0aW1lb3V0ID1cbiAgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXQgPC0gdGltZW91dDtcbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2Vcbjs7XG5cbmxldCBsYXN0X3NlZW5fYWxpdmUgdCA9IHQubGFzdF9zZWVuX2FsaXZlXG5cbmxldCBhYm9ydF9oZWFydGJlYXRpbmcgdCA9XG4gIE9wdGlvbi5pdGVyIChTZXRfb25jZS5nZXQgdC5oZWFydGJlYXRfZXZlbnQpIH5mOihmdW4gZXZlbnQgLT5cbiAgICBtYXRjaCBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hYm9ydCB0LnRpbWVfc291cmNlIGV2ZW50IHdpdGhcbiAgICB8IE9rIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZCAtPiAoKVxuICAgIHwgQ3VycmVudGx5X2hhcHBlbmluZyAtPlxuICAgICAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UucnVuX2FmdGVyIHQudGltZV9zb3VyY2UgVGltZV9ucy5TcGFuLnplcm8gKGZ1biAoKSAtPlxuICAgICAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hYm9ydF9leG4gdC50aW1lX3NvdXJjZSBldmVudCkpXG47O1xuXG5sZXQgY2xvc2UgPyhzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2ZfaW50X3NlYyA1KSB+cmVhc29uIHQgPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBhYm9ydF9oZWFydGJlYXRpbmcgdDtcbiAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkIHJlYXNvbjtcbiAgICAobWF0Y2ggU2V0X29uY2UuZ2V0IHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIHdpdGhcbiAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgfCBTb21lIGluc3RhbmNlIC0+XG4gICAgICAgbGV0IGZsdXNoZWQgPSBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuZmx1c2ggaW5zdGFuY2UgaW5cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGZsdXNoZWRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlO1xuICAgICAgICAgZmx1c2hlZClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdFxuICAgICAgICAgICAgIFsgZmx1c2hlZFxuICAgICAgICAgICAgIDsgV3JpdGVyLnN0b3BwZWQgdC53cml0ZXJcbiAgICAgICAgICAgICA7IFRpbWVfc291cmNlLmFmdGVyXG4gICAgICAgICAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgICAgICAgICBzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgICAgICAgICBdXG4gICAgICAgICBpblxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2UpKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBXcml0ZXIuY2xvc2UgdC53cml0ZXJcbiAgICA+Pj4gZnVuICgpIC0+IFJlYWRlci5jbG9zZSB0LnJlYWRlciA+Pj4gZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKTtcbiAgY2xvc2VfZmluaXNoZWQgdFxuOztcblxubGV0IG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID1cbiAgbGV0IGYgYnVmIH5wb3MgfmxlbjpfIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgbGV0IG5hdDBfbXNnID0gUC5NZXNzYWdlLmJpbl9yZWFkX25hdDBfdCBidWYgfnBvc19yZWYgaW5cbiAgICBtYXRjaFxuICAgICAgaGFuZGxlX21zZ1xuICAgICAgICB0XG4gICAgICAgIG5hdDBfbXNnXG4gICAgICAgIH5yZWFkX2J1ZmZlcjpidWZcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6cG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgd2l0aFxuICAgIHwgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IFdhaXQgXyBhcyByZXMgLT4gcmVzXG4gICAgfCBTdG9wIHJlc3VsdCAtPlxuICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgIGxldCBtc2cgPSBcIlJwYyBtZXNzYWdlIGhhbmRsaW5nIGxvb3Agc3RvcHBlZFwiIGluXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gSW5mby5vZl9zdHJpbmcgbXNnXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIEluZm8uY3JlYXRlXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgICAgIGVcbiAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgIFwiQ29ubmVjdGlvbi5vbl9tZXNzYWdlIHJlc3VsdGVkIGluIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yLiBUaGlzIGlzIFxcXG4gICAgICAgICAgICAgICAgICB3ZWlyZC5cIl0pKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgU3RvcCByZWFzb25cbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIGZcbjs7XG5cbmxldCBoZWFydGJlYXRfbm93IHQgPVxuICBsZXQgc2luY2VfbGFzdF9oZWFydGJlYXQgPVxuICAgIFRpbWVfbnMuZGlmZiAoU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpIHQubGFzdF9zZWVuX2FsaXZlXG4gIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oID4gKSBzaW5jZV9sYXN0X2hlYXJ0YmVhdCB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICB0aGVuIChcbiAgICBsZXQgcmVhc29uICgpID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgIVwiTm8gaGVhcnRiZWF0cyByZWNlaXZlZCBmb3IgJXtzZXhwOlRpbWVfbnMuU3Bhbi50fS5cIlxuICAgICAgICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl90aHVuayByZWFzb24pKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiAoKVxuICAgIHwgT2sgd3JpdGVyIC0+XG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB3cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IEhlYXJ0YmVhdFxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQpXG47O1xuXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuXG5cbmxldCBjbGVhbnVwIHQgfnJlYXNvbiBleG4gPVxuICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KTtcbiAgaWYgbm90IChIYXNodGJsLmlzX2VtcHR5IHQub3Blbl9xdWVyaWVzKVxuICB0aGVuIChcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIHwgUnBjX2Vycm9yLlJwYyAoZXJyb3IsIChfIDogSW5mby50KSkgLT4gZXJyb3JcbiAgICAgIHwgZXhuIC0+IFVuY2F1Z2h0X2V4biAoRXhuLnNleHBfb2ZfdCBleG4pXG4gICAgaW5cbiAgICAoKiBjbGVhbiB1cCBvcGVuIHN0cmVhbWluZyByZXNwb25zZXMgKilcbiAgICAoKiBhbiB1bmZvcnR1bmF0ZSBoYWNrOyBvayBiZWNhdXNlIHRoZSByZXNwb25zZSBoYW5kbGVyIHdpbGwgaGF2ZSBub3RoaW5nXG4gICAgICAgdG8gcmVhZCBmb2xsb3dpbmcgYSByZXNwb25zZSB3aGVyZSBbZGF0YV0gaXMgYW4gZXJyb3IgKilcbiAgICBsZXQgZHVtbXlfYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAxIGluXG4gICAgbGV0IGR1bW15X3JlZiA9IHJlZiAwIGluXG4gICAgSGFzaHRibC5pdGVyaSB0Lm9wZW5fcXVlcmllcyB+ZjooZnVuIH5rZXk6cXVlcnlfaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChyZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcjpkdW1teV9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6ZHVtbXlfcmVmXG4gICAgICAgICAgIHsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IEVycm9yIGVycm9yIH0pKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9xdWVyaWVzO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBkdW1teV9idWZmZXIpXG47O1xuXG5sZXQgc2NoZWR1bGVfaGVhcnRiZWF0cyB0ID1cbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2U7XG4gIGxldCBoZWFydGJlYXRfZnJvbV9ub3dfb24gPVxuICAgICgqIFthdF9pbnRlcnZhbHNdIHdpbGwgc2NoZWR1bGUgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0aGUgZmlyc3QgdGltZSB0aGUgdGltZV9zb3VyY2UgaXNcbiAgICAgICBhZHZhbmNlZCAqKVxuICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmF0X2ludGVydmFsc1xuICAgICAgdC50aW1lX3NvdXJjZVxuICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnNlbmRfZXZlcnlcbiAgICAgIChmdW4gKCkgLT4gaGVhcnRiZWF0X25vdyB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaGVhcnRiZWF0X2V2ZW50IFslaGVyZV0gaGVhcnRiZWF0X2Zyb21fbm93X29uXG47O1xuXG5sZXQgcnVuX2FmdGVyX2hhbmRzaGFrZSB0IH5pbXBsZW1lbnRhdGlvbnMgfmNvbm5lY3Rpb25fc3RhdGUgfndyaXRlcl9tb25pdG9yX2V4bnMgPVxuICBsZXQgaW5zdGFuY2UgPVxuICAgIEltcGxlbWVudGF0aW9ucy5pbnN0YW50aWF0ZVxuICAgICAgaW1wbGVtZW50YXRpb25zXG4gICAgICB+d3JpdGVyOnQud3JpdGVyXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGU6KGNvbm5lY3Rpb25fc3RhdGUgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluc3RhbmNlO1xuICBsZXQgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY2xvc2UgY29ubmVjdGlvbiBtb25pdG9yXCIgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciB+ZjooZnVuIGV4biAtPlxuICAgIGxldCByZWFzb24gPVxuICAgICAgSW5mby5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmNhdWdodCBleGNlcHRpb24gaW4gaW1wbGVtZW50YXRpb25cIiAoZXhuIDogRXhuLnQpXVxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCkpO1xuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiUlBDIGNvbm5lY3Rpb24gbG9vcFwiICgpIGluXG4gIGxldCByZWFzb24gbmFtZSBleG4gPVxuICAgIGV4biwgSW5mby50YWcgKEluZm8ub2ZfZXhuIGV4bikgfnRhZzooXCJleG4gcmFpc2VkIGluIFJQQyBjb25uZWN0aW9uIFwiIF4gbmFtZSlcbiAgaW5cbiAgU3RyZWFtLml0ZXJcbiAgICAoU3RyZWFtLmludGVybGVhdmVcbiAgICAgICAoU3RyZWFtLm9mX2xpc3RcbiAgICAgICAgICBbIFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcImxvb3BcIikgKE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IpXG4gICAgICAgICAgOyBTdHJlYW0ubWFwIH5mOihyZWFzb24gXCJXcml0ZXIudFwiKSB3cml0ZXJfbW9uaXRvcl9leG5zXG4gICAgICAgICAgXSkpXG4gICAgfmY6KGZ1biAoZXhuLCByZWFzb24pIC0+IGNsZWFudXAgdCBleG4gfnJlYXNvbik7XG4gIHdpdGhpbiB+bW9uaXRvciAoZnVuICgpIC0+XG4gICAgc2NoZWR1bGVfaGVhcnRiZWF0cyB0O1xuICAgIFJlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgIHQucmVhZGVyXG4gICAgICB+b25fbWVzc2FnZTooU3RhZ2VkLnVuc3RhZ2UgKG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSlcbiAgICAgIH5vbl9lbmRfb2ZfYmF0Y2g6KGZ1biAoKSAtPlxuICAgICAgICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSlcbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE9rIHJlYXNvbiAtPiBjbGVhbnVwIHQgfnJlYXNvbiAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKVxuICAgICgqIFRoZSBwcm90b2NvbCBpcyBzdWNoIHRoYXQgcmlnaHQgbm93LCB0aGUgb25seSBvdXRjb21lIG9mIHRoZSBvdGhlciBzaWRlIGNsb3NpbmcgdGhlXG4gICAgICAgY29ubmVjdGlvbiBub3JtYWxseSBpcyB0aGF0IHdlIGdldCBhbiBlb2YuICopXG4gICAgfCBFcnJvciAoYEVvZiB8IGBDbG9zZWQpIC0+XG4gICAgICBjbGVhbnVwXG4gICAgICAgIHRcbiAgICAgICAgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJFT0Ygb3IgY29ubmVjdGlvbiBjbG9zZWRcIilcbiAgICAgICAgKFJwY19lcnJvci5ScGMgKENvbm5lY3Rpb25fY2xvc2VkLCB0LmRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgZG9faGFuZHNoYWtlIHQgfmhhbmRzaGFrZV90aW1lb3V0ID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gcmV0dXJuIChFcnJvciBIYW5kc2hha2VfZXJyb3IuVHJhbnNwb3J0X2Nsb3NlZClcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB3cml0ZXIgSGVhZGVyLmJpbl90LndyaXRlciBIZWFkZXIudjEgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgKCogSWYgd2UgdXNlIFttYXhfY29ubmVjdGlvbnNdIGluIHRoZSBzZXJ2ZXIsIHRoZW4gdGhpcyByZWFkIG1heSBqdXN0IGhhbmcgdW50aWwgdGhlXG4gICAgICAgc2VydmVyIHN0YXJ0cyBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zICh3aGljaCBjb3VsZCBiZSBuZXZlcikuICBUaGF0IGlzIHdoeSBhXG4gICAgICAgdGltZW91dCBpcyB1c2VkICopXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIChmdW4gKCkgLT4gUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdC5yZWFkZXIgSGVhZGVyLmJpbl90LnJlYWRlcilcbiAgICBpblxuICAgIChtYXRjaCVtYXBcbiAgICAgICBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXRcbiAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgaGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgICAgIHJlc3VsdFxuICAgICB3aXRoXG4gICAgIHwgYFRpbWVvdXQgLT5cbiAgICAgICAoKiBUaGVyZSdzIGEgcGVuZGluZyByZWFkLCB0aGUgcmVhZGVyIGlzIGJhc2ljYWxseSB1c2VsZXNzIG5vdywgc28gd2UgY2xlYW4gaXRcbiAgICAgICAgICB1cC4gKilcbiAgICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkhhbmRzaGFrZSB0aW1lb3V0XCIpKTtcbiAgICAgICBFcnJvciBIYW5kc2hha2VfZXJyb3IuVGltZW91dFxuICAgICB8IGBSZXN1bHQgKEVycm9yIGV4bikgLT5cbiAgICAgICBsZXQgcmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJbUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3RdIHJhaXNlZFwiIGluXG4gICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICAgRXJyb3IgKFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCAoRXJyb3Iub2ZfZXhuIGV4bikpXG4gICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBFb2YpKSAtPiBFcnJvciBFb2ZcbiAgICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYENsb3NlZCkpIC0+IEVycm9yIFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgfCBgUmVzdWx0IChPayAoT2sgcGVlcikpIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5uZWdvdGlhdGUgfnVzOkhlYWRlci52MSB+cGVlciB3aXRoXG4gICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoTmVnb3RpYXRpb25fZmFpbGVkIGUpXG4gICAgICAgIHwgT2sgMSAtPiBPayAoKVxuICAgICAgICB8IE9rIGkgLT4gRXJyb3IgKE5lZ290aWF0ZWRfdW5leHBlY3RlZF92ZXJzaW9uIGkpKSlcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5jb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sOlJwY1xuXG5sZXQgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgPyhoYW5kc2hha2VfdGltZW91dCA9IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQpXG4gICAgICA/KGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLmNyZWF0ZSAoKSlcbiAgICAgID8oZGVzY3JpcHRpb24gPSBJbmZvLm9mX3N0cmluZyBcIjxjcmVhdGVkLWRpcmVjdGx5PlwiKVxuICAgICAgPyh0aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAoeyByZWFkZXI7IHdyaXRlciB9IDogVHJhbnNwb3J0LnQpXG4gID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9XG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICB8IE5vbmUgLT4gSW1wbGVtZW50YXRpb25zLm51bGwgKClcbiAgICB8IFNvbWUgcyAtPiBzXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IGRlc2NyaXB0aW9uXG4gICAgOyBoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy50b19ydW50aW1lIGhlYXJ0YmVhdF9jb25maWdcbiAgICA7IGhlYXJ0YmVhdF9jYWxsYmFja3MgPSBbfHxdXG4gICAgOyBsYXN0X3NlZW5fYWxpdmUgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdGltZV9zb3VyY2VcbiAgICA7IHJlYWRlclxuICAgIDsgd3JpdGVyXG4gICAgOyBvcGVuX3F1ZXJpZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGhlYXJ0YmVhdF9ldmVudCA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgbGV0IHdyaXRlcl9tb25pdG9yX2V4bnMgPSBNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSAoV3JpdGVyLm1vbml0b3Igd3JpdGVyKSBpblxuICB1cG9uIChXcml0ZXIuc3RvcHBlZCB3cml0ZXIpIChmdW4gKCkgLT5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJQQyB0cmFuc3BvcnQgc3RvcHBlZFwiKSkpO1xuICBtYXRjaCVtYXAgZG9faGFuZHNoYWtlIHQgfmhhbmRzaGFrZV90aW1lb3V0IHdpdGhcbiAgfCBPayAoKSAtPlxuICAgIHJ1bl9hZnRlcl9oYW5kc2hha2UgdCB+aW1wbGVtZW50YXRpb25zIH5jb25uZWN0aW9uX3N0YXRlIH53cml0ZXJfbW9uaXRvcl9leG5zO1xuICAgIE9rIHRcbiAgfCBFcnJvciBlcnJvciAtPlxuICAgIEVycm9yIChIYW5kc2hha2VfZXJyb3IudG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOmRlc2NyaXB0aW9uIGVycm9yKVxuOztcblxubGV0IHdpdGhfY2xvc2VcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+ZGlzcGF0Y2hfcXVlcmllc1xuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBmXG4gICAgfCBgUmFpc2UgLT4gcmFpc2VcbiAgaW5cbiAgbGV0JWJpbmQgdCA9XG4gICAgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIHRyYW5zcG9ydFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBFcnJvciBlIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBUcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgaGFuZGxlX2hhbmRzaGFrZV9lcnJvciBlXG4gIHwgT2sgdCAtPlxuICAgIE1vbml0b3IucHJvdGVjdFxuICAgICAgfnJ1bjpcbiAgICAgICAgYFNjaGVkdWxlXG4gICAgICB+cmVzdDpgTG9nXG4gICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgIGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJScGMuQ29ubmVjdGlvbi53aXRoX2Nsb3NlIGZpbmlzaGVkXCIpKVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0JWJpbmQgcmVzdWx0ID0gZGlzcGF0Y2hfcXVlcmllcyB0IGluXG4gICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgfCBTb21lIF8gLT4gY2xvc2VfZmluaXNoZWQgdFxuICAgICAgICAgaW5cbiAgICAgICAgIHJlc3VsdClcbjs7XG5cbmxldCBzZXJ2ZXJfd2l0aF9jbG9zZVxuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIHRyYW5zcG9ydFxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgPVxuICBsZXQgb25faGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBgQ2FsbCBmXG4gICAgfCBgUmFpc2UgLT4gYFJhaXNlXG4gICAgfCBgSWdub3JlIC0+IGBDYWxsIChmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuICBpblxuICB3aXRoX2Nsb3NlXG4gICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICA/ZGVzY3JpcHRpb25cbiAgICA/dGltZV9zb3VyY2VcbiAgICB0cmFuc3BvcnRcbiAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gICAgfmRpc3BhdGNoX3F1ZXJpZXM6KGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG47O1xuXG5sZXQgY2xvc2VcbiAgICAgID9zdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgID8ocmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJScGMuQ29ubmVjdGlvbi5jbG9zZVwiKVxuICAgICAgdFxuICA9XG4gIGNsb3NlID9zdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgfnJlYXNvbiB0XG47O1xuXG5tb2R1bGUgQ2xpZW50X2ltcGxlbWVudGF0aW9ucyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAncyB0ID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgOiB0IC0+ICdzXG4gICAgOyBpbXBsZW1lbnRhdGlvbnMgOiAncyBJbXBsZW1lbnRhdGlvbnMudFxuICAgIH1cblxuICBsZXQgbnVsbCAoKSA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlID0gKGZ1biBfIC0+ICgpKTsgaW1wbGVtZW50YXRpb25zID0gSW1wbGVtZW50YXRpb25zLm51bGwgKCkgfVxuICA7O1xuZW5kXG4iLCJcbm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb25cbm1vZHVsZSBPbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbiA9IEltcGxlbWVudGF0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb25zID0gSW1wbGVtZW50YXRpb25zXG5tb2R1bGUgVHJhbnNwb3J0ID0gVHJhbnNwb3J0XG5tb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cblxuKCogVGhlIFJlc3VsdCBtb25hZCBpcyBhbHNvIHVzZWQuICopXG5sZXQgKCA+Pj1+ICkgPSBSZXN1bHQuKCA+Pj0gKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxubW9kdWxlIFJwY19jb21tb24gPSBzdHJ1Y3RcbiAgbGV0IGRpc3BhdGNoX3JhdydcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IHF1ZXJ5ID0geyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IHF1ZXJ5IH0gaW5cbiAgICBtYXRjaCBDb25uZWN0aW9uLmRpc3BhdGNoIGNvbm4gfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIFJwY19lcnJvci5Db25uZWN0aW9uX2Nsb3NlZFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9yYXcgY29ubiB+dGFnIH52ZXJzaW9uIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSB+cXVlcnlfaWQgfmYgPVxuICAgIGxldCByZXNwb25zZV9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAobWF0Y2hcbiAgICAgICBkaXNwYXRjaF9yYXcnXG4gICAgICAgICBjb25uXG4gICAgICAgICB+dGFnXG4gICAgICAgICB+dmVyc2lvblxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSAoZiByZXNwb25zZV9pdmFyKSlcbiAgICAgd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IEl2YXIuZmlsbCByZXNwb25zZV9pdmFyIGUpO1xuICAgIEl2YXIucmVhZCByZXNwb25zZV9pdmFyXG4gIDs7XG5lbmRcblxubGV0IHNoYXBlcyBsc3QgPVxuICBTZXhwLkxpc3RcbiAgICAoTGlzdC5tYXAgbHN0IH5mOihmdW4gKG5hbWUsIHNoYXBlKSAtPlxuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJcIiB+XzoobmFtZSA6IHN0cmluZykgfl86KEJpbl9wcm90LlNoYXBlLmV2YWxfdG9fZGlnZXN0X3N0cmluZyBzaGFwZSA6IHN0cmluZyldKSlcbjs7XG5cbm1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9yZXNwb25zZSA6ICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyByZXNwb25zZV90eXBlX2lkIDogJ3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSA9XG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cmVzcG9uc2VcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9yZXNwb25zZVxuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQucXVlcnlfdHlwZV9pZFxuICBsZXQgcmVzcG9uc2VfdHlwZV9pZCB0ID0gdC5yZXNwb25zZV90eXBlX2lkXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuYmluX3Jlc3BvbnNlXG4gIGxldCBzaGFwZXMgdCA9IHNoYXBlcyBbIFwicXVlcnlcIiwgdC5iaW5fcXVlcnkuc2hhcGU7IFwicmVzcG9uc2VcIiwgdC5iaW5fcmVzcG9uc2Uuc2hhcGUgXVxuXG4gIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IFJwYyAodC5iaW5fcXVlcnkucmVhZGVyLCB0LmJpbl9yZXNwb25zZS53cml0ZXIsIGYsIERlZmVycmVkKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IFJwYyAodC5iaW5fcXVlcnkucmVhZGVyLCB0LmJpbl9yZXNwb25zZS53cml0ZXIsIGYsIEJsb2NraW5nKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2UgPVxuICAgICAgICByZXNwb25zZS5kYXRhXG4gICAgICAgID4+PX4gZnVuIGxlbiAtPlxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIHQuYmluX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgSXZhci5maWxsIGl2YXIgcmVzcG9uc2U7XG4gICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fcXVlcnkud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfmY6cmVzcG9uc2VfaGFuZGxlclxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgaW5cbiAgICBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuIHQgY29ubiBxdWVyeSA9IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA+PnwgT3JfZXJyb3Iub2tfZXhuXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbnMuRXhwZXJ0LlJwY19yZXNwb25kZXJcblxuICAgIGxldCBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgZG9fZGlzcGF0Y2hcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZV9oYW5kbGVyIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyID1cbiAgICAgICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgICAgIG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgaGFuZGxlX2Vycm9yXG4gICAgICAgICAgICAgIChFcnJvci50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgICAgICAgICAgIGUpKTtcbiAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gKGxlbiA6IE5hdDAudCA6PiBpbnQpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGhhbmRsZV9yZXNwb25zZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBgcmVtb3ZlIChPayAoKSkgZWxzZSBgcmVtb3ZlX2FuZF93YWl0IGRcbiAgICAgIGluXG4gICAgICBkb19kaXNwYXRjaFxuICAgICAgICBjb25uXG4gICAgICAgIH50YWc6KFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZylcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgYnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSByZXNwb25zZV9oYW5kbGVyKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2ggY29ubiB+cnBjX3RhZyB+dmVyc2lvbiBidWYgfnBvcyB+bGVuIH5oYW5kbGVfcmVzcG9uc2UgfmhhbmRsZV9lcnJvciA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5cbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChmLCBEZWZlcnJlZClcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChTZXhwLkF0b20gXCJVbmtub3duXCIpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24nXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChTZXhwLkF0b20gXCJVbmtub3duXCIpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gIHR5cGUgJ21zZyB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fbXNnIDogJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IG1zZ190eXBlX2lkIDogJ21zZyBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2cgPVxuICAgIGxldCBtc2dfdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTptc2dcIl0gc2V4cF9vZl9vcGFxdWUgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZTsgdmVyc2lvbjsgYmluX21zZzsgbXNnX3R5cGVfaWQgfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9IHNoYXBlcyBbIFwibXNnXCIsIHQuYmluX21zZy5zaGFwZSBdXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IG1zZ190eXBlX2lkIHQgPSB0Lm1zZ190eXBlX2lkXG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPSBPbmVfd2F5ICh0LmJpbl9tc2cucmVhZGVyLCBmKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXcnXG4gICAgICBjb25uXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OnQuYmluX21zZy53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgfD4gZnVuIHJlc3VsdCAtPiBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuIHQgY29ubiBxdWVyeSA9IE9yX2Vycm9yLm9rX2V4biAoZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5KVxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IE9uZV93YXlfZXhwZXJ0IGZcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2ggeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfSBjb25uIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rICgpIC0+IGBPa1xuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGVfZGlzcGF0Y2hcbiAgICAgICAgICB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9XG4gICAgICAgICAgY29ublxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLnNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZmx1c2hlZCAtPiBgRmx1c2hlZCBmbHVzaGVkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDbG9zZWRfbG9jYWxseVxuICAgIHwgQ2xvc2VkX3JlbW90ZWx5XG4gICAgfCBFcnJvciBvZiBFcnJvci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICAgICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgfCBFcnJvciBvZiBFcnJvci5TdGFibGUuVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG4oKiB0aGUgYmFzaXMgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBQaXBlX3JwYyBhbmQgU3RhdGVfcnBjICopXG5tb2R1bGUgU3RyZWFtaW5nX3JwYyA9IHN0cnVjdFxuICBtb2R1bGUgSW5pdGlhbF9tZXNzYWdlID0gUC5TdHJlYW1faW5pdGlhbF9tZXNzYWdlXG5cbiAgdHlwZSAoJ3F1ZXJ5LCAnaW5pdGlhbF9yZXNwb25zZSwgJ3VwZGF0ZV9yZXNwb25zZSwgJ2Vycm9yX3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZSA6ICdpbml0aWFsX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZSA6ICd1cGRhdGVfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgOiAnZXJyb3JfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIDogJ2luaXRpYWxfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA6ICd1cGRhdGVfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkIDogJ2Vycm9yX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayA9XG4gICAgICBtYXRjaCBjbGllbnRfcHVzaGVzX2JhY2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06ZXJyb3JcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgPSBiaW5fZXJyb3JcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFja1xuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV9pbml0aWFsX21lc3NhZ2UgeCA9XG4gICAgeyBJbml0aWFsX21lc3NhZ2UudW51c2VkX3F1ZXJ5X2lkID0gUC5VbnVzZWRfcXVlcnlfaWQudDsgaW5pdGlhbCA9IHggfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9XG4gICAgc2hhcGVzXG4gICAgICBbIFwicXVlcnlcIiwgdC5iaW5fcXVlcnkuc2hhcGVcbiAgICAgIDsgXCJpbml0aWFsLXJlc3BvbnNlXCIsIHQuYmluX2luaXRpYWxfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgXCJ1cGRhdGUtcmVzcG9uc2VcIiwgdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IFwiZXJyb3JcIiwgdC5iaW5fZXJyb3JfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIF1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2dlbiB0ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSBpbXBsID1cbiAgICBsZXQgYmluX2luaXRfd3JpdGVyID1cbiAgICAgIEluaXRpYWxfbWVzc2FnZS5iaW5fd3JpdGVyX3RcbiAgICAgICAgdC5iaW5faW5pdGlhbF9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgdC5iaW5fZXJyb3JfcmVzcG9uc2Uud3JpdGVyXG4gICAgaW5cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgU3RyZWFtaW5nX3JwY1xuICAgICAgICAgICh0LmJpbl9xdWVyeS5yZWFkZXIsIGJpbl9pbml0X3dyaXRlciwgdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLndyaXRlciwgaW1wbClcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIGxldCBmIGMgcXVlcnkgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAobWFrZV9pbml0aWFsX21lc3NhZ2UgKEVycm9yIGVycikpXG4gICAgICB8IE9rIChpbml0aWFsLCBwaXBlKSAtPiBPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgKE9rIGluaXRpYWwpLCBwaXBlKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiB0ID9vbl9leGNlcHRpb24gKFBpcGUgZilcbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSB3cml0ZXIgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3cml0ZXIgd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4gRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpXG4gICAgICB8IE9rIF8gYXMgeCAtPiBPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgeClcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gP29uX2V4Y2VwdGlvbiB0IChEaXJlY3QgZilcbiAgOztcblxuICBsZXQgYWJvcnQgdCBjb25uIGlkID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnID0gdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb247IGlkOyBkYXRhID0gYEFib3J0IH0gaW5cbiAgICBpZ25vcmVcbiAgICAgIChDb25uZWN0aW9uLmRpc3BhdGNoXG4gICAgICAgICBjb25uXG4gICAgICAgICB+YmluX3dyaXRlcl9xdWVyeTpQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICAgOiAodW5pdCwgWyBgQ2xvc2VkIF0pIFJlc3VsdC50KVxuICA7O1xuXG4gIG1vZHVsZSBQaXBlX21lc3NhZ2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBVcGRhdGUgb2YgJ2FcbiAgICAgIHwgQ2xvc2VkIG9mIFsgYEJ5X3JlbW90ZV9zaWRlIHwgYEVycm9yIG9mIEVycm9yLnQgXVxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9yZXNwb25zZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IENvbnRpbnVlXG4gICAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX21ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBEZWZlcnJlZC50XG4gICAgICB9XG5cbiAgICBsZXQgaWQgdCA9IHQucXVlcnlfaWRcbiAgICBsZXQgY2xvc2VfcmVhc29uIHQgPSB0LmNsb3NlX3JlYXNvblxuICBlbmRcblxuICBtb2R1bGUgUmVzcG9uc2Vfc3RhdGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVXBkYXRlX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcmVzcG9uc2UudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEluaXRpYWwgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSB0ID1cbiAgICAgICAgeyBycGMgOiAoJ3EsICdpLCAndSwgJ2UpIHRcbiAgICAgICAgOyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgICA7IG1ha2VfdXBkYXRlX2hhbmRsZXIgOiB1bml0IC0+ICdleHRyYSAqICd1IFVwZGF0ZV9oYW5kbGVyLnRcbiAgICAgICAgOyBpdmFyIDogKFAuUXVlcnlfaWQudCAqICdpICogJ2V4dHJhLCAnZSkgUmVzdWx0LnQgUnBjX3Jlc3VsdC50IEl2YXIudFxuICAgICAgICA7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgOiAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgSW5pdGlhbC50IC0+ICd1IHRcbiAgICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgb2YgJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAnYSBVcGRhdGVfaGFuZGxlci50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSB7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50IH1cbiAgZW5kXG5cbiAgbGV0IHJlYWRfZXJyb3JcbiAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvblxuICAgICAgICAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudClcbiAgICAgICAgZXJyXG4gICAgPVxuICAgIGxldCBjb3JlX2VyciA9XG4gICAgICBFcnJvci50X29mX3NleHAgKFJwY19lcnJvci5zZXhwX29mX3QgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBlcnIpXG4gICAgaW5cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCAoYEVycm9yIGNvcmVfZXJyKSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKEVycm9yIGVycilcbiAgOztcblxuICBsZXQgZW9mIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KSA9XG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgYEJ5X3JlbW90ZV9zaWRlKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBpbml0aWFsX3N0YXRlXG4gICAgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IG9wZW4gUmVzcG9uc2Vfc3RhdGUgaW5cbiAgICBsZXQgc3RhdGUgPSB7IHN0YXRlID0gV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX3N0YXRlIH0gaW5cbiAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICBtYXRjaCBzdGF0ZS5zdGF0ZSB3aXRoXG4gICAgICB8IFdyaXRpbmdfdXBkYXRlcyAoYmluX3JlYWRlcl91cGRhdGUsIGhhbmRsZXIpIC0+XG4gICAgICAgIChtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBFb2YgLT4gMFxuICAgICAgICAgICAgICAgICB8IGBPayAobGVuIDogTmF0MC50KSAtPiAobGVuIDo+IGludCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgfCBPayBgRW9mIC0+IGVvZiBoYW5kbGVyXG4gICAgICAgICAgICB8IE9rIChgT2sgbGVuKSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgICAgIGJpbl9yZWFkZXJfdXBkYXRlXG4gICAgICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICAgICB8IE9rIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIGhhbmRsZXIgKFVwZGF0ZSBkYXRhKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IGBrZWVwXG4gICAgICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBgd2FpdCBkKSkpKVxuICAgICAgfCBTdGF0ZS5XYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfaGFuZGxlciAtPlxuICAgICAgICAoKiBXZSBuZXZlciB1c2UgW2ByZW1vdmUgKEVycm9yIF8pXSBoZXJlLCBzaW5jZSB0aGF0IGluZGljYXRlcyB0aGF0IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIHNob3VsZCBiZSBjbG9zZWQsIGFuZCB0aGVzZSBhcmUgXCJub3JtYWxcIiBlcnJvcnMuIChJbiBjb250cmFzdCwgdGhlXG4gICAgICAgICAgIGVycm9ycyB3ZSBnZXQgaW4gdGhlIFtXcml0aW5nX3VwZGF0ZXNfdG9fcGlwZV0gY2FzZSBpbmRpY2F0ZSBtb3JlIHNlcmlvdXNcbiAgICAgICAgICAgcHJvYmxlbXMuKSBJbnN0ZWFkLCB3ZSBqdXN0IHB1dCBlcnJvcnMgaW4gW2l2YXJdLiAqKVxuICAgICAgICBsZXQgZXJyb3IgZXJyID1cbiAgICAgICAgICBJdmFyLmZpbGwgaW5pdGlhbF9oYW5kbGVyLml2YXIgKEVycm9yIGVycik7XG4gICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycm9yIGVyclxuICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgbGV0IGluaXRpYWwgPVxuICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAoSW5pdGlhbF9tZXNzYWdlLmJpbl9yZWFkZXJfdFxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5faW5pdGlhbF9yZXNwb25zZS5yZWFkZXJcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2Vycm9yX3Jlc3BvbnNlLnJlYWRlcilcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIGluaXRpYWxfcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBpbml0aWFsIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycm9yIGVyclxuICAgICAgICAgICAgfCBPayBpbml0aWFsX21zZyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaW5pdGlhbF9tc2cuaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGwgaW5pdGlhbF9oYW5kbGVyLml2YXIgKE9rIChFcnJvciBlcnIpKTtcbiAgICAgICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgICAgICB8IE9rIGluaXRpYWwgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGV4dHJhLCBoYW5kbGVyID0gaW5pdGlhbF9oYW5kbGVyLm1ha2VfdXBkYXRlX2hhbmRsZXIgKCkgaW5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLml2YXJcbiAgICAgICAgICAgICAgICAgICAoT2sgKE9rIChpbml0aWFsX2hhbmRsZXIucXVlcnlfaWQsIGluaXRpYWwsIGV4dHJhKSkpO1xuICAgICAgICAgICAgICAgICBzdGF0ZS5zdGF0ZVxuICAgICAgICAgICAgICAgICA8LSBXcml0aW5nX3VwZGF0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAoaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlLnJlYWRlciwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgIGBrZWVwKSkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgbWFrZV91cGRhdGVfaGFuZGxlciA9XG4gICAgbGV0IGJpbl93cml0ZXJfcXVlcnkgPVxuICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uZWVkc19sZW5ndGhcbiAgICAgICAgKFdyaXRlcl93aXRoX2xlbmd0aC5vZl90eXBlX2NsYXNzIHQuYmluX3F1ZXJ5KVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gYFF1ZXJ5IHF1ZXJ5IGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgY29ublxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICB+cXVlcnlcbiAgICAgIH5mOihmdW4gaXZhciAtPlxuICAgICAgICByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgKERlZmVycmVkLnBlZWsgKENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgeyBycGMgPSB0OyBxdWVyeV9pZDsgY29ubmVjdGlvbiA9IGNvbm47IGl2YXI7IG1ha2VfdXBkYXRlX2hhbmRsZXIgfSlcbiAgICA+PnwgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246eyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbiB9XG4gICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfaXRlciB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIG1hdGNoJW1hcCBkaXNwYXRjaF9nZW4gdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT4gKCksIGYpIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsICgpKSkgLT4gT2sgKE9rIChpZCwgaW5pdCkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBkaXNwYXRjaF9nZW4gdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT5cbiAgICAgICAgbGV0IHBpcGVfciwgcGlwZV93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgKCogU2V0IGEgc21hbGwgYnVmZmVyIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHB1c2hiYWNrIGV2ZW50cyAqKVxuICAgICAgICBQaXBlLnNldF9zaXplX2J1ZGdldCBwaXBlX3cgMTAwO1xuICAgICAgICBsZXQgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBJdmFyLnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgZiA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBVcGRhdGUgZGF0YSAtPlxuICAgICAgICAgICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCBwaXBlX3cpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHBpcGVfdyBkYXRhO1xuICAgICAgICAgICAgICBpZiB0LmNsaWVudF9wdXNoZXNfYmFjayAmJiBQaXBlLmxlbmd0aCBwaXBlX3cgPj0gUGlwZS5zaXplX2J1ZGdldCBwaXBlX3dcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFdhaXRcbiAgICAgICAgICAgICAgICAgIChtYXRjaCVtYXAgUGlwZS5kb3duc3RyZWFtX2ZsdXNoZWQgcGlwZV93IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+ICgpKVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZVxuICAgICAgICAgIHwgQ2xvc2VkIHJlYXNvbiAtPlxuICAgICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5XG4gICAgICAgICAgICAgIGNsb3NlX3JlYXNvblxuICAgICAgICAgICAgICAobWF0Y2ggcmVhc29uIHdpdGhcbiAgICAgICAgICAgICAgIHwgYEJ5X3JlbW90ZV9zaWRlIC0+IENsb3NlZF9yZW1vdGVseVxuICAgICAgICAgICAgICAgfCBgRXJyb3IgZXJyIC0+IEVycm9yIGVycik7XG4gICAgICAgICAgICBQaXBlLmNsb3NlIHBpcGVfdztcbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgIGluXG4gICAgICAgIChwaXBlX3IsIGNsb3NlX3JlYXNvbiksIGYpXG4gICAgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKHBpcGVfciwgY2xvc2VfcmVhc29uKSkpIC0+XG4gICAgICB1cG9uIChQaXBlLmNsb3NlZCBwaXBlX3IpIChmdW4gKCkgLT5cbiAgICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgY2xvc2VfcmVhc29uKVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhYm9ydCB0IGNvbm4gaWQ7XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGNsb3NlX3JlYXNvbiBDbG9zZWRfbG9jYWxseSkpO1xuICAgICAgbGV0IHBpcGVfbWV0YWRhdGEgOiBQaXBlX21ldGFkYXRhLnQgPVxuICAgICAgICB7IHF1ZXJ5X2lkID0gaWQ7IGNsb3NlX3JlYXNvbiA9IEl2YXIucmVhZCBjbG9zZV9yZWFzb24gfVxuICAgICAgaW5cbiAgICAgIE9rIChPayAocGlwZV9tZXRhZGF0YSwgaW5pdCwgcGlwZV9yKSlcbiAgOztcbmVuZFxuXG4oKiBBIFBpcGVfcnBjIGlzIGxpa2UgYSBTdHJlYW1pbmdfcnBjLCBleGNlcHQgd2UgZG9uJ3QgY2FyZSBhYm91dCBpbml0aWFsIHN0YXRlIC0gdGh1c1xuICAgaXQgaXMgcmVzdHJpY3RlZCB0byB1bml0IGFuZCB1bHRpbWF0ZWx5IGlnbm9yZWQgKilcbm1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSwgJ2Vycm9yKSB0ID0gKCdxdWVyeSwgdW5pdCwgJ3Jlc3BvbnNlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZSA/Y2xpZW50X3B1c2hlc19iYWNrIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB+YmluX2Vycm9yICgpID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6VW5pdC5iaW5fdFxuICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2U6YmluX3Jlc3BvbnNlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICAoKiBbaW5pdGlhbF9yZXNwb25zZV0gZG9lc24ndCBzaG93IHVwIGluIFtQaXBlX3JwY10ncyBzaWduYXR1cmUsXG4gICAgICAgICBzbyB0aGUgdHlwZS1pZCBjcmVhdGVkIHVzaW5nIFthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZV0gaXNcbiAgICAgICAgIHVucmVhY2hhYmxlLiAqKVxuICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlOlwiXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwicmVzcG9uc2VcIlxuICAgICAgKClcbiAgOztcblxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCAoZnVuIGEgcXVlcnkgLT5cbiAgICAgIGxldCVtYXAgeCA9IGYgYSBxdWVyeSBpblxuICAgICAgeCA+Pnx+IGZ1biB4IC0+ICgpLCB4KVxuICA7O1xuXG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICBtb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCdWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgcmVmXG5cbiAgICAgICAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfc2l6ZSA9IDQwOTYpICgpID1cbiAgICAgICAgICBpZiBpbml0aWFsX3NpemUgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuQnVmZmVyLmNyZWF0ZSBnb3QgbmVnYXRpdmUgYnVmZmVyIFxcXG4gICAgICAgICAgICAgICBzaXplXCJcbiAgICAgICAgICAgICAgaW5pdGlhbF9zaXplXG4gICAgICAgICAgICAgIEludC5zZXhwX29mX3Q7XG4gICAgICAgICAgcmVmIChCaWdzdHJpbmcuY3JlYXRlIGluaXRpYWxfc2l6ZSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQuR3JvdXAudCA9XG4gICAgICAgIHsgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgICAgfVxuXG4gICAgICBhbmQgJ2EgY29tcG9uZW50ID0gJ2EgVC5Hcm91cC5jb21wb25lbnQgPVxuICAgICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBULmdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGUgP2J1ZmZlciAoKSA9XG4gICAgICAgIGxldCBidWZmZXIgPVxuICAgICAgICAgIG1hdGNoIGJ1ZmZlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgKClcbiAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgIGluXG4gICAgICAgIHsgY29tcG9uZW50cyA9IEJhZy5jcmVhdGUgKCk7IGNvbXBvbmVudHNfYnlfaWQgPSBJZC5UYWJsZS5jcmVhdGUgKCk7IGJ1ZmZlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgbGVuZ3RoIHQgPSBCYWcubGVuZ3RoIHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgYWRkX2V4biB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXJcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGRfZXhuOiBjYW5ub3QgYWRkIGEgY2xvc2VkIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXJcIjtcbiAgICAgICAgaWYgSGFzaHRibC5tZW0gdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IHRyeWluZyB0byBhZGQgYSBkaXJlY3QgXFxcbiAgICAgICAgICAgICBzdHJlYW0gd3JpdGVyIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBncm91cFwiO1xuICAgICAgICAobWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgb25lIC0+XG4gICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgKGJpbl93cml0ZXIgb25lKSAoYmluX3dyaXRlciB3cml0ZXIpKVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZDogY2Fubm90IGFkZCBhIGRpcmVjdCBzdHJlYW0gXFxcbiAgICAgICAgICAgICAgICB3cml0ZXIgd2l0aCBhIGRpZmZlcmVudCBiaW5fd3JpdGVyXCIpO1xuICAgICAgICBsZXQgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgPSBCYWcuYWRkIHQuY29tcG9uZW50cyB3cml0ZXIgaW5cbiAgICAgICAgbGV0IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyID1cbiAgICAgICAgICBCYWcuYWRkIHdyaXRlci5ncm91cHMgeyBncm91cCA9IHQ7IGVsZW1lbnRfaW5fZ3JvdXAgPSB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuYWRkX2V4blxuICAgICAgICAgIHQuY29tcG9uZW50c19ieV9pZFxuICAgICAgICAgIH5rZXk6d3JpdGVyLmlkXG4gICAgICAgICAgfmRhdGE6eyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlbW92ZSB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQuY29tcG9uZW50c19ieV9pZCB3cml0ZXIuaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIH0gLT5cbiAgICAgICAgICBCYWcucmVtb3ZlIHQuY29tcG9uZW50cyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICBCYWcucmVtb3ZlIHdyaXRlci5ncm91cHMgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19saXN0IHQgPSBCYWcudG9fbGlzdCB0LmNvbXBvbmVudHNcblxuICAgICAgbGV0IGZsdXNoZWRfb3JfY2xvc2VkIHQgPVxuICAgICAgICB0b19saXN0IHRcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB0IC0+IERlZmVycmVkLmFueV91bml0IFsgZmx1c2hlZCB0OyBjbG9zZWQgdCBdKVxuICAgICAgICB8PiBEZWZlcnJlZC5hbGxfdW5pdFxuICAgICAgOztcblxuICAgICAgbGV0IGZsdXNoZWQgdCA9IGZsdXNoZWRfb3JfY2xvc2VkIHRcblxuICAgICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICBCYWcuaXRlciB0LmNvbXBvbmVudHMgfmY6KGZ1biBkaXJlY3Rfc3RyZWFtX3dyaXRlciAtPlxuICAgICAgICAgICAgKCogV3JpdGVycyBhcmUgYXV0b21hdGljYWxseSBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZWlyIGdyb3VwcyB3aGVuXG4gICAgICAgICAgICAgICBjbG9zZWQsIHNvIFtgQ2xvc2VkXSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB0aGUgcmVtb3ZhbCBkaWRuJ3QgaGFwcGVuIHlldC4gKilcbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgZGlyZWN0X3N0cmVhbV93cml0ZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgICAgICAgICAgICAgIDogWyBgT2sgfCBgQ2xvc2VkIF0pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cml0ZSB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW47XG4gICAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICAgIG1hdGNoIEJhZy5jaG9vc2UgdC5jb21wb25lbnRzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICBsZXQgb25lID0gQmFnLkVsdC52YWx1ZSBvbmUgaW5cbiAgICAgICAgICBsZXQgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPSBiaW5fd3JpdGVyIG9uZSBpblxuICAgICAgICAgIGxldCBidWZmZXIgPSAhKHQuYnVmZmVyKSBpblxuICAgICAgICAgICgqIE9wdGltaXN0aWMgZmlyc3QgdHJ5ICopXG4gICAgICAgICAgKG1hdGNoIHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCB3aXRoXG4gICAgICAgICAgIHwgbGVuIC0+IEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW5cbiAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICgqIEl0J3MgbGlrZWx5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgICAgICAgICBpbnRlcm5hbCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4gVGVjaG5pY2FsbHkgd2UgY291bGQgbWF0Y2ggb25cbiAgICAgICAgICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0XG4gICAgICAgICAgICAgICAgY3VzdG9tIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgICAgICAgIFtJbnZhbGlkX2FyZ3VtZW50XSBvciBbRmFpbHVyZV0gZm9yIGluc3RhbmNlLiAqKVxuICAgICAgICAgICAgIGxldCBsZW4gPSBzaXplIHggaW5cbiAgICAgICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmZmVyO1xuICAgICAgICAgICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIChJbnQuY2VpbF9wb3cyIGxlbikgaW5cbiAgICAgICAgICAgICB0LmJ1ZmZlciA6PSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGxlbiA9IHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgICAgICAgIEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgdCB4ID1cbiAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHg7XG4gICAgICAgIGZsdXNoZWRfb3JfY2xvc2VkIHRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0IHQgZiA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdCB0IGZcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZSA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCAoKSwgcGlwZV9yKSAtPiBwaXBlX3IsIG1ldGFkYXRhXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFBpcGVfcnBjX2ZhaWxlZFxuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoIHQgY29ubiBxdWVyeSBpblxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBycGNfZXJyb3IgLT4gcmFpc2UgKEVycm9yLnRvX2V4biBycGNfZXJyb3IpXG4gICAgfCBPayAoRXJyb3IgXykgLT4gcmFpc2UgUGlwZV9ycGNfZmFpbGVkXG4gICAgfCBPayAoT2sgcGlwZV9hbmRfaWQpIC0+IHBpcGVfYW5kX2lkXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXNzYWdlXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5QaXBlX3Jlc3BvbnNlXG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgdCBjb25uIHF1ZXJ5IH5mID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaF9pdGVyIHQgY29ubiBxdWVyeSB+ZiBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAoaWQsICgpKSAtPiBpZFxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIHQgPVxuICAgICgncXVlcnksICdzdGF0ZSwgJ3VwZGF0ZSwgJ2Vycm9yKSBTdHJlYW1pbmdfcnBjLnRcblxuICBtb2R1bGUgSWQgPSBQLlF1ZXJ5X2lkXG4gIG1vZHVsZSBNZXRhZGF0YSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAoKVxuICAgID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6YmluX3N0YXRlXG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fdXBkYXRlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJzdGF0ZVwiXG4gICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZTpcInVwZGF0ZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9zdGF0ZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gIGxldCBiaW5fdXBkYXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3VwZGF0ZV9yZXNwb25zZVxuICBsZXQgYmluX2Vycm9yIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2Vycm9yX3Jlc3BvbnNlXG4gIGxldCBpbXBsZW1lbnQgPSBTdHJlYW1pbmdfcnBjLmltcGxlbWVudFxuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlXG4gICAgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgc3RhdGUsIHVwZGF0ZV9yKSAtPiBzdGF0ZSwgdXBkYXRlX3IsIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQuU3RyZWFtaW5nX3JwYy50YWdcbiAgbGV0IHZlcnNpb24gdCA9IHQuU3RyZWFtaW5nX3JwYy52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5xdWVyeV90eXBlX2lkXG4gIGxldCBzdGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gIGxldCB1cGRhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG4gIGxldCBlcnJvcl90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBBbnkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFJwYyA6ICgncSwgJ3IpIFJwYy50IC0+IHRcbiAgICB8IFBpcGUgOiAoJ3EsICdyLCAnZSkgUGlwZV9ycGMudCAtPiB0XG4gICAgfCBTdGF0ZSA6ICgncSwgJ3MsICd1LCAnZSkgU3RhdGVfcnBjLnQgLT4gdFxuICAgIHwgT25lX3dheSA6ICdtIE9uZV93YXkudCAtPiB0XG5cbiAgbGV0IGRlc2NyaXB0aW9uID0gZnVuY3Rpb25cbiAgICB8IFJwYyBycGMgLT4gUnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgUGlwZSBycGMgLT4gUGlwZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBTdGF0ZSBycGMgLT4gU3RhdGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgT25lX3dheSBycGMgLT4gT25lX3dheS5kZXNjcmlwdGlvbiBycGNcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uLlN0YWJsZVxuICBtb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBQaXBlX2Nsb3NlX3JlYXNvbi5TdGFibGVcbiAgbW9kdWxlIFJwYyA9IFJwY1xuICBtb2R1bGUgUGlwZV9ycGMgPSBQaXBlX3JwY1xuICBtb2R1bGUgU3RhdGVfcnBjID0gU3RhdGVfcnBjXG4gIG1vZHVsZSBPbmVfd2F5ID0gT25lX3dheVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFJwY1xuXG5tb2R1bGUgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IFBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgdHlwZSAnaW5wdXQgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyBjb252ZXJ0IDogJ2lucHV0IC0+ICdvdXRwdXRcbiAgICAgICAgOyB3cml0ZXIgOiAnb3V0cHV0IERpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgfVxuICAgICAgICAtPiAnaW5wdXQgdFxuXG4gIGxldCBjcmVhdGUgfmNvbnZlcnQgfndyaXRlciA9IFQgeyBjb252ZXJ0OyB3cml0ZXIgfVxuXG4gIGxldCB3cml0ZSAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGUgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgY2xvc2UgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2Ugd3JpdGVyXG4gIGxldCBpc19jbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuaXNfY2xvc2VkIHdyaXRlclxuICBsZXQgY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlZCB3cml0ZXJcbmVuZFxuXG5sZXQgZmFpbGVkX2NvbnZlcnNpb24geCA9XG4gIEVycm9yLmNyZWF0ZVxuICAgIFwidHlwZSBjb252ZXJzaW9uIGZhaWx1cmVcIlxuICAgIHhcbiAgICBbJXNleHBfb2Y6XG4gICAgICBbIGBNc2cgfCBgUXVlcnkgfCBgUmVzcG9uc2UgfCBgRXJyb3IgfCBgU3RhdGUgfCBgVXBkYXRlIF1cbiAgICAgICogWyBgUnBjIG9mIHN0cmluZyBdXG4gICAgICAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICAgICogZXhuXVxuOztcblxubGV0IG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgeCA9XG4gIEVycm9yLmNyZWF0ZVxuICAgIFwibXVsdGlwbGUgcnBjIHJlZ2lzdHJhdGlvbnNcIlxuICAgIHhcbiAgICBbJXNleHBfb2Y6IFsgYFJwYyBvZiBzdHJpbmcgXSAqIFsgYFZlcnNpb24gb2YgaW50IF1dXG47O1xuXG5sZXQgdW5rbm93bl92ZXJzaW9uIHggPSBFcnJvci5jcmVhdGUgXCJ1bmtub3duIHJwYyB2ZXJzaW9uXCIgeCBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cblxubW9kdWxlIENhbGxlZV9jb252ZXJ0cyA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIFNpbXBsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgPVxuICAgICAgICB7IGFkYXB0IDpcbiAgICAgICAgICAgICdzdGF0ZS4gKCdzdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3BvbnNlIERlZmVycmVkLnQpIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50XG4gICAgICAgIH1cblxuICAgICAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBhZGFwdGVycyA6ICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciBJbnQuTWFwLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5uYW1lID0geyBuYW1lOyBhZGFwdGVycyA9IEludC5NYXAuZW1wdHkgfVxuXG4gICAgICBsZXQgd3JhcF9lcnJvciBmbiBzdGF0ZSBxdWVyeSA9XG4gICAgICAgIG1hdGNoJW1hcCBmbiBzdGF0ZSBxdWVyeSB3aXRoXG4gICAgICAgIHwgT2sgdmFsdWUgLT4gT2sgdmFsdWVcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGQgeyBuYW1lOyBhZGFwdGVycyB9IHJwYyBhZGFwdGVyID1cbiAgICAgICAgaWYgU3RyaW5nLiggPD4gKSBuYW1lIChScGMubmFtZSBycGMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgXCJScGMgbmFtZXMgZG9uJ3QgYWdyZWVcIlxuICAgICAgICAgICAgKG5hbWUsIFJwYy5uYW1lIHJwYylcbiAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdmVyc2lvbiA9IFJwYy52ZXJzaW9uIHJwYyBpblxuICAgICAgICAgIG1hdGNoIE1hcC5maW5kIGFkYXB0ZXJzIHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICBcIlZlcnNpb24gYWxyZWFkeSBleGlzdHNcIlxuICAgICAgICAgICAgICAobmFtZSwgdmVyc2lvbilcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgYWRhcHRlcnMgPSBNYXAuc2V0IGFkYXB0ZXJzIH5rZXk6dmVyc2lvbiB+ZGF0YTphZGFwdGVyIGluXG4gICAgICAgICAgICBPayB7IG5hbWU7IGFkYXB0ZXJzIH0pXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uIHQgb2xkX3JwYyB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBhZGFwdCBmbiA9XG4gICAgICAgICAgbGV0IGFkYXB0ZWQgc3RhdGUgb2xkX3F1ZXJ5ID1cbiAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gZm4gc3RhdGUgKHVwZ3JhZGUgb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgZG93bmdyYWRlIHJlc3VsdFxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjIGFkYXB0ZWRcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgb2xkX3JwYyB1cGdyYWRlX29yX2Vycm9yIGRvd25ncmFkZV9vcl9lcnJvciA9XG4gICAgICAgIGxldCBhZGFwdCBmbiA9XG4gICAgICAgICAgbGV0IGFkYXB0ZWQgc3RhdGUgb2xkX3F1ZXJ5ID1cbiAgICAgICAgICAgIGxldCBvcGVuIERlZmVycmVkLlJlc3VsdC5MZXRfc3ludGF4IGluXG4gICAgICAgICAgICBsZXQlYmluZCBxdWVyeSA9IERlZmVycmVkLnJldHVybiAodXBncmFkZV9vcl9lcnJvciBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBsZXQlYmluZCByZXNwb25zZSA9IGZuIHN0YXRlIHF1ZXJ5IGluXG4gICAgICAgICAgICBEZWZlcnJlZC5yZXR1cm4gKGRvd25ncmFkZV9vcl9lcnJvciByZXNwb25zZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyAod3JhcF9lcnJvciBhZGFwdGVkKVxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb24gdCBycGMgdXBncmFkZSBkb3duZ3JhZGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBycGMgdXBncmFkZSBkb3duZ3JhZGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnQgdCBmbiA9IE1hcC5kYXRhIHQuYWRhcHRlcnMgfD4gTGlzdC5tYXAgfmY6KGZ1biB7IGFkYXB0IH0gLT4gYWRhcHQgZm4pXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IHF1ZXJ5IC0+IHJlc3BvbnNlIERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPSAncyAtPiB2ZXJzaW9uOmludCAtPiBNb2RlbC5xdWVyeSAtPiBNb2RlbC5yZXNwb25zZSBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBScGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgICBsZXQlbWFwIHIgPSBmIHMgfnZlcnNpb24gcSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWwgcikgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIHIgLT4gclxuICAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAocmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IChNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgIC0+ICh1bml0LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGltcGwgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKFBpcGUgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChEaXJlY3QgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKE1vZGVsLnJlc3BvbnNlIC0+IFZlcnNpb25faS5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVmVyc2lvbl9pLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuICAgICAgICBvcGVuIENvbnZlcnRcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBQaXBlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9yZXNwb25zZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgIHwgcSAtPiBxXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBpbXBsID1cbiAgICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgICB8IFBpcGUgZiAtPlxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgT2sgcGlwZSAtPlxuICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiByZXR1cm4gKE9rIChjb252ZXJ0X3BpcGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHJldHVybiAod3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcikpXG4gICAgICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3Iub2tfZXhuIGNvbnZlcnRfZWx0IGluXG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnRfZGlyZWN0IHJwYyAoZnVuIHMgcSBkc3cgLT5cbiAgICAgICAgICAgICAgbGV0IHdyaXRlciA9XG4gICAgICAgICAgICAgICAgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLmNyZWF0ZSB+Y29udmVydDpjb252ZXJ0X2VsdCB+d3JpdGVyOmRzd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCVtYXAgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdyaXRlciB3aXRoXG4gICAgICAgICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50IC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPVxuICAgICAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJjYW5ub3QgdXNlIGRpcmVjdCBpbnRlcmZhY2Ugd2l0aCBSZWdpc3Rlcl9yYXdcIlxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSA9IFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9rIFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBwaXBlID0gUGlwZS5tYXAgcGlwZSB+ZjpWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IChzdGF0ZSAqIHVwZGF0ZSBQaXBlLlJlYWRlci50LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPVxuICAgICAgICAnc1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAtPiAoTW9kZWwuc3RhdGUgKiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF8pIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgc3RhdGVfb2ZfbW9kZWwgOiBNb2RlbC5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBTdGF0ZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2glYmluZCBmIHMgfnZlcnNpb24gcSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgKG1vZGVsX3N0YXRlLCBwaXBlKSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuc3RhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChPayAoc3RhdGUsIFZlcnNpb25faS51cGRhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCBfc3RhdGUgcGlwZSA9IFBpcGUubWFwIH5mOnVwZGF0ZV9vZl9tb2RlbCBwaXBlXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLm1zZyAtPiB1bml0XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9tc2cgOiBtc2cgLT4gTW9kZWwubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIE9uZV93YXkuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfbXNnIHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+IGYgcyB+dmVyc2lvbiBxKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuT25lX3dheSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1lbnUgPSBzdHJ1Y3RcbiAgKCoqKioqKioqKioqKioqKioqIHNvbWUgcHJvaGliaXRpb25zIGZvciB0aGlzIG1vZHVsZSAqKioqKioqKioqKioqKioqKipcblxuICAgICAgICAgICAgICAgICAgICAgKDEpICEhISBuZXZlciBwcnVuZSBvbGQgdmVyc2lvbnMgb2YgdGhpcyBycGMgISEhXG5cbiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHRvbyBmdW5kYW1lbnRhbCB0byB0aGUgd29ya2luZ3Mgb2YgdmFyaW91cyB2ZXJzaW9uaW5nXG4gICAgICAgICAgICAgICAgICAgICBzY2hlbWVzIGFuZCBpdCBwcm9iYWJseSB3b24ndCBjaGFuZ2UgdmVyeSBtdWNoIGFueXdheS5cblxuICAgICAgICAgICAgICAgICAgICAgKDIpICEhISBvbmx5IGV2ZXIgc2F5IFwid2l0aCBiaW5faW9cIiBvbiBidWlsdC1pbiBvY2FtbCB0eXBlcyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gdHlwZXMgYXJlIGludCwgbGlzdCwgc3RyaW5nLCBldGMuXG5cbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgYWdhaW5zdCBjaGFuZ2VzIHRvIENvcmUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcywgZm9yIGV4YW1wbGUuXG5cbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICBsZXQgbmFtZSA9IFwiX19WZXJzaW9uZWRfcnBjLk1lbnVcIlxuXG4gICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICB0eXBlIHJlc3BvbnNlID0gRGVzY3JpcHRpb24udCBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICBsZXQgcnBjX25hbWUgPSBNb2RlbC5uYW1lXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGxldCB2ZXJzaW9uID0gMVxuXG4gICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICB0eXBlIHJlc3BvbnNlID0gKHN0cmluZyAqIGludCkgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSBxID0gcVxuXG4gICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPVxuICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgbGV0IGFkZCBpbXBscyA9XG4gICAgbGV0IG1lbnUgPSBMaXN0Lm1hcCBpbXBscyB+ZjpJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpblxuICAgIGxldCBtZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBtZW51KSBpblxuICAgIGltcGxzIEAgbWVudV9pbXBsc1xuICA7O1xuXG4gIHR5cGUgdCA9IEludC5TZXQudCBTdHJpbmcuVGFibGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzdXBwb3J0ZWRfcnBjcyB0ID1cbiAgICBsZXQgb3BlbiBMaXN0LkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBuYW1lLCB2ZXJzaW9ucyA9IFN0cmluZy5UYWJsZS50b19hbGlzdCB0IGluXG4gICAgbGV0JW1hcCB2ZXJzaW9uID0gSW50LlNldC50b19saXN0IHZlcnNpb25zIGluXG4gICAgeyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH1cbiAgOztcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zIHQgfnJwY19uYW1lID1cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW50LlNldC5lbXB0eSAoSGFzaHRibC5maW5kIHQgcnBjX25hbWUpXG4gIDs7XG5cbiAgbGV0IG9mX2VudHJpZXMgZW50cmllcyA9XG4gICAgSGFzaHRibC5tYXAgfmY6SW50LlNldC5vZl9saXN0IChTdHJpbmcuVGFibGUub2ZfYWxpc3RfbXVsdGkgZW50cmllcylcbiAgOztcblxuICBsZXQgcmVxdWVzdCBjb25uID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKCkgaW5cbiAgICBSZXN1bHQubWFwIHJlc3VsdCB+ZjpvZl9lbnRyaWVzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBkZXNjcmlwdGlvbnMgPVxuICAgIExpc3QubWFwIGRlc2NyaXB0aW9ucyB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgfD4gb2ZfZW50cmllc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBDb25uZWN0aW9uX3dpdGhfbWVudSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgIDsgbWVudSA6IE1lbnUudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBjcmVhdGUgY29ubmVjdGlvbiA9XG4gICAgbGV0IG9wZW4gRGVmZXJyZWQuT3JfZXJyb3IuTGV0X3N5bnRheCBpblxuICAgIGxldCVtYXAgbWVudSA9IE1lbnUucmVxdWVzdCBjb25uZWN0aW9uIGluXG4gICAgeyBjb25uZWN0aW9uOyBtZW51IH1cbiAgOztcblxuICBsZXQgY3JlYXRlX2RpcmVjdGx5IGNvbm5lY3Rpb24gbWVudSA9IHsgY29ubmVjdGlvbjsgbWVudSB9XG5lbmRcblxubW9kdWxlIENhbGxlcl9jb252ZXJ0cyA9IHN0cnVjdFxuICBsZXQgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24gfnJwY19uYW1lIH5jYWxsZXJfdmVyc2lvbnMgfmNhbGxlZV92ZXJzaW9ucyB+Y2FsbGVlX21lbnUgPVxuICAgIG1hdGNoIFNldC5tYXhfZWx0IChTZXQuaW50ZXIgY2FsbGVlX3ZlcnNpb25zIGNhbGxlcl92ZXJzaW9ucykgd2l0aFxuICAgIHwgU29tZSB2ZXJzaW9uIC0+IE9rIHZlcnNpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiXG4gICAgICAgICAgICAocnBjX25hbWUgOiBzdHJpbmcpXG4gICAgICAgICAgICAoY2FsbGVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfbWVudSA6IE1lbnUudCldXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiaGlnaGVzdCB2ZXJzaW9uIG51bWJlciBpcyB0YWtlbiBpbiBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblwiID1cbiAgICBsZXQgcnBjX25hbWUgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBtZW51ID0gTWVudS5vZl9lbnRyaWVzIFsgcnBjX25hbWUsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lXG4gICAgICAgIH5jYWxsZXJfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDE7IDI7IDMgXSlcbiAgICAgICAgfmNhbGxlZV92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMiBdKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3Qge3wgKE9rIDIpIHx9XVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImVycm9yIGZyb20gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24gbG9va3MgcmVhc29uYWJsZVwiID1cbiAgICBsZXQgdGhlX3JwYyA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG5vdF90aGVfcnBjID0gXCJvdGhlci1ycGNcIiBpblxuICAgIGxldCBtZW51ID0gTWVudS5vZl9lbnRyaWVzIFsgbm90X3RoZV9ycGMsIDE7IG5vdF90aGVfcnBjLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZTp0aGVfcnBjXG4gICAgICAgIH5jYWxsZXJfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDE7IDI7IDMgXSlcbiAgICAgICAgfmNhbGxlZV92ZXJzaW9uczooTWVudS5zdXBwb3J0ZWRfdmVyc2lvbnMgbWVudSB+cnBjX25hbWU6dGhlX3JwYylcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgKEVycm9yXG4gICAgICAgKFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIiAocnBjX25hbWUgdGhlLXJwYylcbiAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyAoMSAyIDMpKSAoY2FsbGVlX3ZlcnNpb25zICgpKVxuICAgICAgICAoY2FsbGVlX21lbnUgKChvdGhlci1ycGMgKDEgMikpKSkpKXx9XVxuICA7O1xuXG4gIG1vZHVsZSBEaXNwYXRjaCA9IHN0cnVjdFxuICAgIG1vZHVsZSBNYWtlIChNIDogTW9uYWQpID0gc3RydWN0XG4gICAgICBvcGVuIE1cblxuICAgICAgbGV0IHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfmRpc3BhdGNoZXIgfnJlZ2lzdHJ5ID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChFcnJvciAodW5rbm93bl92ZXJzaW9uIChuYW1lLCB2ZXJzaW9uKSkpXG4gICAgICAgIHwgU29tZSAoZGlzcGF0Y2gsIF9ycGMpIC0+IGRpc3BhdGNoZXIgZGlzcGF0Y2ggY29ubmVjdGlvbiBxdWVyeVxuICAgICAgOztcblxuICAgICAgbGV0IHdpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgICB7IENvbm5lY3Rpb25fd2l0aF9tZW51LmNvbm5lY3Rpb247IG1lbnUgfVxuICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgICAgfmRpc3BhdGNoZXJcbiAgICAgICAgPVxuICAgICAgICBsZXQgY2FsbGVlX3ZlcnNpb25zID0gTWVudS5zdXBwb3J0ZWRfdmVyc2lvbnMgbWVudSB+cnBjX25hbWU6bmFtZSBpblxuICAgICAgICBsZXQgY2FsbGVyX3ZlcnNpb25zID0gdmVyc2lvbnMgKCkgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICAgICAgfnJwY19uYW1lOm5hbWVcbiAgICAgICAgICAgIH5jYWxsZXJfdmVyc2lvbnNcbiAgICAgICAgICAgIH5jYWxsZWVfdmVyc2lvbnNcbiAgICAgICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayB2ZXJzaW9uIC0+XG4gICAgICAgICAgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+cmVnaXN0cnkgfmRpc3BhdGNoZXJcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgQXN5bmMgPSBNYWtlIChEZWZlcnJlZClcbiAgICBtb2R1bGUgRGlyZWN0ID0gTWFrZSAoTW9uYWQuSWRlbnQpXG4gIGVuZFxuXG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IHJlc3BvbnNlIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXInIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiBNb2RlbC5xdWVyeSAtPiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gbXEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIG1xKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBScGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICBSZXN1bHQuYmluZCByZXN1bHQgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIG1xIHIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IE9rIHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgUmVnaXN0ZXInIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlIF8gciA9IG1vZGVsX29mX3Jlc3BvbnNlIHJcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IChyZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50LCBlcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IGY6KHJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGFib3J0X211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaXNwYXRjaGVyID1cbiAgICAgICAgeyBhYm9ydCA6IENvbm5lY3Rpb24udCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXRcbiAgICAgICAgOyBkaXNwYXRjaCA6XG4gICAgICAgICAgICBDb25uZWN0aW9uLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAtPiAoIE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgICAgICwgTW9kZWwuZXJyb3IgKVxuICAgICAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgICAgIERlZmVycmVkLnRcbiAgICAgICAgOyBkaXNwYXRjaF9pdGVyIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+IGY6KE1vZGVsLnJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoZGlzcGF0Y2hlciAqIEFueS50KSBJbnQuVGFibGUudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5IH5mID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2hfaXRlcjsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2hfaXRlciBjb25uIHF1ZXJ5IH5mKVxuICAgICAgOztcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2g7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoIGNvbm4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgY29ubl93aXRoX21lbnUgaWQgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIGlkXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgYWJvcnQ7IF8gfSBjb25uIGlkIC0+XG4gICAgICAgICAgICBhYm9ydCBjb25uIGlkO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKFZlcnNpb25faS5yZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIHJldHVybiAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBxIC0+IHJldHVybiAoT2sgcSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rID1cbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPiBPayAoT2sgKGNvbnZlcnRfb2sgb2spKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFBpcGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6KGZ1biAocGlwZSwgaWQpIC0+IGNvbnZlcnRfcGlwZSBwaXBlLCBpZClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2hfaXRlciBjb25uIHEgfmYgPVxuICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQgY29udmVydF9tZXNzYWdlIChtIDogXyBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCkgPVxuICAgICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICAgICB8IENsb3NlZCBfIGFzIGNsb3NlZCAtPiBjbG9zZWRcbiAgICAgICAgICAgIHwgVXBkYXRlIHUgLT4gVXBkYXRlIChjb252ZXJ0X2VsdCB1KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPVxuICAgICAgICAgICAgUGlwZV9ycGMuZGlzcGF0Y2hfaXRlciBycGMgY29ubiBxIH5mOihmdW4gbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBmIChjb252ZXJ0X21lc3NhZ2UgbWVzc2FnZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6Rm4uaWRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYWJvcnQgY29ubiBpZCA9IFBpcGVfcnBjLmFib3J0IHJwYyBjb25uIGlkXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldFxuICAgICAgICAgICAgICByZWdpc3RyeVxuICAgICAgICAgICAgICB+a2V5OnZlcnNpb25cbiAgICAgICAgICAgICAgfmRhdGE6KHsgYWJvcnQ7IGRpc3BhdGNoOyBkaXNwYXRjaF9pdGVyIH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIkNhbm5vdCB1c2UgRGlyZWN0IHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gVmVyc2lvbl9pLnZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAoIHN0YXRlICogdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIG1vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuc3RhdGVcbiAgICAgICAgdmFsIG1vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICA6ICB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBTdGF0ZV9ycGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIGV4blxuICAgICAgICAgICAgICAgfCBPayAoRXJyb3IgZSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZScgLT4gT2sgKEVycm9yIGUnKVxuICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgfCBPayAoT2sgKHN0YXRlLCBwaXBlLCBpZCkpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2Zfc3RhdGUgc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFN0YXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IE9rIChPayAoc3RhdGUsIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgcGlwZSwgaWQpKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlIHJzID1cbiAgICAgICAgICAgICAgUGlwZS5tYXAgcnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IG1zZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgbXNnXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IG1zZyA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgbXNnXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtc2dfb2ZfbW9kZWwgOiBNb2RlbC5tc2cgLT4gbXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tc2dfb2ZfbW9kZWwgcSkgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgTXNnLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICB8IE9rIHEgLT4gT25lX3dheS5kaXNwYXRjaCBycGMgY29ubiBxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQm90aF9jb252ZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBQbGFpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiBjYWxsZXJfcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9xdWVyeSAtPiBjYWxsZWVfcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBDYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gQ2FsbGVlLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCA6IENhbGxlZS5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBDYWxsZXIucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcblxuICAgICAgKCogTm90ZTogQ2FsbGVyLnZlcnNpb25zIGlzIHRoZSBzYW1lIGFzIENhbGxlZS52ZXJzaW9ucywgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICAgICAgIG9uZSB3ZSBjYWxsIGhlcmUuIFNhbWUgZm9yIFtycGNzXS4gKilcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlZV9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgY2FsbGVyX2Vycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGY6KGNhbGxlcl9yZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBjYWxsZXJfZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiAoY2FsbGVlX3Jlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IGNhbGxlZV9yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogTW9kZWwuQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5DYWxsZWUucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcblxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgPSBDYWxsZXIuYWJvcnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3N0YXRlXG4gICAgICB0eXBlIGNhbGxlcl91cGRhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9zdGF0ZSAqIGNhbGxlcl91cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfc3RhdGUgKiBjYWxsZWVfdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5TdGF0ZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuQ2FsbGVyLnN0YXRlXG4gICAgICAgIHZhbCBzdGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLkNhbGxlci5lcnJvclxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZXIudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLkNhbGxlZS5zdGF0ZVxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVlLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3N0YXRlID0gY2FsbGVyX21vZGVsX29mX3N0YXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlID0gY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLkNhbGxlci51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfbXNnXG4gICAgICB0eXBlIGNhbGxlZV9tc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBjYWxsZXJfbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBjYWxsZWVfbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5PbmVfd2F5Lk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgbXNnX29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5tc2cgLT4gbXNnXG4gICAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9tc2cgOiBtc2cgLT4gQ2FsbGVlLm1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX21zZyA9IGNhbGxlZV9tb2RlbF9vZl9tc2dcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtc2dfb2ZfbW9kZWwgPSBtc2dfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuICBtb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBIYW5kbGVyX3Jlc3VsdFxuICBtb2R1bGUgU2VuZF9yZXN1bHQgPSBTZW5kX3Jlc3VsdFxuICBtb2R1bGUgUmVhZGVyID0gUmVhZGVyXG4gIG1vZHVsZSBXcml0ZXIgPSBXcml0ZXJcbmVuZFxuXG5sZXQgcmVjIHBpcGVfcmVhZCB0IGYgPVxuICBtYXRjaCViaW5kIFBpcGUudmFsdWVzX2F2YWlsYWJsZSB0IHdpdGhcbiAgfCBgRW9mIC0+IGYgYEVvZlxuICB8IGBPayAtPlxuICAgIChtYXRjaCBQaXBlLnJlYWRfbm93JyB0IHdpdGhcbiAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gcGlwZV9yZWFkIHQgZlxuICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHJlcyAtPiBmIHJlcylcbjs7XG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBhZGRfdG9fYmlnYnVmZmVyIDogQmlnYnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19iaWdzdHJpbmcgOiB0IC0+IEJpZ3N0cmluZy50XG4gIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX2J1ZmZlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuUmVhZGVyLnRcbiAgICA7IGJ1ZmZlciA6IEJpZ2J1ZmZlci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9IHsgcGlwZTsgYnVmZmVyID0gQmlnYnVmZmVyLmNyZWF0ZSBIZWFkZXIubGVuZ3RoIH1cbmVuZFxuXG5tb2R1bGUgUGlwZV9yZWFkZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfYnVmZmVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZV9yZWFkIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG5cbiAgbGV0IHJlYWRfZm9yZXZlciAodCA6IHQpIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2ggOiAoXywgXykgRGVmZXJyZWQuUmVzdWx0LnQgPVxuICAgIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICAgICgqIERlcXVldWUgdW50aWwgZW5vdWdoIGRhdGEgKFtuZWVkXSkgaXMgYXZhaWxhYmxlIGFuZCB0cnkgcmVhZCBtZXNzYWdlcyAqKVxuICAgIGxldCByZWMgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSA9XG4gICAgICBtYXRjaCBRdWV1ZS5kZXF1ZXVlIHF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBRdWV1ZSBpcyBlbXB0eSAtIHdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZSBkYXRhICopXG4gICAgICAgIHJldHVybiAoU2Vjb25kIG5lZWQpXG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICBsZXQgYnVmZl9sZW4gPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICBsZXQgZGF0YV9sZW4gPSBEYXRhLmxlbmd0aCBkYXRhIGluXG4gICAgICAgIGlmIGJ1ZmZfbGVuID0gMCAmJiBkYXRhX2xlbiA+PSBuZWVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBXZSBoYXZlIGVub3VnaCBkYXRhIGFuZCBidWZmZXIgaXMgZW1wdHkuXG4gICAgICAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgZXZlcnkgYmluX3Byb3QgbWVzc2FnZSBpcyBzZW50IGluIGl0cyBvd25cbiAgICAgICAgICAgICB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhOihEYXRhLnRvX2JpZ3N0cmluZyBkYXRhKSB+bGVuZ3RoOmRhdGFfbGVuIHF1ZXVlXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIFNsb3cgcGF0aC4gV2UgaGF2ZSB0byBhY2N1bXVsYXRlIFtCaWdzdHJpbmcudF1zICopXG4gICAgICAgICAgRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhO1xuICAgICAgICAgIGlmIEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyID49IG5lZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoZXJlIGlzIGVub3VnaCBkYXRhIGluIHRoZSBidWZmZXIgKilcbiAgICAgICAgICAgIGxldCBkYXRhID0gQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlciBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhIH5sZW5ndGggcXVldWUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCogV2UgbmVlZCBtb3JlIGRhdGEgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlKVxuICAgICgqIFJlYWQgYXMgbWFueSBtZXNzYWdlcyBhcyBwb3NzaWJsZSBmcm9tIHRoZSBjdXJyZW50IGRhdGEgKilcbiAgICBhbmQgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZSA9XG4gICAgICBpZiBsZW5ndGggPj0gSGVhZGVyLmxlbmd0aFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBwYXlsb2FkX2xlbiA9IEhlYWRlci51bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvcyBpblxuICAgICAgICBsZXQgdG90YWxfbGVuID0gSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfbGVuIGluXG4gICAgICAgIGlmIGxlbmd0aCA+PSB0b3RhbF9sZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggb25fbWVzc2FnZSBkYXRhIH5wb3M6KHBvcyArIEhlYWRlci5sZW5ndGgpIH5sZW46cGF5bG9hZF9sZW4gd2l0aFxuICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCB4IC0+XG4gICAgICAgICAgICBsZXQgcG9zID0gcG9zICsgdG90YWxfbGVuIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIC0gdG90YWxfbGVuIGluXG4gICAgICAgICAgICAoKiBNYWtlIHN1cmUgdGhhdCBhbGwgZGF0YSB3ZSd2ZSByZWFkIChhbmQgbm90IFwiY29uc3VtZWRcIikgZnJvbSB0aGUgcGlwZVxuICAgICAgICAgICAgICAgaXMga2VwdCBpbiB0aGUgYnVmZmVyLlxuICAgICAgICAgICAgICAgVGhhdCBpcyB0aGUgcmVtYWluaW5nIGJpdHMgaW4gW2RhdGFdIGFuZCBhbGwgY29udGVudHMgaW4gW3F1ZXVlXS5cbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgICAgICAgIFF1ZXVlLml0ZXIgcXVldWUgfmY6KGZ1biBkYXRhIC0+IERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gKEZpcnN0IHgpXG4gICAgICAgICAgfCAoQ29udGludWUgfCBXYWl0IF8pIGFzIGNvbnRpbnVlX29yX3dhaXQgLT5cbiAgICAgICAgICAgIGxldCViaW5kICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggY29udGludWVfb3Jfd2FpdCB3aXRoXG4gICAgICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCBfIC0+XG4gICAgICAgICAgICAgICAgKCogSW1wb3NzaWJsZTogdGhpcyBicmFuY2ggZG9lcyBub3QgY29udGFpbiBbU3RvcCBfXSAqKVxuICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgaWYgbGVuZ3RoID4gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBQcm9jZXNzIHRoZSByZXN0IG9mIHRoZSBkYXRhLlxuICAgICAgICAgICAgICAgICBNb3JlIHRoYW4gb25lIGJpbl9wcm90IG1lc3NhZ2Ugd2FzIHNlbnQgaW5zaWRlIHRoZSB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBsZW5ndGggPSAwICopXG4gICAgICAgICAgICAgICgqIEFsbCBkYXRhIHdhcyByZWFkIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgICBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOkhlYWRlci5sZW5ndGggfnBvcyB+bGVuZ3RoOjAgfnF1ZXVlIH5kYXRhKVxuICAgICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6dG90YWxfbGVuIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGEpXG4gICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhXG4gICAgYW5kIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhID1cbiAgICAgIGlmIGxlbmd0aCA9IDBcbiAgICAgIHRoZW4gQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLnN1YiBkYXRhIH5wb3MgfmxlbjpsZW5ndGggaW5cbiAgICAgICAgQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlcjtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmcgYnVmZmVyIGRhdGEpXG4gICAgYW5kIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQgfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSA9XG4gICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWVcbiAgICBpblxuICAgIGxldCByZWMgd2FpdF9mb3JfcmVhZCB+bmVlZCA9XG4gICAgICBwaXBlX3JlYWQgdC5waXBlIChmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gcmV0dXJuIChFcnJvciBgRW9mKVxuICAgICAgICB8IGBPayBxdWV1ZSAtPiBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlKVxuICAgIGFuZCBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlIG5leHQgPVxuICAgICAgb25fZW5kX29mX2JhdGNoICgpO1xuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IEZpcnN0IHJlc3VsdCAtPiByZXR1cm4gKE9rIHJlc3VsdClcbiAgICAgIHwgU2Vjb25kIG5lZWQgLT4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGluXG4gICAgbGV0IHN0YXJ0X3Byb2Nlc3NpbmdfZXhpc3RpbmdfZGF0YSB+ZGF0YSB+bGVuZ3RoID1cbiAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCAoUXVldWUuY3JlYXRlICgpKSA+Pj0gZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZVxuICAgIGluXG4gICAgKCogV2UgZWl0aGVyIHN0YXJ0IGJ5XG4gICAgICAgLSBwcm9jZXNzaW5nIHJlbWFpbmluZyBiaXRzIGluIHRoZSBidWZmZXJcbiAgICAgICAtIG9yIHdhaXRpbmcgZm9yIG1vcmUgZGF0YSBpbiB0aGUgcGlwZSAqKVxuICAgIGxldCBuZWVkID0gSGVhZGVyLmxlbmd0aCBpblxuICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgIGlmIEludC4oIDwgKSBsZW5ndGggbmVlZFxuICAgIHRoZW4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGVsc2Ugc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5sZW5ndGggfmRhdGE6KEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRGF0YS50XG5cbiAgICBsZXQgb2ZfYmlnc3RyaW5nID0gRGF0YS5vZl9iaWdzdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX21vbml0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBpcGUgOiAnYSBQaXBlLldyaXRlci50XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9IHsgcGlwZTsgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlICgpIH1cbmVuZFxuXG4oKiBXZSBkb24ndCBwZXJmb3JtIGFueSBidWZmZXJpbmcgaGVyZS5cbiAgIEEgbWVzc2FnZSBpcyBjb25zaWRlciB0byBiZSBmbHVzaGVkIGFzIHNvb24gYXMgaXQgZW50ZXJzIHRoZSBwaXBlLiAqKVxubW9kdWxlIFBpcGVfd3JpdGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX21vbml0b3IudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBtb25pdG9yICh0IDogdCkgPSB0Lm1vbml0b3JcblxuICAoKiBCZWNhdXNlIHdlIGRvbid0IG1haW50YWluIGFueSBidWZmZXIsIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdyaXRlcyAqKVxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKF8gOiB0KSA9IDBcbiAgbGV0IHN0b3BwZWQgKHQgOiB0KSA9IFBpcGUuY2xvc2VkIHQucGlwZVxuXG4gICgqIFdlIGNvbnNpZGVyIHRoYXQgYSBtZXNzYWdlIGlzIGZsdXNoZWQgYXMgc29vbiBhcyBpdCByZWFjaGVzIHRoZSB1bmRlcmxpbmluZ1xuICAgICB0cmFuc3BvcnQuICopXG4gIGxldCBmbHVzaGVkIChfIDogdCkgPSBEZWZlcnJlZC51bml0XG4gIGxldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRcbiAgbGV0IHNlbnRfcmVzdWx0IHggOiBfIFNlbmRfcmVzdWx0LnQgPSBTZW50IHhcblxuICBsZXQgY2hlY2tfY2xvc2VkICh0IDogdCkgZiA9XG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB0LnBpcGUpIHRoZW4gZiAoKSBlbHNlIFNlbmRfcmVzdWx0LkNsb3NlZFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IHQgd3JpdGVyIHggPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgIGxldCBidWYgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB+aGVhZGVyOnRydWUgd3JpdGVyIHggaW5cbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgKERhdGEub2ZfYmlnc3RyaW5nIGJ1Zik7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHRcbiAgICAgICAgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW46cGF5bG9hZF9zaXplXG4gICAgPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgICgqIFdyaXRlIHRoZSBzaXplIGhlYWRlciBtYW51YWxseSBhbmQgY29uY2F0ZW5hdGUgdGhlIHR3byAqKVxuICAgICAgbGV0IGRhdGFfc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLmNyZWF0ZSAoZGF0YV9zaXplICsgSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfc2l6ZSkgaW5cbiAgICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvczowIChkYXRhX3NpemUgKyBwYXlsb2FkX3NpemUpO1xuICAgICAgbGV0IGRzdF9wb3MgPSB3cml0ZXIud3JpdGUgZGF0YSB+cG9zOkhlYWRlci5sZW5ndGggeCBpblxuICAgICAgQmlnc3RyaW5nLmJsaXQgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6ZGF0YSB+ZHN0X3BvcyB+bGVuOnBheWxvYWRfc2l6ZTtcbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgKERhdGEub2ZfYmlnc3RyaW5nIGRhdGEpO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBtYXRjaCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgfCBTZW50ICgpIC0+IHNlbnRfcmVzdWx0IERlZmVycmVkLnVuaXRcbiAgICB8IChDbG9zZWQgfCBNZXNzYWdlX3Rvb19iaWcgXykgYXMgciAtPiByXG4gIDs7XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IHhcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgeFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcudG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoU3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKFN0cmluZ19kYXRhKVxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJpZ3N0cmluZyA6IGJpZ3N0cmluZyB0XG5cbiAgbGV0IHN0cmluZyA9IFN0cmluZ1xuICBsZXQgYmlnc3RyaW5nID0gQmlnc3RyaW5nXG5lbmRcblxubGV0IG1ha2VfcmVhZGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpIChyZWFkZXIgOiBhIFBpcGUuUmVhZGVyLnQpID1cbiAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG47O1xuXG5sZXQgbWFrZV93cml0ZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHdyaXRlciA6IGEgUGlwZS5Xcml0ZXIudCkgPVxuICBsZXQgd3JpdGVyID0gUGlwZV9hbmRfbW9uaXRvci5jcmVhdGUgd3JpdGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG47O1xuXG5sZXQgY3JlYXRlIGtpbmQgcmVhZGVyIHdyaXRlciA9XG4gIHsgVHJhbnNwb3J0LnJlYWRlciA9IG1ha2VfcmVhZGVyIGtpbmQgcmVhZGVyOyB3cml0ZXIgPSBtYWtlX3dyaXRlciBraW5kIHdyaXRlciB9XG47O1xuXG4oKiBUZXN0aW5nICopXG5cbm1vZHVsZSB0eXBlIFRyYW5zcG9ydF9yZWFkZXIgPSBzaWdcbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuICBlbmRcblxuICBpbmNsdWRlIFRyYW5zcG9ydC5SZWFkZXIuUyB3aXRoIHR5cGUgdCA9IEZvcl90ZXN0aW5nLnQgUGlwZV9hbmRfYnVmZmVyLnRcbmVuZFxuXG5tb2R1bGUgVGVzdF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuXG4gIGxldCBvbl9tZXNzYWdlID8obWVzc2FnZSA9IGRlZmF1bHRfbWVzc2FnZSkgb25fbWVzc2FnZV9jb3VudCBidWZmZXIgfnBvcyB+bGVuID1cbiAgICBvbl9tZXNzYWdlX2NvdW50IDo9ICFvbl9tZXNzYWdlX2NvdW50ICsgMTtcbiAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDptZXNzYWdlO1xuICAgIEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgKCkgPSBpbmNyIG9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuIHZlcmlmeSA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZV9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaF9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIG9uX21lc3NhZ2VfY291bnQgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpO1xuICAgIHdhaXQgKCk7XG4gICAgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnQgbWVzc2FnZV9jb3VudCBiYXRjaF9jb3VudCA9XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fbWVzc2FnZV9jb3VudCB+ZXhwZWN0Om1lc3NhZ2VfY291bnQ7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fZW5kX29mX2JhdGNoX2NvdW50IH5leHBlY3Q6YmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKSBpblxuICAgIGxldCBtZXNzYWdlX3JhdyA9IGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3YWl0ICgpO1xuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3JhdyBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgd3JpdGUgcGFydDE7XG4gICAgd2FpdCAoKTtcbiAgICB3cml0ZSBwYXJ0MlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICB3cml0ZSB0d29fbXNnXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21zZyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tc2cgfnBvczppIH5sZW46MSk7XG4gICAgICB3YWl0ICgpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmsgKHZlcmlmeSAxIDEpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDIgMSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rICh2ZXJpZnkgMSAzKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rICh2ZXJpZnkgMiAxKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgKHZlcmlmeSAyIDM0KVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSA3IDQwKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJjYW4gY2FsbCByZWFkX2ZvcmV2ZXIgbXVsdGlwbGUgdGltZXNcIiA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKCkgaW5cbiAgICBsZXQgd3JpdGUgeCA9IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSBpblxuICAgIGxldCBudW0gPSByZWYgMCBpblxuICAgIGxldCBzdG9wX2FmdGVyX29uX21lc3NhZ2UgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgICBpbmNyIG51bTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0OmRlZmF1bHRfbWVzc2FnZTtcbiAgICAgIEhhbmRsZXJfcmVzdWx0LlN0b3AgKClcbiAgICBpblxuICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgUGlwZS5jbG9zZSB3cml0ZXI7XG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgbGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIERlZmVycmVkLnVuaXQpO1xuICAgIHdhaXQgKCk7XG4gICAgWyV0ZXN0X3Jlc3VsdDogSW50LnRdIH5leHBlY3Q6MiAhbnVtXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuXG5tb2R1bGUgQmVuY2hfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcbiAgbGV0IG9uZV9tZXNzYWdlID0gY3JlYXRlX21lc3NhZ2UgKClcbiAgbGV0IHR3b19tZXNzYWdlcyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbWVzc2FnZTsgb25lX21lc3NhZ2UgXVxuXG4gIGxldCBvbmVfbWVzc2FnZV9wMSwgb25lX21lc3NhZ2VfcDIgPVxuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgcGFydDEsIHBhcnQyXG4gIDs7XG5cbiAgbGV0IG9uX21lc3NhZ2UgX2J1ZmZlciB+cG9zOl8gfmxlbjpfID0gSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpXG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgZm9yIF8gPSAwIHRvIDEwMCBkb1xuICAgICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpXG4gICAgZG9uZTtcbiAgICB3YWl0ICgpXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSBvbmVfbWVzc2FnZVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIilcblxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AxO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSB0d29fbWVzc2FnZXNcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbWVzc2FnZXMgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbWVzc2FnZXMgfnBvczppIH5sZW46MSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVua1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18zX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfb25lX2J5dGVcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVua1xuXG4gIGxldCViZW5jaCBcIm11bHRpXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcbmVuZFxuXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LnRcblxuICAgIGxldCBycGNfY29ubmVjdGlvbiA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gIGVuZClcblxubW9kdWxlIFJwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFJwYy5Db25uZWN0aW9uLnRcblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgdFxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCB0XG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCB0XG4gIGVuZClcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gVmVyc2lvbmVkX3JwY1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxubW9kdWxlIFBpcGVfdHJhbnNwb3J0ID0gUGlwZV90cmFuc3BvcnRcbm1vZHVsZSBScGNfZXJyb3IgPSBScGNfZXJyb3Jcbm1vZHVsZSBScGNfcmVzdWx0ID0gUnBjX3Jlc3VsdFxuXG5tb2R1bGUgQXN5bmNfcnBjX2tlcm5lbF9zdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IFJwYy5TdGFibGVcbmVuZFxuXG5tb2R1bGUgQXN5bmNfcnBjX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuICBtb2R1bGUgUHJvdG9jb2wgPSBQcm90b2NvbFxuICBtb2R1bGUgVHJhbnNwb3J0ID0gVHJhbnNwb3J0XG5cbiAgbGV0IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQgPSBDb25uZWN0aW9uLmRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXRcbmVuZFxuIiwib3BlbiBTdHJpbmdcblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5cbigqIE5vdCB0YWlsIHJlY3Vyc2l2ZSBmb3IgXCJwZXJmb3JtYW5jZVwiLCBwbGVhc2UgY2hvb3NlIGxvdyB2YWx1ZXMgZm9yXG4gICBbbWF4XS4gVGhlIGlkZWEgaXMgdGhhdCBtYXggaXMgYWx3YXlzIHNtYWxsIGJlY2F1c2UgaXQncyBoYXJkXG4gICBjb2RlICopXG5sZXQgc3BsaXRfY2hhcl9ib3VuZGVkIHN0ciB+b24gfm1heCA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbc3RyXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIG9mZnNldCB0b2tlbnMgPVxuICAgICAgaWYgdG9rZW5zID0gbWF4IC0gMVxuICAgICAgdGhlbiBbc3ViIHN0ciBvZmZzZXQgKGxlbmd0aCBzdHIgLSBvZmZzZXQpXVxuICAgICAgZWxzZVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgaW5kZXggPSBpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgICBcIlwiOjoobG9vcCAob2Zmc2V0ICsgMSkgKHRva2VucyArIDEpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCB0b2tlbiA9IFN0cmluZy5zdWIgc3RyIG9mZnNldCAoaW5kZXggLSBvZmZzZXQpIGluXG4gICAgICAgICAgICB0b2tlbjo6KGxvb3AgKGluZGV4ICsgMSkgKHRva2VucyArIDEpKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBbc3ViIHN0ciBvZmZzZXQgKGxlbmd0aCBzdHIgLSBvZmZzZXQpXVxuICAgIGluIGxvb3AgMCAwXG5cbmxldCBzcGxpdF9jaGFyX3VuYm91bmRlZCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gc3ViIHN0ciAoaW5kZXggKyAxKSAob2Zmc2V0IC0gaW5kZXgpIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxubGV0IG9mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbmxldCBmdWxsX3NwbGl0IHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCBzZXAgPSBvZl9jaGFyIG9uIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKHNlcDo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gc3ViIHN0ciAoaW5kZXggKyAxKSAob2Zmc2V0IC0gaW5kZXgpIGluXG4gICAgICAgICAgbG9vcCAoc2VwOjp0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgICB0aGVuIChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgICAgIGVsc2UgYWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbigqIGNvcHlpbmcgY29yZSdzIGNvbnZlbnRpb24gZm9yIFN0cmluZy5zcGxpdCBidXQgd2l0aCBhbiBvcHRpb25hbCBtYXhcbiAgIGFyZ3VtZW50ICopXG5sZXQgc3BsaXQgP21heCBzIH5vbiA9XG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBzcGxpdF9jaGFyX3VuYm91bmRlZCBzIH5vblxuICB8IFNvbWUgbWF4IC0+ICAgICAgICAgICAgICAgICAoKiBhc3NlcnQgKG1heCA8IDEwMCk7ICopXG4gICAgc3BsaXRfY2hhcl9ib3VuZGVkIHMgfm9uIH5tYXhcblxubGV0IHJpbmRleF9mcm9tX29uIHMgfm9mZnNldCB+b24gPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBvbiBzLltpXSB0aGVuIGlcbiAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICBpbiBsb29wIG9mZnNldFxuXG5sZXQgdHJpbV9sZWZ0X3N1YiBzIH5wb3MgfmxlbiB+Y2hhcnMgPVxuICBsZXQgc3RhcnRfcG9zID1cbiAgICBsZXQgZmluYWwgPSBwb3MgKyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbGFzdF9jaGFyIGkgPVxuICAgICAgaWYgaSA9IGZpbmFsIHRoZW4gbGFzdF9jaGFyXG4gICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBjaGFycyBzLltpXSB0aGVuIGxvb3AgKGkgKyAxKSAoaSArIDEpXG4gICAgICBlbHNlIGxhc3RfY2hhclxuICAgIGluIGxvb3AgcG9zIHBvc1xuICBpblxuICBsZXQgbmV3X2xlbiA9IGxlbiAtIChzdGFydF9wb3MgLSBwb3MpIGluXG4gIFN0cmluZy5zdWIgcyBzdGFydF9wb3MgbmV3X2xlblxuXG5sZXQgc3BsaXRfdHJpbV9sZWZ0IHN0ciB+b24gfnRyaW0gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbV9vbiBzdHIgfm9mZnNldCB+b24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6KGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH5sZW46KG9mZnNldCAtIGluZGV4KSB+Y2hhcnM6dHJpbSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICh0cmltX2xlZnRfc3ViIHN0ciB+cG9zOjAgfmxlbjoob2Zmc2V0ICsgMSkgfmNoYXJzOnRyaW0pOjphY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuZXhjZXB0aW9uIEZvdW5kX2ludCBvZiBpbnRcblxubGV0IGZpcnN0X2NoYXJfbmUgcyBjID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBzLlswXSA8PiBjXG5cbmxldCB0cmltX2xlZnQgcyA9XG4gIGlmIGZpcnN0X2NoYXJfbmUgcyAnICcgdGhlbiBzXG4gIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaT0wIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gJyAnIHRoZW4gcmFpc2UgKEZvdW5kX2ludCBpKVxuICAgICAgZG9uZTtcbiAgICAgIFwiXCJcbiAgICB3aXRoIEZvdW5kX2ludCBub25fc3BhY2UgLT5cbiAgICAgIHN1YiBzIG5vbl9zcGFjZSAobGVuIC0gbm9uX3NwYWNlKVxuXG5sZXQgc3Vic3RyX2VxID8oc3RhcnQ9MCkgcyB+cGF0dGVybiA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gLSAxIGRvXG4gICAgICBpZiBzLltpICsgc3RhcnRdIDw+IHBhdHRlcm4uW2ldIHRoZW4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIF8gLT4gZmFsc2VcblxubGV0IGZpbmRfZnJvbSA/KHN0YXJ0PTApIHN0ciB+cGF0dGVybiA9XG4gIHRyeVxuICAgIGZvciBpID0gc3RhcnQgdG8gKFN0cmluZy5sZW5ndGggc3RyKSAtIChTdHJpbmcubGVuZ3RoIHBhdHRlcm4pIGRvXG4gICAgICBpZiBzdWJzdHJfZXEgfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHRoZW5cbiAgICAgICAgcmFpc2UgKEZvdW5kX2ludCBpKVxuICAgIGRvbmU7XG4gICAgTm9uZVxuICB3aXRoXG4gIHwgRm91bmRfaW50IGkgLT4gU29tZSBpXG4gIHwgIF8gLT4gTm9uZVxuXG5sZXQgZmluZF9taW4gbCB+ZiA9XG4gIGxldCByZWMgbG9vcCB4IGZ4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFNvbWUgKHgsIGZ4KVxuICAgIHwgeCc6OnhzIC0+XG4gICAgICBsZXQgZngnID0gZiB4JyBpblxuICAgICAgaWYgZngnIDwgZnggdGhlbiBsb29wIHgnIGZ4JyB4c1xuICAgICAgZWxzZSBsb29wIHggZnggeHNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHg6OnhzIC0+IGxvb3AgeCAoZiB4KSB4c1xuXG5sZXQgcmVwbGFjZV9hbGwgc3RyIH5wYXR0ZXJuIH53aXRoXyA9XG4gIGxldCAoc2xlbiwgcGxlbikgPSBTdHJpbmcuKGxlbmd0aCBzdHIsIGxlbmd0aCBwYXR0ZXJuKSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBzbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoc2xlbiAtIGkpO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIHwgU29tZSBqIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKGogLSBpKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgIGxvb3AgKGogKyBwbGVuKVxuICBpbiBsb29wIDBcblxuZXhjZXB0aW9uIEZvdW5kX3JlcGxhY2Ugb2YgaW50ICogc3RyaW5nICogc3RyaW5nXG5cbmxldCByZXBsYWNlX2FsbF9hc3NvYyBzdHIgdGJsID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBzbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IHNsZW4gdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgZWxzZVxuICAgICAgbGV0IHIgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgZSA9XG4gICAgICAgICAgICBmaW5kX21pbiB0YmwgfmY6KGZ1biAocGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgICAtPiBtYXhfaW50XG4gICAgICAgICAgICAgIHwgU29tZSBqIHdoZW4gaiA9IGkgLT4gcmFpc2UgKEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSlcbiAgICAgICAgICAgICAgfCBTb21lIGogLT4gZm91bmQgOj0gdHJ1ZTsgailcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lICgocGF0dGVybiwgd2l0aF8pLCBqKSB3aGVuICFmb3VuZCAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIHdpdGggRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoc2xlbiAtIGkpO1xuICAgICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgICB8IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKGogLSBpKTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgICBsb29wIChqICsgU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKVxuICBpbiBsb29wIDBcblxubGV0IGl0ZXJpIGYgbCA9XG4gIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCB4Ojp4cyAtPiAoZiBpIHgpOyBsb29wIChzdWNjIGkpIHhzXG4gIGluIGxvb3AgMCBsXG5cbmxldCBvZl9saXN0IHhzID1cbiAgbGV0IGwgPSBMaXN0Lmxlbmd0aCB4cyBpblxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGl0ZXJpIChmdW4gaSBjIC0+IEJ5dGVzLnNldCBzIGkgYykgeHM7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpID0gLTEgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBsb29wIChzLltpXSA6OiBhY2MpIChwcmVkIGkpXG4gIGluIGxvb3AgW10gKFN0cmluZy5sZW5ndGggcyAtIDEpXG5cbmxldCBvZl9hcnJheSBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgYnl0ZXMgaSBhLihpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ5dGVzXG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAoU3RyaW5nLmxlbmd0aCBzKSAoU3RyaW5nLmdldCBzKVxuXG4oKiByaXBwZWQgb2ZmIGZyb20gb25lIG9mIGRidWVuemxpJ3MgbGlicyAqKVxubGV0IGN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgMCBpblxuICAgICAgKCogV2UgcnVuIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byBlbmQgd2l0aCBbaV0gdHJ5aW5nIHRvIG1hdGNoIHRoZVxuICAgICAgICAgZmlyc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlIHZlcmlmeSB0aGF0XG4gICAgICAgICB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXS4gSWYgaXQgZG9lc24ndCBtYXRjaCB3ZVxuICAgICAgICAgY29udGludWUgdG8gbG9vayBmb3IgW29uXSB3aXRoIFtpXS4gSWYgaXQgbWF0Y2hlcyB3ZSBleGl0IHRoZVxuICAgICAgICAgbG9vcCBhbmQgZXh0cmFjdCBhIHN1YnN0cmluZyBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gdGhlXG4gICAgICAgICBwb3NpdGlvbiBiZWZvcmUgdGhlIFtvbl0gd2UgZm91bmQgYW5kIGFub3RoZXIgZnJvbSB0aGUgcG9zaXRpb25cbiAgICAgICAgIGFmdGVyIHRoZSBbb25dIHdlIGZvdW5kIHRvIGVuZCBvZiBzdHJpbmcuIElmIFtpXSBpcyBzdWNoIHRoYXQgbm9cbiAgICAgICAgIHNlcGFyYXRvciBjYW4gYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaFxuICAgICAgICAgY2FzZS4gKilcbiAgICAgIHRyeVxuICAgICAgICB3aGlsZSAoIWkgKyBzZXBfbWF4IDw9IHNfbWF4KSBkb1xuICAgICAgICAgICgqIENoZWNrIHJlbWFpbmluZyBbb25dIGNoYXJzIG1hdGNoLCBhY2Nlc3MgdG8gdW5zYWZlIHMgKCFpICsgIWspIGlzXG4gICAgICAgICAgICAgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICBpZiB1bnNhZmVfZ2V0IHMgIWkgPD4gdW5zYWZlX2dldCBvbiAwIHRoZW4gaW5jciBpIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGsgOj0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA8PSBzZXBfbWF4ICYmIHVuc2FmZV9nZXQgcyAoIWkgKyAhaykgPSB1bnNhZmVfZ2V0IG9uICFrKVxuICAgICAgICAgICAgZG8gaW5jciBrIGRvbmU7XG4gICAgICAgICAgICBpZiAhayA8PSBzZXBfbWF4IHRoZW4gKCogbm8gbWF0Y2ggKikgaW5jciBpIGVsc2UgcmFpc2UgRXhpdFxuICAgICAgICAgIGVuZFxuICAgICAgICBkb25lO1xuICAgICAgICBOb25lICgqIG5vIG1hdGNoIGluIHRoZSB3aG9sZSBzdHJpbmcuICopXG4gICAgICB3aXRoXG4gICAgICB8IEV4aXQgLT4gKCogaSBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXBhcmF0b3IgKilcbiAgICAgICAgbGV0IGxlZnRfZW5kID0gIWkgLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgc2VwX21heCArIDEgaW5cbiAgICAgICAgU29tZSAoc3ViIHMgMCAobGVmdF9lbmQgKyAxKSxcbiAgICAgICAgICAgICAgc3ViIHMgcmlnaHRfc3RhcnQgKHNfbWF4IC0gcmlnaHRfc3RhcnQgKyAxKSlcblxubGV0IHJjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5yY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiBzX21heCBpblxuICAgICAgKCogV2UgcnVuIGZyb20gdGhlIGVuZCBvZiBbc10gdG8gdGhlIGJlZ2lubmluZyB3aXRoIFtpXSB0cnlpbmcgdG9cbiAgICAgICAgIG1hdGNoIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZVxuICAgICAgICAgdmVyaWZ5IHRoYXQgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10gKHdlIGRvIHRoYXRcbiAgICAgICAgIGJhY2t3YXJkcykuICBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl1cbiAgICAgICAgIHdpdGggW2ldLiAgSWYgaXQgbWF0Y2hlcyB3ZSBleGl0IHRoZSBsb29wIGFuZCBleHRyYWN0IGFcbiAgICAgICAgIHN1YnN0cmluZyBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGVcbiAgICAgICAgIFtvbl0gd2UgZm91bmQgYW5kIGFub3RoZXIgZnJvbSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIFtvbl0gd2VcbiAgICAgICAgIGZvdW5kIHRvIGVuZCBvZiBzdHJpbmcuICBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vIHNlcGFyYXRvciBjYW5cbiAgICAgICAgIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2ggY2FzZS4gKilcbiAgICAgIHRyeVxuICAgICAgICB3aGlsZSAoIWkgPj0gc2VwX21heCkgZG9cbiAgICAgICAgICBpZiB1bnNhZmVfZ2V0IHMgIWkgPD4gdW5zYWZlX2dldCBvbiBzZXBfbWF4IHRoZW4gZGVjciBpIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICgqIENoZWNrIHJlbWFpbmluZyBbb25dIGNoYXJzIG1hdGNoLCBhY2Nlc3MgdG8gdW5zYWZlX2dldFxuICAgICAgICAgICAgICAgcyAoc2VwX3N0YXJ0ICsgIWspIGlzIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgICBsZXQgc2VwX3N0YXJ0ID0gIWkgLSBzZXBfbWF4IGluXG4gICAgICAgICAgICBrIDo9IHNlcF9tYXggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrID49IDAgJiYgdW5zYWZlX2dldCBzIChzZXBfc3RhcnQgKyAhaykgPSB1bnNhZmVfZ2V0IG9uICFrKVxuICAgICAgICAgICAgZG8gZGVjciBrIGRvbmU7XG4gICAgICAgICAgICBpZiAhayA+PSAwIHRoZW4gKCogbm8gbWF0Y2ggKikgZGVjciBpIGVsc2UgcmFpc2UgRXhpdFxuICAgICAgICAgIGVuZFxuICAgICAgICBkb25lO1xuICAgICAgICBOb25lICgqIG5vIG1hdGNoIGluIHRoZSB3aG9sZSBzdHJpbmcuICopXG4gICAgICB3aXRoXG4gICAgICB8IEV4aXQgLT4gKCogaSBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzZXBhcmF0b3IgKilcbiAgICAgICAgbGV0IGxlZnRfZW5kID0gIWkgLSBzZXBfbWF4IC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIDEgaW5cbiAgICAgICAgU29tZSAoc3ViIHMgMCAobGVmdF9lbmQgKyAxKSxcbiAgICAgICAgICAgICAgc3ViIHMgcmlnaHRfc3RhcnQgKHNfbWF4IC0gcmlnaHRfc3RhcnQgKyAxKSlcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGxldCBwcmVmaXhfbCA9IFN0cmluZy5sZW5ndGggcHJlZml4IGluXG4gIGxldCBzdHJpbmdfbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBwcmVmaXhfbCA+IHN0cmluZ19sIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgdHJ5XG4gICAgICBmb3IgaSA9IDAgdG8gcHJlZml4X2wgLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+IHByZWZpeC5baV0gdGhlbiByYWlzZSBFeGl0O1xuICAgICAgZG9uZTtcbiAgICAgIFNvbWUgKFN0cmluZy5zdWIgcyBwcmVmaXhfbCAoc3RyaW5nX2wgLSBwcmVmaXhfbCkpXG4gICAgd2l0aCBfIC0+IE5vbmVcblxubGV0IGRyb3AgcyBuID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbiA+PSBsXG4gIHRoZW4gXCJcIlxuICBlbHNlIFN0cmluZy5zdWIgcyBuIChsIC0gbilcblxubGV0IHRha2UgcyBuID1cbiAgaWYgbiA+PSBTdHJpbmcubGVuZ3RoIHNcbiAgdGhlbiBzXG4gIGVsc2UgU3RyaW5nLnN1YiBzIDAgblxuIiwidHlwZSBiaWdzdHJpbmcgPVxuICAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG50eXBlIHQgPSBiaWdzdHJpbmdcblxubGV0IGNyZWF0ZSBzaXplID0gQmlnYXJyYXkuKEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBzaXplKVxubGV0IGVtcHR5ICAgICAgID0gY3JlYXRlIDBcblxubW9kdWxlIEJBMSA9IEJpZ2FycmF5LkFycmF5MVxuXG5sZXQgbGVuZ3RoIHQgPSBCQTEuZGltIHRcblxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBjaGFyICAgICAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCAgICAgICAgICAgIDogdCAgICAgICAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF90b19ieXRlcyAgIDogdCAgICAgICAtPiBzcmNfb2ZmOmludCAtPiBCeXRlcy50IC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1wiICAgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mcm9tX2J5dGVzIDogQnl0ZXMudCAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXCIgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXCIgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wIDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfc3RyaW5nIDogdCAtPiBpbnQgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNociA6IHQgLT4gaW50IC0+IGNoYXIgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY2hyXCIgW0BAbm9hbGxvY11cblxubGV0IHN1YiB0IH5vZmYgfmxlbiA9XG4gIEJBMS5zdWIgdCBvZmYgbGVuXG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kcyBvcCBidWZmZXJfbGVuIG9mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZmZlcl9sZW46ICVkLCBvZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX2JsaXQgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IHNyY19sZW46ICVkLCBzcmNfb2ZmOiAlZCwgZHN0X2xlbjogJWQsIGRzdF9vZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfbWVtY21wIG9wIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmMV9sZW46ICVkLCBidWYxX29mZjogJWQsIGJ1ZjJfbGVuOiAlZCwgYnVmMl9vZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxuKCogQSBub3RlIG9uIGJvdW5kcyBjaGVja2luZy5cbiAqXG4gKiBUaGUgY29kZSBzaG91bGQgcGVyZm9ybSB0aGUgZm9sbG93aW5nIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBibGl0IGRvZXNuJ3RcbiAqIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyOlxuICpcbiAqICAge1tvZmYgKyBsZW4gPD0gYnVmZmVyX2xlbl19XG4gKlxuICogSG93ZXZlciwgdGhpcyBtYXkgbGVhZCB0byBhbiBpbnRlZ2VyIG92ZXJmbG93IGZvciBsYXJnZSB2YWx1ZXMgb2YgW29mZl0sXG4gKiBlLmcuLCBbbWF4X2ludF0sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGNvbXBhcmlzb24gdG8gcmV0dXJuIFt0cnVlXSB3aGVuIGl0XG4gKiBzaG91bGQgcmVhbGx5IHJldHVybiBbZmFsc2VdLlxuICpcbiAqIEFuIGVxdWl2YWxlbnQgY29tcGFyaXNvbiB0aGF0IGRvZXMgbm90IHJ1biBpbnRvIHRoaXMgaW50ZWdlciBvdmVyZmxvd1xuICogcHJvYmxlbSBpczpcbiAqXG4gKiAgIHtbYnVmZmVyX2xlbiAtIG9mZiA9PiBsZW5dfVxuICpcbiAqIFRoaXMgaXMgY2hlY2tpbmcgdGhhdCB0aGUgaW5wdXQgYnVmZmVyLCBsZXNzIHRoZSBvZmZzZXQsIGlzIHN1ZmZpY2llbnRseVxuICogbG9uZyB0byBwZXJmb3JtIHRoZSBibGl0LiBTaW5jZSB0aGUgZXhwcmVzc2lvbiBpcyBzdWJ0cmFjdGluZyBbb2ZmXSByYXRoZXJcbiAqIHRoYW4gYWRkaW5nIGl0LCBpdCBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoZSBvdmVyZmxvdyB0aGF0IHRoZSBwcmV2aW91c1xuICogaW5lcXVhbGl0eSBkaWQuIEFzIGxvbmcgYXMgdGhlcmUgaXMgYSBjaGVjayB0byBlbnN1cmUgdGhhdCBbb2ZmXSBpcyBub3RcbiAqIG5lZ2F0aXZlLCBpdCB3b24ndCB1bmRlcmZsb3cgZWl0aGVyLiAqKVxuXG5sZXQgY29weSB0IH5vZmYgfmxlbiA9XG4gIGxldCBidWZmZXJfbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcImNvcHlcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBkc3QgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHQgfnNyY19vZmY6b2ZmIGRzdCB+ZHN0X29mZjowIH5sZW47XG4gIGRzdFxuOztcblxubGV0IHN1YnN0cmluZyB0IH5vZmYgfmxlbiA9XG4gIGxldCBidWZmZXJfbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcInN1YnN0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJcbjs7XG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjowIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJcbjs7XG5cbmxldCBvZl9zdHJpbmcgfm9mZiB+bGVuIHMgPVxuICBsZXQgYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwib2Zfc3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgcyB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIGJcbjs7XG5cbmxldCBibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gQnl0ZXMubGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IG1lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gbGVuZ3RoIGJ1ZjIgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBTdHJpbmcubGVuZ3RoIGJ1ZjIgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW4gPVxuICBsZXQgYnVmX2xlbiA9IGxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgaWYgYnVmX29mZiA8IDAgfHwgYnVmX2xlbiAtIGJ1Zl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlblxuXG4oKiBTYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjRcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NFwiXG5cbm1vZHVsZSBTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgKGJzd2FwX2ludDMyIGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IGJzIG9mZiA9XG4gICAgYnN3YXAxNiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmKVxuXG4gIGxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZCB4IG9mZiA9XG4gICAgKChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuZW5kXG5cbmxldCBzZXRfaW50MTZfbGUsIHNldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8xNiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNlxuXG5sZXQgc2V0X2ludDMyX2xlLCBzZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyLCBjYW1sX2JpZ3N0cmluZ19zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzJcblxubGV0IHNldF9pbnQ2NF9sZSwgc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NCwgY2FtbF9iaWdzdHJpbmdfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzY0ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0XG5cbmxldCBnZXRfaW50MTZfbGUsIGdldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTYsIGNhbWxfYmlnc3RyaW5nX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNlxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIHggb2ZmID1cbiAgKChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkICAsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcFxuICBlbHNlIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCwgU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZFxuXG5sZXQgZ2V0X2ludDMyX2xlLCBnZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyLCBjYW1sX2JpZ3N0cmluZ19nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzJcblxubGV0IGdldF9pbnQ2NF9sZSwgZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NCwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0XG5cbigqIFVuc2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuXG5tb2R1bGUgVVN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiBicyBvZmYgKGJzd2FwX2ludDMyIGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZiA9XG4gICAgYnN3YXAxNiAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYpXG5lbmRcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfbGUsIHVuc2FmZV9zZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlLCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyLCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSwgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUsIHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfbGUgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2JlIHggb2ZmICkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlLCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyLCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSwgdW5zYWZlX2dldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiIsInR5cGUgJ2Egc3RhdGUgPVxuICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICB8IERvbmUgICAgb2YgaW50ICogJ2FcbiAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbmFuZCAnYSBwYXJ0aWFsID1cbiAgeyBjb21taXR0ZWQgOiBpbnRcbiAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2Egc3RhdGUgfVxuXG5cbmxldCBzdGF0ZV90b19vcHRpb24geCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgLT4gU29tZSB2XG4gIHwgRmFpbCBfICAgICAtPiBOb25lXG4gIHwgUGFydGlhbCBfICAtPiBOb25lXG5cbmxldCBmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIgPVxuICBTdHJpbmcuY29uY2F0IFwiID4gXCIgbWFya3MgXiBcIjogXCIgXiBlcnJcblxubGV0IHN0YXRlX3RvX3Jlc3VsdCB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAgICAgICAgICAtPiBPayB2XG4gIHwgUGFydGlhbCBfICAgICAgICAgICAtPiBFcnJvciBcImluY29tcGxldGUgaW5wdXRcIlxuICB8IEZhaWwoXywgbWFya3MsIGVycikgLT4gRXJyb3IgKGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVycilcbiIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgOiBpbnRcbiAgOyBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgICAgICAgOiBpbnRcbiAgOyBvZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRcbiAgOyBsZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRcbiAgOyBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgOiBCaWdzdHJpbmdhZi50XG4gIH1cblxubGV0IGNyZWF0ZSBidWZmZXIgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXMgPVxuICB7IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBjbGllbnRfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgb2ZmXG4gIDsgbGVuXG4gIDsgYnVmZmVyIH1cblxubGV0IGxlbmd0aCAgICAgICAgICAgICAgICAgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyArIHQubGVuXG5sZXQgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0ICB0ID0gY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHRcblxubGV0IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gdC5sZW4gLSBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCB0XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAocGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0ICsgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSBsZW5ndGggdCk7XG4gIGFzc2VydCAocGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0IC0gY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgIHQgPSBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCB0KTtcbjs7XG5cbmxldCBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zID1cbiAgdC5vZmYgKyBwb3MgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGFwcGx5IHQgcG9zIGxlbiB+ZiA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGYgdC5idWZmZXIgfm9mZiB+bGVuXG5cbmxldCB1bnNhZmVfZ2V0X2NoYXIgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgY291bnRfd2hpbGUgdCBwb3MgfmYgPVxuICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgbGV0IG9mZiAgICA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgbGV0IGkgICAgICA9IHJlZiBvZmYgaW5cbiAgbGV0IGxpbWl0ICA9IHQub2ZmICsgdC5sZW4gaW5cbiAgd2hpbGUgIWkgPCBsaW1pdCAmJiBmIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IGJ1ZmZlciAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgIWkgLSBvZmZcbjs7XG5cbmxldCBjb21taXQgdCBwb3MgPVxuICB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPC0gcG9zXG47O1xuIiwibW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgICB8IExhenkgICAgb2YgJ2EgdCBMYXp5LnRcbiAgICB8IERvbmUgICAgb2YgaW50ICogJ2FcbiAgICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBhbmQgJ2EgcGFydGlhbCA9XG4gICAgeyBjb21taXR0ZWQgOiBpbnRcbiAgICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSB0IH1cblxuZW5kXG50eXBlICdhIHdpdGhfc3RhdGUgPSBJbnB1dC50IC0+ICBpbnQgLT4gTW9yZS50IC0+ICdhXG5cbnR5cGUgJ2EgZmFpbHVyZSA9IChzdHJpbmcgbGlzdCAtPiBzdHJpbmcgLT4gJ2EgU3RhdGUudCkgd2l0aF9zdGF0ZVxudHlwZSAoJ2EsICdyKSBzdWNjZXNzID0gKCdhIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGVcblxudHlwZSAnYSB0ID1cbiAgeyBydW4gOiAnci4gKCdyIGZhaWx1cmUgLT4gKCdhLCAncikgc3VjY2VzcyAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlIH1cblxubGV0IGZhaWxfayAgICBpbnB1dCBwb3MgXyBtYXJrcyBtc2cgPVxuICBTdGF0ZS5GYWlsKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIG1hcmtzLCBtc2cpXG5sZXQgc3VjY2VlZF9rIGlucHV0IHBvcyBfICAgICAgIHYgICA9XG4gIFN0YXRlLkRvbmUocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgdilcblxubGV0IHJlYyB0b19leHBvcnRlZF9zdGF0ZSA9IGZ1bmN0aW9uXG4gIHwgU3RhdGUuUGFydGlhbCB7Y29tbWl0dGVkO2NvbnRpbnVlfSAtPlxuICAgICBFeHBvcnRlZF9zdGF0ZS5QYXJ0aWFsXG4gICAgICAgeyBjb21taXR0ZWRcbiAgICAgICA7IGNvbnRpbnVlID1cbiAgICAgICAgICAgZnVuIGJzIH5vZmYgfmxlbiBtb3JlIC0+XG4gICAgICAgICAgIHRvX2V4cG9ydGVkX3N0YXRlIChjb250aW51ZSBicyB+b2ZmIH5sZW4gbW9yZSl9XG4gIHwgU3RhdGUuRG9uZSAoaSx4KSAtPiBFeHBvcnRlZF9zdGF0ZS5Eb25lIChpLHgpXG4gIHwgU3RhdGUuRmFpbCAoaSwgc2wsIHMpIC0+IEV4cG9ydGVkX3N0YXRlLkZhaWwgKGksIHNsLCBzKVxuICB8IFN0YXRlLkxhenkgeCAtPiB0b19leHBvcnRlZF9zdGF0ZSAoTGF6eS5mb3JjZSB4KVxuXG5sZXQgcGFyc2UgcCA9XG4gIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBCaWdzdHJpbmdhZi5lbXB0eSB+Y29tbWl0dGVkX2J5dGVzOjAgfm9mZjowIH5sZW46MCBpblxuICB0b19leHBvcnRlZF9zdGF0ZSAocC5ydW4gaW5wdXQgMCBJbmNvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgcCBpbnB1dCA9XG4gIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBpbnB1dCB+Y29tbWl0dGVkX2J5dGVzOjAgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBpbnB1dCkgaW5cbiAgRXhwb3J0ZWRfc3RhdGUuc3RhdGVfdG9fcmVzdWx0ICh0b19leHBvcnRlZF9zdGF0ZSAocC5ydW4gaW5wdXQgMCBDb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKSlcblxubW9kdWxlIE1vbmFkID0gc3RydWN0XG4gIGxldCByZXR1cm4gdiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSB2XG4gICAgfVxuXG4gIGxldCBmYWlsIG1zZyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBfc3VjYyAtPlxuICAgICAgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBtc2dcbiAgICB9XG5cbiAgbGV0ICg+Pj0pIHAgZiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgdiA9IChmIHYpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg+PnwpIHAgZiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKGYgdikgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8JD4pIGYgbSA9XG4gICAgbSA+PnwgZlxuXG4gIGxldCAoPCo+KSBmIG0gPVxuICAgICgqIGYgPj49IGZ1biBmIC0+IG0gPj58IGYgKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMCBpbnB1dDAgcG9zMCBtb3JlMCBmID1cbiAgICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0gPSBzdWNjIGlucHV0MSBwb3MxIG1vcmUxIChmIG0pIGluXG4gICAgICAgIG0ucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBmLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cblxuICBsZXQgbGlmdCBmIG0gPVxuICAgIGYgPCQ+IG1cblxuICBsZXQgbGlmdDIgZiBtMSBtMiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPSBzdWNjIGlucHV0MiBwb3MyIG1vcmUyIChmIG0xIG0yKSBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBzdWNjIGlucHV0MyBwb3MzIG1vcmUzIChmIG0xIG0yIG0zKSBpblxuICAgICAgICAgIG0zLnJ1biBpbnB1dDIgcG9zMiBtb3JlMiBmYWlsIHN1Y2MzIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIGxldCBzdWNjNCBpbnB1dDQgcG9zNCBtb3JlNCBtNCA9XG4gICAgICAgICAgICAgIHN1Y2MgaW5wdXQ0IHBvczQgbW9yZTQgKGYgbTEgbTIgbTMgbTQpIGluXG4gICAgICAgICAgICBtNC5ydW4gaW5wdXQzIHBvczMgbW9yZTMgZmFpbCBzdWNjNCBpblxuICAgICAgICAgIG0zLnJ1biBpbnB1dDIgcG9zMiBtb3JlMiBmYWlsIHN1Y2MzIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCAoICo+KSBhIGIgPVxuICAgICgqIGEgPj49IGZ1biBfIC0+IGIgKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID0gYi5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCogKSBhIGIgPVxuICAgICgqIGEgPj49IGZ1biB4IC0+IGIgPj58IGZ1biBfIC0+IHggKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMCBpbnB1dDAgcG9zMCBtb3JlMCB4ID1cbiAgICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIF8gPSBzdWNjIGlucHV0MSBwb3MxIG1vcmUxIHggaW5cbiAgICAgICAgYi5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuZW5kXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgbGV0ICg8Pz4pIHAgbWFyayA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyAobWFyazo6bWFya3MpIG1zZyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cblxuICBsZXQgKDx8PikgcCBxID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICAoKiBUaGUgb25seSB0d28gY29uc3RydWN0b3JzIHRoYXQgaW50cm9kdWNlIG5ldyBmYWlsdXJlIGNvbnRpbnVhdGlvbnMgYXJlXG4gICAgICAgICAqIFs8Pz5dIGFuZCBbPHw+XS4gSWYgdGhlIGluaXRpYWwgaW5wdXQgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGhcbiAgICAgICAgICogb2YgdGhlIGNvbW1pdHRlZCBpbnB1dCwgdGhlbiBjYWxsaW5nIHRoZSBmYWlsdXJlIGNvbnRpbnVhdGlvbiB3aWxsXG4gICAgICAgICAqIGhhdmUgdGhlIGVmZmVjdCBvZiB1bndpbmRpbmcgYWxsIGNob2ljZXMgYW5kIGNvbGxlY3RpbmcgbWFya3MgYWxvbmdcbiAgICAgICAgICogdGhlIHdheS4gKilcbiAgICAgICAgaWYgcG9zIDwgSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCcgdGhlblxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZSBtYXJrcyBtc2dcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHEucnVuIGlucHV0JyBwb3MgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNb25hZF91c2VfZm9yX2RlYnVnZ2luZyA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gTW9uYWQucmV0dXJuXG4gIGxldCBmYWlsICAgPSBNb25hZC5mYWlsXG4gIGxldCAoPj49KSAgPSBNb25hZC4oPj49KVxuXG4gIGxldCAoPj58KSBtIGYgPSBtID4+PSBmdW4geCAtPiByZXR1cm4gKGYgeClcblxuICBsZXQgKDwkPikgZiBtID0gbSA+PnwgZlxuICBsZXQgKDwqPikgZiBtID0gZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZlxuXG4gIGxldCBsaWZ0ICA9ICg+PnwpXG4gIGxldCBsaWZ0MiBmIG0xIG0yICAgICAgID0gZiA8JD4gbTEgPCo+IG0yXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zICAgID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtM1xuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTMgPCo+IG00XG5cbiAgbGV0ICggKj4pIGEgYiA9IGEgPj49IGZ1biBfIC0+IGJcbiAgbGV0ICg8KiApIGEgYiA9IGEgPj49IGZ1biB4IC0+IGIgPj58IGZ1biBfIC0+IHhcbmVuZFxuIiwidHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBtdXRhYmxlIG9mZiA6IGludFxuICA7IG11dGFibGUgbGVuIDogaW50IH1cblxubGV0IG9mX2JpZ3N0cmluZyB+b2ZmIH5sZW4gYnVmID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoQmlnc3RyaW5nYWYubGVuZ3RoIGJ1ZiA+PSBsZW4gLSBvZmYpO1xuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG5sZXQgY3JlYXRlIGxlbiA9XG4gIG9mX2JpZ3N0cmluZyB+b2ZmOjAgfmxlbjowIChCaWdzdHJpbmdhZi5jcmVhdGUgbGVuKVxuXG5sZXQgd3JpdGFibGVfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtIHQubGVuXG5cbmxldCB0cmFpbGluZ19zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gKHQub2ZmICsgdC5sZW4pXG5cbmxldCBjb21wcmVzcyB0ID1cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgdC5idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBncm93IHQgdG9fY29weSA9XG4gIGxldCBvbGRfbGVuID0gQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgbGV0IHNwYWNlID0gd3JpdGFibGVfc3BhY2UgdCBpblxuICB3aGlsZSBzcGFjZSArICFuZXdfbGVuIC0gb2xkX2xlbiA8IHRvX2NvcHkgZG9cbiAgICBuZXdfbGVuIDo9ICgzICogIW5ld19sZW4pIC8gMlxuICBkb25lO1xuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZ2FmLmNyZWF0ZSAhbmV3X2xlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiBuZXdfYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5idWYgPC0gbmV3X2J1ZjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZW5zdXJlIHQgdG9fY29weSA9XG4gIGlmIHRyYWlsaW5nX3NwYWNlIHQgPCB0b19jb3B5IHRoZW5cbiAgICBpZiB3cml0YWJsZV9zcGFjZSB0ID49IHRvX2NvcHlcbiAgICB0aGVuIGNvbXByZXNzIHRcbiAgICBlbHNlIGdyb3cgdCB0b19jb3B5XG5cbmxldCB3cml0ZV9wb3MgdCA9XG4gIHQub2ZmICsgdC5sZW5cblxubGV0IGZlZWRfc3RyaW5nIHQgfm9mZiB+bGVuIHN0ciA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgc3RyIH5zcmNfb2ZmOm9mZiB0LmJ1ZiB+ZHN0X29mZjood3JpdGVfcG9zIHQpIH5sZW47XG4gIHQubGVuIDwtIHQubGVuICsgbGVuXG5cbmxldCBmZWVkX2JpZ3N0cmluZyB0IH5vZmYgfmxlbiBiID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoQmlnc3RyaW5nYWYubGVuZ3RoIGIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCBiIH5zcmNfb2ZmOm9mZiB0LmJ1ZiB+ZHN0X29mZjood3JpdGVfcG9zIHQpIH5sZW47XG4gIHQubGVuIDwtIHQubGVuICsgbGVuXG5cbmxldCBmZWVkX2lucHV0IHQgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgICAgcyAtPiBmZWVkX3N0cmluZyAgICB0IH5vZmY6MCB+bGVuOihTdHJpbmcgICAgIC5sZW5ndGggcykgc1xuICB8IGBCaWdzdHJpbmcgYiAtPiBmZWVkX2JpZ3N0cmluZyB0IH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggYikgYlxuXG5sZXQgc2hpZnQgdCBuID1cbiAgYXNzZXJ0ICh0LmxlbiA+PSBuKTtcbiAgdC5vZmYgPC0gdC5vZmYgKyBuO1xuICB0LmxlbiA8LSB0LmxlbiAtIG5cblxubGV0IGZvcl9yZWFkaW5nIHsgYnVmOyBvZmY7IGxlbiB9ID1cbiAgQmlnc3RyaW5nYWYuc3ViIH5vZmYgfmxlbiBidWZcblxubW9kdWxlIFVuY29uc3VtZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cbmVuZFxuXG5sZXQgdW5jb25zdW1lZCA/KHNoaWZ0PTApIHsgYnVmOyBvZmY7IGxlbiB9ID1cbiAgYXNzZXJ0IChsZW4gPj0gc2hpZnQpO1xuICB7IFVuY29uc3VtZWQuYnVmOyBvZmYgPSBvZmYgKyBzaGlmdDsgbGVuID0gbGVuIC0gc2hpZnQgfVxuXG5sZXQgb2ZfdW5jb25zdW1lZCB7IFVuY29uc3VtZWQuYnVmOyBvZmY7IGxlbiB9ID1cbiAgeyBidWY7IG9mZjsgbGVuIH1cblxudHlwZSB1bmNvbnN1bWVkID0gVW5jb25zdW1lZC50ID1cbiAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgb2ZmIDogaW50XG4gIDsgbGVuIDogaW50IH1cbiIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNiBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxubW9kdWxlIEJpZ2FycmF5ID0gc3RydWN0XG4gICgqIERvIG5vdCBhY2Nlc3MgQmlnYXJyYXkgb3BlcmF0aW9ucyBkaXJlY3RseS4gSWYgYW55dGhpbmcncyBuZWVkZWQsIHJlZmVyIHRvXG4gICAqIHRoZSBpbnRlcm5hbCBCaWdzdHJpbmcgbW9kdWxlLiAqKVxuZW5kXG5cbnR5cGUgYmlnc3RyaW5nID0gQmlnc3RyaW5nYWYudFxuXG5cbm1vZHVsZSBVbmJ1ZmZlcmVkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyc2VyXG5cbiAgaW5jbHVkZSBFeHBvcnRlZF9zdGF0ZVxuXG4gIHR5cGUgbW9yZSA9IE1vcmUudCA9XG4gICAgfCBDb21wbGV0ZVxuICAgIHwgSW5jb21wbGV0ZVxuZW5kXG5cbmluY2x1ZGUgVW5idWZmZXJlZFxuaW5jbHVkZSBQYXJzZXIuTW9uYWRcbmluY2x1ZGUgUGFyc2VyLkNob2ljZVxuXG5tb2R1bGUgQnVmZmVyZWQgPSBzdHJ1Y3RcbiAgdHlwZSB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgPVxuICAgIHsgYnVmIDogYmlnc3RyaW5nXG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5cbiAgdHlwZSBpbnB1dCA9XG4gICAgWyBgQmlnc3RyaW5nIG9mIGJpZ3N0cmluZ1xuICAgIHwgYFN0cmluZyAgICBvZiBzdHJpbmcgXVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUGFydGlhbCBvZiAoWyBpbnB1dCB8IGBFb2YgXSAtPiAnYSBzdGF0ZSlcbiAgICB8IERvbmUgICAgb2YgdW5jb25zdW1lZCAqICdhXG4gICAgfCBGYWlsICAgIG9mIHVuY29uc3VtZWQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGxldCBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgfmYgYnVmZmVyaW5nID0gZnVuY3Rpb25cbiAgICB8IFVuYnVmZmVyZWQuUGFydGlhbCBwICAgICAgICAgLT4gUGFydGlhbCAoZiBwKVxuICAgIHwgVW5idWZmZXJlZC5Eb25lKGNvbnN1bWVkLCB2KSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBEb25lKHVuY29uc3VtZWQsIHYpXG4gICAgfCBVbmJ1ZmZlcmVkLkZhaWwoY29uc3VtZWQsIG1hcmtzLCBtc2cpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZylcblxuICBsZXQgcGFyc2UgPyhpbml0aWFsX2J1ZmZlcl9zaXplPTB4MTAwMCkgcCA9XG4gICAgaWYgaW5pdGlhbF9idWZmZXJfc2l6ZSA8IDEgdGhlblxuICAgICAgZmFpbHdpdGggXCJwYXJzZTogaW52YWxpZCBhcmd1bWVudCwgaW5pdGlhbF9idWZmZXJfc2l6ZSA8IDFcIjtcbiAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLmNyZWF0ZSBpbml0aWFsX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IHJlYyBmIHAgaW5wdXQgPVxuICAgICAgQnVmZmVyaW5nLnNoaWZ0IGJ1ZmZlcmluZyBwLmNvbW1pdHRlZDtcbiAgICAgIGxldCBtb3JlIDogTW9yZS50ID1cbiAgICAgICAgbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICB8IGBFb2YgICAgICAgICAgICAtPiBDb21wbGV0ZVxuICAgICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgICBJbmNvbXBsZXRlXG4gICAgICBpblxuICAgICAgbGV0IGZvcl9yZWFkaW5nID0gQnVmZmVyaW5nLmZvcl9yZWFkaW5nIGJ1ZmZlcmluZyBpblxuICAgICAgcC5jb250aW51ZSBmb3JfcmVhZGluZyB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGZvcl9yZWFkaW5nKSBtb3JlXG4gICAgICB8PiBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgYnVmZmVyaW5nIH5mXG4gICAgaW5cbiAgICBVbmJ1ZmZlcmVkLnBhcnNlIHBcbiAgICB8PiBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgYnVmZmVyaW5nIH5mXG5cbiAgbGV0IGZlZWQgc3RhdGUgaW5wdXQgPVxuICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICB8IFBhcnRpYWwgayAtPiBrIGlucHV0XG4gICAgfCBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBGYWlsKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgbWFya3MsIG1zZylcbiAgICAgIGVuZFxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCB2KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRG9uZShCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIHYpXG4gICAgICBlbmRcblxuICBsZXQgc3RhdGVfdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IERvbmUoXywgdikgLT4gU29tZSB2XG4gICAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcbiAgICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuXG4gIGxldCBzdGF0ZV90b19yZXN1bHQgPSBmdW5jdGlvblxuICAgIHwgUGFydGlhbCBfICAgICAgICAgICAtPiBFcnJvciBcImluY29tcGxldGUgaW5wdXRcIlxuICAgIHwgRG9uZShfLCB2KSAgICAgICAgICAtPiBPayB2XG4gICAgfCBGYWlsKF8sIG1hcmtzLCBtc2cpIC0+IEVycm9yIChVbmJ1ZmZlcmVkLmZhaWxfdG9fc3RyaW5nIG1hcmtzIG1zZylcblxuICBsZXQgc3RhdGVfdG9fdW5jb25zdW1lZCA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIF8pXG4gICAgfCBGYWlsKHVuY29uc3VtZWQsIF8sIF8pIC0+IFNvbWUgdW5jb25zdW1lZFxuICAgIHwgUGFydGlhbCBfICAgICAgICAgICAgICAtPiBOb25lXG5cbmVuZFxuXG4oKiogQkVHSU46IGdldHRpbmcgaW5wdXQgKilcblxubGV0IHJlYyBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjYyA9XG4gICgqIFtwcm9tcHRdIHNob3VsZCBvbmx5IGNhbGwgW3N1Y2NdIGlmIGl0IGhhcyByZWNlaXZlZCBtb3JlIGlucHV0LiBJZiB0aGVyZVxuICAgKiBpcyBubyBjaGFuY2UgdGhhdCB0aGUgaW5wdXQgd2lsbCBncm93LCBpLmUuLCBbbW9yZSA9IENvbXBsZXRlXSwgdGhlblxuICAgKiBbcHJvbXB0XSBzaG91bGQgY2FsbCBbZmFpbF0uIE90aGVyd2lzZSAoaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGlucHV0XG4gICAqIGhhc24ndCBncm93biBidXQgW21vcmUgPSBJbmNvbXBsZXRlXSBqdXN0IHByb21wdCBhZ2Fpbi4gKilcbiAgbGV0IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyA9IElucHV0LnBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyBpbnB1dCBpblxuICBsZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAgID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAgIGlucHV0IGluXG4gICgqIFRoZSBjb250aW51YXRpb24gc2hvdWxkIG5vdCBob2xkIGFueSByZWZlcmVuY2VzIHRvIGlucHV0IGFib3ZlLiAqKVxuICBsZXQgY29udGludWUgaW5wdXQgfm9mZiB+bGVuIG1vcmUgPVxuICAgIGlmIGxlbiA8IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBmYWlsd2l0aCBcInByb21wdDogaW5wdXQgc2hydW5rIVwiO1xuICAgIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBpbnB1dCB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlczpwYXJzZXJfY29tbWl0dGVkX2J5dGVzIGluXG4gICAgaWYgbGVuID0gcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIG1hdGNoIChtb3JlIDogTW9yZS50KSB3aXRoXG4gICAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgTW9yZS5Db21wbGV0ZVxuICAgICAgfCBJbmNvbXBsZXRlIC0+IHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjXG4gICAgZWxzZVxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZVxuICBpblxuICBTdGF0ZS5QYXJ0aWFsIHsgY29tbWl0dGVkID0gSW5wdXQuYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgaW5wdXQ7IGNvbnRpbnVlIH1cblxubGV0IGRlbWFuZF9pbnB1dCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIChtb3JlIDogTW9yZS50KSB3aXRoXG4gICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJub3QgZW5vdWdoIGlucHV0XCJcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKClcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJub3QgZW5vdWdoIGlucHV0XCIgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyA9XG4gIGxldCByZWMgZ28gPVxuICAgIHsgcnVuID0gZnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwnIHN1Y2MnIC0+XG4gICAgICBpZiBwb3MnICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXQnIHRoZW5cbiAgICAgICAgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKClcbiAgICAgIGVsc2VcbiAgICAgICAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwnIHN1Y2MnXG4gICAgfVxuICBpblxuICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjXG5cbmxldCB1bnNhZmVfYXBwbHkgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZilcbiAgfVxuXG5sZXQgdW5zYWZlX2FwcGx5X29wdCBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCBJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mIHdpdGhcbiAgICB8IEVycm9yIGUgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBlXG4gICAgfCBPayAgICB4IC0+IHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSB4XG4gIH1cblxubGV0IGVuc3VyZSBuIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID0gcC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbigqKiBFTkQ6IGdldHRpbmcgaW5wdXQgKilcblxubGV0IGF0X2VuZF9vZl9pbnB1dCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF8gc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIGZhbHNlXG4gICAgZWxzZSBtYXRjaCBtb3JlIHdpdGhcbiAgICB8IENvbXBsZXRlIC0+IHN1Y2MgaW5wdXQgcG9zIG1vcmUgdHJ1ZVxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBmYWxzZVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyB0cnVlIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuZF9vZl9pbnB1dCA9XG4gIGF0X2VuZF9vZl9pbnB1dFxuICA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgIC0+IHJldHVybiAoKVxuICAgIHwgZmFsc2UgLT4gZmFpbCBcImVuZF9vZl9pbnB1dFwiXG5cbmxldCBhZHZhbmNlIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJhZHZhbmNlXCJcbiAgZWxzZVxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCAocG9zICsgbikgbW9yZSAoKSB9XG4gICAgaW5cbiAgICBlbnN1cmUgbiBwXG5cbmxldCBwb3MgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgcG9zIG1vcmUgcG9zIH1cblxubGV0IGF2YWlsYWJsZSA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlIChJbnB1dC5sZW5ndGggaW5wdXQgLSBwb3MpXG4gIH1cblxubGV0IGNvbW1pdCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBJbnB1dC5jb21taXQgaW5wdXQgcG9zO1xuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKCkgfVxuXG4oKiBEbyBub3QgdXNlIHRoaXMgaWYgW3BdIGNvbnRhaW5zIGEgW2NvbW1pdF0uICopXG5sZXQgdW5zYWZlX2xvb2thaGVhZCBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN1Y2MnIGlucHV0JyBfIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MgbW9yZScgdiBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgcGVla19jaGFyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIChTb21lIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSlcbiAgICBlbHNlIGlmIG1vcmUgPSBDb21wbGV0ZSB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChTb21lIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycpKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBOb25lIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxuKCogVGhpcyBwYXJzZXIgaXMgdG9vIGltcG9ydGFudCB0byBub3QgYmUgb3B0aW1pemVkLiBEbyBhIGN1c3RvbSBqb2IuICopXG5sZXQgcmVjIHBlZWtfY2hhcl9mYWlsID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBzdWNjIGlucHV0IHBvcyBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9XG4gICAgICAgIHBlZWtfY2hhcl9mYWlsLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHNhdGlzZnkgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGYgY1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0IHBvcyBtb3JlIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9XG4gICAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnIGluXG4gICAgICAgIGlmIGYgY1xuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQnIChwb3MnICsgMSkgbW9yZScgY1xuICAgICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICAgIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBjaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zID0gY1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBub3RfY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMnID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgYyA8PiBjJ1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGMnXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwibm90IGNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV9jaGFyID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpICB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGludDggaSA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSBpblxuICAgICAgaWYgYyA9IGkgbGFuZCAweGZmXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImludDggJWRcIiBpKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV91aW50OCA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKENoYXIuY29kZSBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV9pbnQ4ID1cbiAgKCogaHR0cHM6Ly9ncmFwaGljcy5zdGFuZm9yZC5lZHUvfnNlYW5kZXIvYml0aGFja3MuaHRtbCNWYXJpYWJsZVNpZ25FeHRlbmRSaXNreSAqKVxuICBsZXQgcyA9IFN5cy5pbnRfc2l6ZSAtIDggaW5cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKENoYXIuY29kZSBjIGxzbCBzKSBhc3IgcykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBza2lwIGYgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBpZiBmIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKVxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgpXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJza2lwXCIgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCByZWMgY291bnRfd2hpbGUgfmluaXQgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgKHBvcyArIGluaXQpIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgbGV0IGluaXQnICAgICAgID0gaW5pdCArIGxlbiBpblxuICAgICgqIENoZWNrIGlmIHRoZSBsb29wIHRlcm1pbmF0ZWQgYmVjYXVzZSBpdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGlucHV0XG4gICAgICogYnVmZmVyLiBJZiBzbywgdGhlbiBwcm9tcHQgZm9yIGFkZGl0aW9uYWwgaW5wdXQgYW5kIGNvbnRpbnVlLiAqKVxuICAgIGlmIHBvcyArIGluaXQnIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgaW5pdCcpIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAoY291bnRfd2hpbGUgfmluaXQ6aW5pdCcgfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGluaXQnKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgICBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCByZWMgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IHBvcyB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgICgqIENoZWNrIGlmIHRoZSBsb29wIHRlcm1pbmF0ZWQgYmVjYXVzZSBpdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGlucHV0XG4gICAgICogYnVmZmVyLiBJZiBzbywgdGhlbiBwcm9tcHQgZm9yIGFkZGl0aW9uYWwgaW5wdXQgYW5kIGNvbnRpbnVlLiAqKVxuICAgIGlmIGxlbiA8IDFcbiAgICB0aGVuXG4gICAgICBpZiBwb3MgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgICB0aGVuIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIChjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICAgIGluXG4gICAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgICBlbHNlIGlmIHBvcyArIGxlbiA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAoY291bnRfd2hpbGUgfmluaXQ6bGVuIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBsZW4pIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgICBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBzdHJpbmdfIGYgcyA9XG4gICgqIFhYWChzZWxpb3BvdSk6IEluZWZmaWNpZW50LiBDb3VsZCBjaGVjayBwcmVmaXggZXF1YWxpdHkgdG8gc2hvcnQtY2lyY3VpdFxuICAgKiB0aGUgaW8uICopXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgZW5zdXJlICBsZW4gKHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mOihmdW4gYnVmZmVyIH5vZmYgfmxlbiAtPlxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICB3aGlsZSAhaSA8IGxlbiAmJiBDaGFyLmVxdWFsIChmIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IGJ1ZmZlciAob2ZmICsgIWkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmIChTdHJpbmcudW5zYWZlX2dldCBzICFpKSlcbiAgICBkb1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiBsZW4gPSAhaVxuICAgIHRoZW4gT2sgKEJpZ3N0cmluZ2FmLnN1YnN0cmluZyBidWZmZXIgfm9mZiB+bGVuKVxuICAgIGVsc2UgRXJyb3IgXCJzdHJpbmdcIikpXG5cbmxldCBzdHJpbmcgcyAgICA9IHN0cmluZ18gKGZ1biB4IC0+IHgpIHNcbmxldCBzdHJpbmdfY2kgcyA9IHN0cmluZ18gQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgc2tpcF93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG5cbmxldCB0YWtlIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlOiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmY6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nKVxuXG5sZXQgdGFrZV9iaWdzdHJpbmcgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2VfYmlnc3RyaW5nOiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmY6Qmlnc3RyaW5nYWYuY29weSlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfdGlsbCBmID1cbiAgdGFrZV9iaWdzdHJpbmdfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IHBlZWtfc3RyaW5nIG4gPVxuICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4pXG5cbmxldCB0YWtlX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2Vfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV90aWxsIGYgPVxuICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBjaG9pY2UgPyhmYWlsdXJlX21zZz1cIm5vIG1vcmUgY2hvaWNlc1wiKSBwcyA9XG4gIExpc3QuZm9sZF9yaWdodCAoPHw+KSBwcyAoZmFpbCBmYWlsdXJlX21zZylcblxubGV0IGZpeF9kaXJlY3QgZiA9XG4gIGxldCByZWMgcCA9IGxhenkgKGYgcilcbiAgYW5kIHIgPSB7IHJ1biA9IGZ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuICBpblxuICByXG5cbmxldCBmaXhfbGF6eSB+bWF4X3N0ZXBzIGYgPVxuICBsZXQgc3RlcHMgPSByZWYgbWF4X3N0ZXBzIGluXG4gIGxldCByZWMgcCA9IGxhenkgKGYgcilcbiAgYW5kIHIgPSB7IHJ1biA9IGZ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgZGVjciBzdGVwcztcbiAgICBpZiAhc3RlcHMgPCAwXG4gICAgdGhlbiAoXG4gICAgICBzdGVwcyA6PSBtYXhfc3RlcHM7XG4gICAgICBTdGF0ZS5MYXp5IChsYXp5ICgoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYykpKVxuICAgIGVsc2VcbiAgICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjXG4gICAgICAgICAgfVxuICBpblxuICByXG5cbmxldCBmaXggPSBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBOYXRpdmUgLT4gZml4X2RpcmVjdFxuICB8IEJ5dGVjb2RlIC0+IGZpeF9kaXJlY3RcbiAgfCBPdGhlciBfIC0+IGZ1biBmIC0+IGZpeF9sYXp5IH5tYXhfc3RlcHM6MjAgZlxuXG5sZXQgb3B0aW9uIHggcCA9XG4gIHAgPHw+IHJldHVybiB4XG5cbmxldCBjb25zIHggeHMgPSB4IDo6IHhzXG5cbmxldCByZWMgbGlzdCBwcyA9XG4gIG1hdGNoIHBzIHdpdGhcbiAgfCBbXSAgICAtPiByZXR1cm4gW11cbiAgfCBwOjpwcyAtPiBsaWZ0MiBjb25zIHAgKGxpc3QgcHMpXG5cbmxldCBjb3VudCBuIHAgPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJjb3VudDogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgMCAtPiByZXR1cm4gW11cbiAgICAgIHwgbiAtPiBsaWZ0MiBjb25zIHAgKGxvb3AgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgblxuXG5sZXQgbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgIChsaWZ0MiBjb25zIHAgbSkgPHw+IHJldHVybiBbXSlcblxubGV0IG1hbnkxIHAgPVxuICBsaWZ0MiBjb25zIHAgKG1hbnkgcClcblxubGV0IG1hbnlfdGlsbCBwIHQgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKHQgKj4gcmV0dXJuIFtdKSA8fD4gKGxpZnQyIGNvbnMgcCBtKSlcblxubGV0IHNlcF9ieTEgcyBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgIGxpZnQyIGNvbnMgcCAoKHMgKj4gbSkgPHw+IHJldHVybiBbXSkpXG5cbmxldCBzZXBfYnkgcyBwID1cbiAgKGxpZnQyIGNvbnMgcCAoKHMgKj4gc2VwX2J5MSBzIHApIDx8PiByZXR1cm4gW10pKSA8fD4gcmV0dXJuIFtdXG5cbmxldCBza2lwX21hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAgICgocCA+PnwgZnVuIF8gLT4gdHJ1ZSkgPHw+IHJldHVybiBmYWxzZSkgPj49IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gbVxuICAgICAgfCBmYWxzZSAtPiByZXR1cm4gKClcbiAgICApXG5cbmxldCBza2lwX21hbnkxIHAgPVxuICBwICo+IHNraXBfbWFueSBwXG5cbmxldCBlbmRfb2ZfbGluZSA9XG4gIChjaGFyICdcXG4nICo+IHJldHVybiAoKSkgPHw+IChzdHJpbmcgXCJcXHJcXG5cIiAqPiByZXR1cm4gKCkpIDw/PiBcImVuZF9vZl9saW5lXCJcblxubGV0IHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXRlID0gcmVmIHN0YXRlIGluXG4gICAgbGV0IHBhcnNlciA9XG4gICAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOihmdW4gYyAtPlxuICAgICAgICBtYXRjaCBmICFzdGF0ZSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBzdGF0ZScgLT4gc3RhdGUgOj0gc3RhdGUnOyB0cnVlKVxuICAgICAgfndpdGhfYnVmZmVyXG4gICAgICA+PnwgZnVuIHggLT4geCwgIXN0YXRlXG4gICAgaW5cbiAgICBwYXJzZXIucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyB9XG5cbmxldCBzY2FuIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHNjYW5fc3RhdGUgc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuICA+PnwgZnVuICgoKSwgc3RhdGUpIC0+IHN0YXRlXG5cbmxldCBzY2FuX3N0cmluZyBzdGF0ZSBmID1cbiAgc2NhbiBzdGF0ZSBmID4+fCBmc3RcblxubGV0IGNvbnN1bWVfd2l0aCBwIGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhcnQgPSBwb3MgaW5cbiAgICBsZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQgIGluXG4gICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPVxuICAgICAgaWYgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8PiBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0J1xuICAgICAgdGhlbiBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY29uc3VtZWQ6IHBhcnNlciBjb21taXR0ZWRcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPSBwb3MnIC0gc3RhcnQgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVkID0gSW5wdXQuYXBwbHkgaW5wdXQnIHN0YXJ0IGxlbiB+ZiBpblxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGNvbnN1bWVkKVxuICAgIGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICB9XG5cbmxldCBjb25zdW1lZCAgICAgICAgICAgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xubGV0IGNvbnN1bWVkX2JpZ3N0cmluZyBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuY29weVxuXG5sZXQgYm90aCBhIGIgPSBsaWZ0MiAoZnVuIGEgYiAtPiBhLCBiKSBhIGJcbmxldCBtYXAgdCB+ZiA9IHQgPj58IGZcbmxldCBiaW5kIHQgfmYgPSB0ID4+PSBmXG5sZXQgbWFwMiBhIGIgfmYgPSBsaWZ0MiBmIGEgYlxubGV0IG1hcDMgYSBiIGMgfmYgPSBsaWZ0MyBmIGEgYiBjXG5sZXQgbWFwNCBhIGIgYyBkIH5mID0gbGlmdDQgZiBhIGIgYyBkXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcbiAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICBsZXQgbWFwMyA9IG1hcDNcbiAgICBsZXQgbWFwNCA9IG1hcDRcbiAgZW5kXG5lbmRcblxubGV0ICggbGV0KyApID0gKCA+PnwgKVxubGV0ICggbGV0KiApID0gKCA+Pj0gKVxubGV0ICggYW5kKyApID0gYm90aFxuXG5tb2R1bGUgQkUgPSBzdHJ1Y3RcbiAgKCogWFhYKHNlbGlvcG91KTogVGhlIHBhdHRlcm4gaW4gYm90aCB0aGlzIG1vZHVsZSBhbmQgW0xFXSBhcmUgYSBjb21wcm9taXNlXG4gICAqIGJldHdlZW4gZWZmaWNpZW5jeSBhbmQgY29kZSByZXVzZS4gQnkgaW5saW5pbmcgW2Vuc3VyZV0geW91IGNhbiByZWNvdmVyXG4gICAqIGFib3V0IDIgbmFub3NlY29uZHMgb24gYXZlcmFnZS4gVGhhdCBtYXkgYWRkIHVwIGluIGNlcnRhaW4gYXBwbGljYXRpb25zLlxuICAgKlxuICAgKiBUaGlzIHBhdHRlcm4gZG9lcyBub3QgYWxsb2NhdGUgaW4gdGhlIGZhc3QgKHN1Y2Nlc3MpIHBhdGguXG4gICAqICopXG4gIGxldCBpbnQxNiBuID1cbiAgICBsZXQgYnl0ZXMgPSAyIGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfaW50MTZfYmUgaW5wdXQgcG9zID0gKG4gbGFuZCAweGZmZmYpXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MTZcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQzMiBuID1cbiAgICBsZXQgYnl0ZXMgPSA0IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDMyLmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDMyX2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDMyXCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50NjQgbiA9XG4gICAgbGV0IGJ5dGVzID0gOCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQ2NC5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQ2NF9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQ2NFwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIExFID0gc3RydWN0XG4gIGxldCBpbnQxNiBuID1cbiAgICBsZXQgYnl0ZXMgPSAyIGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfaW50MTZfbGUgaW5wdXQgcG9zID0gKG4gbGFuZCAweGZmZmYpXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MTZcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQzMiBuID1cbiAgICBsZXQgYnl0ZXMgPSA0IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDMyLmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDMyX2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDMyXCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50NjQgbiA9XG4gICAgbGV0IGJ5dGVzID0gOCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQ2NC5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQ2NF9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQ2NFwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGxldCB0YWtlIG4gZiA9XG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mKVxuXG4gIGxldCBwZWVrIG4gZiA9XG4gICAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuIGYpXG5cbiAgbGV0IHRha2Vfd2hpbGUgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3doaWxlMSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZTEgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV90aWxsIGNoZWNrIGYgPVxuICAgIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoY2hlY2sgYykpIGZcbmVuZFxuXG5tb2R1bGUgQ29uc3VtZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUHJlZml4XG4gICAgfCBBbGxcbmVuZFxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIH5jb25zdW1lIHAgYnMgPVxuICBsZXQgcCA9XG4gICAgbWF0Y2ggKGNvbnN1bWUgOiBDb25zdW1lLnQpIHdpdGhcbiAgICB8IFByZWZpeCAtPiBwXG4gICAgfCBBbGwgLT4gcCA8KiBlbmRfb2ZfaW5wdXRcbiAgaW5cbiAgVW5idWZmZXJlZC5wYXJzZV9iaWdzdHJpbmcgcCBic1xuXG5sZXQgcGFyc2Vfc3RyaW5nIH5jb25zdW1lIHAgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJzICA9IEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgcyB+c3JjX29mZjowIGJzIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgcGFyc2VfYmlnc3RyaW5nIH5jb25zdW1lIHAgYnNcbiIsIigqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBBbmlsIE1hZGhhdmFwZWRkeSA8YW5pbEByZWNvaWwub3JnPlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgRGF2aWQgU2hlZXRzIDxzaGVldHNAYWx1bS5taXQuZWR1PlxuICpcbiAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZVxuICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFU1xuICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVNcbiAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTlxuICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gKlxuICopXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbnR5cGUgY29tcG9uZW50ID0gW1xuICB8IGBTY2hlbWVcbiAgfCBgQXV0aG9yaXR5XG4gIHwgYFVzZXJpbmZvICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgUGF0aFxuICB8IGBRdWVyeVxuICB8IGBRdWVyeV9rZXlcbiAgfCBgUXVlcnlfdmFsdWVcbiAgfCBgRnJhZ21lbnRcbiAgfCBgR2VuZXJpY1xuICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZykgKCogKGNvbXBvbmVudCAqIHNhZmUgY2hhcnMgKiB1bnNhZmUgY2hhcnMpICopXG5dXG5cbnR5cGUgcGN0X2VuY29kZXIgPSB7XG4gICAgc2NoZW1lOiBjb21wb25lbnQ7XG4gICAgdXNlcmluZm86IGNvbXBvbmVudDtcbiAgICBob3N0OiBjb21wb25lbnQ7XG4gICAgcGF0aDogY29tcG9uZW50O1xuICAgIHF1ZXJ5X2tleTogY29tcG9uZW50O1xuICAgIHF1ZXJ5X3ZhbHVlOiBjb21wb25lbnQ7XG4gICAgZnJhZ21lbnQ6IGNvbXBvbmVudDtcbiAgfVxuXG5sZXQgcmVjIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgPSBmdW5jdGlvblxuICB8IGxhc3Q6OltdIC0+IGZuIGJ1ZiBsYXN0XG4gIHwgZWw6OnJlc3QgLT5cbiAgICBmbiBidWYgZWw7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNlcDtcbiAgICBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmIHJlc3RcbiAgfCBbXSAtPiAoKVxuXG5sZXQgcmV2X2ludGVyamVjdCBlIGxzdCA9XG4gIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgLT4gYWNjXG4gICAgfCB4Ojp4cyAtPiBhdXggKHg6OmU6OmFjYykgeHNcbiAgaW4gbWF0Y2ggbHN0IHdpdGhcbiAgfCBbXSAgLT4gW11cbiAgfCBoOjp0IC0+IGF1eCBbaF0gdFxuXG5sZXQgY29tcGFyZV9vcHQgYyB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5vbmUsICAgTm9uZSAgIC0+IDBcbiAgfCBTb21lIF8sIE5vbmUgICAtPiAxXG4gIHwgTm9uZSwgICBTb21lIF8gLT4gLTFcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBjIGEgYlxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBmIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgW10sICAgIFtdICAgIC0+ICAwXG4gIHwgXzo6XywgIFtdICAgIC0+ICAxXG4gIHwgW10sICAgIF86Ol8gIC0+IC0xXG4gIHwgeDo6eHMsIHk6OnlzIC0+XG4gICAgbWF0Y2ggZiB4IHkgd2l0aCAwIC0+IGNvbXBhcmVfbGlzdCBmIHhzIHlzIHwgYyAtPiBjXG5cbigqKiBTYWZlIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQgaW4gYSBVUklcbiAgKiBVbmZvcnR1bmF0ZWx5LCB0aGlzIHZhcmllcyBkZXBlbmRpbmcgb24gd2hpY2ggYml0IG9mIHRoZSBVUklcbiAgKiBpcyBiZWluZyBwYXJzZWQsIHNvIHRoZXJlIGFyZSBtdWx0aXBsZSB2YXJpYW50cyAoYW5kIHRoaXNcbiAgKiBzZXQgaXMgcHJvYmFibHkgbm90IGV4aGF1c3RpdmUuIFRPRE86IGNoZWNrLlxuKilcbnR5cGUgc2FmZV9jaGFycyA9IGJvb2wgYXJyYXlcblxubW9kdWxlIHR5cGUgU2NoZW1lID0gc2lnXG4gIHZhbCBzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgOiBjb21wb25lbnQgLT4gc2FmZV9jaGFyc1xuICB2YWwgbm9ybWFsaXplX2hvc3QgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBjYW5vbmljYWxpemVfcG9ydCA6IGludCBvcHRpb24gLT4gaW50IG9wdGlvblxuICB2YWwgY2Fub25pY2FsaXplX3BhdGggOiBzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljIDogU2NoZW1lID0gc3RydWN0XG4gIGxldCBzdWJfZGVsaW1zIGEgPVxuICAgIGxldCBzdWJkID0gXCIhJCYnKCkqKyw7PVwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3ViZCAtIDEgZG9cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIHN1YmQuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnMgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgMjU2IGZhbHNlIGluXG4gICAgbGV0IGFsd2F5c19zYWZlID1cbiAgICAgIFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlfLi1+XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBhbHdheXNfc2FmZSAtIDEgZG9cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIGFsd2F5c19zYWZlLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBwY2hhciA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBzYWZlX2NoYXJzKSBpblxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIHRydWU7XG4gICAgYS4oQ2hhci5jb2RlICdAJykgPC0gdHJ1ZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3NjaGVtZSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gdHJ1ZTtcbiAgICBhXG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHBhdGggY29tcG9uZW50IG9mIGEgVVJJICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9wYXRoIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHBjaGFyKSBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnLycpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnkgOiBzYWZlX2NoYXJzID1cbiAgICAoKiBUT0RPOiBXaGF0IGFib3V0IHtcIiFcIixcIiRcIixcIixcIn0/IFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL2F2c20vb2NhbWwtdXJpL2NvbW1pdC8xZWYzZjFkZmI0MWJkYjRmMzNmMjIzZmZlMTZlNjJhMzM5NzU2NjFhI2RpZmYtNzQwZjJkZTUzYzllYjM2ZTk2NzBkZGZiZGI5YmE5MTRSMTcxPiAqKVxuICAgIGxldCBhID0gQXJyYXkuY29weSBwY2hhciBpblxuICAgIGEuKENoYXIuY29kZSAnLycpIDwtIHRydWU7XG4gICAgYS4oQ2hhci5jb2RlICc/JykgPC0gdHJ1ZTtcbiAgICAoKiAnJicgaXMgc2FmZSBidXQgd2Ugc2hvdWxkIGVuY29kZSBsaXRlcmFscyB0byBhdm9pZCBhbWJpZ3VpdHlcbiAgICAgICB3aXRoIHRoZSBhbHJlYWR5IHBhcnNlZCBxcyBwYXJhbXMgKilcbiAgICBhLihDaGFyLmNvZGUgJyYnKSA8LSBmYWxzZTtcbiAgICAoKiAnOycgaXMgc2FmZSBidXQgc29tZSBzeXN0ZW1zIHRyZWF0IGl0IGxpa2UgJyYnLiAqKVxuICAgIGEuKENoYXIuY29kZSAnOycpIDwtIGZhbHNlO1xuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfa2V5IDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICc9JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnLCcpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfZnJhZ21lbnQgOiBzYWZlX2NoYXJzID0gc2FmZV9jaGFyc19mb3JfcXVlcnlcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgdXNlcmluZm8gc3ViY29tcG9uZW50IG9mIGEgVVJJLlxuICAgICAgVE9ETzogdGhpcyBuZWVkcyBtb3JlIHJlc2VydmVkIGNoYXJhY3RlcnMgYWRkZWQgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3VzZXJpbmZvIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHJlYyBzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgPSBmdW5jdGlvblxuICAgIHwgYFBhdGggLT4gc2FmZV9jaGFyc19mb3JfcGF0aFxuICAgIHwgYFVzZXJpbmZvIC0+IHNhZmVfY2hhcnNfZm9yX3VzZXJpbmZvXG4gICAgfCBgUXVlcnkgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlcbiAgICB8IGBRdWVyeV9rZXkgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlfa2V5XG4gICAgfCBgUXVlcnlfdmFsdWUgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWVcbiAgICB8IGBGcmFnbWVudCAtPiBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudFxuICAgIHwgYFNjaGVtZSAtPiBzYWZlX2NoYXJzX2Zvcl9zY2hlbWVcbiAgICB8IGBDdXN0b20gKChjb21wb25lbnQgOiBjb21wb25lbnQpLCBzYWZlLCB1bnNhZmUpIC0+XG4gICAgICAgbGV0IHNhZmVfY2hhcnMgPSBBcnJheS5jb3B5IChzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgY29tcG9uZW50KSBpblxuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBzYWZlLltpXSBpblxuICAgICAgICAgc2FmZV9jaGFycy4oYykgPC0gdHJ1ZVxuICAgICAgIGRvbmU7XG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdW5zYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgdW5zYWZlLltpXSBpblxuICAgICAgICAgc2FmZV9jaGFycy4oYykgPC0gZmFsc2VcbiAgICAgICBkb25lO1xuICAgICAgIHNhZmVfY2hhcnNcbiAgICB8IGBHZW5lcmljXG4gICAgfCBfIC0+IHNhZmVfY2hhcnNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHNvID0gaHNvXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0IHBvcnQgPSBwb3J0XG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCBwYXRoID0gcGF0aFxuZW5kXG5cbm1vZHVsZSBIdHRwIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHNcblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIDgwIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcblxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW1wiL1wiXVxuICAgIHwgeCAgLT4geFxuZW5kXG5cbm1vZHVsZSBIdHRwcyA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEh0dHBcblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIDQ0MyAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5lbmRcblxubW9kdWxlIEZpbGUgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID1cbiAgICBsZXQgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzIGluXG4gICAgaWYgaHM9XCJsb2NhbGhvc3RcIiB0aGVuIFwiXCIgZWxzZSBoc1xuZW5kXG5cbm1vZHVsZSBVcm4gOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbmVuZFxuXG5sZXQgbW9kdWxlX29mX3NjaGVtZSA9IGZ1bmN0aW9uXG4gIHwgU29tZSBzIC0+IGJlZ2luIG1hdGNoIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyB3aXRoXG4gICAgICB8IFwiaHR0cFwiIC0+IChtb2R1bGUgSHR0cCA6IFNjaGVtZSlcbiAgICAgIHwgXCJodHRwc1wiICAtPiAobW9kdWxlIEh0dHBzIDogU2NoZW1lKVxuICAgICAgfCBcImZpbGVcIiAtPiAobW9kdWxlIEZpbGUgOiBTY2hlbWUpXG4gICAgICB8IFwidXJuXCIgIC0+IChtb2R1bGUgVXJuIDogU2NoZW1lKVxuICAgICAgfCBfIC0+IChtb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSlcbiAgICBlbmRcbiAgfCBOb25lIC0+IChtb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSlcblxuKCoqIFBvcnRpb25zIG9mIHRoZSBVUkwgbXVzdCBiZSBjb252ZXJ0ZWQgdG8tYW5kLWZyb20gcGVyY2VudC1lbmNvZGluZ1xuICAqIGFuZCB0aGlzIHJlYWxseSwgcmVhbGx5IHNob3VsZG4ndCBiZSBtaXhlZCB1cC4gU28gdGhpcyBQY3QgbW9kdWxlXG4gICogZGVmaW5lcyBhYnN0cmFjdCBQY3QuZW5jb2RlZCBhbmQgUGN0LmRlY29kZWQgdHlwZXMgd2hpY2ggc2V0cyB0aGVcbiAgKiBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBzdHJpbmcuICBUaGVyZSBhcmUgZnVuY3Rpb25zIHRvIFwiY2FzdFwiIHRvXG4gICogYW5kIGZyb20gdGhlc2UgYW5kIG5vcm1hbCBzdHJpbmdzLCBhbmQgdGhpcyBwcm9tb3RlcyBhIGJpdCBvZlxuICAqIGludGVybmFsIHNhZmV0eS4gIFRoZXNlIHR5cGVzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZXh0ZXJuYWxcbiAgKiBpbnRlcmZhY2UsIGFzIGNhc3RpbmcgdG8tYW5kLWZyb20gaXMgcXVpdGUgYSBiaXQgb2YgaGFzc2xlIGFuZFxuICAqIHByb2JhYmx5IG5vdCBhIGxvdCBvZiB1c2UgdG8gdGhlIGF2ZXJhZ2UgY29uc3VtZXIgb2YgdGhpcyBsaWJyYXJ5XG4qKVxubW9kdWxlIFBjdCA6IHNpZ1xuICB0eXBlIGVuY29kZWRcbiAgdHlwZSBkZWNvZGVkXG5cbiAgdmFsIGVuY29kZSA6ID9zY2hlbWU6c3RyaW5nIC0+ID9jb21wb25lbnQ6Y29tcG9uZW50IC0+IGRlY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgZGVjb2RlIDogZW5jb2RlZCAtPiBkZWNvZGVkXG5cbiAgKCogVGhlIGVtcHR5IGRlY29kZWQgc3RyaW5nICopXG4gIHZhbCBlbXB0eV9kZWNvZGVkIDogZGVjb2RlZFxuICAoKiBJZGVudGl0eSBmdW5jdGlvbnMgc28gd2UgbmVlZCB0byBleHBsaWNpdGx5IGNhc3Qgd2hlbiB1c2luZyB0aGVtIGJlbG93ICopXG4gIHZhbCBjYXN0X2VuY29kZWQgOiBzdHJpbmcgLT4gZW5jb2RlZFxuICB2YWwgY2FzdF9kZWNvZGVkIDogc3RyaW5nIC0+IGRlY29kZWRcbiAgdmFsIHVuY2FzdF9lbmNvZGVkIDogZW5jb2RlZCAtPiBzdHJpbmdcbiAgdmFsIHVuY2FzdF9kZWNvZGVkIDogZGVjb2RlZCAtPiBzdHJpbmdcbiAgKCogTGlmdCBIT0ZzIGZvciBtYXBzIG92ZXIgZW5jb2RpbmdzLCBkZWNvZGluZ3MsIGFuZCBzdHJpbmdzICopXG4gIHZhbCBsaWZ0X2VuY29kZWQgOiAoZW5jb2RlZCAtPiBlbmNvZGVkKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBsaWZ0X2RlY29kZWQgOiAoZGVjb2RlZCAtPiBkZWNvZGVkKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCB1bmxpZnRfZW5jb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBlbmNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGRlY29kZWQgLT4gZGVjb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQyIDogKHN0cmluZyAtPiBzdHJpbmcgLT4gJ2EpIC0+IGRlY29kZWQgLT4gZGVjb2RlZCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgZW5jb2RlZCA9IHN0cmluZ1xuICB0eXBlIGRlY29kZWQgPSBzdHJpbmdcbiAgbGV0IGNhc3RfZW5jb2RlZCB4ID0geFxuICBsZXQgY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCBlbXB0eV9kZWNvZGVkID0gXCJcIlxuICBsZXQgdW5jYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IHVuY2FzdF9lbmNvZGVkIHggPSB4XG5cbiAgbGV0IGxpZnRfZW5jb2RlZCBmID0gZlxuICBsZXQgbGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZW5jb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkMiBmID0gZlxuXG4gICgqKiBTY2FuIGZvciByZXNlcnZlZCBjaGFyYWN0ZXJzIGFuZCByZXBsYWNlIHRoZW0gd2l0aFxuICAgICAgcGVyY2VudC1lbmNvZGVkIGVxdWl2YWxlbnRzLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IGVuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBiID1cbiAgICBsZXQgbW9kdWxlIFNjaGVtZSA9ICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgc2NoZW1lKSA6IFNjaGVtZSkgaW5cbiAgICBsZXQgc2FmZV9jaGFycyA9IFNjaGVtZS5zYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgY29tcG9uZW50IGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgc2NhbiBzdGFydCBjdXIgPVxuICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYi5bY3VyXSBpblxuICAgICAgICBpZiBzYWZlX2NoYXJzLihjKSB0aGVuXG4gICAgICAgICAgc2NhbiBzdGFydCAoY3VyKzEpXG4gICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICBpZiBjdXIgPiBzdGFydCB0aGVuIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUHJpbnRmLnNwcmludGYgXCIlJSUwMlhcIiBjKTtcbiAgICAgICAgICBzY2FuIChjdXIrMSkgKGN1cisxKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBpbnRfb2ZfaGV4X2NoYXIgYyA9XG4gICAgbGV0IGMgPSBpbnRfb2ZfY2hhciAoQ2hhci51cHBlcmNhc2VfYXNjaWkgYykgLSA0OCBpblxuICAgIGlmIGMgPiA5XG4gICAgdGhlbiBpZiBjID4gMTYgJiYgYyA8IDIzXG4gICAgICB0aGVuIGMgLSA3XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcbiAgICBlbHNlIGlmIGMgPj0gMFxuICAgIHRoZW4gY1xuICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuXG4gICgqKiBTY2FuIGZvciBwZXJjZW50LWVuY29kaW5nIGFuZCBjb252ZXJ0IHRoZW0gaW50byBBU0NJSS5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWRlY29kZWQgc3RyaW5nICopXG4gIGxldCBkZWNvZGUgYiA9XG4gICAgKCogVE9ETzogU2hvdWxkIGJvdGggc3RyaWN0IGFuZCBub24tc3RyaWN0IHZlcnNpb25zIGJlIGV4cG9zZWQ/ICopXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgc2NhbiBzdGFydCBjdXIgPVxuICAgICAgaWYgY3VyID49IGxlbiB0aGVuIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpXG4gICAgICBlbHNlIGlmIGIuW2N1cl0gPSAnJScgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnXG4gICAgICAgIGVsc2UgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgc2NhbiBjdXIgY3VyXG4gICAgICAgIHwgaGlnaGJpdHMgLT4gYmVnaW5cbiAgICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXVxuICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICBsZXQgc3RhcnRfYXQgPVxuICAgICAgICAgICAgICBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgICAgICAgIHwgbG93Yml0cyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIChoaWdoYml0cyBsc2wgNCArIGxvd2JpdHMpKTtcbiAgICAgICAgICAgICAgICBjdXIrMVxuICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV07XG4gICAgICAgICAgICAgICAgY3VyXG4gICAgICAgICAgICBpbiBzY2FuIHN0YXJ0X2F0IHN0YXJ0X2F0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2Ugc2NhbiBzdGFydCAoY3VyKzEpXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5lbmRcblxuKCogUGVyY2VudCBlbmNvZGUgYSBzdHJpbmcgKilcbmxldCBwY3RfZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIHMgPVxuICBQY3QuKHVuY2FzdF9lbmNvZGVkIChlbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IChjYXN0X2RlY29kZWQgcykpKVxuXG5sZXQgcGN0X2VuY29kZXJcbiAgICAgID8oc2NoZW1lPWBTY2hlbWUpXG4gICAgICA/KHVzZXJpbmZvPWBVc2VyaW5mbylcbiAgICAgID8oaG9zdD1gSG9zdClcbiAgICAgID8ocGF0aD1gUGF0aClcbiAgICAgID8ocXVlcnlfa2V5PWBRdWVyeV9rZXkpXG4gICAgICA/KHF1ZXJ5X3ZhbHVlPWBRdWVyeV92YWx1ZSlcbiAgICAgID8oZnJhZ21lbnQ9YEZyYWdtZW50KVxuICAgICAgKCkgPVxuICB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBhdGg7IHF1ZXJ5X2tleTsgcXVlcnlfdmFsdWU7IGZyYWdtZW50IH1cblxuKCogUGVyY2VudCBkZWNvZGUgYSBzdHJpbmcgKilcbmxldCBwY3RfZGVjb2RlIHMgPSBQY3QuKHVuY2FzdF9kZWNvZGVkIChkZWNvZGUgKGNhc3RfZW5jb2RlZCBzKSkpXG5cbigqIFVzZXJpbmZvIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gaWQgKiBjcmVkZW50aWFsIHBhaXIgKilcbm1vZHVsZSBVc2VyaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKHUscCkgKHUnLHAnKSA9XG4gICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgdSB1JyB3aXRoXG4gICAgfCAwIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHAgcCdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCB1c2VyaW5mb19vZl9lbmNvZGVkIHVzID1cbiAgICBtYXRjaCBTdHJpbmdleHQuc3BsaXQgfm1heDoyIH5vbjonOicgdXMgd2l0aFxuICAgIHwgW10gLT4gKFwiXCIsTm9uZSlcbiAgICB8IFt1XSAtPiAocGN0X2RlY29kZSB1LE5vbmUpXG4gICAgfCB1OjpwOjpfIC0+IChwY3RfZGVjb2RlIHUsU29tZSAocGN0X2RlY29kZSBwKSlcblxuICBsZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgKHUscG8pID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLihcbiAgICAgIDEgKyAobGVuZ3RoIHUpICsgKG1hdGNoIHBvIHdpdGggTm9uZSAtPiAwIHwgU29tZSBwIC0+IGxlbmd0aCBwKSlcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgdSk7XG4gICAgYmVnaW4gbWF0Y2ggcG8gd2l0aCBOb25lIC0+ICgpO1xuICAgIHwgU29tZSBwIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgcClcbiAgICBlbmQ7XG4gICAgUGN0LmNhc3RfZW5jb2RlZCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbmVuZFxuXG5sZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCA9IFVzZXJpbmZvLnVzZXJpbmZvX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCA9IFVzZXJpbmZvLmVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFBhdGggc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhIGxpc3Qgb2YgcGF0aCB0b2tlbnMgKilcbm1vZHVsZSBQYXRoID0gc3RydWN0XG4gICgqIEludmFyaWFudDogZXZlcnkgZWxlbWVudCBpcyBub24temVybywgc2xhc2hlcyAoLykgb25seSBvY2N1ciBhbG9uZS4gKilcbiAgKCogWWVzLCBpdCdzIGJldHRlciB0aGlzIHdheS4gVGhpcyBtZWFucyB5b3UgY2FuIHJldGFpbiBzZXBhcmF0b3JcbiAgICAgY29udGV4dCBpbiByZWN1cnNpb24gKGUuZy4gcmVtb3ZlX2RvdF9zZWdtZW50cyBmb3IgcmVsYXRpdmUgcmVzb2x1dGlvbikuICopXG5cbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3RcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZVxuXG4gICgqIE1ha2UgYSBwYXRoIHRva2VuIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHBhdGhfb2ZfZW5jb2RlZCBwcyA9XG4gICAgbGV0IHRva2wgPSBTdHJpbmdleHQuZnVsbF9zcGxpdCBwcyB+b246Jy8nIGluXG4gICAgTGlzdC5tYXAgcGN0X2RlY29kZSB0b2tsXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40PiAqKVxuICBsZXQgcmVtb3ZlX2RvdF9zZWdtZW50cyBwID1cbiAgICBsZXQgcmV2cCA9IExpc3QucmV2IHAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYXNjZW5zaW9uIG91dHAgPSBmdW5jdGlvblxuICAgICAgfCBcIi9cIjo6XCIuLlwiOjpyIHwgXCIuLlwiOjpyIC0+IGxvb3AgKGFzY2Vuc2lvbiArIDEpIG91dHAgclxuICAgICAgfCBcIi9cIjo6XCIuXCI6OnIgIHwgXCIuXCI6OnIgIC0+IGxvb3AgYXNjZW5zaW9uIG91dHAgclxuICAgICAgfCBcIi9cIjo6W10gfCBbXSB3aGVuIExpc3QuKGxlbmd0aCBwID4gMCAmJiBoZCBwID0gXCIvXCIpIC0+IFwiL1wiOjpvdXRwXG4gICAgICB8IFtdIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBMaXN0LnJldl9hcHBlbmRcbiAgICAgICAgKFwiL1wiOjoocmV2X2ludGVyamVjdCBcIi9cIiBBcnJheS4odG9fbGlzdCAobWFrZSBhc2NlbnNpb24gXCIuLlwiKSkpKSBvdXRwXG4gICAgICB8IFtdIC0+IExpc3QuKGlmIGxlbmd0aCBvdXRwID4gMCAmJiBoZCBvdXRwID0gXCIvXCIgdGhlbiB0bCBvdXRwIGVsc2Ugb3V0cClcbiAgICAgIHwgXCIvXCI6OlwiL1wiOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIChcIi9cIjo6cilcbiAgICAgIHwgXCIvXCI6Ol86OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgclxuICAgICAgfCBzOjpyIC0+IGxvb3AgMCAoczo6b3V0cCkgclxuICAgIGluIGxvb3AgMCBbXSByZXZwXG5cbiAgbGV0IGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQgcCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYyB0b2sgLT4gU3RyaW5nLmxlbmd0aCB0b2sgKyBjKSAwIHAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAtPiBmdW5jdGlvblxuICAgIHwgXCIvXCIgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnLydcbiAgICB8IHNlZyAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHNlZylcbiAgICApIFwiXCIgYnVmIHA7XG4gICAgUGN0LmNhc3RfZW5jb2RlZCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjM+ICopXG4gIGxldCBtZXJnZSBiaG9zdCBicGF0aCByZWxwYXRoID1cbiAgICBtYXRjaCBiaG9zdCwgTGlzdC5yZXYgYnBhdGggd2l0aFxuICAgIHwgU29tZSBfLCBbXSAtPiBcIi9cIjo6cmVscGF0aFxuICAgIHwgXywgKFwiL1wiOjpyYnBhdGggfCBfOjpcIi9cIjo6cmJwYXRoKSAtPiBMaXN0LnJldl9hcHBlbmQgKFwiL1wiOjpyYnBhdGgpIHJlbHBhdGhcbiAgICB8IF8sIF8gLT4gcmVscGF0aFxuZW5kXG5cbmxldCBwYXRoX29mX2VuY29kZWQgPSBQYXRoLnBhdGhfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQgPSBQYXRoLmVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUXVlcnkgc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBhc3NvYyBsaXN0IG9mIGtleS92YWx1ZXMgKilcbm1vZHVsZSBRdWVyeSA9IHN0cnVjdFxuXG4gIHR5cGUga3YgPSAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3RcblxuICB0eXBlIHQgPVxuICAgIHwgS1Ygb2Yga3ZcbiAgICB8IFJhdyBvZiBzdHJpbmcgb3B0aW9uICoga3YgTGF6eS50XG5cbiAgbGV0IGNvbXBhcmUgeCB5ID0gbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBLViBrdmwsIEtWIGt2bCdcbiAgICB8IFJhdyAoXywgbGF6eSBrdmwpLCBLViBrdmwnXG4gICAgfCBLViBrdmwsIFJhdyAoXywgbGF6eSBrdmwnKSAtPlxuICAgICAgY29tcGFyZV9saXN0IChmdW4gKGssdmwpIChrJyx2bCcpIC0+XG4gICAgICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIGsgaycgd2l0aFxuICAgICAgICB8IDAgLT4gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlIHZsIHZsJ1xuICAgICAgICB8IGMgLT4gY1xuICAgICAgKSBrdmwga3ZsJ1xuICAgIHwgUmF3IChyYXcsXyksIFJhdyAocmF3JyxfKSAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSByYXcgcmF3J1xuXG4gIGxldCBmaW5kIHEgayA9IHRyeSBTb21lIChMaXN0LmFzc29jIGsgcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBzcGxpdF9xdWVyeSBxcyA9XG4gICAgbGV0IGVscyA9IFN0cmluZ2V4dC5zcGxpdCB+b246JyYnIHFzIGluXG4gICAgKCogUmVwbGFjZSBhICsgaW4gYSBxdWVyeSBzdHJpbmcgd2l0aCBhIHNwYWNlIGluLXBsYWNlICopXG4gICAgbGV0IHBsdXNfdG9fc3BhY2UgcyA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgcyBpblxuICAgICAgZm9yIGkgPSAwIHRvIEJ5dGVzLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBpZiBCeXRlcy5nZXQgcyBpID0gJysnIHRoZW4gQnl0ZXMuc2V0IHMgaSAnICdcbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCAoazo6djo6Xyk6OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLFxuICAgICAgICAgICAgICAgIChtYXRjaCBTdHJpbmdleHQuc3BsaXQgfm9uOicsJyAocGx1c190b19zcGFjZSB2KSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgW10gLT4gW1wiXCJdIHwgbCAtPiBsKSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtrXTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssIFtdIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW106OnRsIC0+IGxvb3AgKChcIlwiLCBbXSk6OmFjYykgdGxcbiAgICAgIHwgW10gLT4gYWNjXG4gICAgaW5cbiAgICBtYXRjaCBlbHMgd2l0aFxuICAgIHwgW10gIC0+IFtcIlwiLFtdXVxuICAgIHwgZWxzIC0+IGxvb3AgW11cbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biBlbCAtPiBTdHJpbmdleHQuc3BsaXQgfm9uOic9JyBlbCB+bWF4OjIpIGVscylcblxuICAoKiBNYWtlIGEgcXVlcnkgdHVwbGUgbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcXVlcnlfb2ZfZW5jb2RlZCBxcyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKGssIHYpIC0+IChwY3RfZGVjb2RlIGssIExpc3QubWFwIHBjdF9kZWNvZGUgdikpXG4gICAgICAoc3BsaXRfcXVlcnkgcXMpXG5cbiAgKCogQXNzZW1ibGUgYSBxdWVyeSBzdHJpbmcgc3VpdGFibGUgZm9yIHB1dHRpbmcgaW50byBhIFVSSS5cbiAgICogVHVwbGUgaW5wdXRzIGFyZSBwZXJjZW50IGRlY29kZWQgYW5kIHdpbGwgYmUgZW5jb2RlZCBieVxuICAgKiB0aGlzIGZ1bmN0aW9uLlxuICAqKVxuICBsZXQgZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgKGssdikgLT5cbiAgICAgICAgYSArIChTdHJpbmcubGVuZ3RoIGspXG4gICAgICAgICsgKExpc3QuZm9sZF9sZWZ0IChmdW4gYSBzIC0+IGErKFN0cmluZy5sZW5ndGggcykrMSkgMCB2KSArIDIpICgtMSkgbCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIChrLHYpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfa2V5IGspO1xuICAgICAgICBpZiB2IDw+IFtdIHRoZW4gKFxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz0nO1xuICAgICAgICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIHMgLT5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAgICAgICAgICAgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X3ZhbHVlIHMpXG4gICAgICAgICAgICApIFwiLFwiIGJ1ZiB2KVxuICAgICAgKSBcIiZcIiBidWYgbDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IG9mX3JhdyBxcyA9XG4gICAgbGV0IGxhenlfcXVlcnkgPSBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gcXVlcnlfb2ZfZW5jb2RlZCBxcykgaW5cbiAgICBSYXcgKFNvbWUgcXMsIGxhenlfcXVlcnkpXG5cbiAgbGV0IGt2ID0gZnVuY3Rpb24gUmF3IChfLCBsYXp5IGt2KSB8IEtWIGt2IC0+IGt2XG5lbmRcblxubGV0IHF1ZXJ5X29mX2VuY29kZWQgPSBRdWVyeS5xdWVyeV9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lID0gUXVlcnkuZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lXG5cbigqIFR5cGUgb2YgdGhlIFVSSSwgd2l0aCBtb3N0IGJpdHMgYmVpbmcgb3B0aW9uYWwgKilcbnR5cGUgdCA9IHtcbiAgc2NoZW1lOiBQY3QuZGVjb2RlZCBvcHRpb247XG4gIHVzZXJpbmZvOiBVc2VyaW5mby50IG9wdGlvbjtcbiAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYEhvc3Qgb2YgUGN0LmRlY29kZWRdIG9wdGlvbiA7XG4gIHBvcnQ6IGludCBvcHRpb247XG4gIHBhdGg6IFBhdGgudDtcbiAgcXVlcnk6IFF1ZXJ5LnQ7XG4gIGZyYWdtZW50OiBQY3QuZGVjb2RlZCBvcHRpb247XG59XG5cbmxldCBlbXB0eSA9IHtcbiAgc2NoZW1lID0gTm9uZTtcbiAgdXNlcmluZm8gPSBOb25lO1xuICBob3N0ID0gTm9uZTtcbiAgcG9ydCA9IE5vbmU7XG4gIHBhdGggPSBbXTtcbiAgcXVlcnkgPSBRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pO1xuICBmcmFnbWVudCA9IE5vbmU7XG59XG5cbmxldCBjb21wYXJlX2RlY29kZWQgPSBQY3QudW5saWZ0X2RlY29kZWQyIFN0cmluZy5jb21wYXJlXG5sZXQgY29tcGFyZV9kZWNvZGVkX29wdCA9IGNvbXBhcmVfb3B0IGNvbXBhcmVfZGVjb2RlZFxubGV0IGNvbXBhcmVfaG9zdCBoMSBoMiA9XG4gIG1hdGNoIGgxLCBoMiB3aXRoXG4gIHwgYElwdjRfbGl0ZXJhbCBpcDEsIGBJcHY0X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSXB2Nl9saXRlcmFsIGlwMSwgYElwdjZfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBIb3N0IGgxLCBgSG9zdCBoMiAtPiBjb21wYXJlX2RlY29kZWQgaDEgaDJcbiAgfCBfIC0+IC0xXG5sZXQgY29tcGFyZV9ob3N0X29wdCA9IGNvbXBhcmVfb3B0IGNvbXBhcmVfaG9zdFxuXG5sZXQgY29tcGFyZSB0IHQnID1cbiAgKG1hdGNoIGNvbXBhcmVfaG9zdF9vcHQgdC5ob3N0IHQnLmhvc3Qgd2l0aFxuICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfZGVjb2RlZF9vcHQgdC5zY2hlbWUgdCcuc2NoZW1lIHdpdGhcbiAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IChmdW4gcCBwJyAtPlxuICAgICAgaWYgcCA8IHAnIHRoZW4gLTEgZWxzZSBpZiBwID4gcCcgdGhlbiAxIGVsc2UgMFxuICAgICkgdC5wb3J0IHQnLnBvcnQgd2l0aFxuICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCBVc2VyaW5mby5jb21wYXJlIHQudXNlcmluZm8gdCcudXNlcmluZm8gd2l0aFxuICAgICAgICB8IDAgLT4gKG1hdGNoIFBhdGguY29tcGFyZSB0LnBhdGggdCcucGF0aCB3aXRoXG4gICAgICAgICAgfCAwIC0+IChtYXRjaCBRdWVyeS5jb21wYXJlIHQucXVlcnkgdCcucXVlcnkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfZGVjb2RlZF9vcHQgdC5mcmFnbWVudCB0Jy5mcmFnbWVudFxuICAgICAgICAgICAgfCBjIC0+IGMpXG4gICAgICAgICAgfCBjIC0+IGMpXG4gICAgICAgIHwgYyAtPiBjKVxuICAgICAgfCBjIC0+IGMpXG4gICAgfCBjIC0+IGMpXG4gIHwgYyAtPiBjKVxuXG5sZXQgZXF1YWwgdCB0JyA9IGNvbXBhcmUgdCB0JyA9IDBcblxubGV0IHVuY2FzdF9vcHQgPSBmdW5jdGlvblxuICB8IFNvbWUgaCAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IG5vcm1hbGl6ZSBzY2hlbSB1cmkgPVxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCBzY2hlbSkpIDogU2NoZW1lKSBpblxuICBsZXQgZG9iIGYgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IFNvbWUgKFBjdC51bmxpZnRfZGVjb2RlZCBmIHgpXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgaW4ge3VyaSB3aXRoXG4gICAgICBzY2hlbWU9ZG9iIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgdXJpLnNjaGVtZTtcbiAgICAgIGhvc3Q9IG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgICAgICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBJcHY0X2xpdGVyYWwgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCBob3N0KSlcbiAgICAgICB8IFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBJcHY2X2xpdGVyYWwgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCBob3N0KSlcbiAgICAgICB8IFNvbWUgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IChQY3QudW5jYXN0X2RlY29kZWQgaG9zdCkpKSlcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICB9XG5cbigqKiBDb252ZXJ0IGEgVVJJIHN0cnVjdHVyZSBpbnRvIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZ1xuICAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4zPlxuKilcbmxldCB0b19zdHJpbmcgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID1cbiAgbGV0IHNjaGVtZSA9IG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgIHwgU29tZSBzIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBzKVxuICAgIHwgTm9uZSAtPiBOb25lIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICAoKiBQZXJjZW50IGVuY29kZSBhIGRlY29kZWQgc3RyaW5nIGFuZCBhZGQgaXQgdG8gdGhlIGJ1ZmZlciAqKVxuICBsZXQgYWRkX3BjdF9zdHJpbmcgPyhjb21wb25lbnQ9YFBhdGgpIHggPVxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUGN0LnVuY2FzdF9lbmNvZGVkIChQY3QuZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB4KSlcbiAgaW5cbiAgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIHggLT5cbiAgICAgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5zY2hlbWUgeDtcbiAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOidcbiAgKTtcbiAgKCogVVJJIGhhcyBhIGhvc3QgaWYgYW55IGhvc3QtcmVsYXRlZCBjb21wb25lbnQgaXMgc2V0LiBEZWZhdWx0cyB0byBcIlwiLiAqKVxuICBpZiAobWF0Y2ggdXJpLnVzZXJpbmZvLCB1cmkuaG9zdCwgdXJpLnBvcnQgd2l0aFxuICB8IFNvbWUgXywgXywgXyB8IF8sIFNvbWUgXywgXyB8IF8sIF8sIFNvbWUgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIvL1wiO1xuICAobWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgdXNlcmluZm8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvKSk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnQCdcbiAgKTtcbiAgKG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgKGBIb3N0IGhvc3QpIC0+XG4gICAgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5ob3N0IGhvc3Q7XG4gIHxTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBob3N0XG4gIHxTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdbJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBob3N0O1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXSdcbiAgKTtcbiAgKG1hdGNoIHVyaS5wb3J0IHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgcG9ydCAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoc3RyaW5nX29mX2ludCBwb3J0KVxuICApO1xuICAobWF0Y2ggdXJpLnBhdGggd2l0aCAoKiBIYW5kbGUgcmVsYXRpdmUgcGF0aHMgY29ycmVjdGx5ICopXG4gIHwgW10gLT4gKClcbiAgfCBcIi9cIjo6XyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUGN0LnVuY2FzdF9lbmNvZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgfCBmaXJzdF9zZWdtZW50OjpfIC0+XG4gICAgKG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgICAgfCBTb21lIF8gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnLydcbiAgICAgfCBOb25lIC0+XG4gICAgICAgKCogZW5zdXJlIHJvdW5kdHJpcCBieSBmb3JjaW5nIHJlbGF0aXZlIHBhdGggaW50ZXJwcmV0YXRpb24gbm90IHNjaGVtZSAqKVxuICAgICAgIG1hdGNoIFN0cmluZ2V4dC5maW5kX2Zyb20gZmlyc3Rfc2VnbWVudCB+cGF0dGVybjpcIjpcIiB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIF8gLT4gbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLi9cIlxuICAgICk7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICApO1xuICBRdWVyeS4obWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgICB8IFJhdyAoTm9uZSxfKSB8IEtWIFtdIC0+ICgpXG4gICAgfCBSYXcgKF8sbGF6eSBxKSB8IEtWIHEgLT4gKCogbm9ybWFsaXplIGUuZy4gcGVyY2VudCBjYXBpdGFsaXphdGlvbiAqKVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSB+cGN0X2VuY29kZXIgcSlcbiAgKTtcbiAgKG1hdGNoIHVyaS5mcmFnbWVudCB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgZiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcjJzsgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5mcmFnbWVudCBmXG4gICk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuKCogVmFyaW91cyBhY2Nlc3NvciBmdW5jdGlvbnMsIGFzIHRoZSBleHRlcm5hbCB1cmkgdHlwZSBpcyBhYnN0cmFjdCAgKilcbmxldCBnZXRfZGVjb2RlZF9vcHQgPSBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfFNvbWUgeCAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgeClcbmxldCBzY2hlbWUgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5zY2hlbWVcbmxldCB3aXRoX3NjaGVtZSB1cmkgPVxuICBmdW5jdGlvblxuICB8U29tZSBzY2hlbWUgLT4geyB1cmkgd2l0aCBzY2hlbWU9U29tZSAoUGN0LmNhc3RfZGVjb2RlZCBzY2hlbWUpIH1cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBzY2hlbWU9Tm9uZSB9XG5cbmxldCBob3N0IHVyaSA9XG4gIG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IFNvbWUgaFxuICB8IFNvbWUgKGBIb3N0IGgpIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG5sZXQgaG9zdF93aXRoX2RlZmF1bHQgPyhkZWZhdWx0PVwibG9jYWxob3N0XCIpIHVyaSA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfE5vbmUgLT4gZGVmYXVsdFxuICB8U29tZSBoIC0+IGhcblxubGV0IHVzZXJpbmZvID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1c2VyaW5mbyAtPiBTb21lIChQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBlbmNvZGVkX29mX3VzZXJpbmZvIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm9cbiAgICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3VzZXJpbmZvIH5zY2hlbWU6KFBjdC51bmNhc3RfZGVjb2RlZCBzKSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvKSlcbmxldCB3aXRoX3VzZXJpbmZvIHVyaSB1c2VyaW5mbyA9XG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgdXNlcmluZm89dXNlcmluZm8gfVxuICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cblxubGV0IHVzZXIgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lICh1c2VyLCBfKSAtPiBTb21lIHVzZXJcblxubGV0IHBhc3N3b3JkIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUpIC0+IE5vbmVcbiAgfCBTb21lIChfLCBTb21lIHBhc3MpIC0+IFNvbWUgcGFzc1xubGV0IHdpdGhfcGFzc3dvcmQgdXJpIHBhc3N3b3JkID1cbiAgbGV0IHJlc3VsdCB1c2VyaW5mbyA9IG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgdXNlcmluZm89dXNlcmluZm8gfVxuICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuICBpblxuICBtYXRjaCB1cmkudXNlcmluZm8sIHBhc3N3b3JkIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHVyaVxuICB8IE5vbmUsIFNvbWUgXyAtPiByZXN1bHQgKFNvbWUgKFwiXCIscGFzc3dvcmQpKVxuICB8IFNvbWUgKHVzZXIsXyksIF8gLT4gcmVzdWx0IChTb21lICh1c2VyLCBwYXNzd29yZCkpXG5cbmxldCBwb3J0IHVyaSA9IHVyaS5wb3J0XG5sZXQgd2l0aF9wb3J0IHVyaSBwb3J0ID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHBvcnQ9cG9ydCB9XG4gIHwgTm9uZSAtPiBiZWdpblxuICAgICBtYXRjaCBwb3J0IHdpdGhcbiAgICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Ob25lOyBwb3J0PU5vbmUgfVxuICAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyBwb3J0PXBvcnQgfVxuICBlbmRcblxuKCogUmV0dXJuIHRoZSBwYXRoIGNvbXBvbmVudCAqKVxubGV0IHBhdGggPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgfCBOb25lIC0+IGVuY29kZWRfb2ZfcGF0aCB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGhcbiAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl9wYXRoIH5zY2hlbWU6KFBjdC51bmNhc3RfZGVjb2RlZCBzKSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpXG5sZXQgd2l0aF9wYXRoIHVyaSBwYXRoID1cbiAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcGF0aCBpblxuICBtYXRjaCBob3N0IHVyaSwgcGF0aCB3aXRoXG4gIHwgTm9uZSwgXyB8IFNvbWUgXywgXCIvXCI6Ol8gfCBTb21lIF8sIFtdIC0+IHsgdXJpIHdpdGggcGF0aD1wYXRoIH1cbiAgfCBTb21lIF8sIF8gIC0+IHsgdXJpIHdpdGggcGF0aD1cIi9cIjo6cGF0aCB9XG5cbmxldCBmcmFnbWVudCB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLmZyYWdtZW50XG5sZXQgd2l0aF9mcmFnbWVudCB1cmkgPVxuICBmdW5jdGlvblxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PU5vbmUgfVxuICB8U29tZSBmcmFnIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9U29tZSAoUGN0LmNhc3RfZGVjb2RlZCBmcmFnKSB9XG5cbmxldCBxdWVyeSB1cmkgPSBRdWVyeS5rdiB1cmkucXVlcnlcbmxldCB2ZXJiYXRpbV9xdWVyeSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBRdWVyeS4obWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgfCBSYXcgKHFzLF8pIC0+IHFzXG4gIHwgS1YgW10gLT4gTm9uZVxuICB8IEtWIGt2IC0+IFNvbWUgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZTooc2NoZW1lIHVyaSkgfnBjdF9lbmNvZGVyIGt2KVxuKVxubGV0IGdldF9xdWVyeV9wYXJhbScgdXJpIGsgPSBRdWVyeS4oZmluZCAoa3YgdXJpLnF1ZXJ5KSBrKVxubGV0IGdldF9xdWVyeV9wYXJhbSB1cmkgayA9XG4gIG1hdGNoIGdldF9xdWVyeV9wYXJhbScgdXJpIGsgd2l0aFxuICB8Tm9uZSAtPiBOb25lXG4gIHxTb21lIHYgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIixcIiB2KVxuXG5sZXQgd2l0aF9xdWVyeSB1cmkgcXVlcnkgPSB7IHVyaSB3aXRoIHF1ZXJ5PVF1ZXJ5LktWIHF1ZXJ5IH1cbmxldCBxX3MgcSA9IExpc3QubWFwIChmdW4gKGssdikgLT4gayxbdl0pIHFcbmxldCB3aXRoX3F1ZXJ5JyB1cmkgcXVlcnkgPSB3aXRoX3F1ZXJ5IHVyaSAocV9zIHF1ZXJ5KVxubGV0IGFkZF9xdWVyeV9wYXJhbSB1cmkgcCA9IFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWIChwOjooa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW0nIHVyaSAoayx2KSA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgoayxbdl0pOjooa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW1zIHVyaSBwcyA9IFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWIChwc0Aoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW1zJyB1cmkgcHMgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKHFfcyBwcylAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgcmVtb3ZlX3F1ZXJ5X3BhcmFtIHVyaSBrID0gUXVlcnkuKFxuICB7IHVyaSB3aXRoIHF1ZXJ5PUtWIChMaXN0LmZpbHRlciAoZnVuIChrJyxfKSAtPiBrPD5rJykgKGt2IHVyaS5xdWVyeSkpIH1cbilcblxuKCogQ29uc3RydWN0IGVuY29kZWQgcGF0aCBhbmQgcXVlcnkgY29tcG9uZW50cyAqKVxubGV0IHBhdGhfYW5kX3F1ZXJ5IHVyaSA9XG4gIG1hdGNoIChwYXRoIHVyaSksIChxdWVyeSB1cmkpIHdpdGhcbiAgfFwiXCIsIFtdIC0+IFwiL1wiICgqIFRPRE86IFdoYXQgYWJvdXQgc2FtZSBkb2N1bWVudD8gKC8pICopXG4gIHxcIlwiLCBxIC0+ICgqIFRPRE86IFdoYXQgYWJvdXQgc2FtZSBkb2N1bWVudD8gKC8pICopXG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiLz8lc1wiIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcbiAgfHAsIFtdIC0+IHBcbiAgfHAsIHEgLT5cbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcz8lc1wiIHAgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuXG4oKiBUT0RPOiBmdW5jdGlvbnMgdG8gYWRkIGFuZCByZW1vdmUgZnJvbSBhIFVSSSAqKVxuXG4oKiBSZXNvbHZlIGEgVVJJIHdydCBhIGJhc2UgVVJJIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yPiAqKVxubGV0IHJlc29sdmUgc2NoZW0gYmFzZSB1cmkgPVxuICBsZXQgc2NoZW0gPSBTb21lIChQY3QuY2FzdF9kZWNvZGVkIChtYXRjaCBzY2hlbWUgYmFzZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gIHNjaGVtXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICkpIGluXG4gIG5vcm1hbGl6ZSBzY2hlbVxuICAgIFBhdGguKG1hdGNoIHNjaGVtZSB1cmksIHVzZXJpbmZvIHVyaSwgaG9zdCB1cmkgd2l0aFxuICAgIHwgU29tZSBfLCBfLCBfIC0+XG4gICAgICB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgU29tZSBfLCBfXG4gICAgfCBOb25lLCBfLCBTb21lIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIE5vbmUsIE5vbmUgLT5cbiAgICAgIGxldCB1cmkgPSB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyB1c2VyaW5mbz1iYXNlLnVzZXJpbmZvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWJhc2UuaG9zdDsgcG9ydD1iYXNlLnBvcnR9IGluXG4gICAgICBsZXQgcGF0aF9zdHIgPSBwYXRoIHVyaSBpblxuICAgICAgaWYgcGF0aF9zdHI9XCJcIlxuICAgICAgdGhlbiB7IHVyaSB3aXRoXG4gICAgICAgICAgICAgcGF0aD1iYXNlLnBhdGg7XG4gICAgICAgICAgICAgcXVlcnk9bWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgICAgIHwgUXVlcnkuUmF3IChOb25lLF8pIHwgUXVlcnkuS1YgW10gLT4gYmFzZS5xdWVyeVxuICAgICAgICAgICAgICAgfCBfIC0+IHVyaS5xdWVyeVxuICAgICAgICAgICB9XG4gICAgICBlbHNlIGlmIHBhdGhfc3RyLlswXT0nLydcbiAgICAgIHRoZW4ge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICAgIGVsc2Uge3VyaSB3aXRoXG4gICAgICAgIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyAobWVyZ2UgYmFzZS5ob3N0IGJhc2UucGF0aCB1cmkucGF0aCk7XG4gICAgICB9XG4gICAgKVxuXG5sZXQgY2Fub25pY2FsaXplIHVyaSA9XG4gIGxldCB1cmkgPSByZXNvbHZlIFwiXCIgZW1wdHkgdXJpIGluXG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHVyaS5zY2hlbWUpKSA6IFNjaGVtZSkgaW5cbiAgeyB1cmkgd2l0aFxuICAgIHBvcnQ9U2NoZW1lLmNhbm9uaWNhbGl6ZV9wb3J0IHVyaS5wb3J0O1xuICAgIHBhdGg9U2NoZW1lLmNhbm9uaWNhbGl6ZV9wYXRoIHVyaS5wYXRoO1xuICB9XG5cbmxldCBwcCBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5sZXQgcHBfaHVtIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcblxubW9kdWxlIFBhcnNlciA9IHN0cnVjdFxuICBvcGVuIEFuZ3N0cm9tXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhcl9saXN0IGNoYXJzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHN0cmluZ19vZl9jaGFyIGNoYXJzKVxuXG4gIGxldCBzY2hlbWUgPVxuICAgIGxpZnRcbiAgICAgIChmdW4gcyAtPiBTb21lIChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICh0YWtlX3doaWxlIChmdW4gYyAtPiBjIDw+ICc6JyAmJiBjIDw+ICcvJyAmJiBjIDw+ICc/JyAmJiBjIDw+ICcjJylcbiAgICAgIDwqIGNoYXIgJzonKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBpc19kaWdpdCA9IGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICBsZXQgaGV4X2RpZ2l0ID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IGhleGFkZWNpbWFsID0gbGlmdCBzdHJpbmdfb2ZfY2hhcl9saXN0IChtYW55IGhleF9kaWdpdClcblxuICBsZXQgY19kb3QgPSBjaGFyICcuJ1xuXG4gIGxldCBjX2F0ID0gY2hhciAnQCdcblxuICBsZXQgY19jb2xvbiA9IGNoYXIgJzonXG5cbiAgbGV0IGRlY19vY3RldCA9XG4gICAgdGFrZV93aGlsZTEgKGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpID4+PSBmdW4gbnVtIC0+XG4gICAgaWYgaW50X29mX3N0cmluZyBudW0gPCAyNTYgdGhlblxuICAgICAgcmV0dXJuIG51bVxuICAgIGVsc2VcbiAgICAgIGZhaWwgXCJpbnZhbGlkIG9jdGVjdFwiXG5cbiAgbGV0IGlwdjRfYWRkcmVzcyA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4gdGhyZWUgb25lIC0+IFN0cmluZy5jb25jYXQgXCIuXCIgdGhyZWUgXiBcIi5cIiBeIG9uZSlcbiAgICAgIChjb3VudCAzIChkZWNfb2N0ZXQgPCogY19kb3QpKVxuICAgICAgZGVjX29jdGV0XG5cbiAgKCogLS0gYWZ0ZXIgZG91YmxlIGNvbG9uLCBJUHY0IGRvdHRlZCBub3RhdGlvbiBjb3VsZCBhcHBlYXIgYW55d2hlcmUgKilcbiAgbGV0IGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgZml4IChmdW4gZiAtPlxuICAgICAgICBsaXN0IFsgaXB2NF9hZGRyZXNzIF1cbiAgICAgICAgPHw+IGxpZnQyIChmdW4geCB5IC0+IHggOjogeSkgaGV4YWRlY2ltYWwgKGNfY29sb24gKj4gZiA8fD4gcmV0dXJuIFtdKSlcblxuICBsZXQgZG91YmxlX2NvbG9uIGNvdW50ID1cbiAgICBhZnRlcl9kb3VibGVfY29sb24gPj49IChmdW4gcmVzdCAtPlxuICAgIGxldCBmaWxsZXJfbGVuZ3RoID0gOCAtIGNvdW50IC0gTGlzdC5sZW5ndGggcmVzdCBpblxuICAgIGlmIGZpbGxlcl9sZW5ndGggPD0gMCB0aGVuXG4gICAgICBmYWlsIFwidG9vIG1hbnkgcGFydHMgaW4gSVB2NiBhZGRyZXNzXCJcbiAgICBlbHNlXG4gICAgICByZXR1cm4gKFwiXCIgOjogcmVzdCkpXG4gICAgPHw+IHJldHVybiBbXCJcIl1cblxuICBsZXQgcmVjIHBhcnQgPSBmdW5jdGlvblxuICAgIHwgNyAtPlxuICAgICAgKCogbWF4IDggcGFydHMgaW4gYW4gSVB2NiBhZGRyZXNzICopXG4gICAgICBsaWZ0IChmdW4geCAtPiBbIHggXSkgaGV4YWRlY2ltYWxcbiAgICB8IDYgLT5cbiAgICAgICgqIGFmdGVyIDYgcGFydHMgaXQgY291bGQgZW5kIGluIElQdjQgZG90dGVkIG5vdGF0aW9uICopXG4gICAgICBsaXN0IFsgaXB2NF9hZGRyZXNzIF0gPHw+IGhleF9wYXJ0IDZcbiAgICB8IG4gLT5cbiAgICAgIGhleF9wYXJ0IG5cblxuICBhbmQgaGV4X3BhcnQgbiA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4geCB5IC0+IHggOjogeSlcbiAgICAgIGhleGFkZWNpbWFsXG4gICAgICAoY19jb2xvbiAqPiAoY19jb2xvbiAqPiBkb3VibGVfY29sb24gKG4gKyAxKSA8fD4gcGFydCAobiArIDEpKSlcblxuICBsZXQgcmVjIHNwbGl0X3dpdGggZiB4cyA9XG4gICAgbWF0Y2ggeHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIFtdLCBbXVxuICAgIHwgeSA6OiB5cyAtPlxuICAgICAgaWYgZiB5IHRoZW5cbiAgICAgICAgbGV0IHpzLCB0cyA9IHNwbGl0X3dpdGggZiB5cyBpblxuICAgICAgICB5IDo6IHpzLCB0c1xuICAgICAgZWxzZVxuICAgICAgICBbXSwgeHNcblxuICBsZXQgaXB2NiA9XG4gICAgbGV0IGZvcm1hdF9hZGRyIHNlZ21lbnRzID1cbiAgICAgIGxldCBiZWZvcmVfZG91YmxlX2NvbG9uLCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgICAgICBzcGxpdF93aXRoIChmdW4gc2VnbWVudCAtPiBzZWdtZW50IDw+IFwiXCIpIHNlZ21lbnRzXG4gICAgICBpblxuICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5jb25jYXQgXCI6XCIgYmVmb3JlX2RvdWJsZV9jb2xvbiBpblxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIG1hdGNoIGFmdGVyX2RvdWJsZV9jb2xvbiB3aXRoXG4gICAgICAgIHwgXCJcIiA6OiB4cyAtPlxuICAgICAgICAgIGJlZm9yZSBeIFwiOjpcIiBeIFN0cmluZy5jb25jYXQgXCI6XCIgeHNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgYmVmb3JlXG4gICAgICBpblxuICAgICAgcmVzXG4gICAgaW5cbiAgICBsaWZ0IGZvcm1hdF9hZGRyIChjX2NvbG9uICo+IGNfY29sb24gKj4gZG91YmxlX2NvbG9uIDAgPHw+IHBhcnQgMClcblxuICBsZXQgaXB2Nl9hZGRyZXNzID1cbiAgICAoY2hhciAnWycpICo+IGlwdjYgPCogKGNoYXIgJ10nKVxuXG4gIGxldCBwY3RfZW5jb2RlZCA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4gcGN0IGRpZ2l0cyAtPiBzdHJpbmdfb2ZfY2hhcl9saXN0IChwY3QgOjogZGlnaXRzKSlcbiAgICAgIChjaGFyICclJylcbiAgICAgIChjb3VudCAyIGhleF9kaWdpdClcblxuICBsZXQgc3ViX2RlbGltcyA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnIScgfCAnJCcgfCAnJicgfCAnXFwnJyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICcsJyB8ICc7JyB8ICc9JyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IHVucmVzZXJ2ZWQgPVxuICAgICgqIFwiW0EtWmEtejAtOS0uX35dXCIgKilcbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICctJyB8ICcuJyB8ICdfJyB8ICd+JyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IHJlZ19uYW1lID1cbiAgICBsaWZ0XG4gICAgICAoU3RyaW5nLmNvbmNhdCBcIlwiKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIF0pKVxuXG4gIGxldCBob3N0ID1cbiAgICBjaG9pY2VcbiAgICAgIFsgaXB2NF9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjRfbGl0ZXJhbCBoKVxuICAgICAgOyBpcHY2X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2Nl9saXRlcmFsIGgpXG4gICAgICA7IHJlZ19uYW1lID4+fCAoZnVuIHMgLT4gYEhvc3QgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKCogVE9ETyhkaW5vc2F1cmUpOiBBY2NvcmRpbmcgdG8gUkZDMzk4NjpcblxuICAgICAgICAgaG9zdCAgICAgICAgPSBJUC1saXRlcmFsIC8gSVB2NGFkZHJlc3MgLyByZWctbmFtZVxuICAgICAgICAgSVAtbGl0ZXJhbCAgPSBcIltcIiAoIElQdjZhZGRyZXNzIC8gSVB2RnV0dXJlICApIFwiXVwiXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcblxuICAgICAgICAgSVB2RnV0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZC4gV2Ugc2hvdWxkIGhhbmRsZSBpdDpcblxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG4gICAgICAgKilcbiAgICAgIF1cblxuICBsZXQgdXNlcmluZm8gPVxuICAgIGxpZnRcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgcyA9IFN0cmluZy5jb25jYXQgXCJcIiB4IGluXG4gICAgICAgIFNvbWUgKFVzZXJpbmZvLnVzZXJpbmZvX29mX2VuY29kZWQgcykpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gY19jb2xvblxuICAgICAgICAgICAgXSlcbiAgICAgIDwqIGNfYXQpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IHBvcnQgPVxuICAgIHBlZWtfY2hhciA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgJzonIC0+XG4gICAgICBjX2NvbG9uICo+IHRha2Vfd2hpbGUgaXNfZGlnaXQgPj58IGZ1biBwb3J0IC0+XG4gICAgICBsZXQgZGVjb2RlZCA9IFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcG9ydCkgaW5cbiAgICAgICh0cnkgU29tZSAoaW50X29mX3N0cmluZyAoUGN0LnVuY2FzdF9kZWNvZGVkIGRlY29kZWQpKSB3aXRoIF8gLT4gTm9uZSlcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT5cbiAgICAgIHJldHVybiBOb25lXG5cbiAgbGV0IGF1dGhvcml0eSA9XG4gICAgc3RyaW5nIFwiLy9cIlxuICAgICo+IGxpZnQzXG4gICAgICAgICAoZnVuIHVzZXJpbmZvIGhvc3QgcG9ydCAtPlxuICAgICAgICAgICB1c2VyaW5mbywgU29tZSBob3N0LCBwb3J0KVxuICAgICAgICAgdXNlcmluZm9cbiAgICAgICAgIGhvc3RcbiAgICAgICAgIHBvcnRcbiAgICA8fD4gcmV0dXJuIChOb25lLCBOb25lLCBOb25lKVxuXG4gIGxldCBwYXRoID1cbiAgICBsaWZ0XG4gICAgICBQYXRoLnBhdGhfb2ZfZW5jb2RlZFxuICAgICAgKHRha2Vfd2hpbGUgKGZ1bmN0aW9uICc/JyB8ICcjJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkpXG5cbiAgbGV0IHF1ZXJ5ID1cbiAgICBsaWZ0XG4gICAgICBRdWVyeS5vZl9yYXdcbiAgICAgIChjaGFyICc/JyAqPiB0YWtlX3RpbGwgKGZ1bmN0aW9uICcjJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkpXG4gICAgPHw+IHJldHVybiAoUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKSlcblxuICBsZXQgZnJhZ21lbnQgPVxuICAgIGxpZnRcbiAgICAgIChmdW4gcyAtPiBTb21lIChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgIChjaGFyICcjJyAqPiB0YWtlX3doaWxlIChmdW4gXyAtPiB0cnVlKSlcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgX3VyaV9yZWZlcmVuY2UgPVxuICAgIGxpZnQ0XG4gICAgICAoZnVuIHNjaGVtZSAodXNlcmluZm8sIGhvc3QsIHBvcnQpIHBhdGggcXVlcnkgZnJhZ21lbnQgLT5cbiAgICAgICAgbm9ybWFsaXplIHNjaGVtZSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9KVxuICAgICAgc2NoZW1lXG4gICAgICBhdXRob3JpdHlcbiAgICAgIHBhdGhcbiAgICAgIHF1ZXJ5XG4gICAgPCo+IGZyYWdtZW50XG5cbiAgKCogWFhYKGFubW9udGVpcm8pOiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zIHdpdGggdGhlIG9sZCByZWdleCBwYXJzZXIsIHdlXG4gICAqIG9ubHkgcGFyc2UgdW50aWwgdGhlIGZpcnN0IG5ld2xpbmUgY2hhcmFjdGVyIGFuZCBkcm9wIGV2ZXJ5dGhpbmcgZWxzZVxuICAgKiBhZnRlciB0aGF0ICopXG4gIGxldCB1cmlfcmVmZXJlbmNlID1cbiAgICB0YWtlX3doaWxlIChmdW5jdGlvbiB8ICdcXG4nIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSA+PnwgZnVuIHMgLT5cbiAgICAgIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgX3VyaV9yZWZlcmVuY2UgcyB3aXRoXG4gICAgICB8IE9rIHQgLT4gdFxuICAgICAgfCBFcnJvciBfIC0+XG4gICAgICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgICAgICBlbXB0eVxuZW5kXG5cbmxldCBkZWNvZGVfaG9zdCBob3N0ID1cbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaG9zdCBob3N0IHdpdGhcbiAgfCBPayBwYXJzZWQgLT4gcGFyc2VkXG4gIHwgRXJyb3IgXyAtPlxuICAgIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmlwdjYgaG9zdCB3aXRoXG4gICAgfCBPayBwYXJzZWQgLT4gKGBJcHY2X2xpdGVyYWwgcGFyc2VkKVxuICAgIHwgRXJyb3IgXyAtPiAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgaG9zdCkpXG5cbigqIE1ha2UgYSBVUkkgcmVjb3JkLiBUaGlzIGlzIGEgYml0IG1vcmUgaW5lZmZpY2llbnQgdGhhbiBpdCBuZWVkcyB0byBiZSBkdWUgdG8gdGhlXG4gKiBjYXN0aW5nL3VuY2FzdGluZyAod2hpY2ggaXNuJ3QgZnVsbHkgaWRlbnRpdHkgZHVlIHRvIHRoZSBvcHRpb24gYm94KSwgYnV0IGl0IGlzXG4gKiBubyBiaWcgZGVhbCBmb3Igbm93LlxuKilcbmxldCBtYWtlID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICB8U29tZSB4IC0+IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgeCkgfE5vbmUgLT4gTm9uZSBpblxuICBsZXQgaG9zdCA9IG1hdGNoIHVzZXJpbmZvLCBob3N0LCBwb3J0IHdpdGhcbiAgICB8IF8sIFNvbWUgXywgXyB8IE5vbmUsIE5vbmUsIE5vbmUgLT4gaG9zdFxuICAgIHwgU29tZSBfLCBOb25lLCBfIHwgXywgTm9uZSwgU29tZSBfIC0+IFNvbWUgXCJcIlxuICBpblxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICBsZXQgcGF0aCA9IG1hdGNoIHBhdGggd2l0aFxuICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICBtYXRjaCBob3N0LCBwYXRoIHdpdGhcbiAgICAgIHwgTm9uZSwgXyB8IFNvbWUgXywgXCIvXCI6Ol8gfCBTb21lIF8sIFtdIC0+IHBhdGhcbiAgICAgIHwgU29tZSBfLCBfICAtPiBcIi9cIjo6cGF0aFxuICBpblxuICBsZXQgcXVlcnkgPSBtYXRjaCBxdWVyeSB3aXRoXG4gICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICBpblxuICBsZXQgc2NoZW1lID0gZGVjb2RlIHNjaGVtZSBpblxuICBub3JtYWxpemUgc2NoZW1lXG4gICAgeyBzY2hlbWU7IHVzZXJpbmZvO1xuICAgICAgaG9zdCA9XG4gICAgICAgIChtYXRjaCBob3N0IHdpdGhcbiAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgfCBOb25lIC0+IE5vbmUpO1xuICAgICAgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbmxldCB3aXRoX2hvc3QgdXJpIGhvc3QgPVxuICB7IHVyaSB3aXRoXG4gICAgaG9zdCA9IChtYXRjaCBob3N0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgfVxuXG5sZXQgd2l0aF91cmkgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCB1cmkgPVxuICBsZXQgd2l0aF9wYXRoX29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3BhdGggdSBcIlwiXG4gICAgfCBTb21lIHAgLT4gd2l0aF9wYXRoIHUgcFxuICBpblxuICBsZXQgd2l0aF9xdWVyeV9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9xdWVyeSB1IFtdXG4gICAgfCBTb21lIHEgLT4gd2l0aF9xdWVyeSB1IHFcbiAgaW5cbiAgbGV0IHdpdGhfIGYgbyB1ID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gdVxuICAgIHwgU29tZSB4IC0+IGYgdSB4XG4gIGluXG4gIHdpdGhfIHdpdGhfc2NoZW1lIHNjaGVtZSB1cmlcbiAgfD4gd2l0aF8gd2l0aF91c2VyaW5mbyB1c2VyaW5mb1xuICB8PiB3aXRoXyB3aXRoX2hvc3QgaG9zdFxuICB8PiB3aXRoXyB3aXRoX3BvcnQgcG9ydFxuICB8PiB3aXRoXyB3aXRoX3BhdGhfb3B0IHBhdGhcbiAgfD4gd2l0aF8gd2l0aF9xdWVyeV9vcHQgcXVlcnlcbiAgfD4gd2l0aF8gd2l0aF9mcmFnbWVudCBmcmFnbWVudFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICAoKiBUbyBwcmVzZXJ2ZSB0aGUgb2xkIHJlZ2V4IHBhcnNlcidzIGJlaGF2aW9yLCB3ZSBvbmx5IHBhcnNlIGEgcHJlZml4LCBhbmRcbiAgICogc3RvcCB3aGVuZXZlciB3ZSBjYW4ndCBwYXJzZSBtb3JlLiAqKVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6UHJlZml4IFBhcnNlci51cmlfcmVmZXJlbmNlIHMgd2l0aFxuICB8IE9rIHQgLT4gdFxuICB8IEVycm9yIF8gLT5cbiAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICBlbXB0eVxuXG5tb2R1bGUgQWJzb2x1dGVfaHR0cCA9IHN0cnVjdFxuICB0eXBlIHVyaSA9IHRcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVtZSA6IFsgYEh0dHAgfCBgSHR0cHMgXTtcbiAgICAgIHVzZXJpbmZvOiBVc2VyaW5mby50IG9wdGlvbjtcbiAgICAgIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgYEhvc3Qgb2YgUGN0LmRlY29kZWRdO1xuICAgICAgcG9ydCA6IGludCBvcHRpb247XG4gICAgICBwYXRoIDogUGF0aC50O1xuICAgICAgcXVlcnkgOiBRdWVyeS50O1xuICAgICAgZnJhZ21lbnQgOiBQY3QuZGVjb2RlZCBvcHRpb25cbiAgICB9XG5cbiAgbGV0ICggbGV0KiApID0gUmVzdWx0LmJpbmRcblxuICBsZXQgdG9fdXJpIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0gPVxuICAgIGxldCBzY2hlbWUgPVxuICAgICAgbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgIHwgYEh0dHAgLT4gUGN0LmNhc3RfZGVjb2RlZCBcImh0dHBcIlxuICAgICAgfCBgSHR0cHMgLT4gUGN0LmNhc3RfZGVjb2RlZCBcImh0dHBzXCJcbiAgICBpblxuICAgICh7IHNjaGVtZSA9IFNvbWUgc2NoZW1lO1xuICAgICAgIHVzZXJpbmZvO1xuICAgICAgIGhvc3QgPSBTb21lIGhvc3Q7XG4gICAgICAgcG9ydDtcbiAgICAgICBwYXRoO1xuICAgICAgIHF1ZXJ5O1xuICAgICAgIGZyYWdtZW50IH0gOiB1cmkpXG4gIDs7XG5cbiAgbGV0IG9mX3VyaSAoeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfTogdXJpKSA9XG4gICAgbGV0KiBzY2hlbWUgPVxuICAgICAgbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFcnJvciAoYE1zZyBcIk5vIHNjaGVtZSBwcmVzZW50IGluIFVSSVwiKVxuICAgICAgfCBTb21lIHNjaGVtZSAtPlxuICAgICAgICAobWF0Y2ggUGN0LnVuY2FzdF9kZWNvZGVkIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFwiaHR0cFwiIC0+IE9rIGBIdHRwXG4gICAgICAgICB8IFwiaHR0cHNcIiAtPiBPayBgSHR0cHNcbiAgICAgICAgIHwgdW5zdXBwb3J0ZWRfc2NoZW1lIC0+XG4gICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgKGBNc2dcbiAgICAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIk9ubHkgaHR0cCBhbmQgaHR0cHMgVVJJcyBhcmUgc3VwcG9ydGVkLiAlcyBpcyBpbnZhbGlkLlwiXG4gICAgICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWRfc2NoZW1lKSkpXG4gICAgaW5cbiAgICBsZXQqIGhvc3QgPSBPcHRpb24udG9fcmVzdWx0IH5ub25lOihgTXNnIFwiaG9zdCBpcyByZXF1aXJlZCBmb3IgSFRUUChTKSB1cmlzXCIpIGhvc3QgaW5cbiAgICBPayB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9XG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzID0gbWF0Y2ggb2Zfc3RyaW5nIHMgfD4gb2ZfdXJpIHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgKGBNc2cgZXJyb3IpIC0+IGZhaWx3aXRoIGVycm9yXG5cbiAgbGV0IHRvX3N0cmluZyA/cGN0X2VuY29kZXIgdCA9IHRvX3VyaSB0IHw+IHRvX3N0cmluZyA/cGN0X2VuY29kZXJcblxuICBsZXQgbm9ybWFsaXplIHQgPVxuICAgIHsgdCB3aXRoXG4gICAgICBob3N0ID0gbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICAgICB8IChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICAoYElwdjRfbGl0ZXJhbCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBob3N0KSlcbiAgICAgICB8IChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICAoYElwdjZfbGl0ZXJhbCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBob3N0KSlcbiAgICAgICB8IChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIChQY3QudW5jYXN0X2RlY29kZWQgaG9zdCkpKSlcbiAgICB9XG5cbiAgbGV0IG1ha2UgfnNjaGVtZSB+aG9zdCA/dXNlcmluZm8gP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gICAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgICB8U29tZSB4IC0+IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgeCkgfE5vbmUgLT4gTm9uZSBpblxuICAgIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgICBsZXQgcGF0aCA9IG1hdGNoIHBhdGggd2l0aFxuICAgICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgICBtYXRjaCBwYXRoIHdpdGhcbiAgICAgICAgfCAgXCIvXCI6Ol8gfCAgW10gLT4gcGF0aFxuICAgICAgICB8IF8gIC0+IFwiL1wiOjpwYXRoXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBtYXRjaCBxdWVyeSB3aXRoXG4gICAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgICBpblxuICAgIG5vcm1hbGl6ZVxuICAgICAgeyBzY2hlbWU7XG4gICAgICAgIHVzZXJpbmZvO1xuICAgICAgICBob3N0PSBkZWNvZGVfaG9zdCBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxuICBsZXQgaG9zdCB0ID1cbiAgICBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgIHwgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gaFxuICAgIHwgKGBIb3N0IGgpIC0+IChQY3QudW5jYXN0X2RlY29kZWQgaClcblxuICBsZXQgc2NoZW1lIHQgPSB0LnNjaGVtZVxuZW5kXG4iLCJvcGVuIFVyaVxuXG5tb2R1bGUgRGVyaXZlZCA9XG5zdHJ1Y3RcblxuXHRvcGVuIFNleHBsaWIwLlNleHBfY29udlxuXG5cdHR5cGUgY29tcG9uZW50ID0gW1xuXHQgIHwgYFNjaGVtZVxuXHQgIHwgYEF1dGhvcml0eVxuXHQgIHwgYFVzZXJpbmZvICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYFBhdGhcblx0ICB8IGBRdWVyeVxuXHQgIHwgYFF1ZXJ5X2tleVxuXHQgIHwgYFF1ZXJ5X3ZhbHVlXG5cdCAgfCBgRnJhZ21lbnRcbiAgICAgICAgICB8IGBHZW5lcmljXG4gICAgICAgICAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpXG5cdF0gW0BAZGVyaXZpbmcgc2V4cF1cblxuXHR0eXBlIHQgPSB7XG4gICAgICAgICAgc2NoZW1lOiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHVzZXJpbmZvOiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIGhvc3Q6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcG9ydDogaW50IG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwYXRoOiBzdHJpbmcgW0BkZWZhdWx0IFwiXCJdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcXVlcnk6IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdCBbQHNleHAubGlzdF07XG4gICAgICAgICAgZnJhZ21lbnQ6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF1cblx0fSBbQEBkZXJpdmluZyBzZXhwXVxuXG5lbmRcblxub3BlbiBEZXJpdmVkXG5cbmxldCBjb21wb25lbnRfb2Zfc2V4cCA9IGNvbXBvbmVudF9vZl9zZXhwXG5sZXQgc2V4cF9vZl9jb21wb25lbnQgPSBzZXhwX29mX2NvbXBvbmVudFxuXG5sZXQgdF9vZl9zZXhwIHNleHAgPVxuXHRsZXQgdCA9IHRfb2Zfc2V4cCBzZXhwIGluXG5cdFVyaS5tYWtlXG5cdFx0P3NjaGVtZTp0LnNjaGVtZVxuXHRcdD91c2VyaW5mbzp0LnVzZXJpbmZvXG5cdFx0P2hvc3Q6dC5ob3N0XG5cdFx0P3BvcnQ6dC5wb3J0XG5cdFx0fnBhdGg6dC5wYXRoXG5cdFx0fnF1ZXJ5OnQucXVlcnlcblx0XHQ/ZnJhZ21lbnQ6dC5mcmFnbWVudFxuXHRcdCgpXG5cbmxldCBzZXhwX29mX3QgdCA9XG5cdHNleHBfb2ZfdCB7XG5cdFx0c2NoZW1lID0gc2NoZW1lIHQ7XG5cdFx0dXNlcmluZm8gPSB1c2VyaW5mbyB0O1xuXHRcdGhvc3QgPSBob3N0IHQ7XG5cdFx0cG9ydCA9IHBvcnQgdDtcblx0XHRwYXRoID0gcGF0aCB0O1xuXHRcdHF1ZXJ5ID0gcXVlcnkgdDtcblx0XHRmcmFnbWVudCA9IGZyYWdtZW50IHRcblx0fVxuXG50eXBlIGNvbXBvbmVudCA9IFVyaS5jb21wb25lbnRcbmxldCBjb21wYXJlIGEgYiA9IFVyaS5jb21wYXJlIGEgYlxubGV0IGVxdWFsIGEgYiA9IFVyaS5lcXVhbCBhIGJcbnR5cGUgdCA9IFVyaS50XG4iLCJvcGVuIEpzX29mX29jYW1sXG5vcGVuIENvcmVcblxubGV0IGlzX3ZhbGlkX2lkIHMgPVxuICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiXG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgbWF0Y2ggcy5bMF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBmYWxzZVxuICAgIHwgXyAtPlxuICAgICAgU3RyaW5nLmZvcl9hbGwgcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpKVxuOztcblxubGV0IGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSA9IGlzX3ZhbGlkX2lkIG5hbWUgJiYgbm90IChTZXQubWVtIHNlZW4gbmFtZSlcblxubGV0IHJlYyBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgbGlzdCA9XG4gIG1hdGNoIChsaXN0IDogU2V4cC50IGxpc3QpIHdpdGhcbiAgfCBbXSAtPiBTb21lIChMaXN0LnJldiByZXZfYWNjKVxuICB8IEF0b20gbmFtZSA6OiByZXN0IHdoZW4gaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lIC0+XG4gICAgbGV0IHJldl9hY2MgPSAobmFtZSwgTm9uZSkgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IExpc3QgWyBBdG9tIG5hbWU7IHYgXSA6OiByZXN0IHdoZW4gaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lIC0+XG4gICAgbGV0IHJldl9hY2MgPSAobmFtZSwgU29tZSB2KSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGFueV9vZl9zZXhwID0gZnVuY3Rpb25cbiAgfCBTZXhwLkF0b20gcyAtPiBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcylcbiAgfCBTZXhwLkxpc3QgWyBBdG9tIG5hbWU7IHYgXSAtPiBKcy5VbnNhZmUub2JqIFt8IG5hbWUsIGFueV9vZl9zZXhwIHYgfF1cbiAgfCBTZXhwLkxpc3QgbCAtPlxuICAgIChtYXRjaCBrZXlfdmFsdWVfc2hhcGUgfnNlZW46U3RyaW5nLlNldC5lbXB0eSB+cmV2X2FjYzpbXSBsIHdpdGhcbiAgICAgfCBOb25lIC0+IExpc3QubWFwIGwgfmY6YW55X29mX3NleHAgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBbXSAtPiBKcy5hcnJheSBbfHxdIHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIGwgLT5cbiAgICAgICBKcy5VbnNhZmUub2JqXG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgbmFtZSwgU29tZSB2IC0+IG5hbWUsIGFueV9vZl9zZXhwIHZcbiAgICAgICAgICAgIHwgbmFtZSwgTm9uZSAtPiBuYW1lLCBKcy5VbnNhZmUuaW5qZWN0IEpzLm51bGwpXG4gICAgICAgICAgfD4gQXJyYXkub2ZfbGlzdCkpXG47O1xuXG5sZXQgbG9nX3Mgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChhbnlfb2Zfc2V4cCBzZXhwKVxubGV0IGxvZ19zX2FzX3N0cmluZyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApKVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgdSA9IHsgc29tZV9uYW1lIDogc3RyaW5nIH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IEZvb1xuICAgICAgfCBCYXIgb2ZcbiAgICAgICAgICB7IGZpZWxkMSA6IHVcbiAgICAgICAgICA7IGZpZWxkMiA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG4gIGluXG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBvcGVuIE0gaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCAoc2V4cF9vZl90IEZvbykpKTtcbiAgWyVleHBlY3Qge3wgXCJGb29cIiB8fV07XG4gIHByaW50X2VuZGxpbmVcbiAgICAodG9fc3RyaW5nXG4gICAgICAgKGFueV9vZl9zZXhwXG4gICAgICAgICAgKHNleHBfb2ZfdFxuICAgICAgICAgICAgIChCYXIgeyBmaWVsZDEgPSB7IHNvbWVfbmFtZSA9IFwiZGVidWdcIiB9OyBmaWVsZDIgPSBTb21lIFwib3RoZXIgc3RyaW5nXCIgfSkpKSk7XG4gIFslZXhwZWN0IHt8IHtcIkJhclwiOm51bGwsXCJmaWVsZDFcIjp7XCJzb21lX25hbWVcIjpcImRlYnVnXCJ9LFwiZmllbGQyXCI6W1wib3RoZXIgc3RyaW5nXCJdfSB8fV1cbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcImR1cGxpY2F0ZSBrZXlzIGFyZSBkaXNwbGF5ZWQgY29ycmVjdGx5XCIgPVxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzID0ge3wgKChBIEIpIChBIEMpKSB8fSB8PiBTZXhwLm9mX3N0cmluZyBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cykpO1xuICBbJWV4cGVjdCB7fCBbe1wiQVwiOlwiQlwifSx7XCJBXCI6XCJDXCJ9XSB8fV1cbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcIm5vIHN0YWNrIG92ZXJmbG93XCIgPVxuICBsZXQgYSA9IEFycmF5LmluaXQgMTAwMDAgfmY6KGZ1biBpIC0+IHNwcmludGYgXCJmJWRcIiBpLCBpKSBpblxuICBsZXQgc2V4cCA9IFslc2V4cF9vZjogKHN0cmluZyAqIGludCkgYXJyYXldIGEgaW5cbiAgbGV0IHggPSBhbnlfb2Zfc2V4cCBzZXhwIGluXG4gIHByaW50ZiBcIiVkXCIgKEpzLlVuc2FmZS5jb2VyY2UgeCkjIy5mOTk5O1xuICBbJWV4cGVjdCB7fCA5OTkgfH1dXG47O1xuIiwibW9kdWxlIEFzeW5jX2pzX2RlYnVnID0gRGVidWdcbm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBpbmNsdWRlIFVyaVxuXG4gIGxldCBzZXhwX29mX3QgPSBVcmlfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgV2Vic29ja2V0X2Nvbm5lY3Rpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBBc3luY19ycGNfa2VybmVsLlJwYy5Db25uZWN0aW9uXG5cbiAgdHlwZSAoJ3Jlc3QsICdpbXBsZW1lbnRhdGlvbnMpIGNsaWVudF90ID1cbiAgICA/dXJpOlVyaS50XG4gICAgLT4gP2hlYXJ0YmVhdF9jb25maWc6VC5IZWFydGJlYXRfY29uZmlnLnRcbiAgICAtPiA/ZGVzY3JpcHRpb246SW5mby50XG4gICAgLT4gP2ltcGxlbWVudGF0aW9uczonaW1wbGVtZW50YXRpb25zIFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy50XG4gICAgLT4gJ3Jlc3RcblxuICBtb2R1bGUgQ2xvc2VfY29kZSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2V2ZW50IDogXyBXZWJTb2NrZXRzLmNsb3NlRXZlbnQgSnMudCAtPiB0XG4gICAgdmFsIG5vcm1hbF9jbG9zdXJlIDogdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIGNsb3NlX2V2ZW50X2NvZGUgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSA9IFtdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCBHb2luZ19hd2F5XG4gICAgICB8IFByb3RvY29sX2Vycm9yXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IEFibm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWdcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgU2VydmljZV9yZXN0YXJ0XG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCBCYWRfZ2F0ZXdheVxuICAgICAgfCBUTFNfaGFuZHNoYWtlXG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBvZiBjbG9zZV9ldmVudF9jb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBvZiBjbG9zZV9ldmVudF9jb2RlXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwXVxuXG4gICAgbGV0IG5vcm1hbF9jbG9zdXJlID0gTm9ybWFsX2Nsb3N1cmVcblxuICAgIGxldCBvZl9pbnQgPSBmdW5jdGlvblxuICAgICAgfCAxMDAwIC0+IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDEgLT4gR29pbmdfYXdheVxuICAgICAgfCAxMDAyIC0+IFByb3RvY29sX2Vycm9yXG4gICAgICB8IDEwMDMgLT4gVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCAxMDA1IC0+IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCAxMDA2IC0+IEFibm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwNyAtPiBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCAxMDA4IC0+IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgMTAwOSAtPiBNZXNzYWdlX3Rvb19iaWdcbiAgICAgIHwgMTAxMCAtPiBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCAxMDExIC0+IEludGVybmFsX2Vycm9yXG4gICAgICB8IDEwMTIgLT4gU2VydmljZV9yZXN0YXJ0XG4gICAgICB8IDEwMTMgLT4gVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IDEwMTQgLT4gQmFkX2dhdGV3YXlcbiAgICAgIHwgMTAxNSAtPiBUTFNfaGFuZHNoYWtlXG4gICAgICB8IGNvZGUgLT5cbiAgICAgICAgaWYgY29kZSA+PSAzMDAwICYmIGNvZGUgPD0gNDk5OVxuICAgICAgICB0aGVuIFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgICAgIGVsc2UgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V2ZW50IGNsb3NlX2V2ZW50ID0gb2ZfaW50IGNsb3NlX2V2ZW50IyMuY29kZVxuXG4gICAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IE5vcm1hbF9jbG9zdXJlIC0+IDEwMDBcbiAgICAgIHwgR29pbmdfYXdheSAtPiAxMDAxXG4gICAgICB8IFByb3RvY29sX2Vycm9yIC0+IDEwMDJcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YSAtPiAxMDAzXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZCAtPiAxMDA1XG4gICAgICB8IEFibm9ybWFsX2Nsb3N1cmUgLT4gMTAwNlxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YSAtPiAxMDA3XG4gICAgICB8IFBvbGljeV92aW9sYXRpb24gLT4gMTAwOFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgLT4gMTAwOVxuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvbiAtPiAxMDEwXG4gICAgICB8IEludGVybmFsX2Vycm9yIC0+IDEwMTFcbiAgICAgIHwgU2VydmljZV9yZXN0YXJ0IC0+IDEwMTJcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyIC0+IDEwMTNcbiAgICAgIHwgQmFkX2dhdGV3YXkgLT4gMTAxNFxuICAgICAgfCBUTFNfaGFuZHNoYWtlIC0+IDEwMTVcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJ0b19pbnQgLT4gb2ZfaW50IHJvdW5kLXRyaXBcIiA9XG4gICAgICBMaXN0Lml0ZXIgYWxsIH5mOihmdW4gdCAtPiBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gKG9mX2ludCAodG9faW50IHQpKSB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY2xvc2Vfd2Vic29ja2V0ICh3ZWJzb2NrZXQgOiBXZWJTb2NrZXRzLndlYlNvY2tldCBKcy50KSByZWFzb24gPVxuICAgICgqIFtjbG9zZV93aXRoQ29kZUFuZFJlYXNvbl0gZG9lcyBub3RoaW5nIGlmIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgQ2xvc2VkLiAqKVxuICAgIGxldCBjbG9zZSByZWFzb24gPVxuICAgICAgKCogVGhlIGNvZGUgbXVzdCBiZSBlaXRoZXIgMTAwMCAoTm9ybWFsX2Nsb3N1cmUpLCBvciBiZXR3ZWVuIDMwMDAgYW5kIDQ5OTlcbiAgICAgICAgIChVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUpLiAqKVxuICAgICAgd2Vic29ja2V0IyNjbG9zZV93aXRoQ29kZUFuZFJlYXNvblxuICAgICAgICBDbG9zZV9jb2RlLih0b19pbnQgbm9ybWFsX2Nsb3N1cmUpXG4gICAgICAgIChKcy5zdHJpbmcgcmVhc29uKVxuICAgIGluXG4gICAgbWF0Y2ggY2xvc2UgcmVhc29uIHdpdGhcbiAgICB8ICgpIC0+ICgpXG4gICAgfCBleGNlcHRpb24gKF8gOiBFeG4udCkgLT5cbiAgICAgICgqIHRoaXMgY2FuIGZhaWwgaWYgW3JlYXNvbl0gaXMgdG9vIGxvbmcgb3IgY29udGFpbnMgaW52YWxpZCBVVEY4ICopXG4gICAgICBjbG9zZSBcImNsb3NlLXJlYXNvbi13YXMtdG9vLWxvbmctb3ItY29udGFpbnMtaW52YWxpZC11dGY4XCJcbiAgOztcblxuICBsZXQgY29ubmVjdF93ZWJzb2NrZXQgdXJsIH5mcm9tX3NlcnZlciB+dG9fc2VydmVyID1cbiAgICBtYXRjaCBuZXclanMgV2ViU29ja2V0cy53ZWJTb2NrZXQgKEpzLnN0cmluZyAoVXJpLnRvX3N0cmluZyB1cmwpKSB3aXRoXG4gICAgfCBleGNlcHRpb24gSnMuRXJyb3IgZXhuIC0+XG4gICAgICAoKiBlLmcuIFNFQ1VSSVRZX0VSUiwgdGhvdWdoIG5vdGUgdGhhdCBlLmcuIGNvbm5lY3RpbmcgdG8gd3M6Ly8gZnJvbSBhIGh0dHBzOi8vIHBhZ2VcbiAgICAgICAgIGluIGNocm9tZSBzZWVtcyB0byBtYW5pZmVzdCBhcyBzdWNjZXNzZnVsIGNvbnN0cnVjdGlvbiBidXQgaW1tZWRpYXRlIGNsb3N1cmVcbiAgICAgICAgIChzZWUgYmVsb3cpLiAgKilcbiAgICAgIHJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIChKcy50b19zdHJpbmcgZXhuIyMubWVzc2FnZSkpXG4gICAgfCBleGNlcHRpb24gZXhuIC0+IHJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IHdlYnNvY2tldCAtPlxuICAgICAgbGV0IGNvbm5lY3RlZF9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBjbGVhbnVwIH5yZWFzb24gPVxuICAgICAgICAoKiBJZiB3ZSBoYXZlbid0IGNvbm5lY3RlZCB5ZXQsIHRoZW4gY29ubmVjdGluZyBqdXN0IGZhaWxlZC4gT3RoZXJ3aXNlIGl0IHdhcyB0aGVcbiAgICAgICAgICAgY2xvc3VyZSBvZiBhbiBleGlzdGluZyBjb25uZWN0aW9uLiAqKVxuICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKEVycm9yIHJlYXNvbik7XG4gICAgICAgICgqIFtQaXBlLmNsb3NlXSBhbmQgW1dlYlNvY2tldC5jbG9zZV0gYXJlIGFsbCBpZGVtcG90ZW50LiAqKVxuICAgICAgICBQaXBlLmNsb3NlIGZyb21fc2VydmVyO1xuICAgICAgICBQaXBlLmNsb3NlX3JlYWQgdG9fc2VydmVyO1xuICAgICAgICBjbG9zZV93ZWJzb2NrZXQgd2Vic29ja2V0IChFcnJvci50b19zdHJpbmdfaHVtIHJlYXNvbilcbiAgICAgIGluXG4gICAgICBsZXQgb25jbG9zZSAoY2xvc2VfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50KSA9XG4gICAgICAgICgqIFRoZSBSUEMgQVBJIGRvZXNuJ3QgZ2l2ZSB1cyBhIGdvb2QgcGxhY2UgdG8gcHV0IGRldGFpbHMgYWJvdXQgX3doeV8gdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gY2xvc2VkLlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCBpbiBDaHJvbWUgW2Nsb3NlX2V2ZW50IyMucmVhc29uXSBpcyB0eXBpY2FsbHkgZW1wdHkgYW5kXG4gICAgICAgICAgIFtjbG9zZV9ldmVudCMjLmNvZGVdIGRvZXNuJ3QgYWN0dWFsbHkgcHJvdmlkZSB0aGF0IG11Y2ggaW5zaWdodCBpbnRvIHdoeSB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBmYWlsZWQgKGl0J3MgYXZhaWxhYmxlIGluIHRoZSBpbnNwZWN0b3IgY29uc29sZSwgYnV0IGFzIGZhciBhcyBJIGNhblxuICAgICAgICAgICB0ZWxsLCBub3QgYXZhaWxhYmxlIHRvIHVzKS4gU28gaXQncyBub3QgbGlrZSB3ZSdyZSBsb3NpbmcgbXVjaCBhbnl3YXkuICopXG4gICAgICAgIGxldCByZWFzb24gPVxuICAgICAgICAgIGxldCB3aGF0X2hhcHBlbmVkID1cbiAgICAgICAgICAgIG1hdGNoIEl2YXIuaXNfZnVsbCBjb25uZWN0ZWRfaXZhciB3aXRoXG4gICAgICAgICAgICB8IGZhbHNlIC0+IFwiY29ubmVjdGlvbiBmYWlsZWRcIlxuICAgICAgICAgICAgfCB0cnVlIC0+IFwiY2xvc2VkXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICFcIldlYlNvY2tldCAlcyAoJXtzZXhwOkNsb3NlX2NvZGUudH0pXCJcbiAgICAgICAgICAgIHdoYXRfaGFwcGVuZWRcbiAgICAgICAgICAgIChDbG9zZV9jb2RlLm9mX2V2ZW50IGNsb3NlX2V2ZW50KVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyByZWFzb24pO1xuICAgICAgICBKcy5fZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgb25tZXNzYWdlIChldmVudCA6IF8gV2ViU29ja2V0cy5tZXNzYWdlRXZlbnQgSnMudCkgPVxuICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy5vZl9hcnJheUJ1ZmZlciBldmVudCMjLmRhdGFfYnVmZmVyIGluXG4gICAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIGZyb21fc2VydmVyIGRhdGE7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ZWQgKCkgPSBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKE9rICgpKSBpblxuICAgICAgd2Vic29ja2V0IyMuYmluYXJ5VHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiO1xuICAgICAgKCogaWYgdGhlIHdlYnNvY2tldCBpcyBhbHJlYWR5IGNsb3NlZCwgW29uY2xvc2VdIHdvbid0IGJlIHJlLWZpcmVkIHdoZW4gd2UgYWRkIG91clxuICAgICAgICAgaGFuZGxlci4gKilcbiAgICAgIChtYXRjaCB3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICB8IENPTk5FQ1RJTkcgLT5cbiAgICAgICAgIHdlYnNvY2tldCMjLm9ub3BlblxuICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgIGNvbm5lY3RlZCAoKTtcbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgIHwgT1BFTiAtPiBjb25uZWN0ZWQgKClcbiAgICAgICB8IENMT1NJTkcgfCBDTE9TRUQgLT5cbiAgICAgICAgICgqIGUuZy4sIFJlZnVzZWQgdG8gY29ubmVjdCB0byB3czogYmVjYXVzZSBpdCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAqKVxuICAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgXCJXZWJTb2NrZXQgZmFpbGVkIGltbWVkaWF0ZWx5IChpbGxlZ2FsIFVSST8pXCIpKTtcbiAgICAgICgqIFVwb24gYW4gZXJyb3IsIFtvbmVycm9yXSBmaXJlcyBhbmQgdGhlbiBbb25jbG9zZV0gZmlyZXMgKGl0J3MgcG9zc2libGUgZm9yIGFcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUgdG8gY2FsbCBbb25jbG9zZV0gb25seSkuIFNpbmNlIEFzeW5jX1JQQyBoYXMgbm8gbm90aW9uIG9mXG4gICAgICAgICBncmFjZWZ1bCBjbG9zdXJlLCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIFtvbmNsb3NlXSBhbnl3YXkuIEZ1cnRoZXIsIHRoZSBldmVudFxuICAgICAgICAgcGFzc2VkIHRvIFtvbmVycm9yXSBjb250YWlucyBubyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IuICBOb3RlIHRoYXQgd2VcbiAgICAgICAgIHN0aWxsIGxpc3RlbiB0byBbb25lcnJvcl0gdG8gcHJldmVudCB0aGUgZXJyb3IgZnJvbSBsZWFraW5nIHRvIHVuY29udHJvbGxlZFxuICAgICAgICAgY29udGV4dCAqKVxuICAgICAgd2Vic29ja2V0IyMub25lcnJvclxuICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgIEFzeW5jX2pzX2RlYnVnLmxvZ19zIFslbWVzc2FnZSBcIndlYnNvY2tldCBlbmNvdW50ZXJlZCB1bmV4cGVjdGVkIGVycm9yXCJdO1xuICAgICAgICBKcy5fZmFsc2UpO1xuICAgICAgd2Vic29ja2V0IyMub25tZXNzYWdlIDo9IERvbS5oYW5kbGVyIG9ubWVzc2FnZTtcbiAgICAgIHdlYnNvY2tldCMjLm9uY2xvc2UgOj0gRG9tLmhhbmRsZXIgb25jbG9zZTtcbiAgICAgIGxldCBjb25uZWN0ZWRfZGVmZXJyZWQgPSBJdmFyLnJlYWQgY29ubmVjdGVkX2l2YXIgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChtYXRjaCViaW5kIGNvbm5lY3RlZF9kZWZlcnJlZCB3aXRoXG4gICAgICAgICB8IEVycm9yIChfIDogRXJyb3IudCkgLT4gcmV0dXJuICgpXG4gICAgICAgICB8IE9rICgpIC0+XG4gICAgICAgICAgIFBpcGUuaXRlcl93aXRob3V0X3B1c2hiYWNrIHRvX3NlcnZlciB+ZjooZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICBtYXRjaCAod2Vic29ja2V0IyMucmVhZHlTdGF0ZSA6IFdlYlNvY2tldHMucmVhZHlTdGF0ZSkgd2l0aFxuICAgICAgICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IG9ub3BlbiBjYWxsZWQgYnV0IHJlYWR5U3RhdGUgaXMgQ09OTkVDVElOR1wiXVxuICAgICAgICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPiAoKVxuICAgICAgICAgICAgIHwgT1BFTiAtPlxuICAgICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhIGluXG4gICAgICAgICAgICAgICAodHJ5IHdlYnNvY2tldCMjc2VuZF9idWZmZXIgYnVmZmVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKEVycm9yLnRhZyB+dGFnOlwid2Vic29ja2V0IyNzZW5kX2J1ZmZlclwiIChFcnJvci5vZl9leG4gZXhuKSkpKSk7XG4gICAgICBsZXQgY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQgPVxuICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdCBbIFBpcGUuY2xvc2VkIHRvX3NlcnZlcjsgUGlwZS5jbG9zZWQgZnJvbV9zZXJ2ZXIgXVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIlJQQyBjb25uZWN0aW9uIGNsb3NlZCBieSBjbGllbnRcIilcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZDtcbiAgICAgIGNvbm5lY3RlZF9kZWZlcnJlZFxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3VyaSAoKSA9XG4gICAgbGV0IHNjaGVtZSA9IGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiIHRoZW4gXCJ3c3NcIiBlbHNlIFwid3NcIiBpblxuICAgIGxldCBwb3J0ID1cbiAgICAgIG1hdGNoIFVybC5DdXJyZW50LnBvcnQgd2l0aFxuICAgICAgfCBTb21lIHBvcnQgLT4gcG9ydFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiXG4gICAgICAgIHRoZW4gVXJsLmRlZmF1bHRfaHR0cHNfcG9ydFxuICAgICAgICBlbHNlIFVybC5kZWZhdWx0X2h0dHBfcG9ydFxuICAgIGluXG4gICAgbGV0IGhvc3QgPSBVcmwuQ3VycmVudC5ob3N0IGluXG4gICAgVXJpLm1ha2UgfnNjaGVtZSB+aG9zdCB+cG9ydCAoKVxuICA7O1xuXG4gIGxldCBjbGllbnQgPyh1cmkgPSBkZWZhdWx0X3VyaSAoKSkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIndlYnNvY2tldFwiIChkZXNjcmlwdGlvbiA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKSAodXJpIDogVXJpLnQpXVxuICAgIGluXG4gICAgbGV0IG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgPVxuICAgICAgbGV0IGNyZWF0ZSB7IFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy5jb25uZWN0aW9uX3N0YXRlOyBpbXBsZW1lbnRhdGlvbnMgfSA9XG4gICAgICAgIFQuY3JlYXRlXG4gICAgICAgICAgdHJhbnNwb3J0XG4gICAgICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIGluXG4gICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLm51bGwgKCkpXG4gICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb25zIC0+IGNyZWF0ZSBpbXBsZW1lbnRhdGlvbnNcbiAgICBpblxuICAgIGxldCBmcm9tX3NlcnZlcl9yLCBmcm9tX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgdG9fc2VydmVyX3IsIHRvX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBtYXRjaCViaW5kXG4gICAgICBjb25uZWN0X3dlYnNvY2tldCB1cmkgfmZyb21fc2VydmVyOmZyb21fc2VydmVyX3cgfnRvX3NlcnZlcjp0b19zZXJ2ZXJfclxuICAgIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gcmV0dXJuIGVycm9yXG4gICAgfCBPayAoKSAtPlxuICAgICAgbGV0IHRyYW5zcG9ydCA9XG4gICAgICAgIEFzeW5jX3JwY19rZXJuZWwuUGlwZV90cmFuc3BvcnQuY3JlYXRlXG4gICAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5LaW5kLmJpZ3N0cmluZ1xuICAgICAgICAgIGZyb21fc2VydmVyX3JcbiAgICAgICAgICB0b19zZXJ2ZXJfd1xuICAgICAgaW5cbiAgICAgIChtYXRjaCViaW5kIG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgd2l0aFxuICAgICAgIHwgT2sgY29ubmVjdGlvbiAtPiByZXR1cm4gKE9rIGNvbm5lY3Rpb24pXG4gICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgIGxldCViaW5kICgpID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuVHJhbnNwb3J0LmNsb3NlIHRyYW5zcG9ydCBpblxuICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgY2xpZW50X2V4biA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID1cbiAgICBjbGllbnQgP3VyaSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBc3luY19ycGNfa2VybmVsLlJwY1xuXG5tb2R1bGUgQ29ubmVjdGlvbiA9IHN0cnVjdFxuICBpbmNsdWRlIENvbm5lY3Rpb25cbiAgaW5jbHVkZSBXZWJzb2NrZXRfY29ubmVjdGlvblxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19ycGNfa2VybmVsXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFVyaVxuXG4gICAgbGV0IHRvX3N0cmluZyBzID0gVXJpLnRvX3N0cmluZyBzXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFQpXG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICBpbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGNcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpID0gUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGUgfmFkZHJlc3M6KG1vZHVsZSBVcmkpXG5cbiAgbGV0IGNyZWF0ZV9mcm9tX3VyaV9vcHRpb24gPVxuICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY3JlYXRlXG4gICAgICB+YWRkcmVzczpcbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBVcmkudCBvcHRpb24gW0BAZGVyaXZpbmcgZXF1YWwsIHNleHBdXG4gICAgICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IEFzeW5jX3JwY19rZXJuZWwuUGVyc2lzdGVudF9jb25uZWN0aW9uLlZlcnNpb25lZF9ycGNcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBPcHQgPSBKcy5PcHRcbm1vZHVsZSBPcHRkZWYgPSBKcy5PcHRkZWZcblxubW9kdWxlIFJlc3BvbnNlX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWG1sSHR0cFJlcXVlc3QucmVzcG9uc2UgPVxuICAgIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IE9wdC50IHRcbiAgICB8IEJsb2IgOiAjRmlsZS5ibG9iIEpzLnQgSnMuT3B0LnQgdFxuICAgIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudCBPcHQudCB0XG4gICAgfCBKU09OIDogJ2EgT3B0LnQgdFxuICAgIHwgVGV4dCA6IEpzLmpzX3N0cmluZyBKcy50IHRcbiAgICB8IERlZmF1bHQgOiBzdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBSZXNwb25zZSA9IHN0cnVjdFxuICB0eXBlICdyZXNwb25zZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IGdldF9oZWFkZXIgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgIDsgY29udGVudCA6ICdyZXNwb25zZVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUG9zdF9ib2R5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBCbG9iIG9mIEZpbGUuYmxvYiBKcy50XG4gICAgfCBEb2N1bWVudCBvZiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRm9ybV9kYXRhIG9mIEZvcm0uZm9ybURhdGEgSnMudFxuZW5kXG5cbm1vZHVsZSBNZXRob2Rfd2l0aF9hcmdzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBHZXQgb2YgKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgIHwgUG9zdCBvZiBQb3N0X2JvZHkudCBvcHRpb25cbmVuZFxuXG50eXBlICdrIHdpdGhfcmVxdWVzdF9hcmdzID1cbiAgP2hlYWRlcnM6KHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAtPiA/b25fcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+ID9vbl91cGxvYWRfcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+IHVybDpzdHJpbmdcbiAgLT4gJ2tcblxubGV0IGhhc19nZXRfYXJncyB1cmwgPSBPcHRpb24uaXNfc29tZSAoU3RyaW5nLmluZGV4IHVybCAnPycpXG5cbmxldCByZXF1ZXN0XG4gICAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICAgID9vbl9wcm9ncmVzc1xuICAgICAgP29uX3VwbG9hZF9wcm9ncmVzc1xuICAgICAgfnVybFxuICAgICAgKHR5cGUgcmVzcClcbiAgICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3AgUmVzcG9uc2VfdHlwZS50KVxuICAgICAgKG1ldGhvZF93aXRoX2FyZ3MgOiBNZXRob2Rfd2l0aF9hcmdzLnQpXG4gID1cbiAgbGV0IHVybCwgbWV0aG9kX3N0cmluZyA9XG4gICAgbWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICAgfCBHZXQgYXJncyAtPlxuICAgICAgdXJsIF4gKGlmIGhhc19nZXRfYXJncyB1cmwgdGhlbiBcIiZcIiBlbHNlIFwiP1wiKSBeIFVybC5lbmNvZGVfYXJndW1lbnRzIGFyZ3MsIFwiR0VUXCJcbiAgICB8IFBvc3QgX2JvZHkgLT4gdXJsLCBcIlBPU1RcIlxuICBpblxuICBsZXQgcmVxID0gWG1sSHR0cFJlcXVlc3QuY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2Rfc3RyaW5nKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChsZXQgb3BlbiBSZXNwb25zZV90eXBlIGluXG4gICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgIHwgQXJyYXlCdWZmZXIgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCJcbiAgIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gICB8IEpTT04gLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImpzb25cIlxuICAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICBMaXN0Lml0ZXIgaGVhZGVycyB+ZjooZnVuIChuYW1lLCB2YWx1ZSkgLT5cbiAgICByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIHZhbHVlKSk7XG4gIGxldCByZXNwb25zZSA6IHJlc3AgUmVzcG9uc2UudCBPcl9lcnJvci50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHJlcSMjLm9uZXJyb3JcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJOZXR3b3JrIGVycm9yXCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub250aW1lb3V0XG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiVGltZW91dFwiKTtcbiAgICBKcy5fdHJ1ZSk7XG4gIHJlcSMjLm9ucmVhZHlzdGF0ZWNoYW5nZVxuICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgIG1hdGNoIHJlcSMjLnJlYWR5U3RhdGUgd2l0aFxuICAgIHwgRE9ORSAtPlxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIGlmIHJlcSMjLnN0YXR1cyA+PSAyMDAgJiYgcmVxIyMuc3RhdHVzIDwgMzAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNvbnRlbnQgOiByZXNwIE9yX2Vycm9yLnQgPVxuICAgICAgICAgICAgbGV0IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpID1cbiAgICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgICByZXEjIy5yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZCBub3QgYmUgZW50ZXJlZCBhcyBwZXIgdGhlIHNwZWNpZmljYXRpb24gb2ZcbiAgICAgICAgICAgICAgICAgICAgICBYTUxIdHRwUmVxdWVzdCBhdCBNRE4gd2ViIGRvY3MsIGJlY2F1c2UgaWYgYSByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwsXG4gICAgICAgICAgICAgICAgICAgICAgaW4gc3RhdGUgW0RPTkVdIGFuZCByZXNwb25zZV90eXBlIFtUZXh0XSBvciBbRGVmYXVsdF0sXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNlVGV4dF0gc2hvdWxkIG5vdCBiZSBbbnVsbF0uXG4gICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NcbiAgICAgICAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHJlc3BvbnNlIHJldHVybmVkIGRlc3BpdGUgc3VjY2Vzc2Z1bCByZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgfV0pXG4gICAgICAgICAgICAgICAgUmVzdWx0LnJldHVyblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgfCBBcnJheUJ1ZmZlciAtPiBPayAoRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgQmxvYiAtPiBPayAoRmlsZS5Db2VyY2VUby5ibG9iIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBPayAoRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgSlNPTiAtPiBPayAoRmlsZS5Db2VyY2VUby5qc29uIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBUZXh0IC0+IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpXG4gICAgICAgICAgICB8IERlZmF1bHQgLT5cbiAgICAgICAgICAgICAgT3JfZXJyb3IubWFwIChnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKSkgfmY6SnMudG9fc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZ2V0X2hlYWRlciBzID1cbiAgICAgICAgICAgIE9wdC5jYXNlXG4gICAgICAgICAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBTb21lIChKcy50b19zdHJpbmcgdikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IFJlc3BvbnNlLmNvbnRlbnQ7IGNvZGUgPSByZXEjIy5zdGF0dXM7IGdldF9oZWFkZXIgfSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICBcIlJlcXVlc3QgZmFpbGVkXCJcbiAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgfV1cbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzXG4gICAgfCBfIC0+ICgpKTtcbiAgT3B0aW9uLml0ZXIgb25fcHJvZ3Jlc3MgfmY6KGZ1biBvbl9wcm9ncmVzcyAtPlxuICAgIHJlcSMjLm9ucHJvZ3Jlc3NcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgIG9uX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgSnMuX3RydWUpKTtcbiAgT3B0ZGVmLml0ZXIgcmVxIyMudXBsb2FkIChmdW4gdXBsb2FkIC0+XG4gICAgT3B0aW9uLml0ZXIgb25fdXBsb2FkX3Byb2dyZXNzIH5mOihmdW4gb25fdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICB1cGxvYWQjIy5vbnByb2dyZXNzXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgb25fdXBsb2FkX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgICBKcy5fdHJ1ZSkpKTtcbiAgKG1hdGNoIG1ldGhvZF93aXRoX2FyZ3Mgd2l0aFxuICAgfCBHZXQgXyAtPiByZXEjI3NlbmQgSnMubnVsbFxuICAgfCBQb3N0IGJvZHkgLT5cbiAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICAgICB8IFNvbWUgYm9keSAtPlxuICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICB8IEJsb2IgYiAtPiByZXEjI3NlbmRfYmxvYiBiXG4gICAgICAgICB8IERvY3VtZW50IGQgLT4gcmVxIyNzZW5kX2RvY3VtZW50IGRcbiAgICAgICAgIHwgU3RyaW5nIHMgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gICAgICAgICB8IEZvcm1fZGF0YSBmZCAtPiByZXEjI3NlbmRfZm9ybURhdGEgZmQpKSk7XG4gIEl2YXIucmVhZCByZXNwb25zZVxuOztcblxubGV0IGdldCA/KGFyZ3VtZW50cyA9IFtdKSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoR2V0IGFyZ3VtZW50cykpXG47O1xuXG5sZXQgcG9zdCA/Ym9keSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoUG9zdCBib2R5KSlcbjs7XG4iLCJvcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZS5UaW1lX25zXG5tb2R1bGUgQ2xvY2tfbnMgPSBBc3luY19rZXJuZWwuQ2xvY2tfbnNcbm1vZHVsZSBTY2hlZHVsZXIgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlXG5vcGVuIEpzX29mX29jYW1sXG5cbmxldCBzbGVlcCBkID0gQ2xvY2tfbnMuYWZ0ZXIgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgZClcbmxldCB5aWVsZCAoKSA9IFNjaGVkdWxlci55aWVsZCAoU2NoZWR1bGVyLnQgKCkpXG5cbmxldCBleHRyYWN0X2pzX2Vycm9yIChleG4gOiBleG4pIDogSnMuZXJyb3IgSnMudCBvcHRpb24gPVxuICBKcy5PcHQudG9fb3B0aW9uIChKcy5qc19lcnJvcl9vZl9leG4gZXhuKVxuOztcblxubGV0IHJ1biA9XG4gIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBJZGxlXG4gICAgICB8IFJ1bm5pbmdcbiAgICAgIHwgV2lsbF9ydW5fc29vblxuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBOZXh0X3dha2V1cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIFRpbWVfbnMudCAqIGZsb2F0XG4gICAgICB8IE5vX3dha2V1cFxuICAgICAgfCBTb29uXG4gIGVuZFxuICBpblxuICBsZXQgc3RhdGUgPSByZWYgU3RhdGUuSWRsZSBpblxuICBsZXQgdGltZW91dHMgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgbGV0IHJ1bl9hZnRlciB+ZiB+bXMgPSBpZ25vcmUgKERvbV9odG1sLnNldFRpbWVvdXQgZiBtcyA6IERvbV9odG1sLnRpbWVvdXRfaWRfc2FmZSkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQgdCA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbWF0Y2ggIXN0YXRlLCBTY2hlZHVsZXIudW5jYXVnaHRfZXhuIHQgd2l0aFxuICAgIHwgXywgU29tZSBfIHwgU3RhdGUuUnVubmluZywgTm9uZSAtPiAoKVxuICAgIHwgKFN0YXRlLklkbGUgfCBTdGF0ZS5XaWxsX3J1bl9zb29uKSwgTm9uZSAtPlxuICAgICAgc3RhdGUgOj0gU3RhdGUuUnVubmluZztcbiAgICAgIFNjaGVkdWxlci5ydW5fY3ljbGUgdDtcbiAgICAgIGxldCBuZXh0X3dha2V1cCA6IE5leHRfd2FrZXVwLnQgPVxuICAgICAgICBpZiBTY2hlZHVsZXIuY2FuX3J1bl9hX2pvYiB0XG4gICAgICAgIHRoZW4gU29vblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBTY2hlZHVsZXIubmV4dF91cGNvbWluZ19ldmVudCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9fd2FrZXVwXG4gICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBUaW1lX25zLmRpZmYgbmV4dCBub3cgaW5cbiAgICAgICAgICAgIGxldCBkX21zID0gVGltZV9ucy5TcGFuLnRvX21zIGQgaW5cbiAgICAgICAgICAgIGlmIEZsb2F0LiggPD0gKSBkX21zIDAuIHRoZW4gU29vbiBlbHNlIEF0IChuZXh0LCBkX21zKSlcbiAgICAgIGluXG4gICAgICBPcHRpb24uaXRlciAoU2NoZWR1bGVyLnVuY2F1Z2h0X2V4bl91bndyYXBwZWQgdCkgfmY6KGZ1biAoZXhuLCBfc2V4cCkgLT5cbiAgICAgICAgbWF0Y2ggQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIHdpdGhcbiAgICAgICAgfCBKcy5FcnJvciBlcnIgLT4gSnMucmFpc2VfanNfZXJyb3IgZXJyXG4gICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgICAgICB8IFNvbWUgZXJyIC0+XG4gICAgICAgICAgICAgKCogSGFjayB0byBnZXQgYSBiZXR0ZXIgYmFja3RyYWNlICopXG4gICAgICAgICAgICAgKCogV2UgZmlyc3Qgb3V0cHV0IHRoZSBzdHJpbmdpZmllZCBvY2FtbCBleGNlcHRpb24gKilcbiAgICAgICAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSk7XG4gICAgICAgICAgICAgKCogQW5kIHRoZW4gcmFpc2UgdGhlIGVtYmVkZGVkIGphdmFzY3JpcHQgZXJyb3IgdGhhdCBwcm92aWRlcyBhIHByb3BlclxuICAgICAgICAgICAgICAgIGJhY2t0cmFjZSB3aXRoIGdvb2Qgc291cmNlbWFwIHN1cHBvcnQuXG4gICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhpcyBqYXZhc2NyaXB0IGVycm9yIGlzIHByb2JhYmx5IG5vdCBtZWFuaW5nZnVsIHdoaWNoIGlzIHdoeVxuICAgICAgICAgICAgICAgIHdlIGZpcnN0IG91dHB1dCB0aGUgc2VyaWFsaXphdGlvbiBvZiBvY2FtbCBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgSnMucmFpc2VfanNfZXJyb3IgZXJyKSk7XG4gICAgICAobWF0Y2ggbmV4dF93YWtldXAgd2l0aFxuICAgICAgIHwgTm9fd2FrZXVwIC0+IHN0YXRlIDo9IElkbGVcbiAgICAgICB8IFNvb24gLT5cbiAgICAgICAgIHN0YXRlIDo9IFdpbGxfcnVuX3Nvb247XG4gICAgICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC5cbiAgICAgICB8IEF0IChhdCwgZF9tcykgLT5cbiAgICAgICAgIHN0YXRlIDo9IElkbGU7XG4gICAgICAgICBpZiBTdGFjay5pc19lbXB0eSB0aW1lb3V0cyB8fCBUaW1lX25zLiggPCApIGF0IChTdGFjay50b3BfZXhuIHRpbWVvdXRzKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIFN0YWNrLnB1c2ggdGltZW91dHMgYXQ7XG4gICAgICAgICAgIHJ1bl9hZnRlciB+ZjpydW5fdGltZW91dCB+bXM6ZF9tcykpXG4gIGFuZCBydW5fdGltZW91dCAoKSA9XG4gICAgKCogRWFjaCBjYWxsIHRvIFtydW5fdGltZW91dF0gcmVtb3ZlcyBleGFjdGx5IG9uZSBlbGVtZW50IGZyb20gW3RpbWVvdXRzXS4gIFRoaXNcbiAgICAgICBtYWludGFpbnMgdGhlIGludmFyaWFudCB0aGF0IFtTdGFjay5sZW5ndGggdGltZW91dHNdIGlzIGV4YWN0bHkgdGhlIG51bWJlciBvZlxuICAgICAgIG91dHN0YW5kaW5nIHRpbWVvdXRzIHdlIGhhdmUgcmVnaXN0ZXJlZC4gKilcbiAgICBpZ25vcmUgKFN0YWNrLnBvcF9leG4gdGltZW91dHMgOiBUaW1lX25zLnQpO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IFN0YXRlLklkbGUgLT5cbiAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLjtcbiAgICAgIHN0YXRlIDo9IFN0YXRlLldpbGxfcnVuX3Nvb25cbiAgICB8IFN0YXRlLlJ1bm5pbmcgfCBTdGF0ZS5XaWxsX3J1bl9zb29uIC0+ICgpXG47O1xuXG5sZXQgbG9nIG5hbWUgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIHdpdGhcbiAgICB8IEpzLkVycm9yIGVyciAtPiBgSnMgZXJyXG4gICAgfCBleG4gLT5cbiAgICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgICAgfCBOb25lIC0+IGBFeG4gZXhuXG4gICAgICAgfCBTb21lIGVyciAtPiBgSnNfYW5kX2V4biAoZXhuLCBlcnIpKVxuICBpblxuICBtYXRjaCBleG4gd2l0aFxuICB8IGBKcyBlcnIgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgZXJyXG4gIHwgYEV4biBleG4gLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKVxuICB8IGBKc19hbmRfZXhuIChleG4sIGVycikgLT5cbiAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpIGVyclxuOztcblxubGV0IGluaXRpYWxpemVkX3JlZiA9IHJlZiBmYWxzZVxuXG5sZXQgaW5pdGlhbGl6YXRpb24gPVxuICBsYXp5XG4gICAgKGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICAgaW5pdGlhbGl6ZWRfcmVmIDo9IHRydWU7XG4gICAgIFNjaGVkdWxlci5zZXRfam9iX3F1ZXVlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfZXZlbnRfYWRkZWRfaG9vayB0IChmdW4gXyAtPiBydW4gKCkpO1xuICAgICBTY2hlZHVsZXIuc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgcnVuO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4biA6PSBsb2cgXCJBc3luY19rZXJuZWw6IE1vbml0b3IudHJ5X3dpdGhcIjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9yc1xuICAgICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLm1haW5cbiAgICAgICB+ZjoobG9nIFwiQXN5bmNfa2VybmVsOiBVbmhhbmRsZWQgZXhjZXB0aW9uXCIpO1xuICAgICBydW4gKCkpXG47O1xuXG5sZXQgaW5pdCAoKSA9IGZvcmNlIGluaXRpYWxpemF0aW9uXG5sZXQgaW5pdGlhbGl6ZWQgKCkgPSAhaW5pdGlhbGl6ZWRfcmVmXG5cbmxldCBkb2N1bWVudF9sb2FkZWQgPVxuICBsZXQganNfc3RyaW5nX2NvbXBhcmUgcyA9XG4gICAgbGV0IGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgPSBwaHlzX2VxdWFsIGluXG4gICAgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyAoSnMuc3RyaW5nIHMpXG4gIGluXG4gIGxldCByZWFkeV9zdGF0ZV9jaGFuZ2UgPSBcInJlYWR5c3RhdGVjaGFuZ2VcIiBpblxuICBsZXQgY29tcGxldGUgPSBcImNvbXBsZXRlXCIgaW5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2VfZXYgPSBEb20uRXZlbnQubWFrZSByZWFkeV9zdGF0ZV9jaGFuZ2UgaW5cbiAgbGV0IGFkZF9ldmVudCB0YXJnZXQgZXZ0IGhhbmRsZXIgPVxuICAgIGlnbm9yZVxuICAgICAgKERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXIgdGFyZ2V0IGV2dCBoYW5kbGVyIEpzLl9mYWxzZSA6IERvbS5ldmVudF9saXN0ZW5lcl9pZClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgaWYganNfc3RyaW5nX2NvbXBhcmUgY29tcGxldGUgRG9tX2h0bWwuZG9jdW1lbnQjIy5yZWFkeVN0YXRlXG4gICAgdGhlbiBBc3luY19rZXJuZWwuRGVmZXJyZWQudW5pdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxvYWRlZCA9IEFzeW5jX2tlcm5lbC5JdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGhhbmRsZXIgZXZ0ID1cbiAgICAgICAgaWYgKG5vdCAoanNfc3RyaW5nX2NvbXBhcmUgcmVhZHlfc3RhdGVfY2hhbmdlIGV2dCMjLl90eXBlKSlcbiAgICAgICAgfHwganNfc3RyaW5nX2NvbXBhcmUgY29tcGxldGUgRG9tX2h0bWwuZG9jdW1lbnQjIy5yZWFkeVN0YXRlXG4gICAgICAgIHRoZW4gQXN5bmNfa2VybmVsLkl2YXIuZmlsbF9pZl9lbXB0eSBsb2FkZWQgKCk7XG4gICAgICAgIEpzLl90cnVlXG4gICAgICBpblxuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLmRvY3VtZW50IERvbV9odG1sLkV2ZW50LmRvbUNvbnRlbnRMb2FkZWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLmRvY3VtZW50IHJlYWR5c3RhdGVjaGFuZ2VfZXYgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLndpbmRvdyBEb21faHRtbC5FdmVudC5sb2FkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIEFzeW5jX2tlcm5lbC5JdmFyLnJlYWQgbG9hZGVkKVxuOztcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBIdHRwID0gSHR0cFxubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24gPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25cbmluY2x1ZGUgQXN5bmNfanMwXG5cbmxldCBsb2dfcyA9IERlYnVnLmxvZ19zXG5sZXQgbG9nX3NfYXNfc3RyaW5nID0gRGVidWcubG9nX3NfYXNfc3RyaW5nXG4iLCJvcGVuISBCYXNlXG5cbigqIFRoZSBbZGF0YV0gYXJyYXkgaXMgYW4gaW1wbGljaXQgYmluYXJ5IHRyZWUgd2l0aCBbY2hpbGRyZW5fbGVuZ3RoICogMiAtIDFdIG5vZGVzLFxuICAgd2l0aCBlYWNoIG5vZGUgYmVpbmcgdGhlIHN1bSBvZiB0aGUgdHdvIGNoaWxkIG5vZGVzIGFuZCB0aGUgcm9vdCBub2RlIGJlaW5nIHRoZSAwdGhcbiAgIG5vZGUuICBUaGUgbGVhdmVzIG9mIHRoZSB0cmVlIGFyZSB0aGUgbGFzdCBbbnVtX2xlYXZlc10gbm9kZXMuXG5cbiAgIFRoZSBjaGlsZHJlbiBhcmUgbm90IG5lY2Vzc2FyaWx5IGFsbCBhdCB0aGUgc2FtZSBsZXZlbCBvZiB0aGUgdHJlZS4gRm9yIGluc3RhbmNlIGlmXG4gICB5b3UgaGF2ZSAzIGNoaWxkcmVuIFt8IGE7IGI7IGMgfF06XG5cbiAgIHt2XG4gICAgICAgICAgb1xuICAgICAgICAgLyBcXFxuICAgICAgICBvICAgY1xuICAgICAgIC8gXFxcbiAgICAgIGEgICBiXG4gICB2fVxuXG4gICBXZSB3YW50IHRoaXMgdHJlZSB0byBiZSByZXByZXNlbnRhdGVkIGFzIFt8IG87IG87IGM7IGE7IGIgfF0sIGkuZS4gd2UgbmVlZCB0byBhcHBseVxuICAgZmlyc3QgYSByb3RhdGlvbiB0aGVuIGEgdHJhbnNsYXRpb24gdG8gY29udmVydCBhbiBpbmRleCBpbiBbfCBhOyBiOyBjIHxdIHRvIGEgKGxlYWYpXG4gICBpbmRleCBpbiBbfCBvOyBvOyBjOyBhOyBiIHxdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBkYXRhIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyBudW1fbGVhdmVzIDogaW50XG4gIDsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsIDogaW50XG4gIDsgcmVkdWNlIDogJ2EgLT4gJ2EgLT4gJ2FcbiAgOyBzZXhwX29mX2EgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG5sZXQgbGVuZ3RoIHQgPSB0Lm51bV9sZWF2ZXNcblxuKCoge3ZcbiAgICAgcGFyZW50OiAgICAgIDAgIDEgIDIgIDMgIDQgIDUgIDYgIDcgIDggIDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgLi4uXG4gICAgIGxlZnQgY2hpbGQ6ICAxICAzICA1ICA3ICA5IDExIDEzIDE1IDE3IDE5IDIxIDIzIDI1IDI3IDI5IDMxIDMzIDM1IDM3IDM5IC4uLlxuICAgICByaWdodCBjaGlsZDogMiAgNCAgNiAgOCAxMCAxMiAxNCAxNiAxOCAyMCAyMiAyNCAyNiAyOCAzMCAzMiAzNCAzNiAzOCA0MCAuLi4gdn0gKilcbmxldCBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4ID0gKGNoaWxkX2luZGV4IC0gMSkgLyAyXG5sZXQgbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4ID0gKHBhcmVudF9pbmRleCAqIDIpICsgMVxubGV0IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4ID0gbGVmdF9jaGlsZF9pbmRleCArIDFcblxuKCogVGhlIGZpcnN0IFtudW1fbGVhdmVzLTFdIGVsZW1lbnRzIGFyZSBpbnRlcm5hbCBub2RlcyBvZiB0aGUgdHJlZS4gIFRoZSBuZXh0XG4gICBbbnVtX2xlYXZlc10gZWxlbWVudHMgYXJlIHRoZSBsZWF2ZXMuICopXG5sZXQgbnVtX2JyYW5jaGVzIHQgPSB0Lm51bV9sZWF2ZXMgLSAxXG5sZXQgaW5kZXhfaXNfbGVhZiB0IGkgPSBpID49IG51bV9icmFuY2hlcyB0XG5cbigqIFRoZSB0cmVlIGlzIGNvbXBsZXRlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHBlcmZlY3QsIHNvIHdlIHBlcmZvcm0gc29tZSByb3RhdGlvbiBvZiB0aGVcbiAgIGxlYXZlcyB0byBlbnN1cmUgdGhhdCBvdXIgcmVkdWN0aW9ucyBwcmVzZXJ2ZSBvcmRlcmluZy4gKilcbmxldCBsZWFmX2luZGV4IHQgaSA9XG4gICgqIFRoZSB0cmVlIGxheW91dCBpcyBsZXZlbCBvcmRlci4gIEFueSBsZWF2ZXMgaW4gdGhlIHNlY29uZCB0byBsYXN0IGxldmVsIG5lZWQgdG8gb2NjdXJcbiAgICAgaW4gdGhlIGFycmF5IGJlZm9yZSB0aGUgbGVhdmVzIGluIHRoZSBib3R0b20gbGV2ZWwuICopXG4gIGxldCByb3RhdGVkX2luZGV4ID1cbiAgICBsZXQgb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5ID0gaSArIHQubnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsIGluXG4gICAgaWYgb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IDwgdC5udW1fbGVhdmVzXG4gICAgdGhlbiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXlcbiAgICBlbHNlIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSAtIHQubnVtX2xlYXZlc1xuICBpblxuICAoKiBUaGUgbGVhdmVzIG9jY3VyIGFmdGVyIHRoZSBicmFuY2hlcyBpbiB0aGUgYXJyYXkuICopXG4gIHJvdGF0ZWRfaW5kZXggKyBudW1fYnJhbmNoZXMgdFxuOztcblxubGV0IGdldF9sZWFmIHQgaSA9IE9wdGlvbl9hcnJheS5nZXQgdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbmxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gZ2V0X2xlYWYgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodG9fbGlzdCB0IDogYSBvcHRpb24gbGlzdCldXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvXG4gICAgbWF0Y2ggT3B0aW9uX2FycmF5LmdldCBkYXRhIGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBhIC0+IGludmFyaWFudF9hIGFcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG51bV9icmFuY2hlcyB0IC0gMSBkb1xuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgbGV0IGxlZnRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgbGVmdCBpblxuICAgIGxldCByaWdodF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSByaWdodCBpblxuICAgIGlmIE9wdGlvbl9hcnJheS5pc19zb21lIGRhdGEgaVxuICAgIHRoZW4gYXNzZXJ0IChub3QgKGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKSlcbiAgICBlbHNlXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBpbmRleF9pc19sZWFmIHQgbGVmdCB8fCBpbmRleF9pc19sZWFmIHQgcmlnaHQgfHwgbGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGVfZXhuID8oc2V4cF9vZl9hID0gWyVzZXhwX29mOiBfXSkgKCkgfmxlbjpudW1fbGVhdmVzIH5yZWR1Y2UgPVxuICBpZiBudW1fbGVhdmVzIDwgMVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwibm9uLXBvc2l0aXZlIG51bWJlciBvZiBsZWF2ZXMgaW4gYmFsYW5jZWQgcmVkdWNlclwiIChudW1fbGVhdmVzIDogaW50KV07XG4gIGxldCBudW1fYnJhbmNoZXMgPSBudW1fbGVhdmVzIC0gMSBpblxuICBsZXQgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsID0gSW50LmNlaWxfcG93MiBudW1fbGVhdmVzIC0gbnVtX2xlYXZlcyBpblxuICBsZXQgZGF0YSA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoobnVtX2JyYW5jaGVzICsgbnVtX2xlYXZlcykgaW5cbiAgeyBkYXRhOyBudW1fbGVhdmVzOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWw7IHJlZHVjZTsgc2V4cF9vZl9hIH1cbjs7XG5cbmxldCB2YWxpZGF0ZV9pbmRleCB0IGkgPVxuICBpZiBpIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBhY2Nlc3MgbmVnYXRpdmUgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiIH5pbmRleDooaSA6IGludCldO1xuICBsZXQgbGVuZ3RoID0gdC5udW1fbGVhdmVzIGluXG4gIGlmIGkgPj0gbGVuZ3RoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIlxuICAgICAgICAgIH5pbmRleDooaSA6IGludClcbiAgICAgICAgICAobGVuZ3RoIDogaW50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaSBhID1cbiAgdmFsaWRhdGVfaW5kZXggdCBpO1xuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBsZXQgaSA9IHJlZiAobGVhZl9pbmRleCB0IGkpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSBkYXRhICFpIGE7XG4gIHdoaWxlICFpIDw+IDAgZG9cbiAgICBsZXQgcGFyZW50ID0gcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleDohaSBpblxuICAgIGlmIE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcGFyZW50XG4gICAgdGhlbiBpIDo9IDBcbiAgICBlbHNlIChcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgZGF0YSBwYXJlbnQ7XG4gICAgICBpIDo9IHBhcmVudClcbiAgZG9uZVxuOztcblxubGV0IGdldF9leG4gdCBpID1cbiAgdmFsaWRhdGVfaW5kZXggdCBpO1xuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG47O1xuXG5sZXQgcmVjIGNvbXB1dGVfZXhuIHQgaSA9XG4gIGlmIE9wdGlvbl9hcnJheS5pc19zb21lIHQuZGF0YSBpXG4gIHRoZW4gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5kYXRhIGlcbiAgZWxzZSAoXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBpZiBsZWZ0ID49IE9wdGlvbl9hcnJheS5sZW5ndGggdC5kYXRhXG4gICAgdGhlbiAoXG4gICAgICAoKiBJZiB3ZSBnZXQgaGVyZSwgdGhlIHBhcmVudCB3YXMgYW4gdW5zZXQgbGVhZi4gKilcbiAgICAgIGxldCBzZXhwX29mX2EgPSB0LnNleHBfb2ZfYSBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImF0dGVtcHQgdG8gY29tcHV0ZSBiYWxhbmNlZCByZWR1Y2VyIHdpdGggdW5zZXQgZWxlbWVudHNcIlxuICAgICAgICAgICAgfmJhbGFuY2VkX3JlZHVjZXI6KHQgOiBhIHQpXSk7XG4gICAgbGV0IGEgPSB0LnJlZHVjZSAoY29tcHV0ZV9leG4gdCBsZWZ0KSAoY29tcHV0ZV9leG4gdCByaWdodCkgaW5cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZGF0YSBpIGE7XG4gICAgYSlcbjs7XG5cbmxldCBjb21wdXRlX2V4biB0ID0gY29tcHV0ZV9leG4gdCAwXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGxldCBzZXhwX29mX3QgPSBUaW1lX25zLkFsdGVybmF0ZV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgaW5pdCA6ICdhXG4gIDsgc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHsgaW5pdDsgc3RlcHMgPSBfIH0gPSBpbnZhcmlhbnRfYSBpbml0XG5cbmxldCByZWMgdmFsdWVfaW50ZXJuYWwgaW5pdCBzdGVwcyB+YXQgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lICgodCwgYSksIHN0ZXBzKSAtPlxuICAgIGlmIFRpbWVfbnMuKCA8ICkgYXQgdCB0aGVuIGluaXQgZWxzZSB2YWx1ZV9pbnRlcm5hbCBhIHN0ZXBzIH5hdFxuOztcblxubGV0IHZhbHVlIHQgfmF0ID0gdmFsdWVfaW50ZXJuYWwgdC5pbml0IHQuc3RlcHMgfmF0XG5sZXQgY29uc3RhbnQgaW5pdCA9IHsgaW5pdDsgc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eSB9XG5cbmxldCBjcmVhdGVfZXhuIH5pbml0IH5zdGVwcyA9XG4gIGlmIG5vdFxuICAgICAgIChMaXN0LmlzX3NvcnRlZCBzdGVwcyB+Y29tcGFyZTooZnVuICh0aW1lMSwgXykgKHRpbWUyLCBfKSAtPlxuICAgICAgICAgIFRpbWVfbnMuY29tcGFyZSB0aW1lMSB0aW1lMikpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuXSBnb3QgdW5zb3J0ZWQgdGltZXNcIlxuICAgICAgICAgIH5zdGVwczooc3RlcHMgfD4gTGlzdC5tYXAgfmY6ZnN0IDogVGltZV9ucy50IGxpc3QpXTtcbiAgeyBpbml0OyBzdGVwcyA9IHN0ZXBzIHw+IFNlcXVlbmNlLm9mX2xpc3QgfVxuOztcblxubGV0IGNyZWF0ZV9mcm9tX3NlcXVlbmNlIH5pbml0IH5zdGVwcyA9IHsgaW5pdDsgc3RlcHMgfVxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgV2VhayA9IENhbWwuV2Vha1xuXG50eXBlICdhIHQgPSAnYSBIZWFwX2Jsb2NrLnQgV2Vhay50XG5cbmxldCBjcmVhdGUgfmxlbiA9IFdlYWsuY3JlYXRlIGxlblxubGV0IGxlbmd0aCB0ID0gV2Vhay5sZW5ndGggdFxubGV0IHNldCA9IFdlYWsuc2V0XG5cbmxldCBzZXRfZXhuIHQgaSB4ID0gc2V0IHQgaSAoT3B0aW9uLm1hcCB4IH5mOkhlYXBfYmxvY2suY3JlYXRlX2V4bilcblxubGV0IGdldCA9IFdlYWsuZ2V0XG5sZXQgaXNfc29tZSB0IGkgPSBXZWFrLmNoZWNrIHQgaVxubGV0IGlzX25vbmUgdCBpID0gbm90IChpc19zb21lIHQgaSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXQgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cF9vZjogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uIGFycmF5XSAodG9fYXJyYXkgdClcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiBpIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBXZWFrLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4iLCIoKiBXZSBpbXBsZW1lbnQgYSB3ZWFrIHBvaW50ZXIgdXNpbmcgYSBbV2Vha19hcnJheS50XS4gKilcblxub3BlbiEgQ29yZVxuXG50eXBlICdhIHQgPSAnYSBXZWFrX2FycmF5LnRcblxubGV0IGNyZWF0ZSAoKSA9IFdlYWtfYXJyYXkuY3JlYXRlIH5sZW46MVxuXG4oKiBXZSB1c2UgYSB3ZWFrIGFycmF5IG9mIGxlbmd0aCAxLCBzbyB0aGUgd2VhayBwb2ludGVyIGlzIGF0IGluZGV4IDAuICopXG5sZXQgaW5kZXggPSAwXG5cbmxldCBnZXQgdCA9IFdlYWtfYXJyYXkuZ2V0IHQgaW5kZXhcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIEhlYXBfYmxvY2sudCBvcHRpb24pXVxuXG5sZXQgaXNfbm9uZSB0ID0gV2Vha19hcnJheS5pc19ub25lIHQgaW5kZXhcbmxldCBpc19zb21lIHQgPSBXZWFrX2FycmF5LmlzX3NvbWUgdCBpbmRleFxuXG5sZXQgc2V0IHQgYmxvY2sgPSBXZWFrX2FycmF5LnNldCB0IGluZGV4IChTb21lIGJsb2NrKVxuIiwib3BlbiEgSW1wb3J0XG5cblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBlbnRyeV9ieV9rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCdhLCAnYiBXZWFrX3BvaW50ZXIudCkgSGFzaHRibC50XG4gIDsga2V5c193aXRoX3VudXNlZF9kYXRhICAgICAgICAgICAgICAgICAgICA6ICdhIFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDogdW5pdCAtPiB1bml0XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZSA9XG4gICAgeyBlbnRyeV9ieV9rZXkgICAgICAgICAgICAgICAgICAgICA9IEhhc2h0YmwuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5oYXNoYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuICAgIDsga2V5c193aXRoX3VudXNlZF9kYXRhICAgICAgICAgICAgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhID0gaWdub3JlXG4gICAgfVxuICA7O1xuZW5kXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPVxuICBVc2luZ19oYXNoYWJsZS5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNodGJsLkhhc2hhYmxlLm9mX2tleSBtKVxuOztcblxubGV0IHNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0IH50aHJlYWRfc2FmZV9mID1cbiAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA8LSB0aHJlYWRfc2FmZV9mO1xuOztcblxubGV0IHJlbW92ZSB0IGtleSA9IEhhc2h0YmwucmVtb3ZlIHQuZW50cnlfYnlfa2V5IGtleVxuXG4oKiBJbiBvcmRlciBmb3IgYSBjYWxsIHRvIFtyZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGFdIHRvIHJlY2xhaW0gYSBrZXkgdGhhdFxuICAgd2FzIHByZXZpb3VzbHkgZmluYWxpemVkLCB0aGUgd2VhayBwb2ludGVyIG11c3QgaGF2ZSBiZWVuIGNsZWFyZWQuICBUaGlzIHJlbGllcyBvbiB0aGVcbiAgIGZhY3QgdGhhdCB0aGUgT0NhbWwgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYXJzIHdlYWtzIGFuZCB0aGVuIHJ1bnMgZmluYWxpemVycy4gKilcbmxldCByZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSA+IDAgZG9cbiAgICBsZXQga2V5ID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZW50cnkgLT4gaWYgV2Vha19wb2ludGVyLmlzX25vbmUgZW50cnkgdGhlbiByZW1vdmUgdCBrZXlcbiAgZG9uZTtcbjs7XG5cbmxldCBnZXRfZW50cnkgdCBrZXkgPVxuICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuZW50cnlfYnlfa2V5IGtleVxuICAgIH5kZWZhdWx0OihmdW4gKCkgLT4gV2Vha19wb2ludGVyLmNyZWF0ZSAoKSk7XG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbjs7XG5cbmxldCBrZXlfaXNfdXNpbmdfc3BhY2UgdCBrZXkgPSBIYXNodGJsLm1lbSB0LmVudHJ5X2J5X2tleSBrZXlcblxubGV0IHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGEgPVxuICBXZWFrX3BvaW50ZXIuc2V0IGVudHJ5IGRhdGE7XG4gIEdjLkV4cGVydC5hZGRfZmluYWxpemVyX2xhc3QgZGF0YSAoZnVuICgpIC0+XG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBrZXk7XG4gICAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSAoKSk7XG47O1xuXG5sZXQgcmVwbGFjZSB0IH5rZXkgfmRhdGEgPSBzZXRfZGF0YSB0IGtleSAoZ2V0X2VudHJ5IHQga2V5KSBkYXRhXG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBpZiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiV2Vha19oYXNodGJsLmFkZF9leG4gb2Yga2V5IGluIHVzZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGE7XG47O1xuXG5sZXQgZmluZCB0IGtleSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmdldCBlbnRyeVxuOztcblxubGV0IGZpbmRfb3JfYWRkIHQga2V5IH5kZWZhdWx0ID1cbiAgbGV0IGVudHJ5ID0gZ2V0X2VudHJ5IHQga2V5IGluXG4gIG1hdGNoIFdlYWtfcG9pbnRlci5nZXQgZW50cnkgd2l0aFxuICB8IFNvbWUgdiAtPiB2XG4gIHwgTm9uZSAtPlxuICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgIHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGE7XG4gICAgZGF0YVxuOztcbiIsInR5cGUgdCA9XG4gIHwgQmVmb3JlXG4gIHwgQWZ0ZXJcbltAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJbJSVpbXBvcnQgXCJkZWJ1Zy5tbGhcIl1cblxub3BlbiBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogQWxsIFthc3NlcnRdcyBhbmQgb3RoZXIgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGNvZGUgYXJlIGd1YXJkZWQgYnkgW2lmIGRlYnVnXS4gIFRoZVxuICAgREVCVUcgdmFyaWFibGUgaXMgc2V0IGluIHRoZSBsaWIgW2luY3JlbWVudGFsXSBhbmQgdW5zZXQgaW4gdGhlIGxpYlxuICAgW2luY3JlbWVudGFsX2RlYnVnXSwgYnV0IGFwYXJ0IGZyb20gdGhhdCB0aGV5IGFyZSBpZGVudGljYWwuICBUZXN0cyBhcmUgcnVuIHdpdGggYm90aFxuICAgdGhlIHByb2R1Y3Rpb24gYW5kIGRlYnVnIGxpYiwgYW5kIHVzZXJzIGNhbiBjaG9vc2UgdG8gYnVpbGQgd2l0aCB0aGUgZGVidWcgbGlicmFyeSwgaWZcbiAgIHRoZXkgc3VzcGVjdCB0aGV5IGZvdW5kIGEgYnVnIGluIGluY3JlbWVudGFsLiAqKVxuXG5bJSVpZiBKU0NfREVCVUddXG5cbmxldCBkZWJ1ZyA9IHRydWVcblxuWyUlZWxzZV1cblxubGV0IGRlYnVnID0gZmFsc2VcblxuWyUlZW5kaWZdXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgdGFnIG5hbWUgYSBzZXhwX29mX2EgPSAobmFtZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXVxuXG5tb2R1bGUgU3RlcF9mdW5jdGlvbiA9IEluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGluY2x1ZGUgQXJyYXlcblxuICAoKiBOb3QgZGVmaW5pbmcgYWxpYXNlcyBpbiBwcm9kdWN0aW9uIG1vZGUsIHNpbmNlIHRoZXkgYnJlYWsgdHlwZSBzcGVjaWFsaXphdGlvbiBvZlxuICAgICBhcnJheSBhY2Nlc3Nlcy4gKilcbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiBhID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgQXJyYXkuYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIFVvcHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVb3B0XG5cbiAgbGV0IHVuc2FmZV92YWx1ZSA9IGlmIGRlYnVnIHRoZW4gdmFsdWVfZXhuIGVsc2UgdW5zYWZlX3ZhbHVlXG5lbmRcblxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbmlmb3JtX2FycmF5XG5cbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbHNlXVxuXG4gICgqIFVuaWZvcm1fYXJyYXkgaXMgYmVpbmcgXCJzbWFydFwiIGJ5IGNoZWNraW5nIGlmIGVsZW1lbnRzIGFyZSBpbnRlZ2VycywgYnV0IFVvcHQudFxuICAgICBhbG1vc3QgbmV2ZXIgY29udGFpbiBpbnRlZ2Vycywgc28gdGhlIGV4dHJhIGNoZWNrIHRvIG1ha2UgZ2VuZXJhdGVkIGNvZGUgaGFyZGVyIHRvXG4gICAgIHJlYWQgYW5kIHBvdGVudGlhbGx5IHNsb3dlci4gKilcbiAgbGV0IHVuc2FmZV9zZXQgPSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnlcbiAgbGV0IHNldCA9IHNldF93aXRoX2NhbWxfbW9kaWZ5XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiA9XG4gICAgbGV0IG5ld190ID0gY3JlYXRlIH5sZW4gVW9wdC5ub25lIGluXG4gICAgYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gICgqIFdlIHNwZWNpYWxpemUgc29tZSBjdXRvZmZzIHRvIGF2b2lkIGFuIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGw7IGluIHBhcnRpY3VsYXIgd2VcbiAgICAgc3BlY2lhbGl6ZSB0aGUgZGVmYXVsdCAoYW5kIGhlbmNlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbikgY2FzZSBvZiBwaHlzaWNhbFxuICAgICBlcXVhbGl0eS4gKilcbiAgfCBBbHdheXNcbiAgfCBOZXZlclxuICB8IFBoeXNfZXF1YWxcbiAgfCBDb21wYXJlIG9mICgnYSAtPiAnYSAtPiBpbnQpXG4gIHwgRXF1YWwgb2YgKCdhIC0+ICdhIC0+IGJvb2wpXG4gIHwgRiBvZiAob2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiBib29sKVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWx3YXlzIHwgTmV2ZXIgfCBQaHlzX2VxdWFsIHwgQ29tcGFyZSBfIHwgRXF1YWwgXyB8IEYgXyAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9IEYgZlxubGV0IG9mX2NvbXBhcmUgZiA9IENvbXBhcmUgZlxubGV0IG9mX2VxdWFsIGYgPSBFcXVhbCBmXG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IGFsd2F5cyA9IEFsd2F5c1xubGV0IHBvbHlfZXF1YWwgPSBFcXVhbCBQb2x5LmVxdWFsXG5cbmxldCBzaG91bGRfY3V0b2ZmIHQgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgUGh5c19lcXVhbCAtPiBwaHlzX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWVcbiAgfCBOZXZlciAtPiBmYWxzZVxuICB8IEFsd2F5cyAtPiB0cnVlXG4gIHwgQ29tcGFyZSBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZSA9IDBcbiAgfCBFcXVhbCBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IEYgZiAtPiBmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuOztcblxubGV0IGVxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBBbHdheXMsIEFsd2F5cyAtPiB0cnVlXG4gIHwgQWx3YXlzLCBfIC0+IGZhbHNlXG4gIHwgTmV2ZXIsIE5ldmVyIC0+IHRydWVcbiAgfCBOZXZlciwgXyAtPiBmYWxzZVxuICB8IFBoeXNfZXF1YWwsIFBoeXNfZXF1YWwgLT4gdHJ1ZVxuICB8IFBoeXNfZXF1YWwsIF8gLT4gZmFsc2VcbiAgfCBDb21wYXJlIGYxLCBDb21wYXJlIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBDb21wYXJlIF8sIF8gLT4gZmFsc2VcbiAgfCBFcXVhbCBmMSwgRXF1YWwgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEVxdWFsIF8sIF8gLT4gZmFsc2VcbiAgfCBGIGYxLCBGIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBGIF8sIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwaHlzX2VxdWFsID0gUGh5c19lcXVhbFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0cmluZ19saXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+c2V4cF9vZl90IH5jb21wYXJlKVxuZW5kXG5cbnR5cGUgZG90ID1cbiAgeyBsYWJlbCA6IFNldC5NKFN0cmluZ19saXN0KS50XG4gIDsgYXR0cmlidXRlcyA6IHN0cmluZyBTdHJpbmcuTWFwLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID1cbiAgfCBEb3Qgb2YgZG90XG4gIHwgSW5mbyBvZiBJbmZvLnRcbiAgfCBBcHBlbmQgb2ZcbiAgICAgIHsgcHJpb3IgOiB0XG4gICAgICA7IG5ld18gOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5mbyBpbmZvID0gSW5mbyBpbmZvXG5sZXQgYXBwZW5kIHByaW9yIG5ld18gPSBBcHBlbmQgeyBwcmlvcjsgbmV3XyB9XG5cbmxldCBkb3QgfmxhYmVsIH5hdHRyaWJ1dGVzID1cbiAgbGV0IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBsYWJlbCBpblxuICBEb3QgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgcmVjIHRvX2RvdCA9IGZ1bmN0aW9uXG4gIHwgSW5mbyBpIC0+XG4gICAgeyBsYWJlbCA9IFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmdfbGlzdCkgWyBJbmZvLnRvX3N0cmluZ19odW0gaSBdXG4gICAgOyBhdHRyaWJ1dGVzID0gU3RyaW5nLk1hcC5lbXB0eVxuICAgIH1cbiAgfCBEb3QgZG90IC0+IGRvdFxuICB8IEFwcGVuZCB7IHByaW9yOyBuZXdfIH0gLT5cbiAgICBsZXQgcHJpb3IgPSB0b19kb3QgcHJpb3IgaW5cbiAgICBsZXQgbmV3XyA9IHRvX2RvdCBuZXdfIGluXG4gICAgbGV0IGxhYmVsID0gU2V0LnVuaW9uIHByaW9yLmxhYmVsIG5ld18ubGFiZWwgaW5cbiAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICBNYXAubWVyZ2Vfc2tld2VkXG4gICAgICAgIHByaW9yLmF0dHJpYnV0ZXNcbiAgICAgICAgbmV3Xy5hdHRyaWJ1dGVzXG4gICAgICAgIH5jb21iaW5lOihmdW4gfmtleTpfIF9sZWZ0IHJpZ2h0IC0+IHJpZ2h0KVxuICAgIGluXG4gICAgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgZXNjYXBlX2RvdF9zdHJpbmcgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL2xhbmcuaHRtbCAqKVxuICBcIlxcXCJcIiBeIFN0cmluZy5zdWJzdHJfcmVwbGFjZV9hbGwgcyB+cGF0dGVybjpcIlxcXCJcIiB+d2l0aF86XCJcXFxcXFxcIlwiIF4gXCJcXFwiXCJcbjs7XG5cbmxldCBlc2NhcGVfcmVjb3JkX2xhYmVsIHMgPVxuICAoKiBodHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9zaGFwZXMuaHRtbCAqKVxuICBTdHJpbmcuY29uY2F0X21hcCBzIH5mOihmdW5jdGlvblxuICAgIHwgKCc8JyB8ICc+JyB8ICd7JyB8ICd9JyB8ICd8JyB8ICdcXFxcJyB8ICcgJykgYXMgYyAtPiBcIlxcXFxcIiBeIFN0cmluZy5vZl9jaGFyIGNcbiAgICB8IGMgLT4gU3RyaW5nLm9mX2NoYXIgYylcbjs7XG5cbmxldCB0b19zdHJpbmcgfm5hbWUgeyBsYWJlbDsgYXR0cmlidXRlcyB9ID1cbiAgbGV0IGxhYmVsID1cbiAgICBsYWJlbFxuICAgIHw+IFNldC50b19saXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjb2xzIC0+XG4gICAgICBcIntcIiBeIFN0cmluZy5jb25jYXQgKExpc3QubWFwIGNvbHMgfmY6ZXNjYXBlX3JlY29yZF9sYWJlbCkgfnNlcDpcInxcIiBeIFwifVwiKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcInxcIlxuICAgIHw+IGZ1biBzIC0+IFwie1wiIF4gcyBeIFwifVwiXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBhdHRyaWJ1dGVzXG4gICAgfD4gTWFwLnRvX2FsaXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgIHNwcmludGYge3wgJXM9JXN8fSAoZXNjYXBlX2RvdF9zdHJpbmcgaykgKGVzY2FwZV9kb3Rfc3RyaW5nIHYpKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICBpblxuICBzcHJpbnRmIHt8ICAlcyBbc2hhcGU9TXJlY29yZCBsYWJlbD0lcyAlc118fSBuYW1lIChlc2NhcGVfZG90X3N0cmluZyBsYWJlbCkgYXR0cmlidXRlc1xuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMSlcblxubGV0IG5leHQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gLTEpXG5sZXQgbm9uZSA9IC0xXG5sZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbmxldCBpc19zb21lIHQgPSB0ID49IDBcbmxldCBhZGQxIHQgPSB0ICsgMVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBQcmV2aW91c191cGRhdGVfa2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkXG4gICAgfCBOZWNlc3NhcnlcbiAgICB8IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTmVjZXNzYXJ5IG9mICdhXG4gICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZiA6ICdhIE5vZGVfdXBkYXRlLnQgLT4gdW5pdFxuICA7IG11dGFibGUgcHJldmlvdXNfdXBkYXRlX2tpbmQgOiBQcmV2aW91c191cGRhdGVfa2luZC50XG4gIDsgY3JlYXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSBmIH5hdDpjcmVhdGVkX2F0ID0geyBmOyBwcmV2aW91c191cGRhdGVfa2luZCA9IE5ldmVyX2JlZW5fdXBkYXRlZDsgY3JlYXRlZF9hdCB9XG5cbmxldCByZWFsbHlfcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSA9XG4gIHQucHJldmlvdXNfdXBkYXRlX2tpbmRcbiAgPC0gKG1hdGNoIG5vZGVfdXBkYXRlIHdpdGhcbiAgICB8IE5lY2Vzc2FyeSBfIC0+IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZCBfIC0+IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkIC0+IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeSAtPiBVbm5lY2Vzc2FyeSk7XG4gIHQuZiBub2RlX3VwZGF0ZVxuOztcblxubGV0IHJ1biB0IChub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCkgfm5vdyA9XG4gICgqIFdlIG9ubHkgcnVuIHRoZSBoYW5kbGVyIGlmIHdhcyBjcmVhdGVkIGluIGFuIGVhcmxpZXIgc3RhYmlsaXphdGlvbiBjeWNsZS4gIElmIHRoZVxuICAgICBoYW5kbGVyIHdhcyBjcmVhdGVkIGJ5IGFub3RoZXIgb24tdXBkYXRlIGhhbmRsZXIgZHVyaW5nIHRoZSBydW5uaW5nIG9mIG9uLXVwZGF0ZVxuICAgICBoYW5kbGVycyBpbiB0aGUgY3VycmVudCBzdGFiaWxpemF0aW9uLCB3ZSB0cmVhdCB0aGUgYWRkZWQgaGFuZGxlciBhcyBpZiBpdCB3ZXJlIGFkZGVkXG4gICAgIGFmdGVyIHRoaXMgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIFdlIHdpbGwgcnVuIGl0IGF0IHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sIGJlY2F1c2VcbiAgICAgdGhlIG5vZGUgd2l0aCB0aGUgaGFuZGxlciB3YXMgcHVzaGVkIG9uIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgdC5jcmVhdGVkX2F0IG5vdyA8IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggdC5wcmV2aW91c191cGRhdGVfa2luZCwgbm9kZV91cGRhdGUgd2l0aFxuICAgICgqIE9uY2UgYSBub2RlIGlzIGludmFsaWRhdGVkLCB0aGVyZSB3aWxsIG5ldmVyIGJlIGZ1cnRoZXIgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSxcbiAgICAgICBzaW5jZSBpbmNyZW1lbnRhbCBkb2VzIG5vdCBhbGxvdyBhbiBpbnZhbGlkIG5vZGUgdG8gYmVjb21lIHZhbGlkLiAqKVxuICAgIHwgSW52YWxpZGF0ZWQsIF8gLT4gKClcbiAgICAoKiBUaGVzZSBjYXNlcyBjYW4gaGFwcGVuIGlmIGEgbm9kZSBpcyBoYW5kbGVkIGFmdGVyIHN0YWJpbGl6YXRpb24gZHVlIHRvIGFub3RoZXJcbiAgICAgICBoYW5kbGVyLiAgQnV0IGZvciB0aGUgY3VycmVudCBoYW5kbGVyLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICBuZXcgaW5mb3JtYXRpb24gdG8gcHJvdmlkZS4gKilcbiAgICB8IENoYW5nZWQsIE5lY2Vzc2FyeSBfIHwgTmVjZXNzYXJ5LCBOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5LCBVbm5lY2Vzc2FyeSAtPiAoKVxuICAgICgqIElmIHRoaXMgaGFuZGxlciBoYXNuJ3Qgc2VlbiBhIG5vZGUgdGhhdCBpcyBjaGFuZ2luZywgd2UgdHJlYXQgdGhlIHVwZGF0ZSBhcyBhblxuICAgICAgIGluaXRpYWxpemF0aW9uLiAqKVxuICAgIHwgKE5ldmVyX2JlZW5fdXBkYXRlZCB8IFVubmVjZXNzYXJ5KSwgQ2hhbmdlZCAoXywgYSkgLT4gcmVhbGx5X3J1biB0IChOZWNlc3NhcnkgYSlcbiAgICAoKiBBbGwgb3RoZXIgdXBkYXRlcyBhcmUgcnVuIGFzIGlzLiAqKVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkLCAoTmVjZXNzYXJ5IF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgVW5uZWNlc3NhcnksIChOZWNlc3NhcnkgXyB8IEludmFsaWRhdGVkKVxuICAgIHwgTmVjZXNzYXJ5LCAoQ2hhbmdlZCBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZClcbiAgICB8IENoYW5nZWQsIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKSAtPiByZWFsbHlfcnVuIHQgbm9kZV91cGRhdGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBleG4gOiBleG5cbiAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGV4biA9IHsgZXhuOyBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIH1cbiIsIigqIFRoaXMgbW9kdWxlIGhhcyBhIGdpYW50IFttb2R1bGUgcmVjXSBkZWZpbmluZyBhbGwgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyB1c2VkXG4gICBpbiB0aGUgaW1wbGVtZW50YXRpb24uICBUaGUgZGVmaW5pdGlvbiBvZiBlYWNoIHR5cGUgaXMgdGhlbiByZXBlYXRlZCBpbiBpdHMgZmlsZTtcbiAgIGNvbW1lbnRzIGJlbG9uZyB0aGVyZSwgbm90IGhlcmUuXG5cbiAgIFdlIHB1dCBqdXN0IGVub3VnaCBzZXhwIGNvbnZlcnRlcnMgaGVyZSB0byBkaXNwbGF5IG5vZGUgaWRzLiAgVGhlIGRldGFpbGVkIHNleHBcbiAgIGNvbnZlcnRlcnMgYXJlIGdlbmVyYXRlZCB2aWEgW3dpdGggc2V4cF0gaW4gdGhlIGluZGl2aWR1YWwgZmlsZXMuICBEZWZpbmluZyB0aGUgc2V4cFxuICAgY29udmVydGVycyBvdXRzaWRlIG9mIHRoZSBbbW9kdWxlIHJlY10gbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFcbiAgIHNleHAgY29udmVydGVyIHRoYXQgd291bGQgdHJ5IHRvIHByb2R1Y2UgYW4gaW5maW5pdGUgc2V4cC5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIHJlYyBBZGp1c3RfaGVpZ2h0c19oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIEFkanVzdF9oZWlnaHRzX2hlYXBcblxuYW5kIEFsYXJtIDogc2lnXG4gIHR5cGUgdCA9IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbmVuZCA9XG4gIEFsYXJtXG5cbmFuZCBBbGFybV92YWx1ZSA6IHNpZ1xuICBtb2R1bGUgQWN0aW9uIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgQXQudFxuICAgICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogdCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBBbGFybV92YWx1ZVxuXG5hbmQgQXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICB9XG5lbmQgPVxuICBBcnJheV9mb2xkXG5cbmFuZCBBdCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdFxuXG5hbmQgQXRfaW50ZXJ2YWxzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdF9pbnRlcnZhbHNcblxuYW5kIEJpbmQgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgICA7IG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQmluZFxuXG5hbmQgQ2xvY2sgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQ2xvY2tcblxuYW5kIEV4cGVydCA6IHNpZ1xuICB0eXBlICdhIGVkZ2UgPVxuICAgIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgICA7IG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgcGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZSBbQEB1bmJveGVkXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBmIDogdW5pdCAtPiAnYVxuICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gICAgfVxuZW5kID1cbiAgRXhwZXJ0XG5cbmFuZCBGcmVlemUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICAgIH1cbmVuZCA9XG4gIEZyZWV6ZVxuXG5hbmQgSWZfdGhlbl9lbHNlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICAgIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgICB9XG5lbmQgPVxuICBJZl90aGVuX2Vsc2VcblxuYW5kIEludGVybmFsX29ic2VydmVyIDogc2lnXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IENyZWF0ZWRcbiAgICAgIHwgSW5fdXNlXG4gICAgICB8IERpc2FsbG93ZWRcbiAgICAgIHwgVW5saW5rZWRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIH1cblxuICB0eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyBpbnRlcm5hbF9vYnNlcnZlciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXJcblxuYW5kIEpvaW4gOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgSm9pblxuXG5hbmQgS2luZCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gICAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gICAgfCBDb25zdCBvZiAnYVxuICAgIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gICAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICAgIHwgSW52YWxpZFxuICAgIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gICAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gICAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICAgIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICAgIHwgVW5pbml0aWFsaXplZFxuICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgVmFyIG9mICdhIFZhci50XG4gICAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwNCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA1IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNiA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNyA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA4IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTAgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEyIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMyA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNCA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE1IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhMTVcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG5lbmQgPVxuICBLaW5kXG5cbmFuZCBOb2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IE5vZGVfaWQudFxuICAgIDsgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gICAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gICAgOyBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBwYXJlbnQwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBvYnNlcnZlcnMgOiAnYSBJbnRlcm5hbF9vYnNlcnZlci50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICAgIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl0gW0BAdW5ib3hlZF1cbiAgZW5kXG5cbiAgdmFsIGlzX3ZhbGlkIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX25lY2Vzc2FyeSA6IF8gdCAtPiBib29sXG4gIHZhbCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTm9kZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFBhY2tlZCA6PSBOb2RlLlBhY2tlZClcblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IGNvbmNhdCBbIFwiblwiOyBOb2RlX2lkLnRvX3N0cmluZyB0LmlkIF0gfD4gWyVzZXhwX29mOiBzdHJpbmddXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAdW5ib3hlZF1cblxuICAgIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyBub2RlXVxuICBlbmRcblxuICBsZXQgaXNfdmFsaWQgdCA9XG4gICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICB8IEludmFsaWQgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICA7O1xuXG4gICgqIFtpc19uZWNlc3NhcnldIGlzIGRlZmluZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgaXQgYmVmb3JlIG5vZGUubWwgaXMgYXZhaWxhYmxlLiAgSXQgaXNcbiAgICAgdXNlZCBkdXJpbmcgZ3JhcGggbWFuaXB1bGF0aW9uLCBhbmQgc28gaXMgd3JpdHRlbiB3aXRoIHNvbWUgY2FyZSB0byBiZSBmYXN0LiAqKVxuICBsZXQgaXNfbmVjZXNzYXJ5IHQgPVxuICAgIHQubnVtX3BhcmVudHMgPiAwXG4gICAgfHwgVW9wdC5pc19zb21lIHQub2JzZXJ2ZXJzXG4gICAgfHwgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICB8IEZyZWV6ZSBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8fCB0LmZvcmNlX25lY2Vzc2FyeVxuICA7O1xuXG4gIGxldCB0X2lzX2luamVjdGl2ZSAodHlwZSBhIGIpIChUIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpIDogKGEsIGIpIFR5cGVfZXF1YWwudCA9IFRcblxuICBsZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgKHR5cGUgYSBiKSAodDEgOiBhIHQpICh0MiA6IGIgdCkgPVxuICAgICgqIFRoaXMgaXMgdHlwZS1zYWZlIGFzc3VtaW5nIG5vIG9uZSBjYW4gZ2l2ZSB0aGUgc2FtZSBpbmNyZW1lbnRhbCBub2RlIHR3byBkaWZmZXJlbnRcbiAgICAgICB0eXBlcy4gIFRoaXMgaXMgdHJ1ZSBiZWNhdXNlIHRoZSBmaWVsZCBbbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2Egb3B0aW9uXSBwcmV2ZW50c1xuICAgICAgIGJvdGggc3VidHlwaW5nIGFuZCBwYXJhbWV0ZXJpYyBwb2x5bW9ycGhpc20uICBCdXQgdGhpcyBhbGxvd3MgdG8gYnJlYWtcbiAgICAgICBhYnN0cmFjdGlvbnMsIGFzIGluIHNvbWVvbmUgY291bGQgd3JpdGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0XG4gICAgICAgICB0eXBlIHUgKCogPSB0IHVuZGVybmVhdGggKilcbiAgICAgICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHQgSW5jci50ICogdSBJbmNyLnQgKCogdGhlIHR3byBpbmNyZW1lbnRhbHMgYXJlIHBoeXNfZXF1YWwgKilcbiAgICAgICBdfVxuXG4gICAgICAgYW5kIHdlIHdvdWxkIGZpZ3VyZSBvdXQgdGhhdCB0eXBlIHQgPSB1LiAgSG93ZXZlciwgd2UgY291bGQgYWRkIGEgVHlwZV9lcXVhbC5JZCB0b1xuICAgICAgIG5vZGVzIGFuZCBkbyB0aGUgc2FtZSwgc28gaXQgc2VlbXMgdG8gYmUgYSBtb3JlIGdlbmVyYWwgaXNzdWUuICopXG4gICAgaWYgcGh5c19zYW1lIHQxIHQyXG4gICAgdGhlbiBTb21lICh0X2lzX2luamVjdGl2ZSAoT2JqLm1hZ2ljIChUIDogXyBUeXBlX2VxdWFsLnQpIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpKVxuICAgIGVsc2UgTm9uZVxuICA7O1xuZW5kXG5cbmFuZCBPYnNlcnZlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZlxuZW5kID1cbiAgT2JzZXJ2ZXJcblxuYW5kIE9ubHlfaW5fZGVidWcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIE9ubHlfaW5fZGVidWdcblxuYW5kIFBhY2tlZF93ZWFrX2hhc2h0YmwgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG5lbmQgPVxuICBQYWNrZWRfd2Vha19oYXNodGJsXG5cbmFuZCBSZWNvbXB1dGVfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIFJlY29tcHV0ZV9oZWFwXG5cbmFuZCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZS50IC0+IHRcbmVuZCA9XG4gIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnNcblxuYW5kIFNjb3BlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBUb3AgLT4gXCJUb3BcIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICB8IEJpbmQgYmluZCAtPiBiaW5kLm1haW4gfD4gWyVzZXhwX29mOiBfIE5vZGUudF1cbiAgOztcbmVuZFxuXG5hbmQgU25hcHNob3QgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBiZWZvcmUgOiAnYVxuICAgIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFNuYXBzaG90XG5cbmFuZCBTdGF0ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgICA7IG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gICAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gICAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBTdGF0dXMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFN0YWJpbGl6aW5nXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHwgTm90X3N0YWJpbGl6aW5nXG4gICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5lbmQgPVxuICBTdGF0dXNcblxuYW5kIFN0ZXBfZnVuY3Rpb25fbm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFN0ZXBfZnVuY3Rpb25fbm9kZVxuXG5hbmQgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gICAgOyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICAgIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICAgIH1cbmVuZCA9XG4gIFVub3JkZXJlZF9hcnJheV9mb2xkXG5cbmFuZCBWYXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgICB9XG5cbiAgdHlwZSAnYSB2YXIgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIFZhclxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5WYXIudCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgKCogW3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gaXMgb25seSBzZXQgdG8gW1VvcHQuc29tZV0gaWYgdGhlIHVzZXIgY2FsbHNcbiAgICAgICBbVmFyLnNldF0gZHVyaW5nIHN0YWJpbGl6YXRpb24sIGluIHdoaWNoIGNhc2UgaXQgaG9sZHMgdGhlIChsYXN0KSB2YWx1ZSBzZXQuICBBdFxuICAgICAgIHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgYWxsIHN1Y2ggdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQgdG8gZG8gW3QudmFsdWUgPC1cbiAgICAgICB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgOyAoKiBbc2V0X2F0XSB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0IHJlY2VudCB0aW1lIFt0LnZhbHVlXSBjaGFuZ2VkLlxuICAgICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgdGltZSBbVmFyLnNldCB0XSB3YXMgY2FsbGVkLCBkdWUgdG8gdGhlIGVmZmVjdCBvZiBbVmFyLnNldF0gZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbiBiZWluZyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnZhbHVlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+c2V0X2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+d2F0Y2g6XG4gICAgICAgIChjaGVjayAoZnVuICh3YXRjaCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB3YXRjaC5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIHBvc3NpYmxlIHdpdGggW351c2VfY3VycmVudF9zY29wZTp0cnVlXSAqKVxuICAgICAgICAgICB8IFZhciB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpKVxuOztcblxubGV0IGluY3Jfc3RhdGUgdCA9IHQud2F0Y2guc3RhdGVcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICdhIHZhciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0ID0gVHlwZXMuVmFyLlBhY2tlZC50ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbGF0ZXN0X3ZhbHVlIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICBlbHNlIHQudmFsdWVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG5tb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBGX2ludmVyc2Ugb2YgKCdiIC0+ICdhIC0+ICdiKVxuICAgIHwgVXBkYXRlIG9mICgnYiAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdiKVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1cGRhdGUgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVcGRhdGUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgIHwgRl9pbnZlcnNlIGZfaW52ZXJzZSAtPlxuICAgICAgZnVuIGZvbGRfdmFsdWUgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+IGYgKGZfaW52ZXJzZSBmb2xkX3ZhbHVlIG9sZF92YWx1ZSkgbmV3X3ZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLlVub3JkZXJlZF9hcnJheV9mb2xkLnQgPVxuICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICA7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+dXBkYXRlOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0O1xuICAgICAgICAgICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGVcbiAgICAgICAgICAgICAgICA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgY2hpbGQudmFsdWVfb3B0KSkpKVxuICAgICAgfmZvbGRfdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIGZvbGRfdmFsdWUgLT5cbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2FjYyBmb2xkX3ZhbHVlO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgIChVb3B0LmlzX3NvbWUgZm9sZF92YWx1ZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgKHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpKSlcbiAgICAgIH5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8PSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpKSlcbiAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzOlxuICAgICAgICAoY2hlY2sgKGZ1biBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIC0+XG4gICAgICAgICAgIGFzc2VydCAoZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA+IDApKSkpXG47O1xuXG5sZXQgY3JlYXRlIH5pbml0IH5mIH51cGRhdGUgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgfmNoaWxkcmVuIH5tYWluID1cbiAgeyBpbml0XG4gIDsgZlxuICA7IHVwZGF0ZSA9IFVwZGF0ZS51cGRhdGUgdXBkYXRlIH5mXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICA7IGNoaWxkcmVuXG4gIDsgbWFpblxuICA7IGZvbGRfdmFsdWUgPVxuICAgICAgVW9wdC5ub25lXG4gICgqIFdlIG1ha2UgW251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc11cbiAgICAgc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgZnVsbCBjb21wdXRhdGlvbiB0aGUgbmV4dCB0aW1lIHRoZSBub2RlIGlzIGNvbXB1dGVkLiAqKVxuICA7IG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB9XG47O1xuXG5sZXQgZnVsbF9jb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW47IF8gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGNvbXB1dGUgdCA9XG4gIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgdGhlbiAoXG4gICAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSAwO1xuICAgIHQuZm9sZF92YWx1ZSA8LSBVb3B0LnNvbWUgKGZ1bGxfY29tcHV0ZSB0KSk7XG4gIFVvcHQudmFsdWVfZXhuIHQuZm9sZF92YWx1ZVxuOztcblxubGV0IGZvcmNlX2Z1bGxfY29tcHV0ZSB0ID1cbiAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQubm9uZTtcbiAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBjaGlsZF9jaGFuZ2VkXG4gICAgICAodHlwZSBhIGIpXG4gICAgICAodCA6IChhLCBfKSB0KVxuICAgICAgfihjaGlsZCA6IGIgTm9kZS50KVxuICAgICAgfmNoaWxkX2luZGV4XG4gICAgICB+KG9sZF92YWx1ZV9vcHQgOiBiIFVvcHQudClcbiAgICAgIH4obmV3X3ZhbHVlIDogYilcbiAgPVxuICBsZXQgY2hpbGRfYXRfaW5kZXggPSB0LmNoaWxkcmVuLihjaGlsZF9pbmRleCkgaW5cbiAgbWF0Y2ggTm9kZS50eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSBjaGlsZCBjaGlsZF9hdF9pbmRleCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXSBtaXNtYXRjaFwiXG4gICAgICAgICAgfnVub3JkZXJlZF9hcnJheV9mb2xkOih0IDogKF8sIF8pIHQpXG4gICAgICAgICAgKGNoaWxkX2luZGV4IDogaW50KVxuICAgICAgICAgIChjaGlsZCA6IF8gTm9kZS50KV1cbiAgfCBTb21lIFQgLT5cbiAgICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIC0gMVxuICAgIHRoZW4gKFxuICAgICAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlICsgMTtcbiAgICAgICgqIFdlIG9ubHkgcmVhY2ggdGhpcyBjYXNlIGlmIHdlIGhhdmUgYWxyZWFkeSBkb25lIGEgZnVsbCBjb21wdXRlLCBpbiB3aGljaCBjYXNlXG4gICAgICAgICBbVW9wdC5pc19zb21lIHQuZm9sZF92YWx1ZV0gYW5kIFtVb3B0LmlzX3NvbWUgb2xkX3ZhbHVlX29wdF0uICopXG4gICAgICB0LmZvbGRfdmFsdWVcbiAgICAgIDwtIFVvcHQuc29tZVxuICAgICAgICAgICAodC51cGRhdGVcbiAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIHQuZm9sZF92YWx1ZSlcbiAgICAgICAgICAgICAgfm9sZF92YWx1ZTooVW9wdC52YWx1ZV9leG4gb2xkX3ZhbHVlX29wdClcbiAgICAgICAgICAgICAgfm5ld192YWx1ZSkpXG4gICAgZWxzZSBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgdGhlbiBmb3JjZV9mdWxsX2NvbXB1dGUgdFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5cbnR5cGUgdCA9IChUeXBlcy5BbGFybV92YWx1ZS50W0BzZXhwLm9wYXF1ZV0pIEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudWxsID0gQWxhcm0ubnVsbCAoKVxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEFsYXJtX3ZhbHVlID0gVHlwZXMuQWxhcm1fdmFsdWVcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5TdGVwX2Z1bmN0aW9uX25vZGUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgY2hpbGQgOiAnYSBTdGVwX2Z1bmN0aW9uLnQgTm9kZS50IFVvcHQudFxuICA7IG11dGFibGUgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gIDsgbXV0YWJsZSB1cGNvbWluZ19zdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IChBbGFybV92YWx1ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBwaHlzX3NhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBbdXBjb21pbmdfc3RlcHNdIGJlY29tZXMgZW1wdHkuICopXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2hpbGQ6aWdub3JlXG4gICAgICB+ZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdDppZ25vcmVcbiAgICAgIH52YWx1ZTooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH51cGNvbWluZ19zdGVwczppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmFsYXJtX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biAoYWxhcm1fdmFsdWUgOiBBbGFybV92YWx1ZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBhbGFybV92YWx1ZS5hY3Rpb24gd2l0aFxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdDIgLT4gYXNzZXJ0IChwaHlzX3NhbWUgdCB0MilcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcblxubGV0IHJlYyBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMSBzdGVwcyA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IFNvbWUgKChzdGVwX2F0LCBhMiksIHN0ZXBzMikgd2hlbiBUaW1lX25zLiggPj0gKSB0b18gc3RlcF9hdCAtPlxuICAgIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGEyIHN0ZXBzMlxuICB8IF8gLT5cbiAgICB0LnZhbHVlIDwtIFVvcHQuc29tZSBhMTtcbiAgICB0LnVwY29taW5nX3N0ZXBzIDwtIHN0ZXBzXG47O1xuXG5sZXQgYWR2YW5jZSB0IH50b18gPSBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyAoVW9wdC52YWx1ZV9leG4gdC52YWx1ZSkgdC51cGNvbWluZ19zdGVwc1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICgnYSwgJ2FjYykgdCA9ICgnYSwgJ2FjYykgVHlwZXMuQXJyYXlfZm9sZC50ID1cbiAgeyBpbml0IDogJ2FjY1xuICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2FjYyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aW5pdDooY2hlY2sgaW52YXJpYW50X2FjYylcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0KSkpKVxuOztcblxubGV0IGNvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbiB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0LnQgPVxuICB7IG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IEFmdGVyIC0+ICgpICgqIGhhcHBlbnMgb25jZSB0aGUgY3VycmVudCB0aW1lIHBhc3NlcyBbdC5hdF0uICopXG4gICAgICAgICAgIHwgQXQgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmF0Omlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdF9pbnRlcnZhbHMudCA9XG4gIHsgbWFpbiA6IHVuaXQgTm9kZS50XG4gIDsgYmFzZSA6IFRpbWVfbnMudFxuICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEF0X2ludGVydmFscyB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YmFzZTppZ25vcmVcbiAgICAgIH5pbnRlcnZhbDooY2hlY2sgKGZ1biBpbnRlcnZhbCAtPiBhc3NlcnQgKFRpbWVfbnMuU3Bhbi5pc19wb3NpdGl2ZSBpbnRlcnZhbCkpKVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBCaW5kID0gVHlwZXMuQmluZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5tb2R1bGUgU2NvcGUgPSBUeXBlcy5TY29wZVxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBCaW5kLnQgPVxuICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgOyAoKiBbZl0gaXMgdGhlIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdGhhdCB3ZSBydW4gZWFjaCB0aW1lIFt0Lmxoc10gY2hhbmdlcy4gIEl0IGlzXG4gICAgICAgbXV0YWJsZSBvbmx5IHNvIHdlIGNhbiBjbGVhciBpdCB3aGVuIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGYgOiAnYSAtPiAnYiBOb2RlLnRcbiAgOyBsaHMgOiAnYSBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyAoKiBbcmhzXSBpcyBpbml0aWFsbHkgW25vbmVdLCBhbmQgYWZ0ZXIgdGhhdCBpcyBbc29tZV0gb2YgdGhlIHJlc3VsdCBvZiB0aGUgbW9zdCByZWNlbnRcbiAgICAgICBjYWxsIHRvIFtmXS4gKilcbiAgICBtdXRhYmxlIHJocyA6ICdiIE5vZGUudCBVb3B0LnRcbiAgOyAoKiBbcmhzX3Njb3BlXSBpcyB0aGUgc2NvcGUgaW4gd2hpY2ggW3QuZl0gaXMgcnVuLCBpLmUuIGl0IGlzIFtTY29wZS5CaW5kIHRdLiAgSXQgaXNcbiAgICAgICBbbXV0YWJsZV0gb25seSB0byBhdm9pZCBhIFtsZXQgcmVjXSBkdXJpbmcgY3JlYXRpb24uICopXG4gICAgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gIDsgKCogW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gaXMgdGhlIGhlYWQgb2YgdGhlIHNpbmdseS1saW5rZWQgbGlzdCBvZiBub2RlcyBjcmVhdGVkIG9uXG4gICAgICAgdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBbdF0sIGkuZS4gaW4gW3QucmhzX3Njb3BlXS4gKilcbiAgICBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaXNfdmFsaWQgdCA9XG4gIG1hdGNoIHQubWFpbi5raW5kIHdpdGhcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyB0IH4oZiA6IE5vZGUuUGFja2VkLnQgLT4gdW5pdCkgPVxuICBsZXQgciA9IHJlZiB0LmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIGYgKFQgbm9kZV9vbl9yaHMpXG4gIGRvbmVcbjs7XG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIF9pbnZhcmlhbnRfYiB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQmluZF9tYWluIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgbGhzX2NoYW5nZS5jcmVhdGVkX2luIHQubWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbGhzX2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQmluZF9saHNfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5yaHM6aWdub3JlXG4gICAgICB+cmhzX3Njb3BlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgU2NvcGUuVG9wIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICB8IEJpbmQgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpKSlcbiAgICAgIH5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM6XG4gICAgICAgIChjaGVjayAoZnVuIF8gLT5cbiAgICAgICAgICAgaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQucmhzX3Njb3BlKTtcbiAgICAgICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKHQubGhzX2NoYW5nZS5oZWlnaHQgPCBub2RlLmhlaWdodCkpKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSBlZGdlID0gJ2EgVHlwZXMuRXhwZXJ0LmVkZ2UgPVxuICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICA7ICgqIFtpbmRleF0gaXMgZGVmaW5lZCB3aGVuZXZlciB0aGUgW2VkZ2VdIGlzIGluIHRoZSBbY2hpbGRyZW5dIG9mIHNvbWUgW3RdLiBUaGVuIGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIHRoaXMgW2VkZ2VdIGluIHRoYXQgW2NoaWxkcmVuXSBhcnJheS4gSXQgbWlnaHQgc2VlbSByZWR1bmRhbnQgd2l0aCBhbGxcbiAgICAgICB0aGUgb3RoZXIgaW5kZXhlcyB3ZSBoYXZlLCBidXQgaXQgaXMgbmVjZXNzYXJ5IHRvIHJlbW92ZSBjaGlsZHJlbi4gIFRoZSBpbmRleCBtYXlcbiAgICAgICBjaGFuZ2UgYXMgc2libGluZyBjaGlsZHJlbiBhcmUgcmVtb3ZlZC4gKilcbiAgICBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHBhY2tlZF9lZGdlID0gVHlwZXMuRXhwZXJ0LnBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2VcbltAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkV4cGVydC50ID1cbiAgeyBmIDogdW5pdCAtPiAnYVxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICA7ICgqIFdoZW4gc2V0LCBtYWtlcyB0aGUgbm9kZSBvZiBbdF0gc3RhbGUuICBJdCBpcyBzZXQgd2hlbiB0aGUgc2V0IG9mIGNoaWxkcmVuIGNoYW5nZXMuXG4gICAgICAgT3RoZXJ3aXNlIHRoZSBub3JtYWwgY2hlY2sgb2Ygc3RhbGVuZXNzIChjb21wYXJpbmcgdGhlIFtjaGFuZ2VkX2F0XSBmaWVsZCBvZlxuICAgICAgIGNoaWxkcmVuIGFuZCB0aGUgW3JlY29tcHV0ZWRfYXRdIGZpZWxkIGZvciB0aGUgbm9kZSBvZiBbdF0pIHdvdWxkIG5vdCBiZSBlbm91Z2guXG4gICAgICAgVGhpcyBwbGF5cyBhIHJvbGUgc2ltaWxhciB0byB0aGUgY3V0b2ZmIG9mIFtOZXZlcl0gZm9yIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmRzLCBidXRcbiAgICAgICB3ZSBkb24ndCBoYXZlIGEgc3BlY2lhbCBjaGlsZC4gKilcbiAgICBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICA7ICgqIFRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHBvaW50IHRvIHVzLiAgVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbm9kZVxuICAgICAgIG9mIFt0XSBuZWVkcyB0byBpbnZhbGlkYXRlZCwgd2l0aG91dCBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIGNoaWxkcmVuLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWVkZWQgZm9yIG90aGVyIG5vZGVzLCBiZWNhdXNlIHRoZXJlIGFyZSBubyBvdGhlciBub2RlcyB0aGF0IGhhdmUgYSBwb3RlbnRpYWxseVxuICAgICAgIGxhcmdlIGFuZCBkeW5hbWljIHNldCBvZiBjaGlsZHJlbi4gKilcbiAgICBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hldGhlciB3ZSB3aWxsIGZpcmUgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcyBmb3IgYWxsIGNoaWxkcmVuIHdoZW4gdGhlIG5vZGUgb2YgW3RdXG4gICAgICAgaXRzZWxmIHJ1bnMuICBVc2VkIHRvIG1ha2Ugc3VyZSB3ZSByZXJ1biBldmVyeXRoaW5nIGFmdGVyIFt0XSBzd2l0Y2hlcyBmcm9tXG4gICAgICAgdW5vYnNlcnZhYmxlIGFuZCBiYWNrIHRvIG9ic2VydmFibGUuICopXG4gICAgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudFxuICAgICAgX2ludmFyaWFudF9hXG4gICAgICB7IGYgPSBfXG4gICAgICA7IGNoaWxkcmVuXG4gICAgICA7IG51bV9jaGlsZHJlblxuICAgICAgOyBmb3JjZV9zdGFsZSA9IF9cbiAgICAgIDsgbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBfXG4gICAgICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gX1xuICAgICAgfVxuICA9XG4gIGFzc2VydCAobnVtX2NoaWxkcmVuIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIGNoaWxkcmVuKTtcbiAgaWdub3JlIG51bV9pbnZhbGlkX2NoaWxkcmVuO1xuICAoKiBpbnZhcmlhbnQgaXMgYmVsb3csIGJlY2F1c2Ugd2UgbmVlZCBzb21lIGNvbnRleHQgKilcbiAgVW5pZm9ybV9hcnJheS5pdGVyaSBjaGlsZHJlbiB+ZjooZnVuIGkgdW9wdCAtPlxuICAgIG1hdGNoIGkgPCBudW1fY2hpbGRyZW4gd2l0aFxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gdW9wdCBpblxuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoVW9wdC52YWx1ZV9leG4gci5pbmRleCkgfmV4cGVjdDppXG4gICAgfCBmYWxzZSAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSB1b3B0KSlcbjs7XG5cbmxldCBpbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgIHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgbnVtX2ludmFsaWRfY2hpbGRyZW47IF8gfVxuICAgICAgfmlzX25lY2Vzc2FyeVxuICA9XG4gIGlmIG5vdCBpc19uZWNlc3NhcnlcbiAgdGhlbiBbJXRlc3RfcmVzdWx0OiBpbnRdIG51bV9pbnZhbGlkX2NoaWxkcmVuIH5leHBlY3Q6MFxuICBlbHNlIChcbiAgICBsZXQgY291bnRfaW52YWxpZF9jaGlsZHJlbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpKSBpblxuICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIHIuY2hpbGQpIHRoZW4gaW5jciBjb3VudF9pbnZhbGlkX2NoaWxkcmVuXG4gICAgZG9uZTtcbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIG51bV9pbnZhbGlkX2NoaWxkcmVuIH5leHBlY3Q6IWNvdW50X2ludmFsaWRfY2hpbGRyZW4pXG47O1xuXG5sZXQgY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9XG4gIHsgZlxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlXG4gIDsgY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gIDsgbnVtX2NoaWxkcmVuID0gMFxuICA7IGZvcmNlX3N0YWxlID0gZmFsc2VcbiAgOyBudW1faW52YWxpZF9jaGlsZHJlbiA9IDBcbiAgOyB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IHRydWVcbiAgfVxuOztcblxubGV0IG1ha2Vfc3RhbGUgdCA9XG4gIGlmIHQuZm9yY2Vfc3RhbGVcbiAgdGhlbiBgQWxyZWFkeV9zdGFsZVxuICBlbHNlIChcbiAgICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gICAgYE9rKVxuOztcblxubGV0IGluY3JfaW52YWxpZF9jaGlsZHJlbiB0ID0gdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuICsgMVxubGV0IGRlY3JfaW52YWxpZF9jaGlsZHJlbiB0ID0gdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIC0gMVxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgPVxuICBpZiB0Lm51bV9jaGlsZHJlbiA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuXG4gIHRoZW4gKFxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9jaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pO1xuICAgIGxldCBuZXdfbWF4ID0gSW50Lm1heCAyICgyICogVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbikgaW5cbiAgICB0LmNoaWxkcmVuIDwtIFVuaWZvcm1fYXJyYXkucmVhbGxvYyB0LmNoaWxkcmVuIH5sZW46bmV3X21heClcbjs7XG5cbmxldCBhZGRfY2hpbGRfZWRnZSB0IHBhY2tlZF9lZGdlID1cbiAgbGV0IChFIGVkZ2UpID0gcGFja2VkX2VkZ2UgaW5cbiAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWRnZS5pbmRleCk7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0O1xuICBsZXQgbmV3X2NoaWxkX2luZGV4ID0gdC5udW1fY2hpbGRyZW4gaW5cbiAgZWRnZS5pbmRleCA8LSBVb3B0LnNvbWUgbmV3X2NoaWxkX2luZGV4O1xuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIG5ld19jaGlsZF9pbmRleCAoVW9wdC5zb21lIHBhY2tlZF9lZGdlKTtcbiAgdC5udW1fY2hpbGRyZW4gPC0gdC5udW1fY2hpbGRyZW4gKyAxO1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gICgqIFdlIHdpbGwgYnVtcCB0aGUgbnVtYmVyIG9mIGludmFsaWQgY2hpbGRyZW4gaWYgbmVjZXNzYXJ5IHdoZW4gY29ubmVjdGluZyBjaGlsZCBhbmRcbiAgICAgcGFyZW50LiAgU2FtZSB0aGluZyBmb3IgcnVubmluZyB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzLiAqKVxuICBuZXdfY2hpbGRfaW5kZXhcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuIHQgfmNoaWxkX2luZGV4MSB+Y2hpbGRfaW5kZXgyID1cbiAgbGV0IChFIGVkZ2UxKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSkgaW5cbiAgbGV0IChFIGVkZ2UyKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MikgaW5cbiAgZWRnZTEuaW5kZXggPC0gVW9wdC5zb21lIGNoaWxkX2luZGV4MjtcbiAgZWRnZTIuaW5kZXggPC0gVW9wdC5zb21lIGNoaWxkX2luZGV4MTtcbiAgVW5pZm9ybV9hcnJheS5zd2FwIHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxIGNoaWxkX2luZGV4MlxuOztcblxubGV0IGxhc3RfY2hpbGRfZWRnZV9leG4gdCA9XG4gIGxldCBsYXN0X2luZGV4ID0gdC5udW1fY2hpbGRyZW4gLSAxIGluXG4gIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXgpXG47O1xuXG5sZXQgcmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gdCA9XG4gIGxldCBsYXN0X2luZGV4ID0gdC5udW1fY2hpbGRyZW4gLSAxIGluXG4gIGxldCBwYWNrZWRfZWRnZV9vcHQgPSBVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggaW5cbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IFVvcHQubm9uZTtcbiAgdC5udW1fY2hpbGRyZW4gPC0gbGFzdF9pbmRleDtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICBhc3NlcnQgKFVvcHQuaXNfc29tZSBwYWNrZWRfZWRnZV9vcHQpO1xuICBsZXQgKEUgZWRnZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSBwYWNrZWRfZWRnZV9vcHQgaW5cbiAgZWRnZS5pbmRleCA8LSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBiZWZvcmVfbWFpbl9jb21wdXRhdGlvbiB0ID1cbiAgaWYgdC5udW1faW52YWxpZF9jaGlsZHJlbiA+IDBcbiAgdGhlbiBgSW52YWxpZFxuICBlbHNlIChcbiAgICB0LmZvcmNlX3N0YWxlIDwtIGZhbHNlO1xuICAgIGxldCB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgaW5cbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIGZhbHNlO1xuICAgIGlmIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzXG4gICAgdGhlblxuICAgICAgZm9yIGkgPSAwIHRvIHQubnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBpKSBpblxuICAgICAgICByLm9uX2NoYW5nZSAoVW9wdC52YWx1ZV9leG4gci5jaGlsZC52YWx1ZV9vcHQpXG4gICAgICBkb25lO1xuICAgIGBPaylcbjs7XG5cbmxldCBvYnNlcnZhYmlsaXR5X2NoYW5nZSB0IH5pc19ub3dfb2JzZXJ2YWJsZSA9XG4gIHQub25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgfmlzX25vd19vYnNlcnZhYmxlO1xuICBpZiBub3QgaXNfbm93X29ic2VydmFibGVcbiAgdGhlbiAoXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSB0cnVlO1xuICAgICgqIElmIHdlIGRvbid0IHJlc2V0IG51bV9pbnZhbGlkX2NoaWxkcmVuLCB3ZSB3b3VsZCBkb3VibGUgY291bnQgdGhlbToganVzdCBpbWFnaW5lXG4gICAgICAgd2hhdCBoYXBwZW5zIHdlIGlmIHJlY29ubmVjdC9kaXNjb25uZWN0L3JlY29ubmVjdC9kaXNjb25uZWN0IHdpdGggYW4gaW52YWxpZFxuICAgICAgIGNoaWxkLiAqKVxuICAgIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gMClcbjs7XG5cbmxldCBydW5fZWRnZV9jYWxsYmFjayB0IH5jaGlsZF9pbmRleCA9XG4gIGlmIG5vdCB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzXG4gIHRoZW4gKFxuICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4KSBpblxuICAgICgqIFRoaXMgdmFsdWUgaXMgbm90IG5lY2Vzc2FyaWx5IHNldCwgYmVjYXVzZSB3ZSB0cnkgdG8gcnVuIHRoaXMgd2hlbiBjb25uZWN0aW5nIHRoZVxuICAgICAgIG5vZGUgdG8gaXRzIGNoaWxkcmVuLCB3aGljaCBjb3VsZCBiZSBiZWZvcmUgdGhleSBoYXZlIHJ1biBldmVuIG9uY2UuICBBbHNvIHRoZSBub2RlXG4gICAgICAgY291bGQgYmUgaW52YWxpZC4gKilcbiAgICBpZiBVb3B0LmlzX3NvbWUgci5jaGlsZC52YWx1ZV9vcHRcbiAgICB0aGVuIHIub25fY2hhbmdlIChVb3B0LnVuc2FmZV92YWx1ZSByLmNoaWxkLnZhbHVlX29wdCkpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuaW5jbHVkZSBUeXBlcy5TY29wZVxuXG5sZXQgdG9wID0gVG9wXG5cbmxldCBpc190b3AgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGlnbm9yZSBiaW5kXG47O1xuXG4oKiBVbmxpa2UgZm9yIG5vZGVzLCB0aGVyZSBpcyBubyBpbnZhcmlhbnQgW2lzX25lY2Vzc2FyeSB0IDw9PiBoZWlnaHQgPiAtMV0gKGRvZXNuJ3Qgd29ya1xuICAgYmVjYXVzZSBvZiBbVG9wXSkuICBUaGlzIGlzIGZpbmUgc2luY2UgdGhlIGhlaWdodCBvZiBhIHNjb3BlIGlzIG9ubHkgdXNlZCB0byBjb25zdHJhaW5cbiAgIG90aGVyIGhlaWdodHMsIG5vdCB0byBzY2hlZHVsZSBpdC4gKilcbmxldCBoZWlnaHQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAtMVxuICB8IEJpbmQgYmluZCAtPiBiaW5kLmxoc19jaGFuZ2UuaGVpZ2h0XG47O1xuXG5sZXQgaXNfdmFsaWQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaXNfdmFsaWQgYmluZFxuOztcblxubGV0IGlzX25lY2Vzc2FyeSA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gTm9kZS5pc19uZWNlc3NhcnkgYmluZC5tYWluXG47O1xuXG5sZXQgYWRkX25vZGUgdCAobm9kZSA6IF8gTm9kZS50KSA9XG4gIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdCk7XG4gIG1hdGNoIHQgd2l0aFxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPlxuICAgIG5vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPC0gYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7XG4gICAgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPC0gVW9wdC5zb21lIChUeXBlcy5Ob2RlLlBhY2tlZC5UIG5vZGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkZyZWV6ZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBmcmVlemluZyBhbiBpbnZhbGlkIHZhbHVlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIG9uIGJlY29taW5nIGZyb3plbiAqKVxuICAgICAgICAgICB8IEZyZWV6ZSB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2hpbGQ6aWdub3JlXG4gICAgICB+b25seV9mcmVlemVfd2hlbjppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLklmX3RoZW5fZWxzZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgdGVzdCA6IGJvb2wgTm9kZS50XG4gIDsgdGVzdF9jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gIDsgdGhlbl8gOiAnYSBOb2RlLnRcbiAgOyBlbHNlXyA6ICdhIE5vZGUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IElmX3RoZW5fZWxzZSB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH50ZXN0Omlnbm9yZVxuICAgICAgfnRlc3RfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAodGVzdF9jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggdGVzdF9jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jdXJyZW50X2JyYW5jaDpcbiAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9icmFuY2ggLT5cbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCBjdXJyZW50X2JyYW5jaCA9IFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC50aGVuXyB8fCBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQuZWxzZV8pKSkpXG4gICAgICB+dGhlbl86aWdub3JlXG4gICAgICB+ZWxzZV86aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Kb2luLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBsaHMgOiAnYSBOb2RlLnQgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSm9pbl9tYWluIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbGhzX2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSm9pbl9saHNfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5yaHM6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5TbmFwc2hvdC50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBiZWZvcmUgOiAnYVxuICA7IHZhbHVlX2F0IDogJ2EgTm9kZS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIHNuYXBzaG90dGluZyBhbiBpbnZhbGlkIG5vZGUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgYWZ0ZXIgdGhlIHNuYXBzaG90ICopXG4gICAgICAgICAgIHwgU25hcHNob3QgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmF0Omlnbm9yZVxuICAgICAgfmJlZm9yZTooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICB+dmFsdWVfYXQ6aWdub3JlXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5LaW5kLnQgPVxuICB8IEFycmF5X2ZvbGQgOiAoXywgJ2EpIEFycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgQXQgOiBBdC50IC0+IEJlZm9yZV9vcl9hZnRlci50IHRcbiAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgfCBCaW5kX2xoc19jaGFuZ2UgOiAoXywgXykgQmluZC50IC0+IHVuaXQgdFxuICB8IEJpbmRfbWFpbiA6IChfLCAnYSkgQmluZC50IC0+ICdhIHRcbiAgfCBDb25zdCBvZiAnYVxuICB8IEV4cGVydCBvZiAnYSBFeHBlcnQudFxuICB8IEZyZWV6ZSBvZiAnYSBGcmVlemUudFxuICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgfCBJZl90aGVuX2Vsc2Ugb2YgJ2EgSWZfdGhlbl9lbHNlLnRcbiAgfCBJbnZhbGlkXG4gIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gIHwgSm9pbl9tYWluIG9mICdhIEpvaW4udFxuICB8IE1hcCA6ICgnYTEgLT4gJ2EpICogJ2ExIE5vZGUudCAtPiAnYSB0XG4gIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICB8IFN0ZXBfZnVuY3Rpb24gb2YgJ2EgU3RlcF9mdW5jdGlvbl9ub2RlLnRcbiAgfCBVbmluaXRpYWxpemVkXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IFZhciBvZiAnYSBWYXIudFxuICB8IE1hcDIgOiAoJ2ExIC0+ICdhMiAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDQgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgKiAnYTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNiA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNyA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwOCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwOSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTAgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTEgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2ExMSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMiA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTMgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxNCA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhMTRcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxNSA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhMTRcbiAgICAgICAtPiAnYTE1XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAqICdhMTUgTm9kZS50XG4gICAgICAtPiAnYSB0XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbmFtZSA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQXJyYXlfZm9sZCBfIC0+IFwiQXJyYXlfZm9sZFwiXG4gIHwgQXQgXyAtPiBcIkF0XCJcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBcIkF0X2ludGVydmFsc1wiXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gXCJCaW5kX2xoc19jaGFuZ2VcIlxuICB8IEJpbmRfbWFpbiBfIC0+IFwiQmluZF9tYWluXCJcbiAgfCBDb25zdCBfIC0+IFwiQ29uc3RcIlxuICB8IEV4cGVydCBfIC0+IFwiRXhwZXJ0XCJcbiAgfCBGcmVlemUgXyAtPiBcIkZyZWV6ZVwiXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiBcIklmX3Rlc3RfY2hhbmdlXCJcbiAgfCBJZl90aGVuX2Vsc2UgXyAtPiBcIklmX3RoZW5fZWxzZVwiXG4gIHwgSW52YWxpZCAtPiBcIkludmFsaWRcIlxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IFwiSm9pbl9saHNfY2hhbmdlXCJcbiAgfCBKb2luX21haW4gXyAtPiBcIkpvaW5fbWFpblwiXG4gIHwgTWFwIF8gLT4gXCJNYXBcIlxuICB8IE1hcDIgXyAtPiBcIk1hcDJcIlxuICB8IE1hcDMgXyAtPiBcIk1hcDNcIlxuICB8IE1hcDQgXyAtPiBcIk1hcDRcIlxuICB8IE1hcDUgXyAtPiBcIk1hcDVcIlxuICB8IE1hcDYgXyAtPiBcIk1hcDZcIlxuICB8IE1hcDcgXyAtPiBcIk1hcDdcIlxuICB8IE1hcDggXyAtPiBcIk1hcDhcIlxuICB8IE1hcDkgXyAtPiBcIk1hcDlcIlxuICB8IE1hcDEwIF8gLT4gXCJNYXAxMFwiXG4gIHwgTWFwMTEgXyAtPiBcIk1hcDExXCJcbiAgfCBNYXAxMiBfIC0+IFwiTWFwMTJcIlxuICB8IE1hcDEzIF8gLT4gXCJNYXAxM1wiXG4gIHwgTWFwMTQgXyAtPiBcIk1hcDE0XCJcbiAgfCBNYXAxNSBfIC0+IFwiTWFwMTVcIlxuICB8IFNuYXBzaG90IF8gLT4gXCJTbmFwc2hvdFwiXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IFwiU3RlcF9mdW5jdGlvblwiXG4gIHwgVW5pbml0aWFsaXplZCAtPiBcIlVuaW5pdGlhbGl6ZWRcIlxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT4gXCJVbm9yZGVyZWRfYXJyYXlfZm9sZFwiXG4gIHwgVmFyIF8gLT4gXCJWYXJcIlxuOztcblxubGV0IGludmFyaWFudCA6IHR5cGUgYS4gYSBJbnZhcmlhbnQudCAtPiBhIHQgSW52YXJpYW50LnQgPVxuICBmdW4gaW52YXJpYW50X2EgdCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIGFycmF5X2ZvbGQgLT4gQXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIGFycmF5X2ZvbGRcbiAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IEF0X2ludGVydmFscy5pbnZhcmlhbnQgYXRfaW50ZXJ2YWxzXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGlnbm9yZSBiaW5kXG4gIHwgQmluZF9tYWluIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIGJpbmRcbiAgfCBDb25zdCBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFeHBlcnQgZSAtPiBFeHBlcnQuaW52YXJpYW50IGludmFyaWFudF9hIGVcbiAgfCBGcmVlemUgZnJlZXplIC0+IEZyZWV6ZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgZnJlZXplXG4gIHwgSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaWdub3JlIGlmX3RoZW5fZWxzZVxuICB8IElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpbnZhcmlhbnRfYSBpZl90aGVuX2Vsc2VcbiAgfCBJbnZhbGlkIC0+ICgpXG4gIHwgSm9pbl9saHNfY2hhbmdlIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaWdub3JlIGpvaW5cbiAgfCBKb2luX21haW4gam9pbiAtPiBKb2luLmludmFyaWFudCBpbnZhcmlhbnRfYSBqb2luXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF8gLT4gKClcbiAgfCBTbmFwc2hvdCBzbmFwc2hvdCAtPiBTbmFwc2hvdC5pbnZhcmlhbnQgaW52YXJpYW50X2Egc25hcHNob3RcbiAgfCBTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSAtPlxuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2Egc3RlcF9mdW5jdGlvbl9ub2RlXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHVub3JkZXJlZF9hcnJheV9mb2xkIC0+XG4gICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICB8IFZhciB2YXIgLT4gVmFyLmludmFyaWFudCBpZ25vcmUgdmFyXG47O1xuXG5sZXQgaW5pdGlhbF9udW1fY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXQgXyAtPiAwXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gMFxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBCaW5kX21haW4gXyAtPiAyXG4gIHwgQ29uc3QgXyAtPiAwXG4gIHwgRXhwZXJ0IF8gLT4gMFxuICB8IEZyZWV6ZSBfIC0+IDFcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IDFcbiAgfCBJZl90aGVuX2Vsc2UgXyAtPiAyXG4gIHwgSW52YWxpZCAtPiAwXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEpvaW5fbWFpbiBfIC0+IDJcbiAgfCBNYXAgXyAtPiAxXG4gIHwgTWFwMiBfIC0+IDJcbiAgfCBNYXAzIF8gLT4gM1xuICB8IE1hcDQgXyAtPiA0XG4gIHwgTWFwNSBfIC0+IDVcbiAgfCBNYXA2IF8gLT4gNlxuICB8IE1hcDcgXyAtPiA3XG4gIHwgTWFwOCBfIC0+IDhcbiAgfCBNYXA5IF8gLT4gOVxuICB8IE1hcDEwIF8gLT4gMTBcbiAgfCBNYXAxMSBfIC0+IDExXG4gIHwgTWFwMTIgXyAtPiAxMlxuICB8IE1hcDEzIF8gLT4gMTNcbiAgfCBNYXAxNCBfIC0+IDE0XG4gIHwgTWFwMTUgXyAtPiAxNVxuICB8IFNuYXBzaG90IF8gLT4gMFxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiAxXG4gIHwgVW5pbml0aWFsaXplZCAtPiAwXG4gIHwgVmFyIF8gLT4gMFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbjs7XG5cbmxldCBiaW5kX3Joc19jaGlsZF9pbmRleCA9IDFcbmxldCBmcmVlemVfY2hpbGRfaW5kZXggPSAwXG5sZXQgaWZfYnJhbmNoX2NoaWxkX2luZGV4ID0gMVxubGV0IGpvaW5fcmhzX2NoaWxkX2luZGV4ID0gMVxuXG4oKiBXZSBkbyBub3QgaW1wbGVtZW50IHRoZSB0aW1lLWJhc2VkIG5vZGVzIChbQXRdLCBbQXRfaW50ZXJ2YWxzXSwgW1NuYXBzaG90XSxcbiAgIFtTdGVwX2Z1bmN0aW9uXSkgYXMgcGFyZW50cyBvZiB0aGUgY3VycmVudC10aW1lIG5vZGUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBXZSBkb24ndFxuICAgd2FudCBhbGwgc3VjaCBub2RlcyB0byBiZSByZWNvbXB1dGVkIHdoZW5ldmVyIHRoZSB0aW1lIGNoYW5nZXMsIHdoaWNoIHdvdWxkIGJlIGhvcnJpYmx5XG4gICBpbm5lZmljaWVudC4gIEluc3RlYWQsIHdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlY29tcHV0ZWQgYXQgdGhlIFwicmlnaHRcIiB0aW1lLFxuICAgaS5lLiB3aGVuIHRpbWUgcGFzc2VzIHNvbWUgdGhyZXNob2xkIHJlbGV2YW50IHRvIHRoZW0uICBXZSBkbyB0aGlzIHZpYSBzY2hlZHVsaW5nXG4gICBhbGFybXMgYXQgdGhvc2UgdGhyZXNob2xkcy4gKilcbmxldCBpdGVyaV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogaW50IC0+IE5vZGUuUGFja2VkLnQgLT4gdW5pdCkgOiB1bml0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgICAgZiBpIChUIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpKVxuICAgIGRvbmVcbiAgfCBBdCBfIC0+ICgpXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gKClcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBmIDAgKFQgYmluZC5saHMpXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICAoKiBWYXJpb3VzIGNvZGUsIGUuZy4gW3N0YXRlLmJlY2FtZV9uZWNlc3NhcnldLCByZWxpZXMgb24gcHJvY2Vzc2luZyBbbGhzX2NoYW5nZV1cbiAgICAgICBiZWZvcmUgW3Joc10uICopXG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgQ29uc3QgXyAtPiAoKVxuICB8IEV4cGVydCB7IGNoaWxkcmVuOyBudW1fY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEV4cGVydC5FIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSBpblxuICAgICAgZiBpIChUIHIuY2hpbGQpXG4gICAgZG9uZVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBfIH0gLT4gZiAwIChUIGNoaWxkKVxuICB8IElmX3Rlc3RfY2hhbmdlIHsgdGVzdDsgXyB9IC0+IGYgMCAoVCB0ZXN0KVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBjdXJyZW50X2JyYW5jaDsgXyB9IC0+XG4gICAgZiAwIChUIHRlc3RfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2ggdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGN1cnJlbnRfYnJhbmNoKSlcbiAgfCBJbnZhbGlkIC0+ICgpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gZiAwIChUIGxocylcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IFNuYXBzaG90IF8gLT4gKClcbiAgfCBTdGVwX2Z1bmN0aW9uIHsgY2hpbGQ7IF8gfSAtPlxuICAgIGlmIFVvcHQuaXNfc29tZSBjaGlsZCB0aGVuIGYgMCAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY2hpbGQpKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgICAgZiBpIChUIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpKVxuICAgIGRvbmVcbiAgfCBWYXIgXyAtPiAoKVxuICB8IE1hcCAoXywgbm9kZTApIC0+IGYgMCAoVCBub2RlMClcbiAgfCBNYXAyIChfLCBub2RlMCwgbm9kZTEpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpXG4gIHwgTWFwMyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKVxuICB8IE1hcDQgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMylcbiAgfCBNYXA1IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpXG4gIHwgTWFwNiAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KVxuICB8IE1hcDcgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNilcbiAgfCBNYXA4IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpXG4gIHwgTWFwOSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KVxuICB8IE1hcDEwIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpXG4gIHwgTWFwMTEgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5LCBub2RlMTApXG4gICAgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKVxuICB8IE1hcDEyXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMSApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpXG4gIHwgTWFwMTNcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMiApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKVxuICB8IE1hcDE0XG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTJcbiAgICAgICwgbm9kZTEzICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKVxuICB8IE1hcDE1XG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTJcbiAgICAgICwgbm9kZTEzXG4gICAgICAsIG5vZGUxNCApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMyk7XG4gICAgZiAxNCAoVCBub2RlMTQpXG47O1xuXG4oKiBbc2xvd19nZXRfY2hpbGRdIGlzIG9ubHkgdXNlZCBieSBbTm9kZS5pbnZhcmlhbnRdLCBzbyB3ZSBkb24ndCBtaW5kIHVzaW5nIFt3aXRoX3JldHVybl1cbiAgIGFuZCBbaXRlcmlfY2hpbGRyZW5dLiAgSWYgd2UgZXZlciBuZWVkIGEgZmFzdCBbZ2V0X2NoaWxkXSwgd2UgY29kZWQgaXQgaW4gcmV2XG4gICA0OGRiZmQwM2M5YzUuICopXG5sZXQgc2xvd19nZXRfY2hpbGQgOiB0eXBlIGEuIGEgdCAtPiBpbmRleDpfIC0+IE5vZGUuUGFja2VkLnQgPVxuICBmdW4gdCB+aW5kZXggLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IEV4cGVydCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBsZXQgKEUgZWRnZSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaW5kZXgpIGluXG4gICAgVCBlZGdlLmNoaWxkXG4gIHwgXyAtPlxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIGkgY2hpbGQgLT4gaWYgaSA9IGluZGV4IHRoZW4gci5yZXR1cm4gY2hpbGQpO1xuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJLaW5kLnNsb3dfZ2V0X2NoaWxkIGdvdCBpbnZhbGlkIGluZGV4XCJcbiAgICAgICAgKGluZGV4LCB0KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIF8gdF0pXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBLaW5kXG5tb2R1bGUgSW50ZXJuYWxfb2JzZXJ2ZXIgPSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlclxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5vcGVuIE5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuTm9kZS50ID1cbiAgeyAoKiBbaWRdIGlzIGEgdW5pcXVlIGlkIGZvciB0aGUgbm9kZS4gKilcbiAgICBpZCA6IE5vZGVfaWQudFxuICA7IHN0YXRlIDogKFR5cGVzLlN0YXRlLnRbQHNleHAub3BhcXVlXSlcbiAgOyAoKiBUaGUgZmllbGRzIGZyb20gW3JlY29tcHV0ZWRfYXRdIHRvIFtjcmVhdGVkX2luXSBhcmUgZ3JvdXBlZCB0b2dldGhlciBhbmQgYXJlIGluIHRoZVxuICAgICAgIHNhbWUgb3JkZXIgYXMgdGhleSBhcmUgdXNlZCBieSBbU3RhdGUucmVjb21wdXRlXSBUaGlzIGhhcyBhIHBvc2l0aXZlIHBlcmZvcm1hbmNlXG4gICAgICAgaW1wYWN0IGR1ZSB0byBjYWNoZSBlZmZlY3RzLiAgRG9uJ3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGVzZSBub2RlcyB3aXRob3V0XG4gICAgICAgcGVyZm9ybWFuY2UgdGVzdGluZy4gKilcbiAgICAoKiBbcmVjb21wdXRlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIFt0XSdzIHZhbHVlIHdhcyByZWNvbXB1dGVkLCBldmVuIGlmXG4gICAgICAgaXQgd2FzIGN1dCBvZmYuICopXG4gICAgbXV0YWJsZSByZWNvbXB1dGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7ICgqIFt2YWx1ZV9vcHRdIHN0YXJ0cyBhcyBbbm9uZV0sIGFuZCB0aGUgZmlyc3QgdGltZSBbdF0gaXMgY29tcHV0ZWQgaXQgaXMgc2V0IHRvXG4gICAgICAgW3NvbWVdLCBhbmQgcmVtYWlucyBbc29tZV0gdGhlcmVhZnRlciwgdW50aWwgW3RdIGlzIGludmFsaWRhdGVkLCBpZiBldmVyLiAqKVxuICAgIG11dGFibGUgdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW2tpbmRdIGlzIHRoZSBraW5kIG9mIERBRyBub2RlIFt0XSBpcy4gIFtraW5kXSBpcyBtdXRhYmxlIGJvdGggZm9yIGluaXRpYWxpemF0aW9uXG4gICAgICAgYW5kIGJlY2F1c2UgaXQgY2FuIGNoYW5nZSwgZS5nLiBpZiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gIDsgbXV0YWJsZSBjdXRvZmYgOiAnYSBDdXRvZmYudFxuICA7ICgqIFtjaGFuZ2VkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gdGhpcyBub2RlIHdhcyBjb21wdXRlZCBhbmQgbm90IGN1dCBvZmYuXG4gICAgICAgSXQgaXMgdXNlZCB0byBkZXRlY3Qgd2hlbiBbdF0ncyBwYXJlbnRzIGFyZSBzdGFsZSBhbmQgKGJlY2F1c2UgYWxsIHBhcmVudHMgYXJlXG4gICAgICAgbmVjZXNzYXJ5KSBuZWVkIHRvIGJlIHJlY29tcHV0ZWQuICopXG4gICAgbXV0YWJsZSBjaGFuZ2VkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7ICgqIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSBpcyBbTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNdIHBsdXMgdGhlIG51bWJlciBvZlxuICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyBzdW1tZWQgb3ZlciBhbGwgb2JzZXJ2ZXJzIGluIFt0Lm9ic2VydmVyc10uICBJdCBpcyB1c2VkIHRvXG4gICAgICAgcXVpY2tseSBkZWNpZGUgd2hldGhlciBbdF0gbmVlZHMgdG8gYmUgYWRkZWQgdG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXVxuICAgICAgIHdoZW4gW3RdIGNoYW5nZXMuICBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2lsbCBkZWNyZWFzZSB3aGVuIGFuIG9ic2VydmVyIGlzXG4gICAgICAgcmVtb3ZlZCBmcm9tIFt0Lm9ic2VydmVyc10sIGlmIHRoZSBvYnNlcnZlciBoYXMgb24tdXBkYXRlIGhhbmRsZXJzLiAqKVxuICAgIG11dGFibGUgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA6IGludFxuICA7ICgqIFRoZSBwYXJlbnRzIG9mIFt0XSBhcmUgdGhlIG5vZGVzIHRoYXQgZGVwZW5kIG9uIGl0LCBhbmQgc2hvdWxkIGJlIGNvbXB1dGVkIHdoZW4gW3RdXG4gICAgICAgY2hhbmdlcywgb25jZSBhbGwgb2YgdGhlaXIgb3RoZXIgY2hpbGRyZW4gYXJlIHVwIHRvIGRhdGUuICBbbnVtX3BhcmVudHNdIGlzIHRoZVxuICAgICAgIG51bWJlciBvZiBwYXJlbnRzLiAgSWYgW251bV9wYXJlbnRzID49IDFdLCB0aGVuIFtwYXJlbnQwXSBpcyB0aGUgZmlyc3QgcGFyZW50LlxuICAgICAgIFtwYXJlbnQxX2FuZF9iZXlvbmRdIGhvbGRzIHRoZSByZW1haW5pbmcgcGFyZW50cy4gIFRoZSBvcmRlciBvZiB0aGUgcGFyZW50cyBkb2Vzbid0XG4gICAgICAgbWF0dGVyLiAgT25lIG5vZGUgbWF5IG9jY3VyIG11bHRpcGxlIHRpbWVzIGFzIGEgcGFyZW50IG9mIGFub3RoZXIgKGUuZy4gY29uc2lkZXJcbiAgICAgICBbbWFwMiBuMSBuMSB+Zl0pLlxuXG4gICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIHRoZSBvdmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSB0aGF0IGEgbm9kZSBoYXNcbiAgICAgICBvbmx5IG9uZSBwYXJlbnQuICopXG4gICAgbXV0YWJsZSBudW1fcGFyZW50cyA6IGludFxuICA7IG11dGFibGUgcGFyZW50MV9hbmRfYmV5b25kIDogUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgcGFyZW50MCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtjcmVhdGVkX2luXSBpcyBpbml0aWFsbHkgdGhlIHNjb3BlIHRoYXQgdGhlIG5vZGUgaXMgY3JlYXRlZCBpbi4gIElmIGEgbm9kZSBpc1xuICAgICAgIGxhdGVyIFwicmVzY29wZWRcIiwgdGhlbiBjcmVhdGVkX2luIHdpbGwgYmUgYWRqdXN0ZWQgdG8gdGhlIG5ldyBzY29wZSB0aGF0IHRoZSBub2RlXG4gICAgICAgaXMgcGFydCBvZi4gKilcbiAgICBtdXRhYmxlIGNyZWF0ZWRfaW4gOiBTY29wZS50XG4gIDsgKCogW25leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIGNyZWF0ZWQgaW4gW3QuY3JlYXRlZF9pbl0uICopXG4gICAgbXV0YWJsZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtoZWlnaHRdIGlzIHVzZWQgdG8gdmlzaXQgbm9kZXMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIuICBJZiBbaXNfbmVjZXNzYXJ5IHRdLCB0aGVuXG4gICAgICAgW2hlaWdodCA+IGMuaGVpZ2h0XSBmb3IgYWxsIGNoaWxkcmVuIFtjXSBvZiBbdF0sIGFuZCBbaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0XG4gICAgICAgdC5jcmVhdGVkX2luXS4gIElmIFtub3QgKGlzX25lY2Vzc2FyeSB0KV0sIHRoZW4gW2hlaWdodCA9IC0xXS4gKilcbiAgICBtdXRhYmxlIGhlaWdodCA6IGludFxuICA7ICgqIFtoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIGlzIHRoZSBoZWlnaHQgYXQgd2hpY2ggW3RdIGlzIHN0b3JlZCBpbiB0aGUgcmVjb21wdXRlXG4gICAgICAgaGVhcCwgYW5kIGlzIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gIElmIFt0XSBpcyB0aGVcbiAgICAgICByZWNvbXB1dGUgaGVhcCwgdGhlbiB0eXBpY2FsbHkgW3QuaGVpZ2h0ID0gdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdOyBob3dldmVyLFxuICAgICAgIHdoaWxlIGhlaWdodCBpcyBiZWluZyBhZGp1c3RlZCwgb25lIGNhbiB0ZW1wb3JhcmlseSBoYXZlIFt0LmhlaWdodCA+XG4gICAgICAgdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdLiAgV2hlbiBoZWlnaHQgYWRqdXN0bWVudCBmaW5pc2hlcywgZXF1YWxpdHkgaXMgcmVzdG9yZWRcbiAgICAgICBieSBpbmNyZWFzaW5nIFt0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gdG8gW3QuaGVpZ2h0XSBhbmQgc2hpZnRpbmcgW3RdJ3NcbiAgICAgICBwb3NpdGlvbiBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgOiBpbnRcbiAgOyAoKiBbcHJldl9pbl9yZWNvbXB1dGVfaGVhcF0gYW5kIFtuZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBkb3VibHkgbGluayBhbGwgbm9kZXMgb2YgdGhlXG4gICAgICAgc2FtZSBoZWlnaHQgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF0gaXMgdXNlZCBvbmx5IGR1cmluZyBoZWlnaHQgYWRqdXN0bWVudCwgYW5kIGlzXG4gICAgICAgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIGFkanVzdC1oZWlnaHRzIGhlYXAuICBJdCBob2xkcyB0aGUgcHJlLWFkanVzdGVkXG4gICAgICAgaGVpZ2h0IG9mIFt0XS4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogaW50XG4gIDsgKCogW25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBvZiB0aGUgc2FtZSBoZWlnaHQgaW4gdGhlXG4gICAgICAgYWRqdXN0LWhlaWdodHMgaGVhcC4gKilcbiAgICBtdXRhYmxlIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtvbGRfdmFsdWVfb3B0XSBpcyB1c2VkIG9ubHkgZHVyaW5nIHN0YWJpbGl6YXRpb24sIGFuZCBvbmx5IGlmXG4gICAgICAgW3QubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDBdLiAgSXQgaG9sZHMgdGhlIHByZS1zdGFiaWxpemF0aW9uIHZhbHVlIG9mIFt0XS4gIEl0XG4gICAgICAgaXMgY2xlYXJlZCB3aGVuIHJ1bm5pbmcgW3RdJ3Mgb24tdXBkYXRlIGhhbmRsZXJzLCBhbmQgc28gaXMgYWx3YXlzIFtVb3B0Lm5vbmVdXG4gICAgICAgYmV0d2VlbiBzdGFiaWxpemF0aW9ucy4gKilcbiAgICBtdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBbb2JzZXJ2ZXJzXSBpcyB0aGUgaGVhZCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIG9ic2VydmVycyBvZiBbdF0sIG9yXG4gICAgICAgW1VvcHQubm9uZV0gaWYgdGhlcmUgYXJlIG5vIG9ic2VydmVycy4gKilcbiAgICBtdXRhYmxlIG9ic2VydmVycyA6ICgnYSBJbnRlcm5hbF9vYnNlcnZlci50W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICA7ICgqIFtpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaXMgdXNlZCB0byBhdm9pZCBwdXNoaW5nIHRoZSBzYW1lIG5vZGUgbXVsdGlwbGVcbiAgICAgICB0aW1lcyBvbnRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgOyAoKiBbb25fdXBkYXRlX2hhbmRsZXJzXSBpcyB0aGUgZnVuY3Rpb25zIHN1cHBsaWVkIHRvIFtJbmNyZW1lbnRhbC5vbl91cGRhdGVdIHRvIGJlIHJ1blxuICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUgbW9kdWxlIFtPbl91cGRhdGVfaGFuZGxlcl0uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBkb2VzIG5vdFxuICAgICAgIGNvbnRhaW4gdGhlIG9uLXVwZGF0ZSBoYW5kbGVycyBpbiBbdC5vYnNlcnZlcnNdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gb25seSBldmVyXG4gICAgICAgZ2V0cyBsb25nZXI7IHRoZXJlIGlzIG5vIHdheSB0byByZW1vdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBmb3JjZV9uZWNlc3NhcnkgOiBib29sXG4gIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gIDsgY3JlYXRpb25fYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5sZXQgcGFja2VkX3NhbWUgKFBhY2tlZC5UIHQxKSAoUGFja2VkLlQgdDIpID0gc2FtZSB0MSB0MlxubGV0IGlzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5XG5sZXQgaW5pdGlhbF9udW1fY2hpbGRyZW4gdCA9IEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4gdC5raW5kXG5sZXQgaXRlcmlfY2hpbGRyZW4gdCB+ZiA9IEtpbmQuaXRlcmlfY2hpbGRyZW4gdC5raW5kIH5mXG5sZXQgaXNfdmFsaWQgPSBOb2RlLmlzX3ZhbGlkXG5sZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgPSB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZVxuXG5sZXQgdXNlcl9pbmZvIHQgPVxuICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoSW5mbyBpKSAtPiBTb21lIGlcbiAgfCBTb21lIG90aGVyIC0+IFNvbWUgKEluZm8uY3JlYXRlX3MgKERvdF91c2VyX2luZm8uc2V4cF9vZl90IG90aGVyKSlcbjs7XG5cbmxldCBzZXRfdXNlcl9pbmZvIHQgaW5mbyA9XG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCBpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKEluZm8gaSkpXG47O1xuXG5sZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0IH5sYWJlbCB+YXR0cnMgPVxuICBsZXQgbmV3XyA9IERvdF91c2VyX2luZm8uZG90IH5sYWJlbCB+YXR0cmlidXRlczphdHRycyBpblxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIG5ld19cbiAgICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoRG90X3VzZXJfaW5mby5hcHBlbmQgb3RoZXIgbmV3XykpXG47O1xuXG5sZXQgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudCA9XG4gIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgY2hpbGQuY2hhbmdlZF9hdCBwYXJlbnQucmVjb21wdXRlZF9hdCA+IDBcbjs7XG5cbmxldCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0ID1cbiAgbGV0IGlzX3N0YWxlID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPlxuICAgIGlmIGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQ6dCB0aGVuIGlzX3N0YWxlIDo9IHRydWUpO1xuICAhaXNfc3RhbGVcbjs7XG5cbmxldCBpc19zdGFsZSA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gKHQgOiBhIHQpIC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgKCogQSBjb25zdCBub2RlIGlzIHN0YWxlIG9ubHkgYXQgaW5pdGlhbGl6YXRpb24uICopXG4gIHwgQ29uc3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBUaW1lLWJhc2VkIG5vZGVzIGFyZSBjb25zaWRlcmVkIHN0YWxlIHdoZW4gW3QucmVjb21wdXRlZF9hdF0gaXMgbm9uZSwgd2hpY2ggaGFwcGVuc1xuICAgICBhdCBpbml0aWFsaXphdGlvbiBhbmQgd2hlbiB0aGUgYWxhcm0gbWVjaGFuaXNtIG1ha2VzIGEgbm9kZSBzdGFsZSAoaXQgc2V0cyB0aGVcbiAgICAgW3QucmVjb21wdXRlZF9hdF0gdG8gW1N0YWJpbGl6YXRpb25fbnVtLm5vbmVdKS4gKilcbiAgfCBBdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBTbmFwc2hvdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFdlIG5ldmVyIGNvbnNpZGVyIGFuIGludmFsaWRhdGVkIG5vZGUgdG8gYmUgc3RhbGUgLS0gd2hlbiB3ZSBpbnZhbGlkYXRlIGEgbm9kZSwgd2VcbiAgICAgaW1tZWRpYXRlbHkgcHJvcGFnYXRlIGludmFsaWRpdHkgdG8gaXRzIGFuY2VzdG9ycy4gKilcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICgqIEEgW1Zhcl0gbm9kZSBpcyBzdGFsZSBpZiBpdCB3YXMgc2V0IHNpbmNlIGl0IHdhcyByZWNvbXB1dGVkLiAqKVxuICB8IFZhciB7IHNldF9hdDsgXyB9IC0+IFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgc2V0X2F0IHQucmVjb21wdXRlZF9hdCA+IDBcbiAgKCogTm9kZXMgdGhhdCBoYXZlIGNoaWxkcmVuLiAqKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgQXJyYXlfZm9sZCBfXG4gIHwgQmluZF9tYWluIF9cbiAgfCBGcmVlemUgX1xuICB8IElmX3RoZW5fZWxzZSBfXG4gIHwgSm9pbl9tYWluIF9cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgX1xuICB8IFN0ZXBfZnVuY3Rpb24gX1xuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgRXhwZXJ0IHsgZm9yY2Vfc3RhbGU7IF8gfSAtPlxuICAgIGZvcmNlX3N0YWxlXG4gICAgfHwgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgICB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG47O1xuXG5sZXQgbmVlZHNfdG9fYmVfY29tcHV0ZWQgdCA9IGlzX25lY2Vzc2FyeSB0ICYmIGlzX3N0YWxlIHRcbmxldCBpc19pbl9yZWNvbXB1dGVfaGVhcCB0ID0gdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPj0gMFxubGV0IGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdCA9IHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPj0gMFxuXG5sZXQgZ2V0X3BhcmVudCB0IH5pbmRleCA9XG4gIFVvcHQudmFsdWVfZXhuXG4gICAgKGlmIGluZGV4ID0gMCB0aGVuIHQucGFyZW50MCBlbHNlIFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKVxuOztcblxubGV0IGl0ZXJpX3BhcmVudHMgdCB+ZiA9XG4gIGlmIHQubnVtX3BhcmVudHMgPiAwXG4gIHRoZW4gKFxuICAgIGYgMCAoVW9wdC52YWx1ZV9leG4gdC5wYXJlbnQwKTtcbiAgICBmb3IgaW5kZXggPSAxIHRvIHQubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICBmIGluZGV4IChVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgaGFzX2NoaWxkIHQgfmNoaWxkID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCcpIC0+IGhhcyA6PSAhaGFzIHx8IHNhbWUgY2hpbGQgY2hpbGQnKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19pbnZhbGlkX2NoaWxkIHQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPiBoYXMgOj0gIWhhcyB8fCBub3QgKGlzX3ZhbGlkIGNoaWxkKSk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfcGFyZW50ICh0IDogXyB0KSB+cGFyZW50ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCcpIC0+IGhhcyA6PSAhaGFzIHx8IHNhbWUgcGFyZW50IHBhcmVudCcpO1xuICAhaGFzXG47O1xuXG5sZXQgc2hvdWxkX2JlX2ludmFsaWRhdGVkIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biB0IC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gKilcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICB8IEF0IF8gLT4gZmFsc2VcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBmYWxzZVxuICB8IENvbnN0IF8gfCBTbmFwc2hvdCBfIHwgVmFyIF8gLT4gZmFsc2VcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICgqIE5vZGVzIHdpdGggYSBmaXhlZCBzZXQgb2YgY2hpbGRyZW4gYXJlIGludmFsaWQgaWYgYW55IGNoaWxkIGlzIGludmFsaWQuICopXG4gIHwgQXJyYXlfZm9sZCBfXG4gIHwgRnJlZXplIF9cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgX1xuICB8IFN0ZXBfZnVuY3Rpb24gX1xuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT4gaGFzX2ludmFsaWRfY2hpbGQgdFxuICAoKiBBICpfY2hhbmdlIG5vZGUgaXMgaW52YWxpZCBpZiB0aGUgbm9kZSBpdCBpcyB3YXRjaGluZyBmb3IgY2hhbmdlcyBpcyBpbnZhbGlkIChzYW1lXG4gICAgIHJlYXNvbiBhcyBhYm92ZSkuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gW2hhc19pbnZhbGlkX2NoaWxkIHRdLiAqKVxuICB8IEJpbmRfbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICB8IElmX3Rlc3RfY2hhbmdlIHsgdGVzdDsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgKCogW0JpbmRfbWFpbl0sIFtJZl90aGVuX2Vsc2VdLCBhbmQgW0pvaW5fbWFpbl0gYXJlIGludmFsaWQgaWYgdGhlaXIgKl9jaGFuZ2UgY2hpbGQgaXMsXG4gICAgIGJ1dCBub3QgbmVjZXNzYXJpbHkgaWYgdGhlaXIgb3RoZXIgY2hpbGRyZW4gYXJlIC0tIHRoZSBncmFwaCBtYXkgYmUgcmVzdHJ1Y3R1cmVkIHRvXG4gICAgIGF2b2lkIHRoZSBpbnZhbGlkaXR5IG9mIHRob3NlLiAqKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxoc19jaGFuZ2UpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3RfY2hhbmdlKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxoc19jaGFuZ2UpXG4gIHwgRXhwZXJ0IF8gLT5cbiAgICAoKiBUaGlzIGlzIHNpbWlsYXIgdG8gd2hhdCB3ZSBkbyBmb3IgYmluZCBhYm92ZSwgZXhjZXB0IHRoYXQgYW55IGludmFsaWQgY2hpbGQgY2FuIGJlXG4gICAgICAgcmVtb3ZlZCwgc28gd2UgY2FuIG9ubHkgdGVsbCBpZiBhbiBleHBlcnQgbm9kZSBiZWNvbWVzIGludmFsaWQgd2hlbiBhbGwgaXRzXG4gICAgICAgZGVwZW5kZW5jaWVzIGhhdmUgZmlyZWQgKHdoaWNoIGluIHByYWN0aWNlIG1lYW5zIHdoZW4gd2UgYXJlIGFib3V0IHRvIHJ1biBpdCkuICopXG4gICAgZmFsc2Vcbjs7XG5cbmxldCBmb2xkX29ic2VydmVycyAodCA6IF8gdCkgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiB0Lm9ic2VydmVycyBpblxuICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnZhbHVlX2V4biAhciBpblxuICAgIHIgOj0gb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmc7XG4gICAgYWMgOj0gZiAhYWMgb2JzZXJ2ZXJcbiAgZG9uZTtcbiAgIWFjXG47O1xuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9IGZvbGRfb2JzZXJ2ZXJzIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBvYnNlcnZlciAtPiBmIG9ic2VydmVyKVxuXG5sZXQgaW52YXJpYW50ICh0eXBlIGEpIChpbnZhcmlhbnRfYSA6IGEgLT4gdW5pdCkgKHQgOiBhIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBbJXRlc3RfZXE6IGJvb2xdIChuZWVkc190b19iZV9jb21wdXRlZCB0KSAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdCk7XG4gICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBTY29wZS5oZWlnaHQgdC5jcmVhdGVkX2luKTtcbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPlxuICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gY2hpbGQuaGVpZ2h0KTtcbiAgICAgICAgYXNzZXJ0IChoYXNfcGFyZW50IGNoaWxkIH5wYXJlbnQ6dCkpO1xuICAgICAgYXNzZXJ0IChub3QgKHNob3VsZF9iZV9pbnZhbGlkYXRlZCB0KSkpO1xuICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50KSAtPlxuICAgICAgYXNzZXJ0IChoYXNfY2hpbGQgcGFyZW50IH5jaGlsZDp0KTtcbiAgICAgIGFzc2VydCAoaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0IDwgcGFyZW50LmhlaWdodCkpO1xuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6KGNoZWNrIE5vZGVfaWQuaW52YXJpYW50KVxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfnJlY29tcHV0ZWRfYXQ6KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgIH52YWx1ZV9vcHQ6XG4gICAgICAgIChjaGVjayAoZnVuIHZhbHVlX29wdCAtPlxuICAgICAgICAgICBpZiBpc192YWxpZCB0ICYmIG5vdCAoaXNfc3RhbGUgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSB2YWx1ZV9vcHQpO1xuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSB2YWx1ZV9vcHQpKVxuICAgICAgfmtpbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGtpbmQgLT5cbiAgICAgICAgICAgS2luZC5pbnZhcmlhbnQgaW52YXJpYW50X2Ega2luZDtcbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgIHwgRXhwZXJ0IGUgLT5cbiAgICAgICAgICAgICBFeHBlcnQuaW52YXJpYW50X2Fib3V0X251bV9pbnZhbGlkX2NoaWxkcmVuXG4gICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICB+aXNfbmVjZXNzYXJ5Oihpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH5jdXRvZmY6KGNoZWNrIChDdXRvZmYuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5jaGFuZ2VkX2F0OlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGFuZ2VkX2F0IC0+XG4gICAgICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudCBjaGFuZ2VkX2F0O1xuICAgICAgICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5pc19zb21lIHQucmVjb21wdXRlZF9hdFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGFuZ2VkX2F0IHQucmVjb21wdXRlZF9hdCA8PSAwKSkpXG4gICAgICB+bnVtX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgKExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICAgICAgICAgICsgZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDowIH5mOihmdW4gbiB7IG9uX3VwZGF0ZV9oYW5kbGVyczsgXyB9IC0+XG4gICAgICAgICAgICAgICAgICAgbiArIExpc3QubGVuZ3RoIG9uX3VwZGF0ZV9oYW5kbGVycykpKSlcbiAgICAgIH5udW1fcGFyZW50czpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX3BhcmVudHMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA8PSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQpKSlcbiAgICAgIH5wYXJlbnQxX2FuZF9iZXlvbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDFfYW5kX2JleW9uZCAtPlxuICAgICAgICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCBwYXJlbnQxX2FuZF9iZXlvbmQgZG9cbiAgICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdXG4gICAgICAgICAgICAgICAocGFyZW50X2luZGV4IDwgdC5udW1fcGFyZW50cylcbiAgICAgICAgICAgICAgIChVb3B0LmlzX3NvbWVcbiAgICAgICAgICAgICAgICAgIChVbmlmb3JtX2FycmF5LmdldCBwYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+cGFyZW50MDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MCAtPlxuICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdICh0Lm51bV9wYXJlbnRzID4gMCkgKFVvcHQuaXNfc29tZSBwYXJlbnQwKSkpXG4gICAgICB+Y3JlYXRlZF9pbjooY2hlY2sgU2NvcGUuaW52YXJpYW50KVxuICAgICAgfm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSAtPlxuICAgICAgICAgICBpZiBTY29wZS5pc190b3AgdC5jcmVhdGVkX2luIHx8IG5vdCAoaXNfdmFsaWQgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSkpKVxuICAgICAgfmhlaWdodDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0IC0+XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0IHRoZW4gYXNzZXJ0IChoZWlnaHQgPj0gMCkgZWxzZSBhc3NlcnQgKGhlaWdodCA9IC0xKSkpXG4gICAgICB+aGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPj0gLTEpO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8PSB0LmhlaWdodCkpKVxuICAgICAgfnByZXZfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudmFsdWVfZXhuIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gcHJldi5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+bmV4dF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIG5leHQpID0gVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgaWYgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPj0gMFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPCB0LmhlaWdodCkpKVxuICAgICAgfm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKVxuICAgICAgICAgICBlbHNlIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIG5leHQpID0gVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIG5leHQpO1xuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICB0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gbmV4dC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgICAgIH5vbGRfdmFsdWVfb3B0OihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9ic2VydmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4geyBzdGF0ZTsgb2JzZXJ2aW5nOyBfIH0gLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdCBvYnNlcnZpbmcpO1xuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgIH5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjppZ25vcmVcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6aWdub3JlXG4gICAgICB+dXNlcl9pbmZvOmlnbm9yZVxuICAgICAgfm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleDpcbiAgICAgICAgKGNoZWNrIChmdW4gbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IC0+XG4gICAgICAgICAgIChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICAgICAgfCBFeHBlcnQgXyAtPiAoKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgICAoQXJyYXkubGVuZ3RoIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleClcbiAgICAgICAgICAgICAgICB+ZXhwZWN0Oihpbml0aWFsX251bV9jaGlsZHJlbiB0KSk7XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBwYWNrZWRfc2FtZVxuICAgICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgICAgKGdldF9wYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZFxuICAgICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIEFycmF5Lml0ZXIgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+bXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4KVxuICAgICAgICAgICAgIH5leHBlY3Q6KFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kICsgMSk7XG4gICAgICAgICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIHBhcmVudF9pbmRleCAoVCBwYXJlbnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgIChLaW5kLnNsb3dfZ2V0X2NoaWxkXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5raW5kXG4gICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkpKSk7XG4gICAgICAgICAgIGlmIGRlYnVnICYmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBBcnJheS5pdGVyIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoeCA9IC0xKSkpKVxuICAgICAgfmZvcmNlX25lY2Vzc2FyeTppZ25vcmVcbiAgICAgIH5jcmVhdGlvbl9iYWNrdHJhY2U6aWdub3JlKVxuOztcblxubGV0IHVuc2FmZV92YWx1ZSB0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfb3B0XG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcbiAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZ2V0X2N1dG9mZiB0ID0gdC5jdXRvZmZcbmxldCBzZXRfY3V0b2ZmIHQgY3V0b2ZmID0gdC5jdXRvZmYgPC0gY3V0b2ZmXG5cbmxldCBpc19jb25zdCB0ID1cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBDb25zdCBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgb25fdXBkYXRlIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIHQubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDFcbjs7XG5cbmxldCBydW5fb25fdXBkYXRlX2hhbmRsZXJzIHQgbm9kZV91cGRhdGUgfm5vdyA9XG4gIGxldCByID0gcmVmIHQub25fdXBkYXRlX2hhbmRsZXJzIGluXG4gIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICBtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgIHIgOj0gcmVzdDtcbiAgICAgIE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBsZXQgciA9IHJlZiBvYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICB3aGlsZSBub3QgKExpc3QuaXNfZW1wdHkgIXIpIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBvbl91cGRhdGVfaGFuZGxlciA6OiByZXN0IC0+XG4gICAgICAgIHIgOj0gcmVzdDtcbiAgICAgICAgKCogV2UgaGF2ZSB0byB0ZXN0IFtzdGF0ZV0gYmVmb3JlIGVhY2ggb24tdXBkYXRlIGhhbmRsZXIsIGJlY2F1c2UgYW4gb24tdXBkYXRlXG4gICAgICAgICAgIGhhbmRsZXIgbWlnaHQgZGlzYWJsZSBpdHMgb3duIG9ic2VydmVyLCB3aGljaCBzaG91bGQgcHJldmVudCBvdGhlciBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlcnMgaW4gdGhlIHNhbWUgb2JzZXJ2ZXIgZnJvbSBydW5uaW5nLiAqKVxuICAgICAgICAobWF0Y2ggb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgSW5fdXNlIC0+IE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93KVxuICAgIGRvbmVcbiAgZG9uZVxuOztcblxubGV0IHNldF9raW5kIHQga2luZCA9XG4gIHQua2luZCA8LSBraW5kO1xuICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICA8LSBBcnJheS5jcmVhdGUgfmxlbjooS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiBraW5kKSAoLTEpXG47O1xuXG5sZXQgY3JlYXRlIHN0YXRlIGNyZWF0ZWRfaW4ga2luZCA9XG4gIGxldCB0ID1cbiAgICB7IGlkID0gTm9kZV9pZC5uZXh0ICgpXG4gICAgOyBzdGF0ZVxuICAgIDsgcmVjb21wdXRlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IHZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsga2luZFxuICAgIDsgY3V0b2ZmID0gQ3V0b2ZmLnBoeXNfZXF1YWxcbiAgICA7IGNoYW5nZWRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyBudW1fb25fdXBkYXRlX2hhbmRsZXJzID0gMFxuICAgIDsgbnVtX3BhcmVudHMgPSAwXG4gICAgOyBwYXJlbnQxX2FuZF9iZXlvbmQgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gICAgOyBwYXJlbnQwID0gVW9wdC5ub25lXG4gICAgOyBjcmVhdGVkX2luXG4gICAgOyBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA9IFVvcHQubm9uZVxuICAgIDsgaGVpZ2h0ID0gLTFcbiAgICA7IGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IC0xXG4gICAgOyBwcmV2X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gICAgOyBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG9sZF92YWx1ZV9vcHQgPSBVb3B0Lm5vbmVcbiAgICA7IG9ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBmYWxzZVxuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA9XG4gICAgICAgIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbiAgICAoKiBbbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XSBoYXMgb25lIGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBob2xkXG4gICAgICAgdGhlIGNoaWxkIGluZGV4IG9mIFtwYXJlbnQwXS4gKilcbiAgICA7IG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA9IFt8IC0xIHxdXG4gICAgOyBmb3JjZV9uZWNlc3NhcnkgPSBmYWxzZVxuICAgIDsgdXNlcl9pbmZvID0gTm9uZVxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlID1cbiAgICAgICAgKGlmIHN0YXRlLmtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgdGhlbiBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSBlbHNlIE5vbmUpXG4gICAgfVxuICBpblxuICBTY29wZS5hZGRfbm9kZSBjcmVhdGVkX2luIHQ7XG4gICgqIFtpbnZhcmlhbnRdIGRvZXMgbm90IHlldCBob2xkIGhlcmUgYmVjYXVzZSBtYW55IHVzZXMgb2YgW05vZGUuY3JlYXRlXSB1c2UgW2tpbmQgPVxuICAgICBVbmluaXRpYWxpemVkXSwgYW5kIHRoZW4gbXV0YXRlIFt0LmtpbmRdIGxhdGVyLiAqKVxuICB0XG47O1xuXG5sZXQgbWF4X251bV9wYXJlbnRzIHQgPSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmRcblxubGV0IG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX3BhcmVudHMgPSBtYXhfbnVtX3BhcmVudHMgdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X21heF9udW1fcGFyZW50cyA9IDIgKiBtYXhfbnVtX3BhcmVudHMgdCBpblxuICAgIHQucGFyZW50MV9hbmRfYmV5b25kXG4gICAgPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQucGFyZW50MV9hbmRfYmV5b25kIH5sZW46KG5ld19tYXhfbnVtX3BhcmVudHMgLSAxKTtcbiAgICB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9wYXJlbnRzICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fcGFyZW50cyA8IG1heF9udW1fcGFyZW50cyB0KVxuOztcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0IH5jaGlsZF9pbmRleCA9XG4gIGxldCBtYXhfbnVtX2NoaWxkcmVuID0gQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IGluXG4gIGlmIGNoaWxkX2luZGV4ID49IG1heF9udW1fY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4ID0gbWF4X251bV9jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXhfbnVtX2NoaWxkcmVuID0gSW50Lm1heCAyICgyICogbWF4X251bV9jaGlsZHJlbikgaW5cbiAgICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9jaGlsZHJlbiAoLTEpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4IDwgQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuOztcblxubGV0IHNldF9wYXJlbnQgOiB0eXBlIGEuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6UGFja2VkLnQgVW9wdC50IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIGlmIHBhcmVudF9pbmRleCA9IDBcbiAgdGhlbiBjaGlsZC5wYXJlbnQwIDwtIHBhcmVudFxuICBlbHNlIFVuaWZvcm1fYXJyYXkuc2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkgcGFyZW50XG47O1xuXG5sZXQgbGlua1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHBhcmVudDpiIHQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIHNldF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6KFVvcHQuc29tZSAoUGFja2VkLlQgcGFyZW50KSkgfnBhcmVudF9pbmRleDtcbiAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIGNoaWxkX2luZGV4O1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgPC0gcGFyZW50X2luZGV4XG47O1xuXG5sZXQgdW5saW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDpVb3B0Lm5vbmUgfnBhcmVudF9pbmRleDtcbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIC0xO1xuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSAtMSlcbjs7XG5cbmxldCBhZGRfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBtYWtlX3NwYWNlX2Zvcl9wYXJlbnRfaWZfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgcGFyZW50IH5jaGlsZF9pbmRleDtcbiAgbGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpjaGlsZC5udW1fcGFyZW50cztcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgKyAxXG47O1xuXG5sZXQgcmVtb3ZlX3BhcmVudCA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gcGFyZW50OmIgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLm51bV9wYXJlbnRzID49IDEpO1xuICBsZXQgcGFyZW50X2luZGV4ID0gcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBwYXJlbnQpIChnZXRfcGFyZW50IGNoaWxkIH5pbmRleDpwYXJlbnRfaW5kZXgpKTtcbiAgbGV0IGxhc3RfcGFyZW50X2luZGV4ID0gY2hpbGQubnVtX3BhcmVudHMgLSAxIGluXG4gIGlmIHBhcmVudF9pbmRleCA8IGxhc3RfcGFyZW50X2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKGxhc3RfcGFyZW50X2luZGV4IC0gMSkpXG4gICAgaW5cbiAgICBsaW5rXG4gICAgICB+Y2hpbGRcbiAgICAgIH5jaGlsZF9pbmRleDpjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGxhc3RfcGFyZW50X2luZGV4KVxuICAgICAgfnBhcmVudFxuICAgICAgfnBhcmVudF9pbmRleCk7XG4gIHVubGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpsYXN0X3BhcmVudF9pbmRleDtcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgLSAxXG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCBwYXJlbnQgfmNoaWxkMSB+Y2hpbGRfaW5kZXgxIH5jaGlsZDIgfmNoaWxkX2luZGV4MiA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgY2hpbGQxKSAoS2luZC5zbG93X2dldF9jaGlsZCBwYXJlbnQua2luZCB+aW5kZXg6Y2hpbGRfaW5kZXgxKSk7XG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDIpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDIpKSk7XG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpXG4gIGluXG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpXG4gIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAoXG4gICAgICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA9IGNoaWxkX2luZGV4MSk7XG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpID0gY2hpbGRfaW5kZXgyKSk7XG4gICgqIG5vdyBzdGFydCBzd2FwcGluZyAqKVxuICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA8LSBjaGlsZF9pbmRleDI7XG4gIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpIDwtIGNoaWxkX2luZGV4MTtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgxKSA8LSBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDFcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUGFja2VkLnQgPSBUIDogXyBUeXBlcy5Ob2RlLnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyB0XVxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5cbiAgbW9kdWxlIEFzX2xpc3QgKE0gOiBzaWdcbiAgICAgIHZhbCBuZXh0IDogUGFja2VkLnQgLT4gUGFja2VkLnQgVW9wdC50XG4gICAgZW5kKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgdCA9IFBhY2tlZC50IFVvcHQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICAgICAgbGV0IHIgPSByZWYgdCBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCBwYWNrZWRfbm9kZSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gTS5uZXh0IHBhY2tlZF9ub2RlO1xuICAgICAgICBhYyA6PSBmICFhYyBwYWNrZWRfbm9kZVxuICAgICAgZG9uZTtcbiAgICAgICFhY1xuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgbiAtPiBmIG4pXG4gICAgbGV0IGludmFyaWFudCB0ID0gaXRlciB0IH5mOmludmFyaWFudFxuICAgIGxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0LnJldiAoZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgbiAtPiBuIDo6IGFjKSlcbiAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19saXN0IHQgfD4gWyVzZXhwX29mOiBQYWNrZWQudCBsaXN0XVxuICBlbmRcblxuICBsZXQgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZiA9XG4gICAgbGV0IHNlZW4gPSBOb2RlX2lkLkhhc2hfc2V0LmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgaXRlcl9kZXNjZW5kYW50cyAoVCB0KSA9XG4gICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWVuIHQuaWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSGFzaF9zZXQuYWRkIHNlZW4gdC5pZDtcbiAgICAgICAgZiAoVCB0KTtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gdCAtPiBpdGVyX2Rlc2NlbmRhbnRzIHQpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyIHRzIH5mOml0ZXJfZGVzY2VuZGFudHM7XG4gICAgc2VlblxuICA7O1xuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzIHRzIH5mID0gaWdub3JlIChpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mIDogXyBIYXNoX3NldC50KVxuXG4gIG1vZHVsZSBEb3RfdXNlcl9pbmZvID0gc3RydWN0XG4gICAgaW5jbHVkZSBEb3RfdXNlcl9pbmZvXG5cbiAgICBsZXQgZGVmYXVsdCB+bmFtZSB0ID1cbiAgICAgIERvdF91c2VyX2luZm8uZG90XG4gICAgICAgIH5sYWJlbDpbIG5hbWU7IEtpbmQubmFtZSB0LmtpbmQ7IHNwcmludGYgXCJoZWlnaHQ9JWRcIiB0LmhlaWdodCBdXG4gICAgICAgIH5hdHRyaWJ1dGVzOlN0cmluZy5NYXAuZW1wdHlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiAoVCB0KSA9IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdFxuXG4gIGxldCBwcmludF9ub2RlIG91dCB+bmFtZSB0ID1cbiAgICBsZXQgZGVmYXVsdCA9IERvdF91c2VyX2luZm8uZGVmYXVsdCB+bmFtZSB0IGluXG4gICAgbGV0IGluZm8gPVxuICAgICAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgIHwgU29tZSB1c2VyX2luZm8gLT4gRG90X3VzZXJfaW5mby5hcHBlbmQgZGVmYXVsdCB1c2VyX2luZm9cbiAgICBpblxuICAgIGZwcmludGYgb3V0IFwiJXNcXG5cIiAoRG90X3VzZXJfaW5mby50b19zdHJpbmcgfm5hbWUgKERvdF91c2VyX2luZm8udG9fZG90IGluZm8pKVxuICA7O1xuXG4gIGxldCBzYXZlX2RvdCBvdXQgdHMgPVxuICAgIGxldCBub2RlX25hbWUgPVxuICAgICAgaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICB0aGVuIGZ1biBfIC0+IFwibiMjI1wiXG4gICAgICBlbHNlIGZ1biBub2RlIC0+IFwiblwiIF4gTm9kZV9pZC50b19zdHJpbmcgbm9kZS5pZFxuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCJkaWdyYXBoIEcge1xcblwiO1xuICAgIGZwcmludGYgb3V0IFwiICByYW5rZGlyID0gQlRcXG5cIjtcbiAgICBsZXQgYmluZF9lZGdlcyA9IHJlZiBbXSBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBsZXQgbmFtZSA9IG5vZGVfbmFtZSB0IGluXG4gICAgICAgIHByaW50X25vZGUgb3V0IH5uYW1lIHQ7XG4gICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGZyb21fKSAtPlxuICAgICAgICAgIGZwcmludGYgb3V0IFwiICAlcyAtPiAlc1xcblwiIChub2RlX25hbWUgZnJvbV8pIG5hbWUpO1xuICAgICAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+XG4gICAgICAgICAgQmluZC5pdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQgfmY6KGZ1biB0b18gLT5cbiAgICAgICAgICAgIGJpbmRfZWRnZXMgOj0gKFQgdCwgdG9fKSA6OiAhYmluZF9lZGdlcylcbiAgICAgICAgfCBfIC0+ICgpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyICFiaW5kX2VkZ2VzIH5mOihmdW4gKFQgZnJvbSwgVCB0b18pIC0+XG4gICAgICBpZiBIYXNoX3NldC5tZW0gc2VlbiB0b18uaWRcbiAgICAgIHRoZW4gZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzIFtzdHlsZT1kYXNoZWRdXFxuXCIgKG5vZGVfbmFtZSBmcm9tKSAobm9kZV9uYW1lIHRvXykpO1xuICAgIGZwcmludGYgb3V0IFwifVxcbiUhXCJcbiAgOztcblxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIHRzID1cbiAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIG91dCAtPiBzYXZlX2RvdCBvdXQgdHMpXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIEFzX3JlY29tcHV0ZV9saXN0ID0gTm9kZS5QYWNrZWQuQXNfbGlzdCAoc3RydWN0XG4gICAgbGV0IG5leHQgKE5vZGUuUGFja2VkLlQgbm9kZSkgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX3JlY29tcHV0ZV9saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgKCogV2UgZGlzcGxheSB0aGUgc21hbGxlc3QgcHJlZml4IG9mIFtub2Rlc19ieV9oZWlnaHRdIHRoYXQgaW5jbHVkZXMgYWxsIG5vZGVzLiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlJlY29tcHV0ZV9oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGxldCBhY3R1YWxfbGVuZ3RoID0gcmVmIDAgaW5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyIHQubm9kZXNfYnlfaGVpZ2h0IH5mOihmdW4gbm9kZSAtPlxuICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGggOj0gIWFjdHVhbF9sZW5ndGggKyBBc19yZWNvbXB1dGVfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgICAgICAgIFsldGVzdF9lcTogaW50XSBsZW5ndGggIWFjdHVhbF9sZW5ndGgpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub2Rlc19ieV9oZWlnaHQgLT5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSBub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBoZWlnaHQgbm9kZSAtPlxuICAgICAgICAgICAgIEFzX3JlY29tcHV0ZV9saXN0Lml0ZXIgbm9kZSB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSkpKSkpXG47O1xuXG5sZXQgY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBmb3IgaSA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDEgdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxIGRvXG4gICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaSkpXG4gICAgZG9uZTtcbiAgbGV0IHNyYyA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBkc3QgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgfnNyY1xuICAgIH5zcmNfcG9zOjBcbiAgICB+ZHN0XG4gICAgfmRzdF9wb3M6MFxuICAgIH5sZW46KG1pbiAoVW5pZm9ybV9hcnJheS5sZW5ndGggc3JjKSAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHN0KSk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIGRzdDtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gbWluIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbmV4dCAocHJldiA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV4dCA9XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudW5zYWZlX3ZhbHVlIHByZXYgaW5cbiAgICBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dClcbjs7XG5cbmxldCBzZXRfcHJldiAobmV4dCA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+cHJldiA9XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0XG4gIHRoZW4gKFxuICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudW5zYWZlX3ZhbHVlIG5leHQgaW5cbiAgICBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXAgPC0gcHJldilcbjs7XG5cbmxldCBsaW5rICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIGhlaWdodDtcbiAgbGV0IG5leHQgPSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgaW5cbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6KFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSk7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSlcbjs7XG5cbmxldCB1bmxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBwcmV2ID0gbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGlmIHBoeXNfc2FtZVxuICAgICAgIChVb3B0LnNvbWUgbm9kZSlcbiAgICAgICAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApXG4gIHRoZW4gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY7XG4gIHNldF9uZXh0IHByZXYgfm5leHQ7XG4gIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmVcbjs7XG5cbigqIFdlIGRvbid0IHNldCBbbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBoZXJlLCBidXQgcmF0aGVyIGFmdGVyIGNhbGxpbmcgW3VubGlua10uICopXG5cbmxldCBhZGQgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmIChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgfHwgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImluY29ycmVjdCBhdHRlbXB0IHRvIGFkZCBub2RlIHRvIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgaGVpZ2h0IDwgdC5oZWlnaHRfbG93ZXJfYm91bmQgdGhlbiB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxpbmsgdCBub2RlO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCByZW1vdmUgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmICgobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKSB8fCBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IFtyZW1vdmVdIG9mIG5vZGUgZnJvbSByZWNvbXB1dGUgaGVhcFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgdW5saW5rIHQgbm9kZTtcbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGluY3JlYXNlX2hlaWdodCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBhc3NlcnQgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICB1bmxpbmsgdCBub2RlO1xuICBsaW5rIHQgbm9kZVxuOztcblxubGV0IG1pbl9oZWlnaHQgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gIGVsc2UgKFxuICAgIGxldCBub2Rlc19ieV9oZWlnaHQgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICAgIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKSBkb1xuICAgICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxXG4gICAgZG9uZSk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG47O1xuXG5sZXQgcmVtb3ZlX21pbiB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBub2RlID0gcmVmIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAhbm9kZSBkb1xuICAgIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIHQuaGVpZ2h0X2xvd2VyX2JvdW5kICsgMTtcbiAgICBpZiBkZWJ1ZyAmJiB0LmhlaWdodF9sb3dlcl9ib3VuZCA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiB1bmV4cGVjdGVkbHkgcmVhY2hlZCBlbmQgb2YgaGVhcFwiXG4gICAgICAgIHRcbiAgICAgICAgWyVzZXhwX29mOiB0XTtcbiAgICBub2RlIDo9IFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZFxuICBkb25lO1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAhbm9kZSBpblxuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBsZXQgbmV4dCA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0Lm5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2OlVvcHQubm9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxubW9kdWxlIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gIGVuZClcblxubW9kdWxlIE5vZGVzX2J5X2hlaWdodCA9IHN0cnVjdFxuICB0eXBlIHQgPSBBc19hZGp1c3RfaGVpZ2h0c19saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgbWF4X25vbmVtcHR5X2luZGV4ID0gcmVmICgtMSkgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBpIGwgLT4gaWYgVW9wdC5pc19zb21lIGwgdGhlbiBtYXhfbm9uZW1wdHlfaW5kZXggOj0gaSk7XG4gICAgVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOjAgfmxlbjooIW1heF9ub25lbXB0eV9pbmRleCArIDEpIHw+IFslc2V4cF9vZjogdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaGVpZ2h0IG5vZGVzIC0+XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaW52YXJpYW50IG5vZGVzO1xuICAgICAgICBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lml0ZXIgbm9kZXMgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IGhlaWdodCk7XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApO1xuICAgICAgICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICAgIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0IH5mOihmdW4gbm9kZSAtPiByIDo9ICFyICsgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgIXJcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BZGp1c3RfaGVpZ2h0c19oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPSBOb2Rlc19ieV9oZWlnaHQubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KSkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXhfaGVpZ2h0X3NlZW46XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9oZWlnaHRfc2VlbiAtPlxuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6KGNoZWNrIE5vZGVzX2J5X2hlaWdodC5pbnZhcmlhbnQpKVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG1heF9oZWlnaHRfc2VlbiA9IDBcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBtYXhfaGVpZ2h0X2FsbG93ZWQgPCB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIGxlc3MgdGhhbiB0aGUgbWF4IGhlaWdodCBhbHJlYWR5IHNlZW5cIlxuICAgICAgKG1heF9oZWlnaHRfYWxsb3dlZCwgYG1heF9oZWlnaHRfc2VlbiB0Lm1heF9oZWlnaHRfc2VlbilcbiAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4X2hlaWdodF9zZWVuIG9mIGludCBdXTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbjs7XG5cbmxldCBhZGRfdW5sZXNzX21lbSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gIHRoZW4gKFxuICAgIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICAgICgqIFdlIHByb2Nlc3Mgbm9kZXMgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBwcmUtYWRqdXN0ZWQgaGVpZ2h0LCBzbyBpdCBpcyBhIGJ1ZyBpZiB3ZVxuICAgICAgIGV2ZXIgdHJ5IHRvIGFkZCBhIG5vZGUgdGhhdCB3b3VsZCB2aW9sYXRlIHRoYXQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSB0LmhlaWdodF9sb3dlcl9ib3VuZCk7XG4gICAgKCogV2hlbmV2ZXIgd2Ugc2V0IGEgbm9kZSdzIGhlaWdodCwgd2UgdXNlIFtzZXRfaGVpZ2h0XSwgd2hpY2ggZW5mb3JjZXMgdGhpcy4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIGhlaWdodDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0O1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSkpXG47O1xuXG5sZXQgcmVtb3ZlX21pbl9leG4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyAmJiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFkanVzdF9oZWlnaHRzX2hlYXAucmVtb3ZlX21pbiBvZiBlbXB0eSBoZWFwXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgciA9IHJlZiB0LmhlaWdodF9sb3dlcl9ib3VuZCBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0ICFyKSBkb1xuICAgIGluY3IgclxuICBkb25lO1xuICBsZXQgaGVpZ2h0ID0gIXIgaW5cbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkgaW5cbiAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwO1xuICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcblxubGV0IHNldF9oZWlnaHQgdCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBpZiBoZWlnaHQgPiB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuIChcbiAgICB0Lm1heF9oZWlnaHRfc2VlbiA8LSBoZWlnaHQ7XG4gICAgaWYgaGVpZ2h0ID4gbWF4X2hlaWdodF9hbGxvd2VkIHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIm5vZGUgd2l0aCB0b28gbGFyZ2UgaGVpZ2h0XCJcbiAgICAgICAgKGBIZWlnaHQgaGVpZ2h0LCBgTWF4IChtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpXG4gICAgICAgIFslc2V4cF9vZjogWyBgSGVpZ2h0IG9mIGludCBdICogWyBgTWF4IG9mIGludCBdXSk7XG4gIG5vZGUuaGVpZ2h0IDwtIGhlaWdodFxuOztcblxubGV0IGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBpZiBOb2RlLnNhbWUgcGFyZW50IG9yaWdpbmFsX2NoaWxkXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYWRkaW5nIGVkZ2UgbWFkZSBncmFwaCBjeWNsaWNcIlxuICAgICAgKGBjaGlsZCBvcmlnaW5hbF9jaGlsZCwgYHBhcmVudCBvcmlnaW5hbF9wYXJlbnQpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNoaWxkIG9mIF8gTm9kZS50IF0gKiBbIGBwYXJlbnQgb2YgXyBOb2RlLnQgXV07XG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW4gKFxuICAgIGFkZF91bmxlc3NfbWVtIHQgcGFyZW50O1xuICAgICgqIFdlIHNldCBbcGFyZW50LmhlaWdodF0gYWZ0ZXIgYWRkaW5nIFtwYXJlbnRdIHRvIHRoZSBoZWFwLCBzbyB0aGF0IFtwYXJlbnRdIGdvZXNcbiAgICAgICBpbiB0aGUgaGVhcCB3aXRoIGl0cyBwcmUtYWRqdXN0ZWQgaGVpZ2h0LiAqKVxuICAgIHNldF9oZWlnaHQgdCBwYXJlbnQgKGNoaWxkLmhlaWdodCArIDEpKVxuOztcblxubGV0IGFkanVzdF9oZWlnaHRzXG4gICAgICAodHlwZSBhIGIpXG4gICAgICB0XG4gICAgICByZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkOihvcmlnaW5hbF9jaGlsZCA6IGEgTm9kZS50KVxuICAgICAgfnBhcmVudDoob3JpZ2luYWxfcGFyZW50IDogYiBOb2RlLnQpXG4gID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0ID49IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0O1xuICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgdFxuICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICB+Y2hpbGQ6b3JpZ2luYWxfY2hpbGRcbiAgICB+cGFyZW50Om9yaWdpbmFsX3BhcmVudDtcbiAgd2hpbGUgbGVuZ3RoIHQgPiAwIGRvXG4gICAgbGV0IChUIGNoaWxkKSA9IHJlbW92ZV9taW5fZXhuIHQgaW5cbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIGNoaWxkXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5pbmNyZWFzZV9oZWlnaHQgcmVjb21wdXRlX2hlYXAgY2hpbGQ7XG4gICAgaWYgY2hpbGQubnVtX3BhcmVudHMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIGNoaWxkLnBhcmVudDAgaW5cbiAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudDtcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIGNoaWxkLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudFxuICAgICAgZG9uZSk7XG4gICAgbWF0Y2ggY2hpbGQua2luZCB3aXRoXG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgeyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7IF8gfSAtPlxuICAgICAgbGV0IHIgPSByZWYgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVfb25fcmhzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICAgICAgICAgIH5jaGlsZFxuICAgICAgICAgICAgfnBhcmVudDpub2RlX29uX3Joc1xuICAgICAgZG9uZVxuICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPCBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUuQWN0aW9uLnQgPVxuICAgIHwgQXQgb2YgQXQudFxuICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpZ25vcmUgc25hcHNob3RcbiAgICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGlnbm9yZSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS50ID1cbiAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICA7ICgqIFtuZXh0X2ZpcmVkXSBzaW5nbHkgbGlua3MgYWxsIGFsYXJtIHZhbHVlcyB0aGF0IGZpcmUgZHVyaW5nIGEgc2luZ2xlIGNhbGwgdG9cbiAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogKHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXIgfmFjdGlvbjooY2hlY2sgQWN0aW9uLmludmFyaWFudCkgfm5leHRfZmlyZWQ6aWdub3JlKVxuOztcblxubGV0IGNyZWF0ZSBhY3Rpb24gPSB7IGFjdGlvbjsgbmV4dF9maXJlZCA9IFVvcHQubm9uZSB9XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29uZmlnX2ludGZcblxubW9kdWxlIERlZmF1bHQgKCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSB0cnVlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLkludGVybmFsX29ic2VydmVyXG5cbm1vZHVsZSBQYWNrZWRfID0gc3RydWN0XG4gIGluY2x1ZGUgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyB8PiBbJXNleHBfb2Y6IF8gVHlwZXMuTm9kZS50XVxuICA7O1xuXG4gIGxldCBwcmV2X2luX2FsbCAoVCB0KSA9IHQucHJldl9pbl9hbGxcbiAgbGV0IG5leHRfaW5fYWxsIChUIHQpID0gdC5uZXh0X2luX2FsbFxuICBsZXQgc2V0X3ByZXZfaW5fYWxsIChUIHQxKSB0MiA9IHQxLnByZXZfaW5fYWxsIDwtIHQyXG4gIGxldCBzZXRfbmV4dF9pbl9hbGwgKFQgdDEpIHQyID0gdDEubmV4dF9pbl9hbGwgPC0gdDJcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuU3RhdGUudCA9XG4gICAgfCBDcmVhdGVkXG4gICAgfCBJbl91c2VcbiAgICB8IERpc2FsbG93ZWRcbiAgICB8IFVubGlua2VkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gIHsgKCogU3RhdGUgdHJhbnNpdGlvbnM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ3JlYXRlZCAtLT4gSW5fdXNlIC0tPiBEaXNhbGxvd2VkIC0tPiBVbmxpbmtlZFxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgXFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL1xuICAgICAgIHZ9ICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9hbGxdIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgaW4gW3N0YXRlLmFsbF9vYnNlcnZlcnNdLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fb2JzZXJ2aW5nXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIG9mIFtvYnNlcnZpbmddLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluY3Jfc3RhdGUgdCA9IHQub2JzZXJ2aW5nLnN0YXRlXG5cbmxldCB1c2VfaXNfYWxsb3dlZCB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPiB0cnVlXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGZhbHNlXG47O1xuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBzYW1lX2FzX3BhY2tlZCAodDEgOiBfIHQpIChQYWNrZWRfLlQgdDIpID0gc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+b2JzZXJ2aW5nOihjaGVjayAoTm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChMaXN0LmlzX2VtcHR5IG9uX3VwZGF0ZV9oYW5kbGVycykpKVxuICAgICAgfnByZXZfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLm5leHRfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX2FsbCkpKSkpKVxuICAgICAgfm5leHRfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLnByZXZfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FsbCkpKSkpKVxuICAgICAgfnByZXZfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG5cbiAgICAgICAgICAgICAgICAgICAgKG5leHRfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX29ic2VydmluZykpKSkpKVxuICAgICAgfm5leHRfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG5cbiAgICAgICAgICAgICAgICAgICAgKHByZXZfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX29ic2VydmluZykpKSkpKSlcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCB3aXRob3V0IHN0YWJpbGl6aW5nXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIGRpc2FsbG93X2Z1dHVyZV91c2VcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgSW5fdXNlIC0+XG4gICAgbGV0IHVvcHQgPSB0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgVW9wdC51bnNhZmVfdmFsdWUgdW9wdFxuOztcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwib25fdXBkYXRlIGRpc2FsbG93ZWRcIiB0IFslc2V4cF9vZjogXyB0XVxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT5cbiAgICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IENyZWF0ZWQgLT5cbiAgICAgICAoKiBXZSdsbCBidW1wIFtvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2hlbiBbdF0gaXMgYWN0dWFsbHkgYWRkZWQgdG9cbiAgICAgICAgICBbb2JzZXJ2aW5nLm9ic2VydmVyc10gYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgKClcbiAgICAgfCBJbl91c2UgLT5cbiAgICAgICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDEpXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9vYnNlcnZpbmcgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fb2JzZXJ2aW5nIGluXG4gIHQucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkucHJldl9pbl9vYnNlcnZpbmcgPC0gcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikubmV4dF9pbl9vYnNlcnZpbmcgPC0gbmV4dDtcbiAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gIGlmIHBoeXNfZXF1YWwgdCAoVW9wdC52YWx1ZV9leG4gb2JzZXJ2aW5nLm9ic2VydmVycykgdGhlbiBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIG5leHQ7XG4gIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIC0gTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fYWxsIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9hbGwgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fYWxsIGluXG4gIHQucHJldl9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiBQYWNrZWRfLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkgcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiBQYWNrZWRfLnNldF9uZXh0X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikgbmV4dFxuOztcblxubGV0IHVubGluayB0ID1cbiAgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQ7XG4gIHVubGlua19mcm9tX2FsbCB0XG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFja2VkX1xuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlciB8PiBbJXNleHBfb2Y6IF8gaW50ZXJuYWxfb2JzZXJ2ZXJdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaW52YXJpYW50X2EgIXRcbmxldCBvYnNlcnZpbmcgdCA9IEludGVybmFsX29ic2VydmVyLm9ic2VydmluZyAhdFxubGV0IHVzZV9pc19hbGxvd2VkIHQgPSBJbnRlcm5hbF9vYnNlcnZlci51c2VfaXNfYWxsb3dlZCAhdFxubGV0IHZhbHVlX2V4biB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudmFsdWVfZXhuICF0XG5sZXQgaW5jcl9zdGF0ZSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSAhdFxuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2V4biAhdCBvbl91cGRhdGVfaGFuZGxlclxuOztcbiIsIigqIFtTdGF0ZV0gZGVmaW5lcyB0aGUgZ2xvYmFsIHN0YXRlIG9mIHdoaWNoIHRoZXJlIGlzIG9uZSBpbnN0YW5jZSBmb3IgZWFjaCBjYWxsIHRvXG4gICBbSW5jcmVtZW50YWwuTWFrZV0uXG5cbiAgIFRoaXMgbW9kdWxlIGRvZXMgbm90IGhhdmUgYW4gbWxpIGJlY2F1c2UgaXQgd291bGQgZXNzZW50aWFsbHkgZHVwbGljYXRlXG4gICBbSW5jcmVtZW50YWwuU10sIGV4Y2VwdCBhZGRpbmcgYW4gZXh0cmEgW1N0YXRlLnRdIGFyZ3VtZW50IHRvIGZ1bmN0aW9ucy4gKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbnR5cGUgc3RhdHVzID0gVHlwZXMuU3RhdHVzLnQgPVxuICB8IFN0YWJpbGl6aW5nXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG5tb2R1bGUgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5SdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgPSBUIDogJ2EgTm9kZS50ICogJ2EgTm9kZV91cGRhdGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCAoVCAobm9kZSwgX25vZGVfdXBkYXRlKSBhcyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+IE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPbmx5X2luX2RlYnVnID0gc3RydWN0XG4gICgqIEV4dHJhIHN0YXRlIGtlcHQgb25seSB3aGVuIFtkZWJ1Z10gZm9yIHRoZSBwdXJwb3NlIG9mIHdyaXRpbmcgYXNzZXJ0aW9ucy4gKilcbiAgdHlwZSB0ID0gVHlwZXMuT25seV9pbl9kZWJ1Zy50ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+Y3VycmVudGx5X3J1bm5pbmdfbm9kZTppZ25vcmVcbiAgICAgICAgfmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19ub2RlID0gTm9uZTsgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlID0gW10gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYWNrZWRfd2Vha19oYXNodGJsID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlBhY2tlZF93ZWFrX2hhc2h0YmwudCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlN0YXRlLnQgPVxuICB7IG11dGFibGUgc3RhdHVzIDogc3RhdHVzXG4gIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgOyAoKiBbc3RhYmlsaXphdGlvbl9udW1dIHN0YXJ0cyBhdCB6ZXJvLCBhbmQgaXMgaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBvZiBlYWNoXG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gIDsgKCogW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSBob2xkcyBub2RlcyB0aGF0IGhhdmUgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZVxuICAgICAgIGNvbnNpZGVyZWQgZm9yIGludmFsaWRhdGlvbi4gIEl0IGlzIG9ubHkgdXNlZCBkdXJpbmcgZ3JhcGggcmVzdHJ1Y3R1cmluZzpcbiAgICAgICBbaW52YWxpZGF0ZV9ub2RlXSBhbmQgW2FkZF9wYXJlbnRdLiAgT25jZSBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdGFjaywgd2UgdGhlblxuICAgICAgIGl0ZXJhdGUgdW50aWwgaW52YWxpZGl0eSBoYXMgcHJvcGFnYXRlZCB0byBhbGwgYW5jZXN0b3JzIGFzIG5lY2Vzc2FyeSwgYWNjb3JkaW5nIHRvXG4gICAgICAgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXS4gKilcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtudW1fYWN0aXZlX29ic2VydmVyc10gaXMgdGhlIG51bWJlciBvZiBvYnNlcnZlcnMgd2hvc2Ugc3RhdGUgaXMgW0NyZWF0ZWRdIG9yXG4gICAgICAgW0luX3VzZV0uICopXG4gICAgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICA7ICgqIFthbGxfb2JzZXJ2ZXJzXSBpcyB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFsbCBvYnNlcnZlcnMgaW4gZWZmZWN0LCBvciB0aGF0IGhhdmVcbiAgICAgICBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlXG4gICAgICAgW3N0YXRlXSBhcyBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gIDsgKCogV2UgZW5xdWV1ZSBmaW5hbGl6ZWQgb2JzZXJ2ZXJzIGluIGEgdGhyZWFkLXNhZmUgcXVldWUsIGZvciBoYW5kbGluZyBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uLiAgV2UgdXNlIGEgdGhyZWFkLXNhZmUgcXVldWUgYmVjYXVzZSBPQ2FtbCBmaW5hbGl6ZXJzIGNhbiBydW4gaW4gYW55XG4gICAgICAgdGhyZWFkLiAqKVxuICAgIGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgKCogW25ld19vYnNlcnZlcnNdIGhvbGRzIG9ic2VydmVycyBjcmVhdGVkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhXG4gICAgICAgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZV0gYXMgW0NyZWF0ZWRdIG9yIFtVbmxpbmtlZF0uICBBdCB0aGUgc3RhcnQgb2ZcbiAgICAgICBzdGFiaWxpemF0aW9uLCB3ZSBsaW5rIGludG8gW2FsbF9vYnNlcnZlcnNdIGFsbCBvYnNlcnZlcnMgaW4gW25ld19vYnNlcnZlcnNdIHdob3NlXG4gICAgICAgc3RhdGUgaXMgW0NyZWF0ZWRdIGFuZCBhZGQgdGhlbSB0byB0aGUgW29ic2VydmVyc10gb2YgdGhlIG5vZGUgdGhleSBhcmUgb2JzZXJ2aW5nLlxuICAgICAgIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgb2JzZXJ2ZXJzIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cbiAgICAgICB3aGlsZSBydW5uaW5nIHVzZXIgY29kZSAoW21hcF0sIFtiaW5kXSwgZXRjKSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aCBub2Rlc1xuICAgICAgIGJlY29taW5nIG5lY2Vzc2FyeSBhbmQgdGhlIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzXSBob2xkcyBhbGwgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlID0gRGlzYWxsb3dlZF0uICBBdCB0aGUgc3RhcnRcbiAgICAgICBvZiBzdGFiaWxpemF0aW9uLCB0aGVzZSBhcmUgdW5saW5rZWQgZnJvbSBbYWxsX29ic2VydmVyc10gYW5kIHRoZWlyIHN0YXRlIGlzXG4gICAgICAgY2hhbmdlZCB0byBbVW5saW5rZWRdLiAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyB1c2VyIGNvZGUgcnVubmluZ1xuICAgICAgIGR1cmluZyBzdGFiaWxpemF0aW9uIHRvIGNhbGwgW2Rpc2FsbG93X2Z1dHVyZV91c2VdLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoXG4gICAgICAgbm9kZXMgYmVjb21pbmcgdW5uZWNlc3NhcnkgYW5kIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFdlIGRlbGF5IGFsbCBbVmFyLnNldF0gY2FsbHMgdGhhdCBoYXBwZW4gZHVyaW5nIHN0YWJpbGl6YXRpb24gc28gdGhhdCB0aGV5IHRha2VcbiAgICAgICBlZmZlY3QgYWZ0ZXIgc3RhYmlsaXphdGlvbi4gIEFsbCB2YXJpYWJsZXMgc2V0IGR1cmluZyBzdGFiaWxpemF0aW9uIGFyZSBwdXNoZWQgb25cbiAgICAgICBbc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZW0uICBUaGVuLCBhZnRlciB0aGUgZ3JhcGggaGFzXG4gICAgICAgc3RhYmlsaXplZCwgd2UgZG8gYWxsIHRoZSBzZXRzLCBzbyB0aGF0IHRoZXkgdGFrZSBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaGFzIGFsbCBub2RlcyB3aXRoIGhhbmRsZXJzIHRvIGNvbnNpZGVyIHJ1bm5pbmcgYXQgdGhlXG4gICAgICAgZW5kIG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICBBdCB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIHdlIGNvbnNpZGVyIGVhY2ggbm9kZVxuICAgICAgIGluIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIGFuZCBpZiB3ZSBkZWNpZGUgdG8gcnVuIGl0cyBvbi11cGRhdGUgaGFuZGxlcnMsXG4gICAgICAgcHVzaCBpdCBvbiBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICBUaGVuLCBvbmNlIHdlJ3ZlIGNvbnNpZGVyZWQgYWxsIG5vZGVzIGluXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgd2UgaXRlcmF0ZSB0aHJvdWdoIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXSBhbmRcbiAgICAgICBhY3R1YWxseSBydW4gdGhlIGhhbmRsZXJzLlxuXG4gICAgICAgVGhlc2UgdHdvIHBhc3NlcyBhcmUgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gIER1cmluZyB0aGUgZmlyc3QgcGFzcywgd2UgaGF2ZW4ndFxuICAgICAgIHJ1biBhbnkgdXNlciBoYW5kbGVycywgc28gd2Uga25vdyB0aGF0IHRoZSBzdGF0ZSBpcyBleGFjdGx5IGFzIGl0IHdhcyB3aGVuXG4gICAgICAgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIEluIHBhcnRpY3VsYXIsIHdlIGtub3cgdGhhdCBpZiBhIG5vZGUgaXMgbmVjZXNzYXJ5LCB0aGVuXG4gICAgICAgaXQgaGFzIGEgc3RhYmxlIHZhbHVlOyBvbmNlIHVzZXIgaGFuZGxlcnMgcnVuLCB3ZSBkb24ndCBrbm93IHRoaXMuICBEdXJpbmcgdGhlXG4gICAgICAgc2Vjb25kIHBhc3MsIHVzZXIgaGFuZGxlcnMgY2FuIG1ha2UgY2FsbHMgdG8gYW55IGluY3JlbWVudGFsIGZ1bmN0aW9uIGV4Y2VwdCBmb3JcbiAgICAgICBbc3RhYmlsaXplXS4gIEluIHBhcnRpY3VsYXIsIHNvbWUgZnVuY3Rpb25zIHB1c2ggbm9kZXMgb25cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAgQnV0IG5vIGZ1bmN0aW9ucyAoZXhjZXB0IGZvciBbc3RhYmlsaXplXSkgbW9kaWZ5XG4gICAgICAgW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAqKVxuICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICA7ICgqIFN0YXRzLiAgVGhlc2UgYXJlIGFsbCBpbmNyZW1lbnRlZCBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UsIGFuZCBuZXZlciBkZWNyZW1lbnRlZC4gKilcbiAgICBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DbG9jay50ID1cbiAgICB7ICgqIFdlIHVzZSBbdGltaW5nX3doZWVsXSBmb3IgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMuICBbbm93XSBpcyBhIHZhcmlhYmxlIGhvbGRpbmdcbiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUuICBbaGFuZGxlX2ZpcmVkXSBpcyB0aGUgY2xvc3VyZSBwYXNzZWQgdG9cbiAgICAgICAgIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICBJdCBsaW5rcyBhbGwgdGhlIGZpcmVkIGFsYXJtIHZhbHVlcyBpbnRvXG4gICAgICAgICBbZmlyZWRfYWxhcm1fdmFsdWVzXS4gIEFmdGVyIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10gcmV0dXJucywgaXQgdGhlblxuICAgICAgICAgd2Fsa3MgdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgYW5kIGFjdHVhbGx5IGZpcmVzIHRoZW0uICBUaGlzIHR3by1wYXNzIGFwcHJvYWNoIGlzXG4gICAgICAgICBuZWNlc3NhcnkgYmVjYXVzZSBvbmUgaXMgbm90IGFsbG93ZWQgdG8gY2FsbCBbVGltaW5nX3doZWVsXSBmdW5jdGlvbnMgZnJvbSB0aGVcbiAgICAgICAgIFtoYW5kbGVfZmlyZWRdIHRoYXQgb25lIHBhc3NlcyB0byBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bm93OlxuICAgICAgICAgIChjaGVjayAoZnVuIChub3cgOiBfIFZhci50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy5lcXVhbCBub3cudmFsdWUgKFRpbWluZ193aGVlbC5ub3cgdC50aW1pbmdfd2hlZWwpKSkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5maXJlZF9hbGFybV92YWx1ZXM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyZWRfYWxhcm1fdmFsdWVzIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGZpcmVkX2FsYXJtX3ZhbHVlcykpKVxuICAgICAgICB+dGltaW5nX3doZWVsOihjaGVjayAoVGltaW5nX3doZWVsLmludmFyaWFudCBBbGFybV92YWx1ZS5pbnZhcmlhbnQpKSlcbiAgOztcblxuICBsZXQgaW5jcl9zdGF0ZSB0ID0gVmFyLmluY3Jfc3RhdGUgdC5ub3dcbmVuZFxuXG5sZXQgbm93IChjbG9jayA6IENsb2NrLnQpID0gY2xvY2subm93LnZhbHVlXG5sZXQgdGltaW5nX3doZWVsX2xlbmd0aCAoY2xvY2sgOiBDbG9jay50KSA9IFRpbWluZ193aGVlbC5sZW5ndGggY2xvY2sudGltaW5nX3doZWVsXG5sZXQgbnVtX3N0YWJpbGl6ZXMgdCA9IFN0YWJpbGl6YXRpb25fbnVtLnRvX2ludCB0LnN0YWJpbGl6YXRpb25fbnVtXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbmxldCBtYXhfaGVpZ2h0X3NlZW4gdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9XG4gIGxldCByID0gcmVmIHQuYWxsX29ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLm5leHRfaW5fYWxsIG9ic2VydmVyO1xuICAgIGYgb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IGRpcmVjdGx5X29ic2VydmVkIHQgPVxuICBsZXQgciA6IE5vZGUuUGFja2VkLnQgbGlzdCByZWYgPSByZWYgW10gaW5cbiAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgIHIgOj0gVCBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgOjogIXIpO1xuICAhclxuOztcblxubGV0IHNhdmVfZG90IHQgb3V0ID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3Qgb3V0IChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IHNhdmVfZG90X3RvX2ZpbGUgdCBmaWxlID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZiA9IE5vZGUuUGFja2VkLml0ZXJfZGVzY2VuZGFudHMgKGRpcmVjdGx5X29ic2VydmVkIHQpIH5mXG5cbm1vZHVsZSBTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWF4X251bV9wYXJlbnRzIDogaW50XG4gICAgOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIDogKGludCAqIFBlcmNlbnQudCkgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5sZXQgc3RhdHMgdCA9XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSByZWYgKC0xKSBpblxuICBsZXQgbnVtX25lY2Vzc2FyeV9ub2RlcyA9IHJlZiAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgaW5jciBudW1fbmVjZXNzYXJ5X25vZGVzO1xuICAgIG1heF9udW1fcGFyZW50cyA6PSBJbnQubWF4ICFtYXhfbnVtX3BhcmVudHMgbm9kZS5udW1fcGFyZW50cyk7XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSAhbWF4X251bV9wYXJlbnRzIGluXG4gIGxldCBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgPSBBcnJheS5jcmVhdGUgfmxlbjoobWF4X251bV9wYXJlbnRzICsgMSkgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGxldCBudW1fcGFyZW50cyA9IG5vZGUubnVtX3BhcmVudHMgaW5cbiAgICBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSA8LSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSArIDEpO1xuICBsZXQgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA9XG4gICAgQXJyYXkuZm9sZGkgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzIH5pbml0OltdIH5mOihmdW4gaSBhYyBudW1fbm9kZXMgLT5cbiAgICAgIGlmIG51bV9ub2RlcyA9IDBcbiAgICAgIHRoZW4gYWNcbiAgICAgIGVsc2UgKGksIFBlcmNlbnQub2ZfbXVsdCAoZmxvYXQgbnVtX25vZGVzIC8uIGZsb2F0ICFudW1fbmVjZXNzYXJ5X25vZGVzKSkgOjogYWMpXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgeyBTdGF0cy5tYXhfbnVtX3BhcmVudHM7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgfVxuOztcblxubGV0IGFtX3N0YWJpbGl6aW5nIHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyAtPiB0cnVlXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+IGZhbHNlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiY2Fubm90IGNhbGwgYW1fc3RhYmlsaXppbmcgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFslc2V4cF9vZjogUmFpc2VkX2V4bi50XVxuOztcblxubGV0IGludmFyaWFudCB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgICAgIChtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+XG4gICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICBcIm1lbWJlciBvZiBhbGxfb2JzZXJ2ZXJzIHdpdGggdW5leHBlY3RlZCBzdGF0ZVwiXG4gICAgICAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudF0pO1xuICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaWdub3JlIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgIE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlO1xuICAgICAgICBpZiBub3QgKGFtX3N0YWJpbGl6aW5nIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBub2RlLmhlaWdodCA8PSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXApKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICA9IFJlY29tcHV0ZV9oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5zdGF0dXM6aWdub3JlXG4gICAgICAgIH5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzOmlnbm9yZVxuICAgICAgICB+c3RhYmlsaXphdGlvbl9udW06KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgICAgfmN1cnJlbnRfc2NvcGU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9zY29wZSAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgY3VycmVudF9zY29wZSBTY29wZS50b3ApKSlcbiAgICAgICAgfnJlY29tcHV0ZV9oZWFwOihjaGVjayBSZWNvbXB1dGVfaGVhcC5pbnZhcmlhbnQpXG4gICAgICAgIH5hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEFkanVzdF9oZWlnaHRzX2hlYXAubGVuZ3RoIGFkanVzdF9oZWlnaHRzX2hlYXAgPSAwKTtcbiAgICAgICAgICAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmludmFyaWFudCBhZGp1c3RfaGVpZ2h0c19oZWFwKSlcbiAgICAgICAgfnByb3BhZ2F0ZV9pbnZhbGlkaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBwcm9wYWdhdGVfaW52YWxpZGl0eSkpKVxuICAgICAgICB+bnVtX2FjdGl2ZV9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2FjdGl2ZV9vYnNlcnZlcnMgLT4gYXNzZXJ0IChudW1fYWN0aXZlX29ic2VydmVycyA+PSAwKSkpXG4gICAgICAgIH5hbGxfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+ZmluYWxpemVkX29ic2VydmVyczppZ25vcmVcbiAgICAgICAgfm5ld19vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICAoKiBXaGVuIGFuIG9ic2VydmVyIGlzIGFkZGVkIHRvIFtuZXdfb2JzZXJ2ZXJzXSwgaXQgaGFzIFtzdGF0ZSA9IENyZWF0ZWRdLlxuICAgICAgICAgICAgICAgICAgIFRoZSBvbmx5IHBvc3NpYmxlIHRyYW5zaXRpb25zIGZyb20gdGhlcmUgYXJlIHRvIFtVbmxpbmtlZF0gb3IgdG9cbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSwgd2hpY2ggYWxzbyByZW1vdmVzIGl0IGZyb20gW25ld19vYnNlcnZlcnNdLCBuZXZlciB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgICAgIGFnYWluLiAgVGh1cyBpdCBpcyBpbXBvc3NpYmxlIGZvciBhbiBvYnNlcnZlciBpbiBbbmV3X29ic2VydmVyc10gdG8gYmVcbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgICB+ZGlzYWxsb3dlZF9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIC0+XG4gICAgICAgICAgICAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pXG4gICAgICAgICAgICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgU3RhY2suaW52YXJpYW50XG4gICAgICAgICAgICAgICAgIChmdW4gKFZhci5QYWNrZWQuVCB2YXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICAgICAgICAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICB+aGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb246KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgTm9kZS5QYWNrZWQuaW52YXJpYW50KSlcbiAgICAgICAgfnJ1bl9vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgICAgKGNoZWNrIChTdGFjay5pbnZhcmlhbnQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycy5pbnZhcmlhbnQpKVxuICAgICAgICB+b25seV9pbl9kZWJ1ZzooY2hlY2sgT25seV9pbl9kZWJ1Zy5pbnZhcmlhbnQpXG4gICAgICAgIH53ZWFrX2hhc2h0YmxzOmlnbm9yZVxuICAgICAgICB+a2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19jaGFuZ2VkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NyZWF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfaW52YWxpZGF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0Omlnbm9yZVxuICAgICAgICB+bnVtX3Zhcl9zZXRzOmlnbm9yZSlcbjs7XG5cbmxldCBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWUgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyAtPiAoKVxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgaWYgbm90IGFsbG93X2luX3VwZGF0ZV9oYW5kbGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIG9uLXVwZGF0ZSBoYW5kbGVyc1wiIG5hbWUpXG4gICAgICAgIGJhY2t0cmFjZVxuICAgICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XSlcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIiBuYW1lKVxuICAgICAgKHJhaXNlZF9leG4sIGJhY2t0cmFjZSlcbiAgICAgIFslc2V4cF9vZjogUmFpc2VkX2V4bi50ICogQmFja3RyYWNlLnRdXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiBuYW1lKVxuICAgICAgYmFja3RyYWNlXG4gICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XVxuOztcblxubGV0IHNldF9oZWlnaHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X2hlaWdodCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgbm9kZSBoZWlnaHRcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgaGVpZ2h0ID1cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic2V0X21heF9oZWlnaHRfYWxsb3dlZFwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjp0cnVlO1xuICBBZGp1c3RfaGVpZ2h0c19oZWFwLnNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwIGhlaWdodDtcbiAgUmVjb21wdXRlX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwIGhlaWdodFxuOztcblxubGV0IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgbm90IG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25cbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSB0cnVlO1xuICAgIFN0YWNrLnB1c2ggdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoVCBub2RlKSlcbjs7XG5cbmxldCByZWMgcmVtb3ZlX2NoaWxkcmVuIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIHBhcmVudCAtPlxuICBOb2RlLml0ZXJpX2NoaWxkcmVuIHBhcmVudCB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXgpXG5cbmFuZCByZW1vdmVfY2hpbGQgOiB0eXBlIGEgYi4gY2hpbGQ6YiBOb2RlLnQgLT4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBjaGVja19pZl91bm5lY2Vzc2FyeSBjaGlsZFxuXG5hbmQgY2hlY2tfaWZfdW5uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPiBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpIHRoZW4gYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGVcblxuYW5kIGJlY2FtZV91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gIG5vZGUuaGVpZ2h0IDwtIC0xO1xuICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gVW5vcmRlcmVkX2FycmF5X2ZvbGQuZm9yY2VfZnVsbF9jb21wdXRlIHVcbiAgIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOmZhbHNlXG4gICB8IF8gLT4gKCkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IHJlbW92ZV9hbGFybSAoY2xvY2sgOiBDbG9jay50KSBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gY2xvY2sudGltaW5nX3doZWVsIGFsYXJtXG4gIHRoZW4gVGltaW5nX3doZWVsLnJlbW92ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbjs7XG5cbigqIEFuIGludmFsaWQgbm9kZSBpcyBub2RlIHdob3NlIGtpbmQgaXMgW0ludmFsaWRdLiAgQSBub2RlJ3Mga2luZCBpcyBzZXQgdG8gW0ludmFsaWRdXG4gICB3aGVuIHRoZSBsaHMgb2YgaXRzIHNjb3BlIGNoYW5nZXMsIG9yIG9uZSBpZiBpdHMgY2hpbGRyZW4gcHJvcGFnYXRlIHRoZSBpbnZhbGlkaXR5XG4gICB1cHdhcmQgKHNlZSBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdIHRvIHNlZSBpbiB3aGljaCBjYXNlIGludmFsaWRpdHkgcHJvcGFnYXRpb25cbiAgIHN0b3BzKS4gIEludmFsaWRhdGluZyBhIG5vZGUgZGlzY29ubmVjdHMgaXQgZnJvbSBpdHMgY2hpbGRyZW4sIHdoaWNoIG1lYW5zOlxuXG4gICAxLiBhbiBpbnZhbGlkIG5vZGUgY2Fubm90IGVuZCB1cCBvbiB0aGUgc2NoZWR1bGVyIChpZiBpdCBpcyBvbiB0aGUgc2NoZWR1bGVyIHdoZW5cbiAgIGl0IGlzIGludmFsaWRhdGVkLCBpdCBpcyByZW1vdmVkKVxuICAgMi4gYW4gaW52YWxpZCBub2RlIGRvZXNuJ3QgbWFrZSBpdHMgY2hpbGRyZW4gbmVjZXNzYXJ5IGFueW1vcmUuXG5cbiAgIEludmFsaWQgbm9kZXMgdXN1YWxseSBoYXZlIG5vIHBhcmVudHMsIGJlY2F1c2UgdGhlIHVwd2FyZCBpbnZhbGlkaXR5IHByb3BhZ2F0aW9uIG1lYW5zXG4gICB0aGF0IHRoZWlyIHBhcmVudHMgd2lsbCB0aGVtc2VsdmVzIGJlY29tZSBpbnZhbGlkIGFuZCBkaXNjb25uZWN0IGZyb20gdGhlaXIgY2hpbGRyZW4uXG4gICBIb3dldmVyLCBbaWZdLCBbam9pbl0gb3IgW2JpbmRdIGFyZSBub3QgaW52YWxpZGF0ZWQgYnkgdGhlIHVwd2FyZCBwcm9wYWdhdGlvbiwgc28gYW5cbiAgIGludmFsaWQgbm9kZSBjYW4gc3RpbGwgaGF2ZSBwYXJlbnRzLiAgSW52YWxpZCBub2RlcyBjYW4gYmUgbmVjZXNzYXJ5LCBpbiB0aGUgY2FzZSB3aGVyZVxuICAgdGhleSBoYXZlIHBhcmVudHMsIGFuZCBhbHNvIHdoZW4gdGhleSBhcmUgb2JzZXJ2ZWQuXG5cbiAgIFRoZSB1cHdhcmQgcHJvcGFnYXRpb24gb2YgaW52YWxpZGl0eSBoYXBwZW5zIGJvdGggd2hlbiBhIG5vZGUgYmVjb21lcyBpbnZhbGlkLCBhbmQgd2hlblxuICAgdHJ5aW5nIHRvIGFkZCBhbiBlZGdlIGZyb20gYW4gaW52YWxpZCBjaGlsZCBub2RlIHRvIGFub3RoZXIgbm9kZS4gIEJlY2F1c2UgaW52YWxpZGl0eVxuICAgaXMgb25seSBwcm9wYWdhdGVkIHVwd2FyZCwgYW5kIGJlY2F1c2UgdGhlIHJocyBvZiBhIGJpbmQgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIGl0XG4gICBleGVjdXRlcywgYSBub2RlIGNhbm5vdCBiZSBib3RoIGNvbXB1dGVkIGFuZCBpbnZhbGlkYXRlZCBpbiB0aGUgc2FtZSBzdGFiaWxpemF0aW9uLlxuXG4gICBXaGVuIGludmFsaWRhdGluZywgd2UgY2FuJ3QgYXNzdW1lIG11Y2ggYWJvdXQgdGhlIG5vZGVzIHdlIHZpc2l0LiAgV2UgY2Fubm90IGFzc3VtZVxuICAgdGhhdCBub2RlcyBhcmUgdmFsaWQgKHRoZSByaHMgY2FuIGNvbnRhaW4gcHJldmlvdXNseSBpbnZhbGlkYXRlZCBub2RlcyksIG9yIHRoYXQgbm9kZXNcbiAgIGFyZSB1bm5lY2Vzc2FyeSAobm9kZXMgY2FuIGJlIG1hZGUgbmVjZXNzYXJ5IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGVpciBjb250YWluaW5nXG4gICBiaW5kcykuICopXG5cbmxldCByZWMgaW52YWxpZGF0ZV9ub2RlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gIHRoZW4gKFxuICAgIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUub2xkX3ZhbHVlX29wdCk7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgPC0gdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgKyAxO1xuICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgKCogVGhlIG5vZGUgZG9lc24ndCBoYXZlIGNoaWxkcmVuIGFueW1vcmUsIHNvIHdlIGNhbiBsb3dlciBpdHMgaGVpZ2h0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlLCB0byBvbmUgZ3JlYXRlciB0aGFuIHRoZSBzY29wZSBpdCB3YXMgY3JlYXRlZCBpbi4gIEFsc28sIGJlY2F1c2Ugd2VcbiAgICAgICAgIGFyZSBsb3dlcmluZyB0aGUgaGVpZ2h0LCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdCBhbnkgb2YgaXRzIGFuY2VzdG9ycycgaGVpZ2h0cy5cbiAgICAgICAgIFdlIGNvdWxkIGxlYXZlIHRoZSBoZWlnaHQgYWxvbmUsIGJ1dCB3ZSBtYXkgYXMgd2VsbCBsb3dlciBpdCBhcyBtdWNoIGFzXG4gICAgICAgICBwb3NzaWJsZSB0byBhdm9pZCBtYWtpbmcgdGhlIGhlaWdodHMgb2YgYW55IGZ1dHVyZSBhbmNlc3RvcnMgdW5uZWNlc3NhcmlseVxuICAgICAgICAgbGFyZ2UuICopXG4gICAgICBub2RlLmhlaWdodCA8LSBTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gICAgKCogV2UgZG9uJ3Qgc2V0IFtub2RlLmNyZWF0ZWRfaW5dIG9yIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXTsgd2UgbGVhdmUgW25vZGVdXG4gICAgICAgaW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgSWYgdGhhdCBzY29wZSBpcyBldmVyIGludmFsaWRhdGVkLCB0aGVuIHRoYXRcbiAgICAgICB3aWxsIGNsZWFyIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSAqKVxuICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICB8IEF0IGF0IC0+IHJlbW92ZV9hbGFybSBhdC5jbG9jayBhdC5hbGFybVxuICAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gcmVtb3ZlX2FsYXJtIGF0X2ludGVydmFscy5jbG9jayBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgICAgfCBCaW5kX21haW4gYmluZCAtPiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgIHwgU3RlcF9mdW5jdGlvbiB7IGFsYXJtOyBjbG9jazsgXyB9IC0+IHJlbW92ZV9hbGFybSBjbG9jayBhbGFybVxuICAgICB8IF8gLT4gKCkpO1xuICAgIE5vZGUuc2V0X2tpbmQgbm9kZSBJbnZhbGlkO1xuICAgICgqIElmIHdlIGNhbGxlZCBbcHJvcGFnYXRlX2ludmFsaWRpdHldIHJpZ2h0IGF3YXkgb24gdGhlIHBhcmVudHMsIHdlIHdvdWxkIGdldCBpbnRvXG4gICAgICAgdHJvdWJsZS4gIFRoZSBwYXJlbnQgd291bGQgZGlzY29ubmVjdCBpdHNlbGYgZnJvbSB0aGUgY3VycmVudCBub2RlLCB0aHVzXG4gICAgICAgbW9kaWZ5aW5nIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIEV2ZW4gaWYgd2UgbWFkZSBhIHNwZWNpYWwgY2FzZSwgaXRcbiAgICAgICBzdGlsbCB3b3VsZG4ndCBiZSBlbm91Z2ggdG8gaGFuZGxlIG90aGVyIGNhc2VzIHdoZXJlIHRoZSBsaXN0IG9mIHBhcmVudHMgaXNcbiAgICAgICBtb2RpZmllZCAoZS5nLiB3aGVuIFtsaHNdIGlzIGludmFsaWRhdGVkIGluIHRoZSBleGFtcGxlIGluIHRoZSBjb21tZW50IGFib3V0XG4gICAgICAgW2Nhbl9yZWNvbXB1dGVfbm93XSBmYXIgYmVsb3cpLiAqKVxuICAgIGZvciBpbmRleCA9IDAgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoTm9kZS5nZXRfcGFyZW50IG5vZGUgfmluZGV4KVxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSk7XG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcblxuYW5kIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgbm9kZSA9XG4gIGxldCByID0gcmVmIG5vZGUgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgaW52YWxpZGF0ZV9ub2RlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbigqIFdoZW4gW25vdCB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNdIGFuZCBhIGJpbmQncyBsaHMgY2hhbmdlcywgd2UgbW92ZVxuICAgbm9kZXMgY3JlYXRlZCBvbiB0aGUgYmluZCdzIHJocyB1cCB0byBpdHMgcGFyZW50IGJpbmQsIGFzIG9wcG9zZWQgdG8gW1Njb3BlLlRvcF0uICBUaGlzXG4gICBtYWludGFpbnMgdGhlaXIgZGVwZW5kZW5jZSBvbiB2YWxpZCBiaW5kIGxlZnQtaGFuZCBzaWRlcywgYW5kIGtlZXBzIHRoZW0gaGlnaGVyIGluIHRoZVxuICAgZ3JhcGguICBUaGlzIGluIHR1cm4gbWVhbnMgdGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHRvIGNvbXB1dGUgdGhvc2Ugbm9kZXMgYWZ0ZXIgdGhlXG4gICBwYXJlbnQgYmluZCdzIGxocywgd2hpY2ggZ2l2ZXMgdGhlbSBtb3JlIG9mIGEgY2hhbmNlIHRvIGJlY29tZSB1bm5lY2Vzc2FyeSBhbmQgbm90IGJlXG4gICBjb21wdXRlZCBzaG91bGQgdGhlIHBhcmVudCBiaW5kJ3MgbGhzIGNoYW5nZS4gKilcbmxldCByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIF90IChmaXJzdF9ub2RlX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV3X3Njb3BlID1cbiAgbGV0IHIgPSByZWYgZmlyc3Rfbm9kZV9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgbm9kZV9vbl9yaHMuY3JlYXRlZF9pbiA8LSBuZXdfc2NvcGU7XG4gICAgU2NvcGUuYWRkX25vZGUgbmV3X3Njb3BlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbmxldCBwcm9wYWdhdGVfaW52YWxpZGl0eSB0ID1cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5KSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5wcm9wYWdhdGVfaW52YWxpZGl0eSBpblxuICAgIGlmIE5vZGUuaXNfdmFsaWQgbm9kZVxuICAgIHRoZW5cbiAgICAgIGlmIE5vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkIG5vZGVcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2RlIG5vZGVcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBub2RlIGlzIG5lY2Vzc2FyeS4gVGhpcyBpcyBiZWNhdXNlIGNoaWxkcmVuIGNhbiBvbmx5IHBvaW50IHRvIG5lY2Vzc2FyeVxuICAgICAgICAgICAgIHBhcmVudHNcbiAgICAgICAgICAgLSBub2RlIGlzIHN0YWxlLiBUaGlzIGlzIGJlY2F1c2U6IEZvciBiaW5kLCBpZiwgam9pbiwgdGhpcyBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBlaXRoZXIgdGhlIGludmFsaWRhdGlvbiBpcyBjYXVzZWQgYnkgdGhlIGxocyBjaGFuZ2luZyAoaW4gd2hpY2ggY2FzZSB0aGVcbiAgICAgICAgICAgICBsaHMtY2hhbmdlIG5vZGUgYmVpbmcgbmV3ZXIgbWFrZXMgdXMgc3RhbGUpLlxuICAgICAgICAgICAtIG9yIGEgY2hpbGQgYmVjYW1lIGludmFsaWQgdGhpcyBzdGFiaWxpemF0aW9uIGN5Y2xlLCBpbiB3aGljaCBjYXNlIGl0IGhhc1xuICAgICAgICAgICAgIHQuY2hhbmdlZF9hdCBvZiBbdC5zdGFiaWxpemF0aW9uX251bV0sIGFuZCBzbyBbbm9kZV0gaXMgc3RhbGVcbiAgICAgICAgICAgLSBvciBbbm9kZV0ganVzdCBiZWNhbWUgbmVjZXNzYXJ5IGFuZCB0cmllZCBjb25uZWN0aW5nIHRvIGFuIGFscmVhZHkgaW52YWxpZFxuICAgICAgICAgICAgIGNoaWxkLiBJbiB0aGF0IGNhc2UsIFtjaGlsZC5jaGFuZ2VkX2F0ID4gbm9kZS5yZWNvbXB1dGVkX2F0XSBmb3IgdGhhdCBjaGlsZCxcbiAgICAgICAgICAgICBiZWNhdXNlIGlmIHdlIGhhZCBiZWVuIHJlY29tcHV0ZWQgd2hlbiB0aGF0IGNoaWxkIGNoYW5nZWQsIHdlIHdvdWxkIGhhdmUgYmVlblxuICAgICAgICAgICAgIG1hZGUgaW52YWxpZCBiYWNrIHRoZW4uICBGb3IgZXhwZXJ0IG5vZGVzLCB0aGUgYXJndW1lbnQgaXMgdGhlIHNhbWUsIGV4Y2VwdFxuICAgICAgICAgICAgIHRoYXQgaW5zdGVhZCBvZiBsaHMtY2hhbmdlIG5vZGVzIG1ha2UgdGhlIGV4cGVydCBub2RlcyBzdGFsZSwgaXQncyBtYWRlIHN0YWxlXG4gICAgICAgICAgICAgZXhwbGljaXRlbHkgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICAoKiBJZiBtdWx0aXBsZSBjaGlsZHJlbiBhcmUgaW52YWxpZCwgdGhleSB3aWxsIHB1c2ggdXMgYXMgbWFueSB0aW1lcyBvbiB0aGVcbiAgICAgICAgICAgICAgcHJvcGFnYXRpb24gc3RhY2ssIHNvIHdlIGNvdW50IHRoZW0gcmlnaHQuICopXG4gICAgICAgICAgIEV4cGVydC5pbmNyX2ludmFsaWRfY2hpbGRyZW4gZXhwZXJ0XG4gICAgICAgICB8IGtpbmQgLT5cbiAgICAgICAgICAgaWYgZGVidWdcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgfCBCaW5kX21haW4gXyB8IElmX3RoZW5fZWxzZSBfIHwgSm9pbl9tYWluIF8gLT4gKClcbiAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gYXJlIG5ldmVyIHB1c2hlZCBvbiB0aGUgc3RhY2sgKikpKTtcbiAgICAgICAgKCogV2UgZG8gbm90IGNoZWNrIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGhlcmUsIGJlY2F1c2UgaXQgc2hvdWxkIGJlXG4gICAgICAgICAgIHRydWUsIGFuZCBiZWNhdXNlIGNvbXB1dGluZyBpdCB0YWtlcyBPKG51bWJlciBvZiBjaGlsZHJlbiksIG5vZGUgY2FuIGJlIHB1c2hlZFxuICAgICAgICAgICBvbiB0aGUgc3RhY2sgb25jZSBwZXIgY2hpbGQsIGFuZCBleHBlcnQgbm9kZXMgY2FuIGhhdmUgbG90cyBvZiBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgZG9uZVxuOztcblxuKCogW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB0IH5jaGlsZCB+cGFyZW50XSBhZGRzIFtwYXJlbnRdIGFzIGEgcGFyZW50IG9mXG4gICBbY2hpbGRdLCBhbmQgbWFrZXMgW2NoaWxkXSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBuZWNlc3NhcnksIGVuc3VyaW5nIHRoZWlyIGhlaWdodHNcbiAgIGFyZSBhY2N1cmF0ZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBbY2hpbGRdIGFuZCBbcGFyZW50XVxuICAgdGhvdWdoLiAqKVxubGV0IHJlYyBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSBOb2RlLnQgLT4gcGFyZW50OmIgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkIGluXG4gIE5vZGUuYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGlmIG5vdCAoTm9kZS5pc192YWxpZCBjaGlsZCkgdGhlbiBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKFQgcGFyZW50KTtcbiAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIGUgfmNoaWxkX2luZGV4XG4gIHwgXyAtPiAoKVxuXG5hbmQgYmVjYW1lX25lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gICgqIFtTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luXSBpcyB0cnVlIChhc3N1bWluZyB0aGUgc2NvcGUgaXRzZWxmIGlzIHZhbGlkKVxuICAgICBiZWNhdXNlIFtOb2RlLml0ZXJfY2hpbGRyZW5dIGJlbG93IGZpcnN0IHZpc2l0cyB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kIG5vZGVzIGFuZFxuICAgICB0aGVuIHRoZSByaHMuICopXG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZSAmJiBub3QgKFNjb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW4pXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVHJ5aW5nIHRvIG1ha2UgYSBub2RlIG5lY2Vzc2FyeSB3aG9zZSBkZWZpbmluZyBiaW5kIGlzIG5vdCBuZWNlc3NhcnlcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgKCogU2luY2UgW25vZGVdIGJlY2FtZSBuZWNlc3NhcnksIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudCwgd2UgbmVlZCB0bzpcblxuICAgICAtIGFkZCBwYXJlbnQgcG9pbnRlcnMgdG8gW25vZGVdIGZyb20gaXRzIGNoaWxkcmVuLlxuICAgICAtIHNldCBbbm9kZV0ncyBoZWlnaHQuXG4gICAgIC0gYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAsIGlmIG5lY2Vzc2FyeS4gKilcbiAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gbm9kZSB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDtcbiAgICAoKiBOb3cgdGhhdCBjaGlsZCBpcyBuZWNlc3NhcnksIGl0IHNob3VsZCBoYXZlIGEgdmFsaWQgaGVpZ2h0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5oZWlnaHQgPj0gMCk7XG4gICAgaWYgY2hpbGQuaGVpZ2h0ID49IG5vZGUuaGVpZ2h0IHRoZW4gc2V0X2hlaWdodCBub2RlIChjaGlsZC5oZWlnaHQgKyAxKSk7XG4gICgqIE5vdyB0aGF0IHRoZSBoZWlnaHQgaXMgY29ycmVjdCwgbWF5YmUgYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAuICBbbm9kZV1cbiAgICAganVzdCBiZWNhbWUgbmVjZXNzYXJ5LCBzbyBpdCBjYW4ndCBoYXZlIGJlZW4gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgU2luY2UgW25vZGVdXG4gICAgIGlzIG5lY2Vzc2FyeSwgd2Ugc2hvdWxkIGFkZCBpdCB0byB0aGUgcmVjb21wdXRlIGhlYXAgaWZmIGl0IGlzIHN0YWxlLiAqKVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpO1xuICBpZiBOb2RlLmlzX3N0YWxlIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTp0cnVlXG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJlY2FtZV9uZWNlc3Nhcnkgbm9kZSA9XG4gIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZTtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgbm9kZS5zdGF0ZVxuOztcblxubGV0IGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gcGFyZW50LnN0YXRlIGluXG4gICgqIEluIHRoZSBjYXNlIHdoZW4gdGhlIGVkZ2UgYmVpbmcgYWRkZWQgY3JlYXRlcyBhIGN5Y2xlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlXG4gICAgIHJlY3Vyc2lvbiBpbiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXSB0byByZWFjaCBbcGFyZW50XSBhcyBhIGRlc2NlbmRhbnRcbiAgICAgb2YgW2NoaWxkXS4gIEluIHRoYXQgY2FzZSwgdGhlIHJlY3Vyc2lvbiB0ZXJtaW5hdGVzLCBiZWNhdXNlIFtOb2RlLmlzX25lY2Vzc2FyeVxuICAgICBwYXJlbnRdLiAgV2UgdGhlbiByZXR1cm4gaGVyZSBhbmQgc3Vic2VxdWVudGx5IGRldGVjdCB0aGUgY3ljbGUgaW5cbiAgICAgW2FkanVzdF9oZWlnaHRzXS4gKilcbiAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgKCogV2UgYWRqdXN0IGhlaWdodHMgc28gdGhhdCB3ZSBlbnN1cmUgdGhlcmUgYXJlIG5vIGN5Y2xlcyBiZWZvcmUgY2FsbGluZ1xuICAgICBbcHJvcGFnYXRlX2ludmFsaWRpdHldLiAqKVxuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuXG4gICAgQWRqdXN0X2hlaWdodHNfaGVhcC5hZGp1c3RfaGVpZ2h0c1xuICAgICAgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGRcbiAgICAgIH5wYXJlbnQ7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQ7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAoKiB3ZSBvbmx5IGFkZCBuZWNlc3NhcnkgcGFyZW50cyAqKVxuICBpZiAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpXG4gICYmIChTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHBhcmVudC5yZWNvbXB1dGVkX2F0XG4gICAgICB8fCBOb2RlLmVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG47O1xuXG5sZXQgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGxldCBzYXZlZCA9IHQuY3VycmVudF9zY29wZSBpblxuICB0LmN1cnJlbnRfc2NvcGUgPC0gc2NvcGU7XG4gIHRyeVxuICAgIGxldCB2ID0gZiAoKSBpblxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICB2XG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBpZiBub3QgKFNjb3BlLmlzX3ZhbGlkIHNjb3BlKVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBydW4gd2l0aGluIGFuIGludmFsaWQgc2NvcGVcIiB0IFslc2V4cF9vZjogdF07XG4gIHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmZcbjs7XG5cbmxldCBjaGFuZ2VfY2hpbGRcbiAgOiB0eXBlIGEgYi5cbiAgICBwYXJlbnQ6YSBOb2RlLnRcbiAgICAtPiBvbGRfY2hpbGQ6YiBOb2RlLnQgVW9wdC50XG4gICAgLT4gbmV3X2NoaWxkOmIgTm9kZS50XG4gICAgLT4gY2hpbGRfaW5kZXg6aW50XG4gICAgLT4gdW5pdFxuICA9XG4gIGZ1biB+cGFyZW50IH5vbGRfY2hpbGQgfm5ld19jaGlsZCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF9jaGlsZFxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleFxuICBlbHNlIChcbiAgICBsZXQgb2xkX2NoaWxkID0gVW9wdC51bnNhZmVfdmFsdWUgb2xkX2NoaWxkIGluXG4gICAgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9jaGlsZCBuZXdfY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSByZW1vdmUgW29sZF9jaGlsZF0gYmVmb3JlIGFkZGluZyBbbmV3X2NoaWxkXSwgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZSBzYW1lXG4gICAgICAgICBjaGlsZCBpbmRleC4gKilcbiAgICAgIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQ6b2xkX2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgKCogV2UgZm9yY2UgW29sZF9jaGlsZF0gdG8gdGVtcG9yYXJpbHkgYmUgbmVjZXNzYXJ5IHNvIHRoYXQgW2FkZF9wYXJlbnRdIGNhbid0XG4gICAgICAgICBtaXN0YWtlbmx5IHRoaW5rIGl0IGlzIHVubmVjZXNzYXJ5IGFuZCB0cmFuc2l0aW9uIGl0IHRvIG5lY2Vzc2FyeSAod2hpY2ggd291bGRcbiAgICAgICAgIGFkZCBkdXBsaWNhdGUgZWRnZXMgYW5kIGJyZWFrIHRoaW5ncyBob3JyaWJseSkuICopXG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIHRydWU7XG4gICAgICBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIGZhbHNlO1xuICAgICAgKCogV2UgW2NoZWNrX2lmX3VubmVjZXNzYXJ5XSBhZnRlciBbYWRkX3BhcmVudF0sIHNvIHRoYXQgd2UgZG9uJ3QgdW5uZWNlc3NhcmlseVxuICAgICAgICAgdHJhbnNpdGlvbiBub2RlcyBmcm9tIG5lY2Vzc2FyeSB0byB1bm5lY2Vzc2FyeSBhbmQgdGhlbiBiYWNrIGFnYWluLiAqKVxuICAgICAgY2hlY2tfaWZfdW5uZWNlc3Nhcnkgb2xkX2NoaWxkKSlcbjs7XG5cbmxldCBhZGRfYWxhcm0gY2xvY2sgfmF0IGFsYXJtX3ZhbHVlID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICBUaW1pbmdfd2hlZWwuYWRkIGNsb2NrLnRpbWluZ193aGVlbCB+YXQgYWxhcm1fdmFsdWVcbjs7XG5cbmxldCByZWMgcmVjb21wdXRlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIFNvbWUgKFQgbm9kZSk7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZCArIDE7XG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoQXJyYXlfZm9sZC5jb21wdXRlIGFycmF5X2ZvbGQpXG4gIHwgQXQgeyBhdDsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGFuIFtBdF0gbm9kZSBhZnRlciBbYXRdLiAgW2FkdmFuY2VfY2xvY2tdIHdhc1xuICAgICAgIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbQ29uc3RdIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBCZWZvcmVcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZVxuICAgICAgKHsgbWFpblxuICAgICAgIDsgZlxuICAgICAgIDsgbGhzXG4gICAgICAgOyByaHNfc2NvcGVcbiAgICAgICA7IHJocyA9IG9sZF9yaHNcbiAgICAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICA7IF9cbiAgICAgICB9IGFzIGJpbmQpIC0+XG4gICAgKCogV2UgY2xlYXIgW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gc28gaXQgd2lsbCBob2xkIGp1c3QgdGhlIG5vZGVzIGNyZWF0ZWQgYnlcbiAgICAgICB0aGlzIGNhbGwgdG8gW2ZdLiAqKVxuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQubm9uZTtcbiAgICBsZXQgcmhzID0gcnVuX3dpdGhfc2NvcGUgdCByaHNfc2NvcGUgfmY6KGZ1biAoKSAtPiBmIChOb2RlLnZhbHVlX2V4biBsaHMpKSBpblxuICAgIGJpbmQucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogQW50aWNpcGF0ZSB3aGF0IFttYXliZV9jaGFuZ2VfdmFsdWVdIHdpbGwgZG8sIHRvIG1ha2Ugc3VyZSBCaW5kX21haW4gaXMgc3RhbGVcbiAgICAgICByaWdodCBhd2F5LiBUaGlzIHdheSwgaWYgdGhlIG5ldyBjaGlsZCBpcyBpbnZhbGlkLCB3ZSdsbCBzYXRpc2Z5IHRoZSBpbnZhcmlhbnRcbiAgICAgICBzYXlpbmcgdGhhdCBbbmVlZHNfdG9fYmVfY29tcHV0ZWQgYmluZF9tYWluXSBpbiBbcHJvcGFnYXRlX2ludmFsaWRpdHldICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmJpbmRfcmhzX2NoaWxkX2luZGV4O1xuICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfcmhzXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBpbnZhbGlkYXRlIGFmdGVyIFtjaGFuZ2VfY2hpbGRdLCBiZWNhdXNlIGludmFsaWRhdGlvbiBjaGFuZ2VzIHRoZSBba2luZF0gb2ZcbiAgICAgICAgIG5vZGVzIHRvIFtJbnZhbGlkXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIHZpc2l0IHRoZWlyIGNoaWxkcmVuLlxuICAgICAgICAgQWxzbywgdGhlIFtvbGRfcmhzXSBub2RlcyBhcmUgdHlwaWNhbGx5IG1hZGUgdW5uZWNlc3NhcnkgYnkgW2NoYW5nZV9jaGlsZF0sIGFuZFxuICAgICAgICAgc28gYnkgaW52YWxpZGF0aW5nIGFmdGVyd2FyZHMsIHdlIHdpbGwgbm90IHdhc3RlIHRpbWUgYWRkaW5nIHRoZW0gdG8gdGhlXG4gICAgICAgICByZWNvbXB1dGUgaGVhcCBhbmQgdGhlbiByZW1vdmluZyB0aGVtLiAqKVxuICAgICAgaWYgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgZWxzZVxuICAgICAgICByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgdFxuICAgICAgICAgIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB+bmV3X3Njb3BlOm1haW4uY3JlYXRlZF9pbjtcbiAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQpO1xuICAgICgqIFtub2RlXSB3YXMgdmFsaWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBbQmluZF9saHNfY2hhbmdlXSBicmFuY2gsIGFuZCBpbnZhbGlkYXRpb25cbiAgICAgICBvbmx5IHZpc2l0cyBoaWdoZXIgbm9kZXMsIHNvIFtub2RlXSBpcyBzdGlsbCB2YWxpZC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IENvbnN0IGEgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuOyBfIH0gLT5cbiAgICBsZXQgdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgIGlmIG9ubHlfZnJlZXplX3doZW4gdmFsdWVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCB2YWx1ZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIHRoZW4gc2V0X2hlaWdodCBub2RlIDAgZWxzZSBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFsdWVcbiAgfCBJZl90ZXN0X2NoYW5nZSAoeyBtYWluOyBjdXJyZW50X2JyYW5jaDsgdGVzdDsgdGhlbl87IGVsc2VfOyBfIH0gYXMgaWZfdGhlbl9lbHNlKSAtPlxuICAgIGxldCBkZXNpcmVkX2JyYW5jaCA9IGlmIE5vZGUudmFsdWVfZXhuIHRlc3QgdGhlbiB0aGVuXyBlbHNlIGVsc2VfIGluXG4gICAgaWZfdGhlbl9lbHNlLmN1cnJlbnRfYnJhbmNoIDwtIFVvcHQuc29tZSBkZXNpcmVkX2JyYW5jaDtcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6Y3VycmVudF9icmFuY2hcbiAgICAgIH5uZXdfY2hpbGQ6ZGVzaXJlZF9icmFuY2hcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmlmX2JyYW5jaF9jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IElmX3RoZW5fZWxzZSB7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoKVxuICB8IEludmFsaWQgLT5cbiAgICAoKiBXZSBuZXZlciBoYXZlIGludmFsaWQgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwOyB0aGV5IGFyZSBuZXZlciBzdGFsZS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBKb2luX2xoc19jaGFuZ2UgKHsgbGhzOyBtYWluOyByaHMgPSBvbGRfcmhzOyBfIH0gYXMgam9pbikgLT5cbiAgICBsZXQgcmhzID0gTm9kZS52YWx1ZV9leG4gbGhzIGluXG4gICAgam9pbi5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmpvaW5fcmhzX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSm9pbl9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgTWFwIChmLCBuMSkgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSlcbiAgfCBTbmFwc2hvdCB7IGF0OyBiZWZvcmU7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhIFtTbmFwc2hvdF0gYW5kIHRoZSBhbGFybSBzaG91bGQgaGF2ZSBmaXJlZC5cbiAgICAgICBbYWR2YW5jZV9jbG9ja10gd2FzIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbRnJlZXplXSBhdCB0aGUgYXBwcm9wcmlhdGVcbiAgICAgICB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBiZWZvcmVcbiAgfCBTdGVwX2Z1bmN0aW9uICh7IGNoaWxkOyBjbG9jazsgXyB9IGFzIHN0ZXBfZnVuY3Rpb25fbm9kZSkgLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGlsZCA9IFVvcHQudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlXG4gICAgICAgICAgIGNoaWxkLmNoYW5nZWRfYXRcbiAgICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXRcbiAgICAgICAgID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDwtIGNoaWxkLmNoYW5nZWRfYXQ7XG4gICAgICAgIHJlbW92ZV9hbGFybSBjbG9jayBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm07XG4gICAgICAgIGxldCBzdGVwX2Z1bmN0aW9uID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIDwtIFVvcHQuc29tZSAoU3RlcF9mdW5jdGlvbi5pbml0IHN0ZXBfZnVuY3Rpb24pO1xuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgPC0gU3RlcF9mdW5jdGlvbi5zdGVwcyBzdGVwX2Z1bmN0aW9uO1xuICAgICAgICAoKiBJZiB0aGUgY2hpbGQgaXMgYSBjb25zdGFudCwgd2UgZHJvcCBvdXIgcmVmZXJlbmNlIHRvIGl0LCB0byBhdm9pZCBob2xkaW5nIG9uIHRvXG4gICAgICAgICAgIHRoZSBlbnRpcmUgc3RlcCBmdW5jdGlvbi4gKilcbiAgICAgICAgaWYgTm9kZS5pc19jb25zdCBjaGlsZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuY2hpbGQgPC0gVW9wdC5ub25lO1xuICAgICAgICAgIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpKSkpO1xuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5hZHZhbmNlIHN0ZXBfZnVuY3Rpb25fbm9kZSB+dG9fOihub3cgY2xvY2spO1xuICAgIGxldCBzdGVwX2Z1bmN0aW9uX3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIGluXG4gICAgKG1hdGNoIFNlcXVlbmNlLmhkIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyB3aXRoXG4gICAgIHwgTm9uZSAtPiBpZiBVb3B0LmlzX25vbmUgY2hpbGQgdGhlbiBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHN0ZXBfZnVuY3Rpb25fdmFsdWUpXG4gICAgIHwgU29tZSAoYXQsIF8pIC0+XG4gICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBzdGVwX2Z1bmN0aW9uX3ZhbHVlXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY29tcHV0ZSB1KVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVmFyIHZhciAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YXIudmFsdWVcbiAgfCBNYXAyIChmLCBuMSwgbjIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpKVxuICB8IE1hcDMgKGYsIG4xLCBuMiwgbjMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSlcbiAgfCBNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpIChOb2RlLnZhbHVlX2V4biBuNCkpXG4gIHwgTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSkpXG4gIHwgTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpKVxuICB8IE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNykpXG4gIHwgTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOCkpXG4gIHwgTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpKVxuICB8IE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMCkpXG4gIHwgTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKSlcbiAgfCBNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpKVxuICB8IE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMykpXG4gIHwgTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KSlcbiAgfCBNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTUpKVxuICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAobWF0Y2ggRXhwZXJ0LmJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIGV4cGVydCB3aXRoXG4gICAgIHwgYEludmFsaWQgLT5cbiAgICAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0XG4gICAgIHwgYE9rIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChleHBlcnQuZiAoKSkpXG5cbmFuZCBjb3B5X2NoaWxkIDogdHlwZSBhLiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGQ6YSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biB+cGFyZW50IH5jaGlsZCAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIGNoaWxkXG4gIHRoZW4gbWF5YmVfY2hhbmdlX3ZhbHVlIHBhcmVudCAoTm9kZS52YWx1ZV9leG4gY2hpbGQpXG4gIGVsc2UgKFxuICAgIGludmFsaWRhdGVfbm9kZSBwYXJlbnQ7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgcGFyZW50LnN0YXRlKVxuXG5hbmQgbWF5YmVfY2hhbmdlX3ZhbHVlIDogdHlwZSBhLiBhIE5vZGUudCAtPiBhIC0+IHVuaXQgPVxuICBmdW4gbm9kZSBuZXdfdmFsdWUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGxldCBvbGRfdmFsdWVfb3B0ID0gbm9kZS52YWx1ZV9vcHQgaW5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZV9vcHRcbiAgfHwgbm90XG4gICAgICAgKEN1dG9mZi5zaG91bGRfY3V0b2ZmXG4gICAgICAgICAgbm9kZS5jdXRvZmZcbiAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgIH5uZXdfdmFsdWUpXG4gIHRoZW4gKFxuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQuc29tZSBuZXdfdmFsdWU7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfY2hhbmdlZCA8LSB0Lm51bV9ub2Rlc19jaGFuZ2VkICsgMTtcbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gb2xkX3ZhbHVlX29wdDtcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGUpO1xuICAgIGlmIG5vZGUubnVtX3BhcmVudHMgPj0gMVxuICAgIHRoZW4gKFxuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBub2RlLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgaW5cbiAgICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBleHBlcnRcbiAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgICAgdVxuICAgICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpXG4gICAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAoKiBXZSBkb24ndCBkbyB0aGUgW2Nhbl9yZWNvbXB1dGVfbm93XSBvcHRpbWl6YXRpb24uICBTaW5jZSBtb3N0IG5vZGVzIG9ubHkgaGF2ZVxuICAgICAgICAgICBvbmUgcGFyZW50LCBpdCBpcyBub3QgcHJvYmFibHkgbm90IGEgYmlnIGxvc3MuICBJZiB3ZSBkaWQgaXQgYW55d2F5LCB3ZSdkXG4gICAgICAgICAgIGhhdmUgdG8gYmUgY2FyZWZ1bCwgYmVjYXVzZSB3aGlsZSB3ZSBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFyZW50cywgd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGVtLCBhbmQgaW4gcGFydGljdWxhciB3ZSBjYW4gZXhlY3V0ZSBsaHMtY2hhbmdlIG5vZGVzIHdobyBjYW5cbiAgICAgICAgICAgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgVGhpbmsgYWJvdXQ6XG5cbiAgICAgICAgICAge1tcbiAgICAgICAgICAgICBsaHMgPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBsaHMgPj58IEZuLmlkIGVsc2UgY29uc3QgYlxuICAgICAgICAgICBdfVxuXG4gICAgICAgICAgIElmIHRoZSBvcHRpbWl6YXRpb24ga2lja3MgaW4gd2hlbiB3ZSBwcm9wYWdhdGUgY2hhbmdlIHRvIHRoZSBwYXJlbnRzIG9mIFtsaHNdXG4gICAgICAgICAgICh3aGljaCBjaGFuZ2VzIGZyb20gW3RydWVdIHRvIFtmYWxzZV0pLCB3ZSBjb3VsZCBleGVjdXRlIHRoZSBbbGhzLWNoYW5nZV1cbiAgICAgICAgICAgZmlyc3QsIHdoaWNoIHdvdWxkIG1ha2UgZGlzY29ubmVjdCB0aGUgW21hcF0gbm9kZSBmcm9tIFtsaHNdLiAgQW5kIHRoZW4gd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBbbGhzXSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnltb3JlIGFuZFxuICAgICAgICAgICBpbmNyZW1lbnRhbCB3b3VsZCBzZWdmYXVsdCAodGhlcmUgbWF5IGJlIGEgbGVzcyBuYWl2ZSB3YXkgb2YgbWFraW5nIHRoaXMgd29ya1xuICAgICAgICAgICB0aG91Z2gpLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuICAgICAgZG9uZTtcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gbm9kZS5wYXJlbnQwIGluXG4gICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgIHwgRXhwZXJ0IHAgLT5cbiAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKSBpblxuICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBwXG4gICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgIHVcbiAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKVxuICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgfCBfIC0+ICgpKTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjYW5fcmVjb21wdXRlX25vdyA9XG4gICAgICAgICAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmVuJ3QgcGFyZW50cy4gKilcbiAgICAgICAgICB8IEF0IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBBdF9pbnRlcnZhbHMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IENvbnN0IF8gfCBJbnZhbGlkIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZC4gKilcbiAgICAgICAgICB8IEFycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgTWFwMiBfXG4gICAgICAgICAgfCBNYXAzIF9cbiAgICAgICAgICB8IE1hcDQgX1xuICAgICAgICAgIHwgTWFwNSBfXG4gICAgICAgICAgfCBNYXA2IF9cbiAgICAgICAgICB8IE1hcDcgX1xuICAgICAgICAgIHwgTWFwOCBfXG4gICAgICAgICAgfCBNYXA5IF9cbiAgICAgICAgICB8IE1hcDEwIF9cbiAgICAgICAgICB8IE1hcDExIF9cbiAgICAgICAgICB8IE1hcDEyIF9cbiAgICAgICAgICB8IE1hcDEzIF9cbiAgICAgICAgICB8IE1hcDE0IF9cbiAgICAgICAgICB8IE1hcDE1IF9cbiAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF9cbiAgICAgICAgICB8IEV4cGVydCBfIC0+IGZhbHNlXG4gICAgICAgICAgKCogV2UgY2FuIGltbWVkaWF0ZWx5IHJlY29tcHV0ZSBbcGFyZW50XSBpZiBubyBvdGhlciBub2RlIG5lZWRzIHRvIGJlIHN0YWJsZVxuICAgICAgICAgICAgIGJlZm9yZSBjb21wdXRpbmcgaXQuICBJZiBbcGFyZW50XSBoYXMgYSBzaW5nbGUgY2hpbGQgKGkuZS4gW25vZGVdKSwgdGhlblxuICAgICAgICAgICAgIHRoaXMgYW1vdW50cyB0byBjaGVja2luZyB0aGF0IFtwYXJlbnRdIHdvbid0IGJlIGludmFsaWRhdGVkLCBpLmUuIHRoYXRcbiAgICAgICAgICAgICBbcGFyZW50XSdzIHNjb3BlIGhhcyBhbHJlYWR5IHN0YWJpbGl6ZWQuICopXG4gICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgRnJlZXplIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBNYXAgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgKCogRm9yIHRoZXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIFwiX2NoYW5nZVwiIGNoaWxkIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgICAgICAgICBldmFsdWF0ZWQgKGlmIG5lZWRlZCkuICBJZiBzbywgdGhpcyBhbHNvIGltcGxpZXM6XG5cbiAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAgICBdfSAqKVxuICAgICAgICAgIHwgQmluZF9tYWluIGIgLT4gbm9kZS5oZWlnaHQgPiBiLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBJZl90aGVuX2Vsc2UgaSAtPiBub2RlLmhlaWdodCA+IGkudGVzdF9jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBKb2luX21haW4gaiAtPiBub2RlLmhlaWdodCA+IGoubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgaW5cbiAgICAgICAgaWYgY2FuX3JlY29tcHV0ZV9ub3dcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgaWYgcGFyZW50LmhlaWdodCA8PSBSZWNvbXB1dGVfaGVhcC5taW5faGVpZ2h0IHQucmVjb21wdXRlX2hlYXBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgW3BhcmVudC5oZWlnaHRdIGlzIFs8PV0gdGhlIGhlaWdodCBvZiBhbGwgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwXG4gICAgICAgICAgICAgKHBvc3NpYmx5IGJlY2F1c2UgdGhlIHJlY29tcHV0ZSBoZWFwIGlzIGVtcHR5KSwgdGhlbiB3ZSBjYW4gcmVjb21wdXRlXG4gICAgICAgICAgICAgW3BhcmVudF0gaW1tZWRpYXRlbHkgYW5kIHNhdmUgYWRkaW5nIGl0IHRvIGFuZCB0aGVuIHJlbW92aW5nIGl0IGZyb20gdGhlXG4gICAgICAgICAgICAgcmVjb21wdXRlIGhlYXAuICopXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpO1xuICAgICAgICAgIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudCkpKSk7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgciA9XG4gIGxldCAoVCBub2RlKSA9IFJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gciBpblxuICBpZiBkZWJ1ZyAmJiBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJub2RlIHVuZXhwZWN0ZWRseSBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbXB1dGVkXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICByZWNvbXB1dGUgbm9kZVxuOztcblxubGV0IHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5kaXNhbGxvd2VkX29ic2VydmVycyBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgfCBEaXNhbGxvd2VkIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBsZXQgKFQgYWxsX29ic2VydmVycykgPSBVb3B0LnZhbHVlX2V4biB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICBpZiBJbnRlcm5hbF9vYnNlcnZlci5zYW1lIGludGVybmFsX29ic2VydmVyIGFsbF9vYnNlcnZlcnNcbiAgICB0aGVuIHQuYWxsX29ic2VydmVycyA8LSBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbDtcbiAgICBJbnRlcm5hbF9vYnNlcnZlci51bmxpbmsgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyID1cbiAgbGV0IHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlIGludGVybmFsX29ic2VydmVyIGluXG4gIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gKClcbiAgfCBDcmVhdGVkIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbiAgfCBJbl91c2UgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIERpc2FsbG93ZWQ7XG4gICAgU3RhY2sucHVzaCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKVxuOztcblxubGV0IGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmZpbmFsaXplZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQuZmluYWxpemVkX29ic2VydmVycyBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgdGhlbiBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl9maW5hbGl6ZXIgdCA9XG4gIHN0YWdlIChmdW4gb2JzZXJ2ZXIgLT5cbiAgICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAhb2JzZXJ2ZXIgaW5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZmluYWxpemVkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcikpXG47O1xuXG5sZXQgY3JlYXRlX29ic2VydmVyID8oc2hvdWxkX2ZpbmFsaXplID0gdHJ1ZSkgKG9ic2VydmluZyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gb2JzZXJ2aW5nLnN0YXRlIGluXG4gIGxldCBpbnRlcm5hbF9vYnNlcnZlciA6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gICAgeyBzdGF0ZSA9IENyZWF0ZWRcbiAgICA7IG9ic2VydmluZ1xuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IHByZXZfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgcHJldl9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICBTdGFjay5wdXNoIHQubmV3X29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcik7XG4gIGxldCBvYnNlcnZlciA9IHJlZiBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBpZiBzaG91bGRfZmluYWxpemVcbiAgdGhlbiBHYy5FeHBlcnQuYWRkX2ZpbmFsaXplcl9leG4gb2JzZXJ2ZXIgKHVuc3RhZ2UgKG9ic2VydmVyX2ZpbmFsaXplciB0KSk7XG4gIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyArIDE7XG4gIG9ic2VydmVyXG47O1xuXG5sZXQgYWRkX25ld19vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0Lm5ld19vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5uZXdfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IG1vZHVsZSBQYWNrZWQgPSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFVubGlua2VkIC0+ICgpXG4gICAgfCBDcmVhdGVkIC0+XG4gICAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBJbl91c2U7XG4gICAgICBsZXQgb2xkX2FsbF9vYnNlcnZlcnMgPSB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfYWxsX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsIDwtIG9sZF9hbGxfb2JzZXJ2ZXJzO1xuICAgICAgICBQYWNrZWQuc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfYWxsX29ic2VydmVycykgKFVvcHQuc29tZSBwYWNrZWQpKTtcbiAgICAgIHQuYWxsX29ic2VydmVycyA8LSBVb3B0LnNvbWUgcGFja2VkO1xuICAgICAgbGV0IG9ic2VydmluZyA9IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyBpblxuICAgICAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcgaW5cbiAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgKyBMaXN0Lmxlbmd0aCBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgICBsZXQgb2xkX29ic2VydmVycyA9IG9ic2VydmluZy5vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmcgPC0gb2xkX29ic2VydmVycztcbiAgICAgICAgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9vYnNlcnZlcnMpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICAgICgqIEJ5IGFkZGluZyBbaW50ZXJuYWxfb2JzZXJ2ZXJdIHRvIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSwgd2UgbWF5IGhhdmUgYWRkZWRcbiAgICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyB0byBbb2JzZXJ2aW5nXS4gIFdlIG5lZWQgdG8gaGFuZGxlIFtvYnNlcnZpbmddIGFmdGVyIHRoaXNcbiAgICAgICAgIHN0YWJpbGl6YXRpb24gdG8gZ2l2ZSB0aG9zZSBoYW5kbGVycyBhIGNoYW5jZSB0byBydW4uICopXG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBvYnNlcnZpbmc7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nKTtcbiAgICAgIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBvYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlciA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT4gT2JzZXJ2ZXIudmFsdWVfZXhuIG9ic2VydmVyXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBhZnRlciBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBkdXJpbmcgc3RhYmlsaXphdGlvblwiXG4gICAgICBvYnNlcnZlclxuICAgICAgWyVzZXhwX29mOiBfIE9ic2VydmVyLnRdXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWUgb2JzZXJ2ZXIgPVxuICB0cnkgT2sgKG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlcikgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbjs7XG5cbmxldCBub2RlX29uX3VwZGF0ZSAodHlwZSBhKSAobm9kZSA6IGEgTm9kZS50KSB+ZiA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBOb2RlLm9uX3VwZGF0ZSBub2RlIChPbl91cGRhdGVfaGFuZGxlci5jcmVhdGUgZiB+YXQ6dC5zdGFiaWxpemF0aW9uX251bSk7XG4gIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGVcbjs7XG5cbmxldCBvYnNlcnZlcl9vbl91cGRhdGVfZXhuIG9ic2VydmVyIH5mID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gKE9ic2VydmVyLm9ic2VydmluZyBvYnNlcnZlcilcbjs7XG5cbmxldCBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICB0Lm51bV92YXJfc2V0cyA8LSB0Lm51bV92YXJfc2V0cyArIDE7XG4gIHZhci52YWx1ZSA8LSB2YWx1ZTtcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB2YXIuc2V0X2F0IHQuc3RhYmlsaXphdGlvbl9udW0gPCAwXG4gIHRoZW4gKFxuICAgIHZhci5zZXRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBsZXQgd2F0Y2ggPSB2YXIud2F0Y2ggaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSB3YXRjaCk7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgd2F0Y2ggJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHdhdGNoKVxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgd2F0Y2gpXG47O1xuXG5sZXQgc2V0X3ZhciB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3Qgc2V0IHZhciAtLSBzdGFiaWxpemF0aW9uIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFslc2V4cF9vZjogUmFpc2VkX2V4bi50XVxuICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgaWYgVW9wdC5pc19ub25lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgICB0aGVuIFN0YWNrLnB1c2ggdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gKFQgdmFyKTtcbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQuc29tZSB2YWx1ZVxuOztcblxubGV0IHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQud2Vha19oYXNodGJscyA+IDAgZG9cbiAgICBsZXQgKFQgd2Vha19oYXNodGJsKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQud2Vha19oYXNodGJscyBpblxuICAgIFdlYWtfaGFzaHRibC5yZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgd2Vha19oYXNodGJsXG4gIGRvbmVcbjs7XG5cbmxldCBzdGFiaWxpemVfc3RhcnQgdCA9XG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6aW5nO1xuICBkaXNhbGxvd19maW5hbGl6ZWRfb2JzZXJ2ZXJzIHQ7XG4gICgqIEp1c3QgbGlrZSBmb3IgYmluZHMsIHdlIGFkZCBuZXcgb2JzZXJ2ZXJzIGJlZm9yZSByZW1vdmluZyBkaXNhbGxvd2VkIG9ic2VydmVycyB0b1xuICAgICBwb3RlbnRpYWxseSBhdm9pZCBzd2l0Y2hpbmcgdGhlIG9ic2VydmFiaWxpdHkgb2Ygc29tZSBub2RlcyBiYWNrIGFuZCBmb3J0aC4gKilcbiAgYWRkX25ld19vYnNlcnZlcnMgdDtcbiAgdW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIHQ7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldCBzdGFiaWxpemVfZW5kIHQgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICB0Lm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSA8LSBOb25lO1xuICAgIHQub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPC0gW10pO1xuICAoKiBXZSBpbmNyZW1lbnQgW3Quc3RhYmlsaXphdGlvbl9udW1dIGJlZm9yZSBoYW5kbGluZyB2YXJpYWJsZXMgc2V0IGR1cmluZ1xuICAgICBzdGFiaWxpemF0aW9uLCBzbyB0aGF0IHRoZXkgYXJlIHRyZWF0ZWQgYXMgc2V0IGR1cmluZyB0aGUgbmV3IHN0YWJpbGl6YXRpb24gY3ljbGUuXG4gICAgIEFsc28sIHdlIGluY3JlbWVudCBiZWZvcmUgcnVubmluZyBvbi11cGRhdGUgaGFuZGxlcnMsIHRvIGF2b2lkIHJ1bm5pbmcgb24gdXBkYXRlXG4gICAgIGhhbmRsZXJzIGNyZWF0ZWQgZHVyaW5nIG9uIHVwZGF0ZSBoYW5kbGVycy4gKilcbiAgdC5zdGFiaWxpemF0aW9uX251bSA8LSBTdGFiaWxpemF0aW9uX251bS5hZGQxIHQuc3RhYmlsaXphdGlvbl9udW07XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pIGRvXG4gICAgbGV0IChUIHZhcikgPSBTdGFjay5wb3BfZXhuIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgbGV0IHZhbHVlID0gVW9wdC52YWx1ZV9leG4gdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5ub25lO1xuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICBkb25lO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24pIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSBmYWxzZTtcbiAgICBsZXQgb2xkX3ZhbHVlID0gbm9kZS5vbGRfdmFsdWVfb3B0IGluXG4gICAgbm9kZS5vbGRfdmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBsZXQgbm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQgPVxuICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIG5vZGUpXG4gICAgICB0aGVuIEludmFsaWRhdGVkXG4gICAgICBlbHNlIGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSlcbiAgICAgIHRoZW4gVW5uZWNlc3NhcnlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV3X3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gbm9kZS52YWx1ZV9vcHQgaW5cbiAgICAgICAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZVxuICAgICAgICB0aGVuIE5lY2Vzc2FyeSBuZXdfdmFsdWVcbiAgICAgICAgZWxzZSBDaGFuZ2VkIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWUsIG5ld192YWx1ZSkpXG4gICAgaW5cbiAgICBTdGFjay5wdXNoIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyAoVCAobm9kZSwgbm9kZV91cGRhdGUpKVxuICBkb25lO1xuICB0LnN0YXR1cyA8LSBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycztcbiAgbGV0IG5vdyA9IHQuc3RhYmlsaXphdGlvbl9udW0gaW5cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMpIGRvXG4gICAgbGV0IChUIChub2RlLCBub2RlX3VwZGF0ZSkpID0gU3RhY2sucG9wX2V4biB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICBOb2RlLnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgbm9kZSBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIE5vdF9zdGFiaWxpemluZztcbiAgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHRcbjs7XG5cbmxldCByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4biA9XG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCAoUmFpc2VkX2V4bi5jcmVhdGUgZXhuKTtcbiAgcmFpc2UgZXhuXG47O1xuXG5sZXQgc3RhYmlsaXplIHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGFiaWxpemVcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gIHRyeVxuICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgIHdoaWxlIFJlY29tcHV0ZV9oZWFwLmxlbmd0aCByID4gMCBkb1xuICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgclxuICAgIGRvbmU7XG4gICAgc3RhYmlsaXplX2VuZCB0XG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG5cbjs7XG5cbm1vZHVsZSBTdGVwX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgS2VlcF9nb2luZ1xuICAgIHwgRG9uZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgdCA6IFN0ZXBfcmVzdWx0LnQgPVxuICB0cnlcbiAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgICAgS2VlcF9nb2luZ1xuICAgIHwgU3RhYmlsaXppbmcgLT5cbiAgICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgaWYgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgcjtcbiAgICAgICAgS2VlcF9nb2luZylcbiAgICAgIGVsc2UgKFxuICAgICAgICBzdGFiaWxpemVfZW5kIHQ7XG4gICAgICAgIERvbmUpXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGVwXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOmZhbHNlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICAgKCogSWYgc3RhYmlsaXphdGlvbiBoYXMgYWxyZWFkeSByYWlzZWQsIHRoZW4gW2V4bl0gaXMgbWVyZWx5IGEgbm90aWZpY2F0aW9uIG9mIHRoaXNcbiAgICAgICAgICBmYWN0LCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGl0c2VsZi4gIFdlIHNob3VsZCBqdXN0IHByb3BhZ2F0ZSBbZXhuXVxuICAgICAgICAgIGZvcndhcmQ7IGNhbGxpbmcgW3JhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uXSB3b3VsZCBzdG9yZSBbZXhuXSBhcyB0aGUgZXhjZXB0aW9uXG4gICAgICAgICAgdGhhdCBpbml0aWFsbHkgcmFpc2VkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgIHJhaXNlIGV4blxuICAgICB8IF8gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4pXG47O1xuXG5sZXQgY3JlYXRlX25vZGVfaW4gdCBjcmVhdGVkX2luIGtpbmQgPVxuICB0Lm51bV9ub2Rlc19jcmVhdGVkIDwtIHQubnVtX25vZGVzX2NyZWF0ZWQgKyAxO1xuICBOb2RlLmNyZWF0ZSB0IGNyZWF0ZWRfaW4ga2luZFxuOztcblxubGV0IGNyZWF0ZV9ub2RlIHQga2luZCA9IGNyZWF0ZV9ub2RlX2luIHQgdC5jdXJyZW50X3Njb3BlIGtpbmRcbmxldCBjcmVhdGVfbm9kZV90b3AgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCBTY29wZS50b3Aga2luZFxuXG5sZXQgY3JlYXRlX3ZhciB0ID8odXNlX2N1cnJlbnRfc2NvcGUgPSBmYWxzZSkgdmFsdWUgPVxuICBsZXQgc2NvcGUgPSBpZiB1c2VfY3VycmVudF9zY29wZSB0aGVuIHQuY3VycmVudF9zY29wZSBlbHNlIFNjb3BlLnRvcCBpblxuICBsZXQgd2F0Y2ggPSBjcmVhdGVfbm9kZV9pbiB0IHNjb3BlIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHZhciA9XG4gICAgeyBWYXIudmFsdWVcbiAgICA7IHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFVvcHQubm9uZVxuICAgIDsgc2V0X2F0ID0gdC5zdGFiaWxpemF0aW9uX251bVxuICAgIDsgd2F0Y2hcbiAgICB9XG4gIGluXG4gIE5vZGUuc2V0X2tpbmQgd2F0Y2ggKFZhciB2YXIpO1xuICB2YXJcbjs7XG5cbigqIEEgW2NvbnN0XSB2YWx1ZSBjb3VsZCBjb21lIGZyb20gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhbiBvdXRlciBiaW5kLiAgU28sIHdlIGNyZWF0ZSBhXG4gICBbY29uc3RdIG5vZGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUsIG5vdCBpbiBbU2NvcGUudG9wXS4gKilcbmxldCBjb25zdCB0IGEgPSBjcmVhdGVfbm9kZSB0IChDb25zdCBhKVxubGV0IG1hcCAobiA6IF8gTm9kZS50KSB+ZiA9IGNyZWF0ZV9ub2RlIG4uc3RhdGUgKE1hcCAoZiwgbikpXG5sZXQgbWFwMiAobjEgOiBfIE5vZGUudCkgbjIgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMiAoZiwgbjEsIG4yKSlcblxubGV0IGJvdGggKG4xIDogXyBOb2RlLnQpIChuMiA6IF8gTm9kZS50KSA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgeyBraW5kID0gQ29uc3QgYTsgXyB9LCB7IGtpbmQgPSBDb25zdCBiOyBfIH0gLT4gY29uc3QgbjEuc3RhdGUgKGEsIGIpXG4gIHwgXyAtPiBtYXAyIG4xIG4yIH5mOlR1cGxlMi5jcmVhdGVcbjs7XG5cbmxldCBtYXAzIChuMSA6IF8gTm9kZS50KSBuMiBuMyB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAzIChmLCBuMSwgbjIsIG4zKSlcbmxldCBtYXA0IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkpXG5cbmxldCBtYXA1IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpKVxuOztcblxubGV0IG1hcDYgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpKVxuOztcblxubGV0IG1hcDcgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSlcbjs7XG5cbmxldCBtYXA4IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpKVxuOztcblxubGV0IG1hcDkgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpKVxuOztcblxubGV0IG1hcDEwIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkpXG47O1xuXG5sZXQgbWFwMTEgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSlcbjs7XG5cbmxldCBtYXAxMiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpKVxuOztcblxubGV0IG1hcDEzIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykpXG47O1xuXG5sZXQgbWFwMTQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkpXG47O1xuXG5sZXQgbWFwMTUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgbjE1IH5mID1cbiAgY3JlYXRlX25vZGVcbiAgICBuMS5zdGF0ZVxuICAgIChNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkpXG47O1xuXG5sZXQgcHJlc2VydmVfY3V0b2ZmIH4oaW5wdXQgOiBfIE5vZGUudCkgfm91dHB1dCA9XG4gIE5vZGUuc2V0X2N1dG9mZlxuICAgIG91dHB1dFxuICAgIChDdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZTpfIH5uZXdfdmFsdWU6XyAtPlxuICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmVxdWFsIGlucHV0LmNoYW5nZWRfYXQgb3V0cHV0LmNoYW5nZWRfYXQpKVxuOztcblxubGV0IGRlcGVuZF9vbiBpbnB1dCB+ZGVwZW5kX29uID1cbiAgbGV0IG91dHB1dCA9IG1hcDIgaW5wdXQgZGVwZW5kX29uIH5mOihmdW4gYSBfIC0+IGEpIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbmVjZXNzYXJ5X2lmX2FsaXZlIGlucHV0ID1cbiAgKCogSWYgW291dHB1dF0gaXMgYWxpdmUsIHRoZW4gW29ic2VydmVyXSBpcyBhbGl2ZSwgdGhlbiBbaW5wdXRdIGlzIG5lY2Vzc2FyeS4gIElmXG4gICAgIFtvdXRwdXRdIGlzIHVubmVjZXNzYXJ5LCB0aGVuIFtvdXRwdXRdIGlzIG5vdCBhIHBhcmVudCBvZiBbaW5wdXRdLCBhbmQgdGh1c1xuICAgICBbb3V0cHV0XSdzIGxpdmVuZXNzIGlzIGRlcGVuZGVudCBzb2xlbHkgb24gdXNlciBjb2RlLiAgQW5kIGluIHBhcnRpY3VsYXIsIGlmIFtvdXRwdXRdXG4gICAgIGRpZXMsIHRoZW4gW29ic2VydmVyXSB3aWxsIGJlIGZpbmFsaXplZCwgYW5kIHRoZW4gdXBvbiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLFxuICAgICBbaW5wdXRdIHdpbGwgYmVjb21lIHVubmVjZXNzYXJ5IChhdCBsZWFzdCB3aXRoIHJlc3BlY3QgdG8gW291dHB1dF0pLiAqKVxuICBsZXQgb2JzZXJ2ZXIgPSBjcmVhdGVfb2JzZXJ2ZXIgaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgbWFwIGlucHV0IH5mOihmdW4gYSAtPlxuICAgICAgR2Mua2VlcF9hbGl2ZSBvYnNlcnZlcjtcbiAgICAgIGEpXG4gIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgYmluZCAobGhzIDogXyBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBsaHMuc3RhdGUgaW5cbiAgbGV0IGxoc19jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGJpbmQgPVxuICAgIHsgQmluZC5tYWluXG4gICAgOyBmXG4gICAgOyBsaHNcbiAgICA7IGxoc19jaGFuZ2VcbiAgICA7IHJocyA9IFVvcHQubm9uZVxuICAgIDsgcmhzX3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gICgqIFdlIHNldCBbbGhzX2NoYW5nZV0gdG8gbmV2ZXIgY3V0b2ZmIHNvIHRoYXQgd2hlbmV2ZXIgW2xoc10gY2hhbmdlcywgW21haW5dIGlzXG4gICAgIHJlY29tcHV0ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgY2FzZXMgd2hlcmUgW2ZdIHJldHVybnMgYW4gZXhpc3Rpbmcgc3RhYmxlXG4gICAgIG5vZGUsIGluIHdoaWNoIGNhc2UgdGhlIFtsaHNfY2hhbmdlXSB3b3VsZCBiZSB0aGUgb25seSB0aGluZyBjYXVzaW5nIFttYWluXSB0byBiZVxuICAgICBzdGFsZS4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBiaW5kLnJoc19zY29wZSA8LSBCaW5kIGJpbmQ7XG4gIE5vZGUuc2V0X2tpbmQgbGhzX2NoYW5nZSAoQmluZF9saHNfY2hhbmdlIGJpbmQpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKEJpbmRfbWFpbiBiaW5kKTtcbiAgbWFpblxuOztcblxubGV0IGJpbmQyIG4xIG4yIH5mID1cbiAgYmluZCAobWFwMiBuMSBuMiB+ZjooZnVuIHYxIHYyIC0+IHYxLCB2MikpIH5mOihmdW4gKHYxLCB2MikgLT4gZiB2MSB2Milcbjs7XG5cbmxldCBiaW5kMyBuMSBuMiBuMyB+ZiA9XG4gIGJpbmQgKG1hcDMgbjEgbjIgbjMgfmY6KGZ1biB2MSB2MiB2MyAtPiB2MSwgdjIsIHYzKSkgfmY6KGZ1biAodjEsIHYyLCB2MykgLT4gZiB2MSB2MiB2Mylcbjs7XG5cbmxldCBiaW5kNCBuMSBuMiBuMyBuNCB+ZiA9XG4gIGJpbmRcbiAgICAobWFwNCBuMSBuMiBuMyBuNCB+ZjooZnVuIHYxIHYyIHYzIHY0IC0+IHYxLCB2MiwgdjMsIHY0KSlcbiAgICB+ZjooZnVuICh2MSwgdjIsIHYzLCB2NCkgLT4gZiB2MSB2MiB2MyB2NClcbjs7XG5cbmxldCBqb2luIChsaHMgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgam9pbiA9IHsgSm9pbi5saHM7IGxoc19jaGFuZ2U7IHJocyA9IFVvcHQubm9uZTsgbWFpbiB9IGluXG4gIE5vZGUuc2V0X2N1dG9mZiBsaHNfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChKb2luX2xoc19jaGFuZ2Ugam9pbik7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoSm9pbl9tYWluIGpvaW4pO1xuICBtYWluXG47O1xuXG5sZXQgaWZfICh0ZXN0IDogXyBOb2RlLnQpIH50aGVuXyB+ZWxzZV8gPVxuICBsZXQgdCA9IHRlc3Quc3RhdGUgaW5cbiAgbGV0IHRlc3RfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBpZl90aGVuX2Vsc2UgPVxuICAgIHsgSWZfdGhlbl9lbHNlLnRlc3Q7IHRoZW5fOyBlbHNlXzsgdGVzdF9jaGFuZ2U7IG1haW47IGN1cnJlbnRfYnJhbmNoID0gVW9wdC5ub25lIH1cbiAgaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIHRlc3RfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCB0ZXN0X2NoYW5nZSAoSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlKTtcbiAgbWFpblxuOztcblxubGV0IGxhenlfZnJvbV9mdW4gdCB+ZiA9XG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYpXG47O1xuXG5sZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IDRcblxubGV0IG1lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgKCogSGVyZSdzIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB3ZSBnZXQgW3QuY3VycmVudF9zY29wZV0gaGVyZSwgYW5kIHRoZW4gY2FsbFxuICAgICBbd2l0aGluX3Njb3BlXSBiZWxvdy4gIENvbnNpZGVyIHRoaXMgKGltcG9zc2libGUpIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICBbbWVtb2l6ZV9mdW5fYnlfa2V5XTpcblxuICAgICB7W1xuICAgICAgIGxldCB0YWJsZSA9XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0X2V4biBoYXNoYWJsZVxuICAgICAgICAgICAoTGlzdC5tYXAgYWxsX3Bvc3NpYmxlX2FfdmFsdWVzIH5mOihmdW4gYSAtPiAocHJvamVjdF9rZXkgYSwgZiBhKSlcbiAgICAgICBpblxuICAgICAgIHN0YWdlIChmdW4ga2V5IC0+IEhhc2h0YmwuZmluZF9leG4gdGFibGUgKHByb2plY3Rfa2V5IGEpKVxuICAgICBdfVxuXG4gICAgIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCB1c2UgW2N1cnJlbnRfc2NvcGVdIG9yIFt3aXRoaW5fc2NvcGVdLiAgQWxsIGNhbGxzIHRvIFtmXVxuICAgICBuYXR1cmFsbHkgb2NjdXIgaW4gW3QuY3VycmVudF9zY29wZV0uXG5cbiAgICAgU3VjaCBhbiBpbXBsZW1lbnRhdGlvbiBpcyBpbXBvc3NpYmxlIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgW2FsbF9wb3NzaWJsZV9hX3ZhbHVlc10uXG4gICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyB1c2VzIFt3aXRoaW5fc2NvcGVdIHRvIGNhbGwgW2YgYV0gaW4gdGhlIHNjb3BlIHRoYXQgd2FzXG4gICAgIGN1cnJlbnQgYXQgdGhlIHBvaW50IG9mIHRoZSBjYWxsIHRvIFttZW1vaXplX2Z1bl9ieV9rZXldIHNvIHRoYXQgd2UgY2FuIHRoaW5rIG9mIHRoZVxuICAgICBbdGFibGVdIGFzIGhhdmluZyBiZWVuIGNyZWF0ZWQgdGhlbiwgd2hlbiBpdCBpbiByZWFsaXR5IGlzIGNyZWF0ZWQgb24tZGVtYW5kLiAqKVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gSGFzaHRibC5jcmVhdGUgaGFzaGFibGUgfnNpemU6aW5pdGlhbF9zaXplIGluXG4gIHN0YWdlIChmdW4gYSAtPlxuICAgIGxldCBrZXkgPSBwcm9qZWN0X2tleSBhIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIEhhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubGV0IGFycmF5X2ZvbGQgdCBjaGlsZHJlbiB+aW5pdCB+ZiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBjcmVhdGVfbm9kZSB0IChBcnJheV9mb2xkIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSlcbjs7XG5cbmxldCBhbGwgdCB0cyA9IGFycmF5X2ZvbGQgdCAoQXJyYXkub2ZfbGlzdF9yZXYgdHMpIH5pbml0OltdIH5mOihmdW4gYWMgYSAtPiBhIDo6IGFjKVxuXG5tb2R1bGUgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlID0gVW5vcmRlcmVkX2FycmF5X2ZvbGQuVXBkYXRlXG5cbmxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgdFxuICAgICAgPyhmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID0gSW50Lm1heF92YWx1ZSlcbiAgICAgIGNoaWxkcmVuXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH51cGRhdGVcbiAgPVxuICBpZiBBcnJheS5sZW5ndGggY2hpbGRyZW4gPSAwXG4gIHRoZW4gY29uc3QgdCBpbml0XG4gIGVsc2UgaWYgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA8PSAwXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwidW5vcmRlcmVkX2FycmF5X2ZvbGQgZ290IG5vbi1wb3NpdGl2ZSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXCJcbiAgICAgIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgIFslc2V4cF9vZjogaW50XVxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIE5vZGUuc2V0X2tpbmRcbiAgICAgIG1haW5cbiAgICAgIChVbm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNyZWF0ZVxuICAgICAgICAgICAgfmluaXRcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgfmNoaWxkcmVuXG4gICAgICAgICAgICB+bWFpbikpO1xuICAgIG1haW4pXG47O1xuXG5sZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gIGxldCBmIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgKyAxXG4gICAgfCBTb21lIHggLT4gZiBhY2N1bSB4LCBudW1faW52YWxpZFxuICBpblxuICBsZXQgZl9pbnZlcnNlIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgLSAxXG4gICAgfCBTb21lIHggLT4gZl9pbnZlcnNlIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIG1hcFxuICAgICh1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgIHRcbiAgICAgICB0c1xuICAgICAgIH5pbml0Oihpbml0LCAwKVxuICAgICAgIH5mXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIGZfaW52ZXJzZSlcbiAgICAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcylcbiAgICB+ZjooZnVuIChhY2N1bSwgbnVtX2ludmFsaWQpIC0+IGlmIG51bV9pbnZhbGlkID0gMCB0aGVuIFNvbWUgYWNjdW0gZWxzZSBOb25lKVxuOztcblxubGV0IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+ayA9XG4gIGxldCBib29sX3RvX2ludCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwIGluXG4gIG1hcFxuICAgIH5mOihmdW4gaSAtPiBpID49IGspXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIG5vZGVzXG4gICAgICAgfmluaXQ6MFxuICAgICAgIH5mOihmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSArIGJvb2xfdG9faW50IGIpXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIChmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSAtIGJvb2xfdG9faW50IGIpKSlcbjs7XG5cbmxldCBleGlzdHMgdCBub2RlcyA9IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+azoxXG5sZXQgZm9yX2FsbCB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOihBcnJheS5sZW5ndGggbm9kZXMpXG5cbmxldCBzdW0gdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBub2RlcyB+emVybyB+YWRkIH5zdWIgPVxuICB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+dXBkYXRlOihGX2ludmVyc2Ugc3ViKVxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgb3B0X3N1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+Zl9pbnZlcnNlOnN1YlxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgc3VtX2ludCB0IG5vZGVzID0gc3VtIHQgbm9kZXMgfnplcm86MCB+YWRkOiggKyApIH5zdWI6KCAtIClcblxubGV0IHN1bV9mbG9hdCB0IG5vZGVzID1cbiAgc3VtXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfnplcm86MC5cbiAgICB+YWRkOiggKy4gKVxuICAgIH5zdWI6KCAtLiApXG4gICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6KEFycmF5Lmxlbmd0aCBub2Rlcylcbjs7XG5cbmxldCBzZXRfZnJlZXplIChub2RlIDogXyBOb2RlLnQpIH5jaGlsZCB+b25seV9mcmVlemVfd2hlbiA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChTY29wZS5pc190b3Agbm9kZS5jcmVhdGVkX2luKTtcbiAgKCogQnkgbWFraW5nIFtub2RlLmtpbmRdIGJlIFtGcmVlemVdLCB3ZSBhcmUgbWFraW5nIFtOb2RlLmlzX25lY2Vzc2FyeSBub2RlXS4gKilcbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIGluXG4gIE5vZGUuc2V0X2tpbmQgbm9kZSAoRnJlZXplIHsgbWFpbiA9IG5vZGU7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuIH0pO1xuICBpZiB3YXNfbmVjZXNzYXJ5XG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpLaW5kLmZyZWV6ZV9jaGlsZF9pbmRleFxuICBlbHNlIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZVxuOztcblxubGV0IGZyZWV6ZSAoY2hpbGQgOiBfIE5vZGUudCkgfm9ubHlfZnJlZXplX3doZW4gPVxuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCBub2RlID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICBzZXRfZnJlZXplIG5vZGUgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuO1xuICBub2RlXG47O1xuXG5sZXQgYXQgY2xvY2sgdGltZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChub3cgY2xvY2spXG4gIHRoZW4gY29uc3QgdCBCZWZvcmVfb3JfYWZ0ZXIuQWZ0ZXJcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBsZXQgYXQgPSB7IEF0LmF0ID0gdGltZTsgbWFpbjsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gICAgTm9kZS5zZXRfa2luZCBtYWluIChBdCBhdCk7XG4gICAgYXQuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdDp0aW1lIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0IGF0KSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBhZnRlciBjbG9jayBzcGFuID0gYXQgY2xvY2sgKFRpbWVfbnMuYWRkIChub3cgY2xvY2spIHNwYW4pXG5cbmxldCBuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCAoY2xvY2sgOiBDbG9jay50KSB+YmFzZSB+aW50ZXJ2YWwgPVxuICBsZXQgYWZ0ZXIgPSBub3cgY2xvY2sgaW5cbiAgbGV0IGF0ID0gVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgfmNhbl9lcXVhbF9hZnRlcjpmYWxzZSAoKSBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCBhZnRlcik7XG4gIGF0XG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzIChjbG9jayA6IENsb2NrLnQpIGludGVydmFsID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBpbnRlcnZhbCAoVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiBjbG9jay50aW1pbmdfd2hlZWwpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYXRfaW50ZXJ2YWxzIGdvdCB0b28gc21hbGwgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdO1xuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmFzZSA9IG5vdyBjbG9jayBpblxuICBsZXQgYXRfaW50ZXJ2YWxzID0geyBBdF9pbnRlcnZhbHMubWFpbjsgYmFzZTsgaW50ZXJ2YWw7IGFsYXJtID0gQWxhcm0ubnVsbDsgY2xvY2sgfSBpblxuICBOb2RlLnNldF9raW5kIG1haW4gKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpO1xuICAoKiBbbWFpbiA6IHVuaXQgTm9kZS50XSwgc28gd2UgbWFrZSBpdCBuZXZlciBjdXRvZmYgc28gaXQgY2hhbmdlcyBlYWNoIHRpbWUgaXQgaXNcbiAgICAgcmVjb21wdXRlZC4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIG1haW4gQ3V0b2ZmLm5ldmVyO1xuICBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgPC0gYWRkX2FsYXJtXG4gICAgICAgY2xvY2tcbiAgICAgICB+YXQ6KG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IGNsb2NrIH5iYXNlIH5pbnRlcnZhbClcbiAgICAgICAoQWxhcm1fdmFsdWUuY3JlYXRlIChBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzKSk7XG4gIG1haW5cbjs7XG5cbmxldCBzbmFwc2hvdCBjbG9jayB2YWx1ZV9hdCB+YXQgfmJlZm9yZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSBhdCAobm93IGNsb2NrKVxuICB0aGVuXG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCAobm93IGNsb2NrKVxuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3IgXCJjYW5ub3QgdGFrZSBzbmFwc2hvdCBpbiB0aGUgcGFzdFwiIGF0IFslc2V4cF9vZjogVGltZV9ucy50XVxuICAgIGVsc2UgT2sgKGZyZWV6ZSB2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooRm4uY29uc3QgdHJ1ZSkpXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBzbmFwc2hvdCA9IHsgU25hcHNob3QubWFpbjsgYXQ7IGJlZm9yZTsgdmFsdWVfYXQ7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKFNuYXBzaG90IHNuYXBzaG90KTtcbiAgICAoKiBVbmxpa2Ugb3RoZXIgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMsIGEgc25hcHNob3QgaXMgY3JlYXRlZCBpbiBbU2NvcGUudG9wXSBhbmRcbiAgICAgICBjYW5ub3QgYmUgaW52YWxpZGF0ZWQgYnkgaXRzIHNjb3BlLiAgVGh1cywgdGhlcmUgaXMgbm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICAgICAgIGFsYXJtIHRoYXQgaXMgYWRkZWQsIGJlY2F1c2UgaXQgd2lsbCBuZXZlciBuZWVkIHRvIGJlIHJlbW92ZWQgZWFybHkuICopXG4gICAgaWdub3JlIChhZGRfYWxhcm0gY2xvY2sgfmF0IChBbGFybV92YWx1ZS5jcmVhdGUgKFNuYXBzaG90IHNuYXBzaG90KSkgOiBBbGFybS50KTtcbiAgICBPayBtYWluKVxuOztcblxubGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gY2xvY2sgY2hpbGQgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHN0ZXBfZnVuY3Rpb25fbm9kZSA9XG4gICAgeyBTdGVwX2Z1bmN0aW9uX25vZGUubWFpblxuICAgIDsgdmFsdWUgPSBVb3B0Lm5vbmVcbiAgICA7IGNoaWxkID0gVW9wdC5zb21lIGNoaWxkXG4gICAgOyBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdXBjb21pbmdfc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eVxuICAgIDsgYWxhcm0gPSBBbGFybS5udWxsXG4gICAgOyBhbGFybV92YWx1ZSA9IE9iai5tYWdpYyBOb25lICgqIHNldCBiZWxvdyAqKVxuICAgIDsgY2xvY2tcbiAgICB9XG4gIGluXG4gIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSA8LSBBbGFybV92YWx1ZS5jcmVhdGUgKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSk7XG4gIG1haW5cbjs7XG5cbmxldCBtYWtlX3N0YWxlIChub2RlIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSBTdGFiaWxpemF0aW9uX251bS5ub25lO1xuICAoKiBmb3JjZSB0aGUgbm9kZSB0byBiZSBzdGFsZSAqKVxuICBpZiBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUgJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IGFkdmFuY2VfY2xvY2sgKGNsb2NrIDogQ2xvY2sudCkgfnRvXyA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJhZHZhbmNlX2Nsb2NrXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgY2xvY2spXG4gIHRoZW4gKFxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIGNsb2NrLm5vdyB0b187XG4gICAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgY2xvY2sudGltaW5nX3doZWVsIH50b18gfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgY2xvY2sudGltaW5nX3doZWVsIH5oYW5kbGVfZmlyZWQ6Y2xvY2suaGFuZGxlX2ZpcmVkO1xuICAgIHdoaWxlIFVvcHQuaXNfc29tZSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgZG9cbiAgICAgIGxldCBhbGFybV92YWx1ZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBpblxuICAgICAgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIDwtIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQ7XG4gICAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIFVvcHQubm9uZTtcbiAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICB8IEF0IHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIGlmIE5vZGUuaXNfdmFsaWQgbWFpblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBOb2RlLnNldF9raW5kIG1haW4gKENvbnN0IEFmdGVyKTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IEF0X2ludGVydmFscyAoeyBtYWluOyBiYXNlOyBpbnRlcnZhbDsgXyB9IGFzIGF0X2ludGVydmFscykgLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGF0X2ludGVydmFscy5hbGFybVxuICAgICAgICAgIDwtIGFkZF9hbGFybVxuICAgICAgICAgICAgICAgY2xvY2tcbiAgICAgICAgICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgICAgICAgICAgYWxhcm1fdmFsdWU7XG4gICAgICAgICAgbWFrZV9zdGFsZSBtYWluKVxuICAgICAgfCBTbmFwc2hvdCB7IG1haW47IHZhbHVlX2F0OyBfIH0gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbWFpbik7XG4gICAgICAgIHNldF9mcmVlemUgbWFpbiB+Y2hpbGQ6dmFsdWVfYXQgfm9ubHlfZnJlZXplX3doZW46KGZ1biBfIC0+IHRydWUpO1xuICAgICAgICBtYWtlX3N0YWxlIG1haW5cbiAgICAgIHwgU3RlcF9mdW5jdGlvbiB7IG1haW47IF8gfSAtPiBpZiBOb2RlLmlzX3ZhbGlkIG1haW4gdGhlbiBtYWtlX3N0YWxlIG1haW5cbiAgICBkb25lO1xuICAgIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQpXG47O1xuXG5sZXQgY3JlYXRlX2Nsb2NrIHQgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ID1cbiAgbGV0IHRpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzp0aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCBpblxuICBsZXQgcmVjIGNsb2NrIDogQ2xvY2sudCA9XG4gICAgeyBub3cgPSBjcmVhdGVfdmFyIHQgc3RhcnRcbiAgICA7IGhhbmRsZV9maXJlZFxuICAgIDsgZmlyZWRfYWxhcm1fdmFsdWVzID0gVW9wdC5ub25lXG4gICAgOyB0aW1pbmdfd2hlZWxcbiAgICB9XG4gIGFuZCBoYW5kbGVfZmlyZWQgYWxhcm0gPVxuICAgIGxldCBhbGFybV92YWx1ZSA9IFRpbWluZ193aGVlbC5BbGFybS52YWx1ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm0gaW5cbiAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcztcbiAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gVW9wdC5zb21lIGFsYXJtX3ZhbHVlXG4gIGluXG4gIGNsb2NrXG47O1xuXG5sZXQgY3JlYXRlIChtb2R1bGUgQ29uZmlnIDogQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGxldCBhZGp1c3RfaGVpZ2h0c19oZWFwID0gQWRqdXN0X2hlaWdodHNfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgcmVjb21wdXRlX2hlYXAgPSBSZWNvbXB1dGVfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgdCA9XG4gICAgeyBzdGF0dXMgPSBOb3Rfc3RhYmlsaXppbmdcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSBDb25maWcuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgIDsgc3RhYmlsaXphdGlvbl9udW0gPSBTdGFiaWxpemF0aW9uX251bS56ZXJvXG4gICAgOyBjdXJyZW50X3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgOyByZWNvbXB1dGVfaGVhcFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG51bV9hY3RpdmVfb2JzZXJ2ZXJzID0gMFxuICAgIDsgYWxsX29ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG5ld19vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG9ubHlfaW5fZGVidWcgPSBPbmx5X2luX2RlYnVnLmNyZWF0ZSAoKVxuICAgIDsgd2Vha19oYXNodGJscyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA9IGZhbHNlXG4gICAgOyBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPSAwXG4gICAgOyBudW1fbm9kZXNfY2hhbmdlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19pbnZhbGlkYXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19jcmVhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA9IDBcbiAgICA7IG51bV92YXJfc2V0cyA9IDBcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIGxldCB0YWJsZSA9IFdlYWtfaGFzaHRibC5jcmVhdGUgfnNpemU6aW5pdGlhbF9zaXplIGhhc2hhYmxlIGluXG4gIGxldCBwYWNrZWQgPSBQYWNrZWRfd2Vha19oYXNodGJsLlQgdGFibGUgaW5cbiAgV2Vha19oYXNodGJsLnNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0YWJsZSB+dGhyZWFkX3NhZmVfZjooZnVuICgpIC0+XG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LndlYWtfaGFzaHRibHMgcGFja2VkKTtcbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBXZWFrX2hhc2h0YmwuZmluZCB0YWJsZSBrZXkgd2l0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBiID0gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmY6KGZ1biAoKSAtPiBmIGEpIGluXG4gICAgICBXZWFrX2hhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAoKiBHaXZlbiB0aGF0IGludmFsaWQgbm9kZSBhcmUgYXQgYXR0ZW1wdCBhdCBhdm9pZGluZyBicmVha2luZyB0aGUgZW50aXJlIGluY3JlbWVudGFsXG4gICAgIGNvbXB1dGF0aW9uIG9uIHByb2JsZW1zLCBsZXQncyBqdXN0IGlnbm9yZSBhbnkgb3BlcmF0aW9uIG9uIGFuIGludmFsaWQgaW5jcmVtZW50YWxcbiAgICAgcmF0aGVyIHRoYW4gcmFpc2luZy4gKilcbiAgbGV0IGV4cGVydF9raW5kX29mX25vZGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgfCBFeHBlcnQgZSAtPiBVb3B0LnNvbWUgZVxuICAgIHwgSW52YWxpZCAtPiBVb3B0Lm5vbmVcbiAgICB8IGtpbmQgLT4gcmFpc2VfcyBbJXNleHAgXCJ1bmV4cGVjdGVkIGtpbmQgZm9yIGV4cGVydCBub2RlXCIsIChraW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPVxuICAgIGxldCBlID0gRXhwZXJ0LmNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgaW5cbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9ub2RlIHN0YXRlIChFeHBlcnQgZSkgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGlmIE9wdGlvbi5pc19zb21lIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZVxuICAgICAgdGhlblxuICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICA8LSBUIG5vZGUgOjogc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lID1cbiAgICBtYXRjaCBzdGF0ZS5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIGR1cmluZyBzdGFiaWxpemF0aW9uXCIgOiBzdHJpbmcpXVxuICAgIHwgU29tZSBjdXJyZW50IC0+IGN1cnJlbnRcbiAgOztcblxuICAoKiBOb3RlIHRoYXQgdGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3Qgc3ltbWV0cmljIG9mIG9uZSBhbm90aGVyOiBpbiBbbGV0IHkgPVxuICAgICBtYXAgeF0sIFt4XSBpcyBhbHdheXMgYSBjaGlsZCBvZiBbeV0gKGFzc3VtaW5nIFt4XSBkb2Vzbid0IGJlY29tZSBpbnZhbGlkKSBidXQgW3ldIGluXG4gICAgIG9ubHkgYSBwYXJlbnQgb2YgW3hdIGlmIHkgaXMgbmVjZXNzYXJ5LiAqKVxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBuYW1lID1cbiAgICBsZXQgKFQgY3VycmVudCkgPSBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lIGluXG4gICAgaWYgbm90IChOb2RlLmhhc19jaGlsZCBub2RlIH5jaGlsZDpjdXJyZW50KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBwYXJlbnQgbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX3BhcmVudCB+cGFyZW50OmN1cnJlbnQgbm9kZSlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgb24gY2hpbGRyZW4gbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcIm1ha2Vfc3RhbGVcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIG1hdGNoIEV4cGVydC5tYWtlX3N0YWxlIGUgd2l0aFxuICAgICAgfCBgQWxyZWFkeV9zdGFsZSAtPiAoKVxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgOztcblxuICBsZXQgaW52YWxpZGF0ZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcImludmFsaWRhdGVcIjtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBzdGF0ZVxuICA7O1xuXG4gIGxldCBhZGRfZGVwZW5kZW5jeSAobm9kZSA6IF8gTm9kZS50KSAoZGVwIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gICAgICAgICYmIG5vdFxuICAgICAgICAgICAgIChMaXN0Lm1lbVxuICAgICAgICAgICAgICAgIH5lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGVcbiAgICAgICAgICAgICAgICAoVCBub2RlKSlcbiAgICAgICAgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiYWRkX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIGxldCBuZXdfY2hpbGRfaW5kZXggPSBFeHBlcnQuYWRkX2NoaWxkX2VkZ2UgZSAoRSBkZXApIGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBldmVuIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgY2hpbGQgb2ZcbiAgICAgICAgIFtub2RlXSwgYmVjYXVzZSB3ZSBjb3VsZCBiZSBydW5uaW5nIGR1ZSB0byBhIHBhcmVudCBvdGhlciB0aGFuIFtub2RlXSBtYWtpbmcgdXNcbiAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcGFyZW50IH5jaGlsZDpkZXAuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpuZXdfY2hpbGRfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChlZGdlIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcInJlbW92ZV9kZXBlbmRlbmN5XCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW5cbiAgICAgICAgIFthZGRfZGVwZW5kZW5jeV0gKilcbiAgICAgIGxldCBlZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gZWRnZS5pbmRleCBpblxuICAgICAgbGV0IChFIGxhc3RfZWRnZSkgPSBFeHBlcnQubGFzdF9jaGlsZF9lZGdlX2V4biBlIGluXG4gICAgICBsZXQgbGFzdF9lZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gbGFzdF9lZGdlLmluZGV4IGluXG4gICAgICBpZiBlZGdlX2luZGV4IDw+IGxhc3RfZWRnZV9pbmRleFxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIE5vZGUuc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZFxuICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgfmNoaWxkMTplZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXhcbiAgICAgICAgICAgIH5jaGlsZDI6bGFzdF9lZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgRXhwZXJ0LnN3YXBfY2hpbGRyZW4gZSB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXggfmNoaWxkX2luZGV4MjpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpO1xuICAgICAgRXhwZXJ0LnJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIGU7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSBub2RlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVfY2hpbGQgfmNoaWxkOmVkZ2UuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgZWRnZS5jaGlsZCkgdGhlbiBFeHBlcnQuZGVjcl9pbnZhbGlkX2NoaWxkcmVuIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRXhwZXJ0LmVkZ2UgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8ob25fY2hhbmdlID0gaWdub3JlKSBjaGlsZCA6IF8gdCA9IHsgY2hpbGQ7IG9uX2NoYW5nZTsgaW5kZXggPSBVb3B0Lm5vbmUgfVxuXG4gIGxldCB2YWx1ZSAodCA6IF8gdCkgPVxuICAgIGxldCBzdGF0ZSA9IHQuY2hpbGQuc3RhdGUgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIFN0YXRlLkV4cGVydC5hc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19wYXJlbnRcbiAgICAgICAgc3RhdGVcbiAgICAgICAgdC5jaGlsZFxuICAgICAgICBcIkRlcGVuZGVuY3kudmFsdWVcIjtcbiAgICAoKiBOb3QgZXhwb3NpbmcgdGhlIF9leG4sIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBhZHZlcnRpc2VkIGFzIGJlaW5nIHVzYWJsZSBvbmx5XG4gICAgICAgaW5zaWRlIHRoZSBjYWxsYmFja3Mgb2YgcGFyZW50cywgd2hlcmUgaXQgd2lsbCBub3QgcmFpc2UuICopXG4gICAgTm9kZS52YWx1ZV9leG4gdC5jaGlsZFxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHN0YXRlID8ob25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBmdW4gfmlzX25vd19vYnNlcnZhYmxlOl8gLT4gKCkpIGYgPVxuICAgIFN0YXRlLkV4cGVydC5jcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSA9IFN0YXRlLkV4cGVydC5tYWtlX3N0YWxlXG4gIGxldCB3YXRjaCA9IEZuLmlkXG4gIGxldCBpbnZhbGlkYXRlID0gU3RhdGUuRXhwZXJ0LmludmFsaWRhdGVcbiAgbGV0IGFkZF9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LmFkZF9kZXBlbmRlbmN5XG4gIGxldCByZW1vdmVfZGVwZW5kZW5jeSA9IFN0YXRlLkV4cGVydC5yZW1vdmVfZGVwZW5kZW5jeVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubGV0IGNyZWF0ZSBzdGF0ZSBjaGlsZHJlbiB+ZiB+cmVkdWNlID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBjaGlsZHJlbiBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVkdWNlciA9IEJhbGFuY2VkX3JlZHVjZXIuY3JlYXRlX2V4biAoKSB+bGVuIH5yZWR1Y2UgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBFeHBlcnQxLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGEgPSBCYWxhbmNlZF9yZWR1Y2VyLmNvbXB1dGVfZXhuIHJlZHVjZXIgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXI7XG4gICAgICAgIGEpXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgRXhwZXJ0MS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEV4cGVydDEuRGVwZW5kZW5jeS5jcmVhdGUgY2hpbGRyZW4uKGkpIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIEJhbGFuY2VkX3JlZHVjZXIuc2V0X2V4biByZWR1Y2VyIGkgKGYgYSk7XG4gICAgICAgICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyKSlcbiAgICBkb25lO1xuICAgIFNvbWUgKEV4cGVydDEuTm9kZS53YXRjaCBub2RlKSlcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBtb3N0bHkgYSB3cmFwcGVyIGFyb3VuZCBbU3RhdGVdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluY3JlbWVudGFsX2ludGZcblxubW9kdWxlIHR5cGUgSW5jcmVtZW50YWxfY29uZmlnID0gQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZ1xuXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5cbmxldCBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCA9IDEyOFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBtb2R1bGUgQ3V0b2ZmID0gQ3V0b2ZmXG4gIG1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gU3RlcF9mdW5jdGlvblxuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICB2YWwgdCA6IHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGVfaW50ZXJuYWwgPSBjcmVhdGVcblxuICAgIGxldCBjcmVhdGUgPyhtYXhfaGVpZ2h0X2FsbG93ZWQgPSBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCkgKCkgOiAobW9kdWxlIFMpID1cbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCB0ID0gY3JlYXRlIChtb2R1bGUgQ29uZmlnLkRlZmF1bHQgKCkpIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgICAgIGVuZClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoc3RhdGUgOiBTdGF0ZS50KSAoKSA9IHN0YXRlLmN1cnJlbnRfc2NvcGVcbiAgICBsZXQgd2l0aGluIHN0YXRlIHQgfmYgPSBTdGF0ZS53aXRoaW5fc2NvcGUgc3RhdGUgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE5vZGVcblxuICBsZXQgc3RhdGUgdCA9IHQuc3RhdGVcbiAgbGV0IHBhY2sgdCA9IFBhY2tlZC5UIHRcbiAgbGV0IGNvbnN0IHN0YXRlIGEgPSBTdGF0ZS5jb25zdCBzdGF0ZSBhXG4gIGxldCByZXR1cm4gPSBjb25zdFxuICBsZXQgb2JzZXJ2ZSA9IFN0YXRlLmNyZWF0ZV9vYnNlcnZlclxuICBsZXQgbWFwID0gU3RhdGUubWFwXG4gIGxldCBiaW5kID0gU3RhdGUuYmluZFxuXG4gIG1vZHVsZSBOX2FyeV9tYXBfYW5kX2JpbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbWFwMiA9IFN0YXRlLm1hcDJcbiAgICBsZXQgbWFwMyA9IFN0YXRlLm1hcDNcbiAgICBsZXQgbWFwNCA9IFN0YXRlLm1hcDRcbiAgICBsZXQgbWFwNSA9IFN0YXRlLm1hcDVcbiAgICBsZXQgbWFwNiA9IFN0YXRlLm1hcDZcbiAgICBsZXQgbWFwNyA9IFN0YXRlLm1hcDdcbiAgICBsZXQgbWFwOCA9IFN0YXRlLm1hcDhcbiAgICBsZXQgbWFwOSA9IFN0YXRlLm1hcDlcbiAgICBsZXQgbWFwMTAgPSBTdGF0ZS5tYXAxMFxuICAgIGxldCBtYXAxMSA9IFN0YXRlLm1hcDExXG4gICAgbGV0IG1hcDEyID0gU3RhdGUubWFwMTJcbiAgICBsZXQgbWFwMTMgPSBTdGF0ZS5tYXAxM1xuICAgIGxldCBtYXAxNCA9IFN0YXRlLm1hcDE0XG4gICAgbGV0IG1hcDE1ID0gU3RhdGUubWFwMTVcbiAgICBsZXQgYmluZDIgPSBTdGF0ZS5iaW5kMlxuICAgIGxldCBiaW5kMyA9IFN0YXRlLmJpbmQzXG4gICAgbGV0IGJpbmQ0ID0gU3RhdGUuYmluZDRcbiAgZW5kXG5cbiAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICBtb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIEluZml4XG5cbiAgbGV0IGpvaW4gPSBTdGF0ZS5qb2luXG4gIGxldCBpZl8gPSBTdGF0ZS5pZl9cbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcbiAgbGV0IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUgPSBTdGF0ZS5kZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS5tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgc3RhdGUgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5cbiAgbGV0IGFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmYgPSBTdGF0ZS5hcnJheV9mb2xkIHN0YXRlIHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgc3RhdGUgdHMgfmYgfnJlZHVjZSA9IFJlZHVjZV9iYWxhbmNlZC5jcmVhdGUgc3RhdGUgdHMgfmYgfnJlZHVjZVxuXG4gIG1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBTdGF0ZS5Vbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGVcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS51bm9yZGVyZWRfYXJyYXlfZm9sZFxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID0gU3RhdGUub3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBhbGwgPSBTdGF0ZS5hbGxcbiAgbGV0IGV4aXN0cyA9IFN0YXRlLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IFN0YXRlLmZvcl9hbGxcbiAgbGV0IGJvdGggPSBTdGF0ZS5ib3RoXG4gIGxldCBzdW0gPSBTdGF0ZS5zdW1cbiAgbGV0IG9wdF9zdW0gPSBTdGF0ZS5vcHRfc3VtXG4gIGxldCBzdW1faW50ID0gU3RhdGUuc3VtX2ludFxuICBsZXQgc3VtX2Zsb2F0ID0gU3RhdGUuc3VtX2Zsb2F0XG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID0gU3RhdGUuY3JlYXRlX3ZhclxuICAgIGxldCBzZXQgPSBTdGF0ZS5zZXRfdmFyXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IHdhdGNoIHQgPSB0LndhdGNoXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdC52YWx1ZSB8PiBbJXNleHBfb2Y6IGFdXG4gICAgbGV0IHJlcGxhY2UgdCB+ZiA9IHNldCB0IChmIChsYXRlc3RfdmFsdWUgdCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICAgIG1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgSW5pdGlhbGl6ZWQgb2YgJ2FcbiAgICAgICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICAgICAgfCBJbnZhbGlkYXRlZFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBvbl91cGRhdGVfZXhuIHQgfihmIDogXyBVcGRhdGUudCAtPiB1bml0KSA9XG4gICAgICBTdGF0ZS5vYnNlcnZlcl9vbl91cGRhdGVfZXhuIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTmVjZXNzYXJ5IGEgLT4gZiAoSW5pdGlhbGl6ZWQgYSlcbiAgICAgICAgfCBDaGFuZ2VkIChhMSwgYTIpIC0+IGYgKENoYW5nZWQgKGExLCBhMikpXG4gICAgICAgIHwgSW52YWxpZGF0ZWQgLT4gZiBJbnZhbGlkYXRlZFxuICAgICAgICB8IFVubmVjZXNzYXJ5IC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIkluY3JlbWVudGFsIGJ1ZyAtLSBPYnNlcnZlci5vbl91cGRhdGVfZXhuIGdvdCB1bmV4cGVjdGVkIHVwZGF0ZSBcXFxuICAgICAgICAgICAgIFVubmVjZXNzYXJ5XCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFslc2V4cF9vZjogXyB0XSlcbiAgICA7O1xuXG4gICAgbGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgdCA9IFN0YXRlLmRpc2FsbG93X2Z1dHVyZV91c2UgIXRcbiAgICBsZXQgdmFsdWUgPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZVxuICAgIGxldCB2YWx1ZV9leG4gPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZV9leG5cblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hICh0IDogXyB0KSA9XG4gICAgICBtYXRjaCAhdC5zdGF0ZSB3aXRoXG4gICAgICB8IENyZWF0ZWQgLT4gWyVtZXNzYWdlIFwiPHVuc3RhYmlsaXplZD5cIl1cbiAgICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IFslbWVzc2FnZSBcIjxkaXNhbGxvd2VkPlwiXVxuICAgICAgfCBJbl91c2UgLT5cbiAgICAgICAgbGV0IHVvcHQgPSAhdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgICAgIHRoZW4gWyVtZXNzYWdlIFwiPGludmFsaWQ+XCJdXG4gICAgICAgIGVsc2UgWyVzZXhwIChVb3B0LnVuc2FmZV92YWx1ZSB1b3B0IDogYSldXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEJlZm9yZV9vcl9hZnRlciA9IEJlZm9yZV9vcl9hZnRlclxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGUuQ2xvY2tcblxuICAgIGxldCBzdGF0ZSA9IGluY3Jfc3RhdGVcblxuICAgIGxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAgICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQgaW5cbiAgICAgIGxldCBsZXZlbF9iaXRzID0gWyAxNDsgMTM7IDUgXSBpblxuICAgICAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvblxuICAgICAgICB+bGV2ZWxfYml0czpcbiAgICAgICAgICAoVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzIH5leHRlbmRfdG9fbWF4X251bV9iaXRzOnRydWUpXG4gICAgICAgICgpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgc3RhdGUgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnKSB+c3RhcnQgKCkgPVxuICAgICAgKCogTWFrZSBzdXJlIFtzdGFydF0gaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gIE90aGVyd2lzZSwgaWYgeW91XG4gICAgICAgICBmZWVkIFtDbG9jay5ub3cgKCldIHRvIGEgdGltZSBmdW5jdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgZG93biB0byBhIHRpbWUgaW5cbiAgICAgICAgIHRoZSBwYXN0LCBjYXVzaW5nIGVycm9ycy4gKilcbiAgICAgIGxldCBzdGFydCA9XG4gICAgICAgIFRpbWVfbnMub2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG4gICAgICAgICAgKFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHN0YXJ0KVxuICAgICAgaW5cbiAgICAgIFN0YXRlLmNyZWF0ZV9jbG9jayBzdGF0ZSB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnRcbiAgICA7O1xuXG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LnRpbWluZ193aGVlbFxuICAgIGxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoID0gU3RhdGUudGltaW5nX3doZWVsX2xlbmd0aFxuICAgIGxldCBub3cgPSBTdGF0ZS5ub3dcbiAgICBsZXQgd2F0Y2hfbm93IHQgPSB0Lm5vdy53YXRjaFxuICAgIGxldCBhdCA9IFN0YXRlLmF0XG4gICAgbGV0IGFmdGVyID0gU3RhdGUuYWZ0ZXJcbiAgICBsZXQgYXRfaW50ZXJ2YWxzID0gU3RhdGUuYXRfaW50ZXJ2YWxzXG4gICAgbGV0IGFkdmFuY2VfY2xvY2sgPSBTdGF0ZS5hZHZhbmNlX2Nsb2NrXG4gICAgbGV0IGFkdmFuY2VfY2xvY2tfYnkgdCBzcGFuID0gYWR2YW5jZV9jbG9jayB0IH50b186KFRpbWVfbnMuYWRkIChub3cgdCkgc3BhbilcbiAgICBsZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiA9IFN0YXRlLmluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxuICAgIGxldCBzdGVwX2Z1bmN0aW9uIHQgfmluaXQgc3RlcHMgPVxuICAgICAgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuICAgICAgICB0XG4gICAgICAgIChjb25zdCAoaW5jcl9zdGF0ZSB0KSAoU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuIH5pbml0IH5zdGVwcykpXG4gICAgOztcblxuICAgIGxldCBzbmFwc2hvdCA9IFN0YXRlLnNuYXBzaG90XG4gIGVuZFxuXG4gIGxldCBmcmVlemUgPyh3aGVuXyA9IGZ1biBfIC0+IHRydWUpIHQgPSBTdGF0ZS5mcmVlemUgdCB+b25seV9mcmVlemVfd2hlbjp3aGVuX1xuICBsZXQgZGVwZW5kX29uIHQgfmRlcGVuZF9vbiA9IFN0YXRlLmRlcGVuZF9vbiB0IH5kZXBlbmRfb25cbiAgbGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSA9IFN0YXRlLm5lY2Vzc2FyeV9pZl9hbGl2ZVxuXG4gIG1vZHVsZSBVcGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG4gIGxldCBvbl91cGRhdGUgPSBTdGF0ZS5ub2RlX29uX3VwZGF0ZVxuICBsZXQgc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuc3RhYmlsaXplIHN0YXRlXG4gIGxldCBhbV9zdGFiaWxpemluZyBzdGF0ZSA9IFN0YXRlLmFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gIGxldCBzYXZlX2RvdCA9IFN0YXRlLnNhdmVfZG90XG4gIGxldCBzYXZlX2RvdF90b19maWxlID0gU3RhdGUuc2F2ZV9kb3RfdG9fZmlsZVxuXG4gIG1vZHVsZSBOb2RlX3ZhbHVlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgSW52YWxpZFxuICAgICAgfCBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgICB8IFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBub2RlX3ZhbHVlIHQgOiBfIE5vZGVfdmFsdWUudCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gSW52YWxpZFxuICAgIGVsc2UgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIE5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gICAgZWxzZSBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gIDs7XG5cbiAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8gc2hvdyBqdXN0IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgIHJlcHJlc2VudGF0aW9uLiAgV2Ugb25seSBzaG93IHRoZSB2YWx1ZSBpZiBpdCBpcyBuZWNlc3NhcnkgYW5kIHZhbGlkLiAqKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBcIjxpbnZhbGlkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICB0aGVuIFwiPHVubmVjZXNzYXJ5PlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgVW9wdC5pc19ub25lIHQudmFsdWVfb3B0XG4gICAgdGhlbiBcIjx1bmNvbXB1dGVkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgdW5zYWZlX3ZhbHVlIHQgfD4gWyVzZXhwX29mOiBhXVxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBFeHBlcnQxXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCB0MSB0MiA9IG1hcDIgdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG5cbiAgICAgIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdFxuICAgICAgICBsZXQgd2F0Y2ggPSBWYXIud2F0Y2hcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS53ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jb25maWcgKEluY3JlbWVudGFsX2NvbmZpZyA6IEluY3JlbWVudGFsX2NvbmZpZykgKCkgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgKG1vZHVsZSBJbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQ6MTI4XG4gIGVuZFxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2xvY2tcblxuICAgIGxldCBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ICgpID1cbiAgICAgIGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyBTdGF0ZS50IH5zdGFydCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVydFxuXG4gICAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICBsZXQgY3JlYXRlID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID0gY3JlYXRlIFN0YXRlLnQgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplICgpID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIFN0YXRlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoKSA9IGN1cnJlbnQgU3RhdGUudCAoKVxuICAgIGxldCB3aXRoaW4gdCB+ZiA9IHdpdGhpbiBTdGF0ZS50IHQgfmZcbiAgZW5kXG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID91c2VfY3VycmVudF9zY29wZSB2YWx1ZSA9IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgU3RhdGUudCB2YWx1ZVxuICBlbmRcblxuICBsZXQgY29uc3QgYSA9IGNvbnN0IFN0YXRlLnQgYVxuICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG4gIGxldCBhbGwgdHMgPSBhbGwgU3RhdGUudCB0c1xuICBsZXQgZXhpc3RzIHRzID0gZXhpc3RzIFN0YXRlLnQgdHNcbiAgbGV0IGZvcl9hbGwgdHMgPSBmb3JfYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcblxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIGxldCBhcnJheV9mb2xkIHRzIH5pbml0IH5mID0gYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgdHMgfmYgfnJlZHVjZSA9IHJlZHVjZV9iYWxhbmNlZCBTdGF0ZS50IHRzIH5mIH5yZWR1Y2VcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfnVwZGF0ZSA9XG4gICAgdW5vcmRlcmVkX2FycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZiB+dXBkYXRlID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDs7XG5cbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlXG4gIDs7XG5cbiAgbGV0IHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBzdW1faW50IHRzID0gc3VtX2ludCBTdGF0ZS50IHRzXG4gIGxldCBzdW1fZmxvYXQgdHMgPSBzdW1fZmxvYXQgU3RhdGUudCB0c1xuICBsZXQgc3RhYmlsaXplICgpID0gc3RhYmlsaXplIFN0YXRlLnRcbiAgbGV0IGFtX3N0YWJpbGl6aW5nICgpID0gYW1fc3RhYmlsaXppbmcgU3RhdGUudFxuICBsZXQgc2F2ZV9kb3Qgb3V0ID0gc2F2ZV9kb3QgU3RhdGUudCBvdXRcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSA9IE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOnNhdmVfZG90XG4gIGxldCBsYXp5X2Zyb21fZnVuIGYgPSBsYXp5X2Zyb21fZnVuIFN0YXRlLnQgZlxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKCkgPSBNYWtlX3dpdGhfY29uZmlnIChDb25maWcuRGVmYXVsdCAoKSkgKClcbmluY2x1ZGUgR2VuZXJpY1xuXG5tb2R1bGUgQWRkX3dpdG5lc3MwIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICd3IHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAndyB0ID0gTS50XG5cbiAgbGV0IGludmFyaWFudCBfIHQgPSBNLmludmFyaWFudCB0XG4gIGxldCBzZXhwX29mX3QgXyB0ID0gTS5zZXhwX29mX3QgdFxuZW5kXG5cbm1vZHVsZSBBZGRfd2l0bmVzczEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBNLmludmFyaWFudCBpbnZhcmlhbnRfYSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IE0uc2V4cF9vZl90IHNleHBfb2ZfYSB0XG5lbmRcblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIGluY2x1ZGUgQ2xvY2tcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKENsb2NrKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlcnRcblxuICBtb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgaW5jbHVkZSBOb2RlXG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBOb2RlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChOb2RlKVxuZW5kXG5cbnR5cGUgKCdhLCAndykgdCA9ICgnYSwgJ3cpIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxudHlwZSAoJ2EsICd3KSBpbmNyZW1lbnRhbCA9ICgnYSwgJ3cpIHRcblxubGV0IGludmFyaWFudCA9IE5vZGUuaW52YXJpYW50XG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChPYnNlcnZlcilcbmVuZFxuXG5tb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTY29wZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU2NvcGUpXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhdGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFN0YXRlKVxuZW5kXG5cbm1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKFZhcilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBpbmNyZW1lbnRhbFxuICAgIHdpdGggdHlwZSBCZWZvcmVfb3JfYWZ0ZXIudCA9IEJlZm9yZV9vcl9hZnRlci50XG4gICAgd2l0aCB0eXBlIENsb2NrLnQgPSBzdGF0ZV93aXRuZXNzIENsb2NrLnRcbiAgICB3aXRoIHR5cGUgJ2EgQ3V0b2ZmLnQgPSAnYSBDdXRvZmYudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuRGVwZW5kZW5jeS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuRGVwZW5kZW5jeS50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5Ob2RlLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5Ob2RlLnRcbiAgICB3aXRoIHR5cGUgRXhwZXJ0LlN0ZXBfcmVzdWx0LnQgPSBFeHBlcnQuU3RlcF9yZXN1bHQudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBPYnNlcnZlci50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLlVwZGF0ZS50ID0gJ2EgT2JzZXJ2ZXIuVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgUGFja2VkLnQgPSBQYWNrZWQudFxuICAgIHdpdGggdHlwZSBTY29wZS50ID0gc3RhdGVfd2l0bmVzcyBTY29wZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLnQgPSBzdGF0ZV93aXRuZXNzIFN0YXRlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUuU3RhdHMudCA9IFN0YXRlLlN0YXRzLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnQgPVxuICAgICAgICAgICAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBVcGRhdGUudCA9ICdhIFVwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFZhci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBWYXIudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBkZWJ1ZyA9IGRlYnVnXG5lbmRcbiIsIlxub3BlbiBCYXNlXG5cbm1vZHVsZSBDb21tdXRhdGl2ZV9ncm91cCA9IHN0cnVjdFxuICAoKiogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXG4gICAgICArIGFzc29jaWF0aXZpdHk6IFsoYSArIGIpICsgYyA9IGEgKyAoYiArIGMpXVxuICAgICAgKyBpZGVudGl0eTogW3plcm8gKyBhID0gYSArIHplcm8gPSBhXVxuICAgICAgKyBpbnZlcnNlczogZ2l2ZW4gYW55IFthXSB0aGVyZSBleGlzdHMgYSAodW5pcXVlKSBlbHQgW2JdIHN1Y2ggdGhhdCBbYSArIGIgPSBiICsgYSA9XG4gICAgICB6ZXJvXVxuICAgICAgKyBjb21tdXRhdGl2aXR5OiBbYSArIGIgPSBiICsgYV1cbiAgKilcblxuICBtb2R1bGUgdHlwZSBXaXRob3V0X3NleHAgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoKykgIDogdCAtPiB0IC0+IHRcbiAgICB2YWwgKC0pICA6IHQgLT4gdCAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBpbmNsdWRlIFdpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZWN0b3Jfc3BhY2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIGluY2x1ZGUgQ29tbXV0YXRpdmVfZ3JvdXAuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgSW5jcl9tYXBfaW50ZlxuXG4oKiogVGhpcyB0eXBlIGxldHMgdXMgY2FwdHVyZSB0aGUga2luZCBvZiBtYXAgZnVuY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBzbyB3ZSBjYW4gd2l0aFxuICAgIG9uZSBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtIG1hcCBhbmQgZmlsdGVyLW1hcCBvcGVyYXRpb25zLlxuXG4gICAgSGVyZSwgWydpbnB1dF9kYXRhXSBpcyB0aGUgdHlwZSBvZiBkYXRhIGluIHRoZSBpbnB1dCBtYXAsIFsnb3V0cHV0X2RhdGFdIGlzIHRoZSB0eXBlXG4gICAgb2YgZGF0YSBpbiB0aGUgb3V0cHV0IG1hcCwgYW5kIFsnZl9vdXRwdXRdIGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgW35mXSBmdW5jdGlvblxuICAgIHBhc3NlZCB0byB0aGUgbWFwcGluZyBmdW5jdGlvbi4gKilcbm1vZHVsZSBNYXBfdHlwZSA9IHN0cnVjdFxuICB0eXBlICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnZl9vdXRwdXQpIHQgPVxuICAgIHwgTWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSkgdFxuICAgIHwgRmlsdGVyX21hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEgb3B0aW9uKSB0XG5cbiAgKCogVGhlIGV4dHJhIHR5cGUgdmFyaWFibGUgJ2EgaXMgdG8gYWxsb3cgaW4gZnV0dXJlOlxuICAgICB8IEZpbHRlciA6ICgnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgYm9vbCkgdCAqKVxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIGxldCB3aXRoX29sZCBpIH5mID1cbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgbGV0JW1hcCBhID0gaSBpblxuICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYSBpblxuICAgIG9sZCA6PSBTb21lIChhLCBiKTtcbiAgICBiXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZCBtYXAgfmY6KGZ1biB+b2xkIG5ld19pbiAtPlxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggc3BlY2lhbGl6ZWRfaW5pdGlhbCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTWFwLmZvbGQgfmluaXQgfmY6YWRkIG5ld19pblxuICAgICAgICAgfCBTb21lIGluaXRpYWwgLT4gaW5pdGlhbCB+aW5pdCBuZXdfaW4pXG4gICAgICB8IFNvbWUgKG9sZF9pbiwgb2xkX291dCkgLT5cbiAgICAgICAgaWYgcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSAmJiBNYXAubGVuZ3RoIG5ld19pbiA9IDBcbiAgICAgICAgdGhlbiBpbml0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgfmluaXQ6b2xkX291dFxuICAgICAgICAgICAgb2xkX2luXG4gICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICB+ZjooZnVuIGFjYyAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2NcbiAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBhZGQgfmtleSB+ZGF0YTpuZXdfIGFjY1xuICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+IHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjKSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBpbmNyX21hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBtYXRjaCB1cGRhdGUgd2l0aFxuICAgICAgfCBTb21lIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkXG4gICAgICAgICAgICB+b3V0ZXJfa2V5XG4gICAgICAgICAgICB+aW5uZXJfa2V5XG4gICAgICAgICAgICB+ZGF0YTpuZXdfZGF0YVxuICAgICAgICAgICAgKHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIGluY3JfbWFwXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5Om91dGVyX2tleSB+b2xkX2RhdGE6b2xkX2lubmVyX21hcCB+bmV3X2RhdGE6bmV3X2lubmVyX21hcCBhY2MgLT5cbiAgICAgICAgKE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIG9sZF9pbm5lcl9tYXAgbmV3X2lubmVyX21hcCB+ZGF0YV9lcXVhbClcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoaW5uZXJfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IGRhdGFfcmVtb3ZlZCAtPiByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfcmVtb3ZlZCBhY2NcbiAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfYWRkZWQgLT4gYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpkYXRhX2FkZGVkIGFjY1xuICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkX2RhdGEsIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICB1cGRhdGUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgcmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICA7O1xuXG4gIGxldCB3aXRoX2NvbXBhcmF0b3InIGdldF9jb21wYXJhdG9yIHggZiA9XG4gICAgSW5jcmVtZW50YWwuYmluZCAoSW5jcmVtZW50YWwuZnJlZXplIChJbmNyZW1lbnRhbC5tYXAgeCB+ZjpnZXRfY29tcGFyYXRvcikpIH5mXG4gIDs7XG5cbiAgKCoqIENhcHR1cmVzIHRoZSBjb21wYXJhdG9yICh3aGljaCBjYW4ndCBjaGFuZ2UgYW55d2F5LCBzaW5jZSB0aGUgdHlwZSBkZXRlcm1pbmVzIHRoZVxuICAgICAgY29tcGFyYXRvcikgYnkgZnJlZXppbmcgdGhlIGNvcnJlc3BvbmRpbmcgbWFwLiAgTm90ZSB0aGF0IGJ5IGZpcnN0IHVzaW5nIEluY3JlbWVudGFsLm1hcCB0b1xuICAgICAgZ2V0IHRoZSBjb21wYXJhdG9yIG91dCBvZiB0aGUgbWFwLCB3ZSBhbGxvdyB0aGUgaW5pdGlhbCBtYXAgaXRzZWxmIHRvIGJlIGdhcmJhZ2VcbiAgICAgIGNvbGxlY3RlZCAqKVxuICBsZXQgd2l0aF9jb21wYXJhdG9yIG1hcCBmID0gd2l0aF9jb21wYXJhdG9yJyBNYXAuY29tcGFyYXRvciBtYXAgZlxuXG4gIGxldCBvZl9zZXQgc2V0ID1cbiAgICB3aXRoX2NvbXBhcmF0b3InIFNldC5jb21wYXJhdG9yIHNldCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBvbGRfaW5wdXQgPSByZWYgKFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgbGV0IG9sZF9vdXRwdXQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgSW5jcmVtZW50YWwubWFwIHNldCB+ZjooZnVuIG5ld19pbnB1dCAtPlxuICAgICAgICBsZXQgbmV3X291dHB1dCA9XG4gICAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgICAgKFNldC5zeW1tZXRyaWNfZGlmZiAhb2xkX2lucHV0IG5ld19pbnB1dClcbiAgICAgICAgICAgIH5pbml0OiFvbGRfb3V0cHV0XG4gICAgICAgICAgICB+ZjooZnVuIG91dHB1dCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICB8IEZpcnN0IGsgLT4gTWFwLnJlbW92ZSBvdXRwdXQga1xuICAgICAgICAgICAgICB8IFNlY29uZCBrIC0+IE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5OmsgfmRhdGE6KCkpXG4gICAgICAgIGluXG4gICAgICAgIG9sZF9pbnB1dCA6PSBuZXdfaW5wdXQ7XG4gICAgICAgIG9sZF9vdXRwdXQgOj0gbmV3X291dHB1dDtcbiAgICAgICAgbmV3X291dHB1dCkpXG4gIDs7XG5cbiAgbGV0IGdlbmVyaWNfbWFwaVxuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcCA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6aW5wdXRfZGF0YSAtPiBmX291dHB1dClcbiAgICA9XG4gICAgd2l0aF9vbGQgbWFwIH5mOihmdW4gfm9sZCBpbnB1dCAtPlxuICAgICAgbWF0Y2ggb2xkLCBNYXAubGVuZ3RoIGlucHV0IHdpdGhcbiAgICAgIHwgXywgMCB8IE5vbmUsIF8gLT5cbiAgICAgICAgKG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gKE1hcC5tYXBpIGlucHV0IH5mIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudClcbiAgICAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPiBNYXAuZmlsdGVyX21hcGkgaW5wdXQgfmYpXG4gICAgICB8IFNvbWUgKG9sZF9pbnB1dCwgb2xkX291dHB1dCksIF8gLT5cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICBvbGRfaW5wdXRcbiAgICAgICAgICBpbnB1dFxuICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgfmluaXQ6b2xkX291dHB1dFxuICAgICAgICAgIH5mOihmdW4gb3V0cHV0IChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IGBSaWdodCBuZXdfZGF0YSB8IGBVbmVxdWFsIChfLCBuZXdfZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlcyA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhOnJlc1xuICAgICAgICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgICAgICAgfCBTb21lIG91dHB1dF9kYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6b3V0cHV0X2RhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcGkgP2RhdGFfZXF1YWwgbWFwIH5mID0gZ2VuZXJpY19tYXBpIE1hcCA/ZGF0YV9lcXVhbCBtYXAgfmZcbiAgbGV0IGZpbHRlcl9tYXBpID9kYXRhX2VxdWFsIG1hcCB+ZiA9IGdlbmVyaWNfbWFwaSBGaWx0ZXJfbWFwID9kYXRhX2VxdWFsIG1hcCB+ZlxuICBsZXQgbWFwID9kYXRhX2VxdWFsIG1hcCB+ZiA9IG1hcGkgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxuICBsZXQgZmlsdGVyX21hcCA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHdpdGhfb2xkMiBpMSBpMiB+ZiA9XG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgSW5jcmVtZW50YWwubWFwMiBpMSBpMiB+ZjooZnVuIGExIGEyIC0+XG4gICAgICBsZXQgYiA9IGYgfm9sZDohb2xkIGExIGEyIGluXG4gICAgICBvbGQgOj0gU29tZSAoYTEsIGEyLCBiKTtcbiAgICAgIGIpXG4gIDs7XG5cbiAgbGV0IG1hcGlfY291bnRcbiAgICAgICAgKHR5cGUgYSBjbXApXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGlucHV0XG4gICAgICAgIH4oY29tcGFyYXRvciA6XG4gICAgICAgICAgICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gKHZhbCBjb21wYXJhdG9yKSBpblxuICAgIGxldCBhZGQgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLnVwZGF0ZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIG4gLT4gbiArIDEpXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC5jaGFuZ2UgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAxIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIG4gLT4gU29tZSAobiAtIDEpKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiBNLmNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIGFjY1xuICAgICAgICBlbHNlIGFjYyB8PiByZW1vdmUgcHJldl9rZXkgfD4gYWRkIG5ld19rZXkpXG4gIDs7XG5cbiAgbGV0IG1hcF9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtaW4sIF8pIC0+IFNvbWUgbWluXG4gIDs7XG5cbiAgbGV0IG1heF9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWF4X2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtYXgsIF8pIC0+IFNvbWUgbWF4XG4gIDs7XG5cbiAgbGV0IGJvdW5kc19oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAsIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXyksIFNvbWUgKG1heCwgXykgLT4gU29tZSAobWluLCBtYXgpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBtYXBpX21pbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIH5mOm1pbl9oZWxwZXIgKG1hcGlfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6bWF4X2hlbHBlciAobWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpib3VuZHNfaGVscGVyIChtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX21uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX21pbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1hcF9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX3ZhbHVlID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBpX21uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1heF92YWx1ZSA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX21heCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXBfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHZhbHVlX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtZXJnZVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGxlZnRfbWFwXG4gICAgICAgIHJpZ2h0X21hcFxuICAgICAgICB+ZlxuICAgID1cbiAgICB3aXRoX29sZDIgbGVmdF9tYXAgcmlnaHRfbWFwIH5mOihmdW4gfm9sZCBuZXdfbGVmdF9tYXAgbmV3X3JpZ2h0X21hcCAtPlxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBuZXdfbGVmdF9tYXAgaW5cbiAgICAgIGxldCBvbGRfbGVmdF9tYXAsIG9sZF9yaWdodF9tYXAsIG9sZF9vdXRwdXQgPVxuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICAgIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgaW5cbiAgICAgIGxldCBsZWZ0X2RpZmYgPVxuICAgICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX2xlZnRfbWFwIG5ld19sZWZ0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX2xlZnRcbiAgICAgIGluXG4gICAgICBsZXQgcmlnaHRfZGlmZiA9XG4gICAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfcmlnaHRfbWFwIG5ld19yaWdodF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgaW5cbiAgICAgICgqIFdlIG1lcmdlIHRoZSB0d28gc2lkZXMgb2YgdGhlIGRpZmZzIHRvZ2V0aGVyIHNvIHdlIGNhbiBtYWtlIHN1cmUgdG8gaGFuZGxlIGVhY2hcbiAgICAgICAgIGtleSBleGFjdGx5IG9uY2UuIFRoaXMgcmVsaWVzIG9uIHN5bW1ldHJpYyBkaWZmIGdpdmluZyBzb3J0ZWQgb3V0cHV0LiAqKVxuICAgICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAgIGxlZnRfZGlmZlxuICAgICAgICByaWdodF9kaWZmXG4gICAgICAgIH5jb21wYXJlOihmdW4gKGxlZnRfa2V5LCBfKSAocmlnaHRfa2V5LCBfKSAtPlxuICAgICAgICAgIGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkpXG4gICAgICB8PiBTZXF1ZW5jZS5mb2xkIH5pbml0Om9sZF9vdXRwdXQgfmY6KGZ1biBvdXRwdXQgZGlmZl9lbGVtZW50IC0+XG4gICAgICAgIGxldCBrZXkgPVxuICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgfCBMZWZ0IChrZXksIF8pIHwgUmlnaHQgKGtleSwgXykgLT4ga2V5XG4gICAgICAgICAgfCBCb3RoICgobGVmdF9rZXksIF8pLCAocmlnaHRfa2V5LCBfKSkgLT5cbiAgICAgICAgICAgIGFzc2VydCAoY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSA9IDApO1xuICAgICAgICAgICAgbGVmdF9rZXlcbiAgICAgICAgaW5cbiAgICAgICAgKCogVGhlc2UgdmFsdWVzIHJlcHJlc2VudCB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgZm9yIHRoZSBnaXZlbiBrZXkgaW4gdGhlIG5ld1xuICAgICAgICAgICBpbnB1dCBpbiB0aGUgbGVmdCBhbmQgcmlnaHQgbWFwLiAqKVxuICAgICAgICBsZXQgbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgPVxuICAgICAgICAgIGxldCBuZXdfZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgfCBCb3RoICgoXywgbGVmdF9kaWZmKSwgKF8sIHJpZ2h0X2RpZmYpKSAtPlxuICAgICAgICAgICAgbmV3X2RhdGEgbGVmdF9kaWZmLCBuZXdfZGF0YSByaWdodF9kaWZmXG4gICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+IG5ld19kYXRhIGxlZnRfZGlmZiwgTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXlcbiAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPiBNYXAuZmluZCBuZXdfbGVmdF9tYXAga2V5LCBuZXdfZGF0YSByaWdodF9kaWZmXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvdXRwdXRfZGF0YV9vcHQgPVxuICAgICAgICAgIG1hdGNoIGxlZnRfZGF0YV9vcHQsIHJpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSB4LCBOb25lIC0+IGYgfmtleSAoYExlZnQgeClcbiAgICAgICAgICB8IE5vbmUsIFNvbWUgeSAtPiBmIH5rZXkgKGBSaWdodCB5KVxuICAgICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZiB+a2V5IChgQm90aCAoeCwgeSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIG91dHB1dF9kYXRhX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgfCBTb21lIGRhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YSkpXG4gIDs7XG5cbiAgbGV0IGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChsaHMgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOihpbnB1dF9kYXRhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKGZfb3V0cHV0LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbGhzIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBhY2MgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFhY2MpIGluXG4gICAgbGV0IChvbl9pbm5lcl9jaGFuZ2UgOiBrZXk6J2tleSAtPiBmX291dHB1dCAtPiB1bml0KSA9XG4gICAgICBtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IGZ1biB+a2V5IGRhdGEgLT4gYWNjIDo9IE1hcC5zZXQgIWFjYyB+a2V5IH5kYXRhXG4gICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgZnVuIH5rZXkgb3B0IC0+XG4gICAgICAgICAgbGV0IG9sZCA9ICFhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgICA6PSAobWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG9sZCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb2xkIH5rZXkgfmRhdGEpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxoc19jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGxocyB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLm1ha2Vfc3RhbGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IE1hcC5yZW1vdmUgIWFjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICB8IGBSaWdodCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIE1hcC5maW5kX2V4biAhcHJldl9tYXAga2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuc2V0X2N1dG9mZiAoRS5Ob2RlLndhdGNoIG5vZGUpIGMpO1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgbGV0IHVzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgKGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihvbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgTWFwLnNldCBub2RlcyB+a2V5IH5kYXRhOihub2RlLCB1c2VyX2Z1bmN0aW9uX2RlcCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgTWFwX3R5cGUuRmlsdGVyX21hcFxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJyBNYXBfdHlwZS5NYXAgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcCcgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCcgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1lcmdlJyA/Y3V0b2ZmID9kYXRhX2VxdWFsX2xlZnQgP2RhdGFfZXF1YWxfcmlnaHQgbWFwMSBtYXAyIH5mID1cbiAgICBtZXJnZSA/ZGF0YV9lcXVhbF9sZWZ0ID9kYXRhX2VxdWFsX3JpZ2h0IG1hcDEgbWFwMiB+ZjooZnVuIH5rZXk6XyBkaWZmIC0+IFNvbWUgZGlmZilcbiAgICB8PiBmaWx0ZXJfbWFwaScgP2N1dG9mZiB+ZjooZnVuIH5rZXkgfmRhdGE6ZGlmZiAtPiBmIH5rZXkgZGlmZilcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGRhdGFfZXF1YWwgOiB2IC0+IHYgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8obGVmdF9yZXN1bHRfZXF1YWwgOiB2MSAtPiB2MSAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhyaWdodF9yZXN1bHRfZXF1YWwgOiB2MiAtPiB2MiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDoga2V5OidrZXkgLT4gZGF0YTp2IC0+IHYxICogdjIpXG4gICAgOiAoKCdrZXksIHYxLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgKiAoKCdrZXksIHYyLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dCBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGlucHV0X2NoYW5nZSA9XG4gICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICBtYXRjaCBNYXAuaXNfZW1wdHkgIXByZXZfbWFwLCBNYXAuaXNfZW1wdHkgbWFwIHdpdGhcbiAgICAgICAgICB8IHRydWUsIHRydWUgfCBmYWxzZSwgdHJ1ZSAtPiBlbXB0eV9tYXAsIGVtcHR5X21hcFxuICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICgqIE1hcHBpbmcgb24gYSBtYXAgaXMgd2F5IGZhc3RlciB0aGFuIHN5bW1ldHJpYyBkaWZmaW5nIGFuZCB0aGVuXG4gICAgICAgICAgICAgICBidWlsZGluZyB0aGUgbWFwcyB1cCBwaWVjZSBieSBwaWVjZSwgc28gd2UgZG8gdGhpcyB3aGVuZXZlciB3ZVxuICAgICAgICAgICAgICAgdHJhbnNpdGlvbiBmcm9tIFwiZW1wdHlcIiB0byBcInNvbWV0aGluZ1wiLCB3aGljaCB3aWxsIGFsbW9zdCBhbHdheXNcbiAgICAgICAgICAgICAgIGhhcHBlbiBvbiB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgIGxldCBsLCBfID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICBNYXAubWFwaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICAgICAgbGV0IF8sIHIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgfmluaXQ6KCFsZWZ0X2FjYywgIXJpZ2h0X2FjYylcbiAgICAgICAgICAgICAgfmY6KGZ1biAobGVmdCwgcmlnaHQpIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAocHJldiwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBwcmV2X2EsIHByZXZfYiA9IGYgfmtleSB+ZGF0YTpwcmV2IGluXG4gICAgICAgICAgICAgICAgICBsZXQgbmV3X2EsIG5ld19iID0gZiB+a2V5IH5kYXRhOm5ld18gaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgbGVmdF9yZXN1bHRfZXF1YWwgcHJldl9hIG5ld19hXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gbGVmdFxuICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOm5ld19hXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHJpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgcmlnaHRfcmVzdWx0X2VxdWFsIHByZXZfYiBuZXdfYlxuICAgICAgICAgICAgICAgICAgICB0aGVuIHJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOm5ld19iXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBsZWZ0IGtleSwgTWFwLnJlbW92ZSByaWdodCBrZXlcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBlbGVtZW50IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYiA9IGYgfmtleSB+ZGF0YTplbGVtZW50IGluXG4gICAgICAgICAgICAgICAgICBNYXAuc2V0IGxlZnQgfmtleSB+ZGF0YTphLCBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6YilcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFsZWZ0X2FjYyBsZWZ0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIGxlZnRfcmVzdWx0O1xuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIXJpZ2h0X2FjYyByaWdodCkgdGhlbiBFLk5vZGUubWFrZV9zdGFsZSByaWdodF9yZXN1bHQ7XG4gICAgICAgIGxlZnRfYWNjIDo9IGxlZnQ7XG4gICAgICAgIHJpZ2h0X2FjYyA6PSByaWdodDtcbiAgICAgICAgcHJldl9tYXAgOj0gbWFwKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpID9kYXRhX2VxdWFsID9sZWZ0X3Jlc3VsdF9lcXVhbCA/cmlnaHRfcmVzdWx0X2VxdWFsIGlucHV0IH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXQgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIGlucHV0XG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQgdW56aXAgP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgPVxuICAgIGxldCBkYXRhX2VxdWFsID1cbiAgICAgIE9wdGlvbi5tYXAyIGxlZnRfcmVzdWx0X2VxdWFsIHJpZ2h0X3Jlc3VsdF9lcXVhbCB+ZjooZnVuIGwgciAtPlxuICAgICAgICBUdXBsZTIuZXF1YWwgfmVxMTpsIH5lcTI6cilcbiAgICBpblxuICAgIHVuemlwX21hcGlcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6XG4gICAgICAgICAgICBrZXk6J2tleVxuICAgICAgICAgIC0+IGRhdGE6KHYsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAodjEsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQgKiAodjIsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgOiAoKCdrZXksIHYxLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgKiAoKCdrZXksIHYyLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dCBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcHJldl9ub2RlcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkgZGF0YSA9IGxlZnRfYWNjIDo9IE1hcC5zZXQgIWxlZnRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmlnaHRfb25faW5uZXJfY2hhbmdlIH5rZXkgZGF0YSA9IHJpZ2h0X2FjYyA6PSBNYXAuc2V0ICFyaWdodF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByZWMgaW5wdXRfY2hhbmdlID1cbiAgICAgIGxhenlcbiAgICAgICAgKEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9sZWZ0X2RlcCwgX3JpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBsZWZ0X2RlcCwgcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfZGVwO1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfZGVwO1xuICAgICAgICAgICAgICAgICAgIGxlZnRfYWNjIDo9IE1hcC5yZW1vdmUgIWxlZnRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICByaWdodF9hY2MgOj0gTWFwLnJlbW92ZSAhcmlnaHRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X2luY3IsIHJpZ2h0X2luY3IgPSBmIH5rZXkgfmRhdGE6KEUuTm9kZS53YXRjaCBub2RlKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgbGVmdF9pbmNyXG4gICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICByaWdodF9pbmNyXG4gICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBNYXAuc2V0XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KG5vZGUsIGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAsIHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbGV0IHBhaXIgPVxuICAgICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgbWFwXG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIH5jb21wYXJhdG9yIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCBrZXlzIG1hcCA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBhZGQgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5hZGQgYWNjIGtleSBpblxuICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LnJlbW92ZSBhY2Mga2V5IGluXG4gICAgICBsZXQgZGF0YV9lcXVhbCBfIF8gPSB0cnVlIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXQ6KFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdDooZW1wdHksIGVtcHR5KVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YTpkYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5zZXQgZmlyc3QgfmtleSB+ZGF0YSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5XG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnNldCBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLmFkZF9leG4gZmlyc3QgfmtleSB+ZGF0YSwgc2Vjb25kXG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBmaXJzdCwgTWFwLmFkZF9leG4gc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhOl8gKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5yZW1vdmUgc2Vjb25kIGtleSkpXG4gIDs7XG5cbiAgbGV0IGZsYXR0ZW4gc3RhdGUgbWFwID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgcmVzdWx0ID0gcmVmIChNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKSkgaW5cbiAgICBsZXQgbm9kZSA9IEUuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiAhcmVzdWx0KSBpblxuICAgIE1hcC5pdGVyaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhOmluY3IgLT5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICBub2RlXG4gICAgICAgIChFLkRlcGVuZGVuY3kuY3JlYXRlIGluY3Igfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgcmVzdWx0IDo9IE1hcC5zZXQgIXJlc3VsdCB+a2V5IH5kYXRhOmEpKSk7XG4gICAgRS5Ob2RlLndhdGNoIG5vZGVcbiAgOztcblxuICBsZXQgam9pbl93aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgfmNvbXBhcmF0b3IgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIG1hcF9pbmNyIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHJlc3VsdF9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IG9sZF9tYXBfb2ZfaW5jcnMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGN1cnJlbnRfZGVwZW5kZW5jaWVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJlc3VsdF9tYXApIGluXG4gICAgbGV0IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZSA9XG4gICAgICBsZXQgbmV3X2RlcCA9XG4gICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgZGF0YV9ub2RlIH5vbl9jaGFuZ2U6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgcmVzdWx0X21hcCA6PSBNYXAuc2V0ICFyZXN1bHRfbWFwIH5rZXkgfmRhdGEpXG4gICAgICBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCBuZXdfZGVwO1xuICAgICAgTWFwLnNldCBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOm5ld19kZXBcbiAgICBpblxuICAgIGxldCByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5ID1cbiAgICAgIGxldCBkZXAgPSBNYXAuZmluZF9leG4gY3VycmVudF9kZXBlbmRlbmNpZXMga2V5IGluXG4gICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnJlbW92ZSAhcmVzdWx0X21hcCBrZXk7XG4gICAgICBNYXAucmVtb3ZlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleVxuICAgIGluXG4gICAgbGV0IGxoc19jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIG1hcF9pbmNyIH5mOihmdW4gbWFwX29mX2luY3JzIC0+XG4gICAgICAgIGxldCBuZXdfZGVwZW5kZW5jeV9tYXAgPVxuICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICB+ZGF0YV9lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAhb2xkX21hcF9vZl9pbmNyc1xuICAgICAgICAgICAgbWFwX29mX2luY3JzXG4gICAgICAgICAgICB+aW5pdDohY3VycmVudF9kZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIH5mOihmdW4gY3VycmVudF9kZXBlbmRlbmNpZXMgKGtleSwgZGlmZikgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgXyAtPiByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5XG4gICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfbm9kZSAtPiBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGVcbiAgICAgICAgICAgICAgfCBgVW5lcXVhbCAoXywgZGF0YV9ub2RlKSAtPlxuICAgICAgICAgICAgICAgIHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfD4gYWRkX3N1Ym5vZGUgfmtleSB+ZGF0YV9ub2RlKVxuICAgICAgICBpblxuICAgICAgICBjdXJyZW50X2RlcGVuZGVuY2llcyA6PSBuZXdfZGVwZW5kZW5jeV9tYXA7XG4gICAgICAgIG9sZF9tYXBfb2ZfaW5jcnMgOj0gbWFwX29mX2luY3JzKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBsaHNfY2hhbmdlKTtcbiAgICBFLk5vZGUud2F0Y2ggcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGpvaW4gbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPiBqb2luX3dpdGhfY29tcGFyYXRvciBtYXAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIFNlcGFyYXRlX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgaW5wdXRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXMgOiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnQsICdjbXApIE1hcC50XG4gICAgICA7IG11dGFibGUgb3V0cHV0X21hcCA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnRcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgY29tcGFyYXRvciA9XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgeyBpbnB1dF9tYXAgPSBlbXB0eTsgZXhwZXJ0X25vZGVzID0gZW1wdHk7IG91dHB1dF9tYXAgPSBlbXB0eSB9XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfbG9va3VwX25vZGUgc3RhdGUgdCBrZXkgPVxuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gTWFwLmZpbmRfZXhuIHQuaW5wdXRfbWFwIGtleSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2VwYXJhdGUgaW5wdXRfbWFwIH5kYXRhX2VxdWFsID1cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXAgaW5cbiAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXRfbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IHN0YXRlID0gU2VwYXJhdGVfc3RhdGUuY3JlYXRlIGNvbXBhcmF0b3IgaW5cbiAgICAgIGxldCBvdXRwdXRfbWFwX25vZGUgPVxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgPVxuICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSAoTGF6eS5mb3JjZV92YWwgaW5wdXRfbWFwX2NoYW5nZWQpXG4gICAgICAgIGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgZGVwZW5kZW5jeVxuICAgICAgaW5cbiAgICAgICgqIFdlIHdhbnQgdG8gbWFrZSBub2RlcyBkZXBlbmQgb24gW2lucHV0X21hcF9jaGFuZ2VkXSBzbyB0aGF0IFtpbnB1dF9tYXBfY2hhbmdlZF1cbiAgICAgICAgIGlzIGFsbG93ZWQgdG8gbWFrZSB0aGVtIHN0YWxlLCBidXQgd2UgZG8gbm90IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGZvciBhbnlcbiAgICAgICAgIG90aGVyIHJlYXNvbi4gU28gd2UgbWFrZSBbaW5wdXRfbWFwX2NoYW5nZWRdIGEgdW5pdCBpbmNyZW1lbnRhbCAodGhhdCB0aGVyZWZvcmVcbiAgICAgICAgIG5ldmVyIGNoYW5nZXMpIGFuZCB0aGlzIHdheSBbb3V0cHV0X21hcF9ub2RlXSBhbmQgdGhlIGxvb2t1cCBub2RlcyB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlY29tcHV0ZWQgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IG1hZGUgc3RhbGUuXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBpbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgIGxldCBwcmV2X2lucHV0X21hcCA9IHN0YXRlLmlucHV0X21hcCBpblxuICAgICAgICAgICAgIGxldCBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXAgPVxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgcHJldl9pbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIH5pbml0OihzdGF0ZS5leHBlcnRfbm9kZXMsIHN0YXRlLm91dHB1dF9tYXApXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gKGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgb2xkX25vZGUgPSBNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuaW52YWxpZGF0ZSBvbGRfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgTWFwLnJlbW92ZSBleHBlcnRfbm9kZXMga2V5LCBNYXAucmVtb3ZlIG91dHB1dF9tYXAga2V5XG4gICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgX25ld192YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGVfbG9va3VwX25vZGUgaW5jcmVtZW50YWxfc3RhdGUgc3RhdGUga2V5XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgKCBNYXAuYWRkX2V4biBleHBlcnRfbm9kZXMgfmtleSB+ZGF0YTpub2RlXG4gICAgICAgICAgICAgICAgICAgICAsIE1hcC5hZGRfZXhuXG4gICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZGF0YTooSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSkgKVxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF9vbGRfdmFsdWUsIF9uZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlXG4gICAgICAgICAgICAgICAgICAgICAgIChNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXApXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBzdGF0ZS5pbnB1dF9tYXAgPC0gaW5wdXRfbWFwO1xuICAgICAgICAgICAgIHN0YXRlLmV4cGVydF9ub2RlcyA8LSBleHBlcnRfbm9kZXM7XG4gICAgICAgICAgICAgc3RhdGUub3V0cHV0X21hcCA8LSBvdXRwdXRfbWFwKSlcbiAgICAgIGluXG4gICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG91dHB1dF9tYXBfbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBvdXRwdXRfbWFwX25vZGUpXG4gIDs7XG5cbiAgKCogSnVzdCBmb3IgZGVyaXZpbmcgc3RydWN0dXJhbCBlcXVhbGl0eS4gKilcbiAgdHlwZSAnYSBtYXliZV9ib3VuZF9zdHJ1Y3R1cmFsbHkgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgICB8IEluY2wgb2YgJ2FcbiAgICB8IEV4Y2wgb2YgJ2FcbiAgICB8IFVuYm91bmRlZFxuICBbQEBkZXJpdmluZyBlcXVhbF1cblxuICBsZXQgc3VicmFuZ2VcbiAgICAgICAgKHR5cGUgayB2IGNtcCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwX2luY3IgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIHJhbmdlXG4gICAgPVxuICAgIHdpdGhfb2xkMiBtYXBfaW5jciByYW5nZSB+ZjooZnVuIH5vbGQgbWFwIHJhbmdlIC0+XG4gICAgICBsZXQgY29tcGFyZSA9IChNYXAuY29tcGFyYXRvciBtYXApLmNvbXBhcmUgaW5cbiAgICAgIGxldCBlcXVhbCBsIHIgPSBjb21wYXJlIGwgciA9IDAgaW5cbiAgICAgIGxldCAoID4gKSBhIGIgPSBjb21wYXJlIGEgYiA+IDBcbiAgICAgIGFuZCAoID49ICkgYSBiID0gY29tcGFyZSBhIGIgPj0gMCBpblxuICAgICAgbGV0IG1heWJlX2JvdW5kX2VxdWFsIGEgYiA6IGJvb2wgPSBlcXVhbF9tYXliZV9ib3VuZF9zdHJ1Y3R1cmFsbHkgZXF1YWwgYSBiIGluXG4gICAgICBsZXQgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4IDogYm9vbCA9XG4gICAgICAgIG1hdGNoIG1pbiwgbWF4IHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQsIChVbmJvdW5kZWQgfCBFeGNsIF8gfCBJbmNsIF8pIHwgKEV4Y2wgXyB8IEluY2wgXyksIFVuYm91bmRlZCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIHwgSW5jbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+IG1heFxuICAgICAgICB8IEV4Y2wgbWluLCBFeGNsIG1heCB8IEluY2wgbWluLCBFeGNsIG1heCB8IEV4Y2wgbWluLCBJbmNsIG1heCAtPiBtaW4gPj0gbWF4XG4gICAgICBpblxuICAgICAgbGV0IHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXkgOiBib29sID1cbiAgICAgICAgTWF5YmVfYm91bmQuaXNfbG93ZXJfYm91bmQgbWluIH5vZl86a2V5IH5jb21wYXJlXG4gICAgICAgICYmIE1heWJlX2JvdW5kLmlzX3VwcGVyX2JvdW5kIG1heCB+b2ZfOmtleSB+Y29tcGFyZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBFbXB0eSBuZXcgcmFuZ2UgbWVhbnMgZW1wdHkgbWFwICopXG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICB8IFNvbWUgKChtaW4sIG1heCkgYXMgcmFuZ2UpIC0+XG4gICAgICAgIGxldCBmcm9tX3NjcmF0Y2ggKCkgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOm1heCBpblxuICAgICAgICAobWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUsIF8pIC0+XG4gICAgICAgICAgICgqIG5vIG9sZCByYW5nZSAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAoXywgU29tZSAob2xkX21pbiwgb2xkX21heCksIF8pXG4gICAgICAgICAgIHdoZW4gcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heFxuICAgICAgICAgICAgIHx8IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXggLT5cbiAgICAgICAgICAgKCogZW1wdHkgb2xkIHJhbmdlIG9yIG9sZCByYW5nZSBkaXNqb2ludCB3aXRoIG5ldyAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAob2xkX21hcCwgU29tZSAoKG9sZF9taW4sIG9sZF9tYXgpIGFzIG9sZF9yYW5nZSksIG9sZF9yZXMpIC0+XG4gICAgICAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICAgICAgICgqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGtleSBpcyBpbiBib3RoIG5ldyBhbmQgb2xkIHJhbmdlcyAqKVxuICAgICAgICAgICAgIGxldCBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5ID1cbiAgICAgICAgICAgICAgIHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXlcbiAgICAgICAgICAgICAgICYmIHJhbmdlX2luY2x1ZGVzIH5taW46b2xkX21pbiB+bWF4Om9sZF9tYXgga2V5XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBBcHBseSBjaGFuZ2VzIHRvIGtleXMgd2hpY2ggYXJlIGluIHRoZSBpbnRlcnNlY3Rpb24gb2YgYm90aCByYW5nZXMuXG5cbiAgICAgICAgICAgICAgICBbb3V0c2lkZV0gaXMgdGhlIG51bWJlciBvZiB1cGRhdGVzIG91dHNpZGUgdGhlIHJhbmdlIGludGVyc2VjdGlvbiB0aGF0IHdlXG4gICAgICAgICAgICAgICAgdG9sZXJhdGUgYmVmb3JlIGdpdmluZyB1cCBhbmQgcmVjb25zdHJ1Y3RpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZS4gVGhpc1xuICAgICAgICAgICAgICAgIGlzIGFuIG9wdGltaXNhdGlvbiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBtYXAgY2hhbmdlcyBpbiBhIHZlcnkgYmlnIHdheSwgYXRcbiAgICAgICAgICAgICAgICB3aGljaCBwb2ludCBjb21wdXRpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZSBpcyBjaGVhcGVyLiAgKilcbiAgICAgICAgICAgICBsZXQgYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24gKG91dHNpZGUsIG1hcCkgKGtleSwgZGF0YSkgPVxuICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2VfaW50ZXJzZWN0aW9uIGtleVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gb3V0c2lkZSwgTWFwLnJlbW92ZSBtYXAga2V5XG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGEgfCBgVW5lcXVhbCAoXywgZGF0YSkgLT4gb3V0c2lkZSwgTWFwLnNldCBtYXAgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgb3V0c2lkZSA9IG91dHNpZGUgLSAxIGluXG4gICAgICAgICAgICAgICAgIGlmIEludC5PLihvdXRzaWRlIDwgMClcbiAgICAgICAgICAgICAgICAgdGhlbiByZXR1cm4gKGZyb21fc2NyYXRjaCAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZSBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBGaXJzdCB1cGRhdGUgdGhlIGtleXMgaW4gL2JvdGgvIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgbGV0IHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uID1cbiAgICAgICAgICAgICAgICgqIEN1dG9mZiB0aGUgYmlnIGRpZmYgY29tcHV0YXRpb24gaWYgd2UgcmVhY2ggTyh8c3VibWFwfCkgbnVtYmVyIG9mXG4gICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlICopXG4gICAgICAgICAgICAgICBsZXQgb3V0c2lkZV9jdXRvZmYgPSBNYXAubGVuZ3RoIG9sZF9yZXMgLyA0IGluXG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDoob3V0c2lkZV9jdXRvZmYsIG9sZF9yZXMpXG4gICAgICAgICAgICAgICAgIH5mOmFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICB8PiBzbmRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIFR1cGxlMi5lcXVhbFxuICAgICAgICAgICAgICAgICAgfmVxMTptYXliZV9ib3VuZF9lcXVhbFxuICAgICAgICAgICAgICAgICAgfmVxMjptYXliZV9ib3VuZF9lcXVhbFxuICAgICAgICAgICAgICAgICAgb2xkX3JhbmdlXG4gICAgICAgICAgICAgICAgICByYW5nZVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICgqIFRoZXJlIGFyZSBubyBrZXlzIHRvIHJlbW92ZSBhbmQgZXZlcnl0aGluZyBpbiByYW5nZSBpcyB1cGRhdGVkLiAqKVxuICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICgqIFJlbW92ZSBhbnkga2V5cyB3aGljaCBhcmUgbm90IGluIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZVxuICAgICAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgfmxvd2VyX2JvdW5kOm1pblxuICAgICAgICAgICAgICAgICAgIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoKiBBZGQgaW4gYW55IGtleXMgd2hpY2ggYXJlIGluIHRoZSBuZXcgcmFuZ2UgYnV0IG5vdCB0aGUgb2xkIHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgbGV0IG1hcF9hcHBlbmRfZXhuIGxvd2VyX3BhcnQgdXBwZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggTWFwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICAgICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW1wb3NzaWJsZSBjYXNlOiBCVUcgaW4gaW5jcl9tYXAubWwgc3VicmFuZ2VcIlxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgbG93ZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggb2xkX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbmJvdW5kZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICAgICAgICAgICAgICAgfCBFeGNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEluY2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgICB8IEluY2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooRXhjbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICBhbmQgdXBwZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggb2xkX21heCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbmJvdW5kZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICAgICAgICAgICAgICAgfCBFeGNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihJbmNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgICB8IEluY2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEV4Y2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBtYXBfYXBwZW5kX2V4blxuICAgICAgICAgICAgICAgICAgIGxvd2VyX3BhcnRcbiAgICAgICAgICAgICAgICAgICAobWFwX2FwcGVuZF9leG4gd2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSB1cHBlcl9wYXJ0KVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHdpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlKSkpKVxuICA7O1xuXG4gIGxldCByZWtleSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgbWFwX2luY3JcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBvdXRwdXQgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6KGYgfmtleSB+ZGF0YSkgfmRhdGEpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBvdXRwdXQgLT4gTWFwLnJlbW92ZSBvdXRwdXQgKGYgfmtleSB+ZGF0YSkpXG4gICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIG91dHB1dCAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgKE1hcC5jb21wYXJhdG9yIG91dHB1dCkuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIE1hcC5zZXQgb3V0cHV0IH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YVxuICAgICAgICBlbHNlIE1hcC5yZW1vdmUgb3V0cHV0IHByZXZfa2V5IHw+IE1hcC5hZGRfZXhuIH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YSlcbiAgOztcblxuICBsZXQgaW5kZXhfYnlpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmluZGV4ID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBpbm5lcl9jb21wYXJhdG9yIC0+XG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmFkZDooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLnVwZGF0ZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b25cbiAgICAgICAgICAgICAgICAgIGlubmVyX2tleVxuICAgICAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgICAgICAgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvclxuICAgICAgICAgICAgICB8IFNvbWUgaW5uZXJfbWFwIC0+IE1hcC5hZGRfZXhuIGlubmVyX21hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBvdXRlcl9tYXAgLT5cbiAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5OmlubmVyX2tleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dGVyX21hcFxuICAgICAgICAgIHwgU29tZSBvdXRlcl9rZXkgLT5cbiAgICAgICAgICAgIE1hcC5jaGFuZ2Ugb3V0ZXJfbWFwIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJCVUc6IEhpdCBzdXBwb3NlZGx5IGltcG9zc2libGUgY2FzZSBpbiBJbmNyX21hcC5pbmRleF9ieVwiXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJfbWFwID0gTWFwLnJlbW92ZSBpbm5lcl9tYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGlubmVyX21hcCB0aGVuIE5vbmUgZWxzZSBTb21lIGlubmVyX21hcCkpKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvciB+aW5kZXggPVxuICAgIGluZGV4X2J5aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvciB+aW5kZXg6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gaW5kZXggZGF0YSlcbiAgOztcblxuXG4gICgqKiBGaW5kIHR3byBrZXlzIGluIG1hcCBieSBpbmRleCwgTyhuKS4gV2UgdXNlIGp1c3Qgb25lIGZvbGQgKHR3byBNYXAubnRoIHdvdWxkIHVzZSB0d28pXG4gICAgICBhbmQgb3B0aW1pemUgZm9yIGtleXMgY2xvc2UgdG8gZWl0aGVyIGJlZ2lubmluZyBvciBlbmQgYnkgdXNpbmcgZWl0aGVyIGZvbGQgb3JcbiAgICAgIGZvbGRfcmlnaHQuXG4gICopXG4gIG1vZHVsZSBLZXlfc3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAnayB0ID1cbiAgICAgIHwgS25vd24gb2YgJ2tcbiAgICAgIHwgS25vd25fbm9uZVxuICAgICAgfCBVbmtub3duXG5cbiAgICBsZXQgaXNfa25vd24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgVW5rbm93biB8IEtub3duX25vbmUgLT4gTm9uZVxuICAgICAgfCBLbm93biBrIC0+IFNvbWUga1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgKHR5cGUgaykgfmZyb20gfnRvXyAobWFwIDogKGssIF8sIF8pIE1hcC50KVxuICAgIDogKGsgKiBrIG9wdGlvbikgb3B0aW9uXG4gICAgPVxuICAgIGxldCBvcGVuIEtleV9zdGF0dXMgaW5cbiAgICBsZXQgbGVuID0gTWFwLmxlbmd0aCBtYXAgaW5cbiAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPj0gKSBmcm9tIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGVuZF9rZXkgPSBpZiBJbnQuKCA+PSApIHRvXyBsZW4gdGhlbiBLbm93bl9ub25lIGVsc2UgVW5rbm93biBpblxuICAgIGxldCBmaW5kX2tleXMgZm9sZCB+c3RhcnRfcG9zIH5hZHZhbmNlX3BvcyA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIG1hcFxuICAgICAgICAgIH5pbml0OihiZWdpbl9rZXksIGVuZF9rZXksIHN0YXJ0X3BvcylcbiAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6XyAoYmVnaW5fa2V5LCBlbmRfa2V5LCBwb3MpIC0+XG4gICAgICAgICAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPSApIHBvcyBmcm9tIHRoZW4gS25vd24ga2V5IGVsc2UgYmVnaW5fa2V5IGluXG4gICAgICAgICAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID0gKSBwb3MgdG9fIHRoZW4gS25vd24ga2V5IGVsc2UgZW5kX2tleSBpblxuICAgICAgICAgICAgaWYgaXNfa25vd24gYmVnaW5fa2V5ICYmIGlzX2tub3duIGVuZF9rZXlcbiAgICAgICAgICAgIHRoZW4gcmV0dXJuIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcylcbiAgICAgICAgICAgIGVsc2UgYmVnaW5fa2V5LCBlbmRfa2V5LCBhZHZhbmNlX3BvcyBwb3MpKVxuICAgIGluXG4gICAgbGV0IGJlZ2luX2tleSwgZW5kX2tleSwgXyA9XG4gICAgICAoKiBTZWFyY2hpbmcgZnJvbSBsZWZ0IHRha2VzIE8odG9fKSwgZnJvbSByaWdodCAtIE8obGVuIC0gZnJvbSksIHNvIHNlbGVjdCB0aGVcbiAgICAgICAgIHNtYWxsZXIgb25lLiAqKVxuICAgICAgaWYgdG9fIDwgbGVuIC0gZnJvbVxuICAgICAgdGhlbiBmaW5kX2tleXMgTWFwLmZvbGQgfnN0YXJ0X3BvczowIH5hZHZhbmNlX3BvczooZnVuIHBvcyAtPiBwb3MgKyAxKVxuICAgICAgZWxzZSBmaW5kX2tleXMgTWFwLmZvbGRfcmlnaHQgfnN0YXJ0X3BvczoobGVuIC0gMSkgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyAtIDEpXG4gICAgaW5cbiAgICBPcHRpb24ubWFwIChLZXlfc3RhdHVzLnRvX29wdGlvbiBiZWdpbl9rZXkpIH5mOihmdW4gYmVnaW5fa2V5IC0+XG4gICAgICBiZWdpbl9rZXksIEtleV9zdGF0dXMudG9fb3B0aW9uIGVuZF9rZXkpXG4gIDs7XG5cbiAgbGV0IG50aF9mcm9tX2VpdGhlcl9zaWRlICh0eXBlIGspIG4gKG1hcCA6IChrLCBfLCBfKSBNYXAudCkgOiBrIG9wdGlvbiA9XG4gICAgT3B0aW9uLm1hcCB+Zjpmc3QgKGZpbmRfa2V5X3JhbmdlX2xpbmVhciB+ZnJvbTpuIH50b186biBtYXApXG4gIDs7XG5cbiAgKCoqIEZpbmQga2V5IFtieV0gcG9zaXRpb25zIGVhcmxpZXIvbGF0ZXIgaW4gYSBtYXAuIFJldHVybnMgbm9uZSBpZiBvdXQgb2YgYm91bmRzLiAqKVxuICBsZXQgcmVjIG9mZnNldCAoa2V5IDogJ2spIChtYXAgOiAoJ2ssIF8sIF8pIE1hcC50KSB+YnkgOiAnayBvcHRpb24gPVxuICAgIGlmIEludC4oID0gKSBieSAwXG4gICAgdGhlbiBTb21lIGtleVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNsb3Nlc3RfZGlyLCBhZGQgPVxuICAgICAgICBpZiBJbnQuKCA8ICkgYnkgMCB0aGVuIGBMZXNzX3RoYW4sIDEgZWxzZSBgR3JlYXRlcl90aGFuLCAtMVxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1hcC5jbG9zZXN0X2tleSBtYXAgY2xvc2VzdF9kaXIga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKGtleSwgXykgLT4gb2Zmc2V0IGtleSBtYXAgfmJ5OihieSArIGFkZCkpXG4gIDs7XG5cbiAgKCoqIEZpbmQgaG93IHdlIG5lZWQgdG8gbW92ZSBba2V5XSBpZiBbY2hhbmdlZF9rZXldIGNoYW5nZWQgaW4gdGhlIGdpdmVuXG4gICAgICB3YXkgKilcbiAgbGV0IGZpbmRfb2Zmc2V0IH5jb21wYXJlIH5rZXkgfmNoYW5nZWRfa2V5IGNoYW5nZSA9XG4gICAgaWYgSW50LiggPCApIChjb21wYXJlIGNoYW5nZWRfa2V5IGtleSkgMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgIHwgYExlZnQgXyAtPiAxXG4gICAgICB8IGBSaWdodCBfIC0+IC0xXG4gICAgICB8IF8gLT4gMClcbiAgICBlbHNlIDBcbiAgOztcblxuICBsZXQgcmFua1xuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIChtYXAgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChrZXkgOiAoaywgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IHNhbWVfa2V5IGEgYiA9IGNvbXBhcmVfa2V5IGEgYiA9IDAgaW5cbiAgICAgIGxldCB3aGVuX2tleV9jaGFuZ2VkIH5tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgbmV3X2tleSBvbGRfa2V5IDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiB0aGUgbmV3IGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCBrZXksIGZpbmQgdGhlIHNpemUgb2YgdGhlIG1hcCBzdWJyYW5nZVxuICAgICAgICAgICAgIGJldHdlZW4gdGhlbSBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG5ld19rZXksIEV4Y2wgb2xkX2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rIC0gTWFwLmxlbmd0aCBzdWJyYW5nZSAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIE90aGVyd2lzZSwgdGhlIG5ldyBrZXkgaXMgbGFyZ2VyIHRoYW4gdGhlIG9sZCBrZXksIHNvIGZpbmQgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgICAgICAgbWFwIHN1YnJhbmdlIGJldHdlZW4gdGhlbSBhbmQgYWRkIGl0IHRvIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgb2xkX2tleSwgRXhjbCBuZXdfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgKyBNYXAubGVuZ3RoIHN1YnJhbmdlICsgMSlcbiAgICAgIGluXG4gICAgICBsZXQgd2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5IH5vbGRfcmFuayA9XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgKCogV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZGF0YSwgc28gb3B0aW1pemUgdGhlc2UgY2hlY2tzICopXG4gICAgICAgICAgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgbmV3X21hcFxuICAgICAgICAgIH5pbml0Om9sZF9yYW5rXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGRpZmZfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyAtIDFcbiAgICAgICAgICAgIHwgYFJpZ2h0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyArIDFcbiAgICAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwcm9jZXNzIH4ob2xkIDogKChrLCB2LCBfKSBNYXAudCAqIF8gKiBfKSBvcHRpb24pIG5ld19tYXAgKG5ld19rZXkgOiBrKSA9XG4gICAgICAgIGlmIG5vdCAoTWFwLm1lbSBuZXdfbWFwIG5ld19rZXkpXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgICgqIElmIHRoZSBtYXAgYW5kIGtleSBhcmUgdGhlIHNhbWUsIGp1c3QgcmV1c2UgdGhlIG9sZCByYW5rICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaylcbiAgICAgICAgICAgIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgJiYgc2FtZV9rZXkgb2xkX2tleSBuZXdfa2V5IC0+IG9sZF9yYW5rXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBpcyB0aGUgc2FtZSBidXQgdGhlIGtleSBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwIC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX2tleV9jaGFuZ2VkIH5tYXA6bmV3X21hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgdGhlIGtleSBpcyB0aGUgc2FtZSBidXQgdGhlIG1hcCBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHNhbWVfa2V5IG5ld19rZXkgb2xkX2tleSAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5Om5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIGJvdGggdGhlIG1hcCBhbmQgdGhlIGtleSBjaGFuZ2VkLCB0aGlzIGNhbiBiZSBzaW11bGF0ZWQgYXMgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5naW5nIGZvbGxvd2VkIGJ5IHRoZSBrZXkgY2hhbmdpbmcgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIC0+XG4gICAgICAgICAgICAoKiBXZSBjYWxsIFtwcm9jZXNzXSByZWN1cnNpdmVseSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmdcbiAgICAgICAgICAgICAgIFt3aGVuX21hcF9jaGFuZ2VkXSBmb2xsb3dlZCBieSBbd2hlbl9rZXlfY2hhbmdlZF0gc2luY2UgaXQgbWlnaHQgYmUgdGhlXG4gICAgICAgICAgICAgICBjYXNlIHRoYXQgW29sZF9rZXldIGlzIGluIFtvbGRfbWFwXSBhbmQgW25ld19rZXldIGlzIGluIFtuZXdfbWFwXSwgYnV0XG4gICAgICAgICAgICAgICBbb2xkX2tleV0gaXMgbm90IGluIFtuZXdfbWFwXS4gKilcbiAgICAgICAgICAgIGxldCBvbGRfcmFuayA9XG4gICAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykpIG5ld19tYXAgb2xkX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAobmV3X21hcCwgb2xkX2tleSwgb2xkX3JhbmspKSBuZXdfbWFwIG5ld19rZXlcbiAgICAgICAgICAoKiBJZiB0aGUgcHJldmlvdXMga2V5IHdhcyBub3QgaW4gdGhlIG1hcCBvciB0aGlzIGlzIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLFxuICAgICAgICAgICAgIGNvbXB1dGUgdGhlIHJhbmsgZnJvbSBzY3JhdGNoICopXG4gICAgICAgICAgfCBTb21lIChfLCBfLCBOb25lKSB8IE5vbmUgLT4gTWFwLnJhbmsgbmV3X21hcCBuZXdfa2V5KVxuICAgICAgaW5cbiAgICAgIHdpdGhfb2xkMiBtYXAga2V5IH5mOnByb2Nlc3MpXG4gIDs7XG5cbiAgKCoqIFJhbmdlIG1hcCBieSBpbmRpY2VzICopXG4gIGxldCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgICAgICh0eXBlIGsgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcCA6ICgoaywgXywgXykgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChyYW5nZSA6IChpbnQgTWF5YmVfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICBsZXQgZmluZF9rZXlfcmFuZ2UgKHJhbmdlIDogKGludCAqIGludCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgIDogKChrICogayBvcHRpb24pIG9wdGlvbiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgPVxuICAgICAgd2l0aF9vbGQyIG1hcCByYW5nZSB+ZjooZnVuIH5vbGQgbWFwIChmcm9tLCB0b18pIC0+XG4gICAgICAgICgqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBubyBrZXlzLCBvbmx5IGJlZ2luIGtleSwgb3IgYmVnaW4gYW5kIGVuZCBrZXlzLlxuICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGtleXMgYXQgW2Zyb21dIGFuZCBbdG9fXSBwb3NpdGlvbnMgaW4gdGhlIG1hcCwgb3IgTm9uZSBpZiB0aGVcbiAgICAgICAgICAgaW5kaWNlcyBhcmUgdG9vIGJpZy4gQXMgYWx3YXlzIFswIDw9IGZyb20gJiYgZnJvbSA8PSB0b19dLCB0aGVyZSBpcyBub1xuICAgICAgICAgICBwb3NzaWJpbGl0eSBvZiBvbmx5IFt0b19dIGJlaW5nIGEgdmFsaWQgcG9zaXRpb24uXG4gICAgICAgICopXG4gICAgICAgIGlmIEludC4oIDwgKSB0b18gZnJvbSB8fCBJbnQuKCA8ICkgZnJvbSAwXG4gICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJbnZhbGlkIGluZGljZXNcIiAoZnJvbSA6IGludCkgKHRvXyA6IGludCldO1xuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIChvbGRfZnJvbSwgb2xkX3RvKSwgU29tZSAoYmVnaW5fa2V5LCBlbmRfa2V5X29wdCkpIC0+XG4gICAgICAgICAgbGV0IGZpbmRfb2Zmc2V0ID0gZmluZF9vZmZzZXQgfmNvbXBhcmU6KE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfYmVnaW4gPSBmcm9tIC0gb2xkX2Zyb20gaW5cbiAgICAgICAgICBsZXQgcmFuZ2Vfb2Zmc2V0X2VuZCA9IHRvXyAtIG9sZF90byBpblxuICAgICAgICAgIGxldCBhZGp1c3RfYW5kX29mZnNldCB+Ynkga2V5ID1cbiAgICAgICAgICAgIGxldCBieSA9IGJ5ICsgaWYgYnkgPj0gMCAmJiBub3QgKE1hcC5tZW0gbWFwIGtleSkgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgb2Zmc2V0IGtleSBtYXAgfmJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGtleXMgY2hhbmdpbmcgYW5kIG5vdCB0aGUgZGF0YSwgc28gW2RhdGFfZXF1YWxdIGhlcmVcbiAgICAgICAgICAgICBjYW4gYmUgYWx3YXlzIHRydWUgKilcbiAgICAgICAgICBsZXQgZGlmZiB+aW5pdCB+ZiA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKSBvbGRfbWFwIG1hcCB+aW5pdCB+ZlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJlZ2luX2tleV9vcHQsIGVuZF9rZXlfb3B0ID1cbiAgICAgICAgICAgIG1hdGNoIGVuZF9rZXlfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBlbmRfa2V5IC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luLCBtYXBfb2Zmc2V0X2VuZCA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDooMCwgMCkgfmY6KGZ1biAob2Zmc2V0X2JlZ2luLCBvZmZzZXRfZW5kKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAoIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAsIG9mZnNldF9lbmQgKyBmaW5kX29mZnNldCB+a2V5OmVuZF9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UgKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBhZGp1c3RfYW5kX29mZnNldCBiZWdpbl9rZXkgfmJ5OihtYXBfb2Zmc2V0X2JlZ2luICsgcmFuZ2Vfb2Zmc2V0X2JlZ2luKVxuICAgICAgICAgICAgICAsIGFkanVzdF9hbmRfb2Zmc2V0IGVuZF9rZXkgfmJ5OihtYXBfb2Zmc2V0X2VuZCArIHJhbmdlX29mZnNldF9lbmQpIClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgbWFwX29mZnNldF9iZWdpbiA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDowIH5mOihmdW4gb2Zmc2V0X2JlZ2luIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgbnRoX2Zyb21fZWl0aGVyX3NpZGUgdG9fIG1hcCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgYmVnaW5fa2V5X29wdCk7XG4gICAgICAgICAgYXNzZXJ0IChPcHRpb24uZm9yX2FsbCB+ZjooTWFwLm1lbSBtYXApIGVuZF9rZXlfb3B0KTtcbiAgICAgICAgICBPcHRpb24ubWFwIGJlZ2luX2tleV9vcHQgfmY6KGZ1biBiZWdpbl9rZXkgLT4gYmVnaW5fa2V5LCBlbmRfa2V5X29wdClcbiAgICAgICAgfCBOb25lIHwgU29tZSAoXywgXywgTm9uZSkgLT5cbiAgICAgICAgICAoKiBPbiBmaXJzdCBydW4gKHdoZW4gd2UgaGF2ZSB0bykgb3Igd2hlbiBib3RoIHRoZSBrZXlzIGFyZSBub25lLCBydW4gTyhuKVxuICAgICAgICAgICAgIHNjYW4uIFRoaXMgaXMgZmluZSBmb3Iga2V5cy1hcmUtbm9uZSBjYXNlIGFzIGl0IGhhcHBlbnMgd2hlbiB0aGUgcG9zaXRpb25zXG4gICAgICAgICAgICAgYXJlIHBhc3QgZW5kIG9mIHRoZSBtYXAsIHNvIHRoZXkgc2hvdWxkbid0IGJlIHRvbyBmYXIgZnJvbSBlbmQgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5nZXMsIGFuZCBbZmluZF9rZXlfcmFuZ2VfbGluZWFyXSBpcyBmYXN0IGluIHN1Y2ggY2FzZS4gKilcbiAgICAgICAgICBmaW5kX2tleV9yYW5nZV9saW5lYXIgbWFwIH5mcm9tIH50b18pXG4gICAgaW5cbiAgICAoKiBIYW5kbGUgZGlmZmVyZW50IE1heWJlX2JvdW5kIGNhc2VzIGFuZCBjYWxsIGZpbmRfa2V5X3JhbmdlIGlmIG5lY2Vzc2FyeS4gSXQnc1xuICAgICAgIG5pY2VyIHRvIGRvIHRoaXMgaGVyZSBhcyBvcHBvc2VkIHRvIG1ha2luZyBmaW5kX2tleV9yYW5nZSBldmVuIG1vcmUgY29tcGxpY2F0ZWQgKilcbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0ICggPj4+ICkgbmV3XyBib3VuZCA9IE1heWJlX2JvdW5kLm1hcCB+ZjooZnVuIF8gLT4gbmV3XykgYm91bmQgaW5cbiAgICBsZXQgcmV0dXJuID0gSW5jcmVtZW50YWwucmV0dXJuIChJbmNyZW1lbnRhbC5zdGF0ZSBtYXApIGluXG4gICAgbGV0IGtleV9yYW5nZSA9XG4gICAgICBtYXRjaCVwYXR0ZXJuX2JpbmQgcmFuZ2Ugd2l0aFxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICByZXR1cm4gKFNvbWUgKE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkKSlcbiAgICAgIHwgKCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpXG4gICAgICAgICwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSApIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggbCB1KVxuICAgICAgICBhbmQgbGIgPSBsYlxuICAgICAgICBhbmQgdWIgPSB1YiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYmVnaW5fa2V5LCBTb21lIGVuZF9rZXkpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIGVuZF9rZXkgPj4+IHViKVxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIE5vbmUpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIGwpXG4gICAgICAgIGFuZCBsYiA9IGxiIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKGtleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsICgoTWF5YmVfYm91bmQuSW5jbCB1IHwgTWF5YmVfYm91bmQuRXhjbCB1KSBhcyB1YikgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCB1IHUpXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKFVuYm91bmRlZCwga2V5ID4+PiB1YilcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIGluXG4gICAgc3VicmFuZ2UgP2RhdGFfZXF1YWwgbWFwIGtleV9yYW5nZVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2VcbiAgICA6IHR5cGUgazEgazIgdiBrMV9jbXAgazJfY21wIHN0YXRlX3dpdG5lc3MuXG4gICAgICA/ZGF0YV9lcXVhbDoodiAtPiB2IC0+IGJvb2wpXG4gICAgICAtPiAoazIsIGsyX2NtcCkgTWFwLmNvbXBhcmF0b3JcbiAgICAgIC0+ICgoazEsIChrMiwgdiwgazJfY21wKSBNYXAudCwgazFfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgLT4gKChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGZ1biA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKSBrMl9jb21wYXJhdG9yIG0gLT5cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtIChmdW4gazFfY29tcGFyYXRvciAtPlxuICAgICAgICBsZXQgdXBkYXRlXG4gICAgICAgICAgOiAga2V5OmsxIC0+IG9sZF9kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudCAtPiBuZXdfZGF0YTooazIsIHYsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgICAtPiAoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudFxuICAgICAgICAgID1cbiAgICAgICAgICBmdW4gfmtleTprMSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgb2xkX2RhdGFcbiAgICAgICAgICAgICAgbmV3X2RhdGFcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrMiwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIE1hcC5jaGFuZ2UgYWNjIGsyIH5mOihmdW4gYWNjX2lubmVyIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjX2lubmVyID1cbiAgICAgICAgICAgICAgICAgICAgTWFwLmNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZGVmYXVsdDooTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6azFfY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgICAgICAgazFcbiAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIF8gLT4gdmFsdWUpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGFjY19pbm5lciB0aGVuIE5vbmUgZWxzZSBTb21lIGFjY19pbm5lcikpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGQgfmtleSB+ZGF0YSA9XG4gICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOihNYXAuZW1wdHkgazJfY29tcGFyYXRvcikgfm5ld19kYXRhOmRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6ZGF0YSB+bmV3X2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICBpblxuICAgICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICAgIG1cbiAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICB+YWRkXG4gICAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VfYnlcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wIGNvbWJpbmVkX2tleSBjb21iaW5lZF9jbXApXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6XG4gICAgICAgICAgICgob3V0ZXJfa2V5LCAoaW5uZXJfa2V5LCBfLCBpbm5lcl9jbXApIE1hcC50LCBvdXRlcl9jbXApIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KG1lcmdlX2tleXMgOiBvdXRlcl9rZXkgLT4gaW5uZXJfa2V5IC0+IGNvbWJpbmVkX2tleSlcbiAgICAgICAgfihjb21wYXJhdG9yIDogKGNvbWJpbmVkX2tleSwgY29tYmluZWRfY21wKSBNYXAuY29tcGFyYXRvcilcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBjb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5zZXQgYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGE6bmV3X2RhdGEpXG4gICAgICB+YWRkOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuYWRkX2V4biBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLnJlbW92ZSBhY2MgKG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlXG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcClcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH5jb21wYXJhdG9yOihpbm5lcl9jb21wYXJhdG9yIDogKGlubmVyX2tleSwgaW5uZXJfY21wKSBNYXAuY29tcGFyYXRvcilcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIChmdW4gb3V0ZXJfY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG1vZHVsZSBDbXAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gb3V0ZXJfa2V5ICogaW5uZXJfa2V5XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gKG91dGVyX2NtcCwgaW5uZXJfY21wKSBUdXBsZTIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPVxuICAgICAgICAgIGxldCBpbm5lcl9jb21wYXJhdG9yID1cbiAgICAgICAgICAgIGxldCBtb2R1bGUgTSA9ICh2YWwgaW5uZXJfY29tcGFyYXRvcikgaW5cbiAgICAgICAgICAgIE0uY29tcGFyYXRvclxuICAgICAgICAgIGluXG4gICAgICAgICAgVHVwbGUyLmNvbXBhcmF0b3Igb3V0ZXJfY29tcGFyYXRvciBpbm5lcl9jb21wYXJhdG9yXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICAgIGluXG4gICAgICBjb2xsYXBzZV9ieVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+bWVyZ2Vfa2V5czpUdXBsZTIuY3JlYXRlXG4gICAgICAgIH5jb21wYXJhdG9yOihtb2R1bGUgQ21wKSlcbiAgOztcblxuICBsZXQgZXhwYW5kID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5vdXRlcl9jb21wYXJhdG9yIH5pbm5lcl9jb21wYXJhdG9yID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IG5ld19kYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuc2V0IG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YTpuZXdfZGF0YSkpXG4gICAgICB+YWRkOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLmFkZF9leG4gbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLmNoYW5nZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIG1hcCAtPlxuICAgICAgICAgICAgbGV0IG1hcCA9IE1hcC5yZW1vdmUgbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKG5vdCAoTWFwLmlzX2VtcHR5IG1hcCkpIG1hcCkpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6MFxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCAtIDEgZWxzZSBjb3VudClcbiAgOztcblxuICBsZXQgY291bnQgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGNvdW50aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCAoY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mKSB+ZjooZnVuIGNvdW50IC0+IGNvdW50IDw+IDApXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZXhpc3RzaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHN1bVxuICAgICAgICAodHlwZSB1KVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOiAoKF8sIF8sIF8pIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAobW9kdWxlIEdyb3VwIDogQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSB1KVxuICAgICAgICB+ZlxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDpHcm91cC56ZXJvXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggKyApIGFjYyAoZiB2KSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCAtICkgYWNjIChmIHYpKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICAoY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxuICAgICAgfmY6KGZ1biBjb3VudCAtPiBjb3VudCA9IDApXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGZvcl9hbGxpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyID0gZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICB0eXBlICgndiwgJ3cpIGVudHJ5ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF92YWx1ZSA6ICd2IG9wdGlvblxuICAgICAgOyBub2RlIDogKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICAoKiBXZSBtYXkgaGF2ZSBtdWx0aXBsZSBlbnRyaWVzIHBlciBrZXkgaWYgbm9kZXMgYmVjb21lIG5lY2Vzc2FyeSBhZ2FpbiBhZnRlciBiZWluZ1xuICAgICAgICAgcmVtb3ZlZC4gKilcbiAgICAgIDsgbXV0YWJsZSBsb29rdXBfZW50cmllcyA6ICgnaywgKCd2LCAndykgZW50cnkgbGlzdCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgdXBkYXRlcl9ub2RlIDogKHVuaXQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICA7IHNjb3BlIDogJ3cgSW5jcmVtZW50YWwuU2NvcGUudFxuICAgICAgfVxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgndiwgJ3cpIHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MsICd3KSB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGlucHV0X21hcCB+Y29tcGFyYXRvciA9XG4gICAgICBsZXQgcmVjIHNlbGYgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGxldCB1cGRhdGVyX25vZGUgPVxuICAgICAgICAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dF9tYXAgfmY6KGZ1biBpbnB1dF9tYXAgLT5cbiAgICAgICAgICAgICAgIGxldCAobGF6eSBzZWxmKSA9IHNlbGYgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwXG4gICAgICAgICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICB+aW5pdDooKVxuICAgICAgICAgICAgICAgICB+ZjooZnVuICgpIChrZXksIGNoYW5nZWRfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBNYXAuZmluZF9tdWx0aSBzZWxmLmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBlbnRyaWVzIH5mOihmdW4gZW50cnkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICA8LSAobWF0Y2ggY2hhbmdlZF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld192YWx1ZSB8IGBVbmVxdWFsIChfLCBuZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBuZXdfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBlbnRyeS5ub2RlKSk7XG4gICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcCA8LSBpbnB1dF9tYXApXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICAgICB7IHNhdmVkX21hcCA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IGxvb2t1cF9lbnRyaWVzID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgdXBkYXRlcl9ub2RlXG4gICAgICAgICAgIDsgc2NvcGUgPSBJbmNyZW1lbnRhbC5TY29wZS5jdXJyZW50IChJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXApICgpXG4gICAgICAgICAgIH0pXG4gICAgICBpblxuICAgICAgTGF6eS5mb3JjZSBzZWxmXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2xpbmtfZW50cnkgdCBlbnRyeSB+a2V5IH5pc19ub3dfb2JzZXJ2YWJsZSA9XG4gICAgICBsZXQgKGxhenkgZW50cnkpID0gZW50cnkgaW5cbiAgICAgIGxldCBjdXJyZW50X2VudHJpZXMgPSBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgbGV0IGlzX2xpbmtlZCA9IExpc3QuZXhpc3RzIGN1cnJlbnRfZW50cmllcyB+ZjoocGh5c19lcXVhbCBlbnRyeSkgaW5cbiAgICAgIGlmIEJvb2wuZXF1YWwgaXNfbGlua2VkIGlzX25vd19vYnNlcnZhYmxlXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGlmIGlzX25vd19vYnNlcnZhYmxlXG4gICAgICB0aGVuXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gTWFwLnVwZGF0ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgKG90aGVyX2VudHJ5IDo6IF8gYXMgb3RoZXJfZW50cmllcykgLT5cbiAgICAgICAgICAgICgqIFVwZGF0ZSB0aGlzIGVudHJ5J3MgdmFsdWUgdG8gYmUgY3VycmVudC4gKilcbiAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlIDwtIG90aGVyX2VudHJ5LnNhdmVkX3ZhbHVlO1xuICAgICAgICAgICAgZW50cnkgOjogb3RoZXJfZW50cmllc1xuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgW10gLT5cbiAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlIDwtIE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleTtcbiAgICAgICAgICAgIFsgZW50cnkgXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV3X2VudHJpZXMgPVxuICAgICAgICAgIExpc3QuZmlsdGVyIGN1cnJlbnRfZW50cmllcyB+ZjooZnVuIHggLT4gbm90IChwaHlzX2VxdWFsIGVudHJ5IHgpKVxuICAgICAgICBpblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIChpZiBMaXN0LmlzX2VtcHR5IG5ld19lbnRyaWVzXG4gICAgICAgICAgICB0aGVuIE1hcC5yZW1vdmUgdC5sb29rdXBfZW50cmllcyBrZXlcbiAgICAgICAgICAgIGVsc2UgTWFwLnNldCB0Lmxvb2t1cF9lbnRyaWVzIH5rZXkgfmRhdGE6bmV3X2VudHJpZXMpKVxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9jcmVhdGVfbm9kZSB0IGtleSA9XG4gICAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSB0LnVwZGF0ZXJfbm9kZSBpblxuICAgICAgSW5jcmVtZW50YWwuU2NvcGUud2l0aGluIGluY3JlbWVudGFsX3N0YXRlIHQuc2NvcGUgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsZXQgcmVjIGVudHJ5ID1cbiAgICAgICAgICBsYXp5XG4gICAgICAgICAgICB7IHNhdmVkX3ZhbHVlID0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5XG4gICAgICAgICAgICA7IG5vZGUgPVxuICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxfc3RhdGVcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gKGZvcmNlIGVudHJ5KS5zYXZlZF92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooc2xvd19wYXRoX2xpbmtfZW50cnkgdCBlbnRyeSB+a2V5KVxuICAgICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgKGxhenkgZW50cnkpID0gZW50cnkgaW5cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgICBlbnRyeS5ub2RlXG4gICAgICAgICAgKEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSB0LnVwZGF0ZXJfbm9kZSk7XG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGUpXG4gICAgOztcblxuICAgIGxldCBmaW5kIHQga2V5ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IHdpdGhcbiAgICAgIHwgZW50cnkgOjogXyAtPiBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlXG4gICAgICB8IFtdIC0+IHNsb3dfcGF0aF9jcmVhdGVfbm9kZSB0IGtleVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRm9yX2RlYnVnID0gc3RydWN0XG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfZW50cnkgc2V4cF9vZl92YWx1ZSBlbnRyeSA9XG4gICAgICAgIGxldCB7IHNhdmVkX3ZhbHVlOyBub2RlIH0gPSBlbnRyeSBpblxuICAgICAgICBsZXQgbm9kZSA9IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUgaW5cbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgeyBzYXZlZF92YWx1ZSA6IHZhbHVlIG9wdGlvblxuICAgICAgICAgIDsgbm9kZV9pbmZvID0gKEluY3JlbWVudGFsLnVzZXJfaW5mbyBub2RlIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX2NvbnN0ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChJbmNyZW1lbnRhbC5pc19jb25zdCBub2RlKSAoKSA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfaW52YWxpZCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc192YWxpZCBub2RlKSkgKCkgOiAodW5pdCBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX3VubmVjZXNzYXJ5ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX25lY2Vzc2FyeSBub2RlKSkgKCkgOiAodW5pdCBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH1dXG4gICAgICA7O1xuXG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgICBsZXQgaW5mb19wZXJfa2V5ID1cbiAgICAgICAgICBNYXAubWVyZ2UgdC5zYXZlZF9tYXAgdC5sb29rdXBfZW50cmllcyB+ZjooZnVuIH5rZXkgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGFjdHVhbF92YWx1ZSwgZW50cmllcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSB4LCBbXVxuICAgICAgICAgICAgICB8IGBSaWdodCB5IC0+IE5vbmUsIHlcbiAgICAgICAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gU29tZSB4LCB5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGtleSA6IGtleVxuICAgICAgICAgICAgICAgIDsgYWN0dWFsX3ZhbHVlIDogKHZhbHVlIG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICAgICAgICAgIDsgZW50cmllcyA6IHZhbHVlIGVudHJ5IGxpc3RcbiAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cC5MaXN0IChNYXAuZGF0YSBpbmZvX3Blcl9rZXkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSBJbmNyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgR2VuZXJpYy5Mb29rdXAudFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IGZsYXR0ZW4geCA9IGZsYXR0ZW4gSW5jci5TdGF0ZS50IHhcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgaW5jbHVkZSBMb29rdXBcblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXAsIEluY3Iuc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEdlbmVyaWNcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlNfZ2VuKSA9IHN0cnVjdFxuICBtb2R1bGUgRSA9IEluY3IuRXhwZXJ0XG5cbiAgKCogSGFzaHRibCBzdGFydHMgb3V0IGF0IGEgcmlkaWN1bG91cyBzaXplIG9mIDEyOC4gVGhpcyBpcyBhIG1vcmUgcmVhc29uYWJsZSBudW1iZXJcbiAgICAgb2YgYmlucyB0byBoYXZlLiAqKVxuICBsZXQgaGFzaHRibF9zaXplID0gMTBcblxuICAoKiogW3NldHVwX2dlbmVyYXRvcl0gc2V0cyB1cCB0aGUgc3RhZ2VkIGNvbnZlcnNpb24uXG5cbiAgICAgIFtoYXNoYWJsZV0gaXMgdXNlZCB0byBidWlsZCBhIHRhYmxlIG9mIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuIFdlIGRyb3AgdW5uZWNlc3NhcnlcbiAgICAgIGRlcGVuZGVuY2llcyB0byBhbGxvdyB0aGVtIHRvIGJlIGNvbGxlY3RlZC5cblxuICAgICAgW2NvbXB1dGVfb3V0cHV0IGtleV0gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG91dHB1dCBub2RlIGNvcnJlc3BvbmRpbmcgdG8gW2tleV0uXG4gICAgICBbY29tcHV0ZV9vdXRwdXRdIGlzIGNsb3NlZCBvdmVyIHRoZSBtdXRhYmxlIHN0YXRlIGRldGVybWluaW5nIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICB0aGUgc2VsZWN0b3IncyBpbnB1dC5cblxuICAgICAgW21ha2VfaW5wdXRfbm9kZV0gbWFrZXMgc3VyZSB0aGF0IHdoZW4gdGhlIG11dGFibGUgc3RhdGUgaW5zaWRlIFtjb21wdXRlX291dHB1dF0gaXNcbiAgICAgIHVwZGF0ZWQsIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVzIGluIHRoZSBbbmVjZXNzYXJ5X2RlcGVuZGVuY2llc10gdGFibGUgYXJlIG1hZGVcbiAgICAgIHN0YWxlLiAgKilcbiAgbGV0IHNldHVwX2dlbmVyYXRvclxuICAgICAgICAoaGFzaGFibGUgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudClcbiAgICAgICAgfihjb21wdXRlX291dHB1dCA6ICdhIC0+ICdiKVxuICAgICAgICB+KG1ha2VfaW5wdXRfbm9kZSA6IG1ha2Vfa2V5X3N0YWxlOignYSAtPiB1bml0KSAtPiB1bml0IEluY3IudClcbiAgICA6ICgnYSAtPiAnYiBJbmNyLnQpIFN0YWdlZC50XG4gICAgPVxuICAgIGxldCBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCAoaW5wdXRfbm9kZSA6IHVuaXQgSW5jci50KSA9XG4gICAgICBsZXQgbWFrZV9rZXlfc3RhbGUga2V5ID1cbiAgICAgICAgSGFzaHRibC5maW5kIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5XG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXVxuICAgICAgICB8PiBMaXN0Lml0ZXIgfmY6RS5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgIGluXG4gICAgICBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICAoKiBTZXQgdGhlIGN1dG9mZiBzbyB0aGF0IHdlIG5ldmVyIHBhc3MgYXV0b21hdGljYWxseSBmcm9tIHRoZSB1cGRhdGUgdG8gdGhlIG5vZGVzLiBXZVxuICAgICAgIHdhbnQgZXZlcnl0aGluZyB0byBnbyB0aHJvdWdoIFttYWtlX2tleV9zdGFsZV0gKilcbiAgICBJbmNyLnNldF9jdXRvZmYgaW5wdXRfbm9kZSBJbmNyLkN1dG9mZi5hbHdheXM7XG4gICAgc3RhZ2UgKGZ1biBrZXkgLT5cbiAgICAgIGxldCBpbnB1dF9kZXAgPSBFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X25vZGUgaW5cbiAgICAgIGxldCByZWMgb3V0cHV0X25vZGUgPSBsYXp5IChcbiAgICAgICAgRS5Ob2RlLmNyZWF0ZVxuICAgICAgICAgIChmdW4gKCkgLT4gY29tcHV0ZV9vdXRwdXQga2V5KVxuICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooZnVuIH5pc19ub3dfb2JzZXJ2YWJsZSAtPlxuICAgICAgICAgICAgaWYgaXNfbm93X29ic2VydmFibGUgdGhlblxuICAgICAgICAgICAgICBIYXNodGJsLmFkZF9tdWx0aSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6KGZvcmNlIG91dHB1dF9ub2RlKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBIYXNodGJsLmNoYW5nZSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciBsIH5mOihGbi5ub24gKHBoeXNfZXF1YWwgKGZvcmNlIG91dHB1dF9ub2RlKSkpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBsJyAtPiBTb21lIGwnXG4gICAgICAgICAgICAgICkpKVxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfbm9kZSA9IGZvcmNlIG91dHB1dF9ub2RlIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgb3V0cHV0X25vZGUgaW5wdXRfZGVwO1xuICAgICAgRS5Ob2RlLndhdGNoIG91dHB1dF9ub2RlXG4gICAgKVxuXG4gICgqKiBUaGlzIGNyZWF0ZXMgYSB1bml0IGluY3JlbWVudGFsIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGlucHV0IGluY3JlbWVudGFsXG4gICAgICBmaXJlcy4gV2hlbiB0aGF0IG9jY3VycywgaXQgdXBkYXRlcyBbc2VsZWN0ZWRdIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICBbaW5wdXRdLCBhbmQgY2FsbHMgW21ha2Vfa2V5X3N0YWxlXSBmb3IgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWUgb2YgdGhlXG4gICAgICBpbmNyZW1lbnRhbC4gKilcbiAgbGV0IHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZSA9XG4gICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGlucCB+ZjptYWtlX3N0YWxlO1xuICAgICAgT3B0aW9uLml0ZXIgIXNlbGVjdGVkIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBzZWxlY3RlZCA6PSBpbnBcbiAgICApXG5cbiAgbGV0IHNlbGVjdF9vbmUnXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIChpbnB1dCA6IGEgb3B0aW9uIEluY3IudClcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBrZXknIC0+IEguY29tcGFyZSBrZXkga2V5JyA9IDBcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZTptYWtlX2tleV9zdGFsZVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZSBoIGlucHV0ID1cbiAgICBzZWxlY3Rfb25lJyBoIChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIChrZXknLCBkYXRhKSAtPiBpZiBILmNvbXBhcmUga2V5IGtleScgPSAwIHRoZW4gZGF0YSBlbHNlIGRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfnNlbGVjdGVkIH5pbnB1dCB+bWFrZV9zdGFsZTooZnVuIChrZXksIF8pIC0+IG1ha2Vfa2V5X3N0YWxlIGtleSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBILmhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9vbmVfdmFsdWUgaCB+ZGVmYXVsdCBpbnB1dCA9XG4gICAgc2VsZWN0X29uZV92YWx1ZScgaCB+ZGVmYXVsdCAoSW5jci5tYXAgfmY6T3B0aW9uLnNvbWUgaW5wdXQpXG5cbiAgbGV0IHNlbGVjdF9tYW55X3ZhbHVlc1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgaGFzaGFibGUgPSBILmhhc2hhYmxlIGluXG4gICAgbGV0IHNlbGVjdGVkID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgSGFzaHRibC5maW5kIHNlbGVjdGVkIGtleSB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHNlbGVjdGVkIH5mOm1ha2Vfa2V5X3N0YWxlO1xuICAgICAgICBIYXNodGJsLmNsZWFyIHNlbGVjdGVkO1xuICAgICAgICBMaXN0Lml0ZXIgaW5wIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaHRibC5zZXQgc2VsZWN0ZWQgfmtleSB+ZGF0YVxuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9tYW55XG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNoX3NldC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPSBIYXNoX3NldC5tZW0gc2VsZWN0ZWQga2V5IGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgbGV0IG9sZF9zZXQgPSBIYXNoX3NldC5jb3B5IHNlbGVjdGVkIGluXG4gICAgICAgIEhhc2hfc2V0LmNsZWFyIHNlbGVjdGVkO1xuXG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBvbGRfc2V0IGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICAgIEhhc2hfc2V0LmFkZCBzZWxlY3RlZCBrZXlcbiAgICAgICAgKTtcblxuICAgICAgICBIYXNoX3NldC5pdGVyIG9sZF9zZXQgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkpIHRoZW5cbiAgICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgKSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBoYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuZW5kXG5cbiIsImV4dGVybmFsIGpzX3Byb2ZfbWFyayA6IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21hcmtcIlxuZXh0ZXJuYWwganNfcHJvZl9tZWFzdXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwianNfcHJvZl9tZWFzdXJlXCJcbmV4dGVybmFsIGpzX3Byb2ZfY2xlYXJfbWFya3MgOiB1bml0IC0+IHVuaXQgPSBcImpzX3Byb2ZfY2xlYXJfbWFya3NcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tZWFzdXJlcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tZWFzdXJlc1wiXG5cbmxldCBtYXJrIG5hbWUgPSBqc19wcm9mX21hcmsgbmFtZVxubGV0IG1lYXN1cmUgfm5hbWUgfnN0YXJ0IH5lbmRfID0ganNfcHJvZl9tZWFzdXJlIG5hbWUgc3RhcnQgZW5kX1xuXG5sZXQgcmVjb3JkIG5hbWUgfmYgPVxuICBsZXQgYmVmb3JlX25hbWUgPSBuYW1lIF4gXCJfYmVmb3JlXCIgaW5cbiAgbGV0IGFmdGVyX25hbWUgPSBuYW1lIF4gXCJfYWZ0ZXJcIiBpblxuICBsZXQgKCkgPSBtYXJrIGJlZm9yZV9uYW1lIGluXG4gIGxldCByZXMgPSBmICgpIGluXG4gIGxldCAoKSA9IG1hcmsgYWZ0ZXJfbmFtZSBpblxuICBtZWFzdXJlIH5uYW1lIH5zdGFydDpiZWZvcmVfbmFtZSB+ZW5kXzphZnRlcl9uYW1lO1xuICByZXNcbjs7XG5cbmxldCBjbGVhcl9tYXJrcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWFya3MgKClcbmxldCBjbGVhcl9tZWFzdXJlcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMgKClcblxubW9kdWxlIE1hbnVhbCA9IHN0cnVjdFxuICBsZXQgbWFyayA9IG1hcmtcbiAgbGV0IG1lYXN1cmUgPSBtZWFzdXJlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxuXG50eXBlIHQgPVxuICB7IGZpbGVuYW1lIDogc3RyaW5nXG4gIDsgbWltZXR5cGUgOiBzdHJpbmdcbiAgOyBjb250ZW50cyA6IHN0cmluZ1xuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8ZG93bmxvYWRlcjogJXM+XCIgdC5maWxlbmFtZSlcblxubGV0IHRyaWdnZXIgeyBmaWxlbmFtZTsgbWltZXR5cGU7IGNvbnRlbnRzIH0gPVxuICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICBpZiBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG4gIHRoZW5cbiAgICBwcmludF9zXG4gICAgICBbJW1lc3NhZ2UgXCJEb3dubG9hZCB0cmlnZ2VyZWRcIiAoZmlsZW5hbWUgOiBzdHJpbmcpIChtaW1ldHlwZSA6IHN0cmluZykgY29udGVudHNdXG4gIGVsc2UgKFxuICAgICgqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xOTMyODg5MS81NTg1OTIgKilcbiAgICBsZXQgYSA9IERvbV9odG1sLmNyZWF0ZUEgRG9tX2h0bWwuZG9jdW1lbnQgaW5cbiAgICBsZXQgY29udGVudHNfYmlnc3RyID1cbiAgICAgIFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciAoQmlnc3RyaW5nLm9mX3N0cmluZyBjb250ZW50cylcbiAgICBpblxuICAgIGxldCBibG9iID1cbiAgICAgICgqIERvbid0IHVzZSBbYmxvYl9mcm9tX3N0cmluZ10uIFRoYXQgaGFzIGFuIGF0dHJhY3RpdmUgdHlwZSBidXQgd29ya3MgYnkgZmlyc3RcbiAgICAgICAgIGNvbnZlcnRpbmcgb3VyIE9DYW1sIHN0cmluZyB0byBhIEphdmFzY3JpcHQgc3RyaW5nLCB3aGljaCBjb252ZXJ0cyB0b1xuICAgICAgICAgVVRGLTE2LiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHJhbmRvbSBiaW5hcnkgZGF0YSB0aGF0IHdpbGwgZGlzdG9ydCBpdC4gKilcbiAgICAgIEZpbGUuYmxvYl9mcm9tX2FueSBbIGBhcnJheUJ1ZmZlciBjb250ZW50c19iaWdzdHIgXSB+Y29udGVudFR5cGU6bWltZXR5cGVcbiAgICBpblxuICAgIGxldCB1cmwgPSBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNjcmVhdGVPYmplY3RVUkwgYmxvYiBpblxuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiaHJlZlwiKSB1cmw7XG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJkb3dubG9hZFwiKSAoSnMuc3RyaW5nIGZpbGVuYW1lKTtcbiAgICBhIyNjbGljaztcbiAgICBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNyZXZva2VPYmplY3RVUkwgdXJsKVxuOztcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgY3JlYXRlXG4gICAgICAgID8oZW5hYmxlZCA9IHRydWUpXG4gICAgICAgID8ob25fY2xpY2sgPSBmdW4gXyAtPiBWZG9tLkVmZmVjdC5JZ25vcmUpXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgfmdldF9kb3dubG9hZFxuICAgICAgICB+YnV0dG9uX3RleHRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9wZW4gVmRvbSBpblxuICAgIGxldCB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBldiA9XG4gICAgICB0cmlnZ2VyIChnZXRfZG93bmxvYWQgKCkpO1xuICAgICAgb25fY2xpY2sgZXZcbiAgICBpblxuICAgIGxldCBlbmFibGVkX2Rpc2FibGVkID1cbiAgICAgIGlmIGVuYWJsZWQgdGhlbiBbXSBlbHNlIFsgQXR0ci5kaXNhYmxlZDsgQXR0ci5zdHlsZSAoQ3NzX2dlbi5jb2xvciAoYE5hbWUgXCJncmV5XCIpKSBdXG4gICAgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBleHRyYV9hdHRyczsgZW5hYmxlZF9kaXNhYmxlZDsgWyBBdHRyLm9uX2NsaWNrIHRyaWdnZXJfY3N2X2Rvd25sb2FkIF0gXVxuICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICBpblxuICAgIE5vZGUuYnV0dG9uIH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycykgWyBOb2RlLnRleHQgYnV0dG9uX3RleHQgXVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgSW5jciA9IEluY3JlbWVudGFsLk1ha2UgKClcblxuKCogVGhpcyBpcyB0aGUgZGVmYXVsdCBjbG9jayBmb3IgcnVubmluZyBjbGllbnRzLCBidXQgYm9uc2FpIHRlc3RzIGhhdmUgdGhlaXJcbiAgIG93biBzZXBhcmF0ZSBjbG9ja3MgKilcbmxldCBjbG9jayA9IEluY3IuQ2xvY2suY3JlYXRlIH5zdGFydDooVGltZV9ucy5ub3cgKCkpICgpXG5cbmluY2x1ZGUgSW5jclxubW9kdWxlIE1hcCA9IEluY3JfbWFwLk1ha2UgKEluY3IpXG5tb2R1bGUgU2VsZWN0ID0gSW5jcl9zZWxlY3QuTWFrZSAoSW5jcilcbiIsIm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQ29yZVxuXG50eXBlICgnYWN0aW9uLCAnbW9kZWwsICdzdGF0ZSwgJ2V4dHJhKSB3aXRoX2V4dHJhID1cbiAgeyBhcHBseV9hY3Rpb24gOiAnYWN0aW9uIC0+ICdzdGF0ZSAtPiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gJ21vZGVsXG4gIDsgdXBkYXRlX3Zpc2liaWxpdHkgOiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gJ21vZGVsXG4gIDsgdmlldyA6IFZkb20uTm9kZS50XG4gIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gdW5pdFxuICA7IGV4dHJhIDogJ2V4dHJhXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxudHlwZSAoJ2FjdGlvbiwgJ3N0YXRlLCAnbW9kZWwpIHQgPSAoJ2FjdGlvbiwgJ3N0YXRlLCAnbW9kZWwsIHVuaXQpIHdpdGhfZXh0cmFcblxubGV0IGNyZWF0ZV93aXRoX2V4dHJhID9hcHBseV9hY3Rpb24gP3VwZGF0ZV92aXNpYmlsaXR5ID9vbl9kaXNwbGF5IH5leHRyYSBtb2RlbCB2aWV3ID1cbiAgbGV0IGFwcGx5X2FjdGlvbiA9XG4gICAgT3B0aW9uLnZhbHVlIGFwcGx5X2FjdGlvbiB+ZGVmYXVsdDooZnVuIF8gXyB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCB1cGRhdGVfdmlzaWJpbGl0eSA9XG4gICAgT3B0aW9uLnZhbHVlIHVwZGF0ZV92aXNpYmlsaXR5IH5kZWZhdWx0OihmdW4gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgb25fZGlzcGxheSA9IE9wdGlvbi52YWx1ZSBvbl9kaXNwbGF5IH5kZWZhdWx0OihmdW4gXyB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gKCkpIGluXG4gIHsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheTsgZXh0cmE7IHZpZXcgfVxuOztcblxubGV0IGNyZWF0ZSA9IGNyZWF0ZV93aXRoX2V4dHJhIH5leHRyYTooKVxuIiwib3BlbiEgQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBBc3luY19rZXJuZWxcblxuKCoqIENvbW1vbiBtb2R1bGUgdHlwZXMgKilcbm1vZHVsZSB0eXBlIE1vZGVsID0gc2lnXG4gIHR5cGUgdFxuXG5cbiAgKCoqIEEgZnVuY3Rpb24gZm9yIHRlc3Rpbmcgd2hldGhlciB0aGUgbW9kZWwgaGFzIGNoYW5nZWQgZW5vdWdoIHRvIHJlcXVpcmUgcmVmaXJpbmdcbiAgICAgIHRoZSBpbmNyZW1lbnRhbCBncmFwaC5cblxuICAgICAgSXQncyBiZXN0IGlmIHRoZSB2YWx1ZXMgaW4gdGhlIG1vZGVsIHN1cHBvcnQgYSBzZW1hbnRpY2FsbHkgcmVhc29uYWJsZSBjdXRvZmZcbiAgICAgIGZ1bmN0aW9uIHdoaWNoIGxldHMgeW91IGF2b2lkIGluZmluaXRlIHJlY29tcHV0YXRpb24gbG9vcHMgdGhhdCBjYW4gb3RoZXJ3aXNlIGJlXG4gICAgICB0cmlnZ2VyZWQgYnkgdGhlIHZpc2liaWxpdHkgY2hlY2tzLiBGb3IgdGhpcyByZWFzb24sIGl0J3MgdHlwaWNhbGx5IGEgZ29vZCBpZGVhIHRvXG4gICAgICBhdm9pZCBoYXZpbmcgc2ltcGxlIGNsb3N1cmVzIHN0b3JlZCBpbiB0aGUgbW9kZWwuXG5cbiAgICAgIFRoYXQgc2FpZCwgaXQgZG9lcyB3b3JrIGlmIHlvdSBwdXQgcGh5c19lcXVhbCBpbiBmb3IgdGhlIGN1dG9mZi4gKilcbiAgdmFsIGN1dG9mZiA6IHQgLT4gdCAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgQWN0aW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFN0YXRlID0gc2lnXG4gICgqKiBSZXByZXNlbnRzIHRoZSBpbXBlcmF0aXZlIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBhbiBhcHBsaWNhdGlvbiwgdHlwaWNhbGx5IHVzZWQgZm9yXG4gICAgICBob3VzaW5nIHRoaW5ncyBsaWtlIGNvbW11bmljYXRpb24gQXN5bmMtUlBDIGNvbm5lY3Rpb25zLiAqKVxuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgbW9kdWxlIFN0YXRlIDogU3RhdGVcblxuICAoKiogW29uX3N0YXJ0dXBdIGlzIGNhbGxlZCBvbmNlLCByaWdodCBhZnRlciB0aGUgaW5pdGlhbCBET00gaXMgc2V0IHRvIHRoZSB2aWV3IHRoYXRcbiAgICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBpbml0aWFsIHN0YXRlLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZG9pbmcgdGhpbmdzIGxpa2Ugc3RhcnRpbmcgdXBcbiAgICAgIGFzeW5jIHByb2Nlc3Nlcy4gIE5vdGUgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIGNvbXB1dGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgYW55XG4gICAgICBpbmNyZW1lbnRhbGl0eSwgc2luY2UgaXQncyBvbmx5IHJ1biBvbmNlLiAqKVxuICB2YWwgb25fc3RhcnR1cCA6IHNjaGVkdWxlX2FjdGlvbjooQWN0aW9uLnQgLT4gdW5pdCkgLT4gTW9kZWwudCAtPiBTdGF0ZS50IERlZmVycmVkLnRcblxuICAoKiogW2NyZWF0ZV0gaXMgYSBmdW5jdGlvbiB0aGF0IGluY3JlbWVudGFsbHkgY29uc3RydWN0cyBhIHshQ29tcG9uZW50fS4gTm90ZSB0aGF0IGFcbiAgICAgIFtDb21wb25lbnRdIHN1cHBvcnRzIGZ1bmN0aW9ucyBsaWtlIFthcHBseV9hY3Rpb25dLCB3aGljaCByZXR1cm4gYSBuZXcgW01vZGVsLnRdLFxuICAgICAgd2l0aG91dCB0YWtpbmcgYSBtb2RlbCBhcyBhbiBleHBsaWNpdCBpbnB1dC4gIFRoZSBpbnRlbnQgaXMgZm9yIFthcHBseV9hY3Rpb25dIHRvXG4gICAgICBoYXZlIGFjY2VzcyB0byB0aGUgY3VycmVudCBtb2RlbCB2aWEgaXRzIGNvbnN0cnVjdGlvblxuXG4gICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBtaWdodCBsb29rIGluIHByYWN0aWNlLlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB7IGNvdW50ZXIgOiBpbnQgfSBbQEBkZXJpdmluZyBmaWVsZHMsIGNvbXBhcmVdXG5cbiAgICAgICAgICBsZXQgY3V0b2ZmIHQxIHQyID0gY29tcGFyZSB0MSB0MiA9IDBcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdW5pdFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSW5jcmVtZW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBsZXQgc2hvdWxkX2xvZyBfID0gZmFsc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IGluaXRpYWxfbW9kZWwgPSB7IE1vZGVsLmNvdW50ZXIgPSAwIH1cblxuICAgICAgICBsZXQgb25fc3RhcnR1cCB+c2NoZWR1bGVfYWN0aW9ucyBfbW9kZWwgPVxuICAgICAgICAgIGV2ZXJ5IChUaW1lX25zLlNwYW4ub2Zfc2VjIDEuKSAoZnVuICgpIC0+XG4gICAgICAgICAgICBzY2hlZHVsZV9hY3Rpb25zIFsgQWN0aW9uLkluY3JlbWVudCBdKTtcbiAgICAgICAgICBEZWZlcnJlZC51bml0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsOl8gfmluamVjdDpfID1cbiAgICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgICBsZXQlbWFwIGFwcGx5X2FjdGlvbiA9XG4gICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPSBtb2RlbCA+PnwgTW9kZWwuY291bnRlciBpblxuICAgICAgICAgICAgZnVuIChJbmNyZW1lbnQgOiBBY3Rpb24udCkgXyB+c2NoZWR1bGVfYWN0aW9uczpfIC0+XG4gICAgICAgICAgICAgIHsgTW9kZWwuY291bnRlciA9IGNvdW50ZXIgKyAxIH1cbiAgICAgICAgICBhbmQgdmlldyA9XG4gICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPVxuICAgICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPSBtb2RlbCA+PnwgTW9kZWwuY291bnRlciBpblxuICAgICAgICAgICAgICBWZG9tLk5vZGUuZGl2IFtdIFsgVmRvbS5Ob2RlLnRleHQgKEludC50b19zdHJpbmcgY291bnRlcikgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFZkb20uTm9kZS5ib2R5IFtdIFsgY291bnRlciBdXG4gICAgICAgICAgYW5kIG1vZGVsID0gbW9kZWwgaW5cbiAgICAgICAgICAoKiBOb3RlIHRoYXQgd2UgZG9uJ3QgaW5jbHVkZSBbb25fZGlzcGxheV0gb3IgW3VwZGF0ZV92aXNpYmlsaXR5XSwgc2luY2VcbiAgICAgICAgICAgICB0aGVzZSBhcmUgb3B0aW9uYWwgYXJndW1lbnRzICopXG4gICAgICAgICAgQ29tcG9uZW50LmNyZWF0ZSB+YXBwbHlfYWN0aW9uIG1vZGVsIHZpZXdcbiAgICAgICAgOzsgXX1cblxuICAgICAgVGhlIGZ1bGwgY29kZSBmb3IgdGhpcyBleGFtcGxlIGNhbiBiZSBmb3VuZCBpbiBleGFtcGxlcy9jb3VudGVyLlxuICAqKVxuICB2YWwgY3JlYXRlXG4gICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAtPiBvbGRfbW9kZWw6TW9kZWwudCBJbmNyLnRcbiAgICAoKiogW29sZF9tb2RlbF0gY29udGFpbnMgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIG1vZGVsICopXG4gICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgKCoqIFtpbmplY3RdIGdpdmVzIHlvdSB0aGUgYWJpbGl0eSB0byBjcmVhdGUgZXZlbnQgaGFuZGxlcnMgaW4gdGhlIHZpcnR1YWwgRE9NLiBJblxuICAgICAgICB5b3VyIGV2ZW50IGhhbmRsZXIsIGNhbGwgdGhpcyBmdW5jdGlvbiBvbiB0aGUgYWN0aW9uIHlvdSB3b3VsZCBsaWtlIHRvXG4gICAgICAgIHNjaGVkdWxlLiBWaXJ0dWFsIERPTSB3aWxsIGF1dG9tYXRpY2FsbHkgZGVsZWdhdGUgdGhhdCBhY3Rpb24gYmFjayB0byB0aGVcbiAgICAgICAgW1N0YXJ0X2FwcF0gbWFpbiBsb29wLiAqKVxuICAgIC0+IChBY3Rpb24udCwgTW9kZWwudCwgU3RhdGUudCkgQ29tcG9uZW50LnQgSW5jci50XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3N0YXRlLCAnbW9kZWwsICdhY3Rpb24pIHNuYXBzaG90ID1cbiAgICB7IHZpZXcgOiBWZG9tLk5vZGUudFxuICAgIDsgYXBwbHlfYWN0aW9uIDpcbiAgICAgICAgJ3N0YXRlIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbCAtPiAnYWN0aW9uIC0+ICdtb2RlbFxuICAgIDsgdXBkYXRlX3Zpc2liaWxpdHkgOiAnbW9kZWwgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsXG4gICAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgICB9XG5cbiAgbW9kdWxlIHR5cGUgU19mb3JfYm9uc2FpID0gc2lnXG4gICAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gICAgbW9kdWxlIFN0YXRlIDogU3RhdGVcblxuICAgIHZhbCBhY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiA6IEFjdGlvbi50IC0+IGJvb2xcbiAgICB2YWwgb25fc3RhcnR1cCA6IHNjaGVkdWxlX2FjdGlvbjooQWN0aW9uLnQgLT4gdW5pdCkgLT4gTW9kZWwudCAtPiBTdGF0ZS50IERlZmVycmVkLnRcblxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgICAtPiBvbGRfbW9kZWw6TW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICAgLT4gKFN0YXRlLnQsIE1vZGVsLnQsIEFjdGlvbi50KSBzbmFwc2hvdCBJbmNyLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIFJlY3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHRvcCA6ICdhXG4gICAgOyBsZWZ0IDogJ2FcbiAgICA7IGJvdHRvbSA6ICdhXG4gICAgOyByaWdodCA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIHsgdG9wID0gZiB0LnRvcDsgbGVmdCA9IGYgdC5sZWZ0OyBib3R0b20gPSBmIHQuYm90dG9tOyByaWdodCA9IGYgdC5yaWdodCB9XG4gIDs7XG5cbiAgbGV0IGludF9oZWlnaHQgdCA9IHQuYm90dG9tIC0gdC50b3BcbiAgbGV0IGludF93aWR0aCB0ID0gdC5yaWdodCAtIHQubGVmdFxuICBsZXQgZmxvYXRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtLiB0LnRvcFxuICBsZXQgZmxvYXRfd2lkdGggdCA9IHQucmlnaHQgLS4gdC5sZWZ0XG5lbmRcblxubGV0IHJvdW5kX2Zsb2F0X3JlY3QgPyhyb3VuZCA9IEZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bikgPSBSZWN0Lm1hcCB+Zjpyb3VuZFxuXG50eXBlIHJvd3Nfb3JfY29sdW1ucyA9XG4gIHwgUm93c1xuICB8IENvbHVtbnNcbltAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgdmFyaWFudHMsIGNvbXBhcmVdXG5cbmxldCBpbm5lckhlaWdodCAoKSA9XG4gIERvbV9odG1sLndpbmRvdyMjLmlubmVySGVpZ2h0XG47O1xuXG5sZXQgaW5uZXJXaWR0aCAoKSA9XG4gIERvbV9odG1sLndpbmRvdyMjLmlubmVyV2lkdGhcbjs7XG5cbmxldCBlbGVtZW50X2lzX2luX3ZpZXdwb3J0IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBGbG9hdC4oID49ICkgcmVjdCMjLnRvcCAwLlxuICAmJiBGbG9hdC4oID49ICkgcmVjdCMjLmxlZnQgMC5cbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5ib3R0b20gKEZsb2F0Lm9mX2ludCAoaW5uZXJIZWlnaHQgKCkpKVxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLnJpZ2h0IChGbG9hdC5vZl9pbnQgKGlubmVyV2lkdGggKCkpKVxuOztcblxuKCoqIFNjcm9sbHMgdG8gdGhlIGl0ZW0gbWFya2VkIGFzIFwia2VlcC1pbi12aWV3XCIgKilcbmxldCBzY3JvbGwgPyhpZCA9IFwia2VlcC1pbi12aWV3XCIpICgpID1cbiAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBlbHQgLT4gaWYgbm90IChlbGVtZW50X2lzX2luX3ZpZXdwb3J0IGVsdCkgdGhlbiBlbHQjI3Njcm9sbEludG9WaWV3IEpzLl90cnVlXG47O1xuXG4oKiBOb3QgeWV0IHN1cHBvcnRlZCBvbiBDaHJvbWUuICBNYXliZSB3ZSBzaG91bGQgdXNlIGpRdWVyeT9cbiAgIHtbXG4gICAgIGxldCBzY3JvbGxfaW50b192aWV3IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogdW5pdCA9XG4gICAgICAgZWx0IyNzY3JvbGxJbnRvVmlldyAob2JqZWN0JWpzXG4gICAgICAgICB2YWwgYmxvY2sgPSBKcy5zdHJpbmcgXCJzdGFydFwiXG4gICAgICAgICB2YWwgYmVoYXZpb3IgPSBKcy5zdHJpbmcgXCJzbW9vdGhcIlxuICAgICAgIGVuZClcbiAgIF19XG4qKVxuKCogW3ZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbF0gZ2V0cyBib3VuZGluZyByZWN0IG9mIFtlbHRdLiBUaGUgYm91bmRpbmcgcmVjdCBpc1xuICAgcmVsYXRpdmUgdG8gdGhlIHZpZXcgcG9ydCAqKVxubGV0IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgeyBSZWN0LnRvcCA9IHJlY3QjIy50b3BcbiAgOyBsZWZ0ID0gcmVjdCMjLmxlZnRcbiAgOyBib3R0b20gPSByZWN0IyMuYm90dG9tXG4gIDsgcmlnaHQgPSByZWN0IyMucmlnaHRcbiAgfVxuOztcblxubGV0IHZpZXdwb3J0X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMDsgbGVmdCA9IDA7IGJvdHRvbSA9IGlubmVySGVpZ2h0ICgpOyByaWdodCA9IGlubmVyV2lkdGggKCkgfVxuOztcblxubGV0IGNsaWVudF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgYm91bmRpbmdfcmVjdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbHQgaW5cbiAgeyBib3VuZGluZ19yZWN0IHdpdGhcbiAgICBib3R0b20gPSBib3VuZGluZ19yZWN0LnRvcCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBib3VuZGluZ19yZWN0LmxlZnQgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwXG4gIDsgbGVmdCA9IDBcbiAgOyBib3R0b20gPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5cbigqKiBTaW1wbGUgd3JhcHBlciBmb3IgdGhlIGJpbmFyeS1zZWFyY2ggZnVuY3RvciAgICopXG5sZXQgYmluYXJ5X3NlYXJjaCAodHlwZSBlbHQpIH5sZW5ndGggfmdldCB+Y29tcGFyZSBtb2RlIHggPVxuICBsZXQgbW9kdWxlIEJzID1cbiAgICBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIGVsdCA9IGVsdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHVuaXRcblxuICAgICAgbGV0IGdldCAoKSBuID0gZ2V0IG5cbiAgICAgIGxldCBsZW5ndGggKCkgPSBsZW5ndGhcbiAgICBlbmQpXG4gIGluXG4gIEJzLmJpbmFyeV9zZWFyY2ggKCkgfmNvbXBhcmUgbW9kZSB4XG47O1xuXG4oKiogU2VhcmNoZXMgdGhyb3VnaCBlbGVtZW50cyBpbmRleGVkIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXS4gKilcbmxldCBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCB+c2VhcmNoX2J5IG1vZGUgbGF5b3V0IHggPVxuICBsZXQgZ2V0ID1cbiAgICBsZXQgbnRoX2VsZW1lbnQgbiA9XG4gICAgICBsZXQgaWQgPSBudGhfZWxlbWVudF9pZCBuIGluXG4gICAgICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkVsZW1lbnQgJXMgbm90IGZvdW5kXCIgaWQgKClcbiAgICAgIHwgU29tZSBlbHQgLT4gZWx0XG4gICAgaW5cbiAgICBsZXQgZmlyc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IDApIGluXG4gICAgbGV0IGxhc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IChsZW5ndGggLSAxKSkgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBuJ3RoIGVsZW1lbnQgaW4gYSBub3JtYWxpemVkIHdheSwgYXMgaWYgdGhlIGluZGV4aW5nIGFsd2F5cyBnb2VzIGluXG4gICAgICAgaW5jcmVhc2luZyBvcmRlciBmcm9tIHRvcCB0b3AgYm90dG9tICopXG4gICAgbGV0IG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbiA9XG4gICAgICBsZXQgaXNfYXNjZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IEZsb2F0LiggPD0gKSBmaXJzdC50b3AgbGFzdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IEZsb2F0LiggPD0gKSBmaXJzdC5sZWZ0IGxhc3QubGVmdFxuICAgICAgaW5cbiAgICAgIG50aF9lbGVtZW50IChpZiBpc19hc2NlbmRpbmcgdGhlbiBuIGVsc2UgbGVuZ3RoIC0gbiAtIDEpXG4gICAgaW5cbiAgICBmdW4gbiAtPiBzZWFyY2hfYnkgKHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuKSlcbiAgaW5cbiAgYmluYXJ5X3NlYXJjaCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmU6RmxvYXQuY29tcGFyZSBtb2RlIHhcbjs7XG5cbmxldCBmaW5kX3Zpc2libGVfcmFuZ2Ugfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgbGF5b3V0ID1cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGVsZW1lbnRfc2VhcmNoID0gZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgaW5cbiAgICBsZXQgdmlld3BvcnRfcmVjdCA9IHZpZXdwb3J0X3JlY3QgKCkgaW5cbiAgICBsZXQgZmlyc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QuYm90dG9tLCB2aWV3cG9ydF9yZWN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5yaWdodCwgdmlld3BvcnRfcmVjdC5sZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgIGxldCBsYXN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LnRvcCwgdmlld3BvcnRfcmVjdC5ib3R0b21cbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QubGVmdCwgdmlld3BvcnRfcmVjdC5yaWdodFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgICgqIEJvdGggW2ZpcnN0XSBhbmQgW2xhc3RdIG5lZWQgdG8gYmUgW1NvbWVdLiBPdGhlcndpc2UsIGZvciBleGFtcGxlIGlmIHRoZSB3aG9sZVxuICAgICAgIHRhYmxlIGlzIGJlbG93IHZpZXcgcG9ydCwgdGhlbiBbZmlyc3RdIHdpbGwgYmUgW1NvbWVdLCBbbGFzdF0gd2lsbCBiZSBbTm9uZV0gKilcbiAgICBPcHRpb24uYm90aCBmaXJzdCBsYXN0KVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAge2pzfFxuICAgICAgKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG4gICAgICAgIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgICAgICB2YXIgcmUgPSAvKGF1dG98c2Nyb2xsKS87XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGRvYykge1xuICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3VyID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgICAgIHdoaWxlIChjdXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgIHZhciBzdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKGN1cik7XG5cbiAgICAgICAgICBpZiAocmUudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgfSlcbiAgICB8anN9XG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXIgKGVsIDogI0RvbS5ub2RlIEpzLnQpIDogRG9tLm5vZGUgSnMudCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIFt8IEpzLlVuc2FmZS5pbmplY3QgZWwgfF1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFBlcmZvcm1hbmNlID0gSmF2YXNjcmlwdF9wcm9maWxpbmdcblxubGV0IHRpbWVyX3N0YXJ0IHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZSB0aGVuIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIChzIF4gXCJiZWZvcmVcIik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCB0aW1lcl9zdG9wIHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZVxuICB0aGVuIChcbiAgICBsZXQgYmVmb3JlID0gcyBeIFwiYmVmb3JlXCIgaW5cbiAgICBsZXQgYWZ0ZXIgPSBzIF4gXCJhZnRlclwiIGluXG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgYWZ0ZXI7XG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1lYXN1cmUgfm5hbWU6cyB+c3RhcnQ6YmVmb3JlIH5lbmRfOmFmdGVyKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWVFbmQgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHByaW50X2Vycm9yZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpKSBmbXRcblxubW9kdWxlIFJlcXVlc3RfaWRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcblxuICB2YWwgc2V0X29uY2VfZXhuXG4gICAgOiAgdFxuICAgIC0+IGFuaW1hdGlvbl9mcmFtZV9pZDpEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgIC0+IHNldF90aW1lb3V0X2lkOkRvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAtPiB1bml0XG5cbiAgdmFsIGNhbmNlbGxlZCA6IHQgLT4gYm9vbFxuICB2YWwgY2FuY2VsIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBpZHMgPVxuICAgIHwgRW1wdHlcbiAgICB8IENhbmNlbGxlZFxuICAgIHwgSWRzIG9mXG4gICAgICAgIHsgYW5pbWF0aW9uX2ZyYW1lX2lkIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAgICAgOyBzZXRfdGltZW91dF9pZCA6IERvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAgICAgfVxuXG4gIHR5cGUgdCA9IGlkcyByZWZcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IHJlZiBFbXB0eVxuXG4gIGxldCBzZXRfb25jZV9leG4gKHQgOiB0KSB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+XG4gICAgICAoKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgbGV0J3MgYmUgZGVmZW5zaXZlLiAqKVxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZFxuICAgIHwgRW1wdHkgLT4gdCA6PSBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH1cbiAgICB8IElkcyBfIC0+IGludmFsaWRfYXJnIFwicmVxdWVzdF9pZHMgYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCBjYW5jZWxsZWQgeCA9XG4gICAgbWF0Y2ggIXggd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+IHRydWVcbiAgICB8IEVtcHR5IHwgSWRzIF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgY2FuY2VsICh0IDogdCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiAoKVxuICAgIHwgRW1wdHkgLT4gdCA6PSBDYW5jZWxsZWRcbiAgICB8IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfSAtPlxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZDtcbiAgICAgIHQgOj0gQ2FuY2VsbGVkXG4gIDs7XG5lbmRcblxuKCoqIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gbm90aWZpZXMgdGhlIGJyb3dzZXIgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBkbyBzb21lXG4gICAgY29tcHV0YXRpb24gYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQuIEJlY2F1c2UgdGhpcyBuZWVkcyB0byBvY2N1ciBpbiB0aGUgc2FtZVxuICAgIHN5bmNocm9ub3VzIGNhbGwgKGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgcmVwYWludCksIHJldHVybmluZyBhIERlZmVycmVkLnQgd2lsbCBub3RcbiAgICB3b3JrLiBJbnN0ZWFkLCB5b3UgcGFzcyBpbiBhIGpvYiB0byBiZSBydW4gYmVmb3JlIHRoZSByZXBhaW50LlxuXG4gICAgTm90ZSB0aGF0IGlmIFtjYWxsYmFja10gY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyB3b3JrIGJlZm9yZSBkb2luZyBET00gY2hhbmdlcywgdGhvc2VcbiAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXBhaW50IGFuZCB3aWxsIGJlIHNhdmVkIHVudGlsIHRoZSBmb2xsb3dpbmcgb25lLlxuXG4gICAgV2hlbiB0aGUgdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kLCB0aGUgYnJvd3NlcnMgbmF0aXZlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmdW5jdGlvblxuICAgIHdpbGwgbmV2ZXIgY2FsbCB0aGUgY2FsbGJhY2ssIHNvIGluIG9yZGVyIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgZXZlbnRzLCB3ZSBzZXQgYW5cbiAgICBhbHRlcm5hdGUgc2V0VGltZW91dCBhdCAxIHNlY29uZC5cbiopXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2sgPVxuICAoKiBXZSBjYXB0dXJlIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdXNlIGl0IGxhdGVyIHdoZW4gaGFuZGxpbmcgY2FsbGJhY2tzIGZyb21cbiAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBzaW5jZSBleGNlcHRpb25zIHJhaXNlZCB0byB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgZ28gdGhyb3VnaFxuICAgICBvdXIgb3JkaW5hcnkgQXN5bmMgbW9uaXRvci4gKilcbiAgbGV0IGN1cnJlbnRfY29udGV4dCA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSBpblxuICBsZXQgcmVxdWVzdF9pZHMgPSBSZXF1ZXN0X2lkcy5jcmVhdGUgKCkgaW5cbiAgbGV0IGNhbGxiYWNrICgpID1cbiAgICBpZiBSZXF1ZXN0X2lkcy5jYW5jZWxsZWQgcmVxdWVzdF9pZHNcbiAgICB0aGVuICgpXG4gICAgZWxzZSAoXG4gICAgICBSZXF1ZXN0X2lkcy5jYW5jZWwgcmVxdWVzdF9pZHM7XG4gICAgICBsZXQgY2FsbGJhY2tfcmVzdWx0ID1cbiAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoaW5fY29udGV4dCBjdXJyZW50X2NvbnRleHQgY2FsbGJhY2tcbiAgICAgIGluXG4gICAgICBpZ25vcmUgKGNhbGxiYWNrX3Jlc3VsdCA6ICh1bml0LCB1bml0KSBSZXN1bHQudCkpXG4gIGluXG4gIGxldCBhbmltYXRpb25fZnJhbWVfaWQgPVxuICAgIGxldCBhbmltYXRpb25fY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSBhbmltYXRpb25fY2FsbGJhY2tcbiAgaW5cbiAgbGV0IHNldF90aW1lb3V0X2lkID1cbiAgICBsZXQgdGltZW91dF9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgICgqIDEwMDAgbXMgPSAxczsgIENob3NlbiBiZWNhdXNlIGJhY2tncm91bmRlZCB0YW5nbGUgc2VuZHMgcmVxdWVzdHNcbiAgICAgICBhdCBhcHByb3hpbWF0ZWx5IHRoaXMgcmF0ZS4gKilcbiAgICBsZXQgdGltZW91dCA9IDEwMDAuMCBpblxuICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCB0aW1lb3V0X2NhbGxiYWNrIHRpbWVvdXRcbiAgaW5cbiAgUmVxdWVzdF9pZHMuc2V0X29uY2VfZXhuIHJlcXVlc3RfaWRzIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkXG47O1xuXG4oKiogVGhlIEpzX29mX29jYW1sIHR5cGUgRG9tX2h0bWwuZWxlbWVudCBkb2Vzbid0IGhhdmUgdGhlIGNvcnJlY3Qgb3B0aW9ucyBmb3JcbiAgICB0aGVpciBgZm9jdXNgIG1ldGhvZC4gQ2FzdCB0byB0aGlzIGluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLiAgKilcbnR5cGUgZm9jdXNhYmxlID1cbiAgPCBmb2N1cyA6IDwgcHJldmVudFNjcm9sbCA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wID4gSnMudCAtPiB1bml0IEpzLm1ldGggPlxuXG5sZXQgYXNfZm9jdXNhYmxlIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IGZvY3VzYWJsZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG4oKiogW1Zpc2liaWxpdHldIGVuY2Fwc3VsYXRlcyB0aGUgZGlydHlpbmcgYW5kIGNsZWFuaW5nIG9mIHRoZSB2aXNpYmlsaXR5IGZsYWdcblxuICAgIFRoZSB2aWV3cG9ydCBzdGFydHMgb3V0IGRpcnR5LiBXaGVuIHdlIGxvb2sgYXQgdGhlIERPTSB0byBjb21wdXRlIHdoYXQgaXMgdmlzaWJsZSBieVxuICAgIGNhbGxpbmcgW3VwZGF0ZV92aXNpYmlsaXR5XSwgdGhlIHZpZXdwb3J0IHRoZW4gYmVjb21lcyBjbGVhbi4gQW55IHRpbWUgdGhlIHVzZXJcbiAgICBzY3JvbGxzIG91ciBwYWdlIG9yIHJlc2l6ZXMgdGhlIHdpbmRvdywgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4uIElmIHdlIHVwZGF0ZVxuICAgIHRoZSBET00sIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluIGJlY2F1c2UgYSBET00gdXBkYXRlIGNvdWxkIGNhdXNlIGEgcmVmbG93LFxuICAgIG1vdmluZyB0aGUgZWxlbWVudHMgdGhhdCBhcmUgdmlzaWJsZS5cblxuICAgIFdlIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBhcyBhIGZsYWcgaW5zdGVhZCBvZiByZXF1aXJpbmcgdGhlIHVzZXJzIHRvIHNlbmQgYW4gYWN0aW9uIG9uXG4gICAgc2Nyb2xsIGJlY2F1c2UgaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjb21wdXRlIHRoZSB2aXNpYmlsaXR5IG9uIHRoZSB2aXJ0dWFsLWRvbVxuICAgIHdoZW4gdGhlIHZpcnR1YWwtZG9tIGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgZG9tIChhcyBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAgW2FwcGx5X2FjdGlvbnNdKS4gKilcbm1vZHVsZSBWaXNpYmlsaXR5IDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGVfYXNfZGlydHkgOiB1bml0IC0+IHRcbiAgdmFsIG1hcmtfY2xlYW4gOiB0IC0+IHVuaXRcbiAgdmFsIG1hcmtfZGlydHkgOiB0IC0+IHVuaXRcbiAgdmFsIGlzX2RpcnR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBtdXRhYmxlIHdoZW5fZGlydHkgOiB1bml0IEl2YXIudCB9XG5cbiAgbGV0IGNyZWF0ZV9hc19kaXJ0eSAoKSA9IHsgd2hlbl9kaXJ0eSA9IEl2YXIuY3JlYXRlX2Z1bGwgKCkgfVxuICBsZXQgbWFya19kaXJ0eSB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQud2hlbl9kaXJ0eSAoKVxuICBsZXQgaXNfZGlydHkgdCA9IEl2YXIuaXNfZnVsbCB0LndoZW5fZGlydHlcbiAgbGV0IG1hcmtfY2xlYW4gdCA9IGlmIGlzX2RpcnR5IHQgdGhlbiB0LndoZW5fZGlydHkgPC0gSXZhci5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgTG9nZ2luZ19maWx0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19ibGFuZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgQmxhbmcudCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxcbiAgICB8IE5vbmVcbiAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBvZiBTdHJpbmdfYmxhbmcudFxuICAgIHwgQ3VzdG9tX2ZpbHRlciBvZiAoU2V4cC50IC0+IGJvb2wpXG5lbmRcblxubW9kdWxlIERlYnVnX2ZsYWdzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICB2YWwgaW5pdF9hcHBcbiAgICA6ICBhcHBfaWQ6c3RyaW5nXG4gICAgLT4gZmlsdGVyX25hbWVzOlN0cmluZy5TZXQudFxuICAgIC0+IGRlYnVnOmJvb2xcbiAgICAtPiBzdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgbW9kdWxlIEFwcF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbHRlcl9uYW1lcyA6IFN0cmluZy5TZXQudFxuICAgICAgOyBsb2dnaW5nX2ZpbHRlciA6IExvZ2dpbmdfZmlsdGVyLnQgcmVmXG4gICAgICA7IHNob3VsZF9wcm9maWxlIDogYm9vbCByZWZcbiAgICAgIDsgc2hvdWxkX2RlYnVnIDogYm9vbCByZWZcbiAgICAgIH1cblxuICAgIGxldCBzZXRfbG9nZ2luZ19maWx0ZXIgdCB+bG9nZ2luZ19maWx0ZXIgPSB0LmxvZ2dpbmdfZmlsdGVyIDo9IGxvZ2dpbmdfZmlsdGVyXG4gICAgbGV0IHNldF9zaG91bGRfcHJvZmlsZSB0IH5zaG91bGRfcHJvZmlsZSA9IHQuc2hvdWxkX3Byb2ZpbGUgOj0gc2hvdWxkX3Byb2ZpbGVcbiAgICBsZXQgc2V0X3Nob3VsZF9kZWJ1ZyB0IH5zaG91bGRfZGVidWcgPSB0LnNob3VsZF9kZWJ1ZyA6PSBzaG91bGRfZGVidWdcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBnbG9iYWwgPVxuICAgIG9iamVjdFxuICAgICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0FsbCA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0YXJ0TG9nZ2luZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQ3VzdG9tIDpcbiAgICAgICAgKChKcy5qc19zdHJpbmcgSnMudCAtPiBib29sIEpzLnQpIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wTG9nZ2luZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0YXJ0UHJvZmlsaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RvcFByb2ZpbGluZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0YXJ0RGVidWdnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RvcERlYnVnZ2luZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHNhdmVJbmNyZW1lbnRhbEdyYXBoIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBlbmRcblxuICBsZXQgZ2xvYmFsIDogZ2xvYmFsIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsXG4gIGxldCBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgPSByZWYgZmFsc2VcbiAgbGV0IGFwcF9zdGF0ZXMgOiBBcHBfc3RhdGUudCBTdHJpbmcuVGFibGUudCA9IFN0cmluZy5UYWJsZS5jcmVhdGUgKClcblxuICBsZXQgc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIlxcXCJcIiBeIHN0ciBeIFwiXFxcIlwiKSB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gIDs7XG5cbiAgbGV0IG11bHRpX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGluaXRfZ2xvYmFsICgpID1cbiAgICBsZXQgd2l0aF9hcHBfaWRfb3B0IHVwZGF0ZV9zdGF0ZSBhcHBfaWRfb3B0ID1cbiAgICAgIGxldCBhcHBfaWRfb3B0ID0gSnMuT3B0LnRvX29wdGlvbiBhcHBfaWRfb3B0IHw+IE9wdGlvbi5tYXAgfmY6SnMudG9fc3RyaW5nIGluXG4gICAgICBtYXRjaCBhcHBfaWRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBIYXNodGJsLml0ZXIgYXBwX3N0YXRlcyB+Zjp1cGRhdGVfc3RhdGVcbiAgICAgIHwgU29tZSBhcHBfaWQgLT5cbiAgICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBhcHBfc3RhdGVzIGFwcF9pZCB3aXRoXG4gICAgICAgICB8IFNvbWUgc3RhdGUgLT4gdXBkYXRlX3N0YXRlIHN0YXRlXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBhcHAgd2l0aCBpZCBcXFwiJXNcXFwiLiBWYWxpZCBhcHAgaWRzIGFyZTogJXNcIlxuICAgICAgICAgICAgIGFwcF9pZFxuICAgICAgICAgICAgIChIYXNodGJsLmtleXMgYXBwX3N0YXRlcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIGxvZ2dpbmdfZmlsdGVyID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlciB+bG9nZ2luZ19maWx0ZXIpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9wcm9maWxlIHNob3VsZF9wcm9maWxlID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfcHJvZmlsZSB+c2hvdWxkX3Byb2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9kZWJ1ZyBzaG91bGRfZGVidWcgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9kZWJ1ZyB+c2hvdWxkX2RlYnVnKVxuICAgIGluXG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQWxsIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBBbGwpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ1xuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBibGFuZ19zdHIgLT5cbiAgICAgIGxldCBibGFuZ19zdHIgPSBKcy50b19zdHJpbmcgYmxhbmdfc3RyIGluXG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKGZ1biBhcHBfc3RhdGUgLT5cbiAgICAgICAgbGV0IGJsYW5nID1cbiAgICAgICAgICBCbGFuZy50X29mX3NleHAgU3RyaW5nLnRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgYmxhbmdfc3RyKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaW52YWxpZF9uYW1lcyA9XG4gICAgICAgICAgQmxhbmcuZm9sZCBibGFuZyB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IH5mOihmdW4gaW52YWxpZF9uYW1lcyBuYW1lIC0+XG4gICAgICAgICAgICBpZiBTZXQubWVtIGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgbmFtZVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX25hbWVzXG4gICAgICAgICAgICBlbHNlIFNldC5hZGQgaW52YWxpZF9uYW1lcyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBpZiBTZXQuaXNfZW1wdHkgaW52YWxpZF9uYW1lc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlclxuICAgICAgICAgICAgYXBwX3N0YXRlXG4gICAgICAgICAgICB+bG9nZ2luZ19maWx0ZXI6KE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByaW50X2Vycm9yZlxuICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBuYW1lZCBmaWx0ZXIocyk6ICVzLiBWYWxpZCBuYW1lcyBhcmU6XFxuJXNcIlxuICAgICAgICAgICAgKFNldC50b19saXN0IGludmFsaWRfbmFtZXMgfD4gc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KSkpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ0N1c3RvbVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBmaWx0ZXIgLT5cbiAgICAgIGxldCBmaWx0ZXIgYWN0aW9uX3NleHAgPVxuICAgICAgICBhY3Rpb25fc2V4cCB8PiBTZXhwLnRvX3N0cmluZyB8PiBKcy5zdHJpbmcgfD4gZmlsdGVyIHw+IEpzLnRvX2Jvb2xcbiAgICAgIGluXG4gICAgICB1cGRhdGVfbG9nZ2luZ19maWx0ZXIgKEN1c3RvbV9maWx0ZXIgZmlsdGVyKSk7XG4gICAgZ2xvYmFsIyMuc3RvcExvZ2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX2xvZ2dpbmdfZmlsdGVyIE5vbmUpO1xuICAgIGdsb2JhbCMjLnN0YXJ0UHJvZmlsaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfcHJvZmlsZSB0cnVlKTtcbiAgICBnbG9iYWwjIy5zdG9wUHJvZmlsaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfcHJvZmlsZSBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnREZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyB0cnVlKTtcbiAgICBnbG9iYWwjIy5zdG9wRGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnNhdmVJbmNyZW1lbnRhbEdyYXBoXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgZmlsZW5hbWUgPSBcImN1cnJlbnRfaW5jcl9kb21fZG90X2dyYXBoLmRvdFwiIGluXG4gICAgICBVaV9pbmNyLnNhdmVfZG90X3RvX2ZpbGUgZmlsZW5hbWU7XG4gICAgICBsZXQgY29udGVudHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZpbGVuYW1lIGluXG4gICAgICBWZG9tX2ZpbGVfZG93bmxvYWQuY3JlYXRlIH5maWxlbmFtZSB+bWltZXR5cGU6XCJwbGFpbi90ZXh0XCIgfmNvbnRlbnRzXG4gICAgICB8PiBWZG9tX2ZpbGVfZG93bmxvYWQudHJpZ2dlcik7XG4gICAgbGV0IGluaXRfbWVzc2FnZSA9XG4gICAgICBcIiBJbmNyX2RvbSBBY3Rpb24gTG9nZ2luZ1xcblxcXG4gICAgICBcXCA9PT09PT09PT09PT09PT09PT09PT09PVxcblxcXG4gICAgICBcXCBMb2dnaW5nIHByaW50cyBhY3Rpb24gaW5mbyB0byB0aGUgY29uc29sZS5cXG5cXFxuICAgICAgXFwgSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cXG5cXFxuICAgICAgXFwgVG8gc3RhcnQgbG9nZ2luZywgdHlwZSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcXG5cXFxuICAgICAgXFwgXFx0c3RhcnRMb2dnaW5nQWxsKFthcHBfaWRdKSAtIGxvZyBhbGwgYWN0aW9uc1xcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmcoZmlsdGVyX25hbWUgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIHByZS1kZWZpbmVkIFxcXG4gICAgICAgbmFtZWQgZmlsdGVyIFtmaWx0ZXJfbmFtZV1cXG5cXFxuICAgICAgXFwgXFx0c3RhcnRMb2dnaW5nKGZpbHRlcl9uYW1lX2JsYW5nIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBibGFuZyBvZiBcXFxuICAgICAgIG5hbWVkIGZpbHRlcnMgW2ZpbHRlcl9uYW1lX2JsYW5nXVxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmdDdXN0b20oZmlsdGVyIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBjdXN0b20gZnVuY3Rpb24gXFxcbiAgICAgICBbZmlsdGVyXSBmcm9tIGEgc3RyaW5nICh0aGUgYWN0aW9uIHNleHApIHRvIGEgYm9vbFxcblxcXG4gICAgICBcXCBUbyBzdG9wIGxvZ2dpbmcsIHR5cGU6IHN0b3BMb2dnaW5nKFthcHBfaWRdKVxcblxcblxcXG4gICAgICBcXCBJbmNyX2RvbSBBY3Rpb24gUHJvZmlsaW5nXFxuXFxcbiAgICAgIFxcID09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cXFxuICAgICAgXFwgUHJvZmlsaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuXFxuXFxcbiAgICAgIFxcIFRvIHN0YXJ0IHByb2ZpbGluZywgdHlwZTogc3RhcnRQcm9maWxpbmcoW2FwcF9pZF0pXFxuXFxcbiAgICAgIFxcIFRvIHN0b3AgcHJvZmlsaW5nLCB0eXBlOiBzdG9wUHJvZmlsaW5nKFthcHBfaWRdKVxcblxcblxcXG4gICAgICBcXCBJbmNyX2RvbSBEZWJ1Z2dpbmdcXG5cXFxuICAgICAgXFwgPT09PT09PT09PT09PT09PT09XFxuXFxcbiAgICAgIFxcIERlYnVnZ2luZyBwcmludHMgdGltaW5nIGluZm8gdG8gdGhlIGNvbnNvbGUuXFxuXFxcbiAgICAgIFxcIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYnkgdGhlIGFwcC5cXG5cXFxuICAgICAgXFwgVG8gc3RhcnQgZGVidWdnaW5nLCB0eXBlOiBzdGFydERlYnVnZ2luZyhbYXBwX2lkXSlcXG5cXFxuICAgICAgXFwgVG8gc3RvcCBkZWJ1Z2dpbmcsIHR5cGU6IHN0b3BEZWJ1Z2dpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIFthcHBfaWRdIGlzIGVxdWFsIHRvIHRoZSBpZCBvZiB0aGUgZWxlbWVudCB0aGF0IHRoZSBpbmNyLWRvbSBhcHAgaXMgYm91bmQgdG8uIElmIFxcXG4gICAgICAgdGhlIHBhZ2Ugb25seSBoYXMgb25lIGFwcCBvciB5b3Ugd2FudCB0byBhcHBseSB0aGUgYWN0aW9uIHRvIGFsbCBhcHBzLCB5b3UgY2FuIFxcXG4gICAgICAgcGFzcyBpbiBbbnVsbF0gKG9yIGZvciBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb25zLCBvbWl0IGl0IGFsdG9nZXRoZXIpLlwiXG4gICAgaW5cbiAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIGluaXRfbWVzc2FnZSlcbiAgOztcblxuICBsZXQgaW5pdF9hcHAgfmFwcF9pZCB+ZmlsdGVyX25hbWVzIH5kZWJ1ZyB+c3RvcCA9XG4gICAgaWYgbm90ICFnbG9iYWxfaXNfaW5pdGlhbGl6ZWRcbiAgICB0aGVuIChcbiAgICAgIGluaXRfZ2xvYmFsICgpO1xuICAgICAgZ2xvYmFsX2lzX2luaXRpYWxpemVkIDo9IHRydWUpO1xuICAgIGxldCBhcHBfaW5pdF9tZXNzYWdlID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJBdmFpbGFibGUgbG9nZ2luZyBmaWx0ZXJzIGZvciBcXFwiJXNcXFwiOlxcbiVzXCJcbiAgICAgICAgYXBwX2lkXG4gICAgICAgIChTZXQudG9fbGlzdCBmaWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdClcbiAgICBpblxuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgYXBwX2luaXRfbWVzc2FnZSk7XG4gICAgbGV0IGxvZ2dpbmdfZmlsdGVyID0gcmVmIExvZ2dpbmdfZmlsdGVyLk5vbmUgaW5cbiAgICBsZXQgc2hvdWxkX3Byb2ZpbGUgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2hvdWxkX2RlYnVnID0gcmVmIGRlYnVnIGluXG4gICAgSGFzaHRibC5zZXRcbiAgICAgIGFwcF9zdGF0ZXNcbiAgICAgIH5rZXk6YXBwX2lkXG4gICAgICB+ZGF0YTp7IGZpbHRlcl9uYW1lczsgbG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfTtcbiAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPiBIYXNodGJsLnJlbW92ZSBhcHBfc3RhdGVzIGFwcF9pZCk7XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA9IChmdW4gKCkgLT4gIWxvZ2dpbmdfZmlsdGVyKVxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgPSAoZnVuICgpIC0+ICFzaG91bGRfcHJvZmlsZSlcbiAgICA7IHNob3VsZF9kZWJ1ZyA9IChmdW4gKCkgLT4gIXNob3VsZF9kZWJ1ZylcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQWRkcyB0aGUgbmVjZXNzYXJ5IGF0dHJpYnV0ZSB0byB0aGUgcm9vdCBub2RlIHNvIHRoYXQgaXQgY2FuIGludGVyY2VwdFxuICAga2V5Ym9hcmQgZXZlbnRzLlxuICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCAqKVxubGV0IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCByb290ID1cbiAgbGV0IG9wZW4gVmRvbSBpblxuICBsZXQgc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCA9XG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQuYXR0cnMgfD4gQXR0ci5FeHBlcnQuY29udGFpbnNfbmFtZSBcImRpc2FibGVfdGFiX2luZGV4XCIgfD4gbm90XG4gIGluXG4gIG1hdGNoIChyb290IDogTm9kZS50KSB3aXRoXG4gIHwgRWxlbWVudCBlbGVtZW50IHdoZW4gc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCAtPlxuICAgIGxldCBhZGRfbmV3X2F0dHJzIGF0dHJzID1cbiAgICAgIFZkb20uQXR0ci4oc3R5bGUgKENzc19nZW4ub3V0bGluZSB+c3R5bGU6YE5vbmUgKCkpIEAgdGFiaW5kZXggMCBAIGF0dHJzKVxuICAgIGluXG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQubWFwX2F0dHJzIH5mOmFkZF9uZXdfYXR0cnMgfD4gTm9kZS5FbGVtZW50XG4gIHwgXyAtPiByb290XG47O1xuXG5sZXQgZ2V0X3RhZ19uYW1lIChub2RlIDogVmRvbS5Ob2RlLnQpID1cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgRWxlbWVudCBlIC0+IFNvbWUgKFZkb20uTm9kZS5FbGVtZW50LnRhZyBlKVxuICB8IE5vbmUgfCBUZXh0IF8gfCBXaWRnZXQgXyAtPiBOb25lXG47O1xuXG5sZXQgc3RhcnRfYm9uc2FpXG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlByaXZhdGUuU19mb3JfYm9uc2FpXG4gICAgICAgIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWxcbiAgICAgICAgIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gICgqIFRoaXMgaXMgaWRlbXBvdGVudCBhbmQgc28gZmluZSB0byBkby4gKilcbiAgQXN5bmNfanMuaW5pdCAoKTtcbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JWJpbmQgKCkgPSBBc3luY19qcy5kb2N1bWVudF9sb2FkZWQgKCkgaW5cbiAgICAgbGV0IG1vZGVsX3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWwgPSBJbmNyLlZhci53YXRjaCBtb2RlbF92IGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5ID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiBpblxuICAgICBsZXQgY3V0b2ZmID1cbiAgICAgICBJbmNyLkN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT5cbiAgICAgICAgIEFwcC5Nb2RlbC5jdXRvZmYgb2xkX3ZhbHVlIG5ld192YWx1ZSlcbiAgICAgaW5cbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsIGN1dG9mZjtcbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IGN1dG9mZjtcbiAgICAgbGV0IGFjdGlvbl9xdWV1ZSA9IERlcXVlLmNyZWF0ZSAoKSBpblxuICAgICBsZXQgbW9kdWxlIEV2ZW50ID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmUgKHN0cnVjdFxuICAgICAgICAgbW9kdWxlIEFjdGlvbiA9IEFwcC5BY3Rpb25cblxuICAgICAgICAgbGV0IGhhbmRsZSBhY3Rpb24gPSBEZXF1ZS5lbnF1ZXVlX2JhY2sgYWN0aW9uX3F1ZXVlIGFjdGlvblxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5LmNyZWF0ZV9hc19kaXJ0eSAoKSBpblxuICAgICBsZXQgdmlld3BvcnRfY2hhbmdlZCAoKSA9IFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5IGluXG4gICAgICgqIFRoaXMgcmVnaXN0ZXJzIHRoZSBbdmlld3BvcnRfY2hhbmdlZF0gaGFuZGxlciB3aXRoIFZpcnR1YWxfZG9tLiBJZiBldmVudCBoYW5kbGVyc1xuICAgICAgICB1c2UgdGhlIFtWZG9tLkVmZmVjdC5WaWV3cG9ydF9jaGFuZ2VkXSBldmVudCwgd2UgYXJlIG5vdGlmaWVkLiAqKVxuICAgICBsZXQgbW9kdWxlIF8gPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZV92aXNpYmlsaXR5IChzdHJ1Y3RcbiAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3cG9ydF9jaGFuZ2VkXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgZ2V0X3ZpZXcsIGdldF9hcHBseV9hY3Rpb24sIGdldF91cGRhdGVfdmlzaWJpbGl0eSwgZ2V0X29uX2Rpc3BsYXkgPVxuICAgICAgIGxldCBvYnMgPVxuICAgICAgICAgSW5jci5vYnNlcnZlXG4gICAgICAgICAgIChBcHAuY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6bW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgfmluamVjdDpFdmVudC5pbmplY3QpXG4gICAgICAgaW5cbiAgICAgICBsZXQgZmV0Y2ggKGYgOiBfIEFwcF9pbnRmLlByaXZhdGUuc25hcHNob3QgLT4gXykgKCkgPVxuICAgICAgICAgZiAoSW5jci5PYnNlcnZlci52YWx1ZV9leG4gb2JzKVxuICAgICAgIGluXG4gICAgICAgKCBmZXRjaCAoZnVuIHsgdmlldzsgXyB9IC0+IHZpZXcpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgYXBwbHlfYWN0aW9uOyBfIH0gLT4gYXBwbHlfYWN0aW9uKVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IHVwZGF0ZV92aXNpYmlsaXR5OyBfIH0gLT4gdXBkYXRlX3Zpc2liaWxpdHkpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgb25fZGlzcGxheTsgXyB9IC0+IG9uX2Rpc3BsYXkpIClcbiAgICAgaW5cbiAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgIGxldCBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPVxuICAgICAgIChcImFsbFwiLCBGbi5jb25zdCB0cnVlKSA6OiAoXCJub25lXCIsIEZuLmNvbnN0IGZhbHNlKSA6OiBuYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICAgICB8PiBTdHJpbmcuVGFibGUub2ZfYWxpc3RfZXhuXG4gICAgIGluXG4gICAgIGxldCB7IERlYnVnX2ZsYWdzLmxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH0gPVxuICAgICAgIGxldCBmaWx0ZXJfbmFtZXMgPSBIYXNodGJsLmtleXMgbmFtZWRfbG9nZ2luZ19maWx0ZXJzIHw+IFN0cmluZy5TZXQub2ZfbGlzdCBpblxuICAgICAgIERlYnVnX2ZsYWdzLmluaXRfYXBwIH5hcHBfaWQ6YmluZF90b19lbGVtZW50X3dpdGhfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3BcbiAgICAgaW5cbiAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICBsZXQgaHRtbF9kb20gPSBWZG9tLk5vZGUudG9fZG9tIGh0bWwgaW5cbiAgICAgbGV0IGVsZW0gPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9leG4gYmluZF90b19lbGVtZW50X3dpdGhfaWQgaW5cbiAgICAgbGV0IHBhcmVudCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXSAoSnMuT3B0LnRvX29wdGlvbiBlbGVtIyMucGFyZW50Tm9kZSkgaW5cbiAgICAgRG9tLnJlcGxhY2VDaGlsZCBwYXJlbnQgaHRtbF9kb20gZWxlbTtcbiAgICAgKCogd2UgbWFrZSBzdXJlIHRvIGNhbGwgW3ZpZXdwb3J0X2NoYW5nZWRdIHdoZW5ldmVyIHRoZSB3aW5kb3cgcmVzaXplcyBvciB0aGUgc2Nyb2xsXG4gICAgICAgIGNvbnRhaW5lciBpbiB3aGljaCBvdXIgSFRNTCBpcyBsb2NhdGVkIGlzIHNjcm9sbGVkLiAqKVxuICAgICBsZXQgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IGV2ZW50X25hbWUgd2hlcmUgPVxuICAgICAgIGlnbm9yZVxuICAgICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgICB3aGVyZVxuICAgICAgICAgICAgKERvbS5FdmVudC5tYWtlIGV2ZW50X25hbWUpXG4gICAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICB2aWV3cG9ydF9jaGFuZ2VkICgpO1xuICAgICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gICAgIGluXG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInNjcm9sbFwiIChKc19taXNjLmdldF9zY3JvbGxfY29udGFpbmVyIGh0bWxfZG9tKTtcbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwicmVzaXplXCIgRG9tX2h0bWwud2luZG93O1xuICAgICBsZXQlYmluZCBzdGF0ZSA9XG4gICAgICAgQXBwLm9uX3N0YXJ0dXBcbiAgICAgICAgIH5zY2hlZHVsZV9hY3Rpb246KGZ1biBhIC0+IFVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlIChFdmVudC5pbmplY3QgYSkpXG4gICAgICAgICAoSW5jci5WYXIudmFsdWUgbW9kZWxfdilcbiAgICAgaW5cbiAgICAgbGV0IHByZXZfaHRtbCA9IHJlZiBodG1sIGluXG4gICAgIGxldCBwcmV2X2VsdCA9IHJlZiBodG1sX2RvbSBpblxuICAgICBsZXQgcmVmb2N1c19yb290X2VsZW1lbnQgKCkgPVxuICAgICAgIGxldCBlbGVtZW50ID0gIXByZXZfZWx0IGluXG4gICAgICAgKCogSWYgdGhlIGVsZW1lbnQgdG8gZm9jdXMgaXMgYW4gZWxlbWVudCwgY2FzdCBpdCBpbnRvIHRoZVxuICAgICAgICAgIG1vcmUgcGVybWlzc2l2ZSBcImZvY3VzYWJsZVwiIHR5cGUgZGVmaW5lZCBhdCB0aGUgdG9wIG9mXG4gICAgICAgICAgdGhpcyBmaWxlLCBhbmQgdGhlbiBmb2N1cyB0aGF0LiAqKVxuICAgICAgIERvbV9odG1sLkNvZXJjZVRvLmVsZW1lbnQgZWxlbWVudFxuICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICB8PiBPcHRpb24ubWFwIH5mOmFzX2ZvY3VzYWJsZVxuICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4gZWxlbWVudCAtPlxuICAgICAgICAgZWxlbWVudCMjZm9jdXNcbiAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgIHZhbCBwcmV2ZW50U2Nyb2xsID0gSnMuX3RydWVcbiAgICAgICAgICAgZW5kKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0YXJ0IHMgPVxuICAgICAgIHRpbWVyX3N0YXJ0IHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0b3AgcyA9XG4gICAgICAgdGltZXJfc3RvcCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgICgqXG4gICAgICAgIFRha2UgYWN0aW9uIG9uIGFueSBibHVyIGV2ZW50LCByZWZvY3VzaW5nIHRvIHRoZSByb290IG5vZGUgaWYgdGhlIHJlbGF0ZWRUYXJnZXQgaXNcbiAgICAgICAgbnVsbCBvciB1bmRlZmluZWQsIHNpZ25pZnlpbmcgdGhhdCBmb2N1cyB3YXMgbG9zdCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIHJlc2V0IHRvXG4gICAgICAgIHRoZSBib2R5IG5vZGUuXG5cbiAgICAgICAgVGhlIEpzLl90cnVlIHBhcmFtZXRlciBwcm92aWRlZCB0byBEb20uYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgdXNlQ2FwdHVyZVxuICAgICAgICBwYXJhbWV0ZXIgZGVzY3JpYmVkIGhlcmU6XG4gICAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyXG4gICAgICopXG4gICAgIGlnbm9yZVxuICAgICBAQCBEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIERvbV9odG1sLndpbmRvd1xuICAgICAgICAgIERvbV9odG1sLkV2ZW50LmJsdXJcbiAgICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAoKiBbSnMuVW5zYWZlLipdIGlzIGxpa2UgW09iai5tYWdpY10uIFdlIHNob3VsZCBiZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlXG4gICAgICAgICAgICAgICAgZXhwZWN0LiAqKVxuICAgICAgICAgICAgIGxldCBlXG4gICAgICAgICAgICAgICA6IDwgcmVsYXRlZFRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcCA+XG4gICAgICAgICAgICAgICAgICAgSnMudFxuICAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgcmVsYXRlZF90YXJnZXQgPSBlIyMucmVsYXRlZFRhcmdldCBpblxuICAgICAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgcmVsYXRlZF90YXJnZXQpIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKCk7XG4gICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgIEpzLl90cnVlO1xuICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgKCkgPVxuICAgICAgIFZpc2liaWxpdHkubWFya19jbGVhbiB2aXNpYmlsaXR5O1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF91cGRhdGVfdmlzaWJpbGl0eSAoKSlcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICBpblxuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF92IG5ld19tb2RlbDtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIlxuICAgICBpblxuICAgICBsZXQgbWF5YmVfbG9nX2FjdGlvbiA9XG4gICAgICAgbGV0IHNhZmVfZmlsdGVyIH5uYW1lIGZpbHRlciBhY3Rpb24gPVxuICAgICAgICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmaWx0ZXIgYWN0aW9uKSB3aXRoXG4gICAgICAgICB8IE9rIHNob3VsZF9sb2cgLT4gc2hvdWxkX2xvZ1xuICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmICFcIkV4Y2VwdGlvbiByYWlzZWQgYnkgJXM6ICV7RXJyb3IjaHVtfVwiIG5hbWUgZXJyO1xuICAgICAgICAgICBmYWxzZVxuICAgICAgIGluXG4gICAgICAgbGV0IG5hbWVkX2ZpbHRlcl9ibGFuZ19jYWNoZSA9XG4gICAgICAgICBDb3JlLk1lbW8ub2ZfY29tcGFyYWJsZVxuICAgICAgICAgICAobW9kdWxlIExvZ2dpbmdfZmlsdGVyLlN0cmluZ19ibGFuZylcbiAgICAgICAgICAgKGZ1biBibGFuZyAtPlxuICAgICAgICAgICAgICBsZXQgZmlsdGVyID0gSGFzaHRibC5maW5kX2V4biBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgaW5cbiAgICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgICB+bmFtZTooc3ByaW50ZiAhXCJuYW1lZCBmaWx0ZXIgYmxhbmcgXFxcIiV7c2V4cDpzdHJpbmcgQmxhbmcudH1cXFwiXCIgYmxhbmcpXG4gICAgICAgICAgICAgICAgKG1hdGNoIGJsYW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBCYXNlIG5hbWUgLT4gZmlsdGVyIG5hbWVcbiAgICAgICAgICAgICAgICAgfCBfIC0+IGZ1biBhY3Rpb24gLT4gQmxhbmcuZXZhbCBibGFuZyAoZnVuIG5hbWUgLT4gZmlsdGVyIG5hbWUgYWN0aW9uKSkpXG4gICAgICAgaW5cbiAgICAgICBmdW4gYWN0aW9uIC0+XG4gICAgICAgICBsZXQgc2hvdWxkX2xvZ19hY3Rpb24gPVxuICAgICAgICAgICBtYXRjaCBsb2dnaW5nX2ZpbHRlciAoKSB3aXRoXG4gICAgICAgICAgIHwgQWxsIC0+IHRydWVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgIHwgTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nIC0+IG5hbWVkX2ZpbHRlcl9ibGFuZ19jYWNoZSBibGFuZyBhY3Rpb25cbiAgICAgICAgICAgfCBDdXN0b21fZmlsdGVyIGZpbHRlciAtPlxuICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICB+bmFtZTpcImN1c3RvbSBmaWx0ZXJcIlxuICAgICAgICAgICAgICAgKGZ1biBhY3Rpb24gLT4gZmlsdGVyIChBcHAuQWN0aW9uLnNleHBfb2ZfdCBhY3Rpb24pKVxuICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgaWYgc2hvdWxkX2xvZ19hY3Rpb25cbiAgICAgICAgIHRoZW4gQXN5bmNfanMubG9nX3NfYXNfc3RyaW5nIFslbWVzc2FnZSBcIkFjdGlvblwiIChhY3Rpb24gOiBBcHAuQWN0aW9uLnQpXVxuICAgICBpblxuICAgICBsZXQgYXBwbHlfYWN0aW9uIGFjdGlvbiA9XG4gICAgICAgbWF5YmVfbG9nX2FjdGlvbiBhY3Rpb247XG4gICAgICAgaWYgQXBwLmFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIGFjdGlvblxuICAgICAgIHRoZW4gKFxuICAgICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiO1xuICAgICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplLWZvci1hY3Rpb25cIilcbiAgICAgICBlbHNlIGlmIHNob3VsZF9kZWJ1ZyAoKVxuICAgICAgIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiYWN0aW9uIGFwcGxpZWQgd2l0aG91dCBzdGFiaWxpemluZ1wiKTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfYXBwbHlfYWN0aW9uICgpKVxuICAgICAgICAgICBzdGF0ZVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgICAgICBhY3Rpb25cbiAgICAgICBpblxuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF92IG5ld19tb2RlbFxuICAgICBpblxuICAgICBsZXQgcmVjIGFwcGx5X2FjdGlvbnMgKCkgPVxuICAgICAgIG1hdGNoIERlcXVlLmRlcXVldWVfZnJvbnQgYWN0aW9uX3F1ZXVlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgYWN0aW9uIC0+XG4gICAgICAgICBhcHBseV9hY3Rpb24gYWN0aW9uO1xuICAgICAgICAgYXBwbHlfYWN0aW9ucyAoKVxuICAgICBpblxuICAgICBsZXQgcGVyZm9ybV91cGRhdGUgKCkgPVxuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgKCogVGhlIGNsb2NrIGlzIHNldCBvbmx5IG9uY2UgcGVyIGNhbGwgdG8gcGVyZm9ybV91cGRhdGUsIHNvIHRoYXQgYWxsIGFjdGlvbnMgdGhhdFxuICAgICAgICAgIG9jY3VyIGJlZm9yZSBlYWNoIGRpc3BsYXkgdXBkYXRlIG9jY3VyIFwiYXQgdGhlIHNhbWUgdGltZS5cIiAqKVxuICAgICAgIGxldCBub3cgPVxuICAgICAgICAgbGV0IGRhdGUgPSBuZXclanMgSnMuZGF0ZV9ub3cgaW5cbiAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9tcyBkYXRlIyNnZXRUaW1lIHw+IFRpbWVfbnMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgIGluXG4gICAgICAgSW5jci5DbG9jay5hZHZhbmNlX2Nsb2NrIEluY3IuY2xvY2sgfnRvXzpub3c7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidG90YWxcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInVwZGF0ZSB2aXNpYmlsaXR5XCI7XG4gICAgICAgaWYgVmlzaWJpbGl0eS5pc19kaXJ0eSB2aXNpYmlsaXR5IHRoZW4gdXBkYXRlX3Zpc2liaWxpdHkgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInVwZGF0ZSB2aXNpYmlsaXR5XCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgYXBwbHlfYWN0aW9ucyAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIGxldCBodG1sID0gZ2V0X3ZpZXcgKCkgaW5cbiAgICAgICBsZXQgaHRtbCA9IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCBodG1sIGluXG4gICAgICAgdGltZXJfc3RhcnQgXCJkaWZmXCI7XG4gICAgICAgbGV0IHBhdGNoID0gVmRvbS5Ob2RlLlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6IXByZXZfaHRtbCB+Y3VycmVudDpodG1sIGluXG4gICAgICAgdGltZXJfc3RvcCBcImRpZmZcIjtcbiAgICAgICBpZiBub3QgKFZkb20uTm9kZS5QYXRjaC5pc19lbXB0eSBwYXRjaCkgdGhlbiBWaXNpYmlsaXR5Lm1hcmtfZGlydHkgdmlzaWJpbGl0eTtcbiAgICAgICB0aW1lcl9zdGFydCBcInBhdGNoXCI7XG4gICAgICAgbGV0IGVsdCA9IFZkb20uTm9kZS5QYXRjaC5hcHBseSBwYXRjaCAhcHJldl9lbHQgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwicGF0Y2hcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICAoZ2V0X29uX2Rpc3BsYXkgKCkpIHN0YXRlIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZTtcbiAgICAgICB0aW1lcl9zdG9wIFwib25fZGlzcGxheVwiO1xuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92IChJbmNyLlZhci52YWx1ZSBtb2RlbF92KTtcbiAgICAgICBsZXQgb2xkX3RhZ19uYW1lID0gZ2V0X3RhZ19uYW1lICFwcmV2X2h0bWwgaW5cbiAgICAgICBsZXQgbmV3X3RhZ19uYW1lID0gZ2V0X3RhZ19uYW1lIGh0bWwgaW5cbiAgICAgICBsZXQgdGFnc190aGVfc2FtZSA9IE9wdGlvbi5lcXVhbCBTdHJpbmcuZXF1YWwgb2xkX3RhZ19uYW1lIG5ld190YWdfbmFtZSBpblxuICAgICAgIHByZXZfaHRtbCA6PSBodG1sO1xuICAgICAgIHByZXZfZWx0IDo9IGVsdDtcbiAgICAgICB0aW1lcl9zdG9wIFwidG90YWxcIjtcbiAgICAgICBpZiBzaG91bGRfZGVidWcgKCkgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCItLS0tLS0tXCIpO1xuICAgICAgICgqIENoYW5naW5nIHRoZSB0YWcgbmFtZSBjYXVzZXMgZm9jdXMgdG8gYmUgbG9zdC4gIFJlZm9jdXMgaW4gdGhhdCBjYXNlLiAqKVxuICAgICAgIGlmIG5vdCB0YWdzX3RoZV9zYW1lIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKClcbiAgICAgaW5cbiAgICAgKCogV2UgdXNlIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gc28gdGhhdCBicm93c2VyIHRlbGxzIHVzIHdoZXJlIGl0J3MgdGltZSB0b1xuICAgICAgICByZWZyZXNoIHRoZSBVSS4gQWxsIHRoZSBhY3Rpb25zIHdpbGwgYmUgcHJvY2Vzc2VkIGFuZCB0aGUgY2hhbmdlcyBwcm9wYWdhdGVkXG4gICAgICAgIHRvIHRoZSBET00gaW4gb25lIGZyYW1lLiAqKVxuICAgICBsZXQgcmVjIGNhbGxiYWNrICgpID1cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICAgICB0aGVuICgpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrKVxuICAgICBpblxuICAgICAoKiBXZSB3YW50IHRoZSByb290IGVsZW1lbnQgdG8gc3RhcnQgb3V0IGZvY3VzZWQsIHNvIHBlcmZvcm0gYW4gaW5pdGlhbFxuICAgICAgICB1cGRhdGUvcmVuZGVyLCB0aGVuIGltbWVkaWF0ZWx5IGZvY3VzIHRoZSByb290ICh1bmxlc3MgYSBub24tYm9keSBlbGVtZW50IGFscmVhZHlcbiAgICAgICAgaGFzIGZvY3VzKS4gIFRoaXMgZm9jdXNpbmcgY2FuJ3QgaGFwcGVuIGluc2lkZSBvZiB0aGUgYGNhbGxiYWNrYCBiZWNhdXNlIHRoZW4gaXRcbiAgICAgICAgd291bGQgcmVmb2N1cyByb290IGV2ZXJ5IGZyYW1lLiAgKilcbiAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgIChtYXRjaCBKcy5PcHQudG9fb3B0aW9uIERvbV9odG1sLmRvY3VtZW50IyMuYWN0aXZlRWxlbWVudCB3aXRoXG4gICAgICB8IFNvbWUgZWwgLT4gaWYgSnMuT3B0LnRlc3QgKERvbV9odG1sLkNvZXJjZVRvLmJvZHkgZWwpIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKClcbiAgICAgIHwgTm9uZSAtPiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKSk7XG4gICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrO1xuICAgICBEZWZlcnJlZC5uZXZlciAoKSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzdGFydF9ib25zYWkgPSBzdGFydF9ib25zYWlcbmVuZFxuXG5sZXQgc3RhcnRcbiAgICAgICh0eXBlIG1vZGVsIGFjdGlvbilcbiAgICAgID8oZGVidWcgPSBmYWxzZSlcbiAgICAgID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKVxuICAgICAgPyhuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPSBbXSlcbiAgICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgICAgfmluaXRpYWxfbW9kZWxcbiAgICAgIChtb2R1bGUgQXBwIDogQXBwX2ludGYuUyB3aXRoIHR5cGUgTW9kZWwudCA9IG1vZGVsIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gIHN0YXJ0X2JvbnNhaVxuICAgIH5kZWJ1Z1xuICAgIH5zdG9wXG4gICAgfm5hbWVkX2xvZ2dpbmdfZmlsdGVyc1xuICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgIH5pbml0aWFsX21vZGVsXG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQXBwXG5cbiAgICAgIGxldCBhY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBfID0gdHJ1ZVxuXG4gICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCA9XG4gICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICBsZXQlbWFwIGNvbXBvbmVudCA9IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgaW5cbiAgICAgICAgbGV0IHZpZXcgPSBDb21wb25lbnQudmlldyBjb21wb25lbnQgaW5cbiAgICAgICAgbGV0IGFwcGx5X2FjdGlvbiBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgX21vZGVsIGFjdGlvbiA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC5hcHBseV9hY3Rpb24gY29tcG9uZW50IGFjdGlvbiBzdGF0ZSB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSBfbW9kZWwgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LnVwZGF0ZV92aXNpYmlsaXR5IGNvbXBvbmVudCB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvbl9kaXNwbGF5IHN0YXRlIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC5vbl9kaXNwbGF5IGNvbXBvbmVudCBzdGF0ZSB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIHsgQXBwX2ludGYuUHJpdmF0ZS52aWV3OyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5IH1cbiAgICAgIDs7XG4gICAgZW5kKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbS5WZG9tXG5pbmNsdWRlIFZkb21faW5wdXRfd2lkZ2V0c19pbnRmXG5cbm1vZHVsZSBEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB0KVxuICAgIHRoZW4gZmFpbHdpdGhmIFwiQ2Fubm90IHJlcHJlc2VudCBub24tZmluaXRlIGZsb2F0IGFzIGRlY2ltYWw6ICVmXCIgdCAoKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHQgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGludmFyaWFudCB0O1xuICAgIHNwcmludGYgXCIlLjEyZ1wiIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBJbml0aWFsXG4gICAgKCogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIG1hcmtpbmcgYXMgaW52YWxpZCBhIGZpZWxkIHRoYXQgaGFzbid0IGV2ZXIgYmVlblxuICAgICAgIHRvdWNoZWQgYnkgdGhlIHVzZXIsIHRvIGltcHJvdmUgVVguICopXG4gICAgfCBWYWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgIHwgSW52YWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nXG4gICAgICAgIDsgbGFzdF92YWxpZCA6ICdhIG9wdGlvblxuICAgICAgICA7IGVycm9yIDogc3RyaW5nXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICB0eXBlICdhIHVwZGF0ZSA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgbGlmdCAodHlwZSBhKSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBhIHRcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgSW5pdGlhbCAtPiBcIlwiXG4gICAgICAgIHwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgPSBfIH0gLT4gaW5wdXRcbiAgICAgICAgfCBWYWxpZCB7IGlucHV0OyB2YWx1ZSB9IC0+XG4gICAgICAgICAgKG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGlucHV0IC0+IGlucHV0XG4gICAgICAgICAgIHwgTm9uZSAtPiBNLnRvX3N0cmluZyB2YWx1ZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBWYWxpZCB7IGlucHV0ID0gU29tZSBzOyB2YWx1ZSA9IE0ub2Zfc3RyaW5nIHMgfSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IEludmFsaWQgeyBpbnB1dCA9IHM7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciA9IEV4bi50b19zdHJpbmcgZXhuIH1cbiAgICAgIDs7XG4gICAgZW5kIDogU3RyaW5nYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA9IGEgdClcbiAgOztcblxuICBsZXQgaW5pdGlhbF9lbXB0eSA9IEluaXRpYWxcbiAgbGV0IHJldHVybiB2YWx1ZSA9IFZhbGlkIHsgaW5wdXQgPSBOb25lOyB2YWx1ZSB9XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgXyB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfSAtPiBsYXN0X3ZhbGlkXG4gICAgfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgfCBWYWxpZCBfIC0+IE5vbmVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+IFNvbWUgZXJyb3JcbiAgOztcblxuICBsZXQgaXNfaW52YWxpZCA9IGZ1bmN0aW9uXG4gICAgfCBJbnZhbGlkIF8gLT4gdHJ1ZVxuICAgIHwgVmFsaWQgXyB8IEluaXRpYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfaW5pdGlhbF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgdXBkYXRlIG9sZCBuZXdfID1cbiAgICBtYXRjaCBvbGQsIG5ld18gd2l0aFxuICAgIHwgSW5pdGlhbCwgXyAtPiBuZXdfXG4gICAgfCBfLCBWYWxpZCBfIC0+IG5ld19cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSA9IG9sZCB9LCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBTb21lIG9sZDsgZXJyb3IgfVxuICAgIHwgKCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfVxuICAgICAgLCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciB9ICkgLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZDsgZXJyb3IgfVxuICAgIHwgSW52YWxpZCBfLCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gU29tZSBfOyBlcnJvciA9IF8gfSAtPiBuZXdfXG4gICAgfCBfLCBJbml0aWFsIC0+IG9sZFxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9pbnZhbGlkIHZhbGlkYXRlZCBhdHRycyA9XG4gIGlmIFZhbGlkYXRlZC5pc19pbnZhbGlkIHZhbGlkYXRlZFxuICB0aGVuIEF0dHIuY3JlYXRlIFwiYXJpYS1pbnZhbGlkXCIgXCJ0cnVlXCIgOjogYXR0cnNcbiAgZWxzZSBhdHRyc1xuOztcblxubW9kdWxlIFRpbWVfY29tcGF0ID0gc3RydWN0XG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFRpbWVfbnMuT2ZkYXkudFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nXG5cbiAgICAoKiBUaGUgYnJvd3NlciBleHBlY3RzIGEgSEg6bW0gZm9ybWF0IHdpdGggb3B0aW9uYWwgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIjtcbiAgICAgICBbVGltZV9ucy5PZmRheS50b19zdHJpbmddIHByb3ZpZGVzIHByZWNpc2lvbiBpbiBuYW5vc2Vjb25kcywgd2hpY2ggaXMgdG9vIG11Y2guICopXG4gICAgbGV0IHRvX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkudG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4gIGVuZFxuXG4gIGxldCB6b25lZCB6b25lIDogKG1vZHVsZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBUaW1lX25zLnQpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVGltZV9ucy50XG5cbiAgICAgICgqIEZvcm1hdCBmcm9tIHRoZSBicm93c2VyOiB5eXl5LU1NLWRkVGhoOm1tICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgcGFydHMgPSBTdHJpbmcuc3BsaXRfb25fY2hhcnMgcyB+b246WyAnVCc7ICc6JyBdIGluXG4gICAgICAgIGxldCBkYXRlID0gTGlzdC5udGhfZXhuIHBhcnRzIDAgfD4gRGF0ZS5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IGhyID0gTGlzdC5udGhfZXhuIHBhcnRzIDEgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgbWluID0gTGlzdC5udGhfZXhuIHBhcnRzIDIgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBUaW1lX25zLk9mZGF5LmNyZWF0ZSB+aHIgfm1pbiAoKSBpblxuICAgICAgICBUaW1lX25zLm9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IHMgPSBUaW1lX25zLnRvX3N0cmluZ19pc284NjAxX2Jhc2ljIH56b25lIHQgaW5cbiAgICAgICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0IGEgeXl5eS1NTS1kZFRoaDptbSBmb3JtYXQgYW5kIGl0IGFsbG93c1xuICAgICAgICAgICB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiLlxuXG4gICAgICAgICAgIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIGZvcm1hdDogMjAxOS0wMS0zMFQwMTowMDowMC4wMDAwMDAwMDArMDE6MDBcblxuICAgICAgICAgICBkZXNpcmVkIGZvcm1hdCBhZnRlciBjdXR0aW5nOiAgIDIwMTktMDEtMzBUMDE6MDA6MDBcbiAgICAgICAgKilcbiAgICAgICAgU3RyaW5nLmxzcGxpdDJfZXhuIH5vbjonLicgcyB8PiBUdXBsZTIuZ2V0MVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCBhdHRycyA9IGlmIGRpc2FibGVkIHRoZW4gQXR0ci5kaXNhYmxlZCA6OiBhdHRycyBlbHNlIGF0dHJzXG5sZXQgYWRkX2F0dHJzIGF0dHJzJyBhdHRycyA9IGF0dHJzIEAgYXR0cnMnIHw+IEF0dHJzLm1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc1xuXG5sZXQgc3RydWN0dXJhbF9saXN0ID8ob3JpZW50YXRpb24gPSBgVmVydGljYWwpIGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IGxheW91dF9zdHlsZSA9XG4gICAgbWF0Y2ggb3JpZW50YXRpb24gd2l0aFxuICAgIHwgYFZlcnRpY2FsIC0+IENzc19nZW4uKGRpc3BsYXkgYEJsb2NrKVxuICAgIHwgYEhvcml6b250YWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgSW5saW5lX2Jsb2NrKVxuICBpblxuICBOb2RlLnVsXG4gICAgfmF0dHI6XG4gICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgIChbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImxpc3Qtc3R5bGVcIiB+dmFsdWU6XCJub25lXCIgQD4gbWFyZ2luX2xlZnQgKGBQeCAwKSlcbiAgICAgICAgICBdXG4gICAgICAgICAgfD4gYWRkX2F0dHJzIGF0dHJzKSlcbiAgICAoTGlzdC5tYXAgY2hpbGRyZW4gfmY6KGZ1biBjaGlsZCAtPiBOb2RlLmxpIH5hdHRyOihBdHRyLnN0eWxlIGxheW91dF9zdHlsZSkgWyBjaGlsZCBdKSlcbjs7XG5cbm1vZHVsZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmUgPSBKc19vZl9vY2FtbC5Kcy5VbnNhZmVcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG5cbiAgbGV0IGlzX2FjdGl2ZSBlbGVtZW50ID1cbiAgICBsZXQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQgPSBVbnNhZmUuZ2V0IGRvY3VtZW50IChKcy5zdHJpbmcgXCJhY3RpdmVFbGVtZW50XCIpIGluXG4gICAgcGh5c19lcXVhbCBlbGVtZW50IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50XG4gIDs7XG5cbiAgbGV0IHZhbHVlX3Byb3BlcnR5ID0gSnMuc3RyaW5nIFwidmFsdWVcIlxuICBsZXQgZ2V0X3ZhbHVlIGVsZW1lbnQgOiAnYSBKcy50ID0gVW5zYWZlLmdldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5XG4gIGxldCBzZXRfdmFsdWUgZWxlbWVudCB2YWx1ZSA9IFVuc2FmZS5zZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eSB2YWx1ZVxuXG4gIGxldCBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiA9XG4gICAgKCogVGhpcyBldmVudCBoYW5kbGVyIG5vcm1hbGl6ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBlbGVtZW50IG9uIHRoZSBbY2hhbmdlXSBldmVudC5cbiAgICAgICBGb3IgYSB0ZXh0IGVudHJ5LCB0aGlzIG1lYW5zIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlciwgYW5kIHdoZW4gdGhlIHVzZXIgYmx1cnNcbiAgICAgICB0aGUgZWxlbWVudC4gV2h5IGRvbid0IHdlIHNpbXBseSBbdG9fc3RyaW5nXSB0aGUgdmFsdWUgaW4gdGhlIG1vZGVsPyBCZWNhdXNlIGZvclxuICAgICAgIHNvbWUgaW5wdXQgZWxlbWVudHMsIHlvdSBjYW4gaGF2ZSBhIGNoYW5nZSBldmVudCB0aGF0IGZpcmVzIGFmdGVyIHRoZSB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgYnV0IGJlZm9yZSBbSW5jcl9kb21dIGNhbiB1cGRhdGUgdGhlIG1vZGVsLiBGb3IgZXhhbXBsZSwgdGhpcyBoYXBwZW5zIHdoZW4geW91XG4gICAgICAgcHJlc3MgdGhlIHVwIGFycm93IG9uIGEgbnVtYmVyIGlucHV0LiBUaGlzIGxlYWRzIHRvIGEgYnVnIHdoZXJlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgICAgICBtb2RlbCBzd2FwcyBiYWNrIGFuZCBmb3J0aCB3aXRoIHRoZSB2YWx1ZSBpbiB0aGUgZWxlbWVudC4gKilcbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgXyA9XG4gICAgICBsZXQgdmFsdWUgPSBKcy50b19zdHJpbmcgKGdldF92YWx1ZSBlbGVtZW50KSBpblxuICAgICAgT3B0aW9uLml0ZXIgKGYgdmFsdWUpIH5mOihmdW4gbm9ybWFsaXplZCAtPlxuICAgICAgICBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIG5vcm1hbGl6ZWQpKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgPSBEb20uaGFuZGxlciBjaGFuZ2VfaGFuZGxlciBpblxuICAgIGFkZEV2ZW50TGlzdGVuZXIgZWxlbWVudCBFdmVudC5jaGFuZ2UgY2hhbmdlX2hhbmRsZXIgSnMuX2ZhbHNlXG4gIDs7XG5cbiAgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBldmVudF9pZCA6IGV2ZW50X2xpc3RlbmVyX2lkIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyB2YWx1ZSA6IHN0cmluZ1xuICAgICAgICA7IGYgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgICB9XG5cbiAgICAgIGxldCBzZXhwX29mX3QgeyB2YWx1ZTsgXyB9ID0gU2V4cC5BdG9tIHZhbHVlXG4gICAgICBsZXQgY29tYmluZSBfbGVmdCByaWdodCA9IHJpZ2h0XG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCB7IElucHV0LnZhbHVlOyBmIH0gZWxlbWVudCA9XG4gICAgICBpZiBub3QgKGlzX2FjdGl2ZSBlbGVtZW50KSB0aGVuIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgdmFsdWUpO1xuICAgICAgbGV0IGV2ZW50X2lkID0gaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgaW5cbiAgICAgIHsgU3RhdGUuZXZlbnRfaWQgfVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgX2lucHV0IHsgU3RhdGUuZXZlbnRfaWQgfSBfZWxlbWVudCA9IHJlbW92ZUV2ZW50TGlzdGVuZXIgZXZlbnRfaWRcblxuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0IHN0YXRlIGVsZW1lbnQgPVxuICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgIGxldCB7IFN0YXRlLmV2ZW50X2lkIH0gPSBpbml0IG5ld19pbnB1dCBlbGVtZW50IGluXG4gICAgICBzdGF0ZS5TdGF0ZS5ldmVudF9pZCA8LSBldmVudF9pZFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgQXR0ci5Ib29rcy5NYWtlIChNKVxuXG4gICgqIFtjcmVhdGUgdmFsdWUgfmZdIHdpbGwgc2V0IHRoZSBcInZhbHVlXCIgcHJvcGVydHkgdG8gW3ZhbHVlXSBpZiB0aGUgZWxlbWVudCBpcyBub3RcbiAgICAgZm9jdXNlZCBhbmQgb24gZWFjaCBjaGFuZ2UsIHJ1biB0aGUgY3VycmVudCB2YWx1ZSB0aHJvdWdoIFtmXSB0byByZS1zZXQgaXQuIEFnYWluLFxuICAgICB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGUgZWxlbWVudCBpcyBub3QgZm9jdXNlZC4gSWYgW2ZdIHJldHVybnMgW05vbmVdLCBubyBjaGFuZ2VcbiAgICAgdGFrZXMgcGxhY2UuICopXG4gIGxldCBjcmVhdGUgdmFsdWUgfmYgPSBBdHRyLmNyZWF0ZV9ob29rIFwidmFsdWU6bm9ybWFsaXplZFwiIChjcmVhdGUgeyB2YWx1ZTsgZiB9KVxuZW5kXG5cbm1vZHVsZSBEcm9wZG93biA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIE5vZGUuc2VsZWN0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIuY2xhc3NfIFwid2lkZ2V0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBfIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgb25fY2hhbmdlIChJbnQub2Zfc3RyaW5nIHZhbHVlIHw+IExpc3QubnRoX2V4biB2YWx1ZXMpKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgKExpc3QubWFwaSB2YWx1ZXMgfmY6KGZ1biBpbmRleCB2YWx1ZSAtPlxuICAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAgWyBBdHRyLnZhbHVlIChJbnQudG9fc3RyaW5nIGluZGV4KVxuICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiAoZXF1YWwgdmFsdWUgc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgWyBOb2RlLnRleHQgKHRvX3N0cmluZyB2YWx1ZSkgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpNLmVxdWFsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCB2YWx1ZXMgPSBOb25lIDo6IExpc3QubWFwIHZhbHVlcyB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OlwiXCIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICBNLmFsbFxuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl9lbnVtX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCBNLmFsbCB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OlwiXCIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2JveCA9IHN0cnVjdFxuICBsZXQgaW1wbCA/KGV4dHJhX2F0dHJzID0gW10pID8oZGlzYWJsZWQgPSBmYWxzZSkgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgKCkgPVxuICAgIE5vZGUubGFiZWxcbiAgICAgIH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBleHRyYV9hdHRycylcbiAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgIH5hdHRyOlxuICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUgKCkpXG4gICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgaXNfY2hlY2tlZFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpKVxuICAgICAgICAgIFtdXG4gICAgICA7IE5vZGUudGV4dCBsYWJlbFxuICAgICAgXVxuICA7O1xuXG4gIGxldCBzaW1wbGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSA9XG4gICAgTm9kZS5kaXZcbiAgICAgIH5hdHRyOihBdHRyLmNsYXNzXyBcImNoZWNrYm94LWNvbnRhaW5lclwiKVxuICAgICAgWyBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgKCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2xpc3QgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgICAgIH50b19zdHJpbmdcbiAgICA9XG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICAoWyBBdHRyLmNsYXNzZXMgWyBcIndpZGdldC1jaGVja2xpc3RcIjsgXCJjaGVja2JveC1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgQ2hlY2tib3guaW1wbFxuICAgICAgICAgICB+ZXh0cmFfYXR0cnNcbiAgICAgICAgICAgfmRpc2FibGVkXG4gICAgICAgICAgIH5pc19jaGVja2VkOihpc19jaGVja2VkIGl0ZW0pXG4gICAgICAgICAgIH5sYWJlbDoodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIH5vbl90b2dnbGU6KGZ1biAoKSAtPiBvbl90b2dnbGUgaXRlbSlcbiAgICAgICAgICAgKCkpKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBEaXNwbGF5IHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbCA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIHZhbHVlcyB+aXNfY2hlY2tlZCB+b25fdG9nZ2xlIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCBNLmFsbCB+aXNfY2hlY2tlZCB+b25fdG9nZ2xlIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGlfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vX2FjdGlvblxuICAgICAgfCBDbGVhcl9hbGxcbiAgICAgIHwgU2VsZWN0X2FsbFxuICBlbmRcblxuICBsZXQgaW1wbFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgPyhyZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yLk5vX2FjdGlvbilcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IG9wZW4gSnNfb2Zfb2NhbWwgaW5cbiAgICBsZXQgc2l6ZSA9IE9wdGlvbi52YWx1ZSBzaXplIH5kZWZhdWx0OihMaXN0Lmxlbmd0aCB2YWx1ZXMpIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgIDsgQXR0ci5jcmVhdGUgXCJzaXplXCIgKEludC50b19zdHJpbmcgc2l6ZSlcbiAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBldnQgKF8gOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IHRhcmdldCA9XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQuYmluZCBldnQjIy50YXJnZXQgRG9tX2h0bWwuQ29lcmNlVG8uc2VsZWN0KVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHRhcmdldCAtPiB0YXJnZXRcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgIFwiTXVsdGlfc2VsZWN0IFtvbl9jaGFuZ2VdIGV2ZW50IGZpcmVkIHdpdGggYSBtaXNzaW5nIHRhcmdldCBvciB0YXJnZXQgXFxcbiAgICAgICAgICAgICAgICAgdGhhdCB3YXMgbm90IGEgc2VsZWN0IGVsZW1lbnQuXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBjb2xsZWN0aW9uX3RvX2xpc3QgY29sbGVjdGlvbiA9XG4gICAgICAgICAgICBMaXN0LmluaXQgY29sbGVjdGlvbiMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmdldCAoY29sbGVjdGlvbiMjaXRlbSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3B0aW9ucyA9IGNvbGxlY3Rpb25fdG9fbGlzdCB0YXJnZXQjIy5vcHRpb25zIGluXG4gICAgICAgICAgbGV0IHNlbGVjdGVkX3ZhbHVlcyA9XG4gICAgICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QuemlwX2V4biB2YWx1ZXMgb3B0aW9ucykgfmY6KGZ1biAodmFsdWUsIG9wdGlvbikgLT5cbiAgICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKEpzLnRvX2Jvb2wgb3B0aW9uIyMuc2VsZWN0ZWQpIHZhbHVlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgb25fY2hhbmdlIChTZXQub2ZfbGlzdCAobW9kdWxlIE0pIHNlbGVjdGVkX3ZhbHVlcykpXG4gICAgICBdXG4gICAgICBAIGV4dHJhX2F0dHJzXG4gICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICBpblxuICAgIGxldCBvcHRpb25zID1cbiAgICAgIExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICAgIGxldCBpc19zZWxlY3RlZCA9IFNldC5tZW0gc2VsZWN0ZWQgdmFsdWUgaW5cbiAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAoKiBbQXR0ci5ib29sX3Byb3BlcnR5XSBrZWVwcyB0aGUgc3RhdGUgb2YgdGhlIG9wdGlvbiBpbiBzeW5jIGJ5IHNldHRpbmcgdGhlIEpTXG4gICAgICAgICAgICAgcHJvcGVydHkuIFtBdHRyLnNlbGVjdGVkXSBtb2RpZmllcyB0aGUgRE9NIGF0dHJpYnV0ZSBzbyB0aGF0IHNlbGVjdGVkIG9wdGlvbnNcbiAgICAgICAgICAgICBjYW4gYmUgc3R5bGVkIHdpdGggQ1NTLiBbQXR0ci5zZWxlY3RlZF0gYWxvbmUgZG9lcyBub3QgdXBkYXRlIHRoZSBzdGF0ZVxuICAgICAgICAgICAgIHByb3Blcmx5IGlmIHRoZSBtb2RlbCBjaGFuZ2VzLCBzbyBib3RoIGFyZSBuZWVkZWQuICopXG4gICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgIChbIFNvbWUgKEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgaXNfc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgOyBTb21lXG4gICAgICAgICAgICAgICAgICAgIChBdHRyLm9uX2NsaWNrIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXNfcmVwZWF0ZWRfY2xpY2sgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKEpzLnRvX2Jvb2wgZXZ0IyMuY3RybEtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2V0LmVxdWFsIHNlbGVjdGVkIChTZXQuc2luZ2xldG9uIChtb2R1bGUgTSkgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHdhc19yZXBlYXRlZF9jbGljaywgcmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IGZhbHNlLCBfIHwgdHJ1ZSwgTm9fYWN0aW9uIC0+IEVmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBDbGVhcl9hbGwgLT4gb25fY2hhbmdlIChTZXQuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBTZWxlY3RfYWxsIC0+IG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSB2YWx1ZXMpKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXJfb3B0KSlcbiAgICAgICAgICBbIE5vZGUudGV4dCAoTS50b19zdHJpbmcgdmFsdWUpIF0pXG4gICAgaW5cbiAgICBOb2RlLnNlbGVjdCB+YXR0cjooQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMpIG9wdGlvbnNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB2YWx1ZXNcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtX3NldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c2l6ZVxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgTS5hbGxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICBtb2R1bGUgQ2FsbF9vbl9pbnB1dF93aGVuID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgVGV4dF9jaGFuZ2VkXG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3RcblxuICAgIGxldCBsaXN0ZW5lciA9IGZ1bmN0aW9uXG4gICAgICB8IFRleHRfY2hhbmdlZCAtPiBBdHRyLm9uX2lucHV0XG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3QgLT4gQXR0ci5vbl9jaGFuZ2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbm9ybWFsaXplIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUykgcyA9XG4gICAgbWF0Y2ggTS50b19zdHJpbmcgKE0ub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBfIC0+IFNvbWUgXCJcIlxuICAgIHwgdiAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgbWF5YmVfb25fcmV0dXJuIG9uX3JldHVybiBhdHRycyA9XG4gICAgbWF0Y2ggb25fcmV0dXJuIHdpdGhcbiAgICB8IE5vbmUgLT4gYXR0cnNcbiAgICB8IFNvbWUgb25fcmV0dXJuIC0+XG4gICAgICBBdHRyLm9uX2tleWRvd24gKGZ1biBldiAtPlxuICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuIG9uX3JldHVybiAoKSBlbHNlIEVmZmVjdC5JZ25vcmUpXG4gICAgICA6OiBhdHRyc1xuICA7O1xuXG4gIGxldCBpbnB1dF9ub2RlID8oZXh0cmFfYXR0cnMgPSBbXSkgPyhkaXNhYmxlZCA9IGZhbHNlKSA/KHBsYWNlaG9sZGVyID0gXCJcIikgYXR0cnMgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKGF0dHJzXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyOyBBdHRyLmNyZWF0ZSBcInNwZWxsY2hlY2tcIiBcImZhbHNlXCIgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcblxuICBsZXQgcmF3ID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyID9vbl9yZXR1cm4gfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgWyBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgdmFsdWU7IEF0dHIub25faW5wdXQgKGZ1biBfZXYgLT4gb25faW5wdXQpIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlclxuICA7O1xuXG4gIGxldCBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8oc2hvdWxkX25vcm1hbGl6ZSA9IHRydWUpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH50eXBlX2F0dHJzXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIGxldCB2YWx1ZSA9IE9wdGlvbi52YWx1ZV9tYXAgfmY6TS50b19zdHJpbmcgdmFsdWUgfmRlZmF1bHQ6XCJcIiBpblxuICAgICAgaWYgc2hvdWxkX25vcm1hbGl6ZVxuICAgICAgdGhlbiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+Zjoobm9ybWFsaXplIChtb2R1bGUgTSkpXG4gICAgICBlbHNlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihjb25zdCBOb25lKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBvbl9pbnB1dCBOb25lXG4gICAgICAgIHwgcyAtPiBvbl9pbnB1dCAoT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTS5vZl9zdHJpbmcgcykpKVxuICAgIDsgdmFsdWVcbiAgICBdXG4gICAgfD4gYWRkX2F0dHJzIHR5cGVfYXR0cnNcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ2FibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0ZXh0XCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgdmFsaWRhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIGxldCAobW9kdWxlIFYpID0gVmFsaWRhdGVkLmxpZnQgKG1vZHVsZSBNKSBpblxuICAgIGxldCB2YWx1ZV9hdHRyID1cbiAgICAgIG1hdGNoICh2YWx1ZSA6IFYudCkgd2l0aFxuICAgICAgfCBJbml0aWFsIC0+IEF0dHIuc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiBcIlwiXG4gICAgICB8IF8gLT4gVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgKFYudG9fc3RyaW5nIHZhbHVlKSB+Zjoobm9ybWFsaXplIChtb2R1bGUgVikpXG4gICAgaW5cbiAgICBbIENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgcyAtPlxuICAgICAgICBvbl9pbnB1dCAoVi5vZl9zdHJpbmcgcykpXG4gICAgOyB2YWx1ZV9hdHRyXG4gICAgOyBBdHRyLnR5cGVfIFwidGV4dFwiXG4gICAgXVxuICAgIHw+IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm5cbiAgICB8PiBtYXliZV9pbnZhbGlkIHZhbHVlXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlclxuICA7O1xuXG4gIGxldCB0ZXh0ID9leHRyYV9hdHRycyA/Y2FsbF9vbl9pbnB1dF93aGVuID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgb2Zfc3RyaW5nYWJsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCBudW1iZXJcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJudW1iZXJcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCByYW5nZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInJhbmdlXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgdGltZSA/ZXh0cmFfYXR0cnMgP2NhbGxfb25faW5wdXRfd2hlbiA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH52YWx1ZSB+b25faW5wdXQgKCkgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFRpbWVfY29tcGF0Lk9mZGF5KVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRpbWVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCBkYXRlID9leHRyYV9hdHRycyA/Y2FsbF9vbl9pbnB1dF93aGVuID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgRGF0ZSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRlXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgZGF0ZXRpbWVfbG9jYWxcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/dXRjX29mZnNldFxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBob3VycyA9XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIHV0Y19vZmZzZXRcbiAgICAgICAgKCogZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgdGltZSB6b25lIGRpZmZlcmVuY2UsIGluIG1pbnV0ZXMsIGZyb20gY3VycmVudFxuICAgICAgICAgICBsb2NhbGUgdG8gVVRDLiBVdGMgb2Zmc2V0IGlzIHRoZSBkaWZmZXJlbmNlIGZyb20gVVRDIHRvIGN1cnJlbnQgbG9jYWxlIHdoaWNoXG4gICAgICAgICAgIGlzIHdoZXJlIHRoZSBtaW51cyBjb21lcyBmcm9tLlxuXG4gICAgICAgICAgIFRoZSBtaW51dGVzIGhhdmUgdG8gYmUgY29udmVydGVkIHRvIGhvdXJzIHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdFxuICAgICAgICAgICBUaW1lLlpvbmUub2ZfdXRjX29mZnNldCBleHBlY3RzIGZvciB0aGUgdXRjX29mZnNldC4gKilcbiAgICAgICAgfmRlZmF1bHQ6KChuZXclanMgSnNfb2Zfb2NhbWwuSnMuZGF0ZV9ub3cpIyNnZXRUaW1lem9uZU9mZnNldCAvIC02MClcbiAgICAgICAgfmY6KGZ1biB1dGNfb2Zmc2V0IC0+IFRpbWVfbnMuU3Bhbi50b19ociB1dGNfb2Zmc2V0IHw+IEZsb2F0LnRvX2ludClcbiAgICBpblxuICAgIGxldCAobW9kdWxlIFpvbmVkX3RpbWUpID0gVGltZV9jb21wYXQuem9uZWQgKFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IH5ob3VycykgaW5cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBab25lZF90aW1lKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZXRpbWUtbG9jYWxcIiBdXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgdGV4dF9hcmVhXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIE5vZGUudGV4dGFyZWFcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlclxuICAgICAgICAgICAgOyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgb25faW5wdXQgdmFsdWUpXG4gICAgICAgICAgICA7IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOk9wdGlvbi5yZXR1cm5cbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFtdXG4gIDs7XG5cbiAgKCogQWNjb3JkaW5nIHRvXG4gICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dC9jb2xvciNWYWx1ZSB0aGVcbiAgICAgdmFsdWUgbXVzdCBiZSBzZXQgaW4gaGV4IGZvcm1hdCBhbmQgd2lsbCBhbHdheXMgY29tZXMgYmFjayBpbiBoZXggZm9ybWF0LiAqKVxuICBsZXQgY29sb3JfcGlja2VyXG4gICAgICAgID8oZXh0cmFfYXR0ciA9IEF0dHIuZW1wdHkpXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IChgSGV4IHZhbHVlXykgPSB2YWx1ZSBpblxuICAgIFsgQXR0ci4odHlwZV8gXCJjb2xvclwiIEAgdmFsdWVfcHJvcCB2YWx1ZV8gQCBleHRyYV9hdHRyKVxuICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+IG9uX2lucHV0IChgSGV4IHMpKVxuICAgIF1cbiAgICB8PiBpbnB1dF9ub2RlID9kaXNhYmxlZFxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfdmFsaWRhdGlvbiA/KGV4dHJhX2F0dHJzID0gW10pIHRleHQgfnZhbGlkYXRpb24gfm9uX2NsaWNrID1cbiAgICBtYXRjaCB2YWxpZGF0aW9uIHdpdGhcbiAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHI6XG4gICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgKFsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayByZXN1bHQpOyBBdHRyLnR5cGVfIFwiYnV0dG9uXCIgXVxuICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgICB8IEVycm9yIHJlYXNvbiAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHI6XG4gICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgKFsgQXR0ci5kaXNhYmxlZFxuICAgICAgICAgICAgICA7IEF0dHIudHlwZV8gXCJidXR0b25cIlxuICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcFwiIHJlYXNvblxuICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcC1wb3NpdGlvblwiIFwidG9wXCJcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcblxuICBsZXQgc2ltcGxlID8oZXh0cmFfYXR0cnMgPSBbXSkgPyhkaXNhYmxlZCA9IGZhbHNlKSB0ZXh0IH5vbl9jbGljayA9XG4gICAgTm9kZS5idXR0b25cbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImJ1dHRvblwiOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrICgpKSBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmFkaW9fYnV0dG9ucyA9IHN0cnVjdFxuICBtb2R1bGUgU3R5bGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOYXRpdmVcbiAgICAgIHwgQnV0dG9uX2xpa2Ugb2YgeyBleHRyYV9hdHRycyA6IGNoZWNrZWQ6Ym9vbCAtPiBBdHRyLnQgbGlzdCB9XG5cbiAgICBsZXQgYmFyZWJvbmVzX2J1dHRvbl9saWtlID1cbiAgICAgIEJ1dHRvbl9saWtlXG4gICAgICAgIHsgZXh0cmFfYXR0cnMgPVxuICAgICAgICAgICAgKGZ1biB+Y2hlY2tlZCAtPlxuICAgICAgICAgICAgICAgaWYgY2hlY2tlZFxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjNDA0MDQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIEA+IGNvbG9yIChgSGV4IFwiI0Y3RjdGN1wiKSlcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjRUZFRkVGXCIpKVxuICAgICAgICAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGhpZGVfbmF0aXZlX2lucHV0cyA9XG4gICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImFwcGVhcmFuY2VcIiB+dmFsdWU6XCJub25lXCIgQD4gdW5pZm9ybV9tYXJnaW4gKGBQeCAwKSlcbiAgOztcblxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhzdHlsZSA6IFN0eWxlLnQgPSBOYXRpdmUpXG4gICAgICAgIH5vcmllbnRhdGlvblxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfmVxdWFsXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBsZXQgaW5wdXRfYXR0cnMsIGxhYmVsX2F0dHJzID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTmF0aXZlIC0+IFtdLCBmdW4gfmNoZWNrZWQ6XyAtPiBbXVxuICAgICAgfCBCdXR0b25fbGlrZSB7IGV4dHJhX2F0dHJzIH0gLT4gWyBBdHRyLnN0eWxlIGhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+b3JpZW50YXRpb25cbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LXJhZGlvLWJ1dHRvbnNcIjsgXCJyYWRpby1idXR0b24tY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIGxldCBjaGVja2VkID0gT3B0aW9uLnZhbHVlX21hcCBzZWxlY3RlZCB+ZGVmYXVsdDpmYWxzZSB+ZjooZXF1YWwgaXRlbSkgaW5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIChsYWJlbF9hdHRycyB+Y2hlY2tlZCkpXG4gICAgICAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLm5hbWUgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLmNsYXNzZXMgWyBcInJhZGlvLWJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayBpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgQCBpbnB1dF9hdHRyc1xuICAgICAgICAgICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkKSlcbiAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgVmVydGljYWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIHZhbHVlc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNfaG9yaXpvbnRhbFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgSG9yaXpvbnRhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgdmFsdWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBKcyA9IEpzX29mX29jYW1sLkpzXG5cbiAgbGV0IGFjY2VwdF9hdHRycyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEF0dHIuZW1wdHlcbiAgICB8IFNvbWUgYWNjZXB0cyAtPlxuICAgICAgQXR0ci5jcmVhdGVcbiAgICAgICAgXCJhY2NlcHRcIlxuICAgICAgICAoTGlzdC5tYXAgYWNjZXB0cyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBgRXh0ZW5zaW9uIHMgLT4gaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCIuXCIgdGhlbiBzIGVsc2UgXCIuXCIgXiBzXG4gICAgICAgICAgIHwgYE1pbWV0eXBlIHMgLT4gcylcbiAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIilcbiAgOztcblxuICBsZXQgbGlzdCA/KGV4dHJhX2F0dHJzID0gW10pID9hY2NlcHQgfm9uX2lucHV0ICgpID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZpbGVzID1cbiAgICAgICAgICAgICAgICAgIExpc3QuaW5pdCBmaWxlX2xpc3QjIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbGVfbGlzdCMjaXRlbSBpXG4gICAgICAgICAgICAgICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAgICAgIH5tZXNzYWdlOlslc3RyaW5nIFwiY291bGRuJ3QgZ2V0IGZpbGUgJXtpI0ludH1cIl0pXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvbl9pbnB1dCBmaWxlcylcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuXG4gIGxldCBzaW5nbGUgPyhleHRyYV9hdHRycyA9IFtdKSA/YWNjZXB0IH5vbl9pbnB1dCAoKSA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiZmlsZVwiXG4gICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmaWxlID0gZmlsZV9saXN0IyNpdGVtIDAgfD4gSnMuT3B0LnRvX29wdGlvbiBpblxuICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGUpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAoQykgSmVhbi1DaHJpc3RvcGhlIEZpbGxpYXRyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAqKVxuKCogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAqKVxuKCogIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgICAgICAgICAgICAqKVxuKCogIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAqKVxuKCogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqKVxuKCogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKnMgTWFwcyBvZiBpbnRlZ2VycyBpbXBsZW1lbnRlZCBhcyBQYXRyaWNpYSB0cmVlcywgZm9sbG93aW5nIENocmlzXG4gICAgT2thc2FraSBhbmQgQW5kcmV3IEdpbGwncyBwYXBlciB7XFxlbSBGYXN0IE1lcmdlYWJsZSBJbnRlZ2VyIE1hcHN9XG4gICAgKHtcXHR0XFxzbWFsbCBodHRwOi8vd3d3LmNzLmNvbHVtYmlhLmVkdS9cXH57fWNkby9wYXBlcnMuaHRtbFxcI21sOThtYXBzfSkuXG4gICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG1vZHVsZSBbUHRzZXRdIHdoaWNoIGlzIGFsc28gYmFzZWQgb24gdGhlXG4gICAgc2FtZSBkYXRhLXN0cnVjdHVyZS4gKilcblxudHlwZSBrZXkgPSBpbnRcblxudHlwZSAnYSB0ID1cbiAgfCBFbXB0eVxuICB8IExlYWYgb2YgaW50ICogJ2FcbiAgfCBCcmFuY2ggb2YgaW50ICogaW50ICogJ2EgdCAqICdhIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5IHQgPSB0ID0gRW1wdHlcblxubGV0IHplcm9fYml0IGsgbSA9IChrIGxhbmQgbSkgPT0gMFxuXG5sZXQgcmVjIG1lbSBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGosXykgLT4gayA9PSBqXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBtZW0gayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCByZWMgZmluZCBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGsgPT0gaiB0aGVuIHggZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IGZpbmQgayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCBmaW5kX29wdCBrIG0gPSB0cnkgU29tZSAoZmluZCBrIG0pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuKCogTm90ZTogZmluZF9maXJzdC9sYXN0IGhhdmUgdG8gbG9vayBpbiBib3RoIHN1YnRyZWVzXG4gICBhcyB0aGVzZSBhcmUgbGl0dGxlLWVuZGlhbiBQYXRyaWNpYSB0cmVlcyAqKVxubGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPCByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrIDwgcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrID4gcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA+IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbG93ZXN0X2JpdCB4ID0geCBsYW5kICgteClcblxubGV0IGJyYW5jaGluZ19iaXQgcDAgcDEgPSBsb3dlc3RfYml0IChwMCBseG9yIHAxKVxuXG5sZXQgbWFzayBwIG0gPSBwIGxhbmQgKG0tMSlcblxubGV0IGpvaW4gKHAwLHQwLHAxLHQxKSA9XG4gIGxldCBtID0gYnJhbmNoaW5nX2JpdCBwMCBwMSBpblxuICBpZiB6ZXJvX2JpdCBwMCBtIHRoZW5cbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDAsIHQxKVxuICBlbHNlXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQxLCB0MClcblxubGV0IG1hdGNoX3ByZWZpeCBrIHAgbSA9IChtYXNrIGsgbSkgPT0gcFxuXG5sZXQgYWRkIGsgeCB0ID1cbiAgbGV0IHJlYyBpbnMgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTGVhZiAoayx4KVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+XG4gICAgICBpZiBqID09IGsgdGhlbiBMZWFmIChrLHgpIGVsc2Ugam9pbiAoaywgTGVhZiAoayx4KSwgaiwgdClcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIEJyYW5jaCAocCwgbSwgaW5zIHQwLCB0MSlcblx0ZWxzZVxuXHQgIEJyYW5jaCAocCwgbSwgdDAsIGlucyB0MSlcbiAgICAgIGVsc2Vcblx0am9pbiAoaywgTGVhZiAoayx4KSwgcCwgdClcbiAgaW5cbiAgaW5zIHRcblxubGV0IHNpbmdsZXRvbiBrIHYgPVxuICBhZGQgayB2IGVtcHR5XG5cbmxldCBicmFuY2ggPSBmdW5jdGlvblxuICB8IChfLF8sRW1wdHksdCkgLT4gdFxuICB8IChfLF8sdCxFbXB0eSkgLT4gdFxuICB8IChwLG0sdDAsdDEpICAgLT4gQnJhbmNoIChwLG0sdDAsdDEpXG5cbmxldCByZW1vdmUgayB0ID1cbiAgbGV0IHJlYyBybXYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPiBpZiBrID09IGogdGhlbiBFbXB0eSBlbHNlIHRcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgcm12IHQwLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgdDAsIHJtdiB0MSlcbiAgICAgIGVsc2Vcblx0dFxuICBpblxuICBybXYgdFxuXG5sZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gY2FyZGluYWwgdDAgKyBjYXJkaW5hbCB0MVxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGl0ZXIgZiB0MDsgaXRlciBmIHQxXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwIGYgdDAsIG1hcCBmIHQxKVxuXG5sZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgayB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcGkgZiB0MCwgbWFwaSBmIHQxKVxuXG5sZXQgcmVjIGZvbGQgZiBzIGFjY3UgPSBtYXRjaCBzIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeCBhY2N1XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvbGQgZiB0MCAoZm9sZCBmIHQxIGFjY3UpXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiAoaywgdikgIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvcl9hbGwgcCB0MCAmJiBmb3JfYWxsIHAgdDFcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChrLCB2KSAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBleGlzdHMgcCB0MCB8fCBleGlzdHMgcCB0MVxuXG5sZXQgcmVjIGZpbHRlciBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSBhcyB0IC0+IGlmIHByIGsgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlciBwciB0MCwgZmlsdGVyIHByIHQxKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgLT4gKG1hdGNoIHByIGsgdiB3aXRoIFNvbWUgdicgLT4gTGVhZiAoaywgdicpIHwgTm9uZSAtPiBFbXB0eSlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXJfbWFwIHByIHQwLCBmaWx0ZXJfbWFwIHByIHQxKVxuXG5sZXQgcGFydGl0aW9uIHAgcyA9XG4gIGxldCByZWMgcGFydCAodCxmIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBwIGsgdiB0aGVuIChhZGQgayB2IHQsIGYpIGVsc2UgKHQsIGFkZCBrIHYgZilcbiAgICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBwYXJ0IChwYXJ0IGFjYyB0MCkgdDFcbiAgaW5cbiAgcGFydCAoRW1wdHksIEVtcHR5KSBzXG5cbmxldCByZWMgY2hvb3NlID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2UgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHJlYyBjaG9vc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2Vfb3B0IHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCBzcGxpdCB4IG0gPVxuICBsZXQgY29sbCBrIHYgKGwsIGIsIHIpID1cbiAgICBpZiBrIDwgeCB0aGVuIGFkZCBrIHYgbCwgYiwgclxuICAgIGVsc2UgaWYgayA+IHggdGhlbiBsLCBiLCBhZGQgayB2IHJcbiAgICBlbHNlIGwsIFNvbWUgdiwgclxuICBpblxuICBmb2xkIGNvbGwgbSAoZW1wdHksIE5vbmUsIGVtcHR5KVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtaW5fYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtaW5fYmluZGluZyB0IGluXG4gICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCAobWluX2JpbmRpbmdfb3B0IHMsIG1pbl9iaW5kaW5nX29wdCB0KSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtYXhfYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtYXhfYmluZGluZyB0IGluXG4gICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCBtYXhfYmluZGluZ19vcHQgcywgbWF4X2JpbmRpbmdfb3B0IHQgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IGJpbmRpbmdzIG0gPVxuICBmb2xkIChmdW4gayB2IGFjYyAtPiAoaywgdikgOjogYWNjKSBtIFtdXG5cbigqIHdlIG9yZGVyIGNvbnN0cnVjdG9ycyBhcyBFbXB0eSA8IExlYWYgPCBCcmFuY2ggKilcbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9XG4gIGxldCByZWMgY29tcGFyZV9hdXggdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gMFxuICAgIHwgRW1wdHksIF8gLT4gLTFcbiAgICB8IF8sIEVtcHR5IC0+IDFcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgazEgazIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjbXAgeDEgeDJcbiAgICB8IExlYWYgXywgQnJhbmNoIF8gLT4gLTFcbiAgICB8IEJyYW5jaCBfLCBMZWFmIF8gLT4gMVxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgcDEgcDIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuXHRsZXQgYyA9IGNvbXBhcmUgbTEgbTIgaW5cblx0aWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2F1eCBsMSBsMiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggcjEgcjJcbiAgaW5cbiAgY29tcGFyZV9hdXggdDEgdDJcblxubGV0IGVxdWFsIGVxIHQxIHQyID1cbiAgbGV0IHJlYyBlcXVhbF9hdXggdDEgdDIgPSBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+IGsxID0gazIgJiYgZXEgeDEgeDJcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgcDEgPSBwMiAmJiBtMSA9IG0yICYmIGVxdWFsX2F1eCBsMSBsMiAmJiBlcXVhbF9hdXggcjEgcjJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgZXF1YWxfYXV4IHQxIHQyXG5cbmxldCBtZXJnZSBmIG0xIG0yID1cbiAgbGV0IGFkZCBtIGsgPSBmdW5jdGlvbiBOb25lIC0+IG0gfCBTb21lIHYgLT4gYWRkIGsgdiBtIGluXG4gICgqIGZpcnN0IGNvbnNpZGVyIGFsbCBiaW5kaW5ncyBpbiBtMSAqKVxuICBsZXQgbSA9IGZvbGRcbiAgICAgIChmdW4gazEgdjEgbSAtPiBhZGQgbSBrMSAoZiBrMSAoU29tZSB2MSkgKGZpbmRfb3B0IGsxIG0yKSkpIG0xIGVtcHR5IGluXG4gICgqIHRoZW4gYmluZGluZ3MgaW4gbTIgdGhhdCBhcmUgbm90IGluIG0xICopXG4gIGZvbGQgKGZ1biBrMiB2MiBtIC0+IGlmIG1lbSBrMiBtMSB0aGVuIG0gZWxzZSBhZGQgbSBrMiAoZiBrMiBOb25lIChTb21lIHYyKSkpXG4gICAgbTIgbVxuXG5sZXQgdXBkYXRlIHggZiBtID1cbiAgbWF0Y2ggZiAoZmluZF9vcHQgeCBtKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgeCBtXG4gIHwgU29tZSB6IC0+IGFkZCB4IHogbVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID0gbiA+PSAwICYmIChtIDwgMCB8fCBuIDwgbSlcblxubGV0IHJlYyB1bmlvbiBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSwgdCAgLT4gdFxuICB8IHQsIEVtcHR5ICAtPiB0XG4gIHwgTGVhZiAoayx2MSksIHQgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjEgfCBTb21lIHYyIC0+IGYgayB2MSB2MikgdFxuICB8IHQsIExlYWYgKGssdjIpIC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYyIHwgU29tZSB2MSAtPiBmIGsgdjEgdjIpIHRcbiAgfCAoQnJhbmNoIChwLG0sczAsczEpIGFzIHMpLCAoQnJhbmNoIChxLG4sdDAsdDEpIGFzIHQpIC0+XG4gICAgICBpZiBtID09IG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogVGhlIHRyZWVzIGhhdmUgdGhlIHNhbWUgcHJlZml4LiBNZXJnZSB0aGUgc3VidHJlZXMuICopXG5cdGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdDApLCB1bmlvbiBmIChzMSx0MSkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBbcV0gY29udGFpbnMgW3BdLiBNZXJnZSBbdF0gd2l0aCBhIHN1YnRyZWUgb2YgW3NdLiAqKVxuXHRpZiB6ZXJvX2JpdCBxIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdCksIHMxKVxuICAgICAgICBlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCBzMCwgdW5pb24gZiAoczEsdCkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG4gbSAmJiBtYXRjaF9wcmVmaXggcCBxIG4gdGhlblxuXHQoKiBbcF0gY29udGFpbnMgW3FdLiBNZXJnZSBbc10gd2l0aCBhIHN1YnRyZWUgb2YgW3RdLiAqKVxuXHRpZiB6ZXJvX2JpdCBwIG4gdGhlblxuXHQgIGJyYW5jaCAocSwgbiwgdW5pb24gZiAocyx0MCksIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChxLCBuLCB0MCwgdW5pb24gZiAocyx0MSkpXG4gICAgICBlbHNlXG5cdCgqIFRoZSBwcmVmaXhlcyBkaXNhZ3JlZS4gKilcblx0am9pbiAocCwgcywgcSwgdClcblxubGV0IHVuaW9uIGYgcyB0ID0gdW5pb24gZiAocyx0KVxuXG5sZXQgdG9fc2VxIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoaywgdikgLT4gZnVuICgpIC0+IFNlcS5Db25zKChrLHYpLCBzKVxuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCB0b19zZXFfZnJvbSBrIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoa2V5LCB2KSAtPiBpZiBrZXkgPj0gayB0aGVuIGZ1biAoKSAtPiBTZXEuQ29ucygoa2V5LHYpLCBzKSBlbHNlIHNcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgYWRkX3NlcSBzIG0gPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBtIHNcblxubGV0IG9mX3NlcSBzID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgc1xuIiwibGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcbiIsImxldCB2ZXJzaW9uID0gXCIyLjEuMlwiXG5cbmV4Y2VwdGlvbiBKc29uX2Vycm9yIG9mIHN0cmluZ1xuXG5sZXQganNvbl9lcnJvciBzID0gcmFpc2UgKEpzb25fZXJyb3IgcylcblxuZXhjZXB0aW9uIEVuZF9vZl9hcnJheVxuZXhjZXB0aW9uIEVuZF9vZl9vYmplY3RcbmV4Y2VwdGlvbiBFbmRfb2ZfdHVwbGVcbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanVuayBidWYgbiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAgICggKCkgKVxuIyA5OCBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCAxIC0+XG4jIDMgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgIChcbiAgICAgaWYgbiA8PSAwIHRoZW4gKClcbiAgICAgZWxzZSBiZWdpblxuICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKExleGluZy5sZXhlbWVfY2hhciBsZXhidWYgMCk7XG4gICAgICAgcmVhZF9qdW5rIGJ1ZiAobiAtIDEpIGxleGJ1ZlxuICAgICBlbmRcbiAgICAgKVxuIyAxMDkgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDExIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gXG5sZXQgcmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBuIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIGxldCBqdW5rX3N0YXJ0X3BvcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIHJlYWRfanVuayBidWYgbiBsZXhidWY7XG4gIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGp1bmtfc3RhcnRfcG9zICsgMVxuXG4jIDEyMyBcImxpYi9sZXhlcl91dGlscy5tbFwiXG4iLCJvcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuISBZb2pzb25cblxudHlwZSB0ID0gWW9qc29uLlNhZmUudFxuXG5sZXQgeW9qc29uX29mX3VuaXQgKCkgOiB0ID0gYE51bGxcbmxldCB5b2pzb25fb2ZfYm9vbCBiIDogdCA9IGBCb29sIGJcbmxldCB5b2pzb25fb2Zfc3RyaW5nIHN0ciA6IHQgPSBgU3RyaW5nIHN0clxubGV0IHlvanNvbl9vZl9ieXRlcyBieXRlcyA6IHQgPSBgU3RyaW5nIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgeW9qc29uX29mX2NoYXIgYyA6IHQgPSBgU3RyaW5nIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgeW9qc29uX29mX2ludCBuIDogdCA9IGBJbnQgblxubGV0IHlvanNvbl9vZl9mbG9hdCBuIDogdCA9IGBGbG9hdCBuXG5sZXQgeW9qc29uX29mX2ludDMyIChuIDogSW50MzIudCkgOiB0ID0gYEludGxpdCAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX2ludDY0IChuIDogSW50NjQudCkgOiB0ID0gYEludGxpdCAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX25hdGl2ZWludCBuIDogdCA9IGBJbnRsaXQgKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfcmVmIHlvanNvbl9vZl9fYSByZiA9IHlvanNvbl9vZl9fYSAhcmZcbmxldCB5b2pzb25fb2ZfbGF6eV90IHlvanNvbl9vZl9fYSBsdiA9IHlvanNvbl9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHlvanNvbl9vZl9vcHRpb24geW9qc29uX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4geW9qc29uX29mX19hIHhcbiAgfCBOb25lIC0+IGBOdWxsXG47O1xuXG5sZXQgeW9qc29uX29mX3BhaXIgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiAoYSwgYikgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYiBdXG47O1xuXG5sZXQgeW9qc29uX29mX3RyaXBsZSB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIHlvanNvbl9vZl9fYyAoYSwgYiwgYykgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYjsgeW9qc29uX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHlvanNvbl9vZl9saXN0IHlvanNvbl9vZl9fYSBsc3QgPSBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCB+Zjp5b2pzb25fb2ZfX2EgbHN0KSlcblxubGV0IHlvanNvbl9vZl9hcnJheSB5b2pzb25fb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHlvanNvbl9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgYExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCB5b2pzb25fb2ZfaGFzaHRibCB5b2pzb25fb2Zfa2V5IHlvanNvbl9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IGBMaXN0IFsgeW9qc29uX29mX2tleSBrOyB5b2pzb25fb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgYExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgeW9qc29uX29mX29wYXF1ZSBfID0gYFN0cmluZyBcIjxvcGFxdWU+XCJcbmxldCB5b2pzb25fb2ZfZnVuIF8gPSBgU3RyaW5nIFwiPGZ1bj5cIlxuXG5leGNlcHRpb24gT2ZfeW9qc29uX2Vycm9yIG9mIGV4biAqIHRcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3lvanNvbl9lcnJvcl9leG4gZXhjIHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKGV4YywgeW9qc29uKSlcbmxldCBvZl95b2pzb25fZXJyb3Igd2hhdCB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChGYWlsdXJlIHdoYXQsIHlvanNvbikpXG5cbmxldCB1bml0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+ICgpXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ1bml0X29mX3lvanNvbjogYE51bGwgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYm9vbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgQm9vbCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJvb2xfb2ZfeW9qc29uOiB0cnVlL2ZhbHNlIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHN0cmluZ19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInN0cmluZ19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBieXRlc19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJieXRlc19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBjaGFyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgeW9qc29uO1xuICAgIHN0ci5bMF1cbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgb2Ygc2l6ZSBvbmUgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnQgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGZsb2F0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBGbG9hdCB2IC0+IHZcbiAgfCBgSW50IGkgLT4gZmxvYXRfb2ZfaW50IGlcbiAgfCBgSW50bGl0IHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJmbG9hdF9vZl95b2pzb246IGZsb2F0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDMyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDMyLm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50MzIub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDMyX29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQ2NF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQ2NC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDY0Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQ2NF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IE5hdGl2ZWludC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibmF0aXZlaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCByZWZfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSByZWYgKGFfX29mX3lvanNvbiB5b2pzb24pXG5sZXQgbGF6eV90X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2ZfeW9qc29uIHlvanNvbilcblxubGV0IG9wdGlvbl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGVsIC0+IFNvbWUgKGFfX29mX3lvanNvbiBlbClcbjs7XG5cbmxldCBwYWlyX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBhLCBiXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJwYWlyX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCB0cmlwbGVfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24gY19fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb247IGNfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgbGV0IGMgPSBjX19vZl95b2pzb24gY195b2pzb24gaW5cbiAgICBhLCBiLCBjXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ0cmlwbGVfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IGxpc3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl95b2pzb24gaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJsaXN0X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBhcnJheV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgW10gLT4gW3x8XVxuICB8IGBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl95b2pzb24gaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl95b2pzb24gaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJhcnJheV9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaGFzaHRibF9vZl95b2pzb24ga2V5X29mX3lvanNvbiB2YWxfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IFsga195b2pzb247IHZfeW9qc29uIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2ZfeW9qc29uIGtfeW9qc29uKSB+ZGF0YToodmFsX29mX3lvanNvbiB2X3lvanNvbilcbiAgICAgIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogdHVwbGUgbGlzdCBuZWVkZWRcIiB5b2pzb25cbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG9wYXF1ZV9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwib3BhcXVlX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHlvanNvblxuOztcblxubGV0IGZ1bl9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwiZnVuX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgeW9qc29uXG47O1xuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX29mX2FycmF5ID0geW9qc29uX29mX2FycmF5XG4gIGxldCBhcnJheV9vZl95b2pzb24gPSBhcnJheV9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ib29sID0geW9qc29uX29mX2Jvb2xcbiAgbGV0IGJvb2xfb2ZfeW9qc29uID0gYm9vbF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9jaGFyID0geW9qc29uX29mX2NoYXJcbiAgbGV0IGNoYXJfb2ZfeW9qc29uID0gY2hhcl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9mbG9hdCA9IHlvanNvbl9vZl9mbG9hdFxuICBsZXQgZmxvYXRfb2ZfeW9qc29uID0gZmxvYXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50ID0geW9qc29uX29mX2ludFxuICBsZXQgaW50X29mX3lvanNvbiA9IGludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQzMiA9IHlvanNvbl9vZl9pbnQzMlxuICBsZXQgaW50MzJfb2ZfeW9qc29uID0gaW50MzJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50NjQgPSB5b2pzb25fb2ZfaW50NjRcbiAgbGV0IGludDY0X29mX3lvanNvbiA9IGludDY0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xpc3QgPSB5b2pzb25fb2ZfbGlzdFxuICBsZXQgbGlzdF9vZl95b2pzb24gPSBsaXN0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX25hdGl2ZWludCA9IHlvanNvbl9vZl9uYXRpdmVpbnRcbiAgbGV0IG5hdGl2ZWludF9vZl95b2pzb24gPSBuYXRpdmVpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfb3B0aW9uID0geW9qc29uX29mX29wdGlvblxuICBsZXQgb3B0aW9uX29mX3lvanNvbiA9IG9wdGlvbl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9yZWYgPSB5b2pzb25fb2ZfcmVmXG4gIGxldCByZWZfb2ZfeW9qc29uID0gcmVmX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3N0cmluZyA9IHlvanNvbl9vZl9zdHJpbmdcbiAgbGV0IHN0cmluZ19vZl95b2pzb24gPSBzdHJpbmdfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYnl0ZXMgPSB5b2pzb25fb2ZfYnl0ZXNcbiAgbGV0IGJ5dGVzX29mX3lvanNvbiA9IGJ5dGVzX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3VuaXQgPSB5b2pzb25fb2ZfdW5pdFxuICBsZXQgdW5pdF9vZl95b2pzb24gPSB1bml0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xhenlfdCA9IHlvanNvbl9vZl9sYXp5X3RcbiAgbGV0IGxhenlfdF9vZl95b2pzb24gPSBsYXp5X3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaGFzaHRibCA9IHlvanNvbl9vZl9oYXNodGJsXG4gIGxldCBoYXNodGJsX29mX3lvanNvbiA9IGhhc2h0Ymxfb2ZfeW9qc29uXG5lbmRcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgWW9qc29uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuISBTdGRMYWJlbHNcbm9wZW4gWW9qc29uX2NvbnZcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKHNwcmludGYgXCIlc19vZl95b2pzb246IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2MgbikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl95b2pzb246ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyB5b2pzb24gbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl95b2pzb246IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBcXFxuICAgICAgIGZpZWxkc1wiXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgeW9qc29uXG47O1xuIiwibW9kdWxlIFlvanNvbl9jb252X2Vycm9yID0gWW9qc29uX2NvbnZfZXJyb3Jcbm1vZHVsZSBZb2pzb25fY29udiA9IFlvanNvbl9jb252XG5tb2R1bGUgWW9qc29uYWJsZSA9IFlvanNvbmFibGVfaW50ZlxubW9kdWxlIFlvanNvbiA9IFlvanNvblxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gICAgfCBOb25lXG4gICAgfCBTb21lIG9mICdhXG5lbmRcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsIHBvbHlfZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG5sZXQgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBmdW4geCAtPiAheFxuIiwiIyAxIFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG50eXBlIG5vbnJlYyBpbnQgPSBpbnRcbnR5cGUgbm9ucmVjIGNoYXIgPSBjaGFyXG50eXBlIG5vbnJlYyBzdHJpbmcgPSBzdHJpbmdcbnR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXRcbnR5cGUgbm9ucmVjIGJvb2wgPSBib29sXG50eXBlIG5vbnJlYyB1bml0ID0gdW5pdFxudHlwZSBub25yZWMgZXhuID0gZXhuXG50eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5XG50eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdFxudHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uXG50eXBlIG5vbnJlYyBuYXRpdmVpbnQgPSBuYXRpdmVpbnRcbnR5cGUgbm9ucmVjIGludDMyID0gaW50MzJcbnR5cGUgbm9ucmVjIGludDY0ID0gaW50NjRcbnR5cGUgbm9ucmVjICdhIGxhenlfdCA9ICdhIGxhenlfdFxudHlwZSBub25yZWMgYnl0ZXMgPSBieXRlc1xuXG4jIDE4IFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG4oKiBXZSByZXF1aXJlIDQuMDggd2hpbGUgNC4wNyBhbHJlYWR5IGhhcyBhIFN0ZGxpYiBtb2R1bGUuXG4gICBJbiA0LjA3LCB0aGUgdHlwZSBlcXVhbGl0aWVzIG9uIFN0ZGxpYi5QZXJ2YXNpdmVzXG4gICBhcmUgbm90IHN0cm9uZyBlbm91Z2ggZm9yIHRoZSAnaW5jbHVkZSBTdGRsaWInXG4gICBiZWxvdyB0byBzYXRpc2Z5IHRoZSBzaWduYXR1cmUgY29uc3RyYWludHMgb25cbiAgIFBweF9kZXJpdmluZ19ydW50aW1lLlBlcnZhc2l2ZXMuICopXG5tb2R1bGUgU3RkbGliID0gU3RkbGliXG5cbmluY2x1ZGUgU3RkbGliXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgcmVzdWx0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuXG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcbmVuZFxuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5sZXQgY2xzcyA9IEF0dHIuY2xhc3NlcztcblxubGV0IGRpdl9jID0gY2xzID0+IGRpdih+YXR0cj1BdHRyLmNsYXNzXyhjbHMpKTtcbmxldCBzcGFuX2MgPSBjbHMgPT4gc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhjbHMpKTtcblxubGV0IGRpdl9lbXB0eSA9IGRpdih+YXR0cj1BdHRyLmNyZWF0ZShcInN0eWxlXCIsIFwiZGlzcGxheTpub25lXCIpLCBbXSk7XG5cbmxldCBkaXZfaWYgPSAocCwgYXRzLCBucykgPT4gcCA/IGRpdih+YXR0cj1BdHRyLm1hbnkoYXRzKSwgbnMpIDogZGl2X2VtcHR5O1xubGV0IHNwYW5faWYgPSAocCwgYXRzLCBucykgPT5cbiAgcCA/IHNwYW4ofmF0dHI9QXR0ci5tYW55KGF0cyksIG5zKSA6IHNwYW4oW10pO1xuXG5sZXQgdW5sZXNzID0gKHAsIGEpID0+IHAgPyBFZmZlY3QuTWFueShbXSkgOiBhO1xuIiwibGV0IHN3YXAgPSAoKGEsIGIpKSA9PiAoYiwgYSk7XG5cbmxldCBtYXAyID0gKGYsIChhLCBiKSkgPT4gKGYoYSksIGYoYikpO1xuXG5sZXQgbWFwMyA9IChmLCAoYSwgYiwgYykpID0+IChmKGEpLCBmKGIpLCBmKGMpKTtcbiIsImxldCBwcmludF90aW1lX3ByZWZpeCA9XG4gICAgKG5hbWU6IHN0cmluZywgc3RhcnRfdGltZTogZmxvYXQsIGVuZF90aW1lOiBmbG9hdCk6IHVuaXQgPT4ge1xuICBQcmludGYucHJpbnRmKFxuICAgIFwiJS0zMnMlNC4wZm1zXCIsXG4gICAgbmFtZSArKyBcIjpcIixcbiAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICApO1xufTtcblxubGV0IHByaW50X3RpbWUgPSAobmFtZTogc3RyaW5nLCBzdGFydF90aW1lOiBmbG9hdCwgZW5kX3RpbWU6IGZsb2F0KTogdW5pdCA9PiB7XG4gIHByaW50X3RpbWVfcHJlZml4KG5hbWUsIHN0YXJ0X3RpbWUsIGVuZF90aW1lKTtcbiAgUHJpbnRmLnByaW50ZihcIlxcbiUhXCIpO1xufTtcblxubGV0IHByaW50X3RpbWVzID1cbiAgICAobmFtZTogc3RyaW5nLCBzdGFydF90aW1lOiBmbG9hdCwgdGltZXM6IGxpc3QoKHN0cmluZywgZmxvYXQpKSk6IHVuaXQgPT4ge1xuICBhc3NlcnQodGltZXMgIT0gW10pO1xuICBsZXQgZW5kX3RpbWUgPSBMaXN0LmZvbGRfbGVmdCgoXywgbGFzdCkgPT4gc25kKGxhc3QpLCAtMS4wLCB0aW1lcyk7XG4gIHByaW50X3RpbWVfcHJlZml4KG5hbWUsIHN0YXJ0X3RpbWUsIGVuZF90aW1lKTtcbiAgUHJpbnRmLnByaW50ZihcIiBbXCIpO1xuICBsZXQgcmVjIGdvID0gKHByZXZpb3VzX3RpbWU6IGZsb2F0LCB0aW1lczogbGlzdCgoc3RyaW5nLCBmbG9hdCkpKTogdW5pdCA9PiB7XG4gICAgc3dpdGNoICh0aW1lcykge1xuICAgIHwgW10gPT4gKClcbiAgICB8IFsobmFtZSwgdGltZSksIC4uLnRpbWVzXSA9PlxuICAgICAgUHJpbnRmLnByaW50ZihcIiAlczogJS4wZm1zXCIsIG5hbWUsIDEwMDAuMCAqLiAodGltZSAtLiBwcmV2aW91c190aW1lKSk7XG4gICAgICBnbyh0aW1lLCB0aW1lcyk7XG4gICAgfTtcbiAgfTtcbiAgZ28oc3RhcnRfdGltZSwgdGltZXMpO1xuICBQcmludGYucHJpbnRmKFwiIF1cXG4lIVwiKTtcbn07XG5cbmxldCBtZWFzdXJlX3RpbWUgPSAobmFtZTogc3RyaW5nLCBtZWFzdXJlOiBib29sLCBmOiB1bml0ID0+ICdhKTogJ2EgPT5cbiAgaWYgKG1lYXN1cmUpIHtcbiAgICBsZXQgc3RhcnRfdGltZSA9IFN5cy50aW1lKCk7XG4gICAgbGV0IHggPSBmKCk7XG4gICAgbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgICBwcmludF90aW1lKG5hbWUsIHN0YXJ0X3RpbWUsIGVuZF90aW1lKTtcbiAgICB4O1xuICB9IGVsc2Uge1xuICAgIGYoKTtcbiAgfTtcbiIsImxldCBjYXQgPSBTdHJpbmcuY29uY2F0KFwiXCIpO1xuXG5sZXQgcmVtb3ZlX250aCA9IChuLCB0KSA9PiB7XG4gIGFzc2VydChuIDwgU3RyaW5nLmxlbmd0aCh0KSk7XG4gIFN0cmluZy5zdWIodCwgMCwgbikgKysgU3RyaW5nLnN1Yih0LCBuICsgMSwgU3RyaW5nLmxlbmd0aCh0KSAtIG4gLSAxKTtcbn07XG5cbmxldCByZW1vdmVfZmlyc3QgPSByZW1vdmVfbnRoKDApO1xubGV0IHJlbW92ZV9sYXN0ID0gdCA9PiByZW1vdmVfbnRoKFN0cmluZy5sZW5ndGgodCkgLSAxLCB0KTtcblxubGV0IGluc2VydF9udGggPSAobiwgcywgdCkgPT4ge1xuICBhc3NlcnQobiA8IFN0cmluZy5sZW5ndGgodCkpO1xuICBTdHJpbmcuc3ViKHQsIDAsIG4pICsrIHMgKysgU3RyaW5nLnN1Yih0LCBuLCBTdHJpbmcubGVuZ3RoKHQpIC0gbik7XG59O1xuXG5sZXQgc3BsaXRfbnRoID0gKG4sIHQpID0+IHtcbiAgYXNzZXJ0KG4gPCBTdHJpbmcubGVuZ3RoKHQpKTtcbiAgKFN0cmluZy5zdWIodCwgMCwgbiksIFN0cmluZy5zdWIodCwgbiwgU3RyaW5nLmxlbmd0aCh0KSAtIG4pKTtcbn07XG5cbmxldCB0b19saXN0ID0gcyA9PiBMaXN0LmluaXQoU3RyaW5nLmxlbmd0aChzKSwgaSA9PiBTdHJpbmcubWFrZSgxLCBzLltpXSkpO1xuXG5sZXQgcmVwZWF0ID0gKG4sIHMpID0+IFN0cmluZy5jb25jYXQoXCJcIiwgTGlzdC5pbml0KG4sIF8gPT4gcykpO1xuXG5sZXQgYWJicmV2aWF0ZSA9IChtYXhfbGVuLCBzKSA9PlxuICBTdHJpbmcubGVuZ3RoKHMpID4gbWF4X2xlbiA/IFN0cmluZy5zdWIocywgMCwgbWF4X2xlbikgKysgXCIuLi5cIiA6IHM7XG4iLCIvKiBUT0RPOiB3ZSBtaWdodCB3YW50IHRvIGp1c3QgdXNlIHRoaXMgQVBJP1xuXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL3JncmluYmVyZy9vY2FtbC1tdGwvYmxvYi9tYXN0ZXIvbGliL210bC5tbFxuXG4gICBUaG91Z2ggaXQncyBhIGJpdCBoZWF2eSwgZXNwZWNpYWxseSB3aXRoIHRoZSBleHRyYSB0eXBlIHBhcmFtZXRlci4uLlxuXG4gICBJbiBhbnkgY2FzZSwgdGhhdCdzIGEgZ29vZCByZWZlcmVuY2UuICovXG5cbm1vZHVsZSB0eXBlIE1PTkFEX0JBU0lDID0ge1xuICBbQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdCgnYSk7XG4gIGxldCByZXR1cm46ICdhID0+IHQoJ2EpO1xuICBsZXQgYmluZDogKHQoJ2EpLCAnYSA9PiB0KCdiKSkgPT4gdCgnYik7XG59O1xuXG5tb2R1bGUgdHlwZSBNT05BRF9GVU5DVE9SID0ge1xuICBpbmNsdWRlIE1PTkFEX0JBU0lDO1xuICBsZXQgbWFwOiAodCgnYSksICdhID0+ICdiKSA9PiB0KCdiKTtcbn07XG5cbm1vZHVsZSBNYWtlX0Z1bmN0b3IgPSAoTTogTU9OQURfQkFTSUMpID0+IHtcbiAgaW5jbHVkZSBNO1xuICBsZXQgbWFwID0gKHgsIGYpID0+IGJpbmQoeCwgYSA9PiBNLnJldHVybihmKGEpKSk7XG59O1xuXG5tb2R1bGUgdHlwZSBNT05BRF9aSVAgPSB7XG4gIGluY2x1ZGUgTU9OQURfRlVOQ1RPUjtcbiAgbGV0IHppcDogKHQoJ2EpLCB0KCdiKSkgPT4gdCgoJ2EsICdiKSk7XG59O1xuXG5tb2R1bGUgTWFrZV9aaXAgPSAoTTogTU9OQURfRlVOQ1RPUikgPT4ge1xuICBpbmNsdWRlIE07XG5cbiAgbGV0IHppcCA9ICh4LCB5KSA9PiBiaW5kKHgsIGEgPT4gYmluZCh5LCBiID0+IE0ucmV0dXJuKChhLCBiKSkpKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEID0ge1xuICBpbmNsdWRlIE1PTkFEX1pJUDtcblxuICBsZXQgc2VxdWVuY2U6IGxpc3QodCgnYSkpID0+IHQobGlzdCgnYSkpO1xuXG4gIG1vZHVsZSBTeW50YXg6IHtcbiAgICBsZXQgKCBsZXQqICk6ICh0KCdhKSwgJ2EgPT4gdCgnYikpID0+IHQoJ2IpO1xuICAgIGxldCAobGV0Kyk6ICh0KCdhKSwgJ2EgPT4gJ2IpID0+IHQoJ2IpO1xuICAgIGxldCAoYW5kKyk6ICh0KCdhKSwgdCgnYikpID0+IHQoKCdhLCAnYikpO1xuXG4gICAgbGV0ICg+Pj0pOiAodCgnYSksICdhID0+IHQoJ2IpKSA9PiB0KCdiKTtcbiAgICBsZXQgKD4+fCk6ICh0KCdhKSwgJ2EgPT4gJ2IpID0+IHQoJ2IpO1xuICB9O1xufTtcblxubW9kdWxlIE1ha2VfTW9uYWRfWiA9IChNOiBNT05BRF9aSVApID0+IHtcbiAgaW5jbHVkZSBNO1xuXG4gIGxldCBzZXF1ZW5jZSA9IG1zID0+IHtcbiAgICBsZXQgcmVjIHNlcXVlbmNlJyA9IChtcywgYWNjKSA9PiB7XG4gICAgICBzd2l0Y2ggKG1zKSB7XG4gICAgICB8IFtdID0+IGFjY1xuICAgICAgfCBbbSwgLi4ubXNdID0+XG4gICAgICAgIGJpbmQobSwgeCA9PiBzZXF1ZW5jZScobXMsIG1hcChhY2MsIGFjYyA9PiBbeCwgLi4uYWNjXSkpKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbWFwKHNlcXVlbmNlJyhtcywgW10gfD4gcmV0dXJuKSwgTGlzdC5yZXYpO1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXggPSB7XG4gICAgbGV0ICggbGV0KiApID0gYmluZDtcbiAgICBsZXQgKGxldCspID0gbWFwO1xuICAgIGxldCAoYW5kKykgPSB6aXA7XG5cbiAgICBsZXQgKD4+PSkgPSBiaW5kO1xuICAgIGxldCAoPj58KSA9IG1hcDtcbiAgfTtcbn07XG5cbm1vZHVsZSBNYWtlX01vbmFkX0IgPSAoTTogTU9OQURfQkFTSUMpID0+XG4gIE1ha2VfTW9uYWRfWihNYWtlX1ppcChNYWtlX0Z1bmN0b3IoTSkpKTtcbiIsIm1vZHVsZSB0eXBlIFNUQVRFID0ge1xuICB0eXBlIHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICB0eXBlIHN0YXRlO1xuXG4gIGluY2x1ZGUgTW9uYWRzLk1PTkFEIHdpdGggdHlwZSB0KCdhKSA9IHN0YXRlID0+IChzdGF0ZSwgJ2EpO1xuXG4gIGxldCBnZXQ6IHQoc3RhdGUpO1xuICBsZXQgcHV0OiBzdGF0ZSA9PiB0KHVuaXQpO1xuICBsZXQgbW9kaWZ5OiAoc3RhdGUgPT4gc3RhdGUpID0+IHQodW5pdCk7XG4gIGxldCBtb2RpZnknOiAoc3RhdGUgPT4gKCdhLCBzdGF0ZSkpID0+IHQoJ2EpO1xufTtcblxubW9kdWxlIE1ha2UgPSAoU1Q6IFNUQVRFKSA9PiB7XG4gIHR5cGUgc3RhdGUgPSBTVC50O1xuXG4gIG1vZHVsZSBUID0ge1xuICAgIFtAZGVyaXZpbmcgc2V4cF1cbiAgICB0eXBlIHQoJ2EpID0gc3RhdGUgPT4gKHN0YXRlLCAnYSk7XG5cbiAgICBsZXQgcmV0dXJuID0gKHgsIHMpID0+IChzLCB4KTtcblxuICAgIGxldCBiaW5kID0gKHhmLCBmLCBzKSA9PiB7XG4gICAgICBsZXQgKHMnLCB4KSA9XG4gICAgICAgIHN3aXRjaCAoeGYocykpIHtcbiAgICAgICAgfCByID0+IHJcbiAgICAgICAgfCBleGNlcHRpb24gZXhuID0+XG4gICAgICAgICAgcHJpbnRfZW5kbGluZShcbiAgICAgICAgICAgIFwiYmluZCBleGNlcHRpb246IFwiXG4gICAgICAgICAgICArKyBTZXhwbGliLlNleHAudG9fc3RyaW5nX2h1bShTZXhwbGliLlN0ZC5zZXhwX29mX2V4bihleG4pKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJhaXNlKGV4bik7XG4gICAgICAgIH07XG4gICAgICBmKHgsIHMnKTtcbiAgICB9O1xuXG4gICAgbGV0IGdldCA9IHMgPT4gKHMsIHMpO1xuXG4gICAgbGV0IHB1dCA9ICh4LCBfKSA9PiAoeCwgKCkpO1xuXG4gICAgbGV0IG1vZGlmeSA9IGYgPT4gYmluZChnZXQsIHMgPT4gcHV0KGYocykpKTtcblxuICAgIGxldCBtb2RpZnknID0gZiA9PlxuICAgICAgYmluZChcbiAgICAgICAgZ2V0LFxuICAgICAgICBzID0+IHtcbiAgICAgICAgICBsZXQgKHgsIHMpID0gZihzKTtcbiAgICAgICAgICBiaW5kKHB1dChzKSwgXyA9PiByZXR1cm4oeCkpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgfTtcblxuICBpbmNsdWRlIFQ7XG4gIGluY2x1ZGUgTW9uYWRzLk1ha2VfTW9uYWRfQihUKTtcbn07XG4iLCJpbmNsdWRlIEJhc2UuUmVzdWx0O1xuXG5tb2R1bGUgU3ludGF4ID0ge1xuICBsZXQgKCBsZXQqICkgPSAocmVzdWx0LCBmKSA9PiBiaW5kKH5mLCByZXN1bHQpO1xuICBsZXQgKGxldCspID0gKHJlc3VsdCwgZikgPT4gbWFwKH5mLCByZXN1bHQpO1xufTtcbiIsImxldCBtYXBfZnN0ID0gKGYsICh4LCB5KSkgPT4gKGYoeCksIHkpO1xubGV0IG1hcF9zbmQgPSAoZiwgKHgsIHkpKSA9PiAoeCwgZih5KSk7XG4iLCJsZXQgZ2V0ID0gKGlmX25vbmUsIG8pID0+XG4gIHN3aXRjaCAobykge1xuICB8IE5vbmUgPT4gaWZfbm9uZSgpXG4gIHwgU29tZShhKSA9PiBhXG4gIH07XG5sZXQgZ2V0X29yX2ZhaWwgPSBzID0+IGdldCgoKSA9PiBmYWlsd2l0aChzKSk7XG5sZXQgZ2V0X29yX3JhaXNlID0gZSA9PiBnZXQoKCkgPT4gcmFpc2UoZSkpO1xuXG5sZXQgbWFwMiA9IChmLCBvMSwgbzIpID0+XG4gIHN3aXRjaCAobzEsIG8yKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoU29tZSh2MSksIFNvbWUodjIpKSA9PiBTb21lKGYodjEsIHYyKSlcbiAgfTtcblxubGV0IHNvbWVfaWYgPSAoY29uZCwgYSkgPT4gY29uZCA/IFNvbWUoYSkgOiBOb25lO1xuXG5sZXQgemlwID0gKG8xLCBvMikgPT5cbiAgc3dpdGNoIChvMSwgbzIpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gTm9uZVxuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PiBTb21lKChhLCBiKSlcbiAgfTtcbmxldCB1bnppcCA9IChvOiBvcHRpb24oKCdhLCAnYikpKTogKG9wdGlvbignYSksIG9wdGlvbignYikpID0+XG4gIHN3aXRjaCAobykge1xuICB8IE5vbmUgPT4gKE5vbmUsIE5vbmUpXG4gIHwgU29tZSgoYSwgYikpID0+IChTb21lKGEpLCBTb21lKGIpKVxuICB9O1xuXG5sZXQgc2VxdWVuY2UgPSAobDogbGlzdChvcHRpb24oJ2EpKSk6IG9wdGlvbihsaXN0KCdhKSkgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KG1hcDIoKHgsIHhzKSA9PiBbeCwgLi4ueHNdKSwgbCwgU29tZShbXSkpO1xuXG5sZXQgYW5kX3RoZW4gPSAoZiwgbykgPT4gT3B0aW9uLmJpbmQobywgZik7XG5cbm1vZHVsZSBTeW50YXggPSB7XG4gIGxldCAoIGxldCogKSA9IE9wdGlvbi5iaW5kO1xuICBsZXQgKGxldCspID0gKG8sIGYpID0+IE9wdGlvbi5tYXAoZiwgbyk7XG4gIGxldCAoYW5kKykgPSB6aXA7XG59O1xuIiwibW9kdWxlIHR5cGUgT3JkZXJlZFNob3dUeXBlID0ge1xuICBpbmNsdWRlIE1hcC5PcmRlcmVkVHlwZTtcblxuICBsZXQgcHA6IChGb3JtYXQuZm9ybWF0dGVyLCB0KSA9PiB1bml0O1xufTtcblxubW9kdWxlIHR5cGUgT3JkZXJlZFNleHBUeXBlID0ge1xuICBpbmNsdWRlIE1hcC5PcmRlcmVkVHlwZTtcblxuICBsZXQgc2V4cF9vZl90OiB0ID0+IFNleHBsaWIuU2V4cC50O1xuICBsZXQgdF9vZl9zZXhwOiBTZXhwbGliLlNleHAudCA9PiB0O1xufTtcblxubW9kdWxlIHR5cGUgT3JkZXJlZFlvanNvblR5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCB5b2pzb25fb2ZfdDogdCA9PiBZb2pzb24uU2FmZS50O1xuICBsZXQgdF9vZl95b2pzb246IFlvanNvbi5TYWZlLnQgPT4gdDtcbn07XG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID0ge1xuICBpbmNsdWRlIE9yZGVyZWRTaG93VHlwZTtcbiAgaW5jbHVkZSBPcmRlcmVkU2V4cFR5cGUgd2l0aCB0eXBlIHQgOj0gdDtcbiAgaW5jbHVkZSBPcmRlcmVkWW9qc29uVHlwZSB3aXRoIHR5cGUgdCA6PSB0O1xufTtcblxubW9kdWxlIHR5cGUgU2hvd1MgPSB7XG4gIGluY2x1ZGUgTWFwLlM7XG5cbiAgbGV0IHBwOiAoKEZvcm1hdC5mb3JtYXR0ZXIsICdhKSA9PiB1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB0KCdhKSkgPT4gdW5pdDtcbn07XG5cbm1vZHVsZSB0eXBlIFNleHBTID0ge1xuICBpbmNsdWRlIE1hcC5TO1xuXG4gIGxldCBzZXhwX29mX3Q6ICgndiA9PiBTZXhwbGliLlNleHAudCwgdCgndikpID0+IFNleHBsaWIuU2V4cC50O1xuICBsZXQgdF9vZl9zZXhwOiAoU2V4cGxpYi5TZXhwLnQgPT4gJ3YsIFNleHBsaWIuU2V4cC50KSA9PiB0KCd2KTtcbn07XG5cbm1vZHVsZSB0eXBlIFlvanNvblMgPSB7XG4gIGluY2x1ZGUgTWFwLlM7XG5cbiAgbGV0IHlvanNvbl9vZl90OiAoJ3YgPT4gWW9qc29uLlNhZmUudCwgdCgndikpID0+IFlvanNvbi5TYWZlLnQ7XG4gIGxldCB0X29mX3lvanNvbjogKFlvanNvbi5TYWZlLnQgPT4gJ3YsIFlvanNvbi5TYWZlLnQpID0+IHQoJ3YpO1xufTtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgaW5jbHVkZSBTaG93UztcbiAgaW5jbHVkZSBTZXhwUyB3aXRoIHR5cGUgdCgnYSkgOj0gdCgnYSkgYW5kIHR5cGUga2V5IDo9IGtleTtcbiAgaW5jbHVkZSBZb2pzb25TIHdpdGggdHlwZSB0KCdhKSA6PSB0KCdhKSBhbmQgdHlwZSBrZXkgOj0ga2V5O1xufTtcblxubW9kdWxlIE1ha2VTaG93Rm9yID0gKE86IE9yZGVyZWRTaG93VHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBsZXQgcHAgPSAocHBfdiwgZiwgbWFwKSA9PlxuICAgIFMuaXRlcihcbiAgICAgIChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVhIC0+ICVhQFxcblwiLCBPLnBwLCBrLCBwcF92LCB2KSxcbiAgICAgIG1hcCxcbiAgICApO1xufTtcblxubW9kdWxlIE1ha2VTaG93ID0gKE86IE9yZGVyZWRTaG93VHlwZSkgOiAoU2hvd1Mgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBtb2R1bGUgTSA9IE1hcC5NYWtlKE8pO1xuXG4gIGluY2x1ZGUgTTtcbiAgaW5jbHVkZSBNYWtlU2hvd0ZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlU2V4cEZvciA9IChPOiBPcmRlcmVkU2V4cFR5cGUsIFM6IE1hcC5TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgb3BlbiBTZXhwbGliLlN0ZDtcblxuICBbQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgYmluZGluZygndikgPSAoTy50LCAndik7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gUy5iaW5kaW5ncyB8PiBzZXhwX29mX2xpc3Qoc2V4cF9vZl9iaW5kaW5nKHNleHBfb2ZfdikpO1xuICBsZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cCwgc2V4cCkgPT5cbiAgICBzZXhwXG4gICAgfD4gbGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gUy5vZl9zZXE7XG59O1xuXG5tb2R1bGUgTWFrZVNleHAgPSAoTzogT3JkZXJlZFNleHBUeXBlKSA6IChTZXhwUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VTZXhwRm9yKE8sIE0pO1xufTtcblxubW9kdWxlIE1ha2VZb2pzb25Gb3IgPSAoTzogT3JkZXJlZFlvanNvblR5cGUsIFM6IE1hcC5TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgW0BkZXJpdmluZyB5b2pzb25dXG4gIHR5cGUgYmluZGluZygndikgPSAoTy50LCAndik7XG5cbiAgbGV0IHlvanNvbl9vZl90ID0gKHlvanNvbl9vZl92LCBtYXApID0+XG4gICAgbWFwIHw+IFMuYmluZGluZ3MgfD4geW9qc29uX29mX2xpc3QoeW9qc29uX29mX2JpbmRpbmcoeW9qc29uX29mX3YpKTtcbiAgbGV0IHRfb2ZfeW9qc29uID0gKHZfb2ZfeW9qc29uLCB5b2pzb24pID0+XG4gICAgeW9qc29uXG4gICAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gUy5vZl9zZXE7XG59O1xuXG5tb2R1bGUgTWFrZVlvanNvbiA9IChPOiBPcmRlcmVkWW9qc29uVHlwZSkgOiAoWW9qc29uUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VZb2pzb25Gb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZUZvciA9IChPOiBPcmRlcmVkVHlwZSwgTTogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBpbmNsdWRlIE1ha2VTaG93Rm9yKE8sIE0pO1xuICBpbmNsdWRlIE1ha2VTZXhwRm9yKE8sIE0pO1xuICBpbmNsdWRlIE1ha2VZb2pzb25Gb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChPOiBPcmRlcmVkVHlwZSkgOiAoUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VGb3IoTywgTSk7XG59O1xuIiwibGV0IHJldl9pZiA9IChiOiBib29sKSA9PiBiID8gTGlzdC5yZXYgOiBGdW4uaWQ7XG5cbmxldCBkZWR1cCA9IHhzID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAoeCwgZGVkdXBlZCkgPT4gTGlzdC5tZW0oeCwgZGVkdXBlZCkgPyBkZWR1cGVkIDogW3gsIC4uLmRlZHVwZWRdLFxuICAgIHhzLFxuICAgIFtdLFxuICApO1xuXG5sZXQgYXJlX2R1cGxpY2F0ZXMgPSB4cyA9PlxuICBMaXN0Lmxlbmd0aChMaXN0LnNvcnRfdW5pcShjb21wYXJlLCB4cykpID09IExpc3QubGVuZ3RoKHhzKTtcblxubGV0IGdyb3VwX2J5ID0gKGtleTogJ3ggPT4gJ2ssIHhzOiBsaXN0KCd4KSk6IGxpc3QoKCdrLCBsaXN0KCd4KSkpID0+XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgIChncm91cGVkLCB4KSA9PiB7XG4gICAgICBsZXQgayA9IGtleSh4KTtcbiAgICAgIGxldCBrX2dyb3VwID1cbiAgICAgICAgc3dpdGNoIChMaXN0LmFzc29jX29wdChrLCBncm91cGVkKSkge1xuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgfCBTb21lKHhzKSA9PiB4c1xuICAgICAgICB9O1xuICAgICAgWyhrLCBbeCwgLi4ua19ncm91cF0pLCAuLi5MaXN0LnJlbW92ZV9hc3NvYyhrLCBncm91cGVkKV07XG4gICAgfSxcbiAgICBbXSxcbiAgICB4cyxcbiAgKTtcblxubGV0IHJlYyByYW5nZSA9ICh+bG89MCwgaGkpID0+XG4gIGlmIChsbyA+IGhpKSB7XG4gICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnJhbmdlXCIpKTtcbiAgfSBlbHNlIGlmIChsbyA9PSBoaSkge1xuICAgIFtdO1xuICB9IGVsc2Uge1xuICAgIFtsbywgLi4ucmFuZ2UofmxvPWxvICsgMSwgaGkpXTtcbiAgfTtcblxuLy8gaGVhZHMgb2YgcHJlZml4IGFuZCBzdWZmaXggbmVpZ2hib3IgdGhlIHN1YmplY3RcbnR5cGUgZnJhbWUoJ3gpID0gKGxpc3QoJ3gpLCBsaXN0KCd4KSk7XG5cbmxldCByZWMgbWtfZnJhbWUgPSAobjogaW50LCB4czogbGlzdCgneCkpOiBmcmFtZSgneCkgPT4ge1xuICBsZXQgaW52YWxpZF9hcmcgPSAoKSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwubWtfZnJhbWVcIikpO1xuICBpZiAobiA8IDApIHtcbiAgICBpbnZhbGlkX2FyZygpO1xuICB9IGVsc2UgaWYgKG4gPT0gMCkge1xuICAgIChbXSwgeHMpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoeHMpIHtcbiAgICB8IFtdID0+IGludmFsaWRfYXJnKClcbiAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgIGxldCAocHJlZml4LCBzdWZmaXgpID0gbWtfZnJhbWUobiAtIDEsIHhzKTtcbiAgICAgIChwcmVmaXggQCBbeF0sIHN1ZmZpeCk7XG4gICAgfTtcbiAgfTtcbn07XG5cbmxldCByZWMgc3BsaXQgPVxuICAgICAgICAobDogbGlzdCgneCksIGNvbmQ6ICd4ID0+IGJvb2wpOiAobGlzdCgneCksIG9wdGlvbigneCksIGxpc3QoJ3gpKSA9PiB7XG4gIHN3aXRjaCAobCkge1xuICB8IFtdID0+IChbXSwgTm9uZSwgW10pXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIGlmIChjb25kKHgpKSB7XG4gICAgICAoW10sIFNvbWUoeCksIHhzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IChwcmUsIHgnLCBwb3N0KSA9IHNwbGl0KHhzLCBjb25kKTtcbiAgICAgIChbeCwgLi4ucHJlXSwgeCcsIHBvc3QpO1xuICAgIH1cbiAgfTtcbn07XG5cbmxldCByZWMgc3BsaXRfZnJhbWUgPSAobjogaW50LCB4czogbGlzdCgneCkpOiAoJ3gsIGZyYW1lKCd4KSkgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IChfLCBbXSkgPT4gZmFpbHdpdGgoXCJsaXN0IGluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW3gsIC4uLnhzXSkgPT4gKHgsIChbXSwgeHMpKVxuICB8IChfLCBbeCwgLi4ueHNdKSA9PlxuICAgIGxldCAoc3ViaiwgKHByZWZpeCwgc3VmZml4KSkgPSBzcGxpdF9mcmFtZShuIC0gMSwgeHMpO1xuICAgIChzdWJqLCAocHJlZml4IEAgW3hdLCBzdWZmaXgpKTtcbiAgfTtcblxubGV0IG9mX2ZyYW1lID0gKH5zdWJqZWN0OiBsaXN0KCd4KT1bXSwgKHByZWZpeCwgc3VmZml4KTogZnJhbWUoJ3gpKSA9PlxuICBMaXN0LmNvbmNhdChbTGlzdC5yZXYocHJlZml4KSwgc3ViamVjdCwgc3VmZml4XSk7XG5cbmxldCBjb21iaW5lX29wdCA9ICh4cywgeXMpID0+XG4gIHN3aXRjaCAoTGlzdC5jb21iaW5lKHhzLCB5cykpIHtcbiAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IE5vbmVcbiAgfCB4eXMgPT4gU29tZSh4eXMpXG4gIH07XG5cbmxldCBpc19lbXB0eSA9XG4gIGZ1blxuICB8IFtdID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgZmxhdF9tYXAgPSAoZiwgbCkgPT4gTGlzdC5mbGF0dGVuKExpc3QubWFwKGYsIGwpKTtcblxubGV0IHJlYyBqb2luID0gKHNlcDogJ3gsIHhzOiBsaXN0KCd4KSk6IGxpc3QoJ3gpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFt4XSA9PiBbeF1cbiAgfCBbeCwgLi4ueHNdID0+IFt4LCBzZXAsIC4uLmpvaW4oc2VwLCB4cyldXG4gIH07XG5cbmxldCBoZF9vcHQgPVxuICBmdW5cbiAgfCBbXSA9PiBOb25lXG4gIHwgW2hkLCAuLi5fXSA9PiBTb21lKGhkKTtcblxubGV0IHJlYyBudGhfb3B0ID0gKG4sIHhzKSA9PlxuICBuIDwgMFxuICAgID8gTm9uZVxuICAgIDogKFxuICAgICAgc3dpdGNoICh4cykge1xuICAgICAgfCBbXSA9PiBOb25lXG4gICAgICB8IFtoZCwgLi4udGxdID0+IG4gPT0gMCA/IFNvbWUoaGQpIDogbnRoX29wdChuIC0gMSwgdGwpXG4gICAgICB9XG4gICAgKTtcblxuLyoqXG4gKiBgc3BsaXRfbl9vcHQobiwgeHMpYCBzcGxpdHMgdGhlIGZpcnN0IGBuYCBlbGVtZW50cyBmcm9tIGB4c2BcbiAqIGlmIGB4c2AgaGFzIGBuYCBvciBtb3JlIGVsZW1lbnRzXG4gKi9cbmxldCBzcGxpdF9uX29wdCA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6IG9wdGlvbigobGlzdCgneCksIGxpc3QoJ3gpKSkgPT4ge1xuICBsZXQgcmVjIGdvID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKSA9PlxuICAgIGlmIChuIDwgMCkge1xuICAgICAgTm9uZTtcbiAgICB9IGVsc2UgaWYgKG4gPT0gMCkge1xuICAgICAgU29tZSgoW10sIHhzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICAgIGdvKG4gLSAxLCB4cylcbiAgICAgICAgfD4gT3B0aW9uLm1hcCgoKHByZWZpeCwgc3VmZml4KSkgPT4gKFt4LCAuLi5wcmVmaXhdLCBzdWZmaXgpKVxuICAgICAgfTtcbiAgICB9O1xuICBnbyhuLCB4cyk7XG59O1xuXG4vLyBUT0RPIHVuaWZ5IHdpdGggTGlzdEZyYW1lXG5sZXQgc3BsaXRfbiA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6IChsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIHN3aXRjaCAoc3BsaXRfbl9vcHQobiwgeHMpKSB7XG4gIHwgTm9uZSA9PlxuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9uOiBcIiArKyBzdHJpbmdfb2ZfaW50KG4pKSlcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHN1Ymxpc3QgZnJvbSBpbmRleCBpIChpbmNsdXNpdmUpXG4gKiB0byBpbmRleCBqIChleGNsdXNpdmUpLCBjb3VwbGVkIHdpdGggdGhlXG4gKiBzdXJyb3VuZGluZyBwcmVmaXgvc3VmZml4IHN1Ymxpc3RzLlxuICogUmV0dXJucyBOb25lIGlmIGkgPiBqLlxuICovXG5sZXQgc3BsaXRfc3VibGlzdF9vcHQgPVxuICAgIChpOiBpbnQsIGo6IGludCwgeHM6IGxpc3QoJ3gpKVxuICAgIDogb3B0aW9uKChsaXN0KCd4KSwgbGlzdCgneCksIGxpc3QoJ3gpKSkgPT4ge1xuICBzd2l0Y2ggKHNwbGl0X25fb3B0KGosIHhzKSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoKGxlZnQsIHJpZ2h0KSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0X25fb3B0KGksIGxlZnQpKSB7XG4gICAgfCBOb25lID0+IE5vbmVcbiAgICB8IFNvbWUoKGxlZnQsIG1pZCkpID0+IFNvbWUoKGxlZnQsIG1pZCwgcmlnaHQpKVxuICAgIH1cbiAgfTtcbn07XG5sZXQgc3BsaXRfc3VibGlzdCA9XG4gICAgKGk6IGludCwgajogaW50LCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpLCBsaXN0KCd4KSkgPT5cbiAgc3dpdGNoIChzcGxpdF9zdWJsaXN0X29wdChpLCBqLCB4cykpIHtcbiAgfCBOb25lID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9zdWJsaXN0XCIpKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xubGV0IHN1Ymxpc3QgPSAoKGksIGopLCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PiB7XG4gIGxldCAoXywgc3VibGlzdCwgXykgPSBzcGxpdF9zdWJsaXN0KGksIGosIHhzKTtcbiAgc3VibGlzdDtcbn07XG5cbmxldCByZWMgc3BsaXRfbnRoX29wdCA9IChuLCB4cykgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IF8gd2hlbiBuIDwgMCA9PiBOb25lXG4gIHwgKF8sIFtdKSA9PiBOb25lXG4gIHwgKDAsIFt4LCAuLi5zdWZmaXhdKSA9PiBTb21lKChbXSwgeCwgc3VmZml4KSlcbiAgfCAoXywgW3gsIC4uLnhzXSkgPT5cbiAgICBzcGxpdF9udGhfb3B0KG4gLSAxLCB4cylcbiAgICB8PiBPcHRpb24ubWFwKCgocHJlZml4LCBzdWJqZWN0LCBzdWZmaXgpKSA9PlxuICAgICAgICAgKFt4LCAuLi5wcmVmaXhdLCBzdWJqZWN0LCBzdWZmaXgpXG4gICAgICAgKVxuICB9O1xubGV0IHNwbGl0X250aCA9IChuLCB4cykgPT5cbiAgc3dpdGNoIChzcGxpdF9udGhfb3B0KG4sIHhzKSkge1xuICB8IE5vbmUgPT5cbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfbnRoOiBcIiArKyBzdHJpbmdfb2ZfaW50KG4pKSlcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcblxubGV0IHJlYyBwdXRfbnRoID0gKG46IGludCwgeDogJ3gsIHhzOiBsaXN0KCd4KSk6IGxpc3QoJ3gpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwib3V0IG9mIGJvdW5kc1wiKVxuICB8ICgwLCBbXywgLi4udGxdKSA9PiBbeCwgLi4udGxdXG4gIHwgKF8sIFtoZCwgLi4udGxdKSA9PlxuICAgIGxldCB0bCA9IHB1dF9udGgobiAtIDEsIHgsIHRsKTtcbiAgICBbaGQsIC4uLnRsXTtcbiAgfTtcblxubGV0IHJlYyBtYXBfbnRoID0gKG46IGludCwgZjogJ2EgPT4gJ2EsIHhzOiBsaXN0KCdhKSk6IGxpc3QoJ2EpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwib3V0IG9mIGJvdW5kc1wiKVxuICB8ICgwLCBbaGQsIC4uLnRsXSkgPT4gW2YoaGQpLCAuLi50bF1cbiAgfCAoXywgW2hkLCAuLi50bF0pID0+IFtoZCwgLi4ubWFwX250aChuIC0gMSwgZiwgdGwpXVxuICB9O1xuXG5sZXQgcmVjIHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCd4KSk6IG9wdGlvbigobGlzdCgneCksICd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeF0gPT4gU29tZSgoW10sIHgpKVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBzcGxpdF9sYXN0X29wdCh4cylcbiAgICB8PiBPcHRpb24ubWFwKCgobGVhZGluZywgbGFzdCkpID0+IChbeCwgLi4ubGVhZGluZ10sIGxhc3QpKVxuICB9O1xuLy8gbGV0IGxhc3Rfb3B0ID0geHMgPT4geHMgfD4gc3BsaXRfbGFzdF9vcHQgfD4gT3B0aW9uLm1hcChzbmQpO1xuXG5sZXQgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgneCkpOiAobGlzdCgneCksICd4KSA9PlxuICBzd2l0Y2ggKHNwbGl0X2xhc3Rfb3B0KHhzKSkge1xuICB8IE5vbmUgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X2xhc3RcIikpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5sZXQgbGVhZGluZyA9IHhzID0+IGZzdChzcGxpdF9sYXN0KHhzKSk7XG5sZXQgbGFzdCA9IHhzID0+IHNuZChzcGxpdF9sYXN0KHhzKSk7XG5sZXQgbGFzdF9vcHQgPSB4cyA9PiB7XG4gIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCh4cyk7XG4gIGlmIChsZW5ndGggPT0gMCkge1xuICAgIE5vbmU7XG4gIH0gZWxzZSB7XG4gICAgU29tZShMaXN0Lm50aCh4cywgbGVuZ3RoIC0gMSkpO1xuICB9O1xufTtcblxubGV0IHNwbGl0X2ZpcnN0X29wdCA9ICh4czogbGlzdCgneCkpOiBvcHRpb24oKCd4LCBsaXN0KCd4KSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gU29tZSgoZmlyc3QsIHRyYWlsaW5nKSlcbiAgfTtcbmxldCBzcGxpdF9maXJzdCA9IHhzID0+XG4gIHNwbGl0X2ZpcnN0X29wdCh4cylcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X2ZpcnN0XCIpKTtcblxubGV0IHJlYyBmb2xkX2xlZnRfbWFwID1cbiAgICAgICAgKGY6ICgnYWNjLCAneCkgPT4gKCdhY2MsICd5KSwgc3RhcnQ6ICdhY2MsIHhzOiBsaXN0KCd4KSlcbiAgICAgICAgOiAoJ2FjYywgbGlzdCgneSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiAoc3RhcnQsIFtdKVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBsZXQgKG5ld19hY2MsIHkpID0gZihzdGFydCwgeCk7XG4gICAgbGV0IChmaW5hbCwgeXMpID0gZm9sZF9sZWZ0X21hcChmLCBuZXdfYWNjLCB4cyk7XG4gICAgKGZpbmFsLCBbeSwgLi4ueXNdKTtcbiAgfTtcblxubGV0IHJlYyB0YWtlX3doaWxlID0gKHA6ICd4ID0+IGJvb2wsIHhzOiBsaXN0KCd4KSk6IChsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiAoW10sIFtdKVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgaWYgKHAoaGQpKSB7XG4gICAgICBsZXQgKHRha2VuLCByZXN0KSA9IHRha2Vfd2hpbGUocCwgdGwpO1xuICAgICAgKFtoZCwgLi4udGFrZW5dLCByZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgKFtdLCB4cyk7XG4gICAgfVxuICB9O1xuXG5sZXQgcHJvZHVjdCA9ICh4cywgeXMpID0+XG4gIHhzIHw+IExpc3QubWFwKHggPT4geXMgfD4gTGlzdC5tYXAoeSA9PiAoeCwgeSkpKSB8PiBMaXN0LmZsYXR0ZW47XG5cbmxldCByZWMgb3JkZXJlZF9wYWlycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PiBMaXN0Lm1hcCh4ID0+IChoZCwgeCksIHRsKSBAIG9yZGVyZWRfcGFpcnModGwpXG4gIH07XG5cbmxldCByZWMgbmVpZ2hib3JzID0gKHhzOiBsaXN0KCd4KSk6IGxpc3QoKCd4LCAneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXVxuICB8IFtfXSA9PiBbXVxuICB8IFt4MSwgeDIsIC4uLnhzXSA9PiBbKHgxLCB4MiksIC4uLm5laWdoYm9ycyhbeDIsIC4uLnhzXSldXG4gIH07XG5cbm1vZHVsZSBTeW50YXggPSB7XG4gIGxldCAobGV0KykgPSAoeHMsIGYpID0+IExpc3QubWFwKGYsIHhzKTtcbiAgbGV0IChhbmQrKSA9IHByb2R1Y3Q7XG4gIGxldCAoIGxldCogKSA9ICh4cywgZikgPT4gTGlzdC5jb25jYXRfbWFwKGYsIHhzKTtcbn07XG5cbmxldCBtYXBfYWx0OiAoJ2EgPT4gJ2MsICdiID0+ICdjLCBsaXN0KCdhKSwgbGlzdCgnYikpID0+IGxpc3QoJ2MpID1cbiAgKGZ4LCBmeSwgeHMsIHlzKSA9PiB7XG4gICAgaWYgKExpc3QubGVuZ3RoKHhzKSAhPSBMaXN0Lmxlbmd0aCh5cykgKyAxKSB7XG4gICAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwubWFwX2FsdFwiKSk7XG4gICAgfTtcbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoYWNjLCB4LCB5KSA9PiBhY2MgQCBbZnkoeSksIGZ4KHgpXSxcbiAgICAgIFtmeChMaXN0LmhkKHhzKSldLFxuICAgICAgTGlzdC50bCh4cyksXG4gICAgICB5cyxcbiAgICApO1xuICB9O1xuXG5sZXQgaW50ZXJsZWF2ZSA9ICh4cywgeXMpID0+IG1hcF9hbHQoeCA9PiB4LCB5ID0+IHksIHhzLCB5cyk7XG5cbmxldCBwX2luZGljZXMgPSAocDogJ2EgPT4gYm9vbCwgeHM6IGxpc3QoJ2EpKTogbGlzdChpbnQpID0+IHtcbiAgbGV0IChfLCBpZHhzKSA9XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoKG4sIGlkeHMpLCB4KSA9PiAobiArIDEsIGlkeHMgQCAocCh4KSA/IFtuXSA6IFtdKSksXG4gICAgICAoMCwgW10pLFxuICAgICAgeHMsXG4gICAgKTtcbiAgaWR4cztcbn07XG5cbmxldCBzcGxpdHMgPSAoeHM6IGxpc3QoJ3gpIGFzICd4cyk6IGxpc3QoKCd4cywgJ3hzKSkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHNwbGl0OiAoJ3hzLCAneHMpKTogbGlzdCgoJ3hzLCAneHMpKSA9PlxuICAgIHN3aXRjaCAoc3BsaXQpIHtcbiAgICB8IChfLCBbXSkgPT4gW3NwbGl0XVxuICAgIHwgKGwsIFtoZCwgLi4udGxdKSA9PiBbc3BsaXQsIC4uLmdvKChsIEAgW2hkXSwgdGwpKV1cbiAgICB9O1xuICBnbygoW10sIHhzKSk7XG59O1xuXG5sZXQgZWxlbV9zcGxpdHMgPSAoeHM6IGxpc3QoJ3gpIGFzICd4cyk6IGxpc3QoKCd4cywgJ3gsICd4cykpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChzcGxpdDogKCd4cywgJ3gsICd4cykpOiBsaXN0KCgneHMsICd4LCAneHMpKSA9PlxuICAgIHN3aXRjaCAoc3BsaXQpIHtcbiAgICB8IChfLCBfLCBbXSkgPT4gW3NwbGl0XVxuICAgIHwgKGwsIHgsIFtoZCwgLi4udGxdKSA9PiBbc3BsaXQsIC4uLmdvKChbeCwgLi4ubF0sIGhkLCB0bCkpXVxuICAgIH07XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFt4LCAuLi54c10gPT4gZ28oKFtdLCB4LCB4cykpXG4gIH07XG59O1xuXG5sZXQgcm90YXRlID0gKHhzOiBsaXN0KCd4KSk6IGxpc3QoJ3gpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+IHRsIEAgW2hkXVxuICB9O1xuXG5sZXQgc2luZ2xlX2VsZW0gPSAoeHM6IGxpc3QoJ3gpKTogb3B0aW9uKCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4udGxdID0+IExpc3QuZm9yX2FsbCgoPT0pKGhkKSwgdGwpID8gU29tZShoZCkgOiBOb25lXG4gIH07XG5cbmxldCBjb3VudF9wcmVkID0gKGY6ICdhID0+IGJvb2wsIHhzOiBsaXN0KCdhKSk6IGludCA9PlxuICBMaXN0LmZvbGRfbGVmdCgobiwgeCkgPT4gZih4KSA/IG4gKyAxIDogbiwgMCwgeHMpO1xuXG5sZXQgZm9yX2FsbDJfb3B0ID1cbiAgICAoZjogKCdhLCAnYikgPT4gYm9vbCwgeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYikpOiBvcHRpb24oYm9vbCkgPT5cbiAgc3dpdGNoIChMaXN0LmZvcl9hbGwyKGYsIHhzLCB5cykpIHtcbiAgfCBiID0+IFNvbWUoYilcbiAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IE5vbmVcbiAgfTtcblxubGV0IG1hcDJfb3B0ID1cbiAgICAoZjogKCdhLCAnYikgPT4gJ2MsIHhzOiBsaXN0KCdhKSwgeXM6IGxpc3QoJ2IpKTogb3B0aW9uKGxpc3QoJ2MpKSA9PlxuICBzd2l0Y2ggKExpc3QubWFwMihmLCB4cywgeXMpKSB7XG4gIHwgYiA9PiBTb21lKGIpXG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIH07XG5cbi8qIHJlcGVhdCBhbiBlbGVtZW50IG4gdGltZXMgKi9cbmxldCByZXBsaWNhdGUgPSAobjogaW50LCBlOiAnYSk6IGxpc3QoJ2EpID0+IHtcbiAgLyogYWRkIGMgYWRkaXRpb25hbCBjb3BpZXMgb2YgZSB0byB4cyAqL1xuICBsZXQgcmVjIGYgPSAoYywgeHMpID0+XG4gICAgaWYgKGMgPiAwKSB7XG4gICAgICBmKGMgLSAxLCBbZSwgLi4ueHNdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeHM7XG4gICAgfTtcbiAgZihuLCBbXSk7XG59O1xuXG4vKipcbiAqIFppcHMgdG9nZXRoZXIgdHdvIGxpc3RzLCByZXR1cm5pbmcgTm9uZSBpZiBkaWZmZXJlbnQgbGVuZ3Roc1xuICovXG5sZXQgcmVjIG9wdF96aXAgPSAoeHM6IGxpc3QoJ3gpLCB5czogbGlzdCgneSkpOiBvcHRpb24obGlzdCgoJ3gsICd5KSkpID0+XG4gIHN3aXRjaCAoeHMsIHlzKSB7XG4gIHwgKFtdLCBbXywgLi4uX10pXG4gIHwgKFtfLCAuLi5fXSwgW10pID0+IE5vbmVcbiAgfCAoW10sIFtdKSA9PiBTb21lKFtdKVxuICB8IChbeCwgLi4ueHNdLCBbeSwgLi4ueXNdKSA9PlxuICAgIG9wdF96aXAoeHMsIHlzKSB8PiBPcHRpb24ubWFwKHh5cyA9PiBbKHgsIHkpLCAuLi54eXNdKVxuICB9O1xuXG5sZXQgcmVjIHppcF9kZWZhdWx0cyA9XG4gICAgICAgICh4czogbGlzdCgnYSksIHlzOiBsaXN0KCdiKSwgZGVmYXVsdF94OiAnYSwgZGVmYXVsdF95OiAnYilcbiAgICAgICAgOiBsaXN0KCgnYSwgJ2IpKSA9PlxuICBzd2l0Y2ggKHhzLCB5cykge1xuICB8IChbXSwgW10pID0+IFtdXG4gIHwgKFt4LCAuLi54c10sIFt5LCAuLi55c10pID0+IFtcbiAgICAgICh4LCB5KSxcbiAgICAgIC4uLnppcF9kZWZhdWx0cyh4cywgeXMsIGRlZmF1bHRfeCwgZGVmYXVsdF95KSxcbiAgICBdXG4gIHwgKFtdLCBbeSwgLi4ueXNdKSA9PiBbXG4gICAgICAoZGVmYXVsdF94LCB5KSxcbiAgICAgIC4uLnppcF9kZWZhdWx0cyh4cywgeXMsIGRlZmF1bHRfeCwgZGVmYXVsdF95KSxcbiAgICBdXG4gIHwgKFt4LCAuLi54c10sIFtdKSA9PiBbXG4gICAgICAoeCwgZGVmYXVsdF95KSxcbiAgICAgIC4uLnppcF9kZWZhdWx0cyh4cywgeXMsIGRlZmF1bHRfeCwgZGVmYXVsdF95KSxcbiAgICBdXG4gIH07XG5cbmxldCByZWMgdXBkYXRlX250aCA9IChuLCB4cywgZikgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IChfLCBbXSkgPT4gW11cbiAgfCAoMCwgW3gsIC4uLnhzXSkgPT4gW2YoeCksIC4uLnhzXVxuICB8IChuLCBbeCwgLi4ueHNdKSA9PiBbeCwgLi4udXBkYXRlX250aChuIC0gMSwgeHMsIGYpXVxuICB9O1xuXG5sZXQgcmVjIGRpc2pvaW50X3BhaXJzID0gKHhzOiBsaXN0KCd4KSk6IGxpc3QoKCd4LCAneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXVxuICB8IFtfXSA9PiBbXVxuICB8IFt4MSwgeDIsIC4uLnhzXSA9PiBbKHgxLCB4MiksIC4uLmRpc2pvaW50X3BhaXJzKHhzKV1cbiAgfTtcblxubGV0IGZpbmRpX29wdDogKCd4ID0+IGJvb2wsIGxpc3QoJ3gpKSA9PiBvcHRpb24oKGludCwgJ3gpKSA9XG4gIChmLCB4cykgPT4ge1xuICAgIExpc3QubWFwaSgoaSwgeCkgPT4gKGksIHgpLCB4cylcbiAgICB8PiBMaXN0LmZpbmRfbWFwKCgoXywgeCkgYXMgcGFpcikgPT5cbiAgICAgICAgIGlmIChmKHgpKSB7XG4gICAgICAgICAgIFNvbWUocGFpcik7XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICBOb25lO1xuICAgICAgICAgfVxuICAgICAgICk7XG4gIH07XG5cbmxldCBpbml0X2ZvbGQ6IChpbnQsICdiLCAoaW50LCAnYikgPT4gKCdiLCAnYSkpID0+ICgnYiwgbGlzdCgnYSkpID1cbiAgKG4sIGIsIGYpID0+IHtcbiAgICBsZXQgcmFuZ2UgPSBMaXN0LmluaXQobiwgbiA9PiBuKTtcbiAgICBsZXQgKGFjYywgcmV2X3hzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChhY2MsIHhzKSwgbikgPT4ge1xuICAgICAgICAgIGxldCAoYWNjJywgZWx0KSA9IGYobiwgYWNjKTtcbiAgICAgICAgICAoYWNjJywgW2VsdCwgLi4ueHNdKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGIsIFtdKSxcbiAgICAgICAgcmFuZ2UsXG4gICAgICApO1xuICAgIChhY2MsIExpc3QucmV2KHJldl94cykpO1xuICB9O1xuXG5sZXQgYXNzb2NfZXJyID0gKHgsIHhzLCBlcnI6IHN0cmluZykgPT5cbiAgc3dpdGNoIChMaXN0LmFzc29jX29wdCh4LCB4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKGVycilcbiAgfCBTb21lKHkpID0+IHlcbiAgfTtcblxubGV0IHVwZGF0ZV9hc3NvYyA9ICgoaywgdikpID0+XG4gIExpc3QubWFwKCgoaycsIHYnKSkgPT4gayA9PSBrJyA/IChrLCB2KSA6IChrJywgdicpKTtcblxuLyogR2l2ZSBhIGxpc3Qgb2Ygb3B0aW9uYWwgJ2EsIHNwbGl0IHRoZVxuICogbGlzdCB1cCB1c2luZyB0aGUgTm9uZXMgYXMgZGl2aWRlcnMgKi9cbmxldCBzcGxpdF9hdF9ub25lcyA9ICh4czogbGlzdChvcHRpb24oJ2EpKSk6IGxpc3QobGlzdCgnYSkpID0+IHtcbiAgbGV0IHJlYyBnbyA9ICh4cywgYWNjKSA9PlxuICAgIHN3aXRjaCAoeHMpIHtcbiAgICB8IFtdID0+IGFjY1xuICAgIHwgW05vbmUsIC4uLnhzXSA9PiBnbyh4cywgW1tdLCAuLi5hY2NdKVxuICAgIHwgW1NvbWUoeCksIC4uLnhzXSA9PlxuICAgICAgc3dpdGNoIChhY2MpIHtcbiAgICAgIHwgW2FjYywgLi4uYWNjc10gPT4gZ28oeHMsIFtbeCwgLi4uYWNjXSwgLi4uYWNjc10pXG4gICAgICB8IFtdID0+IGdvKHhzLCBbW3hdXSlcbiAgICAgIH1cbiAgICB9O1xuICBnbyh4cywgW10pIHw+IExpc3QubWFwKExpc3QucmV2KSB8PiBMaXN0LnJldjtcbn07XG5cbi8qIEdpdmUgYSBsaXN0IG9mIGxpc3RzLCByZXR1cm4gYSBsaXN0IG9mIHBhaXJzIG9mXG4gKiB0aGUgZmlyc3QgYW5kIGxhc3QgZWxlbWVudCBvZiBlYWNoIGxpc3QuICovXG5sZXQgZmlyc3RfYW5kX2xhc3QgPSAoeHNzOiBsaXN0KGxpc3QoJ2EpKSk6IGxpc3QoKCdhLCAnYSkpID0+XG4gIHhzc1xuICB8PiBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAgZnVuXG4gICAgICAgfCBbXSA9PiBOb25lXG4gICAgICAgfCBbeF0gPT4gU29tZSgoeCwgeCkpXG4gICAgICAgfCBbeCwgLi4ueHNdID0+IFNvbWUoKHgsIGxhc3QoeHMpKSksXG4gICAgICk7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IExlZnRcbiAgfCBSaWdodDtcblxubGV0IHRvZ2dsZSA9XG4gIGZ1blxuICB8IExlZnQgPT4gUmlnaHRcbiAgfCBSaWdodCA9PiBMZWZ0O1xuXG5sZXQgc2lnbiA9XG4gIGZ1blxuICB8IExlZnQgPT4gKC0xKVxuICB8IFJpZ2h0ID0+IDE7XG5cbmxldCBjaG9vc2UgPSAoZCwgKGwsIHIpKSA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IGxcbiAgfCBSaWdodCA9PiByXG4gIH07XG4iLCJvcGVuIE9wdFV0aWwuU3ludGF4O1xuXG4vLyBoZWFkcyBvZiBwcmVmaXggYW5kIHN1ZmZpeCBuZWlnaGJvciB0aGUgc3ViamVjdFxuLy8gTk9URTogREVQUkVDQVRFRFxudHlwZSB0KCd4KSA9IChsaXN0KCd4KSwgbGlzdCgneCkpO1xuXG5sZXQgcmVjIG1rX29wdCA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6IG9wdGlvbih0KCd4KSkgPT5cbiAgaWYgKG4gPCAwKSB7XG4gICAgTm9uZTtcbiAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICBTb21lKChbXSwgeHMpKTtcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBOb25lXG4gICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICBsZXQrIChwcmVmaXgsIHN1ZmZpeCkgPSBta19vcHQobiAtIDEsIHhzKTtcbiAgICAgIChwcmVmaXggQCBbeF0sIHN1ZmZpeCk7XG4gICAgfTtcbiAgfTtcbmxldCBtayA9IChuLCB4cykgPT5cbiAgbWtfb3B0KG4sIHhzKVxuICB8PiBPcHRVdGlsLmdldCgoKSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdEZyYW1lLm1rXCIpKSk7XG5cbmxldCByZWMgZmluZF9tayA9XG4gICAgICAgIChwOiAneCA9PiBvcHRpb24oJ3kpLCB4czogbGlzdCgneCkpOiBvcHRpb24oKCd5LCB0KCd4KSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIHN3aXRjaCAocCh4KSkge1xuICAgIHwgU29tZSh5KSA9PiBTb21lKCh5LCAoW10sIHhzKSkpXG4gICAgfCBOb25lID0+XG4gICAgICBsZXQrICh5LCAocHJlZml4LCBzdWZmaXgpKSA9IGZpbmRfbWsocCwgeHMpO1xuICAgICAgKHksIChwcmVmaXggQCBbeF0sIHN1ZmZpeCkpO1xuICAgIH1cbiAgfTtcblxubGV0IG9yaWVudCA9XG4gICAgKGQ6IERpcmVjdGlvbi50LCAocHJlZml4LCBzdWZmaXgpOiB0KCd4KSk6IChsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIGQgPT0gTGVmdCA/IChwcmVmaXgsIHN1ZmZpeCkgOiAoc3VmZml4LCBwcmVmaXgpO1xubGV0IHVub3JpZW50ID0gb3JpZW50O1xuXG5sZXQgcmVjIHNwbGl0X250aCA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6ICgneCwgdCgneCkpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwibGlzdCBpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFt4LCAuLi54c10pID0+ICh4LCAoW10sIHhzKSlcbiAgfCAoXywgW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQgKHN1YmosIChwcmVmaXgsIHN1ZmZpeCkpID0gc3BsaXRfbnRoKG4gLSAxLCB4cyk7XG4gICAgKHN1YmosIChwcmVmaXggQCBbeF0sIHN1ZmZpeCkpO1xuICB9O1xuXG5sZXQgc3BsaXRfc3VibGlzdCA9ICgoaTogaW50LCBqOiBpbnQpLCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIHQoJ3gpKSA9PiB7XG4gIGxldCAocHJlZml4LCBzdWZmaXgpID0gbWsoaiwgeHMpO1xuICBsZXQgKHByZWZpeCwgc3VibGlzdCkgPSBtayhpLCBMaXN0LnJldihwcmVmaXgpKTtcbiAgKHN1Ymxpc3QsIChwcmVmaXgsIHN1ZmZpeCkpO1xufTtcblxubGV0IHRvX2xpc3QgPSAofnN1YmplY3Q6IGxpc3QoJ3gpPVtdLCAocHJlZml4LCBzdWZmaXgpOiB0KCd4KSkgPT5cbiAgTGlzdC5jb25jYXQoW0xpc3QucmV2KHByZWZpeCksIHN1YmplY3QsIHN1ZmZpeF0pO1xuXG5sZXQgYXBwZW5kID0gKChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpLCAocHJlZml4Jywgc3VmZml4Jyk6IHQoJ3gpKSA9PiAoXG4gIHByZWZpeCBAIHByZWZpeCcsXG4gIHN1ZmZpeCBAIHN1ZmZpeCcsXG4pO1xuIiwibGV0IG51bV9kaWdpdHMgPSBuID0+IFN0cmluZy5sZW5ndGgoc3RyaW5nX29mX2ludChuKSk7XG5cbmxldCBtb2R1bG8gPSAoeCwgeSkgPT4ge1xuICBsZXQgcmVzdWx0ID0geCBtb2QgeTtcbiAgcmVzdWx0ID49IDAgPyByZXN1bHQgOiByZXN1bHQgKyB5O1xufTtcblxubGV0IGlwb3cgPSAoYmFzZTogaW50LCBleHBvbmVudDogaW50KTogaW50ID0+IHtcbiAgbGV0IHJlYyBpcG93X2l0ZXIgPSAoYjogaW50LCBlOiBpbnQsIHI6IGludCk6IGludCA9PlxuICAgIGlmIChlID09PSAwKSB7XG4gICAgICByO1xuICAgIH0gZWxzZSBpZiAoZSBsYW5kIDEgIT09IDApIHtcbiAgICAgIGlwb3dfaXRlcihiICogYiwgZSBsc3IgMSwgciAqIGIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpcG93X2l0ZXIoYiAqIGIsIGUgbHNyIDEsIHIpO1xuICAgIH07XG4gIGlwb3dfaXRlcihiYXNlLCBleHBvbmVudCwgMSk7XG59O1xuIiwiaW5jbHVkZSBQdG1hcDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcblxuW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbnR5cGUgYmluZGluZygndikgPSAoaW50LCAndik7XG5cbmxldCBzaW5nbGV0b24gPSAoaywgdikgPT4gUHRtYXAuYWRkKGssIHYsIFB0bWFwLmVtcHR5KTtcblxubGV0IGRpc2pfdW5pb24gPSAobTogdCgnYSksIG0nOiB0KCdhKSk6IHQoJ2EpID0+XG4gIHVuaW9uKFxuICAgIChfLCBfLCBfKSA9PlxuICAgICAgcmFpc2UoXG4gICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgXCJJbnRNYXAuZGlzal91bmlvbiBleHBlY3RzIGlucHV0IG1hcHMgdG8gaGF2ZSBkaXNqb2ludCBrZXkgc2V0c1wiLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBtLFxuICAgIG0nLFxuICApO1xuXG5sZXQgcHAgPSAocHBfdiwgZiwgbWFwKSA9PlxuICBpdGVyKChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVkIC0+ICVhQFxcblwiLCBrLCBwcF92LCB2KSwgbWFwKTtcblxubGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3Y6ICd2ID0+IFNleHAudCwgbWFwOiB0KCd2KSk6IFNleHAudCA9PlxuICBtYXAgfD4gYmluZGluZ3MgfD4gc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcbmxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwOiBTZXhwLnQgPT4gJ3YsIHNleHA6IFNleHAudCk6IHQoJ3YpID0+XG4gIHNleHAgfD4gbGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKSB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXE7XG5cbmxldCB5b2pzb25fb2ZfdCA9XG4gICAgKHlvanNvbl9vZl92OiAndiA9PiBZb2pzb24uU2FmZS50LCBtYXA6IHQoJ3YpKTogWW9qc29uLlNhZmUudCA9PlxuICBtYXAgfD4gYmluZGluZ3MgfD4geW9qc29uX29mX2xpc3QoeW9qc29uX29mX2JpbmRpbmcoeW9qc29uX29mX3YpKTtcbmxldCB0X29mX3lvanNvbiA9XG4gICAgKHZfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+ICd2LCB5b2pzb246IFlvanNvbi5TYWZlLnQpOiB0KCd2KSA9PlxuICB5b2pzb25cbiAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBvZl9zZXE7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQoJ2wsICdyKSA9XG4gIHwgTCgnbClcbiAgfCBSKCdyKTtcblxubGV0IGwgPSB4ID0+IEwoeCk7XG5sZXQgciA9IHggPT4gUih4KTtcblxubGV0IGlzX0wgPVxuICBmdW5cbiAgfCBMKF8pID0+IHRydWVcbiAgfCBSKF8pID0+IGZhbHNlO1xubGV0IGlzX1IgPSBlID0+ICFpc19MKGUpO1xuXG5sZXQgZ2V0X0wgPVxuICBmdW5cbiAgfCBMKGwpID0+IFNvbWUobClcbiAgfCBSKF8pID0+IE5vbmU7XG5sZXQgZ2V0X1IgPVxuICBmdW5cbiAgfCBSKHIpID0+IFNvbWUocilcbiAgfCBMKF8pID0+IE5vbmU7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vLyBpbnZhcmlhbnQ6IExpc3QubGVuZ3RoKGFzKSA9PSBMaXN0Lmxlbmd0aChicykgKyAxXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQoJ2EsICdiKSA9IChsaXN0KCdhKSwgbGlzdCgnYikpO1xuXG5sZXQgbWsgPSAoYXNfOiBsaXN0KCdhKSwgYnM6IGxpc3QoJ2IpKTogdCgnYSwgJ2IpID0+IHtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGFzXykgPT0gTGlzdC5sZW5ndGgoYnMpICsgMSk7XG4gIChhc18sIGJzKTtcbn07XG5cbmxldCBmaXJzdF9hID0gKChhc18sIF8pOiB0KCdhLCBfKSk6ICdhID0+IHtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGFzXykgPiAwKTtcbiAgTGlzdC5oZChhc18pO1xufTtcbmxldCBsYXN0X2EgPSAoKGFzXywgXyk6IHQoJ2EsIF8pKTogJ2EgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA+IDApO1xuICBMaXN0VXRpbC5sYXN0KGFzXyk7XG59O1xuXG5sZXQgcmV2ID0gKHJldl9hLCByZXZfYiwgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdhLCAnYikgPT4gKFxuICBMaXN0LnJldl9tYXAocmV2X2EsIGFzXyksXG4gIExpc3QucmV2X21hcChyZXZfYiwgYnMpLFxuKTtcblxubGV0IGNvbnMgPSAoYTogJ2EsIGI6ICdiLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PiAoXG4gIFthLCAuLi5hc19dLFxuICBbYiwgLi4uYnNdLFxuKTtcbmxldCBzbm9jID0gKChhc18sIGJzKTogdCgnYSwgJ2IpLCBiOiAnYiwgYTogJ2EpOiB0KCdhLCAnYikgPT4gKFxuICBhc18gQCBbYV0sXG4gIGJzIEAgW2JdLFxuKTtcblxubGV0IHNpbmdsZXRvbiA9IChhOiAnYSk6IHQoJ2EsIF8pID0+IChbYV0sIFtdKTtcblxubGV0IGdldF9hczogdCgnYSwgXykgPT4gbGlzdCgnYSkgPSBmc3Q7XG5sZXQgZ2V0X2JzOiB0KF8sICdiKSA9PiBsaXN0KCdiKSA9IHNuZDtcblxubGV0IGhkID0gKChhc18sIF8pOiB0KCdhLCAnYikpOiAnYSA9PiBMaXN0LmhkKGFzXyk7XG5cbmxldCByZWMgYWJhX3RyaXBsZXMgPSAoYWJhOiB0KCdhLCAnYikpOiBsaXN0KCgnYSwgJ2IsICdhKSkgPT5cbiAgc3dpdGNoIChhYmEpIHtcbiAgfCAoW2ExLCBhMiwgLi4uYXNfXSwgW2IsIC4uLmJzXSkgPT4gW1xuICAgICAgKGExLCBiLCBhMiksXG4gICAgICAuLi5hYmFfdHJpcGxlcygoW2EyLCAuLi5hc19dLCBicykpLFxuICAgIF1cbiAgfCBfID0+IFtdXG4gIH07XG5cbmxldCBtYXBfYSA9IChmX2E6ICdhID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2MsICdiKSA9PiAoXG4gIExpc3QubWFwKGZfYSwgYXNfKSxcbiAgYnMsXG4pO1xubGV0IG1hcF9iID0gKGZfYjogJ2IgPT4gJ2MsIChhc18sIGJzKTogdCgnYSwgJ2IpKTogdCgnYSwgJ2MpID0+IChcbiAgYXNfLFxuICBMaXN0Lm1hcChmX2IsIGJzKSxcbik7XG5sZXQgbWFwX2FiYXMgPVxuICAgIChmX2FiYTogKCgnYSwgJ2IsICdhKSkgPT4gJ2MsIChhc18sIF8pIGFzIGFiYTogdCgnYSwgJ2IpKTogdCgnYSwgJ2MpID0+IChcbiAgYXNfLFxuICBMaXN0Lm1hcChmX2FiYSwgYWJhX3RyaXBsZXMoYWJhKSksXG4pO1xuXG5sZXQgdHJpbSA9ICgoYXNfLCBicyk6IHQoJ2EsICdiKSk6IG9wdGlvbigoJ2EsIHQoJ2IsICdhKSwgJ2EpKSA9PlxuICBzd2l0Y2ggKGJzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtfLCAuLi5fXSA9PlxuICAgIGxldCAobCwgYXNfKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGFzXyk7XG4gICAgbGV0IChhc18sIHIpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChhc18pO1xuICAgIFNvbWUoKGwsIG1rKGJzLCBhc18pLCByKSk7XG4gIH07XG5cbmxldCBzcGxpdCA9IChmOiAnYyA9PiBFaXRoZXIudCgnYSwgJ2IpLCBjczogbGlzdCgnYykpOiB0KGxpc3QoJ2EpLCAnYikgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgIChjLCAoYXNfLCBicykpID0+XG4gICAgICBzd2l0Y2ggKGYoYykpIHtcbiAgICAgIHwgTChhKSA9PlxuICAgICAgICBsZXQgKGhkLCB0bCkgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICAgICAgICAoW1thLCAuLi5oZF0sIC4uLnRsXSwgYnMpO1xuICAgICAgfCBSKGIpID0+IChbW10sIC4uLmFzX10sIFtiLCAuLi5ic10pXG4gICAgICB9LFxuICAgIGNzLFxuICAgIG1rKFtbXV0sIFtdKSxcbiAgKTtcblxubGV0IGpvaW4gPSAoZl9hOiAnYSA9PiAnYywgZl9iOiAnYiA9PiAnYywgYWJhOiB0KCdhLCAnYikpOiBsaXN0KCdjKSA9PiB7XG4gIGxldCAoYXNfLCBhKSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ2V0X2FzKGFiYSkpO1xuICBsZXQgYnMgPSBnZXRfYnMoYWJhKTtcbiAgTGlzdC5mb2xkX3JpZ2h0MihcbiAgICAoYSwgYiwgY3MpID0+IFtmX2EoYSksIGZfYihiKSwgLi4uY3NdLFxuICAgIGFzXyxcbiAgICBicyxcbiAgICBbZl9hKGEpXSxcbiAgKTtcbn07XG5cbmxldCBmb2xkX2xlZnQgPVxuICAgIChmX2E6ICdhID0+ICdhY2MsIGZfYmE6ICgnYWNjLCAnYiwgJ2EpID0+ICdhY2MsIChhc18sIGJzKTogdCgnYSwgJ2IpKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCAoYSwgYXNfKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGFzXyk7XG4gIExpc3QuZm9sZF9sZWZ0MihmX2JhLCBmX2EoYSksIGJzLCBhc18pO1xufTtcbmxldCBmb2xkX2xlZnRfbWFwID1cbiAgICAoXG4gICAgICBmX2E6ICdhID0+ICgnYWNjLCAnYyksXG4gICAgICBmX2JhOiAoJ2FjYywgJ2IsICdhKSA9PiAoJ2FjYywgJ2QsICdjKSxcbiAgICAgIGFiYTogdCgnYSwgJ2IpLFxuICAgIClcbiAgICA6ICgnYWNjLCB0KCdjLCAnZCkpID0+XG4gIGFiYVxuICB8PiBmb2xkX2xlZnQoXG4gICAgICAgYSA9PiB7XG4gICAgICAgICBsZXQgKGFjYywgYykgPSBmX2EoYSk7XG4gICAgICAgICAoYWNjLCBzaW5nbGV0b24oYykpO1xuICAgICAgIH0sXG4gICAgICAgKChhY2MsIG1hcHBlZCksIGIsIGEpID0+IHtcbiAgICAgICAgIGxldCAoYWNjLCBkLCBjKSA9IGZfYmEoYWNjLCBiLCBhKTtcbiAgICAgICAgIChhY2MsIHNub2MobWFwcGVkLCBkLCBjKSk7XG4gICAgICAgfSxcbiAgICAgKTtcblxubGV0IGZvbGRfcmlnaHQgPVxuICAgIChmX2FiOiAoJ2EsICdiLCAnYykgPT4gJ2MsIGZfYTogJ2EgPT4gJ2MsIChhc18sIGJzKTogdCgnYSwgJ2IpKSA9PiB7XG4gIGxldCAoYXNfLCBhKSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoYXNfKTtcbiAgTGlzdC5mb2xkX3JpZ2h0MihmX2FiLCBhc18sIGJzLCBmX2EoYSkpO1xufTtcbiIsIlxudHlwZSB0ID0gaW50XG5sZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG5sZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbmxldCB0b19pbnQgeCA9IHhcbmxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcblxubGV0IGludGVyc2VjdCB4IHkgPSB4IGxhbmQgeSA8PiAwXG5sZXQgKCsrKSB4IHkgPSB4IGxvciB5XG5cbmxldCBkdW1teSA9IC0xXG5sZXQgaW5leGlzdGFudCA9IDFcbmxldCBsZXR0ZXIgPSAyXG5sZXQgbm90X2xldHRlciA9IDRcbmxldCBuZXdsaW5lID0gOFxubGV0IGxhc3RuZXdsaW5lID0gMTZcbmxldCBzZWFyY2hfYm91bmRhcnkgPSAzMlxuXG5sZXQgZnJvbV9jaGFyID0gZnVuY3Rpb25cbiAgKCogU2hvdWxkIG1hdGNoIFtjd29yZF0gZGVmaW5pdGlvbiAqKVxuICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JyB8ICdfJyB8ICdcXDE3MCcgfCAnXFwxODEnIHwgJ1xcMTg2J1xuICB8ICdcXDE5MicuLidcXDIxNCcgfCAnXFwyMTYnLi4nXFwyNDYnIHwgJ1xcMjQ4Jy4uJ1xcMjU1JyAtPlxuICAgIGxldHRlclxuICB8ICdcXG4nIC0+XG4gICAgbm90X2xldHRlciArKyBuZXdsaW5lXG4gIHwgXyAtPlxuICAgIG5vdF9sZXR0ZXJcbiIsIigqKiBWZXJ5IHNtYWxsIHRvb2xpbmcgZm9yIGZvcm1hdCBwcmludGVycy4gKilcblxuaW5jbHVkZSBGb3JtYXRcblxudHlwZSAnYSB0ID0gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0XG5cbmxldCBsaXN0ID0gcHBfcHJpbnRfbGlzdFxubGV0IHN0ciA9IHBwX3ByaW50X3N0cmluZ1xubGV0IHNleHAgZm10IHMgcHAgeCA9IGZwcmludGYgZm10IFwiQFs8Mz4oJXNAICVhKUBdXCIgcyBwcCB4XG5sZXQgcGFpciBwcDEgcHAyIGZtdCAodjEsdjIpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDsgcHAyIGZtdCB2MlxubGV0IHRyaXBsZSBwcDEgcHAyIHBwMyBmbXQgKHYxLCB2MiwgdjMpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAyIGZtdCB2MjsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAzIGZtdCB2M1xubGV0IGludCA9IHBwX3ByaW50X2ludFxubGV0IG9wdGludCBmbXQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGkgLT4gZnByaW50ZiBmbXQgXCJAICVkXCIgaVxuXG5sZXQgcXVvdGUgZm10IHMgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgc1xuXG5sZXQgcHBfb2xpc3QgcHBfZWxlbSBmbXQgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwzPltAICVhQCBdQF1cIlxuICAgIChwcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBmcHJpbnRmIGZtdCBcIjtAIFwiKVxuICAgICAgIHBwX2VsZW0pXG5cbmxldCBwcF9zdHJfbGlzdCA9IHBwX29saXN0IHF1b3RlXG5cbmxldCB0b190b19zdHJpbmcgcHAgeCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBwcCBmbXQgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgYyA9IGludFxudHlwZSB0ID0gKGMgKiBjKSBsaXN0XG5cbmxldCByZWMgdW5pb24gbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gbCdcbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiArIDEgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OnVuaW9uIHIgbCdcbiAgICBlbHNlIGlmIGMyJyArIDEgPCBjMSB0aGVuXG4gICAgICAoYzEnLCBjMicpOjp1bmlvbiBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICB1bmlvbiByICgobWluIGMxIGMxJywgYzInKTo6cicpXG4gICAgZWxzZVxuICAgICAgdW5pb24gKChtaW4gYzEgYzEnLCBjMik6OnIpIHInXG5cbmxldCByZWMgaW50ZXIgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBbXVxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgaW50ZXIgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgaW50ZXIgbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgKG1heCBjMSBjMScsIGMyKTo6aW50ZXIgciBsJ1xuICAgIGVsc2VcbiAgICAgIChtYXggYzEgYzEnLCBjMicpOjppbnRlciBsIHInXG5cbmxldCByZWMgZGlmZiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjpkaWZmIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGRpZmYgbCByJ1xuICAgIGVsc2VcbiAgICAgIGxldCByJycgPSBpZiBjMicgPCBjMiB0aGVuIChjMicgKyAxLCBjMikgOjogciBlbHNlIHIgaW5cbiAgICAgIGlmIGMxIDwgYzEnIHRoZW5cbiAgICAgICAgKGMxLCBjMScgLSAxKTo6ZGlmZiByJycgcidcbiAgICAgIGVsc2VcbiAgICAgICAgZGlmZiByJycgcidcblxubGV0IHNpbmdsZSBjID0gW2MsIGNdXG5cbmxldCBhZGQgYyBsID0gdW5pb24gKHNpbmdsZSBjKSBsXG5cbmxldCBzZXEgYyBjJyA9IGlmIGMgPD0gYycgdGhlbiBbYywgYyddIGVsc2UgW2MnLCBjXVxuXG5sZXQgcmVjIG9mZnNldCBvIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgICAgICAgIC0+IFtdXG4gIHwgKGMxLCBjMikgOjogciAtPiAoYzEgKyBvLCBjMiArIG8pIDo6IG9mZnNldCBvIHJcblxubGV0IGVtcHR5ID0gW11cblxubGV0IHJlYyBtZW0gKGMgOiBpbnQpIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgICBbXSAgICAgICAgICAgICAgLT4gZmFsc2VcbiAgfCAoYzEsIGMyKSA6OiByZW0gLT4gaWYgYyA8PSBjMiB0aGVuIGMgPj0gYzEgZWxzZSBtZW0gYyByZW1cblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxuXG5sZXQgcmVjIGhhc2hfcmVjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgLT4gMFxuICB8IChpLCBqKTo6ciAtPiBpICsgMTMgKiBqICsgMjU3ICogaGFzaF9yZWMgclxubGV0IGhhc2ggbCA9IChoYXNoX3JlYyBsKSBsYW5kIDB4M0ZGRkZGRkZcblxuKCoqKiopXG5cbmxldCBwcmludF9vbmUgY2ggKGMxLCBjMikgPVxuICBpZiBjMSA9IGMyIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkXCIgYzFcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBjMSBjMlxuXG5sZXQgcHAgPSBGbXQubGlzdCBwcmludF9vbmVcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8ICh4LCB5KTo6eHMgLT5cbiAgICBmIHggeTtcbiAgICBpdGVyIHhzICB+ZlxuXG5sZXQgb25lX2NoYXIgPSBmdW5jdGlvblxuICB8IFtpLCBqXSB3aGVuIGkgPSBqIC0+IFNvbWUgaVxuICB8IF8gLT4gTm9uZVxuXG5cbm1vZHVsZSBDU2V0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCAqIChpbnQgKiBpbnQpIGxpc3RcbiAgICBsZXQgY29tcGFyZSAoaSwgdSkgKGosIHYpID1cbiAgICAgIGxldCBjID0gY29tcGFyZSBpIGogaW5cbiAgICAgIGlmIGMgPD4gMFxuICAgICAgdGhlbiBjXG4gICAgICBlbHNlIGNvbXBhcmUgdSB2XG4gIGVuZClcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZF9yaWdodCBmIHQgaW5pdFxuXG5sZXQgY3NpbmdsZSBjID0gc2luZ2xlIChDaGFyLmNvZGUgYylcblxubGV0IGNhbnkgPSBbMCwgMjU1XVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCByZWMgcHJlcGVuZCBzIHggbCA9XG4gIG1hdGNoIHMsIGwgd2l0aFxuICB8IFtdLCBfIC0+IGxcbiAgfCBfciwgW10gLT4gW11cbiAgfCAoX2MsIGMnKSA6OiByLCAoW2QsIF9kJ10sIF94JykgOjogX3InIHdoZW4gYycgPCBkIC0+IHByZXBlbmQgciB4IGxcbiAgfCAoYywgYycpIDo6IHIsIChbZCwgZCddLCB4JykgOjogcicgLT5cbiAgICBpZiBjIDw9IGQgdGhlbiBiZWdpblxuICAgICAgaWYgYycgPCBkJ1xuICAgICAgdGhlbiAoW2QsIGMnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHIgeCAoKFtjJyArIDEsIGQnXSwgeCcpIDo6IHInKVxuICAgICAgZWxzZSAoW2QsIGQnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBjID4gZCdcbiAgICAgIHRoZW4gKFtkLCBkJ10sIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgICAgZWxzZSAoW2QsIGMgLSAxXSwgeCcpIDo6IHByZXBlbmQgcyB4ICgoW2MsIGQnXSwgeCcpIDo6IHInKVxuICAgIGVuZFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwaWNrID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlJlX2NzZXQucGlja1wiXG4gIHwgKHgsIF8pOjpfIC0+IHhcbiIsIlxubW9kdWxlIFBtYXJrID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG4gIGxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxuICBsZXQgciA9IHJlZiAwXG4gIGxldCBnZW4gKCkgPSBpbmNyIHIgOyAhclxuXG4gIGxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZFxuXG5pbmNsdWRlIFBtYXJrXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UoUG1hcmspXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIHNlbSA9IFsgYExvbmdlc3QgfCBgU2hvcnRlc3QgfCBgRmlyc3QgXVxuXG50eXBlIHJlcF9raW5kID0gWyBgR3JlZWR5IHwgYE5vbl9ncmVlZHkgXVxuXG50eXBlIG1hcmsgPSBpbnRcbnR5cGUgaWR4ID0gaW50XG5cbnR5cGUgZXhwciA9IHsgaWQgOiBpbnQ7IGRlZiA6IGRlZiB9XG5cbmFuZCBkZWYgPVxuICAgIENzdCBvZiBDc2V0LnRcbiAgfCBBbHQgb2YgZXhwciBsaXN0XG4gIHwgU2VxIG9mIHNlbSAqIGV4cHIgKiBleHByXG4gIHwgRXBzXG4gIHwgUmVwIG9mIHJlcF9raW5kICogc2VtICogZXhwclxuICB8IE1hcmsgb2YgaW50XG4gIHwgRXJhc2Ugb2YgaW50ICogaW50XG4gIHwgQmVmb3JlIG9mIENhdGVnb3J5LnRcbiAgfCBBZnRlciBvZiBDYXRlZ29yeS50XG4gIHwgUG1hcmsgb2YgUG1hcmsudFxuXG5sZXQgaGFzaF9jb21iaW5lIGggYWNjdSA9IGFjY3UgKiA2NTU5OSArIGhcblxubW9kdWxlIE1hcmtzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXJrcyA6IChpbnQgKiBpbnQpIGxpc3RcbiAgICA7IHBtYXJrcyA6IFBtYXJrLlNldC50IH1cblxuICBsZXQgZW1wdHkgPSB7IG1hcmtzID0gW10gOyBwbWFya3MgPSBQbWFyay5TZXQuZW1wdHkgfVxuXG4gIGxldCByZWMgbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgb2xkXG4gICAgfCAoaSwgdikgOjogcmVtIC0+XG4gICAgICBsZXQgbncnID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IChMaXN0LnJlbW92ZV9hc3NxIGkgb2xkKSByZW0gaW5cbiAgICAgIGlmIHYgPSAtMiB0aGVuXG4gICAgICAgIG53J1xuICAgICAgZWxzZVxuICAgICAgICAoaSwgdikgOjogbncnXG5cbiAgbGV0IG1lcmdlIG9sZCBudyA9XG4gICAgeyBtYXJrcyA9IG1lcmdlX21hcmtzX29mZnNldCBvbGQubWFya3MgbncubWFya3NcbiAgICA7IHBtYXJrcyA9IFBtYXJrLlNldC51bmlvbiBvbGQucG1hcmtzIG53LnBtYXJrcyB9XG5cbiAgbGV0IHJlYyBoYXNoX21hcmtzX29mZnNldCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gICAgICAgICAgLT4gYWNjdVxuICAgIHwgKGEsIGkpIDo6IHIgLT4gaGFzaF9tYXJrc19vZmZzZXQgciAoaGFzaF9jb21iaW5lIGEgKGhhc2hfY29tYmluZSBpIGFjY3UpKVxuXG4gIGxldCBoYXNoIG0gYWNjdSA9XG4gICAgaGFzaF9tYXJrc19vZmZzZXQgbS5tYXJrcyAoaGFzaF9jb21iaW5lIChIYXNodGJsLmhhc2ggbS5wbWFya3MpIGFjY3UpXG5cbiAgbGV0IHJlYyBtYXJrc19zZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gICAgfCAoYSwgLTEpIDo6IHJlbSAtPlxuICAgICAgKGEsIGlkeCkgOjogbWFya3Nfc2V0X2lkeCBpZHggcmVtXG4gICAgfCBtYXJrcyAtPlxuICAgICAgbWFya3NcblxuICBsZXQgbWFya3Nfc2V0X2lkeCBtYXJrcyBpZHggPVxuICAgIHsgbWFya3Mgd2l0aCBtYXJrcyA9IG1hcmtzX3NldF9pZHggaWR4IG1hcmtzLm1hcmtzIH1cblxuICBsZXQgcHBfbWFya3MgY2ggdCA9XG4gICAgbWF0Y2ggdC5tYXJrcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgICB8IChhLCBpKSA6OiByIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYSBpO1xuICAgICAgTGlzdC5pdGVyIChmdW4gKGEsIGkpIC0+IEZvcm1hdC5mcHJpbnRmIGNoIFwiICVkLSVkXCIgYSBpKSByXG5lbmRcblxuKCoqKiopXG5cbmxldCBwcF9zZW0gY2ggayA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgY2hcbiAgICAobWF0Y2ggayB3aXRoXG4gICAgICAgYFNob3J0ZXN0IC0+IFwic2hvcnRcIlxuICAgICB8IGBMb25nZXN0ICAtPiBcImxvbmdcIlxuICAgICB8IGBGaXJzdCAgICAtPiBcImZpcnN0XCIpXG5cblxubGV0IHBwX3JlcF9raW5kIGZtdCA9IGZ1bmN0aW9uXG4gIHwgYEdyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkdyZWVkeVwiXG4gIHwgYE5vbl9ncmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25fZ3JlZWR5XCJcblxubGV0IHJlYyBwcCBjaCBlID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIG1hdGNoIGUuZGVmIHdpdGhcbiAgICBDc3QgbCAtPlxuICAgIHNleHAgY2ggXCJjc3RcIiBDc2V0LnBwIGw7XG4gIHwgQWx0IGwgLT5cbiAgICBzZXhwIGNoIFwiYWx0XCIgKGxpc3QgcHApIGxcbiAgfCBTZXEgKGssIGUsIGUnKSAtPlxuICAgIHNleHAgY2ggXCJzZXFcIiAodHJpcGxlIHBwX3NlbSBwcCBwcCkgKGssIGUsIGUnKVxuICB8IEVwcyAtPlxuICAgIHN0ciBjaCBcImVwc1wiXG4gIHwgUmVwIChfcmssIGssIGUpIC0+XG4gICAgc2V4cCBjaCBcInJlcFwiIChwYWlyIHBwX3NlbSBwcCkgKGssIGUpXG4gIHwgTWFyayBpIC0+XG4gICAgc2V4cCBjaCBcIm1hcmtcIiBpbnQgaVxuICB8IFBtYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwicG1hcmtcIiBpbnQgKGkgOj4gaW50KVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIHNleHAgY2ggXCJlcmFzZVwiIChwYWlyIGludCBpbnQpIChiLCBlKVxuICB8IEJlZm9yZSBjIC0+XG4gICAgc2V4cCBjaCBcImJlZm9yZVwiIENhdGVnb3J5LnBwIGNcbiAgfCBBZnRlciBjIC0+XG4gICAgc2V4cCBjaCBcImFmdGVyXCIgQ2F0ZWdvcnkucHAgY1xuXG5cbigqKioqKVxuXG5sZXQgcmVjIGZpcnN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTm9uZVxuICB8IHggOjogciAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICBOb25lICAgICAgICAgIC0+IGZpcnN0IGYgclxuICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXNcblxuKCoqKiopXG5cbnR5cGUgaWRzID0gaW50IHJlZlxubGV0IGNyZWF0ZV9pZHMgKCkgPSByZWYgMFxuXG5sZXQgZXBzX2V4cHIgPSB7IGlkID0gMDsgZGVmID0gRXBzIH1cblxubGV0IG1rX2V4cHIgaWRzIGRlZiA9XG4gIGluY3IgaWRzO1xuICB7IGlkID0gIWlkczsgZGVmID0gZGVmIH1cblxubGV0IGVtcHR5IGlkcyA9IG1rX2V4cHIgaWRzIChBbHQgW10pXG5cbmxldCBjc3QgaWRzIHMgPVxuICBpZiBDc2V0LmlzX2VtcHR5IHNcbiAgdGhlbiBlbXB0eSBpZHNcbiAgZWxzZSBta19leHByIGlkcyAoQ3N0IHMpXG5cbmxldCBhbHQgaWRzID0gZnVuY3Rpb25cbiAgfCBbXSAgLT4gZW1wdHkgaWRzXG4gIHwgW2NdIC0+IGNcbiAgfCBsICAgLT4gbWtfZXhwciBpZHMgKEFsdCBsKVxuXG5sZXQgc2VxIGlkcyBraW5kIHggeSA9XG4gIG1hdGNoIHguZGVmLCB5LmRlZiB3aXRoXG4gICAgQWx0IFtdLCBfICAgICAgICAgICAgICAgICAtPiB4XG4gIHwgXywgQWx0IFtdICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgRXBzLCBfICAgICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgXywgRXBzIHdoZW4ga2luZCA9IGBGaXJzdCAtPiB4XG4gIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAtPiBta19leHByIGlkcyAoU2VxIChraW5kLCB4LCB5KSlcblxubGV0IGlzX2VwcyBleHByID1cbiAgbWF0Y2ggZXhwci5kZWYgd2l0aFxuICB8IEVwcyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgZXBzIGlkcyA9IG1rX2V4cHIgaWRzIEVwc1xuXG5sZXQgcmVwIGlkcyBraW5kIHNlbSB4ID0gbWtfZXhwciBpZHMgKFJlcCAoa2luZCwgc2VtLCB4KSlcblxubGV0IG1hcmsgaWRzIG0gPSBta19leHByIGlkcyAoTWFyayBtKVxuXG5sZXQgcG1hcmsgaWRzIGkgPSBta19leHByIGlkcyAoUG1hcmsgaSlcblxubGV0IGVyYXNlIGlkcyBtIG0nID0gbWtfZXhwciBpZHMgKEVyYXNlIChtLCBtJykpXG5cbmxldCBiZWZvcmUgaWRzIGMgPSBta19leHByIGlkcyAoQmVmb3JlIGMpXG5cbmxldCBhZnRlciBpZHMgYyA9IG1rX2V4cHIgaWRzIChBZnRlciBjKVxuXG4oKioqKilcblxubGV0IHJlYyByZW5hbWUgaWRzIHggPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IF8gfCBFcHMgfCBNYXJrIF8gfCBQbWFyayBfIHwgRXJhc2UgXyB8IEJlZm9yZSBfIHwgQWZ0ZXIgXyAtPlxuICAgIG1rX2V4cHIgaWRzIHguZGVmXG4gIHwgQWx0IGwgLT5cbiAgICBta19leHByIGlkcyAoQWx0IChMaXN0Lm1hcCAocmVuYW1lIGlkcykgbCkpXG4gIHwgU2VxIChrLCB5LCB6KSAtPlxuICAgIG1rX2V4cHIgaWRzIChTZXEgKGssIHJlbmFtZSBpZHMgeSwgcmVuYW1lIGlkcyB6KSlcbiAgfCBSZXAgKGcsIGssIHkpIC0+XG4gICAgbWtfZXhwciBpZHMgKFJlcCAoZywgaywgcmVuYW1lIGlkcyB5KSlcblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxudHlwZSBtYXJrX2luZm9zID0gaW50IGFycmF5XG50eXBlIHN0YXR1cyA9IEZhaWxlZCB8IE1hdGNoIG9mIG1hcmtfaW5mb3MgKiBQbWFyay5TZXQudCB8IFJ1bm5pbmdcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRTZXEgb2YgdCBsaXN0ICogZXhwciAqIHNlbVxuICAgIHwgVEV4cCBvZiBNYXJrcy50ICogZXhwclxuICAgIHwgVE1hdGNoIG9mIE1hcmtzLnRcblxuICBsZXQgcmVjIGVxdWFsIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBUU2VxIChsMScsIGUxLCBfKSA6OiByMSwgVFNlcSAobDInLCBlMiwgXykgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgZXF1YWwgbDEnIGwyJyAmJiBlcXVhbCByMSByMlxuICAgIHwgVEV4cCAobWFya3MxLCBlMSkgOjogcjEsIFRFeHAgKG1hcmtzMiwgZTIpIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgVE1hdGNoIG1hcmtzMSA6OiByMSwgVE1hdGNoIG1hcmtzMiA6OiByMiAtPlxuICAgICAgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCByZWMgaGFzaCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFjY3VcbiAgICB8IFRTZXEgKGwnLCBlLCBfKSA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDE3MmExYmNlIChoYXNoX2NvbWJpbmUgZS5pZCAoaGFzaCBsJyBhY2N1KSkpXG4gICAgfCBURXhwIChtYXJrcywgZSkgOjogciAtPlxuICAgICAgaGFzaCByXG4gICAgICAgIChoYXNoX2NvbWJpbmUgMHgyYjRjMGQ3NyAoaGFzaF9jb21iaW5lIGUuaWQgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpKVxuICAgIHwgVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MWMyMDVhZDUgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpXG5cbiAgbGV0IHRleHAgbWFya3MgeCA9IFRFeHAgKG1hcmtzLCB4KVxuXG4gIGxldCB0c2VxIGtpbmQgeCB5IHJlbSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IHJlbVxuICAgIHwgW1RFeHAgKG1hcmtzLCB7ZGVmID0gRXBzIDsgX30pXSAtPiBURXhwIChtYXJrcywgeSkgOjogcmVtXG4gICAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFRTZXEgKHgsIHksIGtpbmQpIDo6IHJlbVxuXG4gIGxldCByZWMgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCBUTWF0Y2ggbWFya3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oTWF0Y2hAICVhKUBdXCIgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRTZXEgKGwnLCB4LCBfa2luZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oU2VxQCBcIjtcbiAgICAgIHByaW50X3N0YXRlX2xzdCBjaCBsJyB4O1xuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAICVhKUBdXCIgcHAgeFxuICAgIHwgVEV4cCAobWFya3MsIHtkZWYgPSBFcHM7IF99KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAoZXBzKSlAXVwiIHkuaWQgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRFeHAgKG1hcmtzLCB4KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAlYSlAXVwiIHguaWQgTWFya3MucHBfbWFya3MgbWFya3MgcHAgeFxuXG4gIGFuZCBwcmludF9zdGF0ZV9sc3QgY2ggbCB5ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIigpXCJcbiAgICB8IGUgOjogcmVtIC0+XG4gICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5O1xuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgfCBcIjtcbiAgICAgICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSlcbiAgICAgICAgcmVtXG5cbiAgbGV0IHBwIGNoIHQgPSBwcmludF9zdGF0ZV9sc3QgY2ggW3RdIHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgaWR4OiBpZHhcbiAgICA7IGNhdGVnb3J5OiBDYXRlZ29yeS50XG4gICAgOyBkZXNjOiBFLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGF0dXM6IHN0YXR1cyBvcHRpb25cbiAgICA7IGhhc2g6IGhhc2ggfVxuXG4gIGxldCBkdW1teSA9XG4gICAgeyBpZHggPSAtMVxuICAgIDsgY2F0ZWdvcnkgPSBDYXRlZ29yeS5kdW1teVxuICAgIDsgZGVzYyA9IFtdXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gLTEgfVxuXG4gIGxldCBoYXNoIGlkeCBjYXQgZGVzYyA9XG4gICAgRS5oYXNoIGRlc2MgKGhhc2hfY29tYmluZSBpZHggKGhhc2hfY29tYmluZSAoQ2F0ZWdvcnkudG9faW50IGNhdCkgMCkpIGxhbmQgMHgzRkZGRkZGRlxuXG4gIGxldCBtayBpZHggY2F0IGRlc2MgPVxuICAgIHsgaWR4XG4gICAgOyBjYXRlZ29yeSA9IGNhdFxuICAgIDsgZGVzY1xuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IGhhc2ggaWR4IGNhdCBkZXNjfVxuXG4gIGxldCBjcmVhdGUgY2F0IGUgPSBtayAwIGNhdCBbRS5URXhwIChNYXJrcy5lbXB0eSwgZSldXG5cbiAgbGV0IGVxdWFsIHggeSA9XG4gICAgKHguaGFzaCA6IGludCkgPSB5Lmhhc2ggJiYgKHguaWR4IDogaW50KSA9IHkuaWR4ICYmXG4gICAgQ2F0ZWdvcnkuZXF1YWwgeC5jYXRlZ29yeSB5LmNhdGVnb3J5ICYmIEUuZXF1YWwgeC5kZXNjIHkuZGVzY1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgbGV0IGMgPSBjb21wYXJlICh4Lmhhc2ggOiBpbnQpIHkuaGFzaCBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgbGV0IGMgPSBDYXRlZ29yeS5jb21wYXJlIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgIGNvbXBhcmUgeC5kZXNjIHkuZGVzY1xuXG4gIHR5cGUgdCcgPSB0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHQnXG4gICAgICBsZXQgZXF1YWwgPSBlcXVhbFxuICAgICAgbGV0IGhhc2ggdCA9IHQuaGFzaFxuICAgIGVuZClcbmVuZFxuXG4oKioqKiBGaW5kIGEgZnJlZSBpbmRleCAqKioqKVxuXG50eXBlIHdvcmtpbmdfYXJlYSA9IGJvb2wgYXJyYXkgcmVmXG5cbmxldCBjcmVhdGVfd29ya2luZ19hcmVhICgpID0gcmVmIFt8IGZhbHNlIHxdXG5cbmxldCBpbmRleF9jb3VudCB3ID0gQXJyYXkubGVuZ3RoICF3XG5cbmxldCByZXNldF90YWJsZSBhID0gQXJyYXkuZmlsbCBhIDAgKEFycmF5Lmxlbmd0aCBhKSBmYWxzZVxuXG5sZXQgcmVjIG1hcmtfdXNlZF9pbmRpY2VzIHRibCA9XG4gIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgIHwgRS5UU2VxIChsLCBfLCBfKSAtPiBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbFxuICAgICAgfCBFLlRFeHAgKG1hcmtzLCBfKVxuICAgICAgfCBFLlRNYXRjaCBtYXJrcyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoXywgaSkgLT4gaWYgaSA+PSAwIHRoZW4gdGJsLihpKSA8LSB0cnVlKVxuICAgICAgICAgIG1hcmtzLk1hcmtzLm1hcmtzKVxuXG5sZXQgcmVjIGZpbmRfZnJlZSB0YmwgaWR4IGxlbiA9XG4gIGlmIGlkeCA9IGxlbiB8fCBub3QgdGJsLihpZHgpIHRoZW4gaWR4IGVsc2UgZmluZF9mcmVlIHRibCAoaWR4ICsgMSkgbGVuXG5cbmxldCBmcmVlX2luZGV4IHRibF9yZWYgbCA9XG4gIGxldCB0YmwgPSAhdGJsX3JlZiBpblxuICByZXNldF90YWJsZSB0Ymw7XG4gIG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsO1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHRibCBpblxuICBsZXQgaWR4ID0gZmluZF9mcmVlIHRibCAwIGxlbiBpblxuICBpZiBpZHggPSBsZW4gdGhlbiB0YmxfcmVmIDo9IEFycmF5Lm1ha2UgKDIgKiBsZW4pIGZhbHNlO1xuICBpZHhcblxuKCoqKiogQ29tcHV0YXRpb24gb2YgdGhlIG5leHQgc3RhdGUgKioqKilcblxubGV0IHJlbW92ZV9tYXRjaGVzID0gTGlzdC5maWx0ZXIgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpXG5cbmxldCByZWMgc3BsaXRfYXRfbWF0Y2hfcmVjIGwnID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEUuVE1hdGNoIF8gOjogciAtPiAoTGlzdC5yZXYgbCcsIHJlbW92ZV9tYXRjaGVzIHIpXG4gIHwgeCA6OiByICAgICAgICAtPiBzcGxpdF9hdF9tYXRjaF9yZWMgKHggOjogbCcpIHJcblxubGV0IHNwbGl0X2F0X21hdGNoIGwgPSBzcGxpdF9hdF9tYXRjaF9yZWMgW10gbFxuXG5sZXQgcmVjIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCB5ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT5cbiAgICAoW10sIHByZXYpXG4gIHwgRS5UTWF0Y2ggXyBhcyB4IDo6IF8gLT4gKCogVHJ1bmNhdGUgYWZ0ZXIgZmlyc3QgbWF0Y2ggKilcbiAgICAoW3hdLCBwcmV2KVxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBsZXQgKGwnJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsJyB4IGluXG4gICAgbGV0IChyJywgcHJldicnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYnIHIgeSBpblxuICAgIChFLnRzZXEga2luZCBsJycgeCByJywgcHJldicnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB7ZGVmID0gRXBzOyBffSkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHkuaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh5LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB4KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeC5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHguaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG5cbmxldCByZWMgc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBFLlRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgRS5UTWF0Y2ggKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIEUuVFNlcSAoc2V0X2lkeCBpZHggbCcsIHgsIGtpbmQpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRFeHAgKG1hcmtzLCB4KSA6OiByIC0+XG4gICAgRS5URXhwICgoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpLCB4KSA6OiBzZXRfaWR4IGlkeCByXG5cbmxldCBmaWx0ZXJfbWFya3MgYiBlIG1hcmtzID1cbiAge21hcmtzIHdpdGggTWFya3MubWFya3MgPSBMaXN0LmZpbHRlciAoZnVuIChpLCBfKSAtPiBpIDwgYiB8fCBpID4gZSkgbWFya3MuTWFya3MubWFya3MgfVxuXG5sZXQgcmVjIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgKCpGb3JtYXQuZXByaW50ZiBcIiVkQC5cIiB4LmlkOyopXG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgcyAtPlxuICAgIGlmIENzZXQubWVtIGMgcyB0aGVuIEUudGV4cCBtYXJrcyBlcHNfZXhwciA6OiByZW0gZWxzZSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBsZXQgKHknJywgbWFya3MnKSA9XG4gICAgICBtYXRjaFxuICAgICAgICBmaXJzdFxuICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5J1xuICAgICAgd2l0aFxuICAgICAgICBOb25lICAgICAgICAtPiAoeScsIG1hcmtzKVxuICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeScsIG1hcmtzJylcbiAgICBpblxuICAgIGJlZ2luIG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeScnIHggKEUuVE1hdGNoIG1hcmtzJyA6OiByZW0pXG4gICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHknJyB4IHJlbVxuICAgIGVuZFxuICB8IEVwcyAtPlxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBQbWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLnBtYXJrcyA9IFBtYXJrLlNldC5hZGQgaSBtYXJrcy5NYXJrcy5wbWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIEUuVE1hdGNoIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKSA6OiByZW1cbiAgfCBCZWZvcmUgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgbmV4dF9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cbiAgfCBBZnRlciBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBwcmV2X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5hbmQgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHkgeiByZW0gPVxuICBtYXRjaFxuICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5XG4gIHdpdGhcbiAgICBOb25lIC0+XG4gICAgRS50c2VxIGtpbmQgeSB6IHJlbVxuICB8IFNvbWUgbWFya3MgLT5cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIGBMb25nZXN0IC0+XG4gICAgICBFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiByZW0pXG4gICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHpcbiAgICAgICAgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IHJlbSlcbiAgICB8IGBGaXJzdCAtPlxuICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgIEUudHNlcSBraW5kIHknIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogKEUudHNlcSBraW5kIHknJyB6IHJlbSkpXG5cbmxldCByZWMgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgeCA6OiByZW1cblxuYW5kIGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxubGV0IGRlbHRhIHRibF9yZWYgbmV4dF9jYXQgY2hhciBzdCA9XG4gIGxldCBwcmV2X2NhdCA9IHN0LlN0YXRlLmNhdGVnb3J5IGluXG4gIGxldCAoZXhwcicsIF8pID1cbiAgICByZW1vdmVfZHVwbGljYXRlcyBbXVxuICAgICAgKGRlbHRhXzQgY2hhciB+bmV4dF9jYXQgfnByZXZfY2F0IHN0LlN0YXRlLmRlc2MgW10pXG4gICAgICBlcHNfZXhwciBpblxuICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICBTdGF0ZS5tayBpZHggbmV4dF9jYXQgZXhwcicnXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlZF90ciA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbX10gYXMgbCAtPlxuICAgIGxcbiAgfCAoKHMxLCBzdDEpIGFzIHRyMSkgOjogKChzMiwgc3QyKSBhcyB0cjIpIDo6IHJlbSAtPlxuICAgIGlmIFN0YXRlLmVxdWFsIHN0MSBzdDIgdGhlblxuICAgICAgcmVkX3RyICgoQ3NldC51bmlvbiBzMSBzMiwgc3QxKSA6OiByZW0pXG4gICAgZWxzZVxuICAgICAgdHIxIDo6IHJlZF90ciAodHIyIDo6IHJlbSlcblxubGV0IHNpbXBsX3RyIGwgPVxuICBMaXN0LnNvcnRcbiAgICAoZnVuIChzMSwgXykgKHMyLCBfKSAtPiBjb21wYXJlIHMxIHMyKVxuICAgIChyZWRfdHIgKExpc3Quc29ydCAoZnVuIChfLCBzdDEpIChfLCBzdDIpIC0+IFN0YXRlLmNvbXBhcmUgc3QxIHN0MikgbCkpXG5cbigqKioqKVxuXG5sZXQgcHJlcGVuZF9kZXJpdiA9IExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCB4KSBsIC0+IENzZXQucHJlcGVuZCBzIHggbClcblxubGV0IHJlYyByZXN0cmljdCBzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChzJywgeCcpIDo6IHJlbSAtPlxuICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgIHRoZW4gcmVzdHJpY3QgcyByZW1cbiAgICBlbHNlIChzJycsIHgnKSA6OiByZXN0cmljdCBzIHJlbVxuXG5sZXQgcmVjIHJlbW92ZV9tYXJrcyBiIGUgcmVtID1cbiAgaWYgYiA+IGUgdGhlbiByZW0gZWxzZSByZW1vdmVfbWFya3MgYiAoZSAtIDEpICgoZSwgLTIpIDo6IHJlbSlcblxubGV0IHJlYyBwcmVwZW5kX21hcmtzX2V4cHIgbSA9IGZ1bmN0aW9uXG4gIHwgRS5UU2VxIChsLCBlJywgcykgLT4gRS5UU2VxIChwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCwgZScsIHMpXG4gIHwgRS5URXhwIChtJywgZScpICAgLT4gRS5URXhwIChNYXJrcy5tZXJnZSBtIG0nLCBlJylcbiAgfCBFLlRNYXRjaCBtJyAgICAgICAtPiBFLlRNYXRjaCAoTWFya3MubWVyZ2UgbSBtJylcblxuYW5kIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsID1cbiAgTGlzdC5tYXAgKHByZXBlbmRfbWFya3NfZXhwciBtKSBsXG5cbmxldCBwcmVwZW5kX21hcmtzIG0gPVxuICBMaXN0Lm1hcCAoZnVuIChzLCB4KSAtPiAocywgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIHgpKVxuXG5sZXQgcmVjIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHggcmVtID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICB8IENzdCBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIHMgW0UudGV4cCBtYXJrcyBlcHNfZXhwcl0gcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB6KSByZW0gLT5cbiAgICAgICAgIGxldCAoeicsIG1hcmtzJykgPVxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIGZpcnN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIE5vbmUgICAgICAgIC0+ICh6LCBtYXJrcylcbiAgICAgICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeiwgbWFya3MnKVxuICAgICAgICAgaW5cbiAgICAgICAgIENzZXQucHJlcGVuZCBzXG4gICAgICAgICAgIChtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHonIHggW0UuVE1hdGNoIG1hcmtzJ11cbiAgICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeicgeCBbXSlcbiAgICAgICAgICAgcmVtKVxuICAgICAgeScgcmVtXG4gIHwgRXBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IFBtYXJrIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFyc1xuICAgICAgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKHJlbW92ZV9tYXJrcyBiIGUgKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IEJlZm9yZSBjYXQnIC0+XG4gICAgQ3NldC5wcmVwZW5kIChMaXN0LmFzc3EgY2F0JyBjYXRlZ29yaWVzKSBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEFmdGVyIGNhdCcgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgY2F0IGNhdCcgdGhlbiBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtIGVsc2UgcmVtXG5cbmFuZCBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCByIHJlbSlcblxuYW5kIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5IHogcmVtID1cbiAgaWZcbiAgICBMaXN0LmV4aXN0c1xuICAgICAgKGZ1biAoX3MsIHhsKSAtPlxuICAgICAgICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIHhsKVxuICAgICAgeVxuICB0aGVuXG4gICAgbGV0IHonID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBNYXJrcy5lbXB0eSBjYXQgeiBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeSkgcmVtIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICB5XG4gICAgICAgICB3aXRoXG4gICAgICAgICAgIE5vbmUgLT5cbiAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHkgeiBbXSkgcmVtXG4gICAgICAgICB8IFNvbWUgbWFya3MgLT5cbiAgICAgICAgICAgbGV0IHonJyA9IHByZXBlbmRfbWFya3MgbWFya3MgeicgaW5cbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgYExvbmdlc3QgLT5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSByZW0pXG4gICAgICAgICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgcmVtKVxuICAgICAgICAgICB8IGBGaXJzdCAtPlxuICAgICAgICAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JycgeiBbXSkgcmVtKSkpXG4gICAgICB5IHJlbVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB4bCkgcmVtIC0+IENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB4bCB6IFtdKSByZW0pIHkgcmVtXG5cbmxldCByZWMgZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbeF0gcmVtXG5cbmFuZCBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCByIHJlbSlcblxubGV0IGRlcml2IHRibF9yZWYgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QgPVxuICBsZXQgZGVyID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdC5TdGF0ZS5jYXRlZ29yeSBzdC5TdGF0ZS5kZXNjXG4gICAgICBbKGFsbF9jaGFycywgW10pXSBpblxuICBzaW1wbF90ciAoXG4gICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIGV4cHIpIHJlbSAtPlxuICAgICAgICBsZXQgKGV4cHInLCBfKSA9IHJlbW92ZV9kdXBsaWNhdGVzIFtdIGV4cHIgZXBzX2V4cHIgaW5cbigqXG5Gb3JtYXQuZXByaW50ZiBcIkBbPDM+QFslYUBdOiAlYSAvICVhQF1ALlwiIENzZXQucHJpbnQgcyBwcmludF9zdGF0ZSBleHByIHByaW50X3N0YXRlIGV4cHInO1xuKilcbiAgICAgICAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICAgICAgICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKGNhdCcsIHMnKSByZW0gLT5cbiAgICAgICAgICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICAgICAgICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgICAgICAgICB0aGVuIHJlbVxuICAgICAgICAgICAgZWxzZSAocycnLCBTdGF0ZS5tayBpZHggY2F0JyBleHByJycpIDo6IHJlbSlcbiAgICAgICAgICBjYXRlZ29yaWVzIHJlbSkgZGVyIFtdKVxuXG4oKioqKilcblxubGV0IGZsYXR0ZW5fbWF0Y2ggbSA9XG4gIGxldCBtYSA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbWEgKGksIF8pIC0+IG1heCBtYSBpKSAoLTEpIG0gaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG1hICsgMSkgKC0xKSBpblxuICBMaXN0Lml0ZXIgKGZ1biAoaSwgdikgLT4gcmVzLihpKSA8LSB2KSBtO1xuICByZXNcblxubGV0IHN0YXR1cyBzID1cbiAgbWF0Y2ggcy5TdGF0ZS5zdGF0dXMgd2l0aFxuICAgIFNvbWUgc3QgLT5cbiAgICBzdFxuICB8IE5vbmUgLT5cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggcy5TdGF0ZS5kZXNjIHdpdGhcbiAgICAgICAgW10gICAgICAgICAgICAgIC0+IEZhaWxlZFxuICAgICAgfCBFLlRNYXRjaCBtIDo6IF8gLT4gTWF0Y2ggKGZsYXR0ZW5fbWF0Y2ggbS5NYXJrcy5tYXJrcywgbS5NYXJrcy5wbWFya3MpXG4gICAgICB8IF8gICAgICAgICAgICAgICAtPiBSdW5uaW5nXG4gICAgaW5cbiAgICBzLlN0YXRlLnN0YXR1cyA8LSBTb21lIHN0O1xuICAgIHN0XG4iLCIoKiBJbiByZWFsaXR5LCB0aGlzIGNhbiByZWFsbHkgYmUgcmVwcmVzZW50ZWQgYXMgYSBib29sIGFycmF5LlxuXG4gICBUaGUgcmVwcmVzZW50YXRpb24gaXMgYmVzdCB0aG91Z2h0IG9mIGFzIGEgbGlzdCBvZiBhbGwgY2hhcnMgYWxvbmcgd2l0aCBhXG4gICBmbGFnOlxuXG4gICAoYSwgMCksIChiLCAxKSwgKGMsIDApLCAoZCwgMCksIC4uLlxuXG4gICBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBjb2xvciBhcmUgcmVwcmVzZW50ZWQgYnkgc2VxdW5jZXMgb2ZcbiAgIGNoYXJhY3RlcnMgd2l0aCB0aGUgZmxhZyBzZXQgdG8gMC5cbiopXG5cbnR5cGUgdCA9IEJ5dGVzLnRcblxubGV0IG1ha2UgKCkgPSBCeXRlcy5tYWtlIDI1NyAnXFwwMDAnXG5cbmxldCBmbGF0dGVuIGNtID1cbiAgbGV0IGMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCBjb2xvcl9yZXByID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgdiA9IHJlZiAwIGluXG4gIEJ5dGVzLnNldCBjIDAgJ1xcMDAwJztcbiAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgMCAnXFwwMDAnO1xuICBmb3IgaSA9IDEgdG8gMjU1IGRvXG4gICAgaWYgQnl0ZXMuZ2V0IGNtIGkgPD4gJ1xcMDAwJyB0aGVuIGluY3IgdjtcbiAgICBCeXRlcy5zZXQgYyBpIChDaGFyLmNociAhdik7XG4gICAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgIXYgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGMsIEJ5dGVzLnN1Yl9zdHJpbmcgY29sb3JfcmVwciAwICghdiArIDEpLCAhdiArIDEpXG5cbigqIG1hcmsgYWxsIHRoZSBlbmRwb2ludHMgb2YgdGhlIGludGVydmFscyBvZiB0aGUgY2hhciBzZXQgd2l0aCB0aGUgMSBieXRlICopXG5sZXQgc3BsaXQgcyBjbSA9XG4gIENzZXQuaXRlciBzIH5mOihmdW4gaSBqIC0+XG4gICAgICBCeXRlcy5zZXQgY20gaSAnXFwwMDEnO1xuICAgICAgQnl0ZXMuc2V0IGNtIChqICsgMSkgJ1xcMDAxJztcbiAgICApXG4iLCIoKiBSZXN1bHQgb2YgYSBzdWNjZXNzZnVsIG1hdGNoLiAqKVxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbWFya3MgOiBBdXRvbWF0YS5tYXJrX2luZm9zXG4gIDsgcG1hcmtzIDogUG1hcmsuU2V0LnRcbiAgOyBncG9zIDogaW50IGFycmF5XG4gIDsgZ2NvdW50IDogaW50XG4gIH1cblxubGV0IG9mZnNldCB0IGkgPVxuICBpZiAyICogaSArIDEgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICBpZiBtMSA9IC0xIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gIChwMSwgcDIpXG5cbmxldCBnZXQgdCBpID1cbiAgbGV0IChwMSwgcDIpID0gb2Zmc2V0IHQgaSBpblxuICBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcblxubGV0IHN0YXJ0IHN1YnMgaSA9IGZzdCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHN0b3Agc3VicyBpID0gc25kIChvZmZzZXQgc3VicyBpKVxuXG5sZXQgdGVzdCB0IGkgPVxuICBpZiAyICogaSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuXG4gICAgZmFsc2VcbiAgZWxzZVxuICAgIGxldCBpZHggPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZHggPD4gLTFcblxubGV0IGdldF9vcHQgdCBpID1cbiAgaWYgdGVzdCB0IGlcbiAgdGhlbiBTb21lIChnZXQgdCBpKVxuICBlbHNlIE5vbmVcblxubGV0IGR1bW15X29mZnNldCA9ICgtMSwgLTEpXG5cbmxldCBhbGxfb2Zmc2V0IHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9vZmZzZXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSAocDEsIHAyKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IGR1bW15X3N0cmluZyA9IFwiXCJcblxubGV0IGFsbCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfc3RyaW5nIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgcHAgZm10IHQgPVxuICBsZXQgbWF0Y2hlcyA9XG4gICAgbGV0IG9mZnNldHMgPSBhbGxfb2Zmc2V0IHQgaW5cbiAgICBsZXQgc3RycyA9IGFsbCB0IGluXG4gICAgQXJyYXkudG9fbGlzdCAoXG4gICAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggc3RycykgKGZ1biBpIC0+IHN0cnMuKGkpLCBvZmZzZXRzLihpKSlcbiAgICApIGluXG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgcHBfbWF0Y2ggZm10IChzdHIsIChzdGFydCwgc3RvcCkpID1cbiAgICBmcHJpbnRmIGZtdCBcIkBbKCVzICglZCAlZCkpQF1cIiBzdHIgc3RhcnQgc3RvcCBpblxuICBzZXhwIGZtdCBcIkdyb3VwXCIgKGxpc3QgcHBfbWF0Y2gpIG1hdGNoZXNcblxubGV0IG5iX2dyb3VwcyB0ID0gdC5nY291bnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbmxldCByZWMgaXRlciBuIGYgdiA9IGlmIG4gPSAwIHRoZW4gdiBlbHNlIGl0ZXIgKG4gLSAxKSBmIChmIHYpXG5cbigqKioqKVxuXG5sZXQgdW5rbm93biA9IC0yXG5sZXQgYnJlYWsgPSAtM1xuXG50eXBlIG1hdGNoX2luZm8gPVxuICB8IE1hdGNoIG9mIEdyb3VwLnRcbiAgfCBGYWlsZWRcbiAgfCBSdW5uaW5nIG9mIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA6IGludCB9XG5cbnR5cGUgc3RhdGUgPVxuICB7IGlkeCA6IGludDtcbiAgICAoKiBJbmRleCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgcG9zaXRpb24gdGFibGUuXG4gICAgICAgTm90IHlldCBjb21wdXRlZCB0cmFuc2l0aW9ucyBwb2ludCB0byBhIGR1bW15IHN0YXRlIHdoZXJlXG4gICAgICAgW2lkeF0gaXMgc2V0IHRvIFt1bmtub3duXTtcbiAgICAgICBJZiBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSBmb3Igc3RhdGVzIHRoYXQgZWl0aGVyIGFsd2F5c1xuICAgICAgIHN1Y2NlZWQgb3IgYWx3YXlzIGZhaWwuICopXG4gICAgcmVhbF9pZHggOiBpbnQ7XG4gICAgKCogVGhlIHJlYWwgaW5kZXgsIGluIGNhc2UgW2lkeF0gaXMgc2V0IHRvIFticmVha10gKilcbiAgICBuZXh0IDogc3RhdGUgYXJyYXk7XG4gICAgKCogVHJhbnNpdGlvbiB0YWJsZSwgaW5kZXhlZCBieSBjb2xvciAqKVxuICAgIG11dGFibGUgZmluYWwgOlxuICAgICAgKENhdGVnb3J5LnQgKlxuICAgICAgIChBdXRvbWF0YS5pZHggKiBBdXRvbWF0YS5zdGF0dXMpKSBsaXN0O1xuICAgICgqIE1hcHBpbmcgZnJvbSB0aGUgY2F0ZWdvcnkgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvXG4gICAgICAgLSB0aGUgaW5kZXggd2hlcmUgdGhlIG5leHQgcG9zaXRpb24gc2hvdWxkIGJlIHNhdmVkXG4gICAgICAgLSBwb3NzaWJseSwgdGhlIGxpc3Qgb2YgbWFya3MgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbmRpY2VzKVxuICAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgYmVzdCBtYXRjaCAqKVxuICAgIGRlc2MgOiBBdXRvbWF0YS5TdGF0ZS50XG4gICAgKCogRGVzY3JpcHRpb24gb2YgdGhpcyBzdGF0ZSBvZiB0aGUgYXV0b21hdGEgKikgfVxuXG4oKiBBdXRvbWF0YSAoY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uKSAqKVxudHlwZSByZSA9XG4gIHsgaW5pdGlhbCA6IEF1dG9tYXRhLmV4cHI7XG4gICAgKCogVGhlIHdob2xlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zdGF0ZXMgOiAoQ2F0ZWdvcnkudCAqIHN0YXRlKSBsaXN0O1xuICAgICgqIEluaXRpYWwgc3RhdGVzLCBpbmRleGVkIGJ5IGluaXRpYWwgY2F0ZWdvcnkgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKilcbiAgICBjb2xvcl9yZXByIDogc3RyaW5nO1xuICAgICgqIFRhYmxlIGZyb20gY29sb3JzIHRvIG9uZSBjaGFyYWN0ZXIgb2YgdGhpcyBjb2xvciAqKVxuICAgIG5jb2xvciA6IGludDtcbiAgICAoKiBOdW1iZXIgb2YgY29sb3JzLiAqKVxuICAgIGxubCA6IGludDtcbiAgICAoKiBDb2xvciBvZiB0aGUgbGFzdCBuZXdsaW5lLiAtMSBpZiB1bm5lY2Vzc2FyeSAqKVxuICAgIHRibCA6IEF1dG9tYXRhLndvcmtpbmdfYXJlYTtcbiAgICAoKiBUZW1wb3JhcnkgdGFibGUgdXNlZCB0byBjb21wdXRlIHRoZSBmaXJzdCBhdmFpbGFibGUgaW5kZXhcbiAgICAgICB3aGVuIGNvbXB1dGluZyBhIG5ldyBzdGF0ZSAqKVxuICAgIHN0YXRlcyA6IHN0YXRlIEF1dG9tYXRhLlN0YXRlLlRhYmxlLnQ7XG4gICAgKCogU3RhdGVzIG9mIHRoZSBkZXRlcm1pbmlzdGljIGF1dG9tYXRhICopXG4gICAgZ3JvdXBfbmFtZXMgOiAoc3RyaW5nICogaW50KSBsaXN0O1xuICAgICgqIE5hbWVkIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgZ3JvdXBfY291bnQgOiBpbnRcbiAgICAoKiBOdW1iZXIgb2YgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKikgfVxuXG5sZXQgcHBfcmUgY2ggcmUgPSBBdXRvbWF0YS5wcCBjaCByZS5pbml0aWFsXG5cbmxldCBwcmludF9yZSA9IHBwX3JlXG5cbmxldCBncm91cF9jb3VudCByZSA9IHJlLmdyb3VwX2NvdW50XG5cbmxldCBncm91cF9uYW1lcyByZSA9IHJlLmdyb3VwX25hbWVzXG5cbigqIEluZm9ybWF0aW9uIHVzZWQgZHVyaW5nIG1hdGNoaW5nICopXG50eXBlIGluZm8gPVxuICB7IHJlIDogcmU7XG4gICAgKCogVGhlIGF1dG9tYXRhICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlIChbeC5jb2xvcnMgPSB4LnJlLmNvbG9yc10pXG4gICAgICAgU2hvcnRjdXQgdXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIG11dGFibGUgcG9zaXRpb25zIDogaW50IGFycmF5O1xuICAgICgqIEFycmF5IG9mIG1hcmsgcG9zaXRpb25zXG4gICAgICAgVGhlIG1hcmsgYXJlIG9mZiBieSBvbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBwb3MgOiBpbnQ7XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIGlzIHN0YXJ0ZWQgKilcbiAgICBsYXN0IDogaW50XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIHNob3VsZCBzdG9wICopIH1cblxuXG4oKioqKilcblxubGV0IGNhdGVnb3J5IHJlIH5jb2xvciA9XG4gIGlmIGNvbG9yID0gLTEgdGhlblxuICAgIENhdGVnb3J5LmluZXhpc3RhbnRcbiAgICAoKiBTcGVjaWFsIGNhdGVnb3J5IGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gIGVsc2UgaWYgY29sb3IgPSByZS5sbmwgdGhlblxuICAgIENhdGVnb3J5LihsYXN0bmV3bGluZSArKyBuZXdsaW5lICsrIG5vdF9sZXR0ZXIpXG4gIGVsc2VcbiAgICBDYXRlZ29yeS5mcm9tX2NoYXIgKHJlLmNvbG9yX3JlcHIuW2NvbG9yXSlcblxuKCoqKiopXG5cbmxldCBkdW1teV9uZXh0ID0gW3x8XVxuXG5sZXQgdW5rbm93bl9zdGF0ZSA9XG4gIHsgaWR4ID0gdW5rbm93bjsgcmVhbF9pZHggPSAwO1xuICAgIG5leHQgPSBkdW1teV9uZXh0OyBmaW5hbCA9IFtdO1xuICAgIGRlc2MgPSBBdXRvbWF0YS5TdGF0ZS5kdW1teSB9XG5cbmxldCBta19zdGF0ZSBuY29sIGRlc2MgPVxuICBsZXQgYnJlYWtfc3RhdGUgPVxuICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBkZXNjIHdpdGhcbiAgICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT4gZmFsc2VcbiAgICB8IEF1dG9tYXRhLkZhaWxlZFxuICAgIHwgQXV0b21hdGEuTWF0Y2ggXyAtPiB0cnVlXG4gIGluXG4gIHsgaWR4ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBicmVhayBlbHNlIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIHJlYWxfaWR4ID0gZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgbmV4dCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gZHVtbXlfbmV4dCBlbHNlIEFycmF5Lm1ha2UgbmNvbCB1bmtub3duX3N0YXRlO1xuICAgIGZpbmFsID0gW107XG4gICAgZGVzYyB9XG5cbmxldCBmaW5kX3N0YXRlIHJlIGRlc2MgPVxuICB0cnlcbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5maW5kIHJlLnN0YXRlcyBkZXNjXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gbWtfc3RhdGUgcmUubmNvbG9yIGRlc2MgaW5cbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5hZGQgcmUuc3RhdGVzIGRlc2Mgc3Q7XG4gICAgc3RcblxuKCoqKiogTWF0Y2ggd2l0aCBtYXJrcyAqKioqKVxuXG5sZXQgZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0ID1cbiAgbGV0IGRlc2MgPSBBdXRvbWF0YS5kZWx0YSBpbmZvLnJlLnRibCBjYXQgY29sb3Igc3QuZGVzYyBpblxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGluZm8ucG9zaXRpb25zIGluXG4gIGlmIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4ID0gbGVuICYmIGxlbiA+IDAgdGhlbiBiZWdpblxuICAgIGxldCBwb3MgPSBpbmZvLnBvc2l0aW9ucyBpblxuICAgIGluZm8ucG9zaXRpb25zIDwtIEFycmF5Lm1ha2UgKDIgKiBsZW4pIDA7XG4gICAgQXJyYXkuYmxpdCBwb3MgMCBpbmZvLnBvc2l0aW9ucyAwIGxlblxuICBlbmQ7XG4gIGRlc2NcblxubGV0IHZhbGlkYXRlIGluZm8gKHM6c3RyaW5nKSB+cG9zIHN0ID1cbiAgbGV0IGNvbG9yID0gQ2hhci5jb2RlIChpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0IGluXG4gIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgc3QubmV4dC4oY29sb3IpIDwtIHN0J1xuXG5sZXQgcmVjIGxvb3AgaW5mbyBzIH5wb3Mgc3QgPVxuICBpZiBwb3MgPCBpbmZvLmxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBsZXQgaWR4ID0gc3QnLmlkeCBpblxuICAgIGlmIGlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihpZHgpIDwtIHBvcztcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3M6KHBvcyArIDEpIHN0J1xuICAgIGVuZCBlbHNlIGlmIGlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICAgIHN0J1xuICAgIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcCBpbmZvIHMgfnBvcyBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IHJlYyBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3QgPVxuICBpZiBwb3MgPCBsYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgaWYgc3QnLmlkeCA+PSAwIHRoZW5cbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvczoocG9zICsgMSkgfmxhc3Qgc3QnXG4gICAgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3QnXG4gICAgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IGZpbmFsIGluZm8gc3QgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCBzdC5maW5hbFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCcgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6KC0xKSBzdCBpblxuICAgIGxldCByZXMgPSAoc3QnLkF1dG9tYXRhLlN0YXRlLmlkeCwgQXV0b21hdGEuc3RhdHVzIHN0JykgaW5cbiAgICBzdC5maW5hbCA8LSAoY2F0LCByZXMpIDo6IHN0LmZpbmFsO1xuICAgIHJlc1xuXG5sZXQgZmluZF9pbml0aWFsX3N0YXRlIHJlIGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgcmUuaW5pdGlhbF9zdGF0ZXNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBmaW5kX3N0YXRlIHJlIChBdXRvbWF0YS5TdGF0ZS5jcmVhdGUgY2F0IHJlLmluaXRpYWwpIGluXG4gICAgcmUuaW5pdGlhbF9zdGF0ZXMgPC0gKGNhdCwgc3QpIDo6IHJlLmluaXRpYWxfc3RhdGVzO1xuICAgIHN0XG5cbmxldCBnZXRfY29sb3IgcmUgKHM6c3RyaW5nKSBwb3MgPVxuICBpZiBwb3MgPCAwIHRoZW5cbiAgICAtMVxuICBlbHNlXG4gICAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBpZiBwb3MgPj0gc2xlbiB0aGVuXG4gICAgICAtMVxuICAgIGVsc2UgaWYgcG9zID0gc2xlbiAtIDEgJiYgcmUubG5sIDw+IC0xICYmIHMuW3Bvc10gPSAnXFxuJyB0aGVuXG4gICAgICAoKiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgICAgIHJlLmxubFxuICAgIGVsc2VcbiAgICAgIENoYXIuY29kZSByZS5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXVxuXG5sZXQgcmVjIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHMgPVxuICBsZXQgc3QnID0gc3QubmV4dC4oaW5mby5yZS5sbmwpIGluXG4gIGlmIHN0Jy5pZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICBsZXQgY29sb3IgPSBpbmZvLnJlLmxubCBpblxuICAgIGxldCByZWFsX2MgPSBDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSAnXFxuJ10gaW5cbiAgICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6cmVhbF9jIHN0IGluXG4gICAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICAgIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCc7XG4gICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3Vwc1xuICBlbmRcblxubGV0IHJlYyBzY2FuX3N0ciBpbmZvIChzOnN0cmluZykgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzID1cbiAgbGV0IHBvcyA9IGluZm8ucG9zIGluXG4gIGxldCBsYXN0ID0gaW5mby5sYXN0IGluXG4gIGlmIChsYXN0ID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAmJiBpbmZvLnJlLmxubCA8PiAtMVxuICAgICAgJiYgbGFzdCA+IHBvc1xuICAgICAgJiYgU3RyaW5nLmdldCBzIChsYXN0IC0gMSkgPSAnXFxuJylcbiAgdGhlbiBiZWdpblxuICAgIGxldCBpbmZvID0geyBpbmZvIHdpdGggbGFzdCA9IGxhc3QgLSAxIH0gaW5cbiAgICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3RcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvczoobGFzdCAtIDEpIHN0IH5ncm91cHNcbiAgZW5kIGVsc2UgaWYgZ3JvdXBzIHRoZW5cbiAgICBsb29wIGluZm8gcyB+cG9zIGluaXRpYWxfc3RhdGVcbiAgZWxzZVxuICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBpbml0aWFsX3N0YXRlXG5cbigqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGZpbmFsIGJvdW5kYXJ5IGNoZWNrIG9uIHRoZSBpbnB1dC5cbiAgIFRoaXMgaXMgdXNlZnVsIHRvIGluZGljYXRlIHRoYXQgdGhlIG91dHB1dCBmYWlsZWQgYmVjYXVzZVxuICAgb2YgaW5zdWZmaWNpZW50IGlucHV0LCBvciB0byB2ZXJpZnkgdGhhdCB0aGUgb3V0cHV0IGFjdHVhbGx5XG4gICBtYXRjaGVzIGZvciByZWdleCB0aGF0IGhhdmUgYm91bmRhcnkgY29uZGl0aW9ucyB3aXRoIHJlc3BlY3RcbiAgIHRvIHRoZSBpbnB1dCBzdHJpbmcuXG4gKilcbmxldCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzID1cbiAgbGV0IGZpbmFsX2NhdCA9XG4gICAgaWYgbGFzdCA9IHNsZW4gdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyBsYXN0KSlcbiAgaW5cbiAgbGV0IChpZHgsIHJlcykgPSBmaW5hbCBpbmZvIHN0IGZpbmFsX2NhdCBpblxuICAobWF0Y2ggZ3JvdXBzLCByZXMgd2l0aFxuICB8IHRydWUsIE1hdGNoIF8gLT4gaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gbGFzdFxuICB8IF8gLT4gKCkpO1xuICByZXNcblxubGV0IG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxhc3QgPSBpZiBsZW4gPSAtMSB0aGVuIHNsZW4gZWxzZSBwb3MgKyBsZW4gaW5cbiAgbGV0IGluZm8gPVxuICAgIHsgcmUgOyBjb2xvcnMgPSByZS5jb2xvcnM7IHBvcyA7IGxhc3RcbiAgICA7IHBvc2l0aW9ucyA9XG4gICAgICAgIGlmIGdyb3VwcyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBBdXRvbWF0YS5pbmRleF9jb3VudCByZS50YmwgKyAxIGluXG4gICAgICAgICAgaWYgbiA8PSAxMCB0aGVuXG4gICAgICAgICAgICBbfDA7MDswOzA7MDswOzA7MDswOzB8XVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEFycmF5Lm1ha2UgbiAwXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgW3x8XSB9XG4gIGluXG4gIGxldCBpbml0aWFsX2NhdCA9XG4gICAgaWYgcG9zID0gMCB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeVxuICAgICAgICAgICAgICAgICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgKHBvcyAtIDEpKSlcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RhdGUgPSBmaW5kX2luaXRpYWxfc3RhdGUgcmUgaW5pdGlhbF9jYXQgaW5cbiAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICBsZXQgcmVzID1cbiAgICBpZiBzdC5pZHggPSBicmVhayB8fCAocGFydGlhbCAmJiBub3QgZ3JvdXBzKSB0aGVuXG4gICAgICBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzY1xuICAgIGVsc2UgaWYgcGFydGlhbCAmJiBncm91cHMgdGhlblxuICAgICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIHN0LmRlc2Mgd2l0aFxuICAgICAgfCBNYXRjaCBfIHwgRmFpbGVkIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgIHwgUnVubmluZyAtPlxuICAgICAgICAoKiBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgaXQncyBzdGlsbCBub3QgZnVsbHkgbWF0Y2hlZCwgb3IgaXRcbiAgICAgICAgICAgY291bGQgYmUgdGhhdCBiZWNhdXNlIHdlIG5lZWQgdG8gcnVuIHNwZWNpYWwgZW5kIG9mIGlucHV0XG4gICAgICAgICAgIGNoZWNrcy4gKilcbiAgICAgICAgKG1hdGNoIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgd2l0aFxuICAgICAgICAgfCBNYXRjaCBfIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgICAgIHwgRmFpbGVkIHwgUnVubmluZyAtPlxuICAgICAgICAgICAoKiBBIGZhaWx1cmUgaGVyZSBqdXN0IG1lYW5zIHRoYXQgd2UgbmVlZCBtb3JlIGRhdGEsIGkuZS5cbiAgICAgICAgICAgICAgaXQncyBhIHBhcnRpYWwgbWF0Y2guICopXG4gICAgICAgICAgIFJ1bm5pbmcpXG4gICAgZWxzZSBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gICAgQXV0b21hdGEuTWF0Y2ggKG1hcmtzLCBwbWFya3MpIC0+XG4gICAgTWF0Y2ggeyBzIDsgbWFya3M7IHBtYXJrcyA7IGdwb3MgPSBpbmZvLnBvc2l0aW9uczsgZ2NvdW50ID0gcmUuZ3JvdXBfY291bnR9XG4gIHwgQXV0b21hdGEuRmFpbGVkIC0+IEZhaWxlZFxuICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT5cbiAgICBsZXQgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA9IGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLigwKSBlbHNlIDAgaW5cbiAgICBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9XG5cbmxldCBta19yZSB+aW5pdGlhbCB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXMgfmdyb3VwX2NvdW50ID1cbiAgeyBpbml0aWFsIDtcbiAgICBpbml0aWFsX3N0YXRlcyA9IFtdO1xuICAgIGNvbG9ycztcbiAgICBjb2xvcl9yZXByO1xuICAgIG5jb2xvcjtcbiAgICBsbmw7XG4gICAgdGJsID0gQXV0b21hdGEuY3JlYXRlX3dvcmtpbmdfYXJlYSAoKTtcbiAgICBzdGF0ZXMgPSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5jcmVhdGUgOTc7XG4gICAgZ3JvdXBfbmFtZXM7XG4gICAgZ3JvdXBfY291bnQgfVxuXG4oKioqKiBDaGFyYWN0ZXIgc2V0cyAqKioqKVxuXG5sZXQgY3NlcSBjIGMnID0gQ3NldC5zZXEgKENoYXIuY29kZSBjKSAoQ2hhci5jb2RlIGMnKVxubGV0IGNhZGQgYyBzID0gQ3NldC5hZGQgKENoYXIuY29kZSBjKSBzXG5cbmxldCB0cmFuc19zZXQgY2FjaGUgY20gcyA9XG4gIG1hdGNoIENzZXQub25lX2NoYXIgcyB3aXRoXG4gIHwgU29tZSBpIC0+IENzZXQuY3NpbmdsZSBjbS5baV1cbiAgfCBOb25lIC0+XG4gICAgbGV0IHYgPSAoQ3NldC5oYXNoX3JlYyBzLCBzKSBpblxuICAgIHRyeVxuICAgICAgQ3NldC5DU2V0TWFwLmZpbmQgdiAhY2FjaGVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IGwgPVxuICAgICAgICBDc2V0LmZvbGRfcmlnaHRcbiAgICAgICAgICBzXG4gICAgICAgICAgfmY6KGZ1biAoaSwgaikgbCAtPiBDc2V0LnVuaW9uIChjc2VxIGNtLltpXSBjbS5bal0pIGwpXG4gICAgICAgICAgfmluaXQ6Q3NldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIGNhY2hlIDo9IENzZXQuQ1NldE1hcC5hZGQgdiBsICFjYWNoZTtcbiAgICAgIGxcblxuKCoqKiopXG5cbnR5cGUgcmVnZXhwID1cbiAgICBTZXQgb2YgQ3NldC50XG4gIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbm1vZHVsZSBWaWV3ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlZ2V4cCA9XG4gICAgICBTZXQgb2YgQ3NldC50XG4gICAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICAgIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICAgIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICAgIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICAgIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gICAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gICAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gICAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbiAgbGV0IHZpZXcgdCA9IHRcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCB0ID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCB2YXIgcyByZSA9IHNleHAgZm10IHMgcHAgcmUgaW5cbiAgbGV0IHNlcSBzIHJlbCA9IHNleHAgZm10IHMgKGxpc3QgcHApIHJlbCBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXQgcyAtPiAgc2V4cCBmbXQgXCJTZXRcIiBDc2V0LnBwIHNcbiAgfCBTZXF1ZW5jZSBzcSAtPiBzZXEgXCJTZXF1ZW5jZVwiIHNxXG4gIHwgQWx0ZXJuYXRpdmUgYWx0IC0+IHNlcSBcIkFsdGVybmF0aXZlXCIgYWx0XG4gIHwgUmVwZWF0IChyZSwgc3RhcnQsIHN0b3ApIC0+XG4gICAgbGV0IHBwJyBmbXQgKCkgPSBmcHJpbnRmIGZtdCBcIiVhQCAlZCVhXCIgcHAgcmUgICBzdGFydCAgIG9wdGludCBzdG9wIGluXG4gICAgc2V4cCBmbXQgXCJSZXBlYXRcIiBwcCcgKClcbiAgfCBCZWdfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2ZfbGluZVwiXG4gIHwgRW5kX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX2xpbmVcIlxuICB8IEJlZ19vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl93b3JkXCJcbiAgfCBFbmRfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfd29yZFwiXG4gIHwgTm90X2JvdW5kICAgICAgICAtPiBzdHIgZm10IFwiTm90X2JvdW5kXCJcbiAgfCBCZWdfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfc3RyXCJcbiAgfCBFbmRfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfc3RyXCJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+IHN0ciBmbXQgXCJMYXN0X2VuZF9vZl9saW5lXCJcbiAgfCBTdGFydCAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdGFydFwiXG4gIHwgU3RvcCAgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RvcFwiXG4gIHwgU2VtIChzZW0sIHJlKSAgICAtPlxuICAgIHNleHAgZm10IFwiU2VtXCIgKHBhaXIgQXV0b21hdGEucHBfc2VtIHBwKSAoc2VtLCByZSlcbiAgfCBTZW1fZ3JlZWR5IChrLCByZSkgLT5cbiAgICBzZXhwIGZtdCBcIlNlbV9ncmVlZHlcIiAocGFpciBBdXRvbWF0YS5wcF9yZXBfa2luZCBwcCkgKGssIHJlKVxuICB8IEdyb3VwIChOb25lLCBjKSAgIC0+IHZhciBcIkdyb3VwXCIgY1xuICB8IEdyb3VwIChTb21lIG4sIGMpIC0+IHNleHAgZm10IFwiTmFtZWRfZ3JvdXBcIiAocGFpciBzdHIgcHApIChuLCBjKVxuICB8IE5vX2dyb3VwIGMgICAgIC0+IHZhciBcIk5vX2dyb3VwXCIgY1xuICB8IE5lc3QgYyAgICAgICAgIC0+IHZhciBcIk5lc3RcIiBjXG4gIHwgQ2FzZSBjICAgICAgICAgLT4gdmFyIFwiQ2FzZVwiIGNcbiAgfCBOb19jYXNlIGMgICAgICAtPiB2YXIgXCJOb19jYXNlXCIgY1xuICB8IEludGVyc2VjdGlvbiBjIC0+IHNlcSBcIkludGVyc2VjdGlvblwiIGNcbiAgfCBDb21wbGVtZW50IGMgICAtPiBzZXEgXCJDb21wbGVtZW50XCIgY1xuICB8IERpZmZlcmVuY2UgKGEsIGIpIC0+IHNleHAgZm10IFwiRGlmZmVyZW5jZVwiIChwYWlyIHBwIHBwKSAoYSwgYilcbiAgfCBQbWFyayAobSwgcikgICAgICAtPiBzZXhwIGZtdCBcIlBtYXJrXCIgKHBhaXIgUG1hcmsucHAgcHApIChtLCByKVxuXG5sZXQgcmVjIGlzX2NoYXJzZXQgPSBmdW5jdGlvblxuICB8IFNldCBfIC0+XG4gICAgdHJ1ZVxuICB8IEFsdGVybmF0aXZlIGwgfCBJbnRlcnNlY3Rpb24gbCB8IENvbXBsZW1lbnQgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBpc19jaGFyc2V0IGxcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBpc19jaGFyc2V0IHIgJiYgaXNfY2hhcnNldCByJ1xuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKVxuICB8IE5vX2dyb3VwIHIgfCBDYXNlIHIgfCBOb19jYXNlIHIgLT5cbiAgICBpc19jaGFyc2V0IHJcbiAgfCBTZXF1ZW5jZSBfIHwgUmVwZWF0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTm90X2JvdW5kIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IEdyb3VwIF8gfCBOZXN0IF8gfCBQbWFyayAoXyxfKS0+XG4gICAgZmFsc2VcblxuKCpYWFggVXNlIGEgYmV0dGVyIGFsZ29yaXRobSBhbGxvd2luZyBub24tY29udGlndW91cyByZWdpb25zPyAqKVxuXG5sZXQgY3VwcGVyID1cbiAgQ3NldC51bmlvbiAoY3NlcSAnQScgJ1onKVxuICAgIChDc2V0LnVuaW9uIChjc2VxICdcXDE5MicgJ1xcMjE0JykgKGNzZXEgJ1xcMjE2JyAnXFwyMjInKSlcbmxldCBjbG93ZXIgPSBDc2V0Lm9mZnNldCAzMiBjdXBwZXJcbmxldCBjYWxwaGEgPVxuICBMaXN0LmZvbGRfcmlnaHQgY2FkZCBbJ1xcMTcwJzsgJ1xcMTgxJzsgJ1xcMTg2JzsgJ1xcMjIzJzsgJ1xcMjU1J11cbiAgICAoQ3NldC51bmlvbiBjbG93ZXIgY3VwcGVyKVxubGV0IGNkaWdpdCA9IGNzZXEgJzAnICc5J1xubGV0IGNhbG51bSA9IENzZXQudW5pb24gY2FscGhhIGNkaWdpdFxubGV0IGN3b3JkID0gY2FkZCAnXycgY2FsbnVtXG5cbmxldCBjb2xvcml6ZSBjIHJlZ2V4cCA9XG4gIGxldCBsbmwgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBjb2xvcml6ZSByZWdleHAgPVxuICAgIG1hdGNoIHJlZ2V4cCB3aXRoXG4gICAgICBTZXQgcyAgICAgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBzIGNcbiAgICB8IFNlcXVlbmNlIGwgICAgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IEFsdGVybmF0aXZlIGwgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IFJlcGVhdCAociwgXywgXykgICAgICAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSAtPiBDb2xvcl9tYXAuc3BsaXQgKENzZXQuY3NpbmdsZSAnXFxuJykgY1xuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgY3dvcmQgY1xuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IFN0YXJ0IHwgU3RvcCAgICAgICAgICAgICAgLT4gKClcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgICAgICAgICAgLT4gbG5sIDo9IHRydWVcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gICAgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHIgfCBQbWFyayAoXyxyKSAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQ2FzZSBfIHwgTm9fY2FzZSBfXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIF8gICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBjb2xvcml6ZSByZWdleHA7XG4gICFsbmxcblxuKCoqKiogQ29tcGlsYXRpb24gKioqKilcblxubGV0IHJlYyBlcXVhbCB4MSB4MiA9XG4gIG1hdGNoIHgxLCB4MiB3aXRoXG4gICAgU2V0IHMxLCBTZXQgczIgLT5cbiAgICBzMSA9IHMyXG4gIHwgU2VxdWVuY2UgbDEsIFNlcXVlbmNlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IEFsdGVybmF0aXZlIGwxLCBBbHRlcm5hdGl2ZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBSZXBlYXQgKHgxJywgaTEsIGoxKSwgUmVwZWF0ICh4MicsIGkyLCBqMikgLT5cbiAgICBpMSA9IGkyICYmIGoxID0gajIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEJlZ19vZl9saW5lLCBCZWdfb2ZfbGluZVxuICB8IEVuZF9vZl9saW5lLCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkLCBCZWdfb2Zfd29yZFxuICB8IEVuZF9vZl93b3JkLCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciwgQmVnX29mX3N0clxuICB8IEVuZF9vZl9zdHIsIEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lLCBMYXN0X2VuZF9vZl9saW5lXG4gIHwgU3RhcnQsIFN0YXJ0XG4gIHwgU3RvcCwgU3RvcCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKHNlbTEsIHgxJyksIFNlbSAoc2VtMiwgeDInKSAtPlxuICAgIHNlbTEgPSBzZW0yICYmIGVxdWFsIHgxJyB4MidcbiAgfCBTZW1fZ3JlZWR5IChrMSwgeDEnKSwgU2VtX2dyZWVkeSAoazIsIHgyJykgLT5cbiAgICBrMSA9IGsyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBHcm91cCBfLCBHcm91cCBfIC0+ICgqIERvIG5vdCBtZXJnZSBncm91cHMhICopXG4gICAgZmFsc2VcbiAgfCBOb19ncm91cCB4MScsIE5vX2dyb3VwIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOZXN0IHgxJywgTmVzdCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgQ2FzZSB4MScsIENhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5vX2Nhc2UgeDEnLCBOb19jYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBJbnRlcnNlY3Rpb24gbDEsIEludGVyc2VjdGlvbiBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBDb21wbGVtZW50IGwxLCBDb21wbGVtZW50IGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IERpZmZlcmVuY2UgKHgxJywgeDEnJyksIERpZmZlcmVuY2UgKHgyJywgeDInJykgLT5cbiAgICBlcXVhbCB4MScgeDInICYmIGVxdWFsIHgxJycgeDInJ1xuICB8IFBtYXJrIChtMSwgcjEpLCBQbWFyayAobTIsIHIyKSAtPlxuICAgIFBtYXJrLmVxdWFsIG0xIG0yICYmIGVxdWFsIHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmFuZCBlcV9saXN0IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICBbXSwgW10gLT5cbiAgICB0cnVlXG4gIHwgeDEgOjogcjEsIHgyIDo6IHIyIC0+XG4gICAgZXF1YWwgeDEgeDIgJiYgZXFfbGlzdCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgc2VxdWVuY2UgPSBmdW5jdGlvblxuICB8IFt4XSAtPiB4XG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IHJlYyBtZXJnZV9zZXF1ZW5jZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBBbHRlcm5hdGl2ZSBsJyA6OiByIC0+XG4gICAgbWVyZ2Vfc2VxdWVuY2VzIChsJyBAIHIpXG4gIHwgU2VxdWVuY2UgKHggOjogeSkgOjogciAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyByIHdpdGhcbiAgICAgICAgU2VxdWVuY2UgKHgnIDo6IHknKSA6OiByJyB3aGVuIGVxdWFsIHggeCcgLT5cbiAgICAgICAgU2VxdWVuY2UgW3g7IEFsdGVybmF0aXZlIFtzZXF1ZW5jZSB5OyBzZXF1ZW5jZSB5J11dIDo6IHInXG4gICAgICB8IHInIC0+XG4gICAgICAgIFNlcXVlbmNlICh4IDo6IHkpIDo6IHInXG4gICAgZW5kXG4gIHwgeCA6OiByIC0+XG4gICAgeCA6OiBtZXJnZV9zZXF1ZW5jZXMgclxuXG5tb2R1bGUgQSA9IEF1dG9tYXRhXG5cbmxldCBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IgPVxuICBtYXRjaCBraW5kLCBraW5kJyB3aXRoXG4gICAgYEZpcnN0LCBgRmlyc3QgLT4gY3JcbiAgfCBgRmlyc3QsIGsgICAgICAgLT4gQS5zZXEgaWRzIGsgY3IgKEEuZXBzIGlkcylcbiAgfCAgXyAgICAgICAgICAgICAgIC0+IGNyXG5cbigqIFhYWCBzaG91bGQgcHJvYmFibHkgY29tcHV0ZSBhIGNhdGVnb3J5IG1hc2sgKilcbmxldCByZWMgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgKEEuY3N0IGlkcyAodHJhbnNfc2V0IGNhY2hlIGMgcyksIGtpbmQpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgICh0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyBsLCBraW5kKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgbCB3aXRoXG4gICAgICAgIFtyJ10gLT5cbiAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyLCBraW5kKVxuICAgICAgfCBtZXJnZWRfc2VxdWVuY2VzIC0+XG4gICAgICAgIChBLmFsdCBpZHNcbiAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgIChmdW4gcicgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeVxuICAgICAgICAgICAgICAgICAgICAgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgICAgICAgICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyKVxuICAgICAgICAgICAgICBtZXJnZWRfc2VxdWVuY2VzKSxcbiAgICAgICAgIGtpbmQpXG4gICAgZW5kXG4gIHwgUmVwZWF0IChyJywgaSwgaikgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICBsZXQgcmVtID1cbiAgICAgIG1hdGNoIGogd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgIEEucmVwIGlkcyBncmVlZHkga2luZCcgY3JcbiAgICAgIHwgU29tZSBqIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBncmVlZHkgd2l0aFxuICAgICAgICAgICAgYEdyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbTsgQS5lcHMgaWRzXVxuICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0EuZXBzIGlkczsgQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoaiAtIGkpIGYgKEEuZXBzIGlkcylcbiAgICBpblxuICAgIChpdGVyIGkgKGZ1biByZW0gLT4gQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbSkgcmVtLCBraW5kKVxuICB8IEJlZ19vZl9saW5lIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEVuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBCZWdfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKSxcbiAgICAga2luZClcbiAgfCBFbmRfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKSxcbiAgICAga2luZClcbiAgfCBOb3RfYm91bmQgLT5cbiAgICAoQS5hbHQgaWRzIFtBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpO1xuICAgICAgICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXSxcbiAgICAga2luZClcbiAgfCBCZWdfb2Zfc3RyIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgRW5kX29mX3N0ciAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBsYXN0bmV3bGluZSksIGtpbmQpXG4gIHwgU3RhcnQgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFN0b3AgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTZW0gKGtpbmQnLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJycpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCcgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQnIGtpbmQnJyBjcixcbiAgICAga2luZCcpXG4gIHwgU2VtX2dyZWVkeSAoZ3JlZWR5JywgcicpIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHknIHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgR3JvdXAgKG4sIHInKSAtPlxuICAgIGlmIGlnbl9ncm91cCB0aGVuXG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGVsc2VcbiAgICAgIGxldCBwID0gIXBvcyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWVzIDo9IChuYW1lLCBwIC8gMikgOjogIW5hbWVzXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgaW5cbiAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5tYXJrIGlkcyBwKSAoXG4gICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdCBjciAoQS5tYXJrIGlkcyAocCArIDEpKSksXG4gICAgICAga2luZCcpXG4gIHwgTm9fZ3JvdXAgcicgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgdHJ1ZSBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBOZXN0IHInIC0+XG4gICAgbGV0IGIgPSAhcG9zIGluXG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgaW5cbiAgICBsZXQgZSA9ICFwb3MgLSAxIGluXG4gICAgaWYgZSA8IGIgdGhlblxuICAgICAgKGNyLCBraW5kJylcbiAgICBlbHNlXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5lcmFzZSBpZHMgYiBlKSBjciwga2luZCcpXG4gIHwgRGlmZmVyZW5jZSBfIHwgQ29tcGxlbWVudCBfIHwgSW50ZXJzZWN0aW9uIF8gfCBOb19jYXNlIF8gfCBDYXNlIF8gLT5cbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBQbWFyayAoaSwgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEucG1hcmsgaWRzIGkpIGNyLCBraW5kJylcblxuYW5kIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEEuZXBzIGlkc1xuICB8IFtyXSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcidcbiAgfCByIDo6IHJlbSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGxldCBjcicnID1cbiAgICAgIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHJlbSBpblxuICAgIGlmIEEuaXNfZXBzIGNyJycgdGhlblxuICAgICAgY3InXG4gICAgZWxzZSBpZiBBLmlzX2VwcyBjcicgdGhlblxuICAgICAgY3InJ1xuICAgIGVsc2VcbiAgICAgIEEuc2VxIGlkcyBraW5kJyBjcicgY3InJ1xuXG4oKioqKiBDYXNlICoqKiopXG5cbmxldCBjYXNlX2luc2VucyBzID1cbiAgQ3NldC51bmlvbiBzIChDc2V0LnVuaW9uIChDc2V0Lm9mZnNldCAzMiAoQ3NldC5pbnRlciBzIGN1cHBlcikpXG4gICAgICAgICAgICAgICAgICAoQ3NldC5vZmZzZXQgKC0zMikgKENzZXQuaW50ZXIgcyBjbG93ZXIpKSlcblxubGV0IGFzX3NldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT4gc1xuICB8IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBYWFggU2hvdWxkIHNwbGl0IGFsdGVybmF0aXZlcyBpbnRvICgxKSBjaGFyc2V0cyBhbmQgKDIpIG1vcmVcbiAgIGNvbXBsZXggcmVndWxhciBleHByZXNzaW9uczsgYWx0ZXJuYXRpdmUgc2hvdWxkIHRoZXJlZm9yZSBwcm9iYWJseVxuICAgYmUgZmxhdHRlbiBoZXJlICopXG5sZXQgcmVjIGhhbmRsZV9jYXNlIGlnbl9jYXNlID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIFNldCAoaWYgaWduX2Nhc2UgdGhlbiBjYXNlX2luc2VucyBzIGVsc2UgcylcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgU2VxdWVuY2UgKExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsIGluXG4gICAgaWYgaXNfY2hhcnNldCAoQWx0ZXJuYXRpdmUgbCcpIHRoZW5cbiAgICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpIENzZXQuZW1wdHkgbCcpXG4gICAgZWxzZVxuICAgICAgQWx0ZXJuYXRpdmUgbCdcbiAgfCBSZXBlYXQgKHIsIGksIGopIC0+XG4gICAgUmVwZWF0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByLCBpLCBqKVxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wIGFzIHIgLT5cbiAgICByXG4gIHwgU2VtIChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW0gKGssIHInKVxuICB8IFNlbV9ncmVlZHkgKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbV9ncmVlZHkgKGssIHInKVxuICB8IEdyb3VwIChuLCByKSAtPlxuICAgIEdyb3VwIChuLCBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuICB8IE5vX2dyb3VwIHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTm9fZ3JvdXAgcidcbiAgfCBOZXN0IHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTmVzdCByJ1xuICB8IENhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIGZhbHNlIHJcbiAgfCBOb19jYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSB0cnVlIHJcbiAgfCBJbnRlcnNlY3Rpb24gbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LmludGVyIHMgKGFzX3NldCByKSkgQ3NldC5jYW55IGwnKVxuICB8IENvbXBsZW1lbnQgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55XG4gICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSlcbiAgICAgICAgICAgICAgQ3NldC5lbXB0eSBsJykpXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgU2V0IChDc2V0LmludGVyIChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpKVxuICAgICAgICAgICAoQ3NldC5kaWZmIENzZXQuY2FueSAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByJykpKSlcbiAgfCBQbWFyayAoaSxyKSAtPiBQbWFyayAoaSxoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuXG4oKioqKilcblxubGV0IGNvbXBpbGVfMSByZWdleHAgPVxuICBsZXQgcmVnZXhwID0gaGFuZGxlX2Nhc2UgZmFsc2UgcmVnZXhwIGluXG4gIGxldCBjID0gQ29sb3JfbWFwLm1ha2UgKCkgaW5cbiAgbGV0IG5lZWRfbG5sID0gY29sb3JpemUgYyByZWdleHAgaW5cbiAgbGV0IChjb2xvcnMsIGNvbG9yX3JlcHIsIG5jb2xvcikgPSBDb2xvcl9tYXAuZmxhdHRlbiBjIGluXG4gIGxldCBsbmwgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciBlbHNlIC0xIGluXG4gIGxldCBuY29sb3IgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciArIDEgZWxzZSBuY29sb3IgaW5cbiAgbGV0IGlkcyA9IEEuY3JlYXRlX2lkcyAoKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IG5hbWVzID0gcmVmIFtdIGluXG4gIGxldCAociwga2luZCkgPVxuICAgIHRyYW5zbGF0ZSBpZHNcbiAgICAgIGBGaXJzdCBmYWxzZSBmYWxzZSBgR3JlZWR5IHBvcyBuYW1lcyAocmVmIENzZXQuQ1NldE1hcC5lbXB0eSkgY29sb3JzIHJlZ2V4cCBpblxuICBsZXQgciA9IGVuZm9yY2Vfa2luZCBpZHMgYEZpcnN0IGtpbmQgciBpblxuICAoKkZvcm1hdC5lcHJpbnRmIFwiPCVkICVkPkAuXCIgIWlkcyBuY29sOyopXG4gIG1rX3JlIH5pbml0aWFsOnIgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzOihMaXN0LnJldiAhbmFtZXMpIH5ncm91cF9jb3VudDooIXBvcyAvIDIpXG5cbigqKioqKVxuXG5sZXQgcmVjIGFuY2hvcmVkID0gZnVuY3Rpb25cbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgTGlzdC5leGlzdHMgYW5jaG9yZWQgbFxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgYW5jaG9yZWQgbFxuICB8IFJlcGVhdCAociwgaSwgXykgLT5cbiAgICBpID4gMCAmJiBhbmNob3JlZCByXG4gIHwgU2V0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RvcFxuICB8IEludGVyc2VjdGlvbiBfIHwgQ29tcGxlbWVudCBfIHwgRGlmZmVyZW5jZSBfIC0+XG4gICAgZmFsc2VcbiAgfCBCZWdfb2Zfc3RyIHwgU3RhcnQgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgciB8IE5lc3QgclxuICB8IENhc2UgciB8IE5vX2Nhc2UgciB8IFBtYXJrIChfLCByKSAtPlxuICAgIGFuY2hvcmVkIHJcblxuKCoqKiopXG5cbnR5cGUgdCA9IHJlZ2V4cFxuXG5sZXQgc3RyIHMgPVxuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IFNldCAoQ3NldC5jc2luZ2xlIHMuW2ldKSA6OiAhbFxuICBkb25lO1xuICBTZXF1ZW5jZSAhbFxubGV0IGNoYXIgYyA9IFNldCAoQ3NldC5jc2luZ2xlIGMpXG5cbmxldCBhbHQgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IEFsdGVybmF0aXZlIGxcbmxldCBzZXEgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IGVtcHR5ID0gYWx0IFtdXG5sZXQgZXBzaWxvbiA9IHNlcSBbXVxubGV0IHJlcG4gciBpIGogPVxuICBpZiBpIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwblwiO1xuICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICB8IFNvbWUgaiB3aGVuIGogPCBpIC0+IGludmFsaWRfYXJnIFwiUmUucmVwblwiXG4gICAgfCBfIC0+ICgpXG4gIGVuZDtcbiAgUmVwZWF0IChyLCBpLCBqKVxubGV0IHJlcCByID0gcmVwbiByIDAgTm9uZVxubGV0IHJlcDEgciA9IHJlcG4gciAxIE5vbmVcbmxldCBvcHQgciA9IHJlcG4gciAwIChTb21lIDEpXG5sZXQgYm9sID0gQmVnX29mX2xpbmVcbmxldCBlb2wgPSBFbmRfb2ZfbGluZVxubGV0IGJvdyA9IEJlZ19vZl93b3JkXG5sZXQgZW93ID0gRW5kX29mX3dvcmRcbmxldCB3b3JkIHIgPSBzZXEgW2JvdzsgcjsgZW93XVxubGV0IG5vdF9ib3VuZGFyeSA9IE5vdF9ib3VuZFxubGV0IGJvcyA9IEJlZ19vZl9zdHJcbmxldCBlb3MgPSBFbmRfb2Zfc3RyXG5sZXQgd2hvbGVfc3RyaW5nIHIgPSBzZXEgW2JvczsgcjsgZW9zXVxubGV0IGxlb2wgPSBMYXN0X2VuZF9vZl9saW5lXG5sZXQgc3RhcnQgPSBTdGFydFxubGV0IHN0b3AgPSBTdG9wXG5sZXQgbG9uZ2VzdCByID0gU2VtIChgTG9uZ2VzdCwgcilcbmxldCBzaG9ydGVzdCByID0gU2VtIChgU2hvcnRlc3QsIHIpXG5sZXQgZmlyc3QgciA9IFNlbSAoYEZpcnN0LCByKVxubGV0IGdyZWVkeSByID0gU2VtX2dyZWVkeSAoYEdyZWVkeSwgcilcbmxldCBub25fZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgTm9uX2dyZWVkeSwgcilcbmxldCBncm91cCA/bmFtZSByID0gR3JvdXAgKG5hbWUsIHIpXG5sZXQgbm9fZ3JvdXAgciA9IE5vX2dyb3VwIHJcbmxldCBuZXN0IHIgPSBOZXN0IHJcbmxldCBtYXJrIHIgPSBsZXQgaSA9IFBtYXJrLmdlbiAoKSBpbiAoaSxQbWFyayAoaSxyKSlcblxubGV0IHNldCBzdHIgPVxuICBsZXQgcyA9IHJlZiBDc2V0LmVtcHR5IGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBzIDo9IENzZXQudW5pb24gKENzZXQuY3NpbmdsZSBzdHIuW2ldKSAhc1xuICBkb25lO1xuICBTZXQgIXNcblxubGV0IHJnIGMgYycgPSBTZXQgKGNzZXEgYyBjJylcblxubGV0IGludGVyIGwgPVxuICBsZXQgciA9IEludGVyc2VjdGlvbiBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5pbnRlclwiXG5cbmxldCBjb21wbCBsID1cbiAgbGV0IHIgPSBDb21wbGVtZW50IGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmNvbXBsXCJcblxubGV0IGRpZmYgciByJyA9XG4gIGxldCByJycgPSBEaWZmZXJlbmNlIChyLCByJykgaW5cbiAgaWYgaXNfY2hhcnNldCByJycgdGhlblxuICAgIHInJ1xuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5kaWZmXCJcblxubGV0IGFueSA9IFNldCBDc2V0LmNhbnlcbmxldCBub3RubCA9IFNldCAoQ3NldC5kaWZmIENzZXQuY2FueSAoQ3NldC5jc2luZ2xlICdcXG4nKSlcblxubGV0IGxvd2VyID0gYWx0IFtyZyAnYScgJ3onOyBjaGFyICdcXDE4MSc7IHJnICdcXDIyMycgJ1xcMjQ2JzsgcmcgJ1xcMjQ4JyAnXFwyNTUnXVxubGV0IHVwcGVyID0gYWx0IFtyZyAnQScgJ1onOyByZyAnXFwxOTInICdcXDIxNCc7IHJnICdcXDIxNicgJ1xcMjIyJ11cbmxldCBhbHBoYSA9IGFsdCBbbG93ZXI7IHVwcGVyOyBjaGFyICdcXDE3MCc7IGNoYXIgJ1xcMTg2J11cbmxldCBkaWdpdCA9IHJnICcwJyAnOSdcbmxldCBhbG51bSA9IGFsdCBbYWxwaGE7IGRpZ2l0XVxubGV0IHdvcmRjID0gYWx0IFthbG51bTsgY2hhciAnXyddXG5sZXQgYXNjaWkgPSByZyAnXFwwMDAnICdcXDEyNydcbmxldCBibGFuayA9IHNldCBcIlxcdCBcIlxubGV0IGNudHJsID0gYWx0IFtyZyAnXFwwMDAnICdcXDAzMSc7IHJnICdcXDEyNycgJ1xcMTU5J11cbmxldCBncmFwaCA9IGFsdCBbcmcgJ1xcMDMzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHJpbnQgPSBhbHQgW3JnICdcXDAzMicgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHB1bmN0ID1cbiAgYWx0IFtyZyAnXFwwMzMnICdcXDA0Nyc7IHJnICdcXDA1OCcgJ1xcMDY0JzsgcmcgJ1xcMDkxJyAnXFwwOTYnO1xuICAgICAgIHJnICdcXDEyMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwxNjknOyByZyAnXFwxNzEnICdcXDE4MCc7XG4gICAgICAgcmcgJ1xcMTgyJyAnXFwxODUnOyByZyAnXFwxODcnICdcXDE5MSc7IGNoYXIgJ1xcMjE1JzsgY2hhciAnXFwyNDcnXVxubGV0IHNwYWNlID0gYWx0IFtjaGFyICcgJzsgcmcgJ1xcMDA5JyAnXFwwMTMnXVxubGV0IHhkaWdpdCA9IGFsdCBbZGlnaXQ7IHJnICdhJyAnZic7IHJnICdBJyAnRiddXG5cbmxldCBjYXNlIHIgPSBDYXNlIHJcbmxldCBub19jYXNlIHIgPSBOb19jYXNlIHJcblxuKCoqKiopXG5cbmxldCBjb21waWxlIHIgPVxuICBjb21waWxlXzEgKFxuICAgIGlmIGFuY2hvcmVkIHIgdGhlblxuICAgICAgZ3JvdXAgclxuICAgIGVsc2VcbiAgICAgIHNlcSBbc2hvcnRlc3QgKHJlcCBhbnkpOyBncm91cCByXVxuICApXG5cbmxldCBleGVjX2ludGVybmFsIG5hbWUgPyhwb3M9MCkgPyhsZW4gPSAtMSkgfnBhcnRpYWwgfmdyb3VwcyByZSBzID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAtMSB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIG5hbWU7XG4gIG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuXG5cbmxldCBleGVjID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBleGVjX29wdCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjX29wdFwiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2VcbiAgICAgICAgICByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gU29tZSBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gTm9uZVxuXG5sZXQgZXhlY3AgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6ZmFsc2UgXCJSZS5leGVjcFwiID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfc3Vic3RyIC0+IHRydWVcbiAgfCBfICAgICAgICAgICAgIC0+IGZhbHNlXG5cbmxldCBleGVjX3BhcnRpYWwgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF8gLT4gYEZ1bGxcbiAgfCBSdW5uaW5nIF8gLT4gYFBhcnRpYWxcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5sZXQgZXhlY19wYXJ0aWFsX2RldGFpbGVkID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbF9kZXRhaWxlZFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIGdyb3VwIC0+IGBGdWxsIGdyb3VwXG4gIHwgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfSAtPiBgUGFydGlhbCBub19tYXRjaF9zdGFydHNfYmVmb3JlXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubW9kdWxlIE1hcmsgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBQbWFyay50XG5cbiAgbGV0IHRlc3QgKGcgOiBHcm91cC50KSBwID1cbiAgICBQbWFyay5TZXQubWVtIHAgZy5wbWFya3NcblxuICBsZXQgYWxsIChnIDogR3JvdXAudCkgPSBnLnBtYXJrc1xuXG4gIG1vZHVsZSBTZXQgPSBQbWFyay5TZXRcblxuICBsZXQgZXF1YWwgPSBQbWFyay5lcXVhbFxuXG4gIGxldCBjb21wYXJlID0gUG1hcmsuY29tcGFyZVxuXG5lbmRcblxudHlwZSBzcGxpdF90b2tlbiA9XG4gIFsgYFRleHQgb2Ygc3RyaW5nXG4gIHwgYERlbGltIG9mIEdyb3VwLnRcbiAgXVxuXG5tb2R1bGUgUnNlcSA9IHN0cnVjdFxuICBsZXQgYWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICgqIGluZGV4IG9mIHRoZSBmaXJzdCBwb3NpdGlvbiB3ZSBkbyBub3QgY29uc2lkZXIuXG4gICAgICAgIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCAqKVxuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaXRlcmF0ZSBvbiBtYXRjaGVzLiBXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHNlYXJjaCBmb3IgdGhlIG5leHRcbiAgICAgICBvbmUganVzdCBhZnRlciBpdHMgZW5kICopXG4gICAgbGV0IHJlYyBhdXggcG9zICgpID1cbiAgICAgIGlmIHBvcyA+PSBsaW1pdFxuICAgICAgdGhlbiBTZXEuTmlsICgqIG5vIG1vcmUgbWF0Y2hlcyAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHNcbiAgICAgICAgICAgICAgICB+cG9zIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIFNlcS5Db25zIChzdWJzdHIsIGF1eCBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfXG4gICAgICAgIHwgRmFpbGVkIC0+IFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCBwb3NcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGFsbCA/cG9zID9sZW4gcmUgc1xuICAgIHw+IFNlcS5tYXAgKGZ1biBzdWIgLT4gR3JvdXAuZ2V0IHN1YiAwKVxuXG4gIGxldCBzcGxpdF9mdWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGk6IHN0YXJ0IG9mIGRlbGltaXRlZCBzdHJpbmdcbiAgICAgICBwb3M6IGZpcnN0IHBvc2l0aW9uIGFmdGVyIGxhc3QgbWF0Y2ggb2YgW3JlXVxuICAgICAgIGxpbWl0OiBmaXJzdCBpbmRleCB3ZSBpZ25vcmUgKCFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQpICopXG4gICAgbGV0IHBvczAgPSBwb3MgaW5cbiAgICBsZXQgcmVjIGF1eCBzdGF0ZSBpIHBvcyAoKSA9IG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgYElkbGUgd2hlbiBwb3MgPj0gbGltaXQgLT5cbiAgICAgICAgaWYgaSA8IGxpbWl0IHRoZW4gKFxuICAgICAgICAgIGxldCBzdWIgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgIFNlcS5Db25zIChgVGV4dCBzdWIsIGF1eCBzdGF0ZSAoaSsxKSBwb3MpXG4gICAgICAgICkgZWxzZSBTZXEuTmlsXG4gICAgICB8IGBJZGxlIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgbGV0IG9sZF9pID0gaSBpblxuICAgICAgICAgIGxldCBpID0gcDIgaW5cbiAgICAgICAgICBpZiBwMSA+IHBvczAgdGhlbiAoXG4gICAgICAgICAgICAoKiBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgYnkgYSBkZWxpbWl0ZXIgKilcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIG9sZF9pIChwMSAtIG9sZF9pKSBpblxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYFlpZWxkIChgRGVsaW0gc3Vic3RyKSBpblxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgICApIGVsc2UgU2VxLkNvbnMgKGBEZWxpbSBzdWJzdHIsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF8gLT4gU2VxLk5pbFxuICAgICAgICB8IEZhaWxlZCAtPlxuICAgICAgICAgIGlmIGkgPCBsaW1pdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgICAgKCogeWllbGQgbGFzdCBzdHJpbmcgKilcbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgbGltaXQgcG9zKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICBlbmRcbiAgICAgIHwgYFlpZWxkIHggLT5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCBgSWRsZSBpIHBvcylcbiAgICBpblxuICAgIGF1eCBgSWRsZSBwb3MgcG9zXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgbGV0IHNlcSA9IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBTZXEuTmlsXG4gICAgICB8IFNlcS5Db25zIChgRGVsaW0gXywgdGwpIC0+IGZpbHRlciB0bCAoKVxuICAgICAgfCBTZXEuQ29ucyAoYFRleHQgcyx0bCkgLT4gU2VxLkNvbnMgKHMsIGZpbHRlciB0bClcbiAgICBpbiBmaWx0ZXIgc2VxXG5lbmRcblxubW9kdWxlIFJsaXN0ID0gc3RydWN0XG4gIGxldCBsaXN0X29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBsaXN0ID1cbiAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IHggOjogbCkgW10gcyB8PiBMaXN0LnJldlxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5lbmRcblxubW9kdWxlIEdlbiA9IHN0cnVjdFxuICB0eXBlICdhIGdlbiA9IHVuaXQgLT4gJ2Egb3B0aW9uXG4gIGxldCBnZW5fb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGdlbiA9XG4gICAgbGV0IHIgPSByZWYgcyBpblxuICAgIGZ1biAoKSAtPiBtYXRjaCAhciAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgICAgfCBTZXEuQ29ucyAoeCwgdGwpIC0+XG4gICAgICAgIHIgOj0gdGw7XG4gICAgICAgIFNvbWUgeFxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuZW5kXG5cbmxldCByZXBsYWNlID8ocG9zPTApID9sZW4gPyhhbGw9dHJ1ZSkgcmUgfmYgcyA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICAgICAgcG9zK2xcbiAgaW5cbiAgKCogYnVmZmVyIGludG8gd2hpY2ggd2Ugd3JpdGUgdGhlIHJlc3VsdCAqKVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAoKiBpdGVyYXRlIG9uIG1hdGNoZWQgc3Vic3RyaW5ncy4gKilcbiAgbGV0IHJlYyBpdGVyIHBvcyA9XG4gICAgaWYgcG9zIDwgbGltaXRcbiAgICB0aGVuXG4gICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvcyB+bGVuOihsaW1pdC1wb3MpIHdpdGhcbiAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgKCogYWRkIHN0cmluZyBiZXR3ZWVuIHByZXZpb3VzIG1hdGNoIGFuZCBjdXJyZW50IG1hdGNoICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAocDEtcG9zKTtcbiAgICAgICAgKCogd2hhdCBzaG91bGQgd2UgcmVwbGFjZSB0aGUgbWF0Y2hlZCBncm91cCB3aXRoPyAqKVxuICAgICAgICBsZXQgcmVwbGFjaW5nID0gZiBzdWJzdHIgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHJlcGxhY2luZztcbiAgICAgICAgaWYgYWxsIHRoZW5cbiAgICAgICAgICAoKiBpZiB3ZSBtYXRjaGVkIGEgbm9uLWNoYXIgZS5nLiBeIHdlIG11c3QgbWFudWFsbHkgYWR2YW5jZSBieSAxICopXG4gICAgICAgICAgaXRlciAoXG4gICAgICAgICAgICBpZiBwMT1wMiB0aGVuIChcbiAgICAgICAgICAgICAgKCogYSBub24gY2hhciBjb3VsZCBiZSBwYXN0IHRoZSBlbmQgb2Ygc3RyaW5nLiBlLmcuICQgKilcbiAgICAgICAgICAgICAgaWYgcDIgPCBsaW1pdCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgcy5bcDJdO1xuICAgICAgICAgICAgICBwMisxXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgcDIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwMiAobGltaXQtcDIpXG4gICAgICB8IFJ1bm5pbmcgXyAtPiAoKVxuICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChsaW1pdC1wb3MpXG4gIGluXG4gIGl0ZXIgcG9zO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCByZXBsYWNlX3N0cmluZyA/cG9zID9sZW4gP2FsbCByZSB+YnkgcyA9XG4gIHJlcGxhY2UgP3BvcyA/bGVuID9hbGwgcmUgcyB+ZjooZnVuIF8gLT4gYnkpXG5cbmxldCB3aXRuZXNzIHQgPVxuICBsZXQgcmVjIHdpdG5lc3MgPSBmdW5jdGlvblxuICAgIHwgU2V0IGMgLT4gU3RyaW5nLm1ha2UgMSAoQ2hhci5jaHIgKENzZXQucGljayBjKSlcbiAgICB8IFNlcXVlbmNlIHhzIC0+IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgd2l0bmVzcyB4cylcbiAgICB8IEFsdGVybmF0aXZlICh4IDo6IF8pIC0+IHdpdG5lc3MgeFxuICAgIHwgQWx0ZXJuYXRpdmUgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBSZXBlYXQgKHIsIGZyb20sIF90bykgLT5cbiAgICAgIGxldCB3ID0gd2l0bmVzcyByIGluXG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggdyAqIGZyb20pIGluXG4gICAgICBmb3IgX2k9MSB0byBmcm9tIGRvXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgd1xuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBOb19jYXNlIHIgLT4gd2l0bmVzcyByXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIChfLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IEdyb3VwIChfLCByKVxuICAgIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBQbWFyayAoXywgcilcbiAgICB8IENhc2UgclxuICAgIHwgU2VtX2dyZWVkeSAoXywgcikgLT4gd2l0bmVzcyByXG4gICAgfCBCZWdfb2ZfbGluZVxuICAgIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkXG4gICAgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lXG4gICAgfCBTdGFydFxuICAgIHwgU3RvcFxuICAgIHwgRW5kX29mX3N0ciAtPiBcIlwiIGluXG4gIHdpdG5lc3MgKGhhbmRsZV9jYXNlIGZhbHNlIHQpXG5cbm1vZHVsZSBTZXEgPSBSc2VxXG5tb2R1bGUgTGlzdCA9IFJsaXN0XG5tb2R1bGUgR3JvdXAgPSBHcm91cFxuXG4oKiogezIgRGVwcmVjYXRlZCBmdW5jdGlvbnN9ICopXG5cbmxldCBzcGxpdF9mdWxsX3NlcSA9IFNlcS5zcGxpdF9mdWxsXG5sZXQgc3BsaXRfc2VxID0gU2VxLnNwbGl0XG5sZXQgbWF0Y2hlc19zZXEgPSBTZXEubWF0Y2hlc1xubGV0IGFsbF9zZXEgPSBTZXEuYWxsXG5cbnR5cGUgJ2EgZ2VuICAgICAgICA9ICdhIEdlbi5nZW5cbmxldCBhbGxfZ2VuICAgICAgICA9IEdlbi5hbGxcbmxldCBtYXRjaGVzX2dlbiAgICA9IEdlbi5tYXRjaGVzXG5sZXQgc3BsaXRfZ2VuICAgICAgPSBHZW4uc3BsaXRcbmxldCBzcGxpdF9mdWxsX2dlbiA9IEdlbi5zcGxpdF9mdWxsXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuXG5sZXQgZ2V0ID0gR3JvdXAuZ2V0XG5sZXQgZ2V0X29mcyA9IEdyb3VwLm9mZnNldFxubGV0IGdldF9hbGwgPSBHcm91cC5hbGxcbmxldCBnZXRfYWxsX29mcyA9IEdyb3VwLmFsbF9vZmZzZXRcbmxldCB0ZXN0ID0gR3JvdXAudGVzdFxuXG50eXBlIG1hcmtpZCA9IE1hcmsudFxuXG5sZXQgbWFya2VkID0gTWFyay50ZXN0XG5sZXQgbWFya19zZXQgPSBNYXJrLmFsbFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpcbkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91cyBjaGFyYWN0ZXI6XG4tIGRvZXMgbm90IGV4aXN0c1xuLSBpcyBhIGxldHRlclxuLSBpcyBub3QgYSBsZXR0ZXJcbi0gaXMgYSBuZXdsaW5lXG4tIGlzIGxhc3QgbmV3bGluZVxuXG5CZWdpbm5pbmcgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBsaW5lOlxuLSBwcmV2aW91cyBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGJ1ZmZlcjpcbi0gcHJldmlvdXMgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGJ1ZmZlclxuLSBjdXJyZW50IGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBsaW5lXG4tIGN1cnJlbnQgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG4qKVxuXG4oKlxuUmVwOiBlID0gVCxlIHwgKClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIGNvbW1hIChzaG9ydGVzdC9sb25nZXN0L2ZpcnN0KVxuICAtIHNlbWFudGljcyBvZiB0aGUgdW5pb24gKGdyZWVkeS9ub24tZ3JlZWR5KVxuXG5Cb3VuZGVkIHJlcGV0aXRpb25cbiAgYXswLDN9ID0gKGEsKGEsYT8pPyk/XG4qKVxuXG50eXBlIGdyb3VwcyA9IEdyb3VwLnRcblxuaW5jbHVkZSBSbGlzdFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgdGVzdDIgYyBjJyA9ICFpICsgMSA8IGwgJiYgcy5bIWldID0gYyAmJiBzLlshaSArIDFdID0gYycgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0MiBjIGMnID0gbGV0IHIgPSB0ZXN0MiBjIGMnIGluIGlmIHIgdGhlbiBpIDo9ICFpICsgMjsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdDIgJ1xcXFwnICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0MiAnXFxcXCcgJ3wnIHx8IHRlc3QyICdcXFxcJyAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgciBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgciBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ib2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIFJlLmVvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQyICdcXFxcJyAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnYCcgdGhlblxuICAgICAgICBSZS5ib3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdcXCcnIHRoZW5cbiAgICAgICAgUmUuZW9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPScgdGhlblxuICAgICAgICBSZS5zdGFydFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ2InIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdCJyB0aGVuXG4gICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW5cbiAgICAgICAgUmUuYm93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPicgdGhlblxuICAgICAgICBSZS5lb3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICd3JyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1cnIHRoZW5cbiAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ1snIHwgJ10nIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ1xcXFwnIGFzIGMgLT5cbiAgICAgICAgICAgIFJlLmNoYXIgY1xuICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICBjICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBnZXQgKClcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbmxldCByZSA/KGNhc2UgPSB0cnVlKSBzID0gbGV0IHIgPSBwYXJzZSBzIGluIGlmIGNhc2UgdGhlbiByIGVsc2UgUmUubm9fY2FzZSByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8oY2FzZSA9IHRydWUpIHMgPSBjb21waWxlIChyZSB+Y2FzZSBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAqKVxuKCogIGxpbmtpbmcgZXhjZXB0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2RpZmllZCBieSBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnIgZm9yIGludGVncmF0aW9uIGluIFJFICopXG5cbigqICRJZDogcmVfc3RyLm1sLHYgMS4zIDIwMDIvMDcvMDMgMTU6NDc6NTQgdm91aWxsb24gRXhwICQgKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG50eXBlIHJlZ2V4cCA9XG4gIHsgcmU6IFJlLnRcbiAgOyBtdGNoOiBSZS5yZSBMYXp5LnRcbiAgOyBzcmNoOiBSZS5yZSBMYXp5LnQgfVxuXG5sZXQgY29tcGlsZV9yZWdleHAgcyBjID1cbiAgbGV0IHJlID0gRW1hY3MucmUgfmNhc2U6KG5vdCBjKSBzIGluXG4gIHsgcmVcbiAgOyBtdGNoID0gbGF6eSAoUmUuY29tcGlsZSAoUmUuc2VxIFtSZS5zdGFydDsgcmVdKSlcbiAgOyBzcmNoID0gbGF6eSAoUmUuY29tcGlsZSByZSkgfVxuXG5sZXQgc3RhdGUgPSByZWYgTm9uZVxuXG5sZXQgc3RyaW5nX21hdGNoIHJlIHMgcCA9XG4gIHRyeVxuICAgIHN0YXRlIDo9IFNvbWUgKFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMpO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGZhbHNlXG5cbmxldCBzdHJpbmdfcGFydGlhbF9tYXRjaCByZSBzIHAgPVxuICBtYXRjaFxuICAgIFJlLmV4ZWNfcGFydGlhbCB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgc1xuICB3aXRoXG4gICAgYEZ1bGwgICAgIC0+IHN0cmluZ19tYXRjaCByZSBzIHBcbiAgfCBgUGFydGlhbCAgLT4gdHJ1ZVxuICB8IGBNaXNtYXRjaCAtPiBmYWxzZVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLnNyY2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBmc3QgKFJlLkdyb3VwLm9mZnNldCByZXMgMClcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIHNlYXJjaF9iYWNrd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIHBcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGlmIHAgPSAwIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2VcbiAgICAgIHNlYXJjaF9iYWNrd2FyZCByZSBzIChwIC0gMSlcblxubGV0IHZhbGlkX2dyb3VwIG4gPVxuICBuID49IDAgJiYgbiA8IDEwICYmIChcbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBtIC0+IG4gPCBSZS5Hcm91cC5uYl9ncm91cHMgbVxuICApXG5cbmxldCBvZmZzZXRfZ3JvdXAgaSA9XG4gIG1hdGNoICFzdGF0ZSB3aXRoXG4gIHwgU29tZSBtIC0+IFJlLkdyb3VwLm9mZnNldCBtIGlcbiAgfCBOb25lICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBncm91cF9sZW4gaSA9XG4gIHRyeVxuICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgaSBpblxuICAgIGUgLSBiXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgMFxuXG5sZXQgcmVjIHJlcGxfbGVuZ3RoIHJlcGwgcCBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGlmIHJlcGwuW3BdIDw+ICdcXFxcJyB0aGVuXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgKHEgKyAxKSBsZW5cbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcCA9IHAgKyAxIGluXG4gICAgICBpZiBwID0gbGVuIHRoZW4gZmFpbHdpdGggXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIjtcbiAgICAgIGxldCBxID1cbiAgICAgICAgbWF0Y2ggcmVwbC5bcF0gd2l0aFxuICAgICAgICB8ICdcXFxcJyAtPiBxICsgMVxuICAgICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBxICsgZ3JvdXBfbGVuIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpXG4gICAgICAgIHwgXyAtPiBxICsgMiBpblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIHEgbGVuXG4gICAgZW5kXG4gIGVuZCBlbHNlXG4gICAgcVxuXG5sZXQgcmVjIHJlcGxhY2Ugb3JpZyByZXBsIHAgcmVzIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgbGV0IGMgPSByZXBsLltwXSBpblxuICAgIGlmIGMgPD4gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIEJ5dGVzLnNldCByZXMgcSBjO1xuICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAxKSByZXMgKHEgKyAxKSBsZW5cbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggcmVwbC5bcCArIDFdIHdpdGhcbiAgICAgICAgJ1xcXFwnIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMSkgbGVuXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGUgLSBiIGluXG4gICAgICAgICAgICBpZiBkID4gMCB0aGVuIFN0cmluZy5ibGl0IG9yaWcgYiByZXMgcSBkO1xuICAgICAgICAgICAgZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAwXG4gICAgICAgIGluXG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgZCkgbGVuXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgQnl0ZXMuc2V0IHJlcyAocSArIDEpIGM7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMikgbGVuXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgcmVwbGFjZW1lbnRfdGV4dCByZXBsIG9yaWcgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCByZXBsIGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKHJlcGxfbGVuZ3RoIHJlcGwgMCAwIGxlbikgaW5cbiAgcmVwbGFjZSBvcmlnIHJlcGwgMCByZXMgMCAoU3RyaW5nLmxlbmd0aCByZXBsKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgc3RyaW5nX2JlZm9yZSBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBmaXJzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBsYXN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAoU3RyaW5nLmxlbmd0aCBzIC0gbikgblxuXG5sZXQgcmVnZXhwIGUgPSBjb21waWxlX3JlZ2V4cCBlIGZhbHNlXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIGUgPSBjb21waWxlX3JlZ2V4cCBlIHRydWVcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSBmYWxzZVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSB0cnVlXG5cbmxldCBncm91cF9iZWdpbm5pbmcgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9iZWdpbm5pbmdcIjtcbiAgbGV0IHBvcyA9IGZzdCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgZ3JvdXBfZW5kIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfZW5kXCI7XG4gIGxldCBwb3MgPSBzbmQgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IG1hdGNoZWRfZ3JvdXAgbiB0eHQgPVxuICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIG4gaW5cbiAgU3RyaW5nLnN1YiB0eHQgYiAoZSAtIGIpXG5cbmxldCByZXBsYWNlX21hdGNoZWQgcmVwbCBtYXRjaGVkID0gcmVwbGFjZW1lbnRfdGV4dCByZXBsIG1hdGNoZWRcblxubGV0IG1hdGNoX2JlZ2lubmluZyAoKSA9IGdyb3VwX2JlZ2lubmluZyAwXG5hbmQgbWF0Y2hfZW5kICgpID0gZ3JvdXBfZW5kIDBcbmFuZCBtYXRjaGVkX3N0cmluZyB0eHQgPSBtYXRjaGVkX2dyb3VwIDAgdHh0XG5cbmxldCBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgMCBpblxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbc3RyaW5nX2JlZm9yZSB0ZXh0IHBvcztcbiAgICAgICAgICAgICAgICAgICAgICByZXBsX2Z1biB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19hZnRlciB0ZXh0IChtYXRjaF9lbmQgKCkpXVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRleHRcblxubGV0IGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIGxldCByZWMgcmVwbGFjZSBhY2N1IHN0YXJ0IGxhc3Rfd2FzX2VtcHR5ID1cbiAgICBsZXQgc3RhcnRwb3MgPSBpZiBsYXN0X3dhc19lbXB0eSB0aGVuIHN0YXJ0ICsgMSBlbHNlIHN0YXJ0IGluXG4gICAgaWYgc3RhcnRwb3MgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IHN0YXJ0cG9zIHdpdGhcbiAgICAgIHwgcG9zIC0+XG4gICAgICAgIGxldCBlbmRfcG9zID0gbWF0Y2hfZW5kICgpIGluXG4gICAgICAgIGxldCByZXBsX3RleHQgPSByZXBsX2Z1biB0ZXh0IGluXG4gICAgICAgIHJlcGxhY2UgKHJlcGxfdGV4dCA6OiBTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICBlbmRfcG9zIChlbmRfcG9zID0gcG9zKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICBpblxuICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IChyZXBsYWNlIFtdIDAgZmFsc2UpKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgZXhwciByZXBsIHRleHQgPVxuICBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcbmFuZCByZXBsYWNlX2ZpcnN0IGV4cHIgcmVwbCB0ZXh0ID1cbiAgc3Vic3RpdHV0ZV9maXJzdCBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcblxubGV0IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIHJlIHMgcCA9XG4gIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCByZSBzIHAgaW5cbiAgaWYgbWF0Y2hfZW5kICgpID4gcCB0aGVuXG4gICAgcG9zXG4gIGVsc2UgaWYgcCA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgc2VhcmNoX2ZvcndhcmQgcmUgcyAocCArIDEpXG4gIGVsc2VcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCBzdGFydCA9XG4gICAgaWYgc3RyaW5nX21hdGNoIGV4cHIgdGV4dCAwIHRoZW4gbWF0Y2hfZW5kICgpIGVsc2UgMCBpblxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0ICgoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpKSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gc3RhcnQgbnVtKVxuXG5sZXQgc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdCBleHByIHRleHQgMFxuXG5sZXQgYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgaWYgdGV4dCA9IFwiXCIgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBzcGxpdF9kZWxpbSBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCAwXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcgfCBEZWxpbSBvZiBzdHJpbmdcblxubGV0IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIGxldCBzID0gbWF0Y2hlZF9zdHJpbmcgdGV4dCBpblxuICAgICAgICBpZiBwb3MgPiBzdGFydCB0aGVuXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OlxuICAgICAgICAgICAgICAgICBUZXh0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcyAtIHN0YXJ0KSkgOjpcbiAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjogYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IGZ1bGxfc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCAwXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIGVuY2xvc2VkID1cbiAgfCBDaGFyIG9mIGNoYXJcbiAgfCBSYW5nZSBvZiBjaGFyICogY2hhclxuXG50eXBlIHBpZWNlID1cbiAgfCBFeGFjdGx5IG9mIGNoYXJcbiAgfCBBbnlfb2Ygb2YgZW5jbG9zZWQgbGlzdFxuICB8IEFueV9idXQgb2YgZW5jbG9zZWQgbGlzdFxuICB8IE9uZVxuICB8IE1hbnlcbiAgfCBNYW55TWFueVxuXG50eXBlIHQgPSBwaWVjZSBsaXN0XG5cbmxldCBvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzIDogdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgcmVhZCBjID1cbiAgICBsZXQgciA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gICAgaWYgciB0aGVuIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgKCoqXG4gICBbcmVhZF9haGVhZCBwYXR0ZXJuXSB3aWxsIGF0dGVtcHQgdG8gcmVhZCBbcGF0dGVybl0gYW5kIHdpbGwgcmV0dXJuIFt0cnVlXSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bC5cbiAgIElmIGl0IGZhaWxzLCBpdCB3aWxsIHJldHVybiBbZmFsc2VdIGFuZCBub3QgaW5jcmVtZW50IHRoZSByZWFkIGluZGV4LlxuICAqKVxuICBsZXQgcmVhZF9haGVhZCBwYXR0ZXJuID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAoKiBpZiB0aGUgcGF0dGVybiB3ZSBhcmUgbG9va2luZyBmb3IgZXhlZWRzIHRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHMsIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseSAqKVxuICAgIGlmICFpICsgcGF0dGVybl9sZW4gPj0gbCB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDAgdG8gcGF0dGVybl9sZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGZvdW5kID0gbm90IChlb3MgKCkpICYmIHMuWyFpICsgal0gPSBwYXR0ZXJuLltqXSBpblxuICAgICAgICAgIGlmIG5vdCBmb3VuZCB0aGVuIHJhaXNlX25vdHJhY2UgRXhpdDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaSA6PSAhaSArIHBhdHRlcm5fbGVuO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIHwgRXhpdCAgLT4gZmFsc2VcbiAgaW5cblxuICBsZXQgY2hhciAoKSA9XG4gICAgaWdub3JlIChyZWFkICdcXFxcJyA6IGJvb2wpO1xuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCByID0gcy5bIWldIGluXG4gICAgaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICBsZXQgZW5jbG9zZWQgKCkgOiBlbmNsb3NlZCBsaXN0ID1cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICAoKiBUaGlzIHJldHVybnMgdGhlIGxpc3QgaW4gcmV2ZXJzZSBvcmRlciwgYnV0IG9yZGVyIGlzbid0IGltcG9ydGFudCBhbnl3YXkgKilcbiAgICAgIGlmIHMgPD4gW10gJiYgcmVhZCAnXSdcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgICAgaWYgbm90IChyZWFkICctJylcbiAgICAgICAgdGhlbiBsb29wIChDaGFyIGMgOjogcylcbiAgICAgICAgZWxzZSBpZiByZWFkICddJ1xuICAgICAgICB0aGVuIENoYXIgYyA6OiBDaGFyICctJyA6OiBzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgbG9vcCAoUmFuZ2UgKGMsIGMnKSA6OiBzKVxuICAgIGluXG4gICAgbG9vcCBbXVxuICBpblxuXG4gIGxldCBwaWVjZSAoKSA9XG4gICAgaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWRfYWhlYWQgXCIvKipcIiAmJiBub3QgKGVvcyAoKSlcbiAgICB0aGVuIE1hbnlNYW55XG4gICAgZWxzZSBpZiByZWFkICcqJ1xuICAgIHRoZW4gaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWQgJyonXG4gICAgICB0aGVuIE1hbnlNYW55XG4gICAgICBlbHNlIE1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJz8nXG4gICAgdGhlbiBPbmVcbiAgICBlbHNlIGlmIG5vdCAocmVhZCAnWycpXG4gICAgdGhlbiBFeGFjdGx5IChjaGFyICgpKVxuICAgIGVsc2UgaWYgcmVhZCAnXicgfHwgcmVhZCAnISdcbiAgICB0aGVuIEFueV9idXQgKGVuY2xvc2VkICgpKVxuICAgIGVsc2UgQW55X29mIChlbmNsb3NlZCAoKSlcbiAgaW5cblxuICBsZXQgcmVjIGxvb3AgcGllY2VzID1cbiAgICBpZiBlb3MgKClcbiAgICB0aGVuIExpc3QucmV2IHBpZWNlc1xuICAgIGVsc2UgbG9vcCAocGllY2UgKCkgOjogcGllY2VzKVxuICBpblxuXG4gIGxvb3AgW11cblxubGV0IG11bCBsIGwnID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHMgLT4gTGlzdC5tYXAgKGZ1biBzJyAtPiBzIF4gcycpIGwnKSBsKVxuXG5sZXQgZXhwbG9kZSBzdHIgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZWMgZXhwbCBpbm5lciBzIGkgYWNjIGJlZyA9XG4gICAgaWYgaSA+PSBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGlubmVyIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSwgaSlcbiAgICBlbmQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICB8ICdcXFxcJyAtPiBleHBsIGlubmVyIHMgKGkgKyAyKSBhY2MgYmVnXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBsZXQgKHQsIGknKSA9IGV4cGwgdHJ1ZSAoaSArIDEpIChpICsgMSkgW10gW1wiXCJdIGluXG4gICAgICAgIGV4cGwgaW5uZXIgaScgaScgYWNjXG4gICAgICAgICAgKG11bCBiZWcgKG11bCBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSB0KSlcbiAgICAgIHwgJywnIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgZXhwbCBpbm5lciAoaSArIDEpIChpICsgMSlcbiAgICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYykgW1wiXCJdXG4gICAgICB8ICd9JyB3aGVuIGlubmVyIC0+XG4gICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjLCBpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBleHBsIGlubmVyIHMgKGkgKyAxKSBhY2MgYmVnXG4gIGluXG4gIExpc3QucmV2IChmc3QgKGV4cGwgZmFsc2UgMCAwIFtdIFtcIlwiXSkpXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVfcGllY2VzICAgICAgICAgICAgICAgIDogUmUudCBsaXN0OyAgKCogbGFzdCBwaWVjZSBhdCBoZWFkIG9mIGxpc3QuICopXG4gICAgcmVtYWluaW5nICAgICAgICAgICAgICAgIDogcGllY2UgbGlzdDsgKCogbGFzdCBwaWVjZSBhdCB0YWlsIG9mIGxpc3QuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiAgIDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuIG9yIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgJy8nICopXG4gICAgcGF0aG5hbWUgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgICBtYXRjaF9iYWNrc2xhc2hlcyAgICAgICAgOiBib29sO1xuICAgIHBlcmlvZCAgICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gIH1cblxuICBsZXQgY3JlYXRlIH5wZXJpb2QgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyByZW1haW5pbmcgPVxuICAgIHtcbiAgICAgIHJlX3BpZWNlcyA9IFtdO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IHRydWU7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSB0cnVlO1xuICAgICAgcGF0aG5hbWU7XG4gICAgICBtYXRjaF9iYWNrc2xhc2hlcztcbiAgICAgIHBlcmlvZDtcbiAgICAgIHJlbWFpbmluZztcbiAgICB9XG5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCB0ID1cbiAgICB0LnBlcmlvZCAmJiAoXG4gICAgICB0LmFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gfHxcbiAgICAgICh0LmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCAmJiB0LnBhdGhuYW1lKVxuICAgIClcblxuICBsZXQgZXhwbGljaXRfc2xhc2ggdCA9IHQucGF0aG5hbWVcblxuICBsZXQgc2xhc2hlcyB0ID1cbiAgICBpZiB0Lm1hdGNoX2JhY2tzbGFzaGVzIHRoZW4gWycvJzsgJ1xcXFwnXSBlbHNlIFsnLyddXG5cbiAgbGV0IGFwcGVuZCA/KGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudD1mYWxzZSkgdCBwaWVjZSA9XG4gICAgeyB0IHdpdGhcbiAgICAgIHJlX3BpZWNlcyA9IHBpZWNlIDo6IHQucmVfcGllY2VzO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IGZhbHNlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50O1xuICAgIH1cblxuICBsZXQgdG9fcmUgdCA9IFJlLnNlcSAoTGlzdC5yZXYgdC5yZV9waWVjZXMpXG5cbiAgbGV0IG5leHQgdCA9XG4gICAgbWF0Y2ggdC5yZW1haW5pbmcgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgcGllY2UgOjogcmVtYWluaW5nIC0+IFNvbWUgKHBpZWNlLCB7IHQgd2l0aCByZW1haW5pbmcgfSlcbmVuZFxuXG5sZXQgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kID1cbiAgUmUuY29tcGwgKFxuICAgIExpc3QuY29uY2F0IFtcbiAgICAgIGlmIGV4cGxpY2l0X3NsYXNoICB0aGVuIExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyBlbHNlIFtdO1xuICAgICAgaWYgZXhwbGljaXRfcGVyaW9kIHRoZW4gW1JlLmNoYXIgJy4nXSBlbHNlIFtdO1xuICAgIF1cbiAgKVxuXG5sZXQgZW5jbG9zZWQgZW5jbG9zZWQgPVxuICBtYXRjaCBlbmNsb3NlZCB3aXRoXG4gIHwgQ2hhciBjIC0+IFJlLmNoYXIgY1xuICB8IFJhbmdlIChsb3csIGhpZ2gpIC0+IFJlLnJnIGxvdyBoaWdoXG5cbmxldCBlbmNsb3NlZF9zZXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Qga2luZCBzZXQgPVxuICBsZXQgc2V0ID0gTGlzdC5tYXAgZW5jbG9zZWQgc2V0IGluXG4gIGxldCBlbmNsb3N1cmUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEFueV9vZiAtPiBSZS5hbHQgc2V0XG4gICAgfCBgQW55X2J1dCAtPiBSZS5jb21wbCBzZXRcbiAgaW5cbiAgUmUuaW50ZXIgW2VuY2xvc3VyZTsgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kXVxuXG5sZXQgZXhhY3RseSBzdGF0ZSBjID1cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSBMaXN0Lm1lbSBjIHNsYXNoZXMgaW5cbiAgbGV0IGNoYXJzID0gaWYgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IHRoZW4gc2xhc2hlcyBlbHNlIFtjXSBpblxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBjaGFycykpIH5hbV9hdF9zdGFydF9vZl9jb21wb25lbnRcblxubGV0IG1hbnlfbWFueSBzdGF0ZSA9XG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBzdGF0ZS5TdGF0ZS5wZXJpb2QgJiYgc3RhdGUuU3RhdGUucGF0aG5hbWUgaW5cbiAgbGV0IGZpcnN0X2V4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kID1cbiAgICBSZS5zZXEgW1xuICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgIF1cbiAgaW5cbiAgKCogV2UgbXVzdCBtYXRjaCBjb21wb25lbnRzIGluZGl2aWR1YWxseSB3aGVuIFtwZXJpb2RdIGZsYWcgaXMgc2V0LFxuICAgICBtYWtpbmcgc3VyZSB0byBub3QgbWF0Y2ggW1wiZm9vLy5iYXJcIl0uICopXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoXG4gICAgUmUuc2VxIFtcbiAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2Q6Zmlyc3RfZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgIFJlLnJlcCAoXG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMpO1xuICAgICAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgICBdXG4gICAgICApO1xuICAgIF0pXG5cbmxldCBtYW55IChzdGF0ZSA6IFN0YXRlLnQpID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgKCogV2hldGhlciB3ZSBtdXN0IGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kIGRlcGVuZHMgb24gdGhlIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGJ1dFxuICAgICBzbGFzaGVzIGFyZSBlYXN5IHRvIGV4cGxpY2l0IG1hdGNoLiBUaGlzIGNvbmRpdGlvbmFsIHNwbGl0cyBvdXQgc29tZSBzaW1wbGUgY2FzZXMuXG4gICopXG4gIGlmIG5vdCBleHBsaWNpdF9wZXJpb2QgdGhlbiBiZWdpblxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpKVxuICBlbmQgZWxzZSBpZiBub3QgZXhwbGljaXRfc2xhc2ggdGhlbiBiZWdpblxuICAgICgqIEluIHRoaXMgc3RhdGUsIHdlIGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kcyBvbmx5IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyAqKVxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUub3B0IChcbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgKSlcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBsZXQgbm90X2VtcHR5ID1cbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgaW5cbiAgICAoKiBbbWF5YmVfZW1wdHldIGlzIHRoZSBkZWZhdWx0IHRyYW5zbGF0aW9uIG9mIE1hbnksIGV4Y2VwdCBpbiBzb21lIHNwZWNpYWwgY2FzZXMuXG4gICAgKilcbiAgICBsZXQgbWF5YmVfZW1wdHkgPSBSZS5vcHQgbm90X2VtcHR5IGluXG4gICAgbGV0IGVuY2xvc2VkX3NldCBzdGF0ZSBraW5kIHNldCA9XG4gICAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCBbXG4gICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgbm90X2VtcHR5O1xuICAgICAgICAgICgqIFNpbmNlIFtub3RfZW1wdHldIG1hdGNoZWQsIHN1YnNlcXVlbnQgZG90cyBhcmUgbm90IGxlYWRpbmcuICopXG4gICAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2U7XG4gICAgICAgIF07XG4gICAgICBdKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29rYWhlYWQgc3RhdGUgPVxuICAgICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG1heWJlX2VtcHR5XG4gICAgICAoKiBnbG9iICoqID09PSBnbG9iICogLiAqKVxuICAgICAgfCBTb21lIChNYW55LCBzdGF0ZSkgLT4gbG9va2FoZWFkIHN0YXRlXG4gICAgICB8IFNvbWUgKEV4YWN0bHkgYywgc3RhdGUpIC0+XG4gICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlXG4gICAgICAgICAgICAoaWYgYyA9ICcuJ1xuICAgICAgICAgICAgIHRoZW4gbm90X2VtcHR5XG4gICAgICAgICAgICAgZWxzZSBtYXliZV9lbXB0eSlcbiAgICAgICAgaW5cbiAgICAgICAgZXhhY3RseSBzdGF0ZSBjXG4gICAgICAoKiBnbG9iICo/ID09PSBnbG9iID8qICopXG4gICAgICB8IFNvbWUgKE9uZSwgc3RhdGUpIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBub3RfZW1wdHlcbiAgICAgIHwgU29tZSAoQW55X29mIGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfb2YgZW5jbG9zZWRcbiAgICAgIHwgU29tZSAoQW55X2J1dCBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X2J1dCBlbmNsb3NlZFxuICAgICAgKCogKiB0aGVuICoqID09PSAqKiAqKVxuICAgICAgfCBTb21lIChNYW55TWFueSwgc3RhdGUpIC0+IG1hbnlfbWFueSBzdGF0ZVxuICAgIGluXG4gICAgbG9va2FoZWFkIHN0YXRlXG4gIGVuZFxuXG5sZXQgcGllY2Ugc3RhdGUgcGllY2UgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBtYXRjaCBwaWVjZSB3aXRoXG4gIHwgT25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKVxuICB8IE1hbnkgLT4gbWFueSBzdGF0ZVxuICB8IEFueV9vZiBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfb2YgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgQW55X2J1dCBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfYnV0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEV4YWN0bHkgYyAtPiBleGFjdGx5IHN0YXRlIGNcbiAgfCBNYW55TWFueSAtPiBtYW55X21hbnkgc3RhdGVcblxubGV0IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGF0ZS50b19yZSBzdGF0ZVxuICAgIHwgU29tZSAocCwgc3RhdGUpIC0+IGxvb3AgKHBpZWNlIHN0YXRlIHApXG4gIGluXG4gIGxvb3AgKFN0YXRlLmNyZWF0ZSB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYilcblxubGV0IGdsb2JcbiAgICAgID8oYW5jaG9yZWQgPSBmYWxzZSlcbiAgICAgID8ocGF0aG5hbWUgPSB0cnVlKVxuICAgICAgPyhtYXRjaF9iYWNrc2xhc2hlcyA9IGZhbHNlKVxuICAgICAgPyhwZXJpb2QgPSB0cnVlKVxuICAgICAgPyhleHBhbmRfYnJhY2VzID0gZmFsc2UpXG4gICAgICA/KGRvdWJsZV9hc3RlcmlzayA9IHRydWUpXG4gICAgICBzXG4gID1cbiAgbGV0IHRvX3JlIHMgPVxuICAgIGxldCByZSA9IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIChvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzKSBpblxuICAgIGlmIGFuY2hvcmVkXG4gICAgdGhlbiBSZS53aG9sZV9zdHJpbmcgcmVcbiAgICBlbHNlIHJlXG4gIGluXG4gIGlmIGV4cGFuZF9icmFjZXNcbiAgdGhlbiBSZS5hbHQgKExpc3QubWFwIHRvX3JlIChleHBsb2RlIHMpKVxuICBlbHNlIHRvX3JlIHNcblxubGV0IGdsb2InID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5wZXJpb2Qgc1xuXG5sZXQgZ2xvYnggP2FuY2hvcmVkIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIHNcblxubGV0IGdsb2J4JyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIH5wZXJpb2Qgc1xuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwb3NpeF9jbGFzc19vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiYWxwaGFcIiAgLT4gUmUuYWxwaGFcbiAgfCBcImFsbnVtXCIgIC0+IFJlLmFsbnVtXG4gIHwgXCJhc2NpaVwiICAtPiBSZS5hc2NpaVxuICB8IFwiYmxhbmtcIiAgLT4gUmUuYmxhbmtcbiAgfCBcImNudHJsXCIgIC0+IFJlLmNudHJsXG4gIHwgXCJkaWdpdFwiICAtPiBSZS5kaWdpdFxuICB8IFwibG93ZXJcIiAgLT4gUmUubG93ZXJcbiAgfCBcInByaW50XCIgIC0+IFJlLnByaW50XG4gIHwgXCJzcGFjZVwiICAtPiBSZS5zcGFjZVxuICB8IFwidXBwZXJcIiAgLT4gUmUudXBwZXJcbiAgfCBcIndvcmRcIiAgIC0+IFJlLndvcmRjXG4gIHwgXCJwdW5jdFwiICAtPiBSZS5wdW5jdFxuICB8IFwiZ3JhcGhcIiAgLT4gUmUuZ3JhcGhcbiAgfCBcInhkaWdpdFwiIC0+IFJlLnhkaWdpdFxuICB8IGNsYXNzXyAgIC0+IGludmFsaWRfYXJnIChcIkludmFsaWQgcGNyZSBjbGFzczogXCIgXiBjbGFzc18pXG5cbmxldCBwb3NpeF9jbGFzc19zdHJpbmdzID1cbiAgWyBcImFscGhhXCIgOyBcImFsbnVtXCIgOyBcImFzY2lpXCJcbiAgOyBcImJsYW5rXCIgOyBcImNudHJsXCIgOyBcImRpZ2l0XCJcbiAgOyBcImxvd2VyXCIgOyBcInByaW50XCIgOyBcInNwYWNlXCJcbiAgOyBcInVwcGVyXCIgOyBcIndvcmRcIiAgOyBcInB1bmN0XCJcbiAgOyBcImdyYXBoXCIgOyBcInhkaWdpdFwiIF1cblxubGV0IHBhcnNlIG11bHRpbGluZSBkb2xsYXJfZW5kb25seSBkb3RhbGwgdW5ncmVlZHkgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0X3MgcycgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMnIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaiA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICB0cnkgaWYgcycuW2pdIDw+IHMuWyFpICsgal0gdGhlbiByYWlzZSBFeGl0XG4gICAgICAgIHdpdGggXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgaSA6PSAhaSArIGxlbjtcbiAgICAgIHRydWVcbiAgICB3aXRoIEV4aXQgLT4gZmFsc2UgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cbiAgbGV0IGdyZWVkeV9tb2QgciA9XG4gICAgbGV0IGdyID0gYWNjZXB0ICc/JyBpblxuICAgIGxldCBnciA9IGlmIHVuZ3JlZWR5IHRoZW4gbm90IGdyIGVsc2UgZ3IgaW5cbiAgICBpZiBnciB0aGVuIFJlLm5vbl9ncmVlZHkgciBlbHNlIFJlLmdyZWVkeSByXG4gIGluXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwMSByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIGdyZWVkeV9tb2QgKFJlLm9wdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBncmVlZHlfbW9kIChSZS5yZXBuIHIgaSBqKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIGRvdGFsbCB0aGVuIFJlLmFueSBlbHNlIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz8nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgclxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyMnIHRoZW4gYmVnaW5cbiAgICAgICAgICBjb21tZW50ICgpXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZSAoKSBpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIFJlLmdyb3VwIH5uYW1lIHJcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5lb2wgZWxzZSBpZiBkb2xsYXJfZW5kb25seSB0aGVuIFJlLmxlb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuKCogWFhYXG4gICAtIEJhY2stcmVmZXJlbmNlc1xuICAgLSBcXGN4IChjb250cm9sLXgpLCBcXGRkZFxuKilcbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3cnIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdXJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdzJyAtPlxuICAgICAgICAgIFJlLnNwYWNlXG4gICAgICB8ICdTJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5zcGFjZV1cbiAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgUmUuZGlnaXRcbiAgICAgIHwgJ0QnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmRpZ2l0XVxuICAgICAgfCAnYicgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgfCAnQicgLT5cbiAgICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIHwgJ0EnIC0+XG4gICAgICAgICAgUmUuYm9zXG4gICAgICB8ICdaJyAtPlxuICAgICAgICAgIFJlLmxlb2xcbiAgICAgIHwgJ3onIC0+XG4gICAgICAgICAgUmUuZW9zXG4gICAgICB8ICdHJyAtPlxuICAgICAgICAgIFJlLnN0YXJ0XG4gICAgICB8ICdlJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDFiJ1xuICAgICAgfCAnZicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgwYydcbiAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxuJ1xuICAgICAgfCAncicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHInXG4gICAgICB8ICd0JyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcdCdcbiAgICAgIHwgJ3gnIC0+XG4gICAgICAgICAgbGV0IGMxID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgYzIgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjb2RlID0gYzEgKiAxNiArIGMyIGluXG4gICAgICAgICAgUmUuY2hhciAoY2hhcl9vZl9pbnQgY29kZSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBjIC0+XG4gICAgICAgICAgUmUuY2hhciBjXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBoZXhkaWdpdCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnYScuLidmJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCAnQScuLidGJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBuYW1lICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onKSBhcyBjIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBuYW1lJyBiID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScpIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCAnPicgLT4gQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgIHwgYENoYXIgYyAtPlxuICAgICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICAgICAgICAgIGBDaGFyIGMnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgICAgIHwgYFNldCBzdCcgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHN0JyA6OiBzKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgICAgfCBgU2V0IHN0IC0+IGJyYWNrZXQgKHN0IDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICBpZiBhY2NlcHQgJzonIHRoZW5cbiAgICAgICAgbGV0IGNvbXBsID0gYWNjZXB0ICdeJyBpblxuICAgICAgICBsZXQgY2xzID1cbiAgICAgICAgICB0cnkgTGlzdC5maW5kIGFjY2VwdF9zIHBvc2l4X2NsYXNzX3N0cmluZ3NcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSBQYXJzZV9lcnJvciBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdF9zIFwiOl1cIikgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IHJlID1cbiAgICAgICAgICBsZXQgcG9zaXhfY2xhc3MgPSBwb3NpeF9jbGFzc19vZl9zdHJpbmcgY2xzIGluXG4gICAgICAgICAgaWYgY29tcGwgdGhlbiBSZS5jb21wbCBbcG9zaXhfY2xhc3NdIGVsc2UgcG9zaXhfY2xhc3MgaW5cbiAgICAgICAgYFNldCAocmUpXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgYENoYXIgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlIGlmIGMgPSAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBsZXQgYyA9IGdldCAoKSBpblxuKCogWFhYXG4gICBcXDEyNywgLi4uXG4qKVxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICdiJyAtPiBgQ2hhciAnXFwwMDgnXG4gICAgICB8ICduJyAtPiBgQ2hhciAnXFxuJyAoKlhYWCopXG4gICAgICB8ICdyJyAtPiBgQ2hhciAnXFxyJyAoKlhYWCopXG4gICAgICB8ICd0JyAtPiBgQ2hhciAnXFx0JyAoKlhYWCopXG4gICAgICB8ICd3JyAtPiBgU2V0IChSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdXJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ3MnIC0+IGBTZXQgKFJlLnNwYWNlKVxuICAgICAgfCAnUycgLT4gYFNldCAoUmUuY29tcGwgW1JlLnNwYWNlXSlcbiAgICAgIHwgJ2QnIC0+IGBTZXQgKFJlLmRpZ2l0KVxuICAgICAgfCAnRCcgLT4gYFNldCAoUmUuY29tcGwgW1JlLmRpZ2l0XSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlXG4gICAgICBgQ2hhciBjXG4gIGFuZCBjb21tZW50ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBpZiBhY2NlcHQgJyknIHRoZW4gUmUuZXBzaWxvbiBlbHNlIGJlZ2luIGluY3IgaTsgY29tbWVudCAoKSBlbmRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID1cbiAgWyBgVW5ncmVlZHkgfCBgRG90YWxsIHwgYERvbGxhcl9lbmRvbmx5XG4gIHwgYE11bHRpbGluZSB8IGBBbmNob3JlZCB8IGBDYXNlbGVzcyBdXG5cbmxldCByZSAgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9XG4gICAgcGFyc2VcbiAgICAgIChMaXN0Lm1lbXEgYE11bHRpbGluZSBvcHRzKSAoTGlzdC5tZW1xIGBEb2xsYXJfZW5kb25seSBvcHRzKVxuICAgICAgKExpc3QubWVtcSBgRG90YWxsIG9wdHMpIChMaXN0Lm1lbXEgYFVuZ3JlZWR5IG9wdHMpXG4gICAgICBzXG4gIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBBbmNob3JlZCBvcHRzIHRoZW4gUmUuc2VxIFtSZS5zdGFydDsgcl0gZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBDYXNlbGVzcyBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGVybC5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgPSBQZXJsLk5vdF9zdXBwb3J0ZWRcblxudHlwZSByZWdleHAgPSBSZS5yZVxuXG50eXBlIGZsYWcgPSBbIGBDQVNFTEVTUyB8IGBNVUxUSUxJTkUgfCBgQU5DSE9SRUQgfCBgRE9UQUxMIF1cblxudHlwZSBzcGxpdF9yZXN1bHQgPVxuICB8IFRleHQgIG9mIHN0cmluZ1xuICB8IERlbGltIG9mIHN0cmluZ1xuICB8IEdyb3VwIG9mIGludCAqIHN0cmluZ1xuICB8IE5vR3JvdXBcblxudHlwZSBncm91cHMgPSBDb3JlLkdyb3VwLnRcblxubGV0IHJlID8oZmxhZ3MgPSBbXSkgcGF0ID1cbiAgbGV0IG9wdHMgPSBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICB8IGBDQVNFTEVTUyAtPiBgQ2FzZWxlc3NcbiAgICB8IGBNVUxUSUxJTkUgLT4gYE11bHRpbGluZVxuICAgIHwgYEFOQ0hPUkVEIC0+IGBBbmNob3JlZFxuICAgIHwgYERPVEFMTCAtPiBgRG90YWxsXG4gICkgZmxhZ3MgaW5cbiAgUGVybC5yZSB+b3B0cyBwYXRcblxubGV0IHJlZ2V4cCA/ZmxhZ3MgcGF0ID0gUmUuY29tcGlsZSAocmUgP2ZsYWdzIHBhdClcblxubGV0IGV4dHJhY3QgfnJleCBzID1cbiAgUmUuR3JvdXAuYWxsIChSZS5leGVjIHJleCBzKVxuXG5sZXQgZXhlYyB+cmV4ID9wb3MgcyA9XG4gIFJlLmV4ZWMgcmV4ID9wb3Mgc1xuXG5sZXQgZ2V0X3N1YnN0cmluZyBzIGkgPVxuICBSZS5Hcm91cC5nZXQgcyBpXG5cbmxldCBuYW1lcyByZXggPVxuICBSZS5ncm91cF9uYW1lcyByZXhcbiAgfD4gTGlzdC5tYXAgZnN0XG4gIHw+IEFycmF5Lm9mX2xpc3RcblxubGV0IGdldF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgcyA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IChuLCBpKSA6OiByZW0gd2hlbiBuID0gbmFtZSAtPlxuICAgICAgIGJlZ2luXG4gICAgICAgICB0cnkgZ2V0X3N1YnN0cmluZyBzIGlcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGxvb3AgcmVtXG4gICAgICAgZW5kXG4gICAgfCBfIDo6IHJlbSAtPiBsb29wIHJlbVxuICBpblxuICBsb29wIChSZS5ncm91cF9uYW1lcyByZXgpXG5cbmxldCBnZXRfc3Vic3RyaW5nX29mcyBzIGkgPVxuICBSZS5Hcm91cC5vZmZzZXQgcyBpXG5cbmxldCBwbWF0Y2ggfnJleCBzID1cbiAgUmUuZXhlY3AgcmV4IHNcblxubGV0IHN1YnN0aXR1dGUgfnJleCB+c3Vic3Qgc3RyID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHBhdCA9IFJlLkdyb3VwLmdldCBzcyAwIGluXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN1YnN0IHBhdCk7XG4gICAgICBsb29wIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKTtcbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgIClcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB+cmV4IHN0ciA9XG4gIGxldCByZWMgbG9vcCBhY2N1IHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIExpc3QucmV2IGFjY3VcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApIGluXG4gIGxvb3AgW10gMFxuXG4oKiBGcm9tIFBDUkUgKilcbmxldCBzdHJpbmdfdW5zYWZlX3N1YiBzIG9mcyBsZW4gPVxuICBsZXQgciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgQnl0ZXMudW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChsZW4gbHNsIDEpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgfCAnXFxcXCcgfCAnXicgfCAnJCcgfCAnLicgfCAnWycgfCAnfCdcbiAgICB8ICcoJyAgfCAnKScgfCAnPycgfCAnKicgfCAnKycgfCAneycgYXMgYyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyAnXFxcXCc7XG4gICAgICBpbmNyIHBvcztcbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgICB8IGMgLT4gQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICBkb25lO1xuICBzdHJpbmdfdW5zYWZlX3N1YiBidWYgMCAhcG9zXG5cbmxldCBmdWxsX3NwbGl0ID8obWF4PTApIH5yZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA9IDAgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbVGV4dCBzXVxuICBlbHNlXG4gICAgbGV0IHJlc3VsdHMgPSBSZS5zcGxpdF9mdWxsIHJleCBzIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYFRleHQgcyAtPiBbVGV4dCBzXVxuICAgICAgICB8IGBEZWxpbSBkIC0+XG4gICAgICAgICAgbGV0IG1hdGNoZXMgPSBSZS5Hcm91cC5hbGxfb2Zmc2V0IGQgaW5cbiAgICAgICAgICBsZXQgZGVsaW0gPSBSZS5Hcm91cC5nZXQgZCAwIGluXG4gICAgICAgICAgKERlbGltIGRlbGltKTo6KFxuICAgICAgICAgICAgbGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggbWF0Y2hlcyAtIDEgZG9cbiAgICAgICAgICAgICAgbCA6PVxuICAgICAgICAgICAgICAgIChpZiBtYXRjaGVzLihpKSA9ICgtMSwgLTEpXG4gICAgICAgICAgICAgICAgIHRoZW4gTm9Hcm91cFxuICAgICAgICAgICAgICAgICBlbHNlIEdyb3VwIChpLCBSZS5Hcm91cC5nZXQgZCBpKSlcbiAgICAgICAgICAgICAgICA6OighbClcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBMaXN0LnJldiAhbCkpIHJlc3VsdHMgaW5cbiAgICBMaXN0LmNvbmNhdCBtYXRjaGVzXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxuKCpcbldoYXQgd2UgY291bGQgKHNob3VsZD8pIGRvOlxuLSBhKiA9PT4gbG9uZ2VzdCAoKHNob3J0ZXN0IChub19ncm91cCBhKSogKSwgYSB8ICgpKSAgKCEhISlcbi0gYWJjIHVuZGVyc3Rvb2QgYXMgKGFiKWNcbi0gXCIoKGE/KXxiKVwiIGFnYWluc3QgXCJhYlwiIHNob3VsZCBub3QgYmluZCB0aGUgZmlyc3Qgc3VicGF0dGVybiB0byBhbnl0aGluZ1xuXG5Ob3RlIHRoYXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGhhbmRsZSBcIigoKGFiKWMpZCllXCIgZWZmaWNpZW50bHlcbiopXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIG5ld2xpbmUgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIFJlLnJlcG4gKFJlLm5lc3QgcikgaSBqXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLm5vdG5sIGVsc2UgUmUuYW55XG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgUmUuZ3JvdXAgclxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuZGlmZiAoUmUuY29tcGwgKGJyYWNrZXQgW10pKSAoUmUuY2hhciAnXFxuJylcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd8JyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICc/J1xuICAgICAgfCAnWycgfCAnLicgfCAnXicgfCAnJCcgfCAneycgfCAnXFxcXCcgYXMgYyAtPiBSZS5jaGFyIGNcbiAgICAgIHwgICAgICAgICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkICgqWFhYKilcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgY1xuICAgIGVuZCBlbHNlXG4gICAgICBjXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9IFtgSUNhc2UgfCBgTm9TdWIgfCBgTmV3bGluZV1cblxubGV0IHJlID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPSBwYXJzZSAoTGlzdC5tZW1xIGBOZXdsaW5lIG9wdHMpIHMgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYElDYXNlIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBOb1N1YiBvcHRzIHRoZW4gUmUubm9fZ3JvdXAgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSByZSA9IFJlLmNvbXBpbGUgKFJlLmxvbmdlc3QgcmUpXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxub3BlbiBTdG9yZVxuXG5tb2R1bGUgTWFrZSAoUyA6IFNUT1JFKSA9IHN0cnVjdFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogSW4gdGhpcyB2ZXJzaW9uIHRoZSBjb2RlLCB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXVzdCBub3QgbXV0YWJsZS4gSW5kZWVkLFxuICAgZXZlcnkgbXV0YXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdmlhIFtTLnNldF0uICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgJ2EgcnJlZlxufCBSb290IG9mIHJhbmsgKiAnYVxuXG4oKiBUaGUgdHlwZSBbJ2EgcnJlZl0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIHJyZWYgPVxuICAnYSBjb250ZW50IFMucnJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgdHlwZSBvZiBzdG9yZXMsIGFuZCB0aGUgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbmV3IHN0b3JlLCBhcmUgdGhvc2VcbiAgIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIFtTXS4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gICdhIGNvbnRlbnQgUy5zdG9yZVxuXG5sZXQgbmV3X3N0b3JlIDogdW5pdCAtPiAnYSBzdG9yZSA9XG4gIFMubmV3X3N0b3JlXG5cbmxldCBjb3B5IDogJ2Egc3RvcmUgLT4gJ2Egc3RvcmUgPVxuICBTLmNvcHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2UgcyB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBTLm1ha2UgcyAoUm9vdCAoMCwgdikpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHMgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgXykgLT5cbiAgICAgIHhcbiAgfCBMaW5rIHkgLT5cbiAgICAgIGxldCB6ID0gZmluZCBzIHkgaW5cbiAgICAgIGlmIFMuZXEgcyB5IHogdGhlblxuICAgICAgICB6XG4gICAgICBlbHNlXG4gICAgICAgIGxldCBsaW5rX3RvX3ogPSBTLmdldCBzIHkgaW5cbiAgICAgICAgUy5zZXQgcyB4IGxpbmtfdG9fejtcbiAgICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IGJvb2wgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHMgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGUgc2FtZVxuICAgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGEgcGh5c2ljYWxcbiAgIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdIGFuZCBbeV0gYXJlXG4gICBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIFMuZXEgcyB4IHkgfHwgUy5lcSBzIChmaW5kIHMgeCkgKGZpbmQgcyB5KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0XyBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtnZXQgcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAoXywgdikgLT5cbiAgICAgICAgICB2XG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIGdldF8gcyB4XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXRfIHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW3NldCBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChyLCBfKSAtPlxuICAgICAgICAgIFMuc2V0IHMgeSAoUm9vdCAociwgdikpXG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIHNldF8gcyB4IHZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHMgeCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIF8pIC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTsgeVxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7IHhcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCArIDEsIHZ4KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSBzIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCB2eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gUy5zZXQgcyB5IChSb290IChyeSwgdikpO1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiBTLnNldCBzIHggKFJvb3QgKHJ4LCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4KzEsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogV2UgbWFrZSB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXV0YWJsZSwgYW5kIHdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0XG4gICBldmVyeSB2ZXJ0ZXggdW5pcXVlbHkgb3ducyBpdHMgY29udGVudC4gVGhpcyBhbGxvd3MgdXMgdG8gdXBkYXRlIGEgY29udGVudFxuICAgaW4gcGxhY2UgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IGNvbnRlbnQgYW5kIHVwZGF0aW5nIHRoZSB2ZXJ0ZXggd2l0aFxuICAgdGhpcyBuZXcgY29udGVudC5cblxuICAgV2Ugb2J0YWluIHRoZSBwcm9wZXJ0eSB0aGF0OlxuICAgLSBvbmx5IFttYWtlXSBhbGxvY2F0ZXMgYSBuZXcgdmVydGV4IChhIHJlZmVyZW5jZSBhbmQgYSBbUm9vdF0gY29udGVudCk7XG4gICAtIG9ubHkgW3VuaW9uXSBhbmQgW21lcmdlXSBhbGxvY2F0ZSBhIG5ldyBlZGdlIChhIFtMaW5rXSBjb250ZW50KS5cbiAgIFtmaW5kXSwgW2dldF0sIFtzZXRdLCBbZXFdIGFsbG9jYXRlIG5vIG1lbW9yeS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiB7IG11dGFibGUgcGFyZW50IDogJ2EgZWxlbSB9XG58IFJvb3Qgb2YgeyBtdXRhYmxlIHJhbmsgOiByYW5rOyBtdXRhYmxlIHZhbHVlIDogJ2EgfVxuXG4oKiBUaGUgdHlwZSBbJ2EgZWxlbV0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIGVsZW0gPVxuICAnYSBjb250ZW50IHJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAodiA6ICdhKSA6ICdhIGVsZW0gPVxuICByZWYgKFJvb3QgeyByYW5rID0gMDsgdmFsdWUgPSB2IH0pXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgc28gYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHggOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB4XG4gIHwgTGluayAoeyBwYXJlbnQgPSB5IH0gYXMgbGluaykgLT5cbiAgICAgIGxldCB6ID0gZmluZCB5IGluXG4gICAgICBpZiB6ICE9IHkgdGhlblxuICAgICAgICBsaW5rLnBhcmVudCA8LSB6O1xuICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHggOiAnYSBlbGVtKSA6IGJvb2wgPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGVcbiAgIHNhbWUgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGFcbiAgIHBoeXNpY2FsIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdXG4gICBhbmQgW3ldIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIHggPT0geSB8fCBmaW5kIHggPT0gZmluZCB5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXQgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldCAoeCA6ICdhIGVsZW0pIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCB7IHZhbHVlID0gdjsgXyB9IC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldCB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0ICh4IDogJ2EgZWxlbSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3Qgcm9vdCAtPlxuICAgICAgcm9vdC52YWx1ZSA8LSB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IF8gfSBhcyByb290eCksIFJvb3QgeyByYW5rID0gcnk7IF8gfSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHh9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgdmFsdWUgPSB2eCB9IGFzIHJvb3R4KSxcbiAgICAgIFJvb3QgKHsgcmFuayA9IHJ5OyB2YWx1ZSA9IHZ5IH0gYXMgcm9vdHkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIHJvb3R5LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBJTlRNQVAgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHZhbCBlbXB0eTogJ2EgdFxuICB2YWwgZmluZDogaW50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGFkZDogaW50IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbnRNYXAgOiBJTlRNQVApID0gc3RydWN0XG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYSBwYWlyIG9mIGFuIGludGVnZXIgYWRkcmVzcyBhbmQgYSBtYXAgb2ZcbiAgIGludGVnZXIgYWRkcmVzc2VzIHRvIHZhbHVlcy4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZVxuICAgZG9tYWluIG9mIHRoZSBtYXAgW2NvbnRlbnRdIGlzIHRoZSBzZW1pLW9wZW4gaW50ZXJ2YWwgb2YgemVyb1xuICAgKGluY2x1ZGVkKSB1cCB0byBbbGltaXRdIChleGNsdWRlZCkuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGNvbnRlbnQgb2YgdGhlIHN0b3JlLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIEludE1hcC50XG59XG5cbmxldCBuZXdfc3RvcmUgKCkgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IEludE1hcC5lbXB0eVxufVxuXG4oKiBCZWNhdXNlIGEgcGVyc2lzdGVudCBtYXAgaXMgdXNlZCwgY29weWluZyBhIHN0b3JlIGFtb3VudHMgdG8gY29weWluZ1xuICAgdGhlIG11dGFibGUgcmVjb3JkIGF0IHRoZSByb290LiAqKVxuXG5sZXQgY29weSBzID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBqdXN0IGFuIGludGVnZXIgYWRkcmVzcy4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbmxldCBtYWtlIHMgdiA9XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50O1xuICB4XG5cbigqIFtjaGVjayBzIHhdIGNoZWNrcyB0aGF0IHRoZSBhZGRyZXNzIFt4XSBpcyBpbiByYW5nZSBmb3IgdGhlIHN0b3JlIFtzXS4gSWZcbiAgIHRoaXMgZHluYW1pYyBjaGVjayBmYWlscywgdGhlbiB0aGUgdXNlciBpcyBjb25mdXNlZCBhbmQgaGFzIHBhc3NlZCB1cyBhblxuICAgYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAoSWYgdGhlIGNoZWNrIHN1Y2NlZWRzLFxuICAgdGhlIHVzZXIgbWF5IGJlIGNvbmZ1c2VkIHRvbyEgYnV0IHdlIGNhbm5vdCBkZXRlY3QgaXQuKSAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IGdldCBzIHggPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgSW50TWFwLmZpbmQgeCBzLmNvbnRlbnRcblxubGV0IHNldCBzIHggdiA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50XG5cbmxldCBlcSBzICh4IDogaW50KSAoeSA6IGludCkgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuXG5lbmRcblxuKCogSW5jbHVkZSB0aGUgbW9zdCBjb21tb24gaW5zdGFuY2Ugb2YgdGhlIGFib3ZlIGZ1bmN0b3IuICopXG5cbmluY2x1ZGUgTWFrZShNYXAuTWFrZShzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBjb21wYXJlID0gKC0pICgqIG9rIHNpbmNlIHRoZSBhcmd1bWVudHMgYXJlIG5vbm5lZ2F0aXZlIGludGVnZXJzICopXG5lbmQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdoZW4gT0NhbWwncyBidWlsdC1pbiBzdG9yZSBpcyB1c2VkLCBubyBleHBsaWNpdCBzdG9yZSBpcyBuZWVkZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB1bml0XG5cbmxldCBuZXdfc3RvcmUgKCkgPVxuICAoKVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbigqIEEgcmVmZXJlbmNlIGlzIGEgcHJpbWl0aXZlIHJlZmVyZW5jZS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgJ2EgcmVmXG5cbmxldCBtYWtlICgpIHYgPVxuICByZWYgdlxuXG5sZXQgZ2V0ICgpIHggPVxuICAheFxuXG5sZXQgc2V0ICgpIHggdiA9XG4gIHggOj0gdlxuXG5sZXQgZXEgKCkgeCB5ID1cbiAgeCA9PSB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSByZWZlcmVuY2UgY2VsbCByZWNvcmRzIGJvdGggaXRzIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZSBhbmRcbiAgIGl0cyBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gQSBjZWxsIGlzIGNvbnNpZGVyZWQgc3RhYmxlIHdoZW4gdGhlc2UgdHdvIHZhbHVlc1xuICAgYXJlIChwaHlzaWNhbGx5KSBlcXVhbCwgYW5kIHVuc3RhYmxlIG90aGVyd2lzZS4gKilcblxuKCogT25lIGNvdWxkIHBlcmhhcHMgZW5yaWNoIGVhY2ggY2VsbCB3aXRoIGEgcG9pbnRlciB0byBpdHMgc3RvcmUsIHNvIGFzIHRvXG4gICBlbnN1cmUgYXQgcnVudGltZSB0aGF0IHRoZSB1c2VyIGlzIG5vdCBjb25mdXNlZC4gKilcblxudHlwZSAnYSBycmVmID0ge1xuICAoKiBUaGUgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlLiAqKVxuICBtdXRhYmxlIGN1cnJlbnQ6ICdhO1xuICAoKiBUaGUgbGFzdCBjb21taXR0ZWQgdmFsdWUuICopXG4gIG11dGFibGUgY29tbWl0dGVkOiAnYVxufVxuXG4oKiBBIHRyYW5zYWN0aW9uIGNvbnRhaW5zIGEgc3RhY2sgb2YgYWxsIHVuc3RhYmxlIGNlbGxzIChhbmQgcG9zc2libHkgc29tZVxuICAgc3RhYmxlIGNlbGxzIHRvbywgYWx0aG91Z2ggdGhhdCBpcyB1bmxpa2VseSkuICopXG5cbnR5cGUgJ2EgdHJhbnNhY3Rpb24gPVxuICAnYSBycmVmIFN0YWNrLnRcblxuKCogQSBzdG9yZSBjb250YWlucyBhbiBvcHRpb25hbCB0cmFuc2FjdGlvbi4gVGhpcyBpbmRpY2F0ZXMgd2hldGhlciBhXG4gICB0cmFuc2FjdGlvbiBpcyBjdXJyZW50bHkgb25nb2luZy4gVHJhbnNhY3Rpb25zIGNhbm5vdCBiZSBuZXN0ZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB7IG11dGFibGUgdHJhbnNhY3Rpb246ICdhIHRyYW5zYWN0aW9uIG9wdGlvbiB9XG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9XG4gIHsgdHJhbnNhY3Rpb24gPSBOb25lIH1cblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgbWFrZSAoX3MgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgeyBjdXJyZW50ID0gdjsgY29tbWl0dGVkID0gdiB9XG5cbmxldCBnZXQgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIHguY3VycmVudFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgKCogSWYgdGhlIG5ldyB2YWx1ZSBoYXBwZW5zIHRvIGJlIHRoZSBjdXJyZW50IHZhbHVlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLiAqKVxuICBsZXQgY3VycmVudCA9IHguY3VycmVudCBpblxuICBpZiB2ID09IGN1cnJlbnQgdGhlblxuICAgICgpXG4gIGVsc2UgYmVnaW4gbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKCogT3V0c2lkZSBvZiBhIHRyYW5zYWN0aW9uLCB0d28gbm9ybWFsIHdyaXRlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZC5cbiAgICAgICAgIFRoZSBjZWxsIHJlbWFpbnMgc3RhYmxlLiBOb3RoaW5nIGlzIGxvZ2dlZC4gKilcbiAgICAgIHguY3VycmVudCA8LSB2O1xuICAgICAgeC5jb21taXR0ZWQgPC0gdlxuICB8IFNvbWUgc3RhY2sgLT5cbiAgICAgICgqIFdlIGFyZSB3aXRoaW4gYSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICgqIElmIHRoaXMgY2VsbCB3YXMgc3RhYmxlIGFuZCBub3cgYmVjb21lcyB1bnN0YWJsZSwgdGhlbiBpdCBtdXN0IGJlXG4gICAgICAgICBpbnNlcnRlZCBpbnRvIHRoZSBzZXQgb2YgdW5zdGFibGUgY2VsbHMsIHdoaWNoIGlzIHJlY29yZGVkIGFzIHBhcnRcbiAgICAgICAgIG9mIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgIGlmIGN1cnJlbnQgPT0geC5jb21taXR0ZWQgdGhlblxuICAgICAgICBTdGFjay5wdXNoIHggc3RhY2s7XG4gICAgICAoKiBUaGUgY2VsbCBtdXN0IHRoZW4gYmUgdXBkYXRlZC4gSWYgW3ZdIGhhcHBlbnMgdG8gYmUgZXF1YWwgdG9cbiAgICAgICAgIFtjb21taXR0ZWRdLCB0aGlzIGNvdWxkIG1ha2UgdGhlIGNlbGwgc3RhYmxlIGFnYWluLiBXZSBkbyBub3RcbiAgICAgICAgIGNoZWNrIGZvciB0aGlzIHVubGlrZWx5IHNpdHVhdGlvbi4gVGhpcyBtZWFucyB0aGF0IHRoZSBzZXQgb2ZcbiAgICAgICAgIHVuc3RhYmxlIGNlbGxzIGNvdWxkIGFjdHVhbGx5IGNvbnRhaW4gc3RhYmxlIGNlbGxzIHRvby4gKilcbiAgICAgIHguY3VycmVudCA8LSB2XG4gICAgZW5kXG5cbmxldCBlcSAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIHggPT0geVxuXG5leGNlcHRpb24gTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG5cbmxldCBjb21taXQgeCA9XG4gIHguY29tbWl0dGVkIDwtIHguY3VycmVudFxuXG5sZXQgcm9sbGJhY2sgeCA9XG4gIHguY3VycmVudCA8LSB4LmNvbW1pdHRlZFxuXG5sZXQgdGVudGF0aXZlbHkgKHMgOiAnYSBzdG9yZSkgKGYgOiB1bml0IC0+ICdiKSA6ICdiID1cbiAgbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgICByYWlzZSBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgc3RhY2sgPSBTdGFjay5jcmVhdGUoKSBpblxuICAgICAgcy50cmFuc2FjdGlvbiA8LSBTb21lIHN0YWNrO1xuICAgICAgdHJ5XG4gICAgICAgIGxldCBiID0gZigpIGluXG4gICAgICAgICgqIENvbW1pdCBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIGNvbW1pdCBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgYlxuICAgICAgd2l0aCBlIC0+XG4gICAgICAgIGxldCBiID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UoKSBpblxuICAgICAgICAoKiBSb2xsIGJhY2sgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciByb2xsYmFjayBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhbiBleHRlbnNpYmxlIGFycmF5LCB0aGF0IGlzLCBhIHBhaXIgb2YgYW5cbiAgIGludGVnZXIgYWRkcmVzcyBhbmQgYW4gYXJyYXkuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgbGVuZ3RoIG9mXG4gICB0aGUgYXJyYXkgaXMgYXQgbGVhc3QgW2xpbWl0XS4gVGhlIGFyZWEgb2YgdGhlIGFycmF5IGF0IGluZGV4IFtsaW1pdF0gYW5kXG4gICBiZXlvbmQgaXMgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkLiAqKVxuXG4oKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhpcyBhcmVhIGlzIGZpbGxlZCB3aXRoIGFyYml0cmFyeSB2YWx1ZShzKVxuICAgcHJvdmlkZWQgYnkgdGhlIHVzZXIgaW4gY2FsbHMgdG8gW21ha2VdIG9yIFtzZXRdLiBUaGlzIGlzIG5vdCBpZGVhbCwgYXMgaXRcbiAgIGNhbiBjYXVzZSBhIG1lbW9yeSBsZWFrLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbG9naWNhbCBzaXplIG9mIHRoZSBhcnJheTsgYWxzbywgdGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgYXJyYXksIHdob3NlIGxlbmd0aCBpcyBhdCBsZWFzdCBbbGltaXRdLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIGFycmF5XG59XG5cbigqIFRoZSBhcnJheSBpcyBjcmVhdGVkIHdpdGggYSBzaXplIGFuZCBsZW5ndGggb2YgemVyby4gV2UgaGF2ZSBubyBvdGhlclxuICAgY2hvaWNlLCBzaW5jZSB3ZSBkbyBub3QgaGF2ZSBhIHZhbHVlIG9mIHR5cGUgWydhXSBhdCBoYW5kLiAqKVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IFt8fF1cbn1cblxuKCogQ29weWluZyBpcyBzdXBwb3J0ZWQsIGJ1dCBpcyBub3QgY2hlYXAuIFVzZSBhdCB5b3VyIG93biByaXNrLiAqKVxuXG5sZXQgY29weSAocyA6ICdhIHN0b3JlKSA6ICdhIHN0b3JlID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBBcnJheS5jb3B5IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGFuIGluZGV4IGludG8gdGhlIGFycmF5LiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxuKCogVGhlIGFycmF5IGp1bXBzIGZyb20gbGVuZ3RoIHplcm8gdG8gbGVuZ3RoIFtkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXSBhcyBzb29uXG4gICBhcyBhIGNhbGwgdG8gW21ha2VdIGlzIG1hZGUuICopXG5cbmxldCBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoID1cbiAgMjU2XG5cbigqIFtlbmxhcmdlIHMgdl0gaW5jcmVhc2VzIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IChpZiBuZWNlc3NhcnkpIHNvIGFzIHRvXG4gICBlbnN1cmUgdGhhdCBbcy5saW1pdF0gYmVjb21lcyBhIHZhbGlkIGluZGV4LiBUaGUgYXJndW1lbnQgW3ZdIGlzIHVzZWQgYXMgYVxuICAgZGVmYXVsdCB2YWx1ZSB0byBmaWxsIHRoZSB1bmluaXRpYWxpemVkIGFyZWEuICopXG5cbmxldCBlbmxhcmdlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCBjb250ZW50ID0gcy5jb250ZW50IGluXG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29udGVudCBpblxuICBpZiBzLmxpbWl0ID0gbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuZ3RoJyA9XG4gICAgICBpZiBsZW5ndGggPSAwIHRoZW5cbiAgICAgICAgZGVmYXVsdF9pbml0aWFsX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICAyICogbGVuZ3RoXG4gICAgaW5cbiAgICBhc3NlcnQgKHMubGltaXQgPCBsZW5ndGgnKTtcbiAgICBsZXQgY29udGVudCcgPSBBcnJheS5tYWtlIGxlbmd0aCcgdiBpblxuICAgIEFycmF5LmJsaXQgY29udGVudCAwIGNvbnRlbnQnIDAgbGVuZ3RoO1xuICAgIHMuY29udGVudCA8LSBjb250ZW50J1xuICBlbmRcblxuKCogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIGFuZCBbQXJyYXkudW5zYWZlX2dldF0gd2l0aG91dFxuICAgYW55IHByZWNhdXRpb25zLCBzaW5jZSB0aGUgT0NhbWwgdHlwZS1jaGVja2VyIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGVcbiAgIGluZGljZXMgYXJlIGluIHJhbmdlLiBBIGNvbmZ1c2VkIHVzZXIgY291bGQgcGFzcyByZWZlcmVuY2VzIGludG8gc29tZVxuICAgb3RoZXIgc3RvcmUuIFdlIGNob29zZSB0byBleHBsaWNpdGx5IGNoZWNrIHRoYXQgdGhlIGluZGV4IGlzIHdpdGhpbiB0aGVcbiAgIGxvZ2ljYWwgYm91bmRzIG9mIHRoZSBhcnJheSAtLSB0aGlzIGlzIGEgbW9yZSBwcmVjaXNlIGNoZWNrLiAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IHVuaXQgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBlbmxhcmdlIHMgdjtcbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdjtcbiAgeFxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX2dldCBzLmNvbnRlbnQgeFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHZcblxubGV0IGVxICAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG4iLCIvKiBJRCBGQVFcblxuICAgV0hBVFMgQU4gSUQ/XG5cbiAgIElEcyBhcmUgcmFuZG9tLWdlbmVyYXRlZCAxMjhiaXQgVVVJRHM7IHVzZSBJZC5taygpIHRvIGdlbmVyYXRlIG9uZS5cblxuICAgV0hBVCBBUkUgSURTIFVTRUQgRk9SP1xuXG4gICBVbmlxdWUgaWRzIGFyZSBhc3NpZ25lZCB0byB0aWxlcyAoYW5kIGhlbmNlLCBpbmRpcmVjdGx5LCB0byB0ZXJtcylcbiAgIGF0IHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9mIHN1cmZhY2Ugc3ludGF4LiBJZHMgYXJlIHVzZWQgYXMga2V5cyBpblxuICAgdmFyaW91cyBtYXBzIChtb3N0bHkgbm90YWJseSB0aGUgTWVhc3VyZWQgbWFwLCB3aGljaCB0cmFja3Mgc2NyZWVuXG4gICBjb29yZGluYXRlcyBmb3IgdGhlIHZpZXcsIGFuZCB0aGUgSW5mbyBtYXAgd2hpY2ggY29sbGVjdHMgc3RhdGljXG4gICBkYXRhIHN1Y2ggYXMgdHlwZSBpbmZvcm1hdGlvbikuIElkcyBhcmUgdXNlZCBmb3IgbWFueSB6aXBwZXIgYWN0aW9ucyxcbiAgIGluY2x1ZGluZyBqdW1wIHRvIGRlZmluaXRpb24sIGFuZCBhcmUgYWxzbyB1c2VkIHRvIGNvb3JkaW5hdGUgdGVybVxuICAgZGVjb3JhdGlvbnMuIEFjY2lkZW50YWxseSBjcmVhdGluZyBub24tdW5pcXVlIElEcyBjYW4gYmUgdGhlIGNhdXNlXG4gICBvZiBtYW55IG9kZCBpc3N1ZXMgZm9yIHppcHBlciBhY3Rpb25zIGFuZCBkaXNwbGF5LlxuXG4gICBCVVQgV0hZIElTIFRIRVJFIEEgX0xJU1RfIE9GIElEUz9cblxuICAgVGVjaG5pY2FsbHksIGVhY2ggdGlsZSBoYXMgYSBsaXN0IG9mIGlkcywgdG8gc3VwcG9ydCBuLWFyeSBmb3JtcyBsaWtlXG4gICB0dXBsZXM7IHRoZXJlIGFyZSByZXBfaWQgZnVuY3Rpb25zIGluIFRlcm0gdG8gY2Fub25pY2FsbHkgZXh0cmFjdFxuICAgc2luZ2xlIHJlcHJlc2VudGF0aXZlIGlkcyBmcm9tIHRoaXMgbGlzdCB3aGVyZSBhcHByb3ByaWF0ZS5cblxuICAgQ0FOIEkgVVNFIElEUyBJTiBEWU5BTUlDUz9cblxuICAgQ3VycmVudGx5LCBESEV4cHMgKGFzIHByb2R1Y2VkIGJ5IHRoZSBlbGFib3JhdG9yIGFuZCBwcm9kdWNlZC9jb25zdW1lZFxuICAgYnkgdGhlIGV2YWx1YXRvcikgZG8gbm90IGluIGdlbmVyYWwgcGVyc2lzdCBpZHM7IHRoZSBleGNlcHRpb25zIGFyZVxuICAgdGhpbmdzIGxpa2UgaG9sZXMgYW5kIHRlc3RzIHdoaWNoIGhhdmUgYWRkaXRpb25hbCBtZXRhZGF0YSB3aGljaCBpc1xuICAgYWNjdW11bGF0ZWQgZHV0aW5nIGV2YWx1YXRpb24uIFRoZXJlIGFyZSBtYW55IHVzZSBjYXNlcyBmb3IgdHJhY2tpbmdcbiAgIGlkcyBtb3JlIGdlbmVyYWxseSBkdXJpbmcgZXZhbHVhdGlvbiwgYnV0IGRvaW5nIHNvIGluIGEgcHJpbmNpcGxlZFxuICAgd2F5IGlzIGEgbGFyZ2Utc2NhbGUgY2hhbmdlIHdpdGggYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMuXG5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbmxldCBzZXhwX29mX3Q6IFV1aWRtLnQgPT4gU2V4cGxpYi5TZXhwLnQgPVxuICB0ID0+IFNleHBsaWIuU2V4cC5BdG9tKFV1aWRtLnRvX3N0cmluZyh0KSk7XG5cbmxldCB0X29mX3NleHA6IFNleHBsaWIuU2V4cC50ID0+IFV1aWRtLnQgPVxuICBmdW5cbiAgfCBTZXhwbGliLlNleHAuQXRvbShzKSA9PlxuICAgIFV1aWRtLm9mX3N0cmluZyhzKVxuICAgIHw+IFV0aWwuT3B0VXRpbC5nZXQoXyA9PiBmYWlsd2l0aChcIlV1aWRtLnRfb2Zfc2V4cDogbm90IHZhbGlkIFVVSUQgKDEpXCIpKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3NleHA6IG5vdCB2YWxpZCBVVUlEICgyKVwiKTtcblxubGV0IHlvanNvbl9vZl90OiBVdWlkbS50ID0+IFlvanNvbi5TYWZlLnQgPSB0ID0+IGBTdHJpbmcoVXVpZG0udG9fc3RyaW5nKHQpKTtcblxubGV0IHRfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+IFV1aWRtLnQgPVxuICBmdW5cbiAgfCBgU3RyaW5nKHMpID0+XG4gICAgVXVpZG0ub2Zfc3RyaW5nKHMpXG4gICAgfD4gVXRpbC5PcHRVdGlsLmdldChfID0+XG4gICAgICAgICBmYWlsd2l0aChcIlV1aWRtLnRfb2ZfeW9qc29uOiBub3QgdmFsaWQgVVVJRCAoMSlcIilcbiAgICAgICApXG4gIHwgXyA9PiBmYWlsd2l0aChcIlV1aWRtLnRfb2ZfeW9qc29uOiBub3QgdmFsaWQgVVVJRCAoMilcIik7XG5cbnR5cGUgdCA9IFV1aWRtLnQ7XG5cbmxldCBtazogdW5pdCA9PiB0ID0gVXVpZG0udjRfZ2VuKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKTtcblxubGV0IGNvbXBhcmU6ICh0LCB0KSA9PiBpbnQgPSBVdWlkbS5jb21wYXJlO1xubGV0IHRvX3N0cmluZzogKH51cHBlcjogYm9vbD0/LCB0KSA9PiBzdHJpbmcgPSBVdWlkbS50b19zdHJpbmc7XG5sZXQgb2Zfc3RyaW5nOiAofnBvczogaW50PT8sIHN0cmluZykgPT4gb3B0aW9uKHQpID0gVXVpZG0ub2Zfc3RyaW5nO1xubGV0IHBwOiAoRm9ybWF0LmZvcm1hdHRlciwgdCkgPT4gdW5pdCA9XG4gIChmLCBpZCkgPT5cbiAgICBGb3JtYXQuZnByaW50ZihcbiAgICAgIGYsXG4gICAgICBcIk9wdGlvbi5nZXQoSGF6M2xjb3JlLklkLm9mX3N0cmluZyhcXFwiJXNcXFwiKSlcIixcbiAgICAgIHRvX3N0cmluZyhpZCksXG4gICAgKTtcbmxldCBzaG93ID0gaWQgPT5cbiAgRm9ybWF0LnNwcmludGYoXG4gICAgXCJPcHRpb24uZ2V0KEhhejNsY29yZS5JZC5vZl9zdHJpbmcoXFxcIiVzXFxcIikpXCIsXG4gICAgdG9fc3RyaW5nKGlkKSxcbiAgKTtcblxuW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbnR5cGUgYmluZGluZygndikgPSAodCwgJ3YpO1xuXG5tb2R1bGUgTWFwID0ge1xuICBpbmNsdWRlIE1hcC5NYWtlKFV1aWRtKTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiBTZXhwbGliLlN0ZC5zZXhwX29mX2xpc3Qoc2V4cF9vZl9iaW5kaW5nKHNleHBfb2ZfdikpO1xuXG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwLCBzZXhwKSA9PlxuICAgIHNleHBcbiAgICB8PiBTZXhwbGliLlN0ZC5saXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBvZl9zZXE7XG5cbiAgbGV0IHlvanNvbl9vZl90ID0gKHlvanNvbl9vZl92LCBtYXApID0+XG4gICAgbWFwIHw+IGJpbmRpbmdzIHw+IHlvanNvbl9vZl9saXN0KHlvanNvbl9vZl9iaW5kaW5nKHlvanNvbl9vZl92KSk7XG5cbiAgbGV0IHRfb2ZfeW9qc29uID0gKHZfb2ZfeW9qc29uLCBqc29uKSA9PlxuICAgIGpzb25cbiAgICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBvZl9zZXE7XG5cbiAgbGV0IHBwID0gKHBwX3YsIGZtdCwgbWFwKSA9PlxuICAgIGJpbmRpbmdzKG1hcClcbiAgICB8PiBMaXN0Lml0ZXIoKChrLCB2KSkgPT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmKGZtdCwgXCIlYSAtPiAlYVxcblwiLCBwcCwgaywgcHBfdiwgdilcbiAgICAgICApO1xufTtcbmxldCBpbnZhbGlkOiB0ID1cbiAgXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIiB8PiBVdWlkbS5vZl9zdHJpbmcgfD4gT3B0aW9uLmdldDtcblxuLyogU3BlY2lhbCBpZCB1c2VkIHRvIGRlbm90ZSBhIHRyaXZpYWwgKGVtcHR5KSBmdW5jdGlvbiBhcHBsaWNhdGlvbiAqL1xubGV0IG51bGxhcnlfYXBfZmxhZzogdCA9XG4gIFwiREVBREJFRUYtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIgfD4gVXVpZG0ub2Zfc3RyaW5nIHw+IE9wdGlvbi5nZXQ7XG5cbmxldCBpc19udWxsYXJ5X2FwX2ZsYWcgPSAoaWRzOiBsaXN0KHQpKSA9PlxuICBzd2l0Y2ggKGlkcykge1xuICB8IFtpZF0gd2hlbiBpZCA9PSBudWxsYXJ5X2FwX2ZsYWcgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcblxubW9kdWxlIFVmOiB7XG4gIHR5cGUgc3RvcmUoJ2EpO1xuICBsZXQgaW5pdDogdW5pdCA9PiBzdG9yZShfKTtcbiAgbGV0IGFkZDogKHQsICdhLCBzdG9yZSgnYSkpID0+IHVuaXQ7XG4gIGxldCBnZXQ6ICh0LCBzdG9yZSgnYSkpID0+ICdhO1xuICBsZXQgZ2V0X29wdDogKHQsIHN0b3JlKCdhKSkgPT4gb3B0aW9uKCdhKTtcbiAgbGV0IHNldDogKHQsICdhLCBzdG9yZSgnYSkpID0+IHVuaXQ7XG4gIGxldCBtZXJnZTogKCgnYSwgJ2EpID0+ICdhLCB0LCB0LCBzdG9yZSgnYSkpID0+IHVuaXQ7XG59ID0ge1xuICBtb2R1bGUgTSA9IFVuaW9uRmluZC5NYWtlKFVuaW9uRmluZC5TdG9yZVZlY3Rvcik7XG4gIHR5cGUgc3RvcmUoJ2EpID0ge1xuICAgIHJlZnM6IHJlZihNYXAudChNLnJyZWYoJ2EpKSksXG4gICAgc3RvcmU6IE0uc3RvcmUoJ2EpLFxuICB9O1xuICBsZXQgaW5pdCA9ICgpID0+IHtyZWZzOiByZWYoTWFwLmVtcHR5KSwgc3RvcmU6IE0ubmV3X3N0b3JlKCl9O1xuICBsZXQgcnJlZiA9IChpZCwgcykgPT4gTWFwLmZpbmQoaWQsIHMucmVmc14pO1xuICBsZXQgYWRkID0gKGlkLCBhLCBzKSA9PlxuICAgIHN3aXRjaCAoTWFwLmZpbmRfb3B0KGlkLCBzLnJlZnNeKSkge1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHIgPSBNLm1ha2Uocy5zdG9yZSwgYSk7XG4gICAgICBzLnJlZnMgOj0gTWFwLmFkZChpZCwgciwgcy5yZWZzXik7XG4gICAgfCBTb21lKF8pID0+ICgpXG4gICAgfTtcbiAgbGV0IGdldCA9IChpZCwgcykgPT4gTS5nZXQocy5zdG9yZSwgTS5maW5kKHMuc3RvcmUsIHJyZWYoaWQsIHMpKSk7XG4gIGxldCBnZXRfb3B0ID0gKGlkLCBzKSA9PlxuICAgIE1hcC5maW5kX29wdChpZCwgcy5yZWZzXikgfD4gT3B0aW9uLm1hcChfID0+IGdldChpZCwgcykpO1xuICBsZXQgc2V0ID0gKGlkLCBhLCBzKSA9PiBNLnNldChzLnN0b3JlLCBNLmZpbmQocy5zdG9yZSwgcnJlZihpZCwgcykpLCBhKTtcblxuICBsZXQgbWVyZ2UgPSAoZiwgaWQsIGlkJywgcykgPT5cbiAgICBpZ25vcmUoTS5tZXJnZShzLnN0b3JlLCBmLCBycmVmKGlkLCBzKSwgcnJlZihpZCcsIHMpKSk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuLyoqXG4gKiBoaWdoZXIgcHJlY2VkZW5jZSBtZWFucyBsb3dlciBpbnQgcmVwcmVzZW50YXRpb25cbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gaW50O1xuXG5sZXQgbWF4OiB0ID0gMDtcblxubGV0IHVucXVvdGUgPSAxO1xubGV0IGFwID0gMjtcbmxldCBuZWcgPSAzO1xubGV0IHBvd2VyID0gNDtcbmxldCBtdWx0ID0gNTtcbmxldCBwbHVzID0gNjtcbmxldCBjb25zID0gNztcbmxldCBjb25jYXQgPSA4O1xubGV0IGVxcyA9IDk7XG5sZXQgYW5kXyA9IDEwO1xubGV0IG9yXyA9IDExO1xubGV0IGFubiA9IDEyO1xubGV0IGlmXyA9IDEzO1xubGV0IGZ1bl8gPSAxNDtcbmxldCBwcm9kID0gMTU7XG5sZXQgc2VtaSA9IDE2O1xubGV0IGxldF8gPSAxNztcbmxldCBmaWx0ZXIgPSAxODtcbmxldCBydWxlX2FyciA9IDE5O1xubGV0IHJ1bGVfcHJlID0gMjA7XG5sZXQgcnVsZV9zZXAgPSAyMTtcbmxldCBjYXNlXyA9IDIyO1xuXG5sZXQgbWluID0gMjM7XG5cbmxldCBjb21wYXJlID0gKHAxOiB0LCBwMjogdCk6IGludCA9PlxuICAoLTEpICogSW50LmNvbXBhcmUoKHAxIDo+IGludCksIChwMiA6PiBpbnQpKTtcbi8vIGxldCBtaW4gPSAocDE6IHQsIHAyOiB0KTogdCA9PiBtYXgocDEsIHAyKTtcblxubGV0IGFzc29jaWF0aXZpdHlfbWFwOiBJbnRNYXAudChEaXJlY3Rpb24udCkgPVxuICBbXG4gICAgKG11bHQsIERpcmVjdGlvbi5MZWZ0KSxcbiAgICAocGx1cywgTGVmdCksXG4gICAgKHBvd2VyLCBSaWdodCksXG4gICAgKGNvbnMsIFJpZ2h0KSxcbiAgICAoY29uY2F0LCBSaWdodCksXG4gICAgKGFubiwgTGVmdCksXG4gICAgKGVxcywgTGVmdCksXG4gIF1cbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gSW50TWFwLm9mX3NlcTtcblxubGV0IGFzc29jaWF0aXZpdHkgPSAocDogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgSW50TWFwLmZpbmRfb3B0KHAsIGFzc29jaWF0aXZpdHlfbWFwKTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgQW55XG4gIHwgTnVsXG4gIHwgUGF0XG4gIHwgVHlwXG4gIHwgVFBhdFxuICB8IFJ1bFxuICB8IEV4cDtcblxubGV0IHJvb3QgPSBFeHA7XG5cbmxldCBhbGwgPSBbQW55LCBOdWwsIFBhdCwgVHlwLCBSdWwsIEV4cCwgVFBhdF07XG5cbmxldCBjb25zaXN0ZW50ID0gKHMsIHMnKSA9PlxuICBzd2l0Y2ggKHMsIHMnKSB7XG4gIHwgKEFueSwgXylcbiAgfCAoXywgQW55KSA9PiB0cnVlXG4gIHwgKE51bCwgXylcbiAgfCAoXywgTnVsKSA9PiBmYWxzZVxuICB8IF8gPT4gcyA9PSBzJ1xuICB9O1xuXG5sZXQgdG9fc3RyaW5nID1cbiAgZnVuXG4gIHwgQW55ID0+IFwiQW55XCJcbiAgfCBOdWwgPT4gXCJOdWxcIlxuICB8IFBhdCA9PiBcIlBhdFwiXG4gIHwgVFBhdCA9PiBcIlRQYXRcIlxuICB8IFR5cCA9PiBcIlR5cFwiXG4gIHwgUnVsID0+IFwiUnVsXCJcbiAgfCBFeHAgPT4gXCJFeHBcIjtcblxubGV0IHRvX3N0cmluZ192ZXJib3NlID1cbiAgZnVuXG4gIHwgQW55ID0+IFwiYW55XCJcbiAgfCBOdWwgPT4gXCJudWxsXCJcbiAgfCBQYXQgPT4gXCJwYXR0ZXJuXCJcbiAgfCBUUGF0ID0+IFwidHlwZSBwYXR0ZXJuXCJcbiAgfCBUeXAgPT4gXCJ0eXBlXCJcbiAgfCBSdWwgPT4gXCJydWxlXCJcbiAgfCBFeHAgPT4gXCJleHByZXNzaW9uXCI7XG4iLCJtb2R1bGUgU2hhcGUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IENvbnZleFxuICAgIHwgQ29uY2F2ZShQcmVjZWRlbmNlLnQpO1xuXG4gIGxldCBjb25jYXZlID0gKH5wPT8sICgpKSA9PiB7XG4gICAgbGV0IHAgPVxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IE5vbmUgPT4gUHJlY2VkZW5jZS5taW5cbiAgICAgIHwgU29tZShwKSA9PiBwXG4gICAgICB9O1xuICAgIENvbmNhdmUocCk7XG4gIH07XG5cbiAgbGV0IGZpdHMgPSAobDogdCwgcjogdCkgPT5cbiAgICBzd2l0Y2ggKGwsIHIpIHtcbiAgICB8IChDb252ZXgsIENvbmNhdmUoXykpXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PiB0cnVlXG4gICAgfCAoQ29udmV4LCBDb252ZXgpXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29uY2F2ZShfKSkgPT4gZmFsc2VcbiAgICB9O1xuXG4gIGxldCBmaXR0aW5nID1cbiAgICBmdW5cbiAgICB8IENvbnZleCA9PiBjb25jYXZlKClcbiAgICB8IENvbmNhdmUoXykgPT4gQ29udmV4O1xuXG4gIGxldCBmbGlwID1cbiAgICBmdW5cbiAgICB8IENvbnZleCA9PiBjb25jYXZlKClcbiAgICB8IENvbmNhdmUoXykgPT4gQ29udmV4O1xuXG4gIGxldCBhYnNvbHV0ZSA9IChkOiBVdGlsLkRpcmVjdGlvbi50LCBzOiB0KTogVXRpbC5EaXJlY3Rpb24udCA9PlxuICAgIC8qIFRoZSBkaXJlY3Rpb24gYW4gcy1zaGFwZWQgbmliIG9uIHRoZSBkLWhhbmQgc2lkZSBpcyBmYWNpbmcgKi9cbiAgICBzd2l0Y2ggKHMpIHtcbiAgICB8IENvbnZleCA9PiBkXG4gICAgfCBDb25jYXZlKF8pID0+IFV0aWwuRGlyZWN0aW9uLnRvZ2dsZShkKVxuICAgIH07XG5cbiAgbGV0IHJlbGF0aXZlID0gKG5pYjogVXRpbC5EaXJlY3Rpb24udCwgc2lkZTogVXRpbC5EaXJlY3Rpb24udCk6IHQgPT5cbiAgICBuaWIgPT0gc2lkZSA/IENvbnZleCA6IGNvbmNhdmUoKTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2hhcGU6IFNoYXBlLnQsXG4gIHNvcnQ6IFNvcnQudCxcbn07XG5cbmxldCBzaGFwZSA9IG4gPT4gbi5zaGFwZTtcblxubGV0IGZpdHMgPSAobDogdCwgcjogdCk6IGJvb2wgPT5cbiAgbC5zb3J0ID09IHIuc29ydCAmJiBTaGFwZS5maXRzKGwuc2hhcGUsIHIuc2hhcGUpO1xuXG5sZXQgZml0dGluZyA9IChuaWI6IHQpOiB0ID0+IHsuLi5uaWIsIHNoYXBlOiBTaGFwZS5maXR0aW5nKG5pYi5zaGFwZSl9O1xuXG5sZXQgZmxpcCA9IChuaWI6IHQpID0+IHsuLi5uaWIsIHNoYXBlOiBTaGFwZS5mbGlwKG5pYi5zaGFwZSl9O1xuXG4vLyBsZXQgdG9nZ2xlID0gKG5pYjogdCkgPT4ge1xuLy8gICAuLi5uaWIsXG4vLyAgIG9yaWVudGF0aW9uOiBEaXJlY3Rpb24udG9nZ2xlKG5pYi5vcmllbnRhdGlvbiksXG4vLyB9O1xuXG4vLyBsZXQgc29ydF9jb25zaXN0ZW50ID0gKG5pYjogdCwgbmliJzogdCkgPT4gbmliLnNvcnQgPT0gbmliJy5zb3J0O1xuXG4vLyBsZXQgb2Zfc29ydCA9IHNvcnQgPT4gW1xuLy8gICB7c29ydCwgb3JpZW50YXRpb246IExlZnR9LFxuLy8gICB7c29ydCwgb3JpZW50YXRpb246IFJpZ2h0fSxcbi8vIF07XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2hhcGUgPVxuICB8IENvbnZleFxuICB8IENvbmNhdmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgaWQ6IElkLnQsXG4gIHNoYXBlLFxufTtcblxubGV0IGlkID0gZyA9PiBnLmlkO1xuXG5sZXQgc2hhcGVzID0gZyA9PlxuICBzd2l0Y2ggKGcuc2hhcGUpIHtcbiAgfCBDb252ZXggPT4gTmliLlNoYXBlLihDb252ZXgsIENvbnZleClcbiAgfCBDb25jYXZlID0+IE5pYi5TaGFwZS4oQ29uY2F2ZShQcmVjZWRlbmNlLm1pbiksIENvbmNhdmUoUHJlY2VkZW5jZS5taW4pKVxuICB9O1xuXG4vLyBhc3N1bWVzIHNhbWUgc2hhcGUgb24gYm90aCBzaWRlc1xubGV0IG1rX2ZpdHNfc2hhcGUgPSAoczogTmliLlNoYXBlLnQpOiB0ID0+IHtcbiAgbGV0IGlkID0gSWQubWsoKTtcbiAgbGV0IHNoYXBlID1cbiAgICBzd2l0Y2ggKHMpIHtcbiAgICB8IENvbnZleCA9PiBDb25jYXZlXG4gICAgfCBDb25jYXZlKF8pID0+IENvbnZleFxuICAgIH07XG4gIHtpZCwgc2hhcGV9O1xufTtcbi8vbGV0IG1rX2ZpdHMgPSAoKGwsIHIpOiBOaWJzLnNoYXBlcyk6IG9wdGlvbih0KSA9PlxuLy8gIE5pYi5TaGFwZS5maXRzKGwsIHIpID8gTm9uZSA6IFNvbWUobWtfZml0c19zaGFwZShsKSk7XG5cbmxldCBmaXRzX3NoYXBlID0gKGc6IHQsIHM6IE5pYi5TaGFwZS50KSA9PlxuICBzd2l0Y2ggKGcuc2hhcGUsIHMpIHtcbiAgfCAoQ29udmV4LCBDb252ZXgpXG4gIHwgKENvbmNhdmUsIENvbmNhdmUoXykpID0+IGZhbHNlXG4gIHwgKENvbnZleCwgQ29uY2F2ZShfKSlcbiAgfCAoQ29uY2F2ZSwgQ29udmV4KSA9PiB0cnVlXG4gIH07XG5cbmxldCBmaXRzID0gKGc6IHQsIGcnOiB0KSA9PlxuICBzd2l0Y2ggKGcuc2hhcGUsIGcnLnNoYXBlKSB7XG4gIHwgKENvbnZleCwgQ29udmV4KVxuICB8IChDb25jYXZlLCBDb25jYXZlKSA9PiBmYWxzZVxuICB8IChDb252ZXgsIENvbmNhdmUpXG4gIHwgKENvbmNhdmUsIENvbnZleCkgPT4gdHJ1ZVxuICB9O1xuXG5sZXQgbWVyZ2UgPSAoZ3M6IGxpc3QodCkpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChncykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQodGwpKSB7XG4gICAgfCBOb25lID0+IFNvbWUoaGQpXG4gICAgfCBTb21lKChfLCBmdCkpID0+IGhkLnNoYXBlID09IGZ0LnNoYXBlID8gU29tZShoZCkgOiBOb25lXG4gICAgfVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gbWFrZSBhbiBlbnVtXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbm1vZHVsZSBJbmRleCA9IHtcbiAgdHlwZSB0ID0gaW50O1xufTtcblxubGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGg7XG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlO1xubGV0IHJtX250aCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfbnRoO1xubGV0IHJtX2xhc3QgPSBVdGlsLlN0cmluZ1V0aWwucmVtb3ZlX2xhc3Q7XG5sZXQgcm1fZmlyc3QgPSBVdGlsLlN0cmluZ1V0aWwucmVtb3ZlX2ZpcnN0O1xubGV0IHNwbGl0X250aCA9IFV0aWwuU3RyaW5nVXRpbC5zcGxpdF9udGg7XG5sZXQgaW5zZXJ0X250aCA9IFV0aWwuU3RyaW5nVXRpbC5pbnNlcnRfbnRoO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogQSBsYWJlbCBpcyB0aGUgdGV4dHVhbCBleHByZXNzaW9uIG9mIGEgZm9ybSdzIGRlbGltaXRlcnMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoVG9rZW4udCk7XG5leGNlcHRpb24gRW1wdHlfbGFiZWw7XG5cbmxldCBsZW5ndGg6IHQgPT4gaW50ID0gTGlzdC5sZW5ndGg7XG5cbmxldCByZXY6IHQgPT4gdCA9IExpc3QucmV2O1xuXG5sZXQgaGRfdGwgPSAobGJsOiB0KTogKFRva2VuLnQsIGxpc3QoVG9rZW4udCkpID0+XG4gIHN3aXRjaCAobGJsKSB7XG4gIHwgW10gPT4gcmFpc2UoRW1wdHlfbGFiZWwpXG4gIHwgW2hkLCAuLi50bF0gPT4gKGhkLCB0bClcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IChOaWIudCwgTmliLnQpO1xuXG5bQGRlcml2aW5nIHNob3ddXG50eXBlIHNoYXBlcyA9IChOaWIuU2hhcGUudCwgTmliLlNoYXBlLnQpO1xuXG5sZXQgZmxpcCA9ICgobCwgcik6IHQpID0+IChyLCBsKTtcblxubGV0IG9mX2hvbGUgPSBzb3J0ID0+IE5pYi4oe3NvcnQsIHNoYXBlOiBDb252ZXh9LCB7c29ydCwgc2hhcGU6IENvbnZleH0pO1xuXG5sZXQgZml0dGluZyA9ICgobCwgcik6IHQpID0+IChOaWIuZml0dGluZyhsKSwgTmliLmZpdHRpbmcocikpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBvdXQ6IFNvcnQudCxcbiAgaW5fOiBsaXN0KFNvcnQudCksXG4gIG5pYnM6IE5pYnMudCxcbn07XG5cbmxldCBmbGlwX25pYnMgPSBtID0+IHsuLi5tLCBuaWJzOiBOaWJzLmZsaXAobS5uaWJzKX07XG5cbmxldCBta19vcCA9IChvdXQsIGluXykgPT4ge1xuICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAge291dCwgaW5fLCBuaWJzOiAobiwgbil9O1xufTtcbmxldCBta19wcmUgPSAocCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IG91dH07XG4gIGxldCByID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogb3V0fTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcbmxldCBta19wb3N0ID0gKHAsIG91dCwgaW5fKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogb3V0fTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IG91dH07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfYmluID0gKH5sPT8sIH5yPT8sIHAsIG91dCwgaW5fKSA9PiB7XG4gIGxldCBsID0gT3B0aW9uLnZhbHVlKGwsIH5kZWZhdWx0PW91dCk7XG4gIGxldCByID0gT3B0aW9uLnZhbHVlKHIsIH5kZWZhdWx0PW91dCk7XG4gIGxldCBuaWIgPSBzb3J0ID0+IE5pYi57c29ydCwgc2hhcGU6IENvbmNhdmUocCl9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChuaWIobCksIG5pYihyKSl9O1xufTtcblxuLy8gZm9ybXMgd2hlcmUgdGlwcyBjYW4gYmUgZGlmZmVyZW50IHRoYW4gb3V0IHNvcnRcbmxldCBta19wcmUnID0gKHAsIG91dCwgc29ydF9sLCBpbl8sIHNvcnRfcikgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogc29ydF9sfTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X3J9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX3Bvc3QnID0gKHAsIG91dCwgc29ydF9sLCBpbl8sIHNvcnRfcikgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfbH07XG4gIGxldCByID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBzb3J0X3J9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX2JpbicgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogc29ydF9sfTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X3J9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xuXG5sZXQgbmlicyA9ICh+aW5kZXg9PywgbW9sZDogdCk6IE5pYnMudCA9PlxuICBzd2l0Y2ggKGluZGV4KSB7XG4gIHwgTm9uZSA9PiBtb2xkLm5pYnNcbiAgfCBTb21lKGkpID0+XG4gICAgbGV0IChsLCByKSA9IG1vbGQubmlicztcbiAgICBsZXQgaW5fID0gbW9sZC5pbl87XG4gICAgbGV0IGwgPVxuICAgICAgaSA9PSAwID8gbCA6IE5pYi57c2hhcGU6IFNoYXBlLmNvbmNhdmUoKSwgc29ydDogTGlzdC5udGgoaW5fLCBpIC0gMSl9O1xuICAgIGxldCByID1cbiAgICAgIGkgPT0gTGlzdC5sZW5ndGgoaW5fKVxuICAgICAgICA/IHIgOiBOaWIue3NoYXBlOiBTaGFwZS5jb25jYXZlKCksIHNvcnQ6IExpc3QubnRoKGluXywgaSl9O1xuICAgIChsLCByKTtcbiAgfTtcblxubGV0IG5pYl9zaGFwZXMgPSAofmluZGV4PT8sIG1vbGQ6IHQpOiBOaWJzLnNoYXBlcyA9PiB7XG4gIGxldCAobmliX2wsIG5pYl9yKSA9IG5pYnMofmluZGV4PywgbW9sZCk7XG4gIChuaWJfbC5zaGFwZSwgbmliX3Iuc2hhcGUpO1xufTtcblxubW9kdWxlIE1hcCA9IHtcbiAgdHlwZSBtb2xkID0gdDtcbiAgaW5jbHVkZSBJZC5NYXA7XG4gIHR5cGUgbm9ucmVjIHQgPSBJZC5NYXAudChsaXN0KG1vbGQpKTtcbn07XG5cbmxldCBvZl9ncm91dDogKEdyb3V0LnQsIFNvcnQudCkgPT4gdCA9XG4gIChnLCBzb3J0KSA9PiB7XG4gICAgbmliczpcbiAgICAgIC8vIFRPRE8oZCk6IHJldmlzaXQgdGhpcyB3aGVuIHJlZm9ybXVsYXRpbmcgbW9sZHNcbiAgICAgIHN3aXRjaCAoZy5zaGFwZSkge1xuICAgICAgfCBDb252ZXggPT5cbiAgICAgICAgbGV0IG4gPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnR9O1xuICAgICAgICAobiwgbik7XG4gICAgICB8IENvbmNhdmUgPT5cbiAgICAgICAgbGV0IG4gPSBOaWIue3NoYXBlOiBDb25jYXZlKFByZWNlZGVuY2UubWluKSwgc29ydH07XG4gICAgICAgIChuLCBuKTtcbiAgICAgIH0sXG4gICAgb3V0OiBzb3J0LFxuICAgIGluXzogW10sXG4gIH07XG5cbmxldCBvZl9zZWNvbmRhcnkgPSAobDogTmliLnQpID0+IHtcbiAgbmliczogKE5pYi5mbGlwKGwpLCBsKSxcbiAgb3V0OiBsLnNvcnQsXG4gIGluXzogW10sXG59O1xuXG5sZXQgZml0c19zaGFwZSA9IChkOiBEaXJlY3Rpb24udCwgczogTmliLlNoYXBlLnQsIG06IHQpOiBib29sID0+IHtcbiAgbGV0IHMnID0gRGlyZWN0aW9uLmNob29zZShkLCBuaWJfc2hhcGVzKG0pKTtcbiAgTmliLlNoYXBlLmZpdHMocywgcycpO1xufTtcblxubGV0IGNvbnNpc3RlbnRfc2hhcGVzID0gKG1zOiBsaXN0KHQpKSA9PlxuICBtc1xuICB8PiBMaXN0Lm1hcChuaWJfc2hhcGVzKVxuICB8PiBMaXN0LnNwbGl0XG4gIHw+IFR1cGxlVXRpbC5tYXAyKExpc3RVdGlsLnNpbmdsZV9lbGVtKTtcblxubGV0IGlzX2luZml4X29wID0gKG1vbGQ6IHQpOiBib29sID0+XG4gIHN3aXRjaCAobW9sZC5uaWJzLCBtb2xkLmluXykge1xuICB8ICgoe3NoYXBlOiBDb25jYXZlKF8pLCBffSwge3NoYXBlOiBDb25jYXZlKF8pLCBffSksIFtdKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgY2hldnJvbiA9IChzb3J0OiBTb3J0LnQsIHA6IFByZWNlZGVuY2UudCwgZDogVXRpbC5EaXJlY3Rpb24udCk6IHQgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgUmlnaHQgPT4gbWtfcG9zdChwLCBzb3J0LCBbXSlcbiAgfCBMZWZ0ID0+IG1rX3ByZShwLCBzb3J0LCBbXSlcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIE1vbGQ7XG5tb2R1bGUgUCA9IFByZWNlZGVuY2U7XG5cbi8qIEZPUk1cbiAgIFRoaXMgbW9kdWxlIGRldGVybWluZXMgdGhlIHN5bnRhY3RpYyBleHRlbnQgb2YgdGhlIGxhbmd1YWdlOyB0aGVcbiAgIGVudGlyZSBTeW50YXggbW9kdWxlIGlzIGRyaXZlbiBieSB0aGUgYmVsb3cgZGVmaW5pdGlvbnMuIEFkZGluZ1xuICAgYSBuZXcgc3ludGFjdGljIGZvcm0gaXMgc2ltcGx5IGEgbWF0dGVyIG9mIGFkZGluZyBhIG5ldyBsaW5lIHRvIGVpdGhlclxuICAgdGhlICdjb252ZXhfbW9ub3MnIHRhYmxlLCBmb3Igc2luZ2xlLXRva2VuIGZvcm1zLCBvciB0aGUgJ2Zvcm1zJ1xuICAgdGFibGUsIGZvciBjb21wb3VuZCBmb3Jtcy5cbiAgIFRoZSB3cmFwcGluZyBmdW5jdGlvbnMgc2VlbiBpbiBib3RoIG9mIHRob3NlIHRhYmxlcyBkZXRlcm1pbmUgdGhlXG4gICBzaGFwZSwgcHJlY2VkZW5jZSwgYW5kIGV4cGFuc2lvbiBiZWhhdmlvciBvZiB0aGUgZm9ybS4gKi9cblxubGV0IHJlZ2V4cCA9IChyLCBzKSA9PlxuICBKc19vZl9vY2FtbC5SZWdleHAuc3RyaW5nX21hdGNoKEpzX29mX29jYW1sLlJlZ2V4cC5yZWdleHAociksIHMsIDApXG4gIHw+IE9wdGlvbi5pc19zb21lO1xuXG4vKiBBIGxhYmVsIGlzIHRoZSB0ZXh0dWFsIGV4cHJlc3Npb24gb2YgYSBmb3JtJ3MgZGVsaW1pdGVycyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBsYWJlbCA9IGxpc3QoVG9rZW4udCk7XG5cbi8qIFRoZSBjb25zdHJ1Y3Rpb24gb2YgYSBjb21wb3VuZCBmb3JtcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGluc2VydGluZ1xuICAgb25lIG9mIGl0cyBkZWxpbWl0ZXJzIHRocm91Z2ggYSBwcm9jZXNzIGNhbGxlZCBleHBhbnNpb24uIEV4cGFuc2lvblxuICAgY2FuIGVpdGhlciBvY2N1ciAoSW5zdGFudClseSB1cG9uIGRlbGltaXRlciBjcmVhdGlvbiwgb3IgYmUgKERlbGF5ZWQpXG4gICB1bnRpbCBhZnRlciBhIHRva2VuIGJvdW5kYXJ5IGV2ZW50IGlzIHRyaWdnZXJlZCAoc2F5IGJ5IHByZXNzaW5nXG4gICBzcGFjZSBhZnRlciBlbnRlcmluZyAnbGV0JykuIFRoZSAoU3RhdGljKSBjYXNlIGlzIHVzZWQgZm9yIG1vbm9zXG4gICBha2Egc2luZ2xlLXRva2VuIGZvcm1zLiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cGFuc2lvbl90aW1lID1cbiAgfCBTdGF0aWNcbiAgfCBJbnN0YW50XG4gIHwgRGVsYXllZDtcblxuLyogRXhwYW5zaW9uIGNhbiBiZSB0cmlnZ2VyZWQgYnkgZWl0aGVyL2JvdGggdGhlIGZpcnN0IG9yIGxhc3QgdG9rZW5cbiAgIG9mIGEgZm9ybSwgcmVwcmVzZW50ZWQgaGVyZSBieSB0aGUgZmlyc3QvbGFzdCBlbGVtZW50cyBvZiB0aGlzIHBhaXIuICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cGFuc2lvbiA9IChleHBhbnNpb25fdGltZSwgZXhwYW5zaW9uX3RpbWUpO1xuXG4vKiBBIGxhYmVsLCBhIG1vbGQsIGFuZCBleHBhbnNpb24gYmVoYXZpb3IgdG9nZXRoZXIgZGV0ZXJtaW5lIGEgZm9ybS4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgbGFiZWwsXG4gIGV4cGFuc2lvbixcbiAgbW9sZDogTW9sZC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBiYWRfdG9rZW5fY2xzID1cbiAgfCBPdGhlclxuICB8IEJhZEludDtcblxubGV0IG1rID0gKGV4cGFuc2lvbiwgbGFiZWwsIG1vbGQpID0+IHtsYWJlbCwgbW9sZCwgZXhwYW5zaW9ufTtcblxuLyogQWJicmV2aWF0aW9ucyBmb3IgZXhwYW5zaW9uIGJlaGF2aW9ycyAqL1xubGV0IHNzOiBleHBhbnNpb24gPSAoU3RhdGljLCBTdGF0aWMpO1xubGV0IGlpOiBleHBhbnNpb24gPSAoSW5zdGFudCwgSW5zdGFudCk7XG5sZXQgaXM6IGV4cGFuc2lvbiA9IChJbnN0YW50LCBTdGF0aWMpO1xubGV0IGRzOiBleHBhbnNpb24gPSAoRGVsYXllZCwgU3RhdGljKTtcblxubGV0IG1rX2luZml4ID0gKHQ6IFRva2VuLnQsIHNvcnQ6IFNvcnQudCwgcHJlYykgPT5cbiAgbWsoc3MsIFt0XSwgbWtfYmluKHByZWMsIHNvcnQsIFtdKSk7XG5cbi8qIFRva2VuIFJlY29nbml0aW9uIFByZWRpY2F0ZXMgKi9cblxuLyogQS4gU2Vjb25kYXJ5IE5vdGF0aW9uIChDb21tZW50cywgV2hpdGVzcGFjZSwgZXRjLikgICovXG5sZXQgc3BhY2UgPSBcIiBcIjtcbi8qIEhBQ0soYW5kcmV3KTogVXNpbmcg4o+OIGNoYXIgdG8gcmVwcmVzZW50IGxpbmVicmVhayB0byBhdm9pZCByZWdleHBcbiAgIGlzc3VlcyB3aXRoIHVzaW5nIFxcbi4gU29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgcmVnZXhwcyBiZXR0ZXJcbiAgIHNob3VsZCBmaXggdGhpcy4gKi9cbmxldCBsaW5lYnJlYWsgPSBcIuKPjlwiO1xubGV0IGNvbW1lbnRfcmVnZXhwID0gXCJeI1teI+KPjl0qIyRcIjsgLyogTXVsdGlsaW5lIGNvbW1lbnRzIG5vdCBzdXBwb3J0ZWQgKi9cbmxldCBpc19jb21tZW50ID0gdCA9PiByZWdleHAoY29tbWVudF9yZWdleHAsIHQpIHx8IHQgPT0gXCIjXCI7XG5sZXQgaXNfY29tbWVudF9kZWxpbSA9IHQgPT4gdCA9PSBcIiNcIjtcbmxldCBpc19zZWNvbmRhcnkgPSB0ID0+XG4gIExpc3QubWVtKHQsIFtzcGFjZSwgbGluZWJyZWFrXSkgfHwgcmVnZXhwKGNvbW1lbnRfcmVnZXhwLCB0KTtcblxuLyogU1RSSU5HUzogc3BlY2lhbC1jYXNlIHN5bnRheCAqL1xuXG4vKiBpc19zdHJpbmc6IGxhc3QgY2xhdXNlIGlzIGEgc29tZXdoYXQgaGFja3kgd2F5IG9mIG1ha2luZyBzdXJlXG4gICB0aGVyZSBhcmUgYXQgbW9zdCB0d28gcXVvdGVzLCBpbiBvcmRlciB0byBwcmV2ZW50IG1lcmdlcyAqL1xubGV0IGlzX3N0cmluZyA9IHQgPT5cbiAgcmVnZXhwKFwiXlxcXCJbXuKPjl0qXFxcIiRcIiwgdClcbiAgJiYgTGlzdC5sZW5ndGgoU3RyaW5nLnNwbGl0X29uX2NoYXIoJ1wiJywgdCkpIDwgNDtcbmxldCBzdHJpbmdfZGVsaW0gPSBcIlxcXCJcIjtcbmxldCBlbXB0eV9zdHJpbmcgPSBzdHJpbmdfZGVsaW0gKysgc3RyaW5nX2RlbGltO1xubGV0IGlzX3N0cmluZ19kZWxpbSA9ICg9PSkoc3RyaW5nX2RlbGltKTtcbmxldCBzdHJpcF9xdW90ZXMgPSBzID0+XG4gIGlmIChTdHJpbmcubGVuZ3RoKHMpIDwgMikge1xuICAgIHM7XG4gIH0gZWxzZSBpZiAoU3RyaW5nLnN1YihzLCAwLCAxKSAhPSBcIlxcXCJcIlxuICAgICAgICAgICAgIHx8IFN0cmluZy5zdWIocywgU3RyaW5nLmxlbmd0aChzKSAtIDEsIDEpICE9IFwiXFxcIlwiKSB7XG4gICAgcztcbiAgfSBlbHNlIHtcbiAgICBTdHJpbmcuc3ViKHMsIDEsIFN0cmluZy5sZW5ndGgocykgLSAyKTtcbiAgfTtcbmxldCBzdHJpbmdfcXVvdGUgPSBzID0+IFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCI7XG5cbmxldCBrZXl3b3JkcyA9IFtcbiAgXCJmdW5cIixcbiAgXCJsZXRcIixcbiAgXCJpblwiLFxuICBcInR5cGVcIixcbiAgXCJjYXNlXCIsXG4gIFwidGVzdFwiLFxuICBcImlmXCIsXG4gIFwidGhlblwiLFxuICBcImVsc2VcIixcbl07XG5sZXQgcmVzZXJ2ZWRfa2V5d29yZHMgPSBbXCJvZlwiLCBcIndoZW5cIiwgXCJ3aXRoXCIsIFwic3dpdGNoXCIsIFwibWF0Y2hcIl07XG5sZXQgaXNfa2V5d29yZCA9IHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwga2V5d29yZHMpICsrIFwiKSRcIik7XG5sZXQgaXNfcmVzZXJ2ZWRfa2V5d29yZCA9XG4gIHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwgcmVzZXJ2ZWRfa2V5d29yZHMpICsrIFwiKSRcIik7XG5cbi8qIFBvdGVudGlhbCB0b2tlbnM6IFRoZXNlIGFyZSBmYWxsdGhyb3VnaCBjbGFzc2VzIHdoaWNoIGRldGVybWluZVxuICogdGhlIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIGEgY2hhcmFjdGVyIGluIGNvbnRhY3Qgd2l0aCBhIHRva2VuICovXG5sZXQgaXNfcG90ZW50aWFsX29wZXJhbmQgPSByZWdleHAoXCJeW2EtekEtWjAtOV8nXFxcXC4/XSskXCIpO1xuLyogQW55dGhpbmcgZWxzZSBpcyBjb25zaWRlcmVkIGEgcG90ZW50aWFsIG9wZXJhdG9yLCBhcyBsb25nXG4gKiAgYXMgaXQgZG9lcyBub3QgY29udGFpbiBhbnkgd2hpdGVzcGFjZSwgbGluZWJyZWFrcywgY29tbWVudFxuICogIGRlbGltaXRlcnMsIHN0cmluZyBkZWxpbWl0ZXJzLCBvciB0aGUgaW5zdGFudCBleHBhbmRpbmcgcGFpcmVkXG4gKiAgZGVsaW1pdGVyczogKClbXXwgKi9cbmxldCBpc19wb3RlbnRpYWxfb3BlcmF0b3IgPSByZWdleHAoXCJeW15hLXpBLVowLTlfJz9cXFwiI+KPjlxcXFxzXFxcXFtcXFxcXVxcXFwoXFxcXCldKyRcIik7XG5sZXQgaXNfcG90ZW50aWFsX3Rva2VuID0gdCA9PlxuICBpc19wb3RlbnRpYWxfb3BlcmFuZCh0KVxuICB8fCBpc19wb3RlbnRpYWxfb3BlcmF0b3IodClcbiAgfHwgaXNfc3RyaW5nKHQpXG4gIHx8IGlzX2NvbW1lbnQodCk7XG5cbmxldCBpc19hcmJpdGFyeV9pbnQgPSByZWdleHAoXCJeLT9cXFxcZCtbMC05X10qJFwiKTtcbmxldCBpc19hcmJpdGFyeV9mbG9hdCA9IHggPT5cbiAgeCAhPSBcIi5cIiAmJiB4ICE9IFwiLVwiICYmIHJlZ2V4cChcIl4tP1swLTldKlxcXFwuP1swLTldKigoZXxFKS0/WzAtOV0qKT8kXCIsIHgpO1xubGV0IGlzX2ludCA9IHN0ciA9PiBpc19hcmJpdGFyeV9pbnQoc3RyKSAmJiBpbnRfb2Zfc3RyaW5nX29wdChzdHIpICE9IE5vbmU7XG4vKiBOT1RFOiBUaGUgaXNfYXJiaXRhcnlfaW50IGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50XG4gICBtaW51c2VzIGZyb20gYmVpbmcgcGFyc2VkIGFzIHBhcnQgb2YgdGhlIGludCB0b2tlbi4gKi9cblxubGV0IGlzX2JhZF9pbnQgPSBzdHIgPT4gaXNfYXJiaXRhcnlfaW50KHN0cikgJiYgIWlzX2ludChzdHIpO1xuXG4vKiBOT1RFOiBBcyB3ZWxsIGFzIG1ha2luZyBpc19mbG9hdCAgZGlzam9pbnQgZnJvbSBpc19pbnQsXG4gICB0aGUgaXNfYXJiaXRhcnlfaW50ICBhbHNvIHByZXZlbnRzIGludHMgb3ZlciBpbnRfbWF4IGZyb20gYmVpbmdcbiAgIGNhc3QgYXMgZmxvYXRzLiBUaGUgaXNfYXJiaXRhcnlfZmxvYXQgY2hlY2sgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnRcbiAgIG1pbnVzZXMgZnJvbSBiZWluZyBwYXJzZWQgYXMgcGFydCBvZiB0aGUgZmxvYXQgdG9rZW4uICovXG5sZXQgaXNfZmxvYXQgPSBzdHIgPT5cbiAgIWlzX2FyYml0YXJ5X2ludChzdHIpXG4gICYmIGlzX2FyYml0YXJ5X2Zsb2F0KHN0cilcbiAgJiYgZmxvYXRfb2Zfc3RyaW5nX29wdChzdHIpICE9IE5vbmU7XG5sZXQgaXNfYmFkX2Zsb2F0ID0gc3RyID0+IGlzX2FyYml0YXJ5X2Zsb2F0KHN0cikgJiYgIWlzX2Zsb2F0KHN0cik7XG5sZXQgYm9vbHMgPSBbXCJ0cnVlXCIsIFwiZmFsc2VcIl07XG5sZXQgaXNfYm9vbCA9IHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwgYm9vbHMpICsrIFwiKSRcIik7XG5cbmxldCBpc192YXIgPSBzdHIgPT5cbiAgIWlzX2Jvb2woc3RyKVxuICAmJiBzdHIgIT0gXCJfXCJcbiAgLy8mJiAhaXNfa2V5d29yZChzdHIpXG4gIC8vJiYgIWlzX3Jlc2VydmVkKHN0cilcbiAgJiYgcmVnZXhwKFxuICAgICAgIHt8KF5bYS16X11bQS1aYS16MC05XyddKiQpfCheW0EtWl1bQS1aYS16MC05XyddKlxcLlthLXpdW0EtWmEtejAtOV8nXSokKXx9LFxuICAgICAgIHN0cixcbiAgICAgKTtcbmxldCBpc19jYXBpdGFsaXplZF9uYW1lID0gcmVnZXhwKFwiXltBLVpdW0EtWmEtejAtOV9dKiRcIik7XG5sZXQgaXNfY3RyID0gaXNfY2FwaXRhbGl6ZWRfbmFtZTtcbmxldCBiYXNlX3R5cHMgPSBbXCJTdHJpbmdcIiwgXCJJbnRcIiwgXCJGbG9hdFwiLCBcIkJvb2xcIl07XG5sZXQgaXNfYmFzZV90eXAgPSByZWdleHAoXCJeKFwiICsrIFN0cmluZy5jb25jYXQoXCJ8XCIsIGJhc2VfdHlwcykgKysgXCIpJFwiKTtcbmxldCBpc190eXBfdmFyID0gaXNfY2FwaXRhbGl6ZWRfbmFtZTtcbmxldCB3aWxkID0gXCJfXCI7XG5sZXQgaXNfd2lsZCA9IHJlZ2V4cChcIl5cIiArKyB3aWxkICsrIFwiJFwiKTtcblxuLyogTGlzdCBsaXRlcmFscyAqL1xubGV0IGxpc3Rfc3RhcnQgPSBcIltcIjtcbmxldCBsaXN0X2VuZCA9IFwiXVwiO1xubGV0IGxpc3RsaXRfbGJsID0gW2xpc3Rfc3RhcnQsIGxpc3RfZW5kXTtcbmxldCBlbXB0eV9saXN0ID0gbGlzdF9zdGFydCArKyBsaXN0X2VuZDtcbmxldCBpc19lbXB0eV9saXN0ID0gKD09KShlbXB0eV9saXN0KTtcblxuLyogVHVwbGVzICovXG5sZXQgdHVwbGVfc3RhcnQgPSBcIihcIjtcbmxldCB0dXBsZV9lbmQgPSBcIilcIjtcbmxldCB0dXBsZV9sYmwgPSBbdHVwbGVfc3RhcnQsIHR1cGxlX2VuZF07XG5sZXQgZW1wdHlfdHVwbGUgPSB0dXBsZV9zdGFydCArKyB0dXBsZV9lbmQ7XG5sZXQgaXNfZW1wdHlfdHVwbGUgPSAoPT0pKGVtcHR5X3R1cGxlKTtcblxuLyogVGhlc2UgZnVuY3Rpb25zIGRldGVybWluZSB3aGljaCBmb3JtcyBjYW4gc3dpdGNoIGJhY2sgYW5kIGZvcnRoIGJldHdlZW5cbiAgIG1vbm8gYW5kIGR1b3RpbGUgZm9ybXMsIGxpa2UgbGlzdCBsaXRlcmFscyBhbmQgdHVwbGVzIHN3aXRjaGluZyB0by9mcm9tXG4gICB0aGUgZW1wdHkgbGlzdCBhbmQgZW1wdHkgdHVwbGUuIFRlY2huaWNhbGx5IHRoaXMgc2hvdWxkIGJlIGRlcml2YWJsZSBmcm9tXG4gICB0aGUgbGFuZ3VhZ2UgZGF0YTsgbGVhdmluZyB0aGF0IGZvciBhIGZ1dHVyZSByZWZhY3Rvci4gKi9cbmxldCBkdW9zcGxpdHMgPSAodDogVG9rZW4udCk6IExhYmVsLnQgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gaXNfZW1wdHlfbGlzdCh0KSA9PiBsaXN0bGl0X2xibFxuICB8IF8gd2hlbiBpc19lbXB0eV90dXBsZSh0KSA9PiB0dXBsZV9sYmxcbiAgfCBfID0+IFtdXG4gIH07XG5cbmxldCBkdW9tZXJnZXMgPSAobGJsOiBMYWJlbC50KTogb3B0aW9uKExhYmVsLnQpID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuIGxibCA9PSBsaXN0bGl0X2xibCA9PiBTb21lKFtlbXB0eV9saXN0XSlcbiAgfCBfIHdoZW4gbGJsID09IHR1cGxlX2xibCA9PiBTb21lKFtlbXB0eV90dXBsZV0pXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8vVE9ETyhhbmRyZXcpOiByZWZhY3RvciBhdG9taWNfZm9ybXMgdG8gc2VwZXJhdGUgdGhlc2Ugb3V0XG5sZXQgY29uc3RfbW9ub19kZWxpbXMgPVxuICBiYXNlX3R5cHMgQCBib29scyBAIFt3aWxkLCBlbXB0eV9saXN0LCBlbXB0eV90dXBsZSwgZW1wdHlfc3RyaW5nXTtcblxubGV0IGV4cGxpY2l0X2hvbGUgPSBcIj9cIjtcbmxldCBpc19leHBsaWNpdF9ob2xlID0gdCA9PiB0ID09IGV4cGxpY2l0X2hvbGU7XG5sZXQgYmFkX3Rva2VuX2Nsczogc3RyaW5nID0+IGJhZF90b2tlbl9jbHMgPVxuICB0ID0+XG4gICAgc3dpdGNoICgpIHtcbiAgICB8IF8gd2hlbiBpc19iYWRfaW50KHQpID0+IEJhZEludFxuICAgIHwgXyA9PiBPdGhlclxuICAgIH07XG5cbi8qIEIuIE9wZXJhbmRzOlxuICAgT3JkZXIgaW4gdGhpcyBsaXN0IGRldGVybWluZXMgcmVsYXRpdmUgcmVtb2xkaW5nXG4gICBwcmlvcml0eSBmb3IgZm9ybXMgd2l0aCBvdmVybGFwcGluZyByZWdleHBzICovXG5sZXQgYXRvbWljX2Zvcm1zOiBsaXN0KChzdHJpbmcsIChzdHJpbmcgPT4gYm9vbCwgbGlzdChNb2xkLnQpKSkpID0gW1xuICAoXCJ2YXJcIiwgKGlzX3ZhciwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFxuICAgIFwiZXhwbGljaXRfaG9sZVwiLFxuICAgIChcbiAgICAgIGlzX2V4cGxpY2l0X2hvbGUsXG4gICAgICBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pLCBta19vcChUeXAsIFtdKSwgbWtfb3AoVFBhdCwgW10pXSxcbiAgICApLFxuICApLFxuICAoXCJ3aWxkXCIsIChpc193aWxkLCBbbWtfb3AoUGF0LCBbXSldKSksXG4gIChcInN0cmluZ1wiLCAoaXNfc3RyaW5nLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJpbnRfbGl0XCIsIChpc19pbnQsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImZsb2F0X2xpdFwiLCAoaXNfZmxvYXQsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImJvb2xfbGl0XCIsIChpc19ib29sLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJlbXB0eV9saXN0XCIsIChpc19lbXB0eV9saXN0LCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXG4gICAgXCJlbXB0eV90dXBsZVwiLFxuICAgIChpc19lbXB0eV90dXBsZSwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKSwgbWtfb3AoVHlwLCBbXSldKSxcbiAgKSxcbiAgKFwidHlfdmFyXCIsIChpc190eXBfdmFyLCBbbWtfb3AoVHlwLCBbXSldKSksXG4gIChcInR5X3Zhcl9wXCIsIChpc190eXBfdmFyLCBbbWtfb3AoVFBhdCwgW10pXSkpLFxuICAoXCJjdHJcIiwgKGlzX2N0ciwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwidHlwZVwiLCAoaXNfYmFzZV90eXAsIFtta19vcChUeXAsIFtdKV0pKSxcbl07XG5cbi8qIEMuIENvbXBvdW5kIEZvcm1zOlxuICAgT3JkZXIgaW4gdGhpcyBsaXN0IGRldGVybWluZXMgcmVsYXRpdmUgcmVtb2xkaW5nXG4gICBwcmlvcml0eSBmb3IgZm9ybXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgbGFiZWxzICovXG5cbmxldCBmb3JtczogbGlzdCgoc3RyaW5nLCB0KSkgPSBbXG4gIC8vIElORklYIE9QRVJBVE9SU1xuICAoXCJ0eXBfcGx1c1wiLCBta19pbmZpeChcIitcIiwgVHlwLCBQLm9yXykpLFxuICAoXCJ0eXBlLWFycm93XCIsIG1rX2luZml4KFwiLT5cIiwgVHlwLCA2KSksXG4gIChcImNlbGwtam9pblwiLCBta19pbmZpeChcIjtcIiwgRXhwLCAxMCkpLFxuICAoXCJwbHVzXCIsIG1rX2luZml4KFwiK1wiLCBFeHAsIFAucGx1cykpLFxuICAoXCJtaW51c1wiLCBta19pbmZpeChcIi1cIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwidGltZXNcIiwgbWtfaW5maXgoXCIqXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcInBvd2VyXCIsIG1rX2luZml4KFwiKipcIiwgRXhwLCBQLnBvd2VyKSksXG4gIChcImZwb3dlclwiLCBta19pbmZpeChcIioqLlwiLCBFeHAsIFAucG93ZXIpKSxcbiAgKFwiZGl2aWRlXCIsIG1rX2luZml4KFwiL1wiLCBFeHAsIFAubXVsdCkpLFxuICAoXCJlcXVhbHNcIiwgbWtfaW5maXgoXCI9PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcInN0cmluZ19lcXVhbHNcIiwgbWtfaW5maXgoXCIkPT1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJzdHJpbmdfY29uY2F0XCIsIG1rX2luZml4KFwiKytcIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwibHRcIiwgbWtfaW5maXgoXCI8XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZ3RcIiwgbWtfaW5maXgoXCI+XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwibm90X2VxdWFsc1wiLCBta19pbmZpeChcIiE9XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZ3RlXCIsIG1rX2luZml4KFwiPj1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJsdGVcIiwgbWtfaW5maXgoXCI8PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZwbHVzXCIsIG1rX2luZml4KFwiKy5cIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwiZm1pbnVzXCIsIG1rX2luZml4KFwiLS5cIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwiZnRpbWVzXCIsIG1rX2luZml4KFwiKi5cIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwiZmRpdmlkZVwiLCBta19pbmZpeChcIi8uXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcImZlcXVhbHNcIiwgbWtfaW5maXgoXCI9PS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbHRcIiwgbWtfaW5maXgoXCI8LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZndFwiLCBta19pbmZpeChcIj4uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZm5vdF9lcXVhbHNcIiwgbWtfaW5maXgoXCIhPS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmZ3RlXCIsIG1rX2luZml4KFwiPj0uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZmx0ZVwiLCBta19pbmZpeChcIjw9LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImxvZ2ljYWxfYW5kXCIsIG1rX2luZml4KFwiJiZcIiwgRXhwLCBQLmFuZF8pKSxcbiAgKFwibG9naWNhbF9vcl9sZWdhY3lcIiwgbWtfaW5maXgoXCJcXFxcL1wiLCBFeHAsIFAub3JfKSksXG4gIChcImxvZ2ljYWxfb3JcIiwgbWtfaW5maXgoXCJ8fFwiLCBFeHAsIFAub3JfKSksXG4gIChcImxpc3RfY29uY2F0XCIsIG1rX2luZml4KFwiQFwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJjb25zX2V4cFwiLCBta19pbmZpeChcIjo6XCIsIEV4cCwgUC5jb25zKSksXG4gIChcImNvbnNfcGF0XCIsIG1rX2luZml4KFwiOjpcIiwgUGF0LCBQLmNvbnMpKSxcbiAgKFwidHlwZWFublwiLCBtayhzcywgW1wiOlwiXSwgbWtfYmluJyhQLmFubiwgUGF0LCBQYXQsIFtdLCBUeXApKSksXG4gIC8vIFVOQVJZIFBSRUZJWCBPUEVSQVRPUlNcbiAgKFwibm90XCIsIG1rKGlpLCBbXCIhXCJdLCBta19wcmUoNSwgRXhwLCBbXSkpKSwgLy9UT0RPOiBwcmVjZWRlbmNlXG4gIChcInR5cF9zdW1fc2luZ2xlXCIsIG1rKHNzLCBbXCIrXCJdLCBta19wcmUoUC5vcl8sIFR5cCwgW10pKSksXG4gIChcInVuYXJ5X21pbnVzXCIsIG1rKHNzLCBbXCItXCJdLCBta19wcmUoUC5uZWcsIEV4cCwgW10pKSksXG4gIChcInVucXVvdGVcIiwgbWsoc3MsIFtcIiRcIl0sIG1rX3ByZShQLnVucXVvdGUsIEV4cCwgW10pKSksXG4gIC8vIE4tQVJZIE9QUyAob24gdGhlIHNlbWFudGljcyBsZXZlbClcbiAgKFwiY29tbWFfZXhwXCIsIG1rX2luZml4KFwiLFwiLCBFeHAsIFAucHJvZCkpLFxuICAoXCJjb21tYV9wYXRcIiwgbWtfaW5maXgoXCIsXCIsIFBhdCwgUC5wcm9kKSksXG4gIChcImNvbW1hX3R5cFwiLCBta19pbmZpeChcIixcIiwgVHlwLCBQLnByb2QpKSxcbiAgLy8gUEFJUkVEIERFTElNSVRFUlM6XG4gIChcImxpc3RfbGl0X2V4cFwiLCBtayhpaSwgW1wiW1wiLCBcIl1cIl0sIG1rX29wKEV4cCwgW0V4cF0pKSksXG4gIChcImxpc3RfbGl0X3BhdFwiLCBtayhpaSwgW1wiW1wiLCBcIl1cIl0sIG1rX29wKFBhdCwgW1BhdF0pKSksXG4gIChcImxpc3RfdHlwXCIsIG1rKGlpLCBbXCJbXCIsIFwiXVwiXSwgbWtfb3AoVHlwLCBbVHlwXSkpKSxcbiAgLy9OT1RFKGFuZHJldyk6IHBhcmVucyBiZWluZyBiZWxvdyBhcHMgaXMgbG9hZC1iZWFyaW5nLCB1bmZvcnR1bmF0ZWx5XG4gIChcInBhcmVuc19leHBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19vcChFeHAsIFtFeHBdKSkpLFxuICAoXCJwYXJlbnNfcGF0XCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfb3AoUGF0LCBbUGF0XSkpKSxcbiAgKFwicGFyZW5zX3R5cFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX29wKFR5cCwgW1R5cF0pKSksXG4gIChcImFwX2V4cF9lbXB0eVwiLCBtayhpaSwgW1wiKClcIl0sIG1rX3Bvc3QoUC5hcCwgRXhwLCBbXSkpKSxcbiAgKFwiYXBfZXhwXCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfcG9zdChQLmFwLCBFeHAsIFtFeHBdKSkpLFxuICAoXCJhcF9wYXRcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19wb3N0KFAuYXAsIFBhdCwgW1BhdF0pKSksXG4gIChcImFwX3R5cFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX3Bvc3QoUC5hcCwgVHlwLCBbVHlwXSkpKSxcbiAgKFwiY2FzZVwiLCBtayhkcywgW1wiY2FzZVwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbUnVsXSkpKSxcbiAgKFwidGVzdFwiLCBtayhkcywgW1widGVzdFwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwiZnVuX1wiLCBtayhkcywgW1wiZnVuXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1BhdF0pKSksXG4gIChcbiAgICBcInJ1bGVcIixcbiAgICBtayhkcywgW1wifFwiLCBcIj0+XCJdLCBta19iaW4nKFAucnVsZV9zZXAsIFJ1bCwgRXhwLCBbUGF0XSwgRXhwKSksXG4gICksXG4gIChcInBpcGVsaW5lXCIsIG1rX2luZml4KFwifD5cIiwgRXhwLCBQLmVxcykpLCAvLyBpbiBPQ2FtbCwgcGlwZWxpbmUgcHJlY2VkZW5jZSBpcyBpbiBzYW1lIGNsYXNzIGFzICc9JywgJzwnLCBldGMuXG4gIC8vIERPVUJMRSBERUxJTUlURVJTXG4gIChcImZpbHRlcl9oaWRlXCIsIG1rKGRzLCBbXCJoaWRlXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9ldmFsXCIsIG1rKGRzLCBbXCJldmFsXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9wYXVzZVwiLCBtayhkcywgW1wicGF1c2VcIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbRXhwXSkpKSxcbiAgKFwiZmlsdGVyX2RlYnVnXCIsIG1rKGRzLCBbXCJkZWJ1Z1wiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAvLyBUUklQTEUgREVMSU1JVEVSU1xuICAoXCJsZXRfXCIsIG1rKGRzLCBbXCJsZXRcIiwgXCI9XCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW1BhdCwgRXhwXSkpKSxcbiAgKFxuICAgIFwidHlwZV9hbGlhc1wiLFxuICAgIG1rKGRzLCBbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtUUGF0LCBUeXBdKSksXG4gICksXG4gIChcImlmX1wiLCBtayhkcywgW1wiaWZcIiwgXCJ0aGVuXCIsIFwiZWxzZVwiXSwgbWtfcHJlKFAuaWZfLCBFeHAsIFtFeHAsIEV4cF0pKSksXG5dO1xuXG5sZXQgZ2V0OiBTdHJpbmcudCA9PiB0ID1cbiAgbmFtZSA9PiBVdGlsLkxpc3RVdGlsLmFzc29jX2VycihuYW1lLCBmb3JtcywgXCJGb3Jtcy5nZXRcIik7XG5cbmxldCBkZWxpbXM6IGxpc3QoVG9rZW4udCkgPVxuICBmb3Jtc1xuICB8PiBMaXN0LmZvbGRfbGVmdCgoYWNjLCAoXywge2xhYmVsLCBffTogdCkpID0+IHtsYWJlbCBAIGFjY30sIFtdKVxuICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxubGV0IGF0b21pY19tb2xkczogVG9rZW4udCA9PiBsaXN0KE1vbGQudCkgPVxuICBzID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCAoXywgKHRlc3QsIG1vbGRzKSkpID0+IHRlc3QocykgPyBtb2xkcyBAIGFjYyA6IGFjYyxcbiAgICAgIFtdLFxuICAgICAgYXRvbWljX2Zvcm1zLFxuICAgICk7XG5cbmxldCBpc19hdG9taWMgPSB0ID0+IGF0b21pY19tb2xkcyh0KSAhPSBbXTtcblxubGV0IGlzX2RlbGltID0gdCA9PiBMaXN0Lm1lbSh0LCBkZWxpbXMpO1xuXG5sZXQgaXNfdmFsaWRfdG9rZW4gPSB0ID0+IGlzX2F0b21pYyh0KSB8fCBpc19zZWNvbmRhcnkodCkgfHwgaXNfZGVsaW0odCk7XG5cbmxldCBta19hdG9taWMgPSAoc29ydDogU29ydC50LCB0OiBUb2tlbi50KSA9PiB7XG4gIGFzc2VydChpc19hdG9taWModCkpO1xuICBtayhzcywgW3RdLCBNb2xkLihta19vcChzb3J0LCBbXSkpKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgV2hpdGVzcGFjZVxuICB8IENvbW1lbnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2Vjb25kYXJ5X2NvbnRlbnQgPVxuICB8IFdoaXRlc3BhY2Uoc3RyaW5nKVxuICB8IENvbW1lbnQoc3RyaW5nKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpZDogSWQudCxcbiAgY29udGVudDogc2Vjb25kYXJ5X2NvbnRlbnQsXG59O1xuXG5sZXQgY2xzX29mID0gKHM6IHQpOiBjbHMgPT5cbiAgc3dpdGNoIChzLmNvbnRlbnQpIHtcbiAgfCBXaGl0ZXNwYWNlKF8pID0+IFdoaXRlc3BhY2VcbiAgfCBDb21tZW50KF8pID0+IENvbW1lbnRcbiAgfTtcblxubGV0IG1rX3NwYWNlID0gaWQgPT4ge2NvbnRlbnQ6IFdoaXRlc3BhY2UoRm9ybS5zcGFjZSksIGlkfTtcblxubGV0IGNvbnN0cnVjdF9jb21tZW50ID0gY29udGVudCA9PlxuICBpZiAoU3RyaW5nLmVxdWFsKGNvbnRlbnQsIFwiI1wiKSkge1xuICAgIENvbW1lbnQoXCIjI1wiKTtcbiAgfSBlbHNlIHtcbiAgICBDb21tZW50KGNvbnRlbnQpO1xuICB9O1xuXG5sZXQgaXNfc3BhY2U6IHQgPT4gYm9vbCA9XG4gIHcgPT5cbiAgICBzd2l0Y2ggKHcuY29udGVudCkge1xuICAgIHwgV2hpdGVzcGFjZShzKSA9PiBzID09IEZvcm0uc3BhY2VcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuXG5sZXQgaXNfbGluZWJyZWFrOiB0ID0+IGJvb2wgPVxuICB3ID0+XG4gICAgc3dpdGNoICh3LmNvbnRlbnQpIHtcbiAgICB8IFdoaXRlc3BhY2UocykgPT4gcyA9PSBGb3JtLmxpbmVicmVha1xuICAgIHwgXyA9PiBmYWxzZVxuICAgIH07XG5cbmxldCBjb250ZW50X2lzX2NvbW1lbnQ6IHNlY29uZGFyeV9jb250ZW50ID0+IGJvb2wgPVxuICBjb250ZW50ID0+XG4gICAgc3dpdGNoIChjb250ZW50KSB7XG4gICAgfCBDb21tZW50KF8pID0+IHRydWVcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuXG5sZXQgaXNfY29tbWVudDogdCA9PiBib29sID1cbiAgdyA9PlxuICAgIHN3aXRjaCAody5jb250ZW50KSB7XG4gICAgfCBDb21tZW50KF8pID0+IHRydWVcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuXG4vLyBSZXR1cm5zIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIFdoaXRlc3BhY2VcbmxldCBnZXRfc3RyaW5nOiBzZWNvbmRhcnlfY29udGVudCA9PiBzdHJpbmcgPVxuICBjb250ZW50ID0+XG4gICAgc3dpdGNoIChjb250ZW50KSB7XG4gICAgfCBDb21tZW50KHMpXG4gICAgfCBXaGl0ZXNwYWNlKHMpID0+IHNcbiAgICB9O1xuXG5sZXQgaWQgPSB3ID0+IHcuaWQ7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNlZ21lbnQgPSBsaXN0KHBpZWNlKVxuYW5kIHBpZWNlID1cbiAgfCBUaWxlKHRpbGUpXG4gIHwgR3JvdXQoR3JvdXQudClcbiAgfCBTZWNvbmRhcnkoU2Vjb25kYXJ5LnQpXG5hbmQgdGlsZSA9IHtcbiAgLy8gaW52YXJpYW50czpcbiAgLy8gLSBsZW5ndGgobW9sZC5pbl8pICsgMSA9PSBsZW5ndGgobGFiZWwpXG4gIC8vIC0gbGVuZ3RoKHNoYXJkcykgPD0gbGVuZ3RoKGxhYmVsKVxuICAvLyAtIGxlbmd0aChzaGFyZHMpID09IGxlbmd0aChjaGlsZHJlbikgKyAxXG4gIC8vIC0gc29ydChzaGFyZHMpID09IHNoYXJkc1xuICBpZDogSWQudCxcbiAgbGFiZWw6IExhYmVsLnQsXG4gIG1vbGQ6IE1vbGQudCxcbiAgc2hhcmRzOiBsaXN0KGludCksXG4gIGNoaWxkcmVuOiBsaXN0KHNlZ21lbnQpLFxufTtcblxuLy8gVGhpcyBpcyBmb3IgY29tbWVudCBpbnNlcnRpb25cbmxldCBta19zZWNvbmRhcnkgPSAoaWQsIGNvbnRlbnQpID0+IFtTZWNvbmRhcnkoe2lkLCBjb250ZW50fSldO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBUb3VjaChJZC50KVxuICB8IERlbGV0ZShJZC50KTtcblxuLy8gdXNlZCB0byByZWNvcmQgZWZmZWN0cyBvdmVyIHRoZSBjb3Vyc2Ugb2YgYSBzaW5nbGUgYWN0aW9uXG5sZXQgczogcmVmKGxpc3QodCkpID0gcmVmKFtdKTtcbmxldCBzX2NsZWFyID0gKCkgPT4gcyA6PSBbXTtcbmxldCBzX3RvdWNoID0gKGlkczogbGlzdChJZC50KSkgPT5cbiAgcyA6PSBMaXN0Lm1hcChpZCA9PiBUb3VjaChpZCksIGlkcykgQCBzXjtcblxubGV0IHNfdG91Y2hlZCA9IChpZDogSWQudCk6IGJvb2wgPT4gTGlzdC5tZW0oVG91Y2goaWQpLCBzXik7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cGFuc2lvbnMgPSBsaXN0KChUb2tlbi50LCAobGlzdChUb2tlbi50KSwgRGlyZWN0aW9uLnQpKSk7XG5cbmxldCBmb3Jtc19hc3NvYzogbGlzdCgoTGFiZWwudCwgbGlzdChNb2xkLnQpKSkgPVxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoYWNjLCAoXywge2xhYmVsLCBtb2xkLCBffTogRm9ybS50KSkgPT4ge1xuICAgICAgbGV0IG1vbGRzID1cbiAgICAgICAgc3dpdGNoIChMaXN0LmFzc29jX29wdChsYWJlbCwgYWNjKSkge1xuICAgICAgICB8IFNvbWUob2xkX21vbGRzKSA9PiBvbGRfbW9sZHMgQCBbbW9sZF1cbiAgICAgICAgfCBOb25lID0+IFttb2xkXVxuICAgICAgICB9O1xuICAgICAgTGlzdC5jb25zKChsYWJlbCwgbW9sZHMpLCBMaXN0LnJlbW92ZV9hc3NvYyhsYWJlbCwgYWNjKSk7XG4gICAgfSxcbiAgICBbXSxcbiAgICBGb3JtLmZvcm1zLFxuICApO1xuXG5sZXQgZ2V0ID0gKGxhYmVsOiBMYWJlbC50KTogbGlzdChNb2xkLnQpID0+XG4gIHN3aXRjaCAobGFiZWwsIExpc3QuYXNzb2Nfb3B0KGxhYmVsLCBmb3Jtc19hc3NvYykpIHtcbiAgfCAoW3RdLCBTb21lKG1vbGRzKSkgd2hlbiBGb3JtLmF0b21pY19tb2xkcyh0KSAhPSBbXSA9PlxuICAgIC8vIFRPRE8oYW5kcmV3KTogZG9lcyB0aGlzIG1ha2Ugc2Vuc2U/XG4gICAgRm9ybS5hdG9taWNfbW9sZHModCkgQCBtb2xkc1xuICB8IChbdF0sIE5vbmUpIHdoZW4gRm9ybS5hdG9taWNfbW9sZHModCkgIT0gW10gPT4gRm9ybS5hdG9taWNfbW9sZHModClcbiAgfCAoXywgU29tZShtb2xkcykpID0+IG1vbGRzXG4gIHwgKFt0XSwgTm9uZSkgPT5cbiAgICAvKiBGb3IgdG9rZW5zIHdoaWNoIGFyZSBub3QgYXNzaWduZWQgbW9sZHMgYnkgdGhlIGxhbmd1YWdlIGRlZmluaXRpb24sXG4gICAgICAgYXNzaW5nIGEgZGVmYXVsdCAnQW55JyBtb2xkLCB3aGljaCBpcyBlaXRoZXIgY29udmV4IG9yIGNvbmNhdmVcbiAgICAgICBkZXBlbmRpbmcgb24gdGhlIGZpcnN0IGNoYXJhY3Rlci4gVGhpcyBpcyBhIGhldXJpc3RpYyBhdCB0aGVcbiAgICAgICBtb21lbnQgYXMgd2UgZG9uJ3QgY3VycmVudGx5IHJpZ29yb3VzbHkgZGl2aWRlIHRva2VuIGNsYXNzZXNcbiAgICAgICBmb3Igb3BlcmF0b3JzIHZzIG9wZXJhbmRzLCBidXQgaXMgc29tZXdoYXQgbG9hZC1iZWFyaW5nIGluIHRoYXRcbiAgICAgICByZW1vbGRpbmcgYXMgb25lIGlzIHR5cGluZyBpbiBhIG11bHRpLWNoYXJhY3RlciBvcGVyYXRvciBjYW4gY2F1c2VcbiAgICAgICBqYW5rLCB3aGljaCBpcyBhbGxldmlhdGVkIGlmIHdlIGNvcnJlY3RseSBndWVzcyB0aGF0IGl0IHdpbGxcbiAgICAgICBiZWNvbWUgYW4gb3BlcmF0b3IuIEFsdGVybmF0aXZlbHksIHRoaXMgY291bGQgYmUgYmFzZWQgb25cbiAgICAgICBsb2dpYyB3aGljaCBjaGVja3MgaWYgdGhlIHRva2VuIGlzIHRoZSBwcmVmaXggb2Ygd2hhdGV2ZXIuICovXG4gICAgc3dpdGNoIChGb3JtLmlzX3BvdGVudGlhbF9vcGVyYW5kKHQpLCBGb3JtLmlzX3BvdGVudGlhbF9vcGVyYXRvcih0KSkge1xuICAgIHwgKHRydWUsIGZhbHNlKSA9PiBbTW9sZC5ta19vcChBbnksIFtdKV1cbiAgICB8IChmYWxzZSwgdHJ1ZSkgPT4gW01vbGQubWtfYmluKFByZWNlZGVuY2UubWF4LCBBbnksIFtdKV1cbiAgICB8ICh0cnVlLCB0cnVlKSA9PlxuICAgICAgUHJpbnRmLnByaW50ZihcbiAgICAgICAgXCJXYXJuaW5nOiBNb2xkcy5nZXQ6IGNhbid0IGRlY2lkZSBpZiBvcGVyYW5kIG9yIG9wZXJhdG9yOiAnJXMnXFxuXCIsXG4gICAgICAgIHQsXG4gICAgICApO1xuICAgICAgW01vbGQubWtfb3AoQW55LCBbXSldO1xuICAgIHwgKGZhbHNlLCBmYWxzZSkgPT5cbiAgICAgIC8vVE9ETyhhbmRyZXcpOiB0aGlzIGlzIHRyaWdnZXJlZCBpbiBhbGwgaW5zdGFudCBleHBhbmQgY2FzZXMgKFtdKCl8LCBldGMpXG4gICAgICAvL1ByaW50Zi5wcmludGYoXCJXYXJuaW5nOiBNb2xkcy5nZXQ6IHVuaGFuZGxlZCBtb25vOiAnJXMnXFxuXCIsIHQpO1xuICAgICAgW01vbGQubWtfb3AoQW55LCBbXSldXG4gICAgfVxuICB8IChsYmwsIE5vbmUpID0+XG4gICAgUHJpbnRmLnByaW50ZihcbiAgICAgIFwiV2FybmluZzogTW9sZHMuZ2V0OiB1bmhhbmRsZWQgbGFiZWw6ICclcydcXG5cIixcbiAgICAgIFN0cmluZy5jb25jYXQoXCIgXCIsIGxibCksXG4gICAgKTtcbiAgICBbTW9sZC5ta19vcChBbnksIFtdKV07XG4gIH07XG5cbmxldCBkZWxheWVkX2V4cGFuc2lvbnM6IGV4cGFuc2lvbnMgPVxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgKChfLCB7ZXhwYW5zaW9uLCBsYWJlbCwgX306IEZvcm0udCkpID0+XG4gICAgICBzd2l0Y2ggKGV4cGFuc2lvbiwgbGFiZWwpIHtcbiAgICAgIHwgKChEZWxheWVkLCBEZWxheWVkKSwgW2hkLCAuLi5fXSkgPT5cbiAgICAgICAgU29tZShbXG4gICAgICAgICAgKGhkLCAobGFiZWwsIERpcmVjdGlvbi5MZWZ0KSksXG4gICAgICAgICAgKExpc3RVdGlsLmxhc3QobGFiZWwpLCAobGFiZWwsIFJpZ2h0KSksXG4gICAgICAgIF0pXG4gICAgICB8ICgoRGVsYXllZCwgXyksIFtoZCwgLi4uX10pID0+IFNvbWUoWyhoZCwgKGxhYmVsLCBMZWZ0KSldKVxuICAgICAgfCAoKF8sIERlbGF5ZWQpLCBbXywgLi4uX10pID0+XG4gICAgICAgIFNvbWUoWyhMaXN0VXRpbC5sYXN0KGxhYmVsKSwgKGxhYmVsLCBSaWdodCkpXSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9LFxuICAgIEZvcm0uZm9ybXMsXG4gIClcbiAgfD4gTGlzdC5mbGF0dGVuXG4gIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuXG5sZXQgaW5zdGFudF9leHBhbnNpb25zOiBleHBhbnNpb25zID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgoXywge2V4cGFuc2lvbiwgbGFiZWwsIF99OiBGb3JtLnQpKSA9PlxuICAgICAgc3dpdGNoIChleHBhbnNpb24sIGxhYmVsKSB7XG4gICAgICB8ICgoSW5zdGFudCwgSW5zdGFudCksIFtoZCwgLi4uX10pID0+XG4gICAgICAgIFNvbWUoW1xuICAgICAgICAgIChoZCwgKGxhYmVsLCBEaXJlY3Rpb24uTGVmdCkpLFxuICAgICAgICAgIChMaXN0VXRpbC5sYXN0KGxhYmVsKSwgKGxhYmVsLCBSaWdodCkpLFxuICAgICAgICBdKVxuICAgICAgfCAoKEluc3RhbnQsIF8pLCBbaGQsIC4uLl9dKSA9PiBTb21lKFsoaGQsIChsYWJlbCwgTGVmdCkpXSlcbiAgICAgIHwgKChfLCBJbnN0YW50KSwgW18sIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFsoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKV0pXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfSxcbiAgICBGb3JtLmZvcm1zLFxuICApXG4gIHw+IExpc3QuZmxhdHRlblxuICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxubGV0IGRlbGF5ZWRfZXhwYW5zaW9uOiBUb2tlbi50ID0+IChsaXN0KFRva2VuLnQpLCBEaXJlY3Rpb24udCkgPVxuICBzID0+XG4gICAgLyogQ29tcGxldGlvbnMgd2hpY2ggbXVzdCBiZSBkZWZlcmVkIGFzIHRoZXkgYXJlIGFtYmlndW91cyBwcmVmaXhlcyAqL1xuICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQocywgZGVsYXllZF9leHBhbnNpb25zKSkge1xuICAgIHwgU29tZShleHBhbnNpb24pID0+IGV4cGFuc2lvblxuICAgIHwgTm9uZSA9PiAoW3NdLCBSaWdodClcbiAgICB9O1xuXG5sZXQgaW5zdGFudF9leHBhbnNpb246IFRva2VuLnQgPT4gKGxpc3QoVG9rZW4udCksIERpcmVjdGlvbi50KSA9XG4gIHMgPT5cbiAgICAvKiBDb21wbGV0aW9ucyB3aGljaCBjYW4gb3IgbXVzdCBiZSBleGVjdXRlZCBpbW1lZGlhdGVseSAqL1xuICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQocywgaW5zdGFudF9leHBhbnNpb25zKSkge1xuICAgIHwgU29tZShleHBhbnNpb24pID0+IGV4cGFuc2lvblxuICAgIHwgTm9uZSA9PiAoW3NdLCBSaWdodClcbiAgICB9O1xuXG5sZXQgaXNfZGVsYXllZCA9IGt3ID0+IExpc3QubGVuZ3RoKGRlbGF5ZWRfZXhwYW5zaW9uKGt3KSB8PiBmc3QpID4gMTtcblxubGV0IGFsbG93X21lcmdlID0gKGw6IFRva2VuLnQsIHI6IFRva2VuLnQpOiBib29sID0+XG4gIEZvcm0uaXNfcG90ZW50aWFsX3Rva2VuKGwgKysgcik7XG5cbmxldCBhbGxvd19hcHBlbmRfcmlnaHQgPSAodDogVG9rZW4udCwgY2hhcjogc3RyaW5nKTogYm9vbCA9PlxuICBGb3JtLmlzX3BvdGVudGlhbF90b2tlbih0ICsrIGNoYXIpO1xuXG5sZXQgYWxsb3dfYXBwZW5kX2xlZnQgPSAoY2hhcjogc3RyaW5nLCB0OiBUb2tlbi50KTogYm9vbCA9PlxuICBGb3JtLmlzX3BvdGVudGlhbF90b2tlbih0ICsrIGNoYXIpO1xuXG5sZXQgYWxsb3dfaW5zZXJ0aW9uID0gKF9jaGFyOiBzdHJpbmcsIF90OiBUb2tlbi50LCBuZXdfdDogVG9rZW4udCk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4obmV3X3QpO1xuIiwib3BlbiBVdGlsO1xuaW5jbHVkZSBCYXNlO1xuXG5leGNlcHRpb24gQW1iaWd1b3VzX21vbGRzO1xuZXhjZXB0aW9uIEludmFsaWRfbW9sZDtcbmV4Y2VwdGlvbiBFbXB0eV90aWxlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB0aWxlO1xuXG5sZXQgaWQgPSB0ID0+IHQuaWQ7XG5cbmxldCBpc19jb21wbGV0ZSA9ICh0OiB0KSA9PiBMaXN0Lmxlbmd0aCh0LmxhYmVsKSA9PSBMaXN0Lmxlbmd0aCh0LnNoYXJkcyk7XG5cbmxldCBsX3NoYXJkID0gdCA9PlxuICBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV90aWxlLCBMaXN0VXRpbC5oZF9vcHQodC5zaGFyZHMpKTtcbmxldCByX3NoYXJkID0gdCA9PlxuICBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV90aWxlLCBMaXN0VXRpbC5sYXN0X29wdCh0LnNoYXJkcykpO1xuXG5sZXQgaGFzX2VuZCA9IChkOiBEaXJlY3Rpb24udCwgdCkgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgTGVmdCA9PiBsX3NoYXJkKHQpID09IDBcbiAgfCBSaWdodCA9PiByX3NoYXJkKHQpID09IExpc3QubGVuZ3RoKHQubGFiZWwpIC0gMVxuICB9O1xubGV0IGhhc19lbmRzID0gdCA9PiBoYXNfZW5kKExlZnQsIHQpICYmIGhhc19lbmQoUmlnaHQsIHQpO1xuXG5sZXQgbmlicyA9ICh0OiB0KSA9PiB7XG4gIGxldCAobCwgXykgPSBNb2xkLm5pYnMofmluZGV4PWxfc2hhcmQodCksIHQubW9sZCk7XG4gIGxldCAoXywgcikgPSBNb2xkLm5pYnMofmluZGV4PXJfc2hhcmQodCksIHQubW9sZCk7XG4gIChsLCByKTtcbn07XG5cbmxldCBzaGFwZXMgPSAodDogdCkgPT4ge1xuICBsZXQgKGwsIHIpID0gbmlicyh0KTtcbiAgKGwuc2hhcGUsIHIuc2hhcGUpO1xufTtcblxubGV0IHRvX3BpZWNlID0gdCA9PiBUaWxlKHQpO1xuXG5sZXQgc29ydGVkX2NoaWxkcmVuID0gKHttb2xkLCBzaGFyZHMsIGNoaWxkcmVuLCBffTogdCkgPT5cbiAgQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pXG4gIHw+IEFiYS5hYmFfdHJpcGxlc1xuICB8PiBMaXN0Lm1hcCgoKGwsIGNoaWxkLCByKSkgPT4ge1xuICAgICAgIGxldCAoXywgbCkgPSBNb2xkLm5pYnMofmluZGV4PWwsIG1vbGQpO1xuICAgICAgIGxldCAociwgXykgPSBNb2xkLm5pYnMofmluZGV4PXIsIG1vbGQpO1xuICAgICAgIChsLnNvcnQgPT0gci5zb3J0ID8gbC5zb3J0IDogQW55LCBjaGlsZCk7XG4gICAgIH0pO1xuXG5sZXQgY29udGFpbmVkX2NoaWxkcmVuID0gKHQ6IHQpOiBsaXN0KCh0LCBCYXNlLnNlZ21lbnQsIHQpKSA9PlxuICBBYmEubWsodC5zaGFyZHMsIHQuY2hpbGRyZW4pXG4gIHw+IEFiYS5hYmFfdHJpcGxlc1xuICB8PiBMaXN0Lm1hcCgoKGwsIGNoaWxkLCByKSkgPT4ge1xuICAgICAgIGxldCBsID0gey4uLnQsIHNoYXJkczogW2xdLCBjaGlsZHJlbjogW119O1xuICAgICAgIGxldCByID0gey4uLnQsIHNoYXJkczogW3JdLCBjaGlsZHJlbjogW119O1xuICAgICAgIChsLCBjaGlsZCwgcik7XG4gICAgIH0pO1xuXG4vLyBsZXQgcmVtb2xkID0gKHQ6IHQpOiBsaXN0KHQpID0+XG4vLyAgIE1vbGRzLmdldCh0LmxhYmVsKSB8PiBMaXN0Lm1hcChtb2xkID0+IHsuLi50LCBtb2xkfSk7XG5cbmxldCBzcGxpdF9zaGFyZHMgPSAoaWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMpID0+XG4gIHNoYXJkcyB8PiBMaXN0Lm1hcChpID0+IHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkczogW2ldLCBjaGlsZHJlbjogW119KTtcblxuLy8gcG9zdGNvbmQ6IG91dHB1dCBzZWdtZW50IGlzIG5vbmVtcHR5XG5sZXQgZGlzYXNzZW1ibGUgPSAoe2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBjaGlsZHJlbn06IHQpOiBzZWdtZW50ID0+IHtcbiAgbGV0IHNoYXJkcyA9IHNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcyk7XG4gIEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKVxuICB8PiBBYmEuam9pbihzID0+IFt0b19waWVjZShzKV0sIEZ1bi5pZClcbiAgfD4gTGlzdC5jb25jYXQ7XG59O1xuXG5sZXQgZGlzaW50ZWdyYXRlID0gKHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcywgX306IHQpOiBsaXN0KHRpbGUpID0+IHtcbiAgc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCwgc2hhcmRzKTtcbn07XG5cbmxldCByZWFzc2VtYmxlID0gKG1hdGNoOiBBYmEudCh0LCBzZWdtZW50KSk6IHQgPT4ge1xuICBsZXQgdCA9IEFiYS5oZChtYXRjaCk7XG4gIGxldCAoc2hhcmRzLCBjaGlsZHJlbikgPVxuICAgIG1hdGNoXG4gICAgfD4gQWJhLmZvbGRfcmlnaHQoXG4gICAgICAgICAodCwgY2hpbGQsIChzaGFyZHMsIGNoaWxkcmVuKSkgPT5cbiAgICAgICAgICAgKHQuc2hhcmRzIEAgc2hhcmRzLCB0LmNoaWxkcmVuIEAgW2NoaWxkLCAuLi5jaGlsZHJlbl0pLFxuICAgICAgICAgdCA9PiAodC5zaGFyZHMsIHQuY2hpbGRyZW4pLFxuICAgICAgICk7XG4gIC8vIGNoZWNrIGxlbmd0aHNcbiAgbGV0IF8gPSBBYmEubWsoc2hhcmRzLCBjaGlsZHJlbik7XG4gIGFzc2VydChMaXN0LnNvcnQoSW50LmNvbXBhcmUsIHNoYXJkcykgPT0gc2hhcmRzKTtcbiAge1xuICAgIGlkOiB0LmlkLFxuICAgIGxhYmVsOiB0LmxhYmVsLFxuICAgIC8vIG5vdGU6IHRoaXMgdGhyb3dzIGF3YXkgbW9sZHMgb24gdGlsZXMgb3RoZXIgdGhhbiBoZC5cbiAgICAvLyBpbiBjYXNlcyB3aGVyZSB0aG9zZSBtb2xkcyBkaWZmZXIsIHJlYXNzZW1ibGVkIHRpbGVcbiAgICAvLyBzaG91bGQgdW5kZXJnbyBzdWJzZXF1ZW50IHJlbW9sZGluZy5cbiAgICBtb2xkOiB0Lm1vbGQsXG4gICAgc2hhcmRzLFxuICAgIGNoaWxkcmVuLFxuICB9O1xufTtcblxubGV0IHBvcF9sID0gKHRpbGU6IHQpOiAocGllY2UsIHNlZ21lbnQpID0+XG4gIGRpc2Fzc2VtYmxlKHRpbGUpXG4gIHw+IExpc3RVdGlsLnNwbGl0X2ZpcnN0X29wdFxuICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV90aWxlKTtcbmxldCBwb3BfciA9ICh0aWxlOiB0KTogKHNlZ21lbnQsIHBpZWNlKSA9PlxuICBkaXNhc3NlbWJsZSh0aWxlKVxuICB8PiBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdFxuICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV90aWxlKTtcblxuLy8gbGV0IHVuaXF1ZV9tb2xkID0gXyA9PiBmYWlsd2l0aChcInRvZG8gdW5pcXVlX21vbGRcIik7XG5cbi8vIG1vZHVsZSBNYXRjaCA9IHtcbi8vICAgdHlwZSB0aWxlID0gdDtcblxuLy8gICBtb2R1bGUgTWFrZSA9IChPOiBPcmllbnRhdGlvbi5TKSA9PiB7XG4vLyAgICAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuLy8gICAgIHR5cGUgdCA9IEFiYS50KFNoYXJkLnQsIHNlZ21lbnQpO1xuXG4vLyAgICAgbGV0IGlkID0gKG06IHQpID0+IEFiYS5oZChtKS50aWxlX2lkO1xuXG4vLyAgICAgbGV0IGxhYmVsID0gKG06IHQpID0+IHNuZChBYmEuaGQobSkubGFiZWwpO1xuXG4vLyAgICAgbGV0IHNoYXJkczogdCA9PiBsaXN0KFNoYXJkLnQpID0gQWJhLmdldF9hcztcbi8vICAgICAvLyBsZXQgY2hpbGRyZW46IHQgPT4gbGlzdChzZWdtZW50KSA9IEFiYS5nZXRfYnM7XG5cbi8vICAgICBsZXQgbGVuZ3RoID0gKG06IHQpID0+IExpc3QubGVuZ3RoKHNoYXJkcyhtKSk7XG5cbi8vICAgICBsZXQgbW9sZCA9IChtOiB0KSA9PiB7XG4vLyAgICAgICBsZXQgbW9sZHMgPVxuLy8gICAgICAgICBzd2l0Y2ggKFNoYXJkLmNvbnNpc3RlbnRfbW9sZHMoc2hhcmRzKG0pKSkge1xuLy8gICAgICAgICB8IFtdID0+XG4vLyAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gdXBvbiBjb25zdHJ1Y3QvZGVzdHJ1Y3QsXG4vLyAgICAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBldmVyeXRoaW5nIHdpbGwgYmUgc3Vic2VxdWVudGx5IHJlbW9sZGVkXG4vLyAgICAgICAgICAgTW9sZHMuZ2V0KGxhYmVsKG0pKVxuLy8gICAgICAgICB8IFtfLCAuLi5fXSBhcyBtb2xkcyA9PiBtb2xkc1xuLy8gICAgICAgICB9O1xuLy8gICAgICAgYXNzZXJ0KG1vbGRzICE9IFtdKTtcbi8vICAgICAgIExpc3QuaGQobW9sZHMpO1xuLy8gICAgIH07XG5cbi8vICAgICBsZXQgY2hpbGRyZW4gPSBtID0+XG4vLyAgICAgICBMaXN0Lm1hcChMaXN0VXRpbC5yZXZfaWYoTy5kID09IExlZnQpLCBBYmEuZ2V0X2JzKG0pKTtcblxuLy8gICAgIGxldCBqb2luID0gKG06IHQpOiBzZWdtZW50ID0+XG4vLyAgICAgICBtIHw+IEFiYS5qb2luKHMgPT4gW1NoYXJkLnRvX3BpZWNlKHMpXSwgRnVuLmlkKSB8PiBMaXN0LmZsYXR0ZW47XG5cbi8vICAgICBsZXQgY29tcGxldGUgPSAobTogdCk6IG9wdGlvbih0aWxlKSA9PiB7XG4vLyAgICAgICBsZXQgaWQgPSBpZChtKTtcbi8vICAgICAgIGxldCBsYWJlbCA9IGxhYmVsKG0pO1xuLy8gICAgICAgbGV0IG1vbGQgPSBtb2xkKG0pO1xuLy8gICAgICAgbGVuZ3RoKG0pID09IExhYmVsLmxlbmd0aChsYWJlbClcbi8vICAgICAgICAgPyB7XG4vLyAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gTGlzdFV0aWwucmV2X2lmKE8uZCA9PSBMZWZ0LCBjaGlsZHJlbihtKSk7XG4vLyAgICAgICAgICAgU29tZShCYXNlLlRpbGUue2lkLCBsYWJlbCwgbW9sZCwgY2hpbGRyZW59KTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgICA6IE5vbmU7XG4vLyAgICAgfTtcbi8vICAgfTtcbi8vIH07XG4iLCIvLyBvcGVuIFV0aWw7XG5pbmNsdWRlIEJhc2U7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHBpZWNlO1xuXG5sZXQgc2Vjb25kYXJ5ID0gdyA9PiBTZWNvbmRhcnkodyk7XG5sZXQgZ3JvdXQgPSBnID0+IEdyb3V0KGcpO1xubGV0IHRpbGUgPSB0ID0+IFRpbGUodCk7XG5cbmxldCBnZXQgPSAoZl93LCBmX2csIGZfdCwgcDogdCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgU2Vjb25kYXJ5KHcpID0+IGZfdyh3KVxuICB8IEdyb3V0KGcpID0+IGZfZyhnKVxuICB8IFRpbGUodCkgPT4gZl90KHQpXG4gIH07XG5cbmxldCBpZCA9IGdldChTZWNvbmRhcnkuaWQsIEdyb3V0LmlkLCBUaWxlLmlkKTtcblxubGV0IHNvcnQgPVxuICBnZXQoXG4gICAgXyA9PiAoU29ydC5BbnksIFtdKSxcbiAgICBfID0+IChTb3J0LkFueSwgW10pLFxuICAgIHQgPT4gKHQubW9sZC5vdXQsIHQubW9sZC5pbl8pLFxuICApO1xuXG5sZXQgbmlicyA9XG4gIGdldChcbiAgICBfID0+IE5vbmUsXG4gICAgZyA9PiB7XG4gICAgICBsZXQgKGwsIHIpID0gR3JvdXQuc2hhcGVzKGcpO1xuICAgICAgU29tZShOaWIuKHtzaGFwZTogbCwgc29ydDogQW55fSwge3NoYXBlOiByLCBzb3J0OiBBbnl9KSk7XG4gICAgfSxcbiAgICB0ID0+IFNvbWUoVGlsZS5uaWJzKHQpKSxcbiAgKTtcblxubGV0IG5pYl9zb3J0cyA9XG4gIGdldChcbiAgICBfID0+IChTb3J0LkFueSwgU29ydC5BbnkpLFxuICAgIF8gPT4gKFNvcnQuQW55LCBTb3J0LkFueSksXG4gICAgdCA9PiB7XG4gICAgICBsZXQgKGwsIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgKGwuc29ydCwgci5zb3J0KTtcbiAgICB9LFxuICApO1xuXG5sZXQgc29ydGVkX2NoaWxkcmVuID0gZ2V0KF8gPT4gW10sIF8gPT4gW10sIFRpbGUuc29ydGVkX2NoaWxkcmVuKTtcbmxldCBjaGlsZHJlbiA9IHAgPT4gc29ydGVkX2NoaWxkcmVuKHApIHw+IExpc3Quc3BsaXQgfD4gc25kO1xuXG4vLyBsZXQgaXNfYmFsYW5jZWQgPVxuLy8gICBmdW5cbi8vICAgfCBTaGFyZChfKSA9PiBmYWxzZVxuLy8gICB8IFNlY29uZGFyeShfKVxuLy8gICB8IEdyb3V0KF8pXG4vLyAgIHwgVGlsZShfKSA9PiB0cnVlO1xuXG5sZXQgcG9wX2wgPSAocDogdCk6ICh0LCBzZWdtZW50KSA9PlxuICBzd2l0Y2ggKHApIHtcbiAgfCBUaWxlKHQpID0+IFRpbGUucG9wX2wodClcbiAgfCBHcm91dChfKVxuICB8IFNlY29uZGFyeShfKSA9PiAocCwgW10pXG4gIH07XG5sZXQgcG9wX3IgPSAocDogdCk6IChzZWdtZW50LCB0KSA9PlxuICBzd2l0Y2ggKHApIHtcbiAgfCBUaWxlKHQpID0+IFRpbGUucG9wX3IodClcbiAgfCBHcm91dChfKVxuICB8IFNlY29uZGFyeShfKSA9PiAoW10sIHApXG4gIH07XG5cbmxldCBkaXNhc3NlbWJsZSA9IChwOiB0KTogc2VnbWVudCA9PlxuICBzd2l0Y2ggKHApIHtcbiAgfCBHcm91dChfKVxuICB8IFNlY29uZGFyeShfKSA9PiBbcF1cbiAgfCBUaWxlKHQpID0+IFRpbGUuZGlzYXNzZW1ibGUodClcbiAgfTtcblxuLy8gbGV0IHJlbW9sZCA9IChwOiB0KSA9PlxuLy8gICBzd2l0Y2ggKHApIHtcbi8vICAgfCBHcm91dChfKVxuLy8gICB8IFNlY29uZGFyeShfKSA9PiBbcF1cbi8vICAgfCBUaWxlKHQpID0+IExpc3QubWFwKHRpbGUsIFRpbGUucmVtb2xkKHQpKVxuLy8gICB9O1xuXG5sZXQgc2hhcGVzID1cbiAgZ2V0KF8gPT4gTm9uZSwgZyA9PiBTb21lKEdyb3V0LnNoYXBlcyhnKSksIHQgPT4gU29tZShUaWxlLnNoYXBlcyh0KSkpO1xuXG5sZXQgaXNfZ3JvdXQ6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IEdyb3V0KF8pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgaXNfc2Vjb25kYXJ5OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBTZWNvbmRhcnkoXykgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbmxldCBpc190aWxlOiB0ID0+IG9wdGlvbihUaWxlLnQpID1cbiAgZnVuXG4gIHwgVGlsZSh0KSA9PiBTb21lKHQpXG4gIHwgXyA9PiBOb25lO1xuXG5sZXQgbGFiZWw6IHQgPT4gb3B0aW9uKExhYmVsLnQpID1cbiAgZnVuXG4gIHwgVGlsZSh7bGFiZWwsIF99KSA9PiBTb21lKGxhYmVsKVxuICB8IF8gPT4gTm9uZTtcblxubGV0IG1vbm90aWxlOiB0ID0+IG9wdGlvbihUb2tlbi50KSA9XG4gIGZ1blxuICB8IFRpbGUoe2xhYmVsOiBbdF0sIF99KSA9PiBTb21lKHQpXG4gIHwgU2Vjb25kYXJ5KHcpIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQodykgPT5cbiAgICBTb21lKFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCkpXG4gIHwgXyA9PiBOb25lO1xuXG5sZXQgaGFzX2VuZHMgPSBnZXQoXyA9PiB0cnVlLCBfID0+IHRydWUsIFRpbGUuaGFzX2VuZHMpO1xuXG5sZXQgaXNfY29tcGxldGU6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IFRpbGUodCkgPT4gVGlsZS5pc19jb21wbGV0ZSh0KVxuICB8IF8gPT4gdHJ1ZTtcblxubGV0IGdldF9vdXRzaWRlX3NvcnRzID0gKH5kZWZhdWx0X3NvcnQ9U29ydC5BbnksIHA6IHQpOiBsaXN0KFNvcnQudCkgPT5cbiAgLy9UT0RPOiBEYXZpZCBwbGVhc2UgcmV2aWV3IHRoaXNcbiAgc3dpdGNoIChwKSB7XG4gIHwgU2Vjb25kYXJ5KF8pID0+IFtdXG4gIHwgR3JvdXQoe3NoYXBlOiBDb252ZXgsIF99KSA9PiBbXVxuICB8IEdyb3V0KHtzaGFwZTogQ29uY2F2ZSwgX30pID0+IFtkZWZhdWx0X3NvcnQsIGRlZmF1bHRfc29ydF1cbiAgfCBUaWxlKHtzaGFyZHM6IF8sIF99IGFzIHQpIHdoZW4gIVRpbGUuaXNfY29tcGxldGUodCkgPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IGJldHRlciBpbmNvbXBsZXRlIHRpbGUgaGFuZGxpbmdcbiAgICAvLyBOZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzaGFwZSBvZiBpbmNvbXBsZXRlIHRpbGUgaXNcbiAgICBbXVxuICB8IFRpbGUodCkgPT5cbiAgICBsZXQgKHNvcnRfbCwgc29ydF9yKSA9IG5pYl9zb3J0cyhwKTtcbiAgICBzd2l0Y2ggKCh0Lm1vbGQubmlicyB8PiBmc3QpLnNoYXBlLCAodC5tb2xkLm5pYnMgfD4gc25kKS5zaGFwZSkge1xuICAgIHwgKENvbnZleCwgQ29udmV4KSA9PiBbXVxuICAgIHwgKENvbnZleCwgQ29uY2F2ZShfKSkgPT4gW3NvcnRfcl1cbiAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IFtzb3J0X2xdXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29uY2F2ZShfKSkgPT4gW3NvcnRfbCwgc29ydF9yXVxuICAgIH07XG4gIH07XG5cbmxldCBtb2xkX29mID0gKH5zaGFwZT1OaWIuU2hhcGUuQ29udmV4LCBwOiB0KSA9PlxuICAvLyBUT0RPKGQpIGZpeCBzb3J0c1xuICBzd2l0Y2ggKHApIHtcbiAgfCBUaWxlKHQpID0+IHQubW9sZFxuICB8IEdyb3V0KGcpID0+IE1vbGQub2ZfZ3JvdXQoZywgQW55KVxuICB8IFNlY29uZGFyeShfKSA9PiBNb2xkLm9mX3NlY29uZGFyeSh7c29ydDogQW55LCBzaGFwZX0pXG4gIH07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE9wKHJvb3QpXG4gIHwgUHJlKHJvb3QsIHQpXG4gIHwgUG9zdCh0LCByb290KVxuICB8IEJpbih0LCByb290LCB0KVxuYW5kIHJvb3QgPSBBYmEudChpbnQsIHQpO1xuXG4vLyBsZXQgcmVjIHNpemUgPVxuLy8gICBmdW5cbi8vICAgfCBPcChfKSA9PiAxXG4vLyAgIHwgUHJlKF8sIHIpID0+IDEgKyBzaXplKHIpXG4vLyAgIHwgUG9zdChsLCBfKSA9PiBzaXplKGwpICsgMVxuLy8gICB8IEJpbihsLCBfLCByKSA9PiBzaXplKGwpICsgMSArIHNpemUocik7XG5cbi8vIFRPRE8oZCk6IHJlbmFtZSB0byByZWZsZWN0IGFiYVxubGV0IHJvb3QgPVxuICBmdW5cbiAgfCBPcChyKVxuICB8IFByZShyLCBfKVxuICB8IFBvc3QoXywgcilcbiAgfCBCaW4oXywgciwgXykgPT4gcjtcblxuLy8gbGV0IGNoaWxkcmVuID1cbi8vICAgZnVuXG4vLyAgIHwgT3AoXykgPT4gW11cbi8vICAgfCBQcmUoXywgc2tlbCkgPT4gWyhEaXJlY3Rpb24uUmlnaHQsIHNrZWwpXVxuLy8gICB8IFBvc3Qoc2tlbCwgXykgPT4gWyhMZWZ0LCBza2VsKV1cbi8vICAgfCBCaW4obCwgXywgcikgPT4gWyhMZWZ0LCBsKSwgKFJpZ2h0LCByKV07XG5cbi8vIHJldHVybnMgaW5jbHVzaXZlIGxvd2VyIGJvdW5kLCBleGNsdXNpdmUgdXBwZXIgYm91bmRcbi8vIGxldCByZWMgcmFuZ2UgPVxuLy8gICBmdW5cbi8vICAgfCBPcChuKSA9PiAobiwgbiArIDEpXG4vLyAgIHwgUHJlKG4sIHIpID0+IChuLCBzbmQocmFuZ2UocikpKVxuLy8gICB8IFBvc3QobCwgbikgPT4gKGZzdChyYW5nZShsKSksIG4gKyAxKVxuLy8gICB8IEJpbihsLCBfLCByKSA9PiAoZnN0KHJhbmdlKGwpKSwgc25kKHJhbmdlKHIpKSk7XG5cbi8vIGxldCByZWMgc2tlbF9hdCA9IChuLCBza2VsKSA9PlxuLy8gICBzd2l0Y2ggKHNrZWwpIHtcbi8vICAgfCBPcChtKSA9PiBuID09IG0gPyBza2VsIDogcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIlNrZWwuc2tlbF9hdFwiKSlcbi8vICAgfCBQcmUobSwgcikgPT4gbiA9PSBtID8gc2tlbCA6IHNrZWxfYXQobiwgcilcbi8vICAgfCBQb3N0KGwsIG0pID0+IG4gPT0gbSA/IHNrZWwgOiBza2VsX2F0KG4sIGwpXG4vLyAgIHwgQmluKGwsIG0sIHIpID0+XG4vLyAgICAgaWYgKG4gPCBtKSB7XG4vLyAgICAgICBza2VsX2F0KG4sIGwpO1xuLy8gICAgIH0gZWxzZSBpZiAobiA+IG0pIHtcbi8vICAgICAgIHNrZWxfYXQobiwgcik7XG4vLyAgICAgfSBlbHNlIHtcbi8vICAgICAgIHNrZWw7XG4vLyAgICAgfVxuLy8gICB9O1xuXG5leGNlcHRpb24gSW5wdXRfY29udGFpbnNfc2Vjb25kYXJ5O1xuZXhjZXB0aW9uIE5vbmNvbnZleF9zZWdtZW50O1xuXG5bQGRlcml2aW5nIHNob3coe3dpdGhfcGF0aDogZmFsc2V9KV1cbnR5cGUgaXAgPSAoaW50LCBQaWVjZS50KTtcblxudHlwZSByZWwgPVxuICB8IEx0XG4gIHwgRXFcbiAgfCBHdDtcblxubGV0IHJlbCA9IChwMTogUGllY2UudCwgcDI6IFBpZWNlLnQpOiBvcHRpb24ocmVsKSA9PlxuICBzd2l0Y2ggKHAxLCBwMikge1xuICB8IChTZWNvbmRhcnkoXyksIF8pXG4gIHwgKF8sIFNlY29uZGFyeShfKSkgPT4gTm9uZVxuICB8IChHcm91dCh7c2hhcGUsIF99KSwgXykgPT5cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBDb252ZXggPT4gU29tZShHdClcbiAgICB8IENvbmNhdmUgPT4gU29tZShMdClcbiAgICB9XG4gIHwgKF8sIEdyb3V0KHtzaGFwZSwgX30pKSA9PlxuICAgIHN3aXRjaCAoc2hhcGUpIHtcbiAgICB8IENvbnZleCA9PiBTb21lKEx0KVxuICAgIHwgQ29uY2F2ZSA9PiBTb21lKEd0KVxuICAgIH1cbiAgfCAoVGlsZSh0MSksIFRpbGUodDIpKSA9PlxuICAgIG9wZW4gTGFiZWxzO1xuICAgIGxldCBsYmwxID0gKD09KSh0MS5sYWJlbCk7XG4gICAgbGV0IGxibDIgPSAoPT0pKHQyLmxhYmVsKTtcbiAgICBsZXQgZXEgPVxuICAgICAgW1xuICAgICAgICBsYmwxKGNhc2UpICYmIGxibDIocnVsZSksXG4gICAgICAgIGxibDEocnVsZSkgJiYgbGJsMihydWxlKSxcbiAgICAgICAgbGJsMShjb21tYSkgJiYgbGJsMihjb21tYSkgJiYgdDEubW9sZCA9PSB0Mi5tb2xkLFxuICAgICAgICBsYmwxKFtcIitcIl0pICYmIGxibDIoW1wiK1wiXSkgJiYgdDEubW9sZCA9PSB0Mi5tb2xkLFxuICAgICAgXVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoKHx8KSwgZmFsc2UpO1xuICAgIGlmIChlcSkge1xuICAgICAgU29tZShFcSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCAoXywgcjEpID0gVGlsZS5zaGFwZXModDEpO1xuICAgICAgbGV0IChsMiwgXykgPSBUaWxlLnNoYXBlcyh0Mik7XG4gICAgICBzd2l0Y2ggKHIxLCBsMikge1xuICAgICAgfCAoQ29udmV4LCBDb252ZXgpID0+IE5vbmVcbiAgICAgIHwgKENvbmNhdmUoXyksIENvbnZleCkgPT4gU29tZShMdClcbiAgICAgIHwgKENvbnZleCwgQ29uY2F2ZShfKSkgPT4gU29tZShHdClcbiAgICAgIHwgKENvbmNhdmUocCksIENvbmNhdmUocCcpKSA9PlxuICAgICAgICBpZiAocCA8IHAnKSB7XG4gICAgICAgICAgU29tZShMdCk7XG4gICAgICAgIH0gZWxzZSBpZiAocCA+IHAnKSB7XG4gICAgICAgICAgU29tZShHdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3dpdGNoIChQcmVjZWRlbmNlLmFzc29jaWF0aXZpdHkocCkpIHtcbiAgICAgICAgICB8IFNvbWUoTGVmdCkgPT4gU29tZShHdClcbiAgICAgICAgICB8IFNvbWUoUmlnaHQpID0+IFNvbWUoTHQpXG4gICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgICAvLyBtYXkgd2FudCB0byBtYWtlIHRoaXMgU29tZShFcSlcbiAgICAgICAgICAgIC8vIGZvciB0aGluZ3MgbGlrZSBjb21tYSBidXQgZG9uJ3RcbiAgICAgICAgICAgIC8vIHdhbnQgdG8gYm90aGVyIHdpdGggbW9sZCBjb25jZXJucyBoZXJlXG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG5tb2R1bGUgU3RhY2tzID0ge1xuICBbQGRlcml2aW5nIHNob3coe3dpdGhfcGF0aDogZmFsc2V9KV1cbiAgdHlwZSBza2VsID0gdDtcbiAgW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG4gIHR5cGUgdCA9IHtcbiAgICBvdXRwdXQ6IGxpc3Qoc2tlbCksXG4gICAgc2h1bnRlZDogbGlzdChpcCksXG4gIH07XG5cbiAgbGV0IGVtcHR5ID0ge291dHB1dDogW10sIHNodW50ZWQ6IFtdfTtcblxuICBsZXQgcmVjIHBvcF9jaGFpbiA9XG4gICAgICAgICAgKH5wb3BwZWQ9W10sIHNodW50ZWQ6IGxpc3QoaXApKTogKGxpc3QoaXApLCBsaXN0KGlwKSkgPT5cbiAgICBzd2l0Y2ggKHNodW50ZWQpIHtcbiAgICB8IFtdID0+IChwb3BwZWQsIHNodW50ZWQpXG4gICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgc3dpdGNoIChwb3BwZWQpIHtcbiAgICAgIHwgW10gPT4gcG9wX2NoYWluKH5wb3BwZWQ9W2hkXSwgdGwpXG4gICAgICB8IFtwLCAuLi5fXSA9PlxuICAgICAgICBzd2l0Y2ggKHJlbChzbmQoaGQpLCBzbmQocCkpKSB7XG4gICAgICAgIHwgU29tZShFcSkgPT4gcG9wX2NoYWluKH5wb3BwZWQ9W2hkLCAuLi5wb3BwZWRdLCB0bClcbiAgICAgICAgfCBfID0+IChwb3BwZWQsIHNodW50ZWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBzaGFwZXMgPSBwID0+XG4gICAgUGllY2Uuc2hhcGVzKHApIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKElucHV0X2NvbnRhaW5zX3NlY29uZGFyeSk7XG5cbiAgbGV0IHNoYXBlc19vZl9jaGFpbiA9XG4gICAgICAoY2hhaW46IGxpc3QoaXApKTogb3B0aW9uKChOaWIuU2hhcGUudCwgTmliLlNoYXBlLnQpKSA9PlxuICAgIHN3aXRjaCAoY2hhaW4sIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KGNoYWluKSkge1xuICAgIHwgKFsoXywgZmlyc3QpLCAuLi5fXSwgU29tZSgoXywgKF8sIGxhc3QpKSkpID0+XG4gICAgICBsZXQgKGwsIF8pID0gc2hhcGVzKGZpcnN0KTtcbiAgICAgIGxldCAoXywgcikgPSBzaGFwZXMobGFzdCk7XG4gICAgICBTb21lKChsLCByKSk7XG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xuXG4gIGxldCByZWMgcHVzaF9vdXRwdXQgPSAofnByZWM6IG9wdGlvbihQcmVjZWRlbmNlLnQpPT8sIHN0YWNrczogdCk6IHQgPT4ge1xuICAgIGxldCAoY2hhaW4sIHNodW50ZWQpID0gcG9wX2NoYWluKHN0YWNrcy5zaHVudGVkKTtcbiAgICBzd2l0Y2ggKHByZWMsIHNoYXBlc19vZl9jaGFpbihjaGFpbikpIHtcbiAgICB8IChTb21lKHByZWMpLCBTb21lKChfLCBDb25jYXZlKHByZWMnKSkpKVxuICAgICAgICB3aGVuXG4gICAgICAgICAgUHJlY2VkZW5jZS5jb21wYXJlKHByZWMnLCBwcmVjKSA8IDBcbiAgICAgICAgICB8fCBQcmVjZWRlbmNlLmNvbXBhcmUocHJlYycsIHByZWMpID09IDBcbiAgICAgICAgICAmJiBQcmVjZWRlbmNlLmFzc29jaWF0aXZpdHkocHJlYycpICE9IFNvbWUoTGVmdCkgPT4gc3RhY2tzXG4gICAgfCAoXywgTm9uZSkgPT4gc3RhY2tzXG4gICAgfCAoXywgU29tZSgobCwgcikpKSA9PlxuICAgICAgbGV0IGlzID0gTGlzdC5tYXAoZnN0LCBjaGFpbik7XG4gICAgICBsZXQgc3BsaXRfa2lkcyA9IG4gPT5cbiAgICAgICAgdHJ5KExpc3RVdGlsLnNwbGl0X24obiwgc3RhY2tzLm91dHB1dCkgfD4gUGFpclV0aWwubWFwX2ZzdChMaXN0LnJldikpIHtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgcHJpbnRfZW5kbGluZShzaG93KHN0YWNrcykpO1xuICAgICAgICAgIGZhaWx3aXRoKFwiU2tlbC5wdXNoX291dHB1dDogc3BsaXRfa2lkczogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgfTtcbiAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICBzd2l0Y2ggKGwsIHIpIHtcbiAgICAgICAgfCAoQ29udmV4LCBDb252ZXgpID0+XG4gICAgICAgICAgbGV0IChraWRzLCBvdXRwdXQpID0gc3BsaXRfa2lkcyhMaXN0Lmxlbmd0aChjaGFpbikgLSAxKTtcbiAgICAgICAgICBbT3AoQWJhLm1rKGlzLCBraWRzKSksIC4uLm91dHB1dF07XG4gICAgICAgIHwgKENvbnZleCwgQ29uY2F2ZShfKSkgPT5cbiAgICAgICAgICBsZXQgKGtpZHMsIG91dHB1dCkgPSBzcGxpdF9raWRzKExpc3QubGVuZ3RoKGNoYWluKSk7XG4gICAgICAgICAgbGV0IChraWRzLCByKSA9IExpc3RVdGlsLnNwbGl0X2xhc3Qoa2lkcyk7XG4gICAgICAgICAgW1ByZShBYmEubWsoaXMsIGtpZHMpLCByKSwgLi4ub3V0cHV0XTtcbiAgICAgICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pKTtcbiAgICAgICAgICBsZXQgKGwsIGtpZHMpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Qoa2lkcyk7XG4gICAgICAgICAgW1Bvc3QobCwgQWJhLm1rKGlzLCBraWRzKSksIC4uLm91dHB1dF07XG4gICAgICAgIHwgKENvbmNhdmUoXyksIENvbmNhdmUoXykpID0+XG4gICAgICAgICAgbGV0IChraWRzLCBvdXRwdXQpID0gc3BsaXRfa2lkcyhMaXN0Lmxlbmd0aChjaGFpbikgKyAxKTtcbiAgICAgICAgICBsZXQgKGwsIGtpZHMpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Qoa2lkcyk7XG4gICAgICAgICAgbGV0IChraWRzLCByKSA9IExpc3RVdGlsLnNwbGl0X2xhc3Qoa2lkcyk7XG4gICAgICAgICAgW0JpbihsLCBBYmEubWsoaXMsIGtpZHMpLCByKSwgLi4ub3V0cHV0XTtcbiAgICAgICAgfTtcbiAgICAgIHB1c2hfb3V0cHV0KH5wcmVjPywge3NodW50ZWQsIG91dHB1dH0pO1xuICAgIH07XG4gIH07XG5cbiAgbGV0IHB1c2hfc2h1bnRlZCA9ICgoXywgcCkgYXMgaXA6IGlwLCBzdGFja3M6IHQpOiB0ID0+IHtcbiAgICBsZXQgKGwsIF8pID0gc2hhcGVzKHApO1xuICAgIGxldCBzdGFja3MgPVxuICAgICAgc3dpdGNoIChsKSB7XG4gICAgICB8IENvbnZleCA9PiBzdGFja3NcbiAgICAgIHwgQ29uY2F2ZShwcmVjKSA9PiBwdXNoX291dHB1dCh+cHJlYywgc3RhY2tzKVxuICAgICAgfTtcbiAgICB7Li4uc3RhY2tzLCBzaHVudGVkOiBbaXAsIC4uLnN0YWNrcy5zaHVudGVkXX07XG4gIH07XG5cbiAgbGV0IGZpbmlzaCA9IHN0YWNrcyA9PiBwdXNoX291dHB1dChzdGFja3MpO1xufTtcblxubGV0IG1rID0gKHNlZzogbGlzdChpcCkpOiB0ID0+IHtcbiAgbGV0IHN0YWNrcyA9XG4gICAgc2VnXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoRnVuLmZsaXAoU3RhY2tzLnB1c2hfc2h1bnRlZCksIFN0YWNrcy5lbXB0eSlcbiAgICB8PiBTdGFja3MuZmluaXNoO1xuICBMaXN0VXRpbC5oZF9vcHQoc3RhY2tzLm91dHB1dCkgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoTm9uY29udmV4X3NlZ21lbnQpO1xufTtcbiIsIm9wZW4gVXRpbDtcblxuZXhjZXB0aW9uIEVtcHR5X3NlZ21lbnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IEJhc2Uuc2VnbWVudDtcblxubGV0IGVtcHR5ID0gW107XG5sZXQgY29ucyA9IExpc3QuY29ucztcbmxldCBjb25jYXQgPSBMaXN0LmNvbmNhdDtcbmxldCBmb2xkX3JpZ2h0ID0gTGlzdC5mb2xkX3JpZ2h0O1xubGV0IHJldiA9IExpc3QucmV2O1xuXG5sZXQgb2ZfdGlsZSA9IHQgPT4gW1RpbGUudG9fcGllY2UodCldO1xuXG5sZXQgbmlicyA9IHRpbGVzID0+XG4gIHN3aXRjaCAodGlsZXMsIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHRpbGVzKSkge1xuICB8IChbXSwgXylcbiAgfCAoXywgTm9uZSkgPT4gTm9uZVxuICB8IChbX2ZpcnN0LCAuLi5fXSwgU29tZSgoXywgX2xhc3QpKSkgPT4gZmFpbHdpdGgoXCJ0b2RvIFRpbGVzLm5pYnNcIilcbiAgfTtcblxubGV0IGluY29tcGxldGVfdGlsZXMgPVxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5UaWxlKHQpIHdoZW4gIVRpbGUuaXNfY29tcGxldGUodCkgPT4gU29tZSh0KVxuICAgIHwgXyA9PiBOb25lLFxuICApO1xubGV0IHRpbGVzID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiBTb21lKHQpXG4gICAgfCBfID0+IE5vbmUsXG4gICk7XG5cbmxldCBjb252ZXhfZ3JvdXQgPVxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5Hcm91dChnKSB3aGVuIGcuc2hhcGUgPT0gQ29udmV4ID0+IFNvbWUoZylcbiAgICB8IF8gPT4gTm9uZSxcbiAgKTtcblxubGV0IGNvbnRhaW5zX21hdGNoaW5nID0gKHQ6IFRpbGUudCkgPT5cbiAgTGlzdC5leGlzdHMoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5UaWxlKHQnKSA9PiB0Jy5pZCA9PSB0LmlkXG4gICAgfCBfID0+IGZhbHNlLFxuICApO1xuXG5sZXQgcmVtb3ZlX21hdGNoaW5nID0gKHQ6IFRpbGUudCkgPT5cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0Jykgd2hlbiB0Jy5pZCA9PSB0LmlkID0+IE5vbmVcbiAgICB8IHAgPT4gU29tZShwKSxcbiAgKTtcblxubGV0IHNub2MgPSAodGlsZXMsIHRpbGUpID0+IHRpbGVzIEAgW3RpbGVdO1xuXG4vLyBsZXQgaXNfYmFsYW5jZWQgPSBMaXN0LmZvcl9hbGwoUGllY2UuaXNfYmFsYW5jZWQpO1xuXG5sZXQgc2hhcGVfYWZmaXggPVxuICAgIChkOiBEaXJlY3Rpb24udCwgYWZmaXg6IHQsIHI6IE5pYi5TaGFwZS50KVxuICAgIDogKEFiYS50KGxpc3QoU2Vjb25kYXJ5LnQpLCBHcm91dC50KSwgTmliLlNoYXBlLnQsIHQpID0+IHtcbiAgbGV0IGVtcHR5X3dndyA9IEFiYS5tayhbW11dLCBbXSk7XG4gIGxldCByZWMgZ28gPSAoYWZmaXg6IHQsIHI6IE5pYi5TaGFwZS50KSA9PlxuICAgIHN3aXRjaCAoYWZmaXgpIHtcbiAgICB8IFtdID0+IChlbXB0eV93Z3csIHIsIFtdKVxuICAgIHwgW3AsIC4uLnRsXSA9PlxuICAgICAgbGV0ICh3Z3csIHMsIHRsKSA9IGdvKHRsLCByKTtcbiAgICAgIHN3aXRjaCAocCkge1xuICAgICAgfCBTZWNvbmRhcnkodykgPT5cbiAgICAgICAgbGV0ICh3c3MsIGdzKSA9IHdndztcbiAgICAgICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gICAgICAgICgoW1t3LCAuLi53c10sIC4uLndzc10sIGdzKSwgcywgdGwpO1xuICAgICAgfCBHcm91dChnKSA9PiAoQWJhLmNvbnMoW10sIGcsIHdndyksIHMsIHRsKVxuICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgIGxldCAobCwgXykgPSBUaWxlLnNoYXBlcyh0KSB8PiAoZCA9PSBMZWZ0ID8gVHVwbGVVdGlsLnN3YXAgOiBGdW4uaWQpO1xuICAgICAgICAoZW1wdHlfd2d3LCBsLCB0bCk7XG4gICAgICB9O1xuICAgIH07XG4gIGdvKChkID09IExlZnQgPyBMaXN0LnJldiA6IEZ1bi5pZCkoYWZmaXgpLCByKTtcbn07XG5sZXQgc2hhcGUgPSBzaGFwZV9hZmZpeChSaWdodCk7XG5cbmxldCByZWMgY29udmV4ID0gc2VnID0+IHtcbiAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgbGV0IGwgPVxuICAgIGZvbGRfcmlnaHQoXG4gICAgICAocDogUGllY2UudCwgc2hhcGUpID0+IHtcbiAgICAgICAgbGV0KiBzID0gc2hhcGU7XG4gICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICB8IFNlY29uZGFyeShfKSA9PiBzaGFwZVxuICAgICAgICB8IEdyb3V0KGcpID0+XG4gICAgICAgICAgR3JvdXQuZml0c19zaGFwZShnLCBzKSA/IFNvbWUoZnN0KEdyb3V0LnNoYXBlcyhnKSkpIDogTm9uZVxuICAgICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgICBsZXQgKGwsIHIpID0gVGlsZS5zaGFwZXModCk7XG4gICAgICAgICAgTGlzdC5mb3JfYWxsKGNvbnZleCwgdC5jaGlsZHJlbikgJiYgTmliLlNoYXBlLmZpdHMociwgcylcbiAgICAgICAgICAgID8gU29tZShsKSA6IE5vbmU7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgc2VnLFxuICAgICAgU29tZShOaWIuU2hhcGUuY29uY2F2ZSgpKSxcbiAgICApO1xuICBzd2l0Y2ggKGwpIHtcbiAgfCBOb25lID0+IGZhbHNlXG4gIHwgU29tZShsKSA9PiBOaWIuU2hhcGUuZml0cyhOaWIuU2hhcGUuY29uY2F2ZSgpLCBsKVxuICB9O1xufTtcblxubGV0IHNwbGl0X2J5X2dyb3V0OiB0ID0+IEFiYS50KHQsIEdyb3V0LnQpID1cbiAgQWJhLnNwbGl0KFxuICAgIGZ1blxuICAgIHwgUGllY2UuR3JvdXQoZykgPT4gRWl0aGVyLlIoZylcbiAgICB8IHAgPT4gTChwKSxcbiAgKTtcblxubGV0IHJlYyByZW1vbGQgPSAofnNoYXBlPU5pYi5TaGFwZS5jb25jYXZlKCksIHNlZzogdCwgczogU29ydC50KSA9PlxuICBzd2l0Y2ggKHMpIHtcbiAgfCBBbnkgPT4gc2VnXG4gIHwgVHlwID0+IHJlbW9sZF90eXAoc2hhcGUsIHNlZylcbiAgfCBQYXQgPT4gcmVtb2xkX3BhdChzaGFwZSwgc2VnKVxuICB8IEV4cCA9PiByZW1vbGRfZXhwKHNoYXBlLCBzZWcpXG4gIHwgUnVsID0+IHJlbW9sZF9ydWwoc2hhcGUsIHNlZylcbiAgfCBUUGF0ID0+IHJlbW9sZF90cGF0KHNoYXBlLCBzZWcpXG4gIHwgXyA9PiBmYWlsd2l0aChcInJlbW9sZCB1bmV4cGVjdGVkXCIpXG4gIH1cbmFuZCByZW1vbGRfdGlsZSA9IChzOiBTb3J0LnQsIHNoYXBlLCB0OiBUaWxlLnQpOiBvcHRpb24oVGlsZS50KSA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCsgcmVtb2xkZWQgPVxuICAgIE1vbGRzLmdldCh0LmxhYmVsKVxuICAgIHw+IExpc3QuZmlsdGVyKChtOiBNb2xkLnQpID0+IG0ub3V0ID09IHMpXG4gICAgfD4gTGlzdC5tYXAobW9sZCA9PiB7Li4udCwgbW9sZH0pXG4gICAgfD4gKFxuICAgICAgZnVuXG4gICAgICB8IFtfXSBhcyB0cyA9PiB0c1xuICAgICAgfCB0cyA9PlxuICAgICAgICB0cyB8PiBMaXN0LmZpbHRlcih0ID0+IE5pYi5TaGFwZS5maXRzKHNoYXBlLCBmc3QoVGlsZS5zaGFwZXModCkpKSlcbiAgICApXG4gICAgfD4gTGlzdFV0aWwuaGRfb3B0O1xuICBsZXQgY2hpbGRyZW4gPVxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICgobCwgY2hpbGQsIHIpLCBjaGlsZHJlbikgPT4ge1xuICAgICAgICBsZXQgY2hpbGQgPVxuICAgICAgICAgIGlmIChsXG4gICAgICAgICAgICAgICsgMSA9PSByXG4gICAgICAgICAgICAgICYmIChcbiAgICAgICAgICAgICAgICBMaXN0Lm50aChyZW1vbGRlZC5tb2xkLmluXywgbCkgIT0gTGlzdC5udGgodC5tb2xkLmluXywgbClcbiAgICAgICAgICAgICAgICB8fCBFZmZlY3Quc190b3VjaGVkKHJlbW9sZGVkLmlkKVxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZW1vbGQoY2hpbGQsIExpc3QubnRoKHJlbW9sZGVkLm1vbGQuaW5fLCBsKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkO1xuICAgICAgICAgIH07XG4gICAgICAgIFtjaGlsZCwgLi4uY2hpbGRyZW5dO1xuICAgICAgfSxcbiAgICAgIEFiYS5hYmFfdHJpcGxlcyhBYmEubWsocmVtb2xkZWQuc2hhcmRzLCByZW1vbGRlZC5jaGlsZHJlbikpLFxuICAgICAgW10sXG4gICAgKTtcbiAgey4uLnJlbW9sZGVkLCBjaGlsZHJlbn07XG59XG5hbmQgcmVtb2xkX3R5cCA9IChzaGFwZSwgc2VnOiB0KTogdCA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+IFtoZCwgLi4ucmVtb2xkX3R5cChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUeXAsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfdHlwKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgIHwgU29tZSh0KSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3R5cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3R5cF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoVHlwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgd2hlbiB0LmxhYmVsID09IEZvcm0uZ2V0KFwiY29tbWFfdHlwXCIpLmxhYmVsID0+IChcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBzaGFwZSxcbiAgICAgICAgICBzZWcsXG4gICAgICAgIClcbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPVxuICAgICAgICAgIHJlbW9sZF90eXBfdW5pKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfcGF0X3VuaSA9IChzaGFwZSwgc2VnOiB0KTogKHQsIE5pYi5TaGFwZS50LCB0KSA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IChbXSwgc2hhcGUsIFtdKVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PlxuICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgIChbaGQsIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShQYXQsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IChbXSwgc2hhcGUsIHNlZylcbiAgICAgIHwgU29tZSh0KSB3aGVuICFUaWxlLmhhc19lbmQoUmlnaHQsIHQpID0+XG4gICAgICAgIGxldCAoXywgcikgPSBUaWxlLm5pYnModCk7XG4gICAgICAgIGxldCByZW1vbGRlZCA9IHJlbW9sZCh+c2hhcGU9ci5zaGFwZSwgdGwsIHIuc29ydCk7XG4gICAgICAgIGxldCAoXywgc2hhcGUsIF8pID0gc2hhcGVfYWZmaXgoTGVmdCwgcmVtb2xkZWQsIHIuc2hhcGUpO1xuICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIFtdKTtcbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKFRpbGUubmlicyh0KSkge1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFR5cH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF90eXAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9wYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCByZXN0KTtcbiAgICAgICAgICAoW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkX3R5cF0gQCByZW1vbGRlZF9wYXQsIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICAgIHJlbW9sZF9wYXRfdW5pKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKTtcbiAgICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3BhdCA9IChzaGFwZSwgc2VnOiB0KTogdCA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+IFtoZCwgLi4ucmVtb2xkX3BhdChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShQYXQsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfcGF0KHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKFRpbGUubmlicyh0KSkge1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFR5cH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3R5cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRdIEAgcmVtb2xkX3BhdChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3BhdChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfdHBhdF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgKFtoZCwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFRQYXQsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IChbXSwgc2hhcGUsIHNlZylcbiAgICAgIHwgU29tZSh0KSB3aGVuICFUaWxlLmhhc19lbmQoUmlnaHQsIHQpID0+XG4gICAgICAgIGxldCAoXywgcikgPSBUaWxlLm5pYnModCk7XG4gICAgICAgIGxldCByZW1vbGRlZCA9IHJlbW9sZCh+c2hhcGU9ci5zaGFwZSwgdGwsIHIuc29ydCk7XG4gICAgICAgIGxldCAoXywgc2hhcGUsIF8pID0gc2hhcGVfYWZmaXgoTGVmdCwgcmVtb2xkZWQsIHIuc2hhcGUpO1xuICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIFtdKTtcbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKFRpbGUubmlicyh0KSkge1xuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPVxuICAgICAgICAgICAgcmVtb2xkX3RwYXRfdW5pKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKTtcbiAgICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3RwYXQgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF90cGF0KHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFRQYXQsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfdHBhdChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF90cGF0KHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCBfID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfdHBhdChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfZXhwX3VuaSA9IChzaGFwZSwgc2VnOiB0KTogKHQsIE5pYi5TaGFwZS50LCB0KSA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IChbXSwgc2hhcGUsIFtdKVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PlxuICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX2V4cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgIChbaGQsIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShFeHAsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IChbXSwgc2hhcGUsIHNlZylcbiAgICAgIHwgU29tZSh0KSB3aGVuICFUaWxlLmhhc19lbmQoUmlnaHQsIHQpID0+XG4gICAgICAgIGxldCAoXywgcikgPSBUaWxlLm5pYnModCk7XG4gICAgICAgIGxldCByZW1vbGRlZCA9IHJlbW9sZCh+c2hhcGU9ci5zaGFwZSwgdGwsIHIuc29ydCk7XG4gICAgICAgIGxldCAoXywgc2hhcGUsIF8pID0gc2hhcGVfYWZmaXgoTGVmdCwgcmVtb2xkZWQsIHIuc2hhcGUpO1xuICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIFtdKTtcbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKFRpbGUubmlicyh0KSkge1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFRQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHBhdCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3RwYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCByZXN0KTtcbiAgICAgICAgICAoW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkX3RwYXRdIEAgcmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3BhdCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX2V4cF91bmkoc2hhcGUsIHJlc3QpO1xuICAgICAgICAgIChbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRfcGF0XSBAIHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFR5cH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF90eXAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCByZXN0KTtcbiAgICAgICAgICAoW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkX3R5cF0gQCByZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBSdWx9KSA9PlxuICAgICAgICAgIC8vIFRPRE8gcmV2aWV3IHNob3J0IGNpcmN1aXRcbiAgICAgICAgICAoW1RpbGUodCldLCBzaGFwZSwgdGwpXG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9XG4gICAgICAgICAgICByZW1vbGRfZXhwX3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9ydWwgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9ydWwoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUnVsLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKFRpbGUubmlicyh0KSkge1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IEV4cH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX2V4cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRdIEAgcmVtb2xkX3J1bChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIC8vIFRPRE8oZCkgY29udGludWluZyBvbnRvIHJ1bGUgbWlnaHQgbm90IGJlIHJpZ2h0IHJpZ2h0Li4uXG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9ydWwoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IF8gPT4gZmFpbHdpdGgoXCJyZW1vbGRfcnVsIHVuZXhwZWN0ZWRcIilcbiAgICAgICAgfVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCBbaGQsIC4uLnRsXSk7XG4gICAgICAgIHN3aXRjaCAocmVtb2xkZWQpIHtcbiAgICAgICAgfCBbXSA9PiBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkX3J1bChzaGFwZSwgdGwpXVxuICAgICAgICB8IFtfLCAuLi5fXSA9PiByZW1vbGRlZCBAIHJlbW9sZF9ydWwoc2hhcGUsIHJlc3QpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX2V4cCA9IChzaGFwZSwgc2VnOiB0KTogdCA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+IFtoZCwgLi4ucmVtb2xkX2V4cChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShFeHAsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfZXhwKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKFRpbGUubmlicyh0KSkge1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRdIEAgcmVtb2xkX2V4cChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3RwYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFR5cH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3R5cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRdIEAgcmVtb2xkX2V4cChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUnVsfSkgPT4gW1RpbGUodCksIC4uLnJlbW9sZF9ydWwoc2hhcGUsIHRsKV1cbiAgICAgICAgfCBfID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfZXhwKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxubGV0IHNrZWwgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwMCwgc2VnID0+XG4gICAgc2VnXG4gICAgfD4gTGlzdC5tYXBpKChpLCBwKSA9PiAoaSwgcCkpXG4gICAgfD4gTGlzdC5maWx0ZXIoKChfLCBwKSkgPT4gIVBpZWNlLmlzX3NlY29uZGFyeShwKSlcbiAgICB8PiBTa2VsLm1rXG4gICk7XG5cbmxldCBzb3J0ZWRfY2hpbGRyZW4gPSBMaXN0LmNvbmNhdF9tYXAoUGllY2Uuc29ydGVkX2NoaWxkcmVuKTtcbmxldCBjaGlsZHJlbiA9IHNlZyA9PiBMaXN0Lm1hcChzbmQsIHNvcnRlZF9jaGlsZHJlbihzZWcpKTtcblxubW9kdWxlIFRyaW0gPSB7XG4gIHR5cGUgc2VnID0gdDtcbiAgdHlwZSB0ID0gQWJhLnQobGlzdChTZWNvbmRhcnkudCksIEdyb3V0LnQpO1xuXG4gIGxldCBlbXB0eSA9IEFiYS5tayhbW11dLCBbXSk7XG5cbiAgbGV0IHJldiA9IEFiYS5yZXYoTGlzdC5yZXYsIEZ1bi5pZCk7XG5cbiAgbGV0IGNvbnNfdyA9ICh3OiBTZWNvbmRhcnkudCwgKHdzcywgZ3MpKSA9PiB7XG4gICAgLy8gc2FmZSBiYyBBYmEgYWx3YXlzIGhhcyBhdCBsZWFzdCBvbmUgQSBlbGVtZW50XG4gICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gICAgQWJhLm1rKFtbdywgLi4ud3NdLCAuLi53c3NdLCBncyk7XG4gIH07XG4gIGxldCBjb25zX2cgPSAoZzogR3JvdXQudCwgKHdzcywgZ3MpKSA9PlxuICAgIEFiYS5tayhbW10sIC4uLndzc10sIFtnLCAuLi5nc10pO1xuXG4gIGxldCB3cyA9ICgod3NzLCBfKTogdCk6IHNlZyA9PiBMaXN0LihtYXAoUGllY2Uuc2Vjb25kYXJ5LCBjb25jYXQod3NzKSkpO1xuXG4gIC8vIHBvc3Rjb25kOiByZXN1bHQgaXMgZWl0aGVyIDx3cz4gb3IgPHdzLGcsd3MnPlxuICBsZXQgbWVyZ2UgPSAoKHdzcywgZ3MpOiB0KTogdCA9PiB7XG4gICAgc3dpdGNoIChHcm91dC5tZXJnZShncykpIHtcbiAgICB8IE5vbmUgPT4gQWJhLm1rKFtMaXN0LmNvbmNhdCh3c3MpXSwgW10pXG4gICAgfCBTb21lKGcpID0+XG4gICAgICBsZXQgKHdzLCB3c3MpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Qod3NzKTtcbiAgICAgIEFiYS5tayhbd3MsIExpc3QuY29uY2F0KHdzcyldLCBbZ10pO1xuICAgIH07XG4gIH07XG4gIC8vIHNhbWUgYXMgbWVyZ2UgYnV0IHR5cGUgZW5jb2RlcyBwb3N0Y29uZFxuICAvLyBsZXQgbWVyZ2VkID0gKHRyaW06IHQpOiAobGlzdChTZWNvbmRhcnkudCksIG9wdGlvbigoR3JvdXQudCwgbGlzdChTZWNvbmRhcnkudCkpKSkgPT4ge1xuICAvLyAgIGxldCAod3NzLCBncykgPSBtZXJnZSh0cmltKTtcbiAgLy8gICBsZXQgKHdzLCB3c3MpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Qod3NzKTtcbiAgLy8gICBzd2l0Y2ggKGdzKSB7XG4gIC8vICAgfCBbXSA9PiAod3MsIE5vbmUpXG4gIC8vICAgfCBbZywgLi4uX10gPT4gKHdzLCBTb21lKChnLCBMaXN0LmNvbmNhdCh3c3MpKSkpXG4gIC8vICAgfTtcbiAgLy8gfTtcbiAgbGV0IHJlYyBybV91cF90b19vbmVfc3BhY2UgPVxuICAgICAgICAgICh3c3M6IGxpc3QobGlzdChTZWNvbmRhcnkudCkpKTogbGlzdChsaXN0KFNlY29uZGFyeS50KSkgPT5cbiAgICBzd2l0Y2ggKHdzcykge1xuICAgIHwgW10gPT4gW11cbiAgICB8IFtbdywgLi4ud3NdLCAuLi53c3NdIHdoZW4gU2Vjb25kYXJ5LmlzX3NwYWNlKHcpID0+IExpc3QuY29ucyh3cywgd3NzKVxuICAgIHwgW3dzLCAuLi53c3NdID0+IExpc3QuY29ucyh3cywgcm1fdXBfdG9fb25lX3NwYWNlKHdzcykpXG4gICAgfTtcblxuICBsZXQgYWRkX2dyb3V0ID0gKH5kOiBEaXJlY3Rpb24udCwgc2hhcGU6IE5pYi5TaGFwZS50LCAod3NzLCBncyk6IHQpOiB0ID0+IHtcbiAgICBsZXQgZyA9IEdyb3V0Lm1rX2ZpdHNfc2hhcGUoc2hhcGUpO1xuICAgIC8qIFdoZW4gYWRkaW5nIGEgZ3JvdXQgdG8gdGhlIGxlZnQsIGNvbnN1bWUgYSBzcGFjZS4gTm90ZVxuICAgICAgIGNoYW5nZXMgbWFkZSB0byB0aGUgbG9naWMgaGVyZSBzaG91bGQgYWxzbyB0YWtlIGludG9cbiAgICAgICBhY2NvdW50IHRoZSBvdGhlciBkaXJlY3Rpb24gaW4gJ3JlZ3JvdXQnIGJlbG93ICovXG4gICAgbGV0IHdzcycgPVxuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAvKiBSaWdodCBDb252ZXggZS5nLiBCYWNrc3BhY2UgYDF8ICsgMmAgPT4gYHw8PiArIDJgIChEb24ndCBjb25zdW1lKSAqL1xuICAgICAgLyogUmlnaHQgQ29uY2F2ZSBlLmcuIEJhY2tzcGFjZSBgMSArfCAxYCA9PiBgMSB8PjwgMWAgKERvbid0IGNvbnN1bWUpICovXG4gICAgICB8IFJpZ2h0ID0+IHdzc1xuICAgICAgLyogTGVmdCBDb252ZXggZS5nLiBJbnNlcnQgU3BhY2UgYFt8XWAgPT4gYFsgfF1gID0+IGBbPD58XWAgKENvbnN1bWUpICovXG4gICAgICAvKiBMZWZ0IENvbmNhdmUgZS5nLiBJbnNlcnQgXCJpXCIgYGxldCBhID0gMSBpfGAgPT4gYGxldCBhID0gMT48aXxgIChDb25zdW1lKSAqL1xuICAgICAgfCBMZWZ0ID0+IHJtX3VwX3RvX29uZV9zcGFjZSh3c3MpXG4gICAgICB9O1xuICAgIGNvbnNfZyhnLCAod3NzJywgZ3MpKTtcbiAgfTtcblxuICAvLyBhc3N1bWVzIGdyb3V0IGluIHRyaW0gZml0IHIgYnV0IG1heSBub3QgZml0IGxcbiAgbGV0IHJlZ3JvdXQgPSAoZDogRGlyZWN0aW9uLnQsIChsLCByKTogTmlicy5zaGFwZXMsIHRyaW06IHQpOiB0ID0+XG4gICAgaWYgKE5pYi5TaGFwZS5maXRzKGwsIHIpKSB7XG4gICAgICBsZXQgKHdzcywgZ3MpID0gdHJpbTtcbiAgICAgIC8qIFdoZW4gcmVtb3ZpbmcgYSBncm91dCB0byB0aGUgTGVmdCwgYWRkIGEgc3BhY2UuIE5vdGVcbiAgICAgICAgIGNoYW5nZXMgbWFkZSB0byB0aGUgbG9naWMgaGVyZSBzaG91bGQgYWxzbyB0YWtlIGludG9cbiAgICAgICAgIGFjY291bnQgdGhlIG90aGVyIGRpcmVjdGlvbiBpbiAnYWRkX2dyb3V0JyBhYm92ZSAqL1xuICAgICAgbGV0IG5ld19zcGFjZXMgPVxuICAgICAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAgICAgKGc6IEdyb3V0LnQpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoZy5zaGFwZSwgZCkge1xuICAgICAgICAgICAgLyogTGVmdCBDb25jYXZlIGUuZy4gYGxldCBhID0gMT48aW58YCA9PiBgbGV0IGEgPSAxIGluIHxgIChBZGQpICovXG4gICAgICAgICAgICAvKiBOT1RFKGFuZHJldyk6IE5vdCBzdXJlIHdoeSBkIGhlcmUgc2VlbXMgcmV2ZXJzZWQuIEFsc28gbm90IHN1cmUgd2h5XG4gICAgICAgICAgICAgKiByZXN0cmljdGlvbiB0byBjb25jYXZlIGlzIG5lY2Vzc2FyeSBidXQgc2VlbXMgdG8gcHJldmVudCBhZGRpdGlvblxuICAgICAgICAgICAgICogb2YgbmVlZGxlc3Mgd2hpdGVzcGFjZSBpbiBzb21lIHNpdHVhdGlvbiBzdWNoIGFzIHdoZW4gaW5zZXJ0aW5nXG4gICAgICAgICAgICAgKiBvbiBgKHwpYCwgd2hpY2ggc2VlbXMgdG8gYWRkIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHJpZ2h0IHBhcmVuc1xuICAgICAgICAgICAgICogd2l0aG91dCB0aGlzIHNoYXBlIHJlc3RpcmN0aW9uICovXG4gICAgICAgICAgICB8IChDb25jYXZlLCBSaWdodCkgPT4gU29tZShTZWNvbmRhcnkubWtfc3BhY2UoZy5pZCkpXG4gICAgICAgICAgICB8IF8gPT4gTm9uZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ3MsXG4gICAgICAgICk7XG4gICAgICAvKiBOb3RlIGJlbG93IHRoYXQgaXQgaXMgaW1wb3J0YW50IHRoYXQgd2UgYWRkIHRoZSBuZXcgc3BhY2VzXG4gICAgICAgICBiZWZvcmUgdGhlIGV4aXN0aW5nIHdzcywgYXMgZG9pbmcgb3RoZXJ3aXNlIG1heSByZXN1bHRcbiAgICAgICAgIGluIHRoZSBuZXcgc3BhY2VzIGVuZGluZyB1cCBsZWFkaW5nIGEgbGluZS4gVGhpcyBhcHByb2FjaCBpc1xuICAgICAgICAgc29tZXdoYXQgaGFja3k7IHdlIG1heSBqdXN0IHdhbnQgdG8gcmVtb3ZlIGFsbCB0aGUgc3BhY2VzXG4gICAgICAgICB3aGVuZXZlciB0aGVyZSBpcyBhIGxpbmVicmVhazsgbm90IG1ha2luZyB0aGlzIGNoYW5jZSBub3dcbiAgICAgICAgIGFzIEknbSB3b3JyaWVkIGFib3V0IGl0IGludHJvZHVjaW5nIHN1YnRsZSBqYW5rICovXG5cbiAgICAgIC8qIERhdmlkIFBSIGNvbW1lbnQ6XG4gICAgICAgICBBbGwgdGhlc2UgY2hhbmdlcyBhc3N1bWUgdGhlIHRyaW0gaXMgb3JkZXJlZCBsZWZ0LXRvLXJpZ2h0LFxuICAgICAgICAgYnV0IHRoaXMgbWF5IG5vdCBiZSB0cnVlIHdoZW4gVHJpbS5yZWdyb3V0IGlzIGNhbGxlZCBieVxuICAgICAgICAgcmVncm91dF9hZmZpeChMZWZ0LCAuLi4pIGJlbG93LCB3aGljaCByZXZlcnNlcyB0aGUgYWZmaXggYmVmb3JlXG4gICAgICAgICBwcm9jZXNzaW5nLiAoVGhpcyBkaWRuJ3QgcG9zZSBhbiBpc3N1ZSBiZWZvcmUgd2l0aCB0cmltIGJlY2F1c2VcbiAgICAgICAgIHRoZSBzZWNvbmRhcnkgYW5kIGdyb3V0IGFyZSBzeW1tZXRyaWMgYW5kIHRoZSBleGlzdGluZyBjb2RlXG4gICAgICAgICBkaWRuJ3QgYWZmZWN0IG9yZGVyLilcbiAgICAgICAgIFByb3BlciBmaXggd291bGQgcmVxdWlyZSB0aHJlYWRpbmcgdGhyb3VnaCBkaXJlY3Rpb25hbCBwYXJhbWV0ZXJcbiAgICAgICAgIGZyb20gcmVncm91dF9hZmZpeCBpbnRvIFRyaW0ucmVncm91dCBhbmQgYXBwZW5kaW5nIHRvIGNvcnJlY3Qgc2lkZS5cbiAgICAgICAgIFNpbWlsYXIgdGhyZWFkaW5nIGZvciBhZGRfZ3JvdXQuIFRoYXQgc2FpZCwgSSBjb3VsZG4ndCB0cmlnZ2VyIGFueVxuICAgICAgICAgdW5kZXNpcmFibGUgYmVoYXZpb3Igd2l0aCB0aGVzZSBjaGFuZ2VzIGFuZCBhbSBmaW5lIHdpdGggZ29pbmcgYWhlYWRcbiAgICAgICAgIHdpdGggdGhpcyBmb3Igbm93LiAqL1xuICAgICAgbGV0IHdzcyA9IFtuZXdfc3BhY2VzIEAgTGlzdC5jb25jYXQod3NzKV07XG4gICAgICBBYmEubWsod3NzLCBbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCAoXywgZ3MpIGFzIG1lcmdlZCA9IG1lcmdlKHRyaW0pO1xuICAgICAgc3dpdGNoIChncykge1xuICAgICAgfCBbXSA9PiBhZGRfZ3JvdXQofmQsIGwsIG1lcmdlZClcbiAgICAgIHwgW18sIC4uLl9dID0+IG1lcmdlZFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCB0b19zZWcgPSAodHJpbTogdCkgPT5cbiAgICB0cmltXG4gICAgfD4gQWJhLmpvaW4oTGlzdC5tYXAoUGllY2Uuc2Vjb25kYXJ5KSwgZyA9PiBbUGllY2UuR3JvdXQoZyldKVxuICAgIHw+IExpc3QuY29uY2F0O1xufTtcblxubGV0IHJlYyByZWdyb3V0ID0gKChsLCByKSwgc2VnKSA9PiB7XG4gIGxldCAodHJpbSwgciwgdGwpID0gcmVncm91dF9hZmZpeChEaXJlY3Rpb24uUmlnaHQsIHNlZywgcik7XG4gIGxldCB0cmltID0gVHJpbS5yZWdyb3V0KERpcmVjdGlvbi5SaWdodCwgKGwsIHIpLCB0cmltKTtcbiAgVHJpbS50b19zZWcodHJpbSkgQCB0bDtcbn1cbmFuZCByZWdyb3V0X2FmZml4ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIGFmZml4OiB0LCByOiBOaWIuU2hhcGUudCk6IChUcmltLnQsIE5pYi5TaGFwZS50LCB0KSA9PiB7XG4gIGxldCAodHJpbSwgcywgYWZmaXgpID1cbiAgICBmb2xkX3JpZ2h0KFxuICAgICAgKHA6IFBpZWNlLnQsICh0cmltLCByLCB0bCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChwKSB7XG4gICAgICAgIHwgU2Vjb25kYXJ5KHcpID0+IChUcmltLmNvbnNfdyh3LCB0cmltKSwgciwgdGwpXG4gICAgICAgIHwgR3JvdXQoZykgPT4gKFRyaW0uKG1lcmdlKGNvbnNfZyhnLCB0cmltKSkpLCByLCB0bClcbiAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgbGV0IGNoaWxkcmVuID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICAgICAgICAgKGhkLCB0bCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB0bCA9IHRsO1xuICAgICAgICAgICAgICAgIGxldCBoZCA9IHJlZ3JvdXQoTmliLlNoYXBlLihjb25jYXZlKCksIGNvbmNhdmUoKSksIGhkKTtcbiAgICAgICAgICAgICAgICBbaGQsIC4uLnRsXTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdC5jaGlsZHJlbixcbiAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGxldCBwID0gUGllY2UuVGlsZSh7Li4udCwgY2hpbGRyZW59KTtcbiAgICAgICAgICBsZXQgKGwnLCByJykgPVxuICAgICAgICAgICAgVGlsZS5zaGFwZXModCkgfD4gKGQgPT0gTGVmdCA/IFR1cGxlVXRpbC5zd2FwIDogRnVuLmlkKTtcbiAgICAgICAgICBsZXQgdHJpbSA9IFRyaW0ucmVncm91dChkLCAocicsIHIpLCB0cmltKTtcbiAgICAgICAgICAoVHJpbS5lbXB0eSwgbCcsIFtwLCAuLi5UcmltLnRvX3NlZyh0cmltKV0gQCB0bCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZCA9PSBMZWZ0ID8gTGlzdC5yZXYgOiBGdW4uaWQpKGFmZml4KSxcbiAgICAgIChBYmEubWsoW1tdXSwgW10pLCByLCBlbXB0eSksXG4gICAgKTtcbiAgZCA9PSBMZWZ0ID8gKFRyaW0ucmV2KHRyaW0pLCBzLCByZXYoYWZmaXgpKSA6ICh0cmltLCBzLCBhZmZpeCk7XG59O1xuXG4vLyBmb3IgaW50ZXJuYWwgdXNlIHdoZW4gZGVhbGluZyB3aXRoIHNlZ21lbnRzIGluIHJldmVyc2Ugb3JkZXIgKGVnIEFmZml4LnJlKVxuLy8gbGV0IGZsaXBfbmlicyA9XG4vLyAgIExpc3QubWFwKFxuLy8gICAgIGZ1blxuLy8gICAgIHwgKFBpZWNlLlNlY29uZGFyeShfKSB8IEdyb3V0KF8pKSBhcyBwID0+IHBcbi8vICAgICB8IFRpbGUodCkgPT4gVGlsZSh7Li4udCwgbW9sZDogTW9sZC5mbGlwX25pYnModC5tb2xkKX0pLFxuLy8gICApO1xuXG5sZXQgc3BsaXRfYnlfbWF0Y2hpbmcgPSAoaWQ6IElkLnQpOiAodCA9PiBBYmEudCh0LCBUaWxlLnQpKSA9PlxuICBBYmEuc3BsaXQoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5UaWxlKHQpIHdoZW4gdC5pZCA9PSBpZCA9PiBFaXRoZXIuUih0KVxuICAgIHwgcCA9PiBMKHApLFxuICApO1xuXG4vLyBtb2R1bGUgTWF0Y2ggPSBUaWxlLk1hdGNoLk1ha2UoT3JpZW50YXRpb24uUik7XG5sZXQgcmVjIHJlYXNzZW1ibGUgPSAoc2VnOiB0KTogdCA9PlxuICBzd2l0Y2ggKGluY29tcGxldGVfdGlsZXMoc2VnKSkge1xuICB8IFtdID0+IHNlZ1xuICB8IFt0LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAoQWJhLnRyaW0oc3BsaXRfYnlfbWF0Y2hpbmcodC5pZCwgc2VnKSkpIHtcbiAgICB8IE5vbmUgPT4gc2VnXG4gICAgfCBTb21lKChzZWdfbCwgbWF0Y2gsIHNlZ19yKSkgPT5cbiAgICAgIGxldCB0ID0gVGlsZS5yZWFzc2VtYmxlKG1hdGNoKTtcbiAgICAgIGxldCBjaGlsZHJlbiA9IExpc3QubWFwKHJlYXNzZW1ibGUsIHQuY2hpbGRyZW4pO1xuICAgICAgbGV0IHAgPSBUaWxlLnRvX3BpZWNlKHsuLi50LCBjaGlsZHJlbn0pO1xuICAgICAgc2VnX2wgQCBbcCwgLi4ucmVhc3NlbWJsZShzZWdfcildO1xuICAgIH1cbiAgfTtcblxubGV0IHRyaW1fZjogKGxpc3QoQmFzZS5waWVjZSkgPT4gbGlzdChCYXNlLnBpZWNlKSwgRGlyZWN0aW9uLnQsIHQpID0+IHQgPVxuICAodHJpbV9sLCBkLCBwcykgPT4ge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgTGVmdCA9PiBwcyB8PiB0cmltX2xcbiAgICB8IFJpZ2h0ID0+IHBzIHw+IExpc3QucmV2IHw+IHRyaW1fbCB8PiBMaXN0LnJldlxuICAgIH07XG4gIH07XG5cbmxldCB0cmltX3NlY29uZGFyeTogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBzZWNvbmRhcnkgKi9cbiAgICBsZXQgcmVjIHRyaW1fbCA9IHhzID0+XG4gICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICB8IFtdID0+IFtdXG4gICAgICB8IFtQaWVjZS5TZWNvbmRhcnkoXyksIC4uLnhzXSA9PiB0cmltX2woeHMpXG4gICAgICB8IFtfLCAuLi5fXSA9PiB4c1xuICAgICAgfTtcbiAgICB0cmltX2YodHJpbV9sLCBkLCBwcyk7XG4gIH07XG5cbmxldCB0cmltX2dyb3V0OiAoRGlyZWN0aW9uLnQsIHQpID0+IHQgPVxuICAoZCwgcHMpID0+IHtcbiAgICAvKiBUcmltcyBsZWFkaW5nL3RyYWlsaW5nIGdyb3V0ICovXG4gICAgbGV0IHJlYyB0cmltX2w6IGxpc3QoQmFzZS5waWVjZSkgPT4gbGlzdChCYXNlLnBpZWNlKSA9XG4gICAgICB4cyA9PlxuICAgICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICAgIHwgW10gPT4gW11cbiAgICAgICAgfCBbR3JvdXQoXyksIC4uLnhzXSA9PiB0cmltX2woeHMpXG4gICAgICAgIHwgW18sIC4uLl9dID0+IHhzXG4gICAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgdHJpbV9zZWNvbmRhcnlfYW5kX2dyb3V0OiAoRGlyZWN0aW9uLnQsIHQpID0+IHQgPVxuICAoZCwgcHMpID0+IHtcbiAgICAvKiBUcmltcyBsZWFkaW5nL3RyYWlsaW5nIHNlY29uZGFyeSwgY29udGludWluZ1xuICAgICAgIHRvIHRyaW0gYXJvdW5kIGdyb3V0IHVudGlsIGZpcnN0IFRpbGUgaXMgcmVhY2hlZCAqL1xuICAgIGxldCByZWMgdHJpbV9sOiBsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSkgPVxuICAgICAgeHMgPT5cbiAgICAgICAgc3dpdGNoICh4cykge1xuICAgICAgICB8IFtdID0+IFtdXG4gICAgICAgIHwgW1NlY29uZGFyeShfKSB8IEdyb3V0KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgICB8IFtfLCAuLi5fXSA9PiB4c1xuICAgICAgICB9O1xuICAgIHRyaW1fZih0cmltX2wsIGQsIHBzKTtcbiAgfTtcblxubGV0IHRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeTogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBncm91dCwgc2tpcHBpbmcgb3ZlciBzZWNvbmRhcnksXG4gICAgICAgYnV0IG5vdCBza2lwcGluZyBvdmVyIG90aGVyIHBpZWNlcy4gKi9cbiAgICBsZXQgcmVjIHRyaW1fbDogbGlzdChCYXNlLnBpZWNlKSA9PiBsaXN0KEJhc2UucGllY2UpID1cbiAgICAgIHhzID0+XG4gICAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICB8IFtTZWNvbmRhcnkodyksIC4uLnhzXSA9PiBbU2Vjb25kYXJ5KHcpLCAuLi50cmltX2woeHMpXVxuICAgICAgICB8IFtHcm91dChfKSwgLi4ueHNdID0+IHRyaW1fbCh4cylcbiAgICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgICAgfTtcbiAgICB0cmltX2YodHJpbV9sLCBkLCBwcyk7XG4gIH07XG5cbmxldCBlZGdlX3NoYXBlX29mID0gKGQ6IERpcmVjdGlvbi50LCBwczogdCk6IG9wdGlvbihOaWIuU2hhcGUudCkgPT4ge1xuICBsZXQgdHJpbW1lZCA9IHRyaW1fc2Vjb25kYXJ5KGQsIHBzKTtcbiAgc3dpdGNoIChkLCBMaXN0VXRpbC5oZF9vcHQodHJpbW1lZCksIExpc3RVdGlsLmxhc3Rfb3B0KHRyaW1tZWQpKSB7XG4gIHwgKFJpZ2h0LCBfLCBTb21lKHApKSA9PiBwIHw+IFBpZWNlLnNoYXBlcyB8PiBPcHRpb24ubWFwKHNuZClcbiAgfCAoTGVmdCwgU29tZShwKSwgXykgPT4gcCB8PiBQaWVjZS5zaGFwZXMgfD4gT3B0aW9uLm1hcChmc3QpXG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuXG5sZXQgZWRnZV9kaXJlY3Rpb25fb2YgPSAoZDogRGlyZWN0aW9uLnQsIHBzOiB0KTogb3B0aW9uKERpcmVjdGlvbi50KSA9PlxuICBPcHRpb24ubWFwKE5pYi5TaGFwZS5hYnNvbHV0ZShkKSwgZWRnZV9zaGFwZV9vZihkLCBwcykpO1xuXG5sZXQgcmVjIHNlcmlhbGl6ZSA9IChzZWc6IHQpID0+XG4gIHNlZ1xuICB8PiBMaXN0LmNvbmNhdF9tYXAoXG4gICAgICAgZnVuXG4gICAgICAgfCAoUGllY2UuU2Vjb25kYXJ5KF8pIHwgR3JvdXQoXykgfCBUaWxlKHtzaGFyZHM6IFtfXSwgX30pKSBhcyBwID0+IFtcbiAgICAgICAgICAgcCxcbiAgICAgICAgIF1cbiAgICAgICB8IFRpbGUodCkgPT4ge1xuICAgICAgICAgICBsZXQgc2hhcmRzID1cbiAgICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgIFRpbGUudG9fcGllY2UsXG4gICAgICAgICAgICAgICBUaWxlLnNwbGl0X3NoYXJkcyh0LmlkLCB0LmxhYmVsLCB0Lm1vbGQsIHQuc2hhcmRzKSxcbiAgICAgICAgICAgICApO1xuICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBMaXN0Lm1hcChzZXJpYWxpemUsIHQuY2hpbGRyZW4pO1xuICAgICAgICAgICBBYmEubWsoc2hhcmRzLCBjaGlsZHJlbilcbiAgICAgICAgICAgfD4gQWJhLmpvaW4ocyA9PiBbc10sIEZ1bi5pZClcbiAgICAgICAgICAgfD4gTGlzdC5jb25jYXQ7XG4gICAgICAgICB9LFxuICAgICApO1xuXG5sZXQgc2FtZWxpbmVfc2Vjb25kYXJ5ID1cbiAgTGlzdC5mb3JfYWxsKFxuICAgIGZ1blxuICAgIHwgUGllY2UuU2Vjb25kYXJ5KHcpID0+ICFTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpXG4gICAgfCBfID0+IGZhbHNlLFxuICApO1xuXG5sZXQgZXhwZWN0ZWRfc29ydHMgPSAoc29ydDogU29ydC50LCBzZWc6IHQpOiBsaXN0KChpbnQsIFNvcnQudCkpID0+IHtcbiAgbGV0IHAgPSBMaXN0Lm50aChzZWcpO1xuICBsZXQgcmVjIGdvID0gKHNvcnQ6IFNvcnQudCwgc2tlbDogU2tlbC50KTogbGlzdCgobGlzdChpbnQpLCBTb3J0LnQpKSA9PiB7XG4gICAgbGV0IHJvb3QgPSBTa2VsLnJvb3Qoc2tlbCk7XG4gICAgbGV0IGluc2lkZV9zb3J0cyA9XG4gICAgICBBYmEuYWJhX3RyaXBsZXMocm9vdClcbiAgICAgIHw+IExpc3QuY29uY2F0X21hcCgoKG5fbCwga2lkLCBuX3IpKSA9PiB7XG4gICAgICAgICAgIGxldCAoXywgc19sKSA9IFBpZWNlLm5pYl9zb3J0cyhwKG5fbCkpO1xuICAgICAgICAgICBsZXQgKHNfciwgXykgPSBQaWVjZS5uaWJfc29ydHMocChuX3IpKTtcbiAgICAgICAgICAgbGV0IHMgPSBzX2wgPT0gc19yID8gc19sIDogU29ydC5Bbnk7XG4gICAgICAgICAgIGdvKHMsIGtpZCk7XG4gICAgICAgICB9KTtcbiAgICBsZXQgb3V0c2lkZV9zb3J0cyA9IHtcbiAgICAgIGxldCBucyA9IEFiYS5nZXRfYXMocm9vdCk7XG4gICAgICBsZXQgKGxfc29ydCwgXykgPSBQaWVjZS5uaWJfc29ydHMocChBYmEuZmlyc3RfYShyb290KSkpO1xuICAgICAgbGV0IChfLCByX3NvcnQpID0gUGllY2UubmliX3NvcnRzKHAoQWJhLmxhc3RfYShyb290KSkpO1xuICAgICAgc3dpdGNoIChza2VsKSB7XG4gICAgICB8IE9wKF8pID0+IFsobnMsIHNvcnQpXVxuICAgICAgfCBQcmUoXywgcikgPT4gWyhucywgc29ydCldIEAgZ28ocl9zb3J0LCByKVxuICAgICAgfCBQb3N0KGwsIF8pID0+IGdvKGxfc29ydCwgbCkgQCBbKG5zLCBzb3J0KV1cbiAgICAgIHwgQmluKGwsIF8sIHIpID0+IGdvKGxfc29ydCwgbCkgQCBbKG5zLCBzb3J0KV0gQCBnbyhyX3NvcnQsIHIpXG4gICAgICB9O1xuICAgIH07XG4gICAgb3V0c2lkZV9zb3J0cyBAIGluc2lkZV9zb3J0cztcbiAgfTtcbiAgZ28oc29ydCwgc2tlbChzZWcpKVxuICB8PiBMaXN0LmNvbmNhdF9tYXAoKChucywgcykpID0+IExpc3QubWFwKG4gPT4gKG4sIHMpLCBucykpO1xufTtcblxubGV0IHJlYyBob2xlcyA9IChzZWdtZW50OiB0KTogbGlzdChHcm91dC50KSA9PlxuICBMaXN0LmNvbmNhdF9tYXAoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5TZWNvbmRhcnkoXykgPT4gW11cbiAgICB8IFRpbGUodCkgPT4gTGlzdC5jb25jYXRfbWFwKGhvbGVzLCB0LmNoaWxkcmVuKVxuICAgIHwgR3JvdXQoZykgPT4gW2ddLFxuICAgIHNlZ21lbnQsXG4gICk7XG5cbmxldCBnZXRfY2hpbGRyZW5zOiB0ID0+IGxpc3QodCkgPVxuICBMaXN0LmNvbmNhdF9tYXAoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5UaWxlKHQpID0+IHQuY2hpbGRyZW5cbiAgICB8IF8gPT4gW10sXG4gICk7XG5cbmxldCByZWMgZ2V0X2luY29tcGxldGVfaWRzID0gKHNlZzogdCk6IGxpc3QoSWQudCkgPT5cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB7XG4gICAgICAgIGxldCBpZHMgPSBMaXN0LmNvbmNhdF9tYXAoZ2V0X2luY29tcGxldGVfaWRzLCB0LmNoaWxkcmVuKTtcbiAgICAgICAgVGlsZS5pc19jb21wbGV0ZSh0KSA/IGlkcyA6IFt0LmlkLCAuLi5pZHNdO1xuICAgICAgfVxuICAgIHwgXyA9PiBbXSxcbiAgICBzZWcsXG4gICk7XG5cbmxldCBpZHNfb2ZfaW5jb21wbGV0ZV90aWxlc19pbl9iaWRlbGltaXRlZHMgPSAoc2VnOiB0KTogbGlzdChJZC50KSA9PlxuICBnZXRfY2hpbGRyZW5zKHNlZykgfD4gTGlzdC5jb25jYXQgfD4gZ2V0X2luY29tcGxldGVfaWRzO1xuIiwib3BlbiBVdGlsO1xuXG4vLyBtb2R1bGUgUHJlZml4ID0gQWZmaXguTWFrZShPcmllbnRhdGlvbi5MKTtcbi8vIG1vZHVsZSBTdWZmaXggPSBBZmZpeC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSAoU2VnbWVudC50LCBTZWdtZW50LnQpO1xuXG5sZXQgZW1wdHkgPSBTZWdtZW50LihlbXB0eSwgZW1wdHkpO1xuXG5sZXQgbm9fc2libGluZ3M6IHQgPT4gYm9vbCA9IHMgPT4gcyA9PSBlbXB0eTtcblxubGV0IHVuemlwOiAoaW50LCBTZWdtZW50LnQpID0+IHQgPSBMaXN0VXRpbC5zcGxpdF9uO1xubGV0IHppcCA9ICh+c2VsPVNlZ21lbnQuZW1wdHksIChwcmUsIHN1Zik6IHQpID0+XG4gIFNlZ21lbnQuY29uY2F0KFtwcmUsIHNlbCwgc3VmXSk7XG5cbmxldCBwcmVwZW5kID0gKGQ6IERpcmVjdGlvbi50LCBzZWc6IFNlZ21lbnQudCwgKGwsIHIpOiB0KTogdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IChsIEAgc2VnLCByKVxuICB8IFJpZ2h0ID0+IChsLCBzZWcgQCByKVxuICB9O1xuXG5sZXQgY29uY2F0ID0gKHNpYnNzOiBsaXN0KHQpKTogdCA9PlxuICBzaWJzc1xuICB8PiBMaXN0LnNwbGl0XG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpXG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5jb25jYXQpXG4gIHw+IFBhaXJVdGlsLm1hcF9zbmQoTGlzdC5jb25jYXQpO1xuXG4vLyBsZXQgY29uc2lzdGVudF9zaGFyZHMgPSAoKHByZSwgc3VmKTogdCk6IGJvb2wgPT4ge1xuLy8gICBsZXQgc2hhcmRzX3ByZSA9IFByZWZpeC5zaGFyZHMocHJlKTtcbi8vICAgbGV0IHNoYXJkc19zdWYgPSBTdWZmaXguc2hhcmRzKHN1Zik7XG4vLyAgIExpc3RVdGlsLmdyb3VwX2J5KFNoYXJkLmlkLCBzaGFyZHNfcHJlIEAgc2hhcmRzX3N1Zilcbi8vICAgfD4gTGlzdC5mb3JfYWxsKCgoXywgc2hhcmRzKSkgPT4gU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMpICE9IFtdKTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoKHByZSwgXykgYXMgc2liczogdCwgczogU29ydC50KTogdCA9PlxuICBTZWdtZW50LnJlbW9sZCh6aXAoc2licyksIHMpIHw+IHVuemlwKExpc3QubGVuZ3RoKHByZSkpO1xuXG5sZXQgc2hhcGVzID0gKChwcmUsIHN1Zik6IHQpID0+IHtcbiAgbGV0IHMgPSBOaWIuU2hhcGUuY29uY2F2ZSgpO1xuICBsZXQgKF8sIGwsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICBsZXQgKF8sIHIsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgKGwsIHIpO1xufTtcblxubGV0IGlzX21pc21hdGNoID0gKChsLCByKTogdCk6IGJvb2wgPT4ge1xuICAvKiBwcmVkaWN0cyBpZiBncm91dCBpcyBuZWNjZXNzYXJ5IGJldHdlZW4gc2libGluZ3MgKi9cbiAgc3dpdGNoIChTZWdtZW50LmVkZ2Vfc2hhcGVfb2YoTGVmdCwgciksIFNlZ21lbnQuZWRnZV9zaGFwZV9vZihSaWdodCwgbCkpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gZmFsc2VcbiAgfCAoczEsIHMyKSA9PiBzMSA9PSBzMlxuICB9O1xufTtcblxubGV0IGNvbnRhaW5zX21hdGNoaW5nID0gKHQ6IFRpbGUudCwgKHByZSwgc3VmKTogdCkgPT5cbiAgU2VnbWVudC4oY29udGFpbnNfbWF0Y2hpbmcodCwgcHJlKSB8fCBjb250YWluc19tYXRjaGluZyh0LCBzdWYpKTtcblxubGV0IHB1c2ggPSAob250bzogRGlyZWN0aW9uLnQsIHA6IFBpZWNlLnQsIChwcmUsIHN1Zik6IHQpOiB0ID0+XG4gIHN3aXRjaCAob250bykge1xuICB8IExlZnQgPT4gKHByZSBAIFtwXSwgc3VmKVxuICB8IFJpZ2h0ID0+IChwcmUsIFtwLCAuLi5zdWZdKVxuICB9O1xuXG5sZXQgcG9wID0gKGZyb206IERpcmVjdGlvbi50LCAocHJlLCBzdWYpOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChmcm9tKSB7XG4gIHwgTGVmdCA9PlxuICAgIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHByZSlcbiAgICB8PiBPcHRpb24ubWFwKCgocHJlLCBwKSkgPT4ge1xuICAgICAgICAgbGV0IChwcmUnLCBwKSA9IFBpZWNlLnBvcF9yKHApO1xuICAgICAgICAgKHAsIChwcmUgQCBwcmUnLCBzdWYpKTtcbiAgICAgICB9KVxuICB8IFJpZ2h0ID0+XG4gICAgTGlzdFV0aWwuc3BsaXRfZmlyc3Rfb3B0KHN1ZilcbiAgICB8PiBPcHRpb24ubWFwKCgocCwgc3VmKSkgPT4ge1xuICAgICAgICAgbGV0IChwLCBzdWYnKSA9IFBpZWNlLnBvcF9sKHApO1xuICAgICAgICAgKHAsIChwcmUsIHN1ZicgQCBzdWYpKTtcbiAgICAgICB9KVxuICB9O1xuXG5sZXQgaW5jb21wbGV0ZV90aWxlcyA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyk7XG5cbmxldCBzcGxpdF9ieV9tYXRjaGluZyA9IGlkID0+IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc3BsaXRfYnlfbWF0Y2hpbmcoaWQpKTtcblxubGV0IHJlYXNzZW1ibGUgPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LnJlYXNzZW1ibGUpO1xuXG5sZXQgcmVncm91dCA9ICgocHJlLCBzdWYpOiB0KSA9PiB7XG4gIGxldCBzID0gTmliLlNoYXBlLmNvbmNhdmUoKTtcbiAgbGV0IHN1ZiA9IFNlZ21lbnQucmVncm91dF9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgbGV0ICh0cmltX2wsIHNfbCwgcHJlKSA9IFNlZ21lbnQucmVncm91dF9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICAoKHByZSwgc19sLCB0cmltX2wpLCBzdWYpO1xufTtcblxubGV0IGxlZnRfbmVpZ2hib3I6IHQgPT4gb3B0aW9uKFBpZWNlLnQpID0gKChsLCBfKSkgPT4gTGlzdFV0aWwubGFzdF9vcHQobCk7XG5cbmxldCByaWdodF9uZWlnaGJvcjogdCA9PiBvcHRpb24oUGllY2UudCkgPSAoKF8sIHIpKSA9PiBMaXN0VXRpbC5oZF9vcHQocik7XG5cbmxldCBuZWlnaGJvcnM6IHQgPT4gKG9wdGlvbihQaWVjZS50KSwgb3B0aW9uKFBpZWNlLnQpKSA9XG4gIG4gPT4gKGxlZnRfbmVpZ2hib3IobiksIHJpZ2h0X25laWdoYm9yKG4pKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5ID0gKChsX3NpYnMsIHJfc2licyk6IHQpID0+IChcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShSaWdodCwgbF9zaWJzKSxcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fZ3JvdXQgPSAoKGxfc2licywgcl9zaWJzKTogdCkgPT4gKFxuICBTZWdtZW50LnRyaW1fZ3JvdXQoUmlnaHQsIGxfc2licyksXG4gIFNlZ21lbnQudHJpbV9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCA9ICgobF9zaWJzLCByX3NpYnMpOiB0KSA9PiAoXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnlfYW5kX2dyb3V0KFJpZ2h0LCBsX3NpYnMpLFxuICBTZWdtZW50LnRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IGRpcmVjdGlvbl9iZXR3ZWVuID0gKChsLCByKTogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgLyogRmFjaW5nIGRpcmVjdGlvbiBvZiB0aGUgc2hhcmVkIG5pYiBiZXR3ZWVuIGwgJiByICovXG4gIHN3aXRjaCAoU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihMZWZ0LCByKSkge1xuICB8IE5vbmUgPT4gU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihSaWdodCwgbClcbiAgfCBkID0+IGRcbiAgfTtcblxubGV0IG1vbGRfZml0dGluZ19iZXR3ZWVuID0gKHNvcnQ6IFNvcnQudCwgcDogUHJlY2VkZW5jZS50LCBzaWJzOiB0KTogTW9sZC50ID0+XG4gIHN3aXRjaCAoZGlyZWN0aW9uX2JldHdlZW4oc2licykpIHtcbiAgfCBTb21lKGQpID0+IE1vbGQuY2hldnJvbihzb3J0LCBwLCBkKVxuICB8IE5vbmUgPT4gTW9sZC5ta19vcChzb3J0LCBbXSlcbiAgfTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc29ydGVkX2NoaWxkcmVuKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zaGFyZF9hZmZpeDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwID0gaW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBsYWJlbDogTGFiZWwudCxcbiAgbW9sZDogTW9sZC50LFxuICBzaGFyZHM6IChsaXN0KGludCksIGxpc3QoaW50KSksXG4gIGNoaWxkcmVuOiAobGlzdChTZWdtZW50LnQpLCBsaXN0KFNlZ21lbnQudCkpLFxufTtcblxuLy8gVE9ETyhkKSByZXZpc2l0IG5hbWluZyB3LnIudC4gb3V0ZXIgdnMgaW5uZXIgc2hhcmRzXG5sZXQgbF9zaGFyZCA9IGEgPT5cbiAgTGlzdFV0aWwuaGRfb3B0KGZzdChhLnNoYXJkcykpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbmxldCByX3NoYXJkID0gYSA9PlxuICBMaXN0VXRpbC5sYXN0X29wdChzbmQoYS5zaGFyZHMpKVxuICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG5cbmxldCBuaWJzID0gKGE6IHQpID0+IHtcbiAgbGV0IChsLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9bF9zaGFyZChhKSwgYS5tb2xkKTtcbiAgbGV0IChfLCByKSA9IE1vbGQubmlicyh+aW5kZXg9cl9zaGFyZChhKSwgYS5tb2xkKTtcbiAgKGwsIHIpO1xufTtcbmxldCBzaGFwZXMgPSBhID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnMoYSk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB6aXAgPSAoY2hpbGQ6IFNlZ21lbnQudCwge2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBjaGlsZHJlbn06IHQpOiBUaWxlLnQgPT4ge1xuICBpZCxcbiAgbGFiZWwsXG4gIG1vbGQsXG4gIHNoYXJkczogZnN0KHNoYXJkcykgQCBzbmQoc2hhcmRzKSxcbiAgY2hpbGRyZW46IGZzdChjaGlsZHJlbikgQCBbY2hpbGQsIC4uLnNuZChjaGlsZHJlbildLFxufTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IChhOiB0KSA9PiB7XG4gIGxldCBuID0gTGlzdC5sZW5ndGgoZnN0KGEuY2hpbGRyZW4pKTtcbiAgbGV0IHQgPSB6aXAoU2VnbWVudC5lbXB0eSwgYSk7XG4gIGxldCAobCwgXywgcikgPSBMaXN0VXRpbC5zcGxpdF9udGgobiwgVGlsZS5zb3J0ZWRfY2hpbGRyZW4odCkpO1xuICAobCwgcik7XG59O1xuXG4vLyBUT0RPIGZsYXR0ZW4gd2l0aCBzaGFyZCBpbmRpY2VzXG4vLyBsZXQgc3RlcCA9IChmcmFtZTogdCk6IHN0ZXAgPT4ge1xuLy8gICBsZXQgKHByZWZpeCwgXykgPSBmcmFtZS5jaGlsZHJlbjtcbi8vICAgTGlzdC5sZW5ndGgocHJlZml4KTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoYTogdCk6IGxpc3QodCkgPT5cbiAgTW9sZHMuZ2V0KGEubGFiZWwpIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLmEsIG1vbGR9KTtcblxuLy8gbGV0IHNvcnQgPSAoZnJhbWU6IHQpOiBTb3J0LnQgPT4ge1xuLy8gICBhc3NlcnQoc3RlcChmcmFtZSkgPj0gMCAmJiBzdGVwKGZyYW1lKSA8IExpc3QubGVuZ3RoKGZyYW1lLm1vbGQuaW5fKSk7XG4vLyAgIExpc3QubnRoKGZyYW1lLm1vbGQuaW5fLCBzdGVwKGZyYW1lKSk7XG4vLyB9O1xubGV0IHNvcnQgPSAoYTogdCk6IFNvcnQudCA9PiB7XG4gIGxldCAocHJlLCBzdWYpID0gYS5zaGFyZHM7XG4gIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQocHJlKSwgc3VmKSB7XG4gIHwgKFNvbWUoKF8sIGkpKSwgW2osIC4uLl9dKSA9PlxuICAgIGxldCAoXywgbCkgPSBNb2xkLm5pYnMofmluZGV4PWksIGEubW9sZCk7XG4gICAgbGV0IChyLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9aiwgYS5tb2xkKTtcbiAgICBsLnNvcnQgPT0gci5zb3J0ID8gbC5zb3J0IDogQW55O1xuICB8IF8gPT4gcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpXG4gIH07XG59O1xuXG5sZXQgZGlzYXNzZW1ibGUgPVxuICAgICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIGNoaWxkcmVuOiAoa2lkc19sLCBraWRzX3IpfTogdCk6IFNpYmxpbmdzLnQgPT4ge1xuICBsZXQgKHNoYXJkc19sLCBzaGFyZHNfcikgPVxuICAgIHNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgZmxhdHRlbiA9IChzaGFyZHMsIGtpZHMpID0+XG4gICAgQWJhLm1rKHNoYXJkcywga2lkcykgfD4gQWJhLmpvaW4ocCA9PiBbcF0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuICAoZmxhdHRlbihzaGFyZHNfbCwga2lkc19sKSwgZmxhdHRlbihzaGFyZHNfciwga2lkc19yKSk7XG59O1xuXG5sZXQgY29udGFpbmVyX3NoYXJkcyA9IChhOiB0KTogKFBpZWNlLnQsIFBpZWNlLnQpID0+IHtcbiAgbGV0IChzaGFyZHNfbCwgc2hhcmRzX3IpID1cbiAgICBhLnNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGEuaWQsIGEubGFiZWwsIGEubW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgbCA9XG4gICAgTGlzdFV0aWwubGFzdF9vcHQoc2hhcmRzX2wpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbiAgbGV0IHIgPVxuICAgIExpc3RVdGlsLmhkX29wdChzaGFyZHNfcikgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpO1xuICAobCwgcik7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaF9sOiBBYmEudChUaWxlLnQsIFNlZ21lbnQudCkgYXMgJ20sIG1hdGNoX3I6ICdtKTogdCA9PiB7XG4gIC8vIFRPRE8oZCkgYml0IGhhY2t5LCBuZWVkIHRvIGRvIGEgZmxpcC9vcmllbnRhdGlvbiBwYXNzXG4gIC8vIGxldCBtYXRjaF9sID0gQWJhLm1hcF9iKFNlZ21lbnQucmV2LCBtYXRjaF9sKTtcbiAgbGV0ICh0X2wsIHRfcikgPSBUaWxlLihyZWFzc2VtYmxlKG1hdGNoX2wpLCByZWFzc2VtYmxlKG1hdGNoX3IpKTtcbiAgYXNzZXJ0KHRfbC5pZCA9PSB0X3IuaWQpO1xuICB7XG4gICAgaWQ6IHRfbC5pZCxcbiAgICBsYWJlbDogdF9sLmxhYmVsLFxuICAgIG1vbGQ6IHRfbC5tb2xkLFxuICAgIHNoYXJkczogKHRfbC5zaGFyZHMsIHRfci5zaGFyZHMpLFxuICAgIGNoaWxkcmVuOiAodF9sLmNoaWxkcmVuLCB0X3IuY2hpbGRyZW4pLFxuICB9O1xufTtcblxuLy8gbW9kdWxlIE1hdGNoID0ge1xuLy8gICBtb2R1bGUgUHJlZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLkwpO1xuLy8gICBtb2R1bGUgU3VmZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG4vLyAgIHR5cGUgYW5jZXN0b3IgPSB0O1xuLy8gICB0eXBlIHQgPSAoUHJlZml4LnQsIFN1ZmZpeC50KTtcblxuLy8gICBsZXQgaWQgPSAoKHByZSwgXyk6IHQpID0+IFByZWZpeC5pZChwcmUpO1xuXG4vLyAgIGxldCBzaGFyZHMgPSAoKHByZSwgc3VmKTogdCkgPT5cbi8vICAgICBMaXN0LnJldihQcmVmaXguc2hhcmRzKHByZSkpIEAgU3VmZml4LnNoYXJkcyhzdWYpO1xuXG4vLyAgIGxldCBsYWJlbCA9ICgoXywgc3VmKSkgPT4gU3VmZml4LmxhYmVsKHN1Zik7XG5cbi8vICAgbGV0IGxlbmd0aCA9ICgocHJlLCBzdWYpKSA9PiBQcmVmaXgubGVuZ3RoKHByZSkgKyBTdWZmaXgubGVuZ3RoKHN1Zik7XG5cbi8vICAgbGV0IGNoaWxkcmVuID0gKChwcmUsIHN1ZikpID0+IChcbi8vICAgICBQcmVmaXguY2hpbGRyZW4ocHJlKSxcbi8vICAgICBTdWZmaXguY2hpbGRyZW4oc3VmKSxcbi8vICAgKTtcblxuLy8gICBsZXQgbW9sZCA9IChtOiB0KSA9PiB7XG4vLyAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgIHN3aXRjaCAoU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMobSkpKSB7XG4vLyAgICAgICB8IFtdID0+XG4vLyAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGV2ZXJ5dGhpbmcgd2lsbCBiZSBzdWJzZXF1ZW50bHkgcmVtb2xkZWRcbi8vICAgICAgICAgTW9sZHMuZ2V0KGxhYmVsKG0pKVxuLy8gICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgIH07XG4vLyAgICAgYXNzZXJ0KG1vbGRzICE9IFtdKTtcbi8vICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgfTtcblxuLy8gICBsZXQgam9pbiA9ICgocHJlLCBzdWYpOiB0KSA9PiAoUHJlZml4LmpvaW4ocHJlKSwgU3VmZml4LmpvaW4oc3VmKSk7XG5cbi8vICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24oYW5jZXN0b3IpID0+IHtcbi8vICAgICBsZXQgaWQgPSBpZChtKTtcbi8vICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICBsZXQgbW9sZCA9IG1vbGQobSk7XG4vLyAgICAgbGVuZ3RoKG0pID09IFRpbGUuTGFiZWwubGVuZ3RoKGxhYmVsKVxuLy8gICAgICAgPyBTb21lKHtpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVuOiBjaGlsZHJlbihtKX0pIDogTm9uZTtcbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdlbmVyYXRpb24gPSAoQW5jZXN0b3IudCwgU2libGluZ3MudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoZ2VuZXJhdGlvbik7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgcGFyZW50OiB0ID0+IG9wdGlvbihBbmNlc3Rvci50KSA9XG4gIGZ1blxuICB8IFtdID0+IE5vbmVcbiAgfCBbKHBhcmVudCwgXyksIC4uLl9dID0+IFNvbWUocGFyZW50KTtcblxubGV0IHNvcnQgPVxuICBmdW5cbiAgfCBbXSA9PiBTb3J0LnJvb3RcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBBbmNlc3Rvci5zb3J0KGEpO1xuXG5sZXQgemlwX2dlbiA9IChzZWc6IFNlZ21lbnQudCwgKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKTogU2VnbWVudC50ID0+XG4gIHByZSBAIFtQaWVjZS5UaWxlKEFuY2VzdG9yLnppcChzZWcsIGEpKSwgLi4uc3VmXTtcbmxldCB6aXAgPSAoc2VnOiBTZWdtZW50LnQsIGFuY3M6IHQpID0+IGFuY3MgfD4gTGlzdC5mb2xkX2xlZnQoemlwX2dlbiwgc2VnKTtcblxubGV0IGRpc2Fzc2VtYmxlID0gYW5jcyA9PlxuICBhbmNzXG4gIHw+IExpc3QubWFwKCgoYSwgc2licykpID0+XG4gICAgICAgU2libGluZ3MuY29uY2F0KFtBbmNlc3Rvci5kaXNhc3NlbWJsZShhKSwgc2lic10pXG4gICAgIClcbiAgfD4gU2libGluZ3MuY29uY2F0O1xuXG4vLyBsZXQgcmVtb2xkID0gKGFuY2VzdG9yczogdCk6IGxpc3QodCkgPT5cbi8vICAgTGlzdC5mb2xkX3JpZ2h0KFxuLy8gICAgICgoYSwgc2licyksIHJlbW9sZGVkKSA9PiB7XG4vLyAgICAgICBvcGVuIExpc3RVdGlsLlN5bnRheDtcbi8vICAgICAgIGxldCsgYW5jZXN0b3JzID0gcmVtb2xkZWRcbi8vICAgICAgIGFuZCsgc2licyA9IFNpYmxpbmdzLnJlbW9sZChzaWJzKVxuLy8gICAgICAgYW5kKyBhID0gQW5jZXN0b3IucmVtb2xkKGEpO1xuLy8gICAgICAgWyhhLCBzaWJzKSwgLi4uYW5jZXN0b3JzXTtcbi8vICAgICB9LFxuLy8gICAgIGFuY2VzdG9ycyxcbi8vICAgICBbZW1wdHldLFxuLy8gICApO1xuXG5sZXQgc2tlbCA9ICgoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pOiBTa2VsLnQgPT4ge1xuICBsZXQgbiA9IExpc3QubGVuZ3RoKHByZSk7XG4gIGxldCBhID0gKG4sIFBpZWNlLlRpbGUoQW5jZXN0b3IuemlwKFNlZ21lbnQuZW1wdHksIGEpKSk7XG4gIGxldCBwcmUgPVxuICAgIHByZVxuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBsZXQgc3VmID1cbiAgICBzdWZcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChuICsgMSArIGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBTa2VsLm1rKHByZSBAIFthLCAuLi5zdWZdKTtcbn07XG5cbi8vIGxldCBzb3J0cyA9IChpLCAoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pID0+IHtcbi8vICAgbGV0IG4gPSBMaXN0Lmxlbmd0aChwcmUpO1xuLy8gICBpZiAoaSA8IExpc3QubGVuZ3RoKHByZSkpIHtcbi8vICAgICBMaXN0Lm50aF9vcHQocHJlLCBpKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2UgaWYgKGkgPiBuKSB7XG4vLyAgICAgTGlzdC5udGhfb3B0KHN1ZiwgaSAtIDEgLSBuKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2Uge1xuLy8gICAgIGEubW9sZC5vdXQ7XG4vLyAgIH07XG4vLyB9O1xuXG5sZXQgcmVncm91dCA9IChhbmNzOiB0KSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKChhLCBzaWJzKTogZ2VuZXJhdGlvbiwgcmVncm91dGVkKSA9PiB7XG4gICAgICBsZXQgcmVncm91dGVkID0gcmVncm91dGVkO1xuICAgICAgbGV0ICgocHJlLCBsLCB0cmltX2wpLCAodHJpbV9yLCByLCBzdWYpKSA9IFNpYmxpbmdzLnJlZ3JvdXQoc2licyk7XG4gICAgICBsZXQgKGwnLCByJykgPSBUdXBsZVV0aWwubWFwMihOaWIuc2hhcGUsIE1vbGQubmlicyhhLm1vbGQpKTtcbiAgICAgIGxldCB0cmltX2wgPSBTZWdtZW50LlRyaW0ucmVncm91dChMZWZ0LCAobCwgbCcpLCB0cmltX2wpO1xuICAgICAgbGV0IHRyaW1fciA9IFNlZ21lbnQuVHJpbS5yZWdyb3V0KFJpZ2h0LCAocicsIHIpLCB0cmltX3IpO1xuICAgICAgbGV0IHByZSA9IHByZSBAIFNlZ21lbnQuVHJpbS50b19zZWcodHJpbV9sKTtcbiAgICAgIGxldCBzdWYgPSBTZWdtZW50LlRyaW0udG9fc2VnKHRyaW1fcikgQCBzdWY7XG4gICAgICBbKGEsIChwcmUsIHN1ZikpLCAuLi5yZWdyb3V0ZWRdO1xuICAgIH0sXG4gICAgYW5jcyxcbiAgICBlbXB0eSxcbiAgKTtcblxubGV0IHBhcmVudF9tYXRjaGVzID0gKHQ6IFRpbGUudCwgYW5jczogdCkgPT5cbiAgc3dpdGNoIChhbmNzKSB7XG4gIHwgW10gPT4gZmFsc2VcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBhLmlkID09IHQuaWRcbiAgfTtcbiIsInR5cGUgdCA9IGludDtcbmxldCB0ID0gcmVmKDApO1xuXG5sZXQgdGljayA9ICgpOiB0ID0+IHtcbiAgbGV0IHRpbWUgPSB0XjtcbiAgdCA6PSB0aW1lICsgMTtcbiAgdGltZTtcbn07XG5cbmxldCBsdCA9ICg8KTtcblxubGV0IG1pbiA9IG1pbjtcbmxldCBtYXggPSBtYXg7XG5cbmxldCBtYXhfdGltZSA9IEludC5tYXhfaW50O1xuIiwiaW5jbHVkZSBJZC5NYXA7XG50eXBlIHQgPSBJZC5NYXAudChUaW1lLnQpO1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBsZXQgdG91Y2hlZDogdDtcbn07XG5cbmxldCB1cGRhdGUgPSAodDogVGltZS50LCBlczogbGlzdChFZmZlY3QudCksIHRkOiB0KSA9PlxuICBlc1xuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAodGQsIGU6IEVmZmVjdC50KSA9PlxuICAgICAgICAgc3dpdGNoIChlKSB7XG4gICAgICAgICB8IERlbGV0ZShpZCkgPT4gdGQgfD4gcmVtb3ZlKGlkKVxuICAgICAgICAgfCBUb3VjaChpZCkgPT5cbiAgICAgICAgICAgdGRcbiAgICAgICAgICAgfD4gdXBkYXRlKFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBTb21lKHQpXG4gICAgICAgICAgICAgICAgfCBTb21lKHQnKSA9PiBTb21lKFRpbWUubWF4KHQsIHQnKSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgIH0sXG4gICAgICAgdGQsXG4gICAgICk7XG4iLCJsZXQgbGFtID0gXCLOu1wiO1xubGV0IHVwX2Fycm93ID0gXCLihpFcIjtcbmxldCBkb3duX2Fycm93ID0gXCLihpNcIjtcbmxldCBsZWZ0X2Fycm93ID0gXCLihpBcIjtcbmxldCByaWdodF9hcnJvdyA9IFwi4oaSXCI7XG5sZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiO1xubGV0IHp3c3AgPSBcIuKAi1wiO1xuXG5sZXQgdHlwZUFycm93U3ltID0gXCLihpJcIjsgLy8gVSsyMTkyIFwiUmlnaHR3YXJkcyBBcnJvd1wiXG5sZXQgY2FzdEFycm93U3ltID0gXCLih6hcIjtcblxubGV0IGVsbGlwc2lzID0gXCJcXHhFMlxceDgwXFx4QTZcIjtcblxuLy8gY29waWVkIGZyb20gaGF6ZWxcbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByb3cgPSBpbnQ7XG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNvbCA9IGludDtcblxubW9kdWxlIFBvaW50ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICByb3csXG4gICAgY29sLFxuICB9O1xuICBsZXQgemVybyA9IHtyb3c6IDAsIGNvbDogMH07XG5cbiAgbGV0IGVxdWFsczogKHQsIHQpID0+IGJvb2wgPSAocCwgcSkgPT4gcC5yb3cgPT0gcS5yb3cgJiYgcC5jb2wgPT0gcS5jb2w7XG5cbiAgdHlwZSBjb21wYXJpc29uID1cbiAgICB8IEV4YWN0XG4gICAgfCBVbmRlclxuICAgIHwgT3ZlcjtcblxuICBsZXQgY29tcCA9IChjdXJyZW50LCB0YXJnZXQpOiBjb21wYXJpc29uID0+XG4gICAgc3dpdGNoICgpIHtcbiAgICB8IF8gd2hlbiBjdXJyZW50ID09IHRhcmdldCA9PiBFeGFjdFxuICAgIHwgXyB3aGVuIGN1cnJlbnQgPCB0YXJnZXQgPT4gVW5kZXJcbiAgICB8IF8gPT4gT3ZlclxuICAgIH07XG4gIGxldCBjb21wYXJlID0gKHAxLCBwMikgPT5cbiAgICBzd2l0Y2ggKGNvbXAocDEsIHAyKSkge1xuICAgIHwgRXhhY3QgPT4gMFxuICAgIHwgVW5kZXIgPT4gKC0xKVxuICAgIHwgT3ZlciA9PiAxXG4gICAgfTtcblxuICBsZXQgZGNvbXAgPSAoZGlyZWN0aW9uOiBEaXJlY3Rpb24udCwgYSwgYikgPT5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgIHwgUmlnaHQgPT4gY29tcChhLCBiKVxuICAgIHwgTGVmdCA9PiBjb21wKGIsIGEpXG4gICAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbWVhc3VyZW1lbnQgPSB7XG4gIG9yaWdpbjogUG9pbnQudCxcbiAgbGFzdDogUG9pbnQudCxcbn07XG5cbi8vIGluZGVudGF0aW9uIHJlbGF0aXZlIHRvIGNvbnRhaW5lclxudHlwZSByZWxfaW5kZW50ID0gaW50O1xuLy8gaW5kZW50YXRpb24gcmVsYXRpdmUgdG8gY29kZSBjb250YWluZXJcbnR5cGUgYWJzX2luZGVudCA9IGludDtcblxubW9kdWxlIFJvd3MgPSB7XG4gIGluY2x1ZGUgSW50TWFwO1xuICB0eXBlIHNoYXBlID0ge1xuICAgIGluZGVudDogY29sLFxuICAgIG1heF9jb2w6IGNvbCxcbiAgfTtcbiAgdHlwZSB0ID0gSW50TWFwLnQoc2hhcGUpO1xuXG4gIGxldCBtYXhfY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICBycyB8PiBMaXN0Lm1hcChyID0+IGZpbmQociwgbWFwKS5tYXhfY29sKSB8PiBMaXN0LmZvbGRfbGVmdChtYXgsIDApO1xuXG4gIGxldCBtaW5fY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICByc1xuICAgIHw+IExpc3QubWFwKHIgPT4gZmluZChyLCBtYXApLmluZGVudClcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChtaW4sIEludC5tYXhfaW50KTtcbn07XG5cbm1vZHVsZSBTaGFyZHMgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzaGFyZCA9IChpbnQsIG1lYXN1cmVtZW50KTtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KHNoYXJkKTtcblxuICAvLyBlbGVtZW50cyBvZiByZXR1cm5lZCBsaXN0IGFyZSBub25lbXB0eVxuICBsZXQgcmVjIHNwbGl0X2J5X3JvdzogdCA9PiBsaXN0KHQpID1cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgc3dpdGNoIChzcGxpdF9ieV9yb3codGwpKSB7XG4gICAgICB8IFtdID0+IFtbaGRdXVxuICAgICAgfCBbcm93LCAuLi5yb3dzXSA9PlxuICAgICAgICBzbmQoTGlzdC5oZChyb3cpKS5vcmlnaW4ucm93ID09IHNuZChoZCkub3JpZ2luLnJvd1xuICAgICAgICAgID8gW1toZCwgLi4ucm93XSwgLi4ucm93c10gOiBbW2hkXSwgcm93LCAuLi5yb3dzXVxuICAgICAgfTtcbiAgLy8gbGV0IGxhc3QgPSAoc2hhcmRzOiB0KSA9PlxuICAvLyAgIHNoYXJkc1xuICAvLyAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKVxuICAvLyAgIHw+IExpc3RVdGlsLmxhc3Rfb3B0XG4gIC8vICAgfD4gT3B0aW9uLm1hcChzbmQpO1xufTtcblxudHlwZSB0ID0ge1xuICB0aWxlczogSWQuTWFwLnQoU2hhcmRzLnQpLFxuICBncm91dDogSWQuTWFwLnQobWVhc3VyZW1lbnQpLFxuICBzZWNvbmRhcnk6IElkLk1hcC50KG1lYXN1cmVtZW50KSxcbiAgcm93czogUm93cy50LFxuICBsaW5lYnJlYWtzOiBJZC5NYXAudChyZWxfaW5kZW50KSxcbn07XG5cbmxldCBlbXB0eSA9IHtcbiAgdGlsZXM6IElkLk1hcC5lbXB0eSxcbiAgZ3JvdXQ6IElkLk1hcC5lbXB0eSxcbiAgc2Vjb25kYXJ5OiBJZC5NYXAuZW1wdHksXG4gIHJvd3M6IFJvd3MuZW1wdHksXG4gIGxpbmVicmVha3M6IElkLk1hcC5lbXB0eSxcbn07XG5cbmxldCBhZGRfcyA9IChpZDogSWQudCwgaTogaW50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICB0aWxlczpcbiAgICBtYXAudGlsZXNcbiAgICB8PiBJZC5NYXAudXBkYXRlKFxuICAgICAgICAgaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoaSwgbSldKVxuICAgICAgICAgfCBTb21lKG1zKSA9PlxuICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgIFsoaSwgbSksIC4uLm1zXVxuICAgICAgICAgICAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKSxcbiAgICAgICAgICAgKSxcbiAgICAgICApLFxufTtcblxuLy8gYXNzdW1lcyB0aWxlIGlzIHNpbmdsZSBzaGFyZFxubGV0IGFkZF90ID0gKHQ6IFRpbGUudCwgbSwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgdGlsZXM6XG4gICAgbWFwLnRpbGVzXG4gICAgfD4gSWQuTWFwLnVwZGF0ZShcbiAgICAgICAgIHQuaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoVGlsZS5sX3NoYXJkKHQpLCBtKV0pXG4gICAgICAgICB8IFNvbWUobXMpID0+IFNvbWUoWyhUaWxlLmxfc2hhcmQodCksIG0pLCAuLi5tc10pLFxuICAgICAgICksXG59O1xubGV0IGFkZF9nID0gKGc6IEdyb3V0LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIGdyb3V0OiBtYXAuZ3JvdXQgfD4gSWQuTWFwLmFkZChnLmlkLCBtKSxcbn07XG5sZXQgYWRkX3cgPSAodzogU2Vjb25kYXJ5LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHNlY29uZGFyeTogbWFwLnNlY29uZGFyeSB8PiBJZC5NYXAuYWRkKHcuaWQsIG0pLFxufTtcbmxldCBhZGRfcCA9IChwOiBQaWVjZS50LCBtLCBtYXApID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gYWRkX3codywgbSwgbWFwKSxcbiAgICAgICBnID0+IGFkZF9nKGcsIG0sIG1hcCksXG4gICAgICAgdCA9PiBhZGRfdCh0LCBtLCBtYXApLFxuICAgICApO1xuXG5sZXQgYWRkX3JvdyA9IChyb3c6IGludCwgc2hhcGU6IFJvd3Muc2hhcGUsIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHJvd3M6IFJvd3MuYWRkKHJvdywgc2hhcGUsIG1hcC5yb3dzKSxcbn07XG5cbmxldCBhZGRfbGIgPSAoaWQsIGluZGVudCwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgbGluZWJyZWFrczogSWQuTWFwLmFkZChpZCwgaW5kZW50LCBtYXAubGluZWJyZWFrcyksXG59O1xuXG5sZXQgc2luZ2xldG9uX3cgPSAodywgbSkgPT4gZW1wdHkgfD4gYWRkX3codywgbSk7XG5sZXQgc2luZ2xldG9uX2cgPSAoZywgbSkgPT4gZW1wdHkgfD4gYWRkX2coZywgbSk7XG5sZXQgc2luZ2xldG9uX3MgPSAoaWQsIHNoYXJkLCBtKSA9PiBlbXB0eSB8PiBhZGRfcyhpZCwgc2hhcmQsIG0pO1xuXG4vLyBUT0RPKGQpIHJlbmFtZVxubGV0IGZpbmRfb3B0X3NoYXJkcyA9ICh0OiBUaWxlLnQsIG1hcCkgPT4gSWQuTWFwLmZpbmRfb3B0KHQuaWQsIG1hcC50aWxlcyk7XG5sZXQgZmluZF9zaGFyZHMgPSAodDogVGlsZS50LCBtYXApID0+IElkLk1hcC5maW5kKHQuaWQsIG1hcC50aWxlcyk7XG5cbmxldCBmaW5kX29wdF9sYiA9IChpZCwgbWFwKSA9PiBJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC5saW5lYnJlYWtzKTtcblxubGV0IGZpbmRfc2hhcmRzJyA9IChpZDogSWQudCwgbWFwKSA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHNzKSA9PiBzc1xuICB9O1xuXG5sZXQgZmluZF93ID0gKHc6IFNlY29uZGFyeS50LCBtYXApOiBtZWFzdXJlbWVudCA9PlxuICBJZC5NYXAuZmluZCh3LmlkLCBtYXAuc2Vjb25kYXJ5KTtcbmxldCBmaW5kX2cgPSAoZzogR3JvdXQudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4gSWQuTWFwLmZpbmQoZy5pZCwgbWFwLmdyb3V0KTtcbi8vIHJldHVybnMgdGhlIG1lYXN1cmVtZW50IHNwYW5uaW5nIHRoZSB3aG9sZSB0aWxlXG5sZXQgZmluZF90ID0gKHQ6IFRpbGUudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4ge1xuICBsZXQgc2hhcmRzID0gSWQuTWFwLmZpbmQodC5pZCwgbWFwLnRpbGVzKTtcbiAgbGV0IGZpcnN0ID0gTGlzdFV0aWwuYXNzb2NfZXJyKFRpbGUubF9zaGFyZCh0KSwgc2hhcmRzLCBcImZpbmRfdFwiKTtcbiAgbGV0IGxhc3QgPSBMaXN0VXRpbC5hc3NvY19lcnIoVGlsZS5yX3NoYXJkKHQpLCBzaGFyZHMsIFwiZmluZF90XCIpO1xuICB7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH07XG59O1xuLy8gbGV0IGZpbmRfYSA9ICh7c2hhcmRzOiAobCwgciksIF99IGFzIGE6IEFuY2VzdG9yLnQsIG1hcCkgPT5cbi8vICAgTGlzdC5hc3NvYyhsIEAgciwgSWQuTWFwLmZpbmQoYS5pZCwgbWFwLnRpbGVzKSk7XG5sZXQgZmluZF9wID0gKHA6IFBpZWNlLnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gZmluZF93KHcsIG1hcCksXG4gICAgICAgZyA9PiBmaW5kX2coZywgbWFwKSxcbiAgICAgICB0ID0+IGZpbmRfdCh0LCBtYXApLFxuICAgICApO1xuXG5sZXQgZmluZF9ieV9pZCA9IChpZDogSWQudCwgbWFwOiB0KTogb3B0aW9uKG1lYXN1cmVtZW50KSA9PiB7XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBtYXAuc2Vjb25kYXJ5KSkge1xuICB8IFNvbWUobSkgPT4gU29tZShtKVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLmdyb3V0KSkge1xuICAgIHwgU29tZShtKSA9PiBTb21lKG0pXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICAgICAgfCBTb21lKHNoYXJkcykgPT5cbiAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoTGlzdC5oZChzaGFyZHMpIHw+IGZzdCwgc2hhcmRzLCBcImZpbmRfYnlfaWRcIik7XG4gICAgICAgIGxldCBsYXN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoXG4gICAgICAgICAgICBMaXN0VXRpbC5sYXN0KHNoYXJkcykgfD4gZnN0LFxuICAgICAgICAgICAgc2hhcmRzLFxuICAgICAgICAgICAgXCJmaW5kX2J5X2lkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgU29tZSh7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH0pO1xuICAgICAgfCBOb25lID0+XG4gICAgICAgIFByaW50Zi5wcmludGYoXCJNZWFzdXJlZC5XQVJOSU5HOiBpZCAlcyBub3QgZm91bmRcIiwgSWQudG9fc3RyaW5nKGlkKSk7XG4gICAgICAgIE5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxubGV0IHBvc3RfdGlsZV9pbmRlbnQgPSAodDogVGlsZS50KSA9PiB7XG4gIC8vIGhhY2sgZm9yIGluZGVudCBmb2xsb3dpbmcgZnVuL2lmIHRpbGVzLlxuICAvLyBwcm9wZXIgZml4IGludm9sdmVzIHVwZGF0aW5nIG1vbGQgZGF0YXR5cGVcbiAgLy8gdG8gc3BlY2lmeSB3aGV0aGVyIGEgcmlnaHQtZmFjaW5nIGNvbmNhdmVcbiAgLy8gdGlwIGltcG9zZXMgaW5kZW50YXRpb24gb24gYSBmb2xsb3dpbmcgbmV3bGluZS5cbiAgbGV0IGNvbXBsZXRlX2Z1biA9XG4gICAgVGlsZS5pc19jb21wbGV0ZSh0KVxuICAgICYmIChcbiAgICAgIHQubGFiZWwgPT0gRm9ybS5nZXQoXCJmdW5fXCIpLmxhYmVsIHx8IHQubGFiZWwgPT0gRm9ybS5nZXQoXCJpZl9cIikubGFiZWxcbiAgICApO1xuICBsZXQgbWlzc2luZ19yaWdodF9leHRyZW1lID0gVGlsZS5yX3NoYXJkKHQpIDwgTGlzdC5sZW5ndGgodC5sYWJlbCkgLSAxO1xuICBjb21wbGV0ZV9mdW4gfHwgbWlzc2luZ19yaWdodF9leHRyZW1lO1xufTtcblxubGV0IG1pc3NpbmdfbGVmdF9leHRyZW1lID0gKHQ6IFRpbGUudCkgPT4gVGlsZS5sX3NoYXJkKHQpID4gMDtcblxubGV0IGlzX2luZGVudGVkX21hcCA9IChzZWc6IFNlZ21lbnQudCkgPT4ge1xuICBsZXQgcmVjIGdvID0gKH5pc19pbmRlbnRlZD1mYWxzZSwgfm1hcD1JZC5NYXAuZW1wdHksIHNlZzogU2VnbWVudC50KSA9PlxuICAgIHNlZ1xuICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKChpc19pbmRlbnRlZCwgbWFwKSwgcDogUGllY2UudCkgPT5cbiAgICAgICAgICAgc3dpdGNoIChwKSB7XG4gICAgICAgICAgIHwgU2Vjb25kYXJ5KHcpIHdoZW4gU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KSA9PiAoXG4gICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgIElkLk1hcC5hZGQody5pZCwgaXNfaW5kZW50ZWQsIG1hcCksXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICB8IFNlY29uZGFyeShfKVxuICAgICAgICAgICB8IEdyb3V0KF8pID0+IChpc19pbmRlbnRlZCwgbWFwKVxuICAgICAgICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgICAgICBsZXQgaXNfaW5kZW50ZWQgPSBpc19pbmRlbnRlZCB8fCBwb3N0X3RpbGVfaW5kZW50KHQpO1xuICAgICAgICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgICAgICAgdC5jaGlsZHJlblxuICAgICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICAgIChtYXAsIGNoaWxkKSA9PiBnbyh+aXNfaW5kZW50ZWQ9dHJ1ZSwgfm1hcCwgY2hpbGQpLFxuICAgICAgICAgICAgICAgICAgICBtYXAsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIChpc19pbmRlbnRlZCwgbWFwKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgIChpc19pbmRlbnRlZCwgbWFwKSxcbiAgICAgICApXG4gICAgfD4gc25kO1xuICBnbyhzZWcpO1xufTtcblxubGV0IG9mX3NlZ21lbnQgPSAofm9sZDogdD1lbXB0eSwgfnRvdWNoZWQ9VG91Y2hlZC5lbXB0eSwgc2VnOiBTZWdtZW50LnQpOiB0ID0+IHtcbiAgbGV0IGlzX2luZGVudGVkID0gaXNfaW5kZW50ZWRfbWFwKHNlZyk7XG5cbiAgLy8gcmVjdXJzaXZlIGFjcm9zcyBzZWcncyBiaWRlbGltaXRlZCBjb250YWluZXJzXG4gIGxldCByZWMgZ29fbmVzdGVkID1cbiAgICAgICAgICAoXG4gICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgfmNvbnRhaW5lcl9pbmRlbnQ6IGFic19pbmRlbnQ9MCxcbiAgICAgICAgICAgIH5vcmlnaW49UG9pbnQuemVybyxcbiAgICAgICAgICAgIHNlZzogU2VnbWVudC50LFxuICAgICAgICAgIClcbiAgICAgICAgICA6IChQb2ludC50LCB0KSA9PiB7XG4gICAgbGV0IGZpcnN0X3RvdWNoZWRfaW5jb21wbGV0ZSA9XG4gICAgICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhzZWcpKSB7XG4gICAgICB8IFtdID0+IE5vbmVcbiAgICAgIHwgdHMgPT5cbiAgICAgICAgdHNcbiAgICAgICAgfD4gTGlzdC5tYXAoKHQ6IFRpbGUudCkgPT4gVG91Y2hlZC5maW5kX29wdCh0LmlkLCB0b3VjaGVkKSlcbiAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgKGFjYywgdG91Y2hlZCkgPT5cbiAgICAgICAgICAgICAgIHN3aXRjaCAoYWNjLCB0b3VjaGVkKSB7XG4gICAgICAgICAgICAgICB8IChTb21lKHRpbWUpLCBTb21lKHRpbWUnKSkgPT4gU29tZShUaW1lLm1pbih0aW1lLCB0aW1lJykpXG4gICAgICAgICAgICAgICB8IChTb21lKHRpbWUpLCBfKVxuICAgICAgICAgICAgICAgfCAoXywgU29tZSh0aW1lKSkgPT4gU29tZSh0aW1lKVxuICAgICAgICAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICAgKVxuICAgICAgfTtcblxuICAgIC8vIHJlY3Vyc2l2ZSBhY3Jvc3Mgc2VnJ3MgbGlzdCBzdHJ1Y3R1cmVcbiAgICBsZXQgcmVjIGdvX3NlcSA9XG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIH5tYXAsXG4gICAgICAgICAgICAgIH5jb250YWluZWRfaW5kZW50OiByZWxfaW5kZW50PTAsXG4gICAgICAgICAgICAgIH5vcmlnaW46IFBvaW50LnQsXG4gICAgICAgICAgICAgIHNlZzogU2VnbWVudC50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiAoUG9pbnQudCwgdCkgPT5cbiAgICAgIHN3aXRjaCAoc2VnKSB7XG4gICAgICB8IFtdID0+XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIG1hcFxuICAgICAgICAgIHw+IGFkZF9yb3coXG4gICAgICAgICAgICAgICBvcmlnaW4ucm93LFxuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICBpbmRlbnQ6IGNvbnRhaW5lcl9pbmRlbnQgKyBjb250YWluZWRfaW5kZW50LFxuICAgICAgICAgICAgICAgICBtYXhfY29sOiBvcmlnaW4uY29sLFxuICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICApO1xuICAgICAgICAob3JpZ2luLCBtYXApO1xuICAgICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgICBsZXQgKGNvbnRhaW5lZF9pbmRlbnQsIG9yaWdpbiwgbWFwKSA9XG4gICAgICAgICAgc3dpdGNoIChoZCkge1xuICAgICAgICAgIHwgU2Vjb25kYXJ5KHcpIHdoZW4gU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KSA9PlxuICAgICAgICAgICAgbGV0IHJvd19pbmRlbnQgPSBjb250YWluZXJfaW5kZW50ICsgY29udGFpbmVkX2luZGVudDtcbiAgICAgICAgICAgIGxldCBpbmRlbnQgPVxuICAgICAgICAgICAgICBpZiAoU2VnbWVudC5zYW1lbGluZV9zZWNvbmRhcnkodGwpKSB7XG4gICAgICAgICAgICAgICAgMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgICAgICAgICAgVG91Y2hlZC5maW5kX29wdCh3LmlkLCB0b3VjaGVkKSxcbiAgICAgICAgICAgICAgICAgIGZpcnN0X3RvdWNoZWRfaW5jb21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgIGZpbmRfb3B0X2xiKHcuaWQsIG9sZCksXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgfCAoU29tZSh0b3VjaGVkKSwgU29tZSh0b3VjaGVkJyksIFNvbWUoaW5kZW50KSlcbiAgICAgICAgICAgICAgICAgICAgd2hlbiBUaW1lLmx0KHRvdWNoZWQsIHRvdWNoZWQnKSA9PiBpbmRlbnRcbiAgICAgICAgICAgICAgICB8IF8gPT5cbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lZF9pbmRlbnQgKyAoSWQuTWFwLmZpbmQody5pZCwgaXNfaW5kZW50ZWQpID8gMiA6IDApXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCBsYXN0ID1cbiAgICAgICAgICAgICAgUG9pbnQue3Jvdzogb3JpZ2luLnJvdyArIDEsIGNvbDogY29udGFpbmVyX2luZGVudCArIGluZGVudH07XG4gICAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgIHw+IGFkZF93KHcsIHtvcmlnaW4sIGxhc3R9KVxuICAgICAgICAgICAgICB8PiBhZGRfcm93KFxuICAgICAgICAgICAgICAgICAgIG9yaWdpbi5yb3csXG4gICAgICAgICAgICAgICAgICAge2luZGVudDogcm93X2luZGVudCwgbWF4X2NvbDogb3JpZ2luLmNvbH0sXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfD4gYWRkX2xiKHcuaWQsIGluZGVudCk7XG4gICAgICAgICAgICAoaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgU2Vjb25kYXJ5KHcpID0+XG4gICAgICAgICAgICBsZXQgd3NwYWNlX2xlbmd0aCA9XG4gICAgICAgICAgICAgIFVuaWNvZGUubGVuZ3RoKFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCkpO1xuICAgICAgICAgICAgbGV0IGxhc3QgPSB7Li4ub3JpZ2luLCBjb2w6IG9yaWdpbi5jb2wgKyB3c3BhY2VfbGVuZ3RofTtcbiAgICAgICAgICAgIGxldCBtYXAgPSBtYXAgfD4gYWRkX3codywge29yaWdpbiwgbGFzdH0pO1xuICAgICAgICAgICAgKGNvbnRhaW5lZF9pbmRlbnQsIGxhc3QsIG1hcCk7XG4gICAgICAgICAgfCBHcm91dChnKSA9PlxuICAgICAgICAgICAgbGV0IGxhc3QgPSB7Li4ub3JpZ2luLCBjb2w6IG9yaWdpbi5jb2wgKyAxfTtcbiAgICAgICAgICAgIGxldCBtYXAgPSBtYXAgfD4gYWRkX2coZywge29yaWdpbiwgbGFzdH0pO1xuICAgICAgICAgICAgKGNvbnRhaW5lZF9pbmRlbnQsIGxhc3QsIG1hcCk7XG4gICAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBMaXN0Lm50aCh0LmxhYmVsKTtcbiAgICAgICAgICAgIGxldCBhZGRfc2hhcmQgPSAob3JpZ2luLCBzaGFyZCwgbWFwKSA9PiB7XG4gICAgICAgICAgICAgIGxldCBsYXN0ID1cbiAgICAgICAgICAgICAgICBQb2ludC57XG4gICAgICAgICAgICAgICAgICAuLi5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICBjb2w6IG9yaWdpbi5jb2wgKyBTdHJpbmcubGVuZ3RoKHRva2VuKHNoYXJkKSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgbGV0IG1hcCA9IG1hcCB8PiBhZGRfcyh0LmlkLCBzaGFyZCwge29yaWdpbiwgbGFzdH0pO1xuICAgICAgICAgICAgICAobGFzdCwgbWFwKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgKGxhc3QsIG1hcCkgPVxuICAgICAgICAgICAgICBBYmEubWsodC5zaGFyZHMsIHQuY2hpbGRyZW4pXG4gICAgICAgICAgICAgIHw+IEFiYS5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICAgc2hhcmQgPT4gYWRkX3NoYXJkKG9yaWdpbiwgc2hhcmQsIG1hcCksXG4gICAgICAgICAgICAgICAgICAgKChvcmlnaW4sIG1hcCksIGNoaWxkLCBzaGFyZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgbGV0IChjaGlsZF9sYXN0LCBjaGlsZF9tYXApID1cbiAgICAgICAgICAgICAgICAgICAgICAgZ29fbmVzdGVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmNvbnRhaW5lcl9pbmRlbnQ9Y29udGFpbmVyX2luZGVudCArIGNvbnRhaW5lZF9pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgIGFkZF9zaGFyZChjaGlsZF9sYXN0LCBzaGFyZCwgY2hpbGRfbWFwKTtcbiAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgKGNvbnRhaW5lZF9pbmRlbnQsIGxhc3QsIG1hcCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgbGV0ICh0bF9sYXN0LCBtYXApID0gZ29fc2VxKH5tYXAsIH5jb250YWluZWRfaW5kZW50LCB+b3JpZ2luLCB0bCk7XG4gICAgICAgICh0bF9sYXN0LCBtYXApO1xuICAgICAgfTtcbiAgICBnb19zZXEofm1hcCwgfm9yaWdpbiwgc2VnKTtcbiAgfTtcbiAgc25kKGdvX25lc3RlZCh+bWFwPWVtcHR5LCBzZWcpKTtcbn07XG5cbmxldCBsZW5ndGggPSAoc2VnOiBTZWdtZW50LnQsIG1hcDogdCk6IGludCA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IDBcbiAgfCBbcF0gPT5cbiAgICBsZXQgbSA9IGZpbmRfcChwLCBtYXApO1xuICAgIG0ubGFzdC5jb2wgLSBtLm9yaWdpbi5jb2w7XG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBsZXQgZmlyc3QgPSBmaW5kX3AoaGQsIG1hcCk7XG4gICAgbGV0IGxhc3QgPSBmaW5kX3AoTGlzdFV0aWwubGFzdCh0bCksIG1hcCk7XG4gICAgbGFzdC5sYXN0LmNvbCAtIGZpcnN0Lm9yaWdpbi5jb2w7XG4gIH07XG5cbmxldCBzZWdtZW50X29yaWdpbiA9IChzZWc6IFNlZ21lbnQudCk6IG9wdGlvbihQb2ludC50KSA9PlxuICBPcHRpb24ubWFwKFxuICAgIGZpcnN0ID0+IGZpbmRfcChmaXJzdCwgb2Zfc2VnbWVudChzZWcpKS5vcmlnaW4sXG4gICAgTGlzdFV0aWwuaGRfb3B0KHNlZyksXG4gICk7XG5cbmxldCBzZWdtZW50X2xhc3QgPSAoc2VnOiBTZWdtZW50LnQpOiBvcHRpb24oUG9pbnQudCkgPT5cbiAgT3B0aW9uLm1hcChcbiAgICBsYXN0ID0+IGZpbmRfcChsYXN0LCBvZl9zZWdtZW50KHNlZykpLmxhc3QsXG4gICAgTGlzdFV0aWwubGFzdF9vcHQoc2VnKSxcbiAgKTtcblxubGV0IHNlZ21lbnRfaGVpZ2h0ID0gKHNlZzogU2VnbWVudC50KSA9PlxuICBzd2l0Y2ggKHNlZ21lbnRfbGFzdChzZWcpLCBzZWdtZW50X29yaWdpbihzZWcpKSB7XG4gIHwgKFNvbWUobGFzdCksIFNvbWUoZmlyc3QpKSA9PiAxICsgbGFzdC5yb3cgLSBmaXJzdC5yb3dcbiAgfCBfID0+IDBcbiAgfTtcblxubGV0IHNlZ21lbnRfd2lkdGggPSAoc2VnOiBTZWdtZW50LnQpOiBpbnQgPT5cbiAgSW50TWFwLmZvbGQoXG4gICAgKF8sIHttYXhfY29sLCBffTogUm93cy5zaGFwZSwgYWNjKSA9PiBtYXgobWF4X2NvbCwgYWNjKSxcbiAgICBvZl9zZWdtZW50KHNlZykucm93cyxcbiAgICAwLFxuICApO1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJ1ZmZlciA9XG4gIHwgVW5wYXJzZWRcbiAgfCBQYXJzZWQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbW9kZSA9XG4gIHwgTm9ybWFsXG4gIHwgQnVmZmVyKGJ1ZmZlcik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgZm9jdXM6IERpcmVjdGlvbi50LFxuICBjb250ZW50OiBTZWdtZW50LnQsXG4gIG1vZGUsXG59O1xuXG4vKiBOT1RFOiBiYWNrcGFjayBubyBsb25nZXIgdXNlcyBzZWxlY3Rpb24gZm9jdXMgKi9cbmxldCBtayA9ICh+bW9kZT1Ob3JtYWwsIH5mb2N1cz1EaXJlY3Rpb24uTGVmdCwgY29udGVudDogU2VnbWVudC50KSA9PiB7XG4gIGZvY3VzLFxuICBjb250ZW50LFxuICBtb2RlLFxufTtcblxubGV0IG1rX2J1ZmZlciA9IGJ1ZmZlciA9PiBtayh+bW9kZT1CdWZmZXIoYnVmZmVyKSwgfmZvY3VzPURpcmVjdGlvbi5MZWZ0KTtcblxubGV0IGlzX2J1ZmZlcjogdCA9PiBib29sID1cbiAgZnVuXG4gIHwge21vZGU6IEJ1ZmZlcihfKSwgX30gPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbmxldCBidWZmZXJfaWRzID0gKHNlbDogdCk6IGxpc3QoSWQudCkgPT4ge1xuICAvKiBDb2xsZWN0IGlkcyBvZiB0b2tlbnMgaW4gYnVmZmVyIGZvciBzdHlsaW5nIHB1cnBvc2VzLiBUaGlzIGlzXG4gICAqIGN1cnJlbnRseSBuZWNlc3NhcnkgYXMgdGhlIHNlbGVjdGlvbiBpcyBub3QgcGVyc2lzdGVkIHRocm91Z2hcbiAgICogdW56aXBwaW5nIGZvciBkaXNwbGF5ICovXG4gIGxldCBidWZmZXIgPSBpc19idWZmZXIoc2VsKSA/IHNlbC5jb250ZW50IDogW107XG4gIElkLk1hcC5iaW5kaW5ncyhNZWFzdXJlZC5vZl9zZWdtZW50KGJ1ZmZlcikudGlsZXMpIHw+IExpc3QubWFwKGZzdCk7XG59O1xuXG5sZXQgZW1wdHkgPSBtayhTZWdtZW50LmVtcHR5KTtcblxubGV0IG1hcCA9IChmLCBzZWwpID0+IHsuLi5zZWwsIGNvbnRlbnQ6IGYoc2VsLmNvbnRlbnQpfTtcblxubGV0IHRvZ2dsZV9mb2N1cyA9IHNlbGVjdGlvbiA9PiB7XG4gIC4uLnNlbGVjdGlvbixcbiAgZm9jdXM6IFV0aWwuRGlyZWN0aW9uLnRvZ2dsZShzZWxlY3Rpb24uZm9jdXMpLFxufTtcblxubGV0IGlzX2VtcHR5ID0gKHNlbGVjdGlvbjogdCkgPT4gc2VsZWN0aW9uLmNvbnRlbnQgPT0gU2VnbWVudC5lbXB0eTtcblxubGV0IHB1c2ggPSAocDogUGllY2UudCwge2ZvY3VzLCBjb250ZW50LCBtb2RlfTogdCk6IHQgPT4ge1xuICBsZXQgY29udGVudCA9XG4gICAgU2VnbWVudC5yZWFzc2VtYmxlKFxuICAgICAgc3dpdGNoIChmb2N1cykge1xuICAgICAgfCBMZWZ0ID0+IFNlZ21lbnQuY29ucyhwLCBjb250ZW50KVxuICAgICAgfCBSaWdodCA9PiBTZWdtZW50LnNub2MoY29udGVudCwgcClcbiAgICAgIH0sXG4gICAgKTtcbiAge2ZvY3VzLCBjb250ZW50LCBtb2RlfTtcbn07XG5cbmxldCBwb3AgPSAoc2VsOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChzZWwuZm9jdXMsIHNlbC5jb250ZW50LCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChzZWwuY29udGVudCkpIHtcbiAgfCAoXywgW10sIF8pXG4gIHwgKF8sIF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoTGVmdCwgW3AsIC4uLmNvbnRlbnRdLCBfKSA9PlxuICAgIGxldCAocCwgcmVzdCkgPSBQaWVjZS5wb3BfbChwKTtcbiAgICBTb21lKChwLCB7Li4uc2VsLCBjb250ZW50OiByZXN0IEAgY29udGVudH0pKTtcbiAgfCAoUmlnaHQsIF8sIFNvbWUoKGNvbnRlbnQsIHApKSkgPT5cbiAgICBsZXQgKHJlc3QsIHApID0gUGllY2UucG9wX3IocCk7XG4gICAgU29tZSgocCwgey4uLnNlbCwgY29udGVudDogY29udGVudCBAIHJlc3R9KSk7XG4gIH07XG5cbmxldCBzcGxpdF9waWVjZSA9IF86IG9wdGlvbigoUGllY2UudCwgdCkpID0+IGZhaWx3aXRoKFwidG9kbyBzcGxpdF9waWVjZVwiKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbm1vZHVsZSBTaGFyZEluZm8gPSB7XG4gIG1vZHVsZSBPcmRlciA9IHtcbiAgICB0eXBlIGtleSA9IChJZC50LCBpbnQpO1xuICAgIC8vIGxldCBrZXkgPSAoczogU2hhcmQudCkgPT4gKHMudGlsZV9pZCwgU2hhcmQuaW5kZXgocykpO1xuXG4gICAgb3BlbiBIYXNodGJsO1xuICAgIHR5cGUgdCA9IEhhc2h0YmwudChrZXksIEhhc2h0YmwudChrZXksIHVuaXQpKTtcblxuICAgIGxldCBuID0gMjA7XG4gICAgbGV0IGluaXQgPSAoKSA9PiBjcmVhdGUobik7XG5cbiAgICBsZXQgbHQgPSAobDogVGlsZS50LCByOiBUaWxlLnQsIG9yZDogdCk6IGJvb2wgPT4ge1xuICAgICAgbGV0IChpX2wsIGlfcikgPSBUaWxlLihyX3NoYXJkKGwpLCBsX3NoYXJkKHIpKTtcbiAgICAgIHN3aXRjaCAoZmluZF9vcHQob3JkLCAobC5pZCwgaV9sKSkpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgfCBTb21lKHJvdykgPT4gT3B0aW9uLmlzX3NvbWUoZmluZF9vcHQocm93LCAoci5pZCwgaV9yKSkpXG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IGd0ID0gKGwsIHIsIG9yZCkgPT4gbHQociwgbCwgb3JkKTtcbiAgICBsZXQgdW4gPSAobCwgciwgb3JkKSA9PiAhbHQobCwgciwgb3JkKSAmJiAhZ3QobCwgciwgb3JkKTtcblxuICAgIGxldCBkaXNvcmRlcmVkID0gKHQ6IFRpbGUudCwgdCc6IFRpbGUudCk6IGJvb2wgPT5cbiAgICAgIHQuaWQgPT0gdCcuaWRcbiAgICAgICYmIHtcbiAgICAgICAgbGV0IChsLCByKSA9IFRpbGUuKGxfc2hhcmQodCksIHJfc2hhcmQodCkpO1xuICAgICAgICBsZXQgKGwnLCByJykgPSBUaWxlLihsX3NoYXJkKHQnKSwgcl9zaGFyZCh0JykpO1xuICAgICAgICBsIDwgbCcgJiYgbCcgPCByIHx8IGwnIDwgbCAmJiBsIDwgcic7XG4gICAgICB9O1xuXG4gICAgbGV0IGx0X29yX3VuID0gKGxzLCBycywgb3JkKSA9PlxuICAgICAgbHNcbiAgICAgIHw+IExpc3QuZm9yX2FsbChsID0+XG4gICAgICAgICAgIHJzXG4gICAgICAgICAgIHw+IExpc3QuZm9yX2FsbChyID0+XG4gICAgICAgICAgICAgICAgIWRpc29yZGVyZWQobCwgcikgJiYgKGx0KGwsIHIsIG9yZCkgfHwgdW4obCwgciwgb3JkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgKTtcblxuICAgIGxldCBnZXQgPSAoaSwgaiwgbSkgPT4ge1xuICAgICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgICAgIGxldCogciA9IGZpbmRfb3B0KG0sIGkpO1xuICAgICAgZmluZF9vcHQociwgaik7XG4gICAgfTtcblxuICAgIGxldCBzZXQgPSAoaSwgaiwgbSkgPT4ge1xuICAgICAgbGV0IHIgPVxuICAgICAgICBzd2l0Y2ggKGZpbmRfb3B0KG0sIGkpKSB7XG4gICAgICAgIHwgTm9uZSA9PiBjcmVhdGUobilcbiAgICAgICAgfCBTb21lKHIpID0+IHJcbiAgICAgICAgfTtcbiAgICAgIHJlcGxhY2UociwgaiwgKCkpO1xuICAgICAgcmVwbGFjZShtLCBpLCByKTtcbiAgICB9O1xuXG4gICAgbGV0IGFkZF90aWxlID0gKGlkLCBsYmwsIG9yZCkgPT5cbiAgICAgIGxibFxuICAgICAgfD4gTGlzdC5pdGVyaSgoaSwgXykgPT4ge1xuICAgICAgICAgICBzd2l0Y2ggKGZpbmRfb3B0KG9yZCwgKGlkLCBpKSkpIHtcbiAgICAgICAgICAgfCBTb21lKF8pID0+ICgpXG4gICAgICAgICAgIHwgTm9uZSA9PiByZXBsYWNlKG9yZCwgKGlkLCBpKSwgY3JlYXRlKG4pKVxuICAgICAgICAgICB9O1xuICAgICAgICAgICBpID09IDAgPyAoKSA6IHNldCgoaWQsIGkgLSAxKSwgKGlkLCBpKSwgb3JkKTtcbiAgICAgICAgIH0pO1xuXG4gICAgLy8gV2Fyc2hhbGwncyBhbGdvcml0aG0gaHR0cHM6Ly9jcy53aW5vbmEuZWR1L2xpbi9jczQ0MC9jaDA4LTIucGRmXG4gICAgbGV0IHRyYW5fY2xvc2UgPSAob3JkOiB0KTogdW5pdCA9PiB7XG4gICAgICBsZXQga2V5cyA9IExpc3Qub2Zfc2VxKEhhc2h0YmwudG9fc2VxX2tleXMob3JkKSk7XG4gICAgICBrZXlzXG4gICAgICB8PiBMaXN0Lml0ZXJpKChuLCBrKSA9PlxuICAgICAgICAgICBpZiAobiA9PSAwKSB7XG4gICAgICAgICAgICAgKCk7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAga2V5c1xuICAgICAgICAgICAgIHw+IExpc3QuaXRlcihpID0+XG4gICAgICAgICAgICAgICAgICBrZXlzXG4gICAgICAgICAgICAgICAgICB8PiBMaXN0Lml0ZXIoaiA9PlxuICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldChpLCBqLCBvcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShfKSA9PiAoKVxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldChpLCBrLCBvcmQpLCBnZXQoaywgaiwgb3JkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKE5vbmUsIF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoXywgTm9uZSkgPT4gKClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChTb21lKF8pLCBTb21lKF8pKSA9PiBzZXQoaSwgaiwgb3JkKVxuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgIH1cbiAgICAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgQ291bnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbGFiZWxzOiBJZC5NYXAudChMYWJlbC50KSxcbiAgICAgIGNvdW50czogSWQuTWFwLnQoaW50KSxcbiAgICB9O1xuXG4gICAgbGV0IG9mX3RpbGUgPSAodDogVGlsZS50KSA9PiB7XG4gICAgICBsYWJlbHM6IElkLk1hcC5zaW5nbGV0b24odC5pZCwgdC5sYWJlbCksXG4gICAgICBjb3VudHM6IElkLk1hcC5zaW5nbGV0b24odC5pZCwgTGlzdC5sZW5ndGgodC5zaGFyZHMpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1lcmdlID0gKG06IHQsIG0nOiB0KSA9PiB7XG4gICAgICBsYWJlbHM6IElkLk1hcC51bmlvbigoXywgbGJsLCBfKSA9PiBTb21lKGxibCksIG0ubGFiZWxzLCBtJy5sYWJlbHMpLFxuICAgICAgY291bnRzOiBJZC5NYXAudW5pb24oKF8sIG4sIG4nKSA9PiBTb21lKG4gKyBuJyksIG0uY291bnRzLCBtJy5jb3VudHMpLFxuICAgIH07XG5cbiAgICBsZXQgbWVtID0gKGlkLCBtKSA9PiBJZC5NYXAubWVtKGlkLCBtLmxhYmVscyk7XG5cbiAgICBsZXQgZXhpc3RzX21lbSA9ICh0czogbGlzdChUaWxlLnQpLCBtKSA9PlxuICAgICAgTGlzdC5leGlzdHMoKHQ6IFRpbGUudCkgPT4gbWVtKHQuaWQsIG0pLCB0cyk7XG5cbiAgICBsZXQgaXNfY29tcGxldGUgPSAobTogdCkgPT5cbiAgICAgIG0uY291bnRzXG4gICAgICB8PiBJZC5NYXAuZm9yX2FsbCgoaWQsIG4pID0+XG4gICAgICAgICAgIG4gPT0gTGlzdC5sZW5ndGgoSWQuTWFwLmZpbmQoaWQsIG0ubGFiZWxzKSlcbiAgICAgICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIENvdW50cyA9IHtcbiAgICB0eXBlIHQgPSBJZC5VZi5zdG9yZShDb3VudC50KTtcbiAgICBpbmNsdWRlIElkLlVmO1xuICAgIGxldCBtZXJnZSA9IG1lcmdlKENvdW50Lm1lcmdlKTtcbiAgICBsZXQgYWRkX3RpbGUgPSAodDogVGlsZS50LCBjczogdCk6IHVuaXQgPT5cbiAgICAgIHN3aXRjaCAoZ2V0X29wdCh0LmlkLCBjcykpIHtcbiAgICAgIHwgTm9uZSA9PiBhZGQodC5pZCwgQ291bnQub2ZfdGlsZSh0KSwgY3MpXG4gICAgICB8IFNvbWUoYykgPT5cbiAgICAgICAgbGV0IGMgPSB7XG4gICAgICAgICAgLi4uYyxcbiAgICAgICAgICBjb3VudHM6XG4gICAgICAgICAgICBJZC5NYXAudXBkYXRlKFxuICAgICAgICAgICAgICB0LmlkLFxuICAgICAgICAgICAgICBPcHRpb24ubWFwKCgrKShMaXN0Lmxlbmd0aCh0LnNoYXJkcykpKSxcbiAgICAgICAgICAgICAgYy5jb3VudHMsXG4gICAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgICBzZXQodC5pZCwgYywgY3MpO1xuICAgICAgfTtcbiAgfTtcblxuICAvLyBTaGFyZHMgYXJlIGNvbnNpZGVyZWQgc2VsZWN0aW9uLW1hdGNoaW5nIGlmIHRoZXkgYXJlIHJlbGF0ZWQgdHJhbnNpdGl2ZWx5XG4gIC8vIGJ5IG5vcm1hbCB3aXRoaW4tdGlsZSBtYXRjaGluZyBvciBieSBzYW1lLXNlbGVjdGlvbi1jb250YWlubWVudC5cbiAgLy8gU2VsZWN0aW9uLW1hdGNoaW5nIHNoYXJkcyBhcmUgb3JkZXJlZCB0cmFuc2l0aXZlbHkgYnkgd2l0aGluLXRpbGVcbiAgLy8gb3JkZXJpbmcgYW5kIHNhbWUtc2VsZWN0aW9uIG9yZGVyaW5nIGNvbWJpbmVkIHdpdGggd2VsbC1uZXN0ZWRuZXNzLlxuICAvLyBSZXByZXNlbnRzIHRoZSBleHBlY3RlZCBvcmRlciBvZiBhbGwgc2VsZWN0aW9uLW1hdGNoaW5nIHNoYXJkcyBhc1xuICAvLyBpbXBvc2VkIGJ5IHNlbGVjdGlvbnMgaW4gdGhlIGJhY2twYWNrLCBhbG9uZyB3aXRoIGNvdW50cyBvZiB0aG9zZVxuICAvLyBzaGFyZHMgY29udGFpbmVkIGluIHRoZSBiYWNrcGFjay5cbiAgLy8gQ291bnRzIGFyZSBwYXJ0aXRpb25lZCBieSB0aGUgc2VsZWN0aW9uLW1hdGNoaW5nIHJlbGF0aW9uLlxuICB0eXBlIHQgPSB7XG4gICAgb3JkZXI6IE9yZGVyLnQsXG4gICAgY291bnRzOiBDb3VudHMudCxcbiAgfTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtvcmRlcjogT3JkZXIuaW5pdCgpLCBjb3VudHM6IENvdW50cy5pbml0KCl9O1xuXG4gIGxldCBhZGRfc2VsID0gKHNlbDogU2VsZWN0aW9uLnQsIHtjb3VudHMsIG9yZGVyfTogdCk6IHVuaXQgPT4ge1xuICAgIGxldCB0cyA9IFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhzZWwuY29udGVudCk7XG4gICAgLy8gaW5pdGlhbGl6ZVxuICAgIHRzXG4gICAgfD4gTGlzdC5pdGVyKCh0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgIENvdW50cy5hZGRfdGlsZSh0LCBjb3VudHMpO1xuICAgICAgICAgT3JkZXIuYWRkX3RpbGUodC5pZCwgdC5sYWJlbCwgb3JkZXIpO1xuICAgICAgIH0pO1xuICAgIC8vIG1lcmdlIGNvdW50c1xuICAgIGlnbm9yZShcbiAgICAgIHRzXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHByZXY6IG9wdGlvbihUaWxlLnQpLCBjdXJyOiBUaWxlLnQpID0+IHtcbiAgICAgICAgICAgICBzd2l0Y2ggKHByZXYpIHtcbiAgICAgICAgICAgICB8IE5vbmUgPT4gKClcbiAgICAgICAgICAgICB8IFNvbWUocHJldikgPT4gQ291bnRzLm1lcmdlKHByZXYuaWQsIGN1cnIuaWQsIGNvdW50cylcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIFNvbWUoY3Vycik7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgIE5vbmUsXG4gICAgICAgICApLFxuICAgICk7XG4gICAgLy8gcHJvcGFnYXRlIHdlbGwtbmVzdGVkIG9yZGVyaW5nIGNvbnN0cmFpbnRzXG4gICAgTGlzdFV0aWwub3JkZXJlZF9wYWlycyh0cylcbiAgICB8PiBMaXN0Lml0ZXIoKChsOiBUaWxlLnQsIHI6IFRpbGUudCkpID0+IHtcbiAgICAgICAgIGxldCAobl9sLCBuX3IpID0gTGlzdC4obGVuZ3RoKGwubGFiZWwpLCBsZW5ndGgoci5sYWJlbCkpO1xuICAgICAgICAgbGV0IChpX2wsIGlfcikgPSBUaWxlLihyX3NoYXJkKGwpLCBsX3NoYXJkKHIpKTtcbiAgICAgICAgIE9yZGVyLnNldCgobC5pZCwgaV9sKSwgKHIuaWQsIGlfciksIG9yZGVyKTtcbiAgICAgICAgIGlmIChpX2wgPT0gbl9sIC0gMSAmJiBpX3IgIT0gMCkge1xuICAgICAgICAgICAvLyBsIG11c3QgYmUgbmVzdGVkIHdpdGhpbiByXG4gICAgICAgICAgIE9yZGVyLnNldChcbiAgICAgICAgICAgICAoci5pZCwgaV9yIC0gMSksXG4gICAgICAgICAgICAgKGwuaWQsIDApLFxuICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICApO1xuICAgICAgICAgfSBlbHNlIGlmIChpX2wgIT0gbl9sIC0gMSAmJiBpX3IgPT0gMCkge1xuICAgICAgICAgICAvLyByIG11c3QgYmUgbmVzdGVkIHdpdGhpbiBsXG4gICAgICAgICAgIE9yZGVyLnNldChcbiAgICAgICAgICAgICAoci5pZCwgbl9yIC0gMSksXG4gICAgICAgICAgICAgKGwuaWQsIGlfbCArIDEpLFxuICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICApO1xuICAgICAgICAgfTtcbiAgICAgICB9KTtcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoU2VsZWN0aW9uLnQpO1xuXG5sZXQgZW1wdHkgPSBbXTtcblxubGV0IHNoYXJkX2luZm8gPSAoYnA6IHQpID0+IHtcbiAgb3BlbiBTaGFyZEluZm87XG4gIGxldCBpbmZvID0gaW5pdCgpO1xuICBicCB8PiBMaXN0Lml0ZXIoc2VsID0+IGFkZF9zZWwoc2VsLCBpbmZvKSk7XG4gIE9yZGVyLnRyYW5fY2xvc2UoaW5mby5vcmRlcik7XG4gIGluZm87XG59O1xuXG4vKiBQRVJGOiBUaGlzIGJlY29tZXMgdmVyeSBjb3N0bHkgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgdGhpbmdzXG4gICBpbiB0aGUgYmFja3BhY2s7IGUuZy4gaWYgeW91IG9wZW4gMjMgcGFyZW5zLCBpdCdzIGFsbW9zdCAxMDAlXG4gICBvZiB0aGUga2V5c3Rva2UgY29zdCwgZm9yIGEgNTV4IHRvdGFsIHNsb3dkb3duICAqL1xubGV0IHNoYXJkX2luZm8gPSBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBzaGFyZF9pbmZvKTtcblxubGV0IHB1c2ggPSBzZWwgPT4gU2VsZWN0aW9uLmlzX2VtcHR5KHNlbCkgPyBGdW4uaWQgOiBMaXN0LmNvbnMoc2VsKTtcblxubGV0IHB1c2hfczogKGxpc3QoU2VsZWN0aW9uLnQpLCB0KSA9PiB0ID0gTGlzdC5mb2xkX3JpZ2h0KHB1c2gpO1xuXG5sZXQgcG9wID1cbiAgICAoKHByZSwgc3VmKTogKGxpc3QoVGlsZS50KSwgbGlzdChUaWxlLnQpKSwgYnA6IHQpXG4gICAgOiBvcHRpb24oKGJvb2wsIFNlbGVjdGlvbi50LCB0KSkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQqIChoZCwgdGwpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Rfb3B0KGJwKTtcbiAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoaGQuY29udGVudCkpIHtcbiAgfCBbXSA9PiBTb21lKCh0cnVlLCBoZCwgdGwpKVxuICB8IFt0LCAuLi5fXSBhcyB0cyA9PlxuICAgIG9wZW4gU2hhcmRJbmZvO1xuICAgIGxldCB7Y291bnRzLCBvcmRlcn0gPSBzaGFyZF9pbmZvKGJwKTtcbiAgICBsZXQgY291bnQgPSBDb3VudHMuZ2V0KHQuaWQsIGNvdW50cyk7XG4gICAgbGV0IGZpcnN0ID0gQ291bnQuaXNfY29tcGxldGUoY291bnQpO1xuICAgIGZpcnN0XG4gICAgfHwgKENvdW50LmV4aXN0c19tZW0ocHJlLCBjb3VudCkgfHwgQ291bnQuZXhpc3RzX21lbShzdWYsIGNvdW50KSlcbiAgICAmJiBPcmRlci5sdF9vcl91bihwcmUsIHRzLCBvcmRlcilcbiAgICAmJiBPcmRlci5sdF9vcl91bih0cywgc3VmLCBvcmRlcilcbiAgICAgID8gU29tZSgoZmlyc3QsIGhkLCB0bCkpIDogTm9uZTtcbiAgfTtcbn07XG5cbmxldCByZXN0cmljdGVkID0gKGJwOiB0KTogYm9vbCA9PlxuICBzd2l0Y2ggKGJwKSB7XG4gIHwgW10gPT4gZmFsc2VcbiAgfCBbaGQsIC4uLl9dID0+XG4gICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoaGQuY29udGVudCkpIHtcbiAgICB8IFtdID0+IGZhbHNlXG4gICAgfCBbdCwgLi4uX10gPT5cbiAgICAgIG9wZW4gU2hhcmRJbmZvO1xuICAgICAgbGV0IGluZm8gPSBzaGFyZF9pbmZvKGJwKTtcbiAgICAgICFDb3VudC5pc19jb21wbGV0ZShDb3VudHMuZ2V0KHQuaWQsIGluZm8uY291bnRzKSk7XG4gICAgfVxuICB9O1xuXG5sZXQgcmVtb3ZlX21hdGNoaW5nID0gKHRzOiBsaXN0KFRpbGUudCksIGJwOiB0KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoYnAsIHQ6IFRpbGUudCkgPT5cbiAgICAgIGJwXG4gICAgICB8PiBMaXN0Lm1hcChTZWxlY3Rpb24ubWFwKFNlZ21lbnQucmVtb3ZlX21hdGNoaW5nKHQpKSlcbiAgICAgIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgZnVuXG4gICAgICAgICAgIHwgc2VsIHdoZW4gIVNlbGVjdGlvbi5pc19lbXB0eShzZWwpID0+IFNvbWUoc2VsKVxuICAgICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICAgICksXG4gICAgYnAsXG4gICAgdHMsXG4gICk7XG5cbmxldCB3aWxsX2JhcmYgPSAodDogVG9rZW4udCwgYnA6IHQpOiBib29sID0+XG4gIC8qIERvZXMgdGhlIGZpcnN0IHNlbGVjdGlvbiBpbiB0aGUgYmFja3BhY2sgY29uc2lzdFxuICAgICBvZiBhIHNpbmdsZSB0b2tlbiB3aGljaCBtYXRjaGVzIHRoZSBvbmUgcHJvdmlkZWQ/ICovXG4gIHN3aXRjaCAoYnApIHtcbiAgfCBbXSA9PiBmYWxzZVxuICB8IFt7Y29udGVudDogW3BdLCBffSwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKHApIHtcbiAgICB8IFRpbGUoe3NoYXJkczogW2ldLCBsYWJlbCwgX30pID0+XG4gICAgICBhc3NlcnQoaSA8IExpc3QubGVuZ3RoKGxhYmVsKSk7XG4gICAgICBMaXN0Lm50aChsYWJlbCwgaSkgPT0gdDtcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9XG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgcmVtb3ZlX3VuaV90aWxlc193aXRoX2RlZXBfbWF0Y2hlcyA9IChicDogdCwgc2VsOiBTZWxlY3Rpb24udCk6IHQgPT4ge1xuICAvKiBUaGlzIGlzIGEgaGFjayB0byBwcmV2ZW50IGluY29tcGxldGUgdGlsZXMgaW5zaWRlIHNlbGVjdGlvbiB0aWxlc1xuICAgKiBmcm9tIGJlaW5nIG9ycGhhbmVkIG9uIGRlbGV0aW9uLCBlLmcuIGlmIHlvdSBkZWxldGUgc2VnbWVudCBcIihbKVwiXG4gICAqIHdpdGggXCJdXCIgaW4gdGhlIGJhY2twYWNrLiAgKi9cbiAgbGV0IGlkcyA9IFNlZ21lbnQuaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkZWxpbWl0ZWRzKHNlbC5jb250ZW50KTtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgU2VsZWN0aW9uLntjb250ZW50OiBbUGllY2UuVGlsZSh7aWQsIF99KV0sIF99IHdoZW4gTGlzdC5tZW0oaWQsIGlkcykgPT5cbiAgICAgIE5vbmVcbiAgICB8IHggPT4gU29tZSh4KSxcbiAgICBicCxcbiAgKTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2libGluZ3M6IFNpYmxpbmdzLnQsXG4gIGFuY2VzdG9yczogQW5jZXN0b3JzLnQsXG59O1xuXG5sZXQgZW1wdHkgPSB7c2libGluZ3M6IFNpYmxpbmdzLmVtcHR5LCBhbmNlc3RvcnM6IEFuY2VzdG9ycy5lbXB0eX07XG5cbmxldCBwdXNoID0gKGQ6IERpcmVjdGlvbi50LCBwOiBQaWVjZS50LCByczogdCk6IHQgPT4ge1xuICAuLi5ycyxcbiAgc2libGluZ3M6IFNpYmxpbmdzLnB1c2goZCwgcCwgcnMuc2libGluZ3MpLFxufTtcblxubGV0IHByZXBlbmQgPSAoZDogRGlyZWN0aW9uLnQsIHNlZzogU2VnbWVudC50LCByczogdCk6IHQgPT4ge1xuICBsZXQgc2libGluZ3MgPSBTaWJsaW5ncy5wcmVwZW5kKGQsIHNlZywgcnMuc2libGluZ3MpO1xuICB7Li4ucnMsIHNpYmxpbmdzfTtcbn07XG5cbmxldCBwb3AgPSAoZDogRGlyZWN0aW9uLnQsIHJzOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChTaWJsaW5ncy5wb3AoZCwgcnMuc2libGluZ3MpKSB7XG4gIHwgU29tZSgocCwgc2libGluZ3MpKSA9PiBTb21lKChwLCB7Li4ucnMsIHNpYmxpbmdzfSkpXG4gIHwgTm9uZSA9PlxuICAgIHN3aXRjaCAocnMuYW5jZXN0b3JzKSB7XG4gICAgfCBbXSA9PiBOb25lXG4gICAgfCBbKGFuY2VzdG9yLCBzaWJsaW5ncyksIC4uLmFuY2VzdG9yc10gPT5cbiAgICAgIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gICAgICBsZXQgc2libGluZ3MnID0gQW5jZXN0b3IuZGlzYXNzZW1ibGUoYW5jZXN0b3IpO1xuICAgICAgbGV0KyAocCwgc2libGluZ3MpID1cbiAgICAgICAgU2libGluZ3MuKHBvcChkLCBjb25jYXQoW3JzLnNpYmxpbmdzLCBzaWJsaW5ncycsIHNpYmxpbmdzXSkpKTtcbiAgICAgIChwLCB7c2libGluZ3MsIGFuY2VzdG9yc30pO1xuICAgIH1cbiAgfTtcblxubGV0IHppcCA9ICh+c2VsPVNlZ21lbnQuZW1wdHksIHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCkgPT5cbiAgQW5jZXN0b3JzLnppcChTaWJsaW5ncy56aXAofnNlbCwgc2libGluZ3MpLCBhbmNlc3RvcnMpO1xuXG5sZXQgbG9jYWxfaW5jb21wbGV0ZV90aWxlcyA9ICh7c2libGluZ3M6IChwcmUsIHN1ZiksIGFuY2VzdG9yc306IHQpID0+IHtcbiAgbGV0IHNpYnMgPVxuICAgIHN3aXRjaCAoYW5jZXN0b3JzKSB7XG4gICAgfCBbXSA9PiAocHJlLCBzdWYpXG4gICAgfCBbKGEsIF8pLCAuLi5fXSA9PlxuICAgICAgbGV0IChsLCByKSA9IEFuY2VzdG9yLmNvbnRhaW5lcl9zaGFyZHMoYSk7XG4gICAgICAoW2wsIC4uLnByZV0sIHN1ZiBAIFtyXSk7XG4gICAgfTtcbiAgU2libGluZ3MuaW5jb21wbGV0ZV90aWxlcyhzaWJzKTtcbn07XG5cbmxldCBwYXJlbnQgPVxuICAgICh+c2VsPVNlZ21lbnQuZW1wdHksIHtzaWJsaW5nczogKGxfc2licywgcl9zaWJzKSwgYW5jZXN0b3JzfTogdClcbiAgICA6IG9wdGlvbihQaWVjZS50KSA9PlxuICBhbmNlc3RvcnNcbiAgfD4gQW5jZXN0b3JzLnBhcmVudFxuICB8PiBPcHRpb24ubWFwKHAgPT4gQmFzZS5UaWxlKEFuY2VzdG9yLnppcChsX3NpYnMgQCBzZWwgQCByX3NpYnMsIHApKSk7XG5cbmxldCBkZWxldGVfcGFyZW50ID0gKHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IHQgPT4ge1xuICBzd2l0Y2ggKGFuY2VzdG9ycykge1xuICB8IFtdID0+IHtzaWJsaW5ncywgYW5jZXN0b3JzfVxuICB8IFsoXywgcF9zaWJzKSwgLi4uYW5jZXN0b3JzXSA9PiB7XG4gICAgICBzaWJsaW5nczogU2libGluZ3MuY29uY2F0KFtzaWJsaW5ncywgcF9zaWJzXSksXG4gICAgICBhbmNlc3RvcnMsXG4gICAgfVxuICB9O1xufTtcblxubGV0IGRpc2Fzc2VtYmxlID0gKHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IFNpYmxpbmdzLnQgPT5cbiAgU2libGluZ3MuY29uY2F0KFtzaWJsaW5ncywgQW5jZXN0b3JzLmRpc2Fzc2VtYmxlKGFuY2VzdG9ycyldKTtcblxubGV0IHJlbW9sZCA9ICh7c2libGluZ3MsIGFuY2VzdG9yc306IHQpOiB0ID0+IHtcbiAgbGV0IHMgPSBBbmNlc3RvcnMuc29ydChhbmNlc3RvcnMpO1xuICBsZXQgc2libGluZ3MgPSBTaWJsaW5ncy5yZW1vbGQoc2libGluZ3MsIHMpO1xuICB7YW5jZXN0b3JzLCBzaWJsaW5nc307XG59O1xuXG5sZXQgcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwge3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogdCA9PiB7XG4gIC8qIERpcmVjdGlvbiBpcyBzaWRlIG9mIGdyb3V0IGNhcmV0IHdpbGwgZW5kIHVwIG9uICovXG5cbiAgbGV0IGFuY2VzdG9ycyA9IEFuY2VzdG9ycy5yZWdyb3V0KGFuY2VzdG9ycyk7XG4gIGxldCBzaWJsaW5ncyA9IHtcbiAgICBsZXQgKChwcmUsIHNfbCwgdHJpbV9sKSwgKHRyaW1fciwgc19yLCBzdWYpKSA9XG4gICAgICBTaWJsaW5ncy5yZWdyb3V0KHNpYmxpbmdzKTtcbiAgICBsZXQgKHRyaW1fbCwgdHJpbV9yKSA9IHtcbiAgICAgIG9wZW4gU2VnbWVudC5UcmltO1xuICAgICAgbGV0ICgoXywgZ3NfbCksIChfLCBnc19yKSkgPSAodHJpbV9sLCB0cmltX3IpO1xuICAgICAgbGV0IChzZWdfbCwgc2VnX3IpID0gKHRvX3NlZyh0cmltX2wpLCB0b19zZWcodHJpbV9yKSk7XG4gICAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KGdzX2wpLCBnc19yKSB7XG4gICAgICB8IChTb21lKChfLCBnX2wpKSwgW2dfciwgLi4uX10pID0+XG4gICAgICAgIEdyb3V0LmZpdHMoZ19sLCBnX3IpXG4gICAgICAgICAgLy8gbm90ZTogYXNzdW1lcyBzaW5nbGUgZ3JvdXQgaW52YXJpYW50IGluIHVuLWNhcmV0LWludGVycnVwdGVkIHRyaW1cbiAgICAgICAgICA/ICh3cyh0cmltX2wpLCB3cyh0cmltX3IpKSAgLy8od3ModHJpbV9sKSwgc2VnX3IpXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgICAgIHwgTGVmdCA9PiAod3ModHJpbV9sKSwgc2VnX3IpXG4gICAgICAgICAgICB8IFJpZ2h0ID0+IChzZWdfbCwgd3ModHJpbV9yKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICB8IChTb21lKChfLCBnKSksIFtdKSA9PlxuICAgICAgICBHcm91dC5maXRzX3NoYXBlKGcsIHNfcikgPyAoc2VnX2wsIHNlZ19yKSA6ICh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgIHwgKE5vbmUsIFtnLCAuLi5fXSkgPT5cbiAgICAgICAgR3JvdXQuZml0c19zaGFwZShnLCBzX2wpID8gKHNlZ19sLCBzZWdfcikgOiAoc2VnX2wsIHdzKHRyaW1fcikpXG4gICAgICB8IChOb25lLCBbXSkgPT5cbiAgICAgICAgTmliLlNoYXBlLmZpdHMoc19sLCBzX3IpXG4gICAgICAgICAgPyAoc2VnX2wsIHNlZ19yKVxuICAgICAgICAgIC8vIGNhbiBtb2R1bGF0ZSB3aXRoIGRpcmVjdGlvbmFsIGFyZ1xuICAgICAgICAgIDogKFxuICAgICAgICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgICAgICB8IExlZnQgPT5cbiAgICAgICAgICAgICAgbGV0IHRyaW0gPSBhZGRfZ3JvdXQofmQ9UmlnaHQsIHNfciwgdHJpbV9yKTtcbiAgICAgICAgICAgICAgKHNlZ19sLCB0b19zZWcodHJpbSkpO1xuICAgICAgICAgICAgfCBSaWdodCA9PlxuICAgICAgICAgICAgICBsZXQgdHJpbSA9IGFkZF9ncm91dCh+ZD1MZWZ0LCBzX2wsIHRyaW1fbCk7XG4gICAgICAgICAgICAgICh0b19zZWcodHJpbSksIHNlZ19yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICB9O1xuICAgIH07XG4gICAgKHByZSBAIHRyaW1fbCwgdHJpbV9yIEAgc3VmKTtcbiAgfTtcbiAge3NpYmxpbmdzLCBhbmNlc3RvcnN9O1xufTtcblxubGV0IHByZXBlbmRfZ2VuZXJhdGlvbiA9ICgoYSwgc2licyk6IEFuY2VzdG9ycy5nZW5lcmF0aW9uLCByczogdCk6IHQgPT4ge1xuICBzaWJsaW5nczogU2libGluZ3MuZW1wdHksXG4gIGFuY2VzdG9yczogWyhhLCBTaWJsaW5ncy5jb25jYXQoW3NpYnMsIHJzLnNpYmxpbmdzXSkpLCAuLi5ycy5hbmNlc3RvcnNdLFxufTtcbmxldCBwcmVwZW5kX3NpYmxpbmdzID0gKHNpYnM6IFNpYmxpbmdzLnQsIHJzOiB0KTogdCA9PiB7XG4gIC4uLnJzLFxuICBzaWJsaW5nczogU2libGluZ3MuY29uY2F0KFtzaWJzLCBycy5zaWJsaW5nc10pLFxufTtcblxubGV0IGNvbmNhdCA9IChyc3M6IGxpc3QodCkpOiB0ID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAocnM6IHQsIGNhdDogdCkgPT5cbiAgICAgIExpc3QuZm9sZF9yaWdodChwcmVwZW5kX2dlbmVyYXRpb24sIHJzLmFuY2VzdG9ycywgY2F0KVxuICAgICAgfD4gcHJlcGVuZF9zaWJsaW5ncyhycy5zaWJsaW5ncyksXG4gICAgcnNzLFxuICAgIGVtcHR5LFxuICApO1xuXG5sZXQgcmVhc3NlbWJsZV9wYXJlbnQgPSAocnM6IHQpOiB0ID0+XG4gIHN3aXRjaCAocnMuYW5jZXN0b3JzKSB7XG4gIHwgW10gPT4gcnNcbiAgfCBbKGEsIHNpYnMpLCAuLi5hbmNzXSA9PlxuICAgIGxldCAobCwgcikgPVxuICAgICAgcnMuc2libGluZ3NcbiAgICAgIHw+IFNpYmxpbmdzLnNwbGl0X2J5X21hdGNoaW5nKGEuaWQpXG4gICAgICB8PiBUdXBsZVV0aWwubWFwMihBYmEudHJpbSk7XG4gICAgbGV0IGZsYXR0ZW5fbWF0Y2ggPVxuICAgICAgQWJhLmZvbGRfcmlnaHQoXG4gICAgICAgICh0OiBUaWxlLnQsIGtpZCwgKHNoYXJkcywga2lkcykpID0+XG4gICAgICAgICAgQWJhLm1rKHQuc2hhcmRzIEAgc2hhcmRzLCB0LmNoaWxkcmVuIEAgW2tpZCwgLi4ua2lkc10pLFxuICAgICAgICAodDogVGlsZS50KSA9PiBBYmEubWsodC5zaGFyZHMsIHQuY2hpbGRyZW4pLFxuICAgICAgKTtcbiAgICBsZXQgKGEsIGwpID1cbiAgICAgIHN3aXRjaCAobCkge1xuICAgICAgfCBOb25lID0+IChhLCBmc3QocnMuc2libGluZ3MpKVxuICAgICAgfCBTb21lKChvdXRlcl9sLCBtYXRjaF9sLCBpbm5lcl9sKSkgPT5cbiAgICAgICAgbGV0IChzaGFyZHNfbCwga2lkc19sKSA9IGZsYXR0ZW5fbWF0Y2gobWF0Y2hfbCk7XG4gICAgICAgIGxldCBhID0ge1xuICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgc2hhcmRzOiBhLnNoYXJkcyB8PiBQYWlyVXRpbC5tYXBfZnN0KHNzID0+IHNzIEAgc2hhcmRzX2wpLFxuICAgICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgICAgYS5jaGlsZHJlblxuICAgICAgICAgICAgfD4gUGFpclV0aWwubWFwX2ZzdChraWRzID0+IGtpZHMgQCBbb3V0ZXJfbCwgLi4ua2lkc19sXSksXG4gICAgICAgIH07XG4gICAgICAgIChhLCBpbm5lcl9sKTtcbiAgICAgIH07XG4gICAgbGV0IChhLCByKSA9XG4gICAgICBzd2l0Y2ggKHIpIHtcbiAgICAgIHwgTm9uZSA9PiAoYSwgc25kKHJzLnNpYmxpbmdzKSlcbiAgICAgIHwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpID0+XG4gICAgICAgIGxldCAoc2hhcmRzX3IsIGtpZHNfcikgPSBmbGF0dGVuX21hdGNoKG1hdGNoX3IpO1xuICAgICAgICBsZXQgYSA9IHtcbiAgICAgICAgICAuLi5hLFxuICAgICAgICAgIHNoYXJkczogYS5zaGFyZHMgfD4gUGFpclV0aWwubWFwX3NuZChzcyA9PiBzaGFyZHNfciBAIHNzKSxcbiAgICAgICAgICBjaGlsZHJlbjpcbiAgICAgICAgICAgIGEuY2hpbGRyZW5cbiAgICAgICAgICAgIHw+IFBhaXJVdGlsLm1hcF9zbmQoa2lkcyA9PiBbb3V0ZXJfciwgLi4ua2lkc19yXSBAIGtpZHMpLFxuICAgICAgICB9O1xuICAgICAgICAoYSwgaW5uZXJfcik7XG4gICAgICB9O1xuICAgIHtzaWJsaW5nczogKGwsIHIpLCBhbmNlc3RvcnM6IFsoYSwgc2licyksIC4uLmFuY3NdfTtcbiAgfTtcblxubGV0IHJlYXNzZW1ibGVfc2libGluZ3MgPSAocnM6IHQpID0+IHtcbiAgLi4ucnMsXG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5yZWFzc2VtYmxlKHJzLnNpYmxpbmdzKSxcbn07XG5cbmxldCByZWFzc2VtYmxlID0gKHJzOiB0KTogdCA9PiB7XG4gIGxldCByZWMgZ28gPSAocnM6IHQpOiB0ID0+XG4gICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc25kKHJzLnNpYmxpbmdzKSkpIHtcbiAgICB8IFtdID0+IHJzXG4gICAgfCBbdCwgLi4uX10gPT5cbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIHJzLnNpYmxpbmdzXG4gICAgICAgIHw+IFNpYmxpbmdzLnNwbGl0X2J5X21hdGNoaW5nKHQuaWQpXG4gICAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKVxuICAgICAgKSB7XG4gICAgICB8IChfLCBOb25lKSA9PiBmYWlsd2l0aChcImltcG9zc2libGVcIilcbiAgICAgIHwgKE5vbmUsIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSkgPT5cbiAgICAgICAgbGV0IHtzaWJsaW5nczogKHByZSwgc3VmKSwgYW5jZXN0b3JzfSA9XG4gICAgICAgICAgZ28oey4uLnJzLCBzaWJsaW5nczogKGZzdChycy5zaWJsaW5ncyksIG91dGVyX3IpfSk7XG4gICAgICAgIGxldCB0ID0gVGlsZS5yZWFzc2VtYmxlKG1hdGNoX3IpO1xuICAgICAgICBsZXQgc3VmID0gU2VnbWVudC5jb25jYXQoW2lubmVyX3IsIFtUaWxlLnRvX3BpZWNlKHQpLCAuLi5zdWZdXSk7XG4gICAgICAgIHtzaWJsaW5nczogKHByZSwgc3VmKSwgYW5jZXN0b3JzfTtcbiAgICAgIHwgKFxuICAgICAgICAgIFNvbWUoKG91dGVyX2wsIG1hdGNoX2wsIGlubmVyX2wpKSxcbiAgICAgICAgICBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSksXG4gICAgICAgICkgPT5cbiAgICAgICAgbGV0IHJzID0gZ28oey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIG91dGVyX3IpfSk7XG4gICAgICAgIGxldCBhbmNlc3RvcnMgPSBbXG4gICAgICAgICAgKEFuY2VzdG9yLnJlYXNzZW1ibGUobWF0Y2hfbCwgbWF0Y2hfciksIHJzLnNpYmxpbmdzKSxcbiAgICAgICAgICAuLi5ycy5hbmNlc3RvcnMsXG4gICAgICAgIF07XG4gICAgICAgIGxldCBzaWJsaW5ncyA9IChpbm5lcl9sLCBpbm5lcl9yKTtcbiAgICAgICAge2FuY2VzdG9ycywgc2libGluZ3N9O1xuICAgICAgfVxuICAgIH07XG4gIHJzIHw+IHJlYXNzZW1ibGVfc2libGluZ3MgfD4gcmVhc3NlbWJsZV9wYXJlbnQgfD4gZ287XG59O1xuXG4vLyBsZXQgcmVjIHJlYXNzZW1ibGUgPSAocnM6IHQpOiB0ID0+IHtcbi8vICAgbGV0IHNpYmxpbmdzID0gU2libGluZ3MucmVhc3NlbWJsZShycy5zaWJsaW5ncyk7XG4vLyAgIHN3aXRjaCAoU2libGluZ3MuaW5jb21wbGV0ZV90aWxlcyhzaWJsaW5ncykpIHtcbi8vICAgfCAoW10sIF8pXG4vLyAgIHwgKF8sIFtdKSA9PiB7Li4ucnMsIHNpYmxpbmdzfVxuLy8gICB8IChbXywgLi4uX10sIFt0LCAuLi5fXSkgPT5cbi8vICAgICBzd2l0Y2ggKFxuLy8gICAgICAgc2libGluZ3Ncbi8vICAgICAgIHw+IFNpYmxpbmdzLnNwbGl0X2J5X21hdGNoaW5nKHQuaWQpXG4vLyAgICAgICB8PiBUdXBsZVV0aWwubWFwMihBYmEudHJpbSlcbi8vICAgICApIHtcbi8vICAgICB8IChOb25lLCBOb25lKSA9PiB7Li4ucnMsIHNpYmxpbmdzfVxuLy8gICAgIHwgKE5vbmUsIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSkgPT5cbi8vICAgICAgIGxldCB7c2libGluZ3M6IChsLCByKSwgYW5jZXN0b3JzfSA9XG4vLyAgICAgICAgIHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKGZzdChzaWJsaW5ncyksIG91dGVyX3IpfSk7XG4vLyAgICAgICB7XG4vLyAgICAgICAgIHNpYmxpbmdzOiAoXG4vLyAgICAgICAgICAgbCxcbi8vICAgICAgICAgICBTZWdtZW50LmNvbmNhdChbaW5uZXJfciwgQW5jZXN0b3IuTWF0Y2guU3VmZml4LmpvaW4obWF0Y2hfciksIHJdKSxcbi8vICAgICAgICAgKSxcbi8vICAgICAgICAgYW5jZXN0b3JzLFxuLy8gICAgICAgfTtcbi8vICAgICB8IChTb21lKChpbm5lcl9sLCBtYXRjaF9sLCBvdXRlcl9sKSksIE5vbmUpID0+XG4vLyAgICAgICBsZXQge3NpYmxpbmdzOiAobCwgciksIGFuY2VzdG9yc30gPVxuLy8gICAgICAgICByZWFzc2VtYmxlKHsuLi5ycywgc2libGluZ3M6IChvdXRlcl9sLCBzbmQocnMuc2libGluZ3MpKX0pO1xuLy8gICAgICAge1xuLy8gICAgICAgICBzaWJsaW5nczogKFxuLy8gICAgICAgICAgIFNlZ21lbnQuY29uY2F0KFtpbm5lcl9sLCBBbmNlc3Rvci5NYXRjaC5TdWZmaXguam9pbihtYXRjaF9sKSwgbF0pLFxuLy8gICAgICAgICAgIHIsXG4vLyAgICAgICAgICksXG4vLyAgICAgICAgIGFuY2VzdG9ycyxcbi8vICAgICAgIH07XG4vLyAgICAgfCAoU29tZSgoaW5uZXJfbCwgbWF0Y2hfbCwgb3V0ZXJfbCkpLCBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSkpID0+XG4vLyAgICAgICBsZXQgbWF0Y2ggPSAobWF0Y2hfbCwgbWF0Y2hfcik7XG4vLyAgICAgICBsZXQgcnNfaW5uZXIgPVxuLy8gICAgICAgICBzd2l0Y2ggKEFuY2VzdG9yLk1hdGNoLmNvbXBsZXRlKG1hdGNoKSkge1xuLy8gICAgICAgICB8IE5vbmUgPT4ge1xuLy8gICAgICAgICAgICAgc2libGluZ3M6XG4vLyAgICAgICAgICAgICAgIFNpYmxpbmdzLmNvbmNhdChbXG4vLyAgICAgICAgICAgICAgICAgKGlubmVyX2wsIGlubmVyX3IpLFxuLy8gICAgICAgICAgICAgICAgIEFuY2VzdG9yLk1hdGNoLmpvaW4obWF0Y2gpLFxuLy8gICAgICAgICAgICAgICBdKSxcbi8vICAgICAgICAgICAgIGFuY2VzdG9yczogQW5jZXN0b3JzLmVtcHR5LFxuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfCBTb21lKGEpID0+IHtcbi8vICAgICAgICAgICAgIHNpYmxpbmdzOiAoaW5uZXJfbCwgaW5uZXJfciksXG4vLyAgICAgICAgICAgICBhbmNlc3RvcnM6IFsoYSwgU2libGluZ3MuZW1wdHkpXSxcbi8vICAgICAgICAgICB9XG4vLyAgICAgICAgIH07XG4vLyAgICAgICBsZXQgcnNfb3V0ZXIgPSByZWFzc2VtYmxlKHsuLi5ycywgc2libGluZ3M6IChvdXRlcl9sLCBvdXRlcl9yKX0pO1xuLy8gICAgICAgY29uY2F0KFtyc19pbm5lciwgcnNfb3V0ZXJdKTtcbi8vICAgICB9XG4vLyAgIH07XG4vLyB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbm1vZHVsZSBDYXJldCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgT3V0ZXJcbiAgICB8IElubmVyKGludCwgaW50KTtcblxuICBsZXQgZGVjcmVtZW50OiB0ID0+IHQgPVxuICAgIGZ1blxuICAgIHwgT3V0ZXJcbiAgICB8IElubmVyKF8sIDApID0+IE91dGVyXG4gICAgfCBJbm5lcihkLCBjKSA9PiBJbm5lcihkLCBjIC0gMSk7XG5cbiAgbGV0IG9mZnNldDogdCA9PiBpbnQgPVxuICAgIGZ1blxuICAgIHwgT3V0ZXIgPT4gMFxuICAgIHwgSW5uZXIoXywgYykgPT4gYyArIDE7XG59O1xuXG4vLyBhc3N1bWluZyBzaW5nbGUgYmFja3BhY2ssIHNoYXJkcyBtYXkgYXBwZWFyIGluIHNlbGVjdGlvbiwgYmFja3BhY2ssIG9yIHNpYmxpbmdzXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLnQsXG4gIGJhY2twYWNrOiBCYWNrcGFjay50LFxuICByZWxhdGl2ZXM6IFJlbGF0aXZlcy50LFxuICBjYXJldDogQ2FyZXQudCxcbiAgLy8gY29sX3RhcmdldDogaW50LFxufTtcblxubGV0IGluaXQ6IHVuaXQgPT4gdCA9XG4gICgpID0+IHtcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbi5tayhbXSksXG4gICAgYmFja3BhY2s6IFtdLFxuICAgIHJlbGF0aXZlczoge1xuICAgICAgc2libGluZ3M6IChbXSwgW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSksXG4gICAgICBhbmNlc3RvcnM6IFtdLFxuICAgIH0sXG4gICAgY2FyZXQ6IE91dGVyLFxuICAgIC8vIGNvbF90YXJnZXQ6IDAsXG4gIH07XG5cbmxldCBuZXh0X2JsYW5rID0gXyA9PiBJZC5taygpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNodW5raW5lc3MgPVxuICB8IEJ5Q2hhclxuICB8IE1vbm9CeUNoYXJcbiAgfCBCeVRva2VuO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBsYW5hciA9XG4gIHwgVXBcbiAgfCBEb3duXG4gIHwgTGVmdChjaHVua2luZXNzKVxuICB8IFJpZ2h0KGNodW5raW5lc3MpO1xuXG5sZXQgZnJvbV9wbGFuZTogcGxhbmFyID0+IERpcmVjdGlvbi50ID1cbiAgZnVuXG4gIHwgTGVmdChfKSA9PiBMZWZ0XG4gIHwgUmlnaHQoXykgPT4gUmlnaHRcbiAgfCBVcCA9PiBMZWZ0XG4gIHwgRG93biA9PiBSaWdodDtcblxubGV0IHVwZGF0ZV9jYXJldCA9IChmOiBDYXJldC50ID0+IENhcmV0LnQsIHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgY2FyZXQ6IGYoei5jYXJldCksXG59O1xubGV0IHNldF9jYXJldCA9IChjYXJldDogQ2FyZXQudCk6ICh0ID0+IHQpID0+IHVwZGF0ZV9jYXJldChfID0+IGNhcmV0KTtcblxubGV0IHVwZGF0ZV9yZWxhdGl2ZXMgPSAoZjogUmVsYXRpdmVzLnQgPT4gUmVsYXRpdmVzLnQsIHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgcmVsYXRpdmVzOiBmKHoucmVsYXRpdmVzKSxcbn07XG5cbmxldCB1cGRhdGVfc2libGluZ3M6IChTaWJsaW5ncy50ID0+IFNpYmxpbmdzLnQsIHQpID0+IHQgPVxuICBmID0+IHVwZGF0ZV9yZWxhdGl2ZXMocnMgPT4gey4uLnJzLCBzaWJsaW5nczogZihycy5zaWJsaW5ncyl9KTtcblxubGV0IHBhcmVudCA9ICh6OiB0KTogb3B0aW9uKFBpZWNlLnQpID0+XG4gIFJlbGF0aXZlcy5wYXJlbnQofnNlbD16LnNlbGVjdGlvbi5jb250ZW50LCB6LnJlbGF0aXZlcyk7XG5cbmxldCBkZWxldGVfcGFyZW50ID0gKHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgcmVsYXRpdmVzOiBSZWxhdGl2ZXMuZGVsZXRlX3BhcmVudCh6LnJlbGF0aXZlcyksXG59O1xuXG5sZXQgemlwID0gKHo6IHQpOiBTZWdtZW50LnQgPT5cbiAgUmVsYXRpdmVzLnppcCh+c2VsPXouc2VsZWN0aW9uLmNvbnRlbnQsIHoucmVsYXRpdmVzKTtcblxubGV0IHVuemlwID0gKHNlZzogU2VnbWVudC50KTogdCA9PiB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKFtdKSxcbiAgYmFja3BhY2s6IFtdLFxuICByZWxhdGl2ZXM6IHtcbiAgICBzaWJsaW5nczogKHNlZywgW10pLFxuICAgIGFuY2VzdG9yczogW10sXG4gIH0sXG4gIGNhcmV0OiBPdXRlcixcbn07XG5cbmxldCBzaWJzX3dpdGhfc2VsID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbjoge2NvbnRlbnQsIGZvY3VzLCBffSxcbiAgICAgICAgcmVsYXRpdmVzOiB7c2libGluZ3M6IChsX3NpYnMsIHJfc2licyksIF99LFxuICAgICAgICBfLFxuICAgICAgfTogdCxcbiAgICApXG4gICAgOiBTaWJsaW5ncy50ID0+XG4gIHN3aXRjaCAoZm9jdXMpIHtcbiAgfCBMZWZ0ID0+IChsX3NpYnMsIGNvbnRlbnQgQCByX3NpYnMpXG4gIHwgUmlnaHQgPT4gKGxfc2licyBAIGNvbnRlbnQsIHJfc2licylcbiAgfTtcblxubGV0IHBvcF9iYWNrcGFjayA9ICh6OiB0KSA9PlxuICBCYWNrcGFjay5wb3AoUmVsYXRpdmVzLmxvY2FsX2luY29tcGxldGVfdGlsZXMoei5yZWxhdGl2ZXMpLCB6LmJhY2twYWNrKTtcblxubGV0IGxlZnRfbmVpZ2hib3JfbW9ub3RpbGU6IFNpYmxpbmdzLnQgPT4gb3B0aW9uKFRva2VuLnQpID1cbiAgcyA9PiBzIHw+IFNpYmxpbmdzLmxlZnRfbmVpZ2hib3IgfD4gT3B0VXRpbC5hbmRfdGhlbihQaWVjZS5tb25vdGlsZSk7XG5cbmxldCByaWdodF9uZWlnaGJvcl9tb25vdGlsZTogU2libGluZ3MudCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBzID0+IHMgfD4gU2libGluZ3MucmlnaHRfbmVpZ2hib3IgfD4gT3B0VXRpbC5hbmRfdGhlbihQaWVjZS5tb25vdGlsZSk7XG5cbmxldCBuZWlnaGJvcl9tb25vdGlsZXM6IFNpYmxpbmdzLnQgPT4gKG9wdGlvbihUb2tlbi50KSwgb3B0aW9uKFRva2VuLnQpKSA9XG4gIHMgPT4gKGxlZnRfbmVpZ2hib3JfbW9ub3RpbGUocyksIHJpZ2h0X25laWdoYm9yX21vbm90aWxlKHMpKTtcblxubGV0IHJlZ3JvdXQgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+IHtcbiAgYXNzZXJ0KFNlbGVjdGlvbi5pc19lbXB0eSh6LnNlbGVjdGlvbikpO1xuICBsZXQgcmVsYXRpdmVzID0gUmVsYXRpdmVzLnJlZ3JvdXQoZCwgei5yZWxhdGl2ZXMpO1xuICB7Li4ueiwgcmVsYXRpdmVzfTtcbn07XG5cbmxldCByZW1vbGQgPSAoejogdCk6IHQgPT4ge1xuICBhc3NlcnQoU2VsZWN0aW9uLmlzX2VtcHR5KHouc2VsZWN0aW9uKSk7XG4gIHsuLi56LCByZWxhdGl2ZXM6IFJlbGF0aXZlcy5yZW1vbGQoei5yZWxhdGl2ZXMpfTtcbn07XG5cbmxldCByZW1vbGRfcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IHQgPT4geiB8PiByZW1vbGQgfD4gcmVncm91dChkKTtcblxubGV0IGNsZWFyX3VucGFyc2VkX2J1ZmZlciA9ICh6OiB0KSA9PlxuICBzd2l0Y2ggKHouc2VsZWN0aW9uLm1vZGUpIHtcbiAgfCBCdWZmZXIoVW5wYXJzZWQpID0+IHsuLi56LCBzZWxlY3Rpb246IFNlbGVjdGlvbi5lbXB0eX1cbiAgfCBfID0+IHpcbiAgfTtcblxubGV0IHVuc2VsZWN0ID0gKH5lcmFzZV9idWZmZXI9ZmFsc2UsIHo6IHQpOiB0ID0+IHtcbiAgLyogTk9URShhbmRyZXcpOiBFcmFzZSBidWZmZXIgZmxhZyBvbmx5IGFwcGxpZXMgdG8gdW5wYXJzZWQgYnVmZmVyLFxuICAgKiB0aGF0IGlzLCB0aGUgYnVmZmVyIHN0eWxlIHRoYXQganVzdCBjb250YWlucyBhIHNpbmdsZSBmbGF0IHRva2VuLlxuICAgKiBFcmFzaW5nIGEgYnVmZmVyIHRoZSBjb250YWlucyBhcmJpdHJhcnkgdGlsZXMgd291bGQgYmUgbW9yZSBjb21wbGV4XG4gICAqIGFzIHdlIGNhbid0IGp1c3QgZW1wdHkgdGhlIHNlbGVjdGlvbiB3aXRob3V0IHJlZ3JvdXRpbmcgKi9cbiAgbGV0IHogPSBlcmFzZV9idWZmZXIgPyBjbGVhcl91bnBhcnNlZF9idWZmZXIoeikgOiB6O1xuICBsZXQgcmVsYXRpdmVzID1cbiAgICB6LnJlbGF0aXZlc1xuICAgIHw+IFJlbGF0aXZlcy5wcmVwZW5kKHouc2VsZWN0aW9uLmZvY3VzLCB6LnNlbGVjdGlvbi5jb250ZW50KVxuICAgIHw+IFJlbGF0aXZlcy5yZWFzc2VtYmxlO1xuICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLmVtcHR5O1xuICB7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9O1xufTtcbmxldCB1bnNlbGVjdF9hbmRfemlwID0gKH5lcmFzZV9idWZmZXI9ZmFsc2UsIHo6IHQpOiBTZWdtZW50LnQgPT5cbiAgeiB8PiB1bnNlbGVjdCh+ZXJhc2VfYnVmZmVyKSB8PiB6aXA7XG5cbmxldCB1cGRhdGVfc2VsZWN0aW9uID0gKHNlbGVjdGlvbjogU2VsZWN0aW9uLnQsIHo6IHQpOiAoU2VsZWN0aW9uLnQsIHQpID0+IHtcbiAgbGV0IG9sZCA9IHouc2VsZWN0aW9uO1xuICAvLyB1c2VkIHRvIGJlIG5lY2Vzc2FyeSB0byB1bnNlbGVjdCB3aGVuIHNlbGVjdGlvbiB1cGRhdGVcbiAgLy8gaW5jbHVkZWQgcmVtb2xkL3JlZ3JvdXQsIG5vdyBubyBsb25nZXIgbmVjZXNzYXJ5IGlmIG5lZWRzXG4gIC8vIHRvIGJlIGNoYW5nZWQgYnV0IGtlZXBpbmcgZm9yIG5vdyB0byBtaW5pbWl6ZSBjaGFuZ2VcbiAgbGV0IHogPSB1bnNlbGVjdCh7Li4ueiwgc2VsZWN0aW9ufSk7XG4gIChvbGQsIHopO1xufTtcblxubGV0IHB1dF9zZWxlY3Rpb24gPSAoc2VsOiBTZWxlY3Rpb24udCwgejogdCk6IHQgPT5cbiAgc25kKHVwZGF0ZV9zZWxlY3Rpb24oc2VsLCB6KSk7XG5cbmxldCBncm93X3NlbGVjdGlvbiA9ICh6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0KyAocCwgcmVsYXRpdmVzKSA9IFJlbGF0aXZlcy5wb3Aoei5zZWxlY3Rpb24uZm9jdXMsIHoucmVsYXRpdmVzKTtcbiAgbGV0IHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5wdXNoKHAsIHouc2VsZWN0aW9uKTtcbiAgey4uLnosIHNlbGVjdGlvbiwgcmVsYXRpdmVzfTtcbn07XG5cbi8vIHRvZ2dsZXMgZm9jdXMgYW5kIGdyb3dzIGlmIHNlbGVjdGlvbiBpcyBlbXB0eVxubGV0IHNocmlua19zZWxlY3Rpb24gPSAoejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIHN3aXRjaCAoU2VsZWN0aW9uLnBvcCh6LnNlbGVjdGlvbikpIHtcbiAgfCBOb25lID0+XG4gICAgbGV0IHNlbGVjdGlvbiA9IFNlbGVjdGlvbi50b2dnbGVfZm9jdXMoei5zZWxlY3Rpb24pO1xuICAgIGdyb3dfc2VsZWN0aW9uKHsuLi56LCBzZWxlY3Rpb259KTtcbiAgfCBTb21lKChwLCBzZWxlY3Rpb24pKSA9PlxuICAgIGxldCByZWxhdGl2ZXMgPVxuICAgICAgei5yZWxhdGl2ZXNcbiAgICAgIHw+IFJlbGF0aXZlcy5wdXNoKHNlbGVjdGlvbi5mb2N1cywgcClcbiAgICAgIHw+IFJlbGF0aXZlcy5yZWFzc2VtYmxlO1xuICAgIFNvbWUoey4uLnosIHNlbGVjdGlvbiwgcmVsYXRpdmVzfSk7XG4gIH07XG59O1xuXG5sZXQgdG9nZ2xlX2ZvY3VzID0gKHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24udG9nZ2xlX2ZvY3VzKHouc2VsZWN0aW9uKSxcbn07XG5cbmxldCBkaXJlY3Rpb25hbF91bnNlbGVjdCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IHQgPT4ge1xuICBsZXQgc2VsZWN0aW9uID0gey4uLnouc2VsZWN0aW9uLCBmb2N1czogRGlyZWN0aW9uLnRvZ2dsZShkKX07XG4gIHVuc2VsZWN0KHsuLi56LCBzZWxlY3Rpb259KTtcbn07XG5cbmxldCBtb3ZlID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gIGlmIChTZWxlY3Rpb24uaXNfZW1wdHkoei5zZWxlY3Rpb24pKSB7XG4gICAgLy8gbGV0IGJhbGFuY2VkID0gIUJhY2twYWNrLmlzX2JhbGFuY2VkKHouYmFja3BhY2spO1xuICAgIGxldCsgKHAsIHJlbGF0aXZlcykgPSBSZWxhdGl2ZXMucG9wKGQsIHoucmVsYXRpdmVzKTtcbiAgICBsZXQgcmVsYXRpdmVzID1cbiAgICAgIHJlbGF0aXZlc1xuICAgICAgfD4gUmVsYXRpdmVzLnB1c2goRGlyZWN0aW9uLnRvZ2dsZShkKSwgcClcbiAgICAgIHw+IFJlbGF0aXZlcy5yZWFzc2VtYmxlO1xuICAgIHsuLi56LCByZWxhdGl2ZXN9O1xuICB9IGVsc2Uge1xuICAgIFNvbWUoZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpO1xuICB9O1xuXG5sZXQgc2VsZWN0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gIGQgPT0gei5zZWxlY3Rpb24uZm9jdXMgPyBncm93X3NlbGVjdGlvbih6KSA6IHNocmlua19zZWxlY3Rpb24oeik7XG5cbmxldCBwaWNrX3VwID0gKHo6IHQpOiB0ID0+IHtcbiAgbGV0IChzZWxlY3RlZCwgeikgPSB1cGRhdGVfc2VsZWN0aW9uKFNlbGVjdGlvbi5lbXB0eSwgeik7XG4gIGxldCBzZWxlY3Rpb24gPVxuICAgIHNlbGVjdGVkLmNvbnRlbnRcbiAgICB8PiBTZWdtZW50LnRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeShMZWZ0KVxuICAgIHw+IFNlZ21lbnQudHJpbV9ncm91dF9hcm91bmRfc2Vjb25kYXJ5KFJpZ2h0KVxuICAgIHw+IFNlbGVjdGlvbi5taztcbiAgU2VnbWVudC50aWxlcyhzZWxlY3Rpb24uY29udGVudClcbiAgfD4gTGlzdC5tYXAoKHQ6IFRpbGUudCkgPT4gdC5pZClcbiAgfD4gRWZmZWN0LnNfdG91Y2g7XG4gIGxldCBiYWNrcGFjayA9IEJhY2twYWNrLnB1c2goc2VsZWN0aW9uLCB6LmJhY2twYWNrKTtcbiAgey4uLnosIGJhY2twYWNrfTtcbn07XG5cbmxldCBkZXN0cnVjdCA9ICh+ZGVzdHJveV9raWRzPXRydWUsIHo6IHQpOiB0ID0+IHtcbiAgbGV0IGJhY2twYWNrID1cbiAgICBCYWNrcGFjay5yZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXRjaGVzKHouYmFja3BhY2ssIHouc2VsZWN0aW9uKTtcbiAgbGV0IChzZWxlY3RlZCwgeikgPSB1cGRhdGVfc2VsZWN0aW9uKFNlbGVjdGlvbi5lbXB0eSwgeik7XG4gIGxldCAodG9fcGlja191cCwgdG9fcmVtb3ZlKSA9XG4gICAgU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKHNlbGVjdGVkLmNvbnRlbnQpXG4gICAgfD4gTGlzdC5wYXJ0aXRpb24odCA9PlxuICAgICAgICAgU2libGluZ3MuY29udGFpbnNfbWF0Y2hpbmcodCwgei5yZWxhdGl2ZXMuc2libGluZ3MpXG4gICAgICAgICB8fCBBbmNlc3RvcnMucGFyZW50X21hdGNoZXModCwgei5yZWxhdGl2ZXMuYW5jZXN0b3JzKVxuICAgICAgICk7XG4gIC8qIElmIGZsYWcgaXMgc2V0LCBicmVhayB1cCB0aWxlcyBhbmQgcmVtb3ZlIGNoaWxkcmVuICovXG4gIGxldCB0b19waWNrX3VwID1cbiAgICBkZXN0cm95X2tpZHNcbiAgICAgID8gTGlzdC5tYXAoVGlsZS5kaXNpbnRlZ3JhdGUsIHRvX3BpY2tfdXApIHw+IExpc3QuZmxhdHRlbiA6IHRvX3BpY2tfdXA7XG4gIEVmZmVjdC5zX3RvdWNoKExpc3QubWFwKCh0OiBUaWxlLnQpID0+IHQuaWQsIHRvX3BpY2tfdXApKTtcbiAgbGV0IGJhY2twYWNrID1cbiAgICBiYWNrcGFja1xuICAgIHw+IEJhY2twYWNrLnJlbW92ZV9tYXRjaGluZyh0b19yZW1vdmUpXG4gICAgfD4gQmFja3BhY2sucHVzaF9zKFxuICAgICAgICAgdG9fcGlja191cCB8PiBMaXN0Lm1hcChTZWdtZW50Lm9mX3RpbGUpIHw+IExpc3QubWFwKFNlbGVjdGlvbi5tayksXG4gICAgICAgKTtcbiAgey4uLnosIGJhY2twYWNrfTtcbn07XG5cbmxldCBkZWxldGUgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgeiB8PiBzZWxlY3QoZCkgfD4gT3B0aW9uLm1hcChkZXN0cnVjdCk7XG5cbmxldCBwdXRfZG93biA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gIGxldCogKF8sIHBvcHBlZCwgYmFja3BhY2spID0gcG9wX2JhY2twYWNrKHopO1xuICBTZWdtZW50LnRpbGVzKHBvcHBlZC5jb250ZW50KVxuICB8PiBMaXN0Lm1hcCgodDogVGlsZS50KSA9PiB0LmlkKVxuICB8PiBFZmZlY3Quc190b3VjaDtcbiAgbGV0IHogPSB7Li4ueiwgYmFja3BhY2t9IHw+IHB1dF9zZWxlY3Rpb24ocG9wcGVkKSB8PiB1bnNlbGVjdDtcbiAgc3dpdGNoIChkKSB7XG4gIHwgTGVmdCA9PiBTb21lKHopXG4gIHwgUmlnaHQgPT4gbW92ZShMZWZ0LCB6KVxuICB9O1xufTtcblxubGV0IHJlYyBjb25zdHJ1Y3QgPVxuICAgICAgICAofmNhcmV0OiBEaXJlY3Rpb24udCwgfmJhY2twYWNrOiBEaXJlY3Rpb24udCwgbGFiZWw6IExhYmVsLnQsIHo6IHQpOiB0ID0+IHtcbiAgc3dpdGNoIChsYWJlbCkge1xuICB8IFt0XSB3aGVuIEZvcm0uaXNfc3RyaW5nX2RlbGltKHQpID0+XG4gICAgLyogU3BlY2lhbCBjYXNlIGZvciBjb25zdHJ1Y3Rpbmcgc3RyaW5nIGxpdGVyYWxzLlxuICAgICAgIFNlZSBJbnNlcnQubW92ZV9pbnRvX2lmX3N0cmluZ2xpdCBmb3IgbW9yZSBzcGVjaWFsLWNhc2luZy4gKi9cbiAgICBjb25zdHJ1Y3QofmNhcmV0LCB+YmFja3BhY2ssIFtGb3JtLnN0cmluZ19kZWxpbSArKyBGb3JtLnN0cmluZ19kZWxpbV0sIHopXG4gIHwgW2NvbnRlbnRdIHdoZW4gRm9ybS5pc19jb21tZW50KGNvbnRlbnQpID0+XG4gICAgLyogU3BlY2lhbCBjYXNlIGZvciBjb21tZW50cywgY2FuJ3QgcmVseSBvbiB0aGUgbGFzdCBicmFuY2ggdG8gY29uc3RydWN0ICovXG4gICAgbGV0IGNvbnRlbnQgPSBTZWNvbmRhcnkuY29uc3RydWN0X2NvbW1lbnQoY29udGVudCk7XG4gICAgbGV0IGlkID0gSWQubWsoKTtcbiAgICBFZmZlY3Quc190b3VjaChbaWRdKTtcbiAgICBsZXQgeiA9IGRlc3RydWN0KHopO1xuICAgIGxldCBzZWxlY3Rpb25zID0gW1NlbGVjdGlvbi5tayhCYXNlLm1rX3NlY29uZGFyeShpZCwgY29udGVudCkpXTtcbiAgICBsZXQgYmFja3BhY2sgPSBCYWNrcGFjay5wdXNoX3Moc2VsZWN0aW9ucywgei5iYWNrcGFjayk7XG4gICAgT3B0aW9uLmdldChwdXRfZG93bihjYXJldCwgey4uLnosIGJhY2twYWNrfSkpO1xuXG4gIHwgW2NvbnRlbnRdIHdoZW4gRm9ybS5pc19zZWNvbmRhcnkoY29udGVudCkgPT5cbiAgICBsZXQgY29udGVudCA9IFNlY29uZGFyeS5XaGl0ZXNwYWNlKGNvbnRlbnQpO1xuICAgIGxldCBpZCA9IElkLm1rKCk7XG4gICAgRWZmZWN0LnNfdG91Y2goW2lkXSk7XG4gICAgeiB8PiB1cGRhdGVfc2libGluZ3MoKChsLCByKSkgPT4gKGwgQCBbU2Vjb25kYXJ5KHtpZCwgY29udGVudH0pXSwgcikpO1xuICB8IF8gPT5cbiAgICBsZXQgeiA9IGRlc3RydWN0KHopO1xuICAgIGxldCBtb2xkcyA9IE1vbGRzLmdldChsYWJlbCk7XG4gICAgYXNzZXJ0KG1vbGRzICE9IFtdKTtcbiAgICAvLyBpbml0aWFsIG1vbGQgdG8gdHlwZWNoZWNrLCB3aWxsIGJlIHJlbW9sZGVkXG4gICAgbGV0IG1vbGQgPSBMaXN0LmhkKG1vbGRzKTtcbiAgICBsZXQgaWQgPSBJZC5taygpO1xuICAgIEVmZmVjdC5zX3RvdWNoKFtpZF0pO1xuICAgIGxldCBzZWxlY3Rpb25zID1cbiAgICAgIFRpbGUuc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCwgTGlzdC5tYXBpKChpLCBfKSA9PiBpLCBsYWJlbCkpXG4gICAgICB8PiBMaXN0Lm1hcChTZWdtZW50Lm9mX3RpbGUpXG4gICAgICB8PiBMaXN0Lm1hcChTZWxlY3Rpb24ubWspXG4gICAgICB8PiBMaXN0VXRpbC5yZXZfaWYoYmFja3BhY2sgPT0gUmlnaHQpO1xuICAgIGxldCBiYWNrcGFjayA9IEJhY2twYWNrLnB1c2hfcyhzZWxlY3Rpb25zLCB6LmJhY2twYWNrKTtcbiAgICBPcHRpb24uZ2V0KHB1dF9kb3duKGNhcmV0LCB7Li4ueiwgYmFja3BhY2t9KSk7XG4gIH07XG59O1xuXG5sZXQgY29uc3RydWN0X21vbm8gPSAoZDogRGlyZWN0aW9uLnQsIHQ6IFRva2VuLnQsIHo6IHQpOiB0ID0+XG4gIGNvbnN0cnVjdCh+Y2FyZXQ9ZCwgfmJhY2twYWNrPUxlZnQsIFt0XSwgeik7XG5cbmxldCByZXBsYWNlID1cbiAgICAofmNhcmV0OiBEaXJlY3Rpb24udCwgfmJhY2twYWNrOiBEaXJlY3Rpb24udCwgbDogTGFiZWwudCwgejogdClcbiAgICA6IG9wdGlvbih0KSA9PlxuICAvKiBpLmUuIHNlbGVjdCBhbmQgY29uc3RydWN0LCBvdmVyd3JpdGluZyB0aGUgc2VsZWN0aW9uICovXG4gIHogfD4gZGVsZXRlKGNhcmV0KSB8PiBPcHRpb24ubWFwKGNvbnN0cnVjdCh+Y2FyZXQsIH5iYWNrcGFjaywgbCkpO1xuXG5sZXQgcmVwbGFjZV9tb25vID0gKGQ6IERpcmVjdGlvbi50LCB0OiBUb2tlbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gIHJlcGxhY2UofmNhcmV0PWQsIH5iYWNrcGFjaz1MZWZ0LCBbdF0sIHopO1xuXG5sZXQgcmVwcmVzZW50YXRpdmVfcGllY2UgPSAoejogdCk6IG9wdGlvbigoUGllY2UudCwgRGlyZWN0aW9uLnQpKSA9PiB7XG4gIC8qIFRoZSBwaWVjZSB0byB0aGUgbGVmdCBvZiB0aGUgY2FyZXQsIG9yIGlmIG5vbmUgZXhpc3RzLCB0aGUgcGllY2UgdG8gdGhlIHJpZ2h0ICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnNfd2l0aF9zZWwoeikpKSB7XG4gIHwgKFNvbWUobCksIF8pID0+IFNvbWUoKGwsIExlZnQpKVxuICB8IChfLCBTb21lKHIpKSA9PiBTb21lKChyLCBSaWdodCkpXG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuXG5sZXQgY2FyZXRfZGlyZWN0aW9uID0gKHo6IHQpOiBvcHRpb24oRGlyZWN0aW9uLnQpID0+XG4gIC8qIERpcmVjdGlvbiB0aGUgY2FyZXQgaXMgZmFjaW5nIGluICovXG4gIHN3aXRjaCAoei5jYXJldCkge1xuICB8IElubmVyKF8pID0+IE5vbmVcbiAgfCBPdXRlciA9PlxuICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnNfd2l0aF9zZWwoeikpKSB7XG4gICAgfCAoU29tZShsKSwgU29tZShyKSkgd2hlbiBQaWVjZS5pc19zZWNvbmRhcnkobCkgJiYgUGllY2UuaXNfc2Vjb25kYXJ5KHIpID0+XG4gICAgICBOb25lXG4gICAgfCBfID0+IFNpYmxpbmdzLmRpcmVjdGlvbl9iZXR3ZWVuKHNpYnNfd2l0aF9zZWwoeikpXG4gICAgfVxuICB9O1xuXG5sZXQgYmFzZV9wb2ludCA9IChtZWFzdXJlZDogTWVhc3VyZWQudCwgejogdCk6IE1lYXN1cmVkLlBvaW50LnQgPT4ge1xuICBzd2l0Y2ggKHJlcHJlc2VudGF0aXZlX3BpZWNlKHopKSB7XG4gIHwgU29tZSgocCwgZCkpID0+XG4gICAgbGV0IHNlZyA9IFBpZWNlLmRpc2Fzc2VtYmxlKHApO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgTGVmdCA9PlxuICAgICAgbGV0IHAgPSBMaXN0VXRpbC5sYXN0KHNlZyk7XG4gICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtZWFzdXJlZCk7XG4gICAgICBtLmxhc3Q7XG4gICAgfCBSaWdodCA9PlxuICAgICAgbGV0IHAgPSBMaXN0LmhkKHNlZyk7XG4gICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtZWFzdXJlZCk7XG4gICAgICBtLm9yaWdpbjtcbiAgICB9O1xuICB8IE5vbmUgPT4ge3JvdzogMCwgY29sOiAwfVxuICB9O1xufTtcbmxldCBjYXJldF9wb2ludCA9IChtZWFzdXJlZCwgejogdCk6IE1lYXN1cmVkLlBvaW50LnQgPT4ge1xuICBsZXQgTWVhc3VyZWQuUG9pbnQue3JvdywgY29sfSA9IGJhc2VfcG9pbnQobWVhc3VyZWQsIHopO1xuICB7cm93LCBjb2w6IGNvbCArIENhcmV0Lm9mZnNldCh6LmNhcmV0KX07XG59O1xuXG5sZXQgc2VyaWFsaXplID0gKHo6IHQpOiBzdHJpbmcgPT4ge1xuICBzZXhwX29mX3QoeikgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChkYXRhOiBzdHJpbmcpOiB0ID0+IHtcbiAgU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhkYXRhKSB8PiB0X29mX3NleHA7XG59O1xuXG5sZXQgY2FuX3B1dF9kb3duID0geiA9PlxuICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICB8IFNvbWUoXykgPT4gei5jYXJldCA9PSBPdXRlclxuICB8IE5vbmUgPT4gZmFsc2VcbiAgfTtcblxubGV0IHNldF9idWZmZXIgPSAoejogdCwgfm1vZGU6IFNlbGVjdGlvbi5idWZmZXIsIH5jb250ZW50OiBTZWdtZW50LnQpOiB0ID0+IHtcbiAgLi4ueixcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24ubWtfYnVmZmVyKG1vZGUsIGNvbnRlbnQpLFxufTtcblxubGV0IGlzX2xpbmVicmVha190b19yaWdodF9vZl9jYXJldCA9XG4gICAgKHtyZWxhdGl2ZXM6IHtzaWJsaW5nczogKF8sIHIpLCBffSwgX306IHQpOiBib29sID0+IHtcbiAgc3dpdGNoIChyKSB7XG4gIHwgW1NlY29uZGFyeShzKSwgLi4uX10gd2hlbiBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHMpID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG59O1xuXG4vKiBUcnkgdG8gY29tcGxldGUgdGhlIHN5bnRheCB0byBnaXZlIGJldHRlciBzZW1hbnRpYyBmZWViYWNrLlxuICogVGhpcyBpcyBhIGJlc3QtZWZmb3J0IGFwcHJvYWNoIGZvY3Vzc2VkIG9uIGFkZGluZyBuZXcgZGVmaW5pdGlvbnNcbiAqIGFzIG9wcG9zZWQgdG8gcmVzdHJ1Y3R1cmluZzsgaXQgZG9lcyBub3QgY29tcGxldGUgdGhlIHN5bnRheCBpblxuICogYWxsIGNhc2VzLlxuICpcbiAqIE5PVEU6IFNldHRpbmcgdGhlIGNhcmV0IHRvIG91dGVyIHdhcyBuZWNlc3NhcnkgdG8gJ2dldCBpdCBwYXN0J1xuICogc3RyaW5nIGxpdGVyYWxzLCBpLmUuIG9mZmVyIGxpdmUgZmVlYmFjayB3aGVuIHR5cGluZyBpbnNpZGUgYVxuICogc3RyaW5nOyBub3Qgc3VyZSBpZiB0aGlzIGlzIGEgaGFjayBvciBub3QsIGl0IG1heSBiZSBjb21wZW5zYXRpbmdcbiAqIGZvciB0aGUgcHV0X2Rvd24gbG9naWMgbm90IHdvcmtpbmcgcmlnaHQgd2l0aCBzdHJpbmcgbGl0cy4gVG8gdGVzdCxcbiAqIHRyeSB0byBsb29rIGF0IGxpdmUgZXZhbHVhdGlvbiB3aGlsZSB0eXBpbmcgaW5zaWRlIGEgc3RyaW5nIGxpdCB3aXRoXG4gKiBzdHVmZiBsZWZ0IHRvIGRyb3AgaW4gYmFja3BhY2sgd2l0aCBiZWxvdyBzZXQ6IE91dGVyIGRpc2FibGVkLiAqL1xubGV0IHRyeV90b19kdW1wX2JhY2twYWNrID0gKHppcHBlcjogdCkgPT4ge1xuICBzd2l0Y2ggKHppcHBlci5iYWNrcGFjaykge1xuICB8IFtdID0+IHppcHBlclxuICB8IF8gPT5cbiAgICBsZXQgemlwcGVyID0gey4uLnppcHBlciwgY2FyZXQ6IE91dGVyfTtcbiAgICBsZXQgcmVjIG1vdmVfdW50aWxfY2FudF9wdXRfZG93biA9ICh6X2xhc3QsIHo6IHQpID0+XG4gICAgICBpZiAoY2FuX3B1dF9kb3duKHopICYmICFpc19saW5lYnJlYWtfdG9fcmlnaHRfb2ZfY2FyZXQoeikpIHtcbiAgICAgICAgc3dpdGNoIChtb3ZlKFJpZ2h0LCB6KSkge1xuICAgICAgICB8IE5vbmUgPT4gelxuICAgICAgICB8IFNvbWUoel9uZXcpID0+IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6LCB6X25ldylcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHpfbGFzdDtcbiAgICAgIH07XG4gICAgbGV0IHJlYyBtb3ZlX3VudGlsX2Nhbl9wdXRfZG93biA9ICh6OiB0KSA9PlxuICAgICAgaWYgKCFjYW5fcHV0X2Rvd24oeikpIHtcbiAgICAgICAgc3dpdGNoIChtb3ZlKFJpZ2h0LCB6KSkge1xuICAgICAgICB8IE5vbmUgPT4gelxuICAgICAgICB8IFNvbWUoel9uZXcpID0+IG1vdmVfdW50aWxfY2FuX3B1dF9kb3duKHpfbmV3KVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgejtcbiAgICAgIH07XG4gICAgbGV0IHJlYyBnbyA9ICh6OiB0KTogdCA9PlxuICAgICAgaWYgKGNhbl9wdXRfZG93bih6KSkge1xuICAgICAgICBsZXQgel9jYW4gPSBtb3ZlX3VudGlsX2NhbnRfcHV0X2Rvd24oeiwgeik7XG4gICAgICAgIHN3aXRjaCAocHV0X2Rvd24oUmlnaHQsIHpfY2FuKSkge1xuICAgICAgICB8IE5vbmUgPT4gel9jYW5cbiAgICAgICAgfCBTb21lKHopID0+XG4gICAgICAgICAgbGV0IHogPSByZWdyb3V0KFJpZ2h0LCB6KTtcbiAgICAgICAgICBnbyh6KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FuX3B1dF9kb3duKHopO1xuICAgICAgICBsZXQgel9jYW4gPSBtb3ZlX3VudGlsX2NhbnRfcHV0X2Rvd24oel9jYW4sIHpfY2FuKTtcbiAgICAgICAgc3dpdGNoIChwdXRfZG93bihSaWdodCwgel9jYW4pKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6X2NhblxuICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICBsZXQgeiA9IHJlZ3JvdXQoUmlnaHQsIHopO1xuICAgICAgICAgIGdvKHopO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICBnbyh6aXBwZXIpO1xuICB9O1xufTtcblxubGV0IHNtYXJ0X3NlZyA9ICh+ZHVtcF9iYWNrcGFjazogYm9vbCwgfmVyYXNlX2J1ZmZlcjogYm9vbCwgejogdCkgPT4ge1xuICBsZXQgeiA9IGVyYXNlX2J1ZmZlciA/IGNsZWFyX3VucGFyc2VkX2J1ZmZlcih6KSA6IHo7XG4gIGxldCB6ID0gZHVtcF9iYWNrcGFjayA/IHRyeV90b19kdW1wX2JhY2twYWNrKHopIDogejtcbiAgdW5zZWxlY3RfYW5kX3ppcCh+ZXJhc2VfYnVmZmVyLCB6KTtcbn07XG5cbmxldCBzZWdfZm9yX3ZpZXcgPSBzbWFydF9zZWcofmVyYXNlX2J1ZmZlcj1mYWxzZSwgfmR1bXBfYmFja3BhY2s9ZmFsc2UpO1xubGV0IHNlZ19mb3Jfc2VtID0gc21hcnRfc2VnKH5lcmFzZV9idWZmZXI9dHJ1ZSwgfmR1bXBfYmFja3BhY2s9dHJ1ZSk7XG5cbmxldCBzZWdfd2l0aG91dF9idWZmZXIgPSBzbWFydF9zZWcofmVyYXNlX2J1ZmZlcj10cnVlLCB+ZHVtcF9iYWNrcGFjaz1mYWxzZSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRfKCdhKSA9IGxpc3QoKFRva2VuLnQsICdhKSk7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgaXNfZW1wdHkgPVxuICBmdW5cbiAgfCBbXSA9PiB0cnVlXG4gIHwgW18sIC4uLl9dID0+IGZhbHNlO1xuXG5sZXQgZXh0ZW5kID0gKGN0eCwgeGEpID0+IHtcbiAgW3hhLCAuLi5jdHhdO1xufTtcblxuLy8gVGhlIG5ldyB0aGluZ3Mgc2hvdWxkIGdvIHRvIHRoZSByaWdodCB3aGVuIGNvbmNhdGVuYXRpbmdcbmxldCBjb25jYXQgPSAoY3R4LCBuZXdfY3R4KSA9PiBuZXdfY3R4IEAgY3R4O1xuXG5sZXQgbG9va3VwID0gKGN0eCwgeCkgPT4gTGlzdC5hc3NvY19vcHQoeCwgY3R4KTtcblxubGV0IGNvbnRhaW5zID0gKGN0eCwgeCkgPT4gTGlzdC5tZW1fYXNzb2MoeCwgY3R4KTtcblxubGV0IG1hcCA9IChmLCB4cykgPT4gTGlzdC5tYXAoKCh4LCBfKSBhcyB4YSkgPT4gKHgsIGYoeGEpKSwgeHMpO1xuXG5sZXQgZmlsdGVyID0gTGlzdC5maWx0ZXI7XG5cbmxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aDtcblxubGV0IHRvX2xpc3QgPSBjdHggPT4gY3R4O1xuXG5sZXQgZmluZF9tYXAgPSBMaXN0LmZpbmRfbWFwO1xuXG5sZXQgcmVjIHVwZGF0ZSA9IChjdHg6IHRfKCdhKSwgbmFtZTogc3RyaW5nLCBmOiAnYSA9PiAnYSk6IHRfKCdhKSA9PlxuICBzd2l0Y2ggKGN0eCkge1xuICB8IFtdID0+IFtdXG4gIHwgWyhrLCB2KSwgLi4uY3R4XSA9PlxuICAgIGlmIChuYW1lID09IGspIHtcbiAgICAgIFsoaywgZih2KSksIC4uLmN0eF07XG4gICAgfSBlbHNlIHtcbiAgICAgIFsoaywgdiksIC4uLnVwZGF0ZShjdHgsIG5hbWUsIGYpXTtcbiAgICB9XG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IExldFxuICB8IENhc2VcbiAgfCBGdW5cbiAgfCBUZXN0O1xuXG5sZXQgaXNfTGV0ID0gU3RyaW5nLmVxdWFsKFwibGV0XCIpO1xubGV0IGlzX0Nhc2UgPSBTdHJpbmcuZXF1YWwoXCJjYXNlXCIpO1xubGV0IGlzX0Z1biA9IFN0cmluZy5lcXVhbChcImZ1blwiKTtcbmxldCBpc19UZXN0ID0gU3RyaW5nLmVxdWFsKFwidGVzdFwiKTtcblxubGV0IG1rID0gKHRleHQ6IHN0cmluZyk6IG9wdGlvbih0KSA9PlxuICBpZiAodGV4dCB8PiBpc19MZXQpIHtcbiAgICBTb21lKExldCk7XG4gIH0gZWxzZSBpZiAodGV4dCB8PiBpc19DYXNlKSB7XG4gICAgU29tZShDYXNlKTtcbiAgfSBlbHNlIGlmICh0ZXh0IHw+IGlzX0Z1bikge1xuICAgIFNvbWUoRnVuKTtcbiAgfSBlbHNlIGlmICh0ZXh0IHw+IGlzX1Rlc3QpIHtcbiAgICBTb21lKFRlc3QpO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCB0b19zdHJpbmcgPVxuICBmdW5cbiAgfCBMZXQgPT4gXCJsZXRcIlxuICB8IENhc2UgPT4gXCJjYXNlXCJcbiAgfCBGdW4gPT4gXCJmdW5cIlxuICB8IFRlc3QgPT4gXCJ0ZXN0XCI7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBJZC50O1xuIiwibW9kdWxlIEhvbGVSZWFzb24gPSB7XG4gIC8qIFZhcmlhYmxlOiByZWFzb24gKi9cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRnJlZVxuICAgIHwgRXhwYW5kaW5nS2V5d29yZChFeHBhbmRpbmdLZXl3b3JkLnQpO1xufTtcblxuLyogVmFyaWFibGU6IHZhcl9lcnIgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTm90SW5WYXJIb2xlXG4gIHwgSW5WYXJIb2xlKEhvbGVSZWFzb24udCwgTWV0YVZhci50KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsO1xuIiwib3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBiaW5kaW5nKCdhKSA9IChDb25zdHJ1Y3Rvci50LCAnYSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSkgPSBsaXN0KGJpbmRpbmcoJ2EpKTtcblxubGV0IGNvbXBhcmUgPSBjb21wYXJlO1xuXG5sZXQgZW1wdHk6IHQoJ2EpID0gW107XG5cbmxldCBpc19lbXB0eTogdCgnYSkgPT4gYm9vbCA9XG4gIGZ1blxuICB8IFtdID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgcmVjIGFkZCA9IChjdHI6IENvbnN0cnVjdG9yLnQsIHZhbHVlOiAnYSwgbWFwOiB0KCdhKSk6IHQoJ2EpID0+XG4gIHN3aXRjaCAobWFwKSB7XG4gIHwgW10gPT4gWyhjdHIsIHZhbHVlKV1cbiAgfCBbKGN0cicsIHZhbHVlJykgYXMgaGVhZCwgLi4udGFpbF0gPT5cbiAgICBpZiAoQ29uc3RydWN0b3IuZXF1YWwoY3RyLCBjdHInKSkge1xuICAgICAgaWYgKHZhbHVlID09PSB2YWx1ZScpIHtcbiAgICAgICAgbWFwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgWyhjdHIsIHZhbHVlKSwgLi4udGFpbF07XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBbaGVhZCwgLi4uYWRkKGN0ciwgdmFsdWUsIHRhaWwpXTtcbiAgICB9XG4gIH07XG5cbmxldCBzaW5nbGV0b24gPSAoY3RyOiBDb25zdHJ1Y3Rvci50LCB2YWx1ZTogJ2EpOiB0KCdhKSA9PiBbKGN0ciwgdmFsdWUpXTtcblxubGV0IGNvbXBhcmVfYmluZGluZ3MgPVxuICAgICgoY3RyMSwgXyk6IGJpbmRpbmcoJ2EpLCAoY3RyMiwgXyk6IGJpbmRpbmcoJ2EpKTogaW50ID0+XG4gIGNvbXBhcmUoY3RyMSwgY3RyMik7XG5cbi8qIGNvbXBhcmVzIGN0cnMgb25seSAqL1xubGV0IGVxdWFsID0gKHZhbF9lcXVhbDogKCdhLCAnYSkgPT4gYm9vbCwgbWFwMTogdCgnYSksIG1hcDI6IHQoJ2EpKTogYm9vbCA9PiB7XG4gIGxldCBlcXVhbF9iaW5kaW5ncyA9XG4gICAgICAoXG4gICAgICAgIHZhbF9lcXVhbDogKCdhLCAnYSkgPT4gYm9vbCxcbiAgICAgICAgKGN0cjEsIHZhbDEpOiBiaW5kaW5nKCdhKSxcbiAgICAgICAgKGN0cjIsIHZhbDIpOiBiaW5kaW5nKCdhKSxcbiAgICAgIClcbiAgICAgIDogYm9vbCA9PlxuICAgIENvbnN0cnVjdG9yLmVxdWFsKGN0cjEsIGN0cjIpICYmIHZhbF9lcXVhbCh2YWwxLCB2YWwyKTtcbiAgbWFwMSA9PT0gbWFwMlxuICB8fCB7XG4gICAgbGV0IG1hcDEgPSBMaXN0LmZhc3Rfc29ydChjb21wYXJlX2JpbmRpbmdzLCBtYXAxKTtcbiAgICBsZXQgbWFwMiA9IExpc3QuZmFzdF9zb3J0KGNvbXBhcmVfYmluZGluZ3MsIG1hcDIpO1xuICAgIExpc3QuZXF1YWwoZXF1YWxfYmluZGluZ3ModmFsX2VxdWFsKSwgbWFwMSwgbWFwMik7XG4gIH07XG59O1xuXG5sZXQgY2FyZGluYWw6IHQoJ2EpID0+IGludCA9IExpc3QubGVuZ3RoO1xuXG5sZXQgY3Ryc19vZiA9IChtOiBsaXN0KChDb25zdHJ1Y3Rvci50LCAnYSkpKTogbGlzdChDb25zdHJ1Y3Rvci50KSA9PlxuICBMaXN0Lm1hcChmc3QsIG0pO1xuXG5sZXQgc2FtZV9jb25zdHJ1Y3RvcnNfc2FtZV9vcmRlciA9IChtYXAxOiB0KCdhKSwgbWFwMjogdCgnYSkpOiBib29sID0+XG4gIGNhcmRpbmFsKG1hcDEpID09PSBjYXJkaW5hbChtYXAyKVxuICAmJiBMaXN0LmZvcl9hbGwyKENvbnN0cnVjdG9yLmVxdWFsLCBjdHJzX29mKG1hcDEpLCBjdHJzX29mKG1hcDIpKTtcblxubGV0IGN0cnNfZXF1YWwgPSAobWFwMTogdCgnYSksIG1hcDI6IHQoJ2EpKTogYm9vbCA9PiB7XG4gIGxldCBjdHJzMSA9IGN0cnNfb2YobWFwMSk7XG4gIGxldCBjdHJzMiA9IGN0cnNfb2YobWFwMik7XG4gIGN0cnMxID09PSBjdHJzMlxuICB8fCBMaXN0LmZhc3Rfc29ydChjb21wYXJlLCBjdHJzMSkgPT0gTGlzdC5mYXN0X3NvcnQoY29tcGFyZSwgY3RyczIpO1xufTtcblxubGV0IGZvcl9hbGw6IChiaW5kaW5nKCdhKSA9PiBib29sLCB0KCdhKSkgPT4gYm9vbCA9IExpc3QuZm9yX2FsbDtcblxubGV0IGJpbmRpbmdzOiB0KCdhKSA9PiBsaXN0KGJpbmRpbmcoJ2EpKSA9IHggPT4geDtcblxubGV0IGZpbmRfb3B0ID0gKGN0cjogQ29uc3RydWN0b3IudCwgbWFwOiB0KCdhKSk6IG9wdGlvbignYSkgPT4ge1xuICBsZXQrIGJpbmRpbmcgPSBMaXN0LmZpbmRfb3B0KCgoaywgXykpID0+IENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgayksIG1hcCk7XG4gIHNuZChiaW5kaW5nKTtcbn07XG5cbmxldCBtYXAgPSAoZjogJ2EgPT4gJ2IsIG06IHQoJ2EpKTogdCgnYikgPT4ge1xuICBsZXQgKGN0cnMsIHZhbHMpID0gTGlzdC5zcGxpdChtKTtcbiAgbGV0IHZhbHMgPSBMaXN0Lm1hcChmLCB2YWxzKTtcbiAgTGlzdC5jb21iaW5lKGN0cnMsIHZhbHMpO1xufTtcblxuLyogc29ydHMgb24gY3RycyBvbmx5ICovXG5sZXQgc29ydCA9IChtYXA6IHQoJ2EpKTogdCgnYSkgPT4ge1xuICBMaXN0LmZhc3Rfc29ydChjb21wYXJlX2JpbmRpbmdzLCBtYXApO1xufTtcblxubGV0IG9mX2xpc3Q6IGxpc3QoYmluZGluZygnYSkpID0+IHQoJ2EpID0geCA9PiB4O1xuXG5sZXQgcmVjIGlzX2dyb3VuZCA9IChpc19ncm91bmRfdmFsdWU6ICdhID0+IGJvb2wsIG1hcDogdCgnYSkpOiBib29sID0+XG4gIHN3aXRjaCAobWFwKSB7XG4gIHwgW10gPT4gdHJ1ZVxuICB8IFsoXywgaGVhZCksIC4uLnRhaWxdID0+XG4gICAgaXNfZ3JvdW5kX3ZhbHVlKGhlYWQpICYmIHRhaWwgfD4gaXNfZ3JvdW5kKGlzX2dyb3VuZF92YWx1ZSlcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubGV0IGVxID0gU3RyaW5nLmVxdWFsO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gc3RyaW5nO1xuXG5sZXQgZXEgPSBTdHJpbmcuZXF1YWw7XG5cbmxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoO1xuXG5sZXQgdmFsaWRfcmVnZXggPVxuICBSZS5TdHIucmVnZXhwKFwiXlxcXFwoW2EtekEtWl1cXFxcfF9bX2EtekEtWjAtOV1cXFxcKVtfYS16QS1aMC05J10qJFwiKTtcbmxldCBpc192YWxpZCA9IHMgPT4gUmUuU3RyLnN0cmluZ19tYXRjaCh2YWxpZF9yZWdleCwgcywgMCk7XG5cbi8qIGhlbHBlciBmdW5jdGlvbiBmb3IgZ3VhcmRpbmcgb3B0aW9ucyB3aXRoIGlzX3ZhbGlkICovXG5sZXQgY2hlY2tfdmFsaWQgPSAocywgcmVzdWx0KSA9PlxuICBpZiAoaXNfdmFsaWQocykpIHtcbiAgICByZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IGlzX3RydWUgPSBlcShcInRydWVcIik7XG5cbmxldCBpc19mYWxzZSA9IGVxKFwiZmFsc2VcIik7XG5cbmxldCBpc19sZXQgPSBlcShcImxldFwiKTtcblxubGV0IGlzX2Z1biA9IGVxKFwiZnVuXCIpO1xuXG5sZXQgaXNfY2FzZSA9IGVxKFwiY2FzZVwiKTtcblxubGV0IGlzX3dpbGQgPSBlcShcIl9cIik7XG5cbmxldCBpc19rZXl3b3JkID0gcyA9PlxuICBzd2l0Y2ggKEV4cGFuZGluZ0tleXdvcmQubWsocykpIHtcbiAgfCBTb21lKF8pID0+IHRydWVcbiAgfCBOb25lID0+IGZhbHNlXG4gIH07XG5cbmxldCBzcGxpdCA9IChwb3MsIG5hbWUpID0+IHtcbiAgbGV0IGxlZnRfdmFyID0gU3RyaW5nLnN1YihuYW1lLCAwLCBwb3MpO1xuICBsZXQgcmlnaHRfdmFyID0gU3RyaW5nLnN1YihuYW1lLCBwb3MsIFN0cmluZy5sZW5ndGgobmFtZSkgLSBwb3MpO1xuICAobGVmdF92YXIsIHJpZ2h0X3Zhcik7XG59O1xuXG4vKiBVc2VkIGZvciBWYXJCc3RNYXAgKi9cbmxldCBjb21wYXJlID0gKHg6IHQsIHk6IHQpID0+IGNvbXBhcmUoeCwgeSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubGV0IHByZWNlZGVuY2VfUHJvZCA9IDE7XG5sZXQgcHJlY2VkZW5jZV9BcnJvdyA9IDI7XG5sZXQgcHJlY2VkZW5jZV9TdW0gPSAzO1xubGV0IHByZWNlZGVuY2VfQ29uc3QgPSA0O1xuXG5tb2R1bGUgcmVjIFR5cDoge1xuICAvKiBUWVBFX1BST1ZFTkFOQ0U6IEZyb20gd2hlbmNlIGRvZXMgYW4gdW5rbm93biB0eXBlIG9yaWdpbmF0ZT9cbiAgICAgSXMgaXQgZ2VuZXJhdGVkIGZyb20gYW4gdW5hbm5vdGF0ZWQgcGF0dGVybiB2YXJpYWJsZSAoU3luU3dpdGNoKSxcbiAgICAgYSBwYXR0ZXJuIHZhcmlhYmxlIGFubm90YXRlZCB3aXRoIGEgdHlwZSBob2xlIChUeXBlSG9sZSksIG9yXG4gICAgIGdlbmVyYXRlZCBieSBhbiBpbnRlcm5hbCBqdWRnZW1lbnQgKEludGVybmFsKT8gKi9cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHR5cGVfcHJvdmVuYW5jZSA9XG4gICAgfCBTeW5Td2l0Y2hcbiAgICB8IFR5cGVIb2xlXG4gICAgfCBGcmVlKFR5cFZhci50KVxuICAgIHwgSW50ZXJuYWw7XG5cbiAgLyogVFlQLlQ6IEhhemVsIHR5cGVzICovXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IFVua25vd24odHlwZV9wcm92ZW5hbmNlKVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBWYXIoVHlwVmFyLnQpXG4gICAgfCBMaXN0KHQpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgU3VtKHN1bV9tYXApXG4gICAgfCBQcm9kKGxpc3QodCkpXG4gICAgfCBSZWMoVHlwVmFyLnQsIHQpXG4gIGFuZCBzdW1fbWFwID0gQ29uc3RydWN0b3JNYXAudChvcHRpb24odCkpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzdW1fZW50cnkgPSBDb25zdHJ1Y3Rvck1hcC5iaW5kaW5nKG9wdGlvbih0KSk7XG5cbiAgLyogSGF6ZWwgdHlwZSBhbm5vdGF0ZWQgd2l0aCBhIHJlbGV2YW50IHNvdXJjZSBsb2NhdGlvbi5cbiAgICAgQ3VycmVudGx5IHVzZWQgdG8gdHJhY2sgbWF0Y2ggYnJhbmNoZXMgZm9yIGluY29uc2lzdGVudFxuICAgICBicmFuY2hlcyBlcnJvcnMsIGJ1dCBjb3VsZCBwZXJoYXBzIGJlIHVzZWQgbW9yZSBicm9hZGx5XG4gICAgIGZvciB0eXBlIGRlYnVnZ2luZyBVSS4gKi9cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNvdXJjZSA9IHtcbiAgICBpZDogSWQudCxcbiAgICB0eTogdCxcbiAgfTtcblxuICBsZXQgb2Zfc291cmNlOiBsaXN0KHNvdXJjZSkgPT4gbGlzdCh0KTtcbiAgbGV0IGpvaW5fdHlwZV9wcm92ZW5hbmNlOlxuICAgICh0eXBlX3Byb3ZlbmFuY2UsIHR5cGVfcHJvdmVuYW5jZSkgPT4gdHlwZV9wcm92ZW5hbmNlO1xuICBsZXQgbWF0Y2hlZF9hcnJvdzogKEN0eC50LCB0KSA9PiAodCwgdCk7XG4gIGxldCBtYXRjaGVkX3Byb2Q6IChDdHgudCwgaW50LCB0KSA9PiBsaXN0KHQpO1xuICBsZXQgbWF0Y2hlZF9saXN0OiAoQ3R4LnQsIHQpID0+IHQ7XG4gIGxldCBwcmVjZWRlbmNlOiB0ID0+IGludDtcbiAgbGV0IHN1YnN0OiAodCwgVHlwVmFyLnQsIHQpID0+IHQ7XG4gIGxldCB1bnJvbGw6IHQgPT4gdDtcbiAgbGV0IGVxOiAodCwgdCkgPT4gYm9vbDtcbiAgbGV0IGZyZWVfdmFyczogKH5ib3VuZDogbGlzdChWYXIudCk9PywgdCkgPT4gbGlzdChWYXIudCk7XG4gIGxldCBqb2luOiAofnJlc29sdmU6IGJvb2w9PywgfmZpeDogYm9vbCwgQ3R4LnQsIHQsIHQpID0+IG9wdGlvbih0KTtcbiAgbGV0IGpvaW5fZml4OiAofnJlc29sdmU6IGJvb2w9PywgQ3R4LnQsIHQsIHQpID0+IG9wdGlvbih0KTtcbiAgbGV0IGpvaW5fYWxsOiAofmVtcHR5OiB0LCBDdHgudCwgbGlzdCh0KSkgPT4gb3B0aW9uKHQpO1xuICBsZXQgaXNfY29uc2lzdGVudDogKEN0eC50LCB0LCB0KSA9PiBib29sO1xuICBsZXQgd2Vha19oZWFkX25vcm1hbGl6ZTogKEN0eC50LCB0KSA9PiB0O1xuICBsZXQgbm9ybWFsaXplOiAoQ3R4LnQsIHQpID0+IHQ7XG4gIGxldCBzdW1fZW50cnk6IChDb25zdHJ1Y3Rvci50LCBzdW1fbWFwKSA9PiBvcHRpb24oc3VtX2VudHJ5KTtcbiAgbGV0IGdldF9zdW1fY29uc3RydWN0b3JzOiAoQ3R4LnQsIHQpID0+IG9wdGlvbihzdW1fbWFwKTtcbiAgbGV0IGlzX3Vua25vd246IHQgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0eXBlX3Byb3ZlbmFuY2UgPVxuICAgIHwgU3luU3dpdGNoXG4gICAgfCBUeXBlSG9sZVxuICAgIHwgRnJlZShUeXBWYXIudClcbiAgICB8IEludGVybmFsO1xuXG4gIC8qIFRZUC5UOiBIYXplbCB0eXBlcyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBVbmtub3duKHR5cGVfcHJvdmVuYW5jZSlcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IEJvb2xcbiAgICB8IFN0cmluZ1xuICAgIHwgVmFyKFR5cFZhci50KVxuICAgIHwgTGlzdCh0KVxuICAgIHwgQXJyb3codCwgdClcbiAgICB8IFN1bShzdW1fbWFwKVxuICAgIHwgUHJvZChsaXN0KHQpKVxuICAgIHwgUmVjKFR5cFZhci50LCB0KVxuICBhbmQgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQob3B0aW9uKHQpKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3VtX2VudHJ5ID0gQ29uc3RydWN0b3JNYXAuYmluZGluZyhvcHRpb24odCkpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzb3VyY2UgPSB7XG4gICAgaWQ6IElkLnQsXG4gICAgdHk6IHQsXG4gIH07XG5cbiAgLyogU3RyaXAgbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSBhIGxpc3Qgb2Ygc291cmNlcyAqL1xuICBsZXQgb2Zfc291cmNlID0gTGlzdC5tYXAoKHNvdXJjZTogc291cmNlKSA9PiBzb3VyY2UudHkpO1xuXG4gIC8qIEhvdyB0eXBlIHByb3ZlbmFuY2UgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGNvbGxhdGVkIHdoZW5cbiAgICAgam9pbmluZyB1bmtub3duIHR5cGVzLiBUaGlzIHByb2JhYmx5IHJlcXVpcmVzIG1vcmUgdGhvdWdodCxcbiAgICAgYnV0IHJpZ2h0IG5vdyBUeXBlSG9sZSBzdHJpY3RseSBwcmVkb21pbmF0ZXMgb3ZlciBJbnRlcm5hbFxuICAgICB3aGljaCBzdHJpY3RseSBwcmVkb21pbmF0ZXMgb3ZlciBTeW5Td2l0Y2guICovXG4gIGxldCBqb2luX3R5cGVfcHJvdmVuYW5jZSA9XG4gICAgICAocDE6IHR5cGVfcHJvdmVuYW5jZSwgcDI6IHR5cGVfcHJvdmVuYW5jZSk6IHR5cGVfcHJvdmVuYW5jZSA9PlxuICAgIHN3aXRjaCAocDEsIHAyKSB7XG4gICAgfCAoRnJlZSh0djEpLCBGcmVlKHR2MikpIHdoZW4gVHlwVmFyLmVxKHR2MSwgdHYyKSA9PiBGcmVlKHR2MSlcbiAgICB8IChUeXBlSG9sZSwgVHlwZUhvbGUgfCBTeW5Td2l0Y2gpXG4gICAgfCAoU3luU3dpdGNoLCBUeXBlSG9sZSkgPT4gVHlwZUhvbGVcbiAgICB8IChTeW5Td2l0Y2gsIEludGVybmFsKVxuICAgIHwgKEludGVybmFsLCBTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICAgIHwgKEludGVybmFsIHwgRnJlZShfKSwgXylcbiAgICB8IChfLCBJbnRlcm5hbCB8IEZyZWUoXykpID0+IEludGVybmFsXG4gICAgfCAoU3luU3dpdGNoLCBTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICAgIH07XG5cbiAgbGV0IHByZWNlZGVuY2UgPSAodHk6IHQpOiBpbnQgPT5cbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFVua25vd24oXylcbiAgICB8IFZhcihfKVxuICAgIHwgUmVjKF8pXG4gICAgfCBTdW0oXykgPT4gcHJlY2VkZW5jZV9TdW1cbiAgICB8IExpc3QoXykgPT4gcHJlY2VkZW5jZV9Db25zdFxuICAgIHwgUHJvZChfKSA9PiBwcmVjZWRlbmNlX1Byb2RcbiAgICB8IEFycm93KF8sIF8pID0+IHByZWNlZGVuY2VfQXJyb3dcbiAgICB9O1xuXG4gIGxldCByZWMgc3Vic3QgPSAoczogdCwgeDogVHlwVmFyLnQsIHR5OiB0KSA9PiB7XG4gICAgc3dpdGNoICh0eSkge1xuICAgIHwgSW50ID0+IEludFxuICAgIHwgRmxvYXQgPT4gRmxvYXRcbiAgICB8IEJvb2wgPT4gQm9vbFxuICAgIHwgU3RyaW5nID0+IFN0cmluZ1xuICAgIHwgVW5rbm93bihwcm92KSA9PiBVbmtub3duKHByb3YpXG4gICAgfCBBcnJvdyh0eTEsIHR5MikgPT4gQXJyb3coc3Vic3QocywgeCwgdHkxKSwgc3Vic3QocywgeCwgdHkyKSlcbiAgICB8IFByb2QodHlzKSA9PiBQcm9kKExpc3QubWFwKHN1YnN0KHMsIHgpLCB0eXMpKVxuICAgIHwgU3VtKHNtKSA9PiBTdW0oQ29uc3RydWN0b3JNYXAubWFwKE9wdGlvbi5tYXAoc3Vic3QocywgeCkpLCBzbSkpXG4gICAgfCBSZWMoeSwgdHkpIHdoZW4gVHlwVmFyLmVxKHgsIHkpID0+IFJlYyh5LCB0eSlcbiAgICB8IFJlYyh5LCB0eSkgPT4gUmVjKHksIHN1YnN0KHMsIHgsIHR5KSlcbiAgICB8IExpc3QodHkpID0+IExpc3Qoc3Vic3QocywgeCwgdHkpKVxuICAgIHwgVmFyKHkpID0+IFR5cFZhci5lcSh4LCB5KSA/IHMgOiBWYXIoeSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCB1bnJvbGwgPSAodHk6IHQpOiB0ID0+XG4gICAgc3dpdGNoICh0eSkge1xuICAgIHwgUmVjKHgsIHR5X2JvZHkpID0+IHN1YnN0KHR5LCB4LCB0eV9ib2R5KVxuICAgIHwgXyA9PiB0eVxuICAgIH07XG5cbiAgLyogVHlwZSBFcXVhbGl0eTogQXQgdGhlIG1vbWVudCwgdGhpcyBjb2luY2lkZXMgd2l0aCBhbHBoYSBlcXVpdmFsZW5jZSxcbiAgICAgYnV0IHRoaXMgd2lsbCBjaGFuZ2Ugd2hlbiBwb2x5bW9ycGhpYyB0eXBlcyBhcmUgaW1wbGVtZW50ZWQgKi9cbiAgbGV0IHJlYyBlcSA9ICh0MTogdCwgdDI6IHQpOiBib29sID0+IHtcbiAgICBzd2l0Y2ggKHQxLCB0Mikge1xuICAgIHwgKFJlYyh4MSwgdDEpLCBSZWMoeDIsIHQyKSkgPT4gZXEodDEsIHN1YnN0KFZhcih4MSksIHgyLCB0MikpXG4gICAgfCAoUmVjKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKEludCwgSW50KSA9PiB0cnVlXG4gICAgfCAoSW50LCBfKSA9PiBmYWxzZVxuICAgIHwgKEZsb2F0LCBGbG9hdCkgPT4gdHJ1ZVxuICAgIHwgKEZsb2F0LCBfKSA9PiBmYWxzZVxuICAgIHwgKEJvb2wsIEJvb2wpID0+IHRydWVcbiAgICB8IChCb29sLCBfKSA9PiBmYWxzZVxuICAgIHwgKFN0cmluZywgU3RyaW5nKSA9PiB0cnVlXG4gICAgfCAoU3RyaW5nLCBfKSA9PiBmYWxzZVxuICAgIHwgKFVua25vd24oXyksIFVua25vd24oXykpID0+IHRydWVcbiAgICB8IChVbmtub3duKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKEFycm93KHQxLCB0MiksIEFycm93KHQxJywgdDInKSkgPT4gZXEodDEsIHQxJykgJiYgZXEodDIsIHQyJylcbiAgICB8IChBcnJvdyhfKSwgXykgPT4gZmFsc2VcbiAgICB8IChQcm9kKHR5czEpLCBQcm9kKHR5czIpKSA9PiBMaXN0LmVxdWFsKGVxLCB0eXMxLCB0eXMyKVxuICAgIHwgKFByb2QoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoTGlzdCh0MSksIExpc3QodDIpKSA9PiBlcSh0MSwgdDIpXG4gICAgfCAoTGlzdChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChTdW0oc20xKSwgU3VtKHNtMikpID0+XG4gICAgICBDb25zdHJ1Y3Rvck1hcC5lcXVhbChPcHRpb24uZXF1YWwoZXEpLCBzbTEsIHNtMilcbiAgICB8IChTdW0oXyksIF8pID0+IGZhbHNlXG4gICAgfCAoVmFyKG4xKSwgVmFyKG4yKSkgPT4gbjEgPT0gbjJcbiAgICB8IChWYXIoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGZyZWVfdmFycyA9ICh+Ym91bmQ9W10sIHR5OiB0KTogbGlzdChWYXIudCkgPT5cbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBVbmtub3duKF8pXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmcgPT4gW11cbiAgICB8IFZhcih2KSA9PiBMaXN0Lm1lbSh2LCBib3VuZCkgPyBbXSA6IFt2XVxuICAgIHwgTGlzdCh0eSkgPT4gZnJlZV92YXJzKH5ib3VuZCwgdHkpXG4gICAgfCBBcnJvdyh0MSwgdDIpID0+IGZyZWVfdmFycyh+Ym91bmQsIHQxKSBAIGZyZWVfdmFycyh+Ym91bmQsIHQyKVxuICAgIHwgU3VtKHNtKSA9PlxuICAgICAgTGlzdFV0aWwuZmxhdF9tYXAoXG4gICAgICAgIGZ1blxuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgfCBTb21lKHR5cCkgPT4gZnJlZV92YXJzKH5ib3VuZCwgdHlwKSxcbiAgICAgICAgTGlzdC5tYXAoc25kLCBzbSksXG4gICAgICApXG4gICAgfCBQcm9kKHR5cykgPT4gTGlzdFV0aWwuZmxhdF9tYXAoZnJlZV92YXJzKH5ib3VuZCksIHR5cylcbiAgICB8IFJlYyh4LCB0eSkgPT4gZnJlZV92YXJzKH5ib3VuZD1beCwgLi4uYm91bmRdLCB0eSlcbiAgICB9O1xuXG4gIC8qIExhdHRpY2Ugam9pbiBvbiB0eXBlcy4gVGhpcyBpcyBhIExVQiBqb2luIGluIHRoZSBoYXplbDJcbiAgICAgc2Vuc2UgaW4gdGhhdCBhbnkgdHlwZSBkb21pbmF0ZXMgVW5rbm93bi4gVGhlIG9wdGlvbmFsXG4gICAgIHJlc29sdmUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyLCBpbiB0aGUgY2FzZSBvZiBhIHR5cGVcbiAgICAgdmFyaWFibGUgYW5kIGEgc3VjY2VzZnVsIGpvaW4sIHRvIHJldHVybiB0aGUgcmVzb2x2ZWQgam9pbiB0eXBlLFxuICAgICBvciB0byByZXR1cm4gdGhlIChmaXJzdCkgdHlwZSB2YXJpYWJsZSBmb3IgcmVhZGFiaWxpdHkgKi9cbiAgbGV0IHJlYyBqb2luID1cbiAgICAgICAgICAofnJlc29sdmU9ZmFsc2UsIH5maXgsIGN0eDogQ3R4LnQsIHR5MTogdCwgdHkyOiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgam9pbicgPSBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgpO1xuICAgIHN3aXRjaCAodHkxLCB0eTIpIHtcbiAgICB8IChfLCBVbmtub3duKFR5cGVIb2xlIHwgRnJlZShfKSkgYXMgdHkpIHdoZW4gZml4ID0+XG4gICAgICAvKiBOT1RFKGFuZHJldyk6IFRoaXMgaXMgbG9hZCBiZWFyaW5nXG4gICAgICAgICBmb3IgZW5zdXJpbmcgdGhhdCBmdW5jdGlvbiBsaXRlcmFscyBnZXQgYXBwcm9wcmlhdGVcbiAgICAgICAgIGNhc3RzLiBEb2N1bWVudGF0aW9uL0R5bmFtaWNzIGhhcyByZWdyZXNzaW9uIHRlc3RzICovXG4gICAgICBTb21lKHR5KVxuICAgIHwgKFVua25vd24ocDEpLCBVbmtub3duKHAyKSkgPT5cbiAgICAgIFNvbWUoVW5rbm93bihqb2luX3R5cGVfcHJvdmVuYW5jZShwMSwgcDIpKSlcbiAgICB8IChVbmtub3duKF8pLCB0eSlcbiAgICB8ICh0eSwgVW5rbm93bihJbnRlcm5hbCB8IFN5blN3aXRjaCkpID0+IFNvbWUodHkpXG4gICAgfCAoVmFyKG4xKSwgVmFyKG4yKSkgPT5cbiAgICAgIGlmIChuMSA9PSBuMikge1xuICAgICAgICBTb21lKFZhcihuMSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0KiB0eTEgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjEpO1xuICAgICAgICBsZXQqIHR5MiA9IEN0eC5sb29rdXBfYWxpYXMoY3R4LCBuMik7XG4gICAgICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5MSwgdHkyKTtcbiAgICAgICAgIXJlc29sdmUgJiYgZXEodHkxLCB0eV9qb2luKSA/IFZhcihuMSkgOiB0eV9qb2luO1xuICAgICAgfVxuICAgIHwgKFZhcihuYW1lKSwgdHkpXG4gICAgfCAodHksIFZhcihuYW1lKSkgPT5cbiAgICAgIGxldCogdHlfbmFtZSA9IEN0eC5sb29rdXBfYWxpYXMoY3R4LCBuYW1lKTtcbiAgICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5X25hbWUsIHR5KTtcbiAgICAgICFyZXNvbHZlICYmIGVxKHR5X25hbWUsIHR5X2pvaW4pID8gVmFyKG5hbWUpIDogdHlfam9pbjtcbiAgICAvKiBOb3RlOiBPcmRlcmluZyBvZiBVbmtub3duLCBWYXIsIGFuZCBSZWMgYWJvdmUgaXMgbG9hZC1iZWFyaW5nISAqL1xuICAgIHwgKFJlYyh4MSwgdHkxKSwgUmVjKHgyLCB0eTIpKSA9PlxuICAgICAgLyogVE9ETzpcbiAgICAgICAgICAgVGhpcyBjb2RlIGlzbid0IGZ1bGx5IGNvcnJlY3QsIGFzIHdlIG1heSBiZSBkb2luZ1xuICAgICAgICAgICBzdWJzdGl0dXRpb24gb24gb3BlbiB0ZXJtczsgaWYgeDEgb2NjdXJzIGluIHR5MixcbiAgICAgICAgICAgd2Ugc2hvdWxkIGJlIHN1YnN0aXR1dGluZyB4MSBmb3IgYSBmcmVzaCB2YXJpYWJsZVxuICAgICAgICAgICBpbiB0eTIuIFRoaXMgaXMgYW5ub3lpbmcsIGFuZCBzaG91bGQgYmUgb2J2aWF0ZWRcbiAgICAgICAgICAgYnkgdGhlIGZvcnRoY29taW5nIGRlYnJ1aWpuIGluZGV4IGltcGxlbWVudGF0aW9uXG4gICAgICAgICAqL1xuICAgICAgbGV0IGN0eCA9IEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHgxKTtcbiAgICAgIGxldCsgdHlfYm9keSA9XG4gICAgICAgIGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCwgdHkxLCBzdWJzdChWYXIoeDEpLCB4MiwgdHkyKSk7XG4gICAgICBSZWMoeDEsIHR5X2JvZHkpO1xuICAgIHwgKFJlYyhfKSwgXykgPT4gTm9uZVxuICAgIHwgKEludCwgSW50KSA9PiBTb21lKEludClcbiAgICB8IChJbnQsIF8pID0+IE5vbmVcbiAgICB8IChGbG9hdCwgRmxvYXQpID0+IFNvbWUoRmxvYXQpXG4gICAgfCAoRmxvYXQsIF8pID0+IE5vbmVcbiAgICB8IChCb29sLCBCb29sKSA9PiBTb21lKEJvb2wpXG4gICAgfCAoQm9vbCwgXykgPT4gTm9uZVxuICAgIHwgKFN0cmluZywgU3RyaW5nKSA9PiBTb21lKFN0cmluZylcbiAgICB8IChTdHJpbmcsIF8pID0+IE5vbmVcbiAgICB8IChBcnJvdyh0eTEsIHR5MiksIEFycm93KHR5MScsIHR5MicpKSA9PlxuICAgICAgbGV0KiB0eTEgPSBqb2luJyh0eTEsIHR5MScpO1xuICAgICAgbGV0KyB0eTIgPSBqb2luJyh0eTIsIHR5MicpO1xuICAgICAgQXJyb3codHkxLCB0eTIpO1xuICAgIHwgKEFycm93KF8pLCBfKSA9PiBOb25lXG4gICAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgPT5cbiAgICAgIGxldCogdHlzID0gTGlzdFV0aWwubWFwMl9vcHQoam9pbicsIHR5czEsIHR5czIpO1xuICAgICAgbGV0KyB0eXMgPSBPcHRVdGlsLnNlcXVlbmNlKHR5cyk7XG4gICAgICBQcm9kKHR5cyk7XG4gICAgfCAoUHJvZChfKSwgXykgPT4gTm9uZVxuICAgIHwgKFN1bShzbTEpLCBTdW0oc20yKSkgPT5cbiAgICAgIGxldCAoc29ydGVkMSwgc29ydGVkMikgPVxuICAgICAgICAvKiBJZiBzYW1lIG9yZGVyLCByZXRhaW4gb3JkZXIgZm9yIFVJICovXG4gICAgICAgIENvbnN0cnVjdG9yTWFwLnNhbWVfY29uc3RydWN0b3JzX3NhbWVfb3JkZXIoc20xLCBzbTIpXG4gICAgICAgICAgPyAoc20xLCBzbTIpXG4gICAgICAgICAgOiAoQ29uc3RydWN0b3JNYXAuc29ydChzbTEpLCBDb25zdHJ1Y3Rvck1hcC5zb3J0KHNtMikpO1xuICAgICAgbGV0KiB0eSA9XG4gICAgICAgIExpc3RVdGlsLm1hcDJfb3B0KFxuICAgICAgICAgIGpvaW5fc3VtX2VudHJpZXMofnJlc29sdmUsIH5maXgsIGN0eCksXG4gICAgICAgICAgc29ydGVkMSxcbiAgICAgICAgICBzb3J0ZWQyLFxuICAgICAgICApO1xuICAgICAgbGV0KyB0eSA9IE9wdFV0aWwuc2VxdWVuY2UodHkpO1xuICAgICAgU3VtKHR5KTtcbiAgICB8IChTdW0oXyksIF8pID0+IE5vbmVcbiAgICB8IChMaXN0KHR5MSksIExpc3QodHkyKSkgPT5cbiAgICAgIGxldCsgdHkgPSBqb2luJyh0eTEsIHR5Mik7XG4gICAgICBMaXN0KHR5KTtcbiAgICB8IChMaXN0KF8pLCBfKSA9PiBOb25lXG4gICAgfTtcbiAgfVxuICBhbmQgam9pbl9zdW1fZW50cmllcyA9XG4gICAgICAoXG4gICAgICAgIH5yZXNvbHZlLFxuICAgICAgICB+Zml4LFxuICAgICAgICBjdHg6IEN0eC50LFxuICAgICAgICAoY3RyMSwgdHkxKTogc3VtX2VudHJ5LFxuICAgICAgICAoY3RyMiwgdHkyKTogc3VtX2VudHJ5LFxuICAgICAgKVxuICAgICAgOiBvcHRpb24oc3VtX2VudHJ5KSA9PlxuICAgIHN3aXRjaCAodHkxLCB0eTIpIHtcbiAgICB8IChOb25lLCBOb25lKSB3aGVuIGN0cjEgPT0gY3RyMiA9PiBTb21lKChjdHIxLCBOb25lKSlcbiAgICB8IChTb21lKHR5MSksIFNvbWUodHkyKSkgd2hlbiBjdHIxID09IGN0cjIgPT5cbiAgICAgIGxldCsgdHlfam9pbiA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCwgdHkxLCB0eTIpO1xuICAgICAgKGN0cjEsIFNvbWUodHlfam9pbikpO1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgam9pbl9maXggPSBqb2luKH5maXg9dHJ1ZSk7XG5cbiAgbGV0IGpvaW5fYWxsID0gKH5lbXB0eTogdCwgY3R4OiBDdHgudCwgdHM6IGxpc3QodCkpOiBvcHRpb24odCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHR5KSA9PiBPcHRVdGlsLmFuZF90aGVuKGpvaW4ofmZpeD1mYWxzZSwgY3R4LCB0eSksIGFjYyksXG4gICAgICBTb21lKGVtcHR5KSxcbiAgICAgIHRzLFxuICAgICk7XG5cbiAgbGV0IGlzX2NvbnNpc3RlbnQgPSAoY3R4OiBDdHgudCwgdHkxOiB0LCB0eTI6IHQpOiBib29sID0+XG4gICAgam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyKSAhPSBOb25lO1xuXG4gIGxldCByZWMgd2Vha19oZWFkX25vcm1hbGl6ZSA9IChjdHg6IEN0eC50LCB0eTogdCk6IHQgPT5cbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBWYXIoeCkgPT5cbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgICB8IFNvbWUodHkpID0+IHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSlcbiAgICAgIHwgTm9uZSA9PiB0eVxuICAgICAgfVxuICAgIHwgXyA9PiB0eVxuICAgIH07XG5cbiAgbGV0IHJlYyBub3JtYWxpemUgPSAoY3R4OiBDdHgudCwgdHk6IHQpOiB0ID0+IHtcbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBWYXIoeCkgPT5cbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgICB8IFNvbWUodHkpID0+IG5vcm1hbGl6ZShjdHgsIHR5KVxuICAgICAgfCBOb25lID0+IHR5XG4gICAgICB9XG4gICAgfCBVbmtub3duKF8pXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmcgPT4gdHlcbiAgICB8IExpc3QodCkgPT4gTGlzdChub3JtYWxpemUoY3R4LCB0KSlcbiAgICB8IEFycm93KHQxLCB0MikgPT4gQXJyb3cobm9ybWFsaXplKGN0eCwgdDEpLCBub3JtYWxpemUoY3R4LCB0MikpXG4gICAgfCBQcm9kKHRzKSA9PiBQcm9kKExpc3QubWFwKG5vcm1hbGl6ZShjdHgpLCB0cykpXG4gICAgfCBTdW0odHMpID0+IFN1bShDb25zdHJ1Y3Rvck1hcC5tYXAoT3B0aW9uLm1hcChub3JtYWxpemUoY3R4KSksIHRzKSlcbiAgICB8IFJlYyhuYW1lLCB0eSkgPT5cbiAgICAgIC8qIE5PVEU6IER1bW15IHR2YXIgYWRkZWQgaGFzIGZha2UgaWQgYnV0IHNob3VsZG4ndCBtYXR0ZXJcbiAgICAgICAgIGFzIGluIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gUmVjcyBkbyBub3Qgb2NjdXIgaW4gdGhlXG4gICAgICAgICBzdXJmYWNlIHN5bnRheCwgc28gd2Ugd29uJ3QgdHJ5IHRvIGp1bXAgdG8gdGhlbS4gKi9cbiAgICAgIFJlYyhuYW1lLCBub3JtYWxpemUoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgbmFtZSksIHR5KSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtYXRjaGVkX2Fycm93ID0gKGN0eCwgdHkpID0+XG4gICAgc3dpdGNoICh3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSB7XG4gICAgfCBBcnJvdyh0eV9pbiwgdHlfb3V0KSA9PiAodHlfaW4sIHR5X291dClcbiAgICB8IFVua25vd24oU3luU3dpdGNoKSA9PiAoVW5rbm93bihTeW5Td2l0Y2gpLCBVbmtub3duKFN5blN3aXRjaCkpXG4gICAgfCBfID0+IChVbmtub3duKEludGVybmFsKSwgVW5rbm93bihJbnRlcm5hbCkpXG4gICAgfTtcblxuICBsZXQgbWF0Y2hlZF9wcm9kID0gKGN0eCwgbGVuZ3RoLCB0eSkgPT5cbiAgICBzd2l0Y2ggKHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSkpIHtcbiAgICB8IFByb2QodHlzKSB3aGVuIExpc3QubGVuZ3RoKHR5cykgPT0gbGVuZ3RoID0+IHR5c1xuICAgIHwgVW5rbm93bihTeW5Td2l0Y2gpID0+IExpc3QuaW5pdChsZW5ndGgsIF8gPT4gVW5rbm93bihTeW5Td2l0Y2gpKVxuICAgIHwgXyA9PiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFVua25vd24oSW50ZXJuYWwpKVxuICAgIH07XG5cbiAgbGV0IG1hdGNoZWRfbGlzdCA9IChjdHgsIHR5KSA9PlxuICAgIHN3aXRjaCAod2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkge1xuICAgIHwgTGlzdCh0eSkgPT4gdHlcbiAgICB8IFVua25vd24oU3luU3dpdGNoKSA9PiBVbmtub3duKFN5blN3aXRjaClcbiAgICB8IF8gPT4gVW5rbm93bihJbnRlcm5hbClcbiAgICB9O1xuXG4gIGxldCBzdW1fZW50cnkgPSAoY3RyOiBDb25zdHJ1Y3Rvci50LCBjdHJzOiBzdW1fbWFwKTogb3B0aW9uKHN1bV9lbnRyeSkgPT5cbiAgICBMaXN0LmZpbmRfbWFwKFxuICAgICAgZnVuXG4gICAgICB8ICh0LCB0eXApIHdoZW4gQ29uc3RydWN0b3IuZXF1YWwodCwgY3RyKSA9PiBTb21lKCh0LCB0eXApKVxuICAgICAgfCBfID0+IE5vbmUsXG4gICAgICBjdHJzLFxuICAgICk7XG5cbiAgbGV0IGdldF9zdW1fY29uc3RydWN0b3JzID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogb3B0aW9uKHN1bV9tYXApID0+IHtcbiAgICBsZXQgdHkgPSB3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpO1xuICAgIHN3aXRjaCAodHkpIHtcbiAgICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgICB8IFJlYyhfKSA9PlxuICAgICAgLyogTm90ZTogV2UgbXVzdCB1bnJvbGwgaGVyZSB0byBnZXQgcmlnaHQgY3RyIHR5cGVzO1xuICAgICAgICAgb3RoZXJ3aXNlIHRoZSByZWMgcGFyYW1ldGVyIHdpbGwgbGVhay4gSG93ZXZlciwgc2VlaW5nXG4gICAgICAgICBhcyBzdWJzdGl0dXRpb24gaXMgdG9vIGV4cGVuc2l2ZSB0byBiZSB1c2VkIGhlcmUsIHdlXG4gICAgICAgICBjdXJyZW50bHkgbWFraW5nIHRoZSBvcHRpbWl6YXRpb24gdGhhdCwgc2luY2UgYWxsXG4gICAgICAgICByZWN1cnNpdmUgdHlwZXMgYXJlIHR5cGUgYWxpc2VzIHdoaWNoIHVzZSB0aGUgYWxpYXMgbmFtZVxuICAgICAgICAgYXMgdGhlIHJlY3Vyc2l2ZSBwYXJhbWV0ZXIsIGFuZCB0eXBlIGFsaWFzZXMgY2Fubm90IGJlXG4gICAgICAgICBzaGFkb3dlZCwgaXQgaXMgc2FmZSB0byBzaW1wbHkgcmVtb3ZlIHRoZSBSZWMgY29uc3RydWN0b3IsXG4gICAgICAgICBwcm92aWRlZCB3ZSBoYXZlbid0IGVzY2FwZWQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIGFsaWFzXG4gICAgICAgICBpcyBib3VuZC4gSWYgZWl0aGVyIG9mIHRoZSBhYm92ZSBhc3N1bXB0aW9ucyBiZWNvbWUgaW52YWxpZCxcbiAgICAgICAgIHRoZSBiZWxvdyBjb2RlIHdpbGwgYmUgaW5jb3JyZWN0ISAqL1xuICAgICAgbGV0IHR5ID1cbiAgICAgICAgc3dpdGNoICh0eSkge1xuICAgICAgICB8IFJlYyh4LCB0eV9ib2R5KSA9PlxuICAgICAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgICAgICAgfCBOb25lID0+IHVucm9sbCh0eSlcbiAgICAgICAgICB8IFNvbWUoXykgPT4gdHlfYm9keVxuICAgICAgICAgIH1cbiAgICAgICAgfCBfID0+IHR5XG4gICAgICAgIH07XG4gICAgICBzd2l0Y2ggKHR5KSB7XG4gICAgICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9O1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgfTtcblxuICBsZXQgaXNfdW5rbm93biA9ICh0eTogdCk6IGJvb2wgPT5cbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBVbmtub3duKF8pID0+IHRydWVcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xufVxuYW5kIEN0eDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdmFyX2VudHJ5ID0ge1xuICAgIG5hbWU6IFZhci50LFxuICAgIGlkOiBJZC50LFxuICAgIHR5cDogVHlwLnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHR2YXJfZW50cnkgPSB7XG4gICAgbmFtZTogVHlwVmFyLnQsXG4gICAgaWQ6IElkLnQsXG4gICAga2luZDogS2luZC50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlbnRyeSA9XG4gICAgfCBWYXJFbnRyeSh2YXJfZW50cnkpXG4gICAgfCBDb25zdHJ1Y3RvckVudHJ5KHZhcl9lbnRyeSlcbiAgICB8IFRWYXJFbnRyeSh0dmFyX2VudHJ5KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IGxpc3QoZW50cnkpO1xuXG4gIGxldCBleHRlbmQ6ICh0LCBlbnRyeSkgPT4gdDtcbiAgbGV0IGV4dGVuZF90dmFyOiAodCwgdHZhcl9lbnRyeSkgPT4gdDtcbiAgbGV0IGV4dGVuZF9hbGlhczogKHQsIFR5cFZhci50LCBJZC50LCBUeXAudCkgPT4gdDtcbiAgbGV0IGV4dGVuZF9kdW1teV90dmFyOiAodCwgVHlwVmFyLnQpID0+IHQ7XG4gIGxldCBsb29rdXBfdHZhcjogKHQsIFR5cFZhci50KSA9PiBvcHRpb24odHZhcl9lbnRyeSk7XG4gIGxldCBsb29rdXBfYWxpYXM6ICh0LCBUeXBWYXIudCkgPT4gb3B0aW9uKFR5cC50KTtcbiAgbGV0IGdldF9pZDogZW50cnkgPT4gSWQudDtcbiAgbGV0IGxvb2t1cF92YXI6ICh0LCBzdHJpbmcpID0+IG9wdGlvbih2YXJfZW50cnkpO1xuICBsZXQgbG9va3VwX2N0cjogKHQsIHN0cmluZykgPT4gb3B0aW9uKHZhcl9lbnRyeSk7XG4gIGxldCBpc19hbGlhczogKHQsIFR5cFZhci50KSA9PiBib29sO1xuICBsZXQgYWRkX2N0cnM6ICh0LCBUeXBWYXIudCwgSWQudCwgVHlwLnN1bV9tYXApID0+IHQ7XG4gIGxldCBzdWJ0cmFjdF9wcmVmaXg6ICh0LCB0KSA9PiBvcHRpb24odCk7XG4gIGxldCBhZGRlZF9iaW5kaW5nczogKHQsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXJfZHVwbGljYXRlczogdCA9PiB0O1xuICBsZXQgc2hhZG93c190eXA6ICh0LCBUeXBWYXIudCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB2YXJfZW50cnkgPSB7XG4gICAgbmFtZTogVmFyLnQsXG4gICAgaWQ6IElkLnQsXG4gICAgdHlwOiBUeXAudCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHZhcl9lbnRyeSA9IHtcbiAgICBuYW1lOiBUeXBWYXIudCxcbiAgICBpZDogSWQudCxcbiAgICBraW5kOiBLaW5kLnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGVudHJ5ID1cbiAgICB8IFZhckVudHJ5KHZhcl9lbnRyeSlcbiAgICB8IENvbnN0cnVjdG9yRW50cnkodmFyX2VudHJ5KVxuICAgIHwgVFZhckVudHJ5KHR2YXJfZW50cnkpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdChlbnRyeSk7XG5cbiAgbGV0IGV4dGVuZCA9IChjdHgsIGVudHJ5KSA9PiBMaXN0LmNvbnMoZW50cnksIGN0eCk7XG5cbiAgbGV0IGV4dGVuZF90dmFyID0gKGN0eDogdCwgdHZhcl9lbnRyeTogdHZhcl9lbnRyeSk6IHQgPT5cbiAgICBleHRlbmQoY3R4LCBUVmFyRW50cnkodHZhcl9lbnRyeSkpO1xuXG4gIGxldCBleHRlbmRfYWxpYXMgPSAoY3R4OiB0LCBuYW1lOiBUeXBWYXIudCwgaWQ6IElkLnQsIHR5OiBUeXAudCk6IHQgPT5cbiAgICBleHRlbmRfdHZhcihjdHgsIHtuYW1lLCBpZCwga2luZDogU2luZ2xldG9uKHR5KX0pO1xuXG4gIGxldCBleHRlbmRfZHVtbXlfdHZhciA9IChjdHg6IHQsIG5hbWU6IFR5cFZhci50KSA9PlxuICAgIGV4dGVuZF90dmFyKGN0eCwge2tpbmQ6IEFic3RyYWN0LCBuYW1lLCBpZDogSWQuaW52YWxpZH0pO1xuXG4gIGxldCBsb29rdXBfdHZhciA9IChjdHg6IHQsIG5hbWU6IFR5cFZhci50KTogb3B0aW9uKHR2YXJfZW50cnkpID0+XG4gICAgTGlzdC5maW5kX21hcChcbiAgICAgIGZ1blxuICAgICAgfCBUVmFyRW50cnkodikgd2hlbiB2Lm5hbWUgPT0gbmFtZSA9PiBTb21lKHYpXG4gICAgICB8IF8gPT4gTm9uZSxcbiAgICAgIGN0eCxcbiAgICApO1xuXG4gIGxldCBsb29rdXBfYWxpYXMgPSAoY3R4OiB0LCB0OiBUeXBWYXIudCk6IG9wdGlvbihUeXAudCkgPT5cbiAgICBzd2l0Y2ggKGxvb2t1cF90dmFyKGN0eCwgdCkpIHtcbiAgICB8IFNvbWUoe2tpbmQ6IFNpbmdsZXRvbih0eSksIF99KSA9PiBTb21lKHR5KVxuICAgIHwgU29tZSh7a2luZDogQWJzdHJhY3QsIF99KVxuICAgIHwgTm9uZSA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgZ2V0X2lkOiBlbnRyeSA9PiBJZC50ID1cbiAgICBmdW5cbiAgICB8IFZhckVudHJ5KHtpZCwgX30pXG4gICAgfCBDb25zdHJ1Y3RvckVudHJ5KHtpZCwgX30pXG4gICAgfCBUVmFyRW50cnkoe2lkLCBffSkgPT4gaWQ7XG5cbiAgbGV0IGxvb2t1cF92YXIgPSAoY3R4OiB0LCBuYW1lOiBzdHJpbmcpOiBvcHRpb24odmFyX2VudHJ5KSA9PlxuICAgIExpc3QuZmluZF9tYXAoXG4gICAgICBmdW5cbiAgICAgIHwgVmFyRW50cnkodikgd2hlbiB2Lm5hbWUgPT0gbmFtZSA9PiBTb21lKHYpXG4gICAgICB8IF8gPT4gTm9uZSxcbiAgICAgIGN0eCxcbiAgICApO1xuXG4gIGxldCBsb29rdXBfY3RyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHZhcl9lbnRyeSkgPT5cbiAgICBMaXN0LmZpbmRfbWFwKFxuICAgICAgZnVuXG4gICAgICB8IENvbnN0cnVjdG9yRW50cnkodCkgd2hlbiB0Lm5hbWUgPT0gbmFtZSA9PiBTb21lKHQpXG4gICAgICB8IF8gPT4gTm9uZSxcbiAgICAgIGN0eCxcbiAgICApO1xuXG4gIGxldCBpc19hbGlhcyA9IChjdHg6IHQsIG5hbWU6IFR5cFZhci50KTogYm9vbCA9PlxuICAgIHN3aXRjaCAobG9va3VwX2FsaWFzKGN0eCwgbmFtZSkpIHtcbiAgICB8IFNvbWUoXykgPT4gdHJ1ZVxuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIH07XG5cbiAgbGV0IGFkZF9jdHJzID0gKGN0eDogdCwgbmFtZTogVHlwVmFyLnQsIGlkOiBJZC50LCBjdHJzOiBUeXAuc3VtX21hcCk6IHQgPT5cbiAgICBMaXN0Lm1hcChcbiAgICAgICgoY3RyLCB0eXApKSA9PlxuICAgICAgICBDb25zdHJ1Y3RvckVudHJ5KHtcbiAgICAgICAgICBuYW1lOiBjdHIsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgdHlwOlxuICAgICAgICAgICAgc3dpdGNoICh0eXApIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBWYXIobmFtZSlcbiAgICAgICAgICAgIHwgU29tZSh0eXApID0+IEFycm93KHR5cCwgVmFyKG5hbWUpKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICBjdHJzLFxuICAgIClcbiAgICBAIGN0eDtcblxuICBsZXQgc3VidHJhY3RfcHJlZml4ID0gKGN0eDogdCwgcHJlZml4X2N0eDogdCk6IG9wdGlvbih0KSA9PiB7XG4gICAgLy8gTk9URTogZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgcHJlZml4IGlzIGFuIGFjdHVhbCBwcmVmaXhcbiAgICBsZXQgcHJlZml4X2xlbmd0aCA9IExpc3QubGVuZ3RoKHByZWZpeF9jdHgpO1xuICAgIGxldCBjdHhfbGVuZ3RoID0gTGlzdC5sZW5ndGgoY3R4KTtcbiAgICBpZiAocHJlZml4X2xlbmd0aCA+IGN0eF9sZW5ndGgpIHtcbiAgICAgIE5vbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIFNvbWUoXG4gICAgICAgIExpc3QucmV2KFxuICAgICAgICAgIExpc3RVdGlsLnN1Ymxpc3QoKHByZWZpeF9sZW5ndGgsIGN0eF9sZW5ndGgpLCBMaXN0LnJldihjdHgpKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBsZXQgYWRkZWRfYmluZGluZ3MgPSAoY3R4X2FmdGVyOiB0LCBjdHhfYmVmb3JlOiB0KTogdCA9PiB7XG4gICAgLyogUHJlY29uZGl0aW9uOiBuZXdfY3R4IGlzIG9sZF9jdHggcGx1cyBzb21lIG5ldyBiaW5kaW5ncyAqL1xuICAgIGxldCBuZXdfY291bnQgPSBMaXN0Lmxlbmd0aChjdHhfYWZ0ZXIpIC0gTGlzdC5sZW5ndGgoY3R4X2JlZm9yZSk7XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9uX29wdChuZXdfY291bnQsIGN0eF9hZnRlcikpIHtcbiAgICB8IFNvbWUoKGN0eCwgXykpID0+IGN0eFxuICAgIHwgXyA9PiBbXVxuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIFZhclNldCA9IFNldC5NYWtlKFZhcik7XG5cbiAgLy8gTm90ZTogZmlsdGVyIG91dCBkdXBsaWNhdGVzIHdoZW4gcmVuZGVyaW5nXG4gIGxldCBmaWx0ZXJfZHVwbGljYXRlcyA9IChjdHg6IHQpOiB0ID0+XG4gICAgY3R4XG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoKGN0eCwgdGVybV9zZXQsIHR5cF9zZXQpLCBlbnRyeSkgPT4ge1xuICAgICAgICAgICBzd2l0Y2ggKGVudHJ5KSB7XG4gICAgICAgICAgIHwgVmFyRW50cnkoe25hbWUsIF99KVxuICAgICAgICAgICB8IENvbnN0cnVjdG9yRW50cnkoe25hbWUsIF99KSA9PlxuICAgICAgICAgICAgIFZhclNldC5tZW0obmFtZSwgdGVybV9zZXQpXG4gICAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgICAgOiAoW2VudHJ5LCAuLi5jdHhdLCBWYXJTZXQuYWRkKG5hbWUsIHRlcm1fc2V0KSwgdHlwX3NldClcbiAgICAgICAgICAgfCBUVmFyRW50cnkoe25hbWUsIF99KSA9PlxuICAgICAgICAgICAgIFZhclNldC5tZW0obmFtZSwgdHlwX3NldClcbiAgICAgICAgICAgICAgID8gKGN0eCwgdGVybV9zZXQsIHR5cF9zZXQpXG4gICAgICAgICAgICAgICA6IChbZW50cnksIC4uLmN0eF0sIHRlcm1fc2V0LCBWYXJTZXQuYWRkKG5hbWUsIHR5cF9zZXQpKVxuICAgICAgICAgICB9XG4gICAgICAgICB9LFxuICAgICAgICAgKFtdLCBWYXJTZXQuZW1wdHksIFZhclNldC5lbXB0eSksXG4gICAgICAgKVxuICAgIHw+ICgoKGN0eCwgXywgXykpID0+IExpc3QucmV2KGN0eCkpO1xuXG4gIGxldCBzaGFkb3dzX3R5cCA9IChjdHg6IHQsIG5hbWU6IFR5cFZhci50KTogYm9vbCA9PlxuICAgIEZvcm0uaXNfYmFzZV90eXAobmFtZSkgfHwgbG9va3VwX2FsaWFzKGN0eCwgbmFtZSkgIT0gTm9uZTtcbn1cbmFuZCBLaW5kOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IFNpbmdsZXRvbihUeXAudClcbiAgICB8IEFic3RyYWN0O1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgU2luZ2xldG9uKFR5cC50KVxuICAgIHwgQWJzdHJhY3Q7XG59O1xuIiwiW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gVmFyTWFwLnRfKFR5cC50KTtcbmluY2x1ZGUgVmFyTWFwO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm1vZHVsZSBTZXhwID0gU2V4cGxpYi5TZXhwO1xuXG5tb2R1bGUgSW5uZXIgPSB7XG4gIGluY2x1ZGUgTWFwLk1ha2UoVmFyKTtcblxuICAvKiBTZWUgSW50TWFwICovXG4gIFtAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG4gIHR5cGUgYmluZGluZygndikgPSAoVmFyLnQsICd2KTtcblxuICBsZXQgcHAgPSAocHBfdiwgZiwgbWFwKSA9PlxuICAgIGl0ZXIoKGssIHYpID0+IEZvcm1hdC5mcHJpbnRmKGYsIFwiJXMgLT4gJWFAXFxuXCIsIGssIHBwX3YsIHYpLCBtYXApO1xuXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl92OiAndiA9PiBTZXhwLnQsIG1hcDogdCgndikpOiBTZXhwLnQgPT5cbiAgICBtYXAgfD4gYmluZGluZ3MgfD4gc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcbiAgbGV0IHRfb2Zfc2V4cCA9ICh2X29mX3NleHA6IFNleHAudCA9PiAndiwgc2V4cDogU2V4cC50KTogdCgndikgPT5cbiAgICBzZXhwIHw+IGxpc3Rfb2Zfc2V4cChiaW5kaW5nX29mX3NleHAodl9vZl9zZXhwKSkgfD4gTGlzdC50b19zZXEgfD4gb2Zfc2VxO1xuXG4gIGxldCB5b2pzb25fb2ZfdCA9XG4gICAgICAoeW9qc29uX29mX3Y6ICd2ID0+IFlvanNvbi5TYWZlLnQsIG1hcDogdCgndikpOiBZb2pzb24uU2FmZS50ID0+XG4gICAgbWFwIHw+IGJpbmRpbmdzIHw+IHlvanNvbl9vZl9saXN0KHlvanNvbl9vZl9iaW5kaW5nKHlvanNvbl9vZl92KSk7XG4gIGxldCB0X29mX3lvanNvbiA9XG4gICAgICAodl9vZl95b2pzb246IFlvanNvbi5TYWZlLnQgPT4gJ3YsIHlvanNvbjogWW9qc29uLlNhZmUudCk6IHQoJ3YpID0+XG4gICAgeW9qc29uXG4gICAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xufTtcblxubW9kdWxlIFZhckJzdE1hcDAgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0XygnYSkgPSBJbm5lci50KCdhKTtcblxuICBsZXQgZW1wdHkgPSBJbm5lci5lbXB0eTtcblxuICBsZXQgaXNfZW1wdHkgPSBJbm5lci5pc19lbXB0eTtcblxuICBsZXQgc2luZ2xldG9uID0gKCh4LCBhKSkgPT4gSW5uZXIuc2luZ2xldG9uKHgsIGEpO1xuXG4gIGxldCBleHRlbmQgPSAoY3R4LCAoeCwgYSkpID0+IElubmVyLmFkZCh4LCBhLCBjdHgpO1xuXG4gIGxldCB1cGRhdGUgPSAoY3R4LCBmLCB4KSA9PiBJbm5lci51cGRhdGUoeCwgZiwgY3R4KTtcblxuICBsZXQgdW5pb24gPSAoY3R4MSwgY3R4MikgPT5cbiAgICBJbm5lci51bmlvbigoX3gsIGEsIF9hJykgPT4gU29tZShhKSwgY3R4MSwgY3R4Mik7XG5cbiAgbGV0IGxvb2t1cCA9IChjdHgsIHgpID0+IElubmVyLmZpbmRfb3B0KHgsIGN0eCk7XG5cbiAgbGV0IGNvbnRhaW5zID0gKGN0eCwgeCkgPT4gSW5uZXIubWVtKHgsIGN0eCk7XG5cbiAgbGV0IG1hcCA9IGYgPT4gSW5uZXIubWFwaSgoeCwgYSkgPT4gZigoeCwgYSkpKTtcblxuICBsZXQgZmlsdGVyID0gZiA9PiBJbm5lci5maWx0ZXIoKHgsIGEpID0+IGYoKHgsIGEpKSk7XG5cbiAgbGV0IGZvbGQgPSAoZiwgaW5pdCwgY3R4KSA9PlxuICAgIElubmVyLmZvbGQoKHgsIGEsIGFjYykgPT4gZigoeCwgYSksIGFjYyksIGN0eCwgaW5pdCk7XG5cbiAgbGV0IGxlbmd0aCA9IElubmVyLmNhcmRpbmFsO1xuXG4gIGxldCB0b19saXN0ID0gY3R4ID0+IGN0eCB8PiBJbm5lci50b19zZXEgfD4gTGlzdC5vZl9zZXE7XG5cbiAgbGV0IG9mX2xpc3QgPSBiaW5kaW5ncyA9PiBiaW5kaW5ncyB8PiBMaXN0LnRvX3NlcSB8PiBJbm5lci5vZl9zZXE7XG59O1xuXG5tb2R1bGUgT3JkZXJlZCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRfKCdhKSA9IHtcbiAgICBtYXA6IFZhckJzdE1hcDAudF8oJ2EpLFxuICAgIC8qKiBUaGUgcmV2ZXJzZSBpbnNlcnRpb24gb3JkZXIgb2YgYmluZGluZ3MgKGRlbm90ZWQgYnkga2V5KS4gKi9cbiAgICByZXZfb3JkZXI6IGxpc3QoKFZhci50LCB1bml0KSksXG4gIH07XG5cbiAgbGV0IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQgPSAoKSA9PlxuICAgIGZhaWx3aXRoKFwiVmFyQnN0TWFwLk9yZGVyZWQ6IG9yZGVyIGtleSBub3QgaW4gbWFwXCIpO1xuXG4gIGxldCBlbXB0eSA9IHttYXA6IFZhckJzdE1hcDAuZW1wdHksIHJldl9vcmRlcjogW119O1xuXG4gIGxldCBpc19lbXB0eSA9ICh7bWFwLCBffSkgPT4gVmFyQnN0TWFwMC5pc19lbXB0eShtYXApO1xuXG4gIGxldCBzaW5nbGV0b24gPSAoKHgsIGEpKSA9PiB7XG4gICAge21hcDogVmFyQnN0TWFwMC5zaW5nbGV0b24oKHgsIGEpKSwgcmV2X29yZGVyOiBbKHgsICgpKV19O1xuICB9O1xuXG4gIGxldCBleHRlbmQgPSAoe21hcCwgcmV2X29yZGVyfSwgKHgsIGEpKSA9PiB7XG4gICAgbWFwOiBWYXJCc3RNYXAwLmV4dGVuZChtYXAsICh4LCBhKSksXG4gICAgcmV2X29yZGVyOiBbKHgsICgpKSwgLi4uTGlzdC5yZW1vdmVfYXNzb2MoeCwgcmV2X29yZGVyKV0sXG4gIH07XG5cbiAgbGV0IHVuaW9uID1cbiAgICAgIChcbiAgICAgICAge21hcDogbWFwMSwgcmV2X29yZGVyOiByZXZfb3JkZXIxfSxcbiAgICAgICAge21hcDogbWFwMiwgcmV2X29yZGVyOiByZXZfb3JkZXIyfSxcbiAgICAgICkgPT4ge1xuICAgIGxldCByZWMgdW5pb25fb3JkZXIgPSAob3JkZXIxLCByZXZfb3JkZXIyKSA9PlxuICAgICAgc3dpdGNoIChvcmRlcjEsIHJldl9vcmRlcjIpIHtcbiAgICAgIHwgKFtdLCBvcmRlcjIpID0+IG9yZGVyMlxuICAgICAgfCAoWyh4LCAoKSksIC4uLnJldl9vcmRlcjEnXSwgb3JkZXIyKSA9PlxuICAgICAgICBsZXQgcmV2X29yZGVyMicgPSBbKHgsICgpKSwgLi4uTGlzdC5yZW1vdmVfYXNzb2MoeCwgb3JkZXIyKV07XG4gICAgICAgIHVuaW9uX29yZGVyKHJldl9vcmRlcjEnLCByZXZfb3JkZXIyJyk7XG4gICAgICB9O1xuXG4gICAgbGV0IG1hcCA9IFZhckJzdE1hcDAudW5pb24obWFwMSwgbWFwMik7XG4gICAgbGV0IHJldl9vcmRlciA9IHVuaW9uX29yZGVyKExpc3QucmV2KHJldl9vcmRlcjEpLCByZXZfb3JkZXIyKTtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBsb29rdXAgPSAoe21hcCwgX30sIHgpID0+IFZhckJzdE1hcDAubG9va3VwKG1hcCwgeCk7XG5cbiAgbGV0IGNvbnRhaW5zID0gKHttYXAsIF99LCB4KSA9PiBWYXJCc3RNYXAwLmNvbnRhaW5zKG1hcCwgeCk7XG5cbiAgbGV0IG1hcGsgPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCBtYXAgPSBtYXAgfD4gVmFyQnN0TWFwMC5tYXAoZik7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgbWFwbyA9IChmLCB7bWFwLCByZXZfb3JkZXJ9KSA9PiB7XG4gICAgbGV0IG1hcCA9XG4gICAgICByZXZfb3JkZXJcbiAgICAgIHw+IExpc3QucmV2XG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKG1hcCcsICh4LCAoKSkpID0+XG4gICAgICAgICAgICAgc3dpdGNoIChWYXJCc3RNYXAwLmxvb2t1cChtYXAsIHgpKSB7XG4gICAgICAgICAgICAgfCBTb21lKGEpID0+XG4gICAgICAgICAgICAgICBsZXQgYSA9IGYoKHgsIGEpKTtcbiAgICAgICAgICAgICAgIFZhckJzdE1hcDAuZXh0ZW5kKG1hcCcsICh4LCBhKSk7XG4gICAgICAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQoKVxuICAgICAgICAgICAgIH0sXG4gICAgICAgICAgIFZhckJzdE1hcDAuZW1wdHksXG4gICAgICAgICApO1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZpbHRlcmsgPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCBtYXAgPSBWYXJCc3RNYXAwLmZpbHRlcihmLCBtYXApO1xuICAgIGxldCByZXZfb3JkZXIgPVxuICAgICAgcmV2X29yZGVyXG4gICAgICB8PiBMaXN0LnJldlxuICAgICAgfD4gTGlzdC5maWx0ZXIoKCh4LCBfKSkgPT4gVmFyQnN0TWFwMC5jb250YWlucyhtYXAsIHgpKVxuICAgICAgfD4gTGlzdC5yZXY7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgZmlsdGVybyA9IChmLCB7bWFwLCByZXZfb3JkZXJ9KSA9PiB7XG4gICAgbGV0IChtYXAsIHJldl9vcmRlcikgPVxuICAgICAgcmV2X29yZGVyXG4gICAgICB8PiBMaXN0LnJldlxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICgobWFwJywgcmV2X29yZGVyJyksICh4LCAoKSkpID0+IHtcbiAgICAgICAgICAgICBsZXQgcmV2X29yZGVyJyA9IHJlZihyZXZfb3JkZXInKTtcbiAgICAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgICAgIFZhckJzdE1hcDAudXBkYXRlKFxuICAgICAgICAgICAgICAgICBtYXAnLFxuICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgfCBTb21lKGEpIHdoZW4gIWYoKHgsIGEpKSA9PiBOb25lXG4gICAgICAgICAgICAgICAgIHwgU29tZShhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICByZXZfb3JkZXInIDo9IFsoeCwgKCkpLCAuLi5yZXZfb3JkZXInXl07XG4gICAgICAgICAgICAgICAgICAgICBTb21lKGEpO1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQoKSxcbiAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgKG1hcCwgcmV2X29yZGVyJ14pO1xuICAgICAgICAgICB9LFxuICAgICAgICAgICAobWFwLCBbXSksXG4gICAgICAgICApO1xuXG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgZm9sZGsgPSAoZiwgaW5pdCwge21hcCwgX30pID0+XG4gICAgVmFyQnN0TWFwMC5mb2xkKCgoeCwgYSksIGFjYykgPT4gZigoeCwgYSksIGFjYyksIGluaXQsIG1hcCk7XG5cbiAgbGV0IGZvbGRvID0gKGYsIGluaXQsIHttYXAsIHJldl9vcmRlcn0pID0+XG4gICAgcmV2X29yZGVyXG4gICAgfD4gTGlzdC5yZXZcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsICh4LCAoKSkpID0+XG4gICAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgICB8IFNvbWUoYSkgPT4gZigoeCwgYSksIGFjYylcbiAgICAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQoKVxuICAgICAgICAgICB9LFxuICAgICAgICAgaW5pdCxcbiAgICAgICApO1xuXG4gIGxldCBsZW5ndGggPSAoe3Jldl9vcmRlciwgX30pID0+IExpc3QubGVuZ3RoKHJldl9vcmRlcik7XG5cbiAgbGV0IHRvX2xpc3RrID0gKHttYXAsIF99KSA9PiBWYXJCc3RNYXAwLnRvX2xpc3QobWFwKTtcblxuICBsZXQgdG9fbGlzdG8gPSAoe21hcCwgcmV2X29yZGVyfSkgPT5cbiAgICByZXZfb3JkZXJcbiAgICB8PiBMaXN0LnJldlxuICAgIHw+IExpc3QubWFwKCgoeCwgKCkpKSA9PlxuICAgICAgICAgc3dpdGNoIChWYXJCc3RNYXAwLmxvb2t1cChtYXAsIHgpKSB7XG4gICAgICAgICB8IFNvbWUoYSkgPT4gKHgsIGEpXG4gICAgICAgICB8IE5vbmUgPT4gZmFpbHdpdGhfa2V5c2luY29uc2lzdGVudCgpXG4gICAgICAgICB9XG4gICAgICAgKTtcblxuICBsZXQgb2ZfbGlzdCA9IGJpbmRpbmdzID0+IHtcbiAgICBsZXQgbWFwID0gVmFyQnN0TWFwMC5vZl9saXN0KGJpbmRpbmdzKTtcbiAgICBsZXQgcmV2X29yZGVyID0gYmluZGluZ3MgfD4gTGlzdC5tYXAoKCh4LCBfKSkgPT4gKHgsICgpKSkgfD4gTGlzdC5yZXY7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgd2l0aG91dF9rZXlzID0gKGtleXMsIG0pID0+IHtcbiAgICBmaWx0ZXJrKCgocywgXykpID0+ICFMaXN0LmV4aXN0cyh4ID0+IHggPT0gcywga2V5cyksIG0pO1xuICB9O1xufTtcblxuaW5jbHVkZSBWYXJCc3RNYXAwO1xuIiwibW9kdWxlIEhvbGVSZWFzb24gPSB7XG4gIC8qIFZhcmlhYmxlOiBgcmVhc29uYCAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBUeXBlSW5jb25zaXN0ZW50XG4gICAgfCBXcm9uZ0xlbmd0aDtcblxuICBsZXQgZXEgPSAoeCwgeSkgPT4geCA9PSB5O1xufTtcblxuLyogVmFyaWFibGU6IGBlcnJgICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE5vdEluSG9sZVxuICB8IEluSG9sZShIb2xlUmVhc29uLnQsIE1ldGFWYXIudCk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKipcbiAqIEhvbGUgaW5zdGFuY2UgaW5kZXggaW4gREhQYXQgYW5kIERIRXhwXG4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGludDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgRW1wdHlIb2xlKE1ldGFWYXIudCwgTWV0YVZhckluc3QudClcbiAgfCBOb25FbXB0eUhvbGUoRXJyU3RhdHVzLkhvbGVSZWFzb24udCwgTWV0YVZhci50LCBNZXRhVmFySW5zdC50LCB0KVxuICB8IFdpbGRcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKE1ldGFWYXIudCwgTWV0YVZhckluc3QudCwgRXhwYW5kaW5nS2V5d29yZC50KVxuICB8IEludmFsaWRUZXh0KE1ldGFWYXIudCwgTWV0YVZhckluc3QudCwgc3RyaW5nKVxuICB8IEJhZENvbnN0cnVjdG9yKE1ldGFWYXIudCwgTWV0YVZhckluc3QudCwgc3RyaW5nKVxuICB8IFZhcihWYXIudClcbiAgfCBJbnRMaXQoaW50KVxuICB8IEZsb2F0TGl0KGZsb2F0KVxuICB8IEJvb2xMaXQoYm9vbClcbiAgfCBTdHJpbmdMaXQoc3RyaW5nKVxuICB8IExpc3RMaXQoVHlwLnQsIGxpc3QodCkpXG4gIHwgQ29ucyh0LCB0KVxuICB8IFR1cGxlKGxpc3QodCkpXG4gIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICB8IEFwKHQsIHQpO1xuXG5sZXQgbWtfdHVwbGU6IGxpc3QodCkgPT4gdCA9XG4gIGZ1blxuICB8IFtdXG4gIHwgW19dID0+IGZhaWx3aXRoKFwibWtfdHVwbGU6IGV4cGVjdGVkIGF0IGxlYXN0IDIgZWxlbWVudHNcIilcbiAgfCBkcHMgPT4gVHVwbGUoZHBzKTtcblxuLyoqXG4gKiBXaGV0aGVyIGRwIGNvbnRhaW5zIHRoZSB2YXJpYWJsZSB4IG91dHNpZGUgb2YgYSBob2xlLlxuICovXG5sZXQgcmVjIGJpbmRzX3ZhciA9ICh4OiBWYXIudCwgZHA6IHQpOiBib29sID0+XG4gIHN3aXRjaCAoZHApIHtcbiAgfCBFbXB0eUhvbGUoXywgXylcbiAgfCBOb25FbXB0eUhvbGUoXywgXywgXywgXylcbiAgfCBXaWxkXG4gIHwgSW52YWxpZFRleHQoXylcbiAgfCBCYWRDb25zdHJ1Y3RvcihfKVxuICB8IEludExpdChfKVxuICB8IEZsb2F0TGl0KF8pXG4gIHwgQm9vbExpdChfKVxuICB8IFN0cmluZ0xpdChfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRXhwYW5kaW5nS2V5d29yZChfLCBfLCBfKSA9PiBmYWxzZVxuICB8IFZhcih5KSA9PiBWYXIuZXEoeCwgeSlcbiAgfCBUdXBsZShkcHMpID0+IGRwcyB8PiBMaXN0LmV4aXN0cyhiaW5kc192YXIoeCkpXG4gIHwgQ29ucyhkcDEsIGRwMikgPT4gYmluZHNfdmFyKHgsIGRwMSkgfHwgYmluZHNfdmFyKHgsIGRwMilcbiAgfCBMaXN0TGl0KF8sIGRfbGlzdCkgPT5cbiAgICBsZXQgbmV3X2xpc3QgPSBMaXN0Lm1hcChiaW5kc192YXIoeCksIGRfbGlzdCk7XG4gICAgTGlzdC5mb2xkX2xlZnQoKHx8KSwgZmFsc2UsIG5ld19saXN0KTtcbiAgfCBBcChfLCBfKSA9PiBmYWxzZVxuICB9O1xuXG5sZXQgcmVjIGJvdW5kX3ZhcnMgPSAoZHA6IHQpOiBsaXN0KFZhci50KSA9PlxuICBzd2l0Y2ggKGRwKSB7XG4gIHwgRW1wdHlIb2xlKF8sIF8pXG4gIHwgTm9uRW1wdHlIb2xlKF8sIF8sIF8sIF8pXG4gIHwgV2lsZFxuICB8IEludmFsaWRUZXh0KF8pXG4gIHwgQmFkQ29uc3RydWN0b3IoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IEJvb2xMaXQoXylcbiAgfCBTdHJpbmdMaXQoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IEV4cGFuZGluZ0tleXdvcmQoXywgXywgXykgPT4gW11cbiAgfCBWYXIoeSkgPT4gW3ldXG4gIHwgVHVwbGUoZHBzKSA9PiBMaXN0LmZsYXR0ZW4oTGlzdC5tYXAoYm91bmRfdmFycywgZHBzKSlcbiAgfCBDb25zKGRwMSwgZHAyKSA9PiBib3VuZF92YXJzKGRwMSkgQCBib3VuZF92YXJzKGRwMilcbiAgfCBMaXN0TGl0KF8sIGRwcykgPT4gTGlzdC5mbGF0dGVuKExpc3QubWFwKGJvdW5kX3ZhcnMsIGRwcykpXG4gIHwgQXAoXywgZHAxKSA9PiBib3VuZF92YXJzKGRwMSlcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWN0aW9uID1cbiAgfCBTdGVwXG4gIHwgRXZhbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjb3VudCA9XG4gIHwgT25lXG4gIHwgQWxsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSAoYWN0aW9uLCBjb3VudCk7XG5cbmxldCBzdHJpbmdfb2ZfdCA9IHYgPT4ge1xuICBzd2l0Y2ggKHYpIHtcbiAgfCAoU3RlcCwgT25lKSA9PiBcInBhdXNlXCJcbiAgfCAoU3RlcCwgQWxsKSA9PiBcImRlYnVnXCJcbiAgfCAoRXZhbCwgT25lKSA9PiBcImhpZGVcIlxuICB8IChFdmFsLCBBbGwpID0+IFwiZXZhbFwiXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gaW50O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBJbnZhbGlkT2ZTdHJpbmdcbiAgfCBJbmRleE91dE9mQm91bmRzXG4gIHwgRGl2aWRlQnlaZXJvXG4gIHwgTmVnYXRpdmVFeHBvbmVudFxuICB8IE91dE9mRnVlbDtcblxubGV0IGVycl9tc2cgPSAoZXJyOiB0KTogc3RyaW5nID0+XG4gIHN3aXRjaCAoZXJyKSB7XG4gIHwgSW52YWxpZE9mU3RyaW5nID0+IFwiRXJyb3I6IEludmFsaWQgU3RyaW5nIENvbnZlcnNpb25cIlxuICB8IEluZGV4T3V0T2ZCb3VuZHMgPT4gXCJFcnJvcjogSW5kZXggT3V0IG9mIEJvdW5kc1wiXG4gIHwgRGl2aWRlQnlaZXJvID0+IFwiRXJyb3I6IERpdmlkZSBieSBaZXJvXCJcbiAgfCBOZWdhdGl2ZUV4cG9uZW50ID0+IFwiRXJyb3I6IE5lZ2F0aXZlIEV4cG9uZW50IGluIEludGVnZXIgRXhwb25lbnRpYXRpb24gKENvbnNpZGVyIHVzaW5nICoqLilcIlxuICB8IE91dE9mRnVlbCA9PiBcIkVycm9yOiBPdXQgb2YgRnVlbFwiXG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBJZC50O1xuIiwiLypcbiAgICAgVGhpcyBtb2R1bGUgYWRkcyBoZWxwZXJzIGZvciBjcmVhdGluZyBzLWV4cHJlc3Npb25zIHRoYXQgdXNlIHNvbWUgc3RydWN0dXJhbCBzaGFyaW5nXG4gICAgIChodHRwczovL3d3dy5vY2FtbHdpa2kuY29tL3dpa2kvU3RydWN0dXJhbF9zaGFyaW5nKSBpbnN0ZWFkIG9mIGNvcHlpbmcgYWxsIGluc3RhbmNlc1xuICAgICBvZiB0aGUgc2FtZSByZWNvcmQuXG4gKi9cblxubGV0IHN0cnVjdHVyZV9zaGFyZV9tYXA6IHJlZihvcHRpb24oSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKSkgPSByZWYoTm9uZSk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgc3RydWN0dXJlX3NoYXJlZCA9IChTZXhwbGliLlNleHAudCwgSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKTtcblxuLy8gVG8gYmUgdXNlZCBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2hlcmUgdGhlIHN0cnVjdHVyZSBzaGFyaW5nIHRha2VzIHBsYWNlXG5sZXQgc3RydWN0dXJlX3NoYXJlX2hlcmUgPVxuICAgIChcbiAgICAgIGtleV9mOiAnYSA9PiBJZC50LFxuICAgICAgc2V4cF9vZl90OiAnYSA9PiBTZXhwbGliLlNleHAudCxcbiAgICAgIHRfb2Zfc2V4cDogU2V4cGxpYi5TZXhwLnQgPT4gJ2EsXG4gICAgKVxuICAgIDogKCdhID0+IFNleHBsaWIuU2V4cC50LCBTZXhwbGliLlNleHAudCA9PiAnYSkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IHNleHAgPSBzZXhwX29mX3QodGhpbmcpO1xuICAgICAgbGV0IGtleSA9IGtleV9mKHRoaW5nKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShJZC5NYXAudXBkYXRlKGtleSwgXyA9PiBTb21lKHNleHApLCBtKSk7XG4gICAgICBJZC5zZXhwX29mX3Qoa2V5KTtcbiAgICB8IE5vbmUgPT4gc2V4cF9vZl90KHRoaW5nKVxuICAgIH07XG4gIH07XG4gIGxldCB0X29mX3NleHAnID0gc2V4cCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IGlkID0gSWQudF9vZl9zZXhwKHNleHApO1xuICAgICAgbGV0IHRoaW5nX3MgPVxuICAgICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbSkpIHtcbiAgICAgICAgfCBTb21lKHQpID0+IHRcbiAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoKFwic3RydWN0dXJlLXNoYXJpbmcgZGVzZXJpYWxpemF0aW9uIGZhaWxlZFwiKVxuICAgICAgICB9O1xuICAgICAgdF9vZl9zZXhwKHRoaW5nX3MpO1xuICAgIHwgTm9uZSA9PiB0X29mX3NleHAoc2V4cClcbiAgICB9O1xuICB9O1xuICAoc2V4cF9vZl90JywgdF9vZl9zZXhwJyk7XG59O1xuXG4vLyBUbyBiZSB1c2VkIG9uIHRoZSByb290IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBjdXJyZW50bHkgYmVpbmcgc2VyaWFsaXplZFxubGV0IHN0cnVjdHVyZV9zaGFyZV9pbiA9IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgTm9uZSA9PlxuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBTb21lKElkLk1hcC5lbXB0eSk7XG4gICAgICBsZXQgc2V4cCA9IHNleHBfb2ZfdCh0aGluZyk7XG4gICAgICBsZXQgcmVzdWx0OiBzdHJ1Y3R1cmVfc2hhcmVkID0gKFxuICAgICAgICBzZXhwLFxuICAgICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwXiB8PiBPcHRpb24uZ2V0LFxuICAgICAgKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gTm9uZTtcbiAgICAgIHNleHBfb2Zfc3RydWN0dXJlX3NoYXJlZChyZXN1bHQpO1xuICAgIHwgU29tZShfKSA9PiBzZXhwX29mX3QodGhpbmcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUbyBiZSB1c2VkIG9ubHkgb24gdGhlIHJvb3Qgb2YgdGhlIGRhdGEgc3RydWN0dXJlIGN1cnJlbnRseSBiZWluZyBzZXJpYWxpemVkXG4gIGxldCB0X29mX3NleHAnID0gKHNleHA6IFNleHBsaWIuU2V4cC50KTogJ2EgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCAoc2V4cCwgbWFwKSA9IHN0cnVjdHVyZV9zaGFyZWRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShtYXApO1xuICAgICAgbGV0IHRoaW5nID0gdF9vZl9zZXhwKHNleHApO1xuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBOb25lO1xuICAgICAgdGhpbmc7XG4gICAgfCBTb21lKF8pID0+IHRfb2Zfc2V4cChzZXhwKVxuICAgIH07XG4gIH07XG4gIChzZXhwX29mX3QnLCB0X29mX3NleHAnKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgcmVjIEFueToge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBFeHAoVUV4cC50KVxuICAgIHwgUGF0KFVQYXQudClcbiAgICB8IFR5cChVVHlwLnQpXG4gICAgfCBUUGF0KFVUUGF0LnQpXG4gICAgfCBSdWwoVVJ1bC50KVxuICAgIHwgTnVsKHVuaXQpXG4gICAgfCBBbnkodW5pdCk7XG5cbiAgbGV0IGlzX2V4cDogdCA9PiBvcHRpb24oVUV4cC50KTtcbiAgbGV0IGlzX3BhdDogdCA9PiBvcHRpb24oVVBhdC50KTtcbiAgbGV0IGlzX3R5cDogdCA9PiBvcHRpb24oVVR5cC50KTtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEV4cChVRXhwLnQpXG4gICAgfCBQYXQoVVBhdC50KVxuICAgIHwgVHlwKFVUeXAudClcbiAgICB8IFRQYXQoVVRQYXQudClcbiAgICB8IFJ1bChVUnVsLnQpXG4gICAgfCBOdWwodW5pdClcbiAgICB8IEFueSh1bml0KTtcblxuICBsZXQgaXNfZXhwOiB0ID0+IG9wdGlvbihVRXhwLnQpID1cbiAgICBmdW5cbiAgICB8IEV4cChlKSA9PiBTb21lKGUpXG4gICAgfCBfID0+IE5vbmU7XG4gIGxldCBpc19wYXQ6IHQgPT4gb3B0aW9uKFVQYXQudCkgPVxuICAgIGZ1blxuICAgIHwgUGF0KHApID0+IFNvbWUocClcbiAgICB8IF8gPT4gTm9uZTtcbiAgbGV0IGlzX3R5cDogdCA9PiBvcHRpb24oVVR5cC50KSA9XG4gICAgZnVuXG4gICAgfCBUeXAodCkgPT4gU29tZSh0KVxuICAgIHwgXyA9PiBOb25lO1xufVxuYW5kIFVFeHA6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX3VuX2Jvb2wgPVxuICAgIHwgTm90O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF91bl9tZXRhID1cbiAgICB8IFVucXVvdGU7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX3VuX2ludCA9XG4gICAgfCBNaW51cztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX2Jvb2wgPVxuICAgIHwgQW5kXG4gICAgfCBPcjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX2ludCA9XG4gICAgfCBQbHVzXG4gICAgfCBNaW51c1xuICAgIHwgVGltZXNcbiAgICB8IFBvd2VyXG4gICAgfCBEaXZpZGVcbiAgICB8IExlc3NUaGFuXG4gICAgfCBMZXNzVGhhbk9yRXF1YWxcbiAgICB8IEdyZWF0ZXJUaGFuXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWxcbiAgICB8IEVxdWFsc1xuICAgIHwgTm90RXF1YWxzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF9iaW5fZmxvYXQgPVxuICAgIHwgUGx1c1xuICAgIHwgTWludXNcbiAgICB8IFRpbWVzXG4gICAgfCBQb3dlclxuICAgIHwgRGl2aWRlXG4gICAgfCBMZXNzVGhhblxuICAgIHwgTGVzc1RoYW5PckVxdWFsXG4gICAgfCBHcmVhdGVyVGhhblxuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsXG4gICAgfCBFcXVhbHNcbiAgICB8IE5vdEVxdWFscztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX3N0cmluZyA9XG4gICAgfCBDb25jYXRcbiAgICB8IEVxdWFscztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfdW4gPVxuICAgIHwgTWV0YShvcF91bl9tZXRhKVxuICAgIHwgSW50KG9wX3VuX2ludClcbiAgICB8IEJvb2wob3BfdW5fYm9vbCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2JpbiA9XG4gICAgfCBJbnQob3BfYmluX2ludClcbiAgICB8IEZsb2F0KG9wX2Jpbl9mbG9hdClcbiAgICB8IEJvb2wob3BfYmluX2Jvb2wpXG4gICAgfCBTdHJpbmcob3BfYmluX3N0cmluZyk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZVxuICAgIHwgVHJpdlxuICAgIHwgQm9vbFxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgU3RyaW5nXG4gICAgfCBMaXN0TGl0XG4gICAgfCBUYWdcbiAgICB8IEZ1blxuICAgIHwgVHVwbGVcbiAgICB8IFZhclxuICAgIHwgTGV0XG4gICAgfCBBcFxuICAgIHwgSWZcbiAgICB8IFNlcVxuICAgIHwgVGVzdFxuICAgIHwgRmlsdGVyXG4gICAgfCBQYXJlbnNcbiAgICB8IENvbnNcbiAgICB8IExpc3RDb25jYXRcbiAgICB8IFVuT3Aob3BfdW4pXG4gICAgfCBCaW5PcChvcF9iaW4pXG4gICAgfCBNYXRjaDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVHJpdlxuICAgIHwgQm9vbChib29sKVxuICAgIHwgSW50KGludClcbiAgICB8IEZsb2F0KGZsb2F0KVxuICAgIHwgU3RyaW5nKHN0cmluZylcbiAgICB8IExpc3RMaXQobGlzdCh0KSlcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IEZ1bihVUGF0LnQsIHQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFVQYXQudCwgdCwgdClcbiAgICB8IFR5QWxpYXMoVVRQYXQudCwgVVR5cC50LCB0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IFBpcGVsaW5lKHQsIHQpXG4gICAgfCBJZih0LCB0LCB0KVxuICAgIHwgU2VxKHQsIHQpXG4gICAgfCBUZXN0KHQpXG4gICAgfCBGaWx0ZXIoRmlsdGVyQWN0aW9uLnQsIHQsIHQpXG4gICAgfCBQYXJlbnModCkgLy8gKFxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgTGlzdENvbmNhdCh0LCB0KVxuICAgIHwgVW5PcChvcF91biwgdClcbiAgICB8IEJpbk9wKG9wX2JpbiwgdCwgdClcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFVQYXQudCwgdCkpKVxuICBhbmQgdCA9IHtcbiAgICAvLyBpbnZhcmlhbnQ6IG5vbmVtcHR5XG4gICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIHRlcm0sXG4gIH07XG5cbiAgbGV0IGJvb2xfb3BfdG9fc3RyaW5nOiBvcF9iaW5fYm9vbCA9PiBzdHJpbmc7XG4gIGxldCBpbnRfb3BfdG9fc3RyaW5nOiBvcF9iaW5faW50ID0+IHN0cmluZztcbiAgbGV0IGZsb2F0X29wX3RvX3N0cmluZzogb3BfYmluX2Zsb2F0ID0+IHN0cmluZztcbiAgbGV0IHN0cmluZ19vcF90b19zdHJpbmc6IG9wX2Jpbl9zdHJpbmcgPT4gc3RyaW5nO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX3VuX2Jvb2wgPVxuICAgIHwgTm90O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF91bl9tZXRhID1cbiAgICB8IFVucXVvdGU7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX3VuX2ludCA9XG4gICAgfCBNaW51cztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX2Jvb2wgPVxuICAgIHwgQW5kXG4gICAgfCBPcjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX2ludCA9XG4gICAgfCBQbHVzXG4gICAgfCBNaW51c1xuICAgIHwgVGltZXNcbiAgICB8IFBvd2VyXG4gICAgfCBEaXZpZGVcbiAgICB8IExlc3NUaGFuXG4gICAgfCBMZXNzVGhhbk9yRXF1YWxcbiAgICB8IEdyZWF0ZXJUaGFuXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWxcbiAgICB8IEVxdWFsc1xuICAgIHwgTm90RXF1YWxzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBvcF9iaW5fZmxvYXQgPVxuICAgIHwgUGx1c1xuICAgIHwgTWludXNcbiAgICB8IFRpbWVzXG4gICAgfCBQb3dlclxuICAgIHwgRGl2aWRlXG4gICAgfCBMZXNzVGhhblxuICAgIHwgTGVzc1RoYW5PckVxdWFsXG4gICAgfCBHcmVhdGVyVGhhblxuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsXG4gICAgfCBFcXVhbHNcbiAgICB8IE5vdEVxdWFscztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfYmluX3N0cmluZyA9XG4gICAgfCBDb25jYXRcbiAgICB8IEVxdWFscztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgb3BfdW4gPVxuICAgIHwgTWV0YShvcF91bl9tZXRhKVxuICAgIHwgSW50KG9wX3VuX2ludClcbiAgICB8IEJvb2wob3BfdW5fYm9vbCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIG9wX2JpbiA9XG4gICAgfCBJbnQob3BfYmluX2ludClcbiAgICB8IEZsb2F0KG9wX2Jpbl9mbG9hdClcbiAgICB8IEJvb2wob3BfYmluX2Jvb2wpXG4gICAgfCBTdHJpbmcob3BfYmluX3N0cmluZyk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZVxuICAgIHwgVHJpdlxuICAgIHwgQm9vbFxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgU3RyaW5nXG4gICAgfCBMaXN0TGl0XG4gICAgfCBUYWdcbiAgICB8IEZ1blxuICAgIHwgVHVwbGVcbiAgICB8IFZhclxuICAgIHwgTGV0XG4gICAgfCBBcFxuICAgIHwgSWZcbiAgICB8IFNlcVxuICAgIHwgVGVzdFxuICAgIHwgRmlsdGVyXG4gICAgfCBQYXJlbnNcbiAgICB8IENvbnNcbiAgICB8IExpc3RDb25jYXRcbiAgICB8IFVuT3Aob3BfdW4pXG4gICAgfCBCaW5PcChvcF9iaW4pXG4gICAgfCBNYXRjaDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVHJpdlxuICAgIHwgQm9vbChib29sKVxuICAgIHwgSW50KGludClcbiAgICB8IEZsb2F0KGZsb2F0KVxuICAgIHwgU3RyaW5nKHN0cmluZylcbiAgICB8IExpc3RMaXQobGlzdCh0KSlcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IEZ1bihVUGF0LnQsIHQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFVQYXQudCwgdCwgdClcbiAgICB8IFR5QWxpYXMoVVRQYXQudCwgVVR5cC50LCB0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IFBpcGVsaW5lKHQsIHQpXG4gICAgfCBJZih0LCB0LCB0KVxuICAgIHwgU2VxKHQsIHQpXG4gICAgfCBUZXN0KHQpXG4gICAgfCBGaWx0ZXIoRmlsdGVyQWN0aW9uLnQsIHQsIHQpXG4gICAgfCBQYXJlbnModCkgLy8gKFxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgTGlzdENvbmNhdCh0LCB0KVxuICAgIHwgVW5PcChvcF91biwgdClcbiAgICB8IEJpbk9wKG9wX2JpbiwgdCwgdClcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFVQYXQudCwgdCkpKVxuICBhbmQgdCA9IHtcbiAgICAvLyBpbnZhcmlhbnQ6IG5vbmVtcHR5XG4gICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIHRlcm0sXG4gIH07XG5cbiAgbGV0IGJvb2xfb3BfdG9fc3RyaW5nID0gKG9wOiBvcF9iaW5fYm9vbCk6IHN0cmluZyA9PiB7XG4gICAgc3dpdGNoIChvcCkge1xuICAgIHwgQW5kID0+IFwiJiZcIlxuICAgIHwgT3IgPT4gXCJ8fFwiXG4gICAgfTtcbiAgfTtcblxuICBsZXQgaW50X29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2ludCk6IHN0cmluZyA9PiB7XG4gICAgc3dpdGNoIChvcCkge1xuICAgIHwgUGx1cyA9PiBcIitcIlxuICAgIHwgTWludXMgPT4gXCItXCJcbiAgICB8IFRpbWVzID0+IFwiKlwiXG4gICAgfCBQb3dlciA9PiBcIioqXCJcbiAgICB8IERpdmlkZSA9PiBcIi9cIlxuICAgIHwgTGVzc1RoYW4gPT4gXCI8XCJcbiAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBcIjw9XCJcbiAgICB8IEdyZWF0ZXJUaGFuID0+IFwiPlwiXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gXCI+PVwiXG4gICAgfCBFcXVhbHMgPT4gXCI9PVwiXG4gICAgfCBOb3RFcXVhbHMgPT4gXCIhPVwiXG4gICAgfTtcbiAgfTtcblxuICBsZXQgZmxvYXRfb3BfdG9fc3RyaW5nID0gKG9wOiBvcF9iaW5fZmxvYXQpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IFBsdXMgPT4gXCIrLlwiXG4gICAgfCBNaW51cyA9PiBcIi0uXCJcbiAgICB8IFRpbWVzID0+IFwiKi5cIlxuICAgIHwgUG93ZXIgPT4gXCIqKi5cIlxuICAgIHwgRGl2aWRlID0+IFwiLy5cIlxuICAgIHwgTGVzc1RoYW4gPT4gXCI8LlwiXG4gICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCI8PS5cIlxuICAgIHwgR3JlYXRlclRoYW4gPT4gXCI+LlwiXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gXCI+PS5cIlxuICAgIHwgRXF1YWxzID0+IFwiPT0uXCJcbiAgICB8IE5vdEVxdWFscyA9PiBcIiE9LlwiXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RyaW5nX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX3N0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgc3dpdGNoIChvcCkge1xuICAgIHwgQ29uY2F0ID0+IFwiKytcIlxuICAgIHwgRXF1YWxzID0+IFwiJD09XCJcbiAgICB9O1xuICB9O1xufVxuYW5kIFVQYXQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFdpbGRcbiAgICB8IEludChpbnQpXG4gICAgfCBGbG9hdChmbG9hdClcbiAgICB8IEJvb2woYm9vbClcbiAgICB8IFN0cmluZyhzdHJpbmcpXG4gICAgfCBUcml2XG4gICAgfCBMaXN0TGl0KGxpc3QodCkpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBWYXIoVmFyLnQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgUGFyZW5zKHQpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgVHlwZUFubih0LCBVVHlwLnQpXG4gIGFuZCB0ID0ge1xuICAgIGlkczogbGlzdChJZC50KSxcbiAgICB0ZXJtLFxuICB9O1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFdpbGRcbiAgICB8IEludChpbnQpXG4gICAgfCBGbG9hdChmbG9hdClcbiAgICB8IEJvb2woYm9vbClcbiAgICB8IFN0cmluZyhzdHJpbmcpXG4gICAgfCBUcml2XG4gICAgfCBMaXN0TGl0KGxpc3QodCkpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBWYXIoVmFyLnQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgUGFyZW5zKHQpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgVHlwZUFubih0LCBVVHlwLnQpXG4gIGFuZCB0ID0ge1xuICAgIGlkczogbGlzdChJZC50KSxcbiAgICB0ZXJtLFxuICB9O1xufVxuYW5kIFVUeXA6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IEJvb2xcbiAgICB8IFN0cmluZ1xuICAgIHwgTGlzdCh0KVxuICAgIHwgVmFyKHN0cmluZylcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IEFycm93KHQsIHQpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgUGFyZW5zKHQpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgU3VtKGxpc3QodmFyaWFudCkpXG4gIGFuZCB2YXJpYW50ID1cbiAgICB8IFZhcmlhbnQoQ29uc3RydWN0b3IudCwgbGlzdChJZC50KSwgb3B0aW9uKHQpKVxuICAgIHwgQmFkRW50cnkodClcbiAgYW5kIHQgPSB7XG4gICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIHRlcm0sXG4gIH07XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBMaXN0KHQpXG4gICAgfCBWYXIoc3RyaW5nKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQXJyb3codCwgdClcbiAgICB8IFR1cGxlKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBTdW0obGlzdCh2YXJpYW50KSlcbiAgYW5kIHZhcmlhbnQgPVxuICAgIHwgVmFyaWFudChDb25zdHJ1Y3Rvci50LCBsaXN0KElkLnQpLCBvcHRpb24odCkpXG4gICAgfCBCYWRFbnRyeSh0KVxuICBhbmQgdCA9IHtcbiAgICBpZHM6IGxpc3QoSWQudCksXG4gICAgdGVybSxcbiAgfTtcbn1cbmFuZCBVVFBhdDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVmFyKFR5cFZhci50KVxuICBhbmQgdCA9IHtcbiAgICBpZHM6IGxpc3QoSWQudCksXG4gICAgdGVybSxcbiAgfTtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBWYXIoVHlwVmFyLnQpXG4gIGFuZCB0ID0ge1xuICAgIGlkczogbGlzdChJZC50KSxcbiAgICB0ZXJtLFxuICB9O1xufVxuYW5kIFVSdWw6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgUnVsZXMoVUV4cC50LCBsaXN0KChVUGF0LnQsIFVFeHAudCkpKVxuICBhbmQgdCA9IHtcbiAgICBpZHM6IGxpc3QoSWQudCksXG4gICAgdGVybSxcbiAgfTtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFJ1bGVzKFVFeHAudCwgbGlzdCgoVVBhdC50LCBVRXhwLnQpKSlcbiAgYW5kIHQgPSB7XG4gICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIHRlcm0sXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpZl9jb25zaXN0ZW5jeSA9XG4gIHwgQ29uc2lzdGVudElmXG4gIHwgSW5jb25zaXN0ZW50SWY7XG5cbm1vZHVsZSByZWMgREhFeHA6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRW1wdHlIb2xlKE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudClcbiAgICB8IE5vbkVtcHR5SG9sZShFcnJTdGF0dXMuSG9sZVJlYXNvbi50LCBNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIHQpXG4gICAgfCBFeHBhbmRpbmdLZXl3b3JkKE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudCwgRXhwYW5kaW5nS2V5d29yZC50KVxuICAgIHwgRnJlZVZhcihNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIFZhci50KVxuICAgIHwgSW52YWxpZFRleHQoTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCBzdHJpbmcpXG4gICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIGNhc2UpXG4gICAgfCBDbG9zdXJlKFtAb3BhcXVlXSBDbG9zdXJlRW52aXJvbm1lbnQudCwgdClcbiAgICB8IEZpbHRlcihESEZpbHRlci50LCB0KVxuICAgIHwgQm91bmRWYXIoVmFyLnQpXG4gICAgfCBTZXF1ZW5jZSh0LCB0KVxuICAgIHwgTGV0KERIUGF0LnQsIHQsIHQpXG4gICAgfCBGaXhGKFZhci50LCBUeXAudCwgdClcbiAgICB8IEZ1bihESFBhdC50LCBUeXAudCwgdCwgb3B0aW9uKFZhci50KSlcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBBcEJ1aWx0aW4oc3RyaW5nLCB0KVxuICAgIHwgQnVpbHRpbkZ1bihzdHJpbmcpXG4gICAgfCBUZXN0KEtleXdvcmRJRC50LCB0KVxuICAgIHwgQm9vbExpdChib29sKVxuICAgIHwgSW50TGl0KGludClcbiAgICB8IEZsb2F0TGl0KGZsb2F0KVxuICAgIHwgU3RyaW5nTGl0KHN0cmluZylcbiAgICB8IEJpbkJvb2xPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9ib29sLCB0LCB0KVxuICAgIHwgQmluSW50T3AoVGVybUJhc2UuVUV4cC5vcF9iaW5faW50LCB0LCB0KVxuICAgIHwgQmluRmxvYXRPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9mbG9hdCwgdCwgdClcbiAgICB8IEJpblN0cmluZ09wKFRlcm1CYXNlLlVFeHAub3BfYmluX3N0cmluZywgdCwgdClcbiAgICB8IExpc3RMaXQoTWV0YVZhci50LCBNZXRhVmFySW5zdC50LCBUeXAudCwgbGlzdCh0KSlcbiAgICB8IENvbnModCwgdClcbiAgICB8IExpc3RDb25jYXQodCwgdClcbiAgICB8IFR1cGxlKGxpc3QodCkpXG4gICAgfCBQcmoodCwgaW50KVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29uc2lzdGVudENhc2UoY2FzZSlcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KVxuICAgIHwgRmFpbGVkQ2FzdCh0LCBUeXAudCwgVHlwLnQpXG4gICAgfCBJbnZhbGlkT3BlcmF0aW9uKHQsIEludmFsaWRPcGVyYXRpb25FcnJvci50KVxuICAgIHwgSWZUaGVuRWxzZShpZl9jb25zaXN0ZW5jeSwgdCwgdCwgdCkgLy8gdXNlIGJvb2wgdGFnIHRvIHRyYWNrIGlmIGJyYW5jaGVzIGFyZSBjb25zaXN0ZW50XG4gIGFuZCBjYXNlID1cbiAgICB8IENhc2UodCwgbGlzdChydWxlKSwgaW50KVxuICBhbmQgcnVsZSA9XG4gICAgfCBSdWxlKERIUGF0LnQsIHQpO1xuXG4gIGxldCBjb25zdHJ1Y3Rvcl9zdHJpbmc6IHQgPT4gc3RyaW5nO1xuXG4gIGxldCBta190dXBsZTogbGlzdCh0KSA9PiB0O1xuXG4gIGxldCBjYXN0OiAodCwgVHlwLnQsIFR5cC50KSA9PiB0O1xuXG4gIGxldCBhcHBseV9jYXN0czogKHQsIGxpc3QoKFR5cC50LCBUeXAudCkpKSA9PiB0O1xuICBsZXQgc3RyaXBfY2FzdHM6IHQgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgLyogSG9sZSB0eXBlcyAqL1xuICAgIHwgRW1wdHlIb2xlKE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudClcbiAgICB8IE5vbkVtcHR5SG9sZShFcnJTdGF0dXMuSG9sZVJlYXNvbi50LCBNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIHQpXG4gICAgfCBFeHBhbmRpbmdLZXl3b3JkKE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudCwgRXhwYW5kaW5nS2V5d29yZC50KVxuICAgIHwgRnJlZVZhcihNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIFZhci50KVxuICAgIHwgSW52YWxpZFRleHQoTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCBzdHJpbmcpXG4gICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhNZXRhVmFyLnQsIEhvbGVJbnN0YW5jZUlkLnQsIGNhc2UpXG4gICAgLyogR2VuZXJhbGl6ZWQgY2xvc3VyZXMgKi9cbiAgICB8IENsb3N1cmUoQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gICAgfCBGaWx0ZXIoREhGaWx0ZXIudCwgdClcbiAgICAvKiBPdGhlciBleHByZXNzaW9ucyBmb3JtcyAqL1xuICAgIHwgQm91bmRWYXIoVmFyLnQpXG4gICAgfCBTZXF1ZW5jZSh0LCB0KVxuICAgIHwgTGV0KERIUGF0LnQsIHQsIHQpXG4gICAgfCBGaXhGKFZhci50LCBUeXAudCwgdClcbiAgICB8IEZ1bihESFBhdC50LCBUeXAudCwgdCwgb3B0aW9uKFZhci50KSlcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBBcEJ1aWx0aW4oc3RyaW5nLCB0KVxuICAgIHwgQnVpbHRpbkZ1bihzdHJpbmcpXG4gICAgfCBUZXN0KEtleXdvcmRJRC50LCB0KVxuICAgIHwgQm9vbExpdChib29sKVxuICAgIHwgSW50TGl0KGludClcbiAgICB8IEZsb2F0TGl0KGZsb2F0KVxuICAgIHwgU3RyaW5nTGl0KHN0cmluZylcbiAgICB8IEJpbkJvb2xPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9ib29sLCB0LCB0KVxuICAgIHwgQmluSW50T3AoVGVybUJhc2UuVUV4cC5vcF9iaW5faW50LCB0LCB0KVxuICAgIHwgQmluRmxvYXRPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9mbG9hdCwgdCwgdClcbiAgICB8IEJpblN0cmluZ09wKFRlcm1CYXNlLlVFeHAub3BfYmluX3N0cmluZywgdCwgdClcbiAgICB8IExpc3RMaXQoTWV0YVZhci50LCBNZXRhVmFySW5zdC50LCBUeXAudCwgbGlzdCh0KSlcbiAgICB8IENvbnModCwgdClcbiAgICB8IExpc3RDb25jYXQodCwgdClcbiAgICB8IFR1cGxlKGxpc3QodCkpXG4gICAgfCBQcmoodCwgaW50KVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29uc2lzdGVudENhc2UoY2FzZSlcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KVxuICAgIHwgRmFpbGVkQ2FzdCh0LCBUeXAudCwgVHlwLnQpXG4gICAgfCBJbnZhbGlkT3BlcmF0aW9uKHQsIEludmFsaWRPcGVyYXRpb25FcnJvci50KVxuICAgIHwgSWZUaGVuRWxzZShpZl9jb25zaXN0ZW5jeSwgdCwgdCwgdClcbiAgYW5kIGNhc2UgPVxuICAgIHwgQ2FzZSh0LCBsaXN0KHJ1bGUpLCBpbnQpXG4gIGFuZCBydWxlID1cbiAgICB8IFJ1bGUoREhQYXQudCwgdCk7XG5cbiAgbGV0IGNvbnN0cnVjdG9yX3N0cmluZyA9IChkOiB0KTogc3RyaW5nID0+XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBFbXB0eUhvbGUoXywgXykgPT4gXCJFbXB0eUhvbGVcIlxuICAgIHwgTm9uRW1wdHlIb2xlKF8sIF8sIF8sIF8pID0+IFwiTm9uRW1wdHlIb2xlXCJcbiAgICB8IEV4cGFuZGluZ0tleXdvcmQoXywgXywgXykgPT4gXCJFeHBhbmRpbmdLZXl3b3JkXCJcbiAgICB8IEZyZWVWYXIoXywgXywgXykgPT4gXCJGcmVlVmFyXCJcbiAgICB8IEludmFsaWRUZXh0KF8pID0+IFwiSW52YWxpZFRleHRcIlxuICAgIHwgQm91bmRWYXIoXykgPT4gXCJCb3VuZFZhclwiXG4gICAgfCBTZXF1ZW5jZShfLCBfKSA9PiBcIlNlcXVlbmNlXCJcbiAgICB8IEZpbHRlcihfLCBfKSA9PiBcIkZpbHRlclwiXG4gICAgfCBMZXQoXywgXywgXykgPT4gXCJMZXRcIlxuICAgIHwgRml4RihfLCBfLCBfKSA9PiBcIkZpeEZcIlxuICAgIHwgRnVuKF8sIF8sIF8sIF8pID0+IFwiRnVuXCJcbiAgICB8IENsb3N1cmUoXywgXykgPT4gXCJDbG9zdXJlXCJcbiAgICB8IEFwKF8sIF8pID0+IFwiQXBcIlxuICAgIHwgQXBCdWlsdGluKF8sIF8pID0+IFwiQXBCdWlsdGluXCJcbiAgICB8IEJ1aWx0aW5GdW4oXykgPT4gXCJCdWlsdGluRnVuXCJcbiAgICB8IFRlc3QoXykgPT4gXCJUZXN0XCJcbiAgICB8IEJvb2xMaXQoXykgPT4gXCJCb29sTGl0XCJcbiAgICB8IEludExpdChfKSA9PiBcIkludExpdFwiXG4gICAgfCBGbG9hdExpdChfKSA9PiBcIkZsb2F0TGl0XCJcbiAgICB8IFN0cmluZ0xpdChfKSA9PiBcIlN0cmluZ0xpdFwiXG4gICAgfCBCaW5Cb29sT3AoXywgXywgXykgPT4gXCJCaW5Cb29sT3BcIlxuICAgIHwgQmluSW50T3AoXywgXywgXykgPT4gXCJCaW5JbnRPcFwiXG4gICAgfCBCaW5GbG9hdE9wKF8sIF8sIF8pID0+IFwiQmluRmxvYXRPcFwiXG4gICAgfCBCaW5TdHJpbmdPcChfLCBfLCBfKSA9PiBcIkJpblN0cmluZ09wXCJcbiAgICB8IExpc3RMaXQoXykgPT4gXCJMaXN0TGl0XCJcbiAgICB8IENvbnMoXywgXykgPT4gXCJDb25zXCJcbiAgICB8IExpc3RDb25jYXQoXywgXykgPT4gXCJMaXN0Q29uY2F0XCJcbiAgICB8IFR1cGxlKF8pID0+IFwiVHVwbGVcIlxuICAgIHwgUHJqKF8pID0+IFwiUHJqXCJcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IFwiQ29uc3RydWN0b3JcIlxuICAgIHwgQ29uc2lzdGVudENhc2UoXykgPT4gXCJDb25zaXN0ZW50Q2FzZVwiXG4gICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfLCBfLCBfKSA9PiBcIkluY29uc2lzdGVudEJyYW5jaGVzXCJcbiAgICB8IENhc3QoXywgXywgXykgPT4gXCJDYXN0XCJcbiAgICB8IEZhaWxlZENhc3QoXywgXywgXykgPT4gXCJGYWlsZWRDYXN0XCJcbiAgICB8IEludmFsaWRPcGVyYXRpb24oXykgPT4gXCJJbnZhbGlkT3BlcmF0aW9uXCJcbiAgICB8IElmVGhlbkVsc2UoXywgXywgXywgXykgPT4gXCJJZlRoZW5FbHNlXCJcbiAgICB9O1xuXG4gIGxldCBta190dXBsZTogbGlzdCh0KSA9PiB0ID1cbiAgICBmdW5cbiAgICB8IFtdXG4gICAgfCBbX10gPT4gZmFpbHdpdGgoXCJta190dXBsZTogZXhwZWN0ZWQgYXQgbGVhc3QgMiBlbGVtZW50c1wiKVxuICAgIHwgeHMgPT4gVHVwbGUoeHMpO1xuXG4gIGxldCBjYXN0ID0gKGQ6IHQsIHQxOiBUeXAudCwgdDI6IFR5cC50KTogdCA9PlxuICAgIGlmIChUeXAuZXEodDEsIHQyKSB8fCB0MiA9PSBVbmtub3duKFN5blN3aXRjaCkpIHtcbiAgICAgIGQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIENhc3QoZCwgdDEsIHQyKTtcbiAgICB9O1xuXG4gIGxldCBhcHBseV9jYXN0cyA9IChkOiB0LCBjYXN0czogbGlzdCgoVHlwLnQsIFR5cC50KSkpOiB0ID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGQsICh0eTEsIHR5MikpID0+IGNhc3QoZCwgdHkxLCB0eTIpLCBkLCBjYXN0cyk7XG5cbiAgbGV0IHJlYyBzdHJpcF9jYXN0cyA9XG4gICAgZnVuXG4gICAgfCBDbG9zdXJlKGVpLCBkKSA9PiBDbG9zdXJlKGVpLCBzdHJpcF9jYXN0cyhkKSlcbiAgICB8IENhc3QoZCwgXywgXykgPT4gc3RyaXBfY2FzdHMoZClcbiAgICB8IEZhaWxlZENhc3QoZCwgXywgXykgPT4gc3RyaXBfY2FzdHMoZClcbiAgICB8IFR1cGxlKGRzKSA9PiBUdXBsZShkcyB8PiBMaXN0Lm1hcChzdHJpcF9jYXN0cykpXG4gICAgfCBQcmooZCwgbikgPT4gUHJqKHN0cmlwX2Nhc3RzKGQpLCBuKVxuICAgIHwgQ29ucyhkMSwgZDIpID0+IENvbnMoc3RyaXBfY2FzdHMoZDEpLCBzdHJpcF9jYXN0cyhkMikpXG4gICAgfCBMaXN0Q29uY2F0KGQxLCBkMikgPT4gTGlzdENvbmNhdChzdHJpcF9jYXN0cyhkMSksIHN0cmlwX2Nhc3RzKGQyKSlcbiAgICB8IExpc3RMaXQoYSwgYiwgYywgZHMpID0+IExpc3RMaXQoYSwgYiwgYywgTGlzdC5tYXAoc3RyaXBfY2FzdHMsIGRzKSlcbiAgICB8IE5vbkVtcHR5SG9sZShlcnIsIHUsIGksIGQpID0+IE5vbkVtcHR5SG9sZShlcnIsIHUsIGksIHN0cmlwX2Nhc3RzKGQpKVxuICAgIHwgU2VxdWVuY2UoYSwgYikgPT4gU2VxdWVuY2Uoc3RyaXBfY2FzdHMoYSksIHN0cmlwX2Nhc3RzKGIpKVxuICAgIHwgRmlsdGVyKGYsIGIpID0+IEZpbHRlcihESEZpbHRlci5zdHJpcF9jYXN0cyhmKSwgc3RyaXBfY2FzdHMoYikpXG4gICAgfCBMZXQoZHAsIGIsIGMpID0+IExldChkcCwgc3RyaXBfY2FzdHMoYiksIHN0cmlwX2Nhc3RzKGMpKVxuICAgIHwgRml4RihhLCBiLCBjKSA9PiBGaXhGKGEsIGIsIHN0cmlwX2Nhc3RzKGMpKVxuICAgIHwgRnVuKGEsIGIsIGMsIGQpID0+IEZ1bihhLCBiLCBzdHJpcF9jYXN0cyhjKSwgZClcbiAgICB8IEFwKGEsIGIpID0+IEFwKHN0cmlwX2Nhc3RzKGEpLCBzdHJpcF9jYXN0cyhiKSlcbiAgICB8IFRlc3QoaWQsIGEpID0+IFRlc3QoaWQsIHN0cmlwX2Nhc3RzKGEpKVxuICAgIHwgQXBCdWlsdGluKGZuLCBhcmdzKSA9PiBBcEJ1aWx0aW4oZm4sIHN0cmlwX2Nhc3RzKGFyZ3MpKVxuICAgIHwgQnVpbHRpbkZ1bihmbikgPT4gQnVpbHRpbkZ1bihmbilcbiAgICB8IEJpbkJvb2xPcChhLCBiLCBjKSA9PiBCaW5Cb29sT3AoYSwgc3RyaXBfY2FzdHMoYiksIHN0cmlwX2Nhc3RzKGMpKVxuICAgIHwgQmluSW50T3AoYSwgYiwgYykgPT4gQmluSW50T3AoYSwgc3RyaXBfY2FzdHMoYiksIHN0cmlwX2Nhc3RzKGMpKVxuICAgIHwgQmluRmxvYXRPcChhLCBiLCBjKSA9PiBCaW5GbG9hdE9wKGEsIHN0cmlwX2Nhc3RzKGIpLCBzdHJpcF9jYXN0cyhjKSlcbiAgICB8IEJpblN0cmluZ09wKGEsIGIsIGMpID0+XG4gICAgICBCaW5TdHJpbmdPcChhLCBzdHJpcF9jYXN0cyhiKSwgc3RyaXBfY2FzdHMoYykpXG4gICAgfCBDb25zaXN0ZW50Q2FzZShDYXNlKGEsIHJzLCBiKSkgPT5cbiAgICAgIENvbnNpc3RlbnRDYXNlKFxuICAgICAgICBDYXNlKHN0cmlwX2Nhc3RzKGEpLCBMaXN0Lm1hcChzdHJpcF9jYXN0c19ydWxlLCBycyksIGIpLFxuICAgICAgKVxuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXModSwgaSwgQ2FzZShzY3J1dCwgcnVsZXMsIG4pKSA9PlxuICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXMoXG4gICAgICAgIHUsXG4gICAgICAgIGksXG4gICAgICAgIENhc2Uoc3RyaXBfY2FzdHMoc2NydXQpLCBMaXN0Lm1hcChzdHJpcF9jYXN0c19ydWxlLCBydWxlcyksIG4pLFxuICAgICAgKVxuICAgIHwgRW1wdHlIb2xlKF8pIGFzIGRcbiAgICB8IEV4cGFuZGluZ0tleXdvcmQoXykgYXMgZFxuICAgIHwgRnJlZVZhcihfKSBhcyBkXG4gICAgfCBJbnZhbGlkVGV4dChfKSBhcyBkXG4gICAgfCBCb3VuZFZhcihfKSBhcyBkXG4gICAgfCBCb29sTGl0KF8pIGFzIGRcbiAgICB8IEludExpdChfKSBhcyBkXG4gICAgfCBGbG9hdExpdChfKSBhcyBkXG4gICAgfCBTdHJpbmdMaXQoXykgYXMgZFxuICAgIHwgQ29uc3RydWN0b3IoXykgYXMgZFxuICAgIHwgSW52YWxpZE9wZXJhdGlvbihfKSBhcyBkID0+IGRcbiAgICB8IElmVGhlbkVsc2UoY29uc2lzdGVudCwgYywgZDEsIGQyKSA9PlxuICAgICAgSWZUaGVuRWxzZShcbiAgICAgICAgY29uc2lzdGVudCxcbiAgICAgICAgc3RyaXBfY2FzdHMoYyksXG4gICAgICAgIHN0cmlwX2Nhc3RzKGQxKSxcbiAgICAgICAgc3RyaXBfY2FzdHMoZDIpLFxuICAgICAgKVxuICBhbmQgc3RyaXBfY2FzdHNfcnVsZSA9IChSdWxlKGEsIGQpKSA9PiBSdWxlKGEsIHN0cmlwX2Nhc3RzKGQpKTtcblxuICBsZXQgcmVjIGZhc3RfZXF1YWwgPSAoZDE6IHQsIGQyOiB0KTogYm9vbCA9PiB7XG4gICAgc3dpdGNoIChkMSwgZDIpIHtcbiAgICAvKiBQcmltaXRpdmUgZm9ybXM6IHJlZ3VsYXIgc3RydWN0dXJhbCBlcXVhbGl0eSAqL1xuICAgIHwgKEJvdW5kVmFyKF8pLCBfKVxuICAgIC8qIFRPRE86IE5vdCBzdXJlIGlmIHRoaXMgaXMgcmlnaHQuLi4gKi9cbiAgICB8IChCb29sTGl0KF8pLCBfKVxuICAgIHwgKEludExpdChfKSwgXylcbiAgICB8IChGbG9hdExpdChfKSwgXylcbiAgICB8IChDb25zdHJ1Y3RvcihfKSwgXykgPT4gZDEgPT0gZDJcbiAgICB8IChTdHJpbmdMaXQoczEpLCBTdHJpbmdMaXQoczIpKSA9PiBTdHJpbmcuZXF1YWwoczEsIHMyKVxuICAgIHwgKFN0cmluZ0xpdChfKSwgXykgPT4gZmFsc2VcblxuICAgIC8qIE5vbi1ob2xlIGZvcm1zOiByZWN1cnNlICovXG4gICAgfCAoVGVzdChpZDEsIGQxKSwgVGVzdChpZDIsIGQyKSkgPT4gaWQxID09IGlkMiAmJiBmYXN0X2VxdWFsKGQxLCBkMilcbiAgICB8IChTZXF1ZW5jZShkMTEsIGQyMSksIFNlcXVlbmNlKGQxMiwgZDIyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZDExLCBkMTIpICYmIGZhc3RfZXF1YWwoZDIxLCBkMjIpXG4gICAgfCAoRmlsdGVyKGYxLCBkMSksIEZpbHRlcihmMiwgZDIpKSA9PlxuICAgICAgREhGaWx0ZXIuZmFzdF9lcXVhbChmMSwgZjIpICYmIGZhc3RfZXF1YWwoZDEsIGQyKVxuICAgIHwgKExldChkcDEsIGQxMSwgZDIxKSwgTGV0KGRwMiwgZDEyLCBkMjIpKSA9PlxuICAgICAgZHAxID09IGRwMiAmJiBmYXN0X2VxdWFsKGQxMSwgZDEyKSAmJiBmYXN0X2VxdWFsKGQyMSwgZDIyKVxuICAgIHwgKEZpeEYoZjEsIHR5MSwgZDEpLCBGaXhGKGYyLCB0eTIsIGQyKSkgPT5cbiAgICAgIGYxID09IGYyICYmIHR5MSA9PSB0eTIgJiYgZmFzdF9lcXVhbChkMSwgZDIpXG4gICAgfCAoRnVuKGRwMSwgdHkxLCBkMSwgczEpLCBGdW4oZHAyLCB0eTIsIGQyLCBzMikpID0+XG4gICAgICBkcDEgPT0gZHAyICYmIHR5MSA9PSB0eTIgJiYgZmFzdF9lcXVhbChkMSwgZDIpICYmIHMxID09IHMyXG4gICAgfCAoQXAoZDExLCBkMjEpLCBBcChkMTIsIGQyMikpXG4gICAgfCAoQ29ucyhkMTEsIGQyMSksIENvbnMoZDEyLCBkMjIpKSA9PlxuICAgICAgZmFzdF9lcXVhbChkMTEsIGQxMikgJiYgZmFzdF9lcXVhbChkMjEsIGQyMilcbiAgICB8IChMaXN0Q29uY2F0KGQxMSwgZDIxKSwgTGlzdENvbmNhdChkMTIsIGQyMikpID0+XG4gICAgICBmYXN0X2VxdWFsKGQxMSwgZDEyKSAmJiBmYXN0X2VxdWFsKGQyMSwgZDIyKVxuICAgIHwgKFR1cGxlKGRzMSksIFR1cGxlKGRzMikpID0+XG4gICAgICBMaXN0Lmxlbmd0aChkczEpID09IExpc3QubGVuZ3RoKGRzMilcbiAgICAgICYmIExpc3QuZm9yX2FsbDIoZmFzdF9lcXVhbCwgZHMxLCBkczIpXG4gICAgfCAoUHJqKGQxLCBuKSwgUHJqKGQyLCBtKSkgPT4gbiA9PSBtICYmIGZhc3RfZXF1YWwoZDEsIGQyKVxuICAgIHwgKEFwQnVpbHRpbihmMSwgZDEpLCBBcEJ1aWx0aW4oZjIsIGQyKSkgPT4gZjEgPT0gZjIgJiYgZDEgPT0gZDJcbiAgICB8IChCdWlsdGluRnVuKGYxKSwgQnVpbHRpbkZ1bihmMikpID0+IGYxID09IGYyXG4gICAgfCAoTGlzdExpdChfLCBfLCBfLCBkczEpLCBMaXN0TGl0KF8sIF8sIF8sIGRzMikpID0+XG4gICAgICBMaXN0Lmxlbmd0aChkczEpID09IExpc3QubGVuZ3RoKGRzMilcbiAgICAgICYmIExpc3QuZm9yX2FsbDIoZmFzdF9lcXVhbCwgZHMxLCBkczIpXG4gICAgfCAoQmluQm9vbE9wKG9wMSwgZDExLCBkMjEpLCBCaW5Cb29sT3Aob3AyLCBkMTIsIGQyMikpID0+XG4gICAgICBvcDEgPT0gb3AyICYmIGZhc3RfZXF1YWwoZDExLCBkMTIpICYmIGZhc3RfZXF1YWwoZDIxLCBkMjIpXG4gICAgfCAoQmluSW50T3Aob3AxLCBkMTEsIGQyMSksIEJpbkludE9wKG9wMiwgZDEyLCBkMjIpKSA9PlxuICAgICAgb3AxID09IG9wMiAmJiBmYXN0X2VxdWFsKGQxMSwgZDEyKSAmJiBmYXN0X2VxdWFsKGQyMSwgZDIyKVxuICAgIHwgKEJpbkZsb2F0T3Aob3AxLCBkMTEsIGQyMSksIEJpbkZsb2F0T3Aob3AyLCBkMTIsIGQyMikpID0+XG4gICAgICBvcDEgPT0gb3AyICYmIGZhc3RfZXF1YWwoZDExLCBkMTIpICYmIGZhc3RfZXF1YWwoZDIxLCBkMjIpXG4gICAgfCAoQmluU3RyaW5nT3Aob3AxLCBkMTEsIGQyMSksIEJpblN0cmluZ09wKG9wMiwgZDEyLCBkMjIpKSA9PlxuICAgICAgb3AxID09IG9wMiAmJiBmYXN0X2VxdWFsKGQxMSwgZDEyKSAmJiBmYXN0X2VxdWFsKGQyMSwgZDIyKVxuICAgIHwgKENhc3QoZDEsIHR5MTEsIHR5MjEpLCBDYXN0KGQyLCB0eTEyLCB0eTIyKSlcbiAgICB8IChGYWlsZWRDYXN0KGQxLCB0eTExLCB0eTIxKSwgRmFpbGVkQ2FzdChkMiwgdHkxMiwgdHkyMikpID0+XG4gICAgICBmYXN0X2VxdWFsKGQxLCBkMikgJiYgdHkxMSA9PSB0eTEyICYmIHR5MjEgPT0gdHkyMlxuICAgIHwgKEludmFsaWRPcGVyYXRpb24oZDEsIHJlYXNvbjEpLCBJbnZhbGlkT3BlcmF0aW9uKGQyLCByZWFzb24yKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZDEsIGQyKSAmJiByZWFzb24xID09IHJlYXNvbjJcbiAgICB8IChDb25zaXN0ZW50Q2FzZShjYXNlMSksIENvbnNpc3RlbnRDYXNlKGNhc2UyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWxfY2FzZShjYXNlMSwgY2FzZTIpXG4gICAgfCAoSWZUaGVuRWxzZShjMSwgZDExLCBkMTIsIGQxMyksIElmVGhlbkVsc2UoYzIsIGQyMSwgZDIyLCBkMjMpKSA9PlxuICAgICAgYzEgPT0gYzJcbiAgICAgICYmIGZhc3RfZXF1YWwoZDExLCBkMjEpXG4gICAgICAmJiBmYXN0X2VxdWFsKGQxMiwgZDIyKVxuICAgICAgJiYgZmFzdF9lcXVhbChkMTMsIGQyMylcbiAgICAvKiBXZSBjYW4gZ3JvdXAgdGhlc2UgYWxsIGludG8gYSBgXyA9PiBmYWxzZWAgY2xhdXNlOyBzZXBhcmF0aW5nXG4gICAgICAgdGhlc2Ugc28gdGhhdCB3ZSBnZXQgZXhoYXVzdGl2ZW5lc3MgY2hlY2tpbmcuICovXG4gICAgfCAoU2VxdWVuY2UoXyksIF8pXG4gICAgfCAoRmlsdGVyKF8pLCBfKVxuICAgIHwgKExldChfKSwgXylcbiAgICB8IChGaXhGKF8pLCBfKVxuICAgIHwgKEZ1bihfKSwgXylcbiAgICB8IChUZXN0KF8pLCBfKVxuICAgIHwgKEFwKF8pLCBfKVxuICAgIHwgKEFwQnVpbHRpbihfKSwgXylcbiAgICB8IChCdWlsdGluRnVuKF8pLCBfKVxuICAgIHwgKENvbnMoXyksIF8pXG4gICAgfCAoTGlzdENvbmNhdChfKSwgXylcbiAgICB8IChMaXN0TGl0KF8pLCBfKVxuICAgIHwgKFR1cGxlKF8pLCBfKVxuICAgIHwgKFByaihfKSwgXylcbiAgICB8IChCaW5Cb29sT3AoXyksIF8pXG4gICAgfCAoQmluSW50T3AoXyksIF8pXG4gICAgfCAoQmluRmxvYXRPcChfKSwgXylcbiAgICB8IChCaW5TdHJpbmdPcChfKSwgXylcbiAgICB8IChDYXN0KF8pLCBfKVxuICAgIHwgKEZhaWxlZENhc3QoXyksIF8pXG4gICAgfCAoSW52YWxpZE9wZXJhdGlvbihfKSwgXylcbiAgICB8IChJZlRoZW5FbHNlKF8pLCBfKVxuICAgIHwgKENvbnNpc3RlbnRDYXNlKF8pLCBfKSA9PiBmYWxzZVxuXG4gICAgLyogSG9sZSBmb3Jtczogd2hlbiBjaGVja2luZyBlbnZpcm9ubWVudHMsIG9ubHkgY2hlY2sgdGhhdFxuICAgICAgIGVudmlyb25tZW50IElEJ3MgYXJlIGVxdWFsLCBkb24ndCBjaGVjayBzdHJ1Y3R1cmFsIGVxdWFsaXR5LlxuXG4gICAgICAgKFRoaXMgcmVzb2x2ZXMgYSBwZXJmb3JtYW5jZSBpc3N1ZSB3aXRoIG1hbnkgbmVzdGVkIGhvbGVzLikgKi9cbiAgICB8IChFbXB0eUhvbGUodTEsIGkxKSwgRW1wdHlIb2xlKHUyLCBpMikpID0+IHUxID09IHUyICYmIGkxID09IGkyXG4gICAgfCAoTm9uRW1wdHlIb2xlKHJlYXNvbjEsIHUxLCBpMSwgZDEpLCBOb25FbXB0eUhvbGUocmVhc29uMiwgdTIsIGkyLCBkMikpID0+XG4gICAgICByZWFzb24xID09IHJlYXNvbjIgJiYgdTEgPT0gdTIgJiYgaTEgPT0gaTIgJiYgZmFzdF9lcXVhbChkMSwgZDIpXG4gICAgfCAoRXhwYW5kaW5nS2V5d29yZCh1MSwgaTEsIGt3MSksIEV4cGFuZGluZ0tleXdvcmQodTIsIGkyLCBrdzIpKSA9PlxuICAgICAgdTEgPT0gdTIgJiYgaTEgPT0gaTIgJiYga3cxID09IGt3MlxuICAgIHwgKEZyZWVWYXIodTEsIGkxLCB4MSksIEZyZWVWYXIodTIsIGkyLCB4MikpID0+XG4gICAgICB1MSA9PSB1MiAmJiBpMSA9PSBpMiAmJiB4MSA9PSB4MlxuICAgIHwgKEludmFsaWRUZXh0KHUxLCBpMSwgdGV4dDEpLCBJbnZhbGlkVGV4dCh1MiwgaTIsIHRleHQyKSkgPT5cbiAgICAgIHUxID09IHUyICYmIGkxID09IGkyICYmIHRleHQxID09IHRleHQyXG4gICAgfCAoQ2xvc3VyZShzaWdtYTEsIGQxKSwgQ2xvc3VyZShzaWdtYTIsIGQyKSkgPT5cbiAgICAgIENsb3N1cmVFbnZpcm9ubWVudC5pZF9lcXVhbChzaWdtYTEsIHNpZ21hMikgJiYgZmFzdF9lcXVhbChkMSwgZDIpXG4gICAgfCAoXG4gICAgICAgIEluY29uc2lzdGVudEJyYW5jaGVzKHUxLCBpMSwgY2FzZTEpLFxuICAgICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1MiwgaTIsIGNhc2UyKSxcbiAgICAgICkgPT5cbiAgICAgIHUxID09IHUyICYmIGkxID09IGkyICYmIGZhc3RfZXF1YWxfY2FzZShjYXNlMSwgY2FzZTIpXG4gICAgfCAoRW1wdHlIb2xlKF8pLCBfKVxuICAgIHwgKE5vbkVtcHR5SG9sZShfKSwgXylcbiAgICB8IChFeHBhbmRpbmdLZXl3b3JkKF8pLCBfKVxuICAgIHwgKEZyZWVWYXIoXyksIF8pXG4gICAgfCAoSW52YWxpZFRleHQoXyksIF8pXG4gICAgfCAoQ2xvc3VyZShfKSwgXylcbiAgICB8IChJbmNvbnNpc3RlbnRCcmFuY2hlcyhfKSwgXykgPT4gZmFsc2VcbiAgICB9O1xuICB9XG4gIGFuZCBmYXN0X2VxdWFsX2Nhc2UgPSAoQ2FzZShkMSwgcnVsZXMxLCBpMSksIENhc2UoZDIsIHJ1bGVzMiwgaTIpKSA9PiB7XG4gICAgZmFzdF9lcXVhbChkMSwgZDIpXG4gICAgJiYgTGlzdC5sZW5ndGgocnVsZXMxKSA9PSBMaXN0Lmxlbmd0aChydWxlczIpXG4gICAgJiYgTGlzdC5mb3JfYWxsMihcbiAgICAgICAgIChSdWxlKGRwMSwgZDEpLCBSdWxlKGRwMiwgZDIpKSA9PlxuICAgICAgICAgICBkcDEgPT0gZHAyICYmIGZhc3RfZXF1YWwoZDEsIGQyKSxcbiAgICAgICAgIHJ1bGVzMSxcbiAgICAgICAgIHJ1bGVzMixcbiAgICAgICApXG4gICAgJiYgaTEgPT0gaTI7XG4gIH07XG59XG5cbmFuZCBFbnZpcm9ubWVudDoge1xuICBpbmNsdWRlXG4gICAgIChtb2R1bGUgdHlwZSBvZiBWYXJCc3RNYXAuT3JkZXJlZCkgd2l0aFxuICAgICAgdHlwZSB0XygnYSkgPSBWYXJCc3RNYXAuT3JkZXJlZC50XygnYSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB0XyhESEV4cC50KTtcbn0gPSB7XG4gIGluY2x1ZGUgVmFyQnN0TWFwLk9yZGVyZWQ7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB0XyhESEV4cC50KTtcbn1cblxuYW5kIENsb3N1cmVFbnZpcm9ubWVudDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdDtcblxuICBsZXQgd3JhcDogKEVudmlyb25tZW50SWQudCwgRW52aXJvbm1lbnQudCkgPT4gdDtcblxuICBsZXQgaWRfb2Y6IHQgPT4gRW52aXJvbm1lbnRJZC50O1xuICBsZXQgbWFwX29mOiB0ID0+IEVudmlyb25tZW50LnQ7XG5cbiAgbGV0IHRvX2xpc3Q6IHQgPT4gbGlzdCgoVmFyLnQsIERIRXhwLnQpKTtcblxuICBsZXQgb2ZfZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LnQgPT4gdDtcblxuICBsZXQgaWRfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xuXG4gIGxldCBlbXB0eTogdDtcbiAgbGV0IGlzX2VtcHR5OiB0ID0+IGJvb2w7XG4gIGxldCBsZW5ndGg6IHQgPT4gaW50O1xuXG4gIGxldCBsb29rdXA6ICh0LCBWYXIudCkgPT4gb3B0aW9uKERIRXhwLnQpO1xuICBsZXQgY29udGFpbnM6ICh0LCBWYXIudCkgPT4gYm9vbDtcbiAgbGV0IHVwZGF0ZTogKEVudmlyb25tZW50LnQgPT4gRW52aXJvbm1lbnQudCwgdCkgPT4gdDtcbiAgbGV0IHVwZGF0ZV9rZWVwX2lkOiAoRW52aXJvbm1lbnQudCA9PiBFbnZpcm9ubWVudC50LCB0KSA9PiB0O1xuICBsZXQgZXh0ZW5kOiAodCwgKFZhci50LCBESEV4cC50KSkgPT4gdDtcbiAgbGV0IGV4dGVuZF9rZWVwX2lkOiAodCwgKFZhci50LCBESEV4cC50KSkgPT4gdDtcbiAgbGV0IHVuaW9uOiAodCwgdCkgPT4gdDtcbiAgbGV0IHVuaW9uX2tlZXBfaWQ6ICh0LCB0KSA9PiB0O1xuICBsZXQgbWFwOiAoKChWYXIudCwgREhFeHAudCkpID0+IERIRXhwLnQsIHQpID0+IHQ7XG4gIGxldCBtYXBfa2VlcF9pZDogKCgoVmFyLnQsIERIRXhwLnQpKSA9PiBESEV4cC50LCB0KSA9PiB0O1xuICBsZXQgZmlsdGVyOiAoKChWYXIudCwgREhFeHAudCkpID0+IGJvb2wsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXJfa2VlcF9pZDogKCgoVmFyLnQsIERIRXhwLnQpKSA9PiBib29sLCB0KSA9PiB0O1xuICBsZXQgZm9sZDogKCgoVmFyLnQsIERIRXhwLnQpLCAnYikgPT4gJ2IsICdiLCB0KSA9PiAnYjtcblxuICBsZXQgd2l0aG91dF9rZXlzOiAobGlzdChWYXIudCksIHQpID0+IHQ7XG5cbiAgbGV0IHBsYWNlaG9sZGVyOiB0O1xufSA9IHtcbiAgbW9kdWxlIElubmVyOiB7XG4gICAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICAgIHR5cGUgdDtcblxuICAgIGxldCB3cmFwOiAoRW52aXJvbm1lbnRJZC50LCBFbnZpcm9ubWVudC50KSA9PiB0O1xuXG4gICAgbGV0IGlkX29mOiB0ID0+IEVudmlyb25tZW50SWQudDtcbiAgICBsZXQgbWFwX29mOiB0ID0+IEVudmlyb25tZW50LnQ7XG4gIH0gPSB7XG4gICAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICAgIHR5cGUgdCA9IChFbnZpcm9ubWVudElkLnQsIEVudmlyb25tZW50LnQpO1xuXG4gICAgbGV0IHdyYXAgPSAoZWksIG1hcCk6IHQgPT4gKGVpLCBtYXApO1xuXG4gICAgbGV0IGlkX29mID0gKChlaSwgXykpID0+IGVpO1xuICAgIGxldCBtYXBfb2YgPSAoKF8sIG1hcCkpID0+IG1hcDtcbiAgICBsZXQgKHNleHBfb2ZfdCwgdF9vZl9zZXhwKSA9XG4gICAgICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2hlcmUoaWRfb2YsIHNleHBfb2ZfdCwgdF9vZl9zZXhwKTtcbiAgfTtcbiAgaW5jbHVkZSBJbm5lcjtcblxuICBsZXQgdG9fbGlzdCA9IGVudiA9PiBlbnYgfD4gbWFwX29mIHw+IEVudmlyb25tZW50LnRvX2xpc3RvO1xuXG4gIGxldCBvZl9lbnZpcm9ubWVudCA9IG1hcCA9PiB7XG4gICAgbGV0IGVpID0gSWQubWsoKTtcbiAgICB3cmFwKGVpLCBtYXApO1xuICB9O1xuXG4gIC8qIEVxdWFscyBvbmx5IG5lZWRzIHRvIGNoZWNrIGVudmlyb25tZW50IGlkJ3MgKGZhc3RlciB0aGFuIHN0cnVjdHVyYWwgZXF1YWxpdHlcbiAgICogY2hlY2tpbmcuKSAqL1xuICBsZXQgaWRfZXF1YWwgPSAoZW52MSwgZW52MikgPT4gaWRfb2YoZW52MSkgPT0gaWRfb2YoZW52Mik7XG5cbiAgbGV0IGVtcHR5ID0gRW52aXJvbm1lbnQuZW1wdHkgfD4gb2ZfZW52aXJvbm1lbnQ7XG5cbiAgbGV0IGlzX2VtcHR5ID0gZW52ID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQuaXNfZW1wdHk7XG5cbiAgbGV0IGxlbmd0aCA9IGVudiA9PiBFbnZpcm9ubWVudC5sZW5ndGgobWFwX29mKGVudikpO1xuXG4gIGxldCBsb29rdXAgPSAoZW52LCB4KSA9PlxuICAgIGVudiB8PiBtYXBfb2YgfD4gKG1hcCA9PiBFbnZpcm9ubWVudC5sb29rdXAobWFwLCB4KSk7XG5cbiAgbGV0IGNvbnRhaW5zID0gKGVudiwgeCkgPT5cbiAgICBlbnYgfD4gbWFwX29mIHw+IChtYXAgPT4gRW52aXJvbm1lbnQuY29udGFpbnMobWFwLCB4KSk7XG5cbiAgbGV0IHVwZGF0ZSA9IChmLCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gZiB8PiBvZl9lbnZpcm9ubWVudDtcblxuICBsZXQgdXBkYXRlX2tlZXBfaWQgPSAoZiwgZW52KSA9PiBlbnYgfD4gbWFwX29mIHw+IGYgfD4gd3JhcChlbnYgfD4gaWRfb2YpO1xuXG4gIGxldCBleHRlbmQgPSAoZW52LCB4cikgPT5cbiAgICBlbnYgfD4gdXBkYXRlKG1hcCA9PiBFbnZpcm9ubWVudC5leHRlbmQobWFwLCB4cikpO1xuXG4gIGxldCBleHRlbmRfa2VlcF9pZCA9IChlbnYsIHhyKSA9PlxuICAgIGVudiB8PiB1cGRhdGVfa2VlcF9pZChtYXAgPT4gRW52aXJvbm1lbnQuZXh0ZW5kKG1hcCwgeHIpKTtcblxuICBsZXQgdW5pb24gPSAoZW52MSwgZW52MikgPT5cbiAgICBlbnYyIHw+IHVwZGF0ZShtYXAyID0+IEVudmlyb25tZW50LnVuaW9uKGVudjEgfD4gbWFwX29mLCBtYXAyKSk7XG5cbiAgbGV0IHVuaW9uX2tlZXBfaWQgPSAoZW52MSwgZW52MikgPT5cbiAgICBlbnYyIHw+IHVwZGF0ZV9rZWVwX2lkKG1hcDIgPT4gRW52aXJvbm1lbnQudW5pb24oZW52MSB8PiBtYXBfb2YsIG1hcDIpKTtcblxuICBsZXQgbWFwID0gKGYsIGVudikgPT4gZW52IHw+IHVwZGF0ZShFbnZpcm9ubWVudC5tYXBvKGYpKTtcblxuICBsZXQgbWFwX2tlZXBfaWQgPSAoZiwgZW52KSA9PiBlbnYgfD4gdXBkYXRlX2tlZXBfaWQoRW52aXJvbm1lbnQubWFwbyhmKSk7XG5cbiAgbGV0IGZpbHRlciA9IChmLCBlbnYpID0+IGVudiB8PiB1cGRhdGUoRW52aXJvbm1lbnQuZmlsdGVybyhmKSk7XG5cbiAgbGV0IGZpbHRlcl9rZWVwX2lkID0gKGYsIGVudikgPT5cbiAgICBlbnYgfD4gdXBkYXRlX2tlZXBfaWQoRW52aXJvbm1lbnQuZmlsdGVybyhmKSk7XG5cbiAgbGV0IGZvbGQgPSAoZiwgaW5pdCwgZW52KSA9PiBlbnYgfD4gbWFwX29mIHw+IEVudmlyb25tZW50LmZvbGRvKGYsIGluaXQpO1xuXG4gIGxldCBwbGFjZWhvbGRlciA9IHdyYXAoRW52aXJvbm1lbnRJZC5pbnZhbGlkLCBFbnZpcm9ubWVudC5lbXB0eSk7XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IGtleXMgPT4gdXBkYXRlKEVudmlyb25tZW50LndpdGhvdXRfa2V5cyhrZXlzKSk7XG59XG5cbmFuZCBGaWx0ZXI6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgcGF0OiBESEV4cC50LFxuICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gIH07XG5cbiAgbGV0IG1rOiAoREhFeHAudCwgRmlsdGVyQWN0aW9uLnQpID0+IHQ7XG5cbiAgbGV0IG1hcDogKERIRXhwLnQgPT4gREhFeHAudCwgdCkgPT4gdDtcblxuICBsZXQgc3RyaXBfY2FzdHM6IHQgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBwYXQ6IERIRXhwLnQsXG4gICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgfTtcblxuICBsZXQgbWsgPSAocGF0OiBESEV4cC50LCBhY3Q6IEZpbHRlckFjdGlvbi50KTogdCA9PiB7cGF0LCBhY3R9O1xuXG4gIGxldCBtYXAgPSAoZjogREhFeHAudCA9PiBESEV4cC50LCBmaWx0ZXI6IHQpOiB0ID0+IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgcGF0OiBmKGZpbHRlci5wYXQpLFxuICB9O1xuXG4gIGxldCBmYXN0X2VxdWFsID0gKGYxOiB0LCBmMjogdCk6IGJvb2wgPT4ge1xuICAgIERIRXhwLmZhc3RfZXF1YWwoZjEucGF0LCBmMi5wYXQpICYmIGYxLmFjdCA9PSBmMi5hY3Q7XG4gIH07XG5cbiAgbGV0IHN0cmlwX2Nhc3RzID0gKGY6IHQpOiB0ID0+IHsuLi5mLCBwYXQ6IGYucGF0IHw+IERIRXhwLnN0cmlwX2Nhc3RzfTtcbn1cblxuYW5kIERIRmlsdGVyOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEZpbHRlcihGaWx0ZXIudClcbiAgICB8IFJlc2lkdWUoaW50LCBGaWx0ZXJBY3Rpb24udCk7XG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbiAgbGV0IHN0cmlwX2Nhc3RzOiB0ID0+IHQ7XG4gIGxldCBtYXA6IChESEV4cC50ID0+IERIRXhwLnQsIHQpID0+IHQ7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBGaWx0ZXIoRmlsdGVyLnQpXG4gICAgfCBSZXNpZHVlKGludCwgRmlsdGVyQWN0aW9uLnQpO1xuICBsZXQgZmFzdF9lcXVhbCA9IChmMTogdCwgZjI6IHQpID0+IHtcbiAgICBzd2l0Y2ggKGYxLCBmMikge1xuICAgIHwgKEZpbHRlcihmbHQxKSwgRmlsdGVyKGZsdDIpKSA9PiBGaWx0ZXIuZmFzdF9lcXVhbChmbHQxLCBmbHQyKVxuICAgIHwgKFJlc2lkdWUoaWR4MSwgYWN0MSksIFJlc2lkdWUoaWR4MiwgYWN0MikpID0+XG4gICAgICBpZHgxID09IGlkeDIgJiYgYWN0MSA9PSBhY3QyXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcbiAgbGV0IHN0cmlwX2Nhc3RzID0gZiA9PiB7XG4gICAgc3dpdGNoIChmKSB7XG4gICAgfCBGaWx0ZXIoZmx0KSA9PiBGaWx0ZXIoRmlsdGVyLnN0cmlwX2Nhc3RzKGZsdCkpXG4gICAgfCBSZXNpZHVlKGlkeCwgYWN0KSA9PiBSZXNpZHVlKGlkeCwgYWN0KVxuICAgIH07XG4gIH07XG4gIGxldCBtYXAgPSAobWFwcGVyLCBmaWx0ZXIpID0+IHtcbiAgICBzd2l0Y2ggKGZpbHRlcikge1xuICAgIHwgRmlsdGVyKGZsdCkgPT4gRmlsdGVyKEZpbHRlci5tYXAobWFwcGVyLCBmbHQpKVxuICAgIHwgUmVzaWR1ZShpZHgsIGFjdCkgPT4gUmVzaWR1ZShpZHgsIGFjdClcbiAgICB9O1xuICB9O1xufVxuXG5hbmQgRmlsdGVyRW52aXJvbm1lbnQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KEZpbHRlci50KTtcblxuICBsZXQgZXh0ZW5kczogKEZpbHRlci50LCB0KSA9PiB0O1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KEZpbHRlci50KTtcblxuICBsZXQgZXh0ZW5kcyA9IChmbHQsIGVudikgPT4gW2ZsdCwgLi4uZW52XTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE91dE9mRnVlbFxuICB8IFN0ZXBEb2VzTm90TWF0Y2hcbiAgfCBGcmVlSW52YWxpZFZhcihWYXIudClcbiAgfCBCYWRQYXR0ZXJuTWF0Y2hcbiAgfCBDYXN0QlZIb2xlR3JvdW5kKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkRnVuKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkQm9vbExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEludExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEZsb2F0TGl0KERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkTGlzdExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFN0cmluZ0xpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFR1cGxlKERIRXhwLnQpXG4gIHwgSW52YWxpZEJ1aWx0aW4oc3RyaW5nKVxuICB8IEJhZEJ1aWx0aW5BcChzdHJpbmcsIGxpc3QoREhFeHAudCkpXG4gIHwgSW52YWxpZFByb2plY3Rpb24oaW50KTtcblxuZXhjZXB0aW9uIEV4Y2VwdGlvbih0KTtcbiIsIm9wZW4gREhFeHA7XG5cbi8qXG4gICBCdWlsdC1pbiBmdW5jdGlvbnMgZm9yIEhhemVsLlxuXG4gICBUbyBhZGQgYSBidWlsdC1pbiBmdW5jdGlvbiBvciBjb25zdGFudCwgd3JpdGUgdGhlIGltcGxlbWVudGF0aW9uIGluIHRoZVxuICAgYFBlcnZhc2l2ZXMuSW1wbHNgIG1vZHVsZSBiZWxvdyBhbmQgYWRkIGl0IHRvIGBidWlsdGluc2AuXG5cbiAgIFNlZSB0aGUgZXhpc3Rpbmcgb25lcyBmb3IgcmVmZXJlbmNlLlxuICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYnVpbHRpbiA9XG4gIHwgQ29uc3QoVHlwLnQsIERIRXhwLnQpXG4gIHwgRm4oVHlwLnQsIFR5cC50LCBESEV4cC50ID0+IERIRXhwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBWYXJNYXAudF8oYnVpbHRpbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZm9ybXMgPSBWYXJNYXAudF8oREhFeHAudCA9PiBESEV4cC50KTtcblxudHlwZSByZXN1bHQgPSBSZXN1bHQudChESEV4cC50LCBFdmFsdWF0b3JFcnJvci50KTtcblxubGV0IGNvbnN0ID0gKG5hbWU6IFZhci50LCB0eXA6IFR5cC50LCB2OiBESEV4cC50LCBidWlsdGluczogdCk6IHQgPT5cbiAgVmFyTWFwLmV4dGVuZChidWlsdGlucywgKG5hbWUsIENvbnN0KHR5cCwgdikpKTtcbmxldCBmbiA9XG4gICAgKG5hbWU6IFZhci50LCB0MTogVHlwLnQsIHQyOiBUeXAudCwgaW1wbDogREhFeHAudCA9PiBESEV4cC50LCBidWlsdGluczogdClcbiAgICA6IHQgPT5cbiAgVmFyTWFwLmV4dGVuZChidWlsdGlucywgKG5hbWUsIEZuKHQxLCB0MiwgaW1wbCkpKTtcblxubW9kdWxlIFBlcnZhc2l2ZXMgPSB7XG4gIG1vZHVsZSBJbXBscyA9IHtcbiAgICAvKiBjb25zdGFudHMgKi9cbiAgICBsZXQgaW5maW5pdHkgPSBESEV4cC5GbG9hdExpdChGbG9hdC5pbmZpbml0eSk7XG4gICAgbGV0IG5lZ19pbmZpbml0eSA9IERIRXhwLkZsb2F0TGl0KEZsb2F0Lm5lZ19pbmZpbml0eSk7XG4gICAgbGV0IG5hbiA9IERIRXhwLkZsb2F0TGl0KEZsb2F0Lm5hbik7XG4gICAgbGV0IGVwc2lsb25fZmxvYXQgPSBESEV4cC5GbG9hdExpdChlcHNpbG9uX2Zsb2F0KTtcbiAgICBsZXQgcGkgPSBESEV4cC5GbG9hdExpdChGbG9hdC5waSk7XG4gICAgbGV0IG1heF9pbnQgPSBESEV4cC5JbnRMaXQoSW50Lm1heF9pbnQpO1xuICAgIGxldCBtaW5faW50ID0gREhFeHAuSW50TGl0KEludC5taW5faW50KTtcblxuICAgIGxldCB1bmFyeSA9IChmOiBESEV4cC50ID0+IHJlc3VsdCwgcjogREhFeHAudCkgPT5cbiAgICAgIHN3aXRjaCAoZihyKSkge1xuICAgICAgfCBPayhyJykgPT4gcidcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKGUpIHw+IHJhaXNlXG4gICAgICB9O1xuXG4gICAgbGV0IGlzX2Zpbml0ZSA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgRmxvYXRMaXQoZikgPT4gT2soQm9vbExpdChGbG9hdC5pc19maW5pdGUoZikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBpc19pbmZpbml0ZSA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgRmxvYXRMaXQoZikgPT4gT2soQm9vbExpdChGbG9hdC5pc19pbmZpbml0ZShmKSkpXG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRGbG9hdExpdChkKSksXG4gICAgICApO1xuXG4gICAgbGV0IGlzX25hbiA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgRmxvYXRMaXQoZikgPT4gT2soQm9vbExpdChGbG9hdC5pc19uYW4oZikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfb2ZfaW50ID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBJbnRMaXQobikgPT4gT2soU3RyaW5nTGl0KHN0cmluZ19vZl9pbnQobikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX29mX2Zsb2F0ID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBGbG9hdExpdChmKSA9PiBPayhTdHJpbmdMaXQoc3RyaW5nX29mX2Zsb2F0KGYpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX29mX2Jvb2wgPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IEJvb2xMaXQoYikgPT4gT2soU3RyaW5nTGl0KHN0cmluZ19vZl9ib29sKGIpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZEJvb2xMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBpbnRfb2ZfZmxvYXQgPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IEZsb2F0TGl0KGYpID0+IE9rKEludExpdChpbnRfb2ZfZmxvYXQoZikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBmbG9hdF9vZl9pbnQgPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IEludExpdChuKSA9PiBPayhGbG9hdExpdChmbG9hdF9vZl9pbnQobikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgYWJzID1cbiAgICAgIHVuYXJ5KFxuICAgICAgICBmdW5cbiAgICAgICAgfCBJbnRMaXQobikgPT4gT2soSW50TGl0KGFicyhuKSkpXG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRJbnRMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBmbG9hdF9vcCA9IGZuID0+XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgRmxvYXRMaXQoZikgPT4gT2soRmxvYXRMaXQoZm4oZikpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBhYnNfZmxvYXQgPSBmbG9hdF9vcChhYnNfZmxvYXQpO1xuICAgIGxldCBjZWlsID0gZmxvYXRfb3AoY2VpbCk7XG4gICAgbGV0IGZsb29yID0gZmxvYXRfb3AoZmxvb3IpO1xuICAgIGxldCBzcXJ0ID0gZmxvYXRfb3Aoc3FydCk7XG4gICAgbGV0IGV4cCA9IGZsb2F0X29wKGV4cCk7XG4gICAgbGV0IGxvZyA9IGZsb2F0X29wKGxvZyk7XG4gICAgbGV0IGxvZzEwID0gZmxvYXRfb3AobG9nMTApO1xuICAgIGxldCBzaW4gPSBmbG9hdF9vcChzaW4pO1xuICAgIGxldCBjb3MgPSBmbG9hdF9vcChjb3MpO1xuICAgIGxldCB0YW4gPSBmbG9hdF9vcCh0YW4pO1xuICAgIGxldCBhc2luID0gZmxvYXRfb3AoYXNpbik7XG4gICAgbGV0IGFjb3MgPSBmbG9hdF9vcChhY29zKTtcbiAgICBsZXQgYXRhbiA9IGZsb2F0X29wKGF0YW4pO1xuXG4gICAgbGV0IG9mX3N0cmluZyA9XG4gICAgICAgIChjb252ZXJ0OiBzdHJpbmcgPT4gb3B0aW9uKCdhKSwgd3JhcDogJ2EgPT4gREhFeHAudCwgbmFtZTogc3RyaW5nKSA9PlxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFN0cmluZ0xpdChzKSBhcyBkID0+XG4gICAgICAgICAgc3dpdGNoIChjb252ZXJ0KHMpKSB7XG4gICAgICAgICAgfCBTb21lKG4pID0+IE9rKHdyYXAobikpXG4gICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgICBsZXQgZCcgPSBESEV4cC5BcChESEV4cC5CdWlsdGluRnVuKG5hbWUpLCBkKTtcbiAgICAgICAgICAgIE9rKEludmFsaWRPcGVyYXRpb24oZCcsIEludmFsaWRPZlN0cmluZykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkKSksXG4gICAgICApO1xuXG4gICAgbGV0IGludF9vZl9zdHJpbmcgPSBvZl9zdHJpbmcoaW50X29mX3N0cmluZ19vcHQsIG4gPT4gSW50TGl0KG4pKTtcbiAgICBsZXQgZmxvYXRfb2Zfc3RyaW5nID0gb2Zfc3RyaW5nKGZsb2F0X29mX3N0cmluZ19vcHQsIGYgPT4gRmxvYXRMaXQoZikpO1xuICAgIGxldCBib29sX29mX3N0cmluZyA9IG9mX3N0cmluZyhib29sX29mX3N0cmluZ19vcHQsIGIgPT4gQm9vbExpdChiKSk7XG5cbiAgICBsZXQgaW50X21vZCA9IChuYW1lLCBkMSkgPT5cbiAgICAgIHN3aXRjaCAoZDEpIHtcbiAgICAgIHwgVHVwbGUoW0ludExpdChuKSwgSW50TGl0KG0pXSkgPT5cbiAgICAgICAgc3dpdGNoIChtKSB7XG4gICAgICAgIHwgMCA9PlxuICAgICAgICAgIEludmFsaWRPcGVyYXRpb24oXG4gICAgICAgICAgICBESEV4cC5BcChESEV4cC5CdWlsdGluRnVuKG5hbWUpLCBkMSksXG4gICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gPT4gSW50TGl0KG4gbW9kIG0pXG4gICAgICAgIH1cbiAgICAgIHwgZDEgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGQxKSkpXG4gICAgICB9O1xuXG4gICAgbGV0IHN0cmluZ19sZW5ndGggPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFN0cmluZ0xpdChzKSA9PiBPayhJbnRMaXQoU3RyaW5nLmxlbmd0aChzKSkpXG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZCkpLFxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfY29tcGFyZSA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgVHVwbGUoW1N0cmluZ0xpdChzMSksIFN0cmluZ0xpdChzMildKSA9PlxuICAgICAgICAgIE9rKEludExpdChTdHJpbmcuY29tcGFyZShzMSwgczIpKSlcbiAgICAgICAgfCBkID0+IEVycm9yKEludmFsaWRCb3hlZFR1cGxlKGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX3RyaW0gPVxuICAgICAgdW5hcnkoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFN0cmluZ0xpdChzKSA9PiBPayhTdHJpbmdMaXQoU3RyaW5nLnRyaW0ocykpKVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQpKSxcbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX29mOiBESEV4cC50ID0+IG9wdGlvbihzdHJpbmcpID1cbiAgICAgIGZ1blxuICAgICAgfCBTdHJpbmdMaXQocykgPT4gU29tZShzKVxuICAgICAgfCBfID0+IE5vbmU7XG5cbiAgICBsZXQgc3RyaW5nX2NvbmNhdCA9XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgVHVwbGUoW1N0cmluZ0xpdChzMSksIExpc3RMaXQoXywgXywgXywgeHMpXSkgPT5cbiAgICAgICAgICBzd2l0Y2ggKHhzIHw+IExpc3QubWFwKHN0cmluZ19vZikgfD4gVXRpbC5PcHRVdGlsLnNlcXVlbmNlKSB7XG4gICAgICAgICAgfCBOb25lID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChMaXN0LmhkKHhzKSkpXG4gICAgICAgICAgfCBTb21lKHhzKSA9PiBPayhTdHJpbmdMaXQoU3RyaW5nLmNvbmNhdChzMSwgeHMpKSlcbiAgICAgICAgICB9XG4gICAgICAgIHwgZCA9PiBFcnJvcihJbnZhbGlkQm94ZWRUdXBsZShkKSksXG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19zdWIgPSBuYW1lID0+XG4gICAgICB1bmFyeShcbiAgICAgICAgZnVuXG4gICAgICAgIHwgVHVwbGUoW1N0cmluZ0xpdChzKSwgSW50TGl0KGlkeCksIEludExpdChsZW4pXSkgYXMgZCA9PlxuICAgICAgICAgIHRyeShPayhTdHJpbmdMaXQoU3RyaW5nLnN1YihzLCBpZHgsIGxlbikpKSkge1xuICAgICAgICAgIHwgXyA9PlxuICAgICAgICAgICAgbGV0IGQnID0gREhFeHAuQXAoREhFeHAuQnVpbHRpbkZ1bihuYW1lKSwgZCk7XG4gICAgICAgICAgICBPayhJbnZhbGlkT3BlcmF0aW9uKGQnLCBJbmRleE91dE9mQm91bmRzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IGQgPT4gRXJyb3IoSW52YWxpZEJveGVkVHVwbGUoZCkpLFxuICAgICAgKTtcbiAgfTtcblxuICBvcGVuIEltcGxzO1xuICBsZXQgYnVpbHRpbnMgPVxuICAgIFZhck1hcC5lbXB0eVxuICAgIHw+IGNvbnN0KFwiaW5maW5pdHlcIiwgRmxvYXQsIGluZmluaXR5KVxuICAgIHw+IGNvbnN0KFwibmVnX2luZmluaXR5XCIsIEZsb2F0LCBuZWdfaW5maW5pdHkpXG4gICAgfD4gY29uc3QoXCJuYW5cIiwgRmxvYXQsIG5hbilcbiAgICB8PiBjb25zdChcImVwc2lsb25fZmxvYXRcIiwgRmxvYXQsIGVwc2lsb25fZmxvYXQpXG4gICAgfD4gY29uc3QoXCJwaVwiLCBGbG9hdCwgcGkpXG4gICAgfD4gY29uc3QoXCJtYXhfaW50XCIsIEludCwgbWF4X2ludClcbiAgICB8PiBjb25zdChcIm1pbl9pbnRcIiwgSW50LCBtaW5faW50KVxuICAgIHw+IGZuKFwiaXNfZmluaXRlXCIsIEZsb2F0LCBCb29sLCBpc19maW5pdGUpXG4gICAgfD4gZm4oXCJpc19pbmZpbml0ZVwiLCBGbG9hdCwgQm9vbCwgaXNfaW5maW5pdGUpXG4gICAgfD4gZm4oXCJpc19uYW5cIiwgRmxvYXQsIEJvb2wsIGlzX25hbilcbiAgICB8PiBmbihcImludF9vZl9mbG9hdFwiLCBGbG9hdCwgSW50LCBpbnRfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJmbG9hdF9vZl9pbnRcIiwgSW50LCBGbG9hdCwgZmxvYXRfb2ZfaW50KVxuICAgIHw+IGZuKFwic3RyaW5nX29mX2ludFwiLCBJbnQsIFN0cmluZywgc3RyaW5nX29mX2ludClcbiAgICB8PiBmbihcInN0cmluZ19vZl9mbG9hdFwiLCBGbG9hdCwgU3RyaW5nLCBzdHJpbmdfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJzdHJpbmdfb2ZfYm9vbFwiLCBCb29sLCBTdHJpbmcsIHN0cmluZ19vZl9ib29sKVxuICAgIHw+IGZuKFwiaW50X29mX3N0cmluZ1wiLCBTdHJpbmcsIEludCwgaW50X29mX3N0cmluZyhcImludF9vZl9zdHJpbmdcIikpXG4gICAgfD4gZm4oXG4gICAgICAgICBcImZsb2F0X29mX3N0cmluZ1wiLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgRmxvYXQsXG4gICAgICAgICBmbG9hdF9vZl9zdHJpbmcoXCJmbG9hdF9vZl9zdHJpbmdcIiksXG4gICAgICAgKVxuICAgIHw+IGZuKFwiYm9vbF9vZl9zdHJpbmdcIiwgU3RyaW5nLCBCb29sLCBib29sX29mX3N0cmluZyhcImJvb2xfb2Zfc3RyaW5nXCIpKVxuICAgIHw+IGZuKFwiYWJzXCIsIEludCwgSW50LCBhYnMpXG4gICAgfD4gZm4oXCJhYnNfZmxvYXRcIiwgRmxvYXQsIEZsb2F0LCBhYnNfZmxvYXQpXG4gICAgfD4gZm4oXCJjZWlsXCIsIEZsb2F0LCBGbG9hdCwgY2VpbClcbiAgICB8PiBmbihcImZsb29yXCIsIEZsb2F0LCBGbG9hdCwgZmxvb3IpXG4gICAgfD4gZm4oXCJleHBcIiwgRmxvYXQsIEZsb2F0LCBleHApXG4gICAgfD4gZm4oXCJsb2dcIiwgRmxvYXQsIEZsb2F0LCBsb2cpXG4gICAgfD4gZm4oXCJsb2cxMFwiLCBGbG9hdCwgRmxvYXQsIGxvZzEwKVxuICAgIHw+IGZuKFwic3FydFwiLCBGbG9hdCwgRmxvYXQsIHNxcnQpXG4gICAgfD4gZm4oXCJzaW5cIiwgRmxvYXQsIEZsb2F0LCBzaW4pXG4gICAgfD4gZm4oXCJjb3NcIiwgRmxvYXQsIEZsb2F0LCBjb3MpXG4gICAgfD4gZm4oXCJ0YW5cIiwgRmxvYXQsIEZsb2F0LCB0YW4pXG4gICAgfD4gZm4oXCJhc2luXCIsIEZsb2F0LCBGbG9hdCwgYXNpbilcbiAgICB8PiBmbihcImFjb3NcIiwgRmxvYXQsIEZsb2F0LCBhY29zKVxuICAgIHw+IGZuKFwiYXRhblwiLCBGbG9hdCwgRmxvYXQsIGF0YW4pXG4gICAgfD4gZm4oXCJtb2RcIiwgUHJvZChbSW50LCBJbnRdKSwgSW50LCBpbnRfbW9kKFwibW9kXCIpKVxuICAgIHw+IGZuKFwic3RyaW5nX2xlbmd0aFwiLCBTdHJpbmcsIEludCwgc3RyaW5nX2xlbmd0aClcbiAgICB8PiBmbihcInN0cmluZ19jb21wYXJlXCIsIFByb2QoW1N0cmluZywgU3RyaW5nXSksIEludCwgc3RyaW5nX2NvbXBhcmUpXG4gICAgfD4gZm4oXCJzdHJpbmdfdHJpbVwiLCBTdHJpbmcsIFN0cmluZywgc3RyaW5nX3RyaW0pXG4gICAgfD4gZm4oXG4gICAgICAgICBcInN0cmluZ19jb25jYXRcIixcbiAgICAgICAgIFByb2QoW1N0cmluZywgTGlzdChTdHJpbmcpXSksXG4gICAgICAgICBTdHJpbmcsXG4gICAgICAgICBzdHJpbmdfY29uY2F0LFxuICAgICAgIClcbiAgICB8PiBmbihcbiAgICAgICAgIFwic3RyaW5nX3N1YlwiLFxuICAgICAgICAgUHJvZChbU3RyaW5nLCBJbnQsIEludF0pLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgc3RyaW5nX3N1YihcInN0cmluZ19zdWJcIiksXG4gICAgICAgKTtcbn07XG5cbmxldCBjdHhfaW5pdDogQ3R4LnQgPSB7XG4gIGxldCBtZXRhX2NvbnNfbWFwID0gQ29uc3RydWN0b3JNYXAub2ZfbGlzdChbKFwiJGVcIiwgTm9uZSksIChcIiR2XCIsIE5vbmUpXSk7XG4gIGxldCBtZXRhID1cbiAgICBDdHguVFZhckVudHJ5KHtcbiAgICAgIG5hbWU6IFwiJE1ldGFcIixcbiAgICAgIGlkOiBJZC5pbnZhbGlkLFxuICAgICAga2luZDogS2luZC5TaW5nbGV0b24oU3VtKG1ldGFfY29uc19tYXApKSxcbiAgICB9KTtcbiAgTGlzdC5tYXAoXG4gICAgZnVuXG4gICAgfCAobmFtZSwgQ29uc3QodHlwLCBfKSkgPT4gQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXAsIGlkOiBJZC5pbnZhbGlkfSlcbiAgICB8IChuYW1lLCBGbih0MSwgdDIsIF8pKSA9PlxuICAgICAgQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXA6IEFycm93KHQxLCB0MiksIGlkOiBJZC5pbnZhbGlkfSksXG4gICAgUGVydmFzaXZlcy5idWlsdGlucyxcbiAgKVxuICB8PiBDdHguZXh0ZW5kKF8sIG1ldGEpXG4gIHw+IEN0eC5hZGRfY3RycyhfLCBcIiRNZXRhXCIsIElkLmludmFsaWQsIG1ldGFfY29uc19tYXApO1xufTtcblxubGV0IGZvcm1zX2luaXQ6IGZvcm1zID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgKF8sIENvbnN0KF8pKSA9PiBOb25lXG4gICAgfCAobmFtZSwgRm4oXywgXywgZikpID0+IFNvbWUoKG5hbWUsIGYpKSxcbiAgICBQZXJ2YXNpdmVzLmJ1aWx0aW5zLFxuICApO1xuXG5sZXQgZW52X2luaXQ6IEVudmlyb25tZW50LnQgPVxuICBMaXN0LmZvbGRfbGVmdChcbiAgICBlbnYgPT5cbiAgICAgIGZ1blxuICAgICAgfCAobmFtZSwgQ29uc3QoXywgZCkpID0+IEVudmlyb25tZW50LmV4dGVuZChlbnYsIChuYW1lLCBkKSlcbiAgICAgIHwgKG5hbWUsIEZuKF8pKSA9PiBFbnZpcm9ubWVudC5leHRlbmQoZW52LCAobmFtZSwgQnVpbHRpbkZ1bihuYW1lKSkpLFxuICAgIEVudmlyb25tZW50LmVtcHR5LFxuICAgIFBlcnZhc2l2ZXMuYnVpbHRpbnMsXG4gICk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgRXZhbHVhdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvd19jYXNlX2NsYXVzZXM6IGJvb2wsXG4gICAgc2hvd19mbl9ib2RpZXM6IGJvb2wsXG4gICAgc2hvd19maXhwb2ludHM6IGJvb2wsXG4gICAgc2hvd19jYXN0czogYm9vbCxcbiAgICBzaG93X2xvb2t1cF9zdGVwczogYm9vbCxcbiAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogYm9vbCxcbiAgICAvLyBUT0RPW01hdHRdOiBNb3ZlIHRoaXMgdG8gc29tZXdoZXJlIHdoZXJlIGl0IGlzIGEgcGVyLXNjcmF0Y2ggc2V0dGluZ1xuICAgIHN0ZXBwZXJfaGlzdG9yeTogYm9vbCxcbiAgICBzaG93X3NldHRpbmdzOiBib29sLFxuICB9O1xuXG4gIGxldCBpbml0ID0ge1xuICAgIHNob3dfY2FzZV9jbGF1c2VzOiB0cnVlLFxuICAgIHNob3dfZm5fYm9kaWVzOiBmYWxzZSxcbiAgICBzaG93X2ZpeHBvaW50czogZmFsc2UsXG4gICAgc2hvd19jYXN0czogZmFsc2UsXG4gICAgc2hvd19sb29rdXBfc3RlcHM6IGZhbHNlLFxuICAgIHNob3dfc3RlcHBlcl9maWx0ZXJzOiBmYWxzZSxcbiAgICBzdGVwcGVyX2hpc3Rvcnk6IGZhbHNlLFxuICAgIHNob3dfc2V0dGluZ3M6IGZhbHNlLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzdGF0aWNzOiBib29sLFxuICBlbGFib3JhdGU6IGJvb2wsXG4gIGFzc2lzdDogYm9vbCxcbiAgZHluYW1pY3M6IGJvb2wsXG4gIGV2YWx1YXRpb246IEV2YWx1YXRpb24udCxcbn07XG5cbmxldCBvZmY6IHQgPSB7XG4gIHN0YXRpY3M6IGZhbHNlLFxuICBlbGFib3JhdGU6IGZhbHNlLFxuICBhc3Npc3Q6IGZhbHNlLFxuICBkeW5hbWljczogZmFsc2UsXG4gIGV2YWx1YXRpb246IEV2YWx1YXRpb24uaW5pdCxcbn07XG5cbmxldCBvbjogdCA9IHtcbiAgc3RhdGljczogdHJ1ZSxcbiAgZWxhYm9yYXRlOiB0cnVlLFxuICBhc3Npc3Q6IHRydWUsXG4gIGR5bmFtaWNzOiB0cnVlLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLmluaXQsXG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gREg7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2xzID1cbiAgfCBNYXJrXG4gIHwgQ2xvc3VyZVxuICB8IEZpbHRlclBhdHRlcm5cbiAgfCBGaWx0ZXJcbiAgfCBTZXF1ZW5jZTFcbiAgfCBTZXF1ZW5jZTJcbiAgfCBMZXQxXG4gIHwgTGV0MlxuICB8IEFwMVxuICB8IEFwMlxuICB8IEZ1blxuICB8IEZpeEZcbiAgfCBCaW5Cb29sT3AxXG4gIHwgQmluQm9vbE9wMlxuICB8IEJpbkludE9wMVxuICB8IEJpbkludE9wMlxuICB8IEJpbkZsb2F0T3AxXG4gIHwgQmluRmxvYXRPcDJcbiAgfCBCaW5TdHJpbmdPcDFcbiAgfCBCaW5TdHJpbmdPcDJcbiAgfCBJZlRoZW5FbHNlMVxuICB8IElmVGhlbkVsc2UyXG4gIHwgSWZUaGVuRWxzZTNcbiAgfCBUdXBsZShpbnQpXG4gIHwgTGlzdExpdChpbnQpXG4gIHwgQXBCdWlsdGluXG4gIHwgVGVzdFxuICB8IENvbnMxXG4gIHwgQ29uczJcbiAgfCBMaXN0Q29uY2F0MVxuICB8IExpc3RDb25jYXQyXG4gIHwgUHJqXG4gIHwgTm9uRW1wdHlIb2xlXG4gIHwgQ2FzdFxuICB8IEZhaWxlZENhc3RcbiAgfCBJbnZhbGlkT3BlcmF0aW9uXG4gIHwgQ29uc2lzdGVudENhc2VcbiAgfCBDb25zaXN0ZW50Q2FzZVJ1bGUoaW50KVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXNSdWxlKGludClcbiAgfCBGYWlsZWRDYXN0Q2FzdFxuICAvLyBVc2VkIHdoZW4gZW50ZXJpbmcgYSBib3VuZCB2YXJpYWJsZSBleHByZXNzaW9uIGluIHN1YnN0aXR1dGlvbiBtb2RlXG4gIHwgQm91bmRWYXI7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTWFya1xuICB8IENsb3N1cmUoW0BzaG93Lm9wYXF1ZV0gQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gIHwgRmlsdGVyKERILkRIRmlsdGVyLnQsIHQpXG4gIHwgU2VxdWVuY2UxKHQsIERIRXhwLnQpXG4gIHwgU2VxdWVuY2UyKERIRXhwLnQsIHQpXG4gIHwgTGV0MShESFBhdC50LCB0LCBESEV4cC50KVxuICB8IExldDIoREhQYXQudCwgREhFeHAudCwgdClcbiAgfCBGdW4oREhQYXQudCwgVHlwLnQsIHQsIG9wdGlvbihWYXIudCkpXG4gIHwgRml4RihWYXIudCwgVHlwLnQsIHQpXG4gIHwgQXAxKHQsIERIRXhwLnQpXG4gIHwgQXAyKERIRXhwLnQsIHQpXG4gIHwgSWZUaGVuRWxzZTEoaWZfY29uc2lzdGVuY3ksIHQsIERIRXhwLnQsIERIRXhwLnQpXG4gIHwgSWZUaGVuRWxzZTIoaWZfY29uc2lzdGVuY3ksIERIRXhwLnQsIHQsIERIRXhwLnQpXG4gIHwgSWZUaGVuRWxzZTMoaWZfY29uc2lzdGVuY3ksIERIRXhwLnQsIERIRXhwLnQsIHQpXG4gIHwgQmluQm9vbE9wMShUZXJtQmFzZS5VRXhwLm9wX2Jpbl9ib29sLCB0LCBESEV4cC50KVxuICB8IEJpbkJvb2xPcDIoVGVybUJhc2UuVUV4cC5vcF9iaW5fYm9vbCwgREhFeHAudCwgdClcbiAgfCBCaW5JbnRPcDEoVGVybUJhc2UuVUV4cC5vcF9iaW5faW50LCB0LCBESEV4cC50KVxuICB8IEJpbkludE9wMihUZXJtQmFzZS5VRXhwLm9wX2Jpbl9pbnQsIERIRXhwLnQsIHQpXG4gIHwgQmluRmxvYXRPcDEoVGVybUJhc2UuVUV4cC5vcF9iaW5fZmxvYXQsIHQsIERIRXhwLnQpXG4gIHwgQmluRmxvYXRPcDIoVGVybUJhc2UuVUV4cC5vcF9iaW5fZmxvYXQsIERIRXhwLnQsIHQpXG4gIHwgQmluU3RyaW5nT3AxKFRlcm1CYXNlLlVFeHAub3BfYmluX3N0cmluZywgdCwgREhFeHAudClcbiAgfCBCaW5TdHJpbmdPcDIoVGVybUJhc2UuVUV4cC5vcF9iaW5fc3RyaW5nLCBESEV4cC50LCB0KVxuICB8IFR1cGxlKHQsIChsaXN0KERIRXhwLnQpLCBsaXN0KERIRXhwLnQpKSlcbiAgfCBBcEJ1aWx0aW4oc3RyaW5nLCB0KVxuICB8IFRlc3QoS2V5d29yZElELnQsIHQpXG4gIHwgTGlzdExpdChcbiAgICAgIE1ldGFWYXIudCxcbiAgICAgIE1ldGFWYXJJbnN0LnQsXG4gICAgICBUeXAudCxcbiAgICAgIHQsXG4gICAgICAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSksXG4gICAgKVxuICB8IENvbnMxKHQsIERIRXhwLnQpXG4gIHwgQ29uczIoREhFeHAudCwgdClcbiAgfCBMaXN0Q29uY2F0MSh0LCBESEV4cC50KVxuICB8IExpc3RDb25jYXQyKERIRXhwLnQsIHQpXG4gIHwgUHJqKHQsIGludClcbiAgfCBOb25FbXB0eUhvbGUoRXJyU3RhdHVzLkhvbGVSZWFzb24udCwgTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50LCB0KVxuICB8IENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IEludmFsaWRPcGVyYXRpb24odCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gIHwgQ29uc2lzdGVudENhc2UoY2FzZSlcbiAgfCBDb25zaXN0ZW50Q2FzZVJ1bGUoXG4gICAgICBESEV4cC50LFxuICAgICAgREhQYXQudCxcbiAgICAgIHQsXG4gICAgICAobGlzdChESEV4cC5ydWxlKSwgbGlzdChESEV4cC5ydWxlKSksXG4gICAgICBpbnQsXG4gICAgKVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKE1ldGFWYXIudCwgSG9sZUluc3RhbmNlSWQudCwgY2FzZSlcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlc1J1bGUoXG4gICAgICBESEV4cC50LFxuICAgICAgTWV0YVZhci50LFxuICAgICAgSG9sZUluc3RhbmNlSWQudCxcbiAgICAgIERIUGF0LnQsXG4gICAgICB0LFxuICAgICAgKGxpc3QoREhFeHAucnVsZSksIGxpc3QoREhFeHAucnVsZSkpLFxuICAgICAgaW50LFxuICAgIClcbmFuZCBjYXNlID1cbiAgfCBDYXNlKHQsIGxpc3QocnVsZSksIGludClcbmFuZCBydWxlID0gREhFeHAucnVsZTtcblxubGV0IHJlYyBmdXp6eV9tYXJrID1cbiAgZnVuXG4gIHwgTWFyayA9PiB0cnVlXG4gIHwgQ2xvc3VyZShfLCB4KVxuICB8IFRlc3QoXywgeClcbiAgfCBDYXN0KHgsIF8sIF8pXG4gIHwgRmFpbGVkQ2FzdCh4LCBfLCBfKVxuICB8IEZpbHRlcihfLCB4KSA9PiBmdXp6eV9tYXJrKHgpXG4gIHwgU2VxdWVuY2UxKF8pXG4gIHwgU2VxdWVuY2UyKF8pXG4gIHwgTGV0MShfKVxuICB8IExldDIoXylcbiAgfCBGdW4oXylcbiAgfCBGaXhGKF8pXG4gIHwgQXAxKF8pXG4gIHwgQXAyKF8pXG4gIHwgSWZUaGVuRWxzZTEoXylcbiAgfCBJZlRoZW5FbHNlMihfKVxuICB8IElmVGhlbkVsc2UzKF8pXG4gIHwgQmluQm9vbE9wMShfKVxuICB8IEJpbkJvb2xPcDIoXylcbiAgfCBCaW5JbnRPcDEoXylcbiAgfCBCaW5JbnRPcDIoXylcbiAgfCBCaW5GbG9hdE9wMShfKVxuICB8IEJpbkZsb2F0T3AyKF8pXG4gIHwgQmluU3RyaW5nT3AxKF8pXG4gIHwgQmluU3RyaW5nT3AyKF8pXG4gIHwgVHVwbGUoXylcbiAgfCBBcEJ1aWx0aW4oXylcbiAgfCBMaXN0TGl0KF8pXG4gIHwgQ29uczEoXylcbiAgfCBDb25zMihfKVxuICB8IExpc3RDb25jYXQxKF8pXG4gIHwgTGlzdENvbmNhdDIoXylcbiAgfCBQcmooXylcbiAgfCBOb25FbXB0eUhvbGUoXylcbiAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pXG4gIHwgQ29uc2lzdGVudENhc2UoXylcbiAgfCBDb25zaXN0ZW50Q2FzZVJ1bGUoXylcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfKVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzUnVsZShfKSA9PiBmYWxzZTtcblxubGV0IHJlYyB1bndyYXAgPSAoY3R4OiB0LCBzZWw6IGNscyk6IG9wdGlvbih0KSA9PiB7XG4gIHN3aXRjaCAoc2VsLCBjdHgpIHtcbiAgfCAoTWFyaywgXykgPT5cbiAgICBwcmludF9lbmRsaW5lKFxuICAgICAgXCJNYXJrIGRvZXMgbm90IG1hdGNoIHdpdGggXCJcbiAgICAgICsrIFNleHBsaWIuU2V4cC50b19zdHJpbmdfaHVtKHNleHBfb2ZfdChjdHgpKSxcbiAgICApO1xuICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihTdGVwRG9lc05vdE1hdGNoKSk7XG4gIHwgKEJvdW5kVmFyLCBjKVxuICB8IChOb25FbXB0eUhvbGUsIE5vbkVtcHR5SG9sZShfLCBfLCBfLCBjKSlcbiAgfCAoQ2xvc3VyZSwgQ2xvc3VyZShfLCBjKSlcbiAgfCAoRmlsdGVyLCBGaWx0ZXIoXywgYykpXG4gIHwgKFNlcXVlbmNlMSwgU2VxdWVuY2UxKGMsIF8pKVxuICB8IChTZXF1ZW5jZTIsIFNlcXVlbmNlMihfLCBjKSlcbiAgfCAoTGV0MSwgTGV0MShfLCBjLCBfKSlcbiAgfCAoTGV0MiwgTGV0MihfLCBfLCBjKSlcbiAgfCAoRnVuLCBGdW4oXywgXywgYywgXykpXG4gIHwgKEZpeEYsIEZpeEYoXywgXywgYykpXG4gIHwgKEFwMSwgQXAxKGMsIF8pKVxuICB8IChBcDIsIEFwMihfLCBjKSlcbiAgfCAoQmluQm9vbE9wMSwgQmluQm9vbE9wMShfLCBjLCBfKSlcbiAgfCAoQmluQm9vbE9wMiwgQmluQm9vbE9wMihfLCBfLCBjKSlcbiAgfCAoQmluSW50T3AxLCBCaW5JbnRPcDEoXywgYywgXykpXG4gIHwgKEJpbkludE9wMiwgQmluSW50T3AyKF8sIF8sIGMpKVxuICB8IChCaW5GbG9hdE9wMSwgQmluRmxvYXRPcDEoXywgYywgXykpXG4gIHwgKEJpbkZsb2F0T3AyLCBCaW5GbG9hdE9wMihfLCBfLCBjKSlcbiAgfCAoQmluU3RyaW5nT3AxLCBCaW5TdHJpbmdPcDEoXywgYywgXykpXG4gIHwgKEJpblN0cmluZ09wMiwgQmluU3RyaW5nT3AyKF8sIF8sIGMpKVxuICB8IChJZlRoZW5FbHNlMSwgSWZUaGVuRWxzZTEoXywgYywgXywgXykpXG4gIHwgKElmVGhlbkVsc2UyLCBJZlRoZW5FbHNlMihfLCBfLCBjLCBfKSlcbiAgfCAoSWZUaGVuRWxzZTMsIElmVGhlbkVsc2UzKF8sIF8sIF8sIGMpKVxuICB8IChDb25zMSwgQ29uczEoYywgXykpXG4gIHwgKENvbnMyLCBDb25zMihfLCBjKSlcbiAgfCAoTGlzdENvbmNhdDEsIExpc3RDb25jYXQxKGMsIF8pKVxuICB8IChMaXN0Q29uY2F0MiwgTGlzdENvbmNhdDIoXywgYykpXG4gIHwgKFRlc3QsIFRlc3QoXywgYykpXG4gIHwgKFByaiwgUHJqKGMsIF8pKSA9PiBTb21lKGMpXG4gIHwgKExpc3RMaXQobiksIExpc3RMaXQoXywgXywgXywgYywgKGxkLCBfKSkpXG4gIHwgKFR1cGxlKG4pLCBUdXBsZShjLCAobGQsIF8pKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgobGQpID09IG4pIHtcbiAgICAgIFNvbWUoYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE5vbmU7XG4gICAgfVxuICB8IChDb25zaXN0ZW50Q2FzZVJ1bGUobiksIENvbnNpc3RlbnRDYXNlUnVsZShfLCBfLCBjLCAobGQsIF8pLCBfKSlcbiAgfCAoXG4gICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlc1J1bGUobiksXG4gICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlc1J1bGUoXywgXywgXywgXywgYywgKGxkLCBfKSwgXyksXG4gICAgKSA9PlxuICAgIGlmIChMaXN0Lmxlbmd0aChsZCkgPT0gbikge1xuICAgICAgU29tZShjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgTm9uZTtcbiAgICB9XG4gIHwgKEluY29uc2lzdGVudEJyYW5jaGVzLCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfLCBfLCBDYXNlKHNjcnV0LCBfLCBfKSkpID0+XG4gICAgU29tZShzY3J1dClcbiAgfCAoQ29uc2lzdGVudENhc2UsIENvbnNpc3RlbnRDYXNlKENhc2Uoc2NydXQsIF8sIF8pKSkgPT4gU29tZShzY3J1dClcbiAgfCAoQ2FzdCwgQ2FzdChjLCBfLCBfKSlcbiAgfCAoRmFpbGVkQ2FzdENhc3QsIEZhaWxlZENhc3QoQ2FzdChjLCBfLCBfKSwgXywgXykpXG4gIHwgKEZhaWxlZENhc3QsIEZhaWxlZENhc3QoYywgXywgXykpID0+IFNvbWUoYylcbiAgfCAoQXAxLCBBcDIoXywgXykpXG4gIHwgKEFwMiwgQXAxKF8sIF8pKVxuICB8IChJZlRoZW5FbHNlMSwgSWZUaGVuRWxzZTIoXykpXG4gIHwgKElmVGhlbkVsc2UxLCBJZlRoZW5FbHNlMyhfKSlcbiAgfCAoSWZUaGVuRWxzZTIsIElmVGhlbkVsc2UxKF8pKVxuICB8IChJZlRoZW5FbHNlMiwgSWZUaGVuRWxzZTMoXykpXG4gIHwgKElmVGhlbkVsc2UzLCBJZlRoZW5FbHNlMShfKSlcbiAgfCAoSWZUaGVuRWxzZTMsIElmVGhlbkVsc2UyKF8pKVxuICB8IChMZXQxLCBMZXQyKF8pKVxuICB8IChMZXQyLCBMZXQxKF8pKVxuICB8IChCaW5Cb29sT3AxLCBCaW5Cb29sT3AyKF8pKVxuICB8IChCaW5Cb29sT3AyLCBCaW5Cb29sT3AxKF8pKVxuICB8IChCaW5JbnRPcDEsIEJpbkludE9wMihfKSlcbiAgfCAoQmluSW50T3AyLCBCaW5JbnRPcDEoXykpXG4gIHwgKEJpbkZsb2F0T3AxLCBCaW5GbG9hdE9wMihfKSlcbiAgfCAoQmluRmxvYXRPcDIsIEJpbkZsb2F0T3AxKF8pKVxuICB8IChCaW5TdHJpbmdPcDEsIEJpblN0cmluZ09wMihfKSlcbiAgfCAoQmluU3RyaW5nT3AyLCBCaW5TdHJpbmdPcDEoXykpXG4gIHwgKENvbnMxLCBDb25zMihfKSlcbiAgfCAoQ29uczIsIENvbnMxKF8pKVxuICB8IChTZXF1ZW5jZTEsIFNlcXVlbmNlMihfKSlcbiAgfCAoU2VxdWVuY2UyLCBTZXF1ZW5jZTEoXykpXG4gIHwgKExpc3RDb25jYXQxLCBMaXN0Q29uY2F0MihfKSlcbiAgfCAoTGlzdENvbmNhdDIsIExpc3RDb25jYXQxKF8pKSA9PiBOb25lXG4gIHwgKEZpbHRlclBhdHRlcm4sIF8pID0+IE5vbmVcbiAgfCAoRmlsdGVyLCBfKSA9PiBTb21lKGN0eClcbiAgfCAodGFnLCBGaWx0ZXIoXywgYykpID0+IHVud3JhcChjLCB0YWcpXG4gIHwgKENsb3N1cmUsIF8pID0+IFNvbWUoY3R4KVxuICB8ICh0YWcsIENsb3N1cmUoXywgYykpID0+IHVud3JhcChjLCB0YWcpXG4gIHwgKENhc3QsIF8pID0+IFNvbWUoY3R4KVxuICB8ICh0YWcsIENhc3QoYywgXywgXykpID0+IHVud3JhcChjLCB0YWcpXG4gIHwgKF8sIE1hcmspID0+IE5vbmVcbiAgfCAoXywgXykgPT5cbiAgICAvLyBwcmludF9lbmRsaW5lKFxuICAgIC8vICAgU2V4cGxpYi5TZXhwLnRvX3N0cmluZ19odW0oc2V4cF9vZl9jbHModGFnKSlcbiAgICAvLyAgICsrIFwiIGRvZXMgbm90IG1hdGNoIHdpdGggXCJcbiAgICAvLyAgICsrIFNleHBsaWIuU2V4cC50b19zdHJpbmdfaHVtKHNleHBfb2ZfdChjdHgpKSxcbiAgICAvLyApO1xuICAgIE5vbmVcbiAgLy8gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKFN0ZXBEb2VzTm90TWF0Y2gpKTtcbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbnR5cGUgbWF0Y2hfcmVzdWx0ID1cbiAgfCBNYXRjaGVzKEVudmlyb25tZW50LnQpXG4gIHwgRG9lc05vdE1hdGNoXG4gIHwgSW5kZXRNYXRjaDtcblxubGV0IGNvbnN0X3Vua25vd246ICdhID0+IFR5cC50ID0gXyA9PiBVbmtub3duKEludGVybmFsKTtcblxubGV0IGNhc3Rfc3VtX21hcHMgPVxuICAgIChzbTE6IFR5cC5zdW1fbWFwLCBzbTI6IFR5cC5zdW1fbWFwKVxuICAgIDogb3B0aW9uKENvbnN0cnVjdG9yTWFwLnQoKFR5cC50LCBUeXAudCkpKSA9PiB7XG4gIGxldCAoY3RyczEsIHR5czEpID0gc20xIHw+IENvbnN0cnVjdG9yTWFwLmJpbmRpbmdzIHw+IExpc3Quc3BsaXQ7XG4gIGxldCAoY3RyczIsIHR5czIpID0gc20yIHw+IENvbnN0cnVjdG9yTWFwLmJpbmRpbmdzIHw+IExpc3Quc3BsaXQ7XG4gIGlmIChjdHJzMSA9PSBjdHJzMikge1xuICAgIGxldCB0eXMxID0gdHlzMSB8PiBMaXN0LmZpbHRlcihPcHRpb24uaXNfc29tZSkgfD4gTGlzdC5tYXAoT3B0aW9uLmdldCk7XG4gICAgbGV0IHR5czIgPSB0eXMyIHw+IExpc3QuZmlsdGVyKE9wdGlvbi5pc19zb21lKSB8PiBMaXN0Lm1hcChPcHRpb24uZ2V0KTtcbiAgICBpZiAoTGlzdC5sZW5ndGgodHlzMSkgPT0gTGlzdC5sZW5ndGgodHlzMikpIHtcbiAgICAgIFNvbWUoXG4gICAgICAgIExpc3QuKGNvbWJpbmUodHlzMSwgdHlzMikgfD4gY29tYmluZShjdHJzMSkpXG4gICAgICAgIHw+IENvbnN0cnVjdG9yTWFwLm9mX2xpc3QsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBOb25lO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcbn07XG5cbmxldCByZWMgbWF0Y2hlcyA9IChkcDogREhQYXQudCwgZDogREhFeHAudCk6IG1hdGNoX3Jlc3VsdCA9PlxuICBzd2l0Y2ggKGRwLCBkKSB7XG4gIHwgKF8sIEJvdW5kVmFyKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCAoRW1wdHlIb2xlKF8pLCBfKVxuICB8IChOb25FbXB0eUhvbGUoXyksIF8pID0+IEluZGV0TWF0Y2hcbiAgfCAoV2lsZCwgXykgPT4gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSlcbiAgfCAoRXhwYW5kaW5nS2V5d29yZChfKSwgXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgKEludmFsaWRUZXh0KF8pLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgKEJhZENvbnN0cnVjdG9yKF8pLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgKFZhcih4KSwgXykgPT5cbiAgICBsZXQgZW52ID0gRW52aXJvbm1lbnQuZXh0ZW5kKEVudmlyb25tZW50LmVtcHR5LCAoeCwgZCkpO1xuICAgIE1hdGNoZXMoZW52KTtcbiAgfCAoXywgRW1wdHlIb2xlKF8pKSA9PiBJbmRldE1hdGNoXG4gIHwgKF8sIE5vbkVtcHR5SG9sZShfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBGYWlsZWRDYXN0KF8pKSA9PiBJbmRldE1hdGNoXG4gIHwgKF8sIEludmFsaWRPcGVyYXRpb24oXykpID0+IEluZGV0TWF0Y2hcbiAgfCAoXywgRnJlZVZhcihfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBJbnZhbGlkVGV4dChfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBMZXQoXykpID0+IEluZGV0TWF0Y2hcbiAgfCAoXywgRml4RihfKSkgPT4gRG9lc05vdE1hdGNoXG4gIHwgKF8sIEZ1bihfKSkgPT4gRG9lc05vdE1hdGNoXG4gIHwgKF8sIEJpbkJvb2xPcChfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBCaW5JbnRPcChfKSkgPT4gSW5kZXRNYXRjaFxuICB8IChfLCBCaW5GbG9hdE9wKF8pKSA9PiBJbmRldE1hdGNoXG4gIHwgKF8sIENvbnNpc3RlbnRDYXNlKENhc2UoXykpKSA9PiBJbmRldE1hdGNoXG5cbiAgLyogQ2xvc3VyZSBzaG91bGQgbWF0Y2ggbGlrZSB1bmRlcmx5aW5nIGV4cHJlc3Npb24uICovXG4gIHwgKF8sIENsb3N1cmUoXywgZCcpKVxuICB8IChfLCBGaWx0ZXIoXywgZCcpKSA9PiBtYXRjaGVzKGRwLCBkJylcblxuICB8IChCb29sTGl0KGIxKSwgQm9vbExpdChiMikpID0+XG4gICAgaWYgKGIxID09IGIyKSB7XG4gICAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgRG9lc05vdE1hdGNoO1xuICAgIH1cbiAgfCAoQm9vbExpdChfKSwgQ2FzdChkLCBCb29sLCBVbmtub3duKF8pKSkgPT4gbWF0Y2hlcyhkcCwgZClcbiAgfCAoQm9vbExpdChfKSwgQ2FzdChkLCBVbmtub3duKF8pLCBCb29sKSkgPT4gbWF0Y2hlcyhkcCwgZClcbiAgfCAoQm9vbExpdChfKSwgXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgKEludExpdChuMSksIEludExpdChuMikpID0+XG4gICAgaWYgKG4xID09IG4yKSB7XG4gICAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgRG9lc05vdE1hdGNoO1xuICAgIH1cbiAgfCAoSW50TGl0KF8pLCBDYXN0KGQsIEludCwgVW5rbm93bihfKSkpID0+IG1hdGNoZXMoZHAsIGQpXG4gIHwgKEludExpdChfKSwgQ2FzdChkLCBVbmtub3duKF8pLCBJbnQpKSA9PiBtYXRjaGVzKGRwLCBkKVxuICB8IChJbnRMaXQoXyksIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IChGbG9hdExpdChuMSksIEZsb2F0TGl0KG4yKSkgPT5cbiAgICBpZiAobjEgPT0gbjIpIHtcbiAgICAgIE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBEb2VzTm90TWF0Y2g7XG4gICAgfVxuICB8IChGbG9hdExpdChfKSwgQ2FzdChkLCBGbG9hdCwgVW5rbm93bihfKSkpID0+IG1hdGNoZXMoZHAsIGQpXG4gIHwgKEZsb2F0TGl0KF8pLCBDYXN0KGQsIFVua25vd24oXyksIEZsb2F0KSkgPT4gbWF0Y2hlcyhkcCwgZClcbiAgfCAoRmxvYXRMaXQoXyksIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IChTdHJpbmdMaXQoczEpLCBTdHJpbmdMaXQoczIpKSA9PlxuICAgIGlmIChzMSA9PSBzMikge1xuICAgICAgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERvZXNOb3RNYXRjaDtcbiAgICB9XG4gIHwgKFN0cmluZ0xpdChfKSwgQ2FzdChkLCBTdHJpbmcsIFVua25vd24oXykpKSA9PiBtYXRjaGVzKGRwLCBkKVxuICB8IChTdHJpbmdMaXQoXyksIENhc3QoZCwgVW5rbm93bihfKSwgU3RyaW5nKSkgPT4gbWF0Y2hlcyhkcCwgZClcbiAgfCAoU3RyaW5nTGl0KF8pLCBfKSA9PiBEb2VzTm90TWF0Y2hcblxuICB8IChBcChkcDEsIGRwMiksIEFwKGQxLCBkMikpID0+XG4gICAgc3dpdGNoIChtYXRjaGVzKGRwMSwgZDEpKSB7XG4gICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgfCBJbmRldE1hdGNoID0+XG4gICAgICBzd2l0Y2ggKG1hdGNoZXMoZHAyLCBkMikpIHtcbiAgICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBJbmRldE1hdGNoXG4gICAgICB8IE1hdGNoZXMoXykgPT4gSW5kZXRNYXRjaFxuICAgICAgfVxuICAgIHwgTWF0Y2hlcyhlbnYxKSA9PlxuICAgICAgc3dpdGNoIChtYXRjaGVzKGRwMiwgZDIpKSB7XG4gICAgICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gICAgICB8IE1hdGNoZXMoZW52MikgPT4gTWF0Y2hlcyhFbnZpcm9ubWVudC51bmlvbihlbnYxLCBlbnYyKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgKFxuICAgICAgQXAoQ29uc3RydWN0b3IoY3RyKSwgZHBfb3B0KSxcbiAgICAgIENhc3QoZCwgU3VtKHNtMSkgfCBSZWMoXywgU3VtKHNtMSkpLCBTdW0oc20yKSB8IFJlYyhfLCBTdW0oc20yKSkpLFxuICAgICkgPT5cbiAgICBzd2l0Y2ggKGNhc3Rfc3VtX21hcHMoc20xLCBzbTIpKSB7XG4gICAgfCBTb21lKGNhc3RtYXApID0+IG1hdGNoZXNfY2FzdF9TdW0oY3RyLCBTb21lKGRwX29wdCksIGQsIFtjYXN0bWFwXSlcbiAgICB8IE5vbmUgPT4gRG9lc05vdE1hdGNoXG4gICAgfVxuXG4gIHwgKEFwKF8sIF8pLCBDYXN0KGQsIFN1bShfKSB8IFJlYyhfLCBTdW0oXykpLCBVbmtub3duKF8pKSlcbiAgfCAoQXAoXywgXyksIENhc3QoZCwgVW5rbm93bihfKSwgU3VtKF8pIHwgUmVjKF8sIFN1bShfKSkpKSA9PlxuICAgIG1hdGNoZXMoZHAsIGQpXG4gIHwgKEFwKF8sIF8pLCBfKSA9PiBEb2VzTm90TWF0Y2hcblxuICB8IChDb25zdHJ1Y3RvcihjdHIpLCBDb25zdHJ1Y3RvcihjdHInKSkgPT5cbiAgICBjdHIgPT0gY3RyJyA/IE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpIDogRG9lc05vdE1hdGNoXG4gIHwgKFxuICAgICAgQ29uc3RydWN0b3IoY3RyKSxcbiAgICAgIENhc3QoZCwgU3VtKHNtMSkgfCBSZWMoXywgU3VtKHNtMSkpLCBTdW0oc20yKSB8IFJlYyhfLCBTdW0oc20yKSkpLFxuICAgICkgPT5cbiAgICBzd2l0Y2ggKGNhc3Rfc3VtX21hcHMoc20xLCBzbTIpKSB7XG4gICAgfCBTb21lKGNhc3RtYXApID0+IG1hdGNoZXNfY2FzdF9TdW0oY3RyLCBOb25lLCBkLCBbY2FzdG1hcF0pXG4gICAgfCBOb25lID0+IERvZXNOb3RNYXRjaFxuICAgIH1cbiAgfCAoQ29uc3RydWN0b3IoXyksIENhc3QoZCwgU3VtKF8pIHwgUmVjKF8sIFN1bShfKSksIFVua25vd24oXykpKSA9PlxuICAgIG1hdGNoZXMoZHAsIGQpXG4gIHwgKENvbnN0cnVjdG9yKF8pLCBDYXN0KGQsIFVua25vd24oXyksIFN1bShfKSB8IFJlYyhfLCBTdW0oXykpKSkgPT5cbiAgICBtYXRjaGVzKGRwLCBkKVxuICB8IChDb25zdHJ1Y3RvcihfKSwgXykgPT4gRG9lc05vdE1hdGNoXG5cbiAgfCAoVHVwbGUoZHBzKSwgVHVwbGUoZHMpKSA9PlxuICAgIGlmIChMaXN0Lmxlbmd0aChkcHMpICE9IExpc3QubGVuZ3RoKGRzKSkge1xuICAgICAgRG9lc05vdE1hdGNoO1xuICAgIH0gZWxzZSB7XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgIChyZXN1bHQsIGRwLCBkKSA9PlxuICAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgICAgICB8IE1hdGNoZXMoZW52KSA9PlxuICAgICAgICAgICAgc3dpdGNoIChtYXRjaGVzKGRwLCBkKSkge1xuICAgICAgICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICAgICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRNYXRjaFxuICAgICAgICAgICAgfCBNYXRjaGVzKGVudicpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24oZW52LCBlbnYnKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSxcbiAgICAgICAgZHBzLFxuICAgICAgICBkcyxcbiAgICAgICk7XG4gICAgfVxuICB8IChUdXBsZShkcHMpLCBDYXN0KGQsIFByb2QodHlzKSwgUHJvZCh0eXMnKSkpID0+XG4gICAgYXNzZXJ0KExpc3QubGVuZ3RoKHR5cykgPT0gTGlzdC5sZW5ndGgodHlzJykpO1xuICAgIG1hdGNoZXNfY2FzdF9UdXBsZShcbiAgICAgIGRwcyxcbiAgICAgIGQsXG4gICAgICBMaXN0Lm1hcChwID0+IFtwXSwgTGlzdC5jb21iaW5lKHR5cywgdHlzJykpLFxuICAgICk7XG4gIHwgKFR1cGxlKGRwcyksIENhc3QoZCwgUHJvZCh0eXMpLCBVbmtub3duKF8pKSkgPT5cbiAgICBtYXRjaGVzX2Nhc3RfVHVwbGUoXG4gICAgICBkcHMsXG4gICAgICBkLFxuICAgICAgTGlzdC5tYXAoXG4gICAgICAgIHAgPT4gW3BdLFxuICAgICAgICBMaXN0LmNvbWJpbmUodHlzLCBMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzKSwgY29uc3RfdW5rbm93bikpLFxuICAgICAgKSxcbiAgICApXG4gIHwgKFR1cGxlKGRwcyksIENhc3QoZCwgVW5rbm93bihfKSwgUHJvZCh0eXMnKSkpID0+XG4gICAgbWF0Y2hlc19jYXN0X1R1cGxlKFxuICAgICAgZHBzLFxuICAgICAgZCxcbiAgICAgIExpc3QubWFwKFxuICAgICAgICBwID0+IFtwXSxcbiAgICAgICAgTGlzdC5jb21iaW5lKExpc3QuaW5pdChMaXN0Lmxlbmd0aCh0eXMnKSwgY29uc3RfdW5rbm93biksIHR5cycpLFxuICAgICAgKSxcbiAgICApXG4gIHwgKFR1cGxlKF8pLCBDYXN0KF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCAoVHVwbGUoXyksIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IChDb25zKF8pIHwgTGlzdExpdChfKSwgQ2FzdChkLCBMaXN0KHR5MSksIExpc3QodHkyKSkpID0+XG4gICAgbWF0Y2hlc19jYXN0X0NvbnMoZHAsIGQsIFsodHkxLCB0eTIpXSlcbiAgfCAoQ29ucyhfKSB8IExpc3RMaXQoXyksIENhc3QoZCwgVW5rbm93bihfKSwgTGlzdCh0eTIpKSkgPT5cbiAgICBtYXRjaGVzX2Nhc3RfQ29ucyhkcCwgZCwgWyhVbmtub3duKEludGVybmFsKSwgdHkyKV0pXG4gIHwgKENvbnMoXykgfCBMaXN0TGl0KF8pLCBDYXN0KGQsIExpc3QodHkxKSwgVW5rbm93bihfKSkpID0+XG4gICAgbWF0Y2hlc19jYXN0X0NvbnMoZHAsIGQsIFsodHkxLCBVbmtub3duKEludGVybmFsKSldKVxuICB8IChDb25zKF8sIF8pLCBDb25zKF8sIF8pKVxuICB8IChMaXN0TGl0KF8sIF8pLCBDb25zKF8sIF8pKVxuICB8IChDb25zKF8sIF8pLCBMaXN0TGl0KF8pKVxuICB8IChMaXN0TGl0KF8pLCBMaXN0TGl0KF8pKSA9PiBtYXRjaGVzX2Nhc3RfQ29ucyhkcCwgZCwgW10pXG4gIHwgKENvbnMoXykgfCBMaXN0TGl0KF8pLCBfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfVxuYW5kIG1hdGNoZXNfY2FzdF9TdW0gPVxuICAgIChcbiAgICAgIGN0cjogc3RyaW5nLFxuICAgICAgZHA6IG9wdGlvbihESFBhdC50KSxcbiAgICAgIGQ6IERIRXhwLnQsXG4gICAgICBjYXN0bWFwczogbGlzdChDb25zdHJ1Y3Rvck1hcC50KChUeXAudCwgVHlwLnQpKSksXG4gICAgKVxuICAgIDogbWF0Y2hfcmVzdWx0ID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IENvbnN0cnVjdG9yKGN0cicpID0+XG4gICAgc3dpdGNoIChcbiAgICAgIGRwLFxuICAgICAgY2FzdG1hcHMgfD4gTGlzdC5tYXAoQ29uc3RydWN0b3JNYXAuZmluZF9vcHQoY3RyJykpIHw+IE9wdFV0aWwuc2VxdWVuY2UsXG4gICAgKSB7XG4gICAgfCAoTm9uZSwgU29tZShfKSkgPT5cbiAgICAgIGN0ciA9PSBjdHInID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2hcbiAgICB8IF8gPT4gRG9lc05vdE1hdGNoXG4gICAgfVxuICB8IEFwKENvbnN0cnVjdG9yKGN0cicpLCBkJykgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgZHAsXG4gICAgICBjYXN0bWFwcyB8PiBMaXN0Lm1hcChDb25zdHJ1Y3Rvck1hcC5maW5kX29wdChjdHInKSkgfD4gT3B0VXRpbC5zZXF1ZW5jZSxcbiAgICApIHtcbiAgICB8IChTb21lKGRwKSwgU29tZShzaWRlX2Nhc3RzKSkgPT5cbiAgICAgIG1hdGNoZXMoZHAsIERIRXhwLmFwcGx5X2Nhc3RzKGQnLCBzaWRlX2Nhc3RzKSlcbiAgICB8IF8gPT4gRG9lc05vdE1hdGNoXG4gICAgfVxuICB8IENhc3QoZCcsIFN1bShzbTEpIHwgUmVjKF8sIFN1bShzbTEpKSwgU3VtKHNtMikgfCBSZWMoXywgU3VtKHNtMikpKSA9PlxuICAgIHN3aXRjaCAoY2FzdF9zdW1fbWFwcyhzbTEsIHNtMikpIHtcbiAgICB8IFNvbWUoY2FzdG1hcCkgPT4gbWF0Y2hlc19jYXN0X1N1bShjdHIsIGRwLCBkJywgW2Nhc3RtYXAsIC4uLmNhc3RtYXBzXSlcbiAgICB8IE5vbmUgPT4gRG9lc05vdE1hdGNoXG4gICAgfVxuICB8IENhc3QoZCcsIFN1bShfKSB8IFJlYyhfLCBTdW0oXykpLCBVbmtub3duKF8pKVxuICB8IENhc3QoZCcsIFVua25vd24oXyksIFN1bShfKSB8IFJlYyhfLCBTdW0oXykpKSA9PlxuICAgIG1hdGNoZXNfY2FzdF9TdW0oY3RyLCBkcCwgZCcsIGNhc3RtYXBzKVxuICB8IEZyZWVWYXIoXylcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKF8pXG4gIHwgSW52YWxpZFRleHQoXylcbiAgfCBMZXQoXylcbiAgfCBBcChfKVxuICB8IEFwQnVpbHRpbihfKVxuICB8IEJpbkJvb2xPcChfKVxuICB8IEJpbkludE9wKF8pXG4gIHwgQmluRmxvYXRPcChfKVxuICB8IEJpblN0cmluZ09wKF8pXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXylcbiAgfCBFbXB0eUhvbGUoXylcbiAgfCBOb25FbXB0eUhvbGUoXylcbiAgfCBGYWlsZWRDYXN0KF8sIF8sIF8pXG4gIHwgVGVzdChfKVxuICB8IEludmFsaWRPcGVyYXRpb24oXylcbiAgfCBDb25zaXN0ZW50Q2FzZShfKVxuICB8IFByaihfKVxuICB8IElmVGhlbkVsc2UoXylcbiAgfCBCdWlsdGluRnVuKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBDYXN0KF8pXG4gIHwgQm91bmRWYXIoXylcbiAgfCBGaXhGKF8pXG4gIHwgRnVuKF8pXG4gIHwgQm9vbExpdChfKVxuICB8IEludExpdChfKVxuICB8IEZsb2F0TGl0KF8pXG4gIHwgU3RyaW5nTGl0KF8pXG4gIHwgTGlzdExpdChfKVxuICB8IFR1cGxlKF8pXG4gIHwgU2VxdWVuY2UoXywgXylcbiAgfCBDbG9zdXJlKF8pXG4gIHwgRmlsdGVyKF8pXG4gIHwgQ29ucyhfKVxuICB8IExpc3RDb25jYXQoXykgPT4gRG9lc05vdE1hdGNoXG4gIH1cbmFuZCBtYXRjaGVzX2Nhc3RfVHVwbGUgPVxuICAgIChcbiAgICAgIGRwczogbGlzdChESFBhdC50KSxcbiAgICAgIGQ6IERIRXhwLnQsXG4gICAgICBlbHRfY2FzdHM6IGxpc3QobGlzdCgoVHlwLnQsIFR5cC50KSkpLFxuICAgIClcbiAgICA6IG1hdGNoX3Jlc3VsdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBUdXBsZShkcykgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgoZHBzKSAhPSBMaXN0Lmxlbmd0aChkcykpIHtcbiAgICAgIERvZXNOb3RNYXRjaDtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KExpc3QubGVuZ3RoKExpc3QuY29tYmluZShkcHMsIGRzKSkgPT0gTGlzdC5sZW5ndGgoZWx0X2Nhc3RzKSk7XG4gICAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAgICgoKGRwLCBkKSwgY2FzdHMpLCByZXN1bHQpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgICAgICAgIHwgRG9lc05vdE1hdGNoXG4gICAgICAgICAgfCBJbmRldE1hdGNoID0+IHJlc3VsdFxuICAgICAgICAgIHwgTWF0Y2hlcyhlbnYpID0+XG4gICAgICAgICAgICBzd2l0Y2ggKG1hdGNoZXMoZHAsIERIRXhwLmFwcGx5X2Nhc3RzKGQsIGNhc3RzKSkpIHtcbiAgICAgICAgICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgICAgICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgICAgICAgIHwgTWF0Y2hlcyhlbnYnKSA9PiBNYXRjaGVzKEVudmlyb25tZW50LnVuaW9uKGVudiwgZW52JykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBMaXN0LmNvbWJpbmUoTGlzdC5jb21iaW5lKGRwcywgZHMpLCBlbHRfY2FzdHMpLFxuICAgICAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSxcbiAgICAgICk7XG4gICAgfVxuICB8IENhc3QoZCcsIFByb2QodHlzKSwgUHJvZCh0eXMnKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgoZHBzKSAhPSBMaXN0Lmxlbmd0aCh0eXMpKSB7XG4gICAgICBEb2VzTm90TWF0Y2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChMaXN0Lmxlbmd0aCh0eXMpID09IExpc3QubGVuZ3RoKHR5cycpKTtcbiAgICAgIG1hdGNoZXNfY2FzdF9UdXBsZShcbiAgICAgICAgZHBzLFxuICAgICAgICBkJyxcbiAgICAgICAgTGlzdC5tYXAyKExpc3QuY29ucywgTGlzdC5jb21iaW5lKHR5cywgdHlzJyksIGVsdF9jYXN0cyksXG4gICAgICApO1xuICAgIH1cbiAgfCBDYXN0KGQnLCBQcm9kKHR5cyksIFVua25vd24oXykpID0+XG4gICAgbGV0IHR5cycgPSBMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzKSwgY29uc3RfdW5rbm93bik7XG4gICAgbWF0Y2hlc19jYXN0X1R1cGxlKFxuICAgICAgZHBzLFxuICAgICAgZCcsXG4gICAgICBMaXN0Lm1hcDIoTGlzdC5jb25zLCBMaXN0LmNvbWJpbmUodHlzLCB0eXMnKSwgZWx0X2Nhc3RzKSxcbiAgICApO1xuICB8IENhc3QoZCcsIFVua25vd24oXyksIFByb2QodHlzJykpID0+XG4gICAgbGV0IHR5cyA9IExpc3QuaW5pdChMaXN0Lmxlbmd0aCh0eXMnKSwgY29uc3RfdW5rbm93bik7XG4gICAgbWF0Y2hlc19jYXN0X1R1cGxlKFxuICAgICAgZHBzLFxuICAgICAgZCcsXG4gICAgICBMaXN0Lm1hcDIoTGlzdC5jb25zLCBMaXN0LmNvbWJpbmUodHlzLCB0eXMnKSwgZWx0X2Nhc3RzKSxcbiAgICApO1xuICB8IENhc3QoXywgXywgXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgQm91bmRWYXIoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgRnJlZVZhcihfKSA9PiBJbmRldE1hdGNoXG4gIHwgSW52YWxpZFRleHQoXykgPT4gSW5kZXRNYXRjaFxuICB8IEV4cGFuZGluZ0tleXdvcmQoXykgPT4gSW5kZXRNYXRjaFxuICB8IExldChfLCBfLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgRml4RihfLCBfLCBfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBGdW4oXywgXywgXywgXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgQ2xvc3VyZShfLCBGdW4oXykpID0+IERvZXNOb3RNYXRjaFxuICB8IENsb3N1cmUoXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEZpbHRlcihfLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgQXAoXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEFwQnVpbHRpbihfLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgQmluQm9vbE9wKF8sIF8sIF8pXG4gIHwgQmluSW50T3AoXywgXywgXylcbiAgfCBCaW5GbG9hdE9wKF8sIF8sIF8pXG4gIHwgQmluU3RyaW5nT3AoXylcbiAgfCBCb29sTGl0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEludExpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBTZXF1ZW5jZShfKVxuICB8IEJ1aWx0aW5GdW4oXylcbiAgfCBUZXN0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEZsb2F0TGl0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IFN0cmluZ0xpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBMaXN0TGl0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IENvbnMoXywgXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgTGlzdENvbmNhdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBQcmooXykgPT4gSW5kZXRNYXRjaFxuICB8IENvbnN0cnVjdG9yKF8pID0+IERvZXNOb3RNYXRjaFxuICB8IENvbnNpc3RlbnRDYXNlKF8pXG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXykgPT4gSW5kZXRNYXRjaFxuICB8IEVtcHR5SG9sZShfKSA9PiBJbmRldE1hdGNoXG4gIHwgTm9uRW1wdHlIb2xlKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBGYWlsZWRDYXN0KF8sIF8sIF8pID0+IEluZGV0TWF0Y2hcbiAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBJZlRoZW5FbHNlKF8pID0+IEluZGV0TWF0Y2hcbiAgfVxuYW5kIG1hdGNoZXNfY2FzdF9Db25zID1cbiAgICAoZHA6IERIUGF0LnQsIGQ6IERIRXhwLnQsIGVsdF9jYXN0czogbGlzdCgoVHlwLnQsIFR5cC50KSkpOiBtYXRjaF9yZXN1bHQgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgTGlzdExpdChfLCBfLCBfLCBbXSkgPT5cbiAgICBzd2l0Y2ggKGRwKSB7XG4gICAgfCBMaXN0TGl0KF8sIFtdKSA9PiBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KVxuICAgIHwgXyA9PiBEb2VzTm90TWF0Y2hcbiAgICB9XG4gIHwgTGlzdExpdCh1LCBpLCB0eSwgW2RoZCwgLi4uZHRsXSBhcyBkcykgPT5cbiAgICBzd2l0Y2ggKGRwKSB7XG4gICAgfCBDb25zKGRwMSwgZHAyKSA9PlxuICAgICAgc3dpdGNoIChtYXRjaGVzKGRwMSwgREhFeHAuYXBwbHlfY2FzdHMoZGhkLCBlbHRfY2FzdHMpKSkge1xuICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRNYXRjaFxuICAgICAgfCBNYXRjaGVzKGVudjEpID0+XG4gICAgICAgIGxldCBsaXN0X2Nhc3RzID1cbiAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgIChjOiAoVHlwLnQsIFR5cC50KSkgPT4ge1xuICAgICAgICAgICAgICBsZXQgKHR5MSwgdHkyKSA9IGM7XG4gICAgICAgICAgICAgIChUeXAuTGlzdCh0eTEpLCBUeXAuTGlzdCh0eTIpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbHRfY2FzdHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgbGV0IGQyID0gREhFeHAuTGlzdExpdCh1LCBpLCB0eSwgZHRsKTtcbiAgICAgICAgc3dpdGNoIChtYXRjaGVzKGRwMiwgREhFeHAuYXBwbHlfY2FzdHMoZDIsIGxpc3RfY2FzdHMpKSkge1xuICAgICAgICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgICAgfCBNYXRjaGVzKGVudjIpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24oZW52MSwgZW52MikpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfCBMaXN0TGl0KF8sIGRwcykgPT5cbiAgICAgIHN3aXRjaCAoTGlzdFV0aWwub3B0X3ppcChkcHMsIGRzKSkge1xuICAgICAgfCBOb25lID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBTb21lKGxzdCkgPT5cbiAgICAgICAgbHN0XG4gICAgICAgIHw+IExpc3QubWFwKCgoZHAsIGQpKSA9PlxuICAgICAgICAgICAgIG1hdGNoZXMoZHAsIERIRXhwLmFwcGx5X2Nhc3RzKGQsIGVsdF9jYXN0cykpXG4gICAgICAgICAgIClcbiAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgKG1hdGNoMSwgbWF0Y2gyKSA9PlxuICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaDEsIG1hdGNoMikge1xuICAgICAgICAgICAgICAgfCAoRG9lc05vdE1hdGNoLCBfKVxuICAgICAgICAgICAgICAgfCAoXywgRG9lc05vdE1hdGNoKSA9PiBEb2VzTm90TWF0Y2hcbiAgICAgICAgICAgICAgIHwgKEluZGV0TWF0Y2gsIF8pXG4gICAgICAgICAgICAgICB8IChfLCBJbmRldE1hdGNoKSA9PiBJbmRldE1hdGNoXG4gICAgICAgICAgICAgICB8IChNYXRjaGVzKGVudjEpLCBNYXRjaGVzKGVudjIpKSA9PlxuICAgICAgICAgICAgICAgICBNYXRjaGVzKEVudmlyb25tZW50LnVuaW9uKGVudjEsIGVudjIpKVxuICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSxcbiAgICAgICAgICAgKVxuICAgICAgfVxuICAgIHwgXyA9PiBmYWlsd2l0aChcImNhbGxlZCBtYXRjaGVzX2Nhc3RfQ29ucyB3aXRoIG5vbi1saXN0IHBhdHRlcm5cIilcbiAgICB9XG4gIHwgQ29ucyhkMSwgZDIpID0+XG4gICAgc3dpdGNoIChkcCkge1xuICAgIHwgQ29ucyhkcDEsIGRwMikgPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcDEsIERIRXhwLmFwcGx5X2Nhc3RzKGQxLCBlbHRfY2FzdHMpKSkge1xuICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gRG9lc05vdE1hdGNoXG4gICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRNYXRjaFxuICAgICAgfCBNYXRjaGVzKGVudjEpID0+XG4gICAgICAgIGxldCBsaXN0X2Nhc3RzID1cbiAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgIChjOiAoVHlwLnQsIFR5cC50KSkgPT4ge1xuICAgICAgICAgICAgICBsZXQgKHR5MSwgdHkyKSA9IGM7XG4gICAgICAgICAgICAgIChUeXAuTGlzdCh0eTEpLCBUeXAuTGlzdCh0eTIpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbHRfY2FzdHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgc3dpdGNoIChtYXRjaGVzKGRwMiwgREhFeHAuYXBwbHlfY2FzdHMoZDIsIGxpc3RfY2FzdHMpKSkge1xuICAgICAgICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgICAgfCBNYXRjaGVzKGVudjIpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24oZW52MSwgZW52MikpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfCBMaXN0TGl0KF8sIFtdKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IExpc3RMaXQodHksIFtkcGhkLCAuLi5kcHRsXSkgPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcGhkLCBESEV4cC5hcHBseV9jYXN0cyhkMSwgZWx0X2Nhc3RzKSkpIHtcbiAgICAgIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgIHwgTWF0Y2hlcyhlbnYxKSA9PlxuICAgICAgICBsZXQgbGlzdF9jYXN0cyA9XG4gICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAoYzogKFR5cC50LCBUeXAudCkpID0+IHtcbiAgICAgICAgICAgICAgbGV0ICh0eTEsIHR5MikgPSBjO1xuICAgICAgICAgICAgICAoVHlwLkxpc3QodHkxKSwgVHlwLkxpc3QodHkyKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWx0X2Nhc3RzLFxuICAgICAgICAgICk7XG4gICAgICAgIGxldCBkcDIgPSBESFBhdC5MaXN0TGl0KHR5LCBkcHRsKTtcbiAgICAgICAgc3dpdGNoIChtYXRjaGVzKGRwMiwgREhFeHAuYXBwbHlfY2FzdHMoZDIsIGxpc3RfY2FzdHMpKSkge1xuICAgICAgICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0TWF0Y2hcbiAgICAgICAgfCBNYXRjaGVzKGVudjIpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24oZW52MSwgZW52MikpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfCBfID0+IGZhaWx3aXRoKFwiY2FsbGVkIG1hdGNoZXNfY2FzdF9Db25zIHdpdGggbm9uLWxpc3QgcGF0dGVyblwiKVxuICAgIH1cbiAgfCBDYXN0KGQnLCBMaXN0KHR5MSksIExpc3QodHkyKSkgPT5cbiAgICBtYXRjaGVzX2Nhc3RfQ29ucyhkcCwgZCcsIFsodHkxLCB0eTIpLCAuLi5lbHRfY2FzdHNdKVxuICB8IENhc3QoZCcsIExpc3QodHkxKSwgVW5rbm93bihfKSkgPT5cbiAgICBtYXRjaGVzX2Nhc3RfQ29ucyhkcCwgZCcsIFsodHkxLCBVbmtub3duKEludGVybmFsKSksIC4uLmVsdF9jYXN0c10pXG4gIHwgQ2FzdChkJywgVW5rbm93bihfKSwgTGlzdCh0eTIpKSA9PlxuICAgIG1hdGNoZXNfY2FzdF9Db25zKGRwLCBkJywgWyhVbmtub3duKEludGVybmFsKSwgdHkyKSwgLi4uZWx0X2Nhc3RzXSlcbiAgfCBDYXN0KF8sIF8sIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEJvdW5kVmFyKF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEZyZWVWYXIoXykgPT4gSW5kZXRNYXRjaFxuICB8IEludmFsaWRUZXh0KF8pID0+IEluZGV0TWF0Y2hcbiAgfCBFeHBhbmRpbmdLZXl3b3JkKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBMZXQoXywgXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEZpeEYoXywgXywgXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgRnVuKF8sIF8sIF8sIF8pID0+IERvZXNOb3RNYXRjaFxuICB8IENsb3N1cmUoXywgZCcpID0+IG1hdGNoZXNfY2FzdF9Db25zKGRwLCBkJywgZWx0X2Nhc3RzKVxuICB8IEZpbHRlcihfLCBkJykgPT4gbWF0Y2hlc19jYXN0X0NvbnMoZHAsIGQnLCBlbHRfY2FzdHMpXG4gIHwgQXAoXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEFwQnVpbHRpbihfLCBfKSA9PiBJbmRldE1hdGNoXG4gIHwgQmluQm9vbE9wKF8sIF8sIF8pXG4gIHwgQmluSW50T3AoXywgXywgXylcbiAgfCBCaW5GbG9hdE9wKF8sIF8sIF8pXG4gIHwgQmluU3RyaW5nT3AoXylcbiAgfCBMaXN0Q29uY2F0KF8pXG4gIHwgQnVpbHRpbkZ1bihfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBCb29sTGl0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IEludExpdChfKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCBTZXF1ZW5jZShfKVxuICB8IFRlc3QoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgRmxvYXRMaXQoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgU3RyaW5nTGl0KF8pID0+IERvZXNOb3RNYXRjaFxuICB8IFR1cGxlKF8pID0+IERvZXNOb3RNYXRjaFxuICB8IFByaihfKSA9PiBJbmRldE1hdGNoXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gRG9lc05vdE1hdGNoXG4gIHwgQ29uc2lzdGVudENhc2UoXylcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfKSA9PiBJbmRldE1hdGNoXG4gIHwgRW1wdHlIb2xlKF8pID0+IEluZGV0TWF0Y2hcbiAgfCBOb25FbXB0eUhvbGUoXykgPT4gSW5kZXRNYXRjaFxuICB8IEZhaWxlZENhc3QoXywgXywgXykgPT4gSW5kZXRNYXRjaFxuICB8IEludmFsaWRPcGVyYXRpb24oXykgPT4gSW5kZXRNYXRjaFxuICB8IElmVGhlbkVsc2UoXykgPT4gSW5kZXRNYXRjaFxuICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBQYXNzXG4gIHwgRmFpbFxuICB8IEluZGV0O1xuXG5sZXQgdG9fc3RyaW5nOiB0ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IFBhc3MgPT4gXCJQYXNzXCJcbiAgfCBGYWlsID0+IFwiRmFpbFwiXG4gIHwgSW5kZXQgPT4gXCJJbmRldFwiO1xuXG5sZXQgam9pbjogKHQsIHQpID0+IHQgPVxuICAoYSwgYikgPT5cbiAgICBzd2l0Y2ggKGEsIGIpIHtcbiAgICB8IChGYWlsLCBfKSA9PiBGYWlsXG4gICAgfCAoSW5kZXQsIEZhaWwpID0+IEZhaWxcbiAgICB8IChJbmRldCwgXykgPT4gSW5kZXRcbiAgICB8IChQYXNzLCB4KSA9PiB4XG4gICAgfTtcblxubGV0IGpvaW5fYWxsOiBsaXN0KHQpID0+IHQgPSBMaXN0LmZvbGRfbGVmdChqb2luLCBQYXNzKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIEZJWE1FOiBNYWtlIG1vcmUgb2J2aW91cyBuYW1lcy4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgaW5zdGFuY2VfcmVwb3J0ID0gKERIRXhwLnQsIFRlc3RTdGF0dXMudCk7XG5cbmxldCBqb2ludF9zdGF0dXM6IGxpc3QoaW5zdGFuY2VfcmVwb3J0KSA9PiBUZXN0U3RhdHVzLnQgPVxuICByZXBvcnRzID0+IFRlc3RTdGF0dXMuam9pbl9hbGwoTGlzdC5tYXAoc25kLCByZXBvcnRzKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcmVwb3J0ID0gKEtleXdvcmRJRC50LCBsaXN0KGluc3RhbmNlX3JlcG9ydCkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBsaXN0KHJlcG9ydCk7XG5sZXQgZW1wdHk6IHQgPSBbXTtcblxubGV0IGxvb2t1cCA9IExpc3QuYXNzb2Nfb3B0O1xuXG5sZXQgbG9va3VwX2FuZF9qb2luID0gKG4sIHRlc3RfbWFwKSA9PlxuICBzd2l0Y2ggKGxvb2t1cChuLCB0ZXN0X21hcCkpIHtcbiAgfCBOb25lID0+IFRlc3RTdGF0dXMuSW5kZXRcbiAgfCBTb21lKHJlcG9ydHMpID0+IGpvaW50X3N0YXR1cyhyZXBvcnRzKVxuICB9O1xuXG5sZXQgZXh0ZW5kID0gKChpZCwgcmVwb3J0KSwgdGVzdF9tYXApID0+IHtcbiAgc3dpdGNoIChMaXN0LmFzc29jX29wdChpZCwgdGVzdF9tYXApKSB7XG4gIHwgU29tZShhKSA9PiBMaXN0LnJlbW92ZV9hc3NvYyhpZCwgdGVzdF9tYXApIEAgWyhpZCwgYSBAIFtyZXBvcnRdKV1cbiAgfCBOb25lID0+IHRlc3RfbWFwIEAgWyhpZCwgW3JlcG9ydF0pXVxuICB9O1xufTtcblxubGV0IGNvdW50ID0gTGlzdC5sZW5ndGg7XG5cbmxldCBjb3VudF9zdGF0dXMgPSAoc3RhdHVzLCB0ZXN0X21hcCkgPT5cbiAgTGlzdC5maWx0ZXIoXG4gICAgKChfLCBpbnN0YW5jZXMpKSA9PiBzdGF0dXMgPT0gam9pbnRfc3RhdHVzKGluc3RhbmNlcyksXG4gICAgdGVzdF9tYXAsXG4gIClcbiAgfD4gTGlzdC5sZW5ndGg7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBQYXR0ZXJuTWF0Y2g7XG5vcGVuIERIO1xuXG4vKiBUcmFuc2l0aW9uLnJlXG5cbiAgIFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGV2YWx1YXRpb24gc2VtYW50aWNzIG9mIEhhemVsIGluIHRlcm1zIG9mIHNtYWxsIHN0ZXBcbiAgIGV2YWx1YXRpb24uIFRoZXNlIHNtYWxsIHN0ZXBzIGFyZSB3cmFwcGVkIHVwIGludG8gYSBiaWcgc3RlcCBpbiBFdmFsdWF0b3IucmUuXG5cbiAgIEknbGwgdXNlIHRoZSBTZXF1ZW5jZSBjYXNlIGFzIGFuIGV4YW1wbGU6XG5cbiAgICB8IFNlcXVlbmNlKGQxLCBkMikgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGQxID0+IFNlcXVlbmNlKGQxLCBkMikpXG4gICAgICAgIGFuZC4gXyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIDAsIGQxKTtcbiAgICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IGQyLCBraW5kOiBTZXF1ZW5jZSwgZmluYWw6IGZhbHNlfSk7XG5cblxuICAgIEVhY2ggc3RlcCBzZW1hbnRpY3Mgc3RhcnRzIHdpdGggYSBgbGV0LiAoKSA9IG90aGVyd2lzZSguLi4pYCB0aGF0IGRlZmluZXMgaG93XG4gICAgdG8gd3JhcCB0aGUgZXhwcmVzc2lvbiBiYWNrIHVwIGlmIHRoZSBzdGVwIGNvdWxkbid0IGJlIGV2YWx1YXRlZC5cblxuICAgIFRoaXMgaXMgZm9sbG93ZWQgYnkgYSBzZXJpZXMgb2YgYGFuZC4gZDEnID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgPGk+LCA8ZDE+KWBcbiAgICB3aGljaCBpbmRpY2F0ZSB0aGF0IGluIG9yZGVyIHRvIGV2YWx1YXRlIHRoZSBzdGVwLCA8ZDE+IG11c3QgYmUgZmluYWwuIChyZXFfdmFsdWVcbiAgICBpcyBhbHNvIGF2YWlsYWJsZSBpZiBpdCBuZWVkcyB0byBiZSBhIHZhbHVlKS4gTm90ZSB0aGF0IGlmIHN1Y2Nlc3NmdWwsIGQxJyB3aWxsXG4gICAgYmUgdGhlIGZ1bGx5LWV2YWx1YXRlZCB2ZXJzaW9uIG9mIGQxLiBUaGUgc3ViLWV4cHJlc3Npb25zIGFyZSBhbGwgZW51bWVyYXRlZCBieVxuICAgIHRoZSA8aT4gZmllbGQsIHNvIGk9MCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyB0aGUgZmlyc3Qgc3ViLWV4cHJlc3Npb24sIGk9MSB0aGVcbiAgICBzZWNvbmQgZXRjLlxuXG4gICAgRmluYWxseSwgd2UgaGF2ZSB0aGUgU3RlcCBjb25zdHJ1Y3QgdGhhdCBkZWZpbmVzIHRoZSBhY3R1YWwgc3RlcC4gTm90ZSBcIlN0ZXBcInNcbiAgICBzaG91bGQgYmUgdXNlZCBpZiBhbmQgb25seSBpZiB0aGV5IGNoYW5nZSB0aGUgZXhwcmVzc2lvbi4gSWYgdGhleSBkbyBub3QgY2hhbmdlXG4gICAgdGhlIGV4cHJlc3Npb24sIHVzZSBgQ29uc3RydWN0b3JgIG9yIGBJbmRldGAuXG5cbiAgICBUaGUgc3RlcCBkZWZpbmVzIGZpcnN0bHksIGEgYCgpID0+IC4uLmAgZnVuY3Rpb24gZ2l2aW5nIHRoZSByZXN1bHQgb2YgdGhlIHN0ZXAsXG4gICAgc2Vjb25kbHkgYSBga2luZGAsIHRoYXQgZGVzY3JpYmVzIHRoZSBzdGVwICh3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN0ZXBwZXIpXG5cbiAgICBMYXN0bHksIHRoZSBgdmFsdWVgIGZpZWxkIGFsbG93cyBmb3Igc29tZSBzcGVlZGluZyB1cCBvZiB0aGUgZXZhbHVhdG9yLiBJZiB5b3VcbiAgICBhcmUgdW5zdXJlLCBpdCBpcyBhbHdheXMgc2FmZSB0byBwdXQgYHZhbHVlOiBmYWxzZWAuXG5cbiAgICBgdmFsdWU6IHRydWVgIGd1YXJhbnRlZXM6XG4gICAgICAtIGlmIGFsbCByZXF1aXJlbWVudHMgYXJlIHZhbHVlcywgdGhlbiB0aGUgb3V0cHV0IHdpbGwgYmUgYSB2YWx1ZVxuICAgICAgLSBpZiBzb21lIHJlcXVpcmVtZW50cyBhcmUgaW5kZXQsIHRoZW4gdGhlIG91dHB1dCB3aWxsIGJlIGluZGV0XG5cbiAgICBBIHZhbHVlIGlzIGVpdGhlciBhIGxpdGVyYWwsIG9yIGEgZnVuY3Rpb24gd2l0aCBhIGNsb3N1cmUuIChmdW5jdGlvbnMgd2l0aG91dFxuICAgIGNsb3N1cmVzIGltbWVkaWF0ZWx5IGluc2lkZSB0aGVtIGRvIG5vdCBjb3VudCBhcyB2YWx1ZXMpLlxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwX2tpbmQgPVxuICB8IEludmFsaWRTdGVwXG4gIHwgVmFyTG9va3VwXG4gIHwgU2VxdWVuY2VcbiAgfCBMZXRCaW5kXG4gIHwgRnVuQ2xvc3VyZVxuICB8IEZpeFVud3JhcFxuICB8IFVwZGF0ZVRlc3RcbiAgfCBGdW5BcFxuICB8IENhc3RBcFxuICB8IEJ1aWx0aW5XcmFwXG4gIHwgQnVpbHRpbkFwKHN0cmluZylcbiAgfCBCaW5Cb29sT3AoVGVybUJhc2UuVUV4cC5vcF9iaW5fYm9vbClcbiAgfCBCaW5JbnRPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9pbnQpXG4gIHwgQmluRmxvYXRPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9mbG9hdClcbiAgfCBCaW5TdHJpbmdPcChUZXJtQmFzZS5VRXhwLm9wX2Jpbl9zdHJpbmcpXG4gIHwgQ29uZGl0aW9uYWwoYm9vbClcbiAgfCBQcm9qZWN0aW9uXG4gIHwgTGlzdENvbnNcbiAgfCBMaXN0Q29uY2F0XG4gIHwgQ2FzZUFwcGx5XG4gIHwgQ2FzZU5leHRcbiAgfCBDb21wbGV0ZUNsb3N1cmVcbiAgfCBDb21wbGV0ZUZpbHRlclxuICB8IENhc3RcbiAgfCBTa2lwO1xuXG5tb2R1bGUgQ2FzdEhlbHBlcnMgPSB7XG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBncm91bmRfY2FzZXMgPVxuICAgIHwgSG9sZVxuICAgIHwgR3JvdW5kXG4gICAgfCBOb3RHcm91bmRPckhvbGUoVHlwLnQpIC8qIHRoZSBhcmd1bWVudCBpcyB0aGUgY29ycmVzcG9uZGluZyBncm91bmQgdHlwZSAqLztcblxuICBsZXQgY29uc3RfdW5rbm93bjogJ2EgPT4gVHlwLnQgPSBfID0+IFVua25vd24oSW50ZXJuYWwpO1xuXG4gIGxldCBncm91bmRlZF9BcnJvdyA9XG4gICAgTm90R3JvdW5kT3JIb2xlKEFycm93KFVua25vd24oSW50ZXJuYWwpLCBVbmtub3duKEludGVybmFsKSkpO1xuICBsZXQgZ3JvdW5kZWRfUHJvZCA9IGxlbmd0aCA9PlxuICAgIE5vdEdyb3VuZE9ySG9sZShcbiAgICAgIFByb2QoTGlzdFV0aWwucmVwbGljYXRlKGxlbmd0aCwgVHlwLlVua25vd24oSW50ZXJuYWwpKSksXG4gICAgKTtcbiAgbGV0IGdyb3VuZGVkX1N1bSA9IChzbTogVHlwLnN1bV9tYXApOiBncm91bmRfY2FzZXMgPT4ge1xuICAgIGxldCBzbScgPSBzbSB8PiBDb25zdHJ1Y3Rvck1hcC5tYXAoT3B0aW9uLm1hcChjb25zdF91bmtub3duKSk7XG4gICAgTm90R3JvdW5kT3JIb2xlKFN1bShzbScpKTtcbiAgfTtcbiAgbGV0IGdyb3VuZGVkX0xpc3QgPSBOb3RHcm91bmRPckhvbGUoTGlzdChVbmtub3duKEludGVybmFsKSkpO1xuXG4gIGxldCByZWMgZ3JvdW5kX2Nhc2VzX29mID0gKHR5OiBUeXAudCk6IGdyb3VuZF9jYXNlcyA9PiB7XG4gICAgbGV0IGlzX2dyb3VuZF9hcmc6IG9wdGlvbihUeXAudCkgPT4gYm9vbCA9XG4gICAgICBmdW5cbiAgICAgIHwgTm9uZVxuICAgICAgfCBTb21lKFR5cC5Vbmtub3duKF8pKSA9PiB0cnVlXG4gICAgICB8IFNvbWUodHkpID0+IGdyb3VuZF9jYXNlc19vZih0eSkgPT0gR3JvdW5kO1xuICAgIHN3aXRjaCAodHkpIHtcbiAgICB8IFVua25vd24oXykgPT4gSG9sZVxuICAgIHwgQm9vbFxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgU3RyaW5nXG4gICAgfCBWYXIoXylcbiAgICB8IFJlYyhfKVxuICAgIHwgQXJyb3coVW5rbm93bihfKSwgVW5rbm93bihfKSlcbiAgICB8IExpc3QoVW5rbm93bihfKSkgPT4gR3JvdW5kXG4gICAgfCBQcm9kKHR5cykgPT5cbiAgICAgIGlmIChMaXN0LmZvcl9hbGwoXG4gICAgICAgICAgICBmdW5cbiAgICAgICAgICAgIHwgVHlwLlVua25vd24oXykgPT4gdHJ1ZVxuICAgICAgICAgICAgfCBfID0+IGZhbHNlLFxuICAgICAgICAgICAgdHlzLFxuICAgICAgICAgICkpIHtcbiAgICAgICAgR3JvdW5kO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlzIHw+IExpc3QubGVuZ3RoIHw+IGdyb3VuZGVkX1Byb2Q7XG4gICAgICB9XG4gICAgfCBTdW0oc20pID0+XG4gICAgICBzbSB8PiBDb25zdHJ1Y3Rvck1hcC5pc19ncm91bmQoaXNfZ3JvdW5kX2FyZylcbiAgICAgICAgPyBHcm91bmQgOiBncm91bmRlZF9TdW0oc20pXG4gICAgfCBBcnJvdyhfLCBfKSA9PiBncm91bmRlZF9BcnJvd1xuICAgIHwgTGlzdChfKSA9PiBncm91bmRlZF9MaXN0XG4gICAgfTtcbiAgfTtcbn07XG5cbmxldCBldmFsdWF0ZV9leHRlbmRfZW52ID1cbiAgICAobmV3X2JpbmRpbmdzOiBFbnZpcm9ubWVudC50LCB0b19leHRlbmQ6IENsb3N1cmVFbnZpcm9ubWVudC50KVxuICAgIDogQ2xvc3VyZUVudmlyb25tZW50LnQgPT4ge1xuICB0b19leHRlbmRcbiAgfD4gQ2xvc3VyZUVudmlyb25tZW50Lm1hcF9vZlxuICB8PiBFbnZpcm9ubWVudC51bmlvbihuZXdfYmluZGluZ3MpXG4gIHw+IENsb3N1cmVFbnZpcm9ubWVudC5vZl9lbnZpcm9ubWVudDtcbn07XG5cbnR5cGUgcnVsZSA9XG4gIHwgU3RlcCh7XG4gICAgICBhcHBseTogdW5pdCA9PiBESEV4cC50LFxuICAgICAga2luZDogc3RlcF9raW5kLFxuICAgICAgdmFsdWU6IGJvb2wsXG4gICAgfSlcbiAgfCBDb25zdHJ1Y3RvclxuICB8IEluZGV0O1xuXG5tb2R1bGUgdHlwZSBFVl9NT0RFID0ge1xuICB0eXBlIHN0YXRlO1xuICB0eXBlIHJlc3VsdDtcbiAgdHlwZSByZXF1aXJlbWVudCgnYSk7XG4gIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYik7XG5cbiAgbGV0IHJlcV92YWx1ZTpcbiAgICAoREhFeHAudCA9PiByZXN1bHQsIEV2YWxDdHgudCA9PiBFdmFsQ3R4LnQsIERIRXhwLnQpID0+XG4gICAgcmVxdWlyZW1lbnQoREhFeHAudCk7XG4gIGxldCByZXFfYWxsX3ZhbHVlOlxuICAgIChcbiAgICAgIERIRXhwLnQgPT4gcmVzdWx0LFxuICAgICAgKEV2YWxDdHgudCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKSA9PiBFdmFsQ3R4LnQsXG4gICAgICBsaXN0KERIRXhwLnQpXG4gICAgKSA9PlxuICAgIHJlcXVpcmVtZW50KGxpc3QoREhFeHAudCkpO1xuICBsZXQgcmVxX2ZpbmFsOlxuICAgIChESEV4cC50ID0+IHJlc3VsdCwgRXZhbEN0eC50ID0+IEV2YWxDdHgudCwgREhFeHAudCkgPT5cbiAgICByZXF1aXJlbWVudChESEV4cC50KTtcbiAgbGV0IHJlcV9hbGxfZmluYWw6XG4gICAgKFxuICAgICAgREhFeHAudCA9PiByZXN1bHQsXG4gICAgICAoRXZhbEN0eC50LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpID0+IEV2YWxDdHgudCxcbiAgICAgIGxpc3QoREhFeHAudClcbiAgICApID0+XG4gICAgcmVxdWlyZW1lbnQobGlzdChESEV4cC50KSk7XG5cbiAgbGV0IChsZXQuKTogKHJlcXVpcmVtZW50cygnYSwgREhFeHAudCksICdhID0+IHJ1bGUpID0+IHJlc3VsdDtcbiAgbGV0IChhbmQuKTpcbiAgICAocmVxdWlyZW1lbnRzKCdhLCAnYyA9PiAnYiksIHJlcXVpcmVtZW50KCdjKSkgPT5cbiAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKTtcbiAgbGV0IG90aGVyd2lzZTogKENsb3N1cmVFbnZpcm9ubWVudC50LCAnYSkgPT4gcmVxdWlyZW1lbnRzKHVuaXQsICdhKTtcblxuICBsZXQgdXBkYXRlX3Rlc3Q6IChzdGF0ZSwgS2V5d29yZElELnQsIFRlc3RNYXAuaW5zdGFuY2VfcmVwb3J0KSA9PiB1bml0O1xufTtcblxubW9kdWxlIFRyYW5zaXRpb24gPSAoRVY6IEVWX01PREUpID0+IHtcbiAgb3BlbiBFVjtcbiAgb3BlbiBESEV4cDtcbiAgbGV0IChsZXQubWF0Y2gpID0gKChlbnYsIG1hdGNoX3Jlc3VsdCksIHIpID0+XG4gICAgc3dpdGNoIChtYXRjaF9yZXN1bHQpIHtcbiAgICB8IEluZGV0TWF0Y2hcbiAgICB8IERvZXNOb3RNYXRjaCA9PiBJbmRldFxuICAgIHwgTWF0Y2hlcyhlbnYnKSA9PiByKGV2YWx1YXRlX2V4dGVuZF9lbnYoZW52JywgZW52KSlcbiAgICB9O1xuXG4gIGxldCB0cmFuc2l0aW9uID0gKHJlcSwgc3RhdGUsIGVudiwgZCk6ICdhID0+XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBCb3VuZFZhcih4KSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgQm91bmRWYXIoeCkpO1xuICAgICAgbGV0IGQgPVxuICAgICAgICBDbG9zdXJlRW52aXJvbm1lbnQubG9va3VwKGVudiwgeClcbiAgICAgICAgfD4gT3B0VXRpbC5nZXQoKCkgPT4ge1xuICAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihGcmVlSW52YWxpZFZhcih4KSkpXG4gICAgICAgICAgIH0pO1xuICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IGQsIGtpbmQ6IFZhckxvb2t1cCwgdmFsdWU6IGZhbHNlfSk7XG4gICAgfCBTZXF1ZW5jZShkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBTZXF1ZW5jZShkMSwgZDIpKVxuICAgICAgYW5kLiBfID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gU2VxdWVuY2UxKGQxLCBkMiksIGQxKTtcbiAgICAgIFN0ZXAoe2FwcGx5OiAoKSA9PiBkMiwga2luZDogU2VxdWVuY2UsIHZhbHVlOiBmYWxzZX0pO1xuICAgIHwgTGV0KGRwLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBMZXQoZHAsIGQxLCBkMikpXG4gICAgICBhbmQuIGQxJyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IExldDEoZHAsIGQxLCBkMiksIGQxKTtcbiAgICAgIGxldC5tYXRjaCBlbnYnID0gKGVudiwgbWF0Y2hlcyhkcCwgZDEnKSk7XG4gICAgICBTdGVwKHthcHBseTogKCkgPT4gQ2xvc3VyZShlbnYnLCBkMiksIGtpbmQ6IExldEJpbmQsIHZhbHVlOiBmYWxzZX0pO1xuICAgIHwgRnVuKF8sIF8sIENsb3N1cmUoXyksIF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIENvbnN0cnVjdG9yO1xuICAgIHwgRnVuKHAsIHQsIGQsIHYpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBGdW4ocCwgdCwgZCwgdikpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PiBGdW4ocCwgdCwgQ2xvc3VyZShlbnYsIGQpLCB2KSxcbiAgICAgICAga2luZDogRnVuQ2xvc3VyZSxcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEZpeEYoZiwgdCwgZDEpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBGaXhGKGYsIHQsIGQxKSk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgYXBwbHk6ICgpID0+XG4gICAgICAgICAgQ2xvc3VyZShcbiAgICAgICAgICAgIGV2YWx1YXRlX2V4dGVuZF9lbnYoRW52aXJvbm1lbnQuc2luZ2xldG9uKChmLCBkMSkpLCBlbnYpLFxuICAgICAgICAgICAgZDEsXG4gICAgICAgICAgKSxcbiAgICAgICAga2luZDogRml4VW53cmFwLFxuICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IFRlc3QoaWQsIGQpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkID0+IFRlc3QoaWQsIGQpKVxuICAgICAgYW5kLiBkJyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQgPT4gVGVzdChpZCwgZCksIGQpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgIHN3aXRjaCAoZCcpIHtcbiAgICAgICAgICB8IEJvb2xMaXQodHJ1ZSkgPT5cbiAgICAgICAgICAgIHVwZGF0ZV90ZXN0KHN0YXRlLCBpZCwgKGQnLCBQYXNzKSk7XG4gICAgICAgICAgICBUdXBsZShbXSk7XG4gICAgICAgICAgfCBCb29sTGl0KGZhbHNlKSA9PlxuICAgICAgICAgICAgdXBkYXRlX3Rlc3Qoc3RhdGUsIGlkLCAoZCcsIEZhaWwpKTtcbiAgICAgICAgICAgIFR1cGxlKFtdKTtcbiAgICAgICAgICAvKiBIYWNrOiBhc3N1bWUgaWYgZmluYWwgYW5kIG5vdCBCb29sLCB0aGVuIEluZGV0OyB0aGlzIHdvbid0IGNhdGNoIGVycm9ycyBpbiBzdGF0aWNzICovXG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICB1cGRhdGVfdGVzdChzdGF0ZSwgaWQsIChkJywgSW5kZXQpKTtcbiAgICAgICAgICAgIFR1cGxlKFtdKTtcbiAgICAgICAgICB9LFxuICAgICAgICBraW5kOiBVcGRhdGVUZXN0LFxuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgQXAoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQXAoZDEsIGQyKSlcbiAgICAgIGFuZC4gZDEnID0gcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQXAxKGQxLCBkMiksIGQxKVxuICAgICAgYW5kLiBkMicgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMiA9PiBBcDIoZDEsIGQyKSwgZDIpO1xuICAgICAgc3dpdGNoIChkMScpIHtcbiAgICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICAgIHwgRnVuKGRwLCBfLCBDbG9zdXJlKGVudicsIGQzKSwgXykgPT5cbiAgICAgICAgbGV0Lm1hdGNoIGVudicnID0gKGVudicsIG1hdGNoZXMoZHAsIGQyJykpO1xuICAgICAgICBTdGVwKHthcHBseTogKCkgPT4gQ2xvc3VyZShlbnYnJywgZDMpLCBraW5kOiBGdW5BcCwgdmFsdWU6IGZhbHNlfSk7XG4gICAgICB8IENhc3QoZDMnLCBBcnJvdyh0eTEsIHR5MiksIEFycm93KHR5MScsIHR5MicpKSA9PlxuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBhcHBseTogKCkgPT4gQ2FzdChBcChkMycsIENhc3QoZDInLCB0eTEnLCB0eTEpKSwgdHkyLCB0eTInKSxcbiAgICAgICAgICBraW5kOiBDYXN0QXAsXG4gICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgfCBCdWlsdGluRnVuKGlkZW50KSA9PlxuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBhcHBseTogKCkgPT4ge1xuICAgICAgICAgICAgLy9IQUNLW01hdHRdOiBUaGlzIHN0ZXAgaXMganVzdCBzbyB3ZSBjYW4gY2hlY2sgdGhhdCBkMicgaXMgbm90IGluZGV0XG4gICAgICAgICAgICBBcEJ1aWx0aW4oXG4gICAgICAgICAgICAgIGlkZW50LFxuICAgICAgICAgICAgICBkMicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2luZDogQnVpbHRpbldyYXAsXG4gICAgICAgICAgdmFsdWU6IGZhbHNlIC8vIE5vdCBuZWNlc3NhcmlseSBhIHZhbHVlIGJlY2F1c2Ugb2YgSW52YWxpZE9wZXJhdGlvbnNcbiAgICAgICAgfSlcbiAgICAgIHwgXyA9PlxuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBhcHBseTogKCkgPT4ge1xuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEZ1bihkMScpKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBraW5kOiBJbnZhbGlkU3RlcCxcbiAgICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfCBBcEJ1aWx0aW4oaWRlbnQsIGFyZykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGFyZyA9PiBBcEJ1aWx0aW4oaWRlbnQsIGFyZykpXG4gICAgICBhbmQuIGFyZycgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBhcmcgPT4gQXBCdWlsdGluKGlkZW50LCBhcmcpLCBhcmcpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PiB7XG4gICAgICAgICAgbGV0IGJ1aWx0aW4gPVxuICAgICAgICAgICAgVmFyTWFwLmxvb2t1cChCdWlsdGlucy5mb3Jtc19pbml0LCBpZGVudClcbiAgICAgICAgICAgIHw+IE9wdFV0aWwuZ2V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCdWlsdGluKGlkZW50KSkpXG4gICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICBidWlsdGluKGFyZycpO1xuICAgICAgICB9LFxuICAgICAgICBraW5kOiBCdWlsdGluQXAoaWRlbnQpLFxuICAgICAgICB2YWx1ZTogZmFsc2UgLy8gTm90IG5lY2Vzc2FyaWx5IGEgdmFsdWUgYmVjYXVzZSBvZiBJbnZhbGlkT3BlcmF0aW9uc1xuICAgICAgfSk7XG4gICAgfCBCb29sTGl0KF8pXG4gICAgfCBJbnRMaXQoXylcbiAgICB8IEZsb2F0TGl0KF8pXG4gICAgfCBTdHJpbmdMaXQoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBCdWlsdGluRnVuKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIENvbnN0cnVjdG9yO1xuICAgIHwgSWZUaGVuRWxzZShjb25zaXN0ZW50LCBjLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBjID0+IElmVGhlbkVsc2UoY29uc2lzdGVudCwgYywgZDEsIGQyKSlcbiAgICAgIGFuZC4gYycgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGMgPT4gSWZUaGVuRWxzZTEoY29uc2lzdGVudCwgYywgZDEsIGQyKSxcbiAgICAgICAgICBjLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChjb25zaXN0ZW50LCBjJykge1xuICAgICAgfCAoQ29uc2lzdGVudElmLCBCb29sTGl0KGIpKSA9PlxuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBhcHBseTogKCkgPT4ge1xuICAgICAgICAgICAgYiA/IGQxIDogZDI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBBdHRhY2ggYycgdG8gaW5kaWNhdGUgd2hpY2ggYnJhbmNoIHRha2VuLlxuICAgICAgICAgIGtpbmQ6IENvbmRpdGlvbmFsKGIpLFxuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIC8vIFVzZSBhIHNlcGVyYXRlIGNhc2UgZm9yIGludmFsaWQgY29uZGl0aW9uYWxzLiBNYWtlcyBleHRyYWN0aW5nIHRoZSBib29sIGZyb20gQm9vbExpdCAoYWJvdmUpIGVhc2llci5cbiAgICAgIHwgKENvbnNpc3RlbnRJZiwgXykgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgYXBwbHk6ICgpID0+IHtcbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRCb29sTGl0KGMnKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2luZDogSW52YWxpZFN0ZXAsXG4gICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICAvLyBJbmNvbnNpc3RlbnQgYnJhbmNoZXMgc2hvdWxkIGJlIEluZGV0XG4gICAgICB8IChJbmNvbnNpc3RlbnRJZiwgXykgPT4gSW5kZXRcbiAgICAgIH07XG4gICAgfCBCaW5Cb29sT3AoQW5kLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBCaW5Cb29sT3AoQW5kLCBkMSwgZDIpKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBCaW5Cb29sT3AxKEFuZCwgZDEsIGQyKSwgZDEpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgIHN3aXRjaCAoZDEnKSB7XG4gICAgICAgICAgfCBCb29sTGl0KHRydWUpID0+IGQyXG4gICAgICAgICAgfCBCb29sTGl0KGZhbHNlKSA9PiBCb29sTGl0KGZhbHNlKVxuICAgICAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkQm9vbExpdChkMScpKSlcbiAgICAgICAgICB9LFxuICAgICAgICBraW5kOiBCaW5Cb29sT3AoQW5kKSxcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5Cb29sT3AoT3IsIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IEJpbkJvb2xPcChPciwgZDEsIGQyKSlcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQmluQm9vbE9wMShPciwgZDEsIGQyKSwgZDEpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgIHN3aXRjaCAoZDEnKSB7XG4gICAgICAgICAgfCBCb29sTGl0KHRydWUpID0+IEJvb2xMaXQodHJ1ZSlcbiAgICAgICAgICB8IEJvb2xMaXQoZmFsc2UpID0+IGQyXG4gICAgICAgICAgfCBfID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRCb29sTGl0KGQyKSkpXG4gICAgICAgICAgfSxcbiAgICAgICAga2luZDogQmluQm9vbE9wKE9yKSxcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5JbnRPcChvcCwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQmluSW50T3Aob3AsIGQxLCBkMikpXG4gICAgICBhbmQuIGQxJyA9IHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQxID0+IEJpbkludE9wMShvcCwgZDEsIGQyKSwgZDEpXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQyID0+IEJpbkludE9wMihvcCwgZDEsIGQyKSwgZDIpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgIHN3aXRjaCAoZDEnLCBkMicpIHtcbiAgICAgICAgICB8IChJbnRMaXQobjEpLCBJbnRMaXQobjIpKSA9PlxuICAgICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgfCBQbHVzID0+IEludExpdChuMSArIG4yKVxuICAgICAgICAgICAgfCBNaW51cyA9PiBJbnRMaXQobjEgLSBuMilcbiAgICAgICAgICAgIHwgUG93ZXIgd2hlbiBuMiA8IDAgPT5cbiAgICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbihcbiAgICAgICAgICAgICAgICBCaW5JbnRPcChvcCwgSW50TGl0KG4xKSwgSW50TGl0KG4yKSksXG4gICAgICAgICAgICAgICAgTmVnYXRpdmVFeHBvbmVudCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBQb3dlciA9PiBJbnRMaXQoSW50VXRpbC5pcG93KG4xLCBuMikpXG4gICAgICAgICAgICB8IFRpbWVzID0+IEludExpdChuMSAqIG4yKVxuICAgICAgICAgICAgfCBEaXZpZGUgd2hlbiBuMiA9PSAwID0+XG4gICAgICAgICAgICAgIEludmFsaWRPcGVyYXRpb24oXG4gICAgICAgICAgICAgICAgQmluSW50T3Aob3AsIEludExpdChuMSksIEludExpdChuMikpLFxuICAgICAgICAgICAgICAgIERpdmlkZUJ5WmVybyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBEaXZpZGUgPT4gSW50TGl0KG4xIC8gbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuID0+IEJvb2xMaXQobjEgPCBuMilcbiAgICAgICAgICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IEJvb2xMaXQobjEgPD0gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuID0+IEJvb2xMaXQobjEgPiBuMilcbiAgICAgICAgICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IEJvb2xMaXQobjEgPj0gbjIpXG4gICAgICAgICAgICB8IEVxdWFscyA9PiBCb29sTGl0KG4xID09IG4yKVxuICAgICAgICAgICAgfCBOb3RFcXVhbHMgPT4gQm9vbExpdChuMSAhPSBuMilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IChJbnRMaXQoXyksIF8pID0+XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkSW50TGl0KGQyJykpKVxuICAgICAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkSW50TGl0KGQxJykpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGtpbmQ6IEJpbkludE9wKG9wKSxcbiAgICAgICAgLy8gRmFsc2Ugc28gdGhhdCBJbnZhbGlkT3BlcmF0aW9ucyBhcmUgY2F1Z2h0IGFuZCBtYWRlIGluZGV0IGJ5IHRoZSBuZXh0IHN0ZXBcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5GbG9hdE9wKG9wLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBCaW5GbG9hdE9wKG9wLCBkMSwgZDIpKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBCaW5GbG9hdE9wMShvcCwgZDEsIGQyKSwgZDEpXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQyID0+IEJpbkZsb2F0T3AyKG9wLCBkMSwgZDIpLCBkMik7XG4gICAgICBTdGVwKHtcbiAgICAgICAgYXBwbHk6ICgpID0+XG4gICAgICAgICAgc3dpdGNoIChkMScsIGQyJykge1xuICAgICAgICAgIHwgKEZsb2F0TGl0KG4xKSwgRmxvYXRMaXQobjIpKSA9PlxuICAgICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgfCBQbHVzID0+IEZsb2F0TGl0KG4xICsuIG4yKVxuICAgICAgICAgICAgfCBNaW51cyA9PiBGbG9hdExpdChuMSAtLiBuMilcbiAgICAgICAgICAgIHwgUG93ZXIgPT4gRmxvYXRMaXQobjEgKiogbjIpXG4gICAgICAgICAgICB8IFRpbWVzID0+IEZsb2F0TGl0KG4xICouIG4yKVxuICAgICAgICAgICAgfCBEaXZpZGUgPT4gRmxvYXRMaXQobjEgLy4gbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuID0+IEJvb2xMaXQobjEgPCBuMilcbiAgICAgICAgICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IEJvb2xMaXQobjEgPD0gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuID0+IEJvb2xMaXQobjEgPiBuMilcbiAgICAgICAgICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IEJvb2xMaXQobjEgPj0gbjIpXG4gICAgICAgICAgICB8IEVxdWFscyA9PiBCb29sTGl0KG4xID09IG4yKVxuICAgICAgICAgICAgfCBOb3RFcXVhbHMgPT4gQm9vbExpdChuMSAhPSBuMilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IChGbG9hdExpdChfKSwgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGbG9hdExpdChkMicpKSlcbiAgICAgICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEZsb2F0TGl0KGQxJykpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGtpbmQ6IEJpbkZsb2F0T3Aob3ApLFxuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgQmluU3RyaW5nT3Aob3AsIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpblN0cmluZ09wKG9wLCBkMSwgZDIpKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBCaW5TdHJpbmdPcDEob3AsIGQxLCBkMiksIGQxKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMiA9PiBCaW5TdHJpbmdPcDIob3AsIGQxLCBkMiksIGQyKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQxJywgZDInKSB7XG4gICAgICAgICAgfCAoU3RyaW5nTGl0KHMxKSwgU3RyaW5nTGl0KHMyKSkgPT5cbiAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIHwgQ29uY2F0ID0+IFN0cmluZ0xpdChzMSArKyBzMilcbiAgICAgICAgICAgIHwgRXF1YWxzID0+IEJvb2xMaXQoczEgPT0gczIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCAoU3RyaW5nTGl0KF8pLCBfKSA9PlxuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFN0cmluZ0xpdChkMicpKSlcbiAgICAgICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFN0cmluZ0xpdChkMScpKSlcbiAgICAgICAgICB9LFxuICAgICAgICBraW5kOiBCaW5TdHJpbmdPcChvcCksXG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBUdXBsZShkcykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGRzID0+IFR1cGxlKGRzKSlcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9hbGxfZmluYWwocmVxKHN0YXRlLCBlbnYpLCAoZDEsIGRzKSA9PiBUdXBsZShkMSwgZHMpLCBkcyk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IFByaihkMSwgbikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IFByaihkMSwgbikpXG4gICAgICBhbmQuIGQxJyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IFByaihkMSwgbiksIGQxKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQxJykge1xuICAgICAgICAgIHwgVHVwbGUoZHMpIHdoZW4gbiA8IDAgfHwgTGlzdC5sZW5ndGgoZHMpIDw9IG4gPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkUHJvamVjdGlvbihuKSkpXG4gICAgICAgICAgfCBUdXBsZShkcykgPT4gTGlzdC5udGgoZHMsIG4pXG4gICAgICAgICAgfCBDYXN0KF8sIFByb2QodHMpLCBQcm9kKF8pKSB3aGVuIG4gPCAwIHx8IExpc3QubGVuZ3RoKHRzKSA8PSBuID0+XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZFByb2plY3Rpb24obikpKVxuICAgICAgICAgIHwgQ2FzdChkMiwgUHJvZCh0czEpLCBQcm9kKHRzMikpID0+XG4gICAgICAgICAgICBDYXN0KFByaihkMiwgbiksIExpc3QubnRoKHRzMSwgbiksIExpc3QubnRoKHRzMiwgbikpXG4gICAgICAgICAgfCBfID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkUHJvamVjdGlvbihuKSkpXG4gICAgICAgICAgfSxcbiAgICAgICAga2luZDogUHJvamVjdGlvbixcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgLy8gVE9ETyhNYXR0KTogQ2FuIHdlIGRvIHNvbWV0aGluZyBjbGV2ZXJlciB3aGVuIHRoZSBsaXN0IHN0cnVjdHVyZSBpcyBjb21wbGV0ZSBidXQgdGhlIGNvbnRlbnRzIGFyZW4ndD9cbiAgICB8IENvbnMoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQ29ucyhkMSwgZDIpKVxuICAgICAgYW5kLiBkMScgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBDb25zMShkMSwgZDIpLCBkMSlcbiAgICAgIGFuZC4gZDInID0gcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDIgPT4gQ29uczIoZDEsIGQyKSwgZDIpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgIHN3aXRjaCAoZDInKSB7XG4gICAgICAgICAgfCBMaXN0TGl0KHUsIGksIHR5LCBkcykgPT4gTGlzdExpdCh1LCBpLCB0eSwgW2QxJywgLi4uZHNdKVxuICAgICAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkTGlzdExpdChkMicpKSlcbiAgICAgICAgICB9LFxuICAgICAgICBraW5kOiBMaXN0Q29ucyxcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgICAgLy8gVE9ETyhNYXR0KTogQ2FuIHdlIGRvIHNvbWV0aGluZyBjbGV2ZXJlciB3aGVuIHRoZSBsaXN0IHN0cnVjdHVyZSBpcyBjb21wbGV0ZSBidXQgdGhlIGNvbnRlbnRzIGFyZW4ndD9cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IExpc3RDb25jYXQoZDEsIGQyKSlcbiAgICAgIGFuZC4gZDEnID0gcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gTGlzdENvbmNhdDEoZDEsIGQyKSwgZDEpXG4gICAgICBhbmQuIGQyJyA9IHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQyID0+IExpc3RDb25jYXQyKGQxLCBkMiksIGQyKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKGQxJywgZDInKSB7XG4gICAgICAgICAgfCAoTGlzdExpdCh1MSwgaTEsIHQxLCBkczEpLCBMaXN0TGl0KF8sIF8sIF8sIGRzMikpID0+XG4gICAgICAgICAgICBMaXN0TGl0KHUxLCBpMSwgdDEsIGRzMSBAIGRzMilcbiAgICAgICAgICB8IChMaXN0TGl0KF8pLCBfKSA9PlxuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZExpc3RMaXQoZDInKSkpXG4gICAgICAgICAgfCAoXywgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRMaXN0TGl0KGQxJykpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGtpbmQ6IExpc3RDb25jYXQsXG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBMaXN0TGl0KHUsIGksIHR5LCBkcykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGRzID0+IExpc3RMaXQodSwgaSwgdHksIGRzKSlcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9hbGxfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIChkMSwgZHMpID0+IExpc3RMaXQodSwgaSwgdHksIGQxLCBkcyksXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICAvLyBUT0RPKE1hdHQpOiBUaGlzIHdpbGwgY3VycmVudGx5IHJlLXRyYXZlcnNlIGQxIGlmIGl0IGlzIGEgbGFyZ2UgY29uc3RydWN0b3JcbiAgICB8IENvbnNpc3RlbnRDYXNlKENhc2UoZDEsIHJ1bGVzLCBuKSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IENvbnNpc3RlbnRDYXNlKENhc2UoZDEsIHJ1bGVzLCBuKSkpXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQ29uc2lzdGVudENhc2UoQ2FzZShkMSwgcnVsZXMsIG4pKSxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAoTGlzdC5udGhfb3B0KHJ1bGVzLCBuKSkge1xuICAgICAgfCBOb25lID0+IEluZGV0XG4gICAgICB8IFNvbWUoUnVsZShkcCwgZDIpKSA9PlxuICAgICAgICBzd2l0Y2ggKG1hdGNoZXMoZHAsIGQxJykpIHtcbiAgICAgICAgfCBNYXRjaGVzKGVudicpID0+XG4gICAgICAgICAgU3RlcCh7XG4gICAgICAgICAgICBhcHBseTogKCkgPT4gQ2xvc3VyZShldmFsdWF0ZV9leHRlbmRfZW52KGVudicsIGVudiksIGQyKSxcbiAgICAgICAgICAgIGtpbmQ6IENhc2VBcHBseSxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICB9KVxuICAgICAgICB8IERvZXNOb3RNYXRjaCA9PlxuICAgICAgICAgIFN0ZXAoe1xuICAgICAgICAgICAgYXBwbHk6ICgpID0+IENvbnNpc3RlbnRDYXNlKENhc2UoZDEnLCBydWxlcywgbiArIDEpKSxcbiAgICAgICAgICAgIGtpbmQ6IENhc2VOZXh0LFxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgIH0pXG4gICAgICAgIHwgSW5kZXRNYXRjaCA9PiBJbmRldFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXMoXykgYXMgZCA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBJbmRldDtcbiAgICB8IENsb3N1cmUoZW52JywgZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQgPT4gQ2xvc3VyZShlbnYnLCBkKSlcbiAgICAgIGFuZC4gZCcgPSByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYnKSwgZDEgPT4gQ2xvc3VyZShlbnYnLCBkMSksIGQpO1xuICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IGQnLCBraW5kOiBDb21wbGV0ZUNsb3N1cmUsIHZhbHVlOiB0cnVlfSk7XG4gICAgfCBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBkMSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIGksIGQxKSlcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgaSwgZDEpLFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgSW5kZXQ7XG4gICAgfCBFbXB0eUhvbGUoXylcbiAgICB8IEZyZWVWYXIoXylcbiAgICB8IEludmFsaWRUZXh0KF8pXG4gICAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pXG4gICAgfCBFeHBhbmRpbmdLZXl3b3JkKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgQ2FzdChkLCB0MSwgdDIpID0+XG4gICAgICBvcGVuIENhc3RIZWxwZXJzOyAvKiBDYXN0IGNhbGN1bHVzICovXG5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQgPT4gQ2FzdChkLCB0MSwgdDIpKVxuICAgICAgYW5kLiBkJyA9IHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQgPT4gQ2FzdChkLCB0MSwgdDIpLCBkKTtcbiAgICAgIHN3aXRjaCAoZ3JvdW5kX2Nhc2VzX29mKHQxKSwgZ3JvdW5kX2Nhc2VzX29mKHQyKSkge1xuICAgICAgfCAoSG9sZSwgSG9sZSlcbiAgICAgIHwgKEdyb3VuZCwgR3JvdW5kKSA9PlxuICAgICAgICAvKiBpZiB0d28gdHlwZXMgYXJlIGdyb3VuZCBhbmQgY29uc2lzdGVudCwgdGhlbiB0aGV5IGFyZSBlcSAqL1xuICAgICAgICBTdGVwKHthcHBseTogKCkgPT4gZCcsIGtpbmQ6IENhc3QsIHZhbHVlOiB0cnVlfSlcbiAgICAgIHwgKEdyb3VuZCwgSG9sZSkgPT5cbiAgICAgICAgLyogY2FuJ3QgcmVtb3ZlIHRoZSBjYXN0IG9yIGRvIGFueXRoaW5nIGVsc2UgaGVyZSwgc28gd2UncmUgZG9uZSAqL1xuICAgICAgICBDb25zdHJ1Y3RvclxuICAgICAgfCAoSG9sZSwgR3JvdW5kKSA9PlxuICAgICAgICBzd2l0Y2ggKGQnKSB7XG4gICAgICAgIHwgQ2FzdChkMiwgdDMsIFVua25vd24oXykpID0+XG4gICAgICAgICAgLyogYnkgY2Fub25pY2FsIGZvcm1zLCBkMScgbXVzdCBiZSBvZiB0aGUgZm9ybSBkPHR5JycgLT4gPz4gKi9cbiAgICAgICAgICBpZiAoVHlwLmVxKHQzLCB0MikpIHtcbiAgICAgICAgICAgIFN0ZXAoe2FwcGx5OiAoKSA9PiBkMiwga2luZDogQ2FzdCwgdmFsdWU6IHRydWV9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3RlcCh7XG4gICAgICAgICAgICAgIGFwcGx5OiAoKSA9PiBGYWlsZWRDYXN0KGQnLCB0MSwgdDIpLFxuICAgICAgICAgICAgICBraW5kOiBDYXN0LFxuICAgICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBJbmRldFxuICAgICAgICB9XG4gICAgICB8IChIb2xlLCBOb3RHcm91bmRPckhvbGUodDJfZ3JvdW5kZWQpKSA9PlxuICAgICAgICAvKiBJVEV4cGFuZCBydWxlICovXG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGFwcGx5OiAoKSA9PlxuICAgICAgICAgICAgREhFeHAuQ2FzdChDYXN0KGQnLCB0MSwgdDJfZ3JvdW5kZWQpLCB0Ml9ncm91bmRlZCwgdDIpLFxuICAgICAgICAgIGtpbmQ6IENhc3QsXG4gICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgfCAoTm90R3JvdW5kT3JIb2xlKHQxX2dyb3VuZGVkKSwgSG9sZSkgPT5cbiAgICAgICAgLyogSVRHcm91bmQgcnVsZSAqL1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBhcHBseTogKCkgPT5cbiAgICAgICAgICAgIERIRXhwLkNhc3QoQ2FzdChkJywgdDEsIHQxX2dyb3VuZGVkKSwgdDFfZ3JvdW5kZWQsIHQyKSxcbiAgICAgICAgICBraW5kOiBDYXN0LFxuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgKEdyb3VuZCwgTm90R3JvdW5kT3JIb2xlKF8pKVxuICAgICAgfCAoTm90R3JvdW5kT3JIb2xlKF8pLCBHcm91bmQpID0+XG4gICAgICAgIC8qIGNhbid0IGRvIGFueXRoaW5nIHdoZW4gY2FzdGluZyBiZXR3ZWVuIGRpc2VxLCBub24taG9sZSB0eXBlcyAqL1xuICAgICAgICBDb25zdHJ1Y3RvclxuICAgICAgfCAoTm90R3JvdW5kT3JIb2xlKF8pLCBOb3RHcm91bmRPckhvbGUoXykpID0+XG4gICAgICAgIC8qIHRoZXkgbWlnaHQgYmUgZXEgaW4gdGhpcyBjYXNlLCBzbyByZW1vdmUgY2FzdCBpZiBzbyAqL1xuICAgICAgICBpZiAoVHlwLmVxKHQxLCB0MikpIHtcbiAgICAgICAgICBTdGVwKHthcHBseTogKCkgPT4gZCcsIGtpbmQ6IENhc3QsIHZhbHVlOiB0cnVlfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQ29uc3RydWN0b3I7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfCBGYWlsZWRDYXN0KGQxLCB0MSwgdDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBGYWlsZWRDYXN0KGQxLCB0MSwgdDIpKVxuICAgICAgYW5kLiBfID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gRmFpbGVkQ2FzdChkMSwgdDEsIHQyKSwgZDEpO1xuICAgICAgSW5kZXQ7XG4gICAgfCBGaWx0ZXIoZjEsIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gRmlsdGVyKGYxLCBkMSkpXG4gICAgICBhbmQuIGQxID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gRmlsdGVyKGYxLCBkMSksIGQxKTtcbiAgICAgIFN0ZXAoe2FwcGx5OiAoKSA9PiBkMSwga2luZDogQ29tcGxldGVGaWx0ZXIsIHZhbHVlOiB0cnVlfSk7XG4gICAgfTtcbn07XG5cbmxldCBzaG91bGRfaGlkZV9zdGVwID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCkgPT5cbiAgZnVuXG4gIHwgTGV0QmluZFxuICB8IFNlcXVlbmNlXG4gIHwgVXBkYXRlVGVzdFxuICB8IEZ1bkFwXG4gIHwgQnVpbHRpbkFwKF8pXG4gIHwgQmluQm9vbE9wKF8pXG4gIHwgQmluSW50T3AoXylcbiAgfCBCaW5GbG9hdE9wKF8pXG4gIHwgQmluU3RyaW5nT3AoXylcbiAgfCBMaXN0Q29uc1xuICB8IExpc3RDb25jYXRcbiAgfCBDYXNlQXBwbHlcbiAgfCBQcm9qZWN0aW9uIC8vIFRPRE8oTWF0dCk6IFdlIGRvbid0IHdhbnQgdG8gc2hvdyBwcm9qZWN0aW9uIHRvIHRoZSB1c2VyXG4gIHwgU2tpcFxuICB8IENvbmRpdGlvbmFsKF8pXG4gIHwgSW52YWxpZFN0ZXAgPT4gZmFsc2VcbiAgfCBWYXJMb29rdXAgPT4gIXNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzXG4gIHwgQ2FzdEFwXG4gIHwgQ2FzdCA9PiAhc2V0dGluZ3Muc2hvd19jYXN0c1xuICB8IENhc2VOZXh0XG4gIHwgQ29tcGxldGVDbG9zdXJlXG4gIHwgQ29tcGxldGVGaWx0ZXJcbiAgfCBGaXhVbndyYXBcbiAgfCBCdWlsdGluV3JhcFxuICB8IEZ1bkNsb3N1cmUgPT4gdHJ1ZTtcbiIsIm9wZW4gREhFeHA7XG5vcGVuIFRyYW5zaXRpb247XG5vcGVuIFV0aWw7XG5cbnR5cGUgdCA9XG4gIHwgVmFsdWVcbiAgfCBJbmRldFxuICB8IEV4cHI7XG5cbm1vZHVsZSBWYWx1ZUNoZWNrZXJFVk1vZGU6IHtcbiAgaW5jbHVkZSBFVl9NT0RFIHdpdGggdHlwZSByZXN1bHQgPSB0IGFuZCB0eXBlIHN0YXRlID0gdW5pdDtcbn0gPSB7XG4gIHR5cGUgc3RhdGUgPSB1bml0O1xuICB0eXBlIHJlc3VsdCA9IHQ7XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoJ2EsIChyZXN1bHQsIGJvb2wpKTtcbiAgdHlwZSByZXF1aXJlbWVudHMoJ2EsICdiKSA9ICgnYSwgKHJlc3VsdCwgYm9vbCkpO1xuXG4gIGxldCBjb21iaW5lID0gKChyMSwgYjEpLCAocjIsIGIyKSkgPT4gKFxuICAgIHN3aXRjaCAocjEsIHIyKSB7XG4gICAgfCAoRXhwciwgXykgPT4gRXhwclxuICAgIHwgKF8sIEV4cHIpID0+IEV4cHJcbiAgICB8IChJbmRldCwgXykgPT4gSW5kZXRcbiAgICB8IChfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8IChWYWx1ZSwgVmFsdWUpID0+IFZhbHVlXG4gICAgfSxcbiAgICBiMSAmJiBiMixcbiAgKTtcblxuICBsZXQgcmVxX3ZhbHVlID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIGZhbHNlKVxuICAgIHwgRXhwciA9PiAoRXhwciwgZmFsc2UpXG4gICAgfSxcbiAgKTtcbiAgbGV0IHJlcV9hbGxfdmFsdWUgPSAodmMsIF8sIGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICgodjEsIHIxKSwgKHYyLCByMikpID0+IChbdjEsIC4uLnYyXSwgY29tYmluZShyMSwgcjIpKSxcbiAgICAgIExpc3QubWFwKHJlcV92YWx1ZSh2YywgeCA9PiB4KSwgZHMpLFxuICAgICAgKFtdLCAoVmFsdWUsIHRydWUpKSxcbiAgICApO1xuICBsZXQgcmVxX2ZpbmFsID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIHRydWUpXG4gICAgfCBFeHByID0+IChFeHByLCBmYWxzZSlcbiAgICB9LFxuICApO1xuICBsZXQgcmVxX2FsbF9maW5hbCA9ICh2YywgXywgZHMpID0+XG4gICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgKCh2MSwgcjEpLCAodjIsIHIyKSkgPT4gKFt2MSwgLi4udjJdLCBjb21iaW5lKHIxLCByMikpLFxuICAgICAgTGlzdC5tYXAocmVxX2ZpbmFsKHZjLCB4ID0+IHgpLCBkcyksXG4gICAgICAoW10sIChWYWx1ZSwgdHJ1ZSkpLFxuICAgICk7XG5cbiAgbGV0IG90aGVyd2lzZSA9IChfLCBfKSA9PiAoKCksIChWYWx1ZSwgdHJ1ZSkpO1xuXG4gIGxldCAobGV0LikgPSAoKHYsIChyLCBiKSksIHJ1bGUpID0+XG4gICAgc3dpdGNoIChiLCByLCBydWxlKHYpKSB7XG4gICAgfCAoXywgXywgQ29uc3RydWN0b3IpID0+IHJcbiAgICB8IChfLCBFeHByLCBJbmRldCkgPT4gRXhwclxuICAgIHwgKF8sIF8sIEluZGV0KSA9PiBJbmRldFxuICAgIHwgKHRydWUsIF8sIFN0ZXAoXykpID0+IEV4cHJcbiAgICB8IChmYWxzZSwgXywgU3RlcChfKSkgPT4gclxuICAgIH07XG5cbiAgbGV0IChhbmQuKSA9ICgodjEsIHIxKSwgKHYyLCByMikpID0+IHtcbiAgICAoKHYxLCB2MiksIGNvbWJpbmUocjEsIHIyKSk7XG4gIH07XG5cbiAgbGV0IHVwZGF0ZV90ZXN0ID0gKCgpLCBfLCBfKSA9PiAoKTtcbn07XG5cbm1vZHVsZSBDViA9IFRyYW5zaXRpb24oVmFsdWVDaGVja2VyRVZNb2RlKTtcblxubGV0IHJlYyBjaGVja192YWx1ZSA9ICgoKSwgZW52LCBkKSA9PiBDVi50cmFuc2l0aW9uKGNoZWNrX3ZhbHVlLCAoKSwgZW52LCBkKTtcblxubGV0IGNoZWNrX3ZhbHVlID0gY2hlY2tfdmFsdWUoKTtcblxubGV0IHJlYyBjaGVja192YWx1ZV9tb2RfY3R4ID0gKCgpLCBlbnYpID0+XG4gIGZ1blxuICB8IEJvdW5kVmFyKHgpID0+XG4gICAgY2hlY2tfdmFsdWVfbW9kX2N0eChcbiAgICAgICgpLFxuICAgICAgZW52LFxuICAgICAgQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpXG4gICAgICB8PiBPcHRVdGlsLmdldCgoKSA9PiB7XG4gICAgICAgICAgIHByaW50X2VuZGxpbmUoXCJGcmVlSW52YWxpZFZhcjpcIiArKyB4KTtcbiAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEZyZWVJbnZhbGlkVmFyKHgpKSk7XG4gICAgICAgICB9KSxcbiAgICApXG4gIHwgZCA9PiBDVi50cmFuc2l0aW9uKGNoZWNrX3ZhbHVlX21vZF9jdHgsICgpLCBlbnYsIGQpO1xuXG5sZXQgY2hlY2tfdmFsdWVfbW9kX2N0eCA9IGNoZWNrX3ZhbHVlX21vZF9jdHgoKTtcbiIsIi8qIEJpdCBvZiBhIGhhY2suIFdlIHdhbnQgdG8gZGVjb3JhdGUgc3VnZ2VzdGlvbnMgd2hpY2ggd2lsbCB0cmlnZ2VyXG4gICBhbiBleHBhbnNpb24gdG8gdGVsZWdyYXBoIHRoYXQgZXhwYW5zaW9uLiBFYXNpZXN0IHdheSBtZXRyaWNzIHdpc2VcbiAgIGlzIHRvIGtlZXAgdGhhdCBkZWNvIGluIHRoZSBzeW50YXguIFdhbnQgdG8gZGVjb3JhdGUgd2l0aCBlbGxpcHNlc1xuICAgY2hhcmFjdGVyLCBidXQgT0NhbWwgc3RyaW5nIGZ1bmN0aW9ucyBkb24ndCBzdXBwb3J0IHVuaWNvZGUsIHNvXG4gICB3ZSB1c2UgJCwgdGhlbiBzd2FwIGl0IG91dCBmb3IgdGhlIHVuaWNvZGUgY2hhcmFjdGVyIGluIENvZGUuXG4gICBFdmVudHVhbGx5IHJlcGxhY2UgdGhpcyBieSBleHRlbmRpbmcgdGhlIHN1Z2dlc3Rpb24gZGF0YSBzdHJ1Y3R1cmUgKi9cbmxldCBjID0gXCIkXCI7XG5cbmxldCBpc19leHBhbmRlcl90b2sgPSAodDogVG9rZW4udCkgPT5cbiAgU3RyaW5nLnN1Yih0LCBTdHJpbmcubGVuZ3RoKHQpIC0gMSwgMSkgPT0gYztcblxubGV0IHRyaW1fbGFzdCA9ICh0OiBUb2tlbi50KSA9PiBTdHJpbmcuc3ViKHQsIDAsIFN0cmluZy5sZW5ndGgodCkgLSAxKTtcblxubGV0IGlzX2V4cGFuZGVyID0gKGxhYmVsOiBMYWJlbC50KSA9PlxuICBzd2l0Y2ggKGxhYmVsKSB7XG4gIHwgW3RdID0+IGlzX2V4cGFuZGVyX3Rvayh0KVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcblxubGV0IG1hcmsgPSAobGFiZWw6IExhYmVsLnQpOiBMYWJlbC50ID0+XG4gIGlzX2V4cGFuZGVyKGxhYmVsKSA/IExpc3QubWFwKHQgPT4gdHJpbV9sYXN0KHQpICsrIFwi4oCmXCIsIGxhYmVsKSA6IGxhYmVsO1xuXG5sZXQgdHJpbSA9IChjb21wbGV0aW9uOiBUb2tlbi50KTogVG9rZW4udCA9PlxuICBpc19leHBhbmRlcl90b2soY29tcGxldGlvbikgPyB0cmltX2xhc3QoY29tcGxldGlvbikgOiBjb21wbGV0aW9uO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogQ28tY29udGV4dHM6XG5cbiAgIEEgdHlwaW5nIGNvLWNvbnRleHQgKGR1YWwgdG8gYSB0eXBpbmcgY29udGV4dCksIGlzIGEgbWFwIGJldHdlZW5cbiAgIHZhcmlhYmxlIG5hbWVzIGFuZCBhIGxpc3Qgb2YgdGhhdCB2YXJpYWJsZSdzIHVzZXMgd2l0aGluIHNvbWUgc2NvcGUuXG4gICBGb3IgZWFjaCB1c2UsIHdlIHJldGFpbiB0aGUgdW5pcXVlIGlkIGFuZCBleHBlY3RlZCB0eXBlIG9mIHRoZSB1c2Ugc2l0ZS5cbiAgIFRoZSBjby1jdHgsIGFsb25nIHdpdGggdGhlIGN0eCwgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGZyZWUgYW5kIHVudXNlZCB2YXJpYWJsZXMuXG5cbiAgIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIHVzZWZ1bDpcblxuICAgMS4gQSBsb2NhbGx5IGZyZWUgdmFyaWFibGUgKGluIGFuIGV4cHJlc3Npb24pIGlzIG9uZVxuICAgICAgdGhhdCBvY2N1cnMgaW4gdGhlIGNvX2N0eCBvZiB0aGF0IGV4cHJlc3Npb24uXG4gICAyLiBBIGdsb2JhbCBmcmVlIHZhcmlhYmxlIChpbiB0aGUgcHJvZ3JhbSkgaXMgb25lIHRoYXRcbiAgICAgIG9jY3VycyBpbiB0aGUgY29fY3R4IGJ1dCBub3QgdGhlIGN0eCBvZiBzb21lIGV4cHJlc3Npb25cbiAgIDMuIEEgbG9jYWxseSB1bnVzZWQgdmFyaWFibGUgKGluIGFuIGV4cHJlc3Npb24pIGlzIG9uZSB0aGF0XG4gICAgICBvY2N1cnMgaW4gdGhlIGN0eCBidXQgbm90IHRoZSBjby1jdHggb2YgdGhhdCBleHByZXNzaW9uXG4gICA0LiBBIGdsb2JhbCB1bnVzZWQgdmFyaWFibGUgKGluIHRoZSBwcm9ncmFtKSBpcyBvbmUgdGhhdFxuICAgICAgb2NjdXJzIGluIHRoZSBjdHggYnV0IG5vdCB0aGUgY29fY3R4IG9mIHNvbWUgZXhwcmVzc2lvblxuXG4gICBUaGUgZm9sbG93aW5nIHRoZW9yZW1zIHNob3VsZCBob2xkOlxuXG4gICBBLiBUbyBkZXRlcm1pbmUgaWYgYSB2YXJpYWJsZSBpcyBnbG9iYWxseSBmcmVlLCBpdCBzdWZmaWNlcyB0byBjb25zaWRlclxuICAgICAgZXhwcmVzc2lvbnMgd2hpY2ggYXJlIHZhcmlhYmxlIHJlZmVyZW5jZXMgKGxvY3VzIG9mIGN0eCBsb29rdXBzKVxuICAgQi4gVG8gZGV0ZXJtaW5lIGlmIGEgdmFyaWFibGUgaXMgZ2xvYmFsbHkgdW51c2VkLCBpdCBzdWZmaWNlcyB0byBjb25zaWRlclxuICAgICAgZXhwcmVzc2lvbnMgd2hpY2ggYXJlIHRoZSBib2RpZXMgb2YgYmluZGluZyBmb3JtcyAobG9jdXMgb2YgY3R4IGV4dGVuc2lvbnMpXG5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZW50cnkgPSB7XG4gIGlkOiBJZC50LFxuICBleHBlY3RlZF90eTogVHlwLnQsXG59O1xuXG4vKiBFYWNoIGNvLWNvbnRleHQgZW50cnkgaXMgYSBsaXN0IG9mIHRoZSB1c2VzIG9mIGEgdmFyaWFibGVcbiAgIHdpdGhpbiBzb21lIHNjb3BlLCBpbmNsdWRpbmcgdGhlaXIgdHlwZSBkZW1hbmRzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBWYXJNYXAudF8obGlzdChlbnRyeSkpO1xuXG5sZXQgZW1wdHk6IHQgPSBWYXJNYXAuZW1wdHk7XG5cbmxldCBtayA9IChjdHhfYmVmb3JlOiBDdHgudCwgY3R4X2FmdGVyLCBjb19jdHg6IHQpOiB0ID0+IHtcbiAgbGV0IGFkZGVkX2JpbmRpbmdzID0gQ3R4LmFkZGVkX2JpbmRpbmdzKGN0eF9hZnRlciwgY3R4X2JlZm9yZSk7XG4gIFZhck1hcC5maWx0ZXIoXG4gICAgKChuYW1lLCBfKSkgPT5cbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF92YXIoYWRkZWRfYmluZGluZ3MsIG5hbWUpKSB7XG4gICAgICB8IE5vbmUgPT4gdHJ1ZVxuICAgICAgfCBTb21lKF8pID0+IGZhbHNlXG4gICAgICB9LFxuICAgIGNvX2N0eCxcbiAgKTtcbn07XG5cbi8qIE5vdGU6IHRoaXMgY3VycmVudGx5IHNoYWRvd3MgaW4gdGhlIGNhc2Ugb2YgZHVwbGljYXRlcyAqL1xubGV0IHVuaW9uOiBsaXN0KHQpID0+IHQgPVxuICBMaXN0LmZvbGRfbGVmdCgoY29fY3R4MSwgY29fY3R4MikgPT4gY29fY3R4MSBAIGNvX2N0eDIsIFtdKTtcblxubGV0IHNpbmdsZXRvbiA9IChuYW1lLCBpZCwgZXhwZWN0ZWRfdHkpOiB0ID0+IFtcbiAgKG5hbWUsIFt7aWQsIGV4cGVjdGVkX3R5fV0pLFxuXTtcblxubGV0IGpvaW46IChDdHgudCwgbGlzdChlbnRyeSkpID0+IFR5cC50ID1cbiAgKGN0eCwgZW50cmllcykgPT4ge1xuICAgIGxldCBleHBlY3RlZF90eXMgPSBMaXN0Lm1hcChlbnRyeSA9PiBlbnRyeS5leHBlY3RlZF90eSwgZW50cmllcyk7XG4gICAgc3dpdGNoIChUeXAuam9pbl9hbGwofmVtcHR5PVVua25vd24oSW50ZXJuYWwpLCBjdHgsIGV4cGVjdGVkX3R5cykpIHtcbiAgICB8IE5vbmUgPT4gVW5rbm93bihJbnRlcm5hbClcbiAgICB8IFNvbWUodHkpID0+IHR5XG4gICAgfTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIE1PREUucmVcblxuICAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSAoYW5hbHl0aWMpIHR5cGUgZXhwZWN0YXRpb24gaW1wb3NlZCBieSBhIHRlcm0nc1xuICAgICAgc3ludGFjdGljIGNvbnRleHQsIGluIHBhcnRpY3VsYXIgaXRzIGltbWVkaWF0ZSBwYXJlbnQuIFRoZSBtb3N0IGNvbW1vblxuICAgICAgY2FzZXMgYXJlIGVpdGhlciBTeW4gKG5vIHR5cGUgZXhwZWN0YXRpb24pLCBvciBBbmEgKHNvbWUgdHlwZSBleHBlY3RhdGlvbikuXG5cbiAgICAgIEEgdGVybSdzIE1PREUgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoYXQgdGVybSdzIFNFTEYgKFNlbGYucmUpIGJ5XG4gICAgICB0byBkZXRlcm1pbmUgdGhhdCB0ZXJtJ3MgU1RBVFVTIChJbmZvLnJlKSwgd2hpY2ggZGljdGF0ZXMgd2hldGhlciBvciBub3RcbiAgICAgIGl0IGlzIHBsYWNlZCBpbiBhIGhvbGUsIGFuZCBoZW5jZSBpdHMgRklYRUQgVFlQRSAoSW5mby5yZSkuXG5cbiAgICAgIChJdCBpcyBjb25qZWN0dXJlZCBbY2l0YXRpb24gbmVlZGVkXSB0aGF0IHRoZSBTeW4gbW9kZSBpcyBmdW5jdGlvbmFsbHlcbiAgICAgIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gQW5hKFVua25vd24oU3luU3dpdGNoKSksIGFuZCB0aGF0IHRoaXMgdHlwZSBpc1xuICAgICAgdGh1cyB2ZXN0aWdpYWwuKVxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFN5bkZ1biAvKiBVc2VkIG9ubHkgaW4gZnVuY3Rpb24gcG9zaXRpb24gb2YgYXBwbGljYXRpb25zICovXG4gIHwgU3luXG4gIHwgQW5hKFR5cC50KTtcblxubGV0IGFuYTogVHlwLnQgPT4gdCA9IHR5ID0+IEFuYSh0eSk7XG5cbi8qIFRoZSBleHBlY3RlZCB0eXBlIGltcG9zZWQgYnkgYSBtb2RlICovXG5sZXQgdHlfb2Y6IHQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBBbmEodHkpID0+IHR5XG4gIHwgU3luID0+IFVua25vd24oU3luU3dpdGNoKVxuICB8IFN5bkZ1biA9PiBBcnJvdyhVbmtub3duKFN5blN3aXRjaCksIFVua25vd24oU3luU3dpdGNoKSk7XG5cbmxldCBvZl9hcnJvdyA9IChjdHg6IEN0eC50LCBtb2RlOiB0KTogKHQsIHQpID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1biA9PiAoU3luLCBTeW4pXG4gIHwgQW5hKHR5KSA9PiB0eSB8PiBUeXAubWF0Y2hlZF9hcnJvdyhjdHgpIHw+IFR1cGxlVXRpbC5tYXAyKGFuYSlcbiAgfTtcblxubGV0IG9mX3Byb2QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgbGVuZ3RoKTogbGlzdCh0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW4gPT4gTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBTeW4pXG4gIHwgQW5hKHR5KSA9PiB0eSB8PiBUeXAubWF0Y2hlZF9wcm9kKGN0eCwgbGVuZ3RoKSB8PiBMaXN0Lm1hcChhbmEpXG4gIH07XG5cbmxldCBvZl9jb25zX2hkID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1biA9PiBTeW5cbiAgfCBBbmEodHkpID0+IEFuYShUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKVxuICB9O1xuXG5sZXQgb2ZfY29uc190bCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBoZF90eTogVHlwLnQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1biA9PiBBbmEoTGlzdChoZF90eSkpXG4gIHwgQW5hKHR5KSA9PiBBbmEoTGlzdChUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKSlcbiAgfTtcblxubGV0IG9mX2xpc3QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6IHQgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuID0+IFN5blxuICB8IEFuYSh0eSkgPT4gQW5hKFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpXG4gIH07XG5cbmxldCBvZl9saXN0X2NvbmNhdCA9IChjdHg6IEN0eC50LCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW4gPT4gQW5hKExpc3QoVW5rbm93bihTeW5Td2l0Y2gpKSlcbiAgfCBBbmEodHkpID0+IEFuYShMaXN0KFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpKVxuICB9O1xuXG5sZXQgb2ZfbGlzdF9saXQgPSAoY3R4OiBDdHgudCwgbGVuZ3RoLCBtb2RlOiB0KTogbGlzdCh0KSA9PlxuICBMaXN0LmluaXQobGVuZ3RoLCBfID0+IG9mX2xpc3QoY3R4LCBtb2RlKSk7XG5cbmxldCBjdHJfYW5hX3R5cCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBjdHI6IENvbnN0cnVjdG9yLnQpOiBvcHRpb24oVHlwLnQpID0+IHtcbiAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgIGEgc3VtIHR5cGUgaGF2aW5nIHRoYXQgY3RyIGFzIGEgdmFyaWFudCwgd2UgY29uc2lkZXIgdGhlXG4gICAgIGN0cidzIHR5cGUgdG8gYmUgZGV0ZXJtaW5lZCBieSB0aGUgc3VtIHR5cGUgKi9cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgQW5hKEFycm93KF8sIHR5X2FuYSkpXG4gIHwgQW5hKHR5X2FuYSkgPT5cbiAgICBsZXQqIGN0cnMgPSBUeXAuZ2V0X3N1bV9jb25zdHJ1Y3RvcnMoY3R4LCB0eV9hbmEpO1xuICAgIGxldCsgKF8sIHR5X2VudHJ5KSA9IFR5cC5zdW1fZW50cnkoY3RyLCBjdHJzKTtcbiAgICBzd2l0Y2ggKHR5X2VudHJ5KSB7XG4gICAgfCBOb25lID0+IHR5X2FuYVxuICAgIHwgU29tZSh0eV9pbikgPT4gQXJyb3codHlfaW4sIHR5X2FuYSlcbiAgICB9O1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IG9mX2N0cl9pbl9hcCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBjdHI6IENvbnN0cnVjdG9yLnQpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChjdHJfYW5hX3R5cChjdHgsIG1vZGUsIGN0cikpIHtcbiAgfCBTb21lKEFycm93KF8pIGFzIHR5X2FuYSkgPT4gU29tZShBbmEodHlfYW5hKSlcbiAgfCBTb21lKHR5X2FuYSkgPT5cbiAgICAvKiBDb25zaWRlciBmb3IgZXhhbXBsZSBcImxldCBfIDogK1lvID0gWW8oXCJsb2xcIikgaW4uLi5cIlxuICAgICAgIEhlcmUsIHRoZSAnWW8nIGNvbnN0cnVjdG9yIHNob3VsZCBiZSBpbiBhIGhvbGUsIGFzIGl0XG4gICAgICAgaXMgbnVsbGFyeSBidXQgdXNlZCBhcyB1bmFyeTsgd2UgcmVmbGVjdCB0aGlzIGJ5IGFuYWx5emluZ1xuICAgICAgIGFnYWluc3QgYW4gYXJyb3cgdHlwZS4gU2luY2Ugd2UgY2FuJ3QgZ3Vlc3MgYXQgd2hhdCB0aGVcbiAgICAgICBwYXJhbWV0ZXIgdHlwZSBtaWdodCBoYXZlIGJlLCB3ZSB1c2UgVW5rbm93bi4gKi9cbiAgICBTb21lKEFuYShBcnJvdyhVbmtub3duKEludGVybmFsKSwgdHlfYW5hKSkpXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBvZl9hcCA9IChjdHgsIG1vZGUsIGN0cjogb3B0aW9uKENvbnN0cnVjdG9yLnQpKTogdCA9PlxuICAvKiBJZiBhIGN0ciBhcHBsaWNhdGlvbiBpcyBiZWluZyBhbmFseXplZCBhZ2FpbnN0IGEgc3VtIHR5cGUgZm9yXG4gICAgIHdoaWNoIHRoYXQgY3RyIGlzIGEgdmFyaWFudCwgdGhlbiB3ZSBjb25zaWRlciB0aGUgY3RyIHRvIGJlIGluXG4gICAgIGFuYWx5dGljIG1vZGUgYWdhaW5zdCBhbiBhcnJvdyByZXR1cm5pbmcgdGhhdCBzdW0gdHlwZTsgb3RoZXJ3aXNlXG4gICAgIHdlIHVzZSB0aGUgdHlwaWNhbCBtb2RlIGZvciBmdW5jdGlvbiBhcHBsaWNhdGlvbnMgKi9cbiAgc3dpdGNoIChjdHIpIHtcbiAgfCBTb21lKG5hbWUpID0+XG4gICAgc3dpdGNoIChvZl9jdHJfaW5fYXAoY3R4LCBtb2RlLCBuYW1lKSkge1xuICAgIHwgU29tZShtb2RlKSA9PiBtb2RlXG4gICAgfCBfID0+IFN5bkZ1blxuICAgIH1cbiAgfCBOb25lID0+IFN5bkZ1blxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogU0VMRi5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBTRUxGIGRhdGEgc3RydWN0dXJlLCB3aGljaCByZXByZXNlbnRzXG4gICB0aGUgc3ludGhldGljIHR5cGUgaW5mb3JtYXRpb24gZGVyaXZhYmxlIGZyb20gYSB0ZXJtIGluZGVwZW5kZW50XG4gICBvZiB0aGUgdHlwZSBleHBlY3RhdGlvbiAoaS5lLiBNT0RFKSBvZiBpdHMgc3ludGFjdGljIGNvbnRleHQuIFRoaXNcbiAgIHN5bmV0aGV0aWMgaW5mb3JtYXRpb24gaXMgbm90IGVudGlyZWx5IGluZGVwZW5kZW50LCBpbiB0aGF0IGl0IHN0aWxsXG4gICB1c2VzIHRoZSB0eXBpbmcgY29udGV4dCBwYXNzZWQgZG93biBmcm9tIHRoZSBzeW50YWN0aWMgY29udGV4dC5cblxuICAgQSB0ZXJtIHdoaWNoIGZyb20gd2hpY2ggYSB0eXBlIGNhbiBiZSBkZXJpdmVkIGluIGlzb2xhdGlvbiwgdGhhdCBpcyxcbiAgIHRoYXQgaGFzIGEgdmFsaWQgc3ludGhldGljIHR5cGluZyBqdWRnZW1lbnQsIHdpbGwgZ2VuZXJhbGx5IGhhdmUgYSBTRUxGXG4gICBvZiBKdXN0KHNvbWVfdHlwZSkuIChUaGUgb25lIGN1cnJlbnQgZXhjZXB0aW9uIGFyZSB0aGUgY29uc3RydWN0b3JzIG9mIGxhYmVsbGVkXG4gICBzdW0gdHlwZXMsIHdoaWNoIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBhcyB0aGVpciBzeW50aGV0aWMgdHlwZVxuICAgbWF5IGJlICdvdmVyd3JpdHRlbicgYnkgdGhlIGFuYWx5dGljIGV4cGVjdGF0aW9uKVxuXG4gICBUaGUgb3RoZXIgY2FzZXMgYWxsIHJlcHJlc2VudCBzdGF0ZXMgZm9yIHdoaWNoIG5vIHNpbmdsZSB0eXBlIGNhbiBiZVxuICAgZGVyaXZlZCwgc3VjaCBhcyBzeW50YWN0aWMgZXJyb3JzLCBvciBicmFuY2hpbmcgY29uc3RydWN0cyB3aGljaCBtYXlcbiAgIGhhdmUgaW5jb25zaXN0ZW50IHR5cGVzLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGpvaW5fdHlwZSA9XG4gIHwgSWRcbiAgfCBMaXN0O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IEp1c3QoVHlwLnQpIC8qIEp1c3QgYSByZWd1bGFyIHR5cGUgKi9cbiAgfCBOb0pvaW4oam9pbl90eXBlLCBsaXN0KFR5cC5zb3VyY2UpKSAvKiBJbmNvbnNpc3RlbnQgdHlwZXMgZm9yIGUuZyBtYXRjaCwgbGlzdGxpdHMgKi9cbiAgfCBCYWRUb2tlbihUb2tlbi50KSAvKiBJbnZhbGlkIGV4cHJlc3Npb24gdG9rZW4sIHRyZWF0ZWQgYXMgaG9sZSAqL1xuICB8IEJhZFRyaXZBcChUeXAudCkgLyogVHJpdmlhbCAobnVsbGFyeSkgYXAgb24gZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHRha2UgdHJpdiAqL1xuICB8IElzTXVsdGkgLyogTXVsdGlob2xlLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBJc0NvbnN0cnVjdG9yKHtcbiAgICAgIG5hbWU6IENvbnN0cnVjdG9yLnQsXG4gICAgICBzeW5fdHk6IG9wdGlvbihUeXAudCksXG4gICAgfSk7IC8qIENvbnN0cnVjdG9ycyBoYXZlIHNwZWNpYWwgYW5hIGxvZ2ljICovXG5cbi8qIEV4cHJlc3Npb25zIGNhbiBhbHNvIGJlIGZyZWUgdmFyaWFibGVzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cCA9XG4gIHwgRnJlZShWYXIudClcbiAgfCBDb21tb24odCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGF0ID1cbiAgfCBDb21tb24odCk7XG5cbmxldCBqb2luX29mID0gKGo6IGpvaW5fdHlwZSwgdHk6IFR5cC50KTogVHlwLnQgPT5cbiAgc3dpdGNoIChqKSB7XG4gIHwgSWQgPT4gdHlcbiAgfCBMaXN0ID0+IExpc3QodHkpXG4gIH07XG5cbi8qIFdoYXQgdGhlIHR5cGUgd291bGQgYmUgaWYgdGhlIHBvc2l0aW9uIGhhZCBiZWVuXG4gICBzeW50aGV0aWMsIHNvIG5vIGhvbGUgZml4aW5nLiBSZXR1cm5zIG5vbmUgaWZcbiAgIHRoZXJlJ3Mgbm8gYXBwbGljYWJsZSBzeW50aGV0aWMgcnVsZS4gKi9cbmxldCB0eXBfb2Y6IChDdHgudCwgdCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIF9jdHggPT5cbiAgICBmdW5cbiAgICB8IEp1c3QodHlwKSA9PiBTb21lKHR5cClcbiAgICB8IElzQ29uc3RydWN0b3Ioe3N5bl90eSwgX30pID0+IHN5bl90eVxuICAgIHwgQmFkVG9rZW4oXylcbiAgICB8IEJhZFRyaXZBcChfKVxuICAgIHwgSXNNdWx0aVxuICAgIHwgTm9Kb2luKF8pID0+IE5vbmU7XG5cbmxldCB0eXBfb2ZfZXhwOiAoQ3R4LnQsIGV4cCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIGN0eCA9PlxuICAgIGZ1blxuICAgIHwgRnJlZShfKSA9PiBOb25lXG4gICAgfCBDb21tb24oc2VsZikgPT4gdHlwX29mKGN0eCwgc2VsZik7XG5cbmxldCB0eXBfb2ZfcGF0OiAoQ3R4LnQsIHBhdCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIGN0eCA9PlxuICAgIGZ1blxuICAgIHwgQ29tbW9uKHNlbGYpID0+IHR5cF9vZihjdHgsIHNlbGYpO1xuXG4vKiBUaGUgc2VsZiBvZiBhIHZhciBkZXBlbmRzIG9uIHRoZSBjdHg7IGlmIHRoZVxuICAgbG9va3VwIGZhaWxzLCBpdCBpcyBhIGZyZWUgdmFyaWFibGUgKi9cbmxldCBvZl9leHBfdmFyID0gKGN0eDogQ3R4LnQsIG5hbWU6IFZhci50KTogZXhwID0+XG4gIHN3aXRjaCAoQ3R4Lmxvb2t1cF92YXIoY3R4LCBuYW1lKSkge1xuICB8IE5vbmUgPT4gRnJlZShuYW1lKVxuICB8IFNvbWUodmFyKSA9PiBDb21tb24oSnVzdCh2YXIudHlwKSlcbiAgfTtcblxuLyogVGhlIHNlbGYgb2YgYSBjdHIgZGVwZW5kcyBvbiB0aGUgY3R4LCBidXQgYVxuICAgbG9va3VwIGZhaWx1cmUgZG9lc24ndCBuZWNlc3NhcmlseSBtZWFucyBpdHNcbiAgIGZyZWU7IGl0IG1heSBiZSBnaXZlbiBhIHR5cGUgYW5hbHl0aWNhbGx5ICovXG5sZXQgb2ZfY3RyID0gKGN0eDogQ3R4LnQsIG5hbWU6IENvbnN0cnVjdG9yLnQpOiB0ID0+XG4gIElzQ29uc3RydWN0b3Ioe1xuICAgIG5hbWUsXG4gICAgc3luX3R5OlxuICAgICAgc3dpdGNoIChDdHgubG9va3VwX2N0cihjdHgsIG5hbWUpKSB7XG4gICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgfCBTb21lKHt0eXAsIF99KSA9PiBTb21lKHR5cClcbiAgICAgIH0sXG4gIH0pO1xuXG5sZXQgYWRkX3NvdXJjZSA9IExpc3QubWFwMigoaWQsIHR5KSA9PiBUeXAue2lkLCB0eX0pO1xuXG5sZXQgbWF0Y2ggPSAoY3R4OiBDdHgudCwgdHlzOiBsaXN0KFR5cC50KSwgaWRzOiBsaXN0KElkLnQpKTogdCA9PlxuICBzd2l0Y2ggKFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCksIGN0eCwgdHlzKSkge1xuICB8IE5vbmUgPT4gTm9Kb2luKElkLCBhZGRfc291cmNlKGlkcywgdHlzKSlcbiAgfCBTb21lKHR5KSA9PiBKdXN0KHR5KVxuICB9O1xuXG5sZXQgbGlzdGxpdCA9ICh+ZW1wdHksIGN0eDogQ3R4LnQsIHR5czogbGlzdChUeXAudCksIGlkczogbGlzdChJZC50KSk6IHQgPT5cbiAgc3dpdGNoIChUeXAuam9pbl9hbGwofmVtcHR5LCBjdHgsIHR5cykpIHtcbiAgfCBOb25lID0+IE5vSm9pbihMaXN0LCBhZGRfc291cmNlKGlkcywgdHlzKSlcbiAgfCBTb21lKHR5KSA9PiBKdXN0KExpc3QodHkpKVxuICB9O1xuXG5sZXQgbGlzdF9jb25jYXQgPSAoY3R4OiBDdHgudCwgdHlzOiBsaXN0KFR5cC50KSwgaWRzOiBsaXN0KElkLnQpKTogdCA9PlxuICBzd2l0Y2ggKFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCksIGN0eCwgdHlzKSkge1xuICB8IE5vbmUgPT4gTm9Kb2luKExpc3QsIGFkZF9zb3VyY2UoaWRzLCB0eXMpKVxuICB8IFNvbWUodHkpID0+IEp1c3QodHkpXG4gIH07XG4iLCIvKiBURVJNXG5cbiAgIFRoZXNlIGRhdGEgc3RydWN0dXJlcyBkZWZpbmUgdGhlIHRlcm0gc3RydWN0dXJlcyBvbiB3aGljaFxuICAgdGhlIHN0YXRpYyBhbmQgZHluYW1pYyBzZW1hbnRpY3Mgb2YgdGhlIGxhbmd1YWdlIGFyZSBiYXNlZC5cbiAgIEVhY2ggc29ydCBoYXMgYSBjb3JyZXNwb25kaW5nIFU8U29ydD4gbW9kdWxlLlxuXG4gICBUaGUgY29udGFpbmVkIGNscyB0eXBlIGxpc3RzIHRoZSB0ZXJtcyBvZiB0aGF0IHNvcnQsIGFuZFxuICAgc2hvdWxkIGJlIGluIDEtMSBjb3JyZXNwb25kZW5jZSB3aXRoIHRoZSB0ZXJtIHR5cGUgd2hpY2hcbiAgIGlzIHVzZWQgdG8gYnVpbGQgY29tcG9zaXRlIHRlcm1zLlxuXG4gICBUaGlzIGlzIHdyYXBwZWQgaW4gYSByZWNvcmQgdHlwZSB0byBhc3NvY2lhdGUgYSB1bmlxdWUgaWRcbiAgIHdpdGggZWFjaCB0ZXJtLiBUaGVzZSB1bmlxdWUgaWRzIGFyZSB0aGUgc2FtZSBhcyBmcm9tIHRoZVxuICAgdGlsZSBzdHJ1Y3R1cmUgZnJvbSB0aGUgc3ludGF4IG1vZHVsZSwgYXMgdGhlcmUgaXMgYSAxLTFcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGVybXMgYW5kIHRpbGVzLlxuXG4gICBUT0RPOiBhZGQgdGVzdHMgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGZvcm1zIGFuZC9vciB0ZXJtc1xuICAgd2l0aG91dCBjb3JyZXBvbmRpbmcgc3ludGF4IGNsYXNzZXMgKi9cblxuaW5jbHVkZSBUZXJtQmFzZS5Bbnk7XG5cbnR5cGUgYW55ID0gdDtcbm1vZHVsZSBVVHlwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IEFycm93XG4gICAgfCBUdXBsZVxuICAgIHwgU3VtXG4gICAgfCBMaXN0XG4gICAgfCBWYXJcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBQYXJlbnNcbiAgICB8IEFwO1xuXG4gIGluY2x1ZGUgVGVybUJhc2UuVVR5cDtcblxuICBsZXQgcmVwX2lkID0gKHtpZHMsIF99OiB0KSA9PiB7XG4gICAgYXNzZXJ0KGlkcyAhPSBbXSk7XG4gICAgTGlzdC5oZChpZHMpO1xuICB9O1xuXG4gIGxldCBob2xlID0gKHRtczogbGlzdChhbnkpKSA9PlxuICAgIHN3aXRjaCAodG1zKSB7XG4gICAgfCBbXSA9PiBFbXB0eUhvbGVcbiAgICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICAgIH07XG5cbiAgbGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkKF8pID0+IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgICB8IEludCA9PiBJbnRcbiAgICB8IEZsb2F0ID0+IEZsb2F0XG4gICAgfCBCb29sID0+IEJvb2xcbiAgICB8IFN0cmluZyA9PiBTdHJpbmdcbiAgICB8IExpc3QoXykgPT4gTGlzdFxuICAgIHwgQXJyb3coXykgPT4gQXJyb3dcbiAgICB8IFZhcihfKSA9PiBWYXJcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IENvbnN0cnVjdG9yXG4gICAgfCBUdXBsZShfKSA9PiBUdXBsZVxuICAgIHwgUGFyZW5zKF8pID0+IFBhcmVuc1xuICAgIHwgQXAoXykgPT4gQXBcbiAgICB8IFN1bShfKSA9PiBTdW07XG5cbiAgbGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQgPT4gXCJJbnZhbGlkIHR5cGVcIlxuICAgIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIHR5cGVcIlxuICAgIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgdHlwZSBob2xlXCJcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IFN0cmluZ1xuICAgIHwgQm9vbCA9PiBcIkJhc2UgdHlwZVwiXG4gICAgfCBWYXIgPT4gXCJUeXBlIHZhcmlhYmxlXCJcbiAgICB8IENvbnN0cnVjdG9yID0+IFwiU3VtIGNvbnN0cnVjdG9yXCJcbiAgICB8IExpc3QgPT4gXCJMaXN0IHR5cGVcIlxuICAgIHwgQXJyb3cgPT4gXCJGdW5jdGlvbiB0eXBlXCJcbiAgICB8IFR1cGxlID0+IFwiUHJvZHVjdCB0eXBlXCJcbiAgICB8IFN1bSA9PiBcIlN1bSB0eXBlXCJcbiAgICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgdHlwZVwiXG4gICAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCI7XG5cbiAgbGV0IHJlYyBpc19hcnJvdyA9ICh0eXA6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHR5cC50ZXJtKSB7XG4gICAgfCBQYXJlbnModHlwKSA9PiBpc19hcnJvdyh0eXApXG4gICAgfCBBcnJvdyhfKSA9PiB0cnVlXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBMaXN0KF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgVmFyKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQXAoXylcbiAgICB8IFN1bShfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgLyogQ29udmVydHMgYSBzeW50YWN0aWMgdHlwZSBpbnRvIGEgc2VtYW50aWMgdHlwZSAqL1xuICBsZXQgcmVjIHRvX3R5cDogKEN0eC50LCB0KSA9PiBUeXAudCA9XG4gICAgKGN0eCwgdXR5cCkgPT5cbiAgICAgIHN3aXRjaCAodXR5cC50ZXJtKSB7XG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgTXVsdGlIb2xlKF8pID0+IFVua25vd24oSW50ZXJuYWwpXG4gICAgICB8IEVtcHR5SG9sZSA9PiBVbmtub3duKFR5cGVIb2xlKVxuICAgICAgfCBCb29sID0+IEJvb2xcbiAgICAgIHwgSW50ID0+IEludFxuICAgICAgfCBGbG9hdCA9PiBGbG9hdFxuICAgICAgfCBTdHJpbmcgPT4gU3RyaW5nXG4gICAgICB8IFZhcihuYW1lKSA9PlxuICAgICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpKSB7XG4gICAgICAgIHwgU29tZShfKSA9PiBWYXIobmFtZSlcbiAgICAgICAgfCBOb25lID0+IFVua25vd24oRnJlZShuYW1lKSlcbiAgICAgICAgfVxuICAgICAgfCBBcnJvdyh1MSwgdTIpID0+IEFycm93KHRvX3R5cChjdHgsIHUxKSwgdG9fdHlwKGN0eCwgdTIpKVxuICAgICAgfCBUdXBsZSh1cykgPT4gUHJvZChMaXN0Lm1hcCh0b190eXAoY3R4KSwgdXMpKVxuICAgICAgfCBTdW0odXRzKSA9PiBTdW0odG9fY3RyX21hcChjdHgsIHV0cykpXG4gICAgICB8IExpc3QodSkgPT4gTGlzdCh0b190eXAoY3R4LCB1KSlcbiAgICAgIHwgUGFyZW5zKHUpID0+IHRvX3R5cChjdHgsIHUpXG4gICAgICAvKiBUaGUgYmVsb3cgY2FzZXMgc2hvdWxkIG9jY3VyIG9ubHkgaW5zaWRlIHN1bXMgKi9cbiAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgIHwgQXAoXykgPT4gVW5rbm93bihJbnRlcm5hbClcbiAgICAgIH1cbiAgYW5kIHRvX3ZhcmlhbnQ6XG4gICAgKEN0eC50LCB2YXJpYW50KSA9PiBvcHRpb24oQ29uc3RydWN0b3JNYXAuYmluZGluZyhvcHRpb24oVHlwLnQpKSkgPVxuICAgIGN0eCA9PlxuICAgICAgZnVuXG4gICAgICB8IFZhcmlhbnQoY3RyLCBfLCB1KSA9PiBTb21lKChjdHIsIE9wdGlvbi5tYXAodG9fdHlwKGN0eCksIHUpKSlcbiAgICAgIHwgQmFkRW50cnkoXykgPT4gTm9uZVxuICBhbmQgdG9fY3RyX21hcCA9IChjdHg6IEN0eC50LCB1dHM6IGxpc3QodmFyaWFudCkpOiBUeXAuc3VtX21hcCA9PiB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1dCkgPT5cbiAgICAgICAgTGlzdC5maW5kX29wdCgoKGN0ciwgXykpID0+IGN0ciA9PSBmc3QodXQpLCBhY2MpID09IE5vbmVcbiAgICAgICAgICA/IGFjYyBAIFt1dF0gOiBhY2MsXG4gICAgICBbXSxcbiAgICAgIExpc3QuZmlsdGVyX21hcCh0b192YXJpYW50KGN0eCksIHV0cyksXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBVVFBhdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZVxuICAgIHwgVmFyO1xuXG4gIGluY2x1ZGUgVGVybUJhc2UuVVRQYXQ7XG5cbiAgbGV0IHJlcF9pZCA9ICh7aWRzLCBffSkgPT4ge1xuICAgIGFzc2VydChpZHMgIT0gW10pO1xuICAgIExpc3QuaGQoaWRzKTtcbiAgfTtcblxuICBsZXQgaG9sZSA9ICh0bXM6IGxpc3QoYW55KSkgPT5cbiAgICBzd2l0Y2ggKHRtcykge1xuICAgIHwgW10gPT4gRW1wdHlIb2xlXG4gICAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgICB9O1xuXG4gIGxldCBjbHNfb2ZfdGVybTogdGVybSA9PiBjbHMgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gTXVsdGlIb2xlXG4gICAgfCBWYXIoXykgPT4gVmFyO1xuXG4gIGxldCBzaG93X2NsczogY2xzID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkID0+IFwiSW52YWxpZCB0eXBlIGFsaWFzXCJcbiAgICB8IE11bHRpSG9sZSA9PiBcIkJyb2tlbiB0eXBlIGFsaWFzXCJcbiAgICB8IEVtcHR5SG9sZSA9PiBcIkVtcHR5IHR5cGUgYWxpYXMgaG9sZVwiXG4gICAgfCBWYXIgPT4gXCJUeXBlIGFsaWFzXCI7XG59O1xuXG5tb2R1bGUgVVBhdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZVxuICAgIHwgV2lsZFxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBUcml2XG4gICAgfCBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvclxuICAgIHwgQ29uc1xuICAgIHwgVmFyXG4gICAgfCBUdXBsZVxuICAgIHwgUGFyZW5zXG4gICAgfCBBcFxuICAgIHwgVHlwZUFubjtcblxuICBpbmNsdWRlIFRlcm1CYXNlLlVQYXQ7XG5cbiAgbGV0IHJlcF9pZCA9ICh7aWRzLCBffTogdCkgPT4ge1xuICAgIGFzc2VydChpZHMgIT0gW10pO1xuICAgIExpc3QuaGQoaWRzKTtcbiAgfTtcblxuICBsZXQgaG9sZSA9ICh0bXM6IGxpc3QoYW55KSkgPT5cbiAgICBzd2l0Y2ggKHRtcykge1xuICAgIHwgW10gPT4gRW1wdHlIb2xlXG4gICAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgICB9O1xuXG4gIGxldCBjbHNfb2ZfdGVybTogdGVybSA9PiBjbHMgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gTXVsdGlIb2xlXG4gICAgfCBXaWxkID0+IFdpbGRcbiAgICB8IEludChfKSA9PiBJbnRcbiAgICB8IEZsb2F0KF8pID0+IEZsb2F0XG4gICAgfCBCb29sKF8pID0+IEJvb2xcbiAgICB8IFN0cmluZyhfKSA9PiBTdHJpbmdcbiAgICB8IFRyaXYgPT4gVHJpdlxuICAgIHwgTGlzdExpdChfKSA9PiBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgQ29ucyhfKSA9PiBDb25zXG4gICAgfCBWYXIoXykgPT4gVmFyXG4gICAgfCBUdXBsZShfKSA9PiBUdXBsZVxuICAgIHwgUGFyZW5zKF8pID0+IFBhcmVuc1xuICAgIHwgQXAoXykgPT4gQXBcbiAgICB8IFR5cGVBbm4oXykgPT4gVHlwZUFubjtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgcGF0dGVyblwiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gcGF0dGVyblwiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSBwYXR0ZXJuIGhvbGVcIlxuICAgIHwgV2lsZCA9PiBcIldpbGRjYXJkXCJcbiAgICB8IEludCA9PiBcIkludGVnZXIgbGl0ZXJhbFwiXG4gICAgfCBGbG9hdCA9PiBcIkZsb2F0IGxpdGVyYWxcIlxuICAgIHwgQm9vbCA9PiBcIkJvb2xlYW4gbGl0ZXJhbFwiXG4gICAgfCBTdHJpbmcgPT4gXCJTdHJpbmcgbGl0ZXJhbFwiXG4gICAgfCBUcml2ID0+IFwiVHJpdmlhbCBsaXRlcmFsXCJcbiAgICB8IExpc3RMaXQgPT4gXCJMaXN0IGxpdGVyYWxcIlxuICAgIHwgQ29uc3RydWN0b3IgPT4gXCJDb25zdHJ1Y3RvclwiXG4gICAgfCBDb25zID0+IFwiQ29uc1wiXG4gICAgfCBWYXIgPT4gXCJWYXJpYWJsZSBiaW5kaW5nXCJcbiAgICB8IFR1cGxlID0+IFwiVHVwbGVcIlxuICAgIHwgUGFyZW5zID0+IFwiUGFyZW50aGVzaXplZCBwYXR0ZXJuXCJcbiAgICB8IEFwID0+IFwiQ29uc3RydWN0b3IgYXBwbGljYXRpb25cIlxuICAgIHwgVHlwZUFubiA9PiBcIkFubm90YXRpb25cIjtcblxuICBsZXQgcmVjIGlzX3ZhciA9IChwYXQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgfCBQYXJlbnMocGF0KSA9PiBpc192YXIocGF0KVxuICAgIHwgVmFyKF8pID0+IHRydWVcbiAgICB8IFR5cGVBbm4oXylcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IFRyaXZcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFR1cGxlKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQXAoXykgPT4gZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgaXNfZnVuX3ZhciA9IChwYXQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgfCBQYXJlbnMocGF0KSA9PiBpc19mdW5fdmFyKHBhdClcbiAgICB8IFR5cGVBbm4ocGF0LCB0eXApID0+IGlzX3ZhcihwYXQpICYmIFVUeXAuaXNfYXJyb3codHlwKVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXylcbiAgICB8IFdpbGRcbiAgICB8IEludChfKVxuICAgIHwgRmxvYXQoXylcbiAgICB8IEJvb2woXylcbiAgICB8IFN0cmluZyhfKVxuICAgIHwgVHJpdlxuICAgIHwgTGlzdExpdChfKVxuICAgIHwgQ29ucyhfLCBfKVxuICAgIHwgVmFyKF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGlzX3R1cGxlX29mX2Fycm93cyA9IChwYXQ6IHQpID0+XG4gICAgaXNfZnVuX3ZhcihwYXQpXG4gICAgfHwgKFxuICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgfCBQYXJlbnMocGF0KSA9PiBpc190dXBsZV9vZl9hcnJvd3MocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PiBwYXRzIHw+IExpc3QuZm9yX2FsbChpc19mdW5fdmFyKVxuICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICB8IEVtcHR5SG9sZVxuICAgICAgfCBNdWx0aUhvbGUoXylcbiAgICAgIHwgV2lsZFxuICAgICAgfCBJbnQoXylcbiAgICAgIHwgRmxvYXQoXylcbiAgICAgIHwgQm9vbChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgVHJpdlxuICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICB8IENvbnMoXywgXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IFR5cGVBbm4oXylcbiAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgIHwgQXAoXykgPT4gZmFsc2VcbiAgICAgIH1cbiAgICApO1xuXG4gIGxldCByZWMgZ2V0X3ZhciA9IChwYXQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgfCBQYXJlbnMocGF0KSA9PiBnZXRfdmFyKHBhdClcbiAgICB8IFZhcih4KSA9PiBTb21lKHgpXG4gICAgfCBUeXBlQW5uKF8pXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBUcml2XG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IE5vbmVcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgZ2V0X2Z1bl92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X2Z1bl92YXIocGF0KVxuICAgIHwgVHlwZUFubihwYXQsIHR5cCkgPT5cbiAgICAgIGlmIChVVHlwLmlzX2Fycm93KHR5cCkpIHtcbiAgICAgICAgZ2V0X3ZhcihwYXQpIHw+IE9wdGlvbi5tYXAodmFyID0+IHZhcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBOb25lO1xuICAgICAgfVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXylcbiAgICB8IFdpbGRcbiAgICB8IEludChfKVxuICAgIHwgRmxvYXQoXylcbiAgICB8IEJvb2woXylcbiAgICB8IFN0cmluZyhfKVxuICAgIHwgVHJpdlxuICAgIHwgTGlzdExpdChfKVxuICAgIHwgQ29ucyhfLCBfKVxuICAgIHwgVmFyKF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IE5vbmVcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgZ2V0X3JlY3Vyc2l2ZV9iaW5kaW5ncyA9IChwYXQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKGdldF9mdW5fdmFyKHBhdCkpIHtcbiAgICB8IFNvbWUoeCkgPT4gU29tZShbeF0pXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhwYXQpID0+IGdldF9yZWN1cnNpdmVfYmluZGluZ3MocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PlxuICAgICAgICBsZXQgZnVuX3ZhcnMgPSBwYXRzIHw+IExpc3QubWFwKGdldF9mdW5fdmFyKTtcbiAgICAgICAgaWYgKExpc3QuZXhpc3RzKE9wdGlvbi5pc19ub25lLCBmdW5fdmFycykpIHtcbiAgICAgICAgICBOb25lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFNvbWUoTGlzdC5tYXAoT3B0aW9uLmdldCwgZnVuX3ZhcnMpKTtcbiAgICAgICAgfTtcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IFRyaXZcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBDb25zKF8sIF8pXG4gICAgICB8IFZhcihfKVxuICAgICAgfCBUeXBlQW5uKF8pXG4gICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICB8IEFwKF8pID0+IE5vbmVcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIGxldCBjdHJfbmFtZSA9IChwOiB0KTogb3B0aW9uKENvbnN0cnVjdG9yLnQpID0+XG4gICAgc3dpdGNoIChwLnRlcm0pIHtcbiAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+IFNvbWUobmFtZSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG59O1xuXG5tb2R1bGUgVUV4cCA9IHtcbiAgaW5jbHVkZSBUZXJtQmFzZS5VRXhwO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjbHMgPVxuICAgIHwgSW52YWxpZFxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGVcbiAgICB8IFRyaXZcbiAgICB8IEJvb2xcbiAgICB8IEludFxuICAgIHwgRmxvYXRcbiAgICB8IFN0cmluZ1xuICAgIHwgTGlzdExpdFxuICAgIHwgQ29uc3RydWN0b3JcbiAgICB8IEZ1blxuICAgIHwgVHVwbGVcbiAgICB8IFZhclxuICAgIHwgTWV0YVZhclxuICAgIHwgTGV0XG4gICAgfCBUeUFsaWFzXG4gICAgfCBBcFxuICAgIHwgUGlwZWxpbmVcbiAgICB8IElmXG4gICAgfCBTZXFcbiAgICB8IFRlc3RcbiAgICB8IEZpbHRlclxuICAgIHwgUGFyZW5zXG4gICAgfCBDb25zXG4gICAgfCBVbk9wKG9wX3VuKVxuICAgIHwgQmluT3Aob3BfYmluKVxuICAgIHwgTWF0Y2hcbiAgICB8IExpc3RDb25jYXQ7XG5cbiAgbGV0IGhvbGUgPSAodG1zOiBsaXN0KGFueSkpOiB0ZXJtID0+XG4gICAgc3dpdGNoICh0bXMpIHtcbiAgICB8IFtdID0+IEVtcHR5SG9sZVxuICAgIHwgW18sIC4uLl9dID0+IE11bHRpSG9sZSh0bXMpXG4gICAgfTtcblxuICBsZXQgcmVwX2lkID0gKHtpZHMsIF99KSA9PiB7XG4gICAgYXNzZXJ0KGlkcyAhPSBbXSk7XG4gICAgTGlzdC5oZChpZHMpO1xuICB9O1xuXG4gIGxldCBjbHNfb2ZfdGVybTogdGVybSA9PiBjbHMgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gTXVsdGlIb2xlXG4gICAgfCBUcml2ID0+IFRyaXZcbiAgICB8IEJvb2woXykgPT4gQm9vbFxuICAgIHwgSW50KF8pID0+IEludFxuICAgIHwgRmxvYXQoXykgPT4gRmxvYXRcbiAgICB8IFN0cmluZyhfKSA9PiBTdHJpbmdcbiAgICB8IExpc3RMaXQoXykgPT4gTGlzdExpdFxuICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICB8IEZ1bihfKSA9PiBGdW5cbiAgICB8IFR1cGxlKF8pID0+IFR1cGxlXG4gICAgfCBWYXIoXykgPT4gVmFyXG4gICAgfCBMZXQoXykgPT4gTGV0XG4gICAgfCBUeUFsaWFzKF8pID0+IFR5QWxpYXNcbiAgICB8IEFwKF8pID0+IEFwXG4gICAgfCBQaXBlbGluZShfKSA9PiBQaXBlbGluZVxuICAgIHwgSWYoXykgPT4gSWZcbiAgICB8IFNlcShfKSA9PiBTZXFcbiAgICB8IFRlc3QoXykgPT4gVGVzdFxuICAgIHwgRmlsdGVyKF8pID0+IEZpbHRlclxuICAgIHwgUGFyZW5zKF8pID0+IFBhcmVuc1xuICAgIHwgQ29ucyhfKSA9PiBDb25zXG4gICAgfCBMaXN0Q29uY2F0KF8pID0+IExpc3RDb25jYXRcbiAgICB8IFVuT3Aob3AsIF8pID0+IFVuT3Aob3ApXG4gICAgfCBCaW5PcChvcCwgXywgXykgPT4gQmluT3Aob3ApXG4gICAgfCBNYXRjaChfKSA9PiBNYXRjaDtcblxuICBsZXQgc2hvd19vcF91bl9tZXRhOiBvcF91bl9tZXRhID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBVbnF1b3RlID0+IFwiVW4tcXVvdGF0aW9uXCI7XG5cbiAgbGV0IHNob3dfb3BfdW5fYm9vbDogb3BfdW5fYm9vbCA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgTm90ID0+IFwiQm9vbGVhbiBOZWdhdGlvblwiO1xuXG4gIGxldCBzaG93X29wX3VuX2ludDogb3BfdW5faW50ID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBNaW51cyA9PiBcIkludGVnZXIgTmVnYXRpb25cIjtcblxuICBsZXQgc2hvd191bm9wOiBvcF91biA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgTWV0YShvcCkgPT4gc2hvd19vcF91bl9tZXRhKG9wKVxuICAgIHwgQm9vbChvcCkgPT4gc2hvd19vcF91bl9ib29sKG9wKVxuICAgIHwgSW50KG9wKSA9PiBzaG93X29wX3VuX2ludChvcCk7XG5cbiAgbGV0IHNob3dfb3BfYmluX2Jvb2w6IG9wX2Jpbl9ib29sID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBBbmQgPT4gXCJCb29sZWFuIENvbmp1bmN0aW9uXCJcbiAgICB8IE9yID0+IFwiQm9vbGVhbiBEaXNqdW5jdGlvblwiO1xuXG4gIGxldCBzaG93X29wX2Jpbl9pbnQ6IG9wX2Jpbl9pbnQgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IFBsdXMgPT4gXCJJbnRlZ2VyIEFkZGl0aW9uXCJcbiAgICB8IE1pbnVzID0+IFwiSW50ZWdlciBTdWJ0cmFjdGlvblwiXG4gICAgfCBUaW1lcyA9PiBcIkludGVnZXIgTXVsdGlwbGljYXRpb25cIlxuICAgIHwgUG93ZXIgPT4gXCJJbnRlZ2VyIEV4cG9uZW50aWF0aW9uXCJcbiAgICB8IERpdmlkZSA9PiBcIkludGVnZXIgRGl2aXNpb25cIlxuICAgIHwgTGVzc1RoYW4gPT4gXCJJbnRlZ2VyIExlc3MgVGhhblwiXG4gICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCJJbnRlZ2VyIExlc3MgVGhhbiBvciBFcXVhbFwiXG4gICAgfCBHcmVhdGVyVGhhbiA9PiBcIkludGVnZXIgR3JlYXRlciBUaGFuXCJcbiAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIkludGVnZXIgR3JlYXRlciBUaGFuIG9yIEVxdWFsXCJcbiAgICB8IEVxdWFscyA9PiBcIkludGVnZXIgRXF1YWxpdHlcIlxuICAgIHwgTm90RXF1YWxzID0+IFwiSW50ZWdlciBJbmVxdWFsaXR5XCI7XG5cbiAgbGV0IHNob3dfb3BfYmluX2Zsb2F0OiBvcF9iaW5fZmxvYXQgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IFBsdXMgPT4gXCJGbG9hdCBBZGRpdGlvblwiXG4gICAgfCBNaW51cyA9PiBcIkZsb2F0IFN1YnRyYWN0aW9uXCJcbiAgICB8IFRpbWVzID0+IFwiRmxvYXQgTXVsdGlwbGljYXRpb25cIlxuICAgIHwgUG93ZXIgPT4gXCJGbG9hdCBFeHBvbmVudGlhdGlvblwiXG4gICAgfCBEaXZpZGUgPT4gXCJGbG9hdCBEaXZpc2lvblwiXG4gICAgfCBMZXNzVGhhbiA9PiBcIkZsb2F0IExlc3MgVGhhblwiXG4gICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCJGbG9hdCBMZXNzIFRoYW4gb3IgRXF1YWxcIlxuICAgIHwgR3JlYXRlclRoYW4gPT4gXCJGbG9hdCBHcmVhdGVyIFRoYW5cIlxuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiRmxvYXQgR3JlYXRlciBUaGFuIG9yIEVxdWFsXCJcbiAgICB8IEVxdWFscyA9PiBcIkZsb2F0IEVxdWFsaXR5XCJcbiAgICB8IE5vdEVxdWFscyA9PiBcIkZsb2F0IEluZXF1YWxpdHlcIjtcblxuICBsZXQgc2hvd19vcF9iaW5fc3RyaW5nOiBvcF9iaW5fc3RyaW5nID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBDb25jYXQgPT4gXCJTdHJpbmcgQ29uY2F0ZW5hdGlvblwiXG4gICAgfCBFcXVhbHMgPT4gXCJTdHJpbmcgRXF1YWxpdHlcIjtcblxuICBsZXQgc2hvd19iaW5vcDogb3BfYmluID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBJbnQob3ApID0+IHNob3dfb3BfYmluX2ludChvcClcbiAgICB8IEZsb2F0KG9wKSA9PiBzaG93X29wX2Jpbl9mbG9hdChvcClcbiAgICB8IEJvb2wob3ApID0+IHNob3dfb3BfYmluX2Jvb2wob3ApXG4gICAgfCBTdHJpbmcob3ApID0+IHNob3dfb3BfYmluX3N0cmluZyhvcCk7XG5cbiAgbGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQgPT4gXCJJbnZhbGlkIGV4cHJlc3Npb25cIlxuICAgIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIGV4cHJlc3Npb25cIlxuICAgIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgZXhwcmVzc2lvbiBob2xlXCJcbiAgICB8IFRyaXYgPT4gXCJUcml2aWFsIGxpdGVyYWxcIlxuICAgIHwgQm9vbCA9PiBcIkJvb2xlYW4gbGl0ZXJhbFwiXG4gICAgfCBJbnQgPT4gXCJJbnRlZ2VyIGxpdGVyYWxcIlxuICAgIHwgRmxvYXQgPT4gXCJGbG9hdCBsaXRlcmFsXCJcbiAgICB8IFN0cmluZyA9PiBcIlN0cmluZyBsaXRlcmFsXCJcbiAgICB8IExpc3RMaXQgPT4gXCJMaXN0IGxpdGVyYWxcIlxuICAgIHwgQ29uc3RydWN0b3IgPT4gXCJDb25zdHJ1Y3RvclwiXG4gICAgfCBGdW4gPT4gXCJGdW5jdGlvbiBsaXRlcmFsXCJcbiAgICB8IFR1cGxlID0+IFwiVHVwbGUgbGl0ZXJhbFwiXG4gICAgfCBWYXIgPT4gXCJWYXJpYWJsZSByZWZlcmVuY2VcIlxuICAgIHwgTWV0YVZhciA9PiBcIk1ldGEgdmFyaWFibGUgcmVmZXJlbmNlXCJcbiAgICB8IExldCA9PiBcIkxldCBleHByZXNzaW9uXCJcbiAgICB8IFR5QWxpYXMgPT4gXCJUeXBlIEFsaWFzIGRlZmluaXRpb25cIlxuICAgIHwgQXAgPT4gXCJBcHBsaWNhdGlvblwiXG4gICAgfCBQaXBlbGluZSA9PiBcIlBpcGVsaW5lIGV4cHJlc3Npb25cIlxuICAgIHwgSWYgPT4gXCJJZiBleHByZXNzaW9uXCJcbiAgICB8IFNlcSA9PiBcIlNlcXVlbmNlIGV4cHJlc3Npb25cIlxuICAgIHwgVGVzdCA9PiBcIlRlc3RcIlxuICAgIHwgRmlsdGVyID0+IFwiRmlsdGVyXCJcbiAgICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvblwiXG4gICAgfCBDb25zID0+IFwiQ29uc1wiXG4gICAgfCBMaXN0Q29uY2F0ID0+IFwiTGlzdCBDb25jYXRlbmF0aW9uXCJcbiAgICB8IEJpbk9wKG9wKSA9PiBzaG93X2Jpbm9wKG9wKVxuICAgIHwgVW5PcChvcCkgPT4gc2hvd191bm9wKG9wKVxuICAgIHwgTWF0Y2ggPT4gXCJDYXNlIGV4cHJlc3Npb25cIjtcblxuICBsZXQgcmVjIGlzX2Z1biA9IChlOiB0KSA9PiB7XG4gICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICB8IFBhcmVucyhlKSA9PiBpc19mdW4oZSlcbiAgICB8IEZ1bihfKSA9PiB0cnVlXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgVHJpdlxuICAgIHwgQm9vbChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgVmFyKF8pXG4gICAgfCBMZXQoXylcbiAgICB8IFR5QWxpYXMoXylcbiAgICB8IEFwKF8pXG4gICAgfCBQaXBlbGluZShfKVxuICAgIHwgSWYoXylcbiAgICB8IFNlcShfKVxuICAgIHwgVGVzdChfKVxuICAgIHwgRmlsdGVyKF8pXG4gICAgfCBDb25zKF8pXG4gICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgfCBVbk9wKF8pXG4gICAgfCBCaW5PcChfKVxuICAgIHwgTWF0Y2goXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGlzX3R1cGxlX29mX2Z1bmN0aW9ucyA9IChlOiB0KSA9PlxuICAgIGlzX2Z1bihlKVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhlKSA9PiBpc190dXBsZV9vZl9mdW5jdGlvbnMoZSlcbiAgICAgIHwgVHVwbGUoZXMpID0+IGVzIHw+IExpc3QuZm9yX2FsbChpc19mdW4pXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBUcml2XG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IFN0cmluZyhfKVxuICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICB8IEZ1bihfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgTGV0KF8pXG4gICAgICB8IFR5QWxpYXMoXylcbiAgICAgIHwgQXAoXylcbiAgICAgIHwgUGlwZWxpbmUoXylcbiAgICAgIHwgSWYoXylcbiAgICAgIHwgU2VxKF8pXG4gICAgICB8IFRlc3QoXylcbiAgICAgIHwgRmlsdGVyKF8pXG4gICAgICB8IENvbnMoXylcbiAgICAgIHwgTGlzdENvbmNhdChfKVxuICAgICAgfCBVbk9wKF8pXG4gICAgICB8IEJpbk9wKF8pXG4gICAgICB8IE1hdGNoKF8pXG4gICAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgICB9XG4gICAgKTtcblxuICBsZXQgY3RyX25hbWUgPSAoZTogdCk6IG9wdGlvbihDb25zdHJ1Y3Rvci50KSA9PlxuICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgfCBDb25zdHJ1Y3RvcihuYW1lKSA9PiBTb21lKG5hbWUpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xufTtcblxuLy8gVE9ETyhkKTogY29uc2lkZXIganVzdCBmb2xkaW5nIHRoaXMgaW50byBVRXhwXG5tb2R1bGUgVVJ1bCA9IHtcbiAgaW5jbHVkZSBUZXJtQmFzZS5VUnVsO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjbHMgPVxuICAgIHwgUnVsZTtcblxuICAvLyBleGFtcGxlIG9mIGF3a3dhcmRuZXNzIGluZHVjZWQgYnkgaGF2aW5nIGZvcm1zIGxpa2UgcnVsZXNcbiAgLy8gdGhhdCBtYXkgaGF2ZSBhIGRpZmZlcmVudC1zb3J0ZWQgY2hpbGQgd2l0aCBubyBkZWxpbWl0ZXJzXG4gIC8vIChlZyBzY3J1dCB3aXRoIG5vIHJ1bGVzKVxuICBsZXQgaWRzID0gKH5hbnlfaWRzLCB7aWRzLCB0ZXJtfTogdCkgPT5cbiAgICBzd2l0Y2ggKGlkcykge1xuICAgIHwgW18sIC4uLl9dID0+IGlkc1xuICAgIHwgW10gPT5cbiAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgfCBIb2xlKFt0bSwgLi4uX10pID0+IGFueV9pZHModG0pXG4gICAgICB8IFJ1bGVzKHNjcnV0LCBbXSkgPT4gc2NydXQuaWRzXG4gICAgICB8IF8gPT4gW11cbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCByZXBfaWQgPSAofmFueV9pZHMsIHRtKSA9PlxuICAgIHN3aXRjaCAoaWRzKH5hbnlfaWRzLCB0bSkpIHtcbiAgICB8IFtdID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJUZXJtLlVFeHAucmVwX2lkXCIpKVxuICAgIHwgW2lkLCAuLi5fXSA9PiBpZFxuICAgIH07XG59O1xuXG5tb2R1bGUgQ2xzID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBFeHAoVUV4cC5jbHMpXG4gICAgfCBQYXQoVVBhdC5jbHMpXG4gICAgfCBUeXAoVVR5cC5jbHMpXG4gICAgfCBUUGF0KFVUUGF0LmNscylcbiAgICB8IFJ1bChVUnVsLmNscylcbiAgICB8IFNlY29uZGFyeShTZWNvbmRhcnkuY2xzKTtcblxuICBsZXQgc2hvdyA9IChjbHM6IHQpID0+XG4gICAgc3dpdGNoIChjbHMpIHtcbiAgICB8IEV4cChjbHMpID0+IFVFeHAuc2hvd19jbHMoY2xzKVxuICAgIHwgUGF0KGNscykgPT4gVVBhdC5zaG93X2NscyhjbHMpXG4gICAgfCBUeXAoY2xzKSA9PiBVVHlwLnNob3dfY2xzKGNscylcbiAgICB8IFRQYXQoY2xzKSA9PiBVVFBhdC5zaG93X2NscyhjbHMpXG4gICAgfCBSdWwoY2xzKSA9PiBVUnVsLnNob3dfY2xzKGNscylcbiAgICB8IFNlY29uZGFyeShjbHMpID0+IFNlY29uZGFyeS5zaG93X2NscyhjbHMpXG4gICAgfTtcbn07XG5cbmxldCByZWMgaWRzID1cbiAgZnVuXG4gIHwgRXhwKHRtKSA9PiB0bS5pZHNcbiAgfCBQYXQodG0pID0+IHRtLmlkc1xuICB8IFR5cCh0bSkgPT4gdG0uaWRzXG4gIHwgVFBhdCh0bSkgPT4gdG0uaWRzXG4gIHwgUnVsKHRtKSA9PiBVUnVsLmlkcyh+YW55X2lkcz1pZHMsIHRtKVxuICB8IE51bCAoKVxuICB8IEFueSAoKSA9PiBbXTtcblxuLy8gVGVybXMgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgdGlsZXMsIGVnIHRoZSBjb21tYXMgaW4gYW4gbi10dXBsZSxcbi8vIHRoZSBydWxlcyBvZiBhIGNhc2UgZXhwcmVzc2lvbiArIHRoZSBzdXJyb3VuZGluZyBjYXNlLWVuZCB0aWxlLFxuLy8gdGhlIGxpc3QgYnJhY2tldHMgdGlsZSBjb3VwbGVkIHdpdGggdGhlIGVsZW0tc2VwYXJhdGluZyBjb21tYXMuXG4vLyBUaGUgX3JlcHJlc2VudGF0aXZlIGlkXyBpcyB0aGUgY2Fub25pY2FsIHRpbGUgaWQgdXNlZCB0byBpZGVudGlmeVxuLy8gYW5kIGxvb2sgdXAgaW5mbyBhYm91dCBhIHRlcm0uXG4vL1xuLy8gSW4gaW5zdGFuY2VzIGxpa2UgY2FzZSBleHByZXNzaW9ucyBhbmQgbGlzdCBsaXRlcmFscywgd2hlcmUgYSBwYXJlbnRcbi8vIHRpbGUgc3Vycm91bmRzIHRoZSBvdGhlciB0aWxlcywgdGhlIHJlcHJlc2VudGF0aXZlIGlkIGlzIHRoZSBwYXJlbnQgdGlsZSdzLlxuLy8gSW4gb3RoZXIgaW5zdGFuY2VzIGxpa2Ugbi10dXBsZXMsIHdoZXJlIHRoZSBjb21tYXMgYXJlIGFsbCBzaWJsaW5ncyxcbi8vIHRoZSByZXByZXNlbnRhdGl2ZSBpZCBpcyBvbmUgb2YgdGhlIGNvbW1hIGlkcywgdW5zcGVjaWZpZWQgd2hpY2ggb25lLlxuLy8gKFRoaXMgd291bGQgY2hhbmdlIGZvciBuLXR1cGxlcyBpZiB3ZSBkZWNpZGVkIHBhcmVudGhlc2VzIGFyZSBuZWNlc3NhcnkuKVxubGV0IHJlcF9pZCA9XG4gIGZ1blxuICB8IEV4cCh0bSkgPT4gVUV4cC5yZXBfaWQodG0pXG4gIHwgUGF0KHRtKSA9PiBVUGF0LnJlcF9pZCh0bSlcbiAgfCBUeXAodG0pID0+IFVUeXAucmVwX2lkKHRtKVxuICB8IFRQYXQodG0pID0+IFVUUGF0LnJlcF9pZCh0bSlcbiAgfCBSdWwodG0pID0+IFVSdWwucmVwX2lkKH5hbnlfaWRzPWlkcywgdG0pXG4gIHwgTnVsICgpXG4gIHwgQW55ICgpID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJUZXJtLnJlcF9pZFwiKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcbm9wZW4gVGVybTtcblxuLyogSU5GTy5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBjdXJzb3IgSU5GTyBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggaXMgdXNlZFxuICAgdG8gcmVwcmVzZW50IHRoZSBzdGF0aWMgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgdGVybSBpbiB0aGVcbiAgIEFTVC4gVGhpcyBpbmNsdWRlcyB0aGUgdGVybSBpdHNlbGYsIGFuZCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvXG4gICB0eXBpbmcgYW5kIHN5bnRheCwgaW5jbHVkZWQgZXJyb25lb3VzIHN0YXRlcy5cblxuICAgRWFjaCB0ZXJtIGlzIGFzc2lnbmVkIGEgU1RBVFVTLCB3aGljaCBpcyBkaXJlY3RseSB1c2VkIHRvIGRldGVybWluZVxuICAgdGhlIG1lc3NhZ2UgZGlzcGxheWVkIHRvIHRoZSB1c2VyIGluIEN1cnNvckluc3BlY3Rvci5yZS4gRWFjaCBzb3J0XG4gICBoYXMgaXRzIG93biBzdGF0dXMgZGF0YXR5cGUsIHdoaWNoIGlzIGRpdmlkZWQgaW50byBPSyBzdGF0ZXMgKG5vdFxuICAgaW4gZXJyb3IgaG9sZXMpIGFuZCBFUlJPUiBzdGF0ZXMgKGluIGVycm9yIGhvbGVzKS5cblxuICAgUmVnYXJkbGVzcyBvZiBlcnJvcnMsIGV2ZXJ5IGV4cHJlc3Npb24gJiBwYXR0ZXJuIHRlcm0gaXMgdWx0aW1hdGVseVxuICAgYXNzaWduZWQgYSBGSVhFRCBUWVBFLCB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgdGVybSBhZnRlciBob2xlXG4gICBmaXhpbmc7IHRoYXQgaXMsIGFsbCBvdGhlcndpc2UgaWxsLXR5cGVkIHRlcm1zIGFyZSBjb25zaWRlcmVkIHRvXG4gICBiZSAnd3JhcHBlZCBpbiBub24tZW1wdHkgaG9sZXMnLCBpLmUuIGFzc2lnbmVkIGFuIFVua25vd24gdHlwZS5cblxuICAgRml4ZWQgdHlwZXMgYXJlIGRldGVybWluZWQgYnkgcmVjb25jaWxsaW5nIHR3byBzb3VyY2VzIG9mIHR5cGVcbiAgIGluZm9ybWF0aW9uOiB0aGUgU0VMRiAoU2VsZi5yZSksIHJlcHJlc2VudGluZyB0aGUgdHlwZSBpbmZvcm1hdGlvblxuICAgZGVyaXZhYmxlIGZyb20gYSB0ZXJtIGluIGlzb2xhdGlvbiwgYW5kIHRoZSBNT0RFIChNb2RlLnJlKSxcbiAgIHJlcHJlc2VudGluZyB0aGUgZXhwZWN0ZWQgdHlwZSBpbmZvcm1hdGlvbiBpbXBvc2VkIGJ5IHRoZSBzdXJyb3VuZGluZ1xuICAgc3ludGFjdGljIGNvbnRleHQuIEEgc3VjY2Vzc2Z1bCByZWNvbmNpbGxpYXRpb24gcmVzdWx0cyBpbiBhbiBPS1xuICAgc3RhdHVzOyBvdGhlcndpc2UsIGFuIEVSUk9SIHN0YXR1cywgYnV0IGluIGJvdGggY2FzZXMsIGEgZml4ZWQgdHlwZVxuICAgaXMgZGV0ZXJtaW5lZC5cblxuICAgKi9cblxuLyogVGhlIGlkcyBvZiBhIHRlcm0ncyBhbmNlc3RvcnMgaW4gdGhlIEFTVCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhbmNlc3RvcnMgPSBsaXN0KElkLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2luY29uc2lzdGVudCA9XG4gIC8qIFNlbGYgdHlwZSAoc3luKSBpbmNvbnNpc3RlbnQgd2l0aCBleHBlY3RlZCB0eXBlIChhbmEpICovXG4gIHwgRXhwZWN0YXRpb24oe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgfSlcbiAgLyogSW5jb25zaXN0ZW50IG1hdGNoIG9yIGxpc3RsaXQgKi9cbiAgfCBJbnRlcm5hbChsaXN0KFR5cC50KSlcbiAgLyogQmFkIGZ1bmN0aW9uIHBvc2l0aW9uICovXG4gIHwgV2l0aEFycm93KFR5cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9ub190eXBlID1cbiAgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUb2tlbihUb2tlbi50KVxuICAvKiBFbXB0eSBhcHBsaWNhdGlvbiBvZiBmdW5jdGlvbiB3aXRoIGluY29uc2lzdGVudCB0eXBlICovXG4gIHwgQmFkVHJpdkFwKFR5cC50KVxuICAvKiBTdW0gY29uc3RydWN0b3IgbmVpdGVyIGJvdW5kIG5vciBpbiBhbmEgdHlwZSAqL1xuICB8IEZyZWVDb25zdHJ1Y3RvcihDb25zdHJ1Y3Rvci50KTtcblxuLyogRXJyb3JzIHdoaWNoIGNhbiBhcHBseSB0byBlaXRoZXIgZXhwcmVzc2lvbiBvciBwYXR0ZXJucyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9jb21tb24gPVxuICAvKiBVbmRlcmRldGVybWluZWQ6IE5vIHR5cGUgY2FuIGJlIGFzc2lnbmVkICovXG4gIHwgTm9UeXBlKGVycm9yX25vX3R5cGUpXG4gIC8qIE92ZXJkZXRlcm1pbmVkOiBDb25mbGljdGluZyB0eXBlIGV4cGVjdGF0aW9ucyAqL1xuICB8IEluY29uc2lzdGVudChlcnJvcl9pbmNvbnNpc3RlbnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2V4cCA9XG4gIHwgRnJlZVZhcmlhYmxlKFZhci50KSAvKiBVbmJvdW5kIHZhcmlhYmxlIChub3QgaW4gdHlwaW5nIGNvbnRleHQpICovXG4gIHwgQ29tbW9uKGVycm9yX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3JfcGF0ID1cbiAgfCBFeHBlY3RlZENvbnN0cnVjdG9yIC8qIE9ubHkgY29uc3RydXRvcnMgY2FuIGJlIGFwcGxpZWQgKi9cbiAgfCBDb21tb24oZXJyb3JfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19hbmEgPVxuICAvKiBUaGUgZXhwZWN0ZWQgKGFuYSkgdHlwZSBhbmQgdGhlIHNlbGYgKHN5bikgdHlwZSBhcmVcbiAgICAgY29uc2lzdGVudCwgYXMgd2l0bmVzc2VkIGJ5IHRoZWlyIGpvaW50IHR5cGUgKGpvaW4pICovXG4gIHwgQ29uc2lzdGVudCh7XG4gICAgICBhbmE6IFR5cC50LFxuICAgICAgc3luOiBUeXAudCxcbiAgICAgIGpvaW46IFR5cC50LFxuICAgIH0pXG4gIC8qIEEgbWF0Y2ggZXhwcmVzc2lvbiBvciBsaXN0IGxpdGVyYWwgd2hpY2gsIGluIHN5bnRoZXRpYyBwb3NpdGlvbixcbiAgICAgd291bGQgYmUgbWFya2VkIGFzIGludGVybmFsbHkgaW5jb25zaXN0ZW50LCBidXQgaXMgY29uc2lkZXJlZFxuICAgICBmaW5lIGFzIHRoZSBleHBlY3RlZCB0eXBlIHByb3ZpZGVzIGEgY29uc2lzdGVudCBsb3dlciBib3VuZFxuICAgICAob2Z0ZW4gVW5rbm93bikgZm9yIHRoZSB0eXBlcyBvZiB0aGUgYnJhbmNoZXMvZWxlbWVudHMgKi9cbiAgfCBJbnRlcm5hbGx5SW5jb25zaXN0ZW50KHtcbiAgICAgIGFuYTogVHlwLnQsXG4gICAgICBub2pvaW46IGxpc3QoVHlwLnQpLFxuICAgIH0pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9rX2NvbW1vbiA9XG4gIHwgU3luKFR5cC50KVxuICB8IEFuYShva19hbmEpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9rX2V4cCA9IG9rX2NvbW1vbjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19wYXQgPSBva19jb21tb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX2NvbW1vbiA9XG4gIHwgSW5Ib2xlKGVycm9yX2NvbW1vbilcbiAgfCBOb3RJbkhvbGUob2tfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfZXhwID1cbiAgfCBJbkhvbGUoZXJyb3JfZXhwKVxuICB8IE5vdEluSG9sZShva19leHApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c19wYXQgPVxuICB8IEluSG9sZShlcnJvcl9wYXQpXG4gIHwgTm90SW5Ib2xlKG9rX3BhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX3ZhcmlhbnQgPVxuICB8IFVuaXF1ZVxuICB8IER1cGxpY2F0ZTtcblxuLyogRXhwZWN0YXRpb24gaW1wb3NlZCBvbiBhIHR5cGUgYnkgdGhlIHBhcmVudCBmb3JtLlxuICAgVE9ETzogVGhpcyBpcyBmdW5kYW1lbnRhbGx5IHN5bnRhY3RpYyBhbmQgc2hvdWxkXG4gICBldmVudHVhbGx5IGJlIHJlaW1wbGVtZXRlZCB2aWEgYSBzZXBlcmF0ZSBzb3J0ICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHR5cF9leHBlY3RzID1cbiAgfCBUeXBlRXhwZWN0ZWRcbiAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKHN0YXR1c192YXJpYW50LCBUeXAudClcbiAgfCBWYXJpYW50RXhwZWN0ZWQoc3RhdHVzX3ZhcmlhbnQsIFR5cC50KTtcblxuLyogVHlwZSB0ZXJtIGVycm9yc1xuICAgVE9ETzogVGhlIHRocmVlIGFkZGl0aW9uYWwgZXJyb3JzIHN0YXR1c2VzXG4gICBhcmUgZnVuZGFtZW50YWxseSBzeW50YWN0aWMgYW5kIHNob3VsZCB3aGVuXG4gICBwb3NzaWJsZSBiZSByZWltcGxlbWV0ZWQgdmlhIGEgc2VwZXJhdGUgc29ydCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl90eXAgPVxuICB8IEJhZFRva2VuKFRva2VuLnQpIC8qIEludmFsaWQgdG9rZW4sIHRyZWF0ZWQgYXMgdHlwZSBob2xlICovXG4gIHwgRnJlZVR5cGVWYXJpYWJsZShUeXBWYXIudCkgLyogRnJlZSB0eXBlIHZhcmlhYmxlICovXG4gIHwgRHVwbGljYXRlQ29uc3RydWN0b3IoQ29uc3RydWN0b3IudCkgLyogRHVwbGljYXRlIGN0ciBpbiBzYW1lIHN1bSAqL1xuICB8IFdhbnRUeXBlRm91bmRBcFxuICB8IFdhbnRDb25zdHJ1Y3RvckZvdW5kVHlwZShUeXAudClcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZEFwO1xuXG4vKiBUeXBlIG9rIHN0YXR1c2VzIGZvciBjdXJzb3IgaW5zcGVjdG9yICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9rX3R5cCA9XG4gIHwgVmFyaWFudChDb25zdHJ1Y3Rvci50LCBUeXAudClcbiAgfCBWYXJpYW50SW5jb21wbGV0ZShUeXAudClcbiAgfCBUeXBlQWxpYXMoVHlwVmFyLnQsIFR5cC50KVxuICB8IFR5cGUoVHlwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c190eXAgPVxuICB8IEluSG9sZShlcnJvcl90eXApXG4gIHwgTm90SW5Ib2xlKG9rX3R5cCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHlwZV92YXJfZXJyID1cbiAgfCBPdGhlclxuICB8IE5vdENhcGl0YWxpemVkO1xuXG4vKiBUeXBlIHBhdHRlcm4gdGVybSBlcnJvcnMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3JfdHBhdCA9XG4gIHwgU2hhZG93c1R5cGUoVHlwVmFyLnQpXG4gIHwgTm90QVZhcih0eXBlX3Zhcl9lcnIpO1xuXG4vKiBUeXBlIHBhdHRlcm4gb2sgc3RhdHVzZXMgZm9yIGN1cnNvciBpbnNwZWN0b3IgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfdHBhdCA9XG4gIHwgRW1wdHlcbiAgfCBWYXIoVHlwVmFyLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c190cGF0ID1cbiAgfCBOb3RJbkhvbGUob2tfdHBhdClcbiAgfCBJbkhvbGUoZXJyb3JfdHBhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwID0ge1xuICB0ZXJtOiBVRXhwLnQsIC8qIFRoZSB0ZXJtIHVuZGVyIGNvbnNpZGVyYXRpb24gKi9cbiAgYW5jZXN0b3JzLCAvKiBBc2NlbmRpbmcgbGlzdCBvZiBjb250YWluaW5nIHRlcm0gaWRzICovXG4gIGN0eDogQ3R4LnQsIC8qIFR5cGluZyBjb250ZXh0IGZvciB0aGUgdGVybSAqL1xuICBtb2RlOiBNb2RlLnQsIC8qIFBhcmVudGFsIHR5cGUgZXhwZWN0YXRpb25zICAqL1xuICBzZWxmOiBTZWxmLmV4cCwgLyogRXhwZWN0YXRpb24taW5kZXBlbmRlbnQgdHlwZSBpbmZvICovXG4gIGNvX2N0eDogQ29DdHgudCwgLyogTG9jYWxseSBmcmVlIHZhcmlhYmxlcyAqL1xuICBjbHM6IFRlcm0uQ2xzLnQsIC8qIERFUklWRUQ6IFN5bnRheCBjbGFzcyAoaS5lLiBmb3JtIG5hbWUpICovXG4gIHN0YXR1czogc3RhdHVzX2V4cCwgLyogREVSSVZFRDogT2svRXJyb3Igc3RhdHVzZXMgZm9yIGRpc3BsYXkgKi9cbiAgdHk6IFR5cC50IC8qIERFUklWRUQ6IFR5cGUgYWZ0ZXIgbm9uZW1wdHkgaG9sZSBmaXhpbmcgKi9cbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGF0ID0ge1xuICB0ZXJtOiBVUGF0LnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgY29fY3R4OiBDb0N0eC50LFxuICBtb2RlOiBNb2RlLnQsXG4gIHNlbGY6IFNlbGYucGF0LFxuICBjbHM6IFRlcm0uQ2xzLnQsXG4gIHN0YXR1czogc3RhdHVzX3BhdCxcbiAgdHk6IFR5cC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXAgPSB7XG4gIHRlcm06IFVUeXAudCxcbiAgYW5jZXN0b3JzLFxuICBjdHg6IEN0eC50LFxuICBleHBlY3RzOiB0eXBfZXhwZWN0cyxcbiAgY2xzOiBUZXJtLkNscy50LFxuICBzdGF0dXM6IHN0YXR1c190eXAsXG4gIHR5OiBUeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHBhdCA9IHtcbiAgdGVybTogVVRQYXQudCxcbiAgYW5jZXN0b3JzLFxuICBjdHg6IEN0eC50LFxuICBjbHM6IFRlcm0uQ2xzLnQsXG4gIHN0YXR1czogc3RhdHVzX3RwYXQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNlY29uZGFyeSA9IHtcbiAgaWQ6IElkLnQsIC8vIElkIG9mIHRlcm0gc3RhdGljIGluZm8gaXMgc291cmNlZCBmcm9tXG4gIGNsczogVGVybS5DbHMudCwgLy8gQ2xzIG9mIHNlY29uZGFyeSwgbm90IHNvdXJjZSB0ZXJtXG4gIHNvcnQ6IFNvcnQudCwgLy8gZnJvbSBzb3VyY2UgdGVybVxuICBjdHg6IEN0eC50IC8vIGZyb20gc291cmNlIHRlcm1cbn07XG5cbi8qIFRoZSBzdGF0aWMgaW5mb3JtYXRpb24gY29sbGF0ZWQgZm9yIGVhY2ggdGVybSAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBJbmZvRXhwKGV4cClcbiAgfCBJbmZvUGF0KHBhdClcbiAgfCBJbmZvVHlwKHR5cClcbiAgfCBJbmZvVFBhdCh0cGF0KVxuICB8IFNlY29uZGFyeShzZWNvbmRhcnkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yID1cbiAgfCBFeHAoZXJyb3JfZXhwKVxuICB8IFBhdChlcnJvcl9wYXQpXG4gIHwgVHlwKGVycm9yX3R5cClcbiAgfCBUUGF0KGVycm9yX3RwYXQpO1xuXG5sZXQgc29ydF9vZjogdCA9PiBTb3J0LnQgPVxuICBmdW5cbiAgfCBJbmZvRXhwKF8pID0+IEV4cFxuICB8IEluZm9QYXQoXykgPT4gUGF0XG4gIHwgSW5mb1R5cChfKSA9PiBUeXBcbiAgfCBJbmZvVFBhdChfKSA9PiBUUGF0XG4gIHwgU2Vjb25kYXJ5KHMpID0+IHMuc29ydDtcblxubGV0IGNsc19vZjogdCA9PiBDbHMudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2NscywgX30pXG4gIHwgSW5mb1BhdCh7Y2xzLCBffSlcbiAgfCBJbmZvVHlwKHtjbHMsIF99KVxuICB8IEluZm9UUGF0KHtjbHMsIF99KVxuICB8IFNlY29uZGFyeSh7Y2xzLCBffSkgPT4gY2xzO1xuXG5sZXQgY3R4X29mOiB0ID0+IEN0eC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7Y3R4LCBffSlcbiAgfCBJbmZvUGF0KHtjdHgsIF99KVxuICB8IEluZm9UeXAoe2N0eCwgX30pXG4gIHwgSW5mb1RQYXQoe2N0eCwgX30pXG4gIHwgU2Vjb25kYXJ5KHtjdHgsIF99KSA9PiBjdHg7XG5cbmxldCBhbmNlc3RvcnNfb2Y6IHQgPT4gYW5jZXN0b3JzID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7YW5jZXN0b3JzLCBffSlcbiAgfCBJbmZvUGF0KHthbmNlc3RvcnMsIF99KVxuICB8IEluZm9UeXAoe2FuY2VzdG9ycywgX30pXG4gIHwgSW5mb1RQYXQoe2FuY2VzdG9ycywgX30pID0+IGFuY2VzdG9yc1xuICB8IFNlY29uZGFyeShfKSA9PiBbXTsgLy9UT0RPXG5cbmxldCBpZF9vZjogdCA9PiBJZC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cChpKSA9PiBUZXJtLlVFeHAucmVwX2lkKGkudGVybSlcbiAgfCBJbmZvUGF0KGkpID0+IFRlcm0uVVBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IEluZm9UeXAoaSkgPT4gVGVybS5VVHlwLnJlcF9pZChpLnRlcm0pXG4gIHwgSW5mb1RQYXQoaSkgPT4gVGVybS5VVFBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IFNlY29uZGFyeShzKSA9PiBzLmlkO1xuXG5sZXQgZXJyb3Jfb2Y6IHQgPT4gb3B0aW9uKGVycm9yKSA9XG4gIGZ1blxuICB8IEluZm9FeHAoe3N0YXR1czogTm90SW5Ib2xlKF8pLCBffSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pXG4gIHwgSW5mb1R5cCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KVxuICB8IEluZm9UUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pID0+IE5vbmVcbiAgfCBJbmZvRXhwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShFeHAoZXJyKSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShQYXQoZXJyKSlcbiAgfCBJbmZvVHlwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShUeXAoZXJyKSlcbiAgfCBJbmZvVFBhdCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoVFBhdChlcnIpKVxuICB8IFNlY29uZGFyeShfKSA9PiBOb25lO1xuXG5sZXQgZXhwX2NvX2N0eDogZXhwID0+IENvQ3R4LnQgPSAoe2NvX2N0eCwgX30pID0+IGNvX2N0eDtcbmxldCBleHBfdHk6IGV4cCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcbmxldCBwYXRfY3R4OiBwYXQgPT4gQ3R4LnQgPSAoe2N0eCwgX30pID0+IGN0eDtcbmxldCBwYXRfdHk6IHBhdCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcblxubGV0IHJlYyBzdGF0dXNfY29tbW9uID1cbiAgICAgICAgKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi50KTogc3RhdHVzX2NvbW1vbiA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoSnVzdChzeW4pLCBTeW4pID0+IE5vdEluSG9sZShTeW4oc3luKSlcbiAgfCAoSnVzdChzeW4pLCBBbmEoYW5hKSkgPT5cbiAgICBzd2l0Y2ggKFR5cC5qb2luX2ZpeChjdHgsIGFuYSwgc3luKSkge1xuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KEV4cGVjdGF0aW9uKHtzeW4sIGFuYX0pKSlcbiAgICB8IFNvbWUoam9pbikgPT4gTm90SW5Ib2xlKEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgam9pbn0pKSlcbiAgICB9XG4gIHwgKEp1c3Qoc3luKSwgU3luRnVuKSA9PlxuICAgIHN3aXRjaCAoXG4gICAgICBUeXAuam9pbl9maXgoY3R4LCBBcnJvdyhVbmtub3duKEludGVybmFsKSwgVW5rbm93bihJbnRlcm5hbCkpLCBzeW4pXG4gICAgKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoV2l0aEFycm93KHN5bikpKVxuICAgIHwgU29tZShfKSA9PiBOb3RJbkhvbGUoU3luKHN5bikpXG4gICAgfVxuICB8IChJc0NvbnN0cnVjdG9yKHtuYW1lLCBzeW5fdHl9KSwgXykgPT5cbiAgICAvKiBJZiBhIGN0ciBpcyBiZWluZyBhbmFseXplZCBhZ2FpbnN0IChhbiBhcnJvdyB0eXBlIHJldHVybmluZylcbiAgICAgICBhIHN1bSB0eXBlIGhhdmluZyB0aGF0IGN0ciBhcyBhIHZhcmlhbnQsIGl0cyBzZWxmIHR5cGUgaXNcbiAgICAgICBjb25zaWRlcmVkIHRvIGJlIGRldGVybWluZWQgYnkgdGhlIHN1bSB0eXBlOyBvdGhlcndpc2UsXG4gICAgICAgY2hlY2sgdGhlIGNvbnRleHQgZm9yIHRoZSBjdHIncyB0eXBlICovXG4gICAgc3dpdGNoIChNb2RlLmN0cl9hbmFfdHlwKGN0eCwgbW9kZSwgbmFtZSksIHN5bl90eSkge1xuICAgIHwgKFNvbWUoYW5hX3R5KSwgXykgPT4gc3RhdHVzX2NvbW1vbihjdHgsIG1vZGUsIEp1c3QoYW5hX3R5KSlcbiAgICB8IChfLCBTb21lKHN5bl90eSkpID0+IHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBKdXN0KHN5bl90eSkpXG4gICAgfCBfID0+IEluSG9sZShOb1R5cGUoRnJlZUNvbnN0cnVjdG9yKG5hbWUpKSlcbiAgICB9XG4gIHwgKEJhZFRva2VuKG5hbWUpLCBfKSA9PiBJbkhvbGUoTm9UeXBlKEJhZFRva2VuKG5hbWUpKSlcbiAgfCAoQmFkVHJpdkFwKHR5KSwgXykgPT4gSW5Ib2xlKE5vVHlwZShCYWRUcml2QXAodHkpKSlcbiAgfCAoSXNNdWx0aSwgXykgPT4gTm90SW5Ib2xlKFN5bihVbmtub3duKEludGVybmFsKSkpXG4gIHwgKE5vSm9pbih3cmFwLCB0eXMpLCBBbmEoYW5hKSkgPT5cbiAgICBsZXQgc3luOiBUeXAudCA9IFNlbGYuam9pbl9vZih3cmFwLCBVbmtub3duKEludGVybmFsKSk7XG4gICAgc3dpdGNoIChUeXAuam9pbl9maXgoY3R4LCBhbmEsIHN5bikpIHtcbiAgICB8IE5vbmUgPT4gSW5Ib2xlKEluY29uc2lzdGVudChFeHBlY3RhdGlvbih7YW5hLCBzeW59KSkpXG4gICAgfCBTb21lKF8pID0+XG4gICAgICBOb3RJbkhvbGUoXG4gICAgICAgIEFuYShJbnRlcm5hbGx5SW5jb25zaXN0ZW50KHthbmEsIG5vam9pbjogVHlwLm9mX3NvdXJjZSh0eXMpfSkpLFxuICAgICAgKVxuICAgIH07XG4gIHwgKE5vSm9pbihfLCB0eXMpLCBTeW4gfCBTeW5GdW4pID0+XG4gICAgSW5Ib2xlKEluY29uc2lzdGVudChJbnRlcm5hbChUeXAub2Zfc291cmNlKHR5cykpKSlcbiAgfTtcblxubGV0IHN0YXR1c19wYXQgPSAoY3R4OiBDdHgudCwgbW9kZTogTW9kZS50LCBzZWxmOiBTZWxmLnBhdCk6IHN0YXR1c19wYXQgPT5cbiAgc3dpdGNoIChtb2RlLCBzZWxmKSB7XG4gIHwgKFN5biB8IEFuYShfKSwgQ29tbW9uKHNlbGZfcGF0KSlcbiAgfCAoU3luRnVuLCBDb21tb24oSXNDb25zdHJ1Y3RvcihfKSBhcyBzZWxmX3BhdCkpID0+XG4gICAgLyogTGl0dGxlIGJpdCBvZiBhIGhhY2suIEFueXRoaW5nIG90aGVyIHRoYW4gYSBib3VuZCBjdHIgd2lsbCwgaW5cbiAgICAgICBmdW5jdGlvbiBwb3NpdGlvbiwgaGF2ZSBTeW5GdW4gbW9kZSAoc2VlIFR5cC5hcF9tb2RlKS4gU2luY2Ugd2VcbiAgICAgICBhcmUgcHJvaGliaXRpbmcgbm9uLWN0cnMgaW4gY3RyIGFwcGxpY2F0aW9ucyBpbiBwYXR0ZXJucyBmb3Igbm93LFxuICAgICAgIHdlIGNhdGNoIHRoZW0gaGVyZSwgZGl2ZXJ0aW5nIHRvIGFuIEV4cGVjdGVkQ29uc3RydWN0b3IgZXJyb3IuIEJ1dCB3ZVxuICAgICAgIGF2b2lkIGNhcHR1cmluZyB0aGUgc2Vjb25kIGNhc2UgYWJvdmUsIGFzIHRoZXNlIHdpbGwgdWx0aW1hdGVseVxuICAgICAgIGdldCBhIChtb3JlIHByZWNpc2UpIHVuYm91bmQgY3RyICB2aWEgc3RhdHVzX2NvbW1vbiAqL1xuICAgIHN3aXRjaCAoc3RhdHVzX2NvbW1vbihjdHgsIG1vZGUsIHNlbGZfcGF0KSkge1xuICAgIHwgTm90SW5Ib2xlKG9rX2V4cCkgPT4gTm90SW5Ib2xlKG9rX2V4cClcbiAgICB8IEluSG9sZShlcnJfcGF0KSA9PiBJbkhvbGUoQ29tbW9uKGVycl9wYXQpKVxuICAgIH1cbiAgfCAoU3luRnVuLCBfKSA9PiBJbkhvbGUoRXhwZWN0ZWRDb25zdHJ1Y3RvcilcbiAgfTtcblxuLyogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV4cHJlc3Npb24gb3IgcGF0dGVybiBpcyBpbiBhbiBlcnJvciBob2xlLFxuICAgZGVwZW5kaW5nIG9uIHRoZSBtb2RlLCB3aGljaCByZXByZXNlbnRzIHRoZSBleHBlY3RhdGlvbnMgb2YgdGhlXG4gICBzdXJyb3VuZGluZyBzeW50YWN0aWMgY29udGV4dCwgYW5kIHRoZSBzZWxmIHdoaWNoIHJlcHJlc2VudHMgdGhlXG4gICBtYWtldXAgb2YgdGhlIGV4cHJlc3Npb24gLyBwYXR0ZXJuIGl0c2VsZi4gKi9cbmxldCBzdGF0dXNfZXhwID0gKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5leHApOiBzdGF0dXNfZXhwID0+XG4gIHN3aXRjaCAoc2VsZiwgbW9kZSkge1xuICB8IChGcmVlKG5hbWUpLCBfKSA9PiBJbkhvbGUoRnJlZVZhcmlhYmxlKG5hbWUpKVxuICB8IChDb21tb24oc2VsZl9wYXQpLCBfKSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2NvbW1vbihjdHgsIG1vZGUsIHNlbGZfcGF0KSkge1xuICAgIHwgTm90SW5Ib2xlKG9rX2V4cCkgPT4gTm90SW5Ib2xlKG9rX2V4cClcbiAgICB8IEluSG9sZShlcnJfcGF0KSA9PiBJbkhvbGUoQ29tbW9uKGVycl9wYXQpKVxuICAgIH1cbiAgfTtcblxuLyogVGhpcyBsb2dpYyBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0eXBlIHNob3VsZCBiZSBwdXRcbiAgIGluIGEgaG9sZSBvciBub3QuIEl0J3MgbW9zdGx5IHN5bnRhY3RpYywgZGV0ZXJtaW5pbmdcbiAgIHRoZSBwcm9wZXIgcGxhY2VtZW50IG9mIHN1bSB0eXBlIHZhcmlhbnRzIGFuZCBjdHJzO1xuICAgdGhpcyBzaG91bGQgYmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgZnV0dXJlIGFzIGFcbiAgIHNlcGFyYXRlIHNvcnQuIEl0IGFsc28gZGV0ZXJtaW5lcyBzZW1hbnRpYyBwcm9wZXJ0aWVzXG4gICBzdWNoIGFzIHdoZXRoZXIgb3Igbm90IGEgdHlwZSB2YXJpYWJsZSByZWZlcmVuY2UgaXNcbiAgIGZyZWUsIGFuZCB3aGV0aGVyIGEgY3RyIG5hbWUgaXMgYSBkdXBlLiAqL1xubGV0IHN0YXR1c190eXAgPVxuICAgIChjdHg6IEN0eC50LCBleHBlY3RzOiB0eXBfZXhwZWN0cywgdGVybTogVGVybUJhc2UuVVR5cC50LCB0eTogVHlwLnQpXG4gICAgOiBzdGF0dXNfdHlwID0+XG4gIHN3aXRjaCAodGVybS50ZXJtKSB7XG4gIHwgSW52YWxpZCh0b2tlbikgPT4gSW5Ib2xlKEJhZFRva2VuKHRva2VuKSlcbiAgfCBFbXB0eUhvbGUgPT4gTm90SW5Ib2xlKFR5cGUodHkpKVxuICB8IFZhcihuYW1lKVxuICB8IENvbnN0cnVjdG9yKG5hbWUpID0+XG4gICAgc3dpdGNoIChleHBlY3RzKSB7XG4gICAgfCBWYXJpYW50RXhwZWN0ZWQoVW5pcXVlLCBzdW1fdHkpXG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKFVuaXF1ZSwgc3VtX3R5KSA9PlxuICAgICAgTm90SW5Ib2xlKFZhcmlhbnQobmFtZSwgc3VtX3R5KSlcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChEdXBsaWNhdGUsIF8pXG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKER1cGxpY2F0ZSwgXykgPT5cbiAgICAgIEluSG9sZShEdXBsaWNhdGVDb25zdHJ1Y3RvcihuYW1lKSlcbiAgICB8IFR5cGVFeHBlY3RlZCA9PlxuICAgICAgc3dpdGNoIChDdHguaXNfYWxpYXMoY3R4LCBuYW1lKSkge1xuICAgICAgfCBmYWxzZSA9PiBJbkhvbGUoRnJlZVR5cGVWYXJpYWJsZShuYW1lKSlcbiAgICAgIHwgdHJ1ZSA9PiBOb3RJbkhvbGUoVHlwZUFsaWFzKG5hbWUsIFR5cC53ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVmFyaWFudEV4cGVjdGVkKHN0YXR1c192YXJpYW50LCB0eV92YXJpYW50KSA9PlxuICAgICAgbGV0IHR5X2luID0gVVR5cC50b190eXAoY3R4LCB0Mik7XG4gICAgICBzd2l0Y2ggKHN0YXR1c192YXJpYW50LCB0MS50ZXJtKSB7XG4gICAgICB8IChVbmlxdWUsIFZhcihuYW1lKSB8IENvbnN0cnVjdG9yKG5hbWUpKSA9PlxuICAgICAgICBOb3RJbkhvbGUoVmFyaWFudChuYW1lLCBBcnJvdyh0eV9pbiwgdHlfdmFyaWFudCkpKVxuICAgICAgfCBfID0+IE5vdEluSG9sZShWYXJpYW50SW5jb21wbGV0ZShBcnJvdyh0eV9pbiwgdHlfdmFyaWFudCkpKVxuICAgICAgfTtcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXykgPT4gSW5Ib2xlKFdhbnRDb25zdHJ1Y3RvckZvdW5kQXApXG4gICAgfCBUeXBlRXhwZWN0ZWQgPT4gSW5Ib2xlKFdhbnRUeXBlRm91bmRBcClcbiAgICB9XG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVHlwZUV4cGVjdGVkID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXylcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChfKSA9PiBJbkhvbGUoV2FudENvbnN0cnVjdG9yRm91bmRUeXBlKHR5KSlcbiAgICB9XG4gIH07XG5cbmxldCBzdGF0dXNfdHBhdCA9IChjdHg6IEN0eC50LCB1dHBhdDogVVRQYXQudCk6IHN0YXR1c190cGF0ID0+XG4gIHN3aXRjaCAodXRwYXQudGVybSkge1xuICB8IEVtcHR5SG9sZSA9PiBOb3RJbkhvbGUoRW1wdHkpXG4gIHwgVmFyKG5hbWUpXG4gICAgICB3aGVuIEZvcm0uaXNfYmFzZV90eXAobmFtZSkgfHwgQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpICE9IE5vbmUgPT5cbiAgICBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSkpXG4gIHwgVmFyKG5hbWUpID0+IE5vdEluSG9sZShWYXIobmFtZSkpXG4gIHwgSW52YWxpZChfKSA9PiBJbkhvbGUoTm90QVZhcihOb3RDYXBpdGFsaXplZCkpXG4gIHwgTXVsdGlIb2xlKF8pID0+IEluSG9sZShOb3RBVmFyKE90aGVyKSlcbiAgfTtcblxuLyogRGV0ZXJtaW5lcyB3aGV0aGVyIGFueSB0ZXJtIGlzIGluIGFuIGVycm9yIGhvbGUuICovXG5sZXQgaXNfZXJyb3IgPSAoY2k6IHQpOiBib29sID0+IHtcbiAgc3dpdGNoIChjaSkge1xuICB8IEluZm9FeHAoe21vZGUsIHNlbGYsIGN0eCwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfZXhwKGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgICB8IEluSG9sZShfKSA9PiB0cnVlXG4gICAgfCBOb3RJbkhvbGUoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgSW5mb1BhdCh7bW9kZSwgc2VsZiwgY3R4LCBffSkgPT5cbiAgICBzd2l0Y2ggKHN0YXR1c19wYXQoY3R4LCBtb2RlLCBzZWxmKSkge1xuICAgIHwgSW5Ib2xlKF8pID0+IHRydWVcbiAgICB8IE5vdEluSG9sZShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBJbmZvVHlwKHtleHBlY3RzLCBjdHgsIHRlcm0sIHR5LCBffSkgPT5cbiAgICBzd2l0Y2ggKHN0YXR1c190eXAoY3R4LCBleHBlY3RzLCB0ZXJtLCB0eSkpIHtcbiAgICB8IEluSG9sZShfKSA9PiB0cnVlXG4gICAgfCBOb3RJbkhvbGUoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgSW5mb1RQYXQoe3Rlcm0sIGN0eCwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfdHBhdChjdHgsIHRlcm0pKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IFNlY29uZGFyeShfKSA9PiBmYWxzZVxuICB9O1xufTtcblxuLyogRGV0ZXJtaW5lZCB0aGUgdHlwZSBvZiBhbiBleHByZXNzaW9uIG9yIHBhdHRlcm4gJ2FmdGVyIGhvbGUgZml4aW5nJztcbiAgIHRoYXQgaXMsIGFsbCBpbGwtdHlwZWQgdGVybXMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgJ3dyYXBwZWQgaW5cbiAgIG5vbi1lbXB0eSBob2xlcycsIGkuZS4gYXNzaWduZWQgVW5rbm93biB0eXBlLiAqL1xubGV0IGZpeGVkX3R5cF9vazogb2tfcGF0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgU3luKHN5bikgPT4gc3luXG4gIHwgQW5hKENvbnNpc3RlbnQoe2pvaW4sIF99KSkgPT4gam9pblxuICB8IEFuYShJbnRlcm5hbGx5SW5jb25zaXN0ZW50KHthbmEsIF99KSkgPT4gYW5hO1xuXG5sZXQgZml4ZWRfdHlwX3BhdCA9IChjdHgsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5wYXQpOiBUeXAudCA9PlxuICBzd2l0Y2ggKHN0YXR1c19wYXQoY3R4LCBtb2RlLCBzZWxmKSkge1xuICB8IEluSG9sZShfKSA9PiBVbmtub3duKEludGVybmFsKVxuICB8IE5vdEluSG9sZShvaykgPT4gZml4ZWRfdHlwX29rKG9rKVxuICB9O1xuXG5sZXQgZml4ZWRfdHlwX2V4cCA9IChjdHgsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5leHApOiBUeXAudCA9PlxuICBzd2l0Y2ggKHN0YXR1c19leHAoY3R4LCBtb2RlLCBzZWxmKSkge1xuICB8IEluSG9sZShfKSA9PiBVbmtub3duKEludGVybmFsKVxuICB8IE5vdEluSG9sZShvaykgPT4gZml4ZWRfdHlwX29rKG9rKVxuICB9O1xuXG4vKiBBZGQgZGVyaXZhYmxlIGF0dHJpYnV0ZXMgZm9yIGV4cHJlc3Npb24gdGVybXMgKi9cbmxldCBkZXJpdmVkX2V4cCA9XG4gICAgKH51ZXhwOiBVRXhwLnQsIH5jdHgsIH5tb2RlLCB+YW5jZXN0b3JzLCB+c2VsZiwgfmNvX2N0eCk6IGV4cCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuRXhwKFVFeHAuY2xzX29mX3Rlcm0odWV4cC50ZXJtKSk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfZXhwKGN0eCwgbW9kZSwgc2VsZik7XG4gIGxldCB0eSA9IGZpeGVkX3R5cF9leHAoY3R4LCBtb2RlLCBzZWxmKTtcbiAge2Nscywgc2VsZiwgdHksIG1vZGUsIHN0YXR1cywgY3R4LCBjb19jdHgsIGFuY2VzdG9ycywgdGVybTogdWV4cH07XG59O1xuXG4vKiBBZGQgZGVyaXZhYmxlIGF0dHJpYnV0ZXMgZm9yIHBhdHRlcm4gdGVybXMgKi9cbmxldCBkZXJpdmVkX3BhdCA9XG4gICAgKH51cGF0OiBVUGF0LnQsIH5jdHgsIH5jb19jdHgsIH5tb2RlLCB+YW5jZXN0b3JzLCB+c2VsZik6IHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuUGF0KFVQYXQuY2xzX29mX3Rlcm0odXBhdC50ZXJtKSk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZik7XG4gIGxldCB0eSA9IGZpeGVkX3R5cF9wYXQoY3R4LCBtb2RlLCBzZWxmKTtcbiAge2Nscywgc2VsZiwgbW9kZSwgdHksIHN0YXR1cywgY3R4LCBjb19jdHgsIGFuY2VzdG9ycywgdGVybTogdXBhdH07XG59O1xuXG4vKiBBZGQgZGVyaXZhYmxlIGF0dHJpYnV0ZXMgZm9yIHR5cGVzICovXG5sZXQgZGVyaXZlZF90eXAgPSAofnV0eXA6IFVUeXAudCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpOiB0eXAgPT4ge1xuICBsZXQgY2xzOiBDbHMudCA9XG4gICAgLyogSGFjayB0byBpbXByb3ZlIENJIGRpc3BsYXkgKi9cbiAgICBzd2l0Y2ggKGV4cGVjdHMsIFVUeXAuY2xzX29mX3Rlcm0odXR5cC50ZXJtKSkge1xuICAgIHwgKFZhcmlhbnRFeHBlY3RlZChfKSwgVmFyKSA9PiBDbHMuVHlwKENvbnN0cnVjdG9yKVxuICAgIHwgKF8sIGNscykgPT4gQ2xzLlR5cChjbHMpXG4gICAgfTtcbiAgbGV0IHR5ID0gVVR5cC50b190eXAoY3R4LCB1dHlwKTtcbiAgbGV0IHN0YXR1cyA9IHN0YXR1c190eXAoY3R4LCBleHBlY3RzLCB1dHlwLCB0eSk7XG4gIHtjbHMsIGN0eCwgYW5jZXN0b3JzLCBzdGF0dXMsIGV4cGVjdHMsIHR5LCB0ZXJtOiB1dHlwfTtcbn07XG5cbi8qIEFkZCBkZXJpdmFibGUgYXR0cmlidXRlcyBmb3IgdHlwZSBwYXR0ZXJucyAqL1xubGV0IGRlcml2ZWRfdHBhdCA9ICh+dXRwYXQ6IFVUUGF0LnQsIH5jdHgsIH5hbmNlc3RvcnMpOiB0cGF0ID0+IHtcbiAgbGV0IGNscyA9IENscy5UUGF0KFVUUGF0LmNsc19vZl90ZXJtKHV0cGF0LnRlcm0pKTtcbiAgbGV0IHN0YXR1cyA9IHN0YXR1c190cGF0KGN0eCwgdXRwYXQpO1xuICB7Y2xzLCBhbmNlc3RvcnMsIHN0YXR1cywgY3R4LCB0ZXJtOiB1dHBhdH07XG59O1xuXG4vKiBJZiB0aGUgaW5mbyByZXByZXNlbnRzIHNvbWUga2luZCBvZiBuYW1lIGJpbmRpbmcgd2hpY2hcbiAgIGV4aXN0cyBpbiB0aGUgY29udGV4dCwgcmV0dXJuIHRoZSBpZCB3aGVyZSB0aGUgYmluZGluZyBvY2N1cnMgKi9cbmxldCBnZXRfYmluZGluZ19zaXRlID0gKGluZm86IHQpOiBvcHRpb24oSWQudCkgPT4ge1xuICBzd2l0Y2ggKGluZm8pIHtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogVmFyKG5hbWUpLCBffSwgY3R4LCBffSkgPT5cbiAgICBsZXQrIGVudHJ5ID0gQ3R4Lmxvb2t1cF92YXIoY3R4LCBuYW1lKTtcbiAgICBlbnRyeS5pZDtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogQ29uc3RydWN0b3IobmFtZSksIF99LCBjdHgsIF99KVxuICB8IEluZm9QYXQoe3Rlcm06IHt0ZXJtOiBDb25zdHJ1Y3RvcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfY3RyKGN0eCwgbmFtZSk7XG4gICAgZW50cnkuaWQ7XG4gIHwgSW5mb1R5cCh7dGVybToge3Rlcm06IFZhcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpO1xuICAgIGVudHJ5LmlkO1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIFR5RGk6IFR5cGUtRGlyZWN0ZWQgTmV4dC1Ub2tlbiBTdWdnZXN0aW9uc1xuXG4gICAgSURFQTogRXhwYW5kZWQgY3JpdGVyaWEgZm9yIHdoZW4gdG8gYXV0b3Nob3c6IEN1cnJlbnRseSwgd2Ugc2hvdyBvbmx5XG4gICAgd2hlbiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgc3VnZ2VzdGlvbiB3aGljaCBwcmVmaXgtbWF0Y2hlcyBidXQgaXMgbm90XG4gICAgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50IG5vbnplcm8gcHJlZml4LiBXZSBtaWdodCBjb25zaWRlciByZWxheGluZ1xuICAgIHRoZSBub256ZXJvIHByZWZpeCBwYXJ0LiBXZSBwcm9iYWJseSBkb24ndCB3YW50IHRvIGF1dG9zaG93IG9uIGNvcnJlY3RcbiAgICB0b2tlbnMsIGJ1dCB3ZSBjb3VsZCBhdXRvc2hvdyBvbiBlcnJvcnMgaWYgdGhlcmUgYXJlIGZpeGVzLCBvciBvblxuICAgIGVtcHRpZXMgaWYgdGhlcmUncyBvbmx5IG9uZSBvcHRpb24uXG5cbiAgICAgSURFQTogQWRkIGEga2V5YmluZGluZyB0byBmb3JjZSByZXZlYWwgc3VnZ2VzdGlvbiBpZiBub3QgY3VycmVudCBzaG93bi5cbiAgICAgSSd2ZSBzdHViYmVkIHRoaXMgb3V0IChDbWQrPykgYnV0IG5lZWRzIGFuIG9wdGlvbiB0byBzaG93IHN1Z2dlc3Rpb25zXG4gICAgIGV2ZW4gaWYgb24gaG9sZSAoaWUgcHJlZml4IGZvciBjb21wbGV0aW9uIGlzIFwiXCIpXG5cbiAgICAgSURFQTogSWYgdGhlcmUgYXJlIH4gbm8gY3VycmVudCBzdWdnZXN0aW9ucywgYW5kIHRoZSBpbmRpY2F0ZWQgdGVybVxuICAgICBoYXMgYSB0eXBlIGVycm9yIHN1Z2dlc3QgZm9sbG93aW5nIGluZml4ZXMgd2hpY2ggZml4IHRoYXQgdHlwZSBlcnJvcixcbiAgICAgZS5nLiBnaXZlbiBcImxldCBhOkZsb2F0ID0gZnN0KDEuMHxcIiBzdWdnZXN0IGNvbW1hXG4gICAgIGUuZy4gZ2l2ZW4gXCJsZXQgYjpCb29sID0gMXxcIiBzdWdnZXN0IDwsID4sIDw9LCA+PSwgPT0sICE9LCBldGMuXG5cbiAgICAgSURFQTogVU5CSURJUkVDVElPTkFMIFBPU0lUSU9OUzpcbiAgICAxLiBJbiBhcCBmdW5wb3M6IGZhdm9yIGlucHV0IHR5IGNvbnNpc3RlbnQgd2l0aCBhcmdcbiAgICAyLiBJbiBjYXNlIHNjcnV0LCBmYXZvciB0aGUgdHlzIG9mIGV4dGFudCBwYXR0ZXJuc1xuICAgIDMuIEluIGxpc3QgZWxlbWVudCwgZmF2b3IgdGhlIHR5cyBvZiBleHRhbnQgZWxlbWVudHNcbiAgICAzLiBJbiBwYXR0ZXJuIGFubm90YXRpb24gdHlwZTogZmF2b3IgcGF0YW5uIGV4cGVjdGVkIHR5cGVcblxuICAgIElERUE6IElmIG9uIGluZml4IG9wLCBzdWdnZXN0IGJhc2VkIG9uIGVpdGhlciBvcGVyYW5kIHR5cGUsXG4gICAgZXNwZWNpYWxseSB0aGUgY2FzZSB3aGVyZSBpdCB3b3VsZCBmaXggYW4gb3BlcmFuZCB0eXBlIGVycm9yXG5cbiAgICBJREVBOiBJZiBvbiAyLW11bHRpaG9sZSwgc3VnZ2VzdCBpbmZpeCBvcHMgYXMgYWJvdmUgb3IgQXAgaWYgYXBwbGljYWJsZVxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X2FsbCA9XG4gIHwgRnJvbUJhY2twYWNrO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X2NvbW1vbiA9XG4gIHwgTmV3Rm9ybShUeXAudClcbiAgfCBGcm9tQ3R4KFR5cC50KVxuICB8IEZyb21DdHhBcChUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfZXhwID1cbiAgfCBDb21tb24oc3RyYXRlZ3lfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9wYXQgPVxuICB8IENvbW1vbihzdHJhdGVneV9jb21tb24pXG4gIHwgRnJvbUNvQ3R4KFR5cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV90eXAgPVxuICB8IE5ld0Zvcm1cbiAgfCBGcm9tQ3R4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5ID1cbiAgfCBBbnkoc3RyYXRlZ3lfYWxsKVxuICB8IEV4cChzdHJhdGVneV9leHApXG4gIHwgUGF0KHN0cmF0ZWd5X3BhdClcbiAgfCBUeXAoc3RyYXRlZ3lfdHlwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBjb250ZW50OiBzdHJpbmcsXG4gIHN0cmF0ZWd5LFxufTtcblxubGV0IGNvbXBhcmUgPSAoczE6IHQsIHMyOiB0KTogaW50ID0+IHtcbiAgU3RyaW5nLmNvbXBhcmUoczEuY29udGVudCwgczIuY29udGVudCk7XG59O1xuIiwib3BlbiBTdWdnZXN0aW9uO1xuXG5sZXQgZXhwYW5kZXIgPSBBc3Npc3RhbnRFeHBhbmRlci5jO1xuXG4vKiBGb3Igc3VnZ2VzdGlvbnMgaW4gcGF0dGVybnMsIHN1Z2dlc3QgdmFyaWFibGVzIHdoaWNoXG4gKiBvY2N1ciBmcmVlIGluIHRoYXQgcGF0dGVybidzIHNjb3BlLiAqL1xubGV0IGZyZWVfdmFyaWFibGVzID1cbiAgICAoZXhwZWN0ZWRfdHk6IFR5cC50LCBjdHg6IEN0eC50LCBjb19jdHg6IENvQ3R4LnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT4ge1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgKChuYW1lLCBlbnRyaWVzKSkgPT5cbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF92YXIoY3R4LCBuYW1lKSkge1xuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBqb2ludF91c2VfdHlwID0gQ29DdHguam9pbihjdHgsIGVudHJpZXMpO1xuICAgICAgICBpZiAoVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCBleHBlY3RlZF90eSwgam9pbnRfdXNlX3R5cCkpIHtcbiAgICAgICAgICBTb21lKHtjb250ZW50OiBuYW1lLCBzdHJhdGVneTogUGF0KEZyb21Db0N0eChqb2ludF91c2VfdHlwKSl9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBOb25lO1xuICAgICAgICB9O1xuICAgICAgfCBTb21lKF8pID0+IE5vbmVcbiAgICAgIH0sXG4gICAgY29fY3R4LFxuICApO1xufTtcblxuLyogRm9yIHN1Z2dlc3RzaW9ucyBpbiBleHByZXNzaW9ucywgc3VnZ2VzdCB2YXJpYWJsZXMgZnJvbSB0aGUgY3R4ICovXG5sZXQgYm91bmRfdmFyaWFibGVzID0gKHR5X2V4cGVjdDogVHlwLnQsIGN0eDogQ3R4LnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT5cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgQ3R4LlZhckVudHJ5KHt0eXAsIG5hbWUsIF99KVxuICAgICAgICB3aGVuIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eXApID0+XG4gICAgICBTb21lKHtjb250ZW50OiBuYW1lLCBzdHJhdGVneTogRXhwKENvbW1vbihGcm9tQ3R4KHR5cCkpKX0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgYm91bmRfY29uc3RydWN0b3JzID1cbiAgICAod3JhcDogc3RyYXRlZ3lfY29tbW9uID0+IHN0cmF0ZWd5LCB0eTogVHlwLnQsIGN0eDogQ3R4LnQpXG4gICAgOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT5cbiAgLyogZ2V0IG5hbWVzIG9mIGFsbCBjb25zdHJ1Y3RvciBlbnRyaWVzIGNvbnNpc3RlbnQgd2l0aCB0eSAqL1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDdHguQ29uc3RydWN0b3JFbnRyeSh7dHlwLCBuYW1lLCBffSlcbiAgICAgICAgd2hlbiBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5LCB0eXApID0+XG4gICAgICBTb21lKHtjb250ZW50OiBuYW1lLCBzdHJhdGVneTogd3JhcChGcm9tQ3R4KHR5cCkpfSlcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbi8qIFN1Z2dlc3QgYXBwbHlpbmcgYSBmdW5jdGlvbiBmcm9tIHRoZSBjdHggd2hpY2ggcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB0eXBlICovXG5sZXQgYm91bmRfYXBzID0gKHR5X2V4cGVjdDogVHlwLnQsIGN0eDogQ3R4LnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT5cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgQ3R4LlZhckVudHJ5KHt0eXA6IEFycm93KF8sIHR5X291dCkgYXMgdHlfYXJyLCBuYW1lLCBffSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9vdXQpXG4gICAgICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9hcnIpID0+IHtcbiAgICAgICAgU29tZSh7XG4gICAgICAgICAgY29udGVudDogbmFtZSArKyBcIihcIiArKyBleHBhbmRlcixcbiAgICAgICAgICBzdHJhdGVneTogRXhwKENvbW1vbihGcm9tQ3R4QXAodHlfb3V0KSkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMgPSAod3JhcCwgdHk6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5Db25zdHJ1Y3RvckVudHJ5KHt0eXA6IEFycm93KF8sIHR5X291dCkgYXMgdHlfYXJyLCBuYW1lLCBffSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHksIHR5X291dClcbiAgICAgICAgICAmJiAhVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlfYXJyKSA9PlxuICAgICAgU29tZSh7XG4gICAgICAgIGNvbnRlbnQ6IG5hbWUgKysgXCIoXCIgKysgZXhwYW5kZXIsXG4gICAgICAgIHN0cmF0ZWd5OiB3cmFwKEZyb21DdHhBcCh0eV9vdXQpKSxcbiAgICAgIH0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGJvdW5kIHR5cGUgYWxpYXNlcyBpbiB0eXBlIGFubm90YXRpb25zIG9yIGRlZmluaXRpb25zICovXG5sZXQgdHlwX2NvbnRleHRfZW50cmllcyA9IChjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5UVmFyRW50cnkoe2tpbmQ6IFNpbmdsZXRvbihfKSwgbmFtZSwgX30pID0+XG4gICAgICBTb21lKHtjb250ZW50OiBuYW1lLCBzdHJhdGVneTogVHlwKEZyb21DdHgpfSlcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBzdWdnZXN0X3ZhcmlhYmxlID0gKGNpOiBJbmZvLnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT4ge1xuICBsZXQgY3R4ID0gSW5mby5jdHhfb2YoY2kpO1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgSW5mb0V4cCh7bW9kZSwgX30pID0+XG4gICAgYm91bmRfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2FwcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9jb25zdHJ1Y3RvcnMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gRXhwKENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgfCBJbmZvUGF0KHttb2RlLCBjb19jdHgsIF99KSA9PlxuICAgIGZyZWVfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eCwgY29fY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IFBhdChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gIHwgSW5mb1R5cChfKSA9PiB0eXBfY29udGV4dF9lbnRyaWVzKGN0eClcbiAgfCBfID0+IFtdXG4gIH07XG59O1xuXG4vKiBTdWdnZXN0IGxvb2thaGVhZCB0b2tlbnM6XG4gKlxuICogU29tZXRpbWVzIHRoZSBleHBlY3RlZCB0eXBlIGlzIFR5LCBidXQgd2Ugd2FudCB0byBlbnRlciBzb21ldGhpbmcgb2YgVHknXG4gKiBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGZvbGxvdyBpdCB1cCB3aXRoIGFuIGluZml4IG9wIG9mIHR5cGUgKFR5JywgXykgLT4gVHkuXG4gKlxuICogRm9yIG5vdyB3ZSBzcGVjaWFsLWNhc2Ugc3VjaCBzaXR1YXRpb25zIGluc3RlYWQgb2YgZGVyaXZpbmcgdGhlbSBmcm9tIHRoZVxuICogZ3JhbW1hci4gSW4gdGhlIGN1cnJlbnQgZ3JhbW1hciB0aGVyZSBhcmUgYmFzaWNhbGx5IDMgY2xhc3NlczpcbiAqXG4gKiAxLiBJZiBib29sIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSBpbnQsIGZsb2F0IG9yIHN0cmluZyAoY29tcGFyaXNvbnMpXG4gKiAyLiBJZiBsaXN0KHR5KSBpcyBleHBlY3RlZCwgY291bGQgYmUgdHkgKGNvbnMpXG4gKiAzLiBJZiB0dXBsZShbdHksIC4uLl0pIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSB0eSAoY29tbWEpXG5cbiAqIDIgYW5kIDMgYXJlIHRoZSBlYXNpZXN0IHRvIG1ha2UgZXJnb25vbWljIGFzIHRoZXJlIGlzIG9ubHkgb25lIHN1Y2hcbiAqIGluZml4IG9wLCBzbyB3ZSBjYW4ganVzdCBjb21iaW5lIHRoZSB0d28gdG9rZW5zIGludG8gYSBzaW5nbGUgY29tcGxldGlvbi5cbiAqIDEgaXMgc2xpZ2h0bHkgbW9yZSBmcmF1Z2h0IGJlY2F1c2UgYXMgd2UgZWl0aGVyIG5lZWQgdG8gbm90IHNob3cgdGhlXG4gKiBzZWNvbmQgdG9rZW4sIG9yIHBpY2sgYW4gYXJiaXRyYXJ5IHJlcHJlc2VudGF0aXZlIG9wIHRvIHNob3csIGFuZCB3ZVxuICogcHJvYmFibHkgd291bGRuJ3Qgd2FudCB0byBjb21wbGV0ZSB0aGF0IG9wLCBmb3JjaW5nIHRoZSB1c2VyIHRvIGJhY2tzcGFjZVxuICogaWYgdGhleSBtZWFudCBhbm90aGVyLCBzbyB3ZSdkIG5lZWQgdG8gaW1wbGVtZW50IHN0YWdlZCBjb21wbGV0aW9uLlxuICogRm9yIG5vdyB3ZSBqdXN0IGRvbid0IHNob3cgYSBzZWNvbmQgdG9rZW4sIHdoaWNoIGNhbiBiZSBzbGlnaHRseSBjb25mdXNpbmcuXG4gKlxuICovXG5cbmxldCBzdWdnZXN0X2xvb2thaGVhZF92YXJpYWJsZSA9IChjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHJlc3RyYXRlZ2l6ZSA9IChzdWZmaXgsIHtjb250ZW50LCBzdHJhdGVneX0pID0+IHtcbiAgICBjb250ZW50OiBjb250ZW50ICsrIHN1ZmZpeCxcbiAgICBzdHJhdGVneSxcbiAgfTtcbiAgbGV0IGN0eCA9IEluZm8uY3R4X29mKGNpKTtcbiAgc3dpdGNoIChjaSkge1xuICB8IEluZm9FeHAoe21vZGUsIF99KSA9PlxuICAgIGxldCBleHBfcmVmcyA9IHR5ID0+XG4gICAgICBib3VuZF92YXJpYWJsZXModHksIGN0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gRXhwKENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBleHBfYXBzID0gdHkgPT5cbiAgICAgIGJvdW5kX2Fwcyh0eSwgY3R4KVxuICAgICAgQCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgdHksIGN0eCk7XG4gICAgc3dpdGNoIChNb2RlLnR5X29mKG1vZGUpKSB7XG4gICAgfCBMaXN0KHR5KSA9PlxuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiICk6OlwiKSwgZXhwX2Fwcyh0eSkpXG4gICAgICBAIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIjo6XCIpLCBleHBfcmVmcyh0eSkpXG4gICAgfCBQcm9kKFt0eSwgLi4udHlzXSkgPT5cbiAgICAgIGxldCBjb21tYXMgPVxuICAgICAgICBMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzKSwgXyA9PiBcIixcIikgfD4gU3RyaW5nLmNvbmNhdChcIiBcIik7XG4gICAgICBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCIgKVwiICsrIGNvbW1hcyksIGV4cF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoY29tbWFzKSwgZXhwX3JlZnModHkpKTtcbiAgICB8IEJvb2wgPT5cbiAgICAgIC8qIFRPRE86IEZpbmQgYSBVSSB0byBtYWtlIHRoZXNlIGxlc3MgY29uZnVzaW5nICovXG4gICAgICBleHBfcmVmcyhJbnQpXG4gICAgICBAIGV4cF9yZWZzKEZsb2F0KVxuICAgICAgQCBleHBfcmVmcyhTdHJpbmcpXG4gICAgICBAIGV4cF9hcHMoSW50KVxuICAgICAgQCBleHBfYXBzKEZsb2F0KVxuICAgICAgQCBleHBfYXBzKFN0cmluZylcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuICB8IEluZm9QYXQoe21vZGUsIGNvX2N0eCwgX30pID0+XG4gICAgbGV0IHBhdF9yZWZzID0gdHkgPT5cbiAgICAgIGZyZWVfdmFyaWFibGVzKHR5LCBjdHgsIGNvX2N0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBwYXRfYXBzID0gdHkgPT4gYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIHN3aXRjaCAoTW9kZS50eV9vZihtb2RlKSkge1xuICAgIHwgTGlzdCh0eSkgPT5cbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApOjpcIiksIHBhdF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCI6OlwiKSwgcGF0X3JlZnModHkpKVxuICAgIHwgUHJvZChbdHksIC4uLnR5c10pID0+XG4gICAgICBsZXQgY29tbWFzID1cbiAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIF8gPT4gXCIsXCIpIHw+IFN0cmluZy5jb25jYXQoXCIgXCIpO1xuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiIClcIiArKyBjb21tYXMpLCBwYXRfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKGNvbW1hcyksIHBhdF9yZWZzKHR5KSk7XG4gICAgfCBfID0+IFtdXG4gICAgfTtcbiAgfCBJbmZvVHlwKF8pID0+IFtdXG4gIHwgXyA9PiBbXVxuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIFRoaXMgbW9kdWxlIGdlbmVyYXRlcyBUeURpIHN1Z2dlc3Rpb25zIHdoaWNoIGRlcGVuZFxuICogbmVpdGhlciBvbiB0aGUgdHlwaW5nIGNvbnRleHQgb3IgdGhlIGJhY2twYWNrICovXG5cbmxldCBsZWFkaW5nX2V4cGFuZGVyID0gXCIgXCIgKysgQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogU3BlY2lmaWVzIHR5cGUgaW5mb3JtYXRpb24gZm9yIHN5bnRhY3RpYyBmb3Jtcy4gQ291bGQgaW4gcHJpbmNpcGxlIGJlXG4gKiBkZXJpdmVkIGJ5IGdlbmVyYXRpbmcgc2VnbWVudHMgZnJvbSBGb3JtcywgcGFyc2luZyB0aGVtIHRvIHRlcm1zLCBhbmRcbiAqIHJ1bm5pbmcgU3RhdGljcywgYnV0IGZvciBub3csIG5ldyBmb3JtcyBlLmcuIG9wZXJhdG9ycyBtdXN0IGJlIGFkZGVkXG4gKiBiZWxvdyBtYW51YWxseS4gICovXG5tb2R1bGUgVHlwID0ge1xuICBsZXQgdW5rOiBUeXAudCA9IFVua25vd24oSW50ZXJuYWwpO1xuXG4gIGxldCBvZl9jb25zdF9tb25vX2RlbGltOiBsaXN0KChUb2tlbi50LCBUeXAudCkpID0gW1xuICAgIChcInRydWVcIiwgQm9vbCksXG4gICAgKFwiZmFsc2VcIiwgQm9vbCksXG4gICAgLy8oXCJbXVwiLCBMaXN0KHVuaykpLCAvICpOT1RFOiB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yIGJ1ZmZlciBmb3IgdGhpcyB0byBzaG93IHVwICovXG4gICAgLy8oXCIoKVwiLCBQcm9kKFtdKSksIC8qIE5PVEU6IHdvdWxkIG5lZWQgdG8gcmVmYWN0b3IgYnVmZmVyIGZvciB0aGlzIHRvIHNob3cgdXAgKi9cbiAgICAoXCJcXFwiXFxcIlwiLCBTdHJpbmcpLCAvKiBOT1RFOiBJcnJlbGV2ZW50IGFzIHNlY29uZCBxdW90ZSBhcHBlYXJzIGF1dG9tYXRpY2FsbHkgKi9cbiAgICAoXCJfXCIsIHVuayksXG4gIF07XG5cbiAgbGV0IG9mX2xlYWRpbmdfZGVsaW06IGxpc3QoKFRva2VuLnQsIFR5cC50KSkgPSBbXG4gICAgKFwiY2FzZVwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gICAgKFwiZnVuXCIgKysgbGVhZGluZ19leHBhbmRlciwgQXJyb3codW5rLCB1bmspKSxcbiAgICAoXCJpZlwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gICAgKFwibGV0XCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgICAoXCJ0ZXN0XCIgKysgbGVhZGluZ19leHBhbmRlciwgUHJvZChbXSkpLFxuICAgIChcInR5cGVcIiArKyBsZWFkaW5nX2V4cGFuZGVyLCB1bmspLFxuICBdO1xuXG4gIGxldCBvZl9pbmZpeF9kZWxpbTogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9IFtcbiAgICAoXCJ8PlwiLCB1bmspLCAvKiAqL1xuICAgIChcIixcIiwgUHJvZChbdW5rLCB1bmtdKSksIC8qIE5PVEU6IEN1cnJlbnQgYXBwcm9hY2ggZG9lc24ndCB3b3JrIGZvciB0aGlzLCBidXQgaXJyZWxldmFudCBhcyAxLWNoYXIgKi9cbiAgICAoXCI6OlwiLCBMaXN0KHVuaykpLFxuICAgIChcIkBcIiwgTGlzdCh1bmspKSxcbiAgICAoXCI7XCIsIHVuayksXG4gICAgKFwiJiZcIiwgQm9vbCksXG4gICAgKFwiXFxcXC9cIiwgQm9vbCksXG4gICAgKFwifHxcIiwgQm9vbCksXG4gICAgKFwiJD09XCIsIEJvb2wpLFxuICAgIChcIj09LlwiLCBCb29sKSxcbiAgICAoXCI9PVwiLCBCb29sKSxcbiAgICAoXCIhXCIsIEJvb2wpLCAvLyBtYXliZSBkb2VzbnQgYmVsb25nIGhlcmU/IGJ1dCBibG9ja3MgYXV0b2NvbXBsZXRlIG9mICEgdG8gIT1cbiAgICAoXCIhPVwiLCBCb29sKSxcbiAgICAoXCIhPS5cIiwgQm9vbCksXG4gICAgKFwiPFwiLCBCb29sKSxcbiAgICAoXCI+XCIsIEJvb2wpLFxuICAgIChcIjw9XCIsIEJvb2wpLFxuICAgIChcIj49XCIsIEJvb2wpLFxuICAgIChcIjwuXCIsIEJvb2wpLFxuICAgIChcIj4uXCIsIEJvb2wpLFxuICAgIChcIjw9LlwiLCBCb29sKSxcbiAgICAoXCI+PS5cIiwgQm9vbCksXG4gICAgKFwiK1wiLCBJbnQpLFxuICAgIChcIi1cIiwgSW50KSxcbiAgICAoXCIqXCIsIEludCksXG4gICAgKFwiL1wiLCBJbnQpLFxuICAgIChcIioqXCIsIEludCksXG4gICAgKFwiKy5cIiwgRmxvYXQpLFxuICAgIChcIi0uXCIsIEZsb2F0KSxcbiAgICAoXCIqLlwiLCBGbG9hdCksXG4gICAgKFwiLy5cIiwgRmxvYXQpLFxuICAgIChcIioqLlwiLCBGbG9hdCksXG4gICAgKFwiKytcIiwgU3RyaW5nKSxcbiAgXTtcblxuICBsZXQgZXhwZWN0ZWQ6IEluZm8udCA9PiBUeXAudCA9XG4gICAgZnVuXG4gICAgfCBJbmZvRXhwKHttb2RlLCBffSlcbiAgICB8IEluZm9QYXQoe21vZGUsIF99KSA9PiBNb2RlLnR5X29mKG1vZGUpXG4gICAgfCBfID0+IFVua25vd24oSW50ZXJuYWwpO1xuXG4gIGxldCBmaWx0ZXJfYnkgPVxuICAgICAgKFxuICAgICAgICBjdHg6IEN0eC50LFxuICAgICAgICBleHBlY3RlZF90eTogVHlwLnQsXG4gICAgICAgIHNlbGZfdHlzOiBsaXN0KChUb2tlbi50LCBUeXAudCkpLFxuICAgICAgICBkZWxpbXM6IGxpc3Qoc3RyaW5nKSxcbiAgICAgIClcbiAgICAgIDogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9PlxuICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgIGRlbGltID0+IHtcbiAgICAgICAgbGV0KiBzZWxmX3R5ID0gTGlzdC5hc3NvY19vcHQoZGVsaW0sIHNlbGZfdHlzKTtcbiAgICAgICAgVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCBleHBlY3RlZF90eSwgc2VsZl90eSlcbiAgICAgICAgICA/IFNvbWUoKGRlbGltLCBzZWxmX3R5KSkgOiBOb25lO1xuICAgICAgfSxcbiAgICAgIGRlbGltcyxcbiAgICApO1xufTtcblxuLyogQXV0b21hdGljYWxseSBjb2xsYXRlcyBtb3N0IGRlbGltaXRlcnMgZnJvbSBGb3Jtcywgbm90YWJseSBhbGxcbiAqIG1vbm8gZGVsaW1pdGVycywgYWxsIGluZml4IG9wZXJhdG9ycywgYW5kIGFsbCBsZWFkaW5nIGRlbGltaXRlcnMgKi9cbm1vZHVsZSBEZWxpbXMgPSB7XG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgbGV0IChsYmwsIF8pID0gTW9sZHMuZGVsYXllZF9leHBhbnNpb24odG9rZW4pO1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIExpc3QubGVuZ3RoKGxibCkgPiAxICYmIHRva2VuID09IExpc3QuaGQobGJsKSAmJiBtLm91dCA9PSBzb3J0XG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4gKysgbGVhZGluZ19leHBhbmRlcikgOiBOb25lLFxuICAgICAgICAgICBNb2xkcy5nZXQobGJsKSxcbiAgICAgICAgICk7XG4gICAgICAgfSlcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxuICBsZXQgZGVsYXRlZF9sZWFkaW5nX2V4cCA9IGRlbGF5ZWRfbGVhZGluZyhFeHApO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3BhdCA9IGRlbGF5ZWRfbGVhZGluZyhQYXQpO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3R5cCA9IGRlbGF5ZWRfbGVhZGluZyhUeXApO1xuXG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gZGVsYXRlZF9sZWFkaW5nX2V4cFxuICAgIHwgUGF0ID0+IGRlbGF0ZWRfbGVhZGluZ19wYXRcbiAgICB8IFR5cCA9PiBkZWxhdGVkX2xlYWRpbmdfdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcblxuICBsZXQgaW5maXggPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTW9sZC5pc19pbmZpeF9vcChtKSA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG4gIGxldCBpbmZpeF9leHAgPSBpbmZpeChFeHApO1xuICBsZXQgaW5maXhfcGF0ID0gaW5maXgoUGF0KTtcbiAgbGV0IGluZml4X3R5cCA9IGluZml4KFR5cCk7XG4gIGxldCBpbmZpeCA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBpbmZpeF9leHBcbiAgICB8IFBhdCA9PiBpbmZpeF9wYXRcbiAgICB8IFR5cCA9PiBpbmZpeF90eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuXG4gIGxldCBjb25zdF9tb25vID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmNvbnN0X21vbm9fZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTGlzdC5tZW0odG9rZW4sIEZvcm0uY29uc3RfbW9ub19kZWxpbXMpXG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbiAgbGV0IGNvbnN0X21vbm9fZXhwID0gY29uc3RfbW9ubyhFeHApO1xuICBsZXQgY29uc3RfbW9ub19wYXQgPSBjb25zdF9tb25vKFBhdCk7XG4gIGxldCBjb25zdF9tb25vX3R5cCA9IGNvbnN0X21vbm8oVHlwKTtcblxuICBsZXQgY29uc3RfbW9ubyA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBjb25zdF9tb25vX2V4cFxuICAgIHwgUGF0ID0+IGNvbnN0X21vbm9fcGF0XG4gICAgfCBUeXAgPT4gY29uc3RfbW9ub190eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xufTtcblxubGV0IHN1Z2dlc3RfZm9ybSA9ICh0eV9tYXAsIGRlbGltc19vZl9zb3J0LCBjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHNvcnQgPSBJbmZvLnNvcnRfb2YoY2kpO1xuICBsZXQgZGVsaW1zID0gZGVsaW1zX29mX3NvcnQoc29ydCk7XG4gIGxldCBmaWx0ZXJlZCA9XG4gICAgVHlwLmZpbHRlcl9ieShJbmZvLmN0eF9vZihjaSksIFR5cC5leHBlY3RlZChjaSksIHR5X21hcCwgZGVsaW1zKTtcbiAgc3dpdGNoIChzb3J0KSB7XG4gIHwgRXhwID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IEV4cChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgUGF0ID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFBhdChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgXyA9PlxuICAgIGRlbGltc1xuICAgIHw+IExpc3QubWFwKGNvbnRlbnQgPT4gU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFR5cChOZXdGb3JtKX0pXG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdF9vcGVyYXRvcjogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShUeXAub2ZfaW5maXhfZGVsaW0sIERlbGltcy5pbmZpeCk7XG5cbmxldCBzdWdnZXN0X29wZXJhbmQ6IEluZm8udCA9PiBsaXN0KFN1Z2dlc3Rpb24udCkgPVxuICBzdWdnZXN0X2Zvcm0oVHlwLm9mX2NvbnN0X21vbm9fZGVsaW0sIERlbGltcy5jb25zdF9tb25vKTtcblxubGV0IHN1Z2dlc3RfbGVhZGluZzogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShUeXAub2ZfbGVhZGluZ19kZWxpbSwgRGVsaW1zLmRlbGF5ZWRfbGVhZGluZyk7XG4iLCJbQGRlcml2aW5nIHNleHBdXG50eXBlIGhvbGVfc29ydCA9XG4gIHwgRXhwcmVzc2lvbkhvbGVcbiAgfCBQYXR0ZXJuSG9sZTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gTWV0YVZhck1hcC50KChob2xlX3NvcnQsIFR5cC50LCBWYXJDdHgudCkpO1xubGV0IGVtcHR5OiB0ID0gKE1ldGFWYXJNYXAuZW1wdHk6IHQpO1xuIiwib3BlbiBVdGlsO1xuXG5pbmNsdWRlIElkLk1hcDtcbnR5cGUgcmFuZ2UgPSAoUGllY2UudCwgUGllY2UudCk7XG50eXBlIG5vbnJlYyB0ID0gdChyYW5nZSk7XG5cbmxldCB1bmlvbiA9IHVuaW9uKChfLCByYW5nZSwgXykgPT4gU29tZShyYW5nZSkpO1xuXG4vKiBQRVJGOiBVcCB0byA1MCUgcmVkdWN0aW9uIGluIHNvbWUgY2FzZXMgYnkgbWVtb2l6aW5nXG4gKiB0aGlzIGZ1bmN0aW9uLiBNaWdodCBiZSBiZXR0ZXIgdGhvdWdoIHRvIGp1c3QgZG8gYW5cbiAqIHVubWVtb2l6ZWQgdHJhdmVyc2FsIGJ1aWxkaW5nIGEgaGFzaHRibCBhdm9pZGluZyB1bmlvbmluZy5cblxuICAgVE9ETyhhbmRyZXcpOiBDb25zaWRlciBzZXR0aW5nIGEgbGltaXQgZm9yIHRoZSBoYXNodGJsIHNpemUgKi9cbmxldCByYW5nZV9oYXNoOiBIYXNodGJsLnQoVGlsZS5zZWdtZW50LCBJZC5NYXAudChyYW5nZSkpID1cbiAgSGFzaHRibC5jcmVhdGUoMTAwMCk7XG5cbi8vIE5PVEU6IHRoaXMgY2FsY3VsYXRpb24gaXMgb3V0IG9mIHN5bmMgd2l0aFxuLy8gTWFrZVRlcm0sIHdoaWNoIG1hdGNoZXMgdGhpbmdzIGxpa2UgbGlzdCBicmFja2V0c1xuLy8gYW5kIGNhc2UuLi5lbmQgdG8gc2VwYXJhdG9ycyBpbnNpZGUgZWcgbGlzdCBjb21tYXNcbi8vIGFuZCBydWxlcyBgfCBwID0+YC4gdGhpcyBjYWxjdWxhdGlvbiBkb2VzIG5vdFxuLy8gaW5jbHVkZSB0aGUgY29udGFpbmVyIGluIHRoZSByYW5nZXMgZm9yIHRob3NlIGlubmVyXG4vLyBzZXBhcmF0b3JzLlxuLy8gVE9ETyhkKSBmaXggb3IgZGVyaXZlIGZyb20gb3RoZXIgaW5mb1xuLy9cbi8vIHRhaWwtcmVjdXJzaXZlIGluIG91dGVyIHJlY3Vyc2lvblxubGV0IHJlYyBtaycgPSAoc2VnOiBTZWdtZW50LnQpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChza2VsOiBTa2VsLnQpOiAocmFuZ2UsIHQpID0+IHtcbiAgICBsZXQgcm9vdCA9IFNrZWwucm9vdChza2VsKSB8PiBBYmEubWFwX2EoTGlzdC5udGgoc2VnKSk7XG4gICAgbGV0IHJvb3RfbCA9IEFiYS5maXJzdF9hKHJvb3QpO1xuICAgIGxldCByb290X3IgPSBBYmEubGFzdF9hKHJvb3QpO1xuICAgIGxldCAocmFuZ2UsIHVuaWNoaWxkX21hcCkgPVxuICAgICAgc3dpdGNoIChza2VsKSB7XG4gICAgICB8IE9wKF8pID0+ICgocm9vdF9sLCByb290X3IpLCBlbXB0eSlcbiAgICAgIHwgUHJlKF8sIHIpID0+XG4gICAgICAgIGxldCAoKF8sIHIpLCBtYXApID0gZ28ocik7XG4gICAgICAgICgocm9vdF9sLCByKSwgbWFwKTtcbiAgICAgIHwgUG9zdChsLCBfKSA9PlxuICAgICAgICBsZXQgKChsLCBfKSwgbWFwKSA9IGdvKGwpO1xuICAgICAgICAoKGwsIHJvb3RfciksIG1hcCk7XG4gICAgICB8IEJpbihsLCBfLCByKSA9PlxuICAgICAgICBsZXQgKChsLCBfKSwgbWFwX2wpID0gZ28obCk7XG4gICAgICAgIGxldCAoKF8sIHIpLCBtYXBfcikgPSBnbyhyKTtcbiAgICAgICAgKChsLCByKSwgdW5pb24obWFwX2wsIG1hcF9yKSk7XG4gICAgICB9O1xuICAgIGxldCBiZXR3ZWVuX2NoaWxkX21hcCA9XG4gICAgICBBYmEuZ2V0X2JzKHJvb3QpXG4gICAgICB8PiBMaXN0Lm1hcChnbylcbiAgICAgIHw+IExpc3QubWFwKHNuZClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KHVuaW9uLCBlbXB0eSk7XG4gICAgbGV0IG1hcCA9XG4gICAgICBBYmEuZ2V0X2FzKHJvb3QpXG4gICAgICB8PiBMaXN0Lm1hcChQaWVjZS5pZClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAobWFwLCBpZCkgPT4gSWQuTWFwLmFkZChpZCwgcmFuZ2UsIG1hcCksXG4gICAgICAgICAgIHVuaW9uKGJldHdlZW5fY2hpbGRfbWFwLCB1bmljaGlsZF9tYXApLFxuICAgICAgICAgKTtcbiAgICAocmFuZ2UsIG1hcCk7XG4gIH07XG4gIFNlZ21lbnQuY2hpbGRyZW4oc2VnKVxuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAobWFwLCBraWQpID0+IHVuaW9uKG1hcCwgbWsoa2lkKSksXG4gICAgICAgdW5pb24oZW1wdHksIHNuZChnbyhTZWdtZW50LnNrZWwoc2VnKSkpKSxcbiAgICAgKTtcbn1cbmFuZCBtayA9IHNlZyA9PlxuICB0cnkoSGFzaHRibC5maW5kKHJhbmdlX2hhc2gsIHNlZykpIHtcbiAgfCBfID0+XG4gICAgbGV0IHJlcyA9IG1rJyhzZWcpO1xuICAgIEhhc2h0YmwuYWRkKHJhbmdlX2hhc2gsIHNlZywgcmVzKTtcbiAgICByZXM7XG4gIH07XG4iLCJvcGVuIFRlcm07XG5cbi8qIFNUQVRJQ1MucmVcblxuICAgVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB0aGUgc3RhdGljcyBzZW1hbnRpY3Mgb2YgYSBwcm9ncmFtLlxuICAgSXQgbWFrZXMgdXNlIG9mIHRoZSBmb2xsb3dpbmcgbW9kdWxlczpcblxuICAgSU5GTy5yZTogRGVmaW5lcyB0aGUgSW5mby50IHR5cGUgd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgdGhlXG4gICBzdGF0aWMgU1RBVFVTIG9mIGEgdGVybS4gVGhpcyBTVEFUVVMgY2FuIGJlIGVpdGhlciBPSyBvciBFUlJPUixcbiAgIGFuZCBpcyBkZXRlcm1pbmVkIGJ5IHJlY29uY2lsbGluZyB0d28gc291cmNlcyBvZiB0eXBpbmcgaW5mb3JtYXRpb24sXG4gICB0aGUgTU9ERSBhbmQgdGhlIFNFTEYuXG5cbiAgIE1PREUucmU6IERlZmluZXMgdGhlIE1vZGUudCB0eXBlIHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZVxuICAgdHlwaW5nIGV4cGVjdGF0aW9ucyBpbXBvc2VkIGJ5IGEgdGVybSdzIGFuY2VzdG9ycy5cblxuICAgU0VMRi5yZTogRGVmaW5lIHRoZSBTZWxmLnQgdHlwZSB3aGljaCBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGVcbiAgIHR5cGUgaW5mb3JtYXRpb24gZGVyaXZhYmxlIGZyb20gdGhlIHRlcm0gaXRzZWxmLlxuXG4gICBUaGUgcG9pbnQgb2YgU1RBVElDUy5yZSBpdHNlbGYgaXMgdG8gZGVyaXZlIGEgbWFwIGJldHdlZW4gZWFjaFxuICAgdGVybSdzIHVuaXF1ZSBpZCBhbmQgdGhhdCB0ZXJtJ3Mgc3RhdGljIElORk8uIFRoZSBiZWxvdyBmdW5jdGlvbnNcbiAgIGFyZSBpbnRlbmRlZCBtb3N0bHkgYXMgaW5mcmFzdHJ1Y3R1cmU6IFRoZSBwb2ludCBpcyB0byBkZWZpbmUgYVxuICAgdHJhdmVyc2FsIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlIHdoaWNoLCBmb3IgZWFjaCB0ZXJtLCBwYXNzZXNcbiAgIGRvd24gdGhlIE1PREUsIHBhc3NlcyB1cCB0aGUgU0VMRiwgY2FsY3VsYXRlcyB0aGUgSU5GTywgYW5kIGFkZHNcbiAgIGl0IHRvIHRoZSBtYXAuXG5cbiAgIFRoZSBhcmNoaXRlY3R1cmFsIGludGVudGlvbiBoZXJlIGlzIHRoYXQgbW9zdCB0eXBlLW1hbmlwdWxhdGlvblxuICAgbG9naWMgaXMgZGVmaW5lZCBpbiBJTkZPLCBNT0RFLCBhbmQgU0VMRiwgYW5kIHRoZSBTVEFUSUNTIG1vZHVsZVxuICAgaXRzZWxmIGlzIGRlZGljYXRlZCB0byB0aGUgcGlwaW5nIG5lY2Vzc2FyeSB0byAoQSkgaW50cm9kdWNlIGFuZFxuICAgKEIpIHByb3BhZ2F0ZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlLlxuXG4gICAgKi9cblxubW9kdWxlIEluZm8gPSBJbmZvO1xuXG5tb2R1bGUgTWFwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IElkLk1hcC50KEluZm8udCk7XG5cbiAgbGV0IGVycm9yX2lkcyA9ICh0ZXJtX3JhbmdlczogVGVybVJhbmdlcy50LCBpbmZvX21hcDogdCk6IGxpc3QoSWQudCkgPT5cbiAgICBJZC5NYXAuZm9sZChcbiAgICAgIChpZCwgaW5mbywgYWNjKSA9PlxuICAgICAgICAvKiBCZWNhdXNlIG9mIGFydGVmYWN0cyBpbiBNYWtldGVybSBJRCBoYW5kbGluZyxcbiAgICAgICAgICogdGhlcmUgYXJlIGJlIHNpdHVhdGlvbnMgd2hlcmUgaWRzIGFwcGVhciBpbiB0aGVcbiAgICAgICAgICogaW5mb19tYXAgd2hpY2ggZG8gbm90IG9jY3VyIGluIHRlcm1fcmFuZ2VzLiBUaGVzZVxuICAgICAgICAgKiBpZHMgc2hvdWxkIGJlIHB1cmVseSBkdXBsaWNhdGl2ZSwgc28gc2tpcHBpbmcgdGhlbVxuICAgICAgICAgKiB3aGVuIGl0ZXJhdGluZyBvdmVyIHRoZSBpbmZvX21hcCBzaG91bGQgaGF2ZSBub1xuICAgICAgICAgKiBlZmZlY3QsIGJleW9uZCBzdXByZXNzaW5nIHRoZSByZXN1bHRpbmcgTm90X2ZvdW5kIGV4cyAqL1xuICAgICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgdGVybV9yYW5nZXMpKSB7XG4gICAgICAgIHwgU29tZShfKSB3aGVuIEluZm8uaXNfZXJyb3IoaW5mbykgPT4gW2lkLCAuLi5hY2NdXG4gICAgICAgIHwgXyA9PiBhY2NcbiAgICAgICAgfSxcbiAgICAgIGluZm9fbWFwLFxuICAgICAgW10sXG4gICAgKTtcbn07XG5cbmxldCBtYXBfbSA9IChmLCB4cywgbTogTWFwLnQpID0+XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgICgoeHMsIG0pLCB4KSA9PiBmKHgsIG0pIHw+ICgoKHgsIG0pKSA9PiAoeHMgQCBbeF0sIG0pKSxcbiAgICAoW10sIG0pLFxuICAgIHhzLFxuICApO1xuXG5sZXQgYWRkX2luZm8gPSAoaWRzOiBsaXN0KElkLnQpLCBpbmZvOiBJbmZvLnQsIG06IE1hcC50KTogTWFwLnQgPT5cbiAgaWRzIHw+IExpc3QuZm9sZF9sZWZ0KChtLCBpZCkgPT4gSWQuTWFwLmFkZChpZCwgaW5mbywgbSksIG0pO1xuXG5sZXQgZXh0ZW5kX2xldF9kZWZfY3R4ID1cbiAgICAoY3R4OiBDdHgudCwgcGF0OiBVUGF0LnQsIHBhdF9jdHg6IEN0eC50LCBkZWY6IFVFeHAudCk6IEN0eC50ID0+XG4gIGlmIChVUGF0LmlzX3R1cGxlX29mX2Fycm93cyhwYXQpICYmIFVFeHAuaXNfdHVwbGVfb2ZfZnVuY3Rpb25zKGRlZikpIHtcbiAgICBwYXRfY3R4O1xuICB9IGVsc2Uge1xuICAgIGN0eDtcbiAgfTtcblxubGV0IHR5cF9leHBfYmlub3BfYmluX2ludDogVUV4cC5vcF9iaW5faW50ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIF9vcCA9PiBJbnRcbiAgfCAoXG4gICAgICBMZXNzVGhhbiB8IEdyZWF0ZXJUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW5PckVxdWFsIHwgRXF1YWxzIHxcbiAgICAgIE5vdEVxdWFsc1xuICAgICkgYXMgX29wID0+XG4gICAgQm9vbDtcblxubGV0IHR5cF9leHBfYmlub3BfYmluX2Zsb2F0OiBVRXhwLm9wX2Jpbl9mbG9hdCA9PiBUeXAudCA9XG4gIGZ1blxuICB8IChQbHVzIHwgTWludXMgfCBUaW1lcyB8IFBvd2VyIHwgRGl2aWRlKSBhcyBfb3AgPT4gRmxvYXRcbiAgfCAoXG4gICAgICBMZXNzVGhhbiB8IEdyZWF0ZXJUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW5PckVxdWFsIHwgRXF1YWxzIHxcbiAgICAgIE5vdEVxdWFsc1xuICAgICkgYXMgX29wID0+XG4gICAgQm9vbDtcblxubGV0IHR5cF9leHBfYmlub3BfYmluX3N0cmluZzogVUV4cC5vcF9iaW5fc3RyaW5nID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgQ29uY2F0ID0+IFN0cmluZ1xuICB8IEVxdWFscyA9PiBCb29sO1xuXG5sZXQgdHlwX2V4cF9iaW5vcDogVUV4cC5vcF9iaW4gPT4gKFR5cC50LCBUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgQm9vbChBbmQgfCBPcikgPT4gKEJvb2wsIEJvb2wsIEJvb2wpXG4gIHwgSW50KG9wKSA9PiAoSW50LCBJbnQsIHR5cF9leHBfYmlub3BfYmluX2ludChvcCkpXG4gIHwgRmxvYXQob3ApID0+IChGbG9hdCwgRmxvYXQsIHR5cF9leHBfYmlub3BfYmluX2Zsb2F0KG9wKSlcbiAgfCBTdHJpbmcob3ApID0+IChTdHJpbmcsIFN0cmluZywgdHlwX2V4cF9iaW5vcF9iaW5fc3RyaW5nKG9wKSk7XG5cbmxldCB0eXBfZXhwX3Vub3A6IFVFeHAub3BfdW4gPT4gKFR5cC50LCBUeXAudCkgPVxuICBmdW5cbiAgfCBNZXRhKFVucXVvdGUpID0+IChWYXIoXCIkTWV0YVwiKSwgVW5rbm93bihGcmVlKFwiJE1ldGFcIikpKVxuICB8IEJvb2woTm90KSA9PiAoQm9vbCwgQm9vbClcbiAgfCBJbnQoTWludXMpID0+IChJbnQsIEludCk7XG5cbmxldCByZWMgYW55X3RvX2luZm9fbWFwID1cbiAgICAgICAgKH5jdHg6IEN0eC50LCB+YW5jZXN0b3JzLCBhbnk6IGFueSwgbTogTWFwLnQpOiAoQ29DdHgudCwgTWFwLnQpID0+XG4gIHN3aXRjaCAoYW55KSB7XG4gIHwgRXhwKGUpID0+XG4gICAgbGV0ICh7Y29fY3R4LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgZSwgbSk7XG4gICAgKGNvX2N0eCwgbSk7XG4gIHwgUGF0KHApID0+XG4gICAgbGV0IG0gPVxuICAgICAgdXBhdF90b19pbmZvX21hcChcbiAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmN0eCxcbiAgICAgICAgcCxcbiAgICAgICAgbSxcbiAgICAgIClcbiAgICAgIHw+IHNuZDtcbiAgICAoQ29DdHguZW1wdHksIG0pO1xuICB8IFRQYXQodHApID0+IChcbiAgICAgIENvQ3R4LmVtcHR5LFxuICAgICAgdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHAsIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgVHlwKHR5KSA9PiAoXG4gICAgICBDb0N0eC5lbXB0eSxcbiAgICAgIHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHksIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgUnVsKF8pXG4gIHwgTnVsICgpXG4gIHwgQW55ICgpID0+IChDb0N0eC5lbXB0eSwgbSlcbiAgfVxuYW5kIG11bHRpID0gKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcykgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKChjb19jdHhzLCBtKSwgYW55KSA9PiB7XG4gICAgICBsZXQgKGNvX2N0eCwgbSkgPSBhbnlfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgYW55LCBtKTtcbiAgICAgIChjb19jdHhzIEAgW2NvX2N0eF0sIG0pO1xuICAgIH0sXG4gICAgKFtdLCBtKSxcbiAgICB0bXMsXG4gIClcbmFuZCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAoXG4gICAgICB+Y3R4OiBDdHgudCxcbiAgICAgIH5tb2RlPU1vZGUuU3luLFxuICAgICAgfmlzX2luX2ZpbHRlcj1mYWxzZSxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB7aWRzLCB0ZXJtfSBhcyB1ZXhwOiBVRXhwLnQsXG4gICAgICBtOiBNYXAudCxcbiAgICApXG4gICAgOiAoSW5mby5leHAsIE1hcC50KSA9PiB7XG4gIC8qIE1heWJlIHN3aXRjaCBtb2RlIHRvIHN5biAqL1xuICBsZXQgbW9kZSA9XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgfCBBbmEoVW5rbm93bihTeW5Td2l0Y2gpKSA9PiBNb2RlLlN5blxuICAgIHwgXyA9PiBtb2RlXG4gICAgfTtcbiAgbGV0IGFkZCcgPSAofnNlbGYsIH5jb19jdHgsIG0pID0+IHtcbiAgICBsZXQgaW5mbyA9XG4gICAgICBJbmZvLmRlcml2ZWRfZXhwKH51ZXhwLCB+Y3R4LCB+bW9kZSwgfmFuY2VzdG9ycywgfnNlbGYsIH5jb19jdHgpO1xuICAgIChpbmZvLCBhZGRfaW5mbyhpZHMsIEluZm9FeHAoaW5mbyksIG0pKTtcbiAgfTtcbiAgbGV0IGFkZCA9ICh+c2VsZiwgfmNvX2N0eCwgbSkgPT4gYWRkJyh+c2VsZj1Db21tb24oc2VsZiksIH5jb19jdHgsIG0pO1xuICBsZXQgYW5jZXN0b3JzID0gW1VFeHAucmVwX2lkKHVleHApXSBAIGFuY2VzdG9ycztcbiAgbGV0IHVleHBfdG9faW5mb19tYXAgPVxuICAgICAgKFxuICAgICAgICB+Y3R4LFxuICAgICAgICB+bW9kZT1Nb2RlLlN5bixcbiAgICAgICAgfmlzX2luX2ZpbHRlcj1pc19pbl9maWx0ZXIsXG4gICAgICAgIH5hbmNlc3RvcnM9YW5jZXN0b3JzLFxuICAgICAgICB1ZXhwOiBVRXhwLnQsXG4gICAgICAgIG06IE1hcC50LFxuICAgICAgKSA9PiB7XG4gICAgdWV4cF90b19pbmZvX21hcCh+Y3R4LCB+bW9kZSwgfmlzX2luX2ZpbHRlciwgfmFuY2VzdG9ycywgdWV4cCwgbSk7XG4gIH07XG4gIGxldCBnbycgPSB1ZXhwX3RvX2luZm9fbWFwKH5hbmNlc3RvcnMpO1xuICBsZXQgZ28gPSBnbycofmN0eCk7XG4gIGxldCBtYXBfbV9nbyA9IG0gPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoKGVzLCBtKSwgbW9kZSwgZSkgPT5cbiAgICAgICAgZ28ofm1vZGUsIGUsIG0pIHw+ICgoKGUsIG0pKSA9PiAoZXMgQCBbZV0sIG0pKSxcbiAgICAgIChbXSwgbSksXG4gICAgKTtcbiAgbGV0IGdvX3BhdCA9IHVwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycyk7XG4gIGxldCBhdG9taWMgPSBzZWxmID0+IGFkZCh+c2VsZiwgfmNvX2N0eD1Db0N0eC5lbXB0eSwgbSk7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChjb19jdHhzLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKH5zZWxmPUlzTXVsdGksIH5jb19jdHg9Q29DdHgudW5pb24oY29fY3R4cyksIG0pO1xuICB8IEludmFsaWQodG9rZW4pID0+IGF0b21pYyhCYWRUb2tlbih0b2tlbikpXG4gIHwgRW1wdHlIb2xlID0+IGF0b21pYyhKdXN0KFVua25vd24oSW50ZXJuYWwpKSlcbiAgfCBUcml2ID0+IGF0b21pYyhKdXN0KFByb2QoW10pKSlcbiAgfCBCb29sKF8pID0+IGF0b21pYyhKdXN0KEJvb2wpKVxuICB8IEludChfKSA9PiBhdG9taWMoSnVzdChJbnQpKVxuICB8IEZsb2F0KF8pID0+IGF0b21pYyhKdXN0KEZsb2F0KSlcbiAgfCBTdHJpbmcoXykgPT4gYXRvbWljKEp1c3QoU3RyaW5nKSlcbiAgfCBMaXN0TGl0KGVzKSA9PlxuICAgIGxldCBpZHMgPSBMaXN0Lm1hcChVRXhwLnJlcF9pZCwgZXMpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfbGlzdF9saXQoY3R4LCBMaXN0Lmxlbmd0aChlcyksIG1vZGUpO1xuICAgIGxldCAoZXMsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGVzKTtcbiAgICBsZXQgdHlzID0gTGlzdC5tYXAoSW5mby5leHBfdHksIGVzKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1TZWxmLmxpc3RsaXQofmVtcHR5PVVua25vd24oSW50ZXJuYWwpLCBjdHgsIHR5cywgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpLFxuICAgICAgbSxcbiAgICApO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9IGdvKH5tb2RlPU1vZGUub2ZfY29uc190bChjdHgsIG1vZGUsIGhkLnR5KSwgdGwsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoTGlzdChoZC50eSkpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbaGQuY29fY3R4LCB0bC5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICBsZXQgaWRzID0gTGlzdC5tYXAoVGVybS5VRXhwLnJlcF9pZCwgW2UxLCBlMl0pO1xuICAgIGxldCBtb2RlID0gTW9kZS5vZl9saXN0X2NvbmNhdChjdHgsIG1vZGUpO1xuICAgIGxldCAoZTEsIG0pID0gZ28ofm1vZGUsIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5saXN0X2NvbmNhdChjdHgsIFtlMS50eSwgZTIudHldLCBpZHMpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbZTEuY29fY3R4LCBlMi5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBWYXIobmFtZSkgPT5cbiAgICBhZGQnKFxuICAgICAgfnNlbGY9U2VsZi5vZl9leHBfdmFyKGN0eCwgbmFtZSksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnNpbmdsZXRvbihuYW1lLCBVRXhwLnJlcF9pZCh1ZXhwKSwgTW9kZS50eV9vZihtb2RlKSksXG4gICAgICBtLFxuICAgIClcbiAgfCBQYXJlbnMoZSkgPT5cbiAgICBsZXQgKGUsIG0pID0gZ28ofm1vZGUsIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KGUudHkpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSksIGUpIHdoZW4gaXNfaW5fZmlsdGVyID0+XG4gICAgbGV0IGU6IFVFeHAudCA9IHtcbiAgICAgIGlkczogZS5pZHMsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgICB8IFZhcihcImVcIikgPT4gVUV4cC5Db25zdHJ1Y3RvcihcIiRlXCIpXG4gICAgICAgIHwgVmFyKFwidlwiKSA9PiBVRXhwLkNvbnN0cnVjdG9yKFwiJHZcIilcbiAgICAgICAgfCBfID0+IGUudGVybVxuICAgICAgICB9LFxuICAgIH07XG4gICAgbGV0IHR5X2luID0gVHlwLlZhcihcIiRNZXRhXCIpO1xuICAgIGxldCB0eV9vdXQgPSBUeXAuVW5rbm93bihJbnRlcm5hbCk7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IFVuT3Aob3AsIGUpID0+XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IHR5cF9leHBfdW5vcChvcCk7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEJpbk9wKG9wLCBlMSwgZTIpID0+XG4gICAgbGV0ICh0eTEsIHR5MiwgdHlfb3V0KSA9IHR5cF9leHBfYmlub3Aob3ApO1xuICAgIGxldCAoZTEsIG0pID0gZ28ofm1vZGU9QW5hKHR5MSksIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlPUFuYSh0eTIpLCBlMiwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QodHlfb3V0KSwgfmNvX2N0eD1Db0N0eC51bmlvbihbZTEuY29fY3R4LCBlMi5jb19jdHhdKSwgbSk7XG4gIHwgVHVwbGUoZXMpID0+XG4gICAgbGV0IG1vZGVzID0gTW9kZS5vZl9wcm9kKGN0eCwgbW9kZSwgTGlzdC5sZW5ndGgoZXMpKTtcbiAgICBsZXQgKGVzLCBtKSA9IG1hcF9tX2dvKG0sIG1vZGVzLCBlcyk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChQcm9kKExpc3QubWFwKEluZm8uZXhwX3R5LCBlcykpKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFRlc3QoZSkgPT5cbiAgICBsZXQgKGUsIG0pID0gZ28ofm1vZGU9QW5hKEJvb2wpLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChQcm9kKFtdKSksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEZpbHRlcihfLCBjb25kLCBib2R5KSA9PlxuICAgIGxldCAoY29uZCwgbSkgPSBnbyh+bW9kZSwgY29uZCwgbSwgfmlzX2luX2ZpbHRlcj10cnVlKTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28ofm1vZGUsIGJvZHksIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoYm9keS50eSksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtjb25kLmNvX2N0eCwgYm9keS5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBTZXEoZTEsIGUyKSA9PlxuICAgIGxldCAoZTEsIG0pID0gZ28ofm1vZGU9U3luLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KGUyLnR5KSwgfmNvX2N0eD1Db0N0eC51bmlvbihbZTEuY29fY3R4LCBlMi5jb19jdHhdKSwgbSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PiBhdG9taWMoU2VsZi5vZl9jdHIoY3R4LCBjdHIpKVxuICB8IEFwKGZuLCBhcmcpXG4gIHwgUGlwZWxpbmUoYXJnLCBmbikgPT5cbiAgICBsZXQgZm5fbW9kZSA9IE1vZGUub2ZfYXAoY3R4LCBtb2RlLCBVRXhwLmN0cl9uYW1lKGZuKSk7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT1mbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgZm4udHkpO1xuICAgIGxldCAoYXJnLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGFyZywgbSk7XG4gICAgbGV0IHNlbGY6IFNlbGYudCA9XG4gICAgICBJZC5pc19udWxsYXJ5X2FwX2ZsYWcoYXJnLnRlcm0uaWRzKVxuICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfaW4sIFByb2QoW10pKVxuICAgICAgICA/IEJhZFRyaXZBcCh0eV9pbikgOiBKdXN0KHR5X291dCk7XG4gICAgYWRkKH5zZWxmLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtmbi5jb19jdHgsIGFyZy5jb19jdHhdKSwgbSk7XG4gIHwgRnVuKHAsIGUpID0+XG4gICAgbGV0IChtb2RlX3BhdCwgbW9kZV9ib2R5KSA9IE1vZGUub2ZfYXJyb3coY3R4LCBtb2RlKTtcbiAgICBsZXQgKHAnLCBfKSA9XG4gICAgICBnb19wYXQofmlzX3N5bnN3aXRjaD1mYWxzZSwgfmNvX2N0eD1Db0N0eC5lbXB0eSwgfm1vZGU9bW9kZV9wYXQsIHAsIG0pO1xuICAgIGxldCAoZSwgbSkgPSBnbycofmN0eD1wJy5jdHgsIH5tb2RlPW1vZGVfYm9keSwgZSwgbSk7XG4gICAgLyogYWRkIGNvX2N0eCB0byBwYXR0ZXJuICovXG4gICAgbGV0IChwLCBtKSA9XG4gICAgICBnb19wYXQofmlzX3N5bnN3aXRjaD1mYWxzZSwgfmNvX2N0eD1lLmNvX2N0eCwgfm1vZGU9bW9kZV9wYXQsIHAsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoQXJyb3cocC50eSwgZS50eSkpLFxuICAgICAgfmNvX2N0eD1Db0N0eC5tayhjdHgsIHAuY3R4LCBlLmNvX2N0eCksXG4gICAgICBtLFxuICAgICk7XG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICBsZXQgKHBfc3luLCBfKSA9XG4gICAgICBnb19wYXQofmlzX3N5bnN3aXRjaD10cnVlLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCB+bW9kZT1TeW4sIHAsIG0pO1xuICAgIGxldCBkZWZfY3R4ID0gZXh0ZW5kX2xldF9kZWZfY3R4KGN0eCwgcCwgcF9zeW4uY3R4LCBkZWYpO1xuICAgIGxldCAoZGVmLCBtKSA9IGdvJyh+Y3R4PWRlZl9jdHgsIH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgLyogQW5hbHl6ZSBwYXR0ZXJuIHRvIGluY29ycG9yYXRlIGRlZiB0eXBlIGludG8gY3R4ICovXG4gICAgbGV0IChwX2FuYScsIF8pID1cbiAgICAgIGdvX3BhdChcbiAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgfm1vZGU9QW5hKGRlZi50eSksXG4gICAgICAgIHAsXG4gICAgICAgIG0sXG4gICAgICApO1xuICAgIGxldCAoYm9keSwgbSkgPSBnbycofmN0eD1wX2FuYScuY3R4LCB+bW9kZSwgYm9keSwgbSk7XG4gICAgLyogYWRkIGNvX2N0eCB0byBwYXR0ZXJuICovXG4gICAgbGV0IChwX2FuYSwgbSkgPVxuICAgICAgZ29fcGF0KFxuICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICB+Y29fY3R4PWJvZHkuY29fY3R4LFxuICAgICAgICB+bW9kZT1BbmEoZGVmLnR5KSxcbiAgICAgICAgcCxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChib2R5LnR5KSxcbiAgICAgIH5jb19jdHg9XG4gICAgICAgIENvQ3R4LnVuaW9uKFtkZWYuY29fY3R4LCBDb0N0eC5tayhjdHgsIHBfYW5hLmN0eCwgYm9keS5jb19jdHgpXSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgSWYoZTAsIGUxLCBlMikgPT5cbiAgICBsZXQgYnJhbmNoX2lkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBbZTEsIGUyXSk7XG4gICAgbGV0IChjb25kLCBtKSA9IGdvKH5tb2RlPUFuYShCb29sKSwgZTAsIG0pO1xuICAgIGxldCAoY29ucywgbSkgPSBnbyh+bW9kZSwgZTEsIG0pO1xuICAgIGxldCAoYWx0LCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIFtjb25zLnR5LCBhbHQudHldLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2NvbmQuY29fY3R4LCBjb25zLmNvX2N0eCwgYWx0LmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IE1hdGNoKHNjcnV0LCBydWxlcykgPT5cbiAgICBsZXQgKHNjcnV0LCBtKSA9IGdvKH5tb2RlPVN5biwgc2NydXQsIG0pO1xuICAgIGxldCAocHMsIGVzKSA9IExpc3Quc3BsaXQocnVsZXMpO1xuICAgIGxldCBicmFuY2hfaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIGVzKTtcbiAgICBsZXQgKHBzJywgXykgPVxuICAgICAgbWFwX20oXG4gICAgICAgIGdvX3BhdChcbiAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgICAgfm1vZGU9TW9kZS5BbmEoc2NydXQudHkpLFxuICAgICAgICApLFxuICAgICAgICBwcyxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgbGV0IHBfY3R4cyA9IExpc3QubWFwKEluZm8ucGF0X2N0eCwgcHMnKTtcbiAgICBsZXQgKGVzLCBtKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgICgoZXMsIG0pLCBlLCBjdHgpID0+XG4gICAgICAgICAgZ28nKH5jdHgsIH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAgIChbXSwgbSksXG4gICAgICAgIGVzLFxuICAgICAgICBwX2N0eHMsXG4gICAgICApO1xuICAgIGxldCBlX3R5cyA9IExpc3QubWFwKEluZm8uZXhwX3R5LCBlcyk7XG4gICAgbGV0IGVfY29fY3R4cyA9XG4gICAgICBMaXN0Lm1hcDIoQ29DdHgubWsoY3R4KSwgcF9jdHhzLCBMaXN0Lm1hcChJbmZvLmV4cF9jb19jdHgsIGVzKSk7XG4gICAgLyogQWRkIGNvLWN0eHMgdG8gcGF0dGVybnMgKi9cbiAgICBsZXQgKF8sIG0pID1cbiAgICAgIG1hcF9tKFxuICAgICAgICAoKHAsIGNvX2N0eCkpID0+XG4gICAgICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHgsIH5tb2RlPU1vZGUuQW5hKHNjcnV0LnR5KSwgcCksXG4gICAgICAgIExpc3QuY29tYmluZShwcywgZV9jb19jdHhzKSxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIGVfdHlzLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW3NjcnV0LmNvX2N0eF0gQCBlX2NvX2N0eHMpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5QWxpYXModHlwYXQsIHV0eXAsIGJvZHkpID0+XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB0eXBhdCwgbSkgfD4gc25kO1xuICAgIHN3aXRjaCAodHlwYXQudGVybSkge1xuICAgIHwgVmFyKG5hbWUpIHdoZW4gIUN0eC5zaGFkb3dzX3R5cChjdHgsIG5hbWUpID0+XG4gICAgICAvKiBDdXJyZW50bHkgd2UgZGlzYWxsb3cgYWxsIHR5cGUgc2hhZG93aW5nICovXG4gICAgICAvKiBOT1RFKGFuZHJldyk6IEN1cnJlbnRseSwgVVR5cC50b190eXAgcmV0dXJucyBVbmtub3duKFR5cGVIb2xlKVxuICAgICAgICAgZm9yIGFueSB0eXBlIHZhcmlhYmxlIHJlZmVyZW5jZSBub3QgaW4gaXRzIGN0eC4gU28gYW55IGZyZWUgdmFyaWFibGVzXG4gICAgICAgICBpbiB0aGUgZGVmaW5pdGlvbiB3b24ndCBiZSBub3RpY2VkLiBCdXQgd2UgbmVlZCB0byBjaGVjayBmb3IgZnJlZVxuICAgICAgICAgdmFyaWFibGVzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIG1ha2UgYSByZWN1cnNpdmUgdHlwZSBvciBub3QuIFNvIHdlXG4gICAgICAgICB0ZW50YXRpdmVseSBhZGQgYW4gYWJ0cmFjdCB0eXBlIHRvIHRoZSBjdHgsIHJlcHJlc2VudGluZyB0aGVcbiAgICAgICAgIHNwZWN1bGF0aXZlIHJlYyBwYXJhbWV0ZXIuICovXG4gICAgICBsZXQgKHR5X2RlZiwgY3R4X2RlZiwgY3R4X2JvZHkpID0ge1xuICAgICAgICBsZXQgdHlfcHJlID0gVVR5cC50b190eXAoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgbmFtZSksIHV0eXApO1xuICAgICAgICBzd2l0Y2ggKHV0eXAudGVybSkge1xuICAgICAgICB8IFN1bShfKSB3aGVuIExpc3QubWVtKG5hbWUsIFR5cC5mcmVlX3ZhcnModHlfcHJlKSkgPT5cbiAgICAgICAgICAvKiBOT1RFOiBXaGVuIGRlYnVnZ2luZyB0eXBlIHN5c3RlbSBpc3N1ZXMgaXQgbWF5IGJlIGJlbmVmaWNpYWwgdG9cbiAgICAgICAgICAgICB1c2UgYSBkaWZmZXJlbnQgbmFtZSB0aGFuIHRoZSBhbGlhcyBmb3IgdGhlIHJlY3Vyc2l2ZSBwYXJhbWV0ZXIgKi9cbiAgICAgICAgICAvL2xldCB0eV9yZWMgPSBUeXAuUmVjKFwizrFcIiwgVHlwLnN1YnN0KFZhcihcIs6xXCIpLCBuYW1lLCB0eV9wcmUpKTtcbiAgICAgICAgICBsZXQgdHlfcmVjID0gVHlwLlJlYyhuYW1lLCB0eV9wcmUpO1xuICAgICAgICAgIGxldCBjdHhfZGVmID1cbiAgICAgICAgICAgIEN0eC5leHRlbmRfYWxpYXMoY3R4LCBuYW1lLCBVVFBhdC5yZXBfaWQodHlwYXQpLCB0eV9yZWMpO1xuICAgICAgICAgICh0eV9yZWMsIGN0eF9kZWYsIGN0eF9kZWYpO1xuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgdHkgPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgICAgICAgICh0eSwgY3R4LCBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVVRQYXQucmVwX2lkKHR5cGF0KSwgdHkpKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgY3R4X2JvZHkgPVxuICAgICAgICBzd2l0Y2ggKFR5cC5nZXRfc3VtX2NvbnN0cnVjdG9ycyhjdHgsIHR5X2RlZikpIHtcbiAgICAgICAgfCBTb21lKHNtKSA9PiBDdHguYWRkX2N0cnMoY3R4X2JvZHksIG5hbWUsIFVUeXAucmVwX2lkKHV0eXApLCBzbSlcbiAgICAgICAgfCBOb25lID0+IGN0eF9ib2R5XG4gICAgICAgIH07XG4gICAgICBsZXQgKHtjb19jdHgsIHR5OiB0eV9ib2R5LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgICAgZ28nKH5jdHg9Y3R4X2JvZHksIH5tb2RlLCBib2R5LCBtKTtcbiAgICAgIC8qIE1ha2Ugc3VyZSB0eXBlcyBkb24ndCBlc2NhcGUgdGhlaXIgc2NvcGUgKi9cbiAgICAgIGxldCB0eV9lc2NhcGUgPSBUeXAuc3Vic3QodHlfZGVmLCBuYW1lLCB0eV9ib2R5KTtcbiAgICAgIGxldCBtID0gdXR5cF90b19pbmZvX21hcCh+Y3R4PWN0eF9kZWYsIH5hbmNlc3RvcnMsIHV0eXAsIG0pIHw+IHNuZDtcbiAgICAgIGFkZCh+c2VsZj1KdXN0KHR5X2VzY2FwZSksIH5jb19jdHgsIG0pO1xuICAgIHwgVmFyKF8pXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgbGV0ICh7Y29fY3R4LCB0eTogdHlfYm9keSwgX306IEluZm8uZXhwLCBtKSA9XG4gICAgICAgIGdvJyh+Y3R4LCB+bW9kZSwgYm9keSwgbSk7XG4gICAgICBsZXQgbSA9IHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXR5cCwgbSkgfD4gc25kO1xuICAgICAgYWRkKH5zZWxmPUp1c3QodHlfYm9keSksIH5jb19jdHgsIG0pO1xuICAgIH07XG4gIH07XG59XG5hbmQgdXBhdF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmlzX3N5bnN3aXRjaCxcbiAgICAgIH5jdHgsXG4gICAgICB+Y29fY3R4LFxuICAgICAgfmFuY2VzdG9yczogSW5mby5hbmNlc3RvcnMsXG4gICAgICB+bW9kZTogTW9kZS50PU1vZGUuU3luLFxuICAgICAge2lkcywgdGVybX0gYXMgdXBhdDogVVBhdC50LFxuICAgICAgbTogTWFwLnQsXG4gICAgKVxuICAgIDogKEluZm8ucGF0LCBNYXAudCkgPT4ge1xuICBsZXQgYWRkID0gKH5zZWxmLCB+Y3R4LCBtKSA9PiB7XG4gICAgbGV0IGluZm8gPVxuICAgICAgSW5mby5kZXJpdmVkX3BhdChcbiAgICAgICAgfnVwYXQsXG4gICAgICAgIH5jdHgsXG4gICAgICAgIH5jb19jdHgsXG4gICAgICAgIH5tb2RlLFxuICAgICAgICB+YW5jZXN0b3JzLFxuICAgICAgICB+c2VsZj1Db21tb24oc2VsZiksXG4gICAgICApO1xuICAgIChpbmZvLCBhZGRfaW5mbyhpZHMsIEluZm9QYXQoaW5mbyksIG0pKTtcbiAgfTtcbiAgbGV0IGF0b21pYyA9IHNlbGYgPT4gYWRkKH5zZWxmLCB+Y3R4LCBtKTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVUGF0LnJlcF9pZCh1cGF0KV0gQCBhbmNlc3RvcnM7XG4gIGxldCBnbyA9IHVwYXRfdG9faW5mb19tYXAofmlzX3N5bnN3aXRjaCwgfmFuY2VzdG9ycywgfmNvX2N0eCk7XG4gIGxldCB1bmtub3duID0gVHlwLlVua25vd24oaXNfc3luc3dpdGNoID8gU3luU3dpdGNoIDogSW50ZXJuYWwpO1xuICBsZXQgY3R4X2ZvbGQgPSAoY3R4OiBDdHgudCwgbSkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoKGN0eCwgdHlzLCBtKSwgZSwgbW9kZSkgPT5cbiAgICAgICAgZ28ofmN0eCwgfm1vZGUsIGUsIG0pXG4gICAgICAgIHw+ICgoKGluZm8sIG0pKSA9PiAoaW5mby5jdHgsIHR5cyBAIFtpbmZvLnR5XSwgbSkpLFxuICAgICAgKGN0eCwgW10sIG0pLFxuICAgICk7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChfLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKH5zZWxmPUlzTXVsdGksIH5jdHgsIG0pO1xuICB8IEludmFsaWQodG9rZW4pID0+IGF0b21pYyhCYWRUb2tlbih0b2tlbikpXG4gIHwgRW1wdHlIb2xlID0+IGF0b21pYyhKdXN0KHVua25vd24pKVxuICB8IEludChfKSA9PiBhdG9taWMoSnVzdChJbnQpKVxuICB8IEZsb2F0KF8pID0+IGF0b21pYyhKdXN0KEZsb2F0KSlcbiAgfCBUcml2ID0+IGF0b21pYyhKdXN0KFByb2QoW10pKSlcbiAgfCBCb29sKF8pID0+IGF0b21pYyhKdXN0KEJvb2wpKVxuICB8IFN0cmluZyhfKSA9PiBhdG9taWMoSnVzdChTdHJpbmcpKVxuICB8IExpc3RMaXQocHMpID0+XG4gICAgbGV0IGlkcyA9IExpc3QubWFwKFVQYXQucmVwX2lkLCBwcyk7XG4gICAgbGV0IG1vZGVzID0gTW9kZS5vZl9saXN0X2xpdChjdHgsIExpc3QubGVuZ3RoKHBzKSwgbW9kZSk7XG4gICAgbGV0IChjdHgsIHR5cywgbSkgPSBjdHhfZm9sZChjdHgsIG0sIHBzLCBtb2Rlcyk7XG4gICAgYWRkKH5zZWxmPVNlbGYubGlzdGxpdCh+ZW1wdHk9dW5rbm93biwgY3R4LCB0eXMsIGlkcyksIH5jdHgsIG0pO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9XG4gICAgICBnbyh+Y3R4PWhkLmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX3RsKGN0eCwgbW9kZSwgaGQudHkpLCB0bCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoTGlzdChoZC50eSkpLCB+Y3R4PXRsLmN0eCwgbSk7XG4gIHwgV2lsZCA9PiBhdG9taWMoSnVzdCh1bmtub3duKSlcbiAgfCBWYXIobmFtZSkgPT5cbiAgICAvKiBOT1RFOiBUaGUgc2VsZiB0eXBlIGFzc2lnbmVkIHRvIHBhdHRlcm4gdmFyaWFibGVzIChVbmtub3duKVxuICAgICAgIG1heSBiZSBTeW5Td2l0Y2gsIGJ1dCBTeW5Td2l0Y2ggaXMgbmV2ZXIgYWRkZWQgdG8gdGhlIGNvbnRleHQ7XG4gICAgICAgVW5rbm93bihJbnRlcm5hbCkgaXMgdXNlZCBpbiB0aGlzIGNhc2UgKi9cbiAgICBsZXQgY3R4X3R5cCA9XG4gICAgICBJbmZvLmZpeGVkX3R5cF9wYXQoY3R4LCBtb2RlLCBDb21tb24oSnVzdChVbmtub3duKEludGVybmFsKSkpKTtcbiAgICBsZXQgZW50cnkgPSBDdHguVmFyRW50cnkoe25hbWUsIGlkOiBVUGF0LnJlcF9pZCh1cGF0KSwgdHlwOiBjdHhfdHlwfSk7XG4gICAgYWRkKH5zZWxmPUp1c3QodW5rbm93biksIH5jdHg9Q3R4LmV4dGVuZChjdHgsIGVudHJ5KSwgbSk7XG4gIHwgVHVwbGUocHMpID0+XG4gICAgbGV0IG1vZGVzID0gTW9kZS5vZl9wcm9kKGN0eCwgbW9kZSwgTGlzdC5sZW5ndGgocHMpKTtcbiAgICBsZXQgKGN0eCwgdHlzLCBtKSA9IGN0eF9mb2xkKGN0eCwgbSwgcHMsIG1vZGVzKTtcbiAgICBhZGQofnNlbGY9SnVzdChQcm9kKHR5cykpLCB+Y3R4LCBtKTtcbiAgfCBQYXJlbnMocCkgPT5cbiAgICBsZXQgKHAsIG0pID0gZ28ofmN0eCwgfm1vZGUsIHAsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHAudHkpLCB+Y3R4PXAuY3R4LCBtKTtcbiAgfCBDb25zdHJ1Y3RvcihjdHIpID0+IGF0b21pYyhTZWxmLm9mX2N0cihjdHgsIGN0cikpXG4gIHwgQXAoZm4sIGFyZykgPT5cbiAgICBsZXQgZm5fbW9kZSA9IE1vZGUub2ZfYXAoY3R4LCBtb2RlLCBVUGF0LmN0cl9uYW1lKGZuKSk7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+Y3R4LCB+bW9kZT1mbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgZm4udHkpO1xuICAgIGxldCAoYXJnLCBtKSA9IGdvKH5jdHgsIH5tb2RlPUFuYSh0eV9pbiksIGFyZywgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QodHlfb3V0KSwgfmN0eD1hcmcuY3R4LCBtKTtcbiAgfCBUeXBlQW5uKHAsIGFubikgPT5cbiAgICBsZXQgKGFubiwgbSkgPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIGFubiwgbSk7XG4gICAgbGV0IChwLCBtKSA9IGdvKH5jdHgsIH5tb2RlPUFuYShhbm4udHkpLCBwLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChhbm4udHkpLCB+Y3R4PXAuY3R4LCBtKTtcbiAgfTtcbn1cbmFuZCB1dHlwX3RvX2luZm9fbWFwID1cbiAgICAoXG4gICAgICB+Y3R4LFxuICAgICAgfmV4cGVjdHM9SW5mby5UeXBlRXhwZWN0ZWQsXG4gICAgICB+YW5jZXN0b3JzLFxuICAgICAge2lkcywgdGVybX0gYXMgdXR5cDogVVR5cC50LFxuICAgICAgbTogTWFwLnQsXG4gICAgKVxuICAgIDogKEluZm8udHlwLCBNYXAudCkgPT4ge1xuICBsZXQgYWRkID0gbSA9PiB7XG4gICAgbGV0IGluZm8gPSBJbmZvLmRlcml2ZWRfdHlwKH51dHlwLCB+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cyk7XG4gICAgKGluZm8sIGFkZF9pbmZvKGlkcywgSW5mb1R5cChpbmZvKSwgbSkpO1xuICB9O1xuICBsZXQgYW5jZXN0b3JzID0gW1VUeXAucmVwX2lkKHV0eXApXSBAIGFuY2VzdG9ycztcbiAgbGV0IGdvJyA9IHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycyk7XG4gIGxldCBnbyA9IGdvJyh+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQpO1xuICAvL1RPRE8oYW5kcmV3KTogbWFrZSB0aGlzIHJldHVybiBmcmVlLCByZXBsYWNpbmcgVHlwLmZyZWVfdmFyc1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoXywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZChtKTtcbiAgfCBJbnZhbGlkKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IGFkZChtKVxuICB8IFZhcihfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+XG4gICAgLyogTmFtZXMgYXJlIHJlc29sdmVkIGluIEluZm8uc3RhdHVzX3R5cCAqL1xuICAgIGFkZChtKVxuICB8IExpc3QodClcbiAgfCBQYXJlbnModCkgPT4gYWRkKGdvKHQsIG0pIHw+IHNuZClcbiAgfCBBcnJvdyh0MSwgdDIpID0+XG4gICAgbGV0IG0gPSBnbyh0MSwgbSkgfD4gc25kO1xuICAgIGxldCBtID0gZ28odDIsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7XG4gIHwgVHVwbGUodHMpID0+XG4gICAgbGV0IG0gPSBtYXBfbShnbywgdHMsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIGxldCB0eV9pbiA9IFVUeXAudG9fdHlwKGN0eCwgdDIpO1xuICAgIGxldCB0MV9tb2RlOiBJbmZvLnR5cF9leHBlY3RzID1cbiAgICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgICAgfCBWYXJpYW50RXhwZWN0ZWQobSwgc3VtX3R5KSA9PlxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKG0sIEFycm93KHR5X2luLCBzdW1fdHkpKVxuICAgICAgfCBfID0+IENvbnN0cnVjdG9yRXhwZWN0ZWQoVW5pcXVlLCBBcnJvdyh0eV9pbiwgVW5rbm93bihJbnRlcm5hbCkpKVxuICAgICAgfTtcbiAgICBsZXQgbSA9IGdvJyh+ZXhwZWN0cz10MV9tb2RlLCB0MSwgbSkgfD4gc25kO1xuICAgIGxldCBtID0gZ28nKH5leHBlY3RzPVR5cGVFeHBlY3RlZCwgdDIsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7XG4gIHwgU3VtKHZhcmlhbnRzKSA9PlxuICAgIGxldCB0eV9zdW0gPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgIGxldCAobSwgXykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgIHZhcmlhbnRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgfnR5X3N1bSksXG4gICAgICAgIChtLCBbXSksXG4gICAgICAgIHZhcmlhbnRzLFxuICAgICAgKTtcbiAgICBhZGQobSk7XG4gIH07XG59XG5hbmQgdXRwYXRfdG9faW5mb19tYXAgPVxuICAgICh+Y3R4LCB+YW5jZXN0b3JzLCB7aWRzLCB0ZXJtfSBhcyB1dHBhdDogVVRQYXQudCwgbTogTWFwLnQpXG4gICAgOiAoSW5mby50cGF0LCBNYXAudCkgPT4ge1xuICBsZXQgYWRkID0gbSA9PiB7XG4gICAgbGV0IGluZm8gPSBJbmZvLmRlcml2ZWRfdHBhdCh+dXRwYXQsIH5jdHgsIH5hbmNlc3RvcnMpO1xuICAgIChpbmZvLCBhZGRfaW5mbyhpZHMsIEluZm9UUGF0KGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhbmNlc3RvcnMgPSBbVVRQYXQucmVwX2lkKHV0cGF0KV0gQCBhbmNlc3RvcnM7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChfLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKG0pO1xuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBWYXIoXykgPT4gYWRkKG0pXG4gIH07XG59XG5hbmQgdmFyaWFudF90b19pbmZvX21hcCA9XG4gICAgKH5jdHgsIH5hbmNlc3RvcnMsIH50eV9zdW0sIChtLCBjdHJzKSwgdXR5OiBVVHlwLnZhcmlhbnQpID0+IHtcbiAgbGV0IGdvID0gZXhwZWN0cyA9PiB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIH5leHBlY3RzKTtcbiAgc3dpdGNoICh1dHkpIHtcbiAgfCBCYWRFbnRyeSh1dHkpID0+XG4gICAgbGV0IG0gPSBnbyhWYXJpYW50RXhwZWN0ZWQoVW5pcXVlLCB0eV9zdW0pLCB1dHksIG0pIHw+IHNuZDtcbiAgICAobSwgY3Rycyk7XG4gIHwgVmFyaWFudChjdHIsIGlkcywgcGFyYW0pID0+XG4gICAgbGV0IG0gPVxuICAgICAgZ28oXG4gICAgICAgIENvbnN0cnVjdG9yRXhwZWN0ZWQoXG4gICAgICAgICAgTGlzdC5tZW0oY3RyLCBjdHJzKSA/IER1cGxpY2F0ZSA6IFVuaXF1ZSxcbiAgICAgICAgICB0eV9zdW0sXG4gICAgICAgICksXG4gICAgICAgIHt0ZXJtOiBDb25zdHJ1Y3RvcihjdHIpLCBpZHN9LFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID1cbiAgICAgIHN3aXRjaCAocGFyYW0pIHtcbiAgICAgIHwgU29tZShwYXJhbV90eSkgPT4gZ28oVHlwZUV4cGVjdGVkLCBwYXJhbV90eSwgbSkgfD4gc25kXG4gICAgICB8IE5vbmUgPT4gbVxuICAgICAgfTtcbiAgICAobSwgW2N0ciwgLi4uY3Ryc10pO1xuICB9O1xufTtcblxubGV0IGNvbGxlY3RfZXJyb3JzID0gKG1hcDogTWFwLnQpOiBsaXN0KChJZC50LCBJbmZvLmVycm9yKSkgPT5cbiAgSWQuTWFwLmZvbGQoXG4gICAgKGlkLCBpbmZvOiBJbmZvLnQsIGFjYykgPT5cbiAgICAgIE9wdGlvbi50b19saXN0KEluZm8uZXJyb3Jfb2YoaW5mbykgfD4gT3B0aW9uLm1hcCh4ID0+IChpZCwgeCkpKSBAIGFjYyxcbiAgICBtYXAsXG4gICAgW10sXG4gICk7XG4iLCIvKiBjbG9zZWQgc3Vic3RpdHV0aW9uIFtkMS94XWQyICovXG5sZXQgcmVjIHN1YnN0X3ZhciA9IChkMTogREhFeHAudCwgeDogVmFyLnQsIGQyOiBESEV4cC50KTogREhFeHAudCA9PlxuICBzd2l0Y2ggKGQyKSB7XG4gIHwgQm91bmRWYXIoeSkgPT5cbiAgICBpZiAoVmFyLmVxKHgsIHkpKSB7XG4gICAgICBkMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZDI7XG4gICAgfVxuICB8IEZyZWVWYXIoXykgPT4gZDJcbiAgfCBJbnZhbGlkVGV4dChfKSA9PiBkMlxuICB8IEV4cGFuZGluZ0tleXdvcmQoXykgPT4gZDJcbiAgfCBTZXF1ZW5jZShkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgU2VxdWVuY2UoZDMsIGQ0KTtcbiAgfCBGaWx0ZXIoZmlsdGVyLCBkYm9keSkgPT5cbiAgICBsZXQgZGJvZHkgPSBzdWJzdF92YXIoZDEsIHgsIGRib2R5KTtcbiAgICBsZXQgZmlsdGVyID0gc3Vic3RfdmFyX2ZpbHRlcihkMSwgeCwgZmlsdGVyKTtcbiAgICBGaWx0ZXIoZmlsdGVyLCBkYm9keSk7XG4gIHwgTGV0KGRwLCBkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID1cbiAgICAgIGlmIChESFBhdC5iaW5kc192YXIoeCwgZHApKSB7XG4gICAgICAgIGQ0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgICB9O1xuICAgIExldChkcCwgZDMsIGQ0KTtcbiAgfCBGaXhGKHksIHR5LCBkMykgPT5cbiAgICBsZXQgZDMgPVxuICAgICAgaWYgKFZhci5lcSh4LCB5KSkge1xuICAgICAgICBkMztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgICAgfTtcbiAgICBGaXhGKHksIHR5LCBkMyk7XG4gIHwgRnVuKGRwLCB0eSwgZDMsIHMpID0+XG4gICAgaWYgKERIUGF0LmJpbmRzX3Zhcih4LCBkcCkpIHtcbiAgICAgIEZ1bihkcCwgdHksIGQzLCBzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgICBGdW4oZHAsIHR5LCBkMywgcyk7XG4gICAgfVxuICB8IENsb3N1cmUoZW52LCBkMykgPT5cbiAgICAvKiBDbG9zdXJlIHNob3VsZG4ndCBhcHBlYXIgZHVyaW5nIHN1YnN0aXR1dGlvbiAod2hpY2hcbiAgICAgICBvbmx5IGlzIGNhbGxlZCBmcm9tIGVsYWJvcmF0aW9uIGN1cnJlbnRseSkgKi9cbiAgICBsZXQgZW52JyA9IHN1YnN0X3Zhcl9lbnYoZDEsIHgsIGVudik7XG4gICAgbGV0IGQzJyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIENsb3N1cmUoZW52JywgZDMnKTtcbiAgfCBBcChkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgQXAoZDMsIGQ0KTtcbiAgfCBBcEJ1aWx0aW4oaWRlbnQsIGQxKSA9PlxuICAgIGxldCBkMiA9IHN1YnN0X3ZhcihkMSwgeCwgZDEpO1xuICAgIEFwQnVpbHRpbihpZGVudCwgZDIpO1xuICB8IEJ1aWx0aW5GdW4oaWRlbnQpID0+IEJ1aWx0aW5GdW4oaWRlbnQpXG4gIHwgVGVzdChpZCwgZDMpID0+IFRlc3QoaWQsIHN1YnN0X3ZhcihkMSwgeCwgZDMpKVxuICB8IEJvb2xMaXQoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IFN0cmluZ0xpdChfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IGQyXG4gIHwgTGlzdExpdChhLCBiLCBjLCBkcykgPT5cbiAgICBMaXN0TGl0KGEsIGIsIGMsIExpc3QubWFwKHN1YnN0X3ZhcihkMSwgeCksIGRzKSlcbiAgfCBDb25zKGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIoZDEsIHgsIGQ0KTtcbiAgICBDb25zKGQzLCBkNCk7XG4gIHwgTGlzdENvbmNhdChkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgTGlzdENvbmNhdChkMywgZDQpO1xuICB8IFR1cGxlKGRzKSA9PiBUdXBsZShMaXN0Lm1hcChzdWJzdF92YXIoZDEsIHgpLCBkcykpXG4gIHwgUHJqKGQsIG4pID0+IFByaihzdWJzdF92YXIoZDEsIHgsIGQpLCBuKVxuICB8IEJpbkJvb2xPcChvcCwgZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgIEJpbkJvb2xPcChvcCwgZDMsIGQ0KTtcbiAgfCBCaW5JbnRPcChvcCwgZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihkMSwgeCwgZDQpO1xuICAgIEJpbkludE9wKG9wLCBkMywgZDQpO1xuICB8IEJpbkZsb2F0T3Aob3AsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIoZDEsIHgsIGQ0KTtcbiAgICBCaW5GbG9hdE9wKG9wLCBkMywgZDQpO1xuICB8IEJpblN0cmluZ09wKG9wLCBkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgQmluU3RyaW5nT3Aob3AsIGQzLCBkNCk7XG4gIHwgQ29uc2lzdGVudENhc2UoQ2FzZShkMywgcnVsZXMsIG4pKSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBydWxlcyA9IHN1YnN0X3Zhcl9ydWxlcyhkMSwgeCwgcnVsZXMpO1xuICAgIENvbnNpc3RlbnRDYXNlKENhc2UoZDMsIHJ1bGVzLCBuKSk7XG4gIHwgSW5jb25zaXN0ZW50QnJhbmNoZXModSwgaSwgQ2FzZShkMywgcnVsZXMsIG4pKSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihkMSwgeCwgZDMpO1xuICAgIGxldCBydWxlcyA9IHN1YnN0X3Zhcl9ydWxlcyhkMSwgeCwgcnVsZXMpO1xuICAgIEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2UoZDMsIHJ1bGVzLCBuKSk7XG4gIHwgRW1wdHlIb2xlKHUsIGkpID0+IEVtcHR5SG9sZSh1LCBpKVxuICB8IE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIGksIGQzKSA9PlxuICAgIGxldCBkMycgPSBzdWJzdF92YXIoZDEsIHgsIGQzKTtcbiAgICBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBkMycpO1xuICB8IENhc3QoZCwgdHkxLCB0eTIpID0+XG4gICAgbGV0IGQnID0gc3Vic3RfdmFyKGQxLCB4LCBkKTtcbiAgICBDYXN0KGQnLCB0eTEsIHR5Mik7XG4gIHwgRmFpbGVkQ2FzdChkLCB0eTEsIHR5MikgPT5cbiAgICBsZXQgZCcgPSBzdWJzdF92YXIoZDEsIHgsIGQpO1xuICAgIEZhaWxlZENhc3QoZCcsIHR5MSwgdHkyKTtcbiAgfCBJbnZhbGlkT3BlcmF0aW9uKGQsIGVycikgPT5cbiAgICBsZXQgZCcgPSBzdWJzdF92YXIoZDEsIHgsIGQpO1xuICAgIEludmFsaWRPcGVyYXRpb24oZCcsIGVycik7XG4gIHwgSWZUaGVuRWxzZShkMywgZDQsIGQ1LCBkNikgPT5cbiAgICBsZXQgZDQnID0gc3Vic3RfdmFyKGQxLCB4LCBkNCk7XG4gICAgbGV0IGQ1JyA9IHN1YnN0X3ZhcihkMSwgeCwgZDUpO1xuICAgIGxldCBkNicgPSBzdWJzdF92YXIoZDEsIHgsIGQ2KTtcbiAgICBJZlRoZW5FbHNlKGQzLCBkNCcsIGQ1JywgZDYnKTtcbiAgfVxuXG5hbmQgc3Vic3RfdmFyX3J1bGVzID1cbiAgICAoZDE6IERIRXhwLnQsIHg6IFZhci50LCBydWxlczogbGlzdChESEV4cC5ydWxlKSk6IGxpc3QoREhFeHAucnVsZSkgPT5cbiAgcnVsZXNcbiAgfD4gTGlzdC5tYXAoKHI6IERIRXhwLnJ1bGUpID0+XG4gICAgICAgc3dpdGNoIChyKSB7XG4gICAgICAgfCBSdWxlKGRwLCBkMikgPT5cbiAgICAgICAgIGlmIChESFBhdC5iaW5kc192YXIoeCwgZHApKSB7XG4gICAgICAgICAgIHI7XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICBSdWxlKGRwLCBzdWJzdF92YXIoZDEsIHgsIGQyKSk7XG4gICAgICAgICB9XG4gICAgICAgfVxuICAgICApXG5cbmFuZCBzdWJzdF92YXJfZW52ID1cbiAgICAoZDE6IERIRXhwLnQsIHg6IFZhci50LCBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50KTogQ2xvc3VyZUVudmlyb25tZW50LnQgPT4ge1xuICBsZXQgaWQgPSBlbnYgfD4gQ2xvc3VyZUVudmlyb25tZW50LmlkX29mO1xuICBsZXQgbWFwID1cbiAgICBlbnZcbiAgICB8PiBDbG9zdXJlRW52aXJvbm1lbnQubWFwX29mXG4gICAgfD4gRW52aXJvbm1lbnQuZm9sZG8oXG4gICAgICAgICAoKHgnLCBkJzogREhFeHAudCksIG1hcCkgPT4ge1xuICAgICAgICAgICBsZXQgZCcgPVxuICAgICAgICAgICAgIHN3aXRjaCAoZCcpIHtcbiAgICAgICAgICAgICAvKiBTdWJzdGl0dXRlIGVhY2ggcHJldmlvdXNseSBzdWJzdGl0dXRlZCBiaW5kaW5nIGludG8gdGhlXG4gICAgICAgICAgICAgICogZml4cG9pbnQuICovXG4gICAgICAgICAgICAgfCBGaXhGKF8pIGFzIGQgPT5cbiAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgfD4gRW52aXJvbm1lbnQuZm9sZG8oXG4gICAgICAgICAgICAgICAgICAgICgoeCcnLCBkJycpLCBkKSA9PiBzdWJzdF92YXIoZCcnLCB4JycsIGQpLFxuICAgICAgICAgICAgICAgICAgICBkLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgZCA9PiBkXG4gICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAvKiBTdWJzdGl0dXRlLiAqL1xuICAgICAgICAgICBsZXQgZCcgPSBzdWJzdF92YXIoZDEsIHgsIGQnKTtcbiAgICAgICAgICAgRW52aXJvbm1lbnQuZXh0ZW5kKG1hcCwgKHgnLCBkJykpO1xuICAgICAgICAgfSxcbiAgICAgICAgIEVudmlyb25tZW50LmVtcHR5LFxuICAgICAgICk7XG5cbiAgQ2xvc3VyZUVudmlyb25tZW50LndyYXAoaWQsIG1hcCk7XG59XG5cbmFuZCBzdWJzdF92YXJfZmlsdGVyID1cbiAgICAoZDE6IERIRXhwLnQsIHg6IFZhci50LCBmbHQ6IERILkRIRmlsdGVyLnQpOiBESC5ESEZpbHRlci50ID0+IHtcbiAgZmx0IHw+IERILkRIRmlsdGVyLm1hcChzdWJzdF92YXIoZDEsIHgpKTtcbn07XG5cbmxldCBzdWJzdCA9IChlbnY6IEVudmlyb25tZW50LnQsIGQ6IERIRXhwLnQpOiBESEV4cC50ID0+XG4gIGVudlxuICB8PiBFbnZpcm9ubWVudC5mb2xkbyhcbiAgICAgICAoeGQ6IChWYXIudCwgREhFeHAudCksIGQyKSA9PiB7XG4gICAgICAgICBsZXQgKHgsIGQxKSA9IHhkO1xuICAgICAgICAgc3Vic3RfdmFyKGQxLCB4LCBkMik7XG4gICAgICAgfSxcbiAgICAgICBkLFxuICAgICApO1xuIiwib3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIEVsYWJvcmF0aW9uUmVzdWx0ID0ge1xuICBbQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdCA9XG4gICAgfCBFbGFib3JhdGVzKERIRXhwLnQsIFR5cC50LCBEZWx0YS50KVxuICAgIHwgRG9lc05vdEVsYWJvcmF0ZTtcbn07XG5cbmxldCBleHBfYmlub3Bfb2Y6IFRlcm0uVUV4cC5vcF9iaW4gPT4gKFR5cC50LCAoXywgXykgPT4gREhFeHAudCkgPVxuICBmdW5cbiAgfCBJbnQob3ApID0+IChJbnQsICgoZTEsIGUyKSA9PiBCaW5JbnRPcChvcCwgZTEsIGUyKSkpXG4gIHwgRmxvYXQob3ApID0+IChGbG9hdCwgKChlMSwgZTIpID0+IEJpbkZsb2F0T3Aob3AsIGUxLCBlMikpKVxuICB8IEJvb2wob3ApID0+IChCb29sLCAoKGUxLCBlMikgPT4gQmluQm9vbE9wKG9wLCBlMSwgZTIpKSlcbiAgfCBTdHJpbmcob3ApID0+IChTdHJpbmcsICgoZTEsIGUyKSA9PiBCaW5TdHJpbmdPcChvcCwgZTEsIGUyKSkpO1xuXG5sZXQgZml4ZWRfZXhwX3R5cCA9IChtOiBTdGF0aWNzLk1hcC50LCBlOiBUZXJtLlVFeHAudCk6IG9wdGlvbihUeXAudCkgPT5cbiAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoVGVybS5VRXhwLnJlcF9pZChlKSwgbSkpIHtcbiAgfCBTb21lKEluZm9FeHAoe3R5LCBffSkpID0+IFNvbWUodHkpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCBmaXhlZF9wYXRfdHlwID0gKG06IFN0YXRpY3MuTWFwLnQsIHA6IFRlcm0uVVBhdC50KTogb3B0aW9uKFR5cC50KSA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChUZXJtLlVQYXQucmVwX2lkKHApLCBtKSkge1xuICB8IFNvbWUoSW5mb1BhdCh7dHksIF99KSkgPT4gU29tZSh0eSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IGNhc3QgPSAoY3R4OiBDdHgudCwgbW9kZTogTW9kZS50LCBzZWxmX3R5OiBUeXAudCwgZDogREhFeHAudCkgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luID0+IGRcbiAgfCBTeW5GdW4gPT5cbiAgICBzd2l0Y2ggKHNlbGZfdHkpIHtcbiAgICB8IFVua25vd24ocHJvdikgPT5cbiAgICAgIERIRXhwLmNhc3QoZCwgVW5rbm93bihwcm92KSwgQXJyb3coVW5rbm93bihwcm92KSwgVW5rbm93bihwcm92KSkpXG4gICAgfCBBcnJvdyhfKSA9PiBkXG4gICAgfCBfID0+IGZhaWx3aXRoKFwiRWxhYm9yYXRvci53cmFwOiBTeW5GdW4gbm9uLWFycm93LXR5cGVcIilcbiAgICB9XG4gIHwgQW5hKGFuYV90eSkgPT5cbiAgICBsZXQgYW5hX3R5ID0gVHlwLm5vcm1hbGl6ZShjdHgsIGFuYV90eSk7XG4gICAgLyogRm9ybXMgd2l0aCBzcGVjaWFsIGFuYSBydWxlcyBnZXQgY2FzdCBmcm9tIHRoZWlyIGFwcHJvcHJpYXRlIE1hdGNoZWQgdHlwZXMgKi9cbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IExpc3RDb25jYXQoXylcbiAgICB8IENvbnMoXykgPT5cbiAgICAgIHN3aXRjaCAoYW5hX3R5KSB7XG4gICAgICB8IFVua25vd24ocHJvdikgPT4gREhFeHAuY2FzdChkLCBMaXN0KFVua25vd24ocHJvdikpLCBVbmtub3duKHByb3YpKVxuICAgICAgfCBfID0+IGRcbiAgICAgIH1cbiAgICB8IEZ1bihfKSA9PlxuICAgICAgLyogU2VlIHJlZ3Jlc3Npb24gdGVzdHMgaW4gRG9jdW1lbnRhdGlvbi9EeW5hbWljcyAqL1xuICAgICAgbGV0IChfLCBhbmFfb3V0KSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgYW5hX3R5KTtcbiAgICAgIGxldCAoc2VsZl9pbiwgXykgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHNlbGZfdHkpO1xuICAgICAgREhFeHAuY2FzdChkLCBBcnJvdyhzZWxmX2luLCBhbmFfb3V0KSwgYW5hX3R5KTtcbiAgICB8IFR1cGxlKGRzKSA9PlxuICAgICAgc3dpdGNoIChhbmFfdHkpIHtcbiAgICAgIHwgVW5rbm93bihwcm92KSA9PlxuICAgICAgICBsZXQgdXMgPSBMaXN0LmluaXQoTGlzdC5sZW5ndGgoZHMpLCBfID0+IFR5cC5Vbmtub3duKHByb3YpKTtcbiAgICAgICAgREhFeHAuY2FzdChkLCBQcm9kKHVzKSwgVW5rbm93bihwcm92KSk7XG4gICAgICB8IF8gPT4gZFxuICAgICAgfVxuICAgIHwgQXAoTm9uRW1wdHlIb2xlKF8sIF8sIF8sIENvbnN0cnVjdG9yKF8pKSwgXylcbiAgICB8IEFwKENvbnN0cnVjdG9yKF8pLCBfKVxuICAgIHwgQ29uc3RydWN0b3IoXykgPT5cbiAgICAgIHN3aXRjaCAoYW5hX3R5LCBzZWxmX3R5KSB7XG4gICAgICB8IChVbmtub3duKHByb3YpLCBSZWMoXywgU3VtKF8pKSlcbiAgICAgIHwgKFVua25vd24ocHJvdiksIFN1bShfKSkgPT4gREhFeHAuY2FzdChkLCBzZWxmX3R5LCBVbmtub3duKHByb3YpKVxuICAgICAgfCBfID0+IGRcbiAgICAgIH1cbiAgICAvKiBGb3JtcyB3aXRoIHNwZWNpYWwgYW5hIHJ1bGVzIGJ1dCBubyBwYXJ0aWN1bGFyIHR5cGluZyByZXF1aXJlbWVudHMgKi9cbiAgICB8IENvbnNpc3RlbnRDYXNlKF8pXG4gICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfKVxuICAgIHwgSWZUaGVuRWxzZShfKVxuICAgIHwgU2VxdWVuY2UoXylcbiAgICB8IExldChfKVxuICAgIHwgRml4RihfKSA9PiBkXG4gICAgLyogSG9sZS1saWtlIGZvcm1zOiBEb24ndCBjYXN0ICovXG4gICAgfCBJbnZhbGlkVGV4dChfKVxuICAgIHwgRnJlZVZhcihfKVxuICAgIHwgRXhwYW5kaW5nS2V5d29yZChfKVxuICAgIHwgRW1wdHlIb2xlKF8pXG4gICAgfCBOb25FbXB0eUhvbGUoXykgPT4gZFxuICAgIC8qIERIRXhwLXNwZWNpZmljIGZvcm1zOiBEb24ndCBjYXN0ICovXG4gICAgfCBDYXN0KF8pXG4gICAgfCBDbG9zdXJlKF8pXG4gICAgfCBGaWx0ZXIoXylcbiAgICB8IEZhaWxlZENhc3QoXylcbiAgICB8IEludmFsaWRPcGVyYXRpb24oXykgPT4gZFxuICAgIC8qIE5vcm1hbCBjYXNlczogd3JhcCAqL1xuICAgIHwgQm91bmRWYXIoXylcbiAgICB8IEFwKF8pXG4gICAgfCBBcEJ1aWx0aW4oXylcbiAgICB8IEJ1aWx0aW5GdW4oXylcbiAgICB8IFByaihfKVxuICAgIHwgQm9vbExpdChfKVxuICAgIHwgSW50TGl0KF8pXG4gICAgfCBGbG9hdExpdChfKVxuICAgIHwgU3RyaW5nTGl0KF8pXG4gICAgfCBCaW5Cb29sT3AoXylcbiAgICB8IEJpbkludE9wKF8pXG4gICAgfCBCaW5GbG9hdE9wKF8pXG4gICAgfCBCaW5TdHJpbmdPcChfKVxuICAgIHwgVGVzdChfKSA9PiBESEV4cC5jYXN0KGQsIHNlbGZfdHksIGFuYV90eSlcbiAgICB9O1xuICB9O1xuXG4vKiBIYW5kbGVzIGNhc3QgaW5zZXJ0aW9uIGFuZCBub24tZW1wdHktaG9sZSB3cmFwcGluZ1xuICAgZm9yIGVsYWJvcmF0ZWQgZXhwcmVzc2lvbnMgKi9cbmxldCB3cmFwID0gKGN0eDogQ3R4LnQsIHU6IElkLnQsIG1vZGU6IE1vZGUudCwgc2VsZiwgZDogREhFeHAudCk6IERIRXhwLnQgPT5cbiAgc3dpdGNoIChJbmZvLnN0YXR1c19leHAoY3R4LCBtb2RlLCBzZWxmKSkge1xuICB8IE5vdEluSG9sZShfKSA9PlxuICAgIGxldCBzZWxmX3R5ID1cbiAgICAgIHN3aXRjaCAoU2VsZi50eXBfb2ZfZXhwKGN0eCwgc2VsZikpIHtcbiAgICAgIHwgU29tZShzZWxmX3R5KSA9PiBUeXAubm9ybWFsaXplKGN0eCwgc2VsZl90eSlcbiAgICAgIHwgTm9uZSA9PiBVbmtub3duKEludGVybmFsKVxuICAgICAgfTtcbiAgICBjYXN0KGN0eCwgbW9kZSwgc2VsZl90eSwgZCk7XG4gIHwgSW5Ib2xlKF8pID0+IE5vbkVtcHR5SG9sZShUeXBlSW5jb25zaXN0ZW50LCB1LCAwLCBkKVxuICB9O1xuXG5sZXQgcmVjIGRoZXhwX29mX3VleHAgPVxuICAgICAgICAobTogU3RhdGljcy5NYXAudCwgdWV4cDogVGVybS5VRXhwLnQsIGluX2ZpbHRlcjogYm9vbClcbiAgICAgICAgOiBvcHRpb24oREhFeHAudCkgPT4ge1xuICBsZXQgZGhleHBfb2ZfdWV4cCA9ICh+aW5fZmlsdGVyPWluX2ZpbHRlciwgbSwgdWV4cCkgPT4ge1xuICAgIGRoZXhwX29mX3VleHAobSwgdWV4cCwgaW5fZmlsdGVyKTtcbiAgfTtcbiAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoVGVybS5VRXhwLnJlcF9pZCh1ZXhwKSwgbSkpIHtcbiAgfCBTb21lKEluZm9FeHAoe21vZGUsIHNlbGYsIGN0eCwgX30pKSA9PlxuICAgIGxldCBlcnJfc3RhdHVzID0gSW5mby5zdGF0dXNfZXhwKGN0eCwgbW9kZSwgc2VsZik7XG4gICAgbGV0IGlkID0gVGVybS5VRXhwLnJlcF9pZCh1ZXhwKTsgLyogTk9URTogdXNpbmcgdGVybSB1aWRzIGZvciBob2xlIGlkcyAqL1xuICAgIGxldCsgZDogREhFeHAudCA9XG4gICAgICBzd2l0Y2ggKHVleHAudGVybSkge1xuICAgICAgfCBJbnZhbGlkKHQpID0+IFNvbWUoREhFeHAuSW52YWxpZFRleHQoaWQsIDAsIHQpKVxuICAgICAgfCBFbXB0eUhvbGUgPT4gU29tZShESEV4cC5FbXB0eUhvbGUoaWQsIDApKVxuICAgICAgfCBNdWx0aUhvbGUoX3RtcykgPT5cbiAgICAgICAgLyogVE9ETzogYWRkIGEgZGhleHAgY2FzZSBhbmQgZXZhbCBsb2dpYyBmb3IgbXVsdGlob2xlcy5cbiAgICAgICAgICAgTWFrZSBzdXJlIG5ldyBkaGV4cCBmb3JtIGlzIHByb3Blcmx5IGNvbnNpZGVyZWQgSW5kZXRcbiAgICAgICAgICAgdG8gYXZvaWQgY2FzdGluZyBpc3N1ZXMuICovXG4gICAgICAgIFNvbWUoRW1wdHlIb2xlKGlkLCAwKSlcbiAgICAgIHwgVHJpdiA9PiBTb21lKFR1cGxlKFtdKSlcbiAgICAgIHwgQm9vbChiKSA9PiBTb21lKEJvb2xMaXQoYikpXG4gICAgICB8IEludChuKSA9PiBTb21lKEludExpdChuKSlcbiAgICAgIHwgRmxvYXQobikgPT4gU29tZShGbG9hdExpdChuKSlcbiAgICAgIHwgU3RyaW5nKHMpID0+IFNvbWUoU3RyaW5nTGl0KHMpKVxuICAgICAgfCBMaXN0TGl0KGVzKSA9PlxuICAgICAgICBsZXQqIGRzID0gZXMgfD4gTGlzdC5tYXAoZGhleHBfb2ZfdWV4cChtKSkgfD4gT3B0VXRpbC5zZXF1ZW5jZTtcbiAgICAgICAgbGV0KyB0eSA9IGZpeGVkX2V4cF90eXAobSwgdWV4cCk7XG4gICAgICAgIGxldCB0eSA9IFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSk7XG4gICAgICAgIERIRXhwLkxpc3RMaXQoaWQsIDAsIHR5LCBkcyk7XG4gICAgICB8IEZ1bihwLCBib2R5KSA9PlxuICAgICAgICBsZXQqIGRwID0gZGhwYXRfb2ZfdXBhdChtLCBwKTtcbiAgICAgICAgbGV0KiBkMSA9IGRoZXhwX29mX3VleHAobSwgYm9keSk7XG4gICAgICAgIGxldCsgdHkgPSBmaXhlZF9wYXRfdHlwKG0sIHApO1xuICAgICAgICBESEV4cC5GdW4oZHAsIHR5LCBkMSwgTm9uZSk7XG4gICAgICB8IFR1cGxlKGVzKSA9PlxuICAgICAgICBsZXQrIGRzID0gZXMgfD4gTGlzdC5tYXAoZGhleHBfb2ZfdWV4cChtKSkgfD4gT3B0VXRpbC5zZXF1ZW5jZTtcbiAgICAgICAgREhFeHAuVHVwbGUoZHMpO1xuICAgICAgfCBDb25zKGUxLCBlMikgPT5cbiAgICAgICAgbGV0KiBkYzEgPSBkaGV4cF9vZl91ZXhwKG0sIGUxKTtcbiAgICAgICAgbGV0KyBkYzIgPSBkaGV4cF9vZl91ZXhwKG0sIGUyKTtcbiAgICAgICAgREhFeHAuQ29ucyhkYzEsIGRjMik7XG4gICAgICB8IExpc3RDb25jYXQoZTEsIGUyKSA9PlxuICAgICAgICBsZXQqIGRjMSA9IGRoZXhwX29mX3VleHAobSwgZTEpO1xuICAgICAgICBsZXQrIGRjMiA9IGRoZXhwX29mX3VleHAobSwgZTIpO1xuICAgICAgICBESEV4cC5MaXN0Q29uY2F0KGRjMSwgZGMyKTtcbiAgICAgIHwgVW5PcChNZXRhKFVucXVvdGUpLCBlKSA9PlxuICAgICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgICB8IFZhcihcImVcIikgd2hlbiBpbl9maWx0ZXIgPT4gU29tZShDb25zdHJ1Y3RvcihcIiRlXCIpKVxuICAgICAgICB8IFZhcihcInZcIikgd2hlbiBpbl9maWx0ZXIgPT4gU29tZShDb25zdHJ1Y3RvcihcIiR2XCIpKVxuICAgICAgICB8IF8gPT4gU29tZShESEV4cC5FbXB0eUhvbGUoaWQsIDApKVxuICAgICAgICB9XG4gICAgICB8IFVuT3AoSW50KE1pbnVzKSwgZSkgPT5cbiAgICAgICAgbGV0KyBkYyA9IGRoZXhwX29mX3VleHAobSwgZSk7XG4gICAgICAgIERIRXhwLkJpbkludE9wKE1pbnVzLCBJbnRMaXQoMCksIGRjKTtcbiAgICAgIHwgVW5PcChCb29sKE5vdCksIGUpID0+XG4gICAgICAgIGxldCsgZF9zY3J1dCA9IGRoZXhwX29mX3VleHAobSwgZSk7XG4gICAgICAgIGxldCBkX3J1bGVzID1cbiAgICAgICAgICBESEV4cC5bXG4gICAgICAgICAgICBSdWxlKEJvb2xMaXQodHJ1ZSksIEJvb2xMaXQoZmFsc2UpKSxcbiAgICAgICAgICAgIFJ1bGUoQm9vbExpdChmYWxzZSksIEJvb2xMaXQodHJ1ZSkpLFxuICAgICAgICAgIF07XG4gICAgICAgIGxldCBkID0gREhFeHAuQ29uc2lzdGVudENhc2UoREhFeHAuQ2FzZShkX3NjcnV0LCBkX3J1bGVzLCAwKSk7XG4gICAgICAgIC8qIE1hbnVhbGx5IGNvbnN0cnVjdCBjYXN0IChjYXNlIGlzIG5vdCBvdGhlcndpc2UgY2FzdCkgKi9cbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIHwgQW5hKGFuYV90eSkgPT4gREhFeHAuY2FzdChkLCBCb29sLCBhbmFfdHkpXG4gICAgICAgIHwgXyA9PiBkXG4gICAgICAgIH07XG4gICAgICB8IEJpbk9wKG9wLCBlMSwgZTIpID0+XG4gICAgICAgIGxldCAoXywgY29ucykgPSBleHBfYmlub3Bfb2Yob3ApO1xuICAgICAgICBsZXQqIGRjMSA9IGRoZXhwX29mX3VleHAobSwgZTEpO1xuICAgICAgICBsZXQrIGRjMiA9IGRoZXhwX29mX3VleHAobSwgZTIpO1xuICAgICAgICBjb25zKGRjMSwgZGMyKTtcbiAgICAgIHwgUGFyZW5zKGUpID0+IGRoZXhwX29mX3VleHAobSwgZSlcbiAgICAgIHwgU2VxKGUxLCBlMikgPT5cbiAgICAgICAgbGV0KiBkMSA9IGRoZXhwX29mX3VleHAobSwgZTEpO1xuICAgICAgICBsZXQrIGQyID0gZGhleHBfb2ZfdWV4cChtLCBlMik7XG4gICAgICAgIERIRXhwLlNlcXVlbmNlKGQxLCBkMik7XG4gICAgICB8IFRlc3QodGVzdCkgPT5cbiAgICAgICAgbGV0KyBkdGVzdCA9IGRoZXhwX29mX3VleHAobSwgdGVzdCk7XG4gICAgICAgIERIRXhwLlRlc3QoaWQsIGR0ZXN0KTtcbiAgICAgIHwgRmlsdGVyKGFjdCwgY29uZCwgYm9keSkgPT5cbiAgICAgICAgbGV0KiBkY29uZCA9IGRoZXhwX29mX3VleHAofmluX2ZpbHRlcj10cnVlLCBtLCBjb25kKTtcbiAgICAgICAgbGV0KyBkYm9keSA9IGRoZXhwX29mX3VleHAobSwgYm9keSk7XG4gICAgICAgIERIRXhwLkZpbHRlcihGaWx0ZXIoRmlsdGVyLm1rKGRjb25kLCBhY3QpKSwgZGJvZHkpO1xuICAgICAgfCBWYXIobmFtZSkgPT5cbiAgICAgICAgc3dpdGNoIChlcnJfc3RhdHVzKSB7XG4gICAgICAgIHwgSW5Ib2xlKEZyZWVWYXJpYWJsZShfKSkgPT4gU29tZShGcmVlVmFyKGlkLCAwLCBuYW1lKSlcbiAgICAgICAgfCBfID0+IFNvbWUoQm91bmRWYXIobmFtZSkpXG4gICAgICAgIH1cbiAgICAgIHwgQ29uc3RydWN0b3IobmFtZSkgPT5cbiAgICAgICAgc3dpdGNoIChlcnJfc3RhdHVzKSB7XG4gICAgICAgIHwgSW5Ib2xlKENvbW1vbihOb1R5cGUoRnJlZUNvbnN0cnVjdG9yKF8pKSkpID0+XG4gICAgICAgICAgU29tZShGcmVlVmFyKGlkLCAwLCBuYW1lKSlcbiAgICAgICAgfCBfID0+IFNvbWUoQ29uc3RydWN0b3IobmFtZSkpXG4gICAgICAgIH1cbiAgICAgIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICAgICAgbGV0IGFkZF9uYW1lOiAob3B0aW9uKHN0cmluZyksIERIRXhwLnQpID0+IERIRXhwLnQgPSAoXG4gICAgICAgICAgbmFtZSA9PlxuICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICB8IEZ1bihwLCB0eSwgZSwgXykgPT4gREhFeHAuRnVuKHAsIHR5LCBlLCBuYW1lKVxuICAgICAgICAgICAgfCBkID0+IGRcbiAgICAgICAgKTtcbiAgICAgICAgbGV0KiBkcCA9IGRocGF0X29mX3VwYXQobSwgcCk7XG4gICAgICAgIGxldCogZGRlZiA9IGRoZXhwX29mX3VleHAobSwgZGVmKTtcbiAgICAgICAgbGV0KiBkYm9keSA9IGRoZXhwX29mX3VleHAobSwgYm9keSk7XG4gICAgICAgIGxldCsgdHkgPSBmaXhlZF9wYXRfdHlwKG0sIHApO1xuICAgICAgICBzd2l0Y2ggKFRlcm0uVVBhdC5nZXRfcmVjdXJzaXZlX2JpbmRpbmdzKHApKSB7XG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIC8qIG5vdCByZWN1cnNpdmUgKi9cbiAgICAgICAgICBESEV4cC5MZXQoZHAsIGFkZF9uYW1lKFRlcm0uVVBhdC5nZXRfdmFyKHApLCBkZGVmKSwgZGJvZHkpXG4gICAgICAgIHwgU29tZShbZl0pID0+XG4gICAgICAgICAgLyogc2ltcGxlIHJlY3Vyc2lvbiAqL1xuICAgICAgICAgIExldChkcCwgRml4RihmLCB0eSwgYWRkX25hbWUoU29tZShmKSwgZGRlZikpLCBkYm9keSlcbiAgICAgICAgfCBTb21lKGZzKSA9PlxuICAgICAgICAgIC8qIG11dHVhbCByZWN1cnNpb24gKi9cbiAgICAgICAgICBsZXQgZGRlZiA9XG4gICAgICAgICAgICBzd2l0Y2ggKGRkZWYpIHtcbiAgICAgICAgICAgIHwgVHVwbGUoYSkgPT5cbiAgICAgICAgICAgICAgREhFeHAuVHVwbGUoTGlzdC5tYXAyKHMgPT4gYWRkX25hbWUoU29tZShzKSksIGZzLCBhKSlcbiAgICAgICAgICAgIHwgXyA9PiBkZGVmXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGxldCB1bmlxX2lkID0gTGlzdC5udGgoZGVmLmlkcywgMCk7XG4gICAgICAgICAgbGV0IHNlbGZfaWQgPSBcIl9fbXV0dWFsX19cIiArKyBJZC50b19zdHJpbmcodW5pcV9pZCk7XG4gICAgICAgICAgbGV0IHNlbGZfdmFyID0gREhFeHAuQm91bmRWYXIoc2VsZl9pZCk7XG4gICAgICAgICAgbGV0IChfLCBzdWJzdGl0dXRlZF9kZWYpID1cbiAgICAgICAgICAgIGZzXG4gICAgICAgICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgICAgICAgKChpLCBkZGVmKSwgZikgPT4ge1xuICAgICAgICAgICAgICAgICAgIGxldCBkZGVmID1cbiAgICAgICAgICAgICAgICAgICAgIFN1YnN0aXR1dGlvbi5zdWJzdF92YXIoREhFeHAuUHJqKHNlbGZfdmFyLCBpKSwgZiwgZGRlZik7XG4gICAgICAgICAgICAgICAgICAgKGkgKyAxLCBkZGVmKTtcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgKDAsIGRkZWYpLFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICBMZXQoZHAsIEZpeEYoc2VsZl9pZCwgdHksIHN1YnN0aXR1dGVkX2RlZiksIGRib2R5KTtcbiAgICAgICAgfTtcbiAgICAgIHwgQXAoZm4sIGFyZylcbiAgICAgIHwgUGlwZWxpbmUoYXJnLCBmbikgPT5cbiAgICAgICAgbGV0KiBjX2ZuID0gZGhleHBfb2ZfdWV4cChtLCBmbik7XG4gICAgICAgIGxldCsgY19hcmcgPSBkaGV4cF9vZl91ZXhwKG0sIGFyZyk7XG4gICAgICAgIERIRXhwLkFwKGNfZm4sIGNfYXJnKTtcbiAgICAgIHwgSWYoYywgZTEsIGUyKSA9PlxuICAgICAgICBsZXQqIGMnID0gZGhleHBfb2ZfdWV4cChtLCBjKTtcbiAgICAgICAgbGV0KiBkMSA9IGRoZXhwX29mX3VleHAobSwgZTEpO1xuICAgICAgICBsZXQrIGQyID0gZGhleHBfb2ZfdWV4cChtLCBlMik7XG4gICAgICAgIC8vIFVzZSB0YWcgdG8gbWFyayBpbmNvbnNpc3RlbnQgYnJhbmNoZXNcbiAgICAgICAgc3dpdGNoIChlcnJfc3RhdHVzKSB7XG4gICAgICAgIHwgSW5Ib2xlKENvbW1vbihJbmNvbnNpc3RlbnQoSW50ZXJuYWwoXykpKSkgPT5cbiAgICAgICAgICBESEV4cC5JZlRoZW5FbHNlKERILkluY29uc2lzdGVudElmLCBjJywgZDEsIGQyKVxuICAgICAgICB8IF8gPT4gREhFeHAuSWZUaGVuRWxzZShESC5Db25zaXN0ZW50SWYsIGMnLCBkMSwgZDIpXG4gICAgICAgIH07XG4gICAgICB8IE1hdGNoKHNjcnV0LCBydWxlcykgPT5cbiAgICAgICAgbGV0KiBkX3NjcnV0ID0gZGhleHBfb2ZfdWV4cChtLCBzY3J1dCk7XG4gICAgICAgIGxldCsgZF9ydWxlcyA9XG4gICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAoKHAsIGUpKSA9PiB7XG4gICAgICAgICAgICAgIGxldCogZF9wID0gZGhwYXRfb2ZfdXBhdChtLCBwKTtcbiAgICAgICAgICAgICAgbGV0KyBkX2UgPSBkaGV4cF9vZl91ZXhwKG0sIGUpO1xuICAgICAgICAgICAgICBESEV4cC5SdWxlKGRfcCwgZF9lKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBydWxlcyxcbiAgICAgICAgICApXG4gICAgICAgICAgfD4gT3B0VXRpbC5zZXF1ZW5jZTtcbiAgICAgICAgbGV0IGQgPSBESEV4cC5DYXNlKGRfc2NydXQsIGRfcnVsZXMsIDApO1xuICAgICAgICBzd2l0Y2ggKGVycl9zdGF0dXMpIHtcbiAgICAgICAgfCBJbkhvbGUoQ29tbW9uKEluY29uc2lzdGVudChJbnRlcm5hbChfKSkpKSA9PlxuICAgICAgICAgIERIRXhwLkluY29uc2lzdGVudEJyYW5jaGVzKGlkLCAwLCBkKVxuICAgICAgICB8IF8gPT4gQ29uc2lzdGVudENhc2UoZClcbiAgICAgICAgfTtcbiAgICAgIHwgVHlBbGlhcyhfLCBfLCBlKSA9PiBkaGV4cF9vZl91ZXhwKG0sIGUpXG4gICAgICB9O1xuICAgIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gICAgfCBQYXJlbnMoXykgPT4gZFxuICAgIHwgXyA9PiB3cmFwKGN0eCwgaWQsIG1vZGUsIHNlbGYsIGQpXG4gICAgfTtcbiAgfCBTb21lKEluZm9QYXQoXykgfCBJbmZvVHlwKF8pIHwgSW5mb1RQYXQoXykgfCBTZWNvbmRhcnkoXykpXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG59XG5hbmQgZGhwYXRfb2ZfdXBhdCA9IChtOiBTdGF0aWNzLk1hcC50LCB1cGF0OiBUZXJtLlVQYXQudCk6IG9wdGlvbihESFBhdC50KSA9PiB7XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KFRlcm0uVVBhdC5yZXBfaWQodXBhdCksIG0pKSB7XG4gIHwgU29tZShJbmZvUGF0KHttb2RlLCBzZWxmLCBjdHgsIF99KSkgPT5cbiAgICBsZXQgZXJyX3N0YXR1cyA9IEluZm8uc3RhdHVzX3BhdChjdHgsIG1vZGUsIHNlbGYpO1xuICAgIGxldCBtYXliZV9yZWFzb246IG9wdGlvbihFcnJTdGF0dXMuSG9sZVJlYXNvbi50KSA9XG4gICAgICBzd2l0Y2ggKGVycl9zdGF0dXMpIHtcbiAgICAgIHwgTm90SW5Ib2xlKF8pID0+IE5vbmVcbiAgICAgIHwgSW5Ib2xlKF8pID0+IFNvbWUoVHlwZUluY29uc2lzdGVudClcbiAgICAgIH07XG4gICAgbGV0IHUgPSBUZXJtLlVQYXQucmVwX2lkKHVwYXQpOyAvKiBOT1RFOiB1c2luZyB0ZXJtIHVpZHMgZm9yIGhvbGUgaWRzICovXG4gICAgbGV0IHdyYXAgPSAoZDogREhQYXQudCk6IG9wdGlvbihESFBhdC50KSA9PlxuICAgICAgc3dpdGNoIChtYXliZV9yZWFzb24pIHtcbiAgICAgIHwgTm9uZSA9PiBTb21lKGQpXG4gICAgICB8IFNvbWUocmVhc29uKSA9PiBTb21lKE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIDAsIGQpKVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKHVwYXQudGVybSkge1xuICAgIHwgSW52YWxpZCh0KSA9PiBTb21lKERIUGF0LkludmFsaWRUZXh0KHUsIDAsIHQpKVxuICAgIHwgRW1wdHlIb2xlID0+IFNvbWUoRW1wdHlIb2xlKHUsIDApKVxuICAgIHwgTXVsdGlIb2xlKF8pID0+XG4gICAgICAvLyBUT0RPOiBkaGV4cCwgZXZhbCBmb3IgbXVsdGlob2xlc1xuICAgICAgU29tZShFbXB0eUhvbGUodSwgMCkpXG4gICAgfCBXaWxkID0+IHdyYXAoV2lsZClcbiAgICB8IEJvb2woYikgPT4gd3JhcChCb29sTGl0KGIpKVxuICAgIHwgSW50KG4pID0+IHdyYXAoSW50TGl0KG4pKVxuICAgIHwgRmxvYXQobikgPT4gd3JhcChGbG9hdExpdChuKSlcbiAgICB8IFN0cmluZyhzKSA9PiB3cmFwKFN0cmluZ0xpdChzKSlcbiAgICB8IFRyaXYgPT4gd3JhcChUdXBsZShbXSkpXG4gICAgfCBMaXN0TGl0KHBzKSA9PlxuICAgICAgbGV0KiBkcyA9IHBzIHw+IExpc3QubWFwKGRocGF0X29mX3VwYXQobSkpIHw+IE9wdFV0aWwuc2VxdWVuY2U7XG4gICAgICBsZXQqIHR5ID0gZml4ZWRfcGF0X3R5cChtLCB1cGF0KTtcbiAgICAgIHdyYXAoTGlzdExpdChUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpLCBkcykpO1xuICAgIHwgQ29uc3RydWN0b3IobmFtZSkgPT5cbiAgICAgIHN3aXRjaCAoZXJyX3N0YXR1cykge1xuICAgICAgfCBJbkhvbGUoQ29tbW9uKE5vVHlwZShGcmVlQ29uc3RydWN0b3IoXykpKSkgPT5cbiAgICAgICAgU29tZShCYWRDb25zdHJ1Y3Rvcih1LCAwLCBuYW1lKSlcbiAgICAgIHwgXyA9PiB3cmFwKENvbnN0cnVjdG9yKG5hbWUpKVxuICAgICAgfVxuICAgIHwgQ29ucyhoZCwgdGwpID0+XG4gICAgICBsZXQqIGRfaGQgPSBkaHBhdF9vZl91cGF0KG0sIGhkKTtcbiAgICAgIGxldCogZF90bCA9IGRocGF0X29mX3VwYXQobSwgdGwpO1xuICAgICAgd3JhcChDb25zKGRfaGQsIGRfdGwpKTtcbiAgICB8IFR1cGxlKHBzKSA9PlxuICAgICAgbGV0KiBkcyA9IHBzIHw+IExpc3QubWFwKGRocGF0X29mX3VwYXQobSkpIHw+IE9wdFV0aWwuc2VxdWVuY2U7XG4gICAgICB3cmFwKERIUGF0LlR1cGxlKGRzKSk7XG4gICAgfCBWYXIobmFtZSkgPT4gU29tZShWYXIobmFtZSkpXG4gICAgfCBQYXJlbnMocCkgPT4gZGhwYXRfb2ZfdXBhdChtLCBwKVxuICAgIHwgQXAocDEsIHAyKSA9PlxuICAgICAgbGV0KiBkX3AxID0gZGhwYXRfb2ZfdXBhdChtLCBwMSk7XG4gICAgICBsZXQqIGRfcDIgPSBkaHBhdF9vZl91cGF0KG0sIHAyKTtcbiAgICAgIHdyYXAoQXAoZF9wMSwgZF9wMikpO1xuICAgIHwgVHlwZUFubihwLCBfdHkpID0+XG4gICAgICBsZXQqIGRwID0gZGhwYXRfb2ZfdXBhdChtLCBwKTtcbiAgICAgIHdyYXAoZHApO1xuICAgIH07XG4gIHwgU29tZShJbmZvRXhwKF8pIHwgSW5mb1R5cChfKSB8IEluZm9UUGF0KF8pIHwgU2Vjb25kYXJ5KF8pKVxuICB8IE5vbmUgPT4gTm9uZVxuICB9O1xufTtcblxuLy9sZXQgZGhleHBfb2ZfdWV4cCA9IENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIGRoZXhwX29mX3VleHApO1xuXG5sZXQgdWV4cF9lbGFiID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFRlcm0uVUV4cC50KTogRWxhYm9yYXRpb25SZXN1bHQudCA9PlxuICBzd2l0Y2ggKGRoZXhwX29mX3VleHAobSwgdWV4cCwgZmFsc2UpKSB7XG4gIHwgTm9uZSA9PiBEb2VzTm90RWxhYm9yYXRlXG4gIHwgU29tZShkKSA9PlxuICAgIC8vbGV0IGQgPSB1ZXhwX2VsYWJfd3JhcF9idWlsdGlucyhkKTtcbiAgICBsZXQgdHkgPVxuICAgICAgc3dpdGNoIChmaXhlZF9leHBfdHlwKG0sIHVleHApKSB7XG4gICAgICB8IFNvbWUodHkpID0+IHR5XG4gICAgICB8IE5vbmUgPT4gVHlwLlVua25vd24oSW50ZXJuYWwpXG4gICAgICB9O1xuICAgIEVsYWJvcmF0ZXMoZCwgdHksIERlbHRhLmVtcHR5KTtcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgQm94ZWRWYWx1ZShESEV4cC50KVxuICB8IEluZGV0KERIRXhwLnQpO1xuXG5sZXQgdW5ib3ggPVxuICBmdW5cbiAgfCBCb3hlZFZhbHVlKGQpXG4gIHwgSW5kZXQoZCkgPT4gZDtcblxubGV0IGZhc3RfZXF1YWwgPSAocjEsIHIyKSA9PlxuICBzd2l0Y2ggKHIxLCByMikge1xuICB8IChCb3hlZFZhbHVlKGQxKSwgQm94ZWRWYWx1ZShkMikpXG4gIHwgKEluZGV0KGQxKSwgSW5kZXQoZDIpKSA9PiBESEV4cC5mYXN0X2VxdWFsKGQxLCBkMilcbiAgfCBfID0+IGZhbHNlXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7c3RlcDogaW50fTtcblxubGV0IGluaXRpYWw6IHQgPSB7c3RlcDogMH07XG5cbmxldCB0YWtlX3N0ZXAgPSAoe3N0ZXB9KSA9PiB7c3RlcDogc3RlcCArIDF9O1xubGV0IGdldF9zdGVwID0gKHtzdGVwfSkgPT4gc3RlcDtcbmxldCBwdXRfc3RlcCA9IHN0ZXAgPT4ge3N0ZXA6IHN0ZXB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzdGF0czogRXZhbHVhdG9yU3RhdHMudCxcbiAgdGVzdHM6IFRlc3RNYXAudCxcbn07XG5cbmxldCBpbml0ID0ge3N0YXRzOiBFdmFsdWF0b3JTdGF0cy5pbml0aWFsLCB0ZXN0czogVGVzdE1hcC5lbXB0eX07XG5cbmxldCB0YWtlX3N0ZXAgPSAoe3N0YXRzLCBffSBhcyBlcykgPT4ge1xuICAuLi5lcyxcbiAgc3RhdHM6IHN0YXRzIHw+IEV2YWx1YXRvclN0YXRzLnRha2Vfc3RlcCxcbn07XG5cbmxldCBnZXRfc3RlcCA9ICh7c3RhdHMsIF99KSA9PiBzdGF0cyB8PiBFdmFsdWF0b3JTdGF0cy5nZXRfc3RlcDtcblxubGV0IHB1dF9zdGVwID0gKHN0ZXAsIGVzKSA9PiB7Li4uZXMsIHN0YXRzOiBFdmFsdWF0b3JTdGF0cy5wdXRfc3RlcChzdGVwKX07XG5cbmxldCBhZGRfdGVzdCA9ICh7dGVzdHMsIF99IGFzIGVzLCBpZCwgcmVwb3J0KSA9PiB7XG4gIGxldCB0ZXN0cyA9IHRlc3RzIHw+IFRlc3RNYXAuZXh0ZW5kKChpZCwgcmVwb3J0KSk7XG4gIHsuLi5lcywgdGVzdHN9O1xufTtcblxubGV0IGdldF90ZXN0cyA9ICh7dGVzdHMsIF99KSA9PiB0ZXN0cztcblxubGV0IHB1dF90ZXN0cyA9ICh0ZXN0cywgZXMpID0+IHsuLi5lcywgdGVzdHN9O1xuIiwib3BlbiBFdmFsdWF0b3JSZXN1bHQ7XG5vcGVuIFRyYW5zaXRpb247XG5cbm1vZHVsZSBFdmFsdWF0b3JFVk1vZGU6IHtcbiAgdHlwZSByZXN1bHRfdW5maW5pc2hlZCA9XG4gICAgfCBCb3hlZFZhbHVlKERIRXhwLnQpXG4gICAgfCBJbmRldChESEV4cC50KVxuICAgIHwgVW5ldmFsKERIRXhwLnQpO1xuICBsZXQgdW5ib3g6IHJlc3VsdF91bmZpbmlzaGVkID0+IERIRXhwLnQ7XG5cbiAgaW5jbHVkZVxuICAgIEVWX01PREUgd2l0aFxuICAgICAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KSBhbmQgdHlwZSByZXN1bHQgPSByZXN1bHRfdW5maW5pc2hlZDtcbn0gPSB7XG4gIHR5cGUgcmVxc3RhdGUgPVxuICAgIHwgQm94ZWRSZWFkeVxuICAgIHwgSW5kZXRSZWFkeVxuICAgIHwgSW5kZXRCbG9ja2VkO1xuXG4gIGxldCAoJiYpID0gKHgsIHkpID0+XG4gICAgc3dpdGNoICh4LCB5KSB7XG4gICAgfCAoSW5kZXRCbG9ja2VkLCBfKSA9PiBJbmRldEJsb2NrZWRcbiAgICB8IChfLCBJbmRldEJsb2NrZWQpID0+IEluZGV0QmxvY2tlZFxuICAgIHwgKEluZGV0UmVhZHksIF8pID0+IEluZGV0UmVhZHlcbiAgICB8IChfLCBJbmRldFJlYWR5KSA9PiBJbmRldFJlYWR5XG4gICAgfCAoQm94ZWRSZWFkeSwgQm94ZWRSZWFkeSkgPT4gQm94ZWRSZWFkeVxuICAgIH07XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAocmVxc3RhdGUsICdhKTtcblxuICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKHJlcXN0YXRlLCAnYSwgJ2IpOyAvLyBjdW11bGF0aXZlIHN0YXRlLCBjdW11bGF0aXZlIGFyZ3VtZW50cywgY3VtdWxhdGl2ZSAndW5kbydcblxuICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICBsZXQgdXBkYXRlX3Rlc3QgPSAoc3RhdGUsIGlkLCB2KSA9PlxuICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuXG4gIHR5cGUgcmVzdWx0X3VuZmluaXNoZWQgPVxuICAgIHwgQm94ZWRWYWx1ZShESEV4cC50KVxuICAgIHwgSW5kZXQoREhFeHAudClcbiAgICB8IFVuZXZhbChESEV4cC50KTtcblxuICB0eXBlIHJlc3VsdCA9IHJlc3VsdF91bmZpbmlzaGVkO1xuXG4gIGxldCB1bmJveCA9XG4gICAgZnVuXG4gICAgfCBCb3hlZFZhbHVlKHgpXG4gICAgfCBJbmRldCh4KVxuICAgIHwgVW5ldmFsKHgpID0+IHg7XG5cbiAgbGV0IHJlcV92YWx1ZSA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgQm94ZWRWYWx1ZSh4KSA9PiAoQm94ZWRSZWFkeSwgeClcbiAgICB8IEluZGV0KHgpID0+IChJbmRldEJsb2NrZWQsIHgpXG4gICAgfCBVbmV2YWwoXykgPT4gZmFpbHdpdGgoXCJVbmV4cGVjdGVkIFVuZXZhbFwiKVxuICAgIH07XG5cbiAgbGV0IHJlYyByZXFfYWxsX3ZhbHVlID0gKGYsIGkpID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiAoQm94ZWRSZWFkeSwgW10pXG4gICAgfCBbeCwgLi4ueHNdID0+IHtcbiAgICAgICAgbGV0IChyMSwgeCcpID0gcmVxX3ZhbHVlKGYsIHggPT4geCwgeCk7XG4gICAgICAgIGxldCAocjIsIHhzJykgPSByZXFfYWxsX3ZhbHVlKGYsIGksIHhzKTtcbiAgICAgICAgKHIxICYmIHIyLCBbeCcsIC4uLnhzJ10pO1xuICAgICAgfTtcblxuICBsZXQgcmVxX2ZpbmFsID0gKGYsIF8sIHgpID0+XG4gICAgc3dpdGNoIChmKHgpKSB7XG4gICAgfCBCb3hlZFZhbHVlKHgpID0+IChCb3hlZFJlYWR5LCB4KVxuICAgIHwgSW5kZXQoeCkgPT4gKEluZGV0UmVhZHksIHgpXG4gICAgfCBVbmV2YWwoXykgPT4gZmFpbHdpdGgoXCJVbmV4cGVjdGVkIFVuZXZhbFwiKVxuICAgIH07XG5cbiAgbGV0IHJlYyByZXFfYWxsX2ZpbmFsID0gKGYsIGkpID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiAoQm94ZWRSZWFkeSwgW10pXG4gICAgfCBbeCwgLi4ueHNdID0+IHtcbiAgICAgICAgbGV0IChyMSwgeCcpID0gcmVxX2ZpbmFsKGYsIHggPT4geCwgeCk7XG4gICAgICAgIGxldCAocjIsIHhzJykgPSByZXFfYWxsX2ZpbmFsKGYsIGksIHhzKTtcbiAgICAgICAgKHIxICYmIHIyLCBbeCcsIC4uLnhzJ10pO1xuICAgICAgfTtcblxuICBsZXQgb3RoZXJ3aXNlID0gKF8sIGMpID0+IChCb3hlZFJlYWR5LCAoKSwgYyk7XG5cbiAgbGV0IChhbmQuKSA9ICgocjEsIHgxLCBjMSksIChyMiwgeDIpKSA9PiAocjEgJiYgcjIsICh4MSwgeDIpLCBjMSh4MikpO1xuXG4gIGxldCAobGV0LikgPSAoKHIsIHgsIGMpLCBzKSA9PlxuICAgIHN3aXRjaCAociwgcyh4KSkge1xuICAgIHwgKEJveGVkUmVhZHksIFN0ZXAoe2FwcGx5LCB2YWx1ZTogdHJ1ZSwgX30pKSA9PiBCb3hlZFZhbHVlKGFwcGx5KCkpXG4gICAgfCAoSW5kZXRSZWFkeSwgU3RlcCh7YXBwbHksIHZhbHVlOiB0cnVlLCBffSkpID0+IEluZGV0KGFwcGx5KCkpXG4gICAgfCAoQm94ZWRSZWFkeSwgU3RlcCh7YXBwbHksIHZhbHVlOiBmYWxzZSwgX30pKVxuICAgIHwgKEluZGV0UmVhZHksIFN0ZXAoe2FwcGx5LCB2YWx1ZTogZmFsc2UsIF99KSkgPT4gVW5ldmFsKGFwcGx5KCkpXG4gICAgfCAoQm94ZWRSZWFkeSwgQ29uc3RydWN0b3IpID0+IEJveGVkVmFsdWUoYylcbiAgICB8IChJbmRldFJlYWR5LCBDb25zdHJ1Y3RvcikgPT4gSW5kZXQoYylcbiAgICB8IChJbmRldEJsb2NrZWQsIF8pID0+IEluZGV0KGMpXG4gICAgfCAoXywgSW5kZXQpID0+IEluZGV0KGMpXG4gICAgfTtcbn07XG5tb2R1bGUgRXZhbCA9IFRyYW5zaXRpb24oRXZhbHVhdG9yRVZNb2RlKTtcblxubGV0IHJlYyBldmFsdWF0ZSA9IChzdGF0ZSwgZW52LCBkKSA9PiB7XG4gIGxldCB1ID0gRXZhbC50cmFuc2l0aW9uKGV2YWx1YXRlLCBzdGF0ZSwgZW52LCBkKTtcbiAgc3dpdGNoICh1KSB7XG4gIHwgQm94ZWRWYWx1ZSh4KSA9PiBCb3hlZFZhbHVlKHgpXG4gIHwgSW5kZXQoeCkgPT4gSW5kZXQoeClcbiAgfCBVbmV2YWwoeCkgPT4gZXZhbHVhdGUoc3RhdGUsIGVudiwgeClcbiAgfTtcbn07XG5cbmxldCBldmFsdWF0ZSA9IChlbnYsIGQpOiAoRXZhbHVhdG9yU3RhdGUudCwgRXZhbHVhdG9yUmVzdWx0LnQpID0+IHtcbiAgbGV0IHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLmluaXQpO1xuICBsZXQgZW52ID0gQ2xvc3VyZUVudmlyb25tZW50Lm9mX2Vudmlyb25tZW50KGVudik7XG4gIGxldCByZXN1bHQgPSBldmFsdWF0ZShzdGF0ZSwgZW52LCBkKTtcbiAgbGV0IHJlc3VsdCA9XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICB8IEJveGVkVmFsdWUoeCkgPT4gQm94ZWRWYWx1ZSh4KVxuICAgIHwgSW5kZXQoeCkgPT4gSW5kZXQoeClcbiAgICB8IFVuZXZhbCh4KSA9PiBJbmRldCh4KVxuICAgIH07XG4gIChzdGF0ZV4sIHJlc3VsdCk7XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBaaXBwZXI7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG50eXBlIHJlbGF0aW9uID1cbiAgfCBQYXJlbnRcbiAgfCBTaWJsaW5nO1xuXG5sZXQgcGllY2UnID1cbiAgICAofm5vX3dzOiBib29sLCB+aWduOiBQaWVjZS50ID0+IGJvb2wsIH50cmltX3NlY29uZGFyeT1mYWxzZSwgejogWmlwcGVyLnQpXG4gICAgOiBvcHRpb24oKFBpZWNlLnQsIERpcmVjdGlvbi50LCByZWxhdGlvbikpID0+IHtcbiAgbGV0IHNpYnMgPVxuICAgIHRyaW1fc2Vjb25kYXJ5XG4gICAgICA/IHNpYnNfd2l0aF9zZWwoeikgfD4gU2libGluZ3MudHJpbV9zZWNvbmRhcnkgOiBzaWJzX3dpdGhfc2VsKHopO1xuICAvKiBSZXR1cm5zIHRoZSBwaWVjZSBjdXJyZW50bHkgaW5kaWNhdGVkIChpZiBhbnkpIGFuZCB3aGljaCBzaWRlIG9mXG4gICAgIHRoYXQgcGllY2UgdGhlIGNhcmV0IGlzIG9uLiBXZSBmYXZvciBpbmRpY2F0aW5nIHRoZSBwaWVjZSB0byB0aGVcbiAgICAgKFIpaWdodCwgYnV0IG1heSBlbmQgdXAgaW5kaWNhdGluZyB0aGUgKFApYXJlbnQgb3IgdGhlIChMKWVmdC5cbiAgICAgV2UgZG9uJ3QgaW5kaWNhdGUgc2Vjb25kYXJ5IHRpbGVzLiBUaGlzIGZ1bmN0aW9uIGlnbm9yZXMgd2hldGhlclxuICAgICBvciBub3QgdGhlcmUgaXMgYSBzZWxlY3Rpb24gc28gdGhpcyBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIGNhcmV0XG4gICAgIGRpcmVjdGlvbiwgYnV0IHRoZSBjYWxsZXIgc2hvdWxkbid0IGluZGljYXRlIGlmIHRoZXJlJ3MgYSBzZWxlY3Rpb24gKi9cbiAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2licyksIHBhcmVudCh6KSkge1xuICAvKiBOb24tZW1wdHkgc2VsZWN0aW9uID0+IG5vIGluZGljYXRpb24gKi9cbiAgLy98IF8gd2hlbiB6LnNlbGVjdGlvbi5jb250ZW50ICE9IFtdID0+IE5vbmVcbiAgLyogRW1wdHkgc3ludGF4ID0+IG5vIGluZGljYXRpb24gKi9cbiAgfCAoKE5vbmUsIE5vbmUpLCBOb25lKSA9PiBOb25lXG4gIC8qIEwgbm90IHNlY29uZGFyeSwgUiBpcyBzZWNvbmRhcnkgPT4gaW5kaWNhdGUgTCAqL1xuICB8ICgoU29tZShsKSwgU29tZShyKSksIF8pIHdoZW4gIWlnbihsKSAmJiBpZ24ocikgPT5cbiAgICBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogTCBhbmQgUiBhcmUgc2Vjb25kYXJ5cyA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChTb21lKGwpLCBTb21lKHIpKSwgXykgd2hlbiBpZ24obCkgJiYgaWduKHIpID0+XG4gICAgbm9fd3MgPyBOb25lIDogU29tZSgobCwgTGVmdCwgU2libGluZykpXG4gIC8qIEF0IHJpZ2h0IGVuZCBvZiBzeW50YXggYW5kIEwgaXMgc2Vjb25kYXJ5ID0+IG5vIGluZGljYXRpb24gKi9cbiAgfCAoKFNvbWUobCksIE5vbmUpLCBOb25lKSB3aGVuIGlnbihsKSA9PlxuICAgIG5vX3dzID8gTm9uZSA6IFNvbWUoKGwsIExlZnQsIFNpYmxpbmcpKVxuICAvKiBBdCBsZWZ0IGVuZCBvZiBzeW50YXggYW5kIFIgaXMgc2Vjb25kYXJ5ID0+IG5vIGluZGljYXRpb24gKi9cbiAgfCAoKE5vbmUsIFNvbWUocikpLCBOb25lKSB3aGVuIGlnbihyKSA9PlxuICAgIG5vX3dzID8gTm9uZSA6IFNvbWUoKHIsIFJpZ2h0LCBTaWJsaW5nKSlcbiAgLyogTm8gTCBhbmQgUiBpcyBhIHNlY29uZGFyeSBhbmQgdGhlcmUgaXMgYSBQID0+IGluZGljYXRlIFAgKi9cbiAgfCAoKE5vbmUsIFNvbWUocikpLCBTb21lKHBhcmVudCkpIHdoZW4gaWduKHIpID0+XG4gICAgU29tZSgocGFyZW50LCBMZWZ0LCBQYXJlbnQpKVxuICAvKiBMIGlzIG5vdCBzZWNvbmRhcnkgYW5kIGNhcmV0IGlzIG91dGVyID0+IGluZGljYXRlIEwgKi9cbiAgfCAoKFNvbWUobCksIF8pLCBfKSB3aGVuICFpZ24obCkgJiYgei5jYXJldCA9PSBPdXRlciA9PlxuICAgIFNvbWUoKGwsIExlZnQsIFNpYmxpbmcpKVxuICAvKiBObyBMLCBzb21lIFAsIGFuZCBjYXJldCBpcyBvdXRlciA9PiBpbmRpY2F0ZSBSICovXG4gIHwgKChOb25lLCBfKSwgU29tZShwYXJlbnQpKSB3aGVuIHouY2FyZXQgPT0gT3V0ZXIgPT5cbiAgICBTb21lKChwYXJlbnQsIExlZnQsIFBhcmVudCkpXG4gIC8qIFIgaXMgbm90IHNlY29uZGFyeSwgZWl0aGVyIG5vIEwgb3IgTCBpcyBzZWNvbmRhcnkgb3IgY2FyZXQgaXMgaW5uZXIgPT4gaW5kaWNhdGUgUiAqL1xuICB8ICgoXywgU29tZShyKSksIF8pID0+IFNvbWUoKHIsIFJpZ2h0LCBTaWJsaW5nKSlcbiAgLyogTm8gUiBhbmQgdGhlcmUgaXMgYSBQID0+IGluZGljYXRlIFAgKi9cbiAgfCAoKF8sIE5vbmUpLCBTb21lKHBhcmVudCkpID0+IFNvbWUoKHBhcmVudCwgUmlnaHQsIFBhcmVudCkpXG4gIC8qIFRoZXJlIGlzIGFuIEwgYnV0IG5vIFIgYW5kIG5vIFAgPT4gaW5kaWNhdGUgTCAqL1xuICAvL1RPRE8oYW5kcmV3KTogUmlnaHQgYmVsb3cgc2VlbXMgd3JvbmcgYnV0IGl0IGdldHMgZnVja3kgb3RoZXJ3aXNlXG4gIHwgKChTb21lKGwpLCBOb25lKSwgTm9uZSkgPT4gU29tZSgobCwgUmlnaHQsIFNpYmxpbmcpKVxuICB9O1xufTtcblxubGV0IHBpZWNlID1cbiAgcGllY2UnKH5ub193cz10cnVlLCB+aWduPXAgPT4gUGllY2UuKGlzX3NlY29uZGFyeShwKSB8fCBpc19ncm91dChwKSkpO1xuXG5sZXQgc2hhcmRfaW5kZXggPSAoejogWmlwcGVyLnQpOiBvcHRpb24oaW50KSA9PlxuICBzd2l0Y2ggKHBpZWNlKHopKSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZSgocCwgc2lkZSwgcmVsYXRpb24pKSA9PlxuICAgIHN3aXRjaCAocmVsYXRpb24pIHtcbiAgICB8IFBhcmVudCA9PlxuICAgICAgc3dpdGNoIChBbmNlc3RvcnMucGFyZW50KHoucmVsYXRpdmVzLmFuY2VzdG9ycykpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcImluZGljYXRlZF9zaGFyZF9pbmRleCBpbXBvc3NpYmxlXCIpXG4gICAgICB8IFNvbWUoe2NoaWxkcmVuOiAoYmVmb3JlLCBfKSwgX30pID0+XG4gICAgICAgIGxldCBiZWZvcmUgPSBMaXN0Lmxlbmd0aChiZWZvcmUpO1xuICAgICAgICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyh6LnJlbGF0aXZlcy5zaWJsaW5ncykpIHtcbiAgICAgICAgfCAoXywgTm9uZSkgPT4gU29tZShiZWZvcmUgKyAxKVxuICAgICAgICB8IF8gPT4gU29tZShiZWZvcmUpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfCBTaWJsaW5nID0+XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgICB8IEdyb3V0KF8pID0+IFNvbWUoMClcbiAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKHNpZGUpIHtcbiAgICAgICAgfCBMZWZ0ID0+IFNvbWUoTGlzdC5sZW5ndGgodC5jaGlsZHJlbikpXG4gICAgICAgIHwgUmlnaHQgPT4gU29tZSgwKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG5sZXQgaW5kZXggPSAoejogWmlwcGVyLnQpOiBvcHRpb24oSWQudCkgPT5cbiAgc3dpdGNoIChcbiAgICBwaWVjZScofm5vX3dzPWZhbHNlLCB+aWduPVBpZWNlLmlzX3NlY29uZGFyeSwgfnRyaW1fc2Vjb25kYXJ5PWZhbHNlLCB6KVxuICApIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKChwLCBfLCBfKSkgPT4gU29tZShQaWVjZS5pZChwKSlcbiAgfTtcblxubGV0IGNpX29mID0gKHo6IFppcHBlci50LCBpbmZvX21hcDogU3RhdGljcy5NYXAudCk6IG9wdGlvbihTdGF0aWNzLkluZm8udCkgPT5cbiAgLyogVGhpcyB2ZXJzaW9uIHRha2VzIGludG8gYWNjb3VudHMgU2Vjb25kYXJ5LCB3aGlsZSBhY2NvdW50aW5nIGZvciB0aGVcbiAgICogZmFjdCB0aGF0IFNlY29uZGFyeSBpcyBub3QgY3VycmVudGx5IGFkZGVkIHRvIHRoZSBpbmZvbWFwLiBGaXJzdCB3ZVxuICAgKiB0cnkgdGhlIGJhc2ljIGluZGljYXRpb24gZnVuY3Rpb24sIHNwZWNpZnlpbmcgdGhhdCB3ZSBkbyBub3Qgd2FudFxuICAgKiBTZWNvbmRhcnkuIEJ1dCBpZiB0aGlzIGRvZXNuJ3Qgc3VjY2VlZCwgdGhlbiB3ZSBjcmVhdGUgYSAndmlydHVhbCdcbiAgICogaW5mbyBtYXAgZW50cnkgcmVwcmVzZW50aW5nIHRoZSBTZWNvbmRhcnkgbm90YXRpb24sIHdoaWNoIHRha2VzIG9uXG4gICAqIHNvbWUgb2YgdGhlIHNlbWFudGljIGNvbnRleHQgb2YgYSBuZWFyYnkgJ3Byb3h5JyB0ZXJtICovXG4gIHN3aXRjaCAoXG4gICAgcGllY2UnKH5ub193cz10cnVlLCB+aWduPVBpZWNlLmlzX3NlY29uZGFyeSwgfnRyaW1fc2Vjb25kYXJ5PWZhbHNlLCB6KVxuICApIHtcbiAgfCBTb21lKChwLCBfLCBfKSkgPT4gSWQuTWFwLmZpbmRfb3B0KFBpZWNlLmlkKHApLCBpbmZvX21hcClcbiAgfCBOb25lID0+XG4gICAgbGV0IHNpYnMgPSBzaWJzX3dpdGhfc2VsKHopO1xuICAgIGxldCogY2xzID1cbiAgICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnMpKSB7XG4gICAgICAvKiBJZiBvbiBzaWRlIG9mIGNvbW1lbnQsIHNheSB3ZSdyZSBvbiBjb21tZW50ICovXG4gICAgICB8IChTb21lKFNlY29uZGFyeShzbCkpLCBTb21lKFNlY29uZGFyeShfKSkpXG4gICAgICAgICAgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudChzbCkgPT5cbiAgICAgICAgU29tZShTZWNvbmRhcnkuY2xzX29mKHNsKSlcbiAgICAgIHwgKFNvbWUoU2Vjb25kYXJ5KF8pKSwgU29tZShTZWNvbmRhcnkoc3IpKSlcbiAgICAgICAgICB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHNyKSA9PlxuICAgICAgICBTb21lKFNlY29uZGFyeS5jbHNfb2Yoc3IpKVxuICAgICAgfCAoXywgU29tZShTZWNvbmRhcnkocykpKVxuICAgICAgfCAoU29tZShTZWNvbmRhcnkocykpLCBfKSA9PiBTb21lKFNlY29uZGFyeS5jbHNfb2YocykpXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfTtcbiAgICBsZXQqIHByb3h5X2lkID1cbiAgICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKFNpYmxpbmdzLnRyaW1fc2Vjb25kYXJ5KHNpYnMpKSkge1xuICAgICAgfCAoXywgU29tZShwKSlcbiAgICAgIHwgKFNvbWUocCksIF8pID0+IFNvbWUoUGllY2UuaWQocCkpXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfTtcbiAgICBsZXQrIGNpID0gSWQuTWFwLmZpbmRfb3B0KHByb3h5X2lkLCBpbmZvX21hcCk7XG4gICAgSW5mby5TZWNvbmRhcnkoe1xuICAgICAgaWQ6IHByb3h5X2lkLFxuICAgICAgY2xzOiBTZWNvbmRhcnkoY2xzKSxcbiAgICAgIHNvcnQ6IEluZm8uc29ydF9vZihjaSksXG4gICAgICBjdHg6IEluZm8uY3R4X29mKGNpKSxcbiAgICB9KTtcbiAgfTtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoVGVybS50KTtcblxubGV0IGFkZF9hbGwgPSAoaWRzOiBsaXN0KElkLnQpLCB0bTogVGVybS50LCBtYXA6IHQpID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobWFwLCBpZCkgPT4gYWRkKGlkLCB0bSwgbWFwKSwgbWFwKTtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoVGlsZS50KTtcblxuLy8gdGFpbC1yZWN1cnNpdmVcbmxldCByZWMgbWsgPSAofm1hcD1lbXB0eSwgc2VnOiBTZWdtZW50LnQpOiB0ID0+XG4gIFNlZ21lbnQudGlsZXMoc2VnKVxuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAobWFwLCB0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KChtYXAsIGtpZCkgPT4gbWsofm1hcCwga2lkKSwgYWRkKHQuaWQsIHQsIG1hcCkpXG4gICAgICAgfSxcbiAgICAgICBtYXAsXG4gICAgICk7XG4iLCIvKiBNQUtFVEVSTVxuXG4gICAgIFRoaXMgcGFyc2VzIHRpbGUgc3RydWN0dXJlIGludG8gdGVybSBzdHJ1Y3R1cmUuXG4gICAgIFRoZSBsYW5ndWFnZSBzeW50YXgsIGFzIGRldGVybWluZWQgYnkgRm9ybS5yZSwgaXMgYW5cbiAgICAgb3BlbiwgZGF0YS1kcml2ZW4gc3lzdGVtLCBzbyBhZGRpbmcgYSBzeW50YWN0aWMgZm9ybVxuICAgICB0aGVyZSB3aWxsIG5vdCB0cmlnZ2VyIGEgc3RhdGljIGVycm9yIGhlcmU7IHlvdSBtdXN0XG4gICAgIHJlbWVtYmVyIHRvIGFkZCBhIGNhc2UgYmVsb3cgZm9yIGVhY2ggbmV3IGZvcm0gYWRkZWRcbiAgICAgdG8gdGhlIHN5bnRheC5cblxuICAgICBXQVJOSU5HOiBUaGlzIG1vZHVsZSBpcyBzdGlsbCBzdHJ1Y3R1cmFsbHkgaW4gZmx1eC5cbiAgICovXG5cbm9wZW4gVXRpbDtcbm9wZW4gVGVybTtcblxuLy8gVE9ETyBtYWtlIGxlc3MgaGFja3lcbmxldCB0b2tlbnMgPVxuICBQaWVjZS5nZXQoXG4gICAgXyA9PiBbXSxcbiAgICBfID0+IFtcIiBcIl0sXG4gICAgKHQ6IFRpbGUudCkgPT4gdC5zaGFyZHMgfD4gTGlzdC5tYXAoTGlzdC5udGgodC5sYWJlbCkpLFxuICApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRpbGUgPSAoSWQudCwgQWJhLnQoVG9rZW4udCwgdCkpO1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0aWxlcyA9IEFiYS50KHRpbGUsIHQpO1xubGV0IHNpbmdsZSA9IChpZCwgc3Vic3QpID0+IChbKGlkLCBzdWJzdCldLCBbXSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdW5zb3J0ZWQgPVxuICB8IE9wKHRpbGVzKVxuICB8IFByZSh0aWxlcywgdClcbiAgfCBQb3N0KHQsIHRpbGVzKVxuICB8IEJpbih0LCB0aWxlcywgdCk7XG5cbmxldCBpc19uYXJ5ID1cbiAgICAoaXNfc29ydDogYW55ID0+IG9wdGlvbignc29ydCksIGRlbGltOiBUb2tlbi50LCAoZGVsaW1zLCBraWRzKTogdGlsZXMpXG4gICAgOiBvcHRpb24obGlzdCgnc29ydCkpID0+XG4gIGlmIChkZWxpbXMgfD4gTGlzdC5tYXAoc25kKSB8PiBMaXN0LmZvcl9hbGwoKD09KSgoW2RlbGltXSwgW10pKSkpIHtcbiAgICBraWRzIHw+IExpc3QubWFwKGlzX3NvcnQpIHw+IE9wdFV0aWwuc2VxdWVuY2U7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IGlzX3R1cGxlX2V4cCA9IGlzX25hcnkoVGVybUJhc2UuQW55LmlzX2V4cCwgXCIsXCIpO1xubGV0IGlzX3R1cGxlX3BhdCA9IGlzX25hcnkoVGVybUJhc2UuQW55LmlzX3BhdCwgXCIsXCIpO1xubGV0IGlzX3R1cGxlX3R5cCA9IGlzX25hcnkoVGVybUJhc2UuQW55LmlzX3R5cCwgXCIsXCIpO1xubGV0IGlzX3R5cF9ic3VtID0gaXNfbmFyeShUZXJtQmFzZS5BbnkuaXNfdHlwLCBcIitcIik7XG5cbmxldCBpc19ncm91dCA9IHRpbGVzID0+XG4gIEFiYS5nZXRfYXModGlsZXMpIHw+IExpc3QubWFwKHNuZCkgfD4gTGlzdC5mb3JfYWxsKCg9PSkoKFtcIiBcIl0sIFtdKSkpO1xuXG5sZXQgaXNfcnVsZXMgPSAoKHRzLCBraWRzKTogdGlsZXMpOiBvcHRpb24oQWJhLnQoVVBhdC50LCBVRXhwLnQpKSA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCsgcHMgPVxuICAgIHRzXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgKF8sIChbXCJ8XCIsIFwiPT5cIl0sIFtQYXQocCldKSkgPT4gU29tZShwKVxuICAgICAgICAgfCBfID0+IE5vbmUsXG4gICAgICAgKVxuICAgIHw+IE9wdFV0aWwuc2VxdWVuY2VcbiAgYW5kKyBjbGF1c2VzID1cbiAgICBraWRzXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgRXhwKGNsYXVzZSkgPT4gU29tZShjbGF1c2UpXG4gICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gT3B0VXRpbC5zZXF1ZW5jZTtcbiAgQWJhLm1rKHBzLCBjbGF1c2VzKTtcbn07XG5cbmxldCBpZHNfb2ZfdGlsZXMgPSAodGlsZXM6IHRpbGVzKSA9PiBMaXN0Lm1hcChmc3QsIEFiYS5nZXRfYXModGlsZXMpKTtcbmxldCBpZHMgPVxuICBmdW5cbiAgfCBPcCh0aWxlcylcbiAgfCBQcmUodGlsZXMsIF8pXG4gIHwgUG9zdChfLCB0aWxlcylcbiAgfCBCaW4oXywgdGlsZXMsIF8pID0+IGlkc19vZl90aWxlcyh0aWxlcyk7XG5cbmxldCBraWRzX29mX3RpbGUgPSAoKF9pZCwgKF90b2tlbnMsIGtpZHMpKTogdGlsZSkgPT4ga2lkcztcbmxldCBraWRzX29mX3RpbGVzID0gKHRpbGVzOiB0aWxlcykgPT5cbiAgdGlsZXNcbiAgfD4gQWJhLm1hcF9hKGtpZHNfb2ZfdGlsZSlcbiAgfD4gQWJhLmpvaW4oRnVuLmlkLCBraWQgPT4gW2tpZF0pXG4gIHw+IExpc3QuY29uY2F0O1xubGV0IGtpZHNfb2ZfdW5zb3J0ZWQgPVxuICBmdW5cbiAgfCBPcCh0aWxlcykgPT4ga2lkc19vZl90aWxlcyh0aWxlcylcbiAgfCBQcmUodGlsZXMsIHIpID0+IGtpZHNfb2ZfdGlsZXModGlsZXMpIEAgW3JdXG4gIHwgUG9zdChsLCB0aWxlcykgPT4gW2xdIEAga2lkc19vZl90aWxlcyh0aWxlcylcbiAgfCBCaW4obCwgdGlsZXMsIHIpID0+IFtsXSBAIGtpZHNfb2ZfdGlsZXModGlsZXMpIEAgW3JdO1xuXG4vLyBOZWVkIHRoaXMgbWFwIHRvIGNvbGxlY3QgYWxsIHN0cnVjdHVyYWwgdGVybXMsXG4vLyBub3QganVzdCB0aGUgb25lcyByZWNvZ25pemVkIGluIFN0YXRpY3MuXG4vLyBUT0RPIHVuaGFja1xubGV0IG1hcDogcmVmKFRlcm1NYXAudCkgPSByZWYoSWQuTWFwLmVtcHR5KTtcbmxldCByZXR1cm4gPSAod3JhcCwgaWRzLCB0bSkgPT4ge1xuICBtYXAgOj0gVGVybU1hcC5hZGRfYWxsKGlkcywgd3JhcCh0bSksIG1hcF4pO1xuICB0bTtcbn07XG5cbmxldCBwYXJzZV9zdW1fdGVybTogVVR5cC50ID0+IFVUeXAudmFyaWFudCA9XG4gIGZ1blxuICB8IHt0ZXJtOiBWYXIoY3RyKSwgaWRzfSA9PiBWYXJpYW50KGN0ciwgaWRzLCBOb25lKVxuICB8IHt0ZXJtOiBBcCh7dGVybTogVmFyKGN0ciksIGlkczogaWRzX2N0cn0sIHUpLCBpZHM6IGlkc19hcH0gPT5cbiAgICBWYXJpYW50KGN0ciwgaWRzX2N0ciBAIGlkc19hcCwgU29tZSh1KSlcbiAgfCB0ID0+IEJhZEVudHJ5KHQpO1xuXG5sZXQgcmVjIGdvX3MgPSAoczogU29ydC50LCBza2VsOiBTa2VsLnQsIHNlZzogU2VnbWVudC50KTogYW55ID0+XG4gIHN3aXRjaCAocykge1xuICB8IFBhdCA9PiBQYXQocGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFRQYXQgPT4gVFBhdCh0cGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFR5cCA9PiBUeXAodHlwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IEV4cCA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFJ1bCA9PiBSdWwocnVsKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IE51bCA9PiBOdWwoKSAvL1RPRE9cbiAgfCBBbnkgPT5cbiAgICBsZXQgdG0gPSB1bnNvcnRlZChza2VsLCBzZWcpO1xuICAgIGxldCBpZHMgPSBpZHModG0pO1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuaGRfb3B0KGlkcykpIHtcbiAgICB8IE5vbmUgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFRpbGVNYXAuZmluZF9vcHQoaWQsIFRpbGVNYXAubWsoc2VnKSkpIHtcbiAgICAgIHwgTm9uZSA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIGlmICh0Lm1vbGQub3V0ID09IEFueSkge1xuICAgICAgICAgIEV4cChleHAodW5zb3J0ZWQoc2tlbCwgc2VnKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdvX3ModC5tb2xkLm91dCwgc2tlbCwgc2VnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuYW5kIGV4cCA9IHVuc29ydGVkID0+IHtcbiAgbGV0ICh0ZXJtLCBpbm5lcl9pZHMpID0gZXhwX3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKSBAIGlubmVyX2lkcztcbiAgcmV0dXJuKGUgPT4gRXhwKGUpLCBpZHMsIHtpZHMsIHRlcm19KTtcbn1cbmFuZCBleHBfdGVybTogdW5zb3J0ZWQgPT4gKFVFeHAudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodG06IFVFeHAudGVybSkgPT4gKHRtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVGVybS5VRXhwLmhvbGUoa2lkc19vZl91bnNvcnRlZCh1bnNvcnRlZCkpO1xuICBmdW5cbiAgfCBPcCh0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgLy8gc2luZ2xlLXRpbGUgY2FzZVxuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgc3dpdGNoICh0KSB7XG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfdHVwbGUodCkgPT4gcmV0KFRyaXYpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfbGlzdCh0KSA9PiByZXQoTGlzdExpdChbXSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfYm9vbCh0KSA9PiByZXQoQm9vbChib29sX29mX3N0cmluZyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfaW50KHQpID0+IHJldChJbnQoaW50X29mX3N0cmluZyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpID0+XG4gICAgICAgIHJldChTdHJpbmcoRm9ybS5zdHJpcF9xdW90ZXModCkpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2Zsb2F0KHQpID0+IHJldChGbG9hdChmbG9hdF9vZl9zdHJpbmcodCkpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3Zhcih0KSA9PiByZXQoVmFyKHQpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2N0cih0KSA9PiByZXQoQ29uc3RydWN0b3IodCkpXG4gICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW0V4cChib2R5KV0pID0+IHJldChQYXJlbnMoYm9keSkpXG4gICAgICB8IChbXCJbXCIsIFwiXVwiXSwgW0V4cChib2R5KV0pID0+XG4gICAgICAgIHN3aXRjaCAoYm9keSkge1xuICAgICAgICB8IHtpZHMsIHRlcm06IFR1cGxlKGVzKX0gPT4gKExpc3RMaXQoZXMpLCBpZHMpXG4gICAgICAgIHwgdGVybSA9PiByZXQoTGlzdExpdChbdGVybV0pKVxuICAgICAgICB9XG4gICAgICB8IChbXCJ0ZXN0XCIsIFwiZW5kXCJdLCBbRXhwKHRlc3QpXSkgPT4gcmV0KFRlc3QodGVzdCkpXG4gICAgICB8IChbXCJjYXNlXCIsIFwiZW5kXCJdLCBbUnVsKHtpZHMsIHRlcm06IFJ1bGVzKHNjcnV0LCBydWxlcyl9KV0pID0+IChcbiAgICAgICAgICBNYXRjaChzY3J1dCwgcnVsZXMpLFxuICAgICAgICAgIGlkcyxcbiAgICAgICAgKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiB0ICE9IFwiIFwiICYmICFGb3JtLmlzX2V4cGxpY2l0X2hvbGUodCkgPT5cbiAgICAgICAgcmV0KEludmFsaWQodCkpXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFByZSh0aWxlcywgRXhwKHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgIHwgKFtcIiRcIl0sIFtdKSA9PiBVbk9wKE1ldGEoVW5xdW90ZSksIHIpXG4gICAgICAgIHwgKFtcIi1cIl0sIFtdKSA9PiBVbk9wKEludChNaW51cyksIHIpXG4gICAgICAgIHwgKFtcIiFcIl0sIFtdKSA9PiBVbk9wKEJvb2woTm90KSwgcilcbiAgICAgICAgfCAoW1wiZnVuXCIsIFwiLT5cIl0sIFtQYXQocGF0KV0pID0+IEZ1bihwYXQsIHIpXG4gICAgICAgIHwgKFtcImxldFwiLCBcIj1cIiwgXCJpblwiXSwgW1BhdChwYXQpLCBFeHAoZGVmKV0pID0+IExldChwYXQsIGRlZiwgcilcbiAgICAgICAgfCAoW1wiaGlkZVwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcigoRXZhbCwgT25lKSwgZmlsdGVyLCByKVxuICAgICAgICB8IChbXCJldmFsXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKChFdmFsLCBBbGwpLCBmaWx0ZXIsIHIpXG4gICAgICAgIHwgKFtcInBhdXNlXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKChTdGVwLCBPbmUpLCBmaWx0ZXIsIHIpXG4gICAgICAgIHwgKFtcImRlYnVnXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKChTdGVwLCBBbGwpLCBmaWx0ZXIsIHIpXG4gICAgICAgIHwgKFtcInR5cGVcIiwgXCI9XCIsIFwiaW5cIl0sIFtUUGF0KHRwYXQpLCBUeXAoZGVmKV0pID0+XG4gICAgICAgICAgVHlBbGlhcyh0cGF0LCBkZWYsIHIpXG4gICAgICAgIHwgKFtcImlmXCIsIFwidGhlblwiLCBcImVsc2VcIl0sIFtFeHAoY29uZCksIEV4cChjb25zZXEpXSkgPT5cbiAgICAgICAgICBJZihjb25kLCBjb25zZXEsIHIpXG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFBvc3QoRXhwKGwpLCB0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgIHwgKFtcIigpXCJdLCBbXSkgPT5cbiAgICAgICAgcmV0KEFwKGwsIHtpZHM6IFtJZC5udWxsYXJ5X2FwX2ZsYWddLCB0ZXJtOiBUcml2fSkpXG4gICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW0V4cChhcmcpXSkgPT4gcmV0KEFwKGwsIGFyZykpXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihFeHAobCksIHRpbGVzLCBFeHAocikpIGFzIHRtID0+XG4gICAgc3dpdGNoIChpc190dXBsZV9leHAodGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT4gcmV0KFR1cGxlKFtsXSBAIGJldHdlZW5fa2lkcyBAIFtyXSkpXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgICAgcmV0KFxuICAgICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICAgIHwgKFtcIitcIl0sIFtdKSA9PiBCaW5PcChJbnQoUGx1cyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiLVwiXSwgW10pID0+IEJpbk9wKEludChNaW51cyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiKlwiXSwgW10pID0+IEJpbk9wKEludChUaW1lcyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiKipcIl0sIFtdKSA9PiBCaW5PcChJbnQoUG93ZXIpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi9cIl0sIFtdKSA9PiBCaW5PcChJbnQoRGl2aWRlKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI8XCJdLCBbXSkgPT4gQmluT3AoSW50KExlc3NUaGFuKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+XCJdLCBbXSkgPT4gQmluT3AoSW50KEdyZWF0ZXJUaGFuKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI8PVwiXSwgW10pID0+IEJpbk9wKEludChMZXNzVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj49XCJdLCBbXSkgPT4gQmluT3AoSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPT1cIl0sIFtdKSA9PiBCaW5PcChJbnQoRXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIhPVwiXSwgW10pID0+IEJpbk9wKEludChOb3RFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIisuXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoUGx1cyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiLS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChNaW51cyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiKi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChUaW1lcyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiLy5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChEaXZpZGUpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIioqLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KFBvd2VyKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI8LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KExlc3NUaGFuKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KEdyZWF0ZXJUaGFuKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI8PS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChMZXNzVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj49LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KEdyZWF0ZXJUaGFuT3JFcXVhbCksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPT0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoRXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIhPS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChOb3RFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiYmXCJdLCBbXSkgPT4gQmluT3AoQm9vbChBbmQpLCBsLCByKVxuICAgICAgICAgIHwgKFtcInx8XCJdLCBbXSkgPT4gQmluT3AoQm9vbChPciksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiOjpcIl0sIFtdKSA9PiBDb25zKGwsIHIpXG4gICAgICAgICAgfCAoW1wiO1wiXSwgW10pID0+IFNlcShsLCByKVxuICAgICAgICAgIHwgKFtcIisrXCJdLCBbXSkgPT4gQmluT3AoU3RyaW5nKENvbmNhdCksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiJD09XCJdLCBbXSkgPT4gQmluT3AoU3RyaW5nKEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wifD5cIl0sIFtdKSA9PiBQaXBlbGluZShsLCByKVxuICAgICAgICAgIHwgKFtcIkBcIl0sIFtdKSA9PiBMaXN0Q29uY2F0KGwsIHIpXG4gICAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cblxuYW5kIHBhdCA9IHVuc29ydGVkID0+IHtcbiAgbGV0ICh0ZXJtLCBpbm5lcl9pZHMpID0gcGF0X3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKSBAIGlubmVyX2lkcztcbiAgcmV0dXJuKHAgPT4gUGF0KHApLCBpZHMsIHtpZHMsIHRlcm19KTtcbn1cbmFuZCBwYXRfdGVybTogdW5zb3J0ZWQgPT4gKFVQYXQudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodGVybTogVVBhdC50ZXJtKSA9PiAodGVybSwgW10pO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFRlcm0uVVBhdC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0aWxlKV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHRpbGUpIHtcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IFRyaXZcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X2xpc3QodCkgPT4gTGlzdExpdChbXSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2Jvb2wodCkgPT4gQm9vbChib29sX29mX3N0cmluZyh0KSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2Zsb2F0KHQpID0+IEZsb2F0KGZsb2F0X29mX3N0cmluZyh0KSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2ludCh0KSA9PiBJbnQoaW50X29mX3N0cmluZyh0KSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSA9PlxuICAgICAgICAgIGxldCBzID0gUmUuU3RyLnN0cmluZ19hZnRlcih0LCAxKTtcbiAgICAgICAgICBsZXQgcyA9IFJlLlN0ci5zdHJpbmdfYmVmb3JlKHMsIFN0cmluZy5sZW5ndGgocykgLSAxKTtcbiAgICAgICAgICBTdHJpbmcocyk7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc192YXIodCkgPT4gVmFyKHQpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc193aWxkKHQpID0+IFdpbGRcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2N0cih0KSA9PiBDb25zdHJ1Y3Rvcih0KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIEludmFsaWQodClcbiAgICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtQYXQoYm9keSldKSA9PiBQYXJlbnMoYm9keSlcbiAgICAgICAgfCAoW1wiW1wiLCBcIl1cIl0sIFtQYXQoYm9keSldKSA9PlxuICAgICAgICAgIHN3aXRjaCAoYm9keSkge1xuICAgICAgICAgIHwge3Rlcm06IFR1cGxlKHBzKSwgX30gPT4gTGlzdExpdChwcylcbiAgICAgICAgICB8IHRlcm0gPT4gTGlzdExpdChbdGVybV0pXG4gICAgICAgICAgfVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQb3N0KFBhdChsKSwgdGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtQYXQoYXJnKV0pID0+IEFwKGwsIGFyZylcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKF8pIGFzIHRtID0+IHJldChob2xlKHRtKSlcbiAgfCBCaW4oUGF0KHApLCB0aWxlcywgVHlwKHR5KSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIChbXCI6XCJdLCBbXSkpXSwgW10pID0+IHJldChUeXBlQW5uKHAsIHR5KSlcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oUGF0KGwpLCB0aWxlcywgUGF0KHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAoaXNfdHVwbGVfcGF0KHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+IHJldChUdXBsZShbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIChbXCI6OlwiXSwgW10pKV0sIFtdKSA9PiByZXQoQ29ucyhsLCByKSlcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfVxuICB8IHRtID0+IHJldChob2xlKHRtKSk7XG59XG5hbmQgdHlwID0gdW5zb3J0ZWQgPT4ge1xuICBsZXQgKHRlcm0sIGlubmVyX2lkcykgPSB0eXBfdGVybSh1bnNvcnRlZCk7XG4gIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpIEAgaW5uZXJfaWRzO1xuICByZXR1cm4odHkgPT4gVHlwKHR5KSwgaWRzLCB7aWRzLCB0ZXJtfSk7XG59XG5hbmQgdHlwX3Rlcm06IHVuc29ydGVkID0+IChVVHlwLnRlcm0sIGxpc3QoSWQudCkpID0ge1xuICBsZXQgcmV0ID0gKHRlcm06IFVUeXAudGVybSkgPT4gKHRlcm0sIFtdKTtcbiAgbGV0IGhvbGUgPSB1bnNvcnRlZCA9PiBUZXJtLlVUeXAuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV90dXBsZSh0KSA9PiBUdXBsZShbXSlcbiAgICAgICAgfCAoW1wiQm9vbFwiXSwgW10pID0+IEJvb2xcbiAgICAgICAgfCAoW1wiSW50XCJdLCBbXSkgPT4gSW50XG4gICAgICAgIHwgKFtcIkZsb2F0XCJdLCBbXSkgPT4gRmxvYXRcbiAgICAgICAgfCAoW1wiU3RyaW5nXCJdLCBbXSkgPT4gU3RyaW5nXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc190eXBfdmFyKHQpID0+IFZhcih0KVxuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1R5cChib2R5KV0pID0+IFBhcmVucyhib2R5KVxuICAgICAgICB8IChbXCJbXCIsIFwiXVwiXSwgW1R5cChib2R5KV0pID0+IExpc3QoYm9keSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiB0ICE9IFwiIFwiICYmICFGb3JtLmlzX2V4cGxpY2l0X2hvbGUodCkgPT5cbiAgICAgICAgICBJbnZhbGlkKHQpXG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFBvc3QoVHlwKHQpLCB0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfLCAoW1wiKFwiLCBcIilcIl0sIFtUeXAodHlwKV0pKV0sIFtdKSA9PiByZXQoQXAodCwgdHlwKSlcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUodGlsZXMsIFR5cCh7dGVybTogU3VtKHQwKSwgaWRzfSkpIGFzIHRtID0+XG4gICAgLyogQ2FzZSBmb3IgbGVhZGluZyBwcmVmaXggKyBwcmVjZWVkaW5nIGEgc3VtICovXG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoXywgKFtcIitcIl0sIFtdKSldLCBbXSkgPT4gKFN1bSh0MCksIGlkcylcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUodGlsZXMsIFR5cCh0KSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfLCAoW1wiK1wiXSwgW10pKV0sIFtdKSA9PiByZXQoU3VtKFtwYXJzZV9zdW1fdGVybSh0KV0pKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihUeXAodDEpLCB0aWxlcywgVHlwKHQyKSkgYXMgdG0gd2hlbiBpc190eXBfYnN1bSh0aWxlcykgIT0gTm9uZSA9PlxuICAgIHN3aXRjaCAoaXNfdHlwX2JzdW0odGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT5cbiAgICAgIHJldChTdW0oTGlzdC5tYXAocGFyc2Vfc3VtX3Rlcm0sIFt0MV0gQCBiZXR3ZWVuX2tpZHMgQCBbdDJdKSkpXG4gICAgfCBOb25lID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgQmluKFR5cChsKSwgdGlsZXMsIFR5cChyKSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKGlzX3R1cGxlX3R5cCh0aWxlcykpIHtcbiAgICB8IFNvbWUoYmV0d2Vlbl9raWRzKSA9PiByZXQoVHVwbGUoW2xdIEAgYmV0d2Vlbl9raWRzIEAgW3JdKSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICAgIHwgKFsoX2lkLCAoW1wiLT5cIl0sIFtdKSldLCBbXSkgPT4gcmV0KEFycm93KGwsIHIpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cbmFuZCB0cGF0ID0gdW5zb3J0ZWQgPT4ge1xuICBsZXQgdGVybSA9IHRwYXRfdGVybSh1bnNvcnRlZCk7XG4gIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpO1xuICByZXR1cm4odHkgPT4gVFBhdCh0eSksIGlkcywge2lkcywgdGVybX0pO1xufVxuYW5kIHRwYXRfdGVybTogdW5zb3J0ZWQgPT4gVVRQYXQudGVybSA9IHtcbiAgbGV0IHJldCA9ICh0ZXJtOiBVVFBhdC50ZXJtKSA9PiB0ZXJtO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFRlcm0uVVRQYXQuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc190eXBfdmFyKHQpID0+IFZhcih0KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIEludmFsaWQodClcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgKFByZShfKSB8IFBvc3QoXykpIGFzIHRtID0+IHJldChob2xlKHRtKSlcbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuXG4vLyBhbmQgcnVsID0gdW5zb3J0ZWQgPT4ge1xuLy8gICBsZXQgdGVybSA9IHJ1bF90ZXJtKHVuc29ydGVkKTtcbi8vICAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCk7XG4vLyAgIHJldHVybihyID0+IFJ1bChyKSwgaWRzLCB7aWRzLCB0ZXJtfSk7XG4vLyB9XG5hbmQgcnVsID0gKHVuc29ydGVkOiB1bnNvcnRlZCk6IFVSdWwudCA9PiB7XG4gIGxldCBob2xlID0gVGVybS5VUnVsLkhvbGUoa2lkc19vZl91bnNvcnRlZCh1bnNvcnRlZCkpO1xuICBzd2l0Y2ggKGV4cCh1bnNvcnRlZCkpIHtcbiAgfCB7dGVybTogTXVsdGlIb2xlKF8pLCBffSA9PlxuICAgIHN3aXRjaCAodW5zb3J0ZWQpIHtcbiAgICB8IEJpbihFeHAoc2NydXQpLCB0aWxlcywgRXhwKGxhc3RfY2xhdXNlKSkgPT5cbiAgICAgIHN3aXRjaCAoaXNfcnVsZXModGlsZXMpKSB7XG4gICAgICB8IFNvbWUoKHBzLCBsZWFkaW5nX2NsYXVzZXMpKSA9PiB7XG4gICAgICAgICAgaWRzOiBpZHModW5zb3J0ZWQpLFxuICAgICAgICAgIHRlcm06XG4gICAgICAgICAgICBSdWxlcyhzY3J1dCwgTGlzdC5jb21iaW5lKHBzLCBsZWFkaW5nX2NsYXVzZXMgQCBbbGFzdF9jbGF1c2VdKSksXG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PiB7aWRzOiBpZHModW5zb3J0ZWQpLCB0ZXJtOiBob2xlfVxuICAgICAgfVxuICAgIHwgXyA9PiB7aWRzOiBpZHModW5zb3J0ZWQpLCB0ZXJtOiBob2xlfVxuICAgIH1cbiAgfCBlID0+IHtpZHM6IFtdLCB0ZXJtOiBSdWxlcyhlLCBbXSl9XG4gIH07XG59XG5cbmFuZCB1bnNvcnRlZCA9IChza2VsOiBTa2VsLnQsIHNlZzogU2VnbWVudC50KTogdW5zb3J0ZWQgPT4ge1xuICBsZXQgdGlsZV9raWRzID0gKHA6IFBpZWNlLnQpOiBsaXN0KGFueSkgPT5cbiAgICBzd2l0Y2ggKHApIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW11cbiAgICB8IFRpbGUoe21vbGQsIHNoYXJkcywgY2hpbGRyZW4sIF99KSA9PlxuICAgICAgQWJhLmFiYV90cmlwbGVzKEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKSlcbiAgICAgIHw+IExpc3QubWFwKCgobCwga2lkLCByKSkgPT4ge1xuICAgICAgICAgICBsZXQgcyA9IGwgKyAxID09IHIgPyBMaXN0Lm50aChtb2xkLmluXywgbCkgOiBTb3J0LkFueTtcbiAgICAgICAgICAgZ29fcyhzLCBTZWdtZW50LnNrZWwoa2lkKSwga2lkKTtcbiAgICAgICAgIH0pXG4gICAgfTtcblxuICBsZXQgcm9vdDogQWJhLnQoUGllY2UudCwgU2tlbC50KSA9XG4gICAgU2tlbC5yb290KHNrZWwpIHw+IEFiYS5tYXBfYShMaXN0Lm50aChzZWcpKTtcblxuICAvLyBtYWludGFpbmluZyB0aGlzIGFsdGVybmF0aW5nIG9yZGVyZWQgc3RydWN0dXJlXG4gIC8vIGZvciBoYW5kbGluZyBpbmNvbXBsZXRlIGZvcm1zIGxhdGVyXG4gIGxldCB0aWxlcyA9XG4gICAgcm9vdFxuICAgIHw+IEFiYS5tYXBfYWJhcygoKHBfbCwga2lkLCBwX3IpKSA9PiB7XG4gICAgICAgICBsZXQgKF8sIHNfbCkgPSBQaWVjZS5uaWJfc29ydHMocF9sKTtcbiAgICAgICAgIGxldCAoc19yLCBfKSA9IFBpZWNlLm5pYl9zb3J0cyhwX3IpO1xuICAgICAgICAgbGV0IHMgPSBzX2wgPT0gc19yID8gc19sIDogU29ydC5Bbnk7XG4gICAgICAgICBnb19zKHMsIGtpZCwgc2VnKTtcbiAgICAgICB9KVxuICAgIHw+IEFiYS5tYXBfYShwXG4gICAgICAgICAvLyBUT0RPIHRocm93IHByb3BlciBleGNlcHRpb25cbiAgICAgICAgID0+IChQaWVjZS5pZChwKSwgQWJhLm1rKHRva2VucyhwKSwgdGlsZV9raWRzKHApKSkpO1xuXG4gIGxldCAobF9zb3J0LCByX3NvcnQpID0ge1xuICAgIGxldCBwX2wgPSBBYmEuZmlyc3RfYShyb290KTtcbiAgICBsZXQgcF9yID0gQWJhLmxhc3RfYShyb290KTtcbiAgICAvLyBUT0RPIHRocm93IHByb3BlciBleGNlcHRpb25zXG4gICAgbGV0IChsLCBfKSA9IE9wdGlvbi5nZXQoUGllY2UubmlicyhwX2wpKTtcbiAgICBsZXQgKF8sIHIpID0gT3B0aW9uLmdldChQaWVjZS5uaWJzKHBfcikpO1xuICAgIChsLnNvcnQsIHIuc29ydCk7XG4gIH07XG5cbiAgc3dpdGNoIChza2VsKSB7XG4gIHwgT3AoXykgPT4gT3AodGlsZXMpXG4gIHwgUHJlKF8sIHIpID0+IFByZSh0aWxlcywgZ29fcyhyX3NvcnQsIHIsIHNlZykpXG4gIHwgUG9zdChsLCBfKSA9PiBQb3N0KGdvX3MobF9zb3J0LCBsLCBzZWcpLCB0aWxlcylcbiAgfCBCaW4obCwgXywgcikgPT4gQmluKGdvX3MobF9zb3J0LCBsLCBzZWcpLCB0aWxlcywgZ29fcyhyX3NvcnQsIHIsIHNlZykpXG4gIH07XG59O1xuXG5sZXQgZ28gPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLFxuICAgIHNlZyA9PiB7XG4gICAgICBtYXAgOj0gVGVybU1hcC5lbXB0eTtcbiAgICAgIGxldCBlID0gZXhwKHVuc29ydGVkKFNlZ21lbnQuc2tlbChzZWcpLCBzZWcpKTtcbiAgICAgIChlLCBtYXBeKTtcbiAgICB9LFxuICApO1xuXG5sZXQgZnJvbV96aXAgPSAofmR1bXBfYmFja3BhY2s6IGJvb2wsIH5lcmFzZV9idWZmZXI6IGJvb2wsIHo6IFppcHBlci50KSA9PiB7XG4gIGxldCBzZWcgPSBaaXBwZXIuc21hcnRfc2VnKH5kdW1wX2JhY2twYWNrLCB+ZXJhc2VfYnVmZmVyLCB6KTtcbiAgZ28oc2VnKTtcbn07XG5cbmxldCBmcm9tX3ppcF9mb3JfdmlldyA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsXG4gICAgZnJvbV96aXAofmR1bXBfYmFja3BhY2s9ZmFsc2UsIH5lcmFzZV9idWZmZXI9dHJ1ZSksXG4gICk7XG5cbmxldCBmcm9tX3ppcF9mb3Jfc2VtID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMCxcbiAgICBmcm9tX3ppcCh+ZHVtcF9iYWNrcGFjaz10cnVlLCB+ZXJhc2VfYnVmZmVyPXRydWUpLFxuICApO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyoqXG4gIFRoZSByZXN1bHQgb2YgYSBwcm9ncmFtIGV2YWx1YXRpb24uIEluY2x1ZGVzIHRoZSB7IXR5cGU6RXZhbHVhdG9yUmVzdWx0LnR9LFxuICB0aGUgeyF0eXBlOkV2YWx1YXRvclN0YXRlfSwgYW5kIHRoZSB0cmFja2VkIGhvbGUgaW5zdGFuY2UgaW5mb3JtYXRpb25cbiAgKHshdHlwZTpIb2xlSW5zdGFuY2VJbmZvLnR9KS4gQ29uc3RydWN0ZWQgYnkgeyF2YWw6UHJvZ3JhbS5nZXRfcmVzdWx0fS5cbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpbm5lciA9IHtcbiAgcmVzdWx0OiBFdmFsdWF0b3JSZXN1bHQudCxcbiAgc3RhdGU6IEV2YWx1YXRvclN0YXRlLnQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yID1cbiAgfCBUaW1lb3V0XG4gIHwgRXZhdWxhdG9yRXJyb3IoRXZhbHVhdG9yRXJyb3IudClcbiAgfCBVbmtub3duRXhjZXB0aW9uKHN0cmluZyk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgT2ZmKERIRXhwLnQpIC8vZWxhYlxuICB8IFJlc3VsdE9rKGlubmVyKVxuICB8IFJlc3VsdEZhaWwoZXJyb3IpXG4gIHwgUmVzdWx0UGVuZGluZztcblxubGV0IGdldF9kaGV4cCA9IChyOiBpbm5lcikgPT4gRXZhbHVhdG9yUmVzdWx0LnVuYm94KHIucmVzdWx0KTtcbmxldCBnZXRfc3RhdGUgPSAocjogaW5uZXIpID0+IHIuc3RhdGU7XG4iLCJtb2R1bGUgU3RhdGljcyA9IHtcbiAgbGV0IG1rX21hcCcgPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIGUgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKFxuICAgICAgICB+Y3R4PUJ1aWx0aW5zLmN0eF9pbml0LFxuICAgICAgICB+YW5jZXN0b3JzPVtdLFxuICAgICAgICBlLFxuICAgICAgICBJZC5NYXAuZW1wdHksXG4gICAgICApXG4gICAgICB8PiBzbmRcbiAgICB9KTtcbiAgbGV0IG1rX21hcCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljcyA/IG1rX21hcCcoZXhwKSA6IElkLk1hcC5lbXB0eTtcblxuICBsZXQgbWtfbWFwX2FuZF9pbmZvX2N0eCA9XG4gICAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgKGN0eCwgZSkgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnM9W10sIGUsIElkLk1hcC5lbXB0eSlcbiAgICB9KTtcbiAgbGV0IG1rX21hcF9hbmRfaW5mb19jdHggPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGN0eCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljc1xuICAgICAgPyB7XG4gICAgICAgIGxldCAoaW5mbywgbWFwKSA9IG1rX21hcF9hbmRfaW5mb19jdHgoY3R4LCBleHApO1xuICAgICAgICAoU29tZShpbmZvKSwgbWFwKTtcbiAgICAgIH1cbiAgICAgIDogKE5vbmUsIElkLk1hcC5lbXB0eSk7XG5cbiAgbGV0IG1rX21hcF9jdHggPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIChjdHgsIGUpID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzPVtdLCBlLCBJZC5NYXAuZW1wdHkpIHw+IHNuZFxuICAgIH0pO1xuICBsZXQgbWtfbWFwX2N0eCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgY3R4LCBleHApID0+XG4gICAgY29yZS5zdGF0aWNzID8gbWtfbWFwX2N0eChjdHgsIGV4cCkgOiBJZC5NYXAuZW1wdHk7XG59O1xuXG5sZXQgZGhfZXJyID0gKGVycm9yOiBzdHJpbmcpOiBESEV4cC50ID0+IEJvdW5kVmFyKGVycm9yKTtcblxubGV0IGVsYWJvcmF0ZSA9XG4gIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIEVsYWJvcmF0b3IudWV4cF9lbGFiKTtcblxuZXhjZXB0aW9uIERvZXNOb3RFbGFib3JhdGU7XG5sZXQgZWxhYm9yYXRlID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIG1hcCwgdGVybSk6IERIRXhwLnQgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLnN0YXRpY3MgPT4gZGhfZXJyKFwiU3RhdGljcyBkaXNhYmxlZFwiKVxuICB8IF8gd2hlbiAhc2V0dGluZ3MuZHluYW1pY3MgJiYgIXNldHRpbmdzLmVsYWJvcmF0ZSA9PlxuICAgIGRoX2VycihcIkR5bmFtaWNzICYgRWxhYm9yYXRpb24gZGlzYWJsZWRcIilcbiAgfCBfID0+XG4gICAgc3dpdGNoIChlbGFib3JhdGUobWFwLCB0ZXJtKSkge1xuICAgIHwgRG9lc05vdEVsYWJvcmF0ZSA9PiBkaF9lcnIoXCJFbGFib3JhdGlvbiByZXR1cm5zIE5vbmVcIilcbiAgICB8IEVsYWJvcmF0ZXMoZCwgXywgXykgPT4gZFxuICAgIH1cbiAgfTtcblxubGV0IGV2YWx1YXRlID1cbiAgICAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgfmVudj1CdWlsdGlucy5lbnZfaW5pdCwgZWxhYjogREhFeHAudClcbiAgICA6IFByb2dyYW1SZXN1bHQudCA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiAhc2V0dGluZ3MuZHluYW1pY3MgPT4gT2ZmKGVsYWIpXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoRXZhbHVhdG9yLmV2YWx1YXRlKGVudiwgZWxhYikpIHtcbiAgICB8IGV4Y2VwdGlvbiAoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKHJlYXNvbikpID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiRXZhbHVhdG9yRXJyb3I6XCIgKysgRXZhbHVhdG9yRXJyb3Iuc2hvdyhyZWFzb24pKTtcbiAgICAgIFJlc3VsdEZhaWwoRXZhdWxhdG9yRXJyb3IocmVhc29uKSk7XG4gICAgfCBleGNlcHRpb24gZXhuID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiRVhOOlwiICsrIFByaW50ZXhjLnRvX3N0cmluZyhleG4pKTtcbiAgICAgIFJlc3VsdEZhaWwoVW5rbm93bkV4Y2VwdGlvbihQcmludGV4Yy50b19zdHJpbmcoZXhuKSkpO1xuICAgIHwgKHN0YXRlLCByZXN1bHQpID0+IFJlc3VsdE9rKHtyZXN1bHQsIHN0YXRlfSlcbiAgICB9XG4gIH07XG5cbmxldCBldmFsX3ogPVxuICAgIChcbiAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICB+Y3R4X2luaXQ6IEN0eC50LFxuICAgICAgfmVudl9pbml0OiBFbnZpcm9ubWVudC50LFxuICAgICAgejogWmlwcGVyLnQsXG4gICAgKVxuICAgIDogUHJvZ3JhbVJlc3VsdC50ID0+IHtcbiAgbGV0ICh0ZXJtLCBfKSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeik7XG4gIGxldCBpbmZvX21hcCA9IFN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncywgY3R4X2luaXQsIHRlcm0pO1xuICBsZXQgZCA9IGVsYWJvcmF0ZSh+c2V0dGluZ3MsIGluZm9fbWFwLCB0ZXJtKTtcbiAgZXZhbHVhdGUofnNldHRpbmdzLCB+ZW52PWVudl9pbml0LCBkKTtcbn07XG4iLCJvcGVuIFV0aWwuT3B0VXRpbC5TeW50YXg7XG5vcGVuIFN1Z2dlc3Rpb247XG5cbi8qIFN1Z2dlc3QgdGhlIHRva2VuIGF0IHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLCBpZiB3ZSBjYW4gcHV0IGl0IGRvd24gKi9cbmxldCBzdWdnZXN0X2JhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgLyogTm90ZTogU29ydCBjaGVjayB1bm5lY2Vzc2FyeSBoZXJlIGFzIHdvdWxkbid0IGJlIGFibGUgdG8gcHV0IGRvd24gKi9cbiAgc3dpdGNoICh6LmJhY2twYWNrKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbe2NvbnRlbnQsIF99LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgW1RpbGUoe2xhYmVsLCBzaGFyZHM6IFtpZHhdLCBffSldIHdoZW4gWmlwcGVyLmNhbl9wdXRfZG93bih6KSA9PiBbXG4gICAgICAgIHtjb250ZW50OiBMaXN0Lm50aChsYWJlbCwgaWR4KSwgc3RyYXRlZ3k6IEFueShGcm9tQmFja3BhY2spfSxcbiAgICAgIF1cbiAgICB8IF8gPT4gW11cbiAgICB9XG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdCA9IChjaTogSW5mby50LCB6OiBaaXBwZXIudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIC8qIE5PVEU6IFNvcnRpbmcgZW5zdXJlcyB0aGF0IGlmIHdlIGhhdmUgYW4gZXhhY3QgbWF0Y2ggYWxyZWFkeSxcbiAgICogd2Ugd29uJ3Qgc3VnZ2VzdCBleHRlbmRpbmcgaXQsIGJ1dCBzdHJhaWdodC11cCBsZXhpY2FsIHNvcnRpbmdcbiAgICogbWF5IG5vdCBiZSBkZXNpcmFibGUgaW4gb3RoZXIgd2F5cywgZm9yIGV4YW1wbGUgbWF5YmUgd2Ugd2FudFxuICAgKiByZWNlbmN5IGJpYXMgaW4gY3R4LiBSZXZpc2l0IHRoaXMgbGF0ZXIuIEknbSBzb3J0aW5nIGJlZm9yZVxuICAgKiBjb21iaW5hdGlvbiBiZWNhdXNlIHdlIHdhbnQgYmFja3BhY2sgY2FuZGlkYXRlcyB0byBzaG93IHVwIGZpcnN0ICovXG4gIHN1Z2dlc3RfYmFja3BhY2soeilcbiAgQCAoXG4gICAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9vcGVyYW5kKGNpKVxuICAgIEAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9sZWFkaW5nKGNpKVxuICAgIEAgQXNzaXN0YW50Q3R4LnN1Z2dlc3RfdmFyaWFibGUoY2kpXG4gICAgQCBBc3Npc3RhbnRDdHguc3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUoY2kpXG4gICAgfD4gTGlzdC5zb3J0KFN1Z2dlc3Rpb24uY29tcGFyZSlcbiAgKVxuICBAIChBc3Npc3RhbnRGb3Jtcy5zdWdnZXN0X29wZXJhdG9yKGNpKSB8PiBMaXN0LnNvcnQoU3VnZ2VzdGlvbi5jb21wYXJlKSk7XG59O1xuXG4vKiBJZiB0aGVyZSBpcyBhIG1vbm90aWxlIHRvIHRoZSBsZWZ0IG9mIHRoZSBjYXJldCwgcmV0dXJuIGl0LiBXZVxuICogY3VycmVudGx5IG9ubHkgbWFrZSBzdWdnZXN0aW9ucyBpbiBzdWNoIHNpdHVhdGlvbnMgKi9cbmxldCB0b2tlbl90b19sZWZ0ID0gKHo6IFppcHBlci50KTogb3B0aW9uKHN0cmluZykgPT5cbiAgc3dpdGNoIChcbiAgICB6LmNhcmV0LFxuICAgIHoucmVsYXRpdmVzLnNpYmxpbmdzIHw+IGZzdCB8PiBMaXN0LnJldixcbiAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyB8PiBzbmQsXG4gICkge1xuICB8IChPdXRlciwgW1RpbGUoe2xhYmVsOiBbdG9rX3RvX2xlZnRdLCBffSksIC4uLl9dLCBfKSA9PlxuICAgIFNvbWUodG9rX3RvX2xlZnQpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIFRoZSBzZWxlY3Rpb24gYnVmZmVyIHVzZWQgYnkgVHlEaSBpcyBjdXJyZW50bHkgdW5zdHJ1Y3R1cmVkOyBpdCBzaW1wbHlcbiAqIGhvbGRzIGFuIHVucGFyc2VkIHN0cmluZywgd2hpY2ggaXMgcGFyc2VkIHZpYSB0aGUgc2FtZSBtZWNoYW5pc20gYXNcbiAqIFBhc3RlIG9ubHkgd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYWNjZXB0ZWQuICovXG5sZXQgbWtfdW5wYXJzZWRfYnVmZmVyID1cbiAgICAofnNvcnQ6IFNvcnQudCwgc2liczogU2libGluZ3MudCwgdDogVG9rZW4udCk6IFNlZ21lbnQudCA9PiB7XG4gIGxldCBtb2xkID0gU2libGluZ3MubW9sZF9maXR0aW5nX2JldHdlZW4oc29ydCwgUHJlY2VkZW5jZS5tYXgsIHNpYnMpO1xuICBbVGlsZSh7aWQ6IElkLm1rKCksIGxhYmVsOiBbdF0sIHNoYXJkczogWzBdLCBjaGlsZHJlbjogW10sIG1vbGR9KV07XG59O1xuXG4vKiBJZiAnY3VycmVudCcgaXMgYSBwcm9wZXIgcHJlZml4IG9mICdjYW5kaWRhdGUnLCByZXR1cm4gdGhlXG4gKiBzdWZmaXggc3VjaCB0aGF0IGN1cnJlbnQgKysgc3VmZml4ID09IGNhbmRpZGF0ZSAqL1xubGV0IHN1ZmZpeF9vZiA9IChjYW5kaWRhdGU6IFRva2VuLnQsIGN1cnJlbnQ6IFRva2VuLnQpOiBvcHRpb24oVG9rZW4udCkgPT4ge1xuICBsZXQgY2FuZGlkYXRlX3N1ZmZpeCA9XG4gICAgU3RyaW5nLnN1YihcbiAgICAgIGNhbmRpZGF0ZSxcbiAgICAgIFN0cmluZy5sZW5ndGgoY3VycmVudCksXG4gICAgICBTdHJpbmcubGVuZ3RoKGNhbmRpZGF0ZSkgLSBTdHJpbmcubGVuZ3RoKGN1cnJlbnQpLFxuICAgICk7XG4gIGNhbmRpZGF0ZV9zdWZmaXggPT0gXCJcIiA/IE5vbmUgOiBTb21lKGNhbmRpZGF0ZV9zdWZmaXgpO1xufTtcblxuLyogUEVSRjogVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUgKi9cbmxldCB6X3RvX2NpID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5jdHg6IEN0eC50LCB6OiBaaXBwZXIudCkgPT4ge1xuICBsZXQgbWFwID1cbiAgICB6XG4gICAgfD4gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbVxuICAgIHw+IGZzdFxuICAgIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MsIGN0eCk7XG4gIGxldCogaW5kZXggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gIElkLk1hcC5maW5kX29wdChpbmRleCwgbWFwKTtcbn07XG5cbi8qIFJldHVybnMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgc3VnZ2VzdGlvbiBidWZmZXIgKi9cbmxldCBnZXRfYnVmZmVyID0gKHo6IFppcHBlci50KTogb3B0aW9uKFRva2VuLnQpID0+XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSwgei5zZWxlY3Rpb24uY29udGVudCkge1xuICB8IChCdWZmZXIoVW5wYXJzZWQpLCBbVGlsZSh7bGFiZWw6IFtjb21wbGV0aW9uXSwgX30pXSkgPT5cbiAgICBTb21lKGNvbXBsZXRpb24pXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIFBvcHVsYXRlcyB0aGUgc3VnZ2VzdGlvbiBidWZmZXIgd2l0aCBhIHR5cGUtZGlyZWN0ZWQgc3VnZ2VzdGlvbiAqL1xubGV0IHNldF9idWZmZXIgPSAofnNldHRpbmdzLCB+Y3R4OiBDdHgudCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgbGV0KiB0b2tfdG9fbGVmdCA9IHRva2VuX3RvX2xlZnQoeik7XG4gIGxldCogY2kgPSB6X3RvX2NpKH5zZXR0aW5ncywgfmN0eCwgeik7XG4gIGxldCBzdWdnZXN0aW9ucyA9IHN1Z2dlc3QoY2ksIHopO1xuICBsZXQgc3VnZ2VzdGlvbnMgPVxuICAgIHN1Z2dlc3Rpb25zXG4gICAgfD4gTGlzdC5maWx0ZXIoKHtjb250ZW50LCBffTogU3VnZ2VzdGlvbi50KSA9PlxuICAgICAgICAgU3RyaW5nLnN0YXJ0c193aXRoKH5wcmVmaXg9dG9rX3RvX2xlZnQsIGNvbnRlbnQpXG4gICAgICAgKTtcbiAgbGV0KiB0b3Bfc3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25zIHw+IFV0aWwuTGlzdFV0aWwuaGRfb3B0O1xuICBsZXQqIHN1Z2dlc3Rpb25fc3VmZml4ID0gc3VmZml4X29mKHRvcF9zdWdnZXN0aW9uLmNvbnRlbnQsIHRva190b19sZWZ0KTtcbiAgbGV0IGNvbnRlbnQgPVxuICAgIG1rX3VucGFyc2VkX2J1ZmZlcihcbiAgICAgIH5zb3J0PUluZm8uc29ydF9vZihjaSksXG4gICAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyxcbiAgICAgIHN1Z2dlc3Rpb25fc3VmZml4LFxuICAgICk7XG4gIGxldCB6ID0gWmlwcGVyLnNldF9idWZmZXIoeiwgfmNvbnRlbnQsIH5tb2RlPVVucGFyc2VkKTtcbiAgU29tZSh6KTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHRlc3RfbWFwOiBUZXN0TWFwLnQsXG4gIHN0YXR1c2VzOiBsaXN0KFRlc3RTdGF0dXMudCksXG4gIGRlc2NyaXB0aW9uczogbGlzdChzdHJpbmcpLFxuICB0b3RhbDogaW50LFxuICBwYXNzaW5nOiBpbnQsXG4gIGZhaWxpbmc6IGludCxcbiAgdW5maW5pc2hlZDogaW50LFxufTtcblxubGV0IG1rX3Jlc3VsdHMgPSAofmRlc2NyaXB0aW9ucz1bXSwgdGVzdF9tYXA6IFRlc3RNYXAudCk6IHQgPT4ge1xuICB0ZXN0X21hcCxcbiAgc3RhdHVzZXM6IHRlc3RfbWFwIHw+IExpc3QubWFwKHIgPT4gciB8PiBzbmQgfD4gVGVzdE1hcC5qb2ludF9zdGF0dXMpLFxuICBkZXNjcmlwdGlvbnMsXG4gIHRvdGFsOiBUZXN0TWFwLmNvdW50KHRlc3RfbWFwKSxcbiAgcGFzc2luZzogVGVzdE1hcC5jb3VudF9zdGF0dXMoUGFzcywgdGVzdF9tYXApLFxuICBmYWlsaW5nOiBUZXN0TWFwLmNvdW50X3N0YXR1cyhGYWlsLCB0ZXN0X21hcCksXG4gIHVuZmluaXNoZWQ6IFRlc3RNYXAuY291bnRfc3RhdHVzKEluZGV0LCB0ZXN0X21hcCksXG59O1xuXG5sZXQgcmVzdWx0X3N1bW1hcnlfc3RyID1cbiAgICAofm4sIH5wLCB+cSwgfm5fc3RyLCB+bnNfc3RyLCB+cF9zdHIsIH5xX3N0ciwgfnJfc3RyKTogc3RyaW5nID0+IHtcbiAgbGV0IG9uZV9wID0gXCJvbmUgaXMgXCIgKysgcF9zdHIgKysgXCIgXCI7XG4gIGxldCBvbmVfcSA9IFwib25lIGlzIFwiICsrIHFfc3RyICsrIFwiIFwiO1xuICBsZXQgbW55X3AgPSBQcmludGYuc3ByaW50ZihcIiVkIGFyZSAlcyBcIiwgcCwgcF9zdHIpO1xuICBsZXQgbW55X3EgPSBQcmludGYuc3ByaW50ZihcIiVkIGFyZSAlcyBcIiwgcSwgcV9zdHIpO1xuICBsZXQgb2ZfbiA9IFByaW50Zi5zcHJpbnRmKFwiT3V0IG9mICVkICVzLCBcIiwgbiwgbnNfc3RyKTtcbiAgc3dpdGNoIChuLCBwLCBxKSB7XG4gIHwgKDAsIF8sIF8pID0+IFwiTm8gXCIgKysgbnNfc3RyICsrIFwiIGF2YWlsYWJsZS5cIlxuICB8IChfLCAwLCAwKSA9PiBcIkFsbCBcIiArKyBuc19zdHIgKysgXCIgXCIgKysgcl9zdHIgKysgXCIhIFwiXG4gIHwgKG4sIF8sIGMpIHdoZW4gbiA9PSBjID0+IFwiQWxsIFwiICsrIG5zX3N0ciArKyBcIiBcIiArKyBxX3N0ciArKyBcIiBcIlxuICB8IChuLCBmLCBfKSB3aGVuIG4gPT0gZiA9PiBcIkFsbCBcIiArKyBuc19zdHIgKysgXCIgXCIgKysgcF9zdHIgKysgXCIgXCJcbiAgfCAoMSwgMCwgMSkgPT4gXCJPbmUgXCIgKysgbl9zdHIgKysgXCIgXCIgKysgcV9zdHIgKysgXCIgXCJcbiAgfCAoMSwgMSwgMCkgPT4gXCJPbmUgXCIgKysgbl9zdHIgKysgXCIgXCIgKysgcF9zdHIgKysgXCIgXCJcbiAgfCAoMiwgMSwgMSkgPT5cbiAgICBcIk9uZSBcIiArKyBuX3N0ciArKyBcIiBcIiArKyBwX3N0ciArKyBcIiBhbmQgb25lIFwiICsrIHFfc3RyICsrIFwiIFwiXG4gIHwgKF8sIDAsIDEpID0+IG9mX24gKysgb25lX3FcbiAgfCAoXywgMSwgMCkgPT4gb2ZfbiArKyBvbmVfcFxuICB8IChfLCAxLCAxKSA9PiBvZl9uICsrIG9uZV9wICsrIFwiYW5kIFwiICsrIG9uZV9xXG4gIHwgKF8sIDEsIF8pID0+IG9mX24gKysgb25lX3AgKysgXCJhbmQgXCIgKysgbW55X3FcbiAgfCAoXywgXywgMSkgPT4gb2ZfbiArKyBtbnlfcCArKyBcImFuZCBcIiArKyBvbmVfcVxuICB8IChfLCAwLCBfKSA9PiBvZl9uICsrIG1ueV9xXG4gIHwgKF8sIF8sIDApID0+IG9mX24gKysgbW55X3BcbiAgfCAoXywgXywgXykgPT4gb2ZfbiArKyBtbnlfcCArKyBcImFuZCBcIiArKyBtbnlfcVxuICB9O1xufTtcblxubGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiB0KTogc3RyaW5nID0+XG4gIHJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgfnE9dGVzdF9yZXN1bHRzLnVuZmluaXNoZWQsXG4gICAgfm5fc3RyPVwidGVzdFwiLFxuICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgIH5wX3N0cj1cImZhaWxpbmdcIixcbiAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgfnJfc3RyPVwicGFzc2luZ1wiLFxuICApO1xuIiwib3BlbiBUcmFuc2l0aW9uO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0ZXAgPSB7XG4gIGQ6IERIRXhwLnQsIC8vIHRlY2huaWNhbGx5IGNhbiBiZSBjYWxjdWxhdGVkIGZyb20gZF9sb2MgYW5kIGN0eFxuICBzdGF0ZTogRXZhbHVhdG9yU3RhdGUudCxcbiAgZF9sb2M6IERIRXhwLnQsIC8vIHRoZSBleHByZXNzaW9uIGF0IHRoZSBsb2NhdGlvbiBnaXZlbiBieSBjdHhcbiAgY3R4OiBFdmFsQ3R4LnQsXG4gIGtuZDogc3RlcF9raW5kLFxufTtcblxubGV0IHVud3JhcCA9IChzdGVwLCBzZWw6IEV2YWxDdHguY2xzKSA9PlxuICBFdmFsQ3R4LnVud3JhcChzdGVwLmN0eCwgc2VsKSB8PiBPcHRpb24ubWFwKGN0eCA9PiB7Li4uc3RlcCwgY3R4fSk7XG5cbmxldCB1bndyYXBfdW5zYWZlID0gKHN0ZXAsIHNlbDogRXZhbEN0eC5jbHMpID0+XG4gIC8vIFRPRE9bTWF0dF06IGJyaW5nIGJhY2sgXCJzYWZlXCIgdmVyc2lvblxuICBFdmFsQ3R4LnVud3JhcChzdGVwLmN0eCwgc2VsKSB8PiBPcHRpb24ubWFwKGN0eCA9PiB7Li4uc3RlcCwgY3R4fSk7XG5cbm1vZHVsZSBFdmFsT2JqID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCAvLyB0ZWNobmljYWxseSBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIGN0eFxuICAgIGRfbG9jOiBESEV4cC50LFxuICAgIGN0eDogRXZhbEN0eC50LFxuICAgIGtuZDogc3RlcF9raW5kLFxuICB9O1xuXG4gIGxldCBtayA9IChjdHgsIGVudiwgZF9sb2MsIGtuZCkgPT4ge2N0eCwgZW52LCBkX2xvYywga25kfTtcblxuICBsZXQgZ2V0X2N0eCA9IChvYmo6IHQpOiBFdmFsQ3R4LnQgPT4ge1xuICAgIG9iai5jdHg7XG4gIH07XG4gIGxldCBnZXRfa2luZCA9IChvYmo6IHQpOiBzdGVwX2tpbmQgPT4gb2JqLmtuZDtcblxuICBsZXQgd3JhcCA9IChmOiBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBvYmo6IHQpID0+IHtcbiAgICAuLi5vYmosXG4gICAgY3R4OiBvYmouY3R4IHw+IGYsXG4gIH07XG59O1xuXG5tb2R1bGUgRGVjb21wb3NlID0ge1xuICBtb2R1bGUgUmVzdWx0ID0ge1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWVcbiAgICAgIHwgU3RlcChsaXN0KEV2YWxPYmoudCkpO1xuXG4gICAgbGV0IHVuYm94ID0gKHI6IHQpOiBsaXN0KEV2YWxPYmoudCkgPT4ge1xuICAgICAgc3dpdGNoIChyKSB7XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWUgPT4gW11cbiAgICAgIHwgU3RlcChvYmpzKSA9PiBvYmpzXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIERlY29tcG9zZUVWTW9kZToge1xuICAgIGluY2x1ZGVcbiAgICAgIEVWX01PREUgd2l0aFxuICAgICAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50IGFuZCB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICB9ID0ge1xuICAgIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7IC8vIFRPRE9bTWF0dF06IE1ha2Ugc3VyZSB0aGlzIGdldHMgcGFzc2VkIGFyb3VuZCBjb3JyZWN0bHlcbiAgICB0eXBlIHJlcXVpcmVtZW50KCdhKSA9IChSZXN1bHQudCwgJ2EpO1xuICAgIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYikgPSAoJ2IsIFJlc3VsdC50LCBDbG9zdXJlRW52aXJvbm1lbnQudCwgJ2EpO1xuICAgIHR5cGUgcmVzdWx0ID0gUmVzdWx0LnQ7XG5cbiAgICBsZXQgcmVxX3ZhbHVlID0gKGNvbnQsIHdyLCBkKSA9PiB7XG4gICAgICBzd2l0Y2ggKGNvbnQoZCkpIHtcbiAgICAgIHwgUmVzdWx0LkluZGV0ID0+IChSZXN1bHQuSW5kZXQsIGQpXG4gICAgICB8IFJlc3VsdC5Cb3hlZFZhbHVlID0+IChSZXN1bHQuQm94ZWRWYWx1ZSwgZClcbiAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT4gKFxuICAgICAgICAgIFJlc3VsdC5TdGVwKExpc3QubWFwKEV2YWxPYmoud3JhcCh3ciksIG9ianMpKSxcbiAgICAgICAgICBkLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgKCYmKTogKFJlc3VsdC50LCBSZXN1bHQudCkgPT4gUmVzdWx0LnQgPVxuICAgICAgKHUsIHYpID0+XG4gICAgICAgIHN3aXRjaCAodSwgdikge1xuICAgICAgICB8IChTdGVwKHNzMSksIFN0ZXAoc3MyKSkgPT4gU3RlcChzczEgQCBzczIpXG4gICAgICAgIHwgKFN0ZXAoc3MpLCBfKVxuICAgICAgICB8IChfLCBTdGVwKHNzKSkgPT4gU3RlcChzcylcbiAgICAgICAgfCAoSW5kZXQsIEJveGVkVmFsdWUpXG4gICAgICAgIHwgKEJveGVkVmFsdWUsIEluZGV0KVxuICAgICAgICB8IChJbmRldCwgSW5kZXQpID0+IEluZGV0XG4gICAgICAgIHwgKEJveGVkVmFsdWUsIEJveGVkVmFsdWUpID0+IEJveGVkVmFsdWVcbiAgICAgICAgfTtcblxuICAgIGxldCByZWMgcmVxX2FsbF92YWx1ZScgPSAoY29udCwgd3IsIGRzJykgPT5cbiAgICAgIGZ1blxuICAgICAgfCBbXSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIFtdKVxuICAgICAgfCBbZCwgLi4uZHNdID0+IHtcbiAgICAgICAgICBsZXQgKHIxLCB2KSA9IHJlcV92YWx1ZShjb250LCB3cihfLCAoZHMnLCBkcykpLCBkKTtcbiAgICAgICAgICBsZXQgKHIyLCB2cykgPSByZXFfYWxsX3ZhbHVlJyhjb250LCB3ciwgW2QsIC4uLmRzJ10sIGRzKTtcbiAgICAgICAgICAocjEgJiYgcjIsIFt2LCAuLi52c10pO1xuICAgICAgICB9O1xuICAgIGxldCByZXFfYWxsX3ZhbHVlID0gKGNvbnQsIHdyLCBkcykgPT4ge1xuICAgICAgcmVxX2FsbF92YWx1ZScoY29udCwgd3IsIFtdLCBkcyk7XG4gICAgfTtcblxuICAgIGxldCByZXFfZmluYWwgPSAoY29udCwgd3IsIGQpID0+IHtcbiAgICAgIChcbiAgICAgICAgc3dpdGNoIChjb250KGQpKSB7XG4gICAgICAgIHwgUmVzdWx0LkluZGV0ID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgIHwgUmVzdWx0LkJveGVkVmFsdWUgPT4gUmVzdWx0LkJveGVkVmFsdWVcbiAgICAgICAgfCBSZXN1bHQuU3RlcChvYmpzKSA9PlxuICAgICAgICAgIFJlc3VsdC5TdGVwKExpc3QubWFwKEV2YWxPYmoud3JhcCh3ciksIG9ianMpKVxuICAgICAgICB9LFxuICAgICAgICBkLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgbGV0IHJlYyByZXFfYWxsX2ZpbmFsJyA9IChjb250LCB3ciwgZHMnKSA9PlxuICAgICAgZnVuXG4gICAgICB8IFtdID0+IChSZXN1bHQuQm94ZWRWYWx1ZSwgW10pXG4gICAgICB8IFtkLCAuLi5kc10gPT4ge1xuICAgICAgICAgIGxldCAocjEsIHYpID0gcmVxX2ZpbmFsKGNvbnQsIHdyKF8sIChkcycsIGRzKSksIGQpO1xuICAgICAgICAgIGxldCAocjIsIHZzKSA9IHJlcV9hbGxfZmluYWwnKGNvbnQsIHdyLCBbZCwgLi4uZHMnXSwgZHMpO1xuICAgICAgICAgIChyMSAmJiByMiwgW3YsIC4uLnZzXSk7XG4gICAgICAgIH07XG5cbiAgICBsZXQgcmVxX2FsbF9maW5hbCA9IChjb250LCB3ciwgZHMpID0+IHtcbiAgICAgIHJlcV9hbGxfZmluYWwnKGNvbnQsIHdyLCBbXSwgZHMpO1xuICAgIH07XG5cbiAgICBsZXQgKGxldC4pOiAocmVxdWlyZW1lbnRzKCdhLCBESEV4cC50KSwgJ2EgPT4gcnVsZSkgPT4gcmVzdWx0ID1cbiAgICAgIChycSwgcmwpID0+XG4gICAgICAgIHN3aXRjaCAocnEpIHtcbiAgICAgICAgfCAoXywgUmVzdWx0LkluZGV0LCBfLCBfKSA9PiBSZXN1bHQuSW5kZXRcbiAgICAgICAgfCAodW5kbywgUmVzdWx0LkJveGVkVmFsdWUsIGVudiwgdikgPT5cbiAgICAgICAgICBzd2l0Y2ggKHJsKHYpKSB7XG4gICAgICAgICAgfCBDb25zdHJ1Y3RvciA9PiBSZXN1bHQuQm94ZWRWYWx1ZVxuICAgICAgICAgIHwgSW5kZXQgPT4gUmVzdWx0LkluZGV0XG4gICAgICAgICAgfCBTdGVwKHMpID0+IFJlc3VsdC5TdGVwKFtFdmFsT2JqLm1rKE1hcmssIGVudiwgdW5kbywgcy5raW5kKV0pXG4gICAgICAgICAgfVxuICAgICAgICB8IChfLCBSZXN1bHQuU3RlcChfKSBhcyByLCBfLCBfKSA9PiByXG4gICAgICAgIH07XG5cbiAgICBsZXQgKGFuZC4pOlxuICAgICAgKHJlcXVpcmVtZW50cygnYSwgJ2MgPT4gJ2IpLCByZXF1aXJlbWVudCgnYykpID0+XG4gICAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKSA9XG4gICAgICAoKHUsIHIxLCBlbnYsIHYxKSwgKHIyLCB2MikpID0+ICh1KHYyKSwgcjEgJiYgcjIsIGVudiwgKHYxLCB2MikpO1xuXG4gICAgbGV0IG90aGVyd2lzZSA9IChlbnYsIG8pID0+IChvLCBSZXN1bHQuQm94ZWRWYWx1ZSwgZW52LCAoKSk7XG4gICAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuICB9O1xuXG4gIG1vZHVsZSBEZWNvbXAgPSBUcmFuc2l0aW9uKERlY29tcG9zZUVWTW9kZSk7XG4gIGxldCByZWMgZGVjb21wb3NlID0gKHN0YXRlLCBlbnYsIGV4cCkgPT4ge1xuICAgIHN3aXRjaCAoZXhwKSB7XG4gICAgfCBESEV4cC5GaWx0ZXIoZmx0LCBkMSkgPT5cbiAgICAgIERlY29tcG9zZUVWTW9kZS4oXG4gICAgICAgIHtcbiAgICAgICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCAoZDEpID0+IChGaWx0ZXIoZmx0LCBkMSk6IERIRXhwLnQpKVxuICAgICAgICAgIGFuZC4gZDEgPVxuICAgICAgICAgICAgcmVxX2ZpbmFsKGRlY29tcG9zZShzdGF0ZSwgZW52KSwgZDEgPT4gRmlsdGVyKGZsdCwgZDEpLCBkMSk7XG4gICAgICAgICAgU3RlcCh7YXBwbHk6ICgpID0+IGQxLCBraW5kOiBDb21wbGV0ZUZpbHRlciwgdmFsdWU6IHRydWV9KTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIHwgXyA9PiBEZWNvbXAudHJhbnNpdGlvbihkZWNvbXBvc2UsIHN0YXRlLCBlbnYsIGV4cClcbiAgICB9O1xuICB9O1xufTtcblxubW9kdWxlIFRha2VTdGVwID0ge1xuICBtb2R1bGUgVGFrZVN0ZXBFVk1vZGU6IHtcbiAgICBpbmNsdWRlXG4gICAgICBFVl9NT0RFIHdpdGhcbiAgICAgICAgdHlwZSByZXN1bHQgPSBvcHRpb24oREhFeHAudCkgYW5kIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gIH0gPSB7XG4gICAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgICB0eXBlIHJlcXVpcmVtZW50KCdhKSA9ICdhO1xuICAgIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYikgPSAnYTtcbiAgICB0eXBlIHJlc3VsdCA9IG9wdGlvbihESEV4cC50KTtcblxuICAgIC8vIEFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZWl0aGVyIHZhbHVlIG9yIGZpbmFsIGFzIHJlcXVpcmVkLlxuICAgIGxldCByZXFfdmFsdWUgPSAoXywgXywgZCkgPT4gZDtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChfLCBfLCBkcykgPT4gZHM7XG4gICAgbGV0IHJlcV9maW5hbCA9IChfLCBfLCBkKSA9PiBkO1xuICAgIGxldCByZXFfYWxsX2ZpbmFsID0gKF8sIF8sIGRzKSA9PiBkcztcblxuICAgIGxldCAobGV0LikgPSAocnE6IHJlcXVpcmVtZW50cygnYSwgREhFeHAudCksIHJsOiAnYSA9PiBydWxlKSA9PlxuICAgICAgc3dpdGNoIChybChycSkpIHtcbiAgICAgIHwgU3RlcCh7YXBwbHksIF99KSA9PiBTb21lKGFwcGx5KCkpXG4gICAgICB8IENvbnN0cnVjdG9yXG4gICAgICB8IEluZGV0ID0+IE5vbmVcbiAgICAgIH07XG5cbiAgICBsZXQgKGFuZC4pID0gKHgxLCB4MikgPT4gKHgxLCB4Mik7XG5cbiAgICBsZXQgb3RoZXJ3aXNlID0gKF8sIF8pID0+ICgpO1xuXG4gICAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuICB9O1xuXG4gIG1vZHVsZSBUYWtlU3RlcEVWID0gVHJhbnNpdGlvbihUYWtlU3RlcEVWTW9kZSk7XG5cbiAgbGV0IHRha2Vfc3RlcCA9IChzdGF0ZSwgZW52LCBkKSA9PlxuICAgIFRha2VTdGVwRVYudHJhbnNpdGlvbigoXywgXywgXykgPT4gTm9uZSwgc3RhdGUsIGVudiwgZCk7XG59O1xuXG5sZXQgdGFrZV9zdGVwID0gVGFrZVN0ZXAudGFrZV9zdGVwO1xuXG5sZXQgcmVjIHJldl9jb25jYXQ6IChsaXN0KCdhKSwgbGlzdCgnYSkpID0+IGxpc3QoJ2EpID1cbiAgKGxzLCBycykgPT4ge1xuICAgIHN3aXRjaCAobHMpIHtcbiAgICB8IFtdID0+IHJzXG4gICAgfCBbaGQsIC4uLnRsXSA9PiByZXZfY29uY2F0KHRsLCBbaGQsIC4uLnJzXSlcbiAgICB9O1xuICB9O1xuXG5sZXQgcmVjIGNvbXBvc2UgPSAoY3R4OiBFdmFsQ3R4LnQsIGQ6IERIRXhwLnQpOiBESEV4cC50ID0+IHtcbiAgREhFeHAuKFxuICAgIHN3aXRjaCAoY3R4KSB7XG4gICAgfCBNYXJrID0+IGRcbiAgICB8IENsb3N1cmUoZW52LCBjdHgpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIENsb3N1cmUoZW52LCBkKTtcbiAgICB8IEZpbHRlcihmbHQsIGN0eCkgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgRmlsdGVyKGZsdCwgZCk7XG4gICAgfCBTZXF1ZW5jZTEoY3R4LCBkMikgPT5cbiAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIFNlcXVlbmNlKGQxLCBkMik7XG4gICAgfCBTZXF1ZW5jZTIoZDEsIGN0eCkgPT5cbiAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIFNlcXVlbmNlKGQxLCBkMik7XG4gICAgfCBBcDEoY3R4LCBkMikgPT5cbiAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEFwKGQxLCBkMik7XG4gICAgfCBBcDIoZDEsIGN0eCkgPT5cbiAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEFwKGQxLCBkMik7XG4gICAgfCBBcEJ1aWx0aW4ocywgY3R4KSA9PlxuICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQXBCdWlsdGluKHMsIGQnKTtcbiAgICB8IElmVGhlbkVsc2UxKGMsIGN0eCwgZDIsIGQzKSA9PlxuICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgSWZUaGVuRWxzZShjLCBkJywgZDIsIGQzKTtcbiAgICB8IElmVGhlbkVsc2UyKGMsIGQxLCBjdHgsIGQzKSA9PlxuICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgSWZUaGVuRWxzZShjLCBkMSwgZCcsIGQzKTtcbiAgICB8IElmVGhlbkVsc2UzKGMsIGQxLCBkMiwgY3R4KSA9PlxuICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgSWZUaGVuRWxzZShjLCBkMSwgZDIsIGQnKTtcbiAgICB8IFRlc3QobGl0LCBjdHgpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBUZXN0KGxpdCwgZDEpO1xuICAgIHwgQmluQm9vbE9wMShvcCwgY3R4LCBkMikgPT5cbiAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEJpbkJvb2xPcChvcCwgZDEsIGQyKTtcbiAgICB8IEJpbkJvb2xPcDIob3AsIGQxLCBjdHgpID0+XG4gICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBCaW5Cb29sT3Aob3AsIGQxLCBkMik7XG4gICAgfCBCaW5JbnRPcDEob3AsIGN0eCwgZDIpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBCaW5JbnRPcChvcCwgZDEsIGQyKTtcbiAgICB8IEJpbkludE9wMihvcCwgZDEsIGN0eCkgPT5cbiAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEJpbkludE9wKG9wLCBkMSwgZDIpO1xuICAgIHwgQmluRmxvYXRPcDEob3AsIGN0eCwgZDIpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBCaW5GbG9hdE9wKG9wLCBkMSwgZDIpO1xuICAgIHwgQmluRmxvYXRPcDIob3AsIGQxLCBjdHgpID0+XG4gICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBCaW5GbG9hdE9wKG9wLCBkMSwgZDIpO1xuICAgIHwgQmluU3RyaW5nT3AxKG9wLCBjdHgsIGQyKSA9PlxuICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQmluU3RyaW5nT3Aob3AsIGQxLCBkMik7XG4gICAgfCBCaW5TdHJpbmdPcDIob3AsIGQxLCBjdHgpID0+XG4gICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBCaW5TdHJpbmdPcChvcCwgZDEsIGQyKTtcbiAgICB8IENvbnMxKGN0eCwgZDIpID0+XG4gICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBDb25zKGQxLCBkMik7XG4gICAgfCBDb25zMihkMSwgY3R4KSA9PlxuICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQ29ucyhkMSwgZDIpO1xuICAgIHwgTGlzdENvbmNhdDEoY3R4LCBkMikgPT5cbiAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIExpc3RDb25jYXQoZDEsIGQyKTtcbiAgICB8IExpc3RDb25jYXQyKGQxLCBjdHgpID0+XG4gICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBMaXN0Q29uY2F0KGQxLCBkMik7XG4gICAgfCBUdXBsZShjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBUdXBsZShyZXZfY29uY2F0KGxkLCBbZCwgLi4ucmRdKSk7XG4gICAgfCBMaXN0TGl0KG0sIGksIHQsIGN0eCwgKGxkLCByZCkpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIExpc3RMaXQobSwgaSwgdCwgcmV2X2NvbmNhdChsZCwgW2QsIC4uLnJkXSkpO1xuICAgIHwgTGV0MShkcCwgY3R4LCBkMikgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgTGV0KGRwLCBkLCBkMik7XG4gICAgfCBMZXQyKGRwLCBkMSwgY3R4KSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBMZXQoZHAsIGQxLCBkKTtcbiAgICB8IEZ1bihkcCwgdCwgY3R4LCB2KSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBGdW4oZHAsIHQsIGQsIHYpO1xuICAgIHwgRml4Rih2LCB0LCBjdHgpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEZpeEYodiwgdCwgZCk7XG4gICAgfCBQcmooY3R4LCBuKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBQcmooZCwgbik7XG4gICAgfCBDYXN0KGN0eCwgdHkxLCB0eTIpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIENhc3QoZCwgdHkxLCB0eTIpO1xuICAgIHwgRmFpbGVkQ2FzdChjdHgsIHR5MSwgdHkyKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBGYWlsZWRDYXN0KGQsIHR5MSwgdHkyKTtcbiAgICB8IEludmFsaWRPcGVyYXRpb24oY3R4LCBlcnIpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEludmFsaWRPcGVyYXRpb24oZCwgZXJyKTtcbiAgICB8IE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIGksIGN0eCkgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgaSwgZCk7XG4gICAgfCBDb25zaXN0ZW50Q2FzZShDYXNlKGN0eCwgcnVsZSwgbikpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIENvbnNpc3RlbnRDYXNlKENhc2UoZCwgcnVsZSwgbikpO1xuICAgIHwgQ29uc2lzdGVudENhc2VSdWxlKHNjciwgcCwgY3R4LCAobHIsIHJyKSwgbikgPT5cbiAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgQ29uc2lzdGVudENhc2UoXG4gICAgICAgIENhc2Uoc2NyLCByZXZfY29uY2F0KGxyLCBbKFJ1bGUocCwgZCk6IERIRXhwLnJ1bGUpLCAuLi5ycl0pLCBuKSxcbiAgICAgICk7XG4gICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKGN0eCwgcnVsZSwgbikpID0+XG4gICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgIEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2UoZCwgcnVsZSwgbikpO1xuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXNSdWxlKHNjciwgbXYsIGhpLCBwLCBjdHgsIChsciwgcnIpLCBuKSA9PlxuICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlcyhcbiAgICAgICAgbXYsXG4gICAgICAgIGhpLFxuICAgICAgICBDYXNlKHNjciwgcmV2X2NvbmNhdChsciwgWyhSdWxlKHAsIGQpOiBESEV4cC5ydWxlKSwgLi4ucnJdKSwgbiksXG4gICAgICApO1xuICAgIH1cbiAgKTtcbn07XG5cbmxldCBkZWNvbXBvc2UgPSAoZDogREhFeHAudCkgPT4ge1xuICBsZXQgZXMgPSBFdmFsdWF0b3JTdGF0ZS5pbml0O1xuICBsZXQgZW52ID0gQ2xvc3VyZUVudmlyb25tZW50Lm9mX2Vudmlyb25tZW50KEJ1aWx0aW5zLmVudl9pbml0KTtcbiAgbGV0IHJzID0gRGVjb21wb3NlLmRlY29tcG9zZShyZWYoZXMpLCBlbnYsIGQpO1xuICBEZWNvbXBvc2UuUmVzdWx0LnVuYm94KHJzKTtcbn07XG5cbmxldCBldmFsdWF0ZV93aXRoX2hpc3RvcnkgPSBkID0+IHtcbiAgbGV0IHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLmluaXQpO1xuICBsZXQgcmVjIGdvID0gZCA9PlxuICAgIHN3aXRjaCAoZGVjb21wb3NlKGQpKSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW3gsIC4uLl9dID0+XG4gICAgICBzd2l0Y2ggKHRha2Vfc3RlcChzdGF0ZSwgeC5lbnYsIHguZF9sb2MpKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShkKSA9PlxuICAgICAgICBsZXQgbmV4dCA9IGNvbXBvc2UoeC5jdHgsIGQpO1xuICAgICAgICBbbmV4dCwgLi4uZ28obmV4dCldO1xuICAgICAgfVxuICAgIH07XG4gIGdvKGQpO1xufTtcbiIsImxldCByZWMgbWF0Y2hlc19leHAgPVxuICAgICAgICAoZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCwgZDogREhFeHAudCwgZjogREhFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKGQsIGYpIHtcbiAgfCAoQ29uc3RydWN0b3IoXCIkZVwiKSwgXykgPT4gZmFpbHdpdGgoXCIkZSBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcbiAgfCAoQ29uc3RydWN0b3IoXCIkdlwiKSwgXykgPT4gZmFpbHdpdGgoXCIkdiBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcblxuICAvLyBIQUNLW01hdHRdOiBpZ25vcmUgZml4cG9pbnRzIGluIGNvbXBhcmlzb24sIHRvIGFsbG93IHBhdXNpbmcgb24gZml4cG9pbnQgc3RlcHNcbiAgfCAoRml4RihkcCwgXywgZGMpLCBmKSA9PlxuICAgIG1hdGNoZXNfZXhwKFxuICAgICAgZW52LFxuICAgICAgQ2xvc3VyZShcbiAgICAgICAgVHJhbnNpdGlvbi5ldmFsdWF0ZV9leHRlbmRfZW52KEVudmlyb25tZW50LnNpbmdsZXRvbigoZHAsIGRjKSksIGVudiksXG4gICAgICAgIGRjLFxuICAgICAgKSxcbiAgICAgIGYsXG4gICAgKVxuICB8IChkLCBGaXhGKGZwLCBfLCBmYykpID0+XG4gICAgbWF0Y2hlc19leHAoXG4gICAgICBlbnYsXG4gICAgICBkLFxuICAgICAgQ2xvc3VyZShcbiAgICAgICAgVHJhbnNpdGlvbi5ldmFsdWF0ZV9leHRlbmRfZW52KEVudmlyb25tZW50LnNpbmdsZXRvbigoZnAsIGZjKSksIGVudiksXG4gICAgICAgIGZjLFxuICAgICAgKSxcbiAgICApXG5cbiAgfCAoXywgQ29uc3RydWN0b3IoXCIkdlwiKSkgPT5cbiAgICBzd2l0Y2ggKFZhbHVlQ2hlY2tlci5jaGVja192YWx1ZShlbnYsIGQpKSB7XG4gICAgfCBJbmRldFxuICAgIHwgVmFsdWUgPT4gdHJ1ZVxuICAgIHwgRXhwciA9PiBmYWxzZVxuICAgIH1cblxuICB8IChfLCBFbXB0eUhvbGUoXykpXG4gIHwgKF8sIENvbnN0cnVjdG9yKFwiJGVcIikpID0+IHRydWVcblxuICB8IChfLCBDbG9zdXJlKGVudiwgZikpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgfCAoXywgQ2FzdChmLCBfLCBfKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB8IChfLCBGYWlsZWRDYXN0KGYsIF8sIF8pKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG5cbiAgfCAoQ2xvc3VyZShlbnYsIGQpLCBfKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKENhc3QoZCwgXywgXyksIF8pID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgfCAoRmFpbGVkQ2FzdChkLCBfLCBfKSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuXG4gIHwgKEJvdW5kVmFyKGR4KSwgQm91bmRWYXIoZngpKSA9PiBkeCA9PSBmeFxuICB8IChCb3VuZFZhcihkeCksIF8pID0+XG4gICAgbGV0IGQgPVxuICAgICAgQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIGR4KVxuICAgICAgfD4gVXRpbC5PcHRVdGlsLmdldCgoKSA9PiB7XG4gICAgICAgICAgIHByaW50X2VuZGxpbmUoXCJGcmVlSW52YWxpZFZhcjpcIiArKyBkeCk7XG4gICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihGcmVlSW52YWxpZFZhcihkeCkpKTtcbiAgICAgICAgIH0pO1xuICAgIG1hdGNoZXNfZXhwKGVudiwgZCwgZik7XG4gIHwgKF8sIEJvdW5kVmFyKGZ4KSkgPT5cbiAgICBzd2l0Y2ggKENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCBmeCkpIHtcbiAgICB8IFNvbWUoZikgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIH1cblxuICB8IChFbXB0eUhvbGUoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoRmlsdGVyKGRmLCBkZCksIEZpbHRlcihmZiwgZmQpKSA9PlxuICAgIERILkRIRmlsdGVyLmZhc3RfZXF1YWwoZGYsIGZmKSAmJiBtYXRjaGVzX2V4cChlbnYsIGRkLCBmZClcbiAgfCAoRmlsdGVyKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEJvb2xMaXQoZHYpLCBCb29sTGl0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoQm9vbExpdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChJbnRMaXQoZHYpLCBJbnRMaXQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChJbnRMaXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoRmxvYXRMaXQoZHYpLCBGbG9hdExpdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEZsb2F0TGl0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFN0cmluZ0xpdChkdiksIFN0cmluZ0xpdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKFN0cmluZ0xpdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChDb25zdHJ1Y3RvcihfKSwgQXAoQ29uc3RydWN0b3IoXCJ+TVZhbFwiKSwgVHVwbGUoW10pKSkgPT4gdHJ1ZVxuICB8IChDb25zdHJ1Y3RvcihkdCksIENvbnN0cnVjdG9yKGZ0KSkgPT4gZHQgPT0gZnRcbiAgfCAoQ29uc3RydWN0b3IoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQnVpbHRpbkZ1bihkbiksIEJ1aWx0aW5GdW4oZm4pKSA9PiBkbiA9PSBmblxuICB8IChCdWlsdGluRnVuKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEZ1bihkcDEsIGR0eTEsIGQxLCBkbmFtZTEpLCBGdW4oZnAxLCBmdHkxLCBmMSwgZm5hbWUxKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkcDEsIGZwMSlcbiAgICAmJiBkdHkxID09IGZ0eTFcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBkbmFtZTEgPT0gZm5hbWUxXG4gIHwgKEZ1bihfKSwgXykgPT4gZmFsc2VcblxuICB8IChGcmVlVmFyKGR1LCBkaSwgZHgpLCBGcmVlVmFyKGZ1LCBmaSwgZngpKSA9PlxuICAgIGR1ID09IGZ1ICYmIGRpID09IGZpICYmIGR4ID09IGZ4XG4gIHwgKEZyZWVWYXIoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoTGV0KGRwLCBkMSwgZDIpLCBMZXQoZnAsIGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19wYXQoZHAsIGZwKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChMZXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQXAoZDEsIGQyKSwgQXAoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKElmVGhlbkVsc2UoZGMsIGQxLCBkMiwgZDMpLCBJZlRoZW5FbHNlKGZjLCBmMSwgZjIsIGYzKSkgPT5cbiAgICBkYyA9PSBmY1xuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDMsIGYzKVxuICB8IChJZlRoZW5FbHNlKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFNlcXVlbmNlKGQxLCBkMiksIFNlcXVlbmNlKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChTZXF1ZW5jZShfKSwgXykgPT4gZmFsc2VcblxuICB8IChUZXN0KGlkMSwgZDIpLCBUZXN0KGlkMiwgZjIpKSA9PlxuICAgIGlkMSA9PSBpZDIgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKFRlc3QoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQ29ucyhkMSwgZDIpLCBDb25zKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChDb25zKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RMaXQoXywgXywgZHQsIGR2KSwgTGlzdExpdChfLCBfLCBmdCwgZnYpKSA9PlxuICAgIGR0ID09IGZ0XG4gICAgJiYgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAgKGFjYywgZCwgZikgPT4gYWNjICYmIG1hdGNoZXNfZXhwKGVudiwgZCwgZiksXG4gICAgICAgICB0cnVlLFxuICAgICAgICAgZHYsXG4gICAgICAgICBmdixcbiAgICAgICApXG4gIHwgKExpc3RMaXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoVHVwbGUoZHYpLCBUdXBsZShmdikpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKGFjYywgZCwgZikgPT4gYWNjICYmIG1hdGNoZXNfZXhwKGVudiwgZCwgZiksXG4gICAgICB0cnVlLFxuICAgICAgZHYsXG4gICAgICBmdixcbiAgICApXG4gIHwgKFR1cGxlKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEJpbkJvb2xPcChkX29wX2JpbiwgZDEsIGQyKSwgQmluQm9vbE9wKGZfb3BfYmluLCBmMSwgZjIpKSA9PlxuICAgIGRfb3BfYmluID09IGZfb3BfYmluXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG5cbiAgfCAoQmluQm9vbE9wKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEJpbkludE9wKGRfb3BfYmluLCBkMSwgZDIpLCBCaW5JbnRPcChmX29wX2JpbiwgZjEsIGYyKSkgPT5cbiAgICBkX29wX2JpbiA9PSBmX29wX2JpblxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChCaW5JbnRPcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChCaW5GbG9hdE9wKGRfb3BfYmluLCBkMSwgZDIpLCBCaW5GbG9hdE9wKGZfb3BfYmluLCBmMSwgZjIpKSA9PlxuICAgIGRfb3BfYmluID09IGZfb3BfYmluXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEJpbkZsb2F0T3AoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQmluU3RyaW5nT3AoZF9vcF9iaW4sIGQxLCBkMiksIEJpblN0cmluZ09wKGZfb3BfYmluLCBmMSwgZjIpKSA9PlxuICAgIGRfb3BfYmluID09IGZfb3BfYmluXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEJpblN0cmluZ09wKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RDb25jYXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoXG4gICAgICBDb25zaXN0ZW50Q2FzZShDYXNlKGRzY3J1dCwgZHJ1bGUsIF8pKSxcbiAgICAgIENvbnNpc3RlbnRDYXNlKENhc2UoZnNjcnV0LCBmcnVsZSwgXykpLFxuICAgIClcbiAgfCAoXG4gICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfLCBfLCBDYXNlKGRzY3J1dCwgZHJ1bGUsIF8pKSxcbiAgICAgIEluY29uc2lzdGVudEJyYW5jaGVzKF8sIF8sIENhc2UoZnNjcnV0LCBmcnVsZSwgXykpLFxuICAgICkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGRzY3J1dCwgZnNjcnV0KVxuICAgICYmIChcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgICAocmVzLCBkcnVsZSwgZnJ1bGUpID0+IHJlcyAmJiBtYXRjaGVzX3J1bChlbnYsIGRydWxlLCBmcnVsZSksXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBkcnVsZSxcbiAgICAgICAgICBmcnVsZSxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gZmFsc2VcbiAgICAgIHwgcmVzID0+IHJlc1xuICAgICAgfVxuICAgIClcbiAgfCAoQ29uc2lzdGVudENhc2UoXyksIF8pXG4gIHwgKEluY29uc2lzdGVudEJyYW5jaGVzKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKE5vbkVtcHR5SG9sZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoRXhwYW5kaW5nS2V5d29yZChfKSwgXykgPT4gZmFsc2VcbiAgfCAoSW52YWxpZFRleHQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEludmFsaWRPcGVyYXRpb24oXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQXBCdWlsdGluKGRuYW1lLCBkYXJnKSwgQXBCdWlsdGluKGZuYW1lLCBmYXJnKSkgPT5cbiAgICBkbmFtZSA9PSBmbmFtZSAmJiBtYXRjaGVzX2V4cChlbnYsIGRhcmcsIGZhcmcpXG4gIHwgKEFwQnVpbHRpbihfKSwgXykgPT4gZmFsc2VcblxuICB8IChQcmooZHYsIGRpKSwgUHJqKGZ2LCBmaSkpID0+IG1hdGNoZXNfZXhwKGVudiwgZHYsIGZ2KSAmJiBkaSA9PSBmaVxuICB8IChQcmooXyksIF8pID0+IGZhbHNlXG4gIH07XG59XG5hbmQgbWF0Y2hlc19wYXQgPSAoZDogREhQYXQudCwgZjogREhQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKGQsIGYpIHtcbiAgfCAoXywgRW1wdHlIb2xlKF8pKSA9PiB0cnVlXG4gIHwgKFdpbGQsIFdpbGQpID0+IHRydWVcbiAgfCAoV2lsZCwgXykgPT4gZmFsc2VcbiAgfCAoSW50TGl0KGR2KSwgSW50TGl0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoSW50TGl0KF8pLCBfKSA9PiBmYWxzZVxuICB8IChGbG9hdExpdChkdiksIEZsb2F0TGl0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoRmxvYXRMaXQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEJvb2xMaXQoZHYpLCBCb29sTGl0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoQm9vbExpdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoU3RyaW5nTGl0KGR2KSwgU3RyaW5nTGl0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoU3RyaW5nTGl0KF8pLCBfKSA9PiBmYWxzZVxuICB8IChMaXN0TGl0KGR0eTEsIGRsKSwgTGlzdExpdChmdHkxLCBmbCkpID0+XG4gICAgc3dpdGNoIChcbiAgICAgIExpc3QuZm9sZF9sZWZ0MigocmVzLCBkLCBmKSA9PiByZXMgJiYgbWF0Y2hlc19wYXQoZCwgZiksIHRydWUsIGRsLCBmbClcbiAgICApIHtcbiAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gZmFsc2VcbiAgICB8IHJlcyA9PiBtYXRjaGVzX3R5cChkdHkxLCBmdHkxKSAmJiByZXNcbiAgICB9XG4gIHwgKExpc3RMaXQoXyksIF8pID0+IGZhbHNlXG4gIHwgKENvbnN0cnVjdG9yKGR0KSwgQ29uc3RydWN0b3IoZnQpKSA9PiBkdCA9PSBmdFxuICB8IChDb25zdHJ1Y3RvcihfKSwgXykgPT4gZmFsc2VcbiAgfCAoVmFyKGR4KSwgVmFyKGZ4KSkgPT4gZHggPT0gZnhcbiAgfCAoVmFyKF8pLCBfKSA9PiBmYWxzZVxuICB8IChUdXBsZShkbCksIFR1cGxlKGZsKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5mb2xkX2xlZnQyKChyZXMsIGQsIGYpID0+IHJlcyAmJiBtYXRjaGVzX3BhdChkLCBmKSwgdHJ1ZSwgZGwsIGZsKVxuICAgICkge1xuICAgIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBmYWxzZVxuICAgIHwgcmVzID0+IHJlc1xuICAgIH1cbiAgfCAoVHVwbGUoXyksIF8pID0+IGZhbHNlXG4gIHwgKEFwKGQxLCBkMiksIEFwKGYxLCBmMikpID0+IG1hdGNoZXNfcGF0KGQxLCBmMSkgJiYgbWF0Y2hlc19wYXQoZDIsIGYyKVxuICB8IChBcChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQmFkQ29uc3RydWN0b3IoXywgXywgZHQpLCBCYWRDb25zdHJ1Y3RvcihfLCBfLCBmdCkpID0+IGR0ID09IGZ0XG4gIHwgKEJhZENvbnN0cnVjdG9yKF8pLCBfKSA9PiBmYWxzZVxuICB8IChDb25zKGQxLCBkMiksIENvbnMoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkMSwgZjEpICYmIG1hdGNoZXNfcGF0KGQyLCBmMilcbiAgfCAoQ29ucyhfKSwgXykgPT4gZmFsc2VcbiAgfCAoRW1wdHlIb2xlKF8pLCBfKSA9PiBmYWxzZVxuICB8IChOb25FbXB0eUhvbGUoXyksIF8pID0+IGZhbHNlXG4gIHwgKEV4cGFuZGluZ0tleXdvcmQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEludmFsaWRUZXh0KF8pLCBfKSA9PiBmYWxzZVxuICB9O1xufVxuYW5kIG1hdGNoZXNfdHlwID0gKGQ6IFR5cC50LCBmOiBUeXAudCkgPT4ge1xuICBUeXAuZXEoZCwgZik7XG59XG5hbmQgbWF0Y2hlc19ydWwgPSAoZW52LCBkOiBESEV4cC5ydWxlLCBmOiBESEV4cC5ydWxlKSA9PiB7XG4gIHN3aXRjaCAoZCwgZikge1xuICB8IChSdWxlKGRwLCBkKSwgUnVsZShmcCwgZikpID0+XG4gICAgbWF0Y2hlc19wYXQoZHAsIGZwKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIH07XG59O1xuXG5sZXQgbWF0Y2hlcyA9XG4gICAgKH5lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCB+ZXhwOiBESEV4cC50LCB+Zmx0OiBGaWx0ZXIudClcbiAgICA6IG9wdGlvbihGaWx0ZXJBY3Rpb24udCkgPT5cbiAgaWYgKG1hdGNoZXNfZXhwKGVudiwgZXhwLCBmbHQucGF0KSkge1xuICAgIFNvbWUoZmx0LmFjdCk7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IG1hdGNoZXMgPVxuICAgICh+ZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCwgfmV4cDogREhFeHAudCwgfmFjdDogRmlsdGVyQWN0aW9uLnQsIGZsdF9lbnYpXG4gICAgOiAoRmlsdGVyQWN0aW9uLnQsIGludCkgPT4ge1xuICBsZXQgbGVuID0gTGlzdC5sZW5ndGgoZmx0X2Vudik7XG4gIGxldCByZWMgbWF0Y2hlcycgPSAofmVudiwgfmV4cCwgfmFjdCwgZmx0X2VudiwgaWR4KSA9PiB7XG4gICAgc3dpdGNoIChmbHRfZW52KSB7XG4gICAgfCBbXSA9PiAoYWN0LCBpZHgpXG4gICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgc3dpdGNoIChtYXRjaGVzKH5lbnYsIH5leHAsIH5mbHQ9aGQpKSB7XG4gICAgICB8IFNvbWUoYWN0KSA9PiAoYWN0LCBpZHgpXG4gICAgICB8IE5vbmUgPT4gbWF0Y2hlcycofmVudiwgfmV4cCwgfmFjdCwgdGwsIGlkeCArIDEpXG4gICAgICB9XG4gICAgfTtcbiAgfTtcbiAgbGV0IChhY3QsIGlkeCkgPSBtYXRjaGVzJyh+ZW52LCB+ZXhwLCB+YWN0LCBmbHRfZW52LCAwKTtcbiAgKGFjdCwgbGVuIC0gaWR4KTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBFdmFsdWF0b3JTdGVwO1xub3BlbiBUcmFuc2l0aW9uO1xuXG5leGNlcHRpb24gRXhjZXB0aW9uO1xuXG50eXBlIHN0ZXBfd2l0aF9wcmV2aW91cyA9IHtcbiAgc3RlcCxcbiAgcHJldmlvdXM6IG9wdGlvbihzdGVwKSxcbiAgaGlkZGVuOiBsaXN0KHN0ZXApLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjdXJyZW50ID1cbiAgfCBTdGVwcGVyT0soREhFeHAudCwgRXZhbHVhdG9yU3RhdGUudClcbiAgfCBTdGVwVGltZW91dCAvLyBNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGluIHByZXZpb3VzXG4gIHwgU3RlcFBlbmRpbmcoREhFeHAudCwgRXZhbHVhdG9yU3RhdGUudCwgb3B0aW9uKEV2YWxPYmoudCkpOyAvLyBTdGVwUGVuZGluZyhfLFNvbWUoXykpIGNhbm5vdCBiZSBzYXZlZFxuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIC8qIE1pZ2h0IGJlIGRpZmZlcmVudCB0byBmaXJzdCBleHByZXNzaW9uIGluIHByZXZpb3VzIGJlY2F1c2VcbiAgICAgc3RlcHMgYXJlIHRha2VuIGF1dG9tYXRpY2FsbHkgKHRoaXMgbWF5IG5vIGxvbmdlciBiZSB0cnVlIC0gTWF0dCkgKi9cbiAgZWxhYjogREhFeHAudCxcbiAgcHJldmlvdXM6IGxpc3Qoc3RlcCksXG4gIGN1cnJlbnQsXG4gIG5leHQ6IGxpc3QoRXZhbE9iai50KSxcbn07XG5cbmxldCByZWMgbWF0Y2hlcyA9XG4gICAgICAgIChcbiAgICAgICAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgICAgIGZsdDogRmlsdGVyRW52aXJvbm1lbnQudCxcbiAgICAgICAgICBjdHg6IEV2YWxDdHgudCxcbiAgICAgICAgICBleHA6IERIRXhwLnQsXG4gICAgICAgICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgICAgICAgICBpZHg6IGludCxcbiAgICAgICAgKVxuICAgICAgICA6IChGaWx0ZXJBY3Rpb24udCwgaW50LCBFdmFsQ3R4LnQpID0+IHtcbiAgbGV0IGNvbXBvc2VkID0gY29tcG9zZShjdHgsIGV4cCk7XG4gIGxldCAocGFjdCwgcGlkeCkgPSAoYWN0LCBpZHgpO1xuICBsZXQgKG1hY3QsIG1pZHgpID0gRmlsdGVyTWF0Y2hlci5tYXRjaGVzKH5lbnYsIH5leHA9Y29tcG9zZWQsIH5hY3QsIGZsdCk7XG4gIGxldCAoYWN0LCBpZHgpID1cbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgIHwgRmlsdGVyKF8sIF8pID0+IChwYWN0LCBwaWR4KVxuICAgIHwgXyA9PiBtaWR4ID4gaWR4ID8gKG1hY3QsIG1pZHgpIDogKHBhY3QsIHBpZHgpXG4gICAgfTtcbiAgbGV0IG1hcCA9ICgoYSwgaSwgYyksIGY6IEV2YWxDdHgudCA9PiBFdmFsQ3R4LnQpID0+IHtcbiAgICAoYSwgaSwgZihjKSk7XG4gIH07XG4gIGxldCAobGV0KykgPSBtYXA7XG4gIGxldCAocmFjdCwgcmlkeCwgcmN0eCkgPVxuICAgIHN3aXRjaCAoY3R4KSB7XG4gICAgfCBNYXJrID0+IChhY3QsIGlkeCwgRXZhbEN0eC5NYXJrKVxuICAgIHwgQ2xvc3VyZShlbnYsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIENsb3N1cmUoZW52LCBjdHgpO1xuICAgIHwgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KSA9PlxuICAgICAgbGV0IGZsdCA9IGZsdCB8PiBGaWx0ZXJFbnZpcm9ubWVudC5leHRlbmRzKGZsdCcpO1xuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KTtcbiAgICB8IEZpbHRlcihSZXNpZHVlKGlkeCwgYWN0KSwgY3R4KSA9PlxuICAgICAgbGV0IChyYWN0LCByaWR4LCByY3R4KSA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBpZiAocmlkeCA9PSBpZHggJiYgcmFjdCB8PiBzbmQgPT0gQWxsKSB7XG4gICAgICAgIChyYWN0LCByaWR4LCBGaWx0ZXIoUmVzaWR1ZShpZHgsIGFjdCksIHJjdHgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIChyYWN0LCByaWR4LCByY3R4KTtcbiAgICAgIH07XG4gICAgfCBTZXF1ZW5jZTEoY3R4LCBkMikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIFNlcXVlbmNlMShjdHgsIGQyKTtcbiAgICB8IFNlcXVlbmNlMihkMSwgY3R4KSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgU2VxdWVuY2UyKGQxLCBjdHgpO1xuICAgIHwgTGV0MShkMSwgY3R4LCBkMykgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIExldDEoZDEsIGN0eCwgZDMpO1xuICAgIHwgTGV0MihkMSwgZDIsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIExldDIoZDEsIGQyLCBjdHgpO1xuICAgIHwgRnVuKGRwLCB0eSwgY3R4LCBuYW1lKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgRnVuKGRwLCB0eSwgY3R4LCBuYW1lKTtcbiAgICB8IEZpeEYobmFtZSwgdHksIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEZpeEYobmFtZSwgdHksIGN0eCk7XG4gICAgfCBBcDEoY3R4LCBkMikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEFwMShjdHgsIGQyKTtcbiAgICB8IEFwMihkMSwgY3R4KSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgQXAyKGQxLCBjdHgpO1xuICAgIHwgSWZUaGVuRWxzZTEoYywgY3R4LCBkMiwgZDMpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBJZlRoZW5FbHNlMShjLCBjdHgsIGQyLCBkMyk7XG4gICAgfCBJZlRoZW5FbHNlMihjLCBkMSwgY3R4LCBkMykgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIElmVGhlbkVsc2UyKGMsIGQxLCBjdHgsIGQzKTtcbiAgICB8IElmVGhlbkVsc2UzKGMsIGQxLCBkMiwgY3R4KSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgSWZUaGVuRWxzZTMoYywgZDEsIGQyLCBjdHgpO1xuICAgIHwgQmluQm9vbE9wMShvcCwgY3R4LCBkMSkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpbkJvb2xPcDEob3AsIGN0eCwgZDEpO1xuICAgIHwgQmluQm9vbE9wMihvcCwgZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpbkJvb2xPcDIob3AsIGQxLCBjdHgpO1xuICAgIHwgQmluSW50T3AxKG9wLCBjdHgsIGQyKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgQmluSW50T3AxKG9wLCBjdHgsIGQyKTtcbiAgICB8IEJpbkludE9wMihvcCwgZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpbkludE9wMihvcCwgZDEsIGN0eCk7XG4gICAgfCBCaW5GbG9hdE9wMShvcCwgY3R4LCBkMikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpbkZsb2F0T3AxKG9wLCBjdHgsIGQyKTtcbiAgICB8IEJpbkZsb2F0T3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgQmluRmxvYXRPcDIob3AsIGQxLCBjdHgpO1xuICAgIHwgQmluU3RyaW5nT3AxKG9wLCBjdHgsIGQyKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgQmluU3RyaW5nT3AxKG9wLCBjdHgsIGQyKTtcbiAgICB8IEJpblN0cmluZ09wMihvcCwgZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEJpblN0cmluZ09wMihvcCwgZDEsIGN0eCk7XG4gICAgfCBUdXBsZShjdHgsIGRzKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgVHVwbGUoY3R4LCBkcyk7XG4gICAgfCBBcEJ1aWx0aW4obmFtZSwgY3R4KSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgQXBCdWlsdGluKG5hbWUsIGN0eCk7XG4gICAgfCBUZXN0KGlkLCBjdHgpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBUZXN0KGlkLCBjdHgpO1xuICAgIHwgTGlzdExpdCh1LCBpLCB0eSwgY3R4LCBkcykgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIExpc3RMaXQodSwgaSwgdHksIGN0eCwgZHMpO1xuICAgIHwgQ29uczEoY3R4LCBkMikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIENvbnMxKGN0eCwgZDIpO1xuICAgIHwgQ29uczIoZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIENvbnMyKGQxLCBjdHgpO1xuICAgIHwgTGlzdENvbmNhdDEoY3R4LCBkMikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIExpc3RDb25jYXQxKGN0eCwgZDIpO1xuICAgIHwgTGlzdENvbmNhdDIoZDEsIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIExpc3RDb25jYXQyKGQxLCBjdHgpO1xuICAgIHwgUHJqKGN0eCwgbikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIFByaihjdHgsIG4pO1xuICAgIHwgTm9uRW1wdHlIb2xlKGUsIHUsIGksIGN0eCkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIE5vbkVtcHR5SG9sZShlLCB1LCBpLCBjdHgpO1xuICAgIHwgQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICBDYXN0KGN0eCwgdHksIHR5Jyk7XG4gICAgfCBGYWlsZWRDYXN0KGN0eCwgdHksIHR5JykgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEZhaWxlZENhc3QoY3R4LCB0eSwgdHknKTtcbiAgICB8IEludmFsaWRPcGVyYXRpb24oY3R4LCBlcnJvcikgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIEludmFsaWRPcGVyYXRpb24oY3R4LCBlcnJvcik7XG4gICAgfCBDb25zaXN0ZW50Q2FzZShDYXNlKGN0eCwgcnMsIGkpKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgQ29uc2lzdGVudENhc2UoQ2FzZShjdHgsIHJzLCBpKSk7XG4gICAgfCBDb25zaXN0ZW50Q2FzZVJ1bGUoZGV4cCwgZHBhdCwgY3R4LCBycywgaSkgPT5cbiAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgIENvbnNpc3RlbnRDYXNlUnVsZShkZXhwLCBkcGF0LCBjdHgsIHJzLCBpKTtcbiAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2UoY3R4LCBycywgcmkpKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXModSwgaSwgQ2FzZShjdHgsIHJzLCByaSkpO1xuICAgIHwgSW5jb25zaXN0ZW50QnJhbmNoZXNSdWxlKGRleHAsIHUsIGksIGRwYXQsIGN0eCwgcnMsIHJpKSA9PlxuICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgSW5jb25zaXN0ZW50QnJhbmNoZXNSdWxlKGRleHAsIHUsIGksIGRwYXQsIGN0eCwgcnMsIHJpKTtcbiAgICB9O1xuICBzd2l0Y2ggKGN0eCkge1xuICB8IEZpbHRlcihfKSA9PiAocmFjdCwgcmlkeCwgcmN0eClcbiAgfCBfIHdoZW4gbWlkeCA9PSByaWR4ICYmIG1pZHggPiBwaWR4ICYmIG1hY3QgfD4gc25kID09IEFsbCA9PiAoXG4gICAgICByYWN0LFxuICAgICAgcmlkeCxcbiAgICAgIEZpbHRlcihSZXNpZHVlKG1pZHgsIG1hY3QpLCByY3R4KSxcbiAgICApXG4gIHwgXyA9PiAocmFjdCwgcmlkeCwgcmN0eClcbiAgfTtcbn07XG5cbmxldCBzaG91bGRfaGlkZV9ldmFsX29iaiA9XG4gICAgKH5zZXR0aW5ncywgeDogRXZhbE9iai50KTogKEZpbHRlckFjdGlvbi5hY3Rpb24sIEV2YWxPYmoudCkgPT5cbiAgaWYgKHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCB4LmtuZCkpIHtcbiAgICAoRXZhbCwgeCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IChhY3QsIF8sIGN0eCkgPVxuICAgICAgbWF0Y2hlcyhDbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIFtdLCB4LmN0eCwgeC5kX2xvYywgKFN0ZXAsIE9uZSksIDApO1xuICAgIHN3aXRjaCAoYWN0KSB7XG4gICAgfCAoRXZhbCwgXykgPT4gKEV2YWwsIHsuLi54LCBjdHh9KVxuICAgIHwgKFN0ZXAsIF8pID0+IChTdGVwLCB7Li4ueCwgY3R4fSlcbiAgICB9O1xuICB9O1xuXG5sZXQgc2hvdWxkX2hpZGVfc3RlcCA9ICh+c2V0dGluZ3MsIHg6IHN0ZXApOiAoRmlsdGVyQWN0aW9uLmFjdGlvbiwgc3RlcCkgPT5cbiAgaWYgKHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCB4LmtuZCkpIHtcbiAgICAoRXZhbCwgeCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IChhY3QsIF8sIGN0eCkgPVxuICAgICAgbWF0Y2hlcyhDbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIFtdLCB4LmN0eCwgeC5kX2xvYywgKFN0ZXAsIE9uZSksIDApO1xuICAgIHN3aXRjaCAoYWN0KSB7XG4gICAgfCAoRXZhbCwgXykgPT4gKEV2YWwsIHsuLi54LCBjdHh9KVxuICAgIHwgKFN0ZXAsIF8pID0+IChTdGVwLCB7Li4ueCwgY3R4fSlcbiAgICB9O1xuICB9O1xuXG5sZXQgZ2V0X2VsYWIgPSAoe2VsYWIsIF99OiB0KSA9PiBlbGFiO1xuXG5sZXQgZ2V0X25leHRfc3RlcHMgPSBzID0+IHMubmV4dDtcblxubGV0IGN1cnJlbnRfZXhwciA9IChzOiB0KSA9PlxuICBzd2l0Y2ggKHMuY3VycmVudCwgcy5wcmV2aW91cykge1xuICB8IChTdGVwcGVyT0soZCwgXyksIF8pXG4gIHwgKFN0ZXBQZW5kaW5nKGQsIF8sIF8pLCBfKSA9PiBkXG4gIHwgKFN0ZXBUaW1lb3V0LCBbeCwgLi4uX10pID0+IHguZFxuICB8IChTdGVwVGltZW91dCwgW10pID0+IHMuZWxhYlxuICB9O1xuXG5sZXQgc3RlcF9wZW5kaW5nID0gKGlkeDogaW50LCB7ZWxhYiwgcHJldmlvdXMsIGN1cnJlbnQsIG5leHR9OiB0KSA9PiB7XG4gIC8vIFRPRE9bTWF0dF06IGNoYW5nZSB0byBudGhfb3B0IGFmdGVyIHJlZmFjdG9yXG4gIGxldCBlbyA9IExpc3QubnRoKG5leHQsIGlkeCk7XG4gIHN3aXRjaCAoY3VycmVudCkge1xuICB8IFN0ZXBwZXJPSyhkLCBzKSA9PiB7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBjdXJyZW50OiBTdGVwUGVuZGluZyhkLCBzLCBTb21lKGVvKSksXG4gICAgICBuZXh0LFxuICAgIH1cbiAgfCBTdGVwVGltZW91dCA9PiB7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXM6IExpc3QudGwocHJldmlvdXMpLFxuICAgICAgY3VycmVudDpcbiAgICAgICAgU3RlcFBlbmRpbmcoXG4gICAgICAgICAgTGlzdC5oZChwcmV2aW91cykuZCxcbiAgICAgICAgICBMaXN0LmhkKHByZXZpb3VzKS5zdGF0ZSxcbiAgICAgICAgICBTb21lKGVvKSxcbiAgICAgICAgKSxcbiAgICAgIG5leHQsXG4gICAgfVxuICB8IFN0ZXBQZW5kaW5nKGQsIHMsIF8pID0+IHtcbiAgICAgIGVsYWIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIGN1cnJlbnQ6IFN0ZXBQZW5kaW5nKGQsIHMsIFNvbWUoZW8pKSxcbiAgICAgIG5leHQsXG4gICAgfVxuICB9O1xufTtcblxubGV0IGluaXQgPSAoZWxhYjogREhFeHAudCkgPT4ge1xuICB7XG4gICAgZWxhYixcbiAgICBwcmV2aW91czogW10sXG4gICAgY3VycmVudDogU3RlcFBlbmRpbmcoZWxhYiwgRXZhbHVhdG9yU3RhdGUuaW5pdCwgTm9uZSksXG4gICAgbmV4dDogZGVjb21wb3NlKGVsYWIpLFxuICB9O1xufTtcblxubGV0IHVwZGF0ZV9yZXN1bHQgPVxuICAgIChcbiAgICAgIChcbiAgICAgICAgZDogREhFeHAudCxcbiAgICAgICAgc3RhdGU6IEV2YWx1YXRvclN0YXRlLnQsXG4gICAgICAgIG5leHRfZXZhbF9vYmpzOiBsaXN0KEV2YWxPYmoudCksXG4gICAgICAgIHNraXBwZWRfc3RlcHM6IGxpc3Qoc3RlcCksXG4gICAgICApLFxuICAgICAgczogdCxcbiAgICApID0+IHtcbiAgcHJldmlvdXM6IHNraXBwZWRfc3RlcHMgQCBzLnByZXZpb3VzLFxuICBjdXJyZW50OiBTdGVwcGVyT0soZCwgc3RhdGUpLFxuICBuZXh0OiBuZXh0X2V2YWxfb2JqcyxcbiAgZWxhYjogcy5lbGFiLFxufTtcblxubGV0IHJlYyBldmFsdWF0ZV9wZW5kaW5nID0gKH5zZXR0aW5ncywgczogdCkgPT4ge1xuICBzd2l0Y2ggKHMuY3VycmVudCkge1xuICB8IFN0ZXBwZXJPSyhfKVxuICB8IFN0ZXBUaW1lb3V0ID0+IHNcbiAgfCBTdGVwUGVuZGluZyhkLCBzdGF0ZSwgU29tZShlbykpID0+XG4gICAgbGV0IHN0YXRlX3JlZiA9IHJlZihzdGF0ZSk7XG4gICAgbGV0IGRfbG9jJyA9XG4gICAgICBzd2l0Y2ggKHRha2Vfc3RlcChzdGF0ZV9yZWYsIGVvLmVudiwgZW8uZF9sb2MpKSB7XG4gICAgICB8IFNvbWUoZCkgPT4gZFxuICAgICAgfCBOb25lID0+IHJhaXNlKEV4Y2VwdGlvbilcbiAgICAgIH07XG4gICAgbGV0IGQnID0gY29tcG9zZShlby5jdHgsIGRfbG9jJyk7XG4gICAge1xuICAgICAgZWxhYjogcy5lbGFiLFxuICAgICAgcHJldmlvdXM6IFtcbiAgICAgICAge2QsIGRfbG9jOiBlby5kX2xvYywgY3R4OiBlby5jdHgsIGtuZDogZW8ua25kLCBzdGF0ZX0sXG4gICAgICAgIC4uLnMucHJldmlvdXMsXG4gICAgICBdLFxuICAgICAgY3VycmVudDogU3RlcFBlbmRpbmcoZCcsIHN0YXRlX3JlZl4sIE5vbmUpLFxuICAgICAgbmV4dDogZGVjb21wb3NlKGQnKSxcbiAgICB9XG4gICAgfD4gZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MpO1xuICB8IFN0ZXBQZW5kaW5nKGQsIHN0YXRlLCBOb25lKSA9PlxuICAgIGxldCBuZXh0JyA9IHMubmV4dCB8PiBMaXN0Lm1hcChzaG91bGRfaGlkZV9ldmFsX29iaih+c2V0dGluZ3MpKTtcbiAgICBzd2l0Y2ggKExpc3QuZmluZF9vcHQoKChhY3QsIF8pKSA9PiBhY3QgPT0gRmlsdGVyQWN0aW9uLkV2YWwsIG5leHQnKSkge1xuICAgIHwgU29tZSgoXywgZW8pKSA9PlxuICAgICAge1xuICAgICAgICBlbGFiOiBzLmVsYWIsXG4gICAgICAgIHByZXZpb3VzOiBzLnByZXZpb3VzLFxuICAgICAgICBjdXJyZW50OiBTdGVwUGVuZGluZyhkLCBzdGF0ZSwgU29tZShlbykpLFxuICAgICAgICBuZXh0OiBuZXh0JyB8PiBMaXN0Lm1hcChzbmQpLFxuICAgICAgfVxuICAgICAgfD4gZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MpXG4gICAgfCBOb25lID0+IHtcbiAgICAgICAgZWxhYjogcy5lbGFiLFxuICAgICAgICBwcmV2aW91czogcy5wcmV2aW91cyxcbiAgICAgICAgY3VycmVudDogU3RlcHBlck9LKGQsIHN0YXRlKSxcbiAgICAgICAgbmV4dDogbmV4dCcgfD4gTGlzdC5tYXAoc25kKSxcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufTtcblxubGV0IHJlYyBldmFsdWF0ZV9mdWxsID0gKH5zZXR0aW5ncywgczogdCkgPT4ge1xuICBzd2l0Y2ggKHMuY3VycmVudCkge1xuICB8IFN0ZXBUaW1lb3V0ID0+IHNcbiAgfCBTdGVwcGVyT0soXykgd2hlbiBzLm5leHQgPT0gW10gPT4gc1xuICB8IFN0ZXBwZXJPSyhfKSA9PiBzIHw+IHN0ZXBfcGVuZGluZygwKSB8PiBldmFsdWF0ZV9mdWxsKH5zZXR0aW5ncylcbiAgfCBTdGVwUGVuZGluZyhfKSA9PlxuICAgIGV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzLCBzKSB8PiBldmFsdWF0ZV9mdWxsKH5zZXR0aW5ncylcbiAgfTtcbn07XG5cbmxldCB0aW1lb3V0ID1cbiAgZnVuXG4gIHwge2VsYWIsIHByZXZpb3VzLCBjdXJyZW50OiBTdGVwUGVuZGluZyhkLCBzdGF0ZSwgU29tZShlbykpLCBuZXh0fSA9PiB7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXM6IFtcbiAgICAgICAge2QsIGRfbG9jOiBlby5kX2xvYywgY3R4OiBlby5jdHgsIGtuZDogZW8ua25kLCBzdGF0ZX0sXG4gICAgICAgIC4uLnByZXZpb3VzLFxuICAgICAgXSxcbiAgICAgIGN1cnJlbnQ6IFN0ZXBUaW1lb3V0LFxuICAgICAgbmV4dCxcbiAgICB9XG4gIHwge2N1cnJlbnQ6IFN0ZXBUaW1lb3V0IHwgU3RlcHBlck9LKF8pIHwgU3RlcFBlbmRpbmcoXywgXywgTm9uZSksIF99IGFzIHMgPT4gcztcblxuLy8gbGV0IHJlYyBzdGVwX2ZvcndhcmQgPSAofnNldHRpbmdzLCBlOiBFdmFsT2JqLnQsIHM6IHQpID0+IHtcbi8vICAgbGV0IGN1cnJlbnQgPSBjb21wb3NlKGUuY3R4LCBlLmFwcGx5KCkpO1xuLy8gICBza2lwX3N0ZXBzKFxuLy8gICAgIH5zZXR0aW5ncyxcbi8vICAgICB7XG4vLyAgICAgICBjdXJyZW50LFxuLy8gICAgICAgcHJldmlvdXM6IFt7ZDogcy5jdXJyZW50LCBzdGVwOiBlfSwgLi4ucy5wcmV2aW91c10sXG4vLyAgICAgICBuZXh0OiBkZWNvbXBvc2UoY3VycmVudCksXG4vLyAgICAgfSxcbi8vICAgKTtcbi8vIH1cbi8vIGFuZCBza2lwX3N0ZXBzID0gKH5zZXR0aW5ncywgcykgPT4ge1xuLy8gICBzd2l0Y2ggKFxuLy8gICAgIExpc3QuZmluZF9vcHQoXG4vLyAgICAgICAoeDogRXZhbE9iai50KSA9PiBzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncywgeC5rbmQpLFxuLy8gICAgICAgcy5uZXh0LFxuLy8gICAgIClcbi8vICAgKSB7XG4vLyAgIHwgTm9uZSA9PiBzXG4vLyAgIHwgU29tZShlKSA9PiBzdGVwX2ZvcndhcmQofnNldHRpbmdzLCBlLCBzKVxuLy8gICB9O1xuLy8gfTtcblxubGV0IHJlYyB1bmRvX3BvaW50ID1cbiAgICAgICAgKH5zZXR0aW5ncyk6IChsaXN0KHN0ZXApID0+IG9wdGlvbigoc3RlcCwgbGlzdChzdGVwKSkpKSA9PlxuICBmdW5cbiAgfCBbXSA9PiBOb25lXG4gIHwgW3gsIC4uLnhzXSB3aGVuIHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCB4KSB8PiBmc3QgPT0gRXZhbCA9PlxuICAgIHVuZG9fcG9pbnQofnNldHRpbmdzLCB4cylcbiAgfCBbeCwgLi4ueHNdID0+IFNvbWUoKHgsIHhzKSk7XG5cbmxldCBzdGVwX2JhY2t3YXJkID0gKH5zZXR0aW5ncywgczogdCkgPT5cbiAgc3dpdGNoICh1bmRvX3BvaW50KH5zZXR0aW5ncywgcy5wcmV2aW91cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiY2Fubm90IHN0ZXAgYmFja3dhcmRzXCIpXG4gIHwgU29tZSgoeCwgeHMpKSA9PiB7XG4gICAgICBjdXJyZW50OiBTdGVwcGVyT0soeC5kLCB4LnN0YXRlKSxcbiAgICAgIG5leHQ6IGRlY29tcG9zZSh4LmQpLFxuICAgICAgcHJldmlvdXM6IHhzLFxuICAgICAgZWxhYjogcy5lbGFiLFxuICAgIH1cbiAgfTtcblxubGV0IGdldF9qdXN0aWZpY2F0aW9uOiBzdGVwX2tpbmQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTGV0QmluZCA9PiBcInN1YnN0aXR1dGlvblwiXG4gIHwgU2VxdWVuY2UgPT4gXCJzZXF1ZW5jZVwiXG4gIHwgRml4VW53cmFwID0+IFwidW5yb2xsIGZpeHBvaW50XCJcbiAgfCBVcGRhdGVUZXN0ID0+IFwidXBkYXRlIHRlc3RcIlxuICB8IEZ1bkFwID0+IFwiYXBwbHkgZnVuY3Rpb25cIlxuICB8IEJ1aWx0aW5XcmFwID0+IFwid3JhcCBidWlsdGluXCJcbiAgfCBCdWlsdGluQXAocykgPT4gXCJldmFsdWF0ZSBcIiArKyBzXG4gIHwgQmluSW50T3AoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSlcbiAgfCBCaW5GbG9hdE9wKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpID0+IFwiYXJpdGhtZXRpY1wiXG4gIHwgQmluSW50T3AoTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbClcbiAgfCBCaW5GbG9hdE9wKExlc3NUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW4gfCBHcmVhdGVyVGhhbk9yRXF1YWwpID0+IFwiY29tcGFyaXNvblwiXG4gIHwgQmluSW50T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpbkZsb2F0T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpblN0cmluZ09wKEVxdWFscykgPT4gXCJjaGVjayBlcXVhbGl0eVwiXG4gIHwgQmluU3RyaW5nT3AoQ29uY2F0KSA9PiBcInN0cmluZyBtYW5pcHVsYXRpb25cIlxuICB8IEJpbkJvb2xPcChfKSA9PiBcImJvb2xlYW4gbG9naWNcIlxuICB8IENvbmRpdGlvbmFsKF8pID0+IFwiY29uZGl0aW9uYWxcIlxuICB8IExpc3RDb25zID0+IFwibGlzdCBtYW5pcHVsYXRpb25cIlxuICB8IExpc3RDb25jYXQgPT4gXCJsaXN0IG1hbmlwdWxhdGlvblwiXG4gIHwgQ2FzZUFwcGx5ID0+IFwiY2FzZSBzZWxlY3Rpb25cIlxuICB8IENhc2VOZXh0ID0+IFwiY2FzZSBkaXNjYXJkaW5nXCJcbiAgfCBQcm9qZWN0aW9uID0+IFwicHJvamVjdGlvblwiIC8vIFRPRE8oTWF0dCk6IFdlIGRvbid0IHdhbnQgdG8gc2hvdyBwcm9qZWN0aW9uIHRvIHRoZSB1c2VyXG4gIHwgSW52YWxpZFN0ZXAgPT4gXCJlcnJvclwiXG4gIHwgVmFyTG9va3VwID0+IFwidmFyaWFibGUgbG9va3VwXCJcbiAgfCBDYXN0QXBcbiAgfCBDYXN0ID0+IFwiY2FzdCBjYWxjdWx1c1wiXG4gIHwgQ29tcGxldGVGaWx0ZXIgPT4gXCJ1bmlkZW50aWZpZWQgc3RlcFwiXG4gIHwgQ29tcGxldGVDbG9zdXJlID0+IFwidW5pZGVudGlmaWVkIHN0ZXBcIlxuICB8IEZ1bkNsb3N1cmUgPT4gXCJ1bmlkZW50aWZpZWQgc3RlcFwiXG4gIHwgU2tpcCA9PiBcInNraXBwZWQgc3RlcHNcIjtcblxubGV0IGdldF9oaXN0b3J5ID0gKH5zZXR0aW5ncywgc3RlcHBlcikgPT4ge1xuICBsZXQgcmVjIGdldF9oaXN0b3J5JzpcbiAgICBsaXN0KHN0ZXApID0+IChsaXN0KHN0ZXApLCBsaXN0KHN0ZXBfd2l0aF9wcmV2aW91cykpID1cbiAgICBmdW5cbiAgICB8IFtdID0+IChbXSwgW10pXG4gICAgfCBbc3RlcCwgLi4uc3RlcHNdID0+IHtcbiAgICAgICAgbGV0IChoaWRkZW4sIHNzKSA9IGdldF9oaXN0b3J5JyhzdGVwcyk7XG4gICAgICAgIHN3aXRjaCAoc3RlcCB8PiBzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncykgfD4gZnN0KSB7XG4gICAgICAgIHwgRXZhbCA9PiAoW3N0ZXAsIC4uLmhpZGRlbl0sIHNzKVxuICAgICAgICB8IFN0ZXAgPT4gKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGVwLFxuICAgICAgICAgICAgICAgIHByZXZpb3VzOlxuICAgICAgICAgICAgICAgICAgT3B0aW9uLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHg6IHN0ZXBfd2l0aF9wcmV2aW91cykgPT4geC5zdGVwLFxuICAgICAgICAgICAgICAgICAgICBMaXN0Lm50aF9vcHQoc3MsIDApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBoaWRkZW4sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC4uLnNzLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgICB9O1xuICBzdGVwcGVyLnByZXZpb3VzIHw+IGdldF9oaXN0b3J5Jztcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudCA9IHtcbiAgZWxhYjogREhFeHAudCxcbiAgcHJldmlvdXM6IGxpc3Qoc3RlcCksXG4gIGN1cnJlbnQsXG59O1xuXG5sZXQgKHNleHBfb2ZfcGVyc2lzdGVudCwgcGVyc2lzdGVudF9vZl9zZXhwKSA9XG4gIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oXG4gICAgc2V4cF9vZl9wZXJzaXN0ZW50LFxuICAgIHBlcnNpc3RlbnRfb2Zfc2V4cCxcbiAgKTtcblxuLy8gUmVtb3ZlIEV2YWxPYmoudCBvYmplY3RzIGZyb20gc3RlcHBlciB0byBwcmV2ZW50IHByb2JsZW1zIHdoZW4gbG9hZGluZ1xubGV0IHRvX3BlcnNpc3RlbnQ6IHQgPT4gcGVyc2lzdGVudCA9XG4gIGZ1blxuICB8IHtlbGFiLCBwcmV2aW91cywgY3VycmVudDogU3RlcFBlbmRpbmcoZCwgc3RhdGUsIFNvbWUoXykpLCBffSA9PiB7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBjdXJyZW50OiBTdGVwUGVuZGluZyhkLCBzdGF0ZSwgTm9uZSksXG4gICAgfVxuICB8IHtlbGFiLCBwcmV2aW91cywgY3VycmVudCwgX30gPT4ge2VsYWIsIHByZXZpb3VzLCBjdXJyZW50fTtcblxubGV0IGZyb21fcGVyc2lzdGVudDogcGVyc2lzdGVudCA9PiB0ID1cbiAgKHtlbGFiLCBwcmV2aW91cywgY3VycmVudH0pID0+IHtcbiAgICBsZXQgcyA9IHtlbGFiLCBwcmV2aW91cywgY3VycmVudCwgbmV4dDogW119O1xuICAgIHtlbGFiLCBwcmV2aW91cywgY3VycmVudCwgbmV4dDogZGVjb21wb3NlKGN1cnJlbnRfZXhwcihzKSl9O1xuICB9O1xuIiwib3BlbiBVdGlsO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gWmlwcGVyO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBpZWNlX2dvYWwgPVxuICB8IEdyb3V0O1xuXG5sZXQgb2ZfcGllY2VfZ29hbCA9XG4gIGZ1blxuICB8IEdyb3V0ID0+IChcbiAgICAgIGZ1blxuICAgICAgfCBQaWVjZS5Hcm91dChfKSA9PiB0cnVlXG4gICAgICB8IF8gPT4gZmFsc2VcbiAgICApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdvYWwgPVxuICB8IFBvaW50KE1lYXN1cmVkLlBvaW50LnQpXG4gIHwgUGllY2UocGllY2VfZ29hbCwgRGlyZWN0aW9uLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG1vdmUgPVxuICB8IEV4dHJlbWUocGxhbmFyKVxuICB8IExvY2FsKHBsYW5hcilcbiAgfCBHb2FsKGdvYWwpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGp1bXBfdGFyZ2V0ID1cbiAgfCBUaWxlSWQoSWQudClcbiAgfCBCaW5kaW5nU2l0ZU9mSW5kaWNhdGVkVmFyO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHJlbCA9XG4gIHwgQ3VycmVudFxuICB8IElkKElkLnQsIERpcmVjdGlvbi50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWxlY3QgPVxuICB8IEFsbFxuICB8IFJlc2l6ZShtb3ZlKVxuICB8IFNtYXJ0XG4gIHwgVGlsZShyZWwpXG4gIHwgVGVybShyZWwpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE1vdmUobW92ZSlcbiAgfCBNb3ZlVG9OZXh0SG9sZShEaXJlY3Rpb24udClcbiAgfCBKdW1wKGp1bXBfdGFyZ2V0KVxuICB8IFNlbGVjdChzZWxlY3QpXG4gIHwgVW5zZWxlY3Qob3B0aW9uKERpcmVjdGlvbi50KSlcbiAgfCBEZXN0cnVjdChEaXJlY3Rpb24udClcbiAgfCBJbnNlcnQoc3RyaW5nKVxuICB8IFJvdGF0ZUJhY2twYWNrXG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQocGxhbmFyKVxuICB8IFBpY2tfdXBcbiAgfCBQdXRfZG93bjtcblxubW9kdWxlIEZhaWx1cmUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IENhbnRfbW92ZVxuICAgIHwgQ2FudF9pbnNlcnRcbiAgICB8IENhbnRfZGVzdHJ1Y3RcbiAgICB8IENhbnRfc2VsZWN0XG4gICAgfCBDYW50X3B1dF9kb3duO1xufTtcblxubW9kdWxlIFJlc3VsdCA9IHtcbiAgaW5jbHVkZSBSZXN1bHQ7XG4gIHR5cGUgdCgnc3VjY2VzcykgPSBSZXN1bHQudCgnc3VjY2VzcywgRmFpbHVyZS50KTtcbn07XG5cbmxldCBpc19lZGl0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBJbnNlcnQoXylcbiAgfCBEZXN0cnVjdChfKVxuICB8IFBpY2tfdXBcbiAgfCBQdXRfZG93biA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbm1vZHVsZSBNZXRhID0ge1xuICB0eXBlIHQgPSB7XG4gICAgY29sX3RhcmdldDogaW50LFxuICAgIHRvdWNoZWQ6IFRvdWNoZWQudCxcbiAgICBtZWFzdXJlZDogTWVhc3VyZWQudCxcbiAgICB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy50LFxuICAgIHVuc2VsZWN0ZWQ6IFNlZ21lbnQudCxcbiAgICBzZWdtZW50OiBTZWdtZW50LnQsXG4gICAgdmlld190ZXJtOiBUZXJtLlVFeHAudCxcbiAgICB0ZXJtczogVGVybU1hcC50LFxuICAgIHRpbGVzOiBUaWxlTWFwLnQsXG4gICAgaG9sZXM6IGxpc3QoR3JvdXQudCksXG4gICAgYnVmZmVyX2lkczogbGlzdChJZC50KSxcbiAgfTtcblxuICBsZXQgaW5pdCA9ICh6OiBaaXBwZXIudCkgPT4ge1xuICAgIGxldCB1bnNlbGVjdGVkID0gWmlwcGVyLnVuc2VsZWN0X2FuZF96aXAoeik7XG4gICAgbGV0ICh2aWV3X3Rlcm0sIHRlcm1zKSA9IE1ha2VUZXJtLmdvKHVuc2VsZWN0ZWQpO1xuICAgIHtcbiAgICAgIGNvbF90YXJnZXQ6IDAsXG4gICAgICB0b3VjaGVkOiBUb3VjaGVkLmVtcHR5LFxuICAgICAgbWVhc3VyZWQ6IE1lYXN1cmVkLm9mX3NlZ21lbnQodW5zZWxlY3RlZCksXG4gICAgICB1bnNlbGVjdGVkLFxuICAgICAgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMubWsodW5zZWxlY3RlZCksXG4gICAgICBzZWdtZW50OiBaaXBwZXIuemlwKHopLFxuICAgICAgdGlsZXM6IFRpbGVNYXAubWsodW5zZWxlY3RlZCksXG4gICAgICB2aWV3X3Rlcm0sXG4gICAgICB0ZXJtcyxcbiAgICAgIGhvbGVzOiBTZWdtZW50LmhvbGVzKHVuc2VsZWN0ZWQpLFxuICAgICAgYnVmZmVyX2lkczogU2VsZWN0aW9uLmJ1ZmZlcl9pZHMoei5zZWxlY3Rpb24pLFxuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIHR5cGUgUyA9IHtcbiAgICBsZXQgdG91Y2hlZDogVG91Y2hlZC50O1xuICAgIGxldCBtZWFzdXJlZDogTWVhc3VyZWQudDtcbiAgICBsZXQgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudDtcbiAgICBsZXQgY29sX3RhcmdldDogaW50O1xuICB9O1xuICBsZXQgbW9kdWxlX29mX3QgPSAobTogdCk6IChtb2R1bGUgUykgPT5cbiAgICAobW9kdWxlXG4gICAgIHtcbiAgICAgICBsZXQgdG91Y2hlZCA9IG0udG91Y2hlZDtcbiAgICAgICBsZXQgbWVhc3VyZWQgPSBtLm1lYXN1cmVkO1xuICAgICAgIGxldCB0ZXJtX3JhbmdlcyA9IG0udGVybV9yYW5nZXM7XG4gICAgICAgbGV0IGNvbF90YXJnZXQgPSBtLmNvbF90YXJnZXQ7XG4gICAgIH0pO1xuXG4gIC8vIHNob3VsZCBub3QgYmUgc2VyaWFsaXppbmdcbiAgbGV0IHNleHBfb2ZfdCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS5zZXhwX29mX3RcIik7XG4gIGxldCB0X29mX3NleHAgPSBfID0+IGZhaWx3aXRoKFwiRWRpdG9yLk1ldGEudF9vZl9zZXhwXCIpO1xuICBsZXQgeW9qc29uX29mX3QgPSBfID0+IGZhaWx3aXRoKFwiRWRpdG9yLk1ldGEueW9qc29uX29mX3RcIik7XG4gIGxldCB0X29mX3lvanNvbiA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS50X29mX3lvanNvblwiKTtcblxuICBsZXQgbmV4dCA9XG4gICAgICAofmVmZmVjdHM6IGxpc3QoRWZmZWN0LnQpPVtdLCBhOiBBY3Rpb24udCwgejogWmlwcGVyLnQsIG1ldGE6IHQpOiB0ID0+IHtcbiAgICBsZXQge3RvdWNoZWQsIG1lYXN1cmVkLCBjb2xfdGFyZ2V0LCBffSA9IG1ldGE7XG4gICAgbGV0IHRvdWNoZWQgPSBUb3VjaGVkLnVwZGF0ZShUaW1lLnRpY2soKSwgZWZmZWN0cywgdG91Y2hlZCk7XG4gICAgbGV0IGlzX2VkaXQgPSBBY3Rpb24uaXNfZWRpdChhKTtcbiAgICBsZXQgdW5zZWxlY3RlZCA9IGlzX2VkaXQgPyBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCh6KSA6IG1ldGEudW5zZWxlY3RlZDtcbiAgICBsZXQgbWVhc3VyZWQgPVxuICAgICAgaXNfZWRpdFxuICAgICAgICA/IE1lYXN1cmVkLm9mX3NlZ21lbnQofnRvdWNoZWQsIH5vbGQ9bWVhc3VyZWQsIHVuc2VsZWN0ZWQpIDogbWVhc3VyZWQ7XG4gICAgbGV0IGNvbF90YXJnZXQgPVxuICAgICAgc3dpdGNoIChhKSB7XG4gICAgICB8IE1vdmUoTG9jYWwoVXAgfCBEb3duKSlcbiAgICAgIHwgU2VsZWN0KFJlc2l6ZShMb2NhbChVcCB8IERvd24pKSkgPT4gY29sX3RhcmdldFxuICAgICAgfCBfID0+IFppcHBlci5jYXJldF9wb2ludChtZWFzdXJlZCwgeikuY29sXG4gICAgICB9O1xuICAgIGxldCAodmlld190ZXJtLCB0ZXJtcykgPVxuICAgICAgaXNfZWRpdCA/IE1ha2VUZXJtLmdvKHVuc2VsZWN0ZWQpIDogKG1ldGEudmlld190ZXJtLCBtZXRhLnRlcm1zKTtcbiAgICB7XG4gICAgICBjb2xfdGFyZ2V0LFxuICAgICAgdG91Y2hlZCxcbiAgICAgIG1lYXN1cmVkLFxuICAgICAgdW5zZWxlY3RlZCxcbiAgICAgIHRlcm1fcmFuZ2VzOiBpc19lZGl0ID8gVGVybVJhbmdlcy5tayh1bnNlbGVjdGVkKSA6IG1ldGEudGVybV9yYW5nZXMsXG4gICAgICBzZWdtZW50OiBaaXBwZXIuemlwKHopLFxuICAgICAgdGlsZXM6IGlzX2VkaXQgPyBUaWxlTWFwLm1rKHVuc2VsZWN0ZWQpIDogbWV0YS50aWxlcyxcbiAgICAgIHZpZXdfdGVybSxcbiAgICAgIHRlcm1zLFxuICAgICAgaG9sZXM6IGlzX2VkaXQgPyBTZWdtZW50LmhvbGVzKHVuc2VsZWN0ZWQpIDogbWV0YS5ob2xlcyxcbiAgICAgIGJ1ZmZlcl9pZHM6IFNlbGVjdGlvbi5idWZmZXJfaWRzKHouc2VsZWN0aW9uKSxcbiAgICB9O1xuICB9O1xufTtcblxubW9kdWxlIFN0YXRlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICB6aXBwZXI6IFppcHBlci50LFxuICAgIFtAb3BhcXVlXVxuICAgIG1ldGE6IE1ldGEudCxcbiAgfTtcblxuICBsZXQgaW5pdCA9IHppcHBlciA9PiB7emlwcGVyLCBtZXRhOiBNZXRhLmluaXQoemlwcGVyKX07XG5cbiAgbGV0IG5leHQgPSAofmVmZmVjdHM6IGxpc3QoRWZmZWN0LnQpPVtdLCBhOiBBY3Rpb24udCwgejogWmlwcGVyLnQsIHN0YXRlKSA9PiB7XG4gICAgemlwcGVyOiB6LFxuICAgIG1ldGE6IE1ldGEubmV4dCh+ZWZmZWN0cywgYSwgeiwgc3RhdGUubWV0YSksXG4gIH07XG59O1xuXG5tb2R1bGUgSGlzdG9yeSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGFmZml4ID0gbGlzdCgoQWN0aW9uLnQsIFN0YXRlLnQpKTtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSAoYWZmaXgsIGFmZml4KTtcblxuICBsZXQgZW1wdHkgPSAoW10sIFtdKTtcblxuICBsZXQgYWRkID0gKGE6IEFjdGlvbi50LCBzdGF0ZTogU3RhdGUudCwgKHByZSwgXyk6IHQpOiB0ID0+IChcbiAgICBbKGEsIHN0YXRlKSwgLi4ucHJlXSxcbiAgICBbXSxcbiAgKTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdGU6IFN0YXRlLnQsXG4gIGhpc3Rvcnk6IEhpc3RvcnkudCxcbiAgcmVhZF9vbmx5OiBib29sLFxufTtcblxubGV0IGluaXQgPSAofnJlYWRfb25seT1mYWxzZSwgeikgPT4ge1xuICBzdGF0ZTogU3RhdGUuaW5pdCh6KSxcbiAgaGlzdG9yeTogSGlzdG9yeS5lbXB0eSxcbiAgcmVhZF9vbmx5LFxufTtcbmxldCBlbXB0eSA9IGlkID0+IGluaXQofnJlYWRfb25seT1mYWxzZSwgWmlwcGVyLmluaXQoaWQpKTtcblxubGV0IHVwZGF0ZV96ID0gKGY6IFppcHBlci50ID0+IFppcHBlci50LCBlZDogdCkgPT4ge1xuICAuLi5lZCxcbiAgc3RhdGU6IHtcbiAgICAuLi5lZC5zdGF0ZSxcbiAgICB6aXBwZXI6IGYoZWQuc3RhdGUuemlwcGVyKSxcbiAgfSxcbn07XG5sZXQgcHV0X3ogPSAoejogWmlwcGVyLnQpID0+IHVwZGF0ZV96KF8gPT4geik7XG5cbmxldCB1cGRhdGVfel9vcHQgPSAoZjogWmlwcGVyLnQgPT4gb3B0aW9uKFppcHBlci50KSwgZWQ6IHQpID0+IHtcbiAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgbGV0KyB6ID0gZihlZC5zdGF0ZS56aXBwZXIpO1xuICBwdXRfeih6LCBlZCk7XG59O1xuXG5sZXQgbmV3X3N0YXRlID1cbiAgICAofmVmZmVjdHM6IGxpc3QoRWZmZWN0LnQpPVtdLCBhOiBBY3Rpb24udCwgejogWmlwcGVyLnQsIGVkOiB0KTogdCA9PiB7XG4gIGxldCBzdGF0ZSA9IFN0YXRlLm5leHQofmVmZmVjdHMsIGEsIHosIGVkLnN0YXRlKTtcbiAgbGV0IGhpc3RvcnkgPSBIaXN0b3J5LmFkZChhLCBlZC5zdGF0ZSwgZWQuaGlzdG9yeSk7XG4gIHtzdGF0ZSwgaGlzdG9yeSwgcmVhZF9vbmx5OiBlZC5yZWFkX29ubHl9O1xufTtcblxubGV0IGNhcmV0X3BvaW50ID0gKGVkOiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIGxldCBTdGF0ZS57emlwcGVyLCBtZXRhfSA9IGVkLnN0YXRlO1xuICBaaXBwZXIuY2FyZXRfcG9pbnQobWV0YS5tZWFzdXJlZCwgemlwcGVyKTtcbn07XG5cbmxldCB1bmRvID0gKGVkOiB0KSA9PlxuICBzd2l0Y2ggKGVkLmhpc3RvcnkpIHtcbiAgfCAoW10sIF8pID0+IE5vbmVcbiAgfCAoWyhhLCBwcmV2KSwgLi4uYmVmb3JlXSwgYWZ0ZXIpID0+XG4gICAgU29tZSh7XG4gICAgICBzdGF0ZTogcHJldixcbiAgICAgIGhpc3Rvcnk6IChiZWZvcmUsIFsoYSwgZWQuc3RhdGUpLCAuLi5hZnRlcl0pLFxuICAgICAgcmVhZF9vbmx5OiBlZC5yZWFkX29ubHksXG4gICAgfSlcbiAgfTtcbmxldCByZWRvID0gKGVkOiB0KSA9PlxuICBzd2l0Y2ggKGVkLmhpc3RvcnkpIHtcbiAgfCAoXywgW10pID0+IE5vbmVcbiAgfCAoYmVmb3JlLCBbKGEsIG5leHQpLCAuLi5hZnRlcl0pID0+XG4gICAgU29tZSh7XG4gICAgICBzdGF0ZTogbmV4dCxcbiAgICAgIGhpc3Rvcnk6IChbKGEsIGVkLnN0YXRlKSwgLi4uYmVmb3JlXSwgYWZ0ZXIpLFxuICAgICAgcmVhZF9vbmx5OiBlZC5yZWFkX29ubHksXG4gICAgfSlcbiAgfTtcblxubGV0IGNhbl91bmRvID0gZWQgPT4gT3B0aW9uLmlzX3NvbWUodW5kbyhlZCkpO1xubGV0IGNhbl9yZWRvID0gZWQgPT4gT3B0aW9uLmlzX3NvbWUocmVkbyhlZCkpO1xuXG5sZXQgc2V0X3JlYWRfb25seSA9IChlZCwgcmVhZF9vbmx5KSA9PiB7Li4uZWQsIHJlYWRfb25seX07XG5cbmxldCB0cmFpbGluZ19ob2xlX2N0eCA9IChlZDogdCwgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQpID0+IHtcbiAgbGV0IHNlZ21lbnQgPSBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcChlZC5zdGF0ZS56aXBwZXIpO1xuICBsZXQgY29udmV4X2dyb3V0ID0gU2VnbWVudC5jb252ZXhfZ3JvdXQoc2VnbWVudCk7XG4gIC8vIHByaW50X2VuZGxpbmUoU3RyaW5nLmNvbmNhdChcIjsgXCIsIExpc3QubWFwKEdyb3V0LnNob3csIGNvbnZleF9ncm91dCkpKTtcbiAgbGV0IGxhc3QgPSBVdGlsLkxpc3RVdGlsLmxhc3Rfb3B0KGNvbnZleF9ncm91dCk7XG4gIHN3aXRjaCAobGFzdCkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoZ3JvdXQpID0+XG4gICAgbGV0IGlkID0gZ3JvdXQuaWQ7XG4gICAgbGV0IGluZm8gPSBJZC5NYXAuZmluZF9vcHQoaWQsIGluZm9fbWFwKTtcbiAgICBzd2l0Y2ggKGluZm8pIHtcbiAgICB8IFNvbWUoaW5mbykgPT4gU29tZShJbmZvLmN0eF9vZihpbmZvKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIH07XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZhYmlsaXR5ID1cbiAgfCBDYW5FbnRlcihpbnQsIGludClcbiAgfCBDYW5QYXNzXG4gIHwgQ2FudEV2ZW47XG5cbmxldCBtb3ZhYmlsaXR5ID0gKGNodW5raW5lc3M6IGNodW5raW5lc3MsIGxhYmVsLCBkZWxpbV9pZHgpOiBtb3ZhYmlsaXR5ID0+IHtcbiAgYXNzZXJ0KGRlbGltX2lkeCA8IExpc3QubGVuZ3RoKGxhYmVsKSk7XG4gIHN3aXRjaCAoY2h1bmtpbmVzcywgbGFiZWwsIGRlbGltX2lkeCkge1xuICB8IChCeUNoYXIsIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIFtfXSwgMCkgPT5cbiAgICBsZXQgY2hhcl9tYXggPSBUb2tlbi5sZW5ndGgoTGlzdC5udGgobGFiZWwsIGRlbGltX2lkeCkpIC0gMjtcbiAgICBjaGFyX21heCA8IDAgPyBDYW5QYXNzIDogQ2FuRW50ZXIoZGVsaW1faWR4LCBjaGFyX21heCk7XG4gIHwgKEJ5VG9rZW4sIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIF8sIF8pID0+IENhblBhc3NcbiAgfTtcbn07XG5cbmxldCBuZWlnaGJvcl9tb3ZhYmlsaXR5ID1cbiAgICAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywge3JlbGF0aXZlczoge3NpYmxpbmdzLCBhbmNlc3RvcnN9LCBffTogdClcbiAgICA6IChtb3ZhYmlsaXR5LCBtb3ZhYmlsaXR5KSA9PiB7XG4gIGxldCBtb3ZhYmlsaXR5ID0gbW92YWJpbGl0eShjaHVua2luZXNzKTtcbiAgbGV0IChzdXBlcm5oYnJfbCwgc3VwZXJuaGJyX3IpID1cbiAgICBzd2l0Y2ggKGFuY2VzdG9ycykge1xuICAgIHwgW10gPT4gKENhbnRFdmVuLCBDYW50RXZlbilcbiAgICB8IFsoe2NoaWxkcmVuOiAobF9raWRzLCBfKSwgbGFiZWwsIF99LCBfKSwgLi4uX10gPT4gKFxuICAgICAgICBtb3ZhYmlsaXR5KGxhYmVsLCBMaXN0Lmxlbmd0aChsX2tpZHMpKSxcbiAgICAgICAgbW92YWJpbGl0eShsYWJlbCwgTGlzdC5sZW5ndGgobF9raWRzKSArIDEpLFxuICAgICAgKVxuICAgIH07XG4gIGxldCAobF9uaGJyLCByX25oYnIpID0gU2libGluZ3MubmVpZ2hib3JzKHNpYmxpbmdzKTtcbiAgbGV0IGwgPVxuICAgIHN3aXRjaCAobF9uaGJyKSB7XG4gICAgfCBTb21lKFRpbGUoe2xhYmVsLCBffSkpID0+IG1vdmFiaWxpdHkobGFiZWwsIExpc3QubGVuZ3RoKGxhYmVsKSAtIDEpXG4gICAgfCBTb21lKFNlY29uZGFyeSh3KSkgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudCh3KSA9PlxuICAgICAgLy8gQ29tbWVudHMgYXJlIGFsd2F5cyBsZW5ndGggPj0gMlxuICAgICAgbGV0IGNvbnRlbnRfc3RyaW5nID0gU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KTtcbiAgICAgIENhbkVudGVyKFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAxLFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyLFxuICAgICAgKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfbFxuICAgIH07XG4gIGxldCByID1cbiAgICBzd2l0Y2ggKHJfbmhicikge1xuICAgIHwgU29tZShUaWxlKHtsYWJlbCwgX30pKSA9PiBtb3ZhYmlsaXR5KGxhYmVsLCAwKVxuICAgIHwgU29tZShTZWNvbmRhcnkodykpIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQodykgPT5cbiAgICAgIC8vIENvbW1lbnRzIGFyZSBhbHdheXMgbGVuZ3RoID49IDJcbiAgICAgIGxldCBjb250ZW50X3N0cmluZyA9IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCk7XG4gICAgICBDYW5FbnRlcigwLCBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfclxuICAgIH07XG4gIChsLCByKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE06IEVkaXRvci5NZXRhLlMpID0+IHtcbiAgbGV0IGNhcmV0X3BvaW50ID0gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQpO1xuXG4gIGxldCBwb3Bfb3V0ID0geiA9PiBTb21lKHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikpO1xuICBsZXQgcG9wX21vdmUgPSAoZCwgeikgPT4geiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShkKTtcbiAgbGV0IGlubmVyX2luY3IgPSAoZGVsaW0sIGMsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRlbGltLCBjICsgMSksIHopKTtcbiAgbGV0IGlubmVyX2RlY3IgPSB6ID0+IFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSk7XG4gIGxldCBpbm5lcl9zdGFydCA9IChkX2luaXQsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRfaW5pdCwgMCksIHopKTtcbiAgbGV0IGlubmVyX2VuZCA9IChkLCBkX2luaXQsIGNfbWF4LCB6KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2luaXQsIGNfbWF4KSkgfD4gWmlwcGVyLm1vdmUoZCk7XG5cbiAgbGV0IHByaW1hcnkgPSAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIHN3aXRjaCAoZCwgei5jYXJldCwgbmVpZ2hib3JfbW92YWJpbGl0eShjaHVua2luZXNzLCB6KSkge1xuICAgIC8qIHRoaXMgY2FzZSBtYXliZSBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCBjdXJyZW50bHkgY292ZXJzIGFuIGVkZ2VcbiAgICAgICAoc2VsZWN0IGFuIG9wZW4gcGFyZW5zIHRvIGxlZnQgb2YgYSBtdWx0aWNoYXIgdG9rZW4gYW5kIHByZXNzIGxlZnQpICovXG4gICAgfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKExlZnQsIE91dGVyLCAoQ2FuRW50ZXIoZGxtLCBjX21heCksIF8pKSA9PlxuICAgICAgaW5uZXJfZW5kKGQsIGRsbSwgY19tYXgsIHopXG4gICAgfCAoTGVmdCwgT3V0ZXIsIF8pID0+IFppcHBlci5tb3ZlKGQsIHopXG4gICAgfCAoTGVmdCwgSW5uZXIoXyksIF8pIHdoZW4gY2h1bmtpbmVzcyA9PSBCeVRva2VuID0+IHBvcF9vdXQoeilcbiAgICB8IChMZWZ0LCBJbm5lcihfKSwgXykgPT5cbiAgICAgIFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSlcbiAgICB8IChSaWdodCwgT3V0ZXIsIChfLCBDYW5FbnRlcihkX2luaXQsIF8pKSkgPT4gaW5uZXJfc3RhcnQoZF9pbml0LCB6KVxuICAgIHwgKFJpZ2h0LCBPdXRlciwgXykgPT4gWmlwcGVyLm1vdmUoZCwgeilcbiAgICB8IChSaWdodCwgSW5uZXIoXywgYyksIChfLCBDYW5FbnRlcihfLCBjX21heCkpKSB3aGVuIGMgPT0gY19tYXggPT5cbiAgICAgIHBvcF9tb3ZlKGQsIHopXG4gICAgfCAoUmlnaHQsIElubmVyKF8pLCBfKSB3aGVuIGNodW5raW5lc3MgPT0gQnlUb2tlbiA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKFJpZ2h0LCBJbm5lcihkZWxpbSwgYyksIF8pID0+IGlubmVyX2luY3IoZGVsaW0sIGMsIHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgaXNfYXRfc2lkZV9vZl9yb3cgPSAoZDogRGlyZWN0aW9uLnQsIHo6IFppcHBlci50KSA9PiB7XG4gICAgbGV0IE1lYXN1cmVkLlBvaW50Lntyb3csIGNvbH0gPSBjYXJldF9wb2ludCh6KTtcbiAgICBzd2l0Y2ggKFppcHBlci5tb3ZlKGQsIHopKSB7XG4gICAgfCBOb25lID0+IHRydWVcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCBNZWFzdXJlZC5Qb2ludC57cm93OiByb3dwLCBjb2w6IGNvbHB9ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgICByb3cgIT0gcm93cCB8fCBjb2wgPT0gY29scDtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBkb190b3dhcmRzID1cbiAgICAgIChcbiAgICAgICAgfmFuY2hvcjogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpPT8sXG4gICAgICAgIGY6IChEaXJlY3Rpb24udCwgdCkgPT4gb3B0aW9uKHQpLFxuICAgICAgICBnb2FsOiBNZWFzdXJlZC5Qb2ludC50LFxuICAgICAgICB6OiB0LFxuICAgICAgKVxuICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGQgPVxuICAgICAgZ29hbC5yb3cgPCBpbml0LnJvdyB8fCBnb2FsLnJvdyA9PSBpbml0LnJvdyAmJiBnb2FsLmNvbCA8IGluaXQuY29sXG4gICAgICAgID8gRGlyZWN0aW9uLkxlZnQgOiBSaWdodDtcbiAgICBsZXQgcmVjIGdvID0gKHByZXY6IHQsIGN1cnI6IHQpID0+IHtcbiAgICAgIGxldCBjdXJyX3AgPSBjYXJldF9wb2ludChjdXJyKTtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1lYXN1cmVkLlBvaW50LmRjb21wKGQsIGN1cnJfcC5jb2wsIGdvYWwuY29sKSxcbiAgICAgICAgTWVhc3VyZWQuUG9pbnQuZGNvbXAoZCwgY3Vycl9wLnJvdywgZ29hbC5yb3cpLFxuICAgICAgKSB7XG4gICAgICB8IChFeGFjdCwgRXhhY3QpID0+IGN1cnJcbiAgICAgIHwgKF8sIE92ZXIpID0+IHByZXZcbiAgICAgIHwgKF8sIFVuZGVyKVxuICAgICAgfCAoVW5kZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGYoZCwgY3VycikpIHtcbiAgICAgICAgfCBOb25lID0+IGN1cnJcbiAgICAgICAgfCBTb21lKG5leHQpID0+IGdvKGN1cnIsIG5leHQpXG4gICAgICAgIH1cbiAgICAgIHwgKE92ZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGFuY2hvcikge1xuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIHdoZW4geW91J3JlIChlZykgeW91J3JlIHRyeWluZ1xuICAgICAgICAgICAgIHRvIG1vdmUgZG93biwgYnV0IHlvdSdyZSBhdCB0aGUgcmlnaHQgZW5kIG9mIGEgcm93XG4gICAgICAgICAgICAgYW5kIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgbmV4dCByb3cgaXMgZnVydGhlclxuICAgICAgICAgICAgIHJpZ2h0IHRoYW4gdGhlIGN1cnJlbnQgcm93J3MgZW5kLiBJbiB0aGlzIGNhc2Ugd2VcbiAgICAgICAgICAgICB3YW50IHRvIHByb2dyZXNzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbmV3XG4gICAgICAgICAgICAgcG9zaXRpb24gd291bGQgYmUgY2xvc2VyIG9yIGZ1dGhlciBmcm9tIHRoZVxuICAgICAgICAgICAgIGdvYWwgY29sICovXG4gICAgICAgICAgaXNfYXRfc2lkZV9vZl9yb3coRGlyZWN0aW9uLnRvZ2dsZShkKSwgY3VycilcbiAgICAgICAgICAgID8gY3VyclxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGxldCBkX2N1cnIgPSBhYnMoY3Vycl9wLmNvbCAtIGdvYWwuY29sKTtcbiAgICAgICAgICAgICAgbGV0IGRfcHJldiA9IGFicyhjYXJldF9wb2ludChwcmV2KS5jb2wgLSBnb2FsLmNvbCk7XG4gICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gZ29pbmcgb3ZlciB3aGVuIGVxdWFsXG4gICAgICAgICAgICAgIGRfcHJldiA8IGRfY3VyciA/IHByZXYgOiBjdXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB8IFNvbWUoYW5jaG9yKSA9PlxuICAgICAgICAgIGxldCBhbmNob3JfZCA9XG4gICAgICAgICAgICBnb2FsLnJvdyA8IGFuY2hvci5yb3dcbiAgICAgICAgICAgIHx8IGdvYWwucm93ID09IGFuY2hvci5yb3dcbiAgICAgICAgICAgICYmIGdvYWwuY29sIDwgYW5jaG9yLmNvbFxuICAgICAgICAgICAgICA/IERpcmVjdGlvbi5MZWZ0IDogUmlnaHQ7XG4gICAgICAgICAgYW5jaG9yX2QgPT0gZCA/IGN1cnIgOiBwcmV2O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IHJlcyA9IGdvKHosIHopO1xuICAgIE1lYXN1cmVkLlBvaW50LmVxdWFscyhjYXJldF9wb2ludChyZXMpLCBjYXJldF9wb2ludCh6KSlcbiAgICAgID8gTm9uZSA6IFNvbWUocmVzKTtcbiAgfTtcbiAgbGV0IGRvX3ZlcnRpY2FsID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIC8qIEhlcmUgZiBzaG91bGQgYmUgYSBmdW5jdGlvbiB3aGljaCByZXN1bHRzIGluIHN0cmljdCBkLXdhcmRzXG4gICAgICAgbW92ZW1lbnQgb2YgdGhlIGNhcmV0LiBJdGVyYXRlIGYgdW50aWwgd2UgZ2V0IHRvIHRoZSBjbG9zZXRcbiAgICAgICBjYXJldCBwb3NpdGlvbiB0byBhIHRhcmdldCBkZXJpdmVkIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb24gKi9cbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbCA9XG4gICAgICBNZWFzdXJlZC5Qb2ludC57XG4gICAgICAgIGNvbDogTS5jb2xfdGFyZ2V0LFxuICAgICAgICByb3c6IGN1cl9wLnJvdyArIChkID09IFJpZ2h0ID8gMSA6ICgtMSkpLFxuICAgICAgfTtcbiAgICBkb190b3dhcmRzKGYsIGdvYWwsIHopO1xuICB9O1xuXG4gIGxldCBkb19leHRyZW1lID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogcGxhbmFyLCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbDogTWVhc3VyZWQuUG9pbnQudCA9XG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgUmlnaHQoXykgPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBMZWZ0KF8pID0+IHtjb2w6IDAsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBVcCA9PiB7Y29sOiAwLCByb3c6IDB9XG4gICAgICB8IERvd24gPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogSW50Lm1heF9pbnR9XG4gICAgICB9O1xuICAgIGRvX3Rvd2FyZHMoZiwgZ29hbCwgeik7XG4gIH07XG5cbiAgbGV0IHRvX3N0YXJ0ID0gZG9fZXh0cmVtZShwcmltYXJ5KEJ5VG9rZW4pLCBVcCk7XG4gIGxldCB0b19lbmQgPSBkb19leHRyZW1lKHByaW1hcnkoQnlUb2tlbiksIERvd24pO1xuXG4gIGxldCB0b19lZGdlOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSA9XG4gICAgZnVuXG4gICAgfCBMZWZ0ID0+IHRvX3N0YXJ0XG4gICAgfCBSaWdodCA9PiB0b19lbmQ7XG5cbiAgLyogRG8gbW92ZV9hY3Rpb24gdW50aWwgdGhlIGluZGljYXRlZCBwaWVjZSBpcyBzdWNoIHRoYXQgcGllY2VfcCBpcyB0cnVlLlxuICAgICBJZiBubyBzdWNoIHBpZWNlIGlzIGZvdW5kLCBkb24ndCBtb3ZlLiAqL1xuICBsZXQgcmVjIGRvX3VudGlsID1cbiAgICAgICAgICAoXG4gICAgICAgICAgICB+bW92ZV9maXJzdD10cnVlLFxuICAgICAgICAgICAgbW92ZV9hY3Rpb246IHQgPT4gb3B0aW9uKHQpLFxuICAgICAgICAgICAgcGllY2VfcDogUGllY2UudCA9PiBib29sLFxuICAgICAgICAgICAgejogdCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCogeiA9IG1vdmVfZmlyc3QgPyBtb3ZlX2FjdGlvbih6KSA6IFNvbWUoeik7XG4gICAgbGV0KiAocGllY2UsIF8sIF8pID0gSW5kaWNhdGVkLnBpZWNlJyh+bm9fd3M9ZmFsc2UsIH5pZ249XyA9PiBmYWxzZSwgeik7XG4gICAgaWYgKHBpZWNlX3AocGllY2UpKSB7XG4gICAgICBTb21lKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQqIHogPSBtb3ZlX2ZpcnN0ID8gU29tZSh6KSA6IG1vdmVfYWN0aW9uKHopO1xuICAgICAgZG9fdW50aWwofm1vdmVfZmlyc3QsIG1vdmVfYWN0aW9uLCBwaWVjZV9wLCB6KTtcbiAgICB9O1xuICB9O1xuXG4gIC8qIERvIG1vdmVfYWN0aW9uIHVudGlsIHRoZSBpbmRpY2F0ZWQgcGllY2UgaXMgc3VjaCB0aGF0IHBpZWNlX3AgaXMgdHJ1ZSxcbiAgICAgcmVzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcvZW5kIGlmIG5vdCBmb3VuZCBpbiBmb3J3YXJkIGRpcmVjdGlvbi5cbiAgICAgSWYgbm8gc3VjaCBwaWVjZSBpcyBmb3VuZCwgZG9uJ3QgbW92ZS4gKi9cbiAgbGV0IGRvX3VudGlsX3dyYXAgPSAocCwgZCwgeikgPT5cbiAgICBzd2l0Y2ggKGRvX3VudGlsKHByaW1hcnkoQnlUb2tlbiwgZCksIHAsIHopKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQqIHogPSB0b19lZGdlKERpcmVjdGlvbi50b2dnbGUoZCksIHopO1xuICAgICAgZG9fdW50aWwocHJpbWFyeShCeVRva2VuLCBkKSwgcCwgeik7XG4gICAgfCBTb21lKHopID0+IFNvbWUoeilcbiAgICB9O1xuXG4gIGxldCBqdW1wX3RvX2lkID0gKHo6IHQsIGlkOiBJZC50KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQqIHtvcmlnaW4sIF99ID0gTWVhc3VyZWQuZmluZF9ieV9pZChpZCwgTS5tZWFzdXJlZCk7XG4gICAgbGV0IHogPVxuICAgICAgc3dpdGNoICh0b19zdGFydCh6KSkge1xuICAgICAgfCBOb25lID0+IHpcbiAgICAgIHwgU29tZSh6KSA9PiB6XG4gICAgICB9O1xuICAgIHN3aXRjaCAoZG9fdG93YXJkcyhwcmltYXJ5KEJ5Q2hhciksIG9yaWdpbiwgeikpIHtcbiAgICB8IE5vbmUgPT4gU29tZSh6KVxuICAgIHwgU29tZSh6KSA9PiBTb21lKHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmVydGljYWwgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgICB6LnNlbGVjdGlvbi5jb250ZW50ID09IFtdXG4gICAgICA/IGRvX3ZlcnRpY2FsKHByaW1hcnkoQnlDaGFyKSwgZCwgeilcbiAgICAgIDogU29tZShaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpO1xuXG4gIGxldCB0YXJnZXRzX3dpdGhpbl9yb3cgPSAoejogdCk6IGxpc3QodCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IHJlYyBnbyA9IChkOiBEaXJlY3Rpb24udCwgejogdCkgPT4ge1xuICAgICAgc3dpdGNoIChwcmltYXJ5KEJ5Q2hhciwgZCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgfCBTb21lKHopID0+XG4gICAgICAgIGlmIChjYXJldF9wb2ludCh6KS5yb3cgIT0gaW5pdC5yb3cpIHtcbiAgICAgICAgICBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBnbyhkLCB6KVxuICAgICAgICAgIHwgU29tZShfKSA9PiBbeiwgLi4uZ28oZCwgeildXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBjdXJyID1cbiAgICAgIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShfKSA9PiBbel1cbiAgICAgIH07XG4gICAgTGlzdC5yZXYoZ28oTGVmdCwgeikpIEAgY3VyciBAIGdvKFJpZ2h0LCB6KTtcbiAgfTtcblxuICAvLyBUT0RPKGQpOiB1bmlmeSB0aGlzIGxvZ2ljIHdpdGggcmVzdCBvZiBtb3ZlbWVudCBsb2dpY1xuICBsZXQgcmVjIHRvX2JhY2twYWNrX3RhcmdldCA9IChkOiBwbGFuYXIsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBkb25lX29yX3RyeV9hZ2FpbiA9IChkLCB6KSA9PlxuICAgICAgc3dpdGNoIChwb3BfYmFja3BhY2soeikpIHtcbiAgICAgIHwgTm9uZSA9PiB0b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICAgIHwgU29tZShfKSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgTGVmdChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIExlZnQsIHopO1xuICAgICAgZG9uZV9vcl90cnlfYWdhaW4oZCwgeik7XG4gICAgfCBSaWdodChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIFJpZ2h0LCB6KTtcbiAgICAgIGRvbmVfb3JfdHJ5X2FnYWluKGQsIHopO1xuICAgIHwgVXAgPT5cbiAgICAgIGxldCogeiA9IHZlcnRpY2FsKExlZnQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgbGVmdFxuICAgICAgICAgICAgIGMgIT0gMCA/IGMgOiBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHwgRG93biA9PlxuICAgICAgbGV0KiB6ID0gdmVydGljYWwoUmlnaHQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgcmlnaHRcbiAgICAgICAgICAgICBjICE9IDAgPyBjIDogLSBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbGV0IGdvID0gKGQ6IEFjdGlvbi5tb3ZlLCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT5cbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IEdvYWwoUGllY2UocCwgZCkpID0+IGRvX3VudGlsX3dyYXAoQWN0aW9uLm9mX3BpZWNlX2dvYWwocCksIGQsIHopXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IHogPSBaaXBwZXIudW5zZWxlY3Qoeik7XG4gICAgICBkb190b3dhcmRzKHByaW1hcnkoQnlDaGFyKSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IGRvX2V4dHJlbWUocHJpbWFyeShCeVRva2VuKSwgZCwgeilcbiAgICB8IExvY2FsKGQpID0+XG4gICAgICB6XG4gICAgICB8PiAoXG4gICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICB8IExlZnQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIExlZnQpXG4gICAgICAgIHwgUmlnaHQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIFJpZ2h0KVxuICAgICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQpXG4gICAgICAgIHwgRG93biA9PiB2ZXJ0aWNhbChSaWdodClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIE1ha2UgPSAoTTogRWRpdG9yLk1ldGEuUykgPT4ge1xuICBtb2R1bGUgTW92ZSA9IE1vdmUuTWFrZShNKTtcblxuICBsZXQgcHJpbWFyeSA9IChkOiBEaXJlY3Rpb24udCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+XG4gICAgaWYgKHouY2FyZXQgPT0gT3V0ZXIpIHtcbiAgICAgIFppcHBlci5zZWxlY3QoZCwgeik7XG4gICAgfSBlbHNlIGlmIChkID09IExlZnQpIHtcbiAgICAgIHpcbiAgICAgIHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpXG4gICAgICB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLnNlbGVjdChkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLnNlbGVjdChkKTtcbiAgICB9O1xuXG4gIGxldCB2ZXJ0aWNhbCA9IChkOiBEaXJlY3Rpb24udCwgZWQ6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PlxuICAgIE1vdmUuZG9fdmVydGljYWwocHJpbWFyeSwgZCwgZWQpO1xuXG4gIGxldCByYW5nZSA9IChsOiBJZC50LCByOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIGxldCogeiA9IE1vdmUuanVtcF90b19pZCh6LCBsKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQociwgTS5tZWFzdXJlZCk7XG4gICAgTW92ZS5kb190b3dhcmRzKHByaW1hcnksIGxhc3QsIHopO1xuICB9O1xuXG4gIGxldCB0ZXJtID0gKGlkOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIC8vVE9ETzogY2hlY2sgaWYgc2VsZWN0aW9uIGlzIGFscmVhZHkgYSB0ZXJtOiBuby1vcCBpbiB0aGlzIGNhc2VcbiAgICBsZXQqIChsLCByKSA9IFRlcm1SYW5nZXMuZmluZF9vcHQoaWQsIE0udGVybV9yYW5nZXMpO1xuICAgIHJhbmdlKFBpZWNlLmlkKGwpLCBQaWVjZS5pZChyKSwgeik7XG4gIH07XG5cbiAgbGV0IHRpbGUgPSAoaWQ6IElkLnQsIHo6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gTW92ZS5qdW1wX3RvX2lkKHosIGlkKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQoaWQsIE0ubWVhc3VyZWQpO1xuICAgIE1vdmUuZG9fdG93YXJkcyhwcmltYXJ5LCBsYXN0LCB6KTtcbiAgfTtcblxuICBsZXQgZ28gPSAoZDogQWN0aW9uLm1vdmUsIHo6IFppcHBlci50KSA9PlxuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgR29hbChQaWVjZShfKSkgPT4gZmFpbHdpdGgoXCJTZWxlY3QuZ28gbm90IGltcGxlbWVudGVkIGZvciBQaWVjZSBHb2FsXCIpXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IGFuY2hvciA9IHogfD4gWmlwcGVyLnRvZ2dsZV9mb2N1cyB8PiBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCk7XG4gICAgICBNb3ZlLmRvX3Rvd2FyZHMofmFuY2hvciwgcHJpbWFyeSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IE1vdmUuZG9fZXh0cmVtZShwcmltYXJ5LCBkLCB6KVxuICAgIHwgTG9jYWwoZCkgPT5cbiAgICAgIC8qIE5vdGU6IERvbid0IHVwZGF0ZSB0YXJnZXQgb24gdmVydGljYWwgc2VsZWN0aW9uICovXG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgTGVmdChfKSA9PiBwcmltYXJ5KExlZnQsIHopXG4gICAgICB8IFJpZ2h0KF8pID0+IHByaW1hcnkoUmlnaHQsIHopXG4gICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQsIHopXG4gICAgICB8IERvd24gPT4gdmVydGljYWwoUmlnaHQsIHopXG4gICAgICB9XG4gICAgfTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBkZXN0cnVjdCA9XG4gICAgKFxuICAgICAgZDogRGlyZWN0aW9uLnQsXG4gICAgICB7Y2FyZXQsIHJlbGF0aXZlczoge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBffSwgX30gYXMgejogdCxcbiAgICApXG4gICAgOiBvcHRpb24odCkgPT4ge1xuICAvKiBDb3VsZCBhZGQgY2hlY2tzIG9uIHZhbGlkIHRva2VucyAoYWxsIG9mIHRoZXNlIGhvbGQgYXNzdW1pbmcgc3Vic3RyaW5nKSAqL1xuICBsZXQgbGFzdF9pbm5lcl9wb3MgPSB0ID0+IFRva2VuLmxlbmd0aCh0KSAtIDI7XG4gIGxldCBkZWxldGVfcmlnaHQgPSB6ID0+XG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KTtcbiAgbGV0IGRlbGV0ZV9sZWZ0ID0gWmlwcGVyLmRlbGV0ZShMZWZ0KTtcbiAgbGV0IGNvbnN0cnVjdF9yaWdodCA9IChsLCBzKSA9PlxuICAgIE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdCh+Y2FyZXQ9UmlnaHQsIH5iYWNrcGFjaz1SaWdodCwgbCksIHMpO1xuICBsZXQgY29uc3RydWN0X2xlZnQgPSAobCwgcykgPT5cbiAgICBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsKSwgcyk7XG4gIHN3aXRjaCAoZCwgY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcygobF9zaWJzLCByX3NpYnMpKSkge1xuICAvKiBXaGVuIHRoZXJlJ3MgYSBzZWxlY3Rpb24sIGRlZmVyIHRvIE91dGVyICovXG4gIHwgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4geiB8PiBaaXBwZXIuZGVzdHJ1Y3QgfD4gT3B0aW9uLnNvbWVcbiAgLyogU3BlY2lhbCBjYXNlcyBmb3IgbW9ubyBmb3JtcyB3aGljaCBjYW4gc3BsaXQgaW50byBkdW8gZm9ybXMsXG4gICAgIGUuZy4gbGlzdCBsaXRlcmFscy4gV2hlbiBkZWxldGlvbiB3b3VsZCBhbHRlciB0aGUgbW9ubyBmb3JtLFxuICAgICB3ZSByZXBsYWNlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGR1byBmb3JtLiAgKi9cbiAgfCAoTGVmdCwgT3V0ZXIsIChTb21lKHQpLCBfKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX2xlZnQgfD4gY29uc3RydWN0X2xlZnQoRm9ybS5kdW9zcGxpdHModCkpXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChSaWdodCwgSW5uZXIoXywgbiksIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5kdW9zcGxpdHModCkgIT0gW10gJiYgbiA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9sZWZ0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICAvKiBTcGVjaWFsIGNhc2VzIGZvciBzdHJpbmcgbGl0ZXJhbHMuIFdoZW4gZGVsZXRpb24gd291bGRcbiAgICAgcmVtb3ZlIGFuIG91dGVyIHF1b3RlLCB3ZSBpbnN0ZWFkIHJlbW92ZSB0aGUgd2hvbGUgc3RyaW5nICovXG4gIHwgKExlZnQsIE91dGVyLCAoU29tZSh0KSwgXykpXG4gICAgICB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpIHx8IEZvcm0uaXNfY29tbWVudCh0KSA9PlxuICAgIGRlbGV0ZV9sZWZ0KHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSA9PlxuICAgIGRlbGV0ZV9yaWdodCh6KVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoUmlnaHQsIElubmVyKF8sIG4pLCAoXywgU29tZSh0KSkpXG4gICAgICB3aGVuXG4gICAgICAgIChGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkpICYmIG4gPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeikgLyogUmVtb3ZlIGlubmVyIGNoYXJhY3RlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBsZXQgeiA9IFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeik7XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fbnRoKGNfaWR4LCB0KSwgeik7XG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgd2hlbiBjX2lkeCA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIFRva2VuLnJtX250aChjX2lkeCArIDEsIHQpLCB6KVxuICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oeiA9PlxuICAgICAgICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgICApIC8qIElmIG5vdCBvbiBsYXN0IGlubmVyIHBvc2l0aW9uICovXG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9udGgoY19pZHggKyAxLCB0KSwgeilcbiAgLyogQ2FuJ3Qgc3ViZGVzdHJ1Y3QgaW4gZGVsaW1pdGVyLCBzbyBqdXN0IGRlc3RydWN0IG9uIHdob2xlIGRlbGltaXRlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfKSwgKF8sIE5vbmUpKVxuICB8IChSaWdodCwgSW5uZXIoXyksIChfLCBOb25lKSkgPT5cbiAgICAvKiBOb3RlOiBDb3VudGVyaW50dWl0dmUsIGJ1dCB5ZXMsIHRoZXNlIGNhc2VzIGFyZSBpZGVudGljYWxseSBoYW5kbGVkICovXG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KVxuXG4gIC8vfCAoXywgSW5uZXIoXyksIChfLCBOb25lKSkgPT4gTm9uZVxuICB8IChMZWZ0LCBPdXRlciwgKFNvbWUodCksIF8pKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKExlZnQsIFRva2VuLnJtX2xhc3QodCksIHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9maXJzdCh0KSwgeilcbiAgfCAoXywgT3V0ZXIsIChTb21lKF8pLCBfKSkgLyogdC5sZW5ndGggPT0gMSAqL1xuICB8IChfLCBPdXRlciwgKE5vbmUsIF8pKSA9PiB6IHw+IFppcHBlci5kZWxldGUoZClcbiAgfTtcbn07XG5cbmxldCBtZXJnZSA9ICgobCwgcik6IChUb2tlbi50LCBUb2tlbi50KSwgejogdCk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoMCwgVG9rZW4ubGVuZ3RoKGwpIC0gMSkpICAvLyBub3RlIG1vbm90aWxlIGFzc3VtcHRpb25cbiAgfD4gWmlwcGVyLmRlbGV0ZShMZWZ0KVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5kZWxldGUoUmlnaHQpKVxuICB8PiBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3RfbW9ubyhSaWdodCwgbCArKyByKSk7XG5cbi8qIENoZWNrIGlmIGNvbnRhaW5pbmcgZHVvIGZvcm0gaGFzIGEgbW9ubyBlcXVpdmFsZW50IGUuZy4gbGlzdCBsaXRlcmFscyAqL1xubGV0IHBhcmVudF9kdW9tZXJnZXMgPSAoejogWmlwcGVyLnQpID0+IHtcbiAgbGV0KiBwYXJlbnQgPSBSZWxhdGl2ZXMucGFyZW50KHoucmVsYXRpdmVzKTtcbiAgbGV0KiBsYmwgPSBQaWVjZS5sYWJlbChwYXJlbnQpO1xuICBGb3JtLmR1b21lcmdlcyhsYmwpO1xufTtcblxubGV0IGdvID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0KiB6ID0gZGVzdHJ1Y3QoZCwgeik7XG4gIHN3aXRjaCAoXG4gICAgcGFyZW50X2R1b21lcmdlcyh6KSxcbiAgICB6LmNhcmV0LFxuICAgIG5laWdoYm9yX21vbm90aWxlcyh6LnJlbGF0aXZlcy5zaWJsaW5ncyksXG4gICkge1xuICB8IChTb21lKGxibCksIE91dGVyLCAoTm9uZSwgTm9uZSkpXG4gICAgICB3aGVuIFNpYmxpbmdzLm5vX3NpYmxpbmdzKHoucmVsYXRpdmVzLnNpYmxpbmdzKSA9PlxuICAgIC8qIE5vdGU6IHdlIG11c3QgZG8gdGhlIG5vX3NpYmxpbmdzIGNoZWNrLCBpdCBkb2VzIG5vdCBzdWZmaWNlXG4gICAgICAgdG8gY2hlY2sgbm8gbW9ub3RpbGUgbmVpZ2hib3JzIGFzIHRoZXJlIGNvdWxkIGJlIG90aGVyIG5laWdoYm9yc1xuICAgICAgIGZvciBleGFtcGxlIGVkZ2UgY2FzZTogXCIoKHwpKVwiICovXG4gICAgelxuICAgIHw+IFppcHBlci5kZWxldGVfcGFyZW50XG4gICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcigwLCAwKSlcbiAgICB8PiBaaXBwZXIuY29uc3RydWN0KH5jYXJldD1SaWdodCwgfmJhY2twYWNrPUxlZnQsIGxibClcbiAgICAvKiBCZWxvdyByZWdyb3V0aW5nIGltcG9ydGFudCBmb3IgcGFyZW5zL2FwIHBvc2l0aW9uaW5nICovXG4gICAgfD4gWmlwcGVyLnJlZ3JvdXQoUmlnaHQpXG4gICAgfD4gT3B0aW9uLnNvbWVcbiAgfCAoXywgT3V0ZXIsIChTb21lKGwpLCBTb21lKHIpKSkgd2hlbiBNb2xkcy5hbGxvd19tZXJnZShsLCByKSA9PlxuICAgIG1lcmdlKChsLCByKSwgeilcbiAgfCBfID0+IFNvbWUoeilcbiAgfTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBiYXJmID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogUmVtb3ZlcyB0aGUgZC1uZWlnaGJvcmluZyB0aWxlIGFuZCBkcm9wcyBmcm9tIGJhY2twYWNrO1xuICAgICBwcmVjb25kaXRpb246IHRoZSBkLW5laWdoYm9yIHNob3VsZCBiZSBhIG1vbm90aWxlXG4gICAgIHN0cmluZy1tYXRjaGluZyB0aGUgZHJvcHBpbmcgc2hhcmQgKi9cbiAgbGV0KiB6ID0gZGVsZXRlKGQsIHopO1xuICBsZXQrIHogPSBwdXRfZG93bihkLCB6KTtcbiAgejtcbn07XG5cbmxldCBkZWxheWVkX2V4cGFuZCA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBSZW1vdmVzIHRoZSBkLW5laWdoYm9yaW5nIHRpbGUgYW5kIHJlY29uc3RydWN0cyBpdCwgdHJpZ2dlcmluZ1xuICAgICBrZXl3b3JkLWV4cGFuc2lvbjsgcHJlY29uZGl0aW9uOiB0aGUgZC1uZWlnaGJvciBzaG91bGQgYmUgYSBtb25vdGlsZVxuICAgICBzdHJpbmctbWF0Y2hpbmcgYSBrZXl3b3JkIG9mIGFuIGV4cGFuZGluZyBmb3JtICovXG4gIGxldCAobmV3X2xhYmVsLCBiYWNrcGFjaykgPSBNb2xkcy5kZWxheWVkX2V4cGFuc2lvbih0KTtcbiAgbGV0KyB6ID0gZGVsZXRlKGNhcmV0LCB6KTtcbiAgY29uc3RydWN0KH5iYWNrcGFjaywgfmNhcmV0LCBuZXdfbGFiZWwsIHopO1xufTtcblxubGV0IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIGxlZnQgbmVpZ2hib3IgaXMgYSBtb25vdGlsZSAoYSkgc3RyaW5nLW1hdGNoaW5nIHRoZSBzaGFyZCBhdCB0aGVcbiAgICAgdG9wIG9mIHRoZSBiYWNrcGFjaywgYmFyZiBpdCwgb3IgKGIpIGFuIGV4cGFuc2luZyBrZXl3b3JkLCBleHBhbmQgaXQuICovXG4gIHN3aXRjaCAobGVmdF9uZWlnaGJvcl9tb25vdGlsZSh6LnJlbGF0aXZlcy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKHQpIHdoZW4gQmFja3BhY2sud2lsbF9iYXJmKHQsIHouYmFja3BhY2spID0+IGJhcmYoTGVmdCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBMZWZ0LCBzKVxuICB8IF8gPT4gU29tZShzKVxuICB9O1xuXG5sZXQgZXhwYW5kX29yX2JhcmZfcmlnaHRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIHJpZ2h0IG5laWdoYm9yIGlzIGEgbW9ub3RpbGUgKGEpIHN0cmluZy1tYXRjaGluZyB0aGUgc2hhcmQgYXQgdGhlXG4gICAgIHRvcCBvZiB0aGUgYmFja3BhY2ssIGJhcmYgaXQsIG9yIChiKSBhbiBleHBhbnNpbmcga2V5d29yZCwgZXhwYW5kIGl0LiAqL1xuICBzd2l0Y2ggKHJpZ2h0X25laWdoYm9yX21vbm90aWxlKHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICB8IFNvbWUodCkgd2hlbiBCYWNrcGFjay53aWxsX2JhcmYodCwgei5iYWNrcGFjaykgPT4gYmFyZihSaWdodCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBSaWdodCwgcylcbiAgfCBfID0+IFNvbWUocylcbiAgfTtcblxubGV0IGdldF9kdW9fc2hhcmQgPSAoe2xhYmVsLCBzaGFyZHMsIF99OiBUaWxlLnQpID0+XG4gIGlmIChMaXN0Lmxlbmd0aChsYWJlbCkgPT0gMiAmJiBMaXN0Lmxlbmd0aChzaGFyZHMpID09IDEpIHtcbiAgICBMaXN0Lm50aF9vcHQobGFiZWwsIExpc3QuaGQoc2hhcmRzKSk7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IG5laWdoYm9yX2Nhbl9kdW9tZXJnZSA9XG4gICAgKHQ6IFRva2VuLnQsIHM6IFNpYmxpbmdzLnQpOiBvcHRpb24oKExhYmVsLnQsIERpcmVjdGlvbi50KSkgPT5cbiAgLyogQ2hlY2tzIGlmIGEgbmVpZ2hib3IsIHByZWZlcmVudGlhbGx5IHRoZSBsZWZ0IG5laWdoYm9yLCBpc1xuICAgICBhIHNoYXJkIG9mIGEgZHVvdGlsZSB3aGljaCBjYW4gYmUgbWVyZ2VkIHRvIGZvcm0gYSBtb25vdGlsZS5cbiAgICAgSXQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIChtb25vKWxhYmVsLCBhbmQgdGhlIGRpcmVjdGlvbiBvZlxuICAgICB0aGUgcmVsZXZhbnQgbmVpZ2hib3IuICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHMpKSB7XG4gIHwgKFNvbWUoVGlsZSh0aWxlKSksIF8pID0+XG4gICAgbGV0KiBzdGFydCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFtzdGFydCwgdF0pO1xuICAgIChtb25vX2xibCwgRGlyZWN0aW9uLkxlZnQpO1xuICB8IChfLCBTb21lKFRpbGUodGlsZSkpKSA9PlxuICAgIGxldCogbGFzdCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFt0LCBsYXN0XSk7XG4gICAgKG1vbm9fbGJsLCBEaXJlY3Rpb24uUmlnaHQpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgbWFrZV9uZXdfdGlsZSA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+XG4gIC8qIEFkZHMgYSBuZXcgdGlsZSBhdCB0aGUgY2FyZXQuIElmIHRoZSBuZXcgdG9rZW4gbWF0Y2hlcyB0aGUgdG9wXG4gICAgIG9mIHRoZSBiYWNrcGFjaywgdGhlIGJhY2twYWNrIHNoYXJkIGlzIGRyb3BwZWQuIE90aGVyd2lzZSwgd2VcbiAgICAgY29uc3RydWN0IGEgbmV3IHRpbGUsIHdoaWNoIG1heSBpbW1lZGlhdGVseSBleHBhbmQuICovXG4gIEJhY2twYWNrLndpbGxfYmFyZih0LCB6LmJhY2twYWNrKVxuICAgID8gc3dpdGNoIChuZWlnaGJvcl9jYW5fZHVvbWVyZ2UodCwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICB8IFNvbWUoKGxibCwgZCkpID0+XG4gICAgICAgIFppcHBlci5yZXBsYWNlKH5jYXJldD1kLCB+YmFja3BhY2s9ZCwgbGJsLCB6KSB8PiBPcHRpb24uZ2V0XG4gICAgICB8IE5vbmUgPT4gcHV0X2Rvd24oY2FyZXQsIHopIHw+IE9wdGlvbi5nZXRcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgIGxldCAobGJsLCBiYWNrcGFjaykgPSBNb2xkcy5pbnN0YW50X2V4cGFuc2lvbih0KTtcbiAgICAgIGxldCB6ID0gY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBsYmwsIHopO1xuICAgICAgejtcbiAgICB9O1xuXG5sZXQgZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfdGlsZSA9IChjaGFyOiBUb2tlbi50LCBzdGF0ZTogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIFRyaWdnZXIgYSB0b2tlbiBib3VuZGFyeSBldmVudCBhbmQgY3JlYXRlIGEgbmV3IHRpbGUuXG4gICAgIFRoaXMgcHJvY2VzcyBwb3RlbnRpYWxseSBpbnZvbHZlcyBib3RoIG5laWdoYm9yaW5nIHRpbGVzLFxuICAgICBwb3RlbnRpYWxseSB0cmlnZ2VyaW5nIHVwIHRvIDMgZXhwYW5zaW9ucyBvciBiYWNrcGFjayBiYXJmcy5cbiAgICAgSW4gcGFydGljdWxhciwgYm90aCBsZWZ0IGFuZCByaWdodCBuZWlnaGJvcmluZyBtb25vdGlsZXMgbWF5XG4gICAgIHVuZGVyZ28gZGVsYXllZCAoYWthIGtleXdvcmQpIGV4cGFuc2lvbiwgYW5kIHRoZSBuZXdseS1jcmVhdGVkXG4gICAgIHNpbmdsZS1jaGFyYWN0ZXIgdG9rZW4gbWF5IHVuZGVyZ28gaW5zdGFudCBleHBhbnNpb24uIEN1cnJlbnRseVxuICAgICBtYWRlIHRoZSBkZWNpc2lvbiB0byBleHBhbmQgb3IgYmFyZiB0aGUgbmVpZ2hib3JzIGJlZm9yZSBtYWtpbmdcbiAgICAgdGhlIG5ldyB0aWxlIGJlY2F1c2UgYmFyZmluZyBpcyBsaW1pdGVkIHRvIHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLFxuICAgICBhbmQgSSB3YW50ZWQgdGhpbmdzIGxpa2UgXCJpZnx0aGVuXCIsIHdoZW4geW91IGVudGVyIGEgXCIoXCIsIHRvXG4gICAgIGJhcmYgdGhlIFwidGhlblwiLCBiZWZvcmUgaXQgaXMgYnVyaWVkIGJ5IHRoZSBcIilcIiBhZGRlZCB0byB0aGUgQlAuXG4gICAgIFRoZSBvcmRlciBoZXJlIGNvdWxkIGJlIHJldmlzaXRlZCBpZiBiYXJmaW5nIHdhcyBtb3JlIHNvcGhpc3RpY2F0ZWQuXG4gICAgICovXG4gIGxldCogeiA9IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3Ioc3RhdGUpO1xuICAvL2xldCAoeikgPSByZWdyb3V0KExlZnQsIHopO1xuICAvKiBOb3RlIHRvIGRhdmlkOiBJJ20gbm90IHN1cmUgd2h5IHRoZSBhYm92ZSByZWdyb3V0IGlzIG5lY2Vzc2FyeS5cbiAgICAgV2l0aG91dCBpdCwgdGhlcmUgaXMgYSBOb25jb252ZXggc2VnbWVudCBlcnJvciB0aHJvd24gaW4gZXhhY3RseVxuICAgICBvbmUgY2FzZSwgdGhlIGRvdWJsZSBiYXJmIGNhc2U6IGluc2VydCBzcGFjZSBvbiBcImlmIHRoZW58ZWxzZVwiICovXG4gIGxldCsgeiA9IGV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yKHopO1xuICBtYWtlX25ld190aWxlKGNoYXIsIExlZnQsIHopO1xufTtcblxubGV0IHJlcGxhY2VfdGlsZSA9ICh0OiBUb2tlbi50LCBkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCsgeiA9IGRlbGV0ZShkLCB6KTtcbiAgbWFrZV9uZXdfdGlsZSh0LCBkLCB6KTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYXBwZW5kYWJpbGl0eSA9XG4gIHwgQXBwZW5kTGVmdChUb2tlbi50KVxuICB8IEFwcGVuZFJpZ2h0KFRva2VuLnQpXG4gIHwgTWFrZU5ldztcblxubGV0IHNpYmxpbmdfYXBwZW5kYWJpbGl0eTogKHN0cmluZywgU2libGluZ3MudCkgPT4gYXBwZW5kYWJpbGl0eSA9XG4gIChjaGFyLCBzaWJsaW5ncykgPT5cbiAgICBzd2l0Y2ggKG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgICB8IChTb21lKHQpLCBfKSB3aGVuIE1vbGRzLmFsbG93X2FwcGVuZF9yaWdodCh0LCBjaGFyKSA9PlxuICAgICAgQXBwZW5kTGVmdCh0ICsrIGNoYXIpXG4gICAgfCAoXywgU29tZSh0KSkgd2hlbiBNb2xkcy5hbGxvd19hcHBlbmRfbGVmdChjaGFyLCB0KSA9PlxuICAgICAgQXBwZW5kUmlnaHQoY2hhciArKyB0KVxuICAgIHwgXyA9PiBNYWtlTmV3XG4gICAgfTtcblxubGV0IGluc2VydF9vdXRlciA9IChjaGFyOiBzdHJpbmcsIHogYXMgc3RhdGU6IHQpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChzaWJsaW5nX2FwcGVuZGFiaWxpdHkoY2hhciwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gIHwgTWFrZU5ldyA9PiBleHBhbmRfbmVpZ2hib3JzX2FuZF9tYWtlX25ld190aWxlKGNoYXIsIHN0YXRlKVxuICB8IEFwcGVuZExlZnQodCkgPT4gcmVwbGFjZV90aWxlKHQsIExlZnQsIHN0YXRlKVxuICB8IEFwcGVuZFJpZ2h0KHQpID0+IHJlcGxhY2VfdGlsZSh0LCBSaWdodCwgc3RhdGUpXG4gIH07XG5cbmxldCBpbnNlcnRfZHVvID0gKGxibDogTGFiZWwudCwgejogb3B0aW9uKHQpKTogb3B0aW9uKHQpID0+XG4gIHpcbiAgfD4gT3B0aW9uLm1hcCh6ID0+IFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsYmwsIHopKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKHogPT4ge1xuICAgICAgIC8vTk9URTogcmVncm91dCB0byBwdXQgZS5nLiBhcCgxfCkgYmFjayB0b2dldGhlclxuICAgICAgIHpcbiAgICAgICB8PiByZW1vbGRfcmVncm91dChMZWZ0KVxuICAgICAgIHw+IFppcHBlci5wdXRfZG93bihMZWZ0KVxuICAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLm1vdmUoTGVmdCkpXG4gICAgIH0pO1xuXG5sZXQgaW5zZXJ0X21vbm9zID0gKGw6IFRva2VuLnQsIHI6IFRva2VuLnQsIHo6IG9wdGlvbih0KSk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdF9tb25vKFJpZ2h0LCByKSlcbiAgfD4gT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0X21vbm8oTGVmdCwgbCkpO1xuXG5sZXQgc3BsaXQgPSAoejogdCwgY2hhcjogc3RyaW5nLCBpZHg6IGludCwgdDogVG9rZW4udCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIEN1cnJlbnQgdGhpcyBuZWNlc3NhcmlseSBjcmVhdGVzIHRocmVlIHRva2VuczsgdHdvIGZyb20gc3BsaXR0aW5nXG4gICAqIHRoZSBleGlzdGluZyBvbmUsIGFuZCBhIG5ldyBvbmUuIFRoZSB0d28gc3BsaXR0aW5nIHRva2VucyBtYXkgYmVjb21lXG4gICAqIGRlbGltaXRlcnMgb2YgdGhlIHNhbWUgdGltZSAoZS5nLiBgW3xdYD0+YFs8PnxdYCkuIEluIHRoZSBmdXR1cmUgaXRcbiAgICogbWF5IGJlIHBydWRlbnQgdG8gcmVsYXggdGhpcyBieSwgYWZ0ZXIgc3BsaXR0aW5nLCBmaXJzdCBhdHRlbXB0aW5nXG4gICAqIHRvIGFwcGVuZCB0aGUgbmV3IGNoYXIgdG8gdGhlIGxlZnQgaGFsZiwgYW5kIHRoZW4gdGhlIHJpZ2h0IGhhbGYsXG4gICAqIGFuZCBvbmx5IGlmIHRob3NlIGZhaWwgY3JlYXRpbmcgYSBuZXcgY2VudGVyIHRva2VuLiAqL1xuICBsZXQgKGwsIHIpID0gVG9rZW4uc3BsaXRfbnRoKGlkeCwgdCk7XG4gIHpcbiAgfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcilcbiAgfD4gWmlwcGVyLnNlbGVjdChSaWdodClcbiAgfD4gKFxuICAgIC8qIG92ZXJ3cml0ZSBzZWxlY3Rpb24gKi9cbiAgICBzd2l0Y2ggKEZvcm0uZHVvbWVyZ2VzKFtsLCByXSkpIHtcbiAgICB8IFNvbWUoXykgPT4gaW5zZXJ0X2R1byhbbCwgcl0pXG4gICAgfCBOb25lID0+IGluc2VydF9tb25vcyhsLCByKVxuICAgIH1cbiAgKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKGV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3X3RpbGUoY2hhcikpO1xufTtcblxubGV0IG9wdF9yZWdyb2xkID0gZCA9PiBPcHRpb24ubWFwKHJlbW9sZF9yZWdyb3V0KGQpKTtcblxubGV0IG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB6KSA9PlxuICAvKiBUaGlzIGlzIHNwZWNpYWwtY2FzZSBsb2dpYyBmb3IgYWR2YW5jaW5nIHRoZSBjYXJldCB0byBwb3NpdGlvbiBiZXR3ZWVuIHRoZSBxdW90ZXNcbiAgICAgaW4gbmV3bHktY3JlYXRlZCBzdHJpbmdsaXRzLiBUaGUgbWFpbiBzdHJpbmdsaXQgc3BlY2lhbC1jYXNlIGlzIGluIFppcHBlci5jb25zdHVjdFxuICAgICBhbmQgaWRlYWxseSB0aGlzIGxvZ2ljIHdvdWxkIGJlIGxvY2F0ZWQgdGhlcmUgYXMgd2VsbCwgYnV0IGJvdGggcmVncm91dGluZyBhbmRcbiAgICAgc3Vic2VxdWVudCBjYXJldCBwb3NpdGlvbiBsb2dpYyBhdCB0aGlzIGZ1bmN0aW9uJ3MgY2FsbHNpdGVzIGRpY2F0ZSB0aGF0IHRoaXNcbiAgICAgYmUgZG9uZSBhZnRlci4gTm90IHRvbyBoYXBweSBhYm91dCB0aGlzIHRiaC4gKi9cbiAgRm9ybS5pc19zdHJpbmdfZGVsaW0oY2hhcikgfHwgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpXG4gICAgPyBzd2l0Y2ggKG1vdmUoTGVmdCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiB6XG4gICAgICB8IFNvbWUoeikgPT4geiB8PiBzZXRfY2FyZXQoSW5uZXIoMCwgMCkpXG4gICAgICB9XG4gICAgOiB6O1xuXG5sZXQgY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB0KSA9PlxuICBGb3JtLmlzX3N0cmluZyh0KVxuICAmJiBGb3JtLmlzX3N0cmluZ19kZWxpbShjaGFyKVxuICB8fCBGb3JtLmlzX2NvbW1lbnQodClcbiAgJiYgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpO1xuXG5sZXQgZ28gPVxuICAgIChjaGFyOiBzdHJpbmcsIHtjYXJldCwgcmVsYXRpdmVzOiB7c2libGluZ3MsIF99LCBffSBhcyB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogSWYgdGhlcmUncyBhIHNlbGVjdGlvbiwgZGVsZXRlIGl0IGJlZm9yZSBwcm9jZWVkaW5nICovXG4gIGxldCB6ID0gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA/IFppcHBlci5kZXN0cnVjdCh6KSA6IHo7XG4gIHN3aXRjaCAoY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgLyogSWYgd2UgdHJ5IHRvIGluc2VydCBhIHF1b3RlIGluc2lkZSBhbiBleGlzdGluZyBzdHJpbmcsIG9yIGEgI1xuICAgKiBpbiBhIGNvbW1lbnQsIHdlIGFyZSBpbnN0ZWFkIG1vdmVkIHRvIHRoZSByaWdodGhhbmQgc2lkZSBvZlxuICAgKiB0aGUgb3BlcmFuZC4gTm90ZSB0aGF0IHRoaXMgYmVoYXZpb3IgaXMgbG9hZC1iZWFyaW5nIGZvciB0aGVcbiAgICogY3VycmVudCBwYXJzaW5nIGFwcHJvYWNoIGluY2x1ZGluZyBQYXN0ZSAqL1xuICB8IChfLCAoXywgU29tZSh0KSkpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gIHwgKE91dGVyLCAoU29tZSh0KSwgXykpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIFNvbWUoeilcbiAgfCAoSW5uZXIoZF9pZHgsIG4pLCAoXywgU29tZSh0KSkpID0+XG4gICAgbGV0IGlkeCA9IG4gKyAxO1xuICAgIGxldCBuZXdfdCA9IFRva2VuLmluc2VydF9udGgoaWR4LCBjaGFyLCB0KTtcbiAgICAvKiBJZiBpbnNlcnRpbmcgd291bGRuJ3QgcHJvZHVjZSBhIHZhbGlkIHRva2VuLCBzcGxpdC4gVGhpcyBpc1xuICAgICAqIG1vc3RseSB0YXJnZXR0aW5nIHRoZSBjYXNlIG9mIGluc2VydGluZyBhbiBpbmZpeCBvcGVyYXRvclxuICAgICAqIGluc2lkZSBhbiBvcGVyYW5kIChvciBtb3JlIHJhcmVseSB2aWNlLXZlcnNhKS4gSW4gc3VjaCBjYXNlcyxcbiAgICAgKiBkdWUgdG8gdGhlIGN1cnJlbnQgTU9TVExZIGRpc2pvaW50ZWRuZXNzIG9mIHRoZXNlIGNoYXJhY3RlclxuICAgICAqIGNsYXNzZXMsIEFMTCAoaXNoPykgY3VycmVudCBzcGxpdHMgc2hvdWxkIGJlIDMtd2F5XG4gICAgICogc3BsaXRzIChhcyBvcHBvc2VkIHRvIDItd2F5KS4gVGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHlcbiAgICAgKiBraW5kIG9mIHNwbGl0dGluZyBzdXBwb3J0ZWQ7IHRoaXMgc2hvdWxkIGJlIHJldmlzaXRlZCBpZlxuICAgICAqIHdlIG1vdmUgdG8gbW9yZSBzdWJ0bGUgdG9rZW4gZGl2aXNpb24gbG9naWMgKi9cbiAgICBNb2xkcy5hbGxvd19pbnNlcnRpb24oY2hhciwgdCwgbmV3X3QpXG4gICAgICA/IHpcbiAgICAgICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2lkeCwgaWR4KSlcbiAgICAgICAgfD4gWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgbmV3X3QpXG4gICAgICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgICA6IHNwbGl0KHosIGNoYXIsIGlkeCwgdCkgfD4gb3B0X3JlZ3JvbGQoUmlnaHQpO1xuICAvKiBDYW4ndCBpbnNlcnQgaW5zaWRlIGRlbGltaXRlciAqL1xuICB8IChJbm5lcihfLCBfKSwgKF8sIE5vbmUpKSA9PiBOb25lXG4gIHwgKE91dGVyLCAoXywgU29tZShfKSkpID0+XG4gICAgbGV0IGNhcmV0OiBaaXBwZXIuQ2FyZXQudCA9XG4gICAgICBzd2l0Y2ggKHNpYmxpbmdfYXBwZW5kYWJpbGl0eShjaGFyLCBzaWJsaW5ncykpIHtcbiAgICAgIHwgQXBwZW5kUmlnaHQoXykgPT5cbiAgICAgICAgLyogSWYgd2UncmUgYWRkaW5nIHRvIHRoZSByaWdodCwgbW92ZSBjYXJldCBpbnNpZGUgcmlnaHQgbmhici5cbiAgICAgICAgICogTm90ZSB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgaXMgYSBtb25vdGlsZSAqL1xuICAgICAgICBJbm5lcigwLCAwKVxuICAgICAgfCBNYWtlTmV3XG4gICAgICB8IEFwcGVuZExlZnQoXykgPT4gT3V0ZXJcbiAgICAgIH07XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IE9wdGlvbi5tYXAoWmlwcGVyLnNldF9jYXJldChjYXJldCkpXG4gICAgfD4gb3B0X3JlZ3JvbGQoTGVmdClcbiAgICB8PiBPcHRpb24ubWFwKG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyKSk7XG4gIHwgKE91dGVyLCAoXywgTm9uZSkpID0+XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgfD4gT3B0aW9uLm1hcChtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhcikpXG4gIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBaaXBwZXI7XG5cbmxldCBpc193cml0ZV9hY3Rpb24gPSAoYTogQWN0aW9uLnQpID0+IHtcbiAgc3dpdGNoIChhKSB7XG4gIHwgTW92ZShfKVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVW5zZWxlY3QoXylcbiAgfCBKdW1wKF8pXG4gIHwgU2VsZWN0KF8pID0+IGZhbHNlXG4gIHwgRGVzdHJ1Y3QoXylcbiAgfCBJbnNlcnQoXylcbiAgfCBQaWNrX3VwXG4gIHwgUHV0X2Rvd25cbiAgfCBSb3RhdGVCYWNrcGFja1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KF8pID0+IHRydWVcbiAgfTtcbn07XG5cbmxldCBnb196ID1cbiAgICAoXG4gICAgICB+bWV0YTogb3B0aW9uKEVkaXRvci5NZXRhLnQpPT8sXG4gICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgYTogQWN0aW9uLnQsXG4gICAgICB6OiBaaXBwZXIudCxcbiAgICApXG4gICAgOiBBY3Rpb24uUmVzdWx0LnQoWmlwcGVyLnQpID0+IHtcbiAgbGV0IG1ldGEgPVxuICAgIHN3aXRjaCAobWV0YSkge1xuICAgIHwgU29tZShtKSA9PiBtXG4gICAgfCBOb25lID0+IEVkaXRvci5NZXRhLmluaXQoeilcbiAgICB9O1xuICBtb2R1bGUgTSA9ICh2YWwgRWRpdG9yLk1ldGEubW9kdWxlX29mX3QobWV0YSkpO1xuICBtb2R1bGUgTW92ZSA9IE1vdmUuTWFrZShNKTtcbiAgbW9kdWxlIFNlbGVjdCA9IFNlbGVjdC5NYWtlKE0pO1xuXG4gIGxldCBzZWxlY3RfdGVybV9jdXJyZW50ID0geiA9PlxuICAgIHN3aXRjaCAoSW5kaWNhdGVkLmluZGV4KHopKSB7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIHwgU29tZShpZCkgPT5cbiAgICAgIHN3aXRjaCAoU2VsZWN0LnRlcm0oaWQsIHopKSB7XG4gICAgICB8IFNvbWUoeikgPT4gT2soeilcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIH1cbiAgICB9O1xuXG4gIHN3aXRjaCAoYSkge1xuICB8IE1vdmUoZCkgPT5cbiAgICBNb3ZlLmdvKGQsIHopIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSlcbiAgfCBNb3ZlVG9OZXh0SG9sZShkKSA9PlxuICAgIE1vdmUuZ28oR29hbChQaWVjZShHcm91dCwgZCkpLCB6KVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSlcbiAgfCBKdW1wKGp1bXBfdGFyZ2V0KSA9PlxuICAgIG9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbiAgICBsZXQgaWR4ID0gSW5kaWNhdGVkLmluZGV4KHopO1xuICAgIGxldCAodGVybSwgXykgPVxuICAgICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJQZXJmb3JtLmdvX3ogPT4gTWFrZVRlcm0uZnJvbV96aXBcIiwgdHJ1ZSwgKCkgPT5cbiAgICAgICAgTWFrZVRlcm0uZnJvbV96aXBfZm9yX3ZpZXcoeilcbiAgICAgICk7XG4gICAgbGV0IHN0YXRpY3MgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXAoc2V0dGluZ3MsIHRlcm0pO1xuXG4gICAgKFxuICAgICAgc3dpdGNoIChqdW1wX3RhcmdldCkge1xuICAgICAgfCBCaW5kaW5nU2l0ZU9mSW5kaWNhdGVkVmFyID0+XG4gICAgICAgIGxldCogaWR4ID0gaWR4O1xuICAgICAgICBsZXQqIGNpID0gSWQuTWFwLmZpbmRfb3B0KGlkeCwgc3RhdGljcyk7XG4gICAgICAgIGxldCogYmluZGluZ19pZCA9IEluZm8uZ2V0X2JpbmRpbmdfc2l0ZShjaSk7XG4gICAgICAgIE1vdmUuanVtcF90b19pZCh6LCBiaW5kaW5nX2lkKTtcbiAgICAgIHwgVGlsZUlkKGlkKSA9PiBNb3ZlLmp1bXBfdG9faWQoeiwgaWQpXG4gICAgICB9XG4gICAgKVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSk7XG4gIHwgVW5zZWxlY3QoU29tZShkKSkgPT4gT2soWmlwcGVyLmRpcmVjdGlvbmFsX3Vuc2VsZWN0KGQsIHopKVxuICB8IFVuc2VsZWN0KE5vbmUpID0+XG4gICAgbGV0IHogPSBaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3Qoei5zZWxlY3Rpb24uZm9jdXMsIHopO1xuICAgIE9rKHopO1xuICB8IFNlbGVjdChBbGwpID0+XG4gICAgc3dpdGNoIChNb3ZlLmRvX2V4dHJlbWUoTW92ZS5wcmltYXJ5KEJ5VG9rZW4pLCBVcCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIHN3aXRjaCAoU2VsZWN0LmdvKEV4dHJlbWUoRG93biksIHopKSB7XG4gICAgICB8IFNvbWUoeikgPT4gT2soeilcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIH1cbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfVxuICB8IFNlbGVjdChUZXJtKEN1cnJlbnQpKSA9PiBzZWxlY3RfdGVybV9jdXJyZW50KHopXG4gIHwgU2VsZWN0KFNtYXJ0KSA9PlxuICAgIC8qIElmIHRoZSBjdXJyZW50IHRpbGUgaXMgbm90IGNvaW5jaWRlbnQgd2l0aCB0aGUgdGVybSxcbiAgICAgICBzZWxlY3QgdGhlIHRlcm0uIE90aGVyd2lzZSwgc2VsZWN0IHRoZSBwYXJlbnQgdGVybS4gKi9cbiAgICBsZXQgdGlsZV9pc190ZXJtID1cbiAgICAgIHN3aXRjaCAoSW5kaWNhdGVkLmluZGV4KHopKSB7XG4gICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgIHwgU29tZShpZCkgPT4gU2VsZWN0LnRpbGUoaWQsIHopID09IFNlbGVjdC50ZXJtKGlkLCB6KVxuICAgICAgfTtcbiAgICBpZiAoIXRpbGVfaXNfdGVybSkge1xuICAgICAgc2VsZWN0X3Rlcm1fY3VycmVudCh6KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9QRVJGOiB0aGlzIGlzIGV4cGVuc2l2ZVxuICAgICAgbGV0ICh0ZXJtLCBfKSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl92aWV3KHopO1xuICAgICAgbGV0IHN0YXRpY3MgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXAoc2V0dGluZ3MsIHRlcm0pO1xuICAgICAgbGV0IHRhcmdldCA9XG4gICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgSW5kaWNhdGVkLmluZGV4KHopXG4gICAgICAgICAgfD4gT3B0VXRpbC5hbmRfdGhlbihpZHggPT4gSWQuTWFwLmZpbmRfb3B0KGlkeCwgc3RhdGljcykpXG4gICAgICAgICkge1xuICAgICAgICB8IFNvbWUoY2kpID0+XG4gICAgICAgICAgc3dpdGNoIChJbmZvLmFuY2VzdG9yc19vZihjaSkpIHtcbiAgICAgICAgICB8IFtdID0+IE5vbmVcbiAgICAgICAgICB8IFtwYXJlbnQsIC4uLl9dID0+IFNvbWUocGFyZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgICAgfTtcbiAgICAgIHN3aXRjaCAodGFyZ2V0KSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICB8IFNvbWUoaWQpID0+XG4gICAgICAgIHN3aXRjaCAoU2VsZWN0LnRlcm0oaWQsIHopKSB7XG4gICAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgfCBTZWxlY3QoVGVybShJZChpZCwgZCkpKSA9PlxuICAgIHN3aXRjaCAoU2VsZWN0LnRlcm0oaWQsIHopKSB7XG4gICAgfCBTb21lKHopID0+XG4gICAgICBsZXQgeiA9IGQgPT0gUmlnaHQgPyB6IDogWmlwcGVyLnRvZ2dsZV9mb2N1cyh6KTtcbiAgICAgIE9rKHopO1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB9XG4gIHwgU2VsZWN0KFRpbGUoQ3VycmVudCkpID0+XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfCBTb21lKGlkKSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QudGlsZShpZCwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIH1cbiAgfCBTZWxlY3QoVGlsZShJZChpZCwgZCkpKSA9PlxuICAgIHN3aXRjaCAoU2VsZWN0LnRpbGUoaWQsIHopKSB7XG4gICAgfCBTb21lKHopID0+XG4gICAgICBsZXQgeiA9IGQgPT0gUmlnaHQgPyB6IDogWmlwcGVyLnRvZ2dsZV9mb2N1cyh6KTtcbiAgICAgIE9rKHopO1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB9XG4gIHwgU2VsZWN0KFJlc2l6ZShkKSkgPT5cbiAgICBTZWxlY3QuZ28oZCwgeikgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gIHwgRGVzdHJ1Y3QoZCkgPT5cbiAgICB6XG4gICAgfD4gRGVzdHJ1Y3QuZ28oZClcbiAgICB8PiBPcHRpb24ubWFwKHJlbW9sZF9yZWdyb3V0KGQpKVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfZGVzdHJ1Y3QpXG4gIHwgSW5zZXJ0KGNoYXIpID0+XG4gICAgelxuICAgIHw+IEluc2VydC5nbyhjaGFyKVxuICAgIC8qIG5vdGU6IHJlbW9sZGluZyBoZXJlIGlzIGRvbmUgY2FzZS1ieS1jYXNlICovXG4gICAgLy98PiBPcHRpb24ubWFwKCh6KSA9PiByZW1vbGRfcmVncm91dChSaWdodCwgeikpXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9pbnNlcnQpXG4gIHwgUGlja191cCA9PiBPayhyZW1vbGRfcmVncm91dChMZWZ0LCBaaXBwZXIucGlja191cCh6KSkpXG4gIHwgUHV0X2Rvd24gPT5cbiAgICBsZXQgeiA9XG4gICAgICAvKiBBbHRlcm5hdGl2ZWx5LCBwdXR0aW5nIGRvd24gaW5zaWRlIHRva2VuIGNvdWxkIGVpdGVyIG1lcmdlLWluIG9yIHNwbGl0ICovXG4gICAgICBzd2l0Y2ggKHouY2FyZXQpIHtcbiAgICAgIHwgSW5uZXIoXykgPT4gTm9uZVxuICAgICAgfCBPdXRlciA9PiBaaXBwZXIucHV0X2Rvd24oTGVmdCwgeilcbiAgICAgIH07XG4gICAgelxuICAgIHw+IE9wdGlvbi5tYXAocmVtb2xkX3JlZ3JvdXQoTGVmdCkpXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9wdXRfZG93bik7XG4gIHwgUm90YXRlQmFja3BhY2sgPT5cbiAgICBsZXQgeiA9IHsuLi56LCBiYWNrcGFjazogVXRpbC5MaXN0VXRpbC5yb3RhdGUoei5iYWNrcGFjayl9O1xuICAgIE9rKHopO1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KChMZWZ0KF8pIHwgUmlnaHQoXykpIGFzIGQpID0+XG4gICAgaWYgKEJhY2twYWNrLnJlc3RyaWN0ZWQoei5iYWNrcGFjaykpIHtcbiAgICAgIE1vdmUudG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBNb3ZlLmdvKExvY2FsKGQpLCB6KVxuICAgICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKTtcbiAgICB9XG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoKFVwIHwgRG93bikgYXMgZCkgPT5cbiAgICBNb3ZlLnRvX2JhY2twYWNrX3RhcmdldChkLCB6KVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSlcbiAgfTtcbn07XG5cbmxldCBnbyA9XG4gICAgKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIGE6IEFjdGlvbi50LCBlZDogRWRpdG9yLnQpXG4gICAgOiBBY3Rpb24uUmVzdWx0LnQoRWRpdG9yLnQpID0+XG4gIGlmIChlZC5yZWFkX29ubHkgJiYgaXNfd3JpdGVfYWN0aW9uKGEpKSB7XG4gICAgUmVzdWx0Lk9rKGVkKTtcbiAgfSBlbHNlIHtcbiAgICBvcGVuIFJlc3VsdC5TeW50YXg7XG4gICAgbGV0IEVkaXRvci5TdGF0ZS57emlwcGVyLCBtZXRhfSA9IGVkLnN0YXRlO1xuICAgIEVmZmVjdC5zX2NsZWFyKCk7XG4gICAgbGV0KyB6ID0gZ29feih+c2V0dGluZ3MsIH5tZXRhLCBhLCB6aXBwZXIpO1xuICAgIEVkaXRvci5uZXdfc3RhdGUofmVmZmVjdHM9RWZmZWN0LnNeLCBhLCB6LCBlZCk7XG4gIH07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFV0aWwuT3B0VXRpbC5TeW50YXg7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgY29kZTogbGlzdChzdHJpbmcpLFxuICBzZWxlY3Rpb246IGxpc3Qoc3RyaW5nKSxcbiAgYmFja3BhY2s6IGxpc3QobGlzdChzdHJpbmcpKSxcbn07XG5cbmxldCBzZWdfb2ZfemlwID0gWmlwcGVyLnNlZ193aXRob3V0X2J1ZmZlcjtcblxubGV0IHJlYyBvZl9zZWdtZW50ID0gKH5ob2xlcywgc2VnOiBTZWdtZW50LnQpOiBzdHJpbmcgPT5cbiAgc2VnIHw+IExpc3QubWFwKG9mX3BpZWNlKH5ob2xlcykpIHw+IFN0cmluZy5jb25jYXQoXCJcIilcbmFuZCBvZl9waWVjZSA9ICh+aG9sZXMsIHA6IFBpZWNlLnQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBvZl90aWxlKH5ob2xlcywgdClcbiAgfCBHcm91dCh7c2hhcGU6IENvbmNhdmUsIF99KSA9PiBcIiBcIlxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgd2hlbiBob2xlcyAhPSBOb25lID0+IE9wdGlvbi5nZXQoaG9sZXMpXG4gIHwgR3JvdXQoe3NoYXBlOiBDb252ZXgsIF99KSA9PiBcIiBcIlxuICB8IFNlY29uZGFyeSh3KSA9PlxuICAgIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPyBcIlxcblwiIDogU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KVxuICB9XG5hbmQgb2ZfdGlsZSA9ICh+aG9sZXMsIHQ6IFRpbGUudCk6IHN0cmluZyA9PlxuICBBYmEubWsodC5zaGFyZHMsIHQuY2hpbGRyZW4pXG4gIHw+IEFiYS5qb2luKG9mX2RlbGltKHQpLCBvZl9zZWdtZW50KH5ob2xlcykpXG4gIHw+IFN0cmluZy5jb25jYXQoXCJcIilcbmFuZCBvZl9kZWxpbSA9ICh0OiBQaWVjZS50aWxlLCBpOiBpbnQpOiBzdHJpbmcgPT4gTGlzdC5udGgodC5sYWJlbCwgaSk7XG5cbmxldCB0b19zdHJpbmdfYmFzaWMgPSAoejogWmlwcGVyLnQpOiBzdHJpbmcgPT4ge1xuICB6IHw+IHNlZ19vZl96aXAgfD4gb2Zfc2VnbWVudCh+aG9sZXM9Tm9uZSk7XG59O1xuXG5sZXQgbGluZXNfdG9fbGlzdCA9IFN0cmluZy5zcGxpdF9vbl9jaGFyKCdcXG4nKTtcblxubGV0IGNhcmV0X3N0ciA9IFwi4paRXCI7XG5cbmxldCB0b19yb3dzID1cbiAgICAoXG4gICAgICB+aG9sZXM6IG9wdGlvbihzdHJpbmcpLFxuICAgICAgfm1lYXN1cmVkOiBNZWFzdXJlZC50LFxuICAgICAgfmNhcmV0OiBvcHRpb24oTWVhc3VyZWQuUG9pbnQudCksXG4gICAgICB+aW5kZW50OiBzdHJpbmcsXG4gICAgICB+c2VnbWVudDogU2VnbWVudC50LFxuICAgIClcbiAgICA6IGxpc3Qoc3RyaW5nKSA9PiB7XG4gIGxldCBpbmRlbnRfb2YgPSBpID0+IE1lYXN1cmVkLlJvd3MuZmluZChpLCBtZWFzdXJlZC5yb3dzKS5pbmRlbnQ7XG4gIGxldCBta19pbmRlbnQgPSAoaSwgcikgPT4gU3RyaW5nVXRpbC5yZXBlYXQoaW5kZW50X29mKGkpLCBpbmRlbnQpICsrIHI7XG4gIGxldCByb3dzID1cbiAgICBzZWdtZW50IHw+IG9mX3NlZ21lbnQofmhvbGVzKSB8PiBsaW5lc190b19saXN0IHw+IExpc3QubWFwaShta19pbmRlbnQpO1xuICBzd2l0Y2ggKGNhcmV0KSB7XG4gIHwgU29tZSh7cm93LCBjb2x9KSA9PlxuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbnRoX29wdChyb3csIHJvd3MpKSB7XG4gICAgfCBTb21lKChwcmUsIGNhcmV0X3Jvdywgc3VmKSkgd2hlbiBjb2wgPCBTdHJpbmcubGVuZ3RoKGNhcmV0X3JvdykgPT5cbiAgICAgIHByZSBAIFtTdHJpbmdVdGlsLmluc2VydF9udGgoY29sLCBjYXJldF9zdHIsIGNhcmV0X3JvdyldIEAgc3VmXG4gICAgfCBTb21lKChwcmUsIGNhcmV0X3Jvdywgc3VmKSkgPT4gcHJlIEAgW2NhcmV0X3JvdyArKyBjYXJldF9zdHJdIEAgc3VmXG4gICAgfCBfID0+IHJvd3NcbiAgICB9XG4gIHwgTm9uZSA9PiByb3dzXG4gIH07XG59O1xuXG5sZXQgcHJldHR5X3ByaW50ID0gKH5tZWFzdXJlZDogTWVhc3VyZWQudCwgejogWmlwcGVyLnQpOiBzdHJpbmcgPT5cbiAgdG9fcm93cyhcbiAgICB+aG9sZXM9Tm9uZSxcbiAgICB+bWVhc3VyZWQsXG4gICAgfmNhcmV0PU5vbmUsXG4gICAgfmluZGVudD1cIiBcIixcbiAgICB+c2VnbWVudD1zZWdfb2ZfemlwKHopLFxuICApXG4gIHw+IFN0cmluZy5jb25jYXQoXCJcXG5cIik7XG5cbmxldCB0b19zdHJpbmdfZWRpdG9yID1cbiAgICAofmhvbGVzOiBvcHRpb24oc3RyaW5nKT1Tb21lKFwiXCIpLCBlZGl0b3I6IEVkaXRvci50KTogc3RyaW5nID0+XG4gIHRvX3Jvd3MoXG4gICAgfmhvbGVzLFxuICAgIH5tZWFzdXJlZD1lZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZCxcbiAgICB+Y2FyZXQ9Tm9uZSxcbiAgICB+aW5kZW50PVwiXCIsXG4gICAgfnNlZ21lbnQ9c2VnX29mX3ppcChlZGl0b3Iuc3RhdGUuemlwcGVyKSxcbiAgKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXFxuXCIpO1xuXG5sZXQgdG9fc3RyaW5nX3NlbGVjdGlvbiA9IChlZGl0b3I6IEVkaXRvci50KTogc3RyaW5nID0+XG4gIHRvX3Jvd3MoXG4gICAgfm1lYXN1cmVkPWVkaXRvci5zdGF0ZS5tZXRhLm1lYXN1cmVkLFxuICAgIH5jYXJldD1Ob25lLFxuICAgIH5pbmRlbnQ9XCIgXCIsXG4gICAgfmhvbGVzPU5vbmUsXG4gICAgfnNlZ21lbnQ9ZWRpdG9yLnN0YXRlLnppcHBlci5zZWxlY3Rpb24uY29udGVudCxcbiAgKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXFxuXCIpO1xuXG5sZXQgdG9fbG9nID0gKH5tZWFzdXJlZDogTWVhc3VyZWQudCwgejogWmlwcGVyLnQpOiB0ID0+IHtcbiAgY29kZTpcbiAgICB0b19yb3dzKFxuICAgICAgfmhvbGVzPU5vbmUsXG4gICAgICB+bWVhc3VyZWQsXG4gICAgICB+Y2FyZXQ9U29tZShaaXBwZXIuY2FyZXRfcG9pbnQobWVhc3VyZWQsIHopKSxcbiAgICAgIH5pbmRlbnQ9XCIgXCIsXG4gICAgICB+c2VnbWVudD1zZWdfb2ZfemlwKHopLFxuICAgICksXG4gIHNlbGVjdGlvbjogei5zZWxlY3Rpb24uY29udGVudCB8PiBvZl9zZWdtZW50KH5ob2xlcz1Ob25lKSB8PiBsaW5lc190b19saXN0LFxuICBiYWNrcGFjazpcbiAgICBMaXN0Lm1hcChcbiAgICAgIChzOiBTZWxlY3Rpb24udCkgPT5cbiAgICAgICAgcy5jb250ZW50IHw+IG9mX3NlZ21lbnQofmhvbGVzPU5vbmUpIHw+IGxpbmVzX3RvX2xpc3QsXG4gICAgICB6LmJhY2twYWNrLFxuICAgICksXG59O1xuXG5sZXQgdG9fbG9nX2ZsYXQgPSAofm1lYXN1cmVkLCB6OiBaaXBwZXIudCk6IHN0cmluZyA9PiB7XG4gIGxldCB7Y29kZSwgc2VsZWN0aW9uLCBiYWNrcGFja30gPSB0b19sb2cofm1lYXN1cmVkLCB6KTtcbiAgUHJpbnRmLnNwcmludGYoXG4gICAgXCJDT0RFOlxcbiVzXFxuU0VMRUNUSU9OOlxcbiVzXFxuJXNcXG5cIixcbiAgICBTdHJpbmcuY29uY2F0KFwiXFxuXCIsIGNvZGUpLFxuICAgIFN0cmluZy5jb25jYXQoXCJcXG5cIiwgc2VsZWN0aW9uKSxcbiAgICBiYWNrcGFja1xuICAgIHw+IExpc3QubWFwaSgoaSwgYikgPT5cbiAgICAgICAgIFByaW50Zi5zcHJpbnRmKFwiQlAoJWQpOlxcbiAlc1xcblwiLCBpLCBTdHJpbmcuY29uY2F0KFwiXFxuXCIsIGIpKVxuICAgICAgIClcbiAgICB8PiBTdHJpbmcuY29uY2F0KFwiXCIpLFxuICApO1xufTtcblxubGV0IHppcHBlcl9vZl9zdHJpbmcgPVxuICAgICh+emlwcGVyX2luaXQ9WmlwcGVyLmluaXQoKSwgc3RyOiBzdHJpbmcpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgbGV0IGluc2VydCA9ICh6OiBvcHRpb24oWmlwcGVyLnQpLCBjOiBzdHJpbmcpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgICBsZXQqIHogPSB6O1xuICAgIHRyeShjID09IFwiXFxyXCIgPyBTb21lKHopIDogSW5zZXJ0LmdvKGMgPT0gXCJcXG5cIiA/IEZvcm0ubGluZWJyZWFrIDogYywgeikpIHtcbiAgICB8IGV4biA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIldBUk46IHppcHBlcl9vZl9zdHJpbmc6IFwiICsrIFByaW50ZXhjLnRvX3N0cmluZyhleG4pKTtcbiAgICAgIE5vbmU7XG4gICAgfTtcbiAgfTtcbiAgc3RyIHw+IFV0aWwuU3RyaW5nVXRpbC50b19saXN0IHw+IExpc3QuZm9sZF9sZWZ0KGluc2VydCwgU29tZSh6aXBwZXJfaW5pdCkpO1xufTtcblxubGV0IHBhc3RlX2ludG9femlwID0gKHo6IFppcHBlci50LCBzdHI6IHN0cmluZyk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAvKiBIQUNLKGFuZHJldyk6IFRoZXNlIHR3byBwZXJmb3JtIGNhbGxzIGFyZSBhIGhhY2sgdG9cbiAgICAgZGVhbCB3aXRoIHRoZSBmYWN0IHRoYXQgcGFzdGluZyBzb21ldGhpbmcgbGlrZSBcImxldCBhID0gYiBpblwiXG4gICAgIHdvbid0IHRyaWdnZXIgdGhlIGJhcmZpbmcgb2YgdGhlIFwiaW5cIjsgdG8gdHJpZ2dlciB0aGlzLCB3ZVxuICAgICBpbnNlcnQgYSBzcGFjZSwgYW5kIHRoZW4gd2UgaW1tZWRpYXRlbHkgZGVsZXRlIGl0LiAqL1xuICBsZXQgc2V0dGluZ3MgPSBDb3JlU2V0dGluZ3Mub2ZmO1xuICBsZXQqIHogPSB6aXBwZXJfb2Zfc3RyaW5nKH56aXBwZXJfaW5pdD16LCBzdHIpO1xuICBzd2l0Y2ggKFBlcmZvcm0uZ29feih+c2V0dGluZ3MsIEluc2VydChcIiBcIiksIHopKSB7XG4gIHwgRXJyb3IoXykgPT4gTm9uZVxuICB8IE9rKHopID0+XG4gICAgc3dpdGNoIChQZXJmb3JtLmdvX3oofnNldHRpbmdzLCBEZXN0cnVjdChMZWZ0KSwgeikpIHtcbiAgICB8IEVycm9yKF8pID0+IE5vbmVcbiAgICB8IE9rKHopID0+IFNvbWUoeilcbiAgICB9XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICB6aXBwZXI6IHN0cmluZyxcbiAgYmFja3VwX3RleHQ6IHN0cmluZyxcbn07XG5cbmxldCBwZXJzaXN0ID0gKHppcHBlcjogWmlwcGVyLnQpID0+IHtcbiAge1xuICAgIHppcHBlcjogWmlwcGVyLnNleHBfb2ZfdCh6aXBwZXIpIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmcsXG4gICAgYmFja3VwX3RleHQ6IFByaW50ZXIudG9fc3RyaW5nX2Jhc2ljKHppcHBlciksXG4gIH07XG59O1xuXG5sZXQgdW5wZXJzaXN0ID0gKHBlcnNpc3RlZDogdCkgPT5cbiAgdHJ5KFNleHBsaWIuU2V4cC5vZl9zdHJpbmcocGVyc2lzdGVkLnppcHBlcikgfD4gWmlwcGVyLnRfb2Zfc2V4cCkge1xuICB8IF8gPT5cbiAgICBwcmludF9lbmRsaW5lKFxuICAgICAgXCJXYXJuaW5nOiB1c2luZyBiYWNrdXAgdGV4dCEgU2VyaWFsaXphdGlvbiBtYXkgYmUgZm9yIGFuIG9sZGVyIHZlcnNpb24gb2YgSGF6ZWwuXCIsXG4gICAgKTtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhwZXJzaXN0ZWQuYmFja3VwX3RleHQpKSB7XG4gICAgfCBOb25lID0+IFppcHBlci5pbml0KClcbiAgICB8IFNvbWUoeikgPT4gelxuICAgIH07XG4gIH07XG5cbmxldCBzZXJpYWxpemUgPSAoemlwcGVyOiBaaXBwZXIudCkgPT4ge1xuICBwZXJzaXN0KHppcHBlcikgfD4geW9qc29uX29mX3QgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICBsZXQgcGVyc2lzdGVkID0gZGF0YSB8PiBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyB8PiB0X29mX3lvanNvbjtcbiAgdW5wZXJzaXN0KHBlcnNpc3RlZCk7XG59O1xuIiwib3BlbiBVdGlsO1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBsZXQgZDogRGlyZWN0aW9uLnQ7XG4gIGxldCBvcmllbnQ6ICgoJ2EsICdhKSkgPT4gKCdhLCAnYSk7XG59O1xuXG5tb2R1bGUgTDogUyA9IHtcbiAgbGV0IGQgPSBEaXJlY3Rpb24uTGVmdDtcbiAgbGV0IG9yaWVudCA9ICgobCwgcikpID0+IChsLCByKTtcbn07XG5tb2R1bGUgUjogUyA9IHtcbiAgbGV0IGQgPSBEaXJlY3Rpb24uUmlnaHQ7XG4gIGxldCBvcmllbnQgPSAoKGwsIHIpKSA9PiAociwgbCk7XG59O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBldmFsX3Jlc3VsdCA9IHtcbiAgZWxhYjogREhFeHAudCxcbiAgZXZhbHVhdGlvbjogUHJvZ3JhbVJlc3VsdC50LFxuICBwcmV2aW91czogUHJvZ3JhbVJlc3VsdC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKGV2YWxfcmVzdWx0KVxuICB8IFN0ZXBwZXIoU3RlcHBlci50KTtcblxubGV0IGluaXRfZXZhbCA9IGVsYWIgPT5cbiAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmd9KTtcblxubGV0IHVwZGF0ZV9lbGFiID0gZWxhYiA9PlxuICBmdW5cbiAgfCBOb0VsYWIgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91czogUmVzdWx0UGVuZGluZ30pXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbiwgX30pID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IGV2YWx1YXRpb259KVxuICB8IFN0ZXBwZXIoe2VsYWI6IGVsYWIyLCBffSkgYXMgcyB3aGVuIERIRXhwLmZhc3RfZXF1YWwoZWxhYiwgZWxhYjIpID0+IHNcbiAgfCBTdGVwcGVyKF8pID0+IFN0ZXBwZXIoU3RlcHBlci5pbml0KGVsYWIpKTtcblxubGV0IHVwZGF0ZV9zdGVwcGVyID0gZiA9PlxuICBmdW5cbiAgfCBOb0VsYWIgYXMgZVxuICB8IEV2YWx1YXRpb24oXykgYXMgZSA9PiBlXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKGYocykpO1xuXG5sZXQgc3RlcF9mb3J3YXJkID0gKGlkeDogaW50LCBtcjogdCkgPT5cbiAgbXIgfD4gdXBkYXRlX3N0ZXBwZXIoU3RlcHBlci5zdGVwX3BlbmRpbmcoaWR4KSk7XG5cbmxldCBzdGVwX2JhY2t3YXJkID0gKH5zZXR0aW5ncywgbXI6IHQpID0+XG4gIG1yIHw+IHVwZGF0ZV9zdGVwcGVyKFN0ZXBwZXIuc3RlcF9iYWNrd2FyZCh+c2V0dGluZ3MpKTtcblxubGV0IHJ1bl9wZW5kaW5nID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQpID0+XG4gIGZ1blxuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91c30pID0+XG4gICAgRXZhbHVhdGlvbih7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBldmFsdWF0aW9uOiBJbnRlcmZhY2UuZXZhbHVhdGUofnNldHRpbmdzLCBlbGFiKSxcbiAgICB9KVxuICB8IEV2YWx1YXRpb24oXykgYXMgZSA9PiBlXG4gIHwgU3RlcHBlcihzKSA9PlxuICAgIFN0ZXBwZXIoU3RlcHBlci5ldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncz1zZXR0aW5ncy5ldmFsdWF0aW9uLCBzKSk7XG5cbmxldCB0aW1lb3V0OiB0ID0+IHQgPVxuICBmdW5cbiAgfCBOb0VsYWIgPT4gTm9FbGFiXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbiwgX30gYXMgZSkgPT5cbiAgICBFdmFsdWF0aW9uKHsuLi5lLCBldmFsdWF0aW9uOiBSZXN1bHRGYWlsKFRpbWVvdXQpLCBwcmV2aW91czogZXZhbHVhdGlvbn0pXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIudGltZW91dChzKSk7XG5cbmxldCB0b2dnbGVfc3RlcHBlciA9XG4gIGZ1blxuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBffSkgPT4gU3RlcHBlcihTdGVwcGVyLmluaXQoZWxhYikpXG4gIHwgU3RlcHBlcih7ZWxhYiwgX30pID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmd9KTtcblxubGV0IHRlc3RfcmVzdWx0cyA9IChyZXN1bHQ6IHQpID0+XG4gIHN3aXRjaCAocmVzdWx0KSB7XG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogUmVzdWx0T2socHIpLCBffSlcbiAgfCBFdmFsdWF0aW9uKHtcbiAgICAgIGV2YWx1YXRpb246IE9mZihfKSB8IFJlc3VsdEZhaWwoXykgfCBSZXN1bHRQZW5kaW5nLFxuICAgICAgcHJldmlvdXM6IFJlc3VsdE9rKHByKSxcbiAgICAgIF8sXG4gICAgfSkgPT5cbiAgICBwclxuICAgIHw+IFByb2dyYW1SZXN1bHQuZ2V0X3N0YXRlXG4gICAgfD4gRXZhbHVhdG9yU3RhdGUuZ2V0X3Rlc3RzXG4gICAgfD4gVGVzdFJlc3VsdHMubWtfcmVzdWx0c1xuICAgIHw+IE9wdGlvbi5zb21lXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogT2ZmKF8pIHwgUmVzdWx0RmFpbChfKSB8IFJlc3VsdFBlbmRpbmcsIF99KVxuICB8IE5vRWxhYlxuICB8IFN0ZXBwZXIoXykgPT4gTm9uZVxuICB9O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBlcnNpc3RlbnQgPVxuICB8IEV2YWx1YXRpb25cbiAgfCBTdGVwcGVyKFN0ZXBwZXIucGVyc2lzdGVudCk7XG5cbmxldCB0b19wZXJzaXN0ZW50OiB0ID0+IHBlcnNpc3RlbnQgPVxuICBmdW5cbiAgfCBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKF8pID0+IEV2YWx1YXRpb25cbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci50b19wZXJzaXN0ZW50KHMpKTtcblxubGV0IG9mX3BlcnNpc3RlbnQ6IHBlcnNpc3RlbnQgPT4gdCA9XG4gIGZ1blxuICB8IEV2YWx1YXRpb24gPT4gTm9FbGFiXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIuZnJvbV9wZXJzaXN0ZW50KHMpKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qXG4gTW9kZWxSZXN1bHRzIGlzIHVzZWQgdG8gc3RvcmUgdGhlIHJlc3VsdHMgb2ZcbiBldmFsdWF0aW9ucyByZXF1ZXN0ZWQgYnkgdGhlIGN1cnJlbnQgZWRpdG9yIG1vZGUsXG4gd2l0aCB0aGUga2V5IGRpc3Rpbmd1aXNoaW5nIHRoZXNlIHJlcXVlc3RzLlxuXG4gU2VlIHRoZSBTY2hvb2xFeGVyY2lzZSBtb2R1bGUgZm9yIGFuIGV4YW1wbGUuXG4gKi9cbm1vZHVsZSBLZXkgPSB7XG4gIGluY2x1ZGUgU3RyaW5nO1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHN0cmluZztcbn07XG5cbm1vZHVsZSBNID0gVXRpbC5NYXBVdGlsLk1ha2UoS2V5KTtcbmluY2x1ZGUgTTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gTS50KE1vZGVsUmVzdWx0LnQpO1xuXG5sZXQgaW5pdF9ldmFsID0gKGRzOiBsaXN0KChLZXkudCwgREhFeHAudCkpKTogdCA9PlxuICBkcyB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXEgfD4gbWFwKE1vZGVsUmVzdWx0LmluaXRfZXZhbCk7XG5cbmxldCB1cGRhdGVfZWxhYnMgPVxuICBMaXN0LmZvbGRfcmlnaHQoKChrLCBlbGFiKSwgYWNjKSA9PlxuICAgIHVwZGF0ZShcbiAgICAgIGssXG4gICAgICB2ID0+XG4gICAgICAgIFNvbWUoXG4gICAgICAgICAgdlxuICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICAgICAgfD4gTW9kZWxSZXN1bHQudXBkYXRlX2VsYWIoZWxhYiksXG4gICAgICAgICksXG4gICAgICBhY2MsXG4gICAgKVxuICApO1xuXG5sZXQgbG9va3VwID0gKHJlc3VsdHM6IHQsIGtleTogS2V5LnQpID0+IGZpbmRfb3B0KGtleSwgcmVzdWx0cyk7XG5cbmxldCBydW5fcGVuZGluZyA9ICh+c2V0dGluZ3MpID0+IE0ubWFwKE1vZGVsUmVzdWx0LnJ1bl9wZW5kaW5nKH5zZXR0aW5ncykpO1xuXG5sZXQgdGltZW91dF9hbGwgPSBtYXAoTW9kZWxSZXN1bHQudGltZW91dCk7XG5cbmxldCBhZHZhbmNlX2V2YWx1YXRvcl9yZXN1bHQgPVxuICAgIChyZXN1bHRzOiB0LCAoa2V5OiBLZXkudCwgZWxhYjogREhFeHAudCkpXG4gICAgOiBvcHRpb24oKEtleS50LCBNb2RlbFJlc3VsdC50KSkgPT5cbiAgc3dpdGNoIChsb29rdXAocmVzdWx0cywga2V5KSkge1xuICB8IFNvbWUoU3RlcHBlcihfKSkgPT4gTm9uZVxuICB8IFNvbWUoRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogcHJldmlvdXMsIF99KSkgPT5cbiAgICBTb21lKChrZXksIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzfSkpKVxuICB8IFNvbWUoTm9FbGFiKVxuICB8IE5vbmUgPT5cbiAgICBTb21lKChcbiAgICAgIGtleSxcbiAgICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSksXG4gICAgKSlcbiAgfTtcblxubGV0IHN0ZXBwZXJfcmVzdWx0X29wdCA9XG4gICAgKChrZXk6IEtleS50LCByOiBNb2RlbFJlc3VsdC50KSk6IG9wdGlvbigoS2V5LnQsIE1vZGVsUmVzdWx0LnQpKSA9PlxuICBzd2l0Y2ggKHIpIHtcbiAgfCBTdGVwcGVyKF8pID0+IFNvbWUoKGtleSwgcikpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCB0b19ldmFsdWF0ZSA9IChyZXN1bHRzOiB0LCBlbGFiczogbGlzdCgoS2V5LnQsIERIRXhwLnQpKSk6IHQgPT5cbiAgZWxhYnNcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKGFkdmFuY2VfZXZhbHVhdG9yX3Jlc3VsdChyZXN1bHRzKSlcbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gb2Zfc2VxO1xuXG5sZXQgdG9fc3RlcCA9IChyZXN1bHRzOiB0KTogdCA9PlxuICBiaW5kaW5ncyhyZXN1bHRzKVxuICB8PiBMaXN0LmZpbHRlcl9tYXAoc3RlcHBlcl9yZXN1bHRfb3B0KVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBvZl9zZXE7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSAoTWV0YVZhci50LCBIb2xlSW5zdGFuY2VJZC50KTtcblxubGV0IHVfb2YgPSAoKHUsIF8pOiB0KTogTWV0YVZhci50ID0+IHU7XG5sZXQgaV9vZiA9ICgoXywgaSk6IHQpOiBIb2xlSW5zdGFuY2VJZC50ID0+IGk7XG5cbmxldCByZXN1bHQ6IHQgPSAoSWQuaW52YWxpZCwgMCk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBsaXN0KChIb2xlSW5zdGFuY2UudCwgVmFyLnQpKTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTFxuICB8IFI7XG5cbmxldCB0b19zdHJpbmcgPVxuICBmdW5cbiAgfCBMID0+IFwiTFwiXG4gIHwgUiA9PiBcIlJcIjtcblxubGV0IHBpY2sgPSAoc2lkZSwgbCwgcikgPT5cbiAgc3dpdGNoIChzaWRlKSB7XG4gIHwgTCA9PiBsXG4gIHwgUiA9PiByXG4gIH07XG4iLCJ0eXBlIHQgPSBJZC5NYXAudChsaXN0KGludCkpO1xuXG5sZXQgdCA9IHJlZihJZC5NYXAuZW1wdHkpO1xuXG5sZXQgY29udGFpbnMgPSAoaWQsIGkpOiBib29sID0+XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCB0XikpIHtcbiAgfCBOb25lID0+IGZhbHNlXG4gIHwgU29tZShpcykgPT4gTGlzdC5tZW0oaSwgaXMpXG4gIH07XG5cbmxldCBjbGVhciA9ICgpID0+IHtcbiAgdCA6PSBJZC5NYXAuZW1wdHk7XG59O1xuXG4vLyBhc3N1bWVzIHNlZyBpcyBmdWxseSBhc3NlbWJsZWRcbmxldCBzZXQgPSAoc2VnOiBCYXNlLnNlZ21lbnQpOiB1bml0ID0+XG4gIHQgOj1cbiAgICBzZWdcbiAgICB8PiBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgUGllY2UuVGlsZSh0KSA9PiB7XG4gICAgICAgICAgICAgbGV0IChsX3NoYXJkLCByX3NoYXJkKSA9IFRpbGUuKGxfc2hhcmQodCksIHJfc2hhcmQodCkpO1xuICAgICAgICAgICAgIGxldCBsID0gbF9zaGFyZCA9PSAwID8gW10gOiBbbF9zaGFyZCAtIDFdO1xuICAgICAgICAgICAgIGxldCByID0gcl9zaGFyZCA9PSBMaXN0Lmxlbmd0aCh0LmxhYmVsKSAtIDEgPyBbXSA6IFtyX3NoYXJkXTtcbiAgICAgICAgICAgICBsZXQgbHIgPSBsIEAgcjtcbiAgICAgICAgICAgICBsciA9PSBbXSA/IE5vbmUgOiBTb21lKCh0LmlkLCBsIEAgcikpO1xuICAgICAgICAgICB9XG4gICAgICAgICB8IEdyb3V0KF8pXG4gICAgICAgICB8IFNlY29uZGFyeShfKSA9PiBOb25lLFxuICAgICAgIClcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IElkLk1hcC5vZl9zZXE7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRfID0gKFZhci50LCBIb2xlSW5zdGFuY2UudClcbmFuZCB0ID0gbGlzdCh0Xyk7XG5cbmxldCB0b19saXN0ID0gKGhjcDogdCk6IGxpc3QodF8pID0+IGhjcDtcbmxldCBzaW5nbGV0b24gPSAocGFyZW50OiB0XykgPT4gW3BhcmVudF07XG5cbmxldCBhZGRfcGFyZW50ID0gKGhjcDogdCwgbmV3X3BhcmVudDogdF8pID0+IFtcbiAgbmV3X3BhcmVudCxcbiAgLi4uTGlzdC5maWx0ZXIocCA9PiBwICE9IG5ld19wYXJlbnQsIGhjcCksXG5dO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gTWV0YVZhck1hcC50KGxpc3QoKENsb3N1cmVFbnZpcm9ubWVudC50LCBIb2xlSW5zdGFuY2VQYXJlbnRzLnQpKSk7XG5cbmxldCBlbXB0eTogdCA9IE1ldGFWYXJNYXAuZW1wdHk7XG5cbmxldCBudW1faW5zdGFuY2VzID0gKGhpaTogdCwgdTogTWV0YVZhci50KTogaW50ID0+XG4gIGhpaVxuICB8PiBNZXRhVmFyTWFwLmZpbmRfb3B0KHUpXG4gIHw+IE9wdGlvbi5tYXAoaGlzID0+IExpc3QubGVuZ3RoKGhpcykpXG4gIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD0wKTtcblxubGV0IGZpbmRfaW5zdGFuY2UgPVxuICAgIChoaWk6IHQsIHU6IE1ldGFWYXIudCwgaTogSG9sZUluc3RhbmNlSWQudClcbiAgICA6IG9wdGlvbigoQ2xvc3VyZUVudmlyb25tZW50LnQsIEhvbGVJbnN0YW5jZVBhcmVudHMudCkpID0+IHtcbiAgc3dpdGNoIChoaWkgfD4gTWV0YVZhck1hcC5maW5kX29wdCh1KSkge1xuICB8IFNvbWUoaGlzKSA9PiBMaXN0Lm50aF9vcHQoaGlzLCBpKVxuICB8IE5vbmUgPT4gTm9uZVxuICB9O1xufTtcblxubGV0IGFkZF9wYXJlbnQgPVxuICAgICgodSwgaSk6IEhvbGVJbnN0YW5jZS50LCBwYXJlbnQ6IEhvbGVJbnN0YW5jZVBhcmVudHMudF8sIGhpaTogdCk6IHQgPT4ge1xuICBsZXQgdV9pbnN0YW5jZXMgPSBoaWkgfD4gTWV0YVZhck1hcC5maW5kKHUpO1xuICBoaWlcbiAgfD4gTWV0YVZhck1hcC5hZGQoXG4gICAgICAgdSxcbiAgICAgICB1X2luc3RhbmNlc1xuICAgICAgIHw+IExpc3QubWFwaSgoaScsIChlbnYsIHBhcmVudHMpKSA9PlxuICAgICAgICAgICAgaWYgKGknID09IGkpIHtcbiAgICAgICAgICAgICAgKGVudiwgcGFyZW50IHw+IEhvbGVJbnN0YW5jZVBhcmVudHMuYWRkX3BhcmVudChwYXJlbnRzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAoZW52LCBwYXJlbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICApO1xufTtcbiIsIi8qXG4gIFZhcmlhYmxlIG5hbWVzOlxuICAgIFtoaWldID0+IFwiaG9sZSBpbnN0YW5jZSBpbmZvXCJcbiAgICBbaGlzXSA9PiBcImhvbGUgaW5zdGFuY2VzXCJcbiAgICBbaGlwXSA9PiBcImhvbGUgaW5zdGFuY2UgcGFyZW50c1wiXG5cbiAgVE9ETzogQ2xlYXIgZXhwbGFuYXRpb24gb2YgbmFtaW5ncywgcHJvYmFibHkgaW4gb3ZlcmFsbCBkb2MuXG4gKi9cblxuLyoqXG4gIE1hcCBhc3NvY2lhdGVzIGEgaG9sZSBpZCB0byBhIGhvbGUgaW5zdGFuY2UgaWQsIGhvbGUgY2xvc3VyZSBlbnZpcm9ubWVudCwgYW5kXG4gIGhvbGUgaW5zdGFuY2UgcGFyZW50cy5cbiAqL1xuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID1cbiAgTWV0YVZhck1hcC50KFxuICAgIEVudmlyb25tZW50SWRNYXAudChcbiAgICAgIChIb2xlSW5zdGFuY2VJZC50LCBDbG9zdXJlRW52aXJvbm1lbnQudCwgSG9sZUluc3RhbmNlUGFyZW50cy50KSxcbiAgICApLFxuICApO1xuXG5sZXQgZW1wdHk6IHQgPSBNZXRhVmFyTWFwLmVtcHR5O1xuXG5sZXQgYWRkX2luc3RhbmNlID1cbiAgICAoaGlpOiB0LCB1OiBNZXRhVmFyLnQsIGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQpOiAodCwgSG9sZUluc3RhbmNlSWQudCkgPT4ge1xuICBsZXQgZWkgPSBlbnYgfD4gQ2xvc3VyZUVudmlyb25tZW50LmlkX29mO1xuICBzd2l0Y2ggKGhpaSB8PiBNZXRhVmFyTWFwLmZpbmRfb3B0KHUpKSB7XG4gIC8qIEhvbGUgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG1hcC4gKi9cbiAgfCBTb21lKGhpcykgPT5cbiAgICBzd2l0Y2ggKGhpcyB8PiBFbnZpcm9ubWVudElkTWFwLmZpbmRfb3B0KGVpKSkge1xuICAgIC8qIEhvbGUgaW5zdGFuY2UgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG1hcCwgc2ltcGx5IHJldHVybiB0aGUgaG9sZSBpbnN0YW5jZVxuICAgICAqIGlkLiAqL1xuICAgIHwgU29tZSgoaSwgXywgXykpID0+IChoaWksIGkpXG4gICAgLyogSG9sZSBleGlzdHMgaW4gdGhlIGluZm8gbWFwLCBidXQgaW5zdGFuY2UgZG9lc24ndDsgY3JlYXRlIGEgbmV3IGhvbGVcbiAgICAgKiBpbnN0YW5jZSB3aXRoIG5leHQgdW5pcXVlIGluc3RhbmNlIGlkLiAqL1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IGkgPSBoaXMgfD4gRW52aXJvbm1lbnRJZE1hcC5jYXJkaW5hbDtcbiAgICAgIGxldCBoaXMgPSBoaXMgfD4gRW52aXJvbm1lbnRJZE1hcC5hZGQoZWksIChpLCBlbnYsIFtdKSk7XG4gICAgICBsZXQgaGlpID0gaGlpIHw+IE1ldGFWYXJNYXAuYWRkKHUsIGhpcyk7XG4gICAgICAoaGlpLCBpKTtcbiAgICB9XG4gIC8qIEhvbGUgZG9lc24ndCBleGlzdCBpbiB0aGUgbWFwLiAqL1xuICB8IE5vbmUgPT5cbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGhpcyA9IEVudmlyb25tZW50SWRNYXAuc2luZ2xldG9uKGVpLCAoMCwgZW52LCBbXSkpO1xuICAgIGxldCBoaWkgPSBoaWkgfD4gTWV0YVZhck1hcC5hZGQodSwgaGlzKTtcbiAgICAoaGlpLCBpKTtcbiAgfTtcbn07XG5cbmxldCB0b19ob2xlX2luc3RhbmNlX2luZm8gPSAoaGlpOiB0KTogSG9sZUluc3RhbmNlSW5mby50ID0+XG4gIC8qIEZvciBlYWNoIGhvbGUsIGFycmFuZ2UgaW5zdGFuY2VzIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgaG9sZSBpbnN0YW5jZSBpZC4gKi9cbiAgaGlpXG4gIHw+IE1ldGFWYXJNYXAubWFwKGhpcyA9PlxuICAgICAgIGhpc1xuICAgICAgIHw+IEVudmlyb25tZW50SWRNYXAuYmluZGluZ3NcbiAgICAgICB8PiBMaXN0LnNvcnQoKChfLCAoaTEsIF8sIF8pKSwgKF8sIChpMiwgXywgXykpKSA9PlxuICAgICAgICAgICAgY29tcGFyZShpMSwgaTIpXG4gICAgICAgICAgKVxuICAgICAgIHw+IExpc3QubWFwKCgoXywgKF8sIGVudiwgaGlwKSkpID0+IChlbnYsIGhpcCkpXG4gICAgICk7XG4iLCJtb2R1bGUgUHBNb25hZCA9IHtcbiAgaW5jbHVkZSBVdGlsLlN0YXRlTW9uYWQuTWFrZSh7XG4gICAgW0BkZXJpdmluZyBzZXhwXVxuICAgIHR5cGUgdCA9IChFbnZpcm9ubWVudElkTWFwLnQoQ2xvc3VyZUVudmlyb25tZW50LnQpLCBIb2xlSW5zdGFuY2VJbmZvXy50KTtcbiAgfSk7XG5cbiAgb3BlbiBTeW50YXg7XG5cbiAgbGV0IGdldF9wZSA9IGdldCA+PnwgKCgocGUsIF8pKSA9PiBwZSk7XG4gIGxldCBwZV9hZGQgPSAoZWksIGVudikgPT5cbiAgICBtb2RpZnkoKChwZSwgaGlpKSkgPT4gKHBlIHw+IEVudmlyb25tZW50SWRNYXAuYWRkKGVpLCBlbnYpLCBoaWkpKTtcblxuICBsZXQgaGlpX2FkZF9pbnN0YW5jZSA9ICh1LCBlbnYpID0+XG4gICAgbW9kaWZ5JygoKHBlLCBoaWkpKSA9PiB7XG4gICAgICBsZXQgKGhpaSwgaSkgPSBIb2xlSW5zdGFuY2VJbmZvXy5hZGRfaW5zdGFuY2UoaGlpLCB1LCBlbnYpO1xuICAgICAgKGksIChwZSwgaGlpKSk7XG4gICAgfSk7XG59O1xuXG5vcGVuIFBwTW9uYWQ7XG5vcGVuIFBwTW9uYWQuU3ludGF4O1xub3BlbiBESEV4cDtcblxudHlwZSBtKCdhKSA9IFBwTW9uYWQudCgnYSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3IgPVxuICB8IENsb3N1cmVJbnNpZGVDbG9zdXJlXG4gIHwgRml4Rk91dHNpZGVDbG9zdXJlRW52XG4gIHwgVW5ldmFsT3V0c2lkZUNsb3N1cmVcbiAgfCBJbnZhbGlkQ2xvc3VyZUJvZHlcbiAgfCBQb3N0cHJvY2Vzc2VkTm9uSG9sZUluQ2xvc3VyZVxuICB8IFBvc3Rwcm9jZXNzZWRIb2xlT3V0c2lkZUNsb3N1cmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbmV4Y2VwdGlvbiBFeGNlcHRpb24oZXJyb3IpO1xuXG4vKipcbiAgUG9zdHByb2Nlc3MgaW5zaWRlIGV2YWx1YXRpb24gYm91bmRhcnkuXG4gKi9cbmxldCByZWMgcHBfZXZhbCA9IChkOiBESEV4cC50KTogbShESEV4cC50KSA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgLyogTm9uLWhvbGUgZXhwcmVzc2lvbnM6IHJlY3Vyc2UgdGhyb3VnaCBzdWJleHByZXNzaW9ucyAqL1xuICB8IFRlc3QoXylcbiAgfCBCb29sTGl0KF8pXG4gIHwgSW50TGl0KF8pXG4gIHwgRmxvYXRMaXQoXylcbiAgfCBTdHJpbmdMaXQoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBkIHw+IHJldHVyblxuXG4gIHwgU2VxdWVuY2UoZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfZXZhbChkMSk7XG4gICAgbGV0KyBkMicgPSBwcF9ldmFsKGQyKTtcbiAgICBTZXF1ZW5jZShkMScsIGQyJyk7XG5cbiAgfCBGaWx0ZXIoZiwgZGJvZHkpID0+XG4gICAgbGV0KyBkYm9keScgPSBwcF9ldmFsKGRib2R5KTtcbiAgICBGaWx0ZXIoZiwgZGJvZHknKTtcblxuICB8IEFwKGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIGxldCogZDInID0gcHBfZXZhbChkMik7XG4gICAgQXAoZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IEFwQnVpbHRpbihmLCBkMSkgPT5cbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIEFwQnVpbHRpbihmLCBkMScpIHw+IHJldHVybjtcblxuICB8IEJpbkJvb2xPcChvcCwgZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfZXZhbChkMSk7XG4gICAgbGV0KiBkMicgPSBwcF9ldmFsKGQyKTtcbiAgICBCaW5Cb29sT3Aob3AsIGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBCdWlsdGluRnVuKGYpID0+IEJ1aWx0aW5GdW4oZikgfD4gcmV0dXJuXG5cbiAgfCBCaW5JbnRPcChvcCwgZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfZXZhbChkMSk7XG4gICAgbGV0KiBkMicgPSBwcF9ldmFsKGQyKTtcbiAgICBCaW5JbnRPcChvcCwgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IEJpbkZsb2F0T3Aob3AsIGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIGxldCogZDInID0gcHBfZXZhbChkMik7XG4gICAgQmluRmxvYXRPcChvcCwgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IEJpblN0cmluZ09wKG9wLCBkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF9ldmFsKGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX2V2YWwoZDIpO1xuICAgIEJpblN0cmluZ09wKG9wLCBkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgQ29ucyhkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF9ldmFsKGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX2V2YWwoZDIpO1xuICAgIENvbnMoZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfZXZhbChkMSk7XG4gICAgbGV0KiBkMicgPSBwcF9ldmFsKGQyKTtcbiAgICBMaXN0Q29uY2F0KGQxJywgZDInKSB8PiByZXR1cm47XG5cbiAgfCBMaXN0TGl0KGEsIGIsIGMsIGRzKSA9PlxuICAgIGxldCsgZHMgPVxuICAgICAgZHNcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoZHMsIGQpID0+IHtcbiAgICAgICAgICAgICBsZXQqIGRzID0gZHM7XG4gICAgICAgICAgICAgbGV0KyBkID0gcHBfZXZhbChkKTtcbiAgICAgICAgICAgICBkcyBAIFtkXTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgcmV0dXJuKFtdKSxcbiAgICAgICAgICk7XG4gICAgTGlzdExpdChhLCBiLCBjLCBkcyk7XG5cbiAgfCBUdXBsZShkcykgPT5cbiAgICBsZXQrIGRzID1cbiAgICAgIGRzXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKGRzLCBkKSA9PiB7XG4gICAgICAgICAgICAgbGV0KiBkcyA9IGRzO1xuICAgICAgICAgICAgIGxldCsgZCA9IHBwX2V2YWwoZCk7XG4gICAgICAgICAgICAgZHMgQCBbZF07XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgIHJldHVybihbXSksXG4gICAgICAgICApO1xuICAgIFR1cGxlKGRzKTtcblxuICB8IFByaihkLCBuKSA9PlxuICAgIGxldCsgZCA9IHBwX2V2YWwoZCk7XG4gICAgUHJqKGQsIG4pO1xuXG4gIHwgQ2FzdChkJywgdHkxLCB0eTIpID0+XG4gICAgbGV0KiBkJycgPSBwcF9ldmFsKGQnKTtcbiAgICBDYXN0KGQnJywgdHkxLCB0eTIpIHw+IHJldHVybjtcblxuICB8IEZhaWxlZENhc3QoZCcsIHR5MSwgdHkyKSA9PlxuICAgIGxldCogZCcnID0gcHBfZXZhbChkJyk7XG4gICAgRmFpbGVkQ2FzdChkJycsIHR5MSwgdHkyKSB8PiByZXR1cm47XG5cbiAgfCBJbnZhbGlkT3BlcmF0aW9uKGQnLCByZWFzb24pID0+XG4gICAgbGV0KiBkJycgPSBwcF9ldmFsKGQnKTtcbiAgICBJbnZhbGlkT3BlcmF0aW9uKGQnJywgcmVhc29uKSB8PiByZXR1cm47XG5cbiAgfCBJZlRoZW5FbHNlKGNvbnNpc3RlbnQsIGMsIGQxLCBkMikgPT5cbiAgICBsZXQqIGMnID0gcHBfZXZhbChjKTtcbiAgICBsZXQqIGQxJyA9IHBwX2V2YWwoZDEpO1xuICAgIGxldCogZDInID0gcHBfZXZhbChkMik7XG4gICAgSWZUaGVuRWxzZShjb25zaXN0ZW50LCBjJywgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICAvKiBUaGVzZSBleHByZXNzaW9uIGZvcm1zIHNob3VsZCBub3QgZXhpc3Qgb3V0c2lkZSBjbG9zdXJlIGluIGV2YWx1YXRlZCByZXN1bHQgKi9cbiAgfCBCb3VuZFZhcihfKVxuICB8IExldChfKVxuICB8IENvbnNpc3RlbnRDYXNlKF8pXG4gIHwgRnVuKF8pXG4gIHwgRW1wdHlIb2xlKF8pXG4gIHwgTm9uRW1wdHlIb2xlKF8pXG4gIHwgRXhwYW5kaW5nS2V5d29yZChfKVxuICB8IEZyZWVWYXIoXylcbiAgfCBJbnZhbGlkVGV4dChfKVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKF8pID0+IHJhaXNlKEV4Y2VwdGlvbihVbmV2YWxPdXRzaWRlQ2xvc3VyZSkpXG5cbiAgfCBGaXhGKF8pID0+IHJhaXNlKEV4Y2VwdGlvbihGaXhGT3V0c2lkZUNsb3N1cmVFbnYpKVxuXG4gIC8qIENsb3N1cmU6IHBvc3Rwcm9jZXNzIGVudmlyb25tZW50LCB0aGVuIHBvc3Rwcm9jZXNzIGBkJ2AuXG5cbiAgICAgU29tZSBwYXJ0cyBvZiBgZCdgIG1heSBsaWUgaW5zaWRlIGFuZCBvdXRzaWRlIHRoZSBldmFsdWF0aW9uIGJvdW5kYXJ5LFxuICAgICB1c2UgYHBwX2V2YWxgIGFuZCBgcHBfdW5ldmFsYCBhcyBuZWNlc3NhcnkuXG4gICAgICovXG4gIHwgQ2xvc3VyZShlbnYsIGQpID0+XG4gICAgbGV0KiBlbnYgPVxuICAgICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJwcF9ldmFsX2Vudi9DbG9zdXJlXCIsIHRydWUsICgpID0+XG4gICAgICAgIHBwX2V2YWxfZW52KGVudilcbiAgICAgICk7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgLyogTm9uLWhvbGUgY29uc3RydWN0cyBpbnNpZGUgY2xvc3VyZXMuICovXG4gICAgfCBGdW4oZHAsIHR5LCBkLCBzKSA9PlxuICAgICAgbGV0KiBkID0gcHBfdW5ldmFsKGVudiwgZCk7XG4gICAgICBGdW4oZHAsIHR5LCBkLCBzKSB8PiByZXR1cm47XG5cbiAgICB8IExldChkcCwgZDEsIGQyKSA9PlxuICAgICAgLyogZDEgc2hvdWxkIGFscmVhZHkgYmUgZXZhbHVhdGVkLCBkMiBpcyBub3QgKi9cbiAgICAgIGxldCogZDEgPSBwcF9ldmFsKGQxKTtcbiAgICAgIGxldCogZDIgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgICBMZXQoZHAsIGQxLCBkMikgfD4gcmV0dXJuO1xuXG4gICAgfCBDb25zaXN0ZW50Q2FzZShDYXNlKHNjcnV0LCBydWxlcywgaSkpID0+XG4gICAgICAvKiBzY3J1dCBzaG91bGQgYWxyZWFkeSBiZSBldmFsdWF0ZWQsIHJ1bGUgYm9kaWVzIGFyZSBub3QgKi9cbiAgICAgIGxldCogc2NydXQgPVxuICAgICAgICBVdGlsLlRpbWVVdGlsLm1lYXN1cmVfdGltZShcInBwX2V2YWwoc2NydXQpXCIsIHRydWUsICgpID0+XG4gICAgICAgICAgcHBfZXZhbChzY3J1dClcbiAgICAgICAgKTtcbiAgICAgIGxldCogcnVsZXMgPVxuICAgICAgICBVdGlsLlRpbWVVdGlsLm1lYXN1cmVfdGltZShcInBwX3VuZXZhbF9ydWxlc1wiLCB0cnVlLCAoKSA9PlxuICAgICAgICAgIHBwX3VuZXZhbF9ydWxlcyhlbnYsIHJ1bGVzKVxuICAgICAgICApO1xuICAgICAgQ29uc2lzdGVudENhc2UoQ2FzZShzY3J1dCwgcnVsZXMsIGkpKSB8PiByZXR1cm47XG5cbiAgICAvKiBIb2xlIGNvbnN0cnVjdHMgaW5zaWRlIGNsb3N1cmVzLlxuXG4gICAgICAgYE5vbkVtcHR5SG9sZWAgYW5kIGBJbmNvbnNpc3RlbnRCcmFuY2hlc2AgaGF2ZSBzdWJleHByZXNzaW9ucyB0aGF0XG4gICAgICAgbGllIGluc2lkZSB0aGUgZXZhbHVhdGlvbiBib3VuZGFyeSwgYW5kIG5lZWQgdG8gYmUgaGFuZGxlZCBkaWZmZXJlbnRseVxuICAgICAgIHRoYW4gaW4gYHBwX3VuZXZhbGAuIFRoZSBvdGhlciBob2xlIHR5cGVzIGRvbid0IGhhdmUgYW55IGV2YWx1YXRlZFxuICAgICAgIHN1YmV4cHJlc3Npb25zIGFuZCB3ZSBjYW4gdXNlIGBwcF91bmV2YWxgLlxuICAgICAgICovXG4gICAgfCBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBfLCBkKSA9PlxuICAgICAgbGV0KiBkID0gcHBfZXZhbChkKTtcbiAgICAgIGxldCogaSA9IGhpaV9hZGRfaW5zdGFuY2UodSwgZW52KTtcbiAgICAgIENsb3N1cmUoZW52LCBOb25FbXB0eUhvbGUocmVhc29uLCB1LCBpLCBkKSkgfD4gcmV0dXJuO1xuXG4gICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBfLCBDYXNlKHNjcnV0LCBydWxlcywgY2FzZV9pKSkgPT5cbiAgICAgIGxldCogc2NydXQgPSBwcF9ldmFsKHNjcnV0KTtcbiAgICAgIGxldCogaSA9IGhpaV9hZGRfaW5zdGFuY2UodSwgZW52KTtcbiAgICAgIENsb3N1cmUoZW52LCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKHNjcnV0LCBydWxlcywgY2FzZV9pKSkpXG4gICAgICB8PiByZXR1cm47XG5cbiAgICB8IEVtcHR5SG9sZShfKVxuICAgIHwgRXhwYW5kaW5nS2V5d29yZChfKVxuICAgIHwgRnJlZVZhcihfKVxuICAgIHwgSW52YWxpZFRleHQoXykgPT4gcHBfdW5ldmFsKGVudiwgZClcblxuICAgIC8qIE90aGVyIGV4cHJlc3Npb24gZm9ybXMgY2Fubm90IGJlIGRpcmVjdGx5IGluIGEgY2xvc3VyZS4gKi9cbiAgICB8IF8gPT4gcmFpc2UoRXhjZXB0aW9uKEludmFsaWRDbG9zdXJlQm9keSkpXG4gICAgfTtcbiAgfVxuXG4vKiBSZWN1cnNlIHRocm91Z2ggZW52aXJvbm1lbnRzLCB1c2luZyBtZW1vaXplZCByZXN1bHQgaWYgYXZhaWxhYmxlLiAqL1xuYW5kIHBwX2V2YWxfZW52ID0gKGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQpOiBtKENsb3N1cmVFbnZpcm9ubWVudC50KSA9PiB7XG4gIGxldCBlaSA9IGVudiB8PiBDbG9zdXJlRW52aXJvbm1lbnQuaWRfb2Y7XG5cbiAgbGV0KiBwZSA9IGdldF9wZTtcbiAgc3dpdGNoIChwZSB8PiBFbnZpcm9ubWVudElkTWFwLmZpbmRfb3B0KGVpKSkge1xuICB8IFNvbWUoZW52KSA9PiBlbnYgfD4gcmV0dXJuXG4gIHwgTm9uZSA9PlxuICAgIGxldCogZW52ID1cbiAgICAgIGVudlxuICAgICAgfD4gQ2xvc3VyZUVudmlyb25tZW50LmZvbGQoXG4gICAgICAgICAgICgoeCwgZCksIGVudicpID0+IHtcbiAgICAgICAgICAgICBsZXQqIGVudicgPSBlbnYnO1xuICAgICAgICAgICAgIGxldCogZCcgPVxuICAgICAgICAgICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgICAgICAgICB8IEZpeEYoZiwgdHksIGQxKSA9PlxuICAgICAgICAgICAgICAgICBsZXQrIGQxID0gcHBfdW5ldmFsKGVudicsIGQxKTtcbiAgICAgICAgICAgICAgICAgRml4RihmLCB0eSwgZDEpO1xuICAgICAgICAgICAgICAgfCBkID0+IHBwX2V2YWwoZClcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgQ2xvc3VyZUVudmlyb25tZW50LmV4dGVuZChlbnYnLCAoeCwgZCcpKSB8PiByZXR1cm47XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgIEVudmlyb25tZW50LmVtcHR5IHw+IENsb3N1cmVFbnZpcm9ubWVudC53cmFwKGVpKSB8PiByZXR1cm4sXG4gICAgICAgICApO1xuXG4gICAgbGV0KiAoKSA9IHBlX2FkZChlaSwgZW52KTtcbiAgICBlbnYgfD4gcmV0dXJuO1xuICB9O1xufVxuXG4vKipcbiAgUG9zdHByb2Nlc3MgaW5zaWRlIGV2YWx1YXRpb24gYm91bmRhcnkuIEVudmlyb25tZW50IHNob3VsZCBhbHJlYWR5IGJlXG4gIHBvc3Rwcm9jZXNzZWQuXG4gKi9cbmFuZCBwcF91bmV2YWwgPSAoZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCwgZDogREhFeHAudCk6IG0oREhFeHAudCkgPT5cbiAgc3dpdGNoIChkKSB7XG4gIC8qIEJvdW5kIHZhcmlhYmxlcyBzaG91bGQgYmUgbG9va2VkIHVwIHdpdGhpbiB0aGUgY2xvc3VyZVxuICAgICBlbnZpcm9ubWVudC4gSWYgbG9va3VwIGZhaWxzLCB0aGVuIHZhcmlhYmxlIGlzIG5vdCBib3VuZC4gKi9cbiAgfCBCb3VuZFZhcih4KSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgfCBTb21lKGQnKSA9PiBkJyB8PiByZXR1cm5cbiAgICB8IE5vbmUgPT4gZCB8PiByZXR1cm5cbiAgICB9XG5cbiAgLyogTm9uLWhvbGUgZXhwcmVzc2lvbnM6IGV4cGFuZCByZWN1cnNpdmVseSAqL1xuICB8IEJvb2xMaXQoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IFN0cmluZ0xpdChfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IGQgfD4gcmV0dXJuXG5cbiAgfCBUZXN0KGlkLCBkMSkgPT5cbiAgICBsZXQrIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBUZXN0KGlkLCBkMScpO1xuXG4gIHwgU2VxdWVuY2UoZDEsIGQyKSA9PlxuICAgIGxldCogZDEnID0gcHBfdW5ldmFsKGVudiwgZDEpO1xuICAgIGxldCsgZDInID0gcHBfdW5ldmFsKGVudiwgZDIpO1xuICAgIFNlcXVlbmNlKGQxJywgZDInKTtcblxuICB8IEZpbHRlcihmbHQsIGRib2R5KSA9PlxuICAgIGxldCsgZGJvZHknID0gcHBfdW5ldmFsKGVudiwgZGJvZHkpO1xuICAgIEZpbHRlcihmbHQsIGRib2R5Jyk7XG4gIHwgTGV0KGRwLCBkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgTGV0KGRwLCBkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgRml4RihmLCB0eSwgZDEpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgRml4RihmLCB0eSwgZDEnKSB8PiByZXR1cm47XG5cbiAgfCBGdW4oZHAsIHR5LCBkJywgcykgPT5cbiAgICBsZXQqIGQnJyA9IHBwX3VuZXZhbChlbnYsIGQnKTtcbiAgICBGdW4oZHAsIHR5LCBkJycsIHMpIHw+IHJldHVybjtcblxuICB8IEFwKGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX3VuZXZhbChlbnYsIGQyKTtcbiAgICBBcChkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgQXBCdWlsdGluKGYsIGQxKSA9PlxuICAgIGxldCogZDEnID0gcHBfdW5ldmFsKGVudiwgZDEpO1xuICAgIEFwQnVpbHRpbihmLCBkMScpIHw+IHJldHVybjtcbiAgfCBCdWlsdGluRnVuKGYpID0+IEJ1aWx0aW5GdW4oZikgfD4gcmV0dXJuXG5cbiAgfCBCaW5Cb29sT3Aob3AsIGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX3VuZXZhbChlbnYsIGQyKTtcbiAgICBCaW5Cb29sT3Aob3AsIGQxJywgZDInKSB8PiByZXR1cm47XG4gIHwgQmluSW50T3Aob3AsIGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX3VuZXZhbChlbnYsIGQyKTtcbiAgICBCaW5JbnRPcChvcCwgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IEJpbkZsb2F0T3Aob3AsIGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX3VuZXZhbChlbnYsIGQyKTtcbiAgICBCaW5GbG9hdE9wKG9wLCBkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgQmluU3RyaW5nT3Aob3AsIGQxLCBkMikgPT5cbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX3VuZXZhbChlbnYsIGQyKTtcbiAgICBCaW5TdHJpbmdPcChvcCwgZDEnLCBkMicpIHw+IHJldHVybjtcblxuICB8IElmVGhlbkVsc2UoY29uc2lzdGVudCwgYywgZDEsIGQyKSA9PlxuICAgIGxldCogYycgPSBwcF91bmV2YWwoZW52LCBjKTtcbiAgICBsZXQqIGQxJyA9IHBwX3VuZXZhbChlbnYsIGQxKTtcbiAgICBsZXQqIGQyJyA9IHBwX3VuZXZhbChlbnYsIGQyKTtcbiAgICBJZlRoZW5FbHNlKGNvbnNpc3RlbnQsIGMnLCBkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgQ29ucyhkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgQ29ucyhkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgTGlzdENvbmNhdChkMSwgZDIpID0+XG4gICAgbGV0KiBkMScgPSBwcF91bmV2YWwoZW52LCBkMSk7XG4gICAgbGV0KiBkMicgPSBwcF91bmV2YWwoZW52LCBkMik7XG4gICAgTGlzdENvbmNhdChkMScsIGQyJykgfD4gcmV0dXJuO1xuXG4gIHwgTGlzdExpdChhLCBiLCBjLCBkcykgPT5cbiAgICBsZXQrIGRzID1cbiAgICAgIGRzXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKGRzLCBkKSA9PiB7XG4gICAgICAgICAgICAgbGV0KiBkcyA9IGRzO1xuICAgICAgICAgICAgIGxldCsgZCA9IHBwX3VuZXZhbChlbnYsIGQpO1xuICAgICAgICAgICAgIGRzIEAgW2RdO1xuICAgICAgICAgICB9LFxuICAgICAgICAgICByZXR1cm4oW10pLFxuICAgICAgICAgKTtcbiAgICBMaXN0TGl0KGEsIGIsIGMsIGRzKTtcblxuICB8IFR1cGxlKGRzKSA9PlxuICAgIGxldCsgZHMgPVxuICAgICAgZHNcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoZHMsIGQpID0+IHtcbiAgICAgICAgICAgICBsZXQqIGRzID0gZHM7XG4gICAgICAgICAgICAgbGV0KyBkID0gcHBfdW5ldmFsKGVudiwgZCk7XG4gICAgICAgICAgICAgZHMgQCBbZF07XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgIHJldHVybihbXSksXG4gICAgICAgICApO1xuICAgIFR1cGxlKGRzKTtcblxuICB8IFByaihkLCBuKSA9PlxuICAgIGxldCsgZCA9IHBwX3VuZXZhbChlbnYsIGQpO1xuICAgIFByaihkLCBuKTtcblxuICB8IENhc3QoZCcsIHR5MSwgdHkyKSA9PlxuICAgIGxldCogZCcnID0gcHBfdW5ldmFsKGVudiwgZCcpO1xuICAgIENhc3QoZCcnLCB0eTEsIHR5MikgfD4gcmV0dXJuO1xuXG4gIHwgRmFpbGVkQ2FzdChkJywgdHkxLCB0eTIpID0+XG4gICAgbGV0KiBkJycgPSBwcF91bmV2YWwoZW52LCBkJyk7XG4gICAgRmFpbGVkQ2FzdChkJycsIHR5MSwgdHkyKSB8PiByZXR1cm47XG5cbiAgfCBJbnZhbGlkT3BlcmF0aW9uKGQnLCByZWFzb24pID0+XG4gICAgbGV0KiBkJycgPSBwcF91bmV2YWwoZW52LCBkJyk7XG4gICAgSW52YWxpZE9wZXJhdGlvbihkJycsIHJlYXNvbikgfD4gcmV0dXJuO1xuXG4gIHwgQ29uc2lzdGVudENhc2UoQ2FzZShzY3J1dCwgcnVsZXMsIGkpKSA9PlxuICAgIGxldCogc2NydXQnID0gcHBfdW5ldmFsKGVudiwgc2NydXQpO1xuICAgIGxldCogcnVsZXMnID0gcHBfdW5ldmFsX3J1bGVzKGVudiwgcnVsZXMpO1xuICAgIENvbnNpc3RlbnRDYXNlKENhc2Uoc2NydXQnLCBydWxlcycsIGkpKSB8PiByZXR1cm47XG5cbiAgLyogQ2xvc3VyZXMgc2hvdWxkbid0IGV4aXN0IGluc2lkZSBvdGhlciBjbG9zdXJlcyAqL1xuICB8IENsb3N1cmUoXykgPT4gcmFpc2UoRXhjZXB0aW9uKENsb3N1cmVJbnNpZGVDbG9zdXJlKSlcblxuICAvKiBIb2xlIGV4cHJlc3Npb25zOlxuICAgICAtIFVzZSB0aGUgY2xvc3VyZSBlbnZpcm9ubWVudCBhcyB0aGUgaG9sZSBlbnZpcm9ubWVudC5cbiAgICAgLSBOdW1iZXIgdGhlIGhvbGUgaW5zdGFuY2UgYXBwcm9wcmlhdGVseS5cbiAgICAgLSBSZWN1cnNlIHRocm91Z2ggaW5uZXIgZXhwcmVzc2lvbiAoaWYgYW55KS5cbiAgICAgKi9cbiAgfCBFbXB0eUhvbGUodSwgXykgPT5cbiAgICBsZXQqIGkgPSBoaWlfYWRkX2luc3RhbmNlKHUsIGVudik7XG4gICAgQ2xvc3VyZShlbnYsIEVtcHR5SG9sZSh1LCBpKSkgfD4gcmV0dXJuO1xuXG4gIHwgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgXywgZCcpID0+XG4gICAgbGV0KiBkJyA9IHBwX3VuZXZhbChlbnYsIGQnKTtcbiAgICBsZXQqIGkgPSBoaWlfYWRkX2luc3RhbmNlKHUsIGVudik7XG4gICAgQ2xvc3VyZShlbnYsIE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIGksIGQnKSkgfD4gcmV0dXJuO1xuXG4gIHwgRXhwYW5kaW5nS2V5d29yZCh1LCBfLCBrdykgPT5cbiAgICBsZXQqIGkgPSBoaWlfYWRkX2luc3RhbmNlKHUsIGVudik7XG4gICAgQ2xvc3VyZShlbnYsIEV4cGFuZGluZ0tleXdvcmQodSwgaSwga3cpKSB8PiByZXR1cm47XG5cbiAgfCBGcmVlVmFyKHUsIF8sIHgpID0+XG4gICAgbGV0KiBpID0gaGlpX2FkZF9pbnN0YW5jZSh1LCBlbnYpO1xuICAgIENsb3N1cmUoZW52LCBGcmVlVmFyKHUsIGksIHgpKSB8PiByZXR1cm47XG5cbiAgfCBJbnZhbGlkVGV4dCh1LCBfLCB0ZXh0KSA9PlxuICAgIGxldCogaSA9IGhpaV9hZGRfaW5zdGFuY2UodSwgZW52KTtcbiAgICBDbG9zdXJlKGVudiwgSW52YWxpZFRleHQodSwgaSwgdGV4dCkpIHw+IHJldHVybjtcblxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKHUsIF8sIENhc2Uoc2NydXQsIHJ1bGVzLCBjYXNlX2kpKSA9PlxuICAgIGxldCogc2NydXQgPSBwcF91bmV2YWwoZW52LCBzY3J1dCk7XG4gICAgbGV0KiBydWxlcyA9IHBwX3VuZXZhbF9ydWxlcyhlbnYsIHJ1bGVzKTtcbiAgICBsZXQqIGkgPSBoaWlfYWRkX2luc3RhbmNlKHUsIGVudik7XG4gICAgQ2xvc3VyZShlbnYsIEluY29uc2lzdGVudEJyYW5jaGVzKHUsIGksIENhc2Uoc2NydXQsIHJ1bGVzLCBjYXNlX2kpKSlcbiAgICB8PiByZXR1cm47XG4gIH1cblxuYW5kIHBwX3VuZXZhbF9ydWxlcyA9XG4gICAgKGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIHJ1bGVzOiBsaXN0KERIRXhwLnJ1bGUpKVxuICAgIDogbShsaXN0KERIRXhwLnJ1bGUpKSA9PiB7XG4gIHJ1bGVzXG4gIHw+IExpc3QubWFwKChSdWxlKGRwLCBkKSkgPT4ge1xuICAgICAgIGxldCogZCcgPSBwcF91bmV2YWwoZW52LCBkKTtcbiAgICAgICBSdWxlKGRwLCBkJykgfD4gcmV0dXJuO1xuICAgICB9KVxuICB8PiBzZXF1ZW5jZTtcbn07XG5cbi8qKlxuICBUcmFja2luZyBjaGlsZHJlbiBvZiBob2xlIGluc3RhbmNlcy4gQSBob2xlIGluc3RhbmNlIGlzIGEgY2hpbGQgb2YgYW5vdGhlciBob2xlXG4gIGluc3RhbmNlIGlmIGl0IGV4aXN0cyBpbiB0aGUgaG9sZSBlbnZpcm9ubWVudCBvZiB0aGUgcGFyZW50LlxuXG4gIFRoaXMgaXMgdGhlIHNlY29uZCBzdGFnZSBvZiBwb3N0cHJvY2Vzc2luZywgc2VwYXJhdGUgZnJvbSBob2xlIG51bWJlcmluZyBhbmRcbiAgc3Vic3RpdHV0aW9uLCBzaW5jZSBtZW1vaXphdGlvbiBiZWNvbWVzIG11Y2ggbW9yZSBjb252b2x1dGVkIGlmIHRoZXNlIHR3b1xuICBzdGFnZXMgYXJlIGNvbWJpbmVkLlxuXG4gIFRoaXMgd29ya3MgYnkgc2ltcGx5IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgKHBvc3Rwcm9jZXNzZWQpIGhvbGUgaW5zdGFuY2VcbiAgZW52aXJvbm1lbnRzIGluIHRoZSBIb2xlSW5zdGFuY2VJbmZvXy50IGFuZCBsb29raW5nIGZvciBcImNoaWxkXCIgaG9sZXMuXG4gKi9cbmxldCByZWMgdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZSA9XG4gICAgICAgIChoaWk6IEhvbGVJbnN0YW5jZUluZm8udCwgcGFyZW50OiBIb2xlSW5zdGFuY2VQYXJlbnRzLnRfLCBkOiBESEV4cC50KVxuICAgICAgICA6IEhvbGVJbnN0YW5jZUluZm8udCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IEJvb2xMaXQoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IFN0cmluZ0xpdChfKVxuICB8IEJ1aWx0aW5GdW4oXylcbiAgfCBCb3VuZFZhcihfKSA9PiBoaWlcbiAgfCBUZXN0KF8sIGQpXG4gIHwgRml4RihfLCBfLCBkKVxuICB8IEZ1bihfLCBfLCBkLCBfKVxuICB8IFByaihkLCBfKVxuICB8IENhc3QoZCwgXywgXylcbiAgfCBGYWlsZWRDYXN0KGQsIF8sIF8pXG4gIHwgSW52YWxpZE9wZXJhdGlvbihkLCBfKSA9PiB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkKVxuICB8IFNlcXVlbmNlKGQxLCBkMilcbiAgfCBMZXQoXywgZDEsIGQyKVxuICB8IEFwKGQxLCBkMilcbiAgfCBCaW5Cb29sT3AoXywgZDEsIGQyKVxuICB8IEJpbkludE9wKF8sIGQxLCBkMilcbiAgfCBCaW5GbG9hdE9wKF8sIGQxLCBkMilcbiAgfCBCaW5TdHJpbmdPcChfLCBkMSwgZDIpXG4gIHwgQ29ucyhkMSwgZDIpID0+XG4gICAgbGV0IGhpaSA9IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGQxKTtcbiAgICB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkMik7XG4gIHwgTGlzdENvbmNhdChkMSwgZDIpID0+XG4gICAgbGV0IGhpaSA9IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGQxKTtcbiAgICB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkMik7XG5cbiAgfCBMaXN0TGl0KF8sIF8sIF8sIGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgIChkLCBoaWkpID0+IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGQpLFxuICAgICAgZHMsXG4gICAgICBoaWksXG4gICAgKVxuXG4gIHwgVHVwbGUoZHMpID0+XG4gICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgKGQsIGhpaSkgPT4gdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZCksXG4gICAgICBkcyxcbiAgICAgIGhpaSxcbiAgICApXG4gIHwgSWZUaGVuRWxzZShfLCBjLCBkMSwgZDIpID0+XG4gICAgbGV0IGhpaSA9IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGMpO1xuICAgIGxldCBoaWkgPSB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkMSk7XG4gICAgdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZShoaWksIHBhcmVudCwgZDIpO1xuXG4gIHwgQ29uc2lzdGVudENhc2UoQ2FzZShzY3J1dCwgcnVsZXMsIF8pKSA9PlxuICAgIGxldCBoaWkgPVxuICAgICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJ0cmFja19jaGlsZHJlbl9vZl9ob2xlKHNjcnV0KVwiLCB0cnVlLCAoKSA9PlxuICAgICAgICB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBzY3J1dClcbiAgICAgICk7XG4gICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJ0cmFja19jaGlsZHJlbl9vZl9ob2xlX3J1bGVzXCIsIHRydWUsICgpID0+XG4gICAgICB0cmFja19jaGlsZHJlbl9vZl9ob2xlX3J1bGVzKGhpaSwgcGFyZW50LCBydWxlcylcbiAgICApO1xuXG4gIHwgQXBCdWlsdGluKF8sIGQpID0+IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGQpXG5cbiAgLyogSG9sZSB0eXBlcyAqL1xuICB8IE5vbkVtcHR5SG9sZShfLCB1LCBpLCBkKSA9PlxuICAgIGxldCBoaWkgPSB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkKTtcbiAgICBoaWkgfD4gSG9sZUluc3RhbmNlSW5mby5hZGRfcGFyZW50KCh1LCBpKSwgcGFyZW50KTtcbiAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKHNjcnV0LCBydWxlcywgXykpID0+XG4gICAgbGV0IGhpaSA9IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIHNjcnV0KTtcbiAgICBsZXQgaGlpID0gdHJhY2tfY2hpbGRyZW5fb2ZfaG9sZV9ydWxlcyhoaWksIHBhcmVudCwgcnVsZXMpO1xuICAgIGhpaSB8PiBIb2xlSW5zdGFuY2VJbmZvLmFkZF9wYXJlbnQoKHUsIGkpLCBwYXJlbnQpO1xuICB8IEVtcHR5SG9sZSh1LCBpKVxuICB8IEV4cGFuZGluZ0tleXdvcmQodSwgaSwgXylcbiAgfCBGcmVlVmFyKHUsIGksIF8pXG4gIHwgSW52YWxpZFRleHQodSwgaSwgXykgPT5cbiAgICBoaWkgfD4gSG9sZUluc3RhbmNlSW5mby5hZGRfcGFyZW50KCh1LCBpKSwgcGFyZW50KVxuXG4gIC8qIFRoZSBvbmx5IHRoaW5nIHRoYXQgc2hvdWxkIGV4aXN0IGluIGNsb3N1cmVzIGF0IHRoaXMgcG9pbnRcbiAgICAgYXJlIGhvbGVzLiBJZ25vcmUgdGhlIGhvbGUgZW52aXJvbm1lbnQsIG5vdCBuZWNlc3NhcnkgZm9yXG4gICAgIHBhcmVudCB0cmFja2luZy4gKi9cbiAgfCBGaWx0ZXIoXywgZClcbiAgfCBDbG9zdXJlKF8sIGQpID0+IHRyYWNrX2NoaWxkcmVuX29mX2hvbGUoaGlpLCBwYXJlbnQsIGQpXG4gIH1cblxuYW5kIHRyYWNrX2NoaWxkcmVuX29mX2hvbGVfcnVsZXMgPVxuICAgIChcbiAgICAgIGhpaTogSG9sZUluc3RhbmNlSW5mby50LFxuICAgICAgcGFyZW50OiBIb2xlSW5zdGFuY2VQYXJlbnRzLnRfLFxuICAgICAgcnVsZXM6IGxpc3QoREhFeHAucnVsZSksXG4gICAgKVxuICAgIDogSG9sZUluc3RhbmNlSW5mby50ID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAoREhFeHAuUnVsZShfLCBkKSwgaGlpKSA9PiB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgcGFyZW50LCBkKSxcbiAgICBydWxlcyxcbiAgICBoaWksXG4gICk7XG5cbi8qKlxuICBEcml2ZXIgZm9yIGhvbGUgcGFyZW50IHRyYWNraW5nOyBpdGVyYXRlIHRocm91Z2ggYWxsIGhvbGUgaW5zdGFuY2VzIGluIHRoZVxuICBbSG9sZUluc3RhbmNlSW5mby50XSwgYW5kIGNhbGwgW3RyYWNrX2NoaWxkcmVuX29mX2hvbGVdIG9uIHRoZW0uXG4gKi9cbmxldCB0cmFja19jaGlsZHJlbiA9IChoaWk6IEhvbGVJbnN0YW5jZUluZm8udCk6IEhvbGVJbnN0YW5jZUluZm8udCA9PlxuICBNZXRhVmFyTWFwLmZvbGQoXG4gICAgKHUsIGhpcywgaGlpKSA9PlxuICAgICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgICAoKGksIChlbnYsIF8pKSwgaGlpKSA9PlxuICAgICAgICAgIEVudmlyb25tZW50LmZvbGRvKFxuICAgICAgICAgICAgKCh4LCBkKSwgaGlpKSA9PiB0cmFja19jaGlsZHJlbl9vZl9ob2xlKGhpaSwgKHgsICh1LCBpKSksIGQpLFxuICAgICAgICAgICAgaGlpLFxuICAgICAgICAgICAgZW52IHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2YsXG4gICAgICAgICAgKSxcbiAgICAgICAgaGlzIHw+IExpc3QubWFwaSgoaSwgaGMpID0+IChpLCBoYykpLFxuICAgICAgICBoaWksXG4gICAgICApLFxuICAgIGhpaSxcbiAgICBoaWksXG4gICk7XG5cbmxldCBwb3N0cHJvY2VzcyA9IChkOiBESEV4cC50KTogKEhvbGVJbnN0YW5jZUluZm8udCwgREhFeHAudCkgPT4ge1xuICAvKiBTdWJzdGl0dXRpb24gYW5kIGhvbGUgbnVtYmVyaW5nIHBvc3Rwcm9jZXNzaW5nICovXG4gIGxldCAoKF8sIGhpaSksIGQpID1cbiAgICBVdGlsLlRpbWVVdGlsLm1lYXN1cmVfdGltZShcInBwX2V2YWxcIiwgdHJ1ZSwgKCkgPT5cbiAgICAgIHBwX2V2YWwoZCwgKEVudmlyb25tZW50SWRNYXAuZW1wdHksIEhvbGVJbnN0YW5jZUluZm9fLmVtcHR5KSlcbiAgICApO1xuXG4gIC8qIEJ1aWxkIGhvbGUgaW5zdGFuY2UgaW5mby4gKi9cbiAgbGV0IGhpaSA9XG4gICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJ0b19oaWlcIiwgdHJ1ZSwgKCkgPT5cbiAgICAgIGhpaSB8PiBIb2xlSW5zdGFuY2VJbmZvXy50b19ob2xlX2luc3RhbmNlX2luZm9cbiAgICApO1xuXG4gIC8qIEFkZCBzcGVjaWFsIGhvbGUgYWN0aW5nIGFzIHRvcC1sZXZlbCBleHByZXNzaW9uICh0byBhY3QgYXMgcGFyZW50XG4gICAgIGZvciBob2xlcyBkaXJlY3RseSBpbiB0aGUgcmVzdWx0KSAqL1xuICAvKiBGSVhNRTogQmV0dGVyIHdheSB0byBkbyB0aGlzPyAqL1xuICBsZXQgKHVfcmVzdWx0LCBfKSA9IEhvbGVJbnN0YW5jZS5yZXN1bHQ7XG4gIGxldCBoaWkgPVxuICAgIE1ldGFWYXJNYXAuYWRkKFxuICAgICAgdV9yZXN1bHQsXG4gICAgICBbXG4gICAgICAgIChcbiAgICAgICAgICBDbG9zdXJlRW52aXJvbm1lbnQud3JhcChcbiAgICAgICAgICAgIEVudmlyb25tZW50SWQuaW52YWxpZCxcbiAgICAgICAgICAgIEVudmlyb25tZW50LnNpbmdsZXRvbigoXCJcIiwgZCkpLFxuICAgICAgICAgICksXG4gICAgICAgICAgW10sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICAgaGlpLFxuICAgICk7XG5cbiAgbGV0IGhpaSA9XG4gICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJ0cmFja19jaGlsZHJlblwiLCB0cnVlLCAoKSA9PlxuICAgICAgaGlpIHw+IHRyYWNrX2NoaWxkcmVuXG4gICAgKTtcblxuICAvKiBQZXJmb3JtIGhvbGUgcGFyZW50IHRyYWNraW5nLiAqL1xuICAoaGlpLCBkKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG4iLCJsZXQgZWRpdG9yX29mX2NvZGUgPSAofnJlYWRfb25seT1mYWxzZSwgY29kZTogQ29kZVN0cmluZy50KSA9PiB7XG4gIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKGNvZGUpKSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZSh6KSA9PiBTb21lKEVkaXRvci5pbml0KH5yZWFkX29ubHksIHopKVxuICB9O1xufTtcblxubGV0IGVkaXRvcnNfZm9yID1cbiAgICAofnJlYWRfb25seT1mYWxzZSwgeHM6IGxpc3QoJ2EpLCBmOiAnYSA9PiBvcHRpb24oc3RyaW5nKSlcbiAgICA6IChpbnQsIGxpc3QoKCdhLCBvcHRpb24oRWRpdG9yLnQpKSkpID0+IHtcbiAgbGV0IHpzID1cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2NfenMsIGEpID0+IHtcbiAgICAgICAgc3dpdGNoIChmKGEpKSB7XG4gICAgICAgIHwgU29tZShzdHIpID0+XG4gICAgICAgICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoc3RyKSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBhY2NfenMgQCBbKGEsIFNvbWUoWmlwcGVyLmluaXQoKSkpXVxuICAgICAgICAgIHwgU29tZSh6KSA9PiBhY2NfenMgQCBbKGEsIFNvbWUoeikpXVxuICAgICAgICAgIH1cbiAgICAgICAgfCBOb25lID0+IGFjY196cyBAIFsoYSwgTm9uZSldXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbXSxcbiAgICAgIHhzLFxuICAgICk7XG4gIChcbiAgICAwLFxuICAgIExpc3QubWFwKFxuICAgICAgKChhLCBzeikpID0+XG4gICAgICAgIHN3aXRjaCAoc3opIHtcbiAgICAgICAgfCBTb21lKHopID0+IChhLCBTb21lKEVkaXRvci5pbml0KHosIH5yZWFkX29ubHkpKSlcbiAgICAgICAgfCBOb25lID0+IChhLCBOb25lKVxuICAgICAgICB9LFxuICAgICAgenMsXG4gICAgKSxcbiAgKTtcbn07XG5cbmxldCBlZGl0b3JzX29mX3N0cmluZ3MgPSAofnJlYWRfb25seT1mYWxzZSwgeHM6IGxpc3Qoc3RyaW5nKSkgPT4ge1xuICBsZXQgKGksIGFlcykgPSBlZGl0b3JzX2Zvcih4cywgeCA9PiBTb21lKHgpLCB+cmVhZF9vbmx5KTtcbiAgKGksIExpc3QubWFwKCgoXywgb2UpKSA9PiBPcHRpb24uZ2V0KG9lKSwgYWVzKSk7XG59O1xuXG5sZXQgcmVjIGFwcGVuZF9leHAgPSAoZTE6IFRlcm1CYXNlLlVFeHAudCwgZTI6IFRlcm1CYXNlLlVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKGUxLnRlcm0pIHtcbiAgfCBFbXB0eUhvbGVcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgVHJpdlxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IExpc3RMaXQoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IEZ1bihfKVxuICB8IFR1cGxlKF8pXG4gIHwgVmFyKF8pXG4gIHwgQXAoXylcbiAgfCBQaXBlbGluZShfKVxuICB8IElmKF8pXG4gIHwgVGVzdChfKVxuICB8IFBhcmVucyhfKVxuICB8IENvbnMoXylcbiAgfCBMaXN0Q29uY2F0KF8pXG4gIHwgVW5PcChfKVxuICB8IEJpbk9wKF8pXG4gIHwgTWF0Y2goXykgPT4gVGVybUJhc2UuVUV4cC57aWRzOiBbSWQubWsoKV0sIHRlcm06IFNlcShlMSwgZTIpfVxuICB8IFNlcShlMTEsIGUxMikgPT5cbiAgICBsZXQgZTEyJyA9IGFwcGVuZF9leHAoZTEyLCBlMik7XG4gICAgVGVybUJhc2UuVUV4cC57aWRzOiBlMS5pZHMsIHRlcm06IFNlcShlMTEsIGUxMicpfTtcbiAgfCBGaWx0ZXIoYWN0LCBlY29uZCwgZWJvZHkpID0+XG4gICAgbGV0IGVib2R5JyA9IGFwcGVuZF9leHAoZWJvZHksIGUyKTtcbiAgICBUZXJtQmFzZS5VRXhwLntpZHM6IGUxLmlkcywgdGVybTogRmlsdGVyKGFjdCwgZWNvbmQsIGVib2R5Jyl9O1xuICB8IExldChwLCBlZGVmLCBlYm9keSkgPT5cbiAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgIFRlcm1CYXNlLlVFeHAue2lkczogZTEuaWRzLCB0ZXJtOiBMZXQocCwgZWRlZiwgZWJvZHknKX07XG4gIHwgVHlBbGlhcyh0cCwgdGRlZiwgZWJvZHkpID0+XG4gICAgbGV0IGVib2R5JyA9IGFwcGVuZF9leHAoZWJvZHksIGUyKTtcbiAgICBUZXJtQmFzZS5VRXhwLntpZHM6IGUxLmlkcywgdGVybTogVHlBbGlhcyh0cCwgdGRlZiwgZWJvZHknKX07XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0aWNzID0ge1xuICB0ZXJtOiBUZXJtLlVFeHAudCxcbiAgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQsXG4gIGVycm9yX2lkczogbGlzdChJZC50KSxcbn07XG5cbmxldCBlbXB0eV9zdGF0aWNzOiBzdGF0aWNzID0ge1xuICB0ZXJtOiBUZXJtLlVFeHAue2lkczogW0lkLmludmFsaWRdLCB0ZXJtOiBUcml2fSxcbiAgaW5mb19tYXA6IElkLk1hcC5lbXB0eSxcbiAgZXJyb3JfaWRzOiBbXSxcbn07XG5cbm1vZHVsZSBLZXkgPSB7XG4gIGluY2x1ZGUgU3RyaW5nO1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHN0cmluZztcbn07XG5cbm1vZHVsZSBNID0gVXRpbC5NYXBVdGlsLk1ha2UoS2V5KTtcbmluY2x1ZGUgTTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gTS50KHN0YXRpY3MpO1xuXG5sZXQgbWsgPSAoZHM6IGxpc3QoKEtleS50LCBzdGF0aWNzKSkpOiB0ID0+XG4gIGRzIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcSB8PiBtYXAoRnVuLmlkKTtcblxubGV0IGxvb2t1cCA9IChyZXN1bHRzOiB0LCBrZXk6IEtleS50KSA9PlxuICBzd2l0Y2ggKGZpbmRfb3B0KGtleSwgcmVzdWx0cykpIHtcbiAgfCBOb25lID0+IGVtcHR5X3N0YXRpY3NcbiAgfCBTb21lKHN0YXRpY3MpID0+IHN0YXRpY3NcbiAgfTtcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0ge1xuICByb3c6IGludCxcbiAgY29sOiBpbnQsXG59O1xuXG5sZXQgY29tcGFyZSA9IChwb3MxLCBwb3MyKSA9PlxuICBpZiAocG9zMS5yb3cgPCBwb3MyLnJvdykge1xuICAgICgtMSk7XG4gIH0gZWxzZSBpZiAocG9zMS5yb3cgPiBwb3MyLnJvdykge1xuICAgIDE7XG4gIH0gZWxzZSB7XG4gICAgSW50LmNvbXBhcmUocG9zMS5jb2wsIHBvczIuY29sKTtcbiAgfTtcblxubGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gVE9ETzogcmVuYW1lIEFubm90IHRvIEFubj9cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gSW52YXJpYW50OiBjb250YWlucyBubyBuZXdsaW5lcy4gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIEFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTsgLy8gQW5ub3RhdGlvbnNcblxubGV0IGFsaWduID0gKGw6IHQoJ2Fubm90KSkgPT4gQWxpZ24obCk7XG5sZXQgYW5ub3QgPSAoYW5ub3Q6ICdhbm5vdCwgbDogdCgnYW5ub3QpKSA9PiBBbm5vdChhbm5vdCwgbCk7XG5cbmxldCByZWMgcmVtb3ZlX2Fubm90cyA9IChsYXlvdXQ6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gIHN3aXRjaCAobGF5b3V0KSB7XG4gIHwgQW5ub3QoXywgbCkgPT4gcmVtb3ZlX2Fubm90cyhsKVxuICB8IFRleHQoc3RyaW5nKSA9PiBUZXh0KHN0cmluZylcbiAgfCBDYXQobDEsIGwyKSA9PiBDYXQocmVtb3ZlX2Fubm90cyhsMSksIHJlbW92ZV9hbm5vdHMobDIpKVxuICB8IExpbmVicmVhayA9PiBMaW5lYnJlYWtcbiAgfCBBbGlnbihsKSA9PiBBbGlnbihyZW1vdmVfYW5ub3RzKGwpKVxuICB9O1xufTtcblxuLy8gVE9ETz9cbi8vbGV0IHRleHQgPSAoc3RyaW5nKSA9PiB0X29mX2xheW91dChUZXh0KHN0cmluZykpO1xuLy9sZXQgY2F0ID0gKHQxLCB0MikgPT4gdF9vZl9sYXlvdXQoQ2F0KHQxLCB0MikpO1xuLy9sZXQgbGluZWJyZWFrID0gdF9vZl9sYXlvdXQobGluZWJyZWFrKTtcblxuLy8gVE9ETzogbW92ZSB0byBvd24gbW9kdWxlXG50eXBlIHRleHQoJ2Fubm90LCAnaW1wLCAndCkgPSB7XG4gIC8vIFRPRE86IHJlbmFtZSBgaW1wYFxuICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gJ2ltcCxcbiAgaW1wX2FwcGVuZDogKCdpbXAsICdpbXApID0+ICdpbXAsXG4gIGltcF9uZXdsaW5lOiBpbnQgPT4gJ2ltcCxcbiAgaW1wX29mX2Fubm90OiAoJ2Fubm90LCAnaW1wKSA9PiAnaW1wLFxuICB0X29mX2ltcDogJ2ltcCA9PiAndCxcbn07XG5cbmxldCBta19vZl9sYXlvdXQ6ICh0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpLCB0KCdhbm5vdCkpID0+ICd0ID1cbiAgKHRleHQsIGxheW91dCkgPT4ge1xuICAgIGxldCBjb2x1bW46IHJlZihpbnQpID0gcmVmKDApO1xuICAgIGxldCByZWMgZ286IChpbnQsIHQoJ2Fubm90KSkgPT4gJ2ltcCA9XG4gICAgICAoaW5kZW50LCBsYXlvdXQpID0+IHtcbiAgICAgICAgc3dpdGNoIChsYXlvdXQpIHtcbiAgICAgICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgICAgICBjb2x1bW4gOj0gY29sdW1uXiArIFVuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICAgICAgdGV4dC5pbXBfb2Zfc3RyaW5nKHN0cmluZyk7XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgaW1wMSA9IGdvKGluZGVudCwgbDEpO1xuICAgICAgICAgIGxldCBpbXAyID0gZ28oaW5kZW50LCBsMik7XG4gICAgICAgICAgdGV4dC5pbXBfYXBwZW5kKGltcDEsIGltcDIpO1xuICAgICAgICB8IExpbmVicmVhayA9PlxuICAgICAgICAgIC8vIFRPRE86IG5vIGluZGVudCBpZiBvbiBmaW5hbCBsaW5lIGJyZWFrXG4gICAgICAgICAgY29sdW1uIDo9IGluZGVudDtcbiAgICAgICAgICB0ZXh0LmltcF9uZXdsaW5lKGluZGVudCk7XG4gICAgICAgIHwgQWxpZ24obCkgPT4gZ28oY29sdW1uXiwgbClcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT4gdGV4dC5pbXBfb2ZfYW5ub3QoYW5ub3QsIGdvKGluZGVudCwgbCkpXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIHRleHQudF9vZl9pbXAoZ28oMCwgbGF5b3V0KSk7XG4gIH07XG5cbmxldCBzdHJpbmdfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBzdHJpbmcgPVxuICBsYXlvdXQgPT4ge1xuICAgIGxldCByZWNvcmQ6ICdhbm5vdC4gdGV4dCgnYW5ub3QsIHN0cmluZywgc3RyaW5nKSA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBzdHJpbmcsXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiBzMSArKyBzMixcbiAgICAgIGltcF9uZXdsaW5lOiBpbmRlbnQgPT4gXCJcXG5cIiArKyBTdHJpbmcubWFrZShpbmRlbnQsICcgJyksXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBpbXAgPT4gaW1wLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcblxubGV0IHN0cmluZ3Nfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBsaXN0KChpbnQsIHN0cmluZykpID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOlxuICAgICAgJ2Fubm90LlxuICAgICAgdGV4dCgnYW5ub3QsIGxpc3QoKGludCwgc3RyaW5nKSksIGxpc3QoKGludCwgc3RyaW5nKSkpXG4gICAgID0ge1xuICAgICAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+IFsoMCwgc3RyaW5nKV0sXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5yZXYoczEpLCBzMikge1xuICAgICAgICB8IChbXSwgXykgPT4gczJcbiAgICAgICAgfCAoXywgW10pID0+IHMxXG4gICAgICAgIHwgKFxuICAgICAgICAgICAgWyhsYXN0X2luZGVudF8xLCBsYXN0X3N0cmluZ18xKSwgLi4ucmVzdDFdLFxuICAgICAgICAgICAgWyhmaXJzdF9pbmRlbnRfMiwgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml0sXG4gICAgICAgICAgKSA9PlxuICAgICAgICAgIGFzc2VydChmaXJzdF9pbmRlbnRfMiA9PSAwKTtcbiAgICAgICAgICBMaXN0LnJldihyZXN0MSlcbiAgICAgICAgICBAIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSArKyBmaXJzdF9zdHJpbmdfMiksIC4uLnJlc3QyXTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFsoaW5kZW50LCBcIlwiKV0sXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBzID0+IHMsXG4gICAgfTtcbiAgICBta19vZl9sYXlvdXQocmVjb3JkLCBsYXlvdXQpO1xuICB9O1xuIiwibGV0IHNwbGl0X2ZpcnN0ID0gKHhzOiBsaXN0KCdhKSk6ICgnYSwgbGlzdCgnYSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IGxpc3RcIilcbiAgfCBbZmlyc3QsIC4uLnRyYWlsaW5nXSA9PiAoZmlyc3QsIHRyYWlsaW5nKVxuICB9O1xuXG5sZXQgc3BsaXRfbGFzdF9vcHQgPSAoeHM6IGxpc3QoJ2EpKTogb3B0aW9uKChsaXN0KCdhKSwgJ2EpKSA9PlxuICBzd2l0Y2ggKExpc3QucmV2KHhzKSkge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeSwgLi4ueXNdID0+IFNvbWUoKExpc3QucmV2KHlzKSwgeSkpXG4gIH07XG5sZXQgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgnYSkpOiAobGlzdCgnYSksICdhKSA9PlxuICBzd2l0Y2ggKHNwbGl0X2xhc3Rfb3B0KHhzKSkge1xuICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIFdpZHRoUG9zS2V5ID0ge1xuICB0eXBlIHQgPSAoaW50LCBpbnQpO1xuICBsZXQgaGFzaCA9ICgod2lkdGgsIHBvcykpID0+IDI1NiAqIDI1NiAqIHdpZHRoICsgcG9zO1xuICBsZXQgZXF1YWwgPSAoKHcxLCBwMSksICh3MiwgcDIpKSA9PiB3MSA9PSB3MiAmJiBwMSA9PSBwMjtcbn07XG5cbm1vZHVsZSBNID0gSGFzaHRibC5NYWtlKFdpZHRoUG9zS2V5KTtcblxuLy8gTk9URTogcG9zIGlzIHJlbGF0aXZlIHRvIG1vc3QgcmVjZW50IGBBbGlnbmBcbnR5cGUgbScoJ2EpID0gUG9zTWFwLnQoKENvc3QudCwgJ2EpKTtcbnR5cGUgbSgnYSkgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCkgPT4gbScoJ2EpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbWVtOiBbQHNleHAub3BhcXVlXSBNLnQobScoTGF5b3V0LnQoJ2Fubm90KSkpLFxuICBkb2M6IHQnKCdhbm5vdCksXG59XG5bQGRlcml2aW5nIHNleHBdXG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBhc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSkgLy8gQW5ub3RhdGlvbnNcbiAgfCBGYWlsIC8vIGlkZW50aXR5IGZvciBgQ2hvaWNlYFxuICB8IENob2ljZSh0KCdhbm5vdCksIHQoJ2Fubm90KSk7XG5cbmxldCB0X29mX3QnID0gKHQnOiB0JygnYW5ub3QpKTogdCgnYW5ub3QpID0+IHttZW06IE0uY3JlYXRlKDApLCBkb2M6IHQnfTtcblxubGV0IHRleHQgPSAoczogc3RyaW5nKSA9PiB0X29mX3QnKFRleHQocykpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IHRfb2ZfdCcoTGluZWJyZWFrKTtcbmxldCBhbGlnbiA9IGRvYyA9PiB0X29mX3QnKEFsaWduKGRvYykpO1xubGV0IGFubm90ID0gKGFubm90LCBkb2MpID0+IHRfb2ZfdCcoQW5ub3QoYW5ub3QsIGRvYykpO1xubGV0IGZhaWwgPSAoKSA9PiB0X29mX3QnKEZhaWwpO1xuXG5sZXQgZW1wdHkgPSAoKSA9PiB0ZXh0KFwiXCIpO1xubGV0IHNwYWNlID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3ApOyAvLyBUT0RPOiBwYXJhbSB0byBoc2VwXG5cbmxldCBpbmRlbnQgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCArKyBVbmljb2RlLm5ic3ApO1xubGV0IGluZGVudF9hbmRfYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhDYXQoaW5kZW50KCksIGFsaWduKGRvYykpKTtcblxubGV0IGhjYXQgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgeSkpO1xubGV0IGhjYXRzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhjYXQsIGRvYywgZG9jcyk7XG5cbmxldCBoc2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KHNwYWNlKCksIHkpKSkpO1xubGV0IGhzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhzZXAsIGRvYywgZG9jcyk7XG5cbmxldCB2c2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KGxpbmVicmVhaygpLCB5KSkpKTtcbmxldCB2c2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWx3aXRoKF9fTE9DX18gKysgXCI6IHZzZXBzIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGxpc3RcIilcbiAgfCBbZG9jXSA9PiBkb2NcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdCh2c2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgY2hvaWNlID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2hvaWNlKHgsIHkpKTtcbmxldCBjaG9pY2VzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbCgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoY2hvaWNlLCBkb2MsIGRvY3MpO1xuXG5sZXQgbWFwX3QnOiAnYSAnYi4gKHQnKCdhKSA9PiB0JygnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PiB0X29mX3QnKGYoZC5kb2MpKTtcblxubGV0IHJlYyBtYXBfYW5ub3Q6ICdhICdiLiAoJ2EgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PlxuICAgIGRcbiAgICB8PiBtYXBfdCcoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgKFRleHQoXykgfCBMaW5lYnJlYWsgfCBGYWlsKSBhcyBkJyA9PiBkJ1xuICAgICAgICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gQW5ub3QoZihhbm5vdCksIG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQWxpZ24oZCkgPT4gQWxpZ24obWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBDYXQoZDEsIGQyKSA9PiBDYXQobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSlcbiAgICAgICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gQ2hvaWNlKG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpLFxuICAgICAgICk7XG4iLCIvLyBUT0RPOiBjb21wdXRlIGFjdHVhbCBsYXlvdXQgc2l6ZSBhbmQgdXNlIGluc3RlYWQgb2YgdF9vZl9sYXlvdXRcbmxldCByZWMgYWxsOiAnYW5ub3QuIERvYy50KCdhbm5vdCkgPT4gbGlzdChMYXlvdXQudCgnYW5ub3QpKSA9IHtcbiAgZG9jID0+IHtcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PiBbTGF5b3V0LlRleHQoc3RyaW5nKV1cbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbHMxID0gYWxsKGQxKTtcbiAgICAgIGxldCBsczIgPSBhbGwoZDIpO1xuICAgICAgTGlzdC5jb25jYXQoXG4gICAgICAgIExpc3QubWFwKGwxID0+IExpc3QubWFwKGwyID0+IExheW91dC5DYXQobDEsIGwyKSwgbHMyKSwgbHMxKSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT4gW0xheW91dC5MaW5lYnJlYWtdXG4gICAgfCBBbGlnbihkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5BbGlnbihsKSwgYWxsKGQpKVxuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFubm90KGFubm90LCBsKSwgYWxsKGQpKVxuICAgIHwgRmFpbCA9PiBbXVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gYWxsKGQxKSBAIGFsbChkMilcbiAgICB9O1xuICB9O1xufTtcblxuLy8gTm90ZTogVGhpcyB1bmlvbiBpcyBsZWZ0IGJpYXNlZFxubGV0IG0nX3VuaW9uOiAnYS4gKERvYy5tJygnYSksIERvYy5tJygnYSkpID0+IERvYy5tJygnYSkgPVxuICAocDEsIHAyKSA9PiB7XG4gICAgbGV0IGNvc3RfdW5pb24gPSAoKGNvc3QxOiBDb3N0LnQsIF8pIGFzIHQxLCAoY29zdDI6IENvc3QudCwgXykgYXMgdDIpID0+XG4gICAgICBpZiAoQ29zdC5sZXEoY29zdDEsIGNvc3QyKSkge1xuICAgICAgICB0MTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHQyO1xuICAgICAgfTtcbiAgICBQb3NNYXAudW5pb24oY29zdF91bmlvbiwgcDEsIHAyKTtcbiAgfTtcblxubGV0IHJlYyBsYXlvdXRfb2ZfZG9jJyA9IChkb2M6IERvYy50KHVuaXQpKTogRG9jLm0oTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgbGV0IGcgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIC8vIFRPRE86IGxpZnQgdGhlIHN3aXRjaChkb2MuZG9jKSBvdXRzaWRlIHRoZSBsYW1iZGFcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PlxuICAgICAgLy8gVE9ETzogY2FjaGUgdGV4dCBsZW5ndGggaW4gVGV4dD9cbiAgICAgIGxldCBwb3MnID0gcG9zICsgU3RyaW5nLmxlbmd0aChzdHJpbmcpOyAvL1VuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICBsZXQgY29zdCA9XG4gICAgICAgIGlmIChwb3MnIDw9IHdpZHRoKSB7XG4gICAgICAgICAgQ29zdC56ZXJvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBvdmVyZmxvdyA9IHBvcycgLSB3aWR0aDtcbiAgICAgICAgICAvLyBvdmVyZmxvd19jb3N0ID0gc3VtIGkgZnJvbSAxIHRvIG92ZXJmbG93XG4gICAgICAgICAgbGV0IG92ZXJmbG93X2Nvc3QgPSBvdmVyZmxvdyAqIChvdmVyZmxvdyArIDEpIC8gMjtcbiAgICAgICAgICBDb3N0Lm1rX292ZXJmbG93KG92ZXJmbG93X2Nvc3QpO1xuICAgICAgICB9O1xuICAgICAgUG9zTWFwLnNpbmdsZXRvbihwb3MnLCAoY29zdCwgTGF5b3V0LlRleHQoc3RyaW5nKSkpO1xuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLmZvbGRfbGVmdChcbiAgICAgICAgKHBvcywgeiwgKGNvc3QxLCBsYXlvdXQxKSkgPT4ge1xuICAgICAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgICAgIGxldCBsYXlvdXRzID1cbiAgICAgICAgICAgIFBvc01hcC5tYXAoXG4gICAgICAgICAgICAgICgoY29zdDIsIGxheW91dDIpKSA9PlxuICAgICAgICAgICAgICAgIChDb3N0LmFkZChjb3N0MSwgY29zdDIpLCBMYXlvdXQuQ2F0KGxheW91dDEsIGxheW91dDIpKSxcbiAgICAgICAgICAgICAgbDIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIG0nX3VuaW9uKHosIGxheW91dHMpO1xuICAgICAgICB9LFxuICAgICAgICBQb3NNYXAuZW1wdHksXG4gICAgICAgIGwxLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PlxuICAgICAgUG9zTWFwLnNpbmdsZXRvbigwLCAoQ29zdC5ta19oZWlnaHQoMSksIExheW91dC5MaW5lYnJlYWspKVxuICAgIHwgQWxpZ24oZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGg9d2lkdGggLSBwb3MsIH5wb3M9MCk7XG4gICAgICBQb3NNYXAubWFwayhcbiAgICAgICAgKHAsIChjLCBsKSkgPT4gKHAgKyBwb3MsIChjLCBMYXlvdXQuQWxpZ24obCkpKSxcbiAgICAgICAgbGF5b3V0LFxuICAgICAgKTtcbiAgICB8IEFubm90KGFubm90LCBkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAubWFwKCgoYywgbCkpID0+IChjLCBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpKSwgbGF5b3V0KTtcbiAgICB8IEZhaWwgPT4gUG9zTWFwLmVtcHR5XG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgIG0nX3VuaW9uKGwxLCBsMik7XG4gICAgfTtcbiAgfTtcbiAgbGV0IGggPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIGxldCBrZXkgPSAod2lkdGgsIHBvcyk7XG4gICAgc3dpdGNoIChEb2MuTS5maW5kX29wdChkb2MubWVtLCBrZXkpKSB7XG4gICAgfCBTb21lKHZhbHVlKSA9PiB2YWx1ZVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHZhbHVlID0gZyh+d2lkdGgsIH5wb3MpO1xuICAgICAgRG9jLk0uYWRkKGRvYy5tZW0sIGtleSwgdmFsdWUpO1xuICAgICAgdmFsdWU7XG4gICAgfTtcbiAgfTtcbiAgaDtcbn07XG5cbmxldCBsYXlvdXRfb2ZfZG9jID1cbiAgICAoZG9jOiBEb2MudCgnYW5ub3QpLCB+d2lkdGg6IGludCwgfnBvczogaW50KTogb3B0aW9uKExheW91dC50KCdhbm5vdCkpID0+IHtcbiAgbGV0IHJlYyBtaW5pbXVtID1cbiAgICAgICAgICAoKHBvcywgKGNvc3QsIHQpKTogKGludCwgKENvc3QudCwgb3B0aW9uKCdhKSkpKVxuICAgICAgICAgIDogKGxpc3QoKGludCwgKENvc3QudCwgJ2EpKSkgPT4gb3B0aW9uKCdhKSkgPT4ge1xuICAgIGZ1blxuICAgIHwgW10gPT4gdFxuICAgIHwgWyh4X3BvcywgKHhfY29zdCwgeCkpLCAuLi5yZXN0XSA9PlxuICAgICAgLy8gUHJlZmVyIGxvd2VzdCBjb3N0LCBvciBpZiBzYW1lIGNvc3QsIHByZWZlciBlbmRpbmcgYXQgYW4gZWFybGllciBjb2x1bW5cbiAgICAgIC8vIChDb2x1bW5zIGFyZSB1bmlxdWUgYnkgY29uc3RydWN0aW9uIG9mIFBvc01hcC4pXG4gICAgICBpZiAoQ29zdC5sdCh4X2Nvc3QsIGNvc3QpIHx8IENvc3QuZXEoeF9jb3N0LCBjb3N0KSAmJiB4X3BvcyA8IHBvcykge1xuICAgICAgICBtaW5pbXVtKCh4X3BvcywgKHhfY29zdCwgU29tZSh4KSkpLCByZXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbmltdW0oKHBvcywgKGNvc3QsIHQpKSwgcmVzdCk7XG4gICAgICB9O1xuICB9O1xuICAvLyBUT0RPOiB1c2Ugb3B0aW9ucyBpbnN0ZWFkIG9mIG1heF9pbnRcbiAgLy8gbGV0IHN0YXJ0X3RpbWUgPSBTeXMudGltZSgpO1xuICBsZXQgbCA9XG4gICAgbWluaW11bShcbiAgICAgIChtYXhfaW50LCAoQ29zdC5pbmYsIE5vbmUpKSxcbiAgICAgIE9iai5tYWdpYyhsYXlvdXRfb2ZfZG9jJyhPYmoubWFnaWMoZG9jKSwgfndpZHRoLCB+cG9zKSksXG4gICAgKTtcbiAgLy8gbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgLypcbiAgIFByaW50Zi5wcmludGYoXG4gICAgIFwibGF5b3V0X29mX2RvYzogJWQgXFx0JWZcXG5cIixcbiAgICAgLTEsIC8vZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpIyMuc2l6ZSxcbiAgICAgLy9NZW1vaXplLldlYWtQb2x5LlRhYmxlLmxlbmd0aChmc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkpLFxuICAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICAgKTtcbiAgICovXG4gIGw7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKVxuICB8IEhCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IFZCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCBoZWlnaHRfdGJsOiBNZW1vVGJsLnQodCh1bml0KSwgaW50KSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBoZWlnaHQgPSAoYm94OiB0KCdhbm5vdCkpID0+XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldChoZWlnaHRfdGJsLCBPYmoubWFnaWMoYm94KSkpIHtcbiAgICB8IFNvbWUoaCkgPT4gaFxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IGggPVxuICAgICAgICBzd2l0Y2ggKGJveCkge1xuICAgICAgICB8IFRleHQoXykgPT4gMVxuICAgICAgICB8IEFubm90KF8sIGIpID0+IGhlaWdodChiKVxuICAgICAgICB8IEhCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAxKSAvLyBOb3RlOiAxIGlzIEhCb3goW10pIGhlaWdodFxuICAgICAgICB8IFZCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKVxuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCksIGgpO1xuICAgICAgaDtcbiAgICB9O1xuXG4gIC8vIE5vdGU6IGFubm90cyBhcmUgaW5zaWRlLW91dCAoaS5lLiBMaXN0LmhkKGFubm90cykgaXMgdGhlIGlubmVyLW1vc3QgYW5ub3QpXG4gIGxldCByZWMgYW5ub3QgPSAoYW5ub3RzOiBsaXN0KCdhbm5vdCksIGJveDogdCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKGFubm90cykge1xuICAgIHwgW10gPT4gYm94XG4gICAgfCBbYW5uLCAuLi5hbm5zXSA9PiBhbm5vdChhbm5zLCBBbm5vdChhbm4sIGJveCkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGFwcGVuZF9ib3ggPVxuICAgICAgICAgICh+YW5ub3RzOiBsaXN0KCdhbm5vdCk9W10sIGJveDE6IHQoJ2Fubm90KSwgYm94MjogdCgnYW5ub3QpKVxuICAgICAgICAgIDogdCgnYW5ub3QpID0+XG4gICAgaWYgKGhlaWdodChib3gxKSA8PSAxKSB7XG4gICAgICBIQm94KFthbm5vdChhbm5vdHMsIGJveDEpLCBib3gyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZWMgYXBwZW5kX2xhc3QgPSAoYnMxOiBsaXN0KHQoJ2Fubm90KSkpOiBsaXN0KHQoJ2Fubm90KSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGJzMSkge1xuICAgICAgICB8IFtdID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZSBkdWUgdG8gYGJveF9oZWlnaHRgIGd1YXJkXCIpXG4gICAgICAgIHwgW2IxXSA9PiBbYXBwZW5kX2JveCh+YW5ub3RzLCBiMSwgYm94MildXG4gICAgICAgIHwgW2IxLCAuLi5iczFdID0+IFthbm5vdChhbm5vdHMsIGIxKSwgLi4uYXBwZW5kX2xhc3QoYnMxKV1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKGJveDEpIHtcbiAgICAgIHwgVGV4dChfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgfCBIQm94KGJzMSkgPT4gSEJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBWQm94KGJzMSkgPT4gVkJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBBbm5vdChhbm5vdCwgYikgPT4gYXBwZW5kX2JveCh+YW5ub3RzPVthbm5vdCwgLi4uYW5ub3RzXSwgYiwgYm94MilcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgYXBwZW5kX2hib3ggPSAoYm94ZXMxOiBsaXN0KHQoJ2Fubm90KSksIGJveGVzMjogbGlzdCh0KCdhbm5vdCkpKSA9PiB7XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChib3hlczEpKSB7XG4gICAgfCBOb25lID0+IGJveGVzMlxuICAgIHwgU29tZSgobGVhZGluZywgbGFzdCkpID0+IGxlYWRpbmcgQCBbYXBwZW5kX2JveChsYXN0LCBIQm94KGJveGVzMikpXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRhYmxlOiBNZW1vVGJsLnQoTGF5b3V0LnQodW5pdCksIHQodW5pdCkpID0gTWVtb1RibC5taygpO1xuICBsZXQgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgbGV0IG1rID0gKGJveGVzOiBsaXN0KGxpc3QodChfKSkpKSA9PlxuICAgICAgVkJveChMaXN0Lm1hcChyb3cgPT4gSEJveChyb3cpLCBib3hlcykpO1xuICAgIGxldCByZWMgZ28gPSAobDogTGF5b3V0LnQoXykpID0+IHtcbiAgICAgIHN3aXRjaCAoTWVtb1RibC5nZXQodGFibGUsIE9iai5tYWdpYyhsKSkpIHtcbiAgICAgIHwgU29tZShib3gpID0+IE9iai5tYWdpYyhib3gpXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IGJveCA9XG4gICAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgICAgfCBMaW5lYnJlYWsgPT4gW1tdLCBbXV1cbiAgICAgICAgICB8IFRleHQocykgPT4gW1tUZXh0KHMpXV1cbiAgICAgICAgICB8IEFsaWduKGwpID0+IFtbbWsoZ28obCkpXV1cbiAgICAgICAgICB8IEFubm90KGFubiwgbCkgPT5cbiAgICAgICAgICAgIGdvKGwpIHw+IExpc3QubWFwKHJvdyA9PiBbQW5ub3QoYW5uLCBIQm94KHJvdykpXSlcbiAgICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChnbyhsMSkpO1xuICAgICAgICAgICAgbGV0IChmaXJzdCwgdHJhaWxpbmcpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoZ28obDIpKTtcbiAgICAgICAgICAgIGxlYWRpbmcgQCBbYXBwZW5kX2hib3gobGFzdCwgZmlyc3QpLCAuLi50cmFpbGluZ107XG4gICAgICAgICAgfTtcbiAgICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKGJveCkpO1xuICAgICAgICBib3g7XG4gICAgICB9O1xuICAgIH07XG4gICAgbWsoZ28obCkpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzeW50YXhfcmVzdWx0ID0ge1xuICByZXN1bHRzOiBsaXN0KGJvb2wpLFxuICBwZXJjZW50YWdlOiBmbG9hdCxcbn07XG5cbmxldCByZWMgZmluZF92YXJfdXBhdCA9IChuYW1lOiBzdHJpbmcsIHVwYXQ6IFRlcm0uVVBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFdpbGRcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gIHwgQ29ucyh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHVwKSA9PiB7YWNjIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApfSwgZmFsc2UsIGwpXG4gIHwgUGFyZW5zKHVwKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgVHlwZUFubih1cCwgXykgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfTtcbn07XG5cbmxldCByZWMgdmFyX21lbnRpb24gPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgZmluZF92YXJfdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIGZpbmRfdmFyX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBkZWYpIHx8IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIGZpbmRfdmFyX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfbWVudGlvbihuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIGZpbmRfdmFyX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX2FwcGxpZWQobmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgZGVmKSB8fCB2YXJfYXBwbGllZChuYW1lLCBib2R5KVxuICB8IFRlc3QodSlcbiAgfCBQYXJlbnModSlcbiAgfCBVbk9wKF8sIHUpXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KSA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICB8IEFwKHUxLCB1MikgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB9XG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTIudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MSlcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBDb25zKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIGZpbmRfdmFyX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfYXBwbGllZChuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxubGV0IHJlYyBmaW5kX2luX2xldCA9XG4gICAgICAgIChcbiAgICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgdXBhdDogVGVybS5VUGF0LnQsXG4gICAgICAgICAgZGVmOiBUZXJtLlVFeHAudCxcbiAgICAgICAgICBsOiBsaXN0KFRlcm0uVUV4cC50KSxcbiAgICAgICAgKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0sIGRlZi50ZXJtKSB7XG4gIHwgKFBhcmVucyh1cCksIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgbClcbiAgfCAoUGFyZW5zKHVwKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoXywgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXBhdCwgdWUsIGwpXG4gIHwgKFR5cGVBbm4odXAsIF8pLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChWYXIoeCksIEZ1bihfKSkgPT5cbiAgICBpZiAoeCA9PSBuYW1lKSB7XG4gICAgICBbZGVmLCAuLi5sXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbDtcbiAgICB9XG4gIHwgKFR1cGxlKHBsKSwgVHVwbGUodWwpKSA9PlxuICAgIGlmIChMaXN0Lmxlbmd0aChwbCkgIT0gTGlzdC5sZW5ndGgodWwpKSB7XG4gICAgICBsO1xuICAgIH0gZWxzZSB7XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgIChhY2MsIHVwLCB1ZSkgPT4ge2ZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgYWNjKX0sXG4gICAgICAgIGwsXG4gICAgICAgIHBsLFxuICAgICAgICB1bCxcbiAgICAgICk7XG4gICAgfVxuICB8IChWYXIoXyksIF8pXG4gIHwgKFR1cGxlKF8pLCBfKVxuICB8IChcbiAgICAgIEVtcHR5SG9sZSB8IFdpbGQgfCBUcml2IHwgSW52YWxpZChfKSB8IE11bHRpSG9sZShfKSB8IEludChfKSB8IEZsb2F0KF8pIHxcbiAgICAgIEJvb2woXykgfFxuICAgICAgU3RyaW5nKF8pIHxcbiAgICAgIExpc3RMaXQoXykgfFxuICAgICAgQ29uc3RydWN0b3IoXykgfFxuICAgICAgQ29ucyhfLCBfKSB8XG4gICAgICBBcChfLCBfKSxcbiAgICAgIF8sXG4gICAgKSA9PiBsXG4gIH07XG59O1xuXG5sZXQgcmVjIGZpbmRfZm4gPVxuICAgICAgICAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCwgbDogbGlzdChUZXJtLlVFeHAudCkpXG4gICAgICAgIDogbGlzdChUZXJtLlVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IExldCh1cCwgZGVmLCBib2R5KSA9PlxuICAgIGwgfD4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZikgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IExpc3RMaXQodWwpXG4gIHwgVHVwbGUodWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdTEpID0+IHtmaW5kX2ZuKG5hbWUsIHUxLCBhY2MpfSwgbCwgdWwpXG4gIHwgRnVuKF8sIGJvZHkpID0+IGwgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IFBhcmVucyh1MSlcbiAgfCBVbk9wKF8sIHUxKVxuICB8IFR5QWxpYXMoXywgXywgdTEpXG4gIHwgVGVzdCh1MSlcbiAgfCBGaWx0ZXIoXywgXywgdTEpID0+IGwgfD4gZmluZF9mbihuYW1lLCB1MSlcbiAgfCBBcCh1MSwgdTIpXG4gIHwgUGlwZWxpbmUodTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpIHw+IGZpbmRfZm4obmFtZSwgdTMpXG4gIHwgTWF0Y2godTEsIHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sIHVlKSkgPT4ge2ZpbmRfZm4obmFtZSwgdWUsIGFjYyl9LFxuICAgICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSxcbiAgICAgIHVsLFxuICAgIClcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgVmFyKF8pID0+IGxcbiAgfTtcbn07XG5cbmxldCBpc19yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbmxldCByZWMgdGFpbF9jaGVjayA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKVxuICB8IFBpcGVsaW5lKF8sIF8pID0+IHRydWVcbiAgfCBGdW4oYXJncywgYm9keSkgPT5cbiAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICBmaW5kX3Zhcl91cGF0KG5hbWUsIHApIHx8IHZhcl9tZW50aW9uKG5hbWUsIGRlZilcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgLy9JZiBsIGhhcyBubyByZWN1cnNpdmUgY2FsbHMgdGhlbiB0cnVlXG4gICAgIUxpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IFRlc3QoXykgPT4gZmFsc2VcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpXG4gIHwgUGFyZW5zKHUpID0+IHRhaWxfY2hlY2sobmFtZSwgdSlcbiAgfCBVbk9wKF8sIHUpID0+ICF2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTIpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUxKVxuICB8IFNlcSh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+ICEodmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSlcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKVxuICAgICAgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpICYmIHRhaWxfY2hlY2sobmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgICAgPyBmYWxzZVxuICAgICAgOiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCAocCwgZSkpID0+IHtcbiAgICAgICAgICAgIGZpbmRfdmFyX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyAmJiB0YWlsX2NoZWNrKG5hbWUsIGUpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIGwsXG4gICAgICAgIClcbiAgfTtcbn07XG5cbmxldCBpc190YWlsX3JlY3Vyc2l2ZSA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSkgJiYgdGFpbF9jaGVjayhuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGNoZWNrID1cbiAgICAodWV4cDogVGVybS5VRXhwLnQsIHByZWRpY2F0ZXM6IGxpc3QoVGVybS5VRXhwLnQgPT4gYm9vbCkpOiBzeW50YXhfcmVzdWx0ID0+IHtcbiAgbGV0IHJlc3VsdHMgPSBMaXN0Lm1hcChwcmVkID0+IHt1ZXhwIHw+IHByZWR9LCBwcmVkaWNhdGVzKTtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHByZWRpY2F0ZXMpO1xuICBsZXQgcGFzc2luZyA9IFV0aWwuTGlzdFV0aWwuY291bnRfcHJlZChyZXMgPT4gcmVzLCByZXN1bHRzKTtcblxuICB7XG4gICAgcmVzdWx0cyxcbiAgICBwZXJjZW50YWdlOlxuICAgICAgLy92YWN1b3VzbHkgcGFzc2VzIGlmIHRoZXJlIGFyZSBubyB0ZXN0c1xuICAgICAgbGVuZ3RoID09IDAgPyAxLiA6IGZsb2F0X29mX2ludChwYXNzaW5nKSAvLiBmbG9hdF9vZl9pbnQobGVuZ3RoKSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcHJlZGljYXRlID1cbiAgfCBWYXJBcHBsaWVkKHN0cmluZylcbiAgfCBJc1JlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNOb3RSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShzdHJpbmcpO1xuXG5sZXQgcHJlZGljYXRlX2ZuID0gcHJlZGljYXRlID0+IHtcbiAgc3dpdGNoIChwcmVkaWNhdGUpIHtcbiAgfCBWYXJBcHBsaWVkKG5hbWUpID0+IHZhcl9hcHBsaWVkKG5hbWUpXG4gIHwgSXNSZWN1cnNpdmUobmFtZSkgPT4gaXNfcmVjdXJzaXZlKG5hbWUpXG4gIHwgSXNOb3RSZWN1cnNpdmUobmFtZSkgPT4gKHVleHAgPT4gIWlzX3JlY3Vyc2l2ZShuYW1lLCB1ZXhwKSlcbiAgfCBJc1RhaWxSZWN1cnNpdmUobmFtZSkgPT4gaXNfdGFpbF9yZWN1cnNpdmUobmFtZSlcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSB0eXBlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGU7XG4gIGxldCBkZWZhdWx0OiBub2RlO1xuICBsZXQgb3V0cHV0X2hlYWRlcjogc3RyaW5nID0+IHN0cmluZztcbn07XG5cbmxldCBvdXRwdXRfaGVhZGVyX2dyYWRpbmcgPSBfbW9kdWxlX25hbWUgPT5cbiAgXCJtb2R1bGUgRXhlcmNpc2UgPSBHcmFkZVByZWx1ZGUuRXhlcmNpc2VcXG5cIiArKyBcImxldCBwcm9tcHQgPSAoKVxcblwiO1xuXG5tb2R1bGUgRiA9IChFeGVyY2lzZUVudjogRXhlcmNpc2VFbnYpID0+IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHdyb25nX2ltcGwoJ2NvZGUpID0ge1xuICAgIGltcGw6ICdjb2RlLFxuICAgIGhpbnQ6IHN0cmluZyxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGlkZGVuX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgaGludHM6IGxpc3Qoc3RyaW5nKSxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGludCA9IHN0cmluZztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3ludGF4X3Rlc3QgPSAoaGludCwgU3ludGF4VGVzdC5wcmVkaWNhdGUpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdHMgPSBsaXN0KHN5bnRheF90ZXN0KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgeW91cl90ZXN0cygnY29kZSkgPSB7XG4gICAgdGVzdHM6ICdjb2RlLFxuICAgIHJlcXVpcmVkOiBpbnQsXG4gICAgcHJvdmlkZWQ6IGludCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9pbnRfZGlzdHJpYnV0aW9uID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogaW50LFxuICAgIG11dGF0aW9uX3Rlc3Rpbmc6IGludCxcbiAgICBpbXBsX2dyYWRpbmc6IGludCxcbiAgfTtcblxuICBsZXQgdmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uID1cbiAgICAgICh7dGVzdF92YWxpZGF0aW9uLCBtdXRhdGlvbl90ZXN0aW5nLCBpbXBsX2dyYWRpbmd9OiBwb2ludF9kaXN0cmlidXRpb24pID0+XG4gICAgdGVzdF92YWxpZGF0aW9uICsgbXV0YXRpb25fdGVzdGluZyArIGltcGxfZ3JhZGluZyA9PSAxMDBcbiAgICAgID8gKCkgOiBmYWlsd2l0aChcIkludmFsaWQgcG9pbnQgZGlzdHJpYnV0aW9uIGluIGV4ZXJjaXNlLlwiKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcCgnY29kZSkgPSB7XG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBpbnQsXG4gICAgbW9kdWxlX25hbWU6IHN0cmluZyxcbiAgICBwcm9tcHQ6XG4gICAgICBbQHByaW50ZXIgKGZtdCwgXykgPT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIFwicHJvbXB0XCIpXSBbQG9wYXF1ZV0gRXhlcmNpc2VFbnYubm9kZSxcbiAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgcHJlbHVkZTogJ2NvZGUsXG4gICAgY29ycmVjdF9pbXBsOiAnY29kZSxcbiAgICB5b3VyX3Rlc3RzOiB5b3VyX3Rlc3RzKCdjb2RlKSxcbiAgICB5b3VyX2ltcGw6ICdjb2RlLFxuICAgIGhpZGRlbl9idWdzOiBsaXN0KHdyb25nX2ltcGwoJ2NvZGUpKSxcbiAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0cygnY29kZSksXG4gICAgc3ludGF4X3Rlc3RzLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBrZXkgPSAoc3RyaW5nLCBpbnQpO1xuXG4gIGxldCBrZXlfb2YgPSBwID0+IHtcbiAgICAocC50aXRsZSwgcC52ZXJzaW9uKTtcbiAgfTtcblxuICBsZXQgZmluZF9rZXlfb3B0ID0gKGtleSwgc3BlY3M6IGxpc3QocCgnY29kZSkpKSA9PiB7XG4gICAgc3BlY3MgfD4gVXRpbC5MaXN0VXRpbC5maW5kaV9vcHQoc3BlYyA9PiBrZXlfb2Yoc3BlYykgPT0ga2V5KTtcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9zID1cbiAgICB8IFByZWx1ZGVcbiAgICB8IENvcnJlY3RJbXBsXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nXG4gICAgfCBZb3VySW1wbFxuICAgIHwgSGlkZGVuQnVncyhpbnQpXG4gICAgfCBIaWRkZW5UZXN0cztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3BlYyA9IHAoWmlwcGVyLnQpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0cmFuc2l0aW9uYXJ5X3NwZWMgPSBwKENvZGVTdHJpbmcudCk7XG5cbiAgbGV0IG1hcCA9IChwOiBwKCdhKSwgZjogJ2EgPT4gJ2IpOiBwKCdiKSA9PiB7XG4gICAge1xuICAgICAgdGl0bGU6IHAudGl0bGUsXG4gICAgICB2ZXJzaW9uOiBwLnZlcnNpb24sXG4gICAgICBtb2R1bGVfbmFtZTogcC5tb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogcC5wcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IHAucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgcHJlbHVkZTogZihwLnByZWx1ZGUpLFxuICAgICAgY29ycmVjdF9pbXBsOiBmKHAuY29ycmVjdF9pbXBsKSxcbiAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IGYocC55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgcmVxdWlyZWQ6IHAueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgcHJvdmlkZWQ6IHAueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGw6IGYocC55b3VyX2ltcGwpLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIHAuaGlkZGVuX2J1Z3NcbiAgICAgICAgfD4gTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB7XG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgaW1wbDogUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KHdyb25nX2ltcGwuaW1wbCksXG4gICAgICAgICAgICAgICBoaW50OiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgICAgfVxuICAgICAgICAgICB9KSxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KHAuaGlkZGVuX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgaGludHM6IHAuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgfSxcbiAgICAgIHN5bnRheF90ZXN0czogcC5zeW50YXhfdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZWRzID0gcChFZGl0b3IudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN0YXRlID0ge1xuICAgIHBvcyxcbiAgICBlZHMsXG4gIH07XG5cbiAgbGV0IGtleV9vZl9zdGF0ZSA9ICh7ZWRzLCBffSkgPT4ga2V5X29mKGVkcyk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcnNpc3RlbnRfc3RhdGUgPSAocG9zLCBsaXN0KChwb3MsIFBlcnNpc3RlbnRaaXBwZXIudCkpKTtcblxuICBsZXQgZWRpdG9yX29mX3N0YXRlOiBzdGF0ZSA9PiBFZGl0b3IudCA9XG4gICAgKHtwb3MsIGVkcywgX30pID0+XG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgfCBQcmVsdWRlID0+IGVkcy5wcmVsdWRlXG4gICAgICB8IENvcnJlY3RJbXBsID0+IGVkcy5jb3JyZWN0X2ltcGxcbiAgICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiBlZHMueW91cl90ZXN0cy50ZXN0c1xuICAgICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgICB8IFlvdXJJbXBsID0+IGVkcy55b3VyX2ltcGxcbiAgICAgIHwgSGlkZGVuQnVncyhpKSA9PiBMaXN0Lm50aChlZHMuaGlkZGVuX2J1Z3MsIGkpLmltcGxcbiAgICAgIHwgSGlkZGVuVGVzdHMgPT4gZWRzLmhpZGRlbl90ZXN0cy50ZXN0c1xuICAgICAgfTtcblxuICBsZXQgcHV0X2VkaXRvciA9ICh7cG9zLCBlZHMsIF99IGFzIHN0YXRlOiBzdGF0ZSwgZWRpdG9yOiBFZGl0b3IudCkgPT5cbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgcHJlbHVkZTogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgQ29ycmVjdEltcGwgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgLi4uZWRzLnlvdXJfdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VySW1wbCA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgeW91cl9pbXBsOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBIaWRkZW5CdWdzKG4pID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICAgIFV0aWwuTGlzdFV0aWwucHV0X250aChcbiAgICAgICAgICAgICAgbixcbiAgICAgICAgICAgICAgey4uLkxpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgbiksIGltcGw6IGVkaXRvcn0sXG4gICAgICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMuaGlkZGVuX3Rlc3RzLFxuICAgICAgICAgICAgdGVzdHM6IGVkaXRvcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IGVkaXRvcnMgPSAoe2VkcywgX306IHN0YXRlKSA9PlxuICAgIFtcbiAgICAgIGVkcy5wcmVsdWRlLFxuICAgICAgZWRzLmNvcnJlY3RfaW1wbCxcbiAgICAgIGVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl9pbXBsLFxuICAgIF1cbiAgICBAIExpc3QubWFwKHdyb25nX2ltcGwgPT4gd3JvbmdfaW1wbC5pbXBsLCBlZHMuaGlkZGVuX2J1Z3MpXG4gICAgQCBbZWRzLmhpZGRlbl90ZXN0cy50ZXN0c107XG5cbiAgbGV0IGVkaXRvcl9wb3NpdGlvbnMgPSAoe2VkcywgX306IHN0YXRlKSA9PlxuICAgIFtQcmVsdWRlLCBDb3JyZWN0SW1wbCwgWW91clRlc3RzVGVzdGluZywgWW91clRlc3RzVmFsaWRhdGlvbiwgWW91ckltcGxdXG4gICAgQCBMaXN0Lm1hcGkoKGksIF8pID0+IEhpZGRlbkJ1Z3MoaSksIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtIaWRkZW5UZXN0c107XG5cbiAgbGV0IHBvc2l0aW9uZWRfZWRpdG9ycyA9IHN0YXRlID0+XG4gICAgTGlzdC5jb21iaW5lKGVkaXRvcl9wb3NpdGlvbnMoc3RhdGUpLCBlZGl0b3JzKHN0YXRlKSk7XG5cbiAgbGV0IGlkeF9vZl9wb3MgPSAocG9zLCBwOiBwKCdjb2RlKSkgPT5cbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiAwXG4gICAgfCBDb3JyZWN0SW1wbCA9PiAxXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IDJcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gM1xuICAgIHwgWW91ckltcGwgPT4gNFxuICAgIHwgSGlkZGVuQnVncyhpKSA9PlxuICAgICAgaWYgKGkgPCBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICA1ICsgaTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx3aXRoKFwiaW52YWxpZCBoaWRkZW4gYnVnIGluZGV4XCIpO1xuICAgICAgfVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpXG4gICAgfTtcblxuICBsZXQgcG9zX29mX2lkeCA9IChwOiBwKCdjb2RlKSwgaWR4OiBpbnQpID0+XG4gICAgc3dpdGNoIChpZHgpIHtcbiAgICB8IDAgPT4gUHJlbHVkZVxuICAgIHwgMSA9PiBDb3JyZWN0SW1wbFxuICAgIHwgMiA9PiBZb3VyVGVzdHNUZXN0aW5nXG4gICAgfCAzID0+IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IDQgPT4gWW91ckltcGxcbiAgICB8IF8gPT5cbiAgICAgIGlmIChpZHggPCAwKSB7XG4gICAgICAgIGZhaWx3aXRoKFwibmVnYXRpdmUgaWR4XCIpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPCA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgSGlkZGVuQnVncyhpZHggLSA1KTtcbiAgICAgIH0gZWxzZSBpZiAoaWR4ID09IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5UZXN0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx3aXRoKFwiZWxlbWVudCBpZHhcIik7XG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgc3dpdGNoX2VkaXRvciA9ICh+cG9zLCBpbnN0cnVjdG9yX21vZGUsIH5leGVyY2lzZSkgPT5cbiAgICBpZiAoIWluc3RydWN0b3JfbW9kZSkge1xuICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgIHwgSGlkZGVuVGVzdHNcbiAgICAgIHwgSGlkZGVuQnVncyhfKSA9PiBleGVyY2lzZVxuICAgICAgfCBfID0+IHtlZHM6IGV4ZXJjaXNlLmVkcywgcG9zfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge2VkczogZXhlcmNpc2UuZWRzLCBwb3N9O1xuICAgIH07XG5cbiAgbGV0IHppcHBlcl9vZl9jb2RlID0gY29kZSA9PiB7XG4gICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoY29kZSkpIHtcbiAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJUcmFuc2l0aW9uIGZhaWxlZC5cIilcbiAgICB8IFNvbWUoemlwcGVyKSA9PiB6aXBwZXJcbiAgICB9O1xuICB9O1xuXG4gIGxldCB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uYXJ5X3NwZWMgPT4gc3BlYyA9XG4gICAgKFxuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfSxcbiAgICApID0+IHtcbiAgICAgIGxldCBwcmVsdWRlID0gemlwcGVyX29mX2NvZGUocHJlbHVkZSk7XG4gICAgICBsZXQgY29ycmVjdF9pbXBsID0gemlwcGVyX29mX2NvZGUoY29ycmVjdF9pbXBsKTtcbiAgICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCByZXF1aXJlZDogeW91cl90ZXN0cy5yZXF1aXJlZCwgcHJvdmlkZWQ6IHlvdXJfdGVzdHMucHJvdmlkZWR9O1xuICAgICAgfTtcbiAgICAgIGxldCB5b3VyX2ltcGwgPSB6aXBwZXJfb2ZfY29kZSh5b3VyX2ltcGwpO1xuICAgICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgKGFjYywge2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgICBsZXQgaW1wbCA9IHppcHBlcl9vZl9jb2RlKGltcGwpO1xuICAgICAgICAgICAgYWNjIEAgW3tpbXBsLCBoaW50fV07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgKTtcbiAgICAgIGxldCBoaWRkZW5fdGVzdHMgPSB7XG4gICAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUodGVzdHMpO1xuICAgICAgICB7dGVzdHMsIGhpbnRzfTtcbiAgICAgIH07XG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uID0gemlwcGVyID0+IEVkaXRvci5pbml0KHppcHBlcik7XG4gIGxldCBlZHNfb2Zfc3BlYzogc3BlYyA9PiBlZHMgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH0sXG4gICAgKSA9PiB7XG4gICAgICBsZXQgcHJlbHVkZSA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHByZWx1ZGUpO1xuICAgICAgbGV0IGNvcnJlY3RfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGNvcnJlY3RfaW1wbCk7XG4gICAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICAgIH07XG4gICAgICBsZXQgeW91cl9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl9pbXBsKTtcbiAgICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICAgIGhpZGRlbl9idWdzXG4gICAgICAgIHw+IExpc3QubWFwKCh7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgICBsZXQgaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGltcGwpO1xuICAgICAgICAgICAgIHtpbXBsLCBoaW50fTtcbiAgICAgICAgICAgfSk7XG4gICAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgICB9O1xuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gIC8vXG4gIC8vIE9sZCB2ZXJzaW9uIG9mIGFib3ZlIHRoYXQgZGlkIHN0cmluZy1iYXNlZCBwYXJzaW5nLCBtYXkgYmUgdXNlZnVsXG4gIC8vIGZvciB0cmFuc2l0aW9ucyBiZXR3ZWVuIHppcHBlciBkYXRhIHN0cnVjdHVyZSB2ZXJzaW9ucyAoVE9ETylcbiAgLy9cbiAgLy8gbGV0IGVkaXRvcl9vZl9jb2RlID0gKGluaXRfaWQsIGNvZGUpID0+XG4gIC8vICAgc3dpdGNoIChFZGl0b3JVdGlsLmVkaXRvcl9vZl9jb2RlKGluaXRfaWQsIGNvZGUpKSB7XG4gIC8vICAgfCBOb25lID0+IGZhaWx3aXRoKFwiRXhlcmNpc2UgZXJyb3I6IGludmFsaWQgY29kZVwiKVxuICAvLyAgIHwgU29tZSh4KSA9PiB4XG4gIC8vICAgfTtcbiAgLy8gbGV0IGVkc19vZl9zcGVjOiBzcGVjID0+IGVkcyA9XG4gIC8vICAgKFxuICAvLyAgICAge1xuICAvL1xuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfSxcbiAgLy8gICApID0+IHtcbiAgLy8gICAgIGxldCBpZCA9IG5leHRfaWQ7XG4gIC8vICAgICBsZXQgKGlkLCBwcmVsdWRlKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBwcmVsdWRlKTtcbiAgLy8gICAgIGxldCAoaWQsIGNvcnJlY3RfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgY29ycmVjdF9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl90ZXN0cy50ZXN0cyk7XG4gIC8vICAgICAgIChcbiAgLy8gICAgICAgICBpZCxcbiAgLy8gICAgICAgICB7XG4gIC8vICAgICAgICAgICB0ZXN0cyxcbiAgLy8gICAgICAgICAgIG51bV9yZXF1aXJlZDogeW91cl90ZXN0cy5udW1fcmVxdWlyZWQsXG4gIC8vICAgICAgICAgICBtaW5pbXVtOiB5b3VyX3Rlc3RzLm1pbmltdW0sXG4gIC8vICAgICAgICAgfSxcbiAgLy8gICAgICAgKTtcbiAgLy8gICAgIH07XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fYnVncykgPVxuICAvLyAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgLy8gICAgICAgICAoKGlkLCBhY2MpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgLy8gICAgICAgICAgIGxldCAoaWQsIGltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGltcGwpO1xuICAvLyAgICAgICAgICAgKGlkLCBhY2MgQCBbe2ltcGwsIGhpbnR9XSk7XG4gIC8vICAgICAgICAgfSxcbiAgLy8gICAgICAgICAoaWQsIFtdKSxcbiAgLy8gICAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHRlc3RzKTtcbiAgLy8gICAgICAgKGlkLCB7dGVzdHMsIGhpbnRzfSk7XG4gIC8vICAgICB9O1xuICAvLyAgICAge1xuICAvLyAgICAgICBuZXh0X2lkOiBpZCxcbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH07XG4gIC8vICAgfTtcblxuICBsZXQgc2V0X2luc3RydWN0b3JfbW9kZSA9ICh7ZWRzLCBffSBhcyBzdGF0ZTogc3RhdGUsIG5ld19tb2RlOiBib29sKSA9PiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZWRzOiB7XG4gICAgICAuLi5lZHMsXG4gICAgICBwcmVsdWRlOiBFZGl0b3Iuc2V0X3JlYWRfb25seShlZHMucHJlbHVkZSwgIW5ld19tb2RlKSxcbiAgICB9LFxuICB9O1xuXG4gIGxldCB2aXNpYmxlX2luID0gKHBvcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgQ29ycmVjdEltcGwgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRydWVcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZmFsc2VcbiAgICB8IFlvdXJJbXBsID0+IHRydWVcbiAgICB8IEhpZGRlbkJ1Z3MoXykgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGF0ZV9vZl9zcGVjID0gKHNwZWMsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGVkcyA9IGVkc19vZl9zcGVjKHNwZWMpO1xuICAgIHNldF9pbnN0cnVjdG9yX21vZGUoe3BvczogWW91ckltcGwsIGVkc30sIGluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUgPVxuICAgICAgKHtwb3MsIF99IGFzIHN0YXRlOiBzdGF0ZSwgfmluc3RydWN0b3JfbW9kZTogYm9vbCkgPT4ge1xuICAgIGxldCB6aXBwZXJzID1cbiAgICAgIHBvc2l0aW9uZWRfZWRpdG9ycyhzdGF0ZSlcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgocG9zLCBfKSkgPT4gdmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKVxuICAgICAgfD4gTGlzdC5tYXAoKChwb3MsIGVkaXRvcikpID0+IHtcbiAgICAgICAgICAgKHBvcywgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KEVkaXRvci4oZWRpdG9yLnN0YXRlLnppcHBlcikpKVxuICAgICAgICAgfSk7XG4gICAgKHBvcywgemlwcGVycyk7XG4gIH07XG5cbiAgbGV0IHVucGVyc2lzdF9zdGF0ZSA9XG4gICAgICAoXG4gICAgICAgIChwb3MsIHBvc2l0aW9uZWRfemlwcGVycyk6IHBlcnNpc3RlbnRfc3RhdGUsXG4gICAgICAgIH5zcGVjOiBzcGVjLFxuICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICAgICAgKVxuICAgICAgOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGxvb2t1cCA9IChwb3MsIGRlZmF1bHQpID0+XG4gICAgICBpZiAodmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgIGxldCBwZXJzaXN0ZWRfemlwcGVyID0gTGlzdC5hc3NvYyhwb3MsIHBvc2l0aW9uZWRfemlwcGVycyk7XG4gICAgICAgIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdChwZXJzaXN0ZWRfemlwcGVyKTtcbiAgICAgICAgRWRpdG9yLmluaXQoemlwcGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGRlZmF1bHQpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBwb3MsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIHRpdGxlOiBzcGVjLnRpdGxlLFxuICAgICAgICAgIHZlcnNpb246IHNwZWMudmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZTogc3BlYy5tb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQ6IHNwZWMucHJvbXB0LFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogc3BlYy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICByZXF1aXJlZDogc3BlYy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICAgICAgcHJvdmlkZWQ6IHNwZWMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICBoaW50czogc3BlYy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzeW50YXhfdGVzdHM6IHNwZWMuc3ludGF4X3Rlc3RzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGluc3RydWN0b3JfbW9kZSxcbiAgICApO1xuICB9O1xuXG4gIC8vICMgU3RpdGNoaW5nXG5cbiAgbW9kdWxlIFRlcm1JdGVtID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHRlcm06IFRlcm1CYXNlLlVFeHAudCxcbiAgICAgIHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQsXG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3RhdGljc0l0ZW0gPSB7XG4gICAgdHlwZSB0ID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzO1xuICB9O1xuXG4gIHR5cGUgc3RpdGNoZWQoJ2EpID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgdXNlcl9pbXBsOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbFxuICAgIHVzZXJfdGVzdHM6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsICsgeW91cl90ZXN0c1xuICAgIHByZWx1ZGU6ICdhLCAvLyBwcmVsdWRlXG4gICAgaW5zdHJ1Y3RvcjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyBoaWRkZW5fdGVzdHMudGVzdHMgLy8gVE9ETyBvbmx5IG5lZWRzIHRvIHJ1biBpbiBpbnN0cnVjdG9yIG1vZGVcbiAgICBoaWRkZW5fYnVnczogbGlzdCgnYSksIC8vIHByZWx1ZGUgKyBoaWRkZW5fYnVnc1tpXS5pbXBsICsgeW91cl90ZXN0cyxcbiAgICBoaWRkZW5fdGVzdHM6ICdhLFxuICB9O1xuXG4gIGxldCB3cmFwX2ZpbHRlciA9IChhY3Q6IEZpbHRlckFjdGlvbi5hY3Rpb24sIHRlcm06IFRlcm0uVUV4cC50KTogVGVybS5VRXhwLnQgPT5cbiAgICBUZXJtQmFzZS5VRXhwLntcbiAgICAgIHRlcm06XG4gICAgICAgIFRlcm1CYXNlLlVFeHAuRmlsdGVyKFxuICAgICAgICAgIEZpbHRlckFjdGlvbi4oYWN0LCBPbmUpLFxuICAgICAgICAgIHt0ZXJtOiBDb25zdHJ1Y3RvcihcIiRlXCIpLCBpZHM6IFtJZC5taygpXX0sXG4gICAgICAgICAgdGVybSxcbiAgICAgICAgKSxcbiAgICAgIGlkczogW0lkLm1rKCldLFxuICAgIH07XG5cbiAgbGV0IHdyYXAgPSAodGVybSwgZWRpdG9yOiBFZGl0b3IudCk6IFRlcm1JdGVtLnQgPT4ge1xuICAgIHRlcm0sXG4gICAgdGVybV9yYW5nZXM6IGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLFxuICB9O1xuXG4gIGxldCB0ZXJtX29mID0gKGVkaXRvcjogRWRpdG9yLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIGVkaXRvci5zdGF0ZS5tZXRhLnZpZXdfdGVybTtcblxuICBsZXQgc3RpdGNoMyA9IChlZDE6IEVkaXRvci50LCBlZDI6IEVkaXRvci50LCBlZDM6IEVkaXRvci50KSA9PlxuICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh0ZXJtX29mKGVkMSksIHRlcm1fb2YoZWQyKSksXG4gICAgICB0ZXJtX29mKGVkMyksXG4gICAgKTtcblxuICBsZXQgc3RpdGNoX3Rlcm0gPSAoe2VkcywgX306IHN0YXRlKTogc3RpdGNoZWQoVGVybUl0ZW0udCkgPT4ge1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIGVkcy5jb3JyZWN0X2ltcGwsIGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpO1xuICAgIGxldCB1c2VyX2ltcGxfdGVybSA9IHtcbiAgICAgIGxldCB5b3VyX2ltcGxfdGVybSA9XG4gICAgICAgIGVkcy55b3VyX2ltcGwgfD4gdGVybV9vZiB8PiB3cmFwX2ZpbHRlcihGaWx0ZXJBY3Rpb24uU3RlcCk7XG4gICAgICBsZXQgcHJlbHVkZV90ZXJtID1cbiAgICAgICAgZWRzLnByZWx1ZGUgfD4gdGVybV9vZiB8PiB3cmFwX2ZpbHRlcihGaWx0ZXJBY3Rpb24uRXZhbCk7XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAocHJlbHVkZV90ZXJtLCB5b3VyX2ltcGxfdGVybSk7XG4gICAgfTtcbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uX3Rlcm0gPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB1c2VyX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy55b3VyX3Rlc3RzLnRlc3RzKSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXJtID1cbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh1c2VyX2ltcGxfdGVybSwgdGVybV9vZihlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKSk7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiB3cmFwKHRlc3RfdmFsaWRhdGlvbl90ZXJtLCBlZHMueW91cl90ZXN0cy50ZXN0cyksXG4gICAgICB1c2VyX2ltcGw6IHdyYXAodXNlcl9pbXBsX3Rlcm0sIGVkcy55b3VyX2ltcGwpLFxuICAgICAgdXNlcl90ZXN0czogd3JhcCh1c2VyX3Rlc3RzX3Rlcm0sIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgIC8vIGluc3RydWN0b3Igd29ya3MgaGVyZSBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIHByZWx1ZGU6IHdyYXAoaW5zdHJ1Y3RvciwgZWRzLnByZWx1ZGUpLFxuICAgICAgaW5zdHJ1Y3Rvcjogd3JhcChpbnN0cnVjdG9yLCBlZHMuY29ycmVjdF9pbXBsKSxcbiAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAodCk6IFRlcm1JdGVtLnQgPT5cbiAgICAgICAgICAgIHdyYXAoc3RpdGNoMyhlZHMucHJlbHVkZSwgdC5pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyksIHQuaW1wbCksXG4gICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICApLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB3cmFwKGhpZGRlbl90ZXN0c190ZXJtLCBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKSxcbiAgICB9O1xuICB9O1xuICBsZXQgc3RpdGNoX3Rlcm0gPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfdGVybSk7XG5cbiAgdHlwZSBzdGl0Y2hlZF9zdGF0aWNzID0gc3RpdGNoZWQoU3RhdGljc0l0ZW0udCk7XG5cbiAgLyogTXVsdGlwbGUgc3RpdGNoaW5ncyBhcmUgbmVlZGVkIGZvciBlYWNoIGV4ZXJjaXNlXG4gICAgIChzZWUgY29tbWVudHMgaW4gdGhlIHN0aXRjaGVkIHR5cGUgYWJvdmUpXG5cbiAgICAgU3RpdGNoaW5nIGlzIG5lY2Vzc2FyeSB0byBjb25jYXRlbmF0ZSB0ZXJtc1xuICAgICBmcm9tIGRpZmZlcmVudCBlZGl0b3JzLCB3aGljaCBhcmUgdGhlbiB0eXBlY2hlY2tlZC4gKi9cbiAgbGV0IHN0aXRjaF9zdGF0aWMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgdDogc3RpdGNoZWQoVGVybUl0ZW0udCkpOiBzdGl0Y2hlZF9zdGF0aWNzID0+IHtcbiAgICBsZXQgbWsgPSAoe3Rlcm0sIHRlcm1fcmFuZ2VzLCBffTogVGVybUl0ZW0udCk6IFN0YXRpY3NJdGVtLnQgPT4ge1xuICAgICAgbGV0IGluZm9fbWFwID0gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwKHNldHRpbmdzLCB0ZXJtKTtcbiAgICAgIHtcbiAgICAgICAgdGVybSxcbiAgICAgICAgZXJyb3JfaWRzOiBTdGF0aWNzLk1hcC5lcnJvcl9pZHModGVybV9yYW5nZXMsIGluZm9fbWFwKSxcbiAgICAgICAgaW5mb19tYXAsXG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IGluc3RydWN0b3IgPSBtayh0Lmluc3RydWN0b3IpO1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbjogbWsodC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgdXNlcl9pbXBsOiBtayh0LnVzZXJfaW1wbCksXG4gICAgICB1c2VyX3Rlc3RzOiBtayh0LnVzZXJfdGVzdHMpLFxuICAgICAgcHJlbHVkZTogaW5zdHJ1Y3RvciwgLy8gd29ya3MgYXMgbG9uZyBhcyB5b3UgZG9uJ3Qgc2hhZG93IGFueXRoaW5nIGluIHRoZSBwcmVsdWRlXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKG1rLCB0LmhpZGRlbl9idWdzKSxcbiAgICAgIGhpZGRlbl90ZXN0czogbWsodC5oaWRkZW5fdGVzdHMpLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0aXRjaF9zdGF0aWMgPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfc3RhdGljKTtcblxuICBsZXQgc3RhdGljc19vZl9zdGljaGVkID1cbiAgICAgIChzdGF0ZTogc3RhdGUsIHM6IHN0aXRjaGVkKFN0YXRpY3NJdGVtLnQpKTogU3RhdGljc0l0ZW0udCA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHMucHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGwgPT4gcy5pbnN0cnVjdG9yXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHMudGVzdF92YWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHMudXNlcl90ZXN0c1xuICAgIHwgWW91ckltcGwgPT4gcy51c2VyX2ltcGxcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBMaXN0Lm50aChzLmhpZGRlbl9idWdzLCBpZHgpXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBzLmhpZGRlbl90ZXN0c1xuICAgIH07XG5cbiAgbGV0IHN0YXRpY3Nfb2YgPSAofnNldHRpbmdzLCBleGVyY2lzZTogc3RhdGUpOiBTdGF0aWNzSXRlbS50ID0+XG4gICAgZXhlcmNpc2VcbiAgICB8PiBzdGl0Y2hfdGVybVxuICAgIHw+IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MpXG4gICAgfD4gc3RhdGljc19vZl9zdGljaGVkKGV4ZXJjaXNlKTtcblxuICBsZXQgcHJlbHVkZV9rZXkgPSBcInByZWx1ZGVcIjtcbiAgbGV0IHRlc3RfdmFsaWRhdGlvbl9rZXkgPSBcInRlc3RfdmFsaWRhdGlvblwiO1xuICBsZXQgdXNlcl9pbXBsX2tleSA9IFwidXNlcl9pbXBsXCI7XG4gIGxldCB1c2VyX3Rlc3RzX2tleSA9IFwidXNlcl90ZXN0c1wiO1xuICBsZXQgaW5zdHJ1Y3Rvcl9rZXkgPSBcImluc3RydWN0b3JcIjtcbiAgbGV0IGhpZGRlbl9idWdzX2tleSA9IG4gPT4gXCJoaWRkZW5fYnVnc19cIiArKyBzdHJpbmdfb2ZfaW50KG4pO1xuICBsZXQgaGlkZGVuX3Rlc3RzX2tleSA9IFwiaGlkZGVuX3Rlc3RzXCI7XG5cbiAgbGV0IGtleV9mb3Jfc3RhdGljcyA9IChzdGF0ZTogc3RhdGUpOiBzdHJpbmcgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBwcmVsdWRlX2tleVxuICAgIHwgQ29ycmVjdEltcGwgPT4gaW5zdHJ1Y3Rvcl9rZXlcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdGVzdF92YWxpZGF0aW9uX2tleVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiB1c2VyX3Rlc3RzX2tleVxuICAgIHwgWW91ckltcGwgPT4gdXNlcl9pbXBsX2tleVxuICAgIHwgSGlkZGVuQnVncyhpZHgpID0+IGhpZGRlbl9idWdzX2tleShpZHgpXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBoaWRkZW5fdGVzdHNfa2V5XG4gICAgfTtcblxuICBsZXQgc3BsaWNlZF9lbGFicyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBzdGF0ZTogc3RhdGUpXG4gICAgICA6IGxpc3QoKE1vZGVsUmVzdWx0cy5rZXksIERIRXhwLnQpKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlOiBfLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgZWxhYiA9IChzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MpID0+XG4gICAgICBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncywgcy5pbmZvX21hcCwgcy50ZXJtKTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBTdGF0aWNzSXRlbS50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbGV0IG1rX3N0YXRpY3MgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBTdGF0aWNzSXRlbS50KSkgPT4ge1xuICAgIGxldCBzdGl0Y2hlZCA9IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgW1xuICAgICAgKHByZWx1ZGVfa2V5LCBzdGl0Y2hlZC5wcmVsdWRlKSxcbiAgICAgICh0ZXN0X3ZhbGlkYXRpb25fa2V5LCBzdGl0Y2hlZC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgKHVzZXJfaW1wbF9rZXksIHN0aXRjaGVkLnVzZXJfaW1wbCksXG4gICAgICAodXNlcl90ZXN0c19rZXksIHN0aXRjaGVkLnVzZXJfdGVzdHMpLFxuICAgICAgKGluc3RydWN0b3Jfa2V5LCBzdGl0Y2hlZC5pbnN0cnVjdG9yKSxcbiAgICAgIChoaWRkZW5fdGVzdHNfa2V5LCBzdGl0Y2hlZC5oaWRkZW5fdGVzdHMpLFxuICAgIF1cbiAgICBAIExpc3QubWFwaShcbiAgICAgICAgKG4sIGhpZGRlbl9idWc6IFN0YXRpY3NJdGVtLnQpID0+IChoaWRkZW5fYnVnc19rZXkobiksIGhpZGRlbl9idWcpLFxuICAgICAgICBzdGl0Y2hlZC5oaWRkZW5fYnVncyxcbiAgICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBUZXJtQmFzZS5VRXhwLnQsXG4gICAgICBpbmZvX21hcDogU3RhdGljcy5NYXAudCxcbiAgICAgIHJlc3VsdDogTW9kZWxSZXN1bHQudCxcbiAgICB9O1xuICAgIGxldCBlbXB0eTogdCA9IHtcbiAgICAgIHRlcm06IHtcbiAgICAgICAgdGVybTogVHVwbGUoW10pLFxuICAgICAgICBpZHM6IFtJZC5taygpXSxcbiAgICAgIH0sXG4gICAgICBpbmZvX21hcDogSWQuTWFwLmVtcHR5LFxuICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgfTtcbiAgICBsZXQgc3RhdGljc19vbmx5ID0gKHt0ZXJtLCBpbmZvX21hcCwgX306IFN0YXRpY3NJdGVtLnQpOiB0ID0+IHtcbiAgICAgIHt0ZXJtLCBpbmZvX21hcCwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIH07XG4gIH07XG5cbiAgLyogR2l2ZW4gdGhlIGV2YWx1YXRpb24gcmVzdWx0cywgY29sbGVjdHMgdGhlXG4gICAgIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBwcm9kdWNpbmcgZHluYW1pY1xuICAgICBmZWVkYmFjayovXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IHJlc3VsdF9vZiA9IGtleSA9PlxuICAgICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gTW9kZWxSZXN1bHQuTm9FbGFiXG4gICAgICB8IFNvbWUocmVzdWx0cykgPT5cbiAgICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCBrZXkpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICB9O1xuXG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbiA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiB0ZXN0X3ZhbGlkYXRpb24udGVybSxcbiAgICAgICAgaW5mb19tYXA6IHRlc3RfdmFsaWRhdGlvbi5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodGVzdF92YWxpZGF0aW9uX2tleSksXG4gICAgICB9O1xuXG4gICAgbGV0IHVzZXJfaW1wbCA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiB1c2VyX2ltcGwudGVybSxcbiAgICAgICAgaW5mb19tYXA6IHVzZXJfaW1wbC5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodXNlcl9pbXBsX2tleSksXG4gICAgICB9O1xuXG4gICAgbGV0IHVzZXJfdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogdXNlcl90ZXN0cy50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdXNlcl90ZXN0cy5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodXNlcl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiBwcmVsdWRlLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBwcmVsdWRlLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IE5vRWxhYixcbiAgICAgIH07XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogaW5zdHJ1Y3Rvci50ZXJtLFxuICAgICAgICBpbmZvX21hcDogaW5zdHJ1Y3Rvci5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YoaW5zdHJ1Y3Rvcl9rZXkpLFxuICAgICAgfTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAobiwgc3RhdGljc19pdGVtOiBTdGF0aWNzSXRlbS50KSA9PlxuICAgICAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgICAgICB0ZXJtOiBzdGF0aWNzX2l0ZW0udGVybSxcbiAgICAgICAgICAgIGluZm9fbWFwOiBzdGF0aWNzX2l0ZW0uaW5mb19tYXAsXG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihoaWRkZW5fYnVnc19rZXkobikpLFxuICAgICAgICAgIH0sXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IGhpZGRlbl90ZXN0cy50ZXJtLFxuICAgICAgICBpbmZvX21hcDogaGlkZGVuX3Rlc3RzLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihoaWRkZW5fdGVzdHNfa2V5KSxcbiAgICAgIH07XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX2R5bmFtaWMgPVxuICAgICAgKFxuICAgICAgICBzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgcmVzdWx0czogb3B0aW9uKE1vZGVsUmVzdWx0cy50KSxcbiAgICAgIClcbiAgICAgIDogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpID0+XG4gICAgaWYgKHNldHRpbmdzLnN0YXRpY3MgJiYgc2V0dGluZ3MuZHluYW1pY3MpIHtcbiAgICAgIHN0aXRjaF9keW5hbWljKHNldHRpbmdzLCBzdGF0ZSwgcmVzdWx0cyk7XG4gICAgfSBlbHNlIGlmIChzZXR0aW5ncy5zdGF0aWNzKSB7XG4gICAgICBsZXQgdCA9IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgICB7XG4gICAgICAgIHRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICAgIHVzZXJfaW1wbDogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfaW1wbCksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC51c2VyX3Rlc3RzKSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0Lmluc3RydWN0b3IpLFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQucHJlbHVkZSksXG4gICAgICAgIGhpZGRlbl9idWdzOiBMaXN0Lm1hcChEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5LCB0LmhpZGRlbl9idWdzKSxcbiAgICAgICAgaGlkZGVuX3Rlc3RzOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaGlkZGVuX3Rlc3RzKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfaW1wbDogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICB1c2VyX3Rlc3RzOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGluc3RydWN0b3I6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgcHJlbHVkZTogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICBMaXN0LmluaXQoTGlzdC5sZW5ndGgoc3RhdGUuZWRzLmhpZGRlbl9idWdzKSwgXyA9PlxuICAgICAgICAgICAgRHluYW1pY3NJdGVtLmVtcHR5XG4gICAgICAgICAgKSxcbiAgICAgICAgaGlkZGVuX3Rlc3RzOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICB9O1xuICAgIH07XG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9keW5hbWljKTtcblxuICAvLyBNb2R1bGUgRXhwb3J0XG5cbiAgbGV0IGVkaXRvcl9wcCA9IChmbXQsIGVkaXRvcjogRWRpdG9yLnQpID0+IHtcbiAgICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBsZXQgc2VyaWFsaXphdGlvbiA9IFppcHBlci5zaG93KHppcHBlcik7XG4gICAgLy8gbGV0IHN0cmluZ19saXRlcmFsID0gXCJcXFwiXCIgKysgU3RyaW5nLmVzY2FwZWQoc2VyaWFsaXphdGlvbikgKysgXCJcXFwiXCI7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIHNlcmlhbGl6YXRpb24pO1xuICB9O1xuXG4gIGxldCBleHBvcnRfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgcHJlZml4ID1cbiAgICAgIFwibGV0IHByb21wdCA9IFwiXG4gICAgICArKyBtb2R1bGVfbmFtZVxuICAgICAgKysgXCJfcHJvbXB0LnByb21wdFxcblwiXG4gICAgICArKyBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AoZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb25hcnlfZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBjb2RlID0gUHJpbnRlci50b19zdHJpbmdfYmFzaWMoemlwcGVyKTtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJcXFwiXCIgKysgU3RyaW5nLmVzY2FwZWQoY29kZSkgKysgXCJcXFwiXCIpO1xuICB9O1xuXG4gIGxldCBleHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gRXhlcmNpc2UudHJhbnNpdGlvbihcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKHRyYW5zaXRpb25hcnlfZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gcHJlZml4ICsrIHJlY29yZCArKyBcIilcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCBleHBvcnRfZ3JhZGluZ19tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBoZWFkZXIgPSBvdXRwdXRfaGVhZGVyX2dyYWRpbmcobW9kdWxlX25hbWUpO1xuICAgIGxldCBwcmVmaXggPSBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AoZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gaGVhZGVyICsrIHByZWZpeCArKyByZWNvcmQgKysgXCJcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCBibGFua19zcGVjID1cbiAgICAgIChcbiAgICAgICAgfnRpdGxlLFxuICAgICAgICB+bW9kdWxlX25hbWUsXG4gICAgICAgIH5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIH5yZXF1aXJlZF90ZXN0cyxcbiAgICAgICAgfnByb3ZpZGVkX3Rlc3RzLFxuICAgICAgICB+bnVtX3dyb25nX2ltcGxzLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IHByZWx1ZGUgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgeW91cl9pbXBsID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5pbml0KFxuICAgICAgICBudW1fd3JvbmdfaW1wbHMsXG4gICAgICAgIGkgPT4ge1xuICAgICAgICAgIGxldCB6aXBwZXIgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgICAgICAgIHtpbXBsOiB6aXBwZXIsIGhpbnQ6IFwiVE9ETzogaGludCBcIiArKyBzdHJpbmdfb2ZfaW50KGkpfTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXN0cyA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQ6IEV4ZXJjaXNlRW52LmRlZmF1bHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogeW91cl90ZXN0c190ZXN0cyxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICBwcm92aWRlZDogcHJvdmlkZWRfdGVzdHMsXG4gICAgICB9LFxuICAgICAgeW91cl9pbXBsLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IGhpZGRlbl90ZXN0c190ZXN0cyxcbiAgICAgICAgaGludHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHN5bnRheF90ZXN0czogW10sXG4gICAgfTtcbiAgfTtcblxuICAvLyBGcm9tIFN0b3JlXG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGV4ZXJjaXNlX2V4cG9ydCA9IHtcbiAgICBjdXJfZXhlcmNpc2U6IGtleSxcbiAgICBleGVyY2lzZV9kYXRhOiBsaXN0KChrZXksIHBlcnNpc3RlbnRfc3RhdGUpKSxcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplX2V4ZXJjaXNlID0gKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSlcbiAgICB8PiBzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGVcbiAgICB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZSA9IChkYXRhLCB+c3BlYywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGRhdGFcbiAgICB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nXG4gICAgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwXG4gICAgfD4gdW5wZXJzaXN0X3N0YXRlKH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0ID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IGV4ZXJjaXNlX2V4cG9ydF9vZl9zZXhwO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIEYgPSAoRXhlcmNpc2VFbnY6IEV4ZXJjaXNlLkV4ZXJjaXNlRW52KSA9PiB7XG4gIG9wZW4gRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcmNlbnRhZ2UgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvaW50cyA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc2NvcmUgPSAocG9pbnRzLCBwb2ludHMpO1xuXG4gIGxldCBzY29yZV9vZl9wZXJjZW50ID0gKHBlcmNlbnQsIG1heF9wb2ludHMpID0+IHtcbiAgICBsZXQgbWF4X3BvaW50cyA9IGZsb2F0X29mX2ludChtYXhfcG9pbnRzKTtcbiAgICAocGVyY2VudCAqLiBtYXhfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgfTtcblxuICBtb2R1bGUgVGVzdFZhbGlkYXRpb25SZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICByZXF1aXJlZDogaW50LFxuICAgICAgcHJvdmlkZWQ6IGludCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSkgPT4ge1xuICAgICAge1xuICAgICAgICB0ZXN0X3Jlc3VsdHMsXG4gICAgICAgIHJlcXVpcmVkOiBlZHMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgcHJvdmlkZWQ6IGVkcy55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBzd2l0Y2ggKHJlcG9ydC50ZXN0X3Jlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiAwLjBcbiAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgIGxldCBudW1fdGVzdHMgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnRvdGFsKTtcbiAgICAgICAgbGV0IHJlcXVpcmVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5yZXF1aXJlZCk7XG4gICAgICAgIGxldCBwcm92aWRlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucHJvdmlkZWQpO1xuICAgICAgICBsZXQgbnVtX3Bhc3NpbmcgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnBhc3NpbmcpO1xuXG4gICAgICAgIHJlcXVpcmVkIC0uIHByb3ZpZGVkIDw9IDAuMCB8fCBudW1fdGVzdHMgPD0gMC4wXG4gICAgICAgICAgPyAwLjBcbiAgICAgICAgICA6IG51bV9wYXNzaW5nXG4gICAgICAgICAgICAvLiBudW1fdGVzdHNcbiAgICAgICAgICAgICouIChcbiAgICAgICAgICAgICAgRmxvYXQubWF4KFxuICAgICAgICAgICAgICAgIDAuLFxuICAgICAgICAgICAgICAgIEZsb2F0Lm1pbihudW1fdGVzdHMgLS4gcHJvdmlkZWQsIHJlcXVpcmVkIC0uIHByb3ZpZGVkKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvLiAocmVxdWlyZWQgLS4gcHJvdmlkZWQpXG4gICAgICAgICAgICApO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgTXV0YXRpb25UZXN0aW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtyZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpfTtcblxuICAgIGxldCBoaWRkZW5fYnVnX3N0YXR1cyA9XG4gICAgICAgIChcbiAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z19kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgKVxuICAgICAgICA6IFRlc3RTdGF0dXMudCA9PiB7XG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHModGVzdF92YWxpZGF0aW9uX2RhdGEucmVzdWx0KSxcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKGhpZGRlbl9idWdfZGF0YS5yZXN1bHQpLFxuICAgICAgKSB7XG4gICAgICB8IChOb25lLCBfKVxuICAgICAgfCAoXywgTm9uZSkgPT4gSW5kZXRcbiAgICAgIHwgKFNvbWUodGVzdF92YWxpZGF0aW9uX2RhdGEpLCBTb21lKGhpZGRlbl9idWdfZGF0YSkpID0+XG4gICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfbWFwID0gdGVzdF92YWxpZGF0aW9uX2RhdGEudGVzdF9tYXA7XG4gICAgICAgIGxldCBoaWRkZW5fYnVnX3Rlc3RfbWFwID0gaGlkZGVuX2J1Z19kYXRhLnRlc3RfbWFwO1xuXG4gICAgICAgIGxldCBmb3VuZCA9XG4gICAgICAgICAgaGlkZGVuX2J1Z190ZXN0X21hcFxuICAgICAgICAgIHw+IExpc3QuZmluZF9vcHQoKChpZCwgaW5zdGFuY2VfcmVwb3J0cykpID0+IHtcbiAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhpbnN0YW5jZV9yZXBvcnRzKTtcbiAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzc1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbCA9PlxuICAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMgPVxuICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25fdGVzdF9tYXAgfD4gVGVzdE1hcC5sb29rdXAoaWQpO1xuICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzKSB7XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IFNvbWUocmVwb3J0cykgPT5cbiAgICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMocmVwb3J0cyk7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzcyA9PiB0cnVlXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWxcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgc3dpdGNoIChmb3VuZCkge1xuICAgICAgICB8IE5vbmUgPT4gRmFpbFxuICAgICAgICB8IFNvbWUoXykgPT4gUGFzc1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9OyAvLyBmb3IgZWFjaCBoaWRkZW4gYnVnXG4gICAgLy8gICBpbiB0aGUgdGVzdCByZXN1bHRzIGRhdGEsIGZpbmQgYSB0ZXN0IElEIHRoYXQgcGFzc2VzIHRlc3QgdmFsaWRhdGlvbiBidXQgZmFpbHMgYWdhaW5zdFxuXG4gICAgbGV0IG1rID1cbiAgICAgICAgKFxuICAgICAgICAgIH50ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIH5oaWRkZW5fYnVnc19zdGF0ZTogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSksXG4gICAgICAgICAgfmhpZGRlbl9idWdzOiBsaXN0KER5bmFtaWNzSXRlbS50KSxcbiAgICAgICAgKVxuICAgICAgICA6IHQgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPVxuICAgICAgICBMaXN0Lm1hcChoaWRkZW5fYnVnX3N0YXR1cyh0ZXN0X3ZhbGlkYXRpb24pLCBoaWRkZW5fYnVncyk7XG4gICAgICBsZXQgaGludHMgPVxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAod3JvbmdfaW1wbDogd3JvbmdfaW1wbChFZGl0b3IudCkpID0+IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICBoaWRkZW5fYnVnc19zdGF0ZSxcbiAgICAgICAgKTtcbiAgICAgIGxldCByZXN1bHRzID0gTGlzdC5jb21iaW5lKHJlc3VsdHMsIGhpbnRzKTtcbiAgICAgIHtyZXN1bHRzOiByZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9IHJlcG9ydC5yZXN1bHRzO1xuICAgICAgbGV0IG51bV93cm9uZ19pbXBscyA9IExpc3QubGVuZ3RoKHJlc3VsdHMpO1xuICAgICAgbGV0IG51bV9wYXNzZWQgPVxuICAgICAgICByZXN1bHRzXG4gICAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICAgIHN3aXRjaCAobnVtX3dyb25nX2ltcGxzKSB7XG4gICAgICB8IDAgPT4gMS4wXG4gICAgICB8IF8gPT4gZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQpIC8uIGZsb2F0X29mX2ludChudW1fd3JvbmdfaW1wbHMpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICAvLyBUT0RPIG1vdmUgdG8gc2VwYXJhdGUgbW9kdWxlXG5cbiAgICBsZXQgc3VtbWFyeV9zdHIgPSAofnRvdGFsLCB+Zm91bmQpOiBzdHJpbmcgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10b3RhbCxcbiAgICAgICAgfnA9Zm91bmQsXG4gICAgICAgIH5xPTAsXG4gICAgICAgIH5uX3N0cj1cImJ1Z1wiLFxuICAgICAgICB+bnNfc3RyPVwiYnVnc1wiLFxuICAgICAgICB+cF9zdHI9XCJleHBvc2VkXCIsXG4gICAgICAgIH5xX3N0cj1cIlwiLFxuICAgICAgICB+cl9zdHI9XCJ1bnJldmVhbGVkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIFN5bnRheFJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoYm9vbCwgaGludCkpLFxuICAgICAgcGVyY2VudGFnZSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH55b3VyX2ltcGw6IEVkaXRvci50LCB+dGVzdHM6IHN5bnRheF90ZXN0cyk6IHQgPT4ge1xuICAgICAgbGV0IHVzZXJfaW1wbF90ZXJtID0geW91cl9pbXBsLnN0YXRlLm1ldGEudmlld190ZXJtO1xuXG4gICAgICBsZXQgcHJlZGljYXRlcyA9XG4gICAgICAgIExpc3QubWFwKCgoXywgcCkpID0+IFN5bnRheFRlc3QucHJlZGljYXRlX2ZuKHApLCB0ZXN0cyk7XG4gICAgICBsZXQgaGludHMgPSBMaXN0Lm1hcCgoKGgsIF8pKSA9PiBoLCB0ZXN0cyk7XG4gICAgICBsZXQgc3ludGF4X3Jlc3VsdHMgPSBTeW50YXhUZXN0LmNoZWNrKHVzZXJfaW1wbF90ZXJtLCBwcmVkaWNhdGVzKTtcblxuICAgICAge1xuICAgICAgICBoaW50ZWRfcmVzdWx0czpcbiAgICAgICAgICBMaXN0Lm1hcDIoKHIsIGgpID0+IChyLCBoKSwgc3ludGF4X3Jlc3VsdHMucmVzdWx0cywgaGludHMpLFxuICAgICAgICBwZXJjZW50YWdlOiBzeW50YXhfcmVzdWx0cy5wZXJjZW50YWdlLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH5oaW50czogbGlzdChzdHJpbmcpLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpOiB0ID0+IHtcbiAgICAgIGxldCBoaW50ZWRfcmVzdWx0cyA9XG4gICAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgICAgbGV0IHN0YXR1c2VzID0gdGVzdF9yZXN1bHRzLnN0YXR1c2VzO1xuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgc3RhdHVzZXMsXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJObyBoaW50IGF2YWlsYWJsZS5cIixcbiAgICAgICAgICApO1xuXG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJFeGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yOiBIaW50IHdpdGhvdXQgYSB0ZXN0LlwiLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHtoaW50cywgdGVzdF9yZXN1bHRzLCBoaW50ZWRfcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCB0b3RhbCA9IChyZXBvcnQ6IHQpID0+IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cyk7XG4gICAgbGV0IG51bV9wYXNzZWQgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCwgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN5bnRheF9yZXBvcnQucGVyY2VudGFnZVxuICAgICAgKi4gKGZsb2F0X29mX2ludChudW1fcGFzc2VkKHJlcG9ydCkpIC8uIGZsb2F0X29mX2ludCh0b3RhbChyZXBvcnQpKSk7XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDogVGVzdFZhbGlkYXRpb25SZXBvcnQudCxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OiBNdXRhdGlvblRlc3RpbmdSZXBvcnQudCxcbiAgICAgIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDogSW1wbEdyYWRpbmdSZXBvcnQudCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB+c3RpdGNoZWRfZHluYW1pY3M6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSkgPT4ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBlZHMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDpcbiAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQubWsoXG4gICAgICAgICAgZWRzLFxuICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24ucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OlxuICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbj1zdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlPWVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M9c3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBzeW50YXhfcmVwb3J0OlxuICAgICAgICBTeW50YXhSZXBvcnQubWsofnlvdXJfaW1wbD1lZHMueW91cl9pbXBsLCB+dGVzdHM9ZWRzLnN5bnRheF90ZXN0cyksXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OlxuICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+aGludHM9ZWRzLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB+dGVzdF9yZXN1bHRzPVxuICAgICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICApLFxuICAgIH07XG5cbiAgICBsZXQgb3ZlcmFsbF9zY29yZSA9XG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgICAgICBzeW50YXhfcmVwb3J0LFxuICAgICAgICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgICAgIF8sXG4gICAgICAgICAgfTogdCxcbiAgICAgICAgKVxuICAgICAgICA6IHNjb3JlID0+IHtcbiAgICAgIGxldCAodHZfcG9pbnRzLCB0dl9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5wZXJjZW50YWdlKHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICk7XG4gICAgICBsZXQgKG10X3BvaW50cywgbXRfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0LnBlcmNlbnRhZ2UobXV0YXRpb25fdGVzdGluZ19yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IChpZ19wb2ludHMsIGlnX21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIEltcGxHcmFkaW5nUmVwb3J0LnBlcmNlbnRhZ2UoaW1wbF9ncmFkaW5nX3JlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b3RhbF9wb2ludHMgPSB0dl9wb2ludHMgKy4gbXRfcG9pbnRzICsuIGlnX3BvaW50cztcbiAgICAgIGxldCBtYXhfcG9pbnRzID0gdHZfbWF4ICsuIG10X21heCArLiBpZ19tYXg7XG4gICAgICAodG90YWxfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgICB9O1xuICB9O1xufTtcbiIsIm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gdW5pdDtcbiAgbGV0IGRlZmF1bHQgPSAoKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBFeGVyY2lzZS5vdXRwdXRfaGVhZGVyX2dyYWRpbmc7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxubW9kdWxlIEdyYWRpbmcgPSBHcmFkaW5nLkYoRXhlcmNpc2VFbnYpO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMvMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgZGVidWcgPVxuICBsZXQgX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIkRFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgYW5kIF9PTURfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiT01EX0RFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggX0RFQlVHLCBfT01EX0RFQlVHIHdpdGhcbiAgfCBfLCBTb21lIFwiZmFsc2VcIiAtPlxuICAgICBmYWxzZVxuICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIERFQlVHIGlzIHNldCwgXFxcbiAgICAgICAgICAgICAgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2RlIGJ5IHVuc2V0dGluZyBERUJVRyBcXFxuICAgICAgICAgICAgICBvciBieSBzZXR0aW5nIE9NRF9ERUJVRyB0byB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgZmFsc2VcbiAgfCBfLCBTb21lIF8gLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBPTURfREVCVUcgaXMgc2V0XG4gICAgICAgICAgICAgIHRvIGEgdmFsdWUgdGhhdCBpc24ndCB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCB3YXJuID8od2U9ZmFsc2UpIG1zZyA9XG4gIGlmIHdlIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgbXNnKVxuICBlbHNlXG4gICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6ICVzXFxuJSFcIiBtc2dcblxuXG5sZXQgdHJhY2tmaXggPVxuICB0cnlcbiAgICBpZ25vcmUoU3lzLmdldGVudiBcIk9NRF9GSVhcIik7XG4gICAgZXByaW50ZiBcIm9tZDogdHJhY2tpbmcgbW9kZSBhY3RpdmF0ZWQ6IHRva2VuIGxpc3QgYXJlIHZlcnkgb2Z0ZW4gY2hlY2tlZCwgXFxcbiAgICAgICAgICAgICBpdCBtaWdodCB0YWtlIGEgKnZlcnkqIGxvbmcgdGltZSBpZiB5b3VyIGlucHV0IGlzIGxhcmdlLlxcbiUhXCI7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGZhbHNlXG5cbmxldCBfID0gaWYgZGVidWcgdGhlbiBQcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlIHRydWVcblxubGV0IHJhaXNlID1cbiAgaWYgZGVidWcgdGhlblxuICAgIChmdW4gZSAtPlxuICAgICAgIGVwcmludGYgXCIoT01EKSBFeGNlcHRpb24gcmFpc2VkOiAlc1xcbiUhXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKTtcbiAgICAgICByYWlzZSBlKVxuICBlbHNlXG4gICAgcmFpc2VcblxubW9kdWxlIFN0cmluZ1NldCA6IHNpZ1xuICBpbmNsdWRlIFNldC5TIHdpdGggdHlwZSBlbHQgPSBzdHJpbmdcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBvZl9saXN0IGwgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHIgZSAtPiBhZGQgZSByKSBlbXB0eSBsXG5lbmRcblxuXG50eXBlICdhIHNwbGl0ID0gJ2EgbGlzdCAtPiAnYSBzcGxpdF9hY3Rpb25cbmFuZCAnYSBzcGxpdF9hY3Rpb24gPVxuICB8IENvbnRpbnVlXG4gIHwgQ29udGludWVfd2l0aCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuICB8IFNwbGl0IG9mICdhIGxpc3QgKiAnYSBsaXN0XG5cblxubGV0IGZzcGxpdF9yZXYgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH4oZjonYSBzcGxpdCkgbFxuICAgIDogKCdhIGxpc3QgKiAnYSBsaXN0KSBvcHRpb24gPVxuICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGYgW10gd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICBlbmRcbiAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgZXhjbCBsIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgbWF0Y2ggZiBsIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gIGluIGxvb3AgW10gbFxuXG5sZXQgZnNwbGl0ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+ZiBsID1cbiAgbWF0Y2ggZnNwbGl0X3JldiB+ZXhjbDpleGNsIH5mOmYgbCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUocmV2LCBsKSAtPiBTb21lKExpc3QucmV2IHJldiwgbClcblxubGV0IGlkX29mX3N0cmluZyBpZHMgcyA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBvdXQgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgKCogUHV0IFtzXSBpbnRvIFtiXSwgcmVwbGFjaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGRhc2hlcy4gKilcbiAgbGV0IHJlYyBsb29wIHN0YXJ0ZWQgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCBjIDtcbiAgICAgICAgbG9vcCB0cnVlIChpICsgMSlcbiAgICAgICgqIERvbid0IHdhbnQgdG8gc3RhcnQgd2l0aCBkYXNoZXMuICopXG4gICAgICB8IF8gd2hlbiBub3Qgc3RhcnRlZCAtPlxuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0ICctJyA7XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICBpblxuICBsb29wIGZhbHNlIDAgO1xuICBsZXQgcycgPSBCdWZmZXIuY29udGVudHMgb3V0IGluXG4gIGlmIHMnID0gXCJcIiB0aGVuIFwiXCJcbiAgZWxzZVxuICAgICgqIEZpbmQgb3V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gW3MnXSB0aGF0IGlzbid0IGEgZGFzaC4gKilcbiAgICBsZXQgbGFzdF90cmFpbGluZyA9IFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpIDwgMCB8fCBzJy5baV0gPD4gJy0nIHRoZW4gaVxuICAgICAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggcycgLSAxKVxuICAgIGluXG4gICAgKCogVHJpbSB0cmFpbGluZyBkYXNoZXMuICopXG4gICAgaWRzI21hbmdsZSBAQCBTdHJpbmcuc3ViIHMnIDAgKGxhc3RfdHJhaWxpbmcgKyAxKVxuXG4oKiBvbmx5IGNvbnZlcnQgd2hlbiBcIm5lY2Vzc2FyeVwiICopXG5sZXQgaHRtbGVudGl0aWVzID8obWQ9ZmFsc2UpIHMgPVxuICBsZXQgbW9kdWxlIEJyZWFrID0gc3RydWN0IGV4Y2VwdGlvbiBCcmVhayBlbmQgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICgpXG4gICAgZWxzZVxuICAgICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAoICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyApIGFzIGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gICAgICAgIHwgJ1xcJycgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjMzk7XCJcbiAgICAgICAgfCAnJicgLT5cbiAgICAgICAgICAgIGlmIG1kIHRoZW5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIHMuW2krMV0gd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnIycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJlwiXG4gICAgICAgICAgICAgICAgd2l0aCBfIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gICAgICAgIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgICAgICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIGluIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBtaW5pbWFsaXplX2JsYW5rcyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGwgaW5cbiAgbGV0IHJlYyBsb29wIGYgaSA9XG4gICAgaWYgaSA9IGwgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgLT5cbiAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBmIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgaW4gbG9vcCBmYWxzZSAwXG5cbmxldCByZWMgZWF0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgZTo6dGwgYXMgbCAtPiBpZiBmIGUgdGhlbiBlYXQgZiB0bCBlbHNlIGxcblxuXG5sZXQgcmVjIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcyA9IFxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLlswXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnICcgLT4gbG9vcCAoaSsxKVxuICAgICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgIGluIGxvb3AgMVxuICBpblxuICBsZXQgcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgcyA9XG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuW1N0cmluZy5sZW5ndGggcyAtIDFdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIC0+IGxvb3AgKGktMSlcbiAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyByZXMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICByZXNcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICB0cnlcbiAgICAgICAgICBTb21lICh0YWtlX2F0dHJpYnV0ZSBzIGkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSAoKChfLF8pIGFzIGEpLCBuZXdfcykgLT5cbiAgICAgICAgbG9vcCBuZXdfcyAoYTo6cmVzKSAwXG4gICAgICB8IE5vbmUgLT4gcmVzXG4gIGFuZCB0YWtlX2F0dHJpYnV0ZSBzIGkgPVxuICAgICAgbGV0IG5hbWUsIGFmdGVyX2VxID0gY3V0X29uX2NoYXJfZnJvbSBzIGkgJz0nIGluXG4gICAgICBsZXQgbmFtZSA9IHJlbW92ZV9zdWZmaXhfc3BhY2VzIG5hbWUgaW5cbiAgICAgIGxldCBhZnRlcl9lcSA9IHJlbW92ZV9wcmVmaXhfc3BhY2VzIGFmdGVyX2VxIGluXG4gICAgICBsZXQgdmFsdWUsIHJlc3QgPSBjdXRfb25fY2hhcl9mcm9tIGFmdGVyX2VxIDEgYWZ0ZXJfZXEuWzBdIGluXG4gICAgICAobmFtZSx2YWx1ZSksIHJlbW92ZV9wcmVmaXhfc3BhY2VzIHJlc3RcbiAgaW5cbiAgaWYgKCogSGFzIGl0IGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGU/ICopXG4gICAgdHJ5IFN0cmluZy5pbmRleCBodG1sICc+JyA8IFN0cmluZy5pbmRleCBodG1sICcgJ1xuICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcbiAgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgbWF0Y2ggaHRtbC5bMV0gd2l0aFxuICB8ICc8JyB8ICcgJyAtPlxuICAgIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzXG4gICAgICAocmVtb3ZlX3ByZWZpeF9zcGFjZXMgKFN0cmluZy5zdWIgaHRtbCAxIChTdHJpbmcubGVuZ3RoIGh0bWwgLSAxKSkpXG4gIHwgXyAtPlxuICAgIHRyeVxuICAgICAgbGV0IGh0bWwgPSBzbmQgKGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICcgJykgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5zdWIgaHRtbCAwIChTdHJpbmcuaW5kZXggaHRtbCAnPicpKSBbXSAwXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gW11cblxubGV0IHJlYyBleHRyYWN0X2lubmVyX2h0bWwgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZWMgcmN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5yaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgMCBqLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgXywgcCA9IGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICc+JyBpblxuICBsZXQgciwgXyA9IHJjdXRfb25fY2hhcl9mcm9tIHAgKFN0cmluZy5sZW5ndGggcCAtIDEpICc8JyBpblxuICByXG5cblxubGV0IGh0bWxfdm9pZF9lbGVtZW50cyA9IFN0cmluZ1NldC5vZl9saXN0IFtcbiAgXCJpbWdcIjtcbiAgXCJpbnB1dFwiO1xuICBcImxpbmtcIjtcbiAgXCJtZXRhXCI7XG4gIFwiYnJcIjtcbiAgXCJoclwiO1xuICBcInNvdXJjZVwiO1xuICBcIndiclwiO1xuICBcInBhcmFtXCI7XG4gIFwiZW1iZWRcIjtcbiAgXCJiYXNlXCI7XG4gIFwiYXJlYVwiO1xuICBcImNvbFwiO1xuICBcInRyYWNrXCI7XG4gIFwia2V5Z2VuXCI7XG5dXG5cbmxldCAoIEAgKSBsMSBsMiA9XG4gIExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbDEpIGwyXG4iLCJvcGVuIE9tZF91dGlsc1xub3BlbiBQcmludGZcblxuKCoqIHJlZmVyZW5jZXMsIGluc3RhbmNlcyBjcmVhdGVkIGluIFtPbWRfcGFyc2VyLm1haW5fcGFyc2VdIGFuZFxuICAgIGFjY2Vzc2VkIGluIHRoZSBbT21kX2JhY2tlbmRdIG1vZHVsZS4gKilcbm1vZHVsZSBSID0gTWFwLk1ha2UoU3RyaW5nKVxuY2xhc3MgcmVmX2NvbnRhaW5lciA6IG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIGMgOiAoc3RyaW5nICogc3RyaW5nKSBSLnRcbiAgICBtZXRob2QgYWRkX3JlZiA6IFIua2V5IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCBnZXRfcmVmIDogUi5rZXkgLT4gKHN0cmluZyAqIHN0cmluZykgb3B0aW9uXG4gICAgbWV0aG9kIGdldF9hbGwgOiAoc3RyaW5nICogKHN0cmluZyAqIHN0cmluZykpIGxpc3RcbiAgZW5kID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGMgPSBSLmVtcHR5XG4gIHZhbCBtdXRhYmxlIGMyID0gUi5lbXB0eVxuXG4gIG1ldGhvZCBnZXRfYWxsID0gUi5iaW5kaW5ncyBjXG5cbiAgbWV0aG9kIGFkZF9yZWYgbmFtZSB0aXRsZSB1cmwgPVxuICAgIGMgPC0gUi5hZGQgbmFtZSAodXJsLCB0aXRsZSkgYztcbiAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICBpZiBsbiA8PiBuYW1lIHRoZW4gYzIgPC0gUi5hZGQgbG4gKHVybCwgdGl0bGUpIGMyXG5cbiAgbWV0aG9kIGdldF9yZWYgbmFtZSA9XG4gICAgdHJ5XG4gICAgICBsZXQgKHVybCwgdGl0bGUpIGFzIHIgPVxuICAgICAgICB0cnkgUi5maW5kIG5hbWUgY1xuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgICAgICAgIHRyeSBSLmZpbmQgbG4gY1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBSLmZpbmQgbG4gYzJcbiAgICAgIGluIFNvbWUgclxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBOb25lXG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgfCBIMSBvZiB0XG4gIHwgSDIgb2YgdFxuICB8IEgzIG9mIHRcbiAgfCBINCBvZiB0XG4gIHwgSDUgb2YgdFxuICB8IEg2IG9mIHRcbiAgfCBQYXJhZ3JhcGggb2YgdFxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRW1waCBvZiB0XG4gIHwgQm9sZCBvZiB0XG4gIHwgVWwgb2YgdCBsaXN0XG4gIHwgT2wgb2YgdCBsaXN0XG4gIHwgVWxwIG9mIHQgbGlzdFxuICB8IE9scCBvZiB0IGxpc3RcbiAgfCBDb2RlIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBDb2RlX2Jsb2NrIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBCclxuICB8IEhyXG4gIHwgTkxcbiAgfCBVcmwgb2YgaHJlZiAqIHQgKiB0aXRsZVxuICB8IFJlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIHN0cmluZyAqIGZhbGxiYWNrXG4gIHwgSW1nX3JlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIGFsdCAqIGZhbGxiYWNrXG4gIHwgSHRtbCBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9ibG9jayBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9jb21tZW50IG9mIHN0cmluZ1xuICB8IFJhdyBvZiBzdHJpbmdcbiAgfCBSYXdfYmxvY2sgb2Ygc3RyaW5nXG4gIHwgQmxvY2txdW90ZSBvZiB0XG4gIHwgSW1nIG9mIGFsdCAqIHNyYyAqIHRpdGxlXG4gIHwgWCBvZlxuICAgICAgPCBuYW1lIDogc3RyaW5nO1xuICAgICAgICB0b19odG1sIDogP2luZGVudDppbnQgLT4gKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3NleHByIDogKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3QgOiB0IC0+IHQgb3B0aW9uID5cbmFuZCBmYWxsYmFjayA9IDwgdG9fc3RyaW5nIDogc3RyaW5nIDsgdG9fdCA6IHQgPlxuYW5kIG5hbWUgPSBzdHJpbmdcbmFuZCBhbHQgPSBzdHJpbmdcbmFuZCBzcmMgPSBzdHJpbmdcbmFuZCBocmVmID0gc3RyaW5nXG5hbmQgdGl0bGUgPSBzdHJpbmdcbmFuZCB0ID0gZWxlbWVudCBsaXN0XG5cblxubGV0IHJlYyBsb29zZV9jb21wYXJlIHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICB8IEgxIGUxOjp0bDEsIEgxIGUyOjp0bDJcbiAgfCBIMiBlMTo6dGwxLCBIMiBlMjo6dGwyXG4gIHwgSDMgZTE6OnRsMSwgSDMgZTI6OnRsMlxuICB8IEg0IGUxOjp0bDEsIEg0IGUyOjp0bDJcbiAgfCBINSBlMTo6dGwxLCBINSBlMjo6dGwyXG4gIHwgSDYgZTE6OnRsMSwgSDYgZTI6OnRsMlxuICB8IEVtcGggZTE6OnRsMSwgRW1waCBlMjo6dGwyXG4gIHwgQm9sZCBlMTo6dGwxLCBCb2xkIGUyOjp0bDJcbiAgfCBCbG9ja3F1b3RlIGUxOjp0bDEsIEJsb2NrcXVvdGUgZTI6OnRsMlxuICB8IFBhcmFncmFwaCBlMTo6dGwxLCBQYXJhZ3JhcGggZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgVWwgZTE6OnRsMSwgVWwgZTI6OnRsMlxuICB8IE9sIGUxOjp0bDEsIE9sIGUyOjp0bDJcbiAgfCBVbHAgZTE6OnRsMSwgVWxwIGUyOjp0bDJcbiAgfCBPbHAgZTE6OnRsMSwgT2xwIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZV9saXN0cyBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IChDb2RlIF8gYXMgZTEpOjp0bDEsIChDb2RlIF8gYXMgZTIpOjp0bDJcbiAgfCAoQnIgYXMgZTEpOjp0bDEsIChCciBhcyBlMik6OnRsMlxuICB8IChIciBhcyBlMSk6OnRsMSwgKEhyIGFzIGUyKTo6dGwyXG4gIHwgKE5MIGFzIGUxKTo6dGwxLCAoTkwgYXMgZTIpOjp0bDJcbiAgfCAoSHRtbCBfIGFzIGUxKTo6dGwxLCAoSHRtbCBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKEh0bWxfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChSYXcgXyBhcyBlMSk6OnRsMSwgKFJhdyBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhd19ibG9jayBfIGFzIGUxKTo6dGwxLCAoUmF3X2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9jb21tZW50IF8gYXMgZTEpOjp0bDEsIChIdG1sX2NvbW1lbnQgXyBhcyBlMik6OnRsMlxuICB8IChJbWcgXyBhcyBlMSk6OnRsMSwgKEltZyBfIGFzIGUyKTo6dGwyXG4gIHwgKFRleHQgXyBhcyBlMSk6OnRsMSwgKFRleHQgXyBhcyBlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgQ29kZV9ibG9jayhsMSxjMSk6OnRsMSwgQ29kZV9ibG9jayhsMixjMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGwxIGwyLCBTdHJpbmcubGVuZ3RoIGMxIC0gU3RyaW5nLmxlbmd0aCBjMiB3aXRoXG4gICAgICAgICB8IDAsIDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSBjMiB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIChjMl5cIlxcblwiKSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAtMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIChjMV5cIlxcblwiKSBjMiB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpLCBfIC0+IGlcbiAgICAgIClcblxuICB8IFVybCAoaHJlZjEsIHQxLCB0aXRsZTEpOjp0bDEsIFVybCAoaHJlZjIsIHQyLCB0aXRsZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBocmVmMSBocmVmMiB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGxvb3NlX2NvbXBhcmUgdDEgdDIgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSB0aXRsZTEgdGl0bGUyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgUmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIFJlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gIHwgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBJbWdfcmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChuYW1lMSwgeDEpIChuYW1lMiwgeDIpIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIGxldCBjZmYgPVxuICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sxI3RvX3N0cmluZyA9IGZhbGxiYWNrMiN0b19zdHJpbmcgdGhlblxuICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvb3NlX2NvbXBhcmUgKGZhbGxiYWNrMSN0b190KSAoZmFsbGJhY2syI3RvX3QpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGNmZiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgKHJlZl9jb250YWluZXIxI2dldF9hbGwpIChyZWZfY29udGFpbmVyMiNnZXRfYWxsKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNmZlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBYIGUxOjp0bDEsIFggZTI6OnRsMiAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKGUxI25hbWUpIChlMiNuYW1lKSB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgKGUxI3RvX3QpIChlMiN0b190KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG4gIHwgWCBfOjpfLCBfIC0+IDFcbiAgfCBfLCBYIF86Ol8gLT4gLTFcbiAgfCBfIC0+IGNvbXBhcmUgdDEgdDJcblxuYW5kIGxvb3NlX2NvbXBhcmVfbGlzdHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT5cbiAgICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZV9saXN0cyB0bDEgdGwyXG4gICAgICAgICAgIHwgaSAtPiBpKVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgXyAtPiAtMVxuXG5cbnR5cGUgdG9rID0gKCogQ3MobikgbWVhbnMgKG4rMikgdGltZXMgQyAqKVxufCBBbXBlcnNhbmRcbnwgQW1wZXJzYW5kcyBvZiBpbnRcbnwgQXRcbnwgQXRzIG9mIGludFxufCBCYWNrcXVvdGVcbnwgQmFja3F1b3RlcyBvZiBpbnRcbnwgQmFja3NsYXNoXG58IEJhY2tzbGFzaHMgb2YgaW50XG58IEJhclxufCBCYXJzIG9mIGludFxufCBDYXJldFxufCBDYXJldHMgb2YgaW50XG58IENicmFjZVxufCBDYnJhY2VzIG9mIGludFxufCBDb2xvblxufCBDb2xvbnMgb2YgaW50XG58IENvbW1hXG58IENvbW1hcyBvZiBpbnRcbnwgQ3BhcmVudGhlc2lzXG58IENwYXJlbnRoZXNpc3Mgb2YgaW50XG58IENicmFja2V0XG58IENicmFja2V0cyBvZiBpbnRcbnwgRG9sbGFyXG58IERvbGxhcnMgb2YgaW50XG58IERvdFxufCBEb3RzIG9mIGludFxufCBEb3VibGVxdW90ZVxufCBEb3VibGVxdW90ZXMgb2YgaW50XG58IEV4Y2xhbWF0aW9uXG58IEV4Y2xhbWF0aW9ucyBvZiBpbnRcbnwgRXF1YWxcbnwgRXF1YWxzIG9mIGludFxufCBHcmVhdGVydGhhblxufCBHcmVhdGVydGhhbnMgb2YgaW50XG58IEhhc2hcbnwgSGFzaHMgb2YgaW50XG58IExlc3N0aGFuXG58IExlc3N0aGFucyBvZiBpbnRcbnwgTWludXNcbnwgTWludXNzIG9mIGludFxufCBOZXdsaW5lXG58IE5ld2xpbmVzIG9mIGludFxufCBOdW1iZXIgb2Ygc3RyaW5nXG58IE9icmFjZVxufCBPYnJhY2VzIG9mIGludFxufCBPcGFyZW50aGVzaXNcbnwgT3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgT2JyYWNrZXRcbnwgT2JyYWNrZXRzIG9mIGludFxufCBQZXJjZW50XG58IFBlcmNlbnRzIG9mIGludFxufCBQbHVzXG58IFBsdXNzIG9mIGludFxufCBRdWVzdGlvblxufCBRdWVzdGlvbnMgb2YgaW50XG58IFF1b3RlXG58IFF1b3RlcyBvZiBpbnRcbnwgU2VtaWNvbG9uXG58IFNlbWljb2xvbnMgb2YgaW50XG58IFNsYXNoXG58IFNsYXNocyBvZiBpbnRcbnwgU3BhY2VcbnwgU3BhY2VzIG9mIGludFxufCBTdGFyXG58IFN0YXJzIG9mIGludFxufCBUYWJcbnwgVGFicyBvZiBpbnRcbnwgVGlsZGVcbnwgVGlsZGVzIG9mIGludFxufCBVbmRlcnNjb3JlXG58IFVuZGVyc2NvcmVzIG9mIGludFxufCBXb3JkIG9mIHN0cmluZ1xufCBUYWcgb2YgbmFtZSAqIGV4dGVuc2lvblxuXG5hbmQgZXh0ZW5zaW9uID0gPFxuICBwYXJzZXJfZXh0ZW5zaW9uIDpcbiAgICB0IC0+IHRvayBsaXN0IC0+IHRvayBsaXN0IC0+ICgodCAqIHRvayBsaXN0ICogdG9rIGxpc3QpIG9wdGlvbik7XG4gIHRvX3N0cmluZyA6IHN0cmluZ1xuPlxuXG50eXBlIGV4dGVuc2lvbnMgPSBleHRlbnNpb24gbGlzdFxuXG5sZXQgZW1wdHlfZXh0ZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gTm9uZVxuICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuZW5kXG5cbmxldCByZWMgbm9ybWFsaXNlX21kIGwgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgZXByaW50ZiBcIihPTUQpIG5vcm1hbGlzZV9tZFxcbiUhXCI7XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO11cbiAgICB8IFtOTDtOTF1cbiAgICB8IFtOTF0gLT4gW11cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBOTDo6Tkw6Ok5MOjp0bCAtPiBsb29wIChOTDo6Tkw6OnRsKVxuICAgIHwgVGV4dCB0MTo6VGV4dCB0Mjo6dGwgLT4gbG9vcCAoVGV4dCh0MV50Mik6OnRsKVxuICAgIHwgTkw6OigoKFBhcmFncmFwaCBffEgxIF98SDIgX3xIMyBffEg0IF98SDUgX3xINiBfXG4gICAgICAgICAgICB8Q29kZV9ibG9jayBffE9sIF98VWwgX3xPbHAgX3xVbHAgXyk6Ol8pIGFzIHRsKSAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbVGV4dCBcIiBcIl06OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGgocCk6OnRsIC0+IFBhcmFncmFwaChsb29wIHApOjpsb29wIHRsXG4gICAgfCBIMSB2Ojp0bCAtPiBIMShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMiB2Ojp0bCAtPiBIMihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMyB2Ojp0bCAtPiBIMyhsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINCB2Ojp0bCAtPiBINChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINSB2Ojp0bCAtPiBINShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINiB2Ojp0bCAtPiBINihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBFbXBoIHY6OnRsIC0+IEVtcGgobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQm9sZCB2Ojp0bCAtPiBCb2xkKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVsIHY6OnRsIC0+IFVsKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9sIHY6OnRsIC0+IE9sKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVscCB2Ojp0bCAtPiBVbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2xwIHY6OnRsIC0+IE9scChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHY6OnRsIC0+IEJsb2NrcXVvdGUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVXJsKGhyZWYsdix0aXRsZSk6OnRsIC0+IFVybChocmVmLChsb29wIHYpLHRpdGxlKTo6bG9vcCB0bFxuICAgIHwgVGV4dCBfXG4gICAgfCBDb2RlIF9cbiAgICB8IENvZGVfYmxvY2sgX1xuICAgIHwgQnJcbiAgICB8IEhyXG4gICAgfCBOTFxuICAgIHwgUmVmIF9cbiAgICB8IEltZ19yZWYgX1xuICAgIHwgSHRtbCBfXG4gICAgfCBIdG1sX2Jsb2NrIF9cbiAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgfCBSYXcgX1xuICAgIHwgUmF3X2Jsb2NrIF9cbiAgICB8IEltZyBfXG4gICAgfCBYIF8gYXMgdjo6dGwgLT4gdjo6bG9vcCB0bFxuICBpblxuICBsZXQgYSA9IGxvb3AgbCBpblxuICBsZXQgYiA9IGxvb3AgYSBpblxuICBpZiBhID0gYiB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgbm9ybWFsaXNlX21kIGJcblxuXG5cbmxldCBkdW1teV9YID1cbiAgWCAob2JqZWN0XG4gICAgbWV0aG9kIG5hbWUgPSBcImR1bW15XCJcbiAgICBtZXRob2QgdG9faHRtbCA/KGluZGVudD0wKSBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3NleHByIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fdCBfID0gTm9uZVxuICBlbmQpXG5cblxubGV0IHJlYyB2aXNpdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFBhcmFncmFwaCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBQYXJhZ3JhcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgxIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDIgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgyKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMyB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMyh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg0KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg2IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgRW1waCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gRW1waCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQm9sZCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQm9sZCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWwgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWwoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2wgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2woTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWxwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVscChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2xwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJsb2NrcXVvdGUgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQmxvY2txdW90ZSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVXJsKGhyZWYsdix0aXRsZSkgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVybChocmVmLHZpc2l0IGYgdix0aXRsZSk6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBUZXh0IHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZ19yZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWwgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfY29tbWVudCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXdfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZyAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFggIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQnI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSHI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBOTCBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gTkw6OnZpc2l0IGYgdGxcbiAgICBlbmRcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29kZV9zdHlsaXN0ID0gbGFuZzpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5cbmxldCBkZWZhdWx0X2xhbmd1YWdlID0gcmVmIFwiXCJcblxuXG5cbmxldCB0ZXh0X29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCBfIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBsb29wIHE7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbCBsIHwgT2wgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gaXRlbSAtPiBsb29wIGl0ZW07IEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nKSBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWxwIGwgfCBPbHAgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIGxvb3AgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bFxuICAgIHwgSDIgbWQgOjogdGxcbiAgICB8IEgzIG1kIDo6IHRsXG4gICAgfCBINCBtZCA6OiB0bFxuICAgIHwgSDUgbWQgOjogdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBkZWZhdWx0X2NvZGVfc3R5bGlzdCB+bGFuZyBjb2RlID0gY29kZVxuXG5sZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICB8IGU6OnRsIC0+XG4gICAgICBsb29wIGIgKGU6OnIpIHRsXG4gIGluXG4gIGxvb3AgZmFsc2UgW10gbFxuXG5sZXQgcmVtb3ZlX2xpbmtzIDogdCAtPiB0ID1cbiAgT21kX3JlcHJlc2VudGF0aW9uLnZpc2l0XG4gICAgKGZ1biBlIC0+XG4gICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCBVcmwoXywgdCwgXykgLT4gU29tZSB0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcblxubGV0IHJlYyBodG1sX2FuZF9oZWFkZXJzX29mX21kXG4gICAgPyhyZW1vdmVfaGVhZGVyX2xpbmtzPWZhbHNlKVxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzOihjb2RlX3N0eWxlPWRlZmF1bHRfY29kZV9zdHlsaXN0KVxuICAgIG1kXG4gID1cbiAgbGV0IGlkcyA9IG9iamVjdCh0aGlzKVxuICAgIHZhbCBtdXRhYmxlIGlkcyA9IFN0cmluZ1NldC5hZGQgXCJcIiBTdHJpbmdTZXQuZW1wdHlcbiAgICBtZXRob2QgbWFuZ2xlIGlkID1cbiAgICAgIGxldCByZWMgbSBpID1cbiAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZCBpZHMgdGhlblxuICAgICAgICAgIGxldCBpZHggPSBpZiBpID4gMCB0aGVuIGlkXlwiX1wiXnN0cmluZ19vZl9pbnQgaSBlbHNlIGlkIGluXG4gICAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZHggaWRzIHRoZW5cbiAgICAgICAgICAgIG0gKGkrMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWR4IGlkcztcbiAgICAgICAgICAgICBpZHgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWQgaWRzO1xuICAgICAgICAgICBpZClcbiAgICAgIGluIG0gMFxuICBlbmQgaW5cbiAgbGV0IGVtcHR5IHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcbicgLT4gbG9vcCAoaSsxKVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIGluXG4gIGxldCByZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCAwIHRoZW4gXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnfCdcXHQnfCdcXG4nIC0+XG4gICAgICAgICAgbG9vcCAocHJlZCBpKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSB0aGVuXG4gICAgICAgICAgICBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGhlYWRlcnMgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBsb29wIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGluZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OmluZGVudFxuICAgICAgICAgICAgICAgKGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSkgbWRcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCbG9ja3F1b3RlIHEgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBxO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2Jsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoaHJlZiwgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKFVybChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZixcbiAgICAgICAgICAgICAgICAgICAgIFtUZXh0KHRleHQpXSxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSlcbiAgICAgICAgICAgICAgICAgOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKHNyYywgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKEltZyhodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0LFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgICBpZiBlbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cD5cIjtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHJlbW92ZV90cmFpbGluZ19ibGFua3Mgcyk7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9wPlxcblwiO1xuICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aW1nIHNyYz0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgYWx0PSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIChCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBUZXh0IHQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDsgKilcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgRW1waCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxlbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9lbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCb2xkIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHN0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9zdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKFVsIGx8T2wgbHxVbHAgbHxPbHAgbCBhcyBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8b2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPHVsPlwiKTtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxsaT5cIjtcbiAgICAgICAgICAgICAgICBsb29wIChpbmRlbnQrMikgbGk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvbGk+XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGw7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjwvb2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPC91bD5cIik7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cHJlPjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIlxuICAgICAgICAgICAgICAhZGVmYXVsdF9sYW5ndWFnZSAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmcgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPjwvcHJlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGUobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxici8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aHIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhdyBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3X2Jsb2NrIHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgYXMgZSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiIC8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBIdG1sX2NvbW1lbnQgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgcyBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YSBocmVmPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2E+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgxIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgxIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgxIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDE+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgyIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgyIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgyIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgzIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgzIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgzIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDM+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg0IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg0IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg0IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDQ+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg1IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg1IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg1IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg2IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg2IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg2IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDY+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgTkwgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIG5sMmJyIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgaW5cbiAgbG9vcCAwIG1kO1xuICBCdWZmZXIuY29udGVudHMgYiwgTGlzdC5yZXYgIWhlYWRlcnNcblxuYW5kIHN0cmluZ19vZl9hdHRycyBhdHRycyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgZWxzZSBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgKCogaWYgaHRtbDQgdGhlbiAqKVxuICAgICAgICAoKiAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgYSAqKVxuICAgICAgICAoKiBlbHNlICopXG4gICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5hbmQgaHRtbF9vZl9tZFxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzXG4gICAgbWRcbiAgPVxuICBmc3QgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciA/Y3MgbWQpXG5hbmQgaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZCA9XG4gIHNuZCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZClcblxuXG5sZXQgcmVjIHNleHByX29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgbG9vcCB0O1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4I3RvX3NleHByIHNleHByX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQmxvY2txdW90ZVwiO1xuICAgICAgICBsb29wIHE7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJlZiAlUyAlUylcIiBuYW1lIHRleHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZ19yZWYgJVMgJVMpXCIgbmFtZSBhbHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFBhcmFncmFwaFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nICVTICVTICVTKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVGV4dCAlU1wiIHQ7XG4gICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIiAlU1wiIHQ7XG4gICAgICAgICAgICBmIHRsXG4gICAgICAgICAgfCB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRsID0gZiB0bCBpblxuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihFbXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCb2xkXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9sXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlICVTKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGVfYmxvY2sgJXMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhdyAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3X2Jsb2NrICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9ibG9jayAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfY29tbWVudCAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVybCAlUyAlUyAlUylcIiBocmVmIChodG1sX29mX21kIHMpIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgxXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDJcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIM1wiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg0XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDVcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKE5MKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICogMikgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnLicgYXMgYyAtPlxuICAgICAgICBpZiBpID4gMCAmJlxuICAgICAgICAgICBtYXRjaCBzLltpLTFdIHdpdGhcbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICctJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIChzLltpKzFdID0gJyAnfHxzLltpKzFdID0gJy0nKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnKycgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICchJyBhcyBjIC0+XG4gICAgICAgIGlmIGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJ1snIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJzwnIGFzIGMgLT5cbiAgICAgICAgaWYgaSA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxICYmXG4gICAgICAgICAgICAgKG1hdGNoIHMuW2krMV0gd2l0aCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPicgYXMgYyAtPlxuICAgICAgICBpZiBpID0gMCB8fFxuICAgICAgICAgICAgIChtYXRjaCBzLltpLTFdIHdpdGggJyAnIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyMnIGFzIGMgLT5cbiAgICAgICAgIGlmIGkgPSAwIHx8IHMuW2ktMV0gPSAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJ1xcXFwnIHwgJ1snIHwgJ10nIHwgJygnIHwgJyknIHwgJ2AnIHwgJyonIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgIGRvbmU7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJlYyBtYXJrZG93bl9vZl9tZCBtZCA9XG4gIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKVxcbiUhXCIgKHNleHByX29mX21kIG1kKTtcbiAgbGV0IHF1b3RlID8oaW5kZW50PTApIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBsb29wIG5sIGkgPVxuICAgICAgaWYgaSA8IGwgdGhlblxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmIG5sICYmIGkgPCBsIC0gMSB0aGVuXG4gICAgICAgICAgICAoZm9yIGkgPSAxIHRvIGluZGVudCBkb1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnXG4gICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPiBcIik7XG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBpbiBsb29wIHRydWUgMFxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGFkZF9zcGFjZXMgbiA9IGZvciBpID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICcgJyBkb25lIGluXG4gIGxldCByZWZlcmVuY2VzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wID8oZnN0X3BfaW5fbGk9dHJ1ZSkgPyhpc19pbl9saXN0PWZhbHNlKSBsaXN0X2luZGVudCBsID1cbiAgICAoKiBbbGlzdF9pbmRlbnQ6IGludF0gaXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIG51bWJlciBvZiBzcGFjZXMuICopXG4gICAgKCogW2lzX2luX2xpc3Q6IGJvb2xdIGlzIG5lY2Vzc2FyeSB0byBrbm93IGlmIHdlIGFyZSBpbnNpZGUgYSBwYXJhZ3JhcGhcbiAgICAgICB3aGljaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0gYmVjYXVzZSB0aG9zZSBuZWVkIHRvIGJlIGluZGVudGVkISAqKVxuICAgIGxldCBsb29wID8oZnN0X3BfaW5fbGk9ZnN0X3BfaW5fbGkpID8oaXNfaW5fbGlzdD1pc19pbl9saXN0KSBsaXN0X2luZGVudCBsID1cbiAgICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZnN0X3BfaW5fbGkgfmlzX2luX2xpc3Q6aXNfaW5fbGlzdCBsaXN0X2luZGVudCBsXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBsaXN0X2luZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChxdW90ZSB+aW5kZW50Omxpc3RfaW5kZW50IChtYXJrZG93bl9vZl9tZCBxKSk7XG4gICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICBpZiBpc19pbl9saXN0IHRoZW5cbiAgICAgICAgaWYgZnN0X3BfaW5fbGkgdGhlblxuICAgICAgICAgIGFkZF9zcGFjZXMgKGxpc3RfaW5kZW50LTIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiXFxuXFxuXCI7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIhWyVzXSglcyBcXFwiJXNcXFwiKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyB0KTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIGM7XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIi0gXCI7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGluY3IgYztcbiAgICAgICAgYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICApIGw7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgYnByaW50ZiBiIFwiKyBcIjtcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6X1xuICAgICAgfCBOTDo6KEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbidcbiAgICAgIHwgXyAtPiAoKVxuICAgICAgZW5kO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZShfbGFuZywgYykgOjogdGwgLT4gKCogRklYTUUgKilcbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgKG46aW50KSAoczppbnQgbGlzdCkgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyB4IGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICB8IFtdIC0+IHgrMVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyB4IChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgKG1heCBiIHgpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFsxOzI7Mzs0OzU7Njs3Ozg7OTsxMF0gMCAwIDBcbiAgICAgIGluXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBpZiBjLlswXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiBjO1xuICAgICAgICAgIGlmIGMuW1N0cmluZy5sZW5ndGggYyAtIDFdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciBuIHMgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICAgIHwgW10gLT4gMFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFszOzQ7NTs2Ozc7ODs5OzEwXSAwIDBcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X2luZGVudGVkX2Jsb2NrIG4gcyA9XG4gICAgICAgIGxldCByZWMgbG9vcCBwIGkgPVxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnICcpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgaW4gbG9vcCAnXFxuJyAwXG4gICAgICBpblxuICAgICAgICBpZiBuID0gMCB0aGVuICAoKiBGSVhNRSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAoKiBjYXNlIHdoZXJlIHdlIGNhbid0IHVzZSBiYWNrcXVvdGVzICopXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAoNCtsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpXG4gICAgICAgICAgICAgIChpZiBsYW5nID0gXCJcIiB0aGVuICFkZWZhdWx0X2xhbmd1YWdlIGVsc2UgbGFuZyk7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKGxpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiogKiAqXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IChIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSk6OnRsIC0+XG4gICAgICBsZXQgbmVlZHNfbmV3bGluZXMgPVxuICAgICAgICBtYXRjaCB0bCB3aXRoXG4gICAgICAgIHwgTkwgOjogUGFyYWdyYXBoIHAgOjogX1xuICAgICAgICB8IFBhcmFncmFwaCBwIDo6IF8gLT4gcCA8PiBbXVxuICAgICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgICB8IFVsIF8gfCBPbCBfIHwgVWxwIF8gfCBPbHAgXyB8IENvZGUgKF8sIF8pIHwgQ29kZV9ibG9jayAoXywgXylcbiAgICAgICAgICB8IFRleHQgXyB8IEVtcGggXyB8IEJvbGQgXyB8IEJyIHxIciB8IFVybCAoXywgXywgXylcbiAgICAgICAgICB8IFJlZiAoXywgXywgXywgXykgfCBJbWdfcmVmIChfLCBfLCBfLCBfKVxuICAgICAgICAgIHwgSHRtbCAoXywgXywgXylcbiAgICAgICAgICB8IEJsb2NrcXVvdGUgXyB8IEltZyAoXywgXywgXykpIDo6IF8gLT4gdHJ1ZVxuICAgICAgICB8ICggSHRtbF9ibG9jayAoXywgXywgXykgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgICAgIHwgUmF3IF98UmF3X2Jsb2NrIF8pIDo6IF8tPiBmYWxzZVxuICAgICAgICB8IFggXyA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgTkwgOjogXyAtPiBmYWxzZVxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAoXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgICBlbHNlXG4gICAgICAgIChcbiAgICAgICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWZcbiAgICAgIGVsc2VcbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcyBcXFwiJXNcXFwiKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA9IDFcbiAgICAgIHx8IChCdWZmZXIubGVuZ3RoIGIgPiAxICYmXG4gICAgICAgICAgbm90KEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPSAnXFxuJ1xuICAgICAgICAgICAgICAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDIpID0gJ1xcbicpKVxuICAgICAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIDAgbWQ7XG4gICAgYmVnaW4gbWF0Y2ggIXJlZmVyZW5jZXMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAobmFtZSwgKHVybCwgdGl0bGUpKSAtPlxuICAgICAgICAgICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxuXCIgbmFtZSB1cmxcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxcIiVzXFxcIlxcblwiIG5hbWUgdXJsIHRpdGxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByI2dldF9hbGxcbiAgICBlbmQ7XG4gICAgbGV0IHJlcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKSA9PiAlU1xcbiUhXCJcbiAgICAgICAgKHNleHByX29mX21kIG1kKSByZXM7XG4gICAgcmVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEltcGxlbWVudGF0aW9uIG5vdGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAqIC0gVGhpcyBtb2R1bGUgc2hvdWxkIGRlcGVuZCBvbiBPQ2FtbCdzIHN0YW5kYXJkIGxpYnJhcnkgb25seSBhbmRcbiAgICogc2hvdWxkIGJlIGFzICdwdXJlIE9DYW1sJyAoaS5lLiBkZXBlbmQgYXMgbGVhc3QgYXMgcG9zc2libGUgb25cbiAgICogZXh0ZXJuYWwgdG9vbHMpIGFzIHBvc3NpYmxlLlxuXG4gICAqIC0gYHdoaWxlJyBsb29wcyBhcmUgc29tZXRpbWVzIHByZWZlcnJlZCB0byByZWN1cnNpb24gYmVjYXVzZSB0aGlzXG4gICAqIG1heSBiZSB1c2VkIG9uIHN5c3RlbXMgd2hlcmUgdGFpbCByZWN1cnNpb24gaXMgbm90IHdlbGxcbiAgICogc3VwcG9ydGVkLiAoSSB0cmllZCB0byB3cml0ZSBcIndoaWxlXCIgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGJ1dCBpdFxuICAgKiB0dXJuZWQgb3V0IHRoYXQgaXQgd2FzIHByZXR0eSBpbmNvbnZlbmllbnQsIHNvIEkgZG8gdXNlXG4gICAqIHJlY3Vyc2lvbi4gIFdoZW4gSSBoYXZlIHRpbWUsIEknbGwgZG8gc29tZSB0ZXN0cyBhbmQgc2VlIGlmIElcbiAgICogbmVlZCB0byBjb252ZXJ0IHJlY3Vyc2l2ZSBsb29wcyBpbnRvIGl0ZXJhdGl2ZSBsb29wcy4gU29ycnkgaWYgaXRcbiAgICogbWFrZXMgaXQgaGFyZGVyIHRvIHJlYWQuKVxuXG4qKVxuXG4oKiBjbGFzcyB0eXBlIHRhZyA9IG9iamVjdCBtZXRob2QgaXNfbWUgOiAnYS4gJ2EgLT4gYm9vbCBlbmQgKilcblxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cblxudHlwZSB0b2tlbiA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2tcbnR5cGUgdCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuXG5sZXQgc3RyaW5nX29mX3Rva2VuID0gZnVuY3Rpb25cbiAgfCBUYWcgKG5hbWUsIG8pIC0+XG4gICAgaWYgT21kX3V0aWxzLmRlYnVnIHRoZW4gXCJUQUcoXCJebmFtZV5cIilcIiBeIG8jdG9fc3RyaW5nIGVsc2UgbyN0b19zdHJpbmdcbiAgfCBBbXBlcnNhbmQgLT4gXCImXCJcbiAgfCBBbXBlcnNhbmRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJidcbiAgfCBBdCAtPiBcIkBcIlxuICB8IEF0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ0AnXG4gIHwgQmFja3F1b3RlIC0+IFwiYFwiXG4gIHwgQmFja3F1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ2AnXG4gIHwgQmFja3NsYXNoIC0+IFwiXFxcXFwiXG4gIHwgQmFja3NsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcXFwnXG4gIHwgQmFyIC0+IFwifFwiXG4gIHwgQmFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3wnXG4gIHwgQ2FyZXQgLT4gXCJeXCJcbiAgfCBDYXJldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdeJ1xuICB8IENicmFjZSAtPiBcIn1cIlxuICB8IENicmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd9J1xuICB8IENvbG9uIC0+IFwiOlwiXG4gIHwgQ29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOidcbiAgfCBDb21tYSAtPiBcIixcIlxuICB8IENvbW1hcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJywnXG4gIHwgQ3BhcmVudGhlc2lzIC0+IFwiKVwiXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyknXG4gIHwgQ2JyYWNrZXQgLT4gXCJdXCJcbiAgfCBDYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICddJ1xuICB8IERvbGxhciAtPiBcIiRcIlxuICB8IERvbGxhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICckJ1xuICB8IERvdCAtPiBcIi5cIlxuICB8IERvdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcuJ1xuICB8IERvdWJsZXF1b3RlIC0+IFwiXFxcIlwiXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXCInXG4gIHwgRXhjbGFtYXRpb24gLT4gXCIhXCJcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICchJ1xuICB8IEVxdWFsIC0+IFwiPVwiXG4gIHwgRXF1YWxzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPSdcbiAgfCBHcmVhdGVydGhhbiAtPiBcIj5cIlxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz4nXG4gIHwgSGFzaCAtPiBcIiNcIlxuICB8IEhhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnIydcbiAgfCBMZXNzdGhhbiAtPiBcIjxcIlxuICB8IExlc3N0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzwnXG4gIHwgTWludXMgLT4gXCItXCJcbiAgfCBNaW51c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICctJ1xuICB8IE5ld2xpbmUgLT4gXCJcXG5cIlxuICB8IE5ld2xpbmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxuJ1xuICB8IE51bWJlciBzIC0+IHNcbiAgfCBPYnJhY2UgLT4gXCJ7XCJcbiAgfCBPYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAneydcbiAgfCBPcGFyZW50aGVzaXMgLT4gXCIoXCJcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKCdcbiAgfCBPYnJhY2tldCAtPiBcIltcIlxuICB8IE9icmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1snXG4gIHwgUGVyY2VudCAtPiBcIiVcIlxuICB8IFBlcmNlbnRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJSdcbiAgfCBQbHVzIC0+IFwiK1wiXG4gIHwgUGx1c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcrJ1xuICB8IFF1ZXN0aW9uIC0+IFwiP1wiXG4gIHwgUXVlc3Rpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPydcbiAgfCBRdW90ZSAtPiBcIidcIlxuICB8IFF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcJydcbiAgfCBTZW1pY29sb24gLT4gXCI7XCJcbiAgfCBTZW1pY29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOydcbiAgfCBTbGFzaCAtPiBcIi9cIlxuICB8IFNsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy8nXG4gIHwgU3BhY2UgLT4gXCIgXCJcbiAgfCBTcGFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcgJ1xuICB8IFN0YXIgLT4gXCIqXCJcbiAgfCBTdGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyonXG4gIHwgVGFiIC0+IFwiICAgIFwiXG4gIHwgVGFicyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKCgyK24pKjQpICcgJ1xuICB8IFRpbGRlIC0+IFwiflwiXG4gIHwgVGlsZGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfidcbiAgfCBVbmRlcnNjb3JlIC0+IFwiX1wiXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdfJ1xuICB8IFdvcmQgcyAtPiBzXG5cblxubGV0IHNpemVfYW5kX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgfCBUYWcgXyAtPiAoMCwgMClcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlXG4gIHwgQ29sb24gfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90XG4gIHwgRG91YmxlcXVvdGUgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW5cbiAgfCBNaW51cyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudCB8IFBsdXNcbiAgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgLT4gKDEsIDApXG4gIHwgQW1wZXJzYW5kcyB4IHwgQXRzIHggfCBCYWNrcXVvdGVzIHggfCBCYWNrc2xhc2hzIHggfCBCYXJzIHggfCBDYXJldHMgeFxuICB8IENicmFjZXMgeCB8IENvbG9ucyB4IHwgQ29tbWFzIHggfCBDcGFyZW50aGVzaXNzIHggfCBDYnJhY2tldHMgeFxuICB8IERvbGxhcnMgeCB8IERvdHMgeFxuICB8IERvdWJsZXF1b3RlcyB4IHwgRXhjbGFtYXRpb25zIHggfCBFcXVhbHMgeCB8IEdyZWF0ZXJ0aGFucyB4IHwgSGFzaHMgeFxuICB8IExlc3N0aGFucyB4XG4gIHwgTWludXNzIHggfCBPYnJhY2VzIHggfCBPcGFyZW50aGVzaXNzIHggfCBPYnJhY2tldHMgeCB8IFBlcmNlbnRzIHggfCBQbHVzcyB4XG4gIHwgUXVlc3Rpb25zIHggfCBRdW90ZXMgeCB8IFNlbWljb2xvbnMgeCB8IFNsYXNocyB4IHwgU3BhY2VzIHggfCBTdGFycyB4XG4gIHwgVGFicyB4XG4gIHwgVGlsZGVzIHggfCBVbmRlcnNjb3JlcyB4IC0+ICgyK3gsIDApXG4gIHwgTmV3bGluZSAtPiAoMCwgMSlcbiAgfCBOZXdsaW5lcyB4IC0+ICgwLCAyK3gpXG4gIHwgTnVtYmVyIHMgfCBXb3JkIHMgLT4gKFN0cmluZy5sZW5ndGggcywgMClcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IGMsIG5sID0gc2l6ZV9hbmRfbmV3bGluZXMgdCBpblxuICBjICsgbmxcblxubGV0IHNwbGl0X2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBBbXBlcnNhbmRzIG4gLT4gQW1wZXJzYW5kLCAoaWYgbiA+IDAgdGhlbiBBbXBlcnNhbmRzKG4tMSkgZWxzZSBBbXBlcnNhbmQpXG4gIHwgQXRzIG4gLT4gQXQsIChpZiBuID4gMCB0aGVuIEF0cyhuLTEpIGVsc2UgQXQpXG4gIHwgQmFja3F1b3RlcyBuIC0+IEJhY2txdW90ZSwgKGlmIG4gPiAwIHRoZW4gQmFja3F1b3RlcyhuLTEpIGVsc2UgQmFja3F1b3RlKVxuICB8IEJhY2tzbGFzaHMgbiAtPiBCYWNrc2xhc2gsIChpZiBuID4gMCB0aGVuIEJhY2tzbGFzaHMobi0xKSBlbHNlIEJhY2tzbGFzaClcbiAgfCBCYXJzIG4gLT4gQmFyLCAoaWYgbiA+IDAgdGhlbiBCYXJzKG4tMSkgZWxzZSBCYXIpXG4gIHwgQ2FyZXRzIG4gLT4gQ2FyZXQsIChpZiBuID4gMCB0aGVuIENhcmV0cyhuLTEpIGVsc2UgQ2FyZXQpXG4gIHwgQ2JyYWNlcyBuIC0+IENicmFjZSwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNlcyhuLTEpIGVsc2UgQ2JyYWNlKVxuICB8IENvbG9ucyBuIC0+IENvbG9uLCAoaWYgbiA+IDAgdGhlbiBDb2xvbnMobi0xKSBlbHNlIENvbG9uKVxuICB8IENvbW1hcyBuIC0+IENvbW1hLCAoaWYgbiA+IDAgdGhlbiBDb21tYXMobi0xKSBlbHNlIENvbW1hKVxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBDcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIENwYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzKVxuICB8IENicmFja2V0cyBuIC0+IENicmFja2V0LCAoaWYgbiA+IDAgdGhlbiBDYnJhY2tldHMobi0xKSBlbHNlIENicmFja2V0KVxuICB8IERvbGxhcnMgbiAtPiBEb2xsYXIsIChpZiBuID4gMCB0aGVuIERvbGxhcnMobi0xKSBlbHNlIERvbGxhcilcbiAgfCBEb3RzIG4gLT4gRG90LCAoaWYgbiA+IDAgdGhlbiBEb3RzKG4tMSkgZWxzZSBEb3QpXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gRG91YmxlcXVvdGUsIChpZiBuID4gMCB0aGVuIERvdWJsZXF1b3RlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGUpXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gRXhjbGFtYXRpb24sIChpZiBuID4gMCB0aGVuIEV4Y2xhbWF0aW9ucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb24pXG4gIHwgRXF1YWxzIG4gLT4gRXF1YWwsIChpZiBuID4gMCB0aGVuIEVxdWFscyhuLTEpIGVsc2UgRXF1YWwpXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW4sIChpZiBuID4gMCB0aGVuIEdyZWF0ZXJ0aGFucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW4pXG4gIHwgSGFzaHMgbiAtPiBIYXNoLCAoaWYgbiA+IDAgdGhlbiBIYXNocyhuLTEpIGVsc2UgSGFzaClcbiAgfCBMZXNzdGhhbnMgbiAtPiBMZXNzdGhhbiwgKGlmIG4gPiAwIHRoZW4gTGVzc3RoYW5zKG4tMSkgZWxzZSBMZXNzdGhhbilcbiAgfCBNaW51c3MgbiAtPiBNaW51cywgKGlmIG4gPiAwIHRoZW4gTWludXNzKG4tMSkgZWxzZSBNaW51cylcbiAgfCBOZXdsaW5lcyBuIC0+IE5ld2xpbmUsIChpZiBuID4gMCB0aGVuIE5ld2xpbmVzKG4tMSkgZWxzZSBOZXdsaW5lKVxuICB8IE9icmFjZXMgbiAtPiBPYnJhY2UsIChpZiBuID4gMCB0aGVuIE9icmFjZXMobi0xKSBlbHNlIE9icmFjZSlcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gT3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBPcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpcylcbiAgfCBPYnJhY2tldHMgbiAtPiBPYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gT2JyYWNrZXRzKG4tMSkgZWxzZSBPYnJhY2tldClcbiAgfCBQZXJjZW50cyBuIC0+IFBlcmNlbnQsIChpZiBuID4gMCB0aGVuIFBlcmNlbnRzKG4tMSkgZWxzZSBQZXJjZW50KVxuICB8IFBsdXNzIG4gLT4gUGx1cywgKGlmIG4gPiAwIHRoZW4gUGx1c3Mobi0xKSBlbHNlIFBsdXMpXG4gIHwgUXVlc3Rpb25zIG4gLT4gUXVlc3Rpb24sIChpZiBuID4gMCB0aGVuIFF1ZXN0aW9ucyhuLTEpIGVsc2UgUXVlc3Rpb24pXG4gIHwgUXVvdGVzIG4gLT4gUXVvdGUsIChpZiBuID4gMCB0aGVuIFF1b3RlcyhuLTEpIGVsc2UgUXVvdGUpXG4gIHwgU2VtaWNvbG9ucyBuIC0+IFNlbWljb2xvbiwgKGlmIG4gPiAwIHRoZW4gU2VtaWNvbG9ucyhuLTEpIGVsc2UgU2VtaWNvbG9uKVxuICB8IFNsYXNocyBuIC0+IFNsYXNoLCAoaWYgbiA+IDAgdGhlbiBTbGFzaHMobi0xKSBlbHNlIFNsYXNoKVxuICB8IFNwYWNlcyBuIC0+IFNwYWNlLCAoaWYgbiA+IDAgdGhlbiBTcGFjZXMobi0xKSBlbHNlIFNwYWNlKVxuICB8IFN0YXJzIG4gLT4gU3RhciwgKGlmIG4gPiAwIHRoZW4gU3RhcnMobi0xKSBlbHNlIFN0YXIpXG4gIHwgVGFicyBuIC0+IFRhYiwgKGlmIG4gPiAwIHRoZW4gVGFicyhuLTEpIGVsc2UgVGFiKVxuICB8IFRpbGRlcyBuIC0+IFRpbGRlLCAoaWYgbiA+IDAgdGhlbiBUaWxkZXMobi0xKSBlbHNlIFRpbGRlKVxuICB8IFVuZGVyc2NvcmVzIG4gLT4gVW5kZXJzY29yZSwgKGlmIG4gPiAwIHRoZW4gVW5kZXJzY29yZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2UgfCBDb2xvblxuICB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3QgfCBEb3VibGVxdW90ZVxuICB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhbiB8IE1pbnVzXG4gIHwgTmV3bGluZSB8IE51bWJlciBfIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50XG4gIHwgUGx1cyB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSB8IFRhZyBfIHwgV29yZCBfIC0+XG4gICAgIGludmFsaWRfYXJnIFwiT21kX2xleGVyLnNwbGl0X2ZpcnN0XCJcblxubW9kdWxlIHR5cGUgSW5wdXQgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXJcbiAgdmFsIHN1YiA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBMZXgoSSA6IElucHV0KSA6XG5zaWdcbiAgdmFsIGxleCA6IEkudCAtPiB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBsZXggKHMgOiBJLnQpID1cbiAgICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsID0gSS5sZW5ndGggcyBpblxuICAgIGxldCByY291bnQgYyA9XG4gICAgICAoKiBbcmNvdW50IGNdIHJldHVybnMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgY29uc2VjdXRpdmVcbiAgICAgICAgIG9jY3VycmVuY2VzIG9mIFtjXS4gIEJ5IHNpZGUtZWZmZWN0LCBpdCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgY291bnRlciBbaV0uICopXG4gICAgICBsZXQgcmVjIGxvb3AgciA9XG4gICAgICAgIGlmICFpID0gbCB0aGVuIHJcbiAgICAgICAgZWxzZSBpZiBJLmdldCBzICFpID0gYyB0aGVuIChpbmNyIGk7IGxvb3AgKHIrMSkpXG4gICAgICAgIGVsc2UgclxuICAgICAgaW5cbiAgICAgIGxvb3AgMVxuICAgIGluXG4gICAgbGV0IHdvcmQgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJydcbiAgICAgICAgICAgIHwgJ1wiJyB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6J1xuICAgICAgICAgICAgfCAnOycgfCAnPicgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLydcbiAgICAgICAgICAgIHwgJyQnIHwgJyUnIHwgJyEnIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgICAgfCBjIC0+IGluY3IgaTsgbG9vcCgpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGxvb3AoKVxuICAgIGluXG4gICAgbGV0IG1heWJlX251bWJlciAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgd2hpbGVcbiAgICAgICAgIWkgPCBsICYmXG4gICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGRvXG4gICAgICAgIGluY3IgaVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnIHwgJ1wiJ1xuICAgICAgICAgIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonIHwgJzsnIHwgJz4nXG4gICAgICAgICAgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLycgfCAnJCcgfCAnJScgfCAnISdcbiAgICAgICAgICB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaSA6PSBzdGFydDtcbiAgICAgICAgICAgICAgd29yZCgpXG4gICAgICAgIGVuZFxuICAgIGluXG5cbiAgICBsZXQgbl9vY2MgYyA9IGluY3IgaTsgcmNvdW50IGMgaW5cblxuICAgIHdoaWxlICFpIDwgbCBkb1xuICAgICAgbGV0IGMgPSBJLmdldCBzICFpIGluXG4gICAgICBsZXQgdyA9IG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2UgZWxzZSBTcGFjZXMgKG4tMilcbiAgICAgICAgfCAnXFx0JyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZXMoMikgZWxzZSBTcGFjZXMoNCpuLTIpXG4gICAgICAgIHwgJ1xcbicgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzIChuLTIpXG4gICAgICAgIHwgJ1xccicgLT4gKCogZWxpbWluYXRpbmcgXFxyIGJ5IGNvbnZlcnRpbmcgYWxsIHN0eWxlcyB0byB1bml4IHN0eWxlICopXG4gICAgICAgICAgaW5jciBpO1xuICAgICAgICAgIGxldCByZWMgY291bnRfcm4geCA9XG4gICAgICAgICAgICBpZiAhaSA8IGwgJiYgSS5nZXQgcyAoIWkpID0gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBpZiAhaSArIDEgPCBsICYmIEkuZ2V0IHMgKCFpKzEpID0gJ1xccicgdGhlblxuICAgICAgICAgICAgICAgIChpIDo9ICFpICsgMjsgY291bnRfcm4gKHgrMSkpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBybiA9IDEgKyBjb3VudF9ybiAwIGluXG4gICAgICAgICAgaWYgcm4gPSAxIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIG5fb2NjIGMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IE5ld2xpbmVcbiAgICAgICAgICAgIHwgeCAtPiBhc3NlcnQoeD49Mik7IE5ld2xpbmVzKHgtMilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYXNzZXJ0KHJuPj0yKTtOZXdsaW5lcyhybi0yKSlcbiAgICAgICAgfCAnIycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEhhc2ggZWxzZSBIYXNocyAobi0yKVxuICAgICAgICB8ICcqJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3RhciBlbHNlIFN0YXJzIChuLTIpXG4gICAgICAgIHwgJy0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBNaW51cyBlbHNlIE1pbnVzcyAobi0yKVxuICAgICAgICB8ICcrJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGx1cyBlbHNlIFBsdXNzIChuLTIpXG4gICAgICAgIHwgJ2AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrcXVvdGUgZWxzZSBCYWNrcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcJycgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVvdGUgZWxzZSBRdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXCInICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3VibGVxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFxcXCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3NsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEJhY2tzbGFzaHMgKG4tMilcbiAgICAgICAgfCAnXycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFVuZGVyc2NvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZXMgKG4tMilcbiAgICAgICAgfCAnWycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9icmFja2V0cyAobi0yKVxuICAgICAgICB8ICddJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNrZXQgZWxzZSBDYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAneycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFjZSBlbHNlIE9icmFjZXMgKG4tMilcbiAgICAgICAgfCAnfScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFjZSBlbHNlIENicmFjZXMgKG4tMilcbiAgICAgICAgfCAnKCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9wYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJyknICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICc6JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29sb24gZWxzZSBDb2xvbnMgKG4tMilcbiAgICAgICAgfCAnOycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNlbWljb2xvbiBlbHNlIFNlbWljb2xvbnMgKG4tMilcbiAgICAgICAgfCAnPicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFucyAobi0yKVxuICAgICAgICB8ICd+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVGlsZGUgZWxzZSBUaWxkZXMgKG4tMilcbiAgICAgICAgfCAnPCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zIChuLTIpXG4gICAgICAgIHwgJ0AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBdCBlbHNlIEF0cyAobi0yKVxuICAgICAgICB8ICcmJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQW1wZXJzYW5kIGVsc2UgQW1wZXJzYW5kcyAobi0yKVxuICAgICAgICB8ICd8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFyIGVsc2UgQmFycyAobi0yKVxuICAgICAgICB8ICdeJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2FyZXQgZWxzZSBDYXJldHMgKG4tMilcbiAgICAgICAgfCAnLCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbW1hIGVsc2UgQ29tbWFzIChuLTIpXG4gICAgICAgIHwgJy4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3QgZWxzZSBEb3RzIChuLTIpXG4gICAgICAgIHwgJy8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTbGFzaCBlbHNlIFNsYXNocyAobi0yKVxuICAgICAgICB8ICckJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG9sbGFyIGVsc2UgRG9sbGFycyAobi0yKVxuICAgICAgICB8ICclJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGVyY2VudCBlbHNlIFBlcmNlbnRzIChuLTIpXG4gICAgICAgIHwgJz0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFcXVhbCBlbHNlIEVxdWFscyAobi0yKVxuICAgICAgICB8ICchJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXhjbGFtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb25zIChuLTIpXG4gICAgICAgIHwgJz8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdWVzdGlvbiBlbHNlIFF1ZXN0aW9ucyAobi0yKVxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gbWF5YmVfbnVtYmVyKClcbiAgICAgICAgfCBjIC0+IHdvcmQoKSBpblxuICAgICAgcmVzdWx0IDo9IHcgOjogIXJlc3VsdFxuICAgIGRvbmU7XG4gICAgTGlzdC5yZXYgIXJlc3VsdFxuZW5kXG5cbm1vZHVsZSBMZXhfc3RyaW5nID0gTGV4KFN0cmluZ0xhYmVscylcbmxldCBsZXggPSBMZXhfc3RyaW5nLmxleFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxubW9kdWxlIEJpZ2FycmF5X2lucHV0IDogSW5wdXQgd2l0aCB0eXBlIHQgPSBiaWdzdHJpbmcgPVxuc3RydWN0XG4gIG1vZHVsZSBCQSA9IEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gYmlnc3RyaW5nXG4gIGxldCBnZXQgPSBCQS5BcnJheTEuZ2V0XG4gIGxldCBsZW5ndGggPSBCQS5BcnJheTEuZGltXG4gIGxldCBzdWIgYXJyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBwb3MgPCAwIHx8IHBvcyArIGxlbiA+IEJBLkFycmF5MS5kaW0gYXJyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5X2lucHV0LnN1YlwiO1xuICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IHMgaSAoQkEuQXJyYXkxLnVuc2FmZV9nZXQgYXJyIChpICsgcG9zKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuZW5kXG5tb2R1bGUgTGV4X2JpZ2FycmF5ID0gTGV4KEJpZ2FycmF5X2lucHV0KVxubGV0IGxleF9iaWdhcnJheSA9IExleF9iaWdhcnJheS5sZXhcblxubGV0IG1ha2Vfc3BhY2UgPSBmdW5jdGlvblxuICB8IDAgLT4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiXG4gIHwgMSAtPiBTcGFjZVxuICB8IG4gLT4gaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCIgZWxzZSBTcGFjZXMgKG4tMilcblxuXG4oKlxuKCoqIFtzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGwuXG4gICAgW2VzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbFxuICAgIChzYW1lIHNlbWFudGljcyBhcyBbU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90bCBsKV0pLiAqKVxubGV0IHN0cmluZ19vZl90bCwgZXN0cmluZ19vZl90bCA9XG4gIGxldCBnIGVzY2FwZWQgdGwgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA0MiBpblxuICAgIGxldCByZWMgbG9vcCA6ICdhIHQgbGlzdCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChpZiBlc2NhcGVkIHRoZW4gU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90IGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzdHJpbmdfb2ZfdCBlKTtcbiAgICAgICAgICBsb29wIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIHRsOyBiKVxuICBpbiBnIGZhbHNlLCBnIHRydWVcbiopXG5cbmxldCBzdHJpbmdfb2ZfdG9rZW5zIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBMaXN0Lml0ZXIgKGZ1biBlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl90b2tlbiBlKSkgdGw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGRlc3RyaW5nX29mX3Rva2VucyA/KGxpbWl0PW1heF9pbnQpIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIChpOmludCkgKHRsaXN0OnRvayBsaXN0KSA6IHVuaXQgPSBtYXRjaCB0bGlzdCB3aXRoXG4gICAgfCBlOjp0bCAtPlxuICAgICAgICBpZiBsaW1pdCA9IGkgdGhlblxuICAgICAgICAgIGxvb3AgaSBbXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdG9rZW4gZSkpO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjo6XCI7XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpIHRsXG4gICAgICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiW11cIlxuICBpblxuICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCAwIHRsOyBiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMtMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgc2RlYnVnID0gdHJ1ZVxuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5tb2R1bGUgTCA9IE9tZF9sZXhlclxuXG50eXBlIHIgPSBPbWRfcmVwcmVzZW50YXRpb24udFxuKCoqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcblxuYW5kIHAgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiBjb250ZXh0IGluZm9ybWF0aW9uOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuXG5hbmQgbCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIHRva2VucyB0byBwYXJzZSAqKVxuXG5hbmQgbWFpbl9sb29wID1cbiAgP2h0bWw6Ym9vbCAtPlxuICByIC0+ICgqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcbiAgcCAtPiAoKiBpbmZvOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuICBsIC0+ICgqIHRva2VucyB0byBwYXJzZSAqKVxuICBPbWRfcmVwcmVzZW50YXRpb24udCAoKiBmaW5hbCByZXN1bHQgKilcbigqKiBtb3N0IGltcG9ydGFudCBsb29wICopXG5cblxuKCoqIE4uQi4gUGxlYXNlIGRvIG5vdCB1c2UgdGFidWxhdGlvbnMgaW4geW91ciBNYXJrZG93biBmaWxlISAqKVxuXG5tb2R1bGUgdHlwZSBFbnYgPSBzaWdcbiAgdmFsIHJjOiBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICB2YWwgZXh0ZW5zaW9ucyA6IE9tZF9yZXByZXNlbnRhdGlvbi5leHRlbnNpb25zXG4gIHZhbCBkZWZhdWx0X2xhbmcgOiBzdHJpbmdcbiAgdmFsIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgOiBib29sXG4gIHZhbCBibGluZF9odG1sIDogYm9vbFxuICB2YWwgc3RyaWN0X2h0bWwgOiBib29sXG4gIHZhbCB3YXJuaW5nIDogYm9vbFxuICB2YWwgd2Fybl9lcnJvciA6IGJvb2xcbmVuZFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdCBlbmRcblxubW9kdWxlIERlZmF1bHRfZW52IChVbml0OnNpZyBlbmQpIDogRW52ID0gc3RydWN0XG4gIGxldCByYyA9IG5ldyBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICBsZXQgZXh0ZW5zaW9ucyA9IFtdXG4gIGxldCBkZWZhdWx0X2xhbmcgPSBcIlwiXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlID0gdHJ1ZVxuICBsZXQgYmxpbmRfaHRtbCA9IGZhbHNlXG4gIGxldCBzdHJpY3RfaHRtbCA9IGZhbHNlXG4gIGxldCB3YXJuaW5nID0gZmFsc2VcbiAgbGV0IHdhcm5fZXJyb3IgPSBmYWxzZVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbnY6RW52KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBFbnZcblxuICBsZXQgd2FybiA9IE9tZF91dGlscy53YXJuIH53ZTp3YXJuX2Vycm9yXG5cbiAgKCoqIHNldCBvZiBrbm93biBIVE1MIGNvZGVzICopXG4gIGxldCBodG1sY29kZXNfc2V0ID0gU3RyaW5nU2V0Lm9mX2xpc3QgKCogVGhpcyBsaXN0IHNob3VsZCBiZSBjaGVja2VkLi4uICopXG4gICAgICAoKiBsaXN0IGV4dHJhY3RlZCBmcm9tOiBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9jaGFyc2V0Lmh0bWwgKilcbiAgICAgIFsgXCJBRWxpZ1wiOyAgXCJBYWN1dGVcIjsgIFwiQWNpcmNcIjsgIFwiQWdyYXZlXCI7IFwiQWxwaGFcIjsgIFwiQXJpbmdcIjsgIFwiQXRpbGRlXCI7XG4gICAgICAgIFwiQXVtbFwiOyBcIkJldGFcIjsgIFwiQ2NlZGlsXCI7IFwiQ2hpXCI7IFwiRGFnZ2VyXCI7ICBcIkRlbHRhXCI7IFwiRVRIXCI7IFwiRWFjdXRlXCI7XG4gICAgICAgIFwiRWNpcmNcIjsgIFwiRWdyYXZlXCI7ICBcIkVwc2lsb25cIjsgICBcIkV0YVwiOyAgXCJFdW1sXCI7ICBcIkdhbW1hXCI7ICBcIklhY3V0ZVwiO1xuICAgICAgICBcIkljaXJjXCI7IFwiSWdyYXZlXCI7IFwiSW90YVwiOyAgXCJJdW1sXCI7IFwiS2FwcGFcIjsgXCJMYW1iZGFcIjsgXCJNdVwiOyBcIk50aWxkZVwiO1xuICAgICAgICBcIk51XCI7ICBcIk9FbGlnXCI7ICBcIk9hY3V0ZVwiOyAgIFwiT2NpcmNcIjsgIFwiT2dyYXZlXCI7ICBcIk9tZWdhXCI7ICBcIk9taWNyb25cIjtcbiAgICAgICAgXCJPc2xhc2hcIjsgIFwiT3RpbGRlXCI7ICBcIk91bWxcIjsgIFwiUGhpXCI7ICBcIlBpXCI7ICBcIlByaW1lXCI7ICBcIlBzaVwiOyAgXCJSaG9cIjtcbiAgICAgICAgXCJTY2Fyb25cIjsgIFwiU2lnbWFcIjsgICBcIlRIT1JOXCI7ICBcIlRhdVwiOyAgXCJUaGV0YVwiOyAgIFwiVWFjdXRlXCI7ICBcIlVjaXJjXCI7XG4gICAgICAgIFwiVWdyYXZlXCI7IFwiVXBzaWxvblwiOyBcIlV1bWxcIjsgXCJYaVwiOyBcIllhY3V0ZVwiOyBcIll1bWxcIjsgXCJaZXRhXCI7IFwiYWFjdXRlXCI7XG4gICAgICAgIFwiYWNpcmNcIjsgXCJhY3V0ZVwiOyBcImFlbGlnXCI7IFwiYWdyYXZlXCI7IFwiYWxlZnN5bVwiOyBcImFscGhhXCI7IFwiYW1wXCI7IFwiYW5kXCI7XG4gICAgICAgIFwiYW5nXCI7IFwiYXJpbmdcIjsgXCJhc3ltcFwiOyAgXCJhdGlsZGVcIjsgXCJhdW1sXCI7IFwiYmRxdW9cIjsgXCJiZXRhXCI7IFwiYnJ2YmFyXCI7XG4gICAgICAgIFwiYnVsbFwiOyAgXCJjYXBcIjsgIFwiY2NlZGlsXCI7IFwiY2VkaWxcIjsgIFwiY2VudFwiOyAgXCJjaGlcIjsgXCJjaXJjXCI7ICBcImNsdWJzXCI7XG4gICAgICAgIFwiY29uZ1wiOyAgXCJjb3B5XCI7IFwiY3JhcnJcIjsgXCJjdXBcIjsgIFwiY3VycmVuXCI7IFwiZEFyclwiOyAgXCJkYWdnZXJcIjsgXCJkYXJyXCI7XG4gICAgICAgIFwiZGVnXCI7ICBcImRlbHRhXCI7ICBcImRpYW1zXCI7ICAgXCJkaXZpZGVcIjsgIFwiZWFjdXRlXCI7ICBcImVjaXJjXCI7ICBcImVncmF2ZVwiO1xuICAgICAgICBcImVtcHR5XCI7ICBcImVtc3BcIjsgXCJlbnNwXCI7ICBcImVwc2lsb25cIjsgXCJlcXVpdlwiOyAgXCJldGFcIjsgIFwiZXRoXCI7IFwiZXVtbFwiO1xuICAgICAgICBcImV1cm9cIjsgIFwiZXhpc3RcIjsgIFwiZm5vZlwiOyAgXCJmb3JhbGxcIjsgIFwiZnJhYzEyXCI7ICBcImZyYWMxNFwiOyAgXCJmcmFjMzRcIjtcbiAgICAgICAgXCJmcmFzbFwiOyAgXCJnYW1tYVwiOyAgXCJnZVwiOyBcImd0XCI7ICBcImhBcnJcIjsgIFwiaGFyclwiOyBcImhlYXJ0c1wiOyAgXCJoZWxsaXBcIjtcbiAgICAgICAgXCJpYWN1dGVcIjsgXCJpY2lyY1wiOyBcImlleGNsXCI7IFwiaWdyYXZlXCI7IFwiaW1hZ2VcIjsgXCJpbmZpblwiOyBcImludFwiOyBcImlvdGFcIjtcbiAgICAgICAgXCJpcXVlc3RcIjsgXCJpc2luXCI7IFwiaXVtbFwiOyAgXCJrYXBwYVwiOyBcImxBcnJcIjsgXCJsYW1iZGFcIjsgXCJsYW5nXCI7IFwibGFxdW9cIjtcbiAgICAgICAgXCJsYXJyXCI7ICBcImxjZWlsXCI7ICBcImxkcXVvXCI7IFwibGVcIjsgIFwibGZsb29yXCI7ICBcImxvd2FzdFwiOyBcImxvelwiOyAgXCJscm1cIjtcbiAgICAgICAgXCJsc2FxdW9cIjsgXCJsc3F1b1wiOyBcImx0XCI7ICBcIm1hY3JcIjsgXCJtZGFzaFwiOyBcIm1pY3JvXCI7IFwibWlkZG90XCI7IFwibWludXNcIjtcbiAgICAgICAgXCJtdVwiOyBcIm5hYmxhXCI7ICBcIm5ic3BcIjsgXCJuZGFzaFwiOyAgXCJuZVwiOyBcIm5pXCI7IFwibm90XCI7ICBcIm5vdGluXCI7IFwibnN1YlwiO1xuICAgICAgICBcIm50aWxkZVwiOyAgXCJudVwiOyAgIFwib2FjdXRlXCI7ICBcIm9jaXJjXCI7ICBcIm9lbGlnXCI7ICAgXCJvZ3JhdmVcIjsgIFwib2xpbmVcIjtcbiAgICAgICAgXCJvbWVnYVwiOyBcIm9taWNyb25cIjsgXCJvcGx1c1wiOyBcIm9yXCI7IFwib3JkZlwiOyBcIm9yZG1cIjsgXCJvc2xhc2hcIjsgXCJvdGlsZGVcIjtcbiAgICAgICAgXCJvdGltZXNcIjsgIFwib3VtbFwiOyAgXCJwYXJhXCI7ICBcInBhcnRcIjsgIFwicGVybWlsXCI7IFwicGVycFwiOyAgXCJwaGlcIjsgIFwicGlcIjtcbiAgICAgICAgXCJwaXZcIjsgIFwicGx1c21uXCI7ICBcInBvdW5kXCI7IFwicHJpbWVcIjsgIFwicHJvZFwiOyAgXCJwcm9wXCI7IFwicHNpXCI7ICBcInF1b3RcIjtcbiAgICAgICAgXCJyQXJyXCI7ICBcInJhZGljXCI7IFwicmFuZ1wiOyBcInJhcXVvXCI7ICBcInJhcnJcIjsgXCJyY2VpbFwiOyAgXCJyZHF1b1wiOyBcInJlYWxcIjtcbiAgICAgICAgXCJyZWdcIjsgXCJyZmxvb3JcIjsgIFwicmhvXCI7IFwicmxtXCI7IFwicnNhcXVvXCI7ICBcInJzcXVvXCI7IFwic2JxdW9cIjsgXCJzY2Fyb25cIjtcbiAgICAgICAgXCJzZG90XCI7ICBcInNlY3RcIjsgIFwic2h5XCI7IFwic2lnbWFcIjsgIFwic2lnbWFmXCI7ICBcInNpbVwiOyBcInNwYWRlc1wiOyAgXCJzdWJcIjtcbiAgICAgICAgXCJzdWJlXCI7IFwic3VtXCI7IFwic3VwXCI7IFwic3VwMVwiOyAgXCJzdXAyXCI7IFwic3VwM1wiOyBcInN1cGVcIjsgXCJzemxpZ1wiOyBcInRhdVwiO1xuICAgICAgICBcInRoZXJlNFwiOyAgXCJ0aGV0YVwiOyBcInRoZXRhc3ltXCI7ICBcInRoaW5zcFwiOyBcInRob3JuXCI7ICBcInRpbGRlXCI7IFwidGltZXNcIjtcbiAgICAgICAgXCJ0cmFkZVwiOyBcInVBcnJcIjsgXCJ1YWN1dGVcIjsgIFwidWFyclwiOyBcInVjaXJjXCI7IFwidWdyYXZlXCI7IFwidW1sXCI7IFwidXBzaWhcIjtcbiAgICAgICAgXCJ1cHNpbG9uXCI7ICBcInV1bWxcIjsgXCJ3ZWllcnBcIjsgXCJ4aVwiOyAgXCJ5YWN1dGVcIjsgXCJ5ZW5cIjsgIFwieXVtbFwiOyBcInpldGFcIjtcbiAgICAgICAgXCJ6d2pcIjsgXCJ6d25qXCI7IF1cblxuXG4gICgqKiBzZXQgb2Yga25vd24gaW5saW5lIEhUTUwgdGFncyAqKVxuICBsZXQgaW5saW5lX2h0bWx0YWdzX3NldCA9XG4gICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICgqIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0lubGluZV9lbGVtZW50cyAqKVxuICAgICAgICAgWyBcImJcIjtcImJpZ1wiO1wiaVwiO1wic21hbGxcIjtcInR0XCI7XG4gICAgICAgICAgIFwiYWJiclwiO1wiYWNyb255bVwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiZGZuXCI7XCJlbVwiO1wia2JkXCI7XCJzdHJvbmdcIjtcInNhbXBcIjtcInZhclwiO1xuICAgICAgICAgICBcImFcIjtcImJkb1wiO1wiYnJcIjtcImltZ1wiO1wibWFwXCI7XCJvYmplY3RcIjtcInFcIjtcInNwYW5cIjtcInN1YlwiO1wic3VwXCI7XG4gICAgICAgICAgIFwiYnV0dG9uXCI7XCJpbnB1dFwiO1wibGFiZWxcIjtcInNlbGVjdFwiO1widGV4dGFyZWFcIjtdKVxuXG4gICgqKiBOLkIuIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBpbmxpbmVcbiAgICAgIHRhZ3MgYW5kIGJsb2NrLWxldmVsIHRhZ3M6IGluIEhUTUw0IGl0IHdhcyBub3QgY2xlYXIsIGluIEhUTUw1XG4gICAgICBpdCdzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gU28sIHRoZSBjaG9pY2UgKmhlcmUqIGlzIHRvIHNwZWNpZnlcbiAgICAgIGEgc2V0IG9mIHRhZ3MgY29uc2lkZXJlZCBhcyBcImlubGluZVwiLCBjZi4gW2lubGluZV9odG1sdGFnc19zZXRdLlxuICAgICAgU28gdGhlcmUgd2lsbCBiZSBpbmxpbmUgdGFncywgbm9uLWlubGluZSB0YWdzLCBhbmQgdW5rbm93blxuICAgICAgdGFncy4qKVxuXG4gICgqKiBzZXQgb2YgSFRNTCB0YWdzIHRoYXQgbWF5IGFwcGVhciBvdXQgb2YgYSBib2R5ICopXG4gIGxldCBub3RpbmJvZHl0YWdzID0gU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgIFtcbiAgICAgICAgXCJ0aXRsZVwiO1xuICAgICAgICBcImxpbmtcIjtcbiAgICAgICAgXCJtZXRhXCI7XG4gICAgICAgIFwic3R5bGVcIjtcbiAgICAgICAgXCJodG1sXCI7XG4gICAgICAgIFwiaGVhZFwiO1xuICAgICAgICBcImJvZHlcIjtcbiAgICAgIF1cblxuICAoKiogQWxsIGtub3duIEhUTUwgdGFncyAqKVxuICBsZXQgaHRtbHRhZ3Nfc2V0ID1cbiAgICBTdHJpbmdTZXQudW5pb24gbm90aW5ib2R5dGFnc1xuICAgICAgKFN0cmluZ1NldC51bmlvbiBpbmxpbmVfaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJhXCI7XCJhYmJyXCI7XCJhY3JvbnltXCI7XCJhZGRyZXNzXCI7XCJhcHBsZXRcIjtcImFyZWFcIjtcImFydGljbGVcIjtcImFzaWRlXCJcbiAgICAgICAgICAgICAgO1wiYXVkaW9cIjtcImJcIjtcImJhc2VcIjtcImJhc2Vmb250XCI7XCJiZGlcIjtcImJkb1wiO1wiYmlnXCI7XCJibG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgO1wiYnJcIjtcImJ1dHRvblwiO1wiY2FudmFzXCI7XCJjYXB0aW9uXCI7XCJjZW50ZXJcIjtcImNpdGVcIjtcImNvZGVcIjtcImNvbFwiXG4gICAgICAgICAgICAgIDtcImNvbGdyb3VwXCI7XCJjb21tYW5kXCI7XCJkYXRhbGlzdFwiO1wiZGRcIjtcImRlbFwiO1wiZGV0YWlsc1wiO1wiZGZuXCJcbiAgICAgICAgICAgICAgO1wiZGlhbG9nXCI7XCJkaXJcIjtcImRpdlwiO1wiZGxcIjtcImR0XCI7XCJlbVwiO1wiZW1iZWRcIjtcImZpZWxkc2V0XCJcbiAgICAgICAgICAgICAgO1wiZmlnY2FwdGlvblwiO1wiZmlndXJlXCI7XCJmb250XCI7XCJmb290ZXJcIjtcImZvcm1cIjtcImZyYW1lXCI7XCJmcmFtZXNldFwiXG4gICAgICAgICAgICAgIDtcImgyXCI7XCJoM1wiO1wiaDRcIjtcImg1XCI7XCJoNlwiXG4gICAgICAgICAgICAgIDtcImgxXCI7XCJoZWFkZXJcIjtcImhyXCI7XCJpXCI7XCJpZnJhbWVcIjtcImltZ1wiO1wiaW5wdXRcIjtcImluc1wiO1wia2JkXCJcbiAgICAgICAgICAgICAgO1wia2V5Z2VuXCI7XCJsYWJlbFwiO1wibGVnZW5kXCI7XCJsaVwiO1wibWFwXCI7XCJtYXJrXCI7XCJtZW51XCI7XCJtZXRlclwiO1wibmF2XCJcbiAgICAgICAgICAgICAgO1wibm9mcmFtZXNcIjtcIm5vc2NyaXB0XCI7XCJvYmplY3RcIjtcIm9sXCI7XCJvcHRncm91cFwiO1wib3B0aW9uXCI7XCJvdXRwdXRcIlxuICAgICAgICAgICAgICA7XCJwXCI7XCJwYXJhbVwiO1wicHJlXCI7XCJwcm9ncmVzc1wiO1wicVwiO1wicnBcIjtcInJ0XCI7XCJydWJ5XCI7XCJzXCI7XCJzYW1wXCJcbiAgICAgICAgICAgICAgO1wic2NyaXB0XCI7XCJzZWN0aW9uXCI7XCJzZWxlY3RcIjtcInNtYWxsXCI7XCJzb3VyY2VcIjtcInNwYW5cIjtcInN0cmlrZVwiXG4gICAgICAgICAgICAgIDtcInN0cm9uZ1wiO1wic3R5bGVcIjtcInN1YlwiO1wic3VtbWFyeVwiO1wic3VwXCI7XCJ0YWJsZVwiO1widGJvZHlcIjtcInRkXCJcbiAgICAgICAgICAgICAgO1widGV4dGFyZWFcIjtcInRmb290XCI7XCJ0aFwiO1widGhlYWRcIjtcInRpbWVcIjtcInRyXCI7XCJ0cmFja1wiO1widHRcIjtcInVcIlxuICAgICAgICAgICAgICA7XCJ1bFwiO1widmFyXCI7XCJ2aWRlb1wiO1wid2JyXCJcbiAgICAgICAgICAgIF0pKVxuXG5cbiAgKCoqIFRoaXMgZnVuY3Rpb25zIGZpeGVzIGJhZCBsZXhpbmcgdHJlZXMsIHdoaWNoIG1heSBiZSBidWlsdCB3aGVuXG4gICAgICBleHRyYWN0aW9uIGEgcG9ydGlvbiBvZiBhbm90aGVyIGxleGluZyB0cmVlLiAqKVxuICBsZXQgZml4IGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICgqIGNvZGUgdG8gZ2VuZXJhdGUgd2hhdCBmb2xsb3dzLi4uXG4gICAgICAgICBMaXN0Lml0ZXIgKGZ1biBlIC0+XG4gICAgICAgICBQcmludGYucHJpbnRmIFwiXG4gICAgICAgICB8ICVzOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMVxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MgMDo6dGwpXG4gICAgICAgICB8ICVzcyBuOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMlxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzOjolc3Mgbjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgM1xcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzcyBhOjolc3MgYjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgNFxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MoYStiKzIpOjp0bClcIlxuICAgICAgICAgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSlcbiAgICAgICAgIFtcIkFtcGVyc2FuZFwiOyBcIkF0XCI7IFwiQmFja3F1b3RlXCI7IFwiQmFja3NsYXNoXCI7IFwiQmFyXCI7IFwiQ2FyZXRcIjsgXCJDYnJhY2VcIjsgXCJDb2xvblwiOyBcIkNvbW1hXCI7IFwiQ3BhcmVudGhlc2lzXCI7IFwiQ2JyYWNrZXRcIjsgXCJEb2xsYXJcIjsgXCJEb3RcIjsgXCJEb3VibGVxdW90ZVwiOyBcIkV4Y2xhbWF0aW9uXCI7IFwiRXF1YWxcIjsgXCJHcmVhdGVydGhhblwiOyBcIkhhc2hcIjsgXCJMZXNzdGhhblwiOyBcIk1pbnVzXCI7IFwiTmV3bGluZVwiOyBcIk9icmFjZVwiOyBcIk9wYXJlbnRoZXNpc1wiOyBcIk9icmFja2V0XCI7IFwiUGVyY2VudFwiOyBcIlBsdXNcIjsgXCJRdWVzdGlvblwiOyBcIlF1b3RlXCI7IFwiU2VtaWNvbG9uXCI7IFwiU2xhc2hcIjsgXCJTcGFjZVwiOyBcIlN0YXJcIjsgXCJUYWJcIjsgXCJUaWxkZVwiOyBcIlVuZGVyc2NvcmVcIl07XG4gICAgICAgICBwcmludF9zdHJpbmcgXCJ8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXFxufCBbXSAtPiBMaXN0LnJldiBhY2N1XFxuXCI7ICopXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMgMDo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgbjo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgYTo6QW1wZXJzYW5kcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMoYStiKzIpOjp0bClcbiAgICAgIHwgQXQ6OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzIDA6OnRsKVxuICAgICAgfCBBdHMgbjo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0OjpBdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXRzIGE6OkF0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMgMDo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgbjo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgYTo6QmFja3F1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyAwOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBuOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBhOjpCYWNrc2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBCYXI6OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzIDA6OnRsKVxuICAgICAgfCBCYXJzIG46OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXI6OkJhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXJzIGE6OkJhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKGErYisyKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyAwOjp0bClcbiAgICAgIHwgQ2FyZXRzIG46OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0cyBhOjpDYXJldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzIDA6OnRsKVxuICAgICAgfCBDYnJhY2VzIG46OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2VzIGE6OkNicmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyAwOjp0bClcbiAgICAgIHwgQ29sb25zIG46OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9ucyBhOjpDb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMgMDo6dGwpXG4gICAgICB8IENvbW1hcyBuOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYXMgYTo6Q29tbWFzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBuOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBhOjpDcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IENicmFja2V0cyBuOjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgYTo6Q2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyAwOjp0bClcbiAgICAgIHwgRG9sbGFycyBuOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFycyBhOjpEb2xsYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3Q6OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzIDA6OnRsKVxuICAgICAgfCBEb3RzIG46OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3Q6OkRvdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3RzIGE6OkRvdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKGErYisyKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyAwOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIG46OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBhOjpEb3VibGVxdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMgMDo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBuOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgYTo6RXhjbGFtYXRpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzIDA6OnRsKVxuICAgICAgfCBFcXVhbHMgbjo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWxzIGE6OkVxdWFscyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKGErYisyKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyAwOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIG46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBhOjpHcmVhdGVydGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyAwOjp0bClcbiAgICAgIHwgSGFzaHMgbjo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNocyBhOjpIYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMgMDo6dGwpXG4gICAgICB8IExlc3N0aGFucyBuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgYTo6TGVzc3RoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzIDA6OnRsKVxuICAgICAgfCBNaW51c3Mgbjo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXNzIGE6Ok1pbnVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKGErYisyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzIDA6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBuOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIGE6Ok5ld2xpbmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMgMDo6dGwpXG4gICAgICB8IE9icmFjZXMgbjo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZXMgYTo6T2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBuOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBhOjpPcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IE9icmFja2V0cyBuOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgYTo6T2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMgMDo6dGwpXG4gICAgICB8IFBlcmNlbnRzIG46OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudHMgYTo6UGVyY2VudHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MgMDo6dGwpXG4gICAgICB8IFBsdXNzIG46OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1c3MgYTo6UGx1c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MoYStiKzIpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zIDA6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIGE6OlF1ZXN0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKGErYisyKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyAwOjp0bClcbiAgICAgIHwgUXVvdGVzIG46OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlcyBhOjpRdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zIDA6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIG46OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIGE6OlNlbWljb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyAwOjp0bClcbiAgICAgIHwgU2xhc2hzIG46OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNocyBhOjpTbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMgMDo6dGwpXG4gICAgICB8IFNwYWNlcyBuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZXMgYTo6U3BhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMgMDo6dGwpXG4gICAgICB8IFN0YXJzIG46OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3RhcnMgYTo6U3RhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGFiOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyAwOjp0bClcbiAgICAgIHwgVGFicyBuOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFiOjpUYWJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFicyBhOjpUYWJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhhK2IrMik6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMgMDo6dGwpXG4gICAgICB8IFRpbGRlcyBuOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZXMgYTo6VGlsZGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMoYStiKzIpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMgMDo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIG46OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgYTo6VW5kZXJzY29yZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMoYStiKzIpOjp0bCl8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG5cbiAgKCogUmVtb3ZlIGFsbCBbTkxdIGFuZCBbQnJdIGF0IHRoZSBiZWdpbm5pbmcuICopXG4gIGxldCByZWMgcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChOTCB8IEJyKSA6OiB0bCAtPiByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bFxuICAgIHwgbCAtPiBsXG5cblxuICAoKiogLSByZWNvZ25pemVzIHBhcmFncmFwaHNcbiAgICAgIC0gZ2x1ZXMgZm9sbG93aW5nIGJsb2NrcXVvdGVzICAqKVxuICBsZXQgbWFrZV9wYXJhZ3JhcGhzIG1kID1cbiAgICBsZXQgcmVjIGxvb3AgY3AgYWNjdSA9IGZ1bmN0aW9uICgqIGNwIG1lYW5zIGN1cnJlbnQgcGFyYWdyYXBoICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGFjY3VcbiAgICAgICAgICB8IChOTHxCcik6OmNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgICB8IGNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgfCBCbG9ja3F1b3RlIGIxIDo6IEJsb2NrcXVvdGUgYjIgOjogdGwgLT5cbiAgICAgICAgbG9vcCBjcCBhY2N1IChCbG9ja3F1b3RlKGIxQGIyKTo6IHRsKVxuICAgICAgfCBCbG9ja3F1b3RlIGIgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBCbG9ja3F1b3RlKGxvb3AgW10gW10gYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoVWxwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gVWxwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoT2xwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gT2xwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIC0+IGxvb3AgW10gKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKGU6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsKVxuICAgICAgfCAoUmF3X2Jsb2NrIF8gfCBIdG1sX2Jsb2NrIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjpjcEBhY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoQ29kZV9ibG9jayBfIHwgSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgIHwgT2wgXyB8IFVsIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBUZXh0IFwiXFxuXCIgOjogXyB8IFBhcmFncmFwaCBfIDo6IF8gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJPbWRfcGFyc2VyLm1ha2VfcGFyYWdyYXBoc1wiXG4gICAgICB8IChOTHxCcikgOjogKE5MfEJyKSA6OiB0bCAtPlxuICAgICAgICBsZXQgdGwgPSByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bCBpblxuICAgICAgICBiZWdpbiBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKE5MOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgICB8IF8gLT4gbG9vcCBbXSAoUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IFgoeCkgYXMgZSA6OiB0bCAtPlxuICAgICAgICAoKiBJZiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBibG9jayBhcyBmaXJzdCBlbGVtZW50LFxuICAgICAgICAgICB0aGVuIGNvbnNpZGVyIHRoZSBleHRlbnNpb24gYXMgYSBibG9jay4gSG93ZXZlclxuICAgICAgICAgICBkb24ndCB0YWtlIGl0cyBjb250ZW50cyBhcyBpdCBpcyB5ZXQsIHRoZSBjb250ZW50c1xuICAgICAgICAgICBvZiB0aGUgZXh0ZW5zaW9uIHNoYWxsIGJlIGNvbnNpZGVyZWQgZmluYWwgYXMgbGF0ZVxuICAgICAgICAgICBhcyBwb3NzaWJsZS4gKilcbiAgICAgICAgYmVnaW4gbWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgICB8IFNvbWUodCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCAoIEgxIF9cbiAgICAgICAgICAgICAgfCBIMiBfXG4gICAgICAgICAgICAgIHwgSDMgX1xuICAgICAgICAgICAgICB8IEg0IF9cbiAgICAgICAgICAgICAgfCBINSAgX1xuICAgICAgICAgICAgICB8IEg2ICBfXG4gICAgICAgICAgICAgIHwgUGFyYWdyYXBoICBfXG4gICAgICAgICAgICAgIHwgVWwgX1xuICAgICAgICAgICAgICB8IE9sIF9cbiAgICAgICAgICAgICAgfCBVbHAgX1xuICAgICAgICAgICAgICB8IE9scCBfXG4gICAgICAgICAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICAgICAgICAgIHwgSHJcbiAgICAgICAgICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEJsb2NrcXVvdGUgX1xuICAgICAgICAgICAgICApIDo6IF9cbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPlxuICAgICAgICAgICAgICAgICBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV93aGl0ZV9jcnVtYnMgbCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgVGV4dCBcIiBcIiA6OiB0bFxuICAgICAgICB8IE5MOjp0bFxuICAgICAgICB8IEJyOjp0bFxuICAgICAgICAgIC0+XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgICB8IGwgLT4gbFxuICAgICAgaW5cbiAgICAgIExpc3QucmV2IChsb29wIChMaXN0LnJldiBsKSlcbiAgICBpblxuICAgIGxldCByZWMgY2xlYW5fcGFyYWdyYXBocyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzXFxuXCI7XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBbXVxuICAgICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gdGxcbiAgICAgIHwgUGFyYWdyYXBoKHApIDo6IHRsIC0+XG4gICAgICAgIFBhcmFncmFwaChjbGVhbl9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVfaW5pdGlhbF9uZXdsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX3doaXRlX2NydW1icyhub3JtYWxpc2VfbWQgcCkpKSlcbiAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMSB2IDo6IHRsIC0+IEgxKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgyIHYgOjogdGwgLT4gSDIoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDMgdiA6OiB0bCAtPiBIMyhjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINCB2IDo6IHRsIC0+IEg0KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg1IHYgOjogdGwgLT4gSDUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDYgdiA6OiB0bCAtPiBINihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBFbXBoIHYgOjogdGwgLT4gRW1waChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJvbGQgdiA6OiB0bCAtPiBCb2xkKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWwgdiA6OiB0bCAtPiBVbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbCB2IDo6IHRsIC0+IE9sKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVscCB2IDo6IHRsIC0+IFVscChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2xwIHYgOjogdGwgLT4gT2xwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCbG9ja3F1b3RlIHYgOjogdGwgLT4gQmxvY2txdW90ZShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVybChocmVmLHYsdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLChjbGVhbl9wYXJhZ3JhcGhzIHYpLHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFRleHQgX1xuICAgICAgfCBDb2RlIF9cbiAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICB8IEJyXG4gICAgICB8IEhyXG4gICAgICB8IE5MXG4gICAgICB8IFJlZiBfXG4gICAgICB8IEltZ19yZWYgX1xuICAgICAgfCBSYXcgX1xuICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgfCBIdG1sIF9cbiAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgICB8IEltZyBfXG4gICAgICB8IFggXyBhcyB2IDo6IHRsIC0+IHYgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgIGluXG4gICAgbGV0IHIgPSBjbGVhbl9wYXJhZ3JhcGhzKGxvb3AgW10gW10gbWQpXG4gICAgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzICVTIC0tPiAlU1xcbiUhXCJcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIG1kKVxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgcik7XG4gICAgclxuXG5cbiAgKCoqIFthc3NlcnRfd2VsbF9mb3JtZWRdIGlzIGEgZGV2ZWxvcGVyJ3MgZnVuY3Rpb24gdGhhdCBoZWxwcyB0b1xuICAgICAgdHJhY2sgYmFkbHkgY29uc3RydWN0ZWQgdG9rZW4gbGlzdHMuICBUaGlzIGZ1bmN0aW9uIGhhcyBhblxuICAgICAgZWZmZWN0IG9ubHkgaWYgW3RyYWNrZml4XSBpcyBbdHJ1ZV0uICAqKVxuICBsZXQgYXNzZXJ0X3dlbGxfZm9ybWVkIChsOnRvayBsaXN0KSA6IHVuaXQgPVxuICAgIGlmIHRyYWNrZml4IHRoZW5cbiAgICAgIGxldCByZWMgZXF1aXYgbDEgbDIgPSBtYXRjaCBsMSwgbDIgd2l0aFxuICAgICAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgICAgIHwgVGFnIF86OnRsMSwgVGFnIF86OnRsMi0+IGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+IGUxID0gZTIgJiYgZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBhc3NlcnQoZXF1aXYgKGZpeCBsKSBsKTtcbiAgICAgICgpXG5cbiAgKCoqIEdlbmVyYXRlIGZhbGxiYWNrIGZvciByZWZlcmVuY2VzLiAqKVxuICBsZXQgZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmV4dHJhY3RfZmFsbGJhY2tcXG4lIVwiO1xuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgICAgfCBlOjp0bCBhcyByIC0+XG4gICAgICAgIGlmIHIgPT0gcmVtYWlucyB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZSwgcmVtYWlucyB3aXRoXG4gICAgICAgICAgfCBDYnJhY2tldHMgMCwgQ2JyYWNrZXQ6OnIgd2hlbiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBDYnJhY2tldHMgbiwgQ2JyYWNrZXRzIG06OnIgd2hlbiBtICsgMSA9IG4gJiYgdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIGxldCBhID0gbG9vcCBbXSBsIGluXG4gICAgb2JqZWN0XG4gICAgICBtZXRob2QgdG9fc3RyaW5nID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFcbiAgICAgIG1ldGhvZCB0b190ID0gW1RleHQoTC5zdHJpbmdfb2ZfdG9rZW5zIGEpXVxuICAgIGVuZFxuXG5cbiAgbGV0IHVuaW5kZW50X3JldiBuIGxleGVtZXMgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIENBTEw6IE9tZF9wYXJzZXIudW5pbmRlbnRfcmV2XFxuJSFcIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBjbCA9IGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHk6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoeCt5KzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygwKTo6dGwpXG5cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6KFxuICAgICAgICAgIChOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICB8ICgoU3RhcnxQbHVzfE1pbnVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgICBhcyB0bCkgYXMgbCAtPlxuICAgICAgICBpZiBuID0gTC5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpIFtdIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgbGV0IHggPSBMLmxlbmd0aCBzIC0gbiBpblxuICAgICAgICBsb29wIChubDo6Y2xAYWNjdSlcbiAgICAgICAgICAoaWYgeCA+IDAgdGhlbiBbTC5tYWtlX3NwYWNlIHhdIGVsc2UgW10pXG4gICAgICAgICAgdGxcbiAgICAgIHwgTmV3bGluZXMoXyk6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgTmV3bGluZTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgKGU6OmNsKSB0bFxuICAgICAgfCBbXSBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IFtdLCByaWdodCAtPiBbXSwgcmlnaHRcbiAgICB8IGwsIHJpZ2h0IC0+XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgIGwsIHJpZ2h0XG5cbiAgbGV0IHVuaW5kZW50IG4gbGV4ZW1lcyA9XG4gICAgbGV0IGZzdCwgc25kID0gdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyBpblxuICAgIExpc3QucmV2IGZzdCwgc25kXG5cbiAgbGV0IHJlYyBpc19ibGFuayA9IGZ1bmN0aW9uXG4gICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPlxuICAgICAgaXNfYmxhbmsgdGxcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgc2VtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG4gIGxldCBzbV91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6KFdvcmQgX3xOdW1iZXIgXyBhcyB3KTo6IHRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3c7c10sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCB1ZW1waF9vcl9ib2xkIG4gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGlmIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgdGhlblxuICAgICAgZ2hfdWVtcGhfb3JfYm9sZCBuIGxcbiAgICBlbHNlXG4gICAgICBzbV91ZW1waF9vcl9ib2xkIG4gbFxuXG4gIGxldCBlYXRfYmxhbmsgPVxuICAgIGVhdCAoZnVuY3Rpb24gfFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyAtPiB0cnVlfCBfIC0+IGZhbHNlKVxuXG5cbiAgKCogdXNlZCBieSB0YWdfX21heWJlX2gxIGFuZCB0YWdfX21heWJlX2gyICopXG4gIGxldCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIChsOmwpIDogKE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdCAqIGwpIG9wdGlvbiA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gciBsID1cbiAgICAgICgqIElmIHRoZXJlJ3MgYSBiYWxhbmNlZCAoY29tcGxldGUpIGJhY2txdW90ZS1zdGFydGVkIGNvZGUgYmxvY2tcbiAgICAgICAgIHRoZW4gaXQgc2hvdWxkIGJlIFwiaWdub3JlZFwiLCBlbHNlIGl0IG1lYW5zIHRoZSBsaW5lIHRoYXRcbiAgICAgICAgIGZvbGxvd3MgaXMgcGFydCBvZiBhIGNvZGUgYmxvY2ssIHNvIGl0J3Mgbm90IGRlZmluaW5nIGFcbiAgICAgICAgIHNldGV4dC1zdHlsZSB0aXRsZS4gKilcbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIGRldGVjdF9iYWxhbmNlZF9icXMgbj0lZCByPSVTIGw9JVNcXG4lIVwiXG4gICAgICAgICAgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIHIpIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlIGFzIGIpOjp0bCB3aGVuIG4gPSAxIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgKEJhY2txdW90ZXMgeCBhcyBiKTo6dGwgd2hlbiBuID0geCsyIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChlOjpyKSB0bFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgW10pXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgMSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBCYWNrcXVvdGVzKHgpOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzICh4KzIpIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IE5ld2xpbmU6OihFcXVhbHxFcXVhbHMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCB0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnNldGV4dF90aXRsZSBpcyB3cm9uZ2x5IHVzZWQhXFxuJSFcIjtcbiAgICAgICAgTm9uZVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpyKSB0bFxuICAgIGluXG4gICAgaWYgbWF0Y2ggbCB3aXRoXG4gICAgICB8IExlc3N0aGFuOjpXb3JkIF86Ol8gLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWFpbl9sb29wIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgKEh0bWxfYmxvY2sgXyB8IENvZGVfYmxvY2sgXyB8IFJhd19ibG9jayBfKTo6XyAtPlxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHJlc3VsdCA9IGxvb3AgW10gbCBpblxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc2V0ZXh0X3RpdGxlIGw9JVMgcmVzdWx0PSVTLCVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgeClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgdGwpO1xuICAgICAgcmVzdWx0XG5cbiAgbGV0IHRhZ19fbWF5YmVfaDEgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gxXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgxKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDEgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWF5YmVfaDIgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gyXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgyKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDIgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWQgbWQgPSAoKiBbbWRdIHNob3VsZCBiZSBpbiByZXZlcnNlICopXG4gICAgVGFnKFwidGFnX19tZFwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IFNvbWUobWRAciwgW10sIGwpXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICAgKVxuXG4gICgqIExldCdzIHRhZyB0aGUgbGluZXMgdGhhdCAqbWlnaHQqIGJlIHRpdGxlcyB1c2luZyBzZXRleHQtc3R5bGUuXG4gICAgIFwibWlnaHRcIiBiZWNhdXNlIGlmIHRoZXkgYXJlLCBmb3IgaW5zdGFuY2UsIGluIGEgY29kZSBzZWN0aW9uLFxuICAgICB0aGVuIHRoZXkgYXJlIG5vdCB0aXRsZXMgYXQgYWxsLiAqKVxuICBsZXQgdGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIHBsIHJlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX10gLT5cbiAgICAgICAgcGxAcmVzXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KEVxdWFsfEVxdWFscyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMS4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffEVxdWFsfEVxdWFscyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMSBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KE1pbnVzfE1pbnVzcyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMi4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMiBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIHwgTmV3bGluZXMgXyBhcyBlMSk6OnRsIC0+XG4gICAgICAgIGxvb3AgW10gKGUxOjpwbEByZXMpIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnBsKSByZXMgdGxcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIFtdIFtdIGxleGVtZXMpXG5cblxuICBsZXQgaHJfbSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXMgX3xOZXdsaW5lKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgTWludXM6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgTWludXNzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBocl9zIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBTdGFyOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IFN0YXJzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBociBsID1cbiAgICBtYXRjaCBocl9tIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBocl9zIGxcbiAgICB8IFNvbWUgXyBhcyB0bCAtPiB0bFxuXG4gICgqKiBbYmNvZGVdIHBhcnNlcyBjb2RlIHRoYXQncyBkZWxpbWl0ZWQgYnkgYmFja3F1b3RlKHMpICopXG4gIGxldCBiY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgZSwgdGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCAtPiBlLCB0bFxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5iY29kZSBpcyB3cm9uZ2x5IGNhbGxlZFwiXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvZGVfYmxvY2sgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiBlID0gQmFja3F1b3RlIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoQmFja3F1b3RlOjphY2N1KSB0bFxuICAgICAgfCAoQmFja3F1b3RlcyBuIGFzIGIpOjp0bCAtPlxuICAgICAgICBpZiBlID0gYiB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKGI6OmFjY3UpIHRsXG4gICAgICB8IFRhZyhfLCBfKTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayBhY2N1IHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBjb2RlX2Jsb2NrIFtdIHRsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShjYiwgbCkgLT5cbiAgICAgIGlmIExpc3QuZXhpc3RzIChmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgY2JcbiAgICAgICYmIChtYXRjaCBwIHdpdGggW118W05ld2xpbmV8TmV3bGluZXMgX10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiAobWF0Y2ggZSB3aXRoIEJhY2txdW90ZXMgbiB3aGVuIG4gPiAwIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgdGhlblxuICAgICAgICBtYXRjaCBjYiB3aXRoXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgMCA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMoTmV3bGluZTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIG4gOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgbiA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIChOZXdsaW5lcyhuLTEpOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjbGVhbl9iY29kZSBzID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AxIGkgPVxuICAgICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMShpKzEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AyIGkgPVxuICAgICAgICAgICAgaWYgaSA9IC0xIHRoZW4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDIoaS0xKVxuICAgICAgICAgICAgICB8IF8gLT4gaSsxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBsb29wMSAwLCBsb29wMiAoU3RyaW5nLmxlbmd0aCBzIC0gMSkgd2l0aFxuICAgICAgICAgIHwgMCwgbiB3aGVuIG4gPSBTdHJpbmcubGVuZ3RoIHMgLSAxIC0+IHNcbiAgICAgICAgICB8IGksIG4gLT4gU3RyaW5nLnN1YiBzIGkgKG4taSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBjbGVhbl9iY29kZSAlUyA9PiAlU1xcbiUhXCIgY29kZSAoY2xlYW5fYmNvZGUgY29kZSk7XG4gICAgICAgIFNvbWUoQ29kZShkZWZhdWx0X2xhbmcsIGNsZWFuX2Jjb2RlIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuXG5cbiAgZXhjZXB0aW9uIE5MX2V4Y2VwdGlvblxuICBleGNlcHRpb24gUHJlbWF0dXJlX2VuZGluZ1xuXG4gICgqICEhRE8gTk9UIERFTEVURSBUSElTISFcbiAgICAgVGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGdlbmVyYXRlZCBwYXJ0IHRoYXQgZm9sbG93cyByaWdodCBhZnRlci5cbiAgICAgTGlzdC5pdGVyIChmdW4gKGEsYixjKSAtPlxuICAgICBwcmludF9lbmRsaW5lIChcImxldCByZWFkX3VudGlsX1wiXmFeXCIgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSBuIChcIl5iXlwiOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcIlxuICAgICAgXihpZiBjPD5cIlwiIHRoZW4gXCJcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5jXlwiOjphY2N1KSBuIChcIl5jXlwiOjp0bClcbiAgICAgIHwgXCJeY15cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IFwiXmNeXCJzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgIFwiIGVsc2UgXCJcIileXG4gICAgIFwiICAgIHwgXCJeYl5cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgXCJeYl5cInMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cIjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIChuLTEpIChcIl5iXlwiOjp0bClcbiAgICAgIHwgXCJeYl5cInMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cInMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFwiXmJeXCI6OmFjY3UgLT4gXCJeYl5cInMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFwiXmJeXCJzIHg6OmFjY3UgLT4gXCJeYl5cInMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBcIl5iXlwiOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChcIl5iXlwicyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblwiKSlcblxuICAgICBbIFwiZ3RcIiwgXCJHcmVhdGVydGhhblwiLCBcIkxlc3N0aGFuXCI7XG4gICAgIFwibHRcIiwgXCJMZXNzdGhhblwiLCBcIlwiO1xuICAgICBcImNwYXJlbnRoXCIsIFwiQ3BhcmVudGhlc2lzXCIsIFwiT3BhcmVudGhlc2lzXCI7XG4gICAgIFwib3BhcmVudGhcIiwgXCJPcGFyZW50aGVzaXNcIiwgXCJcIjtcbiAgICAgXCJkcVwiLCBcIkRvdWJsZXF1b3RlXCIsIFwiXCI7XG4gICAgIFwicVwiLCBcIlF1b3RlXCIsIFwiXCI7XG4gICAgIFwib2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiLCBcIlwiO1xuICAgICBcImNicmFja2V0XCIsIFwiQ2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiO1xuICAgICBcInNwYWNlXCIsIFwiU3BhY2VcIiwgXCJcIjtcbiAgICAgXVxuICAqKVxuXG4gICgqIGJlZ2luIGdlbmVyYXRlZCBwYXJ0ICopXG5cbmxldCByZWFkX3VudGlsX2d0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgbiAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgR3JlYXRlcnRoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSAobi0xKSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6YWNjdSAtPiBHcmVhdGVydGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyB4OjphY2N1IC0+IEdyZWF0ZXJ0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IEdyZWF0ZXJ0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfbHQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IExlc3N0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSAobi0xKSAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBMZXNzdGhhbjo6YWNjdSAtPiBMZXNzdGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IExlc3N0aGFucyB4OjphY2N1IC0+IExlc3N0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IExlc3N0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChMZXNzdGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSBuIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzOjphY2N1IC0+IENwYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29wYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OmFjY3UgLT4gT3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9wYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfZHEgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSBuIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgRG91YmxlcXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSAobi0xKSAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6YWNjdSAtPiBEb3VibGVxdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyB4OjphY2N1IC0+IERvdWJsZXF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IERvdWJsZXF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChEb3VibGVxdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIG4gKFF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBRdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgUXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIChuLTEpIChRdW90ZTo6dGwpXG4gICAgICB8IFF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFF1b3RlOjphY2N1IC0+IFF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgUXVvdGVzIHg6OmFjY3UgLT4gUXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gUXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9icmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSAobi0xKSAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPYnJhY2tldDo6YWNjdSAtPiBPYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9icmFja2V0cyB4OjphY2N1IC0+IE9icmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9icmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSBuIChDYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9icmFja2V0cyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIChuLTEpIChDYnJhY2tldDo6dGwpXG4gICAgICB8IENicmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENicmFja2V0OjphY2N1IC0+IENicmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ2JyYWNrZXRzIHg6OmFjY3UgLT4gQ2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENicmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9zcGFjZSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIG4gKFNwYWNlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBTcGFjZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgU3BhY2VzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIChuLTEpIChTcGFjZTo6dGwpXG4gICAgICB8IFNwYWNlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFNwYWNlOjphY2N1IC0+IFNwYWNlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgU3BhY2VzIHg6OmFjY3UgLT4gU3BhY2VzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gU3BhY2U6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFNwYWNlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuICAoKiAvZW5kIGdlbmVyYXRlZCBwYXJ0ICopXG5cbiAgbGV0IHJlYWRfdW50aWxfbmV3bGluZSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICgoQmFja3NsYXNoIGFzIGEpKSA6OiAoKE5ld2xpbmUgYXMgYikpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGIgOjogYSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmUgOjogQmFja3NsYXNoIDo6IGFjY3UpIG4gKE5ld2xpbmUgOjogdGwpXG4gICAgICB8ICgoQmFja3NsYXNocyAwIGFzIGUpKSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgKChCYWNrc2xhc2hzIHggYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmICh4IG1vZCAyKSA9IDBcbiAgICAgICAgdGhlbiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgICAgZWxzZSBsb29wICgoQmFja3NsYXNocyAoeCAtIDEpKSA6OiBhY2N1KSBuIChCYWNrc2xhc2ggOjogdGwpXG4gICAgICB8ICgoTmV3bGluZSBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCB0bCkgZWxzZSBsb29wIChlIDo6IGFjY3UpIChuIC0gMSkgdGxcbiAgICAgIHwgTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuICgoTGlzdC5yZXYgYWNjdSksIChOZXdsaW5lIDo6IHRsKSlcbiAgICAgICAgZWxzZSBsb29wIChOZXdsaW5lIDo6IGFjY3UpIChuIC0gMSkgKE5ld2xpbmUgOjogdGwpXG4gICAgICB8IE5ld2xpbmVzIG4gOjogdGwgLT4gKChMaXN0LnJldiBhY2N1KSwgKChOZXdsaW5lcyAobiAtIDEpKSA6OiB0bCkpXG4gICAgICB8IGUgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpbiBsb29wIFtdIDAgbFxuXG4gICgqIEgxLCBIMiwgSDMsIC4uLiAqKVxuICBsZXQgcmVhZF90aXRsZSAobWFpbl9sb29wOm1haW5fbG9vcCkgbiByIF9wcmV2aW91cyBsZXhlbWVzID1cbiAgICBsZXQgdGl0bGUsIHJlc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaDo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobi0xKTo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2hzKGgpOjp0bCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaHMoaCk6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobik6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaHMobik6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFtdIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChbXSBhcyBsKSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIGxcbiAgICAgICAgfCBbSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyBIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IChIYXNofEhhc2hzIF8pOyAoU3BhY2V8U3BhY2VzIF8pXSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIFtdXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICBsb29wICh4OjphY2N1KSB0bFxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gbGV4ZW1lc1xuICAgIGluXG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAxIC0+IFNvbWUoSDEgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMiAtPiBTb21lKEgyIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDMgLT4gU29tZShIMyB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA0IC0+IFNvbWUoSDQgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNSAtPiBTb21lKEg1IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDYgLT4gU29tZShINiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwIGwgPVxuICAgIG1hdGNoIGV4dGVuc2lvbnMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgXyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gZiNwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsKVxuICAgICAgICAgIHwgU29tZShuciwgbnAsIG5sKSBhcyBlIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gbWF0Y2ggZiNwYXJzZXJfZXh0ZW5zaW9uIG5yIG5wIG5sIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlXG4gICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBrIC0+IGspXG4gICAgICAgIClcbiAgICAgICAgTm9uZVxuICAgICAgICBleHRlbnNpb25zXG5cbiAgKCogYmxvY2txdW90ZXMgKilcbiAgbGV0IGVtYWlsc3R5bGVfcXVvdGluZyAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYmxvY2sgY2wgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OihOZXdsaW5lOjpfIGFzIHRsKSAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICAoKiBtdWx0aSBwYXJhZ3JhcGggYmxvY2txdW90ZXMgd2l0aCBlbXB0eSBsaW5lcyAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgIHwgKE5ld2xpbmVzIF86Ol8gYXMgbCkgfCAoW10gYXMgbCkgLT4gZml4KExpc3QucmV2KGNsQGJsb2NrKSksIGxcbiAgICAgIHwgZTo6dGwgLT4gbG9vcCBibG9jayAoZTo6Y2wpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmJsb2NrLCB0bCAtPlxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3RpbmcgJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBibG9jayk7XG4gICAgICBTb21lKChCbG9ja3F1b3RlKG1haW5fbG9vcCBbXSBbXSBibG9jayk6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgIHwgXyAtPlxuICAgICAgTm9uZVxuXG5cbiAgKCogbWF5YmUgYSByZWZlcmVuY2UgKilcbiAgbGV0IG1heWJlX3JlZmVyZW5jZSAobWFpbl9sb29wOm1haW5fbG9vcCkgcmMgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIGtub3cgaXQncyBub3QgYSBsaW5rIGFsdGhvdWdoXG4gICAgICAgaXQgc3RhcnRlZCB3aXRoIGEgJ1snICopXG4gICAgKCogU28gaXQgY291bGQgYmUgYSByZWZlcmVuY2Ugb3IgYSBsaW5rIGRlZmluaXRpb24uICopXG4gICAgbGV0IHJlYyBtYXliZV9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBibGFuaywgcmVtYWlucyA9IHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gdW53YW50ZWQgY2hhcmFjdGVycyBiZXR3ZWVuIENCIGFuZCBPQi4gKilcbiAgICAgIGlmIGVhdCAobGV0IGZsYWcgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKiBhbGxvdyBvbmx5IGEgc3BhY2UsIG11bHRpcGxlIHNwYWNlcywgb3IgYSBuZXdsaW5lICopXG4gICAgICAgICAgICAgIHwgTmV3bGluZSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIGJsYW5rIDw+IFtdIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZyAoKiA8LS0gbm90IGEgcmVndWxhciByZWZlcmVuY2UgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIHdpdGhcbiAgICAgICAgfCBbXSwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgICAgIHwgaWQsIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBMLnN0cmluZ19vZl90b2tlbnMgaWQsXG4gICAgICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCwgZmFsbGJhY2spKTo6ciksXG4gICAgICAgICAgICAgICBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9ub25yZWd1bGFyX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX2RlZiBsID1cbiAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICB8IF8sIFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgIHwgaWQsIChDb2xvbjo6KFNwYWNlfFNwYWNlcyBfKTo6cmVtYWlucylcbiAgICAgIHwgaWQsIChDb2xvbjo6cmVtYWlucykgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKTo6IF8gYXMgbCAtPiBTcGxpdChbXSwgbClcbiAgICAgICAgICAgICAgICAgIHwgZTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pKVxuICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUoW10sIF8pIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICB8IFNvbWUodXJsLCByZW1haW5zKSAtPlxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZW1haW5zID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBlYXRcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiByZWFkX3VudGlsX2RxIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9xIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjp0bC0+IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBsIC0+IFtdLCBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdXJsID4gMiAmJiB1cmwuWzBdID0gJzwnXG4gICAgICAgICAgICAgICAgICYmIHVybC5bU3RyaW5nLmxlbmd0aCB1cmwgLSAxXSA9ICc+JyB0aGVuXG4gICAgICAgICAgICAgICAgU3RyaW5nLnN1YiB1cmwgMSAoU3RyaW5nLmxlbmd0aCB1cmwgLSAyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmMjYWRkX3JlZiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGlkKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlKSB1cmw7XG4gICAgICAgICAgICBTb21lKHIsIFtOZXdsaW5lXSwgcmVtYWlucylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluXG4gICAgdHJ5XG4gICAgICBtYXliZV9yZWYgbFxuICAgIHdpdGggfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICB0cnlcbiAgICAgICAgbWF5YmVfZGVmIGxcbiAgICAgIHdpdGhcbiAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXliZV9ub25yZWd1bGFyX3JlZiBsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgTm9uZVxuXG5cbiAgKCoqIG1heWJlIGEgbGluayAqKVxuICBsZXQgbWF5YmVfbGluayAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbmtcXG5cIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVhZF91cmwgbmFtZSBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz5yZWFkX3VybCAlU1xcblwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxfY3AsIHJfY3AgPVxuICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2NwPSVTIHJfY3A9JVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2NwKVxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9jcCk7XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBsX2RxLCByX2RxID1cbiAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9kcT0lUyByX2RxPSVTXFxuJSFcIlxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2RxKVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2RxKTtcbiAgICAgICAgICAoKiBtYXliZSB0aXRsZSAqKVxuICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGxfY3AgPiBMaXN0Lmxlbmd0aCBsX2RxIHRoZW4gKCogdGl0bGUgKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LnJldiBsX2RxIHdpdGhcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiB0bClcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyBsX2RxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IHJlYWRfdW50aWxfZHEgfm5vX25sOmZhbHNlIH5icTpmYWxzZSByX2RxIGluXG4gICAgICAgICAgICAgIGxldCByZXN0ID0gc25kKHJlYWRfdW50aWxfY3BhcmVudGggcmVzdCkgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT4gKCogbm8gdGl0bGUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBubyB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICBsZXQgdXJsID0gbWF0Y2ggTGlzdC5yZXYgbF9jcCB3aXRoXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBMaXN0LnJldiB0bFxuICAgICAgICAgICAgICB8IF8gLT4gbF9jcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IFtdLCByX2NwIGluXG4gICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICBlbmRcbiAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVhZF9uYW1lIGwgPVxuICAgICAgKCogaXQncyBub3QgcmVhbGx5IHRoZSBcIm5hbWVcIiBvZiBhIFVSTCBidXQgd2hhdFxuICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGlubmVyIEhUTUwgb2YgYW4gSFRNTCAnQScgdGFnICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+IHJlYWRfbmFtZVxcblwiO1xuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpczo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChlYXRfYmxhbmsgdGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3MgMDo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIG46OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzcyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+IE5vbmVcbiAgICBpblxuICAgIHJlYWRfbmFtZSBsXG5cblxuICBsZXQgaGFzX3BhcmFncmFwaHMgbCA9XG4gICAgKCogSGFzIGF0IGxlYXN0IDIgY29uc2VjdXRpdmUgbmV3bGluZXMuICopXG4gICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIE5ld2xpbmVzIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcblxuICBsZXQgcGFyc2VfbGlzdCAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdCByPSglcykgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgXCJcIiAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKSAqKVxuICAgICAgICBcIlwiICgqIChkZXN0cmluZ19vZl90bCBwKSAqKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgfmxpbWl0OjQwIGwpO1xuICAgIGVuZDtcbiAgICBsZXQgbW9kdWxlIFVPID0gc3RydWN0IHR5cGUgb3JkZXJlZCA9IE8gfCBVIGVuZCBpblxuICAgIGxldCBvcGVuIFVPIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Q6IGw9KCVzKVxcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgIGxldCBlbmRfb2ZfaXRlbSAoaW5kZW50OmludCkgbCA6IHRvayBzcGxpdF9hY3Rpb24gID0gbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFNwbGl0KFtdLFtdKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6ICgoU3BhY2VzIG4pIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiB0bFxuICAgICAgICAgICAgICAgICAgICAgICBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA9IGluZGVudCs0IHRoZW4gKCogYmxvY2txdW90ZSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChuKzIpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6IChTcGFjZXMgbiA6OiB0bCBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygwKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZTo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs0IHRoZW4gKCogbmV3IHBhcmFncmFwaCBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCAoTmV3bGluZXMgXykgOjogXyAtPiAoKiBuID4gMCAqKVxuICAgICAgICAoKiBFbmQgb2YgaXRlbSwgc3RvcCAqKVxuICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OlxuICAgICAgICAoXG4gICAgICAgICAgKChTcGFjZXxTcGFjZXMgXykgOjogKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKChTcGFjZXxTcGFjZXMgXykgOjogTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgfCAoKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgICAgYXMgdGwpIC0+XG4gICAgICAgIFNwbGl0KFtOZXdsaW5lXSwgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgZXhhY3RseSAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSByZXdyaXRlIHRoZSBoZWFkIG9mIHRoZSBsZXhpbmcgc3RyZWFtLiAqKVxuICAgICAgICBDb250aW51ZV93aXRoKFtdLCBOZXdsaW5lcyAwIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiAoTmV3bGluZXMgXykgOjogXyAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSBzdG9wLiAqKVxuICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlcyBfIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlc1wiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU3BhY2VzIF86OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgQ29udGludWVcbiAgICBpblxuICAgIGxldCByZXZfdG9fdCBsID1cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgKCogTmV3bGluZXMgYXQgdGhlIGVuZCBvZiBpdGVtcyBoYXZlIG5vIG1lYW5pbmcgKGV4Y2VwdCB0byBlbmQgdGhlXG4gICAgICAgICBpdGVtIHdoaWNoIGlzIGV4cHJlc3NlZCBieSB0aGUgY29uc3RydWN0b3IgYWxyZWFkeSkuICopXG4gICAgICBsZXQgbCA9IG1hdGNoIGwgd2l0aCAoTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+IHRsIHwgXyAtPiBsIGluXG4gICAgICBtYWluX2xvb3AgW10gW05ld2xpbmVdIChMaXN0LnJldiBsKVxuICAgIGluXG4gICAgbGV0IGFkZCAoc3VibGlzdDplbGVtZW50KSBpdGVtcyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBhZGRcXG4lIVwiO1xuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKE8saW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKE8saW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICAgIHwgKFUsaW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKFUsaW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICBpblxuICAgIGxldCBtYWtlX3VwIH5wIGl0ZW1zIDogT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFrZV91cCBwPSViXFxuJSFcIiBwO1xuICAgICAgbGV0IGl0ZW1zID0gTGlzdC5yZXYgaXRlbXMgaW5cbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgKFUsXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBVbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgVWwoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCAoTyxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIE9scChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibWFrZV91cCBjYWxsZWQgd2l0aCBbXVwiICgqIGFzc2VydCBmYWxzZSAqKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBsaXN0X2l0ZW1zOiBwPSViIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgKCogbm8gbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgKCogbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICAoKiBuZXcgdW5vcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDIzNDYpIG5ld19pdGVtPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBuZXdfaXRlbSk7XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKFUsWzBdLCByZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChVLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoVSxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pIDo6IGl0ZW1zIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogbmV3IG9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBuZXdfaXRlbTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoTyxbMF0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChPLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChPLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wXG4gICAgICAgICAgICAgICAgICAgICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogKilcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OihOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpTdGFyOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICAgIC0+XG4gICAgICAgIGxpc3RfaXRlbXMgfnA6dHJ1ZSBpbmRlbnRzIGl0ZW1zIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGxldCByZWMgc3RyaW5nX29mX2l0ZW1zIGl0ZW1zID1cbiAgICAgICAgICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCAoTyxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoTyxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgKFUsaW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKFUsaT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IF8gLT4gXCIod2VpcmQpXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTkFMSSBwYXJzZV9saXN0OiBsPSglUykgaXRlbXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCkgKHN0cmluZ19vZl9pdGVtcyBpdGVtcylcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICgqIG5vdCBhIGxpc3QgaXRlbSAqKVxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICBpblxuICAgIG1hdGNoIGxpc3RfaXRlbXMgfnA6ZmFsc2UgW10gW10gbCB3aXRoXG4gICAgfCBycCwgbCAtPlxuICAgICAgcnA6OnIsIFtOZXdsaW5lXSwgbFxuXG5cblxuICBsZXQgaWNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIGluZGVudGVkIGNvZGU6IHJldHVybnMgKHIscCxsKSB3aGVyZSByIGlzIHRoZSByZXN1bHQsIHAgaXMgdGhlXG4gICAgICAgbGFzdCB0aGluZyByZWFkLCBsIGlzIHRoZSByZW1haW5zICopXG4gICAgbGV0IGR1bW15X3RhZyA9IFRhZyhcImR1bW15X3RhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uID0gZnVuIHIgcCBsIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgaW5cbiAgICBsZXQgYWNjdSA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBsZXQgcmVjIGxvb3AgcyB0bCA9IG1hdGNoIHMsIHRsIHdpdGhcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKFNwYWNlfFNwYWNlcygwfDEpKTo6XyAtPlxuICAgICAgICAoKiAxLCAyIG9yIDMgc3BhY2VzLiAqKVxuICAgICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIHdoYXQgZm9sbG93cyBpc24ndC4gKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIFNwYWNlcyhuKTo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgICgqIEF0IGxlYXN0IDQgc3BhY2VzLCBpdCdzIHN0aWxsIGNvZGUuICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKGlmIG4gPj0gNCB0aGVuIFNwYWNlcyhuLTQpIGVsc2UgaWYgbiA9IDMgdGhlbiBTcGFjZSBlbHNlIGR1bW15X3RhZylcbiAgICAgICAgICB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAobm90X3NwYWNlczo6XyBhcyB0bCkgLT4gKCogc3RvcCAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2UgaXQncyBubyBtb3JlIGNvZGUuICopXG4gICAgICB8IHAsIGU6OnRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICAoKiBodG1sIGVudGl0aWVzIGFyZSB0byBiZSBjb252ZXJ0ZWQgbGF0ZXIhICopXG4gICAgICAgIGxvb3AgZSB0bFxuICAgICAgfCBwLCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KTo6ciwgW3BdLCBbXVxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBTcGFjZXMgbjo6dGwgLT5cbiAgICAgIGlmIG4gPj0gNCB0aGVuXG4gICAgICAgIFNvbWUobG9vcCAoU3BhY2VzKG4tNCkpIHRsKVxuICAgICAgZWxzZSBpZiBuID0gMyB0aGVuXG4gICAgICAgIFNvbWUobG9vcCBTcGFjZSB0bClcbiAgICAgIGVsc2UgU29tZShsb29wIGR1bW15X3RhZyB0bClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuICAoKiBSZXR1cm5zIFsocixwLGwpXSB3aGVyZSBbcl0gaXMgdGhlIHJlc3VsdCwgW3BdIGlzIHRoZSBsYXN0IHRoaW5nXG4gICAgIHJlYWQsIGFuZCBbbF0gaXMgd2hhdCByZW1haW5zLiAqKVxuICBsZXQgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPD0gMyB0aGVuIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogdW5vcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IChOdW1iZXIgXyk6OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgKCogb3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCBbXVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiAoKiBibGFuayBsaW5lLCBza2lwIHNwYWNlcyAqKVxuICAgICAgICByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCAgXzo6XyAtPlxuICAgICAgICBUZXh0IChcIiBcIik6OnIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgKVxuICAgIGVsc2UgKCAoKiBuPj00LCBibGFuayBsaW5lIG9yIGluZGVudGVkIGNvZGUgKilcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBbXSB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+IHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBpY29kZSB+ZGVmYXVsdF9sYW5nIHIgW05ld2xpbmVdIChMLm1ha2Vfc3BhY2UgbiA6OiBsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gcixwLGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuaWNvZGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgKVxuXG4gIGxldCBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lID8oaHRtbD1mYWxzZSkgbiByIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIChUZXh0IFwiIFwiOjpyKSwgW1NwYWNlXSwgbGV4ZW1lc1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IE5ld2xpbmUgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCB0aGUgbmV3bGluZVxcbiUhXCI7XG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCB0bFxuICAgICAgfCBOZXdsaW5lcyBrIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgMSBuZXdsaW5lXCI7XG4gICAgICAgIGxldCBuZXdsaW5lcyA9IGlmIGsgPSAwIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzKGstMSkgaW5cbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIG5ld2xpbmVzIDo6IHRsXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChuPjEpO1xuICAgICAgICAoVGV4dCAoU3RyaW5nLm1ha2UgbiAnICcpOjpyKSwgW1NwYWNlcyhuLTIpXSwgbGV4ZW1lc1xuICAgIClcblxuXG4gIGxldCBtYXliZV9hdXRvZW1haWwgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgTGVzc3RoYW46OnRsIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGZzcGxpdCB+ZXhjbDooZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB+ZjooZnVuY3Rpb24gQXQ6OnRsIC0+IFNwbGl0KFtdLHRsKSB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICB0bFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZShsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvbiBHcmVhdGVydGhhbjo6dGwgLT4gU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMDo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG46OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgIHJpZ2h0XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lKGRvbWFpbiwgdGwpIC0+XG4gICAgICAgICAgICBsZXQgZW1haWwgPSBMLnN0cmluZ19vZl90b2tlbnMgbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgXiBcIkBcIiBeIEwuc3RyaW5nX29mX3Rva2VucyBkb21haW4gaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKFwibWFpbHRvOlwiXmVtYWlsLFtUZXh0IGVtYWlsXSxcIlwiKTo6cixbR3JlYXRlcnRoYW5dLHRsKVxuICAgICAgZW5kXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5tYXliZV9hdXRvZW1haWw6IHdyb25nIHVzZSBvZiB0aGUgZnVuY3Rpb24uXCJcblxuICBsZXQgaXNfaGV4IHMgPVxuICAgIFN0cmluZy5sZW5ndGggcyA+IDFcbiAgICAmJiAocy5bMF0gPSAnWCcgfHwgcy5bMF0gPSAneCcpXG4gICAgJiYgKGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgIGkgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgIHx8XG4gICAgICAgICAobWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICBpbiBsb29wIDEpXG5cbiAgbGV0IG1lZGlhdHlwZXRleHRvbWQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgICBsb29wIHRydWUgciB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGIgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsb29wIGZhbHNlIFtdIGxcblxuICBleGNlcHRpb24gT3JwaGFuX2Nsb3Npbmcgb2Ygc3RyaW5nICogbCAqIGxcblxuICBsZXQgcmVjIG1haW5faW1wbF9yZXYgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYiByPSVzIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIGh0bWxcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSlcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHByZXZpb3VzKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbGV4ZW1lcyk7XG4gICAgbWF0Y2ggcHJldmlvdXMsIGxleGVtZXMgd2l0aFxuICAgICgqIG5vIG1vcmUgdG8gcHJvY2VzcyAqKVxuICAgIHwgXywgW10gLT5cbiAgICAgICgqIHJldHVybiB0aGUgcmVzdWx0ICgvIVxcIGl0IGhhcyB0byBiZSByZXZlcnNlZCBhcyBzb21lIHBvaW50KSAqKVxuICAgICAgclxuXG4gICAgKCogVGFnOiB0YWcgc3lzdGVtICRcXGN1cCQgaGlnaC1wcmlvcml0eSBleHRlbnNpb24gbWVjaGFuaXNtICopXG4gICAgfCBfLCBUYWcoX25hbWUsIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBlI3BhcnNlcl9leHRlbnNpb24gciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIHRsXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgY29tbWVudHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6KEV4Y2xhbWF0aW9uOjpNaW51c3MgMDo6YyBhcyB0bCkgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IChNaW51c3MgXyBhcyBtKTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCAtPlxuICAgICAgICAgICAgU3BsaXQoW2c7bV0sIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZnNwbGl0IH5mOmYgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgKGNvbW1lbnRzLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBIdG1sX2NvbW1lbnQoTC5zdHJpbmdfb2ZfdG9rZW5zIGNvbW1lbnRzKSA6OiByIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtOZXdsaW5lXSBuZXdfdGxcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZyAvIGJsb2NrcXVvdGUgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIEdyZWF0ZXJ0aGFuOjooU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgciBwcmV2aW91cyAoTmV3bGluZTo6bGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nLCB3aXRoIGxpbmVzIHN0YXJ0aW5nIHdpdGggc3BhY2VzISAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKFNwYWNlfFNwYWNlcygwfDEpIGFzIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICAoKiBJdCdzIDEsIDIgb3IgMyBzcGFjZXMsIG5vdCBtb3JlIGJlY2F1c2UgaXQgd291bGRuJ3QgbWVhblxuICAgICAgICAgcXVvdGluZyBhbnltb3JlIGJ1dCBjb2RlLiAqKVxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IG5ld19yLCBwLCByZXN0ID1cbiAgICAgICAgICBsZXQgZm9vLCByZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChMLmxlbmd0aCBzKSAoTmV3bGluZTo6bGV4ZW1lcykgd2l0aFxuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6Zm9vLCByZXN0IC0+IGZvbywgcmVzdFxuICAgICAgICAgICAgfCByZXMgLT4gcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCBbXSBwcmV2aW91cyAoTmV3bGluZTo6Zm9vKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUobmV3X3IsIHAsIFtdKSAtPiBuZXdfciwgcCwgcmVzdFxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChuZXdfckByKSBbTmV3bGluZV0gcmVzdFxuICAgICAgZW5kXG5cbiAgICAoKiBtaW51cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSxcbiAgICAgIChNaW51c3xNaW51c3MgXyBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKTo6XyBhcyB0bCkgLT5cbiAgICAgICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIHNvIGl0IGNvdWxkIGJlIGEgbGlzdCAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBNaW51cyAtPiAoKiBpdCdzIGEgbGlzdCAqKVxuICAgICAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgICAgICAgIHwgXyAtPiAoKiBub3QgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChNaW51c3xNaW51c3MgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgYW5kIGl0J3Mgbm90IGEgbGlzdCBlaXRoZXJcbiAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQncyBub3QgZm9sbG93ZWQgYnkgc3BhY2VzICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcblxuICAgICgqIGhhc2hlcyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXykgOjogdHRsIGFzIHRsKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKHR0bCBhcyB0bCkgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGlmIG4gPD0gNCB0aGVuXG4gICAgICAgIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIChuKzIpIHIgcHJldmlvdXMgdHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IHRsIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAxIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgfCBfLCAoSGFzaHxIYXNocyBfIGFzIHQpIDo6IHRsIC0+ICgqIGhhc2ggLS0gbm8gdGl0bGUgKilcbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFmdGVyIGEgbmV3bGluZTogY291bGQgbGVhZCB0byBociAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKChTcGFjZXxTcGFjZXMgXykgYXMgc3ApIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBociB0bCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIE5vIFtIcl0sIGJ1dCBtYXliZSBbVWxdLCBbT2xdLCBjb2RlLC4uLiAqKVxuICAgICAgICAgIGxldCBuID0gTC5sZW5ndGggc3AgaW5cbiAgICAgICAgICBsZXQgciwgcCwgbCA9XG4gICAgICAgICAgIHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyB0bCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBTb21lIHRsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYW55d2hlcmUgKilcbiAgICB8IF8sICgoU3BhY2V8U3BhY2VzIF8pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiB0b28gbWFueSBjYXNlcyB0byBiZSBoYW5kbGVkIGhlcmUgKilcbiAgICAgIGxldCBuID0gTC5sZW5ndGggdCBpblxuICAgICAgbGV0IHIsIHAsIGwgPSBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lIH5odG1sIG4gciB0bCBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuXG4gICAgKCogdW5kZXJzY29yZXMgKilcbiAgICB8IF8sIChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHVuZGVyc2NvcmUsIG9yIGVtcGggKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG4gICAgfCBfLCAoVW5kZXJzY29yZXMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHVuZGVyc2NvcmVzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuICgqIDEgdW5kZXJzY29yZSAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZSAoKiAyIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcblxuICAgICgqIGVudW1lcmF0ZWQgbGlzdHMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChOdW1iZXIgXykgOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGwgLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogcGx1cyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBQbHVzIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBzdGFycyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFyIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgKCogbWF5YmUgaHIgb3IgbmV3IGxpc3QgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXJzIF8gOjogXyB3aGVuIGhyX3MgbGV4ZW1lcyA8PiBOb25lIC0+XG4gICAgICAoKiBociAqKVxuICAgICAgKG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgfCBTb21lIGwgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBfLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiBzdGFyLCBvciBlbXBoIC8vIGNhbid0IGJlIGhyICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuICAgIHwgXywgKFN0YXJzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiBzdGFycywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBiYWNrc2xhc2hlcyAqKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChOZXdsaW5lIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXSAoTmV3bGluZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdXG4gICAgICAgIChOZXdsaW5lcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQmFja3F1b3RlIGFzIHQpIDo6IHRsIC0+ICgqIFxcYCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgMCA6OiB0bCAtPiAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdIChCYWNrcXVvdGUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXVxuICAgICAgICAoQmFja3F1b3RlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBcXCogKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyAwIDo6IHRsIC0+ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFyIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhcnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogXFxfICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgMCA6OiB0bCAtPiAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdIChVbmRlcnNjb3JlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdXG4gICAgICAgIChVbmRlcnNjb3JlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxceyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgMCA6OiB0bCAtPiAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXFsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwoICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXSAoT3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXVxuICAgICAgICAoT3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFBsdXMgYXMgdCkgOjogdGwgLT4gKCogXFwrICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgMCA6OiB0bCAtPiAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTWludXMgYXMgdCkgOjogdGwgLT4gKCogXFwtICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIDAgOjogdGwgLT4gKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRG90IGFzIHQpIDo6IHRsIC0+ICgqIFxcLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgMCA6OiB0bCAtPiAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3QgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRXhjbGFtYXRpb24gYXMgdCkgOjogdGwgLT4gKCogXFwhICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIDAgOjogdGwgLT4gKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl0gKEV4Y2xhbWF0aW9uIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl1cbiAgICAgICAgKEV4Y2xhbWF0aW9ucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoSGFzaCBhcyB0KSA6OiB0bCAtPiAoKiBcXCMgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyAwIDo6IHRsIC0+ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2hzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXD4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPiAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXVxuICAgICAgICAoR3JlYXRlcnRoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXDwgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgMCA6OiB0bCAtPiAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXSAoTGVzc3RoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXVxuICAgICAgICAoTGVzc3RoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgKEJhY2tzbGFzaHMgMCBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJcXFxcXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgKEJhY2tzbGFzaHMgbiBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgaWYgbiBtb2QgMiA9IDAgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSB0bFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSAoQmFja3NsYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoOjpbXSAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbXSBbXVxuICAgIHwgXywgQmFja3NsYXNoOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbQmFja3NsYXNoXSB0bFxuXG4gICAgKCogPCAqKVxuICAgIHwgXywgKExlc3N0aGFufExlc3N0aGFucyBfIGFzIHQpXG4gICAgICAgICA6OiAoV29yZChcImh0dHBcInxcImh0dHBzXCJ8XCJmdHBcInxcImZ0cHNcInxcInNzaFwifFwiYWZwXCJ8XCJpbWFwXCIpIGFzIHcpXG4gICAgICAgICA6OiBDb2xvbjo6U2xhc2hzKG4pOjp0bCAtPlxuICAgICAgKCogXCJzZW1pLWF1dG9tYXRpY1wiIFVSTHMgKilcbiAgICAgIGxldCByZWMgcmVhZF91cmwgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VuIHcpIF4gXCI6Ly9cIlxuICAgICAgICAgICAgXiAoaWYgbiA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLm1ha2UgKG4tMSkgJy8nKVxuICAgICAgICAgICAgXiBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IGFjY3UpXG4gICAgICAgICAgaW4gU29tZSh1cmwsIHRsKVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgcmVhZF91cmwgKHg6OmFjY3UpIHRsXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF91cmwgW10gdGwgd2l0aFxuICAgICAgICB8IFNvbWUodXJsLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBcbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgMCAtPiBUZXh0IFwiPFwiIDo6IHJcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnPCcpIDo6IHJcbiAgICAgICAgICAgIHwgXyAtPiByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChVcmwodXJsLFtUZXh0IHVybF0sXCJcIik6OnIpIFtdIG5ld190bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG5cbiAgICAoKiBXb3JkKHcpICopXG4gICAgfCBfLCBXb3JkIHc6OnRsIC0+XG4gICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB3IDo6IHIpIFtXb3JkIHddIHRsXG5cbiAgICAoKiBuZXdsaW5lIGF0IHRoZSBlbmQgKilcbiAgICB8IF8sIFtOZXdsaW5lXSAtPlxuICAgICAgTkw6OnJcblxuICAgICgqIG5hbWVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoV29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bCkgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB3IGh0bWxjb2Rlc19zZXQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6TnVtYmVyIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIG1heWJlIGhleCBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6OldvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIHdoZW4gaXNfaGV4IHcgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cblxuICAgICgqIEFtcGVyc2FuZCAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtBbXBlcnNhbmRdIHRsXG5cbiAgICAoKiAyIEFtcGVyc2FuZHMgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMoMCk6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZDo6dGwpXG5cbiAgICAoKiBTZXZlcmFsIEFtcGVyc2FuZHMgKG1vcmUgdGhhbiAyKSAqKVxuICAgIHwgXywgQW1wZXJzYW5kcyhuKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kcyhuLTEpOjp0bClcblxuICAgICgqIGJhY2txdW90ZXMgKilcbiAgICB8IF8sIChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgfmRlZmF1bHRfbGFuZyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCAqKVxuICAgICgqIDxici8+IGFuZCA8aHIvPiB3aXRoIG9yIHdpdGhvdXQgc3BhY2UocykgKilcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bClcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjooU3BhY2V8U3BhY2VzIF8pOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGcgd2l0aFxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBhd2FpdGVkIG9ycGhhbiBodG1sIGNsb3NpbmcgdGFnICopXG4gICAgfCBfLCBMZXNzdGhhbjo6U2xhc2g6OldvcmQodyk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGxcbiAgICAgIHdoZW4gIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gLT5cbiAgICAgIHJhaXNlIChPcnBoYW5fY2xvc2luZyh3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdGwpKSlcblxuICAgICgqIGJsb2NrIGh0bWwgKilcbiAgICB8IChbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF98VGFnKFwiSFRNTEJMT0NLXCIsIF8pXSksXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW1dvcmQgXCJcIl0gbGV4ZW1lc1xuICAgICAgZWxzZSBpZiBub3QgKGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldCkgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgRlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0IGh0bWwgbCA9XG4gICAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCA/KGh0bWw9aHRtbCkgbCA9XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBsZXQgZl9hID0gZmlsdGVyX3RleHRfb21kX3JldiBhIGluXG4gICAgICAgICAgICAgICAgICBpZiBmX2EgIT0gYSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgZl9hLFxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAobWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6ZmFsc2UgKExpc3QucmV2IGMpKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LCBmX2EsIG1kX29mX2ludGVybV9saXN0IH5odG1sOnRydWUgKExpc3QucmV2IGMpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZEBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6UlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdFxuICAgICAgICAgICAgICAgICAgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIChMaXN0LnJldiB0MikpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgaWYgaHRtbCB0aGVuXG4gICAgICAgICAgICAgICAgICBSYXcoTC5zdHJpbmdfb2ZfdG9rZW5zIHQpIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWFpbl9sb29wIH5odG1sIFtdIFtXb3JkIFwiXCJdIHRcbiAgICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldiB0KSA6OiB0bClcbiAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCBsID0gbWRfb2ZfaW50ZXJtX2xpc3QgdHJ1ZSBsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0IvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0IvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgICB8IFQuUlRPS0VOUyByIDo6IGJvZHkgLT4gVC5SVE9LRU5TKHg6OnIpOjpib2R5XG4gICAgICAgICAgICB8IF8gLT4gVC5SVE9LRU5TW3hdIDo6IGJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzMzMgQkhUTUwgbG9vcCBib2R5PSVTIHRhZ3N0YXR1cz0lUyAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSlcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQwMSBCSFRNTCBOb3QgZW5vdWdoIHRvIHJlYWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKSA6OiB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MTkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgIFNsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgb3BlbmVyICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc1IEJIVE1MIHByb3Blcmx5IGNsb3NpbmcgJVNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc5IEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5SVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzgzIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgaWYgIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChPcnBoYW5fY2xvc2luZyh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5zKG4tMSk6OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIDNcXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldFxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgPFdvcmQoJXMpLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGF0dHJzIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5NiBCSFRNTCB0YWcgJVMgYnV0IGF0dHJzIDw+IFtdXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MjEgQkhUTUwgdGFnICVTLCB0YWdzdGF0dXM9JVMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycz1bXSwgdG9rZW5zPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MzMgQkhUTUwgdGFnc3RhdHVzPSVTIHRva2Vucz0lU1xcbiUhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgaWYgTGlzdC5tZW0gKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIikgYXR0cnMgdGhlblxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSB0IDo6ICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlKG1haW5faW1wbF9yZXYgfmh0bWwgW10gW10gdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MjQgQkhUTUwgY2xvc2luZyB0YWcgbm90IGZvdW5kIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluICVTXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDbG9zaW5nIHRhZyBgJXMnIG5vdCBmb3VuZCBmb3IgdGV4dC9vbWQgem9uZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gTGlzdC50bCAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ycGhhbl9jbG9zaW5nKHRhZ25hbWUsIGRlbGltaXRlciwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmIHIgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gYXMgZSA6OiB0bCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbjo6XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExlc3N0aGFuOjp0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbjo6clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbnMobi0xKTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgPT0gZGVsaW1pdGVyIHx8IGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IChlOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmIFtdIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NTIgQkhUTUwgdG9rZW5zPSVzIGRlbGltaXRlcj0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcj0lcyBiZWZvcmU9JXMgKHRhZ25hbWU9dCk9JWJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGRlbGltaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBiZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnbmFtZSA9IHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICFtZWRpYXR5cGV0ZXh0b21kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogdGwgLT4gbWVkaWF0eXBldGV4dG9tZCA6PSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRhZ25hbWUgPSB0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULkhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULk1EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX2ltcGwgfmh0bWwgW10gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ19zZXRleHQgbWFpbl9sb29wIGJlZm9yZSkpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNTcxIEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MTkgQkhUTUwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYm9keSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTggQkhUTUwgRm91bmQgYSBjbG9zaW5nIHRhZyAlc1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSwgbClcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgMzU5MSBCSFRNTCBTb21lIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgR3JlYXRlcnRoYW4gYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NDIgQkhUTUwgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzYyOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjYxIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzY1NCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTAgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIyIEJIVE1MICVzPSVTICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnMgYXMgZGd0c1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIwIEJIVE1MIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgZGd0cyk7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM3MzcgQkhUTUwgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmVzIF8gYXMgeCkgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzgyNyBCSFRNTCBuZXdsaW5lc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgd2FybiBcInRoZXJlIGFyZSBlbXB0eSBsaW5lcyBpbiB3aGF0IG1heSBiZSBhbiBIVE1MIGJsb2NrXCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc0MiBCSFRNTCBmYWxsYmFjayB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBcIk5vbmVcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gXCJBd2FpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+IFwiT3BlbiAoY2FuJ3QgYmUpXCIpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGgsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbVGFnKFwiSFRNTEJMT0NLXCIsIGVtcHR5X2V4dGVuc2lvbildIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGJsb2NrIEhUTUwuICopXG5cblxuICAgICgqIGlubGluZSBIVE1MICopXG4gICAgfCBfLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIChzdHJpY3RfaHRtbCAmJiBub3QoU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQpKVxuICAgICAgfHwgbm90KGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldClcbiAgICAgIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IFRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIEh0bWwodCwgYSwgbWRfb2ZfaW50ZXJtX2xpc3QoTGlzdC5yZXYgYykpOjptZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPiBtZCBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQxOjpUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKFRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsIH5odG1sIFtdIFtXb3JkIFwiXCJdICh0KVxuICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7SS9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7SS9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBULlRPS0VOU1t4XTo6Ym9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICgqIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgYm9keT0oJXMpICVzXFxuJSFcIiAqKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKSAqKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCk6Ol8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5vdCBlbm91Z2ggdG8gcmVhZCBmb3IgaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpOjp0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuO1NsYXNoXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIG11bHRpcGxlIG5ld2xpbmVzIGFyZSBub3QgdG8gYmUgc2VlbiBpbiBpbmxpbmUgSFRNTCAqKVxuICAgICAgICAgICAgfCBOZXdsaW5lcyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgTXVsdGlwbGUgbGluZXMgaW4gaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IF8gLT4gd2FybiBcIm11bHRpcGxlIG5ld2xpbmVzIGluIGlubGluZSBIVE1MXCI7IE5vbmUpXG4gICAgICAgICAgICAoKiBtYXliZSBjb2RlICopXG4gICAgICAgICAgICB8IChCYWNrcXVvdGUgfCBCYWNrcXVvdGVzIF8gYXMgYik6OnRsIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm8gY29kZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm9uZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBsZXQncyB0cnlcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgW10gW1NwYWNlXSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKCgoQ29kZSBfOjpfKSBhcyBjKSwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5NRCBjOjpib2R5KSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogZmFpbGVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tiXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRsXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxMzYgcHJvcGVybHkgY2xvc2luZyAlUyB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTU0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyBub3RoaW5nIHdpdGggJVMgM1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IChzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaW5saW5lX2h0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgICB8fCAobm90IHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDwlcy4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3OTYgdGFnICVzLCBhdHRycz1bXVxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbd29yZDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYix0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODUgZW5kIG9mIG9wZW5pbmcgdGFnIHRva2Vucz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyBhcyB0cyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSA0MTkyIEZvdW5kIGEgY2xvc2luZyB0YWcgJXMgdHM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBOb3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJzXSBoZXJlIGJlY2F1c2UgaW4gd2UgaGF2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnc3RhdHVzXSBtYXRjaGVzIFtULk9wZW4gXyA6OiBfXSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIGZpbHRlciB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgY2FyZSBvZiBhdHRycyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSBUdXJucyBvdXQgYW4gYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbl06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MjAyIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgzOTU3KSAlcz0lUyAlc1xcbiUhXCIgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2g7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgIHwgQmFja3NsYXNocyhuKTo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgJiYgbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNocyhuKTt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuXG4gICAgICAgICAgICB8IHg6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDE2MSkgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyAoeDo6dG9rZW5zKSk7XG4gICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbeF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgKDQyODkpIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDI5NCkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayB3aXRoIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpbiBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShodG1sLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGh0bWwsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbR3JlYXRlcnRoYW5dIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGlubGluZSBIVE1MLiAqKVxuXG4gICAgKCogPCA6IGVtYWlscyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfYXV0b2VtYWlsIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogbGluZSBicmVha3MgKilcbiAgICB8IF8sIE5ld2xpbmU6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6cikgW05ld2xpbmVdIHRsXG4gICAgfCBfLCBOZXdsaW5lcyBfOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6Ok5MOjpyKSBbTmV3bGluZV0gdGxcblxuICAgICgqIFsgKilcbiAgICB8IF8sIChPYnJhY2tldCBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2xpbmsgbWFpbl9sb29wIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYXRjaCBtYXliZV9yZWZlcmVuY2UgbWFpbl9sb29wIHJjIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW10oL3BhdGgvdG8vaW1nLmpwZykgKilcbiAgICAgICh0cnlcbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIGxldCBiLCB0bCA9IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIHRsIGluXG4gICAgICAgICAgICgqIG5ldyBsaW5lcyB0aGVyZSBhcmUgYWxsb3dlZCAqKVxuICAgICAgICAgICBsZXQgciAoKiB1cGRhdGVkIHJlc3VsdCAqKSA9IG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgdHJ5IFNvbWUocmVhZF91bnRpbF9zcGFjZSB+YnE6ZmFsc2Ugfm5vX25sOnRydWUgYilcbiAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gTm9uZVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgU29tZSh1cmwsIHRscykgLT5cbiAgICAgICAgICAgICBsZXQgdGl0bGUsIHNob3VsZF9iZV9lbXB0eV9saXN0ID1cbiAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZCAocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bHMpKSBpblxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgYiBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIFwiXCIpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogaW1nIHJlZiAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9uIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiByZWYgaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdW3JlZl0gKilcbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBpZCwgdGwgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDp0cnVlIHRsIGluXG4gICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCB0bCBsZXhlbWVzIGluXG4gICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBcIlwiLCBmYWxsYmFjaykgOjogcikgW0NicmFja2V0XSB0bFxuICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdCk6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggXCJhbHRcIiAqKVxuICAgICAgKCogIVtBbHQgdGV4dF0oL3BhdGgvdG8vaW1nLmpwZyBcIk9wdGlvbmFsIHRpdGxlXCIpICopXG4gICAgICAodHJ5XG4gICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHRsIHdpdGhcbiAgICAgICAgIHwgYWx0LCBPcGFyZW50aGVzaXM6Om50bCAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgIGxldCBwYXRoX3RpdGxlLCByZXN0ID1cbiAgICAgICAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGgsIHRpdGxlID1cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfc3BhY2UgfmJxOnRydWUgfm5vX25sOnRydWUgcGF0aF90aXRsZVxuICAgICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBwYXRoX3RpdGxlLCBbXSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIG5vdGhpbmcgPVxuICAgICAgICAgICAgICAgIGlmIHRpdGxlIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRpdGxlKSlcbiAgICAgICAgICAgICAgICBlbHNlIFtdLCBbXSBpblxuICAgICAgICAgICAgICBpZiBub3RoaW5nIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb247ICgqIGNhdWdodCByaWdodCBiZWxvdyAqKVxuICAgICAgICAgICAgICBsZXQgciA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGggPSBMLnN0cmluZ19vZl90b2tlbnMgcGF0aCBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKGFsdCwgcGF0aCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uXG4gICAgICAgICAgICAoKiBpZiBOTF9leGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlbiBmYWxsIGJhY2sgdG8gXCJ0ZXh0XCIgKilcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgICAgOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pOjpDYnJhY2tldDo6bnRsIC0+XG4gICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIG50bCBsZXhlbWVzIGluXG4gICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cikgW0NicmFja2V0XSBudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KChOZXdsaW5lfFNwYWNlfFNwYWNlcyBffFdvcmQgX3xOdW1iZXIgXyk6Ol9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG50bCkgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgICAgfCBpZCwgcmVzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlc3QgbGV4ZW1lcyBpblxuICAgICAgICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKVxuICAgICAgICAgICAgICAgICAgW0NicmFja2V0XVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgIHwgXyxcbiAgICAgIChBdHxCYXJ8Q2FyZXR8Q2JyYWNlfENvbG9ufENvbW1hfENwYXJlbnRoZXNpc3xDYnJhY2tldHxEb2xsYXJcbiAgICAgIHxEb3R8RG91YmxlcXVvdGV8RXhjbGFtYXRpb258RXF1YWx8TWludXN8T2JyYWNlfE9wYXJlbnRoZXNpc1xuICAgICAgfFBlcmNlbnR8UGx1c3xRdWVzdGlvbnxRdW90ZXxTZW1pY29sb258U2xhc2h8VGFifFRpbGRlXG4gICAgICB8R3JlYXRlcnRoYW4gYXMgdCk6OnRsXG4gICAgICAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG4gICAgfCBfLCAoTnVtYmVyIF8gIGFzIHQpOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgfCBfLCAoQXRzIF8gfCBCYXJzIF8gfCBDYXJldHMgXyB8IENicmFjZXMgXyB8IENicmFja2V0cyBfIHwgQ29sb25zIF9cbiAgICAgICAgIHwgQ29tbWFzIF8gfCBDcGFyZW50aGVzaXNzIF8gfCBEb2xsYXJzIF8gfCBEb3RzIF8gfCBEb3VibGVxdW90ZXMgX1xuICAgICAgICAgfCBFcXVhbHMgXyB8IEV4Y2xhbWF0aW9ucyBfIHwgR3JlYXRlcnRoYW5zIF8gfCBMZXNzdGhhbnMgX1xuICAgICAgICAgfCBNaW51c3MgXyB8IE9icmFjZXMgXyB8IE9icmFja2V0cyBfIHwgT3BhcmVudGhlc2lzcyBfXG4gICAgICAgICB8IFBlcmNlbnRzIF8gfCBQbHVzcyBfIHwgUXVlc3Rpb25zIF8gfCBRdW90ZXMgXyB8IFNlbWljb2xvbnMgX1xuICAgICAgICAgfCBTbGFzaHMgXyB8IFN0YXJzIF8gfCBUYWJzIF8gfCBUaWxkZXMgXyB8IFVuZGVyc2NvcmVzIF8gYXMgdGspXG4gICAgICAgICA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHRrMCwgdGtzID0gTC5zcGxpdF9maXJzdCB0ayBpblxuICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdGswIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB0ZXh0IDo6IHIpIFt0azBdICh0a3MgOjogdGwpXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG5cbiAgYW5kIG1haW5faW1wbCB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbCBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIExpc3QucmV2IChtYWluX2xvb3BfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lcylcblxuICBhbmQgbWFpbl9sb29wID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbCB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuICBhbmQgbWFpbl9sb29wX3JldiA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG5cbiAgbGV0IG1haW5fcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9sb29wIFtdIFtdICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzKVxuXG4gIGxldCBwYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX3BhcnNlIGxleGVtZXNcblxuZW5kXG5cbmxldCBkZWZhdWx0X3BhcnNlID8oZXh0ZW5zaW9ucz1bXSkgPyhkZWZhdWx0X2xhbmc9XCJcIikgbGV4ZW1lcyA9XG4gIGxldCBlID0gZXh0ZW5zaW9ucyBhbmQgZCA9IGRlZmF1bHRfbGFuZyBpblxuICBsZXQgbW9kdWxlIEUgPSBEZWZhdWx0X2VudihVbml0KSBpblxuICBsZXQgbW9kdWxlIE0gPVxuICAgIE1ha2Uoc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gZVxuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IGRcbiAgICBlbmQpXG4gIGluXG4gIE0ubWFpbl9wYXJzZSBsZXhlbWVzXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFlvdSBzaG91bGQgZWl0aGVyIHVzZSB0aGlzIG1vZHVsZSBvciBPbWRfbGV4ZXIsIG5vdCBib3RoLlxuICAgIFRoaXMgbW9kdWxlIGluY2x1ZGVzIE9tZF9sZXhlci5cbiopXG5cbmluY2x1ZGUgT21kX2xleGVyXG5cbmxldCBsZXhfZnJvbV9pbmNoYW5uZWwgaWMgPVxuICAoKiBNYWludGVuYW5jZS1lYXNpbmVzcy1kcml2ZW4gaW1wbGVtZW50YXRpb24uICopXG4gIGxldCBpY19jb250ZW50ID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIChpbnB1dF9jaGFyIGljKVxuICAgICAgICBkb25lO1xuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGxleCBpY19jb250ZW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBPTUQ6IE1hcmtkb3duIHRvb2wgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlOiAgSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaHRtbCA9IGh0bWxfbm9kZSBsaXN0XG5cbmFuZCBodG1sX25vZGUgPVxuICB8IE5vZGUgb2Ygbm9kZW5hbWUgKiBhdHRyaWJ1dGVzICogaHRtbFxuICB8IERhdGEgb2Ygc3RyaW5nXG4gIHwgUmF3ZGF0YSBvZiBzdHJpbmdcbiAgfCBDb21tZW50IG9mIHN0cmluZ1xuXG5hbmQgbm9kZW5hbWUgPSBzdHJpbmdcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgYXR0cmlidXRlID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG5sZXQgdG9fc3RyaW5nIGh0bWwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcHAgZiA9IFByaW50Zi5icHJpbnRmIGIgZiBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgTm9kZShub2RlbmFtZSwgYXR0cmlidXRlcywgaHRtbCkgLT5cbiAgICAgIHBwIFwiPCVzXCIgbm9kZW5hbWU7XG4gICAgICBwcGEgYXR0cmlidXRlcztcbiAgICAgIHBwIFwiPlwiO1xuICAgICAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgICAgIHBwIFwiPC8lcz5cIiBub2RlbmFtZVxuICAgIHwgRGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBSYXdkYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IENvbW1lbnQgYyAtPiBwcCBcIjwhLS0gJXMgLS0+XCIgY1xuICBhbmQgcHBhIGF0dHJzID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICAgIGVsc2UgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcCBcIiAlcz1cXFwiXCIgYTtcbiAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdiAtIDEgZG9cbiAgICAgICAgICAgICAgICBtYXRjaCB2LltpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnXCInIC0+IHBwIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgICB8IGMgICAgLT4gcHAgXCIlY1wiIGNcbiAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgcHAgXCJcXFwiXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnNcbiAgaW5cbiAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmluY2x1ZGUgT21kX3JlcHJlc2VudGF0aW9uXG5pbmNsdWRlIE9tZF9iYWNrZW5kXG5cbmxldCBvZl9pbnB1dCBsZXggP2V4dGVuc2lvbnM6ZSA/ZGVmYXVsdF9sYW5nOmQgcyA9XG4gIGxldCBtb2R1bGUgRSA9IE9tZF9wYXJzZXIuRGVmYXVsdF9lbnYoc3RydWN0IGVuZCkgaW5cbiAgbGV0IG1vZHVsZSBQYXJzZXIgPSBPbWRfcGFyc2VyLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gbWF0Y2ggZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmV4dGVuc2lvbnNcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBtYXRjaCBkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZGVmYXVsdF9sYW5nXG4gICAgZW5kXG4gICkgaW5cbiAgbGV0IG1kID1cbiAgICBQYXJzZXIucGFyc2UgKGxleCBzKVxuICBpblxuICBQYXJzZXIubWFrZV9wYXJhZ3JhcGhzIG1kXG5cbmxldCBvZl9zdHJpbmcgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4XG5sZXQgb2ZfYmlnYXJyYXkgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4X2JpZ2FycmF5XG5cbmxldCB0b19odG1sIDpcbiAgP292ZXJyaWRlOihPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCAtPiBzdHJpbmcgb3B0aW9uKSAtPlxuICA/cGluZGVudDpib29sIC0+XG4gID9ubDJicjpib29sIC0+XG4gID9jczpjb2RlX3N0eWxpc3QgLT5cbiAgdCAtPlxuICBzdHJpbmdcbiAgPVxuICBodG1sX29mX21kXG5cbmxldCB0b190ZXh0IDogdCAtPiBzdHJpbmcgPSB0ZXh0X29mX21kXG5cbmxldCB0b19tYXJrZG93biA6IHQgLT4gc3RyaW5nID0gbWFya2Rvd25fb2ZfbWRcblxubGV0IGh0bWxfb2Zfc3RyaW5nIChodG1sOnN0cmluZykgOiBzdHJpbmcgPVxuICBodG1sX29mX21kIChPbWRfcGFyc2VyLmRlZmF1bHRfcGFyc2UgKE9tZF9sZXhlci5sZXggaHRtbCkpXG5cblxubGV0IHJlYyBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgPSBmdW5jdGlvblxuICB8IENvZGUoXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZShsYW5nLCBjb2RlKSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBDb2RlX2Jsb2NrKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGVfYmxvY2sobGFuZywgY29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBSZWN1cnNlIG9uIGFsbCBlbGVtZW50cyBldmVuIHRob3VnaCBjb2RlIChibG9ja3MpIGFyZSBub3QgYWxsb3dlZFxuICAgICBldmVyeXdoZXJlLiAqKVxuICB8IEgxIHQgOjogdGwgLT4gSDEoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgyIHQgOjogdGwgLT4gSDIoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgzIHQgOjogdGwgLT4gSDMoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg0IHQgOjogdGwgLT4gSDQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg1IHQgOjogdGwgLT4gSDUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg2IHQgOjogdGwgLT4gSDYoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFBhcmFncmFwaCB0IDo6IHRsIC0+IFBhcmFncmFwaChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEVtcGggdCA6OiB0bCAtPiBFbXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCb2xkIHQgOjogdGwgLT4gQm9sZChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWwgdCA6OiB0bCAtPiBVbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbCB0IDo6IHRsIC0+IE9sKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVscCB0IDo6IHRsIC0+IFVscChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2xwIHQgOjogdGwgLT4gT2xwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVcmwoaHJlZiwgdCwgdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLCBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCwgdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJsb2NrcXVvdGUgdCA6OiB0bCAtPiBCbG9ja3F1b3RlKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBFbGVtZW50cyB0aGF0IGRvIG5vdCBjb250YWluIE1hcmtkb3duLiAqKVxuICB8IChUZXh0IF98Q29kZSBffENvZGVfYmxvY2sgX3xCcnxIcnxOTHxSZWYgX3xJbWdfcmVmIF98UmF3IF98UmF3X2Jsb2NrIF9cbiAgICB8SHRtbCBffEh0bWxfYmxvY2sgX3xIdG1sX2NvbW1lbnQgX3xJbWcgX3xYIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgZSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBbXSAtPiBbXVxuXG5cbigqIFRhYmxlIG9mIGNvbnRlbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEdpdmVuIGEgbGlzdCBvZiBoZWFkZXJzIOKAlCBpbiB0aGUgb3JkZXIgb2YgdGhlIGRvY3VtZW50IOKAlCBnbyB0byB0aGVcbiAgIHJlcXVlc3RlZCBzdWJzZWN0aW9uLiAgV2UgZmlyc3Qgc2VlayBmb3IgdGhlIFtudW1iZXJddGggaGVhZGVyIGF0XG4gICBbbGV2ZWxdLiAgKilcbmxldCByZWMgZmluZF9zdGFydCBoZWFkZXJzIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIG1hdGNoIGhlYWRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKEgxIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDIgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDMgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAzIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg0IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDUgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDYgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA2IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuXG5hbmQgZGVhbF93aXRoX2hlYWRlciBoX2xldmVsIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgaWYgaF9sZXZlbCA+IGxldmVsIHRoZW4gKCogU2tpcCwgcmlnaHQgW2xldmVsXS1oZWFkZXIgbm90IHlldCByZWFjaGVkLiAqKVxuICAgIGlmIG51bWJlciA9IDAgdGhlblxuICAgICAgKCogQXNzdW1lIGVtcHR5IHNlY3Rpb24gYXQgW2xldmVsXSwgZG8gbm90IGNvbnN1bWUgdG9rZW4uICopXG4gICAgICAobWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgIHwgW10gLT4gaGVhZGVycyAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCBoZWFkZXJzIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnMpXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBsZXZlbCB0aGVuIChcbiAgICAoKiBBdCBwcm9wZXIgW2xldmVsXS4gIEhhdmUgd2UgcmVhY2hlZCB0aGUgW251bWJlcl0gb25lPyAqKVxuICAgIGlmIG51bWJlciA8PSAxIHRoZW4gKFxuICAgICAgbWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgfCBbXSAtPiB0bCAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IHRsIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnNcbiAgICApXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIChudW1iZXIgLSAxKSBzdWJzZWN0aW9uc1xuICApXG4gIGVsc2UgKCogaF9sZXZlbCA8IGxldmVsICopXG4gICAgW10gKCogU291Z2h0IFtsZXZlbF0gaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHNlY3Rpb24gKilcblxuKCogQXNzdW1lIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlcnMgd2UgYXJlIGludGVyZXN0ZWQgaW4uXG4gICBSZXR1cm4gdGhlIGxpc3Qgb2YgVE9DIGVudHJpZXMgZm9yIFttaW5fbGV2ZWxdIGFuZCB0aGUgW2hlYWRlcnNdXG4gICBub3QgdXNlZCBmb3IgdGhlIFRPQyBlbnRyaWVzLiAqKVxubGV0IHJlYyBtYWtlX3RvYyAoaGVhZGVyczooZWxlbWVudCpzdHJpbmcqc3RyaW5nKWxpc3QpIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIG1pbl9sZXZlbCA+IG1heF9sZXZlbCB0aGVuIFtdLCBoZWFkZXJzXG4gIGVsc2UgKFxuICAgIG1hdGNoIGhlYWRlcnMgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCAoSDEgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDEgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgzIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAzIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDQgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDQgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg2IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA2IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIClcbmFuZCB0b2NfZW50cnkgaGVhZGVycyBoX2xldmVsIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgaF9sZXZlbCA+IG1heF9sZXZlbCB0aGVuICgqIHRvbyBkZWVwLCBza2lwICopXG4gICAgbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gIGVsc2UgaWYgaF9sZXZlbCA8IG1pbl9sZXZlbCB0aGVuXG4gICAgKCogc2VjdGlvbiB3ZSB3YW50ZWQgdGhlIFRPQyBmb3IgaXMgZmluaXNoZWQsIGRvIG5vdCBjb21zdW1lIHRoZSB0b2tlbiAqKVxuICAgIFtdLCBoZWFkZXJzXG4gIGVsc2UgaWYgaF9sZXZlbCA9IG1pbl9sZXZlbCB0aGVuIChcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvY19lbnRyeSA9IG1hdGNoIHN1Yl90b2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTF1cbiAgICAgIHwgXyAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTDsgVWwgc3ViX3RvYzsgTkxdIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICB0b2NfZW50cnkgOjogdG9jLCB0bFxuICApIGVsc2UgKCogaF9sZXZlbCA+IG1pbl9sZXZlbCAqKVxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIGhlYWRlcnMgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgW1VsIHN1Yl90b2NdIDo6IHRvYywgdGxcblxubGV0IHRvYyA/KHN0YXJ0PVtdKSA/KGRlcHRoPTIpIG1kID1cbiAgaWYgZGVwdGggPCAxIHRoZW4gaW52YWxpZF9hcmcgXCJPbWQudG9jOiB+ZGVwdGggbXVzdCBiZSA+PSAxXCI7XG4gIGxldCBoZWFkZXJzID0gT21kX2JhY2tlbmQuaGVhZGVyc19vZl9tZCB+cmVtb3ZlX2hlYWRlcl9saW5rczp0cnVlIG1kIGluXG4gIGxldCBoZWFkZXJzID0gbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgW10gLT4gaGVhZGVyc1xuICAgIHwgbnVtYmVyIDo6IHN1YnNlY3Rpb25zIC0+XG4gICAgICAgaWYgbnVtYmVyIDwgMCB0aGVuIGludmFsaWRfYXJnKFwiT21kLnRvYzogbGV2ZWwgMSBzdGFydCBtdXN0IGJlID49IDBcIik7XG4gICAgICAgZmluZF9zdGFydCBoZWFkZXJzIDEgbnVtYmVyIHN1YnNlY3Rpb25zIGluXG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBzdGFydCBpblxuICBsZXQgdG9jLCBfID0gbWFrZV90b2MgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgfm1pbl9sZXZlbDoobGVuICsgMSkgfm1heF9sZXZlbDoobGVuICsgZGVwdGgpIGluXG4gIG1hdGNoIHRvYyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBfIC0+IFtVbCh0b2MpXVxuXG5sZXQgYWRkX3RvYyA/c3RhcnQgP2RlcHRoID90aXRsZSBtZCA9XG4gIGxldCB0b2MgPSB0b2MgP3N0YXJ0ID9kZXB0aCBtZCBpblxuICAoKiBSZXBsYWNlIFwiKlRhYmxlIG9mIGNvbnRlbnRzKlwiIHdpdGggdGhlIGFjdHVhbCBUT0MuICopXG4gIHRvY1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbnR5cGUga2V5ID0gc3RyaW5nO1xuXG5tb2R1bGUgUmVxdWVzdCA9IHtcbiAgW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB2YWx1ZSA9IEhhejNsY29yZS5Nb2RlbFJlc3VsdHMudDtcbiAgW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gdmFsdWU7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHByb2dyYW0gPT4gcHJvZ3JhbSB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubW9kdWxlIFJlc3BvbnNlID0ge1xuICBbQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhbHVlID0gSGF6M2xjb3JlLk1vZGVsUmVzdWx0cy50O1xuICBbQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB2YWx1ZTtcblxuICBsZXQgc2VyaWFsaXplID0gciA9PiByIHw+IHNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICBsZXQgZGVzZXJpYWxpemUgPSBzZXhwID0+IHNleHAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiB0X29mX3NleHA7XG59O1xuXG5sZXQgd29yayA9IChyZXM6IFJlcXVlc3QudmFsdWUpOiBSZXNwb25zZS52YWx1ZSA9PlxuICBIYXozbGNvcmUuTW9kZWxSZXN1bHRzLnJ1bl9wZW5kaW5nKFxuICAgIH5zZXR0aW5ncz1IYXozbGNvcmUuQ29yZVNldHRpbmdzLm9uLFxuICAgIHJlcyxcbiAgKTtcblxubGV0IG9uX3JlcXVlc3QgPSAocmVxOiBzdHJpbmcpOiB1bml0ID0+XG4gIHJlcVxuICB8PiBSZXF1ZXN0LmRlc2VyaWFsaXplXG4gIHw+IHdvcmtcbiAgfD4gUmVzcG9uc2Uuc2VyaWFsaXplXG4gIHw+IEpzX29mX29jYW1sLldvcmtlci5wb3N0X21lc3NhZ2U7XG5cbmxldCBzdGFydCA9ICgpID0+IEpzX29mX29jYW1sLldvcmtlci5zZXRfb25tZXNzYWdlKG9uX3JlcXVlc3QpO1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gV29ya2VyU2VydmVyO1xuXG5sZXQgbmFtZSA9IFwid29ya2VyLmpzXCI7IC8vIFdvcmtlciBmaWxlIG5hbWVcbmxldCB0aW1lb3V0RHVyYXRpb24gPSAyMDAwMDsgLy8gV29ya2VyIHRpbWVvdXQgaW4gbXNcblxubGV0IGluaXRXb3JrZXIgPSAoKSA9PiBXb3JrZXIuY3JlYXRlKG5hbWUpO1xuXG5sZXQgd29ya2VyUmVmOiByZWYoSnMudChXb3JrZXIud29ya2VyKHN0cmluZywgc3RyaW5nKSkpID1cbiAgcmVmKGluaXRXb3JrZXIoKSk7XG5cbmxldCB0aW1lb3V0SWQgPSByZWYoTm9uZSk7XG5cbmxldCByZXN0YXJ0X3dvcmtlciA9ICgpOiB1bml0ID0+IHtcbiAgd29ya2VyUmVmLmNvbnRlbnRzIyN0ZXJtaW5hdGU7XG4gIHdvcmtlclJlZi5jb250ZW50cyA9IGluaXRXb3JrZXIoKTtcbn07XG5cbmxldCByZXF1ZXN0ID1cbiAgICAoXG4gICAgICByZXE6IFJlcXVlc3QudCxcbiAgICAgIH5oYW5kbGVyOiBSZXNwb25zZS50ID0+IHVuaXQsXG4gICAgICB+dGltZW91dDogUmVxdWVzdC50ID0+IHVuaXQsXG4gICAgKVxuICAgIDogdW5pdCA9PiB7XG4gIGxldCBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyID0gd29ya2VyID0+IHtcbiAgICB3b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgIERvbS5oYW5kbGVyKGV2dCA9PiB7XG4gICAgICAgIHN3aXRjaCAodGltZW91dElkLmNvbnRlbnRzKSB7XG4gICAgICAgIHwgU29tZShpZCkgPT4gRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQoaWQpXG4gICAgICAgIHwgTm9uZSA9PiAoKVxuICAgICAgICB9O1xuICAgICAgICB0aW1lb3V0SWQuY29udGVudHMgPSBOb25lOyAvKiBDbGVhciB0aW1lb3V0IGFmdGVyIHJlc3BvbnNlICovXG4gICAgICAgIGV2dCMjLmRhdGEgfD4gUmVzcG9uc2UuZGVzZXJpYWxpemUgfD4gaGFuZGxlcjtcbiAgICAgICAgSnMuX3RydWU7XG4gICAgICB9KTtcbiAgfTtcblxuICAvKiBJZiB0aGVyZSdzIGFuIG9uZ29pbmcgcmVxdWVzdCwgdGVybWluYXRlIHRoZSB3b3JrZXIgYW5kIHJlaW5pdGlhbGl6ZSAqL1xuICBzd2l0Y2ggKHRpbWVvdXRJZC5jb250ZW50cykge1xuICB8IFNvbWUoaWQpID0+XG4gICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQoaWQpO1xuICAgIHJlc3RhcnRfd29ya2VyKCk7XG4gIHwgTm9uZSA9PiAoKVxuICB9O1xuXG4gIHNldHVwV29ya2VyTWVzc2FnZUhhbmRsZXIod29ya2VyUmVmLmNvbnRlbnRzKTtcblxuICB3b3JrZXJSZWYuY29udGVudHMjI3Bvc3RNZXNzYWdlKFJlcXVlc3Quc2VyaWFsaXplKHJlcSkpO1xuXG4gIGxldCBvblRpbWVvdXQgPSAoKTogdW5pdCA9PiB7XG4gICAgcmVzdGFydF93b3JrZXIoKTtcbiAgICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG4gICAgdGltZW91dChyZXEpO1xuICB9O1xuXG4gIHRpbWVvdXRJZC5jb250ZW50cyA9XG4gICAgU29tZShcbiAgICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dChcbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayhvblRpbWVvdXQpLFxuICAgICAgICBmbG9hdF9vZl9pbnQodGltZW91dER1cmF0aW9uKSxcbiAgICAgICksXG4gICAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQgYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdKSxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24oYWN0aW9uKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgIF0pLFxuICAgIFtpY29uXSxcbiAgKTtcblxubGV0IGJ1dHRvbl9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24pID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wibmFtZWQtbWVudS1pdGVtXCJdKSwgQXR0ci5vbl9jbGljayhhY3Rpb24pXSksXG4gICAgW2J1dHRvbihpY29uLCBfID0+IEVmZmVjdC5JZ25vcmUpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG5cbmxldCBidXR0b25fZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24sIH5kaXNhYmxlZDogYm9vbCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdIEAgKGRpc2FibGVkID8gW1wiZGlzYWJsZWRcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgICBBdHRyLm9uX21vdXNlZG93bihfID0+IHVubGVzcyhkaXNhYmxlZCwgYWN0aW9uKSksXG4gICAgICBdKSxcbiAgICBbaWNvbl0sXG4gICk7XG5cbmxldCBsaW5rID0gKH50b29sdGlwPVwiXCIsIGljb24sIHVybCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiaWNvblwiXSksXG4gICAgW1xuICAgICAgYShcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgQXR0ci5baHJlZih1cmwpLCB0aXRsZSh0b29sdGlwKSwgY3JlYXRlKFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpXSxcbiAgICAgICAgICApLFxuICAgICAgICBbaWNvbl0sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG5cbmxldCB0b2dnbGUgPSAofnRvb2x0aXA9XCJcIiwgbGFiZWwsIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcInRvZ2dsZS1zd2l0Y2hcIl0gQCAoYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhhY3Rpb24pLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgXSksXG4gICAgW2Rpdih+YXR0cj1jbHNzKFtcInRvZ2dsZS1rbm9iXCJdKSwgW3RleHQobGFiZWwpXSldLFxuICApO1xuXG5sZXQgdG9nZ2xlX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcIm5hbWVkLW1lbnUtaXRlbVwiXSBAIChhY3RpdmUgPyBbXCJhY3RpdmVcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKGFjdGlvbiksXG4gICAgICBdKSxcbiAgICBbdG9nZ2xlKGljb24sIGFjdGl2ZSwgXyA9PiBFZmZlY3QuSWdub3JlKSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT4ge1xuICAvKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NzI3Njgvc3R5bGluZy1hbi1pbnB1dC10eXBlLWZpbGUtYnV0dG9uICovXG4gIGxhYmVsKFxuICAgIH5hdHRyPUF0dHIuZm9yXyhpZCksXG4gICAgW1xuICAgICAgVmRvbV9pbnB1dF93aWRnZXRzLkZpbGVfc2VsZWN0LnNpbmdsZShcbiAgICAgICAgfmV4dHJhX2F0dHJzPVtBdHRyLmNsYXNzXyhcImZpbGUtc2VsZWN0LWJ1dHRvblwiKSwgQXR0ci5pZChpZCldLFxuICAgICAgICB+YWNjZXB0PVtgRXh0ZW5zaW9uKFwianNvblwiKV0sXG4gICAgICAgIH5vbl9pbnB1dCxcbiAgICAgICAgKCksXG4gICAgICApLFxuICAgICAgZGl2KH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJpY29uXCJdKSwgQXR0ci50aXRsZSh0b29sdGlwKV0pLCBbaWNvbl0pLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJuYW1lZC1tZW51LWl0ZW1cIl0pXSksXG4gICAgW2ZpbGVfc2VsZWN0X2J1dHRvbihpZCwgaWNvbiwgb25faW5wdXQpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG4iLCIvLyBjb3BpZWQgZnJvbSBoYXplbFxuXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbC5KcztcblxubW9kdWxlIEpTX01BUCA9IHtcbiAgY2xhc3MgdHlwZSB0ICgnaywgJ3YpID0ge1xuICAgIHB1YiBnZXQ6ICdrID0+IEpzLm1ldGgoSnMub3B0ZGVmKCd2KSk7XG4gICAgcHViIGhhczogJ2sgPT4gSnMubWV0aChib29sKTtcbiAgICBwdWIgc2V0OiAoJ2ssICd2KSA9PiBKcy5tZXRoKHQoJ2ssICd2KSk7XG4gIH07XG59O1xuXG5tb2R1bGUgSnNNYXAgPSB7XG4gIHR5cGUgdCgnaywgJ3YpID0gSnMudChKU19NQVAudCgnaywgJ3YpKTtcblxuICBsZXQgbWs6ICdrICd2LiB1bml0ID0+IHQoJ2ssICd2KSA9XG4gICAgKCkgPT4ge1xuICAgICAgbGV0IGMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX01hcDtcbiAgICAgIFslanMgbmV3IGNdO1xuICAgIH07XG59O1xuXG5tb2R1bGUgSnNXZWFrTWFwID0ge1xuICB0eXBlIHQoJ2ssICd2KSA9IEpzLnQoSlNfTUFQLnQoJ2ssICd2KSk7XG5cbiAgbGV0IG1rOiAnayAndi4gdW5pdCA9PiB0KCdrLCAndikgPVxuICAgICgpID0+IHtcbiAgICAgIGxldCBjID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwO1xuICAgICAgWyVqcyBuZXcgY107XG4gICAgfTtcbn07XG5cbmxldCBpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbDogSnMuVW5zYWZlLnRvcCA9PiBKcy50KGJvb2wpID1cbiAgLy8gQmFzZWQgb24gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODUxMTI4MS9jaGVjay1pZi1hLXZhbHVlLWlzLWFuLW9iamVjdC1pbi1qYXZhc2NyaXB0XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIoXG4gICAgXCJcbiAgZnVuY3Rpb24gKHZhbCkge1xuICAgIHJldHVybiAodmFsID09PSBudWxsKSB8fCAodHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykgJiYgKHR5cGVvZiB2YWwgIT09ICdvYmplY3QnKTtcbiAgfVwiLFxuICApO1xuXG5sZXQgaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uOiAnYS4gJ2EgPT4gYm9vbCA9XG4gIHggPT4gSnMudG9fYm9vbChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbChPYmoubWFnaWMoeCkpKTtcblxudHlwZSB0KCdrLCAndikgPSB7XG4gIHByaW1pdGl2ZV9rZXlzOiBKc01hcC50KCdrLCAndiksXG4gIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLnQoJ2ssICd2KSxcbn07XG5cbmxldCBtayA9ICgpOiB0KCdrLCAndikgPT4ge1xuICB7cHJpbWl0aXZlX2tleXM6IEpzTWFwLm1rKCksIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLm1rKCl9O1xufTtcblxubGV0IGdldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrKTogb3B0aW9uKCd2KSA9PiB7XG4gIGxldCBtYXAgPVxuICAgIGlmIChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24oaykpIHtcbiAgICAgIHQucHJpbWl0aXZlX2tleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQubm9uX3ByaW1pdGl2ZV9rZXlzO1xuICAgIH07XG4gIEpzLk9wdGRlZi50b19vcHRpb24obWFwIyNnZXQoaykpO1xufTtcblxubGV0IHNldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrLCB2OiAndik6IHVuaXQgPT4ge1xuICBsZXQgbWFwID1cbiAgICBpZiAoaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uKGspKSB7XG4gICAgICB0LnByaW1pdGl2ZV9rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0Lm5vbl9wcmltaXRpdmVfa2V5cztcbiAgICB9O1xuICBpZ25vcmUobWFwIyNzZXQoaywgdikpO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgbWtfc2Vjb25kYXJ5OiBzdHJpbmcgPT4gUGllY2UudCA9XG4gIGNvbnRlbnQgPT4gU2Vjb25kYXJ5KHtpZDogSWQubWsoKSwgY29udGVudDogV2hpdGVzcGFjZShjb250ZW50KX0pO1xuXG5sZXQgbWtfdGlsZTogKEZvcm0udCwgbGlzdChsaXN0KFBpZWNlLnQpKSkgPT4gUGllY2UudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgY2hpbGRyZW4pID0+XG4gICAgVGlsZSh7XG4gICAgICBpZDogSWQubWsoKSxcbiAgICAgIGxhYmVsOiBmb3JtLmxhYmVsLFxuICAgICAgbW9sZDogZm9ybS5tb2xkLFxuICAgICAgc2hhcmRzOiBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGZvcm0ubGFiZWwpLFxuICAgICAgY2hpbGRyZW4sXG4gICAgfSk7XG5cbmxldCBta19hbmNlc3RvcjogKEZvcm0udCwgKGxpc3QoU2VnbWVudC50KSwgbGlzdChTZWdtZW50LnQpKSkgPT4gQW5jZXN0b3IudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgKGwsIF8pIGFzIGNoaWxkcmVuKSA9PiB7XG4gICAgaWQ6IElkLm1rKCksXG4gICAgbGFiZWw6IGZvcm0ubGFiZWwsXG4gICAgbW9sZDogZm9ybS5tb2xkLFxuICAgIHNoYXJkczpcbiAgICAgIExpc3QubWFwaSgoaSwgXykgPT4gaSwgZm9ybS5sYWJlbClcbiAgICAgIHw+IFV0aWwuTGlzdFV0aWwuc3BsaXRfbihMaXN0Lmxlbmd0aChsKSArIDEpLFxuICAgIGNoaWxkcmVuLFxuICB9O1xuXG5sZXQgbWtfbW9ub3RpbGUgPSBmb3JtID0+IG1rX3RpbGUoZm9ybSwgW10pOyAvL1RPRE86IGFzc2VydHNcbmxldCBpbnQgPSBuID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKEV4cCwgbikpO1xubGV0IGV4cCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoRXhwLCB2KSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rX2F0b21pYyhQYXQsIHYpKTtcbmxldCBta19wYXJlbnNfZXhwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX2Z1biA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmdW5fXCIpKTtcbmxldCBta19mdW5fYW5jZXN0b3IgPSBta19hbmNlc3RvcihGb3JtLmdldChcImZ1bl9cIikpO1xubGV0IG1rX3BhcmVuc19hbmNlc3RvciA9IG1rX2FuY2VzdG9yKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfbGV0X2FuY2VzdG9yID0gbWtfYW5jZXN0b3IoRm9ybS5nZXQoXCJsZXRfXCIpKTtcbmxldCBwbHVzID0gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJwbHVzXCIpKTtcblxubGV0IGxfc2libGluZzogU2VnbWVudC50ID0gW3BsdXMsIEdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXTtcbmxldCByX3NpYmxpbmc6IFNlZ21lbnQudCA9IFtta19wYXJlbnNfZXhwKFtbaW50KFwiMVwiKSwgcGx1cywgaW50KFwiMlwiKV1dKV07XG5cbmxldCBjb250ZW50OiBTZWdtZW50LnQgPSBbZXhwKFwiZm9vXCIpLCBHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb25jYXZlfSldO1xuXG5sZXQgYW5jZXN0b3JzOiBBbmNlc3RvcnMudCA9IFtcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwiYmFyXCIpXV0pXSwgW10pKSxcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwidGF6XCIpXV0pXSwgW10pKSxcbiAgKG1rX2xldF9hbmNlc3RvcigoW1twYXQoXCJmb29cIildXSwgW10pKSwgKFtdLCBbaW50KFwiMlwiKV0pKSxcbl07XG5cbmxldCBiYWNrcGFjazogQmFja3BhY2sudCA9IFtTZWxlY3Rpb24ubWsoW2V4cChcImZvb1wiKV0pXTtcblxubGV0IHppcHBlcjogWmlwcGVyLnQgPSB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKGNvbnRlbnQpLFxuICBiYWNrcGFjayxcbiAgcmVsYXRpdmVzOiB7XG4gICAgc2libGluZ3M6IChsX3NpYmxpbmcsIHJfc2libGluZyksXG4gICAgYW5jZXN0b3JzLFxuICB9LFxuICBjYXJldDogT3V0ZXIsXG59O1xuXG4vLyBUT0RPIE1ha2Ugc3VyZSB1c2luZyB0aGlzIGZvciBhbGwgdGhlIGZvcm1zIHRoYXQgc2hvdWxkLCBsaWtlIHdpbGQgYW5kIG5pbFxuLy8gVE9ETyBTaG91bGQgdGhpcyBoYXZlIGl0cyBvd24gSUQgZ2VuZXJhdG9yIG9yIGlzIHVzaW5nIHRoZSBFeGFtcGxlIG9uZSBmaW5lP1xubGV0IGNvbnNfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb25zX2V4cFwiKSk7XG5sZXQgbGlzdF9jb25jYXRfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsaXN0X2NvbmNhdFwiKSk7XG5sZXQgY29uc19wYXQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbnNfcGF0XCIpKTtcbmxldCBzZXEgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNlbGwtam9pblwiKSk7XG5sZXQgZXhwID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoRXhwLCBbXSkpKSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoUGF0LCBbXSkpKSk7XG5sZXQgdHlwID0gdCA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt0XSwgTW9sZC4obWtfb3AoVHlwLCBbXSkpKSk7XG5sZXQgdHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKFRQYXQsIFtdKSkpKTtcbmxldCB0eXBfcGF0X3ZhciA9IHQgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoVFBhdCwgdCkpO1xubGV0IG1rX3BhcmVuc19leHAgPSBta190aWxlKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfcGFyZW5zX3BhdCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfcGF0XCIpKTtcbmxldCBta19wYXJlbnNfdHlwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc190eXBcIikpO1xubGV0IG1rX2xpc3RfZXhwID0gbWtfdGlsZShGb3JtLmdldChcImxpc3RfbGl0X2V4cFwiKSk7XG5sZXQgbWtfbGlzdF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGlzdF9saXRfcGF0XCIpKTtcbmxldCBta19saXN0X3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJsaXN0X3R5cFwiKSk7XG5sZXQgYXJyb3cgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInR5cGUtYXJyb3dcIikpO1xubGV0IHVuYXJ5X21pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ1bmFyeV9taW51c1wiKSk7XG5sZXQgdW5hcnlfbm90ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJub3RcIikpO1xubGV0IHBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBsdXNcIikpO1xubGV0IG1pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJtaW51c1wiKSk7XG5sZXQgdGltZXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInRpbWVzXCIpKTtcbmxldCBwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicG93ZXJcIikpO1xubGV0IGRpdmlkZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZGl2aWRlXCIpKTtcbmxldCBlcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImVxdWFsc1wiKSk7XG5sZXQgbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibm90X2VxdWFsc1wiKSk7XG5sZXQgbHQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0XCIpKTtcbmxldCBsdGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0ZVwiKSk7XG5sZXQgZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0XCIpKTtcbmxldCBndGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0ZVwiKSk7XG5sZXQgZnBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZwbHVzXCIpKTtcbmxldCBmbWludXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZtaW51c1wiKSk7XG5sZXQgZnRpbWVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmdGltZXNcIikpO1xubGV0IGZwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZnBvd2VyXCIpKTtcbmxldCBmZGl2aWRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZGl2aWRlXCIpKTtcbmxldCBmZXF1YWxzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZXF1YWxzXCIpKTtcbmxldCBmbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZm5vdF9lcXVhbHNcIikpO1xubGV0IGZsdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmx0XCIpKTtcbmxldCBmbHRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmbHRlXCIpKTtcbmxldCBmZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZndFwiKSk7XG5sZXQgZmd0ZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmd0ZVwiKSk7XG5sZXQgc2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2VxdWFsc1wiKSk7XG5sZXQgc2NvbmNhdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2NvbmNhdFwiKSk7XG5sZXQgbG9naWNhbF9hbmQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImxvZ2ljYWxfYW5kXCIpKTtcbmxldCBsb2dpY2FsX29yID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsb2dpY2FsX29yXCIpKTtcbmxldCBjb21tYV9leHAgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbW1hX2V4cFwiKSk7XG5sZXQgY29tbWFfcGF0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb21tYV9wYXRcIikpO1xubGV0IGNvbW1hX3R5cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29tbWFfdHlwXCIpKTtcbmxldCBwaXBlbGluZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicGlwZWxpbmVcIikpO1xubGV0IG5pbCA9ICgpID0+IGV4cChcIltdXCIpO1xubGV0IHR5cGVhbm4gPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInR5cGVhbm5cIikpO1xubGV0IG1rX2Z1biA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmdW5fXCIpKTtcbmxldCBta19hcF9leHAgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfZXhwXCIpKTtcbmxldCBta19hcF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfcGF0XCIpKTtcbmxldCBta19sZXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGV0X1wiKSk7XG5sZXQgbWtfdHlhbGlhcyA9IG1rX3RpbGUoRm9ybS5nZXQoXCJ0eXBlX2FsaWFzXCIpKTtcbmxldCBta19pZiA9IG1rX3RpbGUoRm9ybS5nZXQoXCJpZl9cIikpO1xubGV0IG1rX3Rlc3QgPSBta190aWxlKEZvcm0uZ2V0KFwidGVzdFwiKSk7XG5sZXQgbWtfY2FzZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJjYXNlXCIpKTtcbmxldCBta19ydWxlID0gbWtfdGlsZShGb3JtLmdldChcInJ1bGVcIikpO1xubGV0IG1rX2hpZGUgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2hpZGVcIikpO1xubGV0IG1rX2V2YWwgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2V2YWxcIikpO1xubGV0IG1rX3BhdXNlID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9wYXVzZVwiKSk7XG5sZXQgbWtfZGVidWcgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2RlYnVnXCIpKTtcbmxldCBta191bnF1b3RlID0gbWtfdGlsZShGb3JtLmdldChcInVucXVvdGVcIikpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IG1rX3NlY29uZGFyeShGb3JtLmxpbmVicmVhayk7XG5sZXQgc3BhY2UgPSAoKSA9PiBta19zZWNvbmRhcnkoRm9ybS5zcGFjZSk7XG5cbmxldCBta19leGFtcGxlID0gc3RyID0+IHtcbiAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoc3RyKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHopID0+IFppcHBlci56aXAoeilcbiAgfTtcbn07XG5cbi8qIEludCBwYXJhbSBiZWxvdyBzaG91bGQgYmUgfiB3aWR0aCBvZiBzaWRlYmFyICovXG5sZXQgYWJicmV2aWF0ZSA9IFV0aWwuU3RyaW5nVXRpbC5hYmJyZXZpYXRlKDIwKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuLy8gVE9ETyBNYWtlIHVuaWZpZWQgd2F5IG9mIHVzaW5nIGNvbnNpc3RlbnQgbWV0YXZhcmlhYmxlcyBmb3Igc3ludGFjdGljIGZvcm1zXG4vLyBUT0RPIFVzZSAvdGF1IGluc3RlYWQgb2YgdHkgd2hlbiBjYW4gZG8gdGhhdCBhbmQgc3RpbGwgaGF2ZSBoaWdobGlnaHRpbmcgd29ya1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxpc3RfZXhhbXBsZXMgPVxuICB8IEludFxuICB8IFR1cGxlXG4gIHwgQ29uczFcbiAgfCBDb25zMjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmdW5fZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgV2lsZFxuICB8IEludExpdFxuICB8IEZsb2F0TGl0XG4gIHwgQm9vbExpdFxuICB8IFN0ckxpdFxuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IENvbnNIZFxuICB8IENvbnNTbmRcbiAgfCBWYXJJbmNyXG4gIHwgVmFyQW5kXG4gIHwgVHVwbGUyXG4gIHwgVHVwbGUzXG4gIHwgQ3RyXG4gIHwgQXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbGV0X2V4YW1wbGVzID1cbiAgfCBCYXNpY1xuICB8IFdpbGRcbiAgfCBJbnRMaXRcbiAgfCBGbG9hdExpdFxuICB8IEJvb2xMaXRcbiAgfCBTdHJMaXRcbiAgfCBUcml2XG4gIHwgTGlzdE5pbFxuICB8IExpc3RMaXRcbiAgfCBDb25zSGRcbiAgfCBDb25zU25kXG4gIHwgVmFyXG4gIHwgVHVwbGUyXG4gIHwgVHVwbGUzXG4gIHwgQ3RyXG4gIHwgQXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMgPVxuICB8IFBsdXNcbiAgfCBNaW51c1xuICB8IFRpbWVzXG4gIHwgUG93ZXJcbiAgfCBEaXZpZGVcbiAgfCBMZXNzVGhhblRydWVcbiAgfCBMZXNzVGhhbkZhbHNlXG4gIHwgTGVzc1RoYW5FcXVhbExlc3NcbiAgfCBMZXNzVGhhbkVxdWFsRXF1YWxcbiAgfCBMZXNzVGhhbkVxdWFsRmFsc2VcbiAgfCBHcmVhdGVyVGhhblRydWVcbiAgfCBHcmVhdGVyVGhhbkZhbHNlXG4gIHwgR3JlYXRlclRoYW5FcXVhbEdyZWF0ZXJcbiAgfCBHcmVhdGVyVGhhbkVxdWFsRXF1YWxcbiAgfCBHcmVhdGVyVGhhbkVxdWFsRmFsc2VcbiAgfCBFcXVhbEZhbHNlXG4gIHwgRXF1YWxUcnVlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4YW1wbGVfaWQgPVxuICB8IExpc3QobGlzdF9leGFtcGxlcylcbiAgfCBGdW4oZnVuX2V4YW1wbGVzKVxuICB8IFR1cGxlMVxuICB8IFR1cGxlMlxuICB8IExldChsZXRfZXhhbXBsZXMpXG4gIHwgRnVuQXBcbiAgfCBDb25BcFxuICB8IElmVHJ1ZVxuICB8IElmRmFsc2VcbiAgfCBTZXFCYXNpY1xuICB8IFNlcVRlc3RcbiAgfCBUZXN0VHJ1ZVxuICB8IFRlc3RGYWxzZVxuICB8IEludFVuYXJ5TWludXNcbiAgfCBJbnQobnVtZXJpY19iaW5fb3BfZXhhbXBsZXMpXG4gIHwgRmxvYXQobnVtZXJpY19iaW5fb3BfZXhhbXBsZXMpXG4gIHwgQW5kRmFsc2VcbiAgfCBBbmRUcnVlXG4gIHwgT3JGYWxzZVxuICB8IE9yVHJ1ZVxuICB8IFN0cmluZ0VxdWFsRmFsc2VcbiAgfCBTdHJpbmdFcXVhbFRydWVcbiAgfCBDYXNlV2lsZFNpbXBsZVxuICB8IENhc2VXaWxkVHVwbGVcbiAgfCBDYXNlSW50XG4gIHwgQ2FzZUJvb2xcbiAgfCBQaXBlbGluZTFcbiAgfCBGaWx0ZXJTdGVwXG4gIHwgRmlsdGVyRXZhbFxuICB8IEZpbHRlckhpZGVcbiAgfCBGaWx0ZXJEZWJ1Z1xuICB8IEZpbHRlclNlbGVjdG9yO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4YW1wbGUgPSB7XG4gIHN1Yl9pZDogZXhhbXBsZV9pZCxcbiAgdGVybTogU2VnbWVudC50LFxuICBtZXNzYWdlOiBzdHJpbmcsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBhdF9zdWJfZm9ybV9pZCA9XG4gIHwgQmFzZVxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFdpbGRcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmdcbiAgfCBUcml2XG4gIHwgTGlzdE5pbFxuICB8IExpc3RMaXRcbiAgfCBMaXN0Q29uc1xuICB8IFZhclxuICB8IFR1cGxlXG4gIHwgVHVwbGUyXG4gIHwgVHVwbGUzXG4gIHwgQ3RyXG4gIHwgQXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZm9ybV9pZCA9XG4gIHwgRW1wdHlIb2xlRXhwXG4gIHwgTXVsdGlIb2xlRXhwXG4gIHwgVHJpdkV4cFxuICB8IEJvb2xFeHBcbiAgfCBJbnRFeHBcbiAgfCBGbG9hdEV4cFxuICB8IFN0cmluZ0V4cFxuICB8IFZhckV4cFxuICB8IEN0ckV4cFxuICB8IExpc3RFeHBcbiAgfCBDb25zRXhwXG4gIHwgTGlzdENvbmNhdEV4cFxuICB8IEZ1bmN0aW9uRXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUdXBsZUV4cFxuICB8IFR1cGxlMkV4cFxuICB8IFR1cGxlM0V4cFxuICB8IExldEV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgRnVuQXBFeHBcbiAgfCBDb25BcEV4cFxuICB8IElmRXhwXG4gIHwgU2VxRXhwXG4gIHwgVGVzdEV4cFxuICB8IFVuT3BFeHAoVGVybS5VRXhwLm9wX3VuKVxuICB8IEJpbk9wRXhwKFRlcm0uVUV4cC5vcF9iaW4pXG4gIHwgQ2FzZUV4cFxuICB8IFR5QWxpYXNFeHBcbiAgfCBFbXB0eUhvbGVQYXRcbiAgfCBNdWx0aUhvbGVQYXRcbiAgfCBXaWxkUGF0XG4gIHwgSW50UGF0XG4gIHwgRmxvYXRQYXRcbiAgfCBCb29sUGF0XG4gIHwgU3RyUGF0XG4gIHwgVHJpdlBhdFxuICB8IFZhclBhdFxuICB8IEN0clBhdFxuICB8IExpc3RMaXRQYXRcbiAgfCBMaXN0TmlsUGF0XG4gIHwgQ29uc1BhdFxuICB8IENvbnMyUGF0XG4gIHwgVHVwbGVQYXRcbiAgfCBUdXBsZTJQYXRcbiAgfCBUdXBsZTNQYXRcbiAgfCBBcFBhdFxuICB8IFR5cEFublBhdFxuICB8IEVtcHR5SG9sZVR5cFxuICB8IE11bHRpSG9sZVR5cFxuICB8IEludFR5cFxuICB8IEZsb2F0VHlwXG4gIHwgQm9vbFR5cFxuICB8IFN0clR5cFxuICB8IFZhclR5cFxuICB8IExpc3RUeXBcbiAgfCBBcnJvd1R5cFxuICB8IEFycm93M1R5cFxuICB8IFR1cGxlVHlwXG4gIHwgVHVwbGUwVHlwXG4gIHwgVHVwbGUyVHlwXG4gIHwgVHVwbGUzVHlwXG4gIHwgTGFiZWxsZWRTdW1UeXBcbiAgfCBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgRW1wdHlIb2xlVFBhdFxuICB8IE11bHRpSG9sZVRQYXRcbiAgfCBWYXJUUGF0XG4gIHwgUGlwZWxpbmVFeHBcbiAgfCBGaWx0ZXJQYXVzZVxuICB8IEZpbHRlckV2YWxcbiAgfCBGaWx0ZXJEZWJ1Z1xuICB8IEZpbHRlckhpZGVcbiAgfCBGaWx0ZXJTZWxlY3RvcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtID0ge1xuICBpZDogZm9ybV9pZCxcbiAgc3ludGFjdGljX2Zvcm06IFNlZ21lbnQudCxcbiAgZXhwYW5kYWJsZV9pZDogb3B0aW9uKChJZC50LCBTZWdtZW50LnQpKSxcbiAgZXhwbGFuYXRpb246IHN0cmluZyxcbiAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZSksXG59O1xuXG4vLyBIQU5OQUggLSBUT0RPOiBOb3Qgc3VyZSB0aGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBmb3JtX2lkIC0gbWF5YmUganVzdCBvbmUgaWRcbi8vIE1BWUJFIGRvbid0IGV2ZW4gbmVlZCBhbiBpZCBhdCBhbGwgZm9yIHRoZSBncm91cCAtIGp1c3QgdXNlIHRoZSBtb3N0IHNwZWNpZmljICgxc3QpIGZvcm0gaWQgaW4gZm9ybXNcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZ3JvdXBfaWQgPVxuICB8IEVtcHR5SG9sZUV4cFxuICB8IE11bHRpSG9sZUV4cFxuICB8IFRyaXZFeHBcbiAgfCBCb29sRXhwXG4gIHwgSW50RXhwXG4gIHwgRmxvYXRFeHBcbiAgfCBTdHJpbmdFeHBcbiAgfCBWYXJFeHBcbiAgfCBDdHJFeHBcbiAgfCBMaXN0RXhwXG4gIHwgQ29uc0V4cFxuICB8IExpc3RDb25jYXRFeHBcbiAgfCBGdW5jdGlvbkV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgVHVwbGVFeHBcbiAgfCBUdXBsZTJFeHBcbiAgfCBUdXBsZTNFeHBcbiAgfCBMZXRFeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IEZ1bkFwRXhwXG4gIHwgQ29uQXBFeHBcbiAgfCBJZkV4cFxuICB8IFNlcUV4cFxuICB8IFRlc3RFeHBcbiAgfCBVbk9wRXhwKFRlcm0uVUV4cC5vcF91bilcbiAgfCBCaW5PcEV4cChUZXJtLlVFeHAub3BfYmluKVxuICB8IENhc2VFeHBcbiAgfCBUeUFsaWFzRXhwXG4gIHwgUGlwZWxpbmVFeHBcbiAgfCBFbXB0eUhvbGVQYXRcbiAgfCBNdWx0aUhvbGVQYXRcbiAgfCBXaWxkUGF0XG4gIHwgSW50UGF0XG4gIHwgRmxvYXRQYXRcbiAgfCBCb29sUGF0XG4gIHwgU3RyUGF0XG4gIHwgVHJpdlBhdFxuICB8IFZhclBhdFxuICB8IEN0clBhdFxuICB8IExpc3RMaXRQYXRcbiAgfCBMaXN0TmlsUGF0XG4gIHwgQ29uc1BhdFxuICB8IENvbnMyUGF0XG4gIHwgVHVwbGVQYXRcbiAgfCBUdXBsZTJQYXRcbiAgfCBUdXBsZTNQYXRcbiAgfCBBcFBhdFxuICB8IFR5cEFublBhdFxuICB8IEVtcHR5SG9sZVR5cFxuICB8IE11bHRpSG9sZVR5cFxuICB8IEludFR5cFxuICB8IEZsb2F0VHlwXG4gIHwgQm9vbFR5cFxuICB8IFN0clR5cFxuICB8IFZhclR5cFxuICB8IExpc3RUeXBcbiAgfCBBcnJvd1R5cFxuICB8IEFycm93M1R5cFxuICB8IFR1cGxlVHlwXG4gIHwgVHVwbGUwVHlwXG4gIHwgVHVwbGUyVHlwXG4gIHwgVHVwbGUzVHlwXG4gIHwgTGFiZWxsZWRTdW1UeXBcbiAgfCBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgRW1wdHlIb2xlVFBhdFxuICB8IE11bHRpSG9sZVRQYXRcbiAgfCBWYXJUUGF0XG4gIHwgRmlsdGVyUGF1c2VcbiAgfCBGaWx0ZXJFdmFsXG4gIHwgRmlsdGVyRGVidWdcbiAgfCBGaWx0ZXJIaWRlXG4gIHwgRmlsdGVyU2VsZWN0b3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZ3JvdXAgPSB7XG4gIGlkOiBncm91cF9pZCxcbiAgZm9ybXM6IGxpc3QoZm9ybSkgLy8gT3JkZXJlZCAtIG1vcmUgc3BlY2lmaWMgdG8gbGVzcyBzcGVjaWZpY1xufTtcblxubW9kdWxlIFNpbXBsZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgZ3JvdXBfaWQsXG4gICAgZm9ybV9pZCxcbiAgICBhYnN0cmFjdDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSxcbiAgICBleHBsYW5hdGlvbjogc3RyaW5nLFxuICAgIGV4YW1wbGVzOiBsaXN0KGV4YW1wbGUpLFxuICB9O1xuXG4gIGxldCB0b19ncm91cCA9XG4gICAgICAoXG4gICAgICAgIHtcbiAgICAgICAgICBleHBsYW5hdGlvbixcbiAgICAgICAgICBhYnN0cmFjdDogKHN5bnRhY3RpY19mb3JtLCBjb2xvcmluZ3MpLFxuICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgIGZvcm1faWQsXG4gICAgICAgICAgZXhhbXBsZXMsXG4gICAgICAgIH06IHQsXG4gICAgICApID0+IChcbiAgICBleHBsYW5hdGlvbixcbiAgICBjb2xvcmluZ3MsXG4gICAge1xuICAgICAgaWQ6IGdyb3VwX2lkLFxuICAgICAgZm9ybXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBmb3JtX2lkLFxuICAgICAgICAgIHN5bnRhY3RpY19mb3JtLFxuICAgICAgICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgICAgICAgZXhwbGFuYXRpb246IFwiXCIsXG4gICAgICAgICAgZXhhbXBsZXMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICk7XG5cbiAgbGV0IG1rXzEgPVxuICAgICAgKChuOiBzdHJpbmcsIGlkOiBJZC50KSwgbWtfZm9ybTogUGllY2UudCA9PiBTZWdtZW50LnQpXG4gICAgICA6IChTZWdtZW50LnQsIGxpc3QoKElkLnQsIElkLnQpKSkgPT4ge1xuICAgIGxldCBwID0gRXhhbXBsZS5leHAobik7XG4gICAgKG1rX2Zvcm0ocCksIFsoUGllY2UuaWQocCksIGlkKV0pO1xuICB9O1xuXG4gIGxldCBta18yID1cbiAgICAgIChcbiAgICAgICAgKG4xOiBzdHJpbmcsIGlkXzE6IElkLnQpLFxuICAgICAgICAobjI6IHN0cmluZywgaWRfMjogSWQudCksXG4gICAgICAgIG1rX2Zvcm06IChQaWVjZS50LCBQaWVjZS50KSA9PiBTZWdtZW50LnQsXG4gICAgICApXG4gICAgICA6IChTZWdtZW50LnQsIGxpc3QoKElkLnQsIElkLnQpKSkgPT4ge1xuICAgIGxldCAocDEsIHAyKSA9IChFeGFtcGxlLmV4cChuMSksIEV4YW1wbGUuZXhwKG4yKSk7XG4gICAgKG1rX2Zvcm0ocDEsIHAyKSwgWyhQaWVjZS5pZChwMSksIGlkXzEpLCAoUGllY2UuaWQocDIpLCBpZF8yKV0pO1xuICB9O1xuXG4gIGxldCBta18zID1cbiAgICAgIChcbiAgICAgICAgKG4xOiBzdHJpbmcsIGlkXzE6IElkLnQpLFxuICAgICAgICAobjI6IHN0cmluZywgaWRfMjogSWQudCksXG4gICAgICAgIChuMzogc3RyaW5nLCBpZF8zOiBJZC50KSxcbiAgICAgICAgbWtfZm9ybTogKFBpZWNlLnQsIFBpZWNlLnQsIFBpZWNlLnQpID0+IFNlZ21lbnQudCxcbiAgICAgIClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IChwMSwgcDIsIHAzKSA9IChcbiAgICAgIEV4YW1wbGUuZXhwKG4xKSxcbiAgICAgIEV4YW1wbGUuZXhwKG4yKSxcbiAgICAgIEV4YW1wbGUuZXhwKG4zKSxcbiAgICApO1xuICAgIChcbiAgICAgIG1rX2Zvcm0ocDEsIHAyLCBwMyksXG4gICAgICBbXG4gICAgICAgIChQaWVjZS5pZChwMSksIGlkXzEpLFxuICAgICAgICAoUGllY2UuaWQocDIpLCBpZF8yKSxcbiAgICAgICAgKFBpZWNlLmlkKHAzKSwgaWRfMyksXG4gICAgICBdLFxuICAgICk7XG4gIH07XG59O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB2YXJfdHlwX3BhdCA9IChuOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJgJXNgIGJpbmRzIGEgdHlwZSB2YXJpYWJsZS5cIjtcbiAge1xuICAgIGlkOiBWYXJUUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBhYmJyZXZpYXRlIHw+IHRwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHZhcl90eXBfcGF0cyA9IChuOiBzdHJpbmcpOiBncm91cCA9PiB7XG4gIGlkOiBWYXJUUGF0LFxuICBmb3JtczogW3Zhcl90eXBfcGF0KG4pXSxcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xubW9kdWxlIFNleHAgPSBTZXhwbGliLlNleHA7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIFNldHRpbmdzID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBlbmFibGU6IGJvb2wsXG4gICAgaXNfZWRpdGluZzogYm9vbCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IFRvZ2dsZUVuYWJsZVxuICAgIHwgVG9nZ2xlSXNFZGl0aW5nO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpbnB1dDogc3RyaW5nLFxuICBxdWVyeV9yZXN1bHQ6IG9wdGlvbihzdHJpbmcpLFxufTtcblxubGV0IGluaXQgPSB7aW5wdXQ6IFwiXCIsIHF1ZXJ5X3Jlc3VsdDogTm9uZX07XG5cbmxldCByZW1vdmVfbGFzdF9jaGFyID0gKHN0cjogc3RyaW5nKSA9PlxuICBpZiAoU3RyaW5nLmxlbmd0aChzdHIpID4gMCkge1xuICAgIFN0cmluZy5zdWIoc3RyLCAwLCBTdHJpbmcubGVuZ3RoKHN0cikgLSAxKTtcbiAgfSBlbHNlIHtcbiAgICBzdHI7XG4gIH07XG5cbmxldCBwZXJmb3JtX2FjdGlvbiA9IChtb2RlbDogdCwgYWN0aW9uOiBBY3Rpb24udCkgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbikge1xuICB8IEFjdGlvbi5JbnNlcnQocykgPT4gey4uLm1vZGVsLCBpbnB1dDogbW9kZWwuaW5wdXQgKysgc31cbiAgfCBBY3Rpb24uRGVzdHJ1Y3QoTGVmdCkgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBpbnB1dDogcmVtb3ZlX2xhc3RfY2hhcihtb2RlbC5pbnB1dCksXG4gICAgfVxuICB8IF8gPT4gbW9kZWxcbiAgfTtcbn07XG5cbnR5cGUgdXBkYXRlID1cbiAgfCBFZGl0KEFjdGlvbi50KTtcblxubGV0IHVwZGF0ZSA9IChtb2RlbDogdCwgdXBkYXRlOiB1cGRhdGUpOiB0ID0+XG4gIHN3aXRjaCAodXBkYXRlKSB7XG4gIHwgRWRpdChhY3Rpb24pID0+IHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBhY3Rpb24pXG4gIH07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBjb2RlID0gKGNvZGU6IHN0cmluZykgPT4ge1xuICBOb2RlLnNwYW4ofmF0dHI9QXR0ci5jbGFzc18oXCJleGVyY2lzZS1jb2RlXCIpLCBbTm9kZS50ZXh0KGNvZGUpXSk7XG59O1xuXG5sZXQgZXF1aXYgPSBOb2RlLnNwYW4ofmF0dHI9QXR0ci5jbGFzc18oXCJlcXVpdlwiKSwgW05vZGUudGV4dChcIiDiiaEgXCIpXSk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEV4ZXJjaXNlVXRpbDtcblxubGV0IHByb21wdCA9XG4gIGRpdihbXG4gICAgcChbXG4gICAgICB0ZXh0KFxuICAgICAgICBcIldyaXRlIGEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBpbnRlZ2VyIGlzIG9kZC4gXCIsXG4gICAgICApLFxuICAgIF0pLFxuICAgIHAoW1xuICAgICAgY29kZShcIm9kZChuKVwiKSxcbiAgICAgIGVxdWl2LFxuICAgICAgY29kZShcInRydWVcIiksXG4gICAgICB0ZXh0KFwiIGlmZiBcIiksXG4gICAgICBjb2RlKFwiblwiKSxcbiAgICAgIHRleHQoXCIgaXMgb2RkLlwiKSxcbiAgICBdKSxcbiAgXSk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gTm9kZS50O1xuICBsZXQgZGVmYXVsdCA9IE5vZGUudGV4dChcIlRPRE86IHByb21wdFwiKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBtb2R1bGVfbmFtZSA9PlxuICAgIFwibGV0IHByb21wdCA9IFwiICsrIG1vZHVsZV9uYW1lICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIjtcbn07XG5cbmluY2x1ZGUgSGF6M2xzY2hvb2wuRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG4iLCJvcGVuIEhhejNsY29yZVxuXG5sZXQgcHJvbXB0ID0gRXhfT2RkbHlSZWN1cnNpdmVfcHJvbXB0LnByb21wdFxuXG5sZXQgZXhlcmNpc2UgOiBFeGVyY2lzZS5zcGVjID1cbiAge1xuICAgIHRpdGxlID0gXCJPZGRseSBSZWN1cnNpdmVcIjtcbiAgICB2ZXJzaW9uID0gMTtcbiAgICBtb2R1bGVfbmFtZSA9IFwiRXhfT2RkbHlSZWN1cnNpdmVcIjtcbiAgICBwcm9tcHQ7XG4gICAgcG9pbnRfZGlzdHJpYnV0aW9uID1cbiAgICAgIHsgdGVzdF92YWxpZGF0aW9uID0gMTsgbXV0YXRpb25fdGVzdGluZyA9IDE7IGltcGxfZ3JhZGluZyA9IDIgfTtcbiAgICBwcmVsdWRlID1cbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgYW5jZXN0b3JzID1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IChbIDA7IDEgXSwgWyAyIF0pO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgY29ycmVjdF9pbXBsID1cbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDU7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmFsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAoIFtdLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH07XG4gICAgICAgICAgICAgICAgICAgIF0gKSApO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIHlvdXJfdGVzdHMgPVxuICAgICAge1xuICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IFJpZ2h0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmFsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIHJlcXVpcmVkID0gNjtcbiAgICAgICAgcHJvdmlkZWQgPSAyO1xuICAgICAgfTtcbiAgICB5b3VyX2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBoaWRkZW5fYnVncyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGhpbnQgPSBcImFsd2F5cyByZXR1cm5zIGZhbHNlXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiYWx3YXlzIHJldHVybnMgdHJ1ZVwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgaW1wbCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25jYXZlIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgYmFzZSBjYXNlXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIGhpZGRlbl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIzXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI0MlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMjdcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIGhpbnRzID0gWyBcInplcm9cIiBdO1xuICAgICAgfTtcbiAgICBzeW50YXhfdGVzdHMgPVxuICAgICAgWyAoXCJvZGQgaXMgcmVjdXJzaXZlXCIsIEhhejNsc2Nob29sLlN5bnRheFRlc3QuSXNSZWN1cnNpdmUgXCJvZGRcIikgXTtcbiAgfVxuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBFeGVyY2lzZVV0aWw7XG5cbmxldCBwcm9tcHQgPVxuICBkaXYoW1xuICAgIHAoW1xuICAgICAgZGl2KFtcbiAgICAgICAgdGV4dChcbiAgICAgICAgICBcIldyaXRlIHRlc3RzIGNhc2VzIGZvciwgYW5kIHRoZW4gaW1wbGVtZW50LCBhIGZ1bmN0aW9uLCB0aGF0IHJlY3Vyc2l2ZWx5IGRldGVybWluZXMgdGhlIG50aCBmaWJvbmFjY2kgbnVtYmVyLlwiLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gICAgcChbXG4gICAgICBjb2RlKFwiZmliKG4pXCIpLFxuICAgICAgZXF1aXYsXG4gICAgICB0ZXh0KFwidGhlIFwiKSxcbiAgICAgIGNvZGUoXCJuXCIpLFxuICAgICAgdGV4dChcInRoIGZpYm9uYWNjaSBudW1iZXIsIGFzc3VtaW5nIFwiKSxcbiAgICAgIGNvZGUoXCJuID49IDAuXCIpLFxuICAgIF0pLFxuICBdKTtcbiIsIm9wZW4gSGF6M2xjb3JlXG5cbmxldCBwcm9tcHQgPSBFeF9SZWN1cnNpdmVGaWJvbmFjY2lfcHJvbXB0LnByb21wdFxuXG5sZXQgZXhlcmNpc2UgOiBFeGVyY2lzZS5zcGVjID1cbiAge1xuICAgIHRpdGxlID0gXCJSZWN1cnNpdmUgRmlib25hY2NpXCI7XG4gICAgdmVyc2lvbiA9IDE7XG4gICAgbW9kdWxlX25hbWUgPSBcIkV4X1JlY3Vyc2l2ZUZpYm9uYWNjaVwiO1xuICAgIHByb21wdDtcbiAgICBwb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgeyB0ZXN0X3ZhbGlkYXRpb24gPSAxOyBtdXRhdGlvbl90ZXN0aW5nID0gMTsgaW1wbF9ncmFkaW5nID0gMiB9O1xuICAgIHByZWx1ZGUgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPSAoWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSwgW10pO1xuICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgY29ycmVjdF9pbXBsID1cbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgXSApO1xuICAgICAgICAgICAgYW5jZXN0b3JzID1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IChbIDA7IDEgXSwgWyAyIF0pO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAoIFtdLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH07XG4gICAgICAgICAgICAgICAgICAgIF0gKSApO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIHlvdXJfdGVzdHMgPVxuICAgICAge1xuICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9IChbXSwgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIHJlcXVpcmVkID0gNTtcbiAgICAgICAgcHJvdmlkZWQgPSAwO1xuICAgICAgfTtcbiAgICB5b3VyX2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBoaWRkZW5fYnVncyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIrXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiaW5jb3JyZWN0IGJhc2UgY2FzZXNcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIrXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiaW5jb3JyZWN0IHJlY3Vyc2lvblwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgICBoaWRkZW5fdGVzdHMgPVxuICAgICAge1xuICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIzXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI2XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjEzXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI3XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjM0XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICB9O1xuICAgICAgICBoaW50cyA9IFtdO1xuICAgICAgfTtcbiAgICBzeW50YXhfdGVzdHMgPVxuICAgICAgWyAoXCJmaWIgaXMgcmVjdXJzaXZlXCIsIEhhejNsc2Nob29sLlN5bnRheFRlc3QuSXNSZWN1cnNpdmUgXCJmaWJcIikgXTtcbiAgfVxuIiwibGV0IGZpbGVuYW1lID0gXCJoYXozbC1kZW1vXCI7XG5sZXQgbG9nX2tleSA9IGZpbGVuYW1lO1xubGV0IGV4ZXJjaXNlczogbGlzdChFeGVyY2lzZS5zcGVjKSA9IFtcbiAgRXhfT2RkbHlSZWN1cnNpdmUuZXhlcmNpc2UsXG4gIEV4X1JlY3Vyc2l2ZUZpYm9uYWNjaS5leGVyY2lzZSxcbl07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xubW9kdWxlIFNleHAgPSBTZXhwbGliLlNleHA7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZlZWRiYWNrX29wdGlvbiA9XG4gIHwgVGh1bWJzVXBcbiAgfCBUaHVtYnNEb3duO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4YW1wbGVfbW9kZWwgPSB7XG4gIHN1Yl9pZDogZXhhbXBsZV9pZCxcbiAgZmVlZGJhY2s6IGZlZWRiYWNrX29wdGlvbixcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZm9ybV9tb2RlbCA9IHtcbiAgZ3JvdXA6IGdyb3VwX2lkLFxuICBmb3JtOiBmb3JtX2lkLFxuICBleHBsYW5hdGlvbl9mZWVkYmFjazogb3B0aW9uKGZlZWRiYWNrX29wdGlvbiksXG4gIGV4YW1wbGVzOiBsaXN0KGV4YW1wbGVfbW9kZWwpLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cF9tb2RlbCA9IHtcbiAgZ3JvdXA6IGdyb3VwX2lkLFxuICBzZWxlY3RlZDogZm9ybV9pZCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3BlY2lmaWNpdHlfb3BlbjogYm9vbCxcbiAgZm9ybXM6IGxpc3QoZm9ybV9tb2RlbCksXG4gIGdyb3VwczogbGlzdChncm91cF9tb2RlbCksXG59O1xuXG5tb2R1bGUgU2V0dGluZ3MgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWdobGlnaHQgPVxuICAgIHwgTm9IaWdobGlnaHRcbiAgICB8IE9uZShJZC50KVxuICAgIHwgQWxsO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHNob3c6IGJvb2wsXG4gICAgc2hvd19mZWVkYmFjazogYm9vbCxcbiAgICBoaWdobGlnaHQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZ2hsaWdodF9hY3Rpb24gPVxuICAgIHwgVG9nZ2xlXG4gICAgfCBIb3ZlcihJZC50KVxuICAgIHwgVW5zZXRIb3ZlcjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IFRvZ2dsZVNob3dcbiAgICB8IFRvZ2dsZVNob3dGZWVkYmFja1xuICAgIHwgU2V0SGlnaGxpZ2h0KGhpZ2hsaWdodF9hY3Rpb24pO1xuXG4gIGxldCBpbml0ID0ge3Nob3c6IHRydWUsIHNob3dfZmVlZGJhY2s6IGZhbHNlLCBoaWdobGlnaHQ6IE5vSGlnaGxpZ2h0fTtcbn07XG5cbmxldCBpbml0OiB0ID0ge3NwZWNpZmljaXR5X29wZW46IGZhbHNlLCBmb3JtczogW10sIGdyb3VwczogW119O1xuXG5sZXQgZ2V0X2V4cGxhbmF0aW9uX2ZlZWRiYWNrID1cbiAgICAoZ3JvdXBfaWQ6IGdyb3VwX2lkLCBmb3JtX2lkOiBmb3JtX2lkLCBtb2RlbDogdCk6IG9wdGlvbihmZWVkYmFja19vcHRpb24pID0+IHtcbiAgbGV0IGZvcm1zID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChmb3JtOiBmb3JtX21vZGVsKSA9PiBmb3JtLmdyb3VwID09IGdyb3VwX2lkICYmIGZvcm0uZm9ybSA9PSBmb3JtX2lkLFxuICAgICAgbW9kZWwuZm9ybXMsXG4gICAgKTtcbiAgc3dpdGNoIChmb3Jtcykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbZm9ybV0gPT4gZm9ybS5leHBsYW5hdGlvbl9mZWVkYmFja1xuICB8IF8gPT5cbiAgICByYWlzZShcbiAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgIFwiRWFjaCBmb3JtLCBncm91cCBwYWlyIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9mb3JtX2lkKGZvcm1faWQpKVxuICAgICAgICArKyBcIiwgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cF9pZCkpXG4gICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChmb3JtcykpXG4gICAgICAgICsrIFwiIHRpbWVzXCIsXG4gICAgICApLFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBnZXRfZXhhbXBsZV9mZWVkYmFjayA9XG4gICAgKGdyb3VwX2lkOiBncm91cF9pZCwgZm9ybV9pZDogZm9ybV9pZCwgZXhhbXBsZV9pZDogZXhhbXBsZV9pZCwgbW9kZWw6IHQpXG4gICAgOiBvcHRpb24oZmVlZGJhY2tfb3B0aW9uKSA9PiB7XG4gIGxldCBmb3JtcyA9XG4gICAgTGlzdC5maWx0ZXIoXG4gICAgICAoZm9ybTogZm9ybV9tb2RlbCkgPT4gZm9ybS5ncm91cCA9PSBncm91cF9pZCAmJiBmb3JtLmZvcm0gPT0gZm9ybV9pZCxcbiAgICAgIG1vZGVsLmZvcm1zLFxuICAgICk7XG5cbiAgc3dpdGNoIChmb3Jtcykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbZm9ybV0gPT5cbiAgICBsZXQgZXhhbXBsZXMgPVxuICAgICAgTGlzdC5maWx0ZXIoXG4gICAgICAgIChleGFtcGxlOiBleGFtcGxlX21vZGVsKSA9PiBleGFtcGxlLnN1Yl9pZCA9PSBleGFtcGxlX2lkLFxuICAgICAgICBmb3JtLmV4YW1wbGVzLFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKGV4YW1wbGVzKSB7XG4gICAgfCBbXSA9PiBOb25lXG4gICAgfCBbZXhhbXBsZV0gPT4gU29tZShleGFtcGxlLmZlZWRiYWNrKVxuICAgIHwgXyA9PlxuICAgICAgcmFpc2UoXG4gICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgXCJFYWNoIGdyb3VwLCBmb3JtLCBleGFtcGxlIHRyaXBsZSBzaG91bGQgb25seSBhcHBlYXIgb25jZSwgYnV0IFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cF9pZCkpXG4gICAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9mb3JtX2lkKGZvcm1faWQpKVxuICAgICAgICAgICsrIFwiLCBcIlxuICAgICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZXhhbXBsZV9pZChleGFtcGxlX2lkKSlcbiAgICAgICAgICArKyBcIiBhcHBlYXJzIFwiXG4gICAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChleGFtcGxlcykpXG4gICAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9O1xuICB8IF8gPT5cbiAgICByYWlzZShcbiAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgIFwiRWFjaCBncm91cCwgZm9ybSBwYWlyIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cF9pZCkpXG4gICAgICAgICsrIFwiLCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChmb3JtcykpXG4gICAgICAgICsrIFwiIHRpbWVzXCIsXG4gICAgICApLFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBnZXRfZm9ybV9pbl9ncm91cCA9IChmb3JtX2lkOiBmb3JtX2lkLCBncm91cDogZ3JvdXApOiBmb3JtID0+IHtcbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoXG4gICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgIFwiRm9ybSBcIlxuICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9mb3JtX2lkKGZvcm1faWQpKVxuICAgICAgKysgXCIgaXMgbm90IGluIGdyb3VwIFwiXG4gICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwLmlkKSksXG4gICAgKSxcbiAgICBMaXN0LmZpbmRfb3B0KChmb3JtOiBmb3JtKSA9PiBmb3JtLmlkID09IGZvcm1faWQsIGdyb3VwLmZvcm1zKSxcbiAgKTtcbn07XG5cbmxldCBnZXRfc2VsZWN0ZWRfb3B0aW9uID0gKGdyb3VwOiBncm91cCwgbW9kZWw6IHQpOiBmb3JtID0+IHtcbiAgbGV0IHNlbGVjdGVkID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChncm91cCc6IGdyb3VwX21vZGVsKSA9PiBncm91cCcuZ3JvdXAgPT0gZ3JvdXAuaWQsXG4gICAgICBtb2RlbC5ncm91cHMsXG4gICAgKTtcbiAgc3dpdGNoIChzZWxlY3RlZCwgZ3JvdXAuZm9ybXMpIHtcbiAgfCAoW10sIFtmb3JtLCAuLi5fZnNdKSA9PiBmb3JtXG4gIHwgKFtzZWxlY3RlZF0sIF8pID0+IGdldF9mb3JtX2luX2dyb3VwKHNlbGVjdGVkLnNlbGVjdGVkLCBncm91cClcbiAgfCAoW19mMSwgX2YyLCAuLi5fZnNdLCBfKSA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGdyb3VwIHNob3VsZCBoYXZlIG9ubHkgb25lIHNlbGVjdGlvbiwgYnV0IGdyb3VwIFwiXG4gICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZ3JvdXBfaWQoZ3JvdXAuaWQpKVxuICAgICAgICArKyBcIiBoYXMgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChzZWxlY3RlZCkpXG4gICAgICAgICsrIFwiZm9ybXMgc2VsZWN0ZWRcIixcbiAgICAgICksXG4gICAgKVxuICB8IChfLCBbXSkgPT5cbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiRWFjaCBncm91cCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGZvcm1cIikpXG4gIH07XG59O1xuXG5sZXQgZ2V0X29wdGlvbnMgPSAoZ3JvdXA6IGdyb3VwKTogbGlzdCgoZm9ybV9pZCwgU2VnbWVudC50KSkgPT5cbiAgaWYgKExpc3QubGVuZ3RoKGdyb3VwLmZvcm1zKSA8IDIpIHtcbiAgICBbXTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LnJldihcbiAgICAgIExpc3QubWFwKFxuICAgICAgICAoZm9ybTogZm9ybSkgPT5cbiAgICAgICAgICAoXG4gICAgICAgICAgICBmb3JtLmlkLFxuICAgICAgICAgICAgc25kKFxuICAgICAgICAgICAgICBPcHRVdGlsLmdldF9vcl9yYWlzZShcbiAgICAgICAgICAgICAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICAgICAgICAgICAgXCJGb3JtcyB1c2VkIGZvciBncm91cCBvcHRpb25zIG11c3Qgc3BlY2lmeSBleHBhbmRhYmxlXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmb3JtLmV4cGFuZGFibGVfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIGdyb3VwLmZvcm1zLFxuICAgICAgKSxcbiAgICApO1xuICB9O1xuXG5sZXQgZ2V0X2Zvcm1fYW5kX29wdGlvbnMgPVxuICAgIChncm91cDogZ3JvdXAsIG1vZGVsOiB0KTogKGZvcm0sIGxpc3QoKGZvcm1faWQsIFNlZ21lbnQudCkpKSA9PiB7XG4gIChnZXRfc2VsZWN0ZWRfb3B0aW9uKGdyb3VwLCBtb2RlbCksIGdldF9vcHRpb25zKGdyb3VwKSk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb2RlID1cbiAgfCBTY3JhdGNoXG4gIHwgRG9jdW1lbnRhdGlvblxuICB8IEV4ZXJjaXNlcztcblxubGV0IG1vZGVfb2Zfc3RyaW5nID0gKHM6IHN0cmluZyk6IG1vZGUgPT5cbiAgc3dpdGNoIChzKSB7XG4gIHwgXCJTY3JhdGNoXCIgPT4gU2NyYXRjaFxuICB8IFwiRG9jdW1lbnRhdGlvblwiID0+IERvY3VtZW50YXRpb25cbiAgfCBcIkV4ZXJjaXNlc1wiID0+IEV4ZXJjaXNlc1xuICB8IF8gPT4gZmFpbHdpdGgoXCJtb2RlX29mX3N0cmluZzogdW5rbm93biBtb2RlOlwiICsrIHMpXG4gIH07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgY2FwdGlvbnM6IGJvb2wsXG4gIHNlY29uZGFyeV9pY29uczogYm9vbCxcbiAgY29yZTogSGF6M2xjb3JlLkNvcmVTZXR0aW5ncy50LFxuICBhc3luY19ldmFsdWF0aW9uOiBib29sLFxuICBjb250ZXh0X2luc3BlY3RvcjogYm9vbCxcbiAgaW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICBiZW5jaG1hcms6IGJvb2wsXG4gIGV4cGxhaW5UaGlzOiBFeHBsYWluVGhpc01vZGVsLlNldHRpbmdzLnQsXG4gIGFjY2Vzc2liaWxpdHk6IEFjY2Vzc2liaWxpdHlNb2RlbC5TZXR0aW5ncy50LFxuICBtb2RlLFxufTtcblxubGV0IGZpeF9pbnN0cnVjdG9yX21vZGUgPSBzZXR0aW5ncyA9PlxuICBpZiAoc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlICYmICFFeGVyY2lzZVNldHRpbmdzLnNob3dfaW5zdHJ1Y3Rvcikge1xuICAgIHsuLi5zZXR0aW5ncywgaW5zdHJ1Y3Rvcl9tb2RlOiBmYWxzZX07XG4gIH0gZWxzZSB7XG4gICAgc2V0dGluZ3M7XG4gIH07XG4iLCJvcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0ZSA9IEVkaXRvci50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBlcnNpc3RlbnRfc3RhdGUgPSBQZXJzaXN0ZW50WmlwcGVyLnQ7XG5cbmxldCBzY3JhdGNoX2tleSA9IG4gPT4gXCJzY3JhdGNoX1wiICsrIG47XG5cbmxldCBwZXJzaXN0ID0gKGVkaXRvcjogRWRpdG9yLnQpID0+IHtcbiAgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KGVkaXRvci5zdGF0ZS56aXBwZXIpO1xufTtcblxubGV0IHVucGVyc2lzdCA9ICh6aXBwZXI6IHBlcnNpc3RlbnRfc3RhdGUpID0+IHtcbiAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHppcHBlcik7XG4gIEVkaXRvci5pbml0KHppcHBlciwgfnJlYWRfb25seT1mYWxzZSk7XG59O1xuXG5sZXQgc2VyaWFsaXplID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBwZXJzaXN0KHN0YXRlKSB8PiBzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhkYXRhKSB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHAgfD4gdW5wZXJzaXN0O1xufTtcblxubGV0IGRlc2VyaWFsaXplX29wdCA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgbGV0IHNleHAgPVxuICAgIHRyeShTb21lKFNleHBsaWIuU2V4cC5vZl9zdHJpbmcoZGF0YSkgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwKSkge1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgc2V4cCB8PiBPcHRpb24ubWFwKHNleHAgPT4gc2V4cCB8PiB1bnBlcnNpc3QpO1xufTtcblxubGV0IGV4cG9ydCA9IChzdGF0ZTogc3RhdGUpID0+IHtcbiAgc3RhdGUgfD4gcGVyc2lzdCB8PiB5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZTtcbn07XG5cbmxldCBpbXBvcnQgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24gfD4gdW5wZXJzaXN0O1xufTtcblxubGV0IGV4cG9ydF9pbml0ID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBzdGF0ZSB8PiBwZXJzaXN0IHw+IHNob3dfcGVyc2lzdGVudF9zdGF0ZTtcbn07XG5cbmxldCBta19zdGF0aWNzID1cbiAgICAofnNldHRpbmdzOiBTZXR0aW5ncy50LCBlZGl0b3I6IEVkaXRvci50LCBjdHhfaW5pdDogQ3R4LnQpXG4gICAgOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MgPT4ge1xuICBsZXQgdGVybSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuICBsZXQgaW5mb19tYXAgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0LCB0ZXJtKTtcbiAgbGV0IGVycm9yX2lkcyA9XG4gICAgU3RhdGljcy5NYXAuZXJyb3JfaWRzKGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLCBpbmZvX21hcCk7XG4gIHt0ZXJtLCBpbmZvX21hcCwgZXJyb3JfaWRzfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2NyYXRjaCA9IChcbiAgaW50LFxuICBsaXN0KFNjcmF0Y2hTbGlkZS5wZXJzaXN0ZW50X3N0YXRlKSxcbiAgbGlzdCgoc3RyaW5nLCBNb2RlbFJlc3VsdC5wZXJzaXN0ZW50KSksXG4pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGRvY3VtZW50YXRpb24gPSAoXG4gIHN0cmluZyxcbiAgbGlzdCgoc3RyaW5nLCBTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSkpLFxuICBbQGRlZmF1bHQgW11dIGxpc3QoKHN0cmluZywgTW9kZWxSZXN1bHQucGVyc2lzdGVudCkpLFxuKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzZXR0aW5nczogU2V0dGluZ3MudCxcbiAgc2NyYXRjaCxcbiAgZG9jdW1lbnRhdGlvbixcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2NyYXRjaCA9IChpbnQsIGxpc3QoU2NyYXRjaFNsaWRlLnN0YXRlKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZXMgPSAoc3RyaW5nLCBsaXN0KChzdHJpbmcsIFNjcmF0Y2hTbGlkZS5zdGF0ZSkpKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleGVyY2lzZXMgPSAoaW50LCBsaXN0KEV4ZXJjaXNlLnNwZWMpLCBFeGVyY2lzZS5zdGF0ZSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgU2NyYXRjaChpbnQsIGxpc3QoU2NyYXRjaFNsaWRlLnN0YXRlKSlcbiAgfCBEb2N1bWVudGF0aW9uKHN0cmluZywgbGlzdCgoc3RyaW5nLCBTY3JhdGNoU2xpZGUuc3RhdGUpKSlcbiAgfCBFeGVyY2lzZXMoaW50LCBsaXN0KEV4ZXJjaXNlLnNwZWMpLCBFeGVyY2lzZS5zdGF0ZSk7XG5cbmxldCBnZXRfZWRpdG9yID0gKGVkaXRvcnM6IHQpOiBFZGl0b3IudCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKG4sIHNsaWRlcykgPT5cbiAgICBhc3NlcnQobiA8IExpc3QubGVuZ3RoKHNsaWRlcykpO1xuICAgIExpc3QubnRoKHNsaWRlcywgbik7XG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgYXNzZXJ0KExpc3QubWVtX2Fzc29jKG5hbWUsIHNsaWRlcykpO1xuICAgIExpc3QuYXNzb2MobmFtZSwgc2xpZGVzKTtcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+IEV4ZXJjaXNlLmVkaXRvcl9vZl9zdGF0ZShleGVyY2lzZSlcbiAgfTtcblxubGV0IHB1dF9lZGl0b3IgPSAoZWQ6IEVkaXRvci50LCBlZHM6IHQpOiB0ID0+XG4gIHN3aXRjaCAoZWRzKSB7XG4gIHwgU2NyYXRjaChuLCBzbGlkZXMpID0+XG4gICAgYXNzZXJ0KG4gPCBMaXN0Lmxlbmd0aChzbGlkZXMpKTtcbiAgICBTY3JhdGNoKG4sIFV0aWwuTGlzdFV0aWwucHV0X250aChuLCBlZCwgc2xpZGVzKSk7XG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgYXNzZXJ0KExpc3QubWVtX2Fzc29jKG5hbWUsIHNsaWRlcykpO1xuICAgIERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzIHw+IExpc3RVdGlsLnVwZGF0ZV9hc3NvYygobmFtZSwgZWQpKSk7XG4gIHwgRXhlcmNpc2VzKG4sIHNwZWNzLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZXMobiwgc3BlY3MsIEV4ZXJjaXNlLnB1dF9lZGl0b3IoZXhlcmNpc2UsIGVkKSlcbiAgfTtcblxubGV0IGdldF96aXBwZXIgPSAoZWRpdG9yczogdCk6IFppcHBlci50ID0+IGdldF9lZGl0b3IoZWRpdG9ycykuc3RhdGUuemlwcGVyO1xuXG5sZXQgZ2V0X2N0eF9pbml0ID0gKH5zZXR0aW5ncyBhcyBfOiBTZXR0aW5ncy50LCBlZGl0b3JzOiB0KTogQ3R4LnQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IEV4ZXJjaXNlcyhfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gQnVpbHRpbnMuY3R4X2luaXRcbiAgfTtcblxubGV0IGdldF9lbnZfaW5pdCA9ICh+c2V0dGluZ3MgYXMgXzogU2V0dGluZ3MudCwgZWRpdG9yczogdCk6IEVudmlyb25tZW50LnQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IEV4ZXJjaXNlcyhfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gQnVpbHRpbnMuZW52X2luaXRcbiAgfTtcblxubGV0IG1rX3N0YXRpY3MgPSAofnNldHRpbmdzOiBTZXR0aW5ncy50LCBlZGl0b3JzOiB0KTogQ2FjaGVkU3RhdGljcy50ID0+IHtcbiAgbGV0IGVkaXRvciA9IGdldF9lZGl0b3IoZWRpdG9ycyk7XG4gIGxldCBjdHhfaW5pdCA9IGdldF9jdHhfaW5pdCh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuc3RhdGljcyA9PiBDYWNoZWRTdGF0aWNzLm1rKFtdKVxuICB8IFNjcmF0Y2goaWR4LCBfKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChpZHgpKTtcbiAgICBbKGtleSwgU2NyYXRjaFNsaWRlLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3IsIGN0eF9pbml0KSldXG4gICAgfD4gQ2FjaGVkU3RhdGljcy5taztcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIF8pID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBbKGtleSwgU2NyYXRjaFNsaWRlLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3IsIGN0eF9pbml0KSldXG4gICAgfD4gQ2FjaGVkU3RhdGljcy5taztcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgRXhlcmNpc2UubWtfc3RhdGljcyhzZXR0aW5ncy5jb3JlLCBleGVyY2lzZSkgfD4gQ2FjaGVkU3RhdGljcy5ta1xuICB9O1xufTtcblxubGV0IGxvb2t1cF9zdGF0aWNzID1cbiAgICAofnNldHRpbmdzOiBTZXR0aW5ncy50LCB+c3RhdGljcywgZWRpdG9yczogdCk6IENhY2hlZFN0YXRpY3Muc3RhdGljcyA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuc3RhdGljcyA9PiBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3NcbiAgfCBTY3JhdGNoKGlkeCwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KHN0cmluZ19vZl9pbnQoaWR4KSk7XG4gICAgQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywga2V5KTtcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIF8pID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT5cbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X2Zvcl9zdGF0aWNzKGV4ZXJjaXNlKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB9O1xuXG4vKiBFYWNoIG1vZGUgKGUuZy4gU2NyYXRjaCwgU2Nob29sKSByZXF1aXJlc1xuICAgZWxhYm9yYXRpbmcgb24gc29tZSBudW1iZXIgb2YgZXhwcmVzc2lvbnNcbiAgIHRoYXQgYXJlIHNwbGljZWQgdG9nZXRoZXIgZnJvbSB0aGUgZWRpdG9yc1xuICAgaW4gdGhlIG1vZGUuIEVhY2ggZWxhYm9yYXRlZCBleHByZXNzaW9uXG4gICBpcyBnaXZlbiBhIGtleSBmb3IgbGF0ZXIgbG9va3VwIGJ5IHRoZSBtb2RlLlxuXG4gICBVc2VkIGluIHRoZSBVcGRhdGUgbW9kdWxlICovXG5sZXQgZ2V0X3NwbGljZWRfZWxhYnMgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIHN0YXRpY3MsIGVkaXRvcnM6IHQpXG4gICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBESEV4cC50KSkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChpZHgsIF8pID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShpZHggfD4gc3RyaW5nX29mX2ludCk7XG4gICAgbGV0IENhY2hlZFN0YXRpY3Mue3Rlcm0sIGluZm9fbWFwLCBffSA9XG4gICAgICBsb29rdXBfc3RhdGljcyh+c2V0dGluZ3MsIH5zdGF0aWNzLCBlZGl0b3JzKTtcbiAgICBsZXQgZCA9IEludGVyZmFjZS5lbGFib3JhdGUofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGluZm9fbWFwLCB0ZXJtKTtcbiAgICBbKGtleSwgZCldO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG5hbWUpO1xuICAgIGxldCBDYWNoZWRTdGF0aWNzLnt0ZXJtLCBpbmZvX21hcCwgX30gPVxuICAgICAgbG9va3VwX3N0YXRpY3MofnNldHRpbmdzLCB+c3RhdGljcywgZWRpdG9ycyk7XG4gICAgbGV0IGQgPSBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLCBpbmZvX21hcCwgdGVybSk7XG4gICAgWyhrZXksIGQpXTtcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgRXhlcmNpc2Uuc3BsaWNlZF9lbGFicyhzZXR0aW5ncy5jb3JlLCBleGVyY2lzZSlcbiAgfTtcblxubGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoZWRpdG9yczogdCwgaW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogdCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBlZGl0b3JzXG4gIHwgRXhlcmNpc2VzKG4sIHNwZWNzLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZXMoXG4gICAgICBuLFxuICAgICAgc3BlY3MsXG4gICAgICBFeGVyY2lzZS5zZXRfaW5zdHJ1Y3Rvcl9tb2RlKGV4ZXJjaXNlLCBpbnN0cnVjdG9yX21vZGUpLFxuICAgIClcbiAgfTtcblxubGV0IHJlc2V0X250aF9zbGlkZSA9IChuLCBzbGlkZXMpID0+IHtcbiAgbGV0IChfLCBpbml0X2VkaXRvcnMsIF8pID0gSW5pdC5zdGFydHVwLnNjcmF0Y2g7XG4gIGxldCBkYXRhID0gTGlzdC5udGgoaW5pdF9lZGl0b3JzLCBuKTtcbiAgbGV0IGluaXRfbnRoID0gU2NyYXRjaFNsaWRlLnVucGVyc2lzdChkYXRhKTtcbiAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKG4sIGluaXRfbnRoLCBzbGlkZXMpO1xufTtcblxubGV0IHJlc2V0X25hbWVkX3NsaWRlID0gKG5hbWUsIHNsaWRlcykgPT4ge1xuICBsZXQgKF8sIGluaXRfZWRpdG9ycywgXykgPSBJbml0LnN0YXJ0dXAuZG9jdW1lbnRhdGlvbjtcbiAgbGV0IGRhdGEgPSBMaXN0LmFzc29jKG5hbWUsIGluaXRfZWRpdG9ycyk7XG4gIGxldCBpbml0X25hbWUgPSBTY3JhdGNoU2xpZGUudW5wZXJzaXN0KGRhdGEpO1xuICBzbGlkZXMgfD4gTGlzdC5yZW1vdmVfYXNzb2MobmFtZSkgfD4gTGlzdC5jb25zKChuYW1lLCBpbml0X25hbWUpKTtcbn07XG5cbmxldCByZXNldF9jdXJyZW50ID0gKGVkaXRvcnM6IHQsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PiBTY3JhdGNoKG4sIHJlc2V0X250aF9zbGlkZShuLCBzbGlkZXMpKVxuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIERvY3VtZW50YXRpb24obmFtZSwgcmVzZXRfbmFtZWRfc2xpZGUobmFtZSwgc2xpZGVzKSlcbiAgfCBFeGVyY2lzZXMobiwgc3BlY3MsIF8pID0+XG4gICAgRXhlcmNpc2VzKFxuICAgICAgbixcbiAgICAgIHNwZWNzLFxuICAgICAgTGlzdC5udGgoc3BlY3MsIG4pIHw+IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMofmluc3RydWN0b3JfbW9kZSksXG4gICAgKVxuICB9O1xuXG5sZXQgaW1wb3J0X2N1cnJlbnQgPSAoZWRpdG9yczogdCwgZGF0YTogb3B0aW9uKHN0cmluZykpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IERvY3VtZW50YXRpb24oXylcbiAgfCBFeGVyY2lzZXMoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlXCIpXG4gIHwgU2NyYXRjaChpZHgsIHNsaWRlcykgPT5cbiAgICBzd2l0Y2ggKGRhdGEpIHtcbiAgICB8IE5vbmUgPT4gZWRpdG9yc1xuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgbGV0IHN0YXRlID0gU2NyYXRjaFNsaWRlLmltcG9ydChkYXRhKTtcbiAgICAgIGxldCBzbGlkZXMgPSBVdGlsLkxpc3RVdGlsLnB1dF9udGgoaWR4LCBzdGF0ZSwgc2xpZGVzKTtcbiAgICAgIFNjcmF0Y2goaWR4LCBzbGlkZXMpO1xuICAgIH1cbiAgfTtcblxubGV0IHN3aXRjaF9leGFtcGxlX3NsaWRlID0gKGVkaXRvcnM6IHQsIG5hbWU6IHN0cmluZyk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRXhlcmNpc2VzKF8pID0+IE5vbmVcbiAgfCBEb2N1bWVudGF0aW9uKGN1ciwgc2xpZGVzKVxuICAgICAgd2hlbiAhTGlzdC5tZW1fYXNzb2MobmFtZSwgc2xpZGVzKSB8fCBjdXIgPT0gbmFtZSA9PlxuICAgIE5vbmVcbiAgfCBEb2N1bWVudGF0aW9uKF8sIHNsaWRlcykgPT4gU29tZShEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4cGxhaW5UaGlzTW9kZWw7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdXBkYXRlID1cbiAgfCBTcGVjaWZpY2l0eU9wZW4oYm9vbClcbiAgfCBUb2dnbGVFeHBsYW5hdGlvbkZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBmZWVkYmFja19vcHRpb24pXG4gIHwgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBmZWVkYmFja19vcHRpb24pXG4gIHwgVXBkYXRlR3JvdXBTZWxlY3Rpb24oZ3JvdXBfaWQsIGZvcm1faWQpO1xuXG5sZXQgc2V0X3VwZGF0ZSA9XG4gICAgKGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCwgdTogdXBkYXRlKTogRXhwbGFpblRoaXNNb2RlbC50ID0+IHtcbiAgc3dpdGNoICh1KSB7XG4gIHwgU3BlY2lmaWNpdHlPcGVuKGIpID0+IHsuLi5leHBsYWluVGhpc01vZGVsLCBzcGVjaWZpY2l0eV9vcGVuOiBifVxuICB8IFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGZlZWRiYWNrX29wdGlvbikgPT5cbiAgICBsZXQgKHByZSwgZm9ybSwgcG9zdCkgPVxuICAgICAgTGlzdFV0aWwuc3BsaXQoZXhwbGFpblRoaXNNb2RlbC5mb3JtcywgZiA9PlxuICAgICAgICBmLmZvcm0gPT0gZm9ybV9pZCAmJiBmLmdyb3VwID09IGdyb3VwX2lkXG4gICAgICApO1xuICAgIGxldCBmb3JtID1cbiAgICAgIHN3aXRjaCAoZm9ybSkge1xuICAgICAgfCBTb21lKGZvcm0pID0+XG4gICAgICAgIGxldCBmZWVkYmFjayA9XG4gICAgICAgICAgc3dpdGNoIChmb3JtLmV4cGxhbmF0aW9uX2ZlZWRiYWNrLCBmZWVkYmFja19vcHRpb24pIHtcbiAgICAgICAgICB8IChTb21lKFRodW1ic1VwKSwgVGh1bWJzRG93bilcbiAgICAgICAgICB8IChTb21lKFRodW1ic0Rvd24pLCBUaHVtYnNVcClcbiAgICAgICAgICB8IChOb25lLCBfKSA9PiBTb21lKGZlZWRiYWNrX29wdGlvbilcbiAgICAgICAgICB8IChTb21lKFRodW1ic1VwKSwgVGh1bWJzVXApXG4gICAgICAgICAgfCAoU29tZShUaHVtYnNEb3duKSwgVGh1bWJzRG93bikgPT4gTm9uZVxuICAgICAgICAgIH07XG4gICAgICAgIHsuLi5mb3JtLCBleHBsYW5hdGlvbl9mZWVkYmFjazogZmVlZGJhY2t9O1xuICAgICAgfCBOb25lID0+IHtcbiAgICAgICAgICBncm91cDogZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybTogZm9ybV9pZCxcbiAgICAgICAgICBleHBsYW5hdGlvbl9mZWVkYmFjazogU29tZShmZWVkYmFja19vcHRpb24pLFxuICAgICAgICAgIGV4YW1wbGVzOiBbXSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB7Li4uZXhwbGFpblRoaXNNb2RlbCwgZm9ybXM6IHByZSBAIFtmb3JtXSBAIHBvc3R9O1xuICB8IFRvZ2dsZUV4YW1wbGVGZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZXhhbXBsZV9pZCwgZmVlZGJhY2tfb3B0aW9uKSA9PlxuICAgIGxldCAocHJlX2Zvcm0sIGZvcm0sIHBvc3RfZm9ybSkgPVxuICAgICAgTGlzdFV0aWwuc3BsaXQoZXhwbGFpblRoaXNNb2RlbC5mb3JtcywgZiA9PlxuICAgICAgICBmLmZvcm0gPT0gZm9ybV9pZCAmJiBmLmdyb3VwID09IGdyb3VwX2lkXG4gICAgICApO1xuICAgIGxldCBmb3JtOiBmb3JtX21vZGVsID1cbiAgICAgIHN3aXRjaCAoZm9ybSkge1xuICAgICAgfCBTb21lKGZvcm0pID0+XG4gICAgICAgIGxldCAocHJlX2V4YW1wbGUsIGV4YW1wbGUsIHBvc3RfZXhhbXBsZSkgPVxuICAgICAgICAgIExpc3RVdGlsLnNwbGl0KGZvcm0uZXhhbXBsZXMsIGUgPT4gZS5zdWJfaWQgPT0gZXhhbXBsZV9pZCk7XG4gICAgICAgIGxldCBleGFtcGxlczogbGlzdChleGFtcGxlX21vZGVsKSA9XG4gICAgICAgICAgc3dpdGNoIChleGFtcGxlKSB7XG4gICAgICAgICAgfCBTb21lKGV4YW1wbGUpID0+XG4gICAgICAgICAgICBzd2l0Y2ggKGV4YW1wbGUuZmVlZGJhY2ssIGZlZWRiYWNrX29wdGlvbikge1xuICAgICAgICAgICAgfCAoVGh1bWJzVXAsIFRodW1ic0Rvd24pXG4gICAgICAgICAgICB8IChUaHVtYnNEb3duLCBUaHVtYnNVcCkgPT5cbiAgICAgICAgICAgICAgcHJlX2V4YW1wbGVcbiAgICAgICAgICAgICAgQCBbey4uLmV4YW1wbGUsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XVxuICAgICAgICAgICAgICBAIHBvc3RfZXhhbXBsZVxuICAgICAgICAgICAgfCAoVGh1bWJzVXAsIFRodW1ic1VwKVxuICAgICAgICAgICAgfCAoVGh1bWJzRG93biwgVGh1bWJzRG93bikgPT4gcHJlX2V4YW1wbGUgQCBwb3N0X2V4YW1wbGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAgIHByZV9leGFtcGxlXG4gICAgICAgICAgICBAIFt7c3ViX2lkOiBleGFtcGxlX2lkLCBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9ufV1cbiAgICAgICAgICAgIEAgcG9zdF9leGFtcGxlXG4gICAgICAgICAgfTtcbiAgICAgICAgey4uLmZvcm0sIGV4YW1wbGVzfTtcbiAgICAgIHwgTm9uZSA9PiB7XG4gICAgICAgICAgZ3JvdXA6IGdyb3VwX2lkLFxuICAgICAgICAgIGZvcm06IGZvcm1faWQsXG4gICAgICAgICAgZXhwbGFuYXRpb25fZmVlZGJhY2s6IE5vbmUsXG4gICAgICAgICAgZXhhbXBsZXM6IFt7c3ViX2lkOiBleGFtcGxlX2lkLCBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9ufV0sXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgey4uLmV4cGxhaW5UaGlzTW9kZWwsIGZvcm1zOiBwcmVfZm9ybSBAIFtmb3JtXSBAIHBvc3RfZm9ybX07XG4gIHwgVXBkYXRlR3JvdXBTZWxlY3Rpb24oZ3JvdXBfaWQsIGZvcm1faWQpID0+XG4gICAgbGV0IChwcmVfZ3JvdXAsIF9ncm91cCwgcG9zdF9ncm91cCkgPVxuICAgICAgTGlzdFV0aWwuc3BsaXQoZXhwbGFpblRoaXNNb2RlbC5ncm91cHMsIGcgPT4gZy5ncm91cCA9PSBncm91cF9pZCk7XG4gICAge1xuICAgICAgLi4uZXhwbGFpblRoaXNNb2RlbCxcbiAgICAgIGdyb3VwczpcbiAgICAgICAgcHJlX2dyb3VwIEAgW3tncm91cDogZ3JvdXBfaWQsIHNlbGVjdGVkOiBmb3JtX2lkfV0gQCBwb3N0X2dyb3VwLFxuICAgIH07XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0B3YXJuaW5nIFwiLTMzXCJdXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHJvd19oZWlnaHQ6IGZsb2F0LFxuICBjb2xfd2lkdGg6IGZsb2F0LFxufTtcblxubGV0IGluaXQgPSB7cm93X2hlaWdodDogMTAuLCBjb2xfd2lkdGg6IDEwLn07XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgZ2V0X2VsZW1fYnlfaWQgPSBpZCA9PiB7XG4gIGxldCBkb2MgPSBEb21faHRtbC5kb2N1bWVudDtcbiAgSnMuT3B0LmdldChcbiAgICBkb2MjI2dldEVsZW1lbnRCeUlkKEpzLnN0cmluZyhpZCkpLFxuICAgICgpID0+IHtcbiAgICAgIHByaW50X2VuZGxpbmUoaWQpO1xuICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICB9LFxuICApO1xufTtcblxubGV0IGRhdGVfbm93ID0gKCkgPT4ge1xuICBbJWpzIG5ldyBKcy5kYXRlX25vd107XG59O1xuXG5sZXQgdGltZXN0YW1wID0gKCkgPT4gZGF0ZV9ub3coKSMjdmFsdWVPZjtcblxubGV0IGdldF9rZXkgPSBldnQgPT5cbiAgSnMudG9fc3RyaW5nKEpzLk9wdGRlZi5nZXQoZXZ0IyMua2V5LCAoKSA9PiBmYWlsd2l0aChcIkpzVXRpbC5nZXRfa2V5XCIpKSk7XG5cbmxldCBjdHJsX2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5jdHJsS2V5KTtcbmxldCBzaGlmdF9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMuc2hpZnRLZXkpO1xubGV0IGFsdF9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMuYWx0S2V5KTtcbmxldCBtZXRhX2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5tZXRhS2V5KTtcblxubGV0IG51bV9jbGlja3MgPSAoZXZ0OiBKcy50KEpzX29mX29jYW1sLkRvbV9odG1sLm1vdXNlRXZlbnQpKTogaW50ID0+XG4gIEpzLlVuc2FmZS5jb2VyY2UoZXZ0KSMjLmRldGFpbDtcblxubGV0IGlzX2RvdWJsZV9jbGljayA9IChldnQ6IEpzLnQoSnNfb2Zfb2NhbWwuRG9tX2h0bWwubW91c2VFdmVudCkpOiBib29sID0+XG4gIG51bV9jbGlja3MoZXZ0KSA9PSAyO1xuXG5sZXQgZG93bmxvYWRfc3RyaW5nX2ZpbGUgPVxuICAgICh+ZmlsZW5hbWU6IHN0cmluZywgfmNvbnRlbnRfdHlwZTogc3RyaW5nLCB+Y29udGVudHM6IHN0cmluZykgPT4ge1xuICBsZXQgYmxvYiA9IEZpbGUuYmxvYl9mcm9tX3N0cmluZyh+Y29udGVudFR5cGU9Y29udGVudF90eXBlLCBjb250ZW50cyk7XG4gIGxldCB1cmwgPSBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNjcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgbGV0IGxpbmsgPSBEb21faHRtbC5jcmVhdGVBKERvbV9odG1sLmRvY3VtZW50KTtcbiAgbGluayMjLmhyZWYgOj0gdXJsO1xuICBsaW5rIyNzZXRBdHRyaWJ1dGUoSnMuc3RyaW5nKFwiZG93bmxvYWRcIiksIEpzLnN0cmluZyhmaWxlbmFtZSkpO1xuICBsaW5rIyMub25jbGljayA6PSBEb21faHRtbC5oYW5kbGVyKF8gPT4ge0pzLl90cnVlfSk7XG4gIGxpbmsjI2NsaWNrO1xufTtcblxubGV0IGRvd25sb2FkX2pzb24gPSAoZmlsZW5hbWUsIGNvbnRlbnRzKTogdW5pdCA9PlxuICBkb3dubG9hZF9zdHJpbmdfZmlsZShcbiAgICB+ZmlsZW5hbWU9ZmlsZW5hbWUgKysgXCIuanNvblwiLFxuICAgIH5jb250ZW50X3R5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfmNvbnRlbnRzPWNvbnRlbnRzIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZyxcbiAgKTtcblxubGV0IHJlYWRfZmlsZSA9IChmaWxlLCBrKSA9PiB7XG4gIGxldCByZWFkZXIgPSBbJWpzIG5ldyBGaWxlLmZpbGVSZWFkZXJdO1xuICByZWFkZXIjI3JlYWRBc1RleHQoZmlsZSk7XG4gIHJlYWRlciMjLm9ubG9hZCA6PVxuICAgIERvbS5oYW5kbGVyKF8gPT4ge1xuICAgICAgbGV0IHJlc3VsdCA9IHJlYWRlciMjLnJlc3VsdDtcbiAgICAgIGxldCBvcHRpb24gPSBKcy5PcHQudG9fb3B0aW9uKEZpbGUuQ29lcmNlVG8uc3RyaW5nKHJlc3VsdCkpO1xuICAgICAgbGV0IGRhdGEgPSBPcHRpb24ubWFwKEpzLnRvX3N0cmluZywgb3B0aW9uKTtcbiAgICAgIGsoZGF0YSk7XG4gICAgICBKcy5fdHJ1ZTtcbiAgICB9KTtcbn07XG5cbmxldCBzZXRfbG9jYWxzdG9yZSA9IChrOiBzdHJpbmcsIHY6IHN0cmluZyk6IHVuaXQgPT4ge1xuICBsZXQgbG9jYWxfc3RvcmUgPVxuICAgIEpzLk9wdGRlZi5nZXQoRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlLCAoKSA9PiBhc3NlcnQoZmFsc2UpKTtcbiAgbG9jYWxfc3RvcmUjI3NldEl0ZW0oSnMuc3RyaW5nKGspLCBKcy5zdHJpbmcodikpO1xufTtcblxubGV0IGdldF9sb2NhbHN0b3JlID0gKGs6IHN0cmluZyk6IG9wdGlvbihzdHJpbmcpID0+XG4gIHRyeSh7XG4gICAgbGV0IGxvY2FsX3N0b3JlID1cbiAgICAgIEpzLk9wdGRlZi5nZXQoRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlLCAoKSA9PiBhc3NlcnQoZmFsc2UpKTtcbiAgICBsb2NhbF9zdG9yZSMjZ2V0SXRlbShKcy5zdHJpbmcoaykpXG4gICAgfD4gKFxuICAgICAgeCA9PiBKcy5PcHQuZ2V0KHgsICgpID0+IGFzc2VydChmYWxzZSkpIHw+IEpzLnRvX3N0cmluZyB8PiBPcHRpb24uc29tZVxuICAgICk7XG4gIH0pIHtcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IGNsZWFyX2xvY2Fsc3RvcmUgPSAoKSA9PiB7XG4gIGxldCBsb2NhbF9zdG9yZSA9XG4gICAgSnMuT3B0ZGVmLmdldChEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UsICgpID0+IGFzc2VydChmYWxzZSkpO1xuICBsb2NhbF9zdG9yZSMjY2xlYXI7XG59O1xuXG5sZXQgY29uZmlybSA9IG1lc3NhZ2UgPT4ge1xuICBKcy50b19ib29sKERvbV9odG1sLndpbmRvdyMjY29uZmlybShKcy5zdHJpbmcobWVzc2FnZSkpKTtcbn07XG5cbmxldCBsb2cgPSBkYXRhID0+IHtcbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2coZGF0YSk7XG59O1xuXG5sZXQgY2xpcGJvYXJkX3NoaW1faWQgPSBcImNsaXBib2FyZC1zaGltXCI7XG5cbmxldCBmb2N1c19jbGlwYm9hcmRfc2hpbSA9ICgpID0+IGdldF9lbGVtX2J5X2lkKGNsaXBib2FyZF9zaGltX2lkKSMjZm9jdXM7XG5cbmxldCBjbGlwYm9hcmRfc2hpbSA9IHtcbiAgTm9kZS50ZXh0YXJlYSh+YXR0cj1BdHRyLm1hbnkoW0F0dHIuaWQoY2xpcGJvYXJkX3NoaW1faWQpXSksIFtdKTtcbn07XG5cbmxldCBjb3B5ID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gIGZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gIERvbV9odG1sLmRvY3VtZW50IyNleGVjQ29tbWFuZChcbiAgICBKcy5zdHJpbmcoXCJzZWxlY3RBbGxcIiksXG4gICAgSnMuYm9vbChmYWxzZSksXG4gICAgSnMuT3B0LmVtcHR5LFxuICApO1xuICBEb21faHRtbC5kb2N1bWVudCMjZXhlY0NvbW1hbmQoXG4gICAgSnMuc3RyaW5nKFwiaW5zZXJ0VGV4dFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQub3B0aW9uKFNvbWUoSnMuc3RyaW5nKHN0cikpKSxcbiAgKTtcbiAgRG9tX2h0bWwuZG9jdW1lbnQjI2V4ZWNDb21tYW5kKFxuICAgIEpzLnN0cmluZyhcInNlbGVjdEFsbFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQuZW1wdHksXG4gICk7XG59O1xuXG5sZXQgc2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlZGVkID0gKCkgPT5cbiAgdHJ5KHtcbiAgICBsZXQgY2FyZXRfZWxlbSA9IGdldF9lbGVtX2J5X2lkKFwiY2FyZXRcIik7XG4gICAgbGV0IG1haW4gPSBnZXRfZWxlbV9ieV9pZChcIm1haW5cIik7XG4gICAgbGV0IG1haW5fcmVjdCA9IG1haW4jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBsZXQgY2FyZXRfcmVjdCA9IGNhcmV0X2VsZW0jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcblxuICAgIGlmIChjYXJldF9yZWN0IyMudG9wIDwgbWFpbl9yZWN0IyMudG9wKSB7XG4gICAgICBjYXJldF9lbGVtIyNzY3JvbGxJbnRvVmlldyhKcy5fdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChjYXJldF9yZWN0IyMuYm90dG9tID4gbWFpbl9yZWN0IyMuYm90dG9tKSB7XG4gICAgICBjYXJldF9lbGVtIyNzY3JvbGxJbnRvVmlldyhKcy5fZmFsc2UpO1xuICAgIH07XG4gIH0pIHtcbiAgfCBBc3NlcnRfZmFpbHVyZShfKSA9PiAoKVxuICB9O1xuXG5tb2R1bGUgRnJhZ21lbnQgPSB7XG4gIGxldCBzZXRfY3VycmVudCA9IGZyYWcgPT4ge1xuICAgIGxldCBmcmFnID1cbiAgICAgIHN3aXRjaCAoZnJhZykge1xuICAgICAgfCBcIlwiID0+IFwiXCJcbiAgICAgIHwgZnJhZyA9PiBcIiNcIiArKyBmcmFnXG4gICAgICB9O1xuICAgIGxldCBoaXN0b3J5ID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMuaGlzdG9yeTtcbiAgICBoaXN0b3J5IyNwdXNoU3RhdGUoSnMubnVsbCwgSnMuc3RyaW5nKFwiXCIpLCBKcy5zb21lKEpzLnN0cmluZyhmcmFnKSkpO1xuICB9O1xuXG4gIGxldCBnZXRfY3VycmVudCA9ICgpID0+IHtcbiAgICBsZXQgZnJhZ21lbnRfb2ZfdXJsID0gKHVybDogVXJsLnVybCk6IHN0cmluZyA9PlxuICAgICAgc3dpdGNoICh1cmwpIHtcbiAgICAgIHwgSHR0cCh7aHVfZnJhZ21lbnQ6IHN0ciwgX30pXG4gICAgICB8IEh0dHBzKHtodV9mcmFnbWVudDogc3RyLCBffSlcbiAgICAgIHwgRmlsZSh7ZnVfZnJhZ21lbnQ6IHN0ciwgX30pID0+IHN0clxuICAgICAgfTtcbiAgICBVcmwuQ3VycmVudC5nZXQoKSB8PiBPcHRpb24ubWFwKGZyYWdtZW50X29mX3VybCk7XG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgdHlfdmlldyA9IChjbHM6IHN0cmluZywgczogc3RyaW5nKTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIGNsc10pLCBbdGV4dChzKV0pO1xuXG5sZXQgYWxpYXNfdmlldyA9IChzOiBzdHJpbmcpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1widHlwLWFsaWFzLXZpZXdcIl0pLCBbdGV4dChzKV0pO1xuXG5sZXQgcHJvdl92aWV3OiBUeXAudHlwZV9wcm92ZW5hbmNlID0+IE5vZGUudCA9XG4gIGZ1blxuICB8IEludGVybmFsID0+IGRpdihbXSlcbiAgfCBGcmVlKG5hbWUpID0+XG4gICAgZGl2KH5hdHRyPWNsc3MoW1widHlwLW1vZFwiLCBcImZyZWUtdHlwZS12YXJcIl0pLCBbdGV4dChuYW1lKV0pXG4gIHwgVHlwZUhvbGUgPT4gZGl2KH5hdHRyPWNsc3MoW1widHlwLW1vZFwiLCBcInR5cGUtaG9sZVwiXSksIFt0ZXh0KFwi8J2cj1wiKV0pXG4gIHwgU3luU3dpdGNoID0+IGRpdih+YXR0cj1jbHNzKFtcInR5cC1tb2RcIiwgXCJzeW4tc3dpdGNoXCJdKSwgW3RleHQoXCLih5JcIildKTtcblxubGV0IHJlYyB2aWV3X3R5ID0gKHR5OiBIYXozbGNvcmUuVHlwLnQpOiBOb2RlLnQgPT5cbiAgLy9UT0RPOiBwYXJlbnMgb24gb3BzIHdoZW4gYW1iaWd1b3VzXG4gIHN3aXRjaCAodHkpIHtcbiAgfCBVbmtub3duKHByb3YpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgY2xzcyhbXCJ0eXAtdmlld1wiLCBcImF0b21cIiwgXCJ1bmtub3duXCJdKSxcbiAgICAgICAgICBBdHRyLnRpdGxlKFR5cC5zaG93X3R5cGVfcHJvdmVuYW5jZShwcm92KSksXG4gICAgICAgIF0pLFxuICAgICAgW3RleHQoXCI/XCIpIC8qLCBwcm92X3ZpZXcocHJvdikqL10sXG4gICAgKVxuICB8IEludCA9PiB0eV92aWV3KFwiSW50XCIsIFwiSW50XCIpXG4gIHwgRmxvYXQgPT4gdHlfdmlldyhcIkZsb2F0XCIsIFwiRmxvYXRcIilcbiAgfCBTdHJpbmcgPT4gdHlfdmlldyhcIlN0cmluZ1wiLCBcIlN0cmluZ1wiKVxuICB8IEJvb2wgPT4gdHlfdmlldyhcIkJvb2xcIiwgXCJCb29sXCIpXG4gIHwgVmFyKG5hbWUpID0+IHR5X3ZpZXcoXCJWYXJcIiwgbmFtZSlcbiAgfCBSZWMoeCwgdCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUmVjXCJdKSxcbiAgICAgIFt0ZXh0KFwiUmVjIFwiICsrIHggKysgXCIuIFwiKSwgdmlld190eSh0KV0sXG4gICAgKVxuICB8IExpc3QodCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiYXRvbVwiLCBcIkxpc3RcIl0pLFxuICAgICAgW3RleHQoXCJbXCIpLCB2aWV3X3R5KHQpLCB0ZXh0KFwiXVwiKV0sXG4gICAgKVxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiQXJyb3dcIl0pLFxuICAgICAgW3ZpZXdfdHkodDEpLCB0ZXh0KFwiIC0+IFwiKSwgdmlld190eSh0MildLFxuICAgIClcbiAgfCBQcm9kKFtdKSA9PiBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLCBbdGV4dChcIigpXCIpXSlcbiAgfCBQcm9kKFtfXSkgPT5cbiAgICBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLCBbdGV4dChcIlNpbmdsZXRvbiBQcm9kdWN0XCIpXSlcbiAgfCBQcm9kKFt0MCwgLi4udHNdKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJhdG9tXCIsIFwiUHJvZFwiXSksXG4gICAgICBbXG4gICAgICAgIHRleHQoXCIoXCIpLFxuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLFxuICAgICAgICAgIFt2aWV3X3R5KHQwKV1cbiAgICAgICAgICBAIChMaXN0Lm1hcCh0ID0+IFt0ZXh0KFwiLCBcIiksIHZpZXdfdHkodCldLCB0cykgfD4gTGlzdC5mbGF0dGVuKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGV4dChcIilcIiksXG4gICAgICBdLFxuICAgIClcbiAgfCBTdW0odHMpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlN1bVwiXSksXG4gICAgICBzd2l0Y2ggKHRzKSB7XG4gICAgICB8IFtdID0+IFt0ZXh0KFwiTnVsbGFyeSBTdW1cIildXG4gICAgICB8IFt0MF0gPT4gW3RleHQoXCIrXCIpXSBAIGN0cl92aWV3KHQwKVxuICAgICAgfCBbdDAsIC4uLnRzXSA9PlxuICAgICAgICBsZXQgdHNfdmlld3MgPVxuICAgICAgICAgIExpc3QubWFwKHQgPT4gW3RleHQoXCIgKyBcIildIEAgY3RyX3ZpZXcodCksIHRzKSB8PiBMaXN0LmZsYXR0ZW47XG4gICAgICAgIGN0cl92aWV3KHQwKSBAIHRzX3ZpZXdzO1xuICAgICAgfSxcbiAgICApXG4gIH1cbmFuZCBjdHJfdmlldyA9ICgoY3RyLCB0eXApKSA9PlxuICBzd2l0Y2ggKHR5cCkge1xuICB8IE5vbmUgPT4gW3RleHQoY3RyKV1cbiAgfCBTb21lKHR5cCkgPT4gW3RleHQoY3RyICsrIFwiKFwiKSwgdmlld190eSh0eXApLCB0ZXh0KFwiKVwiKV1cbiAgfTtcblxubGV0IHZpZXcgPSAodHk6IEhhejNsY29yZS5UeXAudCk6IE5vZGUudCA9PlxuICBkaXZfYyhcInR5cC13cmFwcGVyXCIsIFt2aWV3X3R5KHR5KV0pO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IHZpZXcgPSAoa2luZDogSGF6M2xjb3JlLktpbmQudCk6IE5vZGUudCA9PlxuICBzd2l0Y2ggKGtpbmQpIHtcbiAgfCBTaW5nbGV0b24odHkpID0+IGRpdl9jKFwia2luZC12aWV3XCIsIFtUeXBlLnZpZXcodHkpXSlcbiAgfCBBYnN0cmFjdCA9PiBkaXZfYyhcImtpbmQtdmlld1wiLCBbdGV4dChcIlR5cGVcIildKVxuICB9O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbi8vIEEgZ2VuZXJpYyBrZXktdmFsdWUgc3RvcmUgZm9yIHNhdmluZy9sb2FkaW5nIGRhdGEgdG8vZnJvbSBsb2NhbCBzdG9yYWdlXG5tb2R1bGUgR2VuZXJpYyA9IHtcbiAgbGV0IHByZWZpeDogc3RyaW5nID0gXCJLRVlfU1RPUkVfXCI7XG5cbiAgbGV0IGZ1bGxfa2V5ID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBwcmVmaXggKysga2V5O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdW5pdCA9PlxuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShmdWxsX2tleShrZXkpLCB2YWx1ZSk7XG5cbiAgbGV0IGxvYWQgPSAoa2V5OiBzdHJpbmcpOiBvcHRpb24oc3RyaW5nKSA9PlxuICAgIEpzVXRpbC5nZXRfbG9jYWxzdG9yZShmdWxsX2tleShrZXkpKTtcbn07XG5cbi8vIFNldHRpbmdzIHNlcmlhbGl6YXRpb25cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgbGV0IHNhdmVfc2V0dGluZ3Nfa2V5OiBzdHJpbmcgPSBcIlNFVFRJTkdTXCI7XG5cbiAgbGV0IGRlZmF1bHQgPSBJbml0LnN0YXJ0dXAuc2V0dGluZ3M7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNldHRpbmdzID0+XG4gICAgc2V0dGluZ3MgfD4gU2V0dGluZ3Muc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PlxuICAgIHRyeShcbiAgICAgIGRhdGFcbiAgICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICAgIHw+IFNldHRpbmdzLnRfb2Zfc2V4cFxuICAgICAgfD4gU2V0dGluZ3MuZml4X2luc3RydWN0b3JfbW9kZVxuICAgICkge1xuICAgIHwgXyA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXR0aW5ncy5cIik7XG4gICAgICBkZWZhdWx0O1xuICAgIH07XG5cbiAgbGV0IHNhdmUgPSAoc2V0dGluZ3M6IFNldHRpbmdzLnQpOiB1bml0ID0+XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5LCBzZXJpYWxpemUoc2V0dGluZ3MpKTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXksIHNlcmlhbGl6ZShkZWZhdWx0KSk7XG4gICAgZGVmYXVsdDtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICgpOiBTZXR0aW5ncy50ID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PiBkZXNlcmlhbGl6ZShkYXRhKVxuICAgIH07XG5cbiAgbGV0IGV4cG9ydCA9ICgpID0+IE9wdGlvbi5nZXQoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5KSk7XG4gIGxldCBpbXBvcnQgPSBkYXRhID0+IHtcbiAgICBsZXQgc2V0dGluZ3MgPSBkZXNlcmlhbGl6ZShkYXRhKTtcbiAgICBzYXZlKHNldHRpbmdzKTtcbiAgICBzZXR0aW5ncztcbiAgfTtcbn07XG5cbi8vIEV4cGxhaW5UaGlzTW9kZWwgc2VyaWFsaXphdGlvblxubW9kdWxlIEV4cGxhaW5UaGlzTW9kZWwgPSB7XG4gIGxldCBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5OiBzdHJpbmcgPSBcIkV4cGxhaW5UaGlzTW9kZWxcIjtcblxuICBsZXQgc2VyaWFsaXplID0gZXhwbGFpblRoaXNNb2RlbCA9PlxuICAgIGV4cGxhaW5UaGlzTW9kZWwgfD4gRXhwbGFpblRoaXNNb2RlbC5zZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+XG4gICAgdHJ5KGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBFeHBsYWluVGhpc01vZGVsLnRfb2Zfc2V4cCkge1xuICAgIHwgXyA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBFeHBsYWluVGhpc01vZGVsLlwiKTtcbiAgICAgIEV4cGxhaW5UaGlzTW9kZWwuaW5pdDtcbiAgICB9O1xuXG4gIGxldCBzYXZlID0gKGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCk6IHVuaXQgPT5cbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoXG4gICAgICBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5LFxuICAgICAgc2VyaWFsaXplKGV4cGxhaW5UaGlzTW9kZWwpLFxuICAgICk7XG5cbiAgbGV0IGluaXQgPSAoKSA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKFxuICAgICAgc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSxcbiAgICAgIHNlcmlhbGl6ZShFeHBsYWluVGhpc01vZGVsLmluaXQpLFxuICAgICk7XG4gICAgRXhwbGFpblRoaXNNb2RlbC5pbml0O1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCk6IEV4cGxhaW5UaGlzTW9kZWwudCA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PiBkZXNlcmlhbGl6ZShkYXRhKVxuICAgIH07XG5cbiAgbGV0IHJlYyBleHBvcnQgPSAoKSA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkpKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgXyA9IGluaXQoKTtcbiAgICAgIGV4cG9ydCgpO1xuICAgIHwgU29tZShkYXRhKSA9PiBkYXRhXG4gICAgfTtcblxuICBsZXQgaW1wb3J0ID0gZGF0YSA9PiB7XG4gICAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBkZXNlcmlhbGl6ZShkYXRhKTtcbiAgICBzYXZlKGV4cGxhaW5UaGlzTW9kZWwpO1xuICB9O1xufTtcblxuLy8gU2NyYXRjaCBtb2RlIHNlcmlhbGl6YXRpb25cbm1vZHVsZSBTY3JhdGNoID0ge1xuICBsZXQgc2F2ZV9zY3JhdGNoX2tleTogc3RyaW5nID0gXCJTQVZFX1NDUkFUQ0hcIjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudCA9IFBlcnNpc3RlbnREYXRhLnNjcmF0Y2g7XG5cbiAgbGV0IHRvX3BlcnNpc3RlbnQgPSAoKGlkeCwgc2xpZGVzLCByZXN1bHRzKSk6IHBlcnNpc3RlbnQgPT4gKFxuICAgIGlkeCxcbiAgICBMaXN0Lm1hcChTY3JhdGNoU2xpZGUucGVyc2lzdCwgc2xpZGVzKSxcbiAgICByZXN1bHRzXG4gICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC50b19wZXJzaXN0ZW50KVxuICAgIHw+IE1vZGVsUmVzdWx0cy5iaW5kaW5ncyxcbiAgKTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9ICgoaWR4LCBzbGlkZXMsIHJlc3VsdHMpOiBwZXJzaXN0ZW50KSA9PiB7XG4gICAgKFxuICAgICAgaWR4LFxuICAgICAgTGlzdC5tYXAoU2NyYXRjaFNsaWRlLnVucGVyc2lzdCwgc2xpZGVzKSxcbiAgICAgIHJlc3VsdHNcbiAgICAgIHw+IExpc3QudG9fc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMub2Zfc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMubWFwKE1vZGVsUmVzdWx0Lm9mX3BlcnNpc3RlbnQpLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNjcmF0Y2ggPT4ge1xuICAgIHNjcmF0Y2ggfD4gdG9fcGVyc2lzdGVudCB8PiBzZXhwX29mX3BlcnNpc3RlbnQgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gcGVyc2lzdGVudF9vZl9zZXhwIHw+IG9mX3BlcnNpc3RlbnQ7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoc2NyYXRjaCk6IHVuaXQgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX3NjcmF0Y2hfa2V5LCBzZXJpYWxpemUoc2NyYXRjaCkpO1xuICB9O1xuXG4gIGxldCBpbml0ID0gKCkgPT4ge1xuICAgIGxldCBzY3JhdGNoID0gb2ZfcGVyc2lzdGVudChJbml0LnN0YXJ0dXAuc2NyYXRjaCk7XG4gICAgc2F2ZShzY3JhdGNoKTtcbiAgICBzY3JhdGNoO1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCkgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX3NjcmF0Y2hfa2V5KSkge1xuICAgIHwgTm9uZSA9PiBpbml0KClcbiAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgIHRyeShkZXNlcmlhbGl6ZShkYXRhKSkge1xuICAgICAgfCBfID0+IGluaXQoKVxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IGV4cG9ydCA9ICgpID0+IHNlcmlhbGl6ZShsb2FkKCkpO1xuICBsZXQgaW1wb3J0ID0gZGF0YSA9PiBzYXZlKGRlc2VyaWFsaXplKGRhdGEpKTtcbn07XG5cbm1vZHVsZSBEb2N1bWVudGF0aW9uID0ge1xuICBsZXQgc2F2ZV9kb2N1bWVudGF0aW9uX2tleTogc3RyaW5nID0gXCJTQVZFX0RPQ1VNRU5UQVRJT05cIjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudCA9IFBlcnNpc3RlbnREYXRhLmRvY3VtZW50YXRpb247XG5cbiAgbGV0IHBlcnNpc3QgPSAoKG5hbWUsIGVkaXRvcjogRWRpdG9yLnQpKSA9PiB7XG4gICAgKG5hbWUsIFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChlZGl0b3Iuc3RhdGUuemlwcGVyKSk7XG4gIH07XG5cbiAgbGV0IHVucGVyc2lzdCA9ICgobmFtZSwgemlwcGVyKSkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdCh6aXBwZXIpO1xuICAgIChuYW1lLCBFZGl0b3IuaW5pdCh6aXBwZXIsIH5yZWFkX29ubHk9ZmFsc2UpKTtcbiAgfTtcblxuICBsZXQgdG9fcGVyc2lzdGVudCA9ICgoc3RyaW5nLCBzbGlkZXMsIHJlc3VsdHMpKTogcGVyc2lzdGVudCA9PiAoXG4gICAgc3RyaW5nLFxuICAgIExpc3QubWFwKHBlcnNpc3QsIHNsaWRlcyksXG4gICAgcmVzdWx0c1xuICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQudG9fcGVyc2lzdGVudClcbiAgICB8PiBNb2RlbFJlc3VsdHMuYmluZGluZ3MsXG4gICk7XG5cbiAgbGV0IG9mX3BlcnNpc3RlbnQgPSAoKHN0cmluZywgc2xpZGVzLCByZXN1bHRzKTogcGVyc2lzdGVudCkgPT4ge1xuICAgIChcbiAgICAgIHN0cmluZyxcbiAgICAgIExpc3QubWFwKHVucGVyc2lzdCwgc2xpZGVzKSxcbiAgICAgIHJlc3VsdHNcbiAgICAgIHw+IExpc3QudG9fc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMub2Zfc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMubWFwKE1vZGVsUmVzdWx0Lm9mX3BlcnNpc3RlbnQpLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNsaWRlcyA9PiB7XG4gICAgc2xpZGVzIHw+IHRvX3BlcnNpc3RlbnQgfD4gc2V4cF9vZl9wZXJzaXN0ZW50IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHBlcnNpc3RlbnRfb2Zfc2V4cCB8PiBvZl9wZXJzaXN0ZW50O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKHNsaWRlcyk6IHVuaXQgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX2RvY3VtZW50YXRpb25fa2V5LCBzZXJpYWxpemUoc2xpZGVzKSk7XG4gIH07XG5cbiAgbGV0IGluaXQgPSAoKSA9PiB7XG4gICAgbGV0IGRvY3VtZW50YXRpb24gPSBvZl9wZXJzaXN0ZW50KEluaXQuc3RhcnR1cC5kb2N1bWVudGF0aW9uKTtcbiAgICBzYXZlKGRvY3VtZW50YXRpb24pO1xuICAgIGRvY3VtZW50YXRpb247XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAoKSA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfZG9jdW1lbnRhdGlvbl9rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgdHJ5KGRlc2VyaWFsaXplKGRhdGEpKSB7XG4gICAgICB8IF8gPT4gaW5pdCgpXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZXhwb3J0ID0gKCkgPT4gc2VyaWFsaXplKGxvYWQoKSk7XG4gIGxldCBpbXBvcnQgPSBkYXRhID0+IHNhdmUoZGVzZXJpYWxpemUoZGF0YSkpO1xufTtcblxubW9kdWxlIEV4ZXJjaXNlID0ge1xuICBvcGVuIEV4ZXJjaXNlO1xuXG4gIGxldCBjdXJfZXhlcmNpc2Vfa2V5ID0gXCJDVVJfRVhFUkNJU0VcIjtcblxuICBsZXQga2V5c3RyaW5nX29mX2tleSA9IGtleSA9PiB7XG4gICAga2V5IHw+IHNleHBfb2Zfa2V5IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGtleXN0cmluZ19vZiA9IHAgPT4ge1xuICAgIGtleV9vZihwKSB8PiBrZXlzdHJpbmdfb2Zfa2V5O1xuICB9O1xuXG4gIGxldCBrZXlfb2Zfa2V5c3RyaW5nID0ga2V5c3RyaW5nID0+IHtcbiAgICBrZXlzdHJpbmcgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBrZXlfb2Zfc2V4cDtcbiAgfTtcblxuICBsZXQgc2F2ZV9leGVyY2lzZV9rZXkgPSBrZXkgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmdfb2Zfa2V5KGtleSkpO1xuICB9O1xuXG4gIGxldCBzYXZlX2V4ZXJjaXNlID0gKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9vZl9zdGF0ZShleGVyY2lzZSk7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBsZXQgdmFsdWUgPSBFeGVyY2lzZS5zZXJpYWxpemVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShrZXlzdHJpbmcsIHZhbHVlKTtcbiAgfTtcblxuICBsZXQgaW5pdF9leGVyY2lzZSA9IChzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9vZihzcGVjKTtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIGxldCBleGVyY2lzZSA9IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMoc3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgc2F2ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZyk7XG4gICAgZXhlcmNpc2U7XG4gIH07XG5cbiAgbGV0IGxvYWRfZXhlcmNpc2UgPSAoa2V5LCBzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTogRXhlcmNpc2Uuc3RhdGUgPT4ge1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoa2V5c3RyaW5nKSkge1xuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgbGV0IGV4ZXJjaXNlID1cbiAgICAgICAgdHJ5KEV4ZXJjaXNlLmRlc2VyaWFsaXplX2V4ZXJjaXNlKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICB8IF8gPT4gaW5pdF9leGVyY2lzZShzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgICAgICB9O1xuICAgICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZyk7XG4gICAgICBleGVyY2lzZTtcbiAgICB8IE5vbmUgPT4gaW5pdF9leGVyY2lzZShzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoKG4sIHNwZWNzLCBleGVyY2lzZSksIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQga2V5ID0ga2V5X29mKExpc3QubnRoKHNwZWNzLCBuKSk7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBzYXZlX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nKTtcbiAgfTtcblxuICBsZXQgaW5pdCA9ICh+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGV4ZXJjaXNlcyA9IHtcbiAgICAgIChcbiAgICAgICAgMCxcbiAgICAgICAgRXhlcmNpc2VTZXR0aW5ncy5leGVyY2lzZXMsXG4gICAgICAgIExpc3QubnRoKEV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzLCAwKVxuICAgICAgICB8PiBFeGVyY2lzZS5zdGF0ZV9vZl9zcGVjKH5pbnN0cnVjdG9yX21vZGUpLFxuICAgICAgKTtcbiAgICB9O1xuICAgIHNhdmUoZXhlcmNpc2VzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBleGVyY2lzZXM7XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSkpIHtcbiAgICB8IFNvbWUoa2V5c3RyaW5nKSA9PlxuICAgICAgbGV0IGtleSA9IGtleV9vZl9rZXlzdHJpbmcoa2V5c3RyaW5nKTtcbiAgICAgIHN3aXRjaCAoRXhlcmNpc2UuZmluZF9rZXlfb3B0KGtleSwgc3BlY3MpKSB7XG4gICAgICB8IFNvbWUoKG4sIHNwZWMpKSA9PlxuICAgICAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShrZXlzdHJpbmcpKSB7XG4gICAgICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgICAgIGxldCBleGVyY2lzZSA9XG4gICAgICAgICAgICB0cnkoZGVzZXJpYWxpemVfZXhlcmNpc2UoZGF0YSwgfnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgICAgICB8IF8gPT4gaW5pdF9leGVyY2lzZShzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAobiwgc3BlY3MsIGV4ZXJjaXNlKTtcbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgLy8gaW5pdGlhbGl6ZSBleGVyY2lzZSBmcm9tIHNwZWNcbiAgICAgICAgICBsZXQgZXhlcmNpc2UgPSBFeGVyY2lzZS5zdGF0ZV9vZl9zcGVjKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgICAgIHNhdmVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgICAgIChuLCBzcGVjcywgZXhlcmNpc2UpO1xuICAgICAgICB9XG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgLy8gaW52YWxpZCBjdXJyZW50IGV4ZXJjaXNlIGtleSBzYXZlZCwgbG9hZCB0aGUgZmlyc3QgZXhlcmNpc2VcbiAgICAgICAgbGV0IGZpcnN0X3NwZWMgPSBMaXN0Lm50aChzcGVjcywgMCk7XG4gICAgICAgIGxldCBmaXJzdF9rZXkgPSBFeGVyY2lzZS5rZXlfb2YoZmlyc3Rfc3BlYyk7XG4gICAgICAgICgwLCBzcGVjcywgbG9hZF9leGVyY2lzZShmaXJzdF9rZXksIGZpcnN0X3NwZWMsIH5pbnN0cnVjdG9yX21vZGUpKTtcbiAgICAgIH07XG4gICAgfCBOb25lID0+IGluaXQofmluc3RydWN0b3JfbW9kZSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCBwcmVwX2V4ZXJjaXNlX2V4cG9ydCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICB7XG4gICAgICBjdXJfZXhlcmNpc2U6XG4gICAgICAgIGtleV9vZl9rZXlzdHJpbmcoXG4gICAgICAgICAgT3B0aW9uLmdldChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSkpLFxuICAgICAgICApLFxuICAgICAgZXhlcmNpc2VfZGF0YTpcbiAgICAgICAgc3BlY3NcbiAgICAgICAgfD4gTGlzdC5tYXAoc3BlYyA9PiB7XG4gICAgICAgICAgICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9vZihzcGVjKTtcbiAgICAgICAgICAgICBsZXQgZXhlcmNpc2UgPVxuICAgICAgICAgICAgICAgbG9hZF9leGVyY2lzZShrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgICAgICAgICAgICB8PiBFeGVyY2lzZS5wZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgICAgICAgIChrZXksIGV4ZXJjaXNlKTtcbiAgICAgICAgICAgfSksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwcmVwX2V4ZXJjaXNlX2V4cG9ydCh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfD4gc2V4cF9vZl9leGVyY2lzZV9leHBvcnRcbiAgICB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBleHBvcnQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBpbXBvcnQgPSAoZGF0YSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGV4ZXJjaXNlX2V4cG9ydCA9IGRhdGEgfD4gZGVzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0O1xuICAgIHNhdmVfZXhlcmNpc2Vfa2V5KGV4ZXJjaXNlX2V4cG9ydC5jdXJfZXhlcmNpc2UpO1xuICAgIGV4ZXJjaXNlX2V4cG9ydC5leGVyY2lzZV9kYXRhXG4gICAgfD4gTGlzdC5pdGVyKCgoa2V5LCBwZXJzaXN0ZW50X3N0YXRlKSkgPT4ge1xuICAgICAgICAgbGV0IHNwZWMgPSBFeGVyY2lzZS5maW5kX2tleV9vcHQoa2V5LCBzcGVjcyk7XG4gICAgICAgICBzd2l0Y2ggKHNwZWMpIHtcbiAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICBwcmludF9lbmRsaW5lKFwiV2FybmluZzogc2F2ZWQga2V5IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gZXhlcmNpc2VcIilcbiAgICAgICAgIHwgU29tZSgoXywgc3BlYykpID0+XG4gICAgICAgICAgIHNhdmVfZXhlcmNpc2UoXG4gICAgICAgICAgICAgRXhlcmNpc2UudW5wZXJzaXN0X3N0YXRlKFxuICAgICAgICAgICAgICAgcGVyc2lzdGVudF9zdGF0ZSxcbiAgICAgICAgICAgICAgIH5zcGVjLFxuICAgICAgICAgICAgICAgfmluc3RydWN0b3JfbW9kZSxcbiAgICAgICAgICAgICApLFxuICAgICAgICAgICAgIH5pbnN0cnVjdG9yX21vZGUsXG4gICAgICAgICAgIClcbiAgICAgICAgIH07XG4gICAgICAgfSk7XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gSGF6M2xjb3JlO1xuXG4vKiBNT0RFTDpcblxuICAgICAgVGhlIG1vZGVsIGNvbnNpc3RzIG9mIHRocmVlIGJyb2FkIGNhdGVnb3JpZXMuIEVkaXRvcnMgaXMgdGhlIG1lYXQsXG4gICAgICBjb250YWluaW5nIHRoZSBjb2RlIGNvbnRlbnQgYW5kIGN1cnNvci9zZWxlY3Rpb24vYnVmZmVyIHN0YXRlIGZvciBhbGxcbiAgICAgIGFjdGl2ZSBlZGl0b3JzLiBTZXR0aW5ncyBhcmUgdXNlci1zZWxlY3RhYmxlIHByZWZlcmVuY2VzLiBUb2dldGhlcixcbiAgICAgIHRoZXNlIHR3byBjb21wcmlzZSB0aGUgcGVyc2lzdGVudCBzdGF0ZSBvZiB0aGUgYXBwbGljYXRpb24gd2hpY2ggaXNcbiAgICAgIHNhdmVkIHRvIGxvY2Fsc3RvcmUuXG5cbiAgICAgIE1ldGEgb24gdGhlIG90aGVyIGhhbmQgY29uc2lzdHMgb2YgZXZlcnl0aGluZyB3aGljaCBpcyBub3RcbiAgICAgIHBlcmlzdGFudCwgaW5jbHVkaW5nIHRyYW5zaXRvcnkgdWlfc3RhdGUgc3VjaCBhcyB3aGV0aGVyIHRoZSBtb3VzZVxuICAgICAgaXMgaGVsZCBkb3duLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG50eXBlIHRpbWVzdGFtcCA9IGZsb2F0O1xuXG4vKiBOb24tcGVyc2lzdGVudCBhcHBsaWNhdGlvbiBzdGF0ZSAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxudHlwZSB1aV9zdGF0ZSA9IHtcbiAgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICBzaG93X2JhY2twYWNrX3RhcmdldHM6IGJvb2wsXG4gIG1vdXNlZG93bjogYm9vbCxcbn07XG5cbmxldCB1aV9zdGF0ZV9pbml0ID0ge1xuICBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLmluaXQsXG4gIHNob3dfYmFja3BhY2tfdGFyZ2V0czogZmFsc2UsXG4gIG1vdXNlZG93bjogZmFsc2UsXG59O1xuXG50eXBlIHQgPSB7XG4gIGVkaXRvcnM6IEVkaXRvcnMudCxcbiAgc2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gIHJlc3VsdHM6IE1vZGVsUmVzdWx0cy50LFxuICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnQsXG4gIGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgYWNjZXNzaWJpbGl0eU1vZGVsOiBBY2Nlc3NpYmlsaXR5TW9kZWwudCxcbiAgdWlfc3RhdGUsXG59O1xuXG5sZXQgY3V0b2ZmID0gKD09PSk7XG5cbmxldCBtayA9IChlZGl0b3JzLCByZXN1bHRzLCBzdGF0aWNzKSA9PiB7XG4gIGVkaXRvcnMsXG4gIHNldHRpbmdzOiBJbml0LnN0YXJ0dXAuc2V0dGluZ3MsXG4gIHJlc3VsdHMsXG4gIHN0YXRpY3MsXG4gIGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwuaW5pdCxcbiAgYWNjZXNzaWJpbGl0eU1vZGVsOiBBY2Nlc3NpYmlsaXR5TW9kZWwuaW5pdCxcbiAgdWlfc3RhdGU6IHVpX3N0YXRlX2luaXQsXG59O1xuXG5sZXQgYmxhbmsgPVxuICBtayhFZGl0b3JzLlNjcmF0Y2goMCwgW10pLCBNb2RlbFJlc3VsdHMuZW1wdHksIENhY2hlZFN0YXRpY3MuZW1wdHkpO1xuXG5sZXQgbG9hZF9lZGl0b3JzID1cbiAgICAofm1vZGU6IFNldHRpbmdzLm1vZGUsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpXG4gICAgOiAoRWRpdG9ycy50LCBNb2RlbFJlc3VsdHMudCkgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU2NyYXRjaCA9PlxuICAgIGxldCAoaWR4LCBzbGlkZXMsIHJlc3VsdHMpID0gU3RvcmUuU2NyYXRjaC5sb2FkKCk7XG4gICAgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCByZXN1bHRzKTtcbiAgfCBEb2N1bWVudGF0aW9uID0+XG4gICAgbGV0IChuYW1lLCBzbGlkZXMsIHJlc3VsdHMpID0gU3RvcmUuRG9jdW1lbnRhdGlvbi5sb2FkKCk7XG4gICAgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgcmVzdWx0cyk7XG4gIHwgRXhlcmNpc2VzID0+XG4gICAgbGV0IChuLCBzcGVjcywgZXhlcmNpc2UpID1cbiAgICAgIFN0b3JlLkV4ZXJjaXNlLmxvYWQoXG4gICAgICAgIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZSxcbiAgICAgICk7XG4gICAgKEV4ZXJjaXNlcyhuLCBzcGVjcywgZXhlcmNpc2UpLCBNb2RlbFJlc3VsdHMuZW1wdHkpO1xuICB9O1xuXG5sZXQgc2F2ZV9lZGl0b3JzID1cbiAgICAoZWRpdG9yczogRWRpdG9ycy50LCByZXN1bHRzOiBNb2RlbFJlc3VsdHMudCwgfmluc3RydWN0b3JfbW9kZTogYm9vbClcbiAgICA6IHVuaXQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChuLCBzbGlkZXMpID0+IFN0b3JlLlNjcmF0Y2guc2F2ZSgobiwgc2xpZGVzLCByZXN1bHRzKSlcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBTdG9yZS5Eb2N1bWVudGF0aW9uLnNhdmUoKG5hbWUsIHNsaWRlcywgcmVzdWx0cykpXG4gIHwgRXhlcmNpc2VzKG4sIHNwZWNzLCBleGVyY2lzZSkgPT5cbiAgICBTdG9yZS5FeGVyY2lzZS5zYXZlKChuLCBzcGVjcywgZXhlcmNpc2UpLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICB9O1xuXG5sZXQgbG9hZCA9IChpbml0X21vZGVsOiB0KTogdCA9PiB7XG4gIGxldCBzZXR0aW5ncyA9IFN0b3JlLlNldHRpbmdzLmxvYWQoKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmxvYWQoKTtcbiAgbGV0IChlZGl0b3JzLCByZXN1bHRzKSA9XG4gICAgbG9hZF9lZGl0b3JzKFxuICAgICAgfm1vZGU9c2V0dGluZ3MubW9kZSxcbiAgICAgIH5pbnN0cnVjdG9yX21vZGU9c2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICk7XG4gIGxldCBhY2Nlc3NpYmlsaXR5TW9kZWwgPSBpbml0X21vZGVsLmFjY2Vzc2liaWxpdHlNb2RlbDtcbiAgbGV0IHVpX3N0YXRlID0gaW5pdF9tb2RlbC51aV9zdGF0ZTtcbiAgbGV0IHN0YXRpY3MgPSBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAge1xuICAgIGVkaXRvcnMsXG4gICAgc2V0dGluZ3MsXG4gICAgcmVzdWx0cyxcbiAgICBzdGF0aWNzLFxuICAgIGV4cGxhaW5UaGlzTW9kZWwsXG4gICAgYWNjZXNzaWJpbGl0eU1vZGVsLFxuICAgIHVpX3N0YXRlLFxuICB9O1xufTtcblxubGV0IHNhdmUgPSAoe2VkaXRvcnMsIHNldHRpbmdzLCBleHBsYWluVGhpc01vZGVsLCByZXN1bHRzLCBffTogdCkgPT4ge1xuICBzYXZlX2VkaXRvcnMoZWRpdG9ycywgcmVzdWx0cywgfmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUpO1xuICBTdG9yZS5FeHBsYWluVGhpc01vZGVsLnNhdmUoZXhwbGFpblRoaXNNb2RlbCk7XG4gIFN0b3JlLlNldHRpbmdzLnNhdmUoc2V0dGluZ3MpO1xufTtcblxubGV0IHNhdmVfYW5kX3JldHVybiA9IChtb2RlbDogdCkgPT4ge1xuICBzYXZlKG1vZGVsKTtcbiAgT2sobW9kZWwpO1xufTtcbmxldCByZXNldCA9IChtb2RlbDogdCk6IHQgPT4ge1xuICAvKiBSZXNldCBtb2RlbCB0byBkZWZhdWx0LCBpbmNsdWRpbmcgaW4gbG9jYWxzdG9yYWdlLFxuICAgICBidXQgZG9uJ3Qgb3RoZXJ3aXNlIGVyYXNlIGxvY2Fsc3RvcmFnZSwgYWxsb3dpbmdcbiAgICAgZS5nLiBhcGkga2V5cyB0byBwZXJzaXN0ICovXG4gIGlnbm9yZShTdG9yZS5TZXR0aW5ncy5pbml0KCkpO1xuICBpZ25vcmUoU3RvcmUuRXhwbGFpblRoaXNNb2RlbC5pbml0KCkpO1xuICBpZ25vcmUoU3RvcmUuU2NyYXRjaC5pbml0KCkpO1xuICBpZ25vcmUoU3RvcmUuRG9jdW1lbnRhdGlvbi5pbml0KCkpO1xuICBpZ25vcmUoU3RvcmUuRXhlcmNpc2UuaW5pdCh+aW5zdHJ1Y3Rvcl9tb2RlPXRydWUpKTtcbiAgbGV0IG5ld19tb2RlbCA9IGxvYWQoYmxhbmspO1xuICB7XG4gICAgLi4ubmV3X21vZGVsLFxuICAgIHVpX3N0YXRlOiB7XG4gICAgICAuLi5tb2RlbC51aV9zdGF0ZSxcbiAgICAgIGZvbnRfbWV0cmljczogbW9kZWwudWlfc3RhdGUuZm9udF9tZXRyaWNzLFxuICAgIH0sXG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgQ3Vyc29yUG9zXG4gIHwgQ3Vyc29ySW5mb1xuICB8IEN1cnNvck1vdmVcbiAgfCBDb250ZXh0SW5mbztcblxubGV0IHRvX3N0cmluZyA9IChxdWVyeTogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKHF1ZXJ5KSB7XG4gIHwgQ3Vyc29yUG9zID0+IFwiQ3Vyc29yUG9zXCJcbiAgfCBDdXJzb3JJbmZvID0+IFwiQ3Vyc29ySW5mb1wiXG4gIHwgQ3Vyc29yTW92ZSA9PiBcIkN1cnNvck1vdmVcIlxuICB8IENvbnRleHRJbmZvID0+IFwiQ29udGV4dEluZm9cIlxuICB9O1xuXG5sZXQgZ2V0X3Bvc2l0aW9uID0gKGlkOiBJZC50LCBtZWFzdXJlZDogTWVhc3VyZWQudCkgPT5cbiAgc3dpdGNoIChNZWFzdXJlZC5maW5kX2J5X2lkKGlkLCBtZWFzdXJlZCkpIHtcbiAgfCBTb21lKG0pID0+IFNvbWUobS5sYXN0KVxuICB8IE5vbmUgPT4gTm9uZVxuICB9O1xuXG5sZXQgaW5mb19leHBfc3RyID0gKGV4cDogSW5mby5leHApOiBzdHJpbmcgPT5cbiAgXCJFeHByZXNzaW9uLiBcIiArKyAoZXhwLmNscyB8PiBUZXJtLkNscy5zaG93KSArKyBcIi4gXCIgKysgKGV4cC50eSB8PiBUeXAuc2hvdyk7XG5cbmxldCBpbmZvX3BhdF9zdHIgPSAocGF0OiBJbmZvLnBhdCk6IHN0cmluZyA9PlxuICBcIlBhdHRlcm4uIFwiICsrIChwYXQuY2xzIHw+IFRlcm0uQ2xzLnNob3cpICsrIFwiLiBcIiArKyAocGF0LnR5IHw+IFR5cC5zaG93KTtcblxubGV0IGluZm9fdHlwX3N0ciA9ICh0eXA6IEluZm8udHlwKTogc3RyaW5nID0+XG4gIFwiVHlwZS4gXCIgKysgKHR5cC5jbHMgfD4gVGVybS5DbHMuc2hvdyk7XG5cbmxldCBpbmZvX3RwYXRfc3RyID0gKHRwYXQ6IEluZm8udHBhdCk6IHN0cmluZyA9PlxuICBcIlR5cGUgUGF0dGVybi4gXCIgKysgKHRwYXQuY2xzIHw+IFRlcm0uQ2xzLnNob3cpO1xuXG5sZXQgaW5mb19zZWNfc3RyID0gKHNlYzogSW5mby5zZWNvbmRhcnkpOiBzdHJpbmcgPT5cbiAgXCJTZWNvbmRhcnkuIFwiICsrIChzZWMuY2xzIHw+IFRlcm0uQ2xzLnNob3cpO1xuXG5sZXQgaW5mb19zdHIgPSAoaW5mbzogSW5mby50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAoaW5mbykge1xuICB8IEluZm9FeHAoZXhwKSA9PiBpbmZvX2V4cF9zdHIoZXhwKVxuICB8IEluZm9QYXQocGF0KSA9PiBpbmZvX3BhdF9zdHIocGF0KVxuICB8IEluZm9UeXAodHlwKSA9PiBpbmZvX3R5cF9zdHIodHlwKVxuICB8IEluZm9UUGF0KHRwYXQpID0+IGluZm9fdHBhdF9zdHIodHBhdClcbiAgfCBTZWNvbmRhcnkoc2VjKSA9PiBpbmZvX3NlY19zdHIoc2VjKVxuICB9O1xuXG5sZXQgcXVlcnlfcmVwbHkgPSAofnNldHRpbmdzOiBTZXR0aW5ncy50LCBxdWVyeTogdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgbGV0IHVuc2VsZWN0ZWQgPSBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCh6aXBwZXIpO1xuICBsZXQgKHRlcm0sIF8pID0gTWFrZVRlcm0uZ28odW5zZWxlY3RlZCk7XG4gIGxldCBpbmZvX21hcCA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncy5jb3JlLCB0ZXJtKTtcbiAgc3dpdGNoIChxdWVyeSkge1xuICB8IEN1cnNvclBvcyA9PlxuICAgIGxldCBpbmRleCA9IEluZGljYXRlZC5pbmRleCh6aXBwZXIpO1xuICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICB8IFNvbWUoaWQpID0+IGdldF9wb3NpdGlvbihpZCwgZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQpXG4gICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgfCBTb21lKHtyb3csIGNvbH0pID0+XG4gICAgICBcIkl0IGlzIG9uIHJvdyBcIlxuICAgICAgKysgc3RyaW5nX29mX2ludChyb3cpXG4gICAgICArKyBcIiBjb2x1bW4gXCJcbiAgICAgICsrIHN0cmluZ19vZl9pbnQoY29sKVxuICAgICAgKysgXCIuXCJcbiAgICB8IE5vbmUgPT4gXCJFcnJvciBvY2N1cnMgd2hlbiBxdWVyeWluZyBjdXJzb3IgcG9zaXRpb24uXCJcbiAgICB9O1xuICB8IEN1cnNvckluZm8gPT5cbiAgICBzd2l0Y2ggKHppcHBlci5iYWNrcGFjaywgSW5kaWNhdGVkLmluZGV4KHppcHBlcikpIHtcbiAgICB8IChbXywgLi4uX10sIF8pID0+IFwiTm8gaW5mb3JtYXRpb24gd2hpbGUgYmFja3BhY2sgaW4gdXNlXCJcbiAgICB8IChfLCBOb25lKSA9PiBcIk5vIGN1cnNvciBpbiBwcm9ncmFtXCJcbiAgICB8IChfLCBTb21lKGlkKSkgPT5cbiAgICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBpbmZvX21hcCkpIHtcbiAgICAgIHwgTm9uZSA9PiBcIldoaXRlc3BhY2Ugb3IgQ29tbWVudFwiXG4gICAgICB8IFNvbWUoY2kpID0+IGluZm9fc3RyKGNpKVxuICAgICAgfVxuICAgIH1cbiAgfCBDdXJzb3JNb3ZlID0+XG4gICAgLy8gd2hlbiB0aGUgbGFzdCBhY3Rpb24gaXMgbW92aW5nIHVwIG9yIGRvd24sIHdlIHdpbGwgcmVhZCB0aGUgZnVsbCBsaW5lLCBvdGhlcndpc2UgdGhlIGNoYXJhY3RlciB0aGUgY3Vyc29yIGF0XG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBzd2l0Y2ggKGVkaXRvci5oaXN0b3J5KSB7XG4gICAgICB8IChfLCBbXSkgPT4gTm9uZVxuICAgICAgfCAoXywgWyhhY3Rpb24sIF8pLCAuLi5fXSkgPT4gU29tZShhY3Rpb24pXG4gICAgICB9O1xuXG4gICAgbGV0IGlzX2xpbmVfbmVlZGVkID1cbiAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICB8IFNvbWUoTW92ZShFeHRyZW1lKFVwKSkpXG4gICAgICB8IFNvbWUoTW92ZShFeHRyZW1lKERvd24pKSlcbiAgICAgIHwgU29tZShNb3ZlKExvY2FsKFVwKSkpXG4gICAgICB8IFNvbWUoTW92ZShMb2NhbChEb3duKSkpID0+IHRydWVcbiAgICAgIHwgXyA9PiBmYWxzZVxuICAgICAgfTtcblxuICAgIGxldCBwcm9ncmFtID0gUHJpbnRlci50b19zdHJpbmdfZWRpdG9yKGVkaXRvcik7XG4gICAgbGV0IHJvd3MgPSBTdHJpbmcuc3BsaXRfb25fY2hhcignXFxuJywgcHJvZ3JhbSk7XG4gICAgc3dpdGNoIChFZGl0b3IuY2FyZXRfcG9pbnQoZWRpdG9yKSkge1xuICAgIHwge3JvdywgY29sfSA9PlxuICAgICAgc3dpdGNoIChMaXN0Lm50aF9vcHQocm93cywgcm93KSkge1xuICAgICAgfCBTb21lKHN0cikgPT5cbiAgICAgICAgaXNfbGluZV9uZWVkZWRcbiAgICAgICAgICA/IHN0clxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgc3dpdGNoIChTdHJpbmcuc3ViKHN0ciwgbWluKGNvbCwgU3RyaW5nLmxlbmd0aChzdHIpIC0gMSksIDEpKSB7XG4gICAgICAgICAgICB8IHMgPT4gc1xuICAgICAgICAgICAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICB8IE5vbmUgPT4gXCJcIlxuICAgICAgfVxuICAgIH07XG4gIHwgQ29udGV4dEluZm8gPT5cbiAgICBsZXQgY29udGV4dF9lbnRyeSA9IChlbnRyeTogSGF6M2xjb3JlLkN0eC5lbnRyeSkgPT5cbiAgICAgIHN3aXRjaCAoZW50cnkpIHtcbiAgICAgIHwgVmFyRW50cnkoe25hbWUsIHR5cCwgX30pXG4gICAgICB8IENvbnN0cnVjdG9yRW50cnkoe25hbWUsIHR5cCwgX30pID0+XG4gICAgICAgIG5hbWUgKysgXCIgb2YgdHlwZSBcIiArKyAodHlwIHw+IFR5cC5zaG93KVxuICAgICAgfCBUVmFyRW50cnkoe25hbWUsIGtpbmQsIF99KSA9PlxuICAgICAgICBuYW1lICsrIFwiIG9mIGtpbmQgXCIgKysgKGtpbmQgfD4gS2luZC5zaG93KVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKHppcHBlci5iYWNrcGFjaywgSW5kaWNhdGVkLmluZGV4KHppcHBlcikpIHtcbiAgICB8IChbXywgLi4uX10sIF8pID0+IFwiXCJcbiAgICB8IChfLCBOb25lKSA9PiBcIlwiXG4gICAgfCAoXywgU29tZShpZCkpID0+XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgaW5mb19tYXApKSB7XG4gICAgICB8IE5vbmUgPT4gXCJcIlxuICAgICAgfCBTb21lKGNpKSA9PlxuICAgICAgICBIYXozbGNvcmUuSW5mby5jdHhfb2YoY2kpXG4gICAgICAgIHw+IEhhejNsY29yZS5DdHguZmlsdGVyX2R1cGxpY2F0ZXNcbiAgICAgICAgfD4gTGlzdC5yZXZcbiAgICAgICAgfD4gTGlzdC5tYXAoY29udGV4dF9lbnRyeSlcbiAgICAgICAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKVxuICAgICAgfVxuICAgIH07XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV2YWx1YXRpb25fc2V0dGluZ3NfYWN0aW9uID1cbiAgfCBTaG93UmVjb3JkXG4gIHwgU2hvd0Nhc2VDbGF1c2VzXG4gIHwgU2hvd0ZuQm9kaWVzXG4gIHwgU2hvd0Nhc3RzXG4gIHwgU2hvd0ZpeHBvaW50c1xuICB8IFNob3dMb29rdXBzXG4gIHwgU2hvd0ZpbHRlcnNcbiAgfCBTaG93U2V0dGluZ3M7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2V0dGluZ3NfYWN0aW9uID1cbiAgfCBDYXB0aW9uc1xuICB8IFNlY29uZGFyeUljb25zXG4gIHwgU3RhdGljc1xuICB8IER5bmFtaWNzXG4gIHwgQXNzaXN0XG4gIHwgRWxhYm9yYXRlXG4gIHwgQmVuY2htYXJrXG4gIHwgQ29udGV4dEluc3BlY3RvclxuICB8IEluc3RydWN0b3JNb2RlXG4gIHwgRXZhbHVhdGlvbihldmFsdWF0aW9uX3NldHRpbmdzX2FjdGlvbilcbiAgfCBFeHBsYWluVGhpcyhFeHBsYWluVGhpc01vZGVsLlNldHRpbmdzLmFjdGlvbilcbiAgfCBBY2Nlc3NpYmlsaXR5KEFjY2Vzc2liaWxpdHlNb2RlbC5TZXR0aW5ncy5hY3Rpb24pXG4gIHwgTW9kZShTZXR0aW5ncy5tb2RlKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwcGVyX2FjdGlvbiA9XG4gIHwgU3RlcEZvcndhcmQoaW50KVxuICB8IFN0ZXBCYWNrd2FyZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhZ2VudCA9XG4gIHwgVHlEaTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhZ2VudF9hY3Rpb24gPVxuICB8IFByb21wdChhZ2VudClcbiAgfCBBY2NlcHRTdWdnZXN0aW9uO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNldF9tZXRhID1cbiAgfCBNb3VzZWRvd25cbiAgfCBNb3VzZXVwXG4gIHwgU2hvd0JhY2twYWNrVGFyZ2V0cyhib29sKVxuICB8IEZvbnRNZXRyaWNzKEZvbnRNZXRyaWNzLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJlbmNobWFya19hY3Rpb24gPVxuICB8IFN0YXJ0XG4gIHwgRmluaXNoO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICAvKiBtZXRhICovXG4gIHwgUmVzZXRcbiAgfCBTZXQoc2V0dGluZ3NfYWN0aW9uKVxuICB8IFNldE1ldGEoc2V0X21ldGEpXG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChFeHBsYWluVGhpc1VwZGF0ZS51cGRhdGUpXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBEZWJ1Z0NvbnNvbGUoc3RyaW5nKVxuICAvKiBlZGl0b3JzICovXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgSW5pdEltcG9ydEFsbChbQG9wYXF1ZV0gSnNfb2Zfb2NhbWwuSnMudChKc19vZl9vY2FtbC5GaWxlLmZpbGUpKVxuICB8IEZpbmlzaEltcG9ydEFsbChvcHRpb24oc3RyaW5nKSlcbiAgfCBTd2l0Y2hFZGl0b3IoRXhlcmNpc2UucG9zKSAvL2V4ZXJjaXNlbW9kZSBvbmx5XG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKHN0cmluZykgLy9leGFtcGxlbW9kZSBvbmx5XG4gIC8vIGVkaXRvcnM6IHNjcmF0Y2htb2RlIG9ubHlcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChbQG9wYXF1ZV0gSnNfb2Zfb2NhbWwuSnMudChKc19vZl9vY2FtbC5GaWxlLmZpbGUpKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQob3B0aW9uKHN0cmluZykpXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKGludClcbiAgLyogZWRpdG9yICovXG4gIHwgVEFCXG4gIHwgU2F2ZVxuICB8IFBlcmZvcm1BY3Rpb24oQWN0aW9uLnQpXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBDdXRcbiAgfCBDb3B5XG4gIHwgUGFzdGUoc3RyaW5nKVxuICB8IFVuZG9cbiAgfCBSZWRvXG4gIHwgTW92ZVRvTmV4dEhvbGUoRGlyZWN0aW9uLnQpXG4gIHwgQmVuY2htYXJrKGJlbmNobWFya19hY3Rpb24pXG4gIHwgQXNzaXN0YW50KGFnZW50X2FjdGlvbilcbiAgfCBRdWVyeUlucHV0XG4gIHwgUGVyZm9ybVF1ZXJ5KFF1ZXJ5LnQpXG4gIHwgVG9nZ2xlU3RlcHBlcihNb2RlbFJlc3VsdHMuS2V5LnQpXG4gIHwgU3RlcHBlckFjdGlvbihNb2RlbFJlc3VsdHMuS2V5LnQsIHN0ZXBwZXJfYWN0aW9uKVxuICB8IFVwZGF0ZVJlc3VsdChNb2RlbFJlc3VsdHMudCk7XG5cbm1vZHVsZSBGYWlsdXJlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBDYW50VW5kb1xuICAgIHwgQ2FudFJlZG9cbiAgICB8IENhbnRQYXN0ZVxuICAgIHwgQ2FudFJlc2V0XG4gICAgfCBDYW50U3VnZ2VzdFxuICAgIHwgRmFpbGVkVG9Mb2FkXG4gICAgfCBGYWlsZWRUb1N3aXRjaFxuICAgIHwgRmFpbGVkVG9QZXJmb3JtKEFjdGlvbi5GYWlsdXJlLnQpXG4gICAgfCBFeGNlcHRpb24oc3RyaW5nKTtcbn07XG5cbm1vZHVsZSBSZXN1bHQgPSB7XG4gIGluY2x1ZGUgUmVzdWx0O1xuICB0eXBlIHQoJ3N1Y2Nlc3MpID0gUmVzdWx0LnQoJ3N1Y2Nlc3MsIEZhaWx1cmUudCk7XG59O1xuXG5sZXQgaXNfZWRpdDogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgUGVyZm9ybUFjdGlvbihhKSA9PiBBY3Rpb24uaXNfZWRpdChhKVxuICB8IFNldChzX2FjdGlvbikgPT5cbiAgICBzd2l0Y2ggKHNfYWN0aW9uKSB7XG4gICAgfCBNb2RlKF8pID0+IHRydWVcbiAgICB8IENhcHRpb25zXG4gICAgfCBTZWNvbmRhcnlJY29uc1xuICAgIHwgU3RhdGljc1xuICAgIHwgQXNzaXN0XG4gICAgfCBFbGFib3JhdGVcbiAgICB8IEV4cGxhaW5UaGlzKF8pXG4gICAgfCBEeW5hbWljc1xuICAgIHwgQmVuY2htYXJrXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgRXZhbHVhdGlvbihfKVxuICAgIHwgQWNjZXNzaWJpbGl0eShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBTZXRNZXRhKG1ldGFfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAobWV0YV9hY3Rpb24pIHtcbiAgICB8IE1vdXNlZG93blxuICAgIHwgTW91c2V1cFxuICAgIHwgU2hvd0JhY2twYWNrVGFyZ2V0cyhfKVxuICAgIHwgRm9udE1ldHJpY3MoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgQ3V0XG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBQYXN0ZShfKVxuICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShfKVxuICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShfKVxuICB8IFRvZ2dsZVN0ZXBwZXIoXylcbiAgfCBTdGVwcGVyQWN0aW9uKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgQXNzaXN0YW50KEFjY2VwdFN1Z2dlc3Rpb24pXG4gIHwgUmVzZXQgPT4gdHJ1ZVxuICB8IFVwZGF0ZVJlc3VsdChfKVxuICB8IFN3aXRjaEVkaXRvcihfKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgU2F2ZVxuICB8IENvcHlcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pXG4gIHwgRGVidWdDb25zb2xlKF8pXG4gIHwgSW5pdEltcG9ydEFsbChfKVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBUQUJcbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKVxuICB8IFF1ZXJ5SW5wdXRcbiAgfCBQZXJmb3JtUXVlcnkoXykgPT4gZmFsc2U7XG5cbmxldCByZWV2YWx1YXRlX3Bvc3RfdXBkYXRlOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+IEFjdGlvbi5pc19lZGl0KGEpXG4gIHwgU2V0KHNfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc19hY3Rpb24pIHtcbiAgICB8IEFzc2lzdFxuICAgIHwgQ2FwdGlvbnNcbiAgICB8IFNlY29uZGFyeUljb25zXG4gICAgfCBTdGF0aWNzXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBCZW5jaG1hcmtcbiAgICB8IEV4cGxhaW5UaGlzKF8pXG4gICAgfCBFdmFsdWF0aW9uKFxuICAgICAgICBTaG93Q2FzZUNsYXVzZXMgfCBTaG93Rm5Cb2RpZXMgfCBTaG93Q2FzdHMgfCBTaG93UmVjb3JkIHwgU2hvd0ZpeHBvaW50cyB8XG4gICAgICAgIFNob3dMb29rdXBzIHxcbiAgICAgICAgU2hvd0ZpbHRlcnMgfFxuICAgICAgICBTaG93U2V0dGluZ3MsXG4gICAgICApID0+XG4gICAgICBmYWxzZVxuICAgIHwgRWxhYm9yYXRlXG4gICAgfCBEeW5hbWljc1xuICAgIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgICB8IE1vZGUoXylcbiAgICB8IEFjY2Vzc2liaWxpdHkoXykgPT4gdHJ1ZVxuICAgIH1cbiAgfCBTZXRNZXRhKG1ldGFfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAobWV0YV9hY3Rpb24pIHtcbiAgICB8IE1vdXNlZG93blxuICAgIHwgTW91c2V1cFxuICAgIHwgU2hvd0JhY2twYWNrVGFyZ2V0cyhfKVxuICAgIHwgRm9udE1ldHJpY3MoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgQXNzaXN0YW50KEFjY2VwdFN1Z2dlc3Rpb24pID0+IHRydWVcbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKSA9PiBmYWxzZVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgU2F2ZVxuICB8IENvcHlcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBTd2l0Y2hFZGl0b3IoXylcbiAgfCBEZWJ1Z0NvbnNvbGUoXylcbiAgfCBUQUJcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBRdWVyeUlucHV0XG4gIHwgUGVyZm9ybVF1ZXJ5KF8pID0+IGZhbHNlXG4gIHwgU3RlcHBlckFjdGlvbihfLCBTdGVwRm9yd2FyZChfKSB8IFN0ZXBCYWNrd2FyZClcbiAgfCBUb2dnbGVTdGVwcGVyKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgUmVzZXRcbiAgfCBDdXRcbiAgfCBQYXN0ZShfKVxuICB8IFVuZG9cbiAgfCBSZWRvID0+IHRydWU7XG5cbmxldCBzaG91bGRfc2Nyb2xsX3RvX2NhcmV0ID1cbiAgZnVuXG4gIHwgU2V0KHNfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc19hY3Rpb24pIHtcbiAgICB8IE1vZGUoXykgPT4gdHJ1ZVxuICAgIHwgQ2FwdGlvbnNcbiAgICB8IFNlY29uZGFyeUljb25zXG4gICAgfCBTdGF0aWNzXG4gICAgfCBBc3Npc3RcbiAgICB8IEVsYWJvcmF0ZVxuICAgIHwgRXhwbGFpblRoaXMoXylcbiAgICB8IER5bmFtaWNzXG4gICAgfCBCZW5jaG1hcmtcbiAgICB8IENvbnRleHRJbnNwZWN0b3JcbiAgICB8IEluc3RydWN0b3JNb2RlXG4gICAgfCBFdmFsdWF0aW9uKF8pXG4gICAgfCBBY2Nlc3NpYmlsaXR5KF8pID0+IGZhbHNlXG4gICAgfVxuICB8IFNldE1ldGEobWV0YV9hY3Rpb24pID0+XG4gICAgc3dpdGNoIChtZXRhX2FjdGlvbikge1xuICAgIHwgRm9udE1ldHJpY3MoXykgPT4gdHJ1ZVxuICAgIHwgTW91c2Vkb3duXG4gICAgfCBNb3VzZXVwXG4gICAgfCBTaG93QmFja3BhY2tUYXJnZXRzKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEFzc2lzdGFudChQcm9tcHQoXykpXG4gIHwgVXBkYXRlUmVzdWx0KF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEJhY2t3YXJkIHwgU3RlcEZvcndhcmQoXykpID0+IGZhbHNlXG4gIHwgQXNzaXN0YW50KEFjY2VwdFN1Z2dlc3Rpb24pID0+IHRydWVcbiAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgRmluaXNoSW1wb3J0QWxsKF8pXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgU3dpdGNoRWRpdG9yKF8pXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBSZXNldFxuICB8IENvcHlcbiAgfCBQYXN0ZShfKVxuICB8IEN1dFxuICB8IFVuZG9cbiAgfCBSZWRvXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBUQUIgPT4gdHJ1ZVxuICB8IFBlcmZvcm1BY3Rpb24oYSkgPT5cbiAgICBzd2l0Y2ggKGEpIHtcbiAgICB8IE1vdmUoXylcbiAgICB8IE1vdmVUb05leHRIb2xlKF8pXG4gICAgfCBKdW1wKF8pXG4gICAgfCBTZWxlY3QoUmVzaXplKF8pIHwgVGVybShfKSB8IFNtYXJ0IHwgVGlsZShfKSlcbiAgICB8IERlc3RydWN0KF8pXG4gICAgfCBJbnNlcnQoXylcbiAgICB8IFBpY2tfdXBcbiAgICB8IFB1dF9kb3duXG4gICAgfCBSb3RhdGVCYWNrcGFja1xuICAgIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoXykgPT4gdHJ1ZVxuICAgIHwgVW5zZWxlY3QoXylcbiAgICB8IFNlbGVjdChBbGwpID0+IGZhbHNlXG4gICAgfVxuICB8IFNhdmVcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBEZWJ1Z0NvbnNvbGUoXylcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBRdWVyeUlucHV0XG4gIHwgUGVyZm9ybVF1ZXJ5KF8pID0+IGZhbHNlO1xuIiwib3BlbiBIYXozbGNvcmU7XG5pbmNsdWRlIFVwZGF0ZUFjdGlvbjtcblxuLyogTk9URTogdGhpcyBpcyBkdXBsaWNhdGVkIGZyb20gVXBkYXRlICovXG5sZXQgcGVyZm9ybV9hY3Rpb24gPSAobW9kZWw6IE1vZGVsLnQsIGE6IEFjdGlvbi50KTogUmVzdWx0LnQoTW9kZWwudCkgPT4ge1xuICBsZXQgZWRfaW5pdCA9IEVkaXRvcnMuZ2V0X2VkaXRvcihtb2RlbC5lZGl0b3JzKTtcbiAgc3dpdGNoIChIYXozbGNvcmUuUGVyZm9ybS5nbyh+c2V0dGluZ3M9bW9kZWwuc2V0dGluZ3MuY29yZSwgYSwgZWRfaW5pdCkpIHtcbiAgfCBFcnJvcihlcnIpID0+IEVycm9yKEZhaWxlZFRvUGVyZm9ybShlcnIpKVxuICB8IE9rKGVkKSA9PiBPayh7Li4ubW9kZWwsIGVkaXRvcnM6IEVkaXRvcnMucHV0X2VkaXRvcihlZCwgbW9kZWwuZWRpdG9ycyl9KVxuICB9O1xufTtcblxubGV0IHJlc2V0X2J1ZmZlciA9IChtb2RlbDogTW9kZWwudCkgPT4ge1xuICBsZXQgZWQgPSBtb2RlbC5lZGl0b3JzIHw+IEVkaXRvcnMuZ2V0X2VkaXRvcjtcbiAgbGV0IHogPSBlZC5zdGF0ZS56aXBwZXI7XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSkge1xuICB8IEJ1ZmZlcihfKSA9PlxuICAgIHN3aXRjaCAoUGVyZm9ybS5nb196KH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlLCBEZXN0cnVjdChMZWZ0KSwgeikpIHtcbiAgICB8IEVycm9yKF8pID0+IG1vZGVsXG4gICAgfCBPayh6KSA9PlxuICAgICAgbGV0IGVkID0gRWRpdG9yLm5ld19zdGF0ZShEZXN0cnVjdChMZWZ0KSwgeiwgZWQpO1xuICAgICAgLy9UT0RPKGFuZHJldyk6IGZpeCBkb3VibGUgYWN0aW9uXG4gICAgICB7Li4ubW9kZWwsIGVkaXRvcnM6IEVkaXRvcnMucHV0X2VkaXRvcihlZCwgbW9kZWwuZWRpdG9ycyl9O1xuICAgIH1cbiAgfCBfID0+IG1vZGVsXG4gIH07XG59O1xuXG5sZXQgYXBwbHkgPVxuICAgIChcbiAgICAgIHtzZXR0aW5ncywgX30gYXMgbW9kZWw6IE1vZGVsLnQsXG4gICAgICB1cGRhdGU6IGFnZW50X2FjdGlvbixcbiAgICAgIH5zY2hlZHVsZV9hY3Rpb24sXG4gICAgICB+c3RhdGUsXG4gICAgICB+bWFpbixcbiAgICApXG4gICAgOiBSZXN1bHQudChNb2RlbC50KSA9PiB7XG4gIGxldCBlZGl0b3IgPSBtb2RlbC5lZGl0b3JzIHw+IEVkaXRvcnMuZ2V0X2VkaXRvcjtcbiAgbGV0IHogPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICBzd2l0Y2ggKHVwZGF0ZSkge1xuICB8IFByb21wdChUeURpKSA9PlxuICAgIGxldCBjdHhfaW5pdCA9IEVkaXRvcnMuZ2V0X2N0eF9pbml0KH5zZXR0aW5ncywgbW9kZWwuZWRpdG9ycyk7XG4gICAgc3dpdGNoIChUeURpLnNldF9idWZmZXIofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIH5jdHg9Y3R4X2luaXQsIHopKSB7XG4gICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgIHwgU29tZSh6KSA9PlxuICAgICAgbGV0IGVkID0gRWRpdG9yLm5ld19zdGF0ZShQaWNrX3VwLCB6LCBlZGl0b3IpO1xuICAgICAgLy9UT0RPOiBhZGQgY29ycmVjdCBhY3Rpb24gdG8gaGlzdG9yeSAoUGlja191cCBpcyB3cm9uZylcbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5wdXRfZWRpdG9yKGVkLCBtb2RlbC5lZGl0b3JzKTtcbiAgICAgIE9rKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgIH07XG4gIHwgQWNjZXB0U3VnZ2VzdGlvbiA9PlxuICAgIHByaW50X2VuZGxpbmUoXCJhY2NlcHRpbmcgc3VnZ2VzdGlvblwiKTtcbiAgICBsZXQgdHJpbSA9IEFzc2lzdGFudEV4cGFuZGVyLnRyaW07XG4gICAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgfCBOb3JtYWwgPT4gT2sobW9kZWwpXG4gICAgfCBCdWZmZXIoUGFyc2VkKSA9PiBwZXJmb3JtX2FjdGlvbihtb2RlbCwgVW5zZWxlY3QoU29tZShSaWdodCkpKVxuICAgIHwgQnVmZmVyKFVucGFyc2VkKSA9PlxuICAgICAgc3dpdGNoIChUeURpLmdldF9idWZmZXIoeikpIHtcbiAgICAgIHwgTm9uZSA9PiBPayhtb2RlbClcbiAgICAgIC8qIFRoaXMgY2FzZSBzaG91bGRuJ3QgaGFwcGVuIGlmIHdlIGFzc3VtZSB0aGF0IHdlIHByZXZhbGlkYXRlXG4gICAgICAgKiBldmVyeXRoaW5nIHdlIHB1dCBpbiB0aGUgdW5wYXJzZWQgYnVmZmVyKi9cbiAgICAgIHwgU29tZShjb21wbGV0aW9uKSB3aGVuIFN0cmluZy5jb250YWlucyhjb21wbGV0aW9uLCAnICcpID0+XG4gICAgICAgIC8qIFNsaWdodGx5IGhhY2t5LiBXZSBhc3N1bWUgdGhhdCBpZiBhIGNvbXBsZXRpb24gc3RyaW5nIGhhc1xuICAgICAgICAgKiBzcGFjZXMgaW4gaXQsIHRoYXQgbWVhbnMgaXQgd2lsbCBoYXZlIGEgaG9sZSBpbiBpdC4gVGhpc1xuICAgICAgICAgKiBpcyBhIG5vbi1lc3NlbnRpYWwgaW52YXJpYW50IGN1cnJlbnRseSBtYWludGFpbmVkIGluIFR5RGkuXG4gICAgICAgICAqIEluIHN1Y2ggYSBjYXNlLCB3ZSBpbnNlcnQgdGhlIGNvbXBsZXRpb24gYXMgbm9ybWFsIGJ5XG4gICAgICAgICAqIHBhc3RpbmcsIHRoZW4gcmV0dXJuIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGFkdmFuY2UgdG8gdGhlXG4gICAgICAgICAqIGZpcnN0IGhvbGUuIFRoaXMgc2hvdWxkIGJlIHJldmlzaXRlZCBpZiBjb21wbGV0aW9ucyBhcmVcbiAgICAgICAgICogcmVmYWN0b3JlZCB0byB1c2UgYSBtb3JlIHN0cnVjdHVyZWQgYnVmZmVyIGZvcm1hdCAqL1xuICAgICAgICBtb2R1bGUgTSA9ICh2YWwgRWRpdG9yLk1ldGEubW9kdWxlX29mX3QoZWRpdG9yLnN0YXRlLm1ldGEpKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQsIHopO1xuICAgICAgICBsZXQgcmVjIGRvX2FjdGlvbnMgPSAobW9kZWwsIGFjdGlvbnM6IGxpc3QoVXBkYXRlQWN0aW9uLnQpKSA9PlxuICAgICAgICAgIHN3aXRjaCAoYWN0aW9ucykge1xuICAgICAgICAgIHwgW10gPT4gT2sobW9kZWwpXG4gICAgICAgICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgICAgICAgc3dpdGNoIChtYWluKG1vZGVsLCBoZCwgc3RhdGUsIH5zY2hlZHVsZV9hY3Rpb24pKSB7XG4gICAgICAgICAgICB8IEVycm9yKGVycikgPT4gRXJyb3IoZXJyKVxuICAgICAgICAgICAgfCBPayhtb2RlbCkgPT4gZG9fYWN0aW9ucyhtb2RlbCwgdGwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgLyogVE9ETyhhbmRyZXcpOiB1c2UgemlwcGVyLWxldmVsIGFjdGlvbnMgaGVyZSB0byBhdm9pZFxuICAgICAgICAgKiBtZWFzdXJlZCByZWNvbXB1dGF0aW9uIGF0IGVkaXRvci1sZXZlbCAqL1xuICAgICAgICBkb19hY3Rpb25zKFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFBhc3RlKHRyaW0oY29tcGxldGlvbikpLFxuICAgICAgICAgICAgUGVyZm9ybUFjdGlvbihNb3ZlKEdvYWwoUG9pbnQoc3RhcnQpKSkpLFxuICAgICAgICAgICAgUGVyZm9ybUFjdGlvbihNb3ZlVG9OZXh0SG9sZShSaWdodCkpLFxuICAgICAgICAgICAgUGVyZm9ybUFjdGlvbihNb3ZlKExvY2FsKExlZnQoQnlUb2tlbikpKSksXG4gICAgICAgICAgXSxcbiAgICAgICAgKTtcbiAgICAgIHwgU29tZShjb21wbGV0aW9uKSA9PlxuICAgICAgICBtYWluKG1vZGVsLCBQYXN0ZSh0cmltKGNvbXBsZXRpb24pKSwgc3RhdGUsIH5zY2hlZHVsZV9hY3Rpb24pXG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn07XG4iLCJsZXQgc2FtcGxlXzEgPSB7fCMgSGF6ZWwgTGFuZ3VhZ2UgUXVpY2sgUmVmZXJlbmNlICNcblxuIyBSZWN1cnNpdmUgRnVuY3Rpb25zIChhcnJvdyB0eXBlIGFubm90YXRpb24gcmVxdWlyZWQpICNcbmxldCBkb3VibGVfcmVjdXJzaXZlbHkgOiBJbnQgLT4gSW50ID1cbiAgZnVuIG4gLT5cbiAgICBpZiBuID09IDAgdGhlbiAwXG4gICAgZWxzZSBkb3VibGVfcmVjdXJzaXZlbHkobiAtIDEpICsgMlxuaW5cblxuIyBMaXN0cyAjXG5sZXQgZW1wdHlfbGlzdCA6IFtJbnRdID0gW10gaW5cbmxldCBub25fZW1wdHlfbGlzdCA6IFtJbnRdID0gMTo6Mjo6Mzo6W10gaW5cbmxldCBsaXN0X2xpdGVyYWxzIDogW0ludF0gPSBbMSwgMiwgM10gaW5cbmxldCBsZW5ndGggOiBbSW50XSAtPiBJbnQgPVxuICBmdW4geHMgLT5cbiAgICBjYXNlIHhzXG4gICAgICB8IFtdID0+IDBcbiAgICAgIHwgaGQ6OnRsID0+IDEgKyBsZW5ndGgodGwpXG4gICAgZW5kXG5pblxubGV0IGhhc19hdF9sZWFzdF90d29fZWxlbWVudHMgOiBbSW50XSAtPiBCb29sID1cbiAgZnVuIHhzIC0+XG4gICAgY2FzZSB4c1xuICAgICAgfCBbXSA9PiBmYWxzZVxuICAgICAgfCBoZDo6W10gPT4gZmFsc2VcbiAgICAgIHwgYTo6Yjo6W10gPT4gdHJ1ZVxuICAgIGVuZFxuaW5cblxuIyBTdHJpbmdzICNcbmxldCBzdHJpbmdfbGl0cyA9IFwiSGVsbG8sIHdvcmxkIVwiIGluXG5sZXQgc3RyaW5nX2VxdWFsaXR5ID0gc3RyaW5nX2xpdHMgJD09IFwiSGVsbG8sIHdvcmxkIVwiIGluXG5cbiMgTm9uLWVtcHR5IGhvbGVzIGFyZSB0aGUgcmVkIGRvdHRlZCBib3hlcyBhcm91bmQgZXJyb3JzICNcbiMgKHlvdSBjYW4gc3RpbGwgcnVuIHByb2dyYW1zIHdpdGggbm9uLWVtcHR5IGhvbGVzKSAjXG5sZXQgbm9uX2VtcHR5X2hvbGUgOiBJbnQgPSB0cnVlIGluXG5cbjIgKyAyXG58fTtcblxubGV0IHN0cl90b19pbnNlcnRzID0gKHN0cjogc3RyaW5nKTogbGlzdChVcGRhdGVBY3Rpb24udCkgPT5cbiAgTGlzdC5pbml0KFxuICAgIFN0cmluZy5sZW5ndGgoc3RyKSxcbiAgICBpID0+IHtcbiAgICAgIGxldCBjID0gU3RyaW5nLnN1YihzdHIsIGksIDEpO1xuICAgICAgbGV0IGMgPSBjID09IFwiXFxuXCIgPyBIYXozbGNvcmUuRm9ybS5saW5lYnJlYWsgOiBjO1xuICAgICAgVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oSW5zZXJ0KGMpKTtcbiAgICB9LFxuICApO1xuXG5sZXQgYWN0aW9uc18xID0gc3RyX3RvX2luc2VydHMoc2FtcGxlXzEpIEAgW0JlbmNobWFyayhGaW5pc2gpXTtcblxubGV0IHRpbWUgPSByZWYoLTEuMCk7XG5cbmxldCBzdGFydCA9ICgpOiB1bml0ID0+IHtcbiAgdGltZSA6PSBKc1V0aWwudGltZXN0YW1wKCk7XG4gIHByaW50X2VuZGxpbmUoXCJCZW5jaG1hcms6IFN0YXJ0aW5nXCIpO1xufTtcblxubGV0IGZpbmlzaCA9ICgpOiB1bml0ID0+IHtcbiAgc3dpdGNoICh0aW1lXikge1xuICB8ICgtMS4wKSA9PlxuICAgIFByaW50Zi5zcHJpbnRmKFwiQmVuY2htYXJrOiBFcnJvcjogTm8gYmVuY2htYXJrIHJ1bm5pbmdcIikgfD4gcHJpbnRfZW5kbGluZVxuXG4gIHwgXyA9PlxuICAgIGxldCBlbGFwc2VkID0gKEpzVXRpbC50aW1lc3RhbXAoKSAtLiB0aW1lXikgLy4gMTAwMC47XG4gICAgdGltZSA6PSAoLTEuMCk7XG4gICAgUHJpbnRmLnNwcmludGYoXCJCZW5jaG1hcms6IEZpbmlzaGVkOiB0aW1lOiAlZiBzZWNvbmRzXCIsIGVsYXBzZWQpXG4gICAgfD4gcHJpbnRfZW5kbGluZTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcblxuLyogVGhpcyBpcyBhIHBsYWNlIHRvIGFkZCBhZC1ob2MgZGVidWdnaW5nIHByaW50IGFjdGlvbnMuXG4gICBJdCB3YXMgb3JpZ2luYWxseSBkaXJlY3RseSBpbiBLZXlib2FyZCwgYnV0IHRoYXQgYWRkZWQgYSBoYW5kbGVyXG4gICBkZXBlbmRlbmN5IG9uIHRoZSBtb2RlbCwgd2hpY2ggaXMgdGVjaG5pY2FsbHkgYWdhaW5zdCBhcmNoaXRlY3R1cmUgKi9cblxubGV0IHByaW50ID0gKHtzZXR0aW5ncywgZWRpdG9ycywgX306IE1vZGVsLnQsIGtleTogc3RyaW5nKTogdW5pdCA9PiB7XG4gIGxldCB6ID0gRWRpdG9ycy5nZXRfemlwcGVyKGVkaXRvcnMpO1xuICBsZXQgcHJpbnQgPSBzdHIgPT4gc3RyIHw+IHByaW50X2VuZGxpbmU7XG4gIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzO1xuICBsZXQgdGVybSA9IHogPT4geiB8PiBNYWtlVGVybS5mcm9tX3ppcF9mb3JfdmlldyB8PiBmc3Q7XG4gIGxldCBjdHhfaW5pdCA9IEVkaXRvcnMuZ2V0X2N0eF9pbml0KH5zZXR0aW5ncywgZWRpdG9ycyk7XG4gIHN3aXRjaCAoa2V5KSB7XG4gIHwgXCJGMVwiID0+IHogfD4gWmlwcGVyLnNob3cgfD4gcHJpbnRcbiAgfCBcIkYyXCIgPT4geiB8PiBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCB8PiBTZWdtZW50LnNob3cgfD4gcHJpbnRcbiAgfCBcIkYzXCIgPT4geiB8PiB0ZXJtIHw+IFRlcm1CYXNlLlVFeHAuc2hvdyB8PiBwcmludFxuICB8IFwiRjRcIiA9PlxuICAgIHpcbiAgICB8PiB0ZXJtXG4gICAgfD4gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncy5jb3JlLCBjdHhfaW5pdClcbiAgICB8PiBTdGF0aWNzLk1hcC5zaG93XG4gICAgfD4gcHJpbnRcbiAgfCBcIkY1XCIgPT5cbiAgICBsZXQgZW52X2luaXQgPSBFZGl0b3JzLmdldF9lbnZfaW5pdCh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICAgIEludGVyZmFjZS5ldmFsX3oofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIH5lbnZfaW5pdCwgfmN0eF9pbml0LCB6KVxuICAgIHw+IFByb2dyYW1SZXN1bHQuc2hvd1xuICAgIHw+IHByaW50O1xuICB8IFwiRjZcIiA9PlxuICAgIGxldCBpbmRleCA9IEluZGljYXRlZC5pbmRleCh6KTtcbiAgICBsZXQgbWFwID1cbiAgICAgIHogfD4gdGVybSB8PiBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0KTtcbiAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgfCBTb21lKGluZGV4KSA9PlxuICAgICAgc3dpdGNoIChIYXozbGNvcmUuSWQuTWFwLmZpbmRfb3B0KGluZGV4LCBtYXApKSB7XG4gICAgICB8IFNvbWUoY2kpID0+IHByaW50KEluZm8uc2hvdyhjaSkpXG4gICAgICB8IE5vbmUgPT4gcHJpbnQoXCJERUJVRzogTm8gQ0kgZm91bmQgZm9yIGluZGV4XCIpXG4gICAgICB9XG4gICAgfCBOb25lID0+IHByaW50KFwiREVCVUc6IE5vIGluZGljYXRlZCBpbmRleFwiKVxuICAgIH07XG5cbiAgfCBfID0+IHByaW50KFwiREVCVUc6IE5vIGFjdGlvbiBmb3Iga2V5OiBcIiArKyBrZXkpXG4gIH07XG59O1xuIiwiLyogTG9nZ2luZyBzeXN0ZW0gZm9yIGFjdGlvbnMuIFBlcnNpc3RzIGxvZyB2aWEgSW5kZXhlZERCICovXG5cbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbmxldCBpc19hY3Rpb25fbG9nZ2VkOiBVcGRhdGVBY3Rpb24udCA9PiBib29sID1cbiAgZnVuXG4gIHwgU2V0TWV0YShfKVxuICB8IFNhdmVcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBEZWJ1Z0NvbnNvbGUoXykgPT4gZmFsc2VcbiAgfCBSZXNldFxuICB8IFRBQlxuICB8IEFzc2lzdGFudChfKVxuICB8IFNldChfKVxuICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShfKVxuICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShfKVxuICB8IFN3aXRjaEVkaXRvcihfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgUGVyZm9ybUFjdGlvbihfKVxuICB8IEN1dFxuICB8IENvcHlcbiAgfCBQYXN0ZShfKVxuICB8IFVuZG9cbiAgfCBSZWRvXG4gIHwgUXVlcnlJbnB1dFxuICB8IFBlcmZvcm1RdWVyeShfKVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVXBkYXRlUmVzdWx0KF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEZvcndhcmQoXykgfCBTdGVwQmFja3dhcmQpXG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKSA9PiB0cnVlO1xuXG5tb2R1bGUgREIgPSB7XG4gIG9wZW4gRXpqc19pZGI7XG5cbiAgbW9kdWxlIFN0b3JlID0gRXpqc19pZGIuU3RvcmUoU3RyaW5nVHIsIFN0cmluZ1RyKTtcblxuICB0eXBlIGRiID0gRXpqc19taW4udChUeXBlcy5pREJEYXRhYmFzZSk7XG5cbiAgbGV0IGRiX25hbWUgPSBcImhhemVsX2RiXCI7XG4gIGxldCB0YWJsZV9uYW1lID0gXCJsb2dcIjtcblxuICBsZXQga3Zfc3RvcmUgPSAoZGI6IGRiKTogU3RvcmUuc3RvcmUgPT5cbiAgICBTdG9yZS5zdG9yZSh+bW9kZT1SRUFEV1JJVEUsIGRiLCB0YWJsZV9uYW1lKTtcblxuICBsZXQgd2l0aF9kYiA9IChmKTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXzogdW5pdCA9PiBwcmludF9lbmRsaW5lKFwiRVJST1I6IExvZy5JREJLVi5vcGVuXCIpO1xuICAgIGxldCB1cGdyYWRlID0gKGRiOiBkYiwgZTogZGJfdXBncmFkZSk6IHVuaXQgPT5cbiAgICAgIGUubmV3X3ZlcnNpb24gPj0gMSAmJiBlLm9sZF92ZXJzaW9uID09IDBcbiAgICAgICAgPyBpZ25vcmUoU3RvcmUuY3JlYXRlKGRiLCB0YWJsZV9uYW1lKSkgOiAoKTtcbiAgICBvcGVuREIofnVwZ3JhZGUsIH5lcnJvciwgfnZlcnNpb249MSwgZGJfbmFtZSwgZGIgPT4gZihkYikpO1xuICB9O1xuXG4gIGxldCBhZGQgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB1bml0ID0+XG4gICAgd2l0aF9kYihkYiA9PlxuICAgICAgU3RvcmUuYWRkKH5rZXksIH5jYWxsYmFjaz1fa2V5ID0+ICgpLCBrdl9zdG9yZShkYiksIHZhbHVlKVxuICAgICk7XG5cbiAgbGV0IGdldCA9IChrZXk6IHN0cmluZywgZjogb3B0aW9uKHN0cmluZykgPT4gdW5pdCk6IHVuaXQgPT4ge1xuICAgIGxldCBlcnJvciA9IF8gPT4gUHJpbnRmLnByaW50ZihcIkVSUk9SOiBMb2cuSURCS1YuZ2V0XCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuZ2V0KH5lcnJvciwga3Zfc3RvcmUoZGIpLCBmLCBLKGtleSkpKTtcbiAgfTtcblxuICBsZXQgZ2V0X2FsbCA9IChmOiBsaXN0KHN0cmluZykgPT4gdW5pdCk6IHVuaXQgPT4ge1xuICAgIGxldCBlcnJvciA9IF8gPT4gUHJpbnRmLnByaW50ZihcIkVSUk9SOiBMb2cuSURCS1YuZ2V0X2FsbFwiKTtcbiAgICB3aXRoX2RiKGRiID0+IFN0b3JlLmdldF9hbGwofmVycm9yLCBrdl9zdG9yZShkYiksIGYpKTtcbiAgfTtcblxuICBsZXQgY2xlYXJfYW5kID0gKGNhbGxiYWNrKTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5jbGVhclwiKTtcbiAgICB3aXRoX2RiKGRiID0+IFN0b3JlLmNsZWFyKH5lcnJvciwgfmNhbGxiYWNrLCBrdl9zdG9yZShkYikpKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBFbnRyeSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxuICB0eXBlIHQgPSAoTW9kZWwudGltZXN0YW1wLCBVcGRhdGVBY3Rpb24udCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxuICB0eXBlIHMgPSBsaXN0KHQpO1xuXG4gIGxldCBtayA9ICh1cGRhdGUpOiB0ID0+IHtcbiAgICAoSnNVdGlsLnRpbWVzdGFtcCgpLCB1cGRhdGUpO1xuICB9O1xuXG4gIGxldCBzYXZlID0gKCh0cywgYWN0aW9uKTogdCkgPT5cbiAgICBEQi5hZGQoXG4gICAgICBQcmludGYuc3ByaW50ZihcIiUuMGZcIiwgdHMpLFxuICAgICAgKHRzLCBhY3Rpb24pIHw+IHNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nLFxuICAgICk7XG59O1xuXG5sZXQgaW1wb3J0ID0gKGRhdGE6IHN0cmluZyk6IHVuaXQgPT5cbiAgLyogU2hvdWxkIGJlIGZpbmUgdG8gZmlyZSBzYXZlcyBjb25jdXJyZW50bHk/ICovXG4gIERCLmNsZWFyX2FuZCgoKSA9PlxuICAgIHRyeShcbiAgICAgIGRhdGFcbiAgICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICAgIHw+IEVudHJ5LnNfb2Zfc2V4cFxuICAgICAgfD4gTGlzdC5pdGVyKEVudHJ5LnNhdmUpXG4gICAgKSB7XG4gICAgfCBfID0+IFByaW50Zi5wcmludGYoXCJMb2cuRW50cnkuaW1wb3J0OiBEZXNlcmlhbGl6YXRpb24gZXJyb3JcIilcbiAgICB9XG4gICk7XG5cbmxldCB1cGRhdGUgPSAoYWN0aW9uOiBVcGRhdGVBY3Rpb24udCk6IHVuaXQgPT5cbiAgaWYgKGlzX2FjdGlvbl9sb2dnZWQoYWN0aW9uKSkge1xuICAgIEVudHJ5LnNhdmUoRW50cnkubWsoYWN0aW9uKSk7XG4gIH07XG5cbmxldCBnZXRfYW5kID0gKGY6IHN0cmluZyA9PiB1bml0KTogdW5pdCA9PlxuICBEQi5nZXRfYWxsKGVudHJpZXMgPT4gZihcIihcIiArKyBTdHJpbmcuY29uY2F0KFwiIFwiLCBlbnRyaWVzKSArKyBcIilcIikpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhbGwgPSB7XG4gIHNldHRpbmdzOiBzdHJpbmcsXG4gIGV4cGxhaW5UaGlzTW9kZWw6IHN0cmluZyxcbiAgc2NyYXRjaDogc3RyaW5nLFxuICBleGVyY2lzZTogc3RyaW5nLFxuICBkb2N1bWVudGF0aW9uOiBzdHJpbmcsXG4gIGxvZzogc3RyaW5nLFxufTtcblxuLy8gZmFsbGJhY2sgZm9yIHNhdmVkIHN0YXRlIHByaW9yIHRvIHJlbGVhc2Ugb2YgbGFuZyBkb2MgaW4gNDkwRjIyXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFsbF9mMjIgPSB7XG4gIHNldHRpbmdzOiBzdHJpbmcsXG4gIHNjcmF0Y2g6IHN0cmluZyxcbiAgZXhlcmNpc2U6IHN0cmluZyxcbiAgbG9nOiBzdHJpbmcsXG59O1xuXG5sZXQgbWtfYWxsID0gKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpID0+IHtcbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuZXhwb3J0KCk7XG4gIGxldCBleHBsYWluVGhpc01vZGVsID0gU3RvcmUuRXhwbGFpblRoaXNNb2RlbC5leHBvcnQoKTtcbiAgbGV0IHNjcmF0Y2ggPSBTdG9yZS5TY3JhdGNoLmV4cG9ydCgpO1xuICBsZXQgZG9jdW1lbnRhdGlvbiA9IFN0b3JlLkRvY3VtZW50YXRpb24uZXhwb3J0KCk7XG4gIGxldCBleGVyY2lzZSA9XG4gICAgU3RvcmUuRXhlcmNpc2UuZXhwb3J0KFxuICAgICAgfnNwZWNzPUV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzLFxuICAgICAgfmluc3RydWN0b3JfbW9kZSxcbiAgICApO1xuICB7c2V0dGluZ3MsIGV4cGxhaW5UaGlzTW9kZWwsIHNjcmF0Y2gsIGRvY3VtZW50YXRpb24sIGV4ZXJjaXNlLCBsb2d9O1xufTtcblxubGV0IGV4cG9ydF9hbGwgPSAofmluc3RydWN0b3JfbW9kZSwgfmxvZykgPT4ge1xuICBta19hbGwofmluc3RydWN0b3JfbW9kZSwgfmxvZykgfD4geW9qc29uX29mX2FsbDtcbn07XG5cbmxldCBpbXBvcnRfYWxsID0gKGRhdGEsIH5zcGVjcykgPT4ge1xuICBsZXQgYWxsID1cbiAgICB0cnkoZGF0YSB8PiBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyB8PiBhbGxfb2ZfeW9qc29uKSB7XG4gICAgfCBfID0+XG4gICAgICBsZXQgYWxsX2YyMiA9IGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gYWxsX2YyMl9vZl95b2pzb247XG4gICAgICB7XG4gICAgICAgIHNldHRpbmdzOiBhbGxfZjIyLnNldHRpbmdzLFxuICAgICAgICBzY3JhdGNoOiBhbGxfZjIyLnNjcmF0Y2gsXG4gICAgICAgIGRvY3VtZW50YXRpb246IFwiXCIsXG4gICAgICAgIGV4ZXJjaXNlOiBhbGxfZjIyLmV4ZXJjaXNlLFxuICAgICAgICBsb2c6IGFsbF9mMjIubG9nLFxuICAgICAgICBleHBsYWluVGhpc01vZGVsOiBcIlwiLFxuICAgICAgfTtcbiAgICB9O1xuICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5pbXBvcnQoYWxsLnNldHRpbmdzKTtcbiAgU3RvcmUuRXhwbGFpblRoaXNNb2RlbC5pbXBvcnQoYWxsLmV4cGxhaW5UaGlzTW9kZWwpO1xuICBsZXQgaW5zdHJ1Y3Rvcl9tb2RlID0gc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlO1xuICBTdG9yZS5TY3JhdGNoLmltcG9ydChhbGwuc2NyYXRjaCk7XG4gIFN0b3JlLkV4ZXJjaXNlLmltcG9ydChhbGwuZXhlcmNpc2UsIH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSk7XG4gIExvZy5pbXBvcnQoYWxsLmxvZyk7XG59O1xuIiwiLy8gb3BlbiBTZXhwbGliLlN0ZDtcblxuLyogUXVlcnlDb21tYW5kLnJlXG5cbiAgICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIHF1ZXJ5IGNvbW1hbmRzIGFuZCBxdWVyeSBwbGFuIGZvcm1hdC5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWxlY3Rpb24gPVxuICB8IFRlcm1cbiAgfCBNYXRjaDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBxdWVyeSA9XG4gIHwgVHlwZVxuICB8IERlZmluaXRpb25cbiAgfCBEb05vdGhpbmc7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgU2VsZWN0KHNlbGVjdGlvbilcbiAgfCBRdWVyeShxdWVyeSk7XG4iLCJsZXQgZ2V0X2lucHV0X3ZhbHVlID0gKCk6IHN0cmluZyA9PiBcIlwiO1xubGV0IHF1ZXJ5X3BhcnNlciA9ICgpOiBRdWVyeUNvbW1hbmQudCA9PiB7XG4gIGxldCBxdWVyeSA9IGdldF9pbnB1dF92YWx1ZSgpO1xuICBKc1V0aWwubG9nKHF1ZXJ5KTtcbiAgU2VsZWN0KFRlcm0pO1xufTtcbiIsInR5cGUgdCA9IHVuaXQ7XG5sZXQgaW5pdCA9ICgpID0+ICgpO1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbmluY2x1ZGUgVXBkYXRlQWN0aW9uOyAvLyB0byBwcmV2ZW50IGNpcmN1bGFyaXR5XG5cbmxldCB1cGRhdGVfc2V0dGluZ3MgPVxuICAgIChhOiBzZXR0aW5nc19hY3Rpb24sIHtzZXR0aW5ncywgX30gYXMgbW9kZWw6IE1vZGVsLnQpOiBNb2RlbC50ID0+XG4gIHN3aXRjaCAoYSkge1xuICB8IFN0YXRpY3MgPT5cbiAgICAvKiBOT1RFOiBkeW5hbWljcyBkZXBlbmRzIG9uIHN0YXRpY3MsIHNvIGlmIGR5bmFtaWNzIGlzIG9uIGFuZFxuICAgICAgIHdlJ3JlIHR1cm5pbmcgc3RhdGljcyBvZmYsIHR1cm4gZHluYW1pY3Mgb2ZmIGFzIHdlbGwgKi9cbiAgICB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgc3RhdGljczogIXNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBhc3Npc3Q6ICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgZWxhYm9yYXRlOiBzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSxcbiAgICAgICAgICBkeW5hbWljczogIXNldHRpbmdzLmNvcmUuc3RhdGljcyAmJiBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICAgIGV2YWx1YXRpb246IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB8IEVsYWJvcmF0ZSA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgc3RhdGljczogIXNldHRpbmdzLmNvcmUuZWxhYm9yYXRlIHx8IHNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBhc3Npc3Q6IHNldHRpbmdzLmNvcmUuYXNzaXN0LFxuICAgICAgICAgIGVsYWJvcmF0ZTogIXNldHRpbmdzLmNvcmUuZWxhYm9yYXRlLFxuICAgICAgICAgIGR5bmFtaWNzOiBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICAgIGV2YWx1YXRpb246IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB8IER5bmFtaWNzID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5keW5hbWljcyB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgYXNzaXN0OiBzZXR0aW5ncy5jb3JlLmFzc2lzdCxcbiAgICAgICAgICBlbGFib3JhdGU6IHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlLFxuICAgICAgICAgIGR5bmFtaWNzOiAhc2V0dGluZ3MuY29yZS5keW5hbWljcyxcbiAgICAgICAgICBldmFsdWF0aW9uOiBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfCBBc3Npc3QgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmFzc2lzdCB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgYXNzaXN0OiAhc2V0dGluZ3MuY29yZS5hc3Npc3QsXG4gICAgICAgICAgZWxhYm9yYXRlOiBzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSxcbiAgICAgICAgICBkeW5hbWljczogc2V0dGluZ3MuY29yZS5keW5hbWljcyxcbiAgICAgICAgICBldmFsdWF0aW9uOiBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfCBFdmFsdWF0aW9uKHUpID0+XG4gICAgbGV0IGV2YWx1YXRpb24gPSBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb247XG4gICAgbGV0IGV2YWx1YXRpb24nID0ge1xuICAgICAgc3dpdGNoICh1KSB7XG4gICAgICB8IFNob3dSZWNvcmQgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc3RlcHBlcl9oaXN0b3J5OiAhZXZhbHVhdGlvbi5zdGVwcGVyX2hpc3RvcnksXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0Nhc2VDbGF1c2VzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfY2FzZV9jbGF1c2VzOiAhZXZhbHVhdGlvbi5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgICAgfVxuICAgICAgfCBTaG93Rm5Cb2RpZXMgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19mbl9ib2RpZXM6ICFldmFsdWF0aW9uLnNob3dfZm5fYm9kaWVzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dDYXN0cyA9PiB7Li4uZXZhbHVhdGlvbiwgc2hvd19jYXN0czogIWV2YWx1YXRpb24uc2hvd19jYXN0c31cbiAgICAgIHwgU2hvd0ZpeHBvaW50cyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X2ZpeHBvaW50czogIWV2YWx1YXRpb24uc2hvd19maXhwb2ludHMsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0xvb2t1cHMgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19sb29rdXBfc3RlcHM6ICFldmFsdWF0aW9uLnNob3dfbG9va3VwX3N0ZXBzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dGaWx0ZXJzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfc3RlcHBlcl9maWx0ZXJzOiAhZXZhbHVhdGlvbi5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgICAgfVxuICAgICAgfCBTaG93U2V0dGluZ3MgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19zZXR0aW5nczogIWV2YWx1YXRpb24uc2hvd19zZXR0aW5ncyxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgIGV2YWx1YXRpb246IGV2YWx1YXRpb24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB8IEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpID0+XG4gICAgbGV0IGV4cGxhaW5UaGlzID0ge1xuICAgICAgLi4uc2V0dGluZ3MuZXhwbGFpblRoaXMsXG4gICAgICBzaG93OiAhc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyxcbiAgICB9O1xuICAgIGxldCBzZXR0aW5ncyA9IHsuLi5zZXR0aW5ncywgZXhwbGFpblRoaXN9O1xuICAgIHsuLi5tb2RlbCwgc2V0dGluZ3N9O1xuICB8IEV4cGxhaW5UaGlzKFRvZ2dsZVNob3dGZWVkYmFjaykgPT5cbiAgICBsZXQgZXhwbGFpblRoaXMgPSB7XG4gICAgICAuLi5zZXR0aW5ncy5leHBsYWluVGhpcyxcbiAgICAgIHNob3dfZmVlZGJhY2s6ICFzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrLFxuICAgIH07XG4gICAgbGV0IHNldHRpbmdzID0gey4uLnNldHRpbmdzLCBleHBsYWluVGhpc307XG4gICAgey4uLm1vZGVsLCBzZXR0aW5nc307XG4gIHwgRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KGEpKSA9PlxuICAgIGxldCBoaWdobGlnaHQ6IEV4cGxhaW5UaGlzTW9kZWwuU2V0dGluZ3MuaGlnaGxpZ2h0ID1cbiAgICAgIHN3aXRjaCAoYSwgc2V0dGluZ3MuZXhwbGFpblRoaXMuaGlnaGxpZ2h0KSB7XG4gICAgICB8IChUb2dnbGUsIEFsbCkgPT4gTm9IaWdobGlnaHRcbiAgICAgIHwgKFRvZ2dsZSwgXykgPT4gQWxsXG4gICAgICB8IChIb3ZlcihfKSwgQWxsKSA9PiBBbGxcbiAgICAgIHwgKEhvdmVyKGlkKSwgXykgPT4gT25lKGlkKVxuICAgICAgfCAoVW5zZXRIb3ZlciwgQWxsKSA9PiBBbGxcbiAgICAgIHwgKFVuc2V0SG92ZXIsIF8pID0+IE5vSGlnaGxpZ2h0XG4gICAgICB9O1xuICAgIGxldCBleHBsYWluVGhpcyA9IHsuLi5zZXR0aW5ncy5leHBsYWluVGhpcywgaGlnaGxpZ2h0fTtcbiAgICBsZXQgc2V0dGluZ3MgPSB7Li4uc2V0dGluZ3MsIGV4cGxhaW5UaGlzfTtcbiAgICB7Li4ubW9kZWwsIHNldHRpbmdzfTtcbiAgfCBCZW5jaG1hcmsgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgYmVuY2htYXJrOiAhc2V0dGluZ3MuYmVuY2htYXJrLFxuICAgICAgfSxcbiAgICB9XG4gIHwgQ2FwdGlvbnMgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY2FwdGlvbnM6ICFzZXR0aW5ncy5jYXB0aW9ucyxcbiAgICAgIH0sXG4gICAgfVxuICB8IFNlY29uZGFyeUljb25zID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIHNlY29uZGFyeV9pY29uczogIXNldHRpbmdzLnNlY29uZGFyeV9pY29ucyxcbiAgICAgIH0sXG4gICAgfVxuICB8IENvbnRleHRJbnNwZWN0b3IgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29udGV4dF9pbnNwZWN0b3I6ICFzZXR0aW5ncy5jb250ZXh0X2luc3BlY3RvcixcbiAgICAgIH0sXG4gICAgfVxuICB8IEluc3RydWN0b3JNb2RlID0+XG4gICAgbGV0IG5ld19tb2RlID0gIXNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGVkaXRvcnM6IEVkaXRvcnMuc2V0X2luc3RydWN0b3JfbW9kZShtb2RlbC5lZGl0b3JzLCBuZXdfbW9kZSksXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgaW5zdHJ1Y3Rvcl9tb2RlOiAhc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgfSxcbiAgICB9O1xuICB8IE1vZGUobW9kZSkgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgbW9kZSxcbiAgICAgIH0sXG4gICAgfVxuICB8IEFjY2Vzc2liaWxpdHkoVG9nZ2xlRW5hYmxlKSA9PlxuICAgIGxldCBhY2Nlc3NpYmlsaXR5ID0ge1xuICAgICAgLi4uc2V0dGluZ3MuYWNjZXNzaWJpbGl0eSxcbiAgICAgIGVuYWJsZTogIXNldHRpbmdzLmFjY2Vzc2liaWxpdHkuZW5hYmxlLFxuICAgIH07XG4gICAgbGV0IHNldHRpbmdzID0gey4uLnNldHRpbmdzLCBhY2Nlc3NpYmlsaXR5fTtcbiAgICB7Li4ubW9kZWwsIHNldHRpbmdzfTtcbiAgfCBBY2Nlc3NpYmlsaXR5KFRvZ2dsZUlzRWRpdGluZykgPT5cbiAgICBsZXQgYWNjZXNzaWJpbGl0eSA9IHtcbiAgICAgIC4uLnNldHRpbmdzLmFjY2Vzc2liaWxpdHksXG4gICAgICBpc19lZGl0aW5nOiAhc2V0dGluZ3MuYWNjZXNzaWJpbGl0eS5pc19lZGl0aW5nLFxuICAgIH07XG4gICAgbGV0IHNldHRpbmdzID0gey4uLnNldHRpbmdzLCBhY2Nlc3NpYmlsaXR5fTtcbiAgICB7Li4ubW9kZWwsIHNldHRpbmdzfTtcbiAgfTtcblxubGV0IHNjaGVkdWxlX2V2YWx1YXRpb24gPSAofnNjaGVkdWxlX2FjdGlvbiwgbW9kZWw6IE1vZGVsLnQpOiB1bml0ID0+XG4gIGlmIChtb2RlbC5zZXR0aW5ncy5jb3JlLmR5bmFtaWNzKSB7XG4gICAgbGV0IGVsYWJzID1cbiAgICAgIEVkaXRvcnMuZ2V0X3NwbGljZWRfZWxhYnMoXG4gICAgICAgIH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncyxcbiAgICAgICAgbW9kZWwuc3RhdGljcyxcbiAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICk7XG4gICAgbGV0IGV2YWxfcnMgPSBNb2RlbFJlc3VsdHMudG9fZXZhbHVhdGUobW9kZWwucmVzdWx0cywgZWxhYnMpO1xuICAgIGlmICghTW9kZWxSZXN1bHRzLmlzX2VtcHR5KGV2YWxfcnMpKSB7XG4gICAgICBzY2hlZHVsZV9hY3Rpb24oVXBkYXRlUmVzdWx0KGV2YWxfcnMpKTtcbiAgICAgIFdvcmtlckNsaWVudC5yZXF1ZXN0KFxuICAgICAgICBldmFsX3JzLFxuICAgICAgICB+aGFuZGxlcj1ycyA9PiBzY2hlZHVsZV9hY3Rpb24oVXBkYXRlUmVzdWx0KHJzKSksXG4gICAgICAgIH50aW1lb3V0PVxuICAgICAgICAgIHJxcyA9PlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChNb2RlbFJlc3VsdHMudGltZW91dF9hbGwocnFzKSkpLFxuICAgICAgKTtcbiAgICB9O1xuICAgIC8qIE5vdCBzZW5kaW5nIHN0ZXBwZXIgdG8gd29ya2VyIGZvciBub3cgYmMgY2xvc3VyZSBwZXJmICovXG4gICAgbGV0IHN0ZXBfcnMgPSBNb2RlbFJlc3VsdHMudG9fc3RlcChtb2RlbC5yZXN1bHRzKTtcbiAgICBpZiAoIU1vZGVsUmVzdWx0cy5pc19lbXB0eShzdGVwX3JzKSkge1xuICAgICAgbGV0IG5ld19ycyA9XG4gICAgICAgIHN0ZXBfcnNcbiAgICAgICAgfD4gTW9kZWxSZXN1bHRzLnVwZGF0ZV9lbGFicyhlbGFicylcbiAgICAgICAgfD4gTW9kZWxSZXN1bHRzLnJ1bl9wZW5kaW5nKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlKTtcbiAgICAgIHNjaGVkdWxlX2FjdGlvbihVcGRhdGVSZXN1bHQobmV3X3JzKSk7XG4gICAgfTtcbiAgfTtcblxubGV0IHVwZGF0ZV9jYWNoZWRfZGF0YSA9ICh+c2NoZWR1bGVfYWN0aW9uLCB1cGRhdGUsIG06IE1vZGVsLnQpOiBNb2RlbC50ID0+IHtcbiAgbGV0IHVwZGF0ZV9zdGF0aWNzID0gaXNfZWRpdCh1cGRhdGUpIHx8IHJlZXZhbHVhdGVfcG9zdF91cGRhdGUodXBkYXRlKTtcbiAgbGV0IHVwZGF0ZV9keW5hbWljcyA9IHJlZXZhbHVhdGVfcG9zdF91cGRhdGUodXBkYXRlKTtcbiAgbGV0IG0gPVxuICAgIHVwZGF0ZV9zdGF0aWNzIHx8IHVwZGF0ZV9keW5hbWljcyAmJiBtLnNldHRpbmdzLmNvcmUuc3RhdGljc1xuICAgICAgPyB7Li4ubSwgc3RhdGljczogRWRpdG9ycy5ta19zdGF0aWNzKH5zZXR0aW5ncz1tLnNldHRpbmdzLCBtLmVkaXRvcnMpfVxuICAgICAgOiBtO1xuICBpZiAodXBkYXRlX2R5bmFtaWNzICYmIG0uc2V0dGluZ3MuY29yZS5keW5hbWljcykge1xuICAgIHNjaGVkdWxlX2V2YWx1YXRpb24ofnNjaGVkdWxlX2FjdGlvbiwgbSk7XG4gICAgbTtcbiAgfSBlbHNlIHtcbiAgICBtO1xuICB9O1xufTtcblxubGV0IHBlcmZvcm1fYWN0aW9uID0gKG1vZGVsOiBNb2RlbC50LCBhOiBBY3Rpb24udCk6IFJlc3VsdC50KE1vZGVsLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgbW9kZWwuZWRpdG9yc1xuICAgIHw+IEVkaXRvcnMuZ2V0X2VkaXRvclxuICAgIHw+IEhhejNsY29yZS5QZXJmb3JtLmdvKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlLCBhKVxuICApIHtcbiAgfCBFcnJvcihlcnIpID0+IEVycm9yKEZhaWxlZFRvUGVyZm9ybShlcnIpKVxuICB8IE9rKGVkKSA9PlxuICAgIGxldCBtb2RlbCA9IHsuLi5tb2RlbCwgZWRpdG9yczogRWRpdG9ycy5wdXRfZWRpdG9yKGVkLCBtb2RlbC5lZGl0b3JzKX07XG4gICAgLyogTm90ZTogTm90IHNhdmluZyBoZXJlIGFzIHNhdmluZyBpcyBjb3N0bHkgdG8gZG8gZWFjaCBrZXlzdHJva2UsXG4gICAgICAgd2Ugd2FpdCBhIHNlY29uZCBhZnRlciB0aGUgbGFzdCBlZGl0IGFjdGlvbiAoc2VlIE1haW4ucmUpICovXG4gICAgT2sobW9kZWwpO1xuICB9O1xuXG5sZXQgc3dpdGNoX3NjcmF0Y2hfc2xpZGUgPVxuICAgIChlZGl0b3JzOiBFZGl0b3JzLnQsIH5pbnN0cnVjdG9yX21vZGUsIGlkeDogaW50KTogb3B0aW9uKEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBOb25lXG4gIHwgU2NyYXRjaChuLCBfKSB3aGVuIG4gPT0gaWR4ID0+IE5vbmVcbiAgfCBTY3JhdGNoKF8sIHNsaWRlcykgd2hlbiBpZHggPj0gTGlzdC5sZW5ndGgoc2xpZGVzKSA9PiBOb25lXG4gIHwgU2NyYXRjaChfLCBzbGlkZXMpID0+IFNvbWUoU2NyYXRjaChpZHgsIHNsaWRlcykpXG4gIHwgRXhlcmNpc2VzKF8sIHNwZWNzLCBfKSB3aGVuIGlkeCA+PSBMaXN0Lmxlbmd0aChzcGVjcykgPT4gTm9uZVxuICB8IEV4ZXJjaXNlcyhfLCBzcGVjcywgXykgPT5cbiAgICBsZXQgc3BlYyA9IExpc3QubnRoKHNwZWNzLCBpZHgpO1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgbGV0IGV4ZXJjaXNlID0gU3RvcmUuRXhlcmNpc2UubG9hZF9leGVyY2lzZShrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIFNvbWUoRXhlcmNpc2VzKGlkeCwgc3BlY3MsIGV4ZXJjaXNlKSk7XG4gIH07XG5cbmxldCBzd2l0Y2hfZXhlcmNpc2VfZWRpdG9yID1cbiAgICAoZWRpdG9yczogRWRpdG9ycy50LCB+cG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKTogb3B0aW9uKEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgRG9jdW1lbnRhdGlvbihfKVxuICB8IFNjcmF0Y2goXykgPT4gTm9uZVxuICB8IEV4ZXJjaXNlcyhtLCBzcGVjcywgZXhlcmNpc2UpID0+XG4gICAgbGV0IGV4ZXJjaXNlID0gRXhlcmNpc2Uuc3dpdGNoX2VkaXRvcih+cG9zLCBpbnN0cnVjdG9yX21vZGUsIH5leGVyY2lzZSk7XG4gICAgLy9Ob3RlOiBub3cgc2F2aW5nIGFmdGVyIGVhY2ggZWRpdCAoZGVsYXllZCBieSAxIHNlY29uZCkgc28gbm8gbmVlZCB0byBzYXZlIGhlcmVcbiAgICAvL1N0b3JlLkV4ZXJjaXNlLnNhdmVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIFNvbWUoRXhlcmNpc2VzKG0sIHNwZWNzLCBleGVyY2lzZSkpO1xuICB9O1xuXG4vKiBUaGlzIGFjdGlvbiBzYXZlcyBhIGZpbGUgd2hpY2ggc2VyaWFsaXplcyBhbGwgY3VycmVudCBlZGl0b3JcbiAgIHNldHRpbmdzLCBpbmNsdWRpbmcgdGhlIHN0YXRlcyBvZiBhbGwgU2NyYXRjaCBhbmQgRXhhbXBsZSBzbGlkZXMuXG4gICBUaGlzIHNhdmVkIGZpbGUgY2FuIGRpcmVjdGx5IHJlcGxhY2UgSGF6M2x3ZWIvSW5pdC5tbCwgYWxsb3dpbmdcbiAgIHlvdSB0byBtYWtlIHlvdXIgY3VycmVudCBzdGF0ZSB0aGUgZGVmYXVsdCBzdGFydHVwIHN0YXRlLlxuXG4gICBUaGlzIGRvZXMgTk9UIHNhdmUgYW55IEV4ZXJjaXNlcyBtb2RlIHN0YXRlIG9yIGFueSBsYW5nZG9jc1xuICAgc3RhdGUuIFRoZSBsYXR0ZXIgaXMgaW50ZW50aW9uYWwgYXMgd2UgZG9uJ3Qgd2FudCB0byBwZXJzaXN0XG4gICB0aGlzIGJldHdlZW4gdXNlcnMuIFRoZSBmb3JtZXIgaXMgYSBUT0RPLCBjdXJyZW50bHkgZGlmZmljdWx0XG4gICBkdWUgdG8gdGhlIG1vcmUgY29tcGxleCBhcmNoaXRlY3R1cmUgb2YgRXhlcmNpc2VzLiAqL1xubGV0IGV4cG9ydF9wZXJzaXN0ZW50X2RhdGEgPSAoKSA9PiB7XG4gIGxldCBkYXRhOiBQZXJzaXN0ZW50RGF0YS50ID0ge1xuICAgIGRvY3VtZW50YXRpb246XG4gICAgICBTdG9yZS5Eb2N1bWVudGF0aW9uLmxvYWQoKSB8PiBTdG9yZS5Eb2N1bWVudGF0aW9uLnRvX3BlcnNpc3RlbnQsXG4gICAgc2NyYXRjaDogU3RvcmUuU2NyYXRjaC5sb2FkKCkgfD4gU3RvcmUuU2NyYXRjaC50b19wZXJzaXN0ZW50LFxuICAgIHNldHRpbmdzOiBTdG9yZS5TZXR0aW5ncy5sb2FkKCksXG4gIH07XG4gIGxldCBjb250ZW50cyA9XG4gICAgXCJsZXQgc3RhcnR1cCA6IFBlcnNpc3RlbnREYXRhLnQgPSBcIiArKyBQZXJzaXN0ZW50RGF0YS5zaG93KGRhdGEpO1xuICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUoXG4gICAgfmZpbGVuYW1lPVwiSW5pdC5tbFwiLFxuICAgIH5jb250ZW50X3R5cGU9XCJ0ZXh0L3BsYWluXCIsXG4gICAgfmNvbnRlbnRzLFxuICApO1xuICBwcmludF9lbmRsaW5lKFwiSU5GTzogUGVyc2lzdGVudCBkYXRhIGV4cG9ydGVkIHRvIEluaXQubWxcIik7XG59O1xuXG5sZXQgdWlfc3RhdGVfdXBkYXRlID1cbiAgICAodWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLCB1cGRhdGU6IHNldF9tZXRhLCB+c2NoZWR1bGVfYWN0aW9uIGFzIF8pXG4gICAgOiBNb2RlbC51aV9zdGF0ZSA9PiB7XG4gIHN3aXRjaCAodXBkYXRlKSB7XG4gIHwgTW91c2Vkb3duID0+IHsuLi51aV9zdGF0ZSwgbW91c2Vkb3duOiB0cnVlfVxuICB8IE1vdXNldXAgPT4gey4uLnVpX3N0YXRlLCBtb3VzZWRvd246IGZhbHNlfVxuICB8IFNob3dCYWNrcGFja1RhcmdldHMoYikgPT4gey4uLnVpX3N0YXRlLCBzaG93X2JhY2twYWNrX3RhcmdldHM6IGJ9XG4gIHwgRm9udE1ldHJpY3MoZm9udF9tZXRyaWNzKSA9PiB7Li4udWlfc3RhdGUsIGZvbnRfbWV0cmljc31cbiAgfTtcbn07XG5cbmxldCByZWMgYXBwbHkgPVxuICAgICAgICAobW9kZWw6IE1vZGVsLnQsIHVwZGF0ZTogdCwgc3RhdGU6IFN0YXRlLnQsIH5zY2hlZHVsZV9hY3Rpb24pXG4gICAgICAgIDogUmVzdWx0LnQoTW9kZWwudCkgPT4ge1xuICBsZXQgbTogUmVzdWx0LnQoTW9kZWwudCkgPVxuICAgIHN3aXRjaCAodXBkYXRlKSB7XG4gICAgfCBSZXNldCA9PiBPayhNb2RlbC5yZXNldChtb2RlbCkpXG4gICAgfCBTZXQoRXZhbHVhdGlvbihfKSBhcyBzX2FjdGlvbikgPT4gT2sodXBkYXRlX3NldHRpbmdzKHNfYWN0aW9uLCBtb2RlbCkpXG4gICAgfCBTZXQoc19hY3Rpb24pID0+XG4gICAgICBsZXQgbW9kZWwgPSB1cGRhdGVfc2V0dGluZ3Moc19hY3Rpb24sIG1vZGVsKTtcbiAgICAgIE1vZGVsLnNhdmUobW9kZWwpO1xuICAgICAgc3dpdGNoICh1cGRhdGUpIHtcbiAgICAgIC8vIE5PVEU6IExvYWQgaGVyZSBuZWNlc3NhcnkgdG8gbG9hZCBlZGl0b3JzIG9uIHN3aXRjaGluZyBtb2RlXG4gICAgICB8IFNldChNb2RlKF8pKSA9PiBPayhNb2RlbC5sb2FkKG1vZGVsKSlcbiAgICAgIHwgXyA9PiBPayhtb2RlbClcbiAgICAgIH07XG4gICAgfCBTZXRNZXRhKGFjdGlvbikgPT5cbiAgICAgIGxldCB1aV9zdGF0ZSA9XG4gICAgICAgIHVpX3N0YXRlX3VwZGF0ZShtb2RlbC51aV9zdGF0ZSwgYWN0aW9uLCB+c2NoZWR1bGVfYWN0aW9uKTtcbiAgICAgIE9rKHsuLi5tb2RlbCwgdWlfc3RhdGV9KTtcbiAgICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwodSkgPT5cbiAgICAgIGxldCBleHBsYWluVGhpc01vZGVsID1cbiAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuc2V0X3VwZGF0ZShtb2RlbC5leHBsYWluVGhpc01vZGVsLCB1KTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGV4cGxhaW5UaGlzTW9kZWx9KTtcbiAgICB8IERlYnVnQ29uc29sZShrZXkpID0+XG4gICAgICBEZWJ1Z0NvbnNvbGUucHJpbnQobW9kZWwsIGtleSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBTYXZlID0+IE1vZGVsLnNhdmVfYW5kX3JldHVybihtb2RlbClcbiAgICB8IEluaXRJbXBvcnRBbGwoZmlsZSkgPT5cbiAgICAgIEpzVXRpbC5yZWFkX2ZpbGUoZmlsZSwgZGF0YSA9PiBzY2hlZHVsZV9hY3Rpb24oRmluaXNoSW1wb3J0QWxsKGRhdGEpKSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBGaW5pc2hJbXBvcnRBbGwoZGF0YSkgPT5cbiAgICAgIHN3aXRjaCAoZGF0YSkge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgfCBTb21lKGRhdGEpID0+XG4gICAgICAgIEV4cG9ydC5pbXBvcnRfYWxsKGRhdGEsIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyk7XG4gICAgICAgIE9rKE1vZGVsLmxvYWQobW9kZWwpKTtcbiAgICAgIH1cbiAgICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKGZpbGUpID0+XG4gICAgICBKc1V0aWwucmVhZF9maWxlKGZpbGUsIGRhdGEgPT5cbiAgICAgICAgc2NoZWR1bGVfYWN0aW9uKEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoZGF0YSkpXG4gICAgICApO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChkYXRhKSA9PlxuICAgICAgbGV0IGVkaXRvcnMgPSBFZGl0b3JzLmltcG9ydF9jdXJyZW50KG1vZGVsLmVkaXRvcnMsIGRhdGEpO1xuICAgICAgTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgIHwgRXhwb3J0UGVyc2lzdGVudERhdGEgPT5cbiAgICAgIGV4cG9ydF9wZXJzaXN0ZW50X2RhdGEoKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFJlc2V0Q3VycmVudEVkaXRvciA9PlxuICAgICAgbGV0IGluc3RydWN0b3JfbW9kZSA9IG1vZGVsLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5yZXNldF9jdXJyZW50KG1vZGVsLmVkaXRvcnMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgIHwgU3dpdGNoU2NyYXRjaFNsaWRlKG4pID0+XG4gICAgICBsZXQgaW5zdHJ1Y3Rvcl9tb2RlID0gbW9kZWwuc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlO1xuICAgICAgc3dpdGNoIChzd2l0Y2hfc2NyYXRjaF9zbGlkZShtb2RlbC5lZGl0b3JzLCB+aW5zdHJ1Y3Rvcl9tb2RlLCBuKSkge1xuICAgICAgfCBOb25lID0+IEVycm9yKEZhaWxlZFRvU3dpdGNoKVxuICAgICAgfCBTb21lKGVkaXRvcnMpID0+IE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGVkaXRvcnN9KVxuICAgICAgfTtcbiAgICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShuYW1lKSA9PlxuICAgICAgc3dpdGNoIChFZGl0b3JzLnN3aXRjaF9leGFtcGxlX3NsaWRlKG1vZGVsLmVkaXRvcnMsIG5hbWUpKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoRmFpbGVkVG9Td2l0Y2gpXG4gICAgICB8IFNvbWUoZWRpdG9ycykgPT4gTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pXG4gICAgICB9XG4gICAgfCBTd2l0Y2hFZGl0b3IocG9zKSA9PlxuICAgICAgbGV0IGluc3RydWN0b3JfbW9kZSA9IG1vZGVsLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICAgIHN3aXRjaCAoc3dpdGNoX2V4ZXJjaXNlX2VkaXRvcihtb2RlbC5lZGl0b3JzLCB+cG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgfCBOb25lID0+IEVycm9yKEZhaWxlZFRvU3dpdGNoKVxuICAgICAgfCBTb21lKGVkaXRvcnMpID0+IE9rKHsuLi5tb2RlbCwgZWRpdG9yc30pXG4gICAgICB9O1xuICAgIHwgVEFCID0+XG4gICAgICAvKiBBdHRlbXB0IHRvIGFjdCBpbnRlbGxpZ2VudGx5IHdoZW4gVEFCIGlzIHByZXNzZWQuXG4gICAgICAgKiBUT0RPKGFuZHJldyk6IENvbnNpZGVyIG1vcmUgYWR2YW5jZWQgVEFCIGxvZ2ljLiBJbnN0ZWFkXG4gICAgICAgKiBvZiBzaW1wbHkgbW92aW5nIHRvIG5leHQgaG9sZSwgaWYgdGhlIGJhY2twYWNrIGlzIG5vbi1lbXB0eVxuICAgICAgICogYnV0IGNhbid0IGltbWVkaWF0ZWx5IHB1dCBkb3duLCBtb3ZlIHRvIG5leHQgcG9zaXRpb24gb2ZcbiAgICAgICAqIGludGVyZXN0LCB3aGljaCBpcyBjbG9zZXQgb2Y6IG5lYXJlc3QgcG9zaXRpb24gd2hlcmUgY2FuXG4gICAgICAgKiBwdXQgZG93biwgZmFydGhlc3QgcG9zaXRpb24gd2hlcmUgY2FuIHB1dCBkb3duLCBuZXh0IGhvbGUgKi9cbiAgICAgIGxldCB6ID1cbiAgICAgICAgbW9kZWwuZWRpdG9yc1xuICAgICAgICB8PiBFZGl0b3JzLmdldF9lZGl0b3JcbiAgICAgICAgfD4gKChlZDogRWRpdG9yLnQpID0+IGVkLnN0YXRlLnppcHBlcik7XG4gICAgICBsZXQgYSA9XG4gICAgICAgIFNlbGVjdGlvbi5pc19idWZmZXIoei5zZWxlY3Rpb24pXG4gICAgICAgICAgPyBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbilcbiAgICAgICAgICA6IFppcHBlci5jYW5fcHV0X2Rvd24oeilcbiAgICAgICAgICAgICAgPyBQZXJmb3JtQWN0aW9uKFB1dF9kb3duKSA6IE1vdmVUb05leHRIb2xlKFJpZ2h0KTtcbiAgICAgIGFwcGx5KG1vZGVsLCBhLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik7XG4gICAgfCBQZXJmb3JtQWN0aW9uKGEpIHdoZW4gbW9kZWwuc2V0dGluZ3MuYWNjZXNzaWJpbGl0eS5pc19lZGl0aW5nID0+XG4gICAgICBsZXQgYWNjZXNzaWJpbGl0eU1vZGVsID1cbiAgICAgICAgQWNjZXNzaWJpbGl0eU1vZGVsLnVwZGF0ZShtb2RlbC5hY2Nlc3NpYmlsaXR5TW9kZWwsIEVkaXQoYSkpO1xuICAgICAgbGV0IG1vZGVsID0gey4uLm1vZGVsLCBhY2Nlc3NpYmlsaXR5TW9kZWx9O1xuICAgICAgSnNVdGlsLmxvZyhtb2RlbC5hY2Nlc3NpYmlsaXR5TW9kZWwuaW5wdXQpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgUGVyZm9ybUFjdGlvbihhKVxuICAgICAgICB3aGVuIG1vZGVsLnNldHRpbmdzLmNvcmUuYXNzaXN0ICYmIG1vZGVsLnNldHRpbmdzLmNvcmUuc3RhdGljcyA9PlxuICAgICAgbGV0IG1vZGVsID0gVXBkYXRlQXNzaXN0YW50LnJlc2V0X2J1ZmZlcihtb2RlbCk7XG4gICAgICBzd2l0Y2ggKHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBhKSkge1xuICAgICAgfCBPayhtb2RlbCkgd2hlbiBBY3Rpb24uaXNfZWRpdChhKSA9PlxuICAgICAgICBVcGRhdGVBc3Npc3RhbnQuYXBwbHkoXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgUHJvbXB0KFR5RGkpLFxuICAgICAgICAgIH5zY2hlZHVsZV9hY3Rpb24sXG4gICAgICAgICAgfnN0YXRlLFxuICAgICAgICAgIH5tYWluPWFwcGx5LFxuICAgICAgICApXG4gICAgICB8IHggPT4geFxuICAgICAgfTtcbiAgICB8IFBlcmZvcm1BY3Rpb24oYSkgPT4gcGVyZm9ybV9hY3Rpb24obW9kZWwsIGEpXG4gICAgfCBRdWVyeUlucHV0ID0+XG4gICAgICBsZXQgX2NvbW1hbmQgPSBRdWVyeVBhcnNlci5xdWVyeV9wYXJzZXIoKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFBlcmZvcm1RdWVyeShxdWVyeSkgPT5cbiAgICAgIC8vVE9ET1xuICAgICAgcHJpbnRfZW5kbGluZShcbiAgICAgICAgUXVlcnkucXVlcnlfcmVwbHkoXG4gICAgICAgICAgfnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLFxuICAgICAgICAgIFF1ZXJ5LkN1cnNvck1vdmUsXG4gICAgICAgICAgRWRpdG9ycy5nZXRfZWRpdG9yKG1vZGVsLmVkaXRvcnMpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIHByaW50X2VuZGxpbmUoUXVlcnkudG9fc3RyaW5nKHF1ZXJ5KSk7XG4gICAgICBwcmludF9lbmRsaW5lKFxuICAgICAgICBRdWVyeS5xdWVyeV9yZXBseShcbiAgICAgICAgICB+c2V0dGluZ3M9bW9kZWwuc2V0dGluZ3MsXG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgRWRpdG9ycy5nZXRfZWRpdG9yKG1vZGVsLmVkaXRvcnMpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yID0+XG4gICAgICAvKiBUaGlzIHNlcmlhbGl6ZXMgdGhlIGN1cnJlbnQgZWRpdG9yIHRvIHRleHQsIHJlc2V0cyB0aGUgY3VycmVudFxuICAgICAgICAgZWRpdG9yLCBhbmQgdGhlbiBkZXNlcmlhbGl6ZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgKHRhY3RpY2FsKVxuICAgICAgICAgbnVjbGVhciBvcHRpb24gZm9yIHdlaXJkIGJhY2twYWNrIHN0YXRlcyAqL1xuICAgICAgbGV0IGVkID0gRWRpdG9ycy5nZXRfZWRpdG9yKG1vZGVsLmVkaXRvcnMpO1xuICAgICAgbGV0IHppcHBlcl9pbml0ID0gWmlwcGVyLmluaXQoKTtcbiAgICAgIGxldCBlZF9zdHIgPSBQcmludGVyLnRvX3N0cmluZ19lZGl0b3IoZWQpO1xuICAgICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcofnppcHBlcl9pbml0LCBlZF9zdHIpKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQ2FudFJlc2V0KVxuICAgICAgfCBTb21lKHopID0+XG4gICAgICAgIC8vVE9ETzogYWRkIGNvcnJlY3QgYWN0aW9uIHRvIGhpc3RvcnkgKFBpY2tfdXAgaXMgd3JvbmcpXG4gICAgICAgIGxldCBlZGl0b3IgPSBIYXozbGNvcmUuRWRpdG9yLm5ld19zdGF0ZShQaWNrX3VwLCB6LCBlZCk7XG4gICAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5wdXRfZWRpdG9yKGVkaXRvciwgbW9kZWwuZWRpdG9ycyk7XG4gICAgICAgIE9rKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgICAgfTtcbiAgICB8IEN1dCA9PlxuICAgICAgLy8gc3lzdGVtIGNsaXBib2FyZCBoYW5kbGluZyBpdHNlbGYgaXMgZG9uZSBpbiBQYWdlLnZpZXcgaGFuZGxlcnNcbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBEZXN0cnVjdChMZWZ0KSlcbiAgICB8IENvcHkgPT5cbiAgICAgIC8vIHN5c3RlbSBjbGlwYm9hcmQgaGFuZGxpbmcgaXRzZWxmIGlzIGRvbmUgaW4gUGFnZS52aWV3IGhhbmRsZXJzXG4gICAgICAvLyBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdGUgYnV0IGluY2x1ZGluZyBhcyBhbiBhY3Rpb24gZm9yIGxvZ2dpbmcgcHVycG9zZXNcbiAgICAgIE9rKG1vZGVsKVxuICAgIHwgUGFzdGUoY2xpcGJvYXJkKSA9PlxuICAgICAgbGV0IGVkID0gRWRpdG9ycy5nZXRfZWRpdG9yKG1vZGVsLmVkaXRvcnMpO1xuICAgICAgc3dpdGNoIChQcmludGVyLnBhc3RlX2ludG9femlwKGVkLnN0YXRlLnppcHBlciwgY2xpcGJvYXJkKSkge1xuICAgICAgfCBOb25lID0+IEVycm9yKENhbnRQYXN0ZSlcbiAgICAgIHwgU29tZSh6KSA9PlxuICAgICAgICAvL0hBQ0soYW5kcmV3KTogYmVsb3cgaXMgbm90IHN0cmljdGx5IGEgaW5zZXJ0IGFjdGlvbi4uLlxuICAgICAgICBsZXQgZWQgPSBIYXozbGNvcmUuRWRpdG9yLm5ld19zdGF0ZShJbnNlcnQoY2xpcGJvYXJkKSwgeiwgZWQpO1xuICAgICAgICBsZXQgZWRpdG9ycyA9IEVkaXRvcnMucHV0X2VkaXRvcihlZCwgbW9kZWwuZWRpdG9ycyk7XG4gICAgICAgIE9rKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgICAgfTtcbiAgICB8IFVuZG8gPT5cbiAgICAgIGxldCBlZCA9IEVkaXRvcnMuZ2V0X2VkaXRvcihtb2RlbC5lZGl0b3JzKTtcbiAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci51bmRvKGVkKSkge1xuICAgICAgfCBOb25lID0+IEVycm9yKENhbnRVbmRvKVxuICAgICAgfCBTb21lKGVkKSA9PlxuICAgICAgICBPayh7Li4ubW9kZWwsIGVkaXRvcnM6IEVkaXRvcnMucHV0X2VkaXRvcihlZCwgbW9kZWwuZWRpdG9ycyl9KVxuICAgICAgfTtcbiAgICB8IFJlZG8gPT5cbiAgICAgIGxldCBlZCA9IEVkaXRvcnMuZ2V0X2VkaXRvcihtb2RlbC5lZGl0b3JzKTtcbiAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci5yZWRvKGVkKSkge1xuICAgICAgfCBOb25lID0+IEVycm9yKENhbnRSZWRvKVxuICAgICAgfCBTb21lKGVkKSA9PlxuICAgICAgICBPayh7Li4ubW9kZWwsIGVkaXRvcnM6IEVkaXRvcnMucHV0X2VkaXRvcihlZCwgbW9kZWwuZWRpdG9ycyl9KVxuICAgICAgfTtcbiAgICB8IE1vdmVUb05leHRIb2xlKGQpID0+XG4gICAgICBwZXJmb3JtX2FjdGlvbihtb2RlbCwgTW92ZShHb2FsKFBpZWNlKEdyb3V0LCBkKSkpKVxuICAgIHwgQXNzaXN0YW50KGFjdGlvbikgPT5cbiAgICAgIFVwZGF0ZUFzc2lzdGFudC5hcHBseShcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgfnNjaGVkdWxlX2FjdGlvbixcbiAgICAgICAgfnN0YXRlLFxuICAgICAgICB+bWFpbj1hcHBseSxcbiAgICAgIClcbiAgICB8IEJlbmNobWFyayhTdGFydCkgPT5cbiAgICAgIExpc3QuaXRlcihzY2hlZHVsZV9hY3Rpb24sIEJlbmNobWFyay5hY3Rpb25zXzEpO1xuICAgICAgQmVuY2htYXJrLnN0YXJ0KCk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBCZW5jaG1hcmsoRmluaXNoKSA9PlxuICAgICAgQmVuY2htYXJrLmZpbmlzaCgpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgU3RlcHBlckFjdGlvbihrZXksIFN0ZXBGb3J3YXJkKGlkeCkpID0+XG4gICAgICBsZXQgciA9XG4gICAgICAgIG1vZGVsLnJlc3VsdHNcbiAgICAgICAgfD4gTW9kZWxSZXN1bHRzLmZpbmQoa2V5KVxuICAgICAgICB8PiBNb2RlbFJlc3VsdC5zdGVwX2ZvcndhcmQoaWR4KTtcbiAgICAgIE9rKHsuLi5tb2RlbCwgcmVzdWx0czogbW9kZWwucmVzdWx0cyB8PiBNb2RlbFJlc3VsdHMuYWRkKGtleSwgcil9KTtcbiAgICB8IFN0ZXBwZXJBY3Rpb24oa2V5LCBTdGVwQmFja3dhcmQpID0+XG4gICAgICBsZXQgciA9XG4gICAgICAgIG1vZGVsLnJlc3VsdHNcbiAgICAgICAgfD4gTW9kZWxSZXN1bHRzLmZpbmQoa2V5KVxuICAgICAgICB8PiBNb2RlbFJlc3VsdC5zdGVwX2JhY2t3YXJkKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24pO1xuICAgICAgT2soey4uLm1vZGVsLCByZXN1bHRzOiBtb2RlbC5yZXN1bHRzIHw+IE1vZGVsUmVzdWx0cy5hZGQoa2V5LCByKX0pO1xuICAgIHwgVG9nZ2xlU3RlcHBlcihrZXkpID0+XG4gICAgICBPayh7XG4gICAgICAgIC4uLm1vZGVsLFxuICAgICAgICByZXN1bHRzOlxuICAgICAgICAgIG1vZGVsLnJlc3VsdHNcbiAgICAgICAgICB8PiBNb2RlbFJlc3VsdHMudXBkYXRlKGtleSwgdiA9PlxuICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgdlxuICAgICAgICAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9Tm9FbGFiOiBNb2RlbFJlc3VsdC50KVxuICAgICAgICAgICAgICAgICB8PiBNb2RlbFJlc3VsdC50b2dnbGVfc3RlcHBlcixcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICApLFxuICAgICAgfSlcbiAgICB8IFVwZGF0ZVJlc3VsdChyZXN1bHRzKSA9PlxuICAgICAgbGV0IHJlc3VsdHMgPVxuICAgICAgICBNb2RlbFJlc3VsdHMudW5pb24oKF8sIF9hLCBiKSA9PiBTb21lKGIpLCBtb2RlbC5yZXN1bHRzLCByZXN1bHRzKTtcbiAgICAgIE9rKHsuLi5tb2RlbCwgcmVzdWx0c30pO1xuICAgIH07XG4gIG0gfD4gUmVzdWx0Lm1hcCh+Zj11cGRhdGVfY2FjaGVkX2RhdGEofnNjaGVkdWxlX2FjdGlvbiwgdXBkYXRlKSk7XG59O1xuIiwibGV0IGxhbSA9IFwizrtcIjtcbmxldCB1cF9hcnJvdyA9IFwi4oaRXCI7XG5sZXQgZG93bl9hcnJvdyA9IFwi4oaTXCI7XG5sZXQgbGVmdF9hcnJvdyA9IFwi4oaQXCI7XG5sZXQgcmlnaHRfYXJyb3cgPSBcIuKGklwiO1xubGV0IG5ic3AgPSBcIlxceEMyXFx4QTBcIjtcbmxldCB6d3NwID0gXCLigItcIjtcblxubGV0IHR5cGVBcnJvd1N5bSA9IFwi4oaSXCI7IC8vIFUrMjE5MiBcIlJpZ2h0d2FyZHMgQXJyb3dcIlxubGV0IGNhc3RBcnJvd1N5bSA9IFwi4oeoXCI7XG5cbmxldCBlbGxpcHNpcyA9IFwiXFx4RTJcXHg4MFxceEE2XCI7XG5cbi8vIGNvcGllZCBmcm9tIGhhemVsXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5sZXQgX3BhdCA9IHBhdChcInBcIik7XG5sZXQgX3R5cCA9IHR5cChcInR5XCIpO1xubGV0IHR5cGFubl9wYXRfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdF9pZDogSWQudCwgfnR5cF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0KSwgcGF0X2lkKSxcbiAgKFBpZWNlLmlkKF90eXApLCB0eXBfaWQpLFxuXTtcbmxldCB0eXBhbm5fcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCB0aGUgW3R5cGUgYW5ub3RhdGVkIHBhdHRlcm5dKCVzKSBhbmQgaGF2ZSB0aGUgW2luZGljYXRlZCB0eXBlXSglcykgbWF0Y2ggdGhpcyB0eXBlIGFubm90YXRpb24gcGF0dGVybi5cIjtcbiAge1xuICAgIGlkOiBUeXBBbm5QYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfcGF0LCBzcGFjZSgpLCB0eXBlYW5uKCksIHNwYWNlKCksIF90eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR5cGFubjogZ3JvdXAgPSB7aWQ6IFR5cEFublBhdCwgZm9ybXM6IFt0eXBhbm5fcGF0XX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgX3RwYXQgPSB0cGF0KFwicFwiKTtcbmxldCBfdHlwX2RlZiA9IHR5cChcInR5X2RlZlwiKTtcbmxldCB0eWFsaWFzX2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyA9ICh+dHBhdF9pZDogSWQudCwgfmRlZl9pZDogSWQudCkgPT4gW1xuICAoUGllY2UuaWQoX3RwYXQpLCB0cGF0X2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgdHlhbGlhc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqdHlwZSpdKCVzKSBpcyBib3VuZCB0byB0aGUgWyp0eXBlIHZhcmlhYmxlKl0oJXMpIGluIHRoZSBib2R5LlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta190eWFsaWFzKFtbc3BhY2UoKSwgX3RwYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX3R5cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IFR5QWxpYXNFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHlhbGlhc19leHBzOiBncm91cCA9IHtpZDogVHlBbGlhc0V4cCwgZm9ybXM6IFt0eWFsaWFzX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHR1cGxlX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHR1cGxlIHR5cGUgY2xhc3NpZmllcyAlcy10dXBsZXMgd2l0aCBjb3JyZXNwb25kaW5nIGVsZW1lbnQgdHlwZXMuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3R5cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwidHkxXCIpLCBjb21tYSwgc3BhY2UoKSwgdHlwKFwiLi4uXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbdHlwKFwidHkxXCIpLCBjb21tYV90eXAoKSwgdHlwKFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZTBfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgZWRnZS1jYXNlIHR1cGxlIHR5cGUsIGFsc28ga25vd24gYXMgdGhlIGB1bml0YCB0eXBlLCBjbGFzc2lmaWVzIDAtdHVwbGVzLCBvZiB3aGljaCB0aGVyZSBpcyBvbmx5IG9uZS5cIjtcbiAge1xuICAgIGlkOiBUdXBsZTBUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCIoKVwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgX3R5cF9lbGVtMSA9IHR5cChcInR5MVwiKTtcbmxldCBfdHlwX2VsZW0yID0gdHlwKFwidHkyXCIpO1xubGV0IHR1cGxlMl90eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3R5cF9lbGVtMSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTIpLCBlbGVtMl9pZCksXG5dO1xubGV0IHR1cGxlMl90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyB0dXBsZSB0eXBlIGNsYXNzaWZpZXMgMi10dXBsZXMgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgW2ZpcnN0IGVsZW1lbnQgdHlwZV0oJXMpIGFuZCBzZWNvbmQgZWxlbWVudCBvZiB0aGUgW3NlY29uZCBlbGVtZW50IHR5cGVdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfdHlwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUyVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3R5cF9lbGVtMSwgY29tbWEsIHNwYWNlKCksIF90eXBfZWxlbTJdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFt0eXAoXCJ0eTFcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCJ0eTJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfdHlwX2VsZW0xID0gdHlwKFwidHkxXCIpO1xubGV0IF90eXBfZWxlbTIgPSB0eXAoXCJ0eTJcIik7XG5sZXQgX3R5cF9lbGVtMyA9IHR5cChcInR5M1wiKTtcbmxldCB0dXBsZTNfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50LCB+ZWxlbTNfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3R5cF9lbGVtMSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTIpLCBlbGVtMl9pZCksXG4gIChQaWVjZS5pZChfdHlwX2VsZW0zKSwgZWxlbTNfaWQpLFxuXTtcbmxldCB0dXBsZTNfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgdHVwbGUgdHlwZSBjbGFzc2lmaWVzIDMtdHVwbGVzIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIFtmaXJzdCBlbGVtZW50IHR5cGVdKCVzKSwgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIFtzZWNvbmQgZWxlbWVudCB0eXBlXSglcyksIGFuZCB0aGlyZCBlbGVtZW50IG9mIHRoZSBbdGhpcmQgZWxlbWVudCB0eXBlXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3R5cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlM1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX3R5cF9lbGVtMSxcbiAgICAgIGNvbW1hX3R5cCgpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF90eXBfZWxlbTIsXG4gICAgICBjb21tYSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX2VsZW0zLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFt0eXAoXCJ0eTFcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCJ0eTJcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCJ0eTNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR1cGxlOiBncm91cCA9IHtpZDogVHVwbGVUeXAsIGZvcm1zOiBbdHVwbGVfdHlwXX07XG5cbmxldCB0dXBsZTA6IGdyb3VwID0ge2lkOiBUdXBsZTBUeXAsIGZvcm1zOiBbdHVwbGUwX3R5cF19O1xuXG5sZXQgdHVwbGUyOiBncm91cCA9IHtpZDogVHVwbGUyVHlwLCBmb3JtczogW3R1cGxlMl90eXAsIHR1cGxlX3R5cF19O1xuXG5sZXQgdHVwbGUzOiBncm91cCA9IHtpZDogVHVwbGUzVHlwLCBmb3JtczogW3R1cGxlM190eXAsIHR1cGxlX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHR1cGxlX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlICVzLXR1cGxlcyB3aXRoIGVsZW1lbnRzIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybnMgbWF0Y2ggdGhpcyB0dXBsZSBwYXR0ZXJuLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAge1xuICAgIGlkOiBUdXBsZVBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcInAxXCIpLCBjb21tYSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgdHVwbGVfcGF0X3NpemUyX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3BhdDIpLCBlbGVtMl9pZCksXG5dO1xubGV0IHR1cGxlX3BhdF9zaXplMjogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIDItdHVwbGVzIHdpdGggZmlyc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgW2ZpcnN0IGVsZW1lbnQgcGF0dGVybl0oJXMpIGFuZCBzZWNvbmQgZWxlbWVudCBtYXRjaGluZyB0aGUgW3NlY29uZCBlbGVtZW50IHBhdHRlcm5dKCVzKSBtYXRjaCB0aGlzIHR1cGxlIHBhdHRlcm4uXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlMlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXQxLCBjb21tYSwgc3BhY2UoKSwgX3BhdDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9wYXQzID0gcGF0KFwicDNcIik7XG5sZXQgdHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50LCB+ZWxlbTNfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIGVsZW0yX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQzKSwgZWxlbTNfaWQpLFxuXTtcbmxldCB0dXBsZV9wYXRfc2l6ZTM6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSAzLXR1cGxlcyB3aXRoIGZpcnN0IGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtmaXJzdCBlbGVtZW50IHBhdHRlcm5dKCVzKSwgc2Vjb25kIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtzZWNvbmQgZWxlbWVudCBwYXR0ZXJuXSglcyksIGFuZCB0aGlyZCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbdGhpcmQgZWxlbWVudCBwYXR0ZXJuXSglcykgbWF0Y2ggdGhpcyB0dXBsZSBwYXR0ZXJuLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAge1xuICAgIGlkOiBUdXBsZTNQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF9wYXQxLFxuICAgICAgY29tbWFfcGF0KCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3BhdDIsXG4gICAgICBjb21tYSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfcGF0MyxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKSwgY29tbWFfcGF0KCksIHBhdChcInAzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZTogZ3JvdXAgPSB7aWQ6IFR1cGxlUGF0LCBmb3JtczogW3R1cGxlX3BhdF19O1xubGV0IHR1cGxlMjogZ3JvdXAgPSB7aWQ6IFR1cGxlMlBhdCwgZm9ybXM6IFt0dXBsZV9wYXRfc2l6ZTIsIHR1cGxlX3BhdF19O1xubGV0IHR1cGxlMzogZ3JvdXAgPSB7aWQ6IFR1cGxlM1BhdCwgZm9ybXM6IFt0dXBsZV9wYXRfc2l6ZTMsIHR1cGxlX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHR1cGxlX2V4YW1wbGVfMSA9IHtcbiAgc3ViX2lkOiBUdXBsZTEsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIodHJ1ZSwgMSlcIiksXG4gIG1lc3NhZ2U6IFwiQSB0dXBsZSB3aXRoIGZpcnN0IGVsbWVudCB0cnVlIGFuZCBzZWNvbmQgZWxlbWVudCAxLlwiLFxufTtcbmxldCB0dXBsZV9leGFtcGxlXzIgPSB7XG4gIHN1Yl9pZDogVHVwbGUyLFxuICB0ZXJtOiBta19leGFtcGxlKFwiKDEsIDIsIDMpXCIpLFxuICBtZXNzYWdlOiBcIkEgdHVwbGUgd2l0aCBmaXJzdCBlbGVtZW50IDEsIHNlY29uZCBlbGVtZW50IDIsIGFuZCB0aGlyZCBlbGVtZW50IDMuXCIsXG59O1xubGV0IHR1cGxlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgdHVwbGUgaGFzICVzIGVsZW1lbnRzLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBUdXBsZUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2V4cChcImUxXCIpLCBjb21tYSwgc3BhY2UoKSwgZXhwKFwiLi4uXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBleHAoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZV9leGFtcGxlXzEsIHR1cGxlX2V4YW1wbGVfMl0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCB0dXBsZV9leHBfc2l6ZTJfY29sb3JpbmdfaWRzID1cbiAgICAofmV4cDFfaWQ6IElkLnQsIH5leHAyX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhQaWVjZS5pZChfZXhwMSksIGV4cDFfaWQpLCAoUGllY2UuaWQoX2V4cDIpLCBleHAyX2lkKV07XG59O1xubGV0IHR1cGxlX2V4cF9zaXplMjogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgMi10dXBsZSBoYXMgYSBbZmlyc3RdKCVzKSBhbmQgW3NlY29uZF0oJXMpIGVsZW1lbnQuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlMkV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBjb21tYSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIGV4cChcImUyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGVfZXhhbXBsZV8xXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IF9leHAzID0gZXhwKFwiZTNcIik7XG5sZXQgdHVwbGVfZXhwX3NpemUzX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5leHAxX2lkOiBJZC50LCB+ZXhwMl9pZDogSWQudCwgfmV4cDNfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9leHAxKSwgZXhwMV9pZCksXG4gICAgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCksXG4gICAgKFBpZWNlLmlkKF9leHAzKSwgZXhwM19pZCksXG4gIF07XG59O1xubGV0IHR1cGxlX2V4cF9zaXplMzogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgMy10dXBsZSBoYXMgYSBbZmlyc3RdKCVzKSwgW3NlY29uZF0oJXMpLCBhbmQgW3RoaXJkXSglcykgZWxlbWVudC5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfZXhwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUzRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfZXhwMSxcbiAgICAgIGNvbW1hX2V4cCgpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9leHAyLFxuICAgICAgY29tbWEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgX2V4cDMsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW2V4cChcImUxXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiZTJcIiksIGNvbW1hX2V4cCgpLCBleHAoXCJlM1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlX2V4YW1wbGVfMl0sXG4gIH07XG59O1xuXG5sZXQgdHVwbGVzOiBncm91cCA9IHtpZDogVHVwbGVFeHAsIGZvcm1zOiBbdHVwbGVfZXhwXX07XG5cbmxldCB0dXBsZXMyOiBncm91cCA9IHtpZDogVHVwbGUyRXhwLCBmb3JtczogW3R1cGxlX2V4cF9zaXplMiwgdHVwbGVfZXhwXX07XG5cbmxldCB0dXBsZXMzOiBncm91cCA9IHtpZDogVHVwbGUzRXhwLCBmb3JtczogW3R1cGxlX2V4cF9zaXplMywgdHVwbGVfZXhwXX07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9XG4gIHwgQ29sbGFwc2VkXG4gIHwgU3RlcChpbnQpXG4gIHwgVGVybVxuICB8IEhvbGVMYWJlbFxuICB8IERlbGltXG4gIHwgRW1wdHlIb2xlKGJvb2wsIEhvbGVJbnN0YW5jZS50KVxuICB8IE5vbkVtcHR5SG9sZShFcnJTdGF0dXMuSG9sZVJlYXNvbi50LCBIb2xlSW5zdGFuY2UudClcbiAgfCBWYXJIb2xlKFZhckVyclN0YXR1cy5Ib2xlUmVhc29uLnQsIEhvbGVJbnN0YW5jZS50KVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKEhvbGVJbnN0YW5jZS50KVxuICB8IEludmFsaWQoSG9sZUluc3RhbmNlLnQpXG4gIHwgRmFpbGVkQ2FzdERlbGltXG4gIHwgRmFpbGVkQ2FzdERlY29yYXRpb25cbiAgfCBDYXN0RGVjb3JhdGlvblxuICB8IE9wZXJhdGlvbkVycm9yKEludmFsaWRPcGVyYXRpb25FcnJvci50KVxuICB8IFN0ZXBwYWJsZShpbnQpXG4gIHwgU3RlcHBlZFxuICB8IFN1YnN0aXR1dGVkO1xuIiwidHlwZSBvcmRpbmFsID0gaW50O1xuXG50eXBlIHN0YXR1cyA9XG4gIHwgRW1wdHlcbiAgfCBQYXJ0aWFsXG4gIHwgRnVsbDtcblxudHlwZSBpbnRlcnZhbCA9IChmbG9hdCwgZmxvYXQpO1xuXG50eXBlIHQgPSB7XG4gIHJvb3Q6IG5vZGUsXG4gIC8vIGludGVydmFsIGVuZHBvaW50cyBzcGVjaWZpZWQgYXQgaW5pdGlhbGl6YXRpb25cbiAgdmFsdWVzOiBhcnJheShmbG9hdCksXG4gIC8vIG9yZGluYWxzIG9mIHNvcnRlZCBlbmRwb2ludHNcbiAgb3JkaW5hbHM6IEhhc2h0YmwudChmbG9hdCwgb3JkaW5hbCksXG59XG5hbmQgbm9kZSA9IHtcbiAgLy8gaW52YXJpYW50OiB1bml0IGludGVydmFscyBhcmUgbGVhdmVzXG4gIGludGVydmFsOiAob3JkaW5hbCwgb3JkaW5hbCksXG4gIHNoYXBlOiBub2RlX3NoYXBlLFxuICAvLyBzdGF0dXMgYW5kIGNvdW50IGNvdWxkIGJlIGV4dGVybmFsaXplZCBpbiBhIG1vcmVcbiAgLy8gZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGRhdGEgc3RydWN0dXJlXG4gIC8vIGJ1dCB3ZSBvbmx5IG5lZWQgdGhpcyBkYXRhIHN0cnVjdHVyZSBmb3IgYSBzaW5nbGVcbiAgLy8gcHVycG9zZSBhdCB0aGUgbW9tZW50XG4gIHN0YXR1cyxcbiAgY291bnQ6IGludCxcbn1cbmFuZCBub2RlX3NoYXBlID1cbiAgfCBMZWFmXG4gIHwgQnJhbmNoKExhenkudChub2RlKSwgTGF6eS50KG5vZGUpKTtcblxubGV0IG1rID0gKHZhbHVlczogbGlzdChmbG9hdCkpID0+IHtcbiAgbGV0ICh2YWx1ZXMsIG9yZGluYWxzKSA9IHtcbiAgICBsZXQgc29ydGVkX3ZhbHVlcyA9IExpc3Quc29ydF91bmlxKEZsb2F0LmNvbXBhcmUsIHZhbHVlcyk7XG4gICAgKFxuICAgICAgQXJyYXkub2ZfbGlzdChzb3J0ZWRfdmFsdWVzKSxcbiAgICAgIHNvcnRlZF92YWx1ZXNcbiAgICAgIHw+IExpc3QubWFwaSgoaSwgeSkgPT4gKHksIGkpKVxuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IEhhc2h0Ymwub2Zfc2VxLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHJlYyBta19ub2RlID0gKGE6IG9yZGluYWwsIGI6IG9yZGluYWwpOiBub2RlID0+IHtcbiAgICBsZXQgc2hhcGUgPVxuICAgICAgaWYgKGEgKyAxID09IGIpIHtcbiAgICAgICAgTGVhZjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtaWQgPSAoYSArIGIpIC8gMjtcbiAgICAgICAgQnJhbmNoKGxhenkobWtfbm9kZShhLCBtaWQpKSwgbGF6eShta19ub2RlKG1pZCwgYikpKTtcbiAgICAgIH07XG4gICAge3NoYXBlLCBpbnRlcnZhbDogKGEsIGIpLCBjb3VudDogMCwgc3RhdHVzOiBFbXB0eX07XG4gIH07XG5cbiAge3ZhbHVlcywgb3JkaW5hbHMsIHJvb3Q6IG1rX25vZGUoMCwgQXJyYXkubGVuZ3RoKHZhbHVlcykgLSAxKX07XG59O1xuXG5sZXQgdXBkYXRlX3N0YXR1cyA9IChub2RlOiBub2RlKTogbm9kZSA9PiB7XG4gIGxldCBzdGF0dXMgPVxuICAgIGlmIChub2RlLmNvdW50ID4gMCkge1xuICAgICAgRnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICB8IExlYWYgPT4gRW1wdHlcbiAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgIHN3aXRjaCAoTGF6eS5mb3JjZShsKS5zdGF0dXMsIExhenkuZm9yY2Uocikuc3RhdHVzKSB7XG4gICAgICAgIHwgKEVtcHR5LCBFbXB0eSkgPT4gRW1wdHlcbiAgICAgICAgfCBfID0+IFBhcnRpYWxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB7Li4ubm9kZSwgc3RhdHVzfTtcbn07XG5cbnR5cGUgb3AgPVxuICB8IEluc2VydFxuICB8IERlbGV0ZTtcbmxldCBzdHJpbmdfb2Zfb3AgPVxuICBmdW5cbiAgfCBJbnNlcnQgPT4gXCJpbnNlcnRcIlxuICB8IERlbGV0ZSA9PiBcImRlbGV0ZVwiO1xuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIGZvbGxvd3MgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBTZWN0aW9ucyA4LjMgKyA4LjVcbiAqIG9mIENvbXB1dGF0aW9uYWwgR2VvbWV0cnk6IEFuIEludHJvZHVjdGlvbiBieSBQcmVwYXJhdGEgJiBTaGFtb3MuXG4gKiBTZWN0aW9uIDguMyBkZXNjcmliZXMgdGhlIGdlbmVyYWwgdXNlIG9mIHNlZ21lbnQgdHJlZXMgdG8gY29tcHV0ZVxuICogZmVhdHVyZXMgb2YgYSBjb2xsZWN0aW9uIG9mIHJlY3RhbmdsZXM7IFNlY3Rpb24gOC41IGRlc2NyaWJlcyB0aGVcbiAqIHNwZWNpYWxpemF0aW9uIG9mIHRoYXQgYXBwcm9hY2ggdG8gY29tcHV0ZSB0aGUgY29udG91ciBvZiBhIHVuaW9uXG4gKiBvZiByZWN0YW5nbGVzLiBUaGUgZ2VuZXJhbCBmcmFtZXdvcmsgbGFpZCBvdXQgaW4gOC4zIGlzIHVubmVjZXNzYXJ5XG4gKiBmb3Igb3VyIHB1cnBvc2VzIChzbyBvdXIgaW1wbGVtZW50YXRpb24gY291bGQgYmUgc3RyZWFtbGluZWQpIGJ1dCBJXG4gKiBpbXBsZW1lbnRlZCBpdCBhbnl3YXkgc28gdGhhdCB0aGUgdGV4dCBzZXJ2ZXMgYXMgZG9jdW1lbnRhdGlvbiB0aGF0XG4gKiBjbG9zZWx5IG1hcHMgdG8gb3VyIGNvZGUuXG4gKi9cbmxldCBwZXJmb3JtID0gKG9wLCAoYSwgYik6IGludGVydmFsLCB0cmVlOiB0KTogdCA9PiB7XG4gIGxldCByZWMgZ28gPSAob3AsIChhLCBiKSBhcyBpbnRlcnZhbCwgbm9kZTogbm9kZSk6IG5vZGUgPT4ge1xuICAgIGxldCAoYScsIGInKSA9IG5vZGUuaW50ZXJ2YWw7XG4gICAgbGV0IG5vZGUgPVxuICAgICAgaWYgKGEgPD0gYScgJiYgYicgPD0gYikge1xuICAgICAgICB7XG4gICAgICAgICAgLy8gYWxsb2NhdGUgdG8gdGhpcyBub2RlXG4gICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICBjb3VudDpcbiAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIHwgSW5zZXJ0ID0+IG5vZGUuY291bnQgKyAxXG4gICAgICAgICAgICB8IERlbGV0ZSA9PiBub2RlLmNvdW50IC0gMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS5zaGFwZSkge1xuICAgICAgICB8IExlYWYgPT4gbm9kZVxuICAgICAgICB8IEJyYW5jaChsLCByKSA9PlxuICAgICAgICAgIGxldCBtaWQgPSAoYScgKyBiJykgLyAyO1xuICAgICAgICAgIGxldCBsID0gYSA+PSBtaWQgPyBsIDogKGxhenkoZ28ob3AsIGludGVydmFsLCBMYXp5LmZvcmNlKGwpKSkpO1xuICAgICAgICAgIGxldCByID0gYiA8PSBtaWQgPyByIDogKGxhenkoZ28ob3AsIGludGVydmFsLCBMYXp5LmZvcmNlKHIpKSkpO1xuICAgICAgICAgIHsuLi5ub2RlLCBzaGFwZTogQnJhbmNoKGwsIHIpfTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgdXBkYXRlX3N0YXR1cyhub2RlKTtcbiAgfTtcbiAgc3dpdGNoIChcbiAgICBIYXNodGJsLmZpbmRfb3B0KHRyZWUub3JkaW5hbHMsIGEpLFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYiksXG4gICkge1xuICB8IChOb25lLCBfKVxuICB8IChfLCBOb25lKSA9PlxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgIFwiU2VnbWVudFRyZWUuJXM6IGV4cGVjdGVkIGludGVydmFsIHdpdGggZW5kcG9pbnRzIHNwZWNpZmllZCBhdCBpbml0aWFsaXphdGlvblwiLFxuICAgICAgICBzdHJpbmdfb2Zfb3Aob3ApLFxuICAgICAgKTtcbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KG1zZykpO1xuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PlxuICAgIGxldCBpbnRlcnZhbCA9IGEgPCBiID8gKGEsIGIpIDogKGIsIGEpO1xuICAgIGxldCBuZXdfcm9vdCA9IGdvKG9wLCBpbnRlcnZhbCwgdHJlZS5yb290KTtcbiAgICB7Li4udHJlZSwgcm9vdDogbmV3X3Jvb3R9O1xuICB9O1xufTtcbmxldCBpbnNlcnQgPSBwZXJmb3JtKEluc2VydCk7XG5sZXQgZGVsZXRlID0gcGVyZm9ybShEZWxldGUpO1xuXG4vKipcbiAqIFByZXBhcmF0YSAmIFNoYW1vcyB1c2UgdGhlIHRlcm1pbm9sb2d5IFwiY29udHJpYnV0aW9uXCIgYW5kIHNwZWNpZnlcbiAqIHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaW4gdGhlIHByb2NlZHVyZSBDT05UUiBpbiBTZWN0aW9uIDguNS5cbiAqL1xubGV0IGNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uID0gKChhLCBiKTogaW50ZXJ2YWwsIHRyZWU6IHQpOiBsaXN0KGludGVydmFsKSA9PiB7XG4gIGxldCByZWMgZ28gPVxuICAgICAgICAgICh+c3RhY2s9W10sIChhLCBiKSBhcyBpbnRlcnZhbCwgbm9kZTogbm9kZSlcbiAgICAgICAgICA6IGxpc3QoKG9yZGluYWwsIG9yZGluYWwpKSA9PiB7XG4gICAgbGV0IChhJywgYicpID0gbm9kZS5pbnRlcnZhbDtcbiAgICBzd2l0Y2ggKG5vZGUuc3RhdHVzKSB7XG4gICAgfCBGdWxsID0+IHN0YWNrXG4gICAgfCBFbXB0eSB3aGVuIGEgPD0gYScgJiYgYicgPD0gYiA9PlxuICAgICAgLy8gbWVyZ2UgY29udGludW91cyBzZWdtZW50c1xuICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgfCBbKGEnJywgYicnKSwgLi4ucmVzdF0gd2hlbiBhJyA9PSBiJycgPT4gWyhhJycsIGInKSwgLi4ucmVzdF1cbiAgICAgIHwgXyA9PiBbKGEnLCBiJyksIC4uLnN0YWNrXVxuICAgICAgfVxuICAgIHwgXyA9PlxuICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICB8IExlYWYgPT4gc3RhY2tcbiAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgIGxldCBtaWQgPSAoYScgKyBiJykgLyAyO1xuICAgICAgICBsZXQgc3RhY2sgPSBhID49IG1pZCA/IHN0YWNrIDogZ28ofnN0YWNrLCBpbnRlcnZhbCwgTGF6eS5mb3JjZShsKSk7XG4gICAgICAgIGIgPD0gbWlkID8gc3RhY2sgOiBnbyh+c3RhY2ssIGludGVydmFsLCBMYXp5LmZvcmNlKHIpKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuICBzd2l0Y2ggKFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYSksXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBiKSxcbiAgKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IGZhaWx3aXRoKFwiaW52YWxpZCBhcmd1bWVudFwiKVxuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PlxuICAgIGxldCBpbnRlcnZhbCA9IGEgPCBiID8gKGEsIGIpIDogKGIsIGEpO1xuICAgIGdvKGludGVydmFsLCB0cmVlLnJvb3QpXG4gICAgfD4gTGlzdC5tYXAoKChvcmRpbmFsMSwgb3JkaW5hbDIpKSA9PiB7XG4gICAgICAgICBsZXQgKG8xLCBvMikgPSBhIDwgYiA/IChvcmRpbmFsMSwgb3JkaW5hbDIpIDogKG9yZGluYWwyLCBvcmRpbmFsMSk7XG4gICAgICAgICAodHJlZS52YWx1ZXNbbzFdLCB0cmVlLnZhbHVlc1tvMl0pO1xuICAgICAgIH0pO1xuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbDtcblxubW9kdWxlIFBvaW50ID0ge1xuICB0eXBlIHQgPSB7XG4gICAgeDogZmxvYXQsXG4gICAgeTogZmxvYXQsXG4gIH07XG59O1xuXG5tb2R1bGUgVmVjdG9yID0ge1xuICB0eXBlIHQgPSB7XG4gICAgZHg6IGZsb2F0LFxuICAgIGR5OiBmbG9hdCxcbiAgfTtcbn07XG5cbm1vZHVsZSBSZWN0ID0ge1xuICB0eXBlIHQgPSB7XG4gICAgbWluOiBQb2ludC50LFxuICAgIHdpZHRoOiBmbG9hdCxcbiAgICBoZWlnaHQ6IGZsb2F0LFxuICB9O1xufTtcblxubW9kdWxlIFBhdGggPSB7XG4gIHR5cGUgdCA9IGxpc3QoY21kKVxuICBhbmQgY21kID1cbiAgICB8IFpcbiAgICB8IE0oUG9pbnQudClcbiAgICB8IE1fKFZlY3Rvci50KVxuICAgIHwgTChQb2ludC50KVxuICAgIHwgTF8oVmVjdG9yLnQpXG4gICAgfCBIKHt4OiBmbG9hdH0pXG4gICAgfCBIXyh7ZHg6IGZsb2F0fSlcbiAgICB8IFYoe3k6IGZsb2F0fSlcbiAgICB8IFZfKHtkeTogZmxvYXR9KVxuICAgIHwgQV8oe1xuICAgICAgICByeDogZmxvYXQsXG4gICAgICAgIHJ5OiBmbG9hdCxcbiAgICAgICAgeF9heGlzX3JvdGF0aW9uOiBmbG9hdCxcbiAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGJvb2wsXG4gICAgICAgIHN3ZWVwX2ZsYWc6IGJvb2wsXG4gICAgICAgIGR4OiBmbG9hdCxcbiAgICAgICAgZHk6IGZsb2F0LFxuICAgICAgfSk7XG5cbiAgbGV0IGNtZGZ1ZGdlID0gKH54PTAuLCB+eT0wLiwgYzogY21kKTogY21kID0+IHtcbiAgICBsZXQgKGgsIHYpID0gKHgsIHkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIHwgTSh7eCwgeX0pID0+IE0oe3g6IHggKy4gaCwgeTogeSArLiB2fSlcbiAgICB8IEwoe3gsIHl9KSA9PiBMKHt4OiB4ICsuIGgsIHk6IHkgKy4gdn0pXG4gICAgfCBIKHt4fSkgPT4gSCh7eDogeCArLiBofSlcbiAgICB8IFYoe3l9KSA9PiBWKHt5OiB5ICsuIHZ9KVxuICAgIHwgXyA9PiBjXG4gICAgfTtcbiAgfTtcblxuICBsZXQgbSA9ICh+eCwgfnkpID0+IE0oe3g6IEZsb2F0Lm9mX2ludCh4KSwgeTogRmxvYXQub2ZfaW50KHkpfSk7XG4gIGxldCBsXyA9ICh+ZHgsIH5keSkgPT4gTF8oe2R4OiBGbG9hdC5vZl9pbnQoZHgpLCBkeTogRmxvYXQub2ZfaW50KGR5KX0pO1xuICBsZXQgaCA9ICh+eCkgPT4gSCh7eDogRmxvYXQub2ZfaW50KHgpfSk7XG4gIGxldCBoXyA9ICh+ZHgpID0+IEhfKHtkeDogRmxvYXQub2ZfaW50KGR4KX0pO1xuICBsZXQgdiA9ICh+eSkgPT4gVih7eTogRmxvYXQub2ZfaW50KHkpfSk7XG4gIGxldCB2XyA9ICh+ZHkpID0+IFZfKHtkeTogRmxvYXQub2ZfaW50KGR5KX0pO1xuXG4gIGxldCBzY2FsZV9jbWQgPSAofnNjYWxlX3g9MS4sIH5zY2FsZV95PTEuKSA9PlxuICAgIGZ1blxuICAgIHwgKFogfCBNKF8pIHwgTChfKSB8IEgoXykgfCBWKF8pIHwgQV8oXykpIGFzIGNtZCA9PiBjbWRcbiAgICB8IE1fKHtkeCwgZHl9KSA9PiBNXyh7ZHg6IHNjYWxlX3ggKi4gZHgsIGR5OiBzY2FsZV95ICouIGR5fSlcbiAgICB8IExfKHtkeCwgZHl9KSA9PiBMXyh7ZHg6IHNjYWxlX3ggKi4gZHgsIGR5OiBzY2FsZV95ICouIGR5fSlcbiAgICB8IEhfKHtkeH0pID0+IEhfKHtkeDogc2NhbGVfeCAqLiBkeH0pXG4gICAgfCBWXyh7ZHl9KSA9PiBWXyh7ZHk6IHNjYWxlX3kgKi4gZHl9KTtcblxuICBsZXQgc2NhbGUgPSBzID0+IExpc3QubWFwKHNjYWxlX2NtZCh+c2NhbGVfeD1zLCB+c2NhbGVfeT1zKSk7XG4gIGxldCBzY2FsZV94ID0gcyA9PiBMaXN0Lm1hcChzY2FsZV9jbWQofnNjYWxlX3g9cykpO1xuICBsZXQgc2NhbGVfeSA9IHMgPT4gTGlzdC5tYXAoc2NhbGVfY21kKH5zY2FsZV95PXMpKTtcblxuICBsZXQgcmV2ZXJzZSA9IExpc3QucmV2X21hcChzY2FsZV9jbWQofnNjYWxlX3g9LTEuLCB+c2NhbGVfeT0tMS4pKTtcblxuICBsZXQgdHJhbnNsYXRlX2NtZCA9ICh2OiBWZWN0b3IudCkgPT5cbiAgICBmdW5cbiAgICB8IChaIHwgTV8oXykgfCBMXyhfKSB8IEhfKF8pIHwgVl8oXykgfCBBXyhfKSkgYXMgY21kID0+IGNtZFxuICAgIHwgTSh7eCwgeX0pID0+IE0oe3g6IHggKy4gdi5keCwgeTogeSArLiB2LmR5fSlcbiAgICB8IEwoe3gsIHl9KSA9PiBMKHt4OiB4ICsuIHYuZHgsIHk6IHkgKy4gdi5keX0pXG4gICAgfCBIKHt4fSkgPT4gSCh7eDogeCArLiB2LmR4fSlcbiAgICB8IFYoe3l9KSA9PiBWKHt5OiB5ICsuIHYuZHl9KTtcbiAgbGV0IHRyYW5zbGF0ZSA9IHYgPT4gTGlzdC5tYXAodHJhbnNsYXRlX2NtZCh2KSk7XG5cbiAgbGV0IHN0cmluZ19vZl9mbGFnID1cbiAgICBmdW5cbiAgICB8IGZhbHNlID0+IFwiMFwiXG4gICAgfCB0cnVlID0+IFwiMVwiO1xuXG4gIGxldCBzdHJpbmdfb2ZfY29tbWFuZCA9XG4gICAgZnVuXG4gICAgfCBaID0+IFwiWlwiXG4gICAgfCBNKHt4LCB5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJNICVmICVmXCIsIHgsIHkpXG4gICAgfCBNXyh7ZHgsIGR5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJtICVmICVmXCIsIGR4LCBkeSlcbiAgICB8IEwoe3gsIHl9KSA9PiBQcmludGYuc3ByaW50ZihcIkwgJWYgJWZcIiwgeCwgeSlcbiAgICB8IExfKHtkeCwgZHl9KSA9PiBQcmludGYuc3ByaW50ZihcImwgJWYgJWZcIiwgZHgsIGR5KVxuICAgIHwgSCh7eH0pID0+IFByaW50Zi5zcHJpbnRmKFwiSCAlZlwiLCB4KVxuICAgIHwgSF8oe2R4fSkgPT4gUHJpbnRmLnNwcmludGYoXCJoICVmXCIsIGR4KVxuICAgIHwgVih7eX0pID0+IFByaW50Zi5zcHJpbnRmKFwiViAlZlwiLCB5KVxuICAgIHwgVl8oe2R5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJ2ICVmXCIsIGR5KVxuICAgIHwgQV8oe3J4LCByeSwgeF9heGlzX3JvdGF0aW9uLCBsYXJnZV9hcmNfZmxhZywgc3dlZXBfZmxhZywgZHgsIGR5fSkgPT5cbiAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICBcImEgJWYgJWYgJWYgJXMgJXMgJWYgJWZcIixcbiAgICAgICAgcngsXG4gICAgICAgIHJ5LFxuICAgICAgICB4X2F4aXNfcm90YXRpb24sXG4gICAgICAgIHN0cmluZ19vZl9mbGFnKGxhcmdlX2FyY19mbGFnKSxcbiAgICAgICAgc3RyaW5nX29mX2ZsYWcoc3dlZXBfZmxhZyksXG4gICAgICAgIGR4LFxuICAgICAgICBkeSxcbiAgICAgICk7XG5cbiAgbGV0IHZpZXcgPSAofmF0dHJzOiBBdHRycy50LCBwYXRoOiB0KTogTm9kZS50ID0+IHtcbiAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZShMaXN0Lmxlbmd0aChwYXRoKSAqIDIwKTtcbiAgICBwYXRoXG4gICAgfD4gTGlzdC5pdGVyKGNtZCA9PiB7XG4gICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhidWZmZXIsIHN0cmluZ19vZl9jb21tYW5kKGNtZCkpO1xuICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcoYnVmZmVyLCBcIiBcIik7XG4gICAgICAgfSk7XG4gICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgXCJwYXRoXCIsXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtBdHRyLmNyZWF0ZShcImRcIiwgQnVmZmVyLmNvbnRlbnRzKGJ1ZmZlcikpLCAuLi5hdHRyc10pLFxuICAgICAgW10sXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBPcnRob2dvbmFsUG9seWdvbiA9IHtcbiAgdHlwZSB0ID0gUGF0aC50O1xuXG4gIHR5cGUgbGlua2VkX2VkZ2UgPSB7XG4gICAgc3JjOiBQb2ludC50LFxuICAgIGRzdDogUG9pbnQudCxcbiAgICBtdXRhYmxlIG5leHQ6IFtAc2V4cC5vcGFxdWVdIG9wdGlvbihsaW5rZWRfZWRnZSksXG4gIH07XG5cbiAgbGV0IGxpbmtlZF9lZGdlX2VxID0gKGUxLCBlMikgPT4gZTEuc3JjID09IGUyLnNyYyAmJiBlMS5kc3QgPT0gZTIuZHN0O1xuXG4gIGxldCBjbWRfb2ZfbGlua2VkX2VkZ2UgPSAoZWRnZSk6IFBhdGguY21kID0+IHtcbiAgICBsZXQgc3JjID0gZWRnZS5zcmM7XG4gICAgbGV0IGRzdCA9IGVkZ2UuZHN0O1xuICAgIHNyYy54ID09IGRzdC54ID8gVl8oe2R5OiBkc3QueSAtLiBzcmMueX0pIDogSF8oe2R4OiBkc3QueCAtLiBzcmMueH0pO1xuICB9O1xuXG4gIGxldCByb3VuZF9jb3JuZXJzID0gKChyeDogZmxvYXQsIHJ5OiBmbG9hdCksIHBhdGg6IFBhdGgudCk6IFBhdGgudCA9PiB7XG4gICAgLy8gQ29ybmVyIHJvdW5kaW5nIGN1dHMgaW50byB0aGUgbGVuZ3RocyBvZiB0aGUgZW50ZXJpbmcgYW5kXG4gICAgLy8gZXhpdGluZyBlZGdlcy4gRmluZCB0aGUgbWF4aW11bSAocHJvcG9ydGlvbmFsbHkgc2NhbGVkKVxuICAgIC8vIHJhZGlpIHBvc3NpYmxlIGdpdmVuIGxlbmd0aHMgb2YgZW50ZXJpbmcgYW5kIGV4aXRpbmcgZWRnZXMuXG4gICAgbGV0IG1heF9yYWRpaSA9XG4gICAgICAgICgocng6IGZsb2F0LCByeTogZmxvYXQpLCAoZHg6IGZsb2F0LCBkeTogZmxvYXQpKTogKGZsb2F0LCBmbG9hdCkgPT4ge1xuICAgICAgbGV0IHJ4X21pbiA9IG1pbihyeCwgRmxvYXQuYWJzKGR4KSk7XG4gICAgICBsZXQgcnlfbWluID0gbWluKHJ5LCBGbG9hdC5hYnMoZHkpKTtcbiAgICAgIHJ5X21pbiAqLiByeCA+PSByeF9taW4gKi4gcnlcbiAgICAgICAgPyAocnhfbWluLCByeF9taW4gKi4gcnkgLy4gcngpIDogKHJ5X21pbiAqLiByeCAvLiByeSwgcnlfbWluKTtcbiAgICB9O1xuXG4gICAgcGF0aFxuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IFBhdGguSF8oe2R4fSkgPT4gUGF0aC5bSF8oe2R4OiBkeCAqLiAwLjV9KSwgSF8oe2R4OiBkeCAqLiAwLjV9KV1cbiAgICAgICAgIHwgVl8oe2R5fSkgPT4gW1ZfKHtkeTogZHkgKi4gMC41fSksIFZfKHtkeTogZHkgKi4gMC41fSldXG4gICAgICAgICB8IGNtZCA9PiBbY21kXSxcbiAgICAgICApXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdFV0aWwucm90YXRlXG4gICAgfD4gTGlzdFV0aWwuZGlzam9pbnRfcGFpcnNcbiAgICB8PiBMaXN0Lm1hcCgoKGNtZDE6IFBhdGguY21kLCBjbWQyOiBQYXRoLmNtZCkpID0+IHtcbiAgICAgICAgIHN3aXRjaCAoY21kMSwgY21kMikge1xuICAgICAgICAgfCAoSF8oe2R4fSksIFZfKHtkeX0pKSA9PlxuICAgICAgICAgICBsZXQgKHJ4LCByeSkgPSBtYXhfcmFkaWkoKHJ4LCByeSksIChkeCwgZHkpKTtcbiAgICAgICAgICAgbGV0IGNsb2Nrd2lzZSA9IEZsb2F0LnNpZ25fYml0KGR4KSA9PSBGbG9hdC5zaWduX2JpdChkeSk7XG4gICAgICAgICAgIFBhdGguW1xuICAgICAgICAgICAgIEhfKHtkeDogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeCkgLS4gcngsIGR4KX0pLFxuICAgICAgICAgICAgIEFfKHtcbiAgICAgICAgICAgICAgIHJ4LFxuICAgICAgICAgICAgICAgcnksXG4gICAgICAgICAgICAgICB4X2F4aXNfcm90YXRpb246IDAuLFxuICAgICAgICAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgc3dlZXBfZmxhZzogY2xvY2t3aXNlLFxuICAgICAgICAgICAgICAgZHg6IEZsb2F0LmNvcHlfc2lnbihyeCwgZHgpLFxuICAgICAgICAgICAgICAgZHk6IEZsb2F0LmNvcHlfc2lnbihyeSwgZHkpLFxuICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgIFZfKHtkeTogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeSkgLS4gcnksIGR5KX0pLFxuICAgICAgICAgICBdO1xuICAgICAgICAgfCAoVl8oe2R5fSksIEhfKHtkeH0pKSA9PlxuICAgICAgICAgICBsZXQgKHJ4LCByeSkgPSBtYXhfcmFkaWkoKHJ4LCByeSksIChkeCwgZHkpKTtcbiAgICAgICAgICAgbGV0IGNsb2Nrd2lzZSA9IEZsb2F0LnNpZ25fYml0KGR5KSAhPSBGbG9hdC5zaWduX2JpdChkeCk7XG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBWXyh7ZHk6IEZsb2F0LmNvcHlfc2lnbihGbG9hdC5hYnMoZHkpIC0uIHJ5LCBkeSl9KSxcbiAgICAgICAgICAgICBBXyh7XG4gICAgICAgICAgICAgICByeCxcbiAgICAgICAgICAgICAgIHJ5LFxuICAgICAgICAgICAgICAgeF9heGlzX3JvdGF0aW9uOiAwLixcbiAgICAgICAgICAgICAgIGxhcmdlX2FyY19mbGFnOiBmYWxzZSxcbiAgICAgICAgICAgICAgIHN3ZWVwX2ZsYWc6IGNsb2Nrd2lzZSxcbiAgICAgICAgICAgICAgIGR4OiBGbG9hdC5jb3B5X3NpZ24ocngsIGR4KSxcbiAgICAgICAgICAgICAgIGR5OiBGbG9hdC5jb3B5X3NpZ24ocnksIGR5KSxcbiAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICBIXyh7ZHg6IEZsb2F0LmNvcHlfc2lnbihGbG9hdC5hYnMoZHgpIC0uIHJ4LCBkeCl9KSxcbiAgICAgICAgICAgXTtcbiAgICAgICAgIHwgXyA9PiBbY21kMSwgY21kMl1cbiAgICAgICAgIH1cbiAgICAgICB9KVxuICAgIHw+IExpc3QuZmxhdHRlbjtcbiAgfTtcblxuICBsZXQgaXNfbGVmdF9zaWRlID0gKGVkZ2U6IGxpbmtlZF9lZGdlKTogYm9vbCA9PiB7XG4gICAgZWRnZS5zcmMueSA+IGVkZ2UuZHN0Lnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1lcmdlIGNvaW5jaWRpbmcgdmVydGljYWwgZWRnZXMgdGhhdCBwb2ludCBpbiB0aGUgc2FtZSBkaXJlY3Rpb24uXG4gICAqL1xuICBsZXQgbWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlcyA9XG4gICAgICAoZWRnZXM6IGxpc3QobGlua2VkX2VkZ2UpKTogbGlzdChsaW5rZWRfZWRnZSkgPT4ge1xuICAgIC8vIHRoZXJlIG1heSBiZSBhIGNsZWFuZXIgKyBtb3JlIGVmZmljaWVudCBtZXRob2QgZm9yIHRoaXMgcGFzc1xuICAgIC8vIGJ1dCBnb29kIGVub3VnaCBmb3Igbm93XG4gICAgbGV0IChsZWZ0X2VkZ2VzLCByaWdodF9lZGdlcykgPSBMaXN0LnBhcnRpdGlvbihpc19sZWZ0X3NpZGUsIGVkZ2VzKTtcbiAgICBsZXQgbWVyZ2VkX2xlZnRfZWRnZXMgPVxuICAgICAgbGVmdF9lZGdlc1xuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAoLTEpICogRmxvYXQuY29tcGFyZSh2MS5zcmMueSwgdjIuc3JjLnkpO1xuICAgICAgICAgICB9XG4gICAgICAgICApXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHN0YWNrLCB2KSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoc3RhY2spIHtcbiAgICAgICAgICAgICB8IFtdID0+IFt2XVxuICAgICAgICAgICAgIHwgW2hkLCAuLi50bF0gYXMgc3RhY2sgPT5cbiAgICAgICAgICAgICAgIGlmICh2LnNyYy54ID09IGhkLmRzdC54ICYmIHYuc3JjLnkgPj0gaGQuZHN0LnkpIHtcbiAgICAgICAgICAgICAgICAgW3suLi5oZCwgZHN0OiB2LmRzdH0sIC4uLnRsXTtcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgIFt2LCAuLi5zdGFja107XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgW10sXG4gICAgICAgICApO1xuICAgIGxldCBtZXJnZWRfcmlnaHRfZWRnZXMgPVxuICAgICAgcmlnaHRfZWRnZXNcbiAgICAgIHw+IExpc3Quc29ydCgodjEsIHYyKSA9PlxuICAgICAgICAgICBpZiAodjEuc3JjLnggPCB2Mi5zcmMueCkge1xuICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgIH0gZWxzZSBpZiAodjEuc3JjLnggPiB2Mi5zcmMueCkge1xuICAgICAgICAgICAgIDE7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgRmxvYXQuY29tcGFyZSh2MS5zcmMueSwgdjIuc3JjLnkpO1xuICAgICAgICAgICB9XG4gICAgICAgICApXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHN0YWNrLCB2KSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoc3RhY2spIHtcbiAgICAgICAgICAgICB8IFtdID0+IFt2XVxuICAgICAgICAgICAgIHwgW2hkLCAuLi50bF0gYXMgc3RhY2sgPT5cbiAgICAgICAgICAgICAgIGlmICh2LnNyYy54ID09IGhkLmRzdC54ICYmIHYuc3JjLnkgPD0gaGQuZHN0LnkpIHtcbiAgICAgICAgICAgICAgICAgW3suLi5oZCwgZHN0OiB2LmRzdH0sIC4uLnRsXTtcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgIFt2LCAuLi5zdGFja107XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgW10sXG4gICAgICAgICApO1xuICAgIG1lcmdlZF9sZWZ0X2VkZ2VzIEAgbWVyZ2VkX3JpZ2h0X2VkZ2VzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBgdmVydGljYWxfY29udG91cl9lZGdlcyhycylgIGNvbXB1dGUgdGhlIHZlcnRpY2FsIGVkZ2VzIG9mIHRoZVxuICAgKiBjb250b3VyIG9mIHRoZSB1bmlvbiBvZiByZWN0YW5nbGVzIGByc2BcbiAgICovXG4gIGxldCB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzID0gKHJlY3RzOiBsaXN0KFJlY3QudCkpOiBsaXN0KGxpbmtlZF9lZGdlKSA9PiB7XG4gICAgbGV0IHNvcnRlZF92ZXJ0aWNhbF9zaWRlczogbGlzdChsaW5rZWRfZWRnZSkgPVxuICAgICAgcmVjdHNcbiAgICAgIHw+IExpc3QubWFwKChSZWN0LnttaW4sIHdpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgICAgIGxldCBtYXhfeCA9IG1pbi54ICsuIHdpZHRoO1xuICAgICAgICAgICBsZXQgbWF4X3kgPSBtaW4ueSArLiBoZWlnaHQ7XG4gICAgICAgICAgIGxldCBtYXggPSBQb2ludC57eDogbWF4X3gsIHk6IG1heF95fTtcbiAgICAgICAgICAgbGV0IG1pbl9tYXggPSBQb2ludC57eDogbWluLngsIHk6IG1heF95fTtcbiAgICAgICAgICAgbGV0IG1heF9taW4gPSBQb2ludC57eDogbWF4X3gsIHk6IG1pbi55fTtcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIC8vIGxlZnQgc2lkZXMgcG9pbnQgaW4gbmVnYXRpdmUgZGlyZWN0aW9uXG4gICAgICAgICAgICAge3NyYzogbWluX21heCwgZHN0OiBtaW4sIG5leHQ6IE5vbmV9LFxuICAgICAgICAgICAgIC8vIHJpZ2h0IHNpZGVzIHBvaW50IGluIHBvc2l0aXZlIGRpcmVjdGlvblxuICAgICAgICAgICAgIHtzcmM6IG1heF9taW4sIGRzdDogbWF4LCBuZXh0OiBOb25lfSxcbiAgICAgICAgICAgXTtcbiAgICAgICAgIH0pXG4gICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgIHw+IExpc3Quc29ydCgodjEsIHYyKSA9PlxuICAgICAgICAgICBpZiAodjEuc3JjLnggPCB2Mi5zcmMueCkge1xuICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgIH0gZWxzZSBpZiAodjEuc3JjLnggPiB2Mi5zcmMueCkge1xuICAgICAgICAgICAgIDE7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgLy8gZm9yIHZlcnRpY2FsIHNpZGVzIG9mIGVxdWFsIGFic2Npc3NhLFxuICAgICAgICAgICAgIC8vIG5lZWQgdG8gc29ydCBsZWZ0IHNpZGVzIGJlZm9yZSByaWdodCBzaWRlc1xuICAgICAgICAgICAgIGxldCBpc19sZWZ0MSA9IGlzX2xlZnRfc2lkZSh2MSk7XG4gICAgICAgICAgICAgbGV0IGlzX2xlZnQyID0gaXNfbGVmdF9zaWRlKHYyKTtcbiAgICAgICAgICAgICBpZiAoaXNfbGVmdDEgJiYgIWlzX2xlZnQyKSB7XG4gICAgICAgICAgICAgICAoLTEpO1xuICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzX2xlZnQxICYmIGlzX2xlZnQyKSB7XG4gICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAwO1xuICAgICAgICAgICAgIH07XG4gICAgICAgICAgIH1cbiAgICAgICAgICk7XG5cbiAgICBsZXQgc2VnbWVudF90cmVlID1cbiAgICAgIHJlY3RzXG4gICAgICB8PiBMaXN0Lm1hcCgoUmVjdC57bWluLCBoZWlnaHQsIF99KSA9PiBbbWluLnksIG1pbi55ICsuIGhlaWdodF0pXG4gICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgIHw+IFNlZ21lbnRUcmVlLm1rO1xuXG4gICAgc29ydGVkX3ZlcnRpY2FsX3NpZGVzXG4gICAgLy8gcGxhbmUtc3dlZXBcbiAgICB8PiBMaXN0LmZvbGRfbGVmdF9tYXAoXG4gICAgICAgICAodHJlZSwgdikgPT4ge1xuICAgICAgICAgICBsZXQgeCA9IHYuc3JjLng7XG4gICAgICAgICAgIGxldCB5cyA9ICh2LnNyYy55LCB2LmRzdC55KTtcbiAgICAgICAgICAgbGV0IG1rX2NvbnRvdXJfZWRnZSA9ICgoeV9zcmMsIHlfZHN0KSkgPT4ge1xuICAgICAgICAgICAgIGxldCBzcmMgPSBQb2ludC57eCwgeTogeV9zcmN9O1xuICAgICAgICAgICAgIGxldCBkc3QgPSBQb2ludC57eCwgeTogeV9kc3R9O1xuICAgICAgICAgICAgIHtzcmMsIGRzdCwgbmV4dDogTm9uZX07XG4gICAgICAgICAgIH07XG4gICAgICAgICAgIGlmIChpc19sZWZ0X3NpZGUodikpIHtcbiAgICAgICAgICAgICBsZXQgbmV3X2NvbnRvdXJfZWRnZXMgPVxuICAgICAgICAgICAgICAgU2VnbWVudFRyZWUuY29tcGxlbWVudF9pbnRlcnNlY3Rpb24oeXMsIHRyZWUpXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcChta19jb250b3VyX2VkZ2UpO1xuICAgICAgICAgICAgIGxldCB1cGRhdGVkX3RyZWUgPSBTZWdtZW50VHJlZS5pbnNlcnQoeXMsIHRyZWUpO1xuICAgICAgICAgICAgICh1cGRhdGVkX3RyZWUsIG5ld19jb250b3VyX2VkZ2VzKTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBsZXQgdXBkYXRlZF90cmVlID0gU2VnbWVudFRyZWUuZGVsZXRlKHlzLCB0cmVlKTtcbiAgICAgICAgICAgICBsZXQgbmV3X2NvbnRvdXJfZWRnZXMgPVxuICAgICAgICAgICAgICAgU2VnbWVudFRyZWUuY29tcGxlbWVudF9pbnRlcnNlY3Rpb24oeXMsIHVwZGF0ZWRfdHJlZSlcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwKG1rX2NvbnRvdXJfZWRnZSk7XG4gICAgICAgICAgICAgKHVwZGF0ZWRfdHJlZSwgbmV3X2NvbnRvdXJfZWRnZXMpO1xuICAgICAgICAgICB9O1xuICAgICAgICAgfSxcbiAgICAgICAgIHNlZ21lbnRfdHJlZSxcbiAgICAgICApXG4gICAgfD4gc25kXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBleHBsaWNhdGVkIGJ5IFByZXBhcmF0YSAmIFNoYW1vc1xuICAgIC8vIGJ1dCBpdHMgYWJzZW5jZSBjYXVzZXMgYnVnc1xuICAgIHw+IG1lcmdlX2NvaW5jaWRpbmdfdmVydGljYWxfZWRnZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDguNSBvZlxuICAgKiBDb21wdXRhdGlvbmFsIEdlb21ldHJ5OiBBbiBJbnRyb2R1Y3Rpb24gYnkgUHJlcGFyYXRhXG4gICAqICYgU2hhbW9zLiBJZiB5b3UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhbGdvcml0aG0gaW5cbiAgICogZGV0YWlsLCB5b3Ugc2hvdWxkIGZpcnN0IHJlYWQgU2VjdGlvbnMgMS4yLjMuMSArIDguMy5cbiAgICovXG4gIGxldCBtayA9ICh+Y29ybmVyX3JhZGlpOiAoZmxvYXQsIGZsb2F0KSwgcmVjdHM6IGxpc3QoUmVjdC50KSk6IHQgPT4ge1xuICAgIGFzc2VydChyZWN0cyAhPSBbXSk7XG5cbiAgICBsZXQgdmVydGljYWxfY29udG91cl9lZGdlcyA9IHZlcnRpY2FsX2NvbnRvdXJfZWRnZXMocmVjdHMpO1xuXG4gICAgLy8gam9pbiB2ZXJ0aWNhbCBjb250b3VyIGVkZ2VzIHZpYSBob3Jpem9udGFsIGVkZ2VzXG4gICAgdmVydGljYWxfY29udG91cl9lZGdlc1xuICAgIHw+IExpc3QubWFwKHYgPT4gWyhmYWxzZSwgdiksICh0cnVlLCB2KV0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgLy8gc29ydCBlbmRwb2ludHMgYnkgeSBjb29yZGluYXRlLCB0aGVuIHggY29vcmRpbmF0ZVxuICAgIHw+IExpc3Quc29ydCgoKGlzX3NyYzEsIHYxKSwgKGlzX3NyYzIsIHYyKSkgPT4ge1xuICAgICAgICAgbGV0IHB0MSA9IGlzX3NyYzEgPyB2MS5zcmMgOiB2MS5kc3Q7XG4gICAgICAgICBsZXQgcHQyID0gaXNfc3JjMiA/IHYyLnNyYyA6IHYyLmRzdDtcbiAgICAgICAgIGlmIChwdDEueSA8IHB0Mi55KSB7XG4gICAgICAgICAgICgtMSk7XG4gICAgICAgICB9IGVsc2UgaWYgKHB0MS55ID4gcHQyLnkpIHtcbiAgICAgICAgICAgMTtcbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgIEZsb2F0LmNvbXBhcmUocHQxLngsIHB0Mi54KTtcbiAgICAgICAgIH07XG4gICAgICAgfSlcbiAgICB8PiBMaXN0VXRpbC5kaXNqb2ludF9wYWlyc1xuICAgIC8vIGNvbnNlY3V0aXZlIHBhaXJzIG9mIGVuZHBvaW50cyBmb3JtIGhvcml6b250YWwgZWRnZXNcbiAgICB8PiBMaXN0Lml0ZXIoKCgoaXNfc3JjMSwgdjEpLCAoaXNfc3JjMiwgdjIpKSkgPT4ge1xuICAgICAgICAgbGV0IHB0MSA9IGlzX3NyYzEgPyB2MS5zcmMgOiB2MS5kc3Q7XG4gICAgICAgICBsZXQgcHQyID0gaXNfc3JjMiA/IHYyLnNyYyA6IHYyLmRzdDtcbiAgICAgICAgIGFzc2VydChwdDEueSA9PSBwdDIueSk7XG4gICAgICAgICBsZXQgeSA9IHB0MS55O1xuXG4gICAgICAgICBsZXQgKHhfc3JjLCB4X2RzdCwgcHJldiwgbmV4dCkgPVxuICAgICAgICAgICBpc19zcmMxID8gKHB0Mi54LCBwdDEueCwgdjIsIHYxKSA6IChwdDEueCwgcHQyLngsIHYxLCB2Mik7XG5cbiAgICAgICAgIGxldCBoID0ge1xuICAgICAgICAgICBsZXQgc3JjID0gUG9pbnQue3g6IHhfc3JjLCB5fTtcbiAgICAgICAgICAgbGV0IGRzdCA9IFBvaW50Lnt4OiB4X2RzdCwgeX07XG4gICAgICAgICAgIHtzcmMsIGRzdCwgbmV4dDogU29tZShuZXh0KX07XG4gICAgICAgICB9O1xuICAgICAgICAgcHJldi5uZXh0ID0gU29tZShoKTtcbiAgICAgICB9KTtcblxuICAgIGxldCBzdGFydCA9IExpc3QuaGQodmVydGljYWxfY29udG91cl9lZGdlcyk7XG4gICAgbGV0IHJlYyBidWlsZF9wYXRoID0gKGVkZ2U6IGxpbmtlZF9lZGdlKTogUGF0aC50ID0+IHtcbiAgICAgIHN3aXRjaCAoZWRnZS5uZXh0KSB7XG4gICAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJleHBlY3RlZCBzaW5nbGUgY3ljbGVcIilcbiAgICAgIHwgU29tZShuZXh0KSA9PlxuICAgICAgICBsaW5rZWRfZWRnZV9lcShuZXh0LCBzdGFydClcbiAgICAgICAgICA/IFtdIDogW2NtZF9vZl9saW5rZWRfZWRnZShuZXh0KSwgLi4uYnVpbGRfcGF0aChuZXh0KV1cbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgcGF0aCA9IFtjbWRfb2ZfbGlua2VkX2VkZ2Uoc3RhcnQpLCAuLi5idWlsZF9wYXRoKHN0YXJ0KV07XG5cbiAgICBwYXRoXG4gICAgfD4gcm91bmRfY29ybmVycyhjb3JuZXJfcmFkaWkpXG4gICAgfD4gTGlzdC5jb25zKFxuICAgICAgICAgUGF0aC5NKHtcbiAgICAgICAgICAgeDogKHN0YXJ0LnNyYy54ICsuIHN0YXJ0LmRzdC54KSAqLiAwLjUsXG4gICAgICAgICAgIHk6IChzdGFydC5zcmMueSArLiBzdGFydC5kc3QueSkgKi4gMC41LFxuICAgICAgICAgfSksXG4gICAgICAgKTtcbiAgfTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbm1vZHVsZSBNZWFzdXJlZFBvc2l0aW9uID0gUHJldHR5Lk1lYXN1cmVkUG9zaXRpb247XG5tb2R1bGUgTWVhc3VyZWRMYXlvdXQgPSBQcmV0dHkuTWVhc3VyZWRMYXlvdXQ7XG5cbnR5cGUgY29udGFpbmVyX3R5cGUgPVxuICB8IFN2Z1xuICB8IERpdjtcblxuLyoqXG4gKiBBIGJ1ZmZlcmVkIGNvbnRhaW5lciBmb3IgU1ZHIGVsZW1lbnRzIHNvIHRoYXQgc3Ryb2tlcyBhbG9uZ1xuICogdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgZWxlbWVudHMgZG8gbm90IGdldCBjbGlwcGVkIGJ5IHRoZVxuICogdmlld0JveCBib3VuZGFyaWVzXG4gKi9cbmxldCBjb250YWluZXIgPVxuICAgIChcbiAgICAgIH5jb250YWluZXJfdHlwZTogY29udGFpbmVyX3R5cGUsXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm9yaWdpbjogTWVhc3VyZWRQb3NpdGlvbi50LFxuICAgICAgfmhlaWdodDogaW50LFxuICAgICAgfndpZHRoOiBpbnQsXG4gICAgICB+Y2xzOiBzdHJpbmcsXG4gICAgICBjb250ZW50czogbGlzdChOb2RlLnQpLFxuICAgIClcbiAgICA6IE5vZGUudCA9PiB7XG4gIGxldCBidWZmZXJlZF9oZWlnaHQgPSBoZWlnaHQ7XG4gIGxldCBidWZmZXJlZF93aWR0aCA9IHdpZHRoO1xuXG4gIGxldCBidWZmZXJlZF9oZWlnaHRfcHggPVxuICAgIEZsb2F0Lm9mX2ludChidWZmZXJlZF9oZWlnaHQpICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0O1xuICBsZXQgYnVmZmVyZWRfd2lkdGhfcHggPVxuICAgIEZsb2F0Lm9mX2ludChidWZmZXJlZF93aWR0aCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aDtcblxuICBsZXQgY29udGFpbmVyX29yaWdpbl94ID1cbiAgICBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdykgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQ7XG4gIGxldCBjb250YWluZXJfb3JpZ2luX3kgPSBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aDtcblxuICBsZXQgaW5uZXIgPVxuICAgIHN3aXRjaCAoY29udGFpbmVyX3R5cGUpIHtcbiAgICB8IERpdiA9PlxuICAgICAgTm9kZS5kaXYoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcImRlY29yYXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFwiJXMtY29udGFpbmVyXCIsIGNscyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFwid2lkdGg6ICVmcHg7IGhlaWdodDogJWZweDtcIixcbiAgICAgICAgICAgICAgICBidWZmZXJlZF93aWR0aF9weCxcbiAgICAgICAgICAgICAgICBidWZmZXJlZF9oZWlnaHRfcHgsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICBjb250ZW50cyxcbiAgICAgIClcbiAgICB8IFN2ZyA9PlxuICAgICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgICBcInN2Z1wiLFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtjbHNdKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgICAgICBcInZpZXdCb3hcIixcbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXCIwIDAgJWQgJWRcIiwgYnVmZmVyZWRfd2lkdGgsIGJ1ZmZlcmVkX2hlaWdodCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJ3aWR0aFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgYnVmZmVyZWRfd2lkdGhfcHgpKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgYnVmZmVyZWRfaGVpZ2h0X3B4KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBjb250ZW50cyxcbiAgICAgIClcbiAgICB9O1xuICBOb2RlLmRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgXCJkZWNvcmF0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFwiJXMtY29udGFpbmVyXCIsIGNscyksXG4gICAgICAgIF0pLFxuICAgICAgICBBdHRyLmNyZWF0ZShcbiAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICBcInRvcDogY2FsYyglZnB4KTsgbGVmdDogJWZweDtcIixcbiAgICAgICAgICAgIGNvbnRhaW5lcl9vcmlnaW5feCxcbiAgICAgICAgICAgIGNvbnRhaW5lcl9vcmlnaW5feSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgW2lubmVyXSxcbiAgKTtcbn07XG5cbmxldCBjb3JuZXJfcmFkaWkgPSAoZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50KSA9PiB7XG4gIGxldCByID0gMi41O1xuICAociAvLiBmb250X21ldHJpY3MuY29sX3dpZHRoLCByIC8uIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0KTtcbn07XG5cbmxldCByZWN0cyA9XG4gICAgKFxuICAgICAgfmluZGVudD0wLFxuICAgICAgfnZ0cmltPTAuMCxcbiAgICAgIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICBtOiBNZWFzdXJlZExheW91dC50KF8pLFxuICAgIClcbiAgICA6IGxpc3QoU3ZnVXRpbC5SZWN0LnQpID0+IHtcbiAgbGV0IG1rX3JlY3QgPVxuICAgICAgKFxuICAgICAgICB+aXNfZmlyc3Q9ZmFsc2UsXG4gICAgICAgIH5pc19sYXN0PWZhbHNlLFxuICAgICAgICBzdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LFxuICAgICAgICBib3g6IE1lYXN1cmVkTGF5b3V0LmJveCxcbiAgICAgICkgPT5cbiAgICBTdmdVdGlsLlJlY3Que1xuICAgICAgbWluOiB7XG4gICAgICAgIHg6IEZsb2F0Lm9mX2ludChzdGFydC5jb2wpLFxuICAgICAgICB5OiBGbG9hdC5vZl9pbnQoc3RhcnQucm93KSArLiAoaXNfZmlyc3QgPyB2dHJpbSA6IDAuMCksXG4gICAgICB9LFxuICAgICAgd2lkdGg6IEZsb2F0Lm9mX2ludChib3gud2lkdGgpLFxuICAgICAgaGVpZ2h0OlxuICAgICAgICBGbG9hdC5vZl9pbnQoYm94LmhlaWdodClcbiAgICAgICAgLS4gKGlzX2ZpcnN0ID8gdnRyaW0gOiAwLjApXG4gICAgICAgIC0uIChpc19sYXN0ID8gdnRyaW0gOiAwLjApLFxuICAgIH07XG4gIGxldCBuID0gTGlzdC5sZW5ndGgobS5tZXRyaWNzKTtcbiAgbS5tZXRyaWNzXG4gIHw+IExpc3QubWFwaSgoaSwgYm94KSA9PiAoaSwgYm94KSlcbiAgfD4gTGlzdC5mb2xkX2xlZnRfbWFwKFxuICAgICAgIChzdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LCAoaSwgYm94OiBNZWFzdXJlZExheW91dC5ib3gpKSA9PlxuICAgICAgICAgKFxuICAgICAgICAgICB7cm93OiBzdGFydC5yb3cgKyBib3guaGVpZ2h0LCBjb2w6IGluZGVudH0sXG4gICAgICAgICAgIG1rX3JlY3QofmlzX2ZpcnN0PWkgPT0gMCwgfmlzX2xhc3Q9aSA9PSBuIC0gMSwgc3RhcnQsIGJveCksXG4gICAgICAgICApLFxuICAgICAgIHN0YXJ0LFxuICAgICApXG4gIHw+IHNuZDtcbn07XG5cbm1vZHVsZSBFcnJIb2xlID0ge1xuICBsZXQgdmlldyA9XG4gICAgICAoXG4gICAgICAgIH52dHJpbT0wLixcbiAgICAgICAgfmNvcm5lcl9yYWRpaTogKGZsb2F0LCBmbG9hdCksXG4gICAgICAgIChvZmZzZXQsIHN1YmplY3QpOiBNZWFzdXJlZExheW91dC53aXRoX29mZnNldChfKSxcbiAgICAgIClcbiAgICAgIDogTm9kZS50ID0+XG4gICAgc3ViamVjdFxuICAgIHw+IHJlY3RzKH52dHJpbSwge3JvdzogMCwgY29sOiBvZmZzZXR9KVxuICAgIHw+IFN2Z1V0aWwuT3J0aG9nb25hbFBvbHlnb24ubWsofmNvcm5lcl9yYWRpaSlcbiAgICB8PiBTdmdVdGlsLlBhdGgudmlldyhcbiAgICAgICAgIH5hdHRycz1cbiAgICAgICAgICAgQXR0ci5bXG4gICAgICAgICAgICAgY2xhc3NlcyhbXCJlcnItaG9sZVwiXSksXG4gICAgICAgICAgICAgY3JlYXRlKFwidmVjdG9yLWVmZmVjdFwiLCBcIm5vbi1zY2FsaW5nLXN0cm9rZVwiKSxcbiAgICAgICAgICAgXSxcbiAgICAgICApO1xufTtcblxubW9kdWxlIFZhckVyckhvbGUgPSB7XG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfnZ0cmltPTAuLFxuICAgICAgICB+Y29ybmVyX3JhZGlpOiAoZmxvYXQsIGZsb2F0KSxcbiAgICAgICAgKG9mZnNldCwgc3ViamVjdCk6IE1lYXN1cmVkTGF5b3V0LndpdGhfb2Zmc2V0KF8pLFxuICAgICAgKVxuICAgICAgOiBOb2RlLnQgPT5cbiAgICBzdWJqZWN0XG4gICAgfD4gcmVjdHMofnZ0cmltLCB7cm93OiAwLCBjb2w6IG9mZnNldH0pXG4gICAgfD4gU3ZnVXRpbC5PcnRob2dvbmFsUG9seWdvbi5tayh+Y29ybmVyX3JhZGlpKVxuICAgIHw+IFN2Z1V0aWwuUGF0aC52aWV3KFxuICAgICAgICAgfmF0dHJzPVxuICAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgICBjbGFzc2VzKFtcInZhci1lcnItaG9sZVwiXSksXG4gICAgICAgICAgICAgY3JlYXRlKFwidmVjdG9yLWVmZmVjdFwiLCBcIm5vbi1zY2FsaW5nLXN0cm9rZVwiKSxcbiAgICAgICAgICAgXSxcbiAgICAgICApO1xufTtcbiIsIm9wZW4gUHJldHR5O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBEb2MudChESEFubm90LnQpO1xuIiwibW9kdWxlIERvYyA9IFByZXR0eS5Eb2M7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gREhEb2M7XG5cbnR5cGUgZm9ybWF0dGFibGVfY2hpbGQgPSAofmVuZm9yY2VfaW5saW5lOiBib29sKSA9PiB0O1xuXG5tb2R1bGUgUCA9IFByZWNlZGVuY2U7XG5sZXQgcHJlY2VkZW5jZV9jb25zdCA9IFAubWF4O1xubGV0IHByZWNlZGVuY2VfQXAgPSBQLmFwO1xubGV0IHByZWNlZGVuY2VfUG93ZXIgPSBQLnBvd2VyO1xuXG5sZXQgcHJlY2VkZW5jZV9UaW1lcyA9IFAubXVsdDtcbmxldCBwcmVjZWRlbmNlX0RpdmlkZSA9IFAubXVsdDtcbmxldCBwcmVjZWRlbmNlX1BsdXMgPSBQLnBsdXM7XG5sZXQgcHJlY2VkZW5jZV9NaW51cyA9IFAucGx1cztcbmxldCBwcmVjZWRlbmNlX0NvbnMgPSBQLmNvbnM7XG5sZXQgcHJlY2VkZW5jZV9FcXVhbHMgPSBQLmVxcztcbmxldCBwcmVjZWRlbmNlX0xlc3NUaGFuID0gUC5lcXM7XG5sZXQgcHJlY2VkZW5jZV9HcmVhdGVyVGhhbiA9IFAuZXFzO1xubGV0IHByZWNlZGVuY2VfQW5kID0gUC5hbmRfO1xubGV0IHByZWNlZGVuY2VfT3IgPSBQLm9yXztcbmxldCBwcmVjZWRlbmNlX0NvbW1hID0gUC5wcm9kO1xubGV0IHByZWNlZGVuY2VfbWF4ID0gUC5taW47XG5cbmxldCBwYWRfY2hpbGQgPVxuICAgIChcbiAgICAgIH5pbmxpbmVfcGFkZGluZyBhcyAobCwgcik9KERvYy5lbXB0eSgpLCBEb2MuZW1wdHkoKSksXG4gICAgICB+ZW5mb3JjZV9pbmxpbmU6IGJvb2wsXG4gICAgICBjaGlsZDogZm9ybWF0dGFibGVfY2hpbGQsXG4gICAgKVxuICAgIDogdCA9PiB7XG4gIGxldCBpbmxpbmVfY2hvaWNlID0gRG9jLmhjYXRzKFtsLCBjaGlsZCh+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSksIHJdKTtcbiAgbGV0IHBhcmFfY2hvaWNlID1cbiAgICBEb2MuKFxuICAgICAgaGNhdHMoW1xuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgICAgaW5kZW50X2FuZF9hbGlnbihjaGlsZCh+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UpKSxcbiAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICBdKVxuICAgICk7XG4gIGVuZm9yY2VfaW5saW5lID8gaW5saW5lX2Nob2ljZSA6IERvYy5jaG9pY2UoaW5saW5lX2Nob2ljZSwgcGFyYV9jaG9pY2UpO1xufTtcblxubW9kdWxlIERlbGltID0ge1xuICBsZXQgbWsgPSAoZGVsaW1fdGV4dDogc3RyaW5nKTogdCA9PlxuICAgIERvYy50ZXh0KGRlbGltX3RleHQpIHw+IERvYy5hbm5vdChESEFubm90LkRlbGltKTtcblxuICBsZXQgZW1wdHlfaG9sZSA9ICgoX3UsIF9pKTogSG9sZUluc3RhbmNlLnQpOiB0ID0+IHtcbiAgICBsZXQgbGJsID1cbiAgICAgIC8vU3RyaW5nVXRpbC5jYXQoW3N0cmluZ19vZl9pbnQodSArIDEpLCBcIjpcIiwgc3RyaW5nX29mX2ludChpICsgMSldKTtcbiAgICAgIFwiP1wiO1xuICAgIERvYy50ZXh0KGxibClcbiAgICB8PiBEb2MuYW5ub3QoREhBbm5vdC5Ib2xlTGFiZWwpXG4gICAgfD4gRG9jLmFubm90KERIQW5ub3QuRGVsaW0pO1xuICB9O1xuXG4gIGxldCBsaXN0X25pbCA9IG1rKFwiW11cIik7XG4gIGxldCB0cml2ID0gbWsoXCIoKVwiKTtcbiAgbGV0IHdpbGQgPSBtayhcIl9cIik7XG5cbiAgbGV0IG9wZW5fUGFyZW50aGVzaXplZCA9IG1rKFwiKFwiKTtcbiAgbGV0IGNsb3NlX1BhcmVudGhlc2l6ZWQgPSBtayhcIilcIik7XG5cbiAgbGV0IHN5bV9GdW4gPSBtayhcImZ1blwiKTtcbiAgbGV0IGNvbG9uX0Z1biA9IG1rKFwiOlwiKTtcbiAgbGV0IGFycm93X0Z1biA9IG1rKFwiLT5cIik7XG5cbiAgbGV0IGZpeF9GaXhGID0gbWsoXCJmaXhcIik7XG5cbiAgbGV0IGFycm93X0ZpeEYgPSBtayhcIi0+XCIpO1xuICBsZXQgY29sb25fRml4RiA9IG1rKFwiOlwiKTtcblxuICBsZXQgcHJvamVjdGlvbl9kb3QgPSBtayhcIi5cIik7XG5cbiAgbGV0IG9wZW5fQ2FzZSA9IG1rKFwiY2FzZVwiKTtcbiAgbGV0IGNsb3NlX0Nhc2UgPSBtayhcImVuZFwiKTtcblxuICBsZXQgYmFyX1J1bGUgPSBtayhcInxcIik7XG4gIGxldCBhcnJvd19SdWxlID0gbWsoXCI9PlwiKTtcblxuICBsZXQgb3Blbl9DYXN0ID0gbWsoXCI8XCIpO1xuICBsZXQgYXJyb3dfQ2FzdCA9IG1rKFVuaWNvZGUuY2FzdEFycm93U3ltKTtcbiAgbGV0IGNsb3NlX0Nhc3QgPSBtayhcIj5cIik7XG5cbiAgbGV0IG9wZW5fRmFpbGVkQ2FzdCA9IG9wZW5fQ2FzdCB8PiBEb2MuYW5ub3QoREhBbm5vdC5GYWlsZWRDYXN0RGVsaW0pO1xuICBsZXQgYXJyb3dfRmFpbGVkQ2FzdCA9XG4gICAgbWsoVW5pY29kZS5jYXN0QXJyb3dTeW0pIHw+IERvYy5hbm5vdChESEFubm90LkZhaWxlZENhc3REZWxpbSk7XG4gIGxldCBjbG9zZV9GYWlsZWRDYXN0ID0gY2xvc2VfQ2FzdCB8PiBEb2MuYW5ub3QoREhBbm5vdC5GYWlsZWRDYXN0RGVsaW0pO1xufTtcblxubGV0IG1rX0VtcHR5SG9sZSA9ICh+c2VsZWN0ZWQ9ZmFsc2UsIGhjOiBIb2xlSW5zdGFuY2UudCkgPT5cbiAgRGVsaW0uZW1wdHlfaG9sZShoYykgfD4gRG9jLmFubm90KERIQW5ub3QuRW1wdHlIb2xlKHNlbGVjdGVkLCBoYykpO1xuXG5sZXQgbWtfRXhwYW5kaW5nS2V5d29yZCA9IChoYywgaykgPT5cbiAgRG9jLnRleHQoRXhwYW5kaW5nS2V5d29yZC50b19zdHJpbmcoaykpXG4gIHw+IERvYy5hbm5vdChESEFubm90LlZhckhvbGUoRXhwYW5kaW5nS2V5d29yZChrKSwgaGMpKTtcblxubGV0IG1rX0ludmFsaWRUZXh0ID0gKHQsIGhjKSA9PlxuICBEb2MudGV4dCh0KSB8PiBEb2MuYW5ub3QoREhBbm5vdC5JbnZhbGlkKGhjKSk7XG5cbmxldCBta19TZXF1ZW5jZSA9IChkb2MxLCBkb2MyKSA9PiBEb2MuKGhjYXRzKFtkb2MxLCBsaW5lYnJlYWsoKSwgZG9jMl0pKTtcblxubGV0IG1rX0ludExpdCA9IG4gPT4gRG9jLnRleHQoc3RyaW5nX29mX2ludChuKSk7XG5cbmxldCBta19TdHJpbmdMaXQgPSBzID0+IERvYy50ZXh0KEZvcm0uc3RyaW5nX3F1b3RlKHMpKTtcblxubGV0IG1rX1Rlc3QgPSB0ID0+IERvYy4oaGNhdHMoW3RleHQoXCJUZXN0XCIpLCB0LCB0ZXh0KFwiRW5kXCIpXSkpO1xuXG5sZXQgbWtfRmxvYXRMaXQgPSAoZjogZmxvYXQpID0+XG4gIHN3aXRjaCAoZiA8IDAuLCBGbG9hdC5pc19pbmZpbml0ZShmKSwgRmxvYXQuaXNfbmFuKGYpKSB7XG4gIHwgKGZhbHNlLCB0cnVlLCBfKSA9PiBEb2MudGV4dChcIkluZlwiKSAvKiBUT0RPOiBOZWdJbmYgaXMgdGVtcG9yYXJpbHkgaW50cm9kdWNlZCB1bnRpbCB1bmFyeSBtaW51cyBpcyBpbnRyb2R1Y2VkIHRvIEhhemVsICovXG4gIHwgKHRydWUsIHRydWUsIF8pID0+IERvYy50ZXh0KFwiTmVnSW5mXCIpXG4gIHwgKF8sIF8sIHRydWUpID0+IERvYy50ZXh0KFwiTmFOXCIpXG4gIHwgXyA9PiBEb2MudGV4dChzdHJpbmdfb2ZfZmxvYXQoZikpXG4gIH07XG5cbmxldCBta19Cb29sTGl0ID0gYiA9PiBEb2MudGV4dChzdHJpbmdfb2ZfYm9vbChiKSk7XG5cbmxldCBta19Db25zdHJ1Y3RvckxpdCA9IERvYy50ZXh0O1xuXG5sZXQgbWtfQ29ucyA9IChoZCwgdGwpID0+IERvYy4oaGNhdHMoW2hkLCB0ZXh0KFwiOjpcIiksIHRsXSkpO1xubGV0IG1rX0xpc3RDb25jYXQgPSAoaGQsIHRsKSA9PiBEb2MuKGhjYXRzKFtoZCwgdGV4dChcIkBcIiksIHRsXSkpO1xuXG5sZXQgbWtfY29tbWFfc2VxID0gKGxkLCByZCwgbCkgPT4ge1xuICBsZXQgcmVjIG1rX2NvbW1hX3NlcV9pbm5lciA9IGwgPT4ge1xuICAgIHN3aXRjaCAobCkge1xuICAgIHwgW10gPT4gW11cbiAgICB8IFtoZF0gPT4gW2hkXVxuICAgIHwgW2hkLCAuLi50bF0gPT4gRG9jLihbaGQsIHRleHQoXCIsIFwiKV0gQCBta19jb21tYV9zZXFfaW5uZXIodGwpKVxuICAgIH07XG4gIH07XG4gIERvYy4oaGNhdHMoW3RleHQobGQpXSBAIG1rX2NvbW1hX3NlcV9pbm5lcihsKSBAIFt0ZXh0KHJkKV0pKTtcbn07XG5cbmxldCBta19MaXN0TGl0ID0gbCA9PiBta19jb21tYV9zZXEoXCJbXCIsIFwiXVwiLCBsKTtcblxubGV0IG1rX1R1cGxlID0gZWx0cyA9PiBta19jb21tYV9zZXEoXCJcIiwgXCJcIiwgZWx0cyk7XG5cbmxldCBta19BcCA9IChkb2MxLCBkb2MyKSA9PlxuICBEb2MuKGhjYXRzKFtkb2MxLCB0ZXh0KFwiKFwiKSwgZG9jMiwgdGV4dChcIilcIildKSk7XG5cbmxldCBta19QcmogPSAodGFyZywgbikgPT5cbiAgRG9jLmhjYXRzKFt0YXJnLCBEZWxpbS5wcm9qZWN0aW9uX2RvdCwgRG9jLnRleHQoc3RyaW5nX29mX2ludChuKSldKTtcbiIsIm9wZW4gUHJldHR5O1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCBwcmVjZWRlbmNlID0gKGRwOiBESFBhdC50KSA9PlxuICBzd2l0Y2ggKGRwKSB7XG4gIHwgRW1wdHlIb2xlKF8pXG4gIHwgTm9uRW1wdHlIb2xlKF8pXG4gIHwgV2lsZFxuICB8IEV4cGFuZGluZ0tleXdvcmQoXylcbiAgfCBJbnZhbGlkVGV4dChfKVxuICB8IEJhZENvbnN0cnVjdG9yKF8pXG4gIHwgVmFyKF8pXG4gIHwgSW50TGl0KF8pXG4gIHwgRmxvYXRMaXQoXylcbiAgfCBCb29sTGl0KF8pXG4gIHwgU3RyaW5nTGl0KF8pXG4gIHwgTGlzdExpdChfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX2NvbnN0XG4gIHwgVHVwbGUoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQ29tbWFcbiAgfCBDb25zKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0NvbnNcbiAgfCBBcChfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9BcFxuICB9O1xuXG5sZXQgcmVjIG1rID1cbiAgICAgICAgKH5wYXJlbnRoZXNpemU9ZmFsc2UsIH5lbmZvcmNlX2lubGluZTogYm9vbCwgZHA6IERIUGF0LnQpOiBESERvYy50ID0+IHtcbiAgbGV0IG1rJyA9IG1rKH5lbmZvcmNlX2lubGluZSk7XG4gIGxldCBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzID0gKHByZWNlZGVuY2Vfb3AsIGRwMSwgZHAyKSA9PiAoXG4gICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZShkcDEpID4gcHJlY2VkZW5jZV9vcCwgZHAxKSxcbiAgICBtaycofnBhcmVudGhlc2l6ZT1wcmVjZWRlbmNlKGRwMikgPj0gcHJlY2VkZW5jZV9vcCwgZHAyKSxcbiAgKTtcbiAgbGV0IG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzID0gKHByZWNlZGVuY2Vfb3AsIGRwMSwgZHAyKSA9PiAoXG4gICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZShkcDEpID49IHByZWNlZGVuY2Vfb3AsIGRwMSksXG4gICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZShkcDIpID4gcHJlY2VkZW5jZV9vcCwgZHAyKSxcbiAgKTtcbiAgbGV0IGRvYyA9XG4gICAgc3dpdGNoIChkcCkge1xuICAgIHwgRW1wdHlIb2xlKHUsIGkpID0+IERIRG9jX2NvbW1vbi5ta19FbXB0eUhvbGUoKHUsIGkpKVxuICAgIHwgTm9uRW1wdHlIb2xlKHJlYXNvbiwgdSwgaSwgZHApID0+XG4gICAgICBtaycoZHApIHw+IERvYy5hbm5vdChESEFubm90Lk5vbkVtcHR5SG9sZShyZWFzb24sICh1LCBpKSkpXG4gICAgfCBFeHBhbmRpbmdLZXl3b3JkKHUsIGksIGspID0+XG4gICAgICBESERvY19jb21tb24ubWtfRXhwYW5kaW5nS2V5d29yZCgodSwgaSksIGspXG4gICAgfCBJbnZhbGlkVGV4dCh1LCBpLCB0KSA9PiBESERvY19jb21tb24ubWtfSW52YWxpZFRleHQodCwgKHUsIGkpKVxuICAgIHwgQmFkQ29uc3RydWN0b3IodSwgaSwgdCkgPT4gREhEb2NfY29tbW9uLm1rX0ludmFsaWRUZXh0KHQsICh1LCBpKSlcbiAgICB8IFZhcih4KSA9PiBEb2MudGV4dCh4KVxuICAgIHwgV2lsZCA9PiBESERvY19jb21tb24uRGVsaW0ud2lsZFxuICAgIHwgQ29uc3RydWN0b3IobmFtZSkgPT4gREhEb2NfY29tbW9uLm1rX0NvbnN0cnVjdG9yTGl0KG5hbWUpXG4gICAgfCBJbnRMaXQobikgPT4gREhEb2NfY29tbW9uLm1rX0ludExpdChuKVxuICAgIHwgRmxvYXRMaXQoZikgPT4gREhEb2NfY29tbW9uLm1rX0Zsb2F0TGl0KGYpXG4gICAgfCBCb29sTGl0KGIpID0+IERIRG9jX2NvbW1vbi5ta19Cb29sTGl0KGIpXG4gICAgfCBTdHJpbmdMaXQocykgPT4gREhEb2NfY29tbW9uLm1rX1N0cmluZ0xpdChzKVxuICAgIHwgTGlzdExpdChfLCBkX2xpc3QpID0+XG4gICAgICBsZXQgb2wgPSBMaXN0Lm1hcChtaycsIGRfbGlzdCk7XG4gICAgICBESERvY19jb21tb24ubWtfTGlzdExpdChvbCk7XG4gICAgfCBDb25zKGRwMSwgZHAyKSA9PlxuICAgICAgbGV0IChkb2MxLCBkb2MyKSA9XG4gICAgICAgIG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzKERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0NvbnMsIGRwMSwgZHAyKTtcbiAgICAgIERIRG9jX2NvbW1vbi5ta19Db25zKGRvYzEsIGRvYzIpO1xuICAgIHwgVHVwbGUoW10pID0+IERIRG9jX2NvbW1vbi5EZWxpbS50cml2XG4gICAgfCBUdXBsZShkcykgPT4gREhEb2NfY29tbW9uLm1rX1R1cGxlKExpc3QubWFwKG1rJywgZHMpKVxuICAgIHwgQXAoZHAxLCBkcDIpID0+XG4gICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgbWtfbGVmdF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyhESERvY19jb21tb24ucHJlY2VkZW5jZV9BcCwgZHAxLCBkcDIpO1xuICAgICAgREhEb2NfY29tbW9uLm1rX0FwKGRvYzEsIGRvYzIpO1xuICAgIH07XG4gIHBhcmVudGhlc2l6ZVxuICAgID8gRG9jLmhjYXRzKFtcbiAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm9wZW5fUGFyZW50aGVzaXplZCxcbiAgICAgICAgZG9jLFxuICAgICAgICBESERvY19jb21tb24uRGVsaW0uY2xvc2VfUGFyZW50aGVzaXplZCxcbiAgICAgIF0pXG4gICAgOiBkb2M7XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5tb2R1bGUgRG9jID0gUHJldHR5LkRvYztcblxudHlwZSB0ID0gRG9jLnQoSFR5cEFubm90LnQpO1xuXG50eXBlIGZvcm1hdHRhYmxlX2NoaWxkID0gKH5lbmZvcmNlX2lubGluZTogYm9vbCkgPT4gdDtcblxubGV0IHBhZF9jaGlsZCA9XG4gICAgKFxuICAgICAgfmlubGluZV9wYWRkaW5nIGFzIChsLCByKT0oRG9jLmVtcHR5KCksIERvYy5lbXB0eSgpKSxcbiAgICAgIH5lbmZvcmNlX2lubGluZTogYm9vbCxcbiAgICAgIGNoaWxkOiBmb3JtYXR0YWJsZV9jaGlsZCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IGlubGluZV9jaG9pY2UgPSBEb2MuaGNhdHMoW2wsIGNoaWxkKH5lbmZvcmNlX2lubGluZT10cnVlKSwgcl0pO1xuICBsZXQgcGFyYV9jaG9pY2UgPVxuICAgIERvYy4oXG4gICAgICBoY2F0cyhbXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBpbmRlbnRfYW5kX2FsaWduKGNoaWxkKH5lbmZvcmNlX2lubGluZT1mYWxzZSkpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0pXG4gICAgKTtcbiAgZW5mb3JjZV9pbmxpbmUgPyBpbmxpbmVfY2hvaWNlIDogRG9jLmNob2ljZShpbmxpbmVfY2hvaWNlLCBwYXJhX2Nob2ljZSk7XG59O1xuXG5sZXQgbWtfZGVsaW0gPSBzID0+IERvYy4oYW5ub3QoSFR5cEFubm90LkRlbGltLCB0ZXh0KHMpKSk7XG5cbmxldCByZWMgbWsgPSAofnBhcmVudGhlc2l6ZT1mYWxzZSwgfmVuZm9yY2VfaW5saW5lOiBib29sLCB0eTogVHlwLnQpOiB0ID0+IHtcbiAgb3BlbiBEb2M7XG4gIGxldCBtaycgPSBtayh+ZW5mb3JjZV9pbmxpbmUpO1xuICBsZXQgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMgPSAocHJlY2VkZW5jZV9vcCwgdHkxLCB0eTIpID0+IChcbiAgICBhbm5vdChcbiAgICAgIEhUeXBBbm5vdC5TdGVwKDApLFxuICAgICAgbWsnKH5wYXJlbnRoZXNpemU9VHlwLnByZWNlZGVuY2UodHkxKSA8PSBwcmVjZWRlbmNlX29wLCB0eTEpLFxuICAgICksXG4gICAgYW5ub3QoXG4gICAgICBIVHlwQW5ub3QuU3RlcCgxKSxcbiAgICAgIG1rJyh+cGFyZW50aGVzaXplPVR5cC5wcmVjZWRlbmNlKHR5MikgPCBwcmVjZWRlbmNlX29wLCB0eTIpLFxuICAgICksXG4gICk7XG4gIGxldCAoZG9jLCBwYXJlbnRoZXNpemUpID1cbiAgICBzd2l0Y2ggKHR5KSB7XG4gICAgfCBVbmtub3duKF8pID0+IChcbiAgICAgICAgYW5ub3QoSFR5cEFubm90LkRlbGltLCBhbm5vdChIVHlwQW5ub3QuSG9sZUxhYmVsLCB0ZXh0KFwiP1wiKSkpLFxuICAgICAgICBwYXJlbnRoZXNpemUsXG4gICAgICApXG4gICAgfCBJbnQgPT4gKHRleHQoXCJJbnRcIiksIHBhcmVudGhlc2l6ZSlcbiAgICB8IEZsb2F0ID0+ICh0ZXh0KFwiRmxvYXRcIiksIHBhcmVudGhlc2l6ZSlcbiAgICB8IEJvb2wgPT4gKHRleHQoXCJCb29sXCIpLCBwYXJlbnRoZXNpemUpXG4gICAgfCBTdHJpbmcgPT4gKHRleHQoXCJTdHJpbmdcIiksIHBhcmVudGhlc2l6ZSlcbiAgICB8IFZhcihuYW1lKSA9PiAodGV4dChuYW1lKSwgcGFyZW50aGVzaXplKVxuICAgIHwgTGlzdCh0eSkgPT4gKFxuICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgbWtfZGVsaW0oXCJbXCIpLFxuICAgICAgICAgIChcbiAgICAgICAgICAgICh+ZW5mb3JjZV9pbmxpbmUpID0+XG4gICAgICAgICAgICAgIGFubm90KEhUeXBBbm5vdC5TdGVwKDApLCBtayh+ZW5mb3JjZV9pbmxpbmUsIHR5KSlcbiAgICAgICAgICApXG4gICAgICAgICAgfD4gcGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZSksXG4gICAgICAgICAgbWtfZGVsaW0oXCJdXCIpLFxuICAgICAgICBdKSxcbiAgICAgICAgcGFyZW50aGVzaXplLFxuICAgICAgKVxuICAgIHwgQXJyb3codHkxLCB0eTIpID0+XG4gICAgICBsZXQgKGQxLCBkMikgPVxuICAgICAgICBta19yaWdodF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyhUeXBCYXNlLnByZWNlZGVuY2VfQXJyb3csIHR5MSwgdHkyKTtcbiAgICAgIChcbiAgICAgICAgaGNhdHMoW1xuICAgICAgICAgIGQxLFxuICAgICAgICAgIGhjYXRzKFtcbiAgICAgICAgICAgIGNob2ljZXMoW2xpbmVicmVhaygpLCBzcGFjZSgpXSksXG4gICAgICAgICAgICB0ZXh0KFVuaWNvZGUudHlwZUFycm93U3ltICsrIFwiIFwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBkMixcbiAgICAgICAgXSksXG4gICAgICAgIHBhcmVudGhlc2l6ZSxcbiAgICAgICk7XG4gICAgfCBQcm9kKFtdKSA9PiAodGV4dChcIigpXCIpLCBwYXJlbnRoZXNpemUpXG4gICAgfCBQcm9kKFtoZWFkLCAuLi50YWlsXSkgPT5cbiAgICAgIGxldCBjZW50ZXIgPVxuICAgICAgICBbXG4gICAgICAgICAgYW5ub3QoXG4gICAgICAgICAgICBIVHlwQW5ub3QuU3RlcCgwKSxcbiAgICAgICAgICAgIG1rJyhcbiAgICAgICAgICAgICAgfnBhcmVudGhlc2l6ZT1UeXAucHJlY2VkZW5jZShoZWFkKSA8PSBUeXBCYXNlLnByZWNlZGVuY2VfUHJvZCxcbiAgICAgICAgICAgICAgaGVhZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgICAuLi5MaXN0Lm1hcGkoXG4gICAgICAgICAgICAgICAoaSwgdHkpID0+XG4gICAgICAgICAgICAgICAgIGFubm90KFxuICAgICAgICAgICAgICAgICAgIEhUeXBBbm5vdC5TdGVwKGkgKyAxKSxcbiAgICAgICAgICAgICAgICAgICBtaycoXG4gICAgICAgICAgICAgICAgICAgICB+cGFyZW50aGVzaXplPVxuICAgICAgICAgICAgICAgICAgICAgICBUeXAucHJlY2VkZW5jZSh0eSkgPD0gVHlwQmFzZS5wcmVjZWRlbmNlX1Byb2QsXG4gICAgICAgICAgICAgICAgICAgICB0eSxcbiAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgdGFpbCxcbiAgICAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIHw+IExpc3RVdGlsLmpvaW4oXG4gICAgICAgICAgICAgaGNhdHMoW3RleHQoXCIsXCIpLCBjaG9pY2VzKFtsaW5lYnJlYWsoKSwgc3BhY2UoKV0pXSksXG4gICAgICAgICAgIClcbiAgICAgICAgfD4gaGNhdHM7XG4gICAgICAoY2VudGVyLCB0cnVlKTtcbiAgICB8IFJlYyh4LCB0eSkgPT4gKFxuICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgdGV4dChcIlJlYyBcIiArKyB4ICsrIFwiLntcIiksXG4gICAgICAgICAgKFxuICAgICAgICAgICAgKH5lbmZvcmNlX2lubGluZSkgPT5cbiAgICAgICAgICAgICAgYW5ub3QoSFR5cEFubm90LlN0ZXAoMCksIG1rKH5lbmZvcmNlX2lubGluZSwgdHkpKVxuICAgICAgICAgIClcbiAgICAgICAgICB8PiBwYWRfY2hpbGQofmVuZm9yY2VfaW5saW5lKSxcbiAgICAgICAgICBta19kZWxpbShcIn1cIiksXG4gICAgICAgIF0pLFxuICAgICAgICBwYXJlbnRoZXNpemUsXG4gICAgICApXG4gICAgfCBTdW0oc3VtX21hcCkgPT5cbiAgICAgIGxldCBjZW50ZXIgPVxuICAgICAgICBMaXN0Lm1hcGkoXG4gICAgICAgICAgKGksIChjdHIsIHR5KSkgPT5cbiAgICAgICAgICAgIHN3aXRjaCAodHkpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBhbm5vdChIVHlwQW5ub3QuU3RlcChpICsgMSksIHRleHQoY3RyKSlcbiAgICAgICAgICAgIHwgU29tZSh0eSkgPT5cbiAgICAgICAgICAgICAgYW5ub3QoXG4gICAgICAgICAgICAgICAgSFR5cEFubm90LlN0ZXAoaSArIDEpLFxuICAgICAgICAgICAgICAgIGhjYXRzKFt0ZXh0KGN0ciArKyBcIihcIiksIG1rJyh0eSksIHRleHQoXCIpXCIpXSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgc3VtX21hcCxcbiAgICAgICAgKVxuICAgICAgICB8PiBMaXN0VXRpbC5qb2luKFxuICAgICAgICAgICAgIGhjYXRzKFt0ZXh0KFwiICtcIiksIGNob2ljZXMoW2xpbmVicmVhaygpLCBzcGFjZSgpXSldKSxcbiAgICAgICAgICAgKVxuICAgICAgICB8PiBoY2F0cztcbiAgICAgIChjZW50ZXIsIHRydWUpO1xuICAgIH07XG4gIGxldCBkb2MgPSBhbm5vdChIVHlwQW5ub3QuVGVybSwgZG9jKTtcbiAgcGFyZW50aGVzaXplID8gRG9jLmhjYXRzKFtta19kZWxpbShcIihcIiksIGRvYywgbWtfZGVsaW0oXCIpXCIpXSkgOiBkb2M7XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFByZXR0eTtcblxubGV0IHByb21vdGVfYW5ub3QgPVxuICBmdW5cbiAgfCBIVHlwQW5ub3QuVGVybSA9PiBESEFubm90LlRlcm1cbiAgfCBIVHlwQW5ub3QuU3RlcChuKSA9PiBESEFubm90LlN0ZXAobilcbiAgfCBIVHlwQW5ub3QuSG9sZUxhYmVsID0+IERIQW5ub3QuSG9sZUxhYmVsXG4gIHwgSFR5cEFubm90LkRlbGltID0+IERIQW5ub3QuRGVsaW07XG5sZXQgcHJvbW90ZSA9IChkOiBIVHlwRG9jLnQpOiBESERvYy50ID0+IGQgfD4gRG9jLm1hcF9hbm5vdChwcm9tb3RlX2Fubm90KTtcbmxldCBtayA9ICh+ZW5mb3JjZV9pbmxpbmU6IGJvb2wsIHR5OiBUeXAudCk6IERIRG9jLnQgPT5cbiAgdHkgfD4gSFR5cERvYy5tayh+ZW5mb3JjZV9pbmxpbmUpIHw+IHByb21vdGU7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXZhbHVhdG9yU3RlcDtcbm9wZW4gVHJhbnNpdGlvbjtcbm1vZHVsZSBEb2MgPSBQcmV0dHkuRG9jO1xuXG5sZXQgcHJlY2VkZW5jZV9iaW5fYm9vbF9vcCA9IChvcDogVGVybUJhc2UuVUV4cC5vcF9iaW5fYm9vbCkgPT5cbiAgc3dpdGNoIChvcCkge1xuICB8IEFuZCA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9BbmRcbiAgfCBPciA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9PclxuICB9O1xuXG5sZXQgcHJlY2VkZW5jZV9iaW5faW50X29wID0gKGJpbzogVGVybUJhc2UuVUV4cC5vcF9iaW5faW50KSA9PlxuICBzd2l0Y2ggKGJpbykge1xuICB8IFRpbWVzID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1RpbWVzXG4gIHwgUG93ZXIgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfUG93ZXJcbiAgfCBEaXZpZGUgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRGl2aWRlXG4gIHwgUGx1cyA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9QbHVzXG4gIHwgTWludXMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfTWludXNcbiAgfCBFcXVhbHMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRXF1YWxzXG4gIHwgTm90RXF1YWxzID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0VxdWFsc1xuICB8IExlc3NUaGFuID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0xlc3NUaGFuXG4gIHwgTGVzc1RoYW5PckVxdWFsID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0xlc3NUaGFuXG4gIHwgR3JlYXRlclRoYW4gPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfR3JlYXRlclRoYW5cbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfR3JlYXRlclRoYW5cbiAgfTtcbmxldCBwcmVjZWRlbmNlX2Jpbl9mbG9hdF9vcCA9IChiZm86IFRlcm1CYXNlLlVFeHAub3BfYmluX2Zsb2F0KSA9PlxuICBzd2l0Y2ggKGJmbykge1xuICB8IFRpbWVzID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1RpbWVzXG4gIHwgUG93ZXIgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfUG93ZXJcbiAgfCBEaXZpZGUgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRGl2aWRlXG4gIHwgUGx1cyA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9QbHVzXG4gIHwgTWludXMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfTWludXNcbiAgfCBFcXVhbHMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRXF1YWxzXG4gIHwgTm90RXF1YWxzID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0VxdWFsc1xuICB8IExlc3NUaGFuID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0xlc3NUaGFuXG4gIHwgTGVzc1RoYW5PckVxdWFsID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0xlc3NUaGFuXG4gIHwgR3JlYXRlclRoYW4gPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfR3JlYXRlclRoYW5cbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfR3JlYXRlclRoYW5cbiAgfTtcbmxldCBwcmVjZWRlbmNlX2Jpbl9zdHJpbmdfb3AgPSAoYnNvOiBUZXJtQmFzZS5VRXhwLm9wX2Jpbl9zdHJpbmcpID0+XG4gIHN3aXRjaCAoYnNvKSB7XG4gIHwgQ29uY2F0ID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1BsdXNcbiAgfCBFcXVhbHMgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRXF1YWxzXG4gIH07XG5sZXQgcmVjIHByZWNlZGVuY2UgPSAofnNob3dfY2FzdHM6IGJvb2wsIGQ6IERIRXhwLnQpID0+IHtcbiAgbGV0IHByZWNlZGVuY2UnID0gcHJlY2VkZW5jZSh+c2hvd19jYXN0cyk7XG4gIHN3aXRjaCAoZCkge1xuICB8IEJvdW5kVmFyKF8pXG4gIHwgRnJlZVZhcihfKVxuICB8IEludmFsaWRUZXh0KF8pXG4gIHwgRXhwYW5kaW5nS2V5d29yZChfKVxuICB8IEJvb2xMaXQoXylcbiAgfCBJbnRMaXQoXylcbiAgfCBTZXF1ZW5jZShfKVxuICB8IFRlc3QoXylcbiAgfCBGbG9hdExpdChfKVxuICB8IFN0cmluZ0xpdChfKVxuICB8IExpc3RMaXQoXylcbiAgfCBQcmooXylcbiAgfCBFbXB0eUhvbGUoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IEZhaWxlZENhc3QoXylcbiAgfCBJbnZhbGlkT3BlcmF0aW9uKF8pXG4gIHwgSWZUaGVuRWxzZShfKVxuICB8IENsb3N1cmUoXylcbiAgfCBCdWlsdGluRnVuKF8pXG4gIHwgRmlsdGVyKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX2NvbnN0XG4gIHwgQ2FzdChkMSwgXywgXykgPT5cbiAgICBzaG93X2Nhc3RzID8gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfY29uc3QgOiBwcmVjZWRlbmNlJyhkMSlcbiAgfCBBcChfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9BcFxuICB8IEFwQnVpbHRpbihfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9BcFxuICB8IENvbnMoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQ29uc1xuICB8IExpc3RDb25jYXQoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfUGx1c1xuICB8IFR1cGxlKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0NvbW1hXG4gIHwgRnVuKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX21heFxuICB8IExldChfKVxuICB8IEZpeEYoXylcbiAgfCBDb25zaXN0ZW50Q2FzZShfKVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX21heFxuXG4gIHwgQmluQm9vbE9wKG9wLCBfLCBfKSA9PiBwcmVjZWRlbmNlX2Jpbl9ib29sX29wKG9wKVxuICB8IEJpbkludE9wKG9wLCBfLCBfKSA9PiBwcmVjZWRlbmNlX2Jpbl9pbnRfb3Aob3ApXG4gIHwgQmluRmxvYXRPcChvcCwgXywgXykgPT4gcHJlY2VkZW5jZV9iaW5fZmxvYXRfb3Aob3ApXG4gIHwgQmluU3RyaW5nT3Aob3AsIF8sIF8pID0+IHByZWNlZGVuY2VfYmluX3N0cmluZ19vcChvcClcblxuICB8IE5vbkVtcHR5SG9sZShfLCBfLCBfLCBkKSA9PiBwcmVjZWRlbmNlJyhkKVxuICB9O1xufTtcblxubGV0IG1rX2Jpbl9ib29sX29wID0gKG9wOiBUZXJtQmFzZS5VRXhwLm9wX2Jpbl9ib29sKTogREhEb2MudCA9PlxuICBEb2MudGV4dChUZXJtQmFzZS5VRXhwLmJvb2xfb3BfdG9fc3RyaW5nKG9wKSk7XG5cbmxldCBta19iaW5faW50X29wID0gKG9wOiBUZXJtQmFzZS5VRXhwLm9wX2Jpbl9pbnQpOiBESERvYy50ID0+XG4gIERvYy50ZXh0KFRlcm1CYXNlLlVFeHAuaW50X29wX3RvX3N0cmluZyhvcCkpO1xuXG5sZXQgbWtfYmluX2Zsb2F0X29wID0gKG9wOiBUZXJtQmFzZS5VRXhwLm9wX2Jpbl9mbG9hdCk6IERIRG9jLnQgPT5cbiAgRG9jLnRleHQoVGVybUJhc2UuVUV4cC5mbG9hdF9vcF90b19zdHJpbmcob3ApKTtcblxubGV0IG1rX2Jpbl9zdHJpbmdfb3AgPSAob3A6IFRlcm1CYXNlLlVFeHAub3BfYmluX3N0cmluZyk6IERIRG9jLnQgPT5cbiAgRG9jLnRleHQoVGVybUJhc2UuVUV4cC5zdHJpbmdfb3BfdG9fc3RyaW5nKG9wKSk7XG5cbmxldCBtayA9XG4gICAgKFxuICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MuRXZhbHVhdGlvbi50LFxuICAgICAgfmVuZm9yY2VfaW5saW5lOiBib29sLFxuICAgICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2U6IG9wdGlvbihIb2xlSW5zdGFuY2UudCksXG4gICAgICAvLyBUaGUgbmV4dCBmb3VyIGFyZSB1c2VkIHdoZW4gZHJhd2luZyB0aGUgc3RlcHBlciB0byB0cmFjayB3aGVyZSB3ZSBjYW4gYW5ub3RhdGUgY2hhbmdlc1xuICAgICAgfnByZXZpb3VzX3N0ZXA6IG9wdGlvbihzdGVwKSwgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhYm92ZSB0aGlzIG9uZVxuICAgICAgfmhpZGRlbl9zdGVwczogbGlzdChzdGVwKSwgLy8gVGhlIGhpZGRlbiBzdGVwcyBiZXR3ZWVuIHRoZSBhYm92ZSBhbmQgdGhlIGN1cnJlbnQgb25lXG4gICAgICB+Y2hvc2VuX3N0ZXA6IG9wdGlvbihzdGVwKSwgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIHRha2VuIG5leHRcbiAgICAgIH5uZXh0X3N0ZXBzOiBsaXN0KEV2YWxPYmoudCksIC8vIFRoZSBvcHRpb25zIGZvciB0aGUgbmV4dCBzdGVwLCBpZiBpdCBoYXNuJ3QgYmVlbiBjaG9zZW4geWV0XG4gICAgICB+ZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCxcbiAgICAgIGQ6IERIRXhwLnQsXG4gICAgKVxuICAgIDogREhEb2MudCA9PiB7XG4gIGxldCBwcmVjZWRlbmNlID0gcHJlY2VkZW5jZSh+c2hvd19jYXN0cz1zZXR0aW5ncy5zaG93X2Nhc3RzKTtcbiAgbGV0IHJlYyBnbyA9XG4gICAgICAgICAgKFxuICAgICAgICAgICAgZDogREhFeHAudCxcbiAgICAgICAgICAgIGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsXG4gICAgICAgICAgICBlbmZvcmNlX2lubGluZTogYm9vbCxcbiAgICAgICAgICAgIHByZXZpb3VzX3N0ZXA6IG9wdGlvbihzdGVwKSxcbiAgICAgICAgICAgIGhpZGRlbl9zdGVwczogbGlzdChzdGVwKSxcbiAgICAgICAgICAgIGNob3Nlbl9zdGVwOiBvcHRpb24oc3RlcCksXG4gICAgICAgICAgICBuZXh0X3N0ZXBzOiBsaXN0KChFdmFsQ3R4LnQsIGludCkpLFxuICAgICAgICAgICAgcmVjZW50X3N1YnN0OiBsaXN0KFZhci50KSxcbiAgICAgICAgICAgIHJlY3Vyc2l2ZV9jYWxsczogbGlzdChWYXIudCksXG4gICAgICAgICAgKVxuICAgICAgICAgIDogREhEb2MudCA9PiB7XG4gICAgb3BlbiBEb2M7XG4gICAgbGV0IHJlY2VudF9zdWJzdCA9XG4gICAgICBzd2l0Y2ggKHByZXZpb3VzX3N0ZXApIHtcbiAgICAgIHwgU29tZShwcykgd2hlbiBwcy5jdHggPT0gTWFyayA9PlxuICAgICAgICBzd2l0Y2ggKHBzLmtuZCwgcHMuZF9sb2MpIHtcbiAgICAgICAgfCAoRnVuQXAsIEFwKEZ1bihwLCBfLCBfLCBfKSwgXykpID0+IERIUGF0LmJvdW5kX3ZhcnMocClcbiAgICAgICAgfCAoRnVuQXAsIF8pID0+IFtdXG4gICAgICAgIHwgKExldEJpbmQsIExldChwLCBfLCBfKSkgPT4gREhQYXQuYm91bmRfdmFycyhwKVxuICAgICAgICB8IChMZXRCaW5kLCBfKSA9PiBbXVxuICAgICAgICB8IChGaXhVbndyYXAsIF8pIC8vIFRPRE9bTWF0dF06IENvdWxkIGRvIHNvbWV0aGluZyBoZXJlP1xuICAgICAgICB8IChJbnZhbGlkU3RlcCwgXylcbiAgICAgICAgfCAoVmFyTG9va3VwLCBfKVxuICAgICAgICB8IChTZXF1ZW5jZSwgXylcbiAgICAgICAgfCAoRnVuQ2xvc3VyZSwgXylcbiAgICAgICAgfCAoVXBkYXRlVGVzdCwgXylcbiAgICAgICAgfCAoQ2FzdEFwLCBfKVxuICAgICAgICB8IChCdWlsdGluV3JhcCwgXylcbiAgICAgICAgfCAoQnVpbHRpbkFwKF8pLCBfKVxuICAgICAgICB8IChCaW5Cb29sT3AoXyksIF8pXG4gICAgICAgIHwgKEJpbkludE9wKF8pLCBfKVxuICAgICAgICB8IChCaW5GbG9hdE9wKF8pLCBfKVxuICAgICAgICB8IChCaW5TdHJpbmdPcChfKSwgXylcbiAgICAgICAgfCAoUHJvamVjdGlvbiwgXylcbiAgICAgICAgfCAoTGlzdENvbnMsIF8pXG4gICAgICAgIHwgKExpc3RDb25jYXQsIF8pXG4gICAgICAgIHwgKENhc2VBcHBseSwgXylcbiAgICAgICAgfCAoQ2FzZU5leHQsIF8pXG4gICAgICAgIHwgKENvbXBsZXRlQ2xvc3VyZSwgXylcbiAgICAgICAgfCAoQ29tcGxldGVGaWx0ZXIsIF8pXG4gICAgICAgIHwgKENhc3QsIF8pXG4gICAgICAgIHwgKENvbmRpdGlvbmFsKF8pLCBfKVxuICAgICAgICB8IChTa2lwLCBfKSA9PiBbXVxuICAgICAgICB9XG4gICAgICB8IF8gPT4gcmVjZW50X3N1YnN0XG4gICAgICB9O1xuICAgIGxldCBnbycgPVxuICAgICAgICAoXG4gICAgICAgICAgfmVudj1lbnYsXG4gICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWVuZm9yY2VfaW5saW5lLFxuICAgICAgICAgIH5yZWNlbnRfc3Vic3Q9cmVjZW50X3N1YnN0LFxuICAgICAgICAgIH5yZWN1cnNpdmVfY2FsbHM9cmVjdXJzaXZlX2NhbGxzLFxuICAgICAgICAgIGQsXG4gICAgICAgICAgY3R4LFxuICAgICAgICApID0+IHtcbiAgICAgIGdvKFxuICAgICAgICBkLFxuICAgICAgICBlbnYsXG4gICAgICAgIGVuZm9yY2VfaW5saW5lLFxuICAgICAgICBPcHRpb24uam9pbihcbiAgICAgICAgICBPcHRpb24ubWFwKEV2YWx1YXRvclN0ZXAudW53cmFwKF8sIGN0eCksIHByZXZpb3VzX3N0ZXApLFxuICAgICAgICApLFxuICAgICAgICBoaWRkZW5fc3RlcHNcbiAgICAgICAgfD4gTGlzdC5maWx0ZXIocyA9PiAhRXZhbEN0eC5mdXp6eV9tYXJrKHMuY3R4KSlcbiAgICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwKEV2YWx1YXRvclN0ZXAudW53cmFwKF8sIGN0eCkpLFxuICAgICAgICBPcHRpb24uam9pbihPcHRpb24ubWFwKEV2YWx1YXRvclN0ZXAudW53cmFwKF8sIGN0eCksIGNob3Nlbl9zdGVwKSksXG4gICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAoKHgsIHkpKSA9PlxuICAgICAgICAgICAgc3dpdGNoIChFdmFsQ3R4LnVud3JhcCh4LCBjdHgpKSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lKHgnKSA9PiBTb21lKCh4JywgeSkpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIG5leHRfc3RlcHMsXG4gICAgICAgICksXG4gICAgICAgIHJlY2VudF9zdWJzdCxcbiAgICAgICAgcmVjdXJzaXZlX2NhbGxzLFxuICAgICAgKTtcbiAgICB9O1xuICAgIGxldCBwYXJlbnRoZXNpemUgPSAoYiwgZG9jKSA9PlxuICAgICAgaWYgKGIpIHtcbiAgICAgICAgaGNhdHMoW1xuICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5vcGVuX1BhcmVudGhlc2l6ZWQsXG4gICAgICAgICAgZG9jIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQofmVuZm9yY2VfaW5saW5lKSxcbiAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uY2xvc2VfUGFyZW50aGVzaXplZCxcbiAgICAgICAgXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb2MofmVuZm9yY2VfaW5saW5lKTtcbiAgICAgIH07XG4gICAgbGV0IGdvX2Nhc2VfcnVsZSA9XG4gICAgICAgIChjb25zaXN0ZW50OiBib29sLCBydWxlX2lkeDogaW50LCBSdWxlKGRwLCBkY2xhdXNlKTogREhFeHAucnVsZSlcbiAgICAgICAgOiBESERvYy50ID0+IHtcbiAgICAgIGxldCBraW5kOiBFdmFsQ3R4LmNscyA9XG4gICAgICAgIGlmIChjb25zaXN0ZW50KSB7XG4gICAgICAgICAgQ29uc2lzdGVudENhc2VSdWxlKHJ1bGVfaWR4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBJbmNvbnNpc3RlbnRCcmFuY2hlc1J1bGUocnVsZV9pZHgpO1xuICAgICAgICB9O1xuICAgICAgbGV0IGhpZGRlbl9jbGF1c2UgPSBhbm5vdChESEFubm90LkNvbGxhcHNlZCwgdGV4dChVbmljb2RlLmVsbGlwc2lzKSk7XG4gICAgICBsZXQgY2xhdXNlX2RvYyA9XG4gICAgICAgIHNldHRpbmdzLnNob3dfY2FzZV9jbGF1c2VzXG4gICAgICAgICAgPyBjaG9pY2VzKFtcbiAgICAgICAgICAgICAgaGNhdHMoW3NwYWNlKCksIGdvJyh+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSwgZGNsYXVzZSwga2luZCldKSxcbiAgICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICAgICAgICAgIGluZGVudF9hbmRfYWxpZ24oZ28nKH5lbmZvcmNlX2lubGluZT1mYWxzZSwgZGNsYXVzZSwga2luZCkpLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgOiBoY2F0KHNwYWNlKCksIGhpZGRlbl9jbGF1c2UpO1xuICAgICAgaGNhdHMoW1xuICAgICAgICBESERvY19jb21tb24uRGVsaW0uYmFyX1J1bGUsXG4gICAgICAgIERIRG9jX1BhdC5tayhkcClcbiAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICAgICAgICAgKSxcbiAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmFycm93X1J1bGUsXG4gICAgICAgIGNsYXVzZV9kb2MsXG4gICAgICBdKTtcbiAgICB9O1xuICAgIGxldCBnb19jYXNlID0gKGRzY3J1dCwgZHJzLCBjb25zaXN0ZW50KSA9PlxuICAgICAgaWYgKGVuZm9yY2VfaW5saW5lKSB7XG4gICAgICAgIGZhaWwoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBraW5kOiBFdmFsQ3R4LmNscyA9XG4gICAgICAgICAgaWYgKGNvbnNpc3RlbnQpIHtDb25zaXN0ZW50Q2FzZX0gZWxzZSB7SW5jb25zaXN0ZW50QnJhbmNoZXN9O1xuICAgICAgICBsZXQgc2NydXRfZG9jID1cbiAgICAgICAgICBjaG9pY2VzKFtcbiAgICAgICAgICAgIGhjYXRzKFtzcGFjZSgpLCBnbycofmVuZm9yY2VfaW5saW5lPXRydWUsIGRzY3J1dCwga2luZCldKSxcbiAgICAgICAgICAgIGhjYXRzKFtcbiAgICAgICAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgICAgICAgIGluZGVudF9hbmRfYWxpZ24oZ28nKH5lbmZvcmNlX2lubGluZT1mYWxzZSwgZHNjcnV0LCBraW5kKSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgdnNlcHMoXG4gICAgICAgICAgTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgW2hjYXQoREhEb2NfY29tbW9uLkRlbGltLm9wZW5fQ2FzZSwgc2NydXRfZG9jKV0sXG4gICAgICAgICAgICBkcnMgfD4gTGlzdC5tYXBpKGdvX2Nhc2VfcnVsZShjb25zaXN0ZW50KSksXG4gICAgICAgICAgICBbREhEb2NfY29tbW9uLkRlbGltLmNsb3NlX0Nhc2VdLFxuICAgICAgICAgIF0pLFxuICAgICAgICApO1xuICAgICAgfTtcbiAgICBsZXQgZ29fZm9ybWF0dGFibGUgPSAofmVuZm9yY2VfaW5saW5lKSA9PiBnbycofmVuZm9yY2VfaW5saW5lKTtcbiAgICBsZXQgbWtfbGVmdF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyA9IChwcmVjZWRlbmNlX29wLCAoZDEsIGwpLCAoZDIsIHIpKSA9PiAoXG4gICAgICBnb19mb3JtYXR0YWJsZShkMSwgbCkgfD4gcGFyZW50aGVzaXplKHByZWNlZGVuY2UoZDEpID4gcHJlY2VkZW5jZV9vcCksXG4gICAgICBnb19mb3JtYXR0YWJsZShkMiwgcikgfD4gcGFyZW50aGVzaXplKHByZWNlZGVuY2UoZDIpID49IHByZWNlZGVuY2Vfb3ApLFxuICAgICk7XG4gICAgbGV0IG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzID0gKHByZWNlZGVuY2Vfb3AsIChkMSwgbCksIChkMiwgcikpID0+IChcbiAgICAgIGdvX2Zvcm1hdHRhYmxlKGQxLCBsKSB8PiBwYXJlbnRoZXNpemUocHJlY2VkZW5jZShkMSkgPj0gcHJlY2VkZW5jZV9vcCksXG4gICAgICBnb19mb3JtYXR0YWJsZShkMiwgcikgfD4gcGFyZW50aGVzaXplKHByZWNlZGVuY2UoZDIpID4gcHJlY2VkZW5jZV9vcCksXG4gICAgKTtcbiAgICBsZXQgZG9jID0ge1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICB8IENsb3N1cmUoZW52JywgZCcpID0+IGdvJyhkJywgQ2xvc3VyZSwgfmVudj1lbnYnKVxuICAgICAgfCBGaWx0ZXIoZmx0LCBkJykgPT5cbiAgICAgICAgaWYgKHNldHRpbmdzLnNob3dfc3RlcHBlcl9maWx0ZXJzKSB7XG4gICAgICAgICAgc3dpdGNoIChmbHQpIHtcbiAgICAgICAgICB8IEZpbHRlcih7cGF0LCBhY3R9KSA9PlxuICAgICAgICAgICAgbGV0IGtleXdvcmQgPSBGaWx0ZXJBY3Rpb24uc3RyaW5nX29mX3QoYWN0KTtcbiAgICAgICAgICAgIGxldCBmbHRfZG9jID0gZ29fZm9ybWF0dGFibGUocGF0LCBGaWx0ZXJQYXR0ZXJuKTtcbiAgICAgICAgICAgIHZzZXBzKFtcbiAgICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhrZXl3b3JkKSxcbiAgICAgICAgICAgICAgICBmbHRfZG9jXG4gICAgICAgICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJpblwiKSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIGdvJyhkJywgRmlsdGVyKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIHwgUmVzaWR1ZShfLCBhY3QpID0+XG4gICAgICAgICAgICBsZXQga2V5d29yZCA9IEZpbHRlckFjdGlvbi5zdHJpbmdfb2ZfdChhY3QpO1xuICAgICAgICAgICAgdnNlcHMoW0RIRG9jX2NvbW1vbi5EZWxpbS5tayhrZXl3b3JkKSwgZ28nKGQnLCBGaWx0ZXIpXSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2l0Y2ggKGZsdCkge1xuICAgICAgICAgIHwgUmVzaWR1ZShfKSA9PiBnbycoZCcsIEZpbHRlcilcbiAgICAgICAgICB8IEZpbHRlcihfKSA9PiBnbycoZCcsIEZpbHRlcilcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgIC8qIEhvbGUgZXhwcmVzc2lvbnMgbXVzdCBhcHBlYXIgd2l0aGluIGEgY2xvc3VyZSBpblxuICAgICAgICAgdGhlIHBvc3Rwcm9jZXNzZWQgcmVzdWx0ICovXG4gICAgICB8IEVtcHR5SG9sZSh1LCBpKSA9PlxuICAgICAgICBsZXQgc2VsZWN0ZWQgPVxuICAgICAgICAgIHN3aXRjaCAoc2VsZWN0ZWRfaG9sZV9pbnN0YW5jZSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgICAgIHwgU29tZSgodScsIGknKSkgPT4gdSA9PSB1JyAmJiBpID09IGknXG4gICAgICAgICAgfTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0VtcHR5SG9sZSh+c2VsZWN0ZWQsICh1LCBpKSk7XG4gICAgICB8IE5vbkVtcHR5SG9sZShyZWFzb24sIHUsIGksIGQnKSA9PlxuICAgICAgICBnbycoZCcsIE5vbkVtcHR5SG9sZSlcbiAgICAgICAgfD4gYW5ub3QoREhBbm5vdC5Ob25FbXB0eUhvbGUocmVhc29uLCAodSwgaSkpKVxuICAgICAgfCBFeHBhbmRpbmdLZXl3b3JkKHUsIGksIGspID0+XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19FeHBhbmRpbmdLZXl3b3JkKCh1LCBpKSwgaylcbiAgICAgIHwgRnJlZVZhcih1LCBpLCB4KSA9PlxuICAgICAgICB0ZXh0KHgpIHw+IGFubm90KERIQW5ub3QuVmFySG9sZShGcmVlLCAodSwgaSkpKVxuICAgICAgfCBJbnZhbGlkVGV4dCh1LCBpLCB0KSA9PiBESERvY19jb21tb24ubWtfSW52YWxpZFRleHQodCwgKHUsIGkpKVxuICAgICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyh1LCBpLCBDYXNlKGRzY3J1dCwgZHJzLCBfKSkgPT5cbiAgICAgICAgZ29fY2FzZShkc2NydXQsIGRycywgZmFsc2UpXG4gICAgICAgIHw+IGFubm90KERIQW5ub3QuSW5jb25zaXN0ZW50QnJhbmNoZXMoKHUsIGkpKSlcbiAgICAgIHwgQm91bmRWYXIoeCkgd2hlbiBMaXN0Lm1lbSh4LCByZWN1cnNpdmVfY2FsbHMpID0+IHRleHQoeClcbiAgICAgIHwgQm91bmRWYXIoeCkgd2hlbiBzZXR0aW5ncy5zaG93X2xvb2t1cF9zdGVwcyA9PiB0ZXh0KHgpXG4gICAgICB8IEJvdW5kVmFyKHgpID0+XG4gICAgICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgICAgIHwgTm9uZSA9PiB0ZXh0KHgpXG4gICAgICAgIHwgU29tZShkJykgPT5cbiAgICAgICAgICBpZiAoTGlzdC5tZW0oeCwgcmVjZW50X3N1YnN0KSkge1xuICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICBnbycofmVudj1DbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIEJvdW5kVmFyKHgpLCBCb3VuZFZhcilcbiAgICAgICAgICAgICAgfD4gYW5ub3QoREhBbm5vdC5TdWJzdGl0dXRlZCksXG4gICAgICAgICAgICAgIGdvJyh+ZW52PUNsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgZCcsIEJvdW5kVmFyKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnbycofmVudj1DbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIGQnLCBCb3VuZFZhcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB8IEJ1aWx0aW5GdW4oZikgPT4gdGV4dChmKVxuICAgICAgfCBDb25zdHJ1Y3RvcihuYW1lKSA9PiBESERvY19jb21tb24ubWtfQ29uc3RydWN0b3JMaXQobmFtZSlcbiAgICAgIHwgQm9vbExpdChiKSA9PiBESERvY19jb21tb24ubWtfQm9vbExpdChiKVxuICAgICAgfCBJbnRMaXQobikgPT4gREhEb2NfY29tbW9uLm1rX0ludExpdChuKVxuICAgICAgfCBGbG9hdExpdChmKSA9PiBESERvY19jb21tb24ubWtfRmxvYXRMaXQoZilcbiAgICAgIHwgU3RyaW5nTGl0KHMpID0+IERIRG9jX2NvbW1vbi5ta19TdHJpbmdMaXQocylcbiAgICAgIHwgVGVzdChfLCBkKSA9PiBESERvY19jb21tb24ubWtfVGVzdChnbycoZCwgVGVzdCkpXG4gICAgICB8IFNlcXVlbmNlKGQxLCBkMikgPT5cbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9IChnbycoZDEsIFNlcXVlbmNlMSksIGdvJyhkMiwgU2VxdWVuY2UyKSk7XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19TZXF1ZW5jZShkb2MxLCBkb2MyKTtcbiAgICAgIHwgTGlzdExpdChfLCBfLCBfLCBkX2xpc3QpID0+XG4gICAgICAgIGxldCBvbCA9IGRfbGlzdCB8PiBMaXN0Lm1hcGkoKGksIGQpID0+IGdvJyhkLCBMaXN0TGl0KGkpKSk7XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19MaXN0TGl0KG9sKTtcbiAgICAgIHwgQXAoZDEsIGQyKSA9PlxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID0gKFxuICAgICAgICAgIGdvX2Zvcm1hdHRhYmxlKGQxLCBBcDEpXG4gICAgICAgICAgfD4gcGFyZW50aGVzaXplKHByZWNlZGVuY2UoZDEpID4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQXApLFxuICAgICAgICAgIGdvJyhkMiwgQXAyKSxcbiAgICAgICAgKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0FwKGRvYzEsIGRvYzIpO1xuICAgICAgfCBBcEJ1aWx0aW4oaWRlbnQsIGQpID0+XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19BcChcbiAgICAgICAgICB0ZXh0KGlkZW50KSxcbiAgICAgICAgICBnb19mb3JtYXR0YWJsZShkLCBBcEJ1aWx0aW4pXG4gICAgICAgICAgfD4gcGFyZW50aGVzaXplKHByZWNlZGVuY2UoZCkgPiBESERvY19jb21tb24ucHJlY2VkZW5jZV9BcCksXG4gICAgICAgIClcbiAgICAgIHwgQmluSW50T3Aob3AsIGQxLCBkMikgPT5cbiAgICAgICAgLy8gVE9ETyBhc3N1bWVzIGFsbCBiaW4gaW50IG9wcyBhcmUgbGVmdCBhc3NvY2lhdGl2ZVxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgICBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzKFxuICAgICAgICAgICAgcHJlY2VkZW5jZV9iaW5faW50X29wKG9wKSxcbiAgICAgICAgICAgIChkMSwgQmluSW50T3AxKSxcbiAgICAgICAgICAgIChkMiwgQmluSW50T3AyKSxcbiAgICAgICAgICApO1xuICAgICAgICBoc2VwcyhbZG9jMSwgbWtfYmluX2ludF9vcChvcCksIGRvYzJdKTtcbiAgICAgIHwgQmluRmxvYXRPcChvcCwgZDEsIGQyKSA9PlxuICAgICAgICAvLyBUT0RPIGFzc3VtZXMgYWxsIGJpbiBmbG9hdCBvcHMgYXJlIGxlZnQgYXNzb2NpYXRpdmVcbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9XG4gICAgICAgICAgbWtfbGVmdF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyhcbiAgICAgICAgICAgIHByZWNlZGVuY2VfYmluX2Zsb2F0X29wKG9wKSxcbiAgICAgICAgICAgIChkMSwgQmluRmxvYXRPcDEpLFxuICAgICAgICAgICAgKGQyLCBCaW5GbG9hdE9wMiksXG4gICAgICAgICAgKTtcbiAgICAgICAgaHNlcHMoW2RvYzEsIG1rX2Jpbl9mbG9hdF9vcChvcCksIGRvYzJdKTtcbiAgICAgIHwgQmluU3RyaW5nT3Aob3AsIGQxLCBkMikgPT5cbiAgICAgICAgLy8gVE9ETyBhc3N1bWVzIGFsbCBiaW4gc3RyaW5nIG9wcyBhcmUgbGVmdCBhc3NvY2lhdGl2ZVxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgICBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzKFxuICAgICAgICAgICAgcHJlY2VkZW5jZV9iaW5fc3RyaW5nX29wKG9wKSxcbiAgICAgICAgICAgIChkMSwgQmluU3RyaW5nT3AxKSxcbiAgICAgICAgICAgIChkMiwgQmluU3RyaW5nT3AyKSxcbiAgICAgICAgICApO1xuICAgICAgICBoc2VwcyhbZG9jMSwgbWtfYmluX3N0cmluZ19vcChvcCksIGRvYzJdKTtcbiAgICAgIHwgQ29ucyhkMSwgZDIpID0+XG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPVxuICAgICAgICAgIG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzKFxuICAgICAgICAgICAgREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQ29ucyxcbiAgICAgICAgICAgIChkMSwgQ29uczEpLFxuICAgICAgICAgICAgKGQyLCBDb25zMiksXG4gICAgICAgICAgKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0NvbnMoZG9jMSwgZG9jMik7XG4gICAgICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgICBta19yaWdodF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyhcbiAgICAgICAgICAgIERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX1BsdXMsXG4gICAgICAgICAgICAoZDEsIExpc3RDb25jYXQxKSxcbiAgICAgICAgICAgIChkMiwgTGlzdENvbmNhdDIpLFxuICAgICAgICAgICk7XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19MaXN0Q29uY2F0KGRvYzEsIGRvYzIpO1xuICAgICAgfCBCaW5Cb29sT3Aob3AsIGQxLCBkMikgPT5cbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9XG4gICAgICAgICAgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoXG4gICAgICAgICAgICBwcmVjZWRlbmNlX2Jpbl9ib29sX29wKG9wKSxcbiAgICAgICAgICAgIChkMSwgQmluQm9vbE9wMSksXG4gICAgICAgICAgICAoZDIsIEJpbkJvb2xPcDIpLFxuICAgICAgICAgICk7XG4gICAgICAgIGhzZXBzKFtkb2MxLCBta19iaW5fYm9vbF9vcChvcCksIGRvYzJdKTtcbiAgICAgIHwgVHVwbGUoW10pID0+IERIRG9jX2NvbW1vbi5EZWxpbS50cml2XG4gICAgICB8IFR1cGxlKGRzKSA9PlxuICAgICAgICBESERvY19jb21tb24ubWtfVHVwbGUoZHMgfD4gTGlzdC5tYXBpKChpLCBkKSA9PiBnbycoZCwgVHVwbGUoaSkpKSlcbiAgICAgIHwgUHJqKGQsIG4pID0+IERIRG9jX2NvbW1vbi5ta19QcmooZ28nKGQsIFByaiksIG4pXG4gICAgICB8IENvbnNpc3RlbnRDYXNlKENhc2UoZHNjcnV0LCBkcnMsIF8pKSA9PiBnb19jYXNlKGRzY3J1dCwgZHJzLCB0cnVlKVxuICAgICAgfCBDYXN0KGQsIF8sIHR5KSB3aGVuIHNldHRpbmdzLnNob3dfY2FzdHMgPT5cbiAgICAgICAgLy8gVE9ET1tNYXR0XTogUm9sbCBtdWx0aXBsZSBjYXN0cyBpbnRvIG9uZSBjYXN0XG4gICAgICAgIGxldCBkb2MgPSBnbycoZCwgQ2FzdCk7XG4gICAgICAgIERvYy4oXG4gICAgICAgICAgaGNhdChcbiAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgIGFubm90KFxuICAgICAgICAgICAgICBESEFubm90LkNhc3REZWNvcmF0aW9uLFxuICAgICAgICAgICAgICBESERvY19UeXAubWsofmVuZm9yY2VfaW5saW5lPXRydWUsIHR5KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfCBDYXN0KGQsIF8sIF8pID0+XG4gICAgICAgIGxldCBkb2MgPSBnbycoZCwgQ2FzdCk7XG4gICAgICAgIGRvYztcbiAgICAgIHwgTGV0KGRwLCBkZGVmLCBkYm9keSkgPT5cbiAgICAgICAgaWYgKGVuZm9yY2VfaW5saW5lKSB7XG4gICAgICAgICAgZmFpbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBiaW5kaW5ncyA9IERIUGF0LmJvdW5kX3ZhcnMoZHApO1xuICAgICAgICAgIGxldCBkZWZfZG9jID0gZ29fZm9ybWF0dGFibGUoZGRlZiwgTGV0MSk7XG4gICAgICAgICAgdnNlcHMoW1xuICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJsZXRcIiksXG4gICAgICAgICAgICAgIERIRG9jX1BhdC5tayhkcClcbiAgICAgICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZSxcbiAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKFwiPVwiKSxcbiAgICAgICAgICAgICAgZGVmX2RvY1xuICAgICAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJpblwiKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgZ28nKFxuICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgIH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhiaW5kaW5ncywgZW52KSxcbiAgICAgICAgICAgICAgfnJlY2VudF9zdWJzdD1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcih4ID0+ICFMaXN0Lm1lbSh4LCBiaW5kaW5ncyksIHJlY2VudF9zdWJzdCksXG4gICAgICAgICAgICAgIGRib2R5LFxuICAgICAgICAgICAgICBMZXQyLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgfCBGYWlsZWRDYXN0KENhc3QoZCwgdHkxLCB0eTIpLCB0eTInLCB0eTMpIHdoZW4gVHlwLmVxKHR5MiwgdHkyJykgPT5cbiAgICAgICAgbGV0IGRfZG9jID0gZ28nKGQsIEZhaWxlZENhc3RDYXN0KTtcbiAgICAgICAgbGV0IGNhc3RfZGVjb3JhdGlvbiA9XG4gICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm9wZW5fRmFpbGVkQ2FzdCxcbiAgICAgICAgICAgIGhzZXBzKFtcbiAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0eTEpLFxuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfRmFpbGVkQ2FzdCxcbiAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0eTMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uY2xvc2VfRmFpbGVkQ2FzdCxcbiAgICAgICAgICBdKVxuICAgICAgICAgIHw+IGFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlY29yYXRpb24pO1xuICAgICAgICBoY2F0cyhbZF9kb2MsIGNhc3RfZGVjb3JhdGlvbl0pO1xuICAgICAgfCBGYWlsZWRDYXN0KF9kLCBfdHkxLCBfdHkyKSA9PlxuICAgICAgICBmYWlsd2l0aChcInVuZXhwZWN0ZWQgRmFpbGVkQ2FzdCB3aXRob3V0IGlubmVyIGNhc3RcIilcbiAgICAgIHwgSW52YWxpZE9wZXJhdGlvbihkLCBlcnIpID0+XG4gICAgICAgIGxldCBkX2RvYyA9IGdvJyhkLCBJbnZhbGlkT3BlcmF0aW9uKTtcbiAgICAgICAgbGV0IGRlY29yYXRpb24gPVxuICAgICAgICAgIERvYy50ZXh0KEludmFsaWRPcGVyYXRpb25FcnJvci5lcnJfbXNnKGVycikpXG4gICAgICAgICAgfD4gYW5ub3QoREhBbm5vdC5PcGVyYXRpb25FcnJvcihlcnIpKTtcbiAgICAgICAgaGNhdHMoW2RfZG9jLCBkZWNvcmF0aW9uXSk7XG5cbiAgICAgIHwgSWZUaGVuRWxzZShfLCBjLCBkMSwgZDIpID0+XG4gICAgICAgIGxldCBjX2RvYyA9IGdvX2Zvcm1hdHRhYmxlKGMsIElmVGhlbkVsc2UxKTtcbiAgICAgICAgbGV0IGQxX2RvYyA9IGdvX2Zvcm1hdHRhYmxlKGQxLCBJZlRoZW5FbHNlMik7XG4gICAgICAgIGxldCBkMl9kb2MgPSBnb19mb3JtYXR0YWJsZShkMiwgSWZUaGVuRWxzZTMpO1xuICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKFwiKFwiKSxcbiAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJpZlwiKSxcbiAgICAgICAgICBjX2RvY1xuICAgICAgICAgIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQoXG4gICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgICksXG4gICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKFwidGhlblwiKSxcbiAgICAgICAgICBkMV9kb2NcbiAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBzcGFjZSgpKSxcbiAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICAgICAgICAgICApLFxuICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcImVsc2VcIiksXG4gICAgICAgICAgZDJfZG9jXG4gICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgZW1wdHkoKSksXG4gICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgKSxcbiAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCIpXCIpLFxuICAgICAgICBdKTtcbiAgICAgIHwgRnVuKGRwLCB0eSwgQ2xvc3VyZShlbnYnLCBkKSwgcykgPT5cbiAgICAgICAgaWYgKHNldHRpbmdzLnNob3dfZm5fYm9kaWVzKSB7XG4gICAgICAgICAgbGV0IGJpbmRpbmdzID0gREhQYXQuYm91bmRfdmFycyhkcCk7XG4gICAgICAgICAgbGV0IGJvZHlfZG9jID1cbiAgICAgICAgICAgIGdvX2Zvcm1hdHRhYmxlKFxuICAgICAgICAgICAgICBDbG9zdXJlKFxuICAgICAgICAgICAgICAgIENsb3N1cmVFbnZpcm9ubWVudC53aXRob3V0X2tleXMoT3B0aW9uLnRvX2xpc3QocyksIGVudicpLFxuICAgICAgICAgICAgICAgIGQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5lbnY9XG4gICAgICAgICAgICAgICAgQ2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhcbiAgICAgICAgICAgICAgICAgIERIUGF0LmJvdW5kX3ZhcnMoZHApIEAgT3B0aW9uLnRvX2xpc3QocyksXG4gICAgICAgICAgICAgICAgICBlbnYsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfnJlY2VudF9zdWJzdD1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcih4ID0+ICFMaXN0Lm1lbSh4LCBiaW5kaW5ncyksIHJlY2VudF9zdWJzdCksXG4gICAgICAgICAgICAgIEZ1bixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaGNhdHMoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5zeW1fRnVuLFxuICAgICAgICAgICAgICBESERvY19QYXQubWsoZHApXG4gICAgICAgICAgICAgIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQoXG4gICAgICAgICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBzcGFjZSgpKSxcbiAgICAgICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmUsXG4gICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICBAIChcbiAgICAgICAgICAgICAgc2V0dGluZ3Muc2hvd19jYXN0c1xuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmNvbG9uX0Z1bixcbiAgICAgICAgICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgICAgICAgICBESERvY19UeXAubWsofmVuZm9yY2VfaW5saW5lPXRydWUsIHR5KSxcbiAgICAgICAgICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW11cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIEAgW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfRnVuLFxuICAgICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgICBib2R5X2RvYyB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZT1mYWxzZSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3dpdGNoIChzKSB7XG4gICAgICAgICAgfCBOb25lID0+IGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFwiPGFub24gZm4+XCIpKVxuICAgICAgICAgIHwgU29tZShuYW1lKSA9PiBhbm5vdChESEFubm90LkNvbGxhcHNlZCwgdGV4dChcIjxcIiArKyBuYW1lICsrIFwiPlwiKSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB8IEZ1bihkcCwgdHksIGRib2R5LCBzKSA9PlxuICAgICAgICBpZiAoc2V0dGluZ3Muc2hvd19mbl9ib2RpZXMpIHtcbiAgICAgICAgICBsZXQgYmluZGluZ3MgPSBESFBhdC5ib3VuZF92YXJzKGRwKTtcbiAgICAgICAgICBsZXQgYm9keV9kb2MgPVxuICAgICAgICAgICAgZ29fZm9ybWF0dGFibGUoXG4gICAgICAgICAgICAgIGRib2R5LFxuICAgICAgICAgICAgICB+ZW52PUNsb3N1cmVFbnZpcm9ubWVudC53aXRob3V0X2tleXMoYmluZGluZ3MsIGVudiksXG4gICAgICAgICAgICAgIH5yZWNlbnRfc3Vic3Q9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXIoeCA9PiAhTGlzdC5tZW0oeCwgYmluZGluZ3MpLCByZWNlbnRfc3Vic3QpLFxuICAgICAgICAgICAgICB+cmVjdXJzaXZlX2NhbGxzPU9wdGlvbi50b19saXN0KHMpIEAgcmVjdXJzaXZlX2NhbGxzLFxuICAgICAgICAgICAgICBGdW4sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGhjYXRzKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uc3ltX0Z1bixcbiAgICAgICAgICAgICAgREhEb2NfUGF0Lm1rKGRwKVxuICAgICAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lLFxuICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgQCAoXG4gICAgICAgICAgICAgIHNldHRpbmdzLnNob3dfY2FzdHNcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5jb2xvbl9GdW4sXG4gICAgICAgICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0eSksXG4gICAgICAgICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBAIFtcbiAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmFycm93X0Z1bixcbiAgICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgICAgYm9keV9kb2MgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZCh+ZW5mb3JjZV9pbmxpbmUpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAocykge1xuICAgICAgICAgIHwgTm9uZSA9PiBhbm5vdChESEFubm90LkNvbGxhcHNlZCwgdGV4dChcIjxhbm9uIGZuPlwiKSlcbiAgICAgICAgICB8IFNvbWUobmFtZSkgPT4gYW5ub3QoREhBbm5vdC5Db2xsYXBzZWQsIHRleHQoXCI8XCIgKysgbmFtZSArKyBcIj5cIikpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfCBGaXhGKHgsIHR5LCBkYm9keSkgd2hlbiBzZXR0aW5ncy5zaG93X2ZpeHBvaW50cyA9PlxuICAgICAgICBsZXQgZG9jX2JvZHkgPVxuICAgICAgICAgIGdvX2Zvcm1hdHRhYmxlKFxuICAgICAgICAgICAgZGJvZHksXG4gICAgICAgICAgICB+ZW52PUNsb3N1cmVFbnZpcm9ubWVudC53aXRob3V0X2tleXMoW3hdLCBlbnYpLFxuICAgICAgICAgICAgRml4RixcbiAgICAgICAgICApO1xuICAgICAgICBoY2F0cyhcbiAgICAgICAgICBbREhEb2NfY29tbW9uLkRlbGltLmZpeF9GaXhGLCBzcGFjZSgpLCB0ZXh0KHgpXVxuICAgICAgICAgIEAgKFxuICAgICAgICAgICAgc2V0dGluZ3Muc2hvd19jYXN0c1xuICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uY29sb25fRnVuLFxuICAgICAgICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0eSksXG4gICAgICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgKVxuICAgICAgICAgIEAgW1xuICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmFycm93X0ZpeEYsXG4gICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgZG9jX2JvZHkgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZCh+ZW5mb3JjZV9pbmxpbmUpLFxuICAgICAgICAgIF0sXG4gICAgICAgICk7XG4gICAgICB8IEZpeEYoeCwgXywgZCkgPT5cbiAgICAgICAgZ28nKH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhbeF0sIGVudiksIGQsIEZpeEYpXG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IHN0ZXBwYWJsZSA9XG4gICAgICBuZXh0X3N0ZXBzIHw+IExpc3QuZmluZF9vcHQoKChjdHgsIF8pKSA9PiBjdHggPT0gRXZhbEN0eC5NYXJrKTtcbiAgICBsZXQgc3RlcHBlZCA9XG4gICAgICBjaG9zZW5fc3RlcFxuICAgICAgfD4gT3B0aW9uLm1hcCh4ID0+IHguY3R4ID09IE1hcmspXG4gICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9ZmFsc2UpO1xuICAgIGxldCBzdWJzdGl0dXRpb24gPVxuICAgICAgaGlkZGVuX3N0ZXBzXG4gICAgICB8PiBMaXN0LmZpbmRfb3B0KHN0ZXAgPT5cbiAgICAgICAgICAgc3RlcC5rbmQgPT0gVmFyTG9va3VwXG4gICAgICAgICAgIC8vIEhBQ0tbTWF0dF06IHRvIHByZXZlbnQgc3Vic3RpdHV0aW9ucyBoaWRpbmcgaW5zaWRlIGNhc3RzXG4gICAgICAgICAgICYmIEV2YWxDdHguZnV6enlfbWFyayhzdGVwLmN0eClcbiAgICAgICAgICk7XG4gICAgbGV0IGRvYyA9XG4gICAgICBzd2l0Y2ggKHN1YnN0aXR1dGlvbikge1xuICAgICAgfCBTb21lKHtkX2xvYzogQm91bmRWYXIodiksIF99KSB3aGVuIExpc3QubWVtKHYsIHJlY2VudF9zdWJzdCkgPT5cbiAgICAgICAgaGNhdHMoW3RleHQodikgfD4gYW5ub3QoREhBbm5vdC5TdWJzdGl0dXRlZCksIGRvY10pXG4gICAgICB8IFNvbWUoXylcbiAgICAgIHwgTm9uZSA9PiBkb2NcbiAgICAgIH07XG4gICAgbGV0IGRvYyA9XG4gICAgICBpZiAoc3RlcHBlZCkge1xuICAgICAgICBhbm5vdChESEFubm90LlN0ZXBwZWQsIGRvYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHN0ZXBwYWJsZSkge1xuICAgICAgICB8IFNvbWUoKF8sIGZ1bGwpKSA9PiBhbm5vdChESEFubm90LlN0ZXBwYWJsZShmdWxsKSwgZG9jKVxuICAgICAgICB8IE5vbmUgPT4gZG9jXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIGRvYztcbiAgfTtcbiAgZ28oXG4gICAgZCxcbiAgICBlbnYsXG4gICAgZW5mb3JjZV9pbmxpbmUsXG4gICAgcHJldmlvdXNfc3RlcCxcbiAgICBoaWRkZW5fc3RlcHMsXG4gICAgY2hvc2VuX3N0ZXAsXG4gICAgTGlzdC5tYXBpKChpZHgsIHg6IEV2YWxPYmoudCkgPT4gKHguY3R4LCBpZHgpLCBuZXh0X3N0ZXBzKSxcbiAgICBbXSxcbiAgICBbXSxcbiAgKTtcbn07XG4iLCJvcGVuIFByZXR0eTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gTGF5b3V0LnQoREhBbm5vdC50KTtcbiIsIm1vZHVsZSBNZWFzdXJlZFBvc2l0aW9uID0gUHJldHR5Lk1lYXN1cmVkUG9zaXRpb247XG5tb2R1bGUgTWVhc3VyZWRMYXlvdXQgPSBQcmV0dHkuTWVhc3VyZWRMYXlvdXQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IE1lYXN1cmVkTGF5b3V0LnQoREhBbm5vdC50KTtcbnR5cGUgd2l0aF9vZmZzZXQgPSBNZWFzdXJlZExheW91dC53aXRoX29mZnNldChESEFubm90LnQpO1xuaW5jbHVkZSBNZWFzdXJlZExheW91dC5NYWtlKFdlYWtNYXApO1xuIiwib3BlbiBWaXJ0dWFsX2RvbTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbDtcbm9wZW4gUHJldHR5O1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCB3aXRoX2NscyA9IGNscyA9PiBOb2RlLnNwYW4ofmF0dHI9QXR0ci5jbGFzc2VzKFtjbHNdKSk7XG5cbmxldCB2aWV3X29mX2xheW91dCA9XG4gICAgKH5pbmplY3QsIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsIH5yZXN1bHRfa2V5LCBsOiBESExheW91dC50KVxuICAgIDogTm9kZS50ID0+IHtcbiAgbGV0IGNvcm5lcl9yYWRpaSA9IERlY29yYXRpb25fY29tbW9uLmNvcm5lcl9yYWRpaShmb250X21ldHJpY3MpO1xuICBsZXQgKHRleHQsIGRlY29yYXRpb25zKSA9XG4gICAgREhNZWFzdXJlZExheW91dC5tayhsKVxuICAgIHw+IE1lYXN1cmVkTGF5b3V0LnBvc19mb2xkKFxuICAgICAgICAgfmxpbmVicmVhaz1fID0+IChbTm9kZS5icigpXSwgW10pLFxuICAgICAgICAgfnRleHQ9KF8sIHMpID0+IChbTm9kZS50ZXh0KHMpXSwgW10pLFxuICAgICAgICAgfmFsaWduPVxuICAgICAgICAgICAoXywgKHR4dCwgZHMpKSA9PlxuICAgICAgICAgICAgIChbTm9kZS5kaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcIkFsaWduXCJdKSwgdHh0KV0sIGRzKSxcbiAgICAgICAgIH5jYXQ9KF8sICh0eHQxLCBkczEpLCAodHh0MiwgZHMyKSkgPT4gKHR4dDEgQCB0eHQyLCBkczEgQCBkczIpLFxuICAgICAgICAgfmFubm90PVxuICAgICAgICAgICAofmdvLCB+aW5kZW50LCB+c3RhcnQsIGFubm90OiBESEFubm90LnQsIG0pID0+IHtcbiAgICAgICAgICAgICBsZXQgKHR4dCwgZHMpID0gZ28obSk7XG4gICAgICAgICAgICAgc3dpdGNoIChhbm5vdCkge1xuICAgICAgICAgICAgIHwgU3RlcHBhYmxlKG9iaikgPT4gKFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgTm9kZS5zcGFuKFxuICAgICAgICAgICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5jbGFzc18oXCJzdGVwcGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5TdGVwcGVyQWN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RlcEZvcndhcmQob2JqKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgIHR4dCxcbiAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IFN0ZXBwZWQgPT4gKFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgTm9kZS5zcGFuKH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzdGVwcGVkXCIpXSksIHR4dCksXG4gICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgIGRzLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgU3RlcChfKVxuICAgICAgICAgICAgIHwgU3Vic3RpdHV0ZWQgPT4gKFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgTm9kZS5zcGFuKFxuICAgICAgICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInN1YnN0aXR1dGVkXCIpXSksXG4gICAgICAgICAgICAgICAgICAgICB0eHQsXG4gICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgZHMsXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfCBUZXJtID0+ICh0eHQsIGRzKVxuICAgICAgICAgICAgIHwgQ29sbGFwc2VkID0+IChbd2l0aF9jbHMoXCJDb2xsYXBzZWRcIiwgdHh0KV0sIGRzKVxuICAgICAgICAgICAgIHwgSG9sZUxhYmVsID0+IChbd2l0aF9jbHMoXCJIb2xlTGFiZWxcIiwgdHh0KV0sIGRzKVxuICAgICAgICAgICAgIHwgRGVsaW0gPT4gKFt3aXRoX2NscyhcImNvZGUtZGVsaW1cIiwgdHh0KV0sIGRzKVxuICAgICAgICAgICAgIHwgRW1wdHlIb2xlKHNlbGVjdGVkLCBfaW5zdCkgPT4gKFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgTm9kZS5zcGFuKFxuICAgICAgICAgICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRW1wdHlIb2xlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zZWxlY3RlZCA/IFtcInNlbGVjdGVkXCJdIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBWZG9tLkVmZmVjdC5NYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRvbS5FZmZlY3QuU3RvcF9wcm9wYWdhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pbmplY3QoTW9kZWxBY3Rpb24uU2VsZWN0SG9sZUluc3RhbmNlKGluc3QpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICB0eHQsXG4gICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgZHMsXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfCBGYWlsZWRDYXN0RGVsaW0gPT4gKFt3aXRoX2NscyhcIkZhaWxlZENhc3REZWxpbVwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBGYWlsZWRDYXN0RGVjb3JhdGlvbiA9PiAoXG4gICAgICAgICAgICAgICAgIFt3aXRoX2NscyhcIkZhaWxlZENhc3REZWNvcmF0aW9uXCIsIHR4dCldLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IENhc3REZWNvcmF0aW9uID0+IChbd2l0aF9jbHMoXCJDYXN0RGVjb3JhdGlvblwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBPcGVyYXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgRGl2aWRlQnlaZXJvIHwgSW52YWxpZE9mU3RyaW5nIHwgSW5kZXhPdXRPZkJvdW5kcyxcbiAgICAgICAgICAgICAgICkgPT4gKFxuICAgICAgICAgICAgICAgICBbd2l0aF9jbHMoXCJPcGVyYXRpb25FcnJvclwiLCB0eHQpXSxcbiAgICAgICAgICAgICAgICAgZHMsXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfCBPcGVyYXRpb25FcnJvcihOZWdhdGl2ZUV4cG9uZW50KSA9PiAoXG4gICAgICAgICAgICAgICAgIFt3aXRoX2NscyhcIk9wZXJhdGlvbkVycm9yXCIsIHR4dCldLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IE9wZXJhdGlvbkVycm9yKE91dE9mRnVlbCkgPT4gKFxuICAgICAgICAgICAgICAgICBbd2l0aF9jbHMoXCJPcGVyYXRpb25FcnJvclwiLCB0eHQpXSxcbiAgICAgICAgICAgICAgICAgZHMsXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfCBWYXJIb2xlKF8pID0+IChbd2l0aF9jbHMoXCJJblZhckhvbGVcIiwgdHh0KV0sIGRzKVxuICAgICAgICAgICAgIHwgSW52YWxpZCgoXywgKC02NjYpKSkgPT5cbiAgICAgICAgICAgICAgIC8qIEV2YWx1YXRpb24gYW5kIEVsYWJvcmF0aW9uIGV4Y2VwdGlvbnMgKi9cbiAgICAgICAgICAgICAgIChbd2l0aF9jbHMoXCJleGNlcHRpb25cIiwgdHh0KV0sIGRzKVxuICAgICAgICAgICAgIHwgTm9uRW1wdHlIb2xlKF8pXG4gICAgICAgICAgICAgfCBJbmNvbnNpc3RlbnRCcmFuY2hlcyhfKVxuICAgICAgICAgICAgIHwgSW52YWxpZChfKSA9PlxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHN0YXJ0LmNvbCAtIGluZGVudDtcbiAgICAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID1cbiAgICAgICAgICAgICAgICAgRGVjb3JhdGlvbl9jb21tb24uY29udGFpbmVyKFxuICAgICAgICAgICAgICAgICAgIH5jb250YWluZXJfdHlwZT1TdmcsXG4gICAgICAgICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICB+aGVpZ2h0PU1lYXN1cmVkTGF5b3V0LmhlaWdodChtKSxcbiAgICAgICAgICAgICAgICAgICB+d2lkdGg9TWVhc3VyZWRMYXlvdXQud2lkdGgofm9mZnNldCwgbSksXG4gICAgICAgICAgICAgICAgICAgfm9yaWdpbj1NZWFzdXJlZFBvc2l0aW9uLntyb3c6IHN0YXJ0LnJvdywgY29sOiBpbmRlbnR9LFxuICAgICAgICAgICAgICAgICAgIH5jbHM9XCJlcnItaG9sZVwiLFxuICAgICAgICAgICAgICAgICAgIFtESERlY29yYXRpb24uRXJySG9sZS52aWV3KH5jb3JuZXJfcmFkaWksIChvZmZzZXQsIG0pKV0sXG4gICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAodHh0LCBbZGVjb3JhdGlvbiwgLi4uZHNdKTtcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgICB9LFxuICAgICAgICk7XG4gIE5vZGUuZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJESENvZGVcIl0pLFxuICAgIFt3aXRoX2NscyhcImNvZGVcIiwgdGV4dCksIC4uLmRlY29yYXRpb25zXSxcbiAgKTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+bG9ja2VkIGFzIF89ZmFsc2UsIC8vIE5PVEU6IFdoZW4gd2UgYWRkIG1vdXNlIGV2ZW50cyB0byB0aGlzLCBpZ25vcmUgdGhlbSBpZiBsb2NrZWRcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy5FdmFsdWF0aW9uLnQsXG4gICAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZTogb3B0aW9uKEhvbGVJbnN0YW5jZS50KSxcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+d2lkdGg6IGludCxcbiAgICAgIH5wb3M9MCxcbiAgICAgIH5wcmV2aW91c19zdGVwOiBvcHRpb24oRXZhbHVhdG9yU3RlcC5zdGVwKT1Ob25lLCAvLyBUaGUgc3RlcCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGFib3ZlIHRoaXMgb25lXG4gICAgICB+aGlkZGVuX3N0ZXBzOiBsaXN0KEV2YWx1YXRvclN0ZXAuc3RlcCk9W10sIC8vIFRoZSBoaWRkZW4gc3RlcHMgYmV0d2VlbiB0aGUgYWJvdmUgYW5kIHRoZSBjdXJyZW50IG9uZVxuICAgICAgfmNob3Nlbl9zdGVwOiBvcHRpb24oRXZhbHVhdG9yU3RlcC5zdGVwKT1Ob25lLCAvLyBUaGUgc3RlcCB0aGF0IHdpbGwgYmUgdGFrZW4gbmV4dFxuICAgICAgfm5leHRfc3RlcHM6IGxpc3QoRXZhbHVhdG9yU3RlcC5FdmFsT2JqLnQpPVtdLFxuICAgICAgfnJlc3VsdF9rZXk6IHN0cmluZyxcbiAgICAgIGQ6IERIRXhwLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgREhEb2NfRXhwLm1rKFxuICAgIH5wcmV2aW91c19zdGVwLFxuICAgIH5oaWRkZW5fc3RlcHMsXG4gICAgfmNob3Nlbl9zdGVwLFxuICAgIH5uZXh0X3N0ZXBzLFxuICAgIH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LmVtcHR5LFxuICAgIH5zZXR0aW5ncyxcbiAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2UsXG4gICAgZCxcbiAgKVxuICB8PiBMYXlvdXRPZkRvYy5sYXlvdXRfb2ZfZG9jKH53aWR0aCwgfnBvcylcbiAgfD4gT3B0VXRpbC5nZXQoKCkgPT5cbiAgICAgICBmYWlsd2l0aChcInVuaW1wbGVtZW50ZWQ6IHZpZXdfb2ZfZGhleHAgb24gbGF5b3V0IGZhaWx1cmVcIilcbiAgICAgKVxuICB8PiB2aWV3X29mX2xheW91dCh+aW5qZWN0LCB+Zm9udF9tZXRyaWNzLCB+cmVzdWx0X2tleSk7XG59O1xuXG50eXBlIGZvbnRfbWV0cmljcyA9IEZvbnRNZXRyaWNzLnQ7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5tb2R1bGUgVGVzdFN0YXR1cyA9IEhhejNsY29yZS5UZXN0U3RhdHVzO1xubW9kdWxlIFRlc3RNYXAgPSBIYXozbGNvcmUuVGVzdE1hcDtcbm1vZHVsZSBUZXN0UmVzdWx0cyA9IEhhejNsY29yZS5UZXN0UmVzdWx0cztcbm1vZHVsZSBJbnRlcmZhY2UgPSBIYXozbGNvcmUuSW50ZXJmYWNlO1xuXG5sZXQgdGVzdF9pbnN0YW5jZV92aWV3ID1cbiAgICAofnNldHRpbmdzLCB+aW5qZWN0LCB+Zm9udF9tZXRyaWNzLCAoZCwgc3RhdHVzKTogVGVzdE1hcC5pbnN0YW5jZV9yZXBvcnQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbY2xzcyhbXCJ0ZXN0LWluc3RhbmNlXCIsIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyldKV0pLFxuICAgIFtcbiAgICAgIERIQ29kZS52aWV3KFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5zZWxlY3RlZF9ob2xlX2luc3RhbmNlPU5vbmUsXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH53aWR0aD00MCxcbiAgICAgICAgfnJlc3VsdF9rZXk9XCJcIixcbiAgICAgICAgZCxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcblxubGV0IGp1bXBfdG9fdGVzdCA9ICh+aW5qZWN0LCBwb3MsIGlkLCBfKSA9PiB7XG4gIGxldCBlZmZlY3QxID0gaW5qZWN0KFVwZGF0ZS5Td2l0Y2hFZGl0b3IocG9zKSk7XG4gIGxldCBlZmZlY3QyID0gaW5qZWN0KFVwZGF0ZS5QZXJmb3JtQWN0aW9uKEp1bXAoVGlsZUlkKGlkKSkpKTtcbiAgRWZmZWN0LmJpbmQoZWZmZWN0MSwgfmY9X3Jlc3VsdDEgPT4gZWZmZWN0Mik7XG59O1xuXG5sZXQgdGVzdF9yZXBvcnRfdmlldyA9XG4gICAgKFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfmluamVjdCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+ZGVzY3JpcHRpb246IG9wdGlvbihzdHJpbmcpPU5vbmUsXG4gICAgICBpOiBpbnQsXG4gICAgICAoaWQsIGluc3RhbmNlX3JlcG9ydHMpOiBUZXN0TWFwLnJlcG9ydCxcbiAgICApID0+IHtcbiAgbGV0IHN0YXR1cyA9XG4gICAgaW5zdGFuY2VfcmVwb3J0cyB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyB8PiBUZXN0U3RhdHVzLnRvX3N0cmluZztcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc18oXCJ0ZXN0LXJlcG9ydFwiKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhqdW1wX3RvX3Rlc3QofmluamVjdCwgWW91clRlc3RzVGVzdGluZywgaWQpKSxcbiAgICAgIF0pLFxuICAgIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJ0ZXN0LWlkXCIsIFwiVGVzdFwiICsrIHN0YXR1c10pLFxuICAgICAgICAvLyBub3RlOiBwcmludHMgbGV4aWNhbCBpbmRleCwgbm90IGlkXG4gICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaSArIDEpKV0sXG4gICAgICApLFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtaW5zdGFuY2VzXCIpLFxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICB0ZXN0X2luc3RhbmNlX3ZpZXcofnNldHRpbmdzLCB+aW5qZWN0LCB+Zm9udF9tZXRyaWNzKSxcbiAgICAgICAgICBpbnN0YW5jZV9yZXBvcnRzLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShkKSA9PiBbZGl2KH5hdHRyPWNsc3MoW1widGVzdC1kZXNjcmlwdGlvblwiXSksIFt0ZXh0KGQpXSldXG4gICAgICB9XG4gICAgKSxcbiAgKTtcbn07XG5cbmxldCB0ZXN0X3JlcG9ydHNfdmlldyA9XG4gICAgKH5zZXR0aW5ncywgfmluamVjdCwgfmZvbnRfbWV0cmljcywgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJwYW5lbC1ib2R5XCIsIFwidGVzdC1yZXBvcnRzXCJdKSxcbiAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXBvcnQgYXZhaWxhYmxlLlwiKV1cbiAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAoaSwgcikgPT5cbiAgICAgICAgICB0ZXN0X3JlcG9ydF92aWV3KFxuICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICB+ZGVzY3JpcHRpb249TGlzdC5udGhfb3B0KHRlc3RfcmVzdWx0cy5kZXNjcmlwdGlvbnMsIGkpLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHIsXG4gICAgICAgICAgKSxcbiAgICAgICAgdGVzdF9yZXN1bHRzLnRlc3RfbWFwLFxuICAgICAgKVxuICAgIH0sXG4gICk7XG5cbmxldCB0ZXN0X2Jhcl9zZWdtZW50ID0gKH5pbmplY3QsIHBvcywgKGlkLCByZXBvcnRzKSkgPT4ge1xuICBsZXQgc3RhdHVzID0gcmVwb3J0cyB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyB8PiBUZXN0U3RhdHVzLnRvX3N0cmluZztcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJzZWdtZW50XCIsIHN0YXR1c10pLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKGp1bXBfdG9fdGVzdCh+aW5qZWN0LCBwb3MsIGlkKSksXG4gICAgICBdKSxcbiAgICBbXSxcbiAgKTtcbn07XG5cbmxldCB0ZXN0X2JhciA9ICh+aW5qZWN0LCB+dGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50LCBwb3MpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtYmFyXCIpLFxuICAgIExpc3QubWFwKHRlc3RfYmFyX3NlZ21lbnQofmluamVjdCwgcG9zKSwgdGVzdF9yZXN1bHRzLnRlc3RfbWFwKSxcbiAgKTtcblxuLy8gcmVzdWx0X3N1bW1hcnlfc3RyIGFuZCB0ZXN0X3N1bW1hcnlfc3RyIGhhdmUgYmVlbiBtb3ZlZCB0byBoYXozbGNvcmUvVGVzdFJlc3VsdHMucmVcblxubGV0IHBlcmNlbnRfdmlldyA9IChuOiBpbnQsIHA6IGludCk6IE5vZGUudCA9PiB7XG4gIGxldCBwZXJjZW50YWdlID1cbiAgICBuID09IDAgPyAxMDAuIDogMTAwLiAqLiBmbG9hdF9vZl9pbnQocCkgLy4gZmxvYXRfb2ZfaW50KG4pO1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJ0ZXN0LXBlcmNlbnRcIiwgbiA9PSBwID8gXCJhbGwtcGFzc1wiIDogXCJzb21lLWZhaWxcIl0pLFxuICAgIFt0ZXh0KFByaW50Zi5zcHJpbnRmKFwiJS4wZiUlXCIsIHBlcmNlbnRhZ2UpKV0sXG4gICk7XG59O1xuXG5sZXQgdGVzdF9wZXJjZW50YWdlID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCk6IE5vZGUudCA9PlxuICBwZXJjZW50X3ZpZXcodGVzdF9yZXN1bHRzLnRvdGFsLCB0ZXN0X3Jlc3VsdHMucGFzc2luZyk7XG5cbmxldCB0ZXN0X3RleHQgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtdGV4dFwiKSxcbiAgICBbXG4gICAgICB0ZXN0X3BlcmNlbnRhZ2UodGVzdF9yZXN1bHRzKSxcbiAgICAgIGRpdihbdGV4dChcIjpcIildKSxcbiAgICAgIHRleHQoVGVzdFJlc3VsdHMudGVzdF9zdW1tYXJ5X3N0cih0ZXN0X3Jlc3VsdHMpKSxcbiAgICBdLFxuICApO1xuXG5sZXQgdGVzdF9zdW1tYXJ5ID0gKH5pbmplY3QsIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSkgPT4ge1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgIHtcbiAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gW05vZGUudGV4dChcIk5vIHRlc3QgcmVzdWx0cyBhdmFpbGFibGUuXCIpXVxuICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gW1xuICAgICAgICAgIHRlc3RfdGV4dCh0ZXN0X3Jlc3VsdHMpLFxuICAgICAgICAgIHRlc3RfYmFyKH5pbmplY3QsIH50ZXN0X3Jlc3VsdHMsIFlvdXJUZXN0c1Rlc3RpbmcpLFxuICAgICAgICBdXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59O1xuXG5sZXQgdmlld19vZl9tYWluX3RpdGxlX2JhciA9ICh0aXRsZV90ZXh0OiBzdHJpbmcpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1widGl0bGUtYmFyXCIsIFwicGFuZWwtdGl0bGUtYmFyXCJdKV0pLFxuICAgIFtOb2RlLnRleHQodGl0bGVfdGV4dCldLFxuICApO1xuXG5sZXQgaW5zcGVjdG9yX3ZpZXcgPVxuICAgIChcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfnRlc3RfbWFwOiBUZXN0TWFwLnQsXG4gICAgICBpZDogSGF6M2xjb3JlLklkLnQsXG4gICAgKVxuICAgIDogb3B0aW9uKHQpID0+IHtcbiAgc3dpdGNoIChUZXN0TWFwLmxvb2t1cChpZCwgdGVzdF9tYXApKSB7XG4gIHwgU29tZShpbnN0YW5jZXMpIHdoZW4gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VzKSAhPSBJbmRldCA9PlxuICAgIFNvbWUoXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1pbnNwZWN0b3JcIiksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtaW5zdGFuY2VzXCIpLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgIHRlc3RfaW5zdGFuY2Vfdmlldyh+c2V0dGluZ3MsIH5pbmplY3QsIH5mb250X21ldHJpY3MpLFxuICAgICAgICAgICAgICBpbnN0YW5jZXMsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgdGVzdF90cnVlX2V4ID0ge1xuICBzdWJfaWQ6IFRlc3RUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCB0cnVlIGVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGlzIGlzIHJlcG9ydGVkIGFzIGEgcGFzc2luZyB0ZXN0IGJlY2F1c2UgdGhlIGJvZHkgb2YgdGhlIHRlc3QgaXMgdHJ1ZS5cIixcbn07XG4vLyBUT0RPIGFyZSB0aGVzZSByZWFsbHkgdGhlIGNvcnJlY3QgbWVzc2FnZXMvZXhwbGFuYXRpb25zOyBtYXliZSBpbmNsdWRlIHNvbWV0aGluZyBhYm91dCB0aGUgcmVzdWx0IGJlaW5nIHRyaXZcbmxldCB0ZXN0X2ZhbHNlX2V4ID0ge1xuICBzdWJfaWQ6IFRlc3RGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcInRlc3QgMyA8IDEgZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoaXMgaXMgcmVwb3J0ZWQgYXMgYSBmYWlsaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyAzIDwgMSB3aGljaCBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IF9leHBfYm9keSA9IGV4cChcImVcIik7XG5sZXQgdGVzdF9leHBfY29sb3JpbmdfaWRzID0gKH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfYm9keSksIGJvZHlfaWQpLFxuXTtcbmxldCB0ZXN0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypib2R5Kl0oJXMpIG9mIHRoZSB0ZXN0IGV2YWx1dGVzIHRvIGB0cnVlYCwgdGhlIHRlc3QgcGFzc2VzLiBPdGhlcndpc2UsIHRoZSB0ZXN0IGZhaWxzLlwiO1xuICB7XG4gICAgaWQ6IFRlc3RFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta190ZXN0KFtbc3BhY2UoKSwgX2V4cF9ib2R5LCBzcGFjZSgpXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdGVzdF90cnVlX2V4LCB0ZXN0X2ZhbHNlX2V4XSxcbiAgfTtcbn07XG5cbmxldCB0ZXN0czogZ3JvdXAgPSB7aWQ6IFRlc3RFeHAsIGZvcm1zOiBbdGVzdF9leHBdfTtcbiIsIm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgaW50X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEludGAgdHlwZSBjbGFzc2lmaWVzIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMuXCI7XG4gIHtcbiAgICBpZDogSW50VHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiSW50XCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBmbG9hdF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIGBGbG9hdGAgdHlwZSBjbGFzc2lmaWVzIDY0LWJpdCBmbG9hdGluZy1wb2ludCB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBzdGFuZGFyZC5cIjtcbiAge1xuICAgIGlkOiBGbG9hdFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIkZsb2F0XCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBib29sX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEJvb2xgIHR5cGUgY2xhc3NpZmllcyBib29sZWFuIHZhbHVlcy5cIjtcbiAge1xuICAgIGlkOiBCb29sVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiQm9vbFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgc3RyX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYFN0cmluZ2AgdHlwZSBjbGFzc2lmaWVzIHN0cmluZyB2YWx1ZXMuXCI7XG4gIHtcbiAgICBpZDogU3RyVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiU3RyaW5nXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB2YXJfdHlwID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcImAlc2AgaXMgYSB0eXBlIHZhcmlhYmxlLlwiO1xuICB7XG4gICAgaWQ6IFZhclR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW25hbWUgfD4gYWJicmV2aWF0ZSB8PiB0eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGludDogZ3JvdXAgPSB7aWQ6IEludFR5cCwgZm9ybXM6IFtpbnRfdHlwXX07XG5cbmxldCBmbG9hdDogZ3JvdXAgPSB7aWQ6IEZsb2F0VHlwLCBmb3JtczogW2Zsb2F0X3R5cF19O1xuXG5sZXQgYm9vbDogZ3JvdXAgPSB7aWQ6IEJvb2xUeXAsIGZvcm1zOiBbYm9vbF90eXBdfTtcblxubGV0IHN0cjogZ3JvdXAgPSB7aWQ6IFN0clR5cCwgZm9ybXM6IFtzdHJfdHlwXX07XG5cbmxldCB2YXIgPSAobmFtZTogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBWYXJUeXAsIGZvcm1zOiBbdmFyX3R5cChuYW1lKV19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5sZXQgd2lsZF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlICp3aWxkY2FyZCBwYXR0ZXJuKiBtYXRjaGVzIGFueSBleHByZXNzaW9uLlwiO1xuICB7XG4gICAgaWQ6IFdpbGRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCJfXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBpbnRsaXRfcGF0ID0gKGk6IGludCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJWlgIG1hdGNoIHRoZSAqYCVpYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBJbnRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtpIHw+IHN0cmluZ19vZl9pbnQgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGZsb2F0bGl0X3BhdCA9IChmOiBmbG9hdCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJWZgIG1hdGNoIHRoZSAqYCVmYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBGbG9hdFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2YgfD4gc3RyaW5nX29mX2Zsb2F0IHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBib29sbGl0X3BhdCA9IChiOiBib29sKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlYmAgbWF0Y2ggdGhlICpgJWJgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEJvb2xQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtiIHw+IHN0cmluZ19vZl9ib29sIHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdHJsaXRfcGF0ID0gKHM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJXNgIG1hdGNoIHRoZSAqYCVzYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBTdHJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtzIHw+IGFiYnJldmlhdGUgfD4gSGF6M2xjb3JlLkZvcm0uc3RyaW5nX3F1b3RlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHJpdl9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHRoZSB0cml2aWFsIHZhbHVlIGAoKWAgbWF0Y2ggdGhlICp0cml2aWFsIHBhdHRlcm4gYCgpYCouXCI7XG4gIHtcbiAgICBpZDogVHJpdlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIigpXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB2YXJfcGF0ID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgKnBhdHRlcm4gdmFyaWFibGUqIG1hdGNoZXMgYW55IGV4cHJlc3Npb24sIGJpbmRpbmcgaXRzIHZhbHVlIHRvIHZhcmlhYmxlIGAlc2AuXCI7XG4gIHtcbiAgICBpZDogVmFyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgY3RyX3BhdCA9IChuYW1lOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgbWF0Y2ggdGhlICpgJXNgIGNvbnN0cnVjdG9yKiBtYXRjaCB0aGlzIGNvbnN0cnVjdG9yIHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogQ3RyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgd2lsZDogZ3JvdXAgPSB7aWQ6IFdpbGRQYXQsIGZvcm1zOiBbd2lsZF9wYXRdfTtcblxubGV0IGludGxpdCA9IChpOiBpbnQpOiBncm91cCA9PiB7aWQ6IEludFBhdCwgZm9ybXM6IFtpbnRsaXRfcGF0KGkpXX07XG5cbmxldCBmbG9hdGxpdCA9IChmOiBmbG9hdCk6IGdyb3VwID0+IHtcbiAgaWQ6IEZsb2F0UGF0LFxuICBmb3JtczogW2Zsb2F0bGl0X3BhdChmKV0sXG59O1xuXG5sZXQgYm9vbGxpdCA9IChiOiBib29sKTogZ3JvdXAgPT4ge2lkOiBCb29sUGF0LCBmb3JtczogW2Jvb2xsaXRfcGF0KGIpXX07XG5cbmxldCBzdHJsaXQgPSAoczogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBTdHJQYXQsIGZvcm1zOiBbc3RybGl0X3BhdChzKV19O1xuXG5sZXQgdHJpdjogZ3JvdXAgPSB7aWQ6IFRyaXZQYXQsIGZvcm1zOiBbdHJpdl9wYXRdfTtcblxubGV0IHZhciA9IChuYW1lOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhclBhdCwgZm9ybXM6IFt2YXJfcGF0KG5hbWUpXX07XG5cbmxldCBjdHIgPSAobmFtZTogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBDdHJQYXQsIGZvcm1zOiBbY3RyX3BhdChuYW1lKV19O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB0cml2X2V4cDogZm9ybSA9IHtcbiAgaWQ6IFRyaXZFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZXhwKFwiKClcIildLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJUaGUgdW5pcXVlIHZhbHVlIG9mIHR5cGUgYCgpYC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCB0cml2X2V4cHM6IGdyb3VwID0ge2lkOiBUcml2RXhwLCBmb3JtczogW3RyaXZfZXhwXX07XG5cbmxldCBib29sX2V4cCA9IChiOiBib29sKTogZm9ybSA9PiB7XG4gIGlkOiBCb29sRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2V4cChiIHw+IHN0cmluZ19vZl9ib29sKV0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgYm9vbGVhbiBsaXRlcmFsLCBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgYm9vbF9leHBzID0gKGI6IGJvb2wpOiBncm91cCA9PiB7aWQ6IEJvb2xFeHAsIGZvcm1zOiBbYm9vbF9leHAoYildfTtcblxubGV0IGludF9leHAgPSAobjogaW50KTogZm9ybSA9PiB7XG4gIGlkOiBJbnRFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBzdHJpbmdfb2ZfaW50IHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgc2lnbmVkIGludGVnZXIgbGl0ZXJhbC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBpbnRfZXhwcyA9IChpOiBpbnQpOiBncm91cCA9PiB7aWQ6IEludEV4cCwgZm9ybXM6IFtpbnRfZXhwKGkpXX07XG5cbmxldCBmbG9hdF9leHAgPSAoZjogZmxvYXQpOiBmb3JtID0+IHtcbiAgaWQ6IEZsb2F0RXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2YgfD4gc3RyaW5nX29mX2Zsb2F0IHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgZmxvYXRpbmctcG9pbnQgbGl0ZXJhbC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBmbG9hdF9leHBzID0gKGY6IGZsb2F0KTogZ3JvdXAgPT4ge1xuICBpZDogRmxvYXRFeHAsXG4gIGZvcm1zOiBbZmxvYXRfZXhwKGYpXSxcbn07XG5cbmxldCBzdHJpbmdfZXhwID0gKHM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBpZDogU3RyaW5nRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW3MgfD4gYWJicmV2aWF0ZSB8PiBIYXozbGNvcmUuRm9ybS5zdHJpbmdfcXVvdGUgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBzdHJpbmcgbGl0ZXJhbC4gQW55IGNoYXJhY3RlciBiZXNpZGVzIGRvdWJsZSBxdW90ZXMgKGBcXFwiYCkgY2FuIGJlIHVzZWQuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgc3RyaW5nX2V4cHMgPSAoczogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogU3RyaW5nRXhwLFxuICBmb3JtczogW3N0cmluZ19leHAocyldLFxufTtcblxubGV0IHZhcl9leHAgPSAobjogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGlkOiBWYXJFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBhYmJyZXZpYXRlIHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIlRha2VzIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiB0aGF0IGl0IHdhcyBib3VuZCB0by5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCB2YXJfZXhwcyA9ICh4OiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhckV4cCwgZm9ybXM6IFt2YXJfZXhwKHgpXX07XG5cbmxldCBjdHJfZXhwID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBpZDogQ3RyRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2MgfD4gYWJicmV2aWF0ZSB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJgJXNgIGlzIGEgY29uc3RydWN0b3IgZm9yIGEgc3VtIHR5cGUgdmFyaWFudC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBjdHIgPSAoYzogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBDdHJFeHAsIGZvcm1zOiBbY3RyX2V4cChjKV19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGxhYmVsbGVkX3N1bV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiU3VtIHR5cGVzIGRlc2NyaWJlIGEgZmluaXRlIHNldCBvZiBsYWJlbGVkIGNob2ljZXMuIFZhbHVlcyBvZiB0aGlzIHR5cGUgY29uc2lzdCBvZiBvbmUgb2YgdGhlIHNwZWNpZmllZCBjb25zdHJ1Y3RvcnMgYXBwbGllZCB0byBhIHBhcmFtZXRlciBvZiB0aGUgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXIgdHlwZSwgaWYgc3BlY2lmaWVkLiBDb25zdHJ1Y3RvciBuYW1lcyBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBzdW0uXCI7XG4gIGxldCBkaXZpZGVyID0gRXhhbXBsZS5ta19tb25vdGlsZShGb3JtLmdldChcInR5cF9wbHVzXCIpKTtcbiAge1xuICAgIGlkOiBMYWJlbGxlZFN1bVR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgc3BhY2UoKSxcbiAgICAgIHR5cChcIkNvbnN0cnVjdG9yKHR5KVwiKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBkaXZpZGVyLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIHR5cChcIi4uLlwiKSxcbiAgICAgIHNwYWNlKCksXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWYgPSAoYzogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBzcGVjaWZpZXMgb25lIHBvc3NpYmxlIHdheSBvZiBjb25zdHJ1Y3RpbmcgdGhlIHBhcmVudCBzdW0gdHlwZSwgd2hlbiBhcHBsaWVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyIHR5cGUuXCI7XG4gIHtcbiAgICBpZDogU3VtVHlwVW5hcnlDb25zdHJ1Y3RvckRlZixcbiAgICBzeW50YWN0aWNfZm9ybTogW2MgKysgXCIoVHlwZSlcIiB8PiBhYmJyZXZpYXRlIHw+IHR5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgc3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlZiA9IChjOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHNwZWNpZmllcyBvbmUgcG9zc2libGUgd2F5IG9mIGNvbnN0cnVjdGluZyB0aGUgcGFyZW50IHN1bSB0eXBlLlwiO1xuICB7XG4gICAgaWQ6IFN1bVR5cE51bGxhcnlDb25zdHJ1Y3RvckRlZixcbiAgICBzeW50YWN0aWNfZm9ybTogW2MgfD4gYWJicmV2aWF0ZSB8PiB0eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxhYmVsbGVkX3N1bV90eXBzOiBncm91cCA9IHtcbiAgaWQ6IExhYmVsbGVkU3VtVHlwLFxuICBmb3JtczogW2xhYmVsbGVkX3N1bV90eXBdLFxufTtcblxubGV0IHN1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmcyA9IChjOiBzdHJpbmcpOiBncm91cCA9PiB7XG4gIGlkOiBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmLFxuICBmb3JtczogW3N1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmKGMpXSxcbn07XG5cbmxldCBzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmcyA9IChjOiBzdHJpbmcpOiBncm91cCA9PiB7XG4gIGlkOiBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWYsXG4gIGZvcm1zOiBbc3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlZihjKV0sXG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgaWNvbl9zaXplID0gMjAuO1xuXG5sZXQgc2ltcGxlX2ljb24gPSAofnRyYW5zZm9ybT1cIlwiLCB+dmlldzogc3RyaW5nLCBkczogbGlzdChzdHJpbmcpKSA9PlxuICAvKiB0YWtlcyBhIGxpc3Qgb2YgcGF0aHMgYXMgc3RyaW5ncywgYSB2aWV3cG9ydCBhcyBhIHN0cmluZyxcbiAgICAgYW5kIGFuIG9wdGlvbmFsIChzdHJpbmcpIHRyYW5zZm9ybSB0byBhcHBseSB0byBlYWNoICovXG4gIE5vZGUuY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFxuICAgICAgICBBdHRyLltcbiAgICAgICAgICBjcmVhdGUoXCJ2aWV3Qm94XCIsIHZpZXcpLFxuICAgICAgICAgIGNyZWF0ZShcIndpZHRoXCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCBpY29uX3NpemUpKSxcbiAgICAgICAgICBjcmVhdGUoXCJoZWlnaHRcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIGljb25fc2l6ZSkpLFxuICAgICAgICAgIGNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICBMaXN0Lm1hcChcbiAgICAgIGQgPT5cbiAgICAgICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgICAgIFwicGF0aFwiLFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgICBbQXR0ci5jcmVhdGUoXCJkXCIsIGQpXVxuICAgICAgICAgICAgICBAIChcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gPT0gXCJcIiA/IFtdIDogW0F0dHIuY3JlYXRlKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFtdLFxuICAgICAgICApLFxuICAgICAgZHMsXG4gICAgKSxcbiAgKTtcblxubGV0IGdlYXIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm0xMTkzLjIgNjkwLjk1YzQuNDg4My0yOS42NjQgNi44MjgxLTYwLjA0NyA2LjgyODEtOTAuOTYxIDAtMzAuOTEtMi4zMzk4LTYxLjI3My02LjgyODEtOTAuOTM4bC0xNTEuMzctNzQuMzA1Yy0zLjgzOTgtMTAuMjYyLTguMDE1Ni0yMC4zNjMtMTIuNTYyLTMwLjI2Nmw1NC40NjktMTU5LjUyYy0zNi4xMDktNDkuMTQ4LTc5LjUyNy05Mi41NjYtMTI4LjY2LTEyOC42N2wtMTU5LjUzIDU0LjQ2OWMtOS44OTg0LTQuNTIzNC0xOS45OTItOC43MTA5LTMwLjI2Ni0xMi41NTFsLTc0LjMwMS0xNTEuMzZjLTI5LjY2NC00LjUyMzQtNjAuMDUxLTYuODUxNi05MC45NjEtNi44NTE2cy02MS4yODUgMi4zMjgxLTkwLjk0OSA2Ljg1MTZsLTc0LjMwNSAxNTEuMzZjLTEwLjI2MiAzLjgzOTgtMjAuMzUyIDguMDI3My0zMC4yNjYgMTIuNTUxbC0xNTkuNTItNTQuNDY1Yy00OS4xMjkgMzYuMTA5LTkyLjU0MyA3OS41MzUtMTI4LjY2IDEyOC42Nmw1NC40NTcgMTU5LjUyYy00LjUxMTcgOS44OTg0LTguNjg3NSAyMC4wMDQtMTIuNTM5IDMwLjI2NmwtMTUxLjM2IDc0LjMxMmMtNC41MTE3IDI5LjY2NC02Ljg1MTYgNjAuMDIzLTYuODUxNiA5MC45MzggMCAzMC45MSAyLjMzOTggNjEuMjk3IDYuODUxNiA5MC45NjFsMTUxLjM2IDc0LjMwNWMzLjg1MTYgMTAuMjYyIDguMDI3MyAyMC4zNTIgMTIuNTM5IDMwLjI3N2wtNTQuNDUzIDE1OS41MWMzNi4xMjEgNDkuMTI5IDc5LjUzNSA5Mi41NDMgMTI4LjY2IDEyOC42OGwxNTkuNTItNTQuNDU3YzkuOTEwMiA0LjUxMTcgMjAuMDA0IDguNjg3NSAzMC4yNjYgMTIuNTI3bDc0LjMwNSAxNTEuMzdjMjkuNjcyIDQuNTAzOSA2MC4wNDcgNi44NDM4IDkwLjk1NyA2Ljg0MzhzNjEuMjk3LTIuMzM5OCA5MC45NjEtNi44Mzk4bDc0LjI5My0xNTEuMzdjMTAuMjczLTMuODM5OCAyMC4zNjMtOC4wMTU2IDMwLjI4OS0xMi41MjdsMTU5LjUgNTQuNDU3YzQ5LjEyOS0zNi4xMzMgOTIuNTQzLTc5LjU0NyAxMjguNjUtMTI4LjY4bC01NC40NjEtMTU5LjUxYzQuNTQ2OS05LjkyNTggOC43MjI3LTIwLjAxNiAxMi41NjItMzAuMjc3em0tNTkzLjE3IDQ4LjUxNmMtNzcuMDE2IDAtMTM5LjQ0LTYyLjQ0OS0xMzkuNDQtMTM5LjQ4IDAtNzcuMDE2IDYyLjQyNi0xMzkuNDUgMTM5LjQ0LTEzOS40NXMxMzkuNDggNjIuNDM4IDEzOS40OCAxMzkuNDVjMCA3Ny4wMjctNjIuNDYxIDEzOS40OC0xMzkuNDggMTM5LjQ4elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBpbmZvID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTIwMCAxMjAwXCIsXG4gICAgW1xuICAgICAgXCJtMTEyMC41IDUzMS43NWMtMTcuMDYyLTEzMC4yNC04Mi4zMzItMjQ5LjM2LTE4Mi45Mi0zMzMuODMtMTAwLjU5LTg0LjQ3Ny0yMjkuMTktMTI4LjE4LTM2MC40Mi0xMjIuNDgtMTMxLjIzIDUuNzAzMS0yNTUuNTYgNjAuMzk1LTM0OC40NCAxNTMuMjhzLTE0Ny41NyAyMTcuMjEtMTUzLjI4IDM0OC40NGMtNS42OTkyIDEzMS4yMyAzOCAyNTkuODMgMTIyLjQ4IDM2MC40MiA4NC40NzcgMTAwLjU5IDIwMy41OSAxNjUuODYgMzMzLjgzIDE4Mi45MiAxMDYuNzUgMTMuOTg0IDIxNS4yMi01LjE4NzUgMzEwLjcxLTU0LjkyMiA5NS40ODgtNDkuNzM0IDE3My4zOC0xMjcuNjIgMjIzLjExLTIyMy4xMSA0OS43MzQtOTUuNDkyIDY4LjkwNi0yMDMuOTYgNTQuOTIyLTMxMC43MXptLTQ0NS41IDMxNy4yNWMwIDI2Ljc5My0xNC4yOTMgNTEuNTU1LTM3LjUgNjQuOTUzLTIzLjIwNyAxMy4zOTUtNTEuNzkzIDEzLjM5NS03NSAwLTIzLjIwNy0xMy4zOTgtMzcuNS0zOC4xNi0zNy41LTY0Ljk1M3YtMjI1YzAtMjYuNzkzIDE0LjI5My01MS41NTUgMzcuNS02NC45NTMgMjMuMjA3LTEzLjM5NSA1MS43OTMtMTMuMzk1IDc1IDAgMjMuMjA3IDEzLjM5OCAzNy41IDM4LjE2IDM3LjUgNjQuOTUzem0tNzUtNDIzYy0xOS44OTEgMC0zOC45NjktNy45MDIzLTUzLjAzMS0yMS45NjktMTQuMDY2LTE0LjA2Mi0yMS45NjktMzMuMTQxLTIxLjk2OS01My4wMzFzNy45MDIzLTM4Ljk2OSAyMS45NjktNTMuMDMxYzE0LjA2Mi0xNC4wNjYgMzMuMTQxLTIxLjk2OSA1My4wMzEtMjEuOTY5czM4Ljk2OSA3LjkwMjMgNTMuMDMxIDIxLjk2OWMxNC4wNjYgMTQuMDYyIDIxLjk2OSAzMy4xNDEgMjEuOTY5IDUzLjAzMXMtNy45MDIzIDM4Ljk2OS0yMS45NjkgNTMuMDMxYy0xNC4wNjIgMTQuMDY2LTMzLjE0MSAyMS45NjktNTMuMDMxIDIxLjk2OXpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgc3RhciA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTEwNDUuMiA0NTkuNi0yNzAtNTcuNjAyLTEzNi44LTIzOC44Yy0xNi44MDEtMjguODAxLTU4LjgwMS0yOC44MDEtNzUuNjAyIDBsLTEzOCAyMzguOC0yNzAgNTcuNjAyYy0zMi4zOTggNy4xOTkyLTQ1LjYwMiA0Ni44MDEtMjQgNzJsMTg0LjggMjA1LjItMjguODAxIDI3My42Yy0zLjYwMTYgMzMuNTk4IDMwIDU3LjU5OCA2MS4xOTkgNDQuMzk4bDI1Mi0xMTEuNiAyNTIgMTExLjZjMzEuMTk5IDEzLjE5OSA2NC44MDEtMTAuODAxIDYxLjE5OS00NC4zOThsLTI4LjgwMS0yNzMuNiAxODQuOC0yMDUuMmMyMS42MDItMjUuMjAzIDkuNjAxNi02NC44MDEtMjQtNzJ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGJvbWIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm03MDAuODggMzY0Ljg4di05NC4zMTJjMC0xMC41LTguNDM3NS0xOC43NS0xOC43NS0xOC43NWgtOTguODEyYzEuMzEyNS0yMi41IDkuNTYyNS05NC42ODggNjEuNS0xMjMuMTkgNTIuNjg4LTI5LjA2MiAxNDAuMjUtNi4xODc1IDI1My4zMSA2Ni4zNzUgOC42MjUgNS42MjUgMjAuMjUgMy4xODc1IDI1Ljg3NS01LjYyNSA1LjYyNS04LjYyNSAzLTIwLjI1LTUuNjI1LTI1Ljg3NS0xMjcuMTItODEuNTYyLTIyNS4zOC0xMDQuNDQtMjkxLjk0LTY3LjY4OC03MC4zMTIgMzguODEyLTc5LjUgMTI5Ljc1LTgwLjYyNSAxNTZoLTk5Yy0xMC4zMTIgMC0xOC43NSA4LjI1LTE4Ljc1IDE4Ljc1djkyLjQzOGMwIDAuNTYyNSAwIDEuMzEyNSAwLjE4NzUgMS44NzUtMTUzLjE5IDU1LjY4OC0yNjIuNjkgMjAyLjY5LTI2Mi42OSAzNzQuODEgMCAyMTkuOTQgMTc4Ljg4IDM5OC44MSAzOTguODEgMzk4LjgxczM5OS0xNzguODggMzk5LTM5OC44MWMwLTE3MS45NC0xMDkuNS0zMTguNzUtMjYyLjUtMzc0Ljgxem0tODIuNjg4IDkwLjc1Yy05LjkzNzUtMy4xODc1LTE1LjM3NS0xMy42ODgtMTIuMzc1LTIzLjYyNSAzLjE4NzUtOS43NSAxMy42ODgtMTUuMzc1IDIzLjQzOC0xMi4xODggMi44MTI1IDAuOTM3NSAyNzkgOTAuNzUgMjM3Ljc1IDM4NS4zMS0xLjMxMjUgOS4zNzUtOS4zNzUgMTYuMTI1LTE4LjU2MiAxNi4xMjUtMC45Mzc1IDAtMS42ODc1IDAtMi42MjUtMC4xODc1LTEwLjMxMi0xLjMxMjUtMTcuNDM4LTEwLjg3NS0xNS45MzgtMjEgMzYuOTM4LTI2My42Mi0yMDEuNTYtMzQxLjI1LTIxMS42OS0zNDQuNDR6XCIsXG4gICAgICBcIm04OTMuMjUgMjQ0Ljg4LTMwLjU2MiAyOS4yNWMtMy41NjI1IDMuNTYyNS04LjI1IDUuMjUtMTIuOTM4IDUuMjUtNC44NzUgMC05LjkzNzUtMS44NzUtMTMuNS01LjgxMjUtNy4zMTI1LTcuNS02LjkzNzUtMTkuMzEyIDAuNTYyNS0yNi40MzhsMzAuNTYyLTI5LjI1YzcuNS03LjMxMjUgMTkuNS02LjkzNzUgMjYuNjI1IDAuNTYyNXM2Ljc1IDE5LjMxMi0wLjc1IDI2LjQzOHpcIixcbiAgICAgIFwibTk1OC4zMSA4My4yNS02Ljc1IDQxLjYyNWMtMS4zMTI1IDkuMzc1LTkuMzc1IDE1Ljc1LTE4LjM3NSAxNS43NS0wLjkzNzUgMC0yLjA2MjUgMC0zLTAuMTg3NS0xMC4zMTItMS42ODc1LTE3LjI1LTExLjI1LTE1LjU2Mi0yMS4zNzVsNi43NS00MS44MTJjMS42ODc1LTEwLjMxMiAxMS40MzgtMTcuMjUgMjEuNTYyLTE1LjU2MnMxNy4wNjIgMTEuMjUgMTUuMzc1IDIxLjU2MnpcIixcbiAgICAgIFwibTEwMjguNCAyNDkuOTRjLTMuNTYyNSA0LjUtOSA2LjkzNzUtMTQuNjI1IDYuOTM3NS00LjEyNSAwLTguMjUtMS4zMTI1LTExLjYyNS00LjEyNWwtMzMtMjYuNDM4Yy04LjA2MjUtNi41NjI1LTkuMzc1LTE4LjM3NS0yLjgxMjUtMjYuNDM4IDYuMzc1LTguMDYyNSAxOC4xODgtOS4zNzUgMjYuMjUtMi44MTI1bDMzIDI2LjQzOGM4LjA2MjUgNi41NjI1IDkuMzc1IDE4LjM3NSAyLjgxMjUgMjYuNDM4elwiLFxuICAgICAgXCJtMTAyMy42IDE1NS4wNi0zOC40MzggMTcuODEyYy0yLjQzNzUgMS4xMjUtNS4yNSAxLjY4NzUtNy44NzUgMS42ODc1LTYuOTM3NSAwLTEzLjg3NS00LjEyNS0xNy4wNjItMTAuODc1LTQuMzEyNS05LjM3NS0wLjE4NzUtMjAuNjI1IDkuMTg3NS0yNC45MzhsMzguNDM4LTE3LjgxMmM5LjM3NS00LjMxMjUgMjAuNjI1LTAuMTg3NSAyNC45MzggOS4xODc1czAuMTg3NSAyMC42MjUtOS4xODc1IDI0LjkzOHpcIixcbiAgICAgIFwibTk1Ni42MiAyODQuMDZjMC43NSAxMC4zMTItNy4xMjUgMTkuMzEyLTE3LjQzOCAxOS44NzUtMC41NjI1IDAuMTg3NS0wLjkzNzUgMC4xODc1LTEuMzEyNSAwLjE4NzUtOS43NSAwLTE4LTcuNjg3NS0xOC43NS0xNy42MjVsLTIuODEyNS00Mi4xODhjLTAuNTYyNS0xMC4zMTIgNy4xMjUtMTkuMzEyIDE3LjYyNS0xOS44NzUgMTAuMzEyLTAuNzUgMTkuMTI1IDcuMTI1IDE5Ljg3NSAxNy40Mzh6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGV4cG9ydCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDY3LjY3MSA2Ny42NzFcIixcbiAgICBbXG4gICAgICBcIk01Mi45NDYsMjMuMzQ4SDQyLjgzNHY2aDEwLjExMmMzLjAwNywwLDUuMzQsMS41MzYsNS4zNCwyLjg1OHYyNi42MDZjMCwxLjMyMi0yLjMzMywyLjg1OC01LjM0LDIuODU4SDE0LjcyNCAgIGMtMy4wMDcsMC01LjM0LTEuNTM2LTUuMzQtMi44NThWMzIuMjA3YzAtMS4zMjIsMi4zMzMtMi44NTgsNS4zNC0yLjg1OGgxMC4xMXYtNmgtMTAuMTFjLTYuMzU5LDAtMTEuMzQsMy44OTEtMTEuMzQsOC44NTh2MjYuNjA2ICAgYzAsNC45NjgsNC45ODEsOC44NTgsMTEuMzQsOC44NThoMzguMjIzYzYuMzU4LDAsMTEuMzQtMy44OTEsMTEuMzQtOC44NThWMzIuMjA3QzY0LjI4NiwyNy4yMzksNTkuMzA1LDIzLjM0OCw1Mi45NDYsMjMuMzQ4elwiLFxuICAgICAgXCJNMjQuOTU3LDE0Ljk1NWMwLjc2OCwwLDEuNTM1LTAuMjkzLDIuMTIxLTAuODc5bDMuNzU2LTMuNzU2djEzLjAyOHY2djExLjQ5NGMwLDEuNjU3LDEuMzQzLDMsMywzczMtMS4zNDMsMy0zVjI5LjM0OHYtNiAgIFYxMC4xMTdsMy45NTksMy45NTljMC41ODYsMC41ODYsMS4zNTQsMC44NzksMi4xMjEsMC44NzlzMS41MzUtMC4yOTMsMi4xMjEtMC44NzljMS4xNzItMS4xNzEsMS4xNzItMy4wNzEsMC00LjI0MmwtOC45NTctOC45NTcgICBDMzUuNDkyLDAuMjkxLDM0LjcyNSwwLDMzLjk1OCwwYy0wLjAwOCwwLTAuMDE1LDAtMC4wMjMsMHMtMC4wMTUsMC0wLjAyMywwYy0wLjc2NywwLTEuNTM0LDAuMjkxLTIuMTIsMC44NzdsLTguOTU3LDguOTU3ICAgYy0xLjE3MiwxLjE3MS0xLjE3MiwzLjA3MSwwLDQuMjQyQzIzLjQyMiwxNC42NjIsMjQuMTg5LDE0Ljk1NSwyNC45NTcsMTQuOTU1elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBpbXBvcnQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA2MSA2MVwiLFxuICAgIFtcbiAgICAgIFwiTTQ5LjU2MSwxNi40NjRIMzkuNDV2NmgxMC4xMTFjMy4wMDgsMCw1LjM0MSwxLjUzNSw1LjM0MSwyLjg1N3YyNi42MDdjMCwxLjMyMS0yLjMzMywyLjg1OC01LjM0MSwyLjg1OEgxMS4zNCAgIGMtMy4wMDcsMC01LjM0LTEuNTM3LTUuMzQtMi44NThWMjUuMzI0YzAtMS4zMjIsMi4zMzMtMi44NTgsNS4zNC0yLjg1OGgxMC4xMXYtNkgxMS4zNEM0Ljk4MSwxNi40NjYsMCwyMC4zNTcsMCwyNS4zMjR2MjYuNjA1ICAgYzAsNC45NjgsNC45ODEsOC44NTcsMTEuMzQsOC44NTdoMzguMjIzYzYuMzU3LDAsMTEuMzQtMy44OTEsMTEuMzQtOC44NTdWMjUuMzI0QzYwLjkwMiwyMC4zNTUsNTUuOTIxLDE2LjQ2NCw0OS41NjEsMTYuNDY0elwiLFxuICAgICAgXCJNMzkuNTI5LDI5LjAwNGMtMC43NjgsMC0xLjUzNSwwLjI5NC0yLjEyMSwwLjg4bC0zLjc1NiwzLjc1NVYyMC42MTJ2LTZWMy4xMTdjMC0xLjY1Ni0xLjM0My0zLTMtM3MtMywxLjM0NC0zLDN2MTEuNDk0djYgICB2MTMuMjNsLTMuOTU5LTMuOTU4Yy0wLjU4Ni0wLjU4Ni0xLjM1NC0wLjg4LTIuMTIxLTAuODhzLTEuNTM1LDAuMjk0LTIuMTIxLDAuODhjLTEuMTcyLDEuMTctMS4xNzIsMy4wNywwLDQuMjQxbDguOTU3LDguOTU3ICAgYzAuNTg2LDAuNTg2LDEuMzU0LDAuODc3LDIuMTIsMC44NzdjMC4wMDgsMCwwLjAxNiwwLDAuMDIzLDBzMC4wMTUsMCwwLjAyMiwwYzAuNzY4LDAsMS41MzQtMC4yOTEsMi4xMi0wLjg3N2w4Ljk1Ny04Ljk1NyAgIGMxLjE3Mi0xLjE3MSwxLjE3Mi0zLjA3MSwwLTQuMjQxQzQxLjA2NCwyOS4yOTgsNDAuMjk4LDI5LjAwNCwzOS41MjksMjkuMDA0elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB1bmRvID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNTEyIDUxMlwiLFxuICAgIFtcbiAgICAgIFwiTTEyOS43LDQ2LjRsMzcuMiwzNy43bC02Ni42LDY3LjFoMjU0LjRjODYuOCwwLDE1Ny4yLDcwLjQsMTU3LjIsMTU3LjJzLTcwLjQsMTU3LjItMTU3LjIsMTU3LjJoLTUyLjR2LTUyLjRoNTIuNCBjNTcuOSwwLDEwNC44LTQ2LjksMTA0LjgtMTA0LjhzLTQ2LjktMTA0LjgtMTA0LjgtMTA0LjhIMTAwLjRsNjYuNiw2NS44bC0zNy4yLDM2LjlMMCwxNzcuNEwxMjkuNyw0Ni40elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCByZWRvID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNTEyIDUxMlwiLFxuICAgIFtcbiAgICAgIFwiTTM4Mi4zLDQ2LjRsLTM3LjIsMzcuN2w2Ni42LDY3LjFIMTU3LjJDNzAuNCwxNTEuMiwwLDIyMS42LDAsMzA4LjRzNzAuNCwxNTcuMiwxNTcuMiwxNTcuMmg1Mi40di01Mi40aC01Mi40IGMtNTcuOSwwLTEwNC44LTQ2LjktMTA0LjgtMTA0LjhzNDYuOS0xMDQuOCwxMDQuOC0xMDQuOGgyNTQuNGwtNjYuNiw2NS44bDM2LjksMzYuOWwxMzAtMTI4LjlMMzgyLjMsNDYuNHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgY2lyY2xlX3F1ZXN0aW9uID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCItMC41IC0wLjUgMjUgMjVcIixcbiAgICBbXG4gICAgICBcIk0xMiAyYzUuNTE0IDAgMTAgNC40ODYgMTAgMTBzLTQuNDg2IDEwLTEwIDEwLTEwLTQuNDg2LTEwLTEwIDQuNDg2LTEwIDEwLTEwem0wLTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJzNS4zNzMgMTIgMTIgMTIgMTItNS4zNzMgMTItMTItNS4zNzMtMTItMTItMTJ6bTEuMjUgMTdjMCAuNjktLjU1OSAxLjI1LTEuMjUgMS4yNS0uNjg5IDAtMS4yNS0uNTYtMS4yNS0xLjI1cy41NjEtMS4yNSAxLjI1LTEuMjVjLjY5MSAwIDEuMjUuNTYgMS4yNSAxLjI1em0xLjM5My05Ljk5OGMtLjYwOC0uNjE2LTEuNTE1LS45NTUtMi41NTEtLjk1NS0yLjE4IDAtMy41OSAxLjU1LTMuNTkgMy45NWgyLjAxMWMwLTEuNDg2LjgyOS0yLjAxMyAxLjUzOC0yLjAxMy42MzQgMCAxLjMwNy40MjEgMS4zNjQgMS4yMjYuMDYyLjg0Ny0uMzkgMS4yNzctLjk2MiAxLjgyMS0xLjQxMiAxLjM0My0xLjQzOCAxLjk5My0xLjQzMiAzLjQ2OGgyLjAwNWMtLjAxMy0uNjY0LjAzLTEuMjAzLjkzNS0yLjE3OC42NzctLjczIDEuNTE5LTEuNjM4IDEuNTM2LTMuMDIyLjAxMS0uOTI0LS4yODQtMS43MTktLjg1NC0yLjI5N3pcIixcbiAgICBdLFxuICApO1xuXG5sZXQgZ2l0aHViID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCItMC41IC0wLjUgMjUgMjVcIixcbiAgICBbXG4gICAgICBcIk0xMiAwYy02LjYyNiAwLTEyIDUuMzczLTEyIDEyIDAgNS4zMDIgMy40MzggOS44IDguMjA3IDExLjM4Ny41OTkuMTExLjc5My0uMjYxLjc5My0uNTc3di0yLjIzNGMtMy4zMzguNzI2LTQuMDMzLTEuNDE2LTQuMDMzLTEuNDE2LS41NDYtMS4zODctMS4zMzMtMS43NTYtMS4zMzMtMS43NTYtMS4wODktLjc0NS4wODMtLjcyOS4wODMtLjcyOSAxLjIwNS4wODQgMS44MzkgMS4yMzcgMS44MzkgMS4yMzcgMS4wNyAxLjgzNCAyLjgwNyAxLjMwNCAzLjQ5Mi45OTcuMTA3LS43NzUuNDE4LTEuMzA1Ljc2Mi0xLjYwNC0yLjY2NS0uMzA1LTUuNDY3LTEuMzM0LTUuNDY3LTUuOTMxIDAtMS4zMTEuNDY5LTIuMzgxIDEuMjM2LTMuMjIxLS4xMjQtLjMwMy0uNTM1LTEuNTI0LjExNy0zLjE3NiAwIDAgMS4wMDgtLjMyMiAzLjMwMSAxLjIzLjk1Ny0uMjY2IDEuOTgzLS4zOTkgMy4wMDMtLjQwNCAxLjAyLjAwNSAyLjA0Ny4xMzggMy4wMDYuNDA0IDIuMjkxLTEuNTUyIDMuMjk3LTEuMjMgMy4yOTctMS4yMy42NTMgMS42NTMuMjQyIDIuODc0LjExOCAzLjE3Ni43Ny44NCAxLjIzNSAxLjkxMSAxLjIzNSAzLjIyMSAwIDQuNjA5LTIuODA3IDUuNjI0LTUuNDc5IDUuOTIxLjQzLjM3Mi44MjMgMS4xMDIuODIzIDIuMjIydjMuMjkzYzAgLjMxOS4xOTIuNjk0LjgwMS41NzYgNC43NjUtMS41ODkgOC4xOTktNi4wODYgOC4xOTktMTEuMzg2IDAtNi42MjctNS4zNzMtMTItMTItMTJ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGJhY2sgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAzMzAgMzMwXCIsXG4gICAgW1xuICAgICAgXCJNMjUwLjYwNiwxNTQuMzg5bC0xNTAtMTQ5Ljk5NmMtNS44NTctNS44NTgtMTUuMzU1LTUuODU4LTIxLjIxMywwLjAwMSAgYy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzbDEzOS4zOTMsMTM5LjM5TDc5LjM5MywzMDQuMzk0Yy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzICBDODIuMzIyLDMyOC41MzYsODYuMTYxLDMzMCw5MCwzMzBzNy42NzgtMS40NjQsMTAuNjA3LTQuMzk0bDE0OS45OTktMTUwLjAwNGMyLjgxNC0yLjgxMyw0LjM5NC02LjYyOCw0LjM5NC0xMC42MDYgIEMyNTUsMTYxLjAxOCwyNTMuNDIsMTU3LjIwMiwyNTAuNjA2LDE1NC4zODl6XCIsXG4gICAgXSxcbiAgICB+dHJhbnNmb3JtPVwic2NhbGUoLTAuNzUsIDAuNzUpIHRyYW5zbGF0ZSgtMzMwLCA1MClcIixcbiAgKTtcblxubGV0IGZvcndhcmQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAzMzAgMzMwXCIsXG4gICAgW1xuICAgICAgXCJNMjUwLjYwNiwxNTQuMzg5bC0xNTAtMTQ5Ljk5NmMtNS44NTctNS44NTgtMTUuMzU1LTUuODU4LTIxLjIxMywwLjAwMSAgYy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzbDEzOS4zOTMsMTM5LjM5TDc5LjM5MywzMDQuMzk0Yy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzICBDODIuMzIyLDMyOC41MzYsODYuMTYxLDMzMCw5MCwzMzBzNy42NzgtMS40NjQsMTAuNjA3LTQuMzk0bDE0OS45OTktMTUwLjAwNGMyLjgxNC0yLjgxMyw0LjM5NC02LjYyOCw0LjM5NC0xMC42MDYgIEMyNTUsMTYxLjAxOCwyNTMuNDIsMTU3LjIwMiwyNTAuNjA2LDE1NC4zODl6XCIsXG4gICAgXSxcbiAgICB+dHJhbnNmb3JtPVwic2NhbGUoMC43NSwgMC43NSkgdHJhbnNsYXRlKDAsIDUwKVwiLFxuICApO1xuXG5sZXQgZXllID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNDggNDhcIixcbiAgICBbXG4gICAgICBcIk0yNCA5Yy0xMCAwLTE4LjU0IDYuMjItMjIgMTUgMy40NiA4Ljc4IDEyIDE1IDIyIDE1IDEwLjAxIDAgMTguNTQtNi4yMiAyMi0xNS0zLjQ2LTguNzgtMTEuOTktMTUtMjItMTV6bTAgMjVjLTUuNTIgMC0xMC00LjQ4LTEwLTEwczQuNDgtMTAgMTAtMTAgMTAgNC40OCAxMCAxMC00LjQ4IDEwLTEwIDEwem0wLTE2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgdHJhc2ggPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAyNCAyNFwiLFxuICAgIFtcbiAgICAgIFwiTTMgNnYxOGgxOHYtMThoLTE4em01IDE0YzAgLjU1Mi0uNDQ4IDEtMSAxcy0xLS40NDgtMS0xdi0xMGMwLS41NTIuNDQ4LTEgMS0xczEgLjQ0OCAxIDF2MTB6bTUgMGMwIC41NTItLjQ0OCAxLTEgMXMtMS0uNDQ4LTEtMXYtMTBjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjEwem01IDBjMCAuNTUyLS40NDggMS0xIDFzLTEtLjQ0OC0xLTF2LTEwYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYxMHptNC0xOHYyaC0yMHYtMmg1LjcxMWMuOSAwIDEuNjMxLTEuMDk5IDEuNjMxLTJoNS4zMTVjMCAuOTAxLjczIDIgMS42MzEgMmg1LjcxMnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgaGF6ZWxudXQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjEwMCAwIDUwMCA1MDBcIixcbiAgICBbXG4gICAgICBcIm00OTkuODQgMTMwLjUxYy05My4zNjMtOTMuMzYzLTIwNy41OS0xMjkuMDYtMzAwLjY1LTM2LjA1MS05NS4wNyA5NS4xMTMtMTE2LjA3IDIxMy4xNS02Mi41NjIgMzUwLjgzIDMuMTQ4NCA4LjA1MDgtMC44NzUgMjguNDM4IDkuNTM5MSAzOC44OTUgMTAuNDE0IDEwLjQ1NyAyOS44MzYgNS40Njg4IDM2LjcwNyA4LjAwNzggMTI4Ljg0IDQ3LjUxMiAyNTQuOCAzNy4xODggMzUzLjAyLTYxLjI1IDkzLjAwOC05Mi43OTcgNTcuMzUyLTIwNy4wMy0zNi4wNTUtMzAwLjQzem0tMTIuMzgzIDEyLjM4M2MzMi4yODkgMzIuMjg5IDg4LjUwOCA5OS41NzQgODUuMDk0IDE3My42NC03Ni4yMTEtMzMuMzQtODUuOTIyLTg1LjE0MS0xNDQuNzctMTQzLjk4LTM1LjQ4LTM1LjQ4LTEwMy44Mi01OC4wNTUtMTE2LjA3LTExNC42MiA2Ni4wMi00LjE5OTIgMTI5LjI0IDM4LjMyNCAxNzUuNzQgODQuOTYxem0zNi4wNTEgMjc1Ljg5Yy04Ny41IDg3LjUtMTk5Ljk4IDEwNi42Mi0zMzQuNTUgNTYuODc1LTkuMTg3NS0zLjM2NzItMjcuMzQ0LTEuMDUwOC0zMC42MjUtMy45Mzc1LTMuODk0NS0zLjkzNzUtMS41NzQyLTIyLjQ4OC01LjYwMTYtMzIuODU1LTUxLjUzOS0xMzIuNDgtMzIuMzc1LTI0MS4xMSA1OC42MjUtMzMyLjExIDI1LjQxOC0yNS4zNzUgNTMuMTEzLTQwLjk0OSA4Mi43NzMtNDYuNjggMTMuNDM0IDY2LjAxMiA4Ny4xOTUgOTAuNzc3IDEyMS41IDEyNC44NiA1OC40NDkgNTguNjcyIDY5LjA4MiAxMTQuMjMgMTU0Ljg4IDE0OS43MS01LjA3NDIgMjcuOTEtMTkuMjUgNTYuNDM4LTQ2Ljk4OCA4NC4xMjl6XCIsXG4gICAgICBcIm0yNzQuMDEgMzc0LjcyIDEwOC4xMS0xMDguMTFjMS43Njk1LTEuNjEzMyAyLjgwNDctMy44Nzg5IDIuODU5NC02LjI3MzQgMC4wNTQ2ODgtMi4zOTQ1LTAuODc1LTQuNzA3LTIuNTcwMy02LjM5ODQtMS42OTUzLTEuNjkxNC00LjAxMTctMi42MTMzLTYuNDA2Mi0yLjU1MDgtMi4zOTQ1IDAuMDY2NDA2LTQuNjYwMiAxLjEwNTUtNi4yNjU2IDIuODgyOGwtMTA4LjExIDEwOC4wNmMtMy40MTggMy40MjE5LTMuNDE4IDguOTY0OCAwIDEyLjM4M3M4Ljk2MDkgMy40MTggMTIuMzgzIDB6XCIsXG4gICAgICBcIm00NDUuNDIgMzk5LjYxYy0wLjUyMzQ0IDAuMzk0NTMtNTIuOTM4IDQwLjU1NS0xMTUuNTQgNDYuMjQyLTQuODMyIDAuNDM3NS04LjM5ODQgNC43MDctNy45NjA5IDkuNTM5MSAwLjQzMzU5IDQuODMyIDQuNzAzMSA4LjM5ODQgOS41MzUyIDcuOTYwOSA2Ny44NTUtNi4xNjggMTIyLjUtNDguMTI1IDEyNC42OS00OS44MzIgMS45MDYyLTEuMzk0NSAzLjE2OC0zLjUgMy40OTYxLTUuODM5OCAwLjMyODEzLTIuMzM5OC0wLjMwNDY5LTQuNzEwOS0xLjc1LTYuNTc4MS0xLjQ0OTItMS44NjcyLTMuNTg5OC0zLjA3MDMtNS45Mzc1LTMuMzM1OS0yLjM0MzgtMC4yNjE3Mi00LjY5OTIgMC40MzM1OS02LjUyNzMgMS45Mjk3elwiLFxuICAgICAgXCJtMzQ0LjkzIDQxMC42NGMyLjI2MTcgNC4yNjE3IDcuNTQ2OSA1Ljg4MjggMTEuODEyIDMuNjMyOCAzNC43NjItMTguNDM0IDY4LjAxNi0zOS41ODYgOTkuNDQxLTYzLjI2MiAzLjgwODYtMi45ODQ0IDQuNDcyNy04LjQ4ODMgMS40ODgzLTEyLjI5Ny0yLjk4NDQtMy44MDQ3LTguNDg4My00LjQ2ODgtMTIuMjkzLTEuNDg0NC0zMC42NDggMjMuMDA0LTYzLjAzMSA0My41OTgtOTYuODYzIDYxLjU5OC00LjI0MjIgMi4yODEyLTUuODQ3NyA3LjU1ODYtMy41ODU5IDExLjgxMnpcIixcbiAgICAgIFwibTM1MCAzNTcuNjFjLTIuODQzOC0zLjg5ODQtOC4zMDA4LTQuNzU3OC0xMi4yMDctMS45MjU4LTAuNTIzNDQgMC4zNTE1Ni01MC4xOCAzNi40NDUtMTA1LjYxIDcxLjA5NC0yLjAzOTEgMS4xOTUzLTMuNTA3OCAzLjE2NDEtNC4wNzQyIDUuNDYwOS0wLjU2MjUgMi4yOTY5LTAuMTc1NzggNC43MjI3IDEuMDc4MSA2LjczMDUgMS4yNTM5IDIuMDAzOSAzLjI2NTYgMy40MTQxIDUuNTc4MSAzLjkxNDEgMi4zMTI1IDAuNDk2MDkgNC43MjY2IDAuMDM5MDYyIDYuNjk1My0xLjI3MzQgNTYuMDQzLTM0LjczOCAxMDYtNzEuNDAyIDEwNi41My03MS43OTMgMy45MjU4LTIuODE2NCA0LjgyNDItOC4yODEyIDIuMDExNy0xMi4yMDd6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IG1hZ25pZnkgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAyNCAyNCBcIixcbiAgICBbXG4gICAgICBcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAxIDAgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgY2hlc3QgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMDAgMTI1XCIsXG4gICAgW1xuICAgICAgXCJNNTYsNTR2LTRjMC0xLjEsMC45LTIsMi0yczIsMC45LDIsMnY0YzAsMS4xLTAuOSwyLTIsMlM1Niw1NS4xLDU2LDU0eiBNOTQsMjh2MTJ2MzZjMCwzLjMtMi43LDYtNiw2SDEyYy0zLjMsMC02LTIuNy02LTYgIFY0MFYyOGMwLTUuNSw0LjUtMTAsMTAtMTBoNjhDODkuNSwxOCw5NCwyMi41LDk0LDI4eiBNODQsMjJIMjRjMS4zLDEuNywyLDMuNywyLDZ2MTBoNjRWMjhDOTAsMjQuNyw4Ny4zLDIyLDg0LDIyeiBNMTAsMzhoMTJWMjggIGMwLTMuMy0yLjctNi02LTZzLTYsMi43LTYsNlYzOHogTTEyLDc4aDEwVjQySDEwdjM0QzEwLDc3LjEsMTAuOSw3OCwxMiw3OHogTTkwLDQySDI2djM2aDYyYzEuMSwwLDItMC45LDItMlY0MnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgc3Byb3V0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTAwIDEyNVwiLFxuICAgIFtcbiAgICAgIFwiTTQ4LjgsNjguMmMtMiwwLjgtMS42LDIuMi0yLjEsMi41Yy0wLjgsMC4zLTAuMS0xLTIuMS0xLjZjLTQuNS0xLjQtNCw0LjMtNi41LDQuMmMtMS43LTAuMS0xLjgtMC42LTMuNC0wLjQgIGMtMS42LDAuMy0xLjEsMi4xLTIuOSwyLjNjLTEuMSwwLjEtMC43LDEuMi0yLjQsMWMtMS40LTAuMi0yLDEuNi0yLjEsMi43Yy0wLjEsMC44LTAuMywxLjYtMS42LDIuM2MtMS4yLDAuNy0zLjMsMC4yLTQuNCwxLjcgIGMtMS42LDItMS43LDUuMS0xLjcsNS4xaDYwLjdjMCwwLTAuMS0yLjMtMi42LTMuOWMtMC43LTAuNCwwLjEtMC40LDAuNC0yYzAuMS0wLjYsMC0xLjUtMC43LTIuNmMtMC45LTEuMy0yLjctMC45LTMuNC0wLjcgIGMwLjItMC45LDAuMi0yLTEuMi0yLjljLTEtMC43LTEuMy0wLjMtMS45LTAuNGMtMC43LTAuMS0wLjMtMC44LTEtMS4yYy0xLjgtMS4xLTAuNS0yLjEtMy4zLTMuMmMtMS43LTAuNy0yLTAuNi01LjYtMC42ICBjLTEuNCwwLTEuNy0yLjMtMy42LTEuOGMtMS45LDAuNi0xLjEtMC41LTIuMi0xLjZjLTAuMy0wLjMtMC45LTAuNS0xLjUtMC41Yy0wLjEtMTAuNi0wLjEtMjQuNSwwLjMtMjcuMmMwLjYtNC41LDUuNy05LjgsMTMuMS0xMC42ICBjLTcsNS4yLTEwLjIsNi43LTEwLjgsOS45Yy0wLjYsMy4yLDUuMSwyLjUsOS42LDBjNC41LTIuNSwxMi4xLTE0LjYsMTIuNC0xOWMtNi40LTEuNi0yMiw0LjEtMjcuMSwxNi42QzQ5LjYsMjYuNiw0Ny43LDEyLDIwLjMsMTIgIGMtMC4xLDIuNiwwLjYsMi45LDEuOSw2LjFjMS4zLDMuMiw5LjksMTguMSwyMC43LDE3LjVjMS42LTAuMS0wLjMtMy44LTIuOS02LjhjMCwwLTYuNC01LjktOC4zLTcuNWM2LjQsMi41LDE2LjIsOS45LDE3LDE1LjMgIGMwLjUsMy41LDAuNCwyMC4yLDAuMiwzMS43QzQ5LDY4LjIsNDguOSw2OC4yLDQ4LjgsNjguMnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgeCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMjk1MCAxMDAwIDQ1MCA0NTBcIixcbiAgICBbXG4gICAgICBcIk0zMzgyLjg0IDc4NC4zIDM0NjIuNDMgODYyLjgyOSAzNTQwLjk2IDc4My4yMzggMzYwMS4yMyA4NDIuNzA0IDM1MjIuNyA5MjIuMjk1IDM2MDIuMjkgMTAwMC44MiAzNTQyLjgyIDEwNjEuMDkgMzQ2My4yMyA5ODIuNTY2IDMzODQuNyAxMDYyLjE2IDMzMjQuNDMgMTAwMi42OSAzNDAyLjk2IDkyMy4xIDMzMjMuMzcgODQ0LjU3WlwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBiYWNrcGFjayA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEwMDAgMTAwMFwiLFxuICAgIFtcbiAgICAgIFwibTkwMi4wOSA3NjkuNTVjMC4zMzU5NC0zNS4xNDggMC4yMDMxMi0xMTIuMjktNS45MTQxLTE4OC41MiAwLjUzOTA2IDMyLjEyNSAxLjM3ODkgNjEuNTIzIDIuNDcyNyA3Ni45MDYgMC42MDkzOCA4LjgyNDIgMS45NTMxIDU1LjAyMyAzLjQ0MTQgMTExLjYxelwiLFxuICAgICAgXCJtNjA4LjE0IDEwOC40NWMxLjA0My0yNC42OTUtMC4yODkwNi01MS4xNDUgMjAuNjQxLTQ5LjYzMyAxMC4wNDMgMC43MzA0NyAyNy4zNDggMy4yODkxIDQ4Ljc1OCA3LjU3MDMgMjMuNzM0IDQuNzUzOSAyMC4zODcgMTMzLjQ1IDIwLjM4NyAxMzMuNDVsODYuMDUxIDMzLjQ1N2MyLjgzMi05My4xMzMtMjAuNDQ5LTIwMS4yOC00My42OC0yMDcuOS0zOC45My0xMS4xMDItOTYuMDU5LTM0LjI0Ni0xNTIuODMtMjEuODI4LTM3LjkzNCA4LjI5My00OC4wODYgMTQ3LjU1LTQ4LjA4NiAxNDcuNTVsNjYuMzgzIDE3LjM4N2MwLjAwMzkwNiAwIDAuNjk5MjItMjAuNTQzIDIuMzc4OS02MC4wNTl6XCIsXG4gICAgICBcIm0yMDcuNzYgNTc5LjJjMTMuOTggNS4xNzE5IDM3LjAyIDEyLjc3IDY0LjI5NyAyMS4zMjQgMjAuMzg3LTU2LjQ2MSA1NC45NjEtOTkuNTI3IDU0Ljk2MS05OS41MjdzNy45ODA1LTIwLjkxNCA0OC4wNy0xMi40OTJjNDAuMDk0IDguNDEwMiA0MS45NjUgMjYuNzExIDQxLjk2NSAyNi43MTFzLTI1Ljk2OSA0Mi4wOTgtNTEuMjE1IDk4LjgzMmMtMS41NTg2IDMuNTAzOS0zLjYxMzMgNy44NTk0LTUuMTcxOSAxMy4yMjMgNjMuNTYyIDE4LjUyNyAxMjQuOTggMzQuOTM0IDE0Mi42NCAzNi41MzkgMzQuNzY2IDMuMTc5NyAxMjIuMDkgNi45OTYxIDEzOC42OC03Ny4wMzkgMTYuMzY3LTgyLjkzNCAzMi41NjYtMTMzLjUyIDQ2LjM2Ny0xNjUuMTEgMi43NjE3LTYuODk4NCA1LjI0MjItMTIuNjEzIDcuMDY2NC0xNi43MzggMy43NTc4LTguNDk2MSAxNS4xOTEtMjUuNTM1IDMxLjgyNC00Mi4yMzh2LTAuMDIzNDM4YzAuMDQ2ODc1LTAuMTIxMDkgMC4xMjEwOS0wLjE3OTY5IDAuMjE0ODQtMC4yMDMxMiAyMi4yMjMtMjIuMTk5IDUzLjY2NC00My43MDMgODguNzY2LTQzLjU3IDEuODQ3NyAwIDQuMTA1NSAwLjIyNjU2IDYuNjEzMyAwLjYxMzI4LTIwLjY1Mi0yMi45NjktNDQuMTg0LTQyLjUyNy02OS4yMzgtNTIuMTg4LTUuNjk5Mi0yLjE5NTMtMjEyLjYyLTgzLjk3Ny0yNzQuNDQtNzUuMjI3LTEuNzc3MyAwLjI1MzkxLTMuNDMzNiAwLjQ5MjE5LTUuMDI3MyAwLjcxODc1IDMtMC40MzM1OSA1LjAyNzMtMC43MTg3NSA1LjAyNzMtMC43MTg3NS0wLjAwMzkwNy0wLjAwMzkwNi0xNDEuNzMgMy41MTE3LTIzNS40NSA5Ny4xNTYtNDguOTYxIDQ4LjkxLTkxLjk0NSAxMzYuNjYtMTE4LjkzIDIyMC45Ny0wLjM0NzY2IDIxLjM5OCAyNi45NTMgNDguMjc3IDgyLjk4IDY4Ljk4OHpcIixcbiAgICAgIFwibTQ4NC4zNSA3MjYuNjRjLTI3Ljg2My01LjExMzMtNzkuNjIxLTE5LjI5Ny0xMzQuNzktMzUuNjA1LTguMzk4NCAzMy4yMjctMS4yNjE3IDkwLjMwMS0xLjI2MTcgOTAuMzAxcy0xMC44NDggMjUuODk1LTUzLjYwNSAxNi40M2MtMzYuNDM0LTguMDg5OC0zNS40OTYtMzQuMzc5LTM1LjQ5Ni0zNC4zNzlzLTkuMzEyNS01My4zNTItMS4xMDU1LTEwMC4zMWMtNTIuNTEyLTE2LjUzNS05Ny4xMjktMzEuMzc5LTExMy41NC0zNy42OC0xOS43NTQtNy41NTg2LTMzLjk5Ni0xOC4wOTgtNDQuMjU4LTI5Ljg2Ny0wLjc1NzgxIDQuNjY4LTEuNDI5NyAyMy41Mi0yLjA2MjUgMjguMDA4LTM3LjIxOSAyNjUuMSA0MC4wMzUgMzc5LjI3IDQ1LjUwOCA0MDMuMzggNy4zNTU1IDMyLjQxIDE0OC41NyAxMDAuMzcgMjg0Ljg5IDE1MC4xNiA3OS4wNzggMjguODgzIDE2Ny4zNiAyMy4yODEgMjAyLjQzIDIwLjc2MmwyLjU2NjQtMC4xNDQ1M2M1LjU3ODEtMTAyLjUgMjAuNzczLTM2OS4zMiAyOC4yMjMtNTMyLjYxLTExLjgwNSA1OS45NTMtMTEwLjc5IDczLjc3Ny0xNzcuNSA2MS41NjJ6XCIsXG4gICAgICBcIm05MDIuMDkgNzY5LjU1Yy0xLjQ4ODMtNTYuNTk0LTIuODIwMy0xMDIuNzctMy40NDUzLTExMS42NC0xLjA5MzgtMTUuMzU5LTEuOTMzNi00NC43NjItMi40NzI3LTc2Ljg5NS01LjQ2MDktNjcuODcxLTIyLjk1Ny0xNDAuNzItMzcuOTIyLTE3OC41OS0yNS4xNTItNjMuNzQyLTk4LjE5NSAxNi4yMTEtMTE4LjgyIDY2LjU1MS0yMS4zNTkgNTIuMTI5LTQxLjU3OCA2NTMuMDMtNDMuNTQ3IDcxMi42IDUxLTEzLjI4NSAxMjQuMDUtMzIuMzUyIDEzMy4wMS00Ni40MDIgMTguOTczLTI5LjcxMSAyOS4yNTgtNTguNDc3IDMzLjk5Ni04Mi45NjkgMy4xNDQ1LTE2LjMwOSA0NS4zMjQtMzEuNTU5IDQ1LjMyNC0zMS41NTlzLTIuOTg4My0xMjkuNi01LjY4NzUtMjM0LjE5bC0wLjc0MjE5IDIuNzYxN2MwIDAuMDE5NTMxIDAuMjAzMTItNy4xOTE0IDAuMzEyNS0xOS42NzJ6XCIsXG4gICAgICBcIm0xMDg5LjEgNTA4LjI1cy0xMC44MTItMTI4Ljc5LTEzLjI2Mi0xNTMuODJjLTUuOTI5Ny02MC40NDUtNjAuNDU3LTI1NC44NC0yNDYuMzEtMTA1LjlsNDkuMjM0IDUzLjcxMXMxMjUuOTUtMTEzLjE4IDEzMC43IDE1Ni41YzAuMzk0NTMgMjIuODI0IDEuOTA2MiA1NC43MDcgMTUuNjM3IDI0Ni41OSAxNS4xOTEgMjEyLjE1LTY3Ljc3NyAyMTMuMzItNjcuNzc3IDIxMy4zMmwzLjc0MjIgOTAuMjE1czMwLjgxNi04LjA2MjUgNjIuNjQxLTIxLjQ1N2M0NS4wMzUtMTguOTczIDg4LjE4OC05OC4zNzUgODguMTg4LTIxNC43Ny0wLjAzOTA2Mi00Ni4wNTEtMjIuNzkzLTI2NC40MS0yMi43OTMtMjY0LjQxelwiLFxuICAgICAgXCJtNDM4LjI1IDE0OC4xOCA0MS4wOS02LjMxMjV2LTM0Ljc3M2w3LjkwNjItMjguNDQxcy0zNy45NDUgMTcuMzg3LTQ4Ljk5NiAzNC43NjZjLTExLjA2MiAxNy4zODctMTUuODE2IDI2Ljg2Ny0xNS44MTYgMzQuNzY2IDAgNy45MDYyIDE1LjgxNi0wLjAwMzkwNyAxNS44MTYtMC4wMDM5MDd6XCIsXG4gICAgXSxcbiAgKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgc2V0dGluZ3NfbW9kYWwgPSAofmluamVjdCwgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy5FdmFsdWF0aW9uLnQpID0+IHtcbiAgbGV0IG1vZGFsID0gZGl2KH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy1tb2RhbFwiKV0pKTtcbiAgbGV0IHNldHRpbmcgPSAoaWNvbiwgbmFtZSwgY3VycmVudCwgYWN0aW9uOiBVcGRhdGVBY3Rpb24uc2V0dGluZ3NfYWN0aW9uKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy10b2dnbGVcIildKSxcbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9bmFtZSwgaWNvbiwgY3VycmVudCwgXyA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGUuU2V0KGFjdGlvbikpXG4gICAgICAgICksXG4gICAgICAgIHRleHQobmFtZSksXG4gICAgICBdLFxuICAgICk7XG4gIFtcbiAgICBtb2RhbChbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy1tb2RhbC10b3BcIildKSxcbiAgICAgICAgW1xuICAgICAgICAgIFdpZGdldHMuYnV0dG9uKEljb25zLngsIF8gPT5cbiAgICAgICAgICAgIGluamVjdChVcGRhdGUuU2V0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcImhcIixcbiAgICAgICAgXCJzaG93IGZ1bGwgc3RlcCB0cmFjZVwiLFxuICAgICAgICBzZXR0aW5ncy5zdGVwcGVyX2hpc3RvcnksXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd1JlY29yZCksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCJ8XCIsXG4gICAgICAgIFwic2hvdyBjYXNlIGNsYXVzZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19jYXNlX2NsYXVzZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc2VDbGF1c2VzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIs67XCIsXG4gICAgICAgIFwic2hvdyBmdW5jdGlvbiBib2RpZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19mbl9ib2RpZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0ZuQm9kaWVzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcInhcIixcbiAgICAgICAgXCJzaG93IGZpeHBvaW50c1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2ZpeHBvaW50cyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Rml4cG9pbnRzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBVbmljb2RlLmNhc3RBcnJvd1N5bSxcbiAgICAgICAgXCJzaG93IGNhc3RzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfY2FzdHMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc3RzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIvCflI1cIixcbiAgICAgICAgXCJzaG93IGxvb2t1cCBzdGVwc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2xvb2t1cF9zdGVwcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93TG9va3VwcyksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCLij6/vuI9cIixcbiAgICAgICAgXCJzaG93IHN0ZXBwZXIgZmlsdGVyc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93RmlsdGVycyksXG4gICAgICApLFxuICAgIF0pLFxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY2xhc3NfKFwibW9kYWwtYmFja1wiKSxcbiAgICAgICAgICBBdHRyLm9uX21vdXNlZG93bihfID0+XG4gICAgICAgICAgICBpbmplY3QoVXBkYXRlLlNldChFdmFsdWF0aW9uKFNob3dTZXR0aW5ncykpKVxuICAgICAgICAgICksXG4gICAgICAgIF0pLFxuICAgICAgW10sXG4gICAgKSxcbiAgXTtcbn07XG5cbmxldCBzdGVwcGVyX3ZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy5FdmFsdWF0aW9uLnQsXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfnJlc3VsdF9rZXksXG4gICAgICBzdGVwcGVyOiBTdGVwcGVyLnQsXG4gICAgKSA9PiB7XG4gIGxldCBidXR0b25fYmFjayA9XG4gICAgV2lkZ2V0cy5idXR0b25fZChcbiAgICAgIEljb25zLnVuZG8sXG4gICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlN0ZXBwZXJBY3Rpb24ocmVzdWx0X2tleSwgU3RlcEJhY2t3YXJkKSksXG4gICAgICB+ZGlzYWJsZWQ9U3RlcHBlci51bmRvX3BvaW50KH5zZXR0aW5ncywgc3RlcHBlci5wcmV2aW91cykgPT0gTm9uZSxcbiAgICAgIH50b29sdGlwPVwiU3RlcCBCYWNrd2FyZHNcIixcbiAgICApO1xuICBsZXQgKGhpZGRlbiwgcHJldmlvdXMpID1cbiAgICBpZiAoc2V0dGluZ3Muc3RlcHBlcl9oaXN0b3J5KSB7XG4gICAgICBTdGVwcGVyLmdldF9oaXN0b3J5KH5zZXR0aW5ncywgc3RlcHBlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIChbXSwgW10pO1xuICAgIH07XG4gIGxldCBkaF9jb2RlX2N1cnJlbnQgPSBkID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInJlc3VsdFwiXSksXG4gICAgICBbXG4gICAgICAgIERIQ29kZS52aWV3KFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5zZWxlY3RlZF9ob2xlX2luc3RhbmNlPU5vbmUsXG4gICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICB+d2lkdGg9ODAsXG4gICAgICAgICAgfnByZXZpb3VzX3N0ZXA9XG4gICAgICAgICAgICBwcmV2aW91c1xuICAgICAgICAgICAgfD4gTGlzdC5udGhfb3B0KF8sIDApXG4gICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBTdGVwcGVyLnN0ZXBfd2l0aF9wcmV2aW91cykgPT4geC5zdGVwKSxcbiAgICAgICAgICB+bmV4dF9zdGVwcz1TdGVwcGVyLmdldF9uZXh0X3N0ZXBzKHN0ZXBwZXIpLFxuICAgICAgICAgIH5oaWRkZW5fc3RlcHM9aGlkZGVuLFxuICAgICAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgICAgIGQsXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG4gIGxldCBkaF9jb2RlX3ByZXZpb3VzID0gKHN0ZXBfd2l0aF9wcmV2aW91czogU3RlcHBlci5zdGVwX3dpdGhfcHJldmlvdXMpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInJlc3VsdFwiXSksXG4gICAgICBbXG4gICAgICAgIERIQ29kZS52aWV3KFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5zZWxlY3RlZF9ob2xlX2luc3RhbmNlPU5vbmUsXG4gICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICB+d2lkdGg9ODAsXG4gICAgICAgICAgfnByZXZpb3VzX3N0ZXA9c3RlcF93aXRoX3ByZXZpb3VzLnByZXZpb3VzLFxuICAgICAgICAgIH5jaG9zZW5fc3RlcD1Tb21lKHN0ZXBfd2l0aF9wcmV2aW91cy5zdGVwKSxcbiAgICAgICAgICB+aGlkZGVuX3N0ZXBzPXN0ZXBfd2l0aF9wcmV2aW91cy5oaWRkZW4sXG4gICAgICAgICAgfnJlc3VsdF9rZXksXG4gICAgICAgICAgc3RlcF93aXRoX3ByZXZpb3VzLnN0ZXAuZCxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgbGV0IGhpZGVfc3RlcHBlciA9XG4gICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9XCJTaG93IFN0ZXBwZXJcIiwgXCJzXCIsIHRydWUsIF8gPT5cbiAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uVG9nZ2xlU3RlcHBlcihyZXN1bHRfa2V5KSlcbiAgICApO1xuICBsZXQgc2hvd19oaXN0b3J5ID1cbiAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1cIlNob3cgSGlzdG9yeVwiLCBcImhcIiwgc2V0dGluZ3Muc3RlcHBlcl9oaXN0b3J5LCBfID0+XG4gICAgICBpbmplY3QoU2V0KEV2YWx1YXRpb24oU2hvd1JlY29yZCkpKVxuICAgICk7XG4gIGxldCBldmFsX3NldHRpbmdzID1cbiAgICBXaWRnZXRzLmJ1dHRvbihJY29ucy5nZWFyLCBfID0+IGluamVjdChTZXQoRXZhbHVhdGlvbihTaG93U2V0dGluZ3MpKSkpO1xuICBsZXQgY3VycmVudCA9XG4gICAgc3dpdGNoIChzdGVwcGVyLmN1cnJlbnQpIHtcbiAgICB8IFN0ZXBwZXJPSyhkLCBfKSA9PlxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0pLFxuICAgICAgICBbXG4gICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiZXF1aXZcIiksIFtOb2RlLnRleHQoXCLiiaFcIildKSxcbiAgICAgICAgICBkaF9jb2RlX2N1cnJlbnQoZCksXG4gICAgICAgICAgYnV0dG9uX2JhY2ssXG4gICAgICAgICAgZXZhbF9zZXR0aW5ncyxcbiAgICAgICAgICBzaG93X2hpc3RvcnksXG4gICAgICAgICAgaGlkZV9zdGVwcGVyLFxuICAgICAgICBdLFxuICAgICAgKVxuICAgIC8vIFRPRE9bTWF0dF06IHNob3cgZXJyb3JzIGFuZCB3YWl0aW5nXG4gICAgfCBTdGVwVGltZW91dFxuICAgIHwgU3RlcFBlbmRpbmcoXywgXywgXykgPT4gZGl2KFtdKVxuICAgIH07XG5cbiAgbGV0IHByZXZpb3VzX3N0ZXAgPSAoc3RlcDogU3RlcHBlci5zdGVwX3dpdGhfcHJldmlvdXMpID0+IHtcbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0pLFxuICAgICAgW1xuICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJlcXVpdlwiKSwgW05vZGUudGV4dChcIuKJoVwiKV0pLFxuICAgICAgICBkaF9jb2RlX3ByZXZpb3VzKHN0ZXApLFxuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInN0ZXBwZXItanVzdGlmaWNhdGlvblwiXSksXG4gICAgICAgICAgW05vZGUudGV4dChTdGVwcGVyLmdldF9qdXN0aWZpY2F0aW9uKHN0ZXAuc3RlcC5rbmQpKV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG4gIH07XG4gIGxldCBub2Rlc19wcmV2aW91cyA9IExpc3QubWFwKHByZXZpb3VzX3N0ZXAsIHByZXZpb3VzKTtcbiAgTGlzdC5mb2xkX2xlZnQoKHgsIHkpID0+IExpc3QuY29ucyh5LCB4KSwgW2N1cnJlbnRdLCBub2Rlc19wcmV2aW91cylcbiAgQCAoc2V0dGluZ3Muc2hvd19zZXR0aW5ncyA/IHNldHRpbmdzX21vZGFsKH5pbmplY3QsIHNldHRpbmdzKSA6IFtdKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEVkaXRvcnM7XG5sZXQgaW1nID0gY3JlYXRlKFwiaW1nXCIpO1xuXG5sZXQgc2xpZGUgPSAoaGVhZGVyLCBjb250ZW50KSA9PlxuICBkaXYoXG4gICAgfmtleT1cInNsaWRlXCIsXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJzbGlkZVwiKSxcbiAgICBbXG4gICAgICBoMSh+a2V5PVwiaGVhZGVyXCIsIH5hdHRyPUF0dHIuY2xhc3NfKFwic2xpZGUtaGVhZGVyXCIpLCBbdGV4dChoZWFkZXIpXSksXG4gICAgICBkaXYofmtleT1cImNvbnRlbnRcIiwgfmF0dHI9QXR0ci5jbGFzc18oXCJzbGlkZS1jb250ZW50XCIpLCBjb250ZW50KSxcbiAgICBdLFxuICApO1xuXG5sZXQgY29kZSA9IGNvbnRlbnQgPT4gc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImNvZGVcIiksIFt0ZXh0KGNvbnRlbnQpXSk7XG5cbmxldCBlbSA9IGNvbnRlbnQgPT4gc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImVtXCIpLCBbdGV4dChjb250ZW50KV0pO1xuXG5sZXQgZ2V0X2NvbnRlbnQgPVxuICBmdW5cbiAgfCBEb2N1bWVudGF0aW9uKFwiUHJvZ3JhbW1pbmcgRXhwcmVzc2l2ZWx5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlByb2dyYW1taW5nIEV4cHJlc3NpdmVseVwiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIllvdSBtaWdodCBub3QgaGF2ZSByZWFsaXplZCBpdCwgYnV0IHlvdSB3cm90ZSB5b3VyXG4gICAgICBmaXJzdCBjb21wdXRlciBwcm9ncmFtcyBpbiBncmFkZSBzY2hvb2wgaW4gdGhlIGZvcm0gb2ZcbiAgICAgIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMhXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkZvciBleGFtcGxlLCBlbnRlciB0aGUgcHJvZ3JhbSBcIiksXG4gICAgICAgICAgICBjb2RlKFwiMiArIDJcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpbiB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3cuXG4gICAgICAgICAgICAgIEhhemVsIG9wZXJhdGVzIGxpa2UgYSBjYWxjdWxhdG9yLCBjb21wdXRpbmcgdGhlIHZhbHVlIG9mIHlvdXIgZXhwcmVzc2lvbiBieSBlcXVhdGlvbmFsbHkgc2ltcGxpZnlpbmcgaXQgKGkuZS4gZXZhbHVhdGluZyBpdCksIGhlcmUgdG8gdGhlIGludGVnZXIgdmFsdWUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjRcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBcIiksXG4gICAgICAgICAgICB0ZXh0KFwiVGhlIHN5bWJvbCBcIiksXG4gICAgICAgICAgICBjb2RlKFwi4omhXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBpcyBwcm9ub3VuY2VkIFxcXCJpcyBlcXVpdmFsZW50IHRvXFxcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQ29tcG9zaW5nIEFyaXRobWV0aWMgRXhwcmVzc2lvbnNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQ29tcG9zaW5nIEFyaXRobWV0aWMgRXhwcmVzc2lvbnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkFyaXRobWV0aWMgZXhwcmVzc2lvbnMgYXJlIGNvbnN0cnVjdGVkIFwiKSxcbiAgICAgICAgICAgIGVtKFwiY29tcG9zaXRpb25hbGx5XCIpLFxuICAgICAgICAgICAgdGV4dChcIjogYnkgY29tYmluaW5nIHNtYWxsZXIgZXhwcmVzc2lvbnMgdXNpbmcgdmFyaW91cyBcIiksXG4gICAgICAgICAgICBlbShcIm9wZXJhdG9yc1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIsIGxpa2UgYWRkaXRpb24gKFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIrXCIpLFxuICAgICAgICAgICAgdGV4dChcIikgYW5kIG11bHRpcGxpY2F0aW9uIChcIiksXG4gICAgICAgICAgICBjb2RlKFwiKlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIpLCBcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiB0byBmb3JtIGxhcmdlciBleHByZXNzaW9ucy4gVGhlIHNtYWxsZXN0IGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgYXJlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtKFwibnVtYmVyIGxpdGVyYWxzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBsaWtlIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBhbmQgXCIpLFxuICAgICAgICAgICAgY29kZShcIjQyXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiRm9yIGV4YW1wbGUsIGVudGVyIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyICogMyArIDQgKiA1XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW4gdGhlIGV4cHJlc3Npb24gZWRpdG9yIGJlbG93LCBvYnNlcnZpbmcgdGhhdCBpdHMgdmFsdWUgaXMgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjI2XCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBUaGUgcmVhc29uIGlzIGJlY2F1c2Ugb2YgdGhlIGZhbWlsaWFyIG9yZGVyIG9mIG9wZXJhdGlvbnM6IG11bHRpcGxpY2F0aW9uIHByZWNlZGVzIGFkZGl0aW9uLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIEJ5IHJ1bm5pbmcgeW91ciBjdXJzb3IgdGhyb3VnaCB0aGlzIHByb2dyYW0sIG9ic2VydmUgaG93IEhhemVsJ3MgY3Vyc29yIGRlY29yYXRpb25zIGRlbW9uc3RyYXRlIHRoaXMgb3JkZXIgb2Ygb3BlcmF0aW9ucyBieSBncm91cGluZyB0b2dldGhlciB0aGUgb3BlcmFuZHMgb2YgZWFjaCBvcGVyYXRvci5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQ29tcHV0aW5nIEVxdWF0aW9uYWxseVwiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb21wdXRpbmcgRXF1YXRpb25hbGx5XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJUbyBwcm92ZSB0aGF0IFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyICogMyArIDQgKiA1IOKJoSAyNlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGluIGdyYWRlIHNjaG9vbCwgd2Ugd291bGQgaGF2ZSB3cml0dGVuIG91dCBhIHNlcmllcyBvZiBlcXVhdGlvbmFsIHN0ZXBzLCBlYWNoIHNpbXBsaWZ5aW5nIHRoZSBleHByZXNzaW9uIGZyb20gdGhlIHByZXZpb3VzIHN0ZXAgYnkgcGVyZm9ybWluZyBvbmUgZWxlbWVudGFyeSBhcml0aG1ldGljIGNvbXB1dGF0aW9uIGF0IGEgdGltZS5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIlVzZSBIYXplbCdzIHN0ZXBwZXIgYnkgY2xpY2tpbmcgdGhlIGJ1dHRvbiB0byB0aGUgcmlnaHQgb2YgdGhlIHJlc3VsdCBiZWxvdyBhbmQgaW50ZXJhY3RpdmVseSBwcm92ZSB0aGF0IG91ciBldmFsdWF0aW9uIHRvIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCIyNlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGlzIGNvcnJlY3Qgb25lIGVsZW1lbnRhcnkgYXJpdGhtZXRpYyBzdGVwIGF0IGEgdGltZS4gVGhpcyBwcm9vZiBpcyB0aGUgZXNzZW5jZSBvZiBjb21wdXRhdGlvbiFcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiVmFyaWFibGVzXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlZhcmlhYmxlc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkFzIGl0IHR1cm5zIG91dCwgeW91IGNhbiBlbnJpY2ggYXJpdGhtZXRpYyBleHByZXNzaW9ucyB0byBnbyBmcm9tIHNpbXBsZSBpbnRlZ2VyIGNvbXB1dGF0aW9ucyB0byBnZW5lcmFsLXB1cnBvc2UgY29tcHV0YXRpb25zISBPdmVyIHRoZSBuZXh0IHNldmVyYWwgc2xpZGVzLCB3ZSB3aWxsIHNlZSBob3cgdGhpcyB3b3Jrcy5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIk91ciBmaXJzdCBzdGVwIGlzIHRvIGludHJvZHVjZSBhIHdheSB0byBhYmJyZXZpYXRlIGV4cHJlc3Npb25zIHVzaW5nIHZhcmlhYmxlcy4gVHlwZSB0aGUgZXhwcmVzc2lvbiBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwibGV0IHggPSAyICogMyBpbiB4ICsgMVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGludG8gdGhlIGV4cHJlc3Npb24gZWRpdG9yIGJlbG93LCBvYnNlcnZpbmcgdGhhdCBpdCBldmFsdWF0ZXMgdG8gXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjdcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBZb3UgY2FuIGluc2VydCBhIG5ldyBsaW5lIGFmdGVyIHRoZSBcIiksXG4gICAgICAgICAgICBjb2RlKFwiaW5cIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBrZXl3b3JkIHRvIG1ha2UgdGhlIHByb2dyYW0gbW9yZSBpZGlvbWF0aWMgKGkuZS4gcmVhZGFibGUpLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGFyZSBnaXZlbiBjb21wdXRhdGlvbmFsIG1lYW5pbmcgc2ltcGx5IGJ5IHN1YnN0aXR1dGlvbi4gVXNlIHRoZSBzdGVwcGVyIHRvIHNlZSBob3cgdGhpcyB3b3Jrcy5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQ29tcG9zaXRpb25hbGl0eVwiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb21wb3NpdGlvbmFsaXR5XCIsXG4gICAgICAgIFtcbiAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgXCJMZXQgZXhwcmVzc2lvbnMgYXJlIGV4cHJlc3Npb25zLCBqdXN0IGxpa2UgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gQXMgd2UgZGlzY3Vzc2VkIGVhcmxpZXIsIGV4cHJlc3Npb25zIGFyZSBjb25zdHJ1Y3RlZCBjb21wb3NpdGlvbmFsbHksIHNvIHdlIGNhbiBldmVuIG1ha2UgYSBsZXQgZXhwcmVzc2lvbiBhbiBvcGVyYW5kIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IuXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJTY29wZVwiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJTY29wZVwiLFxuICAgICAgICBbXG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiVGhlIHNjb3BlIG9mIGEgdmFyaWFibGUgaXMgdGhlIGV4cHJlc3Npb24ocykgb2YgdGhlIHByb2dyYW0gd2hlcmUgaXQgaXMgYXZhaWxhYmxlIGZvciB1c2UuIEZvciBsZXQgZXhwcmVzc2lvbnMsIHRoZSBzdWItZXhwcmVzc2lvbiB0aGF0IGZvbGxvd3MgdGhlIFwiLFxuICAgICAgICAgICksXG4gICAgICAgICAgY29kZShcImluXCIpLFxuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIiBrZXl3b3JkIGhhcyB0aGUgdmFyaWFibGUgYm91bmQgYnkgdGhlIGxldCBleHByZXNzaW9uIGluIHNjb3BlLiBIYXplbCdzIGV4cHJlc3Npb24gZGVjb3JhdGlvbnMgc2hvdyB5b3Ugd2hlcmUgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZSB3aWxsIGVuZC5cIixcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlNoYWRvd2luZ1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJTaGFkb3dpbmdcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJPbmNlIGEgdmFyaWFibGUgaXMgZGVmaW5lZCwgaXQgY2Fubm90IGJlIGNoYW5nZWQuIFRoZXJlIGlzIG5vIGFzc2lnbm1lbnQgb3BlcmF0b3IgaW4gbGFuZ3VhZ2VzIGJhc2VkIG9uIHB1cmUgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb25zLCB3aGVyZSB2YXJpYWJsZXMgYXJlIGdpdmVuIG1lYW5pbmcgYnkgc3Vic3RpdHV0aW9uLCBsaWtlIEhhemVsLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBkZWZpbmUgYSBcIiksXG4gICAgICAgICAgICBlbShcIm5ldyB2YXJpYWJsZVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIHRoYXQgc2hhcmVzIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSBib3VuZCB2YXJpYWJsZS4gSG93ZXZlciwgdGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHJlZmVyIHRvIHRoZSBwcmV2aW91cyBiaW5kaW5nIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIG5ldyBiaW5kaW5nOyB3ZSBzYXkgdGhhdCB2YXJpYWJsZSBoYXMgYmVlbiBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlbShcInNoYWRvd2VkXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQm9vbGVhbnMgYW5kIFR5cGVzXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkJvb2xlYW5zIGFuZCBUeXBlc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIlNvIGZhciwgd2UgaGF2ZSBvbmx5IHNlZW4gZXhwcmVzc2lvbnMgdGhhdCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSG93ZXZlciwgSGF6ZWwgc3VwcG9ydHMgbWFueSBvdGhlciB0eXBlcyBvZiB2YWx1ZXMsIGxpa2UgYm9vbGVhbnMuIFRoZXJlIGFyZSB0d28gYm9vbGVhbiB2YWx1ZXMsIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJ0cnVlXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBhbmQgXCIpLFxuICAgICAgICAgICAgY29kZShcImZhbHNlXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkhhemVsJ3MgdHlwZSBzeXN0ZW0gZW5zdXJlcyB0aGF0IGV4cHJlc3Npb25zIGFyZSB1c2VkIGluIHdheXMgdGhhdCBtYWtlIHNlbnNlLiBFYWNoIGV4cHJlc3Npb24gaGFzIGEgdHlwZSwgd2hpY2ggcHJlZGljdHMgdGhlIHR5cGUgb2YgaXRzIHZhbHVlLiBUaGUgZXhwcmVzc2lvbnMgaW4gdGhlIHByZXZpb3VzIHNsaWRlcyBhbGwgaGFkIHR5cGUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIkludFwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiLCB3aGljaCBpcyB0aGUgdHlwZSBvZiBpbnRlZ2Vycywgd2hlcmVhcyB0aGUgYm9vbGVhbiB2YWx1ZXMgaGF2ZSB0eXBlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJCb29sXCIpLFxuICAgICAgICAgICAgdGV4dChcIi4gXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJZb3UgY2FuIHNlZSB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbiB5b3VyIGN1cnNvciBpcyBvbiBpbiB0aGUgY3Vyc29yIGluc3BlY3RvciBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoZSBzeW1ib2wgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjpcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGlzIHByb25vdW5jZWQgXFxcImhhcyB0eXBlXFxcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkJvb2xlYW4gdmFsdWVzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSB1c2luZyBjb21wYXJpc29uIG9wZXJhdG9ycyBsaWtlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCI8XCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgXCIpLFxuICAgICAgICAgICAgY29kZShcIj09XCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgYW5kIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCI+XCIpLFxuICAgICAgICAgICAgdGV4dChcIiBvbiBpbnRlZ2Vycy4gRm9yIGV4YW1wbGUsIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyIDwgM1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIgZXZhbHVhdGVzIHRvIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJ0cnVlXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBCb29sZWFucyBjYW4gYWxzbyBiZSBjb21iaW5lZCB1c2luZyBsb2dpY2FsIGFuZCAoY29uanVuY3Rpb24pLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiJiZcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBhbmQgbG9naWNhbCBvciAoZGlzanVuY3Rpb24pLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwifHxcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb25kaXRpb25hbCBFeHByZXNzaW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb25kaXRpb25hbCBFeHByZXNzaW9uc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkdpdmVuIGEgYm9vbGVhbiBleHByZXNzaW9uLCB3ZSBjYW4gdXNlIGl0IHRvIGNob29zZSBiZXR3ZWVuIHR3byBleHByZXNzaW9ucyB1c2luZyBhIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtKFwiY29uZGl0aW9uYWwgZXhwcmVzc2lvblwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIEZvciBleGFtcGxlLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiaWYgMiA8IDMgdGhlbiA0ICogNCBlbHNlIDUgKiA1XCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcIjRcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJGdW5jdGlvbnNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiRnVuY3Rpb25zXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiRnVuY3Rpb25zIGFyZSBleHByZXNzaW9ucyB0aGF0IHRha2Ugb3RoZXIgZXhwcmVzc2lvbnMgYXMgaW5wdXRzIGFuZCBwcm9kdWNlIG90aGVyIGV4cHJlc3Npb25zIGFzIG91dHB1dHMuIEZvciBleGFtcGxlLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiZnVuIHggLT4geCArIDFcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gaW50ZWdlciBleHByZXNzaW9uIGFzIGlucHV0IGFuZCBwcm9kdWNlcyBhbiBpbnRlZ2VyIGV4cHJlc3Npb24gYXMgb3V0cHV0LlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiRnVuY3Rpb25zIGluIEhhemVsIGRvIG5vdCB0aGVtc2VsdmVzIGhhdmUgbmFtZXMuIEluc3RlYWQsIHlvdSBjYW4gdXNlIGEgbGV0IGV4cHJlc3Npb24gdG8gbmFtZSBhIGZ1bmN0aW9uLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiWW91IGFwcGx5IGEgZnVuY3Rpb24gdG8gYW4gYXJndW1lbnQgZXhwcmVzc2lvbiBieSB1c2luZyBwYXJlbnRoZXNlcyBpbiB0aGUgdXN1YWwgd2F5LiBGb3IgZXhhbXBsZSwgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcImxldCBmID0gZnVuIHggLT4geCArIDEgaW4gZigyKVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgZXZhbHVhdGVzIHRvIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIzXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIuIEdvIHRocm91Z2ggdGhpcyBleGFtcGxlIGluIHRoZSBzdGVwcGVyIHRvIHNlZSBob3cgc3Vic3RpdHV0aW9uIG9mIHRoZSBmdW5jdGlvbiBmb3IgdGhlIHZhcmlhYmxlIHN0YW5kaW5nIGZvciB0aGUgZnVuY3Rpb24gd29ya3MuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlR1cGxlc1wiLCBfKSA9PiBTb21lKHNsaWRlKFwiVHVwbGVzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUGF0dGVybiBNYXRjaGluZyBvbiBUdXBsZXNcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUGF0dGVybiBNYXRjaGluZyBvbiBUdXBsZXNcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb25cIiwgXykgPT4gU29tZShzbGlkZShcIlJlY3Vyc2lvblwiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIkxpc3RzXCIsIF8pID0+IFNvbWUoc2xpZGUoXCJMaXN0c1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlBhdHRlcm4gTWF0Y2hpbmcgb24gTGlzdHNcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUGF0dGVybiBNYXRjaGluZyBvbiBMaXN0c1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvbiBvbiBMaXN0czogbGVuZ3RoXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlJlY3Vyc2lvbiBvbiBMaXN0czogbGVuZ3RoXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBzdW1cIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBzdW1cIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb24gb24gTGlzdHM6IG51bV96ZXJvc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJSZWN1cnNpb24gb24gTGlzdHM6IG51bV96ZXJvc1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIkhpZ2hlci1PcmRlciBGdW5jdGlvbnNcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiSGlnaGVyLU9yZGVyIEZ1bmN0aW9uc1wiLCBbXSkpXG4gIHwgXyA9PiBOb25lO1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHNlcV9iYXNpY19leHBfZXggPSB7XG4gIHN1Yl9pZDogU2VxQmFzaWMsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxOyAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEsIHdoaWNoIGlzIGlnbm9yZWQuIFRoZW4gdGhlIHJpZ2h0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIHRvIDIuXCIsXG59O1xuLy8gVE9ETyBhcmUgdGhlc2UgcmVhbGx5IHRoZSBjb3JyZWN0IG1lc3NhZ2VzL2V4cGxhbmF0aW9uc1xubGV0IHNlcV90ZXN0X2V4cF9leCA9IHtcbiAgc3ViX2lkOiBTZXFUZXN0LFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCB0cnVlIGVuZDsgM1wiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhbmQgcmVjb3JkZWQgYXMgYSBwYXNzaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyB0cnVlLiBUaGVuIHRoZSByaWdodCBleHByZXNzaW9uIGlzIGV2YWxhdXRlcyB0byAzLlwiLFxufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSxcbiAgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCksXG5dO1xubGV0IHNlcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFtsZWZ0IGV4cHJlc3Npb25dKCVzKSBpcyBldmFsdWF0ZWQsIHRoZW4gdGhlIFtyaWdodCBleHByZXNzaW9uXSglcykgaXMgZXZhbHVhdGVkLlwiO1xuICB7XG4gICAgaWQ6IFNlcUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzZXEoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzZXFfYmFzaWNfZXhwX2V4LCBzZXFfdGVzdF9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IHNlcXM6IGdyb3VwID0ge2lkOiBTZXFFeHAsIGZvcm1zOiBbc2VxX2V4cF19O1xuIiwibGV0IGZpbGxlZF9zbGlkZXMgPSBbXTtcblxubGV0IGVtcHR5OiBTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSA9IHtcbiAgemlwcGVyOiBcIigoc2VsZWN0aW9uKChmb2N1cyBMZWZ0KShjb250ZW50KCkpKSkoYmFja3BhY2soKSkocmVsYXRpdmVzKChzaWJsaW5ncygoKSgoR3JvdXQoKGlkIDApKHNoYXBlIENvbnZleCkpKSkpKShhbmNlc3RvcnMoKSkpKShjYXJldCBPdXRlcikpXCIsXG4gIGJhY2t1cF90ZXh0OiBcIlwiLFxufTtcblxubGV0IG51bV9lbXB0eSA9IDg7XG5cbmxldCBpbml0X2RhdGEgPSBmaWxsZWRfc2xpZGVzIEAgTGlzdC5pbml0KG51bV9lbXB0eSwgXyA9PiBlbXB0eSk7XG5cbmFzc2VydChMaXN0Lmxlbmd0aChpbml0X2RhdGEpID4gMCk7XG5cbmxldCBpbml0ID0gKCkgPT4gKDAsIGluaXRfZGF0YSB8PiBMaXN0Lm1hcChTY3JhdGNoU2xpZGUudW5wZXJzaXN0KSk7XG5cbmxldCBpbml0X250aCA9IG4gPT4ge1xuICBsZXQgZGF0YSA9IExpc3QubnRoKGluaXRfZGF0YSwgbik7XG4gIFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QoZGF0YSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgc3ZnID0gKGF0dHJzLCBjaGlsZHJlbikgPT5cbiAgTm9kZS5jcmVhdGVfc3ZnKFwic3ZnXCIsIH5hdHRyPUF0dHIubWFueShhdHRycyksIGNoaWxkcmVuKTtcblxubGV0IHN0b3AgPSBhdHRycyA9PiBOb2RlLmNyZWF0ZV9zdmcoXCJzdG9wXCIsIH5hdHRyPUF0dHIubWFueShhdHRycyksIFtdKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbDtcblxubGV0IHRpcF93aWR0aCA9IDAuMzI7XG5sZXQgY29uY2F2ZV9hZGogPSAwLjI1O1xubGV0IGNvbnZleF9hZGogPSAoLTAuMTMpO1xubGV0IHNoYWRvd19hZGogPSAwLjAxNTtcblxubGV0IGNhcmV0X2FkanVzdCA9IChzaWRlOiBEaXJlY3Rpb24udCwgc2hhcGU6IG9wdGlvbihEaXJlY3Rpb24udCkpID0+XG4gIHN3aXRjaCAoc2lkZSwgc2hhcGUpIHtcbiAgfCAoXywgTm9uZSkgPT4gMC5cbiAgfCAoTGVmdCwgU29tZShMZWZ0KSkgPT4gY29uY2F2ZV9hZGpcbiAgfCAoUmlnaHQsIFNvbWUoUmlnaHQpKSA9PiAtLiBjb25jYXZlX2FkalxuICB8IChMZWZ0LCBTb21lKFJpZ2h0KSkgPT4gY29udmV4X2FkalxuICB8IChSaWdodCwgU29tZShMZWZ0KSkgPT4gLS4gY29udmV4X2FkalxuICB9O1xuXG5sZXQgY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyA9IDAuMDU7XG5cbmxldCB0ID0gY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyAvLiAwLjU7XG5sZXQgc2hvcnRfdGlwX2hlaWdodCA9ICgxLiAtLiB0KSAqLiAwLjU7XG5cbmxldCBzdHJldGNoX2R4ID0gMC4xNTtcblxubGV0IHJhaXNlZF9zaGFkb3dfZHggPSBcIjAuMVwiO1xubGV0IHJhaXNlZF9zaGFkb3dfZHkgPSBcIjAuMDM3XCI7XG5sZXQgc2hhZG93X2R4ID0gcmFpc2VkX3NoYWRvd19keDtcbmxldCBzaGFkb3dfZHkgPSByYWlzZWRfc2hhZG93X2R5O1xuXG5sZXQgZXh0cmFfdGFpbCA9IDAuO1xubGV0IGphZ2dlZF9lZGdlX2ggPSBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIC8uIDMuO1xubGV0IGphZ2dlZF9lZGdlX3cgPSBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIC8uIDEuO1xuXG5sZXQgc2hvcnRfdGlwX3dpZHRoID0gKDEuIC0uIHQpICouIHRpcF93aWR0aDtcblxudHlwZSBkaW1zID0ge1xuICB3aWR0aDogaW50LFxuICBoZWlnaHQ6IGludCxcbiAgbGVmdDogaW50LFxuICB0b3A6IGludCxcbn07XG5cbnR5cGUgZmRpbXMgPSB7XG4gIHdpZHRoOiBmbG9hdCxcbiAgaGVpZ2h0OiBmbG9hdCxcbiAgbGVmdDogZmxvYXQsXG4gIHRvcDogZmxvYXQsXG59O1xuXG5sZXQgZnplcm86IGZkaW1zID0ge3dpZHRoOiAwLiwgaGVpZ2h0OiAwLiwgbGVmdDogMC4sIHRvcDogMC59O1xuXG5sZXQgcG9zX3N0ciA9ICh+ZDogZGltcywgfmZ1ZGdlOiBmZGltcz1memVybywgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50KSA9PlxuICBQcmludGYuc3ByaW50ZihcbiAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4OyB3aWR0aDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgIEZsb2F0Lm9mX2ludChkLmxlZnQpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gZnVkZ2UubGVmdCxcbiAgICBGbG9hdC5vZl9pbnQoZC50b3ApICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIGZ1ZGdlLnRvcCxcbiAgICBGbG9hdC5vZl9pbnQoZC53aWR0aCkgKi4gKGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gZnVkZ2Uud2lkdGgpLFxuICAgIEZsb2F0Lm9mX2ludChkLmhlaWdodCkgKi4gKGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIGZ1ZGdlLmhlaWdodCksXG4gICk7XG5cbmxldCBjb2RlX3N2Z19zaXplZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5tZWFzdXJlbWVudCBhcyB7b3JpZ2luLCBsYXN0fTogSGF6M2xjb3JlLk1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgICAgfmJhc2VfY2xzPVtdLFxuICAgICAgfnBhdGhfY2xzPVtdLFxuICAgICAgfmZ1ZGdlOiBmZGltcz1memVybyxcbiAgICAgIHBhdGhzOiBsaXN0KFN2Z1V0aWwuUGF0aC5jbWQpLFxuICAgICkgPT4ge1xuICBsZXQgKGxlZnQsIHRvcCkgPSAob3JpZ2luLmNvbCwgb3JpZ2luLnJvdyk7XG4gIGxldCAod2lkdGgsIGhlaWdodCkgPSAoXG4gICAgYWJzKGxhc3QuY29sIC0gb3JpZ2luLmNvbCksXG4gICAgYWJzKGxhc3Qucm93IC0gb3JpZ2luLnJvdyArIDEpLFxuICApO1xuICBsZXQgc3R5bGUgPSBwb3Nfc3RyKH5kPXtsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHR9LCB+ZnVkZ2UsIGZvbnRfbWV0cmljcyk7XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJzdmdcIixcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NlcyhiYXNlX2NscyksXG4gICAgICAgIEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgc3R5bGUpLFxuICAgICAgICBBdHRyLmNyZWF0ZShcInZpZXdCb3hcIiwgUHJpbnRmLnNwcmludGYoXCIwIDAgJWQgJWRcIiwgd2lkdGgsIGhlaWdodCkpLFxuICAgICAgICBBdHRyLmNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgXSksXG4gICAgW1N2Z1V0aWwuUGF0aC52aWV3KH5hdHRycz1bQXR0ci5jbGFzc2VzKHBhdGhfY2xzKV0sIHBhdGhzKV0sXG4gICk7XG59O1xuXG5sZXQgcG9zaXRpb24gPVxuICAgIChcbiAgICAgIH5zdHlsZT1cIlwiLFxuICAgICAgfmxlZnRfZnVkZ2U9MC4wLFxuICAgICAgfnRvcF9mdWRnZT0wLjAsXG4gICAgICB+d2lkdGhfZnVkZ2U9MC4wLFxuICAgICAgfmhlaWdodF9mdWRnZT0wLjAsXG4gICAgICB+c2NhbGU9MS4sXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgb3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICApID0+XG4gIEF0dHIuY3JlYXRlKFxuICAgIFwic3R5bGVcIixcbiAgICBzdHlsZVxuICAgICsrIFwiO1wiXG4gICAgKysgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICBcImxlZnQ6ICVmcHg7IHRvcDogJWZweDsgd2lkdGg6ICVmcHg7IGhlaWdodDogJWZweDtcIixcbiAgICAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGxlZnRfZnVkZ2UsXG4gICAgICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdykgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gdG9wX2Z1ZGdlLFxuICAgICAgICAgc2NhbGUgKi4gKGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gd2lkdGhfZnVkZ2UpLFxuICAgICAgICAgc2NhbGUgKi4gKGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIGhlaWdodF9mdWRnZSksXG4gICAgICAgKSxcbiAgKTtcblxubGV0IGFic19wb3NpdGlvbiA9XG4gICAgKFxuICAgICAgfmxlZnRfZnVkZ2U9MC4wLFxuICAgICAgfnRvcF9mdWRnZT0wLjAsXG4gICAgICB+d2lkdGhfZnVkZ2U9MC4wLFxuICAgICAgfmhlaWdodF9mdWRnZT0wLjAsXG4gICAgICB+c2NhbGU9MS4sXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgb3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICApID0+IHtcbiAgcG9zaXRpb24oXG4gICAgfnN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCIsXG4gICAgfmxlZnRfZnVkZ2UsXG4gICAgfnRvcF9mdWRnZSxcbiAgICB+d2lkdGhfZnVkZ2UsXG4gICAgfmhlaWdodF9mdWRnZSxcbiAgICB+c2NhbGUsXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICBvcmlnaW4sXG4gICk7XG59O1xuXG5sZXQgY29kZV9zdmcgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+b3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICAgIH5iYXNlX2Nscz1bXSxcbiAgICAgIH5wYXRoX2Nscz1bXSxcbiAgICAgIH5sZWZ0X2Z1ZGdlPTAuMCxcbiAgICAgIH50b3BfZnVkZ2U9MC4wLFxuICAgICAgfndpZHRoX2Z1ZGdlPTAuMCxcbiAgICAgIH5oZWlnaHRfZnVkZ2U9MC4wLFxuICAgICAgfmlkPVwiXCIsXG4gICAgICB+YXR0cnM9W10sXG4gICAgICB+YWJzX3Bvcz10cnVlLFxuICAgICAgcGF0aHM6IGxpc3QoU3ZnVXRpbC5QYXRoLmNtZCksXG4gICAgKSA9PiB7XG4gIC8vIFVzaW5nIGEgdmlld0JveCBvZiAwIDAgMSAxIHNlZW1zIHRvIHRyaWdnZXIgQ2hyb21lIHJvdW5kaW5nIGJ1Z1xuICAvLyAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDI0Mjg4KSB0aGF0XG4gIC8vIGNhdXNlcyBtaWFzbGlnbm1lbnQgYmV0d2VlbiBwaWVjZSBkZWNvcmF0aW9ucyBhbmQgdGV4dC5cbiAgLy8gVXNpbmcgYSBkaWZmZXJlbnQgdmlld0JveCBzaXplIHNlZW1zIHRvIGZpeCB0aGlzLlxuICBsZXQgc2NhbGUgPSAyLjtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFxuICAgICAgICAoaWQgPT0gXCJcIiA/IFtdIDogW0F0dHIuaWQoaWQpXSlcbiAgICAgICAgQCBbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKGJhc2VfY2xzKSxcbiAgICAgICAgICBhYnNfcG9zXG4gICAgICAgICAgICA/IGFic19wb3NpdGlvbihcbiAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgIH5sZWZ0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH50b3BfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfndpZHRoX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5oZWlnaHRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnNjYWxlLFxuICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBwb3NpdGlvbihcbiAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgIH5sZWZ0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH50b3BfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfndpZHRoX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5oZWlnaHRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnNjYWxlLFxuICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInZpZXdCb3hcIiwgUHJpbnRmLnNwcmludGYoXCIwIDAgJWYgJWZcIiwgc2NhbGUsIHNjYWxlKSksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKSxcbiAgICAgICAgXVxuICAgICAgICBAIGF0dHJzLFxuICAgICAgKSxcbiAgICBbU3ZnVXRpbC5QYXRoLnZpZXcofmF0dHJzPVtBdHRyLmNsYXNzZXMocGF0aF9jbHMpXSwgcGF0aHMpXSxcbiAgKTtcbn07XG5cbmxldCByYWlzZWRfc2hhZG93X2ZpbHRlciA9IChzb3J0OiBIYXozbGNvcmUuU29ydC50KSA9PiB7XG4gIGxldCBzID0gSGF6M2xjb3JlLlNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwiZmlsdGVyXCIsXG4gICAgfmF0dHI9QXR0ci5pZChcInJhaXNlZC1kcm9wLXNoYWRvdy1cIiArKyBzKSxcbiAgICBbXG4gICAgICBjcmVhdGVfc3ZnKFxuICAgICAgICBcImZlRHJvcFNoYWRvd1wiLFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRpbGUtZHJvcC1zaGFkb3dcIl0pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeFwiLCByYWlzZWRfc2hhZG93X2R4KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHlcIiwgcmFpc2VkX3NoYWRvd19keSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0ZERldmlhdGlvblwiLCBcIjBcIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IHNoYWRvd19maWx0ZXIgPSAoc29ydDogSGF6M2xjb3JlLlNvcnQudCkgPT4ge1xuICBsZXQgcyA9IEhhejNsY29yZS5Tb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcImZpbHRlclwiLFxuICAgIH5hdHRyPUF0dHIuaWQoXCJkcm9wLXNoYWRvdy1cIiArKyBzKSxcbiAgICBbXG4gICAgICBjcmVhdGVfc3ZnKFxuICAgICAgICBcImZlRHJvcFNoYWRvd1wiLFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRpbGUtZHJvcC1zaGFkb3dcIl0pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeFwiLCBzaGFkb3dfZHgpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeVwiLCBzaGFkb3dfZHkpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdGREZXZpYXRpb25cIiwgXCIwXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBmaWx0ZXJzID1cbiAgTm9kZVV0aWwuc3ZnKFxuICAgIEF0dHIuW2lkKFwiZmlsdGVyc1wiKV0sXG4gICAgTGlzdC5tYXAocmFpc2VkX3NoYWRvd19maWx0ZXIsIEhhejNsY29yZS5Tb3J0LmFsbClcbiAgICBAIExpc3QubWFwKHNoYWRvd19maWx0ZXIsIEhhejNsY29yZS5Tb3J0LmFsbCksXG4gICk7XG4iLCJvcGVuIERlY1V0aWw7XG5vcGVuIFN2Z1V0aWwuUGF0aDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vVE9ETyg/KTogZGVwcmVjYXRlIHRoaXMgbW9kdWxlXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGlwX3NoYXBlID0gKEhhejNsY29yZS5OaWIudCwgaW50KTtcblxuLy8gdG9wIHJpZ2h0IHRvIGJvdHRvbSBsZWZ0XG5sZXQgdHJfYmwgPVxuICAgIChcbiAgICAgIH5zY2FsZSBhcyBzPTEuLFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC4oXG4gICAge1xuICAgICAgbGV0IChkaWFnLCBqdW5jdGlvbikgPVxuICAgICAgICB3aXRoX2NoaWxkX2JvcmRlclxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgTF8oe2R4OiBGbG9hdC5uZWcoc2hvcnRfdGlwX3dpZHRoKSwgZHk6IHNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICAgICAgICAgIEhfKHtkeDogRmxvYXQubmVnKDAuNSAtLiBzaG9ydF90aXBfd2lkdGgpfSksXG4gICAgICAgICAgKVxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgTF8oe2R4OiBGbG9hdC5uZWcodGlwX3dpZHRoKSwgZHk6IDAuNSArLiBzdHJldGNoX3l9KSxcbiAgICAgICAgICAgIEhfKHtkeDogRmxvYXQubmVnKHN0cmV0Y2hfeCl9KSxcbiAgICAgICAgICApO1xuICAgICAgbGV0IHBhdGggPVxuICAgICAgICBzd2l0Y2ggKGhlbWkpIHtcbiAgICAgICAgfCBgTm9ydGggPT4gW2p1bmN0aW9uLCBkaWFnXVxuICAgICAgICB8IGBTb3V0aCA9PiBbZGlhZywganVuY3Rpb25dXG4gICAgICAgIH07XG4gICAgICBzY2FsZShzLCBwYXRoKTtcbiAgICB9XG4gICk7XG4vLyBib3R0b20gbGVmdCB0byB0b3AgcmlnaHRcbmxldCBibF90ciA9XG4gICAgKFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC5yZXZlcnNlKFxuICAgIHRyX2JsKH5oZW1pLCB+d2l0aF9jaGlsZF9ib3JkZXIsIH5zdHJldGNoX3gsIH5zdHJldGNoX3ksICgpKSxcbiAgKTtcblxuLy8gdG9wIGxlZnQgdG8gYm90dG9tIHJpZ2h0XG5sZXQgdGxfYnIgPVxuICAgIChcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGguKFxuICAgIHtcbiAgICAgIGxldCAoZGlhZywganVuY3Rpb24pID1cbiAgICAgICAgd2l0aF9jaGlsZF9ib3JkZXJcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIExfKHtkeDogc2hvcnRfdGlwX3dpZHRoLCBkeTogc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgICAgICAgICAgSF8oe2R4OiAwLjUgLS4gc2hvcnRfdGlwX3dpZHRofSksXG4gICAgICAgICAgKVxuICAgICAgICAgIDogKExfKHtkeDogdGlwX3dpZHRoLCBkeTogMC41ICsuIHN0cmV0Y2hfeX0pLCBIXyh7ZHg6IHN0cmV0Y2hfeH0pKTtcbiAgICAgIHN3aXRjaCAoaGVtaSkge1xuICAgICAgfCBgTm9ydGggPT4gW2p1bmN0aW9uLCBkaWFnXVxuICAgICAgfCBgU291dGggPT4gW2RpYWcsIGp1bmN0aW9uXVxuICAgICAgfTtcbiAgICB9XG4gICk7XG4vLyBib3R0b20gcmlnaHQgdG8gdG9wIGxlZnRcbmxldCBicl90bCA9XG4gICAgKFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC5yZXZlcnNlKFxuICAgIHRsX2JyKH5oZW1pLCB+d2l0aF9jaGlsZF9ib3JkZXIsIH5zdHJldGNoX3gsIH5zdHJldGNoX3ksICgpKSxcbiAgKTtcblxubGV0IGxlZnRfdGlwX3BhdGggPVxuICAgICh+c2NhbGVfeCBhcyBzX3g9MS4sIH5zY2FsZV95IGFzIHNfeT0xLiwgdGlwOiB0aXBfc2hhcGUpOiBTdmdVdGlsLlBhdGgudCA9PiB7XG4gIGxldCBwYXRoID1cbiAgICBzd2l0Y2ggKHRpcCkge1xuICAgIHwgKHtzaGFwZTogQ29udmV4LCBffSwgXykgPT5cbiAgICAgIGJyX3RsKH5oZW1pPWBTb3V0aCwgKCkpIEAgYmxfdHIofmhlbWk9YE5vcnRoLCAoKSlcbiAgICB8ICh7c2hhcGU6IENvbmNhdmUoX2EpLCBffSwgbikgPT5cbiAgICAgIGxldCBqYWcgPSBbXG4gICAgICAgIExfKHtkeDogLS4gamFnZ2VkX2VkZ2VfdywgZHk6IC0uIGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiBqYWdnZWRfZWRnZV93LCBkeTogLS4gamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IC0uIGphZ2dlZF9lZGdlX3csIGR5OiAtLiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICBdO1xuICAgICAgbGV0IGJvdHRvbV9oYWxmID1cbiAgICAgICAgbiA9PSAwXG4gICAgICAgICAgPyBbSF8oe2R4OiBGbG9hdC5uZWcodGlwX3dpZHRoKX0pLCAuLi5ibF90cih+aGVtaT1gU291dGgsICgpKV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgW0hfKHtkeDogLS4gKGV4dHJhX3RhaWwgKy4gMC41KX0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBqYWdnZWRfZWRnZV93ICsuIGV4dHJhX3RhaWx9KV0sXG4gICAgICAgICAgICAgIGJsX3RyKH5oZW1pPWBTb3V0aCwgfndpdGhfY2hpbGRfYm9yZGVyPXRydWUsICgpKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgbGV0IHRvcF9oYWxmID1cbiAgICAgICAgbiA9PSAwIHx8IG4gPT0gMVxuICAgICAgICAgID8gYnJfdGwofmhlbWk9YE5vcnRoLCAoKSkgQCBbSF8oe2R4OiB0aXBfd2lkdGh9KV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgYnJfdGwofmhlbWk9YE5vcnRoLCB+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgKCkpLFxuICAgICAgICAgICAgICBbSF8oe2R4OiAtLiAoamFnZ2VkX2VkZ2VfdyArLiBleHRyYV90YWlsKX0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBleHRyYV90YWlsICsuIDAuNX0pXSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgYm90dG9tX2hhbGYgQCB0b3BfaGFsZjtcbiAgICB9O1xuICBzY2FsZV94KHNfeCwgc2NhbGVfeShzX3ksIHBhdGgpKTtcbn07XG5sZXQgcmlnaHRfdGlwX3BhdGggPVxuICAgICh+c2NhbGVfeCBhcyBzX3g9MS4sIH5zY2FsZV95IGFzIHNfeT0xLiwgdGlwOiB0aXBfc2hhcGUpOiBTdmdVdGlsLlBhdGgudCA9PiB7XG4gIGxldCBwYXRoID1cbiAgICBzd2l0Y2ggKHRpcCkge1xuICAgIHwgKHtzaGFwZTogQ29udmV4LCBffSwgXykgPT5cbiAgICAgIHRsX2JyKH5oZW1pPWBOb3J0aCwgKCkpIEAgdHJfYmwofmhlbWk9YFNvdXRoLCAoKSlcbiAgICB8ICh7c2hhcGU6IENvbmNhdmUoX2EpLCBffSwgbikgPT5cbiAgICAgIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICAgICAgbGV0IGphZyA9IFtcbiAgICAgICAgTF8oe2R4OiBqYWdnZWRfZWRnZV93LCBkeTogamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IC0uIGphZ2dlZF9lZGdlX3csIGR5OiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogamFnZ2VkX2VkZ2VfdywgZHk6IGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgIF07XG4gICAgICBsZXQgdG9wX2hhbGYgPVxuICAgICAgICBuID09IDAgfHwgbiA9PSAxXG4gICAgICAgICAgPyBbSF8oe2R4OiB0aXBfd2lkdGh9KSwgLi4udHJfYmwofmhlbWk9YE5vcnRoLCAoKSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IDAuNSArLiBleHRyYV90YWlsfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IC0uIChleHRyYV90YWlsICsuIGphZ2dlZF9lZGdlX3cpfSldLFxuICAgICAgICAgICAgICB0cl9ibCh+aGVtaT1gTm9ydGgsIH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCAoKSksXG4gICAgICAgICAgICBdKTtcbiAgICAgIGxldCBib3R0b21faGFsZiA9XG4gICAgICAgIG4gPT0gMFxuICAgICAgICAgID8gdGxfYnIofmhlbWk9YFNvdXRoLCAoKSkgQCBbSF8oe2R4OiBGbG9hdC5uZWcodGlwX3dpZHRoKX0pXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICB0bF9icih+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgfmhlbWk9YFNvdXRoLCAoKSksXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IGV4dHJhX3RhaWx9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogRmxvYXQubmVnKGphZ2dlZF9lZGdlX3cgKy4gZXh0cmFfdGFpbCArLiAwLjUpfSldLFxuICAgICAgICAgICAgXSk7XG4gICAgICB0b3BfaGFsZiBAIGJvdHRvbV9oYWxmO1xuICAgIH07XG4gIHNjYWxlX3goc194LCBzY2FsZV95KHNfeSwgcGF0aCkpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgUHJvZmlsZSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICBtb2xkOiBNb2xkLnQsXG4gIH07XG59O1xuXG5sZXQgcGF0aCA9ICh0aXBfbCwgdGlwX3IsIG9mZnNldCwgczogZmxvYXQpID0+IHtcbiAgbGV0IHhfZGlsYXRlID0gMS41O1xuICBMaXN0LmNvbmNhdChcbiAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgW1xuICAgICAgICBNKHt4OiBvZmZzZXQgKy4gMC41LCB5OiAwLjUgLS4gcyAvLiAyLn0pLFxuICAgICAgICBIXyh7ZHg6IHhfZGlsYXRlICouIHMgLy4gMi59KSxcbiAgICAgIF0sXG4gICAgICBEaWFnLnJpZ2h0X3RpcF9wYXRoKH5zY2FsZV94PXMgKi4geF9kaWxhdGUsIH5zY2FsZV95PXMsICh0aXBfciwgMCkpLFxuICAgICAgW0hfKHtkeDogLS4gcyAqLiB4X2RpbGF0ZX0pXSxcbiAgICAgIERpYWcubGVmdF90aXBfcGF0aCh+c2NhbGVfeD1zICouIHhfZGlsYXRlLCB+c2NhbGVfeT1zLCAodGlwX2wsIDApKSxcbiAgICAgIFtaXSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IHZpZXcgPSAofmZvbnRfbWV0cmljcywge21lYXN1cmVtZW50LCBtb2xkfTogUHJvZmlsZS50KTogTm9kZS50ID0+IHtcbiAgbGV0IHNvcnQgPSBtb2xkLm91dDtcbiAgbGV0IGNfY2xzID0gU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGxldCAodGlwX2wsIHRpcF9yKTogKEhhejNsY29yZS5OaWIuU2hhcGUudCwgSGF6M2xjb3JlLk5pYi5TaGFwZS50KSA9XG4gICAgVXRpbC5UdXBsZVV0aWwubWFwMihIYXozbGNvcmUuTmliLnNoYXBlLCBtb2xkLm5pYnMpO1xuICBsZXQgKHRpcF9sLCB0aXBfcik6IChIYXozbGNvcmUuTmliLnQsIEhhejNsY29yZS5OaWIudCkgPSAoXG4gICAge3NvcnQsIHNoYXBlOiB0aXBfbH0sXG4gICAge3NvcnQsIHNoYXBlOiB0aXBfcn0sXG4gICk7XG4gIERlY1V0aWwuY29kZV9zdmdfc2l6ZWQoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+bWVhc3VyZW1lbnQsXG4gICAgfmJhc2VfY2xzPVtcImVtcHR5LWhvbGVcIl0sXG4gICAgfnBhdGhfY2xzPVtcImVtcHR5LWhvbGUtcGF0aFwiLCBjX2Nsc10sXG4gICAgcGF0aCh0aXBfbCwgdGlwX3IsIDAuLCAwLjI4KSxcbiAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVXRpbDtcbm9wZW4gVXRpbC5XZWI7XG5cbmxldCBvZl9kZWxpbScgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwMCxcbiAgICAoKGxhYmVsLCBpc19pbl9idWZmZXIsIHNvcnQsIGlzX2NvbnNpc3RlbnQsIGlzX2NvbXBsZXRlLCBpKSkgPT4ge1xuICAgICAgbGV0IGNscyA9XG4gICAgICAgIHN3aXRjaCAobGFiZWwpIHtcbiAgICAgICAgfCBfIHdoZW4gaXNfaW5fYnVmZmVyID0+IFwiaW4tYnVmZmVyXCJcbiAgICAgICAgfCBfIHdoZW4gIWlzX2NvbnNpc3RlbnQgPT4gXCJzb3J0LWluY29uc2lzdGVudFwiXG4gICAgICAgIHwgXyB3aGVuICFpc19jb21wbGV0ZSA9PiBcImluY29tcGxldGVcIlxuICAgICAgICB8IFtzXSB3aGVuIHMgPT0gRm9ybS5leHBsaWNpdF9ob2xlID0+IFwiZXhwbGljaXQtaG9sZVwiXG4gICAgICAgIHwgW3NdIHdoZW4gRm9ybS5pc19zdHJpbmcocykgPT4gXCJzdHJpbmctbGl0XCJcbiAgICAgICAgfCBfID0+IFwiZGVmYXVsdFwiXG4gICAgICAgIH07XG4gICAgICBsZXQgcGx1cmFsaXR5ID0gTGlzdC5sZW5ndGgobGFiZWwpID09IDEgPyBcIm1vbm9cIiA6IFwicG9seVwiO1xuICAgICAgbGV0IGxhYmVsID0gaXNfaW5fYnVmZmVyID8gQXNzaXN0YW50RXhwYW5kZXIubWFyayhsYWJlbCkgOiBsYWJlbDtcbiAgICAgIFtcbiAgICAgICAgc3BhbihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0b2tlblwiLCBjbHMsIFNvcnQudG9fc3RyaW5nKHNvcnQpLCBwbHVyYWxpdHldKSxcbiAgICAgICAgICBbTm9kZS50ZXh0KExpc3QubnRoKGxhYmVsLCBpKSldLFxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9LFxuICApO1xubGV0IG9mX2RlbGltID1cbiAgICAoaXNfaW5fYnVmZmVyLCBpc19jb25zaXN0ZW50LCB0OiBQaWVjZS50aWxlLCBpOiBpbnQpOiBsaXN0KE5vZGUudCkgPT5cbiAgb2ZfZGVsaW0nKChcbiAgICB0LmxhYmVsLFxuICAgIGlzX2luX2J1ZmZlcixcbiAgICB0Lm1vbGQub3V0LFxuICAgIGlzX2NvbnNpc3RlbnQsXG4gICAgVGlsZS5pc19jb21wbGV0ZSh0KSxcbiAgICBpLFxuICApKTtcblxubGV0IG9mX2dyb3V0ID0gW05vZGUudGV4dChVbmljb2RlLm5ic3ApXTtcblxubGV0IG9mX3NlY29uZGFyeSA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAwLCAoKGNvbnRlbnQsIHNlY29uZGFyeV9pY29ucywgaW5kZW50KSkgPT5cbiAgICBpZiAoU3RyaW5nLmVxdWFsKFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpLCBGb3JtLmxpbmVicmVhaykpIHtcbiAgICAgIGxldCBzdHIgPSBzZWNvbmRhcnlfaWNvbnMgPyBGb3JtLmxpbmVicmVhayA6IFwiXCI7XG4gICAgICBbXG4gICAgICAgIHNwYW5fYyhcImxpbmVicmVha1wiLCBbdGV4dChzdHIpXSksXG4gICAgICAgIE5vZGUuYnIoKSxcbiAgICAgICAgTm9kZS50ZXh0KFN0cmluZ1V0aWwucmVwZWF0KGluZGVudCwgVW5pY29kZS5uYnNwKSksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoU3RyaW5nLmVxdWFsKFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpLCBGb3JtLnNwYWNlKSkge1xuICAgICAgbGV0IHN0ciA9IHNlY29uZGFyeV9pY29ucyA/IFwiwrdcIiA6IFVuaWNvZGUubmJzcDtcbiAgICAgIFtzcGFuX2MoXCJzZWNvbmRhcnlcIiwgW3RleHQoc3RyKV0pXTtcbiAgICB9IGVsc2UgaWYgKFNlY29uZGFyeS5jb250ZW50X2lzX2NvbW1lbnQoY29udGVudCkpIHtcbiAgICAgIFtzcGFuX2MoXCJjb21tZW50XCIsIFtOb2RlLnRleHQoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCkpXSldO1xuICAgIH0gZWxzZSB7XG4gICAgICBbc3Bhbl9jKFwic2Vjb25kYXJ5XCIsIFtOb2RlLnRleHQoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCkpXSldO1xuICAgIH1cbiAgKTtcblxubW9kdWxlIFRleHQgPSAoTToge1xuICAgICAgICAgICAgICAgICBsZXQgbWFwOiBNZWFzdXJlZC50O1xuICAgICAgICAgICAgICAgICBsZXQgc2V0dGluZ3M6IFNldHRpbmdzLnQ7XG4gICAgICAgICAgICAgICB9KSA9PiB7XG4gIGxldCBtID0gcCA9PiBNZWFzdXJlZC5maW5kX3AocCwgTS5tYXApO1xuICBsZXQgcmVjIG9mX3NlZ21lbnQgPVxuICAgICAgICAgIChidWZmZXJfaWRzLCBub19zb3J0cywgc29ydCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgIC8qIG5vdGU6IG5vX3NvcnRzIGZsYWcgaXMgdXNlZCBmb3IgYmFja3BhY2sgdmlldztcbiAgICAgICBvdGhlcndpc2UgU2VnbWVudC5leHBlY3RlZF9zb3J0cyBjYWxsIGNyYXNoZXMgZm9yIHNvbWUgcmVhc29uICovXG4gICAgbGV0IGV4cGVjdGVkX3NvcnRzID1cbiAgICAgIG5vX3NvcnRzXG4gICAgICAgID8gTGlzdC5pbml0KExpc3QubGVuZ3RoKHNlZyksIGkgPT4gKGksIFNvcnQuQW55KSlcbiAgICAgICAgOiBTZWdtZW50LmV4cGVjdGVkX3NvcnRzKHNvcnQsIHNlZyk7XG4gICAgbGV0IHNvcnRfb2ZfcF9pZHggPSBpZHggPT5cbiAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoaWR4LCBleHBlY3RlZF9zb3J0cykpIHtcbiAgICAgIHwgTm9uZSA9PiBTb3J0LkFueVxuICAgICAgfCBTb21lKHNvcnQpID0+IHNvcnRcbiAgICAgIH07XG4gICAgc2VnXG4gICAgfD4gTGlzdC5tYXBpKChpLCBwKSA9PiAoaSwgcCkpXG4gICAgfD4gTGlzdC5jb25jYXRfbWFwKCgoaSwgcCkpID0+XG4gICAgICAgICBvZl9waWVjZShidWZmZXJfaWRzLCBzb3J0X29mX3BfaWR4KGkpLCBwKVxuICAgICAgICk7XG4gIH1cbiAgYW5kIG9mX3BpZWNlID1cbiAgICAgIChidWZmZXJfaWRzLCBleHBlY3RlZF9zb3J0OiBTb3J0LnQsIHA6IFBpZWNlLnQpOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgIHN3aXRjaCAocCkge1xuICAgIHwgVGlsZSh0KSA9PiBvZl90aWxlKGJ1ZmZlcl9pZHMsIGV4cGVjdGVkX3NvcnQsIHQpXG4gICAgfCBHcm91dChfKSA9PiBvZl9ncm91dFxuICAgIHwgU2Vjb25kYXJ5KHtjb250ZW50LCBffSkgPT5cbiAgICAgIG9mX3NlY29uZGFyeSgoY29udGVudCwgTS5zZXR0aW5ncy5zZWNvbmRhcnlfaWNvbnMsIG0ocCkubGFzdC5jb2wpKVxuICAgIH07XG4gIH1cbiAgYW5kIG9mX3RpbGUgPSAoYnVmZmVyX2lkcywgZXhwZWN0ZWRfc29ydDogU29ydC50LCB0OiBUaWxlLnQpOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgIGxldCBjaGlsZHJlbl9hbmRfc29ydHMgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAoaSwgKGwsIGNoaWxkLCByKSkgPT5cbiAgICAgICAgICAvL1RPRE8oYW5kcmV3KTogbW9yZSBzdWJ0bGUgbG9naWMgYWJvdXQgc29ydCBhY2NlcHRhYmlsaXR5XG4gICAgICAgICAgKGNoaWxkLCBsICsgMSA9PSByID8gTGlzdC5udGgodC5tb2xkLmluXywgaSkgOiBTb3J0LkFueSksXG4gICAgICAgIEFiYS5hYmFfdHJpcGxlcyhBYmEubWsodC5zaGFyZHMsIHQuY2hpbGRyZW4pKSxcbiAgICAgICk7XG4gICAgbGV0IGlzX2NvbnNpc3RlbnQgPSBTb3J0LmNvbnNpc3RlbnQodC5tb2xkLm91dCwgZXhwZWN0ZWRfc29ydCk7XG4gICAgbGV0IGlzX2luX2J1ZmZlciA9IExpc3QubWVtKHQuaWQsIGJ1ZmZlcl9pZHMpO1xuICAgIEFiYS5tayh0LnNoYXJkcywgY2hpbGRyZW5fYW5kX3NvcnRzKVxuICAgIHw+IEFiYS5qb2luKG9mX2RlbGltKGlzX2luX2J1ZmZlciwgaXNfY29uc2lzdGVudCwgdCksICgoc2VnLCBzb3J0KSkgPT5cbiAgICAgICAgIG9mX3NlZ21lbnQoYnVmZmVyX2lkcywgZmFsc2UsIHNvcnQsIHNlZylcbiAgICAgICApXG4gICAgfD4gTGlzdC5jb25jYXQ7XG4gIH07XG59O1xuXG5sZXQgcmVjIGhvbGVzID1cbiAgICAgICAgKH5mb250X21ldHJpY3MsIH5tYXA6IE1lYXN1cmVkLnQsIHNlZzogU2VnbWVudC50KTogbGlzdChOb2RlLnQpID0+XG4gIHNlZ1xuICB8PiBMaXN0LmNvbmNhdF9tYXAoXG4gICAgICAgZnVuXG4gICAgICAgfCBQaWVjZS5TZWNvbmRhcnkoXykgPT4gW11cbiAgICAgICB8IFRpbGUodCkgPT4gTGlzdC5jb25jYXRfbWFwKGhvbGVzKH5tYXAsIH5mb250X21ldHJpY3MpLCB0LmNoaWxkcmVuKVxuICAgICAgIHwgR3JvdXQoZykgPT4gW1xuICAgICAgICAgICBFbXB0eUhvbGVEZWMudmlldyhcbiAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLCAvLyBUT0RPKGQpIGZpeCBzb3J0XG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLmZpbmRfZyhnLCBtYXApLFxuICAgICAgICAgICAgICAgbW9sZDogTW9sZC5vZl9ncm91dChnLCBBbnkpLFxuICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICksXG4gICAgICAgICBdLFxuICAgICApO1xuXG5sZXQgc2ltcGxlX3ZpZXcgPVxuICAgICh+Zm9udF9tZXRyaWNzLCB+dW5zZWxlY3RlZCwgfm1hcCwgfnNldHRpbmdzOiBTZXR0aW5ncy50KTogTm9kZS50ID0+IHtcbiAgbW9kdWxlIFRleHQgPVxuICAgIFRleHQoe1xuICAgICAgbGV0IG1hcCA9IG1hcDtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgIH0pO1xuICBsZXQgaG9sZXMgPSBob2xlcyh+bWFwLCB+Zm9udF9tZXRyaWNzLCB1bnNlbGVjdGVkKTtcbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwiY29kZVwiKSxcbiAgICBbXG4gICAgICBzcGFuX2MoXCJjb2RlLXRleHRcIiwgVGV4dC5vZl9zZWdtZW50KFtdLCBmYWxzZSwgU29ydC5BbnksIHVuc2VsZWN0ZWQpKSxcbiAgICAgIC4uLmhvbGVzLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgb2ZfaG9sZSA9ICh+Zm9udF9tZXRyaWNzLCB+bWVhc3VyZWQsIGc6IEdyb3V0LnQpID0+XG4gIC8vIFRPRE8oZCkgZml4IHNvcnRcbiAgRW1wdHlIb2xlRGVjLnZpZXcoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB7XG4gICAgICBtZWFzdXJlbWVudDogTWVhc3VyZWQuZmluZF9nKGcsIG1lYXN1cmVkKSxcbiAgICAgIG1vbGQ6IE1vbGQub2ZfZ3JvdXQoZywgQW55KSxcbiAgICB9LFxuICApO1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfnNvcnQ6IFNvcnQudCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB7c3RhdGU6IHttZXRhOiB7bWVhc3VyZWQsIGJ1ZmZlcl9pZHMsIHVuc2VsZWN0ZWQsIGhvbGVzLCBffSwgX30sIF99OiBFZGl0b3IudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICBtb2R1bGUgVGV4dCA9XG4gICAgVGV4dCh7XG4gICAgICBsZXQgbWFwID0gbWVhc3VyZWQ7XG4gICAgICBsZXQgc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB9KTtcbiAgbGV0IGNvZGUgPSBUZXh0Lm9mX3NlZ21lbnQoYnVmZmVyX2lkcywgZmFsc2UsIHNvcnQsIHVuc2VsZWN0ZWQpO1xuICBsZXQgaG9sZXMgPSBMaXN0Lm1hcChvZl9ob2xlKH5tZWFzdXJlZCwgfmZvbnRfbWV0cmljcyksIGhvbGVzKTtcbiAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiY29kZVwiKSwgW3NwYW5fYyhcImNvZGUtdGV4dFwiLCBjb2RlKSwgLi4uaG9sZXNdKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGJhY2twYWNrX3NlbF92aWV3ID1cbiAgICAoXG4gICAgICB4X29mZjogZmxvYXQsXG4gICAgICB5X29mZjogZmxvYXQsXG4gICAgICBzY2FsZTogZmxvYXQsXG4gICAgICBvcGFjaXR5OiBmbG9hdCxcbiAgICAgIHtmb2N1czogXywgY29udGVudCwgX306IFNlbGVjdGlvbi50LFxuICAgICkgPT4ge1xuICBtb2R1bGUgVGV4dCA9XG4gICAgQ29kZS5UZXh0KHtcbiAgICAgIGxldCBtYXAgPSBNZWFzdXJlZC5vZl9zZWdtZW50KGNvbnRlbnQpO1xuICAgICAgbGV0IHNldHRpbmdzID0gSW5pdC5zdGFydHVwLnNldHRpbmdzO1xuICAgIH0pO1xuICAvLyBUT0RPKGFuZHJldyk6IE1heWJlIHVzZSBpbml0IHNvcnQgYXQgY2FyZXQgdG8gcHJpbWUgdGhpc1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzZXMoW1wiY29kZS10ZXh0XCIsIFwiYmFja3BhY2stc2VsZWN0aW9uXCJdKSxcbiAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgXCJzdHlsZVwiLFxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0OyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSglZnB4LCAlZnB4KSBzY2FsZSglZik7IG9wYWNpdHk6ICVmJSU7XCIsXG4gICAgICAgICAgICB4X29mZixcbiAgICAgICAgICAgIHlfb2ZmLFxuICAgICAgICAgICAgc2NhbGUsXG4gICAgICAgICAgICBvcGFjaXR5LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICAvLyB6d3NwIG5lY2Vzc2FyeSBmb3IgY29udGFpbmluZyBib3ggdG8gc3RyZXRjaCB0byBjb250YWluIHRyYWlsaW5nIG5ld2xpbmVcbiAgICBUZXh0Lm9mX3NlZ21lbnQoW10sIHRydWUsIEFueSwgY29udGVudCkgQCBbdGV4dChVbmljb2RlLnp3c3ApXSxcbiAgKTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm9yaWdpbjogTWVhc3VyZWQuUG9pbnQudCxcbiAgICAgIHtiYWNrcGFjaywgX30gYXMgejogWmlwcGVyLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgLy9UT0RPKGFuZHJldyk6IGNsZWFuIHVwIHRoaXMgZHVtcHN0ZXIgZmlyZSBvZiBhIGZ1bmN0aW9uXG4gIGxldCBoZWlnaHRfaGVhZCA9XG4gICAgc3dpdGNoIChiYWNrcGFjaykge1xuICAgIHwgW10gPT4gMFxuICAgIHwgW2hkLCAuLi5fXSA9PiBNZWFzdXJlZC5zZWdtZW50X2hlaWdodChoZC5jb250ZW50KVxuICAgIH07XG4gIGxldCBjYW5fcHV0X2Rvd24gPVxuICAgIHN3aXRjaCAoWmlwcGVyLnBvcF9iYWNrcGFjayh6KSkge1xuICAgIC8vIGNhcmV0IHRoaW5nIGlzIGhhY2s7IGkgZG9uJ3Qga25vdyB3aHkgcG9wX2JhY2twYWNrXG4gICAgLy8gZ2l2ZXMgdXMgd2hhdCB3ZSB3YW50IGhlcmVcbiAgICB8IFNvbWUoXykgPT4gei5jYXJldCA9PSBPdXRlclxuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIH07XG4gIGxldCBjYXJldF9hZGogPSB7XG4gICAgbGV0IHNoYXBlID0gWmlwcGVyLmNhcmV0X2RpcmVjdGlvbih6KTtcbiAgICBsZXQgc2lkZSA9XG4gICAgICBzd2l0Y2ggKEluZGljYXRlZC5waWVjZSh6KSkge1xuICAgICAgfCBTb21lKChfLCBzaWRlLCBfKSkgPT4gc2lkZVxuICAgICAgfCBfID0+IFJpZ2h0XG4gICAgICB9O1xuICAgIERlY1V0aWwuY2FyZXRfYWRqdXN0KHNpZGUsIHNoYXBlKTtcbiAgfTtcbiAgbGV0IGNhcmV0X2Fkal9weCA9XG4gICAgLy9UT0RPKGFuZHJldyk6IGZpZ3VyZSBvdXQgd2h5IHdlIG5lZWQgdGhpcyBteXN0ZXJ5IHBpeGVsIGJlbG93XG4gICAgKC0xLikgKy4gY2FyZXRfYWRqICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGg7XG4gIGxldCBtYXhfZGlzcCA9IDM7IC8qIE1heGltdW0gdmVydGljYWwgYmFja3BhY2sgZGlzcGxhY2VtZW50ICovXG4gIGxldCB2ZXJ0aWNhbF9kaXNwID0gb3JpZ2luLnJvdyA8PSBtYXhfZGlzcCA/IG9yaWdpbi5yb3cgOiBtYXhfZGlzcDtcbiAgbGV0IHNlbGVjdGlvbnNfc3R5bGUgPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICVmcHg7IHRvcDogJWZweDtcIixcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGNhcmV0X2Fkal9weCxcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93IC0gdmVydGljYWxfZGlzcCAtIGhlaWdodF9oZWFkIC0gMSlcbiAgICAgICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICk7XG4gIGxldCBzY2FsZV9mbiA9IGlkeCA9PiBmbG9hdF9vZl9pbnQoMTAwIC0gMTIgKiBpZHgpIC8uIDEwMC47XG4gIGxldCB4X2ZuID0gaWR4ID0+IGZsb2F0X29mX2ludCgxMiAqIGlkeCk7XG4gIGxldCBpbml0X29wYWNpdHkgPSAxMDAuO1xuICBsZXQgb3BhY2l0eV9yZWR1Y3Rpb24gPSAyMC47IC8vIHJlZHVjdGlvbiBwZXIgbGluZVxuICBsZXQgaW5pdF9pZHggPSAwO1xuICBsZXQgZHlfZm4gPSAoaWR4LCBiYXNlX2hlaWdodCkgPT5cbiAgICBmb250X21ldHJpY3Mucm93X2hlaWdodFxuICAgICouIGZsb2F0X29mX2ludChiYXNlX2hlaWdodClcbiAgICAqLiBzY2FsZV9mbihpZHgpXG4gICAgLS4gNC47XG4gIGxldCBpbml0X3lfb2Zmc2V0ID0gZHlfZm4oaW5pdF9pZHgsIGhlaWdodF9oZWFkKTtcbiAgbGV0IChfLCBfLCBfLCBzZWxlY3Rpb25zKSA9XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoKGlkeCwgeV9vZmZzZXQsIG9wYWNpdHksIHZzKSwgczogU2VsZWN0aW9uLnQpID0+IHtcbiAgICAgICAgbGV0IGJhc2VfaGVpZ2h0ID0gTWVhc3VyZWQuc2VnbWVudF9oZWlnaHQocy5jb250ZW50KTtcbiAgICAgICAgbGV0IHNjYWxlID0gc2NhbGVfZm4oaWR4KTtcbiAgICAgICAgbGV0IHhfb2Zmc2V0ID0geF9mbihpZHgpO1xuICAgICAgICBsZXQgbmV3X3lfb2Zmc2V0ID0geV9vZmZzZXQgLS4gZHlfZm4oaWR4LCBiYXNlX2hlaWdodCk7XG4gICAgICAgIGxldCB2ID0gYmFja3BhY2tfc2VsX3ZpZXcoeF9vZmZzZXQsIG5ld195X29mZnNldCwgc2NhbGUsIG9wYWNpdHksIHMpO1xuICAgICAgICBsZXQgbmV3X2lkeCA9IGlkeCArIDE7XG4gICAgICAgIGxldCBuZXdfb3BhY2l0eSA9IG9wYWNpdHkgLS4gb3BhY2l0eV9yZWR1Y3Rpb247XG4gICAgICAgIC8vVE9ETyhhbmRyZXcpOiBhbSBpIG1ha2luZyB0aGlzIGRpZmZpY3VsdCBieSBnb2luZyBiYWNrd2FyZHM/XG4gICAgICAgIChuZXdfaWR4LCBuZXdfeV9vZmZzZXQsIG5ld19vcGFjaXR5LCBMaXN0LmNvbnModiwgdnMpKTtcbiAgICAgIH0sXG4gICAgICAoaW5pdF9pZHgsIGluaXRfeV9vZmZzZXQsIGluaXRfb3BhY2l0eSwgW10pLFxuICAgICAgYmFja3BhY2ssXG4gICAgKTtcbiAgbGV0IHNlbGVjdGlvbnNfdmlldyA9XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBzZWxlY3Rpb25zX3N0eWxlKSxcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiYmFja3BhY2tcIl0pLFxuICAgICAgICBdKSxcbiAgICAgIHNlbGVjdGlvbnMsXG4gICAgKTtcbiAgbGV0IGxlbmd0aCA9XG4gICAgc3dpdGNoIChiYWNrcGFjaykge1xuICAgIHwgW10gPT4gMFxuICAgIHwgW2hkLCAuLi5fXSA9PiBNZWFzdXJlZC5zZWdtZW50X3dpZHRoKGhkLmNvbnRlbnQpXG4gICAgfTtcblxuICBsZXQgam9pbmVyX3N0eWxlID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7IGhlaWdodDogJWZweDtcIixcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGNhcmV0X2Fkal9weCxcbiAgICAgICgtMy4pXG4gICAgICArLiBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdyAtIHZlcnRpY2FsX2Rpc3ApXG4gICAgICAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICAgIDMuICsuIEZsb2F0Lm9mX2ludCh2ZXJ0aWNhbF9kaXNwKSAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICApO1xuICBsZXQgam9pbmVyID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0eWxlXCIsIGpvaW5lcl9zdHlsZSksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImJhY2twYWNrLWpvaW5lclwiXSksXG4gICAgICAgIF0pLFxuICAgICAgW10sXG4gICAgKTtcbiAgLy9UT0RPKGFuZHJldyk6IGJyZWFrIG91dCBiYWNrcGFjayBkZWNvcmF0aW9uIGludG8gaXRzIG93biBtb2R1bGVcbiAgbGV0IGdlbmllX3ZpZXcgPVxuICAgIERlY1V0aWwuY29kZV9zdmcoXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfm9yaWdpbj17cm93OiAwLCBjb2w6IDB9LFxuICAgICAgfmJhc2VfY2xzPVtcInJlc3RydWN0dXJpbmctZ2VuaWVcIl0sXG4gICAgICB+cGF0aF9jbHM9W1wicmVzdHJ1Y3R1cmluZy1nZW5pZS1wYXRoXCJdLFxuICAgICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgICAgTSh7eDogMC4sIHk6IDAufSksXG4gICAgICAgIFYoe3k6ICgtMS4wKX0pLFxuICAgICAgICBIXyh7ZHg6IEZsb2F0Lm9mX2ludChsZW5ndGgpfSksXG4gICAgICAgIFZfKHtkeTogMC4wfSksXG4gICAgICAgIFosXG4gICAgICBdLFxuICAgICk7XG4gIGxldCBnZW5pZV9zdHlsZSA9XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4O1wiLFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gY2FyZXRfYWRqX3B4LFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cgLSB2ZXJ0aWNhbF9kaXNwKVxuICAgICAgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHRcbiAgICAgICsuIDEuLFxuICAgICk7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NlcyhcbiAgICAgICAgICBbXCJiYWNrcGFja1wiXSBAIChjYW5fcHV0X2Rvd24gPyBbXSA6IFtcImNhbnQtcHV0LWRvd25cIl0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgW1xuICAgICAgc2VsZWN0aW9uc192aWV3LFxuICAgICAgZGl2KH5hdHRyPUF0dHIuY3JlYXRlKFwic3R5bGVcIiwgZ2VuaWVfc3R5bGUpLCBbZ2VuaWVfdmlld10pLFxuICAgIF1cbiAgICBAIChiYWNrcGFjayAhPSBbXSA/IFtqb2luZXJdIDogW10pLFxuICApO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU3ZnVXRpbDtcblxubGV0IGNhcmV0X3dpZHRoX3N0cmFpZ2h0ID0gMC4xO1xubGV0IGNhcmV0X3dpZHRoX2JlbnQgPSAwLjE7XG5sZXQgY2FyZXRfYmVuZCA9IERlY1V0aWwudGlwX3dpZHRoO1xuXG5tb2R1bGUgUHJvZmlsZSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIHNpZGU6IERpcmVjdGlvbi50LFxuICAgIG9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgc2hhcGU6IG9wdGlvbihEaXJlY3Rpb24udCksXG4gIH07XG59O1xuXG5sZXQgY2FyZXRfcGF0aCA9IChzaGFwZTogb3B0aW9uKERpcmVjdGlvbi50KSkgPT4ge1xuICBsZXQgY2FyZXRfYmVuZF9wYXJhbSA9XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgU29tZShSaWdodCkgPT4gLS4gY2FyZXRfYmVuZFxuICAgIHwgU29tZShMZWZ0KSA9PiBjYXJldF9iZW5kXG4gICAgfCBOb25lID0+IDAuMFxuICAgIH07XG4gIGxldCBjYXJldF93aWR0aF9wYXJhbSA9XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgU29tZShSaWdodCkgPT4gLS4gY2FyZXRfd2lkdGhfYmVudFxuICAgIHwgU29tZShMZWZ0KSA9PiBjYXJldF93aWR0aF9iZW50XG4gICAgfCBOb25lID0+IGNhcmV0X3dpZHRoX3N0cmFpZ2h0XG4gICAgfTtcbiAgUGF0aC5bXG4gICAgbSh+eD0wLCB+eT0wKSxcbiAgICBIKHt4OiBjYXJldF93aWR0aF9wYXJhbX0pLFxuICAgIExfKHtkeDogLS4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6IDAuNX0pLFxuICAgIExfKHtkeDogKy4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6IDAuNX0pLFxuICAgIEgoe3g6IC0uIGNhcmV0X3dpZHRoX3BhcmFtfSksXG4gICAgTF8oe2R4OiAtLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogKC0wLjUpfSksXG4gICAgTF8oe2R4OiArLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogKC0wLjUpfSksXG4gIF07XG59O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5wcm9maWxlIGFzIHtzaGFwZSwgc2lkZSwgb3JpZ2lufTogUHJvZmlsZS50LFxuICAgICkgPT4ge1xuICBsZXQgbF9hZGogPSBEZWNVdGlsLmNhcmV0X2FkanVzdChzaWRlLCBzaGFwZSk7XG4gIERlY1V0aWwuY29kZV9zdmcoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+b3JpZ2luLFxuICAgIH5pZD1cImNhcmV0XCIsXG4gICAgfmJhc2VfY2xzPVtcImJsaW5rXCJdLFxuICAgIH5wYXRoX2Nscz1bXCJjYXJldC1wYXRoXCJdLFxuICAgIH5oZWlnaHRfZnVkZ2U9RGVjVXRpbC5zaGFkb3dfYWRqICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgIH5sZWZ0X2Z1ZGdlPWxfYWRqICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgsXG4gICAgY2FyZXRfcGF0aChzaGFwZSksXG4gICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5tb2R1bGUgUHJvZmlsZSA9IHtcbiAgdHlwZSBzdHlsZSA9IFsgfCBgQmFyZSB8IGBTaWJsaW5nIHwgYEFuY2hvciB8IGBDYXJldF07XG4gIHR5cGUgdCA9IHtcbiAgICBzdHlsZSxcbiAgICBtZWFzdXJlbWVudDogSGF6M2xjb3JlLk1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIHNvcnQ6IEhhejNsY29yZS5Tb3J0LnQsXG4gIH07XG59O1xuXG5sZXQgY2FyZXRfcG9zaXRpb25fcmFkaWkgPVxuICAgICh+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LCB+c3R5bGU6IFByb2ZpbGUuc3R5bGUpID0+IHtcbiAgbGV0IHIgPVxuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICB8IGBDYXJldCA9PiAzLjc1XG4gICAgfCBgQW5jaG9yXG4gICAgfCBgU2libGluZyA9PiAyLjc1XG4gICAgfCBgQmFyZSA9PiAyLjBcbiAgICB9O1xuICAociAvLiBmb250X21ldHJpY3MuY29sX3dpZHRoLCByIC8uIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0KTtcbn07XG5cbmxldCB2aWV3ID0gKH5mb250X21ldHJpY3MsIHtzdHlsZSwgc29ydCwgbWVhc3VyZW1lbnR9OiBQcm9maWxlLnQpID0+IHtcbiAgbGV0IChyX3gsIHJfeSkgPSBjYXJldF9wb3NpdGlvbl9yYWRpaSh+Zm9udF9tZXRyaWNzLCB+c3R5bGUpO1xuICBsZXQgY19jbHMgPSBIYXozbGNvcmUuU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGxldCBjbHMgPVxuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICB8IGBCYXJlID0+IFwib3V0ZXItY291c2luXCJcbiAgICB8IGBDYXJldCA9PiBcImN1cnJlbnQtY2FyZXQtcG9zXCJcbiAgICB8IGBBbmNob3IgPT4gXCJhbmNob3JcIlxuICAgIHwgYFNpYmxpbmcgPT4gXCJzaWJsaW5nXCJcbiAgICB9O1xuICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgXCJzdmdcIixcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NfKGNscyksXG4gICAgICAgIERlY1V0aWwuYWJzX3Bvc2l0aW9uKH5mb250X21ldHJpY3MsIG1lYXN1cmVtZW50Lm9yaWdpbiksXG4gICAgICAgIEF0dHIuY3JlYXRlKFwidmlld0JveFwiLCBQcmludGYuc3ByaW50ZihcIjAgMCAxIDFcIikpLFxuICAgICAgICBBdHRyLmNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgXSksXG4gICAgW1xuICAgICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgICBcInJlY3RcIixcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgQXR0ci5bXG4gICAgICAgICAgICAgIGNyZWF0ZShcInhcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIC0uIHJfeCkpLFxuICAgICAgICAgICAgICBjcmVhdGUoXCJ5XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAwLjEgLS4gcl95KSksXG4gICAgICAgICAgICAgIGNyZWF0ZShcIndpZHRoXCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAxLiAqLiByX3gpKSxcbiAgICAgICAgICAgICAgY3JlYXRlKFwiaGVpZ2h0XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAxLiAqLiByX3kpKSxcbiAgICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNhcmV0LXBvc2l0aW9uLXBhdGhcIiwgY2xzLCBjX2Nsc10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgICBbXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG4iLCJ0eXBlIGNvbG9yTWFwID0gSGF6M2xjb3JlLklkLk1hcC50KHN0cmluZyk7XG5cbi8qW0BkZXJpdmluZyBzZXhwXSovXG50eXBlIHQgPSAoY29sb3JNYXAsIGludCk7XG5cbi8qIFRPRE86IEhhbm5haCAtIFBpY2sgNyBvciBzbyBkaXN0aW5jdCBjb2xvcnMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbG9yIGdlbmVyYXRvciB0aGluZyAoSFNMdXYpXG4gICBNYWtlIHN1cmUgZGlzdGluZ3Vpc2hhYmxlIGZvciBjb2xvciBibGluZCBvciBncmV5c2NhbGVcbiAgIC0gdGhpbmsgYWJvdXQgcmVsYXRlZCBjb2xvcnMgZm9yIHJlbGF0ZWQgY29uY2VwdHMqL1xubGV0IGNoaWxkX2NvbG9ycyA9IFtcImJsdWVcIiwgXCJwaW5rXCIsIFwidGVhbFwiLCBcIm9yYW5nZVwiLCBcInB1cnBsZVwiLCBcInllbGxvd1wiXTtcblxubGV0IGVtcHR5ID0gKEhhejNsY29yZS5JZC5NYXAuZW1wdHksIDApO1xubGV0IGdldF9jb2xvciA9IChpZDogSGF6M2xjb3JlLklkLnQsIChtYXBwaW5nLCBpbmRleCk6IHQpOiAoc3RyaW5nLCB0KSA9PlxuICBzd2l0Y2ggKEhhejNsY29yZS5JZC5NYXAuZmluZF9vcHQoaWQsIG1hcHBpbmcpKSB7XG4gIHwgTm9uZSA9PlxuICAgIGxldCBjb2xvciA9IExpc3QubnRoKGNoaWxkX2NvbG9ycywgaW5kZXggbW9kIExpc3QubGVuZ3RoKGNoaWxkX2NvbG9ycykpO1xuICAgIGxldCBtYXBwaW5nID0gSGF6M2xjb3JlLklkLk1hcC5hZGQoaWQsIGNvbG9yLCBtYXBwaW5nKTtcbiAgICAoY29sb3IsIChtYXBwaW5nLCBpbmRleCArIDEpKTtcbiAgfCBTb21lKGNvbG9yKSA9PiAoY29sb3IsIChtYXBwaW5nLCBpbmRleCkpXG4gIH07XG5cbmxldCB0b19saXN0ID0gKG1hcDogY29sb3JNYXApOiBsaXN0KChIYXozbGNvcmUuSWQudCwgc3RyaW5nKSkgPT4ge1xuICBMaXN0Lm9mX3NlcShIYXozbGNvcmUuSWQuTWFwLnRvX3NlcShtYXApKTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gU3ZnVXRpbDtcblxubGV0IHJ1bjogTmliLlNoYXBlLnQgPT4gZmxvYXQgPVxuICBmdW5cbiAgfCBDb252ZXggPT4gKy4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGhcbiAgfCBDb25jYXZlKF8pID0+IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoO1xuXG5sZXQgYWRqOiBOaWIuU2hhcGUudCA9PiBmbG9hdCA9XG4gIGZ1blxuICB8IENvbnZleCA9PiBEZWNVdGlsLmNvbnZleF9hZGpcbiAgfCBDb25jYXZlKF8pID0+IERlY1V0aWwuY29uY2F2ZV9hZGo7XG5cbmxldCBsX2hvb2sgPSAobDogTmliLlNoYXBlLnQpOiBsaXN0KFBhdGguY21kKSA9PiBbXG4gIEhfKHtkeDogLS4gYWRqKGwpfSksXG4gIExfKHtkeDogLS4gcnVuKGwpLCBkeTogKC0wLjUpfSksXG4gIExfKHtkeDogKy4gcnVuKGwpLCBkeTogKC0wLjUpfSksXG4gIEhfKHtkeDogKy4gYWRqKGwpfSksXG5dO1xuXG5sZXQgcl9ob29rID0gKHI6IE5pYi5TaGFwZS50KTogbGlzdChQYXRoLmNtZCkgPT4gW1xuICBIXyh7ZHg6ICsuIGFkaihyKX0pLFxuICBMXyh7ZHg6ICsuIHJ1bihyKSwgZHk6IDAuNX0pLFxuICBMXyh7ZHg6IC0uIHJ1bihyKSwgZHk6IDAuNX0pLFxuICBIXyh7ZHg6IC0uIGFkaihyKX0pLFxuXTtcblxubGV0IHNpbXBsZV9zaGFyZF9wYXRoID0gKChsLCByKTogTmlicy5zaGFwZXMsIGxlbmd0aDogaW50KTogbGlzdChQYXRoLmNtZCkgPT5cbiAgTGlzdC5mbGF0dGVuKFxuICAgIFBhdGguW1xuICAgICAgW20ofng9MCwgfnk9MCksIGgofng9bGVuZ3RoKV0sXG4gICAgICByX2hvb2sociksXG4gICAgICBbaCh+eD0wKV0sXG4gICAgICBsX2hvb2sobCksXG4gICAgXSxcbiAgKTtcblxubGV0IHNpbXBsZV9zaGFyZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5zaGFwZXMsXG4gICAgICB+cGF0aF9jbHMsXG4gICAgICB+YmFzZV9jbHMsXG4gICAgICB+ZnVkZ2U9RGVjVXRpbC5memVybyxcbiAgICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+XG4gIERlY1V0aWwuY29kZV9zdmdfc2l6ZWQoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+bWVhc3VyZW1lbnQsXG4gICAgfmJhc2VfY2xzLFxuICAgIH5wYXRoX2NscyxcbiAgICB+ZnVkZ2UsXG4gICAgc2ltcGxlX3NoYXJkX3BhdGgoc2hhcGVzLCBtZWFzdXJlbWVudC5sYXN0LmNvbCAtIG1lYXN1cmVtZW50Lm9yaWdpbi5jb2wpLFxuICApO1xuXG5sZXQgc2ltcGxlX3NoYXJkX3NlbGVjdGVkID1cbiAgICAofmZvbnRfbWV0cmljcywgfnNoYXBlcywgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCwgfmJ1ZmZlcik6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPSBbXG4gICAgXCJ0aWxlLXBhdGhcIixcbiAgICBcInJhaXNlZFwiLFxuICAgIGJ1ZmZlciA/IFwic2VsZWN0ZWQtYnVmZmVyXCIgOiBcInNlbGVjdGVkXCIsXG4gIF07XG4gIGxldCBiYXNlX2NscyA9IFtcInRpbGUtc2VsZWN0ZWRcIl07XG4gIHNpbXBsZV9zaGFyZChcbiAgICAvKiBJbmNyZWFzZSBoZWlnaHQgc2xpZ2h0bHkgdG8gYXZvaWQgbGVhdmluZyBzcGFjZXMgYmV0d2VlbiBzZWxlY3RlZCBsaW5lcyAqL1xuICAgIH5mdWRnZT17aGVpZ2h0OiAwLjMsIHRvcDogMC4sIHdpZHRoOiAwLiwgbGVmdDogMC59LFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfnNoYXBlcyxcbiAgICB+cGF0aF9jbHMsXG4gICAgfmJhc2VfY2xzLFxuICAgIG1lYXN1cmVtZW50LFxuICApO1xufTtcblxubGV0IHNpbXBsZV9zaGFyZF9pbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+aGFzX2NhcmV0LFxuICAgICAgfnNoYXBlcyxcbiAgICAgIH5zb3J0LFxuICAgICAgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IHBhdGhfY2xzID1cbiAgICBbXCJ0aWxlLXBhdGhcIiwgXCJyYWlzZWRcIiwgU29ydC50b19zdHJpbmcoc29ydCldXG4gICAgQCAoaGFzX2NhcmV0ID8gW1wiaW5kaWNhdGVkLWNhcmV0XCJdIDogW1wiaW5kaWNhdGVkXCJdKTtcbiAgbGV0IGJhc2VfY2xzID0gW1widGlsZS1pbmRpY2F0ZWRcIl07XG4gIHNpbXBsZV9zaGFyZCh+Zm9udF9tZXRyaWNzLCB+c2hhcGVzLCB+cGF0aF9jbHMsIH5iYXNlX2NscywgbWVhc3VyZW1lbnQpO1xufTtcblxubGV0IHNpbXBsZV9zaGFyZHNfaW5kaWNhdGVkID1cbiAgICAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfmNhcmV0OiAoSWQudCwgaW50KSwgKGlkLCBtb2xkLCBzaGFyZHMpKVxuICAgIDogbGlzdCh0KSA9PlxuICBMaXN0Lm1hcChcbiAgICAoKGluZGV4LCBtZWFzdXJlbWVudCkpID0+XG4gICAgICBzaW1wbGVfc2hhcmRfaW5kaWNhdGVkKFxuICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICB+aGFzX2NhcmV0PWNhcmV0ID09IChpZCwgaW5kZXgpLFxuICAgICAgICB+c2hhcGVzPU1vbGQubmliX3NoYXBlcyh+aW5kZXgsIG1vbGQpLFxuICAgICAgICB+c29ydD1tb2xkLm91dCxcbiAgICAgICAgfm1lYXN1cmVtZW50LFxuICAgICAgKSxcbiAgICBzaGFyZHMsXG4gICk7XG5cbmxldCBzaGFkb3dmdWRnZSA9IFBhdGguY21kZnVkZ2Uofnk9RGVjVXRpbC5zaGFkb3dfYWRqKTtcblxubGV0IHNoYXJkc19vZl90aWxlcyA9IHRpbGVzID0+XG4gIHRpbGVzXG4gIHw+IExpc3QuY29uY2F0X21hcCgoKF8sIF8sIHNoYXJkcykpID0+IHNoYXJkcylcbiAgfD4gTGlzdC5zb3J0KFxuICAgICAgICgoXywgbTE6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSwgKF8sIG0yOiBNZWFzdXJlZC5tZWFzdXJlbWVudCkpID0+XG4gICAgICAgTWVhc3VyZWQuUG9pbnQuY29tcGFyZShtMS5vcmlnaW4sIG0yLm9yaWdpbilcbiAgICAgKTtcblxubGV0IGJpX2xpbmVzID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnJvd3M6IE1lYXN1cmVkLlJvd3MudCxcbiAgICAgIHRpbGVzOiBsaXN0KChJZC50LCBNb2xkLnQsIE1lYXN1cmVkLlNoYXJkcy50KSksXG4gICAgKVxuICAgIDogbGlzdCh0KSA9PiB7XG4gIGxldCBzaGFyZHMgPSBzaGFyZHNfb2ZfdGlsZXModGlsZXMpO1xuICBsZXQgc2hhcmRfcm93cyA9IE1lYXN1cmVkLlNoYXJkcy5zcGxpdF9ieV9yb3coc2hhcmRzKTtcbiAgbGV0IGludHJhX2xpbmVzID1cbiAgICBzaGFyZF9yb3dzXG4gICAgfD4gTGlzdC5tYXAoTGlzdFV0aWwubmVpZ2hib3JzKVxuICAgIHw+IExpc3QuY29uY2F0X21hcChcbiAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAoKChfLCBsOiBNZWFzdXJlZC5tZWFzdXJlbWVudCksIChfLCByOiBNZWFzdXJlZC5tZWFzdXJlbWVudCkpKSA9PlxuICAgICAgICAgICAoXG4gICAgICAgICAgICAgbC5vcmlnaW4sXG4gICAgICAgICAgICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgICAgaCh+eD1yLmxhc3QuY29sIC0gbC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICBdLFxuICAgICAgICAgICApXG4gICAgICAgICApLFxuICAgICAgICk7XG4gIGxldCBpbnRlcl9saW5lcyA9XG4gICAgTGlzdFV0aWwubmVpZ2hib3JzKHNoYXJkX3Jvd3MpXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICAoKHJvd19zaGFyZHM6IE1lYXN1cmVkLlNoYXJkcy50LCByb3dfc2hhcmRzJzogTWVhc3VyZWQuU2hhcmRzLnQpKSA9PiB7XG4gICAgICAgICBhc3NlcnQocm93X3NoYXJkcyAhPSBbXSk7XG4gICAgICAgICBhc3NlcnQocm93X3NoYXJkcycgIT0gW10pO1xuICAgICAgICAgbGV0IG9yaWdpbiA9IHNuZChMaXN0LmhkKHJvd19zaGFyZHMpKS5vcmlnaW47XG4gICAgICAgICBsZXQgb3JpZ2luJyA9IHNuZChMaXN0LmhkKHJvd19zaGFyZHMnKSkub3JpZ2luO1xuICAgICAgICAgbGV0IGluZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChvcmlnaW4ucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICAgICBsZXQgdl9kZWx0YSA9IG9yaWdpbicuY29sID09IGluZGVudCA/ICgtMSkgOiAwO1xuICAgICAgICAgKFxuICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgaF8ofmR4PWluZGVudCAtIG9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHZfKH5keT1vcmlnaW4nLnJvdyAtIG9yaWdpbi5yb3cgKyB2X2RlbHRhKSksXG4gICAgICAgICAgICAgaF8ofmR4PW9yaWdpbicuY29sIC0gaW5kZW50KSxcbiAgICAgICAgICAgXSxcbiAgICAgICAgICk7XG4gICAgICAgfSk7XG4gIC8vIFRPRE8oZCkgY2xlYW4gdXAgUHJvZmlsZSBkYXRhdHlwZVxuICBsZXQgcyA9XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSB0aWxlXCIpXG4gICAgfCBbKF8sIG1vbGQsIF8pLCAuLi5fXSA9PiBtb2xkLm91dFxuICAgIH07XG4gIGxldCBjbHNzID0gW1wiY2hpbGQtbGluZVwiLCBTb3J0LnRvX3N0cmluZyhzKV07XG4gIGludHJhX2xpbmVzXG4gIEAgaW50ZXJfbGluZXNcbiAgfD4gTGlzdC5tYXAoKChvcmlnaW4sIHBhdGgpKSA9PlxuICAgICAgIERlY1V0aWwuY29kZV9zdmcofmZvbnRfbWV0cmljcywgfm9yaWdpbiwgfnBhdGhfY2xzPWNsc3MsIHBhdGgpXG4gICAgICk7XG59O1xuXG5sZXQgdW5pX2xpbmVzID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnJvd3M6IE1lYXN1cmVkLlJvd3MudCxcbiAgICAgIChsOiBNZWFzdXJlZC5Qb2ludC50LCByOiBNZWFzdXJlZC5Qb2ludC50KSxcbiAgICAgIHRpbGVzOiBsaXN0KChJZC50LCBNb2xkLnQsIE1lYXN1cmVkLlNoYXJkcy50KSksXG4gICAgKSA9PiB7XG4gIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICBsZXQgc2hhcmRzID0gc2hhcmRzX29mX3RpbGVzKHRpbGVzKTtcbiAgbGV0IGxfbGluZSA9IHtcbiAgICBsZXQgKF8sIG1fZmlyc3QpID0gTGlzdC5oZChzaGFyZHMpO1xuICAgIGxldCAoXywgbV9sYXN0X29mX2ZpcnN0KSA9IHtcbiAgICAgIGxldCBzaGFyZF9yb3dzID0gTWVhc3VyZWQuU2hhcmRzLnNwbGl0X2J5X3JvdyhzaGFyZHMpO1xuICAgICAgYXNzZXJ0KHNoYXJkX3Jvd3MgIT0gW10pO1xuICAgICAgbGV0IHJvdyA9IExpc3QuaGQoc2hhcmRfcm93cyk7XG4gICAgICBhc3NlcnQocm93ICE9IFtdKTtcbiAgICAgIExpc3RVdGlsLmxhc3Qocm93KTtcbiAgICB9O1xuICAgIGlmIChNZWFzdXJlZC5Qb2ludC5jb21wYXJlKGwsIG1fZmlyc3Qub3JpZ2luKSA8IDApIHtcbiAgICAgIGxldCBtYXhfY29sID1cbiAgICAgICAgTWVhc3VyZWQuUm93cy5tYXhfY29sKFxuICAgICAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1sLnJvdywgbV9maXJzdC5vcmlnaW4ucm93KSxcbiAgICAgICAgICByb3dzLFxuICAgICAgICApXG4gICAgICAgIHw+IG1heChtX2ZpcnN0Lm9yaWdpbi5jb2wpO1xuICAgICAgbGV0IGluZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChtX2ZpcnN0Lm9yaWdpbi5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgIFtcbiAgICAgICAgbC5yb3cgPT0gbV9maXJzdC5vcmlnaW4ucm93XG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICBtX2ZpcnN0Lm9yaWdpbixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgIGgofng9bC5jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICBMXyh7XG4gICAgICAgICAgICAgICAgZHg6IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICAgICAgICAgIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQgLy4gMi4gLy9oYWNrXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAvL0xfKHtcbiAgICAgICAgICAgICAgLy8gIGR4OiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgICAgICAgLy8gIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQsXG4gICAgICAgICAgICAgIC8vfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIClcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIG1fZmlyc3Qub3JpZ2luLFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBtX2ZpcnN0Lm9yaWdpbi5jb2wgPT0gaW5kZW50XG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICBtKH54PW1fbGFzdF9vZl9maXJzdC5sYXN0LmNvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCwgfnk9MCksXG4gICAgICAgICAgICAgICAgICAvLyBUT0RPKGQpIG5lZWQgdG8gdGFrZSBtYXggb2YgYWxsIHJvd3MsIG5vdCBqdXN0IHRvcFxuICAgICAgICAgICAgICAgICAgaCh+eD1tYXhfY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9bC5yb3cgLSBtX2xhc3Rfb2ZfZmlyc3Qub3JpZ2luLnJvdykpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgICAgICAgaCh+eD1pbmRlbnQgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1sLnJvdyArIDEgLSBtX2ZpcnN0Lm9yaWdpbi5yb3cpKSxcbiAgICAgICAgICAgICAgICAgIGgofng9bWF4X2NvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PWwucm93IC0gbV9maXJzdC5vcmlnaW4ucm93KSksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgQCBbXG4gICAgICAgICAgICAgIGgofng9bC5jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICBMXyh7XG4gICAgICAgICAgICAgICAgZHg6IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICAgICAgICAgIGR5OiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQgLy4gMi4gLy9oYWNrXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAvL0xfKHtkeDogRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsIGR5OiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIFtdO1xuICAgIH07XG4gIH07XG4gIGxldCByX2xpbmUgPSB7XG4gICAgbGV0IChfLCBtX2xhc3QpID0gTGlzdFV0aWwubGFzdChzaGFyZHMpO1xuICAgIGxldCBob29rID0gW1xuICAgICAgTF8oe1xuICAgICAgICBkeDogRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQgLy4gMi4gLy9oYWNrXG4gICAgICB9KSxcbiAgICAgIC8vTF8oe2R4OiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCwgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgIF07XG4gICAgaWYgKHIucm93ID09IG1fbGFzdC5sYXN0LnJvdyAmJiByLmNvbCA+IG1fbGFzdC5sYXN0LmNvbCkge1xuICAgICAgW1xuICAgICAgICAoXG4gICAgICAgICAgbV9sYXN0Lm9yaWdpbixcbiAgICAgICAgICBbXG4gICAgICAgICAgICBzaGFkb3dmdWRnZShcbiAgICAgICAgICAgICAgbShcbiAgICAgICAgICAgICAgICB+eD1tX2xhc3QubGFzdC5jb2wgLSBtX2xhc3Qub3JpZ2luLmNvbCxcbiAgICAgICAgICAgICAgICB+eT1tX2xhc3QubGFzdC5yb3cgLSBtX2xhc3Qub3JpZ2luLnJvdyArIDEsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaCh+eD1yLmNvbCAtIG1fbGFzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgIC4uLmhvb2ssXG4gICAgICAgICAgXSxcbiAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChyLnJvdyA+IG1fbGFzdC5sYXN0LnJvdykge1xuICAgICAgbGV0IG1pbl9jb2wgPVxuICAgICAgICBNZWFzdXJlZC5Sb3dzLm1pbl9jb2woXG4gICAgICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPW1fbGFzdC5sYXN0LnJvdywgci5yb3cgKyAxKSxcbiAgICAgICAgICByb3dzLFxuICAgICAgICApXG4gICAgICAgIHw+IG1pbihtX2xhc3QubGFzdC5jb2wpO1xuICAgICAgLy8gbGV0IHJfaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKHIucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICBsZXQgKF8sIG1fZmxhc3QpID0ge1xuICAgICAgICBsZXQgc2hhcmRfcm93cyA9IE1lYXN1cmVkLlNoYXJkcy5zcGxpdF9ieV9yb3coc2hhcmRzKTtcbiAgICAgICAgYXNzZXJ0KHNoYXJkX3Jvd3MgIT0gW10pO1xuICAgICAgICBsZXQgcm93ID0gTGlzdFV0aWwubGFzdChzaGFyZF9yb3dzKTtcbiAgICAgICAgYXNzZXJ0KHJvdyAhPSBbXSk7XG4gICAgICAgIExpc3QuaGQocm93KTtcbiAgICAgIH07XG4gICAgICAvLyBsZXQgZmxhc3RfaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKG1fZmxhc3Qub3JpZ2luLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgW1xuICAgICAgICAoXG4gICAgICAgICAgbV9mbGFzdC5vcmlnaW4sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgc2hhZG93ZnVkZ2UoXG4gICAgICAgICAgICAgIG0ofng9MCwgfnk9bV9mbGFzdC5sYXN0LnJvdyAtIG1fZmxhc3Qub3JpZ2luLnJvdyArIDEpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGgofng9bWluX2NvbCAtIG1fZmxhc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PXIucm93IC0gbV9mbGFzdC5vcmlnaW4ucm93ICsgMSkpLFxuICAgICAgICAgICAgaCh+eD1yLmNvbCAtIG1fZmxhc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAuLi5ob29rLFxuICAgICAgICAgIF0sXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBbXTtcbiAgICB9O1xuICB9O1xuICAvLyBUT0RPKGQpIGNsZWFuIHVwIFByb2ZpbGUgZGF0YXR5cGVcbiAgbGV0IHMgPVxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IFtdID0+IGZhaWx3aXRoKFwiZW1wdHkgdGlsZVwiKVxuICAgIHwgWyhfLCBtb2xkLCBfKSwgLi4uX10gPT4gbW9sZC5vdXRcbiAgICB9O1xuICBsZXQgY2xzcyA9IFtcImNoaWxkLWxpbmVcIiwgU29ydC50b19zdHJpbmcocyldO1xuICBsX2xpbmVcbiAgQCByX2xpbmVcbiAgfD4gTGlzdC5tYXAoKChvcmlnaW4sIHBhdGgpKSA9PlxuICAgICAgIERlY1V0aWwuY29kZV9zdmcofmZvbnRfbWV0cmljcywgfm9yaWdpbiwgfnBhdGhfY2xzPWNsc3MsIHBhdGgpXG4gICAgICk7XG59O1xuXG5sZXQgaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnJvd3M6IE1lYXN1cmVkLlJvd3MudCxcbiAgICAgIH5jYXJldCxcbiAgICAgIH50aWxlcyxcbiAgICAgIHJhbmdlLFxuICAgIClcbiAgICA6IGxpc3QoTm9kZS50KSA9PiB7XG4gIExpc3QuY29uY2F0X21hcChzaW1wbGVfc2hhcmRzX2luZGljYXRlZCh+Zm9udF9tZXRyaWNzLCB+Y2FyZXQpLCB0aWxlcylcbiAgQCB1bmlfbGluZXMofmZvbnRfbWV0cmljcywgfnJvd3MsIHJhbmdlLCB0aWxlcylcbiAgQCBiaV9saW5lcyh+Zm9udF9tZXRyaWNzLCB+cm93cywgdGlsZXMpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgRGVjbyA9XG4gICAgICAgKFxuICAgICAgICAgTToge1xuICAgICAgICAgICBsZXQgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50O1xuICAgICAgICAgICBsZXQgbWFwOiBNZWFzdXJlZC50O1xuICAgICAgICAgICBsZXQgc2hvd19iYWNrcGFja190YXJnZXRzOiBib29sO1xuICAgICAgICAgICBsZXQgdGVybXM6IFRlcm1NYXAudDtcbiAgICAgICAgICAgbGV0IHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQ7XG4gICAgICAgICAgIGxldCBlcnJvcl9pZHM6IGxpc3QoSWQudCk7XG4gICAgICAgICAgIGxldCB0aWxlczogVGlsZU1hcC50O1xuICAgICAgICAgfSxcbiAgICAgICApID0+IHtcbiAgbGV0IGZvbnRfbWV0cmljcyA9IE0uZm9udF9tZXRyaWNzO1xuXG4gIGxldCB0aWxlID0gaWQgPT4gSWQuTWFwLmZpbmQoaWQsIE0udGlsZXMpO1xuXG4gIGxldCBjYXJldCA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgbGV0IG9yaWdpbiA9IFppcHBlci5jYXJldF9wb2ludChNLm1hcCwgeik7XG4gICAgbGV0IHNoYXBlID0gWmlwcGVyLmNhcmV0X2RpcmVjdGlvbih6KTtcbiAgICBsZXQgc2lkZSA9XG4gICAgICBzd2l0Y2ggKEluZGljYXRlZC5waWVjZSh6KSkge1xuICAgICAgfCBTb21lKChfLCBzaWRlLCBfKSkgPT4gc2lkZVxuICAgICAgfCBfID0+IFJpZ2h0XG4gICAgICB9O1xuICAgIFtDYXJldERlYy52aWV3KH5mb250X21ldHJpY3MsIH5wcm9maWxlPXtzaWRlLCBvcmlnaW4sIHNoYXBlfSldO1xuICB9O1xuXG4gIHR5cGUgc2hhcmRfZGF0YSA9IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpO1xuXG4gIGxldCBzZWxfc2hhcmRfc3ZnID1cbiAgICAgICh+aW5kZXg9PywgfnN0YXJ0X3NoYXBlLCBtZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsIHApXG4gICAgICA6IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpID0+IChcbiAgICBtZWFzdXJlbWVudCxcbiAgICBNb2xkLm5pYl9zaGFwZXMofmluZGV4PywgUGllY2UubW9sZF9vZih+c2hhcGU9c3RhcnRfc2hhcGUsIHApKSxcbiAgKTtcblxuICBsZXQgcmVjIHNlbF9vZl9waWVjZSA9XG4gICAgICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgcDogUGllY2UudClcbiAgICAgICAgICA6IChOaWIuU2hhcGUudCwgbGlzdChvcHRpb24oc2hhcmRfZGF0YSkpKSA9PiB7XG4gICAgbGV0IHNoYXJkX2RhdGEgPVxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFRpbGUodCkgPT4gc2VsX29mX3RpbGUofnN0YXJ0X3NoYXBlLCB0KVxuICAgICAgfCBHcm91dChnKSA9PiBbXG4gICAgICAgICAgU29tZShzZWxfc2hhcmRfc3ZnKH5zdGFydF9zaGFwZSwgTWVhc3VyZWQuZmluZF9nKGcsIE0ubWFwKSwgcCkpLFxuICAgICAgICBdXG4gICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT4gW05vbmVdXG4gICAgICB8IFNlY29uZGFyeSh3KSA9PiBbXG4gICAgICAgICAgU29tZShzZWxfc2hhcmRfc3ZnKH5zdGFydF9zaGFwZSwgTWVhc3VyZWQuZmluZF93KHcsIE0ubWFwKSwgcCkpLFxuICAgICAgICBdXG4gICAgICB9O1xuICAgIGxldCBzdGFydF9zaGFwZSA9XG4gICAgICBzd2l0Y2ggKFBpZWNlLm5pYnMocCkpIHtcbiAgICAgIHwgTm9uZSA9PiBzdGFydF9zaGFwZVxuICAgICAgfCBTb21lKChfLCB7c2hhcGUsIF99KSkgPT4gc2hhcGVcbiAgICAgIH07XG4gICAgKHN0YXJ0X3NoYXBlLCBzaGFyZF9kYXRhKTtcbiAgfVxuICBhbmQgc2VsX29mX3RpbGUgPSAofnN0YXJ0X3NoYXBlLCB0OiBUaWxlLnQpOiBsaXN0KG9wdGlvbihzaGFyZF9kYXRhKSkgPT4ge1xuICAgIGxldCB0aWxlX3NoYXJkcyA9XG4gICAgICBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBNLm1hcClcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoaSwgXykpID0+IExpc3QubWVtKGksIHQuc2hhcmRzKSlcbiAgICAgIHw+IExpc3QubWFwKCgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIH5pbmRleCwgbWVhc3VyZW1lbnQsIFRpbGUodCkpKSxcbiAgICAgICAgICAgXVxuICAgICAgICAgKTtcbiAgICBsZXQgc2hhcGVfYXQgPSBpbmRleCA9PiBzbmQoTW9sZC5uaWJzKH5pbmRleCwgdC5tb2xkKSkuc2hhcGU7XG4gICAgbGV0IGNoaWxkcmVuX3NoYXJkcyA9XG4gICAgICB0LmNoaWxkcmVuIHw+IExpc3QubWFwaShpbmRleCA9PiBzZWxfb2Zfc2VnbWVudChzaGFwZV9hdChpbmRleCkpKTtcbiAgICBMaXN0VXRpbC5pbnRlcmxlYXZlKHRpbGVfc2hhcmRzLCBjaGlsZHJlbl9zaGFyZHMpIHw+IExpc3QuZmxhdHRlbjtcbiAgfVxuICBhbmQgc2VsX29mX3NlZ21lbnQgPVxuICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KG9wdGlvbihzaGFyZF9kYXRhKSkgPT4ge1xuICAgIHNlZ1xuICAgIHw+IExpc3RVdGlsLmZvbGRfbGVmdF9tYXAoc2VsX29mX3BpZWNlLCBzdGFydF9zaGFwZSlcbiAgICB8PiBzbmRcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH1cbiAgYW5kIHNlbGVjdGVkX3BpZWNlcyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PlxuICAgIC8qIFdlIGRyYXcgYSBzaW5nbGUgZGVjbyBwZXIgcm93IGJ5IGRpdmlkaW5nIHBhcnRpb25pbmluZyB0aGUgc2hhcmRzXG4gICAgICogaW50byBsaW5lYnJlYWstc2VwZXJhdGVkIHNlZ21lbnRzLCB0aGVuIGNvbWJpbmluZyB0aGUgbWVhc3VyZW1lbnRzXG4gICAgICogYW5kIHNoYXBlcyBvZiB0aGUgZmlyc3QgYW5kIGxhc3Qgc2hhcmQgb2YgZWFjaCBzZWdtZW50LiBJZGVhbGx5IHdlXG4gICAgICogY291bGQganVzdCBnZXQgdGhpcyBpbmZvIGZyb20gdGhlIHJvdyBtZWFzdXJlbWVudHMsIGJ1dCB3ZSBoYXZlIG5vXG4gICAgICogY3VycmVudCB3YXkgb2YgZmlndXJpbmcgb3V0IHNoYXBlcyBmb3Igd2hpdGVzcGFjZSB3aXRob3V0IHRyYXZlcnNpbmcgKi9cbiAgICBzZWxfb2Zfc2VnbWVudChcbiAgICAgIGZzdChTaWJsaW5ncy5zaGFwZXMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSxcbiAgICAgIHouc2VsZWN0aW9uLmNvbnRlbnQsXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLnNwbGl0X2F0X25vbmVzXG4gICAgfD4gTGlzdFV0aWwuZmlyc3RfYW5kX2xhc3RcbiAgICB8PiBMaXN0Lm1hcCgoKChtMSwgKGwxLCBfKSk6IHNoYXJkX2RhdGEsIChtMiwgKF8sIHIyKSk6IHNoYXJkX2RhdGEpKSA9PlxuICAgICAgICAgKCh7b3JpZ2luOiBtMS5vcmlnaW4sIGxhc3Q6IG0yLmxhc3R9LCAobDEsIHIyKSk6IHNoYXJkX2RhdGEpXG4gICAgICAgKVxuICAgIHw+IExpc3QubWFwKCgobWVhc3VyZW1lbnQsIHNoYXBlcykpID0+XG4gICAgICAgICBQaWVjZURlYy5zaW1wbGVfc2hhcmRfc2VsZWN0ZWQoXG4gICAgICAgICAgIH5idWZmZXI9U2VsZWN0aW9uLmlzX2J1ZmZlcih6LnNlbGVjdGlvbiksXG4gICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICAgICAgfnNoYXBlcyxcbiAgICAgICAgIClcbiAgICAgICApO1xuXG4gIGxldCBpbmRpY2F0ZWRfcGllY2VfZGVjbyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQucGllY2UoeikpIHtcbiAgICB8IF8gd2hlbiB6LnNlbGVjdGlvbi5jb250ZW50ICE9IFtdID0+IFtdXG4gICAgfCBOb25lID0+IFtdXG4gICAgfCBTb21lKChHcm91dChfKSwgXywgXykpID0+IFtdXG4gICAgfCBTb21lKChwLCBzaWRlLCBfKSkgPT5cbiAgICAgIC8vIHJvb3RfcHJvZmlsZSBjYWxjdWxhdGlvbiBhc3N1bWVzIHAgaXMgdGlsZVxuICAgICAgLy8gVE9ETyBlbmNvZGUgaW4gdHlwZXNcbiAgICAgIGxldCBfbmliX3NoYXBlID1cbiAgICAgICAgc3dpdGNoIChaaXBwZXIuY2FyZXRfZGlyZWN0aW9uKHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiBOaWIuU2hhcGUuQ29udmV4XG4gICAgICAgIHwgU29tZShuaWIpID0+IE5pYi5TaGFwZS5yZWxhdGl2ZShuaWIsIHNpZGUpXG4gICAgICAgIH07XG4gICAgICBsZXQgcmFuZ2U6IG9wdGlvbigoTWVhc3VyZWQuUG9pbnQudCwgTWVhc3VyZWQuUG9pbnQudCkpID0ge1xuICAgICAgICAvLyBpZiAoUGllY2UuaGFzX2VuZHMocCkpIHtcbiAgICAgICAgc3dpdGNoIChUZXJtUmFuZ2VzLmZpbmRfb3B0KFBpZWNlLmlkKHApLCBNLnRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB8IFNvbWUoKHBfbCwgcF9yKSkgPT5cbiAgICAgICAgICBsZXQgbCA9IE1lYXN1cmVkLmZpbmRfcChwX2wsIE0ubWFwKS5vcmlnaW47XG4gICAgICAgICAgbGV0IHIgPSBNZWFzdXJlZC5maW5kX3AocF9yLCBNLm1hcCkubGFzdDtcbiAgICAgICAgICBTb21lKChsLCByKSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgbGV0IGluZGV4ID1cbiAgICAgICAgc3dpdGNoIChJbmRpY2F0ZWQuc2hhcmRfaW5kZXgoeikpIHtcbiAgICAgICAgfCBOb25lID0+ICgtMSlcbiAgICAgICAgfCBTb21lKGkpID0+IGlcbiAgICAgICAgfTtcbiAgICAgIHN3aXRjaCAocmFuZ2UpIHtcbiAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgfCBTb21lKHJhbmdlKSA9PlxuICAgICAgICBsZXQgdGlsZXMgPVxuICAgICAgICAgIElkLk1hcC5maW5kKFBpZWNlLmlkKHApLCBNLnRlcm1zKVxuICAgICAgICAgIHw+IFRlcm0uaWRzXG4gICAgICAgICAgLyogTk9URShhbmRyZXcpOiBkYXJrX2lkcyB3ZXJlIG9yaWdpbmFsbHkgZmlsdGVyZWQgaGVyZS5cbiAgICAgICAgICAgKiBMZWF2aW5nIHRoaXMgY29tbWVudCBpbiBwbGFjZSBpbiBjYXNlIGlzc3VlcyBpbiB0aGVcbiAgICAgICAgICAgKiBmdXR1cmUgYXJlIHRyYWNlZCBiYWNrIHRvIGhlcmUuXG4gICAgICAgICAgICogfD4gTGlzdC5maWx0ZXIoaWQgPT4gaWQgPj0gMCkqL1xuICAgICAgICAgIHw+IExpc3QubWFwKGlkID0+IHtcbiAgICAgICAgICAgICAgIGxldCB0ID0gdGlsZShpZCk7XG4gICAgICAgICAgICAgICAoaWQsIHQubW9sZCwgTWVhc3VyZWQuZmluZF9zaGFyZHModCwgTS5tYXApKTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgUGllY2VEZWMuaW5kaWNhdGVkKFxuICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgfnJvd3M9TS5tYXAucm93cyxcbiAgICAgICAgICB+Y2FyZXQ9KFBpZWNlLmlkKHApLCBpbmRleCksXG4gICAgICAgICAgfnRpbGVzLFxuICAgICAgICAgIHJhbmdlLFxuICAgICAgICApO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgdGFyZ2V0cyA9ICh+Y29udGFpbmVyX3NoYXJkcz0/LCBicDogQmFja3BhY2sudCwgc2VnOiBTZWdtZW50LnQpID0+IHtcbiAgICBsZXQgd2l0aF9jb250YWluZXJfc2hhcmRzID0gKChwcmUsIHN1ZikgYXMgc2licykgPT5cbiAgICAgIHN3aXRjaCAoY29udGFpbmVyX3NoYXJkcykge1xuICAgICAgfCBOb25lID0+IHNpYnNcbiAgICAgIHwgU29tZSgobCwgcikpID0+IChbbCwgLi4ucHJlXSwgc3VmIEAgW3JdKVxuICAgICAgfTtcbiAgICBsZXQgcm9vdF90YXJnZXRzID1cbiAgICAgIExpc3RVdGlsLnNwbGl0cyhzZWcpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChsLCByKSkgPT4ge1xuICAgICAgICAgICBsZXQgc2licyA9XG4gICAgICAgICAgICAgU2VnbWVudC4oaW5jb21wbGV0ZV90aWxlcyhsKSwgaW5jb21wbGV0ZV90aWxlcyhyKSlcbiAgICAgICAgICAgICB8PiB3aXRoX2NvbnRhaW5lcl9zaGFyZHM7XG4gICAgICAgICAgIHN3aXRjaCAoQmFja3BhY2sucG9wKHNpYnMsIGJwKSkge1xuICAgICAgICAgICB8IE5vbmVcbiAgICAgICAgICAgfCBTb21lKCh0cnVlLCBfLCBfKSkgPT4gW11cbiAgICAgICAgICAgfCBTb21lKF8pID0+XG4gICAgICAgICAgICAgbGV0IG1lYXN1cmVtZW50ID1cbiAgICAgICAgICAgICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKChsLCByKSkpIHtcbiAgICAgICAgICAgICAgIHwgKE5vbmUsIE5vbmUpID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZVwiKVxuICAgICAgICAgICAgICAgfCAoXywgU29tZShwKSkgPT5cbiAgICAgICAgICAgICAgICAgbGV0IG0gPSBNZWFzdXJlZC5maW5kX3AocCwgTS5tYXApO1xuICAgICAgICAgICAgICAgICBNZWFzdXJlZC57b3JpZ2luOiBtLm9yaWdpbiwgbGFzdDogbS5vcmlnaW59O1xuICAgICAgICAgICAgICAgfCAoU29tZShwKSwgXykgPT5cbiAgICAgICAgICAgICAgICAgbGV0IG0gPSBNZWFzdXJlZC5maW5kX3AocCwgTS5tYXApO1xuICAgICAgICAgICAgICAgICBNZWFzdXJlZC57b3JpZ2luOiBtLmxhc3QsIGxhc3Q6IG0ubGFzdH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIGxldCBwcm9maWxlID1cbiAgICAgICAgICAgICAgIENhcmV0UG9zRGVjLlByb2ZpbGUue3N0eWxlOiBgU2libGluZywgbWVhc3VyZW1lbnQsIHNvcnQ6IEV4cH07XG4gICAgICAgICAgICAgW0NhcmV0UG9zRGVjLnZpZXcofmZvbnRfbWV0cmljcywgcHJvZmlsZSldO1xuICAgICAgICAgICB9O1xuICAgICAgICAgfSk7XG4gICAgc3dpdGNoIChyb290X3RhcmdldHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiByb290X3RhcmdldHNcbiAgICB8IFtdID0+XG4gICAgICBzZWdcbiAgICAgIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgZnVuXG4gICAgICAgICAgIHwgUGllY2UuVGlsZSh0KSA9PiBTb21lKHQpXG4gICAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgICAgKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCh0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgICAgLy8gVE9ETyhkKTogdW5pZnkgd2l0aCBSZWxhdGl2ZXMubG9jYWxfaW5jb21wbGV0ZV90aWxlc1xuICAgICAgICAgICBUaWxlLmNvbnRhaW5lZF9jaGlsZHJlbih0KVxuICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChsLCBzZWcsIHIpKSA9PlxuICAgICAgICAgICAgICAgIHRhcmdldHMofmNvbnRhaW5lcl9zaGFyZHM9KGwsIHIpLCBicCwgc2VnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICB9KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGJhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IFtcbiAgICBCYWNrcGFja1ZpZXcudmlldyhcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+b3JpZ2luPVppcHBlci5jYXJldF9wb2ludChNLm1hcCwgeiksXG4gICAgICB6LFxuICAgICksXG4gIF07XG5cbiAgbGV0IHRhcmdldHMnID0gKGJhY2twYWNrLCBzZWcpID0+IHtcbiAgICBNLnNob3dfYmFja3BhY2tfdGFyZ2V0cyAmJiBCYWNrcGFjay5yZXN0cmljdGVkKGJhY2twYWNrKVxuICAgICAgPyB0YXJnZXRzKGJhY2twYWNrLCBzZWcpIDogW107XG4gIH07XG5cbiAgbGV0IHRlcm1fZGVjb3JhdGlvbiA9XG4gICAgICAoXG4gICAgICAgIH5pZDogSWQudCxcbiAgICAgICAgZGVjbzpcbiAgICAgICAgICAoKE1lYXN1cmVkLlBvaW50LnQsIE1lYXN1cmVkLlBvaW50LnQsIFN2Z1V0aWwuUGF0aC50KSkgPT4gTm9kZS50LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IChwX2wsIHBfcikgPSBUZXJtUmFuZ2VzLmZpbmQoaWQsIE0udGVybV9yYW5nZXMpO1xuICAgIGxldCBsID0gTWVhc3VyZWQuZmluZF9wKHBfbCwgTS5tYXApLm9yaWdpbjtcbiAgICBsZXQgciA9IE1lYXN1cmVkLmZpbmRfcChwX3IsIE0ubWFwKS5sYXN0O1xuICAgIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICAgIGxldCByX2VkZ2UgPVxuICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPWwucm93LCByLnJvdyArIDEpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoaSA9PiB7XG4gICAgICAgICAgIGxldCByb3cgPSBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgTS5tYXAucm93cyk7XG4gICAgICAgICAgIFtoKH54PWkgPT0gci5yb3cgPyByLmNvbCA6IHJvdy5tYXhfY29sKSwgdl8ofmR5PTEpXTtcbiAgICAgICAgIH0pO1xuICAgIGxldCBsX2VkZ2UgPVxuICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPWwucm93LCByLnJvdyArIDEpXG4gICAgICB8PiBMaXN0LnJldl9tYXAoaSA9PiB7XG4gICAgICAgICAgIGxldCByb3cgPSBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgTS5tYXAucm93cyk7XG4gICAgICAgICAgIFtoKH54PWkgPT0gbC5yb3cgPyBsLmNvbCA6IHJvdy5pbmRlbnQpLCB2Xyh+ZHk9LTEpXTtcbiAgICAgICAgIH0pXG4gICAgICB8PiBMaXN0LmNvbmNhdDtcbiAgICBsZXQgcGF0aCA9XG4gICAgICBbbSh+eD1sLmNvbCwgfnk9bC5yb3cpLCAuLi5yX2VkZ2VdXG4gICAgICBAIGxfZWRnZVxuICAgICAgQCBbWl1cbiAgICAgIHw+IHRyYW5zbGF0ZSh7ZHg6IEZsb2F0Lm9mX2ludCgtIGwuY29sKSwgZHk6IEZsb2F0Lm9mX2ludCgtIGwucm93KX0pO1xuICAgIChsLCByLCBwYXRoKSB8PiBkZWNvO1xuICB9O1xuXG4gIGxldCB0ZXJtX2hpZ2hsaWdodCA9ICh+Y2xzczogbGlzdChzdHJpbmcpLCBpZDogSWQudCkgPT4ge1xuICAgIHRlcm1fZGVjb3JhdGlvbih+aWQsICgob3JpZ2luLCBsYXN0LCBwYXRoKSkgPT5cbiAgICAgIERlY1V0aWwuY29kZV9zdmdfc2l6ZWQoXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH5tZWFzdXJlbWVudD17b3JpZ2luLCBsYXN0fSxcbiAgICAgICAgfmJhc2VfY2xzPWNsc3MsXG4gICAgICAgIHBhdGgsXG4gICAgICApXG4gICAgKTtcbiAgfTtcblxuICBsZXQgY29sb3JfaGlnaGxpZ2h0cyA9IChjb2xvcmluZ3M6IGxpc3QoKElkLnQsIHN0cmluZykpKSA9PiB7XG4gICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgKChpZCwgY29sb3IpKSA9PlxuICAgICAgICAvKiBIQUNLKGFuZHJldyk6IENhdGNoaW5nIGV4Y2VwdGlvbnMgc2luY2Ugd2hlbiBzaG93aW5nXG4gICAgICAgICAgIHRlcm0gaGlnaGxpZ2h0cyB3aGVuIHRoZSBiYWNrcGFjayBpcyBub24tZW1wdHksIHRoZVxuICAgICAgICAgICBwcm9zcGVjdGl2ZSBjb21wbGV0aW9uIG1heSBoYXZlIGRpZmZlcmVudCB0ZXJtIGlkc1xuICAgICAgICAgICB0aGFuIHRoZSBkaXNwbGF5ZWQgY29kZS4gKi9cbiAgICAgICAgdHJ5KFNvbWUodGVybV9oaWdobGlnaHQofmNsc3M9W1wiaGlnaGxpZ2h0LWNvZGUtXCIgKysgY29sb3JdLCBpZCkpKSB7XG4gICAgICAgIHwgTm90X2ZvdW5kID0+IE5vbmVcbiAgICAgICAgfSxcbiAgICAgIGNvbG9yaW5ncyxcbiAgICApO1xuICB9O1xuXG4gIC8vIGZhc3RlciBpbmZvbWFwIHRyYXZlcnNhbFxuICBsZXQgZXJyX2hvbGVzID0gKF96OiBaaXBwZXIudCkgPT5cbiAgICBMaXN0Lm1hcCh0ZXJtX2hpZ2hsaWdodCh+Y2xzcz1bXCJlcnItaG9sZVwiXSksIE0uZXJyb3JfaWRzKTtcblxuICBsZXQgYWxsID0gKHppcHBlciwgc2VsX3NlZykgPT5cbiAgICBMaXN0LmNvbmNhdChbXG4gICAgICBjYXJldCh6aXBwZXIpLFxuICAgICAgaW5kaWNhdGVkX3BpZWNlX2RlY28oemlwcGVyKSxcbiAgICAgIHNlbGVjdGVkX3BpZWNlcyh6aXBwZXIpLFxuICAgICAgYmFja3BhY2soemlwcGVyKSxcbiAgICAgIHRhcmdldHMnKHppcHBlci5iYWNrcGFjaywgc2VsX3NlZyksXG4gICAgICBlcnJfaG9sZXMoemlwcGVyKSxcbiAgICBdKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gTm9kZTtcblxubGV0IGdldF9nb2FsID0gKH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsIH50YXJnZXRfaWQsIGUpID0+IHtcbiAgbGV0IHJlY3QgPSBKc1V0aWwuZ2V0X2VsZW1fYnlfaWQodGFyZ2V0X2lkKSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuICBsZXQgZ29hbF94ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRYKTtcbiAgbGV0IGdvYWxfeSA9IGZsb2F0X29mX2ludChlIyMuY2xpZW50WSk7XG4gIE1lYXN1cmVkLlBvaW50LntcbiAgICByb3c6IEZsb2F0LnRvX2ludCgoZ29hbF95IC0uIHJlY3QjIy50b3ApIC8uIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0KSxcbiAgICBjb2w6XG4gICAgICBGbG9hdC4oXG4gICAgICAgIHRvX2ludChyb3VuZCgoZ29hbF94IC0uIHJlY3QjIy5sZWZ0KSAvLiBmb250X21ldHJpY3MuY29sX3dpZHRoKSlcbiAgICAgICksXG4gIH07XG59O1xuXG5sZXQgbW91c2Vkb3duX292ZXJsYXkgPSAofmluamVjdCwgfmZvbnRfbWV0cmljcywgfnRhcmdldF9pZCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFxuICAgICAgICBBdHRyLltcbiAgICAgICAgICBpZChcIm1vdXNlZG93bi1vdmVybGF5XCIpLFxuICAgICAgICAgIG9uX21vdXNldXAoXyA9PiBpbmplY3QoVXBkYXRlLlNldE1ldGEoTW91c2V1cCkpKSxcbiAgICAgICAgICBvbl9tb3VzZW1vdmUoZSA9PiB7XG4gICAgICAgICAgICBsZXQgZ29hbCA9IGdldF9nb2FsKH5mb250X21ldHJpY3MsIH50YXJnZXRfaWQsIGUpO1xuICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICBVcGRhdGUuUGVyZm9ybUFjdGlvbihTZWxlY3QoUmVzaXplKEdvYWwoUG9pbnQoZ29hbCkpKSkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgW10sXG4gICk7XG5cbmxldCBtb3VzZWRvd25faGFuZGxlciA9XG4gICAgKFxuICAgICAgfmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gJ2EsXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfnRhcmdldF9pZCxcbiAgICAgIH5tb3VzZWRvd25fdXBkYXRlcyxcbiAgICAgIGV2dCxcbiAgICApID0+XG4gIHN3aXRjaCAoSnNVdGlsLmN0cmxfaGVsZChldnQpLCBKc1V0aWwubnVtX2NsaWNrcyhldnQpKSB7XG4gIHwgKHRydWUsIF8pID0+XG4gICAgbGV0IGdvYWwgPSBnZXRfZ29hbCh+Zm9udF9tZXRyaWNzLCB+dGFyZ2V0X2lkLCBldnQpO1xuXG4gICAgbGV0IGV2ZW50cyA9IFtcbiAgICAgIGluamVjdChQZXJmb3JtQWN0aW9uKE1vdmUoR29hbChQb2ludChnb2FsKSkpKSksXG4gICAgICBpbmplY3QoUGVyZm9ybUFjdGlvbihKdW1wKEJpbmRpbmdTaXRlT2ZJbmRpY2F0ZWRWYXIpKSksXG4gICAgXTtcbiAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5NYW55KGV2ZW50cyk7XG4gIHwgKGZhbHNlLCAxKSA9PlxuICAgIGxldCBnb2FsID0gZ2V0X2dvYWwofmZvbnRfbWV0cmljcywgfnRhcmdldF9pZCwgZXZ0KTtcbiAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5NYW55KFxuICAgICAgTGlzdC5tYXAoXG4gICAgICAgIGluamVjdCxcbiAgICAgICAgVXBkYXRlLihcbiAgICAgICAgICBbU2V0TWV0YShNb3VzZWRvd24pXVxuICAgICAgICAgIEAgbW91c2Vkb3duX3VwZGF0ZXNcbiAgICAgICAgICBAIFtQZXJmb3JtQWN0aW9uKE1vdmUoR29hbChQb2ludChnb2FsKSkpKV1cbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgfCAoZmFsc2UsIDIpID0+IGluamVjdChQZXJmb3JtQWN0aW9uKFNlbGVjdChUaWxlKEN1cnJlbnQpKSkpXG4gIHwgKGZhbHNlLCAzIHwgXykgPT4gaW5qZWN0KFBlcmZvcm1BY3Rpb24oU2VsZWN0KFNtYXJ0KSkpXG4gIH07XG5cbmxldCBuYXJyYXRpdmVfY2VsbCA9IChjb250ZW50OiBOb2RlLnQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGxcIiksXG4gICAgW2Rpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGwtY2hhcHRlclwiKSwgW2NvbnRlbnRdKV0sXG4gICk7XG5cbmxldCBzaW1wbGVfY2VsbF9pdGVtID0gKGNvbnRlbnQ6IGxpc3QoTm9kZS50KSkgPT5cbiAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIl0pLCBjb250ZW50KTtcblxubGV0IGNhcHRpb24gPSAofnJlc3Q6IG9wdGlvbihzdHJpbmcpPT8sIGJvbGRlZDogc3RyaW5nKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzZXMoW1wiY2VsbC1jYXB0aW9uXCJdKV0pLFxuICAgIFtzdHJvbmcoW3RleHQoYm9sZGVkKV0pXSBAIChyZXN0IHw+IE9wdGlvbi5tYXAodGV4dCkgfD4gT3B0aW9uLnRvX2xpc3QpLFxuICApO1xuXG5sZXQgc2ltcGxlX2NlbGxfdmlldyA9IChpdGVtczogbGlzdCh0KSkgPT5cbiAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiY2VsbFwiKSwgaXRlbXMpO1xuXG5sZXQgdGVzdF9zdGF0dXNfaWNvbl92aWV3ID1cbiAgICAofmZvbnRfbWV0cmljcywgaW5zdHMsIG1zOiBNZWFzdXJlZC5TaGFyZHMudCk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKG1zKSB7XG4gIHwgWyhfLCB7b3JpZ2luOiBfLCBsYXN0fSksIC4uLl9dID0+XG4gICAgbGV0IHN0YXR1cyA9IGluc3RzIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzIHw+IFRlc3RTdGF0dXMudG9fc3RyaW5nO1xuICAgIGxldCBwb3MgPSBEZWNVdGlsLmFic19wb3NpdGlvbih+Zm9udF9tZXRyaWNzLCBsYXN0KTtcbiAgICBTb21lKFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLm1hbnkoW0F0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlc3VsdFwiLCBzdGF0dXNdKSwgcG9zXSksXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICApO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgdGVzdF9yZXN1bHRfbGF5ZXIgPVxuICAgICh+Zm9udF9tZXRyaWNzLCB+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudClcbiAgICA6IGxpc3QodCkgPT5cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgoaWQsIGluc3RzKSkgPT5cbiAgICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBtZWFzdXJlZC50aWxlcykpIHtcbiAgICAgIHwgU29tZShtcykgPT4gdGVzdF9zdGF0dXNfaWNvbl92aWV3KH5mb250X21ldHJpY3MsIGluc3RzLCBtcylcbiAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICB9LFxuICAgIHRlc3RfcmVzdWx0cy50ZXN0X21hcCxcbiAgKTtcblxubGV0IGRlY28gPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+c2hvd19iYWNrcGFja190YXJnZXRzLFxuICAgICAgfnNlbGVjdGVkLFxuICAgICAgfmVycm9yX2lkcyxcbiAgICAgIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIH5oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgICB7XG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgemlwcGVyLFxuICAgICAgICAgIG1ldGE6IHt0ZXJtX3Jhbmdlcywgc2VnbWVudCwgbWVhc3VyZWQsIHRlcm1zLCB0aWxlcywgX30sXG4gICAgICAgICAgXyxcbiAgICAgICAgfSxcbiAgICAgICAgXyxcbiAgICAgIH06IEVkaXRvci50LFxuICAgICkgPT4ge1xuICBtb2R1bGUgRGVjbyA9XG4gICAgRGVjby5EZWNvKHtcbiAgICAgIGxldCBtYXAgPSBtZWFzdXJlZDtcbiAgICAgIGxldCB0ZXJtcyA9IHRlcm1zO1xuICAgICAgbGV0IHRlcm1fcmFuZ2VzID0gdGVybV9yYW5nZXM7XG4gICAgICBsZXQgdGlsZXMgPSB0aWxlcztcbiAgICAgIGxldCBmb250X21ldHJpY3MgPSBmb250X21ldHJpY3M7XG4gICAgICBsZXQgc2hvd19iYWNrcGFja190YXJnZXRzID0gc2hvd19iYWNrcGFja190YXJnZXRzO1xuICAgICAgbGV0IGVycm9yX2lkcyA9IGVycm9yX2lkcztcbiAgICB9KTtcbiAgbGV0IGRlY29zID0gc2VsZWN0ZWQgPyBEZWNvLmFsbCh6aXBwZXIsIHNlZ21lbnQpIDogRGVjby5lcnJfaG9sZXMoemlwcGVyKTtcbiAgbGV0IGRlY29zID1cbiAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuICAgIHwgTm9uZSA9PiBkZWNvc1xuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICBkZWNvcyBAIHRlc3RfcmVzdWx0X2xheWVyKH5mb250X21ldHJpY3MsIH5tZWFzdXJlZCwgdGVzdF9yZXN1bHRzKSAvLyBUT0RPIG1vdmUgaW50byBkZWNvc1xuICAgIH07XG4gIHN3aXRjaCAoaGlnaGxpZ2h0cykge1xuICB8IFNvbWUoY29sb3JNYXApID0+XG4gICAgZGVjb3MgQCBEZWNvLmNvbG9yX2hpZ2hsaWdodHMoQ29sb3JTdGVwcy50b19saXN0KGNvbG9yTWFwKSlcbiAgfCBfID0+IGRlY29zXG4gIH07XG59O1xuXG5sZXQgZXJyb3JfbXNnID0gKGVycjogUHJvZ3JhbVJlc3VsdC5lcnJvcikgPT5cbiAgc3dpdGNoIChlcnIpIHtcbiAgfCBFdmF1bGF0b3JFcnJvcihlcnIpID0+IEV2YWx1YXRvckVycm9yLnNob3coZXJyKVxuICB8IFVua25vd25FeGNlcHRpb24oc3RyKSA9PiBzdHJcbiAgfCBUaW1lb3V0ID0+IFwiRXZhbHVhdGlvbiB0aW1lZCBvdXRcIlxuICB9O1xuXG5sZXQgc3RhdHVzX29mOiBQcm9ncmFtUmVzdWx0LnQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgUmVzdWx0UGVuZGluZyA9PiBcInBlbmRpbmdcIlxuICB8IFJlc3VsdE9rKF8pID0+IFwib2tcIlxuICB8IFJlc3VsdEZhaWwoXykgPT4gXCJmYWlsXCJcbiAgfCBPZmYoXykgPT4gXCJvZmZcIjtcblxubGV0IGxpdmVfZXZhbCA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZSBhcyB7Zm9udF9tZXRyaWNzLCBffTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+cmVzdWx0X2tleTogc3RyaW5nLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmxvY2tlZCxcbiAgICAgIHJlc3VsdDogTW9kZWxSZXN1bHQuZXZhbF9yZXN1bHQsXG4gICAgKSA9PiB7XG4gIG9wZW4gTm9kZTtcbiAgbGV0IGRoZXhwID1cbiAgICBzd2l0Y2ggKHJlc3VsdC5ldmFsdWF0aW9uLCByZXN1bHQucHJldmlvdXMpIHtcbiAgICB8IChSZXN1bHRPayhyZXMpLCBfKSA9PiBQcm9ncmFtUmVzdWx0LmdldF9kaGV4cChyZXMpXG4gICAgfCAoUmVzdWx0UGVuZGluZywgUmVzdWx0T2socmVzKSkgPT4gUHJvZ3JhbVJlc3VsdC5nZXRfZGhleHAocmVzKVxuICAgIHwgXyA9PiByZXN1bHQuZWxhYlxuICAgIH07XG4gIGxldCBkaGNvZGVfdmlldyA9XG4gICAgREhDb2RlLnZpZXcoXG4gICAgICB+bG9ja2VkLFxuICAgICAgfmluamVjdCxcbiAgICAgIH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZT1Ob25lLFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH53aWR0aD04MCxcbiAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgZGhleHAsXG4gICAgKTtcbiAgbGV0IGV4bl92aWV3ID1cbiAgICBzd2l0Y2ggKHJlc3VsdC5ldmFsdWF0aW9uKSB7XG4gICAgfCBSZXN1bHRGYWlsKGVycikgPT4gW1xuICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImVycm9yLW1zZ1wiXSksIFt0ZXh0KGVycm9yX21zZyhlcnIpKV0pLFxuICAgICAgXVxuICAgIHwgXyA9PiBbXVxuICAgIH07XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0pLFxuICAgIGV4bl92aWV3XG4gICAgQCBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJzdGF0dXNcIiwgc3RhdHVzX29mKHJlc3VsdC5ldmFsdWF0aW9uKV0pLFxuICAgICAgICBbXG4gICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJzcGlubmVyXCJdKSwgW10pLFxuICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiZXFcIl0pLCBbdGV4dChcIuKJoVwiKV0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInJlc3VsdFwiLCBzdGF0dXNfb2YocmVzdWx0LmV2YWx1YXRpb24pXSksXG4gICAgICAgIFtkaGNvZGVfdmlld10sXG4gICAgICApLFxuICAgICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9XCJTaG93IFN0ZXBwZXJcIiwgXCJzXCIsIGZhbHNlLCBfID0+XG4gICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uVG9nZ2xlU3RlcHBlcihyZXN1bHRfa2V5KSlcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBmb290ZXIgPVxuICAgIChcbiAgICAgIH5sb2NrZWQsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlIGFzIHtmb250X21ldHJpY3MsIF99IGFzIHVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5yZXN1bHQ6IE1vZGVsUmVzdWx0LnQsXG4gICAgICB+cmVzdWx0X2tleSxcbiAgICApID0+XG4gIHN3aXRjaCAocmVzdWx0KSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5jb3JlLmR5bmFtaWNzID0+IFtdXG4gIHwgTm9FbGFiID0+IFtdXG4gIHwgRXZhbHVhdGlvbihyZXN1bHQpID0+IFtcbiAgICAgIGxpdmVfZXZhbCh+bG9ja2VkLCB+aW5qZWN0LCB+dWlfc3RhdGUsIH5zZXR0aW5ncywgfnJlc3VsdF9rZXksIHJlc3VsdCksXG4gICAgXVxuICB8IFN0ZXBwZXIocykgPT5cbiAgICBTdGVwcGVyVmlldy5zdGVwcGVyX3ZpZXcoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnNldHRpbmdzPXNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+cmVzdWx0X2tleSxcbiAgICAgIHMsXG4gICAgKVxuICB9O1xuXG5sZXQgZWRpdG9yX3ZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUgYXNcbiAgICAgICAge2ZvbnRfbWV0cmljcywgc2hvd19iYWNrcGFja190YXJnZXRzLCBtb3VzZWRvd24sIF99OiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH50YXJnZXRfaWQ6IHN0cmluZyxcbiAgICAgIH5tb3VzZWRvd25fdXBkYXRlczogbGlzdChVcGRhdGUudCk9W10sXG4gICAgICB+c2VsZWN0ZWQ6IGJvb2w9dHJ1ZSxcbiAgICAgIH5sb2NrZWQ9ZmFsc2UsXG4gICAgICB+Y2FwdGlvbjogb3B0aW9uKE5vZGUudCk9PyxcbiAgICAgIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIH5mb290ZXI6IG9wdGlvbihsaXN0KE5vZGUudCkpPT8sXG4gICAgICB+aGlnaGxpZ2h0czogb3B0aW9uKENvbG9yU3RlcHMuY29sb3JNYXApLFxuICAgICAgfm92ZXJsYXllcjogb3B0aW9uKE5vZGUudCk9Tm9uZSxcbiAgICAgIH5lcnJvcl9pZHM6IGxpc3QoSWQudCksXG4gICAgICB+c29ydD1Tb3J0LnJvb3QsXG4gICAgICBlZGl0b3I6IEVkaXRvci50LFxuICAgICkgPT4ge1xuICBsZXQgY29kZV90ZXh0X3ZpZXcgPSBDb2RlLnZpZXcofnNvcnQsIH5mb250X21ldHJpY3MsIH5zZXR0aW5ncywgZWRpdG9yKTtcbiAgbGV0IGRlY29fdmlldyA9XG4gICAgZGVjbyhcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+c2hvd19iYWNrcGFja190YXJnZXRzLFxuICAgICAgfnNlbGVjdGVkLFxuICAgICAgfmVycm9yX2lkcyxcbiAgICAgIH50ZXN0X3Jlc3VsdHMsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIGVkaXRvcixcbiAgICApO1xuICBsZXQgY29kZV92aWV3ID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtBdHRyLmlkKHRhcmdldF9pZCksIEF0dHIuY2xhc3NlcyhbXCJjb2RlLWNvbnRhaW5lclwiXSldKSxcbiAgICAgIFtjb2RlX3RleHRfdmlld10gQCBkZWNvX3ZpZXcgQCBPcHRpb24udG9fbGlzdChvdmVybGF5ZXIpLFxuICAgICk7XG4gIGxldCBtb3VzZWRvd25fb3ZlcmxheSA9XG4gICAgc2VsZWN0ZWQgJiYgbW91c2Vkb3duXG4gICAgICA/IFttb3VzZWRvd25fb3ZlcmxheSh+aW5qZWN0LCB+Zm9udF9tZXRyaWNzLCB+dGFyZ2V0X2lkKV0gOiBbXTtcbiAgbGV0IG9uX21vdXNlZG93biA9XG4gICAgbG9ja2VkXG4gICAgICA/IF8gPT5cbiAgICAgICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC4oTWFueShbUHJldmVudF9kZWZhdWx0LCBTdG9wX3Byb3BhZ2F0aW9uXSkpXG4gICAgICA6IG1vdXNlZG93bl9oYW5kbGVyKFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICB+dGFyZ2V0X2lkLFxuICAgICAgICAgIH5tb3VzZWRvd25fdXBkYXRlcyxcbiAgICAgICAgKTtcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgXCJjZWxsXCIsXG4gICAgICAgIHNlbGVjdGVkID8gXCJzZWxlY3RlZFwiIDogXCJkZXNlbGVjdGVkXCIsXG4gICAgICAgIGxvY2tlZCA/IFwibG9ja2VkXCIgOiBcInVubG9ja2VkXCIsXG4gICAgICBdKSxcbiAgICBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCJdKSxcbiAgICAgICAgICAgIEF0dHIub25fbW91c2Vkb3duKG9uX21vdXNlZG93biksXG4gICAgICAgICAgXSksXG4gICAgICAgIE9wdGlvbi50b19saXN0KGNhcHRpb24pIEAgbW91c2Vkb3duX292ZXJsYXkgQCBbY29kZV92aWV3XSxcbiAgICAgICksXG4gICAgXVxuICAgIEAgKGZvb3RlciB8PiBPcHRpb24udG9fbGlzdCB8PiBMaXN0LmNvbmNhdCksXG4gICk7XG59O1xuXG5sZXQgcmVwb3J0X2Zvb3Rlcl92aWV3ID0gY29udGVudCA9PiB7XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXBvcnRcIl0pLCBjb250ZW50KTtcbn07XG5cbmxldCB0ZXN0X3JlcG9ydF9mb290ZXJfdmlldyA9ICh+aW5qZWN0LCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgcmVwb3J0X2Zvb3Rlcl92aWV3KFtUZXN0Vmlldy50ZXN0X3N1bW1hcnkofmluamVjdCwgfnRlc3RfcmVzdWx0cyldKTtcbn07XG5cbmxldCBwYW5lbCA9ICh+Y2xhc3Nlcz1bXSwgY29udGVudCwgfmZvb3Rlcjogb3B0aW9uKHQpKSA9PiB7XG4gIHNpbXBsZV9jZWxsX3ZpZXcoXG4gICAgW2Rpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwicGFuZWxcIl0gQCBjbGFzc2VzKSwgY29udGVudCldXG4gICAgQCBPcHRpb24udG9fbGlzdChmb290ZXIpLFxuICApO1xufTtcblxubGV0IHRpdGxlX2NlbGwgPSB0aXRsZSA9PiB7XG4gIHNpbXBsZV9jZWxsX3ZpZXcoW1xuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGl0bGUtY2VsbFwiKSxcbiAgICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJ0aXRsZS10ZXh0XCIpLCBbdGV4dCh0aXRsZSldKV0sXG4gICAgKSxcbiAgXSk7XG59O1xuXG4vKiBBbiBlZGl0b3IgdmlldyB0aGF0IGlzIG5vdCBzZWxlY3RhYmxlIG9yIGVkaXRhYmxlLFxuICogYW5kIGRvZXMgbm90IHNob3cgZXJyb3IgaG9sZXMgb3IgdGVzdCByZXN1bHRzLlxuICogVXNlZCBpbiBEb2NzIHRvIGRpc3BsYXkgdGhlIGhlYWRlciBleGFtcGxlICovXG5sZXQgbG9ja2VkX25vX3N0YXRpY3MgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUsXG4gICAgICB+c2VnbWVudCxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfnNvcnQsXG4gICAgICB+ZXhwYW5kZXJfZGVjbyxcbiAgICAgIH50YXJnZXRfaWQsXG4gICAgKSA9PiBbXG4gIGVkaXRvcl92aWV3KFxuICAgIH5sb2NrZWQ9dHJ1ZSxcbiAgICB+c2VsZWN0ZWQ9ZmFsc2UsXG4gICAgfmhpZ2hsaWdodHMsXG4gICAgfmluamVjdCxcbiAgICB+dWlfc3RhdGUsXG4gICAgfnNldHRpbmdzLFxuICAgIH50YXJnZXRfaWQsXG4gICAgfmZvb3Rlcj1bXSxcbiAgICB+dGVzdF9yZXN1bHRzPU5vbmUsXG4gICAgfmVycm9yX2lkcz1bXSxcbiAgICB+b3ZlcmxheWVyPVNvbWUoZXhwYW5kZXJfZGVjbyksXG4gICAgfnNvcnQsXG4gICAgc2VnbWVudCB8PiBaaXBwZXIudW56aXAgfD4gRWRpdG9yLmluaXQofnJlYWRfb25seT10cnVlKSxcbiAgKSxcbl07XG5cbi8qIEFuIGVkaXRvciB2aWV3IHRoYXQgaXMgbm90IHNlbGVjdGFibGUgb3IgZWRpdGFibGUsXG4gKiBidXQgZG9lcyBzaG93IHN0YXRpYyBlcnJvcnMsIHRlc3QgcmVzdWx0cywgYW5kIGxpdmUgdmFsdWVzLlxuICogVXNlZCBpbiBEb2NzIGZvciBleGFtcGxlcyAqL1xubGV0IGxvY2tlZCA9XG4gICAgKFxuICAgICAgfnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmluamVjdCxcbiAgICAgIH50YXJnZXRfaWQsXG4gICAgICB+c2VnbWVudDogU2VnbWVudC50LFxuICAgICkgPT4ge1xuICBsZXQgZWRpdG9yID0gc2VnbWVudCB8PiBaaXBwZXIudW56aXAgfD4gRWRpdG9yLmluaXQofnJlYWRfb25seT10cnVlKTtcbiAgbGV0IHN0YXRpY3MgPVxuICAgIHNldHRpbmdzLmNvcmUuc3RhdGljc1xuICAgICAgPyBTY3JhdGNoU2xpZGUubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvciwgQnVpbHRpbnMuY3R4X2luaXQpXG4gICAgICA6IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljcztcbiAgbGV0IGVsYWIgPVxuICAgIHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlIHx8IHNldHRpbmdzLmNvcmUuZHluYW1pY3NcbiAgICAgID8gSW50ZXJmYWNlLmVsYWJvcmF0ZShcbiAgICAgICAgICB+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSxcbiAgICAgICAgICBzdGF0aWNzLmluZm9fbWFwLFxuICAgICAgICAgIGVkaXRvci5zdGF0ZS5tZXRhLnZpZXdfdGVybSxcbiAgICAgICAgKVxuICAgICAgOiBESEV4cC5Cb29sTGl0KHRydWUpO1xuICBsZXQgcmVzdWx0OiBNb2RlbFJlc3VsdC50ID1cbiAgICBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzXG4gICAgICA/IEV2YWx1YXRpb24oe1xuICAgICAgICAgIGVsYWIsXG4gICAgICAgICAgZXZhbHVhdGlvbjogSW50ZXJmYWNlLmV2YWx1YXRlKH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLCBlbGFiKSxcbiAgICAgICAgICBwcmV2aW91czogUmVzdWx0UGVuZGluZyxcbiAgICAgICAgfSlcbiAgICAgIDogTm9FbGFiO1xuICBsZXQgZm9vdGVyID1cbiAgICBzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSB8fCBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzXG4gICAgICA/IGZvb3RlcihcbiAgICAgICAgICB+bG9ja2VkPXRydWUsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5yZXN1bHRfa2V5PXRhcmdldF9pZCxcbiAgICAgICAgICB+cmVzdWx0LFxuICAgICAgICApXG4gICAgICA6IFtdO1xuICBlZGl0b3JfdmlldyhcbiAgICB+bG9ja2VkPXRydWUsXG4gICAgfnNlbGVjdGVkPWZhbHNlLFxuICAgIH5oaWdobGlnaHRzPU5vbmUsXG4gICAgfmluamVjdCxcbiAgICB+dWlfc3RhdGUsXG4gICAgfnNldHRpbmdzLFxuICAgIH50YXJnZXRfaWQsXG4gICAgfmZvb3RlcixcbiAgICB+dGVzdF9yZXN1bHRzPU1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhyZXN1bHQpLFxuICAgIH5lcnJvcl9pZHM9c3RhdGljcy5lcnJvcl9pZHMsXG4gICAgZWRpdG9yLFxuICApO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG50eXBlIHN0YXRlID0gKElkLnQsIEVkaXRvci50KTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICB+cmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gICAgICB+cmVzdWx0X2tleSxcbiAgICAgIH5zdGF0aWNzIGFzIHtlcnJvcl9pZHMsIF99OiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MsXG4gICAgICBlZGl0b3I6IEVkaXRvci50LFxuICAgICkgPT4ge1xuICBsZXQgcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCByZXN1bHRfa2V5KTtcbiAgbGV0IHRlc3RfcmVzdWx0cyA9IFV0aWwuT3B0VXRpbC5hbmRfdGhlbihNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMsIHJlc3VsdCk7XG4gIGxldCB0YXJnZXRfaWQgPSBcImNvZGUtY29udGFpbmVyXCI7XG4gIGxldCBmb290ZXIgPVxuICAgIHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlIHx8IHNldHRpbmdzLmNvcmUuZHluYW1pY3NcbiAgICAgID8gcmVzdWx0XG4gICAgICAgIHw+IE9wdGlvbi5tYXAocmVzdWx0ID0+XG4gICAgICAgICAgICAgQ2VsbC5mb290ZXIoXG4gICAgICAgICAgICAgICB+bG9ja2VkPWZhbHNlLFxuICAgICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICAgICAgIH5yZXN1bHQsXG4gICAgICAgICAgICAgICB+cmVzdWx0X2tleSxcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIClcbiAgICAgIDogTm9uZTtcbiAgW1xuICAgIENlbGwuZWRpdG9yX3ZpZXcoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfnRhcmdldF9pZCxcbiAgICAgIH5lcnJvcl9pZHMsXG4gICAgICB+dGVzdF9yZXN1bHRzLFxuICAgICAgfmZvb3Rlcj8sXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIGVkaXRvcixcbiAgICApLFxuICBdO1xufTtcblxubGV0IGV4cG9ydF9idXR0b24gPSBzdGF0ZSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgbGV0IGpzb25fZGF0YSA9IFNjcmF0Y2hTbGlkZS5leHBvcnQoc3RhdGUpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX2pzb24oXCJoYXplbC1zY3JhdGNocGFkXCIsIGpzb25fZGF0YSk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBTY3JhdGNocGFkXCIsXG4gICk7XG5sZXQgaW1wb3J0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZChcbiAgICBcImltcG9ydC1zY3JhdGNocGFkXCIsXG4gICAgSWNvbnMuc3RhcixcbiAgICBmaWxlID0+IHtcbiAgICAgIHN3aXRjaCAoZmlsZSkge1xuICAgICAgfCBOb25lID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZVxuICAgICAgfCBTb21lKGZpbGUpID0+IGluamVjdChVcGRhdGVBY3Rpb24uSW5pdEltcG9ydFNjcmF0Y2hwYWQoZmlsZSkpXG4gICAgICB9XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkltcG9ydCBTY3JhdGNocGFkXCIsXG4gICk7XG5cbmxldCByZXNldF9idXR0b24gPSBpbmplY3QgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMudHJhc2gsXG4gICAgXyA9PiB7XG4gICAgICBsZXQgY29uZmlybWVkID1cbiAgICAgICAgSnNVdGlsLmNvbmZpcm0oXG4gICAgICAgICAgXCJBcmUgeW91IFNVUkUgeW91IHdhbnQgdG8gcmVzZXQgdGhpcyBzY3JhdGNocGFkPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlLlwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlJlc2V0Q3VycmVudEVkaXRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgICB9O1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJSZXNldCBTY3JhdGNocGFkXCIsXG4gICk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFF1ZXJ5Q29tbWFuZDtcblxubW9kdWxlIEV4ZWN1dGlvblBsYW4gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdChRdWVyeUNvbW1hbmQudCk7XG59O1xuXG5tb2R1bGUgUXVlcnlSZXN1bHQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXh0b2JqZWN0ID1cbiAgICB8IFRlcm0oVGVybS50KVxuICAgIHwgSW5mbyhJbmZvLnQpXG4gICAgfCBUeXBlKFR5cC50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICByZXN1bHQ6IHN0cmluZyxcbiAgICB0X29iamVjdDogb3B0aW9uKHRleHRvYmplY3QpLFxuICB9O1xuXG4gIGxldCBlbXB0eSA9IHtyZXN1bHQ6IFwibm90aGluZ1wiLCB0X29iamVjdDogTm9uZX07XG4gIGxldCBlcnJvciA9IChtc2c6IHN0cmluZykgPT4ge3Jlc3VsdDogbXNnLCB0X29iamVjdDogTm9uZX07XG5cbiAgbGV0IG1rID0gKHJlc3VsdCwgdF9vYmplY3QpOiB0ID0+IHtcbiAgICB7cmVzdWx0LCB0X29iamVjdH07XG4gIH07XG59O1xuXG5sZXQgZXhlY3V0ZSA9IChwbGFuOiBFeGVjdXRpb25QbGFuLnQsIGVkaXRvcjogRWRpdG9yLnQpOiBRdWVyeVJlc3VsdC50ID0+IHtcbiAgc3dpdGNoIChwbGFuLCBlZGl0b3IpIHtcbiAgfCBfID0+IHtyZXN1bHQ6IFwibm90aGluZ1wiLCB0X29iamVjdDogTm9uZX1cbiAgfTtcbn07XG5cbmxldCBleGVjdXRlX2NvbW1hbmQgPSAvLyBUT0RPOiBjaGFuZ2UgdGhlIGlucHV0IHRvIHppcHBlciBhbmQgaW5mb19tYXBcbiAgICAoXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+Y3R4X2luaXQsXG4gICAgICBjb21tYW5kOiBRdWVyeUNvbW1hbmQudCxcbiAgICAgIHJlc3VsdDogUXVlcnlSZXN1bHQudCxcbiAgICAgIGVkaXRvcjogRWRpdG9yLnQsXG4gICAgKVxuICAgIDogUXVlcnlSZXN1bHQudCA9PiB7XG4gIHN3aXRjaCAoY29tbWFuZCwgcmVzdWx0KSB7XG4gIHwgKFNlbGVjdChUZXJtKSwgXykgPT5cbiAgICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBsZXQgKHRlcm0sIF8pID0gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbSh6aXBwZXIpO1xuICAgIGxldCBpbmZvX21hcCA9XG4gICAgICBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0LCB0ZXJtKTtcbiAgICBzd2l0Y2ggKHppcHBlci5iYWNrcGFjaywgSW5kaWNhdGVkLmluZGV4KHppcHBlcikpIHtcbiAgICB8IF8gd2hlbiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+IFF1ZXJ5UmVzdWx0LmVtcHR5XG4gICAgfCBfIHdoZW4gSWQuTWFwLmlzX2VtcHR5KGluZm9fbWFwKSA9PlxuICAgICAgUXVlcnlSZXN1bHQuZXJyb3IoXCJObyBTdGF0aWMgaW5mb3JtYXRpb24gYXZhaWxhYmxlXCIpXG4gICAgfCAoXywgTm9uZSkgPT4gUXVlcnlSZXN1bHQuZXJyb3IoXCJObyBjdXJzb3IgaW4gcHJvZ3JhbVwiKVxuICAgIHwgKF8sIFNvbWUoaWQpKSA9PlxuICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIGluZm9fbWFwKSkge1xuICAgICAgfCBOb25lID0+IFF1ZXJ5UmVzdWx0LmVycm9yKFwiV2hpdGVzcGFjZSBvciBDb21tZW50XCIpXG4gICAgICB8IFNvbWUoY2kpID0+IFF1ZXJ5UmVzdWx0Lm1rKFwiaW5mb1wiLCBTb21lKFF1ZXJ5UmVzdWx0LkluZm8oY2kpKSkgLy9UT0RPOiByZXR1cm4gdGhlIHJlc3VsdCBpbnN0ZWFkIG9mIFwiaW5mb1wiXG4gICAgICB9XG4gICAgfTtcbiAgfCAoUXVlcnkoVHlwZSksIF8pID0+XG4gICAgbGV0IG9jaSA9XG4gICAgICBzd2l0Y2ggKHJlc3VsdC50X29iamVjdCkge1xuICAgICAgfCBTb21lKFF1ZXJ5UmVzdWx0LkluZm8oY2kpKSA9PiBTb21lKGNpKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH07XG4gICAgc3dpdGNoIChvY2kpIHtcbiAgICB8IFNvbWUoSW5mb0V4cChlKSkgPT5cbiAgICAgIFF1ZXJ5UmVzdWx0Lm1rKFwidHlwZVwiLCBTb21lKFF1ZXJ5UmVzdWx0LlR5cGUoZS50eSkpKSAvL1RPRE86IHJldHVybiB0aGUgcmVzdWx0IGluc3RlYWQgb2YgXCJ0eXBlXCJcbiAgICB8IFNvbWUoSW5mb1BhdChwKSkgPT5cbiAgICAgIFF1ZXJ5UmVzdWx0Lm1rKFwidHlwZVwiLCBTb21lKFF1ZXJ5UmVzdWx0LlR5cGUocC50eSkpKSAvL1RPRE86IHJldHVybiB0aGUgcmVzdWx0IGluc3RlYWQgb2YgXCJ0eXBlXCJcbiAgICB8IFNvbWUoSW5mb1R5cCh0KSkgPT5cbiAgICAgIFF1ZXJ5UmVzdWx0Lm1rKFwidHlwZVwiLCBTb21lKFF1ZXJ5UmVzdWx0LlR5cGUodC50eSkpKSAvL1RPRE86IHJldHVybiB0aGUgcmVzdWx0IGluc3RlYWQgb2YgXCJ0eXBlXCJcbiAgICB8IF8gPT4gUXVlcnlSZXN1bHQuZXJyb3IoXCJObyB0eXBlIGluZm9ybWF0aW9uIGF2YWlsYWJsZVwiKVxuICAgIH07XG4gIHwgXyA9PiBRdWVyeVJlc3VsdC5lbXB0eVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY291bnQgPSBvcHRpb24oaW50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ZXh0X29iamVjdF9rZXkgPVxuICB8IFRlcm0gLy8gd1xuICB8IFBhcmVudGhlc2lzOyAvLyAoKVxuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbl9rZXkgPVxuICB8IE1vdmU7IC8vIG1cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBxdWVyeV9kZWNvcmF0aW9uID1cbiAgfCBEZWZpbml0aW9uOyAvLyBkXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcXVlcnlfa2V5ID1cbiAgfCBUeXBlIC8vIHRcbiAgfCBSZWFkOyAvLyByXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcXVlcnlfb3AgPSAob3B0aW9uKHF1ZXJ5X2RlY29yYXRpb24pLCBxdWVyeV9rZXkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHF1ZXJ5ID0gKHRleHRfb2JqZWN0LCBxdWVyeV9vcClcbmFuZCB0ZXh0X29iamVjdCA9XG4gIHwgSW5uZXIodGV4dF9vYmplY3Rfa2V5KSAvLyBpXG4gIHwgUXVlcmllZChxdWVyeSk7IC8vIHFcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhY3Rpb24gPSAodGV4dF9vYmplY3QsIGFjdGlvbl9rZXkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNvbW1hbmQgPVxuICB8IEFjdGlvbihhY3Rpb24pXG4gIHwgUXVlcnkocXVlcnkpO1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxuLyogKEEpIFVzZSB0aGlzIGZpbGUgYXMgYW4gZXhhbXBsZSBmb3IgYWRkaW5nIGEgbmV3IGZvcm0gdG8gRXhwbGFpblRoaXMuXG4gKiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gY29weS1wYXN0ZSB0aGlzIGZpbGUgYW5kIG1vZGlmeSBpdCB0byBhZGQgYSBuZXcgZm9ybSAqL1xuXG5sZXQgc2luZ2xlID0gKH5hcmdfaWQ6IElkLnQsIH5mbl9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgLyogKEIpIFlvdSdsbCBuZWVkIHRvIGFkZCBuZXcgY2FzZXMgdG8gRXhwbGFpblRoaXNGb3JtLnJlIGZvciB0aGUgbmV3IGZvcm1cbiAgICogdG8gcmVwcmVzZW50IGEgZ3JvdXBfaWQgYW5kIGZvcm1faWQuIFRoaXMgU2ltcGxlIHN0eWxlIGlzIHNwZWNpYWxpemVkXG4gICAqIHRvIHNpbmdsZXRvbiBncm91cHMuIEluIGdlbmVyYWwsIHRoZSBncm91cF9pZCBuZWVkcyB0byBiZSB1bmlxdWUsIGFuZFxuICAgKiBmb3JtX2lkcyBuZWVkIHRvIGJlIHVuaXF1ZSB3aXRoaW4gYSBncm91cC4gVGhlc2UgaWRzIGFyZSB1c2VkIHRvIHRyYWNrXG4gICAqIEV4cGxhaW5UaGlzIHBlcnNpc3RlbnQgc3RhdGUuICovXG4gIGdyb3VwX2lkOiBQaXBlbGluZUV4cCxcbiAgZm9ybV9pZDogUGlwZWxpbmVFeHAsXG4gIC8qIChDKSBUaGUgYWJzdHJhY3QgZmllbGQgZGVmaW5lcyBhbiBhYnN0cmFjdCBleGFtcGxlIGlsbHVzdHJhdGluZyB0aGVcbiAgICogbmV3IGZvcm0uIFlvdSdsbCBuZWVkIHRvIHByb3ZpZGUgcGFpcnMgYXNzb2NpYXRpbmcgYW55IHJlcHJlc2VudGF0aXZlXG4gICAqIHN1YnRlcm1zIG9mIHRoZSBleGVtcGxhciAoZS5nLiBcImVfYXJnXCIgYW5kIFwiZV9mdW5cIiBiZWxvdykgd2l0aCB0aGVcbiAgICogY29uY3JldGUgc3VidGVybXMgb2YgdGhlIHRlcm0gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIChoZXJlLCBhcmdfaWRcbiAgICogYW5kIGZuX2lkKS4gWW91J2xsIHRoZW4gbmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIHNlZ21lbnRcbiAgICogcmVwcmVzZW50aW5nIHlvdXIgYWJzdHJhY3QuIFRoaXMgaXMgZG9uZSBpbiB0aGlzIGluZGlyZWN0IHdheSBzb1xuICAgKiBhcyB0byBhc3NvY2lhdGUgcmVwcmVzZW50YXRpdmUgYW5kIGNvbmNyZXRlIHN1YnRlcm1zIGlkcyBmb3JcbiAgICogc3ludGF4IGhpZ2hsaWdodGluZyBwdXJwb3Nlcy4gKi9cbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwiZV9hcmdcIiwgYXJnX2lkKSwgKFwiZV9mdW5cIiwgZm5faWQpLCAoZV9hcmcnLCBlX2ZuJykgPT5cbiAgICAgIFtlX2FyZycsIHNwYWNlKCksIHBpcGVsaW5lKCksIHNwYWNlKCksIGVfZm4nXVxuICAgICksXG4gIC8qIChEKSBUaGUgZXhwbGFuYXRpb24gd2hpY2ggd2lsbCBhcHBlYXIgaW4gdGhlIHNpZGViYXIgYmVsb3cgdGhlIGFic3RyYWN0ICovXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJQYXNzZXMgdGhlIFsqYXJndW1lbnQqXSglcykgdG8gdGhlIFsqZnVuY3Rpb24qXSglcykuXCIsXG4gICAgICBhcmdfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgZm5faWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIC8qIChFKSBBZGRpdGlvbmFsIG1vcmUgY29uY3JldGUgZXhhbXBsZXMgYW5kIGFzc29jaWF0ZWQgZXhwbGFuYXRpb25zICovXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBQaXBlbGluZTEsXG4gICAgICB0ZXJtOiBta19leGFtcGxlKFwiMSB8PiBmdW4geCAtPiB4ICsgMVwiKSxcbiAgICAgIG1lc3NhZ2U6IHt8XG4gICAgICAgICAgICAgIFRoZSBhcmd1bWVudCAxIGlzIHBhc3NlZCB0byBhbiBpbmNyZW1lbnQgZnVuY3Rpb24sIGFuZCB0aGUgZW50aXJlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXG4gICAgICAgICAgICAgIFRoZSBwaXBlbGluZSBvcGVyYXRvciBpcyB1c2VmdWwgZm9yIGNoYWluaW5nIGZ1bmN0aW9ucyB0b2dldGhlci5cbiAgICAgICAgICAgICAgfH0sXG4gICAgfSxcbiAgXSxcbn07XG4iLCJcbm1vZHVsZSBNZW5oaXJCYXNpY3MgPSBzdHJ1Y3RcbiAgXG4gIGV4Y2VwdGlvbiBFcnJvclxuICBcbiAgbGV0IF9lUlIgPVxuICAgIGZ1biBfcyAtPlxuICAgICAgcmFpc2UgRXJyb3JcbiAgXG4gIHR5cGUgdG9rZW4gPSBcbiAgICB8IFRFWFRfT0JKRUNUX1FVRVJZXG4gICAgfCBURVhUX09CSkVDVF9LRVkgb2YgKFxuIyA2IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgKFF1ZXJ5QXN0LnRleHRfb2JqZWN0X2tleSlcbiMgMTYgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICApXG4gICAgfCBURVhUX09CSkVDVF9JTk5FUlxuICAgIHwgUVVFUllfS0VZIG9mIChcbiMgOSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgIChRdWVyeUFzdC5xdWVyeV9rZXkpXG4jIDIyIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sXCJcbiAgKVxuICAgIHwgUVVFUllfREVDT1JBVElPTiBvZiAoXG4jIDggXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgICAgICAoUXVlcnlBc3QucXVlcnlfZGVjb3JhdGlvbilcbiMgMjcgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICApXG4gICAgfCBFT0ZcbiAgICB8IERJR0lUUyBvZiAoXG4jIDUgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgICAgICAoaW50KVxuIyAzMyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gIClcbiAgICB8IEFDVElPTl9LRVkgb2YgKFxuIyA3IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgKFF1ZXJ5QXN0LmFjdGlvbl9rZXkpXG4jIDM4IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sXCJcbiAgKVxuICBcbmVuZFxuXG5pbmNsdWRlIE1lbmhpckJhc2ljc1xuXG4jIDEgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgXG5vcGVuIFF1ZXJ5QXN0XG5cbiMgNDkgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuXG50eXBlICgncywgJ3IpIF9tZW5oaXJfc3RhdGUgPSBcbiAgfCBNZW5oaXJTdGF0ZTAwIDogKCdzLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX3N0YXRlXG4gICAgKCoqIFN0YXRlIDAwLlxuICAgICAgICBTdGFjayBzaGFwZSA6IC5cbiAgICAgICAgU3RhcnQgc3ltYm9sOiBtYWluLiAqKVxuXG4gIHwgTWVuaGlyU3RhdGUwMSA6ICgoJ3MsIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfY2VsbDFfVEVYVF9PQkpFQ1RfUVVFUlksIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGVcbiAgICAoKiogU3RhdGUgMDEuXG4gICAgICAgIFN0YWNrIHNoYXBlIDogVEVYVF9PQkpFQ1RfUVVFUlkuXG4gICAgICAgIFN0YXJ0IHN5bWJvbDogbWFpbi4gKilcblxuXG5hbmQgKCdzLCAncikgX21lbmhpcl9jZWxsMV90ZXh0X29iamVjdCA9IFxuICB8IE1lbmhpckNlbGwxX3RleHRfb2JqZWN0IG9mICdzICogKCdzLCAncikgX21lbmhpcl9zdGF0ZSAqIChRdWVyeUFzdC50ZXh0X29iamVjdClcblxuYW5kICgncywgJ3IpIF9tZW5oaXJfY2VsbDFfVEVYVF9PQkpFQ1RfUVVFUlkgPSBcbiAgfCBNZW5oaXJDZWxsMV9URVhUX09CSkVDVF9RVUVSWSBvZiAncyAqICgncywgJ3IpIF9tZW5oaXJfc3RhdGVcblxuYW5kIF9tZW5oaXJfYm94X21haW4gPSBcbiAgfCBNZW5oaXJCb3hfbWFpbiBvZiAoUXVlcnlBc3QuY29tbWFuZCkgW0BAdW5ib3hlZF1cblxubGV0IF9tZW5oaXJfYWN0aW9uXzEgPVxuICBmdW4gXzEgXzIgLT5cbiAgICAoXG4jIDIzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSwgXzIpIClcbiMgNzcgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICAgICA6IChRdWVyeUFzdC5hY3Rpb24pKVxuXG5sZXQgX21lbmhpcl9hY3Rpb25fMiA9XG4gIGZ1biBfMSAtPlxuICAgIChcbiMgMTkgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICggQWN0aW9uKF8xKSApXG4jIDg1IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sXCJcbiAgICAgOiAoUXVlcnlBc3QuY29tbWFuZCkpXG5cbmxldCBfbWVuaGlyX2FjdGlvbl8zID1cbiAgZnVuIF8xIC0+XG4gICAgKFxuIyAyMCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoIFF1ZXJ5KF8xKSApXG4jIDkzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1sXCJcbiAgICAgOiAoUXVlcnlBc3QuY29tbWFuZCkpXG5cbmxldCBfbWVuaGlyX2FjdGlvbl80ID1cbiAgZnVuIF8xIF8yIC0+XG4gICAgKFxuIyAzMCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLCBfMikgKVxuIyAxMDEgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICAgICA6IChRdWVyeUFzdC5xdWVyeSkpXG5cbmxldCBfbWVuaGlyX2FjdGlvbl81ID1cbiAgZnVuIF8xIC0+XG4gICAgKFxuIyAzMyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoIChOb25lLCBfMSkgKVxuIyAxMDkgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICAgICA6IChRdWVyeUFzdC5xdWVyeV9vcCkpXG5cbmxldCBfbWVuaGlyX2FjdGlvbl82ID1cbiAgZnVuIF8xIF8yIC0+XG4gICAgKFxuIyAzNCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKFNvbWUoXzEpLCBfMikgKVxuIyAxMTcgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9wYXJzZXIubWxcIlxuICAgICA6IChRdWVyeUFzdC5xdWVyeV9vcCkpXG5cbmxldCBfbWVuaGlyX2FjdGlvbl83ID1cbiAgZnVuIF8yIC0+XG4gICAgKFxuIyAyNiBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIElubmVyKF8yKSApXG4jIDEyNSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gICAgIDogKFF1ZXJ5QXN0LnRleHRfb2JqZWN0KSlcblxubGV0IF9tZW5oaXJfYWN0aW9uXzggPVxuICBmdW4gXzIgLT5cbiAgICAoXG4jIDI3IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBRdWVyaWVkKF8yKSApXG4jIDEzMyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL3BhcnNlci5tbFwiXG4gICAgIDogKFF1ZXJ5QXN0LnRleHRfb2JqZWN0KSlcblxubGV0IF9tZW5oaXJfcHJpbnRfdG9rZW4gOiB0b2tlbiAtPiBzdHJpbmcgPVxuICBmdW4gX3RvayAtPlxuICAgIG1hdGNoIF90b2sgd2l0aFxuICAgIHwgQUNUSU9OX0tFWSBfIC0+XG4gICAgICAgIFwiQUNUSU9OX0tFWVwiXG4gICAgfCBESUdJVFMgXyAtPlxuICAgICAgICBcIkRJR0lUU1wiXG4gICAgfCBFT0YgLT5cbiAgICAgICAgXCJFT0ZcIlxuICAgIHwgUVVFUllfREVDT1JBVElPTiBfIC0+XG4gICAgICAgIFwiUVVFUllfREVDT1JBVElPTlwiXG4gICAgfCBRVUVSWV9LRVkgXyAtPlxuICAgICAgICBcIlFVRVJZX0tFWVwiXG4gICAgfCBURVhUX09CSkVDVF9JTk5FUiAtPlxuICAgICAgICBcIlRFWFRfT0JKRUNUX0lOTkVSXCJcbiAgICB8IFRFWFRfT0JKRUNUX0tFWSBfIC0+XG4gICAgICAgIFwiVEVYVF9PQkpFQ1RfS0VZXCJcbiAgICB8IFRFWFRfT0JKRUNUX1FVRVJZIC0+XG4gICAgICAgIFwiVEVYVF9PQkpFQ1RfUVVFUllcIlxuXG5sZXQgX21lbmhpcl9mYWlsIDogdW5pdCAtPiAnYSA9XG4gIGZ1biAoKSAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiSW50ZXJuYWwgZmFpbHVyZSAtLSBwbGVhc2UgY29udGFjdCB0aGUgcGFyc2VyIGdlbmVyYXRvcidzIGRldmVsb3BlcnMuXFxuJSFcIjtcbiAgICBhc3NlcnQgZmFsc2VcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiLTQtMzdcIl1cbiAgXG4gIGxldCBfbWVuaGlyX2dvdG9fbWFpbiA6IHR5cGUgIHR0dl9zdGFjay4gdHR2X3N0YWNrIC0+IF8gLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX3YgLT5cbiAgICAgIE1lbmhpckJveF9tYWluIF92XG4gIFxuICBsZXQgX21lbmhpcl9ydW5fMTIgOiB0eXBlICB0dHZfc3RhY2suIHR0dl9zdGFjayAtPiBfIC0+IF8gLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX3YgX3RvayAtPlxuICAgICAgbWF0Y2ggKF90b2sgOiBNZW5oaXJCYXNpY3MudG9rZW4pIHdpdGhcbiAgICAgIHwgRU9GIC0+XG4gICAgICAgICAgbGV0IF8xID0gX3YgaW5cbiAgICAgICAgICBsZXQgX3YgPSBfbWVuaGlyX2FjdGlvbl8zIF8xIGluXG4gICAgICAgICAgX21lbmhpcl9nb3RvX21haW4gX21lbmhpcl9zdGFjayBfdlxuICAgICAgfCBfIC0+XG4gICAgICAgICAgX2VSUiAoKVxuICBcbiAgbGV0IHJlYyBfbWVuaGlyX2dvdG9fdGV4dF9vYmplY3QgOiB0eXBlICB0dHZfc3RhY2suIHR0dl9zdGFjayAtPiBfIC0+IF8gLT4gXyAtPiAodHR2X3N0YWNrLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX3N0YXRlIC0+IF8gLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfbWVuaGlyX3MgX3RvayAtPlxuICAgICAgbWF0Y2ggX21lbmhpcl9zIHdpdGhcbiAgICAgIHwgTWVuaGlyU3RhdGUwMCAtPlxuICAgICAgICAgIF9tZW5oaXJfcnVuXzEwIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfbWVuaGlyX3MgX3Rva1xuICAgICAgfCBNZW5oaXJTdGF0ZTAxIC0+XG4gICAgICAgICAgX21lbmhpcl9ydW5fMDQgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rXG4gIFxuICBhbmQgX21lbmhpcl9ydW5fMTAgOiB0eXBlICB0dHZfc3RhY2suIHR0dl9zdGFjayAtPiBfIC0+IF8gLT4gXyAtPiAodHR2X3N0YWNrLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX3N0YXRlIC0+IF8gLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfbWVuaGlyX3MgX3RvayAtPlxuICAgICAgbWF0Y2ggKF90b2sgOiBNZW5oaXJCYXNpY3MudG9rZW4pIHdpdGhcbiAgICAgIHwgUVVFUllfS0VZIF92XzAgLT5cbiAgICAgICAgICBsZXQgX21lbmhpcl9zdGFjayA9IE1lbmhpckNlbGwxX3RleHRfb2JqZWN0IChfbWVuaGlyX3N0YWNrLCBfbWVuaGlyX3MsIF92KSBpblxuICAgICAgICAgIF9tZW5oaXJfcnVuXzA1IF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdl8wXG4gICAgICB8IFFVRVJZX0RFQ09SQVRJT04gX3ZfMSAtPlxuICAgICAgICAgIGxldCBfbWVuaGlyX3N0YWNrID0gTWVuaGlyQ2VsbDFfdGV4dF9vYmplY3QgKF9tZW5oaXJfc3RhY2ssIF9tZW5oaXJfcywgX3YpIGluXG4gICAgICAgICAgX21lbmhpcl9ydW5fMDYgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92XzFcbiAgICAgIHwgQUNUSU9OX0tFWSBfdl8yIC0+XG4gICAgICAgICAgbGV0IF90b2sgPSBfbWVuaGlyX2xleGVyIF9tZW5oaXJfbGV4YnVmIGluXG4gICAgICAgICAgbGV0IChfMiwgXzEpID0gKF92XzIsIF92KSBpblxuICAgICAgICAgIGxldCBfdiA9IF9tZW5oaXJfYWN0aW9uXzEgXzEgXzIgaW5cbiAgICAgICAgICAobWF0Y2ggKF90b2sgOiBNZW5oaXJCYXNpY3MudG9rZW4pIHdpdGhcbiAgICAgICAgICB8IEVPRiAtPlxuICAgICAgICAgICAgICBsZXQgXzEgPSBfdiBpblxuICAgICAgICAgICAgICBsZXQgX3YgPSBfbWVuaGlyX2FjdGlvbl8yIF8xIGluXG4gICAgICAgICAgICAgIF9tZW5oaXJfZ290b19tYWluIF9tZW5oaXJfc3RhY2sgX3ZcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgX2VSUiAoKSlcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIF9lUlIgKClcbiAgXG4gIGFuZCBfbWVuaGlyX3J1bl8wNSA6IHR5cGUgIHR0dl9zdGFjay4gKHR0dl9zdGFjaywgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9jZWxsMV90ZXh0X29iamVjdCAtPiBfIC0+IF8gLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IC0+XG4gICAgICBsZXQgX3RvayA9IF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9sZXhidWYgaW5cbiAgICAgIGxldCBfMSA9IF92IGluXG4gICAgICBsZXQgX3YgPSBfbWVuaGlyX2FjdGlvbl81IF8xIGluXG4gICAgICBfbWVuaGlyX2dvdG9fcXVlcnlfb3AgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF90b2tcbiAgXG4gIGFuZCBfbWVuaGlyX2dvdG9fcXVlcnlfb3AgOiB0eXBlICB0dHZfc3RhY2suICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfY2VsbDFfdGV4dF9vYmplY3QgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF90b2sgLT5cbiAgICAgIGxldCBNZW5oaXJDZWxsMV90ZXh0X29iamVjdCAoX21lbmhpcl9zdGFjaywgX21lbmhpcl9zLCBfMSkgPSBfbWVuaGlyX3N0YWNrIGluXG4gICAgICBsZXQgXzIgPSBfdiBpblxuICAgICAgbGV0IF92ID0gX21lbmhpcl9hY3Rpb25fNCBfMSBfMiBpblxuICAgICAgX21lbmhpcl9nb3RvX3F1ZXJ5IF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfbWVuaGlyX3MgX3Rva1xuICBcbiAgYW5kIF9tZW5oaXJfZ290b19xdWVyeSA6IHR5cGUgIHR0dl9zdGFjay4gdHR2X3N0YWNrIC0+IF8gLT4gXyAtPiBfIC0+ICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGUgLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rIC0+XG4gICAgICBtYXRjaCBfbWVuaGlyX3Mgd2l0aFxuICAgICAgfCBNZW5oaXJTdGF0ZTAwIC0+XG4gICAgICAgICAgX21lbmhpcl9ydW5fMTIgX21lbmhpcl9zdGFjayBfdiBfdG9rXG4gICAgICB8IE1lbmhpclN0YXRlMDEgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wOSBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgX3Rva1xuICBcbiAgYW5kIF9tZW5oaXJfcnVuXzA5IDogdHlwZSAgdHR2X3N0YWNrLiAodHR2X3N0YWNrLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX2NlbGwxX1RFWFRfT0JKRUNUX1FVRVJZIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfdG9rIC0+XG4gICAgICBsZXQgTWVuaGlyQ2VsbDFfVEVYVF9PQkpFQ1RfUVVFUlkgKF9tZW5oaXJfc3RhY2ssIF9tZW5oaXJfcykgPSBfbWVuaGlyX3N0YWNrIGluXG4gICAgICBsZXQgXzIgPSBfdiBpblxuICAgICAgbGV0IF92ID0gX21lbmhpcl9hY3Rpb25fOCBfMiBpblxuICAgICAgX21lbmhpcl9nb3RvX3RleHRfb2JqZWN0IF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfbWVuaGlyX3MgX3Rva1xuICBcbiAgYW5kIF9tZW5oaXJfcnVuXzA2IDogdHlwZSAgdHR2X3N0YWNrLiAodHR2X3N0YWNrLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX2NlbGwxX3RleHRfb2JqZWN0IC0+IF8gLT4gXyAtPiBfIC0+IF9tZW5oaXJfYm94X21haW4gPVxuICAgIGZ1biBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgLT5cbiAgICAgIGxldCBfdG9rID0gX21lbmhpcl9sZXhlciBfbWVuaGlyX2xleGJ1ZiBpblxuICAgICAgbWF0Y2ggKF90b2sgOiBNZW5oaXJCYXNpY3MudG9rZW4pIHdpdGhcbiAgICAgIHwgUVVFUllfS0VZIF92XzAgLT5cbiAgICAgICAgICBsZXQgX3RvayA9IF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9sZXhidWYgaW5cbiAgICAgICAgICBsZXQgKF8yLCBfMSkgPSAoX3ZfMCwgX3YpIGluXG4gICAgICAgICAgbGV0IF92ID0gX21lbmhpcl9hY3Rpb25fNiBfMSBfMiBpblxuICAgICAgICAgIF9tZW5oaXJfZ290b19xdWVyeV9vcCBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3YgX3Rva1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgX2VSUiAoKVxuICBcbiAgYW5kIF9tZW5oaXJfcnVuXzA0IDogdHlwZSAgdHR2X3N0YWNrLiAoKHR0dl9zdGFjaywgX21lbmhpcl9ib3hfbWFpbikgX21lbmhpcl9jZWxsMV9URVhUX09CSkVDVF9RVUVSWSBhcyAnc3RhY2spIC0+IF8gLT4gXyAtPiBfIC0+ICgnc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGUgLT4gXyAtPiBfbWVuaGlyX2JveF9tYWluID1cbiAgICBmdW4gX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF92IF9tZW5oaXJfcyBfdG9rIC0+XG4gICAgICBsZXQgX21lbmhpcl9zdGFjayA9IE1lbmhpckNlbGwxX3RleHRfb2JqZWN0IChfbWVuaGlyX3N0YWNrLCBfbWVuaGlyX3MsIF92KSBpblxuICAgICAgbWF0Y2ggKF90b2sgOiBNZW5oaXJCYXNpY3MudG9rZW4pIHdpdGhcbiAgICAgIHwgUVVFUllfS0VZIF92XzAgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wNSBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3ZfMFxuICAgICAgfCBRVUVSWV9ERUNPUkFUSU9OIF92XzEgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wNiBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX3ZfMVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgX2VSUiAoKVxuICBcbiAgbGV0IF9tZW5oaXJfcnVuXzAyIDogdHlwZSAgdHR2X3N0YWNrLiB0dHZfc3RhY2sgLT4gXyAtPiBfIC0+ICh0dHZfc3RhY2ssIF9tZW5oaXJfYm94X21haW4pIF9tZW5oaXJfc3RhdGUgLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfbWVuaGlyX3MgLT5cbiAgICAgIGxldCBfdG9rID0gX21lbmhpcl9sZXhlciBfbWVuaGlyX2xleGJ1ZiBpblxuICAgICAgbWF0Y2ggKF90b2sgOiBNZW5oaXJCYXNpY3MudG9rZW4pIHdpdGhcbiAgICAgIHwgVEVYVF9PQkpFQ1RfS0VZIF92IC0+XG4gICAgICAgICAgbGV0IF90b2sgPSBfbWVuaGlyX2xleGVyIF9tZW5oaXJfbGV4YnVmIGluXG4gICAgICAgICAgbGV0IF8yID0gX3YgaW5cbiAgICAgICAgICBsZXQgX3YgPSBfbWVuaGlyX2FjdGlvbl83IF8yIGluXG4gICAgICAgICAgX21lbmhpcl9nb3RvX3RleHRfb2JqZWN0IF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfdiBfbWVuaGlyX3MgX3Rva1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgX2VSUiAoKVxuICBcbiAgbGV0IHJlYyBfbWVuaGlyX3J1bl8wMSA6IHR5cGUgIHR0dl9zdGFjay4gdHR2X3N0YWNrIC0+IF8gLT4gXyAtPiAodHR2X3N0YWNrLCBfbWVuaGlyX2JveF9tYWluKSBfbWVuaGlyX3N0YXRlIC0+IF9tZW5oaXJfYm94X21haW4gPVxuICAgIGZ1biBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9zIC0+XG4gICAgICBsZXQgX21lbmhpcl9zdGFjayA9IE1lbmhpckNlbGwxX1RFWFRfT0JKRUNUX1FVRVJZIChfbWVuaGlyX3N0YWNrLCBfbWVuaGlyX3MpIGluXG4gICAgICBsZXQgX21lbmhpcl9zID0gTWVuaGlyU3RhdGUwMSBpblxuICAgICAgbGV0IF90b2sgPSBfbWVuaGlyX2xleGVyIF9tZW5oaXJfbGV4YnVmIGluXG4gICAgICBtYXRjaCAoX3RvayA6IE1lbmhpckJhc2ljcy50b2tlbikgd2l0aFxuICAgICAgfCBURVhUX09CSkVDVF9RVUVSWSAtPlxuICAgICAgICAgIF9tZW5oaXJfcnVuXzAxIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciBfbWVuaGlyX3NcbiAgICAgIHwgVEVYVF9PQkpFQ1RfSU5ORVIgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wMiBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9zXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBfZVJSICgpXG4gIFxuICBsZXQgX21lbmhpcl9ydW5fMDAgOiB0eXBlICB0dHZfc3RhY2suIHR0dl9zdGFjayAtPiBfIC0+IF8gLT4gX21lbmhpcl9ib3hfbWFpbiA9XG4gICAgZnVuIF9tZW5oaXJfc3RhY2sgX21lbmhpcl9sZXhidWYgX21lbmhpcl9sZXhlciAtPlxuICAgICAgbGV0IF9tZW5oaXJfcyA9IE1lbmhpclN0YXRlMDAgaW5cbiAgICAgIGxldCBfdG9rID0gX21lbmhpcl9sZXhlciBfbWVuaGlyX2xleGJ1ZiBpblxuICAgICAgbWF0Y2ggKF90b2sgOiBNZW5oaXJCYXNpY3MudG9rZW4pIHdpdGhcbiAgICAgIHwgVEVYVF9PQkpFQ1RfUVVFUlkgLT5cbiAgICAgICAgICBfbWVuaGlyX3J1bl8wMSBfbWVuaGlyX3N0YWNrIF9tZW5oaXJfbGV4YnVmIF9tZW5oaXJfbGV4ZXIgX21lbmhpcl9zXG4gICAgICB8IFRFWFRfT0JKRUNUX0lOTkVSIC0+XG4gICAgICAgICAgX21lbmhpcl9ydW5fMDIgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIF9tZW5oaXJfc1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgX2VSUiAoKVxuICBcbmVuZFxuXG5sZXQgbWFpbiA9XG4gIGZ1biBfbWVuaGlyX2xleGVyIF9tZW5oaXJfbGV4YnVmIC0+XG4gICAgbGV0IF9tZW5oaXJfc3RhY2sgPSAoKSBpblxuICAgIGxldCBNZW5oaXJCb3hfbWFpbiB2ID0gX21lbmhpcl9ydW5fMDAgX21lbmhpcl9zdGFjayBfbWVuaGlyX2xleGJ1ZiBfbWVuaGlyX2xleGVyIGluXG4gICAgdlxuIiwiJXtcbm9wZW4gUXVlcnlBc3RcbiV9XG5cbiV0b2tlbiA8aW50PiBESUdJVFNcbiV0b2tlbiA8UXVlcnlBc3QudGV4dF9vYmplY3Rfa2V5PiBURVhUX09CSkVDVF9LRVlcbiV0b2tlbiA8UXVlcnlBc3QuYWN0aW9uX2tleT4gQUNUSU9OX0tFWVxuJXRva2VuIDxRdWVyeUFzdC5xdWVyeV9kZWNvcmF0aW9uPiBRVUVSWV9ERUNPUkFUSU9OXG4ldG9rZW4gPFF1ZXJ5QXN0LnF1ZXJ5X2tleT4gUVVFUllfS0VZXG4ldG9rZW4gVEVYVF9PQkpFQ1RfSU5ORVJcbiV0b2tlbiBURVhUX09CSkVDVF9RVUVSWVxuJXRva2VuIEVPRlxuXG4lc3RhcnQgPFF1ZXJ5QXN0LmNvbW1hbmQ+IG1haW5cblxuJSVcblxubWFpbjpcbiAgfCBhY3Rpb24gRU9GIHsgQWN0aW9uKCQxKSB9XG4gIHwgcXVlcnkgRU9GIHsgUXVlcnkoJDEpIH1cblxuYWN0aW9uOlxuICB8IHRleHRfb2JqZWN0IEFDVElPTl9LRVkgeyAoJDEsICQyKSB9XG5cbnRleHRfb2JqZWN0OlxuICB8IFRFWFRfT0JKRUNUX0lOTkVSIFRFWFRfT0JKRUNUX0tFWSB7IElubmVyKCQyKSB9XG4gIHwgVEVYVF9PQkpFQ1RfUVVFUlkgcXVlcnkgeyBRdWVyaWVkKCQyKSB9XG5cbnF1ZXJ5OlxuICB8IHRleHRfb2JqZWN0IHF1ZXJ5X29wIHsgKCQxLCAkMikgfVxuXG5xdWVyeV9vcDpcbiAgfCBRVUVSWV9LRVkgeyAoTm9uZSwgJDEpIH1cbiAgfCBRVUVSWV9ERUNPUkFUSU9OIFFVRVJZX0tFWSB7IChTb21lKCQxKSwgJDIpIH1cbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbi8vb3BlbiBVdGlsLldlYjtcblxubGV0IGlucHV0RmllbGRfaWQgPSBcImExMXktaW5wdXRcIjtcbmxldCBvdXRwdXRBcmVhX2lkID0gXCJhMTF5LW91dHB1dFwiO1xuXG5sZXQgaW5wdXRfdmlldyA9IChpZCwgaW5wdXQpOiBOb2RlLnQgPT4ge1xuICBOb2RlLmRpdih+YXR0cj1BdHRyLmlkKGlkKSwgW05vZGUudGV4dChcIjpcIiArKyBpbnB1dCldKTtcbn07XG5cbmxldCBvdXRwdXRfdmlldyA9IChpZCwgY29udGVudCk6IE5vZGUudCA9PiB7XG4gIE5vZGUuZGl2KH5hdHRyPUF0dHIuaWQoaWQpLCBbTm9kZS50ZXh0KGNvbnRlbnQpXSk7XG59O1xuXG5sZXQgdmlldyA9ICh+X2luamVjdCwgbW9kZWw6IEFjY2Vzc2liaWxpdHlNb2RlbC50KTogTm9kZS50ID0+IHtcbiAgTm9kZS5kaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcImExMXlcIl0pLFxuICAgIFtcbiAgICAgIGlucHV0X3ZpZXcoaW5wdXRGaWVsZF9pZCwgbW9kZWwuaW5wdXQpLFxuICAgICAgb3V0cHV0X3ZpZXcoXG4gICAgICAgIG91dHB1dEFyZWFfaWQsXG4gICAgICAgIG1vZGVsLnF1ZXJ5X3Jlc3VsdCB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9XCJcIiksXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGZ1bmFwcF9leHBfZXggPSB7XG4gIHN1Yl9pZDogRnVuQXAsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIoZnVuIHggLT4geCkoMSlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGlkZW50aXR5IGZ1bmN0aW9uIGlzIGFwcGxpZWQgdG8gMS4gVGhlIGFyZ3VtZW50IHggaXMgYm91bmQgdG8gMSBpbiB0aGUgZnVuY3Rpb24gYm9keSBhbmQgdGhlIGJvZHkgZXZhbHVhdGVzIHRvIDEuXCIsXG59O1xuLy8gVE9ETyBIYXMgYSByZWQgYm94IGFyb3VuZCBpdCBpbiB0aGUgcmVzdWx0XG5sZXQgY29uYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBDb25BcCxcbiAgdGVybTogbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG5pbiBTb21lKDEpXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBjb25zdHJ1Y3RvciBTb21lIGlzIGFwcGxpZWQgdG8gMSwgd2hpY2ggZXZhbHVhdGVzIHRvIFNvbWUoMSkuXCIsXG59O1xubGV0IF9leHBfZnVuID0gZXhwKFwiZV9mdW5cIik7XG5sZXQgX2V4cF9hcmcgPSBleHAoXCJlX2FyZ1wiKTtcbmxldCBmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54X2lkOiBJZC50LCB+YXJnX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfZnVuKSwgeF9pZCksXG4gIChQaWVjZS5pZChfZXhwX2FyZyksIGFyZ19pZCksXG5dO1xubGV0IGZ1bmFwcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQXBwbGllcyB0aGUgWypmdW5jdGlvbipdKCVzKSB0byB0aGUgWyphcmd1bWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBGdW5BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfZnVuLCBta19hcF9leHAoW1tfZXhwX2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Z1bmFwcF9leHBfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwX2NvbiA9IGV4cChcImVfY29uXCIpO1xubGV0IF9leHBfYXJnID0gZXhwKFwiZV9hcmdcIik7XG5sZXQgY29uYXBwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eF9pZDogSWQudCwgfmFyZ19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2NvbiksIHhfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBjb25hcHBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFwcGxpZXMgdGhlIFsqYCVzYCBjb25zdHJ1Y3RvcipdKCVzKSB0byB0aGUgWyphcmd1bWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBDb25BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfY29uLCBta19hcF9leHAoW1tfZXhwX2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2NvbmFwcF9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IGZ1bmFwczogZ3JvdXAgPSB7aWQ6IEZ1bkFwRXhwLCBmb3JtczogW2Z1bmFwcF9leHBdfTtcblxubGV0IGNvbmFwczogZ3JvdXAgPSB7aWQ6IENvbkFwRXhwLCBmb3JtczogW2NvbmFwcF9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfcGF0X2NvbiA9IHBhdChcInBfY29uXCIpO1xubGV0IF9wYXRfYXJnID0gcGF0KFwicF9hcmdcIik7XG5sZXQgYXBfcGF0X2NvbG9yaW5nX2lkcyA9ICh+Y29uX2lkOiBJZC50LCB+YXJnX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfY29uKSwgY29uX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfYXJnKSwgYXJnX2lkKSxcbl07XG5sZXQgYXBfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCB0aGUgWypjb25zdHJ1Y3RvcipdKCVzKSB3aXRoIGFuICphcmd1bWVudCogbWF0Y2hpbmcgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzICpjb25zdHJ1Y3RvciBhcHBsaWNhdGlvbiBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBBcFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfY29uLCBta19hcF9wYXQoW1tfcGF0X2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgYXA6IGdyb3VwID0ge2lkOiBBcFBhdCwgZm9ybXM6IFthcF9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHlwX2FyZyA9IHR5cChcInR5X2FyZ1wiKTtcbmxldCBfdHlwX291dCA9IHR5cChcInR5X291dFwiKTtcbmxldCBhcnJvd190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmFyZ19pZDogSWQudCwgfnJlc3VsdF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2FyZyksIGFyZ19pZCksXG4gIChQaWVjZS5pZChfdHlwX291dCksIHJlc3VsdF9pZCksXG5dO1xubGV0IGFycm93X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGFycm93IHR5cGUgY2xhc3NpZmllcyBmdW5jdGlvbnMgd2l0aCBbKmFyZ3VtZW50IHR5cGUqXSglcykgYW5kIFsqb3V0cHV0IHR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQXJyb3dUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfdHlwX2FyZywgc3BhY2UoKSwgYXJyb3coKSwgc3BhY2UoKSwgX3R5cF9vdXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF90eXBfb3V0KSwgW3R5cChcInR5X291dFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF90eXBfYXJnMSA9IHR5cChcInR5X2FyZzFcIik7XG5sZXQgX3R5cF9hcmcyID0gdHlwKFwidHlfYXJnMlwiKTtcbmxldCBfdHlwX291dCA9IHR5cChcInR5X291dFwiKTtcbmxldCBhcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5hcmcxX2lkOiBJZC50LCB+YXJnMl9pZDogSWQudCwgfnJlc3VsdF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2FyZzEpLCBhcmcxX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfYXJnMiksIGFyZzJfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9vdXQpLCByZXN1bHRfaWQpLFxuXTtcbmxldCBhcnJvdzNfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgYXJyb3cgdHlwZSBjbGFzc2lmaWVzIGZ1bmN0aW9ucyB3aXRoIFsqZmlyc3QgYXJndW1lbnQgdHlwZSpdKCVzKSwgWypzZWNvbmQgYXJndW1lbnQgdHlwZSpdKCVzKSwgYW5kIFsqb3V0cHV0IHR5cGUqXSglcykuXCI7XG4gIGxldCBhcnJvdzIgPSBhcnJvdygpO1xuICB7XG4gICAgaWQ6IEFycm93M1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX3R5cF9hcmcxLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGFycm93KCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3R5cF9hcmcyLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGFycm93MixcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX291dCxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChhcnJvdzIpLCBbdHlwKFwidHlfYXJnMlwiKSwgYXJyb3coKSwgdHlwKFwidHlfb3V0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBhcnJvdzogZ3JvdXAgPSB7aWQ6IEFycm93VHlwLCBmb3JtczogW2Fycm93X3R5cF19O1xuXG5sZXQgYXJyb3czOiBncm91cCA9IHtpZDogQXJyb3czVHlwLCBmb3JtczogW2Fycm93M190eXAsIGFycm93X3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IGNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSA9IHtcbiAgc3ViX2lkOiBDYXNlV2lsZFNpbXBsZSxcbiAgdGVybTogbWtfZXhhbXBsZShcImNhc2UgMSBcXG58IDIgPT4gMyBcXG58IF8gPT4gNCBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzIDEuIFNpbmNlIHRoZSBzY3J1dGluZWUgZG9lcyBub3QgbWF0Y2ggdGhlIHRoZSBmaXJzdCBwYXR0ZXJuIDIuIFNpbmNlIHRoZSBzY3J1dGluZWUgZG9lcyBtYXRjaCB0aGUgc2Vjb25kIHBhdHRlcm4gd2hpY2ggaXMgYSB3aWxkY2FyZCwgdGhlIHNlY29uZCBicmFuY2ggaXMgdGFrZW4uIFRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0aGUgc2Vjb25kIGNsYXVzZSA0LlwiLFxufTtcbmxldCBjYXNlX2V4YW1wbGVfd2lsZF90dXBsZSA9IHtcbiAgc3ViX2lkOiBDYXNlV2lsZFR1cGxlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAoMSwgMikgXFxufCAoXywgMikgPT4gMyBcXG58IF8gPT4gNCBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzICgxLCAyKS4gU2luY2UgdGhlIHNjcnV0aW5lZSBtYXRjaGVzIHRoZSBmaXJzdCBwYXR0ZXJuIChfLCAyKSwgdGhlIGZpcnN0IGJyYW5jaCBpcyB0YWtlbi4gVGhpcyBwYXR0ZXJuIGlzIG1hdGNoZWQgYmVjYXVzZSB0aGUgZmlyc3QgZWxlbWVudCAxIG1hdGNoZXMgdGhlIGZpcnN0IGVsZW1lbnQgcGF0dGVybiwgd2hpY2ggaXMgYSB3aWxkY2FyZCwgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCAyIG1hdGNoZXMgdGhlIHNlY29uZCBlbGVtZW50IHBhdHRlcm4gMi4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBjbGF1c2UgMy5cIixcbn07XG5sZXQgY2FzZV9leGFtcGxlX2ludCA9IHtcbiAgc3ViX2lkOiBDYXNlSW50LFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAxIFxcbnwgMSA9PiAxLjEgXFxufCAyID0+IDIuMiBcXG58IF8gPT4gMy4zIFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgMS4gU2luY2UgdGhlIHNjcnV0aW5lZSBtYXRjaGVzIHRoZSBmaXJzdCBwYXR0ZXJuLCB0aGUgZmlyc3QgYnJhbmNoIGlzIHRha2VuLCBhbmQgdGhlIGNhc2UgZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBjbGF1c2UuXCIsXG59O1xubGV0IGNhc2VfZXhhbXBsZV9ib29sID0ge1xuICBzdWJfaWQ6IENhc2VCb29sLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSBmYWxzZSBcXG58IHRydWUgPT4gMSBcXG58IGZhbHNlID0+IDIgXFxuZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBzY3J1dGluZWUgb2YgdGhlIGNhc2UgZXhwcmVzc2lvbiBpcyBmYWxzZS4gVGhlIHNjcnV0aW5lZSBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgcGF0dGVybiBidXQgZG9lcyBtYXRjaCB0aGUgc2Vjb25kIHBhdHRlcm4sIHNvIHRoZSBzZWNvbmQgYnJhbmNoIGlzIHRha2VuLlwiLFxufTtcbi8vIFRPRE8gLSBJIGRvbid0IHRoaW5rIGNoYW5naW5nIHNwZWNpZmljaXR5IG9uIHRoZSBudW1iZXIgb2YgY2FzZXMgaXMgcmVhbGx5IHRoZSBtb3N0XG4vLyBiZW5lZmljaWFsIHNwZWNpZmljaXR5IGNoYW5nZSAtIEkgdGhpbmsgaW5zdGVhZCBoYXZlIGdlbmVyaWMgYXQgdG9wIGxldmVsXG4vLyBhbmQgdGhlbiBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHNldHVwIGZvciBzcGVjaWZpYyB0aGF0IGlzIGNyZWF0ZWQgbW9yZVxuLy8gZHluYW1pY2FsbHkgY2FsbGluZyBzZXR1cCBtZXRob2RzIGhlcmUgYnV0IG1vcmVcbi8vIHdvcmsgZG9uZSBpbiB0aGUgRXhwbGFpblRoaXMgY29kZSAtIG1heWJlIGp1c3QgdXAgdG8gMyBvciA0IGJyYW5jaGVzP1xubGV0IF9leHBfc2NydXQgPSBleHAoXCJlX3NjcnV0XCIpO1xubGV0IGNhc2VfZXhwX2NvbG9yaW5nX2lkcyA9ICh+c2NydXRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9zY3J1dCksIHNjcnV0X2lkKSxcbl07XG5sZXQgY2FzZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ29uc2lkZXIgZWFjaCBicmFuY2ggaW4gb3JkZXIuIEZvciB0aGUgZmlyc3QgYnJhbmNoIHdpdGggYSAqcGF0dGVybiogdGhhdCBtYXRjaGVzIHRoZSBbKnNjcnV0aW5lZSpdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBjb3JyZXNwb25kaW5nICpjbGF1c2UqLlwiO1xuICBsZXQgY2FzZSA9XG4gICAgbWtfY2FzZShbXG4gICAgICBbXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9leHBfc2NydXQsXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBta19ydWxlKFtbc3BhY2UoKSwgcGF0KFwicDFcIiksIHNwYWNlKCldXSksXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIGV4cChcImUxXCIpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgICAgbWtfcnVsZShbW3NwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV1dKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgZXhwKFwiLi4uXCIpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0sXG4gICAgXSk7XG4gIHtcbiAgICBpZDogQ2FzZUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2Nhc2VdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIGNhc2VfZXhhbXBsZV9pbnQsXG4gICAgICBjYXNlX2V4YW1wbGVfYm9vbCxcbiAgICAgIGNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSxcbiAgICAgIGNhc2VfZXhhbXBsZV93aWxkX3R1cGxlLFxuICAgIF0sXG4gIH07XG59O1xuXG5sZXQgY2FzZTogZ3JvdXAgPSB7aWQ6IENhc2VFeHAsIGZvcm1zOiBbY2FzZV9leHBdfTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5cbmxldCBqdW1wX3RvID0gZW50cnkgPT5cbiAgVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oSnVtcChUaWxlSWQoSGF6M2xjb3JlLkN0eC5nZXRfaWQoZW50cnkpKSkpO1xuXG5sZXQgY29udGV4dF9lbnRyeV92aWV3ID0gKH5pbmplY3QsIGVudHJ5OiBIYXozbGNvcmUuQ3R4LmVudHJ5KTogTm9kZS50ID0+IHtcbiAgbGV0IGRpdl9uYW1lID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBjbHNzKFtcIm5hbWVcIl0pLFxuICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PiBpbmplY3QoanVtcF90byhlbnRyeSkpKSxcbiAgICAgICAgXSksXG4gICAgKTtcbiAgc3dpdGNoIChlbnRyeSkge1xuICB8IFZhckVudHJ5KHtuYW1lLCB0eXAsIF99KVxuICB8IENvbnN0cnVjdG9yRW50cnkoe25hbWUsIHR5cCwgX30pID0+XG4gICAgZGl2X2MoXG4gICAgICBcImNvbnRleHQtZW50cnlcIixcbiAgICAgIFtcbiAgICAgICAgZGl2X25hbWUoW3RleHQobmFtZSldKSxcbiAgICAgICAgZGl2KH5hdHRyPWNsc3MoW1wic2VwZXJhdG9yXCJdKSwgW3RleHQoXCI6XCIpXSksXG4gICAgICAgIFR5cGUudmlldyh0eXApLFxuICAgICAgXSxcbiAgICApXG4gIHwgVFZhckVudHJ5KHtuYW1lLCBraW5kLCBffSkgPT5cbiAgICBkaXZfYyhcbiAgICAgIFwiY29udGV4dC1lbnRyeVwiLFxuICAgICAgW1xuICAgICAgICBkaXZfbmFtZShbVHlwZS5hbGlhc192aWV3KG5hbWUpXSksXG4gICAgICAgIGRpdih+YXR0cj1jbHNzKFtcInNlcGVyYXRvclwiXSksIFt0ZXh0KFwiOjpcIildKSxcbiAgICAgICAgS2luZC52aWV3KGtpbmQpLFxuICAgICAgXSxcbiAgICApXG4gIH07XG59O1xuXG5sZXQgY3R4X3ZpZXcgPSAofmluamVjdCwgY3R4OiBIYXozbGNvcmUuQ3R4LnQpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiY29udGV4dC1lbnRyaWVzXCJdKSxcbiAgICBMaXN0Lm1hcChcbiAgICAgIGNvbnRleHRfZW50cnlfdmlldyh+aW5qZWN0KSxcbiAgICAgIGN0eCB8PiBIYXozbGNvcmUuQ3R4LmZpbHRlcl9kdXBsaWNhdGVzIHw+IExpc3QucmV2LFxuICAgICksXG4gICk7XG5cbmxldCBjdHhfc29ydHNfdmlldyA9ICh+aW5qZWN0LCBjaTogSGF6M2xjb3JlLlN0YXRpY3MuSW5mby50KSA9PlxuICBIYXozbGNvcmUuSW5mby5jdHhfb2YoY2kpXG4gIHw+IEhhejNsY29yZS5DdHguZmlsdGVyX2R1cGxpY2F0ZXNcbiAgfD4gTGlzdC5yZXZcbiAgfD4gTGlzdC5tYXAoY29udGV4dF9lbnRyeV92aWV3KH5pbmplY3QpKTtcblxubGV0IHZpZXcgPVxuICAgICh+aW5qZWN0LCB+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGNpOiBIYXozbGNvcmUuU3RhdGljcy5JbmZvLnQpOiBOb2RlLnQgPT4ge1xuICBsZXQgY2xzcyA9XG4gICAgY2xzcyhcbiAgICAgIFtcImNvbnRleHQtaW5zcGVjdG9yXCJdIEAgKHNldHRpbmdzLmNvbnRleHRfaW5zcGVjdG9yID8gW1widmlzaWJsZVwiXSA6IFtdKSxcbiAgICApO1xuICBkaXYofmF0dHI9Y2xzcywgY3R4X3NvcnRzX3ZpZXcofmluamVjdCwgY2kpKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCBlcnJjID0gXCJlcnJvclwiO1xubGV0IG9rYyA9IFwib2tcIjtcbmxldCBkaXZfZXJyID0gZGl2KH5hdHRyPWNsc3MoW2VycmNdKSk7XG5sZXQgZGl2X29rID0gZGl2KH5hdHRyPWNsc3MoW29rY10pKTtcblxubGV0IGNvZGVfZXJyID0gKGNvZGU6IHN0cmluZyk6IE5vZGUudCA9PlxuICBkaXYofmF0dHI9Y2xzcyhbXCJjb2RlXCJdKSwgW3RleHQoY29kZSldKTtcblxubGV0IGV4cGxhaW5fdGhpc190b2dnbGUgPSAofmluamVjdCwgfnNob3dfZXhwbGFpbl90aGlzOiBib29sKTogTm9kZS50ID0+IHtcbiAgbGV0IHRvb2x0aXAgPSBcIlRvZ2dsZSBsYW5ndWFnZSBkb2N1bWVudGF0aW9uXCI7XG4gIGxldCB0b2dnbGVfZXhwbGFpbl90aGlzID0gXyA9PlxuICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lk1hbnkoW1xuICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoRXhwbGFpblRoaXMoVG9nZ2xlU2hvdykpKSxcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0LlN0b3BfcHJvcGFnYXRpb24sXG4gICAgXSk7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImV4cGxhaW4tdGhpcy1idXR0b25cIl0pLFxuICAgIFtXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcCwgXCI/XCIsIHNob3dfZXhwbGFpbl90aGlzLCB0b2dnbGVfZXhwbGFpbl90aGlzKV0sXG4gICk7XG59O1xuXG5sZXQgY2xzX3ZpZXcgPSAoY2k6IEluZm8udCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJzeW50YXgtY2xhc3NcIl0pLFxuICAgIFt0ZXh0KGNpIHw+IEluZm8uY2xzX29mIHw+IFRlcm0uQ2xzLnNob3cpXSxcbiAgKTtcblxubGV0IGN0eF90b2dnbGUgPSAofmluamVjdCwgY29udGV4dF9pbnNwZWN0b3I6IGJvb2wpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IGluamVjdChVcGRhdGUuU2V0KENvbnRleHRJbnNwZWN0b3IpKSksXG4gICAgICAgIGNsc3MoW1wiZ2FtbWFcIl0gQCAoY29udGV4dF9pbnNwZWN0b3IgPyBbXCJ2aXNpYmxlXCJdIDogW10pKSxcbiAgICAgIF0pLFxuICAgIFt0ZXh0KFwizpNcIildLFxuICApO1xuXG5sZXQgdGVybV92aWV3ID0gKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgY2kpID0+IHtcbiAgbGV0IHNvcnQgPSBjaSB8PiBJbmZvLnNvcnRfb2YgfD4gU29ydC5zaG93O1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJjaS1oZWFkZXJcIiwgc29ydF0gQCAoSW5mby5pc19lcnJvcihjaSkgPyBbZXJyY10gOiBbXSkpLFxuICAgIFtcbiAgICAgIGN0eF90b2dnbGUofmluamVjdCwgc2V0dGluZ3MuY29udGV4dF9pbnNwZWN0b3IpLFxuICAgICAgQ3R4SW5zcGVjdG9yLnZpZXcofmluamVjdCwgfnNldHRpbmdzLCBjaSksXG4gICAgICBkaXYofmF0dHI9Y2xzcyhbXCJ0ZXJtLXRhZ1wiXSksIFt0ZXh0KHNvcnQpXSksXG4gICAgICBleHBsYWluX3RoaXNfdG9nZ2xlKFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+c2hvd19leHBsYWluX3RoaXM9c2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyxcbiAgICAgICksXG4gICAgICBjbHNfdmlldyhjaSksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBlbGVtZW50c19ub3VuOiBUZXJtLkNscy50ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IEV4cChNYXRjaCB8IElmKSA9PiBcIkJyYW5jaGVzXCJcbiAgfCBFeHAoTGlzdExpdClcbiAgfCBQYXQoTGlzdExpdCkgPT4gXCJFbGVtZW50c1wiXG4gIHwgRXhwKExpc3RDb25jYXQpID0+IFwiT3BlcmFuZHNcIlxuICB8IF8gPT4gZmFpbHdpdGgoXCJlbGVtZW50c19ub3VuOiBDbHMgZG9lc24ndCBoYXZlIGVsZW1lbnRzXCIpO1xuXG5sZXQgY29tbW9uX2Vycl92aWV3ID0gKGNsczogVGVybS5DbHMudCwgZXJyOiBJbmZvLmVycm9yX2NvbW1vbikgPT5cbiAgc3dpdGNoIChlcnIpIHtcbiAgfCBOb1R5cGUoQmFkVG9rZW4odG9rZW4pKSA9PlxuICAgIHN3aXRjaCAoRm9ybS5iYWRfdG9rZW5fY2xzKHRva2VuKSkge1xuICAgIHwgQmFkSW50ID0+IFt0ZXh0KFwiSW50ZWdlciBpcyB0b28gbGFyZ2Ugb3IgdG9vIHNtYWxsXCIpXVxuICAgIHwgT3RoZXIgPT4gW3RleHQoUHJpbnRmLnNwcmludGYoXCJcXFwiJXNcXFwiIGlzbid0IGEgdmFsaWQgdG9rZW5cIiwgdG9rZW4pKV1cbiAgICB9XG4gIHwgTm9UeXBlKEJhZFRyaXZBcCh0eSkpID0+IFtcbiAgICAgIHRleHQoXCJGdW5jdGlvbiBhcmd1bWVudCB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KHR5KSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aFwiKSxcbiAgICAgIFR5cGUudmlldyhQcm9kKFtdKSksXG4gICAgXVxuICB8IE5vVHlwZShGcmVlQ29uc3RydWN0b3IobmFtZSkpID0+IFtjb2RlX2VycihuYW1lKSwgdGV4dChcIm5vdCBmb3VuZFwiKV1cbiAgfCBJbmNvbnNpc3RlbnQoV2l0aEFycm93KHR5cCkpID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHR5cCksXG4gICAgICB0ZXh0KFwiaW5jb25zaXN0ZW50IHdpdGggYXJyb3cgdHlwZVwiKSxcbiAgICBdXG4gIHwgSW5jb25zaXN0ZW50KEV4cGVjdGF0aW9uKHthbmEsIHN5bn0pKSA9PiBbXG4gICAgICB0ZXh0KFwiOlwiKSxcbiAgICAgIFR5cGUudmlldyhzeW4pLFxuICAgICAgdGV4dChcImluY29uc2lzdGVudCB3aXRoIGV4cGVjdGVkIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgSW5jb25zaXN0ZW50KEludGVybmFsKHR5cykpID0+IFtcbiAgICAgIHRleHQoZWxlbWVudHNfbm91bihjbHMpICsrIFwiIGhhdmUgaW5jb25zaXN0ZW50IHR5cGVzOlwiKSxcbiAgICAgIC4uLkxpc3RVdGlsLmpvaW4odGV4dChcIixcIiksIExpc3QubWFwKFR5cGUudmlldywgdHlzKSksXG4gICAgXVxuICB9O1xuXG5sZXQgY29tbW9uX29rX3ZpZXcgPSAoY2xzOiBUZXJtLkNscy50LCBvazogSW5mby5va19wYXQpID0+IHtcbiAgc3dpdGNoIChjbHMsIG9rKSB7XG4gIHwgKEV4cChNdWx0aUhvbGUpIHwgUGF0KE11bHRpSG9sZSksIF8pID0+IFtcbiAgICAgIHRleHQoXCJFeHBlY3Rpbmcgb3BlcmF0b3Igb3IgZGVsaW1pdGVyXCIpLFxuICAgIF1cbiAgfCAoRXhwKEVtcHR5SG9sZSksIFN5bihfKSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgZXhwcmVzc2lvblwiKV1cbiAgfCAoUGF0KEVtcHR5SG9sZSksIFN5bihfKSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgcGF0dGVyblwiKV1cbiAgfCAoRXhwKEVtcHR5SG9sZSksIEFuYShDb25zaXN0ZW50KHthbmEsIF99KSkpID0+IFtcbiAgICAgIHRleHQoXCJGaWxsYWJsZSBieSBhbnkgZXhwcmVzc2lvbiBvZiB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KGFuYSksXG4gICAgXVxuICB8IChQYXQoRW1wdHlIb2xlKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBwYXR0ZXJuIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIFN5bihzeW4pKSA9PiBbdGV4dChcIjpcIiksIFR5cGUudmlldyhzeW4pXVxuICB8IChQYXQoVmFyKSB8IFBhdChXaWxkKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgX30pKSkgd2hlbiBhbmEgPT0gc3luID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiZXF1YWxzIGV4cGVjdGVkIHR5cGVcIiksXG4gICAgXVxuICB8IChfLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBzeW4sIF99KSkpID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiY29uc2lzdGVudCB3aXRoIGV4cGVjdGVkIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIEFuYShJbnRlcm5hbGx5SW5jb25zaXN0ZW50KHthbmEsIG5vam9pbjogdHlzfSkpKSA9PlxuICAgIFtcbiAgICAgIHRleHQoZWxlbWVudHNfbm91bihjbHMpICsrIFwiIGhhdmUgaW5jb25zaXN0ZW50IHR5cGVzOlwiKSxcbiAgICAgIC4uLkxpc3RVdGlsLmpvaW4odGV4dChcIixcIiksIExpc3QubWFwKFR5cGUudmlldywgdHlzKSksXG4gICAgXVxuICAgIEAgW3RleHQoXCJidXQgY29uc2lzdGVudCB3aXRoIGV4cGVjdGVkXCIpLCBUeXBlLnZpZXcoYW5hKV1cbiAgfTtcbn07XG5cbmxldCB0eXBfb2tfdmlldyA9IChjbHM6IFRlcm0uQ2xzLnQsIG9rOiBJbmZvLm9rX3R5cCkgPT5cbiAgc3dpdGNoIChvaykge1xuICB8IFR5cGUoXykgd2hlbiBjbHMgPT0gVHlwKEVtcHR5SG9sZSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgdHlwZVwiKV1cbiAgfCBUeXBlKHR5KSA9PiBbVHlwZS52aWV3KHR5KV1cbiAgfCBUeXBlQWxpYXMobmFtZSwgdHlfbG9va3VwKSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpKSxcbiAgICAgIHRleHQoXCJpcyBhbiBhbGlhcyBmb3JcIiksXG4gICAgICBUeXBlLnZpZXcodHlfbG9va3VwKSxcbiAgICBdXG4gIHwgVmFyaWFudChuYW1lLCBfc3VtX3R5KSA9PiBbVHlwZS52aWV3KFZhcihuYW1lKSldXG4gIHwgVmFyaWFudEluY29tcGxldGUoX3N1bV90eSkgPT4gW3RleHQoXCJpcyBpbmNvbXBsZXRlXCIpXVxuICB9O1xuXG5sZXQgdHlwX2Vycl92aWV3ID0gKG9rOiBJbmZvLmVycm9yX3R5cCkgPT5cbiAgc3dpdGNoIChvaykge1xuICB8IEZyZWVUeXBlVmFyaWFibGUobmFtZSkgPT4gW1R5cGUudmlldyhWYXIobmFtZSkpLCB0ZXh0KFwibm90IGZvdW5kXCIpXVxuICB8IEJhZFRva2VuKHRva2VuKSA9PiBbXG4gICAgICBjb2RlX2Vycih0b2tlbiksXG4gICAgICB0ZXh0KFwibm90IGEgdHlwZSBvciB0eXBlIG9wZXJhdG9yXCIpLFxuICAgIF1cbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZEFwXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRUeXBlKF8pID0+IFt0ZXh0KFwiRXhwZWN0ZWQgYSBjb25zdHJ1Y3RvclwiKV1cbiAgfCBXYW50VHlwZUZvdW5kQXAgPT4gW3RleHQoXCJNdXN0IGJlIHBhcnQgb2YgYSBzdW0gdHlwZVwiKV1cbiAgfCBEdXBsaWNhdGVDb25zdHJ1Y3RvcihuYW1lKSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpKSxcbiAgICAgIHRleHQoXCJhbHJlYWR5IHVzZWQgaW4gdGhpcyBzdW1cIiksXG4gICAgXVxuICB9O1xuXG5sZXQgZXhwX3ZpZXcgPSAoY2xzOiBUZXJtLkNscy50LCBzdGF0dXM6IEluZm8uc3RhdHVzX2V4cCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBJbkhvbGUoRnJlZVZhcmlhYmxlKG5hbWUpKSA9PlxuICAgIGRpdl9lcnIoW2NvZGVfZXJyKG5hbWUpLCB0ZXh0KFwibm90IGZvdW5kXCIpXSlcbiAgfCBJbkhvbGUoQ29tbW9uKGVycm9yKSkgPT4gZGl2X2Vycihjb21tb25fZXJyX3ZpZXcoY2xzLCBlcnJvcikpXG4gIHwgTm90SW5Ib2xlKG9rKSA9PiBkaXZfb2soY29tbW9uX29rX3ZpZXcoY2xzLCBvaykpXG4gIH07XG5cbmxldCBwYXRfdmlldyA9IChjbHM6IFRlcm0uQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfcGF0KSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IEluSG9sZShFeHBlY3RlZENvbnN0cnVjdG9yKSA9PiBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYSBjb25zdHJ1Y3RvclwiKV0pXG4gIHwgSW5Ib2xlKENvbW1vbihlcnJvcikpID0+IGRpdl9lcnIoY29tbW9uX2Vycl92aWV3KGNscywgZXJyb3IpKVxuICB8IE5vdEluSG9sZShvaykgPT4gZGl2X29rKGNvbW1vbl9va192aWV3KGNscywgb2spKVxuICB9O1xuXG5sZXQgdHlwX3ZpZXcgPSAoY2xzOiBUZXJtLkNscy50LCBzdGF0dXM6IEluZm8uc3RhdHVzX3R5cCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBOb3RJbkhvbGUob2spID0+IGRpdl9vayh0eXBfb2tfdmlldyhjbHMsIG9rKSlcbiAgfCBJbkhvbGUoZXJyKSA9PiBkaXZfZXJyKHR5cF9lcnJfdmlldyhlcnIpKVxuICB9O1xuXG5sZXQgdHBhdF92aWV3ID0gKF86IFRlcm0uQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfdHBhdCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBOb3RJbkhvbGUoRW1wdHkpID0+IGRpdl9vayhbdGV4dChcIkZpbGxhYmxlIHdpdGggYSBuZXcgYWxpYXNcIildKVxuICB8IE5vdEluSG9sZShWYXIobmFtZSkpID0+IGRpdl9vayhbVHlwZS5hbGlhc192aWV3KG5hbWUpXSlcbiAgfCBJbkhvbGUoTm90QVZhcihOb3RDYXBpdGFsaXplZCkpID0+XG4gICAgZGl2X2VycihbdGV4dChcIk11c3QgYmVnaW4gd2l0aCBhIGNhcGl0YWwgbGV0dGVyXCIpXSlcbiAgfCBJbkhvbGUoTm90QVZhcihfKSkgPT4gZGl2X2VycihbdGV4dChcIkV4cGVjdGVkIGFuIGFsaWFzXCIpXSlcbiAgfCBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSkpIHdoZW4gRm9ybS5pc19iYXNlX3R5cChuYW1lKSA9PlxuICAgIGRpdl9lcnIoW3RleHQoXCJDYW4ndCBzaGFkb3cgYmFzZSB0eXBlXCIpLCBUeXBlLnZpZXcoVmFyKG5hbWUpKV0pXG4gIHwgSW5Ib2xlKFNoYWRvd3NUeXBlKG5hbWUpKSA9PlxuICAgIGRpdl9lcnIoW3RleHQoXCJDYW4ndCBzaGFkb3cgZXhpc3RpbmcgYWxpYXNcIiksIFR5cGUudmlldyhWYXIobmFtZSkpXSlcbiAgfTtcblxubGV0IHNlY29uZGFyeV92aWV3ID0gKGNsczogVGVybS5DbHMudCkgPT5cbiAgZGl2X29rKFt0ZXh0KGNscyB8PiBUZXJtLkNscy5zaG93KV0pO1xuXG5sZXQgdmlld19vZl9pbmZvID0gKH5pbmplY3QsIH5zZXR0aW5ncywgY2kpOiBOb2RlLnQgPT4ge1xuICBsZXQgd3JhcHBlciA9IHN0YXR1c192aWV3ID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJpbmZvXCJdKSxcbiAgICAgIFt0ZXJtX3ZpZXcofmluamVjdCwgfnNldHRpbmdzLCBjaSksIHN0YXR1c192aWV3XSxcbiAgICApO1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgU2Vjb25kYXJ5KF8pID0+IHdyYXBwZXIoZGl2KFtdKSlcbiAgfCBJbmZvRXhwKHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIoZXhwX3ZpZXcoY2xzLCBzdGF0dXMpKVxuICB8IEluZm9QYXQoe2Nscywgc3RhdHVzLCBffSkgPT4gd3JhcHBlcihwYXRfdmlldyhjbHMsIHN0YXR1cykpXG4gIHwgSW5mb1R5cCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHR5cF92aWV3KGNscywgc3RhdHVzKSlcbiAgfCBJbmZvVFBhdCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHRwYXRfdmlldyhjbHMsIHN0YXR1cykpXG4gIH07XG59O1xuXG5sZXQgaW5zcGVjdG9yX3ZpZXcgPSAofmluamVjdCwgfnNldHRpbmdzLCBjaSk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJjdXJzb3ItaW5zcGVjdG9yXCJdIEAgW0luZm8uaXNfZXJyb3IoY2kpID8gZXJyYyA6IG9rY10pLFxuICAgIFt2aWV3X29mX2luZm8ofmluamVjdCwgfnNldHRpbmdzLCBjaSldLFxuICApO1xuXG5sZXQgdmlldyA9ICh+aW5qZWN0LCB+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGN1cnNvcl9pbmZvOiBvcHRpb24oSW5mby50KSkgPT4ge1xuICBsZXQgYmFyX3ZpZXcgPSBkaXYofmF0dHI9QXR0ci5pZChcImJvdHRvbS1iYXJcIikpO1xuICBsZXQgZXJyX3ZpZXcgPSBlcnIgPT5cbiAgICBiYXJfdmlldyhbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPWNsc3MoW1wiY3Vyc29yLWluc3BlY3RvclwiLCBcIm5vLWluZm9cIl0pLFxuICAgICAgICBbZGl2KH5hdHRyPWNsc3MoW1wiaWNvblwiXSksIFtJY29ucy5tYWduaWZ5XSksIHRleHQoZXJyKV0sXG4gICAgICApLFxuICAgIF0pO1xuICBzd2l0Y2ggKGN1cnNvcl9pbmZvKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT4gZGl2X2VtcHR5XG4gIHwgTm9uZSA9PiBlcnJfdmlldyhcIldoaXRlc3BhY2Ugb3IgQ29tbWVudFwiKVxuICB8IFNvbWUoY2kpID0+XG4gICAgYmFyX3ZpZXcoW1xuICAgICAgaW5zcGVjdG9yX3ZpZXcofmluamVjdCwgfnNldHRpbmdzLCBjaSksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPWNsc3MoW1wiaWRcIl0pLFxuICAgICAgICBbdGV4dChTdHJpbmcuc3ViKElkLnRvX3N0cmluZyhJbmZvLmlkX29mKGNpKSksIDAsIDQpKV0sXG4gICAgICApLFxuICAgIF0pXG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBXaWRnZXRzO1xuXG5sZXQgb3B0aW9uX3ZpZXcgPSAobmFtZSwgbikgPT5cbiAgb3B0aW9uKFxuICAgIH5hdHRyPW4gPT0gbmFtZSA/IEF0dHIuY3JlYXRlKFwic2VsZWN0ZWRcIiwgXCJzZWxlY3RlZFwiKSA6IEF0dHIubWFueShbXSksXG4gICAgW3RleHQobildLFxuICApO1xuXG5sZXQgbW9kZV9tZW51ID0gKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhLCB+bW9kZTogU2V0dGluZ3MubW9kZSkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJtb2RlLW5hbWVcIiksIEF0dHIudGl0bGUoXCJUb2dnbGUgTW9kZVwiKV0pLFxuICAgIFtcbiAgICAgIHNlbGVjdChcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5vbl9jaGFuZ2UoKF8sIG5hbWUpID0+XG4gICAgICAgICAgICBpbmplY3QoU2V0KE1vZGUoU2V0dGluZ3MubW9kZV9vZl9zdHJpbmcobmFtZSkpKSlcbiAgICAgICAgICApLFxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICBvcHRpb25fdmlldyhTZXR0aW5ncy5zaG93X21vZGUobW9kZSkpLFxuICAgICAgICAgIFtcIlNjcmF0Y2hcIiwgXCJEb2N1bWVudGF0aW9uXCIsIFwiRXhlcmNpc2VzXCJdLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xuXG5sZXQgc2xpZGVfc2VsZWN0ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5udW1fc2xpZGVzKSA9PiB7XG4gIGxldCBuZXh0X2VkID0gKGN1cl9zbGlkZSArIDEpIG1vZCBudW1fc2xpZGVzO1xuICBsZXQgcHJldl9lZCA9IFV0aWwuSW50VXRpbC5tb2R1bG8oY3VyX3NsaWRlIC0gMSwgbnVtX3NsaWRlcyk7XG4gIFtcbiAgICBidXR0b24oSWNvbnMuYmFjaywgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaFNjcmF0Y2hTbGlkZShwcmV2X2VkKSkpLFxuICAgIHRleHQoUHJpbnRmLnNwcmludGYoXCIlZCAvICVkXCIsIGN1cl9zbGlkZSArIDEsIG51bV9zbGlkZXMpKSxcbiAgICBidXR0b24oSWNvbnMuZm9yd2FyZCwgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaFNjcmF0Y2hTbGlkZShuZXh0X2VkKSkpLFxuICBdO1xufTtcblxubGV0IHNjcmF0Y2hfdmlldyA9ICh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+c2xpZGVzKSA9PlxuICBbbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPVNjcmF0Y2gpXVxuICBAIHNsaWRlX3NlbGVjdCh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+bnVtX3NsaWRlcz1MaXN0Lmxlbmd0aChzbGlkZXMpKTtcblxubGV0IGRvY3VtZW50YXRpb25fdmlldyA9ICh+aW5qZWN0LCB+bmFtZSwgfmVkaXRvcnMpID0+IHtcbiAgbGV0IGVkaXRvcl9uYW1lcyA9IExpc3QubWFwKGZzdCwgZWRpdG9ycyk7XG4gIGxldCByZWMgZmluZF9wcmV2X25leHQ6IGxpc3Qoc3RyaW5nKSA9PiAob3B0aW9uKHN0cmluZyksIG9wdGlvbihzdHJpbmcpKSA9XG4gICAgZnVuXG4gICAgfCBbXVxuICAgIHwgW19dID0+IChOb25lLCBOb25lKVxuICAgIHwgW3gsIHldIHdoZW4gbmFtZSA9PSB4ID0+IChOb25lLCBTb21lKHkpKVxuICAgIHwgW3gsIHldIHdoZW4gbmFtZSA9PSB5ID0+IChTb21lKHgpLCBOb25lKVxuICAgIHwgW18sIF9dID0+IChOb25lLCBOb25lKVxuICAgIHwgW3gsIHksIC4uLl9dIHdoZW4gbmFtZSA9PSB4ID0+IChOb25lLCBTb21lKHkpKVxuICAgIHwgW3gsIHksIHosIC4uLl9dIHdoZW4gbmFtZSA9PSB5ID0+IChTb21lKHgpLCBTb21lKHopKVxuICAgIHwgW18sIC4uLnlzXSA9PiBmaW5kX3ByZXZfbmV4dCh5cyk7XG4gIGxldCAocHJldiwgbmV4dCkgPSBmaW5kX3ByZXZfbmV4dChlZGl0b3JfbmFtZXMpO1xuICBsZXQgcHJldiA9XG4gICAgcHJldlxuICAgIHw+IE9wdGlvbi5tYXAocyA9PlxuICAgICAgICAgYnV0dG9uKEljb25zLmJhY2ssIF8gPT4gaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUocykpKVxuICAgICAgIClcbiAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgYnV0dG9uX2QoXG4gICAgICAgICAgICAgSWNvbnMuYmFjayxcbiAgICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShcIm5vbmVcIikpLFxuICAgICAgICAgICAgIH5kaXNhYmxlZD10cnVlLFxuICAgICAgICAgICApLFxuICAgICAgICk7XG4gIGxldCBuZXh0ID1cbiAgICBuZXh0XG4gICAgfD4gT3B0aW9uLm1hcChzID0+XG4gICAgICAgICBidXR0b24oSWNvbnMuZm9yd2FyZCwgXyA9PlxuICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShzKSlcbiAgICAgICAgIClcbiAgICAgICApXG4gICAgfD4gT3B0aW9uLnZhbHVlKFxuICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgIGJ1dHRvbl9kKFxuICAgICAgICAgICAgIEljb25zLmZvcndhcmQsXG4gICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXCJub25lXCIpKSxcbiAgICAgICAgICAgICB+ZGlzYWJsZWQ9dHJ1ZSxcbiAgICAgICAgICAgKSxcbiAgICAgICApO1xuICBbXG4gICAgbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPURvY3VtZW50YXRpb24pLFxuICAgIHByZXYsXG4gICAgc2VsZWN0KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIub25fY2hhbmdlKChfLCBuYW1lKSA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKG5hbWUpKVxuICAgICAgICApLFxuICAgICAgTGlzdC5tYXAob3B0aW9uX3ZpZXcobmFtZSksIGVkaXRvcl9uYW1lcyksXG4gICAgKSxcbiAgICBuZXh0LFxuICBdO1xufTtcblxubGV0IGluc3RydWN0b3JfdG9nZ2xlID0gKH5pbmplY3QsIH5pbnN0cnVjdG9yX21vZGUpID0+XG4gIEV4ZXJjaXNlU2V0dGluZ3Muc2hvd19pbnN0cnVjdG9yXG4gICAgPyBbXG4gICAgICB0b2dnbGUoXCLwn46TXCIsIH50b29sdGlwPVwiVG9nZ2xlIEluc3RydWN0b3IgTW9kZVwiLCBpbnN0cnVjdG9yX21vZGUsIF8gPT5cbiAgICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoSW5zdHJ1Y3Rvck1vZGUpKVxuICAgICAgKSxcbiAgICBdXG4gICAgOiBbXTtcblxubGV0IGV4ZXJjaXNlc192aWV3ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICBbbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPUV4ZXJjaXNlcyldXG4gIEAgaW5zdHJ1Y3Rvcl90b2dnbGUofmluamVjdCwgfmluc3RydWN0b3JfbW9kZSlcbiAgQCBzbGlkZV9zZWxlY3QofmluamVjdCwgfmN1cl9zbGlkZSwgfm51bV9zbGlkZXM9TGlzdC5sZW5ndGgoc3BlY3MpKTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSxcbiAgICAgIH5lZGl0b3JzOiBFZGl0b3JzLnQsXG4gICAgICB+c2V0dGluZ3MgYXMge2luc3RydWN0b3JfbW9kZSwgX306IFNldHRpbmdzLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgbGV0IGNvbnRlbnRzID1cbiAgICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgICB8IFNjcmF0Y2goY3VyX3NsaWRlLCBzbGlkZXMpID0+XG4gICAgICBzY3JhdGNoX3ZpZXcofmluamVjdCwgfmN1cl9zbGlkZSwgfnNsaWRlcylcbiAgICB8IERvY3VtZW50YXRpb24obmFtZSwgZWRpdG9ycykgPT5cbiAgICAgIGRvY3VtZW50YXRpb25fdmlldyh+aW5qZWN0LCB+bmFtZSwgfmVkaXRvcnMpXG4gICAgfCBFeGVyY2lzZXMoY3VyX3NsaWRlLCBzcGVjcywgXykgPT5cbiAgICAgIGV4ZXJjaXNlc192aWV3KH5jdXJfc2xpZGUsIH5zcGVjcywgfmluamVjdCwgfmluc3RydWN0b3JfbW9kZSlcbiAgICB9O1xuICBkaXYofmF0dHI9QXR0ci5pZChcImVkaXRvci1tb2RlXCIpLCBjb250ZW50cyk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5pbmNsdWRlIEhhejNsc2Nob29sLkdyYWRpbmcuRihFeGVyY2lzZS5FeGVyY2lzZUVudik7XG5cbmxldCBzY29yZV92aWV3ID0gKChlYXJuZWQ6IHBvaW50cywgbWF4OiBwb2ludHMpKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwidGVzdC1wZXJjZW50XCIsXG4gICAgICAgIEZsb2F0LmVxdWFsKGVhcm5lZCwgbWF4KSA/IFwiYWxsLXBhc3NcIiA6IFwic29tZS1mYWlsXCIsXG4gICAgICBdKSxcbiAgICBbdGV4dChQcmludGYuc3ByaW50ZihcIiUuMWYgLyAlLjFmIHB0c1wiLCBlYXJuZWQsIG1heCkpXSxcbiAgKTtcbn07XG5cbmxldCBwZXJjZW50YWdlX3ZpZXcgPSAocDogcGVyY2VudGFnZSkgPT4ge1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICBcInRlc3QtcGVyY2VudFwiLFxuICAgICAgICBGbG9hdC5lcXVhbChwLCAxLikgPyBcImFsbC1wYXNzXCIgOiBcInNvbWUtZmFpbFwiLFxuICAgICAgXSksXG4gICAgW3RleHQoUHJpbnRmLnNwcmludGYoXCIlLjBmJSVcIiwgMTAwLiAqLiBwKSldLFxuICApO1xufTtcblxubW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICBpbmNsdWRlIFRlc3RWYWxpZGF0aW9uUmVwb3J0O1xuICBsZXQgdGV4dHVhbF9zdW1tYXJ5ID0gKHJlcG9ydDogdCkgPT4ge1xuICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXN1bHRzXCIpXVxuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IFtcbiAgICAgICAge1xuICAgICAgICAgIGxldCB0b3RhbF90ZXN0cyA9IHRlc3RfcmVzdWx0cy50b3RhbDtcbiAgICAgICAgICBsZXQgcmVxdWlyZWQgPSByZXBvcnQucmVxdWlyZWQ7XG4gICAgICAgICAgbGV0IG51bV90ZXN0c19tZXNzYWdlID1cbiAgICAgICAgICAgIHRvdGFsX3Rlc3RzID49IHJlcXVpcmVkXG4gICAgICAgICAgICAgID8gXCJhdCBsZWFzdCBcIiArKyBzdHJpbmdfb2ZfaW50KHJlcXVpcmVkKVxuICAgICAgICAgICAgICA6IHN0cmluZ19vZl9pbnQodGVzdF9yZXN1bHRzLnRvdGFsKVxuICAgICAgICAgICAgICAgICsrIFwiIG9mIFwiXG4gICAgICAgICAgICAgICAgKysgc3RyaW5nX29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIkVudGVyZWQgXCJcbiAgICAgICAgICAgICsrIG51bV90ZXN0c19tZXNzYWdlXG4gICAgICAgICAgICArKyBcIiB0ZXN0cy4gXCJcbiAgICAgICAgICAgICsrIHRlc3Rfc3VtbWFyeV9zdHIodGVzdF9yZXN1bHRzKSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZpZXcgPSAofmluamVjdCwgcmVwb3J0OiB0LCBtYXhfcG9pbnRzOiBpbnQpID0+IHtcbiAgICBDZWxsLnJlcG9ydF9mb290ZXJfdmlldyhbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgICAgICBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgICAgICAgICBbc2NvcmVfdmlldyhzY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UocmVwb3J0KSwgbWF4X3BvaW50cykpXVxuICAgICAgICAgICAgQCB0ZXh0dWFsX3N1bW1hcnkocmVwb3J0KSxcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgT3B0aW9uLnRvX2xpc3QoXG4gICAgICAgICAgICByZXBvcnQudGVzdF9yZXN1bHRzXG4gICAgICAgICAgICB8PiBPcHRpb24ubWFwKHRlc3RfcmVzdWx0cyA9PlxuICAgICAgICAgICAgICAgICBUZXN0Vmlldy50ZXN0X2JhcihcbiAgICAgICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgICAgIH50ZXN0X3Jlc3VsdHMsXG4gICAgICAgICAgICAgICAgICAgWW91clRlc3RzVmFsaWRhdGlvbixcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgKSxcbiAgICBdKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQgPSB7XG4gIGluY2x1ZGUgTXV0YXRpb25UZXN0aW5nUmVwb3J0O1xuICBvcGVuIEhhejNsY29yZTtcblxuICBsZXQgc3VtbWFyeV9tZXNzYWdlID0gKH5zY29yZSwgfnRvdGFsLCB+Zm91bmQpOiBOb2RlLnQgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC10ZXh0XCJdKSxcbiAgICAgIFtzY29yZV92aWV3KHNjb3JlKSwgdGV4dChzdW1tYXJ5X3N0cih+dG90YWwsIH5mb3VuZCkpXSxcbiAgICApO1xuXG4gIGxldCBiYXIgPSAofmluamVjdCwgaW5zdGFuY2VzKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LWJhclwiXSksXG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChpZCwgKHN0YXR1cywgXykpID0+XG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInNlZ21lbnRcIiwgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKV0pLFxuICAgICAgICAgICAgICAgIEF0dHIub25fY2xpY2soXG4gICAgICAgICAgICAgICAgICAvL1RPRE86IHdpcmUgdXAgdGVzdCBpZHNcbiAgICAgICAgICAgICAgICAgIFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5CdWdzKGlkKSwgSWQuaW52YWxpZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICApLFxuICAgICAgICBpbnN0YW5jZXMsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IHN1bW1hcnkgPSAofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpID0+IHtcbiAgICBsZXQgdG90YWwgPSBMaXN0Lmxlbmd0aChyZXBvcnQucmVzdWx0cyk7XG4gICAgbGV0IGZvdW5kID1cbiAgICAgIExpc3QubGVuZ3RoKFxuICAgICAgICBMaXN0LmZpbHRlcigoKHg6IFRlc3RTdGF0dXMudCwgXykpID0+IHggPT0gUGFzcywgcmVwb3J0LnJlc3VsdHMpLFxuICAgICAgKTtcbiAgICBsZXQgc3RhdHVzX2NsYXNzID0gdG90YWwgPT0gZm91bmQgPyBcIlBhc3NcIiA6IFwiRmFpbFwiO1xuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgIFwiY2VsbC1pdGVtXCIsXG4gICAgICAgICAgXCJ0ZXN0LXN1bW1hcnlcIixcbiAgICAgICAgICBcImNlbGwtcmVwb3J0XCIsXG4gICAgICAgICAgc3RhdHVzX2NsYXNzLFxuICAgICAgICBdKSxcbiAgICAgIFtcbiAgICAgICAgc3VtbWFyeV9tZXNzYWdlKFxuICAgICAgICAgIH5zY29yZT1zY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UocmVwb3J0KSwgbWF4X3BvaW50cyksXG4gICAgICAgICAgfnRvdGFsLFxuICAgICAgICAgIH5mb3VuZCxcbiAgICAgICAgKSxcbiAgICAgICAgYmFyKH5pbmplY3QsIHJlcG9ydC5yZXN1bHRzKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnQgPSAoaWQsIH5pbmplY3QsIH5oaW50OiBzdHJpbmcsIH5zdGF0dXM6IFRlc3RTdGF0dXMudCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGVzdC1yZXBvcnRcIl0pLFxuICAgICAgICAgIC8vVE9ETzogd2lyZSB1cCB0ZXN0IGlkc1xuICAgICAgICAgIEF0dHIub25fY2xpY2soXG4gICAgICAgICAgICBUZXN0Vmlldy5qdW1wX3RvX3Rlc3QofmluamVjdCwgSGlkZGVuQnVncyhpZCksIElkLmludmFsaWQpLFxuICAgICAgICAgICksXG4gICAgICAgIF0pLFxuICAgICAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcInRlc3QtaWRcIixcbiAgICAgICAgICAgICAgXCJUZXN0XCIgKysgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIC8qIE5PVEU6IHByaW50cyBsZXhpY2FsIGluZGV4LCBub3QgdW5pcXVlIGlkICovXG4gICAgICAgICAgW3RleHQoc3RyaW5nX29mX2ludChpZCArIDEpKV0sXG4gICAgICAgICksXG4gICAgICAgIC8vIFRlc3RWaWV3LnRlc3RfaW5zdGFuY2Vfdmlldyh+Zm9udF9tZXRyaWNzLCBpbnN0YW5jZSksXG4gICAgICBdXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgXCJ0ZXN0LWhpbnRcIixcbiAgICAgICAgICAgICAgXCJ0ZXN0LWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBbdGV4dChoaW50KV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0cyA9ICh+aW5qZWN0LCBjb3ZlcmFnZV9yZXN1bHRzKSA9PlxuICAgIGRpdihcbiAgICAgIGNvdmVyYWdlX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QubWFwaSgoaSwgKHN0YXR1cywgaGludCkpID0+XG4gICAgICAgICAgIGluZGl2aWR1YWxfcmVwb3J0KGksIH5pbmplY3QsIH5oaW50LCB+c3RhdHVzKVxuICAgICAgICAgKSxcbiAgICApO1xuXG4gIC8vIGxldCBwYXNzaW5nX3Rlc3RfaWRzID0gdGVzdF9tYXAgPT5cbiAgLy8gICB0ZXN0X21hcFxuICAvLyAgIHw+IExpc3QuZmlsdGVyKCgoX2lkLCByZXBvcnRzKSkgPT5cbiAgLy8gICAgICAgIExpc3QuZm9yX2FsbChcbiAgLy8gICAgICAgICAgKChfLCBzdGF0dXMpKSA9PiBzdGF0dXMgPT0gSGF6M2xjb3JlLlRlc3RTdGF0dXMuUGFzcyxcbiAgLy8gICAgICAgICAgcmVwb3J0cyxcbiAgLy8gICAgICAgIClcbiAgLy8gICAgICApXG4gIC8vICAgfD4gTGlzdC5zcGxpdFxuICAvLyAgIHw+IGZzdDtcblxuICAvLyBsZXQgZmFpbGluZ190ZXN0X2lkcyA9IHRlc3RfbWFwID0+XG4gIC8vICAgdGVzdF9tYXBcbiAgLy8gICB8PiBMaXN0LmZpbHRlcigoKF9pZCwgcmVwb3J0cykpID0+XG4gIC8vICAgICAgICBMaXN0LmZvcl9hbGwoXG4gIC8vICAgICAgICAgICgoXywgc3RhdHVzKSkgPT4gc3RhdHVzID09IEhhejNsY29yZS5UZXN0U3RhdHVzLkZhaWwsXG4gIC8vICAgICAgICAgIHJlcG9ydHMsXG4gIC8vICAgICAgICApXG4gIC8vICAgICAgKVxuICAvLyAgIHw+IExpc3Quc3BsaXRcbiAgLy8gICB8PiBmc3Q7XG5cbiAgLy8gbGV0IGdldF90ZXN0X21hcCA9IChlZGl0b3JzOiBsaXN0KEhhejNsY29yZS5FZGl0b3IudCkpID0+IHtcbiAgLy8gICBsZXQgKHJlZmVyZW5jZV90ZXJtLCByZWZlcmVuY2VfbWFwKSA9IHNwbGljZWRfc3RhdGljcyhlZGl0b3JzKTtcbiAgLy8gICBsZXQgcmVzdWx0X3JlZmVyZW5jZSA9XG4gIC8vICAgICBJbnRlcmZhY2UudGVzdF9yZXN1bHRzKHJlZmVyZW5jZV9tYXAsIHJlZmVyZW5jZV90ZXJtKTtcbiAgLy8gICBzd2l0Y2ggKHJlc3VsdF9yZWZlcmVuY2UpIHtcbiAgLy8gICB8IE5vbmUgPT4gW11cbiAgLy8gICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PiB0ZXN0X3Jlc3VsdHMudGVzdF9tYXBcbiAgLy8gICB9O1xuICAvLyB9O1xuICAvLyBsZXQgc2hvd190ZXJtID0gKGVkaXRvcjogRWRpdG9yLnQsIF8pID0+XG4gIC8vICAgZWRpdG9yLnN0YXRlLnppcHBlclxuICAvLyAgIHw+IFppcHBlci56aXBcbiAgLy8gICB8PiBNYWtlVGVybS5nb1xuICAvLyAgIHw+IGZzdFxuICAvLyAgIHw+IFRlcm0uVUV4cC5zaG93XG4gIC8vICAgfD4gcHJpbnRfZW5kbGluZVxuICAvLyAgIHw+IChfID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZSk7XG5cbiAgLy8gbGV0IGdldF9maXJzdF9jb21tb24gPVxuICAvLyAgICAgKHJlZmVyZW5jZV9wYXNzaW5nLCB3cm9uZyk6IChUZXN0U3RhdHVzLnQsIG9wdGlvbignYSkpID0+IHtcbiAgLy8gICBsZXQgd3JvbmdfdGVzdF9tYXAgPSB3cm9uZyB8PiBnZXRfdGVzdF9tYXA7XG4gIC8vICAgbGV0IHdyb25nX2ZhaWxpbmcgPSB3cm9uZ190ZXN0X21hcCB8PiBmYWlsaW5nX3Rlc3RfaWRzO1xuICAvLyAgIGxldCBjb21tb24gPVxuICAvLyAgICAgTGlzdC5maWx0ZXIoeCA9PiBMaXN0Lm1lbSh4LCByZWZlcmVuY2VfcGFzc2luZyksIHdyb25nX2ZhaWxpbmcpO1xuICAvLyAgIGxldCBpbnN0YW5jZTogb3B0aW9uKGxpc3QoJ2EpKSA9XG4gIC8vICAgICBzd2l0Y2ggKGNvbW1vbikge1xuICAvLyAgICAgfCBbXSA9PiBOb25lXG4gIC8vICAgICB8IFt4LCAuLi5fXSA9PiBMaXN0LmFzc29jX29wdCh4LCB3cm9uZ190ZXN0X21hcClcbiAgLy8gICAgIH07XG4gIC8vICAgc3dpdGNoIChpbnN0YW5jZSkge1xuICAvLyAgIHwgU29tZShbaW5zdGFuY2UsIC4uLl9dKSA9PiAoVGVzdFN0YXR1cy5QYXNzLCBTb21lKGluc3RhbmNlKSlcbiAgLy8gICB8IF8gPT4gKFRlc3RTdGF0dXMuRmFpbCwgTm9uZSlcbiAgLy8gICB9O1xuICAvLyB9O1xuXG4gIGxldCB2aWV3ID0gKH5pbmplY3QsIHJlcG9ydDogdCwgbWF4X3BvaW50czogaW50KSA9PlxuICAgIGlmIChtYXhfcG9pbnRzID09IDApIHtcbiAgICAgIE5vZGUuZGl2KFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ2VsbC5wYW5lbChcbiAgICAgICAgfmNsYXNzZXM9W1widGVzdC1wYW5lbFwiXSxcbiAgICAgICAgW1xuICAgICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICAgIFwiTXV0YXRpb24gVGVzdGluZ1wiLFxuICAgICAgICAgICAgfnJlc3Q9XCI6IFlvdXIgVGVzdHMgdnMuIEJ1Z2d5IEltcGxlbWVudGF0aW9ucyAoaGlkZGVuKVwiLFxuICAgICAgICAgICksXG4gICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKH5pbmplY3QsIHJlcG9ydC5yZXN1bHRzKSxcbiAgICAgICAgXSxcbiAgICAgICAgfmZvb3Rlcj1Tb21lKHN1bW1hcnkofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpKSxcbiAgICAgICk7XG4gICAgfTtcbn07XG5cbm1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gIGluY2x1ZGUgU3ludGF4UmVwb3J0O1xuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnQgPSAoaTogaW50LCBoaW50OiBzdHJpbmcsIHN0YXR1czogYm9vbCkgPT4ge1xuICAgIGxldCByZXN1bHRfc3RyaW5nID0gc3RhdHVzID8gXCJQYXNzXCIgOiBcIkluZGV0XCI7XG5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1yZXBvcnRcIl0pLFxuICAgICAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtaWRcIiwgXCJUZXN0XCIgKysgcmVzdWx0X3N0cmluZ10pLFxuICAgICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaSArIDEpKV0sXG4gICAgICAgICksXG4gICAgICBdXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LWhpbnRcIiwgXCJ0ZXN0LWluc3RhbmNlXCIsIHJlc3VsdF9zdHJpbmddKSxcbiAgICAgICAgICBbdGV4dChoaW50KV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0cyA9IChoaW50ZWRfcmVzdWx0czogbGlzdCgoYm9vbCwgc3RyaW5nKSkpID0+IHtcbiAgICBkaXYoXG4gICAgICBoaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoaSwgaGludCwgc3RhdHVzKVxuICAgICAgICAgKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCB2aWV3ID0gKHN5bnRheF9yZXBvcnQ6IHQpID0+IHtcbiAgICBDZWxsLnBhbmVsKFxuICAgICAgfmNsYXNzZXM9W1widGVzdC1wYW5lbFwiXSxcbiAgICAgIFtcbiAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgIFwiU3ludGF4IFZhbGlkYXRpb25cIixcbiAgICAgICAgICB+cmVzdD1cbiAgICAgICAgICAgIFwiOiBEb2VzIHlvdXIgaW1wbGVtZW50YXRpb24gc2F0aXNmeSB0aGUgc3ludGFjdGljIHJlcXVpcmVtZW50cz9cIixcbiAgICAgICAgKSxcbiAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKHN5bnRheF9yZXBvcnQuaGludGVkX3Jlc3VsdHMpLFxuICAgICAgXSxcbiAgICAgIH5mb290ZXI9XG4gICAgICAgIFNvbWUoXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlX3ZpZXcoc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlKSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgICAgICAgICBcIiBvZiB0aGUgSW1wbGVtZW50YXRpb24gVmFsaWRhdGlvbiBwb2ludHMgd2lsbCBiZSBlYXJuZWRcIixcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgb3BlbiBIYXozbGNvcmU7XG4gIGluY2x1ZGUgSW1wbEdyYWRpbmdSZXBvcnQ7XG4gIGxldCB0ZXh0dWFsX3N1bW1hcnkgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHNcIildXG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dCh0ZXN0X3N1bW1hcnlfc3RyKHRlc3RfcmVzdWx0cykpO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgLy8gbGV0IHN1bW1hcnkgPSAofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpID0+IHtcbiAgLy8gICBsZXQgcGVyY2VudGFnZSA9IHBlcmNlbnRhZ2UocmVwb3J0KTtcbiAgLy8gICBsZXQgc2NvcmUgPSBzY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UpO1xuICAvLyAgIGxldCB0b3RhbCA9IHRvdGFsKHJlcG9ydCk7XG4gIC8vICAgbGV0IG51bV9wYXNzZWQgPSBudW1fcGFzc2VkKHJlcG9ydCk7XG4gIC8vICAgbGV0IHN0YXR1c19jbGFzcyA9IHRvdGFsID09IG51bV9wYXNzZWQgPyBcIlBhc3NcIiA6IFwiRmFpbFwiO1xuICAvLyAgIGRpdihcbiAgLy8gICAgIH5hdHRyPVxuICAvLyAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAvLyAgICAgICAgIFwiY2VsbC1pdGVtXCIsXG4gIC8vICAgICAgICAgXCJ0ZXN0LXN1bW1hcnlcIixcbiAgLy8gICAgICAgICBcImNlbGwtcmVwb3J0XCIsXG4gIC8vICAgICAgICAgc3RhdHVzX2NsYXNzLFxuICAvLyAgICAgICBdKSxcbiAgLy8gICAgIFtcbiAgLy8gICAgICAgc3VtbWFyeV9tZXNzYWdlKFxuICAvLyAgICAgICAgIH5zY29yZSxcbiAgLy8gICAgICAgICB+dG90YWwsXG4gIC8vICAgICAgICAgfmZvdW5kPW51bV9wYXNzZWQsXG4gIC8vICAgICAgICksXG4gIC8vICAgICAgIGJhcih+aW5qZWN0LCByZXBvcnQucmVzdWx0cyksXG4gIC8vICAgICBdLFxuICAvLyAgICk7XG4gIC8vIH07XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0ID0gKGksIH5pbmplY3QsIH5oaW50OiBzdHJpbmcsIH5zdGF0dXMsIChpZCwgXykpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRlc3QtcmVwb3J0XCJdKSxcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5UZXN0cywgaWQpKSxcbiAgICAgICAgXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1pZFwiLFxuICAgICAgICAgICAgICBcIlRlc3RcIiArKyBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgLyogTk9URTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCB1bmlxdWUgaWQgKi9cbiAgICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGkgKyAxKSldLFxuICAgICAgICApLFxuICAgICAgICAvLyBUZXN0Vmlldy50ZXN0X2luc3RhbmNlX3ZpZXcofmZvbnRfbWV0cmljcywgaW5zdGFuY2UpLFxuICAgICAgXVxuICAgICAgQCBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1oaW50XCIsXG4gICAgICAgICAgICAgIFwidGVzdC1pbnN0YW5jZVwiLFxuICAgICAgICAgICAgICBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgW3RleHQoaGludCldLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICApO1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydHMgPSAofmluamVjdCwgfnJlcG9ydCkgPT4ge1xuICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBMaXN0Lmxlbmd0aCh0ZXN0X3Jlc3VsdHMudGVzdF9tYXApXG4gICAgICAgICAgPT0gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKSA9PlxuICAgICAgLyogTk9URTogVGhpcyBjb25kaXRpb24gd2lsbCBiZSBmYWxzZSB3aGVuIGV2YWx1YXRpb24gY3Jhc2hlcyxcbiAgICAgICAqIGZvciBleGFtcGxlIGR1ZSB0byBhIHN0YWNrIG92ZXJmbG93LCB3aGljaCBtYXkgb2NjdXIgaW4gbm9ybWFsIG9wZXJhdGlvbiAgKi9cbiAgICAgIGRpdihcbiAgICAgICAgcmVwb3J0LmhpbnRlZF9yZXN1bHRzXG4gICAgICAgIHw+IExpc3QubWFwaSgoaSwgKHN0YXR1cywgaGludCkpID0+XG4gICAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoXG4gICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgIH5oaW50LFxuICAgICAgICAgICAgICAgfnN0YXR1cyxcbiAgICAgICAgICAgICAgIExpc3QubnRoKHRlc3RfcmVzdWx0cy50ZXN0X21hcCwgaSksXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICApLFxuICAgICAgKVxuICAgIHwgXyA9PiBkaXYoW10pXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmlldyA9XG4gICAgICAofmluamVjdCwgfnJlcG9ydDogdCwgfnN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LCB+bWF4X3BvaW50czogaW50KSA9PiB7XG4gICAgQ2VsbC5wYW5lbChcbiAgICAgIH5jbGFzc2VzPVtcImNlbGwtaXRlbVwiLCBcInBhbmVsXCIsIFwidGVzdC1wYW5lbFwiXSxcbiAgICAgIFtcbiAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgIFwiSW1wbGVtZW50YXRpb24gR3JhZGluZ1wiLFxuICAgICAgICAgIH5yZXN0PVwiOiBIaWRkZW4gVGVzdHMgdnMuIFlvdXIgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgKSxcbiAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKH5pbmplY3QsIH5yZXBvcnQpLFxuICAgICAgXSxcbiAgICAgIH5mb290ZXI9XG4gICAgICAgIFNvbWUoXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzY29yZV92aWV3KFxuICAgICAgICAgICAgICAgICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlKHJlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhfcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIHRleHR1YWxfc3VtbWFyeShyZXBvcnQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgQCBPcHRpb24udG9fbGlzdChcbiAgICAgICAgICAgICAgICAgIHJlcG9ydC50ZXN0X3Jlc3VsdHNcbiAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAodGVzdF9yZXN1bHRzID0+XG4gICAgICAgICAgICAgICAgICAgICAgIFRlc3RWaWV3LnRlc3RfYmFyKH5pbmplY3QsIH50ZXN0X3Jlc3VsdHMsIEhpZGRlblRlc3RzKVxuICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gIGluY2x1ZGUgR3JhZGluZ1JlcG9ydDtcblxuICBsZXQgdmlld19vdmVyYWxsX3Njb3JlID0gKHJlcG9ydDogdCkgPT4ge1xuICAgIHNjb3JlX3ZpZXcob3ZlcmFsbF9zY29yZShyZXBvcnQpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcblxudHlwZSB2aXNfbWFya2VkKCdhKSA9XG4gIHwgSW5zdHJ1Y3Rvck9ubHkodW5pdCA9PiAnYSlcbiAgfCBBbHdheXMoJ2EpO1xuXG5sZXQgcmVuZGVyX2NlbGxzID0gKHNldHRpbmdzOiBTZXR0aW5ncy50LCB2OiBsaXN0KHZpc19tYXJrZWQoTm9kZS50KSkpID0+IHtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIHZpcyA9PlxuICAgICAgc3dpdGNoICh2aXMpIHtcbiAgICAgIHwgSW5zdHJ1Y3Rvck9ubHkoZikgPT4gc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlID8gU29tZShmKCkpIDogTm9uZVxuICAgICAgfCBBbHdheXMobm9kZSkgPT4gU29tZShub2RlKVxuICAgICAgfSxcbiAgICB2LFxuICApO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmV4ZXJjaXNlLFxuICAgICAgfnJlc3VsdHMsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICApID0+IHtcbiAgbGV0IEV4ZXJjaXNlLntlZHMsIHBvc30gPSBleGVyY2lzZTtcbiAgbGV0IHN0aXRjaGVkX2R5bmFtaWNzID1cbiAgICBFeGVyY2lzZS5zdGl0Y2hfZHluYW1pYyhcbiAgICAgIHNldHRpbmdzLmNvcmUsXG4gICAgICBleGVyY2lzZSxcbiAgICAgIHNldHRpbmdzLmNvcmUuZHluYW1pY3MgPyBTb21lKHJlc3VsdHMpIDogTm9uZSxcbiAgICApO1xuICBsZXQge1xuICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICB1c2VyX2ltcGwsXG4gICAgdXNlcl90ZXN0cyxcbiAgICBwcmVsdWRlLFxuICAgIGluc3RydWN0b3IsXG4gICAgaGlkZGVuX2J1Z3MsXG4gICAgaGlkZGVuX3Rlc3RzOiBfLFxuICB9OlxuICAgIEV4ZXJjaXNlLnN0aXRjaGVkKEV4ZXJjaXNlLkR5bmFtaWNzSXRlbS50KSA9IHN0aXRjaGVkX2R5bmFtaWNzO1xuXG4gIGxldCBncmFkaW5nX3JlcG9ydCA9IEdyYWRpbmcuR3JhZGluZ1JlcG9ydC5tayhlZHMsIH5zdGl0Y2hlZF9keW5hbWljcyk7XG5cbiAgbGV0IHNjb3JlX3ZpZXcgPSBHcmFkaW5nLkdyYWRpbmdSZXBvcnQudmlld19vdmVyYWxsX3Njb3JlKGdyYWRpbmdfcmVwb3J0KTtcblxuICBsZXQgZWRpdG9yX3ZpZXcgPVxuICAgICAgKFxuICAgICAgICB+ZWRpdG9yOiBFZGl0b3IudCxcbiAgICAgICAgfmNhcHRpb246IHN0cmluZyxcbiAgICAgICAgfnN1YmNhcHRpb246IG9wdGlvbihzdHJpbmcpPT8sXG4gICAgICAgIH5mb290ZXI9PyxcbiAgICAgICAgfmRpOiBFeGVyY2lzZS5EeW5hbWljc0l0ZW0udCxcbiAgICAgICAgdGhpc19wb3MsXG4gICAgICApID0+IHtcbiAgICBDZWxsLmVkaXRvcl92aWV3KFxuICAgICAgfnNlbGVjdGVkPXBvcyA9PSB0aGlzX3BvcyxcbiAgICAgIH5lcnJvcl9pZHM9XG4gICAgICAgIFN0YXRpY3MuTWFwLmVycm9yX2lkcyhlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcywgZGkuaW5mb19tYXApLFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZSxcbiAgICAgIH5tb3VzZWRvd25fdXBkYXRlcz1bU3dpdGNoRWRpdG9yKHRoaXNfcG9zKV0sXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5jYXB0aW9uPUNlbGwuY2FwdGlvbihjYXB0aW9uLCB+cmVzdD0/c3ViY2FwdGlvbiksXG4gICAgICB+dGFyZ2V0X2lkPUV4ZXJjaXNlLnNob3dfcG9zKHRoaXNfcG9zKSxcbiAgICAgIH50ZXN0X3Jlc3VsdHM9TW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKGRpLnJlc3VsdCksXG4gICAgICB+Zm9vdGVyPyxcbiAgICAgIGVkaXRvcixcbiAgICApO1xuICB9O1xuXG4gIGxldCB0aXRsZV92aWV3ID0gQ2VsbC50aXRsZV9jZWxsKGVkcy50aXRsZSk7XG5cbiAgbGV0IHByb21wdF92aWV3ID1cbiAgICBDZWxsLm5hcnJhdGl2ZV9jZWxsKFxuICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiY2VsbC1wcm9tcHRcIiksIFtlZHMucHJvbXB0XSksXG4gICAgKTtcblxuICBsZXQgcHJlbHVkZV92aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgUHJlbHVkZSxcbiAgICAgICAgfmNhcHRpb249XCJQcmVsdWRlXCIsXG4gICAgICAgIH5zdWJjYXB0aW9uPXNldHRpbmdzLmluc3RydWN0b3JfbW9kZSA/IFwiXCIgOiBcIiAoUmVhZC1Pbmx5KVwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy5wcmVsdWRlLFxuICAgICAgICB+ZGk9cHJlbHVkZSxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgY29ycmVjdF9pbXBsX3ZpZXcgPVxuICAgIEluc3RydWN0b3JPbmx5KFxuICAgICAgKCkgPT5cbiAgICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgICAgQ29ycmVjdEltcGwsXG4gICAgICAgICAgfmNhcHRpb249XCJDb3JyZWN0IEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgICAgfmVkaXRvcj1lZHMuY29ycmVjdF9pbXBsLFxuICAgICAgICAgIH5kaT1pbnN0cnVjdG9yLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgLy8gZGV0ZXJtaW5lIHRyYWlsaW5nIGhvbGVcbiAgLy8gVE9ETzogbW9kdWxlXG4gIGxldCBjb3JyZWN0X2ltcGxfY3R4X3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIHtcbiAgICAgICAgbGV0IGV4cF9jdHhfdmlldyA9IHtcbiAgICAgICAgICBsZXQgY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4ID1cbiAgICAgICAgICAgIEhhejNsY29yZS5FZGl0b3IudHJhaWxpbmdfaG9sZV9jdHgoXG4gICAgICAgICAgICAgIGVkcy5jb3JyZWN0X2ltcGwsXG4gICAgICAgICAgICAgIGluc3RydWN0b3IuaW5mb19tYXAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGxldCBwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4ID1cbiAgICAgICAgICAgIEhhejNsY29yZS5FZGl0b3IudHJhaWxpbmdfaG9sZV9jdHgoZWRzLnByZWx1ZGUsIHByZWx1ZGUuaW5mb19tYXApO1xuICAgICAgICAgIHN3aXRjaCAoY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4LCBwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4KSB7XG4gICAgICAgICAgfCAoTm9uZSwgXykgPT4gTm9kZS5kaXYoW3RleHQoXCJObyBjb250ZXh0IGF2YWlsYWJsZSAoMSlcIildKVxuICAgICAgICAgIHwgKF8sIE5vbmUpID0+IE5vZGUuZGl2KFt0ZXh0KFwiTm8gY29udGV4dCBhdmFpbGFibGUgKDIpXCIpXSkgLy8gVE9ETyBzaG93IGV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3JcbiAgICAgICAgICB8IChcbiAgICAgICAgICAgICAgU29tZShjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgpLFxuICAgICAgICAgICAgICBTb21lKHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgpLFxuICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgbGV0IHNwZWNpZmljX2N0eCA9XG4gICAgICAgICAgICAgIEhhejNsY29yZS5DdHguc3VidHJhY3RfcHJlZml4KFxuICAgICAgICAgICAgICAgIGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCxcbiAgICAgICAgICAgICAgICBwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4LFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgc3dpdGNoIChzcGVjaWZpY19jdHgpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBOb2RlLmRpdihbdGV4dChcIk5vIGNvbnRleHQgYXZhaWxhYmxlXCIpXSkgLy8gVE9ETyBzaG93IGV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3JcbiAgICAgICAgICAgIHwgU29tZShzcGVjaWZpY19jdHgpID0+XG4gICAgICAgICAgICAgIEN0eEluc3BlY3Rvci5jdHhfdmlldyh+aW5qZWN0LCBzcGVjaWZpY19jdHgpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIENlbGwuc2ltcGxlX2NlbGxfdmlldyhbXG4gICAgICAgICAgQ2VsbC5zaW1wbGVfY2VsbF9pdGVtKFtcbiAgICAgICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICAgICAgXCJDb3JyZWN0IEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgICAgICAgIH5yZXN0PVwiIChUeXBlIFNpZ25hdHVyZXMgT25seSlcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBleHBfY3R4X3ZpZXcsXG4gICAgICAgICAgXSksXG4gICAgICAgIF0pO1xuICAgICAgfSxcbiAgICApO1xuXG4gIGxldCB5b3VyX3Rlc3RzX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VyVGVzdHNWYWxpZGF0aW9uLFxuICAgICAgICB+Y2FwdGlvbj1cIlRlc3QgVmFsaWRhdGlvblwiLFxuICAgICAgICB+c3ViY2FwdGlvbj1cIjogWW91ciBUZXN0cyB2cy4gQ29ycmVjdCBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgICB+ZGk9dGVzdF92YWxpZGF0aW9uLFxuICAgICAgICB+Zm9vdGVyPVtcbiAgICAgICAgICBHcmFkaW5nLlRlc3RWYWxpZGF0aW9uUmVwb3J0LnZpZXcoXG4gICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgZ3JhZGluZ19yZXBvcnQudGVzdF92YWxpZGF0aW9uX3JlcG9ydCxcbiAgICAgICAgICAgIGdyYWRpbmdfcmVwb3J0LnBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgd3JvbmdfaW1wbF92aWV3cyA9XG4gICAgTGlzdC5tYXBpKFxuICAgICAgKGksIChFeGVyY2lzZS57aW1wbCwgX30sIGRpKSkgPT4ge1xuICAgICAgICBJbnN0cnVjdG9yT25seShcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgICAgICAgIEhpZGRlbkJ1Z3MoaSksXG4gICAgICAgICAgICAgIH5jYXB0aW9uPVwiV3JvbmcgSW1wbGVtZW50YXRpb24gXCIgKysgc3RyaW5nX29mX2ludChpICsgMSksXG4gICAgICAgICAgICAgIH5lZGl0b3I9aW1wbCxcbiAgICAgICAgICAgICAgfmRpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIExpc3QuY29tYmluZShlZHMuaGlkZGVuX2J1Z3MsIGhpZGRlbl9idWdzKSxcbiAgICApO1xuXG4gIGxldCBtdXRhdGlvbl90ZXN0aW5nX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIEdyYWRpbmcuTXV0YXRpb25UZXN0aW5nUmVwb3J0LnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIGdyYWRpbmdfcmVwb3J0Lm11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0LFxuICAgICAgICBncmFkaW5nX3JlcG9ydC5wb2ludF9kaXN0cmlidXRpb24ubXV0YXRpb25fdGVzdGluZyxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgeW91cl9pbXBsX3ZpZXcgPSB7XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFlvdXJJbXBsLFxuICAgICAgICB+Y2FwdGlvbj1cIllvdXIgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgfmVkaXRvcj1lZHMueW91cl9pbXBsLFxuICAgICAgICB+ZGk9dXNlcl9pbXBsLFxuICAgICAgICB+Zm9vdGVyPVxuICAgICAgICAgIENlbGwuZm9vdGVyKFxuICAgICAgICAgICAgfmxvY2tlZD1mYWxzZSxcbiAgICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgICB+cmVzdWx0PXVzZXJfaW1wbC5yZXN1bHQsXG4gICAgICAgICAgICB+cmVzdWx0X2tleT1FeGVyY2lzZS51c2VyX2ltcGxfa2V5LFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHN5bnRheF9ncmFkaW5nX3ZpZXcgPVxuICAgIEFsd2F5cyhHcmFkaW5nLlN5bnRheFJlcG9ydC52aWV3KGdyYWRpbmdfcmVwb3J0LnN5bnRheF9yZXBvcnQpKTtcblxuICBsZXQgaW1wbF92YWxpZGF0aW9uX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VyVGVzdHNUZXN0aW5nLFxuICAgICAgICB+Y2FwdGlvbj1cIkltcGxlbWVudGF0aW9uIFZhbGlkYXRpb25cIixcbiAgICAgICAgfnN1YmNhcHRpb249XG4gICAgICAgICAgXCI6IFlvdXIgVGVzdHMgKGNvZGUgc3luY2hyb25pemVkIHdpdGggVGVzdCBWYWxpZGF0aW9uIGNlbGwgYWJvdmUpIHZzLiBZb3VyIEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICAgIH5kaT11c2VyX3Rlc3RzLFxuICAgICAgICB+Zm9vdGVyPVtcbiAgICAgICAgICBDZWxsLnRlc3RfcmVwb3J0X2Zvb3Rlcl92aWV3KFxuICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgIH50ZXN0X3Jlc3VsdHM9TW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHVzZXJfdGVzdHMucmVzdWx0KSxcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBoaWRkZW5fdGVzdHNfdmlldyA9XG4gICAgSW5zdHJ1Y3Rvck9ubHkoXG4gICAgICAoKSA9PlxuICAgICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgICBIaWRkZW5UZXN0cyxcbiAgICAgICAgICB+Y2FwdGlvbj1cIkhpZGRlbiBUZXN0c1wiLFxuICAgICAgICAgIH5lZGl0b3I9ZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyxcbiAgICAgICAgICB+ZGk9aW5zdHJ1Y3RvcixcbiAgICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBpbXBsX2dyYWRpbmdfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgR3JhZGluZy5JbXBsR3JhZGluZ1JlcG9ydC52aWV3KFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+cmVwb3J0PWdyYWRpbmdfcmVwb3J0LmltcGxfZ3JhZGluZ19yZXBvcnQsXG4gICAgICAgIH5zeW50YXhfcmVwb3J0PWdyYWRpbmdfcmVwb3J0LnN5bnRheF9yZXBvcnQsXG4gICAgICAgIH5tYXhfcG9pbnRzPWdyYWRpbmdfcmVwb3J0LnBvaW50X2Rpc3RyaWJ1dGlvbi5pbXBsX2dyYWRpbmcsXG4gICAgICApLFxuICAgICk7XG5cbiAgW3Njb3JlX3ZpZXcsIHRpdGxlX3ZpZXcsIHByb21wdF92aWV3XVxuICBAIHJlbmRlcl9jZWxscyhcbiAgICAgIHNldHRpbmdzLFxuICAgICAgW1xuICAgICAgICBwcmVsdWRlX3ZpZXcsXG4gICAgICAgIGNvcnJlY3RfaW1wbF92aWV3LFxuICAgICAgICBjb3JyZWN0X2ltcGxfY3R4X3ZpZXcsXG4gICAgICAgIHlvdXJfdGVzdHNfdmlldyxcbiAgICAgIF1cbiAgICAgIEAgd3JvbmdfaW1wbF92aWV3c1xuICAgICAgQCBbXG4gICAgICAgIG11dGF0aW9uX3Rlc3RpbmdfdmlldyxcbiAgICAgICAgeW91cl9pbXBsX3ZpZXcsXG4gICAgICAgIHN5bnRheF9ncmFkaW5nX3ZpZXcsXG4gICAgICAgIGltcGxfdmFsaWRhdGlvbl92aWV3LFxuICAgICAgICBoaWRkZW5fdGVzdHNfdmlldyxcbiAgICAgICAgaW1wbF9ncmFkaW5nX3ZpZXcsXG4gICAgICBdLFxuICAgICk7XG59O1xuXG5sZXQgcmVzZXRfYnV0dG9uID0gaW5qZWN0ID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnRyYXNoLFxuICAgIF8gPT4ge1xuICAgICAgbGV0IGNvbmZpcm1lZCA9XG4gICAgICAgIEpzVXRpbC5jb25maXJtKFxuICAgICAgICAgIFwiQXJlIHlvdSBTVVJFIHlvdSB3YW50IHRvIHJlc2V0IHRoaXMgZXhlcmNpc2U/IFlvdSB3aWxsIGxvc2UgYW55IGV4aXN0aW5nIGNvZGUgdGhhdCB5b3UgaGF2ZSB3cml0dGVuLCBhbmQgY291cnNlIHN0YWZmIGhhdmUgbm8gd2F5IHRvIHJlc3RvcmUgaXQhXCIsXG4gICAgICAgICk7XG4gICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUmVzZXRDdXJyZW50RWRpdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICAgIH07XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIlJlc2V0IEV4ZXJjaXNlXCIsXG4gICk7XG5cbmxldCBpbnN0cnVjdG9yX2V4cG9ydCA9IChleGVyY2lzZTogRXhlcmNpc2Uuc3RhdGUpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICAvLyAubWwgZmlsZXMgYmVjYXVzZSBzaG93IHVzZXMgT0NhbWwgc3ludGF4IChkdW5lIGhhbmRsZXMgc2VhbWxlc3NseSlcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZTtcbiAgICAgIGxldCBmaWxlbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZSArKyBcIi5tbFwiO1xuICAgICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwidGV4dC9wbGFpblwiO1xuICAgICAgbGV0IGNvbnRlbnRzID0gRXhlcmNpc2UuZXhwb3J0X21vZHVsZShtb2R1bGVfbmFtZSwgZXhlcmNpc2UpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX3N0cmluZ19maWxlKH5maWxlbmFtZSwgfmNvbnRlbnRfdHlwZSwgfmNvbnRlbnRzKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IEV4ZXJjaXNlIE1vZHVsZVwiLFxuICApO1xuXG5sZXQgaW5zdHJ1Y3Rvcl90cmFuc2l0aW9uYXJ5X2V4cG9ydCA9IChleGVyY2lzZTogRXhlcmNpc2Uuc3RhdGUpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICAvLyAubWwgZmlsZXMgYmVjYXVzZSBzaG93IHVzZXMgT0NhbWwgc3ludGF4IChkdW5lIGhhbmRsZXMgc2VhbWxlc3NseSlcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZTtcbiAgICAgIGxldCBmaWxlbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZSArKyBcIi5tbFwiO1xuICAgICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwidGV4dC9wbGFpblwiO1xuICAgICAgbGV0IGNvbnRlbnRzID1cbiAgICAgICAgRXhlcmNpc2UuZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlKG1vZHVsZV9uYW1lLCBleGVyY2lzZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUofmZpbGVuYW1lLCB+Y29udGVudF90eXBlLCB+Y29udGVudHMpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgVHJhbnNpdGlvbmFyeSBFeGVyY2lzZSBNb2R1bGVcIixcbiAgKTtcblxubGV0IGluc3RydWN0b3JfZ3JhZGluZ19leHBvcnQgPSAoZXhlcmNpc2U6IEV4ZXJjaXNlLnN0YXRlKSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgLy8gLm1sIGZpbGVzIGJlY2F1c2Ugc2hvdyB1c2VzIE9DYW1sIHN5bnRheCAoZHVuZSBoYW5kbGVzIHNlYW1sZXNzbHkpXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWU7XG4gICAgICBsZXQgZmlsZW5hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWUgKysgXCJfZ3JhZGluZy5tbFwiO1xuICAgICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwidGV4dC9wbGFpblwiO1xuICAgICAgbGV0IGNvbnRlbnRzID0gRXhlcmNpc2UuZXhwb3J0X2dyYWRpbmdfbW9kdWxlKG1vZHVsZV9uYW1lLCBleGVyY2lzZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUofmZpbGVuYW1lLCB+Y29udGVudF90eXBlLCB+Y29udGVudHMpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgR3JhZGluZyBFeGVyY2lzZSBNb2R1bGVcIixcbiAgKTtcblxubGV0IGRvd25sb2FkX2VkaXRvcl9zdGF0ZSA9ICh+aW5zdHJ1Y3Rvcl9tb2RlKSA9PlxuICBMb2cuZ2V0X2FuZChsb2cgPT4ge1xuICAgIGxldCBkYXRhID0gRXhwb3J0LmV4cG9ydF9hbGwofmluc3RydWN0b3JfbW9kZSwgfmxvZyk7XG4gICAgSnNVdGlsLmRvd25sb2FkX2pzb24oRXhlcmNpc2VTZXR0aW5ncy5maWxlbmFtZSwgZGF0YSk7XG4gIH0pO1xuXG5sZXQgZXhwb3J0X3N1Ym1pc3Npb24gPSAofnNldHRpbmdzOiBTZXR0aW5ncy50KSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgZG93bmxvYWRfZWRpdG9yX3N0YXRlKH5pbnN0cnVjdG9yX21vZGU9c2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IFN1Ym1pc3Npb25cIixcbiAgKTtcblxubGV0IGltcG9ydF9zdWJtaXNzaW9uID0gKH5pbmplY3QpID0+XG4gIFdpZGdldHMuZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkKFxuICAgIFwiaW1wb3J0LXN1Ym1pc3Npb25cIixcbiAgICBJY29ucy5zdGFyLFxuICAgIGZpbGUgPT4ge1xuICAgICAgc3dpdGNoIChmaWxlKSB7XG4gICAgICB8IE5vbmUgPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlXG4gICAgICB8IFNvbWUoZmlsZSkgPT4gaW5qZWN0KFVwZGF0ZUFjdGlvbi5Jbml0SW1wb3J0QWxsKGZpbGUpKVxuICAgICAgfVxuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJJbXBvcnQgU3VibWlzc2lvblwiLFxuICApO1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGZpbHRlcl9wYXVzZSA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJQYXVzZSxcbiAgZm9ybV9pZDogRmlsdGVyUGF1c2UsXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcF9pZCksIChcImVfYm9keVwiLCBib2R5X2lkKSwgKHAnLCBlX2JvZHknKSA9PlxuICAgICAgW21rX3BhdXNlKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJQYXVzZSBmaWx0ZXIgZm9yIHN0ZXBwZXIuIFRoZSBldmFsdWF0aW9uIG9mIGFsbCBzdWJleHByZXNzaW9ucyB3aXRoaW4gWypib2R5Kl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSB3aWxsIGJlIHBhdXNlZCBkdXJpbmcgZXZhbHVhdGlvblwiLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRmlsdGVyU3RlcCxcbiAgICAgIHRlcm06IG1rX2V4YW1wbGUoXCJldmFsICRlICsgJGUgaW5cXG4oMSArIDIpICogKDMgKyA0KVwiKSxcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIGV4cHJlc3Npb24gKDEgKiAyKSArICgzICogNCkgaXMgZ3VhcmRlZCBieSBhIHBhdXNlIGZpbHRlciBleHByZXNzaW9uIHBhdXNlICR2ICsgJHYsIHdoaWNoIGluc3RydWN0IHRoZSBldmFsdWF0b3IgdG8gcGF1c2UgdGhlIGV2YWx1YXRpb24gd2hlbiBpdCBzZWVzIGEgdmFsdWUgaXMgYWRkZWQgdG8gYW5vdGhlciB2YWx1ZS4gQWZ0ZXIgZXZhbHVhdGluZyBzdWJ0ZXJtcyAoMSAqIDIpIGFuZCAoMyAqIDQpLCB0aGUgZXhwcmVzc2lvbiB0dXJucyBpbnRvIDIgKyAxMi4gMiBtYXRjaGVzIHRoZSBmaXJzdCAkdiBwYXR0ZXJuLCBhbmQgMTIgbWF0Y2hlcyB0aGUgc2Vjb25kICR2IHBhdHRlcm4uIFRoZXJlZm9yZSwgdGhlIGV2YWx1YXRvciBzdG9wcyB3aGVuIHRoZSBleHByZXNzaW9uIHN0ZXBzIHRvIDIgKyAxMlwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5sZXQgZmlsdGVyX2V2YWwgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVyRXZhbCxcbiAgZm9ybV9pZDogRmlsdGVyRXZhbCxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfZXZhbChbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiRnVsbCBldmFsdWF0aW9uIGZpbHRlciBmb3Igc3RlcHBlci4gQWxsIHN1YmV4cHJlc3Npb25zIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgZ2V0IGV2YWx1YXRlZCBpbiBvbmUgZ29cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlckV2YWwsXG4gICAgICB0ZXJtOlxuICAgICAgICBta19leGFtcGxlKFxuICAgICAgICAgIFwicGF1c2UgJGUgaW5cXG5oaWRlIGxldCA9IGluIGluXFxubGV0IHggPSAxIGluXFxubGV0IHkgPSAyIGluXFxueCArIHlcIixcbiAgICAgICAgKSxcbiAgICAgIG1lc3NhZ2U6IFwicGF1c2UgJGUgaW4gaW5zdHJ1Y3QgdGhlIGV2YWx1YXRvciB0byBhY3QgbGlrZSBhIHNpbmdsZS1zdGVwcGVyLCBlLmcuIHN0b3AgYXQgZXZlcnkgc3RlcC4gVGhlIGhpZGUgZmlsdGVyIGV4cHJlc3Npb24gaW5zdHJ1Y3RzIHRoZSBldmFsdWF0b3IgdG8gc2tpcCBvdmVyIGFsbCBldmFsdWF0b3Igc3RlcHMgdGhhdCBkZXN0cnVjdHMgcGVyZm9ybSBzdWJzdGl0dXRpb24gb24gYSBsZXQtZXhwcmVzc2lvbi4gSGVyZSwgdGhlIHN1YnN0aXR1dGlvbiBvZiB2YXJpYWJsZSB4IGFuZCB5IGlzIHNraXBwZWQgb3ZlciBhbmQgd2UgZGlyZWN0bHkgZ290IDEgKyAyIGluIHRoZSByZXN1bHQgYXJlYS5cIixcbiAgICB9LFxuICBdLFxufTtcblxubGV0IGZpbHRlcl9oaWRlID0gKH5wX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlckhpZGUsXG4gIGZvcm1faWQ6IEZpbHRlckhpZGUsXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcF9pZCksIChcImVfYm9keVwiLCBib2R5X2lkKSwgKHAnLCBlX2JvZHknKSA9PlxuICAgICAgW21rX2hpZGUoW1tzcGFjZSgpLCBwJywgc3BhY2UoKV1dKSwgbGluZWJyZWFrKCksIGVfYm9keSddXG4gICAgKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlN0ZXAgaGlkaW5nIGZpbHRlciBmb3Igc3RlcHBlci4gVGhlIGVsaW1pbmF0aW9uIG9mIGFsbCBsYW5ndWFnZSBjb25zdHJ1Y3RzIChsaWtlIGJpbmFyeSBvcGVyYXRvciArIG9yIGxldCAuLiA9IC4uIGluKSB3aXRoaW4gWypib2R5Kl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSB3aWxsIGdldCBza2lwcGVkLlwiLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRmlsdGVySGlkZSxcbiAgICAgIHRlcm06XG4gICAgICAgIG1rX2V4YW1wbGUoXG4gICAgICAgICAgXCJwYXVzZSAkZSBpblxcbmhpZGUgbGV0ID0gaW4gaW5cXG5sZXQgeCA9IDEgaW5cXG5sZXQgeSA9IDIgaW5cXG54ICsgeVwiLFxuICAgICAgICApLFxuICAgICAgbWVzc2FnZTogXCJwYXVzZSAkZSBpbiBpbnN0cnVjdCB0aGUgZXZhbHVhdG9yIHRvIGFjdCBsaWtlIGEgc2luZ2xlLXN0ZXBwZXIsIGUuZy4gc3RvcCBhdCBldmVyeSBzdGVwLiBUaGUgaGlkZSBmaWx0ZXIgZXhwcmVzc2lvbiBpbnN0cnVjdHMgdGhlIGV2YWx1YXRvciB0byBza2lwIG92ZXIgYWxsIGV2YWx1YXRvciBzdGVwcyB0aGF0IGRlc3RydWN0cyBwZXJmb3JtIHN1YnN0aXR1dGlvbiBvbiBhIGxldC1leHByZXNzaW9uLiBIZXJlLCB0aGUgc3Vic3RpdHV0aW9uIG9mIHZhcmlhYmxlIHggYW5kIHkgaXMgc2tpcHBlZCBvdmVyIGFuZCB3ZSBkaXJlY3RseSBnb3QgMSArIDIgaW4gdGhlIHJlc3VsdCBhcmVhLlwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5sZXQgZmlsdGVyX2RlYnVnID0gKH5wX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlckRlYnVnLFxuICBmb3JtX2lkOiBGaWx0ZXJEZWJ1ZyxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfZGVidWcoW1tzcGFjZSgpLCBwJywgc3BhY2UoKV1dKSwgbGluZWJyZWFrKCksIGVfYm9keSddXG4gICAgKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIkRlYnVnIGZpbHRlciBmb3Igc3RlcHBlci4gQWxsIG1hdGNoZWQgc3ViLWV4cHJlc3Npb24gd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBiZSBzdGVwcGVkIHRocm91Z2guXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJEZWJ1ZyxcbiAgICAgIHRlcm06IG1rX2V4YW1wbGUoXCJldmFsICRlIGluXFxuZGVidWcgJHYgKyAkdiArICR2IGluXFxuMSArIDIgKyAzXCIpLFxuICAgICAgbWVzc2FnZTogXCJUaGUgZGVidWcgZmlsdGVyIHBhdHRlcm4gJHYgKyAkdiArICR2IG1hdGNoZXMgMSArIDIgKyAzLCB0aGVyZWZvcmUsIHRoZSBldmFsdWF0b3Igd2lsbCBzdGVwIGludG8gdGhlIGV2YWx1YXRpb24gb2YgdGhlIG1hdGNoZWQgc3ViLWV4cHJlc3Npb24gMSArIDIgKyAzLlwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5sZXQgdW5xdW90ZSA9ICh+c2VsX2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVyU2VsZWN0b3IsXG4gIGZvcm1faWQ6IEZpbHRlclNlbGVjdG9yLFxuICBhYnN0cmFjdDogU2ltcGxlLm1rXzEoKFwic2VsXCIsIHNlbF9pZCksIHNlbCcgPT4gW21rX3VucXVvdGUoW10pLCBzZWwnXSksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJTZWxlY3RvciBleHByZXNzaW9uIGZvciBhIHN0ZXBwZXIgZmlsdGVyIHBhdHRlcm4uIFdoZW4gWypzZWwqXSglcykgaXMgJ2UnLCBpdCBtYXRjaGVzIGFueSBleHByZXNzaW9uLCB3aGVuIFsqc2VsKl0oJXMpIGlzICd2JyBpdCBvbmx5IG1hdGNoZXMgdmFsdWVzLlwiLFxuICAgICAgc2VsX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHNlbF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtdLFxufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBiYXNpY19mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEJhc2ljKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biB4IC0+IHhcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGlkZW50aXR5IGZ1bmN0aW9uLiBXaGVuIGdpdmVuIGFuIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoYXQgYXJndW1lbnQuXCIsXG59O1xubGV0IHdpbGRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihXaWxkKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBfIC0+IDNcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAzLlwiLFxufTtcbmxldCBpbnRsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihJbnRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIDEgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdmFsdWUgMSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBmbG9hdGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEZsb2F0TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAxLjEgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdmFsdWUgMS4xLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGJvb2xsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihCb29sTGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biB0cnVlIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIHRydWUsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgc3RybGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oU3RyTGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBcXFwiYWJjXFxcIiAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSBcXFwiYWJjXFxcIiwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCB0cml2X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVHJpdiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gKCkgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdGhlICgpIHZhbHVlLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxpc3RuaWxfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihMaXN0TmlsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBbXSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB0aGUgZW1wdHkgbGlzdCB2YWx1ZSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsaXN0bGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oTGlzdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gW3gsIHldIC0+IHhcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB0aGF0IGlzIGEgbGlzdCBvZiB0d28gZWxlbWVudHMsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhhdCBsaXN0LlwiLFxufTtcbmxldCBjb25zX2hkX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQ29uc0hkKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBoZDo6dGwgLT4gaGRcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB0aGF0IGlzIGEgbm9uLWVtcHR5IGxpc3QsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGhlYWQgb2YgdGhhdCBsaXN0LlwiLFxufTtcbmxldCBjb25zX3NuZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKENvbnNTbmQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIGZzdDo6c25kOjp0bCAtPiBzbmRcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB0aGF0IGlzIGEgbGlzdCB3aXRoIGF0IGxlYXN0IHR3byBlbGVtZW50cywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhhdCBsaXN0LlwiLFxufTtcbmxldCB2YXJfaW5jcl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFZhckluY3IpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIHggLT4geCArIDFcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBpbnRlZ2VyIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBhcmd1bWVudCBwbHVzIDEuXCIsXG59O1xubGV0IHZhcl9hbmRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihWYXJBbmQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIGIgLT4gYiAmJiB0cnVlXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSBib29sZWFuIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBsb2dpY2FsLWFuZCBvZiB0aGUgYXJndW1lbnQgYW5kIHRydWUsIHdoaWNoIGV2YWx1YXRlcyB0byB0aGUgdHJ1dGggdmFsdWUgb2YgdGhlIGFyZ3VtZW50LlwiLFxufTtcbmxldCB0dXBsZTJfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihUdXBsZTIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuICh4LCB5KSAtPiB4ICsgeVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgMi10dXBsZSBvZiBpbnRlZ2VycywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgc3VtIG9mIHRoZSB0d28gaW50ZWdlcnMuXCIsXG59O1xubGV0IHR1cGxlM19mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFR1cGxlMyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gKGEsIGIsIGMpIC0+XFxuYSAmJiBiICYmIGNcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIDMtdHVwbGUgb2YgYm9vbGVhbnMsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGxvZ2ljYWwtYW5kIG9mIHRoZSB0aHJlZSBib29sZWFucy5cIixcbn07XG5sZXQgY3RyX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQ3RyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBOb25lIC0+IDFcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIE5vbmUgY29uc3RydWN0b3IgYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgMS5cIixcbn07XG5sZXQgYXBfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihBcCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gU29tZShhKSAtPiBhXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSBTb21lIGNvbnN0cnVjdG9yIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBjb25zdHJ1Y3RvcidzIGFyZ3VtZW50LlwiLFxufTtcbi8vIFRPRE8gZm9yIHNoYXJlZCBleGFtcGxlcywgc2hvdWxkIHRoZSBmZWVkYmFjayBiZSBzdG9yZWQgc2VwYXJhdGVseSBmb3IgZWFjaCBcImluc3RhbmNlXCI/XG5sZXQgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChzZl9wYXRfaWQ6IElkLnQsIHNmX2JvZHlfaWQ6IElkLnQsIH5wYXRfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9wYXRfaWQsIHBhdF9pZCksIChzZl9ib2R5X2lkLCBib2R5X2lkKV07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJwXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChCYXNlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcInBcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtiYXNpY19mdW5fZXhdIC8vIFRPRE8gV2hhdCBvdGhlciBleGFtcGxlcyBzaG91bGQgYmUgaGVyZVxuICB9O1xufTtcblxubGV0IF9wYXQgPSBQaWVjZS5Hcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcyksIGFmdGVyIHRoZSBbZW1wdHkgaG9sZSBwYXR0ZXJuXSglcykgaXMgZmlsbGVkLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChFbXB0eUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfcGF0KSwgW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYmFzaWNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIklOVkFMSURcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLCBhZnRlciB0aGUgW2ludmFsaWQgYXJndW1lbnQgcGF0dGVybl0oJXMpIGlzIGNvcnJlY3RlZC5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTXVsdGlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIklOVkFMSURcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtiYXNpY19mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl93aWxkX2V4cF9jb2xvcmluZ19pZHMgPSAofmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKV07XG59O1xubGV0IGZ1bmN0aW9uX3dpbGRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IGlzIGlnbm9yZWQsIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgX3BhdCA9IHBhdChcIl9cIik7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFdpbGQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiX1wiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3dpbGRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkludExpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9pbnRsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25faW50bGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJXNgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoSW50KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkludExpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludGxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiRmxvYXRMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fZmxvYXRsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fZmxvYXRsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIGAlZmAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICAvLyBUT0RPIHByaW50IG91dCB0aGUgZmxvYXQgbGl0ZXJhbCBuaWNlclxuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChGbG9hdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJGbG9hdExpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0bGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJCb29sTGl0XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2Jvb2xsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fYm9vbGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCViYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEJvb2wpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiQm9vbExpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jvb2xsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5cbmxldCBfcGF0ID0gcGF0KFwiU3RyaW5nTGl0XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3N0cmxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9zdHJsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIGAlc2AuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuXG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFN0cmluZyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJTdHJpbmdMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzdHJsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIigpXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3RyaXZfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fdHJpdl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgdGhlIHRyaXZpYWwgdmFsdWUgYCgpYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuIFRoaXMgaWYgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gYSB6ZXJvIGFyZ3VtZW50IGZ1bmN0aW9uLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChUcml2KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIigpXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHJpdl9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiW11cIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9saXN0bmlsX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyB0aGUgZW1wdHkgbGlzdCBgW11gLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTGlzdE5pbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJbXVwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xpc3RuaWxfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IG1rX2xpc3RfcGF0KFtbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBzcGFjZSgpLCBwYXQoXCIuLi5cIildXSk7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fbGlzdGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9saXN0bGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGFyZSBsaXN0cyB3aXRoICVuLWVsZW1lbnRzLCBlYWNoIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybi4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKExpc3RMaXQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoX3BhdCksXG4gICAgICAgIFtta19saXN0X3BhdChbW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXV0pXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGlzdG5pbF9mdW5fZXgsIGxpc3RsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdF9oZCA9IHBhdChcInBfaGRcIik7XG5sZXQgX3BhdF90bCA9IHBhdChcInBfdGxcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fY29uc19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmhkX2lkOiBJZC50LCB+dGxfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgW1xuICAgIChQaWVjZS5pZChfcGF0X2hkKSwgaGRfaWQpLFxuICAgIChQaWVjZS5pZChfcGF0X3RsKSwgdGxfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwKSwgYm9keV9pZCksXG4gIF07XG59O1xubGV0IGZ1bmN0aW9uX2NvbnNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSAqYXJndW1lbnQgcGF0dGVybiogYXJlIG5vbi1lbXB0eSBsaXN0cyB0aGF0IG1hdGNoIHRoZSBbKmhlYWQgcGF0dGVybipdKCVzKSBhbmQgWyp0YWlsIHBhdHRlcm4qXSglcykuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSAqYXJndW1lbnQgcGF0dGVybiosIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgY29ucyA9IGNvbnNfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbW3NwYWNlKCksIF9wYXRfaGQsIGNvbnMsIF9wYXRfdGwsIHNwYWNlKCldXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKExpc3RDb25zKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29ucyksIFtwYXQoXCJwX2hkXCIpLCBjb25zX3BhdCgpLCBwYXQoXCJwX3RsXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbY29uc19oZF9mdW5fZXgsIGNvbnNfc25kX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJ4XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3Zhcl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl92YXJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBpcyBib3VuZCB0byB0aGUgWyp2YXJpYWJsZSpdKCVzKSBgJXNgLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVmFyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcInhcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtiYXNpY19mdW5fZXgsIHZhcl9pbmNyX2Z1bl9leCwgdmFyX2FuZF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfY29tbWEgPSBjb21tYV9wYXQoKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl90dXBsZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2NvbW1hKSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3R1cGxlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGFyZSAlcy10dXBsZXMgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgZWxlbWVudCBwYXR0ZXJuLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfZnVuKFtbc3BhY2UoKSwgcGF0KFwicDFcIiksIF9jb21tYSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpLCBzcGFjZSgpXV0pLFxuICAgIHNwYWNlKCksXG4gICAgX2V4cCxcbiAgXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChUdXBsZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9jb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlMl9mdW5fZXgsIHR1cGxlM19mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0MV9pZDogSWQudCwgfnBhdDJfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgW1xuICAgIChQaWVjZS5pZChfcGF0MSksIHBhdDFfaWQpLFxuICAgIChQaWVjZS5pZChfcGF0MiksIHBhdDJfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwKSwgYm9keV9pZCksXG4gIF07XG59O1xubGV0IGZ1bmN0aW9uX3R1cGxlMl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlICphcmd1bWVudCBwYXR0ZXJuKiBhcmUgMi10dXBsZXMgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypmaXJzdCBlbGVtZW50IHBhdHRlcm4qXSglcykgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBtYXRjaGVzIHRoZSBbKnNlY29uZCBlbGVtZW50IHBhdHRlcm4qXSglcykuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSAqYXJndW1lbnQgcGF0dGVybiosIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfZnVuKFtbc3BhY2UoKSwgX3BhdDEsIGNvbW1hLCBzcGFjZSgpLCBfcGF0Miwgc3BhY2UoKV1dKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVHVwbGUyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlMl9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX3BhdDMgPSBwYXQoXCJwM1wiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfnBhdDNfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgW1xuICAgIChQaWVjZS5pZChfcGF0MSksIHBhdDFfaWQpLFxuICAgIChQaWVjZS5pZChfcGF0MiksIHBhdDJfaWQpLFxuICAgIChQaWVjZS5pZChfcGF0MyksIHBhdDNfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwKSwgYm9keV9pZCksXG4gIF07XG59O1xubGV0IGZ1bmN0aW9uX3R1cGxlM19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlICphcmd1bWVudCBwYXR0ZXJuKiBhcmUgMy10dXBsZXMgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypmaXJzdCBlbGVtZW50IHBhdHRlcm4qXSglcyksIHRoZSBzZWNvbmQgZWxlbWVudCBtYXRjaGVzIHRoZSBbKnNlY29uZCBlbGVtZW50IHBhdHRlcm4qXSglcyksIGFuZCB0aGUgdGhpcmQgZWxlbWVudCBtYXRjaGVzIHRoZSBbKnRoaXJkIGVsZW1lbnQgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1xuICAgICAgW1xuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MSxcbiAgICAgICAgY29tbWFfcGF0KCksXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQyLFxuICAgICAgICBjb21tYSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDMsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICBdLFxuICAgIF0pLFxuICAgIHNwYWNlKCksXG4gICAgX2V4cCxcbiAgXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChUdXBsZTMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKSwgY29tbWFfcGF0KCksIHBhdChcInAzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGUzX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJDXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2N0cl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9jdHJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIHRoZSAqYCVzYCBjb25zdHJ1Y3RvciouIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChDdHIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiQ1wiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2N0cl9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2NvbiA9IHBhdChcInBfY29uXCIpO1xubGV0IF9wYXRfYXJnID0gcGF0KFwicF9hcmdcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fYXBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5jb25faWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgW1xuICAgIChQaWVjZS5pZChfcGF0X2NvbiksIGNvbl9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXRfYXJnKSwgYXJnX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpLFxuICBdO1xufTtcbmxldCBmdW5jdGlvbl9hcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlICphcmd1bWVudCBwYXR0ZXJuKiBhcmUgdGhlIFsqY29uc3RydWN0b3IqXSglcykgd2hlcmUgdGhlICpjb25zdHJ1Y3RvciBhcmd1bWVudCogbWF0Y2hlcyB0aGUgWypjb25zdHJ1Y3RvciBhcmd1bWVudCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGFwID0gbWtfYXBfcGF0KFtbX3BhdF9hcmddXSk7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXRfY29uLCBhcCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQXApLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChhcCksIFtwYXQoXCJwX2NvblwiKSwgbWtfYXBfcGF0KFtbcGF0KFwicF9hcmdcIildXSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFthcF9mdW5fZXhdLFxuICB9O1xufTtcblxubGV0IGZ1bmN0aW9uczogZ3JvdXAgPSB7aWQ6IEZ1bmN0aW9uRXhwKEJhc2UpLCBmb3JtczogW2Z1bmN0aW9uX2V4cF19O1xubGV0IGZ1bmN0aW9uc19lbXB0eV9ob2xlID0ge1xuICBpZDogRnVuY3Rpb25FeHAoRW1wdHlIb2xlKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX211bHRpX2hvbGUgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChNdWx0aUhvbGUpLFxuICBmb3JtczogW2Z1bmN0aW9uX211bHRpX2hvbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbmxldCBmdW5jdGlvbnNfd2lsZCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFdpbGQpLFxuICBmb3JtczogW2Z1bmN0aW9uX3dpbGRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbmxldCBmdW5jdGlvbnNfaW50ID0ge1xuICBpZDogRnVuY3Rpb25FeHAoSW50KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9pbnRsaXRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbmxldCBmdW5jdGlvbnNfZmxvYXQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChGbG9hdCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fZmxvYXRsaXRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbmxldCBmdW5jdGlvbnNfYm9vbCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEJvb2wpLFxuICBmb3JtczogW2Z1bmN0aW9uX2Jvb2xsaXRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19zdHIgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChTdHJpbmcpLFxuICBmb3JtczogW2Z1bmN0aW9uX3N0cmxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3RyaXYgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChUcml2KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl90cml2X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfbGlzdG5pbCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKExpc3ROaWwpLFxuICBmb3JtczogW2Z1bmN0aW9uX2xpc3RuaWxfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19saXN0bGl0ID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTGlzdExpdCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fbGlzdGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2NvbnMgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChMaXN0Q29ucyksXG4gIGZvcm1zOiBbZnVuY3Rpb25fY29uc19leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3ZhciA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFZhciksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdmFyX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdHVwbGUgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChUdXBsZSksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHVwbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190dXBsZTIgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChUdXBsZTIpLFxuICBmb3JtczogW2Z1bmN0aW9uX3R1cGxlMl9leHAsIGZ1bmN0aW9uX3R1cGxlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdHVwbGUzID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVHVwbGUzKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl90dXBsZTNfZXhwLCBmdW5jdGlvbl90dXBsZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2N0ciA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEN0ciksXG4gIGZvcm1zOiBbZnVuY3Rpb25fY3RyX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfYXAgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChBcCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fYXBfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCBlbXB0eV9ob2xlX3RlbXBsYXRlID0gKF9zb3J0LCBzdHIsIGlkKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlRoaXMgc2hvdWxkIGJlIGZpbGxlZCB3aXRoICVzIHRvIGNvbXBsZXRlIHRoZSBwcm9ncmFtLlwiLFxuICAgICAgc3RyLFxuICAgICk7XG4gIHtcbiAgICBpZCxcbiAgICBzeW50YWN0aWNfZm9ybTogW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBtdWx0aV9ob2xlX3RlbXBsYXRlID0gKHNvcnQsIGlkKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBpcyBhbiBpbnZhbGlkIHRlcm0uXCI7XG4gIHtcbiAgICBpZCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3NvcnQoXCJJTlZBTElEXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGVtcHR5X2hvbGVfZXhwOiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLmVtcHR5X2hvbGVfdGVtcGxhdGUoZXhwLCBcImFuIGV4cHJlc3Npb25cIiwgRW1wdHlIb2xlRXhwKTtcbmxldCBlbXB0eV9ob2xlX2V4cHMgPSB7aWQ6IEVtcHR5SG9sZUV4cCwgZm9ybXM6IFtlbXB0eV9ob2xlX2V4cF19O1xuXG5sZXQgbXVsdGlfaG9sZV9leHA6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUubXVsdGlfaG9sZV90ZW1wbGF0ZShleHAsIE11bHRpSG9sZUV4cCk7XG5cbmxldCBtdWx0aV9ob2xlX2V4cHMgPSB7aWQ6IE11bHRpSG9sZUV4cCwgZm9ybXM6IFttdWx0aV9ob2xlX2V4cF19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEhhejNsY29yZTtcbmxldCBlbXB0eV9ob2xlX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJFeHByZXNzaW9ucyBhcmUgbm90IG1hdGNoZWQgYWdhaW5zdCB0aGUgKmVtcHR5IGhvbGUgcGF0dGVybiogdW50aWwgaXQgaXMgZmlsbGVkLlwiO1xuICB7XG4gICAgaWQ6IEVtcHR5SG9sZVBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBtdWx0aV9ob2xlX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJFeHByZXNzaW9ucyBhcmUgbm90IG1hdGNoZWQgYWdhaW5zdCB0aGUgaW52YWxpZCBwYXR0ZXJuIHVudGlsIGl0IGlzIGNvcnJlY3RlZC5cIjtcbiAge1xuICAgIGlkOiBNdWx0aUhvbGVQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCJJbnZhbGlkXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBlbXB0eV9ob2xlOiBncm91cCA9IHtpZDogRW1wdHlIb2xlUGF0LCBmb3JtczogW2VtcHR5X2hvbGVfcGF0XX07XG5cbmxldCBtdWx0aV9ob2xlOiBncm91cCA9IHtpZDogTXVsdGlIb2xlUGF0LCBmb3JtczogW211bHRpX2hvbGVfcGF0XX07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGVtcHR5X2hvbGVfdHBhdDogZm9ybSA9XG4gIEhvbGVUZW1wbGF0ZS5lbXB0eV9ob2xlX3RlbXBsYXRlKHRwYXQsIFwiYSB0eXBlIHBhdHRlcm5cIiwgRW1wdHlIb2xlVFBhdCk7XG5sZXQgZW1wdHlfaG9sZV90cGF0cyA9IHtpZDogRW1wdHlIb2xlVFBhdCwgZm9ybXM6IFtlbXB0eV9ob2xlX3RwYXRdfTtcblxubGV0IG11bHRpX2hvbGVfdHBhdDogZm9ybSA9XG4gIEhvbGVUZW1wbGF0ZS5tdWx0aV9ob2xlX3RlbXBsYXRlKHRwYXQsIE11bHRpSG9sZVRQYXQpO1xuXG5sZXQgbXVsdGlfaG9sZV90cGF0cyA9IHtpZDogTXVsdGlIb2xlVFBhdCwgZm9ybXM6IFttdWx0aV9ob2xlX3RwYXRdfTtcbiIsIm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCBlbXB0eV9ob2xlX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIG1hcmtzIGEgdHlwZSB0aGF0IG5lZWRzIHRvIGJlIGZpbGxlZCBpbi5cIjtcbiAge1xuICAgIGlkOiBFbXB0eUhvbGVUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG4vLyBUT0RPIERpZCBnZXQgYSBjYXNlIHdoZXJlIGluIHR5cGUgcG9zaXRpb24gaGFkIHNwYWNlIGJldHdlZW4gdHdvIHZhcmlhYmxlcyB3aGVyZSBnb3QgaW50byB3ZWlyZCBzdGF0ZVxubGV0IG11bHRpX2hvbGVfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgaXMgYW4gaW52YWxpZCB0eXBlLlwiO1xuICB7XG4gICAgaWQ6IE11bHRpSG9sZVR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIkludmFsaWRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGVtcHR5X2hvbGU6IGdyb3VwID0ge2lkOiBFbXB0eUhvbGVUeXAsIGZvcm1zOiBbZW1wdHlfaG9sZV90eXBdfTtcblxubGV0IG11bHRpX2hvbGU6IGdyb3VwID0ge2lkOiBNdWx0aUhvbGVUeXAsIGZvcm1zOiBbbXVsdGlfaG9sZV90eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBpZl9iYXNpYzFfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IElmVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcImlmICh0cnVlKSB0aGVuIDEgZWxzZSAyXCIpLFxuICBtZXNzYWdlOiBcIlNpbmNlIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgdGhlIGlmIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSB0aGVuIGJyYW5jaCwgMS5cIixcbn07XG5sZXQgaWZfYmFzaWMyX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBJZkZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiaWYgKDIgPCAxKSB0aGVuIDMgZWxzZSA0XCIpLFxuICBtZXNzYWdlOiBcIlNpbmNlIHRoZSBjb25kaXRpb24gaXMgMiA8IDEgaXMgZmFsc2UsIHRoZSBpZiBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0aGUgZWxzZSBicmFuY2gsIDQuXCIsXG59O1xubGV0IF9leHBfY29uZCA9IGV4cChcImVfY29uZFwiKTtcbmxldCBfZXhwX3RoZW4gPSBleHAoXCJlX3RoZW5cIik7XG5sZXQgX2V4cF9lbHNlID0gZXhwKFwiZV9lbHNlXCIpO1xubGV0IGlmX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+Y29uZF9pZDogSWQudCwgfnRoZW5faWQ6IElkLnQsIH5lbHNlX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfY29uZCksIGNvbmRfaWQpLFxuICAoUGllY2UuaWQoX2V4cF90aGVuKSwgdGhlbl9pZCksXG4gIChQaWVjZS5pZChfZXhwX2Vsc2UpLCBlbHNlX2lkKSxcbl07XG5sZXQgaWZfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmNvbmRpdGlvbipdKCVzKSBldmFsdWF0ZXMgdG8gYHRydWVgLCBldmFsdWF0ZSB0aGUgWyp0aGVuIGJyYW5jaCpdKCVzKS4gT3RoZXJ3aXNlLCBldmFsdWF0ZSB0aGUgWyplbHNlIGJyYW5jaCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBJZkV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgbWtfaWYoW1xuICAgICAgICBbc3BhY2UoKSwgX2V4cF9jb25kLCBsaW5lYnJlYWsoKV0sXG4gICAgICAgIFtzcGFjZSgpLCBfZXhwX3RoZW4sIGxpbmVicmVhaygpXSxcbiAgICAgIF0pLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9leHBfZWxzZSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpZl9iYXNpYzFfZXhwX2V4LCBpZl9iYXNpYzJfZXhwX2V4XSxcbiAgfTtcbn07XG5cbmxldCBpZnM6IGdyb3VwID0ge2lkOiBJZkV4cCwgZm9ybXM6IFtpZl9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBsZXRfYmFzZV9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQmFzaWMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IHggPSAxIGluIFxcbnhcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDFcIixcbn07XG5sZXQgbGV0X3dpbGRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFdpbGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IF8gPSAxIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIDEgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfaW50X2V4ID0ge1xuICBzdWJfaWQ6IExldChJbnRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IDEgPSAxIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIDEgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfZmxvYXRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEZsb2F0TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAxLjEgPSAxLjEgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMS4xIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2Jvb2xfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEJvb2xMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IHRydWUgPSB0cnVlIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHRydWUgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfc3RyX2V4ID0ge1xuICBzdWJfaWQ6IExldChTdHJMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IFxcXCJhYmNcXFwiID0gXFxcImFiY1xcXCIgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdHJ1ZSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF90cml2X2V4ID0ge1xuICBzdWJfaWQ6IExldChUcml2KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAoKSA9ICgpIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlICgpIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2xpc3RsaXRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KExpc3RMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IFt4LCB5XSA9IFsxLCAyXSBpbiBcXG54XCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEgYW5kIHRoZSB5IGlzIGJvdW5kIHRvIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxLlwiLFxufTtcbmxldCBsZXRfbGlzdG5pbF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoTGlzdE5pbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgW10gPSBbXSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBlbXB0eSBsaXN0IGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2NvbnNfaGRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KENvbnNIZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgaGQ6OnRsID0gMTo6W10gaW4gXFxuaGRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGhkIGlzIGJvdW5kIHRvIDEgYW5kIHRoZSB0bCBpcyBib3VuZCB0byB0aGUgZW1wdHkgbGlzdCwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEuXCIsXG59O1xubGV0IGxldF9jb25zX3NuZF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQ29uc1NuZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgZnN0OjpzbmQ6OnRsID0gdHJ1ZTo6ZmFsc2U6OltdIGluIFxcbnNuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgZnN0IGlzIGJvdW5kIHRvIHRydWUsIHRoZSBzbmQgaXMgYm91bmQgdG8gZmFsc2UsIGFuZCB0aGUgdGwgaXMgYm91bmQgdG8gdGhlIGVtcHR5IGxpc3QsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgbGV0X3Zhcl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoVmFyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCB4ID0gMSBpbiBcXG54ICsgMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMSArIDIsIHdoaWNoIGlzIDMuXCIsXG59O1xubGV0IGxldF90dXBsZTJfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFR1cGxlMiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgKHgsIHkpID0gKDEsIDIpIGluIFxcbnggKyB5XCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEgYW5kIHRoZSB5IGlzIGJvdW5kIHRvIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxICsgMiwgd2hpY2ggaXMgMy5cIixcbn07XG5sZXQgbGV0X3R1cGxlM19leCA9IHtcbiAgc3ViX2lkOiBMZXQoVHVwbGUzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAoeCwgeSwgeikgPSAoMSwgMiwgMylcXG5pbiB4ICsgeSArIHpcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSwgdGhlIHkgaXMgYm91bmQgdG8gMiwgYW5kIHRoZSB6IGlzIGJvdW5kIHRvIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxICsgMiArIDMsIHdoaWNoIGlzIDYuXCIsXG59O1xubGV0IGxldF9jdHJfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEN0ciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0eXBlIFQgPSBOb25lICsgU29tZShJbnQpXFxuIGluIGxldCBOb25lID0gTm9uZVxcbmluIDJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIE5vbmUgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfYXBfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEFwKSxcbiAgdGVybTpcbiAgICBta19leGFtcGxlKFwidHlwZSBUID0gTm9uZSArIFNvbWUoSW50KVxcbiBpbiBsZXQgU29tZShhKSA9IFNvbWUoMilcXG5pbiBhXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBhIGlzIGJvdW5kIHRvIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoXG4gICAgICBzZl9wYXRfaWQ6IElkLnQsXG4gICAgICBzZl9kZWZfaWQ6IElkLnQsXG4gICAgICBzZl9ib2R5X2lkOiBJZC50LFxuICAgICAgfnBhdF9pZDogSWQudCxcbiAgICAgIH5kZWZfaWQ6IElkLnQsXG4gICAgICB+Ym9keV9pZDogSWQudCxcbiAgICApXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKHNmX3BhdF9pZCwgcGF0X2lkKSwgKHNmX2RlZl9pZCwgZGVmX2lkKSwgKHNmX2JvZHlfaWQsIGJvZHlfaWQpXTtcbn07XG5sZXQgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChzZl9wYXRfaWQ6IElkLnQsIHNmX2RlZl9pZDogSWQudCwgfnBhdF9pZDogSWQudCwgfmRlZl9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfcGF0X2lkLCBwYXRfaWQpLCAoc2ZfZGVmX2lkLCBkZWZfaWQpXTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInBcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfYmFzZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X2Jhc2VfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBbKnBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChCYXNlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcInBcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYmFzZV9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBQaWVjZS5Hcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfZW1wdHlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQWZ0ZXIgdGhlIFsqZW1wdHkgaG9sZSBwYXR0ZXJuKl0oJXMpIGlzIGZpbGxlZCwgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIFsqcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEVtcHR5SG9sZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYmFzZV9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJJTlZBTElEXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9tdWx0aV9ob2xlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBZnRlciB0aGUgW2ludmFsaWQgcGF0dGVybl0oJXMpIGlzIGNvcnJlY3RlZCwgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIFsqcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKE11bHRpSG9sZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJJTlZBTElEXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jhc2VfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfd2lsZF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmRlZl9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9ib2R5KSwgYm9keV9pZCksXG5dO1xubGV0IGxldF93aWxkX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIGV2YWx1YXRlZCBhbmQgaWdub3JlZC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBwYXRfID0gcGF0KFwiX1wiKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgcGF0Xywgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFdpbGQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKHBhdF8pLCBbcGF0KFwiX1wiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF93aWxkX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkludExpdFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfaW50X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF9pbnRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIGAlc2AuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoSW50KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkludExpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9pbnRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiRmxvYXRMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2Zsb2F0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF9mbG9hdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCVmYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChGbG9hdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJGbG9hdExpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9mbG9hdF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJCb29sTGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9ib29sX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF9ib29sX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJWJgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEJvb2wpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiQm9vbExpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9ib29sX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIlN0cmluZ0xpdFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfc3RyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF9zdHJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIGAlc2AuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoU3RyaW5nKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIlN0cmluZ0xpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9zdHJfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiKClcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X3RyaXZfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X3RyaXZfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIHRoZSB0cml2aWFsIHZhbHVlIGAoKWAuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHJpdiksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCIoKVwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF90cml2X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IG1rX2xpc3RfcGF0KFtbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBzcGFjZSgpLCBwYXQoXCIuLi5cIildXSk7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfbGlzdGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X2xpc3RsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgYXJlIGxpc3RzIHdpdGggJXMtZWxlbWVudHMsIHdoZXJlIGVhY2ggZWxlbWVudCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybi5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKExpc3RMaXQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2xpc3RsaXRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiW11cIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2xpc3RuaWxfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIHRoZSBlbXB0eSBsaXN0IGBbXWAuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTGlzdE5pbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJbXVwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9saXN0bmlsX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdF9oZCA9IHBhdChcInBfaGRcIik7XG5sZXQgX3BhdF90bCA9IHBhdChcInBfdGxcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfY29uc19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmhkX2lkOiBJZC50LCB+dGxfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9oZCksIGhkX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IGxldF9jb25zX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSBub24tZW1wdHkgbGlzdHMgdGhhdCBtYXRjaCB0aGUgWypoZWFkKl0oJXMpIGFuZCBbKnRhaWwqXSglcykgcGF0dGVybnMuXCI7XG4gIGxldCBjb25zID0gY29uc19wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtzcGFjZSgpLCBfcGF0X2hkLCBjb25zLCBfcGF0X3RsLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChMaXN0Q29ucyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbnMpLCBbcGF0KFwicF9oZFwiKSwgY29uc19wYXQoKSwgcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9jb25zX2hkX2V4LCBsZXRfY29uc19zbmRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwieFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfdmFyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF92YXJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgYm91bmQgdG8gdGhlIFsqdmFyaWFibGUqXSglcykgYCVzYCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVmFyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcInhcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdmFyX2V4XSxcbiAgICAvLyBUT0RPIERvZXMgdGhpcyBleGFtcGxlIGJlaW5nIHNsaWdodGx5IGRpZmZlcmVudCBhY3R1YWxseSBhZGQgYW55dGhpbmc/XG4gIH07XG59O1xubGV0IF9jb21tYSA9IGNvbW1hX3BhdCgpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X3R1cGxlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfY29tbWEpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF90dXBsZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSBhcmUgJXMtdHVwbGVzIHdoZXJlIGVhY2ggZWxlbWVudCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybi5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtzcGFjZSgpLCBwYXQoXCJwMVwiKSwgX2NvbW1hLCBzcGFjZSgpLCBwYXQoXCIuLi5cIiksIHNwYWNlKCldLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFR1cGxlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX2NvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3R1cGxlMl9leCwgbGV0X3R1cGxlM19leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfmRlZl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0MSksIHBhdDFfaWQpLFxuICAoUGllY2UuaWQoX3BhdDIpLCBwYXQyX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgbGV0X3R1cGxlMl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlICpwYXR0ZXJuKiBhcmUgMi10dXBsZXMgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypmaXJzdCBlbGVtZW50IHBhdHRlcm4qXSglcykgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBtYXRjaGVzIHRoZSBbKnNlY29uZCBlbGVtZW50IHBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIF9wYXQxLCBjb21tYSwgc3BhY2UoKSwgX3BhdDIsIHNwYWNlKCldLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFR1cGxlMiksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHVwbGUyX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9wYXQzID0gcGF0KFwicDNcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0MV9pZDogSWQudCwgfnBhdDJfaWQ6IElkLnQsIH5wYXQzX2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIHBhdDJfaWQpLFxuICAoUGllY2UuaWQoX3BhdDMpLCBwYXQzX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgbGV0X3R1cGxlM19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlICpwYXR0ZXJuKiBhcmUgMy10dXBsZXMgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypmaXJzdCBlbGVtZW50IHBhdHRlcm4qXSglcyksIHRoZSBzZWNvbmQgZWxlbWVudCBtYXRjaGVzIHRoZSBbKnNlY29uZCBlbGVtZW50IHBhdHRlcm4qXSglcyksIGFuZCB0aGUgdGhpcmQgZWxlbWVudCBtYXRjaGVzIHRoZSBbKnRoaXJkIGVsZW1lbnQgcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQxLFxuICAgICAgICBjb21tYV9wYXQoKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDIsXG4gICAgICAgIGNvbW1hLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MyxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgIF0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHVwbGUzKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwM1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF90dXBsZTNfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiQ1wiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfY3RyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF9jdHJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIHRoZSAqYCVzYCBjb25zdHJ1Y3RvciouIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoQ3RyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkNcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfY3RyX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdF9jb24gPSBwYXQoXCJwX2NvblwiKTtcbmxldCBfcGF0X2FyZyA9IHBhdChcInBfYXJnXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2FwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+Y29uX2lkOiBJZC50LCB+YXJnX2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfY29uKSwgY29uX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfYXJnKSwgYXJnX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgbGV0X2FwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSB0aGUgWypjb25zdHJ1Y3RvcipdKCVzKSB3aGVyZSB0aGUgKmFyZ3VtZW50KiBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBhcCA9IG1rX2FwX3BhdChbW19wYXRfYXJnXV0pO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIF9wYXRfY29uLCBhcCwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoQXApLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChhcCksIFtwYXQoXCJwX2NvblwiKSwgbWtfYXBfcGF0KFtbcGF0KFwicF9hcmdcIildXSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYXBfZXhdLFxuICB9O1xufTtcblxubGV0IGxldHNfZW1wdHlob2xlOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChFbXB0eUhvbGUpLFxuICBmb3JtczogW2xldF9lbXB0eV9ob2xlX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX211dGxpaG9sZTogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTXVsdGlIb2xlKSxcbiAgZm9ybXM6IFtsZXRfbXVsdGlfaG9sZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c193aWxkOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChXaWxkKSxcbiAgZm9ybXM6IFtsZXRfd2lsZF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19pbnQ6IGdyb3VwID0ge2lkOiBMZXRFeHAoSW50KSwgZm9ybXM6IFtsZXRfaW50X2V4cCwgbGV0X2Jhc2VfZXhwXX07XG5cbmxldCBsZXRzX2Zsb2F0OiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChGbG9hdCksXG4gIGZvcm1zOiBbbGV0X2Zsb2F0X2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2Jvb2w6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKEJvb2wpLFxuICBmb3JtczogW2xldF9ib29sX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3N0cjogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoU3RyaW5nKSxcbiAgZm9ybXM6IFtsZXRfc3RyX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3RyaXY6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFRyaXYpLFxuICBmb3JtczogW2xldF90cml2X2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2xpc3RsaXQ6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKExpc3RMaXQpLFxuICBmb3JtczogW2xldF9saXN0bGl0X2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2xpc3RuaWw6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKExpc3ROaWwpLFxuICBmb3JtczogW2xldF9saXN0bmlsX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2NvbnM6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKExpc3RDb25zKSxcbiAgZm9ybXM6IFtsZXRfY29uc19leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c192YXI6IGdyb3VwID0ge2lkOiBMZXRFeHAoVmFyKSwgZm9ybXM6IFtsZXRfdmFyX2V4cCwgbGV0X2Jhc2VfZXhwXX07XG5cbmxldCBsZXRzX3R1cGxlOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUdXBsZSksXG4gIGZvcm1zOiBbbGV0X3R1cGxlX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3R1cGxlMjogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoVHVwbGUyKSxcbiAgZm9ybXM6IFtsZXRfdHVwbGUyX2V4cCwgbGV0X3R1cGxlX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3R1cGxlMzogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoVHVwbGUzKSxcbiAgZm9ybXM6IFtsZXRfdHVwbGUzX2V4cCwgbGV0X3R1cGxlX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2N0cjogZ3JvdXAgPSB7aWQ6IExldEV4cChDdHIpLCBmb3JtczogW2xldF9jdHJfZXhwLCBsZXRfYmFzZV9leHBdfTtcblxubGV0IGxldHNfYXA6IGdyb3VwID0ge2lkOiBMZXRFeHAoQXApLCBmb3JtczogW2xldF9hcF9leHAsIGxldF9iYXNlX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGxpc3RfZXhwOiBmb3JtID0ge1xuICBsZXQgaW50X2xpc3QgPSB7XG4gICAgc3ViX2lkOiBMaXN0KEludCksXG4gICAgdGVybTogbWtfZXhhbXBsZShcIlsxLCAyXVwiKSxcbiAgICBtZXNzYWdlOiBcIkEgbGlzdCB3aXRoIHR3byBlbGVtZW50cywgMSBhbmQgMi5cIixcbiAgfTtcbiAgbGV0IHR1cGxlX2xpc3QgPSB7XG4gICAgc3ViX2lkOiBMaXN0KFR1cGxlKSxcbiAgICB0ZXJtOiBta19leGFtcGxlKFwiWygxLCB0cnVlKSwgKDIsIGZhbHNlKV1cIiksXG4gICAgbWVzc2FnZTogXCJBIGxpc3Qgd2l0aCB0d28gZWxlbWVudHMsIGEgdHVwbGUgd2l0aCAxIGFuZCB0cnVlIGFuZCBhIHR1cGxlIHdpdGggMiBhbmQgZmFsc2UuXCIsXG4gIH07XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiTGlzdCBsaXRlcmFsIHdpdGggJXMgZWxlbWVudChzKS5cIjtcbiAge1xuICAgIGlkOiBMaXN0RXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBta19saXN0X2V4cChbW2V4cChcImUxXCIpLCBjb21tYV9leHAoKSwgc3BhY2UoKSwgZXhwKFwiLi4uXCIpXV0pLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9saXN0LCB0dXBsZV9saXN0XSxcbiAgfTtcbn07XG5cbmxldCBjb25zMV9leCA9IHtcbiAgc3ViX2lkOiBMaXN0KENvbnMxKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjE6OltdXCIpLFxuICBtZXNzYWdlOiBcIkEgc2luZ2xlIGVsZW1lbnQgbGlzdCBvZiAxLlwiLFxufTtcbmxldCBjb25zMl9leCA9IHtcbiAgc3ViX2lkOiBMaXN0KENvbnMyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcInRydWU6OmZhbHNlOjpbXVwiKSxcbiAgbWVzc2FnZTogXCJBIGxpc3Qgd2l0aCB0d28gZWxlbWVudHMsIHRydWUgYW5kIGZhbHNlLlwiLFxufTtcbmxldCBfZXhwX2hkID0gZXhwKFwiZV9oZFwiKTtcbmxldCBfZXhwX3RsID0gZXhwKFwiZV90bFwiKTtcbmxldCBjb25zX2V4cF9jb2xvcmluZ19pZHMgPSAofmhkX2lkOiBJZC50LCB+dGxfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9oZCksIGhkX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfdGwpLCB0bF9pZCksXG5dO1xubGV0IGNvbnNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkNyZWF0ZXMgYSBsaXN0IHdpdGggWypoZWFkIGVsZW1lbnQqXSglcykgYW5kIFsqdGFpbCBlbGVtZW50Kl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IENvbnNFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX2hkLCBjb25zX2V4cCgpLCBfZXhwX3RsXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbY29uczFfZXgsIGNvbnMyX2V4XSxcbiAgfTtcbn07XG5cbmxldCBfZXhwX3hzID0gZXhwKFwieHNcIik7XG5sZXQgX2V4cF95cyA9IGV4cChcInlzXCIpO1xubGV0IGNvbmNhdF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnhzX2lkOiBJZC50LCB+eXNfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF94cyksIHhzX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfeXMpLCB5c19pZCksXG5dO1xubGV0IGxpc3RfY29uY2F0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJDcmVhdGVzIGEgbGlzdCBieSBjb21iaW5pbmcgdGhlIFsqZmlyc3Qgb3BlcmFuZCpdKCVzKSBhbmQgdGhlIFsqc2Vjb25kIG9wZXJhbmQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogTGlzdENvbmNhdEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfeHMsIHNwYWNlKCksIGxpc3RfY29uY2F0X2V4cCgpLCBzcGFjZSgpLCBfZXhwX3lzXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBsaXN0bGl0czogZ3JvdXAgPSB7aWQ6IExpc3RFeHAsIGZvcm1zOiBbbGlzdF9leHBdfTtcblxubGV0IGxpc3Rjb25zOiBncm91cCA9IHtpZDogQ29uc0V4cCwgZm9ybXM6IFtjb25zX2V4cF19O1xuXG5sZXQgbGlzdGNvbmNhdHM6IGdyb3VwID0ge2lkOiBMaXN0Q29uY2F0RXhwLCBmb3JtczogW2xpc3RfY29uY2F0X2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IGxpc3RsaXRfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbGlzdHMgd2l0aCAlcy1lbGVtZW50cyB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm4gbWF0Y2ggdGhpcyAqbGlzdCBsaXRlcmFsIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IExpc3RMaXRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIG1rX2xpc3RfcGF0KFtbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBzcGFjZSgpLCBwYXQoXCIuLi5cIildXSksXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgbGlzdG5pbF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSBlbXB0eSBsaXN0cyBgW11gIG1hdGNoIHRoZSAqZW1wdHkgbGlzdCBgW11gIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IExpc3ROaWxQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCJbXVwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgX3BhdF9oZCA9IHBhdChcInBfaGRcIik7XG5sZXQgX3BhdF90bCA9IHBhdChcInBfdGxcIik7XG5sZXQgY29uc19iYXNlX3BhdF9jb2xvcmluZ19pZHMgPVxuICAgICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0X2hkKSwgaGRfaWQpLFxuICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbl07XG5sZXQgY29uc19iYXNlX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vbi1lbXB0eSBsaXN0cyB3aXRoICpoZWFkIGVsZW1lbnQqIG1hdGNoaW5nIHRoZSBbKmhlYWQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpIGFuZCAqdGFpbCogbGlzdCBtYXRjaGluZyB0aGUgWyp0YWlsIHBhdHRlcm4qXSglcykgbWF0Y2ggdGhpcyBub24tZW1wdHkgbGlzdCBwYXR0ZXJuLlwiO1xuICB7XG4gICAgaWQ6IENvbnNQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfcGF0X2hkLCBjb25zX3BhdCgpLCBfcGF0X3RsXSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0X3RsKSwgW3BhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfcGF0X2ZzdCA9IHBhdChcInBfZnN0XCIpO1xubGV0IF9wYXRfc25kID0gcGF0KFwicF9zbmRcIik7XG5sZXQgX3BhdF90bCA9IHBhdChcInBfdGxcIik7XG5sZXQgY29uczJfcGF0X2NvbG9yaW5nX2lkcyA9XG4gICAgKH5mc3RfaWQ6IElkLnQsIH5zbmRfaWQ6IElkLnQsIH50bF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0X2ZzdCksIGZzdF9pZCksXG4gIChQaWVjZS5pZChfcGF0X3NuZCksIHNuZF9pZCksXG4gIChQaWVjZS5pZChfcGF0X3RsKSwgdGxfaWQpLFxuXTtcbmxldCBjb25zMl9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSBub24tZW1wdHkgbGlzdHMgd2l0aCAqZmlyc3QgZWxlbWVudCogbWF0Y2hpbmcgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCAqc2Vjb25kIGVsZW1lbnQqIG1hdGNoaW5nIHRoZSBbKnNlY29uZCBlbGVtZW50IHBhdHRlcm4qXSglcyksIGFuZCAqdGFpbCogbGlzdCBtYXRjaGluZyB0aGUgWyp0YWlsIHBhdHRlcm4qXSglcykgbWF0Y2ggdGhpcyBub24tZW1wdHkgbGlzdCBwYXR0ZXJuLlwiO1xuICBsZXQgYyA9IGNvbnNfcGF0KCk7XG4gIHtcbiAgICBpZDogQ29uczJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfcGF0X2ZzdCwgY29uc19wYXQoKSwgX3BhdF9zbmQsIGMsIF9wYXRfdGxdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjKSwgW3BhdChcInBfc25kXCIpLCBjb25zX3BhdCgpLCBwYXQoXCJwX3RsXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBsaXN0bGl0OiBncm91cCA9IHtpZDogTGlzdExpdFBhdCwgZm9ybXM6IFtsaXN0bGl0X3BhdF19O1xuXG5sZXQgbGlzdG5pbDogZ3JvdXAgPSB7aWQ6IExpc3ROaWxQYXQsIGZvcm1zOiBbbGlzdG5pbF9wYXRdfTtcblxubGV0IGNvbnM6IGdyb3VwID0ge2lkOiBDb25zUGF0LCBmb3JtczogW2NvbnNfYmFzZV9wYXRdfTtcblxubGV0IGNvbnMyOiBncm91cCA9IHtpZDogQ29uczJQYXQsIGZvcm1zOiBbY29uczJfcGF0LCBjb25zX2Jhc2VfcGF0XX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgX3R5cF9lbGVtID0gdHlwKFwidHlfZWxlbVwiKTtcbi8vIFRPRE8gU3ludGFjdGljIGZvcm0gY29sb3JpbmcgbG9va3Mgb2ZmIGZvciB0aGlzIG9uZSBhbmQgb3RoZXIgdHlwZXMgb25lcy4uLlxubGV0IGxpc3RfdHlwX2NvbG9yaW5nX2lkcyA9ICh+ZWxlbV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2VsZW0pLCBlbGVtX2lkKSxcbl07XG5sZXQgbGlzdF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIGxpc3QgdHlwZSBjbGFzc2lmaWVzIGxpc3RzIHdpdGggZWxlbWVudHMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBbKmVsZW1lbnQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBMaXN0VHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbWtfbGlzdF90eXAoW1tfdHlwX2VsZW1dXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxpc3Q6IGdyb3VwID0ge2lkOiBMaXN0VHlwLCBmb3JtczogW2xpc3RfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgaW50X3VuYXJ5X21pbnVzX2V4ID0ge1xuICBzdWJfaWQ6IEludFVuYXJ5TWludXMsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCItMVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMSBpcyBuZWdhdGVkLlwiLFxufTtcbmxldCBpbnRfcGx1c19leCA9IHtcbiAgc3ViX2lkOiBJbnQoUGx1cyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxICsgMlwiKSxcbiAgbWVzc2FnZTogXCIxIGFkZGVkIHRvIDIgZXZhbHV0ZXMgdG8gMy5cIixcbn07XG5sZXQgaW50X21pbnVzX2V4ID0ge1xuICBzdWJfaWQ6IEludChNaW51cyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIyIC0gMVwiKSxcbiAgbWVzc2FnZTogXCIyIG1pbnVzIDEgZXZhbHV0ZXMgdG8gMS5cIixcbn07XG5sZXQgaW50X3RpbWVzX2V4ID0ge1xuICBzdWJfaWQ6IEludChUaW1lcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxICogMlwiKSxcbiAgbWVzc2FnZTogXCIxIG11bHRpcGxpZWQgYmUgMiBldmFsdXRlcyB0byAyLlwiLFxufTtcbmxldCBpbnRfcG93ZXJfZXggPSB7XG4gIHN1Yl9pZDogSW50KFBvd2VyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIgKiogNFwiKSxcbiAgbWVzc2FnZTogXCIyIHJhaXNlZCB0byA0IGV2YWx1YXRlcyB0byAxNlwiLFxufTtcbmxldCBpbnRfZGl2aWRlX2V4ID0ge1xuICBzdWJfaWQ6IEludChEaXZpZGUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNiAvIDNcIiksXG4gIG1lc3NhZ2U6IFwiNiBkaXZpZGVkIGJ5IDMgZXZhbHV0ZXMgdG8gMi5cIixcbn07XG5sZXQgaW50X2x0MV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5UcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPCAyXCIpLFxuICBtZXNzYWdlOiBcIjEgaXMgbGVzcyB0aGFuIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1dGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGludF9sdDJfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNCA8IDNcIiksXG4gIG1lc3NhZ2U6IFwiNCBpcyBsZXNzIG5vdCBsZXNzIHRoYW4gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfbHRlMV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5FcXVhbExlc3MpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA8PSAyXCIpLFxuICBtZXNzYWdlOiBcIjEgaXMgbGVzcyB0aGFuIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1dGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGludF9sdGUyX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNCA8PSAzXCIpLFxuICBtZXNzYWdlOiBcIjQgaXMgbGVzcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2x0ZTNfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1IDw9IDVcIiksXG4gIG1lc3NhZ2U6IFwiNSBpcyBlcXVhbCB0byA1LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2d0MV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxID4gMlwiKSxcbiAgbWVzc2FnZTogXCIxIGlzIG5vdCBncmVhdGVyIHRoYW4gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfZ3QyX2V4ID0ge1xuICBzdWJfaWQ6IEludChHcmVhdGVyVGhhblRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNCA+IDNcIiksXG4gIG1lc3NhZ2U6IFwiNCBpcyBncmVhdGVyIHRoYW4gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGludF9ndGUxX2V4ID0ge1xuICBzdWJfaWQ6IEludChHcmVhdGVyVGhhbkVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA+PSAyXCIpLFxuICBtZXNzYWdlOiBcIjEgaXMgbm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9ndGUyX2V4ID0ge1xuICBzdWJfaWQ6IEludChHcmVhdGVyVGhhbkVxdWFsR3JlYXRlciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0ID49IDNcIiksXG4gIG1lc3NhZ2U6IFwiNCBpcyBncmVhdGVyIHRoYW4gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGludF9ndGUzX2V4ID0ge1xuICBzdWJfaWQ6IEludChHcmVhdGVyVGhhbkVxdWFsRXF1YWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNSA+PSA1XCIpLFxuICBtZXNzYWdlOiBcIjUgaXMgZXF1YWwgdG8gNSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGludF9lcTFfZXggPSB7XG4gIHN1Yl9pZDogSW50KEVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA9PSAyXCIpLFxuICBtZXNzYWdlOiBcIjEgZG9lcyBub3QgZXF1YWwgMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfZXEyX2V4ID0ge1xuICBzdWJfaWQ6IEludChFcXVhbFRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMyA9PSAzXCIpLFxuICBtZXNzYWdlOiBcIjMgaXMgZXF1YWwgdG8gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X3BsdXNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoUGx1cyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiArLiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4gYWRkZWQgdG8gMi4xIGV2YWx1dGVzIHRvIDMuMVwiLFxufTtcbmxldCBmbG9hdF9taW51c19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChNaW51cyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIyLiAtLiAxLjFcIiksXG4gIG1lc3NhZ2U6IFwiMi4gbWludXMgMS4xIGV2YWx1dGVzIHRvIDAuOVwiLFxufTtcbmxldCBmbG9hdF90aW1lc19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChUaW1lcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiAqLiAyLjJcIiksXG4gIG1lc3NhZ2U6IFwiMSBtdWx0aXBsaWVkIGJlIDIuMiBldmFsdXRlcyB0byAyLjIuXCIsXG59O1xubGV0IGZsb2F0X3Bvd2VyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KFBvd2VyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIuICoqLiA0LlwiKSxcbiAgbWVzc2FnZTogXCIyLiByYWlzZWQgdG8gNC4gZXZhbHVhdGVzIHRvIDE2LlwiLFxufTtcbmxldCBmbG9hdF9kaXZpZGVfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoRGl2aWRlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuMiAvLiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4yIGRpdmlkZWQgYnkgMi4xIGV2YWx1dGVzIHRvIDIuXCIsXG59O1xubGV0IGZsb2F0X2x0MV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhblRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4gPC4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuIGlzIGxlc3MgdGhhbiAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1dGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2x0Ml9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhbkZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuIDwuIDMuMVwiKSxcbiAgbWVzc2FnZTogXCI0LiBpcyBsZXNzIG5vdCBsZXNzIHRoYW4gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGZsb2F0X2x0ZTFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5FcXVhbExlc3MpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4gPD0uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLiBpcyBsZXNzIHRoYW4gMi4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9sdGUyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LiA8PS4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjQuIGlzIGxlc3Mgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfbHRlM19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhbkVxdWFsRXF1YWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNS41IDw9LiA1LjVcIiksXG4gIG1lc3NhZ2U6IFwiNS41IGlzIGVxdWFsIHRvIDUuNSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2d0MV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChHcmVhdGVyVGhhbkZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuMSA+LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4xIGlzIG5vdCBncmVhdGVyIHRoYW4gMi4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGZsb2F0X2d0Ml9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChHcmVhdGVyVGhhblRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPi4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjQuIGlzIGdyZWF0ZXIgdGhhbiAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9ndGUxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLjEgPj0uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLjEgaXMgbm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfZ3RlMl9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChHcmVhdGVyVGhhbkVxdWFsR3JlYXRlciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LiA+PS4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjQuIGlzIGdyZWF0ZXIgdGhhbiAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9ndGUzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1LjUgPj0uIDUuNVwiKSxcbiAgbWVzc2FnZTogXCI1LjUgaXMgZXF1YWwgdG8gNS41LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZXExX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4gPT0uIDIuXCIpLFxuICBtZXNzYWdlOiBcIjEuIGRvZXMgbm90IGVxdWFsIDIuLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGZsb2F0X2VxMl9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChFcXVhbFRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMy4xID09LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiMy4xIGlzIGVxdWFsIHRvIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGJvb2xfYW5kMV9leCA9IHtcbiAgc3ViX2lkOiBBbmRGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcInRydWUgJiYgZmFsc2VcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgb3BlcmFuZCBpcyB0cnVlLCBzbyBldmFsdWF0ZSB0aGUgcmlnaHQgb3BlcmFuZC4gU2luY2UgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZmFsc2UsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgYm9vbF9hbmQyX2V4ID0ge1xuICBzdWJfaWQ6IEFuZFRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxIDwgMiAmJiAzIDwgNFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGV2YWx1YXRlcyB0byB0cnVlLCBzbyBldmFsdWF0ZSB0aGUgcmlnaHQgb3BlcmFuZC4gU2luY2UgdGhlIHJpZ2h0IG9wZXJhbmQgYWxzbyBldmFsdXRlcyB0byB0cnVlLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgYm9vbF9vcjFfZXggPSB7XG4gIHN1Yl9pZDogT3JGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZhbHNlIFxcXFwvIDIgPCAxXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgZXZhbHVhdGVzIHRvIGZhbHNlLCBzbyBldmFsdWF0ZSB0aGUgcmlnaHQgb3BlcmFuZC4gU2luY2UgdGhlIHJpZ2h0IG9wZXJhbmQgYWxzbyBldmFsdWF0ZXMgdG8gZmFsc2UsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgYm9vbF9vcjJfZXggPSB7XG4gIHN1Yl9pZDogT3JUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMyA8IDQgXFxcXC8gZmFsc2VcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgb3BlcmFuZCBldmFsdXRlcyB0byB0cnVlLCBzbyB0aGUgcmlnaHQgb3BlcmFuZCBpcyBub3QgZXZhbHVhdGVkLiBUaGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgc3RyX2VxMV9leCA9IHtcbiAgc3ViX2lkOiBTdHJpbmdFcXVhbEZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiXFxcImFiY1xcXCIgJD09IFxcXCJ4eXpcXFwiXCIpLFxuICBtZXNzYWdlOiBcIlxcXCJhYmNcXFwiIGRvZXMgbm90IGVxdWFsIFxcXCJ4eXpcXFwiLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IHN0cl9lcTJfZXggPSB7XG4gIHN1Yl9pZDogU3RyaW5nRXF1YWxUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiXFxcImFiY1xcXCIgJD09IFxcXCJhYmNcXFwiXCIpLFxuICBtZXNzYWdlOiBcIlxcXCJhYmNcXFwiIGlzIGVxdWFsIHRvIFxcXCJhYmNcXFwiLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgX3Vub3BfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX2V4cF9pZDogSWQudCwgfmV4cF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChzZl9leHBfaWQsIGV4cF9pZCksXG5dO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGJvb2xfdW5hcnlfbm90X2V4cF9jb2xvcmluZ19pZHMgPSAofmV4cF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfdW5vcF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9leHApLCB+ZXhwX2lkKTtcbmxldCBib29sX3VuYXJ5X25vdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiUGVyZm9ybXMgYm9vbGVhbiBuZWdhdGlvbiBvZiB0aGUgWypvcGVyYW5kKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IFVuT3BFeHAoQm9vbChOb3QpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW3VuYXJ5X25vdCgpLCBfZXhwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgaW50X3VuYXJ5X21pbnVzX2V4cF9jb2xvcmluZ19pZHMgPSAofmV4cF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfdW5vcF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9leHApLCB+ZXhwX2lkKTtcbmxldCBpbnRfdW5hcnlfbWludXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlBlcmZvcm1zIGludGVnZXIgbmVnYXRpb24gb2YgdGhlIFsqb3BlcmFuZCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBVbk9wRXhwKEludChNaW51cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdW5hcnlfbWludXMoKSwgX2V4cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF91bmFyeV9taW51c19leF0sXG4gIH07XG59O1xubGV0IF9iaW5vcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfbGVmdF9pZDogSWQudCwgc2ZfcmlnaHRfaWQ6IElkLnQsIH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKHNmX2xlZnRfaWQsIGxlZnRfaWQpLCAoc2ZfcmlnaHRfaWQsIHJpZ2h0X2lkKV07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfcGx1c19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfcGx1c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHN1bSBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChQbHVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgcGx1cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9wbHVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9taW51c19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfbWludXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KE1pbnVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbWludXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbWludXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF90aW1lc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHByb2R1Y3Qgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoVGltZXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCB0aW1lcygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF90aW1lc19leF0sXG4gIH07XG59O1xubGV0IGludF9wb3dlcl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfcG93ZXJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSByZXN1bHQgb2YgcmFpc2luZyBbKmxlZnQqXSglcykgcm8gdGhlIFsqcmlnaHQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KFBvd2VyKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgcG93ZXIoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfcG93ZXJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZGl2aWRlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcXVvdGllbnQgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoRGl2aWRlKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZGl2aWRlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2RpdmlkZV9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfbHRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2x0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbGVzcyB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoTGVzc1RoYW4pKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsdCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9sdDFfZXgsIGludF9sdDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2x0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfbHRlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoTGVzc1RoYW5PckVxdWFsKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbHRlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2x0ZTFfZXgsIGludF9sdGUyX2V4LCBpbnRfbHRlM19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZ3RfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2d0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZ3JlYXRlciB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoR3JlYXRlclRoYW4pKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBndCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9ndDFfZXgsIGludF9ndDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2d0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZ3RlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZ3RlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2d0ZTFfZXgsIGludF9ndGUyX2V4LCBpbnRfZ3RlM19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2VxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoRXF1YWxzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2VxMV9leCwgaW50X2VxMl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfbmVxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9uZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBub3QgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoTm90RXF1YWxzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbm90X2VxdWFscygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9wbHVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X3BsdXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBzdW0gb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChQbHVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZnBsdXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9wbHVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X21pbnVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X21pbnVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KE1pbnVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZm1pbnVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfbWludXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfdGltZXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBwcm9kdWN0IG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoVGltZXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmdGltZXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF90aW1lc19leF0sXG4gIH07XG59O1xubGV0IGZsb2F0X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X3Bvd2VyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcmVzdWx0IG9mIHJhaXNpbmcgWypsZWZ0Kl0oJXMpIHRvIHRoZSBbKnJpZ2h0Kl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBvd2VyKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZnBvd2VyKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfcG93ZXJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2RpdmlkZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHF1b3RpZW50IG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoRGl2aWRlKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmRpdmlkZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2RpdmlkZV9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9sdF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9sdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGxlc3MgdGhhbiB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW4pKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmbHQoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9sdDFfZXgsIGZsb2F0X2x0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9sdGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbHRlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChMZXNzVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmbHRlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfbHRlMV9leCwgZmxvYXRfbHRlMl9leCwgZmxvYXRfbHRlM19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9ndF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9ndF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGdyZWF0ZXIgdGhhbiB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW4pKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZ3QoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9ndDFfZXgsIGZsb2F0X2d0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9ndGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZ3RlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZ3RlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZ3RlMV9leCwgZmxvYXRfZ3RlMl9leCwgZmxvYXRfZ3RlM19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoRXF1YWxzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmVxdWFscygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2VxMV9leCwgZmxvYXRfZXEyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X25lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9uZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBub3QgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChOb3RFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmbm90X2VxdWFscygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBib29sX2FuZF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBib29sX2FuZF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIGV2YWx1YXRlIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcykuIElmIHRoYXQgYWxzbyBldmFsdWF0ZXMgdG8gYHRydWVgLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEJvb2woQW5kKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbG9naWNhbF9hbmQoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtib29sX2FuZDFfZXgsIGJvb2xfYW5kMl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBib29sX29yX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xuLy8gVE9ETyBTb21lIG9mIHRoZSBleGFtcGxlcyBhcmUgZXZhbHVhdGluZyB3ZWlyZGx5IGFuZCBjYW4ndCB0eXBlIHRoZSB8fCBpbiB0aGUgZWRpdG9yXG5sZXQgYm9vbF9vcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGUgdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKS4gSWYgdGhhdCBldmFsdWF0ZXMgdG8gYHRydWVgLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEJvb2woT3IpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsb2dpY2FsX29yKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYm9vbF9vcjFfZXgsIGJvb2xfb3IyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IHN0cl9lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBzdHJfZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKFN0cmluZyhFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBzZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbc3RyX2VxMV9leCwgc3RyX2VxMl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBzdHJfY29uY2F0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IHN0cl9jb25jYXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlJldHVybnMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGFuZCB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLFwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKFN0cmluZyhDb25jYXQpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBzY29uY2F0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBib29sX3VuX25vdDogZ3JvdXAgPSB7XG4gIGlkOiBVbk9wRXhwKEJvb2woTm90KSksXG4gIGZvcm1zOiBbYm9vbF91bmFyeV9ub3RfZXhwXSxcbn07XG5cbmxldCBpbnRfdW5fbWludXM6IGdyb3VwID0ge1xuICBpZDogVW5PcEV4cChJbnQoTWludXMpKSxcbiAgZm9ybXM6IFtpbnRfdW5hcnlfbWludXNfZXhwXSxcbn07XG5cbmxldCBpbnRfcGx1czogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChQbHVzKSksIGZvcm1zOiBbaW50X3BsdXNfZXhwXX07XG5cbmxldCBpbnRfbWludXM6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoTWludXMpKSwgZm9ybXM6IFtpbnRfbWludXNfZXhwXX07XG5cbmxldCBpbnRfdGltZXM6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoVGltZXMpKSwgZm9ybXM6IFtpbnRfdGltZXNfZXhwXX07XG5cbmxldCBpbnRfcG93ZXI6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoUG93ZXIpKSwgZm9ybXM6IFtpbnRfcG93ZXJfZXhwXX07XG5cbmxldCBpbnRfZGl2aWRlOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChEaXZpZGUpKSxcbiAgZm9ybXM6IFtpbnRfZGl2aWRlX2V4cF0sXG59O1xuXG5sZXQgaW50X2xlc3NfdGhhbjogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoTGVzc1RoYW4pKSxcbiAgZm9ybXM6IFtpbnRfbHRfZXhwXSxcbn07XG5cbmxldCBpbnRfbGVzc190aGFuX2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbk9yRXF1YWwpKSxcbiAgZm9ybXM6IFtpbnRfbHRlX2V4cF0sXG59O1xuXG5sZXQgaW50X2dyZWF0ZXJfdGhhbjogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoR3JlYXRlclRoYW4pKSxcbiAgZm9ybXM6IFtpbnRfZ3RfZXhwXSxcbn07XG5cbmxldCBpbnRfZ3JlYXRlcl90aGFuX2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbk9yRXF1YWwpKSxcbiAgZm9ybXM6IFtpbnRfZ3RlX2V4cF0sXG59O1xuXG5sZXQgaW50X2VxdWFsOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KEVxdWFscykpLCBmb3JtczogW2ludF9lcV9leHBdfTtcblxubGV0IGludF9ub3RfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KE5vdEVxdWFscykpLFxuICBmb3JtczogW2ludF9uZXFfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9wbHVzOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBsdXMpKSxcbiAgZm9ybXM6IFtmbG9hdF9wbHVzX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfbWludXM6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTWludXMpKSxcbiAgZm9ybXM6IFtmbG9hdF9taW51c19leHBdLFxufTtcblxubGV0IGZsb2F0X3RpbWVzOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KFRpbWVzKSksXG4gIGZvcm1zOiBbZmxvYXRfdGltZXNfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9wb3dlcjogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChQb3dlcikpLFxuICBmb3JtczogW2Zsb2F0X3Bvd2VyX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZGl2aWRlOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KERpdmlkZSkpLFxuICBmb3JtczogW2Zsb2F0X2RpdmlkZV9leHBdLFxufTtcblxubGV0IGZsb2F0X2xlc3NfdGhhbjogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChMZXNzVGhhbikpLFxuICBmb3JtczogW2Zsb2F0X2x0X2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfbGVzc190aGFuX2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2Zsb2F0X2x0ZV9leHBdLFxufTtcblxubGV0IGZsb2F0X2dyZWF0ZXJfdGhhbjogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChHcmVhdGVyVGhhbikpLFxuICBmb3JtczogW2Zsb2F0X2d0X2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZ3JlYXRlcl90aGFuX2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2Zsb2F0X2d0ZV9leHBdLFxufTtcblxubGV0IGZsb2F0X2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KEVxdWFscykpLFxuICBmb3JtczogW2Zsb2F0X2VxX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfbm90X2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KE5vdEVxdWFscykpLFxuICBmb3JtczogW2Zsb2F0X25lcV9leHBdLFxufTtcblxubGV0IGJvb2xfYW5kOiBncm91cCA9IHtpZDogQmluT3BFeHAoQm9vbChBbmQpKSwgZm9ybXM6IFtib29sX2FuZF9leHBdfTtcblxubGV0IGJvb2xfb3I6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChCb29sKE9yKSksIGZvcm1zOiBbYm9vbF9vcl9leHBdfTtcblxubGV0IHN0cmluZ19lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChTdHJpbmcoRXF1YWxzKSksXG4gIGZvcm1zOiBbc3RyX2VxX2V4cF0sXG59O1xuXG5sZXQgc3RyaW5nX2NvbmNhdDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChTdHJpbmcoQ29uY2F0KSksXG4gIGZvcm1zOiBbc3RyX2NvbmNhdF9leHBdLFxufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIEhhejNsY29yZTtcblxuLyogSWYgeW91IGFyZSBhZGRpbmcgZG9jcyBoZXJlIGZvciBuZXcgc3ludGF4LCBzZWUgUGlwZWxpbmVFeHAucmVcbiAqIHdoaWNoIGRvY3VtZW50cyB0aGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBhIG5ldyBmb3JtLiAqL1xuXG5sZXQgZmVlZGJhY2tfdmlldyA9IChtZXNzYWdlLCB1cF9hY3RpdmUsIHVwX2FjdGlvbiwgZG93bl9hY3RpdmUsIGRvd25fYWN0aW9uKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImZlZWRiYWNrXCJdKSxcbiAgICBbXG4gICAgICBkaXYofmF0dHI9Y2xzcyhbXCJtZXNzYWdlXCJdKSwgW3RleHQobWVzc2FnZSldKSxcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIGNsc3MoW1wib3B0aW9uXCJdIEAgKHVwX2FjdGl2ZSA/IFtcImFjdGl2ZVwiXSA6IFtdKSksXG4gICAgICAgICAgICBBdHRyLm9uX2NsaWNrKHVwX2FjdGlvbiksXG4gICAgICAgICAgXSksXG4gICAgICAgIFt0ZXh0KFwi8J+RjVwiKV0sXG4gICAgICApLFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgY2xzcyhbXCJvcHRpb25cIl0gQCAoZG93bl9hY3RpdmUgPyBbXCJhY3RpdmVcIl0gOiBbXSkpLFxuICAgICAgICAgICAgQXR0ci5vbl9jbGljayhkb3duX2FjdGlvbiksXG4gICAgICAgICAgXSksXG4gICAgICAgIFt0ZXh0KFwi8J+RjlwiKV0sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZXhwbGFuYXRpb25fZmVlZGJhY2tfdmlldyA9ICh+aW5qZWN0LCBncm91cF9pZCwgZm9ybV9pZCwgbW9kZWwpID0+IHtcbiAgbGV0ICh1cF9hY3RpdmUsIGRvd25fYWN0aXZlKSA9XG4gICAgc3dpdGNoIChcbiAgICAgIEV4cGxhaW5UaGlzTW9kZWwuZ2V0X2V4cGxhbmF0aW9uX2ZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBtb2RlbClcbiAgICApIHtcbiAgICB8IFNvbWUoVGh1bWJzVXApID0+ICh0cnVlLCBmYWxzZSlcbiAgICB8IFNvbWUoVGh1bWJzRG93bikgPT4gKGZhbHNlLCB0cnVlKVxuICAgIHwgTm9uZSA9PiAoZmFsc2UsIGZhbHNlKVxuICAgIH07XG4gIGZlZWRiYWNrX3ZpZXcoXG4gICAgXCJUaGlzIGV4cGxhbmF0aW9uIGlzIGhlbHBmdWxcIixcbiAgICB1cF9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeHBsYW5hdGlvbkZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBUaHVtYnNVcCksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIGRvd25fYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhwbGFuYXRpb25GZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgVGh1bWJzRG93biksXG4gICAgICAgICksXG4gICAgICApLFxuICApO1xufTtcblxubGV0IGV4YW1wbGVfZmVlZGJhY2tfdmlldyA9ICh+aW5qZWN0LCBncm91cF9pZCwgZm9ybV9pZCwgZXhhbXBsZV9pZCwgbW9kZWwpID0+IHtcbiAgbGV0ICh1cF9hY3RpdmUsIGRvd25fYWN0aXZlKSA9XG4gICAgc3dpdGNoIChcbiAgICAgIEV4cGxhaW5UaGlzTW9kZWwuZ2V0X2V4YW1wbGVfZmVlZGJhY2soXG4gICAgICAgIGdyb3VwX2lkLFxuICAgICAgICBmb3JtX2lkLFxuICAgICAgICBleGFtcGxlX2lkLFxuICAgICAgICBtb2RlbCxcbiAgICAgIClcbiAgICApIHtcbiAgICB8IFNvbWUoVGh1bWJzVXApID0+ICh0cnVlLCBmYWxzZSlcbiAgICB8IFNvbWUoVGh1bWJzRG93bikgPT4gKGZhbHNlLCB0cnVlKVxuICAgIHwgTm9uZSA9PiAoZmFsc2UsIGZhbHNlKVxuICAgIH07XG4gIGZlZWRiYWNrX3ZpZXcoXG4gICAgXCJUaGlzIGV4YW1wbGUgaXMgaGVscGZ1bFwiLFxuICAgIHVwX2FjdGl2ZSxcbiAgICBfID0+XG4gICAgICBpbmplY3QoXG4gICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgIFRvZ2dsZUV4YW1wbGVGZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZXhhbXBsZV9pZCwgVGh1bWJzVXApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBkb3duX2FjdGl2ZSxcbiAgICBfID0+XG4gICAgICBpbmplY3QoXG4gICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgIFRvZ2dsZUV4YW1wbGVGZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZXhhbXBsZV9pZCwgVGh1bWJzRG93biksXG4gICAgICAgICksXG4gICAgICApLFxuICApO1xufTtcblxubGV0IGNvZGVfbm9kZSA9IHRleHQgPT4gTm9kZS5zcGFuKH5hdHRyPWNsc3MoW1wiY29kZVwiXSksIFtOb2RlLnRleHQodGV4dCldKTtcblxubGV0IGhpZ2hsaWdodCA9XG4gICAgKH5pbmplY3QsIG1zZzogbGlzdChOb2RlLnQpLCBpZDogSWQudCwgbWFwcGluZzogQ29sb3JTdGVwcy50KVxuICAgIDogKE5vZGUudCwgQ29sb3JTdGVwcy50KSA9PiB7XG4gIGxldCAoYywgbWFwcGluZykgPSBDb2xvclN0ZXBzLmdldF9jb2xvcihpZCwgbWFwcGluZyk7XG4gIGxldCBjbGFzc2VzID0gY2xzcyhbXCJoaWdobGlnaHQtXCIgKysgYywgXCJjbGlja2FibGVcIl0pO1xuICBsZXQgYXR0ciA9XG4gICAgc3dpdGNoIChpbmplY3QpIHtcbiAgICB8IFNvbWUoaW5qZWN0KSA9PlxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWVudGVyKF8gPT5cbiAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlNldChFeHBsYWluVGhpcyhTZXRIaWdobGlnaHQoSG92ZXIoaWQpKSkpKVxuICAgICAgICApLFxuICAgICAgICBBdHRyLm9uX21vdXNlbGVhdmUoXyA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KEV4cGxhaW5UaGlzKFNldEhpZ2hsaWdodChVbnNldEhvdmVyKSkpKVxuICAgICAgICApLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oU2VsZWN0KFRlcm0oSWQoaWQsIExlZnQpKSkpKVxuICAgICAgICApLFxuICAgICAgXSlcbiAgICB8IE5vbmUgPT4gY2xhc3Nlc1xuICAgIH07XG4gIChOb2RlLnNwYW4ofmF0dHIsIG1zZyksIG1hcHBpbmcpO1xufTtcblxuLypcbiBNYXJrZG93biBsaWtlIHRoaW5nOlxuIGhpZ2hsaWdodHkgdGhpbmcgOiBbdGhpbmcgdG8gaGlnaGxpZ2h0XShpZClcbiBidWxsZXRlZCBsaXN0OiAtIGxpc3QgaXRlbVxuICAgICAgICAgICAgICAgIC0gbGlzdCBpdGVtXG4gY29kZTogYGNvZGVgXG4gaXRhbGljczogKndvcmQqXG4gKi9cbmxldCBta190cmFuc2xhdGlvbiA9ICh+aW5qZWN0LCB0ZXh0OiBzdHJpbmcpOiAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpID0+IHtcbiAgbGV0IG9tZCA9IE9tZC5vZl9zdHJpbmcodGV4dCk7XG4gIC8vcHJpbnRfbWFya2Rvd24ob21kKTtcbiAgbGV0IHJlYyB0cmFuc2xhdGUgPVxuICAgICAgICAgIChkb2M6IE9tZC50LCBtYXBwaW5nOiBDb2xvclN0ZXBzLnQpOiAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoKG1zZywgbWFwcGluZyksIGVsZW0pID0+IHtcbiAgICAgICAgc3dpdGNoIChlbGVtKSB7XG4gICAgICAgIHwgT21kLlBhcmFncmFwaChkKSA9PiB0cmFuc2xhdGUoZCwgbWFwcGluZylcbiAgICAgICAgfCBUZXh0KHQpID0+IChMaXN0LmFwcGVuZChtc2csIFtOb2RlLnRleHQodCldKSwgbWFwcGluZylcbiAgICAgICAgfCBVbChpdGVtcykgPT5cbiAgICAgICAgICBsZXQgKGJ1bGxldHMsIG1hcHBpbmcpID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAoKG5vZGVzLCBtYXBwaW5nKSwgZCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCAobiwgbWFwcGluZykgPSB0cmFuc2xhdGUoZCwgbWFwcGluZyk7XG4gICAgICAgICAgICAgICAgKExpc3QuYXBwZW5kKG5vZGVzLCBbTm9kZS5saShuKV0pLCBtYXBwaW5nKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKFtdLCBtYXBwaW5nKSxcbiAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIChMaXN0LmFwcGVuZChtc2csIFtOb2RlLnVsKGJ1bGxldHMpXSksIG1hcHBpbmcpOyAvKiBUT0RPIEhhbm5haCAtIFNob3VsZCB0aGlzIGJlIGFuIG9yZGVyZWQgbGlzdCBpbnN0ZWFkIG9mIGFuIHVub3JkZXJlZCBsaXN0PyAqL1xuICAgICAgICB8IENvZGUoX25hbWUsIHQpID0+IChMaXN0LmFwcGVuZChtc2csIFtjb2RlX25vZGUodCldKSwgbWFwcGluZylcbiAgICAgICAgfCBVcmwoaWQsIGQsIF90aXRsZSkgPT5cbiAgICAgICAgICBsZXQgKGQsIG1hcHBpbmcpID0gdHJhbnNsYXRlKGQsIG1hcHBpbmcpO1xuICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICBzd2l0Y2ggKElkLm9mX3N0cmluZyhpZCkpIHtcbiAgICAgICAgICAgIHwgU29tZShpZCkgPT4gaWRcbiAgICAgICAgICAgIHwgTm9uZSA9PiBJZC5pbnZhbGlkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGxldCAoaW5uZXJfbXNnLCBtYXBwaW5nKSA9IGhpZ2hsaWdodCh+aW5qZWN0LCBkLCBpZCwgbWFwcGluZyk7XG4gICAgICAgICAgKExpc3QuYXBwZW5kKG1zZywgW2lubmVyX21zZ10pLCBtYXBwaW5nKTtcbiAgICAgICAgfCBFbXBoKGQpID0+XG4gICAgICAgICAgbGV0IChkLCBtYXBwaW5nKSA9IHRyYW5zbGF0ZShkLCBtYXBwaW5nKTtcbiAgICAgICAgICAoXG4gICAgICAgICAgICBMaXN0LmFwcGVuZChcbiAgICAgICAgICAgICAgbXNnLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgTm9kZS5zcGFuKFxuICAgICAgICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgICAgICAgIEF0dHIuc3R5bGUoXG4gICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi5jcmVhdGUofmZpZWxkPVwiZm9udC1zdHlsZVwiLCB+dmFsdWU9XCJpdGFsaWNcIiksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwcGluZyxcbiAgICAgICAgICApO1xuICAgICAgICB8IF8gPT4gKG1zZywgbWFwcGluZylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChbXSwgbWFwcGluZyksXG4gICAgICBkb2MsXG4gICAgKTtcbiAgdHJhbnNsYXRlKG9tZCwgQ29sb3JTdGVwcy5lbXB0eSk7XG59O1xuXG5sZXQgbWtfZXhwbGFuYXRpb24gPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICBncm91cF9pZCxcbiAgICAgIGZvcm1faWQsXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICBtb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgIClcbiAgICA6IChOb2RlLnQsIENvbG9yU3RlcHMudCkgPT4ge1xuICBsZXQgKG1zZywgY29sb3JfbWFwKSA9IG1rX3RyYW5zbGF0aW9uKH5pbmplY3Q9U29tZShpbmplY3QpLCB0ZXh0KTtcbiAgbGV0IGZlZWRiYWNrID1cbiAgICBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrXG4gICAgICA/IFtleHBsYW5hdGlvbl9mZWVkYmFja192aWV3KH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBtb2RlbCldIDogW107XG4gIChcbiAgICBkaXYoW2Rpdih+YXR0cj1jbHNzKFtcImV4cGxhbmF0aW9uLWNvbnRlbnRzXCJdKSwgbXNnKV0gQCBmZWVkYmFjayksXG4gICAgY29sb3JfbWFwLFxuICApO1xufTtcblxubGV0IGV4cGFuZGVyX2RlY28gPVxuICAgIChcbiAgICAgIH5kb2NzOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlIGFzIHtmb250X21ldHJpY3MsIF99OiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5vcHRpb25zOiBsaXN0KChFeHBsYWluVGhpc0Zvcm0uZm9ybV9pZCwgU2VnbWVudC50KSksXG4gICAgICB+Z3JvdXA6IEV4cGxhaW5UaGlzRm9ybS5ncm91cCxcbiAgICAgIH5kb2M6IEV4cGxhaW5UaGlzRm9ybS5mb3JtLFxuICAgICkgPT4ge1xuICBtb2R1bGUgRGVjbyA9XG4gICAgRGVjby5EZWNvKHtcbiAgICAgIGxldCBmb250X21ldHJpY3MgPSBmb250X21ldHJpY3M7XG4gICAgICBsZXQgbWFwID0gTWVhc3VyZWQub2Zfc2VnbWVudChkb2Muc3ludGFjdGljX2Zvcm0pO1xuICAgICAgbGV0IHNob3dfYmFja3BhY2tfdGFyZ2V0cyA9IGZhbHNlO1xuICAgICAgbGV0IChfdGVybSwgdGVybXMpID0gTWFrZVRlcm0uZ28oZG9jLnN5bnRhY3RpY19mb3JtKTtcbiAgICAgIGxldCB0ZXJtX3JhbmdlcyA9IFRlcm1SYW5nZXMubWsoZG9jLnN5bnRhY3RpY19mb3JtKTtcbiAgICAgIGxldCB0aWxlcyA9IFRpbGVNYXAubWsoZG9jLnN5bnRhY3RpY19mb3JtKTtcbiAgICAgIGxldCBlcnJvcl9pZHMgPSBbXTtcbiAgICB9KTtcbiAgc3dpdGNoIChkb2MuZXhwYW5kYWJsZV9pZCwgTGlzdC5sZW5ndGgob3B0aW9ucykpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgMCB8IDEpID0+IGRpdihbXSlcbiAgfCAoU29tZSgoZXhwYW5kYWJsZSwgXykpLCBfKSA9PlxuICAgIERlY28udGVybV9kZWNvcmF0aW9uKFxuICAgICAgfmlkPWV4cGFuZGFibGUsXG4gICAgICAoKG9yaWdpbiwgXywgcGF0aCkpID0+IHtcbiAgICAgICAgbGV0IHNwZWNpZmljaXR5X3BvcyA9XG4gICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAlZnB4O1wiLFxuICAgICAgICAgICAgZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgc3BlY2lmaWNpdHlfc3R5bGUgPVxuICAgICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgICAgXCJzdHlsZVwiLFxuICAgICAgICAgICAgc3BlY2lmaWNpdHlfcG9zXG4gICAgICAgICAgICArKyAoZG9jcy5zcGVjaWZpY2l0eV9vcGVuID8gXCJ0cmFuc2Zvcm06IHNjYWxlWSgxKTtcIiA6IFwiXCIpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgbGV0IGdldF9jbHNzID0gc2VnbWVudCA9PlxuICAgICAgICAgIHN3aXRjaCAoTGlzdC5udGgoc2VnbWVudCwgMCkpIHtcbiAgICAgICAgICB8IEJhc2UuVGlsZSh7bW9sZCwgX30pID0+IFtcbiAgICAgICAgICAgICAgXCJjaS1oZWFkZXItXCIgKysgU29ydC50b19zdHJpbmcobW9sZC5vdXQpIC8vIFRPRE8gdGhlIGJyb3duIG9uIGJyb3duIGlzbid0IHRoZSBncmVhdGVzdC4uLiBidXQgb2theVxuICAgICAgICAgICAgXVxuICAgICAgICAgIHwgXyA9PiBbXVxuICAgICAgICAgIH07XG5cbiAgICAgICAgbGV0IHNwZWNpZmljaXR5X21lbnUgPVxuICAgICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgY2xzcyhbXCJzcGVjaWZpY2l0eS1vcHRpb25zLW1lbnVcIiwgXCJleHBhbmRhYmxlXCJdKSxcbiAgICAgICAgICAgICAgICBzcGVjaWZpY2l0eV9zdHlsZSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgKChpZDogRXhwbGFpblRoaXNGb3JtLmZvcm1faWQsIHNlZ21lbnQ6IFNlZ21lbnQudCkpOiBOb2RlLnQgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBtYXAgPSBNZWFzdXJlZC5vZl9zZWdtZW50KHNlZ21lbnQpO1xuICAgICAgICAgICAgICAgIGxldCBjb2RlX3ZpZXcgPVxuICAgICAgICAgICAgICAgICAgQ29kZS5zaW1wbGVfdmlldyhcbiAgICAgICAgICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICAgfnVuc2VsZWN0ZWQ9c2VnbWVudCxcbiAgICAgICAgICAgICAgICAgICAgfm1hcCxcbiAgICAgICAgICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICBpZCA9PSBkb2MuaWRcbiAgICAgICAgICAgICAgICAgICAgPyBbXCJzZWxlY3RlZFwiXSBAIGdldF9jbHNzKHNlZ21lbnQpIDogZ2V0X2Nsc3Moc2VnbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IHVwZGF0ZV9ncm91cF9zZWxlY3Rpb24gPSBfID0+XG4gICAgICAgICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgICAgICAgICAgICAgIEV4cGxhaW5UaGlzVXBkYXRlLlVwZGF0ZUdyb3VwU2VsZWN0aW9uKGdyb3VwLmlkLCBpZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgICAgICAgY2xzcyhjbGFzc2VzKSxcbiAgICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKHVwZGF0ZV9ncm91cF9zZWxlY3Rpb24pLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIFtjb2RlX3ZpZXddLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgbGV0IGV4cGFuZF9hcnJvd19zdHlsZSA9IEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgc3BlY2lmaWNpdHlfcG9zKTtcbiAgICAgICAgbGV0IGV4cGFuZF9hcnJvdyA9XG4gICAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wiYXJyb3dcIl0pLCBleHBhbmRfYXJyb3dfc3R5bGVdKSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgbGV0IGV4cGFuZGFibGVfZGVjbyA9XG4gICAgICAgICAgRGVjVXRpbC5jb2RlX3N2ZyhcbiAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICB+b3JpZ2luLFxuICAgICAgICAgICAgfmJhc2VfY2xzPVtcImV4cGFuZGFibGVcIl0sXG4gICAgICAgICAgICB+YWJzX3Bvcz1mYWxzZSxcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgKTtcblxuICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgIGNsc3MoW1wiZXhwYW5kYWJsZS10YXJnZXRcIl0pLFxuICAgICAgICAgICAgICBEZWNVdGlsLmFic19wb3NpdGlvbih+Zm9udF9tZXRyaWNzLCBvcmlnaW4pLFxuICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4ge1xuICAgICAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgICAgICAgICAgICBFeHBsYWluVGhpc1VwZGF0ZS5TcGVjaWZpY2l0eU9wZW4oIWRvY3Muc3BlY2lmaWNpdHlfb3BlbiksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBbZXhwYW5kYWJsZV9kZWNvLCBzcGVjaWZpY2l0eV9tZW51XVxuICAgICAgICAgIEAgKGRvY3Muc3BlY2lmaWNpdHlfb3BlbiA/IFtdIDogW2V4cGFuZF9hcnJvd10pLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApXG4gIH07XG59O1xuXG5sZXQgZXhhbXBsZV92aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmdyb3VwX2lkLFxuICAgICAgfmZvcm1faWQsXG4gICAgICB+ZXhhbXBsZXM6IGxpc3QoRXhwbGFpblRoaXNGb3JtLmV4YW1wbGUpLFxuICAgICAgfm1vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgKSA9PiB7XG4gIGV4YW1wbGVzID09IFtdXG4gICAgPyBbXVxuICAgIDogW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLmlkKFwiZXhhbXBsZXNcIiksXG4gICAgICAgIExpc3QubWFwaShcbiAgICAgICAgICAoaWR4LCB7dGVybSwgbWVzc2FnZSwgc3ViX2lkLCBffTogRXhwbGFpblRoaXNGb3JtLmV4YW1wbGUpID0+IHtcbiAgICAgICAgICAgIGxldCBmZWVkYmFjayA9XG4gICAgICAgICAgICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3dfZmVlZGJhY2tcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIGV4YW1wbGVfZmVlZGJhY2tfdmlldyhcbiAgICAgICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1faWQsXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9pZCxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1jbHNzKFtcImV4YW1wbGVcIl0pLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgQ2VsbC5sb2NrZWQoXG4gICAgICAgICAgICAgICAgICB+c2VnbWVudD10ZXJtLFxuICAgICAgICAgICAgICAgICAgfnRhcmdldF9pZD1cImV4YW1wbGVcIiArKyBzdHJpbmdfb2ZfaW50KGlkeCksXG4gICAgICAgICAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9Y2xzcyhbXCJleHBsYW5hdGlvblwiXSksXG4gICAgICAgICAgICAgICAgICBbdGV4dChtZXNzYWdlKV0gQCBmZWVkYmFjayxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdO1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQgPSAocGF0OiBUZXJtQmFzZS5VUGF0LnQpID0+IHtcbiAgc3dpdGNoIChwYXQudGVybSkge1xuICB8IFBhcmVucyhwKVxuICB8IFR5cGVBbm4ocCwgXykgPT4gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHApXG4gIHwgXyA9PiBwYXRcbiAgfTtcbn07XG5cbmxldCByZWMgYnlwYXNzX3BhcmVuc19wYXQgPSAocGF0OiBUZXJtQmFzZS5VUGF0LnQpID0+IHtcbiAgc3dpdGNoIChwYXQudGVybSkge1xuICB8IFBhcmVucyhwKSA9PiBieXBhc3NfcGFyZW5zX3BhdChwKVxuICB8IF8gPT4gcGF0XG4gIH07XG59O1xuXG5sZXQgcmVjIGJ5cGFzc19wYXJlbnNfZXhwID0gKGV4cDogVGVybUJhc2UuVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAoZXhwLnRlcm0pIHtcbiAgfCBQYXJlbnMoZSkgPT4gYnlwYXNzX3BhcmVuc19leHAoZSlcbiAgfCBfID0+IGV4cFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX3R5cCA9ICh0eXA6IFRlcm1CYXNlLlVUeXAudCkgPT4ge1xuICBzd2l0Y2ggKHR5cC50ZXJtKSB7XG4gIHwgUGFyZW5zKHQpID0+IGJ5cGFzc19wYXJlbnNfdHlwKHQpXG4gIHwgXyA9PiB0eXBcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbWVzc2FnZV9tb2RlID1cbiAgfCBNZXNzYWdlQ29udGVudChcbiAgICAgIFVwZGF0ZUFjdGlvbi50ID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0LnQodW5pdCksXG4gICAgICBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIFNldHRpbmdzLnQsXG4gICAgKVxuICB8IENvbG9yaW5ncztcblxubGV0IGdldF9kb2MgPVxuICAgIChcbiAgICAgIH5kb2NzOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgICBpbmZvOiBvcHRpb24oU3RhdGljcy5JbmZvLnQpLFxuICAgICAgbW9kZTogbWVzc2FnZV9tb2RlLFxuICAgIClcbiAgICA6IChsaXN0KE5vZGUudCksIChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCksIGxpc3QoTm9kZS50KSkgPT4ge1xuICBsZXQgc2ltcGxlID0gbXNnID0+IChbXSwgKFt0ZXh0KG1zZyldLCAoSWQuTWFwLmVtcHR5LCAwKSksIFtdKTtcbiAgbGV0IGRlZmF1bHQgPSBzaW1wbGUoXCJObyBkb2NzIGF2YWlsYWJsZVwiKTtcbiAgbGV0IGdldF9zcGVjaWZpY2l0eV9sZXZlbCA9IGdyb3VwX2lkID0+XG4gICAgZnN0KEV4cGxhaW5UaGlzTW9kZWwuZ2V0X2Zvcm1fYW5kX29wdGlvbnMoZ3JvdXBfaWQsIGRvY3MpKS5pZDtcbiAgbGV0IGdldF9tZXNzYWdlID1cbiAgICAgIChcbiAgICAgICAgfmNvbG9yaW5ncz1bXSxcbiAgICAgICAgfmZvcm1hdDogb3B0aW9uKHN0cmluZyA9PiBzdHJpbmcpPU5vbmUsXG4gICAgICAgIH5leHBsYW5hdGlvbjogb3B0aW9uKHN0cmluZyk9PyxcbiAgICAgICAgZ3JvdXA6IEV4cGxhaW5UaGlzRm9ybS5ncm91cCxcbiAgICAgIClcbiAgICAgIDogKGxpc3QoTm9kZS50KSwgKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSwgbGlzdChOb2RlLnQpKSA9PiB7XG4gICAgbGV0IChkb2MsIG9wdGlvbnMpID0gRXhwbGFpblRoaXNNb2RlbC5nZXRfZm9ybV9hbmRfb3B0aW9ucyhncm91cCwgZG9jcyk7XG5cbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTk5ODQwOC9vY2FtbC1jb252ZXJ0aW5nLXN0cmluZ3MtdG8tYS11bml0LXN0cmluZy1mb3JtYXRcbiAgICBsZXQgZXhwbGFuYXRpb25fbXNnID1cbiAgICAgIHN3aXRjaCAoZXhwbGFuYXRpb24sIGZvcm1hdCkge1xuICAgICAgfCAoU29tZShtc2cpLCBfKSA9PiBtc2dcbiAgICAgIHwgKF8sIFNvbWUoZikpID0+IGYoZG9jLmV4cGxhbmF0aW9uKVxuICAgICAgfCAoXywgTm9uZSkgPT4gZG9jLmV4cGxhbmF0aW9uXG4gICAgICB9O1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgIHwgTWVzc2FnZUNvbnRlbnQoaW5qZWN0LCB1aV9zdGF0ZSwgc2V0dGluZ3MpID0+XG4gICAgICBsZXQgKGV4cGxhbmF0aW9uLCBjb2xvcl9tYXApID1cbiAgICAgICAgbWtfZXhwbGFuYXRpb24oXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgZ3JvdXAuaWQsXG4gICAgICAgICAgZG9jLmlkLFxuICAgICAgICAgIGV4cGxhbmF0aW9uX21zZyxcbiAgICAgICAgICBkb2NzLFxuICAgICAgICApO1xuICAgICAgbGV0IHNvcnQgPVxuICAgICAgICBzd2l0Y2ggKGluZm8pIHtcbiAgICAgICAgfCBOb25lID0+IFNvcnQuQW55XG4gICAgICAgIHwgU29tZShjaSkgPT4gSW5mby5zb3J0X29mKGNpKVxuICAgICAgICB9O1xuICAgICAgbGV0IGhpZ2hsaWdodHMgPVxuICAgICAgICBjb2xvcmluZ3NcbiAgICAgICAgfD4gTGlzdC5tYXAoKChzeW50YWN0aWNfZm9ybV9pZDogSWQudCwgY29kZV9pZDogSWQudCkpID0+IHtcbiAgICAgICAgICAgICBsZXQgKGNvbG9yLCBfKSA9IENvbG9yU3RlcHMuZ2V0X2NvbG9yKGNvZGVfaWQsIGNvbG9yX21hcCk7XG4gICAgICAgICAgICAgKHN5bnRhY3RpY19mb3JtX2lkLCBjb2xvcik7XG4gICAgICAgICAgIH0pXG4gICAgICAgIHw+IExpc3QudG9fc2VxXG4gICAgICAgIHw+IElkLk1hcC5vZl9zZXFcbiAgICAgICAgfD4gT3B0aW9uLnNvbWU7XG4gICAgICBsZXQgZXhwYW5kZXJfZGVjbyA9XG4gICAgICAgIGV4cGFuZGVyX2RlY28oXG4gICAgICAgICAgfmRvY3MsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5vcHRpb25zLFxuICAgICAgICAgIH5ncm91cCxcbiAgICAgICAgICB+ZG9jLFxuICAgICAgICApO1xuICAgICAgbGV0IHN5bnRhY3RpY19mb3JtX3ZpZXcgPVxuICAgICAgICBDZWxsLmxvY2tlZF9ub19zdGF0aWNzKFxuICAgICAgICAgIH50YXJnZXRfaWQ9XCJleHBsYWluVGhpc1N5bnRhY3RpY0Zvcm1cIixcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICB+c2VnbWVudD1kb2Muc3ludGFjdGljX2Zvcm0sXG4gICAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5zb3J0LFxuICAgICAgICAgIH5leHBhbmRlcl9kZWNvLFxuICAgICAgICApO1xuICAgICAgbGV0IGV4YW1wbGVfdmlldyA9XG4gICAgICAgIGV4YW1wbGVfdmlldyhcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfmdyb3VwX2lkPWdyb3VwLmlkLFxuICAgICAgICAgIH5mb3JtX2lkPWRvYy5pZCxcbiAgICAgICAgICB+ZXhhbXBsZXM9ZG9jLmV4YW1wbGVzLFxuICAgICAgICAgIH5tb2RlbD1kb2NzLFxuICAgICAgICApO1xuICAgICAgKHN5bnRhY3RpY19mb3JtX3ZpZXcsIChbZXhwbGFuYXRpb25dLCBjb2xvcl9tYXApLCBleGFtcGxlX3ZpZXcpO1xuICAgIHwgQ29sb3JpbmdzID0+XG4gICAgICBsZXQgKF8sIGNvbG9yX21hcCkgPSBta190cmFuc2xhdGlvbih+aW5qZWN0PU5vbmUsIGV4cGxhbmF0aW9uX21zZyk7XG4gICAgICAoW10sIChbXSwgY29sb3JfbWFwKSwgW10pO1xuICAgIH07XG4gIH07XG5cbiAgLyogVXNlIHRoaXMgd2hlbiBhZGRpbmcgbmV3IGVudHJpZXMgKi9cbiAgbGV0IG1lc3NhZ2Vfc2luZ2xlID0gKGU6IEV4cGxhaW5UaGlzRm9ybS5TaW1wbGUudCkgPT4ge1xuICAgIGxldCAoZXhwbGFuYXRpb24sIGNvbG9yaW5ncywgZ3JvdXApID0gRXhwbGFpblRoaXNGb3JtLlNpbXBsZS50b19ncm91cChlKTtcbiAgICBnZXRfbWVzc2FnZSh+Y29sb3JpbmdzLCB+Zm9ybWF0PU5vbmUsIH5leHBsYW5hdGlvbiwgZ3JvdXApO1xuICB9O1xuXG4gIHN3aXRjaCAoaW5mbykge1xuICB8IFNvbWUoSW5mb0V4cCh7dGVybSwgX30pKSA9PlxuICAgIGxldCByZWMgZ2V0X21lc3NhZ2VfZXhwID1cbiAgICAgICAgICAgICh0ZXJtKVxuICAgICAgICAgICAgOiAobGlzdChOb2RlLnQpLCAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpLCBsaXN0KE5vZGUudCkpID0+XG4gICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgIHwgVGVybUJhc2UuVUV4cC5JbnZhbGlkKF8pID0+IHNpbXBsZShcIk5vdCBhIHZhbGlkIGV4cHJlc3Npb25cIilcbiAgICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVFeHAuZW1wdHlfaG9sZV9leHBzKVxuICAgICAgfCBNdWx0aUhvbGUoX2NoaWxkcmVuKSA9PiBnZXRfbWVzc2FnZShIb2xlRXhwLm11bHRpX2hvbGVfZXhwcylcbiAgICAgIHwgVHlBbGlhcyh0eV9wYXQsIHR5X2RlZiwgX2JvZHkpID0+XG4gICAgICAgIGxldCB0cGF0X2lkID0gTGlzdC5udGgodHlfcGF0LmlkcywgMCk7XG4gICAgICAgIGxldCBkZWZfaWQgPSBMaXN0Lm50aCh0eV9kZWYuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgIFR5QWxpYXNFeHAudHlhbGlhc19iYXNlX2V4cF9jb2xvcmluZ19pZHMofnRwYXRfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRwYXRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFR5QWxpYXNFeHAudHlhbGlhc19leHBzLFxuICAgICAgICApO1xuICAgICAgfCBUcml2ID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLnRyaXZfZXhwcylcbiAgICAgIHwgQm9vbChiKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5ib29sX2V4cHMoYikpXG4gICAgICB8IEludChpKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5pbnRfZXhwcyhpKSlcbiAgICAgIHwgRmxvYXQoZikgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuZmxvYXRfZXhwcyhmKSlcbiAgICAgIHwgU3RyaW5nKHMpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLnN0cmluZ19leHBzKHMpKVxuICAgICAgfCBMaXN0TGl0KHRlcm1zKSA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aCh0ZXJtcykpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIExpc3RFeHAubGlzdGxpdHMsXG4gICAgICAgIClcbiAgICAgIHwgRnVuKHBhdCwgYm9keSkgPT5cbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHBhdCA9IGJ5cGFzc19wYXJlbnNfYW5kX2Fubm90X3BhdChwYXQpO1xuICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZW1wdHlfaG9sZSkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19lbXB0eV9ob2xlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2VtcHR5X2hvbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fbXVsdGlfaG9sZV9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19tdWx0aV9ob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX211bHRpX2hvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbXVsdGlfaG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFdpbGQgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fd2lsZF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc193aWxkKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9RnVuY3Rpb25FeHAuZnVuY3Rpb25fd2lsZF9leHBfY29sb3JpbmdfaWRzKH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc193aWxkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3dpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnQoaSkgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25faW50bGl0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2ludCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2ludGxpdF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoaSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19pbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfaW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgRmxvYXQoZikgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fZmxvYXRsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZmxvYXQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9mbG9hdGxpdF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJWYlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIGYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19mbG9hdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19mbG9hdCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEJvb2woYikgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fYm9vbGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19ib29sKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fYm9vbGxpdF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJWIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIGIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19ib29sLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Jvb2wpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBTdHJpbmcocykgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fc3RybGl0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3N0cikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3N0cmxpdF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHMsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19zdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfc3RyKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVHJpdiA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90cml2X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl90cml2X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICAvLyBIQU5OQUggVE9ETyAtIHRoaW5rIGNvdWxkIG1vdmUgdGhpcyBmb3JtYXQgdGhpbmcgbGlrZSBpbnRvIHRoZSBjb2xvcmluZ3NcbiAgICAgICAgICAgICAgLy8gZnVuY3Rpb25zXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHJpdik7XG4gICAgICAgICAgfVxuICAgICAgICB8IExpc3RMaXQoZWxlbWVudHMpID0+XG4gICAgICAgICAgaWYgKExpc3QubGVuZ3RoKGVsZW1lbnRzKSA9PSAwKSB7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdG5pbF9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwpKSB7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdG5pbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdGxpdCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bGl0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RsaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fY29uc19leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jb25zKSkge1xuICAgICAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9jb25zX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+aGRfaWQsXG4gICAgICAgICAgICAgICAgICB+dGxfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY29ucyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVmFyKHZhcikgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdmFyX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3ZhcikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3Zhcl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHZhcixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3ZhcixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc192YXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJhc2ljX3R1cGxlID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aChlbGVtZW50cykpIHtcbiAgICAgICAgICB8IDIgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMik7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUyX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0MV9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDJfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUyLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIHwgMyA9PlxuICAgICAgICAgICAgbGV0IGRvY19pZCA9IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzKTtcbiAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZTNfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0M19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDNfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTMsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSkpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfCBBcChjb24sIGFyZykgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fYXBfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYXApKSB7XG4gICAgICAgICAgICBsZXQgY29uX2lkID0gTGlzdC5udGgoY29uLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9hcF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfmNvbl9pZCxcbiAgICAgICAgICAgICAgICAgIH5hcmdfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IENvbnN0cnVjdG9yKHYpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2N0cl9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIpKSB7XG4gICAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2N0cl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgdixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnZhbGlkKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXRcbiAgICAgICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfCBUeXBlQW5uKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIH07XG4gICAgICB8IFR1cGxlKHRlcm1zKSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PlxuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHRlcm1zKSksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aCh0ZXJtcykpIHtcbiAgICAgICAgfCAyID0+XG4gICAgICAgICAgaWYgKFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMi5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVFeHAudHVwbGVzMikpIHtcbiAgICAgICAgICAgIGxldCBleHAxX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgZXhwMl9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyh+ZXhwMV9pZCwgfmV4cDJfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVzMixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKFR1cGxlRXhwLnR1cGxlczIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCAzID0+XG4gICAgICAgICAgaWYgKFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMy5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVFeHAudHVwbGVzMykpIHtcbiAgICAgICAgICAgIGxldCBleHAxX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgZXhwMl9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGV4cDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+ZXhwMV9pZCxcbiAgICAgICAgICAgICAgICAgIH5leHAyX2lkLFxuICAgICAgICAgICAgICAgICAgfmV4cDNfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlczMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhUdXBsZUV4cC50dXBsZXMzKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZUV4cC50dXBsZXMpXG4gICAgICAgIH07XG4gICAgICB8IFZhcihuKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC52YXJfZXhwcyhuKSlcbiAgICAgIHwgTGV0KHBhdCwgZGVmLCBib2R5KSA9PlxuICAgICAgICBsZXQgcGF0ID0gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHBhdCk7XG4gICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGRlZl9pZCA9IExpc3QubnRoKGRlZi5pZHMsIDApO1xuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgICB8IEVtcHR5SG9sZSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2VtcHR5X2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19lbXB0eWhvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2VtcHR5aG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2VtcHR5aG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X211bHRpX2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19tdXRsaWhvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX211dGxpaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX211dGxpaG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFdpbGQgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF93aWxkX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfd2lsZCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUxldEV4cC5sZXRfd2lsZF9leHBfY29sb3JpbmdfaWRzKH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c193aWxkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfd2lsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludChpKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2ludF9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2ludCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfaW50X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoaSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUgYW5kIHNvbWUgb3RoZXIgcGxhY2VzIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gZm9ybXMgYW5kIHNwZWNpZmljaXR5IGxldmVscy4uLiBtYXliZSBhIFNhZmFyaSBpc3N1ZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEZsb2F0KGYpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfZmxvYXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19mbG9hdCkpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gTWFrZSBzdXJlIGV2ZXJ5d2hlcmUgcHJpbnRpbmcgdGhlIGZsb2F0IGxpdGVyYWwgcHJpbnQgaXQgcHJldHRpZXJcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlZiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgZixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlLi4uICovXG4gICAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBCb29sKGIpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfYm9vbF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2Jvb2wpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlYiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgYixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfYm9vbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19ib29sLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfc3RyX2V4cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfc3RyKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfc3RyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogVE9ETyBUaGUgY29sb3JpbmcgZm9yIHRoZSBzeW50YWN0aWMgZm9ybSBpcyBzb21ldGltZXMgd3JvbmcgaGVyZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFRyaXYgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF90cml2X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHJpdikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlIGFuZCBvdGhlciBwbGFjZXMgd2hlbiBzd2l0Y2hpbmcgc3ludGFjdGljIHNwZWNpZmljaXRpZXMuLi4gc2VlbXMgbGlrZSBtaWdodCBiZSBTYWZhcmkgaXNzdWUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c190cml2LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgTGlzdExpdChlbGVtZW50cykgPT5cbiAgICAgICAgICBpZiAoTGlzdC5sZW5ndGgoZWxlbWVudHMpID09IDApIHtcbiAgICAgICAgICAgIGlmIChMZXRFeHAubGV0X2xpc3RuaWxfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2xpc3RuaWwpKSB7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldHNfbGlzdG5pbCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2xpc3RuaWwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfbGlzdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19saXN0bGl0KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfbGlzdGxpdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2xpc3RsaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9jb25zX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfY29ucykpIHtcbiAgICAgICAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMofmhkX2lkLCB+dGxfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2NvbnMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19jb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVmFyKHZhcikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF92YXJfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c192YXIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X3Zhcl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgdmFyLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c192YXIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c192YXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgICAgICBsZXQgYmFzaWNfdHVwbGUgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X3R1cGxlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgICAgIHwgMiA9PlxuICAgICAgICAgICAgbGV0IGRvY19pZCA9IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfdHVwbGUyX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c190dXBsZTIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCAzID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3R1cGxlMyk7XG4gICAgICAgICAgICAvLyBUT0RPIFN5bnRhY3RpYyBmb3JtIGNhbiBnbyBvZmYgcGFnZSAtIHNvIGNhbiBleGFtcGxlcyAtIGJ1dCBjYW4gc2Nyb2xsLCBqdXN0IGNhbid0IHNlZSBib3R0b20gc2Nyb2xsIGJhclxuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfdHVwbGUzX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDNfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5kZWZfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQzX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c190dXBsZTMsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShMZXRFeHAubGV0c190dXBsZTMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHVwbGUpKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3R1cGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB8IEFwKGNvbiwgYXJnKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2FwX2V4cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfYXApKSB7XG4gICAgICAgICAgICBsZXQgY29uX2lkID0gTGlzdC5udGgoY29uLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2FwX2V4cF9jb2xvcmluZ19pZHMofmNvbl9pZCwgfmFyZ19pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoY29uX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2FwKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9jdHJfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19jdHIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2N0cl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2LFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19jdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19jdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnZhbGlkKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXRcbiAgICAgICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfCBUeXBlQW5uKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIH07XG4gICAgICB8IFBpcGVsaW5lKGFyZywgZm4pID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIFBpcGVsaW5lRXhwLnNpbmdsZShcbiAgICAgICAgICAgIH5hcmdfaWQ9VGVybS5VRXhwLnJlcF9pZChhcmcpLFxuICAgICAgICAgICAgfmZuX2lkPVRlcm0uVUV4cC5yZXBfaWQoZm4pLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgQXAoeCwgYXJnKSA9PlxuICAgICAgICBsZXQgeF9pZCA9IExpc3QubnRoKHguaWRzLCAwKTtcbiAgICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgICBsZXQgYmFzaWMgPSAoZ3JvdXAsIGZvcm1hdCwgY29sb3JpbmdfaWRzKSA9PiB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPWNvbG9yaW5nX2lkcyh+eF9pZCwgfmFyZ19pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUoZm9ybWF0KSxcbiAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIHN3aXRjaCAoeC50ZXJtKSB7XG4gICAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgIEFwcEV4cC5jb25hcHMsXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgdixcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcHBFeHAuY29uYXBwX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgIEFwcEV4cC5mdW5hcHMsXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4X2lkKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFwcEV4cC5mdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgICB8IElmKGNvbmQsIHRoZW5fLCBlbHNlXykgPT5cbiAgICAgICAgbGV0IGNvbmRfaWQgPSBMaXN0Lm50aChjb25kLmlkcywgMCk7XG4gICAgICAgIGxldCB0aGVuX2lkID0gTGlzdC5udGgodGhlbl8uaWRzLCAwKTtcbiAgICAgICAgbGV0IGVsc2VfaWQgPSBMaXN0Lm50aChlbHNlXy5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUlmRXhwLmlmX2V4cF9jb2xvcmluZ19pZHMofmNvbmRfaWQsIH50aGVuX2lkLCB+ZWxzZV9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoY29uZF9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGhlbl9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxzZV9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgSWZFeHAuaWZzLFxuICAgICAgICApO1xuICAgICAgfCBTZXEobGVmdCwgcmlnaHQpID0+XG4gICAgICAgIGxldCBleHAxX2lkID0gTGlzdC5udGgobGVmdC5pZHMsIDApO1xuICAgICAgICBsZXQgZXhwMl9pZCA9IExpc3QubnRoKHJpZ2h0LmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9U2VxRXhwLnNlcV9leHBfY29sb3JpbmdfaWRzKH5leHAxX2lkLCB+ZXhwMl9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDFfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDJfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFNlcUV4cC5zZXFzLFxuICAgICAgICApO1xuICAgICAgfCBGaWx0ZXIoKFN0ZXAsIE9uZSksIHBhdCwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9wYXVzZShcbiAgICAgICAgICAgIH5wX2lkPVRlcm0uVUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVRlcm0uVUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoKFN0ZXAsIEFsbCksIHBhdCwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9kZWJ1ZyhcbiAgICAgICAgICAgIH5wX2lkPVRlcm0uVUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVRlcm0uVUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoKEV2YWwsIEFsbCksIHBhdCwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9ldmFsKFxuICAgICAgICAgICAgfnBfaWQ9VGVybS5VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VGVybS5VRXhwLnJlcF9pZChib2R5KSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IEZpbHRlcigoRXZhbCwgT25lKSwgcGF0LCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX2hpZGUoXG4gICAgICAgICAgICB+cF9pZD1UZXJtLlVFeHAucmVwX2lkKHBhdCksXG4gICAgICAgICAgICB+Ym9keV9pZD1UZXJtLlVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgVGVzdChib2R5KSA9PlxuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1UZXN0RXhwLnRlc3RfZXhwX2NvbG9yaW5nX2lkcyh+Ym9keV9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBUZXN0RXhwLnRlc3RzLFxuICAgICAgICApO1xuICAgICAgfCBQYXJlbnModGVybSkgPT4gZ2V0X21lc3NhZ2VfZXhwKHRlcm0udGVybSkgLy8gTm8gU3BlY2lhbCBtZXNzYWdlP1xuICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHRsX2lkID0gTGlzdC5udGgodGwuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1MaXN0RXhwLmNvbnNfZXhwX2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0Y29ucyxcbiAgICAgICAgKTtcbiAgICAgIHwgTGlzdENvbmNhdCh4cywgeXMpID0+XG4gICAgICAgIGxldCB4c19pZCA9IExpc3QubnRoKHhzLmlkcywgMCk7XG4gICAgICAgIGxldCB5c19pZCA9IExpc3QubnRoKHlzLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdEV4cC5jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyh+eHNfaWQsIH55c19pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhzX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh5c19pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0Y29uY2F0cyxcbiAgICAgICAgKTtcbiAgICAgIHwgVW5PcChvcCwgZXhwKSA9PlxuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIHwgQm9vbChOb3QpID0+XG4gICAgICAgICAgbGV0IGV4cF9pZCA9IExpc3QubnRoKGV4cC5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1PcEV4cC5ib29sX3VuYXJ5X25vdF9leHBfY29sb3JpbmdfaWRzKH5leHBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBPcEV4cC5ib29sX3VuX25vdCxcbiAgICAgICAgICApO1xuICAgICAgICB8IEludChNaW51cykgPT5cbiAgICAgICAgICBsZXQgZXhwX2lkID0gTGlzdC5udGgoZXhwLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPU9wRXhwLmludF91bmFyeV9taW51c19leHBfY29sb3JpbmdfaWRzKH5leHBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBPcEV4cC5pbnRfdW5fbWludXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfCBNZXRhKFVucXVvdGUpID0+XG4gICAgICAgICAgbWVzc2FnZV9zaW5nbGUoRmlsdGVyRXhwLnVucXVvdGUofnNlbF9pZD1UZXJtLlVFeHAucmVwX2lkKGV4cCkpKVxuICAgICAgICB9XG4gICAgICB8IEJpbk9wKG9wLCBsZWZ0LCByaWdodCkgPT5cbiAgICAgICAgb3BlbiBPcEV4cDtcbiAgICAgICAgbGV0IChncm91cCwgY29sb3JpbmdfaWRzKSA9XG4gICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgIHwgSW50KFBsdXMpID0+IChpbnRfcGx1cywgaW50X3BsdXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChNaW51cykgPT4gKGludF9taW51cywgaW50X21pbnVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoVGltZXMpID0+IChpbnRfdGltZXMsIGludF90aW1lc19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KFBvd2VyKSA9PiAoaW50X3Bvd2VyLCBpbnRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChEaXZpZGUpID0+IChpbnRfZGl2aWRlLCBpbnRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTGVzc1RoYW4pID0+IChpbnRfbGVzc190aGFuLCBpbnRfbHRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChMZXNzVGhhbk9yRXF1YWwpID0+IChcbiAgICAgICAgICAgICAgaW50X2xlc3NfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgaW50X2x0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgSW50KEdyZWF0ZXJUaGFuKSA9PiAoaW50X2dyZWF0ZXJfdGhhbiwgaW50X2d0X2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoR3JlYXRlclRoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGludF9ncmVhdGVyX3RoYW5fZXF1YWwsXG4gICAgICAgICAgICAgIGludF9ndGVfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEludChFcXVhbHMpID0+IChpbnRfZXF1YWwsIGludF9lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KE5vdEVxdWFscykgPT4gKGludF9ub3RfZXF1YWwsIGludF9uZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KFBsdXMpID0+IChmbG9hdF9wbHVzLCBmbG9hdF9wbHVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChNaW51cykgPT4gKGZsb2F0X21pbnVzLCBmbG9hdF9taW51c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoVGltZXMpID0+IChmbG9hdF90aW1lcywgZmxvYXRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KFBvd2VyKSA9PiAoZmxvYXRfcG93ZXIsIGZsb2F0X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChEaXZpZGUpID0+IChmbG9hdF9kaXZpZGUsIGZsb2F0X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoTGVzc1RoYW4pID0+IChmbG9hdF9sZXNzX3RoYW4sIGZsb2F0X2x0X2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChMZXNzVGhhbk9yRXF1YWwpID0+IChcbiAgICAgICAgICAgICAgZmxvYXRfbGVzc190aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBmbG9hdF9sdGVfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEZsb2F0KEdyZWF0ZXJUaGFuKSA9PiAoXG4gICAgICAgICAgICAgIGZsb2F0X2dyZWF0ZXJfdGhhbixcbiAgICAgICAgICAgICAgZmxvYXRfZ3RfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEZsb2F0KEdyZWF0ZXJUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBmbG9hdF9ncmVhdGVyX3RoYW5fZXF1YWwsXG4gICAgICAgICAgICAgIGZsb2F0X2d0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgRmxvYXQoRXF1YWxzKSA9PiAoZmxvYXRfZXF1YWwsIGZsb2F0X2VxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChOb3RFcXVhbHMpID0+IChmbG9hdF9ub3RfZXF1YWwsIGZsb2F0X25lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgQm9vbChBbmQpID0+IChib29sX2FuZCwgYm9vbF9hbmRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEJvb2woT3IpID0+IChib29sX29yLCBib29sX29yX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBTdHJpbmcoRXF1YWxzKSA9PiAoc3RyaW5nX2VxdWFsLCBzdHJfZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IFN0cmluZyhDb25jYXQpID0+IChzdHJpbmdfY29uY2F0LCBzdHJfY29uY2F0X2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfTtcbiAgICAgICAgbGV0IGxlZnRfaWQgPSBMaXN0Lm50aChsZWZ0LmlkcywgMCk7XG4gICAgICAgIGxldCByaWdodF9pZCA9IExpc3QubnRoKHJpZ2h0LmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9Y29sb3JpbmdfaWRzKH5sZWZ0X2lkLCB+cmlnaHRfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhsZWZ0X2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhyaWdodF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICk7XG4gICAgICB8IE1hdGNoKHNjcnV0LCBfcnVsZXMpID0+XG4gICAgICAgIGxldCBzY3J1dF9pZCA9IExpc3QubnRoKHNjcnV0LmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9Q2FzZUV4cC5jYXNlX2V4cF9jb2xvcmluZ19pZHMofnNjcnV0X2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHNjcnV0X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBDYXNlRXhwLmNhc2UsXG4gICAgICAgICk7XG4gICAgICB8IENvbnN0cnVjdG9yKHYpID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgdiksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFRlcm1pbmFsRXhwLmN0cih2KSxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICBnZXRfbWVzc2FnZV9leHAodGVybS50ZXJtKTtcbiAgfCBTb21lKEluZm9QYXQoe3Rlcm0sIF99KSkgPT5cbiAgICBzd2l0Y2ggKGJ5cGFzc19wYXJlbnNfcGF0KHRlcm0pLnRlcm0pIHtcbiAgICB8IEVtcHR5SG9sZSA9PiBnZXRfbWVzc2FnZShIb2xlUGF0LmVtcHR5X2hvbGUpXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gZ2V0X21lc3NhZ2UoSG9sZVBhdC5tdWx0aV9ob2xlKVxuICAgIHwgV2lsZCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFBhdC53aWxkKVxuICAgIHwgSW50KGkpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJWklaVwiKSwgaSwgaSksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuaW50bGl0KGkpLFxuICAgICAgKVxuICAgIHwgRmxvYXQoZikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlZiVmXCIpLCBmLCBmKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5mbG9hdGxpdChmKSxcbiAgICAgIClcbiAgICB8IEJvb2woYikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlYiViXCIpLCBiLCBiKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5ib29sbGl0KGIpLFxuICAgICAgKVxuICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSwgcywgcyksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuc3RybGl0KHMpLFxuICAgICAgKVxuICAgIHwgVHJpdiA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFBhdC50cml2KVxuICAgIHwgTGlzdExpdChlbGVtZW50cykgPT5cbiAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICBnZXRfbWVzc2FnZShMaXN0UGF0Lmxpc3RuaWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBMaXN0UGF0Lmxpc3RsaXQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgbGV0IGJhc2ljID0gZG9jID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdFBhdC5jb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZG9jLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoICh0bC50ZXJtKSB7XG4gICAgICB8IFRlcm1CYXNlLlVQYXQuQ29ucyhoZDIsIHRsMikgPT5cbiAgICAgICAgaWYgKExpc3RQYXQuY29uczJfcGF0LmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMaXN0UGF0LmNvbnMyKSkge1xuICAgICAgICAgIGxldCBoZDJfaWQgPSBMaXN0Lm50aChoZDIuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgdGwyX2lkID0gTGlzdC5udGgodGwyLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBMaXN0UGF0LmNvbnMyX3BhdF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmZzdF9pZD1oZF9pZCxcbiAgICAgICAgICAgICAgICB+c25kX2lkPWhkMl9pZCxcbiAgICAgICAgICAgICAgICB+dGxfaWQ9dGwyX2lkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bDJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIExpc3RQYXQuY29uczIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhMaXN0UGF0LmNvbnMyKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKExpc3RQYXQuY29ucylcbiAgICAgIH07XG4gICAgfCBWYXIodikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgdiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQudmFyKHYpLFxuICAgICAgKVxuICAgIHwgVHVwbGUoZWxlbWVudHMpID0+XG4gICAgICBsZXQgYmFzaWMgPSBncm91cCA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGdyb3VwLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aChlbGVtZW50cykpIHtcbiAgICAgIHwgMiA9PlxuICAgICAgICBpZiAoVHVwbGVQYXQudHVwbGVfcGF0X3NpemUyLmlkXG4gICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVQYXQudHVwbGUyKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVQYXQudHVwbGVfcGF0X3NpemUyX2NvbG9yaW5nX2lkcyh+ZWxlbTFfaWQsIH5lbGVtMl9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0xX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0yX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBUdXBsZVBhdC50dXBsZTIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVBhdC50dXBsZTIpO1xuICAgICAgICB9XG4gICAgICB8IDMgPT5cbiAgICAgICAgaWYgKFR1cGxlUGF0LnR1cGxlX3BhdF9zaXplMy5pZFxuICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlUGF0LnR1cGxlMykpIHtcbiAgICAgICAgICBsZXQgZWxlbTFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlX3BhdF9zaXplM19jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmVsZW0xX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtMl9pZCxcbiAgICAgICAgICAgICAgICB+ZWxlbTNfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTNfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlMyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlUGF0LnR1cGxlMyk7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZVBhdC50dXBsZSlcbiAgICAgIH07XG4gICAgfCBBcChjb24sIGFyZykgPT5cbiAgICAgIGxldCBjb25faWQgPSBMaXN0Lm50aChjb24uaWRzLCAwKTtcbiAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUFwcFBhdC5hcF9wYXRfY29sb3JpbmdfaWRzKH5jb25faWQsIH5hcmdfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIEFwcFBhdC5hcCxcbiAgICAgICk7XG4gICAgfCBDb25zdHJ1Y3Rvcihjb24pID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIGNvbiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuY3RyKGNvbiksXG4gICAgICApXG4gICAgfCBUeXBlQW5uKHBhdCwgdHlwKSA9PlxuICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgbGV0IHR5cF9pZCA9IExpc3QubnRoKHR5cC5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9VHlwQW5uUGF0LnR5cGFubl9wYXRfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH50eXBfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0eXBfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIFR5cEFublBhdC50eXBhbm4sXG4gICAgICApO1xuICAgIHwgSW52YWxpZChfKSA9PiBzaW1wbGUoXCJOb3QgYSB2YWxpZCBwYXR0ZXJuXCIpXG4gICAgfCBQYXJlbnMoXykgPT5cbiAgICAgIC8vIFNob3VsZG4ndCBiZSBoaXQ/XG4gICAgICBkZWZhdWx0XG4gICAgfVxuICB8IFNvbWUoSW5mb1R5cCh7dGVybSwgY2xzLCBffSkpID0+XG4gICAgc3dpdGNoIChieXBhc3NfcGFyZW5zX3R5cCh0ZXJtKS50ZXJtKSB7XG4gICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZVR5cC5lbXB0eV9ob2xlKVxuICAgIHwgTXVsdGlIb2xlKF8pID0+IGdldF9tZXNzYWdlKEhvbGVUeXAubXVsdGlfaG9sZSlcbiAgICB8IEludCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5pbnQpXG4gICAgfCBGbG9hdCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5mbG9hdClcbiAgICB8IEJvb2wgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuYm9vbClcbiAgICB8IFN0cmluZyA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5zdHIpXG4gICAgfCBMaXN0KGVsZW0pID0+XG4gICAgICBsZXQgZWxlbV9pZCA9IExpc3QubnRoKGVsZW0uaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUxpc3RUeXAubGlzdF90eXBfY29sb3JpbmdfaWRzKH5lbGVtX2lkKSxcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW1faWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIExpc3RUeXAubGlzdCxcbiAgICAgICk7XG4gICAgfCBBcnJvdyhhcmcsIHJlc3VsdCkgPT5cbiAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgIGxldCByZXN1bHRfaWQgPSBMaXN0Lm50aChyZXN1bHQuaWRzLCAwKTtcbiAgICAgIGxldCBiYXNpYyA9IGRvYyA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUFycm93VHlwLmFycm93X3R5cF9jb2xvcmluZ19pZHMofmFyZ19pZCwgfnJlc3VsdF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocmVzdWx0X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkb2MsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKHJlc3VsdC50ZXJtKSB7XG4gICAgICB8IFRlcm1CYXNlLlVUeXAuQXJyb3coYXJnMiwgcmVzdWx0MikgPT5cbiAgICAgICAgaWYgKEFycm93VHlwLmFycm93M190eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEFycm93VHlwLmFycm93MykpIHtcbiAgICAgICAgICBsZXQgYXJnMl9pZCA9IExpc3QubnRoKGFyZzIuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgcmVzdWx0Ml9pZCA9IExpc3QubnRoKHJlc3VsdDIuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIEFycm93VHlwLmFycm93M190eXBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgIH5hcmcxX2lkPWFyZ19pZCxcbiAgICAgICAgICAgICAgICB+YXJnMl9pZCxcbiAgICAgICAgICAgICAgICB+cmVzdWx0X2lkPXJlc3VsdDJfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZzJfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocmVzdWx0Ml9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgQXJyb3dUeXAuYXJyb3czLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoQXJyb3dUeXAuYXJyb3czKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKEFycm93VHlwLmFycm93KVxuICAgICAgfTtcbiAgICB8IFR1cGxlKGVsZW1lbnRzKSA9PlxuICAgICAgbGV0IGJhc2ljID0gZ3JvdXAgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICB8IDAgPT5cbiAgICAgICAgaWYgKFR1cGxlVHlwLnR1cGxlMF90eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlVHlwLnR1cGxlMCkpIHtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9W10sXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUobXNnID0+IG1zZyksXG4gICAgICAgICAgICBUdXBsZVR5cC50dXBsZTAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVR5cC50dXBsZTIpO1xuICAgICAgICB9XG4gICAgICB8IDIgPT5cbiAgICAgICAgaWYgKFR1cGxlVHlwLnR1cGxlMl90eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlVHlwLnR1cGxlMikpIHtcbiAgICAgICAgICBsZXQgZWxlbTFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9VHVwbGVUeXAudHVwbGUyX3R5cF9jb2xvcmluZ19pZHMofmVsZW0xX2lkLCB+ZWxlbTJfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUyLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUyKTtcbiAgICAgICAgfVxuICAgICAgfCAzID0+XG4gICAgICAgIGlmIChUdXBsZVR5cC50dXBsZTNfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVR5cC50dXBsZTMpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0zX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDIpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBUdXBsZVR5cC50dXBsZTNfdHlwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZWxlbTFfaWQsXG4gICAgICAgICAgICAgICAgfmVsZW0yX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtM19pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtM19pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUzKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKFR1cGxlVHlwLnR1cGxlKVxuICAgICAgfTtcbiAgICB8IENvbnN0cnVjdG9yKGMpID0+XG4gICAgICBnZXRfbWVzc2FnZShTdW1UeXAuc3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlZnMoYykpXG4gICAgfCBWYXIoYykgd2hlbiBjbHMgPT0gVHlwKENvbnN0cnVjdG9yKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoU3VtVHlwLnN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWZzKGMpKVxuICAgIHwgVmFyKHYpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIHYpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsVHlwLnZhcih2KSxcbiAgICAgIClcbiAgICB8IFN1bShfKSA9PiBnZXRfbWVzc2FnZShTdW1UeXAubGFiZWxsZWRfc3VtX3R5cHMpXG4gICAgfCBBcCh7dGVybTogQ29uc3RydWN0b3IoYyksIF99LCBfKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoU3VtVHlwLnN1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmcyhjKSlcbiAgICB8IEludmFsaWQoXykgPT4gc2ltcGxlKFwiTm90IGEgdHlwZSBvciB0eXBlIG9wZXJhdG9yXCIpXG4gICAgfCBBcChfKVxuICAgIHwgUGFyZW5zKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGJlIGhpdD9cbiAgICB9XG4gIHwgU29tZShJbmZvVFBhdChpbmZvKSkgPT5cbiAgICBzd2l0Y2ggKGluZm8udGVybS50ZXJtKSB7XG4gICAgfCBJbnZhbGlkKF8pID0+IHNpbXBsZShcIlR5cGUgbmFtZXMgbXVzdCBiZWdpbiB3aXRoIGEgY2FwaXRhbCBsZXR0ZXJcIilcbiAgICB8IEVtcHR5SG9sZSA9PiBnZXRfbWVzc2FnZShIb2xlVFBhdC5lbXB0eV9ob2xlX3RwYXRzKVxuICAgIHwgTXVsdGlIb2xlKF8pID0+IGdldF9tZXNzYWdlKEhvbGVUUGF0Lm11bHRpX2hvbGVfdHBhdHMpXG4gICAgfCBWYXIodikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgdiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVmFyVFBhdC52YXJfdHlwX3BhdHModiksXG4gICAgICApXG4gICAgfVxuICB8IFNvbWUoU2Vjb25kYXJ5KHMpKSA9PlxuICAgIHN3aXRjaCAocy5jbHMpIHtcbiAgICB8IFNlY29uZGFyeShXaGl0ZXNwYWNlKSA9PiBzaW1wbGUoXCJBIHNlbWFudGljIHZvaWQsIHBlcnZhZGluZyBidXQgaW5lcnRcIilcbiAgICB8IFNlY29uZGFyeShDb21tZW50KSA9PlxuICAgICAgc2ltcGxlKFwiQ29tbWVudHMgYXJlIGlnbm9yZWQgYnkgc3lzdGVtcyBidXQgdHJlYXN1cmVkIGJ5IHJlYWRlcnNcIilcbiAgICB8IF8gPT4gZmFpbHdpdGgoXCJFeHBsYWluVGhpczogU2Vjb25kYXJ5IEltcG9zc2libGVcIilcbiAgICB9XG4gIHwgTm9uZSA9PiBkZWZhdWx0XG4gIH07XG59O1xuXG5sZXQgc2VjdGlvbiA9ICh+c2VjdGlvbl9jbHNzOiBzdHJpbmcsIH50aXRsZTogc3RyaW5nLCBjb250ZW50czogbGlzdChOb2RlLnQpKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJzZWN0aW9uXCIsIHNlY3Rpb25fY2xzc10pLFxuICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJzZWN0aW9uLXRpdGxlXCJdKSwgW3RleHQodGl0bGUpXSldIEAgY29udGVudHMsXG4gICk7XG5cbmxldCBnZXRfY29sb3JfbWFwID1cbiAgICAofnNldHRpbmdzOiBTZXR0aW5ncy50LCB+ZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LCBpbmZvKSA9PlxuICBzd2l0Y2ggKHNldHRpbmdzLmV4cGxhaW5UaGlzLmhpZ2hsaWdodCkge1xuICB8IEFsbCB3aGVuIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3cgPT5cbiAgICBsZXQgKF8sIChfLCAoY29sb3JfbWFwLCBfKSksIF8pID1cbiAgICAgIGdldF9kb2MofmRvY3M9ZXhwbGFpblRoaXNNb2RlbCwgaW5mbywgQ29sb3JpbmdzKTtcbiAgICBTb21lKGNvbG9yX21hcCk7XG4gIHwgT25lKGlkKSB3aGVuIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3cgPT5cbiAgICBsZXQgKF8sIChfLCAoY29sb3JfbWFwLCBfKSksIF8pID1cbiAgICAgIGdldF9kb2MofmRvY3M9ZXhwbGFpblRoaXNNb2RlbCwgaW5mbywgQ29sb3JpbmdzKTtcbiAgICBTb21lKElkLk1hcC5maWx0ZXIoKGlkJywgXykgPT4gaWQgPT0gaWQnLCBjb2xvcl9tYXApKTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICAgIGluZm86IG9wdGlvbihJbmZvLnQpLFxuICAgICkgPT4ge1xuICBsZXQgKHN5bl9mb3JtLCAoZXhwbGFuYXRpb24sIF8pLCBleGFtcGxlKSA9XG4gICAgZ2V0X2RvYyhcbiAgICAgIH5kb2NzPWV4cGxhaW5UaGlzTW9kZWwsXG4gICAgICBpbmZvLFxuICAgICAgTWVzc2FnZUNvbnRlbnQoaW5qZWN0LCB1aV9zdGF0ZSwgc2V0dGluZ3MpLFxuICAgICk7XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmlkKFwic2lkZS1iYXJcIiksXG4gICAgW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1jbHNzKFtcImV4cGxhaW4tdGhpc1wiXSksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1jbHNzKFtcInRvcC1iYXJcIl0pLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBXaWRnZXRzLnRvZ2dsZShcbiAgICAgICAgICAgICAgICB+dG9vbHRpcD1cIlRvZ2dsZSBoaWdobGlnaHRpbmdcIixcbiAgICAgICAgICAgICAgICBcIvCflIZcIixcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5leHBsYWluVGhpcy5oaWdobGlnaHQgPT0gQWxsLFxuICAgICAgICAgICAgICAgIF8gPT5cbiAgICAgICAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlNldChFeHBsYWluVGhpcyhTZXRIaWdobGlnaHQoVG9nZ2xlKSkpKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICAgICAgICBjbHNzKFtcImNsb3NlXCJdKSxcbiAgICAgICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+XG4gICAgICAgICAgICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5TZXQoRXhwbGFpblRoaXMoVG9nZ2xlU2hvdykpKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgW3RleHQoXCJ4XCIpXSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKSxcbiAgICAgICAgXVxuICAgICAgICBAIFtcbiAgICAgICAgICBzZWN0aW9uKFxuICAgICAgICAgICAgfnNlY3Rpb25fY2xzcz1cInN5bnRhY3RpYy1mb3JtXCIsXG4gICAgICAgICAgICB+dGl0bGU9XG4gICAgICAgICAgICAgIHN3aXRjaCAoaW5mbykge1xuICAgICAgICAgICAgICB8IE5vbmUgPT4gXCJXaGl0ZXNwYWNlIG9yIENvbW1lbnRcIlxuICAgICAgICAgICAgICB8IFNvbWUoaW5mbykgPT4gSW5mby5jbHNfb2YoaW5mbykgfD4gVGVybS5DbHMuc2hvd1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3luX2Zvcm0gQCBleHBsYW5hdGlvbixcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgKFxuICAgICAgICAgIGV4YW1wbGUgPT0gW11cbiAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgIDogW3NlY3Rpb24ofnNlY3Rpb25fY2xzcz1cImV4YW1wbGVzXCIsIH50aXRsZT1cIkV4YW1wbGVzXCIsIGV4YW1wbGUpXVxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IHZpZXcgPSBpZCA9PiBOb2RlLnNwYW4ofmF0dHI9QXR0ci5pZChpZCksIFtOb2RlLnRleHQoXCJYXCIpXSk7XG4iLCJsZXQgaXNfbWFjID0gcmVmKGZhbHNlKTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgZGlyID1cbiAgfCBLZXlVcFxuICB8IEtleURvd247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUga2V5ID1cbiAgfCBEKHN0cmluZylcbiAgfCBVKHN0cmluZyk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgc3lzID1cbiAgfCBNYWNcbiAgfCBQQztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBoZWxkID1cbiAgfCBEb3duXG4gIHwgVXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAga2V5LFxuICBzeXMsXG4gIHNoaWZ0OiBoZWxkLFxuICBtZXRhOiBoZWxkLFxuICBjdHJsOiBoZWxkLFxuICBhbHQ6IGhlbGQsXG59O1xuXG5sZXQga2V5X29mID0gKGRpcjogZGlyLCBldnQpOiBrZXkgPT4ge1xuICBsZXQga2V5ID0gSnNVdGlsLmdldF9rZXkoZXZ0KTtcbiAgc3dpdGNoIChkaXIpIHtcbiAgfCBLZXlVcCA9PiBVKGtleSlcbiAgfCBLZXlEb3duID0+IEQoa2V5KVxuICB9O1xufTtcblxubGV0IHRvX2hlbGQ6IGJvb2wgPT4gaGVsZCA9IGIgPT4gYiA/IERvd24gOiBVcDtcblxubGV0IG1rID0gKGRpciwgZXZ0KTogdCA9PiB7XG4gIGtleToga2V5X29mKGRpciwgZXZ0KSxcbiAgc3lzOiBPcy5pc19tYWNeID8gTWFjIDogUEMsXG4gIHNoaWZ0OiB0b19oZWxkKEpzVXRpbC5zaGlmdF9oZWxkKGV2dCkpLFxuICBtZXRhOiB0b19oZWxkKEpzVXRpbC5tZXRhX2hlbGQoZXZ0KSksXG4gIGN0cmw6IHRvX2hlbGQoSnNVdGlsLmN0cmxfaGVsZChldnQpKSxcbiAgYWx0OiB0b19oZWxkKEpzVXRpbC5hbHRfaGVsZChldnQpKSxcbn07XG5cbmxldCBtb2RpZmllcl9zdHJpbmcgPSAoaDogaGVsZCwgbSk6IHN0cmluZyA9PiBoID09IERvd24gPyBcIiArIFwiICsrIG0gOiBcIlwiO1xuXG5sZXQgbW9kaWZpZXJzX3N0cmluZyA9IChrZXk6IHQpOiBzdHJpbmcgPT5cbiAgbW9kaWZpZXJfc3RyaW5nKGtleS5zaGlmdCwgXCJTSElGVFwiKVxuICArKyBtb2RpZmllcl9zdHJpbmcoa2V5Lm1ldGEsIFwiTUVUQVwiKVxuICArKyBtb2RpZmllcl9zdHJpbmcoa2V5LmN0cmwsIFwiQ1RSTFwiKVxuICArKyBtb2RpZmllcl9zdHJpbmcoa2V5LmFsdCwgXCJBTFRcIik7XG5cbmxldCBrZXlfZGlyX3N0cmluZyA9IChrZXk6IHQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoIChrZXkua2V5KSB7XG4gIHwgVShrZXkpID0+IFwiKFVQKTogXCIgKysga2V5XG4gIHwgRChrZXkpID0+IFwiKEROKTogXCIgKysga2V5XG4gIH07XG5cbmxldCB0b19zdHJpbmcgPSAoa2V5OiB0KTogc3RyaW5nID0+XG4gIFwiS0VZXCIgKysga2V5X2Rpcl9zdHJpbmcoa2V5KSArKyBtb2RpZmllcnNfc3RyaW5nKGtleSk7XG4iLCJvcGVuIEhhejNsY29yZTtcblxubGV0IGlzX2RpZ2l0ID0gcyA9PiBSZS5TdHIuKHN0cmluZ19tYXRjaChyZWdleHAoXCJeWzAtOV0kXCIpLCBzLCAwKSk7XG5sZXQgaXNfZl9rZXkgPSBzID0+IFJlLlN0ci4oc3RyaW5nX21hdGNoKHJlZ2V4cChcIl5GWzAtOV1bMC05XSokXCIpLCBzLCAwKSk7XG5cbmxldCBoYW5kbGVfa2V5X2V2ZW50ID0gKGs6IEtleS50KTogb3B0aW9uKFVwZGF0ZS50KSA9PiB7XG4gIGxldCBub3cgPSAoYTogQWN0aW9uLnQpOiBvcHRpb24oVXBkYXRlQWN0aW9uLnQpID0+XG4gICAgU29tZShQZXJmb3JtQWN0aW9uKGEpKTtcbiAgc3dpdGNoIChrKSB7XG4gIHwge2tleTogVShrZXkpLCBffSA9PlxuICAgIC8qIEtldS1VUHBFdmVudHM6XG4gICAgICAgTk9URTogUmVtZW1iZXIgdGhhdCBzaW5jZSB0aGVyZSBpcyBhIGtleXVwIGZvciBldmVyeVxuICAgICAgIGtleWRvd24sIG1ha2luZyBhbiB1cGRhdGUgaGVyZSBtYXkgdHJpZ2dlciBhbiBlbnRpcmVcbiAgICAgICBleHRyYSByZWRyYXcsIGNvbnRpbmdlbnQgb24gbW9kZWwuY3V0b2ZmICovXG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiQWx0XCIgPT4gU29tZShTZXRNZXRhKFNob3dCYWNrcGFja1RhcmdldHMoZmFsc2UpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogXywgc2hpZnQ6IERvd24sIG1ldGE6IFVwLCBjdHJsOiBVcCwgYWx0OiBVcH1cbiAgICAgIHdoZW4gaXNfZl9rZXkoa2V5KSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIkY3XCIgPT4gU29tZShCZW5jaG1hcmsoU3RhcnQpKVxuICAgIHwgXyA9PiBTb21lKERlYnVnQ29uc29sZShrZXkpKVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogXywgc2hpZnQsIG1ldGE6IFVwLCBjdHJsOiBVcCwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKHNoaWZ0LCBrZXkpIHtcbiAgICB8IChVcCwgXCJBcnJvd0xlZnRcIikgPT4gbm93KE1vdmUoTG9jYWwoTGVmdChCeUNoYXIpKSkpXG4gICAgfCAoVXAsIFwiQXJyb3dSaWdodFwiKSA9PiBub3coTW92ZShMb2NhbChSaWdodChCeUNoYXIpKSkpXG4gICAgfCAoVXAsIFwiQXJyb3dVcFwiKSA9PiBub3coTW92ZShMb2NhbChVcCkpKVxuICAgIHwgKFVwLCBcIkFycm93RG93blwiKSA9PiBub3coTW92ZShMb2NhbChEb3duKSkpXG4gICAgfCAoVXAsIFwiSG9tZVwiKSA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IChVcCwgXCJFbmRcIikgPT4gbm93KE1vdmUoRXh0cmVtZShSaWdodChCeVRva2VuKSkpKVxuICAgIHwgKFVwLCBcIkJhY2tzcGFjZVwiKSA9PiBub3coRGVzdHJ1Y3QoTGVmdCkpXG4gICAgfCAoVXAsIFwiRGVsZXRlXCIpID0+IG5vdyhEZXN0cnVjdChSaWdodCkpXG4gICAgfCAoVXAsIFwiRXNjYXBlXCIpID0+IG5vdyhVbnNlbGVjdChOb25lKSlcbiAgICB8IChVcCwgXCJUYWJcIikgPT4gU29tZShUQUIpXG4gICAgfCAoVXAsIFwiRjEyXCIpID0+IG5vdyhKdW1wKEJpbmRpbmdTaXRlT2ZJbmRpY2F0ZWRWYXIpKVxuICAgIHwgKERvd24sIFwiVGFiXCIpID0+IFNvbWUoTW92ZVRvTmV4dEhvbGUoTGVmdCkpXG4gICAgfCAoRG93biwgXCJBcnJvd0xlZnRcIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoTGVmdChCeVRva2VuKSkpKSlcbiAgICB8IChEb3duLCBcIkFycm93UmlnaHRcIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCAoRG93biwgXCJBcnJvd1VwXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKFVwKSkpKVxuICAgIHwgKERvd24sIFwiQXJyb3dEb3duXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKERvd24pKSkpXG4gICAgfCAoRG93biwgXCJIb21lXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKSlcbiAgICB8IChEb3duLCBcIkVuZFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKF8sIFwiRW50ZXJcIikgPT4gbm93KEluc2VydChGb3JtLmxpbmVicmVhaykpXG4gICAgfCBfIHdoZW4gU3RyaW5nLmxlbmd0aChrZXkpID09IDEgPT5cbiAgICAgIC8qIE5vdGU6IGxlbmd0aD09MSBwcmV2ZW50IHNwZWNpYWxzIGxpa2VcbiAgICAgICAqIFNISUZUIGZyb20gYmVpbmcgY2FwdHVyZWQgaGVyZSAqL1xuICAgICAgbm93KEluc2VydChrZXkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBNYWMsIHNoaWZ0OiBEb3duLCBtZXRhOiBEb3duLCBjdHJsOiBVcCwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJaXCJcbiAgICB8IFwielwiID0+IFNvbWUoUmVkbylcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShSaWdodChCeVRva2VuKSkpKSlcbiAgICB8IFwiQXJyb3dVcFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoVXApKSkpXG4gICAgfCBcIkFycm93RG93blwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoRG93bikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogUEMsIHNoaWZ0OiBEb3duLCBtZXRhOiBVcCwgY3RybDogRG93biwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJaXCJcbiAgICB8IFwielwiID0+IFNvbWUoUmVkbylcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoTGVmdChCeVRva2VuKSkpKSlcbiAgICB8IFwiQXJyb3dSaWdodFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1VwXCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoVXApKSkpXG4gICAgfCBcIkFycm93RG93blwiID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKERvd24pKSkpXG4gICAgfCBcIkhvbWVcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFVwKSkpKVxuICAgIHwgXCJFbmRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKERvd24pKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IE1hYywgc2hpZnQ6IFVwLCBtZXRhOiBEb3duLCBjdHJsOiBVcCwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJ6XCIgPT4gU29tZShVbmRvKVxuICAgIHwgXCJkXCIgPT4gbm93KFNlbGVjdChUZXJtKEN1cnJlbnQpKSlcbiAgICB8IFwicFwiID0+IFNvbWUoUGVyZm9ybUFjdGlvbihQaWNrX3VwKSlcbiAgICB8IFwiYVwiID0+IG5vdyhTZWxlY3QoQWxsKSlcbiAgICB8IFwia1wiID0+IFNvbWUoUmVwYXJzZUN1cnJlbnRFZGl0b3IpXG4gICAgfCBcIi9cIiA9PiBTb21lKEFzc2lzdGFudChQcm9tcHQoVHlEaSkpKVxuICAgIHwgXyB3aGVuIGlzX2RpZ2l0KGtleSkgPT4gU29tZShTd2l0Y2hTY3JhdGNoU2xpZGUoaW50X29mX3N0cmluZyhrZXkpKSlcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KE1vdmUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coTW92ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkFycm93VXBcIiA9PiBub3coTW92ZShFeHRyZW1lKFVwKSkpXG4gICAgfCBcIkFycm93RG93blwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoRG93bikpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBQQywgc2hpZnQ6IFVwLCBtZXRhOiBVcCwgY3RybDogRG93biwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJ6XCIgPT4gU29tZShVbmRvKVxuICAgIHwgXCJkXCIgPT4gbm93KFNlbGVjdChUZXJtKEN1cnJlbnQpKSlcbiAgICB8IFwicFwiID0+IFNvbWUoUGVyZm9ybUFjdGlvbihQaWNrX3VwKSlcbiAgICB8IFwiYVwiID0+IG5vdyhTZWxlY3QoQWxsKSlcbiAgICB8IFwia1wiID0+IFNvbWUoUmVwYXJzZUN1cnJlbnRFZGl0b3IpXG4gICAgfCBcIi9cIiA9PiBTb21lKEFzc2lzdGFudChQcm9tcHQoVHlEaSkpKVxuICAgIHwgXyB3aGVuIGlzX2RpZ2l0KGtleSkgPT4gU29tZShTd2l0Y2hTY3JhdGNoU2xpZGUoaW50X29mX3N0cmluZyhrZXkpKSlcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KE1vdmUoTG9jYWwoTGVmdChCeVRva2VuKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KE1vdmUoTG9jYWwoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IFwiSG9tZVwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoVXApKSlcbiAgICB8IFwiRW5kXCIgPT4gbm93KE1vdmUoRXh0cmVtZShEb3duKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IE1hYywgc2hpZnQ6IFVwLCBtZXRhOiBVcCwgY3RybDogRG93biwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJhXCIgPT4gbm93KE1vdmUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCBcImVcIiA9PiBub3coTW92ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXMsIHNoaWZ0OiBVcCwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IERvd259ID0+XG4gICAgc3dpdGNoIChzeXMsIGtleSkge1xuICAgIHwgKF8sIFwiQXJyb3dMZWZ0XCIpID0+IG5vdyhNb3ZlVG9CYWNrcGFja1RhcmdldChMZWZ0KEJ5VG9rZW4pKSlcbiAgICB8IChfLCBcIkFycm93UmlnaHRcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KFJpZ2h0KEJ5VG9rZW4pKSlcbiAgICB8IChfLCBcIkFsdFwiKSA9PiBTb21lKFNldE1ldGEoU2hvd0JhY2twYWNrVGFyZ2V0cyh0cnVlKSkpXG4gICAgfCAoXywgXCJBcnJvd1VwXCIpID0+IG5vdyhNb3ZlVG9CYWNrcGFja1RhcmdldChVcCkpXG4gICAgfCAoXywgXCJBcnJvd0Rvd25cIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KERvd24pKVxuICAgIHwgKF8sIFwiYVwiKSA9PiBTb21lKFNldChBY2Nlc3NpYmlsaXR5KFRvZ2dsZUlzRWRpdGluZykpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBXaWRnZXRzO1xuXG5sZXQgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSA9ICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSkgPT5cbiAgYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnNwcm91dCxcbiAgICBfID0+IGluamVjdChFeHBvcnRQZXJzaXN0ZW50RGF0YSksXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgQWxsIFBlcnNpc3RlbnQgRGF0YVwiLFxuICApO1xuXG5sZXQgcmVzZXRfaGF6ZWwgPVxuICBidXR0b24oXG4gICAgSWNvbnMuYm9tYixcbiAgICBfID0+IHtcbiAgICAgIGxldCBjb25maXJtZWQgPVxuICAgICAgICBKc1V0aWwuY29uZmlybShcbiAgICAgICAgICBcIkFyZSB5b3UgU1VSRSB5b3Ugd2FudCB0byByZXNldCBIYXplbCB0byBpdHMgaW5pdGlhbCBzdGF0ZT8gWW91IHdpbGwgbG9zZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IHlvdSBoYXZlIHdyaXR0ZW4sIGFuZCBjb3Vyc2Ugc3RhZmYgaGF2ZSBubyB3YXkgdG8gcmVzdG9yZSBpdCFcIixcbiAgICAgICAgKTtcbiAgICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgICAgSnNVdGlsLmNsZWFyX2xvY2Fsc3RvcmUoKTtcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlbG9hZDtcbiAgICAgIH07XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkNsZWFyIExvY2FsIFN0b3JhZ2UgYW5kIFJlbG9hZCAoTE9TRSBBTEwgREFUQSlcIixcbiAgKTtcblxubGV0IHJlcGFyc2UgPSAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EpID0+XG4gIGJ1dHRvbihcbiAgICBJY29ucy5iYWNrcGFjayxcbiAgICBfID0+IGluamVjdChSZXBhcnNlQ3VycmVudEVkaXRvciksXG4gICAgfnRvb2x0aXA9XCJSZXBhcnNlIEN1cnJlbnQgRWRpdG9yXCIsXG4gICk7XG5cbmxldCBzZXR0aW5nc19tZW51ID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnNldHRpbmdzIGFzXG4gICAgICAgIHtcbiAgICAgICAgICBjb3JlOiB7ZXZhbHVhdGlvbiwgX30gYXMgY29yZSxcbiAgICAgICAgICBiZW5jaG1hcmssXG4gICAgICAgICAgc2Vjb25kYXJ5X2ljb25zLFxuICAgICAgICAgIGV4cGxhaW5UaGlzLFxuICAgICAgICAgIF8sXG4gICAgICAgIH06IFNldHRpbmdzLnQsXG4gICAgKSA9PiB7XG4gIGxldCB0b2dnbGUgPSAoaWNvbiwgdG9vbHRpcCwgYm9vbCwgc2V0dGluZykgPT5cbiAgICB0b2dnbGVfbmFtZWQoaWNvbiwgfnRvb2x0aXAsIGJvb2wsIF8gPT5cbiAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KHNldHRpbmcpKVxuICAgICk7XG4gIFtcbiAgICB0b2dnbGUoXCLPhFwiLCBcIlRvZ2dsZSBTdGF0aWNzXCIsIGNvcmUuc3RhdGljcywgU3RhdGljcyksXG4gICAgdG9nZ2xlKFwi4oeyXCIsIFwiVG9nZ2xlIENvbXBsZXRpb25cIiwgY29yZS5hc3Npc3QsIEFzc2lzdCksXG4gICAgdG9nZ2xlKFwi4oa1XCIsIFwiU2hvdyBXaGl0ZXNwYWNlXCIsIHNlY29uZGFyeV9pY29ucywgU2Vjb25kYXJ5SWNvbnMpLFxuICAgIHRvZ2dsZShcIuKck1wiLCBcIlByaW50IEJlbmNobWFya3NcIiwgYmVuY2htYXJrLCBCZW5jaG1hcmspLFxuICAgIHRvZ2dsZShcIvCdm79cIiwgXCJUb2dnbGUgRHluYW1pY3NcIiwgY29yZS5keW5hbWljcywgRHluYW1pY3MpLFxuICAgIHRvZ2dsZShcIvCdkZJcIiwgXCJTaG93IEVsYWJvcmF0aW9uXCIsIGNvcmUuZWxhYm9yYXRlLCBFbGFib3JhdGUpLFxuICAgIHRvZ2dsZShcbiAgICAgIFwizrtcIixcbiAgICAgIFwiU2hvdyBGdW5jdGlvbiBCb2RpZXNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19mbl9ib2RpZXMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dGbkJvZGllcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcInxcIixcbiAgICAgIFwiU2hvdyBDYXNlIENsYXVzZXNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19jYXNlX2NsYXVzZXMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dDYXNlQ2xhdXNlcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcImZcIixcbiAgICAgIFwiU2hvdyBmaXhwb2ludHNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19maXhwb2ludHMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dGaXhwb2ludHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgVW5pY29kZS5jYXN0QXJyb3dTeW0sXG4gICAgICBcIlNob3cgY2FzdHNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19jYXN0cyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc3RzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwi8J+UjVwiLFxuICAgICAgXCJTaG93IExvb2t1cCBTdGVwc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2xvb2t1cF9zdGVwcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0xvb2t1cHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLij6/vuI9cIixcbiAgICAgIFwiU2hvdyBTdGVwcGVyIEZpbHRlcnNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19zdGVwcGVyX2ZpbHRlcnMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dGaWx0ZXJzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwiP1wiLFxuICAgICAgXCJTaG93IERvY3MgU2lkZWJhclwiLFxuICAgICAgZXhwbGFpblRoaXMuc2hvdyxcbiAgICAgIEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLwn5GNXCIsXG4gICAgICBcIlNob3cgRG9jcyBGZWVkYmFja1wiLFxuICAgICAgZXhwbGFpblRoaXMuc2hvd19mZWVkYmFjayxcbiAgICAgIEV4cGxhaW5UaGlzKFRvZ2dsZVNob3dGZWVkYmFjayksXG4gICAgKSxcbiAgXTtcbn07XG5cbmxldCBleHBvcnRfbWVudSA9ICh+aW5qZWN0LCB+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGVkaXRvcnM6IEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChzbGlkZV9pZHgsIHNsaWRlcykgPT5cbiAgICBsZXQgc3RhdGUgPSBMaXN0Lm50aChzbGlkZXMsIHNsaWRlX2lkeCk7XG4gICAgW1NjcmF0Y2hNb2RlLmV4cG9ydF9idXR0b24oc3RhdGUpXTtcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBsZXQgc3RhdGUgPSBMaXN0LmFzc29jKG5hbWUsIHNsaWRlcyk7XG4gICAgW1NjcmF0Y2hNb2RlLmV4cG9ydF9idXR0b24oc3RhdGUpXTtcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpIHdoZW4gc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlID0+IFtcbiAgICAgIGV4cG9ydF9wZXJzaXN0ZW50X2RhdGEofmluamVjdCksXG4gICAgICBFeGVyY2lzZU1vZGUuZXhwb3J0X3N1Ym1pc3Npb24ofnNldHRpbmdzKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX2V4cG9ydChleGVyY2lzZSksXG4gICAgICBFeGVyY2lzZU1vZGUuaW5zdHJ1Y3Rvcl90cmFuc2l0aW9uYXJ5X2V4cG9ydChleGVyY2lzZSksXG4gICAgICBFeGVyY2lzZU1vZGUuaW5zdHJ1Y3Rvcl9ncmFkaW5nX2V4cG9ydChleGVyY2lzZSksXG4gICAgXVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBbRXhlcmNpc2VNb2RlLmV4cG9ydF9zdWJtaXNzaW9uKH5zZXR0aW5ncyldXG4gIH07XG5cbmxldCBpbXBvcnRfbWVudSA9ICh+aW5qZWN0LCBlZGl0b3JzOiBFZGl0b3JzLnQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IFtcbiAgICAgIFNjcmF0Y2hNb2RlLmltcG9ydF9idXR0b24oaW5qZWN0KSxcbiAgICAgIFNjcmF0Y2hNb2RlLnJlc2V0X2J1dHRvbihpbmplY3QpLFxuICAgIF1cbiAgfCBFeGVyY2lzZXMoXykgPT4gW1xuICAgICAgRXhlcmNpc2VNb2RlLmltcG9ydF9zdWJtaXNzaW9uKH5pbmplY3QpLFxuICAgICAgRXhlcmNpc2VNb2RlLnJlc2V0X2J1dHRvbihpbmplY3QpLFxuICAgIF1cbiAgfTtcblxubGV0IHN1Ym1lbnUgPSAofnRvb2x0aXAsIH5pY29uLCBtZW51KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJ0b3AtbWVudS1pdGVtXCJdKSxcbiAgICBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJzdWJtZW51LWljb25cIl0pLCBBdHRyLnRpdGxlKHRvb2x0aXApXSksXG4gICAgICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJpY29uXCJdKSwgW2ljb25dKV0sXG4gICAgICApLFxuICAgICAgZGl2KH5hdHRyPWNsc3MoW1wic3VibWVudVwiXSksIG1lbnUpLFxuICAgIF0sXG4gICk7XG5cbmxldCB2aWV3ID1cbiAgICAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgfmVkaXRvcnM6IEVkaXRvcnMudCkgPT4gW1xuICBhKH5hdHRyPWNsc3MoW1wibnV0LWljb25cIl0pLCBbSWNvbnMuaGF6ZWxudXRdKSxcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wibnV0LW1lbnVcIl0pLFxuICAgIFtcbiAgICAgIHN1Ym1lbnUoXG4gICAgICAgIH50b29sdGlwPVwiU2V0dGluZ3NcIixcbiAgICAgICAgfmljb249SWNvbnMuZ2VhcixcbiAgICAgICAgc2V0dGluZ3NfbWVudSh+aW5qZWN0LCB+c2V0dGluZ3MpLFxuICAgICAgKSxcbiAgICAgIHN1Ym1lbnUoXG4gICAgICAgIH50b29sdGlwPVwiRXhwb3J0XCIsXG4gICAgICAgIH5pY29uPUljb25zLmV4cG9ydCxcbiAgICAgICAgZXhwb3J0X21lbnUofmluamVjdCwgfnNldHRpbmdzLCBlZGl0b3JzKSxcbiAgICAgICksXG4gICAgICBzdWJtZW51KFxuICAgICAgICB+dG9vbHRpcD1cIkltcG9ydFwiLFxuICAgICAgICB+aWNvbj1JY29ucy5pbXBvcnQsXG4gICAgICAgIGltcG9ydF9tZW51KH5pbmplY3QsIGVkaXRvcnMpLFxuICAgICAgKSxcbiAgICAgIHJlcGFyc2UofmluamVjdCksXG4gICAgICByZXNldF9oYXplbCxcbiAgICAgIGxpbmsoXG4gICAgICAgIEljb25zLmdpdGh1YixcbiAgICAgICAgXCJodHRwczovL2dpdGh1Yi5jb20vaGF6ZWxncm92ZS9oYXplbFwiLFxuICAgICAgICB+dG9vbHRpcD1cIkhhemVsIG9uIEdpdEh1YlwiLFxuICAgICAgKSxcbiAgICAgIGxpbmsoSWNvbnMuaW5mbywgXCJodHRwczovL2hhemVsLm9yZ1wiLCB+dG9vbHRpcD1cIkhhemVsIEhvbWVwYWdlXCIpLFxuICAgIF0sXG4gICksXG5dO1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5sZXQgaGFuZGxlcnMgPSAofmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksIG1vZGVsKSA9PiB7XG4gIGxldCBnZXRfc2VsZWN0aW9uID0gKG1vZGVsOiBNb2RlbC50KTogc3RyaW5nID0+XG4gICAgbW9kZWwuZWRpdG9ycyB8PiBFZGl0b3JzLmdldF9lZGl0b3IgfD4gUHJpbnRlci50b19zdHJpbmdfc2VsZWN0aW9uO1xuICBsZXQga2V5X2hhbmRsZXIgPVxuICAgICAgKH5pbmplY3QsIH5kaXI6IEtleS5kaXIsIGV2dDogSnMudChEb21faHRtbC5rZXlib2FyZEV2ZW50KSlcbiAgICAgIDogRWZmZWN0LnQodW5pdCkgPT5cbiAgICBFZmZlY3QuKFxuICAgICAgc3dpdGNoIChLZXlib2FyZC5oYW5kbGVfa2V5X2V2ZW50KEtleS5tayhkaXIsIGV2dCkpKSB7XG4gICAgICB8IE5vbmUgPT4gSWdub3JlXG4gICAgICB8IFNvbWUoYWN0aW9uKSA9PlxuICAgICAgICBNYW55KFtQcmV2ZW50X2RlZmF1bHQsIFN0b3BfcHJvcGFnYXRpb24sIGluamVjdChhY3Rpb24pXSlcbiAgICAgIH1cbiAgICApO1xuICBbXG4gICAgQXR0ci5vbl9rZXlwcmVzcyhfID0+IEVmZmVjdC5QcmV2ZW50X2RlZmF1bHQpLFxuICAgIEF0dHIub25fa2V5dXAoa2V5X2hhbmRsZXIofmluamVjdCwgfmRpcj1LZXlVcCkpLFxuICAgIEF0dHIub25fa2V5ZG93bihrZXlfaGFuZGxlcih+aW5qZWN0LCB+ZGlyPUtleURvd24pKSxcbiAgICAvKiBzYWZldHkgaGFuZGxlciBpbiBjYXNlIG1vdXNlZG93biBvdmVybGF5IGRvZXNuJ3QgY2F0Y2ggaXQgKi9cbiAgICBBdHRyLm9uX21vdXNldXAoXyA9PiBpbmplY3QoU2V0TWV0YShNb3VzZXVwKSkpLFxuICAgIEF0dHIub25fYmx1cihfID0+IHtcbiAgICAgIEpzVXRpbC5mb2N1c19jbGlwYm9hcmRfc2hpbSgpO1xuICAgICAgRWZmZWN0Lklnbm9yZTtcbiAgICB9KSxcbiAgICBBdHRyLm9uX2ZvY3VzKF8gPT4ge1xuICAgICAgSnNVdGlsLmZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gICAgICBFZmZlY3QuSWdub3JlO1xuICAgIH0pLFxuICAgIEF0dHIub25fY29weShfID0+IHtcbiAgICAgIEpzVXRpbC5jb3B5KGdldF9zZWxlY3Rpb24obW9kZWwpKTtcbiAgICAgIEVmZmVjdC5JZ25vcmU7XG4gICAgfSksXG4gICAgQXR0ci5vbl9jdXQoXyA9PiB7XG4gICAgICBKc1V0aWwuY29weShnZXRfc2VsZWN0aW9uKG1vZGVsKSk7XG4gICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oRGVzdHJ1Y3QoTGVmdCkpKTtcbiAgICB9KSxcbiAgICBBdHRyLm9uX3Bhc3RlKGV2dCA9PiB7XG4gICAgICBsZXQgcGFzdGVkX3RleHQgPVxuICAgICAgICBKcy50b19zdHJpbmcoZXZ0IyMuY2xpcGJvYXJkRGF0YSMjZ2V0RGF0YShKcy5zdHJpbmcoXCJ0ZXh0XCIpKSlcbiAgICAgICAgfD4gU3RyLmdsb2JhbF9yZXBsYWNlKFN0ci5yZWdleHAoXCJcXG5bIF0qXCIpLCBcIlxcblwiKTtcbiAgICAgIERvbS5wcmV2ZW50RGVmYXVsdChldnQpO1xuICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5QYXN0ZShwYXN0ZWRfdGV4dCkpO1xuICAgIH0pLFxuICBdO1xufTtcblxubGV0IG1haW5fdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICB7XG4gICAgICAgIHNldHRpbmdzLFxuICAgICAgICBlZGl0b3JzLFxuICAgICAgICBleHBsYWluVGhpc01vZGVsLFxuICAgICAgICBhY2Nlc3NpYmlsaXR5TW9kZWwsXG4gICAgICAgIHJlc3VsdHMsXG4gICAgICAgIHN0YXRpY3MsXG4gICAgICAgIHVpX3N0YXRlLFxuICAgICAgICBfLFxuICAgICAgfTogTW9kZWwudCxcbiAgICApID0+IHtcbiAgbGV0IGVkaXRvciA9IEVkaXRvcnMuZ2V0X2VkaXRvcihlZGl0b3JzKTtcbiAgbGV0IHN0YXRpY3MgPSBFZGl0b3JzLmxvb2t1cF9zdGF0aWNzKH5zZXR0aW5ncywgfnN0YXRpY3MsIGVkaXRvcnMpO1xuICBsZXQgY3Vyc29yX2luZm8gPSBJbmRpY2F0ZWQuY2lfb2YoZWRpdG9yLnN0YXRlLnppcHBlciwgc3RhdGljcy5pbmZvX21hcCk7XG4gIGxldCB0b3BfYmFyID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmlkKFwidG9wLWJhclwiKSxcbiAgICAgIE51dE1lbnUudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIH5lZGl0b3JzKVxuICAgICAgQCBbZGl2KH5hdHRyPUF0dHIuaWQoXCJ0aXRsZVwiKSwgW3RleHQoXCJoYXplbFwiKV0pXVxuICAgICAgQCBbRWRpdG9yTW9kZVZpZXcudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIH5lZGl0b3JzKV0sXG4gICAgKTtcbiAgbGV0IGJvdHRvbV9iYXIgPSBDdXJzb3JJbnNwZWN0b3Iudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGN1cnNvcl9pbmZvKTtcbiAgbGV0IGExMXlfYmFyID0gQWNjZXNzaWJpbGl0eS52aWV3KH5faW5qZWN0PWluamVjdCwgYWNjZXNzaWJpbGl0eU1vZGVsKTtcbiAgbGV0IHNpZGViYXIgPVxuICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3cgJiYgc2V0dGluZ3MuY29yZS5zdGF0aWNzXG4gICAgICA/IEV4cGxhaW5UaGlzLnZpZXcoXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5leHBsYWluVGhpc01vZGVsLFxuICAgICAgICAgIGN1cnNvcl9pbmZvLFxuICAgICAgICApXG4gICAgICA6IGRpdihbXSk7XG4gIGxldCBoaWdobGlnaHRzID1cbiAgICBFeHBsYWluVGhpcy5nZXRfY29sb3JfbWFwKH5zZXR0aW5ncywgfmV4cGxhaW5UaGlzTW9kZWwsIGN1cnNvcl9pbmZvKTtcbiAgbGV0IGVkaXRvcnNfdmlldyA9XG4gICAgc3dpdGNoIChlZGl0b3JzKSB7XG4gICAgfCBTY3JhdGNoKGlkeCwgXykgPT5cbiAgICAgIGxldCByZXN1bHRfa2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KHN0cmluZ19vZl9pbnQoaWR4KSk7XG4gICAgICBTY3JhdGNoTW9kZS52aWV3KFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgIH5yZXN1bHRzLFxuICAgICAgICB+cmVzdWx0X2tleSxcbiAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgIGVkaXRvcixcbiAgICAgICk7XG4gICAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIF8pID0+XG4gICAgICBsZXQgcmVzdWx0X2tleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICAgIGxldCBpbmZvID1cbiAgICAgICAgU2xpZGVDb250ZW50LmdldF9jb250ZW50KGVkaXRvcnMpXG4gICAgICAgIHw+IE9wdGlvbi5tYXAoaSA9PiBkaXYofmF0dHI9QXR0ci5pZChcInNsaWRlXCIpLCBbaV0pKVxuICAgICAgICB8PiBPcHRpb24udG9fbGlzdDtcbiAgICAgIGluZm9cbiAgICAgIEAgU2NyYXRjaE1vZGUudmlldyhcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgICAgfnJlc3VsdHMsXG4gICAgICAgICAgfnJlc3VsdF9rZXksXG4gICAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICApO1xuICAgIHwgRXhlcmNpc2VzKF8sIF8sIGV4ZXJjaXNlKSA9PlxuICAgICAgRXhlcmNpc2VNb2RlLnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgfnJlc3VsdHMsXG4gICAgICAgIH5leGVyY2lzZSxcbiAgICAgIClcbiAgICB9O1xuICBbXG4gICAgdG9wX2JhcixcbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmlkKFwibWFpblwiKSxcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1NldHRpbmdzLnNob3dfbW9kZShzZXR0aW5ncy5tb2RlKV0pLFxuICAgICAgICBdKSxcbiAgICAgIGVkaXRvcnNfdmlldyxcbiAgICApLFxuICAgIHNpZGViYXIsXG4gICAgYm90dG9tX2JhcixcbiAgICBhMTF5X2JhcixcbiAgXTtcbn07XG5cbmxldCBnZXRfc2VsZWN0aW9uID0gKG1vZGVsOiBNb2RlbC50KTogc3RyaW5nID0+XG4gIG1vZGVsLmVkaXRvcnMgfD4gRWRpdG9ycy5nZXRfZWRpdG9yIHw+IFByaW50ZXIudG9fc3RyaW5nX3NlbGVjdGlvbjtcblxubGV0IHZpZXcgPSAofmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksIG1vZGVsOiBNb2RlbC50KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KEF0dHIuW2lkKFwicGFnZVwiKSwgLi4uaGFuZGxlcnMofmluamVjdCwgbW9kZWwpXSksXG4gICAgW1xuICAgICAgRm9udFNwZWNpbWVuLnZpZXcoXCJmb250LXNwZWNpbWVuXCIpLFxuICAgICAgRGVjVXRpbC5maWx0ZXJzLFxuICAgICAgSnNVdGlsLmNsaXBib2FyZF9zaGltLFxuICAgIF1cbiAgICBAIG1haW5fdmlldyh+aW5qZWN0LCBtb2RlbCksXG4gICk7XG4iLCJsZXQgbWVtb2l6ZSA9IChmOiAnayA9PiAndik6ICgnayA9PiAndikgPT4ge1xuICBsZXQgdGFibGU6IFdlYWtNYXAudCgnaywgJ3YpID0gV2Vha01hcC5taygpO1xuICBrID0+XG4gICAgc3dpdGNoIChXZWFrTWFwLmdldCh0YWJsZSwgaykpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2ID0gZihrKTtcbiAgICAgIGxldCBfID0gV2Vha01hcC5zZXQodGFibGUsIGssIHYpO1xuICAgICAgdjtcbiAgICB8IFNvbWUodikgPT4gdlxuICAgIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxudHlwZSB0ID0gKGZsb2F0LCBVcGRhdGVBY3Rpb24udCk7XG5cbmxldCBtayA9ICh1cGRhdGUpOiB0ID0+IHtcbiAgKEpzVXRpbC50aW1lc3RhbXAoKSwgdXBkYXRlKTtcbn07XG5cbmxldCB0b19zdHJpbmcgPSAoKHRpbWVzdGFtcCwgdXBkYXRlKTogdCkgPT4ge1xuICAvKmxldCBzdGF0dXMgPVxuICAgIHN3aXRjaCAoZW50cnkuZXJyb3IpIHtcbiAgICB8IE5vbmUgPT4gXCJTVUNDRVNTXCJcbiAgICB8IFNvbWUoZmFpbHVyZSkgPT4gXCJGQUlMVVJFKFwiICsrIFVwZGF0ZUFjdGlvbi5GYWlsdXJlLnNob3coZmFpbHVyZSkgKysgXCIpXCJcbiAgICB9OyovXG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwiJS4wZjogJXNcIixcbiAgICB0aW1lc3RhbXAsXG4gICAgVXBkYXRlQWN0aW9uLnNob3codXBkYXRlKSxcbiAgICAvL3N0YXR1cyxcbiAgKTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoZW50cnk6IHQpOiBzdHJpbmcgPT4ge1xuICBlbnRyeSB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChzOiBzdHJpbmcpOiB0ID0+IHtcbiAgcyB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHRfb2Zfc2V4cDtcbn07XG4iLCIjIDEgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuIFxuICBvcGVuIFBhcnNlclxuXG4jIDYgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDI0OVxcMjU1XFwyNTBcXDI1NVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDEwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA2IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgIGRcbiMgMTA5IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDYgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAoIERJR0lUUyhpbnRfb2Zfc3RyaW5nIGQpIClcbiMgMTEzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyA3IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICggVEVYVF9PQkpFQ1RfS0VZKFRlcm0pIClcbiMgMTE4IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyA4IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBURVhUX09CSkVDVF9LRVkoUGFyZW50aGVzaXMpIClcbiMgMTIzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA5IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQUNUSU9OX0tFWShNb3ZlKSApXG4jIDEyOCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMTAgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBRVUVSWV9ERUNPUkFUSU9OKERlZmluaXRpb24pIClcbiMgMTMzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAxMSBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIFFVRVJZX0tFWShUeXBlKSApXG4jIDEzOCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgMTIgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBRVUVSWV9LRVkoUmVhZCkgKVxuIyAxNDMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCA3IC0+XG4jIDEzIFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICggVEVYVF9PQkpFQ1RfSU5ORVIgKVxuIyAxNDggXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDE0IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICggVEVYVF9PQkpFQ1RfUVVFUlkgKVxuIyAxNTMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDE1IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggdG9rZW4gbGV4YnVmIClcbiMgMTU4IFwic3JjL2hhejNsd2ViL3ZpZXcvYTExeS9wYXJzZXIvbGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTYgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBFT0YgKVxuIyAxNjMgXCJzcmMvaGF6M2x3ZWIvdmlldy9hMTF5L3BhcnNlci9sZXhlci5tbFwiXG5cbiAgfCAxMSAtPlxuIyAxNyBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZhaWx3aXRoIChcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyOiBcIiBeIExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE2OCBcInNyYy9oYXozbHdlYi92aWV3L2ExMXkvcGFyc2VyL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJ7XG4gIG9wZW4gUGFyc2VyXG59XG5cbnJ1bGUgdG9rZW4gPSBwYXJzZVxuICB8IFsnMCctJzknXSsgYXMgZCB7IERJR0lUUyhpbnRfb2Zfc3RyaW5nIGQpIH1cbiAgfCAndycgICAgICAgICAgIHsgVEVYVF9PQkpFQ1RfS0VZKFRlcm0pIH1cbiAgfCBbJygnICcpJ10gICAgeyBURVhUX09CSkVDVF9LRVkoUGFyZW50aGVzaXMpIH1cbiAgfCAnbScgICAgICAgICAgIHsgQUNUSU9OX0tFWShNb3ZlKSB9XG4gIHwgJ2QnICAgICAgICAgICB7IFFVRVJZX0RFQ09SQVRJT04oRGVmaW5pdGlvbikgfVxuICB8ICd0JyAgICAgICAgICAgeyBRVUVSWV9LRVkoVHlwZSkgfVxuICB8ICdyJyAgICAgICAgICAgeyBRVUVSWV9LRVkoUmVhZCkgfVxuICB8ICdpJyAgICAgICAgICAgeyBURVhUX09CSkVDVF9JTk5FUiB9XG4gIHwgJ3EnICAgICAgICAgICB7IFRFWFRfT0JKRUNUX1FVRVJZIH1cbiAgfCBbJyAnICdcXHQnICdcXG4nICdcXHInXSAgIHsgdG9rZW4gbGV4YnVmIH0gICgqIFNraXAgd2hpdGVzcGFjZXMgKilcbiAgfCBlb2YgICAgICAgICAgIHsgRU9GIH1cbiAgfCBfICAgICAgICAgICAgIHsgZmFpbHdpdGggKFwiVW5leHBlY3RlZCBjaGFyYWN0ZXI6IFwiIF4gTGV4aW5nLmxleGVtZSBsZXhidWYpIH1cbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByZWFzb24gPVxuICB8IFVucmVjb2duaXplZFxuICB8IEZhaWx1cmUoQWN0aW9uLkZhaWx1cmUudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgcmVhc29uLFxuICBwcmlvcl9hdHRlbXB0czogaW50LFxufTtcblxubGV0IG1rID0gKH5wcmlvcl9hdHRlbXB0cz0wLCByZWFzb24pID0+IHtyZWFzb24sIHByaW9yX2F0dGVtcHRzfTtcblxubGV0IHJlcGxhY2Vfb3JfaW5jcmVtZW50X2F0dGVtcHRzID0gKHJlYXNvbiwgZmFpbGVkX2lucHV0OiB0KSA9PlxuICByZWFzb24gPT0gZmFpbGVkX2lucHV0LnJlYXNvblxuICAgID8gey4uLmZhaWxlZF9pbnB1dCwgcHJpb3JfYXR0ZW1wdHM6IGZhaWxlZF9pbnB1dC5wcmlvcl9hdHRlbXB0cyArIDF9XG4gICAgOiBtayhyZWFzb24pO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9XG4gIHwgVHVybk9mZkR5bmFtaWNzXG4gIHwgQ2xlYXJTdG9yZTtcblxubGV0IHBlcmZvcm0gPSAoYWN0aW9uOiBhY3Rpb24pOiB1bml0ID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgfCBUdXJuT2ZmRHluYW1pY3MgPT5cbiAgICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5sb2FkKCk7XG4gICAgU3RvcmUuU2V0dGluZ3Muc2F2ZSh7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIGNvcmU6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgZHluYW1pY3M6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfCBDbGVhclN0b3JlID0+IEpzVXRpbC5jbGVhcl9sb2NhbHN0b3JlKClcbiAgfTtcbiAgSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlcGxhY2UoXG4gICAgSnNfb2Zfb2NhbWwuSnMuc3RyaW5nKFwiI1wiKSxcbiAgKTtcbiAgSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlbG9hZDtcbn07XG5cbmxldCBidG4gPSAoY2FwdGlvbiwgYWN0aW9uKSA9PiB7XG4gIE5vZGUuKFxuICAgIGJ1dHRvbihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PiB7XG4gICAgICAgICAgICBwZXJmb3JtKGFjdGlvbik7XG4gICAgICAgICAgICBVaV9lZmZlY3QuSWdub3JlO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgIFt0ZXh0KGNhcHRpb24pXSxcbiAgICApXG4gICk7XG59O1xuXG5sZXQgdmlldyA9IHtcbiAgTm9kZS4oXG4gICAgZGl2KFtcbiAgICAgIGJ0bihcInR1cm4gb2ZmIGR5bmFtaWNzXCIsIFR1cm5PZmZEeW5hbWljcyksXG4gICAgICBidG4oXCJjbGVhciBsb2NhbCBzdG9yYWdlIChMT1NFIEFMTCBEQVRBISlcIiwgQ2xlYXJTdG9yZSksXG4gICAgXSlcbiAgKTtcbn07XG5cbm1vZHVsZSBBcHAgPSB7XG4gIG1vZHVsZSBNb2RlbCA9IHtcbiAgICB0eXBlIHQgPSB1bml0O1xuICAgIGxldCBjdXRvZmYgPSAoXywgXykgPT4gZmFsc2U7XG4gIH07XG4gIG1vZHVsZSBBY3Rpb24gPSB7XG4gICAgdHlwZSB0ID0gdW5pdDtcbiAgICBsZXQgc2V4cF9vZl90ID0gXyA9PiBTZXhwbGliLlNleHAudW5pdDtcbiAgfTtcbiAgbW9kdWxlIFN0YXRlID0ge1xuICAgIHR5cGUgdCA9IHVuaXQ7XG4gIH07XG4gIGxldCBvbl9zdGFydHVwID0gKH5zY2hlZHVsZV9hY3Rpb24gYXMgXywgXykgPT5cbiAgICBBc3luY19rZXJuZWwuRGVmZXJyZWQucmV0dXJuKCk7XG4gIGxldCBjcmVhdGUgPSAoXywgfm9sZF9tb2RlbCBhcyBfLCB+aW5qZWN0IGFzIF8pID0+XG4gICAgSW5jcl9kb20uSW5jci5yZXR1cm4oKVxuICAgIHw+IEluY3JfZG9tLkluY3IubWFwKH5mPV8gPT5cbiAgICAgICAgIEluY3JfZG9tLkNvbXBvbmVudC5jcmVhdGUoXG4gICAgICAgICAgIH5hcHBseV9hY3Rpb249KF8sIF8sIH5zY2hlZHVsZV9hY3Rpb24gYXMgXykgPT4gKCksXG4gICAgICAgICAgICgpLFxuICAgICAgICAgICB2aWV3LFxuICAgICAgICAgKVxuICAgICAgICk7XG59O1xuXG5sZXQgZ28gPSAoKSA9PlxuICBJbmNyX2RvbS5TdGFydF9hcHAuc3RhcnQoXG4gICAgKG1vZHVsZSBBcHApLFxuICAgIH5kZWJ1Zz1mYWxzZSxcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWQ9XCJjb250YWluZXJcIixcbiAgICB+aW5pdGlhbF9tb2RlbD0oKSxcbiAgKTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgRG9jID0gUHJldHR5LkRvYztcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gRG9jLnQoREhBbm5vdC50KTtcblxudHlwZSBmb3JtYXR0YWJsZV9jaGlsZCA9ICh+ZW5mb3JjZV9pbmxpbmU6IGJvb2wpID0+IHQ7XG5cbmxldCBwcmVjZWRlbmNlX2NvbnN0ID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfY29uc3Q7XG5sZXQgcHJlY2VkZW5jZV9BcCA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwO1xubGV0IHByZWNlZGVuY2VfVGltZXMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9UaW1lcztcbmxldCBwcmVjZWRlbmNlX0RpdmlkZSA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0RpdmlkZTtcbmxldCBwcmVjZWRlbmNlX1BsdXMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9QbHVzO1xubGV0IHByZWNlZGVuY2VfTWludXMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9NaW51cztcbmxldCBwcmVjZWRlbmNlX0NvbnMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db25zO1xubGV0IHByZWNlZGVuY2VfRXF1YWxzID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRXF1YWxzO1xubGV0IHByZWNlZGVuY2VfTGVzc1RoYW4gPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9MZXNzVGhhbjtcbmxldCBwcmVjZWRlbmNlX0dyZWF0ZXJUaGFuID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfR3JlYXRlclRoYW47XG5sZXQgcHJlY2VkZW5jZV9BbmQgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9BbmQ7XG5sZXQgcHJlY2VkZW5jZV9PciA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX09yO1xubGV0IHByZWNlZGVuY2VfQ29tbWEgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db21tYTtcbmxldCBwcmVjZWRlbmNlX21heCA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX21heDtcblxubGV0IHBhZF9jaGlsZCA9XG4gICAgKFxuICAgICAgfmlubGluZV9wYWRkaW5nIGFzIChsLCByKT0oRG9jLmVtcHR5KCksIERvYy5lbXB0eSgpKSxcbiAgICAgIH5lbmZvcmNlX2lubGluZTogYm9vbCxcbiAgICAgIGNoaWxkOiBmb3JtYXR0YWJsZV9jaGlsZCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IGlubGluZV9jaG9pY2UgPSBEb2MuaGNhdHMoW2wsIGNoaWxkKH5lbmZvcmNlX2lubGluZT10cnVlKSwgcl0pO1xuICBsZXQgcGFyYV9jaG9pY2UgPVxuICAgIERvYy4oXG4gICAgICBoY2F0cyhbXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBpbmRlbnRfYW5kX2FsaWduKGNoaWxkKH5lbmZvcmNlX2lubGluZT1mYWxzZSkpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0pXG4gICAgKTtcbiAgZW5mb3JjZV9pbmxpbmUgPyBpbmxpbmVfY2hvaWNlIDogRG9jLmNob2ljZShpbmxpbmVfY2hvaWNlLCBwYXJhX2Nob2ljZSk7XG59O1xuXG5tb2R1bGUgRGVsaW0gPSB7XG4gIGxldCBtayA9IChkZWxpbV90ZXh0OiBzdHJpbmcpOiB0ID0+XG4gICAgRG9jLnRleHQoZGVsaW1fdGV4dCkgfD4gRG9jLmFubm90KERIQW5ub3QuRGVsaW0pO1xuXG4gIGxldCBlbXB0eV9ob2xlID0gKCh1LCBpKTogSG9sZUluc3RhbmNlLnQpOiB0ID0+IHtcbiAgICBsZXQgbGJsID0gU3RyaW5nVXRpbC5jYXQoW0lkLnRvX3N0cmluZyh1KSwgXCI6XCIsIHN0cmluZ19vZl9pbnQoaSArIDEpXSk7XG4gICAgRG9jLnRleHQobGJsKVxuICAgIHw+IERvYy5hbm5vdChESEFubm90LkhvbGVMYWJlbClcbiAgICB8PiBEb2MuYW5ub3QoREhBbm5vdC5EZWxpbSk7XG4gIH07XG5cbiAgbGV0IGxpc3RfbmlsID0gbWsoXCJbXVwiKTtcbiAgbGV0IHRyaXYgPSBtayhcIigpXCIpO1xuICBsZXQgd2lsZCA9IG1rKFwiX1wiKTtcblxuICBsZXQgb3Blbl9QYXJlbnRoZXNpemVkID0gbWsoXCIoXCIpO1xuICBsZXQgY2xvc2VfUGFyZW50aGVzaXplZCA9IG1rKFwiKVwiKTtcblxuICBsZXQgc3ltX0Z1biA9IG1rKFwiZnVuXCIpO1xuICBsZXQgY29sb25fTGFtID0gbWsoXCI6XCIpO1xuICBsZXQgb3Blbl9MYW0gPSBtayhcIi57XCIpO1xuICBsZXQgY2xvc2VfTGFtID0gbWsoXCJ9XCIpO1xuXG4gIGxldCBmaXhfRml4RiA9IG1rKFwiZml4XCIpO1xuICBsZXQgY29sb25fRml4RiA9IG1rKFwiOlwiKTtcbiAgbGV0IG9wZW5fRml4RiA9IG1rKFwiLntcIik7XG4gIGxldCBjbG9zZV9GaXhGID0gbWsoXCJ9XCIpO1xuICBsZXQgb3Blbl9DYXNlID0gbWsoXCJjYXNlXCIpO1xuICBsZXQgY2xvc2VfQ2FzZSA9IG1rKFwiZW5kXCIpO1xuXG4gIGxldCBiYXJfUnVsZSA9IG1rKFwifFwiKTtcbiAgbGV0IGFycm93X1J1bGUgPSBtayhcIj0+XCIpO1xuXG4gIGxldCBvcGVuX0Nhc3QgPSBtayhcIjxcIik7XG4gIGxldCBhcnJvd19DYXN0ID0gbWsoVW5pY29kZS5jYXN0QXJyb3dTeW0pO1xuICBsZXQgY2xvc2VfQ2FzdCA9IG1rKFwiPlwiKTtcblxuICBsZXQgb3Blbl9GYWlsZWRDYXN0ID0gb3Blbl9DYXN0IHw+IERvYy5hbm5vdChESEFubm90LkZhaWxlZENhc3REZWxpbSk7XG4gIGxldCBhcnJvd19GYWlsZWRDYXN0ID1cbiAgICBtayhVbmljb2RlLmNhc3RBcnJvd1N5bSkgfD4gRG9jLmFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlbGltKTtcbiAgbGV0IGNsb3NlX0ZhaWxlZENhc3QgPSBjbG9zZV9DYXN0IHw+IERvYy5hbm5vdChESEFubm90LkZhaWxlZENhc3REZWxpbSk7XG59O1xuXG5sZXQgbWtfRW1wdHlIb2xlID0gKH5zZWxlY3RlZD1mYWxzZSwgKHUsIGkpKSA9PlxuICBEZWxpbS5lbXB0eV9ob2xlKCh1LCBpKSlcbiAgfD4gRG9jLmFubm90KERIQW5ub3QuRW1wdHlIb2xlKHNlbGVjdGVkLCAodSwgaSkpKTtcblxubGV0IG1rX0tleXdvcmQgPSAodSwgaSwgaykgPT5cbiAgRG9jLnRleHQoRXhwYW5kaW5nS2V5d29yZC50b19zdHJpbmcoaykpXG4gIHw+IERvYy5hbm5vdChESEFubm90LlZhckhvbGUoRXhwYW5kaW5nS2V5d29yZChrKSwgKHUsIGkpKSk7XG5cbmxldCBta19JbnRMaXQgPSBuID0+IERvYy50ZXh0KHN0cmluZ19vZl9pbnQobikpO1xuXG5sZXQgbWtfRmxvYXRMaXQgPSAoZjogZmxvYXQpID0+XG4gIHN3aXRjaCAoZiA8IDAuLCBGbG9hdC5pc19pbmZpbml0ZShmKSwgRmxvYXQuaXNfbmFuKGYpKSB7XG4gIHwgKGZhbHNlLCB0cnVlLCBfKSA9PiBEb2MudGV4dChcIkluZlwiKVxuICAvKiBUT0RPOiBOZWdJbmYgaXMgdGVtcG9yYXJpbHkgaW50cm9kdWNlZCB1bnRpbCB1bmFyeSBtaW51cyBpcyBpbnRyb2R1Y2VkIHRvIEhhemVsICovXG4gIHwgKHRydWUsIHRydWUsIF8pID0+IERvYy50ZXh0KFwiTmVnSW5mXCIpXG4gIHwgKF8sIF8sIHRydWUpID0+IERvYy50ZXh0KFwiTmFOXCIpXG4gIHwgXyA9PiBEb2MudGV4dChzdHJpbmdfb2ZfZmxvYXQoZikpXG4gIH07XG5cbmxldCBta19Cb29sTGl0ID0gYiA9PiBEb2MudGV4dChzdHJpbmdfb2ZfYm9vbChiKSk7XG5cbmxldCBta19Db25zID0gKGhkLCB0bCkgPT4gRG9jLihoY2F0cyhbaGQsIHRleHQoXCI6OlwiKSwgdGxdKSk7XG5cbmxldCBta19QYWlyID0gKGRvYzEsIGRvYzIpID0+IERvYy4oaGNhdHMoW2RvYzEsIHRleHQoXCIsIFwiKSwgZG9jMl0pKTtcblxubGV0IG1rX0FwID0gKGRvYzEsIGRvYzIpID0+IERvYy5oc2VwcyhbZG9jMSwgZG9jMl0pO1xuIiwiKCogY29weSB0aGlzIGZpbGUsIGZpbGxpbmcgaW4gdGhlIGRldGFpbHMgYmVsb3csIHRvIGNyZWF0ZSBhIGJsYW5rIGV4ZXJjaXNlIHRoYXQgeW91IGNhbiB0aGVuIGVkaXQgaW4gSGF6ZWxcbiAgIGFuZCBleHBvcnQsIG92ZXJ3cml0aW5nIHlvdXIgY29weSBvZiB0aGUgYmVsb3dcblxuICAgZm9yIHByb21wdHMsIHlvdSBuZWVkIHRvIGRlZmluZSBhIHNlcGFyYXRlIGZpbGUge21vZHVsZV9uYW1lfV9wcm9tcHQucmUgKHNlZSBleGFtcGxlcylcbiopXG5cbmxldCBleGVyY2lzZSA9XG4gIEV4ZXJjaXNlLmJsYW5rX3NwZWMgfnRpdGxlOlwiUmVjdXJzaXZlIEZpYm9uYWNjaVwiXG4gICAgfm1vZHVsZV9uYW1lOlwiRXhfUmVjdXJzaXZlRmlib25hY2NpXCJcbiAgICAgICgqIG1ha2Ugc3VyZSB5b3VyIGZpbGUgaXMgbmFtZWQgPG1vZHVsZV9uYW1lPi5tbCAqKVxuICAgIH5wb2ludF9kaXN0cmlidXRpb246XG4gICAgICB7IHRlc3RfdmFsaWRhdGlvbiA9IDEwOyBtdXRhdGlvbl90ZXN0aW5nID0gNDA7IGltcGxfZ3JhZGluZyA9IDUwIH1cbiAgICAgICgqIGlmIG11dGF0aW9uX3Rlc3RpbmcgPSAwLCB0aGVuIG5vIG11dGF0aW9uIHRlc3RpbmcgYm94IHdpbGwgc2hvdyB1cCAqKVxuICAgIH5yZXF1aXJlZF90ZXN0czo1IH5wcm92aWRlZF90ZXN0czowIH5udW1fd3JvbmdfaW1wbHM6MlxuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tLkF0dHI7XG5cbmxldCBmc3RyID0gZiA9PiBQcmludGYuc3ByaW50ZihcIiVmXCIsIGYpO1xuXG5sZXQgY3ggPSBmID0+IGNyZWF0ZShcImN4XCIsIGZzdHIoZikpO1xubGV0IGN5ID0gZiA9PiBjcmVhdGUoXCJjeVwiLCBmc3RyKGYpKTtcbmxldCByeCA9IGYgPT4gY3JlYXRlKFwicnhcIiwgZnN0cihmKSk7XG5sZXQgcnkgPSBmID0+IGNyZWF0ZShcInJ5XCIsIGZzdHIoZikpO1xuXG5sZXQgeCA9IGYgPT4gY3JlYXRlKFwieFwiLCBmc3RyKGYpKTtcbmxldCB5ID0gZiA9PiBjcmVhdGUoXCJ5XCIsIGZzdHIoZikpO1xubGV0IHdpZHRoID0gZiA9PiBjcmVhdGUoXCJ3aWR0aFwiLCBmc3RyKGYpKTtcbmxldCBoZWlnaHQgPSBmID0+IGNyZWF0ZShcImhlaWdodFwiLCBmc3RyKGYpKTtcblxubGV0IHN0cm9rZV93aWR0aCA9IGYgPT4gY3JlYXRlKFwic3Ryb2tlLXdpZHRoXCIsIGZzdHIoZikpO1xubGV0IHZlY3Rvcl9lZmZlY3QgPSBzID0+IGNyZWF0ZShcInZlY3Rvci1lZmZlY3RcIiwgcyk7XG5sZXQgZmlsdGVyID0gcyA9PiBjcmVhdGUoXCJmaWx0ZXJcIiwgcyk7XG5cbmxldCBvZmZzZXQgPSBmID0+IGNyZWF0ZShcIm9mZnNldFwiLCBQcmludGYuc3ByaW50ZihcIiVmJSVcIiwgMTAwLiAqLiBmKSk7XG5sZXQgc3RvcF9jb2xvciA9IHMgPT4gY3JlYXRlKFwic3RvcC1jb2xvclwiLCBzKTtcbmxldCBzdG9wX29wYWNpdHkgPSBmID0+IGNyZWF0ZShcInN0b3Atb3BhY2l0eVwiLCBQcmludGYuc3ByaW50ZihcIiVmXCIsIGYpKTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIEluY3JfZG9tO1xub3BlbiBIYXozbHdlYjtcblxubGV0IHNjcm9sbF90b19jYXJldCA9IHJlZih0cnVlKTtcbmxldCBlZGl0X2FjdGlvbl9hcHBsaWVkID0gcmVmKHRydWUpO1xubGV0IGxhc3RfZWRpdF9hY3Rpb24gPSByZWYoSnNVdGlsLnRpbWVzdGFtcCgpKTtcblxubGV0IG9ic2VydmVfZm9udF9zcGVjaW1lbiA9IChpZCwgdXBkYXRlKSA9PlxuICBSZXNpemVPYnNlcnZlci5vYnNlcnZlKFxuICAgIH5ub2RlPUpzVXRpbC5nZXRfZWxlbV9ieV9pZChpZCksXG4gICAgfmY9XG4gICAgICAoZW50cmllcywgXykgPT4ge1xuICAgICAgICBsZXQgc3BlY2ltZW4gPSBKcy50b19hcnJheShlbnRyaWVzKVswXTtcbiAgICAgICAgbGV0IHJlY3QgPSBzcGVjaW1lbiMjLmNvbnRlbnRSZWN0O1xuICAgICAgICB1cGRhdGUoXG4gICAgICAgICAgSGF6M2x3ZWIuRm9udE1ldHJpY3Mue1xuICAgICAgICAgICAgcm93X2hlaWdodDogcmVjdCMjLmJvdHRvbSAtLiByZWN0IyMudG9wLFxuICAgICAgICAgICAgY29sX3dpZHRoOiByZWN0IyMucmlnaHQgLS4gcmVjdCMjLmxlZnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKCksXG4gICk7XG5cbmxldCByZXN0YXJ0X2NhcmV0X2FuaW1hdGlvbiA9ICgpID0+XG4gIC8vIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHJlZmxvd1xuICAvLyA8aHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9yZXN0YXJ0LWNzcy1hbmltYXRpb24vPlxuICB0cnkoe1xuICAgIGxldCBjYXJldF9lbGVtID0gSnNVdGlsLmdldF9lbGVtX2J5X2lkKFwiY2FyZXRcIik7XG4gICAgY2FyZXRfZWxlbSMjLmNsYXNzTGlzdCMjcmVtb3ZlKEpzLnN0cmluZyhcImJsaW5rXCIpKTtcbiAgICBsZXQgXyA9IGNhcmV0X2VsZW0jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBjYXJldF9lbGVtIyMuY2xhc3NMaXN0IyNhZGQoSnMuc3RyaW5nKFwiYmxpbmtcIikpO1xuICB9KSB7XG4gIHwgXyA9PiAoKVxuICB9O1xuXG5sZXQgYXBwbHkgPSAobW9kZWwsIGFjdGlvbiwgc3RhdGUsIH5zY2hlZHVsZV9hY3Rpb24pOiBNb2RlbC50ID0+IHtcbiAgcmVzdGFydF9jYXJldF9hbmltYXRpb24oKTtcbiAgaWYgKFVwZGF0ZUFjdGlvbi5pc19lZGl0KGFjdGlvbikpIHtcbiAgICBsYXN0X2VkaXRfYWN0aW9uIDo9IEpzVXRpbC50aW1lc3RhbXAoKTtcbiAgICBlZGl0X2FjdGlvbl9hcHBsaWVkIDo9IHRydWU7XG4gIH07XG4gIGlmIChVcGRhdGUuc2hvdWxkX3Njcm9sbF90b19jYXJldChhY3Rpb24pKSB7XG4gICAgc2Nyb2xsX3RvX2NhcmV0IDo9IHRydWU7XG4gIH07XG4gIGxhc3RfZWRpdF9hY3Rpb24gOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICBzd2l0Y2ggKFxuICAgIHRyeSh7XG4gICAgICBsZXQgbmV3X21vZGVsID0gVXBkYXRlLmFwcGx5KG1vZGVsLCBhY3Rpb24sIHN0YXRlLCB+c2NoZWR1bGVfYWN0aW9uKTtcbiAgICAgIExvZy51cGRhdGUoYWN0aW9uKTtcbiAgICAgIG5ld19tb2RlbDtcbiAgICB9KSB7XG4gICAgfCBleGMgPT5cbiAgICAgIFByaW50Zi5wcmludGYoXG4gICAgICAgIFwiRVJST1I6IEV4Y2VwdGlvbiBkdXJpbmcgYXBwbHk6ICVzXFxuXCIsXG4gICAgICAgIFByaW50ZXhjLnRvX3N0cmluZyhleGMpLFxuICAgICAgKTtcbiAgICAgIEVycm9yKEV4Y2VwdGlvbihQcmludGV4Yy50b19zdHJpbmcoZXhjKSkpO1xuICAgIH1cbiAgKSB7XG4gIHwgT2sobW9kZWwpID0+IG1vZGVsXG4gIHwgRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGVycikpID0+XG4gICAgLy8gVE9ETyhhbmRyZXcpOiByZWluc3RhdGUgdGhpcyBoaXN0b3J5IGZ1bmN0aW9uYWxpdHlcbiAgICBwcmludF9lbmRsaW5lKFVwZGF0ZS5GYWlsdXJlLnNob3coRmFpbGVkVG9QZXJmb3JtKGVycikpKTtcbiAgICAvL3suLi5tb2RlbCwgaGlzdG9yeTogQWN0aW9uSGlzdG9yeS5mYWlsdXJlKGVyciwgbW9kZWwuaGlzdG9yeSl9O1xuICAgIG1vZGVsO1xuICB8IEVycm9yKGVycikgPT5cbiAgICBwcmludF9lbmRsaW5lKFVwZGF0ZS5GYWlsdXJlLnNob3coZXJyKSk7XG4gICAgbW9kZWw7XG4gIH07XG59O1xuXG5tb2R1bGUgQXBwID0ge1xuICBtb2R1bGUgTW9kZWwgPSBNb2RlbDtcbiAgbW9kdWxlIEFjdGlvbiA9IFVwZGF0ZTtcbiAgbW9kdWxlIFN0YXRlID0gU3RhdGU7XG5cbiAgbGV0IG9uX3N0YXJ0dXAgPSAofnNjaGVkdWxlX2FjdGlvbiwgbTogTW9kZWwudCkgPT4ge1xuICAgIGxldCBfID1cbiAgICAgIG9ic2VydmVfZm9udF9zcGVjaW1lbihcImZvbnQtc3BlY2ltZW5cIiwgZm0gPT5cbiAgICAgICAgc2NoZWR1bGVfYWN0aW9uKEhhejNsd2ViLlVwZGF0ZS5TZXRNZXRhKEZvbnRNZXRyaWNzKGZtKSkpXG4gICAgICApO1xuXG4gICAgSnNVdGlsLmZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG5cbiAgICAvKiBpbml0aWFsaXplIHN0YXRlLiAqL1xuICAgIGxldCBzdGF0ZSA9IFN0YXRlLmluaXQoKTtcblxuICAgIC8qIEluaXRpYWwgZXZhbHVhdGlvbiBvbiBhIHdvcmtlciAqL1xuICAgIFVwZGF0ZS5zY2hlZHVsZV9ldmFsdWF0aW9uKH5zY2hlZHVsZV9hY3Rpb24sIG0pO1xuXG4gICAgT3MuaXNfbWFjIDo9XG4gICAgICBEb21faHRtbC53aW5kb3cjIy5uYXZpZ2F0b3IjIy5wbGF0Zm9ybSMjdG9VcHBlckNhc2UjI2luZGV4T2YoXG4gICAgICAgIEpzLnN0cmluZyhcIk1BQ1wiKSxcbiAgICAgIClcbiAgICAgID49IDA7XG4gICAgQXN5bmNfa2VybmVsLkRlZmVycmVkLnJldHVybihzdGF0ZSk7XG4gIH07XG5cbiAgbGV0IGNyZWF0ZSA9XG4gICAgICAoXG4gICAgICAgIG1vZGVsOiBJbmNyLnQoSGF6M2x3ZWIuTW9kZWwudCksXG4gICAgICAgIH5vbGRfbW9kZWwgYXMgXzogSW5jci50KEhhejNsd2ViLk1vZGVsLnQpLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgKSA9PiB7XG4gICAgb3BlbiBJbmNyLkxldF9zeW50YXg7XG4gICAgbGV0JW1hcCBtb2RlbCA9IG1vZGVsO1xuICAgIC8qIE5vdGU6IG1hcHBpbmcgb3ZlciB0aGUgb2xkX21vZGVsIGhlcmUgbWF5XG4gICAgICAgdHJpZ2dlciBhbiBhZGRpdGlvbmFsIHJlZHJhdyAqL1xuICAgIENvbXBvbmVudC5jcmVhdGUoXG4gICAgICB+YXBwbHlfYWN0aW9uPWFwcGx5KG1vZGVsKSxcbiAgICAgIG1vZGVsLFxuICAgICAgSGF6M2x3ZWIuUGFnZS52aWV3KH5pbmplY3QsIG1vZGVsKSxcbiAgICAgIH5vbl9kaXNwbGF5PShfLCB+c2NoZWR1bGVfYWN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChlZGl0X2FjdGlvbl9hcHBsaWVkXlxuICAgICAgICAgICAgJiYgSnNVdGlsLnRpbWVzdGFtcCgpXG4gICAgICAgICAgICAtLiBsYXN0X2VkaXRfYWN0aW9uXiA+IDEwMDAuMCkge1xuICAgICAgICAgIC8qIElmIGFuIGVkaXQgYWN0aW9uIGhhcyBiZWVuIGFwcGxpZWQsIGJ1dCBubyBvdGhlciBlZGl0IGFjdGlvblxuICAgICAgICAgICAgIGhhcyBiZWVuIGFwcGxpZWQgZm9yIDEgc2Vjb25kLCBzYXZlIHRoZSBtb2RlbC4gKi9cbiAgICAgICAgICBlZGl0X2FjdGlvbl9hcHBsaWVkIDo9IGZhbHNlO1xuICAgICAgICAgIHByaW50X2VuZGxpbmUoXCJTYXZpbmcuLi5cIik7XG4gICAgICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZS5TYXZlKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHNjcm9sbF90b19jYXJldC5jb250ZW50cykge1xuICAgICAgICAgIHNjcm9sbF90b19jYXJldCA6PSBmYWxzZTtcbiAgICAgICAgICBKc1V0aWwuc2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlZGVkKCk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG4gIH07XG59O1xuXG5zd2l0Y2ggKEpzVXRpbC5GcmFnbWVudC5nZXRfY3VycmVudCgpKSB7XG58IFNvbWUoXCJkZWJ1Z1wiKSA9PiBEZWJ1Z01vZGUuZ28oKVxufCBfID0+XG4gIEluY3JfZG9tLlN0YXJ0X2FwcC5zdGFydChcbiAgICAobW9kdWxlIEFwcCksXG4gICAgfmRlYnVnPWZhbHNlLFxuICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZD1cImNvbnRhaW5lclwiLFxuICAgIH5pbml0aWFsX21vZGVsPU1vZGVsLmxvYWQoTW9kZWwuYmxhbmspLFxuICApXG59O1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0=